From dabf80de6d8caf0565d950ecf6057091c0df2565 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Sep 2021 13:33:27 +0200 Subject: [PATCH 001/138] Bump syn from 1.0.75 to 1.0.76 (#3790) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.75 to 1.0.76. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.75...1.0.76) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/overseer/all-subsystems-gen/Cargo.toml | 2 +- node/overseer/overseer-gen/proc-macro/Cargo.toml | 2 +- xcm/procedural/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2ec0aa33dd6..a5a66e03c538 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10228,9 +10228,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.75" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f58f7e8eaa0009c5fec437aabf511bd9933e4b2d7407bd05273c01a8906ea7" +checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84" dependencies = [ "proc-macro2", "quote", diff --git a/node/overseer/all-subsystems-gen/Cargo.toml b/node/overseer/all-subsystems-gen/Cargo.toml index 44efb36a56c1..e33377db3df8 100644 --- a/node/overseer/all-subsystems-gen/Cargo.toml +++ b/node/overseer/all-subsystems-gen/Cargo.toml @@ -9,7 +9,7 @@ description = "Small proc macro to create mocking level iface type helpers" proc-macro = true [dependencies] -syn = { version = "1.0.75", features = ["full", "extra-traits"] } +syn = { version = "1.0.76", features = ["full", "extra-traits"] } quote = "1.0.9" proc-macro2 = "1.0.24" diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 89a876ce11a0..2940499c011a 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -12,7 +12,7 @@ targets = ["x86_64-unknown-linux-gnu"] proc-macro = true [dependencies] -syn = { version = "1.0.75", features = ["full", "extra-traits"] } +syn = { version = "1.0.76", features = ["full", "extra-traits"] } quote = "1.0.9" proc-macro2 = "1.0.26" proc-macro-crate = "1.0.0" diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index 5c52b5b14f8c..0f4b929076f3 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.75" +syn = "1.0.76" From 1876963f254f31f8cd2d7b8d5fb26cd38b7836ab Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko <85877331+sergejparity@users.noreply.github.com> Date: Tue, 7 Sep 2021 14:33:51 +0300 Subject: [PATCH 002/138] Fix buildah issue 3500 (#3805) --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07f8fc5a558d..19c97a874da2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -281,7 +281,7 @@ build-rustdoc: - buildah push --format=v2s2 "$IMAGE_NAME:$VERSION" - buildah push --format=v2s2 "$IMAGE_NAME:$EXTRATAG" after_script: - - buildah logout "$IMAGE_NAME" + - buildah logout --all publish-polkadot-image: stage: build @@ -336,7 +336,7 @@ publish-adder-collator-image: - job: build-adder-collator artifacts: true after_script: - - buildah logout "$IMAGE_NAME" + - buildah logout --all # pass artifacts to the simnet-tests job - echo "COLLATOR_IMAGE_NAME=${IMAGE_NAME}" > ./artifacts/collator.env - echo "COLLATOR_IMAGE_TAG=$(cat ./artifacts/EXTRATAG)" >> ./artifacts/collator.env From e8f89b304438fb709ef6d974875135f8218b4feb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Tue, 7 Sep 2021 15:07:37 +0200 Subject: [PATCH 003/138] Ensure that `para_head` hash matches the actual head (#3808) * Ensure that `para_head` hash matches the actual head This ensures that the `para_head` hash in the `CandidateDescriptor` matches the actual `head` in the candidate commitments. * Enable the code for `no_std` * Formatting --- parachain/src/primitives.rs | 1 - runtime/parachains/src/inclusion.rs | 46 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/parachain/src/primitives.rs b/parachain/src/primitives.rs index d8677e7bb759..c6920a6a9558 100644 --- a/parachain/src/primitives.rs +++ b/parachain/src/primitives.rs @@ -45,7 +45,6 @@ pub use polkadot_core_primitives::BlockNumber as RelayChainBlockNumber; #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Default, Hash, MallocSizeOf))] pub struct HeadData(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec); -#[cfg(feature = "std")] impl HeadData { /// Returns the hash of this head data. pub fn hash(&self) -> Hash { diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs index 5c43c2308696..4d92e90df734 100644 --- a/runtime/parachains/src/inclusion.rs +++ b/runtime/parachains/src/inclusion.rs @@ -194,6 +194,9 @@ pub mod pallet { InvalidOutboundHrmp, /// The validation code hash of the candidate is not valid. InvalidValidationCodeHash, + /// The `para_head` hash in the candidate descriptor doesn't match the hash of the actual para head in the + /// commitments. + ParaHeadMismatch, } /// The latest bitfield for each validator, referred to by their index in the validator set. @@ -465,6 +468,12 @@ impl Pallet { Error::::InvalidValidationCodeHash, ); + ensure!( + candidate.descriptor().para_head == + candidate.candidate.commitments.head_data.hash(), + Error::::ParaHeadMismatch, + ); + if let Err(err) = check_cx.check_validation_outputs( para_id, &candidate.candidate.commitments.head_data, @@ -1169,6 +1178,7 @@ mod tests { struct TestCandidateBuilder { para_id: ParaId, head_data: HeadData, + para_head_hash: Option, pov_hash: Hash, relay_parent: Hash, persisted_validation_data_hash: Hash, @@ -1186,6 +1196,7 @@ mod tests { relay_parent: self.relay_parent, persisted_validation_data_hash: self.persisted_validation_data_hash, validation_code_hash: self.validation_code.hash(), + para_head: self.para_head_hash.unwrap_or_else(|| self.head_data.hash()), ..Default::default() }, commitments: CandidateCommitments { @@ -2214,6 +2225,41 @@ mod tests { Err(Error::::InvalidValidationCodeHash.into()), ); } + + // Para head hash in descriptor doesn't match head data + { + let mut candidate = TestCandidateBuilder { + para_id: chain_a, + relay_parent: System::parent_hash(), + pov_hash: Hash::repeat_byte(1), + persisted_validation_data_hash: make_vdata_hash(chain_a).unwrap(), + hrmp_watermark: RELAY_PARENT_NUM, + para_head_hash: Some(Hash::random()), + ..Default::default() + } + .build(); + + collator_sign_candidate(Sr25519Keyring::One, &mut candidate); + + let backed = block_on(back_candidate( + candidate, + &validators, + group_validators(GroupIndex::from(0)).unwrap().as_ref(), + &keystore, + &signing_context, + BackingKind::Threshold, + )); + + assert_eq!( + ParaInclusion::process_candidates( + Default::default(), + vec![backed], + vec![chain_a_assignment.clone()], + &group_validators, + ), + Err(Error::::ParaHeadMismatch.into()), + ); + } }); } From be11414c677a1b505849025bc15a8fffaba598e1 Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Tue, 7 Sep 2021 21:17:53 +0800 Subject: [PATCH 004/138] Companion for substrate#9080 (#3263) * runtime(kusama/polkadot): migrations for membership storage prefix Signed-off-by: koushiro * Fix Signed-off-by: koushiro * make correct custom migration * some fix * Update Signed-off-by: koushiro * Fix format Signed-off-by: koushiro * import traits * update Substrate Co-authored-by: thiolliere Co-authored-by: parity-processbot <> --- Cargo.lock | 307 ++++++++++++++++++------------------ runtime/kusama/src/lib.rs | 47 +++++- runtime/polkadot/src/lib.rs | 44 +++++- 3 files changed, 241 insertions(+), 157 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5a66e03c538..bd2073ac8b34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "sp-api", @@ -4530,7 +4530,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4582,7 +4582,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4731,7 +4731,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4746,7 +4746,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4786,7 +4786,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4822,7 +4822,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4837,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4856,7 +4856,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4872,13 +4872,14 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "sp-core", "sp-io", "sp-runtime", "sp-std", @@ -4887,7 +4888,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4904,7 +4905,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -4920,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4937,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -4951,7 +4952,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -4964,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -4980,7 +4981,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5002,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5016,7 +5017,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -5029,7 +5030,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5044,7 +5045,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -5064,7 +5065,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5080,7 +5081,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -5093,7 +5094,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5115,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5126,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "sp-arithmetic", @@ -5135,7 +5136,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -5148,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5165,7 +5166,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5180,7 +5181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-support", "frame-system", @@ -5196,7 +5197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5213,7 +5214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5224,7 +5225,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5240,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -5255,7 +5256,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-benchmarking", "frame-support", @@ -7645,7 +7646,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7914,7 +7915,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "sp-core", @@ -7925,7 +7926,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "derive_more", @@ -7952,7 +7953,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7975,7 +7976,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7991,7 +7992,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8007,7 +8008,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8018,7 +8019,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "chrono", "fdlimit", @@ -8056,7 +8057,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "fnv", "futures 0.3.17", @@ -8084,7 +8085,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "hash-db", "kvdb", @@ -8109,7 +8110,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "futures 0.3.17", @@ -8133,7 +8134,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "derive_more", @@ -8176,7 +8177,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "derive_more", "futures 0.3.17", @@ -8200,7 +8201,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8213,7 +8214,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "assert_matches", "async-trait", @@ -8247,7 +8248,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "futures 0.3.17", @@ -8273,7 +8274,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "sc-client-api", "sp-authorship", @@ -8284,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8310,7 +8311,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "derive_more", "parity-scale-codec", @@ -8327,7 +8328,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "parity-scale-codec", @@ -8343,7 +8344,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8362,7 +8363,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "derive_more", @@ -8399,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "derive_more", "finality-grandpa", @@ -8423,7 +8424,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8440,7 +8441,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "derive_more", @@ -8455,7 +8456,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "hash-db", "parity-scale-codec", @@ -8473,7 +8474,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-std", "async-trait", @@ -8524,7 +8525,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8540,7 +8541,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "bytes 1.0.1", "fnv", @@ -8567,7 +8568,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "libp2p", @@ -8580,7 +8581,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8589,7 +8590,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "hash-db", @@ -8620,7 +8621,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8645,7 +8646,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8661,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "directories", @@ -8725,7 +8726,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "parity-scale-codec", @@ -8739,7 +8740,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8761,7 +8762,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "chrono", "futures 0.3.17", @@ -8779,7 +8780,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8808,7 +8809,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8819,7 +8820,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "intervalier", @@ -8846,7 +8847,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "derive_more", "futures 0.3.17", @@ -8860,7 +8861,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9291,7 +9292,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "hash-db", "log", @@ -9308,7 +9309,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9320,7 +9321,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "serde", @@ -9332,7 +9333,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "integer-sqrt", "num-traits", @@ -9346,7 +9347,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sp-api", @@ -9358,7 +9359,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "parity-scale-codec", @@ -9370,7 +9371,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sp-api", @@ -9382,7 +9383,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "log", @@ -9400,7 +9401,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "futures 0.3.17", @@ -9419,7 +9420,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "merlin", @@ -9441,7 +9442,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9451,7 +9452,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9463,7 +9464,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "base58", "blake2-rfc", @@ -9507,7 +9508,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9516,7 +9517,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro2", "quote", @@ -9526,7 +9527,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "environmental", "parity-scale-codec", @@ -9537,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "finality-grandpa", "log", @@ -9554,7 +9555,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9568,7 +9569,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "hash-db", @@ -9593,7 +9594,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "lazy_static", "sp-core", @@ -9604,7 +9605,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "derive_more", @@ -9621,7 +9622,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "ruzstd", "zstd", @@ -9630,7 +9631,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "serde", @@ -9643,7 +9644,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9654,7 +9655,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "sp-api", "sp-core", @@ -9664,7 +9665,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "backtrace", ] @@ -9672,7 +9673,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "rustc-hash", "serde", @@ -9682,7 +9683,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "either", "hash256-std-hasher", @@ -9703,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9720,7 +9721,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9732,7 +9733,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "serde", "serde_json", @@ -9741,7 +9742,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sp-api", @@ -9754,7 +9755,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9764,7 +9765,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "hash-db", "log", @@ -9787,12 +9788,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9805,7 +9806,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "sp-core", @@ -9818,7 +9819,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9834,7 +9835,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "erased-serde", "log", @@ -9852,7 +9853,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "sp-api", "sp-runtime", @@ -9861,7 +9862,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "log", @@ -9876,7 +9877,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "hash-db", "memory-db", @@ -9890,7 +9891,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9905,7 +9906,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9916,7 +9917,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10110,7 +10111,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "platforms", ] @@ -10118,7 +10119,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10140,7 +10141,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-std", "derive_more", @@ -10154,7 +10155,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "async-trait", "futures 0.3.17", @@ -10181,7 +10182,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10191,7 +10192,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10202,7 +10203,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10355,7 +10356,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "frame-system", "futures 0.3.17", @@ -10762,7 +10763,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#d73c37ecc16f4895c5f6ed5126d72af8cf87d9b3" +source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" dependencies = [ "log", "parity-scale-codec", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 134fe259d165..23a45a675cd5 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -49,7 +49,10 @@ use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, parameter_types, - traits::{Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing}, + traits::{ + Contains, Everything, InstanceFilter, KeyOwnerProofSystem, LockIdentifier, Nothing, + OnRuntimeUpgrade, + }, weights::Weight, PalletId, RuntimeDebug, }; @@ -1501,11 +1504,51 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (), + TechnicalMembershipStoragePrefixMigration, >; /// The payload being signed in the transactions. pub type SignedPayload = generic::SignedPayload; +const TECHNICAL_MEMBERSHIP_OLD_PREFIX: &str = "Instance1Membership"; +/// Migrate from `Instance1Membership` to the new pallet prefix `TechnicalMembership` +pub struct TechnicalMembershipStoragePrefixMigration; + +impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("TechnicalMembership is part of runtime, so it has a name; qed"); + pallet_membership::migrations::v4::migrate::( + TECHNICAL_MEMBERSHIP_OLD_PREFIX, + name, + ) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("TechnicalMembership is part of runtime, so it has a name; qed"); + pallet_membership::migrations::v4::pre_migrate::( + TECHNICAL_MEMBERSHIP_OLD_PREFIX, + name, + ); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("TechnicalMembership is part of runtime, so it has a name; qed"); + pallet_membership::migrations::v4::post_migrate::( + TECHNICAL_MEMBERSHIP_OLD_PREFIX, + name, + ); + Ok(()) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index fc87c911d535..659ab412650d 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -31,7 +31,7 @@ use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, parameter_types, - traits::{Contains, KeyOwnerProofSystem, LockIdentifier}, + traits::{Contains, KeyOwnerProofSystem, LockIdentifier, OnRuntimeUpgrade}, weights::Weight, PalletId, RuntimeDebug, }; @@ -1130,11 +1130,51 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (), + TechnicalMembershipStoragePrefixMigration, >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +const TECHNICAL_MEMBERSHIP_OLD_PREFIX: &str = "Instance1Membership"; +/// Migrate from `Instance1Membership` to the new pallet prefix `TechnicalMembership` +pub struct TechnicalMembershipStoragePrefixMigration; + +impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("TechnialMembership is part of runtime, so it has a name; qed"); + pallet_membership::migrations::v4::migrate::( + TECHNICAL_MEMBERSHIP_OLD_PREFIX, + name, + ) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("TechnicalMembership is part of runtime, so it has a name; qed"); + pallet_membership::migrations::v4::pre_migrate::( + TECHNICAL_MEMBERSHIP_OLD_PREFIX, + name, + ); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("TechnicalMembership is part of runtime, so it has a name; qed"); + pallet_membership::migrations::v4::post_migrate::( + TECHNICAL_MEMBERSHIP_OLD_PREFIX, + name, + ); + Ok(()) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { From fb6c9b391082325d37d84cad1b651eff5323e91a Mon Sep 17 00:00:00 2001 From: Falco Hirschenberger Date: Tue, 7 Sep 2021 16:14:10 +0200 Subject: [PATCH 005/138] Store the database in a role specific subdirectory (#2923) * Store the database in a role specific subdirectory companion PR for https://github.com/paritytech/substrate/issues/6880 * fix test * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 306 ++++++++++++++++++------------------- tests/purge_chain_works.rs | 6 +- 2 files changed, 156 insertions(+), 156 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd2073ac8b34..84cacfc292ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "sp-api", @@ -4530,7 +4530,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4582,7 +4582,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4731,7 +4731,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4746,7 +4746,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4786,7 +4786,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4822,7 +4822,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4837,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4856,7 +4856,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4872,7 +4872,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4888,7 +4888,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4905,7 +4905,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -4921,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -4952,7 +4952,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -4981,7 +4981,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5017,7 +5017,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -5030,7 +5030,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5045,7 +5045,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -5065,7 +5065,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5081,7 +5081,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -5094,7 +5094,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "sp-arithmetic", @@ -5136,7 +5136,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -5149,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5166,7 +5166,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5181,7 +5181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-support", "frame-system", @@ -5197,7 +5197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5214,7 +5214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5225,7 +5225,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5241,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -5256,7 +5256,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-benchmarking", "frame-support", @@ -7646,7 +7646,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7915,7 +7915,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "sp-core", @@ -7926,7 +7926,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "derive_more", @@ -7953,7 +7953,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7976,7 +7976,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7992,7 +7992,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8008,7 +8008,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8019,7 +8019,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "chrono", "fdlimit", @@ -8057,7 +8057,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "fnv", "futures 0.3.17", @@ -8085,7 +8085,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "hash-db", "kvdb", @@ -8110,7 +8110,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "futures 0.3.17", @@ -8134,7 +8134,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "derive_more", @@ -8177,7 +8177,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "derive_more", "futures 0.3.17", @@ -8201,7 +8201,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8214,7 +8214,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "assert_matches", "async-trait", @@ -8248,7 +8248,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "futures 0.3.17", @@ -8274,7 +8274,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "sc-client-api", "sp-authorship", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8311,7 +8311,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "derive_more", "parity-scale-codec", @@ -8328,7 +8328,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "parity-scale-codec", @@ -8344,7 +8344,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8363,7 +8363,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "derive_more", @@ -8400,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "derive_more", "finality-grandpa", @@ -8424,7 +8424,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8441,7 +8441,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "derive_more", @@ -8456,7 +8456,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "hash-db", "parity-scale-codec", @@ -8474,7 +8474,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-std", "async-trait", @@ -8525,7 +8525,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8541,7 +8541,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "bytes 1.0.1", "fnv", @@ -8568,7 +8568,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "libp2p", @@ -8581,7 +8581,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8590,7 +8590,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "hash-db", @@ -8621,7 +8621,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8646,7 +8646,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8662,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "directories", @@ -8726,7 +8726,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "parity-scale-codec", @@ -8740,7 +8740,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8762,7 +8762,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "chrono", "futures 0.3.17", @@ -8780,7 +8780,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8809,7 +8809,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8820,7 +8820,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "intervalier", @@ -8847,7 +8847,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "derive_more", "futures 0.3.17", @@ -8861,7 +8861,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9292,7 +9292,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "hash-db", "log", @@ -9309,7 +9309,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9321,7 +9321,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "serde", @@ -9333,7 +9333,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "integer-sqrt", "num-traits", @@ -9347,7 +9347,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sp-api", @@ -9359,7 +9359,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "parity-scale-codec", @@ -9371,7 +9371,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sp-api", @@ -9383,7 +9383,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "log", @@ -9401,7 +9401,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "futures 0.3.17", @@ -9420,7 +9420,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "merlin", @@ -9442,7 +9442,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9452,7 +9452,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9464,7 +9464,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "base58", "blake2-rfc", @@ -9508,7 +9508,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9517,7 +9517,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro2", "quote", @@ -9527,7 +9527,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "environmental", "parity-scale-codec", @@ -9538,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "finality-grandpa", "log", @@ -9555,7 +9555,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9569,7 +9569,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "hash-db", @@ -9594,7 +9594,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "lazy_static", "sp-core", @@ -9605,7 +9605,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "derive_more", @@ -9622,7 +9622,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "ruzstd", "zstd", @@ -9631,7 +9631,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "serde", @@ -9644,7 +9644,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9655,7 +9655,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "sp-api", "sp-core", @@ -9665,7 +9665,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "backtrace", ] @@ -9673,7 +9673,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "rustc-hash", "serde", @@ -9683,7 +9683,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "either", "hash256-std-hasher", @@ -9704,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9721,7 +9721,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9733,7 +9733,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "serde", "serde_json", @@ -9742,7 +9742,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sp-api", @@ -9755,7 +9755,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9765,7 +9765,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "hash-db", "log", @@ -9788,12 +9788,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9806,7 +9806,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "sp-core", @@ -9819,7 +9819,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9835,7 +9835,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "erased-serde", "log", @@ -9853,7 +9853,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "sp-api", "sp-runtime", @@ -9862,7 +9862,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "log", @@ -9877,7 +9877,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "hash-db", "memory-db", @@ -9891,7 +9891,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9906,7 +9906,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9917,7 +9917,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10111,7 +10111,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "platforms", ] @@ -10119,7 +10119,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10141,7 +10141,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-std", "derive_more", @@ -10155,7 +10155,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "async-trait", "futures 0.3.17", @@ -10182,7 +10182,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10192,7 +10192,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10203,7 +10203,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10356,7 +10356,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "frame-system", "futures 0.3.17", @@ -10763,7 +10763,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#cd21e62f164466d46008f68759a87d30284846c1" +source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" dependencies = [ "log", "parity-scale-codec", diff --git a/tests/purge_chain_works.rs b/tests/purge_chain_works.rs index d410ff1207c9..2e874827621f 100644 --- a/tests/purge_chain_works.rs +++ b/tests/purge_chain_works.rs @@ -56,7 +56,7 @@ fn purge_chain_works() { .unwrap(); assert!(status.success()); - // Make sure that the `dev` chain folder exists, but the `db` is deleted. - assert!(tmpdir.path().join("chains/dev/").exists()); - assert!(!tmpdir.path().join("chains/dev/db").exists()); + // Make sure that the chain folder exists, but `db/full` is deleted. + assert!(tmpdir.path().join("chains/dev").exists()); + assert!(!tmpdir.path().join("chains/dev/db/full").exists()); } From ba68ec70ab2a61760c4d1a900c7b55ee1e763f1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Sep 2021 16:17:22 +0200 Subject: [PATCH 006/138] Bump slotmap from 1.0.5 to 1.0.6 (#3809) Bumps [slotmap](https://github.com/orlp/slotmap) from 1.0.5 to 1.0.6. - [Release notes](https://github.com/orlp/slotmap/releases) - [Changelog](https://github.com/orlp/slotmap/blob/master/RELEASES.md) - [Commits](https://github.com/orlp/slotmap/compare/v1.0.5...v1.0.6) --- updated-dependencies: - dependency-name: slotmap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 84cacfc292ee..c9ec80a274b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9199,9 +9199,9 @@ dependencies = [ [[package]] name = "slotmap" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a952280edbecfb1d4bd3cf2dbc309dc6ab523e53487c438ae21a6df09fe84bc4" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" dependencies = [ "version_check", ] From a543821d8072552caf3e0707bd29ebeebf754f12 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 7 Sep 2021 19:42:05 -0400 Subject: [PATCH 007/138] Introduce XCM Weight Traits (#3802) * introduce xcm weight traits * patch some low hanging fruit * add weightinfobound * use checked math rather than saturating * Update xcm/xcm-builder/src/weight.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Revert "Update xcm/xcm-builder/src/weight.rs" This reverts commit 6331b874f3dccf7f01a051ca6d4ee4d14a23a82d. Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> --- Cargo.lock | 1 + xcm/src/lib.rs | 7 ++- xcm/src/v2/mod.rs | 56 +++++++++++++++++-- xcm/src/v2/traits.rs | 62 ++++++++++++++++++++- xcm/xcm-builder/Cargo.toml | 2 + xcm/xcm-builder/src/currency_adapter.rs | 1 + xcm/xcm-builder/src/weight.rs | 72 +++++++++++++++++++++---- xcm/xcm-executor/src/lib.rs | 6 +-- 8 files changed, 189 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c9ec80a274b3..77157f651c8b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11577,6 +11577,7 @@ version = "0.9.9" dependencies = [ "frame-support", "frame-system", + "log", "pallet-balances", "pallet-transaction-payment", "pallet-xcm", diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs index cfa5735559aa..ff5f0cd4eba2 100644 --- a/xcm/src/lib.rs +++ b/xcm/src/lib.rs @@ -422,7 +422,7 @@ impl WrapVersion for AlwaysV1 { } } -/// `WrapVersion` implementation which attempts to always convert the XCM to version 1 before wrapping it. +/// `WrapVersion` implementation which attempts to always convert the XCM to version 2 before wrapping it. pub struct AlwaysV2; impl WrapVersion for AlwaysV2 { fn wrap_version( @@ -474,3 +474,8 @@ pub mod opaque { /// The basic `VersionedXcm` type which just uses the `Vec` as an encoded call. pub type VersionedXcm = super::VersionedXcm<()>; } + +// A simple trait to get the weight of some object. +pub trait GetWeight { + fn weight(&self) -> latest::Weight; +} diff --git a/xcm/src/v2/mod.rs b/xcm/src/v2/mod.rs index 533aef468701..943582ceca8b 100644 --- a/xcm/src/v2/mod.rs +++ b/xcm/src/v2/mod.rs @@ -17,7 +17,7 @@ //! Version 1 of the Cross-Consensus Message format data structures. use super::v1::{Order as OldOrder, Response as OldResponse, Xcm as OldXcm}; -use crate::DoubleEncoded; +use crate::{DoubleEncoded, GetWeight}; use alloc::{vec, vec::Vec}; use core::{ convert::{TryFrom, TryInto}, @@ -29,7 +29,9 @@ use parity_scale_codec::{self, Decode, Encode}; mod traits; -pub use traits::{Error, ExecuteXcm, Outcome, Result, SendError, SendResult, SendXcm}; +pub use traits::{ + Error, ExecuteXcm, Outcome, Result, SendError, SendResult, SendXcm, Weight, XcmWeightInfo, +}; // These parts of XCM v1 have been unchanged in XCM v2, and are re-imported here. pub use super::v1::{ Ancestor, AncestorThen, AssetId, AssetInstance, BodyId, BodyPart, Fungibility, @@ -127,7 +129,7 @@ pub mod prelude { WeightLimit::{self, *}, WildFungibility::{self, Fungible as WildFungible, NonFungible as WildNonFungible}, WildMultiAsset::{self, *}, - VERSION as XCM_VERSION, + XcmWeightInfo, VERSION as XCM_VERSION, }; } pub use super::{Instruction, Xcm}; @@ -670,6 +672,54 @@ impl Instruction { } } +// TODO: Automate Generation +impl> GetWeight for Instruction { + fn weight(&self) -> Weight { + use Instruction::*; + match self { + WithdrawAsset(assets) => W::withdraw_asset(assets), + ReserveAssetDeposited(assets) => W::reserve_asset_deposited(assets), + ReceiveTeleportedAsset(assets) => W::receive_teleported_asset(assets), + QueryResponse { query_id, response, max_weight } => + W::query_response(query_id, response, max_weight), + TransferAsset { assets, beneficiary } => W::transfer_asset(assets, beneficiary), + TransferReserveAsset { assets, dest, xcm } => + W::transfer_reserve_asset(&assets, dest, xcm), + Transact { origin_type, require_weight_at_most, call } => + W::transact(origin_type, require_weight_at_most, call), + HrmpNewChannelOpenRequest { sender, max_message_size, max_capacity } => + W::hrmp_new_channel_open_request(sender, max_message_size, max_capacity), + HrmpChannelAccepted { recipient } => W::hrmp_channel_accepted(recipient), + HrmpChannelClosing { initiator, sender, recipient } => + W::hrmp_channel_closing(initiator, sender, recipient), + ClearOrigin => W::clear_origin(), + DescendOrigin(who) => W::descend_origin(who), + ReportError { query_id, dest, max_response_weight } => + W::report_error(query_id, dest, max_response_weight), + DepositAsset { assets, max_assets, beneficiary } => + W::deposit_asset(assets, max_assets, beneficiary), + DepositReserveAsset { assets, max_assets, dest, xcm } => + W::deposit_reserve_asset(assets, max_assets, dest, xcm), + ExchangeAsset { give, receive } => W::exchange_asset(give, receive), + InitiateReserveWithdraw { assets, reserve, xcm } => + W::initiate_reserve_withdraw(assets, reserve, xcm), + InitiateTeleport { assets, dest, xcm } => W::initiate_teleport(assets, dest, xcm), + QueryHolding { query_id, dest, assets, max_response_weight } => + W::query_holding(query_id, dest, assets, max_response_weight), + BuyExecution { fees, weight_limit } => W::buy_execution(fees, weight_limit), + RefundSurplus => W::refund_surplus(), + SetErrorHandler(xcm) => W::set_error_handler(xcm), + SetAppendix(xcm) => W::set_appendix(xcm), + ClearError => W::clear_error(), + ClaimAsset { assets, ticket } => W::claim_asset(assets, ticket), + Trap(code) => W::trap(code), + SubscribeVersion { query_id, max_response_weight } => + W::subscribe_version(query_id, max_response_weight), + UnsubscribeVersion => W::unsubscribe_version(), + } + } +} + pub mod opaque { /// The basic concrete type of `Xcm`, which doesn't make any assumptions about the /// format of a call other than it is pre-encoded. diff --git a/xcm/src/v2/traits.rs b/xcm/src/v2/traits.rs index 0349a7de193f..e020fd046e82 100644 --- a/xcm/src/v2/traits.rs +++ b/xcm/src/v2/traits.rs @@ -19,7 +19,7 @@ use core::result; use parity_scale_codec::{Decode, Encode}; -use super::{MultiLocation, Xcm}; +use super::*; #[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug)] pub enum Error { @@ -313,3 +313,63 @@ impl SendXcm for Tuple { Err(SendError::CannotReachDestination(destination, message)) } } + +/// The info needed to weight an XCM. +// TODO: Automate Generation +pub trait XcmWeightInfo { + fn withdraw_asset(assets: &MultiAssets) -> Weight; + fn reserve_asset_deposited(assets: &MultiAssets) -> Weight; + fn receive_teleported_asset(assets: &MultiAssets) -> Weight; + fn query_response(query_id: &u64, response: &Response, max_weight: &u64) -> Weight; + fn transfer_asset(assets: &MultiAssets, beneficiary: &MultiLocation) -> Weight; + fn transfer_reserve_asset(assets: &MultiAssets, dest: &MultiLocation, xcm: &Xcm<()>) -> Weight; + fn transact( + origin_type: &OriginKind, + require_weight_at_most: &u64, + call: &DoubleEncoded, + ) -> Weight; + fn hrmp_new_channel_open_request( + sender: &u32, + max_message_size: &u32, + max_capacity: &u32, + ) -> Weight; + fn hrmp_channel_accepted(recipient: &u32) -> Weight; + fn hrmp_channel_closing(initiator: &u32, sender: &u32, recipient: &u32) -> Weight; + fn clear_origin() -> Weight; + fn descend_origin(who: &InteriorMultiLocation) -> Weight; + fn report_error(query_id: &QueryId, dest: &MultiLocation, max_response_weight: &u64) -> Weight; + fn relayed_from(who: &Junctions, message: &alloc::boxed::Box>) -> Weight; + fn deposit_asset( + assets: &MultiAssetFilter, + max_assets: &u32, + beneficiary: &MultiLocation, + ) -> Weight; + fn deposit_reserve_asset( + assets: &MultiAssetFilter, + max_assets: &u32, + dest: &MultiLocation, + xcm: &Xcm<()>, + ) -> Weight; + fn exchange_asset(give: &MultiAssetFilter, receive: &MultiAssets) -> Weight; + fn initiate_reserve_withdraw( + assets: &MultiAssetFilter, + reserve: &MultiLocation, + xcm: &Xcm<()>, + ) -> Weight; + fn initiate_teleport(assets: &MultiAssetFilter, dest: &MultiLocation, xcm: &Xcm<()>) -> Weight; + fn query_holding( + query_id: &u64, + dest: &MultiLocation, + assets: &MultiAssetFilter, + max_response_weight: &u64, + ) -> Weight; + fn buy_execution(fees: &MultiAsset, weight_limit: &WeightLimit) -> Weight; + fn refund_surplus() -> Weight; + fn set_error_handler(xcm: &Xcm) -> Weight; + fn set_appendix(xcm: &Xcm) -> Weight; + fn clear_error() -> Weight; + fn claim_asset(assets: &MultiAssets, ticket: &MultiLocation) -> Weight; + fn trap(code: &u64) -> Weight; + fn subscribe_version(query_id: &QueryId, max_response_weight: &u64) -> Weight; + fn unsubscribe_version() -> Weight; +} diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index 5bef78b7d7bd..d7119b34d531 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -16,6 +16,7 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-system = { 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 } +log = { version = "0.4.0", default-features = false } # Polkadot dependencies polkadot-parachain = { path = "../../parachain", default-features = false } @@ -29,6 +30,7 @@ polkadot-runtime-parachains = { path = "../../runtime/parachains" } default = ["std"] runtime-benchmarks = [] std = [ + "log/std", "parity-scale-codec/std", "xcm/std", "xcm-executor/std", diff --git a/xcm/xcm-builder/src/currency_adapter.rs b/xcm/xcm-builder/src/currency_adapter.rs index b4af6fcb4ad6..164720e24a9a 100644 --- a/xcm/xcm-builder/src/currency_adapter.rs +++ b/xcm/xcm-builder/src/currency_adapter.rs @@ -142,6 +142,7 @@ impl< } fn deposit_asset(what: &MultiAsset, who: &MultiLocation) -> Result { + log::trace!("xcm::currency_adapter deposit_asset {:?} {:?}", what, who); // Check we handle this asset. let amount: u128 = Matcher::matches_fungible(&what).ok_or(Error::AssetNotFound)?.saturated_into(); diff --git a/xcm/xcm-builder/src/weight.rs b/xcm/xcm-builder/src/weight.rs index c438ae4edbd4..3ec684f85852 100644 --- a/xcm/xcm-builder/src/weight.rs +++ b/xcm/xcm-builder/src/weight.rs @@ -35,29 +35,81 @@ impl, C: Decode + GetDispatchInfo, M: Get> WeightBounds let mut instructions_left = M::get(); Self::weight_with_limit(message, &mut instructions_left) } - fn instr_weight(message: &Instruction) -> Result { - Self::instr_weight_with_limit(message, &mut u32::max_value()) + fn instr_weight(instruction: &Instruction) -> Result { + Self::instr_weight_with_limit(instruction, &mut u32::max_value()) } } impl, C: Decode + GetDispatchInfo, M> FixedWeightBounds { fn weight_with_limit(message: &Xcm, instrs_limit: &mut u32) -> Result { - let mut r = 0; + let mut r: Weight = 0; *instrs_limit = instrs_limit.checked_sub(message.0.len() as u32).ok_or(())?; for m in message.0.iter() { - r += Self::instr_weight_with_limit(m, instrs_limit)?; + r = r.checked_add(Self::instr_weight_with_limit(m, instrs_limit)?).ok_or(())?; } Ok(r) } fn instr_weight_with_limit( - message: &Instruction, + instruction: &Instruction, instrs_limit: &mut u32, ) -> Result { - Ok(T::get().saturating_add(match message { - Transact { require_weight_at_most, .. } => *require_weight_at_most, - SetErrorHandler(xcm) | SetAppendix(xcm) => Self::weight_with_limit(xcm, instrs_limit)?, - _ => 0, - })) + T::get() + .checked_add(match instruction { + Transact { require_weight_at_most, .. } => *require_weight_at_most, + SetErrorHandler(xcm) | SetAppendix(xcm) => + Self::weight_with_limit(xcm, instrs_limit)?, + _ => 0, + }) + .ok_or(()) + } +} + +struct WeightInfoBounds(PhantomData<(W, C, M)>); +impl WeightBounds for WeightInfoBounds +where + W: XcmWeightInfo, + C: Decode + GetDispatchInfo, + M: Get, + Instruction: xcm::GetWeight, +{ + fn weight(message: &mut Xcm) -> Result { + let mut instructions_left = M::get(); + Self::weight_with_limit(message, &mut instructions_left) + } + fn instr_weight(instruction: &Instruction) -> Result { + Self::instr_weight_with_limit(instruction, &mut u32::max_value()) + } +} + +impl WeightInfoBounds +where + W: XcmWeightInfo, + C: Decode + GetDispatchInfo, + M: Get, + Instruction: xcm::GetWeight, +{ + fn weight_with_limit(message: &Xcm, instrs_limit: &mut u32) -> Result { + let mut r: Weight = 0; + *instrs_limit = instrs_limit.checked_sub(message.0.len() as u32).ok_or(())?; + for m in message.0.iter() { + r = r.checked_add(Self::instr_weight_with_limit(m, instrs_limit)?).ok_or(())?; + } + Ok(r) + } + fn instr_weight_with_limit( + instruction: &Instruction, + instrs_limit: &mut u32, + ) -> Result { + use xcm::GetWeight; + instruction + .weight() + .checked_add(match instruction { + Transact { require_weight_at_most, .. } => *require_weight_at_most, + SetErrorHandler(xcm) | SetAppendix(xcm) => + Self::weight_with_limit(xcm, instrs_limit)?, + _ => 0, + }) + .ok_or(()) } } diff --git a/xcm/xcm-executor/src/lib.rs b/xcm/xcm-executor/src/lib.rs index 94a936c9eb0e..6e4611b14eac 100644 --- a/xcm/xcm-executor/src/lib.rs +++ b/xcm/xcm-executor/src/lib.rs @@ -130,9 +130,9 @@ impl ExecuteXcm for XcmExecutor { #[derive(Debug)] pub struct ExecutorError { - index: u32, - xcm_error: XcmError, - weight: u64, + pub index: u32, + pub xcm_error: XcmError, + pub weight: u64, } #[cfg(feature = "runtime-benchmarks")] From 49128c88153e5dc79f4d3bec65f9b644fe38483b Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 7 Sep 2021 20:21:22 -0400 Subject: [PATCH 008/138] Update Slot Range Expect Proof (#3707) * update slot range expect proof * update to same acronym --- runtime/common/src/auctions.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/common/src/auctions.rs b/runtime/common/src/auctions.rs index 3e9a5e0b5cb6..caa609e1aff5 100644 --- a/runtime/common/src/auctions.rs +++ b/runtime/common/src/auctions.rs @@ -605,7 +605,7 @@ impl Pallet { .map(|(_, _, amount)| *amount * (range.len() as u32).into()) }; for i in 0..SlotRange::LEASE_PERIODS_PER_SLOT { - let r = SlotRange::new_bounded(0, 0, i as u32).expect("`i < 4`; qed"); + let r = SlotRange::new_bounded(0, 0, i as u32).expect("`i < LPPS`; qed"); if let Some(bid) = best_bid(r) { best_winners_ending_at[i] = (vec![r], bid); } From 045a930afb2d408de2572fb851813969a90b34c3 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 8 Sep 2021 06:59:44 -0500 Subject: [PATCH 009/138] participate in disputes only if haven't voted already (#3796) * participate in disputes only if haven't voted already * Add tests for dispute participation on local import. * Fixes. * cargo fmt * Get rid of redundant dependency. Co-authored-by: Robert Klotzner --- node/core/dispute-coordinator/src/real/mod.rs | 39 ++- .../dispute-coordinator/src/real/tests.rs | 305 +++++++++++------- 2 files changed, 225 insertions(+), 119 deletions(-) diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index 53f71697798c..791a2fdcbf95 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -48,7 +48,7 @@ use polkadot_node_subsystem_util::rolling_session_window::{ }; use polkadot_primitives::v1::{ BlockNumber, CandidateHash, CandidateReceipt, DisputeStatement, Hash, SessionIndex, - SessionInfo, ValidatorIndex, ValidatorPair, ValidatorSignature, + SessionInfo, ValidatorId, ValidatorIndex, ValidatorPair, ValidatorSignature, }; use futures::{channel::oneshot, prelude::*}; @@ -745,8 +745,15 @@ async fn handle_import_statements( if status != prev_status { // This branch is only hit when the candidate is freshly disputed - // status was previously `None`, and now is not. - if prev_status.is_none() { - // No matter what, if the dispute is new, we participate. + if prev_status.is_none() && { + let controlled_indices = + find_controlled_validator_indices(&state.keystore, &validators); + let voted_indices = votes.voted_indices(); + + !controlled_indices.iter().all(|val_index| voted_indices.contains(&val_index)) + } { + // If the dispute is new, we participate UNLESS all our controlled + // keys have already participated. // // We also block the coordinator while awaiting our determination // of whether the vote is available. @@ -792,6 +799,22 @@ async fn handle_import_statements( Ok(()) } +fn find_controlled_validator_indices( + keystore: &LocalKeystore, + validators: &[ValidatorId], +) -> HashSet { + let mut controlled = HashSet::new(); + for (index, validator) in validators.iter().enumerate() { + if keystore.key_pair::(validator).ok().flatten().is_none() { + continue + } + + controlled.insert(ValidatorIndex(index as _)); + } + + controlled +} + async fn issue_local_statement( ctx: &mut impl SubsystemContext, overlay_db: &mut OverlayedBackend<'_, impl Backend>, @@ -833,14 +856,12 @@ async fn issue_local_statement( let mut statements = Vec::new(); let voted_indices: HashSet<_> = voted_indices.into_iter().collect(); - for (index, validator) in validators.iter().enumerate() { - let index = ValidatorIndex(index as _); + let controlled_indices = find_controlled_validator_indices(&state.keystore, &validators[..]); + + for index in controlled_indices { if voted_indices.contains(&index) { continue } - if state.keystore.key_pair::(validator).ok().flatten().is_none() { - continue - } let keystore = state.keystore.clone() as Arc<_>; let res = SignedDisputeStatement::sign_explicit( @@ -848,7 +869,7 @@ async fn issue_local_statement( valid, candidate_hash, session, - validator.clone(), + validators[index.0 as usize].clone(), ) .await; diff --git a/node/core/dispute-coordinator/src/real/tests.rs b/node/core/dispute-coordinator/src/real/tests.rs index 60d7ade2fd79..4445f62f1133 100644 --- a/node/core/dispute-coordinator/src/real/tests.rs +++ b/node/core/dispute-coordinator/src/real/tests.rs @@ -107,6 +107,7 @@ impl Default for TestState { Sr25519Keyring::Dave, Sr25519Keyring::Eve, Sr25519Keyring::One, + Sr25519Keyring::Ferdie, ]; let validator_public = validators.iter().map(|k| ValidatorId::from(k.public())).collect(); @@ -114,7 +115,7 @@ impl Default for TestState { let validator_groups = vec![ vec![ValidatorIndex(0), ValidatorIndex(1)], vec![ValidatorIndex(2), ValidatorIndex(3)], - vec![ValidatorIndex(4), ValidatorIndex(5)], + vec![ValidatorIndex(4), ValidatorIndex(5), ValidatorIndex(6)], ]; let master_keystore = make_keystore(&validators).into(); @@ -316,7 +317,7 @@ fn conflicting_votes_lead_to_dispute_participation() { test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(3, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -332,7 +333,7 @@ fn conflicting_votes_lead_to_dispute_participation() { candidate_receipt: candidate_receipt.clone(), session, statements: vec![ - (valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(3)), (invalid_vote, ValidatorIndex(1)), ], pending_confirmation, @@ -434,7 +435,7 @@ fn positive_votes_dont_trigger_participation() { test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let valid_vote_2 = test_state.issue_statement_with_index(1, candidate_hash, session, true).await; @@ -446,7 +447,7 @@ fn positive_votes_dont_trigger_participation() { candidate_hash, candidate_receipt: candidate_receipt.clone(), session, - statements: vec![(valid_vote, ValidatorIndex(0))], + statements: vec![(valid_vote, ValidatorIndex(2))], pending_confirmation, }, }) @@ -539,7 +540,7 @@ fn wrong_validator_index_is_ignored() { test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -553,7 +554,7 @@ fn wrong_validator_index_is_ignored() { session, statements: vec![ (valid_vote, ValidatorIndex(1)), - (invalid_vote, ValidatorIndex(0)), + (invalid_vote, ValidatorIndex(2)), ], pending_confirmation, }, @@ -609,7 +610,7 @@ fn finality_votes_ignore_disputed_candidates() { test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -622,7 +623,7 @@ fn finality_votes_ignore_disputed_candidates() { candidate_receipt: candidate_receipt.clone(), session, statements: vec![ - (valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(2)), (invalid_vote, ValidatorIndex(1)), ], pending_confirmation, @@ -715,7 +716,7 @@ fn supermajority_valid_dispute_may_be_finalized() { polkadot_primitives::v1::supermajority_threshold(test_state.validators.len()); let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -728,7 +729,7 @@ fn supermajority_valid_dispute_may_be_finalized() { candidate_receipt: candidate_receipt.clone(), session, statements: vec![ - (valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(2)), (invalid_vote, ValidatorIndex(1)), ], pending_confirmation, @@ -755,7 +756,7 @@ fn supermajority_valid_dispute_may_be_finalized() { ); let mut statements = Vec::new(); - for i in (0..supermajority_threshold - 1).map(|i| i + 2) { + for i in (0..supermajority_threshold - 1).map(|i| i + 3) { let vote = test_state.issue_statement_with_index(i, candidate_hash, session, true).await; @@ -848,7 +849,7 @@ fn concluded_supermajority_for_non_active_after_time() { polkadot_primitives::v1::supermajority_threshold(test_state.validators.len()); let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -861,7 +862,7 @@ fn concluded_supermajority_for_non_active_after_time() { candidate_receipt: candidate_receipt.clone(), session, statements: vec![ - (valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(2)), (invalid_vote, ValidatorIndex(1)), ], pending_confirmation, @@ -882,7 +883,7 @@ fn concluded_supermajority_for_non_active_after_time() { ); let mut statements = Vec::new(); - for i in (0..supermajority_threshold - 1).map(|i| i + 2) { + for i in (0..supermajority_threshold - 1).map(|i| i + 3) { let vote = test_state.issue_statement_with_index(i, candidate_hash, session, true).await; @@ -951,7 +952,7 @@ fn concluded_supermajority_against_non_active_after_time() { polkadot_primitives::v1::supermajority_threshold(test_state.validators.len()); let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -964,7 +965,7 @@ fn concluded_supermajority_against_non_active_after_time() { candidate_receipt: candidate_receipt.clone(), session, statements: vec![ - (valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(2)), (invalid_vote, ValidatorIndex(1)), ], pending_confirmation, @@ -985,7 +986,7 @@ fn concluded_supermajority_against_non_active_after_time() { ); let mut statements = Vec::new(); - for i in (0..supermajority_threshold - 1).map(|i| i + 2) { + for i in (0..supermajority_threshold - 1).map(|i| i + 3) { let vote = test_state.issue_statement_with_index(i, candidate_hash, session, false).await; @@ -1051,7 +1052,7 @@ fn fresh_dispute_ignored_if_unavailable() { test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; let valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + test_state.issue_statement_with_index(2, candidate_hash, session, true).await; let invalid_vote = test_state.issue_statement_with_index(1, candidate_hash, session, false).await; @@ -1064,7 +1065,7 @@ fn fresh_dispute_ignored_if_unavailable() { candidate_receipt: candidate_receipt.clone(), session, statements: vec![ - (valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(2)), (invalid_vote, ValidatorIndex(1)), ], pending_confirmation, @@ -1298,18 +1299,6 @@ fn resume_dispute_with_local_statement() { }) .await; - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeParticipation( - DisputeParticipationMessage::Participate { - report_availability, - .. - } - ) => { - report_availability.send(true).unwrap(); - } - ); - assert_eq!(confirmation_rx.await, Ok(ImportStatementsResult::ValidImport)); { @@ -1330,7 +1319,7 @@ fn resume_dispute_with_local_statement() { test_state }) }) - // Alice should send a DisputeParticiationMessage::Participate on restart since she has no + // Alice should not send a DisputeParticiationMessage::Participate on restart since she has a // local statement for the active dispute. .resume(|test_state, mut virtual_overseer| { Box::pin(async move { @@ -1384,18 +1373,6 @@ fn resume_dispute_without_local_statement_or_local_key() { }) .await; - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeParticipation( - DisputeParticipationMessage::Participate { - report_availability, - .. - } - ) => { - report_availability.send(true).unwrap(); - } - ); - assert_eq!(confirmation_rx.await, Ok(ImportStatementsResult::ValidImport)); { @@ -1416,8 +1393,8 @@ fn resume_dispute_without_local_statement_or_local_key() { test_state }) }) - // Alice should send a DisputeParticiationMessage::Participate on restart since she has no - // local statement for the active dispute. + // Two should not send a DisputeParticiationMessage::Participate on restart since she is no + // validator in that dispute. .resume(|test_state, mut virtual_overseer| { Box::pin(async move { test_state.handle_resume_sync(&mut virtual_overseer, session).await; @@ -1437,89 +1414,197 @@ fn resume_dispute_without_local_statement_or_local_key() { fn resume_dispute_with_local_statement_without_local_key() { let session = 1; - let mut test_state = TestState::default(); - test_state.subsystem_keystore = make_keystore(&[Sr25519Keyring::Two]).into(); - test_state - .resume(|mut test_state, mut virtual_overseer| { - Box::pin(async move { - test_state.handle_resume_sync(&mut virtual_overseer, session).await; + let test_state = TestState::default(); + let mut test_state = test_state.resume(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + test_state.handle_resume_sync(&mut virtual_overseer, session).await; - let candidate_receipt = CandidateReceipt::default(); - let candidate_hash = candidate_receipt.hash(); + let candidate_receipt = CandidateReceipt::default(); + let candidate_hash = candidate_receipt.hash(); - test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; + test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; - let local_valid_vote = - test_state.issue_statement_with_index(0, candidate_hash, session, true).await; + let local_valid_vote = + test_state.issue_statement_with_index(0, candidate_hash, session, true).await; - let valid_vote = - test_state.issue_statement_with_index(1, candidate_hash, session, true).await; + let valid_vote = + test_state.issue_statement_with_index(1, candidate_hash, session, true).await; - let invalid_vote = - test_state.issue_statement_with_index(2, candidate_hash, session, false).await; + let invalid_vote = + test_state.issue_statement_with_index(2, candidate_hash, session, false).await; + + let (pending_confirmation, confirmation_rx) = oneshot::channel(); + virtual_overseer + .send(FromOverseer::Communication { + msg: DisputeCoordinatorMessage::ImportStatements { + candidate_hash, + candidate_receipt: candidate_receipt.clone(), + session, + statements: vec![ + (local_valid_vote, ValidatorIndex(0)), + (valid_vote, ValidatorIndex(1)), + (invalid_vote, ValidatorIndex(2)), + ], + pending_confirmation, + }, + }) + .await; + + assert_eq!(confirmation_rx.await, Ok(ImportStatementsResult::ValidImport)); + + { + let (tx, rx) = oneshot::channel(); - let (pending_confirmation, confirmation_rx) = oneshot::channel(); virtual_overseer .send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ImportStatements { - candidate_hash, - candidate_receipt: candidate_receipt.clone(), - session, - statements: vec![ - (local_valid_vote, ValidatorIndex(0)), - (valid_vote, ValidatorIndex(1)), - (invalid_vote, ValidatorIndex(2)), - ], - pending_confirmation, - }, + msg: DisputeCoordinatorMessage::ActiveDisputes(tx), }) .await; - assert_matches!( - virtual_overseer.recv().await, - AllMessages::DisputeParticipation( - DisputeParticipationMessage::Participate { - report_availability, - .. - } - ) => { - report_availability.send(true).unwrap(); - } - ); + assert_eq!(rx.await.unwrap().len(), 1); + } - assert_eq!(confirmation_rx.await, Ok(ImportStatementsResult::ValidImport)); + virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; + assert!(virtual_overseer.try_recv().await.is_none()); - { - let (tx, rx) = oneshot::channel(); + test_state + }) + }); + // No keys: + test_state.subsystem_keystore = make_keystore(&[Sr25519Keyring::Two]).into(); + // Two should not send a DisputeParticiationMessage::Participate on restart since we gave + // her a non existing key. + test_state.resume(|test_state, mut virtual_overseer| { + Box::pin(async move { + test_state.handle_resume_sync(&mut virtual_overseer, session).await; - virtual_overseer - .send(FromOverseer::Communication { - msg: DisputeCoordinatorMessage::ActiveDisputes(tx), - }) - .await; + // Assert that subsystem is not sending Participation messages because we don't + // have a key. + assert!(virtual_overseer.recv().timeout(TEST_TIMEOUT).await.is_none()); - assert_eq!(rx.await.unwrap().len(), 1); + virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; + assert!(virtual_overseer.try_recv().await.is_none()); + + test_state + }) + }); +} + +#[test] +fn issue_valid_local_statement_does_cause_distribution_but_not_duplicate_participation() { + issue_local_statement_does_cause_distribution_but_not_duplicate_participation(true); +} + +#[test] +fn issue_invalid_local_statement_does_cause_distribution_but_not_duplicate_participation() { + issue_local_statement_does_cause_distribution_but_not_duplicate_participation(false); +} + +fn issue_local_statement_does_cause_distribution_but_not_duplicate_participation(validity: bool) { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session = 1; + + test_state.handle_resume_sync(&mut virtual_overseer, session).await; + + let candidate_receipt = CandidateReceipt::default(); + let candidate_hash = candidate_receipt.hash(); + + test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; + + let other_vote = test_state + .issue_statement_with_index(1, candidate_hash, session, !validity) + .await; + + let (pending_confirmation, confirmation_rx) = oneshot::channel(); + virtual_overseer + .send(FromOverseer::Communication { + msg: DisputeCoordinatorMessage::ImportStatements { + candidate_hash, + candidate_receipt: candidate_receipt.clone(), + session, + statements: vec![(other_vote, ValidatorIndex(1))], + pending_confirmation, + }, + }) + .await; + + assert_eq!(confirmation_rx.await, Ok(ImportStatementsResult::ValidImport)); + + // Initiate dispute locally: + virtual_overseer + .send(FromOverseer::Communication { + msg: DisputeCoordinatorMessage::IssueLocalStatement( + session, + candidate_hash, + candidate_receipt.clone(), + validity, + ), + }) + .await; + + // Dispute distribution should get notified now: + assert_matches!( + virtual_overseer.recv().await, + AllMessages::DisputeDistribution( + DisputeDistributionMessage::SendDispute(msg) + ) => { + assert_eq!(msg.session_index(), session); + assert_eq!(msg.candidate_receipt(), &candidate_receipt); } + ); - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - assert!(virtual_overseer.try_recv().await.is_none()); + // Make sure we don't get a `DisputeParticiationMessage`. + assert!(virtual_overseer.recv().timeout(TEST_TIMEOUT).await.is_none()); - test_state - }) + virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; + assert!(virtual_overseer.try_recv().await.is_none()); + + test_state }) - // Alice should send a DisputeParticiationMessage::Participate on restart since she has no - // local statement for the active dispute. - .resume(|test_state, mut virtual_overseer| { - Box::pin(async move { - test_state.handle_resume_sync(&mut virtual_overseer, session).await; + }); +} - // Assert that subsystem is not sending Participation messages because we issued a local statement - assert!(virtual_overseer.recv().timeout(TEST_TIMEOUT).await.is_none()); +#[test] +fn negative_issue_local_statement_only_triggers_import() { + test_harness(|mut test_state, mut virtual_overseer| { + Box::pin(async move { + let session = 1; - virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; - assert!(virtual_overseer.try_recv().await.is_none()); + test_state.handle_resume_sync(&mut virtual_overseer, session).await; - test_state - }) - }); + let candidate_receipt = CandidateReceipt::default(); + let candidate_hash = candidate_receipt.hash(); + + test_state.activate_leaf_at_session(&mut virtual_overseer, session, 1).await; + + virtual_overseer + .send(FromOverseer::Communication { + msg: DisputeCoordinatorMessage::IssueLocalStatement( + session, + candidate_hash, + candidate_receipt.clone(), + false, + ), + }) + .await; + + let backend = DbBackend::new(test_state.db.clone(), test_state.config.column_config()); + + let votes = backend.load_candidate_votes(session, &candidate_hash).unwrap().unwrap(); + assert_eq!(votes.invalid.len(), 1); + assert_eq!(votes.valid.len(), 0); + + let disputes = backend.load_recent_disputes().unwrap(); + assert_eq!(disputes, None); + + // Assert that subsystem is not sending Participation messages: + assert!(virtual_overseer.recv().timeout(TEST_TIMEOUT).await.is_none()); + + virtual_overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; + assert!(virtual_overseer.try_recv().await.is_none()); + + test_state + }) + }); } From 04735b52f87bb589bd892c6f872429477330705b Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Wed, 8 Sep 2021 14:56:45 +0200 Subject: [PATCH 010/138] Fix flaky availability-recovery test (#3812) * Increase timeout in tests. Fixes #3798 * Fix timeout. --- node/network/availability-recovery/src/lib.rs | 2 +- node/network/availability-recovery/src/tests.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/node/network/availability-recovery/src/lib.rs b/node/network/availability-recovery/src/lib.rs index bd747c463fe1..0b973e03bd72 100644 --- a/node/network/availability-recovery/src/lib.rs +++ b/node/network/availability-recovery/src/lib.rs @@ -93,7 +93,7 @@ const COST_INVALID_REQUEST: Rep = Rep::CostMajor("Peer sent unparsable request") #[cfg(not(test))] const TIMEOUT_START_NEW_REQUESTS: Duration = CHUNK_REQUEST_TIMEOUT; #[cfg(test)] -const TIMEOUT_START_NEW_REQUESTS: Duration = Duration::from_millis(10); +const TIMEOUT_START_NEW_REQUESTS: Duration = Duration::from_millis(100); /// The Availability Recovery Subsystem. pub struct AvailabilityRecoverySubsystem { diff --git a/node/network/availability-recovery/src/tests.rs b/node/network/availability-recovery/src/tests.rs index e31a4f436043..a918b8c615d8 100644 --- a/node/network/availability-recovery/src/tests.rs +++ b/node/network/availability-recovery/src/tests.rs @@ -109,7 +109,7 @@ fn test_harness_chunks_only { From c0a3e56b5073a778f0bb09729dea6251ddf3805f Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Wed, 8 Sep 2021 19:57:26 +0200 Subject: [PATCH 011/138] Don't drop UMP queue items if weight exhausted (#3784) * Requeue UMP queue items if weight exhausted * Reduce complexity and remove Deque * Formatting * Formatting * Avoid needless storage writes * Test * Formatting * Docs and cleanup * fmt * Remove now irrelevant comment. * Simplify `take_processed` by using `mem::take` * Clean up & fmt: use `upward_message` directly. * Grumbles Co-authored-by: Shawn Tabrizi Co-authored-by: Sergei Shulepov --- runtime/parachains/src/mock.rs | 46 ++++- runtime/parachains/src/ump.rs | 348 +++++++++++---------------------- 2 files changed, 156 insertions(+), 238 deletions(-) diff --git a/runtime/parachains/src/mock.rs b/runtime/parachains/src/mock.rs index fc45eed0d1a5..88e241426d62 100644 --- a/runtime/parachains/src/mock.rs +++ b/runtime/parachains/src/mock.rs @@ -18,12 +18,15 @@ use crate::{ configuration, disputes, dmp, hrmp, inclusion, initializer, paras, paras_inherent, scheduler, - session_info, shared, ump, + session_info, shared, + ump::{self, MessageId, UmpSink}, + ParaId, }; -use frame_support::{parameter_types, traits::GenesisBuild}; +use frame_support::{parameter_types, traits::GenesisBuild, weights::Weight}; use frame_support_test::TestRandomness; +use parity_scale_codec::Decode; use primitives::v1::{ - AuthorityDiscoveryId, Balance, BlockNumber, Header, SessionIndex, ValidatorIndex, + AuthorityDiscoveryId, Balance, BlockNumber, Header, SessionIndex, UpwardMessage, ValidatorIndex, }; use sp_core::H256; use sp_io::TestExternalities; @@ -128,7 +131,7 @@ parameter_types! { impl crate::ump::Config for Test { type Event = Event; - type UmpSink = crate::ump::mock_sink::MockUmpSink; + type UmpSink = TestUmpSink; type FirstMessageFactorPercent = FirstMessageFactorPercent; } @@ -232,6 +235,41 @@ pub fn availability_rewards() -> HashMap { AVAILABILITY_REWARDS.with(|r| r.borrow().clone()) } +std::thread_local! { + static PROCESSED: RefCell> = RefCell::new(vec![]); +} + +/// Return which messages have been processed by `pocess_upward_message` and clear the buffer. +pub fn take_processed() -> Vec<(ParaId, UpwardMessage)> { + PROCESSED.with(|opt_hook| std::mem::take(&mut *opt_hook.borrow_mut())) +} + +/// An implementation of a UMP sink that just records which messages were processed. +/// +/// A message's weight is defined by the first 4 bytes of its data, which we decode into a +/// `u32`. +pub struct TestUmpSink; +impl UmpSink for TestUmpSink { + fn process_upward_message( + actual_origin: ParaId, + actual_msg: &[u8], + max_weight: Weight, + ) -> Result { + let weight = match u32::decode(&mut &actual_msg[..]) { + Ok(w) => w as Weight, + Err(_) => return Ok(0), // same as the real `UmpSink` + }; + if weight > max_weight { + let id = sp_io::hashing::blake2_256(actual_msg); + return Err((id, weight)) + } + PROCESSED.with(|opt_hook| { + opt_hook.borrow_mut().push((actual_origin, actual_msg.to_owned())); + }); + Ok(weight) + } +} + pub struct TestRewardValidators; impl inclusion::RewardValidators for TestRewardValidators { diff --git a/runtime/parachains/src/ump.rs b/runtime/parachains/src/ump.rs index 40f1a5a3acda..ae04d2d460df 100644 --- a/runtime/parachains/src/ump.rs +++ b/runtime/parachains/src/ump.rs @@ -21,11 +21,7 @@ use crate::{ use frame_support::pallet_prelude::*; use primitives::v1::{Id as ParaId, UpwardMessage}; use sp_std::{ - collections::{btree_map::BTreeMap, vec_deque::VecDeque}, - convert::TryFrom, - fmt, - marker::PhantomData, - prelude::*, + collections::btree_map::BTreeMap, convert::TryFrom, fmt, marker::PhantomData, prelude::*, }; use xcm::latest::Outcome; @@ -211,7 +207,7 @@ pub mod pallet { /// The messages are processed in FIFO order. #[pallet::storage] pub type RelayDispatchQueues = - StorageMap<_, Twox64Concat, ParaId, VecDeque, ValueQuery>; + StorageMap<_, Twox64Concat, ParaId, Vec, ValueQuery>; /// Size of the dispatch queues. Caches sizes of the queues in `RelayDispatchQueue`. /// @@ -407,23 +403,27 @@ impl Pallet { config.ump_service_total_weight - weight_used }; - // dequeue the next message from the queue of the dispatchee - let (upward_message, became_empty) = queue_cache.dequeue::(dispatchee); - if let Some(upward_message) = upward_message { - match T::UmpSink::process_upward_message( - dispatchee, - &upward_message[..], - max_weight, - ) { - Ok(used) => weight_used += used, + // attempt to process the next message from the queue of the dispatchee; if not beyond + // our remaining weight limit, then consume it. + let maybe_next = queue_cache.peek_front::(dispatchee); + let became_empty = if let Some(upward_message) = maybe_next { + match T::UmpSink::process_upward_message(dispatchee, upward_message, max_weight) { + Ok(used) => { + weight_used += used; + queue_cache.consume_front::(dispatchee) + }, Err((id, required)) => { - // we process messages in order and don't drop them if we run out of weight, so need to break - // here. + // we process messages in order and don't drop them if we run out of weight, + // so need to break here without calling `consume_front`. Self::deposit_event(Event::WeightExhausted(id, max_weight, required)); break }, } - } + } else { + // this should never happen, since the cursor should never point to an empty queue. + // it is resolved harmlessly here anyway. + true + }; if became_empty { // the queue is empty now - this para doesn't need attention anymore. @@ -442,8 +442,8 @@ impl Pallet { /// To avoid constant fetching, deserializing and serialization the queues are cached. /// -/// After an item dequeued from a queue for the first time, the queue is stored in this struct rather -/// than being serialized and persisted. +/// After an item dequeued from a queue for the first time, the queue is stored in this struct +/// rather than being serialized and persisted. /// /// This implementation works best when: /// @@ -461,9 +461,10 @@ impl Pallet { struct QueueCache(BTreeMap); struct QueueCacheEntry { - queue: VecDeque, - count: u32, + queue: Vec, total_size: u32, + consumed_count: usize, + consumed_size: usize, } impl QueueCache { @@ -471,26 +472,35 @@ impl QueueCache { Self(BTreeMap::new()) } - /// Dequeues one item from the upward message queue of the given para. + fn ensure_cached(&mut self, para: ParaId) -> &mut QueueCacheEntry { + self.0.entry(para).or_insert_with(|| { + let queue = RelayDispatchQueues::::get(¶); + let (_, total_size) = RelayDispatchQueueSize::::get(¶); + QueueCacheEntry { queue, total_size, consumed_count: 0, consumed_size: 0 } + }) + } + + /// Returns the message at the front of `para`'s queue, or `None` if the queue is empty. /// - /// Returns `(upward_message, became_empty)`, where + /// Does not mutate the queue. + fn peek_front(&mut self, para: ParaId) -> Option<&UpwardMessage> { + let entry = self.ensure_cached::(para); + entry.queue.get(entry.consumed_count) + } + + /// Attempts to remove one message from the front of `para`'s queue. If the queue is empty, then + /// does nothing. /// - /// - `upward_message` a dequeued message or `None` if the queue _was_ empty. - /// - `became_empty` is true if the queue _became_ empty. - fn dequeue(&mut self, para: ParaId) -> (Option, bool) { - let cache_entry = self.0.entry(para).or_insert_with(|| { - let queue = as Store>::RelayDispatchQueues::get(¶); - let (count, total_size) = as Store>::RelayDispatchQueueSize::get(¶); - QueueCacheEntry { queue, count, total_size } - }); - let upward_message = cache_entry.queue.pop_front(); - if let Some(ref msg) = upward_message { - cache_entry.count -= 1; - cache_entry.total_size -= msg.len() as u32; + /// Returns `true` iff there are no more messages in the queue after the removal attempt. + fn consume_front(&mut self, para: ParaId) -> bool { + let cache_entry = self.ensure_cached::(para); + let upward_message = cache_entry.queue.get(cache_entry.consumed_count); + if let Some(msg) = upward_message { + cache_entry.consumed_count += 1; + cache_entry.consumed_size += msg.len(); } - let became_empty = cache_entry.queue.is_empty(); - (upward_message, became_empty) + cache_entry.consumed_count >= cache_entry.queue.len() } /// Flushes the updated queues into the storage. @@ -498,14 +508,16 @@ impl QueueCache { // NOTE we use an explicit method here instead of Drop impl because it has unwanted semantics // within runtime. It is dangerous to use because of double-panics and flushing on a panic // is not necessary as well. - for (para, QueueCacheEntry { queue, count, total_size }) in self.0 { - if queue.is_empty() { + for (para, entry) in self.0 { + if entry.consumed_count >= entry.queue.len() { // remove the entries altogether. - as Store>::RelayDispatchQueues::remove(¶); - as Store>::RelayDispatchQueueSize::remove(¶); - } else { - as Store>::RelayDispatchQueues::insert(¶, queue); - as Store>::RelayDispatchQueueSize::insert(¶, (count, total_size)); + RelayDispatchQueues::::remove(¶); + RelayDispatchQueueSize::::remove(¶); + } else if entry.consumed_count > 0 { + RelayDispatchQueues::::insert(¶, &entry.queue[entry.consumed_count..]); + let count = (entry.queue.len() - entry.consumed_count) as u32; + let size = entry.total_size.saturating_sub(entry.consumed_size as u32); + RelayDispatchQueueSize::::insert(¶, (count, size)); } } } @@ -586,137 +598,10 @@ impl NeedsDispatchCursor { } #[cfg(test)] -pub(crate) mod mock_sink { - //! An implementation of a mock UMP sink that allows attaching a probe for mocking the weights - //! and checking the sent messages. - //! - //! A default behavior of the UMP sink is to ignore an incoming message and return 0 weight. - //! - //! A probe can be attached to the mock UMP sink. When attached, the mock sink would consult the - //! probe to check whether the received message was expected and what weight it should return. - //! - //! There are two rules on how to use a probe: - //! - //! 1. There can be only one active probe at a time. Creation of another probe while there is - //! already an active one leads to a panic. The probe is scoped to a thread where it was created. - //! - //! 2. All messages expected by the probe must be received by the time of dropping it. Unreceived - //! messages will lead to a panic while dropping a probe. - - use super::{MessageId, ParaId, UmpSink, UpwardMessage}; +pub(crate) mod tests { + use super::*; + use crate::mock::{new_test_ext, take_processed, Configuration, MockGenesisConfig, Ump}; use frame_support::weights::Weight; - use std::{cell::RefCell, collections::vec_deque::VecDeque}; - - #[derive(Debug)] - struct UmpExpectation { - expected_origin: ParaId, - expected_msg: UpwardMessage, - mock_weight: Weight, - } - - std::thread_local! { - // `Some` here indicates that there is an active probe. - static HOOK: RefCell>> = RefCell::new(None); - } - - pub struct MockUmpSink; - impl UmpSink for MockUmpSink { - fn process_upward_message( - actual_origin: ParaId, - actual_msg: &[u8], - _max_weight: Weight, - ) -> Result { - Ok(HOOK - .with(|opt_hook| { - opt_hook.borrow_mut().as_mut().map(|hook| { - let UmpExpectation { expected_origin, expected_msg, mock_weight } = - match hook.pop_front() { - Some(expectation) => expectation, - None => { - panic!( - "The probe is active but didn't expect the message:\n\n\t{:?}.", - actual_msg, - ); - }, - }; - assert_eq!(expected_origin, actual_origin); - assert_eq!(expected_msg, &actual_msg[..]); - mock_weight - }) - }) - .unwrap_or(0)) - } - } - - pub struct Probe { - _private: (), - } - - impl Probe { - pub fn new() -> Self { - HOOK.with(|opt_hook| { - let prev = opt_hook.borrow_mut().replace(VecDeque::default()); - - // that can trigger if there were two probes were created during one session which - // is may be a bit strict, but may save time figuring out what's wrong. - // if you land here and you do need the two probes in one session consider - // dropping the the existing probe explicitly. - assert!(prev.is_none()); - }); - Self { _private: () } - } - - /// Add an expected message. - /// - /// The enqueued messages are processed in FIFO order. - pub fn assert_msg( - &mut self, - expected_origin: ParaId, - expected_msg: UpwardMessage, - mock_weight: Weight, - ) { - HOOK.with(|opt_hook| { - opt_hook.borrow_mut().as_mut().unwrap().push_back(UmpExpectation { - expected_origin, - expected_msg, - mock_weight, - }) - }); - } - } - - impl Drop for Probe { - fn drop(&mut self) { - let _ = HOOK.try_with(|opt_hook| { - let prev = opt_hook.borrow_mut().take().expect( - "this probe was created and hasn't been yet destroyed; - the probe cannot be replaced; - there is only one probe at a time allowed; - thus it cannot be `None`; - qed", - ); - - if !prev.is_empty() { - // some messages are left unchecked. We should notify the developer about this. - // however, we do so only if the thread doesn't panic already. Otherwise, the - // developer would get a SIGILL or SIGABRT without a meaningful error message. - if !std::thread::panicking() { - panic!( - "the probe is dropped and not all expected messages arrived: {:?}", - prev - ); - } - } - }); - // an `Err` here signals here that the thread local was already destroyed. - } - } -} - -#[cfg(test)] -mod tests { - use super::{mock_sink::Probe, *}; - use crate::mock::{new_test_ext, Configuration, MockGenesisConfig, Ump}; use std::collections::HashSet; struct GenesisConfigBuilder { @@ -826,15 +711,12 @@ mod tests { #[test] fn dispatch_single_message() { let a = ParaId::from(228); - let msg = vec![1, 2, 3]; + let msg = 1000u32.encode(); new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { - let mut probe = Probe::new(); - - probe.assert_msg(a, msg.clone(), 0); - queue_upward_msg(a, msg); - + queue_upward_msg(a, msg.clone()); Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(a, msg)]); assert_storage_consistency_exhaustive(); }); @@ -846,11 +728,11 @@ mod tests { let c = ParaId::from(228); let q = ParaId::from(911); - let a_msg_1 = vec![1, 2, 3]; - let a_msg_2 = vec![3, 2, 1]; - let c_msg_1 = vec![4, 5, 6]; - let c_msg_2 = vec![9, 8, 7]; - let q_msg = b"we are Q".to_vec(); + let a_msg_1 = (200u32, "a_msg_1").encode(); + let a_msg_2 = (100u32, "a_msg_2").encode(); + let c_msg_1 = (300u32, "c_msg_1").encode(); + let c_msg_2 = (100u32, "c_msg_2").encode(); + let q_msg = (500u32, "q_msg").encode(); new_test_ext( GenesisConfigBuilder { ump_service_total_weight: 500, ..Default::default() }.build(), @@ -864,52 +746,60 @@ mod tests { assert_storage_consistency_exhaustive(); // we expect only two first messages to fit in the first iteration. - { - let mut probe = Probe::new(); - - probe.assert_msg(a, a_msg_1.clone(), 300); - probe.assert_msg(c, c_msg_1.clone(), 300); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); - - drop(probe); - } + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(a, a_msg_1), (c, c_msg_1)]); + assert_storage_consistency_exhaustive(); queue_upward_msg(c, c_msg_2.clone()); assert_storage_consistency_exhaustive(); // second iteration should process the second message. - { - let mut probe = Probe::new(); + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(q, q_msg)]); + assert_storage_consistency_exhaustive(); - probe.assert_msg(q, q_msg.clone(), 500); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); + // 3rd iteration. + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(a, a_msg_2), (c, c_msg_2)]); + assert_storage_consistency_exhaustive(); - drop(probe); - } + // finally, make sure that the queue is empty. + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![]); + assert_storage_consistency_exhaustive(); + }); + } - // 3rd iteration. - { - let mut probe = Probe::new(); + #[test] + fn dispatch_keeps_message_after_weight_exhausted() { + let a = ParaId::from(128); - probe.assert_msg(a, a_msg_2.clone(), 100); - probe.assert_msg(c, c_msg_2.clone(), 100); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); + let a_msg_1 = (300u32, "a_msg_1").encode(); + let a_msg_2 = (300u32, "a_msg_2").encode(); - drop(probe); - } + new_test_ext( + GenesisConfigBuilder { ump_service_total_weight: 500, ..Default::default() }.build(), + ) + .execute_with(|| { + queue_upward_msg(a, a_msg_1.clone()); + queue_upward_msg(a, a_msg_2.clone()); - // finally, make sure that the queue is empty. - { - let probe = Probe::new(); + assert_storage_consistency_exhaustive(); - Ump::process_pending_upward_messages(); - assert_storage_consistency_exhaustive(); + // we expect only one message to fit in the first iteration. + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(a, a_msg_1)]); + assert_storage_consistency_exhaustive(); - drop(probe); - } + // second iteration should process the remaining message. + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(a, a_msg_2)]); + assert_storage_consistency_exhaustive(); + + // finally, make sure that the queue is empty. + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![]); + assert_storage_consistency_exhaustive(); }); } @@ -918,9 +808,9 @@ mod tests { let a = ParaId::from(1991); let b = ParaId::from(1999); - let a_msg_1 = vec![1, 2, 3]; - let a_msg_2 = vec![3, 2, 1]; - let b_msg_1 = vec![4, 5, 6]; + let a_msg_1 = (300u32, "a_msg_1").encode(); + let a_msg_2 = (300u32, "a_msg_2").encode(); + let b_msg_1 = (300u32, "b_msg_1").encode(); new_test_ext( GenesisConfigBuilder { ump_service_total_weight: 900, ..Default::default() }.build(), @@ -935,18 +825,8 @@ mod tests { queue_upward_msg(a, a_msg_1.clone()); queue_upward_msg(a, a_msg_2.clone()); queue_upward_msg(b, b_msg_1.clone()); - - { - let mut probe = Probe::new(); - - probe.assert_msg(a, a_msg_1.clone(), 300); - probe.assert_msg(b, b_msg_1.clone(), 300); - probe.assert_msg(a, a_msg_2.clone(), 300); - - Ump::process_pending_upward_messages(); - - drop(probe); - } + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(a, a_msg_1), (b, b_msg_1), (a, a_msg_2)]); }); } From eb12f83d664c10c94f335f827906dbc887eb3df3 Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko <85877331+sergejparity@users.noreply.github.com> Date: Wed, 8 Sep 2021 21:39:09 +0300 Subject: [PATCH 012/138] Change pipeline to use Vault (#3722) * Change pipeline to use Vault --- .gitlab-ci.yml | 63 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 19c97a874da2..97dc29a58557 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,6 +28,9 @@ variables: CI_SERVER_NAME: "GitLab CI" DOCKER_OS: "debian:stretch" ARCH: "x86_64" + VAULT_SERVER_URL: "https://vault.parity-mgmt-vault.parity.io" + VAULT_AUTH_PATH: "gitlab-parity-io-jwt" + VAULT_AUTH_ROLE: "cicd_gitlab_parity_${CI_PROJECT_NAME}" default: cache: {} @@ -84,6 +87,55 @@ default: when: never - if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs +#### Vault secrets +.vault-secrets: &vault-secrets + secrets: + AWS_ACCESS_KEY_ID: + vault: cicd/gitlab/$CI_PROJECT_PATH/AWS_ACCESS_KEY_ID@kv + file: false + AWS_SECRET_ACCESS_KEY: + vault: cicd/gitlab/$CI_PROJECT_PATH/AWS_SECRET_ACCESS_KEY@kv + file: false + DOCKER_HUB_USER: + vault: cicd/gitlab/parity/DOCKER_HUB_USER@kv + file: false + DOCKER_HUB_PASS: + vault: cicd/gitlab/parity/DOCKER_HUB_PASS@kv + file: false + GITHUB_PR_TOKEN: + vault: cicd/gitlab/parity/GITHUB_PR_TOKEN@kv + file: false + GITHUB_USER: + vault: cicd/gitlab/$CI_PROJECT_PATH/GITHUB_USER@kv + file: false + GITHUB_RELEASE_TOKEN: + vault: cicd/gitlab/$CI_PROJECT_PATH/GITHUB_RELEASE_TOKEN@kv + file: false + GITHUB_TOKEN: + vault: cicd/gitlab/$CI_PROJECT_PATH/GITHUB_TOKEN@kv + 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 + PARITYPR_USER: + vault: cicd/gitlab/$CI_PROJECT_PATH/PARITYPR_USER@kv + file: false + PARITYPR_PASS: + vault: cicd/gitlab/$CI_PROJECT_PATH/PARITYPR_PASS@kv + file: false + PIPELINE_TOKEN: + vault: cicd/gitlab/$CI_PROJECT_PATH/PIPELINE_TOKEN@kv + file: false + REL_MAN_ROOM_ID: + vault: cicd/gitlab/$CI_PROJECT_PATH/REL_MAN_ROOM_ID@kv + file: false + SSH_PRIVATE_KEY: + vault: cicd/gitlab/$CI_PROJECT_PATH/SSH_PRIVATE_KEY@kv + file: false + #### stage: test check-runtime: @@ -91,6 +143,7 @@ check-runtime: image: paritytech/tools:latest <<: *kubernetes-env <<: *rules-pr-only + <<: *vault-secrets variables: GITLAB_API: "https://gitlab.parity.io/api/v4" GITHUB_API_PROJECT: "parity%2Finfrastructure%2Fgithub-api" @@ -120,6 +173,7 @@ test-deterministic-wasm: <<: *rules-test <<: *docker-env <<: *compiler-info + <<: *vault-secrets script: - ./scripts/gitlab/test_deterministic_wasm.sh @@ -128,6 +182,7 @@ test-build-linux-stable: <<: *docker-env <<: *compiler-info <<: *collect-artifacts + <<: *vault-secrets variables: RUST_TOOLCHAIN: stable # Enable debug assertions since we are running optimized builds for testing @@ -162,6 +217,7 @@ check-runtime-benchmarks: <<: *rules-test <<: *docker-env <<: *compiler-info + <<: *vault-secrets script: # Check that the node will compile with `runtime-benchmarks` feature flag. - ./scripts/gitlab/check_runtime_benchmarks.sh @@ -207,6 +263,7 @@ check-transaction-versions: stage: build <<: *rules-test <<: *docker-env + <<: *vault-secrets needs: - job: test-build-linux-stable artifacts: true @@ -251,6 +308,7 @@ build-rustdoc: .build-push-image: &build-push-image <<: *kubernetes-env + <<: *vault-secrets image: quay.io/buildah/stable variables: &image-variables GIT_STRATEGY: none @@ -303,8 +361,8 @@ publish-polkadot-image: variables: <<: *image-variables IMAGE_NAME: docker.io/parity/rococo - DOCKER_USER: ${Docker_Hub_User_Parity} - DOCKER_PASS: ${Docker_Hub_Pass_Parity} + DOCKER_USER: ${DOCKER_HUB_USER} + DOCKER_PASS: ${DOCKER_HUB_PASS} needs: - job: test-build-linux-stable artifacts: true @@ -380,6 +438,7 @@ publish-s3-release: &publish-s3 - job: test-build-linux-stable artifacts: true <<: *kubernetes-env + <<: *vault-secrets image: paritytech/awscli:latest variables: GIT_STRATEGY: none From 47f801e81ffa53b3876ab945c7ea72a8ac1ac43b Mon Sep 17 00:00:00 2001 From: Sergejs Kostjucenko <85877331+sergejparity@users.noreply.github.com> Date: Thu, 9 Sep 2021 10:48:20 +0300 Subject: [PATCH 013/138] Add vault secrets to puplish-rustdoc job (#3816) --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 97dc29a58557..530e00c1c227 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -474,6 +474,7 @@ publish-s3-release: &publish-s3 publish-rustdoc: stage: publish <<: *kubernetes-env + <<: *vault-secrets image: paritytech/tools:latest variables: GIT_DEPTH: 100 From f77f09aecff815682a079eaf25303ed1c790b1bf Mon Sep 17 00:00:00 2001 From: Chevdor Date: Thu, 9 Sep 2021 10:08:51 +0200 Subject: [PATCH 014/138] Add words to the dictionnary (#3819) fix #3814 --- bridges/.config/lingua.dic | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bridges/.config/lingua.dic b/bridges/.config/lingua.dic index 8db035c2c28a..bfdb7a08e015 100644 --- a/bridges/.config/lingua.dic +++ b/bridges/.config/lingua.dic @@ -106,8 +106,8 @@ pov-block/MS PoA PoV/MS precommit -promethius -promethius' +prometheus +proxying prune_end prune_depth provisioner/MS From ea8b360fd9b69f70304a1f3cf390458dd4f5dc41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 Sep 2021 09:56:00 +0000 Subject: [PATCH 015/138] Bump tokio from 1.10.1 to 1.11.0 (#3821) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.10.1 to 1.11.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.10.1...tokio-1.11.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/test/service/Cargo.toml | 2 +- parachain/test-parachains/adder/collator/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 77157f651c8b..062122df085c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10518,9 +10518,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92036be488bb6594459f2e03b60e42df6f937fe6ca5c5ffdcb539c6b84dc40f5" +checksum = "b4efe6fc2395938c8155973d7be49fe8d03a843726e285e100a8a383cc0154ce" dependencies = [ "autocfg", "bytes 1.0.1", diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index 5dcbacc0f1e9..7eced62424cc 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -59,4 +59,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.10", features = ["macros"] } +tokio = { version = "1.11", features = ["macros"] } diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index 98a680daebae..b193fb608575 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -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.10", features = ["macros"] } +tokio = { version = "1.11", features = ["macros"] } diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 296b07a7b5ff..440fc5b890c8 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } -tokio = { version = "1.10", features = ["macros"] } +tokio = { version = "1.11", features = ["macros"] } log = "0.4.11" env_logger = "0.9.0" structopt = "0.3.23" From 4c8dda20a05671c85b9253a57ce30e6544251ff3 Mon Sep 17 00:00:00 2001 From: Sergei Shulepov Date: Thu, 9 Sep 2021 14:06:13 +0200 Subject: [PATCH 016/138] Do not expire HRMP open channel requests (#3543) * Do not expire HRMP open channel requests * Fix the build and update the docs * Implement canceling requests and do not remove them automatically * Fix a borked merge * Fix fmt * Please spellchecker * Apply suggestions from code review Co-authored-by: Amar Singh * Use `mutate_exists` for maintaining request counts * Apply `rustfmt` * Move newly introduced entrypoint to end to preserve ordering Co-authored-by: Amar Singh --- node/service/src/chain_spec.rs | 2 +- parachain/src/primitives.rs | 10 +- .../implementers-guide/src/runtime/hrmp.md | 26 +- .../implementers-guide/src/types/runtime.md | 6 +- runtime/parachains/src/configuration.rs | 25 +- runtime/parachains/src/hrmp.rs | 278 +++++++++++++----- scripts/gitlab/lingua.dic | 3 + 7 files changed, 241 insertions(+), 109 deletions(-) diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index c0e225666e47..e2ed37334aaa 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -174,7 +174,7 @@ fn default_parachains_host_configuration( ump_service_total_weight: 4 * 1_000_000_000, max_upward_message_size: 1024 * 1024, max_upward_message_num_per_candidate: 5, - hrmp_open_request_ttl: 5, + _hrmp_open_request_ttl: 5, hrmp_sender_deposit: 0, hrmp_recipient_deposit: 0, hrmp_channel_max_capacity: 8, diff --git a/parachain/src/primitives.rs b/parachain/src/primitives.rs index c6920a6a9558..900c75c6cd34 100644 --- a/parachain/src/primitives.rs +++ b/parachain/src/primitives.rs @@ -328,7 +328,8 @@ impl AccountIdConversion for Id { /// unidirectional, meaning that `(A, B)` and `(B, A)` refer to different channels. The convention is /// that we use the first item tuple for the sender and the second for the recipient. Only one channel /// is allowed between two participants in one direction, i.e. there cannot be 2 different channels -/// identified by `(A, B)`. +/// identified by `(A, B)`. A channel with the same para id in sender and recipient is invalid. That +/// is, however, not enforced. #[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, RuntimeDebug)] #[cfg_attr(feature = "std", derive(Hash))] pub struct HrmpChannelId { @@ -338,6 +339,13 @@ pub struct HrmpChannelId { pub recipient: Id, } +impl HrmpChannelId { + /// Returns true if the given id corresponds to either the sender or the recipient. + pub fn is_participant(&self, id: Id) -> bool { + id == self.sender || id == self.recipient + } +} + /// A message from a parachain to its Relay Chain. pub type UpwardMessage = Vec; diff --git a/roadmap/implementers-guide/src/runtime/hrmp.md b/roadmap/implementers-guide/src/runtime/hrmp.md index a19e89b0b379..2b0b4751e30a 100644 --- a/roadmap/implementers-guide/src/runtime/hrmp.md +++ b/roadmap/implementers-guide/src/runtime/hrmp.md @@ -11,8 +11,6 @@ HRMP related structs: struct HrmpOpenChannelRequest { /// Indicates if this request was confirmed by the recipient. confirmed: bool, - /// How many session boundaries ago this request was seen. - age: SessionIndex, /// The amount that the sender supplied at the time of creation of this request. sender_deposit: Balance, /// The maximum message size that could be put into the channel. @@ -158,8 +156,8 @@ Candidate Enactment: 1. Decrement `C.msg_count` 1. Decrement `C.total_size` by `M`'s payload size. 1. Set `HrmpWatermarks` for `P` to be equal to `new_hrmp_watermark` - > NOTE: That collecting digests can be inefficient and the time it takes grows very fast. Thanks to the aggresive - > parametrization this shouldn't be a big of a deal. + > NOTE: That collecting digests can be inefficient and the time it takes grows very fast. Thanks to the aggressive + > parameterization this shouldn't be a big of a deal. > If that becomes a problem consider introducing an extra dictionary which says at what block the given sender > sent a message to the recipient. @@ -212,6 +210,13 @@ the parachain executed the message. - The DM is sent using `queue_downward_message`. - The DM is represented by the `HrmpChannelAccepted` XCM message. - `recipient` is set to `origin`. +* `hrmp_cancel_open_request(ch)`: + 1. Check that `origin` is either `ch.sender` or `ch.recipient` + 1. Check that the open channel request `ch` exists. + 1. Check that the open channel request for `ch` is not confirmed. + 1. Remove `ch` from `HrmpOpenChannelRequests` and `HrmpOpenChannelRequestsList` + 1. Decrement `HrmpAcceptedChannelRequestCount` for `ch.recipient` by 1. + 1. Unreserve the deposit of `ch.sender`. * `hrmp_close_channel(ch)`: 1. Check that `origin` is either `ch.sender` or `ch.recipient` 1. Check that `HrmpChannels` for `ch` exists. @@ -233,15 +238,12 @@ the parachain executed the message. 1. Remove all outbound channels of `P`, i.e. `(P, _)`, 1. Remove `HrmpOpenChannelRequestCount` for `P` 1. Remove `HrmpAcceptedChannelRequestCount` for `P`. + 1. Remove `HrmpOpenChannelRequests` and `HrmpOpenChannelRequestsList` for `(P, _)` and `(_, P)`. + 1. For each removed channel request `C`: + 1. Unreserve the sender's deposit if the sender is not present in `outgoing_paras` + 1. Unreserve the recipient's deposit if `C` is confirmed and the recipient is not present in `outgoing_paras` 1. For each channel designator `D` in `HrmpOpenChannelRequestsList` we query the request `R` from `HrmpOpenChannelRequests`: - 1. if `R.confirmed = false`: - 1. increment `R.age` by 1. - 1. if `R.age` reached a preconfigured time-to-live limit `config.hrmp_open_request_ttl`, then: - 1. refund `R.sender_deposit` to the sender - 1. decrement `HrmpOpenChannelRequestCount` for `D.sender` by 1. - 1. remove `R` - 1. remove `D` - 2. if `R.confirmed = true`, + 1. if `R.confirmed = true`, 1. if both `D.sender` and `D.recipient` are not offboarded. 1. create a new channel `C` between `(D.sender, D.recipient)`. 1. Initialize the `C.sender_deposit` with `R.sender_deposit` and `C.recipient_deposit` diff --git a/roadmap/implementers-guide/src/types/runtime.md b/roadmap/implementers-guide/src/types/runtime.md index 8f52bf8bc76a..5749aeca866a 100644 --- a/roadmap/implementers-guide/src/types/runtime.md +++ b/roadmap/implementers-guide/src/types/runtime.md @@ -42,7 +42,7 @@ struct HostConfiguration { pub dispute_period: SessionIndex, /// How long after dispute conclusion to accept statements. pub dispute_post_conclusion_acceptance_period: BlockNumber, - /// The maximum number of dispute spam slots + /// The maximum number of dispute spam slots pub dispute_max_spam_slots: u32, /// How long it takes for a dispute to conclude by time-out, if no supermajority is reached. pub dispute_conclusion_by_time_out_period: BlockNumber, @@ -85,8 +85,6 @@ struct HostConfiguration { /// decide to do with its PoV so this value in practice will be picked as a fraction of the PoV /// size. pub max_downward_message_size: u32, - /// Number of sessions after which an HRMP open channel request expires. - pub hrmp_open_request_ttl: u32, /// The deposit that the sender should provide for opening an HRMP channel. pub hrmp_sender_deposit: u32, /// The deposit that the recipient should provide for accepting opening an HRMP channel. @@ -119,7 +117,7 @@ struct HostConfiguration { Inherent data passed to a runtime entry-point for the advancement of parachain consensus. This contains 3 pieces of data: -1. [`Bitfields`](availability.md#signed-availability-bitfield) +1. [`Bitfields`](availability.md#signed-availability-bitfield) 2. [`BackedCandidates`](backing.md#backed-candidate) 3. [`MultiDisputeStatementSet`](disputes.md#multidisputestatementset) diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index b675bf9034cb..a6cadd158fc7 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -91,8 +91,10 @@ pub struct HostConfiguration { pub hrmp_max_parachain_outbound_channels: u32, /// The maximum number of outbound HRMP channels a parathread is allowed to open. pub hrmp_max_parathread_outbound_channels: u32, - /// Number of sessions after which an HRMP open channel request expires. - pub hrmp_open_request_ttl: u32, + /// NOTE: this field is deprecated. Channel open requests became non-expiring. Changing this value + /// doesn't have any effect. This field doesn't have a `deprecated` attribute because that would + /// trigger warnings coming from macros. + pub _hrmp_open_request_ttl: u32, /// The deposit that the sender should provide for opening an HRMP channel. pub hrmp_sender_deposit: Balance, /// The deposit that the recipient should provide for accepting opening an HRMP channel. @@ -202,7 +204,7 @@ impl> Default for HostConfiguration, new: u32) -> DispatchResult { - ensure_root(origin)?; - Self::update_config_member(|config| { - sp_std::mem::replace(&mut config.hrmp_open_request_ttl, new) != new - }); - Ok(()) + // 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 { + Err("this doesn't have any effect".into()) } /// Sets the amount of funds that the sender should provide for opening an HRMP channel. @@ -888,7 +888,7 @@ mod tests { ump_service_total_weight: 20000, max_upward_message_size: 448, max_upward_message_num_per_candidate: 5, - hrmp_open_request_ttl: 1312, + _hrmp_open_request_ttl: 0, hrmp_sender_deposit: 22, hrmp_recipient_deposit: 4905, hrmp_channel_max_capacity: 3921, @@ -1013,11 +1013,6 @@ mod tests { new_config.max_upward_message_num_per_candidate, ) .unwrap(); - Configuration::set_hrmp_open_request_ttl( - Origin::root(), - new_config.hrmp_open_request_ttl, - ) - .unwrap(); Configuration::set_hrmp_sender_deposit(Origin::root(), new_config.hrmp_sender_deposit) .unwrap(); Configuration::set_hrmp_recipient_deposit( diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index c31f658faf36..bb200900d5b5 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -39,8 +39,9 @@ pub use pallet::*; pub struct HrmpOpenChannelRequest { /// Indicates if this request was confirmed by the recipient. pub confirmed: bool, - /// How many session boundaries ago this request was seen. - pub age: SessionIndex, + /// NOTE: this field is deprecated. Channel open requests became non-expiring and this value + /// became unused. + pub _age: SessionIndex, /// The amount that the sender supplied at the time of creation of this request. pub sender_deposit: Balance, /// The maximum message size that could be put into the channel. @@ -200,6 +201,9 @@ pub mod pallet { /// Open HRMP channel requested. /// `[sender, recipient, proposed_max_capacity, proposed_max_message_size]` OpenChannelRequested(ParaId, ParaId, u32, u32), + /// An HRMP channel request sent by the receiver was canceled by either party. + /// `[by_parachain, channel_id]` + OpenChannelCanceled(ParaId, HrmpChannelId), /// Open HRMP channel accepted. `[sender, recipient]` OpenChannelAccepted(ParaId, ParaId), /// HRMP channel closed. `[by_parachain, channel_id]` @@ -238,6 +242,12 @@ pub mod pallet { CloseHrmpChannelDoesntExist, /// The channel close request is already requested. CloseHrmpChannelAlreadyUnderway, + /// Canceling is requested by neither the sender nor recipient of the open channel request. + CancelHrmpOpenChannelUnauthorized, + /// The open request doesn't exist. + OpenHrmpChannelDoesntExist, + /// Cannot cancel an HRMP open channel request because it is already confirmed. + OpenHrmpChannelAlreadyConfirmed, } /// The set of pending HRMP open channel requests. @@ -464,6 +474,22 @@ pub mod pallet { Self::process_hrmp_close_channel_requests(); Ok(()) } + + /// This cancels a pending open channel request. It can be canceled be either of the sender + /// or the recipient for that request. The origin must be either of those. + /// + /// The cancelling happens immediately. It is not possible to cancel the request if it is + /// already accepted. + #[pallet::weight(0)] + pub fn hrmp_cancel_open_request( + origin: OriginFor, + channel_id: HrmpChannelId, + ) -> DispatchResult { + let origin = ensure_parachain(::Origin::from(origin))?; + Self::cancel_open_request(origin, channel_id.clone())?; + Self::deposit_event(Event::OpenChannelCanceled(origin, channel_id)); + Ok(()) + } } } @@ -507,19 +533,77 @@ impl Pallet { notification: &initializer::SessionChangeNotification, outgoing_paras: &[ParaId], ) { - Self::perform_outgoing_para_cleanup(outgoing_paras); + Self::perform_outgoing_para_cleanup(¬ification.prev_config, outgoing_paras); Self::process_hrmp_open_channel_requests(¬ification.prev_config); Self::process_hrmp_close_channel_requests(); } /// Iterate over all paras that were noted for offboarding and remove all the data /// associated with them. - fn perform_outgoing_para_cleanup(outgoing: &[ParaId]) { + fn perform_outgoing_para_cleanup( + config: &HostConfiguration, + outgoing: &[ParaId], + ) { + Self::clean_open_channel_requests(config, outgoing); for outgoing_para in outgoing { Self::clean_hrmp_after_outgoing(outgoing_para); } } + // Go over the HRMP open channel requests and remove all in which offboarding paras participate. + // + // This will also perform the refunds for the counterparty if it doesn't offboard. + fn clean_open_channel_requests( + config: &HostConfiguration, + outgoing: &[ParaId], + ) { + // First collect all the channel ids of the open requests in which there is at least one + // party presents in the outgoing list. + // + // Both the open channel request list and outgoing list are expected to be small enough. + // In the most common case there will be only single outgoing para. + let open_channel_reqs = ::HrmpOpenChannelRequestsList::get(); + let (go, stay): (Vec, Vec) = open_channel_reqs + .into_iter() + .partition(|req_id| outgoing.iter().any(|id| req_id.is_participant(*id))); + ::HrmpOpenChannelRequestsList::put(stay); + + // Then iterate over all open requests to be removed, pull them out of the set and perform + // the refunds if applicable. + for req_id in go { + let req_data = match ::HrmpOpenChannelRequests::take(&req_id) { + Some(req_data) => req_data, + None => { + // Can't normally happen but no need to panic. + continue + }, + }; + + // Return the deposit of the sender, but only if it is not the para being offboarded. + if !outgoing.contains(&req_id.sender) { + T::Currency::unreserve( + &req_id.sender.into_account(), + req_data.sender_deposit.unique_saturated_into(), + ); + } + + // If the request was confirmed, then it means it was confirmed in the finished session. + // Therefore, the config's hrmp_recipient_deposit represents the actual value of the + // deposit. + // + // We still want to refund the deposit only if the para is not being offboarded. + if req_data.confirmed { + if !outgoing.contains(&req_id.recipient) { + T::Currency::unreserve( + &req_id.recipient.into_account(), + config.hrmp_recipient_deposit.unique_saturated_into(), + ); + } + Self::decrease_accepted_channel_request_count(req_id.recipient); + } + } + } + /// Remove all storage entries associated with the given para. fn clean_hrmp_after_outgoing(outgoing_para: &ParaId) { ::HrmpOpenChannelRequestCount::remove(outgoing_para); @@ -561,7 +645,7 @@ impl Pallet { idx -= 1; let channel_id = open_req_channels[idx].clone(); - let mut request = ::HrmpOpenChannelRequests::get(&channel_id).expect( + let request = ::HrmpOpenChannelRequests::get(&channel_id).expect( "can't be `None` due to the invariant that the list contains the same items as the set; qed", ); @@ -595,52 +679,11 @@ impl Pallet { }); } - let new_open_channel_req_cnt = - ::HrmpOpenChannelRequestCount::get(&channel_id.sender) - .saturating_sub(1); - if new_open_channel_req_cnt != 0 { - ::HrmpOpenChannelRequestCount::insert( - &channel_id.sender, - new_open_channel_req_cnt, - ); - } else { - ::HrmpOpenChannelRequestCount::remove(&channel_id.sender); - } - - let new_accepted_channel_req_cnt = - ::HrmpAcceptedChannelRequestCount::get(&channel_id.recipient) - .saturating_sub(1); - if new_accepted_channel_req_cnt != 0 { - ::HrmpAcceptedChannelRequestCount::insert( - &channel_id.recipient, - new_accepted_channel_req_cnt, - ); - } else { - ::HrmpAcceptedChannelRequestCount::remove(&channel_id.recipient); - } + Self::decrease_open_channel_request_count(channel_id.sender); + Self::decrease_accepted_channel_request_count(channel_id.recipient); let _ = open_req_channels.swap_remove(idx); ::HrmpOpenChannelRequests::remove(&channel_id); - } else { - request.age += 1; - if request.age == config.hrmp_open_request_ttl { - // got stale - ::HrmpOpenChannelRequestCount::mutate(&channel_id.sender, |v| { - *v -= 1; - }); - - let _ = open_req_channels.swap_remove(idx); - if let Some(HrmpOpenChannelRequest { sender_deposit, .. }) = - ::HrmpOpenChannelRequests::take(&channel_id) - { - T::Currency::unreserve( - &channel_id.sender.into_account(), - sender_deposit.unique_saturated_into(), - ); - } - } else { - ::HrmpOpenChannelRequests::insert(&channel_id, request); - } } } @@ -996,7 +1039,7 @@ impl Pallet { &channel_id, HrmpOpenChannelRequest { confirmed: false, - age: 0, + _age: 0, sender_deposit: config.hrmp_sender_deposit, max_capacity: proposed_max_capacity, max_message_size: proposed_max_message_size, @@ -1081,13 +1124,40 @@ impl Pallet { Ok(()) } - fn close_channel(origin: ParaId, channel_id: HrmpChannelId) -> Result<(), Error> { + fn cancel_open_request(origin: ParaId, channel_id: HrmpChannelId) -> DispatchResult { // check if the origin is allowed to close the channel. - ensure!( - origin == channel_id.sender || origin == channel_id.recipient, - Error::::CloseHrmpChannelUnauthorized, + ensure!(channel_id.is_participant(origin), Error::::CancelHrmpOpenChannelUnauthorized); + + let open_channel_req = ::HrmpOpenChannelRequests::get(&channel_id) + .ok_or(Error::::OpenHrmpChannelDoesntExist)?; + ensure!(!open_channel_req.confirmed, Error::::OpenHrmpChannelAlreadyConfirmed); + + // Remove the request by the channel id and sync the accompanying list with the set. + ::HrmpOpenChannelRequests::remove(&channel_id); + ::HrmpOpenChannelRequestsList::mutate(|open_req_channels| { + if let Some(pos) = open_req_channels.iter().position(|x| x == &channel_id) { + open_req_channels.swap_remove(pos); + } + }); + + Self::decrease_open_channel_request_count(channel_id.sender); + // Don't decrease `HrmpAcceptedChannelRequestCount` because we don't consider confirmed + // requests here. + + // Unreserve the sender's deposit. The recipient could not have left their deposit because + // we ensured that the request is not confirmed. + T::Currency::unreserve( + &channel_id.sender.into_account(), + open_channel_req.sender_deposit.unique_saturated_into(), ); + Ok(()) + } + + fn close_channel(origin: ParaId, channel_id: HrmpChannelId) -> Result<(), Error> { + // check if the origin is allowed to close the channel. + ensure!(channel_id.is_participant(origin), Error::::CloseHrmpChannelUnauthorized); + // check if the channel requested to close does exist. ensure!( ::HrmpChannels::get(&channel_id).is_some(), @@ -1167,6 +1237,30 @@ impl Pallet { } } +impl Pallet { + /// Decreases the open channel request count for the given sender. If the value reaches zero + /// it is removed completely. + fn decrease_open_channel_request_count(sender: ParaId) { + ::HrmpOpenChannelRequestCount::mutate_exists(&sender, |opt_rc| { + *opt_rc = opt_rc.and_then(|rc| match rc.saturating_sub(1) { + 0 => None, + n => Some(n), + }); + }); + } + + /// Decreases the accepted channel request count for the given sender. If the value reaches + /// zero it is removed completely. + fn decrease_accepted_channel_request_count(recipient: ParaId) { + ::HrmpAcceptedChannelRequestCount::mutate_exists(&recipient, |opt_rc| { + *opt_rc = opt_rc.and_then(|rc| match rc.saturating_sub(1) { + 0 => None, + n => Some(n), + }); + }); + } +} + #[cfg(test)] mod tests { use super::*; @@ -1231,7 +1325,6 @@ mod tests { hrmp_channel_max_total_size: u32, hrmp_sender_deposit: Balance, hrmp_recipient_deposit: Balance, - hrmp_open_request_ttl: u32, } impl Default for GenesisConfigBuilder { @@ -1247,7 +1340,6 @@ mod tests { hrmp_channel_max_total_size: 16, hrmp_sender_deposit: 100, hrmp_recipient_deposit: 100, - hrmp_open_request_ttl: 3, } } } @@ -1267,7 +1359,6 @@ mod tests { config.hrmp_channel_max_total_size = self.hrmp_channel_max_total_size; config.hrmp_sender_deposit = self.hrmp_sender_deposit; config.hrmp_recipient_deposit = self.hrmp_recipient_deposit; - config.hrmp_open_request_ttl = self.hrmp_open_request_ttl; genesis } } @@ -1819,36 +1910,41 @@ mod tests { } #[test] - fn refund_deposit_on_request_expiry() { + fn refund_deposit_on_offboarding() { let para_a = 32.into(); let para_b = 64.into(); let mut genesis = GenesisConfigBuilder::default(); genesis.hrmp_sender_deposit = 20; genesis.hrmp_recipient_deposit = 15; - genesis.hrmp_open_request_ttl = 2; new_test_ext(genesis.build()).execute_with(|| { - // Register two parachains funded with different amounts of funds, send an open channel - // request but do not accept it. + // Register two parachains and open a channel between them. register_parachain_with_balance(para_a, 100); register_parachain_with_balance(para_b, 110); run_to_block(5, Some(vec![4, 5])); Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); + Hrmp::accept_open_channel(para_b, para_a).unwrap(); assert_eq!(::Currency::free_balance(¶_a.into_account()), 80); - assert_eq!(::Currency::free_balance(¶_b.into_account()), 110); + assert_eq!(::Currency::free_balance(¶_b.into_account()), 95); + run_to_block(8, Some(vec![8])); + assert!(channel_exists(para_a, para_b)); - // Request age is 1 out of 2 - run_to_block(10, Some(vec![10])); - assert_eq!(::Currency::free_balance(¶_a.into_account()), 80); + // Then deregister one parachain. + deregister_parachain(para_a); + run_to_block(10, Some(vec![9, 10])); + + // The channel should be removed. + assert!(!Paras::is_valid_para(para_a)); + assert!(!channel_exists(para_a, para_b)); + assert_storage_consistency_exhaustive(); - // Request age is 2 out of 2. The request should expire. - run_to_block(20, Some(vec![20])); assert_eq!(::Currency::free_balance(¶_a.into_account()), 100); + assert_eq!(::Currency::free_balance(¶_b.into_account()), 110); }); } #[test] - fn refund_deposit_on_offboarding() { + fn no_dangling_open_requests() { let para_a = 32.into(); let para_b = 64.into(); @@ -1860,24 +1956,54 @@ mod tests { register_parachain_with_balance(para_a, 100); register_parachain_with_balance(para_b, 110); run_to_block(5, Some(vec![4, 5])); + + // Start opening a channel a->b Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); - Hrmp::accept_open_channel(para_b, para_a).unwrap(); assert_eq!(::Currency::free_balance(¶_a.into_account()), 80); - assert_eq!(::Currency::free_balance(¶_b.into_account()), 95); - run_to_block(8, Some(vec![8])); - assert!(channel_exists(para_a, para_b)); - // Then deregister one parachain. + // Then deregister one parachain, but don't wait two sessions until it takes effect. + // Instead, para_b will confirm the request, which will take place the same time + // the offboarding should happen. deregister_parachain(para_a); - run_to_block(10, Some(vec![9, 10])); + run_to_block(9, Some(vec![9])); + Hrmp::accept_open_channel(para_b, para_a).unwrap(); + assert_eq!(::Currency::free_balance(¶_b.into_account()), 95); + assert!(!channel_exists(para_a, para_b)); + run_to_block(10, Some(vec![10])); - // The channel should be removed. - assert!(!Paras::is_valid_para(para_a)); + // The outcome we expect is para_b should receive the refund. + assert_eq!(::Currency::free_balance(¶_b.into_account()), 110); assert!(!channel_exists(para_a, para_b)); assert_storage_consistency_exhaustive(); + }); + } + + #[test] + fn cancel_pending_open_channel_request() { + let para_a = 32.into(); + let para_b = 64.into(); + let mut genesis = GenesisConfigBuilder::default(); + genesis.hrmp_sender_deposit = 20; + genesis.hrmp_recipient_deposit = 15; + new_test_ext(genesis.build()).execute_with(|| { + // Register two parachains and open a channel between them. + register_parachain_with_balance(para_a, 100); + register_parachain_with_balance(para_b, 110); + run_to_block(5, Some(vec![4, 5])); + + // Start opening a channel a->b + Hrmp::init_open_channel(para_a, para_b, 2, 8).unwrap(); + assert_eq!(::Currency::free_balance(¶_a.into_account()), 80); + + // Cancel opening the channel + Hrmp::cancel_open_request(para_a, HrmpChannelId { sender: para_a, recipient: para_b }) + .unwrap(); assert_eq!(::Currency::free_balance(¶_a.into_account()), 100); - assert_eq!(::Currency::free_balance(¶_b.into_account()), 110); + + run_to_block(10, Some(vec![10])); + assert!(!channel_exists(para_a, para_b)); + assert_storage_consistency_exhaustive(); }); } } diff --git a/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index 0dda104ca7ab..dc50c5d8ef6b 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -292,3 +292,6 @@ WND/S Wococo XCM/S XCMP/M +decrement +DM +ParaId \ No newline at end of file From a20a35b62a16e861da05b95b76bde5f29a9ac70d Mon Sep 17 00:00:00 2001 From: Zeke Mostov <32168567+emostov@users.noreply.github.com> Date: Thu, 9 Sep 2021 13:21:54 -0700 Subject: [PATCH 017/138] Allow staking miner to use different election algorithms (#3752) * WIP * Dry run cmd working * Monitor cmd works * Configure balance with parameter type * Comments * cleannnn * Add balancing to PhragMMS * Move OffchainRanomBalancing to common * DRY mine_unchecked over config.solver * FMT * Apply suggestions from code review Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Improve docs for any_runtime_unit! * Some cleanup * fmt * Correct capitilaztion * Improve version mismatch log * Revert "Improve version mismatch log" This reverts commit 57570403f654f1efa4307956cda2de6f0c64f70a. * Apply suggestions from code review Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Remove Balancing struct and use Balancing Parameter type instead * update Substrate Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: parity-processbot <> --- Cargo.lock | 334 +++++++++--------- runtime/common/Cargo.toml | 2 + runtime/common/src/elections.rs | 27 ++ runtime/kusama/src/lib.rs | 7 +- runtime/polkadot/src/lib.rs | 7 +- runtime/westend/src/lib.rs | 7 +- utils/staking-miner/Cargo.toml | 2 + utils/staking-miner/src/dry_run.rs | 11 +- utils/staking-miner/src/emergency_solution.rs | 6 +- utils/staking-miner/src/main.rs | 160 +++++++-- utils/staking-miner/src/monitor.rs | 15 +- utils/staking-miner/src/rpc_helpers.rs | 72 ++-- utils/staking-miner/src/signer.rs | 17 +- 13 files changed, 395 insertions(+), 272 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 062122df085c..e7e0bb98fb2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1013,9 +1013,9 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chacha20" -version = "0.7.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8756167ea0aca10e066cdbe7813bd71d2f24e69b0bc7b50509590cef2ce0b9" +checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412" dependencies = [ "cfg-if 1.0.0", "cipher", @@ -1025,9 +1025,9 @@ dependencies = [ [[package]] name = "chacha20poly1305" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175a11316f33592cf2b71416ee65283730b5b7849813c4891d02a12906ed9acc" +checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5" dependencies = [ "aead", "chacha20", @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "sp-api", @@ -4530,7 +4530,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4582,7 +4582,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4731,7 +4731,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4746,7 +4746,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4786,7 +4786,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4822,7 +4822,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4837,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4856,7 +4856,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4872,7 +4872,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4888,7 +4888,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4905,7 +4905,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -4921,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -4952,7 +4952,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -4981,7 +4981,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5017,7 +5017,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -5030,7 +5030,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5045,7 +5045,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -5065,7 +5065,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5081,7 +5081,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -5094,7 +5094,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "sp-arithmetic", @@ -5136,7 +5136,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -5149,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5166,7 +5166,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5181,7 +5181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-support", "frame-system", @@ -5197,7 +5197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5214,7 +5214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5225,7 +5225,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5241,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -5256,7 +5256,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-benchmarking", "frame-support", @@ -6640,6 +6640,7 @@ dependencies = [ "sp-inherents", "sp-io", "sp-keystore", + "sp-npos-elections", "sp-runtime", "sp-session", "sp-staking", @@ -7646,7 +7647,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7867,16 +7868,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" -[[package]] -name = "ruzstd" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d425143485a37727c7a46e689bbe3b883a00f42b4a52c4ac0f44855c1009b00" -dependencies = [ - "byteorder", - "twox-hash", -] - [[package]] name = "rw-stream-sink" version = "0.2.1" @@ -7915,7 +7906,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "sp-core", @@ -7926,7 +7917,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "derive_more", @@ -7953,7 +7944,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7976,7 +7967,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7992,7 +7983,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8008,7 +7999,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8019,7 +8010,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "chrono", "fdlimit", @@ -8057,7 +8048,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "fnv", "futures 0.3.17", @@ -8085,7 +8076,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "hash-db", "kvdb", @@ -8110,7 +8101,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "futures 0.3.17", @@ -8134,7 +8125,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "derive_more", @@ -8177,7 +8168,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "derive_more", "futures 0.3.17", @@ -8201,7 +8192,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8214,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "assert_matches", "async-trait", @@ -8248,7 +8239,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "futures 0.3.17", @@ -8274,7 +8265,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "sc-client-api", "sp-authorship", @@ -8285,7 +8276,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8311,9 +8302,10 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "derive_more", + "environmental", "parity-scale-codec", "pwasm-utils", "sc-allocator", @@ -8328,7 +8320,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "parity-scale-codec", @@ -8344,7 +8336,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8363,7 +8355,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "derive_more", @@ -8400,7 +8392,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "derive_more", "finality-grandpa", @@ -8424,7 +8416,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8441,7 +8433,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "derive_more", @@ -8456,7 +8448,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "hash-db", "parity-scale-codec", @@ -8474,7 +8466,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-std", "async-trait", @@ -8525,7 +8517,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8541,7 +8533,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "bytes 1.0.1", "fnv", @@ -8568,7 +8560,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "libp2p", @@ -8581,7 +8573,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8590,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "hash-db", @@ -8621,7 +8613,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8646,7 +8638,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8662,7 +8654,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "directories", @@ -8726,7 +8718,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "parity-scale-codec", @@ -8740,7 +8732,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8762,7 +8754,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "chrono", "futures 0.3.17", @@ -8780,7 +8772,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8809,7 +8801,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8820,7 +8812,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "intervalier", @@ -8847,7 +8839,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "derive_more", "futures 0.3.17", @@ -8861,7 +8853,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9292,7 +9284,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "hash-db", "log", @@ -9309,7 +9301,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9321,7 +9313,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "serde", @@ -9333,7 +9325,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "integer-sqrt", "num-traits", @@ -9347,7 +9339,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sp-api", @@ -9359,7 +9351,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "parity-scale-codec", @@ -9371,7 +9363,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sp-api", @@ -9383,7 +9375,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "log", @@ -9401,7 +9393,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "futures 0.3.17", @@ -9420,7 +9412,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "merlin", @@ -9442,7 +9434,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9452,7 +9444,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9464,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "base58", "blake2-rfc", @@ -9508,7 +9500,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9517,7 +9509,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro2", "quote", @@ -9527,7 +9519,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "environmental", "parity-scale-codec", @@ -9538,7 +9530,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "finality-grandpa", "log", @@ -9555,7 +9547,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9569,7 +9561,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "hash-db", @@ -9594,7 +9586,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "lazy_static", "sp-core", @@ -9605,7 +9597,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "derive_more", @@ -9622,29 +9614,29 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ - "ruzstd", "zstd", ] [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "serde", "sp-arithmetic", "sp-core", "sp-npos-elections-solution-type", + "sp-runtime", "sp-std", ] [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9655,7 +9647,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "sp-api", "sp-core", @@ -9665,7 +9657,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "backtrace", ] @@ -9673,7 +9665,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "rustc-hash", "serde", @@ -9683,7 +9675,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "either", "hash256-std-hasher", @@ -9704,7 +9696,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9721,7 +9713,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9733,7 +9725,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "serde", "serde_json", @@ -9742,7 +9734,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sp-api", @@ -9755,7 +9747,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9765,7 +9757,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "hash-db", "log", @@ -9788,12 +9780,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9806,7 +9798,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "sp-core", @@ -9819,7 +9811,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9835,7 +9827,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "erased-serde", "log", @@ -9853,7 +9845,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "sp-api", "sp-runtime", @@ -9862,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "log", @@ -9877,7 +9869,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "hash-db", "memory-db", @@ -9891,7 +9883,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9906,7 +9898,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9917,7 +9909,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9942,6 +9934,7 @@ name = "staking-miner" version = "0.9.9" dependencies = [ "env_logger 0.9.0", + "frame-election-provider-support", "frame-support", "frame-system", "jsonrpsee-ws-client", @@ -9962,6 +9955,7 @@ dependencies = [ "serde_json", "sp-core", "sp-io", + "sp-npos-elections", "sp-runtime", "sp-version", "structopt", @@ -10111,7 +10105,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "platforms", ] @@ -10119,7 +10113,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10141,7 +10135,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-std", "derive_more", @@ -10155,7 +10149,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "async-trait", "futures 0.3.17", @@ -10182,7 +10176,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10192,7 +10186,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10203,7 +10197,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10356,7 +10350,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "frame-system", "futures 0.3.17", @@ -10763,7 +10757,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#6e15de9703bfe09b85efa33fd6e3a94d2446dd01" +source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" dependencies = [ "log", "parity-scale-codec", @@ -11692,9 +11686,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "377db0846015f7ae377174787dd452e1c5f5a9050bc6f954911d01f116daa0cd" dependencies = [ "zeroize_derive", ] diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 0cab21759104..9d3cf52efd29 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -22,6 +22,7 @@ sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master sp-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +sp-npos-elections = { 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-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -90,6 +91,7 @@ std = [ "libsecp256k1/std", "runtime-parachains/std", "xcm/std", + "sp-npos-elections/std", ] runtime-benchmarks = [ "libsecp256k1/hmac", diff --git a/runtime/common/src/elections.rs b/runtime/common/src/elections.rs index b85d8013f4f4..d42fe0d4dc2a 100644 --- a/runtime/common/src/elections.rs +++ b/runtime/common/src/elections.rs @@ -55,3 +55,30 @@ impl pallet_election_provider_multi_phase::BenchmarkingConfig for BenchmarkConfi const MINER_MAXIMUM_VOTERS: u32 = 15_000; const MAXIMUM_TARGETS: u32 = 2000; } + +/// Maximum number of iterations for balancing that will be executed in the embedded miner of +/// pallet-election-provider-multi-phase. +pub const MINER_MAX_ITERATIONS: u32 = 10; + +/// A source of random balance for the NPoS Solver, which is meant to be run by the OCW election +/// miner. +pub struct OffchainRandomBalancing; +impl frame_support::pallet_prelude::Get> + for OffchainRandomBalancing +{ + fn get() -> Option<(usize, sp_npos_elections::ExtendedBalance)> { + use sp_runtime::{codec::Decode, traits::TrailingZeroInput}; + let iters = match MINER_MAX_ITERATIONS { + 0 => 0, + max @ _ => { + let seed = sp_io::offchain::random_seed(); + let random = ::decode(&mut TrailingZeroInput::new(&seed)) + .expect("input is padded with zeroes; qed") % + max.saturating_add(1); + random as usize + }, + }; + + Some((iters, 0)) + } +} diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 23a45a675cd5..e04b6f05038b 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -356,7 +356,6 @@ parameter_types! { pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // miner configs - pub const MinerMaxIterations: u32 = 10; pub OffchainRepeat: BlockNumber = 5; } @@ -384,7 +383,6 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type RewardHandler = (); // nothing to do upon rewards type SignedPhase = SignedPhase; type SolutionImprovementThreshold = SolutionImprovementThreshold; - type MinerMaxIterations = MinerMaxIterations; type MinerMaxWeight = OffchainSolutionWeightLimit; // For now use the one from staking. type MinerMaxLength = OffchainSolutionLengthLimit; type OffchainRepeat = OffchainRepeat; @@ -393,6 +391,11 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type Solution = NposCompactSolution24; type OnChainAccuracy = Perbill; type Fallback = Fallback; + type Solver = frame_election_provider_support::SequentialPhragmen< + AccountId, + pallet_election_provider_multi_phase::SolutionAccuracyOf, + runtime_common::elections::OffchainRandomBalancing, + >; type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; type ForceOrigin = EnsureOneOf< AccountId, diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 659ab412650d..15f394355b2a 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -362,7 +362,6 @@ parameter_types! { pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // miner configs - pub const MinerMaxIterations: u32 = 10; pub OffchainRepeat: BlockNumber = 5; } @@ -390,7 +389,6 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type SlashHandler = (); // burn slashes type RewardHandler = (); // nothing to do upon rewards type SolutionImprovementThreshold = SolutionImprovementThreshold; - type MinerMaxIterations = MinerMaxIterations; type MinerMaxWeight = OffchainSolutionWeightLimit; // For now use the one from staking. type MinerMaxLength = OffchainSolutionLengthLimit; type OffchainRepeat = OffchainRepeat; @@ -399,6 +397,11 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type OnChainAccuracy = Perbill; type Solution = NposCompactSolution16; type Fallback = Fallback; + type Solver = frame_election_provider_support::SequentialPhragmen< + AccountId, + pallet_election_provider_multi_phase::SolutionAccuracyOf, + runtime_common::elections::OffchainRandomBalancing, + >; type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; type ForceOrigin = EnsureOneOf< AccountId, diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index bc494ae9440f..c99c811cb031 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -342,7 +342,6 @@ parameter_types! { pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // miner configs - pub const MinerMaxIterations: u32 = 10; pub OffchainRepeat: BlockNumber = 5; } @@ -370,7 +369,6 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type SlashHandler = (); // burn slashes type RewardHandler = (); // nothing to do upon rewards type SolutionImprovementThreshold = SolutionImprovementThreshold; - type MinerMaxIterations = MinerMaxIterations; type MinerMaxWeight = OffchainSolutionWeightLimit; // For now use the one from staking. type MinerMaxLength = OffchainSolutionLengthLimit; type OffchainRepeat = OffchainRepeat; @@ -379,6 +377,11 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type OnChainAccuracy = Perbill; type Solution = NposCompactSolution16; type Fallback = Fallback; + type Solver = frame_election_provider_support::SequentialPhragmen< + AccountId, + pallet_election_provider_multi_phase::SolutionAccuracyOf, + runtime_common::elections::OffchainRandomBalancing, + >; type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; type ForceOrigin = EnsureRoot; type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 440fc5b890c8..c1eccc1a8093 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -22,11 +22,13 @@ sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-version = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-transaction-pool-api = { git = "https://github.com/paritytech/substrate", branch = "master" } frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/utils/staking-miner/src/dry_run.rs b/utils/staking-miner/src/dry_run.rs index 236d63ce4cc1..ffebdb3fadf2 100644 --- a/utils/staking-miner/src/dry_run.rs +++ b/utils/staking-miner/src/dry_run.rs @@ -23,7 +23,7 @@ use codec::Encode; use frame_support::traits::Currency; /// Forcefully create the snapshot. This can be used to compute the election at anytime. -fn force_create_snapshot(ext: &mut Ext) -> Result<(), Error> { +fn force_create_snapshot(ext: &mut Ext) -> Result<(), Error> { ext.execute_with(|| { if >::exists() { log::info!(target: LOG_TARGET, "snapshot already exists."); @@ -112,7 +112,7 @@ macro_rules! dry_run_cmd_for { ($runtime:ident) => { paste::paste! { shared: SharedConfig, config: DryRunConfig, signer: Signer, - ) -> Result<(), Error> { + ) -> Result<(), Error<$crate::[<$runtime _runtime_exports>]::Runtime>> { use $crate::[<$runtime _runtime_exports>]::*; let mut ext = crate::create_election_ext::( shared.uri.clone(), @@ -121,7 +121,8 @@ macro_rules! dry_run_cmd_for { ($runtime:ident) => { paste::paste! { ).await?; force_create_snapshot::(&mut ext)?; - let (raw_solution, witness) = crate::mine_unchecked::(&mut ext, config.iterations, false)?; + let (raw_solution, witness) = crate::mine_with::(&config.solver, &mut ext)?; + let nonce = crate::get_account_info::(client, &signer.account, config.at) .await? .map(|i| i.nonce) @@ -148,7 +149,9 @@ macro_rules! dry_run_cmd_for { ($runtime:ident) => { paste::paste! { }); log::info!(target: LOG_TARGET, "dispatch result is {:?}", dispatch_result); - let outcome = rpc_decode::(client, "system_dryRun", params!{ bytes }).await?; + let outcome = rpc_decode::(client, "system_dryRun", params!{ bytes }) + .await + .map_err::, _>(Into::into)?; log::info!(target: LOG_TARGET, "dry-run outcome is {:?}", outcome); Ok(()) } diff --git a/utils/staking-miner/src/emergency_solution.rs b/utils/staking-miner/src/emergency_solution.rs index ff7464c0c042..d27c23e38601 100644 --- a/utils/staking-miner/src/emergency_solution.rs +++ b/utils/staking-miner/src/emergency_solution.rs @@ -18,20 +18,22 @@ use crate::{prelude::*, Error, SharedConfig}; use codec::Encode; +use frame_election_provider_support::SequentialPhragmen; use std::io::Write; macro_rules! emergency_solution_cmd_for { ($runtime:ident) => { paste::paste! { /// Execute the emergency-solution command. pub(crate) async fn []( shared: SharedConfig, - ) -> Result<(), Error> { + ) -> Result<(), Error<$crate::[<$runtime _runtime_exports>]::Runtime>> { use $crate::[<$runtime _runtime_exports>]::*; let mut ext = crate::create_election_ext::(shared.uri.clone(), None, vec![]).await?; ext.execute_with(|| { assert!(EPM::Pallet::::current_phase().is_emergency()); // NOTE: this internally calls feasibility_check, but we just re-do it here as an easy way // to get a `ReadySolution`. - let (raw_solution, _) = >::mine_solution(50)?; + let (raw_solution, _) = + >::mine_solution::>()?; log::info!(target: LOG_TARGET, "mined solution with {:?}", &raw_solution.score); let ready_solution = EPM::Pallet::::feasibility_check(raw_solution, EPM::ElectionCompute::Signed)?; let encoded_ready = ready_solution.encode(); diff --git a/utils/staking-miner/src/main.rs b/utils/staking-miner/src/main.rs index 1769382e62af..45140323807f 100644 --- a/utils/staking-miner/src/main.rs +++ b/utils/staking-miner/src/main.rs @@ -38,9 +38,11 @@ mod signer; pub(crate) use prelude::*; pub(crate) use signer::get_account_info; +use frame_election_provider_support::NposSolver; use frame_support::traits::Get; use jsonrpsee_ws_client::{WsClient, WsClientBuilder}; use remote_externalities::{Builder, Mode, OnlineConfig}; +use sp_npos_elections::ExtendedBalance; use sp_runtime::traits::Block as BlockT; use structopt::StructOpt; @@ -193,15 +195,43 @@ macro_rules! any_runtime { } } -#[derive(Debug, thiserror::Error)] -enum Error { +/// Same as [`any_runtime`], but instead of returning a `Result`, this simply returns `()`. Useful +/// for situations where the result is not useful and un-ergonomic to handle. +#[macro_export] +macro_rules! any_runtime_unit { + ($($code:tt)*) => { + unsafe { + match $crate::RUNTIME { + $crate::AnyRuntime::Polkadot => { + #[allow(unused)] + use $crate::polkadot_runtime_exports::*; + let _ = $($code)*; + }, + $crate::AnyRuntime::Kusama => { + #[allow(unused)] + use $crate::kusama_runtime_exports::*; + let _ = $($code)*; + }, + $crate::AnyRuntime::Westend => { + #[allow(unused)] + use $crate::westend_runtime_exports::*; + let _ = $($code)*; + } + } + } + } +} + +#[derive(frame_support::DebugNoBound, thiserror::Error)] +enum Error { Io(#[from] std::io::Error), - Jsonrpsee(#[from] jsonrpsee_ws_client::types::Error), + JsonRpsee(#[from] jsonrpsee_ws_client::types::Error), + RpcHelperError(#[from] rpc_helpers::RpcHelperError), Codec(#[from] codec::Error), Crypto(sp_core::crypto::SecretStringError), RemoteExternalities(&'static str), - PalletMiner(EPM::unsigned::MinerError), - PalletElection(EPM::ElectionError), + PalletMiner(EPM::unsigned::MinerError), + PalletElection(EPM::ElectionError), PalletFeasibility(EPM::FeasibilityError), AccountDoesNotExists, IncorrectPhase, @@ -209,33 +239,33 @@ enum Error { VersionMismatch, } -impl From for Error { - fn from(e: sp_core::crypto::SecretStringError) -> Error { +impl From for Error { + fn from(e: sp_core::crypto::SecretStringError) -> Error { Error::Crypto(e) } } -impl From for Error { - fn from(e: EPM::unsigned::MinerError) -> Error { +impl From> for Error { + fn from(e: EPM::unsigned::MinerError) -> Error { Error::PalletMiner(e) } } -impl From for Error { - fn from(e: EPM::ElectionError) -> Error { +impl From> for Error { + fn from(e: EPM::ElectionError) -> Error { Error::PalletElection(e) } } -impl From for Error { - fn from(e: EPM::FeasibilityError) -> Error { +impl From for Error { + fn from(e: EPM::FeasibilityError) -> Error { Error::PalletFeasibility(e) } } -impl std::fmt::Display for Error { +impl std::fmt::Display for Error { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - ::fmt(self, f) + as std::fmt::Debug>::fmt(self, f) } } @@ -249,6 +279,58 @@ enum Command { EmergencySolution, } +#[derive(Debug, Clone, StructOpt)] +enum Solvers { + SeqPhragmen { + #[structopt(long, default_value = "10")] + iterations: usize, + }, + PhragMMS { + #[structopt(long, default_value = "10")] + iterations: usize, + }, +} + +/// Mine a solution with the given `solver`. +fn mine_with( + solver: &Solvers, + ext: &mut Ext, +) -> Result<(EPM::RawSolution>, u32), Error> +where + T: EPM::Config, + T::Solver: NposSolver, +{ + use frame_election_provider_support::{PhragMMS, SequentialPhragmen}; + + match solver { + Solvers::SeqPhragmen { iterations } => { + BalanceIterations::set(*iterations); + mine_unchecked::< + T, + SequentialPhragmen< + ::AccountId, + sp_runtime::Perbill, + Balancing, + >, + >(ext, false) + }, + Solvers::PhragMMS { iterations } => { + BalanceIterations::set(*iterations); + mine_unchecked::< + T, + PhragMMS<::AccountId, sp_runtime::Perbill, Balancing>, + >(ext, false) + }, + } +} + +frame_support::parameter_types! { + /// Number of balancing iterations for a solution algorithm. Set based on the [`Solvers`] CLI + /// config. + pub static BalanceIterations: usize = 10; + pub static Balancing: Option<(usize, ExtendedBalance)> = Some((BalanceIterations::get(), 0)); +} + #[derive(Debug, Clone, StructOpt)] struct MonitorConfig { /// They type of event to listen to. @@ -259,8 +341,8 @@ struct MonitorConfig { #[structopt(long, default_value = "head", possible_values = &["head", "finalized"])] listen: String, - #[structopt(long, short, default_value = "10")] - iterations: usize, + #[structopt(subcommand)] + solver: Solvers, } #[derive(Debug, Clone, StructOpt)] @@ -269,8 +351,8 @@ struct DryRunConfig { #[structopt(long)] at: Option, - #[structopt(long, short, default_value = "10")] - iterations: usize, + #[structopt(subcommand)] + solver: Solvers, } #[derive(Debug, Clone, StructOpt)] @@ -303,7 +385,7 @@ async fn create_election_ext( uri: String, at: Option, additional: Vec, -) -> Result { +) -> Result> { use frame_support::{storage::generator::StorageMap, traits::PalletInfo}; use sp_core::hashing::twox_128; @@ -327,13 +409,20 @@ async fn create_election_ext( /// Compute the election at the given block number. It expects to NOT be `Phase::Off`. In other /// words, the snapshot must exists on the given externalities. -fn mine_unchecked( +fn mine_unchecked( ext: &mut Ext, - iterations: usize, do_feasibility: bool, -) -> Result<(EPM::RawSolution>, u32), Error> { +) -> Result<(EPM::RawSolution>, u32), Error> +where + T: EPM::Config, + S: NposSolver< + Error = <::Solver as NposSolver>::Error, + AccountId = <::Solver as NposSolver>::AccountId, + >, +{ ext.execute_with(|| { - let (solution, _) = >::mine_solution(iterations)?; + let (solution, _) = + >::mine_solution::().map_err::, _>(Into::into)?; if do_feasibility { let _ = >::feasibility_check( solution.clone(), @@ -346,7 +435,7 @@ fn mine_unchecked( } #[allow(unused)] -fn mine_dpos(ext: &mut Ext) -> Result<(), Error> { +fn mine_dpos(ext: &mut Ext) -> Result<(), Error> { ext.execute_with(|| { use std::collections::BTreeMap; use EPM::RoundSnapshot; @@ -383,10 +472,10 @@ fn mine_dpos(ext: &mut Ext) -> Result<(), Error> { }) } -pub(crate) async fn check_versions( +pub(crate) async fn check_versions( client: &WsClient, print: bool, -) -> Result<(), Error> { +) -> Result<(), Error> { let linked_version = T::Version::get(); let on_chain_version = rpc_helpers::rpc::( client, @@ -486,7 +575,7 @@ async fn main() { } log::info!(target: LOG_TARGET, "connected to chain {:?}", chain); - let _ = any_runtime! { + any_runtime_unit! { check_versions::(&client, true).await }; @@ -498,9 +587,18 @@ async fn main() { let outcome = any_runtime! { match command.clone() { - Command::Monitor(c) => monitor_cmd(&client, shared, c, signer_account).await, - Command::DryRun(c) => dry_run_cmd(&client, shared, c, signer_account).await, - Command::EmergencySolution => emergency_solution_cmd(shared.clone()).await, + Command::Monitor(c) => monitor_cmd(&client, shared, c, signer_account).await + .map_err(|e| { + log::error!(target: LOG_TARGET, "Monitor error: {:?}", e); + }), + Command::DryRun(c) => dry_run_cmd(&client, shared, c, signer_account).await + .map_err(|e| { + log::error!(target: LOG_TARGET, "DryRun error: {:?}", e); + }), + Command::EmergencySolution => emergency_solution_cmd(shared.clone()).await + .map_err(|e| { + log::error!(target: LOG_TARGET, "EmergencySolution error: {:?}", e); + }), } }; log::info!(target: LOG_TARGET, "round of execution finished. outcome = {:?}", outcome); diff --git a/utils/staking-miner/src/monitor.rs b/utils/staking-miner/src/monitor.rs index d6ea12401d82..396700335dd7 100644 --- a/utils/staking-miner/src/monitor.rs +++ b/utils/staking-miner/src/monitor.rs @@ -30,10 +30,11 @@ use sc_transaction_pool_api::TransactionStatus; async fn ensure_signed_phase( client: &WsClient, at: B::Hash, -) -> Result<(), Error> { +) -> Result<(), Error> { let key = sp_core::storage::StorageKey(EPM::CurrentPhase::::hashed_key().to_vec()); let phase = get_storage::>(client, params! {key, at}) - .await? + .await + .map_err::, _>(Into::into)? .unwrap_or_default(); if phase.is_signed() { @@ -50,7 +51,7 @@ async fn ensure_no_previous_solution< >( ext: &mut Ext, us: &AccountId, -) -> Result<(), Error> { +) -> Result<(), Error> { use EPM::signed::SignedSubmissions; ext.execute_with(|| { if >::get().iter().any(|ss| &ss.who == us) { @@ -68,7 +69,7 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { shared: SharedConfig, config: MonitorConfig, signer: Signer, - ) -> Result<(), Error> { + ) -> Result<(), Error<$crate::[<$runtime _runtime_exports>]::Runtime>> { use $crate::[<$runtime _runtime_exports>]::*; let (sub, unsub) = if config.listen == "head" { ("chain_subscribeNewHeads", "chain_unsubscribeNewHeads") @@ -109,7 +110,8 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { continue; } - let (raw_solution, witness) = crate::mine_unchecked::(&mut ext, config.iterations, true)?; + let (raw_solution, witness) = crate::mine_with::(&config.solver, &mut ext)?; + log::info!(target: LOG_TARGET, "mined solution with {:?}", &raw_solution.score); let nonce = crate::get_account_info::(client, &signer.account, Some(hash)) @@ -149,8 +151,7 @@ macro_rules! monitor_cmd_for { ($runtime:tt) => { paste::paste! { TransactionStatus::InBlock(hash) => { log::info!(target: LOG_TARGET, "included at {:?}", hash); let key = frame_support::storage::storage_prefix(b"System", b"Events"); - let events =get_storage::< - Vec::Hash>> + let events = get_storage::::Hash>>, >(client, params!{ key, hash }).await?.unwrap_or_default(); log::info!(target: LOG_TARGET, "events at inclusion {:?}", events); } diff --git a/utils/staking-miner/src/rpc_helpers.rs b/utils/staking-miner/src/rpc_helpers.rs index cc086b1235b1..8cb7330bf0de 100644 --- a/utils/staking-miner/src/rpc_helpers.rs +++ b/utils/staking-miner/src/rpc_helpers.rs @@ -20,6 +20,18 @@ use super::*; use jsonrpsee_ws_client::types::traits::Client; pub(crate) use jsonrpsee_ws_client::types::v2::params::JsonRpcParams; +#[derive(frame_support::DebugNoBound, thiserror::Error)] +pub(crate) enum RpcHelperError { + JsonRpsee(#[from] jsonrpsee_ws_client::types::Error), + Codec(#[from] codec::Error), +} + +impl std::fmt::Display for RpcHelperError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + ::fmt(self, f) + } +} + #[macro_export] macro_rules! params { ($($param:expr),*) => { @@ -41,8 +53,11 @@ pub(crate) async fn rpc<'a, Ret: serde::de::DeserializeOwned>( client: &WsClient, method: &'a str, params: JsonRpcParams<'a>, -) -> Result { - client.request::(method, params).await.map_err(Into::into) +) -> Result { + client + .request::(method, params) + .await + .map_err::(Into::into) } /// Make the rpc request, decode the outcome into `Dec`. Don't use for storage, it will fail for @@ -51,57 +66,26 @@ pub(crate) async fn rpc_decode<'a, Dec: codec::Decode>( client: &WsClient, method: &'a str, params: JsonRpcParams<'a>, -) -> Result { - let bytes = rpc::(client, method, params).await?; - ::decode(&mut &*bytes.0).map_err(Into::into) +) -> Result { + let bytes = rpc::(client, method, params) + .await + .map_err::(Into::into)?; + ::decode(&mut &*bytes.0).map_err::(Into::into) } /// Get the storage item. pub(crate) async fn get_storage<'a, T: codec::Decode>( client: &WsClient, params: JsonRpcParams<'a>, -) -> Result, Error> { - let maybe_bytes = rpc::>(client, "state_getStorage", params).await?; +) -> Result, RpcHelperError> { + let maybe_bytes = rpc::>(client, "state_getStorage", params) + .await + .map_err::(Into::into)?; if let Some(bytes) = maybe_bytes { - let decoded = ::decode(&mut &*bytes.0)?; + let decoded = ::decode(&mut &*bytes.0) + .map_err::(Into::into)?; Ok(Some(decoded)) } else { Ok(None) } } - -use codec::{EncodeLike, FullCodec}; -use frame_support::storage::{StorageMap, StorageValue}; -#[allow(unused)] -pub(crate) async fn get_storage_value_frame_v2<'a, V: StorageValue, T: FullCodec, Hash>( - client: &WsClient, - maybe_at: Option, -) -> Result, Error> -where - V::Query: codec::Decode, - Hash: serde::Serialize, -{ - let key = >::hashed_key(); - get_storage::(client, params! { key, maybe_at }).await -} - -#[allow(unused)] -pub(crate) async fn get_storage_map_frame_v2< - 'a, - Hash, - KeyArg: EncodeLike, - K: FullCodec, - T: FullCodec, - M: StorageMap, ->( - client: &WsClient, - key: KeyArg, - maybe_at: Option, -) -> Result, Error> -where - M::Query: codec::Decode, - Hash: serde::Serialize, -{ - let key = >::hashed_key_for(key); - get_storage::(client, params! { key, maybe_at }).await -} diff --git a/utils/staking-miner/src/signer.rs b/utils/staking-miner/src/signer.rs index 8dd2696b3309..bc996ef351de 100644 --- a/utils/staking-miner/src/signer.rs +++ b/utils/staking-miner/src/signer.rs @@ -34,11 +34,11 @@ pub(crate) struct Signer { pub(crate) pair: Pair, } -pub(crate) async fn get_account_info( +pub(crate) async fn get_account_info( client: &WsClient, who: &T::AccountId, maybe_at: Option, -) -> Result>, Error> { +) -> Result>, Error> { rpc_helpers::get_storage::>( client, crate::params! { @@ -47,26 +47,27 @@ pub(crate) async fn get_account_info( }, ) .await + .map_err(Into::into) } /// Read the signer account's URI pub(crate) async fn signer_uri_from_string< T: frame_system::Config< - AccountId = AccountId, - Index = Index, - AccountData = pallet_balances::AccountData, - >, + AccountId = AccountId, + Index = Index, + AccountData = pallet_balances::AccountData, + > + EPM::Config, >( seed: &str, client: &WsClient, -) -> Result { +) -> Result> { let seed = seed.trim(); let pair = Pair::from_string(seed, None)?; let account = T::AccountId::from(pair.public()); let _info = get_account_info::(client, &account, None) .await? - .ok_or(Error::AccountDoesNotExists)?; + .ok_or(Error::::AccountDoesNotExists)?; log::info!( target: LOG_TARGET, "loaded account {:?}, free: {:?}, info: {:?}", From a1399fba44e37e0f07b4a91b2a0c93d19693f86f Mon Sep 17 00:00:00 2001 From: Ricardo Rius <9488369+riusricardo@users.noreply.github.com> Date: Fri, 10 Sep 2021 12:26:51 +0200 Subject: [PATCH 018/138] Add Canvas (#3823) --- runtime/rococo/src/lib.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index de9e65eb0584..3da4fba66ec4 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -628,6 +628,7 @@ parameter_types! { pub const RococoForTrick: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(110).into()); pub const RococoForTrack: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(120).into()); pub const RococoForStatemint: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(1001).into()); + pub const RococoForCanvas: (MultiAssetFilter, MultiLocation) = (Rococo::get(), Parachain(1002).into()); pub const MaxInstructions: u32 = 100; } pub type TrustedTeleporters = ( @@ -635,6 +636,7 @@ pub type TrustedTeleporters = ( xcm_builder::Case, xcm_builder::Case, xcm_builder::Case, + xcm_builder::Case, ); parameter_types! { @@ -644,6 +646,7 @@ parameter_types! { Parachain(110).into(), Parachain(120).into(), Parachain(1001).into(), + Parachain(1002).into(), ]; } From 7229ab87acf5bc5d4d10655ad1a9819a1e317442 Mon Sep 17 00:00:00 2001 From: Sergei Shulepov Date: Fri, 10 Sep 2021 15:40:53 +0200 Subject: [PATCH 019/138] Add logging for worker spawn failures (#3827) --- node/core/pvf/src/worker_common.rs | 34 +++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/node/core/pvf/src/worker_common.rs b/node/core/pvf/src/worker_common.rs index 34bfc7cf28ed..9c68eaeeb0fb 100644 --- a/node/core/pvf/src/worker_common.rs +++ b/node/core/pvf/src/worker_common.rs @@ -47,14 +47,38 @@ pub async fn spawn_with_program_path( with_transient_socket_path(debug_id, |socket_path| { let socket_path = socket_path.to_owned(); async move { - let listener = UnixListener::bind(&socket_path).await.map_err(|_| SpawnErr::Bind)?; - - let handle = WorkerHandle::spawn(program_path, extra_args, socket_path) - .map_err(|_| SpawnErr::ProcessSpawn)?; + let listener = UnixListener::bind(&socket_path).await.map_err(|err| { + tracing::warn!( + target: LOG_TARGET, + %debug_id, + "cannot bind unix socket: {:?}", + err, + ); + SpawnErr::Bind + })?; + + let handle = + WorkerHandle::spawn(program_path, extra_args, socket_path).map_err(|err| { + tracing::warn!( + target: LOG_TARGET, + %debug_id, + "cannot spawn a worker: {:?}", + err, + ); + SpawnErr::ProcessSpawn + })?; futures::select! { accept_result = listener.accept().fuse() => { - let (stream, _) = accept_result.map_err(|_| SpawnErr::Accept)?; + let (stream, _) = accept_result.map_err(|err| { + tracing::warn!( + target: LOG_TARGET, + %debug_id, + "cannot accept a worker: {:?}", + err, + ); + SpawnErr::Accept + })?; Ok((IdleWorker { stream, pid: handle.id() }, handle)) } _ = Delay::new(spawn_timeout).fuse() => { From ecde280246beae44eb6a05d2e38c94de3b5f07d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Sun, 12 Sep 2021 15:25:58 +0200 Subject: [PATCH 020/138] Substrate Companion #9737 (#3830) Co-authored-by: parity-processbot <> Co-authored-by: kianenigma --- Cargo.lock | 312 +++++++++--------- cli/src/command.rs | 5 +- node/test/polkadot-simnet/common/src/lib.rs | 9 +- node/test/service/Cargo.toml | 1 + node/test/service/src/lib.rs | 16 +- node/test/service/tests/build-blocks.rs | 16 +- node/test/service/tests/call-function.rs | 6 +- .../adder/collator/tests/integration.rs | 8 +- 8 files changed, 187 insertions(+), 186 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e7e0bb98fb2f..7170b70f6f48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "sp-api", @@ -4530,7 +4530,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4582,7 +4582,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4731,7 +4731,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4746,7 +4746,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4786,7 +4786,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4822,7 +4822,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4837,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4856,7 +4856,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4872,7 +4872,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4888,7 +4888,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4905,7 +4905,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -4921,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -4952,7 +4952,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -4981,7 +4981,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5017,7 +5017,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -5030,7 +5030,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5045,7 +5045,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -5065,7 +5065,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5081,7 +5081,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -5094,7 +5094,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "sp-arithmetic", @@ -5136,7 +5136,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -5149,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5166,7 +5166,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5181,7 +5181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-support", "frame-system", @@ -5197,7 +5197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5214,7 +5214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5225,7 +5225,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5241,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -5256,7 +5256,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-benchmarking", "frame-support", @@ -7219,9 +7219,9 @@ checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" dependencies = [ "unicode-xid", ] @@ -7647,7 +7647,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7906,7 +7906,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "sp-core", @@ -7917,7 +7917,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "derive_more", @@ -7944,7 +7944,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7967,7 +7967,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7983,7 +7983,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7999,7 +7999,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8010,7 +8010,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "chrono", "fdlimit", @@ -8048,7 +8048,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "fnv", "futures 0.3.17", @@ -8076,7 +8076,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "hash-db", "kvdb", @@ -8101,7 +8101,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "futures 0.3.17", @@ -8125,7 +8125,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "derive_more", @@ -8168,7 +8168,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "derive_more", "futures 0.3.17", @@ -8192,7 +8192,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "assert_matches", "async-trait", @@ -8239,7 +8239,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "futures 0.3.17", @@ -8265,7 +8265,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "sc-client-api", "sp-authorship", @@ -8276,7 +8276,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8302,7 +8302,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "derive_more", "environmental", @@ -8320,7 +8320,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "parity-scale-codec", @@ -8336,7 +8336,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8355,7 +8355,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "derive_more", @@ -8392,7 +8392,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "derive_more", "finality-grandpa", @@ -8416,7 +8416,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8433,7 +8433,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "derive_more", @@ -8448,7 +8448,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "hash-db", "parity-scale-codec", @@ -8466,7 +8466,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-std", "async-trait", @@ -8517,7 +8517,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8533,7 +8533,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "bytes 1.0.1", "fnv", @@ -8560,7 +8560,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "libp2p", @@ -8573,7 +8573,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8582,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "hash-db", @@ -8613,7 +8613,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8638,7 +8638,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8649,12 +8649,13 @@ dependencies = [ "log", "serde_json", "substrate-prometheus-endpoint", + "tokio", ] [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "directories", @@ -8711,6 +8712,7 @@ dependencies = [ "substrate-prometheus-endpoint", "tempfile", "thiserror", + "tokio", "tracing", "tracing-futures", ] @@ -8718,7 +8720,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "parity-scale-codec", @@ -8732,7 +8734,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8754,7 +8756,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "chrono", "futures 0.3.17", @@ -8772,7 +8774,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8801,7 +8803,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8812,7 +8814,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "intervalier", @@ -8839,7 +8841,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "derive_more", "futures 0.3.17", @@ -8853,7 +8855,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9284,7 +9286,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "hash-db", "log", @@ -9301,7 +9303,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9313,7 +9315,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "serde", @@ -9325,7 +9327,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "integer-sqrt", "num-traits", @@ -9339,7 +9341,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sp-api", @@ -9351,7 +9353,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "parity-scale-codec", @@ -9363,7 +9365,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sp-api", @@ -9375,7 +9377,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "log", @@ -9393,7 +9395,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "futures 0.3.17", @@ -9412,7 +9414,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "merlin", @@ -9434,7 +9436,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9444,7 +9446,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9456,7 +9458,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "base58", "blake2-rfc", @@ -9500,7 +9502,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9509,7 +9511,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro2", "quote", @@ -9519,7 +9521,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "environmental", "parity-scale-codec", @@ -9530,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "finality-grandpa", "log", @@ -9547,7 +9549,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9561,7 +9563,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "hash-db", @@ -9586,7 +9588,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "lazy_static", "sp-core", @@ -9597,7 +9599,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "derive_more", @@ -9614,7 +9616,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "zstd", ] @@ -9622,7 +9624,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "serde", @@ -9636,7 +9638,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9647,7 +9649,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "sp-api", "sp-core", @@ -9657,7 +9659,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "backtrace", ] @@ -9665,7 +9667,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "rustc-hash", "serde", @@ -9675,7 +9677,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "either", "hash256-std-hasher", @@ -9696,7 +9698,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9713,7 +9715,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9725,7 +9727,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "serde", "serde_json", @@ -9734,7 +9736,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sp-api", @@ -9747,7 +9749,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9757,7 +9759,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "hash-db", "log", @@ -9780,12 +9782,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9798,7 +9800,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "sp-core", @@ -9811,7 +9813,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9827,7 +9829,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "erased-serde", "log", @@ -9845,7 +9847,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "sp-api", "sp-runtime", @@ -9854,7 +9856,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "log", @@ -9869,7 +9871,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "hash-db", "memory-db", @@ -9883,7 +9885,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9898,7 +9900,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9909,7 +9911,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10105,7 +10107,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "platforms", ] @@ -10113,7 +10115,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10135,7 +10137,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-std", "derive_more", @@ -10149,7 +10151,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "async-trait", "futures 0.3.17", @@ -10176,7 +10178,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10186,7 +10188,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10197,7 +10199,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10350,7 +10352,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "frame-system", "futures 0.3.17", @@ -10757,7 +10759,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#f84ac630acccbfadc9f7cd8364fc43e03d743103" +source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" dependencies = [ "log", "parity-scale-codec", diff --git a/cli/src/command.rs b/cli/src/command.rs index 64a10c9a1fd9..a4f821460157 100644 --- a/cli/src/command.rs +++ b/cli/src/command.rs @@ -410,9 +410,8 @@ pub fn run() -> Result<()> { use sc_service::TaskManager; let registry = &runner.config().prometheus_config.as_ref().map(|cfg| &cfg.registry); - let task_manager = - TaskManager::new(runner.config().task_executor.clone(), *registry) - .map_err(|e| Error::SubstrateService(sc_service::Error::Prometheus(e)))?; + let task_manager = TaskManager::new(runner.config().tokio_handle.clone(), *registry) + .map_err(|e| Error::SubstrateService(sc_service::Error::Prometheus(e)))?; ensure_dev(chain_spec).map_err(Error::Other)?; diff --git a/node/test/polkadot-simnet/common/src/lib.rs b/node/test/polkadot-simnet/common/src/lib.rs index 60e1f925bbd3..1d9d76708ae1 100644 --- a/node/test/polkadot-simnet/common/src/lib.rs +++ b/node/test/polkadot-simnet/common/src/lib.rs @@ -33,8 +33,7 @@ use sp_runtime::{app_crypto::sp_core::H256, generic::Era, AccountId32}; use std::{error::Error, future::Future, str::FromStr}; use support::{weights::Weight, StorageValue}; use test_runner::{ - build_runtime, client_parts, task_executor, ChainInfo, ConfigOrChainSpec, Node, - SignatureVerificationOverride, + build_runtime, client_parts, ChainInfo, ConfigOrChainSpec, Node, SignatureVerificationOverride, }; type BlockImport = BabeBlockImport>; @@ -360,7 +359,6 @@ where use structopt::StructOpt; let tokio_runtime = build_runtime()?; - let task_executor = task_executor(tokio_runtime.handle().clone()); // parse cli args let cmd = ::from_args(); // set up logging @@ -369,7 +367,7 @@ where logger.init()?; // set up the test-runner - let config = cmd.create_configuration(&cmd.run.base, task_executor)?; + let config = cmd.create_configuration(&cmd.run.base, tokio_runtime.handle().clone())?; sc_cli::print_node_infos::(&config); let (rpc, task_manager, client, pool, command_sink, backend) = client_parts::(ConfigOrChainSpec::Config(config))?; @@ -392,11 +390,10 @@ mod tests { #[test] fn test_runner() { let runtime = build_runtime().unwrap(); - let task_executor = task_executor(runtime.handle().clone()); let (rpc, task_manager, client, pool, command_sink, backend) = client_parts::(ConfigOrChainSpec::ChainSpec( Box::new(polkadot_development_config().unwrap()), - task_executor, + runtime.handle().clone(), )) .unwrap(); let node = diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index 7eced62424cc..82df04e72cf4 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -11,6 +11,7 @@ hex = "0.4.3" tracing = "0.1.26" rand = "0.8.3" tempfile = "3.2.0" +tokio = "1.10.0" # Polkadot dependencies polkadot-overseer = { path = "../../overseer" } diff --git a/node/test/service/src/lib.rs b/node/test/service/src/lib.rs index f8207829852b..447c8afd5d4f 100644 --- a/node/test/service/src/lib.rs +++ b/node/test/service/src/lib.rs @@ -41,8 +41,7 @@ use sc_network::{ }; use service::{ config::{DatabaseSource, KeystoreConfig, MultiaddrWithPeerId, WasmExecutionMethod}, - BasePath, Configuration, KeepBlocks, Role, RpcHandlers, TaskExecutor, TaskManager, - TransactionStorageMode, + BasePath, Configuration, KeepBlocks, Role, RpcHandlers, TaskManager, TransactionStorageMode, }; use sp_arithmetic::traits::SaturatedConversion; use sp_blockchain::HeaderBackend; @@ -112,7 +111,7 @@ impl ClientHandle for TestClient { /// and can be used to make adjustments to the runtime genesis storage. pub fn node_config( storage_update_func: impl Fn(), - task_executor: TaskExecutor, + tokio_handle: tokio::runtime::Handle, key: Sr25519Keyring, boot_nodes: Vec, is_validator: bool, @@ -149,7 +148,7 @@ pub fn node_config( impl_name: "polkadot-test-node".to_string(), impl_version: "0.1".to_string(), role, - task_executor, + tokio_handle, transaction_pool: Default::default(), network: network_config, keystore: KeystoreConfig::InMemory, @@ -171,7 +170,6 @@ pub fn node_config( offchain_worker: sc_client_api::ExecutionStrategy::NativeWhenPossible, other: sc_client_api::ExecutionStrategy::NativeWhenPossible, }, - rpc_http_threads: None, rpc_http: None, rpc_ws: None, rpc_ipc: None, @@ -204,13 +202,13 @@ pub fn node_config( /// The `storage_update_func` function will be executed in an externalities provided environment /// and can be used to make adjustments to the runtime genesis storage. pub fn run_validator_node( - task_executor: TaskExecutor, + tokio_handle: tokio::runtime::Handle, key: Sr25519Keyring, storage_update_func: impl Fn(), boot_nodes: Vec, worker_program_path: Option, ) -> PolkadotTestNode { - let config = node_config(storage_update_func, task_executor, key, boot_nodes, true); + let config = node_config(storage_update_func, tokio_handle, key, boot_nodes, true); let multiaddr = config.network.listen_addresses[0].clone(); let NewFull { task_manager, client, network, rpc_handlers, overseer_handle, .. } = new_full(config, IsCollator::No, worker_program_path) @@ -236,13 +234,13 @@ pub fn run_validator_node( /// The collator functionality still needs to be registered at the node! This can be done using /// [`PolkadotTestNode::register_collator`]. pub fn run_collator_node( - task_executor: TaskExecutor, + tokio_handle: tokio::runtime::Handle, key: Sr25519Keyring, storage_update_func: impl Fn(), boot_nodes: Vec, collator_pair: CollatorPair, ) -> PolkadotTestNode { - let config = node_config(storage_update_func, task_executor, key, boot_nodes, false); + let config = node_config(storage_update_func, tokio_handle, key, boot_nodes, false); let multiaddr = config.network.listen_addresses[0].clone(); let NewFull { task_manager, client, network, rpc_handlers, overseer_handle, .. } = new_full(config, IsCollator::Yes(collator_pair), None) diff --git a/node/test/service/tests/build-blocks.rs b/node/test/service/tests/build-blocks.rs index 74bef3277bae..e32d9c941878 100644 --- a/node/test/service/tests/build-blocks.rs +++ b/node/test/service/tests/build-blocks.rs @@ -14,21 +14,25 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use futures::{future, pin_mut, select}; +use futures::{future, pin_mut, select, FutureExt}; use polkadot_test_service::*; -use service::TaskExecutor; use sp_keyring::Sr25519Keyring; #[substrate_test_utils::test] -async fn ensure_test_service_build_blocks(task_executor: TaskExecutor) { +async fn ensure_test_service_build_blocks() { let mut builder = sc_cli::LoggerBuilder::new(""); builder.with_colors(false); builder.init().expect("Sets up logger"); - let mut alice = - run_validator_node(task_executor.clone(), Sr25519Keyring::Alice, || {}, Vec::new(), None); + let mut alice = run_validator_node( + tokio::runtime::Handle::current(), + Sr25519Keyring::Alice, + || {}, + Vec::new(), + None, + ); let mut bob = run_validator_node( - task_executor.clone(), + tokio::runtime::Handle::current(), Sr25519Keyring::Bob, || {}, vec![alice.addr.clone()], diff --git a/node/test/service/tests/call-function.rs b/node/test/service/tests/call-function.rs index ce84c1ee96e2..794a9e5c43c3 100644 --- a/node/test/service/tests/call-function.rs +++ b/node/test/service/tests/call-function.rs @@ -15,12 +15,12 @@ // along with Polkadot. If not, see . use polkadot_test_service::*; -use service::TaskExecutor; use sp_keyring::Sr25519Keyring::{Alice, Bob}; #[substrate_test_utils::test] -async fn call_function_actually_work(task_executor: TaskExecutor) { - let alice = run_validator_node(task_executor, Alice, || {}, Vec::new(), None); +async fn call_function_actually_work() { + let alice = + run_validator_node(tokio::runtime::Handle::current(), Alice, || {}, Vec::new(), None); let function = polkadot_test_runtime::Call::Balances(pallet_balances::Call::transfer( Default::default(), diff --git a/parachain/test-parachains/adder/collator/tests/integration.rs b/parachain/test-parachains/adder/collator/tests/integration.rs index 3d9530d02ed9..fb922e93c596 100644 --- a/parachain/test-parachains/adder/collator/tests/integration.rs +++ b/parachain/test-parachains/adder/collator/tests/integration.rs @@ -21,7 +21,7 @@ const PUPPET_EXE: &str = env!("CARGO_BIN_EXE_adder_collator_puppet_worker"); // If this test is failing, make sure to run all tests with the `real-overseer` feature being enabled. #[substrate_test_utils::test] -async fn collating_using_adder_collator(task_executor: sc_service::TaskExecutor) { +async fn collating_using_adder_collator() { use futures::join; use polkadot_primitives::v1::Id as ParaId; use sp_keyring::AccountKeyring::*; @@ -34,7 +34,7 @@ async fn collating_using_adder_collator(task_executor: sc_service::TaskExecutor) // start alice let alice = polkadot_test_service::run_validator_node( - task_executor.clone(), + tokio::runtime::Handle::current(), Alice, || {}, vec![], @@ -43,7 +43,7 @@ async fn collating_using_adder_collator(task_executor: sc_service::TaskExecutor) // start bob let bob = polkadot_test_service::run_validator_node( - task_executor.clone(), + tokio::runtime::Handle::current(), Bob, || {}, vec![alice.addr.clone()], @@ -60,7 +60,7 @@ async fn collating_using_adder_collator(task_executor: sc_service::TaskExecutor) // run the collator node let mut charlie = polkadot_test_service::run_collator_node( - task_executor.clone(), + tokio::runtime::Handle::current(), Charlie, || {}, vec![alice.addr.clone(), bob.addr.clone()], From 48122d0220555bfd59d46e2971522cc4e7c9edf9 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Sun, 12 Sep 2021 16:23:07 +0100 Subject: [PATCH 021/138] Companion for #9648 (#3757) * make the companion * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 307 ++++++++++++++++---------------- runtime/common/Cargo.toml | 1 + runtime/common/src/elections.rs | 6 + runtime/kusama/src/lib.rs | 20 +-- runtime/polkadot/src/lib.rs | 20 +-- runtime/test-runtime/src/lib.rs | 4 +- runtime/westend/src/lib.rs | 21 +-- 7 files changed, 189 insertions(+), 190 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7170b70f6f48..d5c34e3e8eed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "sp-api", @@ -4530,7 +4530,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4582,7 +4582,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4637,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4731,7 +4731,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4746,7 +4746,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4786,7 +4786,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4800,7 +4800,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4822,7 +4822,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4837,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4856,7 +4856,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4872,7 +4872,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4888,7 +4888,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4905,7 +4905,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -4921,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -4952,7 +4952,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -4965,7 +4965,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -4981,7 +4981,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5017,7 +5017,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -5030,7 +5030,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5045,7 +5045,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -5065,7 +5065,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5081,7 +5081,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -5094,7 +5094,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5116,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "sp-arithmetic", @@ -5136,7 +5136,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -5149,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5166,7 +5166,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5181,7 +5181,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-support", "frame-system", @@ -5197,7 +5197,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5214,7 +5214,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5225,7 +5225,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5241,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -5256,7 +5256,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-benchmarking", "frame-support", @@ -6609,6 +6609,7 @@ version = "0.9.9" dependencies = [ "bitvec 0.20.1", "frame-benchmarking", + "frame-election-provider-support", "frame-support", "frame-support-test", "frame-system", @@ -7647,7 +7648,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7906,7 +7907,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "sp-core", @@ -7917,7 +7918,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "derive_more", @@ -7944,7 +7945,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7967,7 +7968,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7983,7 +7984,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7999,7 +8000,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8010,7 +8011,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "chrono", "fdlimit", @@ -8048,7 +8049,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "fnv", "futures 0.3.17", @@ -8076,7 +8077,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "hash-db", "kvdb", @@ -8101,7 +8102,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "futures 0.3.17", @@ -8125,7 +8126,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "derive_more", @@ -8168,7 +8169,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "derive_more", "futures 0.3.17", @@ -8192,7 +8193,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8205,7 +8206,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "assert_matches", "async-trait", @@ -8239,7 +8240,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "futures 0.3.17", @@ -8265,7 +8266,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "sc-client-api", "sp-authorship", @@ -8276,7 +8277,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8302,7 +8303,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "derive_more", "environmental", @@ -8320,7 +8321,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "parity-scale-codec", @@ -8336,7 +8337,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8355,7 +8356,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "derive_more", @@ -8392,7 +8393,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "derive_more", "finality-grandpa", @@ -8416,7 +8417,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8433,7 +8434,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "derive_more", @@ -8448,7 +8449,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "hash-db", "parity-scale-codec", @@ -8466,7 +8467,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-std", "async-trait", @@ -8517,7 +8518,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8533,7 +8534,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "bytes 1.0.1", "fnv", @@ -8560,7 +8561,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "libp2p", @@ -8573,7 +8574,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8582,7 +8583,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "hash-db", @@ -8613,7 +8614,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8638,7 +8639,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8655,7 +8656,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "directories", @@ -8720,7 +8721,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "parity-scale-codec", @@ -8734,7 +8735,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8756,7 +8757,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "chrono", "futures 0.3.17", @@ -8774,7 +8775,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8803,7 +8804,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8814,7 +8815,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "intervalier", @@ -8841,7 +8842,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "derive_more", "futures 0.3.17", @@ -8855,7 +8856,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9286,7 +9287,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "hash-db", "log", @@ -9303,7 +9304,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9315,7 +9316,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "serde", @@ -9327,7 +9328,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "integer-sqrt", "num-traits", @@ -9341,7 +9342,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sp-api", @@ -9353,7 +9354,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "parity-scale-codec", @@ -9365,7 +9366,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sp-api", @@ -9377,7 +9378,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "log", @@ -9395,7 +9396,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "futures 0.3.17", @@ -9414,7 +9415,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "merlin", @@ -9436,7 +9437,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9446,7 +9447,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9458,7 +9459,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "base58", "blake2-rfc", @@ -9502,7 +9503,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9511,7 +9512,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro2", "quote", @@ -9521,7 +9522,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "environmental", "parity-scale-codec", @@ -9532,7 +9533,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "finality-grandpa", "log", @@ -9549,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9563,7 +9564,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "hash-db", @@ -9588,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "lazy_static", "sp-core", @@ -9599,7 +9600,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "derive_more", @@ -9616,7 +9617,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "zstd", ] @@ -9624,7 +9625,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "serde", @@ -9638,7 +9639,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9649,7 +9650,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "sp-api", "sp-core", @@ -9659,7 +9660,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "backtrace", ] @@ -9667,7 +9668,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "rustc-hash", "serde", @@ -9677,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "either", "hash256-std-hasher", @@ -9698,7 +9699,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9715,7 +9716,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9727,7 +9728,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "serde", "serde_json", @@ -9736,7 +9737,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sp-api", @@ -9749,7 +9750,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9759,7 +9760,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "hash-db", "log", @@ -9782,12 +9783,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9800,7 +9801,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "sp-core", @@ -9813,7 +9814,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9829,7 +9830,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "erased-serde", "log", @@ -9847,7 +9848,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "sp-api", "sp-runtime", @@ -9856,7 +9857,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "log", @@ -9871,7 +9872,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "hash-db", "memory-db", @@ -9885,7 +9886,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9900,7 +9901,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9911,7 +9912,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10107,7 +10108,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "platforms", ] @@ -10115,7 +10116,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10137,7 +10138,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-std", "derive_more", @@ -10151,7 +10152,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "async-trait", "futures 0.3.17", @@ -10178,7 +10179,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10188,7 +10189,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10199,7 +10200,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10352,7 +10353,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "frame-system", "futures 0.3.17", @@ -10759,7 +10760,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#b674bd2338b645c41a7f2c21e696891c7e34500d" +source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" dependencies = [ "log", "parity-scale-codec", diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 9d3cf52efd29..9e3255969ecb 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -36,6 +36,7 @@ pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", 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 } +frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } diff --git a/runtime/common/src/elections.rs b/runtime/common/src/elections.rs index d42fe0d4dc2a..4e2b080bfc21 100644 --- a/runtime/common/src/elections.rs +++ b/runtime/common/src/elections.rs @@ -56,6 +56,12 @@ impl pallet_election_provider_multi_phase::BenchmarkingConfig for BenchmarkConfi const MAXIMUM_TARGETS: u32 = 2000; } +/// The accuracy type used for genesis election provider; +pub type OnOnChainAccuracy = sp_runtime::Perbill; + +/// The election provider of the genesis +pub type GenesisElectionOf = frame_election_provider_support::onchain::OnChainSequentialPhragmen; + /// Maximum number of iterations for balancing that will be executed in the embedded miner of /// pallet-election-provider-multi-phase. pub const MINER_MAX_ITERATIONS: u32 = 10; diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index e04b6f05038b..41686e0558f4 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -350,9 +350,6 @@ parameter_types! { pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1/10 KSM as reward pub SignedRewardBase: Balance = UNITS / 10; - // fallback: emergency phase. - pub const Fallback: pallet_election_provider_multi_phase::FallbackStrategy = - pallet_election_provider_multi_phase::FallbackStrategy::Nothing; pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // miner configs @@ -389,11 +386,10 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type MinerTxPriority = NposSolutionPriority; type DataProvider = Staking; type Solution = NposCompactSolution24; - type OnChainAccuracy = Perbill; - type Fallback = Fallback; + type Fallback = pallet_election_provider_multi_phase::NoFallback; type Solver = frame_election_provider_support::SequentialPhragmen< AccountId, - pallet_election_provider_multi_phase::SolutionAccuracyOf, + pallet_election_provider_multi_phase::SolutionAccuracyOf, runtime_common::elections::OffchainRandomBalancing, >; type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; @@ -402,7 +398,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime { EnsureRoot, pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, >; - type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; + type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; } fn era_payout( @@ -483,6 +479,11 @@ type SlashCancelOrigin = EnsureOneOf< pallet_collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>, >; +impl frame_election_provider_support::onchain::Config for Runtime { + type Accuracy = runtime_common::elections::OnOnChainAccuracy; + type DataProvider = Staking; +} + impl pallet_staking::Config for Runtime { const MAX_NOMINATIONS: u32 = ::LIMIT as u32; @@ -490,10 +491,7 @@ impl pallet_staking::Config for Runtime { type UnixTime = Timestamp; type CurrencyToVote = CurrencyToVote; type ElectionProvider = ElectionProviderMultiPhase; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen< - pallet_election_provider_multi_phase::OnChainConfig, - >; + type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; type RewardRemainder = Treasury; type Event = Event; type Slash = Treasury; diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 15f394355b2a..9210d74fc643 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -356,9 +356,6 @@ parameter_types! { pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1 DOT as reward pub SignedRewardBase: Balance = 1 * UNITS; - // fallback: emergency phase. - pub const Fallback: pallet_election_provider_multi_phase::FallbackStrategy = - pallet_election_provider_multi_phase::FallbackStrategy::Nothing; pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // miner configs @@ -394,12 +391,11 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type OffchainRepeat = OffchainRepeat; type MinerTxPriority = NposSolutionPriority; type DataProvider = Staking; - type OnChainAccuracy = Perbill; type Solution = NposCompactSolution16; - type Fallback = Fallback; + type Fallback = pallet_election_provider_multi_phase::NoFallback; type Solver = frame_election_provider_support::SequentialPhragmen< AccountId, - pallet_election_provider_multi_phase::SolutionAccuracyOf, + pallet_election_provider_multi_phase::SolutionAccuracyOf, runtime_common::elections::OffchainRandomBalancing, >; type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; @@ -408,7 +404,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime { EnsureRoot, pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, >; - type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; + type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; } // TODO #6469: This shouldn't be static, but a lazily cached value, not built unless needed, and @@ -443,6 +439,11 @@ type SlashCancelOrigin = EnsureOneOf< pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>, >; +impl frame_election_provider_support::onchain::Config for Runtime { + type Accuracy = runtime_common::elections::OnOnChainAccuracy; + type DataProvider = Staking; +} + impl pallet_staking::Config for Runtime { const MAX_NOMINATIONS: u32 = ::LIMIT as u32; @@ -463,10 +464,7 @@ impl pallet_staking::Config for Runtime { type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type NextNewSession = Session; type ElectionProvider = ElectionProviderMultiPhase; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen< - pallet_election_provider_multi_phase::OnChainConfig, - >; + type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; type WeightInfo = weights::pallet_staking::WeightInfo; } diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index a82836deefaa..723ee4495846 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -314,9 +314,7 @@ parameter_types! { } impl frame_election_provider_support::onchain::Config for Runtime { - type AccountId = ::AccountId; - type BlockNumber = ::BlockNumber; - type Accuracy = sp_runtime::Perbill; + type Accuracy = runtime_common::elections::OnOnChainAccuracy; type DataProvider = Staking; } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index c99c811cb031..24e522ef409c 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -335,10 +335,6 @@ parameter_types! { pub const SignedDepositByte: Balance = deposit(0, 10) / 1024; // Each good submission will get 1 WND as reward pub SignedRewardBase: Balance = 1 * UNITS; - // fallback: emergency phase. - pub const Fallback: pallet_election_provider_multi_phase::FallbackStrategy = - pallet_election_provider_multi_phase::FallbackStrategy::Nothing; - pub SolutionImprovementThreshold: Perbill = Perbill::from_rational(5u32, 10_000); // miner configs @@ -374,17 +370,16 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type OffchainRepeat = OffchainRepeat; type MinerTxPriority = NposSolutionPriority; type DataProvider = Staking; - type OnChainAccuracy = Perbill; type Solution = NposCompactSolution16; - type Fallback = Fallback; + type Fallback = pallet_election_provider_multi_phase::NoFallback; type Solver = frame_election_provider_support::SequentialPhragmen< AccountId, - pallet_election_provider_multi_phase::SolutionAccuracyOf, + pallet_election_provider_multi_phase::SolutionAccuracyOf, runtime_common::elections::OffchainRandomBalancing, >; type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; type ForceOrigin = EnsureRoot; - type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; + type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; } pallet_staking_reward_curve::build! { @@ -409,6 +404,11 @@ parameter_types! { pub const MaxNominatorRewardedPerValidator: u32 = 64; } +impl frame_election_provider_support::onchain::Config for Runtime { + type Accuracy = runtime_common::elections::OnOnChainAccuracy; + type DataProvider = Staking; +} + impl pallet_staking::Config for Runtime { const MAX_NOMINATIONS: u32 = ::LIMIT as u32; @@ -429,10 +429,7 @@ impl pallet_staking::Config for Runtime { type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; type NextNewSession = Session; type ElectionProvider = ElectionProviderMultiPhase; - type GenesisElectionProvider = - frame_election_provider_support::onchain::OnChainSequentialPhragmen< - pallet_election_provider_multi_phase::OnChainConfig, - >; + type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; type WeightInfo = weights::pallet_staking::WeightInfo; } From 0f61cb8c44d180c752572e168599522529119638 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Mon, 13 Sep 2021 12:28:33 +0200 Subject: [PATCH 022/138] make polkadot-runtime optional feature (#3820) * make polkadot-runtime optional feature * sprinkle some cfg statements * ok * ok, ok * add CI check * set -e * chmod +x * fixes * fmt * nicer compile errors * Update outdated comments --- .gitlab-ci.yml | 11 ++++ cli/Cargo.toml | 5 +- cli/src/command.rs | 51 +++++++++++----- cli/src/lib.rs | 7 ++- node/client/Cargo.toml | 4 +- node/client/src/lib.rs | 12 ++++ node/service/Cargo.toml | 10 +-- node/service/src/chain_spec.rs | 31 ++++++++-- node/service/src/lib.rs | 67 +++++++++++++++------ scripts/gitlab/check_no_default_features.sh | 6 ++ 10 files changed, 152 insertions(+), 52 deletions(-) create mode 100755 scripts/gitlab/check_no_default_features.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 530e00c1c227..4c978e1484f8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -223,6 +223,17 @@ check-runtime-benchmarks: - ./scripts/gitlab/check_runtime_benchmarks.sh - sccache -s +check-no-default-features: + stage: test + <<: *rules-test + <<: *docker-env + <<: *compiler-info + <<: *vault-secrets + script: + # Check that polkadot-cli will compile no default features. + - ./scripts/gitlab/check_no_default_features.sh + - sccache -s + spellcheck: stage: test <<: *docker-env diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 27dc1a000206..7d56222f313e 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -36,7 +36,7 @@ sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master", substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } [features] -default = [ "wasmtime", "db", "cli", "full-node", "trie-memory-tracker" ] +default = [ "wasmtime", "db", "cli", "full-node", "trie-memory-tracker", "polkadot-native" ] wasmtime = [ "sc-cli/wasmtime" ] db = [ "service/db" ] cli = [ @@ -59,9 +59,10 @@ trie-memory-tracker = [ "sp-trie/memory-tracker" ] full-node = [ "service/full-node" ] try-runtime = [ "service/try-runtime" ] -# Configure the native runtimes to use. Polkadot is always enabled by default. +# Configure the native runtimes to use. Polkadot is enabled by default. # # Validators require the native runtime currently +polkadot-native = [ "service/polkadot-native" ] kusama-native = [ "service/kusama-native" ] westend-native = [ "service/westend-native" ] rococo-native = [ "service/rococo-native" ] diff --git a/cli/src/command.rs b/cli/src/command.rs index a4f821460157..c9ba571e828c 100644 --- a/cli/src/command.rs +++ b/cli/src/command.rs @@ -102,8 +102,11 @@ impl SubstrateCli for Cli { name if name.starts_with("kusama-") && !name.ends_with(".json") => Err(format!("`{}` only supported with `kusama-native` feature enabled.", name))?, "polkadot" => Box::new(service::chain_spec::polkadot_config()?), + #[cfg(feature = "polkadot-native")] "polkadot-dev" | "dev" => Box::new(service::chain_spec::polkadot_development_config()?), + #[cfg(feature = "polkadot-native")] "polkadot-local" => Box::new(service::chain_spec::polkadot_local_testnet_config()?), + #[cfg(feature = "polkadot-native")] "polkadot-staging" => Box::new(service::chain_spec::polkadot_staging_testnet_config()?), "rococo" => Box::new(service::chain_spec::rococo_config()?), #[cfg(feature = "rococo-native")] @@ -177,7 +180,13 @@ impl SubstrateCli for Cli { )))] let _ = spec; - &service::polkadot_runtime::VERSION + #[cfg(feature = "polkadot-native")] + { + return &service::polkadot_runtime::VERSION + } + + #[cfg(not(feature = "polkadot-native"))] + panic!("No runtime feature (polkadot, kusama, westend, rococo) is enabled") } } @@ -394,12 +403,17 @@ pub fn run() -> Result<()> { } // else we assume it is polkadot. - Ok(runner.sync_run(|config| { - cmd.run::( - config, - ) - .map_err(|e| Error::SubstrateCli(e)) - })?) + #[cfg(feature = "polkadot-native")] + { + return Ok(runner.sync_run(|config| { + cmd.run::( + config, + ) + .map_err(|e| Error::SubstrateCli(e)) + })?) + } + #[cfg(not(feature = "polkadot-native"))] + panic!("No runtime feature (polkadot, kusama, westend, rococo) is enabled") }, Some(Subcommand::Key(cmd)) => Ok(cmd.run(&cli)?), #[cfg(feature = "try-runtime")] @@ -441,15 +455,20 @@ pub fn run() -> Result<()> { }) } // else we assume it is polkadot. - runner.async_run(|config| { - Ok(( - cmd.run::( - config, - ) - .map_err(Error::SubstrateCli), - task_manager, - )) - }) + #[cfg(feature = "polkadot-native")] + { + return runner.async_run(|config| { + Ok(( + cmd.run::( + config, + ) + .map_err(Error::SubstrateCli), + task_manager, + )) + }) + } + #[cfg(not(feature = "polkadot-native"))] + panic!("No runtime feature (polkadot, kusama, westend, rococo) is enabled") }, #[cfg(not(feature = "try-runtime"))] Some(Subcommand::TryRuntime) => Err(Error::Other( diff --git a/cli/src/lib.rs b/cli/src/lib.rs index bdd230fa2b5a..b7b45ed66a56 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -23,9 +23,10 @@ mod cli; #[cfg(feature = "cli")] mod command; -pub use service::{ - self, Block, CoreApi, IdentifyVariant, ProvideRuntimeApi, RuntimeApiCollection, TFullClient, -}; +#[cfg(feature = "full-node")] +pub use service::RuntimeApiCollection; +#[cfg(feature = "service")] +pub use service::{self, Block, CoreApi, IdentifyVariant, ProvideRuntimeApi, TFullClient}; #[cfg(feature = "malus")] pub use service::create_default_subsystems; diff --git a/node/client/Cargo.toml b/node/client/Cargo.toml index 15daaac2262e..63dd404ffcde 100644 --- a/node/client/Cargo.toml +++ b/node/client/Cargo.toml @@ -32,7 +32,7 @@ pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branc beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } # Polkadot Runtimes -polkadot-runtime = { path = "../../runtime/polkadot" } +polkadot-runtime = { path = "../../runtime/polkadot", optional = true } kusama-runtime = { path = "../../runtime/kusama", optional = true } westend-runtime = { path = "../../runtime/westend", optional = true } rococo-runtime = { path = "../../runtime/rococo", optional = true } @@ -40,6 +40,8 @@ rococo-runtime = { path = "../../runtime/rococo", optional = true } polkadot-primitives = { path = "../../primitives" } [features] +default = ["polkadot"] +polkadot = ["polkadot-runtime"] kusama = ["kusama-runtime"] rococo = ["rococo-runtime"] westend = ["westend-runtime"] diff --git a/node/client/src/lib.rs b/node/client/src/lib.rs index 4c4ff100820d..d9166bb50c60 100644 --- a/node/client/src/lib.rs +++ b/node/client/src/lib.rs @@ -40,9 +40,19 @@ pub type FullBackend = sc_service::TFullBackend; pub type FullClient = sc_service::TFullClient>; +#[cfg(not(any( + feature = "rococo", + feature = "kusama", + feature = "westend", + feature = "polkadot" +)))] +compile_error!("at least one runtime feature must be enabled"); + /// The native executor instance for Polkadot. +#[cfg(feature = "polkadot")] pub struct PolkadotExecutorDispatch; +#[cfg(feature = "polkadot")] impl sc_executor::NativeExecutionDispatch for PolkadotExecutorDispatch { type ExtendHostFunctions = frame_benchmarking::benchmarking::HostFunctions; @@ -233,6 +243,7 @@ macro_rules! with_client { } } => { match $self { + #[cfg(feature = "polkadot")] Self::Polkadot($client) => { $( $code )* }, #[cfg(feature = "westend")] Self::Westend($client) => { $( $code )* }, @@ -249,6 +260,7 @@ macro_rules! with_client { /// See [`ExecuteWithClient`] for more information. #[derive(Clone)] pub enum Client { + #[cfg(feature = "polkadot")] Polkadot(Arc>), #[cfg(feature = "westend")] Westend(Arc>), diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 054967155bd1..80178da11090 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -72,7 +72,7 @@ async-trait = "0.1.51" # Polkadot polkadot-node-core-parachains-inherent = { path = "../core/parachains-inherent" } polkadot-overseer = { path = "../overseer" } -polkadot-client = { path = "../client" } +polkadot-client = { path = "../client", default-features = false, optional = true } polkadot-parachain = { path = "../../parachain" } polkadot-primitives = { path = "../../primitives" } polkadot-node-primitives = { path = "../primitives" } @@ -83,7 +83,7 @@ polkadot-runtime-parachains = { path = "../../runtime/parachains" } polkadot-node-network-protocol = { path = "../network/protocol" } # Polkadot Runtimes -polkadot-runtime = { path = "../../runtime/polkadot" } +polkadot-runtime = { path = "../../runtime/polkadot", optional = true } kusama-runtime = { path = "../../runtime/kusama", optional = true } westend-runtime = { path = "../../runtime/westend", optional = true } rococo-runtime = { path = "../../runtime/rococo", optional = true } @@ -119,7 +119,7 @@ log = "0.4.14" assert_matches = "1.5.0" [features] -default = ["db", "full-node"] +default = ["db", "full-node", "polkadot-native"] db = [ "service/db" @@ -131,6 +131,7 @@ full-node = [ "polkadot-availability-bitfield-distribution", "polkadot-availability-distribution", "polkadot-availability-recovery", + "polkadot-client", "polkadot-collator-protocol", "polkadot-dispute-distribution", "polkadot-gossip-support", @@ -152,9 +153,10 @@ full-node = [ light-node = [] -# Configure the native runtimes to use. Polkadot is always enabled by default. +# Configure the native runtimes to use. Polkadot is enabled by default. # # Validators require the native runtime currently +polkadot-native = [ "polkadot-runtime", "polkadot-client/polkadot" ] kusama-native = [ "kusama-runtime", "polkadot-client/kusama" ] westend-native = [ "westend-runtime", "polkadot-client/westend" ] rococo-native = [ "rococo-runtime", "polkadot-client/rococo" ] diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index e2ed37334aaa..f1cca5509bcb 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -24,8 +24,10 @@ use kusama_runtime as kusama; use kusama_runtime::constants::currency::UNITS as KSM; use pallet_im_online::sr25519::AuthorityId as ImOnlineId; use pallet_staking::Forcing; +#[cfg(feature = "polkadot-native")] use polkadot::constants::currency::UNITS as DOT; use polkadot_primitives::v1::{AccountId, AccountPublic, AssignmentId, ValidatorId}; +#[cfg(feature = "polkadot-native")] use polkadot_runtime as polkadot; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; @@ -44,6 +46,7 @@ use westend_runtime as westend; #[cfg(feature = "westend-native")] use westend_runtime::constants::currency::UNITS as WND; +#[cfg(feature = "polkadot-native")] const POLKADOT_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; #[cfg(feature = "kusama-native")] const KUSAMA_STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; @@ -71,34 +74,42 @@ pub struct Extensions { } /// The `ChainSpec` parameterized for the polkadot runtime. +#[cfg(feature = "polkadot-native")] pub type PolkadotChainSpec = service::GenericChainSpec; +// Dummy chain spec, in case when we don't have the native runtime. +pub type DummyChainSpec = service::GenericChainSpec<(), Extensions>; + +// Dummy chain spec, but that is fine when we don't have the native runtime. +#[cfg(not(feature = "polkadot-native"))] +pub type PolkadotChainSpec = DummyChainSpec; + /// The `ChainSpec` parameterized for the kusama runtime. #[cfg(feature = "kusama-native")] pub type KusamaChainSpec = service::GenericChainSpec; /// The `ChainSpec` parameterized for the kusama runtime. -// This actually uses the polkadot chain spec, but that is fine when we don't have the native runtime. +// Dummy chain spec, but that is fine when we don't have the native runtime. #[cfg(not(feature = "kusama-native"))] -pub type KusamaChainSpec = PolkadotChainSpec; +pub type KusamaChainSpec = DummyChainSpec; /// The `ChainSpec` parameterized for the westend runtime. #[cfg(feature = "westend-native")] pub type WestendChainSpec = service::GenericChainSpec; /// The `ChainSpec` parameterized for the westend runtime. -// This actually uses the polkadot chain spec, but that is fine when we don't have the native runtime. +// Dummy chain spec, but that is fine when we don't have the native runtime. #[cfg(not(feature = "westend-native"))] -pub type WestendChainSpec = PolkadotChainSpec; +pub type WestendChainSpec = DummyChainSpec; /// The `ChainSpec` parameterized for the rococo runtime. #[cfg(feature = "rococo-native")] pub type RococoChainSpec = service::GenericChainSpec; /// The `ChainSpec` parameterized for the rococo runtime. -// This actually uses the polkadot chain spec, but that is fine when we don't have the native runtime. +// Dummy chain spec, but that is fine when we don't have the native runtime. #[cfg(not(feature = "rococo-native"))] -pub type RococoChainSpec = PolkadotChainSpec; +pub type RococoChainSpec = DummyChainSpec; /// Extension for the Rococo genesis config to support a custom changes to the genesis state. #[derive(serde::Serialize, serde::Deserialize)] @@ -195,6 +206,7 @@ fn default_parachains_host_configuration( } } +#[cfg(feature = "polkadot-native")] fn polkadot_session_keys( babe: BabeId, grandpa: GrandpaId, @@ -272,6 +284,7 @@ fn rococo_session_keys( } } +#[cfg(feature = "polkadot-native")] fn polkadot_staging_testnet_config_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig { // subkey inspect "$SECRET" let endowed_accounts = vec![]; @@ -1053,6 +1066,7 @@ fn rococo_staging_testnet_config_genesis(wasm_binary: &[u8]) -> rococo_runtime:: } /// Polkadot staging testnet config. +#[cfg(feature = "polkadot-native")] pub fn polkadot_staging_testnet_config() -> Result { let wasm_binary = polkadot::WASM_BINARY.ok_or("Polkadot development wasm not available")?; let boot_nodes = vec![]; @@ -1218,6 +1232,7 @@ fn testnet_accounts() -> Vec { } /// Helper function to create polkadot `GenesisConfig` for testing +#[cfg(feature = "polkadot-native")] pub fn polkadot_testnet_genesis( wasm_binary: &[u8], initial_authorities: Vec<( @@ -1557,6 +1572,7 @@ pub fn rococo_testnet_genesis( } } +#[cfg(feature = "polkadot-native")] fn polkadot_development_config_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig { polkadot_testnet_genesis( wasm_binary, @@ -1597,6 +1613,7 @@ fn rococo_development_config_genesis(wasm_binary: &[u8]) -> rococo_runtime::Gene } /// Polkadot development config (single validator Alice) +#[cfg(feature = "polkadot-native")] pub fn polkadot_development_config() -> Result { let wasm_binary = polkadot::WASM_BINARY.ok_or("Polkadot development wasm not available")?; @@ -1694,6 +1711,7 @@ pub fn wococo_development_config() -> Result { )) } +#[cfg(feature = "polkadot-native")] fn polkadot_local_testnet_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig { polkadot_testnet_genesis( wasm_binary, @@ -1707,6 +1725,7 @@ fn polkadot_local_testnet_genesis(wasm_binary: &[u8]) -> polkadot::GenesisConfig } /// Polkadot local testnet config (multivalidator Alice + Bob) +#[cfg(feature = "polkadot-native")] pub fn polkadot_local_testnet_config() -> Result { let wasm_binary = polkadot::WASM_BINARY.ok_or("Polkadot development wasm not available")?; diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 72277434b50c..bcb181fa04b8 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -82,11 +82,15 @@ pub use polkadot_client::WestendExecutorDispatch; #[cfg(feature = "kusama-native")] pub use polkadot_client::KusamaExecutorDispatch; +#[cfg(feature = "polkadot-native")] +pub use polkadot_client::PolkadotExecutorDispatch; + pub use chain_spec::{KusamaChainSpec, PolkadotChainSpec, RococoChainSpec, WestendChainSpec}; pub use consensus_common::{block_validation::Chain, Proposal, SelectChain}; +#[cfg(feature = "full-node")] pub use polkadot_client::{ AbstractClient, Client, ClientHandle, ExecuteWithClient, FullBackend, FullClient, - PolkadotExecutorDispatch, RuntimeApiCollection, + RuntimeApiCollection, }; pub use polkadot_primitives::v1::{Block, BlockId, CollatorPair, Hash, Id as ParaId}; pub use sc_client_api::{Backend, CallExecutor, ExecutionStrategy}; @@ -110,6 +114,7 @@ pub use sp_runtime::{ #[cfg(feature = "kusama-native")] pub use kusama_runtime; +#[cfg(feature = "polkadot-native")] pub use polkadot_runtime; #[cfg(feature = "rococo-native")] pub use rococo_runtime; @@ -226,6 +231,10 @@ pub enum Error { #[cfg(feature = "full-node")] #[error("Creating a custom database is required for validators")] DatabasePathRequired, + + #[cfg(feature = "full-node")] + #[error("Expected at least one of polkadot, kusama, westend or rococo runtime feature")] + NoRuntime, } /// Can be called for a `Configuration` to identify which network the configuration targets. @@ -1268,13 +1277,19 @@ pub fn new_chain_ops( return Ok((Arc::new(Client::Westend(client)), backend, import_queue, task_manager)) } - let service::PartialComponents { client, backend, import_queue, task_manager, .. } = - new_partial::( - config, - jaeger_agent, - None, - )?; - Ok((Arc::new(Client::Polkadot(client)), backend, import_queue, task_manager)) + #[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)) + } + + #[cfg(not(feature = "polkadot-native"))] + Err(Error::NoRuntime) } /// Build a new light node. @@ -1295,7 +1310,13 @@ pub fn build_light(config: Configuration) -> Result<(TaskManager, RpcHandlers), return new_light::(config) } - new_light::(config) + #[cfg(feature = "polkadot-native")] + { + return new_light::(config) + } + + #[cfg(not(feature = "polkadot-native"))] + Err(Error::NoRuntime) } #[cfg(feature = "full-node")] @@ -1353,15 +1374,21 @@ pub fn build_full( .map(|full| full.with_client(Client::Westend)) } - new_full::( - config, - is_collator, - grandpa_pause, - disable_beefy, - jaeger_agent, - telemetry_worker_handle, - None, - overseer_gen, - ) - .map(|full| full.with_client(Client::Polkadot)) + #[cfg(feature = "polkadot-native")] + { + return new_full::( + config, + is_collator, + grandpa_pause, + disable_beefy, + jaeger_agent, + telemetry_worker_handle, + None, + overseer_gen, + ) + .map(|full| full.with_client(Client::Polkadot)) + } + + #[cfg(not(feature = "polkadot-native"))] + Err(Error::NoRuntime) } diff --git a/scripts/gitlab/check_no_default_features.sh b/scripts/gitlab/check_no_default_features.sh new file mode 100755 index 000000000000..455e5e72e579 --- /dev/null +++ b/scripts/gitlab/check_no_default_features.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -e + +pushd node/service && cargo check --no-default-features && popd +pushd cli && cargo check --no-default-features --features "service" && popd From dee1484760aedfd699e764f2b7c7d85855f7b077 Mon Sep 17 00:00:00 2001 From: Denis Pisarev Date: Mon, 13 Sep 2021 14:34:29 +0200 Subject: [PATCH 023/138] dockerfiles: upgrade to ubuntu:20.04; some chore (#3828) * dockerfiles: upgrade to ubuntu:20.04; some chore * dockerfiles: fq container names --- bridges/Dockerfile | 4 +- bridges/ci.Dockerfile | 2 +- bridges/deployments/BridgeDeps.Dockerfile | 2 +- .../bridges/poa-rialto/Front-end.Dockerfile | 4 +- .../monitoring/GrafanaMatrix.Dockerfile | 2 +- .../networks/OpenEthereum.Dockerfile | 4 +- docker/Dockerfile | 4 +- scripts/docker/Dockerfile | 4 +- scripts/docker/collator.Dockerfile | 7 ++-- scripts/docker/release.Dockerfile | 40 +++++++++---------- .../staking_miner-builder.Dockerfile | 4 +- .../staking_miner-injected.Dockerfile | 3 +- 12 files changed, 41 insertions(+), 39 deletions(-) diff --git a/bridges/Dockerfile b/bridges/Dockerfile index 2d03db8a76f2..cfd7fc456e50 100644 --- a/bridges/Dockerfile +++ b/bridges/Dockerfile @@ -8,7 +8,7 @@ # # See the `deployments/README.md` for all the available `PROJECT` values. -FROM paritytech/bridges-ci:latest as builder +FROM docker.io/paritytech/bridges-ci:latest as builder WORKDIR /parity-bridges-common COPY . . @@ -19,7 +19,7 @@ RUN cargo build --release --verbose -p ${PROJECT} && \ # In this final stage we copy over the final binary and do some checks # to make sure that everything looks good. -FROM ubuntu:20.04 as runtime +FROM docker.io/library/ubuntu:20.04 as runtime # show backtraces ENV RUST_BACKTRACE 1 diff --git a/bridges/ci.Dockerfile b/bridges/ci.Dockerfile index 0bd2bc4dae83..d1cab4f92f22 100644 --- a/bridges/ci.Dockerfile +++ b/bridges/ci.Dockerfile @@ -1,7 +1,7 @@ # This file is a "runtime" part from a builder-pattern in Dockerfile, it's used in CI. # The only different part is that the compilation happens externally, # so COPY has a different source. -FROM ubuntu:20.04 +FROM docker.io/library/ubuntu:20.04 # show backtraces ENV RUST_BACKTRACE 1 diff --git a/bridges/deployments/BridgeDeps.Dockerfile b/bridges/deployments/BridgeDeps.Dockerfile index a18a94a7155a..6d3b3fa17048 100644 --- a/bridges/deployments/BridgeDeps.Dockerfile +++ b/bridges/deployments/BridgeDeps.Dockerfile @@ -2,7 +2,7 @@ # # This image is meant to be used as a building block when building images for # the various components in the bridge repo, such as nodes and relayers. -FROM ubuntu:20.04 +FROM docker.io/library/ubuntu:20.04 ENV LAST_DEPS_UPDATE 2021-04-01 ENV DEBIAN_FRONTEND=noninteractive diff --git a/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile b/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile index 427f0504e57d..25c49cf56c15 100644 --- a/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile +++ b/bridges/deployments/bridges/poa-rialto/Front-end.Dockerfile @@ -1,4 +1,4 @@ -FROM node:12 as build-deps +FROM docker.io/library/node:12 as build-deps # install tools and dependencies RUN set -eux; \ @@ -19,7 +19,7 @@ ENV EXPECTED_ETHEREUM_NETWORK_ID $EXPECTED_ETHEREUM_NETWORK_ID RUN yarn build:docker # Stage 2 - the production environment -FROM nginx:1.12 +FROM docker.io/library/nginx:1.12 COPY --from=build-deps /usr/src/bridge-ui/nginx/*.conf /etc/nginx/conf.d/ COPY --from=build-deps /usr/src/bridge-ui/dist /usr/share/nginx/html EXPOSE 80 diff --git a/bridges/deployments/monitoring/GrafanaMatrix.Dockerfile b/bridges/deployments/monitoring/GrafanaMatrix.Dockerfile index 420e134716a6..df80f7002159 100644 --- a/bridges/deployments/monitoring/GrafanaMatrix.Dockerfile +++ b/bridges/deployments/monitoring/GrafanaMatrix.Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:alpine +FROM docker.io/library/ruby:alpine RUN apk add --no-cache git diff --git a/bridges/deployments/networks/OpenEthereum.Dockerfile b/bridges/deployments/networks/OpenEthereum.Dockerfile index d47708ca29bf..15fe72d295eb 100644 --- a/bridges/deployments/networks/OpenEthereum.Dockerfile +++ b/bridges/deployments/networks/OpenEthereum.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:xenial AS builder +FROM docker.io/library/ubuntu:xenial AS builder # show backtraces ENV RUST_BACKTRACE 1 @@ -60,7 +60,7 @@ WORKDIR /openethereum RUN cargo build --release --verbose RUN strip ./target/release/openethereum -FROM ubuntu:xenial +FROM docker.io/library/ubuntu:xenial # show backtraces ENV RUST_BACKTRACE 1 diff --git a/docker/Dockerfile b/docker/Dockerfile index ce094338781f..e068ec086f2f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM paritytech/ci-linux:production as builder +FROM docker.io/paritytech/ci-linux:production as builder LABEL description="This is the build stage for Polkadot. Here we create the binary." ARG PROFILE=release @@ -10,7 +10,7 @@ RUN cargo build --$PROFILE # ===== SECOND STAGE ====== -FROM debian:buster-slim +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 diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index 9052892c3f63..51f2b21b5fef 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:buster-slim +FROM docker.io/library/ubuntu:20.04 # metadata ARG VCS_REF @@ -8,7 +8,7 @@ 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="polkadot: a platform for web3" \ + 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.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ diff --git a/scripts/docker/collator.Dockerfile b/scripts/docker/collator.Dockerfile index 9e25c55df55e..7053459d1a18 100644 --- a/scripts/docker/collator.Dockerfile +++ b/scripts/docker/collator.Dockerfile @@ -1,4 +1,5 @@ -FROM debian:buster-slim +# this file copies from scripts/docker/Dockerfile and changes only the binary name +FROM docker.io/library/ubuntu:20.04 # metadata ARG VCS_REF @@ -8,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="polkadot: a platform for web3" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ + 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.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ io.parity.image.documentation="https://github.com/paritytech/polkadot/" diff --git a/scripts/docker/release.Dockerfile b/scripts/docker/release.Dockerfile index 912c5fd4ae02..9188d6b260c4 100644 --- a/scripts/docker/release.Dockerfile +++ b/scripts/docker/release.Dockerfile @@ -1,4 +1,4 @@ -FROM debian:buster-slim +FROM docker.io/library/ubuntu:20.04 # metadata ARG VCS_REF @@ -8,7 +8,7 @@ ARG POLKADOT_VERSION 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.description="Polkadot: a platform for web3" \ io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ io.parity.image.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ @@ -19,24 +19,25 @@ ENV RUST_BACKTRACE 1 # install tools and dependencies 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 && \ - gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798 && \ - gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /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#?} && \ + 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 && \ + 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#?} && \ # apt cleanup - apt-get autoremove -y && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* ; \ - mkdir -p /data /polkadot/.local/share && \ - chown -R polkadot:polkadot /data && \ - ln -s /data /polkadot/.local/share/polkadot + apt-get autoremove -y && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* ; \ + mkdir -p /data /polkadot/.local/share && \ + chown -R polkadot:polkadot /data && \ + ln -s /data /polkadot/.local/share/polkadot USER polkadot @@ -47,4 +48,3 @@ EXPOSE 30333 9933 9944 VOLUME ["/polkadot"] ENTRYPOINT ["/usr/bin/polkadot"] - diff --git a/scripts/docker/staking-miner/staking_miner-builder.Dockerfile b/scripts/docker/staking-miner/staking_miner-builder.Dockerfile index 20cf87c24a30..4903fccee561 100644 --- a/scripts/docker/staking-miner/staking_miner-builder.Dockerfile +++ b/scripts/docker/staking-miner/staking_miner-builder.Dockerfile @@ -14,7 +14,7 @@ RUN cargo build --locked --$PROFILE --package staking-miner # ===== SECOND STAGE ====== -FROM debian:buster-slim +FROM docker.io/library/ubuntu:20.04 LABEL description="This is the 2nd stage: a very small image where we copy the binary." LABEL io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ @@ -43,4 +43,4 @@ ENV RUST_LOG="info" # check if the binary works in this container RUN /usr/local/bin/staking-miner --version -ENTRYPOINT [ "/usr/local/bin/staking-miner"] +ENTRYPOINT [ "/usr/local/bin/staking-miner" ] diff --git a/scripts/docker/staking-miner/staking_miner-injected.Dockerfile b/scripts/docker/staking-miner/staking_miner-injected.Dockerfile index 41c4f32b93cc..547fea747bfd 100644 --- a/scripts/docker/staking-miner/staking_miner-injected.Dockerfile +++ b/scripts/docker/staking-miner/staking_miner-injected.Dockerfile @@ -1,4 +1,4 @@ -FROM debian:buster-slim +FROM docker.io/library/ubuntu:20.04 # metadata ARG VCS_REF @@ -22,6 +22,7 @@ RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ libssl1.1 \ ca-certificates && \ +# apt cleanup apt-get autoremove -y && \ apt-get clean && \ find /var/lib/apt/lists/ -type f -not -name lock -delete; \ From c56ef44d0595fcbe925cc49aaedf8a7dd5916418 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 14 Sep 2021 04:07:42 -0400 Subject: [PATCH 024/138] fix complaints in CI (#3838) --- runtime/common/src/elections.rs | 7 ++++--- runtime/kusama/src/weights/pallet_collective_council.rs | 2 +- .../src/weights/pallet_collective_technical_committee.rs | 2 +- runtime/polkadot/src/weights/pallet_collective_council.rs | 2 +- .../src/weights/pallet_collective_technical_committee.rs | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/runtime/common/src/elections.rs b/runtime/common/src/elections.rs index 4e2b080bfc21..4741898f061c 100644 --- a/runtime/common/src/elections.rs +++ b/runtime/common/src/elections.rs @@ -60,14 +60,15 @@ impl pallet_election_provider_multi_phase::BenchmarkingConfig for BenchmarkConfi pub type OnOnChainAccuracy = sp_runtime::Perbill; /// The election provider of the genesis -pub type GenesisElectionOf = frame_election_provider_support::onchain::OnChainSequentialPhragmen; +pub type GenesisElectionOf = + frame_election_provider_support::onchain::OnChainSequentialPhragmen; /// Maximum number of iterations for balancing that will be executed in the embedded miner of /// pallet-election-provider-multi-phase. pub const MINER_MAX_ITERATIONS: u32 = 10; -/// A source of random balance for the NPoS Solver, which is meant to be run by the OCW election -/// miner. +/// A source of random balance for the NPoS Solver, which is meant to be run by the offchain worker +/// election miner. pub struct OffchainRandomBalancing; impl frame_support::pallet_prelude::Get> for OffchainRandomBalancing diff --git a/runtime/kusama/src/weights/pallet_collective_council.rs b/runtime/kusama/src/weights/pallet_collective_council.rs index 21abbb70bf35..4ffa6f5cda03 100644 --- a/runtime/kusama/src/weights/pallet_collective_council.rs +++ b/runtime/kusama/src/weights/pallet_collective_council.rs @@ -41,7 +41,7 @@ use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions for pallet_collective. +/// Weight functions for `pallet_collective`. pub struct WeightInfo(PhantomData); impl pallet_collective::WeightInfo for WeightInfo { // Storage: Instance1Collective Members (r:1 w:1) diff --git a/runtime/kusama/src/weights/pallet_collective_technical_committee.rs b/runtime/kusama/src/weights/pallet_collective_technical_committee.rs index e860a1d224e7..d61bb433c99e 100644 --- a/runtime/kusama/src/weights/pallet_collective_technical_committee.rs +++ b/runtime/kusama/src/weights/pallet_collective_technical_committee.rs @@ -41,7 +41,7 @@ use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions for pallet_collective. +/// Weight functions for `pallet_collective`. pub struct WeightInfo(PhantomData); impl pallet_collective::WeightInfo for WeightInfo { // Storage: Instance2Collective Members (r:1 w:1) diff --git a/runtime/polkadot/src/weights/pallet_collective_council.rs b/runtime/polkadot/src/weights/pallet_collective_council.rs index d0a389bfac09..6d7eabaef2b2 100644 --- a/runtime/polkadot/src/weights/pallet_collective_council.rs +++ b/runtime/polkadot/src/weights/pallet_collective_council.rs @@ -41,7 +41,7 @@ use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions for pallet_collective. +/// Weight functions for `pallet_collective`. pub struct WeightInfo(PhantomData); impl pallet_collective::WeightInfo for WeightInfo { // Storage: Instance1Collective Members (r:1 w:1) diff --git a/runtime/polkadot/src/weights/pallet_collective_technical_committee.rs b/runtime/polkadot/src/weights/pallet_collective_technical_committee.rs index 9c50b3b58ba1..a272fc708f00 100644 --- a/runtime/polkadot/src/weights/pallet_collective_technical_committee.rs +++ b/runtime/polkadot/src/weights/pallet_collective_technical_committee.rs @@ -41,7 +41,7 @@ use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions for pallet_collective. +/// Weight functions for `pallet_collective`. pub struct WeightInfo(PhantomData); impl pallet_collective::WeightInfo for WeightInfo { // Storage: Instance2Collective Members (r:1 w:1) From 77e92caaa276b956d3f1e4c658e745f2fce55ad0 Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Tue, 14 Sep 2021 16:17:30 +0800 Subject: [PATCH 025/138] Companion for substrate#9711 (#3801) * Companion for substrate#9711 Signed-off-by: koushiro * Fix Signed-off-by: koushiro * update Substrate * cargo +nightly fmt Co-authored-by: parity-processbot <> Co-authored-by: Shawn Tabrizi --- Cargo.lock | 368 ++++++++++++++++-------------------- runtime/kusama/src/lib.rs | 24 ++- runtime/polkadot/src/lib.rs | 24 ++- 3 files changed, 205 insertions(+), 211 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d5c34e3e8eed..489c5d1a445b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "sp-api", @@ -2194,12 +2194,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -4305,11 +4299,11 @@ dependencies = [ [[package]] name = "names" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" +checksum = "10a8690bf09abf659851e58cd666c3d37ac6af07c2bd7a9e332cfba471715775" dependencies = [ - "rand 0.3.23", + "rand 0.8.4", ] [[package]] @@ -4530,7 +4524,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -4545,7 +4539,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4553,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4582,7 +4576,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4637,7 +4631,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4709,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4731,7 +4725,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4746,7 +4740,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4769,7 +4763,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4786,7 +4780,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4800,7 +4794,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4822,7 +4816,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4837,7 +4831,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4856,7 +4850,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4872,7 +4866,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4888,7 +4882,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4905,7 +4899,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -4921,7 +4915,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4938,7 +4932,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4952,7 +4946,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -4965,7 +4959,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -4981,7 +4975,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5003,7 +4997,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5017,7 +5011,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -5030,7 +5024,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5045,7 +5039,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -5065,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5081,7 +5075,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -5094,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5116,7 +5110,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5127,7 +5121,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "sp-arithmetic", @@ -5136,7 +5130,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -5149,7 +5143,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5166,14 +5160,17 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-treasury", "parity-scale-codec", "serde", + "sp-core", + "sp-io", "sp-runtime", "sp-std", ] @@ -5181,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-support", "frame-system", @@ -5197,7 +5194,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5214,7 +5211,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5225,7 +5222,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5241,7 +5238,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5256,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-benchmarking", "frame-support", @@ -7356,29 +7353,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" -[[package]] -name = "rand" -version = "0.3.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -dependencies = [ - "libc", - "rand 0.4.6", -] - -[[package]] -name = "rand" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -dependencies = [ - "fuchsia-cprng", - "libc", - "rand_core 0.3.1", - "rdrand", - "winapi 0.3.9", -] - [[package]] name = "rand" version = "0.7.3" @@ -7425,21 +7399,6 @@ dependencies = [ "rand_core 0.6.1", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" @@ -7526,15 +7485,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "redox_syscall" version = "0.1.56" @@ -7648,7 +7598,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7907,7 +7857,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "sp-core", @@ -7918,7 +7868,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "derive_more", @@ -7945,7 +7895,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7968,7 +7918,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7984,7 +7934,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8000,7 +7950,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8011,7 +7961,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "chrono", "fdlimit", @@ -8049,7 +7999,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "fnv", "futures 0.3.17", @@ -8077,7 +8027,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "hash-db", "kvdb", @@ -8102,7 +8052,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "futures 0.3.17", @@ -8126,7 +8076,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "derive_more", @@ -8169,7 +8119,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "derive_more", "futures 0.3.17", @@ -8193,7 +8143,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8206,7 +8156,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "assert_matches", "async-trait", @@ -8240,7 +8190,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "futures 0.3.17", @@ -8266,7 +8216,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "sc-client-api", "sp-authorship", @@ -8277,7 +8227,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8303,7 +8253,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "derive_more", "environmental", @@ -8321,7 +8271,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "parity-scale-codec", @@ -8337,7 +8287,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8356,7 +8306,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "derive_more", @@ -8393,7 +8343,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "derive_more", "finality-grandpa", @@ -8417,7 +8367,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8434,7 +8384,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "derive_more", @@ -8449,7 +8399,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "hash-db", "parity-scale-codec", @@ -8467,7 +8417,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-std", "async-trait", @@ -8518,7 +8468,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8534,7 +8484,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "bytes 1.0.1", "fnv", @@ -8561,7 +8511,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "libp2p", @@ -8574,7 +8524,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8583,7 +8533,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "hash-db", @@ -8614,7 +8564,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8639,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8656,7 +8606,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "directories", @@ -8721,7 +8671,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "parity-scale-codec", @@ -8735,7 +8685,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8757,7 +8707,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "chrono", "futures 0.3.17", @@ -8775,7 +8725,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8804,7 +8754,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8815,7 +8765,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "intervalier", @@ -8842,7 +8792,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "derive_more", "futures 0.3.17", @@ -8856,7 +8806,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9287,7 +9237,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "hash-db", "log", @@ -9304,7 +9254,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9316,7 +9266,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "serde", @@ -9328,7 +9278,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "integer-sqrt", "num-traits", @@ -9342,7 +9292,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sp-api", @@ -9354,7 +9304,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "parity-scale-codec", @@ -9366,7 +9316,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sp-api", @@ -9378,7 +9328,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "log", @@ -9396,7 +9346,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "futures 0.3.17", @@ -9415,7 +9365,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "merlin", @@ -9437,7 +9387,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9447,7 +9397,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9459,7 +9409,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "base58", "blake2-rfc", @@ -9503,7 +9453,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9512,7 +9462,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro2", "quote", @@ -9522,7 +9472,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "environmental", "parity-scale-codec", @@ -9533,7 +9483,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "finality-grandpa", "log", @@ -9550,7 +9500,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9564,7 +9514,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "hash-db", @@ -9589,7 +9539,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "lazy_static", "sp-core", @@ -9600,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "derive_more", @@ -9617,7 +9567,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "zstd", ] @@ -9625,7 +9575,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "serde", @@ -9639,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9650,7 +9600,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "sp-api", "sp-core", @@ -9660,7 +9610,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "backtrace", ] @@ -9668,7 +9618,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "rustc-hash", "serde", @@ -9678,7 +9628,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "either", "hash256-std-hasher", @@ -9699,7 +9649,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9716,7 +9666,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9728,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "serde", "serde_json", @@ -9737,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sp-api", @@ -9750,7 +9700,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9760,7 +9710,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "hash-db", "log", @@ -9783,12 +9733,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9801,7 +9751,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "sp-core", @@ -9814,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9830,7 +9780,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "erased-serde", "log", @@ -9848,7 +9798,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "sp-api", "sp-runtime", @@ -9857,7 +9807,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "log", @@ -9872,7 +9822,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "hash-db", "memory-db", @@ -9886,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9901,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9912,7 +9862,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10108,7 +10058,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "platforms", ] @@ -10116,7 +10066,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10138,7 +10088,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-std", "derive_more", @@ -10152,7 +10102,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "async-trait", "futures 0.3.17", @@ -10179,7 +10129,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10189,7 +10139,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10200,7 +10150,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10353,7 +10303,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "frame-system", "futures 0.3.17", @@ -10760,7 +10710,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ec7f55c8ab8e8d5241515076aba4770562d87cd" +source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" dependencies = [ "log", "parity-scale-codec", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 41686e0558f4..fdf93d69453e 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1505,7 +1505,7 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - TechnicalMembershipStoragePrefixMigration, + (TechnicalMembershipStoragePrefixMigration, MigrateTipsPalletPrefix), >; /// The payload being signed in the transactions. pub type SignedPayload = generic::SignedPayload; @@ -1550,6 +1550,28 @@ impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { } } +const TIPS_OLD_PREFIX: &str = "Treasury"; +/// Migrate pallet-tips from `Treasury` to the new pallet prefix `Tips` +pub struct MigrateTipsPalletPrefix; + +impl OnRuntimeUpgrade for MigrateTipsPalletPrefix { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_tips::migrations::v4::migrate::(TIPS_OLD_PREFIX) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_tips::migrations::v4::pre_migrate::(TIPS_OLD_PREFIX); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_tips::migrations::v4::post_migrate::(TIPS_OLD_PREFIX); + Ok(()) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 9210d74fc643..300e37fe8883 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1131,7 +1131,7 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - TechnicalMembershipStoragePrefixMigration, + (TechnicalMembershipStoragePrefixMigration, MigrateTipsPalletPrefix), >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; @@ -1176,6 +1176,28 @@ impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { } } +const TIPS_OLD_PREFIX: &str = "Treasury"; +/// Migrate pallet-tips from `Treasury` to the new pallet prefix `Tips` +pub struct MigrateTipsPalletPrefix; + +impl OnRuntimeUpgrade for MigrateTipsPalletPrefix { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_tips::migrations::v4::migrate::(TIPS_OLD_PREFIX) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_tips::migrations::v4::pre_migrate::(TIPS_OLD_PREFIX); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_tips::migrations::v4::post_migrate::(TIPS_OLD_PREFIX); + Ok(()) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { From 8b8d4c8ccfaf097a1182a3737d56ec453a226c06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Sep 2021 12:23:05 +0200 Subject: [PATCH 026/138] Bump tracing from 0.1.26 to 0.1.27 (#3841) Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.26 to 0.1.27. - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.26...tracing-0.1.27) --- updated-dependencies: - dependency-name: tracing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 12 ++++++------ node/collation-generation/Cargo.toml | 2 +- node/core/approval-voting/Cargo.toml | 2 +- node/core/av-store/Cargo.toml | 2 +- node/core/backing/Cargo.toml | 2 +- node/core/bitfield-signing/Cargo.toml | 2 +- node/core/candidate-validation/Cargo.toml | 2 +- node/core/chain-api/Cargo.toml | 2 +- node/core/chain-selection/Cargo.toml | 2 +- node/core/dispute-coordinator/Cargo.toml | 2 +- node/core/dispute-participation/Cargo.toml | 2 +- node/core/parachains-inherent/Cargo.toml | 2 +- node/core/provisioner/Cargo.toml | 2 +- node/core/pvf/Cargo.toml | 2 +- node/core/runtime-api/Cargo.toml | 2 +- node/network/approval-distribution/Cargo.toml | 2 +- node/network/availability-distribution/Cargo.toml | 2 +- node/network/availability-recovery/Cargo.toml | 2 +- node/network/bitfield-distribution/Cargo.toml | 2 +- node/network/bridge/Cargo.toml | 2 +- node/network/collator-protocol/Cargo.toml | 2 +- node/network/dispute-distribution/Cargo.toml | 2 +- node/network/gossip-support/Cargo.toml | 2 +- node/network/statement-distribution/Cargo.toml | 2 +- node/overseer/Cargo.toml | 2 +- node/service/Cargo.toml | 2 +- node/subsystem-util/Cargo.toml | 2 +- node/test/service/Cargo.toml | 2 +- 28 files changed, 33 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 489c5d1a445b..439b2f755f57 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10547,9 +10547,9 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" +checksum = "c2ba9ab62b7d6497a8638dfda5e5c4fb3b2d5a7fca4118f2b96151c8ef1a437e" dependencies = [ "cfg-if 1.0.0", "pin-project-lite 0.2.4", @@ -10559,9 +10559,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +checksum = "98863d0dd09fa59a1b79c6750ad80dbda6b75f4e71c437a6a1a8cb91a8bcbd77" dependencies = [ "proc-macro2", "quote", @@ -10570,9 +10570,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.18" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" +checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf" dependencies = [ "lazy_static", ] diff --git a/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index ac7281a97117..70d466ebd553 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" polkadot-erasure-coding = { path = "../../erasure-coding" } polkadot-node-primitives = { path = "../primitives" } polkadot-node-subsystem = { path = "../subsystem" } diff --git a/node/core/approval-voting/Cargo.toml b/node/core/approval-voting/Cargo.toml index afbf184a0603..06d6fce4c336 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" 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.26" +tracing = "0.1.27" bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } lru = "0.6" merlin = "2.0" diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index d6f238d00670..9b72f74c09f0 100644 --- a/node/core/av-store/Cargo.toml +++ b/node/core/av-store/Cargo.toml @@ -9,7 +9,7 @@ futures = "0.3.17" futures-timer = "3.0.2" kvdb = "0.10.0" thiserror = "1.0.26" -tracing = "0.1.26" +tracing = "0.1.27" bitvec = "0.20.1" parity-scale-codec = { version = "2.0.0", features = ["derive"] } diff --git a/node/core/backing/Cargo.toml b/node/core/backing/Cargo.toml index 1d4bcbc01bab..c8e90d3eedf9 100644 --- a/node/core/backing/Cargo.toml +++ b/node/core/backing/Cargo.toml @@ -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.26" +tracing = "0.1.27" thiserror = "1.0.26" [dev-dependencies] diff --git a/node/core/bitfield-signing/Cargo.toml b/node/core/bitfield-signing/Cargo.toml index b77d1e2b2b8f..316ae45e9b70 100644 --- a/node/core/bitfield-signing/Cargo.toml +++ b/node/core/bitfield-signing/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" 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 0b40202ff167..e1a3e0fa4ec3 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] async-trait = "0.1.51" futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" 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"] } diff --git a/node/core/chain-api/Cargo.toml b/node/core/chain-api/Cargo.toml index cd06b137bb79..076087592e4e 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } polkadot-primitives = { path = "../../../primitives" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } diff --git a/node/core/chain-selection/Cargo.toml b/node/core/chain-selection/Cargo.toml index 90e35bf7f30c..68d421153f49 100644 --- a/node/core/chain-selection/Cargo.toml +++ b/node/core/chain-selection/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] futures = "0.3.17" futures-timer = "3" -tracing = "0.1.26" +tracing = "0.1.27" polkadot-primitives = { path = "../../../primitives" } polkadot-node-primitives = { path = "../../primitives" } polkadot-node-subsystem = { path = "../../subsystem" } diff --git a/node/core/dispute-coordinator/Cargo.toml b/node/core/dispute-coordinator/Cargo.toml index 5c1284a5f1da..367cf9824447 100644 --- a/node/core/dispute-coordinator/Cargo.toml +++ b/node/core/dispute-coordinator/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" parity-scale-codec = "2" kvdb = "0.10.0" derive_more = "0.99.14" diff --git a/node/core/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index dbbb729ec569..65c56e2423f2 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.17" thiserror = "1.0.26" -tracing = "0.1.26" +tracing = "0.1.27" polkadot-node-primitives = { path = "../../primitives" } polkadot-node-subsystem = { path = "../../subsystem" } diff --git a/node/core/parachains-inherent/Cargo.toml b/node/core/parachains-inherent/Cargo.toml index 0cbb861bf1d1..9322c203067e 100644 --- a/node/core/parachains-inherent/Cargo.toml +++ b/node/core/parachains-inherent/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.17" futures-timer = "3.0.2" -tracing = "0.1.26" +tracing = "0.1.27" 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 81541f0a0287..8be473ee9e71 100644 --- a/node/core/provisioner/Cargo.toml +++ b/node/core/provisioner/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" 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 c994835d4924..78b8c51ac516 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -17,7 +17,7 @@ futures = "0.3.17" futures-timer = "3.0.2" libc = "0.2.101" slotmap = "1.0" -tracing = "0.1.26" +tracing = "0.1.27" pin-project = "1.0.8" rand = "0.8.3" parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } diff --git a/node/core/runtime-api/Cargo.toml b/node/core/runtime-api/Cargo.toml index 32a1f4382f00..77290fddfc76 100644 --- a/node/core/runtime-api/Cargo.toml +++ b/node/core/runtime-api/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" memory-lru = "0.1.0" parity-util-mem = { version = "0.10.0", default-features = false } diff --git a/node/network/approval-distribution/Cargo.toml b/node/network/approval-distribution/Cargo.toml index 139bddc3d883..c4d620e48b24 100644 --- a/node/network/approval-distribution/Cargo.toml +++ b/node/network/approval-distribution/Cargo.toml @@ -12,7 +12,7 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" } polkadot-primitives = { path = "../../../primitives" } futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" [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 3aecfd8d70e6..f54f45b37d91 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" parity-scale-codec = { version = "2.0.0", features = ["std"] } polkadot-primitives = { path = "../../../primitives" } polkadot-erasure-coding = { path = "../../../erasure-coding" } diff --git a/node/network/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index 76acc04b7b26..a7eaf36d8cbf 100644 --- a/node/network/availability-recovery/Cargo.toml +++ b/node/network/availability-recovery/Cargo.toml @@ -9,7 +9,7 @@ futures = "0.3.17" lru = "0.6.6" rand = "0.8.3" thiserror = "1.0.26" -tracing = "0.1.26" +tracing = "0.1.27" polkadot-erasure-coding = { path = "../../../erasure-coding" } polkadot-primitives = { path = "../../../primitives" } diff --git a/node/network/bitfield-distribution/Cargo.toml b/node/network/bitfield-distribution/Cargo.toml index 930301c84fb5..e531e1c9962f 100644 --- a/node/network/bitfield-distribution/Cargo.toml +++ b/node/network/bitfield-distribution/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" 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 b4c1807b1072..ee39a12bc57f 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] async-trait = "0.1.51" futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" polkadot-primitives = { path = "../../../primitives" } parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/network/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index ab2fe0ac5291..d1cbeadc5a36 100644 --- a/node/network/collator-protocol/Cargo.toml +++ b/node/network/collator-protocol/Cargo.toml @@ -10,7 +10,7 @@ derive_more = "0.99.14" futures = "0.3.17" futures-timer = "3" thiserror = "1.0.26" -tracing = "0.1.26" +tracing = "0.1.27" sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/network/dispute-distribution/Cargo.toml b/node/network/dispute-distribution/Cargo.toml index bd478720b12a..0cf8c251ec3a 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" derive_more = "0.99.14" parity-scale-codec = { version = "2.0.0", features = ["std"] } polkadot-primitives = { path = "../../../primitives" } diff --git a/node/network/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml index d02e36a16c0b..0087a7d6b089 100644 --- a/node/network/gossip-support/Cargo.toml +++ b/node/network/gossip-support/Cargo.toml @@ -17,7 +17,7 @@ polkadot-primitives = { path = "../../../primitives" } futures = "0.3.17" rand = { version = "0.8.3", default-features = false } rand_chacha = { version = "0.3.1", default-features = false } -tracing = "0.1.26" +tracing = "0.1.27" [dev-dependencies] sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/network/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index 1597f99dd6ba..82cec326a5c5 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.26" +tracing = "0.1.27" 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" } diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml index 5ac5df6bba96..b22d57975aa1 100644 --- a/node/overseer/Cargo.toml +++ b/node/overseer/Cargo.toml @@ -17,7 +17,7 @@ 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.26" +tracing = "0.1.27" lru = "0.6" [dev-dependencies] diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 80178da11090..213afe4edb1a 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -62,7 +62,7 @@ prometheus-endpoint = { package = "substrate-prometheus-endpoint", git = "https: # External Crates futures = "0.3.17" hex-literal = "0.3.3" -tracing = "0.1.26" +tracing = "0.1.27" serde = { version = "1.0.130", features = ["derive"] } thiserror = "1.0.26" kvdb = "0.10.0" diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml index a6f8052b01cb..5bcf8b4658a4 100644 --- a/node/subsystem-util/Cargo.toml +++ b/node/subsystem-util/Cargo.toml @@ -13,7 +13,7 @@ parity-scale-codec = { version = "2.0.0", default-features = false, features = [ pin-project = "1.0.8" rand = "0.8.3" thiserror = "1.0.26" -tracing = "0.1.26" +tracing = "0.1.27" derive_more = "0.99.11" lru = "0.6.6" diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index 82df04e72cf4..56517c89a52a 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" futures = "0.3.17" futures01 = { package = "futures", version = "0.1.29" } hex = "0.4.3" -tracing = "0.1.26" +tracing = "0.1.27" rand = "0.8.3" tempfile = "3.2.0" tokio = "1.10.0" From 143a30874f618c9f3c1e8eca09a526e432382572 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Tue, 14 Sep 2021 13:58:37 +0200 Subject: [PATCH 027/138] Put all authorities of a session into `SessionInfo`. (#3813) * Make SessionInfo include all authorities of the current session. * Add missing import. * Only take subset for assignment keys. * Fix typo. * Make spellcheck happy. * Really. * Fix test. * More clear documentation. * Update comments in `SessionInfo`. --- node/network/gossip-support/src/lib.rs | 1 - node/subsystem-util/src/runtime/mod.rs | 2 +- primitives/src/v1/mod.rs | 20 ++++++ .../src/runtime/session_info.md | 48 ++++++++++---- runtime/parachains/src/session_info.rs | 10 ++- runtime/parachains/src/util.rs | 66 +++++++++++++++++-- 6 files changed, 122 insertions(+), 25 deletions(-) diff --git a/node/network/gossip-support/src/lib.rs b/node/network/gossip-support/src/lib.rs index 1cdfaf4f5d9e..8a6d08b27280 100644 --- a/node/network/gossip-support/src/lib.rs +++ b/node/network/gossip-support/src/lib.rs @@ -54,7 +54,6 @@ const BACKOFF_DURATION: Duration = Duration::from_secs(5); /// should be fine: /// /// https://github.com/paritytech/substrate/blob/fc49802f263529160635471c8a17888846035f5d/client/authority-discovery/src/lib.rs#L88 -/// const LOW_CONNECTIVITY_WARN_DELAY: Duration = Duration::from_secs(600); /// The Gossip Support subsystem. diff --git a/node/subsystem-util/src/runtime/mod.rs b/node/subsystem-util/src/runtime/mod.rs index e1ac19e0e8fc..f086d31c661c 100644 --- a/node/subsystem-util/src/runtime/mod.rs +++ b/node/subsystem-util/src/runtime/mod.rs @@ -199,7 +199,7 @@ impl RuntimeInfo { /// Build `ValidatorInfo` for the current session. /// /// - /// Returns: `None` if not a validator. + /// Returns: `None` if not a parachain validator. async fn get_validator_info(&self, session_info: &SessionInfo) -> Result { if let Some(our_index) = self.get_our_index(&session_info.validators).await { // Get our group index: diff --git a/primitives/src/v1/mod.rs b/primitives/src/v1/mod.rs index dec17ca915a7..c261bf9b69e4 100644 --- a/primitives/src/v1/mod.rs +++ b/primitives/src/v1/mod.rs @@ -892,11 +892,31 @@ pub enum CandidateEvent { #[cfg_attr(feature = "std", derive(PartialEq, Default, MallocSizeOf))] pub struct SessionInfo { /// Validators in canonical ordering. + /// + /// NOTE: There might be more authorities in the current session, than `validators` participating + /// in parachain consensus. See + /// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148). + /// + /// `SessionInfo::validators` will be limited to to `max_validators` when set. pub validators: Vec, /// Validators' authority discovery keys for the session in canonical ordering. + /// + /// NOTE: The first `validators.len()` entries will match the corresponding validators in + /// `validators`, afterwards any remaining authorities can be found. This is any authorities not + /// participating in parachain consensus - see + /// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148) #[cfg_attr(feature = "std", ignore_malloc_size_of = "outside type")] pub discovery_keys: Vec, /// The assignment keys for validators. + /// + /// NOTE: There might be more authorities in the current session, than validators participating + /// in parachain consensus. See + /// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148). + /// + /// Therefore: + /// ```ignore + /// assignment_keys.len() == validators.len() && validators.len() <= discovery_keys.len() + /// ``` pub assignment_keys: Vec, /// Validators in shuffled ordering - these are the validator groups as produced /// by the `Scheduler` module for the session and are typically referred to by diff --git a/roadmap/implementers-guide/src/runtime/session_info.md b/roadmap/implementers-guide/src/runtime/session_info.md index a37f61af08d7..5ee63ab5a903 100644 --- a/roadmap/implementers-guide/src/runtime/session_info.md +++ b/roadmap/implementers-guide/src/runtime/session_info.md @@ -8,27 +8,47 @@ Helper structs: ```rust struct SessionInfo { - // validators in canonical ordering. These are the public keys used for backing, - // dispute participation, and approvals. + /// Validators in canonical ordering. + /// + /// NOTE: There might be more authorities in the current session, than `validators` participating + /// in parachain consensus. See + /// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148). + /// + /// `SessionInfo::validators` will be limited to to `max_validators` when set. validators: Vec, - // validators' authority discovery keys for the session in canonical ordering. - discovery_keys: Vec, - // The assignment keys for validators. + /// Validators' authority discovery keys for the session in canonical ordering. + /// + /// NOTE: The first `validators.len()` entries will match the corresponding validators in + /// `validators`, afterwards any remaining authorities can be found. This is any authorities not + /// participating in parachain consensus - see + /// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148) + #[cfg_attr(feature = "std", ignore_malloc_size_of = "outside type")] + discovery_keys: Vec, + /// The assignment keys for validators. + /// + /// NOTE: There might be more authorities in the current session, than validators participating + /// in parachain consensus. See + /// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148). + /// + /// Therefore: + /// ```ignore + /// assignment_keys.len() == validators.len() && validators.len() <= discovery_keys.len() + /// ``` assignment_keys: Vec, - // validators in shuffled ordering - these are the validator groups as produced - // by the `Scheduler` module for the session and are typically referred to by - // `GroupIndex`. + /// Validators in shuffled ordering - these are the validator groups as produced + /// by the `Scheduler` module for the session and are typically referred to by + /// `GroupIndex`. validator_groups: Vec>, - // The number of availability cores used by the protocol during this session. + /// The number of availability cores used by the protocol during this session. n_cores: u32, - // the zeroth delay tranche width. + /// The zeroth delay tranche width. zeroth_delay_tranche_width: u32, - // The number of samples we do of relay_vrf_modulo. + /// The number of samples we do of `relay_vrf_modulo`. relay_vrf_modulo_samples: u32, - // The number of delay tranches in total. + /// The number of delay tranches in total. n_delay_tranches: u32, - // How many slots (BABE / SASSAFRAS) must pass before an assignment is considered a - // no-show. + /// How many slots (BABE / SASSAFRAS) must pass before an assignment is considered a + /// no-show. no_show_slots: u32, /// The number of validators needed to approve a block. needed_approvals: u32, diff --git a/runtime/parachains/src/session_info.rs b/runtime/parachains/src/session_info.rs index 3e18b16b9aab..93f0ba736577 100644 --- a/runtime/parachains/src/session_info.rs +++ b/runtime/parachains/src/session_info.rs @@ -19,7 +19,10 @@ //! //! See https://w3f.github.io/parachain-implementers-guide/runtime/session_info.html. -use crate::{configuration, paras, scheduler, shared, util::take_active_subset}; +use crate::{ + configuration, paras, scheduler, shared, + util::{take_active_subset, take_active_subset_and_inactive}, +}; use frame_support::{pallet_prelude::*, traits::OneSessionHandler}; use primitives::v1::{AssignmentId, AuthorityDiscoveryId, SessionIndex, SessionInfo}; use sp_std::vec::Vec; @@ -120,7 +123,7 @@ impl Pallet { // create a new entry in `Sessions` with information about the current session let new_session_info = SessionInfo { validators, // these are from the notification and are thus already correct. - discovery_keys: take_active_subset(&active_set, &discovery_keys), + discovery_keys: take_active_subset_and_inactive(&active_set, &discovery_keys), assignment_keys: take_active_subset(&active_set, &assignment_keys), validator_groups, n_cores, @@ -176,6 +179,7 @@ mod tests { new_test_ext, Configuration, MockGenesisConfig, Origin, ParasShared, SessionInfo, System, Test, }, + util::take_active_subset, }; use keyring::Sr25519Keyring; use primitives::v1::{BlockNumber, ValidatorId, ValidatorIndex}; @@ -357,7 +361,7 @@ mod tests { assert_eq!(session.validators, validators); assert_eq!( session.discovery_keys, - take_active_subset(&active_set, &unscrambled_discovery), + take_active_subset_and_inactive(&active_set, &unscrambled_discovery), ); assert_eq!( session.assignment_keys, diff --git a/runtime/parachains/src/util.rs b/runtime/parachains/src/util.rs index 4f9d1e588ba1..f3e5623d7ac5 100644 --- a/runtime/parachains/src/util.rs +++ b/runtime/parachains/src/util.rs @@ -18,7 +18,7 @@ //! on all modules. use primitives::v1::{Id as ParaId, PersistedValidationData, ValidatorIndex}; -use sp_std::vec::Vec; +use sp_std::{collections::btree_set::BTreeSet, vec::Vec}; use crate::{configuration, hrmp, paras}; @@ -41,15 +41,49 @@ pub fn make_persisted_validation_data( }) } -/// Take the active subset of a set containing all validators. -pub fn take_active_subset(active_validators: &[ValidatorIndex], set: &[T]) -> Vec { - let subset: Vec<_> = active_validators +/// Take an active subset of a set containing all validators. +/// +/// First item in pair will be all items in set have indeces found in the `active` indices set (in +/// the order of the `active` vec, the second item will contain the rest, in the original order. +/// +/// ```ignore +/// split_active_subset(active.into_iter().collect(), all).0 == take_active_subset(active, all) +/// ``` +pub fn split_active_subset(active: &[ValidatorIndex], all: &[T]) -> (Vec, Vec) { + let active_set: BTreeSet<_> = active.iter().cloned().collect(); + // active result has ordering of active set. + let active_result = take_active_subset(active, all); + // inactive result preserves original ordering of `all`. + let inactive_result = all .iter() - .filter_map(|i| set.get(i.0 as usize)) + .enumerate() + .filter(|(i, _)| !active_set.contains(&ValidatorIndex(*i as _))) + .map(|(_, v)| v) .cloned() .collect(); - if subset.len() != active_validators.len() { + if active_result.len() != active.len() { + log::warn!( + target: "runtime::parachains", + "Took active validators from set with wrong size.", + ); + } + + (active_result, inactive_result) +} + +/// Uses `split_active_subset` and concatenates the inactive to the active vec. +pub fn take_active_subset_and_inactive(active: &[ValidatorIndex], all: &[T]) -> Vec { + let (mut a, mut i) = split_active_subset(active, all); + a.append(&mut i); + a +} + +/// Take the active subset of a set containing all validators. +pub fn take_active_subset(active: &[ValidatorIndex], set: &[T]) -> Vec { + let subset: Vec<_> = active.iter().filter_map(|i| set.get(i.0 as usize)).cloned().collect(); + + if subset.len() != active.len() { log::warn!( target: "runtime::parachains", "Took active validators from set with wrong size", @@ -58,3 +92,23 @@ pub fn take_active_subset(active_validators: &[ValidatorIndex], set: & subset } + +#[cfg(test)] +mod tests { + + use sp_std::vec::Vec; + + use crate::util::{split_active_subset, take_active_subset}; + use primitives::v1::ValidatorIndex; + + #[test] + fn take_active_subset_is_compatible_with_split_active_subset() { + let active: Vec<_> = vec![ValidatorIndex(1), ValidatorIndex(7), ValidatorIndex(3)]; + let validators = vec![9, 1, 6, 7, 4, 5, 2, 3, 0, 8]; + let (selected, unselected) = split_active_subset(&active, &validators); + let selected2 = take_active_subset(&active, &validators); + assert_eq!(selected, selected2); + assert_eq!(unselected, vec![9, 6, 4, 5, 2, 0, 8]); + assert_eq!(selected, vec![1, 3, 7]); + } +} From 68fc65e4b01b8f17d5a6807c1366dedc18086b14 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Tue, 14 Sep 2021 14:18:32 +0200 Subject: [PATCH 028/138] Better error messages. (#3835) * Better error messages. Right now, logged messages are hardly useful. Together with https://github.com/paritytech/substrate/pull/9768, this should help with debugging. * cargo fmt --- node/network/protocol/src/request_response/outgoing.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/network/protocol/src/request_response/outgoing.rs b/node/network/protocol/src/request_response/outgoing.rs index 38e3c44c7dae..e76b7b0eaac2 100644 --- a/node/network/protocol/src/request_response/outgoing.rs +++ b/node/network/protocol/src/request_response/outgoing.rs @@ -82,11 +82,11 @@ pub type ResponseSender = oneshot::Sender, network::RequestFailur #[derive(Debug, Error)] pub enum RequestError { /// Response could not be decoded. - #[error("Response could not be decoded")] + #[error("Response could not be decoded: {0}")] InvalidResponse(#[source] DecodingError), /// Some error in substrate/libp2p happened. - #[error("Some network error occurred")] + #[error("{0}")] NetworkError(#[source] network::RequestFailure), /// Response got canceled by networking. From 560e965f6a0657eff7e2dce9e14fa79813266146 Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Tue, 14 Sep 2021 21:01:19 +0800 Subject: [PATCH 029/138] Companion for substrate#9115 (#3265) * runtime(kusama/polkadot): migrations for collective storage prefix Signed-off-by: koushiro * fix * fix migration * spelling * Fix Signed-off-by: koushiro * Fix Signed-off-by: koushiro * update Substrate * fix unused Co-authored-by: thiolliere Co-authored-by: Shawn Tabrizi Co-authored-by: parity-processbot <> --- Cargo.lock | 306 ++++++++++---------- node/test/polkadot-simnet/common/src/lib.rs | 2 +- runtime/kusama/src/lib.rs | 57 +++- runtime/polkadot/src/lib.rs | 57 +++- 4 files changed, 266 insertions(+), 156 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 439b2f755f57..3716934ee922 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1920,7 +1920,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1938,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "Inflector", "chrono", @@ -1983,7 +1983,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "serde", @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "bitflags", "frame-metadata", @@ -2048,7 +2048,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2060,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro2", "quote", @@ -2082,7 +2082,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-metadata", "frame-support", @@ -2103,7 +2103,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -2113,7 +2113,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "log", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -2143,7 +2143,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2152,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "sp-api", @@ -4524,7 +4524,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -4539,7 +4539,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -4553,7 +4553,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4576,7 +4576,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4631,7 +4631,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4709,7 +4709,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4725,7 +4725,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4740,7 +4740,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4763,7 +4763,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4780,7 +4780,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4794,7 +4794,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4816,7 +4816,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4831,7 +4831,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4850,7 +4850,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4866,7 +4866,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4882,7 +4882,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4899,7 +4899,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -4915,7 +4915,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4932,7 +4932,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4946,7 +4946,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -4959,7 +4959,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -4975,7 +4975,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4997,7 +4997,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5011,7 +5011,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -5024,7 +5024,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5039,7 +5039,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5075,7 +5075,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5110,7 +5110,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5121,7 +5121,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "sp-arithmetic", @@ -5130,7 +5130,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -5143,7 +5143,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5160,7 +5160,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-support", "frame-system", @@ -5194,7 +5194,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5211,7 +5211,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5222,7 +5222,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5238,7 +5238,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-benchmarking", "frame-support", @@ -7598,7 +7598,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7857,7 +7857,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "sp-core", @@ -7868,7 +7868,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "derive_more", @@ -7895,7 +7895,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7918,7 +7918,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7934,7 +7934,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7950,7 +7950,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -7961,7 +7961,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "chrono", "fdlimit", @@ -7999,7 +7999,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "fnv", "futures 0.3.17", @@ -8027,7 +8027,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "hash-db", "kvdb", @@ -8052,7 +8052,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "futures 0.3.17", @@ -8076,7 +8076,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "derive_more", @@ -8119,7 +8119,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "derive_more", "futures 0.3.17", @@ -8143,7 +8143,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8156,7 +8156,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "assert_matches", "async-trait", @@ -8190,7 +8190,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "futures 0.3.17", @@ -8216,7 +8216,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "sc-client-api", "sp-authorship", @@ -8227,7 +8227,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8253,7 +8253,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "derive_more", "environmental", @@ -8271,7 +8271,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "parity-scale-codec", @@ -8287,7 +8287,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8306,7 +8306,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "derive_more", @@ -8343,7 +8343,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "derive_more", "finality-grandpa", @@ -8367,7 +8367,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8384,7 +8384,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "derive_more", @@ -8399,7 +8399,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "hash-db", "parity-scale-codec", @@ -8417,7 +8417,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-std", "async-trait", @@ -8468,7 +8468,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8484,7 +8484,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "bytes 1.0.1", "fnv", @@ -8511,7 +8511,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "libp2p", @@ -8524,7 +8524,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8533,7 +8533,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "hash-db", @@ -8564,7 +8564,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8589,7 +8589,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8606,7 +8606,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "directories", @@ -8671,7 +8671,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "parity-scale-codec", @@ -8685,7 +8685,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8707,7 +8707,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "chrono", "futures 0.3.17", @@ -8725,7 +8725,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8754,7 +8754,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8765,7 +8765,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "intervalier", @@ -8792,7 +8792,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "derive_more", "futures 0.3.17", @@ -8806,7 +8806,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9237,7 +9237,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "hash-db", "log", @@ -9254,7 +9254,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9266,7 +9266,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "serde", @@ -9278,7 +9278,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "integer-sqrt", "num-traits", @@ -9292,7 +9292,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sp-api", @@ -9304,7 +9304,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "parity-scale-codec", @@ -9316,7 +9316,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sp-api", @@ -9328,7 +9328,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "log", @@ -9346,7 +9346,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "futures 0.3.17", @@ -9365,7 +9365,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "merlin", @@ -9387,7 +9387,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9397,7 +9397,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "base58", "blake2-rfc", @@ -9453,7 +9453,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9462,7 +9462,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro2", "quote", @@ -9472,7 +9472,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "environmental", "parity-scale-codec", @@ -9483,7 +9483,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "finality-grandpa", "log", @@ -9500,7 +9500,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9514,7 +9514,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "hash-db", @@ -9539,7 +9539,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "lazy_static", "sp-core", @@ -9550,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "derive_more", @@ -9567,7 +9567,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "zstd", ] @@ -9575,7 +9575,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "serde", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9600,7 +9600,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "sp-api", "sp-core", @@ -9610,7 +9610,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "backtrace", ] @@ -9618,7 +9618,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "rustc-hash", "serde", @@ -9628,7 +9628,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "either", "hash256-std-hasher", @@ -9649,7 +9649,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9666,7 +9666,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9678,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "serde", "serde_json", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sp-api", @@ -9700,7 +9700,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9710,7 +9710,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "hash-db", "log", @@ -9733,12 +9733,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9751,7 +9751,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "sp-core", @@ -9764,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9780,7 +9780,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "erased-serde", "log", @@ -9798,7 +9798,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "sp-api", "sp-runtime", @@ -9807,7 +9807,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "log", @@ -9822,7 +9822,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "hash-db", "memory-db", @@ -9836,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9862,7 +9862,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10058,7 +10058,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "platforms", ] @@ -10066,7 +10066,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10088,7 +10088,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-std", "derive_more", @@ -10102,7 +10102,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "async-trait", "futures 0.3.17", @@ -10129,7 +10129,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10139,7 +10139,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10150,7 +10150,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10303,7 +10303,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "frame-system", "futures 0.3.17", @@ -10710,7 +10710,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#630422d6108cbaaca893ab213dde69f3bdaa1f6b" +source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" dependencies = [ "log", "parity-scale-codec", diff --git a/node/test/polkadot-simnet/common/src/lib.rs b/node/test/polkadot-simnet/common/src/lib.rs index 1d9d76708ae1..e35ca7f83b0c 100644 --- a/node/test/polkadot-simnet/common/src/lib.rs +++ b/node/test/polkadot-simnet/common/src/lib.rs @@ -31,7 +31,7 @@ use sc_executor::NativeElseWasmExecutor; use sc_service::{TFullBackend, TFullClient}; use sp_runtime::{app_crypto::sp_core::H256, generic::Era, AccountId32}; use std::{error::Error, future::Future, str::FromStr}; -use support::{weights::Weight, StorageValue}; +use support::weights::Weight; use test_runner::{ build_runtime, client_parts, ChainInfo, ConfigOrChainSpec, Node, SignatureVerificationOverride, }; diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index fdf93d69453e..d45f4e148c52 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1505,11 +1505,66 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (TechnicalMembershipStoragePrefixMigration, MigrateTipsPalletPrefix), + ( + CouncilStoragePrefixMigration, + TechnicalCommitteeStoragePrefixMigration, + TechnicalMembershipStoragePrefixMigration, + MigrateTipsPalletPrefix, + ), >; /// The payload being signed in the transactions. pub type SignedPayload = generic::SignedPayload; +const COUNCIL_OLD_PREFIX: &str = "Instance1Collective"; +/// Migrate from `Instance1Collective` to the new pallet prefix `Council` +pub struct CouncilStoragePrefixMigration; + +impl OnRuntimeUpgrade for CouncilStoragePrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_collective::migrations::v4::migrate::(COUNCIL_OLD_PREFIX) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::pre_migrate::(COUNCIL_OLD_PREFIX); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::post_migrate::(COUNCIL_OLD_PREFIX); + Ok(()) + } +} + +const TECHNICAL_COMMITTEE_OLD_PREFIX: &str = "Instance2Collective"; +/// Migrate from `Instance2Collective` to the new pallet prefix `TechnicalCommittee` +pub struct TechnicalCommitteeStoragePrefixMigration; + +impl OnRuntimeUpgrade for TechnicalCommitteeStoragePrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_collective::migrations::v4::migrate::( + TECHNICAL_COMMITTEE_OLD_PREFIX, + ) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::pre_migrate::( + TECHNICAL_COMMITTEE_OLD_PREFIX, + ); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::post_migrate::( + TECHNICAL_COMMITTEE_OLD_PREFIX, + ); + Ok(()) + } +} + const TECHNICAL_MEMBERSHIP_OLD_PREFIX: &str = "Instance1Membership"; /// Migrate from `Instance1Membership` to the new pallet prefix `TechnicalMembership` pub struct TechnicalMembershipStoragePrefixMigration; diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 300e37fe8883..3e0978a4647d 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1131,11 +1131,66 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (TechnicalMembershipStoragePrefixMigration, MigrateTipsPalletPrefix), + ( + CouncilStoragePrefixMigration, + TechnicalCommitteeStoragePrefixMigration, + TechnicalMembershipStoragePrefixMigration, + MigrateTipsPalletPrefix, + ), >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +const COUNCIL_OLD_PREFIX: &str = "Instance1Collective"; +/// Migrate from `Instance1Collective` to the new pallet prefix `Council` +pub struct CouncilStoragePrefixMigration; + +impl OnRuntimeUpgrade for CouncilStoragePrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_collective::migrations::v4::migrate::(COUNCIL_OLD_PREFIX) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::pre_migrate::(COUNCIL_OLD_PREFIX); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::post_migrate::(COUNCIL_OLD_PREFIX); + Ok(()) + } +} + +const TECHNICAL_COMMITTEE_OLD_PREFIX: &str = "Instance2Collective"; +/// Migrate from 'Instance2Collective' to the new pallet prefix `TechnicalCommittee` +pub struct TechnicalCommitteeStoragePrefixMigration; + +impl OnRuntimeUpgrade for TechnicalCommitteeStoragePrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_collective::migrations::v4::migrate::( + TECHNICAL_COMMITTEE_OLD_PREFIX, + ) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::pre_migrate::( + TECHNICAL_COMMITTEE_OLD_PREFIX, + ); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_collective::migrations::v4::post_migrate::( + TECHNICAL_COMMITTEE_OLD_PREFIX, + ); + Ok(()) + } +} + const TECHNICAL_MEMBERSHIP_OLD_PREFIX: &str = "Instance1Membership"; /// Migrate from `Instance1Membership` to the new pallet prefix `TechnicalMembership` pub struct TechnicalMembershipStoragePrefixMigration; From f33ecdb8f49b226634189b044ba6fefe38ef2375 Mon Sep 17 00:00:00 2001 From: Sergei Shulepov Date: Wed, 15 Sep 2021 11:13:44 +0200 Subject: [PATCH 030/138] UMP: Support Overweight messages (#3575) * Introduce new config: ump_max_individual_weight * Implement overweight msg stashing * Test * Add migration module. Also introduces a test for migration * Integrate ExecuteOverweightOrigin to runtimes * Fix more stuff * Add `yeet` into dictionary * Use suggested `Error` variant names * typo * Use 20ms as the maximum individual message weight * Update the test value * rustfmt * Clean up * Remove deprecated field from host config * Remove missed _hrmp_open_request_ttl * Apply typo fix suggestion Co-authored-by: Alexander Popiak * Rename `migration::migrate_to_latest` * Restore `_hrmp_open_request_ttl` in `v0::HostConfiguration` * Apply suggestion for a rustdoc * Apply the suggestion * Test v0 config with the raw production data fetched from Kusama * Update runtime/parachains/src/ump.rs Co-authored-by: Alexander Popiak * Expose migration functions * Fix spellcheck Co-authored-by: Alexander Popiak Co-authored-by: Shawn Tabrizi Co-authored-by: Keith Yeung --- node/service/src/chain_spec.rs | 1 - runtime/kusama/src/lib.rs | 1 + runtime/parachains/src/configuration.rs | 37 ++- .../parachains/src/configuration/migration.rs | 314 ++++++++++++++++++ runtime/parachains/src/mock.rs | 9 + runtime/parachains/src/ump.rs | 237 +++++++++++-- runtime/rococo/src/lib.rs | 1 + runtime/test-runtime/src/lib.rs | 1 + runtime/westend/src/lib.rs | 1 + scripts/gitlab/lingua.dic | 4 +- xcm/xcm-simulator/example/src/relay_chain.rs | 1 + 11 files changed, 572 insertions(+), 35 deletions(-) create mode 100644 runtime/parachains/src/configuration/migration.rs diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index f1cca5509bcb..3d370faa6aed 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -185,7 +185,6 @@ fn default_parachains_host_configuration( ump_service_total_weight: 4 * 1_000_000_000, max_upward_message_size: 1024 * 1024, max_upward_message_num_per_candidate: 5, - _hrmp_open_request_ttl: 5, hrmp_sender_deposit: 0, hrmp_recipient_deposit: 0, hrmp_channel_max_capacity: 8, diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index d45f4e148c52..3ad9a4fa1242 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1118,6 +1118,7 @@ impl parachains_ump::Config for Runtime { type Event = Event; type UmpSink = crate::parachains_ump::XcmSink, Runtime>; type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = EnsureRoot; } impl parachains_dmp::Config for Runtime {} diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index a6cadd158fc7..f2de0db6aa93 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -19,7 +19,7 @@ //! Configuration can change only at session boundaries and is buffered until then. use crate::shared; -use frame_support::pallet_prelude::*; +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}; @@ -28,6 +28,10 @@ use sp_std::prelude::*; pub use pallet::*; +pub mod migration; + +const LOG_TARGET: &str = "runtime::configuration"; + /// All configuration of the runtime with respect to parachains and parathreads. #[derive(Clone, Encode, Decode, PartialEq, sp_core::RuntimeDebug)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] @@ -91,10 +95,6 @@ pub struct HostConfiguration { pub hrmp_max_parachain_outbound_channels: u32, /// The maximum number of outbound HRMP channels a parathread is allowed to open. pub hrmp_max_parathread_outbound_channels: u32, - /// NOTE: this field is deprecated. Channel open requests became non-expiring. Changing this value - /// doesn't have any effect. This field doesn't have a `deprecated` attribute because that would - /// trigger warnings coming from macros. - pub _hrmp_open_request_ttl: u32, /// The deposit that the sender should provide for opening an HRMP channel. pub hrmp_sender_deposit: Balance, /// The deposit that the recipient should provide for accepting opening an HRMP channel. @@ -170,6 +170,9 @@ pub struct HostConfiguration { pub needed_approvals: u32, /// The number of samples to do of the `RelayVRFModulo` approval assignment criterion. pub relay_vrf_modulo_samples: u32, + /// The maximum amount of weight any individual upward message may consume. Messages above this + /// weight go into the overweight queue and may only be serviced explicitly. + pub ump_max_individual_weight: Weight, } impl> Default for HostConfiguration { @@ -204,7 +207,6 @@ impl> Default for HostConfiguration> Default for HostConfiguration(_); #[pallet::config] @@ -764,10 +768,24 @@ pub mod pallet { }); Ok(()) } + + /// Sets the maximum amount of weight any individual upward message may consume. + #[pallet::weight((1_000, DispatchClass::Operational))] + pub fn set_ump_max_individual_weight(origin: OriginFor, new: Weight) -> DispatchResult { + ensure_root(origin)?; + Self::update_config_member(|config| { + sp_std::mem::replace(&mut config.ump_max_individual_weight, new) != new + }); + Ok(()) + } } #[pallet::hooks] impl Hooks> for Pallet { + fn on_runtime_upgrade() -> Weight { + migration::migrate_to_latest::() + } + fn integrity_test() { assert_eq!( &ActiveConfig::::hashed_key(), @@ -888,7 +906,6 @@ mod tests { ump_service_total_weight: 20000, max_upward_message_size: 448, max_upward_message_num_per_candidate: 5, - _hrmp_open_request_ttl: 0, hrmp_sender_deposit: 22, hrmp_recipient_deposit: 4905, hrmp_channel_max_capacity: 3921, @@ -899,6 +916,7 @@ mod tests { hrmp_max_parachain_outbound_channels: 100, hrmp_max_parathread_outbound_channels: 200, hrmp_max_message_num_per_candidate: 20, + ump_max_individual_weight: 909, }; assert!(::PendingConfig::get(shared::SESSION_DELAY).is_none()); @@ -1060,6 +1078,11 @@ mod tests { new_config.hrmp_max_message_num_per_candidate, ) .unwrap(); + Configuration::set_ump_max_individual_weight( + Origin::root(), + new_config.ump_max_individual_weight, + ) + .unwrap(); assert_eq!( ::PendingConfig::get(shared::SESSION_DELAY), diff --git a/runtime/parachains/src/configuration/migration.rs b/runtime/parachains/src/configuration/migration.rs new file mode 100644 index 000000000000..6909eecc15a9 --- /dev/null +++ b/runtime/parachains/src/configuration/migration.rs @@ -0,0 +1,314 @@ +// 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 module that is responsible for migration of storage. + +use crate::configuration::{self, Config, Pallet, Store}; +use frame_support::{pallet_prelude::*, traits::StorageVersion, weights::Weight}; +use frame_system::pallet_prelude::BlockNumberFor; + +/// The current storage version. +pub const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); + +/// Migrates the pallet storage to the most recent version, checking and setting the `StorageVersion`. +pub fn migrate_to_latest() -> Weight { + let mut weight = 0; + + if StorageVersion::get::>() == 0 { + weight += migrate_to_v1::(); + StorageVersion::new(1).put::>(); + } + + weight +} + +mod v0 { + use super::*; + use primitives::v1::{Balance, SessionIndex}; + + #[derive(parity_scale_codec::Encode, parity_scale_codec::Decode, Debug)] + pub struct HostConfiguration { + pub max_code_size: u32, + pub max_head_data_size: u32, + pub max_upward_queue_count: u32, + pub max_upward_queue_size: u32, + pub max_upward_message_size: u32, + pub max_upward_message_num_per_candidate: u32, + pub hrmp_max_message_num_per_candidate: u32, + pub validation_upgrade_frequency: BlockNumber, + pub validation_upgrade_delay: BlockNumber, + pub max_pov_size: u32, + pub max_downward_message_size: u32, + pub ump_service_total_weight: Weight, + pub hrmp_max_parachain_outbound_channels: u32, + pub hrmp_max_parathread_outbound_channels: u32, + pub _hrmp_open_request_ttl: u32, + pub hrmp_sender_deposit: Balance, + pub hrmp_recipient_deposit: Balance, + pub hrmp_channel_max_capacity: u32, + pub hrmp_channel_max_total_size: u32, + pub hrmp_max_parachain_inbound_channels: u32, + pub hrmp_max_parathread_inbound_channels: u32, + pub hrmp_channel_max_message_size: u32, + pub code_retention_period: BlockNumber, + pub parathread_cores: u32, + pub parathread_retries: u32, + pub group_rotation_frequency: BlockNumber, + pub chain_availability_period: BlockNumber, + pub thread_availability_period: BlockNumber, + pub scheduling_lookahead: u32, + pub max_validators_per_core: Option, + pub max_validators: Option, + pub dispute_period: SessionIndex, + pub dispute_post_conclusion_acceptance_period: BlockNumber, + pub dispute_max_spam_slots: u32, + pub dispute_conclusion_by_time_out_period: BlockNumber, + pub no_show_slots: u32, + pub n_delay_tranches: u32, + pub zeroth_delay_tranche_width: u32, + pub needed_approvals: u32, + pub relay_vrf_modulo_samples: u32, + } + + impl> Default for HostConfiguration { + fn default() -> Self { + HostConfiguration { + group_rotation_frequency: 1u32.into(), + chain_availability_period: 1u32.into(), + thread_availability_period: 1u32.into(), + no_show_slots: 1u32.into(), + validation_upgrade_frequency: Default::default(), + validation_upgrade_delay: Default::default(), + code_retention_period: Default::default(), + max_code_size: Default::default(), + max_pov_size: Default::default(), + max_head_data_size: Default::default(), + parathread_cores: Default::default(), + parathread_retries: Default::default(), + scheduling_lookahead: Default::default(), + max_validators_per_core: Default::default(), + max_validators: None, + dispute_period: 6, + dispute_post_conclusion_acceptance_period: 100.into(), + dispute_max_spam_slots: 2, + dispute_conclusion_by_time_out_period: 200.into(), + n_delay_tranches: Default::default(), + zeroth_delay_tranche_width: Default::default(), + needed_approvals: Default::default(), + relay_vrf_modulo_samples: Default::default(), + max_upward_queue_count: Default::default(), + max_upward_queue_size: Default::default(), + max_downward_message_size: Default::default(), + ump_service_total_weight: Default::default(), + max_upward_message_size: Default::default(), + max_upward_message_num_per_candidate: Default::default(), + _hrmp_open_request_ttl: Default::default(), + hrmp_sender_deposit: Default::default(), + hrmp_recipient_deposit: Default::default(), + hrmp_channel_max_capacity: Default::default(), + hrmp_channel_max_total_size: Default::default(), + hrmp_max_parachain_inbound_channels: Default::default(), + hrmp_max_parathread_inbound_channels: Default::default(), + hrmp_channel_max_message_size: Default::default(), + hrmp_max_parachain_outbound_channels: Default::default(), + hrmp_max_parathread_outbound_channels: Default::default(), + hrmp_max_message_num_per_candidate: Default::default(), + } + } + } +} + +/// Migrates the `HostConfiguration` from v0 (with deprecated `hrmp_open_request_ttl` and without +/// `ump_max_individual_weight`) to v1 (without HRMP TTL and with max individual weight). +/// Uses the `Default` implementation of `HostConfiguration` to choose a value for `ump_max_individual_weight`. +/// +/// NOTE: Only use this function if you know what you are doing. Default to using `migrate_to_latest`. +pub fn migrate_to_v1() -> Weight { + // Unusual formatting is justified: + // - make it easier to verify that fields assign what they supposed to assign. + // - this code is transient and will be removed after all migrations are done. + // - this code is important enough to optimize for legibility sacrificing consistency. + #[rustfmt::skip] + let translate = + |pre: v0::HostConfiguration>| -> configuration::HostConfiguration> + { + super::HostConfiguration { + +max_code_size : pre.max_code_size, +max_head_data_size : pre.max_head_data_size, +max_upward_queue_count : pre.max_upward_queue_count, +max_upward_queue_size : pre.max_upward_queue_size, +max_upward_message_size : pre.max_upward_message_size, +max_upward_message_num_per_candidate : pre.max_upward_message_num_per_candidate, +hrmp_max_message_num_per_candidate : pre.hrmp_max_message_num_per_candidate, +validation_upgrade_frequency : pre.validation_upgrade_frequency, +validation_upgrade_delay : pre.validation_upgrade_delay, +max_pov_size : pre.max_pov_size, +max_downward_message_size : pre.max_downward_message_size, +ump_service_total_weight : pre.ump_service_total_weight, +hrmp_max_parachain_outbound_channels : pre.hrmp_max_parachain_outbound_channels, +hrmp_max_parathread_outbound_channels : pre.hrmp_max_parathread_outbound_channels, +hrmp_sender_deposit : pre.hrmp_sender_deposit, +hrmp_recipient_deposit : pre.hrmp_recipient_deposit, +hrmp_channel_max_capacity : pre.hrmp_channel_max_capacity, +hrmp_channel_max_total_size : pre.hrmp_channel_max_total_size, +hrmp_max_parachain_inbound_channels : pre.hrmp_max_parachain_inbound_channels, +hrmp_max_parathread_inbound_channels : pre.hrmp_max_parathread_inbound_channels, +hrmp_channel_max_message_size : pre.hrmp_channel_max_message_size, +code_retention_period : pre.code_retention_period, +parathread_cores : pre.parathread_cores, +parathread_retries : pre.parathread_retries, +group_rotation_frequency : pre.group_rotation_frequency, +chain_availability_period : pre.chain_availability_period, +thread_availability_period : pre.thread_availability_period, +scheduling_lookahead : pre.scheduling_lookahead, +max_validators_per_core : pre.max_validators_per_core, +max_validators : pre.max_validators, +dispute_period : pre.dispute_period, +dispute_post_conclusion_acceptance_period: pre.dispute_post_conclusion_acceptance_period, +dispute_max_spam_slots : pre.dispute_max_spam_slots, +dispute_conclusion_by_time_out_period : pre.dispute_conclusion_by_time_out_period, +no_show_slots : pre.no_show_slots, +n_delay_tranches : pre.n_delay_tranches, +zeroth_delay_tranche_width : pre.zeroth_delay_tranche_width, +needed_approvals : pre.needed_approvals, +relay_vrf_modulo_samples : pre.relay_vrf_modulo_samples, + +ump_max_individual_weight: >>::default().ump_max_individual_weight, + } + }; + + if let Err(_) = as Store>::ActiveConfig::translate(|pre| pre.map(translate)) { + // `Err` is returned when the pre-migration type cannot be deserialized. This + // cannot happen if the migration runs correctly, i.e. against the expected version. + // + // This happening almost surely will lead to a panic somewhere else. Corruption seems + // to be unlikely to be caused by this. So we just log. Maybe it'll work out still? + log::error!( + target: configuration::LOG_TARGET, + "unexpected error when performing translation of the configuration type during storage upgrade to v1." + ); + } + + T::DbWeight::get().reads_writes(1, 1) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::mock::{new_test_ext, Test}; + + #[test] + fn v0_deserialized_from_actual_data() { + // Fetched at Kusama 9,207,703 (0xbfe5227324c08b3ab67e0473a360acbce43efbd7b42041d0033adaf9ff2c5330) + // + // This exceeds the maximal line width length, but that's fine, since this is not code and + // doesn't need to be read and also leaving it as one line allows to easily copy it. + let raw_config = hex_literal::hex!["0000a000005000000a00000000c8000000c800000a0000000a00000040380000580200000000500000c8000000e87648170000000a0000000000000048000000c09e5d9a2f3d00000000000000000000c09e5d9a2f3d00000000000000000000e8030000009001000a00000000000000009001008070000000000000000000000a0000000a0000000a00000001000000010500000001c8000000060000005802000002000000580200000200000059000000000000001e00000028000000"]; + + let v0 = v0::HostConfiguration::::decode(&mut &raw_config[..]) + .unwrap(); + + // We check only a sample of the values here. If we missed any fields or messed up data types + // that would skew all the fields coming after. + assert_eq!(v0.max_code_size, 10_485_760); + assert_eq!(v0.validation_upgrade_frequency, 14_400); + assert_eq!(v0.max_pov_size, 5_242_880); + assert_eq!(v0._hrmp_open_request_ttl, 72); + assert_eq!(v0.hrmp_channel_max_message_size, 102_400); + assert_eq!(v0.dispute_max_spam_slots, 2); + assert_eq!(v0.n_delay_tranches, 89); + assert_eq!(v0.relay_vrf_modulo_samples, 40); + } + + #[test] + fn test_migrate_to_v1() { + // Host configuration has lots of fields. However, in this migration we add one and remove one + // field. The most important part to check are a couple of the last fields. We also pick + // extra fields to check arbitrarily, e.g. depending on their position (i.e. the middle) and + // also their type. + // + // We specify only the picked fields and the rest should be provided by the `Default` + // implementation. That implementation is copied over between the two types and should work + // fine. + let v0 = v0::HostConfiguration:: { + relay_vrf_modulo_samples: 0xFEEDBEEFu32, + needed_approvals: 69, + thread_availability_period: 55, + hrmp_recipient_deposit: 1337, + max_pov_size: 1111, + ..Default::default() + }; + + new_test_ext(Default::default()).execute_with(|| { + // Implant the v0 version in the state. + frame_support::storage::unhashed::put_raw( + &configuration::ActiveConfig::::hashed_key(), + &v0.encode(), + ); + + migrate_to_v1::(); + + let v1 = configuration::ActiveConfig::::get(); + + // The same motivation as for the migration code. See `migrate_to_v1`. + #[rustfmt::skip] + { + assert_eq!(v0.max_code_size , v1.max_code_size); + assert_eq!(v0.max_head_data_size , v1.max_head_data_size); + assert_eq!(v0.max_upward_queue_count , v1.max_upward_queue_count); + assert_eq!(v0.max_upward_queue_size , v1.max_upward_queue_size); + assert_eq!(v0.max_upward_message_size , v1.max_upward_message_size); + assert_eq!(v0.max_upward_message_num_per_candidate , v1.max_upward_message_num_per_candidate); + assert_eq!(v0.hrmp_max_message_num_per_candidate , v1.hrmp_max_message_num_per_candidate); + assert_eq!(v0.validation_upgrade_frequency , v1.validation_upgrade_frequency); + assert_eq!(v0.validation_upgrade_delay , v1.validation_upgrade_delay); + assert_eq!(v0.max_pov_size , v1.max_pov_size); + assert_eq!(v0.max_downward_message_size , v1.max_downward_message_size); + assert_eq!(v0.ump_service_total_weight , v1.ump_service_total_weight); + assert_eq!(v0.hrmp_max_parachain_outbound_channels , v1.hrmp_max_parachain_outbound_channels); + assert_eq!(v0.hrmp_max_parathread_outbound_channels , v1.hrmp_max_parathread_outbound_channels); + assert_eq!(v0.hrmp_sender_deposit , v1.hrmp_sender_deposit); + assert_eq!(v0.hrmp_recipient_deposit , v1.hrmp_recipient_deposit); + assert_eq!(v0.hrmp_channel_max_capacity , v1.hrmp_channel_max_capacity); + assert_eq!(v0.hrmp_channel_max_total_size , v1.hrmp_channel_max_total_size); + assert_eq!(v0.hrmp_max_parachain_inbound_channels , v1.hrmp_max_parachain_inbound_channels); + assert_eq!(v0.hrmp_max_parathread_inbound_channels , v1.hrmp_max_parathread_inbound_channels); + assert_eq!(v0.hrmp_channel_max_message_size , v1.hrmp_channel_max_message_size); + assert_eq!(v0.code_retention_period , v1.code_retention_period); + assert_eq!(v0.parathread_cores , v1.parathread_cores); + assert_eq!(v0.parathread_retries , v1.parathread_retries); + assert_eq!(v0.group_rotation_frequency , v1.group_rotation_frequency); + assert_eq!(v0.chain_availability_period , v1.chain_availability_period); + assert_eq!(v0.thread_availability_period , v1.thread_availability_period); + assert_eq!(v0.scheduling_lookahead , v1.scheduling_lookahead); + assert_eq!(v0.max_validators_per_core , v1.max_validators_per_core); + assert_eq!(v0.max_validators , v1.max_validators); + assert_eq!(v0.dispute_period , v1.dispute_period); + assert_eq!(v0.dispute_post_conclusion_acceptance_period, v1.dispute_post_conclusion_acceptance_period); + assert_eq!(v0.dispute_max_spam_slots , v1.dispute_max_spam_slots); + assert_eq!(v0.dispute_conclusion_by_time_out_period , v1.dispute_conclusion_by_time_out_period); + assert_eq!(v0.no_show_slots , v1.no_show_slots); + assert_eq!(v0.n_delay_tranches , v1.n_delay_tranches); + assert_eq!(v0.zeroth_delay_tranche_width , v1.zeroth_delay_tranche_width); + assert_eq!(v0.needed_approvals , v1.needed_approvals); + assert_eq!(v0.relay_vrf_modulo_samples , v1.relay_vrf_modulo_samples); + + assert_eq!(v1.ump_max_individual_weight, 20_000_000_000); + }; // ; makes this a statement. `rustfmt::skip` cannot be put on an expression. + }); + } +} diff --git a/runtime/parachains/src/mock.rs b/runtime/parachains/src/mock.rs index 88e241426d62..5cf8d6237485 100644 --- a/runtime/parachains/src/mock.rs +++ b/runtime/parachains/src/mock.rs @@ -133,6 +133,7 @@ impl crate::ump::Config for Test { type Event = Event; type UmpSink = TestUmpSink; type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = frame_system::EnsureRoot; } impl crate::hrmp::Config for Test { @@ -309,3 +310,11 @@ pub struct MockGenesisConfig { pub configuration: crate::configuration::GenesisConfig, pub paras: crate::paras::GenesisConfig, } + +pub 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); +} diff --git a/runtime/parachains/src/ump.rs b/runtime/parachains/src/ump.rs index ae04d2d460df..a4f046024802 100644 --- a/runtime/parachains/src/ump.rs +++ b/runtime/parachains/src/ump.rs @@ -18,10 +18,11 @@ use crate::{ configuration::{self, HostConfiguration}, initializer, }; -use frame_support::pallet_prelude::*; +use frame_support::{pallet_prelude::*, traits::EnsureOrigin}; +use frame_system::pallet_prelude::*; use primitives::v1::{Id as ParaId, UpwardMessage}; use sp_std::{ - collections::btree_map::BTreeMap, convert::TryFrom, fmt, marker::PhantomData, prelude::*, + collections::btree_map::BTreeMap, convert::TryFrom, fmt, marker::PhantomData, mem, prelude::*, }; use xcm::latest::Outcome; @@ -70,10 +71,18 @@ impl UmpSink for () { /// if the message content is unique. pub type MessageId = [u8; 32]; +/// Index used to identify overweight messages. +pub type OverweightIndex = u64; + /// A specific implementation of a `UmpSink` where messages are in the XCM format /// and will be forwarded to the XCM Executor. pub struct XcmSink(PhantomData<(XcmExecutor, Config)>); +/// Returns a [`MessageId`] for the given upward message payload. +fn upward_message_id(data: &[u8]) -> MessageId { + sp_io::hashing::blake2_256(data) +} + impl, C: Config> UmpSink for XcmSink { fn process_upward_message( origin: ParaId, @@ -86,7 +95,7 @@ impl, C: Config> UmpSink for XcmSi VersionedXcm, }; - let id = sp_io::hashing::blake2_256(&data[..]); + let id = upward_message_id(&data[..]); let maybe_msg = VersionedXcm::::decode_all_with_depth_limit( xcm::MAX_XCM_DECODE_DEPTH, &mut &data[..], @@ -177,6 +186,9 @@ pub mod pallet { /// /// Generally you'll want this to be a bit more - 150 or 200 would be good values. type FirstMessageFactorPercent: Get; + + /// Origin which is allowed to execute overweight messages. + type ExecuteOverweightOrigin: EnsureOrigin; } #[pallet::event] @@ -197,6 +209,26 @@ pub mod pallet { /// Some downward messages have been received and will be processed. /// \[ para, count, size \] UpwardMessagesReceived(ParaId, u32, u32), + /// The weight budget was exceeded for an individual downward message. + /// + /// This message can be later dispatched manually using `service_overweight` dispatchable + /// using the assigned `overweight_index`. + /// + /// \[ para, id, overweight_index, required \] + OverweightEnqueued(ParaId, MessageId, OverweightIndex, Weight), + /// Downward message from the overweight queue was executed with the given actual weight + /// used. + /// + /// \[ overweight_index, used \] + OverweightServiced(OverweightIndex, Weight), + } + + #[pallet::error] + pub enum Error { + /// The message index given is unknown. + UnknownMessageIndex, + /// The amount of weight given is possibly not enough for executing the message. + WeightOverLimit, } /// The messages waiting to be handled by the relay-chain originating from a certain parachain. @@ -242,8 +274,49 @@ pub mod pallet { #[pallet::storage] pub type NextDispatchRoundStartWith = StorageValue<_, ParaId>; + /// The messages that exceeded max individual message weight budget. + /// + /// These messages stay there until manually dispatched. + #[pallet::storage] + pub type Overweight = + StorageMap<_, Twox64Concat, OverweightIndex, (ParaId, Vec), OptionQuery>; + + /// The number of overweight messages ever recorded in `Overweight` (and thus the lowest free + /// index). + #[pallet::storage] + pub type OverweightCount = StorageValue<_, OverweightIndex, ValueQuery>; + #[pallet::call] - impl Pallet {} + impl Pallet { + /// Service a single overweight upward message. + /// + /// - `origin`: Must pass `ExecuteOverweightOrigin`. + /// - `index`: The index of the overweight message to service. + /// - `weight_limit`: The amount of weight that message execution may take. + /// + /// Errors: + /// - `UnknownMessageIndex`: Message of `index` is unknown. + /// - `WeightOverLimit`: Message execution may use greater than `weight_limit`. + /// + /// Events: + /// - `OverweightServiced`: On success. + #[pallet::weight(weight_limit.saturating_add(1_000_000))] + pub fn service_overweight( + origin: OriginFor, + index: OverweightIndex, + weight_limit: Weight, + ) -> DispatchResultWithPostInfo { + T::ExecuteOverweightOrigin::ensure_origin(origin)?; + + let (sender, data) = + Overweight::::get(index).ok_or(Error::::UnknownMessageIndex)?; + let used = T::UmpSink::process_upward_message(sender, &data[..], weight_limit) + .map_err(|_| Error::::WeightOverLimit)?; + Overweight::::remove(index); + Self::deposit_event(Event::OverweightServiced(index, used)); + Ok(Some(used.saturating_add(1_000_000)).into()) + } + } } /// Routines related to the upward message passing. @@ -406,26 +479,36 @@ impl Pallet { // attempt to process the next message from the queue of the dispatchee; if not beyond // our remaining weight limit, then consume it. let maybe_next = queue_cache.peek_front::(dispatchee); - let became_empty = if let Some(upward_message) = maybe_next { + if let Some(upward_message) = maybe_next { match T::UmpSink::process_upward_message(dispatchee, upward_message, max_weight) { Ok(used) => { weight_used += used; - queue_cache.consume_front::(dispatchee) + let _ = queue_cache.consume_front::(dispatchee); }, Err((id, required)) => { - // we process messages in order and don't drop them if we run out of weight, - // so need to break here without calling `consume_front`. - Self::deposit_event(Event::WeightExhausted(id, max_weight, required)); - break + if required > config.ump_max_individual_weight { + // overweight - add to overweight queue and continue with message + // execution consuming the message. + let upward_message = queue_cache.consume_front::(dispatchee).expect( + "`consume_front` should return the same msg as `peek_front`;\ + if we get into this branch then `peek_front` returned `Some`;\ + thus `upward_message` cannot be `None`; qed", + ); + let index = Self::stash_overweight(dispatchee, upward_message); + Self::deposit_event(Event::OverweightEnqueued( + dispatchee, id, index, required, + )); + } else { + // we process messages in order and don't drop them if we run out of weight, + // so need to break here without calling `consume_front`. + Self::deposit_event(Event::WeightExhausted(id, max_weight, required)); + break + } }, } - } else { - // this should never happen, since the cursor should never point to an empty queue. - // it is resolved harmlessly here anyway. - true - }; + } - if became_empty { + if queue_cache.is_empty::(dispatchee) { // the queue is empty now - this para doesn't need attention anymore. cursor.remove(); } else { @@ -438,6 +521,19 @@ impl Pallet { weight_used } + + /// Puts a given upward message into the list of overweight messages allowing it to be executed + /// later. + fn stash_overweight(sender: ParaId, upward_message: Vec) -> OverweightIndex { + let index = ::OverweightCount::mutate(|count| { + let index = *count; + *count += 1; + index + }); + + ::Overweight::insert(index, (sender, upward_message)); + index + } } /// To avoid constant fetching, deserializing and serialization the queues are cached. @@ -490,16 +586,27 @@ impl QueueCache { /// Attempts to remove one message from the front of `para`'s queue. If the queue is empty, then /// does nothing. - /// - /// Returns `true` iff there are no more messages in the queue after the removal attempt. - fn consume_front(&mut self, para: ParaId) -> bool { + fn consume_front(&mut self, para: ParaId) -> Option { let cache_entry = self.ensure_cached::(para); - let upward_message = cache_entry.queue.get(cache_entry.consumed_count); - if let Some(msg) = upward_message { - cache_entry.consumed_count += 1; - cache_entry.consumed_size += msg.len(); + + match cache_entry.queue.get_mut(cache_entry.consumed_count) { + Some(msg) => { + cache_entry.consumed_count += 1; + cache_entry.consumed_size += msg.len(); + + Some(mem::take(msg)) + }, + None => None, } + } + /// Returns if the queue for the given para is empty. + /// + /// That is, if this returns `true` then the next call to [`peek_front`] will return `None`. + /// + /// Does not mutate the queue. + fn is_empty(&mut self, para: ParaId) -> bool { + let cache_entry = self.ensure_cached::(para); cache_entry.consumed_count >= cache_entry.queue.len() } @@ -600,8 +707,11 @@ impl NeedsDispatchCursor { #[cfg(test)] pub(crate) mod tests { use super::*; - use crate::mock::{new_test_ext, take_processed, Configuration, MockGenesisConfig, Ump}; - use frame_support::weights::Weight; + use crate::mock::{ + assert_last_event, new_test_ext, take_processed, Configuration, MockGenesisConfig, Origin, + System, Test, Ump, + }; + use frame_support::{assert_noop, assert_ok, weights::Weight}; use std::collections::HashSet; struct GenesisConfigBuilder { @@ -610,6 +720,7 @@ pub(crate) mod tests { max_upward_queue_count: u32, max_upward_queue_size: u32, ump_service_total_weight: Weight, + ump_max_individual_weight: Weight, } impl Default for GenesisConfigBuilder { @@ -620,6 +731,7 @@ pub(crate) mod tests { max_upward_queue_count: 4, max_upward_queue_size: 64, ump_service_total_weight: 1000, + ump_max_individual_weight: 100, } } } @@ -634,6 +746,7 @@ pub(crate) mod tests { config.max_upward_queue_count = self.max_upward_queue_count; config.max_upward_queue_size = self.max_upward_queue_size; config.ump_service_total_weight = self.ump_service_total_weight; + config.ump_max_individual_weight = self.ump_max_individual_weight; genesis } } @@ -778,7 +891,12 @@ pub(crate) mod tests { let a_msg_2 = (300u32, "a_msg_2").encode(); new_test_ext( - GenesisConfigBuilder { ump_service_total_weight: 500, ..Default::default() }.build(), + GenesisConfigBuilder { + ump_service_total_weight: 500, + ump_max_individual_weight: 300, + ..Default::default() + } + .build(), ) .execute_with(|| { queue_upward_msg(a, a_msg_1.clone()); @@ -856,4 +974,71 @@ pub(crate) mod tests { assert_eq!(size, 3); }); } + + #[test] + fn service_overweight_unknown() { + // This test just makes sure that 0 is not a valid index and we can use it not worrying in + // the next test. + new_test_ext(GenesisConfigBuilder::default().build()).execute_with(|| { + assert_noop!( + Ump::service_overweight(Origin::root(), 0, 1000), + Error::::UnknownMessageIndex + ); + }); + } + + #[test] + fn overweight_queue_works() { + let para_a = ParaId::from(2021); + + let a_msg_1 = (301u32, "a_msg_1").encode(); + let a_msg_2 = (500u32, "a_msg_2").encode(); + let a_msg_3 = (500u32, "a_msg_3").encode(); + + new_test_ext( + GenesisConfigBuilder { + ump_service_total_weight: 900, + ump_max_individual_weight: 300, + ..Default::default() + } + .build(), + ) + .execute_with(|| { + // HACK: Start with the block number 1. This is needed because should an event be + // emitted during the genesis block they will be implicitly wiped. + System::set_block_number(1); + + // This one is overweight. However, the weight is plenty and we can afford to execute + // this message, thus expect it. + queue_upward_msg(para_a, a_msg_1.clone()); + Ump::process_pending_upward_messages(); + assert_eq!(take_processed(), vec![(para_a, a_msg_1)]); + + // This is overweight and this message cannot fit into the total weight budget. + queue_upward_msg(para_a, a_msg_2.clone()); + queue_upward_msg(para_a, a_msg_3.clone()); + Ump::process_pending_upward_messages(); + assert_last_event( + Event::OverweightEnqueued(para_a, upward_message_id(&a_msg_3[..]), 0, 500).into(), + ); + + // Now verify that if we wanted to service this overweight message with less than enough + // weight it will fail. + assert_noop!( + Ump::service_overweight(Origin::root(), 0, 499), + Error::::WeightOverLimit + ); + + // ... and if we try to service it with just enough weight it will succeed as well. + assert_ok!(Ump::service_overweight(Origin::root(), 0, 500)); + assert_last_event(Event::OverweightServiced(0, 500).into()); + + // ... and if we try to service a message with index that doesn't exist it will error + // out. + assert_noop!( + Ump::service_overweight(Origin::root(), 1, 1000), + Error::::UnknownMessageIndex + ); + }); + } } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 3da4fba66ec4..d29bf8d6543f 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -718,6 +718,7 @@ impl parachains_ump::Config for Runtime { type Event = Event; type UmpSink = crate::parachains_ump::XcmSink, Runtime>; type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = EnsureRoot; } impl parachains_dmp::Config for Runtime {} diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 723ee4495846..21d26e8fdf6d 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -491,6 +491,7 @@ impl parachains_ump::Config for Runtime { type Event = Event; type UmpSink = (); type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = frame_system::EnsureRoot; } parameter_types! { diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 24e522ef409c..6a1eae9efc80 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -786,6 +786,7 @@ impl parachains_ump::Config for Runtime { type Event = Event; type UmpSink = crate::parachains_ump::XcmSink, Runtime>; type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = EnsureRoot; } impl parachains_dmp::Config for Runtime {} diff --git a/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index dc50c5d8ef6b..592dee567f72 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -249,6 +249,7 @@ timestamp/MS transitionary trie/MS trustless/Y +TTL tuple/SM typesystem ubuntu/M @@ -292,6 +293,7 @@ WND/S Wococo XCM/S XCMP/M +yeet decrement DM -ParaId \ No newline at end of file +ParaId diff --git a/xcm/xcm-simulator/example/src/relay_chain.rs b/xcm/xcm-simulator/example/src/relay_chain.rs index 3b27d800a510..a6f6f1989174 100644 --- a/xcm/xcm-simulator/example/src/relay_chain.rs +++ b/xcm/xcm-simulator/example/src/relay_chain.rs @@ -166,6 +166,7 @@ impl ump::Config for Runtime { type Event = Event; type UmpSink = ump::XcmSink, Runtime>; type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = frame_system::EnsureRoot; } impl origin::Config for Runtime {} From 7e7506e4fa2f2aeba3ac3374828bf6c485b6ec6f Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 15 Sep 2021 04:17:49 -0500 Subject: [PATCH 031/138] improve approval tracing (#3846) * improve approval tracing * Update node/core/approval-voting/src/import.rs * Update node/core/approval-voting/src/import.rs Co-authored-by: Andronik Ordian --- node/core/approval-voting/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index 529523b5b8f9..7d536df90b33 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -1063,7 +1063,7 @@ async fn handle_from_overseer( Ok(block_imported_candidates) => { // Schedule wakeups for all imported candidates. for block_batch in block_imported_candidates { - tracing::debug!( + tracing::trace!( target: LOG_TARGET, block_hash = ?block_batch.block_hash, num_candidates = block_batch.imported_candidates.len(), @@ -2410,7 +2410,7 @@ async fn issue_approval( ) .expect("Statement just signed; should pass checks; qed"); - tracing::debug!( + tracing::trace!( target: LOG_TARGET, ?candidate_hash, ?block_hash, From 4322a332f05e56d6939bf29d29e528af8264be99 Mon Sep 17 00:00:00 2001 From: Alexander <41779041+alvicsam@users.noreply.github.com> Date: Wed, 15 Sep 2021 15:09:52 +0200 Subject: [PATCH 032/138] Add build with docker info to README (#3843) --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index d5251eb319d1..034a23a59e62 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,22 @@ cargo build --release Note that compilation is a memory intensive process. We recommend having 4 GiB of physical RAM or swap available (keep in mind that if a build hits swap it tends to be very slow). +#### Build from Source with Docker + +You can also build from source using +[Parity CI docker image](https://github.com/paritytech/scripts/tree/master/dockerfiles/ci-linux): + +```bash +git checkout +docker run --rm -it -w /shellhere/polkadot \ + -v $(pwd):/shellhere/polkadot \ + paritytech/ci-linux:production cargo build --release +sudo chown -R $(id -u):$(id -g) target/ +``` + +If you want to reproduce other steps of CI process you can use the following +[guide](https://github.com/paritytech/scripts#gitlab-ci-for-building-docker-images). + ## Networks This repo supports runtimes for Polkadot, Kusama, and Westend. From e1d29ffbeba520aa44bdfbf60d0c24558addfe75 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 15 Sep 2021 14:30:03 -0500 Subject: [PATCH 033/138] approval-voting: processed wakeups can also update approval state (#3848) * approval-voting: processed wakeups can also update approval state * fmt changes * reverse broken if condition * further correct condition * add test * fmt * Update node/core/approval-voting/src/lib.rs Co-authored-by: Andronik Ordian Co-authored-by: Andronik Ordian --- node/core/approval-voting/src/lib.rs | 109 +++++++------- node/core/approval-voting/src/tests.rs | 194 +++++++++++++++++++++++++ 2 files changed, 247 insertions(+), 56 deletions(-) diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index 7d536df90b33..b7588710b1a3 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -694,6 +694,7 @@ where woken_block, woken_candidate, tick, + &subsystem.metrics, )? } next_msg = ctx.recv().fuse() => { @@ -1710,14 +1711,14 @@ fn check_and_import_approval( None }; - let mut actions = import_checked_approval( + let mut actions = advance_approval_state( state, db, &metrics, block_entry, approved_candidate_hash, candidate_entry, - ApprovalSource::Remote(approval.validator), + ApprovalStateTransition::RemoteApproval(approval.validator), ); actions.extend(inform_disputes_action); @@ -1725,41 +1726,46 @@ fn check_and_import_approval( Ok((actions, t)) } -enum ApprovalSource { - Remote(ValidatorIndex), - Local(ValidatorIndex, ValidatorSignature), +#[derive(Debug)] +enum ApprovalStateTransition { + RemoteApproval(ValidatorIndex), + LocalApproval(ValidatorIndex, ValidatorSignature), + WakeupProcessed, } -impl ApprovalSource { - fn validator_index(&self) -> ValidatorIndex { +impl ApprovalStateTransition { + fn validator_index(&self) -> Option { match *self { - ApprovalSource::Remote(v) | ApprovalSource::Local(v, _) => v, + ApprovalStateTransition::RemoteApproval(v) | + ApprovalStateTransition::LocalApproval(v, _) => Some(v), + ApprovalStateTransition::WakeupProcessed => None, } } - fn is_remote(&self) -> bool { + fn is_local_approval(&self) -> bool { match *self { - ApprovalSource::Remote(_) => true, - ApprovalSource::Local(_, _) => false, + ApprovalStateTransition::RemoteApproval(_) => false, + ApprovalStateTransition::LocalApproval(_, _) => true, + ApprovalStateTransition::WakeupProcessed => false, } } } -// Import an approval vote which is already checked to be valid and corresponding to an assigned -// validator on the candidate and block. This updates the block entry and candidate entry as +// Advance the approval state, either by importing an approval vote which is already checked to be valid and corresponding to an assigned +// validator on the candidate and block, or by noting that there are no further wakeups or tranches needed. This updates the block entry and candidate entry as // necessary and schedules any further wakeups. -fn import_checked_approval( +fn advance_approval_state( state: &State, db: &mut OverlayedBackend<'_, impl Backend>, metrics: &Metrics, mut block_entry: BlockEntry, candidate_hash: CandidateHash, mut candidate_entry: CandidateEntry, - source: ApprovalSource, + transition: ApprovalStateTransition, ) -> Vec { - let validator_index = source.validator_index(); + let validator_index = transition.validator_index(); - let already_approved_by = candidate_entry.mark_approval(validator_index); + let already_approved_by = validator_index.as_ref().map(|v| candidate_entry.mark_approval(*v)); let candidate_approved_in_block = block_entry.is_candidate_approved(&candidate_hash); // Check for early exits. @@ -1771,17 +1777,13 @@ fn import_checked_approval( // If the block was approved, but the validator hadn't approved it yet, we should still hold // onto the approval vote on-disk in case we restart and rebroadcast votes. Otherwise, our // assignment might manifest as a no-show. - match source { - ApprovalSource::Remote(_) => { - // We don't store remote votes, so we can early exit as long at the candidate is - // already concluded under the block i.e. we don't need more approvals. - if candidate_approved_in_block { - return Vec::new() - } - }, - ApprovalSource::Local(_, _) => { - // We never early return on the local validator. - }, + if !transition.is_local_approval() { + // We don't store remote votes and there's nothing to store for processed wakeups, + // so we can early exit as long at the candidate is already concluded under the + // block i.e. we don't need more approvals. + if candidate_approved_in_block { + return Vec::new() + } } let mut actions = Vec::new(); @@ -1852,7 +1854,7 @@ fn import_checked_approval( approval_entry.mark_approved(); } - if let ApprovalSource::Local(_, ref sig) = source { + if let ApprovalStateTransition::LocalApproval(_, ref sig) = transition { approval_entry.import_approval_sig(sig.clone()); } @@ -1865,13 +1867,15 @@ fn import_checked_approval( status.required_tranches, )); - // We have no need to write the candidate entry if + // We have no need to write the candidate entry if all of the following + // is true: // - // 1. The source is remote, as we don't store anything new in the approval entry. + // 1. This is not a local approval, as we don't store anything new in the approval entry. // 2. The candidate is not newly approved, as we haven't altered the approval entry's // approved flag with `mark_approved` above. - // 3. The source had already approved the candidate, as we haven't altered the bitfield. - if !source.is_remote() || newly_approved || !already_approved_by { + // 3. The approver, if any, had already approved the candidate, as we haven't altered the bitfield. + if transition.is_local_approval() || newly_approved || !already_approved_by.unwrap_or(true) + { // In all other cases, we need to write the candidate entry. db.write_candidate_entry(candidate_entry); } @@ -1918,6 +1922,7 @@ fn process_wakeup( relay_block: Hash, candidate_hash: CandidateHash, expected_tick: Tick, + metrics: &Metrics, ) -> SubsystemResult> { let _span = jaeger::Span::from_encodable( (relay_block, candidate_hash, expected_tick), @@ -2040,28 +2045,20 @@ fn process_wakeup( } } - let approval_entry = candidate_entry - .approval_entry(&relay_block) - .expect("this function returned earlier if not available; qed"); - - // Although we ran this earlier in the function, we need to run again because we might have - // imported our own assignment, which could change things. - let tranches_to_approve = approval_checking::tranches_to_approve( - &approval_entry, - candidate_entry.approvals(), - tranche_now, - block_tick, - no_show_duration, - session_info.needed_approvals as _, - ); - - actions.extend(schedule_wakeup_action( - &approval_entry, - relay_block, - block_entry.block_number(), + // Although we checked approval earlier in this function, + // this wakeup might have advanced the state to approved via + // a no-show that was immediately covered and therefore + // we need to check for that and advance the state on-disk. + // + // Note that this function also schedules a wakeup as necessary. + actions.extend(advance_approval_state( + state, + db, + metrics, + block_entry, candidate_hash, - block_tick, - tranches_to_approve, + candidate_entry, + ApprovalStateTransition::WakeupProcessed, )); Ok(actions) @@ -2436,14 +2433,14 @@ async fn issue_approval( None }; - let mut actions = import_checked_approval( + let mut actions = advance_approval_state( state, db, metrics, block_entry, candidate_hash, candidate_entry, - ApprovalSource::Local(validator_index as _, sig.clone()), + ApprovalStateTransition::LocalApproval(validator_index as _, sig.clone()), ); metrics.on_approval_produced(); diff --git a/node/core/approval-voting/src/tests.rs b/node/core/approval-voting/src/tests.rs index 9819991641c5..c40d62ecedf1 100644 --- a/node/core/approval-voting/src/tests.rs +++ b/node/core/approval-voting/src/tests.rs @@ -2555,3 +2555,197 @@ fn subsystem_assignment_not_triggered_if_at_maximum_but_clock_is_before_with_dri should_be_triggered: |_| false, }); } + +#[test] +fn pre_covers_dont_stall_approval() { + // A, B are tranche 0. + // C is tranche 1. + // + // All assignments imported at once, and B, C approvals imported immediately. + // A no-shows, leading to being covered by C. + // Technically, this is an approved block, but it will be approved + // when the no-show timer hits, not as a response to an approval vote. + // + // Note that we have 6 validators, otherwise the 2nd approval triggers + // the >1/3 insta-approval condition. + + let assignment_criteria = Box::new(MockAssignmentCriteria::check_only( + move |validator_index| match validator_index { + ValidatorIndex(0 | 1) => Ok(0), + ValidatorIndex(2) => Ok(1), + ValidatorIndex(_) => Err(criteria::InvalidAssignment), + }, + )); + + 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; + + let block_hash = Hash::repeat_byte(0x01); + let validator_index_a = ValidatorIndex(0); + let validator_index_b = ValidatorIndex(1); + let validator_index_c = ValidatorIndex(2); + + 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),); + + let rx = check_and_import_assignment( + &mut virtual_overseer, + block_hash, + candidate_index, + validator_index_c, + ) + .await; + + assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted),); + + let session_index = 1; + 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),); + + let sig_c = sign_approval(Sr25519Keyring::Charlie, candidate_hash, session_index); + let rx = check_and_import_approval( + &mut virtual_overseer, + block_hash, + candidate_index, + validator_index_c, + candidate_hash, + session_index, + false, + true, + Some(sig_c), + ) + .await; + + assert_eq!(rx.await, Ok(ApprovalCheckResult::Accepted),); + + // Sleep to ensure we get a consistent read on the database. + // + // NOTE: Since the response above occurs before writing to the database, we are somewhat + // breaking the external consistency of the API by reaching into the database directly. + // Under normal operation, this wouldn't be necessary, since all requests are serialized by + // the event loop and we write at the end of each pass. However, if the database write were + // to fail, a downstream subsystem may expect for this candidate to be approved, and + // possibly take further actions on the assumption that the candidate is approved, when + // that may not be the reality from the database's perspective. This could be avoided + // entirely by having replies processed after database writes, but that would constitute a + // larger refactor and incur a performance penalty. + futures_timer::Delay::new(Duration::from_millis(100)).await; + + // 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)); + + // Wait for the no-show timer to observe the approval from + // tranche 0 and set a wakeup for tranche 1. + clock.inner.lock().set_tick(20); + + // Sleep to ensure we get a consistent read on the database. + futures_timer::Delay::new(Duration::from_millis(100)).await; + + // The next wakeup should observe the assignment & approval from + // tranche 1, and the no-show from tranche 0 should be immediately covered. + assert_eq!(clock.inner.lock().next_wakeup(), Some(31)); + clock.inner.lock().set_tick(31); + + 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 + }); +} From 7bf12d67cf428903c998afd0d2007f5d6ffa15e2 Mon Sep 17 00:00:00 2001 From: Andrew Jones Date: Wed, 15 Sep 2021 21:38:45 +0100 Subject: [PATCH 034/138] Companion for #8615: enrich metadata with type information (#3336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use beefy branch with scale-info * Add patches * Sprinkle some TypeInfo derives * Add some TypeInfo deriv * Cargo.lock * Derive TypeInfo and skip type params for Xcm types * Cargo.lock * Fix up scale_info bounds attributes * Fix up dependencies * Use my own beefy-primitives branch * Bump BEEFY * Update patches * Add some scale-info dependencies and TypeInfo derives * More TypeInfo decoration * Update scale-info * Some TypeInfos and remove more Event pallet::metadata * Moar TypeInfos * TypeInfos galore, fix up metadata runtime API * TypeInfo * TypeInfos, update other runtime metadata APIs * Fix up Kusama, comment out some `usize` QueueSize parameter types * Remove local diener patches * Cargo.lock * Cargo.lock * Update to scale-info crates.io release * Update primitive-types branch * Update pallet-beefy to use custom branch * Update other parity-common deps * Update parity-common patches * bump a bunch of deps in parity-common * Remove parity-common patches * Bump finality-grandpa version * Cargo.lock * Update scale-info to 0.9.1 * Add recursion_limit for runtime-parachains * Add some scale_info attributes * Cargo.lock * Revert finality-grandpa bump * Cargo.lock, scale-info update * cargo update * Make sure using patched version of finality-grandpa * Use patched scale-info * Update to scale-info 0.10.0 * Update finality-grandpa * Cargo.lock * Update beefy deps * Update beefy deps again * Add scale-info dependency * Remove deprecated pallet::metadata attributes. * Add some missing scale-info deps and derives * Use some variant struct call syntax * Add missing TypeInfo impl * Add some more TypeInfo impls * Convert some call enum struct variant constructors * More scale-info deps and derives * Call enum struct variants * TypeInfo derives * Call enum variant structs * scale-info deps and derives * Call enum variant struct constructors * Use beefy-primitives scale-info feature * Use grandpa-bridge-gadget master branch * Remove finality-grandpa patch * Add missing scale_info dependency and derive * Fix up some call variant constructors * Add missing scale_info dependency * Fix some test errors * More TypeInfo derives * More call variant structs * Call variant structs in tests * Cargo.lock * Fmt * Fix more call struct variants * Another call struct variant * add scale-info/std features explicitly * More call struct variants * Add missing scale-info dependency * Fmt * review: activate scale-info/std where missing * Remove some duplicate std feature activation * review: add scale_info bounds() attr * More call variant structs * Remove recursion limit * Update beefy-primitives * Update beefy-primitives * Fix simnet call variant struct errors * Fmt * cargo update -p beefy-primitives * Add some missing TypeInfo derives * Fix some call variants * Fix some call variant underscores * Cargo.lock * Cargo.lock * Add missing TypeInfo derive * Add some more missing TypeInfo derives * Even more missing TypeInfo derives * Add TypeInfo derives to new xcm types * Fmt * Cargo.lock * Add missing TypeInfo impls * Cargo.lock * More missing TypeInfos * Fixes * Cargo.lock * Cargo.lock * Add TypeInfo impls to xcm v2 * Update to scale-info 1.0 * Update finality-grandpa 0.14.4, patch for now * Update beefy * Remove patched finality-grandpa * Add TypeInfo impl to Outcome * Fixes * Call variant struct * Call variant struct * Fix test * Add TypeInfo impl * Cargo.lock * Cargo.lock * Cargo.lock * git checkout master Cargo.lock * update Substrate * Add missing scale-info features for beefy-primitives * Fmt * Remove check for now * Update beefy-primitives, removes scale-info feature * Update beefy-primitives again Co-authored-by: adoerr <0xad@gmx.net> Co-authored-by: Andronik Ordian Co-authored-by: thiolliere Co-authored-by: parity-processbot <> Co-authored-by: Bastian Köcher --- .gitlab-ci.yml | 16 - Cargo.lock | 419 +++++++++++------- bridges/bin/millau/runtime/src/lib.rs | 2 +- bridges/bin/rialto/runtime/src/lib.rs | 2 +- bridges/bin/runtime-common/Cargo.toml | 3 + bridges/bin/runtime-common/src/messages.rs | 5 +- bridges/fuzz/storage-proof/Cargo.toml | 2 +- bridges/modules/dispatch/Cargo.toml | 3 + bridges/modules/dispatch/src/lib.rs | 51 ++- .../ethereum-contract-builtin/Cargo.toml | 2 +- bridges/modules/grandpa/Cargo.toml | 4 +- bridges/modules/messages/Cargo.toml | 2 + bridges/modules/messages/src/mock.rs | 9 +- bridges/primitives/chain-millau/Cargo.toml | 2 +- bridges/primitives/header-chain/Cargo.toml | 4 +- .../header-chain/src/justification.rs | 3 +- bridges/primitives/header-chain/src/lib.rs | 5 +- .../primitives/message-dispatch/Cargo.toml | 2 + .../primitives/message-dispatch/src/lib.rs | 5 +- bridges/primitives/messages/Cargo.toml | 4 +- bridges/primitives/messages/src/lib.rs | 19 +- .../primitives/messages/src/target_chain.rs | 3 +- bridges/primitives/polkadot-core/Cargo.toml | 2 + bridges/primitives/polkadot-core/src/lib.rs | 11 +- bridges/primitives/runtime/Cargo.toml | 2 + bridges/primitives/runtime/src/messages.rs | 5 +- bridges/primitives/test-utils/Cargo.toml | 2 +- bridges/relays/bin-substrate/Cargo.toml | 2 +- core-primitives/Cargo.toml | 3 + core-primitives/src/lib.rs | 9 +- node/test/polkadot-simnet/common/src/lib.rs | 68 +-- node/test/polkadot-simnet/test/src/main.rs | 9 +- node/test/service/src/lib.rs | 14 +- node/test/service/tests/call-function.rs | 8 +- parachain/Cargo.toml | 2 + parachain/src/primitives.rs | 20 +- primitives/Cargo.toml | 2 + primitives/src/v0.rs | 37 +- primitives/src/v1/mod.rs | 61 +-- primitives/src/v1/signed.rs | 3 +- runtime/common/Cargo.toml | 3 + runtime/common/src/auctions.rs | 6 - runtime/common/src/claims.rs | 83 ++-- runtime/common/src/crowdloan.rs | 6 +- runtime/common/src/paras_registrar.rs | 4 +- runtime/common/src/purchase.rs | 12 +- runtime/common/src/slots.rs | 5 - runtime/kusama/Cargo.toml | 2 + runtime/kusama/src/lib.rs | 48 +- runtime/kusama/src/tests.rs | 8 +- runtime/parachains/Cargo.toml | 4 +- runtime/parachains/src/configuration.rs | 2 +- runtime/parachains/src/disputes.rs | 5 +- runtime/parachains/src/hrmp.rs | 5 +- runtime/parachains/src/inclusion.rs | 6 +- runtime/parachains/src/initializer.rs | 3 +- runtime/parachains/src/origin.rs | 2 +- runtime/parachains/src/paras.rs | 9 +- runtime/parachains/src/paras_inherent.rs | 32 +- runtime/parachains/src/scheduler.rs | 9 +- runtime/polkadot/Cargo.toml | 2 + runtime/polkadot/src/lib.rs | 36 +- runtime/rococo/Cargo.toml | 2 + runtime/rococo/src/lib.rs | 22 +- runtime/test-runtime/Cargo.toml | 2 + runtime/test-runtime/src/lib.rs | 5 +- runtime/westend/Cargo.toml | 2 + runtime/westend/src/lib.rs | 48 +- utils/staking-miner/src/main.rs | 2 +- xcm/Cargo.toml | 2 + xcm/pallet-xcm/Cargo.toml | 2 + xcm/pallet-xcm/src/lib.rs | 7 +- xcm/pallet-xcm/src/mock.rs | 3 +- xcm/pallet-xcm/src/tests.rs | 5 +- xcm/src/double_encoded.rs | 3 +- xcm/src/lib.rs | 12 +- xcm/src/v0/junction.rs | 9 +- xcm/src/v0/mod.rs | 8 +- xcm/src/v0/multi_asset.rs | 3 +- xcm/src/v0/multi_location.rs | 2 +- xcm/src/v0/order.rs | 3 +- xcm/src/v0/traits.rs | 4 +- xcm/src/v1/junction.rs | 3 +- xcm/src/v1/mod.rs | 6 +- xcm/src/v1/multiasset.rs | 17 +- xcm/src/v1/multilocation.rs | 5 +- xcm/src/v1/order.rs | 4 +- xcm/src/v1/traits.rs | 5 +- xcm/src/v2/mod.rs | 11 +- xcm/src/v2/traits.rs | 5 +- xcm/xcm-builder/Cargo.toml | 2 + xcm/xcm-builder/src/mock.rs | 2 +- xcm/xcm-executor/integration-tests/src/lib.rs | 25 +- xcm/xcm-simulator/example/Cargo.toml | 1 + xcm/xcm-simulator/example/src/lib.rs | 16 +- 95 files changed, 819 insertions(+), 548 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4c978e1484f8..928acf5decf5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -269,22 +269,6 @@ build-adder-collator: #### stage: build -check-transaction-versions: - image: node:15 - 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 diff --git a/Cargo.lock b/Cargo.lock index 3716934ee922..9ff5d510f977 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -469,7 +469,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#8b04f0ecbd97cfe0199dba444264baafb6d35eca" +source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" dependencies = [ "beefy-primitives", "fnv", @@ -499,7 +499,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#8b04f0ecbd97cfe0199dba444264baafb6d35eca" +source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -520,14 +520,15 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#8b04f0ecbd97cfe0199dba444264baafb6d35eca" +source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" [[package]] name = "beefy-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#8b04f0ecbd97cfe0199dba444264baafb6d35eca" +source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-application-crypto", "sp-core", @@ -723,6 +724,7 @@ dependencies = [ "finality-grandpa", "frame-support", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-finality-grandpa", @@ -737,6 +739,7 @@ dependencies = [ "bp-runtime", "frame-support", "parity-scale-codec", + "scale-info", "sp-std", ] @@ -750,6 +753,7 @@ dependencies = [ "frame-system", "impl-trait-for-tuples", "parity-scale-codec", + "scale-info", "serde", "sp-std", ] @@ -764,6 +768,7 @@ dependencies = [ "frame-system", "hex", "parity-scale-codec", + "scale-info", "sp-api", "sp-core", "sp-runtime", @@ -809,6 +814,7 @@ dependencies = [ "hash-db", "num-traits", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -860,6 +866,7 @@ dependencies = [ "pallet-bridge-messages", "pallet-transaction-payment", "parity-scale-codec", + "scale-info", "sp-core", "sp-runtime", "sp-state-machine", @@ -1867,9 +1874,9 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.14.1" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74a1bfdcc776e63e49f741c7ce6116fa1b887e8ac2e3ccb14dd4aa113e54feb9" +checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a" dependencies = [ "either", "futures 0.3.17", @@ -1878,6 +1885,7 @@ dependencies = [ "num-traits", "parity-scale-codec", "parking_lot 0.11.1", + "scale-info", ] [[package]] @@ -1920,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", ] @@ -1938,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", @@ -1946,6 +1954,7 @@ dependencies = [ "log", "parity-scale-codec", "paste 1.0.5", + "scale-info", "sp-api", "sp-io", "sp-runtime", @@ -1957,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "Inflector", "chrono", @@ -1983,11 +1992,12 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-arithmetic", "sp-npos-elections", "sp-std", @@ -1996,11 +2006,12 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -2010,19 +2021,20 @@ dependencies = [ [[package]] name = "frame-metadata" -version = "14.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96616f82e069102b95a72c87de4c84d2f87ef7f0f20630e78ce3824436483110" dependencies = [ + "cfg-if 1.0.0", "parity-scale-codec", + "scale-info", "serde", - "sp-core", - "sp-std", ] [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "bitflags", "frame-metadata", @@ -2032,6 +2044,7 @@ dependencies = [ "once_cell", "parity-scale-codec", "paste 1.0.5", + "scale-info", "serde", "smallvec", "sp-arithmetic", @@ -2048,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2060,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2072,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro2", "quote", @@ -2082,42 +2095,46 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ - "frame-metadata", "frame-support", "frame-support-test-pallet", "frame-system", "parity-scale-codec", "pretty_assertions", "rustversion", + "scale-info", "serde", + "sp-arithmetic", "sp-core", "sp-io", "sp-runtime", "sp-state-machine", "sp-std", + "sp-version", "trybuild", ] [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", ] [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "log", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -2129,12 +2146,13 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-runtime", "sp-std", @@ -2143,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", "sp-api", @@ -2152,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "sp-api", @@ -3181,6 +3199,7 @@ dependencies = [ "polkadot-runtime-common", "polkadot-runtime-parachains", "rustc-hex", + "scale-info", "separator", "serde", "serde_derive", @@ -4524,12 +4543,13 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "pallet-session", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-authority-discovery", "sp-runtime", @@ -4539,12 +4559,13 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "parity-scale-codec", + "scale-info", "sp-authorship", "sp-runtime", "sp-std", @@ -4553,7 +4574,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", @@ -4563,6 +4584,7 @@ dependencies = [ "pallet-session", "pallet-timestamp", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-consensus-babe", "sp-consensus-vrf", @@ -4576,13 +4598,14 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] @@ -4590,7 +4613,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#8b04f0ecbd97cfe0199dba444264baafb6d35eca" +source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" dependencies = [ "beefy-primitives", "frame-support", @@ -4606,7 +4629,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#8b04f0ecbd97cfe0199dba444264baafb6d35eca" +source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4631,13 +4654,14 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "pallet-treasury", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] @@ -4652,6 +4676,7 @@ dependencies = [ "frame-system", "log", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -4673,6 +4698,7 @@ dependencies = [ "log", "num-traits", "parity-scale-codec", + "scale-info", "serde", "sp-finality-grandpa", "sp-io", @@ -4699,6 +4725,7 @@ dependencies = [ "num-traits", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -4709,13 +4736,14 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -4725,12 +4753,13 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "serde", "sp-io", "sp-runtime", @@ -4740,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4749,6 +4778,7 @@ dependencies = [ "log", "parity-scale-codec", "rand 0.7.3", + "scale-info", "sp-arithmetic", "sp-core", "sp-io", @@ -4763,13 +4793,14 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-npos-elections", @@ -4780,12 +4811,13 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-arithmetic", "sp-runtime", "sp-std", @@ -4794,7 +4826,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", @@ -4803,6 +4835,7 @@ dependencies = [ "pallet-authorship", "pallet-session", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-core", "sp-finality-grandpa", @@ -4816,13 +4849,14 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "enumflags2", "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4831,7 +4865,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", @@ -4839,6 +4873,7 @@ dependencies = [ "log", "pallet-authorship", "parity-scale-codec", + "scale-info", "sp-application-crypto", "sp-core", "sp-io", @@ -4850,12 +4885,13 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-keyring", @@ -4866,13 +4902,14 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -4882,7 +4919,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4890,6 +4927,7 @@ dependencies = [ "frame-system", "pallet-mmr-primitives", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -4899,7 +4937,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", @@ -4915,7 +4953,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4932,12 +4970,13 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4946,11 +4985,12 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -4959,13 +4999,14 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "log", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-runtime", "sp-staking", @@ -4975,7 +5016,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4989,6 +5030,7 @@ dependencies = [ "pallet-session", "pallet-staking", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-staking", "sp-std", @@ -4997,12 +5039,13 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -5011,11 +5054,12 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -5024,13 +5068,14 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -5039,7 +5084,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", @@ -5047,6 +5092,7 @@ dependencies = [ "log", "pallet-timestamp", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -5059,7 +5105,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", @@ -5075,12 +5121,13 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", "rand_chacha 0.2.2", + "scale-info", "sp-runtime", "sp-std", ] @@ -5088,7 +5135,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5099,6 +5146,7 @@ dependencies = [ "pallet-session", "parity-scale-codec", "rand_chacha 0.2.2", + "scale-info", "serde", "sp-application-crypto", "sp-io", @@ -5110,7 +5158,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5121,7 +5169,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "sp-arithmetic", @@ -5130,11 +5178,12 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-io", "sp-runtime", "sp-std", @@ -5143,13 +5192,14 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-inherents", "sp-io", "sp-runtime", @@ -5160,7 +5210,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", @@ -5168,6 +5218,7 @@ dependencies = [ "log", "pallet-treasury", "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -5178,11 +5229,12 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "serde", "smallvec", "sp-core", @@ -5194,7 +5246,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5211,7 +5263,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5222,7 +5274,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", @@ -5230,6 +5282,7 @@ dependencies = [ "impl-trait-for-tuples", "pallet-balances", "parity-scale-codec", + "scale-info", "serde", "sp-runtime", "sp-std", @@ -5238,12 +5291,13 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "parity-scale-codec", + "scale-info", "sp-core", "sp-io", "sp-runtime", @@ -5253,13 +5307,14 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", "log", "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] @@ -5275,6 +5330,7 @@ dependencies = [ "parity-scale-codec", "polkadot-parachain", "polkadot-runtime-parachains", + "scale-info", "serde", "sp-core", "sp-io", @@ -5845,6 +5901,7 @@ version = "0.9.9" dependencies = [ "parity-scale-codec", "parity-util-mem", + "scale-info", "sp-core", "sp-runtime", "sp-std", @@ -6456,6 +6513,7 @@ dependencies = [ "parity-scale-codec", "parity-util-mem", "polkadot-core-primitives", + "scale-info", "serde", "sp-core", "sp-runtime", @@ -6473,6 +6531,7 @@ dependencies = [ "parity-util-mem", "polkadot-core-primitives", "polkadot-parachain", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -6572,6 +6631,7 @@ dependencies = [ "polkadot-primitives", "polkadot-runtime-common", "rustc-hex", + "scale-info", "separator", "serde", "serde_derive", @@ -6604,6 +6664,7 @@ dependencies = [ name = "polkadot-runtime-common" version = "0.9.9" dependencies = [ + "beefy-primitives", "bitvec 0.20.1", "frame-benchmarking", "frame-election-provider-support", @@ -6629,6 +6690,7 @@ dependencies = [ "polkadot-primitives", "polkadot-runtime-parachains", "rustc-hex", + "scale-info", "serde", "serde_derive", "serde_json", @@ -6674,6 +6736,7 @@ dependencies = [ "rand_chacha 0.3.1", "rustc-hex", "sc-keystore", + "scale-info", "serde", "sp-api", "sp-core", @@ -6960,6 +7023,7 @@ dependencies = [ "polkadot-runtime-common", "polkadot-runtime-parachains", "rustc-hex", + "scale-info", "serde", "serde_derive", "serde_json", @@ -7131,6 +7195,7 @@ dependencies = [ "impl-codec", "impl-rlp", "impl-serde", + "scale-info", "uint", ] @@ -7598,7 +7663,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7719,6 +7784,7 @@ dependencies = [ "polkadot-primitives", "polkadot-runtime-common", "polkadot-runtime-parachains", + "scale-info", "serde", "serde_derive", "smallvec", @@ -7857,7 +7923,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "sp-core", @@ -7868,7 +7934,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "derive_more", @@ -7895,7 +7961,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7918,7 +7984,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7934,7 +8000,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7950,7 +8016,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -7961,7 +8027,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "chrono", "fdlimit", @@ -7999,7 +8065,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "fnv", "futures 0.3.17", @@ -8027,7 +8093,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "hash-db", "kvdb", @@ -8052,7 +8118,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "futures 0.3.17", @@ -8076,7 +8142,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "derive_more", @@ -8119,7 +8185,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "derive_more", "futures 0.3.17", @@ -8143,7 +8209,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8156,7 +8222,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "assert_matches", "async-trait", @@ -8190,7 +8256,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "futures 0.3.17", @@ -8216,7 +8282,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "sc-client-api", "sp-authorship", @@ -8227,7 +8293,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8253,7 +8319,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "derive_more", "environmental", @@ -8271,7 +8337,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "parity-scale-codec", @@ -8287,7 +8353,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8306,7 +8372,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "derive_more", @@ -8343,7 +8409,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "derive_more", "finality-grandpa", @@ -8367,7 +8433,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8384,7 +8450,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "derive_more", @@ -8399,7 +8465,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "hash-db", "parity-scale-codec", @@ -8417,7 +8483,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-std", "async-trait", @@ -8468,7 +8534,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8484,7 +8550,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "bytes 1.0.1", "fnv", @@ -8511,7 +8577,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "libp2p", @@ -8524,7 +8590,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8533,7 +8599,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "hash-db", @@ -8564,7 +8630,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8589,7 +8655,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8606,7 +8672,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "directories", @@ -8671,7 +8737,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "parity-scale-codec", @@ -8685,7 +8751,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8707,7 +8773,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "chrono", "futures 0.3.17", @@ -8725,7 +8791,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8754,7 +8820,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8765,7 +8831,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "intervalier", @@ -8792,7 +8858,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "derive_more", "futures 0.3.17", @@ -8806,7 +8872,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8825,6 +8891,7 @@ dependencies = [ "derive_more", "parity-scale-codec", "scale-info-derive", + "serde", ] [[package]] @@ -8992,9 +9059,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950" +checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" dependencies = [ "itoa", "ryu", @@ -9237,7 +9304,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "hash-db", "log", @@ -9254,7 +9321,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9266,9 +9333,10 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", + "scale-info", "serde", "sp-core", "sp-io", @@ -9278,11 +9346,12 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", + "scale-info", "serde", "sp-debug-derive", "sp-std", @@ -9292,9 +9361,10 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-application-crypto", "sp-runtime", @@ -9304,7 +9374,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "parity-scale-codec", @@ -9316,7 +9386,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", "sp-api", @@ -9328,7 +9398,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "log", @@ -9346,7 +9416,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "futures 0.3.17", @@ -9365,11 +9435,12 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "merlin", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -9387,9 +9458,10 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", + "scale-info", "sp-arithmetic", "sp-runtime", ] @@ -9397,7 +9469,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9409,7 +9481,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "base58", "blake2-rfc", @@ -9432,6 +9504,7 @@ dependencies = [ "primitive-types", "rand 0.7.3", "regex", + "scale-info", "schnorrkel", "secrecy", "serde", @@ -9453,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9462,7 +9535,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro2", "quote", @@ -9472,7 +9545,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "environmental", "parity-scale-codec", @@ -9483,11 +9556,12 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "finality-grandpa", "log", "parity-scale-codec", + "scale-info", "serde", "sp-api", "sp-application-crypto", @@ -9500,7 +9574,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9514,7 +9588,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "hash-db", @@ -9539,7 +9613,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "lazy_static", "sp-core", @@ -9550,7 +9624,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "derive_more", @@ -9567,7 +9641,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "zstd", ] @@ -9575,9 +9649,10 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", + "scale-info", "serde", "sp-arithmetic", "sp-core", @@ -9589,7 +9664,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9600,7 +9675,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "sp-api", "sp-core", @@ -9610,7 +9685,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "backtrace", ] @@ -9618,7 +9693,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "rustc-hash", "serde", @@ -9628,7 +9703,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "either", "hash256-std-hasher", @@ -9638,6 +9713,7 @@ dependencies = [ "parity-util-mem", "paste 1.0.5", "rand 0.7.3", + "scale-info", "serde", "sp-application-crypto", "sp-arithmetic", @@ -9649,7 +9725,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9666,7 +9742,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9678,7 +9754,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "serde", "serde_json", @@ -9687,9 +9763,10 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", + "scale-info", "sp-api", "sp-core", "sp-runtime", @@ -9700,9 +9777,10 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", + "scale-info", "sp-runtime", "sp-std", ] @@ -9710,7 +9788,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "hash-db", "log", @@ -9733,12 +9811,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9751,7 +9829,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "sp-core", @@ -9764,7 +9842,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9780,7 +9858,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "erased-serde", "log", @@ -9798,7 +9876,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "sp-api", "sp-runtime", @@ -9807,11 +9885,12 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "log", "parity-scale-codec", + "scale-info", "sp-core", "sp-inherents", "sp-runtime", @@ -9822,11 +9901,12 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "hash-db", "memory-db", "parity-scale-codec", + "scale-info", "sp-core", "sp-std", "trie-db", @@ -9836,11 +9916,12 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "impl-serde", "parity-scale-codec", "parity-wasm 0.42.2", + "scale-info", "serde", "sp-runtime", "sp-std", @@ -9851,7 +9932,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9862,7 +9943,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10058,7 +10139,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "platforms", ] @@ -10066,7 +10147,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10088,7 +10169,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-std", "derive_more", @@ -10102,7 +10183,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "async-trait", "futures 0.3.17", @@ -10129,7 +10210,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10139,7 +10220,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10150,7 +10231,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10303,7 +10384,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "frame-system", "futures 0.3.17", @@ -10710,7 +10791,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#644c17eda766f392b787c8c0e01e25748d644b29" +source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" dependencies = [ "log", "parity-scale-codec", @@ -11384,6 +11465,7 @@ dependencies = [ "polkadot-runtime-common", "polkadot-runtime-parachains", "rustc-hex", + "scale-info", "serde", "serde_derive", "serde_json", @@ -11515,6 +11597,7 @@ dependencies = [ "impl-trait-for-tuples", "log", "parity-scale-codec", + "scale-info", "xcm-procedural", ] @@ -11531,6 +11614,7 @@ dependencies = [ "parity-scale-codec", "polkadot-parachain", "polkadot-runtime-parachains", + "scale-info", "sp-arithmetic", "sp-core", "sp-io", @@ -11613,6 +11697,7 @@ dependencies = [ "polkadot-core-primitives", "polkadot-parachain", "polkadot-runtime-parachains", + "scale-info", "sp-core", "sp-io", "sp-runtime", diff --git a/bridges/bin/millau/runtime/src/lib.rs b/bridges/bin/millau/runtime/src/lib.rs index 2e14a551db8b..6e561e8719e4 100644 --- a/bridges/bin/millau/runtime/src/lib.rs +++ b/bridges/bin/millau/runtime/src/lib.rs @@ -465,7 +465,7 @@ impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } diff --git a/bridges/bin/rialto/runtime/src/lib.rs b/bridges/bin/rialto/runtime/src/lib.rs index 62e3fb07b517..bc7a4d8f7073 100644 --- a/bridges/bin/rialto/runtime/src/lib.rs +++ b/bridges/bin/rialto/runtime/src/lib.rs @@ -590,7 +590,7 @@ impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } diff --git a/bridges/bin/runtime-common/Cargo.toml b/bridges/bin/runtime-common/Cargo.toml index 07fe8910c21f..928523af0256 100644 --- a/bridges/bin/runtime-common/Cargo.toml +++ b/bridges/bin/runtime-common/Cargo.toml @@ -11,6 +11,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } ed25519-dalek = { version = "1.0", default-features = false, optional = true } hash-db = { version = "0.15.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } # Bridge dependencies @@ -40,10 +41,12 @@ std = [ "codec/std", "frame-support/std", "hash-db/std", + "scale-info/std", "pallet-bridge-dispatch/std", "pallet-bridge-grandpa/std", "pallet-bridge-messages/std", "pallet-transaction-payment/std", + "scale-info/std", "sp-core/std", "sp-runtime/std", "sp-state-machine/std", diff --git a/bridges/bin/runtime-common/src/messages.rs b/bridges/bin/runtime-common/src/messages.rs index 72249e4f4e33..08f766e23686 100644 --- a/bridges/bin/runtime-common/src/messages.rs +++ b/bridges/bin/runtime-common/src/messages.rs @@ -37,6 +37,7 @@ use frame_support::{ RuntimeDebug, }; use hash_db::Hasher; +use scale_info::TypeInfo; use sp_runtime::{ traits::{AtLeast32BitUnsigned, CheckedAdd, CheckedDiv, CheckedMul}, FixedPointNumber, FixedPointOperand, FixedU128, @@ -200,7 +201,7 @@ pub mod source { /// - hash of finalized header; /// - storage proof of inbound lane state; /// - lane id. - #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug)] + #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] pub struct FromBridgedChainMessagesDeliveryProof { /// Hash of the bridge header the proof is for. pub bridged_header_hash: BridgedHeaderHash, @@ -431,7 +432,7 @@ pub mod target { /// - storage proof of messages and (optionally) outbound lane state; /// - lane id; /// - nonces (inclusive range) of messages which are included in this proof. - #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug)] + #[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] pub struct FromBridgedChainMessagesProof { /// Hash of the finalized bridged header the proof is for. pub bridged_header_hash: BridgedHeaderHash, diff --git a/bridges/fuzz/storage-proof/Cargo.toml b/bridges/fuzz/storage-proof/Cargo.toml index c5848ebed00e..43e58ddb73e9 100644 --- a/bridges/fuzz/storage-proof/Cargo.toml +++ b/bridges/fuzz/storage-proof/Cargo.toml @@ -9,7 +9,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } -finality-grandpa = "0.14.0" +finality-grandpa = "0.14.4" hash-db = "0.15.2" honggfuzz = "0.5.54" log = "0.4.0" diff --git a/bridges/modules/dispatch/Cargo.toml b/bridges/modules/dispatch/Cargo.toml index 6170af272ad9..fb601a70a1e2 100644 --- a/bridges/modules/dispatch/Cargo.toml +++ b/bridges/modules/dispatch/Cargo.toml @@ -8,6 +8,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } # Bridge dependencies @@ -32,9 +33,11 @@ default = ["std"] std = [ "bp-message-dispatch/std", "bp-runtime/std", + "codec/std", "frame-support/std", "frame-system/std", "log/std", + "scale-info/std", "sp-core/std", "sp-runtime/std", "sp-std/std", diff --git a/bridges/modules/dispatch/src/lib.rs b/bridges/modules/dispatch/src/lib.rs index 8d089f330506..00858272365a 100644 --- a/bridges/modules/dispatch/src/lib.rs +++ b/bridges/modules/dispatch/src/lib.rs @@ -399,6 +399,7 @@ mod tests { use super::*; use frame_support::{dispatch::GetDispatchInfo, parameter_types, weights::Weight}; use frame_system::{EventRecord, Phase}; + use scale_info::TypeInfo; use sp_core::H256; use sp_runtime::{ testing::Header, @@ -412,7 +413,7 @@ mod tests { const SOURCE_CHAIN_ID: ChainId = *b"srce"; const TARGET_CHAIN_ID: ChainId = *b"trgt"; - #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq)] + #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] pub struct TestAccountPublic(AccountId); impl IdentifyAccount for TestAccountPublic { @@ -423,7 +424,7 @@ mod tests { } } - #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq)] + #[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] pub struct TestSignature(AccountId); impl Verify for TestSignature { @@ -516,7 +517,7 @@ mod tests { impl Contains for TestCallFilter { fn contains(call: &Call) -> bool { - !matches!(*call, Call::System(frame_system::Call::fill_block(_))) + !matches!(*call, Call::System(frame_system::Call::fill_block { .. })) } } @@ -569,8 +570,9 @@ mod tests { let id = [0; 4]; const BAD_SPEC_VERSION: SpecVersion = 99; - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); + let mut message = prepare_root_message(Call::System(frame_system::Call::::remark { + remark: vec![1, 2, 3], + })); let weight = message.weight; message.spec_version = BAD_SPEC_VERSION; @@ -599,7 +601,7 @@ mod tests { fn should_fail_on_weight_mismatch() { new_test_ext().execute_with(|| { let id = [0; 4]; - let call = Call::System(>::remark(vec![1, 2, 3])); + let call = Call::System(frame_system::Call::::remark { remark: vec![1, 2, 3] }); let call_weight = call.get_dispatch_info().weight; let mut message = prepare_root_message(call); message.weight = 7; @@ -637,7 +639,7 @@ mod tests { let call_origin = CallOrigin::TargetAccount(1, TestAccountPublic(1), TestSignature(99)); let message = prepare_message( call_origin, - Call::System(>::remark(vec![1, 2, 3])), + Call::System(frame_system::Call::::remark { remark: vec![1, 2, 3] }), ); let weight = message.weight; @@ -687,8 +689,9 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); + let mut message = prepare_root_message(Call::System(frame_system::Call::::remark { + remark: vec![1, 2, 3], + })); let weight = message.weight; message.call.0 = vec![]; @@ -716,7 +719,9 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let call = Call::System(>::fill_block(Perbill::from_percent(75))); + let call = Call::System(frame_system::Call::::fill_block { + ratio: Perbill::from_percent(75), + }); let weight = call.get_dispatch_info().weight; let mut message = prepare_root_message(call); message.weight = weight; @@ -745,8 +750,9 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); + let mut message = prepare_root_message(Call::System(frame_system::Call::::remark { + remark: vec![1, 2, 3], + })); let weight = message.weight; message.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; @@ -779,8 +785,9 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let mut message = - prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); + let mut message = prepare_root_message(Call::System(frame_system::Call::::remark { + remark: vec![1, 2, 3], + })); message.dispatch_fee_payment = DispatchFeePayment::AtTargetChain; System::set_block_number(1); @@ -808,7 +815,7 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let call = Call::System(>::set_heap_pages(1)); + let call = Call::System(frame_system::Call::::set_heap_pages { pages: 1 }); let message = prepare_target_message(call); System::set_block_number(1); @@ -835,7 +842,9 @@ mod tests { fn should_dispatch_bridge_message_from_root_origin() { new_test_ext().execute_with(|| { let id = [0; 4]; - let message = prepare_root_message(Call::System(>::remark(vec![1, 2, 3]))); + let message = prepare_root_message(Call::System(frame_system::Call::::remark { + remark: vec![1, 2, 3], + })); System::set_block_number(1); let result = Dispatch::dispatch(SOURCE_CHAIN_ID, TARGET_CHAIN_ID, id, Ok(message), |_, _| unreachable!()); @@ -862,7 +871,7 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let call = Call::System(>::remark(vec![])); + let call = Call::System(frame_system::Call::::remark { remark: vec![] }); let message = prepare_target_message(call); System::set_block_number(1); @@ -890,7 +899,7 @@ mod tests { new_test_ext().execute_with(|| { let id = [0; 4]; - let call = Call::System(>::remark(vec![])); + let call = Call::System(frame_system::Call::::remark { remark: vec![] }); let message = prepare_source_message(call); System::set_block_number(1); @@ -915,7 +924,7 @@ mod tests { #[test] fn origin_is_checked_when_verifying_sending_message_using_source_root_account() { - let call = Call::System(>::remark(vec![])); + let call = Call::System(frame_system::Call::::remark { remark: vec![] }); let message = prepare_root_message(call); // When message is sent by Root, CallOrigin::SourceRoot is allowed @@ -930,7 +939,7 @@ mod tests { #[test] fn origin_is_checked_when_verifying_sending_message_using_target_account() { - let call = Call::System(>::remark(vec![])); + let call = Call::System(frame_system::Call::::remark { remark: vec![] }); let message = prepare_target_message(call); // When message is sent by Root, CallOrigin::TargetAccount is not allowed @@ -955,7 +964,7 @@ mod tests { #[test] fn origin_is_checked_when_verifying_sending_message_using_source_account() { - let call = Call::System(>::remark(vec![])); + let call = Call::System(frame_system::Call::::remark { remark: vec![] }); let message = prepare_source_message(call); // Sending a message from the expected origin account works diff --git a/bridges/modules/ethereum-contract-builtin/Cargo.toml b/bridges/modules/ethereum-contract-builtin/Cargo.toml index d20b0d0be85b..6177ed3734ca 100644 --- a/bridges/modules/ethereum-contract-builtin/Cargo.toml +++ b/bridges/modules/ethereum-contract-builtin/Cargo.toml @@ -9,7 +9,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } ethereum-types = "0.11.0" -finality-grandpa = "0.14.1" +finality-grandpa = "0.14.4" hex = "0.4" log = "0.4.14" diff --git a/bridges/modules/grandpa/Cargo.toml b/bridges/modules/grandpa/Cargo.toml index aa2e33cf447b..0347af07b77c 100644 --- a/bridges/modules/grandpa/Cargo.toml +++ b/bridges/modules/grandpa/Cargo.toml @@ -9,9 +9,10 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -finality-grandpa = { version = "0.14.1", default-features = false } +finality-grandpa = { version = "0.14.4", default-features = false } log = { version = "0.4.14", default-features = false } num-traits = { version = "0.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0", optional = true } # Bridge Dependencies @@ -47,6 +48,7 @@ std = [ "frame-system/std", "log/std", "num-traits/std", + "scale-info/std", "serde", "sp-finality-grandpa/std", "sp-runtime/std", diff --git a/bridges/modules/messages/Cargo.toml b/bridges/modules/messages/Cargo.toml index a26cf65c028b..1d664e421695 100644 --- a/bridges/modules/messages/Cargo.toml +++ b/bridges/modules/messages/Cargo.toml @@ -11,6 +11,7 @@ bitvec = { version = "0.20", default-features = false, features = ["alloc"] } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } log = { version = "0.4.14", default-features = false } num-traits = { version = "0.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } # Bridge dependencies @@ -47,6 +48,7 @@ std = [ "frame-system/std", "log/std", "num-traits/std", + "scale-info/std", "serde", "sp-core/std", "sp-runtime/std", diff --git a/bridges/modules/messages/src/mock.rs b/bridges/modules/messages/src/mock.rs index 4fc8d3ed6b17..35358b76f26d 100644 --- a/bridges/modules/messages/src/mock.rs +++ b/bridges/modules/messages/src/mock.rs @@ -32,6 +32,7 @@ use bp_messages::{ use bp_runtime::{messages::MessageDispatchResult, Size}; use codec::{Decode, Encode}; use frame_support::{parameter_types, weights::Weight}; +use scale_info::TypeInfo; use sp_core::H256; use sp_runtime::{ testing::Header as SubstrateHeader, @@ -42,7 +43,7 @@ use std::collections::BTreeMap; pub type AccountId = u64; pub type Balance = u64; -#[derive(Decode, Encode, Clone, Debug, PartialEq, Eq)] +#[derive(Decode, Encode, Clone, Debug, PartialEq, Eq, TypeInfo)] pub struct TestPayload { /// Field that may be used to identify messages. pub id: u64, @@ -138,7 +139,7 @@ parameter_types! { pub storage TokenConversionRate: FixedU128 = 1.into(); } -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, TypeInfo)] pub enum TestMessagesParameter { TokenConversionRate(FixedU128), } @@ -211,7 +212,7 @@ pub const PAYLOAD_REJECTED_BY_TARGET_CHAIN: TestPayload = message_payload(1, 50) pub type MessagesByLaneVec = Vec<(LaneId, ProvedLaneMessages>)>; /// Test messages proof. -#[derive(Debug, Encode, Decode, Clone, PartialEq, Eq)] +#[derive(Debug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] pub struct TestMessagesProof { pub result: Result, } @@ -242,7 +243,7 @@ impl From>, ()>> for TestMessagesProof { } /// Messages delivery proof used in tests. -#[derive(Debug, Encode, Decode, Eq, Clone, PartialEq)] +#[derive(Debug, Encode, Decode, Eq, Clone, PartialEq, TypeInfo)] pub struct TestMessagesDeliveryProof(pub Result<(LaneId, InboundLaneData), ()>); impl Size for TestMessagesDeliveryProof { diff --git a/bridges/primitives/chain-millau/Cargo.toml b/bridges/primitives/chain-millau/Cargo.toml index 671bcbd53d00..3628f9092091 100644 --- a/bridges/primitives/chain-millau/Cargo.toml +++ b/bridges/primitives/chain-millau/Cargo.toml @@ -16,7 +16,7 @@ fixed-hash = { version = "0.7.0", default-features = false } hash256-std-hasher = { version = "0.15.2", default-features = false } impl-codec = { version = "0.5.1", default-features = false } impl-serde = { version = "0.3.1", optional = true } -parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } +parity-util-mem = { version = "0.10.0", default-features = false, features = ["primitive-types"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } # Substrate Based Dependencies diff --git a/bridges/primitives/header-chain/Cargo.toml b/bridges/primitives/header-chain/Cargo.toml index 844e59865202..e64a54a1ad20 100644 --- a/bridges/primitives/header-chain/Cargo.toml +++ b/bridges/primitives/header-chain/Cargo.toml @@ -8,7 +8,8 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } -finality-grandpa = { version = "0.14.1", default-features = false } +finality-grandpa = { version = "0.14.4", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0", optional = true } # Substrate Dependencies @@ -28,6 +29,7 @@ default = ["std"] std = [ "codec/std", "finality-grandpa/std", + "scale-info/std", "serde/std", "frame-support/std", "sp-core/std", diff --git a/bridges/primitives/header-chain/src/justification.rs b/bridges/primitives/header-chain/src/justification.rs index cc47070b8ca2..fc7256481068 100644 --- a/bridges/primitives/header-chain/src/justification.rs +++ b/bridges/primitives/header-chain/src/justification.rs @@ -22,6 +22,7 @@ use codec::{Decode, Encode}; use finality_grandpa::voter_set::VoterSet; use frame_support::RuntimeDebug; +use scale_info::TypeInfo; use sp_finality_grandpa::{AuthorityId, AuthoritySignature, SetId}; use sp_runtime::traits::Header as HeaderT; use sp_std::collections::{btree_map::BTreeMap, btree_set::BTreeSet}; @@ -32,7 +33,7 @@ use sp_std::prelude::*; /// /// This particular proof is used to prove that headers on a bridged chain /// (so not our chain) have been finalized correctly. -#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq, TypeInfo)] pub struct GrandpaJustification { /// The round (voting period) this justification is valid for. pub round: u64, diff --git a/bridges/primitives/header-chain/src/lib.rs b/bridges/primitives/header-chain/src/lib.rs index adac6eb26880..16511e99f79e 100644 --- a/bridges/primitives/header-chain/src/lib.rs +++ b/bridges/primitives/header-chain/src/lib.rs @@ -24,6 +24,7 @@ use core::clone::Clone; use core::cmp::Eq; use core::default::Default; use core::fmt::Debug; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; use sp_finality_grandpa::{AuthorityList, ConsensusLog, SetId, GRANDPA_ENGINE_ID}; @@ -39,7 +40,7 @@ pub trait Parameter: Codec + EncodeLike + Clone + Eq + Debug {} impl Parameter for T where T: Codec + EncodeLike + Clone + Eq + Debug {} /// A GRANDPA Authority List and ID. -#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Clone)] +#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Clone, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct AuthoritySet { /// List of GRANDPA authorities for the current round. @@ -58,7 +59,7 @@ impl AuthoritySet { /// Data required for initializing the bridge pallet. /// /// The bridge needs to know where to start its sync from, and this provides that initial context. -#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, Clone)] +#[derive(Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, Clone, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct InitializationData { /// The header from which we should start syncing. diff --git a/bridges/primitives/message-dispatch/Cargo.toml b/bridges/primitives/message-dispatch/Cargo.toml index 84fa48553a21..9b24ae86a067 100644 --- a/bridges/primitives/message-dispatch/Cargo.toml +++ b/bridges/primitives/message-dispatch/Cargo.toml @@ -9,6 +9,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] bp-runtime = { path = "../runtime", default-features = false } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } # Substrate Dependencies @@ -21,5 +22,6 @@ std = [ "bp-runtime/std", "codec/std", "frame-support/std", + "scale-info/std", "sp-std/std", ] diff --git a/bridges/primitives/message-dispatch/src/lib.rs b/bridges/primitives/message-dispatch/src/lib.rs index 859dc5e469ad..b2683674b776 100644 --- a/bridges/primitives/message-dispatch/src/lib.rs +++ b/bridges/primitives/message-dispatch/src/lib.rs @@ -25,6 +25,7 @@ use bp_runtime::{ }; use codec::{Decode, Encode}; use frame_support::RuntimeDebug; +use scale_info::TypeInfo; use sp_std::prelude::*; /// Message dispatch weight. @@ -71,7 +72,7 @@ pub trait MessageDispatch { /// The source chain can (and should) verify that the message can be dispatched on the target chain /// with a particular origin given the source chain's origin. This can be done with the /// `verify_message_origin()` function. -#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq)] +#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] pub enum CallOrigin { /// Call is sent by the Root origin on the source chain. On the target chain it is dispatched /// from a derived account. @@ -111,7 +112,7 @@ pub enum CallOrigin { /// Runtime specification version. We only dispatch messages that have the same /// runtime version. Otherwise we risk to misinterpret encoded calls. diff --git a/bridges/primitives/messages/Cargo.toml b/bridges/primitives/messages/Cargo.toml index b5b68220a409..191742005f44 100644 --- a/bridges/primitives/messages/Cargo.toml +++ b/bridges/primitives/messages/Cargo.toml @@ -10,6 +10,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" bitvec = { version = "0.20", default-features = false, features = ["alloc"] } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive", "bit-vec"] } impl-trait-for-tuples = "0.2" +scale-info = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0.101", optional = true, features = ["derive"] } # Bridge dependencies @@ -29,6 +30,7 @@ std = [ "codec/std", "frame-support/std", "frame-system/std", + "scale-info/std", "serde", - "sp-std/std" + "sp-std/std", ] diff --git a/bridges/primitives/messages/src/lib.rs b/bridges/primitives/messages/src/lib.rs index 963543ec3213..344735b53c91 100644 --- a/bridges/primitives/messages/src/lib.rs +++ b/bridges/primitives/messages/src/lib.rs @@ -26,6 +26,7 @@ use bitvec::prelude::*; use bp_runtime::messages::DispatchFeePayment; use codec::{Decode, Encode}; use frame_support::RuntimeDebug; +use scale_info::TypeInfo; use sp_std::{collections::vec_deque::VecDeque, prelude::*}; pub mod source_chain; @@ -35,7 +36,7 @@ pub mod target_chain; pub use frame_support::weights::Weight; /// Messages pallet operating mode. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] pub enum OperatingMode { /// Normal mode, when all operations are allowed. @@ -81,7 +82,7 @@ pub type MessageId = (LaneId, MessageNonce); pub type MessagePayload = Vec; /// Message key (unique message identifier) as it is stored in the storage. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct MessageKey { /// ID of the message lane. pub lane_id: LaneId, @@ -90,7 +91,7 @@ pub struct MessageKey { } /// Message data as it is stored in the storage. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct MessageData { /// Message payload. pub payload: MessagePayload, @@ -99,7 +100,7 @@ pub struct MessageData { } /// Message as it is stored in the storage. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub struct Message { /// Message key. pub key: MessageKey, @@ -108,7 +109,7 @@ pub struct Message { } /// Inbound lane data. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] pub struct InboundLaneData { /// Identifiers of relayers and messages that they have delivered to this lane (ordered by message nonce). /// @@ -195,7 +196,7 @@ pub type DispatchResultsBitVec = BitVec; /// /// This struct represents a continuous range of messages that have been delivered by the same relayer /// and whose confirmations are still pending. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] pub struct UnrewardedRelayer { /// Identifier of the relayer. pub relayer: RelayerId, @@ -204,7 +205,7 @@ pub struct UnrewardedRelayer { } /// Delivered messages with their dispatch result. -#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq)] +#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, TypeInfo)] pub struct DeliveredMessages { /// Nonce of the first message that has been delivered (inclusive). pub begin: MessageNonce, @@ -254,7 +255,7 @@ impl DeliveredMessages { } /// Gist of `InboundLaneData::relayers` field used by runtime APIs. -#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq)] +#[derive(Clone, Default, Encode, Decode, RuntimeDebug, PartialEq, Eq, TypeInfo)] pub struct UnrewardedRelayersState { /// Number of entries in the `InboundLaneData::relayers` set. pub unrewarded_relayer_entries: MessageNonce, @@ -266,7 +267,7 @@ pub struct UnrewardedRelayersState { } /// Outbound lane data. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq)] +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, Eq, TypeInfo)] pub struct OutboundLaneData { /// Nonce of oldest message that we haven't yet pruned. May point to not-yet-generated message if /// all sent messages are already pruned. diff --git a/bridges/primitives/messages/src/target_chain.rs b/bridges/primitives/messages/src/target_chain.rs index d1b87fd02323..873059763791 100644 --- a/bridges/primitives/messages/src/target_chain.rs +++ b/bridges/primitives/messages/src/target_chain.rs @@ -21,13 +21,14 @@ use crate::{LaneId, Message, MessageData, MessageKey, OutboundLaneData}; use bp_runtime::{messages::MessageDispatchResult, Size}; use codec::{Decode, Encode, Error as CodecError}; use frame_support::{weights::Weight, Parameter, RuntimeDebug}; +use scale_info::TypeInfo; use sp_std::{collections::btree_map::BTreeMap, fmt::Debug, prelude::*}; /// Proved messages from the source chain. pub type ProvedMessages = BTreeMap>; /// Proved messages from single lane of the source chain. -#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq)] +#[derive(RuntimeDebug, Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] pub struct ProvedLaneMessages { /// Optional outbound lane state. pub lane_state: Option, diff --git a/bridges/primitives/polkadot-core/Cargo.toml b/bridges/primitives/polkadot-core/Cargo.toml index 995f948e5d47..5e95c223ce2e 100644 --- a/bridges/primitives/polkadot-core/Cargo.toml +++ b/bridges/primitives/polkadot-core/Cargo.toml @@ -8,6 +8,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" [dependencies] parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } # Bridge Dependencies @@ -35,6 +36,7 @@ std = [ "frame-support/std", "frame-system/std", "parity-scale-codec/std", + "scale-info/std", "sp-api/std", "sp-core/std", "sp-runtime/std", diff --git a/bridges/primitives/polkadot-core/src/lib.rs b/bridges/primitives/polkadot-core/src/lib.rs index a1619b27bcf4..151e374e6603 100644 --- a/bridges/primitives/polkadot-core/src/lib.rs +++ b/bridges/primitives/polkadot-core/src/lib.rs @@ -213,7 +213,7 @@ pub type AdditionalSigned = (u32, u32, Hash, Hash, (), (), ()); /// A simplified version of signed extensions meant for producing signed transactions /// and signed payload in the client code. -#[derive(PartialEq, Eq, Clone, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, RuntimeDebug, scale_info::TypeInfo)] pub struct SignedExtensions { encode_payload: SignedExtra, additional_signed: AdditionalSigned, @@ -266,7 +266,14 @@ impl SignedExtensions { impl sp_runtime::traits::SignedExtension for SignedExtensions where - Call: parity_scale_codec::Codec + sp_std::fmt::Debug + Sync + Send + Clone + Eq + PartialEq, + Call: parity_scale_codec::Codec + + sp_std::fmt::Debug + + Sync + + Send + + Clone + + Eq + + PartialEq + + scale_info::StaticTypeInfo, Call: Dispatchable, { const IDENTIFIER: &'static str = "Not needed."; diff --git a/bridges/primitives/runtime/Cargo.toml b/bridges/primitives/runtime/Cargo.toml index 17fa96b2c908..cdd47e30d3f8 100644 --- a/bridges/primitives/runtime/Cargo.toml +++ b/bridges/primitives/runtime/Cargo.toml @@ -10,6 +10,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } hash-db = { version = "0.15.2", default-features = false } num-traits = { version = "0.2", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } # Substrate Dependencies @@ -32,6 +33,7 @@ std = [ "frame-support/std", "hash-db/std", "num-traits/std", + "scale-info/std", "sp-core/std", "sp-io/std", "sp-runtime/std", diff --git a/bridges/primitives/runtime/src/messages.rs b/bridges/primitives/runtime/src/messages.rs index f6e04619c723..3ab867773f9f 100644 --- a/bridges/primitives/runtime/src/messages.rs +++ b/bridges/primitives/runtime/src/messages.rs @@ -18,9 +18,10 @@ use codec::{Decode, Encode}; use frame_support::{weights::Weight, RuntimeDebug}; +use scale_info::TypeInfo; /// Where message dispatch fee is paid? -#[derive(Encode, Decode, RuntimeDebug, Clone, Copy, PartialEq, Eq)] +#[derive(Encode, Decode, RuntimeDebug, Clone, Copy, PartialEq, Eq, TypeInfo)] pub enum DispatchFeePayment { /// The dispacth fee is paid at the source chain. AtSourceChain, @@ -34,7 +35,7 @@ pub enum DispatchFeePayment { } /// Message dispatch result. -#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq)] +#[derive(Encode, Decode, RuntimeDebug, Clone, PartialEq, Eq, TypeInfo)] pub struct MessageDispatchResult { /// Dispatch result flag. This flag is relayed back to the source chain and, generally /// speaking, may bring any (that fits in single bit) information from the dispatcher at diff --git a/bridges/primitives/test-utils/Cargo.toml b/bridges/primitives/test-utils/Cargo.toml index fe6a68087873..14d3c031b4c8 100644 --- a/bridges/primitives/test-utils/Cargo.toml +++ b/bridges/primitives/test-utils/Cargo.toml @@ -9,7 +9,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0" bp-header-chain = { path = "../header-chain", default-features = false } codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] } -finality-grandpa = { version = "0.14.1", default-features = false } +finality-grandpa = { version = "0.14.4", default-features = false } sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-finality-grandpa = { 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/bridges/relays/bin-substrate/Cargo.toml b/bridges/relays/bin-substrate/Cargo.toml index c2f30546f30f..830f592ec4e1 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 = { version = "0.14.1", } finality-relay = { path = "../finality" } headers-relay = { path = "../headers" } messages-relay = { path = "../messages" } diff --git a/core-primitives/Cargo.toml b/core-primitives/Cargo.toml index e40196ec559f..9b469657bde1 100644 --- a/core-primitives/Cargo.toml +++ b/core-primitives/Cargo.toml @@ -8,15 +8,18 @@ edition = "2018" sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } 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-util-mem = { version = "0.10.0", default-features = false, optional = true } [features] default = [ "std" ] std = [ + "scale-info/std", "sp-core/std", "sp-runtime/std", "sp-std/std", + "scale-info/std", "parity-scale-codec/std", "parity-util-mem", ] diff --git a/core-primitives/src/lib.rs b/core-primitives/src/lib.rs index f0313b95d0d1..c00548e57c3c 100644 --- a/core-primitives/src/lib.rs +++ b/core-primitives/src/lib.rs @@ -23,6 +23,7 @@ use parity_scale_codec::{Decode, Encode}; #[cfg(feature = "std")] use parity_util_mem::MallocSizeOf; +use scale_info::TypeInfo; use sp_runtime::{ generic, traits::{IdentifyAccount, Verify}, @@ -64,7 +65,7 @@ pub type Hash = sp_core::H256; /// This type is produced by [`CandidateReceipt::hash`]. /// /// This type makes it easy to enforce that a hash is a candidate hash on the type level. -#[derive(Clone, Copy, Encode, Decode, Hash, Eq, PartialEq, Default, PartialOrd, Ord)] +#[derive(Clone, Copy, Encode, Decode, Hash, Eq, PartialEq, Default, PartialOrd, Ord, TypeInfo)] #[cfg_attr(feature = "std", derive(MallocSizeOf))] pub struct CandidateHash(pub Hash); @@ -117,7 +118,7 @@ pub type DownwardMessage = sp_std::vec::Vec; /// A wrapped version of `DownwardMessage`. The difference is that it has attached the block number when /// the message was sent. -#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq)] +#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq, TypeInfo)] #[cfg_attr(feature = "std", derive(MallocSizeOf))] pub struct InboundDownwardMessage { /// The block number at which these messages were put into the downward message queue. @@ -127,7 +128,7 @@ pub struct InboundDownwardMessage { } /// An HRMP message seen from the perspective of a recipient. -#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq)] +#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq, TypeInfo)] #[cfg_attr(feature = "std", derive(MallocSizeOf))] pub struct InboundHrmpMessage { /// The block number at which this message was sent. @@ -139,7 +140,7 @@ pub struct InboundHrmpMessage { } /// An HRMP message seen from the perspective of a sender. -#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq, Eq, Hash)] +#[derive(Encode, Decode, Clone, sp_runtime::RuntimeDebug, PartialEq, Eq, Hash, TypeInfo)] #[cfg_attr(feature = "std", derive(MallocSizeOf))] pub struct OutboundHrmpMessage { /// The para that will get this message in its downward message queue. diff --git a/node/test/polkadot-simnet/common/src/lib.rs b/node/test/polkadot-simnet/common/src/lib.rs index e35ca7f83b0c..c2d7ac3c67de 100644 --- a/node/test/polkadot-simnet/common/src/lib.rs +++ b/node/test/polkadot-simnet/common/src/lib.rs @@ -138,7 +138,7 @@ where let proposal_hash = { // note the call (pre-image?) of the call. node.submit_extrinsic( - DemocracyCall::note_preimage(call.into().encode()), + DemocracyCall::note_preimage { encoded_proposal: call.into().encode() }, Some(whales[0].clone()), ) .await?; @@ -161,15 +161,16 @@ where // submit external_propose call through council collective { - let external_propose = - DemocracyCall::external_propose_majority(proposal_hash.clone().into()); + let external_propose = DemocracyCall::external_propose_majority { + proposal_hash: proposal_hash.clone().into(), + }; let length = external_propose.using_encoded(|x| x.len()) as u32 + 1; let weight = Weight::MAX / 100_000_000; - let proposal = CouncilCollectiveCall::propose( - council_collective.len() as u32, - Box::new(external_propose.clone().into()), - length, - ); + let proposal = CouncilCollectiveCall::propose { + threshold: council_collective.len() as u32, + proposal: Box::new(external_propose.clone().into()), + length_bound: length, + }; node.submit_extrinsic(proposal.clone(), Some(council_collective[0].clone())) .await?; @@ -191,13 +192,18 @@ where // vote for member in &council_collective[1..] { - let call = CouncilCollectiveCall::vote(hash.clone(), index, true); + let call = CouncilCollectiveCall::vote { proposal: hash.clone(), index, approve: true }; node.submit_extrinsic(call, Some(member.clone())).await?; } node.seal_blocks(1).await; // close vote - let call = CouncilCollectiveCall::close(hash, index, weight, length); + let call = CouncilCollectiveCall::close { + proposal_hash: hash, + index, + proposal_weight_bound: weight, + length_bound: length, + }; node.submit_extrinsic(call, Some(council_collective[0].clone())).await?; node.seal_blocks(1).await; @@ -227,15 +233,18 @@ where // next technical collective must fast track the proposal. { - let fast_track = - DemocracyCall::fast_track(proposal_hash.into(), FastTrackVotingPeriod::get(), 0); + let fast_track = DemocracyCall::fast_track { + proposal_hash: proposal_hash.into(), + voting_period: FastTrackVotingPeriod::get(), + delay: 0, + }; let weight = Weight::MAX / 100_000_000; let length = fast_track.using_encoded(|x| x.len()) as u32 + 1; - let proposal = TechnicalCollectiveCall::propose( - technical_collective.len() as u32, - Box::new(fast_track.into()), - length, - ); + let proposal = TechnicalCollectiveCall::propose { + threshold: technical_collective.len() as u32, + proposal: Box::new(fast_track.into()), + length_bound: length, + }; node.submit_extrinsic(proposal, Some(technical_collective[0].clone())).await?; node.seal_blocks(1).await; @@ -259,13 +268,19 @@ where // vote for member in &technical_collective[1..] { - let call = TechnicalCollectiveCall::vote(hash.clone(), index, true); + let call = + TechnicalCollectiveCall::vote { proposal: hash.clone(), index, approve: true }; node.submit_extrinsic(call, Some(member.clone())).await?; } node.seal_blocks(1).await; // close vote - let call = TechnicalCollectiveCall::close(hash, index, weight, length); + let call = CouncilCollectiveCall::close { + proposal_hash: hash, + index, + proposal_weight_bound: weight, + length_bound: length, + }; node.submit_extrinsic(call, Some(technical_collective[0].clone())).await?; node.seal_blocks(1).await; @@ -309,14 +324,14 @@ where format!("democracy::Event::Started not found in events: {:#?}", node.events()) })?; - let call = DemocracyCall::vote( + let call = DemocracyCall::vote { ref_index, - AccountVote::Standard { + vote: AccountVote::Standard { vote: Vote { aye: true, conviction: Conviction::Locked1x }, // 10 DOTS balance: 10_000_000_000_000, }, - ); + }; for whale in whales { node.submit_extrinsic(call.clone(), Some(whale)).await?; } @@ -404,9 +419,12 @@ mod tests { node.seal_blocks(1).await; // submit extrinsics let alice = MultiSigner::from(Alice.public()).into_account(); - node.submit_extrinsic(system::Call::remark((b"hello world").to_vec()), Some(alice)) - .await - .unwrap(); + node.submit_extrinsic( + system::Call::remark { remark: (b"hello world").to_vec() }, + Some(alice), + ) + .await + .unwrap(); // look ma, I can read state. let _events = node.with_state(|| system::Pallet::::events()); diff --git a/node/test/polkadot-simnet/test/src/main.rs b/node/test/polkadot-simnet/test/src/main.rs index 240167aa54fe..e637c72ba076 100644 --- a/node/test/polkadot-simnet/test/src/main.rs +++ b/node/test/polkadot-simnet/test/src/main.rs @@ -35,7 +35,7 @@ fn main() -> Result<(), Box> { .ok_or("Polkadot development wasm not available")? .to_vec(); // upgrade runtime. - dispatch_with_root(system::Call::set_code(wasm_binary), &node).await?; + dispatch_with_root(system::Call::set_code { code: wasm_binary }, &node).await?; // assert that the runtime has been updated by looking at events let events = node @@ -74,8 +74,11 @@ fn main() -> Result<(), Box> { ); // post upgrade tests, a simple balance transfer - node.submit_extrinsic(balances::Call::transfer(dest.into(), balance), Some(from)) - .await?; + node.submit_extrinsic( + balances::Call::transfer { dest: dest.into(), value: balance }, + Some(from), + ) + .await?; node.seal_blocks(1).await; let events = node diff --git a/node/test/service/src/lib.rs b/node/test/service/src/lib.rs index 447c8afd5d4f..d52b9ecc3284 100644 --- a/node/test/service/src/lib.rs +++ b/node/test/service/src/lib.rs @@ -286,16 +286,16 @@ impl PolkadotTestNode { validation_code: impl Into, genesis_head: impl Into, ) -> Result<(), RpcTransactionError> { - let call = ParasSudoWrapperCall::sudo_schedule_para_initialize( + let call = ParasSudoWrapperCall::sudo_schedule_para_initialize { id, - ParaGenesisArgs { + genesis: ParaGenesisArgs { genesis_head: genesis_head.into(), validation_code: validation_code.into(), parachain: true, }, - ); + }; - self.send_extrinsic(SudoCall::sudo(Box::new(call.into())), Sr25519Keyring::Alice) + self.send_extrinsic(SudoCall::sudo { call: Box::new(call.into()) }, Sr25519Keyring::Alice) .await .map(drop) } @@ -377,10 +377,10 @@ pub fn construct_transfer_extrinsic( dest: sp_keyring::AccountKeyring, value: Balance, ) -> UncheckedExtrinsic { - let function = polkadot_test_runtime::Call::Balances(pallet_balances::Call::transfer( - MultiSigner::from(dest.public()).into_account().into(), + let function = polkadot_test_runtime::Call::Balances(pallet_balances::Call::transfer { + dest: MultiSigner::from(dest.public()).into_account().into(), value, - )); + }); construct_extrinsic(client, function, origin, 0) } diff --git a/node/test/service/tests/call-function.rs b/node/test/service/tests/call-function.rs index 794a9e5c43c3..9a6ea4950ff9 100644 --- a/node/test/service/tests/call-function.rs +++ b/node/test/service/tests/call-function.rs @@ -22,10 +22,10 @@ async fn call_function_actually_work() { let alice = run_validator_node(tokio::runtime::Handle::current(), Alice, || {}, Vec::new(), None); - let function = polkadot_test_runtime::Call::Balances(pallet_balances::Call::transfer( - Default::default(), - 1, - )); + let function = polkadot_test_runtime::Call::Balances(pallet_balances::Call::transfer { + dest: Default::default(), + value: 1, + }); let output = alice.send_extrinsic(function, Bob).await.unwrap(); let res = output.result.expect("return value expected"); diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index e4ff85cc20ec..97ce76d38f0f 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -11,6 +11,7 @@ edition = "2018" # various unnecessary Substrate-specific endpoints. parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] } parity-util-mem = { version = "0.10.0", optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } 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 } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -26,6 +27,7 @@ default = ["std"] wasm-api = [] std = [ "parity-scale-codec/std", + "scale-info/std", "serde/std", "sp-std/std", "sp-runtime/std", diff --git a/parachain/src/primitives.rs b/parachain/src/primitives.rs index 900c75c6cd34..bda56bf59e8c 100644 --- a/parachain/src/primitives.rs +++ b/parachain/src/primitives.rs @@ -21,6 +21,7 @@ use sp_std::vec::Vec; use frame_support::weights::Weight; use parity_scale_codec::{CompactAs, Decode, Encode}; +use scale_info::TypeInfo; use sp_core::{RuntimeDebug, TypeId}; use sp_runtime::traits::Hash as _; @@ -40,7 +41,7 @@ pub use polkadot_core_primitives::BlockNumber as RelayChainBlockNumber; /// Parachain head data included in the chain. #[derive( - PartialEq, Eq, Clone, PartialOrd, Ord, Encode, Decode, RuntimeDebug, derive_more::From, + PartialEq, Eq, Clone, PartialOrd, Ord, Encode, Decode, RuntimeDebug, derive_more::From, TypeInfo, )] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Default, Hash, MallocSizeOf))] pub struct HeadData(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec); @@ -53,7 +54,9 @@ impl HeadData { } /// Parachain validation code. -#[derive(Default, PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, derive_more::From)] +#[derive( + Default, PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, derive_more::From, TypeInfo, +)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Hash, MallocSizeOf))] pub struct ValidationCode(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec); @@ -69,7 +72,7 @@ impl ValidationCode { /// This type is produced by [`ValidationCode::hash`]. /// /// This type makes it easy to enforce that a hash is a validation code hash on the type level. -#[derive(Clone, Copy, Encode, Decode, Default, Hash, Eq, PartialEq, PartialOrd, Ord)] +#[derive(Clone, Copy, Encode, Decode, Default, Hash, Eq, PartialEq, PartialOrd, Ord, TypeInfo)] #[cfg_attr(feature = "std", derive(MallocSizeOf))] pub struct ValidationCodeHash(Hash); @@ -112,7 +115,7 @@ impl sp_std::fmt::LowerHex for ValidationCodeHash { /// Parachain block data. /// /// Contains everything required to validate para-block, may contain block and witness data. -#[derive(PartialEq, Eq, Clone, Encode, Decode, derive_more::From)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, derive_more::From, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, MallocSizeOf))] pub struct BlockData(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec); @@ -130,6 +133,7 @@ pub struct BlockData(#[cfg_attr(feature = "std", serde(with = "bytes"))] pub Vec PartialEq, PartialOrd, RuntimeDebug, + TypeInfo, )] #[cfg_attr( feature = "std", @@ -227,7 +231,9 @@ impl sp_std::ops::Sub for Id { } } -#[derive(Clone, Copy, Default, Encode, Decode, Eq, PartialEq, Ord, PartialOrd, RuntimeDebug)] +#[derive( + Clone, Copy, Default, Encode, Decode, Eq, PartialEq, Ord, PartialOrd, RuntimeDebug, TypeInfo, +)] pub struct Sibling(pub Id); impl From for Sibling { @@ -330,7 +336,7 @@ impl AccountIdConversion for Id { /// is allowed between two participants in one direction, i.e. there cannot be 2 different channels /// identified by `(A, B)`. A channel with the same para id in sender and recipient is invalid. That /// is, however, not enforced. -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, RuntimeDebug)] +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Encode, Decode, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(Hash))] pub struct HrmpChannelId { /// The para that acts as the sender in this channel. @@ -370,7 +376,7 @@ impl DmpMessageHandler for () { } /// The aggregate XCMP message format. -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode)] +#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, TypeInfo)] pub enum XcmpMessageFormat { /// Encoded `VersionedXcm` messages, all concatenated. ConcatenatedVersionedXcm, diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 9b106e864cf7..4b2065d4cb6b 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -6,6 +6,7 @@ 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"] } 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 } @@ -34,6 +35,7 @@ default = ["std"] std = [ "application-crypto/std", "parity-scale-codec/std", + "scale-info/std", "primitives/std", "inherents/std", "trie/std", diff --git a/primitives/src/v0.rs b/primitives/src/v0.rs index 1cbeb916d482..7e15a0b87308 100644 --- a/primitives/src/v0.rs +++ b/primitives/src/v0.rs @@ -23,6 +23,7 @@ use bitvec::vec::BitVec; use parity_scale_codec::{Decode, Encode}; #[cfg(feature = "std")] use parity_util_mem::{MallocSizeOf, MallocSizeOfOps}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; @@ -106,7 +107,7 @@ impl MallocSizeOf for ValidatorId { } /// Index of the validator is used as a lightweight replacement of the `ValidatorId` when appropriate. -#[derive(Eq, Ord, PartialEq, PartialOrd, Copy, Clone, Encode, Decode)] +#[derive(Eq, Ord, PartialEq, PartialOrd, Copy, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, Hash, MallocSizeOf))] pub struct ValidatorIndex(pub u32); @@ -139,7 +140,7 @@ impl MallocSizeOf for ValidatorSignature { } /// Retriability for a given active para. -#[derive(Clone, Eq, PartialEq, Encode, Decode)] +#[derive(Clone, Eq, PartialEq, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug))] pub enum Retriable { /// Ineligible for retry. This means it's either a parachain that is always scheduled anyway or @@ -205,7 +206,7 @@ impl SwapAux for () { } /// Identifier for a chain, either one of a number of parachains or the relay chain. -#[derive(Copy, Clone, PartialEq, Encode, Decode)] +#[derive(Copy, Clone, PartialEq, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug))] pub enum Chain { /// The relay chain. @@ -215,7 +216,7 @@ pub enum Chain { } /// The duty roster specifying what jobs each validator must do. -#[derive(Clone, PartialEq, Encode, Decode)] +#[derive(Clone, PartialEq, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Default, Debug))] pub struct DutyRoster { /// Lookup from validator index to chain on which that validator has a duty to validate. @@ -226,7 +227,7 @@ pub struct DutyRoster { /// to fully validate the candidate. /// /// These are global parameters that apply to all parachain candidates in a block. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct GlobalValidationData { /// The maximum code size permitted, in bytes. @@ -239,7 +240,7 @@ pub struct GlobalValidationData { /// Extra data that is needed along with the other fields in a `CandidateReceipt` /// to fully validate the candidate. These fields are parachain-specific. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct LocalValidationData { /// The parent head-data. @@ -261,7 +262,7 @@ pub struct LocalValidationData { } /// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct CandidateCommitments { /// Fees paid from the chain to the relay chain validators. @@ -310,7 +311,7 @@ fn check_collator_signature>( } /// All data pertaining to the execution of a parachain candidate. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct CandidateReceipt { /// The ID of the parachain this is a candidate for. @@ -395,7 +396,7 @@ impl Ord for CandidateReceipt { /// All the data which is omitted in an `AbridgedCandidateReceipt`, but that /// is necessary for validation of the parachain candidate. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct OmittedValidationData { /// The global validation schedule. @@ -409,7 +410,7 @@ pub struct OmittedValidationData { /// Much info in a candidate-receipt is duplicated from the relay-chain state. /// When submitting to the relay-chain, this data should be omitted as it can /// be re-generated from relay-chain state. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct AbridgedCandidateReceipt { /// The ID of the parachain this is a candidate for. @@ -544,7 +545,7 @@ impl Ord for AbridgedCandidateReceipt { } /// A unique descriptor of the candidate receipt, in a lightweight format. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct CandidateDescriptor { /// The ID of the para this is a candidate for. @@ -564,7 +565,7 @@ pub struct CandidateDescriptor { } /// A collation sent by a collator. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct CollationInfo { /// The ID of the parachain this is a candidate for. @@ -619,7 +620,7 @@ impl CollationInfo { /// A full collation. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] +#[cfg_attr(feature = "std", derive(Debug, Encode, Decode, TypeInfo))] pub struct Collation { /// Candidate receipt itself. pub info: CollationInfo, @@ -629,7 +630,7 @@ pub struct Collation { /// A Proof-of-Validation block. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] +#[cfg_attr(feature = "std", derive(Debug, Encode, Decode, TypeInfo))] pub struct PoVBlock { /// Block data. pub block_data: BlockData, @@ -645,7 +646,7 @@ impl PoVBlock { /// The data that is kept available about a particular parachain block. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Encode, Decode))] +#[cfg_attr(feature = "std", derive(Debug, Encode, Decode, TypeInfo))] pub struct AvailableData { /// The PoV block. pub pov_block: PoVBlock, @@ -677,7 +678,7 @@ impl CompactStatement { } // Inner helper for codec on `CompactStatement`. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, TypeInfo)] enum CompactStatementInner { #[codec(index = 1)] Seconded(CandidateHash), @@ -733,7 +734,7 @@ impl CompactStatement { /// An either implicit or explicit attestation to the validity of a parachain /// candidate. -#[derive(Clone, Eq, PartialEq, Decode, Encode, RuntimeDebug)] +#[derive(Clone, Eq, PartialEq, Decode, Encode, RuntimeDebug, TypeInfo)] pub enum ValidityAttestation { /// Implicit validity attestation by issuing. /// This corresponds to issuance of a `Candidate` statement. @@ -804,7 +805,7 @@ impl AttestedCandidate { } /// A fee schedule for messages. This is a linear function in the number of bytes of a message. -#[derive(PartialEq, Eq, PartialOrd, Hash, Default, Clone, Copy, Encode, Decode)] +#[derive(PartialEq, Eq, PartialOrd, Hash, Default, Clone, Copy, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] pub struct FeeSchedule { /// The base fee charged for all messages. diff --git a/primitives/src/v1/mod.rs b/primitives/src/v1/mod.rs index c261bf9b69e4..e32fb68f79db 100644 --- a/primitives/src/v1/mod.rs +++ b/primitives/src/v1/mod.rs @@ -18,6 +18,7 @@ use bitvec::vec::BitVec; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; use sp_std::{collections::btree_map::BTreeMap, prelude::*}; use application_crypto::KeyTypeId; @@ -319,7 +320,7 @@ fn check_collator_signature>( } /// A unique descriptor of the candidate receipt. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default, Hash, MallocSizeOf))] pub struct CandidateDescriptor { /// The ID of the para this is a candidate for. @@ -361,7 +362,7 @@ impl> CandidateDescriptor { } /// A candidate-receipt. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default, MallocSizeOf))] pub struct CandidateReceipt { /// The descriptor of the candidate. @@ -386,7 +387,7 @@ impl CandidateReceipt { } /// All data pertaining to the execution of a para candidate. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default))] pub struct FullCandidateReceipt { /// The inner candidate receipt. @@ -399,7 +400,7 @@ pub struct FullCandidateReceipt { } /// A candidate-receipt with commitments directly included. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default, Hash, MallocSizeOf))] pub struct CommittedCandidateReceipt { /// The descriptor of the candidate. @@ -480,7 +481,7 @@ impl Ord for CommittedCandidateReceipt { /// /// The `PersistedValidationData` should be relatively lightweight primarily because it is constructed /// during inclusion for each candidate and therefore lies on the critical path of inclusion. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default, MallocSizeOf))] pub struct PersistedValidationData { /// The parent head-data. @@ -501,7 +502,7 @@ impl PersistedValidationData { } /// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Default, Hash, MallocSizeOf))] pub struct CandidateCommitments { /// Messages destined to be interpreted by the Relay chain itself. @@ -526,7 +527,7 @@ impl CandidateCommitments { } /// A bitfield concerning availability of backed candidates. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub struct AvailabilityBitfield(pub BitVec); impl From> for AvailabilityBitfield { @@ -549,7 +550,7 @@ pub type SignedAvailabilityBitfields = Vec; pub type UncheckedSignedAvailabilityBitfields = Vec; /// A backed (or backable, depending on context) candidate. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(Default))] pub struct BackedCandidate { /// The candidate referred to. @@ -637,7 +638,7 @@ pub fn check_candidate_backing + Clone + Encode>( } /// The unique (during session) index of a core. -#[derive(Encode, Decode, Default, PartialOrd, Ord, Eq, PartialEq, Clone, Copy)] +#[derive(Encode, Decode, Default, PartialOrd, Ord, Eq, PartialEq, Clone, Copy, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, Hash, MallocSizeOf))] pub struct CoreIndex(pub u32); @@ -648,7 +649,7 @@ impl From for CoreIndex { } /// The unique (during session) index of a validator group. -#[derive(Encode, Decode, Default, Clone, Copy, Debug, PartialEq, Eq)] +#[derive(Encode, Decode, Default, Clone, Copy, Debug, PartialEq, Eq, TypeInfo)] #[cfg_attr(feature = "std", derive(Hash, MallocSizeOf))] pub struct GroupIndex(pub u32); @@ -659,12 +660,12 @@ impl From for GroupIndex { } /// A claim on authoring the next block for a given parathread. -#[derive(Clone, Encode, Decode, Default)] +#[derive(Clone, Encode, Decode, Default, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug))] pub struct ParathreadClaim(pub Id, pub CollatorId); /// An entry tracking a claim to ensure it does not pass the maximum number of retries. -#[derive(Clone, Encode, Decode, Default)] +#[derive(Clone, Encode, Decode, Default, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug))] pub struct ParathreadEntry { /// The claim. @@ -674,7 +675,7 @@ pub struct ParathreadEntry { } /// What is occupying a specific availability core. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug))] pub enum CoreOccupied { /// A parathread. @@ -684,7 +685,7 @@ pub enum CoreOccupied { } /// A helper data-type for tracking validator-group rotations. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug, MallocSizeOf))] pub struct GroupRotationInfo { /// The block number where the session started. @@ -772,7 +773,7 @@ impl GroupRotationInfo { } /// Information about a core which is currently occupied. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, PartialEq, MallocSizeOf))] pub struct OccupiedCore { // NOTE: this has no ParaId as it can be deduced from the candidate descriptor. @@ -808,7 +809,7 @@ impl OccupiedCore { } /// Information about a core which is currently occupied. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, PartialEq, Default, MallocSizeOf))] pub struct ScheduledCore { /// The ID of a para scheduled. @@ -818,7 +819,7 @@ pub struct ScheduledCore { } /// The state of a particular availability core. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(Debug, PartialEq, MallocSizeOf))] pub enum CoreState { /// The core is currently occupied. @@ -854,7 +855,7 @@ impl CoreState { } /// An assumption being made about the state of an occupied core. -#[derive(Clone, Copy, Encode, Decode)] +#[derive(Clone, Copy, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Eq, Hash, Debug))] pub enum OccupiedCoreAssumption { /// The candidate occupying the core was made available and included to free the core. @@ -869,7 +870,7 @@ pub enum OccupiedCoreAssumption { } /// An even concerning a candidate. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug, MallocSizeOf))] pub enum CandidateEvent { /// This candidate receipt was backed in the most recent block. @@ -888,7 +889,7 @@ pub enum CandidateEvent { } /// Information about validator sets of a session. -#[derive(Clone, Encode, Decode, RuntimeDebug)] +#[derive(Clone, Encode, Decode, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Default, MallocSizeOf))] pub struct SessionInfo { /// Validators in canonical ordering. @@ -1033,7 +1034,7 @@ impl From for u8 { /// Abridged version of `HostConfiguration` (from the `Configuration` parachains host runtime module) /// meant to be used by a parachain or PDK such as cumulus. -#[derive(Clone, Encode, Decode, RuntimeDebug)] +#[derive(Clone, Encode, Decode, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq))] pub struct AbridgedHostConfiguration { /// The maximum validation code size, in bytes. @@ -1066,7 +1067,7 @@ pub struct AbridgedHostConfiguration { /// Abridged version of `HrmpChannel` (from the `Hrmp` parachains host runtime module) meant to be /// used by a parachain or PDK such as cumulus. -#[derive(Clone, Encode, Decode, RuntimeDebug)] +#[derive(Clone, Encode, Decode, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq))] pub struct AbridgedHrmpChannel { /// The maximum number of messages that can be pending in the channel at once. @@ -1092,7 +1093,7 @@ pub struct AbridgedHrmpChannel { } /// A possible upgrade restriction that prevents a parachain from performing an upgrade. -#[derive(Encode, Decode, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, PartialEq, RuntimeDebug, TypeInfo)] pub enum UpgradeRestriction { /// There is an upgrade restriction and there are no details about its specifics nor how long /// it could last. @@ -1105,7 +1106,7 @@ pub enum UpgradeRestriction { /// /// This data type appears in the last step of the upgrade process. After the parachain observes it /// and reacts to it the upgrade process concludes. -#[derive(Encode, Decode, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, PartialEq, RuntimeDebug, TypeInfo)] pub enum UpgradeGoAhead { /// Abort the upgrade process. There is something wrong with the validation code previously /// submitted by the parachain. This variant can also be used to prevent upgrades by the governance @@ -1173,7 +1174,7 @@ impl From for runtime_primitives::DigestItem { /// A statement about a candidate, to be used within the dispute resolution process. /// /// Statements are either in favor of the candidate's validity or against it. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug, TypeInfo)] pub enum DisputeStatement { /// A valid statement, of the given kind. #[codec(index = 0)] @@ -1242,7 +1243,7 @@ impl DisputeStatement { } /// Different kinds of statements of validity on a candidate. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug, TypeInfo)] pub enum ValidDisputeStatementKind { /// An explicit statement issued as part of a dispute. #[codec(index = 0)] @@ -1259,7 +1260,7 @@ pub enum ValidDisputeStatementKind { } /// Different kinds of statements of invalidity on a candidate. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug, TypeInfo)] pub enum InvalidDisputeStatementKind { /// An explicit statement issued as part of a dispute. #[codec(index = 0)] @@ -1287,7 +1288,7 @@ impl ExplicitDisputeStatement { } /// A set of statements about a specific candidate. -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug, TypeInfo)] pub struct DisputeStatementSet { /// The candidate referenced by this set. pub candidate_hash: CandidateHash, @@ -1301,7 +1302,7 @@ pub struct DisputeStatementSet { pub type MultiDisputeStatementSet = Vec; /// The entire state of a dispute. -#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq)] +#[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, TypeInfo)] pub struct DisputeState { /// A bitfield indicating all validators for the candidate. pub validators_for: BitVec, // one bit per validator. @@ -1314,7 +1315,7 @@ pub struct DisputeState { } /// Parachains inherent-data passed into the runtime by a block author -#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, RuntimeDebug, TypeInfo)] pub struct InherentData { /// Signed bitfields by validators about availability. pub bitfields: UncheckedSignedAvailabilityBitfields, diff --git a/primitives/src/v1/signed.rs b/primitives/src/v1/signed.rs index 66908216ebb3..612cc1516895 100644 --- a/primitives/src/v1/signed.rs +++ b/primitives/src/v1/signed.rs @@ -15,6 +15,7 @@ // along with Polkadot. If not, see . use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; #[cfg(feature = "std")] use application_crypto::AppKey; @@ -41,7 +42,7 @@ use crate::v0::{SigningContext, ValidatorId, ValidatorIndex, ValidatorSignature} pub struct Signed(UncheckedSigned); /// Unchecked signed data, can be converted to `Signed` by checking the signature. -#[derive(Clone, PartialEq, Eq, RuntimeDebug, Encode, Decode)] +#[derive(Clone, PartialEq, Eq, RuntimeDebug, Encode, Decode, TypeInfo)] pub struct UncheckedSigned { /// The payload is part of the signed data. The rest is the signing context, /// which is known both at signing and at validation. diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 9e3255969ecb..41e8d8fea71d 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -10,10 +10,12 @@ bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } parity-scale-codec = { version = "2.0.0", 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"] } 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 } 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 } @@ -63,6 +65,7 @@ no_std = [] std = [ "bitvec/std", "parity-scale-codec/std", + "scale-info/std", "log/std", "rustc-hex/std", "serde_derive", diff --git a/runtime/common/src/auctions.rs b/runtime/common/src/auctions.rs index caa609e1aff5..a3866fed2ba2 100644 --- a/runtime/common/src/auctions.rs +++ b/runtime/common/src/auctions.rs @@ -118,12 +118,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata( - T::AccountId = "AccountId", - T::BlockNumber = "BlockNumber", - LeasePeriodOf = "LeasePeriod", - BalanceOf = "Balance", - )] pub enum Event { /// An auction started. Provides its index and the block number where it will begin to /// close and the first lease period of the quadruplet that is auctioned. diff --git a/runtime/common/src/claims.rs b/runtime/common/src/claims.rs index f2be5a954b3c..a89bd0b4d03a 100644 --- a/runtime/common/src/claims.rs +++ b/runtime/common/src/claims.rs @@ -24,6 +24,7 @@ use frame_support::{ pub use pallet::*; use parity_scale_codec::{Decode, Encode}; use primitives::v1::ValidityError; +use scale_info::TypeInfo; #[cfg(feature = "std")] use serde::{self, Deserialize, Deserializer, Serialize, Serializer}; use sp_io::{crypto::secp256k1_ecdsa_recover, hashing::keccak_256}; @@ -71,7 +72,7 @@ impl WeightInfo for TestWeightInfo { } /// The kind of statement an account needs to make for a claim to be valid. -#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum StatementKind { /// Statement required to be made by non-SAFT holders. @@ -105,7 +106,7 @@ impl Default for StatementKind { /// An Ethereum address (i.e. 20 bytes, used to represent an Ethereum account). /// /// This gets serialized to the 0x-prefixed hex representation. -#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, Default, RuntimeDebug)] +#[derive(Clone, Copy, PartialEq, Eq, Encode, Decode, Default, RuntimeDebug, TypeInfo)] pub struct EthereumAddress([u8; 20]); #[cfg(feature = "std")] @@ -141,7 +142,7 @@ impl<'de> Deserialize<'de> for EthereumAddress { } } -#[derive(Encode, Decode, Clone)] +#[derive(Encode, Decode, Clone, TypeInfo)] pub struct EcdsaSignature(pub [u8; 65]); impl PartialEq for EcdsaSignature { @@ -180,7 +181,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId", BalanceOf = "Balance")] pub enum Event { /// Someone claimed some DOTs. `[who, ethereum_address, amount]` Claimed(T::AccountId, EthereumAddress, BalanceOf), @@ -473,14 +473,14 @@ pub mod pallet { // // The weight of this logic is included in the `claim` dispatchable. // - Call::claim(account, ethereum_signature) => { + Call::claim { dest: account, ethereum_signature } => { let data = account.using_encoded(to_ascii_hex); (Self::eth_recover(ðereum_signature, &data, &[][..]), None) }, // // The weight of this logic is included in the `claim_attest` dispatchable. // - Call::claim_attest(account, ethereum_signature, statement) => { + Call::claim_attest { dest: account, ethereum_signature, statement } => { let data = account.using_encoded(to_ascii_hex); ( Self::eth_recover(ðereum_signature, &data, &statement), @@ -588,7 +588,8 @@ impl Pallet { /// Validate `attest` calls prior to execution. Needed to avoid a DoS attack since they are /// otherwise free to place on chain. -#[derive(Encode, Decode, Clone, Eq, PartialEq)] +#[derive(Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] +#[scale_info(skip_type_params(T))] pub struct PrevalidateAttests(sp_std::marker::PhantomData) where ::Call: IsSubType>; @@ -643,7 +644,7 @@ where _len: usize, ) -> TransactionValidity { if let Some(local_call) = call.is_sub_type() { - if let Call::attest(attested_statement) = local_call { + if let Call::attest { statement: attested_statement } = local_call { let signer = Preclaims::::get(who) .ok_or(InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()))?; if let Some(s) = Signing::::get(signer) { @@ -1035,7 +1036,9 @@ mod tests { fn valid_attest_transactions_are_free() { new_test_ext().execute_with(|| { let p = PrevalidateAttests::::new(); - let c = Call::Claims(ClaimsCall::attest(StatementKind::Saft.to_text().to_vec())); + let c = Call::Claims(ClaimsCall::attest { + statement: StatementKind::Saft.to_text().to_vec(), + }); let di = c.get_dispatch_info(); assert_eq!(di.pays_fee, Pays::No); let r = p.validate(&42, &c, &di, 20); @@ -1047,11 +1050,15 @@ mod tests { fn invalid_attest_transactions_are_recognized() { new_test_ext().execute_with(|| { let p = PrevalidateAttests::::new(); - let c = Call::Claims(ClaimsCall::attest(StatementKind::Regular.to_text().to_vec())); + let c = Call::Claims(ClaimsCall::attest { + statement: StatementKind::Regular.to_text().to_vec(), + }); let di = c.get_dispatch_info(); let r = p.validate(&42, &c, &di, 20); assert!(r.is_err()); - let c = Call::Claims(ClaimsCall::attest(StatementKind::Saft.to_text().to_vec())); + let c = Call::Claims(ClaimsCall::attest { + statement: StatementKind::Saft.to_text().to_vec(), + }); let di = c.get_dispatch_info(); let r = p.validate(&69, &c, &di, 20); assert!(r.is_err()); @@ -1282,7 +1289,10 @@ mod tests { assert_eq!( >::validate_unsigned( source, - &ClaimsCall::claim(1, sig::(&alice(), &1u64.encode(), &[][..])) + &ClaimsCall::claim { + dest: 1, + ethereum_signature: sig::(&alice(), &1u64.encode(), &[][..]) + } ), Ok(ValidTransaction { priority: 100, @@ -1295,19 +1305,26 @@ mod tests { assert_eq!( >::validate_unsigned( source, - &ClaimsCall::claim(0, EcdsaSignature([0; 65])) + &ClaimsCall::claim { dest: 0, ethereum_signature: EcdsaSignature([0; 65]) } ), InvalidTransaction::Custom(ValidityError::InvalidEthereumSignature.into()).into(), ); assert_eq!( >::validate_unsigned( source, - &ClaimsCall::claim(1, sig::(&bob(), &1u64.encode(), &[][..])) + &ClaimsCall::claim { + dest: 1, + ethereum_signature: sig::(&bob(), &1u64.encode(), &[][..]) + } ), InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(), ); let s = sig::(&dave(), &1u64.encode(), StatementKind::Regular.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Regular.to_text().to_vec()); + let call = ClaimsCall::claim_attest { + dest: 1, + ethereum_signature: s, + statement: StatementKind::Regular.to_text().to_vec(), + }; assert_eq!( >::validate_unsigned(source, &call), Ok(ValidTransaction { @@ -1321,31 +1338,43 @@ mod tests { assert_eq!( >::validate_unsigned( source, - &ClaimsCall::claim_attest( - 1, - EcdsaSignature([0; 65]), - StatementKind::Regular.to_text().to_vec() - ) + &ClaimsCall::claim_attest { + dest: 1, + ethereum_signature: EcdsaSignature([0; 65]), + statement: StatementKind::Regular.to_text().to_vec() + } ), InvalidTransaction::Custom(ValidityError::InvalidEthereumSignature.into()).into(), ); let s = sig::(&bob(), &1u64.encode(), StatementKind::Regular.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Regular.to_text().to_vec()); + let call = ClaimsCall::claim_attest { + dest: 1, + ethereum_signature: s, + statement: StatementKind::Regular.to_text().to_vec(), + }; assert_eq!( >::validate_unsigned(source, &call), InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(), ); let s = sig::(&dave(), &1u64.encode(), StatementKind::Saft.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Regular.to_text().to_vec()); + let call = ClaimsCall::claim_attest { + dest: 1, + ethereum_signature: s, + statement: StatementKind::Regular.to_text().to_vec(), + }; assert_eq!( >::validate_unsigned(source, &call), InvalidTransaction::Custom(ValidityError::SignerHasNoClaim.into()).into(), ); let s = sig::(&dave(), &1u64.encode(), StatementKind::Saft.to_text()); - let call = ClaimsCall::claim_attest(1, s, StatementKind::Saft.to_text().to_vec()); + let call = ClaimsCall::claim_attest { + dest: 1, + ethereum_signature: s, + statement: StatementKind::Saft.to_text().to_vec(), + }; assert_eq!( >::validate_unsigned(source, &call), InvalidTransaction::Custom(ValidityError::InvalidStatement.into()).into(), @@ -1414,7 +1443,7 @@ mod benchmarking { super::Pallet::::mint_claim(RawOrigin::Root.into(), eth_address, VALUE.into(), vesting, None)?; assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); let source = sp_runtime::transaction_validity::TransactionSource::External; - let call = Call::::claim(account.clone(), signature.clone()); + let call = Call::::claim { dest: account.clone(), ethereum_signature: signature.clone() }; }: { super::Pallet::::validate_unsigned(source, &call).map_err(|e| -> &'static str { e.into() })?; super::Pallet::::claim(RawOrigin::None.into(), account, signature)?; @@ -1459,7 +1488,7 @@ mod benchmarking { let signature = sig::(&secret_key, &account.encode(), statement.to_text()); super::Pallet::::mint_claim(RawOrigin::Root.into(), eth_address, VALUE.into(), vesting, Some(statement))?; assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); - let call = Call::::claim_attest(account.clone(), signature.clone(), StatementKind::Regular.to_text().to_vec()); + let call = Call::::claim_attest { dest: account.clone(), ethereum_signature: signature.clone(), statement: StatementKind::Regular.to_text().to_vec() }; let source = sp_runtime::transaction_validity::TransactionSource::External; }: { super::Pallet::::validate_unsigned(source, &call).map_err(|e| -> &'static str { e.into() })?; @@ -1489,10 +1518,10 @@ mod benchmarking { Preclaims::::insert(&account, eth_address); assert_eq!(Claims::::get(eth_address), Some(VALUE.into())); - let call = super::Call::attest(StatementKind::Regular.to_text().to_vec()); + let call = super::Call::attest { statement: StatementKind::Regular.to_text().to_vec() }; // We have to copy the validate statement here because of trait issues... :( let validate = |who: &T::AccountId, call: &super::Call| -> DispatchResult { - if let Call::attest(attested_statement) = call { + if let Call::attest{ statement: attested_statement } = call { let signer = Preclaims::::get(who).ok_or("signer has no claim")?; if let Some(s) = Signing::::get(signer) { ensure!(&attested_statement[..] == s.to_text(), "invalid statement"); diff --git a/runtime/common/src/crowdloan.rs b/runtime/common/src/crowdloan.rs index e0dc0d4c8395..a97825d445c2 100644 --- a/runtime/common/src/crowdloan.rs +++ b/runtime/common/src/crowdloan.rs @@ -63,6 +63,7 @@ use frame_support::{ pub use pallet::*; use parity_scale_codec::{Decode, Encode}; use primitives::v1::Id as ParaId; +use scale_info::TypeInfo; use sp_runtime::{ traits::{ AccountIdConversion, CheckedAdd, Hash, IdentifyAccount, One, Saturating, Verify, Zero, @@ -124,7 +125,7 @@ impl WeightInfo for TestWeightInfo { } } -#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum LastContribution { Never, PreEnding(u32), @@ -133,7 +134,7 @@ pub enum LastContribution { /// Information on a funding effort for a pre-existing parachain. We assume that the parachain ID /// is known as it's used for the key of the storage item for which this is the value (`Funds`). -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] #[codec(dumb_trait_bound)] pub struct FundInfo { /// The owning account who placed the deposit. @@ -242,7 +243,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId", BalanceOf = "Balance")] pub enum Event { /// Create a new crowdloaning campaign. `[fund_index]` Created(ParaId), diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 3c9e80993205..5f444bcffc0f 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -35,12 +35,13 @@ use sp_std::{prelude::*, result}; use crate::traits::{OnSwap, Registrar}; pub use pallet::*; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; use sp_runtime::{ traits::{CheckedSub, Saturating}, RuntimeDebug, }; -#[derive(Encode, Decode, Clone, PartialEq, Eq, Default, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, Default, RuntimeDebug, TypeInfo)] pub struct ParaInfo { /// The account that has placed a deposit for registering this para. pub(crate) manager: Account, @@ -124,7 +125,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::AccountId = "AccountId")] pub enum Event { Registered(ParaId, T::AccountId), Deregistered(ParaId), diff --git a/runtime/common/src/purchase.rs b/runtime/common/src/purchase.rs index f2b2a7a299b8..5f86bf4226d5 100644 --- a/runtime/common/src/purchase.rs +++ b/runtime/common/src/purchase.rs @@ -23,6 +23,7 @@ use frame_support::{ use frame_system::pallet_prelude::*; pub use pallet::*; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; use sp_core::sr25519; use sp_runtime::{ traits::{CheckedAdd, Saturating, Verify, Zero}, @@ -34,7 +35,7 @@ type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; /// The kind of a statement an account needs to make for a claim to be valid. -#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug, TypeInfo)] pub enum AccountValidity { /// Account is not valid. Invalid, @@ -70,7 +71,7 @@ impl AccountValidity { } /// All information about an account regarding the purchase of DOTs. -#[derive(Encode, Decode, Default, Clone, Eq, PartialEq, RuntimeDebug)] +#[derive(Encode, Decode, Default, Clone, Eq, PartialEq, RuntimeDebug, TypeInfo)] pub struct AccountStatus { /// The current validity status of the user. Will denote if the user has passed KYC, /// how much they are able to purchase, and when their purchase process has completed. @@ -129,11 +130,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata( - T::AccountId = "AccountId", - T::BlockNumber = "BlockNumber", - BalanceOf = "Balance", - )] pub enum Event { /// A [new] account was created. AccountCreated(T::AccountId), @@ -1071,7 +1067,7 @@ mod tests { ); // Vesting lock is removed in whole on block 101 (100 blocks after block 1) System::set_block_number(100); - let vest_call = Call::Vesting(pallet_vesting::Call::::vest()); + let vest_call = Call::Vesting(pallet_vesting::Call::::vest {}); assert_ok!(vest_call.clone().dispatch(Origin::signed(alice()))); assert_ok!(vest_call.clone().dispatch(Origin::signed(bob()))); assert_eq!(::VestingSchedule::vesting_balance(&alice()), Some(45)); diff --git a/runtime/common/src/slots.rs b/runtime/common/src/slots.rs index 0dac47c71136..8fe4a77f187e 100644 --- a/runtime/common/src/slots.rs +++ b/runtime/common/src/slots.rs @@ -110,11 +110,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata( - T::AccountId = "AccountId", - LeasePeriodOf = "LeasePeriod", - BalanceOf = "Balance", - )] pub enum Event { /// A new `[lease_period]` is beginning. NewLeasePeriod(LeasePeriodOf), diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 43284abb6425..26858f68d4ee 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -8,6 +8,7 @@ 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"] } +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 } serde = { version = "1.0.130", default-features = false } @@ -109,6 +110,7 @@ std = [ "primitives/std", "rustc-hex/std", "parity-scale-codec/std", + "scale-info/std", "inherents/std", "sp-core/std", "sp-api/std", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 3ad9a4fa1242..fcb92a44f894 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -141,7 +141,7 @@ pub fn native_version() -> NativeVersion { pub struct BaseFilter; impl Contains for BaseFilter { fn contains(c: &Call) -> bool { - !matches!(c, Call::Registrar(paras_registrar::Call::swap(..))) + !matches!(c, Call::Registrar(paras_registrar::Call::swap { .. })) } } @@ -972,7 +972,17 @@ parameter_types! { /// The type used to represent the kinds of proxying allowed. #[derive( - Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen, + Copy, + Clone, + Eq, + PartialEq, + Ord, + PartialOrd, + Encode, + Decode, + RuntimeDebug, + MaxEncodedLen, + scale_info::TypeInfo, )] pub enum ProxyType { Any, @@ -997,9 +1007,9 @@ impl InstanceFilter for ProxyType { Call::System(..) | Call::Babe(..) | Call::Timestamp(..) | - Call::Indices(pallet_indices::Call::claim(..)) | - Call::Indices(pallet_indices::Call::free(..)) | - Call::Indices(pallet_indices::Call::freeze(..)) | + Call::Indices(pallet_indices::Call::claim {..}) | + Call::Indices(pallet_indices::Call::free {..}) | + Call::Indices(pallet_indices::Call::freeze {..}) | // Specifically omitting Indices `transfer`, `force_transfer` // Specifically omitting the entire Balances pallet Call::Authorship(..) | @@ -1019,24 +1029,24 @@ impl InstanceFilter for ProxyType { Call::Utility(..) | Call::Identity(..) | Call::Society(..) | - Call::Recovery(pallet_recovery::Call::as_recovered(..)) | - Call::Recovery(pallet_recovery::Call::vouch_recovery(..)) | - Call::Recovery(pallet_recovery::Call::claim_recovery(..)) | - Call::Recovery(pallet_recovery::Call::close_recovery(..)) | - Call::Recovery(pallet_recovery::Call::remove_recovery(..)) | - Call::Recovery(pallet_recovery::Call::cancel_recovered(..)) | + Call::Recovery(pallet_recovery::Call::as_recovered {..}) | + Call::Recovery(pallet_recovery::Call::vouch_recovery {..}) | + Call::Recovery(pallet_recovery::Call::claim_recovery {..}) | + Call::Recovery(pallet_recovery::Call::close_recovery {..}) | + Call::Recovery(pallet_recovery::Call::remove_recovery {..}) | + Call::Recovery(pallet_recovery::Call::cancel_recovered {..}) | // Specifically omitting Recovery `create_recovery`, `initiate_recovery` - Call::Vesting(pallet_vesting::Call::vest(..)) | - Call::Vesting(pallet_vesting::Call::vest_other(..)) | + Call::Vesting(pallet_vesting::Call::vest {..}) | + Call::Vesting(pallet_vesting::Call::vest_other {..}) | // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` Call::Scheduler(..) | Call::Proxy(..) | Call::Multisig(..) | Call::Gilt(..) | - Call::Registrar(paras_registrar::Call::register(..)) | - Call::Registrar(paras_registrar::Call::deregister(..)) | + Call::Registrar(paras_registrar::Call::register {..}) | + Call::Registrar(paras_registrar::Call::deregister {..}) | // Specifically omitting Registrar `swap` - Call::Registrar(paras_registrar::Call::reserve(..)) | + Call::Registrar(paras_registrar::Call::reserve {..}) | Call::Crowdloan(..) | Call::Slots(..) | Call::Auctions(..) // Specifically omitting the entire XCM Pallet @@ -1054,10 +1064,10 @@ impl InstanceFilter for ProxyType { }, ProxyType::IdentityJudgement => matches!( c, - Call::Identity(pallet_identity::Call::provide_judgement(..)) | Call::Utility(..) + Call::Identity(pallet_identity::Call::provide_judgement { .. }) | Call::Utility(..) ), ProxyType::CancelProxy => { - matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement(..))) + matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement { .. })) }, ProxyType::Auction => matches!( c, @@ -1646,7 +1656,7 @@ sp_api::impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } diff --git a/runtime/kusama/src/tests.rs b/runtime/kusama/src/tests.rs index 103987e8b0fd..d2c1c725e3a9 100644 --- a/runtime/kusama/src/tests.rs +++ b/runtime/kusama/src/tests.rs @@ -79,10 +79,10 @@ fn block_cost() { #[ignore] fn transfer_cost_min_multiplier() { let min_multiplier = runtime_common::MinimumMultiplier::get(); - let call = >::transfer_keep_alive( - Default::default(), - Default::default(), - ); + let call = pallet_balances::Call::::transfer_keep_alive { + dest: Default::default(), + value: Default::default(), + }; let info = call.get_dispatch_info(); // convert to outer call. let call = Call::Balances(call); diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 71c6874428cf..8e3b41d95e6b 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -9,7 +9,8 @@ bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } -serde = { version = "1.0.130", features = ["derive"], optional = true } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +serde = { version = "1.0.130", features = [ "derive" ], optional = true } derive_more = "0.99.14" bitflags = "1.3.2" @@ -56,6 +57,7 @@ std = [ "bitvec/std", "parity-scale-codec/std", "rustc-hex/std", + "scale-info/std", "serde", "primitives/std", "inherents/std", diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index f2de0db6aa93..64aaac6b3487 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -33,7 +33,7 @@ pub mod migration; const LOG_TARGET: &str = "runtime::configuration"; /// All configuration of the runtime with respect to parachains and parathreads. -#[derive(Clone, Encode, Decode, PartialEq, sp_core::RuntimeDebug)] +#[derive(Clone, Encode, Decode, PartialEq, sp_core::RuntimeDebug, scale_info::TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] pub struct HostConfiguration { // NOTE: This structure is used by parachains via merkle proofs. Therefore, this struct requires diff --git a/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index 43388c64b01c..b3bd5a3ed68d 100644 --- a/runtime/parachains/src/disputes.rs +++ b/runtime/parachains/src/disputes.rs @@ -30,6 +30,7 @@ use primitives::v1::{ InvalidDisputeStatementKind, MultiDisputeStatementSet, SessionIndex, SigningContext, ValidDisputeStatementKind, ValidatorId, ValidatorIndex, ValidatorSignature, }; +use scale_info::TypeInfo; use sp_runtime::{ traits::{AppVerify, One, Saturating, Zero}, DispatchError, RuntimeDebug, SaturatedConversion, @@ -37,14 +38,14 @@ use sp_runtime::{ use sp_std::{collections::btree_set::BTreeSet, prelude::*}; /// Whether the dispute is local or remote. -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum DisputeLocation { Local, Remote, } /// The result of a dispute, whether the candidate is deemed valid (for) or invalid (against). -#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug)] +#[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum DisputeResult { Valid, Invalid, diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index bb200900d5b5..f087dfd3a405 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -25,6 +25,7 @@ use primitives::v1::{ Balance, Hash, HrmpChannelId, Id as ParaId, InboundHrmpMessage, OutboundHrmpMessage, SessionIndex, }; +use scale_info::TypeInfo; use sp_runtime::traits::{AccountIdConversion, BlakeTwo256, Hash as HashT, UniqueSaturatedInto}; use sp_std::{ collections::{btree_map::BTreeMap, btree_set::BTreeSet}, @@ -35,7 +36,7 @@ use sp_std::{ pub use pallet::*; /// A description of a request to open an HRMP channel. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, TypeInfo)] pub struct HrmpOpenChannelRequest { /// Indicates if this request was confirmed by the recipient. pub confirmed: bool, @@ -53,7 +54,7 @@ pub struct HrmpOpenChannelRequest { } /// A metadata of an HRMP channel. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, TypeInfo)] #[cfg_attr(test, derive(Debug))] pub struct HrmpChannel { // NOTE: This structure is used by parachains via merkle proofs. Therefore, this struct requires diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs index 4d92e90df734..a8702c873c2f 100644 --- a/runtime/parachains/src/inclusion.rs +++ b/runtime/parachains/src/inclusion.rs @@ -28,6 +28,7 @@ use primitives::v1::{ CandidateHash, CandidateReceipt, CommittedCandidateReceipt, CoreIndex, GroupIndex, HeadData, Id as ParaId, SigningContext, UncheckedSignedAvailabilityBitfields, ValidatorIndex, }; +use scale_info::TypeInfo; use sp_runtime::{ traits::{One, Saturating}, DispatchError, @@ -43,7 +44,7 @@ pub use pallet::*; /// /// The bitfield's signature should be checked at the point of submission. Afterwards it can be /// dropped. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, TypeInfo)] #[cfg_attr(test, derive(Debug))] pub struct AvailabilityBitfieldRecord { bitfield: AvailabilityBitfield, // one bit per core. @@ -51,7 +52,7 @@ pub struct AvailabilityBitfieldRecord { } /// A backed candidate pending availability. -#[derive(Encode, Decode, PartialEq)] +#[derive(Encode, Decode, PartialEq, TypeInfo)] #[cfg_attr(test, derive(Debug))] pub struct CandidatePendingAvailability { /// The availability core this is assigned to. @@ -134,7 +135,6 @@ pub mod pallet { #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] - #[pallet::metadata(T::Hash = "Hash")] pub enum Event { /// A candidate was backed. `[candidate, head_data]` CandidateBacked(CandidateReceipt, HeadData, CoreIndex, GroupIndex), diff --git a/runtime/parachains/src/initializer.rs b/runtime/parachains/src/initializer.rs index dc47ccc79864..6958d754c462 100644 --- a/runtime/parachains/src/initializer.rs +++ b/runtime/parachains/src/initializer.rs @@ -27,6 +27,7 @@ use crate::{ use frame_support::traits::{OneSessionHandler, Randomness}; use parity_scale_codec::{Decode, Encode}; use primitives::v1::{BlockNumber, ConsensusLog, SessionIndex, ValidatorId}; +use scale_info::TypeInfo; use sp_std::prelude::*; pub use pallet::*; @@ -61,7 +62,7 @@ impl> Default for SessionChangeNotification, queued: Vec, diff --git a/runtime/parachains/src/origin.rs b/runtime/parachains/src/origin.rs index ba4ad549c78e..83d4dcc25d99 100644 --- a/runtime/parachains/src/origin.rs +++ b/runtime/parachains/src/origin.rs @@ -54,7 +54,7 @@ pub mod pallet { /// Origin for the parachains. #[pallet::origin] - #[derive(PartialEq, Eq, Clone, Encode, Decode, sp_core::RuntimeDebug)] + #[derive(PartialEq, Eq, Clone, Encode, Decode, sp_core::RuntimeDebug, scale_info::TypeInfo)] pub enum Origin { /// It comes from a parachain. Parachain(ParaId), diff --git a/runtime/parachains/src/paras.rs b/runtime/parachains/src/paras.rs index 170914d8f518..9a840837ae94 100644 --- a/runtime/parachains/src/paras.rs +++ b/runtime/parachains/src/paras.rs @@ -31,6 +31,7 @@ use primitives::v1::{ ConsensusLog, HeadData, Id as ParaId, SessionIndex, UpgradeGoAhead, UpgradeRestriction, ValidationCode, ValidationCodeHash, }; +use scale_info::TypeInfo; use sp_core::RuntimeDebug; use sp_runtime::{traits::One, DispatchResult, SaturatedConversion}; use sp_std::{prelude::*, result}; @@ -43,7 +44,7 @@ pub use crate::Origin as ParachainOrigin; pub use pallet::*; // the two key times necessary to track for every code replacement. -#[derive(Default, Encode, Decode)] +#[derive(Default, Encode, Decode, TypeInfo)] #[cfg_attr(test, derive(Debug, Clone, PartialEq))] pub struct ReplacementTimes { /// The relay-chain block number that the code upgrade was expected to be activated. @@ -58,7 +59,7 @@ pub struct ReplacementTimes { /// Metadata used to track previous parachain validation code that we keep in /// the state. -#[derive(Default, Encode, Decode)] +#[derive(Default, Encode, Decode, TypeInfo)] #[cfg_attr(test, derive(Debug, Clone, PartialEq))] pub struct ParaPastCodeMeta { /// Block numbers where the code was expected to be replaced and where the code @@ -87,7 +88,7 @@ enum UseCodeAt { /// If the para is in a "transition state", it is expected that the parachain is /// queued in the `ActionsQueue` to transition it into a stable state. Its lifecycle /// state will be used to determine the state transition to apply to the para. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub enum ParaLifecycle { /// Para is new and is onboarding as a Parathread or Parachain. Onboarding, @@ -255,7 +256,7 @@ impl ParaPastCodeMeta { } /// Arguments for initializing a para. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] +#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct ParaGenesisArgs { /// The initial head data to use. diff --git a/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs index 82e21cbe1805..e2dd357658df 100644 --- a/runtime/parachains/src/paras_inherent.rs +++ b/runtime/parachains/src/paras_inherent.rs @@ -135,11 +135,11 @@ pub mod pallet { }, }; - Some(Call::enter(inherent_data)) + Some(Call::enter { data: inherent_data }) } fn is_inherent(call: &Self::Call) -> bool { - matches!(call, Call::enter(..)) + matches!(call, Call::enter { .. }) } } @@ -429,12 +429,14 @@ mod tests { System::set_block_consumed_resources(used_block_weight, 0); // execute the paras inherent - let post_info = Call::::enter(ParachainsInherentData { - bitfields: signed_bitfields, - backed_candidates, - disputes: Vec::new(), - parent_header: default_header(), - }) + let post_info = Call::::enter { + data: ParachainsInherentData { + bitfields: signed_bitfields, + backed_candidates, + disputes: Vec::new(), + parent_header: default_header(), + }, + } .dispatch_bypass_filter(None.into()) .unwrap_err() .post_info; @@ -477,12 +479,14 @@ mod tests { System::set_block_consumed_resources(used_block_weight, 0); // execute the paras inherent - let post_info = Call::::enter(ParachainsInherentData { - bitfields: signed_bitfields, - backed_candidates, - disputes: Vec::new(), - parent_header: header, - }) + let post_info = Call::::enter { + data: ParachainsInherentData { + bitfields: signed_bitfields, + backed_candidates, + disputes: Vec::new(), + parent_header: header, + }, + } .dispatch_bypass_filter(None.into()) .unwrap(); diff --git a/runtime/parachains/src/scheduler.rs b/runtime/parachains/src/scheduler.rs index ef06fb79beba..e6772c19d910 100644 --- a/runtime/parachains/src/scheduler.rs +++ b/runtime/parachains/src/scheduler.rs @@ -40,6 +40,7 @@ use primitives::v1::{ CollatorId, CoreIndex, CoreOccupied, GroupIndex, GroupRotationInfo, Id as ParaId, ParathreadClaim, ParathreadEntry, ScheduledCore, ValidatorIndex, }; +use scale_info::TypeInfo; use sp_runtime::traits::{One, Saturating}; use sp_std::{convert::TryInto, prelude::*}; @@ -48,7 +49,7 @@ use crate::{configuration, initializer::SessionChangeNotification, paras}; pub use pallet::*; /// A queued parathread entry, pre-assigned to a core. -#[derive(Encode, Decode, Default)] +#[derive(Encode, Decode, Default, TypeInfo)] #[cfg_attr(test, derive(PartialEq, Debug))] pub struct QueuedParathread { claim: ParathreadEntry, @@ -56,7 +57,7 @@ pub struct QueuedParathread { } /// The queue of all parathread claims. -#[derive(Encode, Decode, Default)] +#[derive(Encode, Decode, Default, TypeInfo)] #[cfg_attr(test, derive(PartialEq, Debug))] pub struct ParathreadClaimQueue { queue: Vec, @@ -97,7 +98,7 @@ pub enum FreedReason { } /// The assignment type. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug))] pub enum AssignmentKind { /// A parachain. @@ -107,7 +108,7 @@ pub enum AssignmentKind { } /// How a free core is scheduled to be assigned. -#[derive(Clone, Encode, Decode)] +#[derive(Clone, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(PartialEq, Debug))] pub struct CoreAssignment { /// The core that is assigned. diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index c4c8f2d64a72..0a4532100951 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -8,6 +8,7 @@ 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"] } +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 } serde = { version = "1.0.130", default-features = false } @@ -100,6 +101,7 @@ std = [ "primitives/std", "rustc-hex/std", "parity-scale-codec/std", + "scale-info/std", "inherents/std", "sp-core/std", "sp-api/std", diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 3e0978a4647d..2d4e35c630a2 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -906,7 +906,17 @@ parameter_types! { /// The type used to represent the kinds of proxying allowed. #[derive( - Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen, + Copy, + Clone, + Eq, + PartialEq, + Ord, + PartialOrd, + Encode, + Decode, + RuntimeDebug, + MaxEncodedLen, + scale_info::TypeInfo, )] pub enum ProxyType { Any = 0, @@ -964,9 +974,9 @@ impl InstanceFilter for ProxyType { Call::Scheduler(..) | Call::Babe(..) | Call::Timestamp(..) | - Call::Indices(pallet_indices::Call::claim(..)) | - Call::Indices(pallet_indices::Call::free(..)) | - Call::Indices(pallet_indices::Call::freeze(..)) | + Call::Indices(pallet_indices::Call::claim{..}) | + Call::Indices(pallet_indices::Call::free{..}) | + Call::Indices(pallet_indices::Call::freeze{..}) | // Specifically omitting Indices `transfer`, `force_transfer` // Specifically omitting the entire Balances pallet Call::Authorship(..) | @@ -983,8 +993,8 @@ impl InstanceFilter for ProxyType { Call::Bounties(..) | Call::Tips(..) | Call::Claims(..) | - Call::Vesting(pallet_vesting::Call::vest(..)) | - Call::Vesting(pallet_vesting::Call::vest_other(..)) | + Call::Vesting(pallet_vesting::Call::vest{..}) | + Call::Vesting(pallet_vesting::Call::vest_other{..}) | // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` Call::Utility(..) | Call::Identity(..) | @@ -1004,10 +1014,10 @@ impl InstanceFilter for ProxyType { }, ProxyType::IdentityJudgement => matches!( c, - Call::Identity(pallet_identity::Call::provide_judgement(..)) | Call::Utility(..) + Call::Identity(pallet_identity::Call::provide_judgement { .. }) | Call::Utility(..) ), ProxyType::CancelProxy => { - matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement(..))) + matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement { .. })) }, } } @@ -1271,7 +1281,7 @@ sp_api::impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } @@ -1699,10 +1709,10 @@ mod test_fees { #[ignore] fn transfer_cost_min_multiplier() { let min_multiplier = runtime_common::MinimumMultiplier::get(); - let call = >::transfer_keep_alive( - Default::default(), - Default::default(), - ); + let call = pallet_balances::Call::::transfer_keep_alive { + dest: Default::default(), + value: Default::default(), + }; let info = call.get_dispatch_info(); // convert to outer call. let call = Call::Balances(call); diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index ed706e19bd34..d3fef706b679 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -7,6 +7,7 @@ build = "build.rs" [dependencies] parity-scale-codec = { version = "2.2.0", 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 } smallvec = "1.6.1" @@ -92,6 +93,7 @@ std = [ "bp-wococo/std", "bridge-runtime-common/std", "parity-scale-codec/std", + "scale-info/std", "frame-executive/std", "pallet-authority-discovery/std", "pallet-authorship/std", diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index d29bf8d6543f..cf0a83bfbb41 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -46,6 +46,7 @@ use runtime_common::{ BlockHashCount, BlockLength, BlockWeights, RocksDbWeight, SlowAdjustingFeeUpdate, }; use runtime_parachains::{self, runtime_api_impl::v1 as runtime_api_impl}; +use scale_info::TypeInfo; use sp_core::{OpaqueMetadata, RuntimeDebug}; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, @@ -1034,7 +1035,17 @@ parameter_types! { /// The type used to represent the kinds of proxying allowed. #[derive( - Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen, + Copy, + Clone, + Eq, + PartialEq, + Ord, + PartialOrd, + Encode, + Decode, + RuntimeDebug, + MaxEncodedLen, + TypeInfo, )] pub enum ProxyType { Any, @@ -1051,10 +1062,13 @@ impl InstanceFilter for ProxyType { match self { ProxyType::Any => true, ProxyType::CancelProxy => - matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement(..))), + matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement { .. })), ProxyType::Auction => matches!( c, - Call::Auctions(..) | Call::Crowdloan(..) | Call::Registrar(..) | Call::Slots(..) + Call::Auctions { .. } | + Call::Crowdloan { .. } | + Call::Registrar { .. } | + Call::Slots { .. } ), } } @@ -1129,7 +1143,7 @@ sp_api::impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index 2072562e7bf5..7a506849efc3 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -10,6 +10,7 @@ bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } parity-scale-codec = { version = "2.0.0", 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"] } serde = { version = "1.0.130", default-features = false } serde_derive = { version = "1.0.117", optional = true } smallvec = "1.6.1" @@ -83,6 +84,7 @@ std = [ "primitives/std", "rustc-hex/std", "parity-scale-codec/std", + "scale-info/std", "inherents/std", "sp-core/std", "polkadot-parachain/std", diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 21d26e8fdf6d..6e2bf146a620 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -593,7 +593,8 @@ pub mod pallet_test_notifier { let id = who .using_encoded(|mut d| <[u8; 32]>::decode(&mut d)) .map_err(|_| Error::::BadAccountFormat)?; - let call = Call::::notification_received(0, Default::default()); + let call = + Call::::notification_received { query_id: 0, response: Default::default() }; let qid = pallet_xcm::Pallet::::new_notify_query( Junction::AccountId32 { network: Any, id }.into(), ::Call::from(call), @@ -723,7 +724,7 @@ sp_api::impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index d2042126f93f..0568852200d4 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -8,6 +8,7 @@ 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"] } +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 } serde = { version = "1.0.130", default-features = false } @@ -105,6 +106,7 @@ std = [ "primitives/std", "rustc-hex/std", "parity-scale-codec/std", + "scale-info/std", "inherents/std", "sp-core/std", "polkadot-parachain/std", diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 6a1eae9efc80..372267d180ab 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -651,7 +651,17 @@ parameter_types! { /// The type used to represent the kinds of proxying allowed. #[derive( - Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, RuntimeDebug, MaxEncodedLen, + Copy, + Clone, + Eq, + PartialEq, + Ord, + PartialOrd, + Encode, + Decode, + RuntimeDebug, + MaxEncodedLen, + scale_info::TypeInfo, )] pub enum ProxyType { Any, @@ -676,9 +686,9 @@ impl InstanceFilter for ProxyType { Call::System(..) | Call::Babe(..) | Call::Timestamp(..) | - Call::Indices(pallet_indices::Call::claim(..)) | - Call::Indices(pallet_indices::Call::free(..)) | - Call::Indices(pallet_indices::Call::freeze(..)) | + Call::Indices(pallet_indices::Call::claim{..}) | + Call::Indices(pallet_indices::Call::free{..}) | + Call::Indices(pallet_indices::Call::freeze{..}) | // Specifically omitting Indices `transfer`, `force_transfer` // Specifically omitting the entire Balances pallet Call::Authorship(..) | @@ -688,24 +698,24 @@ impl InstanceFilter for ProxyType { Call::ImOnline(..) | Call::Utility(..) | Call::Identity(..) | - Call::Recovery(pallet_recovery::Call::as_recovered(..)) | - Call::Recovery(pallet_recovery::Call::vouch_recovery(..)) | - Call::Recovery(pallet_recovery::Call::claim_recovery(..)) | - Call::Recovery(pallet_recovery::Call::close_recovery(..)) | - Call::Recovery(pallet_recovery::Call::remove_recovery(..)) | - Call::Recovery(pallet_recovery::Call::cancel_recovered(..)) | + Call::Recovery(pallet_recovery::Call::as_recovered{..}) | + Call::Recovery(pallet_recovery::Call::vouch_recovery{..}) | + Call::Recovery(pallet_recovery::Call::claim_recovery{..}) | + Call::Recovery(pallet_recovery::Call::close_recovery{..}) | + Call::Recovery(pallet_recovery::Call::remove_recovery{..}) | + Call::Recovery(pallet_recovery::Call::cancel_recovered{..}) | // Specifically omitting Recovery `create_recovery`, `initiate_recovery` - Call::Vesting(pallet_vesting::Call::vest(..)) | - Call::Vesting(pallet_vesting::Call::vest_other(..)) | + Call::Vesting(pallet_vesting::Call::vest{..}) | + Call::Vesting(pallet_vesting::Call::vest_other{..}) | // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` Call::Scheduler(..) | // Specifically omitting Sudo pallet Call::Proxy(..) | Call::Multisig(..) | - Call::Registrar(paras_registrar::Call::register(..)) | - Call::Registrar(paras_registrar::Call::deregister(..)) | + Call::Registrar(paras_registrar::Call::register{..}) | + Call::Registrar(paras_registrar::Call::deregister{..}) | // Specifically omitting Registrar `swap` - Call::Registrar(paras_registrar::Call::reserve(..)) | + Call::Registrar(paras_registrar::Call::reserve{..}) | Call::Crowdloan(..) | Call::Slots(..) | Call::Auctions(..) // Specifically omitting the entire XCM Pallet @@ -714,7 +724,7 @@ impl InstanceFilter for ProxyType { matches!(c, Call::Staking(..) | Call::Session(..) | Call::Utility(..)) }, ProxyType::SudoBalances => match c { - Call::Sudo(pallet_sudo::Call::sudo(ref x)) => { + Call::Sudo(pallet_sudo::Call::sudo { call: ref x }) => { matches!(x.as_ref(), &Call::Balances(..)) }, Call::Utility(..) => true, @@ -722,10 +732,10 @@ impl InstanceFilter for ProxyType { }, ProxyType::IdentityJudgement => matches!( c, - Call::Identity(pallet_identity::Call::provide_judgement(..)) | Call::Utility(..) + Call::Identity(pallet_identity::Call::provide_judgement { .. }) | Call::Utility(..) ), ProxyType::CancelProxy => { - matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement(..))) + matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement { .. })) }, ProxyType::Auction => matches!( c, @@ -1109,7 +1119,7 @@ sp_api::impl_runtime_apis! { impl sp_api::Metadata for Runtime { fn metadata() -> OpaqueMetadata { - Runtime::metadata().into() + OpaqueMetadata::new(Runtime::metadata().into()) } } diff --git a/utils/staking-miner/src/main.rs b/utils/staking-miner/src/main.rs index 45140323807f..59c8846db28c 100644 --- a/utils/staking-miner/src/main.rs +++ b/utils/staking-miner/src/main.rs @@ -81,7 +81,7 @@ macro_rules! construct_runtime_prelude { let crate::signer::Signer { account, pair, .. } = signer; - let local_call = EPMCall::::submit(Box::new(raw_solution), witness); + let local_call = EPMCall::::submit { raw_solution: Box::new(raw_solution), num_signed_submissions: witness }; let call: Call = as std::convert::TryInto>::try_into(local_call) .expect("election provider pallet must exist in the runtime, thus \ inner call can be converted, qed." diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index 12b96a502165..21becd6cb140 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -8,6 +8,7 @@ edition = "2018" [dependencies] impl-trait-for-tuples = "0.2.0" parity-scale-codec = { version = "2.0.0", 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 } xcm-procedural = { path = "procedural" } @@ -17,4 +18,5 @@ default = ["std"] wasm-api = [] std = [ "parity-scale-codec/std", + "scale-info/std", ] diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml index e8c586ae4908..96c6e3d42a31 100644 --- a/xcm/pallet-xcm/Cargo.toml +++ b/xcm/pallet-xcm/Cargo.toml @@ -6,6 +6,7 @@ version = "0.9.9" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0.130", optional = true, features = ["derive"] } log = { version = "0.4.14", default-features = false } @@ -29,6 +30,7 @@ polkadot-parachain = { path = "../../parachain" } default = ["std"] std = [ "codec/std", + "scale-info/std", "serde", "sp-std/std", "sp-core/std", diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 314a929803cd..972e3f926829 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -25,6 +25,7 @@ mod tests; use codec::{Decode, Encode, EncodeLike}; use frame_support::traits::{Contains, EnsureOrigin, Get, OriginTrait}; +use scale_info::TypeInfo; use sp_runtime::{ traits::{BadOrigin, Saturating}, RuntimeDebug, @@ -217,7 +218,7 @@ pub mod pallet { } #[pallet::origin] - #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)] + #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] pub enum Origin { /// It comes from somewhere in the XCM space wanting to transact. Xcm(MultiLocation), @@ -264,7 +265,7 @@ pub mod pallet { } /// The status of a query. - #[derive(Clone, Eq, PartialEq, Encode, Decode, RuntimeDebug)] + #[derive(Clone, Eq, PartialEq, Encode, Decode, RuntimeDebug, TypeInfo)] pub enum QueryStatus { /// The query was sent but no response has yet been received. Pending { @@ -290,7 +291,7 @@ pub mod pallet { } } - #[derive(Clone, Encode, Decode, Eq, PartialEq, Ord, PartialOrd)] + #[derive(Clone, Encode, Decode, Eq, PartialEq, Ord, PartialOrd, TypeInfo)] pub enum VersionMigrationStage { MigrateSupportedVersion, MigrateVersionNotifiers, diff --git a/xcm/pallet-xcm/src/mock.rs b/xcm/pallet-xcm/src/mock.rs index c841d896acab..d6ccbd4abfc9 100644 --- a/xcm/pallet-xcm/src/mock.rs +++ b/xcm/pallet-xcm/src/mock.rs @@ -93,7 +93,8 @@ pub mod pallet_test_notifier { let id = who .using_encoded(|mut d| <[u8; 32]>::decode(&mut d)) .map_err(|_| Error::::BadAccountFormat)?; - let call = Call::::notification_received(0, Default::default()); + let call = + Call::::notification_received { query_id: 0, response: Default::default() }; let qid = crate::Pallet::::new_notify_query( Junction::AccountId32 { network: Any, id }.into(), ::Call::from(call), diff --git a/xcm/pallet-xcm/src/tests.rs b/xcm/pallet-xcm/src/tests.rs index 56f3579cc1e7..82e6c524f269 100644 --- a/xcm/pallet-xcm/src/tests.rs +++ b/xcm/pallet-xcm/src/tests.rs @@ -44,7 +44,10 @@ fn report_outcome_notify_works() { assets: (Here, SEND_AMOUNT).into(), beneficiary: sender.clone(), }]); - let call = pallet_test_notifier::Call::notification_received(0, Default::default()); + let call = pallet_test_notifier::Call::notification_received { + query_id: 0, + response: Default::default(), + }; let notify = Call::TestNotifier(call); new_test_ext_with_balances(balances).execute_with(|| { XcmPallet::report_outcome_notify(&mut message, Parachain(PARA_ID).into(), notify, 100) diff --git a/xcm/src/double_encoded.rs b/xcm/src/double_encoded.rs index ae21336d13c3..858d97964203 100644 --- a/xcm/src/double_encoded.rs +++ b/xcm/src/double_encoded.rs @@ -20,9 +20,10 @@ use parity_scale_codec::{Decode, DecodeLimit, Encode}; /// Wrapper around the encoded and decoded versions of a value. /// Caches the decoded value once computed. -#[derive(Encode, Decode)] +#[derive(Encode, Decode, scale_info::TypeInfo)] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(T))] pub struct DoubleEncoded { encoded: Vec, #[codec(skip)] diff --git a/xcm/src/lib.rs b/xcm/src/lib.rs index ff5f0cd4eba2..87aad30c79f4 100644 --- a/xcm/src/lib.rs +++ b/xcm/src/lib.rs @@ -30,6 +30,7 @@ use core::{ }; use derivative::Derivative; use parity_scale_codec::{Decode, Encode, Error as CodecError, Input}; +use scale_info::TypeInfo; pub mod v0; pub mod v1; @@ -69,7 +70,7 @@ pub trait IntoVersion: Sized { } /// A single `MultiLocation` value, together with its version code. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] @@ -123,7 +124,7 @@ impl TryFrom for v1::MultiLocation { } /// A single `Response` value, together with its version code. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] @@ -199,7 +200,7 @@ impl TryFrom for v2::Response { } /// A single `MultiAsset` value, together with its version code. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] @@ -253,7 +254,7 @@ impl TryFrom for v1::MultiAsset { } /// A single `MultiAssets` value, together with its version code. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] @@ -307,10 +308,11 @@ impl TryFrom for v1::MultiAssets { } /// A single XCM message, together with its version code. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub enum VersionedXcm { V0(v0::Xcm), V1(v1::Xcm), diff --git a/xcm/src/v0/junction.rs b/xcm/src/v0/junction.rs index 171327a5f28a..0c559ca5a136 100644 --- a/xcm/src/v0/junction.rs +++ b/xcm/src/v0/junction.rs @@ -18,9 +18,10 @@ use alloc::vec::Vec; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; /// A global identifier of an account-bearing consensus system. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum NetworkId { /// Unidentified/any. Any, @@ -33,7 +34,7 @@ pub enum NetworkId { } /// An identifier of a pluralistic body. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum BodyId { /// The only body in its context. Unit, @@ -54,7 +55,7 @@ pub enum BodyId { } /// A part of a pluralistic body. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum BodyPart { /// The body's declaration, under whatever means it decides. Voice, @@ -101,7 +102,7 @@ impl BodyPart { /// A single item in a path to describe the relative location of a consensus system. /// /// Each item assumes a pre-existing location as its context and is defined in terms of it. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum Junction { /// The consensus system of which the context is a member and state-wise super-set. /// diff --git a/xcm/src/v0/mod.rs b/xcm/src/v0/mod.rs index 9ec5150242be..35889d8daab2 100644 --- a/xcm/src/v0/mod.rs +++ b/xcm/src/v0/mod.rs @@ -24,6 +24,7 @@ use core::{ }; use derivative::Derivative; use parity_scale_codec::{self, Decode, Encode}; +use scale_info::TypeInfo; mod junction; mod multi_asset; @@ -58,7 +59,7 @@ pub mod prelude { // the number of items in the vector. /// Basically just the XCM (more general) version of `ParachainDispatchOrigin`. -#[derive(Copy, Clone, Eq, PartialEq, Encode, Decode, Debug)] +#[derive(Copy, Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] pub enum OriginKind { /// Origin should just be the native dispatch origin representation for the sender in the /// local runtime framework. For Cumulus/Frame chains this is the `Parachain` or `Relay` origin @@ -81,7 +82,7 @@ pub enum OriginKind { } /// Response data to a query. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] pub enum Response { /// Some assets. Assets(Vec), @@ -95,10 +96,11 @@ pub enum Response { /// /// This is the inner XCM format and is version-sensitive. Messages are typically passed using the outer /// XCM format, known as `VersionedXcm`. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub enum Xcm { /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place them into `holding`. Execute the /// orders (`effects`). diff --git a/xcm/src/v0/multi_asset.rs b/xcm/src/v0/multi_asset.rs index ee541c3c681f..dac5a6bfeb7e 100644 --- a/xcm/src/v0/multi_asset.rs +++ b/xcm/src/v0/multi_asset.rs @@ -24,6 +24,7 @@ use core::{ result, }; use parity_scale_codec::{self, Decode, Encode}; +use scale_info::TypeInfo; pub use crate::v1::AssetInstance; @@ -82,7 +83,7 @@ pub use crate::v1::AssetInstance; /// - `/AccountId32` for an ERC-20-style single-asset smart-contract on a Frame-based contracts chain. /// - `/AccountKey20` for an ERC-20-style single-asset smart-contract on an Ethereum-like chain. /// -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum MultiAsset { /// No assets. Rarely used. None, diff --git a/xcm/src/v0/multi_location.rs b/xcm/src/v0/multi_location.rs index 6205071690f0..6b7438b93fa0 100644 --- a/xcm/src/v0/multi_location.rs +++ b/xcm/src/v0/multi_location.rs @@ -42,7 +42,7 @@ use parity_scale_codec::{self, Decode, Encode}; /// This specific `MultiLocation` implementation uses a Rust `enum` in order to make pattern matching easier. /// /// The `MultiLocation` value of `Null` simply refers to the interpreting consensus system. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, scale_info::TypeInfo)] pub enum MultiLocation { /// The interpreting consensus system. Null, diff --git a/xcm/src/v0/order.rs b/xcm/src/v0/order.rs index e414cc27a6e2..54117e31f9c5 100644 --- a/xcm/src/v0/order.rs +++ b/xcm/src/v0/order.rs @@ -26,10 +26,11 @@ use derivative::Derivative; use parity_scale_codec::{self, Decode, Encode}; /// An instruction to be executed on some or all of the assets in holding, used by asset-related XCM messages. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, scale_info::TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub enum Order { /// Do nothing. Not generally used. #[codec(index = 0)] diff --git a/xcm/src/v0/traits.rs b/xcm/src/v0/traits.rs index 5c9882f61dbb..3263fda4ac56 100644 --- a/xcm/src/v0/traits.rs +++ b/xcm/src/v0/traits.rs @@ -21,7 +21,7 @@ use parity_scale_codec::{Decode, Encode}; use super::{MultiLocation, Xcm}; -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, scale_info::TypeInfo)] pub enum Error { Undefined, /// An arithmetic overflow happened. @@ -103,7 +103,7 @@ pub type Result = result::Result<(), Error>; pub type Weight = u64; /// Outcome of an XCM execution. -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, scale_info::TypeInfo)] pub enum Outcome { /// Execution completed successfully; given weight was used. Complete(Weight), diff --git a/xcm/src/v1/junction.rs b/xcm/src/v1/junction.rs index 06e7308ad411..c4835d60c5b1 100644 --- a/xcm/src/v1/junction.rs +++ b/xcm/src/v1/junction.rs @@ -21,11 +21,12 @@ use crate::v0::Junction as Junction0; use alloc::vec::Vec; use core::convert::TryFrom; use parity_scale_codec::{self, Decode, Encode}; +use scale_info::TypeInfo; /// A single item in a path to describe the relative location of a consensus system. /// /// Each item assumes a pre-existing location as its context and is defined in terms of it. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum Junction { /// An indexed parachain belonging to and operated by the context. /// diff --git a/xcm/src/v1/mod.rs b/xcm/src/v1/mod.rs index 02bbd5f42712..6f96dc739491 100644 --- a/xcm/src/v1/mod.rs +++ b/xcm/src/v1/mod.rs @@ -29,6 +29,7 @@ use core::{ }; use derivative::Derivative; use parity_scale_codec::{self, Decode, Encode}; +use scale_info::TypeInfo; mod junction; mod multiasset; @@ -75,7 +76,7 @@ pub mod prelude { } /// Response data to a query. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] pub enum Response { /// Some assets. Assets(MultiAssets), @@ -91,10 +92,11 @@ pub enum Response { /// /// This is the inner XCM format and is version-sensitive. Messages are typically passed using the outer /// XCM format, known as `VersionedXcm`. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub enum Xcm { /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place them into `holding`. Execute the /// orders (`effects`). diff --git a/xcm/src/v1/multiasset.rs b/xcm/src/v1/multiasset.rs index a5dfdc84968c..129c5731542f 100644 --- a/xcm/src/v1/multiasset.rs +++ b/xcm/src/v1/multiasset.rs @@ -31,9 +31,10 @@ use core::{ result, }; use parity_scale_codec::{self as codec, Decode, Encode}; +use scale_info::TypeInfo; /// A general identifier for an instance of a non-fungible asset class. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum AssetInstance { /// Undefined - used if the non-fungible asset class has only one instance. Undefined, @@ -95,7 +96,7 @@ impl From> for AssetInstance { } /// Classification of an asset being concrete or abstract. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] pub enum AssetId { Concrete(MultiLocation), Abstract(Vec), @@ -135,7 +136,7 @@ impl AssetId { } /// Classification of whether an asset is fungible or not, along with a mandatory amount or instance. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] pub enum Fungibility { Fungible(#[codec(compact)] u128), NonFungible(AssetInstance), @@ -162,7 +163,7 @@ impl> From for Fungibility { } } -#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode)] +#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, TypeInfo)] pub struct MultiAsset { pub id: AssetId, pub fun: Fungibility, @@ -266,7 +267,7 @@ impl TryFrom> for MultiAsset { } /// A `Vec` of `MultiAsset`s. There may be no duplicate fungible items in here and when decoding, they must be sorted. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, TypeInfo)] pub struct MultiAssets(Vec); impl Decode for MultiAssets { @@ -422,14 +423,14 @@ impl MultiAssets { } } /// Classification of whether an asset is fungible or not. -#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode)] +#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] pub enum WildFungibility { Fungible, NonFungible, } /// A wildcard representing a set of assets. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] pub enum WildMultiAsset { /// All assets in the holding register, up to `usize` individual assets (different instances of non-fungibles could /// be separate assets). @@ -501,7 +502,7 @@ impl, B: Into> From<(A, B)> for WildMultiAsset /// /// Note: Vectors of wildcards whose encoding is supported in XCM v0 are unsupported /// in this implementation and will result in a decode error. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] pub enum MultiAssetFilter { Definite(MultiAssets), Wild(WildMultiAsset), diff --git a/xcm/src/v1/multilocation.rs b/xcm/src/v1/multilocation.rs index a2a087443b3c..9c472553a37c 100644 --- a/xcm/src/v1/multilocation.rs +++ b/xcm/src/v1/multilocation.rs @@ -19,6 +19,7 @@ use super::Junction; use core::{convert::TryFrom, mem, result}; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; /// A relative path between state-bearing consensus systems. /// @@ -46,7 +47,7 @@ use parity_scale_codec::{Decode, Encode}; /// that a value is strictly an interior location, in those cases, `Junctions` may be used. /// /// The `MultiLocation` value of `Null` simply refers to the interpreting consensus system. -#[derive(Clone, Decode, Encode, Eq, PartialEq, Ord, PartialOrd, Debug)] +#[derive(Clone, Decode, Encode, Eq, PartialEq, Ord, PartialOrd, Debug, TypeInfo)] pub struct MultiLocation { /// The number of parent junctions at the beginning of this `MultiLocation`. pub parents: u8, @@ -370,7 +371,7 @@ const MAX_JUNCTIONS: usize = 8; /// /// Parent junctions cannot be constructed with this type. Refer to `MultiLocation` for /// instructions on constructing parent junctions. -#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] pub enum Junctions { /// The interpreting consensus system. Here, diff --git a/xcm/src/v1/order.rs b/xcm/src/v1/order.rs index 9b8a7591f183..00ee69458cd0 100644 --- a/xcm/src/v1/order.rs +++ b/xcm/src/v1/order.rs @@ -25,12 +25,14 @@ use core::{ }; use derivative::Derivative; use parity_scale_codec::{self, Decode, Encode}; +use scale_info::TypeInfo; /// An instruction to be executed on some or all of the assets in holding, used by asset-related XCM messages. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub enum Order { /// Do nothing. Not generally used. #[codec(index = 0)] diff --git a/xcm/src/v1/traits.rs b/xcm/src/v1/traits.rs index 892b6afea9f7..445ab25d4c7f 100644 --- a/xcm/src/v1/traits.rs +++ b/xcm/src/v1/traits.rs @@ -18,10 +18,11 @@ use core::result; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; use super::{MultiLocation, Xcm}; -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] pub enum Error { Undefined, /// An arithmetic overflow happened. @@ -105,7 +106,7 @@ pub type Result = result::Result<(), Error>; pub type Weight = u64; /// Outcome of an XCM execution. -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] pub enum Outcome { /// Execution completed successfully; given weight was used. Complete(Weight), diff --git a/xcm/src/v2/mod.rs b/xcm/src/v2/mod.rs index 943582ceca8b..2456884e7972 100644 --- a/xcm/src/v2/mod.rs +++ b/xcm/src/v2/mod.rs @@ -26,6 +26,7 @@ use core::{ }; use derivative::Derivative; use parity_scale_codec::{self, Decode, Encode}; +use scale_info::TypeInfo; mod traits; @@ -45,10 +46,11 @@ pub const VERSION: super::Version = 2; /// An identifier for a query. pub type QueryId = u64; -#[derive(Derivative, Default, Encode, Decode)] +#[derive(Derivative, Default, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub struct Xcm(pub Vec>); impl Xcm { @@ -143,7 +145,7 @@ pub mod prelude { } /// Response data to a query. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] pub enum Response { /// No response. Serves as a neutral default. Null, @@ -162,7 +164,7 @@ impl Default for Response { } /// An optional weight limit. -#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug)] +#[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] pub enum WeightLimit { /// No weight limit imposed. Unlimited, @@ -196,10 +198,11 @@ impl From for Option { /// /// This is the inner XCM format and is version-sensitive. Messages are typically passed using the outer /// XCM format, known as `VersionedXcm`. -#[derive(Derivative, Encode, Decode)] +#[derive(Derivative, Encode, Decode, TypeInfo)] #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[codec(decode_bound())] +#[scale_info(bounds(), skip_type_params(Call))] pub enum Instruction { /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place them into the Holding /// Register. diff --git a/xcm/src/v2/traits.rs b/xcm/src/v2/traits.rs index e020fd046e82..b4feca6ac260 100644 --- a/xcm/src/v2/traits.rs +++ b/xcm/src/v2/traits.rs @@ -18,10 +18,11 @@ use core::result; use parity_scale_codec::{Decode, Encode}; +use scale_info::TypeInfo; use super::*; -#[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] pub enum Error { Undefined, /// An arithmetic overflow happened. @@ -126,7 +127,7 @@ pub type Result = result::Result<(), Error>; pub type Weight = u64; /// Outcome of an XCM execution. -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] pub enum Outcome { /// Execution completed successfully; given weight was used. Complete(Weight), diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index d7119b34d531..b482c5799a4f 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -7,6 +7,7 @@ version = "0.9.9" [dependencies] parity-scale-codec = { version = "2.0.0", 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 } sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -32,6 +33,7 @@ runtime-benchmarks = [] std = [ "log/std", "parity-scale-codec/std", + "scale-info/std", "xcm/std", "xcm-executor/std", "sp-std/std", diff --git a/xcm/xcm-builder/src/mock.rs b/xcm/xcm-builder/src/mock.rs index 8f6759582f9a..67a2cd8c9aec 100644 --- a/xcm/xcm-builder/src/mock.rs +++ b/xcm/xcm-builder/src/mock.rs @@ -53,7 +53,7 @@ pub enum TestOrigin { /// /// Each item contains the amount of weight that it *wants* to consume as the first item, and the actual amount (if /// different from the former) in the second option. -#[derive(Debug, Encode, Decode, Eq, PartialEq, Clone, Copy)] +#[derive(Debug, Encode, Decode, Eq, PartialEq, Clone, Copy, scale_info::TypeInfo)] pub enum TestCall { OnlyRoot(Weight, Option), OnlyParachain(Weight, Option, Option), diff --git a/xcm/xcm-executor/integration-tests/src/lib.rs b/xcm/xcm-executor/integration-tests/src/lib.rs index 72aa7b15d07b..359a5ef7a39e 100644 --- a/xcm/xcm-executor/integration-tests/src/lib.rs +++ b/xcm/xcm-executor/integration-tests/src/lib.rs @@ -44,10 +44,10 @@ fn basic_buy_fees_message_executes() { let execute = construct_extrinsic( &client, - polkadot_test_runtime::Call::Xcm(pallet_xcm::Call::execute( - Box::new(VersionedXcm::from(msg)), - 1_000_000_000, - )), + polkadot_test_runtime::Call::Xcm(pallet_xcm::Call::execute { + message: Box::new(VersionedXcm::from(msg)), + max_weight: 1_000_000_000, + }), sp_keyring::Sr25519Keyring::Alice, 0, ); @@ -88,7 +88,7 @@ fn query_response_fires() { let execute = construct_extrinsic( &client, - polkadot_test_runtime::Call::TestNotifier(pallet_test_notifier::Call::prepare_new_query()), + polkadot_test_runtime::Call::TestNotifier(pallet_test_notifier::Call::prepare_new_query {}), sp_keyring::Sr25519Keyring::Alice, 0, ); @@ -124,7 +124,10 @@ fn query_response_fires() { let execute = construct_extrinsic( &client, - polkadot_test_runtime::Call::Xcm(pallet_xcm::Call::execute(msg, 1_000_000_000)), + polkadot_test_runtime::Call::Xcm(pallet_xcm::Call::execute { + message: msg, + max_weight: 1_000_000_000, + }), sp_keyring::Sr25519Keyring::Alice, 1, ); @@ -173,7 +176,7 @@ fn query_response_elicits_handler() { let execute = construct_extrinsic( &client, polkadot_test_runtime::Call::TestNotifier( - pallet_test_notifier::Call::prepare_new_notify_query(), + pallet_test_notifier::Call::prepare_new_notify_query {}, ), sp_keyring::Sr25519Keyring::Alice, 0, @@ -209,10 +212,10 @@ fn query_response_elicits_handler() { let execute = construct_extrinsic( &client, - polkadot_test_runtime::Call::Xcm(pallet_xcm::Call::execute( - Box::new(VersionedXcm::from(msg)), - 1_000_000_000, - )), + polkadot_test_runtime::Call::Xcm(pallet_xcm::Call::execute { + message: Box::new(VersionedXcm::from(msg)), + max_weight: 1_000_000_000, + }), sp_keyring::Sr25519Keyring::Alice, 1, ); diff --git a/xcm/xcm-simulator/example/Cargo.toml b/xcm/xcm-simulator/example/Cargo.toml index 5a8f1ac0b867..b4a8cc93e537 100644 --- a/xcm/xcm-simulator/example/Cargo.toml +++ b/xcm/xcm-simulator/example/Cargo.toml @@ -7,6 +7,7 @@ edition = "2018" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } +scale-info = { version = "1.0", features = ["derive"] } frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" } frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/xcm/xcm-simulator/example/src/lib.rs b/xcm/xcm-simulator/example/src/lib.rs index e93393e54d7f..1f6d2934a673 100644 --- a/xcm/xcm-simulator/example/src/lib.rs +++ b/xcm/xcm-simulator/example/src/lib.rs @@ -118,9 +118,10 @@ mod tests { fn dmp() { MockNet::reset(); - let remark = parachain::Call::System( - frame_system::Call::::remark_with_event(vec![1, 2, 3]), - ); + let remark = + parachain::Call::System(frame_system::Call::::remark_with_event { + remark: vec![1, 2, 3], + }); Relay::execute_with(|| { assert_ok!(RelayChainPalletXcm::send_xcm( Here, @@ -146,7 +147,7 @@ mod tests { MockNet::reset(); let remark = relay_chain::Call::System( - frame_system::Call::::remark_with_event(vec![1, 2, 3]), + frame_system::Call::::remark_with_event { remark: vec![1, 2, 3] }, ); ParaA::execute_with(|| { assert_ok!(ParachainPalletXcm::send_xcm( @@ -172,9 +173,10 @@ mod tests { fn xcmp() { MockNet::reset(); - let remark = parachain::Call::System( - frame_system::Call::::remark_with_event(vec![1, 2, 3]), - ); + let remark = + parachain::Call::System(frame_system::Call::::remark_with_event { + remark: vec![1, 2, 3], + }); ParaA::execute_with(|| { assert_ok!(ParachainPalletXcm::send_xcm( Here, From 9dc2d42b9266faf4a80b7869296c2ae6b1bc8ef0 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Wed, 15 Sep 2021 18:41:49 -0400 Subject: [PATCH 035/138] add type info derive to senderror (#3860) --- xcm/src/v2/traits.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xcm/src/v2/traits.rs b/xcm/src/v2/traits.rs index b4feca6ac260..a28137b00052 100644 --- a/xcm/src/v2/traits.rs +++ b/xcm/src/v2/traits.rs @@ -202,7 +202,7 @@ impl ExecuteXcm for () { } /// Error result value when attempting to send an XCM message. -#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug)] +#[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, scale_info::TypeInfo)] pub enum SendError { /// The message and destination combination was not recognized as being reachable. /// From a3902fbfb9ba4c35bafef43e935e77b83dd7c92e Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Thu, 16 Sep 2021 10:19:51 +0200 Subject: [PATCH 036/138] add dispute metrics, some chores (#3842) * rename: MsgFilter -> MessageInterceptor * feat: add dispute metrics * fixup * test fixins * fix metrics * dummysubsystem export and trait fn fix * chore: fmt * undo unwanted changes * foo * pfmt * fixup * fixup * revert * some more * Update node/malus/Cargo.toml Co-authored-by: Andronik Ordian * Update node/core/dispute-coordinator/src/metrics.rs Co-authored-by: Andronik Ordian * Update node/core/dispute-coordinator/src/metrics.rs Co-authored-by: Andronik Ordian * Update node/core/dispute-coordinator/src/metrics.rs Co-authored-by: Andronik Ordian * add license header * fix lockfile * new with opts * fmt * Update node/core/dispute-coordinator/src/metrics.rs * feature gate Co-authored-by: Andronik Ordian --- Cargo.lock | 3 + node/core/dispute-coordinator/src/dummy.rs | 4 +- node/core/dispute-coordinator/src/lib.rs | 2 + node/core/dispute-coordinator/src/metrics.rs | 99 +++++++++++++++++ node/core/dispute-coordinator/src/real/mod.rs | 32 +++++- .../dispute-coordinator/src/real/tests.rs | 1 + node/malus/Cargo.toml | 5 + node/malus/src/lib.rs | 103 ++++++++++++------ node/malus/src/tests.rs | 90 +++++++++++++++ node/malus/src/variant-a.rs | 28 +++-- node/overseer/src/lib.rs | 2 +- node/service/src/overseer.rs | 1 + node/subsystem-test-helpers/src/lib.rs | 21 ++-- node/subsystem/src/lib.rs | 2 +- 14 files changed, 339 insertions(+), 54 deletions(-) create mode 100644 node/core/dispute-coordinator/src/metrics.rs create mode 100644 node/malus/src/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 9ff5d510f977..d5eeea2ab489 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6977,12 +6977,15 @@ dependencies = [ "assert_matches", "async-trait", "color-eyre", + "futures 0.3.17", "parity-util-mem", "polkadot-cli", "polkadot-node-core-candidate-validation", "polkadot-node-core-pvf", "polkadot-node-subsystem", + "polkadot-node-subsystem-test-helpers", "polkadot-node-subsystem-util", + "sp-core", "structopt", ] diff --git a/node/core/dispute-coordinator/src/dummy.rs b/node/core/dispute-coordinator/src/dummy.rs index fe3f50f81e8e..d151af60e93d 100644 --- a/node/core/dispute-coordinator/src/dummy.rs +++ b/node/core/dispute-coordinator/src/dummy.rs @@ -30,6 +30,8 @@ use kvdb::KeyValueDB; use parity_scale_codec::{Decode, Encode, Error as CodecError}; use sc_keystore::LocalKeystore; +use crate::metrics::Metrics; + const LOG_TARGET: &str = "parachain::dispute-coordinator"; /// Timestamp based on the 1 Jan 1970 UNIX base, which is persistent across node restarts and OS reboots. @@ -52,7 +54,7 @@ pub struct DisputeCoordinatorSubsystem {} impl DisputeCoordinatorSubsystem { /// Create a new instance of the subsystem. - pub fn new(_: Arc, _: Config, _: Arc) -> Self { + pub fn new(_: Arc, _: Config, _: Arc, _: Metrics) -> Self { DisputeCoordinatorSubsystem {} } } diff --git a/node/core/dispute-coordinator/src/lib.rs b/node/core/dispute-coordinator/src/lib.rs index a99be737de28..38e4f5d66d47 100644 --- a/node/core/dispute-coordinator/src/lib.rs +++ b/node/core/dispute-coordinator/src/lib.rs @@ -25,6 +25,8 @@ //! another node, this will trigger the dispute participation subsystem to recover and validate the block and call //! back to this subsystem. +mod metrics; + #[cfg(feature = "disputes")] mod real; #[cfg(feature = "disputes")] diff --git a/node/core/dispute-coordinator/src/metrics.rs b/node/core/dispute-coordinator/src/metrics.rs new file mode 100644 index 000000000000..b70ec09db976 --- /dev/null +++ b/node/core/dispute-coordinator/src/metrics.rs @@ -0,0 +1,99 @@ +// 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 polkadot_node_subsystem_util::metrics::{self, prometheus}; + +#[derive(Clone)] +struct MetricsInner { + /// Number of opened disputes. + open: prometheus::Counter, + /// Votes of all disputes. + votes: prometheus::CounterVec, + /// Conclusion across all disputes. + concluded: prometheus::CounterVec, +} + +/// Candidate validation metrics. +#[derive(Default, Clone)] +pub struct Metrics(Option); + +#[cfg(feature = "disputes")] +impl Metrics { + pub(crate) fn on_open(&self) { + if let Some(metrics) = &self.0 { + metrics.open.inc(); + } + } + + pub(crate) fn on_valid_vote(&self) { + if let Some(metrics) = &self.0 { + metrics.votes.with_label_values(&["valid"]).inc(); + } + } + + pub(crate) fn on_invalid_vote(&self) { + if let Some(metrics) = &self.0 { + metrics.votes.with_label_values(&["invalid"]).inc(); + } + } + + pub(crate) fn on_concluded_valid(&self) { + if let Some(metrics) = &self.0 { + metrics.concluded.with_label_values(&["valid"]).inc(); + } + } + + pub(crate) fn on_concluded_invalid(&self) { + if let Some(metrics) = &self.0 { + metrics.concluded.with_label_values(&["invalid"]).inc(); + } + } +} + +impl metrics::Metrics for Metrics { + fn try_register(registry: &prometheus::Registry) -> Result { + let metrics = MetricsInner { + open: prometheus::register( + prometheus::Counter::with_opts(prometheus::Opts::new( + "parachain_candidate_disputes_total", + "Total number of raised disputes.", + ))?, + registry, + )?, + concluded: prometheus::register( + prometheus::CounterVec::new( + prometheus::Opts::new( + "parachain_candidate_dispute_concluded", + "Concluded dispute votes, sorted by candidate is `valid` and `invalid`.", + ), + &["validity"], + )?, + registry, + )?, + votes: prometheus::register( + prometheus::CounterVec::new( + prometheus::Opts::new( + "parachain_candidate_dispute_votes", + "Accumulated dispute votes, sorted by candidate is `valid` and `invalid`.", + ), + &["validity"], + )?, + registry, + )?, + }; + Ok(Metrics(Some(metrics))) + } +} diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index 791a2fdcbf95..e18501b64404 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -56,6 +56,7 @@ use kvdb::KeyValueDB; use parity_scale_codec::{Decode, Encode, Error as CodecError}; use sc_keystore::LocalKeystore; +use crate::metrics::Metrics; use backend::{Backend, OverlayedBackend}; use db::v1::{DbBackend, RecentDisputes}; @@ -116,12 +117,18 @@ pub struct DisputeCoordinatorSubsystem { config: Config, store: Arc, keystore: Arc, + metrics: Metrics, } impl DisputeCoordinatorSubsystem { /// Create a new instance of the subsystem. - pub fn new(store: Arc, config: Config, keystore: Arc) -> Self { - DisputeCoordinatorSubsystem { store, config, keystore } + pub fn new( + store: Arc, + config: Config, + keystore: Arc, + metrics: Metrics, + ) -> Self { + DisputeCoordinatorSubsystem { store, config, keystore, metrics } } } @@ -329,6 +336,7 @@ where rolling_session_window: RollingSessionWindow::new(DISPUTE_WINDOW), recovery_state: Participation::Pending, }; + let metrics = &subsystem.metrics; loop { let mut overlay_db = OverlayedBackend::new(backend); @@ -348,7 +356,8 @@ where }, FromOverseer::Signal(OverseerSignal::BlockFinalized(_, _)) => {}, FromOverseer::Communication { msg } => - handle_incoming(ctx, &mut overlay_db, &mut state, msg, clock.now()).await?, + handle_incoming(ctx, &mut overlay_db, &mut state, msg, clock.now(), &metrics) + .await?, } if !overlay_db.is_empty() { @@ -518,6 +527,7 @@ async fn handle_incoming( state: &mut State, message: DisputeCoordinatorMessage, now: Timestamp, + metrics: &Metrics, ) -> Result<(), Error> { match message { DisputeCoordinatorMessage::ImportStatements { @@ -537,6 +547,7 @@ async fn handle_incoming( statements, now, pending_confirmation, + metrics, ) .await?; }, @@ -578,6 +589,7 @@ async fn handle_incoming( session, valid, now, + metrics, ) .await?; }, @@ -635,6 +647,7 @@ async fn handle_import_statements( statements: Vec<(SignedDisputeStatement, ValidatorIndex)>, now: Timestamp, pending_confirmation: oneshot::Sender, + metrics: &Metrics, ) -> Result<(), Error> { if state.highest_session.map_or(true, |h| session + DISPUTE_WINDOW < h) { // It is not valid to participate in an ancient dispute (spam?). @@ -694,6 +707,7 @@ async fn handle_import_statements( match statement.statement().clone() { DisputeStatement::Valid(valid_kind) => { + metrics.on_valid_vote(); insert_into_statement_vec( &mut votes.valid, valid_kind, @@ -702,6 +716,7 @@ async fn handle_import_statements( ); }, DisputeStatement::Invalid(invalid_kind) => { + metrics.on_invalid_vote(); insert_into_statement_vec( &mut votes.invalid, invalid_kind, @@ -784,6 +799,14 @@ async fn handle_import_statements( ); return Ok(()) } + metrics.on_open(); + + if concluded_valid { + metrics.on_concluded_valid(); + } + if concluded_invalid { + metrics.on_concluded_invalid(); + } } // Only write when updated and vote is available. @@ -824,6 +847,7 @@ async fn issue_local_statement( session: SessionIndex, valid: bool, now: Timestamp, + metrics: &Metrics, ) -> Result<(), Error> { // Load session info. let info = match state.rolling_session_window.session_info(session) { @@ -857,7 +881,6 @@ async fn issue_local_statement( let voted_indices: HashSet<_> = voted_indices.into_iter().collect(); let controlled_indices = find_controlled_validator_indices(&state.keystore, &validators[..]); - for index in controlled_indices { if voted_indices.contains(&index) { continue @@ -914,6 +937,7 @@ async fn issue_local_statement( statements, now, pending_confirmation, + metrics, ) .await?; match rx.await { diff --git a/node/core/dispute-coordinator/src/real/tests.rs b/node/core/dispute-coordinator/src/real/tests.rs index 4445f62f1133..2f78a5c48707 100644 --- a/node/core/dispute-coordinator/src/real/tests.rs +++ b/node/core/dispute-coordinator/src/real/tests.rs @@ -286,6 +286,7 @@ impl TestState { self.db.clone(), self.config.clone(), self.subsystem_keystore.clone(), + Metrics::default(), ); let backend = DbBackend::new(self.db.clone(), self.config.column_config()); let subsystem_task = run(subsystem, ctx, backend, Box::new(self.clock.clone())); diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index 7583095c2c33..8bb9b6d6a3a9 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -27,3 +27,8 @@ color-eyre = { version = "0.5.11", default-features = false } assert_matches = "1.5" structopt = "0.3.23" async-trait = "0.1.51" + +[dev-dependencies] +polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +futures = { version = "0.3.17", features = ["thread-pool"] } diff --git a/node/malus/src/lib.rs b/node/malus/src/lib.rs index 87c853e00382..abd4c6cfe76d 100644 --- a/node/malus/src/lib.rs +++ b/node/malus/src/lib.rs @@ -24,38 +24,52 @@ use polkadot_node_subsystem::*; pub use polkadot_node_subsystem::{messages::AllMessages, overseer, FromOverseer}; use std::{future::Future, pin::Pin}; +#[cfg(test)] +mod tests; + /// Filter incoming and outgoing messages. -pub trait MsgFilter: Send + Sync + Clone + 'static { +pub trait MessageInterceptor: Send + Sync + Clone + 'static +where + Sender: overseer::SubsystemSender + Clone + 'static, +{ /// The message type the original subsystem handles incoming. type Message: Send + 'static; /// Filter messages that are to be received by /// the subsystem. - fn filter_in(&self, msg: FromOverseer) -> Option> { + /// + /// For non-trivial cases, the `sender` can be used to send + /// multiple messages after doing some additional processing. + fn intercept_incoming( + &self, + _sender: &mut Sender, + msg: FromOverseer, + ) -> Option> { Some(msg) } /// Modify outgoing messages. - fn filter_out(&self, msg: AllMessages) -> Option { + fn intercept_outgoing(&self, msg: AllMessages) -> Option { Some(msg) } } /// A sender with the outgoing messages filtered. #[derive(Clone)] -pub struct FilteredSender { +pub struct InterceptedSender { inner: Sender, message_filter: Fil, } #[async_trait::async_trait] -impl overseer::SubsystemSender for FilteredSender +impl overseer::SubsystemSender for InterceptedSender where - Sender: overseer::SubsystemSender, - Fil: MsgFilter, + Sender: overseer::SubsystemSender + + overseer::SubsystemSender<>::Message>, + Fil: MessageInterceptor, { async fn send_message(&mut self, msg: AllMessages) { - if let Some(msg) = self.message_filter.filter_out(msg) { + if let Some(msg) = self.message_filter.intercept_outgoing(msg) { self.inner.send_message(msg).await; } } @@ -71,26 +85,39 @@ where } fn send_unbounded_message(&mut self, msg: AllMessages) { - if let Some(msg) = self.message_filter.filter_out(msg) { + if let Some(msg) = self.message_filter.intercept_outgoing(msg) { self.inner.send_unbounded_message(msg); } } } /// A subsystem context, that filters the outgoing messages. -pub struct FilteredContext { +pub struct InterceptedContext +where + Context: overseer::SubsystemContext + SubsystemContext, + Fil: MessageInterceptor<::Sender>, + ::Sender: overseer::SubsystemSender< + ::Sender>>::Message, + >, +{ inner: Context, message_filter: Fil, - sender: FilteredSender<::Sender, Fil>, + sender: InterceptedSender<::Sender, Fil>, } -impl FilteredContext +impl InterceptedContext where Context: overseer::SubsystemContext + SubsystemContext, - Fil: MsgFilter::Message>, + Fil: MessageInterceptor< + ::Sender, + Message = ::Message, + >, + ::Sender: overseer::SubsystemSender< + ::Sender>>::Message, + >, { pub fn new(mut inner: Context, message_filter: Fil) -> Self { - let sender = FilteredSender::<::Sender, Fil> { + let sender = InterceptedSender::<::Sender, Fil> { inner: inner.sender().clone(), message_filter: message_filter.clone(), }; @@ -99,15 +126,21 @@ where } #[async_trait::async_trait] -impl overseer::SubsystemContext for FilteredContext +impl overseer::SubsystemContext for InterceptedContext where Context: overseer::SubsystemContext + SubsystemContext, - Fil: MsgFilter::Message>, + Fil: MessageInterceptor< + ::Sender, + Message = ::Message, + >, ::AllMessages: From<::Message>, + ::Sender: overseer::SubsystemSender< + ::Sender>>::Message, + >, { type Message = ::Message; - type Sender = FilteredSender<::Sender, Fil>; + type Sender = InterceptedSender<::Sender, Fil>; type Error = ::Error; type AllMessages = ::AllMessages; type Signal = ::Signal; @@ -117,7 +150,9 @@ where match self.inner.try_recv().await? { None => return Ok(None), Some(msg) => - if let Some(msg) = self.message_filter.filter_in(msg) { + if let Some(msg) = + self.message_filter.intercept_incoming(self.inner.sender(), msg) + { return Ok(Some(msg)) }, } @@ -127,7 +162,7 @@ where async fn recv(&mut self) -> SubsystemResult> { loop { let msg = self.inner.recv().await?; - if let Some(msg) = self.message_filter.filter_in(msg) { + if let Some(msg) = self.message_filter.intercept_incoming(self.inner.sender(), msg) { return Ok(msg) } } @@ -155,27 +190,33 @@ where } /// A subsystem to which incoming and outgoing filters are applied. -pub struct FilteredSubsystem { - subsystem: Sub, - message_filter: Fil, +pub struct InterceptedSubsystem { + pub subsystem: Sub, + pub message_interceptor: Interceptor, } -impl FilteredSubsystem { - pub fn new(subsystem: Sub, message_filter: Fil) -> Self { - Self { subsystem, message_filter } +impl InterceptedSubsystem { + pub fn new(subsystem: Sub, message_interceptor: Interceptor) -> Self { + Self { subsystem, message_interceptor } } } -impl overseer::Subsystem for FilteredSubsystem +impl overseer::Subsystem for InterceptedSubsystem where Context: overseer::SubsystemContext + SubsystemContext + Sync + Send, - Sub: overseer::Subsystem, SubsystemError>, - FilteredContext: overseer::SubsystemContext + SubsystemContext, - Fil: MsgFilter::Message>, + Sub: overseer::Subsystem, SubsystemError>, + InterceptedContext: overseer::SubsystemContext + SubsystemContext, + Interceptor: MessageInterceptor< + ::Sender, + Message = ::Message, + >, + ::Sender: overseer::SubsystemSender< + ::Sender>>::Message, + >, { fn start(self, ctx: Context) -> SpawnedSubsystem { - let ctx = FilteredContext::new(ctx, self.message_filter); - overseer::Subsystem::, SubsystemError>::start( + let ctx = InterceptedContext::new(ctx, self.message_interceptor); + overseer::Subsystem::, SubsystemError>::start( self.subsystem, ctx, ) diff --git a/node/malus/src/tests.rs b/node/malus/src/tests.rs new file mode 100644 index 000000000000..00c39dd7b2b5 --- /dev/null +++ b/node/malus/src/tests.rs @@ -0,0 +1,90 @@ +// 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 polkadot_node_subsystem_test_helpers::*; + +use polkadot_node_subsystem::{ + messages::{AllMessages, AvailabilityStoreMessage}, + overseer::{gen::TimeoutExt, Subsystem}, + DummySubsystem, +}; + +#[derive(Clone, Debug)] +struct BlackHoleInterceptor; + +impl MessageInterceptor for BlackHoleInterceptor +where + Sender: overseer::SubsystemSender + + overseer::SubsystemSender + + Clone + + 'static, +{ + type Message = AvailabilityStoreMessage; + fn intercept_incoming( + &self, + _sender: &mut Sender, + msg: FromOverseer, + ) -> Option> { + match msg { + FromOverseer::Communication { msg: _msg } => None, + // to conclude the test cleanly + sig => Some(sig), + } + } +} + +async fn overseer_send>(overseer: &mut TestSubsystemContextHandle, msg: T) { + overseer.send(FromOverseer::Communication { msg }).await; +} + +#[test] +fn integrity_test() { + 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); + + // 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 subsystem = async move { + sub_intercepted.start(context).future.await.unwrap(); + }; + + futures::pin_mut!(test_fut); + futures::pin_mut!(subsystem); + + futures::executor::block_on(futures::future::join( + async move { + let mut overseer = test_fut.await; + overseer.send(FromOverseer::Signal(OverseerSignal::Conclude)).await; + }, + subsystem, + )) + .1; +} diff --git a/node/malus/src/variant-a.rs b/node/malus/src/variant-a.rs index 4b4b05d54933..a545bd360faf 100644 --- a/node/malus/src/variant-a.rs +++ b/node/malus/src/variant-a.rs @@ -27,7 +27,7 @@ use polkadot_cli::{ create_default_subsystems, service::{ AuthorityDiscoveryApi, AuxStore, BabeApi, Block, Error, HeaderBackend, Overseer, - OverseerGen, OverseerGenArgs, OverseerHandle, ParachainHost, ProvideRuntimeApi, SpawnNamed, + OverseerGen, OverseerGenArgs, ParachainHost, ProvideRuntimeApi, SpawnNamed, }, Cli, }; @@ -35,11 +35,15 @@ use polkadot_cli::{ // Import extra types relevant to the particular // subsystem. use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; -use polkadot_node_subsystem::messages::CandidateValidationMessage; +use polkadot_node_subsystem::{ + messages::{AllMessages, CandidateValidationMessage}, + overseer::{self, OverseerHandle}, + FromOverseer, +}; -// Filter wrapping related types. use malus::*; +// Filter wrapping related types. use std::sync::{ atomic::{AtomicUsize, Ordering}, Arc, @@ -51,17 +55,27 @@ use structopt::StructOpt; #[derive(Clone, Default, Debug)] struct Skippy(Arc); -impl MsgFilter for Skippy { +impl MessageInterceptor for Skippy +where + Sender: overseer::SubsystemSender + + overseer::SubsystemSender + + Clone + + 'static, +{ type Message = CandidateValidationMessage; - fn filter_in(&self, msg: FromOverseer) -> Option> { + fn intercept_incoming( + &self, + _sender: &mut Sender, + msg: FromOverseer, + ) -> Option> { if self.0.fetch_add(1, Ordering::Relaxed) % 2 == 0 { Some(msg) } else { None } } - fn filter_out(&self, msg: AllMessages) -> Option { + fn intercept_outgoing(&self, msg: AllMessages) -> Option { Some(msg) } } @@ -88,7 +102,7 @@ impl OverseerGen for BehaveMaleficient { let all_subsystems = create_default_subsystems(args)?.replace_candidate_validation( // create the filtered subsystem |orig: CandidateValidationSubsystem| { - FilteredSubsystem::new( + InterceptedSubsystem::new( CandidateValidationSubsystem::with_config( candidate_validation_config, orig.metrics, diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 57effe57681f..935cf6ebbef8 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -94,7 +94,7 @@ pub use polkadot_node_subsystem_types::{ // TODO legacy, to be deleted, left for easier integration // TODO https://github.com/paritytech/polkadot/issues/3427 mod subsystems; -pub use self::subsystems::AllSubsystems; +pub use self::subsystems::{AllSubsystems, DummySubsystem}; mod metrics; use self::metrics::Metrics; diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs index 280187f977b0..66156fd18298 100644 --- a/node/service/src/overseer.rs +++ b/node/service/src/overseer.rs @@ -241,6 +241,7 @@ where parachains_db.clone(), dispute_coordinator_config, keystore.clone(), + Metrics::register(registry)?, ), dispute_participation: DisputeParticipationSubsystem::new(), dispute_distribution: DisputeDistributionSubsystem::new( diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index fe2b19144d5e..80dae08825b0 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -150,22 +150,25 @@ pub fn sender_receiver() -> (TestSubsystemSender, mpsc::UnboundedReceiver for TestSubsystemSender { - async fn send_message(&mut self, msg: AllMessages) { - self.tx.send(msg).await.expect("test overseer no longer live"); +impl overseer::SubsystemSender for TestSubsystemSender +where + T: Into + Send + 'static, +{ + async fn send_message(&mut self, msg: T) { + self.tx.send(msg.into()).await.expect("test overseer no longer live"); } - async fn send_messages(&mut self, msgs: T) + async fn send_messages(&mut self, msgs: X) where - T: IntoIterator + Send, - T::IntoIter: Send, + X: IntoIterator + Send, + X::IntoIter: Send, { - let mut iter = stream::iter(msgs.into_iter().map(Ok)); + let mut iter = stream::iter(msgs.into_iter().map(|msg| Ok(msg.into()))); self.tx.send_all(&mut iter).await.expect("test overseer no longer live"); } - fn send_unbounded_message(&mut self, msg: AllMessages) { - self.tx.unbounded_send(msg).expect("test overseer no longer live"); + fn send_unbounded_message(&mut self, msg: T) { + self.tx.unbounded_send(msg.into()).expect("test overseer no longer live"); } } diff --git a/node/subsystem/src/lib.rs b/node/subsystem/src/lib.rs index e7ae19bcb39e..f0918ab1dc02 100644 --- a/node/subsystem/src/lib.rs +++ b/node/subsystem/src/lib.rs @@ -24,7 +24,7 @@ pub use jaeger::*; pub use polkadot_node_jaeger as jaeger; -pub use polkadot_overseer::{self as overseer, ActiveLeavesUpdate, OverseerSignal}; +pub use polkadot_overseer::{self as overseer, ActiveLeavesUpdate, DummySubsystem, OverseerSignal}; pub use polkadot_node_subsystem_types::{ errors::{self, *}, From 1c1c37fc2f1412b73eb5585db8d497b08ee49077 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Thu, 16 Sep 2021 16:05:07 +0200 Subject: [PATCH 037/138] Don't try to connect to ourselves. (#3855) * Don't try to connecto to ourselves. * Use swap_remove instead of remove O(1) Co-authored-by: Andronik Ordian Co-authored-by: Andronik Ordian --- node/network/gossip-support/src/lib.rs | 13 +++++++++---- node/network/gossip-support/src/tests.rs | 21 ++++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/node/network/gossip-support/src/lib.rs b/node/network/gossip-support/src/lib.rs index 8a6d08b27280..52c6ffc165be 100644 --- a/node/network/gossip-support/src/lib.rs +++ b/node/network/gossip-support/src/lib.rs @@ -291,14 +291,19 @@ impl State { ); } - let authorities = determine_relevant_authorities(ctx, relay_parent).await?; - let our_index = ensure_i_am_an_authority(keystore, &authorities).await?; + 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, authorities.clone()).await?; + 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, authorities, relay_parent).await?; + update_gossip_topology(ctx, our_index, all_authorities, relay_parent).await?; } } } diff --git a/node/network/gossip-support/src/tests.rs b/node/network/gossip-support/src/tests.rs index f858ae1bc9cf..1ca76728adb9 100644 --- a/node/network/gossip-support/src/tests.rs +++ b/node/network/gossip-support/src/tests.rs @@ -92,20 +92,27 @@ async fn overseer_recv(overseer: &mut VirtualOverseer) -> AllMessages { } 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::Ferdie.public().into(), Sr25519Keyring::Eve.public().into(), Sr25519Keyring::One.public().into(), + Sr25519Keyring::Two.public().into(), ] } fn neighbors() -> Vec { vec![ - Sr25519Keyring::One.public().into(), - Sr25519Keyring::Alice.public().into(), + Sr25519Keyring::Two.public().into(), + Sr25519Keyring::Charlie.public().into(), Sr25519Keyring::Eve.public().into(), ] } @@ -177,7 +184,7 @@ fn issues_a_connection_request_on_new_session() { peer_set, failed, }) => { - assert_eq!(validator_ids, authorities()); + assert_eq!(validator_ids, other_authorities()); assert_eq!(peer_set, PeerSet::Validation); failed.send(0).unwrap(); } @@ -245,7 +252,7 @@ fn issues_a_connection_request_on_new_session() { peer_set, failed, }) => { - assert_eq!(validator_ids, authorities()); + assert_eq!(validator_ids, other_authorities()); assert_eq!(peer_set, PeerSet::Validation); failed.send(0).unwrap(); } @@ -293,7 +300,7 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { peer_set, failed, }) => { - assert_eq!(validator_ids, authorities()); + assert_eq!(validator_ids, other_authorities()); assert_eq!(peer_set, PeerSet::Validation); failed.send(2).unwrap(); } @@ -340,7 +347,7 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { peer_set, failed, }) => { - assert_eq!(validator_ids, authorities()); + assert_eq!(validator_ids, other_authorities()); assert_eq!(peer_set, PeerSet::Validation); failed.send(1).unwrap(); } From c7bfca181fe1b662b30b451cd03fc30903ed6d90 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Thu, 16 Sep 2021 16:05:41 +0200 Subject: [PATCH 038/138] Raised nits on #3813 (#3844) --- runtime/parachains/src/util.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/runtime/parachains/src/util.rs b/runtime/parachains/src/util.rs index f3e5623d7ac5..2e0625f42202 100644 --- a/runtime/parachains/src/util.rs +++ b/runtime/parachains/src/util.rs @@ -43,11 +43,11 @@ pub fn make_persisted_validation_data( /// Take an active subset of a set containing all validators. /// -/// First item in pair will be all items in set have indeces found in the `active` indices set (in +/// First item in pair will be all items in set have indices found in the `active` indices set (in /// the order of the `active` vec, the second item will contain the rest, in the original order. /// /// ```ignore -/// split_active_subset(active.into_iter().collect(), all).0 == take_active_subset(active, all) +/// split_active_subset(active, all).0 == take_active_subset(active, all) /// ``` pub fn split_active_subset(active: &[ValidatorIndex], all: &[T]) -> (Vec, Vec) { let active_set: BTreeSet<_> = active.iter().cloned().collect(); @@ -73,6 +73,10 @@ pub fn split_active_subset(active: &[ValidatorIndex], all: &[T]) -> (V } /// Uses `split_active_subset` and concatenates the inactive to the active vec. +/// +/// ```ignore +/// split_active_subset(active, all)[0..active.len()]) == take_active_subset(active, all) +/// ``` pub fn take_active_subset_and_inactive(active: &[ValidatorIndex], all: &[T]) -> Vec { let (mut a, mut i) = split_active_subset(active, all); a.append(&mut i); From 775789921dbd7c4857fac7af6b329ddb4d23fbe7 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Thu, 16 Sep 2021 15:15:32 -0400 Subject: [PATCH 039/138] Companion for #9764 (Force Unreserve) (#3840) * add force_unreserve weight * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 304 +++++++++--------- runtime/kusama/src/weights/pallet_balances.rs | 6 + .../polkadot/src/weights/pallet_balances.rs | 6 + .../westend/src/weights/pallet_balances.rs | 6 + 4 files changed, 170 insertions(+), 152 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d5eeea2ab489..3512b6caa419 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "sp-api", @@ -4543,7 +4543,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -4574,7 +4574,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4598,7 +4598,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4654,7 +4654,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4736,7 +4736,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4753,7 +4753,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4769,7 +4769,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4793,7 +4793,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4811,7 +4811,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4826,7 +4826,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4849,7 +4849,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4865,7 +4865,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4885,7 +4885,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4902,7 +4902,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4919,7 +4919,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4937,7 +4937,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -4953,7 +4953,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4970,7 +4970,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -4999,7 +4999,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -5016,7 +5016,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5039,7 +5039,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5054,7 +5054,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -5068,7 +5068,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5084,7 +5084,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -5105,7 +5105,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5121,7 +5121,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -5135,7 +5135,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5158,7 +5158,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5169,7 +5169,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "sp-arithmetic", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -5192,7 +5192,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5210,7 +5210,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5229,7 +5229,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-support", "frame-system", @@ -5246,7 +5246,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5263,7 +5263,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5274,7 +5274,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5291,7 +5291,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -5307,7 +5307,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-benchmarking", "frame-support", @@ -7666,7 +7666,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7926,7 +7926,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "sp-core", @@ -7937,7 +7937,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "derive_more", @@ -7964,7 +7964,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7987,7 +7987,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8003,7 +8003,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8019,7 +8019,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8030,7 +8030,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "chrono", "fdlimit", @@ -8068,7 +8068,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "fnv", "futures 0.3.17", @@ -8096,7 +8096,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "hash-db", "kvdb", @@ -8121,7 +8121,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "futures 0.3.17", @@ -8145,7 +8145,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "derive_more", @@ -8188,7 +8188,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "derive_more", "futures 0.3.17", @@ -8212,7 +8212,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8225,7 +8225,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "assert_matches", "async-trait", @@ -8259,7 +8259,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "futures 0.3.17", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "sc-client-api", "sp-authorship", @@ -8296,7 +8296,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8322,7 +8322,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "derive_more", "environmental", @@ -8340,7 +8340,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "parity-scale-codec", @@ -8356,7 +8356,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8375,7 +8375,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "derive_more", @@ -8412,7 +8412,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "derive_more", "finality-grandpa", @@ -8436,7 +8436,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8453,7 +8453,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "derive_more", @@ -8468,7 +8468,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "hash-db", "parity-scale-codec", @@ -8486,7 +8486,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-std", "async-trait", @@ -8537,7 +8537,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8553,7 +8553,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "bytes 1.0.1", "fnv", @@ -8580,7 +8580,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "libp2p", @@ -8593,7 +8593,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8602,7 +8602,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "hash-db", @@ -8633,7 +8633,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8658,7 +8658,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8675,7 +8675,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "directories", @@ -8740,7 +8740,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "parity-scale-codec", @@ -8754,7 +8754,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8776,7 +8776,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "chrono", "futures 0.3.17", @@ -8794,7 +8794,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8823,7 +8823,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8834,7 +8834,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "intervalier", @@ -8861,7 +8861,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "derive_more", "futures 0.3.17", @@ -8875,7 +8875,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9307,7 +9307,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "hash-db", "log", @@ -9324,7 +9324,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9336,7 +9336,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9349,7 +9349,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "integer-sqrt", "num-traits", @@ -9364,7 +9364,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9377,7 +9377,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "parity-scale-codec", @@ -9389,7 +9389,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "sp-api", @@ -9401,7 +9401,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "log", @@ -9419,7 +9419,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "futures 0.3.17", @@ -9438,7 +9438,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "merlin", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9472,7 +9472,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9484,7 +9484,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "base58", "blake2-rfc", @@ -9529,7 +9529,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9538,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro2", "quote", @@ -9548,7 +9548,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "environmental", "parity-scale-codec", @@ -9559,7 +9559,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "finality-grandpa", "log", @@ -9577,7 +9577,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9591,7 +9591,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "hash-db", @@ -9616,7 +9616,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "lazy_static", "sp-core", @@ -9627,7 +9627,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "derive_more", @@ -9644,7 +9644,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "zstd", ] @@ -9652,7 +9652,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9667,7 +9667,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9678,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "sp-api", "sp-core", @@ -9688,7 +9688,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "backtrace", ] @@ -9696,7 +9696,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "rustc-hash", "serde", @@ -9706,7 +9706,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "either", "hash256-std-hasher", @@ -9728,7 +9728,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9745,7 +9745,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9757,7 +9757,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "serde", "serde_json", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9780,7 +9780,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "scale-info", @@ -9791,7 +9791,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "hash-db", "log", @@ -9814,12 +9814,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9832,7 +9832,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "sp-core", @@ -9845,7 +9845,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9861,7 +9861,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "erased-serde", "log", @@ -9879,7 +9879,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "sp-api", "sp-runtime", @@ -9888,7 +9888,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "log", @@ -9904,7 +9904,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "hash-db", "memory-db", @@ -9919,7 +9919,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9935,7 +9935,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9946,7 +9946,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10142,7 +10142,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "platforms", ] @@ -10150,7 +10150,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10172,7 +10172,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-std", "derive_more", @@ -10186,7 +10186,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "async-trait", "futures 0.3.17", @@ -10213,7 +10213,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10223,7 +10223,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10234,7 +10234,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10387,7 +10387,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "frame-system", "futures 0.3.17", @@ -10794,7 +10794,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#ba153b9ae050eda022f002d74d76f98d1e339a81" +source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" dependencies = [ "log", "parity-scale-codec", diff --git a/runtime/kusama/src/weights/pallet_balances.rs b/runtime/kusama/src/weights/pallet_balances.rs index 74001c453815..1ec240b75fc9 100644 --- a/runtime/kusama/src/weights/pallet_balances.rs +++ b/runtime/kusama/src/weights/pallet_balances.rs @@ -72,4 +72,10 @@ impl pallet_balances::WeightInfo for WeightInfo { .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) + fn force_unreserve() -> Weight { + (27_766_000 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/pallet_balances.rs b/runtime/polkadot/src/weights/pallet_balances.rs index 1fd1ac72f6d4..8aff3b4185f9 100644 --- a/runtime/polkadot/src/weights/pallet_balances.rs +++ b/runtime/polkadot/src/weights/pallet_balances.rs @@ -72,4 +72,10 @@ impl pallet_balances::WeightInfo for WeightInfo { .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) + fn force_unreserve() -> Weight { + (27_766_000 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/pallet_balances.rs b/runtime/westend/src/weights/pallet_balances.rs index 5009fc872040..d09e561c453c 100644 --- a/runtime/westend/src/weights/pallet_balances.rs +++ b/runtime/westend/src/weights/pallet_balances.rs @@ -72,4 +72,10 @@ impl pallet_balances::WeightInfo for WeightInfo { .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) + fn force_unreserve() -> Weight { + (27_766_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } } From e335084afbe7861ea85ad4ccd035ee04b55eff63 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 16 Sep 2021 15:26:48 -0500 Subject: [PATCH 040/138] update Rococo.json (#3871) --- node/service/res/rococo.json | 274 ++++++++++++++++++----------------- runtime/rococo/src/lib.rs | 4 +- 2 files changed, 140 insertions(+), 138 deletions(-) diff --git a/node/service/res/rococo.json b/node/service/res/rococo.json index 1589828bfd0d..b5c28f5289a2 100644 --- a/node/service/res/rococo.json +++ b/node/service/res/rococo.json @@ -1,6 +1,6 @@ { "name": "Rococo", - "id": "rococo_v1_7", + "id": "rococo_v1_8", "chainType": "Live", "bootNodes": [ "/ip4/34.90.151.124/tcp/30333/p2p/12D3KooWF7BUbG5ErMZ47ZdarRwtpZamgcZqxwpnFzkhjc1spHnP", @@ -32,161 +32,163 @@ "genesis": { "raw": { "top": { - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", + "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee0000000004000000040000000500000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c80000000200000019000000000000000200000002000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd00585412054e70c6df1452107855451d2c1faef2e43d4ad62a64112859ab007fbc8b2398f2e43d4a4ea7483e81d699ff7d9ee5b72500cd4c52417c97f038051c0041c5752de7772731a22897e7c507033592ae257befbdf7de52ca2453ca1471151f15b614fb46693f466e2570a103f965563e8ca8dd96d769912f8ddf9cde837f7f057edf8326cd327ef3619ecfbfa7cbf4c5eff3a739da7dbfd8f42b05bf3f93a7a76b32882330fed43cfd07f04f4a4d10cbf8cd75dc19f44cffc606f810b22deb59e4fb02f09b73254403fce64ce57b73768d007ee3f9be4d2cdfb7e138b5d557d8ae65543e6db2cafbfa6ec726757cefa6f79ff9833ff896fc81667fcf3c7fb20174dc41f3a499be933fd0f7775287ff7b01fce9531e95878779d0f716bff1febee8999d537e73bf44dd9cf29ba6c136d0dfdf1745f03df37bd03cbdefbcffccf3277fa6f7edafdc9942e8776e72873391e9e7375e735f4ddcd17d57bff3dedffbef6fadd7abdf775dfdbcf73aebf887857c7f5fac6310178f2f36e9795febe7ffe9b02f5253559f7e7d3755f5fdbd172929001dfa940cc2dffbfa83dfef7b3af0453a5ef079ea77ff99b9ae7bb003cdfb5df7bd58cd9e2ed7fbf5a4b97eb89ba6fe70bf76f8fcc9dd7be6595fc8f7de8b95677c9e9e2e8be0f78c397c71ace33882f5eb7d91e232f862f87d354fcfdfdf0fef57d0fc2607f09341dc4df39d347fefe40ff73f5c5fa77a5dffe94f5f24f953ef32a4df0a3450b32fda94af7293deb4547e8ae6a64fe91062f822e98adfdf1fb8e3be8fa179bf4920c2bf3a1e821e05ff7befa967413134c124349f3409cde08bded4ebe848cdaa1f6afefec3345f13c4a1d95924d12c36a9a369a9f4d5f736197c277584f8fc01cd9429c4fbeffd3b07cda2f95dd36ffdc626f7df231f0fefbf91942211d07d7f68d2fcf9aabb8f91c50fc4e74f063f343ff30482bef2114afb5ea786267dd0f4cfec7c5fc7ed77f808cd17ff78d4a641fc59c283d70cd220451c3cc0855693a5afe8eb509e4fc74c7164faf473fce666faef37ad84191599be8ce3d016b5f1f45b8662214dab5fcd039442eacfe433d3176f778ed326df9f0180f95efb67c5a74fae7f8204682ee48b9dd8ff36ed5f730132a6308427adfe6a9eae5ccfee87fc3c91bd3f7df2fdee1dba659c4d038a43eea1d9c3443a8b7ca43e79923becc4d5eff373835ccbe2d7e9ca179ff54f30fbebd46acee46ff201cd8458ab67b2577f8228f6f85359ba96697db19a98561745d00c5f34cff185802fbe28f678df7bfba29b358ba5b9a469a768aa76d8d72b936f73cd4dbe9b9ec9d771f74cd2bbd959b470b063692e5162a47c2524d7cf589a4bca26fdf45eb523cc1e3e42ca498eb4e41ecf8e9d944ffa9e42b6c962e786f746cfec34641b253e3ef0e4c99327adf2c5db35f57abbd111fa243b817dab7cef4bdd8e464fb367361623d35fa78aad80b269b25b16df7b12cdf4be10efc5b72f8ae237a94324c08f107237cde90541df7bef75bcc91dde8b24937c51a4a39b3597e692b6bd5eaf572b0a245e4ee2b9081e4a3ea024bf490794e4ebb848c91f1a8b4cbe68c990c53b92cc3e4316dddaae957630a3d302997c92d95b64373d8ba139be58474a02d154bc5e99c43cfe3c473af77ae51e53ae2f86e688dd431f4733fc31371a3de9455277cdf8a179d23c86e6f7249e9e2ed71f7d9341505c767c843ea9e61198ec2f8ecc233e64da35e18fe6e9397c918ea3f9fd0888efc7d771d23c429f08a0b3e36e9a70344f9ac3d7a93a2e9a9d43b3df333b8366ff679ef49b3ed9b4d4e1d257385b9cf215cd3ef487f4ef0722014afa9fafba51c4fe96399b96ebdbce71bf5fbc367c5557b045b6a15f71beafbfaa38e0d76fe9be3e8ecef15dd37d7dd02c9dd5fd677eceeabef49b5325d794b33aef2b6d0558e4d346aeafd23968aed76c5a1a9fbe932afb347b56d96f9a4c04b9692b98c23569ee7c4d9a29a9a37bcf4d93399153beeade496bb387db571da6d99ad657dd353efe73ddc92002d1b965809ea0b9abf88013b093fd34374d46829cf21579c4e6ee9ac647e8930c760dcdb59f9a34b779843ec9f429a9a3626b7e5de3cf3280b269404de473cc23d8393afbfb7f9d23cc4d037ae594afbc54863ad242fbea6cc9f453b9694b929053bea22fd2b6d5e91db5d30a1345b1c97abf7bf19a9fafba4920ee2fc01f9f3fb9be4fabd6261b60dfb1eba7e5aaefadea99d674fdb4eaeb78571cffb3a766ef3bdcbebaf8a4d9fb1fca7e516c7208fa16bb7c5a4ca238e243ee9eb6ae79bf33cf9aefbb695fa75e6f3539446dd1d7f1f61b1e590cf9aa737f353bb7e374cbcd6efd541ffa437da8f52768ad5f4d9a292992da6f3a9f5fee7e3be228edada48e7ac76afa8b96bc5507fd262d6e5f5552009de9ebf88f538a047f914493d4ecbea23fd00c4479969952fa28bfa11fa5dfa4f7d49e9a7fa87f843e79f2e489cdf56dae58c5a3befdfa16f7d0ecefe40eff8a4f0a84534b69164b5eb0a40925444a6c4a9c784307512ae10856647f3b45f6ffc6d2866880927efb8dfe16c56e954dcbc00bde6ffcfd577ee3ee1968227b6db9bb1711e953f381889dfdc5f61b4bffac7f454aeae85eacddedba7bbbeebfdc756fbfbb4fc53a5e6b9ef42b7d21f5623b76e7a07fd6b7fff9cd49731da9e9999693746425ef45f9cacbeb7f53da3fcbec2fbebf8cdfd4f71fbf5afb5fb658c5c3fe7dfb17f7d05cdf923bea5b7cd25c5ff48a3fb18ed4b499cce524269268476ad64c26e9465c4e328e3a070f7de5233e64fafe4d06615f94dc51be32fdd16f3afb37b983be32fd6e9beb44ecdc32e777fef469944deaf05ef4b1fdc6fbd3666cbfc91f686e5fd5d771cf6c5fdd946799eb7b5f5f2cfda67dd5f6f3f9e5b32cfda6ad67aa787cd9fb2f7b58c5a37befbbf7700fcdf69bdc71bfc3d6ecccd3ff7e933bfc855c6c316e5ff5a59e01b15ba57d1bbf393f1c7e73962bbf396df2fdfb36fcc6e6ab04212df2fd16c7f1d6fdf69b9acf9c7cfdefa3fca6fefdfba3dfd0bfdf32170b699a8fd8adf2fde6b42bbfa97f7eae5f5fc66f3c571a1014b9fee838dea2f17cb6e4fa4de910f17ecb9c36b9be784d9a453a5eb3b34849ebab7bed77ff6401ec7bafe3a2e8abf3cb7dcdf3cbf7db3cef68cdef9b747cfe646f5aeac6e77dfb3ad5cdefafd9995ab3fcee5f9428d6b1491d32beaa4fff7d55bf4dfa6e9e36f75ff3fc7c5faca335c16ff2c3e74ffe5ec72bd9b4747e2bc7674fcdedabfbe1a7fcc67efd164b293ee9874fc732df2f517ee35f5fa426cd62fb4a7c4a0241b3f595884ff1c3a76667d1eca9d95fa4deb48e6efbea4ce5fb5fc569f2ad76d669f3fdee9ab325dfafaf533f13fcd02ccdf3cbdd3bd95d1a7d45dffaaafb7e4aea00b18a87f7df7fb87d758ed9dfebcc26755cfcf9cabf4cf94de7fad6ecfc5fc5b1afd7ebf56ad55f758e4aff94b1c91df303d26b85d83965d39808ca4d6302562337ed7545169b4629b68d52ec1dcaa6bda0c89d3b8ba496393ffb573247497b4d914f9bfd3ffadfd715a79d759699fe59e6f3cbfdfed66feef7b7dfd8effffca673bf58491d16e394de5fd37b918edeebb89304f8c9de8b94dcd1bd87cfeebb179dd4d1be6a92072977afe3d6a4f99a9d9dd4615fa4a36776df64fbea4465516cf2e233897cdf33cf2f7bdf9967f7ed2bef756a6776f6ccd3e6fa221d3bb3739317f7d4ec2bfa2de31d759ca8922afbbb13db6fea9f5fee6f6a76b67ee3df2f56b3b39b348b5e4d9aaddfd0ef177dac267d1147599f45fc4169bfbe3f2575f84849c738257dd1923ae853d262eb2b7ff18e94a4df64c5ed2b7f1dd771918ed4a4b9490374a6afe33a5ecdce3f4ea90cc46e95fef5db6fce54ae5f3fe537fdf55bfc867e7deb38b455bff49b56c211acc8f5db6f3a9fa85cbf652a16f2b9637e280542ec1b65d35eaf5ccaad8429a6c85d12bbc3349438b71264e0247bb995200359a6b955c4b629fb8a5da3ec2bf68cb2af18a31ca0228a50d481288568029103a290e8449481081355200689291033206e406c42fc80d801d1091105e209c427c41188313106a2121106e1139109d103e22b8c43f886d00d612e3c03057e744c742f6f03601a3e138050884dbe2ac257c8c40dc357024f76b5e836003201bd6041604f005201ac82250108857b0310e6357171106e20ec42b824f4025883ef045e0642251e0b401b7c24006100c60074020a8132f009d0089e16bc5bd781cf0ddf1bc01918857da26be2e6c0e3829559187c4af88ef021c1a2c06ec07ac0db428802cb81cf03df076c13b604de1abc220b036bdf0e3c1c801af8bc6083bc257846f08ef07d21e4806562a3b01ae838e075c0cbc2e3804d8175d29da043819d810d819703900a700b1009370ef70db70d570d370dd70d170d170e3777c910c2c1426173609db038b02eb036b846b847b8b59b845bc55582ed8055816d623f6065605b606fe075e14ae14961814233dc147c4bae0a3c24804fc038804dc02378540099f8b8f065f175c15bd299a0234157822e08fc02f8041a043a217441788230283441d824cc00f806100e1e13af89a701f00a70045e16c00c7cb9cf0cdf193c367c4cbc1b78567849f0aaf09460a5b84f5c13dc135c14801b005f00b2006c01e8029009e00d8c022805700a5707d70a170bcf091fd1a7866f0d5f11b5c1adc28dc217fb40005a4167a015402cee152c12ee0aae0c5c028805300b5e90e7018f045e09c0208028008340138027f080a813dd135d0abc29d0127845f0a8a024f03ee0097923f044e039f175e06be293c167848f085f113e2a3e279f92eff531f165c083812b005300aae08b81a7066f0b2f0df7c9a5e20ee112e116c16b6e04a7c28be044f02138cd85e041a02e08db403b409ba01c10720631a2881d21781cf1a1071ec417845b10f1b5e16343a8812f09f70c9e14680c280ebc1ed025540620083e327c5a7c612862cf4047b0c3b6c1167559e8b0e8843a18742da02db863a035b862e864dd0aee0ec02c6e0f2ccd6e419d7851d826582a742ef8b2e04f680ee80c8cf868000342342ca0472e40d5804873d3fb06d0eb0e921f14e861e4c78e113d7a88b4124164a7478fb0e9ce100afce8218244057af400d9e109420491203d7aac8459349221417ef4ec10d16367a702332117ba48058804e9a104cf0e12477a0431927b88ec1ca1c40f213edc42ef00215284488f1f40881431400f11248a0001925d425c2341b233c425bcc229b4c211054009abd03d3b482ab0b3d34a09a9404411203b44c0845168244aec0841a2c40e8f0498e115418c64259004098012d90ca170237c824ce8844e62878829b47513da0820458ceca84226340f124504a9009122407a0431927728f0a385122ea12b50a4088f911e4682188184678788058af4506247c84c684513b143a48820488820d1f303489124419038b2d3a387a788911d1e1ca1129a88203d7a7690f020016425aca291ec04e909c253c4881e247ef428a2471023f987112288fce001e2254c422b41811e3524437688183982c7881e441041a20805880441420f9122407a1c3982882374910ab0844668243d447692ec50d14510094204911d233d767a7e10118408223f80d08445e81d228a00710989d03c452a806407898b70088da40709233d48147911d2fa47cf0f227a10291284889d1e244190f0ec18990985d04876788a00e9a1444f90214128f06348901f497e7c188446620489223c45f4780981d048788af4202922801f3c3f8448853d680b043192797684f01461401066c883ded941620789030c41c44e1145fc182246b883462204c88e1140a468243d447678768c2012e4c31c100952015588830612040991203c3d49ecf450628811233f7af0ec10312408122d21408a0c69b584b33ea2c78f9e1f44fce8d9294029b4c105820cf911a42708912028e10c5a0890224328d063a70709203b49ec9842a1e6290280318791094f09595c91fb476cdaeb95e94f5de92aacc2a811ead919dddd3ae8a0830e3368add4bdf3dc3b8f564a9d7a5edb592cf5501ea5ee9ee795bc8e25afe4a5928f272f8d25af73efc5bed0cec569575f3aaff7d6977af2ea286b3ac5713a9ddcbd5a6b773a51b715456dc5e9dcebbdf7a25e6aadd4ba75fbd57b6bf53a4a29f53cf76ee7eeb5faf739b594d2eec66fb0d8a8ee7eefbd9756ff2af55c5cbcda70cfbd737aaa416974d6de7babbb53cfeb3c4ba9d73ac3ab679d76363228a5d4f31c3ccf63a85baf35c6aba99485568f3aa5a928cf732f8677efbdb576dd55afde9ee75e676947bdea5edd6b45a1ded17a6fe71e0caf7ae7ee275b3daf3d67f19ce59685c5adbbbb789ed78fba7bde7dd5ddabd77aaf5747adbaea790d67dcbda23cefaa5751aa57ab577f513d86ba7b5ec97361ddca789e27d618cfb1676bbb8742a150d473aff3dcbd76ee1ecaf3bc0ee555cf2ba594564a6badeed5511585aafe79ee9ee755cf6bad9e57afba7bd5abbbbbe7b57aeed53d4abd5a29ca734a9d52774abdd64aab35ade775d5a97bb5764e3dcff33cf73cf7dcddf350d429a50fd39436a52d4d3d4a297df13c8a42514a6d7b2e2d5f55d1a64d59baeaee4e9dd2b65e7b4579dee9743a9dc49818827a9a0957522c2721407e5060c890223c30567eecf0b0a4bca4ac80487a90044962e7744491158d2015d8e1318251542948768a20f2c3082098c88e11233f5a7a80fc4042e4074f4f8f9e2047500009243b487a1c518408223f7870aa07490f213c452cd0b343444644b2ba2b152288fce8b1c3f3c3c8114586fc005264888d918820437e24e98124a5671c11a48708123c18a5023d48b8a024b163448f1e2241788cf4008224c811a8235eea0e4f057af014e9f901a4c890213f5a6cdcb82451c4023d2f427e0001b223e4e6068d0771d098510491204620f961c49f7a787ef42099a111632252441024e6d7339028b123a40790204328808491150f9252d320620709921d1e23471401d28367274911203b3c3384dcdca06104c80e129cd108203d3f28d0c30824418804a9c0aaac40109e9d24313accb8718306112e483b3d3f787688ec14d1e307122280ecf428d26344091e2031a319257684f4e8496287080d59c44cc8f3636708901e3b45fce029d283a4071143821801a447cf10247e54608708d6386427c9ce901e49fc3802462ca2c8901e4510095244114586ac843b487a24b1430491203d8804f96104900a54a0488f9e24763e09919d0af68c1e448a0441c2b393a4474f91223c3d88d8e1d92182a7488f9b1b347ad0d811f26308057aec04e1e9e9d193c40e8c244476eaa95d099e2247ec1cd12521b253679070ded747ff883e7e68fbfc783edaf3d13e3f3fb5fef8f8b88ff5d13f3e3e3f3e3e3e3f3fa08ff6f1f9f97cb48f8f8fcfcf4fe7a37dfae7c7a7faf8e99fcec70ffda1eea37d7edc870ffd691f3fd4c7c787fa681feae387fe501fdd3fd5878fcf4ff5f1e3e3e3537df8d0f6d13e3e3fd547fbf8b88f1fea437df8d01f5aad0f1feaf3e33efae7e7e7e7e7fae81feaa3ddc70ffdf9f9a93e725412d0eea64720f9d10129a6cd9972b93e8a69659e596ddfc996eba3ccee65be727d9279672c7796eb8fa6c595b85c1f346dccac341bcbf55366a5d11a3079014d044529c0d95eb3984c0b38a882144c9840053587a3d9666e100318bab04510ee7573b23bb3b84abb214516b298e206296875cbfe69635d18d6a00322b4410b27ad6e8d467f763124f8a0083ac0820459f041ab5ba5d212e0a529e106af2ac456200559ab5b2176c16ab44a78892ea78630a0600b373871d2ea968797b8d5569964b185cd074398b5ba65b16b849728f99c5a232bcb55a8e2b8dee7d4b2e17f6853a9b02ce1606b2dd195e543ae757e32cc9eb2a6c63c5293c377ce0123f11a9366e7296933d1da151209976b8ee67db84f669fb4e5eabd3c1beacb7db227615787cbd13e5ccc863fd272fd3096eb7bb85c2df8fa66247675decbf6e53e52e7c9bc1c0bf8d1bc59ae9feac8ef2582b2cfe6cd3a99eb03659fadb26ae7c9bc1c18fbba10bbbc9887035f9fed721e2d8c911faec4952fcfe6c9c22f47dac85889b3dfcc035f1dcd93915eaefc6816ec66de4cfc5ea9cf5682b24e46bbe9e02a8eeb56714631b481b3317c158d221e5746d98a480bc53006d2c65968036763ec951b4fa16c9c89b6d196ebe7721d455a18c6401a51c53961588d960ac485b394919622be449c0a8b313017d2c4dc6813639555c15c28e6461b880b67234d1471a16c9c89a02d0467e16b2586321b5970202d8ca1c8469a2dcc91405b281b67a328be405ca8f2a93f43da49258eb63fc51ccacc770b85ff146324ac5243462326ca48b65c1f97eb47234743b6328a36703570323466234ea5c6ecb391ab91bbf11a73355e32365e355c6cc468d0c8174d8d1a311b311a34f2558306d788dd788db91a365e356834465c0d1bb91a391a391ae3cb460d5c0d198d9828b3d1c055569d498d66248eb4915e245b8a141bd1c81c0947d248a411392265e58b341bc546b8918c8c95b1518e441bc9c858191be548345256be48b3516c84239146e46c448a8dc81c0947d246331247925e241b98234733d28b64236d646e4423c5483892367a8d4832528e9c8d6223d2ac7c917924cba34ca2e53246c65c4514c53fc94c36d32b55e24a33511463b99a68a5dca9b495642aec3a996ca612373b9966259c4c492bc5feb1eb14a3954a5b4966ca9964259baa9c955e2a269ca9442b65a509672ad14a596932c92aab96cad2ebf432cd4ab892568a95b893cc6433bd4ab392acb49d62265a2957c2956225edf432cd4cb292adf42a67a65c9e997079c814cbb4122dd7ca5c29eb21bc322cbf5036d4eb344391a1e4b20c6586c2a16229af130d6543bd4e3314194a2e07a5c45068a8dcc98692a1cc5038542ce575a2e5d809972243b1a166282f14ed944b99a1c4507028da2997324389a1e04eb814198a0d354379a5c45068a8dcc986929d6628391419ca867aa162275aca0b6586c2a17228d9c9961243a1a1d8505ea8d9099722d3c1a5cc748850703a3994984e118aa6733be53a8b7c366d76cbf5758674662a3895580a2d355b79e9d85234959c8a2cc5b61253c1a9c45268a9d9ca4ba7b6224bd952af149cca2c4553c9a9c8526c2b311d5a4a6e6596c2a9d05231159bca6b859692a5722a3695d70a2d254be552722bb3144e85968aadc852b6d42b05a7324ba1adbc5233159c4a4c4596625b89a5682ab9d44b6596825b91a56c295c2aa6424bc9adcc74622b349da0544e479692e908a9d874602a2f1af9f4014783e5fa3e10f9806b89a9682cb9151b8b4ce7d5a2b2a95e2b2cb396988ac6925bb1b1c87c286a99a970aad80a0bad456553bd5658663ee45a68aa9c4ac6f262b1b5d85a5eaa194b8c05d7626b79a9662c31165c0b4d9553c9585e2c2d33956a25c7f2c2d6125ba1a55872a28c65a6c2adc85236f1c5123bd1565672a9990ac7a23aa9642d2cb614cb2b8b2d349a0dfb506b69f1c1a69aadbe5b26ecc30d973fecc3104bcc8758ae7ffa3094ebfb1054716215e7fb5e5e2e339516dccc8b0d46e6c3ace2e0727d89b9d06260662d3913bb5e5e2eb3169c0d462654714c189aca4bee45f6b9bc5c6ce6bf60d70beec585366bc9f920ab38a68b0b97188ced65bae05e662e2e3917190cee85061373c9b9c860702f3498984b0cc606f3727999d15e722f3297970bcc9f2d3817303299175bcc6be64273f9b325e7026626f3828b89c5bcc84c17dbbbbc5cc0d0645e72dfad973f615e39e6bb85ff7c99cdfce9828bc1d85ce01e722fd8e7d482f9130627837b28c22e7fc2c462b00faf99179a0f30d39f2e4495555d64a87cf64023caf57ba8551cd3cbd7ef8156713ed367c69e6682c9994c1c9ed5ef01577160be6fc6ccc198b2b761dabf3e06bbccd8d36072383cabac7aab382e5f0cb6e19739637dec637e06bbcc9c69a3fdcb567154f0cbcb700c8ea9bc497b315f3fc33918a60dcbccd7cf70ceb461d9cb300e7fcea45556c536fc323ff62ffe84c9cd4c33f6b4b7fdcbc4343367caccc77dccc436fcc2311593d6f2e7e7be97991867e21e5efc89733d60590fb316d3d6c3d00a9b3d04fd2ccc270fb91e828a54723232a798578cadc545cc85ad8758c57921ba907d4c4c26f6b9c0c5e064b04bc616f38ab1b988b9b0f500ab382a173132199c4c4c4e46e64216139371818bc1f5f052918999b998b99099c9e454646831b4172f172f1734195a0cedc5cbc5cb054d2666e64266269373112393c1c5e464626c3617b1938c4df552c5625ce03ed9297692c1c9c858625ce462649f8bd94926975532b357cc8c07db639f53cbfcf3c58b875b6555953f5dd078c0fde9e2a5c23c10fd2943e3a15659358676f3c9832cd73f79a8e5fa3c08559c1476f120ab383ea796f8b65c69b894ec559f075ac531b128becc0a67ae5eb1efc56c26b7b2d166702f665e3c0c551c95558e65159b998933b2173419ec5aad5e33b117b3991c0fb38ab382ffb5929d66682b36dc6ac69ab1a9bc88bd58cd58b119db8bd88bdc6b35437b617b815bad623333b217e28a368333fd39f36291a96caad7ff3933135b793163c1b1c454b319d90bdaca2aa7f2e74ac6324353bdc0bdb09dfe64bd5464300f41abd9631e6233b6181e60b90ff3f07a112b8ad98a72fd9c5bc571b9b0559c93cbe973b9b264345f2e963bbd78e5ca9ac58899389ad7e91fbb582c198d2c4713233ac57265d1be18b2530c1b0cdcff0bec82c19ac588e1685e39b88af3b25c593633c6ec61c0c8b998e5cac2e5fa31682e60d862c060e162d060d862c090b16c31663068307230622c5a0c590c1b0cd59f34b28fa9e44cacdc27fb62279ad7e3545ea69949f6e14e316c1f53f96e997fc698c5fc092347933dcbf63807669e31682a38271683cf182f13ce099291f913862d475659d5e58431cb7989f87d4ead57ae35321adacc8bb89c6a962b8d4dc66bf5aa1c6239c85470b9ca88e53063bd4a0dcd26e3f2e25b64b97e0e341c8c97a1c9d5bc5c700e3035b9979a588c779131a3c1d89583cd559373d5c45c3262609a994bc60becca815683a3c955567d18b8e645232396c3ac86856b6cae9a198dadb2aa8c570e2b9c832c87578d8c8696c30cce21c7c299702f190d2d97834c9543ac66466393f1ca61665ba9a1d1e06239d07035af144d4e868c05fb9c5a269c53abac9a83ed847d4e2d15cea15556ad59c1394395556b62299c33abac4a3313718e908c590f414828e73504a15bae7fe6bc72fd1d70152705bbbefe0eb78a8392f2a54ca20c9a0d190a0ddb8c5caaa8e2a052281b994a866dc68cc6cbc60cf526ecb289c9a0d990d1b0e5721587849ae52a03378346b2417b8936326c3366345e3666441567146d683272e20c9b8a0d6e468cc5c666f3c2e5ca62939bf161978dcde6350367939b21b3a1c9c8cdb0d9e066c46c663270336ccc28d9908133729dcd262683366326fe696306d27875b26bbbb4d10bf5a70d9acd4c06ae9b614bfd3923b6f2a74dc98606ca404949f973062e25b2fc3943b6824d7fdae4624e1b1be9058e182dd75ccb8fb61b59ca2bd74fe1cc449ccba7d0622cdf9bfecbe5aafa932cd7b7bd3ccbece665323fe6dfc4c13d4e4c8506f326592ec6c5bfc0b1c9bc0b9c57cccbdcccf0c7dc88dd78815d382eb00be725835d37b318ecba81f10d9c895d38b8c72e9c98ebc6750306dff8b00b2787a3c2ae1bdb8d177cf3c2f1c299b96e70375cf04d0c470c877693bbd1826f64362f963f6dd8623470b7866c248e6ae05238140d59eebe663572a53f6de4401ab3118752e395528336fad3c6ab74e3358e3914ec736ab17c346829d8e7d44a9531d477ebe2b346cbe7d422fd692346bef20d5b8c7693bbb989dda0e178cd6e7037b69bd78d594e86f2274eec867623774396f2270e2e05c78682f310cecdec06eebc113b7798e5bac350c52161d7caace28cf8aa64b9e6c0c93a9c0eb68ac372ff14cbf5596cb9c6506cb93e2ed72761d70eb21cb81c321c3859ade2a430e9c71dba07dff5cab58be57a6936d29fb06b87984d87180e1b6e075ac54161d20acaa7e4727d5aae8f7ae5fa241c331d682b2cafcaad3c4b8e59ea57de95cbf55d510ca1f2291c321d662aeccac1825d3956b04b871476e150c13ab870e42aab3e0a76e5a0b972bc5c38663ad05c3bbc74e8b02b470c074d871247ca429c27b3b2128eb48531cfa643ac141bd9429ab783d5e155fa6e8d7fe6a08d72bc441d68f74f1c33d29f384a257e12ceb3dc88c4a911e7a11c3331c42588332d877d4e2d0f7f95e5dfad0ee75a65d53f7598659c852aab7eb72ceecaf23f71c8727d244a9afdcf1e82500fc1963be6e7fab07e68a551b881d83227cde17cdfff551ceffbcb8ad37d7faae2541cfbfd6217fe35df9a9ee942f9cf74a9bccfa9e58defbdab13bf7b57ccded15bda47fe27bbe087e5834dfa6b0b4f8ff2ae288630fd0917963e7c57e750b06b0913b2e58a6288945779d712980f2d9467425bae2886403dcabb54b08bce2aab7e0a66425b28284c5f9555ff845d145759f54d98096d85d8655359f54bd84865d507b1cb4765d52f3113dabad8456d95559f845d945659f54798096d7dd85556567d12535965d5f7b0ab2babfe8899d056875d42601aabac6bb3b1ae2baf0cfc93d2acadfbc67db7ba3f6dbcceddef56f827c575dfad10fb9c5af7cfa681d8e7d4b2df2def4ffafabe5bdf9f74963db333cbcaa27fcd5465d1b7e65716cde58ef141fd50f76c22a96be8933a473f4511694fd99f296ef3487f4f99c4cb47e82b23f9c93c1523e9ae39bbe6a47f7e679e923e4fd9ef4d3b22ae74ce12988c963f130bd339309a563dd168dd67425bced23930abea1cd8d8d23930944be7c05a5e3a0726d3aad8e53dacc6d8394b60352dfb4cbad645750ecc43e91c1829a573602a2a9d038349750e6ca6e5d8d53dac46d7394b94782d984dcb9f496d594c760ecc479d030b499d0333959d036329750e0cb7eaf79b3a0706a355b1eb3eac86d739b0dbca819160e7c050c2ce81b9b46c0ecc45cb62577d580dda39b0cf3b0756d6ce81a56ce7c0bee539b055cbbfbf3bc7b1cbbecfa9e579de751e4edddbe1b26217ac46abfec55f65d187d568b94e2d8b5d4aea93274f2aeecaa2ef736ac16ab41c7f65d1eff7e9a8addddc3429b2d0cd022599562672c5277de5262b3ed24f72129a7f727f1fa1b9f6bbd95dd34f35d033fa5b940de596dc349909b248f221d93feb530cda9b45b6f8487df2e4b32026f2e1f3fb213f37c8e58b89b8b27dfadf57d37e9341341362f9c34e3a9f7cd23f2f48848725b47c89341362f9fe7981fc81170b211404195320c29744ae9dd96fcdfa4d3e40c79f6879af142cdc4009185ef6a993974b0760e0848cc785cc06b5578f91ce223b79c99802115e497858424be202f9be930c74162d0fbf3a8b566357bf0f1115b0800a4cbce1f56a75f845bf9e46f210252d6021067158f27ab59a24c029ffb88fffd4da1541f458aeefe6014a21ddcfe4b3c3b4095f35b1d339786cb293fe9ff6c2104fbfe937b67809939a967dd8a945bf3e6dc26f50b93e8b0884f21c926913beaa6fd30521965822e5499bc8f5cfee42aeefea2f2beba7d5697882072be0c10cf77ab5ec2f61e2adfbb01e5af4ad09eba1e58a6208fa2e212aab3eb5b9a218e2bec52e9dcaaa7fb12b8a21ec53ecfacaaa6fb14d659d5f3e9b46a37fb6add5a081243819431566a08527883e28bbf533022b80a002150ce1860334b4bad5dfa2e6cbd2c0032ec8400b80d05ac2a4a6451f766af537b90098274f5af49bf09b191af3f11f5aad0aaab5e67dfa229d820eea7df77efdefbe776f2776e62dc17d6bbb6b6db5ee5300d20671a7747205453e44fa2d73963ba4b17354a768b86f3b47f7fdb77374e6f7f55b7cf5a9bcafd9b3cac34d5bc115f4dea7e4d7dc4a107a433ebf9d2ffc2bfefdfe7e1f7ef7eff717fc7b5fa573d02c8266fbeafbef6b6eda0aa8f07d479f64ef751cc4edabef764d7f93b66b686e995b71b045f65fc10b32c9b190eebb27c0774fa97d156491bbefece4001a375980eebd7bef1cfdf7c5cef4ef2683e8dedf3385d4b181f0ef6f7c824f75bccdce9f799edd834fdf3385801ec9c37bb000e183f8fc32f8943c92c4920c30f1ca3cfd487e8e9c1670031c9e64246d13726203597c243f593cc1ffc03389ecf108f19944f61e7c117cabe2e17d7fbf87857c7fc495cf9abfb7f8a4b9df7b277f08739b9d2ba9c3fb267978d933cfeee9ebd4dcb9692ab8828eee9a7bcdaffe80d4c6411ca2b42865aebf5ad1f88dcdf54b1cda92c9f5bf1102a31188b9692ad8404eb588dd26ed6efa448816f5b3cfbefdce7e67bf55dec7f19546f84df7397e6373f70d88e5ee23e038b6d5d55bee9a8adce1c8f6753c054de4ee5bfcc673d7759d4c47a96b3182a026567404caa6359922d3177d990628e947d15f713ed7efce277dd5a0088232911b9ff495eb8b4d364e62737f770ed58e30db3f7b0ad93e8f4db6f80829f79ffd249ff58f9499d2973b118ff008f38904089490fb7998f94402072dc8fd40843915e423fde4491c723f0f329f3d5bc042eee79152413e7b845690fb79885ac8670f07b690fb79c4b08214f94442051de4fe1d3894e472531bf48db2691fa02227c05b90bb175b0265d3368045eefebe283a71060a3a710610342126b33159f607c920e82c77ff7de08aec913cbc274f720381840aa0736321fedde93c3d5f3ed24fb27d8ffca1691f2842eede622452b927959d76c003b94dd1691bb042b64f4dfb6e76ef248ffa4d0271843e31ef3ba9e3be4ea5e6d9b40d6891fd3d32087741eebe2377f853dc5d43cf8b69d7d0f7b7e6e9997e922ff7376d034d72933cea9327b9a35d8d04b50c93e913f9de20d77fa2890c7384e6fbe249b3f3a06ff1d95d73368d04b74afee0e74fb65f4d158f7b0321f74f9a1d2741a96f5fc7c56b1ee9274f9ed0af641030993ebd661214db0f2fd9ef0d72357b3cbf647fd1c72679b810ff7a2fee1173fbea6cda08acc83d9e2b3efd93e854985c4d98ec66676af688b9ffe752d742741dfd95466a5ab23f93ebdf3ab6d970c85dd775dd8b77eccc256593e6d94db193eeef75c377639b9d86dc759d47b33716d933e9eb54b166b11f50b61d2fcce8b480e76bf616b971e9ab995cf10ff5a13fb65a1288348b240894f4ebdb2633daf24f59b39a1028e977a52e718832cffa17bf620201c17c4bd3605094591e45d37a81799727994030b8498c1610f930affa50859b8c5aff2d1868e549ef829ba0b480bc577daae5511ffec9046a41bdcb8f5c7ef428dca4b680549ef4a009e4829bd4b4804aef32faf0ad0934c24d786801890f13e2262d2da0f055df829ba05a402d6fdf6402c5c801375969017daffa1adce46b01b5bc7fa5c14d680b08f52e1f0337e95a40a3877914dcc4d4024279d2a79840307013550ba8e52f0b37916901a59ef4ab1f4da0156e12b6804c33b809a905343eccbfc04d70b480ba577d69022901fa69b9c04d665a402d5fdfc44d582da09427816f3e7e6a02c9e026de022adfe59500fdb46270931e5a40a487c14020aaf4e537a12d98c7b8094e0b087c1506527d13da32af09d482819ad056cbc3840ffe47ffc5043abd0b066a59f9d4ab7ccaa37c13da526120202020d28f9efcf1c5d7a92ca60f2daf985d59fd29735559fd2aa61095d59f62265159fd28269555563fcafc2aabff64da5456bfc96c4065f5974cfaaaacfed2a44295d54f32cbcaea1f99382aab9f347d5456ff68525865f58b269d55567f68a62aab1f34752aabff338da8ac7ecfa4b1caeaef4c3a5459fdd7fccaeab7a6002aabbf9a462aabdf4d1a5459fdd4a4b4caeaf741fd509f95fac940745adfbebf2575b8d39a48be97453b92e629c43ef9f5abf8d4be257f2075dc26cd5348f7e45f1ddd931fbe489a3637a52a1e5fa6ff658a553cc42647ff99ed2bf049f3fcc9a4e78977b464477f44fd46c427edce317a71fc9894b97b0fdf69f68ff4dd93700fcddf7be40ef13b7c764174f8279fe47f2f76a66a47f7a427e1b3fb9f4c491df63b5308157f64ea54d1ec4c9a9d47f3b427cdf63bd33e353b77e40ff69bfca1fb1b84f8149fe237690ae9467a491ddf83f8438c537edf39fc2a49809ffcbdf89942ec7b668879ccb2f8407cdafce15388906ef4300e6df5d30e5bf3a323eabd8194db086458e2dd7beff5eebdf77a5ee7791dcda5b509a2497f48d7f4d7176dfbb840e9dffd35c257fdd7f4e1ab8e80affaec5cee177fc64f88efa70142104009aad42995084027a725554b36a95c5f387cd5fd34dd37a9e362af6d5758416b2a7264569fdb575d7377cd39668acfeb99431a9729c6b104c5383ad3c6868daf687c25e3ab5a6be9fc2564f212b75becee0782feff03e199e251ec1cd802fa8d5165ed6a0e495921f32b5f596b69b27d11954bca447969c2604363836685e35b5a52a892a27c752f8eb252a1a3d76dadd66f4712bdeedaeab4bdd111fa24f71f416c193b84105ef7b7bbf73640085f5d02f8ea362edf177194f49bd4617d55df6c2f8dbe0ac0ea7e15804e0e0e1b386cf42a5f9fd25fa752524747f3beba2f23767bdf79ddd975b8a7e6ae0555569fd27fd435d786c68666e5239997f91691fa944ee6fb55b463ca44f9ea96bebaafe3d569dbd14849b976ae11e89a2bbacaaebbb7ebeebdd63c8734ae0ccf200251d24ce120ba4a9b793c7b3ec390eec043738fe7eef1dcaed266ea2a693e6bed1cd5be5e94dc415fafdcdfe48ea6e5a681288afda2d8a8ee29b6f4ed69df5a9c2ac7966c5f7495f7e9fb63a0f4bff8f3957d6a5a5fd96f12088bbb9ae790964c9fbe8eff58ea2b105be6ec629d837ec3c058f63f4b385d59e70dcafee74aeea78d73694fe9bd8ed3919a9fd95d43c91f60327dcf3ce27ddff9fb9e66ca43fd3fd349f757d6391d0bba16742ee85ed0c1a08b41f94c6cabe4a4736056a87360a30c3a07869a41e7c05a68d0393019283a074673a3e89c1a740eecb341e7c0ca59e7c05237e81cd8e3a073fc6f0e3a6709cca6657a26b67592a2736056079d031b77d03930140f3a07d632d43930991e740e8ce6faa0737ed039b06f8ace819540e81c582a089d037b2184ef25764f890d95784f9e3c392fee8495785889e77d7b4a1a0a4060c3a7247c17cc468835e043abc42ed70bc42e0df8d01ab1eb070a2268e0f44a3c25de2f6132b646b07b9745b5c2112c8d60e93f62d38f2419ab5f02bfc4ae8aa331a16985af04900f6037a8428a272d97067c6875d8e5f38527aa10247413414b8967c25d894db1e55d2c2afeb2ae8c799995977754abf3d2bb64b0abfc186ce37a97102ee2b76097c5d9575759891a6db14adf16bee092e551232b23dfe5ee825de5b760233e688c094dab7b1276d95cacce3ca663838b81250b3ea594feb315ec023f85e9acb25c56596eb3329acb5e5436a660f05d301bad11e9ef1405bbc247619ac3b9cde6334a9be1a0000436d8c410bb1cb784c9d81a61d11f66a3256217883de7af5cd70623ac81093a500213381ac405187c610a4e7c1c0952dc20044e78030a5a22aeaf5c9d591aceda72318b7bc960652e36a3c5c09616f84c6464f5251b57adf199a46c94e63d7912072a4ca10a14cc9478301b2df1998c64904215b8b0825a155a4ef39e500229f440034b188312efd22acb3d5c81a7022f05de131e0abc137826f0bcf74af091e01bc1e7c427822f041f083efb5d59df7fdf1ff040079ae0c0069af40c7ffadd3de3e2685d0dd8b42e9355eb027deb2ee99e49aa7595f40c5ac5e9f092254ae89356f74cbed665a267f833295b37033dc3fffb681e3e53fe77059de3483fc977055de3ef7f5f15a7c3dd2cfa179f5f99cb669da94cbfe23395cffbeadc304d43bf8be58ef169f9711ffa63ed43416c999306970415ea1b2df222531339111d72186dc0478bbca8bffde6415d446b46a49c880e398cc6bce642f4467d8812d10aeb9a0f51225a6102f09a0bd11b0e0a5bf9cd8392a0350aa34554a86f9f17398c0e3551ca893c88d6ba68e53717a2370ac3e1b56e813e44899a06dd184341316815d62f841daa4435e8c23a582daa42b7c8d66e901daa4435e8c23a58ae0e5da22b6461f6568baad02db2b51b44746f77c812d59a0dba355b648582eaedd66c91150aaab77bbb4396a8d66c501dba4457c8c2ecadb2bc532ecc0e65af44d9c91a94bd83956e90a996bd1665af425dd1153ad99bad9728fb1db236a8766fa56ed9fc79bbc5fad3168d5688ecca92f167bde118445d50ee5f75a8ee89b28b4320914704debace240a8145a078cbfe44d93fc4ae90481c22ea88c05b2d8730f02bea6ad97f283b0876b78fa8b2bcbf41211016d654ba2111860283c25b50f65250f60783c29bd8098541a010080b6bdd90080b61e057d48543b95f88568850e25008129dc01bf811addc50a2505874026b5f5138d4d542d8690884d5b28bb06e4828fbcb8341d8e714deb297c218b4caf24e28fb7f15c7e7d41251455ead2b0251b7efd6ff2d1eecaba5a05050455ead43ddbe5b657941df10ca8de411a104b5609777f3601f118a506952a53ea19414580a4acd13f28a4628301794a20fa6fa825c28b0caf2a20ff605795f0a0ca5e67945de3784e211a104b9dcb2a78abc5a57f4b508a550aa5b760f566bb98d508254445e50ca37d4021bd53ca14f28c3b2a7508a482adc1f4cc51bca8e69621f51c53961ff18b28a638a1154714a1897654a65a8a88432943da596dd3fc650c519c714518b8a10514a0a85a8c4ae94ca904a11ca506d5671407cba6557094a09025342d9536ed95344422a44a9211422a18a2362554a8ad0e996fdc554504acad04805a65253a5602929432a30955a0a9692aaa5a8dc5241294495e53795a094a09450ca2d06ade2f89c5a8ea20ac71a194412894262910d3efbf612b68c371552882c328545e397b06bac91414495e54262910c7c766e6524228746b017b136067d0b768d3752880c8b72c06713a1f05844d6464125f1360aa590b015f236124a1189c62112468a44e3d05844d64641e26d141ac9a1114cac8d2c7c366e09120e4eb8f8b4f93e8b4f1c9e57f1d9b40e87ddd7e0b36b2ed8e5a2305cb405234713ab38b405039ff445f1496134f8a4b17cc6088a814f1a944333062c46cc3363bc60149930729545aff0841b64a18a9c1442b5202211e623a0b1010d6c484250587413228b826a1a889ee8800d5a0cd58886c8da286814c28d21770516b2f08496781b8b1e0d29b8419007a680050963053da109140091a1d6ea5617764fdeaa084215696082034d08b5baf57d7f8e844633275854013301094a3f0ec1e18a254ad0020b14b4bae589de87245850f62f87c8d15076d22dbbc9f4a4a092d058d6c6518d44122a0d95b7d18d54441a2ad54aa211510923d54ab7b268545406916aa55b59342a2a834843a55a4934222a6124a1d250791bdd484595e541a5b236aa918848b0525039341a22dd44134aa9e81bea8a526a2714a2d2d047d47944a79420d4ed13ea6e2a412942b7942e1594aa65ef94a1d2abc0546a2929988b660874894f5de1875fe3229f8c81cf17293e53610dcd1059f1d00923c7b299acdb67b270268bc864e52acb093900021096408421d8d08da86b4e78010d31b0810c6a41b51ba988a2c0890fda20833308dd844a44b02ed0a630811556e8a03522220d7160034f888580e605d549aa652b70c0051ea082120eb4ba45e2d28dc918704ea0c00d45ad6e7d6551f61bb0da1abc60031a94414919248528bcc0890e4e206b754b3c0d99884c412858297432159984504125d8e9768299504225a213d129c8542b159d8a4ea61bca043b159d4c37940976223a05996aa852d1e9768299504225a293a9c824840a2ac14e43262253100a560a8d8a50434441258c0caa998a4c42ded089c82434de4458f653d0c9542b15651f5143d94f441e4ae53c159dc893ca77eb3b096537994edfadd269bab98094740f64826557d2552d5add2fb1baa1b06b893f5135fa3064a707310cd908e36194627c0cd0f420eecaa2791a14ebbb05043e0ad73ccbec2929663d0c5ce9848194880fe4736a9dfef440269309687c25e203b94aef430e2f318e40e02b11e9770be88461d42acb970041243f99a73c61d460dc2a8e09fbc3c0559c923f0c7f18b68a0362128c9acfa9c52204aedc6a2a98eab63294ddc432b442a4225a115a299a51b1d4568258602daa2295104b100b11892588854835b40283c12db095201618cb4d55b4c22a21d58ad04a912a88a5a682a96e2b432c432b442c422c45aa5a65f96da565e5c69252945d55cbbe525b214ab10ca5c054b7d390ca4a5176969a2a28bb8a684508c672cbae12caae2a3aadb4b004ade0140b91aaac2cfaaaa1eca8165876bc02cbfe306415c7542a6bf0f98d291a7c96208e81cf9488bbb2ce18b4ec0f039fefcf326304758d7f92f264d9b2ffc97a65ff3346d0cd0673fba02782097aa9e560885ee8650846e8e50673fba02782097aa911c114bd7c11ccd00b110cd10bbd0cc108bddc702f413f64c2605e8a1ef63533e80506037bd8d7cca017180cec25e8874c18cc4b114cd1cb17c10cbd84412ab7ec1f944204d6c41b2994224a11ca0e8a5fa442f40da5c014657f11ca2e0e6587657f29caee82a9657f09caeeb2a1420646200526c8600ca8957f58765753f1041e90c049089468e1948297f85a0abb7034c182273001c4840326159219e42261210b4770028b9c065a30bf44cb09031bf112add5fb9c5a2942d95dc086b2ffe862e86f7098a2e5736a2d2153846ba6507615174132422da4d12dfb9b433243d95b6488b2c71465c72e172c660d45a656c2b23f0913658fb9655fddb2cfc804658f21ca6ede70d10abb646e33d82513f402bb625c609729837191cbacb9646a2e19980bc7e0989b0bdf5ce690cc900cc6313245b8660ab90832b18c900b2117b021178fff568432747fbec05c0c09c186fe26e422a8a82634145324731b92a9c9c0626e44b50e0390925b14ae008456b7c4f04f991b1bb688c14b032f19b4ba8522ff9409aa4c18f2420a5e6cf841ebfb3386a8c6448b356c600c4f5add82c13e275c04851eb0e0045d30830bcc5bf667c12a8eeb557144f185b2d7b20b812e45d95b82b2cbc44f05658f19ca8e7209ca4e2494dd845d5828a6e652141404cb1e23e402136fd97f287b0abb7050cc908b4b8b102b56718ab2c704b5146537b9d45a6a2a44d9636044d95fc5248a81b510b9bce0969b591413d452e4526ba9e118211798cbad25949de10a28a4108422a19a90100b1bac78c214ae9005a2a0a12017d850e7cac006a05a0796dc304c2826a8a5a8e5083a9842071a286a824bcd2ca244304306886013c3095add3261d70af7a749645f4c662ec8401a3ae0ea18588963821bc040853558d1ead6689fc4670b5117a1076b70438e0468b842ab5be0fd109f2db7ec9e812113b4e04906d4d0ea96885dab9bcfa915929fd705951e14c317452f844a296f2aa95a5edc5cb06ba605bb668a2acb59f0aa5659fe2bd8e5e256595e53c1ae99a014ec5aa1e0191476ad842acb894cd8f562a8845d33b7caf22ff10c6cc4ae991a885dab2011bb5c84d8f5a2a8b2fc49f8855065f993d8f582a8b2fc3fec9a19aa2c7f0fbb56b0caf2efb0eb455065f98ff00b98cb50f61741d95f10651fcabe82657f01cb2e94fd4551f65af65550f6a2ec43d961d9676ed95742d989b2937fbea8659f09ca3e43947d3594ddc52d3b39e218432f6ed963cc84b2833886d04c51f618b2552d7b8c2017b5ecf4cf1841d97f75ab2b5cc5e9d6c5e75b7ca65a159f653e57b7ec34b8dc313f9f4fcc8fadf4892c8865977aaff67add8fbeffc7d61226385adf83a13892a847f9feaf8e4865e9647a550b46512829bf8449aaa5f24b98942d965fc2e46bad7c6a09139b960a77abd6ed19f49730f996ed19f4bb6fd0ef6731517a06fd1513d533e8a7cc53cfa0af62a6f40cfa29a64acfa08f62a67a067d94b9d233e89fccaf67d037995ecfa05f32c19e41bf34c39e419f648a3d83fec81c7b067dd264e919f44753d533e88b664bcfa01f9a2e3d833e68bef40cfa9f09d333e87be6a867d0ef4cb267d0bf26a967d0b766d933e857b3d433e8bb69ea19f47d5868b5892d73f6106c59a73c53e7e75ef5943c32dee61bc8f3dee7d4aaf7becbf3307cd71d7d4de995d8072a8df0122108347a25b6a73c42b30eac6bea770b6804e2254a4b8ce8f39467d36e1e0652e23dd0dbb75f2f06bad705abd1eab0cbe7d4729acf6ee9230c341a8d44b7d11c69e4349f515b6904a784814aafc47ba0d28fb85cfd4545ec729b8be62aabd2cfe1bbe28418287c251e5e42097dd28a62c6770be8c777ad9c1e5623e55d9f99f261ea51b06b7c0fe541ec1a7d09fc1a1e9b9ff1a0e938d35f9525a3311bd365a62cd7577dd1d0f461f6e7b9caf29cc73c463d53085367c5f419b5758e467314475fefb6978cc66c1ce7313a6b5b7bae04527cbecbee28077ca628adebcaaac16789f3f0f9659d5b7de5fa33cc9eb266e659214b5edb7dd959586badb37f71b15cdfd2c05a2f765d9bebbe5c7656713546ebb0cde57adf25cbf547b65c4bef7ae5fab35cef8d595acd55d950c5f150c077ad7ceacb6779d5c36ab43c148cf2aeef4f6f7a95ff87d56891d82562570a76a16017ca7b9ff2e2938fc22e12768dd8056217f8f6c7273dea3becbad835c2ae1276953efcd1dfefbebe8dd953d67c67de9c7965a62d99f665d699d9c5debc34155aae1f2db87d453fc5ac43295a5661d2499dcdaa15b5566b24b39441cba041affc6d0e7e90fd4971349bca08512b6612b27fa9f25708f50854fc603388e3e06ff0a2a2bae4f5aa4dc06035a8b2aacc498d5528aa5015fa46ddbf0996a8dca95fe57e11f45a65b9cd89d31c8b9bdf3c0b1cceb52022dac273a04b319bf9143e3454dd1cbb73b48c678932fdd9b2f2270dcb9f363670a8fecca1d56ce09f2fe00ee19f2ec23f67ca1d48df6f768ed2f7e3ce71fafe98de01d562deacb2624b8b8f2d66cd2e2f2f776c313da7984b5252ba4ef520f92d1f821fbea87a17a40e956ae52fb8329709f1feb2b0bc0ca9838565e6050a1712cafea8212b66d9abfb2a6637ebe51ac9a4d114cdf695a97442a1b49021f842ee28737d217fa0190c3030dd583243ec04f6b5468f329dc052ad3f994e602568f22429b3f73d65beb5e27ed3bf2075984c26cd2d26cd2c77a2f398affc3dd6799d0b528728ae60c81d15fb1330a40775230cf9e277b6c5ec32b98263c0b094fbbb2c52cfc71ad6ae566b473cb98661925cbbeebb0e7be38b9dbdd56977a3eef38863645c8c72bfedaea648d1336f366760606fc2c3a4c3308e32fc18528767d6fc99de83f629f84deeb0ed3d68b1102f34c51f94de83decaf362781f43eef0b02fb931a4bf3c7b2c5247ad326f902169910c684118352eb6b02e489aeb5cbc8099598ded3763c7328f2d85e0b062398c1876045a73e533f58575614d99ce8cf1bad19af8f3466b9a20b9c382a3353f84c923b39b7586f9be8908b9a30c476bbe8ce2684d17721cadd99247e40eab22913bbed1684d9692345a73a5548ed64c994aa335554ea6d19a29a8d3684d1414d4684d540aca68cd934aca684d534a65b4666925355ab3645919ad4952a9466b8e5c5e5ac83c32bbf59951d8173b93664f895c2bf8224c531f795d417c2e916bd7dc776919ad39beb88cd614615e466b860f335a13347fb4e697b1395ad38bc1a3d9659998d19ad785ccd859d366d1c568cd3af362b4a6af66466bd2dcb160ccbc70211383cd8779716951b1aca446310457a3ee5f8833a48e99eeab7f36aeb3c8fd12e81d2c152f7f761672bf037a01bd83adb920a083e81dac1554867fcb9fed84dccfa36fc01dac8dca70d59f5d450eff6c2a727fee1dec152c7f7611723f0f9da37758f93327f7dff48de9cf1bb9bf46df94fe9491fbab420edf8dcaf03f69f2f8e589f25a4e3728144bc58d2c64ff975a0e5634c1f6570c21fb20fbdfb2bf4bcd09d9bfc58a2ab2bf0a9fce82512bb8649636e895bf6907d95f0442f60f9590e9ea2c9f907b759654c8c1e51ce42a748eb2065d73a33b94505019ae83ec4fad05ffac5f7a12342d3eeb8b4fc91fea9b90e46a762e993c368f267cf6a0985fafc41757232557b55673c89849a49247fd924099b657a21876afc4d0ecfc82d4418698f4d73cc77c4f9b41109ff7c917bd27cdb1669c41ea186ba69134994ebe0779806f7af04d3660f83a6e024db85f648d384af259a48e2163f69e45eaf0be27dfa726f94dea08c5a76410f5c11741f173207588e20c8a05486f9d2fe9757c64913a48928666248d9984a90b92e2705d579ae20fcaee76dff93e8bd471314ed9dd8ea6fb17e48e0e532dea0b9212b9bf784176fe8226879156765ed775ee5e471ae6b15fed707dc3f59a1cea9f540b2d5cdbd5af2175d4f64ab30d49809f1d17d32b7c45529b6b21f3d04c7d0ada3eea3eb7e37c3906cd88a3f49e86d441f3b6dec7de77267d2f879106a9037c51b42325bbeeb31ee899760b9bb345e08f7fda5ce772f5ea08760e7c9b41acda313ef8e08f37c81df5c15a9b28877f8eb452a884c20d3a1e9a9da32175789e0c199deb3a9731b5c257fe30485a8341760f43068eb2bb4f2979dfe94df767496fee9fa8b6fd49cafd64ef407e8f60e7a05fff1c3d300a1bfe89a3692a7f762de5cfbea5ec15740712db1b4e57d6f922be5d81f38de6ad4d7d04be8e536a29a9c31b6df6fe1d4d4b87bed98cceee25ef77e011fa64346b96a568100da241a5905942618666fbcabb7196b5ae2c951fae87ed19b27f9792329a9e47a61195263222c5a430fa7242e9cb638347deff48203c8f4ebef740d3dee80e364765f883d6fb5bf61f990d2885a8ac3694e548ab383647772865d032fca9c8fe20b6b8739434e81a7f0f9f9e4f9bfbe1e68ad900dacc208de19fa9cef4e78aee70ff64b97fb6ec50ff34732489c9fd6d3b479983dc41cc01e6b03b78dfefa27350b1346fade36deba3d397a6bd183899b66b4a7f518f72fff496d4511fa39828f3645a5b9af57a2e954fdf6476af4aa459caa06bfc45b39c019501c52cfb7fa6144d658043c8fe960845c8fe9d59cbfe97ca38cb20f0f4942512b27fb78cb334c20e9bcb4ea86bfc2b186826795f3743a43176c5f95c004d3ad171828b344699dc1fcee8cff2fe77ab38233cd2bedbcd9c22fbcf207fa8b91caab916d1187194f7c56eafe1a294bef27dba24dfd1575726531a0199fe2875a7a375daf68eba6b86c85c3bd22a4e2934d2749450f86a0d36481d17573594f4c51b95761d75ef3635c6f61b7a8ef9cff2a919d6b8b1916383c421de106f481d17bc365b57f6be57f6db0ab941eae83a1c3736ea0d6963637e38a48e347859d42167c441862f8a75a49fe92abd73c459327a26df1ae128ee9f65f6de7b0f9fdd8b9fb9240a22a91cfef79d3952e12b1f69e658f3950b65fff0c93f475af6174b28fc66482a7bef5f0af94df7fee5cc6fac90df784e461f8eb04f2a7c9b43acda417ef8e193b88766ef7d2077781f7e934038f9debb1fdef79efe6886e38b396347e67c2f9e46e4fad43c53998e65f7d51c92fab0be88a31cbf9241dcf75ef4ee771ebf0752c78871ca3bde7c2f6ef152a9ec6678c3306c99a75794a40e300a22a95c5fc4b1392a76f27d8e0ffba45a51a878805fbf6222a90c621a5ff9e320572bb3cb9f5942e12c7f1dc81f3c77b814aa5b089957879c1ca81c64599a36070f3b8c3b905fcd6192cff466ddcf21777cd9333d7fe692ef997cebc351d4fa9e10af7b9145044259bf73f739b5fa4012e027d7e781dc51b1c53c907d45499f9a34f7400651b11083134ce4eebbf302deabfb3d903b6cf65ef421fcc251f7ee43e3c5e5a545f5c2b2f2927a7979514941419d4c2f2fa59234225f4631045f5e3eaf7b79b92f448cbac7e74f6776d75cdca7cdd46f5e72a3649d4ffdf17ce8cff5a13fdd47a95085d832ee7d775f491d436851f6be923abc109f3eb01cbe354fba83b26b4bfe207a510e1f344fcfa0fdd366f2db6fc627f1197ef722f99d79b3f0157971a479897c651f88f2ac44d93ef99e7db112f94df7f6ab167e13befd9af39b2f8befe43e69f6d4ac837c9b49ace2413ef824f8e2ebb8355ff2b845fefea45b54221d94f433c863eb8b38a5fd7293f6275bece47e934e60dfbad88716b5a250594c841665ebab9ba33f5e6d079c923465562091f6104d8b14486c1b65ed89ac436e1a1270596c1a2525757cb65cff4c757f9679e537f63f7c0ea1c9f4db574468f267e3c3f13da81300bf1952d3a14ec2ffcc1ecf3a9cc0be15621f9a56142a1e367f6ff387553c3e10f7d01d14085a3d5c3b7c96a9543b3e3f9fdf8d11ff93666bf3bcd6884074a7a0e2fa8d91485fa4a6679154495f16495e16495d1649378b249b4552cd624a0a4a0a0a25e5644249299524949411398a282921f8791d4a0a4a8acce8880fb99f521a04118797b971be96e333752a9744419fc9b7a2f0ff71ca23b6cc595228ca0fb70d1b1a199a2a47efb1d514457c8eb9beb5e79031dbafafe31828fded079a9640bc7fcdce302f45323465cabfe56fa5df9c63f6307b8ef24cd15c9b65ff9695c5d4523b0291ba6d202eaa2ceffd2fdfea6990e20a2a2b532d2b1a9b25b6e2d86ff37e67eee8bff8a4b0af65bf9a4b98e068d94fa58ce4fb4dfe507e65c5a9a9d4bd5f23954aa552293438d15fc8173b5121a05bf65d4d6b29515f09fbaebadf5975b11016676ce3950762531694e7f7d9b2ffe8294aea1002a7923a7634ec6bd59cfa9e44b6dfe40f5fb615f70be9f16c71929aed9facdff0b87f5ffd3e27b50a33d0f24dee2acc00cb952cc04cb6d88912f59d1cc2527208fa7ab59ad6ee437f68f52c1c51d2b74b2c86d9254c725af661b675ef35dbbd7ac0e2f48b16c36ccb7ef714727d1e9b5cf111527662fffcc9677ff7eb387d65eb437fdc5d0a66c0e5f3a3c20cb709945d051a86f2f9354d0a29a853af020d4259e6b4afec385f7916bef2fba7c5d6565cb7f0957fce9a45f9ab7fd6dc37fae7b5fe976baddfe18a2b91affc85d4b7b8e2ce8ac35522bfe96e524716a7a00dd5aca06209ec1573a209a27b6f585cf18dba6bba2975f75aabb596bee1e544504cf68227be219278434f37a5eefe322d3a54e4c49c68a289d80b846431279a984901c53744126fe8e93acffbbe0f04c1b0e7fb3ccffb3e10045fa645878a9c6f4429ad2ff02a54a7a8b4ec5feb9090ad50647f5b5f70a9e86ad739edaeabb2ecdf4da9bbd75aadb5dd94ba7badd55aebee5a782ed725b6c2b2bfadaf9bbb5b64ffab45adb509af7a9ed3f63ca2ec5f545d0a1fcafe6e85db6a4353b814bebab95ff1d5ef73dadfe7336b2d8e92bee1ba131ee4317f79be24fb7b6f70d9e72fc8fe9f3f01561074da205894fd6b565041450d0bdcad660515445a6441bbf752d151d1d53c2c3c5cf6f76e5fedb322fb7f548044a016d91fcc22ac61e8b4c39096fdbb2975f75aabb5b6eb3aaf092f96e90b2895651aa34ed01995824221565174daa2088e60d9bf9b5277afd5f33c1ce510df2d0fc9657fb0891ad0580ce1ab24fa0d3dbe1a47a73d8ee0c896fdbb2975f75aabb5f6d67b9df6bddff7e1285b7ce50f923a3e1c719436421cd93f2481a0d9461c71944feaf0175bc61147a9e32bffd17fac24e9b449121ca5bac6bf512511d0adafb2ca14949dabb9f2b3af4b8f10c313257d6a82cfb3307057896a4975d5f38f9e001ce90b4afaf553aef2ab9fa0a4d5bba6ff7a410525edff68bfe7fd5dedbfb6dfdefe4a5550aae0f346aa82ef033faf03ef072c454149dfabbd232bd45a6badb87320b68cabecaf4fa910280ae809caf6151566b76a8317145ad0193851737f9f643045d73d35bb6b3c1488244b1a91a3185e0a7e27d3bd5eea1a7b5b25dbb7dfd6be8d7d1bd65a6bad4db6f7965d63af8abdf75e7cde7b5fa7deaf8e705d772daed556ef68e7b46b6effeafefd7cffbeccfdeffe78cb7cfddecfb7bb95d648204cd9eb1ca67cbbaeebbaee756af791608a4c6b425064d22b532736bb4cf6baa6be48295de927baa605593e3f21277068eb5ce54a93eb0e5acbf4c5ea14bba7baa63ec5a7a73a87fdfa2b9d23099da38aaf73383ef265faf54f2fd76feff39bc627ad22a75a3e45f3e52abac6eb1cf42f14626045a6b56c5f2489a2db6a4d5aeb9af6dca451d7d427bba6fed835f5efc562530f944d135a92ef5322bf396916727d8af39bfbf569167e03e6faa51439579a132af299f2327bfb0d98cf319f14974db969163a8729d71773d73c6915190d356328431635fffaa24d0e33d4f06400831667e04191d08520682ddf17e9483550f653279d03095d92a993aee9cf818426a16bfa690cbaa63f06f9e25ae740d24bc8dd35f62d3eed3712b2c5b44663656753eea735ba43e77e5a05167f50d25a3ecbac813285e2e8c42008cdea5cbff41b9d180cf5aa737d14dd41270653b48ccef59bdee8c4e008bdea7cbe64ba83dcf934e5b3ccf5a7d29510883d81b2fef99d36db6f5a0c84b2fdcffffbced2f65bfb2d632be062e7b6240b59a6c8528524cbb27c97121812c3585ae4f7ff2db11218ecf221515e2cdf07fcd3f7b7984c5e143d34939e448d3f3abd0f983279b534a9dee503d6fbe2f7a356549e4755269477f9a0bebe0ff8a31593479edea77c158ec2bdf701bfb2d8fba36712b654b08b6584a3f8dee7beb7625285ef43fe882505bb7c507e34a2eefb94288f82a3288d46f07dca479950ddfb94380a8a5b4c258c2a711424fcbea23fc225896570143ee28b388a10bb7cc00f5b1c45877d2e8ea287665b71148e475f519fd1d2911706d1d61e5c4a60585ad5be8b49d7aa7f0446098ce78456c52e26a3567d584acb1ea1f6da772981a918c6d2aadfffd7622530f7612c2d96da7de1382a51a6ef6ff16eedbe701c99caef4f5dd0abdd178ee5fba0a0ae2782b5fbc2d1f8fda5cbf540f27d502fb6d4ee1bdf07e543272eaa95f7b15f3f95c24a60baaa5ac14a60eaf73e28dd8658ab85e57aa0487a1fd493ef6212b6545809cc93274f5a2c2b29ec82b1b454b0cbe77ae07feff2113f7c970ff9e3bb7c483f2a4d29ef83f2a877f9747f3d5024492594f741fde95d3edf5f0f1449d2e97d505f7a974ff8f75d3e3ea307dfe553bef82e1fd393eff249f9d2fba09ef42e9fd2d777f99cbe7b978ffdf07d50fe4b3165fc863f8a69fd067d94f97ec3ff647e7e83bec96cf11bfe2573f41bf44b33e537fc4966e937e88f4c94dff0274d94dfa03f9aa5dff017cd94dfa01f9aa3dff007cd16bf416ff87be6fb0dfa9d69fd86ff3565fcc60dfad56cbfe1efa3a2201844eb377e037e3fca6fc4ef4fb5f88ddf94df2fb3a2e91c341f3969598e46f78a22087a9ebb357d358f9430cf91233ffc7084f447c83f72c73f12fe91ef8fdcef9e07cc932742c8267c5afb495872099f9e1372c5f5cf4c3f094b26bd8e97247c3ef923129f2d233e53e18b213e51df8365f75e87cff1be9b47609e3c79922f3e93b0648bcf242cb9e2b37dd53fc47342f63fadaffa7bbaec38494aa658c644ad4cfc8ae3f2fd02305271eaf7d3a08a03f3fd94567168f8fd3a1507fc7e232ace8befa7b18aa3fa7e3a54715a48df8fa3e28cbedf47c531bf9fc22acef8fd7456716450df6f53714edfdf808a63fa7efaaa3833df4f852a4ef9fdfdab8a93fa7e212a4eccf727517152be9fca2a0efe7eb149167c7e99e555cc180c4413e37378141363a018fc2ebe64ceac7ee6594f9a66cda37c0e2f9a3218c885f932ff992f30500dcad3bc67aa30d0cc8b87f19dd922f3316ffe355d3090ea5dde4d180c23a756a80488549946a392734c191a919911208000a316003038201a0e66a12688b17b14000d67a07e6c581d4a931c4e521619630c00000200000000080640008067028526d87d3003aa8b4b259815b58911c276db056876be850021e5ac74ec6834d00478405a8cfbae29ca03c701a2c5a6d634caf5e2d22fea0b798f4bbac737bc0d2e703f152f2e8cb0282143c90f4e66f6959bd80e9b9322eba20fca4549b3d31b38813b156e59137b4a138fb65824365f8261fad24a84beaa6049a55c429ead482a7349b281601c00f2f8e7c6582fc91ecdcdb4d92144c63cdeccf99f4e9af6d99d8f097f1878c560d6cbcbc2c8d6bd8e8107b85bf1b4bbfc3a7c83146d8bf3e572620d98aa63cad7db069d6b8c7f3934d48b6e5664c78b397e62e498450d9fb8dd236aab768a9f6c9debc23a6199a0f2af42981c9be07d79549646b0b570a98f68b61b32d616c46bcd21ad6b672fc2419b128816299cac24777590a1fce7789fe961720238005cc9506c1475386ef59726884994ac72ef8316b3e3ea466bbe2ea67d93ab7c810a59baf8f31fa87e1b23c8357614500109cc08f5ea50b8d05336f21760416168edc5d31b32232123cd96c3665dee4af06cb60f14f94551e89079910fbafb366f4a28802c46b9d68fe43b3f3c9a7e72b620a94fc2065ec124922f76898fc9b198887014dbb4a647ad7b044244a4b335a5634c79e516cfd99c7d0d1afbe6cf3df253a651a1a5918e5a6a34c948cd7aadf5c0da9ec4587f2bed70e5991331e9684c931a541250a183ff2b2c7f2a3f8312d12fedfc959415277bf7d58b0e772ae8a1340ff4f9604646f090249e7d6668abe5a2a0a90f103da0683d0615e0f0265ecb9b458cb114ff10968353cfadf705e754154e51b62cbf628c7831a219f02002c6c2cd1659dccdfbcb98533c73e9a0c1757c16ae3fcb1f9dc8d8f375759501630968ce0f811b78f5e3b80d0c3ce4f5f46a4ff6ab105213c6321537ed346a1967af631915b9e81ec219789de30d72b1e284d054efe5768e51baf0a54aadc74849f45afdfeb1304b2b8dafae876ed682fac2746b92e9105e4249fc0ecb6b69a620d68e1628bc3795d79fa588710a016c1160f63f1fea52a92bda523b25374f650d51ce536cf5a3c37d0a46c0f4f52cdc9ca9ed32bde295ca65b0b131feab7f8e233f9bac7ec48cb97c8306ab67b2150358a5b27240d283214c6250c33d45729bf56c7da8b8f9b114e3f067218337eed27cfcbde3669cf5187803e37a4ddf88677d536f0066a7fa46de98adfed36e24f7bc7a8ac04088d0b16356fa79621af90b1e923bd59de17f2f2d71463207a347e85547fd67def8eeabd123482f9bce53e52e50a5543b3d8fbe1b399d5301c896eabf91ec453014606756c683e100a3ba01d39fc64a1c0eaf7f1f966c687351030afcbdf741a3879646d041a932d747e6b042c267cc83b3caad0e383bd4cf67125c21d59f3f5c39a58edcf1a564102094d2fe3ce526c7b30414892d289d56bc4a8110674682be9a27aceff6ae7c6281cee439818ca4bcbc7596136a871c3cbf24f2912f0e7b9c810c768aace08a3f117970dc488f02fb34b523c6e3eada53cc5952a844b50e720b7e89aa46e173aaaa3c8d2fd615e0d2d26155e0268f449c4feadbb56705fe0c2a5dc179410cc6ad2f80e51262ebdb9443d4b24da38f4c6b0c1229a35aebdc115549bdef1c081ea9102b46168043674fc3bc765b501fc4adfb68395e2b85df11b25f5c9b5e699f79451397589d5a677578feb074fcfd438dc81185f21c5039831a60d35bbb12b0cb11f563852ff3ea0902971d1f660668877a27ea76f614bae00c73633a26fb9c6dc8c26051cc64e1025dcd412a67a5b61f14cd670fa747e9b066a30f95e64a463a7473096b57a4adbc1c617b40a380dee49740c6dbca71db6c6c0bafdd090f6863971becd97217028c06bf7c68de6ca639053d74a8aee4c0e6e3dd2b5723c2f1b7705538359b2cc17745b57a9451498b395a4d2c318f3932f9d6886c818b9aaefdf4e01a6ac28c19f96e115decca5fc545c36840ecdc00c3e075599aa3672819260f6a6ee4052881e24f1d1be270f2014474adfb60956995a1f0b1fdfca06673a83db2e6c3ff9b94a2b082dceba42337cf2ae151fd51ec3dd525e51cfd3fd4b563c54660f18e57c3d6213f5a1f93590f0cd4a75cf92981f3bcf51c59f45ce4a44e42320e4f553aa145369a50d9e54cc2077fc4d5afa67425685edc80baba3ff60f8a7ae84c22e7fdca009f487e0de74188f681518fa599ac5423f15548a21eef4741122bacd122b06b9f60c308c7233236f75a400663be7a15616288e608e4cfaaeb75f85bb8288c8dc2af0842065e37ad28a9df184990ac2856cc2e0ae4556478a42292d2b4e45bfb5391027b4e13fe9dde0dca7ccfb3c196e54f958157b6700a5864cdd68695dd1569135656248e9fce601d322858b9c28601a88cd4e4592c57082f086cfc1bb59fc08ce4970e0d9304b9200338f6125e6b3d2ba48321e22527267e055f69338d3f481cf1c3a2cc3d366f7707c39fbd9659df11e784c3d37b3b97f1aef8c48e90f22c0b26e6bf721ea8493047fb87fd9396d753ee5251ff039ed18a55a4c20c51fba36cf901f82f1f48155d968faf3850e222c2d6118e28d97d4581701b4872f48768f13297299c79869ff47d49be348ce58403817b0b1404a7b37d6b151272e220ecb237547d9e7213469818d17a1fecae3708ef4969ae9da8df85865f459c3d0814190b6bbdb3e55956ecb735276d99b3ac9d4b01ce34137fad7fc29eb12056e19858db5773803a5dc916c46409d8226415cbb2e071f16c1834659932470e7bd3ecf74abdeaaafa2ae14c62a5265825e34f651e51c92ea9a2a5704b315f3d21bb4c116120e632b40f9fa46196c3113b2d35f706a9c5b5e7bc50f8dafd38f240a449e751010eedb74c0b553b985fdf3a6ec86b33f391e551a066516b9f2db165100b258d3a0b736311c70ca29db342a13af839e44bc89b273ae2adbd47db61af804a3d77987aa7f58d1ebae35ba42ba10aadd56eeb5e5589c6e081678ad50f49eb104114334e8dab81f71312ffbe57cc969f1900e2b704d61d08ee0a29c209fcf170f4405af48c4d30b45fde68fc6ac240f19cd619db0ebefd4f2293be3cc55b10a2ec85f46cc89e06bd4476ca4cfb5232331df2ab5f759ce58a5c74e1e5578bae4b78a5e5c4d2bb1894d46a0aed9b587d1aea4c9b9055d6bb6584890babb9c452bc28b4b78d6a7426f2c8e57ad0828f72039baae1cc21b6ca3456ca62b3fb4ea11d09aad6f1d0fa8dce872818e477e5275540295a22f21f2446197ae46dd9518ecfb387565e82e2edbb312742fece3665dd10e7ab5373466922cf141baa9eb495b7b64c196fe4c2cf208ad04ef4b3a8011810377827811eb197755cd0b54ae21875bd1799a14e1c36f7ffde87855f3359fbb761240d64c5002cd7b407076a90196e3731fcfcd184deba0558ffa94f7d3443e50370aa6f57a8dceb8f6120d808eafedb49af35eb180631e189c780df316e624688069fdf4fb56093deaad1f6a54e8160da1afeba56b386addd8edeb705f0d141fed7a11fbfdd5c23b9480b35afc212497a4d45c0370dc131f4c86e3945ef184cada7d1cdbefef60dcbc282985288801fa35e1e37cb489108256161d3ece5f3b3514da70595516bc95dc2ec9ba4a671b4f27f5c2809cae1c6f7736dab9d4e44cfae9fccef3517c63bb6d107a314bb1fb637dc8e9e7c67b1c45c0c1a6686b18778f1455ad0f71a4f6c6ef06b01e1da9e1a87765ba8cfda79510b380c18dc73884af7f73aba45e54a0c80f0085b08278d9b6c2b9c0ff8f929375e6d490f7165157adc622dfa2fee8abbf2616990741a021e6818e83b0661e891ac0978f14360e65ee16b332db38f760671933fbc3752f2024121d5f66308a21a849996be5070a872648417bb8bc5817e907e28235f53b06c2517f9d0e253d4675d415ea0837bdfc70f5f10accc067683c402c0d3edca7e7ef4ebe78cd600a22c1da97ab6b906d420d241aa6c9313cc0252c093dffa61452fc12f0681ce0f898260f1bf14761d2825a09da24a19bdb6c3a275300965ad745ca8c8f627d11809f868cb5ba0ab8436b0bfce80e3acef153f74e0899def26ff200fd3a8ef35e8c8c8432c900efa0be6c00097b688e438155d380c482f12caa726b302fa401ea0e66133cbf264f00e45b12e6ed90099d34d120ff43555c2610f839c404ddce8e8818165410f1d967a79db61db6754702c053345f363e9113af3f1095faf6debfb05cc13061a34e2fa8687c3c8ad1c0a9c3736d7f01adda9118af5fb09de9d8047c44e1be9c105a014b4bf57be3ed4cbfad0395abd671733c3728087849b59188e166dd930326807d4dde9d7481a62549da44ffc1db042ed551e078507590929db65d1a311e49fb3adaccfee30b97daa7b2081d3010824e478fe4967b9d1f27513686842e035b1cd5da17c1e3b4b0852b0627ff2b9e210b189fd66e0fdf7e5e9671430187a716fdd98e54c4c368f46130bad68b4b709f40872a70b83923d08e65a509ce2a9d1fc8cd967b81808d88e27ca4fc2a9b8b996b04f8dfee29c99534ded9e3144f385ebcfb547fc6344c1eb3d49b90cfffe286a99150e7c947fd0c1d328567364d44b3d0747dc217ce91972eeb9671d7228c176c20215e51c48712120b67456c28d6f5e475e9062737631614e461f9e411720e7f6408141d496030b8e36413150f03ce1f15897fe66e827a98cae06ed41ef9d85ccd27485b9856c8d95301018974b4c760c29054f2220aef4c1ff579161085984b9b334fb2dd6e7a01413fe207380ae6d72b4de180150e1bcc97a9ce6b1c5fa183bf07f0a259905bb821ef01850626a6157a67797062ee5bec4f3ee645a92f4e8fde81f4fa7e4c5a0a0328600476711814de63a750b29826be89e7b6fa2befe40798671b4b64f472d69192a1fc65149d93277701db1f0dc9381dcbaf8cf378ce2ed293b1e68cf79eea7bc2b329f15fc52f68cd32a2fc98f44dac66256ab6cc0fd3665c7f17b1feb2df13f6e968c7f1d6c90347cba5a9e56e9ffd061395b25f55fd062984d096064eeb98dbb2151acd47bab6429075672516b6fb9f4ea966d1818ca0ecf96e636ca4efcac255a91dae09f168f25ac8b891d28fe4c4b35c99489fcb4870cd823102333386aba9fa09457e5728c69ccdc41b87eec90c32c035ac828fc46d6c8926700adabca06f0104ed1e9a4144ddc364426a838ead61396f43de98dbf8f519d335edb055e95d4e86f98f16bb50db2eb3f11fe0c2a7fb34d4cc744355ea94d40f26525dcfa3f12b31b4b98d3bf5cf77e4b4b1cca8d012516dd88584e04393b2bdfd47bfab611e040f8b3392e75ff5c0a24fe2d5b811baeb598311f65cb59956251a5ecb3ad94a7872b33087a41f0fae76ceb5b6afd0b5467a3bb4caa9fce86186bdf73f7ec6c54a29270b8a4a92a1f1b9d08ce0a9dbb6757b369384212df6c4837d23aadfb85b78508e6c01ef8b2ba1df30bbc3155095d35cf51b76f1d96a946a416979a3e8759d24913b1a0947c084a4b5b0635d2ee232b69a5ef932f1cdf8f2e4ef68ebe71a17cb93f11b0f0bc97378ee0ed5f7d3550ce2b159fd8e12051fd48ebd400ffe56661b07e561496efdf7b678b4c4e7fd53c3602a3366b1f52457e800d1d2921de43f90fa5d3027f5fedfe54afe5b2f7277ffc7aa1ea532956bc8ec7914f548eeeb431e1b5b065a8d54607f30ed55022464c241af518ff8f4be73adf4d5b959e8662d55c5b1a33f8c40f8d1e94258918a8cad2fdfbfe677f7c83c7c29ddfed3b7ce79ddcedef794ccf2c07061d1a8ed69fc77df95ceff09c773c3f87fcc3ecbf8a2cffc346a37599e57432f9554b1109e4b08c5aabf6f097cf9aafb547c742f9281cdd12b147bca3bdeef540f889fba2a37751f63676931276009168797669d04eccbee846121a09b5b6c520ce50014a20b8fbf5407cc3d3b5bebdff5feefbefefb77bfcf7f371bde372fa7995b2eb6e81b516a8661bef39593228912d7691486047b7a03cfea5dd1e96d2a02f19b790f80e138f30cb1428cceb7d3f8b7ca95884923e88141106f04f7b451a9c54970142b0c737e1c000505262fbf6f390547a4ef54801e991b703f15bce49818098d68108d2729daa7657ea66aa5d5b0151d5484450a213a3c7308452fea5a597a7a18bbdf7e9d5e1a6634541d55eb8370fac1ecf673ee5aacb98ea60eab98cf540273e2d5917670fc543c9b1b16c6bf9adb7ad2697d53ac3b0f7bdddf37a663ca893c824a3493e9c2a6b902799d60f09fb754cf243897b1c2b345a6f0270dbfab704d8fe1b9efcb6ddef9b2092d7a5b330cd1e6d1e000d0eb224582013953427e2ffbb502786a7e22a2b250626ab6a5990bf44118e96cffb99a470d2f2942888c2fef8db677cad4fd3b39f31ff3ce76f720df93f1efb943db2e3f66bda10bb13c85a749aa9f629742b2494dd76d4ba4f5c29158862850ac13a612eb2dab37081ecdc9ffffd9bcf754c3ccc3ffdb6e7f4ce67dcdf9e4f20fcb6d3a0efd1b6ef9508716ce05745aa520e75bc6cab69d7fbe39eaeae8a458083d923d29e882c6db664813e41fe77f421241c00d2f8fc014daa90c7ab2277d0215ccdc1378203b647571d59620b98503ff22283963c2680816626b991d8302a3c87a0b20b41551d539361f142830198a203fad0b033360d557d41e32df491d30fc282c95cf5423a609861e5fed3ea1226d0146faa9d3aa2cb6e90573994b960d7c803aac1379997e900f4116cc2f9c2b732cfe5165b3defdf5eb71b050ec92425c155a9c5e9b745435da44fe5284f01a5e2274552a459340e0c738437862fad3059ec5603cfacf07c6d932d6d90204353b5a889a1a5e49dbe1b4b8f1b17f14c22d5825ea32498053b6d136f221e409a59d4902c463fab695951e8392d1b6766d6896e6e7888f533afbacdca2ebebbaebc2f4bd1e7c6d497d1e07bf8743a702ffeb22ef19e6167449d33d14c7b062c1edbdc4b84fb54a44afcded3efe7755f198f99f48b397acfe88da4512b3f99fdaaacc16922d4d107a9fd8736ddac315a763c0130903da190ad59119d028569c3795de4ca2ff129c0323f8a92ec3ecbeb37e6207d2144f407f285543f9ad8be406730e7d417949e7b61a470b87b643a79e1ddd9fb5db6db8dd97df0ee3b696285779bfef1b0c25669fad05be30c0bf0116d12444a30d8b3a072ab48aa4e7515c3f03f4c80e9f21fdbfad5ea7ada76e8d1b62b65533a038da3812b69357fb0e4561abc98b3aa10cdfe282c9546fe023e0aed61d0130a98c215502afc7fbffb079400449d8591dc2f6b98692f50267a04484115cc203a7cdbd0a3ed420f5dd245afd192d09415ea474714af34facab5614727e7f9317e3d5fd23eb5d1cdc4643a89909c911fc9a896ad7ca0eeba00f9afe0645350553c11fc390cddeae021ae985a73aee991b46ffbba0a68797829211b6217d0ca8717f4b15ee1bdc27ac5f55eeec5c3b9cf01add0474313c187fecb582aea49edd5a15b9f98e9c9b5f45a3397203242b03aa3dea45458dbbfbf6d4af508331c57e6baac8af71ce1320870cfbc0f7784c0a6eda9323b8bb6054bf00204f4506f839da7b6c8b665377a0c91c0c1611c0219419cf7dbbc9b075ddc7606b4cfb25416566f44f137e8028f37882bf9913848cc75afccf411ac58cd72d9f319e5e652e1d3fefdb78a4d00e2dac6298c5ba6a0ae62107029e526da3f271c5cb885156e03bb102c3a5e0316b82032eaf3895d12e6661da2c5067e830eb0463f647b25712bbde29cf184616d0dddf7e0dc92ab86344fef4684ec54827913dca313be5c7d61e1f3a0feb1bd7a4074a31f3ea7987384a867da6c7b72e47ff9ebb861b375b294cb2453dce955595f9ad31802629e18393c92eb992e39758efb48990eed635a73a90cf4cc411f1fa6e887c19d6044ae016c86395f3397a52a55d45f88685e14b2ed41c743a91e3a52b0c36c3c9cfb46f608a28f4904bfda09eb8da3bfca34e7503ace9ed10133c1afecdd512b3435aec04345b0038c54662755093b9f0661800a45693ed99b8474ee21a061b508e182b5cce428bcf39fd7dfbf51865e540360ed48e86687d8656dfefac52007029b041ccff46e810f4b98bb37b15286fff53e267ef0b859f04da0f9f16488acf5d486ee16f9f5f9b07cdbc447110787935b8cf7e32a0629bfcd52d96e3ec3247441cd30f8d0ec6ca031546222e223eeec28c005e136961264f9498bdefb475f17d0a29679af2cf6eeb5f27b6de995d5abd5353f76ad37aa7276e9c227aff4bf80c7d1d72e55e5b3d7d50e7bf5464b7daceffecaeb85bd17bb5776afec5edf0a6f5e8f75ea96a51a1b0dbe9a76360bc6f622068f078a009d8e0250710c53d2584b7798304b2b0c94e546069a7b24dddf7b548aa3933fc9cfb795c7bd7c14ba1a4dd606cd728d47f838ac398ce3bdfc15d0a5e15fe9fa53290f7206190378b4deeb6675b660e4958eaab434021194d9bc0fe4624103bc980ae402233bb3fba7104f74bad534a13986946da856d9206ce0752b084b55ccaa680b5e78e202630e359f14c533903e6af64c27f23f669b129b99e1eca6e8571e9022f2b9c118f6ba35bfdf95098987c92f7036a215a3c8c0e2b9cb0e7b233be79d0d891f1270467ac135a4f52bd09d8b3683430b86a71a4d5af93200f145c908c3cbb61ea63192c7944f08e007c8ba9a27e0886a32c0c9128041e423b41322fbd78f3de81e8adeb8633c1b9260a119e5d5802056bf35cb0e66811b344c14598606ec2450f53939b15cf5ce064d33d39db164764d4ba3a1fcd827fc18d8ca1144e75b25134bc5673edcd6b7681c4d9aefc0ebb47665ac5eb1f40618ceb6d9585bb5330dbb8801220ad8b6da82f3ac932fa878b6650671b00724f1cecbb04bd424f1b83ae215a4916428994db5d52eb3545eb7bb15e123fb02e9d1a1aa4fdb047c3289c0a08a9311b85cd4d44e3a205d57af4f5220cc64102f965d4afcd66298e60208175f6a3fc38ebe1e1d87e41fa444f12c0e8ddd62e9ffd30671cc82520b7b292bbe4d4998b40234334ff50162ef849232bb44ae2d1c3aeb4da65ab8b02066156306a4886ada215bcfae5860f9886be19ece471ba7cd3c5ad3c2430ce19bca18d020f4018107e87f8a707203400bde987d27f4ffeb39d77f06cfb65e406684f0451d80399d9ce3fe22ab840e300e49ca20fb78a062a8de4dd37ce004b8a6563cd7d1694142e8dfe7d04ad4f96afffea287fd87e84905e80ff0ea75a3f6df780d7124215181bbb76edc0940de4a9cb08f21072345e8666b9537060511fe83cec5a787563db992ffd5409cbf431b6b8076529d144d78e2f27eaa710ea681de0c0df0e46fcc00680a7def2d68c4a31ae53f3b701e1d0de7213bd0f5b96702b380070d064be39e1d58d92cfd8d12f3e76b7cfe11e6790d2c9ca321e98892dc73fea08d8e027f4697db500bd6926433eb2d626ef98e0123207d117f3d64d58c98a916975de53b491a48b7fdc1509ed08da50b1dcadf8cde53babf6569c7407fda08cd86456806396af5be8fb158bc23a3779d11071e16d752213e1d968fc2da058e71b5319eef9492a36ba1e6c3416411179084551294290911f2e17eeaf0a3778424a6a4f98adf59a61ea855e408a63f882e86a3cd860b0a9d7c70fbaf0e50cee3fcb5ceedd93a3c005d6571b9f755b520090046c8b38071602c7259ed00f466d93c6a24f7bd1fa3d6164e054f59c4aa08c4c2b48b8eaa085c9d5b5cab47ebe303770a0010ae1c0b0d3113c47488c5ddcf33083ad783d074a80318782b43ed26d1a516e95dd4fa8a5f4f866807cdc6a21b690e6ae0ecd6683756ca67fa027cdfb0d70651b02d959f3e5cf7df7aab386cc30e366e9f6e68b0bb313e65563697391adad89d1a6747c535f683bbf55c91be1c997ffd95c6c99930ec77dad9f6e741008adae5fc67f60185f4b76702e262b6f5855aecace3fa35ec56a50617563a89f0c2ee2cb5cdb6263292afdfbd34a5558719093667576e9f1ee74492275ff6c1127d470fb7b3a3789a03f76515d751dccad187407b77fd2c1894ad0982e947167ecc19386636b7f106e6dcdfc07c26e7b9dfb61919fb00d686c67602f08b4e75b25ec18f6247b9a97ea3e4898761da35d466201ed8c6351409ef81912d8e3955f1b7d3b5c2e62af92c5250017f4866f89ba5a1be716150a5366cab2065509e4a7d07e003e53644e059c116620988f62a63837cb5d40fb8e445e49bc94259187f633d21cd9fa955515c24eea04f3ba899490f2bbeef47ee9399e7216b026e5708f97cb684337799c10fc76c8109aefcafbc9febf5a43dd27b8f08994addc4e24e79e8aeee5e8394662a8417d7700822287c84f3c7e432c867be717157833d9619e00518e0c04f383c874b74dbd65bbe4670c97dab1b59203a50c0f15761043e15bd9158b61a5fa004c4afd73c5ad44bfb5aef29f6b538161e0e5c1cfe9abd410804df118ca6e0218ed73a5717c4c18325e531c7e247d41371f1d5acc3d88ad7ce4579dec480c3c72c6e5e97bd569a4627e2f6a00af88c2b5480026f3520c6da5255b08b54ebc15e4fd562c3105346ae313db00bf2e04ad16bc7805375915a86b34b574af8fcac0e94a874f1573a5d46a58cd5d55d41360a60fc1335f806e6f1c2fc93800415d090fd62bbf68b19a8f49c7d4ef54e76d73b59e13b842e7a222c95117e186fda6e9c2da462817981c7bbe09cb053c491a0bb405bfc5d28635f010e82209c34a700fcf05a16c172cf5fe57c6d568ad2b5bd6f80e24b3ee8f0b1db82000ad02ee0fea92116dc556f2de48e9ecbc618532180cf3384558088c1af2bf641e7cc07d7667bb80206406ef720315486aed330b64147f54c2428cf15b7c3c23f0d744495e91cd04860cb923d9e90c830eab3065128b013443b5037f400bd12739aff66786d99da39a940a9e2b5dc869d43d88ee5d3779ef646eda67afa6e2bbd3c56f29d114f536547a47ab4c93b4cd93fb4459fcf64379b057b0b20e6ac4cc56912529ade71c4e748037a5f3deda7124f7877527704ea780919b243f4254cf43be7feee74a77ad96e71f133abc1a928fa0ec10e895f0b29ad853abcbced3caaf8dfe7d394495ee750c1ad5cc7efe46456ae525f074bed0ab3ce4f0e91b01f9d4e9b4b62269852b80d032ac601130f359366a527c7aa0317a263d9612196da6e8048739f90566853e5cc2fb56544b12df2766227edb7298edf3adaf54b59ab68d2ff75010986f9132d8593374e4ba444fdb042072207c9d131958113d5a1ae35dc00fba40b569d2d7729231852613f118c2cc03732c20a4b57c5f41e03b685e26034e811e6ee8f06b3526285c6429bcb78914e398b64984e8903302adaf6df59fad6da926c063c3fcc6ef97852c38192c64a55517209d682623e4139a24d824e519cec4d2b6577b1eae844b3912fb98f51dcb209df9ea9972979c4ce82856d38ef916555067e58b438490a64e346b44ec9f8a49e140c7449cdce6568e0e12783d104ac2d003ac3404a3c2ddfa293fbde930795f84786714bd2b7b22441281233061d2493d84c586a30ee9c4ec4b2ea1ac9b4ae5a6397232c654852e330dd0d9acfec39b937da8f6cafb69d70fa4740d6665b0bdaf294e4427ce80b4c28dc0798a81eb1df976fe98ea5611e8f6984053a19ea48fed810f659266194d07198592fb6751fddef5d5c00eac47db1b9498d4cc34cd64e51474f9c48dbb1b44d946db87085443a267a24b1af660c01b400b7b45df22acba80017aa1b8693516541660e629b5feaa458e2d62d285e6f1f6747b5c58ca8f64e2535b24de4976b5f05e7b91dff6006e006e0189d51101aa5b4381d822f9de6798a1a578ec90df25faa79c1507d02f5d2679e68e0a95c937451513c75a508bb359c3ceb5cffe0066af0901b7901131cd3de677b04ec675ec32254c6081a9c9cf0071aa2094aab9fe55d0c9533078649ae1c1660703ec20f30e460226694dcd640736c0a00e25c5375d699656124536420bb9197cc5cb7f5e3154491a7b01cbcefd2cc0d2fe927c6013c06ffaee98d2b93c34b580f13261b363fa9278a6c25e58716dde2ad36d25052a7a454fda71cd442d5f10c586539cdb6972569acf6fae2b8d7c8480cb2d70fa0acdee250aa3b9480686511ee7a327e4e5e46488f438e46c7de6a7125ccabd54e131a0c4833b09b865fe6b7aaad3816d4a3eebadb771d2933972170d50224f6b952a42bdda5a0d472fe6a794c0ae2713e588bff422284bfb01212f29b0c22b1fc255af0efc96315c70fb21c9d175cb6906ced58684e7eac2723b412eb3a3060eb42849a5d58c5a4959ba9b808d60c58638a735fa7c9ea3dc9b82b2dfbd3b4bec98f563899565f6973bfd5621d9ac8ce34fdd3c4fd3f66c27cd413bd72557461d33bab96f7085f59cda3ff2f8fc5f3d9536290d4ca87986d52eaeb3439bd5a3dd5f500a7c45d1be7660a59c8e8579fe62d5a09990bd61e9d068dad5102782cb57ec11d1ec1f92fa1a8c7425c8e2ed0ca6d1d51d1f787853cbe982ade4f2f588b966b5a84188a5f70f893a9f37d0df6179ae1d9bf5293a5d6fa3e8efaa9c2ae661faaccb3409953e389487600fe45b8ee85ddaae8654ae74c0037160a1fc8785047b5658510948e4d89f54e64636ae2035142ba7cb7761bdec776e4dfa6522ff15c0fb636be741fb42bd1d8eb4618d08dee4929a2feefb8a5be614c63032be988eb72af8a4641150bf7e94a4d1506220d4fc3cb91c56ae47253215cc6166c14382b66c1dfbec8caaf58aaecd1f9bfc7ab93b19d9452161a14c39eef6095f424c1bab921e1bb3791aa6b260da5366d93784c61582698b9df9c9d487e593acec6e875b91c5db798a76cf5e4b4afb2694e3398704e776557eade2db3e5ef9b1dd346476639d7d34588c8d36def837017e3055ab76312c9befa51ad0a68fc3bf0f35a59423a3793d0b7f64589dd4b5093648e389bc6a05638421665ddda90aff9f3f4d89f2e4f025d72f4c5404e7844ed4a7bcab3474741afb09efcacba8373b95dfd34f0894ba24be90259cd777187e9874c7e53e3f5d7a7361303ddcfee503f201dc2e55de9a60b594f3534ecf612e4863678bb1cf55ed1b517569f47c289fffddd90109c2e89ca69f7950f97a8164628197f6b0e8b1448c764a587e0d82c9d070c44005aaa1b8ba300140830f0a62d3d23a2b642800133ac870fdcf3f944757329778dd69b67692cefb466b2eb07010c267a32fda2f94f7ee30b50dd94762a0ca6ef987296a39ca9e54d84d00038d2fb87b2338d2df13e445278397e67a5074e4b81af4fccd7c0a29d6b548fbb5d139ea2ff0b1ee1b3d7e5e07809a313b806386081cdf8ca7e44594315205cda807ecdd8fb99fa3b968c5d72085436b678ce7684ff07e1be40fa463de89ba8a8c668ac289c9a5117607a104682c3a1c194246a3fa935177a61a29773c82d1d808cdbbe775e2cd78eb233a66c096cb53b6b6ce6bae797fad473f392f33b5c140eaccbc968363d8d9b88ac083ac00849e0b00c2b40a41b796103cf8e3956c661ccfb71d2644ff729e489548db91d012fcf822b22126c9d4568c2d13238b912a2f74e3e1a818dcd1d1745f9b8e75c91ebc8ac994603b84f26635c97f64e6784c37c782adbe2094d1030a331a9c391ec2c8e02438426dd2daf2df0e58d1f43b6bd146f48d96765777de313cd62e739e36c47eec1175084cc71183e98201a5aee07883f19a852ec3fc5c8fa8c06d499361017058c252324924040a5114d4ebef17d1f0aaac941876330e89406ea6cde7948509226d48f9675934d861af06138f83b933b1a5eb84d06e6319257ce04c7d149b354934d514f9a6659fc7055dc8144c8d98466f313da202b58b84f98a8ee06f6538d291a32a4a09870959a473023b7c5f1f95633fbb9c7b2f33515c828932bb0ee0a878627373e89272759bc84a8342d2e09eef851e81c24030dcbac31729f105cd3a1a25a86b0bd3c0cb0fad0e1a070addda18b5d30175c1e2fe65f33d07e490e4f1406a5828877c0434c67064d01e6e42f2ee9b62c14d9b361538b13d057d805f2ec1af6fbc80e1f35eff2cc317c177c897063e40a7fd8624c88d95122f9ce8a00eda153c89f750831f0fa227889e3af1d4de64eff453088812223b5e96c67c48c95e3934f46666eab9cd1493957ef5ff947ba2ce6186e5fdc9089c11712fab7cef2120dcd5b608d90e797a5b201358118c4e4dfe9f52d1352e7cbe15ac3001d0dd3d6d5765a58422097896d1ad8a2a59f96183db782cc5d1b3466aea855bc6b4a6c084b4d01059b35855abd00e657595e8f6fc23dddd102736be2e6cf8492c397ac397975fdcc3a9ed4c932394a1df56cb22cfa55ed26f1b727b3932683219d0499eb928a75327ab4ccf949deb49335905bd0b09b22b1ac3488893e183dc3a6b8a5c4a41396b658ac7005324c3dfbcdde92e13cf5cd2e1da20193507f3d40dbe9e7353063c7f7b6ab934aee3517d3f44897e35fd6abe91962c651eb1edfea486b3df67a540217e8c2ed26e72e5c2302268489d8106fb954e6c62f3035bfa14accc11ef42d1e4ca925e9f27d6a849010d6fdeb69cc95ae01c35ba34b3fad0059f5c19e16d30fdba4b0721041dc0f29ce715989e10e482483bd4d5d25f4471108cb7e28d9ab25b549f0b068f15b019bfade8f9002121088144a5b73d0ce54543a2b8b862f69a444db5ee8f8f09992bc163f3893c5021dcd99631f53a364583a75b7c12b1f243f21edcb2c38b6db33230789a7e4d71ffcb0e386a47d00a56aafecf05220bd3d06a59ff9e12f83c9347ceb35f4765be9f31b309fbc2b8fef7a48f3a74ed8c291b3d9e9a28c24a6bd01a1964042b7fc27bb019ca0d77a4fd860b4712d2123703f49742a8a81e9a226ee74be57025ed3853ed9f1fb59eea17d2d1726d34305804670d576556c9e81fa983f21d44b5a9cc3e2a3c583f5e86aa66280723029a4d3d65e19b40b10ed508274af52bd76bb483c72b68eed3193d22c7a80cecba3521cedd1f7137bf98a33817f2ac240974d96d80c9aa80bf870d384067be7f5cadf0029cf82beb0188156f6ca5066414fdc798eb00f8b51b3fdc571509b64940be35e0034c7c0b58a07b7ec9c7b45733a26666e7a6ba6346f51d0716c918594f47a87aaa426549ecdeb45c3e840b403dfa714bbf6a129ae135524e93b554658d42e570856292bba6fddfb699b1c5d3b695609755f70552697c108d3017a1573c74f8f827eebc4a16933f734e8f3ad5059113287ef03834edd3fc4e0c6259d3697da4d4de3b952fa3ec52c6ef2da87fc1d5e13c61faf077c6245397b86b2af22c6921f300dc8dc83371db87121ea953dd243c20f32d101b10467e4dfde313d54ae23fd85a3ae3bd6eb113ff270371c4328215aa32e91e37dc5e2463dd89e8183a22555f4a143adec0f3c39bd29ddd5c901ccfdfa0c75cbf80a62fea478821febb7bde3faf6f58abc8454e3a2707c5823bee5fb3615cd340a89c2da01164ed926fc049beec5764d369ed2339f4a3fc9a67e8648fe77808c7c227244341c5c753e42138d623f0a57e9192b3f8c93a094863b30a1f69e5d1f948e187c24a22b0e78f6540cb0a4fbee7aad2ed5a7c7499c9423f05308480916928ab80af37b6f3f556928ad82d61a03bcfa12b300398623b45d846376d2804172a5b1989d83cde1679be9e0ba4cdb603f6c32816725560c5678883c5e1da10cad137874e47330d2b6d52b8185fe3e297578601ec8df975382117ee9da4259172c57426db7704444dafce1686038713dacf3e01d586d7ac34cd69b4eacd2e517c6dd39cbc5848a38ef748525bc5ed5a4db8e2297f4fd8d09f7d408d8682bf7ee2e263c7674b5647617b976ae60ee81b92a57374d1876c4b604ee4a850974616de9bcd435c68c08275dd0e627b5073cb43a8f8f0f2c789fd022d43f6b6b505580b1a5779d14d164853bdd690465242ae603d463d29a7870c1c60c8424e8ffd12bad855fbaaa8a93387a5c34620b2e48719e2bf8a29e7075b062980c9f76b5fd1c06afba18a4ae006eb38bf302c8985d5d9bd04371a1614b4aaf83554e0a17171d0b2aabdc78f6351fdf7bab2656868723947014f81023692064ebd08105181ea2b260fe6365631405a49407161ba98e6289dca5bc3964c236e6888cf3d8ccc6d1875172331ef35612f861c5d8adc75e0221e36469e391254924cf61938ccc961c8d4d4744d33b542382f6648cb109f04613a0802f60c8262f9b54de9ecc4c3af90af905addd54de5e64a96c09e9a22221e7a9539829e4d3469522059be54436cb607b350d6ff989497db013da7e1e138bf96664287b7d11050ed3afa9df125d7031a12fcb0389790430884f46fdbd5c034d6e744a196acaf6e2110d91392d3a0b29b2d945d56e5889e1756eb38c7cb72d2bd2ed457409034bdd9c964c4d187bf3c8b4c9c884810adab28bba00b69782845d4b5049b5cb2a39aab711439f3cdc5311d446eaa704c966f2b1126ab55cedcfc0c6dfe17fb66565dc9fe681baafd3f3ff88d3beaf693fedf9f66df36bd925f177cbcf17bd27f87a9ee360317d8306a171de15773525366ad8b0b04ad73c9916d9cccbf733a2bd8f53ef2389dc8749c61b275c20ad9a1495f4f2008411ade559235569e0507dce924399f84f734254f423c154b5e403fb48ca865a614e1783d4eac896561ffc6307d941d2d04ab3a9233937c6a18b9a4e718853ffc452d4536b19eaf88c24b24d80c7387bfa8dd81042886c2870648ca0d1a213643b2cd1f3e83796b19910bf20c306d8883c330a17077ae8d873117241a4563568e5294d2e51bcc08d504a349308ec5b84fc8a134a561c3bccb10b5302107d1f75a4e9d7a7f412c203e51f0b52e4549e09df3ee1485a99716a09b48a7418627cd4607d533d85b243098b93ded49b9705b59397f7f8e9cd37f8729b1cdf090117e81ea3f1168eba628cb41768ffa73ea762171e952a93a460bf38df6355250c0fd276fd18879608276ba8e7177af2442baaec2493ae6c64eaa1cf7025990e2b4ad8fbec10cc1c18ee4753d7f44c8d73eab14a0c148d83d54325033597479721c8d6f86b75de3205b53e8c298f06ab2a1273ae650e92dc05568b1596725012854c0eaf6923385e1fb0e9c7821b0b4350ffdd02956fad4691157f5dd1499942f5d6e524c0728f5dedc28431f9bd120397f4f272ecbd9691172af766555e21bf97a89deef081f8947186a7bc90e2e6cff6e34c56c58bda906e21167033e899da5e5b3a11677bc80936ebc441c2431cb7a4c13a1b2b3cb5db50f1124bb274969230f4517242380dc81abc04b3dda6caf9c40137cccd904ca4d77b81a0813ed469e050dac91b08b6ee47a45a1e1a5bd6e5a161adf83f98f347f1185afa4872f529f77c7623944d1cad5acd616b0610e9e2236d92f0ce3c93fd247d1e2b78aa3f0ec68c298a8f1aededa57cd22cd1125f2b06e36be649936f6579e3bb383adc09457988070e80a2594557b002642081880a0e57e940fe9b9bb83ec434694e9d2768a4b6a68a456c5184f45cab03383a26c1eee1c63575468f15b1de4b0e4c622320cd61b031cae6944aa78264a8a4f4576b445cf9e9fa8451dc5cf49d8ed34ad2543d733804af101cb4bf0304c0b09fc6adfeb04380d15163ccd40cb96f6265f4ff9017601b9a363a32d38917e4798e6c970edb6d48088f9fcc8d0858c3b8e077220dbfa0f24102d9907321ae811c439ce5b79b1653dbbde01cd5906317e822a8ef1d9125012e8ea4f70492148611948d4bcc425fc1687d7dc893374798673f2a09006912c9341b2f745d1478d5803b25c488ac31e1c990e2c1dc6ddcf8418b140e38388e80ca64f9b0f05b81e04ca5744706a576e13cd792c5325d95ab452cae4555751882c7be7fa1d88a7f3842f9ce9b0e9b720ba9a6a300e2502e4c13c2ac363945b9613918085c2b365fb2f223b56bf94a12d6ff0b6e1ecc2807deb740f4b73dcacf6ab8da8834cfd2b06b81247beb87d9ed8cc043229a125c6a4200ec9d726fcf0d783e40c0f5b37f57b56100b4ac23c1df1d0c5fa40b930d138c6168e4827fa659020b3298d16ed712c493b79d8961c8d56d72a654bb462aa6bb9036bcadda793e5d352d4f892b83d96b30b8b1c20804d3439a14ca145feae2968b2982a7f58e29a2c69797ec4f041129944dde5b93bb2ae3128cd88f6507f94ca62cc5f913091eb4c5e5bf0d76bb9fa816d8a8f8202981779724c88bc5534fae0847253bbfaccafeca4ac0359af7cd1e246185ead435c6da18a559ecdc4a4c6e30bd0bbd3bc93ec8d8762c3dbade3a80e1670098dd70b7ec0402f366ea33ee62c2d7b4cd04c729022c1d5790d490ff06379d020d47f6b9b726cf43c36c76ed0fffad2899b8d6d47a20e1033b52f64990168f0e9e120e09f469e2bea610cbca4b4b1595e1458391f90aa1865796f0baa8d8cc7c38d57fa590c6049e16f1d27e5bc3299807ea9be7ebd012850717b5ac2c7883665f627f821933ab391b3cda4244dd8eadb1249155a8493d7f0410bb0334577f46eaed76ec48b1353cd2991b3f9ed17ccc7d9c481902bf405d5a53e11dada99a900a53b4603eb3db0e761f5e62115af4b41321a8f6f99851440473b71745631464caa335319e3b255248d9fab28500af20651c16604a8b35c98737bd4a964e124c81a82db00371a3c3893d7afb4ff201c4d24d3bd3f6461ce338644b6ed84c62ad32a0907c3ca19856d0dc1109d6071e0056c130549088c7a58d4e651c80fd841879092642ef067b6af571ee713b9a97923dc3e4109cc4a880f4d5d29438756a6c5e02c95fd819fafe72f862a5af01f23fb8b9fc74778601ac91c1faddf4af2c2e18eeaab24c9a09a2228a8d2a94977c0639ceecb92b2687007155c71cc5f99abbee49f277e7e9333aaa0e7b5f3d74fa421b1ad2876c560d35cfae3b91f395a785fa5ebab7afcc4c20ce7811f601a4f5690c1dcd11aeee5e7c53c3ed043f214e8cb2e14766c08b713b3dc0edeb6bff24a1c7c05195d1e9965c3aa96eb269976fb4f28a51f1877d8496f9593cf313fc07b9c04f04880afc27a550e52c8ac5e5fc8ac7c1e734a9e0793f94f5c219d960fd8f9fa07a3efdbcbc32f76a5a5636f0b122386c587de027769cad2b49fa034fd7aad1c599fc4da9cb44041ad5afc433ae0986ef6454e8f2274856f983ee374de776f2cf84baf9351f761536d03bb39f748799ac8ddeaf63cee09b6a702ab47e89d3978ad91f5df760a7bd94f4849d7542670681f4695d195aaf8f1b1df7d514f19f90f00f64c5fe9221fa8bac90dfe404ff412e403a014e857d4ffc64fc9928df9a65157c926f55f2615f4c8df57d12d3247fa7d7a4f1e7eb03df21505efb7d7347dd5f1bf60f81f2eee7993a4c777812f583c92577b7625d98b796f1c2ef79404405ff9324fa9fb0b09f64c5ff222bfa9b2ce1dff437e1f2cec41492ff26aef77f4fa7de2eae0ab07fbebeec0f45312e9874fa4acffc2dcaea688b6ca4ed3735f67f314b0753b2107d9f69f9fe1c9ba05ff96917157fe1981eccfa46aaf8a987fd9108cfd58da732e68dfdc8e78ac83f4811b29fff695244c2ff83c0fe17e3ca7f82a26dd41786fd98680fd0feb9a6d2dae42c10e1ec179650d5c7bd134584fcff7a647f28c16801a41bea7dbebdf09b8d5b0540f47da633b5b7ba3c79ea2669f34c97ffaf78897ae71ad7f8d0170fa504ebaff93c6baca099d9f70578e2346a32a8cf605daf0c09c36a24f8d9450b789202594511bda842d838ef665224e5d2616279ba58c3ac0749790ca09ab1bc2a6e8c2baa53553e1c49e54c9466d6daf50644ce7175fa4170aaafddd52546cc18762af12cab94342bf1739eeeb1f605a6a2705595bf2850543ffbddaad7a6ed8da9c6947d656ab2da010654a9f035d74aaa024a0a6d008a4b3db81510421481aa9b8e2f85683abc86e33d1a54f9289315bc7efba07fbae3fb957e7f5ecea9f7742ccfcc32f120f524ab9971ddfbdb9e558ffca43094d5e49668f3a9b7a9530f72dc0d0c452279981fb7554fa621ec98afa2b28f516227ce25e9a7d620a693d083e3b19360b80cd908d849c01003085f6f159959e81da9522f29c851b1929c07c55e484a62dc6ad2d7eaad6a0215119caade729acb21bd16fb35b941820e5eafed812e988c4d81bd145886996bcbfd1473c2614360730605471b805ed87bf4b71f18575e4017e8a28b2b8544b85277ac5f48fae26689fdd0d8c893cbe20d6771ab8bac09f111c812a736e49724ad537af61b99e88f8acbc372a8986f932feecd26027f695a7d0c2428456ae3791a49740596dabe3cdd5164db9c0a4b4986ddb1b6a2382f2205df7af8cdb23cddd912de7bffe642ac7f60fc8021a216875f13c5891651aedbdb0f65dbeadbda41f3b222f3a09dc7d540d39850ce8a31dad9918ac448ceadc72f6498342b10e5ecae1356584ff9ac26374fc56cd8b4db9ebb9ad571544babcde665e3bd97771f3fccb9079b9503104b7bf7be8e466f6fc669268e9ea466fc66d68c8594a7594dfd11867edb5da70c59ed6bc9e2ce8ba7e933a14d467f4bc9ed9d63c276ee4c5b11d46a5085d3c762e637576a3f373c0f90761685060cc34db57a6c1c1ca3055020a3c441ba5ef92e69fa24601bf2564911f3ca7a75bf9893f52eaa7ea40bd47dff4659ea83d641c4952aefef4e519a4116150b42801c940eeb969829b04f41d0f4375536eed2954e93a8d96f1be659b54f12661820ccb3a33319a0865512ceeba836a1782091257cb1ee4206765254cbffa61cb8b71ae6944341614a4c918cb524df0441b6b8ac174331fec031d140cb5312e2187f43b94f0cb34e2afbee36425978c204618cbd8816c61e61139297b0fcb3b1e4d8741f735889653a1b361a0ae1dcc80d8d60f0481eb3dece8c5608fed5d20b710362022723a1ee432c5d39d296ebf3afc028cc74e8c97f7d124f181c1c4953a60cd6d383fc080ccfe978feb74dd0c608f86e6b0de3e455b50a00df1112580a2516fac9cdbbe95d7fe71ae91b049f948fb55e3771ae0f925c3302c05b4401bd050aaeea122c225243043a17f5e68bb238996ef2d76a2efea42e83e12bdcb0825d4d32290701256d092a08217bdced365ceb58c00a5cd885c135feee6ba61e71d0125acf4a8fa7e54baf3f3711362cd228c8e97912b8bf8d85d8f0975e02b3810ea9388e65cfbb6fecbe40078b0ec4ca15f77cedc87da02329b5f2c77ef8090e223a896e2bdfdc42aa2292547a61612102f05d2157d57a82cefc9fd0b16f1629fd0a8b8bba4b191ded30473d807944a0e8902a1d37aab28dcb83e38d767acbda4c761d4180f65f03675fda72af51cf2be31f38934a099d261df7948aff2dde2f998095b4594e97b8e6140ee9d00f57bd6741b65de150deb6eb948469126e61b81c93154c60d4a2af092592a6b0e3be5987cbe5b3503d4f2d383db6a37f0e27dce5bd4228150e52b3a0e0a2ec96344d2f4e51b299436727f929e784fbf1c32f384161652d970e842d4ddb3c327a5aea79288c54d647db1f1023c5653dc7cf19a091305c61f8fc3e624255947d20ecd5a94c55c1ed059d6ed947956c7331d4a538b8a9e39d46d22b3bd35612fdc582d60ac1916cc83b55722aec22a2510353f6bf77dc502c714c6927629a790c6609e11779921c14d437af4c16837ec37236884fe4882373b504121c8baa28962e854f9eb110c9490300de20bedf01aee5128e2cefe48a0ec55bba41ddb093992288980b7798a3aa70100f6a1e9e6edaacdc154e9c16cc0ffbe0c464be1bcc7358180e1d3da9201820776106cc99bff112a8dbfc7c0ba7f20cc35d54fc0e84dab7f9bfb29174d49c6f4ed95eb5b12d58f93620411d841b8a02304526519f393af94f635c20b9887f6a59a9a21280ee5412dbf6789303fb3d356ea7a1cd6b8e118717cd81caf4699b49ea0b95c4670ebbd5bba87a208204549f456fbf8085438682600b01df6404377e2a5f8f777b3056268afefd780a4dc2636356f33855bb48ac427f46868493245734e58a3f9b4655034ff00a1b27370fa0245e7a856900074772674dabe2532cb9c2f3c926f88a302e42fde20d54dcb9e923f8f96b5e5af7c04e058833d2471e5bc86301393fbd5f6cb41f9b446f71c5f0e3703b965317018aa97d96889ed77c5bb7cddd4cca9db1771999310ee7ec9d7b341805100c161cca49c72ce5fd8a14cc64942dcefaa6ada49d986ed29e768ecf13f62c16c8a79ac6789fe7d38dc909a49564e98b51633721a623c024b0f861f0929f278ce3527e6cbc8cc17fca8fc6f625ffe9184c69e3e231699471376d199d438387e19ded0ebf09ed95ffdc61aa169e3ab975266df4d91360969a0446d304d97d4aad9234cf9a60fc2095e042cfb3a454b61c137c0810e70c10669641e102b44dd2624b2675d118e3aadec0039c8c2601b9ab7f697d153b9ba012041dbefb98af13326d18b829c860c0ff48fc70edc3540a793a714b0d6892c3a238a4903c6c4ba5625985a07986dec2a2fa463d7c706b49f8a4354c0eb2e48fb9373b8e3babba2260d2222a0abece2e2e28c40c5b81b4419249b5f7fb17a609f7be542338b98a260aa3a487d3bb9412a43f5cb377cc05ef3c695f6cb4a5c5641f161fb7701070fc884e58f8e8b00766c080a4560b9109ee1185d11c26620e9b8ae90bdaffc0a431d2519bd42a5447ad1ad4d36bf1065c48f155121a7c5ce79bb14bf0150d00b380077e58f86cdd197e7e92d0cb48318ada33fd8f6dd65e8099f5f29fa65e43c598ffb4dd87482262643b79d6e274c34175223219f9cdae6d36c2aab28768bc830502ed5b52603c9198a0ecd47b0a6550b442b30fa6122448f7e76bb0e6c7bdd4cf6f80eaa7914e662d29836fa5b86273a889d7ded0c507c16973a8291c5caa8753e35fc8341d1e01070561627499d1a704d6c45e0b402016ad95b14d0520cf86f4e5329516ada5a8ae83293669e26af8fbe2f9ba03ccd06c7aa33a5c5a9e47ad0171ff12b892919fff4b620c05efdc2cc90b05374a6bd45f043c35f212be0c9a1a1993cf744defb0cee0d5ab1e8b1f87dadca5747a503cc21668ed23153dfced8ecf66310e79b65e2f64d524ca1aeb7511972d5bde6bb59eebfbd2359957d3abf1f9f3a4a40241e3fbb871166e7eabdd262e3b68c8b3a9245548034c8383c4d95e81330f34f7df3989566b6b0c2e597feda0ec96809c6b691c725ad30178da7adb2556f3f8b201516348b08acb86c23426fcf2d8c924eed28b67c560e98bfcfb180b4bc15e6e1c707fd1ab9f3e58cecee1239615bae8597e85a0b69326d4c9bec850ae75b5c6ff9775ab9f7bd7a4b03d01baa208904df28e98b064223727e3fae5242a9ee80dae69ea529b313a931ce2f2967ffc1d12dc13e5577f8cd9fa41a22010caa0ee9384f1e1968753d9a6a060f80adc1a746e35faefd2bc968322b13271ff717327ec8b973b16b3f902f435b3a65b730c0821f94691e9db73235cdd5088a02aae74566a9ee248ed6d1809b17d20db48696fee3e81c04629120c2ad397bd6966840e6807aaff15e871ebb82e9ed81c04c235c2637623893079a05e362c3d6b1b8b0dd7ff962682f102553708c6bca8d88ee1244d970aedc672c657d2dfce30bc872571e3ec594d63bd085d37ee489cb350a3663fb36f561d1fee1db2d2dd2159548599bdac40e12124c16745a1a31795f5d2082b65942e4aa7479c7f78cc4c4f66a14d027d6a38ce65141b2a81b606c4142763b62fc408fc8e1cb2237c8ee2e4fe5c31fe567f0f7deed7c4780d4918b27f31f8cfa41e827c7b23be8cf10e1669171a5e5cee3c6beb65f88ebdd7f62ba66e81147a244265622fa44e5c5fae6154ba597da9e3218fbfbf812d5fe00357dcdb7e51c68ae2f0df02636f4cb8a46f61aadf5cc7658bec95865cb33d8ce0bc9e15cfb40527db0859193221930cdda2902de2cd67319bbe916878f62fdc7a57745bbff695a6fb50918b2b74dd98ed87e687a8985579c8549ec8ee28df1d8a4ca0840eeb79d2fe8ea7811c3d158588e9232a0761c031012cd5f6dd4817ddf28a3dce1948a4a7b454d0f7e5d4b5a0a51c89ed7698f8523c421daa6f620e5474af3736d7eb198446a3dc995ec4eef40e3062ffef9a760106a7365940a87578b00ca4ced226cbb393fedadb375ccf34ae5564a6661e5d34382a3d900686e4f0e58717a9e5a641696000166fb8a8950198e9881d192d4050a05419c2a361eb98f7cae17a253098e4a491fe6fc058bfac369a1be59121ea48a7732d9dcce3373c7a138bffcbfbb3c9a1fa39a0531d964851b037a101a4ff719f9fb222a80b7882d61bd8d6f940e1afbf5e28f05a3481305544d4aa8fa6839805a2a3ce9f108a5d4df60ff7c0b5dfd7e2640d23a50d02a9704af347f495d21a493ac4176bd004b83c01b8c5a891a5bbca5db4d5e134763757823241c98fc66bb58882f4eb11d74e734f6c59ee54d3ca966960977bb325f5f6580b1ed4c5fe1d9be5399657c3ed9075ce18ad5a381f7fd6cfbb2b160157c4d22d6b0731218fd15a9b86253a42e66d0492a1ce685904cf9bb453c5848efa12557c79a426e5890bb40611ea445eee2b1c7b9a35918c5e00e87d18e6b8a7755116ce5abfb618bd2046b889e200cdf759137f9467152c86284da689d2de12b95088bbcafc32f05b11f7f1e3e1cad432481934c1b88bebb0f1346087a90b932b6e7ea4da63bd8b44c09a68f9a11bbf044867e0f1815e50c2c66c409108b518e6f9dd1ec1a788935223a0ba392a73b8eb72058a2901c8f707acb0a8fb6e6d3fa2441144b73421d2c70f27478e72ded0b6438ff8fae56b24c861b7870f61cfb7807a1ddd8e1944657c4483b60e11cf75d7392a72ceb2d9993654b1bc35add0bf70a22b453014cdf6d53895c2392b393c0a0d9cb47c94e2823266ad2c2afcbb4a0152a6edd91430fdb8695412bedd72505dfa54a9714166e4b9bd7e323231952f4413691d9dbe7afe280bd9cf41b92b50a329fe03f8944c03d4ce57470b286b1f9c99046d42f56247960d980f5fcb73e7066c3b16c4dc158b58b2e7b3e1e2d6f10a69d6282b64b1b055f6aecbc54c67b01d50f03244cbe34488dd6e4ecfc52a8529524e45afeb967c28d2fbb700fe16c1985a1de93b3975d1d24a2b5c7374df6ae5924a4f4dcb30283be7cd39584fd635fc8ea86334c66a8a563a548698ff8b56a5d909c76c1d4a399353af601099b39b86a6291895b15fa17700e1514e03dc826045940d12189b001e6963cf8aa4aa013ece5e1c2dbee34e6b39c1d084a4191a40ab0cf2b835d7a57f614c0e676a5f29e4948c6cef3b09f749830585b74b12b3d9da75b08ea40732a8aa116ff2ce01591a37d9e91e2963dc09048f2ba0633a293619664a05393b6441a98adb67cf6604be3ce95d4d34ccac490562b7171d4ee2ba1778ca4e65ffe5566ca267efda1a4f17bbd644f36c37e94bb4d16cdeeedf70e7699be422986f13e5841074549ec0ffb8e62ad72ee5ca12fbfbc7956a23201c83f1a83193da22534dd229780547de9bcf6dace56aba470b3d8f3973a7488ebd448d20e6c051048362c0bbce2d40d47dd550dd36cca67081f740cf7703efe3461677d909fb66855d54b550a4cefb1c56f101dd31b32d58bee07a0673f5802a55e6e558186faeede1d7146ed8f6f16700a2b414d95d0b15a0ae928d19d0c0fa78cf825380ba034049ee3a4fce814dc0a69936ff92a8833e31b229d31c0b062b747756b6a0310723647cecd403324093187fdc605bcfcc33e4d57aa0d52ea33fcae7b3d7666e30ee110bd3ff65441e266f5b946c70ab964d9459fa6c89f89b4fac04b067517fcfe1623d64ae5632f4a311978abe37cf65fc252ab804803922da610c379c8d5aa139e81190b81173fc211e5fd5802064cffdb0ba42828067c57c7c10eda80895b1581db4e2e57cbc29bad5ff342a1fbf5f1088c0e179c47a2d530b40c465a41bf6fc7c49c7388be3d3fecfe8ff3dc070bd58e71fa211457cf9b26f8345bdb1edd00e784df201812947c50a332001308ccf81d03d211f47ec48d8d0532baa70ac4b91cf4768eba621061272f7317fd99d71efd91a10b3175740b8ec73938cc508180fa7b47bd737735806095f44822e39fa83a9d4520936b88b2bbea60a42ad122b7672d7427e0bceb74396dbfcf120f9a4b12e905d3d17ad22799d3b1abbe4ac0cd1d99b2e33ee0206421682d7760ca7224fe71c0c9bc3f77e6f8d17589337ad9dba50d3ecbc4adce8bf4ecc99d3f7ebca7df020ddbcf3466c49f7bb13c15620789149759c4884e96cb32ce2b90756000f122b7a69f82751300406d98585286beae2cb1d853252300d10c12aea508748b269440e0a24c0c0df74811ee60af76aade5a4feee84940a3a2a3f297486b265898befc15cff9bdd225864ccdc30f477997903209d832085875c31945d8fd48576da368038487b4ab6e4e2b4d37a1cdb2e84ab6cb9b3bed9e0b8bf75dbf5796b05f5a6c2c71aa07b9b845fa17e5779f47b7e0c86409f49fa839fe8f5b4f89cf86e58c91c20fd87e843f0c1867b0d87854fff3bb811974e340164aeedceffc38ea85779ef474ec87555cbe6028ea852be829fa0f109a498edd1560c109cca57c8d4a688e14fd5efdc81afb55e030298da6792a28aabeda26a8984324642b7c6e3389e66a3163a6fd486c7c25135756ea33927b740fd9c81f1668728bfcfec0c3837b955d8924d61c497f60035f11c8ad88a99739e498d2f551f4228a4c7c7a66163f3e6bd2065b7480c2af508349265fec3df9b04d9c5644fa6a08e72214a883c21942b74bf125486754f3f09a394e945b01ac422680a3395037f841ea8ae04a176d7d57a08e874404bbeafc24f9ad8877848602a13b9d3bd2ae454831639627e5d1e5e6b93d1aa47c6dcaaacc591559c3493cd666ec5a639d830c55a1cbcda5c306aa1f5f3eada8c445063ab0d3713f761577828c362b20006502f858c3d80625b5ab810d061c9285225afe437410c500039ce987a8381f4159774da6ffb6d2d574a5bab65003b74ff0dbb7bf4811d3d26c733806c5305822cd3163794a8972ce0bde26de8dffb3faf83785f98ed6cff1d8e7f50b637faef558966d50e5eaa4ef5c7700ebd16939a19e95735bb5f6dec9c1b0163d19f328cb3148223d7fb9e4ea6f83ba7977f747bd64cace458cad0c07f9489b510c5fd6f7346de7943593b7a0d17eeef826fcfbf2d35a17865785cc05689ea3ba2fcbbc22e422a7e891ff902af9a8f224a181779427f665e90eb47a9f452c8536c31a28619cb802b922574cdc9b82837ada3b79feb2f29d48a4a892988fcc44dccbcf1d9e75849af708fd00f6c078827ce2d8e04ce59f5b2ea3e8b04745a7424dbcacd3a353778052a5814b75d7a55c1f15f2fbd3e269299c1684e7206ae9336e6c38c1fce1760b89dc0db1b2a06a0cf1657c5eb4073163e254201e1ff027fa00b8295016e794d1c507b378ec46a562506dbedd36e9d9d79e6ea2d088a2dc9f834692ba14050ed595e6799a1065f05485566df5b8147a8719373ef6fc85b17b8a8f288bb90bcce43babd386bf9361f7f3031f548987766f1fb0348e5a1e987aec53876015506667092f7f7c44e81d7e8176557d2f0056e122c1f815d321df16539b3d516bc68edf4a8fe6a307cb9b64e57e6881df48d2f2ace7ca15bbffca470e2058994950a2dc5d7e2e089291c733adbedd6947dda79f3bc81f414f11d655b5d90882d82e522481185d14dcfa7461be3da10c58ee3f2eca1239e3bf7d0da54bd68c1df3ec4d4f5ff6fc07c8bc9efc0e2f5187b266324a9d8684e80abbee9538ce0e04216a0f412311afd561bf21caa531448fe1b23147047c13892ad615d5480fd301777b5a2746cb0b0d6596cf08c1480909a11639dbeb8efcb39b9ce5c0725d118e75cb4d76a6dd36e45885358000941588a0679712f2c1bbca4ff17c5c5372058c5f75670227082c6a58e5dda507fd1d3381f1472cc61fe9b8629bc601e45bd5b13169645d8db26c2734d52d025fcd78442a8dc9cec93399856d0dc5599a40413487756363f8d64e0f883dbe124f71cb780af253544e679de90de43bfd58bcf8c111de315260d592a4bcdc49c007cac8881de3feb374a8c27a79b2f888c10c06aea3d9bd7878540a83a8917bdf8679f6976c0e124c2981648a3a49c366136e9a9fc2e7f18f98e2431e153daa331ef023830780358549b1621d735bbe174be392f18a6ff5c7619c56cecbf8a648414b0e12baf089d46877d4648fff39480ca01bcfdb3263e14b38b692401ed1837107d3352b76f04e4c3028abce68a5c505a11a903f9284cb970da435652c83472565469065c85fb4c294a3c64664c3a9ee2069ea20d0d66f8ccd4327038bd6bc0106311f61fa32ef8588090ca378682c601f7843d902df8116d09adb4181b4fb6ae257237d972ef2d53923252089f08b308b5d654ada957d54f8da91b4d7a0a47939e9a3559845862996b32a303317c9319a73b44fa25b5e9f2ef5fb1f858c661f83df4e5899cec3f4d664c66a6c70b49bcfa13fccf61fca91fd9f32c9c32c1a999b7ca8f2dfb87741c66e2219d1c7a990c7e09c63818df603c3313be7b187ee8e9d5e17bc123a63abefa40da5033786574c6324dfa532244fa25162bd779e0ea53aaaf9ffafa2b3ca74b154b8db5c9995178e6132e7f27fb8fe0d27be45274a3c436d9bf844b5c2b4b96c8fe21b8c43865c910b2bf0853a086b0bf88cb9acb905bf6ffe012df64ff8bcb12244a319758a6c439650a4729faecfe7903609ba4d9a379b45c9b9ca4cd6d780dcec6a906b5d11e5905100796086269c11691d2b74410dd6be53891469d8935076e7526f7d328d419eb7973baac07c059528632b91f9c7507b4e2549cced3d6f440cd2db8b0c044d1cfd55a2bd7799f070cef07148aa2088a46e19c2e9e0a92fafa0813fd96fdca0033a500cd37b686964c1d7e0c4040ed010eb0d180c0bc55cb430eb4911abe6869b2bf8586d18d81734393fda25bc3cc092785c5789e75f9be7a5c676f8ce348f7866b838f2b6abd40ab7a67b0c190a6d3eb87fb183d73d7a0d3553f0486d4269eb81547a5e29015674787efa5e2541e35a7e2549c542aa5aafeaa3327d7782b0bb646158673ba38fdb2da2f451b44b7dac3efadd0cd615aad5629922882fe7f15da100e5b447f5c1fcff99452ff095e5ba323d61a6b93fb47b606fc2cf8e1be761c18724e820248f35badeff13cc581e8f918eef1d01c866359bf7b30fc0e833c9af410c4093198d3a4ff0c317cef4b1027fb835ead5fddfb7b3ffa65eb97cd354f187ecde1780a40f8df875fe9c96006a78085ec0f62af365dfef446a45f7ab5ec5f692ebd9adffce63790e691002471c29a129008dd96b5bb9b7637eda65fdbc1eef6182d8a22c51129117a0c6df56c2e6be41edd6d9ef6c66870356674c70674c7364531bfde1935d7e962b1dd8df52083bdb11e6468a28926acb5c15886799636b2addd60f7d32062d320e0402c6dae1f2a143dd4e3f14cee53dac862ecbb33bc3ca76be2b0acf890ce06c3fbb931904a93f3c31ba35112eb714eba02c5f239b0e4ee5bac1b9736631a2cb9bb44ec20b9bb03376ac4fe0e4263d2728f36b97ee316d1368d49bbd77e3e22084432cdd246ae20d07cd09d41739d2ef1c6684c9d588f5d29edfa947e77777777378d125c9bacfd5e9b0c8544a21579fe68fe88452491c458c89dd1794e579d2e9188341a994212cab3840892e8ec1129a43fa40261ee0f456e8c8629f78bdc588f1000c536954ca016f104d871d5479a8ecc91ef53dac820c943fa482412c97a24128944a233f529f9019c2b44124dee07e95421825ec1ce6359d112ee20f79729170cbd2f4993d67411e24c14fd212091e7fb3c9ecefb5294768ca6186ce72a4e88054150e8c1b6e4c15e368545a83edc0f9ded75a0a701f0c1d014f527fc18dd75190cc550f7e028f4602e73ee3923b42c0aef0e223003361eade6d1f2bc141cc540fc1e24c140fc4052e8c1357b9f7b37cb9d766e1cee9110c4aaa3c9fed1ad3721ce8d74655cba630ba139224da7bba8e344420ff6140a0412431fd4e703126d227d7b77982fd35b9ef7cd3aabb34c3f7719c8a196dd871f70c4d2079a4c7d2c7d98c9d46f99469d65eebd36f93dbd311abe936793e0bc742c7d9895be93fd291344ff184e310ddfc9314f0edbd99db3f9fbbe57ddd837c24431831e8bed8f6ed91a0fc432c471d8539ac7478a85efe9f7bde779dea76bd0cf8d7d2091cefe78ff79f7c65221fd02913e580a3d98d2b70db3ef81256a1373a0b8b439539d2668d3c5fbee3b552d571d1ae2dc22703e5ddcdf1bfbe0f982934bd1e6eaf0bdd851acc902c83bd0a188a7640a67bf5079ce9c5c8a35a0074c27c2d9af539e36358b351405cc899170f66b24cf8f4d1f9860882caccb7b8933047d5932829a98a48a3e0f7869d72c8e2e98ad7e19e0a00b3d27fa429ca8a31beb9541f312a22ff45c10e77979e414da5eb0ac2055bec484ea164cace9567f9e2f06d12b544a324a2465980d7329d688984ca57f3297210e994bcbc2e2e51067ba64223da1c2d92f539ea26d6a8138aa8710fd415558b290a552c7d59ac34a63fd582b8255c761a258337dd48d51ee5de5d99abdb5fb2806a1c3c9b28e1d195cee700efb1cee3290b9a73673aaca7134af6e6c277357862a535a83aeeb5438fb2592a75542ee2f4ff2fc8e84a226d385ad4d14fd9f0fa976248f447d766f1d66bf7bd44e0eb9323cdf7229de60b1c69bf0423c11f74aed993cf83b9d6eecfb39dbfb733fa4b9ce1b0bc7d23ff4af61c98d71dc490da2d69a5af37defdf731ffebaafe4fb13d7866fac43f8895b6d46b83aa2d8efa4b82f2541208449932485fc8910898648fa12e93fa46f27f9e8e9834437f47cd53b111212f3282fb1fa70362ce603a026c42f678e575d3c5f922aa12f5956b4bca0d5546f42fa2e18fefcd67421fd7c94e9e204c5d6f3baaed61f6fac56930a44bd958626f77b1de7406eb7203a3a4cf8ce4e9d55992a93d51fea4c9de1b2875d09b7b9ad660ffb0fafd53c77d87d34d92ebebfbd4efb44e7015745170c3d39342f4171e712fe8007d6d57bf0054c17b099f4e087bb84634020becc99a20c9d90fbc324e64b0ab95ffc97234b30e1f19c294a310a23b9146b8c086f871f9e7984c31f4cb2bfc3e11193f4c124fb3f3844c26cf587e050081eb6b5b6b66ead466c88d32fd2f7873c4225d028e434ecf3fd21ad6176ba78bedf2661c256df6f9d305fdef75b295017f5fb278551fad264a3f0bae5fe329557588cc16cf57bb008830fcfe982a114a190fbab77839c44eeff1421f77742c8fd248e9a56a97c8ff0beebbcefbd53f6c6d21ff59f2bc39ffb18dee10ee40f7ffc9b1bcb1a8ee974a1de7363aa07c149fb937a946a2c6de4d3d34fe1395d01e494cdb73e509a26271079fed0e4dc9934d06ea7a1761d0d399901b6564393f33f1a9a8480e70175ceb0dbbd56eb79b6a4c949e6f99e1bf3b04c3b5d7345ce4d0bde7bd349fad31780e74abfc3365499ccb33f9d28fc690fde0413b9655f019bb9f7066b58c3ee029deb83d37b199ebdb107cf95760f709694d396c1cff781a652e8f3899c20b98fa0ba6e44050a51dd1d89b592b030266141d162e195142a1ca76285b52a5e27252bac490a2912b988a1450b1735ccc831b49061030d9e07801bfe013000195edcf03066888182d2799eb5dff7793c200886b592b030265941d1626196142a1ca76285b52a5e27252bac490a29127940300cefbd9f0f0804124517c5a653ac95848531c90a8a160bb3a450e1b8fbf98040a228864222916834f2d1a8e91c51daedeeb5721cd7896228241289462312891412e221214d6788871f514412b9a0d0e8040a8d56a1d1382a09c107c91bfb3cf97debc6409152e8c194d0efe7534caf7263275e85f4a0cbe52e57d3e9723f018edc18ea474ea71b1b513d0a950afda23ed53da852a9562b5fad9ace55ad2d22c983a91b637d0abfeac648567e7563287e7567d0dc7af043bfacff3b8366ccf2f8c6523c5679701c7d1c9bce91e31ec437b6e2f118b688f6c71b53f17a129292d0ef8a2fb10f9a9898b058ce62359d2c91c8246c115d3cc8bab1189e7512b6882dfee4c65c3c48862da28c276f6cc6937706cdf9c156e837866fb57810256c116b78941bb3e15168783025c553529ace941611d6f22a2ed78dc11e5c095bc402fcca8d1de0571e4411fa6d79142f0fb2842da2029ee5c616f02c087830450a4f91a2e94cb15abdfc807dd9b6962f5b891dbeec1b0f5fb64e01beec2007f8b27710f06533a1802f5db6802f3da6019d041cbeec24f2df3080d5975dab41c6122613cb0a49144d226198c3973ea3c3974e43802fbdc6005fba4d02bef41b067ce9382ef3d200062c40010940c0010c50001e08b0830e2db01c70187ff503b86125a306556a85057512318523ee5eeb8d01e086e73800ac1ef43ccfa2a0ac08a7c3bc970602005f764d0711802fdbe6e6862f5b070e8f9c1e02e815740b720b173164193368a8c106942f9b660914ca64229144b16d7dd3d97159d75602c0333c8c8ff132fc0dffe203f0ff0028699416b1161b6035bcd00063c60c3264c8315c5ec4f02e56a7911326b1d4759de7ddd80ac6db1b93e1edea515ede736333c47810f43c16e17458f70264f525d5f92f6910972fe9ce8b2f5b06e3cb8e91e1cb9ec5f8b26fbc7cd932337cd938625ff6cc12b02f6915b25df1a2b77f94c94422b57cd9352dbe6c1b175ff64d0c5f364efeb27368f8b2694d8312a36186971c43861860bc70e1d2e2572d30ceb3af152591101229f793beefc6ec7f7706f5dc988a07c1b0455cf120a8c27bf0defbf9f8e7d3747e44a257381dc6bd0ca1e24b7aa303862f294ece8a2f690f9a8fda0f16f3a90c280d322661b55650a8b0a4103d0a6532e9ecb4ac672dd333378f054e59bd09ca93267f92f22b4ebe847c184adeda57e15911767d8a150b8a8a098a949593163996b02c89471a99446118de7b632da2c97f6eece43f7706cd259e15a1bc7863292f920f86421e0a359d218e8385d361f5653261bfa431e3977456f2259531f992e238f992ce905fd21f50bea434295f52205cab2f6717f27c0dfc7728d5977307f55fd21bfc25c521f992e6b0bea4345a2ba94de45249416991272c931292115bef4b5623c8752a940885028140a27863230f86c21611f5a1d0c88b6eac7bd183a3d188447212a9e924d5da124e87f94b9e3c66ceec71fa72d2660df5e5fc316d5389799b40f2fcc04f48a444329d98382f136726999f216968cd0e97c2a3fbe2831ef5e19f708747bee4533f3b9e18cbe923f79bf06c52349693d6e41dcbd9a3c9d158ce9cd924682c278f26c5b19c38e158b6942b723fc8fdb7b4dc58f72d77468b1637c63de8e27263a077b933680e1f74e1e2c6ba77218afec58d8dfec5833060380c184d270cfbe90194fd2d80ca1540b508a7c3faa592f2fcd2145e90280a015d945014ed5fce9ccfbc65d297538724557a7a8b34966493a1b12473499664939ff1921924bdf571630975d19a292c195ff6b1057d114593e99f24593299c92f939e0c7409e783f6ebde61dfcbb4e549526b501bd45383dab028092401ce925224d35deb2cc52bc37d640ad4ec409a749d268b10edcf5b9dbe3fe7e160be3c2326d9eff1c8ddde0df75dbfed58ba7d6ec48ed3bfab37566b73dcb53b68f9a1e5f6c64f8eb7baf32a37697fbaef3c7b74ab3f399f9cdc2ff6cb610ea45bfddd75ac22993c4938f75400ce9292b4657fd0fe7cd0c3b549da7db55f6fcca2501ead0732faeb7bb8a2503fe7cbc524fd4b4f47aeefe160be5adec399b0d6d7f772260ce5eb7b37d3e5e46bfd3a3361245fbfd24c58c9abeaeacb2a9b30a779cb278cfbfabe3361e3d72f49b9fe9c2ea9af4fa78bcad7aff3457e7d3b61265f5f9c2fd6d7b1a4e1d13a5c5332f52dc6d12f1a1e2d7bef8f65f04cbf2c96c981f158c3a3d5afb9d6b7b6a55f5e8e8bf9f27ee0348779ec6a2cad6a749a870920b77e0adb0cd24929a5245679e64c7e3099e18118720b01d2301e93d2f6eef672faf5a935e9efeffd60be3e494cd2df63735848c75bfe368f2dfb8b6e3091fdc14a496293fe6277e5b8ceebba2e24b1ea5398cb2d5c52a38d46a41b2c536b0d01d22dd5187243f99b5626332133e4c6152196a999094ef914ee720f9d9b8848899633621a93c9247e69f3899f0dc3323f29114f9b2eabf71f19f9d44cfc2e059337e6b939fe08d11f48ec759af4f7ae0ddddfa6cbdfbb39bccd5b4588233f6f6af6852a58f5245e3d09c65f8253bccce1bfbd4e48e7743a89661847b7562396d981b8a2497f961d2255619ac19eb43f2b159e7995623380f19c2d5b67ded5a15f4a6e46907895c28d824b5ab8e40497e44c97ff2789f99a932c3ddff7ffd4fa352779fff3e5c76653c3e1b7fdcd5b5826acb50c7a13ccc22634dfe7013d1e8fe7c652334d7a11e237fd9392016f8c864c93aad4d75a6b4d05e30d99152188948926fde90e35852d225622866f266c33dd1c704d15a39a81fe0573a39c31d6c1b71312e9e465064c753c07bdf9a3cc9769ba3af48b890d09dfe7999fc7e3398966606cc3358c47d58dca4635a39251cd54b2d4ce89c53a91a06a5041a0862819a18de83019b1f1969bd4807372bed4ce7441f9111b87719f3f6133dd1cb436045a3b85401e1407270c4756c43c039bd072a6ebdf534333ce6c355ace47c7e7d29b1b100ae8740375632a99d414f947356bd25b44554c2aa59aa1b85c2ed7a3b846558ceac60aaeefc2a01cc3d856a3e54c572af5aa1d263e6645331a890411d96952446744c466648889527d720d33689031c680e05fb897f1fe6208c499e94b518666262603c6b41c9ce9f21fd59c3831b25aad4eb26631130302553c7233ba319471c4860631bab4a606454407f5a4119b111b94144c8720912eb5b1495d199d8f700a5730cac730f734e09477e19b65c0d8866b98365d2452c8cb3ee66f88a86a543854312c58252b814aa0518dc344746672e86778c97894f156154941c11408914b69fccae83cce8ef06166c13958bc0b36a14d973f0a1622d1bb2ce686a706878d01d399a3ac5058603aa3ba39a80c980a5d18bcc962c9ace446098e900a3cfe30dea07deee7c72fa3c0347c023a3e34e9ff3703fee02a74619b57f003f0754049e86514f806f767c13ce4b08219d0a4ff7811d0a4bf3f48325e1ceabb1e74e1da24ad3fb38b6fdd980b1798b69ee4da50471789c720b9395a5a62c438713d9eb9ba309d2e950759e10a4ee1b20cd824066ce2824d70a66b4404f8fea31bf03d748149745e60922030300913f7cb10d938a38ae9968fb33aaa644610559af437a14d17183e3fce1cc6bd83fe553295cc555d7f6315c5c42445e54f6e4cc5855139a57e4a5dc1299f02b37816acf228707d18f8f52f30ec5de096578151de05c3f02e5c73882cbb884e8b9957b418737038f96bc125b226fd61b824a65bfe2f5c72a349a765cfb3c0e30a119dc98de3ac0828aea70f038a4ba5b26e2c85a5f227297f7263298fe2fa5a6badae5aabab5695474179958fd127ad5005467161cf2c3807f728f08bd01ca69279cbdf5fc426a244bf54de5fe4d6af9477119ae82db7de72153ca6e011058f2a99c3dcbe6b94513311dc2474e13e3961852e4c49f22474e19959f0c8104dfaa3c023374dae8c23362a992aa661e38d6ef9d7719c35e923ca09d30989faa4bc0b7bb20acad34f4169e199493cf3092ef14ef667e1d2913019b12949125cf66cc4a50a27fb635ce22464ffc7a51bb1c225a9c265cf52b8742450f884cbcfa54af63223bea492b184a864431045b874247239b2e4729cb54c2ec7992997e3ac4466620439b3e3acb2aa0d5ac3bd06b5915283da68910717d0208c65a5b47f745a2bc78ddd8dd16e8f766b4ca36977f7e881a11744d9092ae77486ce8432284b13cad46aad72ddf5aebd1ef07e2e48144530cc21a167c05b13f0d6107428e8e6a0322aabb52b526b96a67475b25f1937530ad050060823f7441a9d2e0a7553a451eaaaeeca0b11115d4b734fb7d6a650abdda68be7e90c8dc3bcefb0d66a2dbcb11faa8b6ecc57abd563afd1589a50e67bcf376748cb6528434d90fbcb9096c0f3ac1dfda15bdc48676aad5f3f1a6681a0a3a5b134dc8f30c62b92288642e338e270342221b931129f739634aa5f921bca4c41aca1ccfc61cbfd2196a65a1a0b44c3421c21a1cc74b92111f47cf7c3bd286b95086c3a323a41d0f141abd96836256e369d2bf4bd820d08369b8e8e8ead725e39af9c57ce45d1bdd65add7f1000eb4bd8b163c78e1d3b76d49f5fe997f6bf08d0e74022449aba3870f4a321f7061b99aee09cc53db0d6dafdcca126ec5842e551715229f7caf91238af3f2ce747ac56ffee4dd8c179fd5139cebdbebb376107e7f547f79c87f880769bb9e1e0e6b9f1c0c9a9e1d47ed86ab72978c029d47e50abdd6e371a12d406a22acf26fb469ea2124a2891829cee1ba5987bc6052e70210a48e44ceb838ceb28c17568903c75f2bc4d93870a62e938ddd5ddd6b0d6e9de1e2a88a5c8ddaacc9471440f1544d073dacd80608be83fbdaeeb3c5c7a83e8ac33d0ef0ef4c5a6037d719046b45fbfaf6166f071f0fefb79c111d48178fa461c3772fdbe336813f9418f26d7fa73ce39e7dcc1d25baef529a594d21dbc17cf77365dd3ddbd43e73bb9d67777df817bf1e0dcd4ba43e5b859aef539cede1dbca3e5f4409bc8deb843bf78c01688659dc9f54b7107fae279300cc18bc3f7de83a1fde4f08ce3c986efbd9ff18d73ba4aaf46cbf56de4183daf37e31bbdb17bff8e033bb9ce721d27b50ece20a4c9ed7536a304dff35c09b7d56a4befbb0771e979ceeb0c54abb7ba564f88a3c9960967429999bdd16f65dace5a14c71a7556fffb5a67e1585af1fe672c4da06ad32fdc08dabcd55f67de7ff6fe3396effd1d4b93f7e1588ab6b4d9ce6c723f3542a4efb65cda596ef73aab33afb35c9bac4d8634799278f58c004e8709d17d063d2cc4053aec30026642f4d092235001cff6c96ce3c57bb007da44ae634963bc0781103db4e4ef1d97d4463ffdcf46f6193672f7521b9735ca9aedf70dc028d7e781ca6432d9cb878196f3f0c2c2bf4eee63c70b7416a2de7971f02c04d7399dee9feebb1ab4562140d791c9f53defa91244ef63b8e7793ab9bea7ed7718f461694d3a586bd2b3855f82349b12379b175acf5bcf15fa5e217fb624d83c9bebb88eebd882004e1522c8d264935e7398e7fddd364eaf967be6e860faf26170e6e5d488208d97c1d974f5775e982f1f16735816d88fd19ded9c0bf355616a8c33e13ba48ad740dad559f2ef7866190acec019e5ea87563b1bcc8983fa8c07d16e93e7b7d7f88cfb0f79be3b8e1bd7e143b88c4d891f3f6c417674dc654dce18266a94fe685b10dfc9f35dc75695c8f3eb0f77266a3a706eba1b08ef1a1d1527cfaf375dc37510793ed740e434397be4c9a3c9d9343a418000d1d10902e4e60e04489393eae48e99e5f99c4ca70b92e777405ac66b1c79bed7376e73d2216e7ad072dc6b1d82bbe941cb33e746071da2d6e4fc91a78f2627b5f1c1071f6adde1381f64383ab3c9d18ba8ee4f98e3aaf544770412c38eab15c6e7e16e1eee46e303a12cb7efcc7698e03b62bf768234d93a4df68ece4ebf98e897ac777aa7ac31b9c320f9fbb2c6783b4ed8c9ededf88eeff8ce9c2dcb93c4bd62a18433f3f9d419253e9fafb3091b39d152bace0c4d71fe009d4821225f5f34cdd7a8ce646f06e4034403d5463920daa847bf68d49951ce8836ca1189c61a75c661d596c6d2865ab23896a65c7bcc1fb5c661d65a512c4dfe60a59c082e7d080e75d6118268140a6209a29db0f82358f427b0e94938e4656bad28865f9afc6f0d44f356681ce53c410cbd289aaa48aca0ba13662774242c8270c72383209a488f7240b4ef6594b30491478fe86e0f6532b5bb7f2451748fc713eae891fdc1518eb73acff36e2cf4a59f3756b2896538032f88d604100d4403f9286150cd03d1c4ff84fe73632110b62090ef30417c1087452f82eb87e0d093b0f8201df9fbd2ea18d19a148da31e239a388e727e8c72acd7714da7db4f082482be7e48047dca3097201a081ae584dd33333d53c2093d11122861f6a0073db833dd74f7d975471ce1a14c1242191d3b76ecd8b163c78e6afbc6ea5a1111910e768061c763bafbecba0ed4e1fea0e7eb78b873b43a0fe7fc88e9ee33073b784c779f39d8c163bafbccc10e1eddfb2a0420a5b4bbd640f27c770f45d1568eebf6bc1ba3d4da1ba3415aa43610e98754bc37080904ba313a8a62285445a21ba3e348340a89a3d168343a31d201e8b4884a824f3d4f2988e98be70bf3c593c3d6ce3efdceaaf48bf3b164c1319ef745c0bffbdc9da399bafba0b67657b90e81775f0eeb79fec33353fa1eae1b4bd7f13caf347394e6ae6d11aa4f57fdbeb1ce3bd0d355fbc37dcdb55f9e534a29ad3bef6ec0b2b997940411ab8909ae25252e2e5a50bc605f1f05a90286162c527ce5745c272c9ad60b149514131fb45a8df6c3a466ab99989898d8d0e08666830219dec4198dc3c413d678f2347c81eba3609457c1ac4fe97249a65f2b46ee59df8a00eb49900891f5ad95073dfc6cfa25d6d060bec417d8dc64ff90e6b0518eb76cfd1ad59a0ca1305fa32426390a6fd95f9c39ac2413671c561267302983b5d61b5ba9b5eb3ceb799ee7d9cf5aebf1802108823f6861483fb57bef0f5aed7392890f7ec2163e6550349255524a3221212d7c22aba488f48c4422894ce4a8566be1520645444e74cc8990ac82c71fb6911b4319c79a1146c62162e34d69b429dd1cc61a1fb5fbf3aa6827c217e64699051e71c69b31141a61ac16ab5562d9783c9e1f34910b1e6dc69a544ab59aad64aa9bcaa6aaa968aa9c12c6a5d589e64fb277f1a972a60beb4f328771e19b6ab516ab85c284a223219c303c216617cca29941a1fefb52b41977746a39498cd44658e349d662b5466ab5d38fd38da96ca81aca070a5563b55aadd6b35aa3cac70f1a0aaedfc2a0dc028f3634de9a2e1f1939a97444174b3c4a394dca94704eb2ec27d929a661e38fda29f5c92519e9495f2a01410244b7fc49de854b8bf802b126e44bd166d4b9b580018f34333239a351e9d630d36c988af62d7c9ac5d4f1246395704e7c59c239c94e321669831a5130eb5b60ee5b6e86018f3663cd48335da19048b5e32d950faca28deee824b3c971580927273b0c93bc6c259c5aad75d262a56aab30abe01c283e0566d14c97a30081dead55c1a2d15aac160ad5d8c2e08744569281a525c15f4e295129412969619b51f0031c60f3720a8b871c9af46700026a2b30053af7504396573cd822ae3cc9c581f5e4832466fdcc2b8f72632b234c64adb0583faf0dac71c5584b6aad2459594fbf0689e974b1bee4c648931005935c8601b3685829304b66ba5a302e094fcdf30e7e39b28d376ff9e8968f356f796b54d1682c9ae97272928db5fbafa2a968ad92929567ddd8ca9f609a5b189549144cbe0bb3bc0a5ef9145c3f053ef916aef9246395661c86a2c5729afc7da91a77bc6593b54eb25a8dd57afa27acd60a3ec59c66a409f9ac9367ddd809abd56a91cf6a3dc922c3133c730b7b564929c91ca62ac99470f48b7cffd24cbf4edebff443bf5aef2e128f3ff0681b9550d15823ab564369e14e496961aaa252abb5f0cc2af814739a3589329e64b4938ce6a361e30f57adb672f22decc92c723c6151133c73099e99a42433e638127f929d5632a30bb23f6aac9123aa5309089a1b1132d64a34156d5c8108fad4c21a6b04d9ffabd59c755283dae83b00233c6a432639cebbda711ce7de715cedba911661adf53cafebacb59ee7596badb5d65acff3baceeb2c0c0c4c07e3791d8cd7c158afb3305e6761bccec2c074309ed7c1781d8cf53a0be37516a6ebbccec274309ed7c1781d8cf53a0be37516c6eb3aafeb3c0bd3795e07e37530d6eb2c8cd75998ceeb3aaff32c8cd7c158afb3305e6761acb5305e672d8cd759186b6de7c158af8381e12a3d02483b91e4a149c6983bb78248bfdb008bfad43ed8dc682bccf330a95b4f61b53fdc575f82fb386ece14feb556e7f0ccb57e5cab561fe96451ab735cadd539ee2b60339dae5a9d1be774551b79ac5d7f70cf3e686df760f53ccfb3d65a8b04eb3e50c092899164ad555bb892e4cff96a22fa66460d347ce5587cfd2a33612f3fc3d7678139ae0afe23d7f724cc177773db84c5f0f5fd366132c4f2d7f7da7471f95abf67f3e5e2ebf78d097bf1f51bc77cc1f8eab5e4fa2c139622e527ec93a1e64bc54b9cb0cf1563e5c5f2f5c3f942d1f25432d56c9c795faa64e38dd6fb8fb351669cb5b8fa5eabf5ad8fd17dd3af8fa68998afaf05fe5ccd6ffd0a694d725598afb008935419c31aa7f3c91c06ba79eb93711868c75b2923ca78eb7761f702c7b07810fc0b8b5188fa22b67ea9b2d747795adff514c5c58335fc68fa25cebe16cc97188249fafb87380e1bd5788bd6afd14d936111e66b44c4244b5b86b5ec0fba394c84e6a01d8789d8bce5b49b0b9332c8715c4a8ae7d9cf5a6bede7f9becf0382e10dc3f0de4f484174fa4735fb7c3ea0119b22c4d1839fd0854f191c8dcccc647f0eb74de8e6e89a9ad0854f8c2d23ba397ad621212122534d21dd581d69a2d0854b192c8984744cc86d59cb42320b0e9b03a86489dd8a8a24548a6644000000c317002020100c078571146479ac77148014629e58665c9d8903310c822088a328c618630800c00060103108a1a1991c00e05d48522779c148d371e45c6039569266abd8adcb201d5411febfc45a7f162d6442b12ec4e170153eba55965f16302494bf64d81b84a815efd4dc0943ce180f08baf7ab629c9c8499e174f7541752246be8f3c8a13b5db631863aaf49ef98000d0d81555648c7847c14b947597f1d2df11021660048071c13a656548a6e583356ec96b384722b0c427526470d47408e09e4c2b14180cc5ad95fed04ea871f00b7a0f87beab9891a9a3a4171fdad612defa4a922c046bfa6d48ebb3ff51ea9743452931e64348332c4744836e80b14d5bd2c20589f14a0f0282d08dc29d21ba5ca4cd0c8474a0d45f278a8802daa15e0f29db69c55b9ab8b69e3512427371e3a43698c35ea0624a468177891e532898d7fa9f81dcb8ea478ed7156a83b0556bb4f5de5fbda7239f7b909933811a8199411242bdd08f7c7f9b07929471f62bdf433c45b441ddc3d1729395955559c408365b48f4b02fbc4a30f40615f4508f12e42debf28dbdd69a460a251e8c047e972429db657397a7e5aa3eb5c5334d1494931d258a44b8997a8e8612579c6ff7eab9470387075da3619791384bc952934912d163e3187d02943184edb20caec03b97a637be58986cd2c808b3a435ae1bd0cbf7c7970b71b0c0c2659e7d3dedae2cd174abec1675a279d750a9a8f32f68b0d2e7fa31eb5d336726f1de6a9c2114647e81689a8e96e5af9520a58e46f773bc258c76ef6c43e3be66d3353260e71b807cbdd7afda733da2b0d39f16482e2e14b528879bc00edaf1dfd0f3af295f4b948f3b874a5aa90183268f99422b6d16c7ee8376722c0ff467aced93b36ccfa08cb4602920ac742ef1c98a06e95785e9838030efe2a2e7380fa0fb2e6e2680aebcad266633ae9dbc8e8c635f2b59e71236d42454a510594214c7962bef925690da1fccf9afd9dc1e9a729ba6f55667279f7458f36d11e7d1bf46cd43b087acae8d41004048e7a930f329923a63f5a846fbe29f28e61fd85adbd794b749fb980b42c6582c65efb7d284f082776386fcec8166511e964e11e107acdcd4f0a0d006980fcd6f985538bcd1c4d20cbc1df7d2357b29bb6fe6e1b175481ef2e8409780218a8f5361cacb79b02f57503f3689ed249a78575c4f1abdc3052270e5b57eba6d742471ae913115521213622d6f19180be74db93ab3446c48b3f11ca8bc23fa9aa3220475820db5b0302b5fea6f7b9abe4a65644e2bef5febebb92dcd48a48dcf7dedd77f7cf8422ddfc3ad4bfed2d0e522b15ddf2818810d7ff8c2d8be249e8580f352fef68a6a5f85167ce690c858edc35c3fd76af0ac5ab7b1fd6eb746cc341279bf2f7c61d91f82324bda13e3a8da9ce1131c402190cc4d0b59cd8b769042475b99a3c955d1c7915b71ac17195543504464be34be8c164d9788c027e79c48edd241b422d251f278bc3e60db8148a395db585f55408decc342bb5dfb12de507639a92ca48994d6e8f0cff4194e979885fc8ade22d1e3fe856f85ebdeb3c18e779d94f90e2e1fd35f3be0601d4c5811e49f36acd6a524b2b0da3a16fbd468a11761a3510c2bc51cc8cad981073fd72401958cf86f422554a00d3bca6605aac5f99c5b80562001c5e172a3b547aaf42ebf2c5c2f436feba4d650f964d24a0b39d4849fc75f46256afab6d5f87de2f0aceedb00c7376034ab447ced86e35c26454ea0336bd184760f99c497afe6f3d1c05267c5860a7ea9a9a63d34bd59567984b52e5b96f801bc33ed81998c729d3b38c440128953d15758c013644a3f3dd818d018a5444fcfc53191e019f8cddb2c478fd4665043b8bdab5ed9cf3c4bd2bb8f200e23ed8fa9a33b2561ee00fa0e87f1c75bf9cf8ba12cd866071512eeb2687b315ede8f81e86ff099d427087627a7bd3044dcb952e1afda407a61caac44429ad820d12d2e7b8c5a58231cae8b9f62e8707fbec08f8862b18370f3e013ba87a9080f006b243df09431ad2369122f71685a7baeb8f53a04ad34a925c281045c3149e816c44042c61cf439ecf4698678a1a9bde0bd5db33199de0897254c11bff77dece2779052d87f3ea0cfe404b8d3fe9f69c86f5893d954f2ff54bfbd658bf3bf919304a5ec66ffcfeb09f0c604b0068a2ac03598bfaeddece3a4ba4a44dbdc8bd05fa1df85507f3f83fb3a0ff4dbcd2e0d123a2d19ee814181f4d57a8ffa51b4a17c96f5657c1432696599724751a2516fe913fa47ecf2d4bb36530a61c0330918e5d03d52ca77251626c03b6bc04647c8ff6092182c0496de1ff714dfd35838410e6ce2c030e28090974783edb95f03fbd95a72c81665171ff966f89eec2f6a127424e02cd1db34d0e4e8c4b9a27e72681068bebd87bd02b7360ea2a425f3732a4c0f2ef7f880ce50c5d55630d17224383dcb0b15124660068041ef581d14e86b6f3eca6459281aa79c574e9c850fb0d833cae20c6812a548ad892a20f9ea6d8e10cf9eeb0e1155aef39c32de8fc337cb62a0fab9a650883b56a4ea2ad25bd790bac2eb4b4f955b0ed77eacc4e01b72b7173a4a16a4d517e2490da00fea337db920d81b88b0a1c19e3389b050ba33849fac6f08106e06d73c230fb4c86f394dd0b06e07b88303a4fbe840d5a796826c6a3f2c2dbe30edb357c82413e62fa45ee0a41823a6700555c3e1a528895d49f71281e0d69820801ed18409137937c403f02d9c397880b27c9c352ebdb04ae7f8c625b4014688434891b4242e0d66ff1bfccce0149433466b8e52e7874ca9a1a7e18cd72d0b181c02c8cba643647626d7f3c5ee702869f9e5228df59fbf2b511a6813da5032caea69ce591cc0948ab4fadd65cd73a837df627b58e07f7d14c4f22baa9bd3840c2608262eeff213968e3f8d6c93873b8af19d4749494b0bfd10f97a584337a5b6500ed2784fdfe1df56720bd3c5019ea520b9e6d1f72a5a205ce6e623cd832a6ca8d693265c3d02216a3838bd3fd2c5f4a873f37421578b76882d7f5e9874b7ae8aca8f8d1886a55f1a94aa4c95b0af10cc81c3563c9379fa813bf8060a6974285c1bbfef1e639b00a4cf7619191ba89ab58c18fa2cf09f6e8a5d97fcade05d49291d36de67774e3cde338f876663050d46d0819cd014b3e83a16ab2f547f187494d1b45175fad43a6e89c0f2275812c2f351df7b25ee6e289758a5ac649f5a9e9dff5582259ee8546e5eeea9bb2ea6d15d74f7c8f54d233259773834ed6040a766a2390249e8b8a6f7de88a63a7a7f1b789cecab7bee6dca00463eed3b8a48269a0781db6ad8fd8515aed71e0f68b90bd9d9087aef0b2006445caa92c1dc2cf9c7a5727865c0150b87fbc72394635e92b9965fff9f6dd59a1520011f84755fc9dea05d58f68e8970f580c5be24e4fc9f38fa636623256f4a3118dbabef23e9b4a4fb752763651ebfb6af97d1510ff9b4e4d7aaa52656a1b330b1802702ce29a0313f415ad5e4c4c06757fb67a5ab853f6693ae8c75291ed306f3ee0baa3c6cd9f6f8ee93c15f2faae4569ace1e1c830edeea804ef0955cb8e9a084d87e433d609f18ea0a7e6bf5828d4b099cb8dea1d589508298f3e13262514323c8a583d3a6e5409ac5b8682dfa836056be2154ab2b7fdb34540a4237e1afefb02052962694bce1bd5faa753d02ff1b9f96847546f308d555bdf37dec94e62eaa1768c01a0fbbed42b6f4c6df82363a67e021fd055734c7a538f560102579cf06d39eaf131b529fe80226ad298ea038023cb51d572df54a82937899fa9fb2f0d11775091ea3ab909e240890a714b0819a51af330952f4ba54a35963c2d79d3b432d5d80d53f994db9708cb1e878a0fc78523d7d756259affef7d2126d207f02d3c97eb2bc74b4a01709bcbd8053d33db99f485b852c40c89a3d4243dc457c0364aba04817774bc3b05e1bc97ceb0047674bc3b044dfe4d7651b4023bce8d5a889dedfeea88e9ea0ae8d45f8bcdd127d601a3cf45aad8eb19faf29bc45f5eee85dfa97bc4c9466eb93d50ef7a6a91393ad57a72912a7e3d41bdfc26f09f97abf03aef1e713391592e0fcc8aaf9aba597fccdd24eee192521bc2913611ff79b90baf53f7883b13b9e5f24071db573fec50bdf9d4a35ae5b13d16b589f8cfcb5d789dba47dc99c82d97079c8bd3cce5fdd940a59bc4bdfc6f64864d1db63edc37d462b93c50dade21ae4cac37c9b087a7bfb4199bc90fc619172a3667f65f29a62ff69a390f3ee9d90f0db13a211087b9a55f1533696548997e1fb8a6cd0a86bb9b9b8626e97d21d8f374a29378dfc38ca024654b133718a717f35cff6e507fdda1b7be4d696a13080dea8cb62d8d9fd38262aa34ec64c9c64794cf6aaa68ee28a17f30d5e3bb142df7e78b814941ecfe197b38b407902ee7503ac494449dc7776679a17a9d85e861a06760a3c25607c000095c79f40b628926984f761585356f88e5b8b03539f74797eb8acc843c0e33875248e12486c7b3fa240f1f539a754e1edbc0e317d077bcc4eecce39ccfdfe05286434ee723362fe8b11580686df09f986c30ac13953dc6febbbd2cab41a6b815f71daad4081dd43d994ff7be7a49b42768d8cdefff2b29c004b00fc7834c4634ccd8fe3ac6ea32d42e133b45900bd57d78e07db75f841058b088cadffe757ae9ccc5d2a8a4c1ac5712765427ac73b22c85cd4df9023a8ff0619bb541dc542f775be879db284f64ae4fe80ccb8faf55ce93f748b05476781178279f8edaa09397da7e067ee6b7aa41afa870b3adfcecfec8f7a3c69c84f54523fcb786f1dd0d617c1fb3afc86ffbcba4bb39c3d95a2c75ca4595ddf5483cb921e157138aeff7ca55cac6b180df3e98801c3430825493e2055ea177e381ad13707e080129de48df7c8fe7c2ab31ad7d98ab078de822c5d785624074c5c50e9720125d8bf22706713d7c9e78e5c62d44044b303999c1db1cdafc28fc7050113167c72789daf398532e6ec47e8c0c854fdd6137b0e3b6543766dfe9206422e3bca2012edf2b37852670630012613274d07ed60371d2afd9eba53b447a775d1490a24bec01ea7919970c462c994c8391766126ec121c2e4e3134e27861ce15ebebbb2491c3526c8beac9386f6d3117b4842231e54203b77f954b7fa88617124fa7d4418e0e8870729241c55fcde99c9c336f81e09ee7660bc8ca546de01eb5c6a53c3e4fcb14057af61563ad54a39331a7b7d08455c4c17bf7b8424e6c51f6448d64f12bf0c00b7984857c809c74b67e7b1f1712f507c1f346d9c4c5eaedc274ec0e79219d329c9ab73440b57e26186aa4949147c022d4eab98d803362961af5dd8148bac32dce95e6a058b75613b72fa8278eb2e17fb44a1ed8d09caaf358c17bc984b9a1d1e622b559a2df796a14ea302db353ba70bae06ae9310ab0d9bbc393d93e7f6611e885316d7f699c77f31626d1e62bc36a25ebd9fa655332ee06ccf324687cecf9b23acd81d2be70949bf30523db7e5073d628d6cf07a901b2c20920ae2b2ef083d16079240275c2ff4f7e4f6a6f3165507d159add781d9ea61cae626a8fd3cfb22e4ea6c594bb35eee3631b3ff4ab6883775909dbe78185030e224111b63718acd7e43098d6c8c4c43f5c9778e89daa1c65b60342bc0ea1c84bdc8295763aaa85241a7e99398962d7191300d4e3bc373a3b56908312e232c2801fa288cab55879b3079480f4004479cf73e0c81995c590e76f401e26ab7eb373fd436b238fcba4fa935767ea33de994a9451cfa293d64e54ee5047f5045991447af22330856e9d6b15d064c72a9f16da2cc6f29e7db530b912cfe4a952ebc766cd13880d3b130ac0771b385c7b272df56de087b69c1700a021158b28a7787f74d7e4cadbe4fe745e5b6838d0e7cf5700ae2ce93254966d0b555ac1c99bd5cfa2fdca021986f0a4493ee4869d98d08ce61065d692f0c856fea8e08b29da372c0434b5ecae8636f308d0ccc2fe234418910722601896ce7900b1d3399f2eba9211f746cdc00a8d8caae3d6bd9b7862c60fc544794d5c341399b8f2b7014d5ac99e135e9db9c4b6cca25f1f8d36583ad7894f1dfa3dbfd49be0724f666278b564fc04029e84c4fed0b1784223eb49883ccb624d2b0cf148f1c3f96fd788245829eff1eec55513ada0ed4cff1bd0c4c7935e4f10aab799588ebac13136b1066aa564e3b664bffa07b0f08f80044e4114cc136ec06528216338bccd8dac2605dc7507ef06b9c99bd25c2e68c5416270d1b42475d642651d1485a0a548877d0bd3ab9fdec6ce27e20bd403efc3a8ed3facbb450a587e4dcb6af9dd56caf67d09654fbfec666e7e0ad8b0bd557063ea7a83c749a1871d60aeaa97b3b31a675e8a8f2159f319ed271f3485e9d162946e594ed05341e8112ad442cb13fd702c319058c82b90729ce5bc3a633c48c29005fdcda2a771e28b88ae36a0754a17d6e1db02e9a50deb5aa1bb15a426d6ba415078120e04e577a07a49d4279710dce577c8edea00532371a25263da7c28d405f8f76dfbbb402f605be1c0ffa0081335e6106d58ffa8a0fb14bbd2efed2c2778bb5a48214d3480cb035f754854180b9f2cf3339c98b3ffe8af7bc87020f672c9501947e662e21deb96749c3a4029750d84e97550bc2e3736f296fd632a281f274ac146340ee7a99b7077ed4a3826dc20f546cb0e8dee11d329ca5b164e70ab70fde8448dba96f4a660053d3812f39a4c0f7fdd3243ad6b73fd20cfd88e5b3baccea8e0799e7404294f7750d10ad140a3e9ad4e906efba053a66c45de1acefed67b9e6f3682a4dc2580b85f22771439fcbd66cd9d1f7d910dd37e6fef28f4a8c261513490ea30dd98e36e3c84de8dd371c7fcb831088b91caa6bb6dcc862d42f645696365e2fd29a268e3a5fe30a45a365e416cfc912e1bc7d5a3267f09e2283b6378af0774fc0c4271fbc6542e0d1c009f5bc6758808a29c39e0b0e58316b719706f5bc183955eb7f1657c0daca734501c8c8efe6b3312a3217d5b60443e2939146d7b8bd3c6953b771804ff509ba26d2cd10a5c0af8aef7ed6291f617241275e66d8bf469972b0c7a20d3577b98f34f9e833f6c5a2fcfec6147a8909f216ec7157e8281815b7f4a84d1f3a407b3b6bfd6f4b16ecc66de3889d41cf3e01d29d9af03991f2bb8623b411d0588168ea9e98143320fc6ec3fd4c8748549f9f82702184a087b8aed6bc3401e6c58a6e577c0aa1aa6f5cf53e8605542c28269221b660c44da589957f4c20f71ca2627ab041b1d4a84b9556213440bed81808d28948b23e53bb351b9985318a759c698ab3eeea9b2cc51ffc233a313031a9f12b3edb2b02606788399f7463b03206ee464c13a77992f18f34c6734db317f25e3d4a97f1c5aacca81186cf7e8f0e884f6f1a11dd9b262c3fd998c45c0006e30bbe1c6d8152f02ee03decdedd1dcef9158e1a9e824ca244ac637b4603725ea27b116fa2112e1b81f0b8f3d522cb0344a8a4e9c34f47a57f95fd70cc608decf5fbe8c8d2e60c4b851c09e84568772c82f776d3c62bf090f1a05670d6f3dd2049613d271efabdadb67decfd27b1186f47a665d0294b85227f0ddcb106e8dbc6e0ddc773d27ce4f628d1fbd8825799442afb4b7c80b431a6cc9308b3db327f050cb45b387f2c2944f732edeccb15f18587bc088129bc2490fb997e9a40395af0d2c6edbb6af82056752707eba16bcbaaa961d74ae042926972cf9581d153140046b467415dff0bc1794ff325e5fbfbf81dc19ad13315054c7dd2fbddf1db548423294f15cf2e3480b3f8e6c4b7cff50a3bd889cc2596934fb4b94d286b43da0e9a0ca5f4968207bc815ae7b76a56db5c97ee8badd5f9e48afb6595ddd122e07b7be4f0dcd87cedfbc773a7a2e8b26b83f9d6724ae1119dbfbd952e8dbfdeaf858f068f759e04128cd83d7fdfcf4f91b43722f4f859ff4f59fea52f300083f8953a909edf511234c146920fb42e9e026277b7d902680dbf6529f3bcaf8f972db632bcea7d532b0863ffb74a919e36f1dcdf3ddf252d3c83c89a4576ca5b0ded6128d21f14f8d85c3b4a4df694f2da076d5f9967ce353565df17519240399c1de58914504142a472b1af029db0302c458149aeb4bfdd78586c6f47045c0d940780ba4e409e2e254247d1e48f4dc7393ae5f7dbc25e188a6c69cc3b96762502db7ca0416bd2370fef3c4a27fa7d73c5a18217955361e31bec2bb50dec63f4a64fa97892e3ceef694a34a09a4f3effee19e4bbee6ecf0159d433640235e69317630cf7a880d9e0839812371986efccc734b65cf757165b8e2c2c90587001e52d6b721c99c7d91b72dc6ceacaf4e641d3762dafd19faec156aec13eb3bbcee97be64c7d2c7d425eff2e5df49ac6d165b9451b35eea3dd525573a7027e19e4ba56f54ca589f245609823282276224e61cd90a64c62e2b81c6db0622a17b25911eede36a2d4872f16dc0c69ae81f4405eec3d70356e347d55f76042854a929e8fccbff9939e9c928e9a13e9df3c1fe4222d79325981763fb41b3498c7c35df43472331d8323218eddaa0b9dc69c3c5e3a0984900afe70b1578ede9db4bc22805538dd4f578d0ca8e2fe9f56867819adcd1ca2202feb5da1a7be1c6648d39de0acba4778356b9a66c4135508dca353d9c2e795cd6a588f0da5eb2febd8f7baefb682983f5b35ca35c206b922acadc11305599cf87295bb46ad1aa35eb4fad8a72dabfa812a653bdb29169dd9a5a424202476dfd8482c58a7a3268eef39456ad549eb71d12966eddec2ce57a672353adc5375724cb536014952a61612c41732082e02d9672e46dbc2ed8ae853cc4c08a51205969dd2ae9f29fd6b9e55af42118cb627aa740d15d4d286c1c19601b2d000e94e567623ed02bfd2c8843e0320c35c5aa5453ff38757ada16f818167480f89603a01eeee6da32b371f7a92becf8b83620a27d53b6f7269bfa8536dd74154b5b7bce80ad6e88e9a1389e9969fe676e024816588465a8182200b1bcc26efa6752fc0c7549f6f737776e7f1356f6f0d0e426ad738e30577313a34303f557937e501dbdec92d048810b6ff513bfccc0109b221bc6faca17745aee4d5e7303f2a904d929dc86c87445e49d397dba46488cb43421abbc0d01f71a1de277cef03cf308a67eccf36f88e6f999c5b3b7b9abfc417cfb31ae39cc99243396c9d50d5611c80c22d0e48db8a1c039265cb50b6216edc220e5f43ce11980561a1ca4a20587aa00a195d79ee2c1d9c0f46dcaebd0b38a4e2a89e2abdad87dd1a4bb5be01a43a6c2d769530ff0717fd05a478d1361e780ff6870e35609d916c4922e940fb7794a3791660c8a5e8d9a232324cc9828a33fe4d67975bcf9a4bbf66894fb4af02290be58b4c8b295b7213456bf01a59b430e08ab8d802cd105eb1fa10525c294c39f79c7975c5f0387bd1c307e70c4fa81ce46ac9877407b1fb8b877d243a09fa908fe203dfa814c0a8b01feb4cba58b71b2460fed5ae1999bad4d0eb27bae155b5977b656702d4661582a3b5bbc740fa22670d1419dadbb3afb6bcaf908994d605c2cc648676b4d1abbb24206fa42118de262088e6d1bf39d134fba8c76b67e1d322ac53861e7f0c7dab816528b3faedbf0926f5b3d208a998872057d40a37e909c7946e740a48525d6d146de629a3159249279d6617506f234a4117538e2bf99816332263bcae825925dcc1d5ce374baf9a7300cda69573c3759a0b42ceaf87890dd2a31aa6aa666267eb5f9ec243e17b74da1f8fa00b3b01bcc4cfaa4058b676b78b374cb1b2380049364f713a90c8c6684c3b57857fe7d46402e3eed68edd7e47911268c6fca6be48d25191881ae33bf6b330e14a4b7dc6213819fc4a45603468892a930d3a10ab95456ad402ef499bf0032dbc28ef854b87044d2267dc7e99c37e3aa204a8cd5744e403957cf73624d4935cef405f4a5108c8661f53eb13e34013ca6e779c86752cf1a0c474a32c89f3e36d6c1a7384d303400f074d6c45b791e8249ad9a86ebacee30c254892965c3848c7e9a317d691f18bea7d06d5428a5618c92b7bca6c3cdf2ac9b33733fa098adf15c09f21998032f936ce4b7733441b41a03481a6b555fadc0015ab0220d355208676880bb7a81bd63d74d7b281f0a6f05641a8e09f8acc80dca2cfe9ec8f2e2aac0049a46399542811ab4d1bf208927cd20c6a1c30cab30a4eb42cec53cba4534a21c3d1c90055eab741de7bb35138e406abf79ec2f70595cf3ca1bb41bd12e70e286c09c0f3eb4b21462868b0556c08f0259701065da0981ee9bfc6e6ee2e38b6ea0c13212ab17a1a3fbc7855eff584cfc3abcef8e34cbd40cdab5465a1dc05ada3077379659fefa42c678c19154c5fc908ed731db3d302faca9d4c1c39aa866b3e1be292d78a7e163592d0365108a68ea9d6536236432cf408dd81efd59141fc00ca5104731c1537cd4852075f301431d5035ff50be1102e0f4a757d55162165dda445c6f4780994fd92b9765c4d7bc95fadbcfb426ce2b62a108ccab36d0b13188f6d7d697df502a188a4fb16f4469a05a9f3c1b26afadfff53602c9f0d9c324ac5d1a9d46f93a2d6c16e573d375379e7d142c1560ec8e9fc791d1d4c34ad7bf1a26a20d624bd0f0effe2e0463b045f36e3d1eb915bf9fe341b2f9672960cff0d90052339ed522000eae186954245d6904cef900b3d8f1c22b6b6e7021b765321d04d9f88a89166a07e90045ac443886d3886c5433b634a56c456129534300c0a93b53d0419ee432f65f4b94baa103279220090dd88545f2464f741f9da06e09436db5ea0fcb9ac4dd3c5cfd7ead8aab8d79d89342397f59ae76da1ddf3a2d8c2d8bbe39db4c4f9cbdc695bc7fc730c86898ee304ea82b89795386aa41b79987bd492ce797e55c8295ad2f357727b10c374e0ab3a95cff0f0d641b620d8505288d7479a2feb433bcbe3d1c5b14bdb4ab48fbf92bad516613b49c771dd86c3a645bce1bcb4a7a598e25ececed525375b1910cd74fd474e51c87483d2fae91232b67cfae09897b287ff8fb7c29c74f99ced9d336059cc60c3a56b514a738cd684ec1a95ef13ac1d8d0bcb8c9b8f01a6d9ff01cbea000b628bf5ae0fe6a78381d01d3a414e8d48713085412f8b95d0308ec46ebd168a7d47719d160abd4682c2ea88722336ca954ba07399f808bb1c971eedbd5b3e70f259ab9b4ea1909d21ca95eb3825d6730da3494a3da2c14aaeac0a0b1c0c458462709327a19da7de3bf5e9a2d749beea7882aa74a68aba163110222052804ff3b1f966afea38645c79e7b137b598cde8afb52c5784b8d635851c098eba578ce0c572c0f8051028e85b8a3a227530734574799c109113599e827a43a4e196f7e01ad04ca170281808ab447b19307bdffe9cec70333ad2c6359a147c8336f46f1be2fa3c35842185ff40914677acc212fdf7ccf729e0286fd198f2c8aa50dbcbbca2372238658d62ff7a25cdac07715da882197f5cfbd289626705dd59bb0cf2f8c110926e8f2fae9cbf5b4294404cc0aa2a4e8cb43a84d5d0889009b02d717261c85b06384a00287611582d740221a9b6da94f67a9101c92a1fd4258ebfc5fd90d1abdf3b383471c1f8f619bbddaf7825a813fbcaac0fd35ca2f058a968f050a7a61053fe2057200f7f29ce920edc4dd887eeb79b80d243130af847418ec79488d84151501bf30a05c713ca183e2f9af7039ce585c04f96e6b585e6299b7f965928788c3cc0280e0923792bf8c03ee02b0c45cd9cc881604d3eb0660059d87ed2b09ec663879ee6a3bd1d89119b78f36ee183d63655ad6d6b208a5be066e571146d7bb364c4cfb9f4a550586f828a16ba96b4eae5b278e78f5e99ac581febd50412f5c8ac18a651874d1d18a25c60481f67d850cf3128f4e1e6d9ef440f101607fbc91c25abce08a4421e690595810316fdb3619f4f9a880141b1c9115494c0683fd5e3bb37992a4f85b921806715e585349ddb1eed231386dbd403278fa1b57dd658a64580f1a4befca0eb4f9c42a3734bad2e1371b91c3d7c072503fb74818ab6bb01c56111db803b4d1f85d66de84ca0e6f97c94ecc812aed4756ab71bc959a0ce03276d8ff976fcfdb930fd1f7f79ea7252fe1365d3654103b664e0c628c9b1515049ad3386c1175242d01d3803fc419ed2e42016ea6d849c63423a6c5842b86c343ad1daa11dfcb004a47a32e8678a7ee8052132dde0143c27c2717d2a38e105bfb09416d7b03f99f0da0c328f0160bf4fb352f061a66d88e0366ce11fe544ab9fe3b7e72461c6efb1ae469800c63475632163614017912589e73a4121618ab8d9532e980a6023304ee1f29070c1808c3235fe8dde66c1593b09c94113b012b450d4dc284fdcb5433ff42659220bacb21b78b7245d9de3ac08d126fdb838ac4b62523ab5bbe7b05702bf0efe7ce8b7e08e1a301be31c6e75b27ece8e5b07793c0100006d61dcf6920d6afdd96096fd263609c36633b09a66188e5c1e024621cb5eb1d293aa5110039cc852de43e743a04273b19d96eddcacbd90fe6a8a045ad039dc6c833c7e219b452dfa7cdc53845c07ea2b510245108f12c9a1e7578fa0665f305496085a110ff077c9696799ea325c94a49bc11016257e19941b3fe25e5b8e312e1be0181d817584aaa76563606cd3c233f31e8d5af1b9e1f460f067b9987859c344798fad4f5952a11b6b05afd83775dd0d2fdc518050bacb3fe8419fb33bfd8dfa22e064c1e9683c7ed1816235b58751d579c7045b38a17f184dfe91b8e212cbd66f17a8a2ba894ef2151c810e424cec51c4e3b0f220a458959865ee5c9cd849b67483567dab2aa5d39c1fcb9e1d48c892a927e53c2e9350902cbaa5318caa849c7013ca9e53a7e40cc800697944273ef2c8cad16b3519da82ee0b38c4c69efc42e6381d5b5e6bdfff2d91dd04e41825c0831e333551a948a15fbaa948503d9dc42b9e6e6781ab9318d5be1bd8a5409a40748d1fa47179d35557b505e01a7e2238dc305d63cdfbdda318b92a726d0089456345ded45770b64e97b209b539a967dfa89fb173551956ccf9b255728ad76699a2b2d8f0d83fe08a39e962768d5ff1cf3797af26a6fd8a7e0a0d15e2c17d68319e86bac5ac2156106ecd93465b196bab14914352ba1af534db1662be9051694c0e399f39173cac0208f571c84a28b1c00066e75d3fbe1e607d75fa9b4c93feb017e129d4b9109c06c2d46a3cb16ad54f0eaaa11b4c27092c9217ae7155ccf2663595da0362648d1055a4a1ef5873ff121f5f0dfd1c84ab6e83a10d2001d94117799f3688ff1e83391b86d7a8e89609eb99cdf18eec6a37db44353e411621bf08dab381bc6b2bcdb7ecc3a1cf2324475c2c449bd9a29d4715727c898d896bb992b953b12f716bf65c9d5a8c401f34559171b48a1a1fd43485b23e5cc11521f021c7760b89e87e04f0801bc417a3641385c83fdd1b04a1c5d934e9a1042023a577fa82a02f4953bdc2569ff2e2dc0eadee74bce5337a72e426bb118b1ac2d817ba16d7e1a78421c72ddaa484d70d0914b398c4feda048aa14658e63b1550921ea43a46cf927ab3a198f639112a09c4b49ba96f574e61ee50260565d164a4faca61127f8a37dfe2a85305e5314d049fe16b64eadd94d8bc7dd372e1d302fdba67832dd87340e67c500aa7dce1e3c1542715534c8e1568d74f63d5e4021412df021cae1af12a07176ef716899639d26a87e2baca90750841c401ec678e9a71cc396d082a8b22b567fa8fbe6865077d25205f88c8db6be8ac8d175a30709504048a8c92230f96c5ef42760e7c4739d0f8472efa333b04217e25a8bd62c98cb31a8f56793cc996a41be59427d264c617675b024de21fb76cda7c2811b03bce465b5e5efcfe1d5010eb6e5dd5688e18dd1c311cd449a0f84a28b6cb97162e7e9d28f9b0720ed7af368d6d07e0bda580f57f1814636d3d2b659bc0ff79c57cf3aacfc72a3a5bfbcaeb200472151d0a2aa9c4f82a88779bcd953404a4bfd48fd298b1f25766f059d2d7534588834b22d457971f347df01e7c63e1dbec0be71b93e6a3028ae4e3125ea8fc828398fe5e35c5aa696189bdddd90165cea06fd3daab652913c0056882ce20bfcbc27bdcf7bb78dfc3815de22c17702381a9cc0cf33e1a758342ecce546ecefca6d3e04f0a08fd2785193a05ea4b0eeca0693ba2806d410b76fa08ba8ecc7d44990ee203a9ba597b43d9e5a01dc4c00c174313e44c12fd30064b2e14ed1568c257cec8a164083ba9c9447f23a545cd35256d1296dacda074f1861ee688a80480b22db6010309978649312e222e11ba45da00123c8babfb1c405e1fb5d822e5d8b33d02fc96eec4291483f143eee1d4d20f58ac1585d3165f357955b997382f5324dd7b744c014d5a129971cc7c4e502d64435106f7b7b72d691c3254e6f1a915c2894afeb631e049768957ef5db8f87811abcfe1be819c21041a13d2d7d8a8fda43365aceb9ff3012336164cb8291e77c3a077f01621de640d2867f232dde91bf3b12c57375e4331379ca53938bb0ec39284e3eb7389da56a4b26142e7d5e65138516dd76d592b91386f0c3bd636089a830c75410348b8d16d460a42922a0acc9e0ee7c83a69ec30f4d28ee1a5b8eafb288220471a5a56f0df922c4c8bb8d1658568c16a400f0881b8608c4ed4c563f76b7de046c20c1057b701fb4e07b205396f1b9ed4b7b2a746dcf3ea268ff03c2c44c8d2f1defa4b2a6ab2f67239da095ca7953372ac4d04839f8f5db27f86637ee5968eae146d6c09e40504f93c3240f6de00979de2be85ac4d582cf38147b519e7ff6efbb8b13c257c4bdc56032fb48045e9c67f7501b5b9ab153800b23a772acaa32eee3755b9ab96557b70f31e3dd3c38b651999080c010641a082067824d65c957189ccc14969859fa01fd45a501bb93cf29521e2fab145ea8a35808a12e6afb7f456b07b8d3f9a8bc56bd6e099210bbfe2d964328e95a607d6bf730a90fc8cc33ad98bcfa029c34c26ec6dcead58d112fa9eff56b8693aaf865f9a2ee4fb334ebecfd6ff208d1fccd414c947701e4f14366f1ce0e1c49df45eb6aa1daa812fde744480758ee11a77ec163417242cf34c1ceb5a44930ec498d7d5d7e53bec56c417a5f294e2092a7707ae6e8e9fd4514ed973fea76a4ef0e1a079ac89e3724f6a8c5aa8caffe87aa5f752cc1b1a53dbd8e1c1bca1af824ba69368a88a465bdf1a8aba51c91ec88317fae7afe05022a6a769ac715fe454961a1825cec0d4036c46b2b98c714dabadb300aa4fd373162d1fdc002aa545f47be46b3797163ea712068327fea8c621be43d5f3d84481af30dc036ed43e305c2ecbf54792e09063b0f7eba03b2a6505b0aaeb85b0fb8710f50ea28f3df3cce780281910b08029a8360a8bb4020feefd9b253c0192b70be404093a1abcd91e07dfab4164348ec4d89ed05551541016b3759a1961f486935d9f11104997f80a042bfabe0e5708e87efc1e781ac37fdb0fd00b16de8437aaa3dac770f0e62e08313569b3ec2f6035cd1e34c5abe807821b1cf602cef440c2d34b221de85546e76bf87ff8aee8d745450abdd6b3f022886cb105f4cbfbe1f244c4afe7b179fc466702f33063f554aaf833a89606283768a1ba45e2ad6ff176a2eb0c00c9836542e01d48eaf50f4a8a4715905c7be92cb7a903ef19335f9e306dbf2869540b131bc2f5a36b2472004bea107fba178e3f0bd5070369f4de2085f099f2cc5d6ab5363cbadc3f8ff7e12fced00d1914a6818bac166e0f9504d7ee64ca443bf1d5980c24b72a025aa49e63e164a550a48a58ebd92d1aba9fee14516a06327ae801af32eeba3110620f56c19800690b92a90f5b476bd7750111385d3e57546aa35157825392915f9796f5cdfccbcecd19906a6844925150e3678a1c6069a93a13640c52972052a3dd41cf0103c3f6f403d4fe46f1bf154d8550b88e207ea8de732263d7c0b767890ca6df457f001e2f17b3325e4cdce600704cd994aaacbb1abeba8b378710eca4d174516a8fbe91258528f8bb4da20791ba3c985eec7d1b1933c711f498c8c07aede45a4f1ca81aa554f1376168e0831840a5513585eeab53ee5add40156fe9bcb571bbe5ee24bd0202a4aa3a3949778edc83edf359ad6f5ff3dbe133eb7634cea3c359c266d168791dae33893263dadeba0fc8c7197664f3bfbf9a8343f981204164b2b176028b7c032a35e3d7d49cb0174da1e4e0a6715439e65cbbe36aa2e3ed2e5c29e80aa1d574ac175a4bd190d52146f6d87fe4b7148542a18f722b11e200dc715195d69591d2a91dcdc6340fc19645d91a4d2bf3e589b711b4e25b4d9af5cea1a6bcf3c5128731b76c56fb9d7305b45395032f21b9dc99c34f84ceac2470615cb3362669b8ea31832eefa7742a8cd10fc60d5193515f364ac2208485d8b95a89f86bc614e5f1dc7174f3084a55fc04815297aa337555501fd8b0a3c76a3e65949c2fbdc66809796063f80db47de685873fe3960a7cc8cdb3d445d5b858428053f75ca8e08d5ca2b81ee5e2d33ca605722f987f98852ff183efd5e041f8b0f95b597e5a963fee2928534ea0bfa0ce346346e5109da0d5b8c2b9648efe7417c10e90eaf545f459ee70afc5e2a57995f1e2f310f1246835faef79b8d1f6e45ec0479fab8c5cbba917611f4264ef55aefad773507bc89b766e9a6b2763f557a7b3db707646197b04a1dbfa2d599ba5245c662db139c9520eae1fafe040a1b170da5732918a8b90be93121de9abe65d5c24e18d55523b67719bd26bda33d0467fd2af503b953ccfc6837d34feb6a5c69ca362517738fba3a1e419911f6e760f5717c5310da7d980176ee6a36387bf346886f0804055dd26a8a37ef2a70c4a8d633683f302e1e40b27eddf0b8f98c6131861987c6a93205a375cee3320d026ea69843c670eaf3998ba8329f251ee9587a98a24023cd334836b9b9b02d98943de229f89d045731957c7bed18e3cf4d60a2ca82f3e9fac3ac79c86d1628ca8e81723d23d360f2e41cb2cfa44d19df008e53e1564b0a825e7e9a8e6871ef7ec4590642c29e32a399ea7c2dcfa4d04358ca4a29b4fbc87f7b67198348d252abdf877fb7cf85dbb5e1f6cdf19455612c588a544b62ef33d6cfa1a8d70e3fc5d6a42224c1d6247e9b72e85d2757584ca5a35ab0d2b2558fbcbf478ac9238286b9d7a68a3c0a74d8c3c040aae23a075f91523508a0b9d53a49080b8ac265670501f18dde5bb75360d5a21aaad6beaede492e994e0ec8fd5cbdb123a607c19f5d2c622f29f1e5eb9775372a0c48b36ec1e7404cced7982f591bed55522c83e0ab6f6b0333b87714c0e63d2076905f46d51e1ca1a837e2c461c341fbe046d2cb9669d2249f5ce983700e5e117917647d6f554c0feec6160864e0ca9eb41a5766cc36f664928dc751e211981f599a76b76b295853675b7a288e7ae8c716d2980e82790cea06d6949a1c911d1c5c6c01f0facac053799cb2a3632b156c152bf6a752fb1127d5aa5f9da712b07924a3606345e6290d2f682ebc0d98795e9807d83142dd584edc20c70a4aec821416606e580b98bec6bd9865a8b97cc8c45eac62817dc3ede533cbb7cb41ac60e07e19876c1bbcbb84f572f6b141833e43aac1c56ef69e204f8c25b1a9866a2084b6a50c2dd5aff6595b10d80f24714f6aee4d28293eda0983e55ad58139c3b6285f300aaaed90a4d0c5a2343eb14639788a3ae438e0d00388e071f6a807685ef5ae6d4f69708d09fb612cdbdbc6ef7690cb1a8bd93ee6acfd907636214bb14f1eeaa5cbcb3e0e47c299f971a5c36a15383be697d943224667fb8b20d88dfe461390a0c888419f071d949f6734be01e27c00649f02e5fb19845f61206ca422baa6191f25669f7a3cc2548200c12102ca9fc710971376e091bcf311b2bb68e7035744f76c791591e800a6f658d9490028e08318ae546acbdf50b464eb5e7065d62c7b99a2f0bc12e6153f85fc6ac817040de55e4699b25d0a8862ad4ece6e13f3d493698663ef84876a037c9a1afa6947320b4cbc210755d2282fc0842dc1033b50d97e32204c6bae8135a61f7f0a705820c8a48bc159c02502833113ba1ff97a8685e663a6cc98a10bd9cbcdf89de7fa66620398421c120d8af0f112e037dc6480c41a56934fd73de84c0c6e34885f59b5dedb85f0c3bb65e64221006df543f7be051986bc8a8fdea628e7b4acf37300088ed34ee04b639cfb22972dcf7769e6fc83f51e78d68aced838011ec4e8efc4d1300b0d2846532a41776ce2370a59eb60e564ccc2ad8d730afef400478e4f766fd16c789dd5496b953bdb40df0f414878d741f8ea93cca475a4388f861436cc067b402dd9532d0d8e16bb74c318dea996bbfa2528069e4461359019872f11bbbb57bcb1f78a2b11363b620be430ad744761212d12ed1ecef313042a772243c6259b5db01411a970aef4b9cfcdaccf64660ce5b57eb8d1deedb10ced76152c150a45b7e574d755f5f81786e7f0791b1e9a40c94b9be8569e54f11def341dffb51abdbc982ccd1554306541c373f7d277c2d1918ca7645e88558a3fd6507a4f197ba1de43492ebda56b365e37079d703466340bf1ca6628aaee41c49ef403c33434754594a116d436ecb273c5543274ef489dc059ec964a07a831232b3fa697cd618bb2536048a13b081e80544ac87e1b9d402c8d7d5d769395a282fe5c66e0d7a5b9169ef5bf75c78c87454a00d3941e432d441c19afc1933a9c8c84842a4eb5934a0f98d4e3f4c2433a686bae7985ef260ab81387815b6e54660b0d7e9aaacc4fdaf5bd364ed1a484410b7a93fb156d47733d6582fcd80c1a90438a8d62709d1670167f54474692ceff1a4d7f2568f37fbfb00e096d20e8af92b4e18ac2fc2e4cb4b1f19294d0a9fc5ddb4614679524609f2044fa0c19c8d96f345b01a52f9540e69379ee4a11d25cb6c47d142f8dd1023f4eeb5a86af6beffbcd8734e001bb3274be74457563641850085fc143245c5d12124cf446f9f6b6dbd792075a106d564e84b1e23223189013b238e3e2d11c7cbe20c6de4011aef43f921e44cd121de5cd0c35454cf4ec3614685f61cba7d74328b0c865d62b4b85de3db88f387f7a43bcd0efdfa9233d0360d11c7a8064272890718f25cfdde928975fd238b5544688dea2b0fba373f7e10062631242898d3ca0e6f6612ff306f8db96945f8d02c7958cf2c7bde4fd3624363290c5cdff4619125fd912124bf5247b62c24b463f18737d2e2acfad6edf2f0d961065017fff6611a957e5204efa4c3c2f074b6429e7661e4d408fc82f80433a7c1000f382351e400b15f4552b55cc68e97776c7ff0374c4025aba96905820142adb1c7960292f4fdcd265f2a76dc443f32206ccd657da482933825cdc629e87f4ea7dea69699dd1a603d7ad175cbc1ed53a9df29137c8941239af525b71c5d0da8ddd3e9a28782962e0105153371121a1255b4a9964fc08e408fd083eb39f56a6ba64d74f4045cb279fd97f2202cca7550865149fd920e4af55d4ec61f9f4c65e7d5a916c1e260f9fd9377d7c669f860f1f373fe68fcaa73bdbdc0977509fc2a43ed5402f29296a5720e5a72ae0a729d4fce133bb4356d4042a2b6a06f9cca226109fd95ff9fae08af63d6a1ee3f7f81ce3b9847bde38ae7ea75b502afa3471d40c12a4c9b65f3a396a0ef1997d27278e9a42424eb6fdf289a3e6501355f6048aa326112250b6fdf2c951d38891a76dbf8ce2a879a4c751b38887a3a6918fa3e6910f47cd236514b38a9ecde3c807c9c7b66ffe386a2601396a2a05396a2efd70d46402e2287632bba8b21f25a025a61fdb3ec1ee3cb7f2dc4eced3185f471c45d5f3e8819343c6f7a89123e5c119392b0fae70397f23d6727266ceb4e2661047c7a7a720431c1da34431851c55f5086dfbe690a32a1e3e6ba2d2543daa8c88a3a39313916ddf34e2e8e8c48991238e8e4f9e1cd9f6cd224747283eaba2d2c631aaccc8d17169c9e8c8d19189e968db37911c1d993041daf6cd2447c7263e33bba8b4110c53c9d1f1e84869db37971c1d917c86b4b4ed98e4b32754dab8a4ca46259fd9cf4224ddc0db414e62e807db0699714719292a7193c5706637b2e7b44c96721f93c560a7f7d29b0aaacbfed663773c1e9e8dabc5aaa199f19ed39ec7717f7a27f7f4e9978989a2ea51f550f188a2eaf13cef3fee4bb9ff4627a76d3fc3bcb8b43879320614274f38fc99dbdc99e2ffdec51876e44fa7df7b9f7fc625538565c5c4048c26419876114c38fdfda6f38fddf9ce94e3de7b1763e01e3f8ecb8d47496c258eb20daa2b07dba2841e291b91e468adb33413b197545a1e6254723403f9cc7e10a45dc4b69fc46dff9ddee77745db5d65741cc7757e370e47ac759de8e3614e6f3c7a7cc24fb71e4efc4fcc1175dc7bcffc635d403cc8ba2ea1437d8263628de364b26edb4e574a224a7add0de39d0d7724f779591c55292693a3e4899d9c4c26d1c7e97bcf1b82bda83362c408fe3c6e480a1007927fb2eef2d0b62f8e7948fea932eee4542a27519760ac4f40d0b98ffb745848f79c16227ed69fdeecf7e948816ea90119c806fdd8f685a833fbdf998ef9a441fed941e6b67b7374422ff468e5a734aed4c5e1d797a93b208ddcb6a7f238aca7ccf757d1b5ca54be1b53b018c3f7a90f1b9fe9b653e699c2295d06b2b794be9bdd9ff858f7e0edfb9de6e1532387b844aa7b1e3d6ae450991cf8deb779a2f4464475a5f845b0637fbf056d3f2c8f78fe5c9d819cd8f6c926b67d3033b1ed874b642125b2906d5f85c4b63f1eb1ed7739489a816cfbfdd55ff861dfdf99dee7be1363b8ef01b1ef0e78fbe650daab8bf3ee73dee5aa0e8d4ec800925c9046582b6dd315e5be3ebe3ce2a7ab7772943bb79ecd69db073dd4f17a2fd6f7aaaaecbe0cb1a6fa40de48b0b10c1975874c8658c333c05ab79e3d2327e7deffc17958d7bd382cc6efeeeeeeeede019ad0b4ae8bf34f0ed269ee7134ef20f320889d81ac0bc81614fa7c8ef5d93a62ed69a719c8a6b3e87379b21575a0732fce0eee7672747802c043c423debcb98d731e1db186318d1a366a8835b457cb014dacd50877c4efc1add33f8c97e3c4eff139c473890dc40f76dd63bdfdb05bd00624ff6cfbdfe74fb72020bbd38155fec9417607674e1473e61e15757042bae7cec761b9efb9cc8137ac38c3f6df831f6743ac85e10d9a8ffb0ffcf2bb20d672a6a13154ac2116c0ebf4123aacf6dd30e6e99ea7f33c9a88635df63b9d81ac8d7d548cc16e7c665bc4e89fe69f0dad21d63076419461870e3f5fb66b435cadb00d176837cc1bf66e5c021b0c005187d769eeb9b30240d4e1a863b7e1ff82a8c3cff005f1c3811fe3b83bd3185523598e66caa8328ee3ca8aa5c5e5651c6162645e8fe3e875dc386e63cc0d207c870d20ec8e1620f00e1910bec30508df7137d565410ab6275de74f45c0f4fb3acf7bb1133f2f3be9ae5357b130c293922704c1e5e2e2f4f2a2b18b8bcb8675ce68588ba6e6e5e5e5ffe5e5c56ba96a689296782d178b24cb9953ab6a689a466b97782d178b24cb9953ab6a689a9462526ffe1060626096d0e897aac6c54a49519939f5caca4a6ab55a12c3f2299818182e58605ae65b3ae64ffd3fa35fbaa5a54555431383a4241323a3eb567d601c41b0b1576d6062604af030f8c44568d9b8586128ce9c1aa4a9f1bc26a598d48f35413541b52e69699967e998dff4e71a9af19b3935088eef7fea9fcd075c6530ef622d06460666490c4c0c8cd7ddc2b25a5149314b5235a65062a86180607c5abad612184800594a92056c69015d4ad2057c39c2118e8005109c82ae1316d72909b5e2d0da7bad6f9b5be14c9c8933c1028ca16d1f5ced9cf56adc36dc360e7b5c073e59ea9e98f438f96ca7a4ce69f3be4f6fd287a31eed1ad608fb7d60f6426f35feca559368a081cbc2b66de0f6713a78c3b93521e388b9f082628de3bad8865dae50ec3820694dea9cae8ded9c50620ebd1428ce701f3f88515fc5750c4155f8652f44711f6e70c88a4ddbd675a319e2e8c42c8031083af9220ba55dbf269935eb61cf031d0aa89c419515152aaf58ccdbf2b26d2d3123f7b295a9d09b61693d7333b361691c19313c43872467ecb83a1d12d6a27914002eb880c620800d001706a0230022016478bd0870001c3232bc6078c1460daeeb3c2fe7fc7d20087a332cad676e66362c8d23238667e890e48c1d57a743c25a343f7a332cad676e66362c8d232386cb6d1bb94daca57ef352b06cdb462e262646069f24e9ea6a6a6a58189683e7c68d1c3c37b08c9abf9183e72583c3060c2fd4c430801a37241001083cc0010db081010be0c9f1ed9ad7016408b90d7b1db912cb94ca18721bbeaf9a1a1cbf11e005c3775d8daf79c9e0b001c30b35c8ce45036b89353cff020c3670c820f30578bd6a6af0e4b801c30b386cc8bc6a426ec35e478a656a0cb90ddf974c4dcdeb2553237ecd4b86ec5c34b096f835b500c09063e378010037645edf16c91d9d90dbb0d79162991a436ec3971445d783334851c4a87f91ec5c34b0d66fdc1896292cca7c0b46e3d2e93e8724c59779d5c05a2e9a8e14436ec35e478a656a0cb90d5fb2134592ec44acca22d96ddc189629ec89b218ec65e36ab16a3af2db788b09b90d7b1d2996a931e4367c378c476ec3e597a5e93ddeb8312c53de134e95a10e3c8cbb06d2a9074f03e924896f914f48282ea834728c2a239f86bc8b8c22e467287b90f892c7117f53fa04f959e983078f53fe185102f9ac0795560e516565d00e9ea6fc01e46bde24e268590689a2d24a24aaac1c520af9ac1cd2c1e7e059457c087e9444b2a8b4b24895d92f8df8cc7e79c4676591cfaca3a5519e41a5954a88781e70f022b8c1eff06279e4b312c9676592cfca25a552d083c006ff8121fe9fc505ef34f8d50bde816aa8341bbee64abc0dba5eb156430fdeb6e16df8fb2ea45de87eaa984f57e7a732369fb2887c2af3229feaecfbc4dfc775c79df8fb60ddf126fe3e5977fc077f9fa5eef8d0dfffbae33ef8fbadbae34cfcfd9bbae34bfc7d1a754788cf2a470e7fdf85ca03c4dff78a56d4fbfba98a867f5fa5a2317f1fa6a2e7dfa7a9a8cddf8755d489fcfd1915f522a7901c906c177a57e241572227a48164d7f0d695f01a8a6897e2af16e2529c4054245ee4ef7b919307df35bc8ea8a386afe1ab28801ade859ed07e9fd07503a14519549b1d7820f236da9ff8f37c2ff231daa1f8307c37f29ef70e84e7f40e3c8cdba3782e87b75f6b7c7a374f8de7f91c74b6a2dad8f728741ea2ca8080a03311467436020a9d9328a2f3d0133a434144e7299c68e207433ed0d90926748e62099d91d434ffc4b89cba56592d00307836df16fef636de99de8f792cc670ff0462e3fb31e799eed8e16f7fc3135f17b2e16b0d5a878a6493893557e2e419af12da6f72f89b1c4e202a121b90d8705a1fd6c7c9d172897bef819313474b264fc2c9b64f3e71b46472ed93501c2d9bf86c8c4a2bc1a8b227474b279ff7214fdb3e19c5d1d2890b21a36cfb658fa3e51347a267db2f79b81fc163db2f7ddc83943e1c2da3380f7c6cfbe58fbb11676aed97403e44a5993daa2cc851d3c7fa0eced4963f1c357d3890b204e2a8f9e33a38536bbf0ce2a809e433242acd1ca2ca86b8e740c851f387172134e4a809c47f0c1129526926125566c4517348f84ec469e488e3e0c8b65f16396afa0dce2223259566163972d434e2bd071d21396a1e711b206dfb65920f51039d8580744e5267f69d063a1f9981ce3fa833fb38b8103affc823d07988fdd179a8caecbb0c74266263a0b31118e84c850f9d95f8ccbebf40d72ab3f1ee025dabecc67b0b74adb21c5f2ea93453499529396a1af9ccbe90a311bcfb9c483cbc0d679208be86536987b7399740f0e7c9f481a7e1c44ead73ebe951695b1055363ed9f031a78f8f53d5e3fa19ce1fa02146a71afee61c9dd0f0b3737c62714e20419018878adc7c78ce9e4608e76bcea123a69292e63d2335cf3a591f82a2e7ced43a0b74b6410f5f81ce47f0d05948053a0f8151964cca261bd3be676a83f01478cf8e47010a700022871d3b80c8010714fce0c3094c500212f4a0b390ea328f6cbc8d1fc1792309004a2f2cb970e3794002c08be085df412904676ab70b0f820fe8e0810e7020dd80063240812d8877c2c00564bc052af037c8b88102397c8f1a3970a8c0db177d581e19670eba15d039e87c4495611f079d91a832ec5340e7205586fd1b74066269d89f80ce4e54997d09e8dc4495d98f80ce4cb8cb3e04745ea2caec3f4067a12ab3ef009d1ba0b390271b9ea2b44e558feb6480aac7021490000438d5e0e48406274f66380f30061403c85000022cdd2c31fd8c89c9e39c3ac068f2ae0108208619e391a35b8fa53942a2a576d3bee644cf33b51b7dd629bea0baec8f4bbeefefdb177decce6d9da9ddfb5d676a378efd38feea9c441db247c066eef51eefd8570655772d003acd404873519a9dc021faa49fb6d29b94460ad2744aee34ffa42c3bcd3f69de62079c536a1d2c14d3b450722c949cd302b588f6e747d72d23d63226bffc5097ff7df85352e65396fff4f5a7ad964f6fc24f69789fdad897bb3cdda7fe7e59776efe7e4bdd99fd7d5d7770febeabceea8eecefefd49dd7dfbf5103507766fefe00eae8283e572a2a53f3347f3fa6a2df7ad6dfafa9a8be1fab684bcc9f7f3fa7a2e1bfccdfa755d46b79fdf77745b973071ec6cdbdf7f74c3b509376f8f941d1874d08136b57f4d1e2cfa7a24f4dda6006676821e3df71c6df9f01fe4bd401fe05c19b99ce3970977d1c9d8fa82efb319d85b213d565ffa57314eeb20fd37946e723eb42b236f6697426a2ceecd76896ce46f8cc7e4bbb744ea2ceecdbe853e7219fd9d5cbe80c459d5919cb6b9da7f099fd164f672beacc9a3e1b02d46115bfef5da735693b7ebff91ff555548016470cd92ebb6a71c40bb61567f066a8451ee77f53ba5ed4997f2c125f2e0246a759893437916620a4b928cd5790af434dda17d788b59c59ac9a4426d918d106715f83c56437d73bf16a976d5dcdc2359ba6e166ba7b7a5d78b5ce378757ff27b3bbfbe205c1f52fbc3a26bc1a46bc6178f58b8ba3c2ab5bc6ab59546378f58a548557af946478b58a598657a7a498e1d5a64a4a7875b9a2125e4dae56c2ab552cabf0eab18525bc3aa5036f97f06a144ccc8bb8455d73747a09effa83329c7fe74b78751803135e0dcac484577f2f135e9db5f64e1d5eddcd9ce1d51ccd4c78f5564313fad5b7c50aafb6ae5678af0ebc6f706722bd99a43f53a9c55c324da61715271896ad6725ba40f4e152f7925e1982281329ff5cb1edffa994a130974ca65cb4ed6b3303c1e58439572c2a66fef9721419c9b6dfe523d105a28f8e17364ef34f2dda5f4de8126b2e5cb41d05b6421ab125d63cb22c5317fcc2af245d00e159e2ef231ff4bc27f5f66326d6b6a0707ba4d715e0fbfcdfe71b5187f71fea3f8d3aab757d0f3e08da84e4bbc45af818633cc3f8f426d8ba3e6742c4242c693cad43b8f1469e3c2326f10bbfc2322c4f77e2e494f21e6c557106ecbd8d58f3bc170b0a8b08ffe062cd4019a24f78b1c5185b2bbb37ffdcbfeffd4dcfc6620d3647f72407fd1c81ada85b043911442048d8551cf245cef8a93b91f9b46661efc47cea295841a5793d2a7afaf8e866683ef51fbbbe175169355fdf7350693aa83badafef3ca834d7573fa2d22eaaf33376687cea423ce2a73e74f3a91b99bd13551aced7f7292a2df6f59d8aba23fbfa9ea4d2b677a35dff04152d9b3489f29fd631767d1154b47472aa82feb486e1c467d689149c76fd0b54b47cf2a4c9e5d38a84964feb1276fd0754b48412f7a8d2b8bfdd0dbb33ff1ca93156f062dc255deb83510c2d13f7a242ac8574de6dbe05711aeffbb4433186bbb15d22bcdc36869cbe9d98f1e3cd3d8ee3b8f7b8d0ba368ee3de43ebdade6ece7beefde33cce0a81620da3eeb53d18fd71d89458bba74d62f407c7cbda82b6a04acb36c6aa451248bb66f1021f2630618b3e95e6bd0557e18ab8126b281a70b6fb2a8479954fe91467a75cfbc65a2593f353bdefd73466dfd2698565df32e6d3165a29852ac3d92cbf7a70c5e16cd40af538ac88f3dcc9836fd4bf441da8afa20050cff2386cc9c4d1f24909a57c2aa39452a8b4520b55664b26dfe99de51347b1d3d6533e95514a2d704fce270cdab0d3e2bbf4ec6df4cd9f1ae76374ec65b4ec5faf3c7652f5d0d0f9960563e18d58732f1eb4a105b45f71831e77de8fbca87f18cd9efa456daa5e5424dcb42ed52e7c8450b9e8a21ed52c86f06935daf7c7673589d2a73780684b9fdad809cad937a5b1e4d3d9beb19b22d4b4a6e585a3d1a72b99203cd1a71bea577cca25f9f4a58a4f61a8f83406c9a733459fd2f8164e5bd43cdc0bd187e8e3c5a7a28f13c66e042d24e5dd0bcd834d3981a8eec5e3ed5e9c2e3adc085ebc1b4186a8e3be7b21fe3d7158b3a79a434c2173c834b2749a4542781ad30888f99d66d269123199b0d3d6e3475708278dd1d1d7609194856be148583c0b298bff92b478ef74a4e7b62544501a82ce4ed42e748ec2b9d01949926ac6e556403bd16340bb92bf80762bfe063d7e03b41bbd03b427f90768afe221a09d8a8f80f6295e02da91fc04b417bd05b45f61c5186a91c7dadc99deafa1f1a1e6bdc77687e64c7fd8acf7de83a06b75d59c7ee408cb033d08ed4ade53a0dd8aff417bd1a3408f5f02ed55fc0eed44df8376a32781f6246f02ed54fc09b44ff13e6847227aef44ba02ef4a3406deadd017f851dff06ea41bf09e443be0bd0afd80772a3404dea7d0117847a225f05ea427f07e85b6c0fb161a6f6ebb1bb436fb16dab72bb142f5de43f4a36a4cb9418613a99ce8061929a317e9ec04129d9b98426726a8d079892a74164aa2b312469cc7f2b6677ddf8ecf7addb0de11440a8c740fef493409deabd02578a7429be07d0a7d827724da87f722fdc3fb15da7bdeb7d0756fdebd62cd8fec884edb4bac610c131f2656a71da79dd3a310ad6cf7d2783953bb5f5ec7e54ced76f91937676a7718b6768bfe96194e4cf685df8ed437cba9f22a5aa7302d4490483a65d142a79f854e5b58f8914e69ec8061505a079cd50a070607e6b43caccbfe8a08ccd175bb8835d3457c116be5a752effe76c8e8e68337ccf9fb288dfa944e2d949db2c2a7f6c7d3db207607ffb5433b9f5a28883eb5531cf9d45a51f4a94542f2a91dc2149f5a2350f1a95d42159f5aa77dad13fda925628bb47c6aa5b0442e9fda2a5c3eb5462a9f5a2c543eb55ab07c6a93583eb55dac3eb545587d6abd80f9d42601e653cbe4e553fbc5cba7b6c9e706fba69688313eb535f031837d530b54854f6d0c7eec0bf64d2d0ca07c6a59b0ef5b1e8eaa805443f448f9d499c2a0c2a7bed4a4d2dc48e753ffc28a4fbd49c9a70e852b3e752b1c7dea58c0e2538f92c5a79e052d3e752d207d6a83d8e253ab82209fddd48b30854f9d8b1f41d837f524313ef52c805cb16fea583cf9d49304f199fdd4ab08e3533f320408fba62e85143ef527849ad837752251f8d499187225f64d7d09279fba907ddf8338aa2252c491d8aa4f5d0647f8b446617ae751691e84a7f1a9af40089f3a0b923ef51770f1a9dba08b4f9d88217cea3f943ef52288f0a9e760c9a76e44113e751e18b9c2be69c582113ead553832857dd30ac58b4fab148aa0b06f5aa3b074df028eaa8c9480c1e4d3cab4844f2b93232ff63d82123ead4440ea625fa5245c559216fb6e8184fb017054b5a42af9e2531b1b8c4f6bd1920bfba668934f6930cdd837d569c2a7374c60fbca98f0696b83c1daf7691c5535f199fd277cfa0285d4c589c5099fa638aa7242cef8d444554fc07d53d19d3e45eddb841d555dd518dcbe492c948d7af3411316ca6616ca2ecd72a685c890710261a1ccfefeacfc98a8a31440f9a8c761553e8eaa9e70543edbbeca87a3aa28311f3f8e923db197fd00394af218a2d2c81e418e923eb27f05fd7094f4f17ad80f208e923fb09f0112c4511268e6695441b67dd51047c9a01a954ac8515225b4edab861c2581b488384a062952692412461c258718d9f655471c25858a1c25878c1c2589f84c49a59145aaecc851d20892a3e4119b23fb3c531b73a6560669db5725394a162da93452499529394a1af96cc951f288c951128989a364d29fa90dcfd47a4c9b6be228a9e433302a8d5c52654e8e924b4e1c25999e384a3281e228d9c46763541a0946956d676a6738d9374fb67dd593a36594992a8aa3660f8e2acab64ff658fb240f47cd1e9566baa0ca7c1c357dc87c7c386afebc7cfc386a02c17e801c35836680821c357fd004fd70d40452f363db2781386a06610541a2d2cc1e54d910474da1961039441229526966145566843ce212da3643a79122f2c8b64f16396a1a914a2acdcca2ca4823f2884422931c35658afe68db9344b2f6492547f38fcf96545a9e41952d396a2e31396a323171143b357154f401835bda4e92e932d17583354697410c1eac318ea0065fc5da08de85f82ad2a0822a0304e3bede76211e6b1eb08caf1c78efbd1d08f7bd3808c14189075dacb958abe1411cfa937615bc5b413b8ff731b4afe0bd0ada7bbc43d1ce824fd11478a782cec0fb14b406dec5d01b787fa2d3f7303407dea5a03bf01e05ed8177275a87772868d9fb1374ecdd09faf5eea461ef4d7ae61d0c3d80f72fb48ef7265a00ef4dd031bc3341cf785f8236c03b137d8077256819de93a00bf08e044d807726bd80f7236806bc1b412be0dd0b9d80f7258d80f722e809bc2fd1127827828ec0bb9286c0fb10f403debbd00e78e74237e055fa86f7247d817721680cbc074157e07d0bfdc33b92f6e15d0b7d82f72cb409deb1d025783fd22478bf42f7f0a346c1bb12ed2978b7427b10ef467ac77b122df32ffabe57a1b77724da61f05ea43d06bfa25d88ef340e4f435be075b4f7bcd64264bc53a1b7145497fd9d29f40eeee37970a9c1cfabe81ebced32f816bd83101ebc3d8277a2113c0fe3f61abc1fd13b84a0dbc216b6b05bf03e83e761b55d060fe34a7c5ec7791de7755ee7751ce7754d4d4d4d1cd7c435719ed735715e13e7754d4d4d1cd7c435719ed735715e13e7754d4d1cd7c435719ed735715e13c7795d13c735714d9ce7754d9cd7c4719cd735714d9ce7754d9cd7e4755ed7c4795ed7c4794d9ee7715dd3b7357d5b1307b4709f7c9e9210da27fbf47d1e153ea527568a44f10b94c5a28842a1502854ce5935822008862314aa51951a53636a5ca5c6d47892292a7c624c818b274a5310e389d214c410438c274a5310c39b8218632a35a650e0976f4a13ac9a1a285b4d0d6ac3051c9e1a8f1f2796a343db99e102c2ba61037bc55c2dccba61f330edfa97763d0d1aaec71f73fdcdc7dec6f538f63316c6ad568bc552b1542c15ab65c35e29292ccdb2612f15d334c9d5cdec26d63262a96cd8cb260ca2940d7bd9844184e2d15bb977683a393366487226262946a986ab226191a80b2f9c9818991a3c3b349d9c19abf35cbdd6369248e16a115f92788baac5621937ea020ccc57836787a69333c3c5e545a582bd5229295a2c168bf52d968dc6cfd2a94dd3c999e1e2f2a252c15e2eb187a5e0141a9ab781ba00822a357876683a39335656562c2cf8d50a83c825b6b888984452d0f4f62ee8d8b3b4b87572669064f98299281395aac1b313731149116e981682f3335e38e3f8e59c93c415d34ac2d2e086a55ea1188a47f27e11c1886c8858dadb3644dd7e11c1886c8868d078b0c638fb197106d7df3c78a3b175c55c5ff7ec61626d76f28cae99cbf555d4e13a754e6c5db1b3d2b45a2d57cbf5ad96eb046b5a2cfdb25ddbd6c9998141304c0ae3ce44d4c7247dcb88c56ab158ac56ab6523e3613af62fddfa197af62c1cfcc9c071a94b37b31b56ac65148bb5582c568bc562e9bb61af18ab9524c66a4921094bdb0d7bd918b1b46fd8cbc688a5eb86bd6c644b4b37ae67e9afc57afcae166be6d42f1303f3e2d2c2b25a5149314b5235a65062782eb184585a723bc31030e6c920a7f5fe2d83636036c871da65835dc8e9960d7a21a759f66aaf6c100c39adb2533628869c3637880a395d6e3015729adcaa0d9221a747fcd7ffdae02f451ddef61e2cc34ed71c9c4e6db00c398ddaa019725adc604ac8e970832a21a7c10dae849cfe36b80a399d37c802b6849ceeb80dbe803021a7f106634019f0c119d4f6953bc15665d7ff7ed68efd626b63698c30be5bb5b159aa756f63831383fdbc70c866373831d88bdbb31bd8bffe63ff8abd5edb067bbdcc97f9325f2d7b769324c94bb3ecd94d129b929242ae727472706031a397ca9eddc8a24094b26737b228108d2f574a8a4b656576b31a576392189217b96737e739f3d26abdd0d4b05849a488c1a4603889aa280ca59069d84b6b302646e64d73766324154b49017bbd5eaf87bd641aff2b2646e64d73766324854ce3fc4cc35e61c8d2d2e2f2328e37b03088622998188e7622269114321dc3f9574a8acacacd6c35ae4632679c189114e19edd94e507e69c24961a8fc0701270cf54e40d2a854a1dc9fb86684624237a696fcb88ba7d4334239211c11e8469d889adeb7556a22431580c36137b85a1880a83482735c6f43c0e2c566384f32db186f3d22f3b1683c9746ca671fe46c3729ea675fef5c21ff8cac147727472706031239c580cf67abd701e067b1c18eca5ef9edde0c45e497062b09cff25852476cf6e64462fed7b7623337ae9ba6737321b1f239f57ec5f30fc3118aebbc5aaa19939f5cbc4c0bcb8b4b0ac565452cc92548d299418823e3b3d7d4eaeb30b7802ac34a9c964db07b177be8ae13af2ab8b35f0415458ed4e9841d22c735628984f695c4fc4da156b60fd8abd8de392a4595a287bc898fa9b7f737256e7f677d5019c0df3382c166174dd56acad52542e16b7cdb163acb2b21db1468c6ce276b9cd390ebf732b620daf2c11ce0e0d71d6ae583aa1214338bc6177f72beae03616b186718b170408c69cca0ab7b2baced2c27dd9f3367bf3ddae15459075c67aab2ecc6d98c57cd9357d570c47a7868d5a745493c86d45826166d116860546e551e3afb6578d2ad04316ed3bccba87d5f61ed43d8c3d78dbf3fe7adebf4a832c7abbcea2f1466ddb7659f4ddf0c6990f7a62edaa7cc7f2208bcacb88351515abc4c225a93c877a151385e2cc87116ba619d331a1b84eb44b4ba8bf9fe238bc5197fbab63dcdc366e37a8ca1c82a4f7799c3883f7dbe79f0c6477bcb7eec9bc28c38eed9dd6a8a8c8cb1a858a116b28948c87c46d9e688fec91973d16cd7da3b9fad23ef508b14fae0f1f9f0bf4737fee8fa01b7483881708d105822dd1b5449fbefb05462c3fad478e51f6e55d311c9d1a3692cccb12e6cf43575f1f566930dd1e510f6ee10ca87f116b28148c28c30e3fb1d2c549f76ef84750100e020408161a32041b118b8630d211d111d61808ff10e11facb10fec43847d50ddb38c5d296e1af3c03db8e3bc2f8720299679c32ae8c02d05c5b66f4ab1edab50b1edbf24d956cc5c6cfbb5e6a45908dbde222e7f7d878bae55a6af538a336112e589e889456721ea8c06d90695081e081992440f98f0c1d03d9fb84243865c224343f7881123f72849c8b546dc8f2886a3e3827d53def8b9441fe772b8437efdd64db9c3a41530b5c759f34c59364b06b694cdf2e2b659be1337cbdb94cd72a6de73cf81adf2f753e34e7dd82a2707bcdf5c757a8a8c20345064983fecda0bbd2dddb677e613849b0fa0e5b82d4626cf006ff93dffd4997d8fdbeed73f8ff3b66dc51a77afa7f106eff56d7bd0cb35c65cf16651e1bbaedb77f879df7bdfe2d188b59c6b983e0f2f7d7f5bbcd72fd6384e73a28eedc44d381133e1386edb6436074fae13476fc3d8e9f28ce7d6e334f65c1ed1c7a7c773cf2b8087451f31e8de9b817a7e76109f18b66df786b1ccb6f97eb1763931861877275cc7bdde827c0b6a429ff927ffe41f3303599d184dfe0947710b127dba2d48f4d982aacc3ab1059d334b4b95c6849db69e0d7f2b98b4e585e3ea4545bc5c68a650e57317df0de3cd12949bc02613ccd00a3b6d8ff1e6feabefbeb7c3bb2bbcfdc78931ecc83b76deb0ed7c67bd1111721ca752a2522648deb0fd4c776cbf620c3bbe1dfbd35ee77db7bd199a1c947ff28fcf7e4053937f2a3804d670176f7e2ddec0ec71badb39bf87b55757fe0f153ea7b9ed3ddeb1bff73efcc4dae7717ae3729a7ca8e4289fa88aaa6386060000000000025318000c86c2280e04399866498d1f14001452906a58504813ca22291064208a62188801882104180510320619858a460700cb5363f9d2f3f7949b97dbc9d8a877ef37c06f6f3d3726cdefab5e08ed72f3759b7d65ddcd131bdcac9850121faac42d28ddcb90d0fde9f95527848e7323fbcaba992736b81971a9342eb4c41d489d9329a02fd1fb552f847671f77133577c713362a2343e74893990746ea6802a5c801b54fac234dc55db3fb60ef3291be8862871074af7640a68cbfb9db304cbc2f48b15bc183b44dbf270a909b4874b4ef61ed5359f5b374e699d10256741e99c0c015d79bfe7d6891bb8a589b1b6cfac26b34ea5ef17864b63dc0ea9ed3eebf0efd4afc151a2cbc3f894454e70c5c2b7fcfc1d10a3b786371cd5c77e40e738efbd7f5d34442c3f379cbb6836199a62e59f8358fffc9075dafdb3b743c75f17b78051a912a01d943576f8e9b00ca7153b038eda99c501f4965a6201e53cd2eae4be5621e17f8459a05794ab12ef3fc261515ecdfe0cfa00ba1253212fcbc3fcde28f1a341bd8f7cc1181591cebb0f605ed311aceb56c4b8bf0628285be62839e695c48d28bb55510505e5e703fe15850974cf68ec1847734d6317124253cfc79206a470876f9b5b81cefbec404469dbb85f9c14b452dd488ec15c41f7869a9eb87ab94abb7f7eb7f834063e00b795f7dc86c3e730fae9ec8772d9dfd6a2cb2f75596b64936c150fa06cd1256faed46582b78e8d9078f5f0355619e8ec5d60390c5c966e9b7dbff54480c813e7e8ecfb6c4ac1d5a6128fc66a1482003a14f9ad6d82f08b5dc582deee4cea464b5a8a8181d005ee6a28b61b0b57c1ff70a81c349d7dfe0aa7e43165610246ef67eb510aaa5022d6db3d7cd103cfae7e1743dd643a1cdb637b4759cb52c55653f69bfdf5f1229d0a87a5a95902deec15b41e90a23e096522d98d5c551153c8d283606b8a0f99d7791f297ee52e673c606f7b5e0bc22c5a52439334f66b40103cbe897ed6d62b48b86f699b7a93b957b3079079df90e40bbc703368d0612c4a9375e4858835da90c1d8678d33dfa1729349b7251fd570ccf49477ae1df06e5117f8ccc61423d8c48e9e0eba4039c91742268956048f16848953754592c002875606c127acc08b9da8199532ef672618d9a6b7657fdbea76b31f53a865ac8b11f769555c5e8b676b80e0c89ad994805583bde046fafe32cc3b4921083db9b9b407bb5bf6967deff725c45b8c8796e0abd0667aed486caa809f3592799cd4e69c2bfbb1d122b4b595bde60393c08f2810c5d7c4d6d25c03f7ef2e4c0fb15836710cedd14df73f47d97fa330b3e8c836c3f1d2debe93a6f514156b943d4a34b3d3644ab7be9fc0767df390f90b98457fa2a2e766d1be7cc82f22e51ed0ca649f146891acb87308f1ea38974f4d40c8dec254d27fcabc6d54629f1c8955c76e07348271e93c4fe24b5a890b2f052f89a46df6a981847665505ea50150b07557ecd533120126b8fd175405a5ba44e6eb51c8ca4753e421fcc8e5d08e773c0398b27e617d5946f2e394f0e20abde11e137b352a716ca8d7371695bf531f793ad2e873c1b8b1ae6cb6830b956ae85b9641ae99b4951e4f36a74cfb7a86d10b4313cb7098b2b9fbe15af154a1f543ecfbefb5dd66d4e957fb10f736bbad733460cfb23b0353c96bd8938dd7f2eeb5383372134151195b69f8ef45f0b04fceff0bab0d3a306c14d53c39e35f34b96249205f1f42165d60bf408082a07bb9130c5dd8fd0e278bcfc5eb41176ee71d62c9e04b7c56cdc171e3784f3da307d948c84a854b42480d25ca1af3d841a033cacc21c8570fbf39d793df88f235ee33c5b8b051e2d95f21d89cbd8f677892373137925e3522445cfb1c055e4136cb35d51ed7e62c17131b8591f68270b8642a3c3fef0a3e0ac5ebed2cf0d94ed944d4576b764a3b4ee54a264b346f165cf38f2215afdc91bc1201ca2b43759b6939174bfb6378dd447a7aabab769db52158f4abaafd9c198c78805246b7f32a230e6c01d6c7e43fd495ed0ad575f80165f48788dc36096aa87e9fee73e6b387fe5cc80d4119e6fb0277392bef966a55d1f3e9c62f5eebc8caa09d15ca3dc9ac249bd6c10bb608cac8538c32bac51675629e8d389d0b95a87e46c16341aaa1c80f8545b556d6542c0c859e46a983dfa118d8dbfd01728782cba5bd7192c7b2f9c00cd7731d0c09ca50a990601eb1a1461d7fc2b48830a96e9b5e196f9adf2615635e1fdb3d4a5a9e2ab6526ad36533349ca328559d45c7e0eac76c9f0cac331cbf7cb22fd7bb1c2b98662ee5b511b5c73c6ccb9c4ad1e19c4775c67b70af99a72800f4a49d0c1023309e0c1b1808eb2d5a07d9ab3c60cdc9e020f2773e2cc4b1f85e6401adc5319b69e6ebcdf4168d640bcb4d06c7a26dbce3fd5d2e2536e826e5487ca1e3120ead0d826f598413a3f9c478204575b6b33530f79a766506ad6c15d94cfa45f9b5a7224bf2fec31b5e9a0cf84372056c4a5caff4e6b7f07e63c013b22d5dd335260d932b3b38f64cc6dc19455356321935d0fce6bd3e1f44643d3f4c6bd79fed1db8c8387833467067fa0b7ec97081f40bae161c0e63c54d79e54e57b1169f4df926ad1cc8a6668662db82b0806ce26bead492115a81610356c9b001e84ddc50329a122d3fdcec830307296f7859adf180a289926f83237c826470b641364e0ad4c123e3984125e20869b0b2f65f1d3d1f92215fc6eb3e72a6b7e0a9295f36a4d42f9e47c6e97f1c37140bcb8cde1874fd16744b03b8634a202f4f3c03c97dd0c37ae6143df36c4ec9055fd86df9b7b2f2fd1dff737cd037328eae2918001e40361b30272053a1413c760eb51c198257c4d84e795ed82ad40523239d8e5288a4021052724c2b3b8607e821a0d59dff3c009746469d6d27e6905c1e561c2cb1a2f6dfa608ae3dc8585461098913e55804820c172df22106dea6f23e2f5fa28e5c1797173ac38642306a4c5d972cde58a3712ead15f41b2e6f443fedd1fed2131642be7b665945428fe7ba74a3758c1366ec6d893e4d7ce6dd0099a143c55f225c22590a4f6252bf0602833ee783e30b977985213dc95dcc6514878b46125455c3278c84f0ad1bf173201ee299549a527ff0cbf7053d28c386fcfd25c08171a5db87b7ff2eed8f11d6983e7632cac68aa441c4f10bd7bfb2d7493727adb275dadc49ebdca1eebc4e0c00eee82f4784eee04002da04a2214558448197553c05d5538ba73f601d9c35f482989199ee506ef031965dc19fa42d897fa24c76b8da4872703a2cc7461728c3b79c1012caaa2b918b066c8a4bb385ed872bd93ee48e2e3d8f44754b54b56513d5a196eadb9e9279d3cc476a28aba4f8cd0b9c3c1ac25caaf76ca664245d68b592199be8fc323ae2fde730d3faa84e46729fe3bcec3ff40cc014bf15ff39b620796ba1fa2d9cdedb2f6d3f629121fb59cb965746f521034836e98fbf2d04a667845c1b640eb9e9788b4c0fecee906f2e34ac52d6337a11adf43d98060975528b19cd35cf2cea48b282e6aa9945d0415bbf5a46117488a79886bd88b695cb4e04049579bdff24f89cb1c4d4c52d8513ad55fa4e0fb1528a83f79b6e112d2e48398c7565ce21ea192ca25dbbd5de3395a16a160830ca3bfaa686bb8c2a00becdb003eb4b7fc6608217ff8d2fc007c81fad3a0619f757cde96cc43db48cf8c2a2a85b0bc0a8dd3dce984ed2bb072fc21fe1f8bcc1d34540d34a8d06ff4981f87b81209889b13d260743822c453c7314926c0230060fd77726cd61b0d694645b6dc19b274d710b9ebb108d65e9050392e56843d58f155e03e61badbe8391235298101adcb501c2f0ae8df1b90b22aa9e63f54a4b77398124499442fe6a6111a3253c2eb61cf45366ec0a5c63407d582718f399fbe768af542734f0d8e8921fe828ab125aaf1c4dc152a7f80645800f70beec19adac78a039c2d0c71e62d6db28c9dc7186035da16e3838cc9cf27c35064fea33f220bc72ac10f60be6582d502751eb0e787b7a6a3555221dcecac1beeb13045f4841877dcb433ebe852cfbed2a1f15aa0e40f35f2c7476bba06242515d2a4fb6693ecb65ce7e061562337203897b07fa09aa8fb43e3b7df2e074c9e2d7541fc5f18d3cae0b1e42a093f2e696b7bfd66cbdfd439ec1acb774963ea906c75f57076c989cb2d43faabe0923a69580bd8b5d3430c76204254f24f3d9cc8918a1263848eef73f9e92652ec3aa65116678cacb6e97d152da22f622651fd47fa4d95cd7f72e1ae8a7022092cc86a9f5e77062ec88179177ba9d6a9cade2d67dfa58ef80fe61e6f9821c5b2ce30173935ee0f4e3f593d88e212e494fda2f88380fa517ff01c62cdd3ea51adaa2968fe2caafe99920db746a26566396b28cbabda9cce958fb9e77534a330295d6269fbb8dc27f62b0d4932a89ea180c7120d9118d37e534df2a3d467d0b5f4ecfb81ed4c1359d0480726e8b7ffe2130639881d3f9565109e695452c95946ec7db26a82f83ea1f8e1909f1b96954d5e9d10aa8fac9aae04b8b41cd250ecd5c8f1a144eb918d405d4f8586953ad3938ebd909df62e655c8267d66b326535f595661cdf411c3b4462c46cde4bec27295fb10207a7508d59f2b16b1fe0de7481719c4bdf4e495a26e01348ab6dcc8556a844c5e4fea4a38f8d3ce376f844ea9c65126ea1b71a7bb80f9bcb79a15c1ee05da4c309920774478134c755c133bf805ae915329cedb94c1201e4cf86b466d935e23caff237e038bed730cb914ec8163ea7fbf761f69ed040b647c0edf0f68a91b526acb96b2f4fe028a7e533357be0386677c6d25ccdfa484541dcaa5a5c16f5072dd9c5c2c3de5423638538da7c01b5643a3aebfb5bbaf58a7c4db96e6459f2bf6d0e2545dd6495d10eb4198ba40535be04bd7c31a2ba22ccd0941f2f2ab68e5e3fb9be598921a2c1a67d87a16107d051c0504b1806647005aa71cc8fd11804ea9549f1408b49a05104292cb73bd7a00725d459f6496ff64a5459c8a4e47c5ebe800d20b2c4801c167c68254ea6b44033cf1a193557e0219fb9e1d7a786b0b582b86938dc5990f9be3bf7d0f38531c75540c50011ed4a9164c19059649033aed0655507bdf728483336a95f6ee638a22b9081c85a89b4c32e0cd023d2364866d49233b33d940a153a9c0f2c9cdfde80a277c347a024fbec70ae53bf8085736f2198763fa06741ec5906bf0af1d41d009c322a39cee74be20c9714f26deee135db8cc7f0350660e5e12441abe1fa351999ae4994e455aedbf85199c618c914a17bdf9040a9c0634f87ddad9f2a09f36b4c814ad8b6247eb0e6f69c9101959fd22baa7007c7c65833e6d19fded624d3466a94c5a8d1dc807eacad199ad04cb7d159c8e32e1d49ef7ecbd18452a33678286064799d0aaecb17a5db1484c85176eceace74a002c65f09a68c1af33b670e9b011fdd0d5d56dd6bf0182f22502a9c5e4400288a505cdee5845b101e3b2dea3c5801ca8d74c633005dcedf68bfff8d4778a13e0407cf64097e0e8032130aa64bb9a36ec8b82e7b3065e420d5cc673ff3c8306b67fc82ed434e23f002209d52e82a3112e08641870f5344230e34cf97780ffef310513e9c98b1bcca01f4a002b91bf9c16b597c3c86447551dea4b83ed0293002ae8dad0c25ba255a38513a5fde3f5b2c119abe4fea0f22a1c7cc83e7ff575ce8932d70e3dbbe32ec6982f0899f9a4e45e72729d1a9eca51398c97f752246c51cb55d34aafd0b55333bdac5a55c4a88a54082491dfa447b769a59af1870f5489e4651fc7c7a38ae8001f8132e7004c3aa4d0872dc36faf4d2bf95550716d9f6db441efc717a656cae585713d52866825d14d2b15a579a0911349e39fbe5c0cfcb862a16fa35ce13b8e5e2efcad768040a65922a2023ca6b9f4207d1b8ab5eca2169973b1d441b2456c0f486d83a0008535bbcd79c32269b9cbb0c629d9b5da0d9478e01859d999f0f4487249386d2b75242598dea6f3520894a7636b7d1c906d279b4be3332a5e8f36b75a4eedb169bc7d4b3eaf2d8757632188f2731604cd1a748351365f83807c25d62880b1b1e6e1277d839afacd097afb65decf1772c5bab08dd67ddb6ee2a1dee95326929515abe5c76272aa7582af68aa75f7b6e619bde39a585e358a42c6c19ad3457ec34eaf9965c45a443f7b5ce8fe348b704ce87af35982c720edc59b85030c72de06a491827840858760abb8731accb0a742663891d200d310e2c629c025622c89a7d0cf33f3e4dc28dc72f9b115920d0ee0613c1ead7de905b4cb2b5e4c1198ae576bcdb946ab25a85cbe308d0c9476369676056860f4176c9a181561581f4b0d8b05e72513e22e48943bca04d0f10a2b3d759ff067bc6c85e172075beab7d211968c776aa109de827b3f100f771f6c7429f7fbdc07f30c3848b215ebf47a009ec8804d75ed34391097467fca5a4c3ad51c00866df7ae414f121fd0c26aeab755c51fc8121a37e3cf87325d9efd0768a14da7c054e9569394247dfcfb3058d64804b58058cdf95c835ec8f631fc725b7851af9e716d774c91434da7636f1dacba97135484913e24823f0a42d2075fb7d3abe0608117474c2c065b979733651f91ebbb011e055a54ad91e820f065a8e678a44fdaf9f2ba62d8c51482610c8f1e8cde8ed5607ac3504a6d0a083210151118c701ac016ec03753d91907dfb27c73765a1bcf9db18504b3efef74d8334feaff1f78af2b8f5070697f715f514abdc2bc0bbac0ce00ba0798a3b022c1d4ef1adff953a7439a716c1a1da0694b208306aafc4313d8855470f9802745e4121555f663c2f7b961f85b4565e759ae98851a6a5cdc467989cfa75125c23c976b85a1017b2bdd9479c1294ff24327870143382c975e2591406ca8e50088ca660ceb76b37afeb87065877fdaf6bc4fa7615878cd5cbba76345ebe88e653d3bc0ad32ef56cfb67636368147204db6a6fb96b745ac4990a93ac8d09ce146db72c899f7ff9b968a04303116c9390859fdbf0113becfd5638fa0eab7d45f23d8ee92d2bd230aead2ca9fd5b9221a7c1ab1329666386932f67b33f55bba3162cee91c14b8ef32e734eb745293f758b634aeaf0076d6c089ddc3ac8091c7de3d879e7aeb309f075574e9a1f0f5b97272980ffcda031597a86b84f17d6f25e96be3321b3a462f360b129fe1a9a4fe0120b703ccd05ed9d8c5a1b8efb135cbd98a25960d59e5a18a434f9f1ff6265f0f8326ab61da3af0b5c81c0496d78c9345254a7f27f8066ba0edf73ea63cde185ee24568b005c5b358076307708bd064f5c3972c8771cdcc85ca23000aa378545b63221c6942b008d6cd31f9311f3bc52d204c0ef7070efd804cb62e7054f3670d7e2b4d3f9546dd3c68cf9510b3af5681d8269947c5cdc2dd4e28036273d34bf12c9050e80765957b9ef93cd09b01b075fda588642b3976bca9d4ec52d0195afc76dff0be5d8eeedebf37ddf4c2d1cdb005ead275360dcb00616b1a05bdd8854f1eada56beb2889d632ca0ad1b349a8adb562343ae649e51a621e3d24cd7f326a01784559080bb54e7b754a1abb6ed5ffb0aeb05b19d0c40f438e59e2bb1141235f5fb97aba1e8d33bd07777025cc6403069a042a0a81c82db19a112d70734272126400a1e86c2bf6249497f5873aec703630717565031b816bf5dce8cc457f549bb696d6eb494e4bd39153c1aa4e6b23bba6dace81c43c8f00b516314dec1724506d0864d725bf398911082fd61c4529c774bb166bc69fb59b0fa59c2fac939838a4b27e6466f479e4291e5a6bf8efcb4c7af0c800474cb87da052ae8a73bde402f8323bed0ab67820173d2bada6e4d42e8a61cfd4ccd8d44f35a0d07ba5de6f8b6de4fd1fed62b5890c1098e82a893eb9caf24a304b5c959b13e5a262f15569283e6c8c44f5c7c82958f096e9e04afce3db1869e9cfe3966de1e5fc1cc8d518952ff0a375d0c5d4a39219b2321c1a7860fa8db246ef42e5f482dab1e85450b192872b7519199d63f834709701a226ed60f595cb39b875b8d4e8a6a6b98d26ce0fa0c54d2aaac2e54fb9f6541c584330ea25ccdd4b2064195c6e7d3255d9717a53c09b56ab24c30d56c2c48e5a920c648f58cec3c89b4092ce6898f746da3239de33d3df3cf56e6985bcc635099fc170e034b396f07acabbedfc8fc900dc31a8c77dd659c003463bc88ca48a9649d0f119a03d735e5eca52fad8f1f0f17022933cfb441e499c1581c9d911024e4a196d5c08424aa6a1b3f38ce22e5778e521dbb6df1c1043cc8113bf35f9a13b9d263f2263d12a2519a139dea075154ec9d54742f5a31a9a3e332e6a11db1fca0060459b634c3763bb9cb180df81c7485741328c5262ac3ad74bda09410b0b517e0e5cd01886cf74063cd01b32a729a8790ec011c477451931c9d4e2c7c90586e7cfb712ebdfd5d2c76b6072f009ba047665f31be9898ab61bd0c50230ef7e6c2f003e54aaff6972854fe065822a5ec5cddf19534fdad89224d1249db2311c32b184c450e336a41fa9e132692de713d0116cc2d5e5f42c2759a052a3aa9cc92da67406cca83c2679466aa5beb6c1fa8c9e86c260190fc39316cadd1b9671309ca89e6403a6769ea7107f238b47a2111222e530fbffef0329631519ca66f65c8a6315292c1e8ced660a25862a0324b13ec3b1c38e6eee65a7d957929071047ac336d30333730d3fcb7c2ded92362e204e9aa45330d222e9f8f14e54aa60cb2977acbb95f7caa4fb854c3e6c5d967786b0e9ee164f217451eab52839247a4b12ca2ff1184abc00ff7e8f86b79b76e998c47d6d68668b452b72a0d5140116b21cda884bc4ef37348f22e7bb21258f28860a0880b8a108a24c4cb1300b89de32b77ca424186ffd1ac299080e203e49e72239fe7971106b18f76fa61ff44a1d9ce988e0127dfab4b9279ed1c28a0fb0383b3ba1645a7e04135908925fa7382e488570d095836b7ac26dd023ab3f6229dea250a417dc61c849f467701c9aa3e2b0490e8ea40b87b20a9da61d6acf03e6fecf4430e430c9ce28e925b5be03fc5c39423f1b90b7ac3a14681154c35b114d155845bd4cd1c5844ede18ec449d261c0dcde0eec7a2edc245bdaa8dfea57fda7fa58d88dfc3ce654a72e8a809d0b96449c043170949ebfcd81d346fffc3b6a03ca7c9ce84a770988090003dfdd45f8fe2432354e1b0924e634f194c02d653e822300b7590dd3978170a78062053f770a748aa8226b4306d1694655b8623017b52fec7f6c7cbba3f4828e6021e3328fef04b9679131c4376a57af08360d602bff0f927215564bd04aa51bddf47a3c5dfdfb3e56d0b3c232c5b5346b710ae566bca16f2cc07ba8261784524486bd70ca5a55796b2f1e8b2374e22d08b4beaf5f3036b9d4b81f12326e053ba6262ccd559d3f7ddd6f920f9964fadcdec7294cde63e58cb981c45b93f0d8bdc65ad5ae9d79a36f0b898a7918a8ef1437e3e0459e36605e4c706fae123d6596cd3b0a0b5045ddf312af1d8556617c63520ee0ed2dd7c195df65b70958cf02ae1ac5552dcd7312160338ed4f11296a275b25e5f17549ee6abcca3b55fc8af630e425fe40d91aef41262a5f522e5574db05a2c88147b794c454e3f2261f0a9c6f0c6844405bb04f3578e0dbf3d25e196b981454b6ff4353782ef3cf6fbaad73814ea2884e3c3f26b6edca986a4002fcd6fca503152890aea10ef564f13b7dbcdf841aa18afee0faa0824eb727bd5372bf33803d1959f788ad465bcd6c12f175aba003f1e74d693179df98108c115700f910fc3091e61451940900a7469c310c02530bf54c43d79c5976545ca73e1c4d121260dcfc23668df148de7232cb4fe3585c453dfbcb3089cab8d136ae2fe5d21a47c866ffae3317232d2d7ffea3db188ea682e77eed8ad39b1380cf9a908d66799339bb51f949a265655d14af80acbea8e7f695b8020e665fc00448427ba7e246636ce36fc6e01aaa06af53a75fe5466192ec82f4597e4cbaeb621d9f15dcbe0c86de716a00794de4c21c603b289bf66ea49e77ebb056e56f8e4e7ccf0cc09f7d0151e78d42c1e6893720fdcdc0e5f40a691744983582940f5264eed4026fa9cae6c8d79c34452c2225858f45ba25a2c9e3ef3cec31273ce1b62a3d1ee6b38f545b7deb9df981d2bc2e84b323e501fded24dbc471aa1faa2e06a0e0ff10d9c6192653e34e16f6ee9472ac98fa30a6e61619811c6160bd71969ea2942d045df8f63aefd3bfe02bac15da42d1025814e7b726da22832fafec40d5c74ed9df55f78d32ec95f50cda12124d744e355010482f37ffd63dcb89287f7aef3ac7fe1160713167f3c3dc4ff0eed7e843e2c20f9686c0e797ad8dfcbfc5edd7233f2b4d6581878ea78910f9a6a3bb4a193522d68fddac1114c470167d402bc5762c15ffc58eddff809362fab7b8c2cf1591daa11f4c5662032f0f3b14540890550b62e458113932dd2287686d93a1a05ee75b6e846b17052f58a628b5b248aa04f15ebbb5663b0acb5519f40efe6648f9e08735edf3623034d7eff90db1b3ecc76e12402fe6ed12e6cef9e22846b154fb996260a6b260c9e1afa5e60a63bc263ddb09176b4f5b154ed506316bfae3f61b0b76e645c1ba637501d13060616e92304099dc6769af2be8b98c0bb7b6013d078319202d0a9b3ea9b1819e85649709c2876574b038f7c4f15017dd354147ca4975a4f5806a9d54282f5bbd9459ff07a730ab234d5c17a19b03aa8e68abe9cb84e9d01865512c6afd8005ee2fe6715dc8298611e1228e377f0e6dbec3794fa171bab961b7a29ada4e6012dd392a85e8125355737da596a009d9e1d2d19cba8ed2b80829d2d38263939bc7d7b4bf67faa1c117a788bc2a85282184a9a4048eacd9c5242032ea0f9d20fc811c4630b89580bbaa6c6e9df2dea76d671d08b543be78f8d6e932623663ed65e2ebfd099ce1a05541cf0fae64e9c11bb86cf141dc095147ffe5e1d7f2622c40220e93bbd54429063eb5de0aabf753712da2bc98761f6b366da7d7840cb3409e99ad1b948e07c995017f3d41a40801536a06a268a1f9c690f445c4cdb4b5150751487d3fe2061fa0efbe06cb4c0ca90592850ac341df82bf75784d1a101975105ad3d7620a1e00ce4113d702937d5139232f383bcf64f52cd280c02a0bbbd939925be5e7a0b3c73d3cf21ec341355465b5e029a11068ee99e4e939f8ec7d3b250391cbe5fdf34740f36755dd2a8eaf90b8a564f2e8eb1591ec353a716cfd79fa43551e289805e7e0c8cb598aaa36ab604cb8c01fae5dcd3071c809c405c2eef9bb78faf2dccea371ec69f8a29b6ef9a76a7af4c9b70120973a9b67e44ab2124bde736883f2956dc2b52af45de437d776b22992d876bd4f39f52f00f37627577172e07db8af9222b27be1e2df60545644a2362dc28c76ad50964e0bf8d66f5e583968da02fb13f4e70a76760e5fa0bfb4beeed36363fece90fab1180905871b2192ef47ad9888016b2d53b346aae09122f648bc25b7feb764fb36269d665f0b788e0a0dea1f5366fe397e70fa8b35864fe831ce06d42f88b2990c4a567b6ff6e63643689ab33b2c35c16dbce5995bd0de4f0a7845802f5a9b8c412cc992f2d0243e2250d9e3cc0e1e0a9dc048195f381fdd8d4dbf5e619bf500f30fcafc4fb2176ed2d39f721d485b3c3e230d26bb8b32b747593ac82c7b13203b478254d07cd8e7034b917174ace8eb9177c8836cc76131c2ec6a023789f0fdf0cb9246a47d81ca1f9e3f34ad0352888e9024355857f3a3e91bf887b161b650367dadfd37b852183c6ccb3491bf421146e968e77248f7ab0a916464f10b7e3031cb6f16d0e6f397c06a3ad057f22a48b1ac9639fc51df4a62fc227ebd40ff62ad05101f0af6c27f183a09185f43f17d772c1ceef59783a0b6fb373416c5b28967e9773d16559deec918507d9f95ab331194067647066dee6e0fe7bca0e27b6c1dae35042e4d8f0acca24be57846b7fe4a84e32e757d40827233e3e5073b279fd38a762c8caa7d9f841345462da4f73bc82cdb3f17216c0fb6a66fc1c536e55e8aa7f1841ab71a6013772dade21de676f7cdd32c7abf268160604c901804a2d68440b537ba232af5f29a5e52d00aabbf7eb8ba45896680f7536ce2e1e73c45c08e1e0926c7a3f64c600729d887a7b1190aeeaa7230ed1c91a2754bd3d85eb89c23e230f3841ce463e3471e63e72cf079d7b9bf13d2743d1de3949ef21e2d8de72797ea9de9e82280abef3ff90842f942252981f987f34adb7974f32ef453cba5a77d51b4462e31a0d73a071bd914f988eef48e7c3dc3b7b3c60c9dcab3d4e074cb9c9c952f19d81ba89adec1f89099c105e2cf9983459df3a48bec0c701913e7f825c81a3c9988e5ed8c4b39fe39032c48bf618d4876e0c73c6452a0f2ef077b22a44e3b8333f678fd7ec67929f8648c14b031ae10ed1ce595466c865cfd29f20f08fd7838fecf66e396f2580f66a77f39137d2fa5e57541066eb37b27b5b4b56ebc7406ef6a654040ef1c0d9e3b46188354d418d73cd1e0ea488ad66f6588595c9cf184c69289becc58fa2b75900e78bfc6af84a80884af6a626401b2d39fc9a9f5e3201140c2b3ad49b885fd51f0588542ff8427c48d3b8dc2b9b9f71b0c17655db6e3eeca91fed8f55d81b19b6eb004ead3654affb4405ee068ffc9131e03e300a1166f18c422ba19e16d54c8d5873b9eb15dece4baebc95f224b3ef9592299b402d506937537ad8fa4c17d20815920945717dafde303b91d6f3e77aad3f8c52af90e9f72390377813ccfe1d50c883015148d7bf4b9d2e61f64d9b640903506f6578c9185c18b3ef035c48c0054edda5cb75de55ccf4ab990eeb054345e222664a9e56c174cb6525d1941eb18eed24b690653e0e45791062a1a56e1b998c9dea77b0c6bdcd05f00b3cae81e380d7670c35f9123c173335168333e50bd3d279b8b9a0658b242cd6c737b72550d6e72672271f0f96186b540ecf065b1dfb9179973303ee6eabdd2192e44ac8ad86e947fd43064a7c1e5061c401428f717238c5ae647ee7386bc3d85fcb025986aec1ffda52c82ea1409f8eb72ad42d8719fb9e0e8e7695a16e1651c9281f263015a203ab1570ba3839db745152670217b2530e22d085399fdb4d513a882025335099cfb8bacb185f211f8db9ca2fe7b853a5da0998b17ac67aa9fbf08ae1378a44214e9bee695ca82bc3b94ad196e9ff844c9a5a1ab2b096bdb64b5b0fa6459b7e14a28fe6ab3b5db013af23fa2066ee5e96f2299b13731072cfb91d26e85bdab74c690c800a640fb7599e69d5aebcae75e08af6bfb5dd14757fd7566f4795fa58413384c84f82d6430cad89692c9eebf921a647d017348c13149cef941e063c33f13aa077d30e1a186472d85457af9924eb4f75abf0dc26f45888e481a7c5f799ef1e9942e1eff69f9def0ee3db2ce6f2f659db364675fc67f3dd6b9b178126ebd9a997f8777f75838e2209a50f36742182256ec6fb3b7285e4544ae340648eccec8cd50115c7220638da12ff2876d6f9be8d6397648b5075cd464fdd788b314e56969808267d8f0a05479ff4a053e62dc19fe8fbb9cc53d3c9dbe4a22bf8a07e0de9125954cb880901163726d68fc0e07b8628d46888d7fa155396a0a4cfbaa4e8b8e815c19de42af0d8718fb4bc7a1600b19d4ed10a0416682cd425764429f374f65541d4f66ba25046420421d6fcb2ae1d2101780cbe6e796b6aea33781ace29dc0dc06fb4874d26ba9c85d17d31eb37bd7c56d9f1cc2d0f8b07c2e50e282607ca43b17077febb1af2418a9a821ed893430341ff2890d99917722935d6851b96d1a70578f373cbdcdf0232bb3027fe1d90012c29b406cd163835f81b09e27f2f815368ff670630fffe0ff8c6ea37bb593a2552fb6987e1d5f8b81a85497c528963ec14f3cab8beceff197ce08b15015b66e934c304101ba72b37dc344fc756275db7d6b87e93ac6b9d8be5c406dde043575e09a171723bfa237c8dd9e4b88f083d056c29ce05249b5cafbbe21103b13e2c118fba81f52d78eab8824864b4fc0e857b026243e5b26add8c1947593b758b3fc8b95483c8d337e00279083cf1e4868feccce424971e4facb37f389393d796c7267bed3fc0995cf977139d72e8ad9e55ba66554addac43d4cedb0549ceaa7c3898cf8e6b50cf6d8b440cb70c9b4f314b8efd8e61a1d20c969c7b07c732960e6181dfb0e700cad7fd26a723df9789d240ccab59d249781ad1db846b7634d0e66a28396e148f029a8437cce54a6a83025289ba004bfb306f1639c9d154292238d3fa3ad148a0eb2610ec344e8cc6397ae52457862b23c2b88d868f1be5284db8dc34c66f1a295d445a2bdc556c5e19a24e249a82a9142ffc43709253ac195e568586c2c6d0730fa204040be9b7fafe2dd12101068f92bb6d95df170ce8c34cc086f7e301a96de72c7413ec28f5719213059660bb43c0ed521d55e0edfbff65c6e15764c12de9984cef974520e2e2128059bfbe0cf215348a71928b9a7e6062d2ef6f08fa6356dc98a16d594e43e93c02b9490d8ac9f3b6e7c1bd13285be2ccbeace54be36ef99e6edbe607ade557cb0673414d511e9f6ca3a4d821c61a7b0a3fb5a8784c82874f4d2781d3ebf5dc1f393e51abcd809ce414e0d26ae92c3a509025c87595dfc31c3b3aac47fe6e9df2a71295e01f5892344e63e0b6d943364be5834c50b1e41c07e0b56a5572d5e27242b5ea79aafe9a992a390a6e8356b44c3694c969d4e75362a9831a9638df3b8f7aa58b6dae6ffe4beb2e025d88d19c6abf7cab5c95eac47da35fcf6e3a68b929a17157a7c6b16f9b227bfc67705c7d6059026da2366cd618145e532ea53d727ebdf771920bead6e4389b00825029cc10a43e1e3c7b9adf5f781c57864ab23d32c7e6ced83e60b326353880a490e0acaa7f1f0336a40dcffa359e2dff4c7fef791acf9a3d976f41ba76d12ee531252092b956acba15a4e43896b95f87b7c4b4b4a55d959150dbe038363b7c6cc4b369695bc90b05c71de30311bd4aa15c7b8d1dc8634b17e0269392d8bf5a535b96405127d87ac2b6f23b728abb3b6c8d5ed7db6109521533d043fbc656e633898aa84fbbef3a11ffa32a7cd60cff02848f2ce6827fd370d3d4b60f4caa88a4270075662e5f10838faf5e1d414a9b0df3c76c9cba1006c5e880d251f5089bb7ac6d992d5bdd68a6dc0826146708b1a810ad2f8adbab520f649cb98692a6d24cd0060dc105aaa74a1a61a4ff8ca5fca08dee75f39da61407544711fee666637191f00e8d1780b6d4ee613674ce42d4a0c0a06e5fba7c8eced605328692face3fb2af400841b3fbbf6f4b948c704f74573f54161bdef6aec8d1c219763b771a9d234344e8978514a9cad98cf6e74047315f9d9947ce7883264592f5d9b4b4611e6ec67abc6c2f572abd0ea7a5326c96a1756c725382c4547cdb0397c7afbdb20ee7e3e07adb4208e7e42623848d9390f96a344883682176239238423c23a267d46740523ca86fc69d712091d8ee26a7464e11d8bd93f700cf81aeb00ee471e8b341b519e389468c26259223c7dc6f5db4842b1f4c63d2de99d5d46bbc0f0f7a2c0544183891e1788500c1f2fc083850e4b53078cb1b54f9194e6fafc38b0518e322c39d9c6d5149112236730be5db2193e1b8501857c1fce1e6d14426fe3e5ced2939ad9ee7b0029546460a89bde385a32701e1ac53385e336ab99e80ec9b80a0a9808737fade877f7d1791daf6fbda4eb09ea4ed815c8b1fcac2544224b5c85bb99e57df777438ffdb5eecaaf365c3db471786683d39f4059ab2a7e1c4f2944199cb6ab1772473dfb77194578aaa0b14271c12927953c4ac1b75fad41c211df7278cd12ad1f38b8f25d2cc9d9af4d38bd31a1735c146c0014d6cf7b147e924d9a8fa344657cea129187f6130465f545dadf2c635fac783e15a268cea769d046f9564395db8cd86f8a6938bbbe2561371124c42ce979a35ec98383367a785eba8269032c568162e4f6d9c98db7351b8bf275aa0c13272057be45d5f4eef14a275e5bf2c8afde0e86b7f14aecbc4f57d7bade307df726860076680c7ca76c98b08a047e1e4d47987ee8d92325e713e297e0957e8e308d5fb20e196fa66ccb8110e96688564fb29c881e943e6057cfde57d6ff63471132e74313374d6e94118098373e2be63375b803f1c7d6471e647049e7b82570f2601c0dd237f449885fe507ccf9450b292f311f6dfe9f5a003a0648d3804538ce419e4d8ce4b3fa902acff11718f5e96db0234db6510cb0e58373aa1a2c83be912a1b457bf3f05588844d03d9a625e173da454dea245db8ff54207c66db7aea51c2cbf300324899090a43676e86607ae3a1e9244b896b9823743a3273ea5e65f899c88a07512f1808951107c48e63b1238990788c32754fb715f33143511decf7ba6e44349837e29b8425761f182134aa2bd174262bcd15321e4cb95d8e9bbf7fb78d7264297067ecdb417172c62a56fe135d6c3f1a5d618fa4f845be096290cf1a90de00c154867f1888aef2842fc5b3b965f8f234ded9624a14811fd06057f011346c4354578973785c26f22b9702e85a59da58832ded4acca3a6451296a3835568445e0971fa462fa560bb3f20ea76917d444a33728136c2e46c9f7db9c4cbca9145652a23b1ea0377fca2d85ae3abe951255757040897bc36eb3ecd88fd670b2cd002e9b1faec14f27b06f1de00469da9bec526f61d69079b28455ed25616b3ce8e6c346155283def17dc2de34685c46834461316acfd0217065a04da8ea87e6028eddc83aa86d425db8eaebbe60a50b155a7db88f1f44bc07d8d77409d6d9962ac0f0480a84f1b2bfe6c20f1efd68a8107f95e882646cb5f43f91021eff424f3258b4dbf864b762569e063388c2ba5c7b2aca3f6e71a8b9a414e80306901904e88f3bf1ea4acae8c51918553d724b1fc78d46d20cd1343a817165f656fdd86d3d6cbeaa45396caa4a2da1c62b086341c15c6fd5b9de819c47bfe81e255f87e89bbb7054e31c727bbed90dd1840f489100579a9889a23e534090f00480e91057e0607937197e7781bc65f05c04ab2206ec4d635b19b3c8c4a71646e49bea33c3622b2f2ffd11290727da25c7f690505ea812393648d22bec9ac3b59249a38669fde71a7b9b052d6f4060baaf4a0bee549d0c670b1b133a4c0b2b73abc4432b92c905d058921021839549dfe979d01d6b4b727a7ba124b89cd4492d597cf25cb7c2526fc12855abb27256018801b37c778c4bf4e24e23f363c66a921ed83ac118ae5d77441ec285d1e1c2ec37327faf388b8e17fae9ab317a44b27cd930a4dbc7d4f0eb431cf1197e388fde9352b6bd5017ae2b433e6c4d1702743b30215da8db4e054c6cdfdf27743017369794a480890b16c4a2b55c885c69039572a156b1e436181fbf4fbc2a2e9c2be80bf36a1117ae5b79631b2ea4c385b69af2f5430487dfc2e10f62d0e469082e8357199e2ddf427a0f83f6de4267780ed275be3d41b8d22da40b03d8f056e516f63771b5e316a6e1db09700b771295d5c4b9be637709c29493167bee1fa16c0b87620e0cff706a0bef8efac66ada42505d427397d16c614a6c83a1a5836c216bf00e235de12af12f882dbcb9ee82c2b83cf4b020b3353ec70fb023ff9fe5236e125c33071ef78413eefa8d9e403d5db4f82a2fe6840cd6f9be618bfd090f2e4ee55eb7a808772397be54c84326f4cdfe65aedbb4dec82763ce73042d8293cdbb9ff89ab764b5c71cec12f0cefc1dcef2e1b0012ab2fd824e186f9615d14f1b58afe501ae921a71f3b741fecff51a2c439a911d1621bd2e0f99a42570db00acf47a904b5997cdd46bc8f1fb6c6c0fcfac02782bf6500e7ba4635b2f34ca0b71403516633e2ae5e992e55ed926fe48856f551fda420b2530fb018df2812adf64630009c2e5ccdd48693d99cf92619dfc66bf7f21131f6938535d5aa35037f2f5750f48ad5bc87de7f0b0ae02a94d4331a7da66d02bf336907b1c6de7d307d9403ab46180c686394b4290aabe0173a99806ad64e604b94719763f4db013a483686a3536dc59d282543d2bf965c542248581484dc90cd2c487e3435482b76ec4c4c0c4fc8510c69bd539db9fdfc08dc30fa0d7a33c733dc8412e9dbc200543ec806ac483f4729b0489f519a39fb4b6845bc51db7db25dda36234086d2a45103d628ee1cb351940712704cf1d8d82c25992095345d04102ac82ec977afb08ca99d1be4e1a6ce9611e94f1f2c46c6022a06abd2aa519431ab8ecbc06117e005d3de4b9a0ac1237873b2c20a446536d0e216f8d94718f83bef36ea534556bb25d07cfb61ddb61fc3c375a25dc4d11f259174210406120c7f0e504d2641f56537025eac34619863eea38feaf020899e8984b15e8b3892c4c1fdf0dfb048bd4f94e0c3ee869e07cde1e1821b949be200363ec606bd44f9a7adb05643dc7d226a15dc21d284a006e4368822b0fe41abc1cc10ae9c5a92a2e0478172cb500559f2324fdf51b57529cc33bfe041720d72970847442001fa0cec1646002a0e83d2a2563024c8c6f106a762c89a006747d41828526a4439b3c43219d1cc91ea628326f1a619b86ef67b04af670aa9a0b1340c5d05f137c2900e61aba1fc10ac98f55542e0576242f47c0850e835fc5e69a906b4acc12c7cec160998a5bb048bde7d4a06a1f0753486ed12748e11cbf3118064b5b6ebbb850cfb0101f5d7928772b7354d5a79b1e34dbf46c07f20ca4c947fad765a671a0422a0b9567d746855c12e24151c0d897180850f51e0095696821d12be15f53744b7553e974fd32e4d9026a488274582056aa9a0ef549db2e1d8f2614645ff8bd647e9615f81fc91bf681cabc676542f7f26d0e3f228cf68d2e3fa30f0263e5000f600ee250295ad2a1626fe0829d5281c574cbc6ba17f1f93985e7a35ed2f6eeb6e59652a69452f1061f073d07dc56e21c0d98ea39aa2b79f119391cd265b664a9ea4a82d823507f8045cba0d09512aaba13548abc8e3b75d1078aca547d092f23a24c74d57f3b71adc46bfe5ec2eb56c2f51274abfe1b8a2bad68d57f63e1280785d79f75115e7f54b23977bbf317e9c9b5135e3fd2cb5ec2ebcf8e96867fce3943afcee86b78fdadc4eb0fa9e77869981cdb8adb8ef9a5fcfe80d72f61ba1cfe1ec2e35d1a7e06f78bf8be37034ec9d6c412258f726a7266746694a3b45994524a69a494d24929a594523a6986f45276a494ee91f85397368b2af1add4dcc6dd5227b8cc8852ae6309da9a098f5b095a6228344ab3a8cab22c5be7a5d99f53c618e594bb2b23ddcca9b412d76897b46de3b6db7df7cf46508a4378eb356b9d8a079c4a9695349acd4dfb62be31df986fcc37e61bf38df9c67c63be21a7c829728a9c22a7c829728a9c22a7443784d8344be63beb2222d1f6fc9be43829e306e1358aad99ab11669647761748f5e71863e4586cc1b6da0b5291bd4fa75377b1ad360553ea2d0da594ae4c9740872a533d4a293c3f2253778d6cb6487b5cac772f952ca96e7119e736a5ac9570c819bd3522408ca6cc4ae5715bbf8a1726cbe8d44a4064a94360326a283cfe9376130239ad6873ff16f5e660486334e94413cd441737e79a654ede1cc79976701b77f13ddaf176c775d244f786e3b734f2fba3f4762f0545a378e546088b8c614f35925edc4147d6f8a82ec79ba5250bc33badf0f006504ca5d295e6f5207832d41c0d858a746545b2b0f8372743c15078fcf241aef1d832b966bf9fcaa5898ea359cd6af61e4bb3bf018f9fd5ac8ddfd2788f9210502b2c932525d7c1483d9fd9271a041de49cbbb4ea0254fa0331b6073ce61897db098fbf9be06602c66bd6d64b78fcb195f0f8e3fb832f948cfea13d41557e8feacfdbd6319a56769fa2c941eee37a95da547fbaf2c218b68648b2ea4f7fb55ecd065aa4b54fa72bf5a9de485f105e1dec34beb0db9801f36e51634b69966c31803c96cd8c024e22659fc854f9bc136b7fd6e578fc3e12ddb7f0bb03613cb246357e9146b1a4b84ec2e353cb0f171f387aa8645e78e40061bed5c7ec581d3b627ef5c1d01c3c5e64543d70f870f9d1c24acdb0a4b0a2020a8847735ac15463d3bfd9702c702c6c414a2d6842e890ac355df226bae038fd22c2bd10f65453eddf5cb81d6f8b645ec6ad552f2b5573c0e38fcdeadf54dc0bc7485b9480871883c130e6e06d2d07d703b4499ef45c6cd6d244185f1d75cc1621617384c72f234cece131adc33b7a736c251eb7111eb70ede56de4fff70bcceda8ea71ff719c83918aa52aefaba9cf83d8417c1947fb37970924794f11d6f7d705d84c7ff83e358614fddce74f2502ca91697181ddca6c3e44577801adbf2b684d9a76395c32d8a61b2914510a6b0218232c6a8cdefdfd7d9c530d9c88014338ccc2e9438630c36445046accef8855c14c3848113393082912985115c18a1f61138e0226900b30b25ce88d52e6ce0454f339bb12dd7c40f4fd5a56e4b69ab215d569b96860b616a7f778a60980309677a89c0d6a92450e270e8689bcb0468a925884c4b516052162164b652813851d50239b35ea0fb4fb1df8401daf1e2f07c6e71e4f7b7f6c496a4c9be0628ac493fffd6dfd6fdb86eed6f3b1b628d4282d467f863e53ff5b7c931d0551ee7bab0d8bd0277fefdfecddbfddbbd1d062653771d2f2f33af4ce8cddf6faa52dc17aeeaeeb0e3e9c81ec25be5c06603a2d5fd76e73821957f7d70eac16203c3afee17e9b8e3d166f9c787f9fbd71d8f777797668fec932aed531d0c77c7eba73735c67e6e0bc060e8bfd59b55e0388440ea7e96b9d358b32ccb2208c481d043d4fd1defab21c78a96b04f6c8bc2af7fa487609fe8ee04ce1d8b0e26c502d3ad565d4c8a25a6d3a185165a1821e506543a98140b4cb75a75312996984e47b763ca942940f408abd2f72e87bee94dafda16cbcb5f6d6be5e5bfbbe6cb6fd91787da56eae597b6d5f2f27d5b2e2fdfb42f8f6bfcb37da524ea43adcadfc5c9b134f2975f2aaef19760788455bb1f5838c81b9a9503cbfb708dba758455bbf767d9b0ba28542f55200f4b7eac1284a1c17bf91e1872edbaef76c67b8e5f2baef14ff14b866b1cc7004bc3af1bb8c61fc79fc0d347306c5475d4b356bd6714e803eae3af4a385635db62967fea7b6159fe2c1f0c2b9f017e7b7f19eefd6fd07efb13e8dc4b99eaa8971fea4f1fab5b28d0fb50bef6a78f46e447d953bb2fe22de0ec1611889555e5cb28e66f07f2b0604d7e60c550517867f3aba4df336b9667efaed3757ee9d3e96a643e12f9dacb18e6871d796b06ba3cd94d09ea749d200c0dfdf22548d947104b024a0223298ad151cc2826052996a446776ac49c108b252525c5da6883c613c89945618d8c6a34a3d91a9a5692519031cb5a6e94669e579bca0984d51bb706d77526c9695cbb6429463979a815f91ce7460dedc3359d846bfae7067e351206589c4e6269b8888bb8888bf849929ff5e2637e51b11013d5d0ca09152f422f30198ecfcde0ba212ae2152faa666e2126434ea88844424c4a4c8688a870d26df41a5d2735136a3fca8de66e065a777c0be32277358df9d00b55301f7ec87af9d046c5453efc6aa3ae1da57ff8d548f0abc5e09a2416a789b03440eea2d4f354aa7f16ab936c6ad82a30bca9610319f1cb87863a0abfdc4947a9fd7dc42f2702c5e097634184c5712d70e057c772e0574bd1815f8dd4483bf0abd360001376c24c78889dd47eb6a287295409b51f6991168955c3450a17e9a6868ba482a1303ec81c2f2b95ea6172bc642a1c1d17339965df7146b2cc87f8e5454ef8e54fb886885f5e34e4c4b5581c076369b0e0977bc135eef23176a67f0aaa861ef371377e86e82423829458124150fb438f2d4d3f85828351c42f377ac22f8f02855f7ee45ef0cbc5c87cd850350343ee3759e44f6a43a9fd0d814a411fb8a7ef46fc8a28e85e46e157cc408f52fbfd885f91898bc1af3834c5d2380a3a215f430a316172c5b2b22986221650a83112752baba2457533522ca1c7a24ffca464d9584254955ff843c8bddcda1de35764b2c5a4f02b0e49a9fd8dc4afe8a4d3e057248a563493ee09b57f6352fbe3107bac8da16663596678cc9750fb4d9e84da1f9d381ad58ac5f1329686885f2e856bd878a3933a3074376a7f23a1f6674e2af7d9c779ac5b1cd8d96fcfbdd3f7ef509503c3ecc3ec4bf1b308c4d2e7437c947cf719f99d39a55408195b78384e9c32b6f9bbe3a56a2fca3528eeb4423d1a55384e69e6cbe3af66cf5f9671c652e3d8c4b632612f59c5c4fc3e6dd7ea716c1a37acd102b6a5fafd04ec0b8728b1d6cbef23605f39f04007aee9042c4d2f94a22200d8170c5cd3efda970c5cd3bf2e1020480d36ad9516cbb7c00262f343c80d0b11ae01c08a0dd7748b7b09c9b1adeef771eceb26e663b7b6bb96dfb63302f33260c855e657df8eb7bbaaf353ebdac167faa7d7399ff7457f7edc56fcf9745bd9cfe7d6f5e327181e91a9f3637e5b7d499afc20535b561ff33512fdd3402dcffab07f9c74eb884c8df97e26e221d617858f6ff101f2c8b47cac2d20cc0cac6ff9966779cbea27b883bb80f8fce31701245ca5f6f8cd4b73ce30c114d53a8f3b1bb66d8b9cf6c5da839d309104796876d7e5b474a6d91ea79d381a4fa7d329d33eae547e51fcdcc07e44fa7166bfa1e8976525af9b61822b2f8a1f200ff94c15d9c74885c71d8f413b069a3e3b599ca1ec23d53e66ef75392dcf439be63f3ef3f1f1817017339067605decc4f21277625d9c82e5234fc1ba78087be42ea6d2334358d78faf99a0d2df3f8d44bb7cecf80dbdeef8e558ffc3c8e33f1eef839d20615d3cbe9f9178fcfca4741dad7d7c9760383ffb95cec8fc169e3abfcd5efb64edf105416bcbaf0fd9cf8fdff26d5778d96b36643f5f4a6ea59b2103e34ab71d9d8559b21630eca9dac79f598e0616f1a190bfa8fddf177613b5ffbf90d508390ab55f07cccfd5d7e407993ab318d0e5cd98b9138c62f5bb027964604d606880f9f913fc41a6c28032f1861c2f2a1c38e490001d9e44a9591c0d794b4ba0a7ce97594f6d29b2452c2b280f0619085003bff8c99385c24334c6a7527b0d48c7b2c141ede72e6caae8588bdacfd5c08b17c2c50d5f0180c5612a88f08b9d3c11c259dcf050e4a15ed239e427a149f6eeca605b739b73d9075300ee4b9f0307e6b03ed34f7fa3c2071dafda2f52ed81f5c07a7a9ea4f4eb33db36030fc95281711f7afc5c5cd8f685aada3c61acda7747430b352b81bb33d1df931a0566467948dcdc7d3b930606d132c6e8f333daf39b27a3f28bb48c3da73cda5626dca2c591dc33c9b6c538e7b7a3a5862a554be8438a6585d41196151a9607aca080acfc80f2544041c03ba5e0017132cd9c90983a9629021df7a39300b7f9e074b6528f6d02254da6148446796814a0194885c8e6e7712e8d5479943be20564d4e13bd1631a03be5a1cf64d76d96f996b349b2c993d0badb5add4ed9572599afed0772c6b86692ab35c1647c7d2f06bf55243954b0bb581d4fe1015aed45075eaa1aaad3d7f5a538f5c3530e462605574ad5143b13bead47dfeb898c98ce317a7dc38b99d3097beb9ef2e87fb39e79c73ce3967e9e3774486e3d65ddbafc77de9b7453f6c9f4e52ab40615febc6b6e4ef3313f615b9668d6d694f9550f7598d7d51aee96734ced089d5907de20784103ab5f4b334978da8fd7c0405360a9c81da4f916022789f503b088e5f3a9ca42e1468f601d12dea4fe36bb4a76e12c734cf9470ee5ccda4dc7e03c3ede7976a96775bab7e66dfa56dfb5837108686edb5df4a5bb77d9775391918ead4ece31772b3cb2975cfdc6fdcd67dec723ad0e5c52ec618b92dfb7693fe0317396edb469330d85c2ecb395ea0b69f4edbdccd5dec166dc4d7efac81279e68a01faa0508b89dd2499b68a2091104edff544a0212906007318e9dfcc867f64f4b9c4e553cfe46c28d942855d19068af9598d9160c0211a080a5e029643e6419d4e52c988aba4cc42ea8cb2f604109ea9ea088078a8260e8c0132564f8a9acc40b2ec28609365484a8214409374837671019830819bf47bb612c94cdc1d2a0e5a56a522a966ac543b56ed45e54182103a1eec76320d999fe90b7a80bc4d264317d803d408f9b346578801fb7490e862f35dca42230d4f03b74c4aca48d901b22446072bca870c497610101e2d2926259f11d562b94773275cdf1107b90477e989c142828b0aca7590f3f1cd9161241dd5a242022f7e0182caea8c28a2a644054c515565451451555545145155b04052c8e7f3f37378488896b5c60f9f0c5430f4780d01182777c9808130f88f03084e508103a2f42ac7054073b4c84cfdf36e6668fd7adf9a167c36e5127e835ab7d7add5a8e8bb351fb1f2b0c7161e543213c2c4d0f32757d1cd961fa50054488d22909b1c3b303dfa0f6af803cac8002c3eee18707867d2448ed3f8161f703c126306c1d6ea3f60bc15e8da1c21bd82270ec16382d00993a6a3fcfe2b8ecf02bc5351bd8f5c287c17088f6f3d3e68cd2e7f43cb23b03d19629fe25e6ab5bf23dd1f842dd2d6a906dd558f36d4dff0d0b29f0782fa5a22b1d3068293abf5fc7aa86176aff0096a63f0365e8d60c40ede9822fbf52ada214063692a2af204254342cebc70e59a1f6af5430b2383e9646860622140c5da8fd4df3ddca22ffe48e461b07b696c2ddbd5de0dd02f718dd638c31c618a37b8c31c6183dafa5f0b89db8bbb70cbc89dcdddd63f4e8eeee31956a69892b2b291616d5b7c33ece2ee339984294c8ed51ce2ca399366564f9f045f68c1fb9b0a14a0365d24c1bb396498de5439b9bac8bc2c606066ee3645e626a0e2e3a6c3b981ce0dcccc968dc4590479bc94d5c27fd4b795ed7e564d9aad390bcf8dc4a31657b24e568b353f6a10c659b1c2f32e060a9bb5283c76d3768f285036a052503bf72d06107aee1816bfab92de6801c9450fb9b8d2ec27648a8fda7326abf0e67ec4086037848e30847dd9260fb7773be496edc17f1f8f1543f5a6e93fff6939b5b2996a3cd9e4266468d6309dbca843c910460f3ef564e2e2ca9169497fd36bf20240ccd2ad2ac9661d52d1d594ddfaf7a1d69443e9200cc973fa5e98b346d9796d4e783694edf4db3fa5db87eaf519e7bdeab1ae53d4afee98b784f3d99401e610a210bb55f9312942eebae510bcf2fbcb9e36273dfadadb35ff3696c0f4a8306ea317ac62dbb9667c21e41b3ab8378a6bfeef713ec7a9fe9d636cb04b5d1f07ef91581a20fe292cda39c19d54a1b57da2daa0bf4a6c5424d0a3c6c82a8b09552294ea5ea56ab13f8a54d2b519417c48605844a1ab3d4a9e3b6926a05be6ad5719ac9d4d1d3894a1ab3ac94b150acd30ad77d681344468520a60f5d10f2c519761652f04fb650b724e5a7de8c93b58edb4a590bc120880d0b8877f226e8312c954d8905c4a6c54d6e96e494536ea54ca3286f43c90f3bd6e5a9914d35e9718bdb0a8ba758521db729592c0a04886653b2a1425aa5adc41ee3f6a5adc4d2e894406c5a4280d8b4a45a3e9917199715d6568170cd16448864e972e4764674d428248db871bced1e27f7d0e4c8f416b59f06b5bf5db0acfe5253513b8b27acb6a2720b05599c6e810dbf9a09d7f4631183da1fb69096699b4b0b2de1dc8544bba0a568295a8a6e01c7da09c73826458a94920836f66e8e2281b6b7c149491d10229746f4a949b57f93b88c2cc963ae019bf66af645de1a78fc5eaa5dfcfce4653aa7c117c3639b24b6e6d0cba4f40c6731353cae59fc340b6f3fa415a93b239d133a96c57c66ab59ac0b6f3fcc6271339add6ef8af4c6802aafcdbc677a621e5ec27fba9fc8c45f72eac6454f91b2c411982b7dcdd34d03701b9115b23752ba95bfc495f23356bc5d822e6c52f1643cdda2aed04086f482712350a9ab58d822683637e4aa93f7f47b85d2125508b21fda913a358c95c2b1fae3ce693a4dcd3975f5c56f75b3b1318ee54ae7b06437ed3531ff839ee7e8b1cd39caecb22c73df726ee3bee4ddb5cee6ce0befbada3dc6fd53e721a47390ee4ba2cd6dbd47d91d67a38b0cb9994fbce3b23dd6fb1d295d7c0c356c026f42918723f7f2b7d4144996665cfb2a91d7eb774e28d4db7e6dbe8c44adf441fc956a96202b76e86d2d3ee8b34eaa9e9e97b28d0e3c010886d29fdb82ea7fbedc6f39e3b1bb437fd66fa3c97a7799a06a6d6f4547b6ad2c0b0a7665a4703e548419d584b6010b1c62e752a9590f69a2b62db21deda8028566beada8068a86edb006fb9f0c151ada9cb850f84aa2b4913181afca38e57e777245ca54a95ce86ec65082303adf22750b32a4884a89139e36c37fbee6c90b2cbc93270ca193a635f625b993016d1de27d2aedd27ebc546593156ca4b6f1b755fc8b65c9e857dc1b02dd47d9a14f625c3f6a8fb3cf655838f6da5de003aeafeaa5b7efe8ed6ca1bdbf27e9f97b0cf4ad8d6e9f73909fbca816bfaf98c6d997e9fcdd8970e624c613276e018038c507bf0992554c81b52117d110b0a1b1d7108969dd8173361f28124f6c543431bd8173b3182ad20a2eeb312ac645b1d1751b708067e051f2bea8bb115cc517b8d6101391e84d195e34118953faea8efe3b78201a3501dcd1a837a7e965fa17e73e972584097876241a55062acb6c67c5b3726bc906ea9e7723ad317f1eed3f12fdfe754aac9d301fee054aac94db4a6d8c44e05d66485eb96f7e47c187d1c4900ef47ac0ea3a5c2b2fa438f523f7418bb50110ec0874e54d98b5ef8d0897012ce874dc505f61fd7870e2481845a1ff6d0900f9b48c8875dd4c2870d25c8876dc4c2877d54f997a9d470ffd07007a9c0bf2117f96036e2a31966190602998578884a1252ec88e5976f5a3eb471f99055f9ebca2fc7244dba8fef547ca63f070c6985c1ab0200595856e9fbe3127751181852af82a1a72a0286aa0f00183e0b0060c87a018c47eea244c0907a2f30f4543860a87a17c0f0593760c8728112c85d2c24a1b88b633ed34f5b6048bd2160e8a98480a1ea5b00c367050143160b20a59ea75a010c55ff40c0984d9d3eeeea209f2172571bf94cbf8d0d6b060c59ff2a95e7f5f0a13260483d4fa5fa0f0cdf6826b9cb7f4a3fee721b1b560c98e43f493f4933c93d950b18aa5a400743560d4b3f1ec69fbafda6fa16167fdc05e4ae7625d1c0c39ab87c93d4af7c7f44a25b2d8ffafe78447f34625f2fdfef54dc158f7ce667715854ff49548b9478d43e95e58bd5e55379d24a0a69c56beadba56901b7592bdfd6ae2ddf2ecdcb4746e5dfad097d0c0ef56d65f9b8baa8188c020788545dbed4b37cb3a2b62bbcd4f3b7fcca8784c7a7a67e3375392da0cb4bb5a4f85320ff367766a6d8d6956f2bca00db17e985ddb82bd2253771c94d5c721397dc2cb1894749f16893e2d126c5a34d8a479b24e42e090424042404240424042404147397e49884c231098563120ac724148e492841ee9a3e6de4ae49e433fd3e413e413e413e413e413e4193a88d26511b111911b5d18fbb669217b9ab6463c362fdab549e37937e282dfd947ebca8f4e3455e54faf1a22fabb3769facdd17abd7eeeb3ab9eee3da7db47ad092583c6a21a0240985c8877d887626d5fe1292177a3fab99ba6fab49030f6bd275cf7ffa8d763927d0e575bf5d4ef745faf47135cdae869eda81dc96c33d7746e84bedb76f7ee90b85d4fea932d3c01fe24f951fd228699d5f8cdf5de48e86a77b5678b8a7e50b656c2b1352f632368291079222501322a9c40786f0999c8233d4f8c9747002251cd12204bd008a06460998102a312104b1d501193d884561421b5058a5c81d2141b1020a51c7bf79cb7d81062d48a239fedb26bfece3e743f6a14e9c9fc90a1a04c176e6f378089e1cc19ac8ef817d0f4c2776ee373e83032f7ee90bc26b2844d591bf512e76390be32e86f00853f94dfb8260128586ea8d7f188588dc70acfedafacb773008af929f7562fd6a7731c847b255e4cca856c281c6183e53665788808a5116deec741121f82208c6d33a826d0fe9614a46144e70c4da4e83608d2390603c002882ddd050b105128c070791b71d0d5c27b803c3c4194b603c388860f3e9f7c0f8c6675a3c20411a4b603b3c53083a5802db1ec2a34d411252f9d95d93034be80b0c1f239bd2b62d1840fb7b83032fbcd14a1bd799b8b4714b39ee5e5f4c5174f2502bf3b41e6a8545ce6d1e78dbf60ebc0dc52b2ca91617966dc21347f081f14c0e2c517518deb66de46d2e38542f396056313a76fc07f290e9e1e3076b26051580d0ac5063c3429016840c69b96e5cc079117981832d0b071fc186108a603b3c291904c1b687f0d023f8b0dcc542123a2882bdac7278d1850d8a5e8c7447e941135460fd040d9640ca01238436ae80d203343a00e50923a2f0e3c5127610b483081960038a5c7d11831a24c5288181153a9ef82c610ec49c00822d184938498af1220b2d8e7a470f5dc1c60a7c603ca51f04c19ac0d0b0522aff4aa9bfe364b4ef4669f8d41c210836c1263033f0c78f604ffd56ca5802dbe1e1013b10049b20c8adbb786c8e38810fbb6b935006118cb807376d72d00422dee1916408c69321c1b68784a9caeeda29e2b4d3e4009c8418e4c00746c4c31ce0f5c5143398200f11af2fa69841151e1f17038d26be880e86ac464b3a74e8d0b41d5c4be1c5dff17d5dced7e53048a4591e6394ef92874c8f1fdcba0b0687f9f42908aef7f87855148a42ec75aaf96f6e7a644635eb0aa0c1e8cf2e4703a3984f3f197c6682d4c767da2762e1b951e58fd9663d6edc87fac828a5cbd8a3cb9191c5cd0f26fecefc1ed88d078617529f4a7dbab5528242d0aef7f1f12102d61ba8eba23e3b63b438a8ca9f4559feec685d0be3cf6219127f8e0d4ae5a745ec1ec1a0cb3b2da973a62b800693e1eb816d27c19b2f0a4161f94cdf7ce18537b5e387374206e0f8ed85c7fc75e149ff8eae1b30a49d03cfbfcb89df9602b7eeaaf901173eb05d1d260a5497474ff3b0749911eb56bf33337bb751ed0e4b75c31ceb53f77b9a7b88cd63dde2f77c7c7c868071110e902a3f17e9e5d7d617b86edcfa63e0feb8ee3208b8867fbb1860eaabdf48fccd97dd4dfeecddf9c7d53bff3c7a2fb171178356a30db1863fd4e6f62e76fb5bf418f2d4b8aabd2c467129d8b61b0f0c63a5cd5ad4368b366b175ce61d368e2e29f5c85276e6d99c5f4f3d82db6316b79518191582b8706af9709fec00082934d67063a1c049f8085e229b88a8146c5a298ad8313423000000000316002028180e08c562a12c0af348f10314001176884e565e3a9548c318c8521462c618428031008001223033232371026b7440b740257222edb3dc4d1a5ba17f17542eafc816825bf72a17eb655b4cf6c97bea478d52e98f84c573e4bfee41839b047d88625f888981577444693ed8e1cbbf960bf363a0623863774104ca43ecfe94f0b8ad3672eeaac681444db4bfb60c632eb085b549fafc0b3a4ae138998442d773ad3980e5ee234a30ba4d6f8d048edffa99b767b68f7ebc47edd8eb0279f2753bc373c0374df2c9d2abcd502d41989c642ca54a527d897c92da636820367df52b37203af653215587ce25a539201896368758c9e6cbc756bb6c857f111cca57580abc58d86fc48323a40bda56da0d0e2e2dbedc51f11b2a1bf241c197bf4209fedaf1245da1f1fe0d42f9a1df29e3300aa23124987c4370bbf4101069191568cf9cd71b52308c14d0c3ee03762eacbf548fb2787b5705a0b5128237fddb9b38250cb8f6bbee3e86ec505076e73a1ec5f2757547583bbb5ff4c1f5ed436dc3c407666cb52ab0862d2fec16a634ec602ea5320d1e880ea581e86041203a550644eff68640f4ce18d1aea2440893bfec9f3b9600d1bd45526bac345e351df49ac6540cbf3a73c84946341f4731979cd4267d534f2e5cf37fd8b562905d713be6f6a25d7cc8897b2098cfe6d83bf296d701e345d65f86ccfaa6f4debc8a45f052a2150be043d555a7aece7411370ff6d439fab7387cab8dcf0286d54f1b17bdf80bd048e3f6d0d42aa2bfe1a2ded26a143f5b680cba4c181f34d16b0a6e530d3d19deb5dc5c2e73c39f151edfa3d4279ea5778a0b37001ebf4a4fca773fcda0673a4ff18a0e631bba85af8d892563ae7d74ba0660ae733d6017707378912a1167444d982eee7506c82890cb5916d1d19b7bf5566327e939ab3bb1d5b945d31d7f08e81539e79c205d75aa93261f3fea3f29f21581d5c340ab298ba20e915f39dc5405800eb931b793522984bcaa88745887be997e626ecd8ef7ceb49498a9082aba3d1b969303dcc049270dd8626791ae36e4b46cc477846c54cbe7c51d639c0442060f00e84189e8108ff7db87f9a2b7761acf347dd38b795388485a29139baed9e48c9f0d77a0eb3a6197838d55fb231ac96c845a49cd3184fbfb211f2983194758dace6c62927755a67dd0367c0ede990254cc66292684a8b6bb659c52d1660536d066159fccd0b58bac9c4cbe007614f440bf5af1e5db8c0e95fc8b2f596a1aa7b21e0dd253dcbb4259ce703aec19b23e9b81a10ba1000e4abe45c984e43bb5ff85326027608c20b61a4d45870c5e6cde949eadf95d3a3164160cd6a6ebb0dcfc242c8e6eeeac61a96f7cff98faadfb9a89620fc4dc73e7f285bf9cec7d68b149a26982420f60973c268ac3466010f04f1fa309d3b9064189e29e6f9d958e453797fed14a7349d439f8bb492f837c76bce21cb0fd8dc4b069c32b9ae4981aeb665c7df466d3a1f2a77edb110d9317ae3f5d1d35d0739fe28ef54d5d0cad7c22dd00a8989ac3239e52c0313118246c06438395b0e5cd3866fd3acda360d7141b9dfdd529435b8c4d5fb3d3d31a9ec42fda791ae488788666059fcf31fd559d1906068fd823a59d532381f8bf310b90464954684a8a93d60b12dd62b33e48626d1b5a0b8b46c6aa904997cb8e8ce405a623613e96bc8cc6840600af8ee20f52bd0e7a69f29738e5840a5c5894201b7cca3a2efcfa784a0cbaa1f61f4eb86d44066105c9f08474b7e9f281bece901dd55e4fbe87fcd5855b5367e461e07143cf1462f7e72de466730e961164e7c8ba203dccc95e8df71892ef785ca3897f279d236a9ff6e93ce1f8df9c763a5869974d34e4e1c461058370ed09c271fd9407182bdb522f5d02098e4e82253803a388c99b251f23e1b34982808c4b6a71f4fc2e8106f24223036f7818b58f717524131be3546b55e0d6df46e96560471bc1cd191a92e14b1f112c337b54f07e35d3fc76f4575909a18cd427cdd2f4a9199a76d1358dbb56557311f606c4dc119087ec0a51aceace6fdbe62c1e8a8f44ae5a077a5cfc09d5a66ba03ca4e44129fd46a258c5517b35b0d9291ec7f6c64768b3f2a67e402b12ee57a42e6b9ee7d6d03395343018eeb1b45c2c0317d21498fc0a352f00a9082780038cf50ee4b4a08b2805409323d1cefdaab149b6ce54ff2bfb208a8549bcad8e71bc6fa57d408746126ead375fe47b0076f7dce1c97c01705a83cf91767dc67542f0f760f0ef141b484adc071871c34f8ccdaebfc37140741fb24e73e6922bf7970fb04702420e6fc22c1f3a046c181ecf76db8be5f65b3c7c16adbdebea4287b588b024d60493b137d713f32fff91a0ca95f707ef4b942779dee855cca0aabfd43dda66eae4e0a58bd135a1adc01449a80826d2b13ce49860eaae835d7d65f9c5f99ae684eb19f80997b5adbf932324978c92264a1b35acfd5a9696cd95029c9c8b6e8b0e94d9dcdeaea488141d7bbb33d4d449346e92611ad77fe2847c5312356af10ebfc32479481ae78f63142b46ec1d8cf9e85b2130e0be72343e0da209fd03e96d374c1923fca1920bef5ce28e927b67c23653fcbdb535707137eb4b4c973af87d89f5c40d30057e1fc299b16ad0928a4eec448619689106c52906fcfa1a650ac2a10d1290ad55a619e045aa8d4988273f5e1d01490a1cc6458c02e92ca0ae7a78928724448f1308de92127b2523f24c4ce2918cec7902c1a364628f24449e8949bc12917af6c4cbc8c837c6d66b16be2721411c8fc9b654ec46604dbfdc7392ce92e086f69b9364195a8e77f3e205e5dcde631873dc470e8684d9cc7f0688c23cfe9175e5a844c27dff694426b9dd845e0fd5133bb1ae58a23ea79f75f8a36657f9cb8dd555b1a25b1c3a38526cae4af958bac5f3f8e688609f66516cb43857513600e3a986efabdb5f46341d75ec4cedff9fc3371290ca7ce084e33e9290db912b3c45ed55ada1d2b269580a70cb7868cd5382cdbcb05c31bec03e5f329843cd8637178f14f3e555c819cff21e58d7abc536572dfb603d4a538de4271cbce075692fa4a86c02bfe6655b43da66f5c304e4d16fddd17b2df828655529a4a238d699ed280c0736811790f771de9c8421044436724fa3c5f01caa53126da835414a21cc3f074b6f9880c859bc239c55f741a4ecb0912290c4c3d38aa77f4202f88ba4a9d738c13155a088414a4d2ac061a915b8d4c3d3876407b1e0dc9930a50e00a0bcfc8c0a9e0ba6102314c5f8c1c282cb1360145f0641fb6ca4bc7415033208f7aeb5e53c366901ae17c9da733571682ef99b1d36c8074aae30a85efe1387efa3609489b9c20fda2d1c1acb2bd810e926295f767f788bad38b81322204592c1cb3076d8c9ab127ec309e9650416c16a2a4770c322f5a8ef0c15d3f0fce6b20e73bd5697ea1d1dd3e9ca78e2b847d5d542b7ac7b7b7571ff184a8ef7045a89abbf9c885fad1be711a63bc7e359d61d4f56294e28ba420607c8440ced2419ed0f3c13cc06bd6d95bfe1e9b4176b94b0124c7dba89fd9e44c86de6b84d7d6edc9c2dd315138a8c53a2fe7ceec3d108b312b64d896c50e8c5837dcdc043e9a4c26eaeaac1d750786042f5940cd2a1825ae57e161e7f90e9c4fd4b4d2825f0f13a659c044f1906afd3ff57bc4a23be406eef445569efa4a2380054eb68455dffc58c90993e8c52a1818efa597425f02d8881ed7d2c084202348210101237ff60743d3ea1ac1f5ca2a8d5576b67814f1abf47f71d190d62458b44941585be298347b8885e11f40485de00a04361c136da5f8c0f00f303697d09bb4b97b2445e7128eefa2958837262c710c47f00e847de404d40454aba5cad677e063a735d3f34381100d78069fe6ec13b35a0762018486ab64258338ac3d057d32e5fa1bd19fa046a5433da352eefb6150df53ce0f5f0379c1f28b00fdcbe4448468bc67d68d8c3bd06ca278cfc7021510089bb518423a24502441142f791ce976df7aeb9b90850540d5de6202c0e28059de281e76390b461d458fa66d046523d89c9e838f822a511619116ccd02be879e48bb08f4057ceff886d9b28d09958f38d9df1716ccb62ea69f1d62102d4089a9b37b145fe1d039031ac0db37cb5e23f0760c5b7d3ace3cc7ad6d8de23c6c4ad6ca1c01320b9b62b962d4d559088bee34559799c19e63c8caf5aab796d0ce5352564a1f645c3ebbd4d79fd682ad42bcaf11ac1c26b100eaffb6cb00624c773154dee86f758525aa9cc3c819711032ef34b16ce8f3d2ca8fb57c0ef2a1c9f871fa7eaaddafb0a15071d6e92b2c1fb017b5dbf2ae14abe2b97c6440f78a1c829e98a5036d54098f4b182a30f1355e5c3290bb5a08510531fedb020f1165cfedf6381e904d754494caa39f436b7075ae207ced3b98ffac3568b14daba67e612927500a3c2ac80061e0280a909e09d0300da1201337102be6af67fb6ae3c202aa2b002efa30cb7dab3dd3d2b4231cad78cd06adf2b7011b4c97f100ac4a0d7c86de3b0a3635e97c6666a5f4582d7a4844e71f36bf6ba4a8345bc3e3fbee09ff3ed55e51abd0755d5240faf03fc41ed66c9f494f6d7ca467d57947853ea84f64e5d3237fee12bd35b9e37a6510626197a69560b1a325684dbba7ff2772a1bf4ccdf2b3c64b12336a48fab1b58143d5d92b72c01c41473a2b8777352d121536d2894b12273bf2c52534b1bde8586a480e1d4f38e90eac49795788f2d37c58682e8580c65f87563737fe3ca8262ced1ca1d67051a1af17528f6c5bd2d614ef1d82914cf7b71099bc1a0521aab33e9f4e4e3d32321ea91d89730e2e404e2960eaf98b87a883ca58660f1037318212bdd76c2a5298903e3d672f6e23dcf58f8b0acd8f38a8519a27a5efff84e42ae8a993c2ca27b181eb3278457d55b97626b276ebc26c295817d58f40d86f8a10b3fe50741d3afd52f05102a4fc57f56ae174756779487c62bdf59fc1f5ecbebc6844254ed5651271feb87f909dca7a2e77880de85ee2f0b5ccee278ef2a74acfbda7531752b6a5ea948e419835c4766b4e71755c4b14458d733a65aee0fdbab1ec34e396dd29eb613238dc49c6a1241155d503895380af16a26e74e888080b415ec3fb76250e09938e92a9b763d430eaaca809fa907677e813d022d8b904a39cd3c761413f6999c49ce26730981a073c7661f49515e51cfb92579e1330e1019f54742652e2b49a5778dd25e3da1c6dffc9715a3e660151b6a6bffd49589d93e596d5a30d4d78439e72abd5863ac4034461b73ca52fc90325d73dacdb5d2148b9cb72a98bdf869823fbbf8451147694301a4e161375c60758cb598480eed1379c6d53b32b6afdea012fbe5e08fbde9e2725b69f4f1c6c7f0db8fd7c1998baa8d8cecfbabd3dee376d904970e038d190d9102e0b31407bf84de2a490484f2af0058fdc3952daa1111a2eff1a376d3390077ae374646b8d62e1069458f9bf0a5f78bc65d2da13cf2c673b18b1f6549ee8cf7d8838996d6d14c37fe63ae4e3f4ef7eb0ca3e19e4417b3337a45c18e9e0fc6b436ccc29be88383a9bb6664468c6885f44040d8ea2c249c5061409d9d09026a2a37daef603f9162a4283b6c68f6fef69c1954b9490026bd1ad15fb8fd0ccd1a7459034ee623d42c287c1dbfef74fc6dd4093dbb4f536de07f455b853741027010d9617a5b0996731abd16a5cbfd71070fea5b5ff384dc69f6a4c4546ea669cb152318af26f3a1319904b28c7c6127513de8a7a19fe3e4e4543793290930159a52bbf91be674ed398f2799de556e6e8d8c3b032aaa4e8b25a4e7d29a5aa49e0b7f8de869138896b6e92818d80ae4cc986b32fcf5928d1b3ac0625698137d4b0c411b52ec7034a1e2c3ef2488378622316fa774338260d56864c471f1d2dc9a21d26b340b77ba40b2b4bd68034c871996d272b316d085e95371c0c9e3cd095d93a63c0b038057816f43d421da0be409c8113658dec881033f6999518563083edf1ba8ebf17f3d19ae8bb98a9a43d1668ca9e094bfcc07a5ba788ba07c5428aaa20403ff26efe13caba7e14c63563ce9c4921302ec5eea067d79ccbfeeec83481bf4e581b0ad03e54349fa0a7d9c09a5fb546183575627cc9fddbebfc2b94bfd9e939d03883336e28c6d8e205aa9cf4f0bb0f8d625460ce1b5f2002c71e8f925536e5d570e9fd1a9f9ea8184a1651e2f58fd4e252a129006259c4cc091ad1d1318b18ce38649efaba24cfc463b2db293031baa0d30b7b21b8bcc840cfbc71aa7e8a29ce27b16f3d3c7b7008efe6bd8009d243689bd3b7257dfab1870ce4a797cfe4a9997e1ec97d1b7ee949346e752251bcbe2100235dd2bc11205ca7b4081c84e1eabdf4cd53c443e7878c9db748a78f0c098303decfda6bd835a220799c1c46c621d49b666ebe99cfa445faec46776a43827f8d890bdb3a24d2b455657b377164037c443264fb4bafa5ac9614153bf4c915cfda67aad4f5cfda2fdbf90d7b76a4823e3dec01aa0488fb783fbcd5fdf7156620b8197d5cc7c86d26b4c552ada9c823f76289f56df36739dce6a206c5d84bbff76a5131ddf1e02facd61081a28f541cf5c86c83921d543c55be0471b6f5b0366dcf6e2809fe1a03936f07975a0d0493151014f7c53b763689ed63177b042791c1c2b3acbb0a25d8ead88fdbe70c5d1cfe82d877560a1c19df602541131c94aeeb5a1c0522b45faab0bfab54f9965cb1d802f990087544b996bc912e7614982d42925584ce0f1380b55637139473852190cb60cc985b71dcdb5683c659c9019a352ee6a7818975cc50c20b40310df8c66e70184faaacc87b48f03da9cac2cf09cf7227c1ad30ce803695b89fd2d00a0089496589d9b55cabb54fb791976696a1a8c6c2c058cae2b3ad42d02fbb9b34337bf933f7a31a89783acfd8e9b4d40915bf6916a8205040f61b07dae5bc1f9e6e51487b3023c11815f838a70ca41932f3d767153070e5d79469c46943b0788f12882ef8a898ecc28b83aadf64001f492620429bee8e85f1db04ad6290ec9835069a32a36cca7997d525ce8d58338b1b8340e22b290161093dcbe21c9348a4838cedeb8f58f6acf7356b57765d5963615152a509fb9216f73b1ed77566c8d566d7eefce5c025b54938a5c3c05e03e5c0cddb0a67240a62c82fe7d89a897918bd1f0e75471f76834ec5689ebcd28c4c39f26b2cf5c923f9085a9ec10512b43bb58414652b2c54c74a63aa8de04e0717a62e9e04ce859a09299b895a014ed2dcdaeccd151e1557740a46096227314406fc0a7d4861da9ab8463fc0050ee16bb7b05010627bbf0774035f1244e20b417ec8135fb02d8a8acde59aa49b2cd2243072585626853af518d1ebe13660019b2a4f590cb7ded57680cb23f1a3722f751468003e06448142c9b3958e10851b9ad5a25d42cd127432f9b40e601c892d20c3731801946304cbf2fa5576ac161eae158290bd7e0dc99c03db2519af8a30c3dd0a949aef40990eaba1d6acb6fd3d82a0bb04cced514168a363c9aba08a86002f476a867bcdb2111bbb17812aeb569fc13ce571d8287dc53dd3a74018eb1ac506d584023bb5e5079c6b04237b73ce2d47173e8e8b8176add762ce350411e7e5be2e3305b054f79aca40137b4a608b7b087b12a8c9fed9353b4e9dab4581b7e9393459b12028c971b2c03e1280fdd92c51322b634c595ff6f7b984b3431cb64ada754bfe940924227342a2e2645edaf963d35e7ce8c66cd4f40a7f2149df869ca4b1dca3db9d069922a06332fdc642eb5c6a1d398ac8ec863432f26cac7fb8a5ca7e071dd66a9f98d04ab7379f59e0f9ce98d4bb8ef52b52f2963e30e0fb8509aae792d0306a5f7fe91716f2f8868bdaf3e266a1fe73f879bc6a5e30d831039f00371da108cf12430267fd576d1793c46d593a7ff15721cd88a39531924002fcfdbce40a847db65ef41bb91018a76a65c31cdbb35d0c50ef12ec9f5f1c4cc556ea8a251b4193b7d0f0be47f474793449fc6f13f7e94db7f1ac1a40d67f1b3338d82729daa357600d6d48c4cf190a93ba9593caccdde4a21db3672375bdc405c5be4fbe65335d15d405c4c5fc7013d090ef51c98cd7969a2854fca1a9d344a434ba9216d2490ae910ae81d1e6ea96a027671a8ec0403592989a19bae2ba33dd390a16eec8948c328b7323cc22cb872a7c7a50c4fdaa6b488ce4cf8c22347a2b260cd0850cbd093f4d192a30a1fc37e57418381dba8ae1dd5e958af947a9d20a44b191386d8ad59d8e3c705c3274655df395e192ac1bb5bc0d5505f73599eb54a610ee8a446a2d48b5c34b332ae9322c69209b857b024d1795c02fdb2454871f504f357a962b1c69b10a69f42c9cc5290881bc92069ddd7de05568e471201d9827ae9e2dc9d5f033863aecc51d1f4fa6ea0af090d2182786221e3429d203d51c48ecec9e86c09529eef09a20cf5e15c7e25bfa06f8908ad5a0a8653a59e85ea5a06ba6c34c4418f03091ef5461e94482665439c7fab12a1d3f6e68a9c047c8e9de88f16e0310cfb1ead9bea838c535dd0f77b2f570b331ef0f0e758ca2007e9bbd7c90253e412147346106265d6d2522464036492b04e86131fbe97670d75d8f7dbdfa6bef1514be9ca5c30c50c5240aab939d7e7a2f2de6ab2ff7fc2519f25852dc6bab201472ee828f8ac6f87c1eb7b643cac93487ebe2017583377126724df693e3ee2f2e3a72c5d5f3b2a1405689449d9b16073c3669d89a2a1f22e334cf520b22b0457dbf6c9715dd514fe995d7f8adf4b4b2e95d019a8ac083f9eb512cf9f4d79753181303d48806b147c4250e08d86abbc61d7267af81bb30ab174244e816c1bdf9befc0bd3a2b1aa10871c3e033bb638e5dd956e7a8b993db6ee9a08e1b03e46e44f0b4fbc910700ce29380386b7952783bf6fa83803a01b6a4d214199213227a82c8ae91ac1504081f759af40cb8997c7a71e4cd74da6a845e0a6d11847e0b3d432bb9bbcdd0cf2296835b387dfbddb6f12470b63064964d0ffbb705fc21c8cc20824cdae9e1c00d78f2f406e419590e964642c061123d1bcd828bd65af58b9344cad610868581dc16ede1899e9b41c808b9e7d4782166f0aba0506ba4ebb5d818d4da40668b9270b590ba1cdde8aeb5a7d70274e6def6c8c31bb761af5654edb2aacd8a1c6c9ca7c560d3db6d9275182b50dc677a5603689f236d8cf29578bc1421ef5b75a41941a8db2f6ce18d9326b535f488a4f756a9e9d63c0f3b5d6f72e004eaa1891d8b658775fb8ea166b3a900844f97daca7abb86082baf04ec9937f2c46b7172719d6a83df4ee68f7b74b66f9c2a9b78d32b92775d411146f122f9b48eaee075a024da5173e2c3db0523c86d85e39b7a8f4ee41f72797061de461993d43177a4b95e2e4f143a7440a95cb59a2373e3b1a4059031c60e8dae81574c437622c16ec67019b30d2082101de4e45623a7f62d891cd800a5e6f0da8c69d46805ff8c24d11a7b717773662f0a0789d914824c300aa0af10ae5540708d3ea8d313f54659def6ea29216e209b9be3a9c0fcd842f7b4248c5ccb23b1c8587a4976f36a410a6a54ba665b5f5356f835d17098d483d521c87a071b2876c40e36a2b087a0f4c2f2c09f66d329858d9f1924e68143253d99ae694480783024162d50a34315006ca5c5086c3aead0f818041a1bcf520a6c968de1c65d5f1125659a96e71b9aad674691148e9199cdd5049b046875298fa5b901aa6e72cfdb4bf153c08a780f091faa02739abc597ee2e027b149650d28c42eed0990db4dcdc7ce3fb98c2a2231b4b7e9f6ac2994d34897fdd6f28f70061ed8566ec7f2904ddabff4c51cec56d2d3ca73c76f8e0383e30434831628226b3863b8dd939a61ff0e73dafb74e6654219ebb184203dd1d813ca93c9cfcde47e24f84fa89775e9fa0e02ce114f64ceee37eb3f384bc936eaa98da09ce3622ed8ac04fb2d7e6c5ffd38f999202b33c4d4f62b93b23d11c5e786b2510e9d82f0526a10eb9bbbc1832eb880ae4b25064578fa7372fe12c54bf6026fb0ec478a5a71becfa0b3262876f206d195301fcdb5a004dba6f93e4418bad421776a54ad9a24bb18285b78d27ff05aace5080072eb0539f771b2598de341e1b6c5080c8c1d912b1940b03cceb1283dd098ff2723cc93b0c096955c3c65470e34ff42a612863afceb327bad2a8f1558af1daa645bbe3e5e73c5e46bc03ea516cd400892d2069930de40a7360695f49d522cb2d4ed617fcbe21cc5a310941ff5354c570bbf9b6e105482119d34c51ead879d5fa89659914b293b99e64c6539fd6c1474c593facb1b312ef6b9d73b23b5a8b5bad2089781494ed26ad0ef748d1159ecbb7e1120492dbde94e2086a453eef31e9db45ec3545940e70e2c62caf000553971f34662006423809fe12cf8f0c2a7d90b4b9a5a727f9a9d766639c1984cd17b41e7a69c83eb8ed29ec6fd8b072d4100edb510d6902082079445206a71848109a3b94aaca129213d8ab1d1320ede553b223cbf41f0bb7084b472d199ef127ad160d29620f0eabbbda6649c49a645bba335f9af47704fd5c563401a66ae824c3d43fed67a164bf8b568a8766d5b2cb6db596cad1dea59f473ca03388e0386b879e407092abceb1128a3e1a466dce8d43b13c2826d57a1c32365243cf0d22cb6947cc12341ccc33178ad4fb06a75708bbddbbebbe5d72359baf8d5a9bc446df926f1d498a71f024929d7fc85acf85304a251110677bf195dd146c078a4d7f808f6e678fcd47a1ce0bd06021ce426b32df2469290e494f9a4ff6d7272824bb118ea0c5ee96c3a1110dfabb7ce6c548bbc32fede65b8c5862f1ea4445e09c02d032f060b005d26f23752f78d00d47135238855e5f988316e5b02291dc0305340939db1a262b6d9f9908777108df3c5f76ae9993746e9817fa37c5846efbc11bf633c434aace813c70fa2c73dc80586ca50b196561d29838b3c55eb8c8e264b6eba2c28e022dfc779ad474e8f52604ae4dfb5c7c20a71d3de2848ce044c4d70baec46d5a21ecf4fd727501f7f95cd143f80a5d1d25017979684ed63c033c5ee2fcab8142d5e3b09392c45b815f5b0e2f79e1852e2d9d958e2e30dd547273c2f10a5f0a85d787494e75cd8cbae08174cd523d52191fd699eaf46e507364c4ae1e7acb5d4249cf9684ab1983c2f3ae2f4ac9190d8be8150aef1b4c734261c71e628223240f4181c23f0745f8b8ae61b3bb054c9d615a6d8645cd795387d589204b22d9a29f9257cc3759986e6a22ffbeac327275e32c74373d4eb89008e9d046fc12f36a289fdf55da9dd183dd2f5abb8dfc5f95b7b40347e943384cdf779c65f090906d0d65020a0e7534cb73a0999715620c1442f504261677ffa3d89818825fa300176dcfd82a7b12013142721689b5370a4c84d7fecf09e18fd9d41d07e10eac7e921488b745b0ac77bc5b8a6859c0e4f7c0d11330567a1d95207a66bbcfe67b94b4e6506623f55bd7086ebeebbd08e5f38b3915b7d08c1929a90c646f82e1db481999fccb8869722ceca8062e74b23e27d268dca160d221fc04bbdff47668f2619d9de5c01c188f880c3c171688a1774753feaa416c5436007319d0dd2c05c9b66a027dab940eebb3a3646a9778ee0874612af68297285abef3c783517ea3c0484db23be0899b82b48d47bc90170d647a84a6a04a3a7bfeb4ae4418b77a893c1ad4eb5a6ebe6faf4b686d4ddf95e8b31b7f67fc516e29a57846efb2a311e258ec6e1b58e414e272069d7bdfb690219c06073f6af584b133f9421869312d671ce0d1c85add6c14cf96671ec0d2ffb632ad0666249e950f113c71b90afe4908112ab3309ca457805bc6b6ddeff02cba7a413eaf0000d77ec9a460b0c987d003471847691783b356e5d431dcfbe6e14d3dafd957d65cdec921571167ea227ce26d1dc361fb256b468a55a22a40a495d2105112c370e14aa7e6e2b84e26de13d54bfd4c54cf4cfc9a9c34969a5886e136e4c5a869129c1fff01cd1a6bade6303087829a1da61e866e43f6ba2c171fcee461553fc8a7c575fd49a8dc1ca7286f78b79bdfa6115002a13b606c0fdd3b3fbde0bcad84fd47d39fe27b238fc891a8a45e89a8c0b0e11836b790bf24ed3b22d1a292f089f61d914e3e1269b860be839518b502ecb943b134cace736d1ccd713ddd74e24c419ab938a3061c92ef8f9bd72a121dec78cb3600b1c538de3ad9ba2baa40a54735fb586c114fdb7671a714ab0664da02514407d5a2b9282deb2927971ba60f285a38515e69ac0aecb1456a32644ec039cd484e44d2f81fb11109a402fff300ce4193b471d3161686a28b930852406bbbe5cefc7f839990ccbe9773119274a4b79b41364f222aa8c2c599fc37b588f133fadc95476ff0b2c0cc4db96146c7f01290b0a32204a59818863504029ecc0c31036de7ada9aa0e992f82fc9eebafbd4fd3a1371bae1d527a5475f92a1ea1ab916579eba8f6c0f1ffef9e9b26ae169ac72ba7a311599ce3e132897d47e3b4adaf799dc48ef0ff5a0e943f33388456c16ba00d3e9de6618329f66f5c5861e2484bf9f8dbf1bca51d6c297b52bfb5fad37830395b36d883674974930d8d376a6198bccffa5b921aee1464155da213b932b61599dd3f97e7bfa270d0726dee6e65b513ab5cff78bbcce9c9a46c912a12f5a124e8ec7ae8fb17f221507f5226033f183978aacbf58ca4dfc4212da407cb3b3ecc5ecdedcdc4a5991da8079163b1599cf27ba42ed1ef7f3b3db6cc7f2568de275d08c3aa5cd4dc34bbbe0737e065d6864f5f776ce4f7b8f4b9c6fbcb5748366c4fa9bbed9f1497f8f35825085bb9ac6fa2e8d854e0bcac72aeb997466bc516b2f7c6e0908e6a76fb2d64fdb747617538f3b48458639a4e5928519de66b0e1ed5a6acc6e9bbb2d87d9c1e2db83c64c36552adf965848a0112484bdbd2e8b8f94ed5a3ab21f03996430c839e843611dc997ae87de8b9df3029292e250a645936240b24929bfc8913d506f5d60c8d84776ac3c340451d01207524f7690b714ffa2a93f9fefdfa0fa75828288e51cf53b0335484da01590a901eaf1d97fd16538dd0b00c371fbca561e120b6038b41983f06f5cdcd16b8a5ea79d59462caa9f6485aeadf2e6ebcd4374b624d0c59c1a6610daec62d8b8de5b8236d9a8b2e4c961d4b4d5a62fe2cea6e8d10ae4c09b5df82e33e29e2eab185fb062b8125cee4c3b4cdf73c59d6f0ad7e03eec93d1e45517931b46710884a7e9cb42420a1581fca1656451efca92b1bd6889a2b8c641130df180ea8e6185a2d964e68920aeeb048058291f93c4482cf86834e15fd2d975c6abbaa3b10fde271798accfaa8b0eff181acf926ebc519342ad0333b1fc2f097d3dec60a9108088b74452a9d2a2da27ff397053fc4333f97c0b1682b740e7653cceba9736d7d158409b5e417ada8ca45d6505afad9932f8952ab094c1c0fb59d648bf95981f6978608a93391a38ce4734e061fc741b2c8e104261588c6f301820177179614594824fa9a90edd94bd0f32ed7a9ad4e2c3b52510d78c102e1cb8789cd5071801fbd20e4fc7bddfaa7cb8d429229b95208a1b812751a6ce645a3cedd5ae541c2d4b6c6986aecd1b4b2e5c2aabf0e56e05c8c5768a33e6fc4eb370579c06d93095d0f15b327b33b470ecbb9b587601911bb9d686c598ad8d70f2cb828204aa29fa218cac706b696f758e6eeb50785f98ffa999e8ef36534ba19a31632872b81c083b66a19043e0166960951dcfc30a3ad143b6ff10e08ccc465d2f38767eabbb0017c68d5b1a4b24b236f5ab5a80f911eb90b0d9fc0b2269510a88437771e8321ba828bb5376c4fca93a89d0697b1e7d66f3dbbfce4137562e2936dbb394e070e406b7d63710adccf62d356818bb80ade50d4c2bf33b4b091e472e506b790390caecce5607c7b11bd89a88b553c5708bb294f008c6c8a63801a694c3a279dbc45425bc1a9b28f22c3124f5b43c8ae6a3e64151889448fb41c874856c2b7fa0266612871101c2cec14ff7d23010772c5cc38be42e53afd6913388128771894239327393d21ef313e075421a194baeebaa1b688fc67c7ec47ffdf84343f20bb145e02f5348da1e1dc97814f7161ec357238b17f9eecabd63270db229c1a02dd2b00c697ee1aa66113b0c7cc18d924a93cf69d277868f2ba4fe0c34383a936275f30ae8540420c416802c2379a154ac9e8205e05d4559dbad04a786f72ab9064b0112d0ad45a866ebd48fdf36ad0f7eec69ec7e1370a7da5f484925cba3399b8e9c16ba2b00cbfabde33a28caf63a35bb581ad441c130a2255a1ea46c75ec2cc090e60185cb6e8acf97f37e8d8c4ac3e8968311e36828db7f97d85aeb0f0b1827143767494aebe637d00750d3afea2538a3ade31a46eea6818b4c6c5a227c4d86f4c94f7ba323592c3097b935a8de0c6a9963833c3e54ddbce8cb509cebe99d8d6281fd199f33bb2d26704cd6c751b99632ed28a8fc7acd0fade4f22992fe581437333dbf2ae360af541033c4e9930462a5737b9ed481bfe9844e473bec1912d1991e5a21c65fc7cb0f9bece9cbba68fd21dd467203658c87d9ecfa7e28abf65463acd3c7bb147557292f6b03bad81aa886b91a426b3173669b76d03183408c2e99bcfebdd83abeec2dda9813733b357aeb2498eb2a11ccab9bed7370fe2f3888fc48700554c1f70f0f39e77037d5e73d1635c1335591ea0c0da1c0db1b86c5d1e8c47fcc539dd760ce00d7e74854cc64a4202ffae208dc0e01d3cb0aaf712fa176c1a7769efa68130f2b97e0b907ab13c3579d22343e89094768fa2dfc93ca0bdf7bd6317958f13ddb27555b07de481828168c1b0d492f9336feecb16ee5a0a66f1b56bdccc1cda4d60b9ad4706a8398ac497551bf2ca4a7ba85fa25296226c24a6c4102ee78990dd6920eaea309414131894d2213afc08d27b9fa4dcc606f6f0f38f16a81a7e85d2b7c4d692f1a35683936bdab0b96f47020da0f4bc8a0b74fd484ab43db9a394a7c1831739f047a94180b09497b5839cb1e5d9d19a8d58c7fd0cdeb2c5b02c8231f32c257a6d1781706903f80157435e8f6e282502dacfe2555b8cead7b32f3dbec50b2b2b9f69673023b349a21cc221642b25aee17495cb8dfb689914bb31ce0596c090ddecd64698a714b88454541b1f8e829af6c37a67bdc18a18c78bb4dc283e561ee7e0f970201eaa12ad5e8bd64917df4a1ad844e2fe54b01802f3f51a947cb69cb0a757d8cf7a58424ca0b40545c47639fbd13624fbad94d7d2ceb2e93d30a41445ba9e6a6e7b8e9f2406f44ec08743b93cb41df02b01bcadfbfbb16e48e38f7b7cf4f0a78462483a98173aa5a1ecccb049d90db874d1bdf0683b6ae5c94e543d7c46b6b247d0d61be7c56e46ef7392642279bc24dc87bd4ab16178fbdfb5cf10d106294d804241b3403f76112668ff01da64724e3ba39ffa0276ff9a4098c0bbaa9e4304db081699adb6e138a39cc26f10441d62f81674ca67814fee34b27991666a5ee036f59e33be45de72958d53b5866f618d12b1520c81d9474fdcc2c0c764c26c1d8c066636ec0f8021eacd029d4e4a1f950a22b2947d1d83ec67b540774624803ff58930b4bf1348275363152b06491652367ef61bfe6d015d50f3bbfc0b87cecd05fba5bc8b867ee4347a28516b202a5044ed36c68194ae288194ce0f53c93a068d9d742a3d425454a20f10b838b1486b8244435b20fa3e22ca073c27ec40045c889ed698bcd8f859d95e6548a1212ac89f69d12beeb495b4ff89a2b2bfde4829e188724f49a1ccf7c477ceb67155a8073c63a66a901755d945d538c75e7bb71cf6b256b9f394ecc895514a241349381572918a7dc8499b7a5d78e7888ae657c414a243bef04f2fffad275f8aa63c225a4c7c37b1f614fc6a61e086883e1405adefd4fba0ce2c697176b826be02cbd65536cab5dea5251e6d41f285d2532f064e8d9d720d8c2badfa4e918fc72381ab39f0d366ef8baf6876793b83d057f98aef23a535e4c266d629d435580c71e21d2b2a375f84a9988a1940f0056c0caba1ea67ab76e53e5cf9b6965bd77b9795444e9f2767388add5b4b2aa43cb0be82713ac07da0a8988cb96964da937a2efbef54404082f7829f9528ca75109dfc57c1c0d16747d2752f35aa72f23fbc41469632d995b42fbff068ca501723b09d42f140489d5a3a2c2634e8b948758c9589323218703c93537304ca687625eb17cf8f6536b28f977ae815064949d5f4c157f21140609526d62bd2021522668bd9dde831ae7b93ad86f43e1a32036aa89569b3a001b9b28b14785b706ca26a59911ee57d21100df45c412ec764a0f9544a293304ef63427dbd1780712302c47de5333a69d0fc85b53eddc24b97ecb184cc0161f6ee57c8fc2194484b77cf19ffd1bc7f4890a90a117d628a5caf4145c4deae9a9ca08280832a123715a7c16632ca50d79bd80e6480adc180f849e05d7f3bef2fc6190a9bee7de1bf1bbc36491023fcbaec5866317fd341394d249b01bb5d33a4e1de886a6176f1f5920f7712f97d0e7ebf6a9db0ec665dbc19a2fdfcff46f2af1f12c40ae8be4298b48ead2575159991d8b10756442833219e72c3b91abc4d154e660d6a6c48dfeb2b02156617b33ad9d5598151537e087e5d6782464e86a669be118176b2a9b596b5352cd54285226e39c75a16294689aca0cf6d895b8555f26367455ec6fb6b583aab3b670b75c465c5f7faf22623c879c078aba918995efdfa4aa9bd8347510a049329a21ab1ac24c120e60e71c8927d9921082413425eb58f0337556a831e71fb27af6872a7c52b029a2d9b479ff03d6c19017ad41d2b836a58ffd110d8c9e96083471c4231e7e124035aaba2e49f43a93075d09ba66ffc8fff51c92a7fa9ee7d3e0580535532e60f215896e0e53c1012940c35889f9cc339832b4a096ca24349b72b60742f8c7db87b0cd4cd1965e7b3c3f9b197dc7e8eb5b09e0de50162c3e19e90233262ffaa1b2d59133457184471353aaf6fb25c8021807e66c777ff877f85a87e726b53242b26c86380a299ed0af4e56d4b737aa251d4a19391f44331fb034b6464ea1d5827f94658f06dd18980a18e9e328aab38db587c96f58a8e815408b1d8418040f9b6822dda3452075cc265435e1b694a562c4246ae51de2038dd64734fda8a3b93d96d141fd0dec2314b7500ce376c4001f13470a1441ab561fc00f7546be1c4248eef6c1db2a2abfa7da318aff6cb30bf7d250754402c307f53823ea980604b104998740cbfee6ccb3ebecae3ffd8893e28531edb87135cc4757ec21e212c5c9c8f02090b8f6df924b7e8cbcb9c901dbfc95422acf0a7da9f050d031140b43f767c4e01cb138eead7fb6ea4c129d2cb598b4147da6cc14d502353d508717c94be6116930232c25b475e4b502f9474764aad539e02796fb54a5788e4ad369916aa570b10152e38d058eaae0df2362c7f00f031201bd9a160f9896450b9870f4af751b640a5bd14cae22185da7b393c724aa497a4ee2d630e809f69e7d5f38c79687c2b566636063ff05c95bcb686731531081129ea45a21ef0d1a174262c9dd305703851af80d91d32f595ff50e6b2b4dba8916c299103c95c21e0ea370fc2eb8feffa59b4b1a9234645829d2bc01093bbcb457c716e43b5fba2167902d3e80c9b4b4cd431f5faa0fad2d25b9e489073e111093b68bda04aae9af3d142c046db86c0ba910557320e5c07e720458d57d5ae72180e8de2de38423a4476c84421c276014d1da1a5a2fa7adfaaa55a6ce5bafe707db98d9233d3fec738be1bfb37ce435afd72941563b25463f2a2543cbaae3983b81e23fda57d484f4a791d0b9c9ed54b5eaf8b54159e94bc538f56211c3e93324771502cc0c99ee20923e7e34f59614e5c75cc998176df187fd0ad2213ae208a53460c4cf891c7841c2349a9eaf98d6ecb215a3877ba697a71bbe64f848b4ed3c11847ea659e7f8a229bcbffabc31859b484b63c23833a9cc487edddfdc8469911b79855143a557e203c684fc011eb60781535602cc68e9d52b094f854ac16fbced0398dbe1e092de43660cb451067ce15740176d1e3270af4f5a5a390c71b4f54f6f9637c7cc010692e8334a08203fd8b59984dec6688075ed89de852955c394aa854b6f9dfe200c41011738efe4b83678bc58916288838d73f0dec29e769c1936dc2de7c99ab25554acd00c492e877a4e65dd2da4cecf0ef8a3c26bb94c4046f34c90047a2c8217966ef342cf12026b3698e29c1871fb9fce4d2683f5c55357d0ee158c712b2fb7a4a92dd74f0992a8d1c19ad94f004116c5a89e0b0d3f1bb6e1c9ebc6a3076bd08a7f63af25ff1c7d4b7d258d89f0230aa2569e6f630f38f932adf0f3799ccaec6c07f0fbb179144e14044c0a8f2aa16612d92e0a3af6c3c002600ce2605fff340974e09784f847613da77bc968a47a738a1e84f97fa1b061a90985f36c31b6e4d3a62dce3ef632c7ba8f663fe3f18d243794f12e4eeb4cdf16c2c1bd2004e09754a8eea86caa533594a12784c935eafbe307b82e4d5f968906c97bb81f6091636ca38fca195aeb33a509dbfb99506b0495f50d8416c215fe472426ea77ac2dcbbd8a529b1cbb2e24fbcc884f835c238e9229ae28815e6c92edb9466ead520841e18a5177ce79230090046070b31b945a40238fc0af9d4c7b7327c4fdbba33e6c1f4e52e8deac8a26448fbebc111480142feb3e47000508bc9bc38838eb697ca9790ab16f463a0c4e009470e8899fc5799c130d091f271a877c282da0cecb77566a8293f775119c62226b40be87c4d2d2d0698df8df887034c0fdab2866f91f24beb1477113941e4abd7c8069d642ca6fde57638e74d7c47e1e10ac2385a5939beaef629781eade175c447151757bf9e48170bb38a2bd6f455bfdbb0fd45ecb6b3a93003121a1f56cfb0dc0855b35a7b50e8d5c663843aa5b76b1c1531c667f4113e5488f57267cf983f1c32a4831649d1ebea5440bc0d7c76baa057140e828432f2c254328f76e0302ef8e1c203212f163c30572341c44e6501818204130faee73cfb732afa2ff66e0f513966d1785e59c4ea77d4e8585f8684ed2a8549e63d903cc06460dccd62a08a8ffff1b0a206b655db9bf7bb709f8f8132736cd7103c50bfc9ee110dc64d1702d9664aa1d5401f3f9422d426189fcfac3440ceb0f14589313a59e880acced838290e9a110e8f1ef1a6a3953e03d8176cd99827475c55d407aada0b49bd56fa6bf8dd2e0a7ffc6b4a9669a5217eaa72e53a0774feafd010066a8b4b59e68dda51e3d388529d034742d7c11c68a3be162076d75315ed59014f929478157d5fb30e663dcf3587c949b044bb57e85418ff133c937e4a280fd538259c6d306493dc2e64de04975be6687fbd5b931c4da011861a7a579d17eb47dab4ba4173fe98e811f231fc67c8c77307061dc8f8183513e61b84123fe444a8ce66b4ce47df558e4123b3c9de6761c187331e4608087a113060e8cbc18f230c6190c85f08c232aabd63febdd6ab888591eeb173dac2b440855bf6825542133f7593fcae034053c72d2b0b68485f48cd5625392f3bde18ab246d148a862e8d507ded2c6223a0eeca21aa170bb0f1f920230bbbd378d0d290300756d807751c0b7761176cb3138d10ef890aaeb1369588101bf02286ff8d2caab1c390529dc1437813346f7de6428c8a01035a2285b9e3edd9928c753006f5d91be400cc134e9fb08334441802ea31e0924ea6366a7dfda52cb9016860a85908ee1e94dd5bdb8dfe4b486ea75e94c2a05453e900210ffdb96d5efae73a1c3bb288fd925290e46b0a8da754982b922c1f18dd39619a01b47d0de332ebac66badea3aba8ac1ad6799e3249202061874d9405049c933e9ba29b1efecc077ca5983889936427f987d3ed0451fbd88c1b88c69f24b8194e698c7b532369d3d1131627da8ba67560d7606a654892a755d692a217a63e0d8c8611f02b1cb899e4cbda03046321cb18aa2990641e4cf02e8f38767feab82c41a8815eb652ac9bd0f7979d4facad96b3e1ce092ec919d98002182326763687449725e5b262febb7bcc316adf7d307013f0832ebc39af3ea683120daf3842110b1f0853a8eb1b30f30c5394a32f2698549b48ca08c93588a5bbf2d3269062974d9701674a0b52ba3cfb80ce5574a0a3064856151d5ac72a5cfe3c3a87a20f5009a7bb55611211542e98d86aa564099f3b3acbdcaf667f4a54b4c2012a257d12f60da33f4389312ab8b71c68660b97bf8dc977faf24a9594d2b3454ac087ca1ee13443f0b787bd9e55c334376df3c1af4c6de725889073e19e49ca3b9e2302d8591202a9f9a36ec8bfab8cbbb1107b3d27065fda7419c547bee887e078e6ab837ddcc2c0e0f914bd0870048f890ea4080e7c61fbbfe0c3592c508e196913c4f4cadda20c2dbeca89e53d45e7339b7dffcbdeb775cf7f11b9f7bfe85e7bafeccf1ce7ef2fbaedff8de7edf7ff90dd6fad47a4641627e09c93ba93bc260ae77147373f05b0400284b05a35f34cbe47f452909334371d9171a91e69ce84230221e1a002d8ac4c90df6366453e134cbaf24ae359d17b42795ee1e37cd24dcc1dddaa28f3cfeb39dfe54201d35f781e31b8de0d744e823b5e88b3c7aa19ba1aaa967268ce2550382862d6052ca116c843c537b196756d3b28e8122eab694cbe1594edafd069a4a993a51c2309f3a6b368171ae1150d6cb4ae2b0c6d98c77921ef8f4ee22838a4327807095df3770d26eda09963f5bd7295219a9da8323f4d4d927102c2c47e77de67e4916bdee9848c5d831ecee41f36a35a46039a295ca037c63cd4544dc1e7bd9a5f0bc578c6d09050c5488389d1099d16a08a82ad12fc8fbd005501ed42b977f228570cb2a1c44ae84f8c0fa5d9440946a37970061a1890c963b117381b024ae6fb85454bbf57f54c250434344dbc4643c3495b310596d77f038753345c7c8055b4bebbab43fed130d9679879e7ca6eaa42bce0f338b236f54aaaafa817ca7682c0b55325286135ba54232156553d83727b7a71b465b19112b2a44ef6226a318e901bca63b6fd7bf3549db2b0b1c06c88f341c22c50bfa9378d77b590544ff1019c251a7f61f52d8be084114d428c2c3c827b67232278714c9ead6066d7addced76f118bf27d882bcffa8ecc828fd9700cfd2244b6795813691248cf074977bbae0cda7f1098919ed0d5bee26ab3030b826370c19184c635df2243e518ef3149d0ef6b76436b23d7108caca15be2a47fa166a9bc071b6f732d7aac4e328d2991db3cca096965f7afca97c2e750b6ce99523a539d1080f76e4f89d24c774502085f241fa8f217825a6c8a83e7d3434f8feb5141d742af187ddaa7573f73d3f3731fbdc60c1f867d592995894604e05b97274429a6db024437d5199fd107b2cdd7a3de3da8e7840cdf88b5dd4ca6b1d1ea741ae0d0a835f8601a9ff70708f993cecb9b9b2073441e047b539c8d4b244d2a90b0f92f1e607f74a8d4a9f292f26626fc92a83fe2a5432f12abc90e8453f20409ea9b04fa60188170ad64a3bf5dba355a65dfc8ad320942a224a60fcaa79c6d8bfc0978668adfa55f092b85a9e5d1e1252fd8323b706a0dfcf6639b12224d519a23f9c1720f987efbf74145052302d77cb1c108c0818e388626dbd4af2c11971bdf4568876c21be53c0a9638dd67c0a9c941dcd89321aead2b75ab68413757278942164ee24bd7b9fcfa635adc7ad9462c2fb8bfc59709c13c23bb3ccbbd4019ec00f4105754e5a69dead636476aadbd4ae1027026a314474712a72d6b2581854cc3fb4af9a63806b02701ebb4451a7f77317d20d9acfb08f3c48e2bb903375de7db13969d52c72d0e7f9b5fb7357e9914e522eccd288b59a8bea7d4dbde9f3eefeddb0665e2ba935952ed65ee23cf047e853d4728cf62402fabee9d93d2478c6f8163353e19cb3402e2cf73405f13fd5bdcdc40100f8bffb25c51634c834a22af0fa8b4e72befb34ef476053c22ecc0b0da97db6c7bbf78135bccf5fe0556b9205abd5a87f2fe8693fd96d00ea75885e618939beff72088a79a1ce324c5c405c91e6d06c362a060b018e54c597aa700bd529496ea603508623948db0f60988c1bf10c5ff07323306f9df4553874da4b665491bc76f2addd649522c95d31015e03e8322a8baac1b494b7a697fa491a5c1c6c205d38a024178735a1f68a0c78bad24f212c1ad0e3475cbdaeeaefbd224755fba18777a224776844bc52d9123f7d0a69af7b59179797497ce9115110279182215fd32aa50d745f86c6a01e203a2d8044a352ee61ac456144a76444e6d394ce2512aade6b57d85e4865a4cc4b7030a6d37b75b205695750ee9cb1cce8493fa0678921eeab30d0b7d6c1fbc4e1ebcd44dcf954489eb5c4822235059f1d871fc847c5dfee24072ccd77332d176dffccb7cebd588aec06ef284c472c7fa7edb8a6b1d640e5dd7c6caf6dfffde524a19320b750b8d0be8f79794fabfcdfeffbe145dd02eb890f175813c7d2f937d8a88d1bebd442e1192919ba4c40bb57996154cfd977b8fae12faeff26e7fff85ebe27a9fadd66af152a769b55a5c771a9a16cf9d869726b3f523e64bd26c71b2d3701a9a2f512714ea4cdf05f729e27c1bff2ba2f738161fc7352f780b7de5fb764db1b262c4bcfc2d2ea7bd534c39eee568fab8a99725d3c74b26d3c747d2f471b19727d3c7b56c0b28d3c7b38dcd97a5e9e3641ff98fe0a3c12fd18be697c9b7b7f8edeb8dffae0a7e578f1780d320cab8adf6e2264fc157e415bf0bfe1a87579a18bf799da9fce6a08d3653d14c4b666a32d3cc7520bbef64a6a85ba24e19b2f778bf29f84ffec32af845fe02af21d3e415ff8ae790d7a29c55f2a6c8dc946fd7151a9d8bc7aebf6f5e97dedf4f715dce1779a9efc7cc4dbdcc66e6a5ee82dfdfd8c55e8e2e380dd9167277c15d7c692a4d66e6b797a813eaac29e9e973b2637eba29f85d1c8555f0f76af8c953dc1577c5dfc2e88b0bdc55c1efe3f85b9daae44dc14fd3fd929a8828486848889021a1202dd443fda3813490fed1432d444a3a9224c99124a4554b3c898a5a99486f511b4ee4a88828486848889021a11c84ae5a6216faf230ffb4de8667a0fc9387598891c624df9124498e242111151d11217254441424342444c890501016e221fec1401808ffe021168ee8aa8534a2abb7e1493afe1afc34491dbf0b17ef1bd1d525f2dda3f11241df865f221d7f0da7e12e50ad73f1a7d85af946f454db7ff12b708d5959a9ed4bf005555bd4064dd5a4d434555bf25df0d246caf7f87bbcc5dd778322fd227103a328f48b840d907aea5bb4e78c5423d59643a2e1dddd7cfe12c7dd61117cfe7207ccc33d3e7f9923bbe01d9fbf0cd23a9f2230103f7cfe5248eb7c48f036c81f1e01062ac11f0842a87533b868800390b4ee01641049449e4e4127a213124aa875317c7e5490d625e0f3a388b44e019f2df034dfa235dfae36dfae04bf7d89f9f616b5f7a8bd44da9bd4de23ed4dd2e2a1ccb7f847866f31100ddf62a11abec5433a7c8b85b4b8a8c5472d26d2e2a4161f697192360fdbfc9381da2cd466216d2e6af3519b8930e0db9c14816ff3110a7c9b9354e05b3d6cbfd53f387cab8172f8560b2de05b3da4852880eb04f01c03cf1ce05948064a82f1043806920004b88b0738a001fc6758400e38b415a040041880800318a0003010600002080000d8175cf8751d689041e6061836ccbc00c6046d6af8d5381aee82a337dcd43190f87807dea1ea52bd1dbdc7a5aedef0b1e31f381e8204fc072e01dec1c58e3f30247fb8048f83e0c17b536a78841d07f1250682e712701f176fe37f2ed4227abdbf793c041e42d5a57a7f37db7b998c87e0b8632038ee373d15087e3b9a57f18110838408fa12ef0812e2cbd366b1104141429882c41bae7b399a1808fec3c56312f00f827fe0f10f2a3a02ee5344ef8747f0a730bbe0107cfed327bb601064170c82cf8f45808138f9017e350ef7e05dfc1b9e7ba45028ec20f8dee3107c89da2c0e81aa4b6110840083e0571204ea4a5e7bfc76f17b1c150a85bd2c9937a5c9bce1a78e3fc08bc01e780cc47d8ac03cb007bec441701d04cf41701c04bfbd9557f183e062c740f09b57fcc30e3eeec03bb8eea536f10e9e3be6c1c9bc8ad803df7bcce3cb92cd621eaa2e853de08197c99807c71defe0b8f7f8f6809acaabb883df5ede12dec14bbdede9bd1b4ef6129b37fcf6b26496a6cde29f3791e64b2ac6939bc53abe3cf5f0a7cde20efcc9878d7f62601ebedc2cde01e7f85234cb331fc949b42e8737e1f8961c7e9bbaf12d6ae3dbaff1edda539f6f577a4a444335e35bb2af647c9beaabdb5fad3bc0af7fb50e018ffb9c85685d4dfbf971929e6f531d157e4b7694c8c5f32dd95db61aedafd6019fe5afd6bdf896bf5a37f3b999ca1fffa05a27f3e242eb6c76582c9d6f533de75bb2b75a38dfa6fa7873b50e00ffb2580ff6faab7536fceeafd6c178de5fadbbe1611e23a574f07258e6c86b0954f6288372e923afe50ebc0492579d7a8c436dc9540abda1b6e8db50db5f6b98887c4c4734d4929ca1b6249611d44bb5257bd4d644d23af387473583765433a5a3b6a91cb5254d9c53d86f54195e72e12207041ce04dd3007f1a7f22ff515383dafb84420d451a68f81287cf6401fe04c39704f81219ae6ba82102c136005f0ae04f437200323cd3d0b027002af02ffc699743b2fc72346538fe89fc878dcd974353799eeee9870e3a7c3904d23a0a7cff92bf2df9fbf2afd6b960ca70d34fe43f64f818327c79a4756689a475bb4c92bffcd13a0b7cfe7248eb2ef0f9cba1d631e0cdf2689748bb4cd273394cc09fbe7c33bf5914a4751b49e386b4ee14eeb3682705fd685c3687cea1c6e5a11f31a86e22691d063ebf99a4750bf8fce611ad93e1f39b49b48e019f7f0bb52e039f67f8fcfb47eb1af0f93790d6b9f8fc3b48eb6a3eff16d23ae0e7df435af7e2f36f215a37f3f93791d6053fff2ed23a1a3eff3ed23a077cfe4d44eb1ef0f93792d669e0f3ef24ad83c0e7df47b4ae86cfbf93685d043eff29d4ba0d7cfef3fcd1ba097cfe1348eb683ebf8948eb6c3ebfa948eb6cf8fca623ad83f1f94d44b4ee86cfaf91b42ee6f3eb24add3e1f3eb235ac781cfaf937080ebc07f033c8606381612e438490dcf19e0990806b8be00d716e03a079e71e0198863221a97bf021c5380dfc061701b380dbf1a37012e8108f01af8d53808f0077007701af8d5b819fe8203b90b7e35ae01fc6adccacfc019c065e057e316c01590001e0347003f0037002f00878113800f800b8007800380b3fc6a9cec5fe02ef0ab713db473197e7f3137c5c4a3a0ae13932f4b25793ad1bce64fffee9eeae3bd97d13d8e3b4c8bb6e82dea2d7a6f928eb75888056f719215bcc547722ddae6a1dea26d16ea2ddae6a3dea26d2e52d1a2ad1ea6e0ad16ea2ddaeaa1dea2ad16d25bb4cd49bd45db7ca4b7689b93f41645d13603f5166d71516fd1a3dea298486fd1616fd19fdea22d06ea2dbac2db97dea2adfee92dda662228bccd425a9cd45bb4c543bd6dd14be42669b1909e7fc5db4ca4d54048eddadb7218dc48c1efa85d0e83a9de6ea220d95b13513025f6b607ada9a1e37006a977d663c23d224fee799e163dbd530907c3f2d2b4ce9474248970f8231cfe0005090dad24598f7c128a9422727453e8af2b2f4740422fb82484a8e8880810101010101090909090909090500684f27804484824d1d4a3ebafbc00fd808080808080808048adcbbf9524eb914f424a11b929124d3dbafecafa728b5229fd83a22bfedd2f77fc4ad224b58efc01914142e8d00bd144486452ea08fac2758884848484848424242424242424242487a91f14e88356a1a19524eb914f42915244ee510afd170d847494858e200961e10e203da485648d4426a58ea039c90bd7e18bfec9c0cd4342888a8e88081d4922141212ba4848f7662020a07beff06ad1f42bfdc69ff8d3bffcfb955aa0454efe4a2d406a811046022ab540ff34d744bb1d9082a4da9797ec32ea4a5f624d3725ff10f7570e916a49563fff813b1e26c0c7d49a78111710875d8b44592c128992c82e3988c37e945dc627c5235d1287e4934faaffa3f432b9f46d4fd7c38e79ee772be05febc8967ce9e23001f9279637522df9d29a449736079da4932252ee1175a906b18f218144513ffde9f751cf667659fdede9fb49f2afd6e9a3d2119cc264e9c96e76fca92f4d8eea25a1d689e8a31c9f7a89c8c4a7254354fffafca518bce0f24cd4f0ee589f8b5eaa166a8852c23f3581a626d054c5592a16c7bd2435819ae025af92c7affab4e4cbbd5995aa4b95a84a76017a7a492ae5b7b34c933966b29784a44a442669964c6e2af5b13c9525bc7c938be59b65692a49d3e4b997a712659abcec251a77a743aa24e3f27e4ac2bb33f1f94b3ed985f5b0cf5f1a6a9d4ffa2f95f8a523a86146e528ca3a95e223107c90143e50cc8039ff44eb4b6cdedcf0a07ea8d8b869fd8acff73abef7bdee47c7f7fc65f2bad3e6cac36f76f7e2b8d9941f7194d9c428f38e2a364b7b152a9b55717e65b3a75fb9b16c96f62cb29b6fd96cee5b723a97cbf8e672acefefc538e7cdb63e6bbd59db6b51dc2cebc5d76f36c35a5a5c9fdbec49fb1567cf35d39dcef473b9d8afd8ece79ec566c567e1b259fe2e31dd66d7d7bde897978cefcbcbe974c1602ede591bc7cde27eecfdbfb859d89725d3b4f3e366cf1f371bfbd297a479da2cfe97948eaac5f5be979796966fb1dbb5c0c0a4bf42c3347e74743e6f16d32063ba2f459d52f96232e4e1fe88d03aee0eeff8fb7ac7e599f8fb9ac77561793d747590ab85a47cab8768220d04e35b1da48dd02c6809010a764861c3b18e58ac38097d863f355aa45e9c3b333acc590cdc830a981925b513dbe5c686903c24131d918b6430f93613c945325236d26f4e3a9291e4244b68a11ea29cf01842080f0481e049807b3c1601fee13110380822fa97a7b937fa6749492a952a53a64a55ae569b4df1abd7ff19df7739a1f2d8b8b9e141f5a8d8b831f9b0420411bcd461602288c04470dd61c0782230119cec3060c0e8adbb2f4d38eeb1d8972c73b5d167e156cbc4c4049b982727d8e572cdf46c96f19de173060c0c4e490dc50c189713aa8989898909d75d071d4c78ee3ae860c24df8ed98087e7bcf8f2f51d3b5d1477d2828264c983061a69b453f7d99afcda6f8d70d5f8d1d73a663a78718670fc73f5e56f3f125cc7c6df461ad584c2693b564e67f8b738ed3385cc617d7f2e5dc6e3eb716356a1cfb7855555faa09be544dbed15767e68c66d26827cdacd54e9bed4ca153a4c8f8a63859361b8e454bc8b2ad90e13bcff334c1cccccccce93ac1a36fc3b5fced040a7eddecead710fcc56d167d5c8a139b4df127ae8a5651c9f8aa9c00080402c553e84b14e6893b4c280428e0c1fb10fcf742016810e235d0884278e0c6cbc951a3452a0804b9198e4d8e8d922001c74fe801c3b112484a78f6c93978e4a09b9285f8e186671f40503c0ff9b1e203cf4408a2485e33523682a4c4b550fbe89f1d5ceb30c1f58eab79e81e3a48e334101d4477ae51f8a9859b298a8e5600b1cf095ee830410f3eb68a49075d4c0f3bfe55030975fccf77a841d96c8b163b1eafd75379862c164f0786ac1d7429344cc3e5feee6722b908b9c875c17d9225b4f0e75beda3871969e6db9c94ad90b1c0b2238815316a2d30313a28ae919b14c4b7ddcd0fe68181547000c59c2ac7460b7ee325a5f270b2d0876fb34f1ee61c3954641f59280f09e9c0b77948bf44f9881dbecd45f9a8071e4ca09c98902594e94bf6df2f5f3f6af85266c636fab27fce79c94d75b3e8abb3d96663fc4c8556a122e3abe28688c3e3e1f830d3c1c3397edcac8a93fa7af1529f79bd666666665e9cec3333332fdbfa25cdf525cd9c6df469b856b3d96cd866de6e785d577c735311e29c5cae05b791937bf971b3a91b220d34d04003ed558efbacc7973873dde8e37c274ea04081c287c24c91c2979292b242af5891f15de1f3ed6e6eb71dace7e6a622c4aaaaaa338e7bbcaaaa31958be04b1566ca465f858aa9b262aeacac982c9b459fa5c56c6969e9b44e97f1d5f15baba168e9d44ed4d8f189a2286211bc288a2fd80f5fb698b98d7e0b0b96cfb9e02076bce822bea456bccb6663bc8bb8d3bb5dc677d7ba5d8471fcc3638ccf1606e24b9dd9ba18889898981d41d4d4d4d4d4d4d8d8d4d49840a9f1170a400310bc069af3c484e3e8087d300f151c2fb294cb69c1b15112319489a723fba8f892cde2d90790bce621992885e723f26a944b9e8970538a7055f0e3782e9291b291bc22c94b68a1f6e9819f50d88cd1a273e2450ffe01a8b28145f08223837be4e0a12145dee1a8e39f49eaf865f86bd0c3153536b7dd6e5d9f0703e3f39d2a2c63b753ad60193b951f379be2c71b9c07c52f07ed747f3f0f71792e7f3ffbf83613f5e4221bdf66a3deb7f9280b01bfcd4334b0c15a63963b3566b81c111ddfde2217e91ab949d8d60293f3e3d289817d4e161e4e91113e4ac1c1bfc5494a24c9c2ec93873947fec9402c56f4c0430776781f727c8b97bf5fd27ec8f0658a9962a39fa242858a8a4aa962ae6c16fd15161696526ca15bb4c8f8b6c0799cf366792a66e0b0a4e0f891c649a3f15207d26834ae3b1008a3f1dc81401a273b10087ca9b52f798bc9b2d16fc1b9dc8a152bf00a93050bece2e202a3616032be3018c6666bf971e5c0d862f8e860ce39e75c771919ce739791e132ce6fa771dc9feb4c978dbecef7f2d2a2450b5f0b73b7f3f1783c5f8c8e89c9f8c6dc97142e379be174b472b393f0e63ccff3b9e9cff3c41c7757c99730266fa30fd3ebf9cc9754697eab25b3595ce3655a3e8efb893bc618973cc664c7a56f7f1963b6b629e8cb6f9636363636363636363636680fbcf3c07ff78502d050038d107780dfec606b81f9d109f289f99083054705c7463470c85abcec90e4350b73ce9179e4201dcf42b8f03c44f69181e42199281f918d58ac58b9b9c353d4c0b14e313925333c3cc394a29211553250c7af02873a7e1e8eff047e198e52362d3cde6cf630bdde2c264646cbc8647c65c83365a1d16c377a2c169a8d9e1b11b7bbdd70385a3bbbdbf0c7cde2193c2e558d6f63dfe2a41dfe795e0c25ae8b9a8730dfe61c3edfe69fcc2303e12336dfe22419c7ac466525058d1ca27bc42d323a92f1ed2d6244881343b3b1e09f1bdf621e1d03e11e367a665cdfe2a12058c8907e3111363a4a0213998191749c54a4a440f127527f61fcc70de8bfb468b1dbedca9dc9db2cfabc120606a6147ddae7cbf8fac8337d1b0b8d66bbd163b1bc68a3e7468cc578a9dbc46231aebb8d4d8ce76e6313e364b7b1b179d97fe982317d3dd3e79bf9624c5f8ce95bf952c6f4c9a8c898be3eeba68fdf5efe4c5fcecff4f15e5c39c73270cb8a9373b95c2e17d71d060c17cf1d068c2f49d3c5c91efb1e0bf4cfd9afac54dea737faaa19a6f1abcde6fccac76a96cdf8b2e499feed3e91c5c35c2b560483c1a08b5f0102814020b0a6c63455a4f0df7da1003256e470602950d0b88e9085639f1b1cf3b8e1b8878d9ed889d48de3204330110e8e8d92c82c927e387ec24dc11f8363285c15fc2ac74ae4154916e635fbe41c3cf3d0719af1726ac1162c8c61b198c1edb4f050c671928effe437af3700611ac01a1d0c0ce7dff3f962627260c4ae7bcff8f69a6d36abf5b476b6190f8b27b2ecfc7adfe2a11da6f1f7f10a2e0fcff8fb38c875f92474bec5448a20b9c0443e0002c7438c03970343e393a9b41b0e5e6f72e2ac667bb1eb69f17858a90c2cc437b08dc7351efbfcfdb2c7717ff11f367c892aaf69f22fb789cb73f532b93cf1f037fa65097f49e53ccccbe432857b99ec536932998a836f34d94d6ef5f57abcd46b7abd1ed7bda6a6c773afe13d4ef69a9a9a773d2cd6e2e5defb3c4bcc9714c6f1259b5d7dc910fd14cf79d566615e85577ab5caf8aec8337ddc4bbd14cb51f7172f727ff1e24bf2f5bdc76f2f712eb5c84feff399cad30975e61fe2a099999999999999999999f9b2a40475923ede6dc868389c861a6872885183dff8ccb84e8d63a14f0fc73c7a701cc4b18f211a1c1b3183e3155c15fccf7190bce28f713c0413691cfe1d8e8d5a384e0217c92b7e1b3846d238fc58063f09390e46bdddbcd8b58058e8e695a54887e7ccb4d86caf2793bd2f26464646d6fb4fff7e19df1f79a6ff3c16fb9c38e3b196b555e3dd24bb9bfffb3ad705f61703d9bec53d76dfe220dcb7d80716e221fe000e814c674765b9c59ec7cc7222ad654d55309f83f3f74bdf8b2f7d3e5f8cf992927d8c8cf992daf9b29b3ff325c572537d343e3e8aa70f853a7b2eb84f11aed797252ec5c4c4c47c7912c5d2bc26d4995f67270502b199a6bc348a669a02812533050281c02f572672e54b7370623c47c373887153f0dff09b9b829fc571ae0a7e18d7c92b7e17c7c2bce27f71ecc3310fdc23aff8771c07e5153f8e631f2a18997afb98594bf01ea9e13f5f602116a00dcc667d2ae9f3bd3e66b323cbcbe0c6ef9b0dbe966bd693add4d86984bef8283e499e50a8b234cd7c426dd614cdbdd99ccdb65aadd68c96cf27c3e71bcaf0dd40c173c2464f2e8d2ad58ab5d9fd2c56cbc4e4e474b6569b3d37bb4f72501d1a3364c840c173c2468f0913e9eb65c662e499573466dc18e256cb37a269cc4a98a34363868c1b6444711c4ba552c9244932a531e364927bfc1346a1cab2c4a5699a78efbd8385393a37dc70c30de39f2525a9546a7c55ba5aadd2137d7292f13d21cfbc4a57c2f159ad968989c9f8272b97cbb5736263a34b353636316ecacd0c97d381837c7460071bcccc8f8ecf8b980f3994c048843370c85abcec86101df1d2b9dcd41a0a615f774b4e490c1e0c538a0daa1b6ea8c800796032a46c6a58ad9689490badf72c56cbc424777292b3636d7685737372e242511c0aca6e3db9b56e2636fb6f22ddacecb5d9d6bf54d866ff61b1b596ff74bd5e674ee4ae570b2d732cca7e3499e466f1abbef4fad3ea67b3556e8773934734b7dae1dc9c67894aa55aad723b9c1bd56afc92c56ab54c5093f4e4c4e55aad723b94599ae6d67bfcb3a4a464b55aad5801028140201008040281c02123549c5112419c849fa00412a14f0e1e4142f800d24323f5335b42e873735370747a04016d3916326e332e375eb0c0e0c161830dcc794389feabac9611b7de5a3791e7cced6874d5a2831b57f1d61a4d26923c9d709c74582d2f9347dc7a8a24a9a236bb7a146a9a2da2288aa2288ae378c2313333336383daccac56e8d0f08612c21c301b357c088fc846994826422e424cc69313ce90a1b6b066313a7082b617bc1e600dcb69c36ac6e6f47ac160b1986cb3e3cb60bf59dbff4cf6b1986ca77e8c65ad7196ea45bb89393a339c2d267b7557635961783837e666c737f73e4b4a4a70b659cf95c37fb8789d311d4dd48933c4b76a2b4bf53a5d39a1f6e1c16636598ccac2c517e8f0c726b76b69c9e1a86072bb961b16effcdeeb45ebbdb8cce562c1b9d4879d6c76f7272daecde65430bb476931b159d69b48759a667cd3f4749e4f93f1d1856381a9bfde5eb65a66c10583c16030180c0683c1608bd08727122117e122e5d5089299ade6827d4e45136bd9b45a2627272e178aa26814948c2f0acae9445fc66130d90e37e3b0969566b259f54d4e36fb3c1bba59f55194cdb23c8a89d389be8cc360b21d6ec6612d2bed145babd2cbd53377c9365127d9d1986ae3d5584620389a91abc81242ed93916eb9598b6fe582b559d7b3d096c966676fc24f36ebfa13d7666fef12518da2195f143d9de9af7ae3b8cad960bd71adc94e9faf457d9d3e165acc94729c84954092857fcb3e800c213ac22817c9482d31a1f699e156b0f5a5ae56ac56cbc4e4e4c4753af3b3367b377b7fbb506cdce8e1f3f97c3edf389ec6d866711f936dd6f69b65f1bfe35cdd6cceabb3d3d9bb17e39c37ebf2f9f67ab32daf459cd8af2bcba9c5c35b7b64cf67b3af71c2f0d9b8591d15ecf96673cf67ea6cb3fb67b4cde69e56db2c9671d3facd9e5fce4cbccfdfecf93653dce7bfa4f0cf3e3fa7875978ab37cdc06159fd4b2ae5444325dced54c29d4caddd6eea899dda2dc58345f3c489daa3d86c4b8acd62203e854eca66613e45850a95d3b97a149bc5bb1b159bbdaf628a7be587d7372c6669df7f49a9084f51cc115b88e0468ef83832783c1cec438f930c5e2c4d872c56fae9ffcb64db8ac3d964af571c8b1f9f96afc5b1c9147db57779dd66672f2fb7162d769bddfd8ea779bc8c2f8fe7b2d9f4efc538af78b695d6730303fb988cf3d80e8b8ceba85a5294dd66c7dff136ebeb6d76fc9ecf97cf175ead7c239adeb091e2c9c8670da713ca446d167d14ca344dd3a55dae8caf8b3c739adeb0713acff33c57e7796ed3dce3ef92cda25f92daecf829954a65429b3091f135419e394d6fd85899aa3dfe2a65b15a666bb3e8b75293cd8e6f929e9c9ca4300d83657c61e499d3d4659eecf15da889a2a06c167d14139b1ddf449aa6394d53f3b5c74f632f196cb3e8c3625c26cb69fa699aa629d73d262626260d02ef1851741c7da36f1c63dcd4789ca8719e98dcbc30c2014c828212377c72a04c3c193e64a223be641719762065075daf3471eb8c0bd740f21aa406aef10b35c47011a3034470d7f3838a0ac68b0d3832a71c37d090c26593b148b2e16d767c9e6fb3e3fb507ccc66b18d9e2cbc211cee9ce049d5c8ad966f447b50d8486356374927e7c5497863984dccd61edfe4e4c4e5da2cfa2e97896e767c140505a514b9e63ce3cb65a43a39a7960913658f6f62f5952886c1702c16ebc132529d9cf165e93fe73c55d574369ba5377dbb657c6fe49957e98a959bc94861c08001e32c199f56abd94cdb66d1b7adc6bfadd67575429f3891f13d419e395dad6ee68ae37e9a4adb44b6be346d6c6c6cc66c63d3ea8187592e46c78d8c60af033bd8607e623ee421ae8a8fbc02c943f24a744426c20ec9089225b450ebb8d58027b806a283c87083a3d323c8870dc7421c6be368992989f1820723c506991be20dea0e2c5583d2682bbe1d168ec8c25b5796130f6fc541a3e705d34bfdcc54318d31cdb7b28265632755637633c69ca058bbb5ccdc0c710fe18bd7cac22beac14123860e151529291ec5891f37fc73f325b56266ce36bbf3b39aaed532be35f2cc7f6b79ac5d372d38bd5eafd7c3bddeedcfbf7ccdcc94766b29ed4b9b99da6e667a33d3959b99aeb497c9782d7166ba833353d6cb649c7fb4e154d53663dce1541939e9ebf57abd5e2f99cb97a6799e9bf5fd8a34955299aacdeebc2acd9f8aa228bafccccccc8c387216bd5fb1c27f008135680d0dbf99c5b85aa17ba34e3ca4a2022311faf0c86bd0102d43172319118a2019c94896a0f1f333e33635543a37c4c02bc0384812456258c808de866ebc80c1d3b2e1614e9f950d600d518781e96dd6774271f846958795cbbfc3a5eb8ab7d27a6e604e1f1a5c7489f85bec0320a8be11c709cdf1b0d29fd5727038bb93665b7f56303d3779868ce10d1b355ce4e9a2545f79fad2444d1ce6f8e55637cf9727ebcce57456fb9fe5b46a8fb3c3a558aca979c9be2c4bd37c49a96f6ed677f29d6a49c966595f92cbffe2c58b1727ac97ea48d334c53a3e4d5d8fe3e41b4533f351cfd864df98c712d4e91adef81c1d38988d1ab425b450fbbcb40ece350fdd4307692041f4104d34034301e7c82b8f2cd438fcb3985bf0056f058cb1883a3f30303d9f2f264646e65f26e3b5b86c87b39daf537dadb59cb51645711cc752a92493f15ab21dceb69291e99bedf9fd786afc0b2fb0a7b3f76a0ec7c45acb7a8e30df88d256325ecbb6c3e117e3582a6d16fd92c9b4d9f14d24b9d9db9318638c458c5df8c4abd56ab5a303040281402010380281413cc22cf4c96bcec123a708cf794b08b58feb86157be56aeb0b216eca1058c5074abbb9e8395223ffe4a456f054c51696221b18989ecf17132323935d3058aec54c71b3ea8b22c6f8f579b3be1694c5f7e266c7178dcbd28761ed763edf37bbf3fdf7dbe119ef820b2fe8175ec8f8bef0c2e9ecbd2a97a3d173a31a7970cedaaaf56ac937b2b4a0321ac7adb0bfd956dcd44b9d66b55ab5562773b5123fbbbe85a52c455d0a9a7ca38d6f44d12f4fbeb14495a833ed298144e893739c399e7d001942948f30c2ad5cef70d1701da481e8203a86eb5b11b04a11198d077946d238989d19bc1b1939d69aa1361706a6e7f3c5c4c8f499ed7fd6c3cbcd6c9f73d3b2e235998cf3b0d69a0c47c582aab4584cddd9dd68311d18dcd86b9da209f6729565d63a25cd34354b1375aede96eb69b941652c16d5582423194192d725b450fb681d376507d63c82e8219a68c6cbe12bce6de76bb9e8c95aad1e0fcbad276bddc0d87ea7d3f7676cb53a77786a6cc5dad552170c455d3a380e43737234711c459cf547d58f9b6df9918db1ef4d49bf1c4da2c9a43336994e27f6f116c74adc786c30e98ae70c8457db658eba6048f2125aa87df2ca43f7d040b80ea287b0dc9c2a8be75f553f3785c8bd29be243cf432998d85d073dcab9b65bd6a9bcd689a46cbf8d268a733ff73136fd86b73b659d8d34c71c3fe2585739cc0c7669636ecc57b1fe75426d8c9dd7f49e11e54c4709d38336060704a0225b525bb2a8aa2da92fd3c5b52458fc8a2d3e9f4e46896f69877908bc83f99a5daee6e9a6579ca62c94fa73f799bca40c8663e91a4367327cdd3984932cb2017699d4904c6e947f5d6142261d0f59b35b89d24499224c9278790779091c83dc840c84ec8496011838842c42172680a89436210120845a150a8d759378b49f224d41283b9ee7a7c1348d63dff64611666610f40b291143af6bb03243c8a90e6c98514f9f8cbfb428afcbc0d208aaa006e173fe35e5e5eeaee800a48fae9747ab1f464e9495114c56c9a473c1be522d3d1901c9a8eb24ba9f432393321557a726356c7b9e32fb3daa262d0af4be9323e46ade0a6a8e892a35870512ed806c85f7a996c3ad23a540cd0cd12518f7f5453942a80db512ffe09c74777a350a2587a132f45b1547ad32c4beacbe413ff81f24659878252e21f9e8bb211892a6d5634f1fb3be1f7479aa7dac5e14f61d1ebf85b5414731745511473d0f5972e19899e3dd0f5e725a490c4a1524914c2c520e2d0388e79cce4901c8a42b20b565b0df4f4fc24565b91fc61411e3f8ff9c717731ef329480c92752631880e1f2519d25b5ae797777dd06b625676fe72c743278777d55f1a2921258479acae3f23a5f067952ccaabf83909a9962ceafa92e3fd71f22895d714f597e8043f1d7f8a5201903bea2f123830ea6477b93b40f281aedf24925d8c645d4da8df0c925dee0ea850e488ae5b73a8ebd62cea3a4b410be64f11770753f0a1b76691ae5b5348d78fe2301839caebed2487c1081187c1c81179bdfdf4935db4cea71e2c0c468cf27afbdd03b84de847d905ab642aa5ea4c218dd39fdf443924b581b1e3809ffcfcedf7acb61b18474e1a65171dc69e5f7f36ca455c7f0052a51824bb6c6014874421e2d006c69e7fe400c82ff6fc62cf6a0a431e7926df14d23ad490c6e927492174c3800356d3f2f1ab69a90ae0f6f2c7cf9f37fb1b1875201f93248aff303d6994c9227c3b59945d441586212379bdb7934659777fda14ca6b46420af5734f4717a75fdfd34fd7e4c9d42f124080426f513f5d7f3e420ad5ef0ea8e083de9e8e7211d23ca16650be7ed4d00a7247b1e0a25c705df6eb47c5e0baa05ef7a045e5602c99c88caf89345714bf776d5363c75ff2b675e2ad9a8d209a42cc5c04b16315d864b3ae2f6d268a9fe78f93df2f6697fd647631f9adb6a9222e6076578aa38264174709c9abfe00a45c8f7e8b328164971cccbe53afdf1cca2e62d74228ff81f22e14d78bdda5a60340dff5ae47d13d80fdaebd47946ac2f15df79f701348c6e91a9d8e6a9958a5d5a81255a053908b0000ee2690bb33f9df6a2e423d39bcbbdbe2adc9027305a611b4cd9ee64eedadfe30bdc93e7fff562f60f65335719b2477bb8112b52d7f3f6e0380ece7e33600c47eaa353a1d855271281ff526dfaaf965792bcd526da9d92895eaedf8281cc62f73515e6fe2383e8a3d80517d956a3642db5cd4752eca46d945081783e4558b4344489dbea4bf543131cf7d451cba2690bc1249994379d58f5553a85f1a1c1184ae9322bbc9049275e44fff8dec78b3a05cd0f5b72bbf3ad4d0c5e9cf6a0a35857874f307dd07291a909fcb48bcfa7d94eb928bf2aa3f23c1825e945dc4a1bbead718053745976559962569c40b547208a9d6144a0db34bf9fa5339b20b4a065dfc56edad8902a1bbcbaf7580d220f582de9a4674fde55567b49aedc6351227f90f935a3245deaae58a9985903285ba7ed490d6a5488c1aba5a1c4b26f2842acd7d625c925261bc62b54c4e5eb0982cc74e1652bf339e929ecca37b461e7cf2e01e11355e210be5a5b523521052f9936417a472cef7aaf9739bba8f8a2faa1a29aff99130ae42111adcc048073cfcfc52d7064438a2df4f659747b3cbd5010fc37eff8584127ce01fedf6606c001f39fa251a620852bf442500d2b5f0ee70c76d49d8b58d8effce40bee963309d7e06d49f3e86d3dfcd066b6628bff43194de7c53dd29bf64ee2fc55052cb4f63109af848a9e2238d3b7df9a5ba83fad3c9fcd2fc29815043424e42a819d21976c837a9a97ed3f7fcee2f8d01f5a7bfbfbb6b14707f283586932a03f9690c3a3d3f9edfdd32a45a8de16adc75a143aa449d48c54562d191d695da914889e3dfc8d3194a3ffe58d4f1974a5f4a2a21894523d018f4d347218ca475e3e317933a36719188c6e11fd57486f14d6f5277c4241dfffddd5f89cd918de148c7ad88d4b10e8fb8842284d7c8afa4cee011975084f027148fb4aef4f89346245e2afda85e8d6bc7a18b34c3f82575450889b403c10e8488849808073fd8c18ff0d7de249de8a2004215903024fce99f22a0238c3152c7af7fb44e2cd242ad5b1d056144f8c3af8744a238ec58171d2125dd23bdd5422d4445b55d575a2da46ba28ebf4c118984f880bee297226fc5a24ed431ee445aa7852f1291621112915f8b8b4aa71e319f3e3186faf824d7213f95e1f4a80e04fd4edff32b4f9cd438fd3f6ee681be1a9731ce5775b638fdf2fb93d124bf3f7cf75832dd6d80f14d2a0e2575c43f1e2de22b9497a6ff5e9cb3d61fc3386b2d8ae388d76030180c0683c1603018bcd97af9e4d1e3bb8b2687bc1281b562787085e67b8aad154a53e31b35deecebb1b8599c2d672d8ab4715c6b5a8b23ececa9a2288ea592c94492b45ae974a2d5b04e4e5a93a6699adad8a43636698c1b98ec5b66412cd5cb658493d0b81ee336f5a489391cd0e5c2ad2e2e7bc166ab96fad935aee88bcb6eb65e8db65aad56abd66ab512cf55974e231ec246e015e020780826c24631249aebc565c10c1b513d64c40a82b4564835be91c685a8b5388e6ba96432e9db8de7ccb15a4a2693aafa53ae05b38863a964329124793aa154289697c926938924377b3aa1506559b2cccc68719cc963894c8c9b72f3331f5c900f1b356837a324f0133014722dac19325416d5aac3c65bf5c46ace1d1b74666cc4cdba5e2c956aa6cdbadef45a69bd1f37dbfbd1242337db7b92c750a7f3fc5289dc6ceb4914aadcd5722b793aa162360e83b5c06eb3da2eb7e61887b5cc6ea5d2667d3a27d3f6278c31c622c6f874ad56abd56ad56aad747280406089878c80bdd18ca57ab96a3bda4d8ce36c4099ca72d20065f44de4f82a37fb5fca682d31c6353ae25630f5d79bcb566bb55aad96d86ab5ce3ca2c16030580a064fc12089ee72af50e8c972f0b0d55eb0cf3431406ab085ae46b1778a173f41899a160f1a1763ea933eb959df93cf661e982dc5b2d41997e5e9cc48465edaec8a2fad6fe2e466719ecce26645961b2c582cafc59e9bdb0db7b3bbf986337862b2575599ea5598d1b4d9d79bc8cdba4e33d4665f8f8291e409852a4bd3246f707a786ca86aecb0cad2dc7b3dcf92cdeebe04972a5730bc9212d5665baf82e55ff53e267e6ab3fc53aad566c55fb136cb9fb5d676331d2bb1de841a69b415e80aaa037383d3c3a3b2c1aab183617c746e707a784a4a52a9d4ca5c6d56e7573037382b56ab6562727272e27295a80e0ae3a303b36205080402814020100804027b2a2a549fbcf2e811e423af4346d45a8c842f5040e16225843e34523f336ee308a3ae834693bbddb8dc6081d1c261c3dba86adc006c999c6c16fd93f15d3b2b0c8f9577542b0c6f47b58ee8b8a342d1d135bcf1b51cdc0e27e1276028dc843c82841842c673e68c6e6e0a4e0fd5cc6cd581637bb1ea01c66a58746cb03171b95014149e2d579bed30ad65d43e1baf964ba552b257ad569b5dfd8ac562b55a2d8c31c618e3564b145b3b3a699aa6a98d4d6a6393d6a4c0cc711214b88d57e371c382bd4e1c3642a6de3e26e79ab5bc6001ba5617ca66658f923e6c16535f5c712f2ebbd97a35daf92b2e180c0683c16030184ca544217a4086b462359aeb25cb3430b5e8880761b1d70b46e30f8bbd66aa6c7c58ecf582d1f8c362af992a1b5f5cb5d0d1d53b73d0f8c2487c72f0e8f9203ac208c6673f2bd405da4237fb72a12d1f97f5f28fab341dd598b84a1f769672500ea67aa8d408b32862d4229a11010000000113180000201408c2409627722674d00714001460b274423cae4aa2280d621cc5943186000040600640060406d30a1e19783a0a2947e69951e433692ffd012f48163574572df105e5c521ce4852f680041ff98a2345265e3fd2fa3882742f0fe28e9998892b0117630e6f49dbf731c4610e077d13d796a9ab86ae40a8b8eb8e359681a8af7ecd1ac5ce21eb1a8b516916e2d87443f69da46c5e49334b320f828c9e5d13f5b90d2cd943c899d96bbeeeb2e765923905b09167711f5612321063afaa5c6f304c3b0b3e660a7d29a44bcc28e98f51ac638f90983643e4d667d1414aa4d64fe1de280ab9a1dd086efede2b6ffd749485e9c0094503ef20d886114cc1b60b008be73cad43f5b802490b543a8f0c0c2dbbf3293006c968c8f4f2807b5de2240d16471f2572c946fcc1c7afeee6459ab6061062c55e98444f797463ce6f682dee737b8d35b8d00c0a2a8c0f0c6563f0fd9a3b1eafd9d997e852d68df5e10691db424b1d8677972eaf5267e2c6b4adf52d1d94349bdda3d54a831990f12071288e9fbddb43ef4f2cdb578ae28cc9cf3ee110b07e7ab1d1609fb495fa5a966133a99568b56e626fc2a56f770202e047d56cc9a259780ccaa15b4bdae7c55a196be140ef67c193741da0f8e14ddf66a1127c3bc9075802811f8e7911745dc6e44eea4b4927e5a62f1cee1ba81caf2616efcb2f7b70e1065c15979ad90a702b07319ea7e9ce404f73d09519bcc435f62a920a798c9b14eebc03c878b998cad07f9b77c8f310d06272b9b13d35380884d629010795ea9ad07ad9d99dbc7bcc9884a6fb5d2c17c349acc818ee1afe95c21fac9dbae73cef59088a358d8019a77b68e3f91bd14a98157a1e0b4018aefb7cf83e526af17a68c1b2eeb4f5c9d41669832d54e5fddb30237532e088c86eed3d21030180d43645f9d7e6268c5ac66083f7ba0c621f7008e821cf494fbbfd41791000b3e632f0fc228d32636b92fbadb556728eb14908773af3c0f63906955cea15f4d8f71f437cf3c418409143322904031711ca9d0836709afdf562d81a1cf959c6f85af0393581c5d9af0b946a0f4597dd00bc5b36d6efaabff2a71e841fdce359f35f7b05c6fb22cde1d2405d5e2d6900a8dab05a8f901a0f6b91ea6862f3702527ca17cdc803086e6099292d1f64d20511195f64807389399209ad24e61d2c0d2736bb12ce2b3d977308a6e04b5fe17c268e9645301021194a6a8c55e98b39b7addd5910ddd08ed14dc266e3ab5211e6e842a9234941464d60be2de2200bff3a7b0248e351983885f61ff430ca74079889a34217f3b856bc0ae8f129ffa4093c1b037157630173d09df3009f6beadf275fc232daa4a30b8a3ab3909fd3ee45ce826f78f7b14597ff2c610beeb3bb6f40b5cea01bf765f8b028ae268ed0e1df91e784d709436ac85305f13a6b83a6e8c2cfd40b543144bf7005c8086a7aec5498dc0303c5aa0a2ad08b50af25b2df288be8c407d0f64f37b730d2d6f4a2122f49a6b4fe03d3b9408e0c8070696c9e818e1c7b798cf5082734357f03f14233e11b5e80a2b900cc86c4261a70a13f220818ee494ebefe44832bff89b38ae958e86e34a0863c067d147f55ff890cdbcf75b6b67afa9921e3125ccdd2b086baebd3adec92b44a88c212befb69964d70adde395d0a290735a97309c10d529c5659e1ab307308665daccc7f72becedf9bc4795ea20f2a04873e497674c7adb3fb1146e4bf48c2724c72280f5da70b79feb9626099f2507bcbc1d02571e29cf063d2c75df1d819bf83167bb5e95ac59b038eb3d2abadeed8095d4da6faf6a2b05820d312ed03b7a91b715e66db7335b5eb4f87d401ac082b15b2a7463de79f636f059e8f139cff4ded58eb27ba1a679f582fb6c34f5ac8d4b8abc14a9399120edfda498ba0dbb44ddc47d907e39fa17bf51325cec352111d19f3250cc74b5e1e17303552059af063991ccd613515b9f299804e9e2ab343a16ee6ded16714fecc681d471a08df375f60253b9dd609010e797c5bc211071aa1fb3ae4762f94afa62b95a328666242e48f18fc8fa713c5d336a5b88e4c08034e84ac2ec91b44cea917a036bb959256286157137b690dea6c3dd84154ea72aeba448e178d4865ea68040d6d8c197d9a2e06acc76d7e13370bcaa10d6b94c70d3550f1ae45f88bafec84a1d598820cffa3878d0e3425fe1c3ff438d93eb32cbc96a74215187789f6da687947cfaa9df1e1c8b577c7b2fddf8df04da631dc8b421e288ce6a3d75ee4d1d06497e6b06e1dbd146215f57e45ff8970141a3f4d973bb723dbac5bf54f2979bfa9d3d49b668a5c2c7aaa8270ee29a42961e62585b9755add65d263cb2cfedc8b58a9dd0d60f31891f99bcd277961dc93001a8c96dc17a9489c3e376861b09c4a5c93e9e0b8bcd49137cde78256173777604d646e101c6660935b121a50ccc05ac128b4f70b759e214e3b87bdd520ae6033f7e42bd56f7e223530e4f555aa07981940764dbf98074f68bc73f0c80f18e522a428eea27a0beb88cbf88a9fa7c33347600cd5d7ae6ee1286c4f771216f2bf7ec94176f304b5d3503c5f689982201f588f72df0a6a4d6b36cd9ef831f0a34492bc0c34392f42b91ea0d7838832eea3d06b87fd4592e4939089a0f59b28a2a6b702bbcc3bf9fe270fe51ac7277ae6f93c8e04d57383a07d3e9a6978d49f10e212ba5fedc0e174d28684ed7f5b73a823e4f790c5fd38415fc19f2397673868ef9a06f619301fe917909871ab2359a6ad19a02b9437b6e94dbba00eb54971c8418e209a2a05adf03fbbe109379eee3f8640d59d5972b2ec98f5cac26cc2d5db0b11a2b9c585b8634a73599e542b834032a8dc182810969745910e049ead93259d03f35375e99f8b9d6e635b2e2a47091dfae731e2302cc4175ec36a089aa019bf3ec0858427d0616107229888d12182e8702baad1eb2390dc049bae1f4400978d2371fb11291ef8459da453ff14d5a8c24df70ffcb93e986f3d04789205dbaf7a91371f0ad0439889c759557490904b7074d5d4ae01c5c548600d93ca0bb1f95c8beada2479e003aca72a247ff05205394e3204f412e8f643192ac1983aae3bc49be85b288ecc7c1d7d55407805a3c3ed643be41fcfab1b582077558d77b8220b00cd2b8c6025d3d77255922244f4cf96fdc4269536a006c79f04a03ea9c8d45862ed3f12d31809bc2e311344bde9b52a929fde9103c49c34e21c33c22831c6a292b9dff7143db3043dc9ed8f4a673e100a629f8ccbdf457a1bc0b69ad602fcf064ace1c1306805e5ea5b878e5c015aac52bfeaba7caa6ea55fdbf45334efcd4ea602e48c30c9335289250904c608401e6d2feb78c0277181eb7024d211657cc51ee897b887db360cf4c1de9fb130f71fb0abe4631dcbf3db508964285626016b8f0e67f986072560fac0ca66d42a0e44f56ad5780df7d8bbf7ef82a68ee7c8d02cfd3aea81520a48459cc20ad0d22a6480ec71570947e8036c1d5d0646760caf897b3625702831a4c4e112f58674c7d8cf0ca44b735dd1a1e284ce8490bcc31ac00243104d8fe694b8ea33b3bc89d9b9558be1322ed5055e413a8d3f2e620f9b2e9a2f349d04123f66e9b6400f9fde4915b3880bf597b59f00bb1b5ec3dbc76b9f98d4d3a0737d330df47747784254e35313eb59918074030c59d9b9f6af06a3ef4785f75c9b2899ce744dc0f590931c04046c4226ec52fca5fc8b9e4961651618cf77b46b1627a60ae8c372d84e82419e259c0460d7dc7743407be060e8fcac491376e14809cb19d2b3511ddd32ff91e8c2700e48226c0e19669e4b698f0c3e3dfdd4adf26f3131b2a1102e43262ae18a52e862bc1133f4a0c93f62bd893b99867b14e2997feba1debe336620e06e19f20f1e25ee7878913112b75e56b3805219a847099b4a3ea79fc0eae9970f53477c54473048631c9e6f3dd579af0f60c51e180c7f84dc279bc5e69d9b958c7e5f0e1136cf05de40d2d91d30e114265521bed1f52a6f7f70fe0940704c32e21c82aa2d6a29b704ea069fab7a45b5eac4362b5e5c37635b9c5798d172ae1c06d19e1f0332909e16b082490257ec537af9ab854a59131887920d524e166f78fbdc078fb528fa548bdf00e0a28d04d1a51164f241593d3f1bedab5a3ce268ce98081747d03c9b0846c15894295bc35fe20a3f395481d08d2246b35614328a662e9f2e76f679f4d791b2c5d7eebd08adc374347431bc8c9dde490eb6055147bad402873190a171e0c07bac62b3640aa1c886202ada142db3128b49a4ecd6efc4d607d6199dc3841f4881badbc84d08096ad50110123e524d230ce908eb78a6a913352dee298ad2651738d4c4f0aec94d4acf7451c5e30a430cd80b72f1de88a16aa9805cc2b2b62747f22b87e0571c6555b4d02928576cbc75624d49464f9c6cd424b6c70baa0b6c41538a134044a9eefe1a90b38f7c9ed8933f00bd46bbc89b6746c2c110d9abd71bc70a6637838e6d51c136306b35b9e71d58c9e26010f4482fd42d5dcad32845aca09ae801e8b5a17550a166988421362b7ed75d5330f38f3882e5c8a76957aaf03b25eac94be171b09e1bf5bd21a7c4e52ffa5a4e76d3076d447b8477a4e2a083dfad612e3342759f446874c6a9774bd2f6590396ddad5d5703c271184ad4df91b427018027949490550d30ca17122d4493d810a6a3d58db070373e985817363a394b49f553d90a5299ed503d8896ea28d3d5774b1b3fd156b64309a2e317684c801dd96ba9de453199a1090e68401c54c063308072b4d3a7d23f3371a6f3a21b6f3b61e7589c1ef93a8a009afcf1e7c022fdcbde54d1a5d6f8c5b71c8d10475815dfca9b5a4e728045e4ac8152cf3b19c79096d0cd0ec7352c25affb84743df357bb3629b97a4ee43b0a8df57a4040f4e5c23c30c7318d50200111f7f1dab84ab3fd8a09284fc3c13a1bf4a9fef96c2d1122344e68b2e13261a5c4cabb37e2d248db5662c77624eac44ab93bb9431de178b6b5def2c02516cc60058d67394a4d14d4f5bfefc9a637e9595b97ff564cfd335a1af31463acc444b47cbf5bb6cdde7f7209ded122ecb8024cb300f2d35e8b2f9c8dc1cb635e6e07bb90382ba1550e6adc254af28284350503e29aacebc772156e451496b1ecbec13c91d87e80ab8767ccc77e3177ae361a23de3a30f39a0034b7ed9a618c4482ecdc418182d9c4b6451be34219bdd0dcd8dd870f1b8a39203b1099998fb548e0419d7f7191e7aa53e28c4b4bcb01e7b12a4aad010f562681222d2690c39e3bdd0a0aff8cec5561c2567063dae0060cf714bf356e28f10a113fc89a10315842b6e005161aaf77c8b41e340b0d0853c43a10511b9c8699be28d708c418b64b18dc581679c6200df044de520177cb26e09f24568d7e311f99128d520e90a49428b62c41ec07185153f32f2d97e0499d18ea7fcdf71279ef253c708986a9c6e1b57b15d1912101df65d79ebe70cb02870d6c730148b60caed9a46f703f7c67bef9262ac75cd6acee3c3e6d14fabf54060bd759a47b26e0926ae9cee395b525e2aecc90379a6204aa854020f91e9c72a98b7c9654cb15b077c346a91f34c96eba8fcb59ea19a03d456662bda07e597e06fb05699b83aa6f278e762ca71909b3040c03fe1a071aa3085ca106344bab30d587f6e5c53d95e0bf3fd0198a298090bcfbff3eb1f6046a8b2814f040c333277af6abc2372506b9e70c27446aec58284ec094eafe796769896e4288f8544f5c28e40ca2bcd9301f2f2dccfd92d94daa7eeeca6560122692ca96011ce69801130da5e0d6ddc42d71a8e731612141c2b7f0b33dc33044d9317f77049e95c721e7b0b6128284d7ebe365ad484d170536f9f678862dae82a4cd60ff5db7f781fa2359cb9cdfbab5c5b2ab5afbc37e0fa0dc14e99c563975bfccf1564ca2248cbe04b95561725777171081ee2e3970effe403b1dc684c11ff148e432f722b2486d5b0ecfc24aaff427f4eb8fdba66c470c131c911935f532318845a9c438ba8cec7972dc1f56839746e2467ac8af048e772dc6e9ed0df5175f3fb6778392237d5748bd899408db51041c4a2b05a10261b6c0b1df1fb27ad757cb6c317192a1142e431395c2c508a34b5de89821eff2a3025d922aa780a084d3320ff907046602625577093bcd675091f961ed3cad46648880b8600d229da077914030e53c9e24068e242971925c188aa4374ed479a837d7d808bb8f60b1290e0b08d58d7a5f89e8e31a45ee2f034c44ed997b1f678e59e0098a3ff755870c897bd460f980c551a8522469fb9b3c71db6a7bab6db347b5497d80c6ef62b533102dd45d0f117ba02393caac462b3aac58a5a8c4707c56048d42f73ee4d3445a6f4aa32bf5e17b167f822ee86a2e4f98f4c3a5815ff42a946618889e6e0297c4ca0eb9bf06472092eb54f9db6c6bf30b86eb841c98f72829b10920a6018c280eeb3acc2fa23a65fb2180c8d6c8cc2ec0ebd6076bc6bc5a34d705e223480655da3935a14a678952e1fef4df6c94ce37b0e0052db4003d1a0d15802e1303a01f8c3d7aaea407d9d561ea7e71a4255e8816c29eb06180fee278cad064657d6bd0e3f39165a195b5fa308ec9551ca7ecf641042f9e81ff3725725d9b9b9968cbbdd2e7237c06fad869427aac41f08ebcbfda739c52ba631e29da48204d0a4124f32cd12fc1b7a9d97972c683d6ff9815de0dfaf83476e2cf1203e9c73942d4c89db455e46c2d1375a66668c6da1edc00c7a3a7932ce64e46273c0f7545307202a4ee11f5e912c42b845ebc38e1fa7350c28478b2fb5a8e45f67817fbae601da673e8d4c11a7674ce77e6404afef4e7cd6db9c5fb31abf4e110abbb4e398f1db3640200f55298850666a30f1e61053251c3157e038551982df6d314ca4c58a9fa396403648e22a467e4916030a8c6f48039004bf6a70ffc22e61362de7f2fd5661af8cf73aa272c0e5cd41ea7d41cb86145bd007993185019332c282601a4ebf802fd1fa33818328509c666c5a21101058e3c277e7984d546d5fae00441fca9002713ee9f2980439b9a8c2620a64a75dc9293dccf2b380c39fe79eb4543b2222fa0315e481336cb4461fff0e3f359eafcb898d10d6513e17da3b38fc08e18e1c47c912f46216aa0b3a57c0b6c835fd7097df99d5b30f2d986d98fcca775e5fd834dcb2020b735fd77c1866313d09bf4701d2b69f1e3a64b098b716d58373903ab6e1a6e138d44bb79f225d904bb4174cadb4a442a10c90a6978d439b0ece9262b9810998337914dda88474c4916387b9b0d0cf788e2630db482082bf175c91337bb6d1eeba5408f9fb6efd4099114a3a1236805315010d066c7b783828a2d5ac9e823d09558da4b4f342d1d58b600ad649455891b5e49d3cb62fa62cf12d0b813147d55459eb60db1d6ff1deb8df56df4eb7fdedcb80b442837bf8f1fdac4c7e0f2bcb402f4303643a897384693085197bd88dea4979a7319b54382537a4943816360b794c0c90f3794043894952b96056e740ce68ff709a6973222181d79a394338fb1efec45580b5e3c91df2a5e8ed6da8126d1cd090471392e843bd2cd0193cd14d5cbe8b9e1a2cec098258c8054ee03c7e0158507d06a80416cbc405a2f7b6e0f30a2ba8fc1e33c165732605e7191dc02ac97fb427ef64d44d130ef1997e25060b8212aaba397db375497220192bd82a56adc9ff57667e63c3cea28c0542bd977154e92792ce18cf446ce5ab17f592f548ddc9681ce67ae86de48a1967578eeb2c347d504f2856a0c2fdb8dc66ca1f2195e5232dcd6086678666774f9c6317dd21d6761785905a9d06c7ec243ea176bee8740738c8948a583bc5a0a6fc11b58c0c1a5d90433198e6966249ab754bcbc0cd2b9baf9a65fae878eb5c851a1c3d41c11b13e25d8601ab0ff169a9077e1c524412fe91c04e37a3343c7a294fb24b33ff2537d0e881ca28f14236add7842ca941cf69f0f91d5e432fee50abd91dda3d435949cc1888738f6622737ea4920bbafccbf7e69db23201d67244c1af893990de682f766322ee267aea4eacfbc21bcff09294fce6526e24b73e9eff82dbefb0fa9131a7c83cf6157bf70460ae7774ea24a350311e9347b78149de04b43963b2668f4e817a1be4247262316290940df043cbf823d4b4f8468ecc1ef652fb5639f3cd32361d7d175189a465f5ff1b7bbfe4ee7f6d62f299849c7933b6555c6b57b712544b01a276ffb4f6c8514d41fae3a0087fb14768fab0341719a8a8ebbac674c40af6685908271f636001b7885c24584194fa8c69c0ef249af24807d2758bef49a9240fd5589fa1eed09177c021935929520c58edc86c4a6c40c4b7a839903e4468534ba5682d83b4a1ea16f27588f2b9dcd231a1f1613e342d5b1a8aa668107dd10555bc689b6c21583cc448144ce0d547ea2fc041540c1a5f6d264407263ba3ca0ee92a36a8a816407b6a16da03ff4a939972d9a0aadf232168d09c96f61d1e04344d2f23d3642cc436602a3521ffd933a1a22df9656e9acb0e387cc648e00c650a2d097c14e0c6e9cc1f8d0483e4a8257d03adc427e75e8c3c590fe0a3a4a45ec51db71fd74a740e212b0b8cee00f10da6edf48ae9bf70aa20be30ae4829e33e9d6383115b0c1ab6e00e9c07f801b66c7bd1a7c71b5e888e23905823d6446afa0b36dffebe52946563393c8255536ce1414f808ee5d080b4bb069edf7139cc2b355c82c3835be32c4416e94ddc1ad10dd3b9fbd2d845131f89a54e4f2ebcf67c85aaf054374ece0d6c7bbf409751f175bd9f2826772f408886cace09e1e642611594a12445d99a595cdbdf256873f3ca3012730801db01abc628bba51282d79ba58596de95df28d000072405ab6b2ee2ba5e01da68473221c696af64bc034040549a31934f989e4f873901a608e53fe025ebab4ce6b4511337b5620672081b11433220618e3876ea7fcefa913321c40e28f86c9a7b8b469534fe6d4424b9c20de907f3b8ada85378034c038da13758ee405d84b93808f5e16674cb3c79e3ae757d7bc80aea1327472842196eafe9e65266c56b163c890cee9cad956cd59b5377b27d02335853af31b8784e03c95003269cc869559d188b834f7e630cf9ffaf1c1a32e4baa82db17cd4f4745bb3ddc4811395cb877281187ae396f20cd8fbd4d224544abbf793c1da10d49795d354596928b9ac098b30ccc50b71b2046b9438bf546acd9701238510e81199a00a0240491fdd233dd3fc16caec7c9644d58814c54707130acccd15bbc393026f33e55e262d8ad43d5cc218fb94ec8405b665484b2c12cd51a2ef39d1d9d985461b5763e46587ecaf31d56f24c007c73482747d2593bae460b9d28d00531e1239460acd8fa8bf1a7523065bb745ea4a5141656c06ace0f46df1473a0d930b20e22e52efdfb1bbdac04cf58e46029a558285a15b24c35407ebfc74dbc93461812b69ad82615b30508c1304c0d234baaf2147e5e04a454326c20fa0adab6f1718cb131e3939371759c183f9312249a12095d9e1249054ea4c4859804f9a7f1dc72e1ffa067859a259995a338c9708833cca2e7ab68ea0e6c46f155d2587fc15992e0dda457357b2f4a1af463e7f3e45a6a0c9ad3e625781ab5c142bcbde60431164801810c2105020d2c4cc8146e1d49e69b576480ca3573271dd38028a8b498358a7f1a4f9d2ebffc56aee73b22f14c0a78b512ec20ade905d8f5538333dd4dba417e62730f03e2874c80585a6156f038634df68ed672d9899d1e1e981d73e1872556aba91df0766bf4d564cb95a4116ab56107b8051cdcbfc7c5948626ab51735e22965d6191eee1e6085bb9e80b6e193beabf96d953be0e488c4a0c599586304499a09e075476b0414f6ee8980a416e5996e747a9a1f0fd9f7320be3c4195c2a6221867827b9cf6ff492292f31ebe9524522eb578f79f42b5b676cc826e6b0fea3df87f65b989b51e7ca6fc783a7eca2fd5b78e4d812c6296a87db5aa126736348ee7e46b4c9907a7749284e5c6680e4ba4289cd9a9fc14c88f3441e95f8699aec980708a82a3d789ccab02e134ce4daeb1463afe48b69ecb31a1778c51df50e2e4029646516e0864db3d77e930ea9c36949cb4982a011b0a9b24a243a41d4f1c95a5eb92cf9e5dd9dc341e90a01b9ff9b4273be881aa768c5554eb72193e3232eb21c8bb9d769c84a808673eb9cb46fbdfdf03067361c50f8604253364dc593287932cd318ff6fc0ad6d9e9fefde80d31df24ff724861348db8e2f10e42f74dcf1363f4e913e433a73f31ccffbd478faa960a2c1fd7f0733b233ecc5193de8bb5a3b6102bccc3e39b31e0776bcac6d6424ed0805f0f44392bdef5bab9a81468f83938c8c5ecf7d5835d135adb143666e7ff7e5a400bfafb88f44017ee728fe464c8067551096f99c7bf8fc873debe7acf04a0903647fe5410b6521a34741d6cf913bb7c353a5b796033ef9f661eebd8677d60e6d09e6a93ee1539587954500657839062e8129cdb76f9b4cd28c242443cd8b127a5f9592616fbac0c72e3f29f23308d37d48bb374be48a1128208aaf3fc83fdd472e28127c2f6d2497243d4cd754b6726e98814f189309a8960a20f85b58bfa608ab75254a1876ea0881172d8bc6abdecd8dbe716ad8012108febbef473d8293ebfe0c8dacde09067ea7f24cb9ae3efdd71c2c6e94e47a4fe25f8d1d1a679f7b6aa59e14e3d40e408340cc6cebe00aa16ba163d143d001b96e48c689172bd775d650769267c581b23b3d62b118c8c15b5b12e2820a1b44b804a96ffc7be858f43074d142aedb6eb815bfbaadebbaa39aaf5141965ec105ff9e1b8c02af4fae3b48841d01968101a2e96277883e2307b2c4621ace55723da17da0b54aae2770848b7d70119ade74dd1b40a683be9d87864f25d7918f0a78b38fb5c68533c08006bb6da9ff346d571511ca33b91e2002bd1e9b3431310c94a3286fb4ef9546319a7095711de4923dc44d85c890743a1777846574a241bd7e605fbfd20e0b34f5b8f597847c19232a63460d162b8f7d55c19d9c4295fad3aaf977cc7aeaa5aae86b018c9334dc0bfa2b53e34eb23987de23331a8a040f5e9d688fbd4b2c541d48b6be95d29dc837b970870f4ba8fff0cf2d9efc4296b64c865744b2045115028b1c3329f0689d3172007ec754216c4aa6bb65257a83403b1126daaad769631124c39dc8a2a3ecd089ebff31cf584bd66f74c2f606a8f1d563d58a0303c43acab02eeb716852f83ef111c2b5c52dc63ee1d68e8d7cfd385ddb14d1ec5e675a059bc8593597e4bf50efe748216ffdb87f2ba9ff704221eb116242c30e0821dca6a073101f3e19ae2f4f3aded7056a61cecb876202a06de03ac562f0994aa96b22f2c1b4e17a6f71136047ade10bd7f5ceeadb84d634145c053aeae743be045da2a0b17d4027e0fad879dcb0295c6f883c3566e4577ab9d341b68ee4b0ecfca1bed47bf0c29aece5b95be2a0b17d877603aeef873c5c9df02b307a807688c89ea61d7a6d22963247701d3f2b9d5f1e12f33a7feb64c7e4386992cfaddc4d34aee0fb6aa4f8cce9563d55a27726e6fdc25923e4552d9dac20a07b17d9a8da29a91acfb21f630c01c02b3177e7b72e6dd885cbdf62d74c2995527944429fa03e160bdb5845c9b07ae362af0dd7571c0f66596205f1c3159f05d074c12a2a6347d04e498c775c4138f54a95a27e8e276c365f6744d440a8c4ec987bff71ca0add819233ce21cb719c5a80edc5be5201051898377c5ac224128d60a71ec97a25290cb682decd7a7c919cb40784d1bf663beb2faaaa47215a4c6f809f7a63dd2a065010d00f9c88773f6af662abe6df57479140f2d85635a18e076d76b81be59ba72df289d337dd915cf9fa33ee1acf9803afdef3d0adf964f90ec029a818f92cc44a1e5ae788b4b6d220204830db1b3cb2cd5597d6ee201e75b2bee3b9286b30bb271e9b968e9a0a71578998a2313a7b3f0a40044d58b0ac2736f8c78159c6981a462518de89eb368d4cd5704eea05ed2eebc155ea5121d5a426b6d024907aa86efb94df316643d5608366d8a12ab1ebe331a76e1a0ef5b24ef14cd28126199bdce2a4423bf943a6fb32d57839e49ff9537f61dd1633de5a4785617d0dbdc532ac76c8e046345cb13b10b9373475be7f35dff2f26ec4bd628ec86c3bc64fc4784eec9a1b8cb66f17eb3da7835d0f6c5dfd2bec1b7122ec7a4a59bf4082c58ff9d4682b207bde589263ba93474998db98b5ea5673f216f5d0c1e8d7d9e0df4baca5ac67ea43c97b9778efc4b0350bfb51a75b2b08ba292267a19f1a4b54837eaec3a46951c1a9a953d6b3759c6a2519f58e451c9c0415ea9dd6b64785e7702b8428eba3ae8bf2bfc494b09127d5b43b9ee19f5fa74e74589e7f79ee7bd92d142f5450b64808ce61844616f05bb0f9da054eb9f99c0a50796337546ca5f4dfee659db9e977389fe1d1ab5b823a102e4f0922df2f4e3584761c3f6390c321474ec00a7ea0d29d85fe38a07bdac6ae5454d02ae2f6ad891b430beff874395c3274b63be35a89a9400537f2a4f423eb81b9156a65f5b1bce00fe1da9a831ceff9588ea010b3c831c65804c735410882d315b574df3e575e7889eab42ce2a336ee93f1bb375c61ea6545089f3d365ac672cdd8e40e7e1d7e9e250e5bb66c781cfb1beb411c660a3c047c7b4463e40c41872675b5743975aca092438e8c44d41aaa2f70dfa15ad7f447fe2c8a4de52ad52fda11cd5044b0bffe510486d3ba94d0cb2a4902392030367188e0bd9ea4ba77fcb55e695b0cd2377ded98629f5fae4bb2a654d78d1ed8a444c1667c02c6a1940f0561cda078a6b04742714a85537112a96e9fa6fc1ddaf0f219d37e3a7d161eedd556ca98e6221118aab8faa5ea3b7ffa395f2fcdf8bbc3aebd74a9ce7fb818872c8e2d1206162a3833dbe02c7ada78f020a83b510f1530504f891560879b54d510770083bcc1f4b25aeb7ea65f847c2a7f23b30a9bf97e8df4489a8ebeb5c94af5fed80e834672fe52203c2ef0847185ab2fc40742529061e08314d1df4ad633162fe98a22dd47f104c2affa84940a8c62102605bdbf368950e852bbe893ea244480e128aa9f35802057098ad678c2a48d18d83e8cdb0ff335364e8d7b83a2a3f71fe5b8af7fd48d728b84e29714f7fcc5c502b3311b4a363c8ac4eff9e9aaebb86bf80872fe0ef5a006ad3289712901c3b9ed390df89e83814b06dc321e581c86fe12124356f8223d19ce466918c973003c2e018bcf980cbca29d48b4175108478a1a04ef1add92e8c1182069308dc4b2dd6737d3a274a58549544500ed1c2794d59f77284083bb71bf660abd2dc5c618016f1a66638e337b891385e8303b7643f00a204f9a669a1a9d25a643e4fc97a1d13ac55d98dcba24704d0ce03ac276730af895e0342085e256f868cf7eb679cbf38245140ebf0bec364c26fd7908ef284c50393cde922da98b2ea955cc5232f86487a708b7189397e0cef38a1fd8f725bea60c7ff3e0b4042790c505832d91e6270c0bc26983093999ff6ce4aae1165ba36e09bebd9fda0757abf371c2574089e5048e50646d0cbe0107755afdcc12ef12b122ac426e42efd04a489312a5401e8e58ef69a32482e31d93d3cc64d843ff04902cb4888f646b9317baed6f73fc9e190e50759829a6f3d38a24c17d71f3547c252301f15ed340b9365f366b18d93da489b7c07ebd74aebfa136cf0c948db9abef117cd205f63a77fa0d20e191add3b4be4ce8ef247165576b37b5c710c5c2590168aab5548d7ce8e4f921d6ce3449b21fc367ff21d47ad816036c2fbd804d47f45bbf4726956d2674a4918c162a48508e45521df1b689b6872bba720d12725f8a8d1703d926c374be018b56ee881faecd59d8ec5c4bb14310a8def4ed49499500ef668099740f0ca54937cd2c9402fa7e9a7145a93e0d3f51e682d548b4b1ba0e5677cbddafa605e32f8c54af6f5d78a2a46c0241bb622edcb48c28b7d02fe98484bfe33538265bf49b86dbd7fa69cce933cd744f2c2d4e346e11f3e55881f5621dbf5cb80602ab329a90abbc142934ff350c2a0e63323d820716a350f5fff03e3370f0ef325425e891781f1760c0a2019042204f0f9d961a6c4f434e3634fd41130164424bf1ac2b612e014bdc02d6c6088986a5c06a520dae413847731ceb0866ae72dc9f098690c3d52da43ef886b16bcbda90d1038d7d72c5f9eb3ddd5ac9ca1220802dc65fa6f28bd6fdd52daf2a002a238641d524485f502e8daa1aad234e1301cc1347ac69a71a6811c47444c0d63d80fd0423db7ec0d289167e19bf0341736b6b69bea0d9fea4670fc689089e62c285afe541990a4e393cf8dac0b4f094751a637ecf53ca5d130bb75c3041db4db540f9ca88f9ea3393ca50cb82b88c0193fa6852f3896e2ea43a1ef917c10b9398539d3a95dfbec1de0ec4c5c7d6a8c09c1cdc0801c1fd4224b23bd20443c256535b2200e48082860092f5804bb2f503bb582054c481b2d2990ec852f0fc2b01972e72176319dc840f163bb72ee2bdd7ea9fc1537613eb6c0c4aafb82c141e8c86c87f05cc24040aef1eee506e54debfa8c0a402f89909b049cdaa01433da2bab2ca4b20fcf4e3973e5c0f3c0756b10bae202634552e86c8e424e44c7ea4e19de942a49c443753f01e9a62f89b2208a0bf938cc2e6da5277f4e707a89ca5c20fb85c672958dc6fd9fd7537063050c664a7e85291a98ed1137a95b17495e210e5701b5b8ca95a2668f46e13ada8fc4045abdcfaa0f844f125740c0997c23a8e0f641f626dbbeb8ed506dadaa3c9884505b93dff08cedab980aa2e696621b1e3cb14c33336219eb67d1d269108d846b7d5cf0cebbe507dff4312db89473346c2741a15ab4f42ebe448a76f5805f9cb78cd8925f6c3935d7b0420782f7304b6efc8c6a54edc0f3abd1bccbc08e170846794f73dcec43fd1abbeeb8fac808235c9d459497bc6b9d1c842cdfb0b29427682756c63e6e6fd0a9803a89015293550604ffca452dd192d7cfba6a5a7b8f3ba7da5765cf6208f77e4b1507a5e5efeb578a8f83f89056e384a31fdaa48723d72865f4985857690cdb7b5768b501abeeb10144a0ebe341fdd2fec9d80525eed52bb5849de928d3c496555e6cde1e79f4f431663ee1b11b5c045a51faad0e1e8455f154107ac37bfafd6a9682abbf0297962ac430e1fe5da577bf2ac465d2a27ea3a525afd294d1869e68114930d7761416d79320b16889e68c9d86c912d21bec59b8cf92a01d253693eeb74c694503211aa1a42310388498402aa9454905dedbf4fe4c3e65a23e1ae0024a28160350b396c61136a1628a3d1a4cefbb9f8a9e49e917e7254442d4800ba4da52d89c44c51cb7a4fe7bd2530f5fabb9be79f494586df501a9d0158bf70739da0d4edb51925eece8e53b794be8d95305964d702b4ed051d99746c540a8ab32b7b69c74d5aabf6aabeda8ff17601b422b6abe5f5bcc092827201a0504afaa6b0a4e04c6b345a0fe79a25b9cf22bdc579074dd27744bb4c40762b29af04be4f19a52cafa4c98651674951ef9349e3984a57a64933a9bce086e3743445b1c0b923ad944189d74ccb690923e2fedaf76332eee226362a35ae77ff93be684f2b0ff0c489f8853a7e3417341b96dc67af13b392f5770dc7c0f2ce6125ef5a1e4e5a2d2c09129c4805d793c0053a3ded3475f6da422683dd4d8020e9e98bd4e14936f22d2c3cb3a6151c372fd3b2ee926113c499a3ae525bf0e1e6588b29f28a438f8ba87ccc0ef1d1386091f67aacc8f801f04c6adc01818fe9de09b341b7ab2d901bd1bda2ada8ca2c29bf98e8466ae0440a9a740ad449b34d8dfda2b1dc6bdad66a50cc930624cec0657d35975901c91a9bc84d0206306de9171aa89c14611011da3382b636e68560cbf3279f66f748f743ae68b1b99ae59df1e6d8ca149a0c553d4f521ca595e9bcf47faa279646992ab183632cb04c21471d6506f8bbdf4a7d8acf7f17027d011d186cff9814111ca005ea321194ccaa8213ca9920903fb18aba7ebb8c4ac5487f7207c211987a808182e49b5c76e9b33e63949c00916272a1e544782d22bf1429c8cde32ad0bf4430c90134523cb0c5135979c60207197699810c1334565933cd4bc5ab4165025ec6924d6794581b9dee46974a26442409a740c47eb8eaf2d6af133f462ad4f2593e9835d1c41f9bede9a792b03e4d3019e8d614d029df55c27ce2d618c621e4f490c6ac8f5b1adb67a618bf39806212701da88a1d2c9e9443fb5680b81ea2d8c0e17a29b212068202109a6fc57d206d6b0340b8200a779c38d68f8cc1d81fe52c4ab513f5397662ccad37b9720abc98f652d500729ef19feca60b10cee7a6a176b13c10c8217a7799c78b8dce371323f64821758a81758396da8a75b19ed4d4df8a5aea5d3dbe66e35f135acbd1467c15286d7a0fdf9b6bc12f1a98cc5d332f5399df2e8427c72df871d7bae6ee3adae05de5263604be326862db44492821b95af6b19bc5ae8b3a94713858f113a9254617c580edc40495af058ebd3a7ea67f1e83b5dbc0b236f96eafe67105d402162ca2f1aaf59bf0d4728407ea72f4fe2268a5f9e7e1bb20d813044fe1040c45b10e99d2a136a2a674f001167d16c8d0afa91975909a8087e7cbb39c19ae59758a37fb883e390842bc451a720e2e25505ebe503c50c237f5876f26c3895364cb2972774b1473078e7d6b49f7d30bf7322f843f4c78229969c2040b2ad31f3bbb30823585fa287c4e51f2b96caf53e0123bd6dd222862730ab0730134bf714e25be21fad88f44f14671924c5d8a20486fd628699d2ef28b74ac7707c7862aa052e11bb30dcaf7a88053a40a7f149b010e84ae09cd982d7d0cc114e1017d456f227a1ba4d36725e9eaba2a0ba933bdab429112e7e7fb8042e9b7e036270936a925e0b8545213b0315f0f33481d9d5129aa9c56a97be98568db085c4f58299560f9e942ed163c103d06475c3cc3847f0ed8a2ca1b8cd5166917c234ee630a6941f3cf1657750a678a6e4837ca911e87a795e7b00f8fa2a246e45903df5f676736f876e15594a684f5972bb319cc8c682e306870d2bbc3565e16fc2e84d42775f6ac134a26e7f5814f79c7544a8a215e547c523133398cc6ab7e08e074b739e6245c3312228c3c3614ec6ab7f4f499e707629cddc30b9e09eb911212004825db65f98d484db124d02568065bc26101a8a421078cf44cbdf143279f583e43923078e59b436b2cc09568240b25ea9aa83a1bfaba8792aa5e235efe53054e09ad739a51955de518ac7b51d6436a98c89923e9448d81f5160597cd59ce146ee0732032098e4232d508601a115d5e2bf493afad1254bc3d8caee53aad65aabff0ba66c917514a2ef92b1b7d259844cd2ca408d240c251f27bdeec99462a9cd799801cd74c18d6a70123f9064989ab8f10e82c53394e63b294054d96403f1110b06c5b8474bf275d3f7eb4aa2455dfe39f38251cb1277edf07102c0b534ec1adfd4f18f0e7d9c126a1afb084ce40e268ea674483c0a222345470827ff38e8bbc3fe7994ec178d400595318658bb82a24eeaf9d1864a9abd13846da185dfcfbc94cf54c0409276b8b4253881003a9ada6071285a4ce923d2a1b36e49018f2d6f94d3957a4ed94ce72e28fd98a0f159fb23eda9f82f8e0ae80131f84ccbb3634985ee4aded7e09ed438bbcb51dd77ca057db3fa899e5a37fad87b414f61e6701d158b0300a987bcdedd9286183eabcf4281707e6b96b33000b480120bcc3aef14638db042ab26c04550ab5f3d1c9d0030befec2a74da3d663c09050b03a4836287bf1aae8297f4595ee9960cec51b0f0e528ea05fb81b0484aef5bfa3cc95f6fe2beb9485601a271bacc1f4bd5174f5c3c7c07d45e79c3460339f95320530588154e6a728c6230d55855f86555c74af6002f0a856ad4699d0fd27941a75bf8a96b0af8a21f115e2ae8f7527c1322c58c59439c14247ce29b4df04519e7c939bca209b6a2b589ee24831459dc99d49755bad78046128984fd11ac94c09082b3755d44bf7bec35695774b925865d562ae3d80890e0834843c1beab1c6cc261876c584328f0e53c8b64dafce23dbfa5ba69a879c63964f19f2fffcf3be189b75f15111d01325af7f66ec64e87d457e0c94b68f033aa0dbedf65b3aaba88e6cc2ccd6962c284df70b884c7a157b980129e611a8927f288d0796aaa3b59b349619a730d2394ebc0850e5e21224676c764b33ffef00d3d360402be2bb1b6f16de2be0f73df9bf71547f877a9c7d376dcaeeb6c8e32a67023c20d3eb5b071685e909ae7e1d021430b7aa5430d754bfec178300583eddb67f944f8c6e1e657a0dccf5ac5d081e34b0bbcbda7cc9b195f22de0c5950d4decb9e912d18bc972b7af81edd9da83c029b205bc10c082a6e2c5e3367deb9a61777a5eae7dd016b0e4cbe50b3ba12a54f4027fc9b74836b4a9047e966ea92180bd120fa2098d24613ce98b6c1d36ed3b63b4b6b265045568e094e56396cdf2cb4e02aa4b8ac1b2a9a8cab9bae932228633bbba21247c70619cdedb1178ed424fbc1b2489a59a24709003bd0a853651332a69ccdfb2911fd9a74a4d22035f5a17d654cdd5d0f846dd4e0d44f1c5af5a3d55a3c93e2ee151378566d7ebd819933f81fab1d8a79f7de497c44c08427eb2aea270bbc723e41ee6e603512db42a5fe1eb5884c0f5208c8984d8926c7b91b819d01689f2c1a21a1b2a3a46aab240a24902daca0c562d6d0270a597e8b32bbe4bfc8277232fe57546d2eb7453aaafdc78714ed76ce0ac0226b0f83e420c7ef1c8fe958a923c9ec98d8a31ff1d1e1cea3f016d8096f33b2ab09c05b9dcbb1b399cdc01d9d12f39d34dc56d246c4543973575b99af2ef7b79691489e74a1ac1e4c2ebd6aef521e3211275b2742d3ab3e97653e7f4a78632ab72bd19312692a29e8d8bb60dd461df932b9b0c34d0ad24c12f124588da9f852415690281c1eb386426da92134e024fe96d3cf9ed26b974a6e1d256f07f7eed6c2561a356a60dd264508e06006874b3866834e1bf7b35b1a40b5c32c2e642cb52822b88ecd5c902ba6924f17ccc5163f7ad62c790b556389233e95b02cfea486e3544ee352ea292984dba0fd9e6e036100ed0e8aaa613cab9c6b1cc0f7c0d9c00ea203525911150eb8d3e1d9df6b6acc8eda88d9034ec208061cf5d42ca826290a944bd74b5a70f1249027fcae2730a8402c3cb8fcab29fa172504dad6dae1c9651090c63cd3fed0caff488d5cf30f97ce649ac60751ca5d894445f40045f622805802273400e7a21bb6a8d2b583c943c52a226c6c6d81e15aa892e4d044cbd4474428c046062428f439655bb628dcf1ffd6b39566ba1314148a5beb16dc0e4184745a4f3182090b56804690307267a0d0a456686303691df6d0c5f02f8771b4fc55906d94623c767c059eed31fc2725b89fba1a4663a47fe98748a89f5bbb27ef3f4cbff6dccfaea8e46238031880c67d8197fa4f6e062358c1a880658fdf9c9664cd6f259019141f58700f38b687a3b4be5757d5b155124313cc498eb57520667620a14f5fccb9b9ff2d56f71ef5d91f438a206700fc14bf123af04075d93f1dc655f1743de87fc6faa8c1ad246a9eb99eae4e136caf71f5b95bab89a7ebcfa1194051b924ec990664a50d7fd13d977a45264ed6a67f5469fbab40c348ac02d7fc4f0e302cb004b87f589abfb2e2dea7a302c29f01eb3ee565fdb5186acf54f20efa7157d7e196ce1800a3e9324fe4996791086bf0051eb8757553a1dd3f084d74a220151e0edd9e34decfa1aea982198b37bde7d4cf661b3c441cdf05b6082fe0590af9f40ecc9982768e102609909690078774b6712361d613eab1cbc381a9ee782ca06974846117b89a0136ac4301ff46f1127ccd98c105e69fb2250bf709c3c605b918d8546321be6253c28db605cfa4df2298853eaa015d722059b37013b7a5351819f2b95fb7fab4a892f372a0ec331ebea82174b068b36091ee6daf8b72b8c6834d6c140a83fbb2d135be94256c4505ae6ff7951186948c42e97805c40d40a69b139bc887a3cd1e9b2e3650a6b71326484216e4c443a80e438a04bf2d923b1eed13720a5fa0b5e4c88651fdb13869e2feaba064372d1454a9d37819c5fc35239d05e09673e2f09a0847a38242fdd27a33a440e2eabd76cbb462ac6f22b752d5d23964d166d757e7b69d54f8ab8862e716b40b99174e9f26f1fd21dde80026dd3bfb70a12be21c94855663f8a2f37dbf6d668ad6955a5509a36383000f9370d3b2ddf8637d1f83910fb045c541edfa7b56a2dc80549b244ede8037b851a6e01475fba6058650db485bf2f42c0b24830a1a552dc82d3201f4447fc9b1da2e36b5ad91a3c56cdd7a97108eb790ae5120adf12c201ed2effff56aa5bb988a2e3cac1542081763d16071ddbceb2993fbc127faf45731cac991196aed0818d35c28afc26778d1df18fe1ee56b0e15c893ac428e32298fbc8b41801b731f608ee002cffbb670c0b8b84faaaa90fcb079f6996049df6ef86d02e608832428fa85cea8e2e023610f72f64848a25bb32861b8ff5a6929c98bec02edb61461d857865ad5bbd6115c205d5a7eea61ac95a238203a7d3bf44f863049ca80d7aedbd2da8eeb0900bcb33da70dbf34d8cfe97175b12b2984b4aac06ba38dce384bc11fc048dbed831e5a345cc18a4a407e9f32004726c5bd4f80a2a8012e27e25173a78a7dd052174634c790648aa65997712a28531080f65c7222e7cb416b378926f2ea584212d8d524ee8481deaba3441d8beadb36725183dbe368a91a0e19a01b6f889a64df0e6917a6e6ee4ddd4346f727aa68253c5fcd548080c2553075d246fdc2b375446bbae0a5a7f9566cfaca97f95a42c4878a0559273638b2f6051a90e68c1376c28c0f1f1a23010f11aa513d7d2fe8a00afe9d3d334f7880d058e04497dbdd6257172f4f3c520d7a8944779c60ddd35f11bf2d5f0d3c81e5654a04dd94499c05438a8c131194c404a0dbc419677a56132bd26c66df6c5cd7969726231a5401b4953f3848624b53699adfbac5cae496fba8a9945ed093c318d94b2626136852750195025d2a15c97a11b51b2ed47f8de2155615cf3e721f9840e3db80d49f54b53edd878a9f27a7e0acaba313cb20756a152cbcfa4217efe0e3e52a38eb189d8f1eb08a1d075528746a340a7086627919cdcbd0c079ea42528f4bc660890ec5c39ba3e04ced7c7483afe03f0463ddeb0fbb489122d1edb91f20346056dab65ad3c86c4afc1e1f76e42705f84e5aaa9353c8afbc09787973159c7575750e3e9e1c85938e8e4e2d03d4a84db0f2e22b151c18a04f631796f9d260915ed4c9bf6eaad538526874a451f78d09d255d54512b0b4fbd6f602ef82e3db44759ed3473fdababf86a60c70e712ae9aa388685aec7b99dbc22f05e58d663a6dffe2165a0cb9db1304f7cdb2324d22a1be41f525b20ace1101db3c7a38b193f3e8478dfa186caab81db61a1225200284d8961067913b4aef08336afd5adbf4039cffefa8d8f8c167458348566f3b3c7c649e2c443f5c99411a2aaa2273e73bdb788fbe52e0faab1a0bc0b5eabb1907ccdcec82fb14d689653d4807a71d778fae828f04481d62bd46559aa7d9e44abb8717584ad92ba8ae9859e78cad53d7fcba659178dce4f28e0be002c845c0c872220d0cc78fe0dd5c77cb53fa9338f1374d93e2c3a43752b40357d40fa08124496932e7f8dae1e6ea02d1fc2366cc7bb577300f8905e8c8440430023121cb6a5bdb550d9f1a55d1ea38a989f8dd4ab56f5e9b79772abb66d5a9652cc290b56a528d13b298388cdbef21552e2e870f060127f86f38f4e37cd4e7402cc71a8e943ae07419c48b6ccca1e82844d35df941464274a2a1b309b5944e7a84d5858e5104dd06e8bc7e4eebb735c6fa393a9f73f674f4751853f6dc2ecfa977b6a42a58347521c50c3bd74c74ced7716e25ee3a8ca2f3e3a0e434d501a9bd2fe463a63b86444f93acf17dae839e3a7cbcf1652230cb3a71fca60683a9f534b28737175bdc9e2f9cf4e4c933adae2fe4af73a11279a9fff7c4aed4eb52ba57abfb81bea7667952a3a43676c86f433ece3c1445a86420b8130722753ddeaf8037050a47430f3b14da4bea148a50801b1490036aafde6c6207a3f1b6995fa2a9a55e5a679fc5fe7ec9eb621a6bdc14b142de0a1794931703842e0ac27ed3fc6b0aca1be761fa3316d2a114046d3fe243b4473f77cdf16bb117d96bc0a492bc93e791be78a5a2896552dbae5f92c2345730897543356647dec319c2ad9bf377146f53447f3f86ba9fb1cb7724b14ec0baad3241c2b6fbcbc0290dab29978d72dd2911c3e04be5dd8d90ff56cbdca5eaf61f1bc932bdd4794226947d760b66897e82feaabd744bf61550fe8288bba5a9540240a44de1d1911e8667f5c9e0d1cb3c3196929a7a810bd25c478c474c581f1d69f380de4f29b8a8352e65816c2ceeb287dc91e4180df77282d60d4a938fdd845f013d5628dc52b0b1b206004e9d8a4983c8000dc3258e3f007cbaa3950723c128cab0ffa973cc9e24fdf002d5e65d19bc1d80d0e040d108ac7880a0b1c8c1ceec8770cfc9840ed492942a8e7ae7e7ee5f8b95cd41ecef198ac38093adea5bc88cad13fd61422ee55cb67e51711ace62380a4180cf16e934670e642a29c86d2e6d017124d19d677090b87bbf3f56c87b44129b868c57252eab98e4cbfe2127a8163ffa0efce6c4f0a3e855c138751da49d8a63859b6e8f52620a37610414b30a40845dcb9870cc76c30d31684408e2b14f6fa61a6e8c94dda4af3a7d6bd8227bb9acee28bff6909e7c126d7cb747adf410f5054f3d5fe22496ae29beb01bfcf9e9b861c9c2edf65c4afc3c6a02f43c8c8b3951f6a3b924b14659e62125c2db2d36d16ba24edb7dcc40e6e4c40c07e87bc4d8cc33d6fabdd60ce87d5b2c05d436e21a792b9c30296ddc4916406bce953fe5eb84de924156a773a95e920efde383afc8286c132945f76c1ff583a0d72f8563d79d76d685dd89724ec9458b53a701aec1f89ddad36846461d80a3a13dedc960a44dc8607db477800e31a9486386ae9c309fd47bebf3b74727b165761da1c48bcc19dbd98b9f7f22b11fa0f09b0e34c265f6d4253ea1093b3de795e208625bc5c4368b4531b39558c2202db6f1f0041af167fa9e97eb4e9ed95afa27255206c64609ab8c0ce34e43ef318b910c31348bf57b2895fcf415e894132465ba34892217c38b12f05219446129f9292b1e0bbda4261f228fee151c5e0a88a5c428bd266c6abf6801641706982b13d07c51fdca0053aa4eda6d6bc0c76f12692230ef29d0f66120a98baf9829d0521848106f606875c2123782bba90986374a0946704f296f6c45055fa6fc4beb9b90e08630e004df8cc805477904e3310add54851b1a0b03c1859ee22fdc75cd309048fda7d699ff622887193e29fc10c93ae14797c8bbe55dd494b447f243d26f9bfdb6f3fd8654abf7183033136c3fd2b9449aa229ba1e8491a3aed619cab6b33214399d66f6cae9cc55a7216cb0d699802cc73e02fa68b0d1afad597a3712519e02ecdced2731caa4fbab2215fb58adc01ad62f01cd4a94bfd2790be6ac36cd3349da91066ba7143a6d75824eb8cc9f539dc6e7b42b794ef8757c42c968d76afe570407e0a9b29ae01be1bfe630879f4b187c0116e9fcf7744cc25ab646761b105d329c55f30cbcfc3b76bffe1e98560b81a1cb7f013fe793be41e2a200919dd37c279847f2213a16f05a67fd0f5b9ef0f5d72a2e0bfd7698f6f8e1c54abf068ea44a48032f934e149471fed963874953e33889870fdbf07614aa05177e5d2e8845e3f856a77259ae82a7e02a3825478549700e97d551f6959c12dd01a9b3d7b21ac7745d91664a9ca5e50488a58e6470c89b097194abc8554010ccbc326600312b8c271397b310572087cbb3999beebee76aaa40d6c8753f0c0f178c846edbcfbac043e50aafc0f28fedbca631d2608076a485b440ad10b6b4466b7eaf614cd73565c11534cc3def16b6ce76cf9c51fd2be66d35d180d438a6eb8a96072039a41480133c0300723b0026420470459200b2a815802669c02002644e00f090b8f219e68557230184dab116ac156b212d4847f80393d004368d4c909f90984c23a757af499c98d5cb822eb82d784418d5cff1ff4609b42a287ef142f9893f14692889d2eebb28fff846c1773b0ac377fe660de0710421aeb723feeff01621956bd3c8c7a6c01430c96806e3d0fbe52335296326f7be3759e5153a828ae22d844eb6e12f99872d4942b0cde4c344a40d6f90f908bfb54c46cd33f38f0fc9d5547e1334b8bac491eb0926815084cb40af45c51c2328b5e55f270fc2a2b0101284241030ce91a177fa636a77fa3331f6821e9bbc1a6d09254a9489694da2aaf1998fb7f497a4609b3511889345993e248e37e1fba541cc911bfa25d4a47489876e759f092bbaa7c89a8adc5aa470ccf6994678ec6c5d282e4739dd901ca87c940668505cae245737af2a93b6da39e3ede6c95ccf2231fa4342ebe45b123e840a101e89ba05de2ba35f0f441e3425f938196307eda86872165e338c14efbd72812930814d609c4c33134133084d633a2efca41bd3714d83ac3054e7d86b3825184e022871dc389d450a1b4bc430b200700e20a43d631292fdc7ab181908d58c684909989898f58c4b29205985da2b1a9004c762dc49192095c7ab47c6becb5b5273776b5b4cae7495300b73caaf2468e20624c62a2f8fed330c099213464b12cdbc77cb8d8496fac6b991d0b07f549b01079b12179d9f16c10133c1c22d7e90c300be131246896a7863d991b6af91774db75cc205d14ecf9655b1675a0285cee004de5a1e051012181558c60c63f0c282806941c8a46ed92d19356c39dd32d73f6a088e6ed932ad160a1d03ef46fb1dd05f1a758c0897d7b70ca0d6e232844f73133b356ea188a08807462f2d45a12596458043a8d2596f974e669fd5a841da656c01eb6ba4de5dc1775484ca30965d1ba550f84a886086af9b4e25a225cbac481259e089eb71796328546c8c767ba260fd12a9cf5af00d0db989dc17ee41221be86ff609806d31ef12c9310b6edd632412a59c2c7b641964331249f605077d3b730bb59751081a4ec81dce5269f6e020842e52df8ade86955fe3fa46e3a07b53a42feb3146610cc5feb95474ba950bc48b3ae4f61232b47f5489f6621f5af57c0bb31a39c8c3c51d0ea3fe08e920702aa8f76a5c9d4ac024ccac53d9976010d2a1ac7bf512aa680b9870ebf2acd6c25ec258664b52fdd075903c9fb2d23a79841dae6ab98e2f7b8d412071d110872fc5232b517c2cfa261495cd5ca47f95bcd326102f56e947e7f69b1e9cdb924821721f7bc0b165b5ef50e62cc361b6da3707bc0f851c77f316b223a02b81a8a0601a2a03197492021eb0d44e6bcb6a62f9b9059f943c6b8f32b8241b09e83d5e4f9c8898f1b1e4599e101ebfb9e8c1203922fbe6485f216fc848844dd197f76349b471f4d516a3974d940adaf536d610d5c0b9a0273f84489c1c52d29ec1a8e066bfa7d3edc7e03976e2b6afde96f7fd7993ed5b52520ac8ee991a132c3e7a1b6474a35205aa3e7e828acaf48bdfce835bab4174bb83ae76243904a0a3d433e060f69866a9363684d01cff8f0c1357ae3ae33eecb2a5142f48596854377cd09a890d469b234c4f475f3142c772e4be46dff603fafdaa235d39d2ee50c582e3593896aacdabf9f94888ab273a614df175f80c3c6ceb4d88920559ea391e3f1aeb1133d5c8395db163862130461c3c87d49aacf7645c1e5c9c249904740212f543c0e8b8c69998d6c1ede3eeb7c0b8fd36eddd164f8504e59b0cff5d4789beb6412fd4526e76a7bd6971a7267a94aefb8074183d9937411d42dbdea53f649188ac42c39c238453297369e4580e4601c213173ce5b810eb8ffc0d474366fd23b87bd59be587dcbb1783473c50eec1c7099ba4cddb1a059d545c032528e2e6960897b688e08984e785e4a24515c905b4d23816d8d01fcc7d59b3ccbd110e60394aae81174e71f1db6ada14bad1a54e1311921987e717cd4f779f931da79be05e77c44c257e02f40f0c352a4af8d2f7b3ff27b2993f3ad1f8fe51caeccdf515a91e3b57ac9c28b71bd8a3b33f579c72216d69a3242b732f1a344f2b6de4d390ad0950e6690d3447a4eb3fda92ed59629bd468d47aca44d260026165f3f170d5a244234016d98d692c081db71878d58b16ec25891909fdc650bd21205c7a9fd29f89b3bf178c1e04da42dfa35b30dad5261d8fcc6b41f692c4329cd99eb93b48431e7288668118787d8d36466d25f4674b9e08ca5376100a1e1802dcaf16003b84c17018203df89d870e13761c08549e0f35a1417e6f8ea8b546338cbcc812b209d98490bde5de012c0a150a520ad7ebcfc5bd2c8cb7a081062d5252b2d8b1a3c96884858aca15de8c34795e3d2b48249a95151fd8ebb5861a7a60b3571e3c78c0c2c2a4478f1df8f0a1831f3faa000000660210801c0840003818c0006e4000022c2995a83099a66891a200055859201702b2cb572051d860830d0c600099031c40090262771d01502420014f0409e244ceaa539f9ab0d7ab0270b038824b27c348e3e2817c29a0060b58000d840861c25eaf43385b45b05e945a5b0f3f19d21c9f633c9533b05189fccdedf1ac6843632d057dc8cba8510ed4f56727cb9032b8866dabdb3988f8ed8d3f6f68239db74b6ed51f429651dfaf35763760df5eb12e87f8edf50611bb21b4de01f5f3d7f67ab7c73c630c2c87a786678ced7028870ec51926edc927c962883335327402f3054d17465ccc4918d8501fe678567b5eb4c7c25c300d3d5f4059a92bce4ad3a56e53c7a436596209269850a264496492bf6dd52436c9dfb64ae59534d93a5359342e2e2e469ce46b8d34815ce4ab4d7d72faea1859ba640873e36ea6af609f2b0dd105d7ac29b3d22c2f97b01fa7da525a6bd5021b7f516a2d0b6c7cfc75add5a52dd5a518696293f6e469ea5cb5a723de6eb5f759413c55ecf251f2b50b2a95258da1286982a7144c8e89305105f6aaf4ba66bd29b01fa7dab6a3c0e68a2bc6d1af293b6af44825ecd54456a3e741ba7a74f842497b30ab641276c7096c28be7b09c59f42110fe9dccdd09c46f6db562a1795e79ca82a73664ccb119ab89e5322a4d65adfb7626e497bb20a5b6de7e6baa4bd27ed12161ad2799e1ee6193a214de7e99b5355ed99db1a4647864e56f0822e58f9d35a9caaa3044748d7e654a95a826e06a89c5db9e2c4802cf224b0dbcc08b61597fbc22d64f0246757d27443b40fc11e31a7a43d2f624b48d89bb4615ac32ec5c61f27055cc2adb460fbdab15f9853725dd715dfd75e5ba5013e1141cdd155b0f339da0a43c030b291f89863a703966377a7c3f5ea91e0b37bf5ca8c1c7703c80389849de76a209019796e254df0c4b5361a5a3d5de511169ea209aea8e209312ea76f5b65b5b9b85121958b226ef29521b038841da595433aa0b472dc8129ab73fb15467badd83a010fb659b3cce3c972e48f53dd1cb9bd68af5b282a8fd866c5937cb79ed8f97e0d0442b19198877436022c354d7b120be8c9dfa8bfba6bdbe3e56ab080f8e3c4c8345de28c00b1ecf0f7c1f83bf6b034c24eacc1a0ecfca7a57274152cf61c6d852156f2ec74b8b4559730557b2b4eeb6ec88680610cb1922f6ca41fb3d6e990e5ae78eb866419f718f635510c316075a32c3454cfc5b5fae0a604819dff82f560fbf9fc9ef7e3c793c69b0d6431c25e5816615b1661e375e16da68825f2c54e2eb05042cb90a68b9bfc69ad2c7b6ebb8891e17cd6f992e421b2dc63d82973bd395a7db10cbb1b362a88b073a3ed4593e4bf14567b336e3c48370b02e9d8dd4033cc36228e1b3466a0d498224facc4e500ee00723e801c1690db0202c9361a6dcc40a971e3c2f66878321f5aea07f7201dbbb8d1f6a2bb6827cd45b3208bbcfc808d1fa7ea4adae5b7992e758ecd992ed9d39af545ebd559e6f16c1bc6d94e47278566f0cba6c8f235a5439deaeb75a4f2e46a0fd85c57b3be4831a1694ff2f05f51f470352df26028b38fb3e154d2c5b6fc64c2ea92171048cc2976eceefeb48b9ce1c22c20b08aa0e275d52a9d5c76b7293629208bbcdc5663e84feddfa7860974bd9e26a1e12f4b02c5971e4151d1873ce8522450114f819aad616febb2e456dd9853451cca21628f389464e66f6ea21b6fe218edc9478a43f4317f316b51c3899d0c9d2821834e87eda198932d007168b292dc6270a2c417b00c699cb8b03e90ea30d40c9da4600534439a2eb0903fadb5d906434dfee8e8c98f1dfa0b9f7cf1291561284118ca2c76ef2bc40f9859dab5dfb09dcfd5ff25c9d80caf21c369848e43c767406833c771f7d878465f6b6c1bb4e7aba493d2e068e83a7642302afa67ffef73df3ffebadffb2bbaa05bbbd8d78fbc75b409d0fb1a915908c8462807ecfd4e8222b71b33c7a9be99bfc9ba813bb806fe7e1930d68171e010ee40cee1c96ead759b73cafa591f1033ecb65be047eeaefb80fe79b9eb7e69f2bcfb0cfdaebb1cb6f73b499e4a9a7cae6a92bcfce703619366d220cfadf3c20cf325c93457fc1999b91ab96e25c9abdf04e8d7cd91b3dbf7541eb5bd603f9feb76a6f162b93fbfba1ee2e9025d86264f2cc9f586fad7bb5e984137d435c618512ecc3547d7b7af2bbbc2ee01f534747dc2e4c9ca41baf69daf372e893e62be56edc557ca451c441ff14b92731c7642723c484f9888831c578369afcb71b1d692511ea4bb6ff86bc9db6b8807d0b3ff00c23f5c9ff7e4d8ec9ea7b01bb603933f239dfbb33edeef1d3fff6d2bee26c997912b7338e220fa985a4a53625b61bf813fdbc1df276f9ebb3dbbdb2b94b03b4d643ec453868f2489d96ee9c76e38dedd4f88961c8fa389ec386e28be1fafec86e0695bd205cbadb8603f4ac44aa78f1f29d0f41263646093275ad905197e0bdb3b573a735073bc0d1af411a980a5cfe6832ce3b11f9e96272a44489c2fe53019c238435a899806ce09ee09c8020564194286adbf4e73c4ad054bff71aa952e5850c8d90dd5c353b742f534cb1ca4676cbcc8b8b2603f0abb3b8d85d090ceb971ec75b99cf666ae201b86cbd0090c0bba0c699c78a1f3c701d8b413f19c35f0c0c99a58c1569a6bd53c5880ccd01763554149156c9d5c18d1640c5b1fa4b3083b212c3d22166de295d923468e9d90a682ad998fceeef997f2820c4ff0d4b7a7e776aaafccd995815944b1cadd09e929d8eb73c94ce6981421c6782725c12576beaef0b04194e1164e18217f299f9761ec59afae57cf396badd7757577b74b34519424c9471d44ee8a55d600a54740201af8e4a9a51af71b7f94e2086b84b19bd5dd62e37b898dbfaeebd775d1ce5a95662d8afbeaa65a2ad61e5912592a66496459aa4bd913544053d6820296b897b4dada41968fc2868b2549ac0fcd224b6e09a7e4c2f63828208b0f79cab2620899c9d5caf2a343c8f2104bfcd124b23c22da102f4f93e02e4f4b004b5a0bb27cad2d96e354cde2540d25cc32fc9982b2e8476d8f1d13f34191801eaa630a7a48c052122d765ac84d91254745969e67ffb82559820159820059840059e43d97089432b24bc405f00ca3492c3392244fb3079e7a0816256de654d1069825d66d2b19aba0a110dbb6d569a3513dc1ca0c9da8603533a4f1420526ca92264e0692e46de09e883e24a704b248292bfe3acae2789029774507e713cdc66723454c23432c68ca58e166649624c9ada560bf2d7fedb2a2a11352dba55132c4c20a13ccc8100b1a2be44f6b518c8a14f5c931888c778b98535d4ec98dfd9a75dd8f76142cfdd87fbcfff056356c75bb3257587b50ea63dbb024b2e45431629eb7e7bec874b1d67ad56bdb1ea4bb090d051b528243f1c79c60b763af3fba07693128a71111713cff52804030721f3601caa8c85634892cbbfeaa6f325eb2f66b5b5263b76ddbb61ecd6a56b37a743a456291383929b6c9b202028997dfa48026ce094892d7b41933320894bf6dd598533dc13ebf6aa7339ffb784a6d305bcca68af7a38b48ff453d8834182d65a38980526b3f9fa62cd647594d5937e6b924da4089c8f21307100896458e4d9e4c5835363799e2d01ccd25cb9352d234a230544567a44985c6641a8a3037e0c1278b968e5acfd5fc11d46a5616811ef176b39aacd5deb5e3c6de8153309424957b556a5849514911916af07cb4d21e8be501897ef1b808e4b96262626278ec382b858a5d7f5bb1b699adb5d98cb69aed2627056bcffd71d005c08798eff3b83dbee3fa2832310662be6a3800567efcdb72688c8d896139e906209e78dcc7dd71ecc6dce32b7ff1f11ab0957bb7865f3bb024390560e52c27b272167c4466fe480f961e5ff9c4446a78001e007cc407cb6b00c08f7996fbe8d1e33ef800fd67790f1e44f7dc87e3d0fc0fcf4538347148741f7e1ff741f41ff8080496d09a713989ee03239111fdf8880c11968bf0911acef2232bef7178f2fcba30f7f8bff29717968b5e43d7c0b2d283b572e1a9860b4f3d2e3cb134f67de55ecf5d39e8d6708881985b4891502485e229ee019e469ff8292a9ee8f21b8e34d5f06f6b4913e95ff9b7e5508aa9a81cbb3ba8e097171ebf7fd9712fe21d46231c8a1f91ee4727723fc24764e28ff0c0486488884e3a927ff4fb888978e7711ef8c80e8c4474d2bd1a2e12d1415fb94864888870289e74d041f77c741f409e7bae72e1a9a65c78eaa7c4a8a4748c174f0d3b21a39f74d1bde87134a2cb7136333ffe724ffa7988a21b47248f26e33c9445294bdbe8bc369cd564adac35928f5eb40e264e9889366cac226c345fe42db20eea21f401dc01a558c0d2bcf09c99ab8a6d527e7d77a8acbc96337657cc7d697e62b1d7195deecc733b77ddc3616c8b2bccd5c83cf1076338c2ae13b2c34bca55def7a328efffe82f2ff7a2ebb15e637333baf04452c1687ee149f4e2a9c17161c44bce2e3d41cc26357590b3ab9d6027648898af67a92c95a5b214a7aac15518c585b919496a65a8f6e43317ee5fe6925d78e2683c308b2530c8d9ada7ee309a2c8fd96036980d66836d01e5319a2b302c6049fb126c11b29cffb02fa20cbd010d0fb2e05af18aef2a9dd02e328c80064a4813ab95bfb9ca2eedd215db64dea480364c2232cc62c913597eb4b36c82adb85b13378b0956fbd7ac596bad55e32eeedb529714b40a6b0517998dcd2ae5f2e358f1cd558cc14893cae8c260488dc1781183b9f1a4a5523c2d866a292954460fd2d5bb1b6b5b6d389264b3a9dc6d4692e4b65acd5f19e454dc4de6545c0de99f570fa5c97b9330a7ba18db8f77412c168b95712a6982a715e4683c144e96e77278b8b0e7591342abaf26846d6b8e743d57b9d96b7745e865123aabdcdd0d92e2505f2ac116b93e62499337937de26fabd96e369c2d4772aa5a6fccde95e9019ebcd7bb83875f5e44f7fc05b4c37d0ff07471a87f9fe4e4c38e9828b628e3741c6a1ce2c1f37b229e5f7c44a67f4474cf1b13c9fe1f1f01c1937724a21f74ef171d02de41de4147f28b8ec43be817fd07efa027c17609890c91eca423f1fc1e4976d2e52170ef390448520c8b448608e9d991dc7b8e84f4ecb00b35e6e1def31f48cffaa0fe28e6b9a254254d2a97ef18691a5dbe57d294b203d415c140ccd7ab0e1984880ef2889edd07d041cf301219221e1c8aa02309451cda217b0ff094ddf30c233922e3830723013d3b121922a0673814ff273921113dbbe7443cf8884cc4443c3f3ee2ddf3232478121d9e6aec8ae81073bf480ff1f40bb93a0fc5dfc393e886e24187f51de2213be83e6407612432447ecf9184e245073dbb0f9e5f8ce43814718807d141f7e1febfff3d75ae3c19e98a0e22892e3c81241876db3e73a6d5ddd26498019e6c27d6db5c74f15f568db6d330e8124013e8ad025b9bf050f4947d5b497961179d64d961cdca5a73d56a56df2632ca69f6766e139e7b37c658372eced0683b9ef278bf8ed9e1e5e5e557f9fdcb8bf7d149a1f6dc50df737885e2e1e5565092bc8f5a509252767037f7c213e9c2d32f3c79179e542e3c8d2e3cedb8f0944264474c142c97d31fef0e476488807e7c243be8473c175d8261b7996df5e9e2b72938d5b68a3e6ea052d16db59d721a5d517a3bd7735d408fd5b48b5a63bd9b14d9dd96744324126ccc9e67777171e90f40204764246013014b1d08288a074960abac157dc86fab96b213826d9c263b1b08f4a9117e7d4590a8fbdce0ba946399abdd179eaff4dab53799bb31e7c8b21ec3fbed016b69c46c35b310b049b64950516bad156bb1d90a36c93879ab94c618638c3146215228c517761a1a0a6c47dfc15e71e0b8bd5fcc36a55b88941c63658104a8f10f488e8fd0247ad4729c9141ff4039fe6268433fe6f80cdf014b3a1e4f82251928ca7361cd117f42cc804d3a3370d36d45ff356b5bd2b99c31b75587d2c753d9e5d079c45fcc1d7bd80de9dcb6e6aa068daca5e1cb23581a383480f5cf6bd49c00b2c8cf70b554f4212fc3d554003d791d574b027af29475e31446dca48a1ba31c46134535491ee51715a2c8dab5916127a4488cf45fd662526f88f1ce785f1c411a1be388ac5d9ab90b73b27669e46ce634acbae78e6635adf6a411ec9724d38945869d03626ef945861de5b2acb197c80ead10fed8a881313d0d1a78467c3d887c87723fed0559fe863c0eedb5b91a5d9c8f1d3d46bb64710ba4f9d1e2fd380d18cb1c4fdbc4a97a7629741de6fa181fa10ddb0afad0b010b049b65ad2a50eb6006c92adbab42d692f62d9aa3dd9d96393934c488778ecf1d88c1d9c2dc98a60bf6c15811f60cdc575cc95eb8688324b22d8af5d5030061a274bb0a8611ac6820a48c8dced8ce55033bdec6ee81c29178a5a8da215abd6da4da01023b66065c5114b5060a4b1c20b25b565051654d4ce51796061930c31b469e20a21b8ee97848c1ee289b628abc502820a143869824d05ba30c1146e2e80b30124b8b80207e6b8b8a0e4931953dfb68aa9ebf2df5cd9e4229d9d802cf5ed4267c517a62d164b4b411669d24ca0a59aa579b4986d4b414f3e5639045bdfa11c7092dcdd8b23234b0d7f5c189ae48a3f6e05866d3ce785d35ae13c1f956aafeb910aba2e4d4d9ac214d51ea7ea591bc7250ef3459818d331da2d126117afc859e462577bd02e746661b4e702217c82cd6ab25618366b5111b429aa24c9087b611a2e6090557902b96f91989b8a8009520896a6282a08cdea219e3c8f77e6beb0491350c8594e969760b4ec472110ca822c268026ca0524c9cf8c199e7b58b4a69990bf2bc72d8ea1438618a78d146c81c6494bc364e8d858c3aec1684bc82f6c9198bf6675bce8de453f37274767a4099eb69686810e41789b9f8e87780282edaec574a9d32e798340e2d74c68319ad55c401bfa402eac052cf9a49b9d0f2ff9114e355b46d5113b290b0291f1dde51023a846eeb46d333d5778cefcdb56397edbbfb9fae64afb5c6110f4ccf38fe381080449903443ad79eb1682cb530b5dcf0ebae786aec798558bed405706b24640068b0420c8b11be206c8bd5bdc3190245f973f883204d10bcbbde2505c8921ae9a3021c3c91672b88e3ee862fc706e9ae593219d9bc310b2f4353abb10899cd8dd8374b790c810e90e3a127aed48ba83de0af140affd077a0d74f91fba83f091eda4612849f2044fdab5cf7d31e2270dcbd4138102bb07745e711028efc426b4d71c95899def3c0894cfdb4041b99efb25c99e57d9f53587ce94dd036e3ca403771cc7818338ccb0ebe7f9bc8dc73b6fe3d37361be718bf48b18a1f97a1123366737f2c933cea174342ce5cc24d9c0526584ad81630a47d410ac0da99233d2245152254d9d03a1a491a846499354a1a03814aa6bdaf3be6e75ab6b545155551d255246da00b2c8cfb8320ac82251b0ede01859d9bc99048002e4c8625df1180791906b5f58469e37cb5be70051eebc6f53dad30948c8f36a79be2f866d9f3887199ff18953204bf6208d3d7638c03c33fc09e1650cfbd5b7f3d8f98c6b6f91d979abda8b56d2748965d2a82659be72572a5992e50c4d3e754e1777a154614558e992d3de0cc37e91d539b151339b190decc22b9e189175577b80bab961b15828146a4ba91191882ff693aa962a527aa3caf2a64b61b4897ec868d693d862108142c4052276781a3022b04cbb5a5445552669b2cc1ea4a50a0289592a934190607cae5569da8d2b2cf78548c8f1ca4caf0cbcc2094d72644953db8c2555b2a5c2df8795a5aa3f60af7f8d424913bda4585ef1d141962da740490cc3300cc32e9da09a9d01faa4ea46ca782367c41bf9dd94cd66eb40c4e20a4e50372ed8500ffb22d32f32f0f05324e5933852c6202d6fbe15d2e7da194fdabb11b24829a594fd81aeb4b95fcc50625176a1c294af47e5b2ed82b5c5ce39e7ac624eedd9ccae14a5ba5cb74b730c80cde8359a922b845d0ff5ca1aaccad55ab9db6941bd385a839203dbf4d26927b4d829d3af11ebaa83232262a311961dbb9d6717e69a9560a3d1e06a28e3ae3bef866154cbbaf349206befce8d2d78ca26cd0eec475b8fc618e14c28d8ce6fb8262e32473755d8502aa40466020afbe11b03b487e14b92f49ed88983b4bc6b4c1c4b5c9f1807cc7ce31aac960c7642b2ac1be388a9d16a2fa4442cc27e36f71482bd700826946a2fc2c0b6940cd0a56e42134a85525d6a9ba1165aac5072ba84f10dd6c1d7e70df569e672e786fab195c26ea8f1909bfb32508b2d3c9065a0165b7061cbd895815a6831466eb132773a3714d6c6369c0d4f43706e1b8b75a254ab602ae01be8c9d7d8d9d2a5f9e672a48a0b8c0df23769bcd0227f2db433829d6f89315e2d3714f69b33b8ce85a716dbe960351dc50cae6d30fb422db6a8c9f1f6cacc0a93f66a5666565666ba14bfc2c4004d925918260dcdcac80b9f1ca11c3870e0d0119281c685b9c55a39bae9094d9dd118a2ce15d9b651c3834748870e1d3a4a1e1f28350c2003207b8bd51a0adb32c2421edd580f64f9b5a884e00980a64903bfc034d80b2c76ec2dd2846f2449d21a2c1a6a0aa4a113c27dbb5b9e7db5dc62e78c475032470932e77684e2dd7f3b12e4be599edd476072aca78ff79337dbfdd88046dfcb89bcdd2bd711b75d1a795ea8c5165ab4d87eacb1991cdd8c6ef018b29f85014b1176673942d3a481a4dc2114ea335d6c8ebc81a61c373295b520902ec76761748d4d6709357244a934398652dfe826aa2616d0244a415117bdc4d28f70ba54a5696e396e7260f99b3413469a688c24c9c37c268c12f2d74263a469868969cc86694ca431291d0f7deae0159a1b69da66b89933e0cfce70234a65f9152f607b3bba1cb0bcc2822cf23bba1d56e20867748339c17e386068a469c6576e566cb2fcb75293511ef1b7c2ca12dfc013ca859214e3c9de11ca1d756e6b4443472d0884469a640e6bd48a339b2224c57f5afe46ad510d04220408645e7e0406b4218c2e6dd247fc76b39437906504062c7586dea8469ae48d24c56f64336a4120308fc418b520106c14c6a8a64ba64e488c38624b9bdc18df604cd88f667c4346e6be1d8fd1a5ed18a713b261938d31f774c07c7d90c6018331c1a2e04016f91a960e9d6b770dd045fce8cc174a8ea671f806df64b4a626d32e1e335061861b26d8d10d04e2c9231cecdf888c5118f04a4b941addd8d01a49ca6e678dbb9b165dc8dbd5725551e984a888716bee2b44d6a236ed495ad35eb4c9b5068eeb8468afcd6d5a6c41855c5b6cc4198dd19e1c919133b2e9865cb9a53d194a6155d4604913a7aaa31beda39b2e5d597e34064d9657815161a24d100b342332ba04b5d022a686cacb0847051563450de6a2850faac89fca12a31c0d25a74b5f8e9b2c3f949c1c375dfa264df6a24b9dfcd50823cb1ca42bb78a5f644db340d6cada51c28092d39e75c9db3f949cac5583d5254e15372d6b61233187986f088dae90255663a11657d46425d88fd6601c3035548c3619a0499d108a5b9260274684fc8d6e72d0e40cf3a09d264d28154ac50b078c3c69742349128a9516c684fd4429514a9ab0cb6397acfcd1fce19b2ce5a918f61bdd8c6e728f7951c0880a53be1a90c617997822244edfce58e4ecca565fb5656b22eb8474f5f332c626f703e016248838d08a1f7c2177ed01165cf23c96af0bc11d763ac8bc3db3af95eb2b431a2696c85c37b3d48ed8b9adba0cad68b2848c759df8f97407e94fd758d89fce1585e0327d7742e8b52716d38e5d18c5be6ed3ce1c4cad6e934612a9249a453926180182c1a43915076da8ff3829a870b1dab16d068d862f3254bef3c9d0890a8e98464c4ea33139ed4607ebe856a3c2eeeedab506e97a6c5b4d4ef3482874b08e6ea85cb5a9cd39e79c7376301a34e4b9823ee4e19b70618cac9261132e34314295211032641551935945b0f28f0c5945a42057cfb682ddf5e0d203e7943de4fd7882fddaa55e611a115b3b82e6ec576b47f890fd088e991d3c388824b5b4f7a425ca306847c810385141184e8e88940ee91a1813ac0ae8c9df80079f2caa8dacf674694f662f346ff4db7633970cb5a207751e2296d184e8f56a806ac06ae093e3b38bfa49f428ba0f9e8b8e91fca08b2ee2c1f3df07d045f81e786a1729654d96736563bfb9da5652a06182112a87859cce450a5a85b502ae22fe91e9fc8ffc6c254d188c24c9cfc776b8d57ad6ca5ad6d286a72aba2aab1f2b6ff5f9584a2d4683d1ac686e0a4dab868674551ea4abe86e75071bdbf8db44ac556bc6bb579dd8b5b77629ddf08f1696f783d5b29aa161b53257035bf9a31367e674777717e9019e44c7c9f2313035a95c5193555d26cd96237f61343411ef20fa759514d2692afeb6d656d3f2c3d352dfe7efd3beca95895a4a9a280e4c8ee692f2f2b2e3f72f3fe9a2d0bc688443537422f7222849f71313215d74113e724c6b522e3cb1320662be4ef5a44b591367e6d01af9cd9608b3b1b111a96038566039980d576343a21f004126dd975e65d10532728d1ca6723595961a69298d8cedf32e9b0bcef554686549538aca96f2e8ad29d2e5f156aba5b546f054371717179789b51c1cada5b5b4d6ec8414c138d2d552da85f95783d1561a8da7cd68acdc7209f6db52a98943f5c740cc5409984da8fe9e5e536934ad356149d30e69fa35fc69abaccda452a9d4e8a2bff0f82bdec1f370a8debba27b2722ba878fc8d41f196124324446f78e64c7ef45af98c89f82918ceefda311ad91261e979bca534e44e5293b70a8fede73154c6d88a89c073e32c2a18a433c787eef03e8debd83ae72e189de98b7546a4b6da91149e5015ce7764739ccdc674f8f72bf0ee4eeb0c301668b8d5cb94339bc1094cc710f22b91b5f75f842c99724e60322c3202db106628e6f2e5e5e3a067bbf20f98337723920ea6023676db54e14e24b8d8d281c5d8e4497f892fd20218b95a2d452185de067b320321cd29e9de2908671805ac45f760dc4675e4b13867380a4fe05069d469098093840968ea918234dd1e50290d48f2e1f185d72c7d54c12e545a3b0f035c6968295268aba56f6d20a16958591d5b4172f3331a2b0dfa7238581814062845276b21645a5ba04af770a989854c2ac26c753fcd1ccb517c570bd9368c13bc72c8c1c333172cc6632a4304bb41729850142579f781d9409ccaa4b1f552de9124a8ea7305dd261f5842ed126786ae8655f9238a1ec40c892dd28a908da8b19a6a8145575299e2ae9d2339ef8cb72641234682f8ac19ec2c0ec469a280a92e2615c72fc2885c931d21a3524d04fa002edcd6720f2a10d1013a8c0841072b573944f00e57ecf289e1b38b8f626c4336e4b35eec10e8fe9b807c34410c220125e1a4268e0ca2106fcf03fc441804ee3211c32c4210624c97f92fcc34ec83370650c07e1b98eb707ecfd47f38fd8b94323e0f3799aa70d1d3a72e89841870c3a74e49841061dd7f3d0f5dc86c7c683b48eebf9bd19b8f27110340ecaf1d02be87e9fe11f056507c15fc76e1010874487ff70488471805974ec17cefe19b9a076ec7ecfa15016ca4259f6201274693c74693cc7fde069d038ec3e1f1cd7467bf39eabe3868d9bd2de7c8deb450e7634b0a54cec0c5c01cd0a14e519772851506e7de77ef0101bb9320ec1c3d3049a346f73bd21083110edcd531dd88f340141a56907489a9f19fe26095ab99d60e3b55778bf6720bee7ebfbe40b42f8eb5162dab3ab812bd3378d141bb972ccae87b20c9be7b890e75b16d02618059b791b5d824e48a0449ed026cf7f2979e6cfe6e9e58982fcfdc8931b410df267803c33ec02a24bdffc0e5d824ff2fc04bad4797ece9489838038da657b60e9a56c23d77b3e362089912b4b4c652a4cf9a04dee7bedf19847b03fdaebe700623f7805115cf2f74397be962cc4c024f71bd0a678ea0574e9f35aba8492fb5e9f479be0a9711082c318f6fb53daca947d8ea7cd75e9b9aba82d36f6bd8100946c95e32becba2e53b51761169f29f996e33f39858cf2780984fa78e92422a0e2ebf1920b08a4f3b8c5432c8d50ffc92398b07fb209088887f100a89f1abf18f1535ffe9344e886cc8c7278610fb6e6505eea2d0a0a0a0a4ad775af978804945146bdbd2f46fc381111cb38c93481fa71aa37a2e524d304aae55421849f9d10d809e9baaeebbaeedd618712210b7c77a50d69bb3043966c4686a42f4786bf26962101be2d0ae0eb64ab0c69b892440cd3a2c294efc61222f2f70cb9284116b8fc79126660c872a027af8bbb30f6b3ce125d8a4740b5f46351cf725e72b4beb2e80c64e9c04cecba6618b06a1c3cc593d568745ad081e9c0b420cbb22c8b27ad0bbb9d6a4e6c0896e80ea04767da937407b0246f3cd14b6740e3d225edc9a35caaa43d28e813d409c82257aa2c99c831b8b56259466738982ef5354dd334ed33b94fb5d3ce013137fe22e660da8b33e4184466929b47c8968b1264216b97cb9d4dc31ee39c946639590ecd72320a73f970e7f3c24ce3af5b64e6cee9264467bbc685ed745b3c6d996782a51ad0b35d9f41535606cc9124f94f7b3204bdd84d7a437dee494e355e0859b232581c939c234d9c153dc41317134f7d89d073f495de900f9472aa30ecf7ec1f9dc98a74be12e69cddddb203234d18d6817191a6ce0a20493e062827521d296032e6224df0844a65ac032305fb71314cb427391517d35ee78fced0996883f62213b2a8c062a24d344ed9b5246cf6e9f2e32e345c3a303010489437f9ebc0d078a147b8c28a4f15d6096e89f6ba8bd86469e4ce126d9aa80e4c97208b0a4ca20d5a87898e92ce922c3f51d2e4224d1477581049f253cc181ab923832c539d15747777bfb3824e0c3a4e74a4e8544167208b3c0743674e676ea28ff80c76d74fdc8da70ea02acda15cec6ec8deb899d08181406c64f94e0c04a265195192244344e8915aeb0df950270ca61425493d04fb75603a30cd85fdb818cc858be9d246069671b1b70b6717b9982c8f9d5e78fa1a0b81d928c9f345b05fe70afbd1198cce64197dc4df685d2b50549852650b244cc45272d636072ac07626c7b50a9404d62e9d737192dee0df8d9c85ac82c441d17714744d48b76deda050c43c6807dd07ed207c4486088824ef0308536b6510f19df7b5802702542aaab07f12a5a44b427899ebd21523d7147b1fe33ebb1cb837d7e510dfb954f529b556d577ab9d19ff526aecedb5c5e268821e5e9ac7c0b9c1213fd2d43d6ed75f8cf829878d347d6e681cc765c3c6a7fb74d7fec3a7c205d81baf53802c54e8dc38c68c0dc79b233e47a2bd3b12d03fd7defd07ed1d06fdd361cfcb129e3e179e725c991bf7f287812419fb8dc707dc805c770e7895dd10eef3b5b92e0714941b378e62b154d2a6a64b605b26fd69d236b7098a3b8c26c96bb755aa4ebd100979bb5a34706ce1c86a8fa5a279665c6d241aa58a37d087bc6a6658abb02b73e20928a4920e12a8d8ad1b39da90fd9356f83cc1266108aa1b449c78d3293993c0686c29b171bac1c68972d646b687d03e050289b79fd0d4aa675e8e576ad99df9924a6408ac5cb53e9d4d2c03e3c385ad424ad1a816814ac284e661c6b296f63c9ba1155e2091832c804675a352a9a4ac224b69051712060291b3db90903bb18bc8fa82a5d7e2183a7ca144098def8863bc69d54ba469499394825621adf8e2e666662d29d82fdedc74e98baa3c46979ee53110d84faaba04af688218f2955dda1b954a352110ecf2dddd98c539feca6a07bb42eedbb12796c597e801295510c88d2c2fa50c34c5cf2cc28a610b9f27d824e421d01b401594594059852c513fb881ca256676b31cb3cd6252043285618992282a512240e984607d650c4c69259774098552d47fd00efa0ff4dda51390e50928a4922b55da9174281e4020caa238c834fe20ab0d30801c9fd2336e92aa2c627b2db0cde862e7481789b2f1af73ba24046c22515dda644aa2ac8ddb04a5361e6f031b89d9bed3e5601f31ec6eb06fa9582a5c4137763a8832862d3c75179eb60d4bcc082b63605030aaa852613f446006fe7cac657d3e12e5d5f9fd80b5ec6f88ccf6d82d3285f042f13384452c55edb5871561bb0677abd53032b25828140a8562bb56b5ca06089b56d9c6624a7e91c94e1f23ec608e5ec45664cdb88dace84587ceb8bdb62ddec8edb213b2bdd26bc44fb009701b8c0ec2bc2d84beb9408c31e220b2cf07e9ad3f9fbd7f65d91773f6ed555620ea7c3786a9b0edfdebd985f94bc957362796cd0c222167175ee1842e64da5d33705c591c5551a5ea9995c41a8582120aa9a2976e7d65338650ec1811167bb5b7e6ed6617cbd78548c04a9b4aa552d9c70ee6161bbb57ada2f123b66b2614f66b55b427792b676868ee27b6c6695caaa492367d6e63ceda1d89767a24a077d74eff03e801a467a8142e7356498d3244330000000000f313002028100a8783e221a9682e8bb1f614800c7d9452765e2188a32487511042061962100004000010011899196201c04fd21b3fd0342259bf8a4ddcbc3b15c2d7890e5ee0e7c9adaed3cd28e45cc8001483a2a1a5e682d5ead23823989d9ba22b0b268185634609b007a67cba32729d420b6f79be4becb9db9fe70af230703cda9b0d2a982f3ae7e990c14a68e72e29289694539cc9a2f9f86d2b8ae00648868b16e5c618ef0b654631bb941148f527b1b2a24240ea88fc84473620084dd04fb03fe5eca287575fb0c20505f9695f9966249e869a9d0e6cc93d8d6de311b66fb5a26b19b0aeb7a3521f3899bf345a5beb39c4986358c0aa93c240507978ec9f554c2428a97c0d60b05884e0de98dd671ebd7bd0dec5dc7e1c2a4cab206459133406de10dfc26d1dacc4c7452bffe4fc1eefce64723e67de2348b225bdfdc69af501d8b11525d12bfde20ca9366f6746b169305279f65fc357b1abd44ee3bbefc3ddf0a29aa2e10e586d368024e7217420e2a35d0a2ff0777f98fea7fdc0de419dde4a18dfd6910fbc8ee6efdcdb57e14cd7bcd7cccc34017c1f2536b5c045360b79a8e440ece9defdf60bf5f116dcd93ae84f7154682f410d7d4a2997702188492c8e52054508be2bf212689177c47c9fb365d2b4e69b5314f6f5150b54f0fd033127a20ad45c5f42255b0e0d00d774d1f1da88a0768722b31736a626b8e75c082c408c874b83888f64435851a8ac98ed384b9359021fe453cae046218002a1405a047a3c94cdcb46e45d0c1854a5e4d787de09eeef4d2094b3ab1f0933030a58fdeb984e27c20007bb21719deee965e104ddac9ded1d44bd7757abe176bb42bc5d24052470a543a4846062d900805eb5de1f2470e2489de4aa10f3ffdf30d8f7a8ecb9607de7ad41dbe027e168814f3b94d414193c34ce775d0561dc78e5549d2fbeb08281d84ed5721678491d7b08caec995908a6037704bf2aec376d07247aa9578fe81918f381deacc2a2ed773bd94aa46738b42ca1cea9cd0229d86f3cf8936ac98488135daa8ea5c27768924f82c9805008671dcb26b1fce419279b101efcb925b6d33fc2d52c8a52121522fd08889f082bc776e7285fdcebfddb97932c2448fb84c15d1966affe4affbf39885c2ab4c7ea24ad810a4e2603922b2a5dc741c33e54dfaa73569dcedf48a6693f916dea289b64a17ea2d6627844beee12a6e39fa955dea9c8d22bc92fa577afa47b5b756b550221030699bffa19d38e1de6f3c30de8e8e7676a190530717ab0f93b82ba59b348c9d4b27799818dc424760b9632526187057242054300a8a0bc6391376f9677508ed73acc3b823534b748f43aa5f9df8e4ad417ef66cf56bc86f6eae430edb83acdf9eb9a76315f22e20b15cf52de70d0aa792a08778bee815295b708e0ad08131654e30a5bbb2eac53528d8c47dbbc9593ba0e8a65a8b33d87540fcce808c7b003245bee723da3bff15f36a9993bf21ce61be23bec48b45bcc73d731a91ae428b14c411af6ad79aa7108dc219a96ef1a70bf3765928b2fed2ccc657aa784576c452211e36595576ca71a5b7775497e713288f7edb41318425893ac1161f2955f9a2220b03b0217d183bb06efbdcbed588c60538498fac4130c9eb3d983451508204fb08e796f5455fa84f110548cb639eae2bb593646a8f848c9eb33329a5329fdba716b7ac74ad08b396fcd70de9f2a272abcc69d0056caeca44cf6423e2b6af901bede0e115e002456fe1a29a162bca8609fd17501193c1856510ecad97cbedf020b9d0c503416a984d205e41f6c1b73183eb38cd6c7ad70252206a3788f2ac884c88c7ea3df0dd976a02129caea2183838a92e2a5423f11285d4eee8294491be6f67f23fc866488e22743be9207d624ea7b92623a1fc32e23fd9a29d19d4ceb1bbe21708ff53c047cdeb99494f6390c4a58884f185de516461ef8acd2818ff277c9bbf4531a8a0cfa0d7148f0e89be7cf7c44cde411049dd72f6b71950d63ed3b69d895f75d8839c54c5b67f7e9dd0d8dc846bd3f7867040a8b82237b0e19b126473e179270bebd62c80a772fa89c4fe1a8f6dad4a60a9324192c2435f2327df77418979f4eedbd98c194f8ba0f3c7477f4dc4db150f4923c8399e3242ebda26d5a0810345b322ba254eccd87605a271552cbc883340a444ceed8c45a1c4fcc34436eb403e2f68d920834ed156642c516c5989087010a073c8db08379bc0670ad31291e86b7e3f5e39d0c4b7014984efa0c6a4e81be44093f344980bab9f57c7f10b82dbf3098cdc55ff1aba229b3ea554be35529759c4a2a9f680aa719b55eb157fd8ea307998481696dd4d7c91bfd790c79650061890e515bf8a2fc691ab98e683f97b47ea438eda58dde22410b769ad8042cbd7c6e77cd858b6d40152c26c221adc220e2bf0b1a68e00410e099aae984c4da1c115e598c4b45c4b37fbaf5e1c17a00a6350c0983bc5618995c38ea4d154e40a57e67f7009440f6b3240097fdb89581b98a9502d83c8c7f82b70003374c4594ddfe1694b39287960fcd3996f6b6ce332bdedf21c878dd7eb36b0ab4d12b5c7f3634e0431520f50305172a95f442533e46de0d3e19742c58515739613f099e3ed46af67892af6a27c7bf6f7a64acdac2e37a1b142083cc5b9d18677904b1cef9ad8d5c9a0cea322872ba5f663b3e91912cdce88c0fb69edbfbda775b77350d039249518ca1c6b91957b094a8a8e24c172232c342f5cefef0c84e36b125e5840323b72e7e1a65b78e1f20594512c289930d10de8173910ec13cd72411955cd8a968ff159acb88ddc128896ac6c99aa20cf31094a8497d60581a4ad19751691c7f538ecb6d42e3fb269776b077b4be795e41443cb7d2784492737eda721068e8ddeee4ae36a7b33346c43eb38ccc8879bd0043a24cdeac4d796ad7386044261513501464409cfccb847eae1d4f361bf10f62ef906c1d2e9aaacea8f3b96ec8752273fbf087f9c55850ee02f48c964fe2d03587a380a7e7b1e1507d2465c308ee3513be4e57d03eaa797d65ed0c533cbd1ed2cfcb8a28eed4dd6fb401d625f993faaee88add2b7e89dbcc737a3043622cfc8ba559b595cb970859441e7457dd2d085101602332b22fd32a425722e805951c8d67dd8b22b4cc0b5984ab5a80a434c540390edaf47e49c3d048726a9edd8563b0cc7384a94c32078a3be224ecc9a11b337dbcf35a4249d7fc3172edd3aed5cc46dda0740a9c5ec07ccc843e26b32112c14c7e9af8bf2ab4a930a89400b5c08f203667b303e90ead67b85dd0f3ddec96a443ca2a69dd89c1e4425af00d78360b7a994e9e59835dccf155709e97ce0e94ad2f7a96ea1acb05cb1e431c9cfef08d71ecd17253c047b2fc232be4215da8f6e58b911e97a6f131d0a9d0c9cc4fda2b396378e437893bd695dd83c4d51ba63a162fc644fc73fd2690e38706e444fdbaebf5743af7b06b165063a18fc4e6ee86bb42b9d135553c4b885dce0fe88b444ee1cc7abce5279c44a3961d43ec98a5d4e5daea16406fef2fdd3e14516e668a7619c14d6c0e281b435a87213ef9ca56585a6306ea2feca8dbd6c228b75b78f792b6a695d8bfb7e86bbab648ea79a6fd27d8aa01d5e5a60b2162357ea25710efeb3efd47c5211c064fda2e65f34d402f39864eea07d7a63a9b01e634f9e946cf04471858ef25054c0e7436c660572306d07a8b908a27de65cbad1bd3e5b034bb89417a0d57902d8b1a0894c30a797750d27f4e5fc0d63ce589ce200cc341bb34a0ea04d88ad592c561b469d31eb36e2f7db7a968ef98c458ad5dc5df1d3fc8c68d29345a08d1cd548de93a38d15be099935e810f00d199c9fec66812307c935d4fbc6b0f66cce2885ef0bc291fa19aded14315c9adeda45c011f77c2406cbc9776d1356f2543367640a006cc398a60e59ce6a0555365b77dd0c4d5a89488b4b113b00aa09519f49e4b62bd11cce8fc623cf03c62e879a7d2eccc6e2f897abad1cda3a16854a2d87fa1bab0f3891960ed64278ffd8d5bb8ed9805b32463f7b501f46947709eb81f3333c4315de0b31048832056658c3c79aa741c1365fd653dbca4896baed3b9e271087ca897b38ccf47ade94d73b5fb6adb28d273f31870b5d5a6c736ea6b7e8c6a7f718cf735e0555157c10357a55d701021a7ef3087fcf492960d8ab388fb0f5b4e02bb42a1fc30c262823d0cc3c0f0f7a86df3fb2e4c900d9d3c67daf8c00c01ad2ad34db8f29a26a64c91ce69dfcd50e336636fceaa110ca61ebbb5efb7998ef742af221dd7d06137c17a76ab2ccae37ad03102c12a7e73479f5adf628e33feebc51659fcc3f4fae02083a79e0eb766aca0789080ea4ae9a43e2a6bfda7ea97795c982d287c1b31dff77f91910008dc9ec28dca44ed7de5d3169b10615d53ee67a0b1c443f434d196b42ce040040109bdd5e2f11fcf375b3dd6d3b49779bdf234c06fc04ee0469d560cc943834ee8b27f106a102ecda5bd47e1df05eb1e2ff5adf63d68b5987221445c9192ad97a9534b0abc0ceba3a994eb85b1a8f1d76aa03d10372a995edc682beb3278761944074d0259da8074bb479b881f8ee4eb61b1d7de436976e3803ff595afcdac5b5497fcb9f91cde9bbbdbe46e4657339c8da46e4a9ac37da66832758579766ecb4a8d9191ffd833459eb0bbfced51a58afab7ed5b03d86b3223739da6bd22f2726554156129c49f1710d45d19e0e98a397df57b08f14a1d5e56c726c4b91e389ee2416cbd7a9f6a7f3ca0fb675e99a145fbcf6b4af22d30f2d7247ec71068230c686009c5456a4f0b6a841b0961ed0677eace3ce19dc82e2a622f83c0a2381f440136b3ce4cf049300e875504a03b51d4587ed7d0b82bdf29b0708bf3185aaa49847208dad80f700f27090438a51aec2e28e115a608d2d801d55917623a871dc0bba70f44ef1747f2c46ebe45985b3f72f170ddc38b680e4e23b550689c50ab041a257c2c14cad8627f66803733b5efb22ade1ba83ad9772c83943a11cbf9f2548decb51389744bbd1139184e744161cef0654bc0a075bca09b12ee29dd2cc74eb16c843d0057ae9945fbaad83c8ad6380f2eb872b38cc0a9ec06ba5416fff29b830e4616307d753664ca3ce4fdae1c70c738f8c3c2b30291e545c5265e1a1c7c923df29a48284450d420de36a97299d3e572513a54af745386e4f534b3985c38af83f1627ec94b2216a16c78524a44d76015b0f4d40a5a07330a7af51609fb937983851f7c8e18bf249617ec54c5aff72420224952b90ae8baad0837a7479df7975a587dea09d4efd4879414e572537250865eb055b7b8baaa1bb9f8e49e0ee1143b59f1d4342ee0e09f9c06e15299c38b9458a5455d86615a78bfd2f01d057ad36ca153cc9fdcfb4b904fdaa7b0d05fea2d52787041e7e56d808eff5f5eedfc7ac34e596de81b2c03bbba3208ac537bd2f789c572467f7cd6452357f480861d50e7f6a65daa69de0b80b04a235f1545ba1a5d6fb9cc3c12c1758d4aab74c36502fc8adfa9d7722d2897c440d09d4ce184a26daf58fc045d1e979056f9eda46c647ed8d319ad80d40db8b5f876bf02496fda1a96cf0d1f521991ee14d7b33e53bc284101ee662bf208dbca97ca34bc7bb1f7578faa3ed4cdd429543826399ec78d8e66ee948720faa1b47da269e3264b170cb2b5c222d649e33c21322b0fcd499bc59479c4367067a489a1c58f71dda0ebc8ef9e326a74930ce0ecafc3625d4f60570b4f4ecdd09e78c482326e15010a744c0723cff8104d9fe06b722303d78a6f5c93ecbc13b1a333a33a9c5e8edc7c19b6f8d75b568a977ae82710b29c90e14b51345be70cf91f76454c069527e3063e0e8ef8610f7d96801d058794780443f7adea60a706cc5572bd3f89115b7f8894a14c1706b8be82d494ce00be02c07462899b08b0a48f79a88451dcbac39038acb2d3d921fd74498f1ca76bac45b61f57ff52522a02594c512c1a8c347cc27c27456e6d09f41ab7b36ea1385285111670b7c8a4f5435b866172f09573c9079c2e2fc741c3793c64313f1c1704b6863da9c60575097c71bf87c4922ed541090db9dac45165ef12703e79ea0a60414aa5a0a46a0e3d766190cfdd7a9d8404b2515d4d2da2140ce080fa915d981d2514c0cf2585e3ed96caa0648d13e2789b9d56106efc965d12dc773a5877c7fc8e4065e911ea78f9d4884d230a14f493638b0b4670ab4e554d0e73dc4d97961abcf846f9fd731c6e58e8b6c2150f2ccd21860002e781df60ec61349a3bf8b4f9b02dba304769e4ca8184091fdbe503d39a7ff025fccbd11b905b8d1b8d7169f5125b7cb1905cb7b706704581a80ed35b9db3a69758e3a86a4d4cafab286fb4e4acf9377797d66a2cd467576e0d85d1d8de4718dfb47638674c2f067e0e6821a70f8c1e2f71627af8f8ef77742f0f517249a18fbfc10328f06b323ac78ab34c4a7240ecb7553824c29ce81e9c3c690fcc0059910eb1db59d820daf5f96efaf0db5a7017a31c4df8abdcac9f8847c9de166185d1ae85a06eb408230be555caec70eb86fe99c09b937624c651bba716403259d4555513ca583d44ddd45d99848a72e6ea76202f23db4a127a02ba3ecc798f7da2cbdee916a43a04c1bebfbb467494b312b799e6b2d911393107696b4915fc46a092603a0224edd632769cbe5034c91b6129f8aa001aab64c713d985c31cc16a91103833675937596be258689ff2038fe3764fd6a30c207186465aabc1edbc808f64086f17d894648261e6f0a7815751b870806268472916d3def0e78642f2baeb2067e3033171843ad7511f44feddcb1a79cbceab06082a429bb5e98478dd8fd102a0be302a5d8f8969717c85bfacb71d385bd0c45f6dd066d88a17fab0b00db6a81d598fb14e6e41e40a184121eebddb9c48c4654653f2008560b6f65912f4e07e12a33656e60411eef6bf9a8dfe56e61572b004954b44ec5d21b1008b11f550743e0d1aa7005f56906ea2918c977896475c3dbb260f1779a963726c46694ca44cacabdfd96ba7592d3a6ed58d8c8a55a455c3824701202185443737fb77043ec91a1ff711b5c087ab1ec59c5edb2b4d291929307465db38aa7f73a5d794fb4bf76723ed866b8d338881cd2168076a55784c04579040aa8f258ef7100b97dafc47c3368cc48a35bfd0e19642e4a4c46a16e2caa229d77e8c439f81db451e905ed3e4739c7844d9464d1fb2649f311547d618e6d8ec2fdc124ae8734ad87462252c42b5ff1ae00298d29f043f4901698aee29b6368d93ed1a90f220eea95189b887c0a6e41f3da79042a5a381731c99a141b834010e984c0ce83808e1ef9eb59b8f1b469567263e83855d21816c37bfb6600eade266ed878bfe7581a7667041e3e8d64b29ee0a46df1aff86184bd976f53fcac6e804a513d56b633cbe62623d053748130b673581302cfc432f5d45844e706d1748b4d0f863b43dce961b863cddbb5bf7b9c50c325d2f3705e99b0812ee5a2be1c492c22b6889ee6467ba0d5bf171e06e714e66b96d37e092a715197bd7bd94ce41778586ab9fe8b37b28703507f0919e35aca93ea2ea6104e739f661b28ac182ae2321356c2b4c6f9ab38e7815ba46ca866db4c5fe6144bc29c1da820d711ebe33a79d14ddbd1657b565c6d72468a53bb13952205b23356e76a93f9b036f8cb41073bd4b3c107f9273e998972989881f97e52806af4c51405a0c5d7ded1d01baf78cab4d3db680a181562b9f207c6e0669f36edb3a10f3b67d100dc98647f67ab0c91d27f11cdc0634adb1c6add587957ea9540f36b52b8c020e25a55cf3a13b495cac002137f466dd09eff8bd7847c85e64d272aebe707648656a3d142b5b0497245e2f8c6b1ff25189ed881dea9d684855d3ada6919851231b0e0a38378034552ac369145095b5d0a2499efc8b3dc7ecee49d229efc26131732bcf6a0976d028995b73afe81884b04823cf023dc143d31153c2a6d5bdc541391a0ae4c2693b13bce90632ddfc4c03b163006942a0150f0664f2cdd3b942878802b36ed2a3d08fd9339cf74a0173e2175dadb7529c18b4d3e5659f9a2cab25833511b385a6e8b43cb9bac570dd0054dfb558ebe27be305ace9fdc87192ff520b74c014052d695dcf6488ee22bcd499866c9120a15d8a17cd5008da1d598abea55c1c19cebe71d55da485c528c033eac49c1a7b72456f2ea5bfe13c8fb92bf5216e93b974d1cc548a1a2c6cf7151644458119bcf07bd63d2296a80de404b47b6db7f8fb3238e9f37e92e11a94ba66f921e0fb10fc8f8351f99ffd4d0907bac4d4ba4168091be7760d36e37a67cb91cd158a2a1467503ff72fec4d46365fe4857955c14468ba50d7c11cd5a2cf365d2d5a56b200c775ee30fd2ca63b890c3a4aa0357fac2fb7e851999a4443a2d7428ff416d2f7d6ebbe0007349b64bce5b9e86816925bcdc01cb7dae8967bd3ac229c81b719d44f0d779ab91a796b6794197389eafa03b712eb4ab10c2d623395613e9a9ead92f2b4450a60ca02396a18a3fefbf09ccf7f62f3331f9beb949d24788e0a5bb71e4b9fc2c2d5965d6cfcbb204a3ef700a0f4e32a26309772874d30e3eafde31eba02f888e03be9ac62f78ea5c8110b8c54f780d0d2aaa4f1f61ee9aa2aa0cde5d0479672d6ee2b296614ed1b9acc6b317be70bb98d8c06b0a365eec909e629af73ba2f2658d6b41598cdc5473ccaabf614b8d72ef44f9a4257541eebe7e8a02214010c4269adbddcb47a145359fdc777c68bfb1c691e2cad914524859b3a47e819248777eb91713c325a85dc81407fa68cd26f50115aa0ec97ff646ebcaf5fe6d6b1fa3b632dca2dd4b84ff4236ab528efad8302506ef96f98382f998dac59a8ebcfd34b073d3d0a7f4a6139209f5a425f8df1d695ed25c9840ae1b8d104a3dc7d26b862d1f9decc61f7e73e8fa66c8848b448a124ae09a57b097ecf8e9b071c52fd36558f920d3adeae92d92273a7f9d4d38bbc043e86b6ce7bb900d58bed41b6b8c7b43e5aec50848f26ea9eea4f4b8ac7cdddf93d444cbe5aa550c6ce0686b653dcb420da4378e9dad62b5052f0d79dd9a87c4dbe742c4026f7fae4f85ea308a3aca866505bf18df5fbc6c5e5accaae9a102e35e91bfa85339e2988030b309f550a13e96df47229d85760683e2f83b057fdc5b4e23da18917d31b1b4e5660982e0491ccd3fbb3a5207548ae085a0a72159ba94e9a1f2a9ec16410e968e567542079a30832b784a33e36a7ee0ac6c819514243625e97bea723338678b8eff12fb914f658f36e223a17410a7a727847ad9c30bce6e2de9311ddf6ffda71bc03dc587b3cc07171c866549cfe001d20e802051f11c6c4e91a1d30d752cd7d9c62e76a61c4de418fd2249f7012812bc7f4dfd071e9cf057280f34ccd6004aca706087bd0d78b8033973ae5a1d946d54b2a3ea7d77f57353b20dd9599e178d82b1064d5759faea3c9e08623d6ee62f30a23652bd4a91753cff77063a4e9a9538e0b150014693206fe8c633ad4f3ec80487daf1745425196649167b9c0992842bae4b29718d44817e24055704f2c301dc070b04884e7253e7f649b1321bdf965cb7f344c0d1788ad527dfbfd07ce777d8a6a24e7d1161bc50830d55b5072bd8d7f20058041cde6c41d9fd60ff989c788df202684c2be4d9938d10908af4c90a964d246d1824fcc5a210a445ed4cb50e895b262fffc2fe8634e8ae60a5f8707da74982039a5f85929b2834670bc6866de7f6c3ccb9d2a4eccf2f02fb7363c74a3badf4b85adfb2e866f14f8f2ae20475ed18a442c1cd87fbcc88c69a581d2c95df51ae9aff8a0aac0bdd1a49e8d2c9a8972aee5171bc632f1df7524c62b843ad10876803070778d528ffa3d671fa21ac0a46a4d75137c2efae6004093b306c30358c4c315e5a91d751e7847c1ec853e58207c48b69f1fe7d97d5a7349b91b8157dedd42bbce113f69a750e2011fe04251eec05716bfb9166944a39bd6eb35cfdef4077c9897e323e009fc8735ca29e01c91629bd1ec29039eff7a509be2625da42edeef3ef2d06cb7b60834b2646adbd49f06ab837d0e333b48e18b47fce0cd72ef14e14436c2129382fe398022f2bc6cdb28663ffee9b09ddbb1b887fe519ef6dead5c1a8f4e37a4913938b269e46659f19131174e7619d0399fe79b8e63dbe26184af0475c6a3851b4895e2c88597934de7a96ee2944670a025d439a820325ac402b4e7eaa70369d9e7b7f39733c6cdf5598fb3deaebfcf88eb75f540e77fbfc2aa71d9e45b97c5c8756ed18f8cb4bdd1142ab4b460ae037c9b59f34ebb5ee992706cca416023ffef0f0bf109abfad50225b2e332e947c2c005607433000c716d022b45c797564d5653bc5b528940476619f4ee37d20644cf96acd4e232ef5b46fbff2743f8a72c78ef0945952312b13504a5f666b95ee86b56b0418bae356885da3435d300bc1d6b66aa5d6ca854c78fd54e83105e8e012d8b46849ac153928fd9deaa9ef51e80d62b0b7e15ece364c09cd5e4b9f9514928abb83b2ee8e006e5fe38471104904835704b6c68c65569354fc9ad41183baccba497af99bbcc8ba48feb13ca93ffa91dd966cf4f4043bb689e5c1ea74f0e3f64732276b20043d5278bd60ba31ee4dc4fc16c8d53b55d7be865f37be4c91c16c829092c159d38628982b6041fe168d986d851156d3a4a92a05c9459ca64890102ac1896b96526b150b0887a5e04298b2c53afc781914026464025ba3ce81e6bd029853b5d2e62c144826dc91b070fe5ed54259e90b75f9645a83200f81dcb275f5a5d03f4585c458b0e501d129de165a6ae2d0ae181d352a1297ca84211df418d4d3f2be26261badef39ecc9ecbc37494bf84c5018e03cd0d6711bfb48e96d3426a672f8c167bfb0819aec10dd862fc4d24d2d3365f01da1520766f21c8893652337905ba5676a63d2df7d14534ac0cb0515c36f37012be5c834e97aacd1c1bc6a70db7337882a9007761c63a9c918531d34e9c294ef71b535e618124086740850223565ea3de0888a49e10db64a9a1613688136733284b189368ab39a76a2177d405f1516aafa0e5afc18603e2b24ee02bed40ad0dfa59147aed1316600f1294a197744bdd84b03949c9fa227790ae801155b04417f23aea5c97121458d85c27efd99576e21c0279c772808094813da4cbd9365e2b873f1577881bbcb6a29b9552630f4a42c9793f5a8d3c34364841a07074a87db47420b0dcc79b2b920335c2c651e0b36a94018a7a418416ace8b94586295ecb96914edf9f0100e71d6ee41073b7072426ce01e33fd2d69c9ba5901966741ca247e94f8ea87ca2ec31238ab90a5a2583111d54c835fed2260aeb9db138ed3ea824ca5370ba1c9787495db0dabf768b3476234a6c42c4b2f86c80bb9ecf05d88433258e5df26439880f12e488b1943a1ab6a42af02594c58fd344d836879aa24450aec24924b39cf0036dddcb9c29b83b10957f7cf67ce827428100097a8bfa30c6a28b7be8932ec132f0e4a811f56865ad70375c7c9c8411d7fe728eb970a9caa44911e067dba0d7b9b9caeea96ac9c6eb7b226bc9587bdbe48c12086ac7e8171e969fd18aba867f8a8b58649396fa43f68e7c398f0d279ed3d6570d4176c87a7cf20193e7532ec62f45e82d9a031d7d1300a7253afd6183a460bf6452970a777612bb3dbaad75dca1189dff7caac121a49ea10029138f8c621646338ee22789c00e0370bfc88ceb820cfaa90440f8cc382a539354d9f2609e689345ad2dc1e22674c2c88c934840ee985233e5af0f9a5f6b45f4e632b99b144b8e5788b4e2135c7d37098cd5893fb70ea0ab00b436c7ddda49384708563f04b8940571c720784188aa8f24fe9b0307447faf5bb57259c64eae08e556174a7d10de312469176d021336326553297269c1794f28a409a70cd06c0b373430f1d20d1f51ac7a53e02edf0f1f82f95e2c76d0ae6ba21d7f50c81a951dcba26c827a25d757ec66cfe39366568e61e73ee0a3778338894e7207171d5870e1c91944b23b19db36337a832ba04bb3dde0f72c3109de057d3c05e13785f0a9f96fca03ce7a2c04cca697f2584a17f4f5f10f217049a8e0b4472a8f8ac4c0526c7ea7f48963254c5eecc7aef3ad6649444b421006eca5ec631def41f660993f70c581bb986eb782be398f7f4f585bdcbabc206d8c79740bd35fe75a61c7eb53a9860f88c29e62b46beab2f9957221049bbd925aa267bbb3f60f56410f54c2f142dd3059c34ca8e8c7326a687e32d1e80a98376f7bf2fc7c624491034869650a878d6206721105d142c764524cc38435cbeae98f362cbdfdf023613c4a70c50807a7b391e3169eec873405804b5e63f95f8b05359b29e881e892441ae48c6f1cb465a80faf6090f784626507f0ce8156a52fd2280531155f4ca45230a646ff960919b14f86bca0a8af817e1031316497764e2b5002556000627afd3fe93e78cfb2a31992c55e407d3ca2f6cd24bda66202425968f9c69c17993a22c19b3fe22b8e2ea15bb0ec171efd28ca1b56c9b9b17302f8e7edfc654abf5f06f2a3296e5d97e79c93ed76d990f34e90ed0896ded51b30fb0f8c1f5ca63791f77d6563b1f2c10249e2452ae2f0d860167e8e8be929b8f6625f60c2462a2972291b69ff92cd408eed9fa0de2b73f8b9482b6542975763f98a67819895fbaff353c3089f518ece064b10ee405b42139f40be277958c3b69830fa62e319b5d244ad792634e3f485d174bd827c1980de46303e61e663b67c1cf12431063b0d07220a93528035035d48db5ab7ba41a68e828ed4f8b9aea5ce982db74659058c98b5a70b7089431ec0ad1c338d07cc995965376f99a61299a02b0668f0d305a25c0e352a940b50ba0f80d2d8b0f6f069e84ce984dcc523a4878048b8d9578160da24ba8e898056b7b08a5881fc71a010e0a81a633f3c4007993b9a073dfb7afac4b5abc1cafd93468d241b17c0b777d7066d42f2ab069270e8f16d6446b85bdd4f6e82a028228e925bd25a4a2edd840f18707152f8907b6c3ae230388b380a26fa3ffd786ac09cc62b46a8c54e1a7aa3bb1b1c2a2b5bcb7420c9a0b8524aab1b4edf8cd012a19acca1b5fec986cebe5eccb7d7a0d89bccb22e831e04d17652b49d78e1e6ad6df031bca35f1546fc2a9c9532d1b7b232d6cad1679a04b12cae7dcb9533c750867b517759e2b36fa1bfd228fa4bb9f146da8a73925b17242f9421d3fa1703e5dcf8d6e2a6bf02521778703fe9d96f756025daaf283fc529c55ad1d7a15e4338bbd03bb9eb26b5cd4efca8e504efe55ecfceead922d1ebb09c7e653bec229077d1d4f5cd118bd1b21de52ad2335899872f53e93de6398961d84809b27e614c4af5cb1980a338f1016af3f39e5b32fdd67b2979f786c0bddc5ba08e85ecf563afb66d45ba72c83fe06c91086ec44563cac96bb1761829dfed672a673bb9c5efce10b3b4439222ee331a8027da66f427b2abde0af83984f86ca1a7fb29e85bb2c9556fe5cad1bf603c66530b360b87cbb63e2ddb684bda386fcd457429db1c79990b6d7bb6213fbbaaa5670f5c66ec034325395aac68563e4b5620dcbec78500be8385621fcdb8760b77e914a115953b44333c8633bd6abd1d06bb195387fb909c4d34dab55b4bb4ffc5212561bdb874fb77b6ca4b2003721e3220de5eea999e66014c757bcd3672c3cd6d0052b2bb74b85318f9b811059eb78c01ff400bc43f45227f4454e375ace252217e67b86dd4f32c23e7abbf124614c15d04e2ec5c15a928142af95e25501cd2bbbe7ccef5fdaf5c1f1047e9f5a2c63768066d750338b41dbe26c8fc080f696c314d04bfc7b17fc4c1383a53146a5812d6f4ac13dd529e7397dedc948e0b831b11a9c4940d00ec96a31a2d4ceafa9eeebe729d6a47638f1d63ae132553465cf2856897aa6b5413cc2d079c2d4fad24a7dd3eaa7958bd3f2f3c0c4fc6f8c3c47c1ff20833c7697ad3b7590fe84c79db94882a6e9f1b1cff09445b98813f436ad1d8c64cf778f04b23632974c155ecf7dfcd975824c0596be6c94ed316b8df5aff85e59c854d279ac3629ecdb1444d629a358d9a5ea63773f5c4a8b4d77d4e636cde69f5249b3dec234d3d86cb5fa80726641ba3c9155fcb54e658283fc6b572cc5177009845cb6937d64ad8d0b5938ff38aa0f13696365f9775be6f686eb9820097d2a653f621c489c709e6eb9dac862019e62a53e2753ba2440db463983c8758de32728443739bf1919b8febc8399c4a6c867238497cd77cc23327fe3485645189ae2fc812209619ba7766d70b121e114b8f4f7541a39f9cdef696ff27845c2f223d83b005d4d9c0b1ed5ad600ea7e6108a825149b9da3d8f539be9692f1b7ac25cd47875753990fc5809366b18a8eca9eb5ea92f689eef2de45649551195323d5a7b6d88c19bf41fbdf2d2f925f128388f1024c3af5e443d62b32c5459a36084fd3c5345a7cbb2d6846d85cb6145314af168f93f755775a24b5dadad8e317c78723778b0fda604a86366c0b88e1100fe2fcec94cf52f990f8d6c14930181b2d51b222397f4d773497249b136dcd2d617f63bb2c93a22d0b714563599e71fdf2971c083af0bc358304b47590afb57362da18cd56a3623af75e71b794b7cc15411c53806bc64c927f740c0f5a42393e4b0b12128d53e96c356bd5dd2a141ee1a4d38e7c9de7dfc33b1c0abee413a5bf58b04124738744fa418babf1277b44e5b59220e1cbb69d18ab9b04395da3a7b94fb8e94012d1293167e27c62d755b10841900eb4562d7b5ce1e533982cc6a93ebf6d1da8247a34fdd08024ddb660f883d4ddf336408d281ae8106290ad44625da4d4817f530d390852a3ab85e818f95c0cc53acb0d406562ff12e8824ef7e3e0764f1e337ced0964b4d3b7ca81f69d7e9830034283dcdae33335f5039a69f7d551eecf10ab5f4865ea864d7a49e36f35699a39f12b267f6544c1a39abe22e29a84ad1e3a5dc424dbebc36140c6ed422aca1807431470b8a87e84e30199248378a7e10094eab347f8cdac8d07d82d21222cc5f5ef22b6ad559298fd45640ceb7bfab3b9b287d6549964b31953ed9a161d5bed16b96c250ff4e623bc13280aaa96282aa7d4f6fcc29916c524a017adde84025432f80bd9ff01c9ca904de4e5c46d55aed37251c2b0bef22b12cdb0f644022f75ac377fb3ecbf4d6a349fab7c9f4a0a4a711fd28cefa1b6e58149e27521c66f890c4cfd53c9d5d6ef66e8e9ef74198f25fd52490e980261e1a6c809084546a9cd939fd6928e306b9cbd6c5286f3e873c6d912b09ccdb4fd6a10254489b1703c9d4163156f5f92b845298c54f2811925ef506e6c2fff55ee73f6e7197f16d5c58edf7e56236dd486cb054a9a3ffb8c69a2daa265f3291270be48a7a32fe01981a9978dbf6919b2601951d46d5315b20cf53538c43305cee08d5d1e1a0014e5b1b49942c5774fdb01dbc93ff4f54e6819e1785b365f90aa854664f917102c12c39d9952b99544b56745363a0fa54b5306d29d219ea489e84f3c8196d39c07954bd65e8cd8e960554781b3f3e9ce422634aa97aa59126ad141f1419c07fd11e60ed21b80ca1f0282e5ed108a8db84f48f7a2f999f272c15813b01d0e0b082b29f4e7c5cd8e44fdde60203c9872805ead8b3f00155953e5e1cc27da9e19e1036ee4b11bc24d64b5149b2ce1015a2825f0d3a3c8b2c5b2d7610f0291a18e98ab22a78fb7918fed1fab76d3c3678c523ccd89e899c59ad0ccbcf761c4f1c0b048b7c19814e97b9268c90356daf84ac783a90e8e141b9df93c8f5d2450976ccda23294ba00d7d80334de1783038d92d1e6ad7f206288e4e08bcfdf52eb4a36d0fc946bfeb5055fa50ab8d463422e69af604283dacd2e4c9d345531cd695650d5978e999435a124da9726a4fe32140bf7e38b673cd0b9882879a5080826c6228c4fcfd47d5d427317af6eaf8b377fd34f2e7e6f3cf0eafcf9a8f1b5ec6036dc9afae2ca48c7123f68141097ba8ec441b4fff40903c7625676cea66d9a7a38c66892c5efc2c8e9dfe45821b46ceb9a4838be1961ce214e8bc4b8a6853a3aa18fd779461c03cb1e78c49ad096c6a668c5d8bd66f660dec850dd2d8cf7d43dd07518c9b810f633c6f17f9198ac84658704ce8c199c4c0756279b0714a7c63adcfa107342b551369bcec7e6e0d9f5d1107332c230c513a62452e1271db8d030c4618513e6bde4d8ff45364d3032c05b78cd59657fb6612eebad800c8173d948371602192035fd16d4a5602c3be11901f91550a6df1876cabeea2922da72576ea96e2ed08ae338dcebd262f792bfbec01400b49eb7b25c2ae9e2ee5765d34603b6cdfa26233427d244cb5292b601254bf6c20512e95f066cd9f8936adedb5799a4c4407a029a05c47f3a5c27298072296a33cf40d4a839da080a73efc4d4d1f20a741c15b76a4612f4d06cc5be06561866d83e59f9686ca812ff3d143cd5a3fa61ba3d3b529b87b52ba8c54369029d3829c041413b4890987019005f7b6fe5a68bea6599d92d9e5efa84debe202bccdf1272781e8708680e741667e41ef05939ce63a64f166bac7740084893cbfca6dae002c1fe79a729346df4eb5f95f56699744452fa016ca31db5c2cd4e486504f136c4b85edc853de74328155da9b4f5f82920bf5c3aa0ae4b8a5590d5b044de6f7c75159dbeae65b3f4c9c0c6a5a336041a665af388b78cc47785e06124b94b43e60a0597a8d48b1ad579d7626c0be28415f5be047aff0208c86402c738c27bc9f55a0907820f1c01fa8861d2686a27a43cc660bfecd1e016d094ffcf2c3320987f95ea584d55459036903a3ee9d051a4a4e640bc54a428a1461210c5d791921c753d177a0e893f2923ef1f2ab186d6d50faed1a58f250dc1ed70da743302455bc35bd3e5c14979189959ad80b1f0aab902183c4b9d603a5648e9ed7c0ce06e029290eba39ca117e4054b325a07a450bbf9243ad41730cc58abd8baa68e44209347780296e5b4e48570d61b0399a7d0591e7fa7fe72b41d0b27402800689c512ec0f4ef5142fcfbb398976ef332e189d1480db524d21b90221378c1ce66b1121dae39129db9fc58a9a6cc46a1508689cabd0ae8fffeab4f89c8c27ad4f8d96dc09520a932c0943ad751cfe1e4f68538cff4310974250fd096f7e5cc382fb23e57a0e41f36e8fe360e532530f31012f2e2a02de4d31300913e20312ef1fb5399037cb0f94b71682016e43a4569e8865ac297528ea81e2c336ed8f059a7d5755774c3450085e1c0f4df4ddcf726559919db9a1691a242d910b1ab8708e13135f928c8aad835a962cf3a54c00681a6b89eb33516a904ff64f56b9c7a588b403c9ec6c4675705fc67ecb9f3d79dcba41b8e678136688d3d8f1a20cd328c35512e8a4191b8fdc92736a16b6a49d8227154e15102e2368d455839ae1726d79d9552847559daa878d58af6a4014552b99a86a9edd1a329b84f3173257d5818f738843fcfdd5436ccf6bdc4842056d80e795a01cdf1207a0a63584546064350b489ac99b59130d480d67dd6458f05c8f885d3195cf19805fc81532dc0647275660c37edd9281a904cfe11b73c7fbf3d10ce54a700a5a2eb747c33099a99f509ad0d1f194d2612d42cf757e5cfc115b5eaa5632f9be6414815ccf68e71776b07ffe14643e96b790f4a5e32f2607f25ab97a607e4d09384c735079240d040fee2a42d5961c1a7ba7d8f20534c2c1ce752ac186eca8d25001816017e1ce3694cee80e02bedec172ce2763b0a8c47c6e5d04595d09226623143e2f84897c14c25c4928e7db398a341b739cfe39633bd1163ac158b27da82074f3ac06c17d4f64b112cbafafd1be4d54a2fb8bca4a8cbe216d28e9d8d29a99dd1d891c9b1435a643b37fb841ef98cc450a47404e07101b68e3f70a36431f91a7f4b2ccf63777a08aaf31fb04cc12e5e3c1bcc3f90707f375f13ba95f8a130f89abba2f97ef37491d4690754381ab787d1fa5aab3c11dec093e9c0e194ae2572bdb325796e1fd58a49a557b42ad2c415d4622a536c0d490b04e42d18ba5f0fa8cbe3bab649f52aad2b07f6d0458f86393ee327f703a2e07d7f68c407fd3116f9fecc8534a7a535067823d689968d4f87ecc160709abd54e304c97399dc636f925cd5562b7a0e6c5d6acc648d869db9d99cfc468756488dfc78420b24142503c2e34c0a60cce6bdc196d2ac3788566799ebed0deb52d02f7dd6a1f66d598a96704b5f3abd3b015328d3cf567faec8c579ceccb081a4a1aefc0948ef99e3e2c64119f7b8df43bc4c7603bba1456b918965c2581bf34a57a7d9df1a0b4ab39062b5284ea91106c7de6112290a65fbb16b6b1ad23ecbeebb8ecfe23848c7bf0dc8afe47408991eddc44bf80172d270919eeed22080cb47395d0a1281949659eecf692e7b24695598c7e92d43977a1af77e013b8e99016c6783d7fa1b48f42bd7b1c9963cb4e452839277440e0d8cfd92ebf3063cd31ff662b6277803dcaac168f709ca410ea5914959796d49050e6368c5ba6c5b03429f0b2e6053e63bb3fd05dec306c6687e23709210e593b9248e7aaf8bb24c9d2e77ee14f5c8313fbbc7f72687119ad5bc7912082681dc4652ae27268dee2adf2cf2b9af49b874ecc5c44f3748c0fed785fd5f803ef47bc09b5fd9272408bda35350daf56ebeaa9ee6a89298c387f4e0cdaef4424ce2d39fcee8e87179905fd2476ba42bf4a601d87307af9ffd61a45ae72b2b1d5adbda326ceab88a5d39faa8952ad7d35e571432d34dda546553da8f0647b125d55be0254e5420d626d8554b06e97a3420ecc59c59ed5051bbc9c74b9cb80c870a7450fba66f7c428045d0d5f8754ba19cab6f8446b9b9fc9ac16c2033660a8860b4b36688648662c395dee308ed65fbca9ab5079d350f710402f6cf60010313574adef573bf8776118ae31f5b240af7adf5104d089406ebfcf5301ef66fc47444fcc64b3402b2b8dcca4ae61a7c91a37e18d7ebdb25778a30796013c0fd325796ebcc3e9dff9aa9e33f0f5465c3cefe0e8e0561d7494f48ba6e54e34a5a85fe877b7a09b4085660e4d70fd0d7f36d8b52026d78adbf3d040371fc9aa747b1257c1d77da828ba556d25a7f69e60aa10fa30092f3cacba5b6397c85f150ea5d9710c6254766011abdb190d3d1f20a56fdf76e42c7879809e4c5261107588d91170d62b71e33fb5be9ce61b7c627fa2c630a179d4544c42b29c6e73dcbed33eb6f702ec96bc7da3598f9fb822f8cfb02f31b35000ec4f1dc18b73705203642b72b90ea2a205ef514c45415aad27f5dc51d6c04fffa001ed06bc85be32f7114f42878ee2f947a195d860b9e5eb0c3becd27306e90a2d25d0ac19aa3ff44c225be654610f039935b867e6c2b0a5c4e7fad499d5f6ca0ec461d7adcb2b1ec86536d80e61d2b07f579c84efe798fae4b64e78f8e87a24b9ae66c379b9b7741467dbafcbd222cca441aa6b3c2b6176f3d38ed5ed22bf8842e4a02d6001d85ae3d2bca6164072ec50f02d4559820ed82e71d3d1ed41b769fc722c60f04bec6be5fe05fdcd4c28451805a753568345526d5f1482eef50cda43d598551db7737f5e7070311ef426aa7d09e2cc48e9b436fca4e2dbbbb9d77ed182980a78ca4e5fe5a9d1a7b9bbfab1874bfc0420b52313cf615f9084aae2c9ac977c44ed95127c761e299af697163980d2641ef593c24291b78a21e5e7b4e6d3cb03a26487fd479cfc9ec4742ed85e8b0341f5a1ed7cd4be869a97b5c289d02dc7b2f6f17cb8da7172d123e91529cacb6f1b04551646095880962128989b7b8bcb0a8bd76ef9be9d934a2da250914b1e7e756ef965a47dff71d6eac15a08bc693ef7f6f69b6ff7c49305853d1cb5058bb2a8eb4c71a271777a76ea0dea030fd670d7ba6a995651d16fa1b6c4715110fd1f33ce5e1926bc0e155188bc05a667afb406b13cc3db112a2e38196018f255936a3b88a3b2b83a63145ab7a54426bf00279d0927d47da7fc4d0938a4d9ff3fce55f821ea5da076f001efc19abd32aa7dd237e45b3bd89c407fa5ccc602280757a5c23a3270e55a8acf8fd075cec730db53bbf6d0b5257c370618764ede7ac209338dbd42e7902cf04f794a376044e9226f4233bde919850937d9ba09d2a178d86b1eab21b2cd0f1e6dd0577acb6277beb22736c81a3e18ef1d59a50cc73f54127648e23daeaa77d4380b18f6d856cd3b1f3c16a5680b2c1428011be35f331db5c66e919fbe63543078de68e6aa330fc6e2f530761e8068a8450f627d6307fe0e2796888b182daeb222acfc4d740b33a4f93a64961aaf962997c170bdf3963f3c6f9810b5a8d54b8308ba00077df0d296d4592b41f29b3ffdf8b3d74a009149b354a7df4d2f2d5c4f3195c4da882edabccb8cbea714d6713323faa1d6afed242f2f334f7320208703f2c9cf1ae6764604ec45f575a4991e7febf63005dff176961293ae3f891b83d933abc18e5c7c7ec851c734436119e9be29c85b057c2d081c1ac163b51c2a093416dd500543ef9f4a6d188c8b09719ba925b2bfb382f326154ba385d110d611654a4576910a1b7a5aa4792ecc84cde912d32f732d48d4f8a10d2424422d380717210ff61cd213b0ea16f4f92d8521071482421359b6ff3a18230c482837f19cd40af6c4c2cbe292f91b0b3bd17a1954c1218c591ce734eaa98e38e33606ae31ecaabb575cf4ee08724378d606af42ef3970031c07f516535b5dc4565d4a0880a2e8ca40ded2f6b0d73abd722b0beb25788d37722353795b7c45b36c8993727e3f0855ead6716e39c5e442cea3d692e7af508dbd91a5b511ca5a29b945ad123f0d0312cda9484d8bc3b626d9b73fe1f8e4038f1234d86b067a99e8c9b5b529ee58e79fe7b03fb903676333884bf7cbdcd92dcc7f77dc0799465b18626741e70aabc3466dbf267ea18f80d56903e06d39db46ffe6878479cd8f6481a722c7019e409d70c4a46afa94b3e7c5ed5797d7b11cc2ccf53524145177db7ca927b119886d9fc7539ac9b634fa397db76e18803d54f4b477c01c6503e322d8ea4541a0ab42a256aae819472c7765f9c87f4c50182bdcc6c6dd3756699824a21569c6d148e41eb7293c13863d64c54cee5de3017188f68fc131b0ad70a0eccdaf3951d6e3a50523203012e0d9476ee60cecf3681c63dd1daf8d71e6a68014c6889ebaf47d2606b8d1a7b26b03e60a94bc9e7f87a4c48df202eaeac7d39cf594eabc8deee64925b5f644fbfc7c20a202b8ba93210bd2a9ce80170386651ea10cd12c2e6a0553a09a071ebc726d266e3a66dacc0f7bd6df33ef7be02e88fd902d7b4f9d71b32d87bfc4b7b3a1dd4289539bde29897e25e6099dacc0e8b0a5f21ef6669d3e206ce83d35fbac49ae5ba89a283c733344d01ca7a2035f5c613204be1b67dacc6e6681a8847aefb1117f11ebebe6d2fa5106c063d66afd00bbb035dec4415eb48b5d069254a8c0c0b9d243e431c2f1d16deff178bf20f78953285fa4fc8d7f4acd3a5601b9b10ec9615370634394c685e4d7dea0d8e7107d18b547f2b2157e252dc1117f562ffc50896e8f25fc2835a32bced3cc0265b92afc12dc4a6ed334f40d265b40585d2d7e6f7f887c57702b773093553c111ae49693f0b521fd888094d27e921182817cbbb4b3849272369f628928679438efda1c5ae5149012c3e1570403f893467be0b6119496d27a6fca42b9aa0a8b53132f44f30da3a23b8c5a9066abe45ebda99a26b1e8ca1eb36276e372ef841b5940ed3be71755bb59eb2dde1984328e272230eaf1ff707c9a7e3954f0fcb73f951c6e0cd78e32ddd27707c44094b1bdd53cecb8ec50c142e9840bb3706ab2d668840b825bb26f7ffbc3ba5151fb2e682986a1975fdf0605b0f80c932cc7b574133755ef3b065b00b8020007c084ac0e1990552f442789d0ffd01d97a0ff88c6d91cd71e6dd85581a0fe80694c9dcd1a950a219143f3466efd30a2a7e2a18e29d30c2f1b2461938e8ac481f73cd17aee7c0b1ee6d4fa96760902c9c3b62d98cb2ad2c5edd0445a3be1053813604c7f3ab205a6d06f1d56370d154bf3c00206266e19ae57fa54b9b64c5ff12ae7d9ec435897db4258573db10a06863baa91b8615a9a902bd442fdc3dcee0894922d2f40183df9bdab74f270382698aed9cc1afda176cc30d3343f20c62feaa26d30505dc86713e82202e225fa47c42c2997b672a0832b8d28d634152b438ce9831e570446d225b05db165d29696e4c233f694c2202284b26a3db9a1e7483105f1632f445d34d283b1b4c6694b49b96299c3dde4b774597dffafcb9151be2f1b74a8821e378a514e887cc8713133687e2fcd45e9f888b986bc3c6c8cfbfbbdd69cbe2a93791791139f59da500a713f27993de6e3e141e67736fc0ee114f7bd4a7a8839a19014dd3615a319523e9545198108b7d2f40e96b398e5a6280cb0e9ede1ba328a61928af88349ac8aac6042147555b9c80a6156454de68c537a726fe77b5aad838b8ca69d011e38fb04fbe33f66ae1a4506378674af8facb4b951faa5b13f043726ca08e329832fff893c4be41b6f04a04e74ef6f103d2105b114965e96d95eb0ee8071be9fad61543de33adff8ab2c4914f0f7889ad31c411776fd602235e94604d8e26c1cfcee416e555fc90c9d87608914773b2c4929e574c42160c6f80ebbe6fae9d76b76479e783e332f0a8cb0848230a3c38b4d194ea2dfde680bbfc5b1d3db4f899a8d898a89d5ea9c5fb3726a41482e4c546ddadbeef7ad878dce9e8b485786a5b90722e70221a85d0f4af8600eff001e27efe37d576aa9031a40c119eca10961ccb1fdb9bb89fd96d804c3aac1aa0bd1ab0d1ed9810a94139af9810b5548e0fc8ca03b103f1a12470fcc390c64c6ed1fbcd3b39094cceb8c02fa3c9a129c3b9f28e6d9fa6077b046fa0e12e4916b2f17b8f84993cf3fc8e9c5fa2b97276058b60c7f3f6dfeb9aa49c16ff02c6a436d72f44b3e162fc9d5396f4f5190d75e1fe9b242d6d7feb4d8678f7ec21804afcc5148f4f44e5e3cbdcb5ee33685d1840957f0687cce19e5d671a8bd08b91658e2ce19b42441069acba695bd2853534108db3c187d873dc0c3d31441f1ac4d119922052c5461f216d048888d941e2f49b265ca079e02b3b8b761fa0c7e390e303915c549624c194f03ae9f9ccacaa79b842fb2b778861ae77a0365e0d470932a338771ce568316f92874609421c7deda6888039662b28f4b5db91bddb02fafb738a45ce5fb4902a3ce12f8653015e5013eebfa9723fb3b9f4d208252abd898d921c1fec72e09b8cfac770b8476c82ab7f9f2cdccf8c16c894d5ac4194e8ebe782e9cfcae28fc85c5614fa31376c7335178fa066a9ec4c4db94371b0792208a624bb65000e457086fc1891ef9acc96eff66a225ecdf9aa252442b9d778655b06a8ce7be38980739f4585c1231cb05aad742066f1fdd7ed9c1239c6850dcea28a39e783a1244dc91520c22a3ca30cba993d45ec81ab8abaf44b72cc11e4bb5b930924a3405e13ed45c247e86e56eb561493b810f14b8d1abc537b8807e69d87021405594299fc6a257b8a17fa733a3f4bbffe6c0f9944ce3cb35d915b73d35b2e28daf394af125f2907c3045157fa131ffe1a84873753ea6f83f53138109bae9deb612aaf9f16635950431010303272a2a32f1a6a2cc0b25f17529ae64afee7355c6240857b8b761d87d020840e5ee1d9658ad5e1acda0bd7655289679759753c5de655f1e83257c793cba41a3c7518d2205b64594350c9cbb955917b1b9d21287b79186e309af6b854bd11de655a15cf2ed3a8aeb382edefacb40bd7655a194f9749453cbb4c95f1e832abc683cba412f2c4f286c8b4e6f095d75032ee1baecd5fae1c3702e48548353c79c706916f199ecdd4521e36130bc7ab266893ccedc00704064d156220e30fda73e1660742373b01c8b192012d95fe1876ce149a8d23d732fca45b17379c41e4a60359294f2589b090d1ed63209478769955c7d3655e1579f2490d25df2adc08dc58f2914e6f2d6bb3cb6aac0d1aad468cb7f2d22ad6c9b51b9ecd6ce5f2ec123339ce7b2d55a4f37153ded7203ec0c8fdd41d712b1eac01addcedbf85657a5b1718e8cfdab02ded3396f0bebf1797c9353bb17635d786303c62aa45a1f118e674faefb7e467c55ee07dea1d3467baa7cdbbecb52a27d470ff2c55ce8be2eee84f92f0a9d938a68ba4272f66a69b5496bfd46195ec00432d5455033be0f2754e621f9955479fda55a44d9c90a8fb6ed60afd50b138e86a459198e5aac1449a60de830954f488016ccefd3614a490af9c00b178f070c99e9e62517c9cf8f381a81a1bede10413cc0497dc7dc1954fa6faad3579c63491d2d7e238747934d0f3a9b717654ea7b465d2821f98d5bc2886c667019d7b3ebb7bda65b5216f25e75342449f990500ddf42b913be4273b74e39114e8902c433a5d65f35b7bab85040b10300469d6884042bb44b53e9a2208fd971d1593c2fa2817404f4bd042f8271309982619c76f816a1bb0fff4e37090961ab87d64029a630f882a7c80da89bd7ac7ebe87de7a045055e4513623c64fc5a7025187e0da147223460e97747da8858baf7de4d3bb006e2061a2cbe9c399796fedf6869847898fca328200eb755fc1e3883a9c0fc483573cbd0e251e493a90278c3c68a1dc027ab0e86e69a9d0888e171d94ce4249c3c49d6e89ba9552494da7432b789f341d6aaa1bacf132151d6623ed84be8dc981b35272ebb76c8444ab7443b5137894155d4705544c14eaa4ee72abe200c5661205f7f3ccdfbb5ddce0931a0de7d7394f85193c44da4752293a47eda5ad622451c6b6edc21fa020c63852449a85a456dae59e51389e66fbeeafaee4640c4196db3e786687fc7dbe26dd077a9a5e29c83b6a30247a620e166d1ccae7c0f0733b2d45a84b8c9edd9f0eac25a1d53159ba688166b245a4444d08e33c8ecff86fb922e48278969a1dc24eb338d71a53f890f044ad3a899b1429def5ee0e8d985d4e0697fe11d9dc40b87d1cadeacbe587ac1f7b0f8f39a135a6c2fe896762d7c6c0ed00921a48f40f5c2cbd5dd3d380e4544d7372e2360aceb0280ace7a411f38a6bf5501b7f2b083c963ecba12a76507fe76df70ceb5df4aa4539df05683318e137ae594b14e857e817d12a78caf1750b6bdba2056cd230ab8cc41c28754d6451c820a4033b3cd9d7cbe86e782a79c95279cef911979e53e91ad0b93c7043f0f139ecb3aa0223fe6573d93d7c7188da30c3d659d15ba3556ded1957139db6d9b38fe62a2f6495244f04fc44ef9e31b321196c4b5ac43fb8a542f30f05f6314a775bf3094cf970dc3e8e66566dc6dddf4e965bf1a8777637d0792eb399943e42fb69060cc154a93b8483f4884aad50470f15f18e5ce0a90f046570fab89fdda08a8f09c66d1101c24be00e80755381fbca731a0904d2965f1fb9a4662439cf4e28d2bb3a22d6ee5a4e65dcc38043bb5d3e02166b998931e82491b5857b45624be2284b1e836267d091958540a62172ad74b0fac32ff72b79bb019d874bab2a11683c027853464e46260e90ea981b494629be8f6dc78d03122733c28351c31016c945e750cea16bf4c7f0f2d0ec7c04bb0b59332e60dab42aadc4c239a74a61bf92dce84ce044060e340eada70644152847170aad0bb70a1d79eec6def62073cfe9436a8cfa14df777ccef400806ace8dcc7cb8c1ca16fc2936692ab466ccf68e389294355c7f055b2651eecb4a91bab36cce2ac04a59375bc2ac5ba8d56388b02bb8d46051e672c188dc4c032853a8fa12418009abe7213247caffc169c50eaee59c388162f0d6144623e8813539c980980908af3d7aba8467e1b08e59d1c4801cb8b47c6eb3342d657afe1902cfd7448e101ea380380ec97eeb7b1ae29063c27c7d03ded903037fc38c671d67715559e48554f0940049779776e4f97112f11ed2cd9ba13c53c4eec3b70981aea0875177c87cdf810ce5ef2be7a3ad7e35e212d0b0a030f0c8d9f4b7bd93b81885ec8656397919ebc459cb51180a11a9541a5eb5e1a7547645147228042c2818141260a2a08c6e308d16fa322d401cc7f414a94f165834c992a3933bf99bca8f603c90b93b80c8ac3696364b7b43ec143fb9068a6f1a4e364b3d71a50b4e2ac7030c406102c159ed1f4a54d6fe739e8ae80a4b721a39de8e712e8fe5c89a282d1a047f391443d7763349eaf493794dec932aa9dfca55226ac5e50616c2034073394c8b0da24f905acaea40cbb73c113bf86b4944ea907b2d30f2f15b30c6f18530c463e4673e7d1060f4b0b2fcf38bef35edce56fbffc45133e5f88612372f5ea6c02c2e1e039a51c8825f8e995b2e720184318cf5fb08a9dd7eb644efa99100d4b6ae8770c0e09824307ec569089e7f0566b9705dcdd2c6276e5924348597971645b54a6a4e55b895688d7f0eaa9671ed819e654a60dbcf140f995f70c5a9a90a74ecda35eab3f25df383c02ab16019097141694223edfafadb8a2c91a28ace4058f83dbec6f716e67932944396cb8d562c3803d28e74e37fa7ba1d621e5e7f972a1b070c62267c5ed59d76ee73b4e5fceb7be8e73aafa47b99a3bdec17376e17be4df3ab9052f396e4e48c4f442e4f116000cabdca75f2039e1a39700d03da81a72b06262c062912e07a0fecc05ad081f71c01ab6bbf60a9c8b39c244eb490aef4f200f5295832b45e361d466ba108034585811e1d804ced2f78b0ca3f6e63170fc1cd592f3e7d9c1d7f3596d491bc035dc0b67f3089940e1872f1568dfdeab1d508dcaa7e140e068880a5081ff4dfdabb8bfc7cdfd4d41a787abdfda471159f11628039c223e0c12ead6e3212cce11cf3ef67cc102ec23f49cdec66804f64cd72dbec7c26b43ed0b821e2d6953058ad216a865fa7af5c694e379380f3171d394048194c62aaa0516d4815303c1c599c60335d2a60724c8fa09636b5337da69196a52aa8c15f13da153e8d4652bebcbc8f589b98343136fe70524721f3bc7955fb3159903cce261a2105166478a531f3e90b5edf1b5960cb889cc3e31dceed9b690086d9d71ecfe61807f0c077b8acb7b9acf72ff72fd4ea17af43ce42da63ec14dd2eaf0ccba58dfc1a0bb876899324e68b239386c137e4c7185d69ec1335aa301d3ff60226245fdec6faa6841efe8447b27a07d1601cea60861ef4a1dd753333874d1e431065bad74d3e56f5e9ef9587badadf8a85a0d1c9b1fe8bddf4dffcd98a7bc767ae6d1c4eeb9925dc8a6c4b774938a83dca45231a023d8b7b8b40c5a2f08be306e4376ca18954a51d093403ad74afe9e34494b73d6b9961686b37a87d9aedfac157324b4f68518676c5881d2080cdf9c1be9c87fa83ca6b2a955b68601866625d86cd204c9ad0e8e52cb0cf1cf33bfddab0b702ffcebf3d7949bf350857a4de50a245107c574627f6566694c688694fe259b9928ff4cf283851329938a579c30dda4f8f7c12ca5cae9580b9dfdb0f8167ae700dd78884100ff14be14795abfa7d38e409ec6d99139676ef0e9e9ac5e30cfef5b26a84b78cd542257ef87b775c14b2ed88ebfced77455bdd409118d3b215adc5c80ea5557a8be9a32e4650f7b167b998b2ac002b53a8637efaf6c216079c7903048859c202d43610a66809c5f4801554f3fe5387f1174335a90b6aab98a0d221dab904e81f0372f965c9bb38d0e68393f36461661e623657937063d92f893a8d2e24be1ade32f1296da5e1eed27174a0669fc4f68ef0a17da6d15b6597b1295343c9f572de0235847e3964c2965b7bfbb36a0617f3bfad0f1265631f4a0ba324a0988074509d213f382ee2c23af8b34e01257558e8b94eaef3f25843335ecfe789fed212d71e0a0b5ac212735e8205132ba97e464a259c395b6e3850a4750903b9cbac048e063e298bb9f884499e54d61e79680835c7737a95607dc055038ae288abe8e4518e1e74e989c35baacd22f20a25014d10bdece56b09e72d434ff6e7a24a88d0b433e4f2078e54b83f8995aefe838891f1aef6177cbb9dfcc13c321d7b65ba5b67c1c126c68c8d08c47c6d1d2502329d47fdc8f8fe3e13af74435dce2a5711cb26c8486a9cf823b5d4965348991668f3909e587de8846e0631c1d9bb6cb3a92d369d480e0cbad46152f6ce244176a80656af9319b44718736d44e45362397f6cd881efcfadfe447c319c393e5441e8a12c2c7010786d1c4259fbf7ca2846b95a0aef475a9123e991d5a07c57492239716b58858a9e741c339a286cddf46493dae0f752edd5f9c66fe93ebef22c2af3d720098afc4fd35aec9ecd1bd991f84c4e7d4d682a2654291fb37e85c6be79584f4757ee45ae0e44b40711653c2a08592386eca3ecc7cb6e0c68f6707e4a9bfdb3f565c4f2286d321dcc9a20a3e2441673449ebd1be43bb921096cab44d2ebfcd28d8cf0c4a0b1448f5fe126917fb6b349afefcfb8541da4197d34d46be6052fe0f96e8d4d43d30edca78da1cbd6904a06d6ae20a85031baaa135297931985ae2c40a43bb0a3739f6fd45c4a76be397bf2884406434d1e9c1b926f04ead5a56fc59edceb2feb1c736fe69b48db54b34e43e6c71786d039e03ef773471a10f80ccb2d41730bf9db5225f45f540a82ec347427452e0c90c7df212d982a86083c6bf3d0bda9c75c7923c1e9c8c3bdcea4ef7effa9a576702860663021818f631e4c488770a48617e0da29f22a86bb79f3ab94cfc7379ae68518d02bc414848ed5259e78c722016f15cd64ac0faee71f8af5136aec99543cb43e27a3c8b0a91ae1661a4ced97f2d711a17912d69f1691090d7f8f546e982e55f55226589aeeeea504688f3bf7b8e7f378dd145737df48add6f641628f71db86d5dfd5ec668070af4a804ddfc1d8542f7eba6416d6c9be45d7f960731c07069fc6c4455a1965fe00c7fd7bf4fa3ac6997c27bec15afb0273a94551618f420dd7ce7908916e49127f1d89d6e032b57805829624e4b62fe8bbe1e401e52df3e3f99155a4b210c733f8c4606f29a074909796fd48b543d9257ac189529cd2867489b7fb601dc5a342f8a603a0469fe4ac7ff0b46e7aa0807e565c21d55833497b08aedc0fbcff2bed510fddc092adf1e80b012aebdf4cab317ca349a08a96e11dddbb7c940189ba8fb13867b1735893b5d2e563c8c391dc656ec27113def58b9583af69bb4316bfcc8a09e56fea6f8c792dc10be6cfd3c043f1d4440c59620db1915cf51bd2faf935cab02532783aeb283f4297d1253816894f9136d14c080b54944fbda1f694b703100ebc9b4961d44713184dff6966084cfdd40f452bae6afba19cc8f69842b65554c0370cb865a7f2bffdb99ec9390cf7ccf3f08b4025c4749e9da181c184e1ca153700a06e1467f5edb1191acd8e7c8305da59d17fc489cb6be41819b8d90c759984bb4484d395154898e98cc82da2313a3a00d6f2b66460cad2bdce242a658a433b967dddd78c3b805a21648a1469d6f6b1524cb320c04840da54bae7aaa2f69687de347dfc3ccc6bf94180bc4ff3de3d9d6f5652c44a5f7cf93e34af492244fd4da02b0fc382e6828880f8c3d830ee44575121c46a7434652131575d6713d3ac72511b47d2f69ffb1e6ac9174023650adfb3677296b7827503414a4db1af7123eae203c6812b946306e4d02cafe2a5bb2d872bf08ff0994e40f4396ea172e15ab71c000cdd7f61e106fad4c568ab2089849af80fd1130a572bdf4608160e9a7188782b3bf92b74cd888e5075764ef3b0b23dae0e12bef32ac0278a3b022619876f36943a4469af67b35b76752ccf749c72a0ffeaea6ce691a6b0e7924f9082cf5a6aeb364613c45e2a9221180efd9243fc574317f6c73d1564423e373d1f18f4f386d8f8517f357e1c0123a4cd6796073f5e0d41aa509a5af7a028b9751820d3d5a35308cb6f887f72421eaff1aee2d1868bf70cd15f3994db019f43bf3c2c6761c15cb7e6ee09dfcd23eace22ac7658eb19bc3a45439a93714b4d02f160e0e50802c6b14ca08855de0cc2de2e83e1b841e0140f32b0b59f3a9ee7ce372f447fc137cb24172caef8f89ecd3343a9707533b320727be40982d4755ba02a003b53d1169f8d90b88a8da9570b9c3c8c5af7d57022671d26a70592b1793eef93e2114215de813046502f3004efdd7e8b65799808ffb8fa85479a150b1c3f868116a8cfd5f1196b8520924d441a8896392adec3f588645bb312242e42e9c4ae261122c1cdb110f00cff79186eccf9e2f6af598c5c4c66d0464ce38565061ceb59babc82912008b244b4dd4f512b5ba664953beefea31b1e8f5add1d218a3a4ab0aca5324ec103ea2aef25e07e6ae36b01bbc707b0f6612edc92058a0e1fe714c712b947fe5ed63b4a0f5da106be83fe99113e7e1775826dc6331b064e799e8a9a6335b690cb89541bd9494e10eaf86734bc896c1f464adc477b16d6eee509f97fa0cd5054cbab1ee16f546447610936d481bb8be58793e90188b350e61848066c26f0b0bc5c3884d54eae08eda5cae1499a0069d3a145c36ff3d2a888fba8328e9f1564c845a264ed8df1c539599b0f2fec739ab8fd71c18ec56dc1cea6fea0ad2757c7021df2bf5f0f5ec8240858e07da511115acb55598d27e0b5c824381fa144f4cd64c19fbdef0bc4ed4879963d8a0fd4153fac7423d6e72b8318f170550e7e1290fc8832eb54cc724f134bec897925d736cb4f322d39429565fd34c2c3bd7d0ae8b56505de75c10a069a70e74abb6374c4fea54d1d4d15f9eee93a22b9242be42c06505831bc8d3559bd526929e2408b2fe540f0da9b3529af94ed35f4b328012f6b87c6d14971fb1770a725b66537513877a85aa9156474613f13c191da408ed5e05e18b4b00d70ec2ea861041696ca4f32ac29913d16f372beeece3dc328b0ef744ebc46d774049644592151dd11dd0237ce11d96e6cf7b295240f1e2fea66fc09b23bd0f9a1cb0bd91a0f3922baaa24a39778e18798c84329e2cec471279302b9085dd43902635fbef40098029a9ef2509f7c64b2a31ae2c587d30ccb94ebb365a34b201a44755ea96d8c67228679ea903b03371288fd75ad3a756cc9960814909dc8c9c2b92c04fdf2d9e5037980db5dc4dde0a64d388962709914d4ad50d52f56a819f96a5a40ce5d25fc34d841cc8edf83e6580c7f0bc83f3b7b9b10468b5314ecd4bcae7024fd94612b800e1bf6e4f103b672d4dd62c1cfe89d1f1e33925bbeee81e6b8b75eda16895ac4b04e5724de43e00a493cfae63af37783c4c598692b4f3adfb15206cd91fe7362f2c9697aea76b6ac68861540bb4a08d88cc70031e7e45ec5a501a4814b2ae4f8469b219027002dc3a9405cc1b1ab36182fc853109edd169108c55f21a69b7763c3ccc14e679ee125f57e505cf75829ee74c635744e71328b4744a2da0ab721017463c4d03fd8cea7f6ceed8d58c593f7e5baae15297200103bf25d0964485e98f9611fa2833f0aeb3dbefd60c9df324f7c484feabeb3bc9ce4d5f7a5543579d87c6ff088435a860563d4640fa593a8847de7cfa4d4401f4a6d1a99ab8dc1c0f703a5c5c85e884f16c620a96332f950b555d0d61aca2c933d45163360a024afab0573fe82cf85ecadbbadf01dca7ee986d1760a07e89ce6a34c556e8c554158f26801013a1d7792a68f92d673f519c7e10d56d4ad7b8d94fbb586042b4f4b69b9302580f48ad8357d59a3f3f8a27e83c187735b86429fba46ec26f2517a506296cd23cd017a432f046f8d562c611e55aa8716c24a1a0e0979aea02219901086cee8fc55ae98145938b875ece3b53aa857cb49f1aef58fe3309960442c19237beb3b4b145dd812b9ad4c514e155f4b73ce58e41f76bd9d3f4482f5c617cf3cf768a00080a291f4a3e191aaa0edcb9970a12b62efad54c6ec837416302365d85d05d8780f045ab2859d34b0f793e8b28901fed5063079e5d9f0e429074927c11864d1334769d1f983182527a5c0758735bf90bb2ddf901881d9116c9b3ff8f568b4248c7628ba2a3075c59fe9b559e63edda9a17ffa9044e3fd51758a7b274c767f7fc0ce8014a7012795a56bb25b51e70b5146023144c676b5a024844aca21b4a0fc3f89c8a8fb704f2d081ee5c442b3e95a8b3de276d242d3d96a179584f3f600a9920082335af4f5656e2af5e9ab87bdcecaba4319d9d8f963137b3a15ed09071dd3a430269392902f9942a9d7c53631b0f41bf9758cfac491b030bd71d5965ef13db659e50fd502157885dab12fbbca0ffc255f467a7c3878b889b3370eb16aa6094eee0db044d29f25212b62aa928333aba24795c93df0c95015394c058168190879d298e62f0d083fd118af738701d738f383d5380ade90009b053e4afa91cab12305917911a9596f696bddc2c048b4efe9c65c2026ac5255866309c48e7ee3cc128ce04a307f8826039edbdbb4e3da60f0f8d11df4a3c718f40d4fe90bacf2d63f661c32be5c83b276618b1619ab710711ce6c6ad5ecaed5ba8d817eab367ad79500b493c7533179f0ac2a4a523b98661a5426079066705c63b9e1c456ba2b76500fa054d7e5ae832bcbb4e49fb1a5eb36ba8459348290ec49e6d5913fa106a86eaed753d74808d708b371a12b1b4b10b4f882dc084a7f766d7ace85ed9a1469ce01cd7cdf093b658fe193f340118e39badfdfa7674cb869e1d9fe279b824f88e7d35c98e79cd8e28815e4f2040e7fc4cf0d58301c19271d09c3a557d7d1738bdbdc3457119fbf56b7b870234d0d116e296a3292226cc2011bd06f29aa4ea01606a82d000030655720df52529bebaab82cdf97df29e947702f1da77cf511bbf5364b08216413b2f7967b078f0dd00dd30ddb088bf077ca998feedc61d70393a44bdfdd992030b93e084c9eb7778626e67a9a8f3e7b7623488c36d1fd6af227fa88f4eeda93eefd6032863d4676f78b7966feeb5eb7cba40230dcc5a6b4776142d850beaec3da930e93b15ff75ac5fdc248f6d24818fb992d46f1b0244c1365ba5bfc8ddebd3bec644678a67bf699ee185eb289787478c9cd59dbb31ed951d85118f6dabb6274ea7aafc1bebdeba7f6aeb71a2cfc77e2319fe1998a51b6bd4ba573bfc11e46ae30a12098ba7e5dd775e872e1996a9315e99a39bb235026a4c41ced5128eab437252699312727e2dad25e922c047b4e7c6c127d00556f4fca9597037412553da027e7c4427a140153f2dbaf7fb1256f4e5c7cd8298af61b6c8cc2b624690f47e568e869a65845d663df2169ccd181420ec5b0d846dab3892d9e2b6707cd5a8b01cef5e44a013125efc3825d48ccc149d4f0773ac50c1b1157d145c627172c31e6e40f0a4d1c9b4c8aa43d4973284e183e8aa38a54474e0e09fd06cfa2cd507562603f2fed4989fdc4a0d11ebd2eaf3daa134fe9752eb6471b0cf6f99b3af4ead313b1d36b55a4f03a941895e1125060d301fb79f937627e68d576fa1db006ccf4309e5c61a77f91abeed9d469d517338d0b9fcd49801e8df4f0c2536726a147ae26135204b63b7659c17e2e95099f8fbbe86a87d763861d0f9aafc73447bae88abe5d17c68e4897ab6fb02fedd18ff0e482bd300eab02c54e1d25ad42c9d0cc9d660eb7b4477f6a8fa2c1c24c45bf664fab60a69f4f647ace6b8f5e745f9e605ddaa3ff3c8c099d170e9024b0fd4b678a961d50067d4c4f25b5899d3b78eab41706aaf304c63c377594b89043393414948c39ed1db9f1a63d7aed469bf6e8b34be40eb92f3245b90bc626edd1cfcbd49b3a929e523a7532f5329d3d993e36f1a2e311f306238c5574e1af334c020c8ee46fe6affa80448677a145624d539115ce108710871087c0039e5e3e76f1d9fb55b03b5a356f447b8d34336b97891133c7cfdb72f2fe9d0c0082c9da2e5f3a3e8b2f02c641e6592fd9f0cd59da9768ef1db22ed1de1a0682b5a33d0a64b1eb03485a9ebd4f04fa9c5ae20e19089f906114599e52c17ed007885e7932255fff02254b982879e20fd229d80bccfc552972250353f24f7891ff60582f1926cb9e1d198e39f2d49efc004ebe2e73ae0b4e7c2f1ec93847228e8cbf566458042453f2e7f54051840a677bf2d06708b9f2604aae4e188641278feb598380a75107ebed0429b01009448185117e24e3121b748938a5cf883d4ef0c426e24e541275784821e978a4553ab4cae53087c3479b56e1c31369d53dfc9056fdf034ad7a717821ad7271f8204d44ab5a0e1f8156a10e0fa4552c0eef8056ad1c7e8856a91cfe47ab4c87f7d12ad2e18168953dfc8efea155a27787bfd12a8e46bfc468553d843f3dab38f4bccfb82798f24eedc9f6e44f3034f2e7c1dc90a7d1aaef94e528b7f4d64a649a59f3c41f1179de87ab023def32ae859ef71897839ef71e6e859e77187742cff3e69c73a622f460dcbb1fe540be26843260a4be98617cde6f871b95805e7c0ac490e763c3d8a208e37e51892265c8f33adc78047a37d008f46c201138047af12f2e0d1402bdf816370824027af1a81b01e8c5b3b840a017bfe2fa3801c5f8dc8030a6d28d0153f1a4eb412fde5e17e8c58fee610b3c412f9ebb2ad0420f5608bde8459c3c8fdc188936530c4d1192d2922228d39f0c7bf2858b1092e70d181a991efec8d37379cb49c57299528a8b2092679e38adea3a7f668d2c126b46972684d9db7b3435edda6ab66db2b3bca4a4daa5b594a7546ed74629c5fada4eeff6bebde193765d59959717452f5f9337188b6197bc64fa5247e4fae792c1d6872e53c618e31031c61863f4e4e885895ada8b58869dc4a7f622b4ad6a5ce3833a0b1ba461fbdba86587635eb16651a555d77d81692f4efcd174768de8ec35469b75cbec5727933dd39169c73a99bed6977d492f9b76d53eaff6be50a5bd982b8661f04b7bf19f8e45c974e78e31461ce306af1823b6edbd88a531bee3659452caf8a3450c09fca1913d9ed268afb16ab34aab4ef705a6bd7e96c1d3ec9466b71ebb3fc4509556d9fc9d7253fa495f848cc3c4349d4c3dadf5d9374ae1afd33be1afc69e7ddeec31cb70abb4d718a66118fcd29e0eaafe7a4d96a9bfb20bdb677f7981376ece92ef25f2d4e6ceb635a0ea61ce7e68af554eb6bd2e6261b6313bb460e16fcc015fdbc6c054ffa5e7e5ba956bcfc24e7d2a39465963908335c20482e02c00d4563dd68c4518a511b4468969682d226b6647307030c20c1babf1ba2c0e2a569f7f1a01b0deced6c2ce3a1ee479678e91152fccd7e7e265eeb164b2a50bb30f145078a408f9b8a20f6cbe5e58cf5889c4297041688845a4c80a137e584cb23314d17870584c564697f37a1ce18a71a54c4e740739b268afdf608c3d71f01b77216be7a60638ac22a7277e584ce23f9b9d41ca0853f132cb9194e38a1d4416b79dba20450c392c22454e68e861bd0a362714767564c1ae5ef1985e81d28e8a87a4a3222e22bef1cc47baf695eb80f9aa9b1080e40bf7b36b2c7efa5755b0c0f4c4445541038c832ca10cd91a4a9261d74385f2e44e661ec563e5f515cf90be728deb2eea0747e4451289549042052d1691222b4e10c482e901c81329c2298187c564e54554402cee35accc0cf6a3f23dab5cf91032241a6995e9f251feeaa14f648c392c87e5a51bb3cd348726a12ea02fa030803256e02a64bbd37ff06765b422baa33cb1db7d25a6e519e7fba77463de4c96a4925d56664379684e66938dd02244bba2ce48a70bf510105303128155609233c42ad2352187d5916c14e95025a4974e5260c2cf11aa0c2093d30e2816b2b6f9a8cf34fcd5cc2e887aedf07e37e6cf766b235d23284d7b2b42e0d00a142295482b2b8f5fc1343193de7532a4470c3b1da46ea9746be2d5e8fd0a572adeb770757ae9a76b612a5ec5ad30153fba10a6b6973ebb20fa1b845565b3d7089aa5b0b4581e6912fbec348786e6c0da635a0547db5d003b8e7738666604cd1f904c43b3a61921cf2b33d677c4843cb348732e55526a22cb939cc832c343b090f6b232d80ffe4c203b67cbd225680ecda139a3aefac0e8c6c2b1d42bb33db2ad7022175b4741a43bc00338f8b0881439714188253a912297118658dd8b18a087c524be1444a5a052c89232214b7a842c0f3f1a84ac09c17e54880c3809d5a14db4aa62daa45528ec347f3453aa64276bd98fe6b414943dcc5bbff66da1961029a514ca69158a543a87755705bb75551851ca43d32b1126626d6c6c6c1aa3393dba46982021a4de96d2128242dbbfa669038080b2469717d2aa7a2864bb3434c7f60dcbd86fdf6e71a993e96f399688decf91ab09542bc6037221375e32c2a83e64619af30397a111ecb08814d1c8f013e5ec5abbbbd65abfa2c3515774381a66aa4395d4be4d73342d3b294ac66ecc3432093b040b1983a51503d11863c39f958caad41604c47417fdb339a6553b1000a1b8b8c7f4d6ddc8125dd48feea28b30911611962d2cd1611129429b10c4ea5e4445131693ca754b465194e8a43d2a0d40cf47884c11210848488806a08ac2607445a73090a739328937abe6d115750b41b17508c3ea906d58c30570e543a6e4ab0c2c13f8437720840648ae68add64ea021edc90b690f0a0919d22ad8d794e3854b80c1183276b35c694e12aad3de3ccda13aad822df1d6786c49876fcee2302a629a439374ca875c711ca639c8f287d620cb1574895a6bad75095899b034c81207d73fea832c4f4f1d865bf0d8c1456147ab7cc4c971974933b91ea53d198427507bad0934a3d016cd91afd54ad843b4bd70bd7ecbb64deb1e7a9a6c5a96bd47866368920cc788694e162cbd81a9965ccd2198929792decc39274d224f7da0f48a071daaa45bd409aa439b6429e913dadd6ad5476f5a0808a8a5d09b565d3d25082805cdc93427cbc708d1e0502947c922c77fd18b31b99f881599351956441c36c86db3c3713d96e4264ba55f2f753ae4fbd7758db6203abaaeebbabaebba68688eeb451ce014bb46a2118496fbd65d2368a6e7684775d8d2e99c7f6915f7799856c5fc02bbae543a7da97632dd29fea28e8e84bf6af16747dd2500e330eca37fa71765710eedd8b1c37c5dd408e7c0716df842ed7e34f47e34b45ed451f2fd0b9e5e94bccb1cc52c68832e875b969156acae8ff67e58c1fa684f3e4bf997a0cbbb04011201791f3f7a0559110cf6833e3b80c0a950680b9b0e56041fd05d6e2cbedd98596c4eec2724d3c83c83faf6afc256bd78cb5bfc4500c933f3a3cf4bd3479fd774d2fd8064d2b796395d84b25ff96892268904249ff00704481e7d7479d26324e97ea4639f8f69d361a78098bb9b300dbde2e78f913cffe24e9892b7a39c2045de0e3b99d1a7e81065ff1d653f49a47f368b48ff4e5944c2288be7a568de743fd26702badbc36e47ccdd637af4893720d8d145bf3e3b99ee13cf74b778e6c5e74997868ef06ccfc545f8a3a1f9c5e17fbf995b2e3b1ef12f306ccf05fe68e46c790b3cdb6bc1cf1ebb2050477d43ddaf48dee4cdb4e3f1891e813c3aed8290417ca2cf7f3432a3f07704ed82e820269e347984bfec9005fe6af286593c93e9cc8205de9ec92c9f7552ce4b99b5f75f5a95b594dbfd621e41a19dcca801f11d144e7822771f69a3cffb01e9213fc25f8d683eeb64e43b2a4537882c8b4627e1af26933e555c5ad34ae9a7ab54959fce62f33ccd791597e59e72ca844bb766891911b308cf8cdebd3b1ef1dd6327339a5b73a3d1bfee18a8c9f322d1e5fd806c42b00f525895f6a08c3b2b8ecd2e637a49fd16b10cffe8541ffb6cf58135c1fdf425311d9b4c23075d5aa59df4e223d116d0068c33280bb4314b7144b93883de461b3435da18c2451b56046b94a00c7aa11bf3b3d30b89368688331c1067441b406cb411018e0e1541840811bd03a28d20364aa607126d08893328f75104a20d9a3883d63002caa0cfe889c84ee945f441a20d7ada5154a6a7f41cfe3a5f0e4015d0a3951ea337829e9e26da508933e8e93900630cc9f097caf4f42f04f0e2858b00b870d102002d5ab4bcb4b4a066a0502c7c60c162858c152b4e314e27153da850c1c2030bcb4a6a6545c5535131ed60329560944a241d4824eb62ed2887d1488445a2ee761d778edb5e6c9be642d3b21659565b6ac5501876b1b82eba82d24ca18c39a594999e05d668bba2026b405b2f54c5393ad763b7ad02a257229b9624f983c9b4870925999e32a5423d4cf4207ff0894c9f698c4c1f2f7641818427197651a6668a67a20dd72313645a805edd20d5c1c8d4e1c8a5438e74d9de605bb5bdde254aaf4a36acfa2ed964397f6045ff4a1282e127d7151b4aa46e8325bdf46fd5939798bec158a95d9a64aa5e4cac8665a934d4aa6dd52353f5b55a9b633b6c6fd59335b9a4b4ea912bb882d22b892fc0e56fa5d3aad54d7b75d5932be931bdb2912b935ca97c85e555dbb81c995ae1c854fde9ae6e64aa5ec55dd9c8543dcb5d51f1b25cedc8554947f2c895caeb574de4caf4fa2a57ab9dd2ad72b5e2912ad7cad4aac94d77a523579155bfaa5fe5c815f6fad54dab563672e522a5574e5a55bf72a2574df46ac7250aeb02046b74b9ba4491ab0b1872753143ae2e6cc855879b5c75c0c9f5d32127d77aee5be9f52e4172452a01dd52507b1b2e6901aa202c01c9954b15a408ace92b8fa49b2e04e9267c04931f2a2ffd08d34917a2f4157c840a466d78c9ca214be5a5934cd5abdc9f50db4d872cd2456d18b500eca50b71dd848f201dc1e407e9d78f285d4c38ecf29d72fd14835501c91584aaa156f56bb5560594eb49f745a6ea4b772ac1c6d76fd849ff819d84a14cfdb82ef1477365edf0f5ba447161b105c1966c328ca58dc506045bb2f18195af875d10a2770c68960b904cd5fbc08a5caa0065541720286302c1d2cf77524e1b2d08ed127f32da650fedf24262c7d625a4c77410982c7b6c971be9b193d9aee1efa2b473d74eba28ed90457289c2c93b23cf9d744b514a40edd56f17c5835ebb8667388c929928edb9d7605d82b00b507bad06dbff5cb4fb83bc31b08722818403cada45577bec2ce6b15dc3331b1e89bed9bba3bdfad105a2bdfa7e03d44498dbba5b8ad25e2d01f51425a05c25fe5c5ab94a29503edaab87f9477bf5315defd292ab12900b905c0d0153922bb908e5aae15a02cab57e1b4197ccc7033e2495f698a1163b4d832e15170124cfac82727d762bce9a85141b842dbd822c48e74c02b62acf8e314e3a669e3f48ba2945947a22167be89c3deaceb2277307d3a446bb4deb303a9b497f9bb7757adc20458e9794378d8391d5d708ae9b88e4265e3757af264b5e343386a9647a1b27890f2458f331ddbd12c11746c57fd487a6330ab2ae234c2ce1043b883add9d0e992f27f55f0caad00d7948bd9a5c4e7a7666131ac81c4d26f95c5a72b5426e7892e3e9b1866fe88cad18342f645d53a6f332813d53dce4ee8278eecf9dc9d36175fe73b14932fc36e965027bdac043c5405b98d604cfcedcc93b9367081c9239236ceb77a54bfb79d3e5af9dab87855371af9e7b5d37a77b3dc1dfd5caf20aba802e27ed4d1eed33b6a290d66d240e5e48e28573ddb477ddd49c63290a59ddf5903eda863f19444490567f885ccdd9a46804e8f518a1a7553d043d792823186818a818a894ce9d143128b686a69022d45e507b52ca0b5f4dda93a7f69035e9852d609e5e88796a2713680bca90ef956fd7e2b17b39694f9ebbd74e5dc1d74d35616bf1c593d3907f6c9412878cb4ea26da689b3825cb6f40b07133753834edbab9709a60338e8b52c4560c12755bc48165a27671348403808044208848b4190287ae246055c22ec1c44583d9317139314489ab49263d5e3771eeb4c7d31e2ade74c89ab71782de848fe04e6ff1114c7e70a73f82f479c8fa24136cb7699174ee1f1c7a92b76b73477a4e4c73f7bab9701acb28ed7559db6ecddd6dc9db88dbae286bf3dc7fd093b4d9048975e1a0225e40645d37f20976f2cc9df648db1d65ad2f97bbe3911d851d02e1a3f95c09a5bd1d99d31dbb3e7e2ead494719bb7fb4a50d191aea4c5bd75a244212a4c8f196f2b6c2993a1dd1f40475976f6f164861a5d3317a67f9a43d4985dc7519b63d4d8eb4eaa3ad8cd3aa6fee04e59d89eadbd7b0508d510be04efa0feea4f749980893c63f48a41399f13a02af1b28e30ab63b1a6542613fdaeabeb55a723577604afe445bad2b2fe5a56422cb4729ea0751a0f6e8245d729f348802d128a70e4777259165e36953ba57ce757325b974e6126cc4324a4f698a2639de950cbb202615468f78667478338575834e8e579461b700c832e24d2558ecb389c50ea5e8810b9af0c212413883104ba260da9337da931765d4e75546fab4273fc2a8981fda638992e3d5600fcef0e693e3cd3214828485904d62bab3975ddee2ad356fb1c3815a00e9dc7f90ce61224cb6139927499e1fdc2d2642cf61b9d39263900af277ddcc9d3ca3b427f3ec81a542b4357732f68f06095926aa4ade2eec6903921c2f96b5db923b1c281ff330ffa08f3d403f3e9712595e4b5c4cd0408344c85f6374aa689b8a76430f5d37b086285e48b27cb3c166d74dabba632aa53d4d9b3ef693393947ead096101592ab18f42357439a5c4eae275ae5733d699576795d3b72452fdb06e77463319b2c874ead21a07c25712f11dc6b0450867c77af2339ae9b0f0e652890e086acf5d030aa727505496003849269468fb93b1e571e7517f6b48127c74ed3b26ecbb7cb7307d6b872a00c1ac0d5c5d343031f6479318183ab89d49139ed65e7dcd0246b77741db970ae1b1ed8ecdf75330425c32e887a297f0353d44728773daea396dc9cc57d09878b40a11e1613944cbd760dd7e49a1cd37d4923a0acdd9951a79626271fb9ba9ac8156d5d3f94b6b23c35c9b0eb81bdef8a21a1acd537feb05ca7ccd9c9c9f24297ce95096553ae1c5c38b02b6aed7ad880246bb773774160afdf6ecb109923571cbe441053f231c0614196ffe2cd75822b094dd3344dd3aefd4ae2bab96eae9beb66d3824e70c677738c15bb2676d5aea78b4819b3214a6cd0e5cb74b2bca89358b0b1c5f51c354e87bfbe44955a9b59b1052184106a1cacd135b2c17620cb4ee28b66b85a87d3ee8e2144f8f0f199b1097bd1e7634b4621b9badea409cfd73badcef1ba118763ab621c3194a911c6eef6d8aab5c5ba624bae204b280fe5b6c9b1094f96976fd224b64438f2c49db8730192c4826d75a20886d88a3e248c1afd1888b98b7014dfed002257436cbcc51f6ce52cdac099634b8a38eea2eb83c3468cd0f78d6cbf46d8479661d4e859ccfea39f517c04931fd8e8fd1a96c53fae0d1f813dfb75bdffe37a63224cec89548c1a9d5afca33e3e622218468d306a017d7a21628c39fac8e933a3cf8b5c7197daab88d55d98a38f5c41568cd1c876edf37edee7512346b263db95719a4e6cd10b59d9852c8e458fddc8f59a1d88d8c2ae4df6b123b6a0917e566b5a969eb0358c38ca086bcc88f398133fba3b642a6effa28d8c3751c221b0c6c4a81cdd397e0350653b5eb465183dbc43a0ea8353e4f80d404fae76540e7fd59ebed32947cfcb120456627963e1638da82519b6f9ed497e86504089c3149ce4970ca198c20832145c6802a493b9ec6283820a3ed9cb100a2ae8642ae0e42d73df38ca7dbb9fa6e118f9753db8c75f1aa6699a639acef41adefe7536fde2416fdaa216638c26d3b97fcf1cfe68a8e9311d2f0d6f557b7dd5fecd9c1899da0ea1ca6ed1c9cfcfe45ee58a740e7f1afee2d6f5d8f286b54e078b08f316634eabb647edc20df65cd78690ab78a3d29d3e7bbcdfccdc37ba7d3349fe381e441bd9b9c63a9b7a88b0097f3d733217273d8799b2162d943e52cc8479c463748867a2c71b791067701885fdba2664e52ab647fcc96c8f3db6c747eed18968239ec3d7cefdd2cee27e31b3b8d6e970f18867e24dcf5c682796ebdadd8060bfeb73a169f8a3d1b4d74ec7f6196e746cd33ea1086b2eae67dbe8c22b3b7df2162fa594ce8cc96cd9746127e20cfa18d9e2dab7dcd151d774161766598a38f2b437845cad787d8781f27cbc91ab15588854813f8ba14cb1e015fcd5f96dc3da63f778d8a96cdbb66d583bf76feb54300f4ec344e72e4675a7375d885cddce194f6fba1b102ccdcc5ca5a199ab2f912efe6866a783fbcc86bf98bb1e5ce6606afbdc366ffbe84e8cc31f066a72bca8d67ae5fb6d206fdf60ec167d1cd0b4bbc1ae07cd5b47f3c6719107d1c61773958f78520e1eae1e3fa12a7bc4dbf6fa8f8662879d867b548e8796ebafcbfcb4db16394ab9cf664d7638b8faaca6d263748b3c9107d106cc34276f918397b55a2b232d126bae225dd3d11521902da59452ee0042c24829a59c68b0dff35dac0a17d43ee8d8f211cf0925ec89f9a1553034689ce02ae6092748c93d4f3c90bf9abb5fb061872e5fb5c9d7afeb91cb0e375a03fb7958760cbbd98dd1abada3b01eac31ca1701f2754125e4ebba2e00e4ebbae0101b7a0c16ce958bcabe72c8d22e2abb76c8da66a7a3660fcab8a408acf6955fa805c86b17425ec34730f9a1bd7f8410fd157c8486956063773f98dc65fbecd67cd32562b57f5ff977ca1886fdf3b0abb8decad52e8631234c2a00934d972206b577dd74b1567bd77558d355be6142d8945675bf8e0db5aae64b285331993eb309a378986e6fba7d356501db0d1a6d4e275803dadcc0dc9823d018c1c2d1924e885c7518884c3508447726d20b45502469047ad5bd0fa4bb349d02d22a1e4e682202bd821c16d25e471bed1406a6fa147396c0021a9c7ed8d11e9c18b6b5bd2c5848b7399242cfa8427f9d888d36b6b4b4fd051bd26fe608070bff376c98112c844b2eb9ba300481cde89d81cfe8ebb38b7d31088af107b34beb92d9abeb31feba3f3a357db4179f61e21296404284f73695730ad952c6d8b11f3bde88e998564216a0944172179c45b0f51bbc46c85c8f5df8ebd2684ff6099319fefa09be622f226318c503ab980683b8e5a7f62e172f08b63ae99141f74b841242fc023f693ac313b113dec87da3e14bab2a3d46ef751d829597052f7cb2edb510e08cd20d4130de61a2bc38a055df5f68dc65f6bfad94e10a79c9128503404f522664f9464296c7b08601a08c3f4b98d11378842c5f5ce1c50b175670e1a245155ab468016a6941510185623105162c564861c58a1394d349451454a86081020bcbca135656547e54544c4e30994a4d2895484c2091ec136b47508c46a22588449d12ba8ef3e1b82d09dba62141d3b22364597da256cc08187615214b182961248cfc01248cbc01244c0124cc0d58034229a5168551864ac8c24d7cb42a56c5aa5428233618ec81c8950f1bd8affeac80bcc4cba0139e92f157ad85426a504911e0e0053f35a637655f46191b4afc552b3fb0c11f2cfcc1769fdf465dd7ddf5e8febc0d5bc344741848d5b8abab90affb3763d7a3fbe421e5e9bbcb612f92418cb0bc11179ddeeef3761d46752a9e9e87139ac0b53dc984dd30111a0652395b5b16b677bdf63f1894fdb282bda71b017c03ca88980812c0202aaf1dc809732306e605e6a5559fa50103595b73ab7acac59afdfa6c95f6eb3a6684ccdc0d9898eedc3f98dcdf8068038040b2b6f7e78eab93e9ce9d7bc7d55ff5137a8d2fece598b90822393e3e46d6cbe4fa46310cd3482364d7cfabdd125f24528a04393a1679e4fce86298e8a62f30338dcc4b2e0847f883b1b07416ffa24dd429c14e7431b19d0877d8c68e46a85a932d1e5504d81510b030093e4892a115324c42939e9c84263cb93bd661a71d80b911f3038c19a6bdabc34eaf91eb54442f125e186a44318eac4a54f2e2893a1c36467bd126dab44ade5eefa5bd913dc1dcf2c2051b75a4a6243fc1469d15274e276fe5315ab5e292a73d79961b9bac50b91d7dc5ad1dfdf44dc535a2b3fde9462339628e36f28b362a9ace2a4e53c54dd6624c13b38a973a19155771d8e950f11597197dc5377bd39d19dd92ae727b4d2313c984bfd14f57b9bd2b6eba2b3eba2b5eda9351e7a2ecebed555c94c52c383659c191070a362a698f1a79d901848f56a994e0e5289ed32ed3a3d1635ae5de88f17220e14f5e7e84774019a368248e70f4ec473aad1a5d3e2a69951461eff0920be5834ac8f275c9856fcea23e9088b01362447154d2a92951606164b4e189369127f664984391b815e99abe58743648c33ec7928abc4452baa9bf1cb33deeb03dd85ee9b0bdbe89cb25d34d271524d4ca1b474b8bb38ccef2afe6177f7168ef62489e919f1b77fbf2aebcc714bd31aa529c434727a39d5e8786610d272fba1f7dc97429bfb17cc4f2861d8f95cf6bf7ea7a344675efcb739f17d59da23a9ca326a3baa364e045d7012746c988de5d8708c3f62495f81b925bbb1ffd8a1d31dbafe00d08f61b46bb04d86bd23ea6f106043bcffd748967ec353cb35d5e4e4c23b3c5b3bd17f2b2e36192d930cd65bd0b1cc4e82c875d10a3114b5fd92cf3cdb18c584e62991cfe482cdd8205b738a9458bfe6439e91baa4fea185173be51c73a19d41b763a506781223b99c62ba6afac9c1bd2e7f057d3c9f457b896cbad3ad5d97ec5fb1a11b3c433dc57de1d8f4e86fb4a8e1a98399a9857568e819acc5dde2f66ae26a3e851a2c3d7648a51dabbd7e4bef4f2f6b9fbc5213afaf2a22bd358077d5fbb3214cbbb62b90b73cb47cfe2f67e45f2ca6197a326a3e6513a3a0cdbabc913a364faf33a344c318dcc2b9ff835998b2bb7e531b2e59ace726146f17042131f11b9f415f71b924bef0ec709afac8aabc0345247bf8818072362365ddef43ac5caf727247fa5d3c86c7a9b4c26092b95a6fb75163dcff9e62e94a26b44e7793f2299c334a61b73a954babca59b2ecc12729c288a2e2fc24674e654b01132731cc7611a298b9071d828373bce24efd759f6cca297be7157f44de51a2133f7d29db5bd95738fa569e22e8dccdc57b81711392cdfc998cee10f25c372ee1cfe6266794d367d9b77e5a2cb9d66a0f3ccca2d4a86fbca5766e6ed8ce8a3d7e4ee74a8dcf44ebba2fbcdcc7de5b1cba172d3572ed6e5b09fb1d3313a57cf5d7a950bb3a944baf67ea2d78f6e0fee127f19e82cc2349dbb733803734976ed2eb96a66af3fc1f6e575218baa742a7ee20a27146c3f0a2b4fd872c1368657512452cae205a99f2454018706157e805208b204f8041ec1834660c21320120e6000f9efc62ac30f00dad81167c8c3dfa5bd8ef1a27296438ee55a98e2be72552ef720d1068d380326ceb81167441b317186bc949277a3fbd4f293cd4508c9db761ad1469038e346b4e1c51931d1c6e9091a59ca01f0c8f43f4491b990e59fe8013d399a0216a01459422b28008838433e0a94429634c440e38500c2200017010043005a00a0058096972fbca0667861060b1fbae0c30a1952c838c5e0420c153d6ca107161ea2e06125159452f1b4e09976c8c20e2518588041d2218a0ed6e50a2ea31cac90830857017717e872a7c2b7175378a1b990828bac059416b5250a2d180a0aa82bcb48bfa35534cb1599be07ac719aa74caf005843855491e983889d8325d30321bf43a5576632bd9655ec52695c04914c0f69907a14a5657ccb59e19c11bffcf8f8d1aaaf723ba20f18b98aac135cf98029f9ef49b0428e1736e8f2c520a812e3b582f146c5d10b8c25a3c734ad81c556238c8271c81aa9388c82710dc3783fbe6018e625fe7b89f9a153fd5e83bdf009626be5a401f3d2decb0b8c7cf121570358ad54347cf88c8e393b74c4f10e80eea89353ede202030a507b7d1838feb4d7d7e12ef127c71f201deeb2c3875ce1f781c8550eefec7d885d1a27b2251596d3591cca558bb7b8f88b5cc11cc663e40a46c25c2b5302f80bfd4a75770c8086006e002e00eecb9d711fae8c18b787cbc34d5d6f07182f3a60cf051f884cf5f1f57177c854ff2e708b0b65aa05b3c05fdc517157aee942992a61d285435008b620908d11cf1ed889270f2c7ca94616a11163a13561832e51fe18a2bdbec43ea26d2044f4f431448452d6cf13ea99a772c5fd9b46487801fb0b8c7e9dbb469a9bf3ddf99041411188bbea6673930175a38a377a232bd62a29066b749e339a21cf19a3c8f326374e0644a6e6b3bbe312717d78f37a048a413b3badf375ce148de2905c613802691ba68f4072356488bb905523d0d4b66c47aee6e777e6b438eac49cf921f002a58bbe4d4e62c1923e3f3bfbebc628775601ca984050c66cd2a4a46d22a00cd4aaf8b95d0444aeb0cffbe0e676d2acd55aa09823d07cad40980f0c1b31d29dbb11faaa69da865123fc83bb868930199d4877ee234c7f2614eedb85a8d7268a74c822e10540967c828d36253c64c85e2c8fe0f6ee3fb677980813d289c86f27e11fda2926d25d6d6c3277618703b580eedc85e8ce713f42bebb10dc2b3ea2651edd6a93b7ec425613b9924dbed3fc8b5c659ff7e4aa7e1e66c20ce6d8a427cf39b1d37f5e9e46b667ef6ec488f67a0e88f6e67c77e7b73a9fcdd3796c4620999a8fe90cf3b1a3bd392f7f6cfc077da0cc708a60919ab4b0e588d9b324251441a8f552332b571b7cdd21571bf6340c65f5a4dc73b150063d7d16c87d4969e3d3a9857b81357a16b96a644f2360f986ad0f63610a62165b24c6163839c618638c718b1487eed056cd3e2d016d4ca016d024f9d9fbd629ed753afa14497b1449156a2fc3384880a20daa049c212f5100654c2b501c4aeb10c5a138b046ac43594e91658d1f9c2c0daa9cc2267710ca7071d239591727183ee4ef344fe54f724571624afee5c5f3fed3c95215c4d504aa9ff853e11795e743fe284e3c8cfc519c4871284e0412e58fe2dc6446b29bcca6bdfe34015cc16fc260ae20cb4f24a02a0470da441bd8e5a707608d8ba6002e016d60989e20ce90352e4c914019f21407952a0165504a29a55409b89274892c290d7090f109ca909743f394e3bf5386235a814ece3a0a0a4022600d2e670f02d390b38ce55ffc40ce5874188868d5e8d983b4aa3ebb9056899e9da655ddb35e91fec12972065b43e485c8557622e4aa234eceecbce991e3fadb8fd86ec247f4b777aa1da097c14722a08cec3b4c60cacf0b213ff1114c7e6cef1fc15d62d475224c7e98ae32b737465d78495f0513316122256c652abb246126d733314461c3822c26a2d7aa6170094adce4eb5a2790c8b10b02651f9120c9d7e59c4022c32e0894c5393ac7a1f6b2479cf6b2c317b922e2d9b30c026197cb19f6d1ad77b6775d746b7bd7bbabddd91e761dc3608df88116290746bf6d970899cace65d742a0e534088cd448845c5da6b2d76a4fa7dff3b25c7d2f590921c8d9682091a10f28237b90f63221ed65d73011ed65ff9eb3cb1b4bb343970ccf541d5a338b744d536d0c3b4f328462c749a6f7214328764890298c859ecccccd43e67e9478498d38240c6b840946e9ebaf3bdba3b4b60a5e1825718e4c73f3c001163eb17393b363b193d8471356a53d099b846919a669584be1c969565fcbb01dadfa620e10ad2a65924465415a85ca708eced961cf0c708cf48f9ddcf7d1aac892fb42a28d915e19e1768490fbf148af60187e1cd02af8c48e4dee03c93019f343ab48b7f674fa214c7dec16105970924e979fc17ed9c96018629517ddcb924a2639690e8e640db58480805a409dac4880cd23af1d289b7497931e6ed3b24ecb24122660dac65d1dcc6aa6d58dbb3a89c9eee2362de68edbb4ac621794525e99b6c18ad50cd33679c94dcb362dabd825a19492644722b8719ddcb8aee336b949d83847964091128d6edc85772c0bbbf30895b348acc1684543c37743f94bd4651add38ac5e543b2cd3e8c65d52c46d54cb3a2d935db18b4a2f8ce048cad1e8c62c2db4525a4982244922dd9825d436ae13691bd7896c86441db76992dba28d3634d46ab548b12ae1e709a02841401dd4e3339db40a83a5295a45b2465aa45db5e9286915b7d3aa4ec8092432abda85b56cab0927a6c85f0f4d23ed4d9b2986a6cc6bea68a2d614f3661e41e26488b65aad29a4cdd050abd5aa5d0892a255226de3ba216de3baa1215150c76dda50fbf45438d40bd3b29f1c243bf6744fcb2eacc29e1b3b3b3b3b56e620c1ae1dcfdbd9d9b9ae9f0c77ae263d3b3f3b3b3b3b3b3b5c0d9a60f041403f3e3d7de300204342ad27374d7a806c9edc38f1e4e6e626e7e626e746e7660bc24a243b1269dbc5754011482269998aafd5dad38927e220c9e9984449d5b68bebb01b40303cd55a6b9b074afe24921c3fb2a4124ec75d9b26ea964cc5ffa7134fcca398b94d8302c41365f7b40f5003354f6c350f506cc955f3c0144ff394e246859ef6e927edd33eedd33fd8a36857076535fe6044a28d4cdd1c692f228949aa12eee21135905cc18e754afcd1ae0c92a928d794f89355eca2dd31a87d722a9cf12706b50f4cc5fbc49ff6e9c9b20e38d1508a8ed250fa493fd14e7c8670401f3132c51429500a1f27dac9134fa0c82852f8f0f8cc1f277a9e983e3df0f306f69b3d7126e955d708647a2c3d5e0ab58af47839a555f6f17268dab46af4f879d3aa23ade226925675173dc2f74d508e3640b1257b223c941c1f9fc8f1b1e3b59824e6442411e747ec894e6293e844e4c9f15913397e34844cc5dfdc449bb6191a12126a050159a024393e4a9ea924c7aba7e5f303d42d1c3945a8a514d9924dc47748723c8693e3b923397ebbc9d1a64bb145d12773174a91b77be5069211885e314a39d45e9499911c5f9bc8f165a8401197c1b610ee96147662944c6c1db98a400d141b0827c7069aa6c831b14197cfeae4ec8707fec02e08fcc9188eee10b2881ee425735ccc58d36a8cddb2611097dcdf4ba6d1de0e4c7cf8fbd6642d76384439606cb7025cbe4e69550ec797af536436ad6271b915e0c24e8d9ec385ede1ab7d857616dafc36da4617881062c146dbee65c1bf166737e2d335c02d61d8a9adeb8feebdb7f7da3dbd740df0969917c5a9c47eb1470a2ec66bb3ab2cf9acc3d1e195ad59bb5487eeb4373a3795d8afb6a694f6a4a664a788ed48580d56a10e58ee2f54f1055ed9f862b6a650e432878b98d1706d7535b9e23aa5bd51ec5952ea91ab92f65862e96ebbc7eeb1c3a1e18e876ff36edaed518e8f915f4df7e4e61ed3f77bc93dfa077186f6ee7db5d9e1d0e2db496e29797b779b8b919187df76727f1067882efae8c60ec7e8a21734c7b6b4187fb2ecb15f52c35e21f45fcc96def2b0f6d7af53eddd89941e7d640ac6461823d3f9a96c00ea4029f6c8d40a6c8c6f8fe7545a35b35dc5daf658cef2be73d3a1758f5dc49cc7828bf86a32cb59f06c8fe52cefb40e763a1a460cdbdb5e5fbb1eddfbf175c39fa6fdf498eeeed7f974ad6a9aa6693f755ad566b69faee1de7efa344e74fbb13ece3945f3469ef80b72caa28bde1fdddaf5d8b208eb74b47c74e8a455a2f7451d8edeeebbfb6b37fbe9aab801ae8dcf5befdd7b18f77771b3b7b82a7ee3daf89cda8635dc3df95379d73f8836e6bbed588b13fe3a636f81dbc98db7707118de1b63fdaff1cc76ecfd8fa65f7287759f0a9e1885bdc22e8877f76e126df43bdc2b4e6aa7a37be399fee95857b5799515dc75a9ee2a6e76dffd762a55fbccec34adab564adefad26deb53c5fded761369baf13a5cd4bdcbe230ee8abb38ddc635c05bdc1c7ee316e02d3cdc2f661eb6ee5abc36b50dcf74efe38fc5bbbbe2dac5577173b88d5b80b75c98bb6b1b6739cbb956a938cb59aed2aa1667c1414e19d3be6d18c333dabb6f41747d160c7f2e3e1ffb3348905366398c772cc7fecd025cd8a9ed395c7cb9f6b6afb8b6bded2cae4a7b1bfe82e0abd3d17d86a50797bb0e7f18e81f943a1c71737165175dd73d68767161fe5ef28c9d4c636de3daf88db7886fb99a96a3a7b0db162c77eb0d1bb8b664eac6852c15b7661b17b22e1854855460e3c482e5260e16963bd39fa22fe6781ddce36bb276bf49c4170f3b1d44e4afbf61b8bb35b92f1179bb414eb9e2fe419cc1227a8c8bf251fa11a5f77019df44ef1f441b308b663bc91cfe5e3c764394dec36364c9064ac12a02a560f58051393a6fefe1a20b330f32f476a6afc577d7ae6d1b2dfefa2f667bb2c661075ddeaf7151dd6f6091e112903891476831014fb073849b0dd55619e28fe4ba8e0d3405966515e392460f8fe9c761f4ee40ec8e4168640dcfd86f34f24cfcf619bb45cedac734127bc491fc026b45024498b88a373225affa570740e3df2977f5b3a7d4bf7badc9571dfed9ef94eb06c3b6f8658b08256221e211ad189d462a46f7df09ffb3d9e6f0af66abd34a721f006da4537d026030ad4e92fb2bfc9da21430d59732658a7a235751094c753402531d0198ea3751fb01c09f7592fb3ce0ef84bf3ff1a0bc44c97d95d8b31391e4be0e3b4972dfc33b52aa0bfcd916f807974e75e92d98a78fc22c6e9c4eb8a5024f98ea1cf05755ecc567414ffebbe8bdf8f7b6dddd595eba469a8544e9b0ebf17717e6daeabfe8635da18c8bca31cf7d9e6a5aa7dd983b4d5b52928934b2f6ae55d35eb40e1f96aee81bc7bde3e6bb79aec34b4ada577b649bc5dd1dfee27ef63ec6e7dde1dbd603b62edf6e6571b9f618a5f77021eb9c94aead106c5c477292edf0ef2e3d3bdcf884a428b01fd5e9f8844eab5cbe82acd87302fb519d4c0753a867ab552f979f525a3543ae80c8947c0b0ed9bcf8cb01505bad2339fbb2275f26a5bb9ff6449392e594ecc3b797ebf21914664dd3ee4c909e92b707e92979faf072afcfb8325ec2a81fa5f7f01e3011541fb27a7809a31a2f20b24a87ac183edc99edf3ed041be356a19654e22f3e8a038bcd89d53e3fb35d13bd776c7f935bf78eef3ad8f1d034eeddfd7acadd80607bca26bb78d839e93ed1b5f794ac451c7bfc025b3c7a61024b4b606724d07f86f9ab2dfbedc25c7b3afc11c9dde422777ab7c271da7657def6dc0de29255dabe53e9e8935bca8bcb57218cbb74f896715a37fad639d61a45c4bcc156893ec29f76fbedc53542e6d1ed8d4ff4dce8f3e2a37fb1a7d52a7bedc5e845c4d1e8338f308ac7e8f1a3c7739d4ccded7eb7d145c98c3e0ab8e4197c151fe10cc83cf3bbbc26eb78d15d8efb6ec5e18517667c3f978ccfc18c8f7fbf9a7faef40d76ea7f774fc777e5bf2ecfe1ba9cbb31dbebf217415cb2e92aee17c425ab7ce5f76ecdd5eec535edfde2b2ebd17f818d9059fbb66933d3329537feba2681157d83b12d74b878fc0663ec70acf806637338ec70a00e3b1c39a860a1021f7638f063fa1e76386eec38fb178f696aa43d496d8a807118d2b44b33a7684f4e694f4e299ab65dbbadf6646dc11a5896afde611cc27822eff06803cb432bc9a9cf96b5a7d3ef79addc2385ae9c22ef9d4e34994e66cfcce1ce3b9fb4dc0945dbf0e43962353058ada5c8d608ec86ab506db537c760a38cb7c579b85f2b49f57cf4c8e6449677719ffcf43cb18434dc64026448842784f27671dd8519b66ae5dfb7f8c5dc7da74d076b7fdb9dbafff6c7ac0eef1ed32dbe8dae119d476f71a992f6e4e85087ee7cb44a69957c6db5aac5e5ab506d8d7e693afff72f42c6e1ffccc7281e3fa6897974ac9319fdf88b3a46ef5311d88de705aeadf6926c3adbce086f2daecb6912568b4f4c51648ff659ed9a46757464aac3d11a12374ae4affa881e9de8d56cc9f844ab545cf4e8d3aa17173d3ee955e9a24728adb2177517f545da45f1a2c723ad6ab96874d18a8b5a5c74ba88bb0875d1e34eabb68b1e9b68158b8b5c5c844fd7e53a5c98bb17bda4143b115ed9189461d703c5e3da2d16d247f19841e57098f13b8cb2f0c5457577c1dd4b17d5e1da6a4f4a08ecff2e878baf4adb7bfc029f208ad94a92e5a5a6640ad9e4afb67ab229ed09b527afdd4c4ae62227cbb3401dc9f2dc4d962e6e1ca12e9422b3b8d127cf96945328f68c7036d49ecca63092e555684de4ea736a69eff4f80ee3ab0d1c0bce1173ad52da6baf456f6c3f117d6294de255ca5d4160d815d420a9c743578c99ca645ed0679c95bbfc1d3993cb189fcb97c5ed49140f67bd191ab0a0698923743966743ce3a90e577224f6c525b3aad4c79b42ee46ff2685a4cd716ac111b43f9b213644a24616bcd238c44864408c14d5e913f0f874cc23ef348b9aa3e30255f7d74726690bfc9d303c50bf2572b18a00cd9755dd775af60a866a86cc83a9025814fed757499d7e5daaae4be4e863914a1355c1159732a126b4657f4404e8544326d8eeb79c1964b50839d3b6015604f73a1953fd85399e84962e5942c2fa7c8f2d0c70f09650b6ce479a93d5f320becf578789a21adba70b4a1d207943fd106fe449b6863ff4525a725ac123609fa63024d39e5a4d7c710edbdc040960fbc95abd80198924fe2a4448e4b64c83adda33f68b48132e4271ec2477bf30af0e78978d38ff4d61b9b2cd844d836da09ae8e36fd1b31ed512143ae60617b270ae3e512f68b36361f148201d2aaef24550053a98532053070558235a292dc4b58d24b38dad46a21feaced443836616b7b3ef001c7719aa6f9e0d31eaa75a8e42bd6c5a91c754ccd88000300006314002030100c0705a3d180409355b5f714800c91c65868501c67418e42c818638c21000000000000004484490335d84bd805856abc98932c618afc14724ba4f217b67b8dc50f3c313261647db033be03bb1216fc3ea226ac07bd24c6f11c830c5087a1415acfb406bd0dd6e1c6dc87774ddbcb47ddd72f3652721a5fd0af878ffb00e5f07cfec89cfc1701e471c295a8ee4d0a9df4b8689d40a2d339c60bcfc858fa96e9dba3c3dd39164181cf168c370c1b05850f631910c652ccb6bc553352931e703857a3c7e405e39888395596b2ce6c2e47362c780aeb95302a8d9488fb4204060e1c56046c88a2116c83f6a37e4a816f7412baf72080c1f719c6417576e0f7c30368861b08bad093d02620ad402688bf42af79f061a45613c9e6a78c1c082c2280d9e33f4a8344118c250cf9bd2238309d1ff83ee484b0dd183a538af47ea6aed589500d61e447bf121146076c8a446cfb47345332e90c7983d4bf7666d0894c82230f5a29852a444f621974f8162164c0df3a50d77d606624d0de0e73038fb1a256b18967e646174b401d6a15309a02b41226d5be6b439fb37c560e69c12594f80d94bd77c5478bee33b355458ca42c292e2ef630001501e321873f6c58fe08a8be040d34f9a3d90436fa567c96c1b709328b6ddca5b605f35260b77e5996060ea861e7ca08171fb730b9b2ab1a1f16bdac1d659f62123205fc584b6affdff13e738c15fa3c9f8d3f6c1366f8b8f552d0bc8954224745e86f14d973819312a7ec047e366a7d9e73a25038ac4f631807d7d9e96b13bc0e0a8b1b740b54d22e504337f8c243fb067d415ada0b8c2499b1e6b7fca0ad51bfa099dc8314c9b1c3e2440f6d71b8e7c297d27308a24d562c16cf0f6a67c39d212744fed277d29794597ae175977e47231d10336c0a39a6a6785a4579b7dad4ee4fd5a053c02e8558dedf4bbd4c3f8331c67715ad07771f4c3c42d913df954362165f7bacc2f043900a5bea2003b554c9012d05f50135887a3e52d00993360b64ab5e3b5d0b8061b167399ed093261fb18f99b3ea645f2913fe8673dcc4e0c29a69b9d99ce30cea8d58a1ed16e79fe043574fbd05c00d2c23882bded0aa6dad3270900a30fde21faf291bc6c8207a145863374bf03881ef465ac480d06cd849af17d7bf8be483ae522316fb95528eaf028d17cd36d4315252a047cda8ee2bff8a6831a736eb5ca1ef21697653162720e9e3d123a0964d9db54a291b0eecce946615fecc2a66c704f65d14d48bad340eaaa3c7ecf8312e82a9acbc06fb1c26470b0385c61f8bd950fe6ec90b6a295405737487717ce2077ff9630a55f1dd29de2fb1fcca5432f017e9b9001d7e466c7b572dbbc41bba54fa139acee14b631b34a416706426373ec6c728ffc94b8ad608659bff6d1e7c950dc1b35cd1cc9556647e7483f4c6fe42a9f5ddf83ea593598bc8dc681d719bbeebcc3aeed7dbef46c7de0cd2a66e2cd39fe6b033c8db17b7eb9b848effe0dae0aa427289682e320ffef1e8e9344d0dba2d8f9db295e2df42ea4777d31fdc2c445f1084552784d872460a13c78c02216de14e8dc03abdcc1f87ada16af91da30ae143b77836f6411eae1f23cc35f2fe8e046db4afe0db9795dfd98af9b1899c343dd241e32b8da94db0aa103a181c401458f64728b41d95e135fbb0186d5e0a9cba26b843432a7e9e7254ce0b7898bd8bb03a23278209b8e2838c41826fb31642b96e847ab05b7211f03d18ad63f24d62b72954e353bdcfe963db21bfd51f55ab0b58e4f9271c798e4bd296a2a20be62432b9e4e55ab6462101c0c5de2c5f8708df0c00c0ad0d8e5625a05913df6a87342ae646217c11335827584bf92f3d1c60eaeddb14d64645941cda5768a69c7dd38056a3768439962a17d48aada12a0d8aec3010d819118f758944f5173f22556df060035a407fac93ae698df92643033faab90dd198dfcbc307c980f8ddb5d3c0d9494f364895f3b3511235c523a09285420fb3c836489817228d5a35f93a5757926d804bb9d9eb6b2cca40ca47d183e39f0d906916189de4805518e2d40ca6b176cb13caa6ca07d642a2dbea94d81c9363dce531f6d69598ee0c7dc96d6a860d1fc4784fc3f4f56bae41b2261283347fa297f3815edac4631175d5b6107b33afb658d9b2ddb0bfddb8d1bf71c3051aa152cacb9078d9bab1a4c89437c64b0ba14e23de57d52b62788cb97c422c6fbc50832c964cddf37380d49424fa3d93fdfb44d7f834b1e1a2a83248b128325212df9f5874ded834cd4537d96a2bd7ec5b5d4f97f573f0a4a2a7adbd432fb0ba7a1fec2c9837a9187460d4911326b4da7217a46a969bced6fd3cf5a2106839714052b8f7e39439d9008c2bfd42413b849639e2462d36860026a5cc129f70a1b2e42dba300f4d801e06e18b87894ea12c6aa504c9764d52a373112dca0cea2ad88e50c4d2d0ee26c353ea8c4210fcc6d14b3a6dd1cda875da345514ce31ae98162073ef7742635ad49092380514542585dd7a5b22e765fc048b532b7da46cc5de934783efb71e1223943c6a7e5b4341a7622941acdf1f222ade84e33815f110b5c319e263195a17e17952a9a62b1f459289ee1b4a32b7fd222148ad7e39610ed726bb6e10ca9e5f5d73268a1f858056d77ab3623d683a5b4561c28e052090d7452d59ff77cc0220be26cb28ea4f925cfc601a1a15227d3621804231e8aa1cd4328e21d9b241855fe13af8812e0d63a5d0e75baca829a0e6e24d9678ecf8a1b52388bd9ab11b54195eaaf218b7c007d616ea5038c096448b8d6f90ddc0d7b5d491f49ac80bb30edd1cc4d10cd70f0cbfeaa8488f54f8a36b4e60e068e65d0ace9d2a84e96d4cd4874c1d2a72a5c219dec99f3160be053681de2ceee4e60c67747d1b82622c347c73ad6f03d3ecae43559441f235d84f3e679edc7729a17c5cc0ef19953c3ab01a4b3fc6882932fc4ca6798b8563686b9efa52a27cef9f59482e375da2bc4ce1bbb86013cb1857c06e215abd9bd5b4ae1e529ecdc6e58babc20c464d7d3622d19f492867c356265c5730985b0bf92eaffa3c7f5abd17bdd369c5ba91112b958dbde9cbc604a0adfddfa3734a7cecf3956a778170dfe0119ff073ef639995e3e470893226708909009350dc69a9aba61fd74d51fdb4953f648be624b45eeac8903ebf4919b65f8bf2f04a30c88fee6c761d04f065a09ee6882871bd5b77938d90b4c16916542a16bbc86e745ff2567d6fa46d371e33fb69c293d86cb783d2060c3355fab20aae959d88af7f7df57d02b0fe8efa0a6ed8aacb49a9ce41cb191793cb89c53d0200ad37465cb6b5a18d2093a9cd4f867ae7ea4563174ad7f3ac2afb12b0f61d8caccb0029dbc70f437609682520f7885787abd968a4a7d4fab79f90db38a32e8b65f7882336497d64688cb8059545ed3c41d5821bfc3e47efd4675768a32ff82dd04b98dc734d14bdd7af799e1470b7f5f599d6d37ae1ac5cd79c295703740152b97e2f2ccafc3d528ee249f14c64762fe12ec4e4672a59715a694a018fcdb30a389c62f7ec776c52f2cecb5c8a2589ef8bb94185adb3e73eb37f3364e133f23cc54397a64c54ca031691e3d3775d25c13e1306cf0f9fef9ce0734aa6ef890edfec88d4aa5c3a41f282dc469a0c28708af297ca5fcca7b9465118898476d393ee586eecc3aed613d052602513c427844d06919ab08d3caae630c8420b0c846fe2064883d92c4ee9a5f358fa3de0311f36f65f7a128f9185737ce7a1a8972ddbe1523b7a6514808a54ef93818cf0f7fab7906395f8a78e591ea7894a8996a42b27f0589e6006a0bf1e4f3a3caa9f6f689c663cd6c9500834b63c2090eb9623ad36fb7f2495003769dd2d35c6bdc2106660f48140f388fda32674e4c070aa860a9886e2eb9a19f605c0a777aefd50bffb3637a8623cbc7e3eccc68054c14474280b247b794c522278c4ae2b019f492ebe1fe7024f9f6f7c96b8b75ad0c562191c583d7abf6092b1e3dbf6576879a50b8456a55472c1331c0556745b3cfa1709ff0d84485f39956ba1f6ba05d99b6b62682d26b8b1554d76e58c6926a3e346549d0f35dfac225ad08bc6a16ef1cb563e508a02504c10f85513acfc05c43f2e8120b5af04f601b721969da0a88ae298170d318476e2119d6c881b324934299c4dcae108118c38878427b5ab6762b2a5e3fe03b411b1be1af86f1a62311ea036a939d528eea8c0b0a95b0f1c8e3e0fa98dc411ece5c0f92d84f77f434a260be7d913dd12a0a2f222fd1c9cb6baee24cf5e645d5184c945e714993b40578de01adc26cce0f55a6f5c8e1e41a086f062a98edc40662a7afaa558c0ed3563f680f5d714a0345f825bbbdaeff0c529ada03ff4a2ea00cb147ee256d8e81ac88d52de36465e977fba0385e9716908cb0d5b505d3f806407e2ea82327139237e45e865abcf59fc8cd95bc136c20d7658d1365a7afa82f154991d2933e287802af5ffb87f6c2cf35494d904e5e92fb351b151652cb7c13e0986f58137c6ada2c09b11b26d769a4fcbcf19566ebaf5ac1938e935dd5f5012d1a0109708fb440aca55460371f4f0247b2d43c092e87139e1d412c035ebfc9926efb6bbf53cd0a51787b69368c21fc47b3d01cd09067920a2aae453bc8b54477213b33a09736339a58878dd0c19c0b99b9399adedfea9c7f7c2e128017c4551b7d60b3815cf51a8801eeffcd77edeed9ef4180e9b09682f3eaba0e2883fb218a547a38bcb2b1781e6e15e633f71d8d5558314fe9d1806023d6a610d65c6e85fd07f3881a115afefcc00b0ef73d22c2938e4358f671c2bcc7ad783013fa6ecfadac19ab2327a00e43fecb5b4ece85558e7c1b44eec0f7194396c1852a1f2df607c6f62ab013a00729da2fa46e9d2520b89d5a033aa41449388ddf02015babcdf62231c3b0f7431782380b30327425769eb1b49d776997d5b5dbe91db2027fc320202101c39b1978dbce618a72bf61d7ce111ab1a832de6ec1fcedcb0ed0a54b99b18a4e06902e7343aba7831ac2e9c59c340532bec758166341f5681092e5090760851a165cf546058866d752f0882c7bd3840253f8a836e1e9691de00e429ccc30b966baa4fc8e91127bddfda9b1021d9035d864ed8eee2a4eec21545b79f9f981494c9183a8285e259fa4774a26d565b0fa44718553856202d090f69e6300dfe64b6f2424a30a48ed28961d349bcaf8a3cac723f5a512b72ba976beb8cb24e86da4a73591e5961cb689a504f568d59dd24f52d8d0bb8f7ed81441ce045078754c55c18383e3c275f22829a26f874bbab1be34a506f5224874cfa98b104f0c138d82ee5b6d37cddd30680ed64b090be564b1fcbb96c693567ce6b1b2c1ae9208ca9cc376141b36d8f0dedb4c27101b8e09a0e8c598f2f52da671bdff6e9f17ad7494b08af63982ba710a58ced25badf7ce2f445e7b960ee02d19f98c48953a48536c154018ad5ef8e23e1f1704808aa4d867a0f3e6d44e55628c0aa3eb22f50713e6b6102508055a126e740b5b41b64c218b6e46ca6021ce14c2287b54618cd4ac97e1b76b5d2e0804f5015fceab7e9ea607f26bdd4812ef5ec83fcd8f8b1fba7f3adfd826c3a585f0f221235a54af593d6e8ab8cfd8080615f8e7c5d1eeb41ab4c14457632586a445eea184bd7a192100c946a244145123687b85868b549a1614171307f98b55471f6879dd15dede19e7f98d1f6e4dd2940039e979a61ab62661f6635b43b013ec4dd1da38083b920c5b01931fbad22a28a9d49a35b562a9aef5a17d30f8900b24754da5784224072aa567721362fabe727e8ab5dd2faf81854fa08586e41df54002e45eb85f40d6efdf5778e342b84549768e40779c5721b224b49d0031615607d28bc5a21813731ae2efd6d46d414cb1eb90676e1625ed35e9d020141f408e9f178f5ef6162b34290871e017b1c0a6b24c48a493ce8f4f333183fbbd634675015c9742351dc3232a1a475294f3d28fbd62c093cfaeaf0e8dc1e492c1bdff52b0fc2695c0733efa06334f9f9dadeaa9920a4cce858205315e017fdf43d4514e4b2e994863634b804520d0856725cdf9cc065911a02b904da8d2fe16a76fd1ff14500b8374d7deaf5d58bc7c088642cac70874f721b937e9062fab4d97d954a90df48e26262d71025865d9e0e6b88be8a8ba1b6a2006a47213d31dcc3d1415261f3d592afc58465ca0f5bb9a0cbc0e62e8cb8b2e7cbc21255777a6205ef05c12edee22c8a03a8e0c3428720680020c702194df4843baa29ba466cffe3b84da8fb2e1021e95b41830a89b8d3cec1c060c797377b570e0b9d2aeb41727557e4f011550884d9394f74d640e2413d5633138624e5f581b7f3511e96aae0307e839fbdbcb7ba440be516d8e7b0a796ef5dbaa8efacd404e58b4c28b29d3d53756dac92edbf1ba2511318b2da7fbb701406eaae8dd06de221f7673851b6f7a9b70b9e3c3c5e5225e2ba239c0674ba27aeb3ca146741d17f6808efb381bb34c9ef5e210cb7d3469d9536f510195ef878abac05e1cc5d3ab412bac5e6ff46c24565a86bd00ef6d40829b30981e63504d0cd13a1f8f8aa05ad8ea94a35ca5044ef4bdec5a7a0a692d0fe6d5218f84e67774ed8256554ff06a33286ef1e204d323b623ea4363f5be6536756eba25e303969b2883c1d049f5592e02740920bdbdf2989a2a17949563157441465db5996f8a565903ab28b45f1dbd0d1eb1fdcdbc93ec09ce1affd2a052e9973fda3796df2fc0bf28382cfb16b87cc9838f36821b76828ea5e949093021ecc2e2c28e183d7831b07f1ed0ae7b293703dbf62ec5491bcce2397941a590a6f9187a624c03b761ace348ca48a18fd4af8ed935e4477f1a8032e57daca1f3c56b2e71bf548cd4428fb469d83054a67d63e555c9a00d012b4a16892253837a31ddab03f4823fa24c064c1e40b36f85144081cbfa4440e9a9554f654f6930998a0a2274b934d3d9f74970a898b96f3a2d015a35f113a74d49a70444c7264a0b7b3c91ed4c0b0f9be2ba98fb0389926a39129109e3efd40f307c24a0ee821205c3174b2de2312a54f05c54fbe26f2ce85b4798d276ce1f0d66439a0df1661c23f13186782c2fcf1888781384930686643e0d1329a03709c3045462f07c2b092c3cbf03f110a5c26ccd2b0d81265cde99cd72f16127595f8a785730430550787d4451cdd85b51433952a5c034ded4a23f317b17e5105a7ccf0a8bfae99678a6806b022ede2c13a316c818f0c76132e55ea62e022107438884e5751f0d9e895fa92f0007cb1dd74f526c74988892dce8405d8cba8ab9c870002833977c425cdaca1021bbe9ff6c381122eaa9c52a9123f02f010f6deb1d5d5b5f2ec16de3df3d8eebf7c899143bf0c3d63e8231e84199ccca3e22a70e4b587db5d5208750dbbc01ba6be5f7a87795f05d18212b03eeedf0fd213bde0fafc88dd7ba686ff60dcc3aabc1b6063904e247626dee77f6d5fb1b8b263c97567ba5404a4bf1943cbae8be5a3b1484336fb920a0d981b1f2eeb59e6fed736ad2ba572ce852873a29992186e535c5d294b6427706e31e3cebacaf0e454e9c5a6c37f74df85aa77cd61416bbed20e39715229cd2d43306559e2a013f87047234d90a43a11e7bf95bcea9843a1f5370f5efad73c15025687c496cea374a239c8aac5a8c2982c2453e111cb24ef6ec4cdc3449041f14322764dd96daa6501bd065abcca486ac8e3758677286b399bfc87576f71055f58cd1f0d2a78fc22d016b5e8a36af6e267714da42af8226383c80ee7f4853bd2859313a99e14a2318e4f308f72e179e5f421ac9f4cb8b0bbff7b81739032d9b5269a9826db6c0405fc198a24ccc41c2448cd7d2a309887b561b3bb5d64f3f96b159c2be01955402e7f2dd0d1545039e8ccb819c1a3ec046d8608189250559400d22716475fcc83040814e15b2abaffce11079bfe877434279fc45b78f773744acf93f53dcfc27f70cfe249bb38c5ab1bc75c575030ace72763b6c188869af9860f0b2ac9dc216e23e125da8738d230c49f60134010b7e556611a15bad0e9a62ed19e2a693b19069d0d0e43b87f2d30db61bed4ff7195ead10b3ad134eabfd0e511c4d73caaa39911c9fa3744c006b8f16495bf0fb0fe3d74de326e2f970bb83058f68e0191f2c1006b24ca390ddb4a574ced0fa14ea6381d1e34989e6248159c87b5062ab545742285ada953307416ad060394e1f7ed678b2374d0f88d28d2b8c4c71768f1c271b64608f00c044eb139c31e9bc8dd5f1394e063cd777ef4dda8f9b281bcf9cc71a04259288c7382a44e0339a7a6c3b8dd2b2d0d77304fb5d896616f5ff9f3e6bd8799262a207715cf1805eba32b4bb59b807aa8f9f2c5a98e8b92d81e3c93282f80d389dddf0d420de5cc05082885e9825f9c3741f13035b02c1c58ea893e9d291b8fc8ff948f010632a2204bc2ca1102a30748e1e057b5b7f199162c8da0f2b8c0113a73fb7b236d39400a8d51e534eafc0aeed9af5e0bcc55a50d0c338b54d1683c49ae006f29fdadf7932416367f28446490633be4258e3b529387c4f483a642719fe47b34542d55439c9637f275be6a417b11f8109d4995de44c59f8443c98fe6fe09587b5220c5f3cc626ff2c0ac9e6b519043ff82f5023daf306a35c06db5412bb750b7d072c0cc72d66ae949004d08907c2d95e6bc627f39c2094471677bcf74a37433cf20eb8c5549d9dc69c3269df06e41ae72083a0123f6f4fc299b0bfefb0528d52e94e3080108c4a71d8b57dcd8a001f8b78621eac7b981519786f81c5a940f3153a351bc6539c92558a1f1825d2ed8512d139475b2b324178d19e6fa4b945ab922a2ac3b335505405005f3bfac168d04f5eb5ae48a233b4dc6630050b44b41a7f2fd26b38f4186f56faed9ea4165ffd106f8ad2c2544350a40a50d469494900c702baed1d15be5af23ff571838bb532b18bb181a3adcce55464b83910c61d77f0662d9f4afb7850450bb1816bf90706c8ff0990ad1bd00aca15a4c22e7495c52ebe73824015c26fc9a35008602ff0d9f05970f80db4620d675590de293d53ddfb520ac8ff28ffa158ba6b99219a4ba57710265e2c4a655755d1bf7f510a92eb5460936f5fee59ec6e01202910666ade846c070be578bb314a27808a37dd7dc63f9b543f1a428d83246104ee01756bdc1101c387ceb8d02b8b890247f91f19ec1be3e8f0f4439c5a2f123c748cecaa324cded5c77be0d746343147876bd4a5cc660356b99e67ff6cee0ede2f44ed7430ee9a83b52ee4f067a8f46a9450fac6b5642dfa24deba429da172ff622013ab96f5442054780067561216412d5628bd68c719ee2da811bc2529a4c882bca5436f2d60b0af2dfffd42b5aab41fd924309e1f3e700f254745676d2d10b4070344de26005ca16ba78768cfabe66715992a20642adde0f5a2ea148cd3fe153ae12e19129f99694b779b71176c2b4ff04bd1b7e1e597f55c5ac24762b4ab474f0b40e24b9a46760e97f9de14790ac608d2d459f2dbc86d3254ecdeffe51102e5a0b3018ca47de19aaaee59c22cf6e2e1be4a252134a7abd78043d63a88cc1ec0346436f1702778a780cb3f04185216e16a662bd9688ca492a8a706c8aa7d79895df2d5e13061c48adf29af7a69a2f6319f0fdbd94aa39caf68df68824cc2e26c40b38ef3648ee965a9911cf478062488a855f15d5006d86b2c1685adba4e67cd8428ff51a8f51141bc2d4ffecb973e9e5397e144950ba971ff15da3ffbe889c2ca2e245280ebabb02b3070e9c9ae29610c8915b21bb665d2203082d8cc2498da351ea9abf3fc8527ebd8ce5f6c1932f7fe88a5f073bd6323c2f6551d490c8a0db309b930aec536d9f397634044a574ee3dae03ceb4a6c20d810cfa451c5ae944ac22542c7a22ea454371c6f24b65ff39bfe2a053751ea484f59995d8d6de054af4a672a55e0fa544295475f9c40b5940b5bfa5808b7109bf223cac7cd1fc81e2352fae83189052b99ec8408b508c80014d026254018c8772787a1865e5491e3a6f3762d190d01a96c6792444867207271b540d764cfb86614726442eb029d03b692785bbb22d94a3450d067704542802a6ea313edc0da41eb9c2c048a098c3ec72c09782597dcd700b83680cab046cdb059da9ac871170020a8e1e2b5e49346c70f2564fb94534f5114e9fc6e9fa2d02891cf633061c386a63da20890118d5584a6e2248e1820667ada39d5853404ea6a1c41aa5b7bf885a9cb7e36fb48d709125c42ca0a0223c337bdbc0d04f2365f4d0324d7a5198acc1758ac8498aa65fd4e75d415fc86880bdf042c51c3c4d3f955e6040128e60cccae5200dccccc99fbc74d335b747e70e0010020e9caa88535ef6848e503981e8fcf36400bbca9cd392100d3f05105083e9f59959c94e9e5a786a24df709d49f227d9c338240d30447e7ddcddf32896f6561d686ccbad1cac3aa91669a64fbf5d8a621e1f46ef746a9f213dda549060cf653fb3f0bc3716968d7401cd2d5410c1a8e7eea0fc76103728f21de4c1d1ceba434bbf3e1fcd8d0d56d13f05984c342aeb04cefc7fe3280e9729d267da7b0d372cf17f2ace52f941ab975f69d4f9b82078792496d9fdfa81425616dbaacbf70ff90c94c8b44cbd3d9017724aa01f149e2f56cf25500ebbc213d2a627cc79acc4627b6f242520da8fe15a7b4f4b219f6ac68d78d512d728257ec609fce15cc5c582ee94d8dae7ac92186d0c316a52bec3023e29d5108e38f537b568432fe7c48f6f18e9e18a4a45df46d73a50243da937c4c7b2f086c4c04020523f4394e0b1a3f97096d68a3348b016a36d48f9d6d8e4e3701213619ece90bdad9f1654a05d6797d1518421806f3f03f01f6ecfbc1dfda9ffb29ed6b1450a3856968fb66c110e11aa2464c38221ec1a9dc1e8e37c644f91de1e04bfdaccd222acc7026fd3c9d954112c5020c2e8344f7d1616544de04ae058b4e487904f418feb834a4a0a6595ae9e8de1f55b107c65f5b4732a4c5ba4a5ae3b00f7f89cd1084246bf01a4b932854abb26854b9ea89f40de37b5feaefc3758a295b0df6bb3f520827cc64cb0a00bf68a40345da99ec9bba6999cfbbb4fd7beb8b9304e480325124ba3e37025ab8f620fecb6fe79a587ee025b3e00375b5453710253d9a40a174294ac2f9421ea5eb240c7ffdd55e0e3f1d6dd23138b044d68721df89eb2baa46baf3196ca9f0fcaf0fd59ae6337f1e56781292ab9d0798ce3f5f7c8917703100877c28dcddd3eeda3dd8427f4607d9d9ed2e55d5b49065552742f41a9b88a3542b5ef6599f134609b379a89626dc454d8b64b23ac2e51a0bee8ab9147da15a4d767e69bb6be69ac6d0649e98a2700e9e26a4d206cd8d09e9834e0167818bda31c03391be13143017ba160c868e3daa1487227b441a8932f8353045367cb40c402f748a380bec64cd992f422bb5db44a1c33b0feaba2dc7a19a2bda94db092a745b5654cb324eb70d40b5deff028fa69a0e3a88c0dcdf70112607167e9982d723af7b89666775547bcfaa6237be74930858d0b9f28574ef6c8411b7084f030647b02dcdecfb0752826ef41c0ef5fb876f895f7574b008d62019682069cddd2ab614eae2888798afb64ce10510c6a4e735177182d1c5487ac346633b15b79468aceb7f1a663ddce95e6bc340914c3579a9851dfa0a33805f416754a7b1d38a6d1f17d729a755f4ee204f28eca8776bc4fcd77dd0212ea093a5a9b80008f4a662e76468b2e9c6b6178a7b03d14b7a2e4702b7e31a9b705b2f956c7efc7938ee0edadb097dd2e9bb5504bc07d6554dbcbdb2593f884979962285bc67c2b7d3b35f05ac58fb34035ed3162d6b8003a19af417546a2e1d56e9c88d257211e00afa2e2da365226b7255074be574bcdbf8e1c8b63633f7cfa118f1168e4925dd8523de3bc958fbc2f5e02b919008262f6022bdd698389c387048c44c25dde0f9cb910815794db2212b5a6c2cbbfd11fc970bc331544d0dfa7096ec8e84f3ba627c2e2800fc7ffb24e5dfa73454e560a53fb2818ed78c9251bfea59665a6ec220471b262a630dc8c0ad52e35270bf01d3f6355785b51fd070a75ea9fc249544eef153edfc0b94e2b4914acff14ead56e22236d6d45dbb2a9b829d8b74dba92117cb8d4e3bcaf6c7119c8ad068bcc098e27497d7a8c29187398b35452852f9befb3bd5b074df8bba7eea0cb2e609cf995d3f15351367a758b7bca681668f947c40a92a918b284cf892812551681caf26b1db3b810527bee23d63d6867b22434e903731e4244026029748d91a41366112ff34cfd75f9ce4cec8bc9c5046fa2b39529f4e870a0d6b21642d1b86aaa3481630696758a2502ad7f7307818cf9686ff0c0bde84208e072a48c9fd9b9adc82a9a9690b4844838a7c3956213228e03dc4d01ab8fc21a217d08b527f1003d46b5377cee2b798ea41148b4e549debfb3049c76597dec9c2a5f5129bccbd5435accfa1d9e31bcd298d099ac0d93c7f166ac824f2f8946bc1aeadbf38ff042bfe72471a8264f2e2a4cd9f87120c2bc1050040926b931fe6be2ea2d6230d2d5f5cc6fffb307fcc74c618589bf70d8ec44c44f34c5e36f8156ae0ed4d500bd5007afe5cf8a3bd78fbb9d7cfcba2793352599f03cbfd386edb3fe6bbf43097df5bb31eb8d648e1a8f7e47dcf3da0b306fe32b4ae807e616b186d1865a5167efe14708fb74497357ee197a9906506e0a4bf135e3df5c9df7be9f8cba25076461f828885ff23a19505f356f30ab05ea1db05be4edcb8eb5c68c0e65068b4277e4b7ad193bdff610848c0ed216e3956366a5351f53020ccf47fe6ac53ac5b299921cd936a3b572bf2eb20e7a8897bd64c4701a847a2de14bc91bc73d580273de063df1e54b619973e2d19db0b964e3112fc00a4288adf923a48414b2430ee3d4bf739e3f075eac071e980b4146bbf9a0a041afd3698a713335bcb7360f260fed693b09d34f5e2a45281c05ae84e9dd163726c98e8183c93ad157223ffc588c239b437a90c22573a83e2e0026c9da348cf2f4b00f18ce0297aea5f1f972418374be01289913b281a56e51c4e5344abdfa629cd9bd74b22e735b8806f2ff3378f8045c680cca13a8f582a423614fd90c924dd84550f727763477031c8caf917ba3a5d14664ab1f2cd12658458b883817552dcf603e249107c6b72dc2fbfb08e936399da35ac5bbee320813bb5acf9770dd4987523dce38e0c5d028c98e3ff80dc875c1849c5578c8d96e2aca82db95f8399c77130550c41291470d4c3846ee1ed64cd94a61dbdd67ad10620a110ac6c751a4a2f707887de2642d5f917ce1364aba7b89393c3df327ebf81d8880a9d042d52a9647ede26d096541e0e37f4c0b1791eb30a27a3704e9ca355f3786e8b3ad52807019b34df52a12480ff27c70059511cad0eb13d47b67fccaccef29c4ad9844b54dd910cc962b21f729cb2c821a53120526837065aeb8048c874963f6f2bfa4a8e05d9d007aa93d17cce5a3fdc526316f7310895235f5bac7eb7f279dfe6152fc393ffc5c196ec9aa2fdb5a91cbb8b09447e44049444d1849b26a139f913665dfb7c3b8234b6c64e312d1811f89aca0fb2d44c985eb7e58c78d9539912f0e5194d63198439b984f8d25062cfa5debad37b390a66e426d10e327ed7d6cc88bb0c645eacfa94530b4852449c8833b44728a133d15a36d8479413157522d2a62d66964ba12c828421993282c90aaac289c8e7688898a78445b9c31fbbbf139194aa3cafafa6364a2d60c033b141429082af73af6f752b07f3e038dc905f660d9cd4d6d783843f3f89635f7948d4c068b08fbf2b3e30a0a8a66c7025a1541018dae6733841f582bd9ec20a4a07ec2e068c9b29228b8462a547cf580d78b5e4361a97d9c32baccc22b272889097489efddcae27fae72f470e8a084bc58a6241c58c2e2d04e0352956eb1e1c9d2eb52abaf81ff9e02f691e73f4832ff182f37e8ce93722cdf011234cdd583ed90c5f0eac4405476b36d05a5948742495a21b8929f20e365103c125d7af2127005d11d78116d136ef89daa3cdf35ebb3e64bc5275234d89343dec63a6f65ff2a38cae4ee12ee410c1c81991db33ca0fe124fade1f7fda953d1ed50e647ec83fb319af74d1b5d5031fc0d921bccb463754a96791c91b4de3abf67cbb495f1a21d571542c003f67d0c8336112075288b84864a3ae9bd0e0dca45894787d2aa7b34be69c6501dae1660c979821776d79edc2e6993f6824e206fc43952177c6540d19e7fde9fb2cd2eca42072fa4c3979e0d81481521ce1025932e9fc8c70237848e3712888486d51390e9d9d112a024ecfa5cb5ad14a20b9c717e315fbdcc528066be6299561d5d9767e710c723a26031df01de03f09504b408c1f1387661b3ed31d740a70aaf3ab85d087e2870bc9fe0b212d710a6262fdf6483da82f3910315eaa27a2377a46bb4537c40d73bfa7b949ff52ffb44688f253b0f413e83a55801982580584bb66229d4aaf7d38b3e3e7ec3c41a1b59bb4c536386272ce68931d7da59eee65066387eff068b9aed0d21eb37fce43037266e9fbe75db4354c608efb236a6bf960ef4f8995eebe3f81d5b7e21a91dc27865ebede8c5f1ea313733e8615df1e0e66a34ac41524e12915a59af02505341009ba8dc414120fbe35db146656b80923d7e48ea4440f290756563ad9e85e5165d2a85a776342f69132bc2f93805893aa66b4680cb4cdf8dcc050c55f96dda268e92a54ac5be838836c2f6448eb01a8392e6c078565acdf580274ff2c3a07c57b9d1d0512c2b891fddf22d0ff2578b10fe8d1823c1e6bb0649f3491353756b124a350e12d41b8408dc14a7e54f1f31d0b8e7196e7cf3b7cfe6d88789d7d8a7d532331c53c26eb112c33b3b233c42267c27da6b5bdbb161e2faa4d8d7da28ace9f47a7adec1655264100b82d8fd3d77a02c64f0424c6562405c67837b4819c4b1f8b6ca002818c9e6bef936e6088d278c3b2b3c7c2ecdf02ff506974b17c2c6d0238e763ed0f63541f86f1051207b77b1ee396da6b88e20f7e6b06a50e3c1726630e7855180e1f73d6080e67fe8c148227e8b701856ce8ec18989a781e5806d8d41a419c15f493c2303bc1a56250f0d8a9a21134f927a408ecbed0f82de4569b6ce4ef5bc3af09cf6285c449706bd9acdd84153dfe15341876b48d1e963ab1984ac464ba259b52066c3de66ee9cee11c27eae9b4032f7a0b6bd5ebd6e71afd9ecbc9560581a9b3994ae804adc527dfdde1e4eb2615e746d4001f2089f1902056d21ce2a1e84c34ec2b36e3a28260c52ca01d3f1492d4ae0116694240b9751ca870bd6533e149a4e5acc612ac701df7ebeb8a38149c433f09c82c537b4c7d6c4b7720485318ce91a662afefd8c382269170f90f54a0c044649625b58911dde803439a186f22b1f0506d65c713103b1caf33a1a99bc0bee33246c24ff7828c43337750f208e976e28632c0ce1ceb13de43656c5700caf50c51f3f6111a93f4a0c499d7306012e5c9080c411b63be627b0afc220532262490c89df194f443fcc4fffa9146d530eff3faed620382a3085345b2fe7f34dff068f9ed9f8ba990b38ec86aaa0ceb08aecc2f532b08bf6d27026c084009fa85ca65bcf153706040148db3cc7f26a98511072d6ac892110e549ed0f6c766a9a35caca3db1d48258745cc171c946558c6575de544804fc5b78be28b4f4df245d30eb7e0e0bf050422a051236abd22911c2bea347ebdd5cd7ce924ca2942501ad35f608a284195a30568a01ab7a58aefd90cb8362d082503eac0d0dd01bbde21a02e51b128679465fd93c069c0fcec41e07de9ad3bcec6819aa0d1f0ba8753190a66c8edfa381e84837fe167883ee4383e4da21c92ff2b4ac0ac08888bc084925987cc1bcc8d029fdcb63a4ea869c9d72ecb617597d725ea3cd30c43c44ef8f35edcc0094fc9d3fba2117d5e6c76a6f40f1fd0964f35178896534d549746e8cceed7742e9fe136dbd0060fb7dc401eba508d33be536fe4c20c86fab90c02fee799e7f09582b9caa3f46ad75f07e578b5198343bdfb9f579720d53cb6321c9efc9ca47143e6c9cfc95012a87a6ecc21fe58aaa3d199720e071f124c6bcc11aa73f783e4d736244fcded388a4458ffc5bc5a05d8314537c2e1bde885c590059d211aa05f971d9c2f5408c9ae79d9b104653b851d05b4f1e15fbd1cc9736655db22811363d2ba676e431806258e5af7f2bc0376e3ed8b85054c00c7ec51c3629c1c1fc53878fb597858a2494addbe6044ecdabe89f40f97a7865f2d4453e01abbbbad083fcfaa32c8d360cd01f7bd4e988ba875f63dcf307c44f3a4e538901cf6760d0ccc176dcd3446a1ec6b061a9bd3eb5c14f683506f96039c3ba693897c9e6088055487279600b2155a911862d0a969054702f3eab0b3239b322d071aace518993527ad1e62e21c732b7caed821f8031e5fbd8f25966d3b4d31736acc5850397acb319fa82269741803ed1969cf17825a65894b54c422a570a140d97962232dbcadcfef9df9a70369b2ec20fa4cab1b9c81a4ab34f80918b8785c223b9b5bc3811afaec1d3eb6fd1e31c39296f896fdf4967dd961bda91889b6446a0c2d88606c6d1f5da642f4c6aff5fcf3716c7b34887ddafe7bb9c57afec6a56590216a3d932da902a2f0f9965a74cf077d7e2702c05eba9d7fcef2647aa603c44f226e4840c167ee26c2e9ed3b5eacdb2b1dd24e5eef24262626ef573b48d22b04e6d6f67c70b0d4226b7d0bc586c6bb894b5ca69199121f56f038fe0cdfead781e0d2fadf29158969ec503de25be4675ec8758df2096b969519e16861306720aadc9afbc2938096129f6fb83ff900ceabbf7535829019e10f722796faf06a74750d73fbd3c75b2137b6a3604cf165ee9c6eecbe5be4b91c64462b4f6b68c05098fb9916997ec30140a0acb99cc7ec5570bedfa73248ff6900bae66b093dd54adaa57d9b43d1336714426d7ff2f2d4bfbb9481505fc36396d01ae1717c7105d15ca14676c09ff3fa49c9fe69c387c75a98aed8a5ca00ab19f441f5bb2104c30a0d0284a6a93574c4734f8b5f0abc6c04faed5244903c6bd1859a34438013a0da8354d6c096e4c52952db69300cbe0cd2dd5bc63ebd42d9c72c5081212a467bed54b50e4809423e8b69b751c1a9466eb1e4281aa44ca0a40dca2f4c16de7f19c259edca7fd2c4f7c30bd6fd67c2a33336decb6d52d16da48dcfed0786cf869e6f0883fef2e0d52f62e1f290c35fdc75962746410f01b46ae19188966debe75bb3529fcaf1c418228e7e7b721da43510438fde40f7b8b91efbaf647cf4b5114d193b23a0981e0d2f24d9d9eb475cabeee41471471fb52be4921a3e12ca23e705faa6a2da1623755ab9a6ff52a70206990dcad4dd2e72e2106a002dd11e8e258a9d60a632e98d3ab3c62f2db338564f561d3d112e34e2a06de8523344874b06bdd4e28479906c7c8241cc0210a9e1d588bb5162a535a31706bdb11708d07a0a8d0f81e01ce481086c4ccc31d581c881cd46aed09bb6d8d2746e83c171e0c7ba77f0706d5ae63663738e37d13ff153fca156ad245951eb3c08acc754469012c62b3899a37a264e4207c530355c261064b6a981d21034f5a040a58d654e151c71df56024393adc6046a6d933f6618b268302604e73518541ddcbab2e2c106fc86fe6e3ec3af6f0c282932a56538dff1ad728053abadebc69a941aa47adc6808f842657589163664ab23854e017cff781363c664e458c8f10b62ccb0ab71b7d75146588e26af2c70965a96b44234a922f3e416ac941b27fff7fce9789efd740c1aea536980f3ce61eae221806394adcdbcba7f5bde8003cd8f729a653dfd35325a4c4c897626978283dc5d48e3ee4047c6f946b83067552b68a1428c1f3f16aa78f29a7bb0e3fcc289d0b5b4243da773cc2602f8840009ccc89a94635064ca26654c95fb4fbae6921fd26a1545c6d878f4a1f6afb7c30503dc96460fe7bf9bf9cbba23a68474c0ef27c687cb31ecf36d87036621d32ddf4a97f927947bebbd00c01321aa56f425c9efc791c808865b60ba1303b073ef6b180b3d4b2e92c6c2c68d55f1f68cb7a59f2a2ac21c6b7310cff3d002133fc4b9f9e0b7bbf5f6175991d53a916a96912639d611a0fe1072ea5949045ce66187a81571a2fab6f8d972d0f987b0cc98cc63d40316266719eef114c759a6ff23886a484dd9670a6ec3ae9f79b1a18ead5fc4b85774b3f6f50f68b71792e3ff6c917006a722267fa2f527da898215767bd44808ccff2ac01db5ac4a1ea05790e039f5c7479f504dd055913e87b08518ec3969a7608ac36b8b3555d81db596212b4dbae32d8a8dd59a198dfa5ea5c08a30cd37ee9b93df7d279dce59b9d3083db9afbc28ea7dbe6fee8d1b9b524a019f049a62d8e11e7d7f2ae7b8a866bbe4a6d0433d03619eec18facd63cfa743c4d5f920a65b55088ebc1c12d00a335a69ebdd74de9b1df641276d2c79f1ab9d018815debce9435539224908a0c99ab21bf4e7fb4ecc2e605629c8007e06dc8d0c5beeb3662737a3ea79a59bd48481fb845bab135c8f48afa956ceba5bf3be6f9fa4f3d2097da48e38e7a0f0ba7f1d2aedc6e81a5a1c754033e51b4f41c13e4e397cfb01cf540a29ca21d51f847db198294befffd593dba7beccf5211a12fa138885e988982575c287d1cff3edaa94e186c2a2f2d0af74b3b488f9259610d8201fd89f5615b0388c2c734cb33f75d1fe0749b04f79384611a57684349a2e048a9a28007a872882dc109bf8ccabe84a6b9dd1e68e0062b9c3c00d6a9d6e77ac4eb86bc9e41e76312c6aa0929bbc43d66e99d4e69e9386a6c4cf10e87458050ba2891a299228f9cb4b402e6b502873ce239bb7801e3e186d8cc8377925ceab7672848656dc6306073bd14c81191691f23b8ad16c2192b4d9468c91c467900741ce00d03b76059ad4acc86687d8bb160993b1a8bf82a8766d39025a7f1e39d991a823ff3a9cd6ff0933e42064e77a08623d16631160896ebd6706217ba3c832dc8107a2cdd4b3821a9459a2fa1ac75be9e59b41d2b77ad52c53784122ce2b19a4e6ccdd7550e10f38ba95b427e5baeaf3532cee2a62fe10240ffa420b7036480a15ab7f00a1588cb90bef44433edd82b87e4620631275a93d12e8a3708c453603b95276e5a598ace93d12705a2ceb25a5abf2c112611423f5663c1e0cd00d94b2f872554d79e64ab1743522b912a453027a5919374f89b1fcb17721213cc811e018b8b09b113abafcde58c068eced108e05feb59c072659520a051fdc1a0d910f5f2d42e804be1ea440ccd64847641177c632da73a38d50fec33697dd810065e7c4536db5264c367096bf123142d4e0d2c82626ee92bd1fd7c1f44fa6fcfbae51f993d1de9fb5322ab24ddd2fc850a747d75debf87723af6d47e073c81f4c589880951ff34a90512fb823cc9ee1f9d22a18cad32a12faf87571fa6a54f7f6911120bb78120eb99561f3f8b766910c5632825bd92f636ca46efc2b0aba64afae53f56140b986782e69fca998d2097d396caec8e2ca4a161c45d8be28ba10bb824e9327c2fc148de1e86a5ee812ce93f4918c590c9ca680c5c53a789ffe04406f509bc3fc331d2784ee189aa3ab3a9956e7ab6c2f632e1602dad1f50ee55d800c47a1c7d143c9a8c6aefdebff95d6f885b112e4fc8485885fab59101d0d7d56b441d0ce8679908e93cc9a3775e63701991556239532c7b24e32047802cd312c2638c54bfb4d93ab0abca6cff54afd297a5d969705c84c027f86dd8b69a7ca92e0cb86b9a6f01fa2f1c37829359259c5f48d5fe00ddaa308d677325d6728bb08806f24ff9780501a772dc896511556f350b824d2dbe3954273db2a295d2e3c172dddd88aa759bea11854c9107ee84e441f386d5faef2a229bea593631d034d4bfd047914115cc53917a1150e46c85ffdc21e709d8c88aa0d38ac8ee665dd5fc2e6a5e054490d2c75586804ff327242b5bb0e2d440dd5a88fdb71f178382e5534743aff431374c72ef4e4c1fb6fced0b3fcf055c22013335244cfa6e71365bd53c8c927b9ec30eb5dcb4a7cf00952408e530e92e762933ed504083034b3e21f5f4cfbf948630153d467c80a4b43a8907d385e74a229ffae199c64c22f719dab15f3fb9390b548f311a51108df48e52ace4d19128966bec2b0bd368bcd7396e93300ca3297bf257b2c2221cc92732704780f711ccf1243ba27b246c7bdefdb9d93758b3224a482750a60a212e810cf45ef2ade4f8cdbf231e6945d8fa4455195a1cd3730872fd9a14ae49a100304b80d16d5d2355f1d8571ea9d50ab33c9517d03b6d1105d1143e7afed719f92b4427a8032155b5223efdfd1af37b6a4961de3c32981050cf8025e844e62b8c302d42e766c08de01e06731d2f251e643463cb99cc3c8fe73b7feddb58d2db2420062ce09d5cfd248186cae37e2e01e152a065c612b3f5bee53171280a060ea51cd837cf82645850b6d117d966d16496a2e2454a16e5b2994471501bea7932c42e78abf0f4ae0fb218348df656698f64f0ae7eb2033f17b21793ea95584aa5df379d201bbbb4375f7e7c531394a14ac149508d34218ac4c3dc33776bea1e100be7140b6b8fca1233b89c56efa1dc21e7180aa11b226c2b12f4c90bc55c7bfa39d6828153bd8f84303074fa13ba75d739b52eb79b22dd63586c720ca009b464d334d5dec9a3a78f1a8aafb882017cc6f0abaa25eed65ff66ce459dbf532b4bf4bfbfcc2147168ff853b9ded0e219595f61981c093a0e8b178fd83c92d425649d71510df8668e91afdf2ad27b80e064b0f211ea19e30c5cf3f4f61137ab265833cda04618ea5af76688cdcf14938ce5c98343468ac4a8c3c4690671a5987e629b291d0acff273e2da89cb0b7348b4a0e20a423244e4510240c6a2e3286dc27bb33688b5430e6f2fe2f66de02ac9603232ebbc599ed48d50c269707db967a7c2e1a3d248942bdf5070ed5fde54f3e173feed5a0b58b1bf9a931f30d1fb370262fe10f2ccc3c068458a50e900db96665227ef4298795d0a997319d036cd9ba0a5364ab2896b40b40ede05a89935d5f59ea366333795b8b6ab78d5ac121a2cbde5411045587baf0195869009b4c173263b4931adf55ceee21473ed2b01d48c85d7650745b541ec7523805ca5336b26b08c63d10de6cbdc696f5a18ee58c6462fed3a39c410b8b576985a4640307a7ba26296ccd26c6b7ce00e293da4652d903d0670fae16f418a2c020b9158648d25756eecfb4473b06a2a6cd780cf7c5ae3991584ab7840519102f692f12c9cc108218919f43708b54056cc484369163f6c1f761120e70b6751fbc72df8311a8484103e1127da7dac22838e5e1639e6c14dc8f31f14fdec2499857e4038621c4227ae629d76a945e5ffd8db9cbf9fd8a649986961c052be76f4649028ca268a29e06a168f670c6acf98fde9528a1abceb4cbba094cc2763d3c63ffea7a7e12e32a6a89848fca5d5a284732c2e4d590b545df7f0ec08d21516a5cd4a4c0b4a994134c0db215e2e48098f212bffaaf1ba376ebe3ed1523410c164ed0f6b1d1d0b17e6631c88432d89a4761699b837793a8bc0b22cc2b3203d0f2f15012dbf95b81b20b5260278d9756231a6795060ce9cc823f2317ecf548ab6faf0c3951eacb0e710669206644726d69ce49908a36d01f791f661a9d6bbf9af3b250643f7015c4224e35680c5c59cb4c2ceadb22e1c1c7747af89afac1f7d281b5d5c3135961472445f770ba5f0042e11a0df47fc60120540e24662f100968899cf188e64749591e3d03967003d97e6470350bd24538fb6a3187e45300ae3c6f92b0b25478eb3825f46a29e0f09b5703f89409ecbd4d5f419313e37e4f52f48612c042ba68224700aca06d11e60347e3184500e448e98d690f8dbe4633b9b5f3c64fd19a1626893c418cbfa0a93d7d1e3f1c3237f60ce6530f3a25a89a0b5efe0f5b7f8244ba103233c2004e6fc39a10fdc0d15822a277c558f9f7b62fc18e90c256e7f6395a24c34443aa732fe516f8ea219f04487deef4c05c0c97b2ba32fa9e242c1699a80e1771298183ade3478c37d204aafcbbd73647c24e6889fb5b4e889bc4361744e4b4b68858bf827dc432403a11095703cbaf8c1f14480f38fb769760ea36d65f14f03007d0d730467d909fd68c37883f16c75247610ec86941830a89da51a9c01dcb936731159382f9b030b3cb8a96343d99d6fe165fe8b06983f4fc3cb24fb3eab4230ef5ce84793f42adeb212675fe4438571a1ce4d48bb6b13cd0801c397de1a7cf35fe42070b53a0ef803347f086ad778068c90b593ba32befe522349356c36f28d8b9d336626c53b6789b456280fbd5f710e7b7506262b26fc1333b9ffa6ada281265828169e50415da238d99bc0aa075b8ba4af34d5e855803e98ffb105125c6aaff3575b4a013bdffdc4cc4ea55596bd4c4d6a66ca7d7b0444a182ffb010442c17bcda4af5a38e0d93c1ee85b77fbf5daddf0d42821302c000bd2e040b4130fb7611252236af50098ab8c03872f11bf613864d1b4af227d928eb1b328cad958d0c8cbe298d9b7c542844cb6e8a843ed94f864d90382d9618509d38e6a7eac9a89b91df86022ea5dd54b43e0c40df7bbb4c0a8943c6b81267cf2d67a711d0d90cfd2ea131de9088d1d784c6777919da13a72abf6da69e8cd56f9de19620c55ac08f1dd9f839462022be09ab8e76ecbdc35d293bbe1d3bac97c235194cbc12a65da972f0aef6b3b83751502c0657e896e79c06a1157aad752588841ad2298a0437d59622a3de31a0125c9805bba23a47e9f66917e3c10221d23b9f8725445f247ad6de630cb1dd87aab4de8ff30f344c2f1e74e96142a395fe845043f24914d0c840872dfa581505453cd203a4223b83d386c55b3f1c49f56caae729aa4560aabbb5be434dd85ff10ebd4fee6290841125351e2d09301357676b5787db4b5af16b45eb1ed078f300bb25563783802a09f93339266ece4c0946074a310dd4eb3570b2df6994ff13db5daffbb29d84b70a955ceeccb4d1b120acff1df3713e7b37b7cd9a989143e3b6cc2bac580223b1652782218065b6c010badb315e4c1dc159331a7f1e648bc43e4e1571dc495c4ae51699a26a8573c84d917c38e1f34300986d79e9d0d4215e7503fe385113c415465dc13f6cbec37c12f9d2b73e5ad4c3696a072013e9edde689928a2277f9a3ef39769e352bb99432703074a2e164c4057ad77256505789fc9fee836532861e7fe5bf768248e798b4ec899c0ec7ebd8755c1dae653d4a431909630c54fa569c8efef04138e62ec22c989b9da148607ec924dd41b211a73c6e696f27173f3330fd0fb6b0b470fe72f9b9bfd79d8fb04b50caac2763eb391fe68494368196ee667e9612ac41bb466e0225eee0c667149433f7b984da496f9ea3c815db1afb0c8c33f076174784b4e13911cd25931b84d58f5ebe3bb62d8ee353fb4b5f9a3324d1f7dce3b4ee23720281e9572e6e8274263282f90e69e5a94b6103573249378bc20f131847b7daf61eeee3e2da2e8f110abc2b5c700f5eac72c25f998c024bb4b923bd79dc7bd7fc094ce47111883c812598818b816d0f7d944a3948e77818a37f04db4450a92e0bc71e6cbdf512a0ddd5e47deeb6e92622d92cfb3ccd84d802eaf41964e28776300cb261d6a3a09ce3e3c3435d373a3e98059301365d403a17fb3380742110768ad4960ebeddeea096f5a3eb1c3aa801d87f0991922a1dc03462c51054ee80437bfdecc19c91459f82ad13532a8b558fc74667b5b9344780ee21e96fad157b8e531af690c08e4183696d5e2247cc0e89189038159bd812da52f869ebb65202c5f60e7fd08e1f712e330bec88de86c4bd833e8cc16ec565e672ff5671f872f2cae0cdd6e5bbc606da991663c3f139d957f9b46cca5735fec5398173bac04e3c62b79a2a9fe839592d4c39b4e06d0140595dfc4a56ace6eb8cbd3407c2036d4f36d6abc1f1318f7ea6a80f3366f2a56af1f1fb4fab0a5e71dc06869244876d679f4f32cd696f503025ef6a8f4ce25391baf77e97bd700fcc81415f3aa56d32248f4fb5f9a39442d01f30733d9cb31d781caac3e989827e2b5a6eb21e1d2d9cbc1e72918ae56475c240c0e01889537f1615994e27240501591fab240ce7f5b6b6be0e7dbb2a482acd022bfebbbb56fa341752bf6e51f6e6e3d8e303431cf9d56b77bbe3989e79ca1e6225a1028226545d6055900842f5d500b64bf528f917f7784fe4bb796f66c08f8c33005343540fd4fd7b94e6580197445632a4bd1358c33cc4a18cd7290a11e98cee4af4fdb7502d690ab4561439755d3949a236b993516ce153bc0d619635f822449a1328f054516e921a5c62611efa9a53f3f2476d323fdcb41b15d0feae97e8c909c67b02c2f96a565b8f89b1a07fd414b45a63275cb0a0d15bfeaf48f59b13c2ba4493091c02b9cd4bc757adafb8645b5fd88738921040c3f6712958dd2070555550fe2219c95650216a1121a6710af03d49f1ff66d2c93bf47b50f6c0dc390344238c2920f23bf365b6fb2d415cc053710cba304a5e685b1f5d081e43e950383472e73a8d0f3959a98d6f1b606638bbdf6249a20865ed101832c0dd0c28d4bc23f206a66de928fbdd67165790b7641311b29a13f9e90d838d4e622e1efcbf3f96bf0318869a053a0401e4e703233416d4c6c60309b339187a992136ac76931034c87cff6be28d5db096f86baf24d4b5665869be58485052f786f27329b3c9fa495bc5dd340a311c27f162b23b2cbbc54040488bbfc718dcf279dd184400cef025ef724830f654228c81ba0c34c6351e29b9c9e246cc8a844ae5a48938aef9f2329d5c6ba9a7fa92f17c8730ed80c5821d1c57324b198c30129ca5412745ea9ec6582e48232a4d2572d50dcd839447a4bb6be93706d34c5c55f28a444ef2c5a9c6e3b5d7dbf689d180059ff7a4f808324ff346e49137c5a9a90dd42e535e0c75696c0894f8cfa488f1e177c051987630bafc5b39689e35f82053433989dbb549304d8a2f0b6569424219260d6d9e7fd4be5399660d51e26fc190ca6e83b97824a99688e6b18a96c3cecfdd05bbb011fe7656210b7e5014f719731183222523fa4f0a69ca2f63fa7cc85182090fc8ee179d0380f98e979a37a0f21e0f8b0d17cf91e6cf4f682403f824559367a7799ec9649fdbc21183d0b1b57f02edb7f8fea6942ca5f2d713a759c1e8edf9ffb0645f6a8a4b1456dc766cbacf35a9d1e6be0460755aa7c347066ec992fca031bef23eff41b7640a0bb258833c734fbd113fc0f94c6a980e481807bd6dc9bdbf0b54b9b5bbf81d98fcac977c600cf88011dc6a4403ebefb72cdabfebbd54c4c483767a96a2c50fef06d9a045969a369b089dae3aff4335cc7dbcb2b84736dc86c72d1edb485651abdc82cc881522f2e76e18e2410b2a4f0a0f611cb263b038742148e986d35f6b3e9692b0110fbe01eeec2606cf04819204b422b949da992159a5636aea3395c73b756c401729c975cc9327a945144db0c6334931843265aadc445bbc79c78151282ec123806640a815b16463d443a9cb181f7eeb8e7f6443edcabb88f7ca6b9059f1277a2279d995d9ffb8a38dd631e7f77b1dce1c4ca76dc8e448786df629dd7b2cb23f91a78b6522ebaaa4efd388fe300b9091c97c6cb5236ad255b04518ab77bce260afcb4e8084d9faca69b92f64e4da65be3964fb198dc674b86ffe29b517d94aa16cdba045a63a115dc0a0b70e3a1e9d5ca0aa94832f50c53e782799e5577a330e99f205fa864c11a644bbd04fe88a9e4ecf758c8962e73ecf33d3ea1f1b1494f5957d2c32af1223b8e777265e164d4dae3c809a019bc4d5785b2e99a7980234d7e8ea2fc3c368eac70d44734f1373203440c362a197345b0dde761fd052e32e258944f7e3f0151f536072fd90b7871892028590932406a7cede53008cb37aa7f2a1eb752cacee49fba176782029902bd81f99c53f5557afb925f9b5cb6ef9138a9ae094baf28737d7ba4d76aac2e59232c71bfc964da9b135f9286304a2992c57368a43007eef3b2265f622cfd4fe962ca44e4e015a36cb841f18012a00bc2ca2be12ee4bc3e06847c639f4e48e960036c29c836540a8a6379d1c7ff84ded8d67f204443189234f12503d580709e64ef752aa9025b78b1719bc982d9718f315cc7b008d5c3ed397c3d36ddb3731615631d62751633913c7ed1ff68c919df12cb11154dbcf88cbd88ae0ed65cd5485eef24c223eb11a8329654159d994914d6d649e1da2380e06b176bbd07b1e8b1a6dfa3276090c7307f3f6505ba70f297718da11a70b2d9f3bea1a2df65e670da8888099a8612bf0f55b43a9e1a0f04d5394cac69950a220cd78b90a51e08b51b170f95b2edfc3a8c1e63eebc136c2a6a8d34bb621b00e50653e1bbf560cf3f21b42937d4ed26be3aba8515ff45b871f82a7057841f8f3404b2a3ea088bfde39a359c3ec1d28cfa327d7d5014e4cb6239c31c667fce037d931dd372a3bf4dbaaf267343c4937daee9624c5f84fac50eb30560b73d658b8fa194f4f444df7eae06bb796a31b31a6205b6ee6790f848eb605170fa810da91ab088c3de5480ea8c812c61e1ca66732827b3329bd4f596b235dc330285638949f1eeb16a2380c018361ab63c11ba8b2d252fa5e5946cbfd4f6878215caff4b668db16af9511e28d653b1a8588ba0159482bce0f0a166832a9ebd837bcecb052bca48f2a157488d7468c54bcc2480b6895218ec1f505a9a0cf9110b2b165e7e91d245aca95dd20897f59161a9b70017d80adf19eef420b97f43944ca5b0e399f899051b310c2de1e2761cbd88f2e3ab9e055506e53aae5aee10d54799430d5798a486518bc04b9ca034d21eab5d19d5b0bbd4ad4d4aa84f845ee708f8fb87608fc8fa84172b8efa4dc0de418b73c3e507878985bc09bf7740d3bf84c3f8e16b4d488d27f3e83dbd351078c6c978444c134bb9bd6793c58a31a82418c783d814639476cd82f1f8322de83308734c8f3c6ec9e351ffa359e602199ac0b06846c6947088653f786f3a4426ef574c04ffabd98b4c898828483fdb480af16004a2722960773c0dc1253e3b24feb08918ee3438f4b590d9678f0945caefb87451a4716630f3283f0b5bbe1fbd0cf08a0553acec3cc4cac79ffd9a72120473374dfd6e5085778488f15cc0771e2764dc6f732212ee7330e05343a0c5ad120bd0e94a4174a6ef14c97cc55bff16ea1dfc6b921e348b22d8f8d8c82ac2c5c86c73594293274574e2a09e947b828daeb0b4e2110d21f946027d55c7b8d99ce4b8549b0058081ed43af6b8e4f6fdd806bbfcbcfffc6bc0d52432afac8871c74a63db282c7c03698242da82ca5f9b2dfa87b2820b981f4b90a153153d9a870ae7129cb2f0394b77f5a331eb0c4c254039ad1307696d24134c32d8c5c5bfe49064d56e005f80092cfde45a13607559f6eb8c774e9e648e512cf415e4b407828432fe9baeda784ad83af50652f44cf57475a6dfdfe3ac58d6b8ce75f3cffaef450ed0678a185c7fcbfb12009970b83a6132a4d1022d3f4cbe31ee43d131a65409c4163b08d7d9deafa8bd9852bd6961ce71f4384f524e2a22c1bdd611f892b1acdec121dbaf82e61e0f93b43105f8fde92ef9c8cd18db979aba57fbdf8419a435bcf73274626a77c39a392d9602614e66775de6d6cac3a94cc21cb4353a71c7fb7ced2c1b0ba1cdc2043a013072588104e4245a6418425bc083444b11a7cebc9993a2e5b94dc4d9ee83daeb191d2c6002cdf57c554d1aa47fd90dddd300d8878d0b192c7ade84b8b5d2b5b574fc323bd5a23cd6902698587c747fb8db99f5e1ac82daee4117a52171764fa5afc2fea519a293949a75daee14981545cab8eacaf22ebd770d6058916f85461f1c847217a7778616dbf61ea3f087d9e21255abfebfa0ef6320131745534a116d0bfafbf8900b98577a51202d71997e6eaf0c24566c2b3fdf21b441acc26352296f99805c8701b854cacc97a34e49caa65c43262badb735c910807e02080aa226c624064bb1d53904e7d1de1f3da0b18da377b687a1c346241f47403121eaddd53fe2077430e71fe479631647e7e903f99715bf1ef3b0980ab50835464367a0e5298892092fd5a211f13c910f9a7bc086416301f4af2bd0d68b3fbf6b4838fd3690c77760d7dae2d604aed85e949d091f198374f1091c1bfea44e2d4ef5b8e32925f348db80c0885a1b5633e07ecdf5e4b914bbdf1374598a2e4bf251347dcacecab4a63b83e4271c8225c9c8dce69f01e59b859f7d0c2c104ef1debfc6e0a5e5a7a5e67d55e00b95c85d60df15f406cab3011d2655b16a8a90cf3a4ba5be9e716ff47a5ad40cd68761e525ab37052b17f8b0b9eeb0f1584557a2446918ad54c5400ece5eac4b68606b6645a6146439d7c213ffdac3cfac0308218f175460aa83bc538a37c9c069d0f56eacac38a600a040af1e0efd6462c88d5c8227925aa1e3e31a6e82f6530345a398dc4c1902d455d56f502947220537b5a228e66c0066b6b505b367c711c877ff481223eef32cf95cfa6f4e3a89f52bc0a7c43b39cc4dbbf13b11e24c6bda6e520b505e5a8b2d080856bc513c634800157c7feb07c454382dfbdbdfefa18c9176c18d9d1b397ff4c559841c3150023b351274556fc15c33892eb6808f142b14062a3100211f5bccecaf0ff57fdef4bc2e45430d25613f751054e5d0051093798dea011a3391b2ef513310461f77b8f024efd24f29ca6f4b7e1936c6787a4150f31bb504ff44af4ce94983e9329a8a16fdf939b18c9f8c39f3d662adfdd9739ffe67c554c260845fa0dbff35ee68d7c9aad9f99d659639c3e8944d5cba0c279f16ab98fb0538eb4719f09b4c3ad017e5e88967fffdcd7f3aeaec5d38261ab89739ac4dbbf2ad76db2e9102a88e64f2299b9f3f2b7ab0e80c8353a2cccf77fc5cd441fa8cdb412bb80e4d72417726e14f703161c6b1f07390f386f292749a043a15ee463640eacd36e251c55fb9412f6707b4a810748499b5563b4a3624ab19719f47bd4278473e74d240946eebb45d18d27d9b064a76b34e3d28074c3754b0c787c1eca1394d216d3c1c88463a8af789670ff8d76271a1ce009281ee70f247c04db195493432515cd0d9eefc828f395748254ac51d2430926aed2a132cad443a1d40811e7a47751c13a05f266b57810b18eb992c6c6700eee665750702289e82585d6f383dc5103a51530162040f542970c0bb83df6ef6590fac2c7684affcf0c72a17605811ec60f0e74f503e44e0e6d626d6a1a1aaa80761a0e7e6ea875becdcbd4feba50e93e2baf9de13833afc1e158ce1ed1c51258793e4a80da058d25c7f12ef883254bdbcfeda611fc37eb3c9ec853b9ad925ad389bf80f7f6d0d3b1571fae3009b6aa13a64dcc9e42595161d469a6b7c3039cfe1fc185e727f05830b71e005f208bc9b0eccebcea82652406215eccd26033b9442ef85d09194d90141d0b6906fa0c2a78cfafede62a73c2519d8ae198611e4f7cb3ba5358a2ece19552d174d57578ad51e1a4b987c74680f452762253aa14632cb4ea256a3142ad716079260c109e411acbd676ffb0a0917363d605326a26e9bbde5cefd2426688d1e21786084140970d4e053ae8333889f8c18870978197dfaba3842b994dfbb77cf2fb6cfc542b52d25dabc00f4e8214c30b4b9a3878598ccc5b688c1580fd20d71dda6f34c60a73d03c8d7a3f1048f5f7cd1dc99a3ca201c4239878ec39c861fb40b9084b27d15bf83cf5a48a6bd1233fee53465cf8f2247c72e5c09910021820832e02e429525b0b91f1b933e60eccc80956a1e2cea343d937401efc818372270cbfc68b53f198e235ef6585fb2f75f84668e69af2160a35e1bfc4908d79e606cdd590d26859aaafa0b097b12eb31791c9c95a8500b78c5a0ef97db4389195038b3f91b80fd56e60061cef7a43f97018f26c4f1cc44bfcd9df3d7596e4e2403edea9325b61bb0176587f7523c4f0d8a48eaab6be69a8f5a0fd4bf982a93c0e2d49f0d37b61657c187e6a2fa3b955999ab2723b62c232ef18822994bafb8a23309e2adca426655c9ae0f4d0555a7536cf0c7cee22df2927da7f37a1f88f5a0e3fab02b53353f8c7c4d918cb8627f8f2cf56018aeecbd56e50c4076d65f5fb1ae8882c9beafe0ffcd3646555d871b3cb03c41ed4d748d28c150c77989dd852e645907774e3283a69182fb79c5e05e77130fcb711ebbe8f9db82e679507f92cafd063cdc15289d54dd4a78494286c8b208c6a3b6a861d11fb345e8734546173f3f81c7d45f7f1d94c138b6f07cd24d37875f75a16966f35613a803a8431f5f3b99e5512ae18e51dd6084a991d16915140fa5589132aedda96d44c2b2223e03e59b120947a4e203ff49fc802452ffa46a5f15a04184d701b4b54ba4049392eac027524c80503b4898a76e78b61efa0880d842fa28dbc361daceed0036ce832064e8c01a266387e9f7098dde6d54a41656bad4500ca81f74d64c23fdd4e77ec2f5b1fced012139768c92ff780a2027b63a50251468609bfd2885abb3e5e48f78af341e8ccab5012b38779c6c0a843fba5eb004e6489a7ff80759e86476fc56836061628561a70cce5e751e04b41f1fe5f3faacacef715dfa84cfc3449c06928acf4bdd103e593eb8304c5d67a1759fafc9f72e0362019e4a61b75496022765d6db9101d3103e899d093ceb9c338f4844751dd82449fdc872b8570c653380e2cdac2be1db3f1fa1c4d12c3ae36c5d6995cd3ece19402d81bb3850dc004126c760eb19fb7af20c8515334cbe70dd5e29670018727348143614ae68ed163abf75f860808bd4e980fe439940c3864f9215ba366d1b69052c385fff1200c28a3218dfa65d0c809e3eb3c10ece2a18808f85c0c5ba4f408cd2d1dba64108ba87f54996422f23f7b02f2f56b76999093ca1678eb9255fc7183f3b7af8a19c0cb78ed8a778e9e4078e308c0290ec18b40af6d8f3a5776de084c0d027a24c50eb8f3ba33df0536657f91a7288ee25adcea15078824f8e6941e19069dac9585b033946772914869a26763755de04bbc6d7cb940d791f27cb5c13a408469df50632d6b0507eedaa3c1aaed82789761a34c8f38f62ac759859504edf24dd4f9a152dc6c6c03a7ca45582dde82252bcd146bbb0e42965614dc673900626a9e51a5a30378d297bdb53e1e849d914ab57e45243e95990add8c7f7ae45b7bcb9e9e7bfde80d7f0272a319c3bdd844afb9379349e80c36657bf3602e7b61ad499e17b16e539a3936ab19bd5e045ada63645725a9ba7fe188d17bbc57610643da49439f2fb6ae98b09cb014149e39fb18c275a515d5d1581e0cffc57b8b621eed70808f016eec514aaf2645e84a10aa20488cc98cf6f7728ee50697c08f5020cdc1b2be9ddfd1255695c529fbfaacea2c04395c680f9db104f0b9e3630c343ae98c083c6e3a15719064ff4fa56a000e4b5103a5e86b7381a4b6cdfcee6456327534fabf88eba5ed0fda5669de3b415706cb9455d66df9993c784bbbc9fe0da6e38bc0a8f6f0c6b0d1c6d0558d105bcc1577bf38969572be3adf2c67e67e4660ced602e413194290bf74e4611636e446ed86a145d169d1e22b1fb27aa1cab9436475c1706d893c4a2986083018d297e3c7918ace0a0a871a40996402e3d72dc3d02a446acb965b9794598ba60b1c946326af13309a968002faee2db97988a5afb6c7f7a0da5d67deca07c19b34c772af5c2601a7e1f50700db2d069030cbfc7bfce2002f0f5e093d0f600e2109ec94c828b08d7d74157b0f9b42ffe0d58db3f6a603ab18c837091cc6f6b3d9d0ea05450ef7c90d7893b445aae5fc091856135266ac6677376aa05e9068a17ca4f9206df30c362b472e5933835fff53e520088b4bda719e6dd9b68637004057940d3dcb44174c3332f5132884d534c263bf639a77db4e86da2e29829bc7188046567c27a1e30a4f2073109425ec542f26587db3b247ef014007ebb080da9c02ecefa597072e8e4835e7565a386b88e7f4e3c83a60126f5c742150777ab72dd23840cf4433b4b5b5d95c5b7ceb0cb4f88174a2d8dc5a1bc313c83299ec59dea8e1e90cf11ffec554fccbfe318aeb480f2c8cdc239490f02c574261da7c91cae15271b3c5714a60a098b8054440929042e394be8f80df4bcf64976e88325623bec14db4812d0241e08d58afe5cbd10c622272de2fdb4c4399a1e4a664020186b154a505170e633da9c513470372016a47d9ad7cd932cd3d10d8eb86308ff6a8614109fbc6c625cfa42744c1cae4ae8410818723b3b2c59b3e85bb3499614d1d9c9e5fbc81d0d49286063f8a9ad5615520282239f45a6e243ab96597a61234ad9e84d63c005c4a894dc65b5283bcf6a9f4172b1932ce907f2c638b19f848e448965a807a01dd37818b0c569df9a4f46105cba86490fb48ecbd48012193bf81f7e16d2e108255d874fbe6f300eb1589525f3e770e0a5016369bcb72b9c4d6c3c9b7e5960b60acd9fa4fc7a6635fb6121cd007a62f86c655a41165322812751f7bf2df515bd9c1a8ab619f07a5a87d8042d760e5b9c37805db8810f36f51738fb80f0b0ee9e8ede62212036f7de8f0ae0a4805961ec33cb18988beb0889247699d9e68fa5be8e65f824766874addac0c1afceae51a0b77dbc1615698c94b42a655515bea891d3e4fe53b16de482f5b560d56c6cd06380ba0e80b5a1273165c6d3ef04b36277e11f9fc8b7df78c0f0a420bca4a9d687bdfce965b1d680280fb761449078571df13077cbf51577137925d0a23361b4c3d41453a9511f88d4ea05883f68d10835be21922364c8242e2cb291115db89721ba4ddda05f57864d5a687b425ed29de755bcd4fb108c4657077d737e509619161bcb78c43347beabb3d2e0f4eb53e0149d610497e7f80b02f87d5dcd65b4c62251f348fe8a1bc338fcbccc532a93074a9b7a06bdcafac0dac53e8b8a25bae9004e823200257be321ee9e2971e5c68ccbd696e5975c637b3480549e322a0f752550f24d122ceb902592c2ef07385cb8b3e95bf847309f649057fc867148fb90112c42eb79f2fc7b07e6d13679626523606e6383d24e70595540435b504b98e2b68fd00418d8d786146c44dfc86b7627f29b7f20ec418430811c808350d925c8c5f66262a465da2f0e11d37157ec32ac869292272826a476357e44983434b20d29de3e834ef80c89a5c6ec071ef5b9b6f9991697a8d56ead7955f84f59203a753e78d722a550a827c7d9709ee8f5ad1258f8c674c0b6bf6845932f402b0c1cb8c67eec9179da54f4a1a1802ab94496dbc0fe5caa962a1b05c11745d36bb1bbb736978a0b9d6de03be02db02091816227bb58bdccab0414f967963afbef7867f4cc559bf15209fad7a30ffd88022e718f945d7b54cc5dbe41480875cbafa18809a9c60f27efe5305827ef00ddcf4e440d13e2e936981ea05e217d9354fa7a880195f90d573e044ae48278e7b6ce09d6a04c6f77ea425433f102f5657232b0254c4617aaa12f5f067154507a04c6834b39ce62e096fa94099f53698969f6c13b4eb8017e2e3461575f71d7051e9f030f4928204bc1b5efef5f4249e406f339e6a63dac771d8234b25b8e7276bb65457dce0814b667650ec21afa04e0fafacb6ae0ca278de7648afc79b13ec31dcde673145627c31919634281d16e993b04d6e992066a60966ff59e302f6f45249fba77f5230d40408955c84746414345cf8b88f50afce4ec5e988913e5858ff80506518234720d61ca5df83be30916fdc9d776962373a823950427d63f1b11d69dfdbee57743d318cd7dc99b176e2a090ec15bc10921e33515d98f381c294de4eb39896eeef6b96911697bc4640359ad7382f326fdc5717a476c09040227fa8870653af731209e8c9a943d3bb018f48af6760c940fa262ae8786c8e86595079fedb27988fd5891a0c91ef502d84756f1d8fca53266f1683501db29b94adda6cfafadad5d09bd62ee4cc8086be825fe1d2e9e2a851b7742a83d417a3b234976b0c8faf08b53adc30460f5b865847205b06f00336bf7ce1ee0bac94c9003f69fb13ad93b84747cdf8f878aeb04a32969b1c12472dc83f163881ab11ac55782ee9a4208f29109c81273890ca8165bcfa666626d811811c656c2bec08866016068f20e0d9748a8298f5a8384c1d41437a6f5a26480d879595213d4e7556b3b10cc836106c116cf0d63c360ad45896a5cd3328b4e3fb767be62d552eb2858a21a2ef09659156918d63352c9caa8a3ab710c03827d25274d3aca17e85120df8571f5895a6fbbca1f3ce7c1996dc4a96018ea1a256419c36818d7b29143870db5ba65dab4f978dddb063292c2044a171608b1e53ac81adcedcc9ef942df2b2cf135501b524aaff5198fd4c1f1a8c827b37e18665f0226dd1ce421eddb25ec3207f611e421a839c862b32a5ea1ffc3e25d03b5dc4db5b68b21e44b873e3cd57828b11541ac9d162dc66fad4044a9e82e3b01e36bd16d12e681415ace6c5a45e3acfff9d414448d22a5b072c5718137de4b81b063ef8d32a28adf58694455870846f30480991eeaf0275d975a70b38fbdb3746c1bfbc576dba1ea81956fc9fb875631279fb91ffb6f178be5551d86241e20e4f1b7331318f24db1289154ba954219b9bc7320e72eae985a5b34ae86e3292d84f8691654c4efc55a90e8178c1ebcd3cde6e46574a53e94a4b15e19e8ec140e25c8cfe035ede19c0c90350242e6d73f562b9d625f1d132b04053a07e21dbc28951c111ed2dc9ff2692181d0617b45e8e0a64fbc3d857c963b67a52237e65e163caef16c9b40bf5677a98c0a787504496a29ebcefbd33518eb34233a2420c3c3aaa2bdb30ce8a32e84898973f0e6777df2bf5e9e990527adbe3fffda65374a7ccd9ee951cf37a28fc8088b0c55cae95a9763968d4888ac3f137c17ddcf1d36adf9e515278b653b6e0c32d819c9e412d31117d656b8fc93dfdfd8b7fec9281cf734c93de7a9adc04bc16af09dbb4e4e02d30fb5f66ca64d2f0f7d9a4e71d76d55d85f27641b59bcb97d82ff92dc073e91638606e9511977723b42dd3a2721edccfb6bef777b42fa3310c33a6fdf956c80ba1f3ec7a5f43f8e46f634d93605d5f5df2f5dbe50f07865ff9f2c4fde0b18bafa89e307dc58c6e6d4ede50a0b006c08ce6f5fdcddd1434de0cfd694a862620a4ea84b231107c77413c675dbfaadcfdbab017e8b3a8d5267cbd6fba06064e8c3c7074858e35a63bac7f7631b0bbb0c65cfa954ea768a6d2cc04f504fbde4ac0a680be6ec7bc5b69c03d59d163d09e7b556e150dea9f8f931da72e053d71f70490b870b6d30e514455b8aea195451df93194db6c1af26d51d4d4055690ca2e04ce2f718c3789431e41a1f3a98f6652d12999cd4557e59cc633ceda34fcb90938200e334391bbe43dac71f3061a6e012b399ebcfeee1c2fee4a50e23afa3a0d1d5388e1236e949341035ce648d841f4406aae1760ec486ff0e8b79e9d4534578a7cb36add74a61a2408c95909e810e28fea6d4232830f42765553504f61678e50d76e639c6059c970e6f8c07a6cc65f6c8acd776bb00708da45aa8c5cf6ccb38d301b52d14076c679a5968a566e0fb9ba997f6660ef4ca215d541f3fea9c4298683cb8ef344745c1dbf557ebf2ec0d6e24a02b79bca75a182e724f680171568b4f606675b7ac1aaa35c8f3f8ecdfea4dd0f30292d7ec1662464a2a0a41ce7443556597ab552f0a45b2e7938aa23143d80a82a63d821ad0d9f479a928262913f762560879ca59eab8c7fae1c5a0800b62f5f051a92cd6c7a01110d4e483e5df5f69db889e03572a3cfb93b7cb3656120b597c14ae4adea75f79d8ce2cefad6e37b9f70dccc0b9165884765a08d2cd8aa8bccd5022c13d1eff3cc276711dfc15d6393590f0a3b19c9a1feb3b62378d938cd45734f6b018d42519f734f8ffa70aa9bdffcb4b114ae7cb0e480121067bba9a56825455a66ae546e2eee9d48801cda7d60f088e39971a5d5f6461f13ad7bfcfbea997c012d688b369e4daa486fc5a531f1b969e0f2ed5d2d87811100370fd5589089c1b51125f2e89e2a67057c27a3f652533dc9fcc86bafc90bc7e9c27921edb9b055ebad3cee611137db5e2ae347c201f3f8d4b0853345330350888a0f1d2e92d029219675dbe161c43b225d3c18ca505f79676c020fe2e575a237528be71f37f8bed3ab0ecbebf43015107cfeb820be4b7dacf7617b76341653520a901b5740ad0a66be793ae95723d44a3833765dc4567c60b3dff35e019997065b5fa3150ca6a82a0546a9bc242328980ce01cd22d569f0e4c34c5649f0c2bae11341fa7966d49ac711ea60ee8b14d0783c081bbfeb3a001c27b3183abbef4a669b240dcb438e8dd8ab7306a15466cef3d0d52d72ade3664e8e1ad63dfd2d7f68a7587b793424328e51f5d685d375cb2a2f0f8713d9177b395b71dfe19b4c03b35b7415d66b33f5ca61d8c3db66c86e44740e927290bd9604e87ee17f04bf34a9d51bb9720b8788161110609b54e0b602c30adf029af2cff19c0b8c6011fe4dcb8a4bd0670fa9a3a8980dc00acf361d6063e67141ca74a0bfd66f8a1e9d0a2b722c2209bce828014f6988173a06389eb2442387cb0226741b5164710457cd1b933a3e32fb15ac4de2b9932a3ad6986cb48aff0a7532ad52373638f2e75916297488532b5fdd4b82d2214b4e1f5873d5fd3757f2b1174d8918c5aa68145a4fed930e54dc0d10acc763cb203e4efd201cbcdaf38519bf22c68633c388a6e85e3e40683cc4f557e0f74d6bb2d0eefe27d9e73a57e4dc914af9624b624159847fd0160e067c4c17e0d37ee344972fdd1330778b011f0b9b3194b3e5629f864f49833f3df69ddb65f4f734354daa831cc4a90b9930d8635dbe12d0b689b6657f3d23109d1fe1a5fa3c91918d0bc88dd2fbafc3975c5847295eb14e91f570e664206568e777579e8908420184b82f93cbe0ac1d2fd4fbeccba63ca4f866fe992b6f728a011b5c3b41895c49b3b19a44573dad04e88606b9671c4cf33f93f31cc457f9b34d109180542a0402fba9a9a6878c3a04fa5d1fab56209a556d0ed94b313ef23ff622c1db755f31206e2ffe4f21b09be8144ea567ee53519f0ec8587c06454fecd72e001c77dc710422242b67d50049b2eff397fc7bf65a053cc28c0b6a1d6a53dbb5dddddd5be49632a514ab0a780a7f0a6fbfa31ab7faa6e4aefde656e3cc799aed3aa75ff9d273a8b03ded3cbdf3e24f2f48271868e54f7ffa9579d23a47244bd4f5e1aca6c237c0acae82bbd556dc74ab7dfa05a75b6da455c8d26f4c9f825305b35a8b268af974ab93f48b916eb551bff4b7485a719b2cfd96815dba3319fb2a719516ccea34b0aa63ddea257ebb0ca724ddf21ba36e39cee74091f393d3a5c6be9ea36939a88c270c3cdc0e5ad38bdf4edc1da6af6ffaf03b0dccf22858d54b5a89b3ec9b2cf12022b0aaff64f41f7415aceaf71bf0fb1d0ac7d9be2de957b0aa4f64f75cfaedea6700c835bde9ed687a1b67b5a9fb96c8d2bef8a5b51ffe8c694d9a55e2db881d7e579b45d2c606903b49de83db42b89d84db9cf7a0130906baf63bedab99d36a95b4e105d9d87019321dc4cf18e7f11ce61ce7f11c1732856de8d8bbbbbbdfa6bb3f0867b5a05698ddb966b6f37f086460548f0ae7ca868d01e6bbf380ce39990a51ea4f84dd33322ee99d24d04e17f309ef79761d21eed279a7e24e7f3d4b109755bacecb592417e246bebda708eed36164a87c92fd3232501c73c30b46576bc2dcc6a6e1a9ba2d53f24f56999184cfabfe1205c3abe6be21fe52f716c1f2063786a3666b46492592b8949a80812062f96e95abbc61eefc7e9a4538499b19aef2ff61007f6699eb4ad081d12d61ae3b113ad36afd2ccbb22ccbb22caba316b2d0c87efb8e7acc451841e6b8a52a4711ad632ea07e463b4dab1da952b3af8f809ea2ea5ae819c45d062af2040ee28f8849a3630de1142378e208973a8bfb0e33274b96222c0f96eb1a0f5ff55b1d46425e851ab30e6dc6588057fd6ab8bd85cc8cc9a19a31362d45139a8388da522ec94674a9f7d1cf630074539797f086d7edb800e167515a5dc3cd3db9a5aa378fb716128e3b5bb69f238f966b9b8867e6a5df5ce098cd8757f4b5305cbac585c23604de907069132e75d596c5a57f04c37290d47ed7def7d57109df7e6efd59e42c7f7acb8e55fbf3ed4f7289befe955cc2af53cd875ffbda37847d25e61bb2b10a09776e8a20510489f92a3578cceb4f3f04f84f5205013dc97208be493c127debf7ad369d4c98848fed081d395c55448d2f49e22a9a82b0ec24947e9522dc361f2737233fc2edc7c9491f7cd9cfc6d2ba7fbf78ec7cae07bd4da469618882754f1a714040fa2c68437bb29b381641a2e57abf8d0dd441275ff64fcbb51ba527e38ef8dee8c36f4d0b4d919393efab61df2391de92b443d4e7f367cc6e2c8db8195976df630f5afef521fe6e2b77fbbe34ddcdbb9bcf5cd1ff5aeee63363bac857f43d902cb71fd316b472cb26da842ecbdd7c683623cacf60a13f79040f57d1cfe3e1ac6c1ea1c359dbf4235c459bc7c74863be1242f4cfef6eeae0b1f9641d4e7f7f98bb63fef79d0f672101739ddcfa6eaeedb5f1645f6eae8d8aad67e32191baef6778f635d197da773f13a0625f0587f6a46780f624d2922a38b8273d03b827f180b9db0cfff86e3e9a4696e1dd7c42b20d1e0b4b0e7abd5e2f728e20ec18d9445408cbfea928089738abec4ee23105d0220b5e7101b4c002af78f3d97c660cc7af1903e36988ba3048e655f7289a26866189ca91042bb95427f43eb0c122fa1be2fb933f8d272a952f5b5c39ec707dbc9ec2dabe34d978605ca75fa25c4ff5ab5fe83b0dd8857e59baee30f7f4fd1d382201b31909bdd2e7db8fab9ae8c5979b4f91b378c05c50bbb489e80e8cf7d1c784f1e2fd5f90fcf4337c73954abfe2baf45546bf197b89abe8a7c6ee8255f4516397a11b0caca2df34d8784c9e7edf989e7ebf3cd62477ccdfdee42dc973a9e933b2742ade6c92a1fdd2dffbfe68f86ff6b7511c4fc6b2ef490926eefcfe19d334963d865b2a8d65ca1b7b50243e8ddb119ffbc40f09983bc98ff434580e67854fbf082740ced39066a8e2e4e643b319f115fd8c08936e113212b4c842a341fd6363c359fdd9532150a5a8badd37775d46d4799b7fd9773dfa5884ab680e57d121c2bedb970cf37116dd7e2ef5a191dd7eba80ed9be436924677b7b5ca0dee13607f7bdf3a1f512b1daabf9aecedc892fd0f20349c4c688b7ccc4693ab688c6c2257d1cf9e089b0a99322035c42eea7efeccdc4efff323e0584f1072df44412efdcd08fdcdc7597da977c3edc8a51b924b33b2dc862ef523315751da4446d77ed944333c08ecb209a1a370e9974260116e47d87cd885be09424a3f07f567f6a7df44b124464a8e965cfadccc48a2cb383490cc0b80139e3fc684b34a86e9e051aa7214d1affae6671f87b37668dd10d983bf8d38503cc9fe0ab34a6fffc42d2350acb5f6416e1d115efb965b1d649b7900bbf4977eed33b77290a58fac8e3bb4afdf6d639125b216d51061c70335db7e359b8efe486f471fd9b59f1a69d85742881aa9b76f3f45bf1aa4b7e4fc86d8d99e44eea0c89ca7d9de880e850803acea3f8d4b7413acc27940ff1141fa7370df627faddd7056bf0e6769649337ec735f4be6e2f21aee076e6f6311fb9dfd6ae6b44b64b792385cd52c7403c70cedaf0e5ef5c754584841e4aa5a0774a28168d936458b8c2665f83377a740fd3640069091610eea0f72c1cf2d5968096f90e296da95814685dbaec8871c891f712037e2566c1c0fb77556bb81c3830c51c163bbd9d5e9e2215d2e1e578f0be8a76808c911980e1e302087fdc07e3acfc8114c28c86f8ed07164a485b0fea9486e8c20b9b9b9d1b9b9d1b971ddc8803da64b6248022bc7605349c78e36522896fae6f36ac76960ac713c464512378ac5bcda713a1d176b368ac562b19b586c2bd23a8fc5414ed4b01f3c7d335749821c96258121b99cd524dca6d9a00a8305c182604641300fdaaa8044a86828c6c48f18128f0979dd8d09791d8b9f08d6463e3a8f892223a1598b8ed8cebbb1222323a31b23a31ba31c23161cf12067f1170d21214ac207d111270a22fa69da437ba88f35298961ddb486cd1bd31147fa1098389392185624403230d5bc114b26461536c3b0d2785d10ac268105d5a0a0212218cc837a8c82603d413fcd75d143c4c7c88f8f0fcce7e7c5f3ba311e34573d64c29c65322989be75defcc01732934c252d64e44433e6f41d0252f8213891249349493c12d44f1ac3b9ea0f3b73a322a2a10923cac1b9994ba611cf55df902628164b3295dcfe0af3090af209f2192282c1827c827c827c7a1c08addb154113c859fc4430a13ee291c4d051d01c3a02eaa13e3acae9a39c3ed2e9230eb6f1b4665d860806060b7bb8b98488cbe572b95cae58ace3aca77da00d57dd98abfe5006e672b95c2a189eb9ca7cc21f54d00ba9603044a1583221027e9a67492e1919181895cae57259eb2e1918d5a36c887a97cc2ddd3597e06831eb7265a4bb623197cb5d22142c57370d88c86bd3b86af988cd24f2aa5cecf57abd80a6fbac2531246d536ba127829f134392b6596f7e603da2cd95460ac592c7e6ca357582dc948e36cdd6098b0509c182342546dcc759fc4543488e0009197184901117f2110a7a0d89bd0a86830cf07abd5e61385f436c7dbd5eafd72be8d5e3f37abd5eafd76b89e5eaa61d19e2da34ae5a069a3187b82ac7c3c3033b3237cdd699e468c9bc393a3a9a3731233ee2ac2a8642be8dcb3a67794440438864424d44816effcc8909d1a141684e904f0f153caf86c55cf4c8edcf728e8e8e62b1a3d8d49939332776d41f8b1dc5d250124312a86d443c5b4b6248b260d536cec88f1029144bab8edb34b0eba0bb8d5c74b5b1de29c4817453e3f98925318ac562460e73d83529892189eb32efdb7aa8151e039a94c490c47599f76d33b78a46303ae5abb11a3d059d82328e045f4631be1ad1280da16854a37d3bcfbe2f62bce73f7acc315c1783e33d144fe39145b24fe5cc988e045f73e5efd656146524e06bc6885bf0cadfd5c073fdd94330921e73ea71a0d0681e8a90e605588392add30b512b1e2ef7f031a82f6138262566e54b1652f992617dfa19def6720903a7316497d2f757732a9dc8eeaeeed92c8d9476184ae3bc2963c8abef53ff62cc096952247f467ce10dbf90cc32bf2ba55729954cbe5f0c3f3a8a4a50c69431f5553c0ac98f2c4b6dad458dcc4c6d9d99271ad5082f2579abef240e5e6a87a94ae5f08b7f9943bd6c35cfb42283fb92057cf18b7fd7665566c34f15923c330b7a1d57d2f9a6c5a163f19859a91c56312195e3dfcc025facf2676dbb3c137ed979cca41600ccf0159c04a112086e090162ec4fbf70eb54ae4e58b08b7fd9c3cd2e6954a2df7077c0e796944670a3b8fe4baeffc928a6a114e4fa9f4a21b8fe26d10ddc2f65e9899f16d970b1e019110dec12d42d5149bff89770c4365c7ffb231a39ab92d99bf47c5badc9d8835eb014a98b5bb08bbf388a676017ff7014b960175722de5c7faf9473fd49251d1a1d061cb0cecdb31bb8d9b3cb7cfad5d4ce9e5753341295f8ca6fa65dd12816f697a2d1c5f1bebba1e92c7b3eba4eabdf6980fb6ab24aa767cd15f4db272827138a490945444141095150b80d05454341b128282828354341e123c0fa9975c9482ee94559b14034275ab33dd4838e358d5f1b7978933a23995c14bb54d3386d925efbeed334202e86dcd465202e6e6e27ba9f703d97beed344dab7583f1ccb402d330dc2d2080b52c180bf47ba88bbcd3b4a97d1ef8f9126ec38685aec3da89a85fedb7a9694faf46aa20a06a9bc70d51eb4f4d7b951ab56adaf7d5bcefebfd00754cd5496c13d9aa72255ee4312ff2b171c3c6553e33c65d7345dfc60d1b77d9d8207d359acd1ccbeaf221bcf3fdf7d54caf07bd3c54d7e78afefced3b1090de40aa6105aba956eee3de8e0efab8eaa7749f6a693d712da7e79efb13e9ab51bb4a0685a44fe37ec6dcc6d2883bc972eb667873a4d0e6c1afc6dacc181ff21515229125c39c891c66356d920e237ba88bba8b366d92650f11396b896cc8599da6f590ab68fbc86868af8410cf7d5a1315cd189b39372387853ec9ecb527695fbfeb24ce4242759de484709c0ee7e27438221c8fb334ee45dae9baf97d35b427bdc3286c36a0fbec19d0f150dda97dfd4c1b499aa6850e739ffea1ee439538ab74971721a109bce25b7a92cb4136b02177cd9817bff2a516d217e40ac9dc477cc43bddcff0b9a246ee83841622d5b0d6efb09190fef4a6f1f42c3afde231aea758271df73ab9a83e22b9cb5dc02ef44beebaea9a9050d97015adb9e1afe24361a832eeaca854de5f4574d3cf704e47143f852c9d7e6af423fa28a39381fd0bada2dff4dd05dcab8fdc45357287f6cd71af3b8fb46fa1a96977725b3bf38a63e26a7f1acbbe26be2663d995c4b14c21a102bf9a5a3d4f45525d8d6c24240d2400a52afe2a4edad870228d74180721e1960e7323f4b9afc67fb4a79ab5d65a6decdbd5380073e10a973e4be1d29ff4ab09b4d087dc59350723384217504ab6e74ef41652c1417a037953447b9506644da8ec7cd9bb4a58744daea2a1672144b90c5414bb2507a1de0b61e9b04b6d84a80a9c705b2804edf7d558a2d0bfe420274bfa73e9d3ea7d43e470157deebd8f0137bc8f01dd3b6caee87739e6d0a5cf3673455bc859489855ce83e56a4565c7ae27b994832c594e5858c9d289886891b34acfb94eb91e500ba2063e3b777777958c8c20dcdd7f4ecf55dea4505397a2cbda693632af68dc041d03f1cd3330ece23f51344614ef0cef21323f30cb86552a66d9e76f6196f6dc2ff33f18f519855b2bfd32337e13136aa55b32fda2ea97f93c983e6fc561d8a57f2c8db8be69b666323ca8c66023069b30d8c46cc060f3051b2fd814d96861d3051b2ed810d96cc1460b3659b019b2c182cd156cac6003b3a9820d156ca66083c4260b1b29d844c146c86601360ab049808d0d271c889d1e1b8454df2243061f69e9969624081149410a3a66292dbd3ebf673c4c8d77755b136fc34cf2877daed8fe78bfc188de29d8a290df3e4a1b4376eb9e9de0c788671675c4f3e8f9d96e71fbf00c5fa131218cc29d56b03decd7dfda67dbb46f9f36d2b156e2311de4d5402380355127b98de4cedfb4ec081eae9a743e6a444541d38cb2da858e594a4da773f0944d854a0d06729d0b610e9e612e6861e02dae333b114d9363ae5cd3712a74b7f6dc334d6ba40a11f5b76f807d8e6c827bfb1bd944111c9cd6c4f69554d19e69ea33cdd36d2479d43cec4ca69d7a91c34295edf981d0f8e798312a1ba94284fd7e1cf647918dc4d1cfe40ffed6fe47bf2555b6671afb4068b4b016091f66b2cc75170cc1c205b7e41f6f42c72ce5f7baf53b7a51150733a82da828a83eb7da19fc9385aa6933c82e9c31edaa27b586558689b962a2512a64893a2183f848f58d428522e9653195ea1f85f29c39a7f6b9bb73b3bacf5cd5fa26373ef7716ff49cb9aa0f8ece337aa7ca4c27133b874e3e7c7b726242965a89244da209237df81df56ae612bffcab6a770fddc91ba40fdf7d5ce7e8d65aab4896fe6352224b27f2986864449661fdee533e9c31a9b7d6be3716317d479a3d465fca6b8f937a4ee546d7912aa7ef4052e5d43d0eed3bf24791d3ff4821b53f9138b81439391a3463324d0bc3a00cf40db7278d4c33c375e6aa8a3d4cdf43c4d17ee3ab6959ac6e1bcfb896a921ac1fa823b835dba2d6174a13b320aeaad99b5efc2c36639aa67e366659cce572b95c2e57acbea685210af5af52c1c06431a3ece826a7ba5c199189cc7472726e7d1a3463342d0c51a87f95aa14744b999b81ee6837b3108aa62c89ab8c3cd2485db467aeea7f237dcd557d9491facc557d8df2dcfa28fa73ebfb47230b03bbd42cc62e3573652e25b237c962d99bb8660ce9eb4b244bea73abeb52995b82b925d52dfd974aa5d2873386fbd27726a6d1349349fc4e27a4e2aa64599615318d37361207a77bed71b8ff4ca388425111c91b285245fc0d855411491cda6f2289e3fb41d39db6cc8a5bff346e99a66d7f428fb8aaaa9c9e69544e24114c33a31052a1139206d57f7937374938d2b9a1725239912a446cef3d8eedbdd36f7f42e2007f8473757af081d06c7f3a99467bc5ccfbed7178bf913f8a9cfc0ffa1e7942e2d81e247fccdfc889c45575cbb4066caf914d14c1315ffb26e86fdf00ed3fb28939af481a9bc664e44bf3e2b959cfad2663dfcc35358d68c2666c1e815f6bfdae490f961376eb91980dc95e2299b9baea4c4d0b4314ea5fa58281b15fca54d78ba7e756ae33e856a119b37dfd0ee2bed6efa31903964d6474eb4d3832e9c1b763d941b77ebf3d0e0e676b663457f5b7ece8d6e7726e7d4fe7d6ff5cb73ef8bab5f2dc9ac598c67548cf7155fd328bddfa5328f4af2b4238ffd3807816840b3a0e22a46d08996c1b45309983bf491b57cd10d0f67292469037fc6147394c24a14387b3fafd7974dfdcc460a40e980cc7f44dd00b70dadb5b877271851aac00e227779b50a1b3b409153a8cc9bfa70915ba2a34fd1217d2727472584e851bb95dc23490b34841ecb8a37d67c37ea7ef6c7c34b227911c73830720aefd996bff05b3506f7fe499d4db3f61968ffe3275ed93b8f5a35ffa4bf1da2f310b255eea4c1e7f43f04fb25495fcf34dbe1a2679a8ae892b6d170461875d3213eca952541085b5a7fc0843d64e5e9f78dd28e73fe1d5a528194aa3bc4e799e32be51d8e077f959c59b6608fb995d562b20b34b870232bbf0fbbc01828e9d458e1f03c68a4a4a0a85727232999444929f829fd7719b666b46e76527416791740c1db3644f6323353b967fadc67164998d4b6497fb3afa7095734930c1d9d8b0d9b29106c791da73daabdefb4815aa2339f2d2b1473765ba447629b3d7b40bee9326242719c27e5f65de51af79953dffb6013aadd0314be9ed9366b56d6b9b479da53dcc977ee343b7c17f891ad0c0adbe69f9c6e9177f9c2d5ebeec315ccee917e71c31dc21222b70ab88212c4c81592a2970cb8846f2046e021739e1f2f71298a5c3c794f0d3e291c40897bf83c03fe05612fde2df3ce02ab8e5a35ffc95ec20074cf48bf714fd8241cbe0f2770bb8572005b3609c000551e420c1e526b825e30dac94e75fa20763805b06d8620c361c6331a45ae6f337805b30fde20fc3005e00731364b0e01f9669005e0a71f905c02c20f8855b2cfde2cfd2838a8767b9312eff8b304c31eb7b12b74c2566798f42914a97c1e5771870ab59b574d70ab8d53a2d6056f78c82cbef27e0560b712998457feb20dd6a2320fe8756f2c35b214bfa8549709903e287ad8ead4577d42ece6e3ffa06e6c50797164e2ba25b9df3d2415aa785f038cae1a070fd5f728228c187203a46b8e2fabb0811420bd92aed616c30f0ca9f87956a87235c7f1d8670fd7318d9552c388081db091cf775b4d5462bc101a35b25c71fd955316070dcd83973b55d32bad54633bad54a6a1f7574ab2f56545232dad1b1761d05726d4bb7da08a6763274ab2914ca146957c7eeb9dadcd39f3129d77dbb565ea53a39994c4a9452916e53a477c7fceeb7b1ec9e5eaf5b6de429e923ae97b41b8c6a0fae2be929a86825ad05b70c58e537b8fe7dd435b86ee0998e01bb2ce9560fe9172dacb844ce2a7b07d7df6d70fdb9eeede87216577664c93dad29b9bbb998551eb8f3e9f59bd5ec41a74bbdb82c52524bd3bac9dd833fddc8d2af36c79605bd564b9365eabed03e0ce7163adb51f63967ad37bb9d7bddd682cd2e944ed29cef945de8537f76a14e682452479fcefe8ec43ca33990d9738b8e59ca958e7a9366d56a39e8b083aa052688c922f111cfb4c2824a7dc940a5cbdfd5d15329d306ee845ecf3c9a4433368d8894322eadf69b2a18db03dbc32aeb6377608760adb84c8378c7e520245d703cfd946e5039a92b98b522c42aff952c80ae9f7e6ee9463c9a314df39305fd31419e3e839de1081a813c930c9d65f5abd57ad45acdf3e8d85dd48883fa177f0a4a9d5ca7d7f5b73f3cd7df47e8d4635fa7233be05bf03ff027f8dd8b314c195790f8ca57845ce5a91ca19b0ae23120115f09314dca0812f19583af2d664a9b1e87ea3410b4f613c55a3fe45b3671b7af86763d07e1c671a047478de349d58d5dea6f5f0dfd8ea3e1ba018d5dea6b5f4dc6c49d559b5d47f2e8683dcf0b3d3a56effb3e31f346938947377af43d1204c1927dd257539f239974a3683457a89c1b80f0a341af68e45cf8d5d06ef89da934443c2a09b9feed4d7086271f117c812ff1948d279f2130cbfa38ab3c05e1bacf2d43fb23c6a66844e49620d092cb33534023d7bf419f9b0a62e2790ec26f92a91c0f659c7c44a3548e18e3999aca2162eb2c4a279d871a4db810acdf20c9630683189a72d061071527e14b56021f81f1253b81b3f8a870ea5a829081f22503e5f8152e7f14599877d26f55e6a2922ed8c0fda26de3131704d79f762a0a668135e0548eb3ba499008780309dcd916c80764ce39f9655e3b2de9c4744af9210c262531b464e966926529e76664686de5b6995b5b49e00eb39869ed00776db9eb3634e9bf5d7bd9f4b2ac6662d75966d5e7f5da7a3b70adcf99d16c52176936f6c8be762835abb3ce14d77929afe3acb5b6945a71f5a3619bb8d6543570375b1a77ecad1cb81bb983befd6ee376f0fb9a55b2a42fa6ec47c3895bd227a552505029289454969532311c4bbf2472c714c7927ef6a2d14ec7d972fe8ef97e3bebd59d9417c79d179f85b4ac7792a5fdf05fa0c02a521db819b9c33e4da1a0525028295babcdd8d67a2db97d343a70cbecc59f314b1cd831ff7bd128248d373c1977520f7a1d673a99685f0d5a53296b2ddde65bfbb66492612166497c26711393b74366ebec544eb812b280af1ed9cf9991316e07ab76a77f35b6ce0eb31ef3ed773eb4dbc34778b38f867627199b3c9bf86aace9e4b5c0049122b432a1364471a4ce04c52b9347194dbe3496aa6bf2e258e6b8e2a3468d57269f329aa0745cb146784ba1896842edcc3c906bb14b6359fd74e2b5c0c8a448406d885af1c04bc7ed56ed86e30eca8ba911a788f8503c4deac11107248bd0a75fda413f2c91fc5deaab11459186306228ceacd29066f572234e281e41a1d1e040f13438508434621af8077fb10b0680bfb80507c0df7e4468341c291af10f1ab78356ab5f4dcd324fdb9ce3382e0596e8f767bb1ab4dbbcef04c593297150cb11ae7fd9036f59683a35e114c42a7faefb52554a85f5661724e2ac93b34cde517ee5968eb81f8a5525b0e7faa374988c2656951e65a4bc2a7d6a2c51130f2fb16a6615e43afa7ddf37bf69e7756ba9a57e419e190386bcb2f6fbb6e1b803be08da9955aefbb2ae2c5a6b438b92637f3cf035c9aeada8c4555bf08beba0442e4e585cff894a7934abb64b79d9386fb54d33da55ce1cfc7e86cf2c1c77b84f8d201018dcf12cc77dcd3e1adf974e5caef34ad08703bd8e563a964da452348fc581dd5c36c1efc11e7772f4e9ac292a5e2a0a9a7d5e680251281ce4a5722e7fd765dfdc482ff7915e4b5744c28e3b289f8d3b2994ff52a99f5f0dee8a4b807e45b2fc3e43994e5c4aeef87e3e1804e63e3563bad4aae36836eea4bc1d775e3c6a148fe6ca1f454cf999f25fca872f9e7e444c1a9014e7185e8ce04e153785eb5e29ab31eb4ac11a300804067758e5df8d6015bc028d70fd43eebf7109ed663f47f00506814122ceea1e8fe9783c86f3be047dee8ab77257a5b8a445a3efebf83da55ff8d1f0b31f8d4a55563c665aa753ceea8a57e13f2042f523428ec4613e44f98acb2ffe4830c015412e041b3db8fc477c70b9f3db304ebc45a59abe32647baccf90ed718f813259e6f7bf228595a1217febe3c3bd8155d9fbaf484154d2dd944024b925cecafe04d7bfec9e1881fde8e46b806e599f15211aa45ffcadcf8a90c9373dbdc98f2baa4c4491dc91a59428a5947e35325244a1766e08d42d6e49bff8706e089570c3cfd6b9224483706ee096ac7ce19785a418c22cf5d5dc0081101d0c932fb36a358f06a141f8c5bfee6085587ee6cadf8e7ebb17313cd42c7df8dce448372b63dcec9967765a739ed9c941598e497df6281c83f219598a6fc71df5ed775cf6e20812015f208f6804be94f891b3ba7d644a0891654fe9cfcf26f79343194120f0ca3f35823bacbd37822f9007ec99312919e0939e4f5fce6bf2fc269f1a4b382bfee1e4bd917d65fa3e1a5906e4866339c3320609f4294b414a7149592a410906e1fa7f30a67852faec2dc92b5fb8d37da9fb6fdcc90969ba17c79d1c144df7f667c69cdefef407cd186f92a5d6a72007f0ca1f9ca24b70fd4b3a45ae47a64ec02b524692ae7f97ca69b214975c7f2fe1a472e85b4bbdbe38ed37660fe3a3519b08312ed5e1521cbe7419c09741c868b1669e7e89590278fa2966c93cfd6756ccd3df8159aca7ef03b302f0f403e0c3d31700c7d03cfde616cad3d7b8857afa246ea59e3efd17dc129f3e0bb74c4fbf076ee1f0f481e0d600c81d1f9e92e5f71d07e4aaf0aba157dcedf36205783aee14807482afa032c69e9766e496c02b7f1ce8e3f026d3cb7851fc017c48804fa55e88478d331e65ece123bcf7519efb99313e94f3c288f130de87f18301affcef0c2108300019e37782d68c0064625801700902002e40b8fc00f3827a3aa21e05e5bd98b350f44d1ae553df6fea8b224bfae1d38f067dd189b0047253df4fc39ad3cf7024f88aedabf97af3e1b7ef8a135f712257502497f17b01bff8b78c9f907ef1ef61fc46c02ffe398c5e12f7947847f3bbf11c76f15779317e3a2c8841bff8ef30ea308ecc2efffcd5ac905e4c0d265f723f530c1ddf200000c40f63f991a0fc50f0b9ca0f06d77f1ccb6f05d7ffc7f28be2b381764d90702573669464f9afa69a5e1c4d1f86a54b5397eee083c99701483da3287dea31d9e9e99b30cbe5e9a730abe5e98fcceae1e9ab98c5c3d37f61d6eae9b398a57afa0360d60e4fdf00ccd2e1e9db704c0e4f3fecd6c9c9a33c7d146eade0f02c4f1f06b754c6279f7e0edc4a89f1fff45bb825be78184f1f00dc3251f995a73fc3ad94c9a73cfdcb2d14d9c34778519f7a4a96f53b0e88fbe182bc18f793c4593c58e88a9e91665f0bc91248cf0d9f8ecc2824bb8a66df4dcf8b398bc5b7e38e0fee03e904d36f08fbe2bb8c9e193c34b4ca6b03ab3e1cffa2508d9f143b8c5f0b7418bf570ee347c4e3825ffc7118c9d15b43bff88fe38fdf07f8c53fc60863fc5e8c2be377027ef1574919bf15f48bbfc9981a3f18f08b3f6a4419bd24a3570676f121dc1312652cfba2a41e05f5ed8222cb9337f9191365d4fe64f4c0a55df6154dbc24be22bd98ab9c0d613fdfb0f4ba28bd25e507828f04e58782f2737d32b8fe9a17bbce42948558a8853f952a3472c2819838d1316cace049c47dc4acf95d742d03b742fe164383a19bbfb54075172e7f23e18671cc0e51e0d6ca4a164e60d60a16dcfa3fa20466a520815b2c2c493002b34623dc52a98ae0c32cd207dc6a6901c265e1a0036ec1c0f45cfe9e8259393c7fef340e6ac02c9657b764666870f9dbc5ac179f92c1029409b835e347870422e8115cfe0601b3fed9860ff0c4e54f825927cfef8363509eff875f805b368e98e1f25b8059a7e7a700b76e4c8025c02d1c10c8c1ad1c3888e05611093800b78c2840c92efd25012ebf8c6ee9f8815b3c1800979f06b3c0e71722081917666d5fb674809f076e25a103b34a2d1f3198d52d26faa59f7578eb5f0d9331a1df5c1dbae5438684ddf2d7cbd42d274204d52de749e1199f62a55b4e45ff77cb7b7a58bae556f4abbae53e3e2dfd30ddf29f9f20bae540fdd2df2fd32d0f9ae119c742c69119dd722124b003f08c5fc1c60da11f2440fd38721461c411454862b024433a667c0decc2a35bbe24896ecd211fdd9a414c746bde748067e613ecd2bf24c9d00c52e2345de79e0fe9d68f217dd3383d05cf34093a4890d6d1692142dad54386f4ebd544faa59f48f3f40b163cd3533415541cb9dd3d6d45fb5c81675a08ecd23f3f430dd4417da45f5aa891f44b7fc3faa5ff484cc89320e9a17ee935f04c6ba1bb68decc27887c49d1504c87b169605e7c7069e98187950ae6c50797961e7858a99a8aee692b5a480fe997143ba8aca48c240e39789fb890239943eee33f0e048472f29d7620d6c003fdc424f68949d4b45033d1b2ade42f224478321d50a165f309b7bfcbaab7cab89383a2d1e1fba75b6df4021474a485bae5373d0821e996e3f08004d62dcf59c186bae541b4d02dd751111575cb85a8145d77f1907ee9f718b04bcf0b69850f3e2eed465afca707b28178c059e504e9961f3101cff813d8a55b2ea4d211d22d47a222a45b0e234beff721ddf2a118f08c6b815dfce5449c87043ce33a6097eee996b715edd342e8201c4447073d2da4bf5d2f1ab85ef012f22272fb77182714867a003a3011ee14cda3c3f74f2702665ee5800339a6ac8c9f328e4f92630a0e5fa63ccb98f22acf8fc3489629bff2f3a391f239788085050732879495e787b19242ee80f129ef46dd9a43fdd2e3b3903890e48b71368155fdc20d4be61118dcfe9e58b04bfff8e265705f9542c580f1a911068cd48b2f538f5a515179fe172ba94ff91953654c2153235f941321e99617c1bae5b1212df08c97815d7a7c70895ca808c96d18107aacd081cf8e911fa01e2b70e04303232ff8b942402f146b70fb4d53dcfed30e6eff89cf138e78f8de18be38ce1bef4f9e77bc69bc21597a0ffefc68787ff2c009911779193c8989e8769f38238dcd2af09ddc417aefddc8a4b46973c87c293972c31225a4cf461249637e0df43c92b6e0052f1198e0f6d7a9022722c58ce2ba0e786642e154746be2f44bbf1022b704b7df79b879e32cae37eeb91b39722271b3f98c81eb1bafe6fb5743bb95f933fe16a0dd494472a2e77683071d7516d30e2778629ac111788003d80a59b0146a2e13608659a4e78f11000064c05c207270ee59606caff2be34295d238cd041d83fc392383232070a69e308139d9c4c53cba944946693e8868623870cab5193921892ac11ceb25946674cca44de7783e2b0398ab8c16c38032b41d2de5801567571cb70790c1428a25b4744c14b729c0c466459d36f203de8499358406bcdb2fa4cc3caeac837cb68cdb28c52b2390059466bcdb2ac8bb8d324d0ee6933cdf6e9d21d19697ab96ee283898749c9c5e40225b1a5848418f620622024f110264102572425c04f05f6f8bc1dbe0c789d0e9e8f8ecba1d300b7b1704b6c1a0edb06344b6a4cd83a5ecb819a957f6bc62e3446e6013aaf3f0cca2ef4e75743512b36b3d3669bdd32d4cd460de52c2d7bee35ad7e3432276e36f2e56270b6f7a98d53d3b42ccb6c23e1bcce4bf10a95656f27a98a6ec664213790eb2bfa53bc14032bba853c33af3be140a6f71a6a65cd92b4ce2ec27e9f37a07fe32c0da7e9771bb845a9a6b519bae9f6f4fb0ccd1a03b33ada39f4352f34396bd650fe6a32cdeb562b392af14caf815dfa5bf39b9ccc323fa594524a29a59407cb9dd34849bf74b7fca85f7a0d3ce36ee8a36ef9927ee9374ad245d388c8ce223684bc7963f3aa923b8cd470d96034c1d0c5edd75cc9911b78667e815dfafb7d49b76651bff493e1d2d15a92b39fcf6f2bd39f402ea593a8f3ed48c72c258ce5e16d1b4735cddbecb77d1e4d110474af7da77d1f9dd4a35f0d4a52cad4d360e6a457e8d85919ab28abe8a4737a0b61ecf71813067d91ad5495142db5a13894eec43b7d26d084540ac5b04432014ddfc93be95038d496d252ac0743d36278a347d636d0d95c84ad69932c439f6e294f37b908db35f7ae01894422914856ab19b5d533eafdf4e725912a896449249e6125e84dc72cedddd652ed3e7d66a155a0a0445d762e40ffbc8c7e35f3e8cac0b46439771bb38eabdb9c314db315e54ecfa04d8d28845d7e771584fd5284dde352f07bb316cd499834fa65262187a619f5d994662a35fcce6726ee15e8dcba25ab599d35ab9607956a5a6aada6699c6dbed9d4b00bc7d9c8a1eb6ad6b6320ed5ba6deff2b30bb7b6c51082e917da06a37196a7512964170eab977d149c241819981637cdd68c5bd9ea4fe6d49b1fd8242fd45438efcf9b678ae7f1e71f0876730e93c4947a8324948fceb98587d909e851d20c5dcc4cbc300cc3300c3d1445511445b187608ee4f2fb1157b153e1419234151d24c9e4232d97bfe7f44aa5509c3eb2cb1f7e356ee205a7f6a854ec988a7a183234031000000002b315002020100c8784a2d1601e48a9a47a14000f6e905c6a5ea009645912c42884143286106208000098119819da3622b39471a704de5fd4fed9ee01981d52cd763c8b8de82f6007b33f7e055085f2e867bc1dc9dd6ad01d02e8bfc1aedf256da080085eda0fc17514b03571f6d8328860c85aec479afcd1799f2b0bb394373839dbd8319759bef01f72a8bee8cff510cbcef37a20f3ecfe88af40d15338a9b183aa94104b86dc81984a27f6caa74e8d5c26c4435843cdf868ee0f6952828cbb5ae1b80108e5443a06bbc50b9446e47f7890ab32671306c54bc4c2ac87f483504ef5c222c81c6ab3e685d2d21de51d33cfbf45bee8c9f3fb5deb9e14e4a53f4f2da2ffa77420bb2a66214c98eaa6ebe4ec6f0105fc95aaa462f779047c87b4c2cd36580f3824147795f6a15d1fb469e582353cb70bebd25416581b62ba54687a9e1de9b625116ace31bfa4bd0cd781549936a4cb00c733e265aecf13ca7f6a4034f4ce300441dfa6610395a4c541646357505ef982662b830cb9f6c168ba88e303a221a6ec82da843985df4bba25b159617f6ec418018ccc587f8d8ab12682ee16c574e2adcbe3d4efb3f2be7ed72d7cd5b4085d2401f1046b921cb29b57952ba6e512ef560ec2c0cd4fef7aaa473da6e7a597c4c18f91713187c7a1d7e94455ba28125f5752ff5b222b00938f855657e29b7f9d8400248459dcba6f84acb2db7ffa36984814327c408b9e60ddc84f72720f2f5a5ab42f1a765ebc058c6f641da3459976d8cd4ceaf4ade57734c2cae39e2af9f847c456572215b70e517ef4bf8ef416ca5ac27ce89e0e9b9e7288ada5435239eb5d9af01035fa6444d28d9920799708090fd2a6de00a79182dd1b4a2a6c570b2690f8c99b0389f857b9637fe43898c28746cb82de4dfb4bbed2212ce1d02df0ae623341d32b765be31cf43417b21e5d59b7eaa8d0c56efe0e5fae8fcd501b7f2ccfcfa02f116a3f2a9d6d0c3699b636ec93cff8206905ccba1c5ebde41672cc141e3b3a04d461f664cd01c137a8903948646cfcb7ee0e8a2b49bbbebcbe9abf5bb2bba34ef6d29a71afab3237a601b68fd034feede16ea6360290e8d298ee262fd5109cbbc96c0311c71373b93886cd9dcec5b9a914c149d03c32c6a83efcfcda8e7e7498fa4715d7433f52b8d1737234ccf07247646ae22e00c219d81d6a8cf0f025c4b3d7e15060de0d03399a7cb00ecf3910f4b49723eb6e0b5d62489ac1779edaae8e199771438295c15d598f79b5ecfe6b5297052aa798d84d11f3d4a943ff30580b653ef3b35380f07e336ef992f99108368c3e9ad05e3cd0fa3a6ef652e0f379ac0a3fa24f3017e793747df11d7f7115fa843f3f2473813f3230a408115d8e90097b3aa5d4a0d6870819590343d82387c39e43917fe74e7b816fe94c1095bd60e86a33401dc85c92165cb0eca2e6e02c1e09a539b20b3dc5d110000708b4885ae56140949467ff18a76dc0730db0e92b2369a3779f008e24a9883e35b7e1000e2da38fdecfec63e3924113f2fb0edcb767591d9dd3b23a22780de27f64386a9566ae3d822843240b01ecb52f7214aa3736230146b044bf4bcc0fdcfbe8f6fadd064f525ee72c5bec1dcb442b0409aed0db9026b5fede6881d7610bbf292e19be901cedd844cd275b758c7e295e862f4248c13a523fa07edb2f7197bf3e547d0e94e587494b520d5b06fa5795c39729910c34ff65c367b71650568fa6065047456f2cce6b778004018d3796278170f0de7fd0e96514845b2c76228f07bc79b840e5c0e93c5ca807eda11eee0b5256cf183870101966353547195e3f8e9a23ca9acfd538b30be6f5ce018693c6e6f556f6a1df6959476da30d1252e4dcdbc5d89720320a1eb3443f4ba3e3d34496acfb86e241e5e79f7fb65f93991775340061280d2803be50e80f096e198d2183b4a31b019176ecc18d87096990fd5c80f5779c3d71851bdc7003175c4326b88ed82086031c84831cc001298d1da00cb26a02fa7a0aa384d6d174a2ad03fd74176bc4aae34d915d101d4409648ed845ef625950fdaba60df68e38bc0e2bce0e3a6e51b207f2ccf526b3c3f7fa1cb3f5086bf7a46f51324a7c588afb7a103ba9de4e250f2d683db9743927fdc289b9a0f49cd044abdb947cde6a43bd262ae3fc8705f140fb1265387e99e7904dacc3e2cae322d3715205fee39e2b73b60b9b1bee612102b94a99348196c6275d9939607222f8a2c55d7f401fd42374a3dc6e9496d039cee167beeafb004f19de28239bdc692d7376dcd4ae5c7025f8f2f6855cdf130ef2c3a03198fa9109c6b033624b80c9a3830325fd1d84ec32c428d160bbc1cab20c199af4ea06fd52a876da5c5b34790606baadd4f0880d7a67d4598b8279a0068132ea882aef342c38738951916d4d304c801553bc8236689fdf644645d6a84424bca8cd92c7770dd0f2e5cd6efab2b81b88d7ba59701c9522e9a6dada910773bab1d11384d32fb397d46603ef4b602d3fdb5229c999976182aef0eb091c09cee04846ea53ba7bf0d9c5b166706c08442cfe87dc65f6cb75ce1937421f30479073c0a40d4dbcd567ec0904c438120d185f2ca66283c84e41877562171ae13bda7f658b5f69b405cd743c9dbdb1f1aec4e73f63e787d15d53673eb709fe8e7ed07cbac2badac9b6e33416c982240e87002d0d5ffd90ef6a2c66890697a09b9192bd6e3fb3f1c8258e21b10a8232523987a4ae48f7ceb7429eee59a8c9cb63e275a7d3266fe18b915b2bad499dc3a38b2a3e50784b38a12100ba1c2270b4afb0fc0c0fa108d2d3acd7c0d1723f71c5e1c23f617cbe2356d28262d808c0ea9ec027ce7b60c42fddb163da72101fe000ee5d98ebbbd52b99ac61f4145b8d7080f8af2123eef7dae620a7ac62041c9e9e4873a64a1696db334de057aac41dabab816826322c98c5cec0653565aba12d97630abe4c906b00f9d92df267890ebe1125bb8b707f1213d0d06616cfe80c67637282a4f316926b109cbc1bb5a80023ee4dd61bd17dc6dd67ff7531d467f2170be19bc81b62ff31a56eccda398048df2afa727c582f42687b8a0c79d89b4b31cd1815bcaa2f360f9f80e786ba2813bba867cd766bb2f5941cf17a329e39365ecab250296d29c4823bd3be854651fc30b62a6b602929f571927820a4625f49c5a1906bdc254505796dd4a0528cfaf38afe15f8cebe739f967b1148cf24852ee901262adf869c84e7002fc8c0c9798571ebc480b95b56189df9130840cb9caf8ac6ce9568a852dfb8e7b00cac6050fa94b160629a4c1099996175d5c726b642da73bb8e2fc2fe64d829a9f8ababb01cc86975cdd3da103f5d5943b4ee34ca94cf03ce5c11f6ab684c0e49e62ba42e8e114a664a813f89e879afd0e3c42fe8357248971266e794382e814fa86d1696a4fc3a41cba879f2056ba1e7f81eac1a1c23f831e80a9edf4e2da808addb13647a63b36cd7385696b6aebf6404c9f9d74efd180a7d05f2af6f3d8fa3fbeba8c21cf0120525711ea5861861b690d93dd82bcc2620828947d0938c42c2c0b0a67aa4b5b40aa42e94945df3205d1148cb97a2c4abd6f6c811d42c8788fc62388796c3556682b2aaa5594f51991510bd5dafdc6274011b6b84d7055831f1f65c809464fb3798b26ed9865a4d6668a68bb60a7b5b45090cc385db6d95ea10c0b4595c450375d57253b69ac726df36a138c1aebc8e25bd37bea081f8aa5fcbdcaa680f5df8825df6ce6639e8be2a9e29b0bff12b200e08af6b971a0b784023d664cf3024865a94c2c2b10289fd6423a95f9e3bdb0b0a6fd9d9acd6d9c32a444677c3292f12e82ae28a0b298f0ee2e749508bba36f1f85af455107024464b1f7722ac5a719610b0958579804004e4251a172f96f61c8a5f3a6bfa74daaefe338d4b6c9c802b686944c8ba41018fe16aba5a7c80382ac3df7fc48035f33f5906ceed916927b6aab8372e1f80d41e5fc6b4831e2b774462e14ca062a6e5aa08b03aa2cb48c91330116181830a0cc71500d212c7bc6c39c6dcf1ba3a597d6e8251b3d020e09731d1a105149a3be478480f82f810fc712bdcda3a78ac01a8ad655708202c43be6e4c41467a1ffe4f98f01c1564d7cd68e63b76dd582729ff67e474472cc4d08440463a62409c2421ac72796727f473b2f576f47e4313c1e8469eba2d002fd82ba3d5f4562b436defedd051059f6191e12b31be1de1a0b3b743becd71f803252736df8e70fc9c8b00e58212f33242647eac1911e1e109be6f47f16e33c228eb47aefa7e40733d50a4baa709f3e3df0eaf79dfd88f3b9cd4d7c7eb61b3cdd408586d86ecf10cb32cec8f3b58e97ce3b85468ab73a9782d6acd6123414fc5d4f834168e8203824128000b475855c4821448e85238751fcd86d36100200802c162302b059194034a3a2aaec2a7b331541cc003b522447354cbce25878b58dd13af9ac9add73ab409b5f34998f7d0edd1c01332a9faab253720b6cc28b2bf313383d87c14afc46ff3e6cc1dc54ed02088e612fde451ba06a5b58c984f3e95636c4e17aef9eb14e0b15810367c2eb669071396478d4e1c1037c250e37a0b9a0054f7a9faadf259153fa965e4568fed8611db4d51f599d850a3e985595f0377d40cb94390f6a54299e210fa4f3aadc3e70b48da53f39d807291aeace5763e38fc6c0a560f16dc81845c6e16d53281326842bb2e6d59fc8f2947789abd476bb8ffb3ee081386d7f5e77615ae93becf0f2ff24b548bfe9a8077541077f945b78c63d456615aaefdae63dcb78a58bd68e06ec8d624db0a4ebc8a894c7eb35d1ffb1d29257b3496ceac336458f80f6a4fbd9773fcf22161fd19ee3c0614e7c329f558a40177dcbf694fb7765adef41bcf4d451eb7ad0e41913b2374417c3b5c494b8bccb90e0eec8fd0c5e08e7bab1ca8bbfc66ccda1353e049c900cec9bd8b70c701d4af7a6dd56fe85d82b75a307cadda5b9175a6d4879ef6043a5c157c0ee17cf20d14dd1ac8adc62b38bfa0ccc31af911ed776fef4c62eae571b1ee281c038f549aae8ade4a5372007ec8d04d62c8ee2b869ed2d03497eae1e6c178d54a8afa4cd89d6cc08014452e304531194e99118a41cb522276b9776833953b7d4b1597a27d7a315008c378d9ff1a326484b1c96d5aa79bd69a524147c4ab5b384dfad7f9fc602c2e259bf72d0dfff127ddd60cd874b0575ee064189eac1a56870eed0921c29e021ffb566d6feed736d2d650d2095f7b2cc4325723505bb1357edb1f353535aeeb6d1f6f6a1b27765b6758926d4da031ed0f183ef51381dc752c43673d87188b2a00534d4f00ae329a00e844b35d2db32a904ca6c283cb358989bd306a2a4aeea7a4d700214d4390589ce0189d499c378ed1e59177148625e6f2cc613a5d28a2584b7a58ab79d4921c3e278fb1e4705a9cb1d55f1947cc8c93324cfb92768b0cd382c3c2ff72505c2833a5132d22067eaf108e33d1631d6eb27a0ce789ee76dcc3875f9fbc90293bfa74bd34cc2cb54730926fbf70156dfa17c2605376d0d616d0dc242f237b5e38a2e77198d34250d102f453af39da2154b76025aa30034fd23ce3d38eb468b7f02d57e69e8ba2950416a452b456e9683bb76412d28efa20b1e4acdf14102a2e00284fa7ada41dedb724997815616f627a29edc88146987630da48b43e62dbc9c3824b2c56858f67abd9199006ec34ed22cbaf229052f35323aa16313eb8253700b4b3213b5dbbd0f0b603c330ce37aaa4d025ba8a9505bc40cb9c8011a70df674ed02fe205ebed8885560c04ca4bf3d2386ec8938203517be451459ec1020ea8296b03f2d2b8a915983e379f1de453ba9e76de99cd64a5d86fa213175915bd242fe11ddf635784aa6c3451691a238925f618f97be917fdd06d6c58d4db38965de5dac6e6814455b3222782f062461ad2c5ebf1465104c13432591722df7be12e41f6cc154ecd9de4e89c772e498b5c9a2d1e9126b87931c8aaac81edd285e3df34a49a5059e66a35a3d8acd63ec65a19673c3b6e7509455a5f3ad575c002d21bb149051914e6546e0507af85d2bffc215578bb75826b0da16903163bd983b01cb6e0fe4b1f531bcbddd0c3464614628b8437709ba2cc66f0c4f0ccc80a4a751e640b1c8aa0ca9797f42b608c27e1f91f37adb1669ce7699f2fda4ae43cd3c0fc291428911992bc695606d26a20ff0d32a8cdc1c9a6c8d1b84beb8c9354dfb3b6745fc455484a4082892ad510d298f6c6d9e15162a3a6610d326c9d12abd88561b220cc5842caa96729c4213128624425d2722f7e50134c1b0165de604b248f56682bdbdf3a3e82a61fb15a868c404c98a5140a857315250cee61735a12caa4d7cac847a5e6cc9580410a8bbac7f9106546775454e0521da0fbe769dbf986a04799fdbb1982a3caba3520c274fbe0114680e15163dcf4c4c0acc8fd0afb54cc986b8283dd2f830046a2f1a7d4e3efffabfb2a221dd9a22992a4e464cf8a4b9be76327148123d4d362958d875d033165139027104674405329585e2a13af44df5a7ae9835c6244708df1e31c74e033337175317a23d57532ecdb22f2dd794c09a3f12a2354cf45079e049593b51532199b6baf791026bb8f792c3bbb2e30f3daf7e72ef761064cef5800b997a6ca6f65326bd72426ee8165341f1f546e5d41ac9bd3148b420f7c755341ee4fa9e4b127e36330f118cad23da4102d09d59c81c56147734e98cc0383df295b018b24dc1148d140113f67a661c9e998c745c0e51d8b673c51387f8e0d0db40383189dd363af29be312d5ccf4a8c68c10958ee69f318c83d2eee2ffadb08bbf0033559e079310bfcf2c69d612142bd022cc906840bb8d27922334440dbdc29c72796c71920024787f89673f03f44eafbd01d13dcc406a2b351dbbfa324e7300a553c8cb10bee477bbe0e7ce8e4d521845c8f092e98dff3a5310cc4529644253799f3a36fd800509561126dedf92c5ce8b79a460c558e2bb10f66f099194396e2af9841488748ab5876716a69411ea33aed8d16f776e044bb893864b566ac45d35a81172d7203a5b86112c61488948e73d18ca1d1894ce293dd3729ef2896d43b7d74bd097c6ff43ec698944b8e78379753a2a838b72c0afc9a686779ebdb8fef69bbe464c5c903156ec13c762b291b1501d8cdb4cc6604dc92f35f8e716f91b1230a1f4a5fe409c228fbd4dba572224e885465e0b77934fa894a8c5886e371493ff591097539b8800db7292882639e169e3099f9fd0e9017e9b49f9b2942a69d02dc0a028f961f34466343e08f937a73ba9af7a0d9d83fe50b86b38d5e54cae04848b5fc111bd8557b77720ee9b4c8e38a857f09247f5a7959ef42bd35c0a038d9cfedb509a7d1622e33287465864753f848873e0e735affa02a3594da67a4bdbaa66750231387ed04059dbb144e47df12268dec55556540ce03edb839bf5d5e8d99f7fa8f17a3b319013037c15a6020d9b5fb8a67051e4d9aaf54c7595682e3ef00d896c6eb6848b5de8f80f2b85ac34c5e288be116b1f9695edd3948e7e451298a4bf5000322af7cc76fc8cfb80bc0a8f52883d3531dbc45a375c2443bcc8192bfac745aa0f3e50971f8b548758df58c22bb8e7cb922d3df1c5e44113bf5e71bdb94204b8c26a6154f01df35e803baa100f8f26ea01c1dcdd082c26ed6f7d01ea8834ebc925af79166d8b4aa4b0f43adc02aa62b4937326c574c54013b481fe24128806fdd82992b483a7b38522e5ba1f1aa5ebe8724e8b26b2b8577d04ccf3e9368000f5c78cfb5d3e108a39cb712eda8d0675a239042c50c39a7dd9b85046b959147412dff50c9462f4b075c78b8fd5983c9058fb29a9aadd9701209025041d338b8985727b715b825ca9e209c6bef995ef0e8484464edc0d9cdbf4c18d8f3884a58c9c5a4ef0f2d64ceeb23d0710e45eb7d4cec3fd3fbba192937880191980fb3b624cf1ff1159390dd5f208d9bf70a91680d2dee31cc3938e5def6907cf402905c6331cb5862426478eedc739d755f7dd34e6373c930f666d0d55ebfb7d3680b437e945fa90b4acae3665ac345f642a6857ab7a1e780d3dd77474ee83cdd28f3c9e7f08ceb14c2315995d7a9a2636411016aa3d72625b7a2f2ffc11eb0cc3d91775b89abcdfc728d71187083ba8c57ba3e2af16248324d16ffeb789af66223402305081d7d9b561dbc0e3155e407017df34286496a9ae8ef0bfbbde8d9635bc332056097f2b64511b23185d553ba9997a20e650ec8237e4517a3f527524af495ca8a17145a6a2b4272189b990fd70a948ea3dfe88e0025258e0481cd188560135c775170fd09a3439649a7271e7c500511d12a87e10664059e2e35fd63288cc32970dd4012ff707250db1d2435b8e0c696707e6a87623990bd9bf1c21cb3ae36d9d5f0134e6a9cea793dc16b024aba8428d1fe83ea31ebebccb94149a6507de61569c935dc2bbcf15e75a83287ee05ce0b2f7ef56a985da72d5a52cb5a712a9c15e3309fcf367c7285500e0fdefcfb19352513d53f4caa6ca8d9438cf6aed7ca8dbcec100dcefa297cafa304851c0d08a16f1166c74aa132dbca069a0d899c2f515b5e65af6608a887ca58f7161e99c50b7f035f4be1583c14f108d45c6127bc6e7010a75389ccb4d7208603e7e081ee1a3141b0554799f94f292da427d0447d0ada090f7c1fa31190f34eca25d21a79abd86c42848e57e210a9d9a85cc646ba81f31dade5d06f0c0fe1db96bdcf32061b9e6ba0775d77a13311190d7493f17fea0c58e6d4c1b66c8967f608957bb03b65a49b9e1c952adeea19c9210168568b8545193434a38ee13872c8db0886e86c202b82e09ca92de17d9126efdef7a6b05a8304322a9f056284dafcc2950a2ba07521bb4ffea0747ca8ea45d6e5fcb88e9b4c6963fdc341fc748bbae076ea3a41da9ba1e8f4e916bd2d14f32db247898458ebecea0233a7262471f3a26dad2f91772f5af6957de55aa70161a6f6af646e57a6efc52e16e34e32547d5b6df8b5afe12d014da77106753e3708f80ec1793ceb2378f8ec6417ad48ed634bdeb9ae8c6e608410bdca576cfa29002a91621122e9bed528b92a8cf6221c66ba1123104a23a2a3649dad310a3b172ab725a5763d12f02ad7e4ad28ed558115abd88cfd92d521bcb6122b10013649f442eddff5c0a88feb1b74653adb5b74690ca327a53bcd1251c0f7adf95a95329c75823cb8804a7409826b4e04ad676c170fc07caa6a3dd604c76a8031e7b984114aa0190e858c45af60e6088510eec07e873b988457efa8b528a3ce4acd96a3ad04f7f05bf0d7cde60d83343d18022db96e434d39a8edcc9049dff760688ceafcfa0d90218718cf52dfec9f94f01e80287921290ea1e97f3a71d08c2a29d2f2a682f1f6e4268c968d3236bad16d322cdfe9c54e351e920f625d7e0b96b554162caa7f87aeb4d63ee28af5cb996f82fe10c06e8abe224d0f03a8f0586f41b2566649d9d80f00d4704ad11fa73881950152f64d7941f4472a8efe38a5a3e74ff3819b5d49be7bcdee269385725e7754cbe15001a5daad48144f98d8fce8eb5f5f17d66ddfa6d235cde535cfed68774e998d5ab37e414a6628cd4fdd2bf448de830818c2bd3f5bd5f449bb780b1bdb106ed5dd28f1714b8f44ab73a5cd82b76d8f74b11b254605577f1c41297d06be10ac216a8bb878f0dfa54f6e042b0fb913dd427f5c03777eae7b6d266c59b6e5326f4c97e2a1b48d73a102085e58eb9da1fed02b42c58051b35efaf6eab52a34e49170c5f7d32969db27b0714cb24882b27d1c5f330edd4bd71a5e2f75aa89dc1d37b96f4000ecb1a817006672c919fd6b1ab57aa1249163e63b7ae64a95daf3e29b3f5ea708b268de24e95a871d28de2da3d6962256726a02eceb3b3026e5e2dce9c2706e2ce0606800c0f2136e1ee098bc34e81e5535b4f489c8b6138bdfaf0b2eeea5f1af27257d763905c57a498ba8bb52464a52dabc0f8916e75aa77f5538ca2ea04cbb36f3c815c606abf6ec261d038a772d389eb5ed3185b0771cee3ea651b3b4dba738d8faee37e0970c5fef09b4582fe0b200be1b923cfe35431d3bd080bc5d1ab65c74541efd9b076b02516a9bf7c88c3dad8ea3d06a341d4a60594914e186d449490fa9e1dde3fbf3eceba85af121d100488654345805a95ffc561385345c705be49302b34a14b90bacba1015bdeea21be73899e5a7a46e16186d1648e2cb1f8c0ca70bf0c1dccd993e82e201a15b0275d29b7cc012f6eb25021573431a58b4514eb1909f190e350cbf8326b526d3f2a14914e7e86c8080a44c5a3f6ac4d8084ba1f28767d57db1e452c5cd96d5f5a04e176cad119de1e78c07257e28729a67cdfed22c203875f656dd6a000cb13b18f04fca193b7b789e0eb1f20880803e1aba8fcccdba8c5078c4823d91bd862d44092bd3d9142b659f6e6dbdf9f7c317b1d5fd0e512229116eca9ec2d0ff92018c6ad4f5ab084274487de84f592c78b2611ce6fd33dd51e0a53da1267e0397bd04f0f52277ef4bd279b9995f67f002e04c2c9bed591c9784611dd882167c6aa184f9c8e5540714253bd707334a6d1a499c1273ce989dd36049684b254b70c36ae7105f86fa1a6f9853cc2e0114a9ba62a15a4942023e35900995b8201f06c82b09c7dffa6626e06dba2954461eaaa006c37ca9f80ea917fa4a8bc7e89cf4b1d6d7daedde5a9a04408e242bf2efa8e9b4f54b0b5bae70aa95156716676b9efe1907365b2c207a0b9062bb86ad05ee386dc2ddf358e652a721d99de5df4f1cf9b797ee2aa463a44ced9a19dc8b2b7451f62dae3e9e0f3a053148b1b2342e4f27fdb721a6242c325f2f4384231a8f27c82390aaecd7815e648777c58b5a3d745087063092676887287edc18e255c7effb0d23134f19a2102794911130b30029a0b89fc5b181d4109b1c81c52b90f57747ea3a39897665949bc700a4879b4e787b30f04df0cf2ca56f6f08e12024d7451d6d1cdd9e091ad0ea83c594f03c1e72be6be880cc3e61a6f7e128bb36b6a0b00694566340ae120dcd5bc15004b15acb4dbf9a3ffeba742615b21751f44c73765b95524c753fef84a8ee2bc2fce7bb54685c0d89ae732bcaf179cf2006fd9bcbc31c3b0840875d1dad91da929963e33be9b80b1128f7ea0db0ffa0d872ded29de1ff8bcf1610de8527e05fba5f757ff43c42e6a95a70efac259f5457bacb47a04035babd87d2e0236529b79b30dadc075d8e44328594507f4a08d99c0147d114ce8fafa77d67e8a6e29b7844c34fc85395350dc22188352de0e446bca22482b94890f5c6a78a612c659c90e997d47494008c3c8761ad7549f7dcd29f38b201234a5098f185f2f77511d941aff1c6c0c150de2368c8912d677d1a75f31d441d7fec976b89165f1ba1eff6951d6593224e8a2528e76120ba516be6b8420d115c756ce31e0ebe721ea0d3a54ac63372d957a6c7c38f99e3620583042ad97f3e72d006c91ca85cc712e8392b58c2c51092a03af90e6f1e3c35cd35065441407a1d45e05c7c9f6dc0b76f45a6572557fdd48ec3ea34caaac6a7b627e8760c31477f29f2d901b4c29caf3e7799c8345d8c1eb0cefc19eb898cbb331baaf4bb5d5702a88e2bfe470125abcd054cb65b5c06ac729da3ba3e65a81d51fa25cedaccc158edde9d8fd048d3fc02cfd504408905851576c467572de300e2711ba6032c2ad2aee94f2206641b8843fb9c5ccb9608b664f3d9da459cb374a6cf3808a23f8e856b9070020bc8bd5e05da1b0b82c1362249463d3e3db53830727367a21a375061f5879197f9b76901e60c1300b85db0a5d68bfcc23ea98e686b20563ce36003ca5cae903f8102972774cbea9f5a15804754ba15e672b39064605805d8d127cc1ebb874ae8ec101560f1046b2417f0c62c1d292f98d357add06ed911615c6468624bf28d8b5ef01100c5a5af01acc3e1e4e2c889d53fecdcc927903a837a713b0f75d5ea27248e6b9e73560c4b945ff85a604790ecf4876264e6c72a8008741fd73b3617c8f50285535f99d2fd9004f0086679e165f6410f74a7e7b56bc8520d36587f7ab03dee6cd151a665a2d16e950551eb48405d393989ab59159a285a0f532b609e8750cca98dd924a570d10326848736347b1335f0c79812b20aa3112b24b85c9ecf4e93a2c9c363f11125265acf78b13e01ae64317d314111b4d6ff3816c6fc3432b77b8f8b3b7e16f49d162400e24460470ecd5156ce0f94a4891f1bab30961331603d1f95dfc5e6d4d7a00a20e89916a1bd22648f736f868629479b807e6185239ba50a4c7ea1a4f218ec90e488e58f1dc4fda5429592c3393e993856cf221000cbe66dd32bea0269291c82f3c264f7c54dd6972bd938b38daf823989310f49b803351e81f678c94ef42758c01a1287a48289d8bf8c288619f8794114725f9a7d2f8e11b5f51ece7ae11b1b4e209635ce18df2ecd371096eab4a82b302fa19f16cb9b126f57cb6120a7b5f1595b2dea4a67d36c0aa94a5d96003415cce8e579a0083359031a3fb395281813101e8c1f628493528d2e2c89f6671c79ffdfac57bceef399b32bace40abe645bde303fea9091b3e9ba837f0f0c7368839b64b0ee6cfe8ad20ad4f26a9e167693ecf4f81a53f2827400ec782a2894aa940943434bc186615a12d5669eb64cde5bbbd16a28f09a0a84377da32d6f0e83516ccb50fd4f6a60e7e4baf149c1c28718b62db7dec4c58aa0369192889ed0b25a24380a232d722f5ef941323a61296be3801acf19ee3784b3bd2c1f074aa43d70044158e1033fa29c8c895deff3380a80808e4022dca1ede5584c8e66b47ade917ba6695b91e727ee47c9132945f8854ca1072b9a18a86bc261b5e9d2ab07141d0068166372b5485660010e94a4f4b6858b6d8d602019c493f2c890dcab7f682b2ae86ab13a029ea9a90f52fec744ab7c551891af3fbf4555405735188062b3b69b7e744e674300bc34af8c6117014df4ce5dae29ec1928ccad3f30bb6144f415a2b90a458fa3c752390142eb2cc787f740d68873f8335dde0ce40e94ca9ed7450d8937f3d9bb7a1cd944014a56e5d890b47af2c7ca5aa1e629194b84903fe9a711899015b6b9f35e87557691348b5da649a1c2eeea27cc076e1fdd69e6bad31708b2a0ffe607083a36856476e4470e32d97cbc616915ff71801a0b5b4cf1a2ede2991bfdad9aff297380df1088b7eb1e219a4ad30b3dc876f938f1ff7573ff2645202816c2459e23aec634a8440b04fac8e7fbfde4545e670ea6f339e32a5c3753a068329811b9c08b06aea72946a4e50934829ce656921323e9d3b4f974ec3a757fcf9b21f76fe314fb737aee2f4c693abc309e175e8d5eec8344f161a6b762e36f0a15afbf14f8e0c8ac5f9d2932ca83d874f406f456d4a61ea2610362d34a66707201d3fceb268d903ec17bad3925fd7580de22e1d26769f5f471021b85b271954d7f75043fecf7a1310424bd412ddc60a8ad87604640f08aba838b2aa872400303619d68e89068b4d81fafa5f612c97dd31e6b09bbf727c4c831e87e6d5b3b499fd73ce180ac796119208259db45490a6775a117cb000ba9ab8554c2c2309cca95190a5f180131f0c47cb047b6be7f728419eb1641ef8f8614054152a4a7837c9a0b5d93198a164abc6b52f30bfc0074774dbb2179fd35dbdb341d6f999dcb8d2f45d9cb92b4c7613b5c7d2db12f14c616bb9daf9b1d14b3b178740f1289f90732e70053797150d0e8fe27fced854bd120de43c7b05ae85c8366c772666888442acf1fb9997483228d39710e76f8c71370bf388eae98a297bbc173bf9f96e6f7b28f479c4420bd92ac75d74ace89ffd9af867d7000d7ef0ed2f44b26eb1a02aaf0180642768a41ffe026341b177c1563fd5e1d573f20e680c6bd88b167da42e6d6e3db7bbd49063663add63ad6a3191320daaa2b420004da3a7a70199504b067ba4ecdb8bfa7b5c03a24101ad583a04c75c03093c11bb13aba904d0dc405da553f2437f379c0a8823bec3a9a8015039c91c2f4e04b0acac0a68af4670959e5f62339802f1999a6ab6297a75a398f0b0fb5cfb62d1c0adf4b450e600a6a635cd135e59b97b2a3ce283bdec92c52feeedb0810c4ad504d7d500fde5e42d16572e0d3b6409d3fcbb24a93af454b0116108ab61da0fd329dec21aca0ef3fa7ee3fc2e036bb7687d9dea1868f771996201e1f58a4559d4867006e691f5d96be0e670ac530eeab58429d22f51b59221736c21c662c31bac91ae8fb1be5e70cab12ef2b6346e88ed1129e5cd2a3e168dabc725585e8b6ca5ff1dac00d8904dcfad0fd2403bda3c0b077dba8f8f5c67819ce4c39cbc59244d27d39f3d0c35c7915ba4bce6961960be9b7079f65752bf6b3cc327519078ca4099f10c8cd0c7334574a184a2b070d33bf8419fad0fed3afdb3590b4ac6a895b646d951c26eda01e00c88bd4d86c6fe577e0498b8b6560069cbd0c355ef25c7f05a0cf7409ede1bb032cba6c0e2a0751ffac5a3413f1df9a0d2fe82d7af097d4795ea367bc4a26f987717b58b19d97be64fc872dc50659cc29ae04beb9aa7ed98bb0e19c755a8e53cdce8cf1adb09e9950363764e6c277e6872b26fbad2e6f0fb3eb8797f68252c1f119a5ad88363ee5cfa9a474101066330a120aac66845c1ad143454932ca3c0f72d82ecddfc35a7a3a5beb3d5c249c6e4fd2b8b71cb96de523ccde1e1a64c4d249a0dd01ba25e9641cb50115d3602cdf86a08acaaaf419b1495a81f7633ba06d3c04d5e448b0bd3fcc339ba6edbe5898deb184d2c2f452e3ea8a02727733f825cb2e0ed20dccd05157680fc159c6872962147c6ac2281c83cd6e4bbec908ff276a84596ec74c2eca1b321f061fb5a8c22080e78c454b45cb9f572cb216563c00cbd05d5448f654304d417b89d345ce3e8a854ed54d065224e041750d78b40fad063453f4a0e50aaee1777a2aae78ee7e124ccdec3e805daa0a2a8d3ac56e18dde91cb6f2bbe4ff711d520f27ad4ef9dd89a0c375e1a59738b1aed8c24848f4cd74abcf2b369a53d9ae2739adc06d437cc4b280cc97315fad31d312d41e9defea6a9d264500d26f105bb88b31ff74663f5a39d75288cae11ce7ef2da35f0fe3a353b68d83aaca809c42c0a600cdc486555773f5690271d2f0a3f6771e1be5bf5f314295495892ed8acfb40c52c773a4d715ea2ba86525ee4ddaec85cc6f016aa60f93d106ef27ecfd11e69126c029e88287f023707ee00f134f804a0d930b2bd0c3f6e5d53976ca6a302025ded535b248f5c129426ef27842b0d5ed841ca993c0cc269cbc20462fb1f3fdcae9ad3fc808a9f5212661bede48bbc74ce49ff64439c4c2fa869e5087ea85a8f9fe1f6f50e4c064bb543d0a52954398dcd6425d50338ada4bc1390d0b260e02f4a057c0ce14742ae38935d25b8eb4be88a352b5f027bca0586ca451b98554a7178ec61d3e1e07db0ea2be2b2b5ea6914202b4fef0749b893f54899ae2604e4e24b0528a0182231327fba2f9d2f6bb757986f85434eda7929453061c26375872ebf3ed5cbcbab2fcd857df428e74b6716146c996ad9118a89f3d184cf44b34541fcabde9cc914782a91b7217e2606ea9960a4f5f1be441c0ae82db1951d3f6c3d41c3160f5bdfea65060674af19141b1e3c4cfcfe1c9604c5cd7588026168e9bbe472a988822ee7af8c747a24c293685c571a507f0ffc3001584eb7157aea44640117a89850a549017dc5eac65b444b4f6613fb31719d4921a60cd6d1dee689ac70dabe4f4f551972ca61285e9c6c8f6eea8e5f07ec6ca24fef48369514a16ca72701e45027a3f63ed96cc3ca669951504ded255b94028e2f4b4c611abb3b532193d192322b8dea49fe3c4589358d08da55722077a781ef1f939ed1a98234c5c44b0d674aa0d068f406f33ea744f0d30b2c2faf31ad7ad5a99ce0adc1ffeadb483a7efcde12b2e9b1f1e3d5922047f93c51168ed2f6899321f542000ba8f0214e367cb49bc6fe180d6ad40746a21ca9d318e777c47784428d90a9923893f91c8387a9028fa6429ef85609e2d8924a6cc185c110f829c95399762a84af3c3bfa1193a6ae5b4c209dcfdfaf1ffbaf73099d71ba78e1bd08294e47b5cdaf11d000003517c049c5eef225c4971f5577fd4a66d9f5a72924187bc87070118840e1c1490473bdc4e9af4497e756d3e4d63546dd59b85c9477b24456087d88131840a079518925ea3224ca36294b5d7fc2e8576006514e53bcbf66847c5cc3c7edf8dab2fdd5ff461e607ea2378235d00f46283b0f620f33e825c12261857f775d30620ba1c08117a3a9ace29f0653ab357f5ade0aa67b4240efcfc143328032fb746d4d28b9918df82b823c453bd53fe80b5baf85b7e18a1d4aecdde19b428d7bd97d2f3e9198773ce92ccd61cdd4c5ed3a23f3ece600fed3d0f13baa99f6ff4d3449ca9ba3caad47e3f6ce5dd87e5111fa09738869b4bb404eff4727c9479d41d9fdcf4835c6babbeeb439b170a9950a8e83fe0383d3b0d07e4009ef062aa80a734dc1408aad1d31e5730a7bfda02cda78480349a5717001b0d1c83703e2832f788d0aee9f6aef9ecb2178664bb8ce16e69a65c7cd223c3e9adaa64fb63217811d745acf7343b591659ba5f7812b44c0c50cd0659ba06f4fdb5dc3993765738eedf09c7c921380774d7e1f3884bc7e831abc0e2d2947b7000524c5aadf90bfdb3250d3f8a011666cc8f44facc1cdf891c6553d6a8530f4b0ef64ae424bd80500a7cca9f629eea6a9d0543c4bda9fdcb6a05bd8000656ca594239584223d56314709d979205aa0f1cfb716d84b4af9683eceb29f92df202c6ca72ce50f3da3aeab5fd0a457bbe6468d2b4a086f88e60b28874bb711b8771ccd7d2cc5934778d1a0e576c9622dc368c79b483b38385f86194709151030634ab5eddb1947983086a2b39472f101dd1b20e6a0e30167b846da153cd2054c83bba23e5662f192649feff932504a7cc835ecf6ef9c867a82585d92f7e26266209894db74a136ee3f624af7cd9219d066caa7f69379869ec857c37d999658fc36cc603e3591cc0e93a465a57c1573aeab0d6635d04e9c64d9f588e1be5266bd0e542555bbfcf7ca8d0394bd8b6a190cee401aadb0eedca3e5457104eed9b200ed1128cce7a9a18458828ce8b6050b5c69d67ba3ff192eefcd35ab87f6c948a4ea6bd6d70d0d7bbdc98d61c7eb44752ce1e0113c0e6afc177e257af5bb843ffec0eb25e16c3528c3f636f5664d3185cf14fda01e161f778678ab7a199e7ea7eef3fa4885565b8f576a4e90a46bb7fa6351e26361fa2a59eac0e0216e6686b864d533044fc8b6bc1ca88fda4f9aa816ef1dbac8b0028b74978bab1336d5e19803638b1f821c6de5159342559726a94b71d2b8bf0da0c072e5d4f0508dcd28c9eed1c42ef2cacb327018d69340a3fbb94e1654ec81a107d3d6d51b69a6f2933252cf89199668d1005e4d44c33142a5e611e712b0132b121a3253a5f609da232b741fb38a5d30c98122140f615c08bc7ce015df6343916f05102d0231100746cd74d7514cfa23a428ed8d8359b1fa480dd305adb37f73f7cac17d14118a9ebeb48dbf9c942569fe94f047c12ce59af26ea7a18639b931992f3e86e06cb114061b22a15e18d002d42206367c3229a1e8cf5d21df152dbefc502f8b86fa1397a36e909862f4508c3d4d0714a6a2d878919ec984768f4dd42c178b39e92706380c217ab277b6b9fe2882b5aaad763dbc2cae421225be54ae1d73272f3f5fc3bc1092c9a51f8f0715bc5cbd2705d1f0938d68f07867192f7a283821a91559180b5db2ca220bd002e0e36e10506d463e6a2b83b588630e3058ad733c418c49f04daa8aeb64540436d99a53db7639fc81d79ba636fd482c406ac9f2eb66c0fa901cdfed5fa0f78e4997da14a9225ca8e5db1fbaa8c8dacd176a00cfc324b7ca53b9f7eb5168d76093a8900ee0c608c48d3baa5ebb7fd6f2b09991e2cb6f86edfe204eb68542120e17de47f2121090f5e2a93970ce5abd50e390507ba9a9c0c087100e1e755fc64719895e3b52b7ba7a7e6314fd84caf5ac3f9060d5ead8eb28d14ad792a5653357f7ff774aba8e1f154473a00c319c101ce11b1ea57956d21a8b08d1f53e4cbce0acc7dcca90f45b3152c39b9e7429b1b9683b9d302ac6a7978cc9036e9f204e0f8660b3196d189da548f80f03e0331bf9a98b40e242af97701c44fd648684144690c7ccc40f032b3d0a40706448549d0cd7d960e159a77401effa7a72ef9694e98bef7d90b273679a4e0674aa2d46a1215820fbe109ef785f86722dc78560f40522b4416f3bcbe300719a47742651b8bdf373858bd3637092cc8515eae057c423a52470856645fc88f05379e7a6b7b36f92998be7064beb7617160b0f7426b1bf4c228242f0c6c090a19bd81bb701daa13e1dc04254107a5f3c0a300b9c1ba50604ef80c4b04b091f10316ccbbac5d3867f0f290804cb7f48c5d884be6141212cc663a4f6d491f5a6c86c614f3421fabaa6aec850d0aec1502fa4db0be50643a53b44c64c225d639430365d134cb30863354efbe383e91864e997a8343a9ac8394c541df07d5a10f1727bc9b3a99ef1c0ca388b10e7dbd7097c705666fc470ebd959b7c045550bcd21589635b2d09b61f8d7bf21fc9f8761f3ca8f230b2cbb87e1c9fd0b5f8b42a8d98395394324e8ef69c4897387a22f50075657c01906d76a13b1145fab144f6737656e56208dca100bc0e2e49a94758eeaff86c5c23500714767187f938c96311bf29810df9d6168be4039dcba9d61b4278ad8198684ce515c4e42ee0c2d539e8e1654475a4d67482b2e5c21786ca69fccef823fec48f8fb023d436b743b27123d9b15b669747efb67d8b3052f6bee3374857066fbe453c4c9f920555fff1942666a466016fb70e2d616fdceb9687686fcb91226cf19de007e872d95f70238ff0a2ecf554c45f20e48285d88f4fc9eb8cb190543ce99c469263354df79d08a5c97fa2f2746c3bea06cbafd812dbb90c6447330c386bd643d5cc1f38b6faf79a744d051ed3a86c32fb65f2540a3d52497928967c467a509df32040b57d8aba9dab0101d712e269677e4ca0a551489fb598849bb36435856800e474d4a3e49a07b5a929915e38ae7982d1398da5361cb50bb5456b23b2d9b1d13da3e341b55550b297d7a0fb199824c38ed5b5a185d56b8e4c1b4b519566543e56bb9a1f7856fc36603a59b51ef9922d0de6c69cf27f34388c2eeefd4f6aa91574cce22a89513e272dab821cc87532785b6b17c0b4dfde4d26fce19c70d67fac1e09a40a609fdd10989ba264eba891bc2fd38e8c7c04e635a0e841138eb060a371c1174b88e8b1e7b06111c6ec1df8b4a569c022f998d784d2e3555e20ef2b18c471d2808396cc42dc9db07b5f7a940addee7bfeefcf1bf1115078f50b0e08b685c98eac0c46e0f040812b1b363458ee3d21492addf1b87edb7ba77a00d33993b2e64aa386cef1f96a887b3d81ca8d16bb3fdc47d31e9de328fe0215271c25007aa18c360fff43f9624e2c22c8aa7d70dc1e3e2c521a31f021273881bf4b61d8bb0dde66ba3a6c971d2cd2133798efe871b86f08d2e7da88506e361f3e4ad4f036fa7d8c3a000c89d9d4367e766e9b6ecf7f9a670fd9400de8cbec99801180f6cc5a6e2af6ce26d25c0372e69e77d772158c32172eabea6c6ee064d15a29024ec36a4c46e0ecdb496a986fac333b8f093e77de61074efdf32b83e8b3a31e8db760b7dfbcf17a0653ef2b0d700b333993f4e1815cecc66325179e2bc02b102f44d6c49cd0e1155b043664e050523c33b8a8954345466f89815953d88b4c952085ba27d1dc08aebf0bbb7cecf287688caa0feab5b984d0eebb4f2dfadd4e3f6e086a04024f8a2f63fef2e161273c80d388fc843440f18c5b2e523f1a70b2d8b06c2f89b3d34742e7a870fabc566861b3a3896ab2dc2b48c64ce33f745fc807c9375cecd34ed9cd6d72f0686015b2727f68af0ef387e23809a8b016b597fcdefd0a90e85214dd62389c3d173dcb2d214346e1b1a05432810527c3131afb3a5d4d0fc5a3a6a9dc2858d382d8f1a1873286c458da99a9512c421f92bf7cbb8abadafce7a8d9043833cf8f1d42109f842916e4b95ba547afcf32bdc49f2c3bb4a6177693fc07e6c3a4141ead990239dabebf764b559fda36a40aa1dc34ab79c41de4d114c651afea6e42850f035d7f997a65e57cb5728e66bbeffdc83b54dc5cffa4312fb426d90d47606287a93f9fc7dfef3a17b21860eabf71051e707250164088099b9b40842606f247b475aa048cc959f1bc015c7a8ad57f4ddc2262542cac5bb009fb6f42583777ef40d9e7ba09db719971f583a963bef446fb5d24e4d83a16373f50bf07ab919ebe64501722d7d7e31896fb65d5dd011946dda7581a969d806757b81b94e4308f097a6562438bdfe02fce4e0207c6297919a68158c62172745883ec60b81e386d5c0dcb4fdd95fdf3a1305f506fc9b2b64580278a40b9f13a088c6070278057c43861dfa58ecd9b2191cc08e7db2feb702ab214d2a533b252fb72bdf640e48006c063371e3c72c23ba3c46da581739382ebe59d9bbccde58987b360493b276bec2b532900f705eaf4e29e95188ada47d65009267117be08914ed5229a0c7edecc8281003728c4716dae93ebaba04737f3f7579f6ec27cf4c5ff8fb8d8791a5669148c0ae173ea30b108700bdcc3a376b54f0fe1b68a40c63a41cfa30a7d2cc454347b016a604deafbeaea829eb4a5f468687157c48b14ffc2563f4c39dc4b0e1a3bf42eb83ee97d8bebb7280d79bf65de9d7bbd69fcac29ef65d297ddd782735d9c658badf8985d83c48bb0f31975c331ccddfa4ba181694dd87945baa098ec66f525d1c0fc2ee4bc82dd70c45eb37a12c86076d77be5bdf8d4f0bbf2964d7c0782108b5f41077b55fba109a448f9bdda6a464c6874b5c971bc3288a690919fb12439879d3d696f8ce122a8fca5fa8049cf2e644460fbbcc901bde57c201f8b42ca0c40a4f462037a04df62e5e842e12644937f413758cd797b968a63795ecad6f7dc96fcc6400a235da430c47ec3bc69bcc412292b0d2cbe26820c407c37c8d13e98f721519ae57b09e31e597a7f3eb18046a47df177188b567eb7e358a5e4e99decd9805646d26cfd1357c578914f75dc4f10d82b16abd37153bd0008c5dcc712d528f995b2a1e105a44fbe9049cc3efb9fb67b444e31de3662c69187252d2d9c8fead69ac521038a8bd726c238c0d4b771d2cd292111cb6771a0eba0b3b942445e207e12c541ce7582a59cdd6b9b661df1b50a1ec50ce34d89360a8facd4e54a56433caec49d014d45579dc50f957cfc385b0b9fbedf66e6954950974762c97d17703a7759ba7d17a0f1ad2fe391dcac974c497a94f82d88d83f7a85199f41e1c5146e5d36fac151257d0dc86c3080dd241865249f3f03b8e8bfa4d9f075766956636f4bc410b7842080f9a17731c22e9e152fd3238a5158ae8e0172256272426f28caba6b0dd271cace7f44d14c9ff96f74e39a8b23ee882f063a7839069f04bd9ebf22137ace3131416c006f4a868985ad552a9d6df1510ac7ab9751d67ac8f38b100bf015ad22cd30864154774049d5ee0a27a99412af961c874c088846045a4d1b4bf0660d1276869a14b69c3a2cb5f4562c4ebd91925055fba439b034ca1e19adcbb2546f1f5de54503e86459fb144d1a0dabc890d84416b2ab12d2e77e09ee1076466efe58eee3ad1f1b6d2bfd19972cafe68ee956fb40826841135c81dcfa0c198561c937d7e4635701be6fee586feb463d3b7a1bc16cdc518cbec08b87a0b053f7a80f30610b5255d177f49913cab333462e733f1e77bba61f3a2d5df81a494a6489b41be1383a11234c824b5599aa00a50dfa555bca015006726f6ae5d380b2c1d90c6cdfcc5cc4b5db736ca7a772224795ea2baa9745e4c5689e76467981af881ff36bcb90cf1f787618c01921d377bce641bb938bb84887f2393eb3041d8aa267eb5f56ab11ec51e2f8cd53b605b3a691b6a76652f1e78447bb6fe272ab460ff55df578c5e5fe78d4d80a649c0504f6e19988a3fa203b0de0df9c906c17f6d04efe979d83dd0a685dd6ea3a9091b5e188440d24d908cb418c6c2b883df1f769b9693d4ec12f12353ef9b9a90e312922554a2d0d64f1513904eb42707354f404469a31ef8e53748b438e995fc948b27990a82c5059dc947fb37c8648f2fa41193b2ebb3831254ea729ab48b78891bbfc5310a0737108eae11d1388e6c856ee946b7981ce497e22d2a1e584ed899b6cf0e40d1a13b9a47796e1dc3801a0a7ddc02eb2bcc780c210a44f014739348804f9d5b923fc671e0e95ae90a6654eb60e875cb94526f5a024dc5fa44acf66f9fcbb87ca2e4a70ad502110528ecc82b2904ead3612939e65f2591a5050c18f2eac1c737e0b8f4f456d29afbc7431cb0656367eab1d7c330cac8685f3d05714a4136ec8b83ed6bc012b8a2c749697f39e95bd59ae0a93c22b32a11ac1abd3bf371c7eef95dc4f47885be6737137c3dac06a8a243952ec56c04335c04632e303715a61792a8983b94a4f031e92867e821355dd1bdf167e68d99abde6d8f4337ef574712c74b31dd8c379626f98890304cac488391292987a52d53ada23e77887aed67ceea99ccf258d31b89772ddf80e26816800a97a751d6e4483c6ee351db4ec80360e73423cc380c3ea5cb36334b30639abe4b6ae4296a278dbda62e51af77245cd4c239547b891b8c2d1be5b28f0d42cbca5402ec3cf6c3e1e312b3a54f6c5d5bde2ba63c8e697bc480a2c78316a3b7268a48c55d8d803c098203ca5931837a11a6661d99ac7c23cbd6287f028bad803a9fba26d4bda226df3cbf93b70f8f091d76ad9387996bb034488440dad0199c443d0a6e19876b10be6145d11910bec0e3e021f010710c8db777ce75c86cbd65adfdedc14ef973557d94b5a190fa7bf01832c6c7ae3c76bbabc09e30e7d96baca0477bc71955e98288795c798571d1c2f3bbe229946f0087680e0b502bbf7ef4ed8ae5ff75242713a8e35877c485b6ab8ac7e1149a53b2e160b4b1fc074616e592550dcc8f93effb3e12a0f1d6c3fdbd8a9f104d5715ab970ead0b00ecd52258751d0722254b1869fc339faf8ab3159c1a5b625f767fea50b034dd6459482831aa154f2508682a645506f463887702f953ef934409f300295c3f3d33d0d9622a8f25e59ed2582bf6a9c9a2ba2fce5950f685225d1123f2c30c3dd82e71853e8e97d12c2261620781459ad8648972a4e31e798cbd54571fc90d5d425d2b58ee5ed470ee3a710c6e041870ae9f7ac4d1110cf3ee85cc1f6cc81939e647c517eb5d7e47becc11e38e3db1399ed2e6aa7a6dfdefb278735560a20212c850506f56a995c37d13e2f7cc4679f6a8f0409c42a6088bd9522f01c3bfba062674fa3e0cbba515eff16e3292d75983fcb697d8328c27b4211c9fd636fd79af067c3797c3f7e44aab383e6e15e9f348d042b0dad29aa5a7e0077cf4b9bced0af481d661ecb0b4883a0955084faf50f5b84b65554c8ba55a97c25855ea4e72e82e915768a408caeefe03ae1f08c7459ebdf4b1b0fb08151ce80780d013417dd63ddaa416aa6e9704967d003047e2bfc8680151c90f3a2f4a1a523c47ded77462221a2789703919d6fa464e2ab9fd0a16c9120ea04862e5e8a9478bfcc33e7991cdb739d07058c4635682f1d6dfa446cc72991a108ad30d35e9fe8f886673805502057871e46970819a1ad8acc17c19d55f7ad0051712bb70dd7d2655f544f0584c2a780a3f298ee426b49cb8ce2faa94d4552f06fb557edb0c55bb59c38f5ed8787f8ba1025253cb6d1d914daa1a8ce845635cf067630dde14889d6f46f44201b36cdd2ed780a620c30ac4b41bd2620aa82d0d063d2a7d2b0bb1712e1feecf75f4a96360371762d5cb47bce8b26c9487175b3cd5a9eeacafb5416c65b801aba77bcdda8fdd1aeb95a7d478952bda377753eefd633b5dc8f3461d48794853ab9fc24679624807be4b8d7d5268cdbf80bd1f684ffe5cad3c62f3b0521a581541bced62b35838d01cc7aa1813b3b1ffd2820b7749237c2a9e6b85748f95cc682406799b4a10c4ed851090e67fc274ac33188add4a048796696c410b3b159da52ee5ea39450ea9c6a87ef2b83e2436c33e6d33b22e5294f8043c82e893f1f4c6a0450e924f3403803dc888dff58e209ae6c15f383a0cccdded08f6bf7eb635a57f6b5a6f8cac8fa345b85caea884e7431ce0eb740fc46013f347142c49c25248b5e483e5b4e6e0cedd424e22a1b4925f844fb0d0f3a9abcdaa50a7ebdd9e9759813c53327a850f6a01ec8621145a2c0ec489d1134f12a7369d1976929f6de18800b3282a57bacdfddc7e371ba95e86cf6d7fd2d9c29bf9b12dc77d11954d491041456a999a4d28ab127b523623132a93a5b3836811e4e8af8ed19e4b66ddc253762d0099d6e6bc8c383d00824835e3e586623c097ce3ceb21e4192198fa23a150ea0e3a93e840df4054859ecc08795a0ec62cadf9b91c0679337ffda26f17aed490c755bbfc32fb8d7af6337f697d85dbbf6060178df4c3a09562afb94337e77ca518d41404261b90fdb1131005c19b302cd6ad32138e210642e07f66ca1ccc21ddbce502d0c1597ddc96ddb920b684766860ffcba25ff0ecef2a93dfc78661c20ebee307ba0998650d8c348b9ec98e7a67cbcebac8c0218c5e14d4e181fabf7eddf83f0e9905c95161eaf87e465fe0d63bfb1cbecee9bac6de55cdd0cedda85422a9a57606232faf04ab8ec693f313c6a3d071b4184294c3e5f774effb32f94c41de9eb206913b251ea5eca061dc036f7ec95810f939830f47ecc529e032131c003fea35d032aa0146339c30f90881077fc6acf69041f636cec242541b36b001a92df690475e2a4a84c522f548a939e8b2774707aa9b76ee39f104dd53b40b394f4d9b99d8b82d56913c4e6dd9189a8fd1254c1c55bf385c2f8cfb991b2ed0db59ea1ae048c35bde3b98db8754b79d29862e5d579aee67d6781285fbf7de053a3ae28e194c9248a720e97c293057ee36055de1d7468caef0fe9819a9f993ca0d62685862e64069e65a3ab7cf5777df41d7eedfe15dd716e3aa282fd29afeed001d667b6083775882e90818ce17c262345a2e3d6fc28b362512f7b9e55b35d1bfa9e1ae32bd3398036d799e1fea8956818a03bb20d8920d1c31e0f21e8a28c783c3bb4368d1677e0c4f60748f29b388aee048a6ac0fa4bab7cc2ae9f68a74e9895b39526dbbf209af97fb0446c77c5788d66c6aff0fee25be6ec9f02f7f8a5a5068f9da462097910faf9f0151156f3fa9053ce2bcff94038206277f04e47a6f4b051acd45b1eccfe7cb9a412c9b837238c4988342656a0ee3b1f411a1b1d5573a5635c075130cc397c65eb66bc8365c003443056cfc80ece6b92caf73e6474023b71e69fed6b7008c61c8a4d2eca20b1b4c870c91e0cf9b282c16d1f59d411b76b68bcc2466ce54c965094d210c0ac90c84ae4c8986b2142fb0f18091a031db0132b10dbf4a52498946ef26355f13293f4e6121dae6cb66bb6d98ef564926ea6ed450d2ee918fb0a50009068e749570e6462475b53da2bab736a0c712eef1092ad2b24ff9c9f4cc9a995129649a6562b2fa71cf8c0a29ca9a9475580dca61ede852487a1e59b1d322b623fb75bfd5a0656d20f5aa2496299b45606a76e2fbc0748330e82da62ae83802eabec92fa2af16713a6fdab5186342c0e1a380fbea73f1af89bc2dd6b4d19e56660575bb4f44fe3cd2e499c0f1ff6580597657ea4a1a403a6e1b885c7e42dfcf8beba0b28e2e92fc8783204acfb0b58328e9870914c1551e2742a54853f40b36d4e58464d90f01a33c416d809faa60405186afd34284e0ad71e58a2842074565dcd9046c953a2496a3693555e086d457abad5e091c25067b68dc6e2021e29690a6475bf839d9096d2252a4d11622d4c21781d168ba11f7658eeefdee37c849340d59145962d8d39688a828118e9d2385e5dc9964334b377bfedaa6bfc4313804f6620f32c5dffce1f662c41e21325a92e935143eace5bb08099181b3fb28e39d837a120370957a8a5c52b75e38fa318cc569cbb7db009d818947411a6db7b1883540c6304d69b752f06c325df62fb673c2409c6d6b6922804d511a0d922cded22bfa20701cda4bc888b2b644c72e1465284b862b0e90c7515ccb5f48368a599e3e540181686e850f025a9937f516da511a5ae9058db49129570256581f181489f49a94f8251a1f61bdc8073b7ae1a4d1342c99daba349ed50a885b13e1b58e1027660e1981a9a83dc377c895b454651c61f11166d61946f444e2b4b3469a78a1f0c19f5c68bf02ec22b62a753ea86a6560bfe80b5dbfd8030c7ce29184243c6561e10e143410bde30c9ebd082ec93482f84b01b4259c0d746e7c7ac51be92b420ba7efafe0947194eb1b89e4818fe90604c7249a2fb98fbb65271d7ab13211e87ef31891b101a73169de274aae7462379e77653c6eb06946813d71a945efe6b329531aee0e033f95b91614951d207fd46781e2a531a91c09f6c282c28453215c6011f2dd872c9aeb2bb577a8484492ba9663677add415256caa2775f858dbb21bf78b703ea23613d388d0cd0d3e9830aab1ddf16245a518c45380c9ddd7b0d2d5d65b77eb56878efb657aeb7f8f3ba2e7c6069babb85eccfd9e8c7a70283d242e0c27f8ef633dfa0d0a3144e0d8fb2f12264b039e0d48eda246d1a5d0eebc1773dc0c5b9f577f124ff4bfe84429206fdf9b5e4b3cbcdc1f6529de2e47a7043eacff77bfc663ed980ef0b536b7e80ca5b2867a9e5c7d31241e6a03103a45d1234d6423d80d4a3a8bf4b647c87ea6f2b2eab9e0ea6836629ca674602970cfe2cfcd3b19cbd45f3b94cc41d230a8095a3cb6400b58590d82511df260002366bfc7a7865752ce6720fa1448e43ae84bcfc80604e86306316a0e1de7caf806d5cde6798a7a09982a8626a729734db73c803a2fc0c52b743b811b26c70f433a95e8ab9b3510a632a612cb322e11a8d8062da45e436496191437e8747c99c2b210c2944671a3ebbf1bcf73b9aa03fbae51a4b756095cc074bd654a85d80d066928ece4e85296663a69d58c723fbdc203a1673b8a5c35bf1b839ea228ee1894492767a7fb2158d244919ddfcdbc41174fa1e63c5c45a971bdd989f0e02b4c08561bf5a48120a4c55c3ed5f764a489c8af563062232d14d81896950ab4063cb1f9b54eee08ae5c12e28a0218509a0b20998248e9ee030558470166c612e8dd69fbe22c469ba741bb101de86c8dd63e579fb3eee84b1da68354df3f312d0c286230cd432c647924643c0e39ad04a272f2bdb7ed79d44a48690592651a8a6432b8bc56e046bbaa663f56665cf925e10c69bacb6ec196a944b745dd8aa8a909cdce565a7ea74cb2cb28210514bafc551830652e077897861ecef022fd1b2f95660c90a970f5c1ccacd4e2ae55910a458a5158dee43d027830052fcad9e48d7b0d3c8ca162b2755dbd7d4464ca882b9a4a199e253e702751aa7564f5565729941f52e0ff4b7f7c4618fddcca477c04a606877805309b32c1df85e22682a1019f9604949a98b6442ddd5a7f10da9b976e9d3a56f2f868af0e769652000f812485c8e31b003963612acf930493fb0e8f3eb484386b4f78ecc9cfdaf3cd7f28c130a5beeda50b73fd8d4d9719ba23753d962b4441c286f933c11ca6d9cb387fa9b594197de973bd8c17f33512340cf873cf7d1585c3987f85312e2d77c728884a2b9fee10eed55e7487863b8f5c3e5c4f9d8f4bf1d59797ecce4b1f1294e541f9bf5ff13f7e82b678fd55f280513a30f8c1b66cfd92e3b753f8f0c8f7533d2f5c1a84f15cf0818a63edd2abdd4e24a8f8a528654fec3f18bfe81afce0b9461779c3e3c52f6070d36d962aa869d1a08dd327dbf7937dc8df90b32b8f061f618095dbbc10f2285a24bc8ddeaaf5598ae7317968043f0e72ed75ee3e8584635f1c00589966103cecfe8b98fdb2413909d1b4083e99c97729467c8e5c8d66e0142866d5c054d65c3f57d4c18116a5c64d3035d7638c58cc752b71b5f59f84c2bd8f011e14cabce3edc916d4abc33a6e4e051b1cb80438120a9dc180f5fc0876505b2377094bcb71e19d1fe7880ee2fea49a3ce1b0a79cdd36dc6156a807c2cb1111d4d088c4abbfa0c249ab809d0d9fa137ea399c1fd47f07922c247f000957bb8df4e0b890c4d8950797d46ac39f942c5dad4852810899f91c02d36756fa214f6af963fa5c0eb95638dc88f70afb9364d7bdc00373fa413e666b44b1dae62b53dea257d730c293015f103bdbee6e7a9be2de498aa798c39ef23be22d58d6bcdc1d66a79d1988c6099b717002dbb03ee372e643e652bc9032156dfd2dbbb2d53265fa04453140d72dbe2586e5dbf7cee710ab4bb578f5b73751b52c08758a9cf9b93949c4770d0e43c16112f552e7f0fcfafb2f790741011897147dd69f68d2e6c15f1e39ecfda3313289ebaab44512be60a0075f090fbab18339555e39ba9d9886654d45945190f7ea9ac696c81cdc5a1786a821747f1c645492557bf06fc29593ee31b0450af01bd92af94b2b408547918ce31d640a8c287880796da845605434c9b23320408cc57c7ec125c27018f789477cc009e4856b6d99cb300feedc083c6b27a12d349582c7f217748b0f42584231b1bd5bb1356e311853e06544a61c3d1e6e25619fbb1ad31b4510450c1d1137c2377908132efd7e0629391c99eca71daffc3f88528e8bf613208dc7d902fb198426770c015c451ff08bca632c6dc3c4b0d1fdfc2535d0a8f4b2b8859d43651a48381062cfa23ad7d514ac7c533b7ece7a3a02bc9206818315cb4981dc847ca36572a2f925a81f0942cf72ce0854bfa42a7aaeab468e8787edcbd1df39c012c9a2ff8ad66c6c4470655134836215808e0395ac07176dc01e195787f6a136800e01e6b4d0c4e8387ceb7297deb548d1ad4d9346aba31eac4f9e094e1296b3acb4f0b6b39412ac6982d874986135cc9ca9416259b937747328016dcef049ce9cee58e2cd6e09e00b4dfa735142995fd7a25f26d8646a8c84b37c0b6c76bfc88f4081d10fb80acb111f3e736a0576dbb2b9e66c53bb93348aaf3037788a980879d2029d98bdd8430b16bead30598a956a8beac58ff88df9114cb9aca3f9ccd3d3d3b374ee6df302808e59c80ef7547ca2d9c14afb084fd1b88c88b5421c8c80f84061b2d782a1c12f446716cdf6c736550dac85289fd918215c7aac8545f7329345bbd63a5d0a15572802c9a76fca8b2021449fc53176dbd47d5427d2f0032ead670bc8519f14608aa24d0c3472ffbcf14e709819e435c310ca3d0b99e183b7ac2fb80274f30fd699132baebae238fd3bacdabb7245f69420f3cbd5c3e148082310e9e2d0d8cb6e2e73f485df029e3422292f9e309bb80c7f55d93b43123a414ac4bca423c371ec6666dc8b467e213ba2e0c89c3af40122bfaa1fb69ae825886ab18b9fd0d0ecb1c8772fd3b289e4bdc3ac1660e22cd07d6e3b8040c30ca0ed042ac3b3ee4f0eb89caa5cc81bc346c9edcc644f6466e6abc343d39040b6fc2109ed46ac550e27f3197094776861accc61e5617220babce39e53afe4bd8b6068620178585ea352afe51a71c6070cb04cd145653e58cf7f47b74ef3304288226a149a98334ef44ab52a380424027e00d83d8c5c3fabc8d124bb738c52c613854d1609b9cc935c99716db209e5724647e45ab283f3581121d198fb782322fa1e8fdb7fc0c3a559e22a980c177a00439053a41fa4ad5a8a29dee09bef290c1cd76cb2118c7b6938145be9254edb0c680bf73256de1f3fb7dc58fb5b0c59ee06447436b3a16bcb1db7a71cd403281ba50dbea054bf183b302cabf006bac739ad7d4022d75be4333f7c76c909d5b09e089f17c98d4432f5bc28f23be7e0e1a4c171e060947378a71824da646a959d7ef3d843f5c4421d13f57e54e422cf3916bd9efaebf947c820b5b327dab56c47301589783ef88a278e817f0c908d6384f1be794b54824d68a89230dac0c23a52b5642288b15157a89edbf7592f682a41f9bf19c2a1b8ab1f86a99bc2d57694610562f70f9190153ed0371090b804cfb3c449987d9884ac903d51e895bcdb5994374923ff875eeb0284f3321f2dc4d8bbc5bc6e0858923784bb024eb948c3d9ef037c1f4345f89f9097e25cd8870ecf107ebb47a7dcb9ec3fad41383f04dddc77663bed7fe0e527dc9575fc11d38d887541155175321054c5497aa23c381fda11344b8f9007a287739da7e0b0946cf9b734c01de0baf4d8f69a39d07b39274b7f4ceafd68526e515b3464b718efda6a933e55061f9f6bc359a0e377edf7fefc1e9fcf4385c785a1637d62014ba44384ad6977c7e94e878bf5658d1bf6f18291f508f51d90babd4891f071fcd57ce94ce26c8b498b665adfd364b6211e770f0c07e4083df4c9f37c059c9800f27b6530db666a1f2cfe0663277bb00229da328d65bc2dcdd13fedc15e2cd5a5c378deff3a175eca763ab808b082146e2490ae9bb9cd1b61f4b1bd04ab616598a1533e2cc88a4dd222bbc7402863b4590a6520ab2a67c94e6e17c3f95a1a1b3632c68051830914170f4a44affc65b4536ccf81d059f0da1c296edd6efaf3690c540f9958636e34407ed027e6db2b2d77ce9f702be93ef6027fd748a543bccb0f46c90dc16db2e3482223337d53772668de6bfa522e13499f1547107365df0f54fa96ec454b16fac891fc3fe89d2b004b341d1e17c1b15aecebf6853dbde939a3fcc0f184e9a52b1ef5f74019db1f1332a7eb9b91a5ac866fa4c4e5c47c193cdbf165f0ae922e8d454459a7ba41664fedf082754ee62d4f5757e8b02ad04554454606ca787ac23ea027fff213d9d8652a12259e3e3024370a6ec341325c1b8938d9f5f5cd2385db11495c584b527dcb9dc0f2ca27d51aef9b972fb7522f9835e042b94847205e5c27f3177871e8a9fe159f02850861069d9877d4abf2cf055309a81b28bfa1978b571404a2d5d493931b950a842e67804124816600f80c8a79537105cf30aa8f867f5406c7bf73de431935f3960bcf451ad27aa288b8a3c6efebdace2eaf272392016c19d55a8f25eebe28dfc5f32d4d3e8390292c06f1e959a16f62173bab2a6e0b049ed5efee0b4672124abd0040e8208829683f485dc69960cdcea14ba96c262bf38d0c304042fce67bb3e0f7bda337b9310c5ac62e124aa1399ac7ca5662b8d3262b88efc5c1c42f8c2804eb9271ea8a6a39afe715775be711f26de534ef478ac06db083c3183cc7ad605ab11c9b8a9356441d53fbc1aa3ab81da4403eec269bb991c0742979261de68b511041eb7c35351ab624a3b29f22d93cd4ea57fabf08ed42722c33621c78ef36c81accea7d496986396cfc565b7c1f19db66d95614fe6a8a0767deee648cb32369bf9b5bc164e6efe5d8564c13884d4839e9de7851722f70b0a35aff48e699195429eeb261ad88466804bca32813c6bf0b66a534e6b488ff90dee04592ab0de40a7cfd1e9690fe4d919080fb98cf1fcc3c154f9344556bafec0aefcf96b98820e8255ca3f7ad96167b9e21a933b146a0c41e4e7c45688721011badb005ea3a63c1b56af50e0815c5de448674655829f85e0419c03a57a403af4298717ec3e940947162bde9138854169b9316639891623c11625c4386a156f6e00b02b31c3f0f649c66ed9decb06124ad5280257b0c0051dfb6c6bd38e95fc7f8e2966a11ea2da08316288448503933190a0e1076c1820054abc1b3a3e374df336d3e0ca445dabc1eb9c1a590da14970cc3ffd4b9a106f1d450607531a78efe965867532f866e889ea91d8902dac6e802a8098934f9163aec86ca0e68b4cb69f7f0ad2eefa895f586480919ba0d35919dfc2bf20d35a3044f82242d15ba2c7105443837d9a7b146ca11150f22721b01b2202e9fe7e37b98da6f41cdc274a351eb6358c6d12828041d99b32fd1255218b29a8f23bb1d983fa884c86e50e6efebeb363c313e5a7787711fc1808c813116a0aa8d62eb84fe6240189494b2939bb0b0329b3316554417b0b18eac82d3c63ac5d4894c02db489ad5d46bf8c3d9e396b783fc96575eea5fa887b2760d8888a56198c074d8e5b384c90794ea2f0b28d51c06975b7a14da21008127dba8de3c6ad9703d9d7e6663c019680c4ad080161683b8036087d5201a0557684d3773b261ce0b887eae6e6837ca5e6502a5655b81d441104d369a3721f1366fa96c7b75c5968a1fd216403f83eee9c85117626b3364524cea5faabc04403f780f5a3e6cf094eddb441cbf0153e642df504d91f233a042b7b2d19eb8351c3aca8035160b5067b613304b569237394d120ad482bd5251795b53a649c08da5b2070d75698de87d4950d414147cb8773f9738ada143cfa1528722c5d307c3d44de1d63a0bf002ae443cab2c02b2c0071ab30cfa706f839609a1a765d556685941d96af5252d912b8b736e7289e51f31572ccf24a3c6ce24270bd4ac0379ee8b235c6018bd1686ada669fb7fc7d8522a7a910f97dda0b5b1e84aa4e95a93b1cd8368580d71b7637db0525c1be1fda3ea0fb1a02c6ed217e3b292c6edbc3683ca1c8cebf8e344dfbbf2370e2c9470c32a2aaf5acf8ac15ed967369abfc2af809e94c115a1c4a60e43d6a8928fa3c4894f94eac706b6db2cacc93f74b7ca40a3ea98d07b1ff527a735600afd784417e3c398e5c62f4e461859a1c208c0fcd8eedbdc52d4412ef658f60cc4ca817ec8d89b227a8dc206f4027375ef947916cf14eac459e1a4a8c97f1e7875b3d3f4af67e21045c27c33101fdcd1579c2995862a56bcc56364c595a2e11aaa800c0e6e30e7285d712b662c169be548f0d70ca003ef795ac4b04d211dcfeccc3836861e2fbe3b056a0dccd33f7f6f8cd9a8c92a9e24112e34b397169fe98014f63d455d6a245da4104c1c1aa03068156817e49bef7ace4851e2197c00a090b89a83fb66e1325ca3c80ae20167179ea30e74883864e6f75bfd008daf2d501a22f1b3e84e2ef65dee0efd112e353b633d81ac47892ed0456e979d3590078c6c62238114f2101e96bc90ec4f8b81d85456f32d0327ed356c03815d0dac1f54f303a723cb0402288c4a83510164889676654317a0e8073fd26b89616561c1d67329df20a3511a38fd106b829b062effffe14b50066cbfed151cee78a24e66f86161859710da3c5940061912857c0422c6b6540c5c9e055ec9041a0f54205c59493a5558e20c4faadae119a4e390673848551cbcaea3dc12673cf9480b0b5d8bdcd1088c56c84d8468c697b76ebd53c3ef4d7ac75e09b8207fc02594f7d231b4d8c6d85a5b24ad114248238490bde5de016b0f080faa0e7d65547d6556facaf495e1b87a4b7d6564babe32a8be32b7d53042fc8af2f316e490930093c42ed84a12669c714689136538298df950c6061dbf388a0ae4ab0919cec7d5953da988798fbfa1fd93c6149ece526bb449d3c48c993f3a0251538825c49a4d58c009e923ab9057dc788453441316d0a4006298d92b44679fbf91a3b14fd3cc29bb66aa303126fb47e331ccde55ae966a8c339709ec37a0682cc3ec0d0ee79bd83610f4a1f30e3893469a20c6ccb360930188039f5863bea6a79ce1d79474089695dce08411507129a165272bc4a5c4e9a8a3ac909b2a0c4128e7f421392b56484b1ab8e8c911b272296c6c018b9e1c214be897781f92937d480e0cff54691440ac48154798d8c47ec2a687715c078538dbebe1799ee77973ce151230ac542a754456495646b815873e4320667966d31ef4ddbbee88eef41da534d2ce22412581c2564656aa102152c4300481484fcee9529cec121618384c9f40733a8ceda78de5300ea307cb5b549cba6f95c4ae8c34f92acfca0887ab235880776564f3be7da5844309450d6264dba81340ae76735e9ed9dba7b5298f0bd2637bcb5b7a7807c17b27039506cf7d3a5b6faed4e9574df875575ccae2e04e715f19591da9d2262122d4c814eaf0a4e55745ab274c43243b2a834fcbafa0304d3c32129d7082292dbf4a514ed552a64edf04b7eaf16102136813647374e563573d4c00efca48cb8e93dca401f6bb3232df52efb43c33e503ca233830e533e7398ef36aec099eb3a91e70fbe117b73262b9ba02e2905505bf36bb52b204108a262066619cd5c99ebb1dc67966b3c8204ab7ce4234869f0e4047223178a15b6779c7523916cb7dab3c4a8fb35b16c9cab77a69c3387f49acd89803a3f2b882121876ba007c14437a430207370b8b152bcc86b77c055e5945832670b31d7301469b2fdad096974a562eb78dd5237b4e00321c40b904e47ebbb77efaca6faaebbaaef33a2dcb300ca3944e96324618938f013477ad533dd295eae1989797cd65b753dd381b638d3bd39bc9042d6bdabbc9fb3aaf96dec52f8767af44d5956da6b76f30bdd1ac7a54bd3d3211a75fb037976fdb573d93467e750513b182597ef197bb2e4f5c18c345c6e705f8f332695245a6cb6e93fa4c9a98932a32ed3f5389fb74b6276a5671e5d3a99efe5df51001533c687afbe91cf7d239f921513a689fa8d94c75ebf86d484ee73e296a7296947e144568c8c811558f8ac85114a12123a9239d12b877b274c4a12c59151287f23ded93b023510994341493664584fba45929a5c0d3539607f4b20f8402ac41560d3eb5f2e197ec71f1d81afcd620f8d241cb23dbfbe9dbe1bd6453a583efb24f07044b27d457be044a8995989315423d6f9b34a7778f1f163f1dfa53056ba704d0eb34cf035d0758f9e94bac7425bb449c31dd0fe051bb9a22d658d1beabd405fb3b567fd0bbf5b76d0727cdcab76d3b0e77f507edcd5e1eac87fb4a0d678c84f12e0960cc59229780dbb9733c596fbf0146a2125cd191a8045574097a7ad5c3af38852353e85769ab5a8675877999b76d95bbdb36d33c0ec78651b79411a1d4518f1121d511bf36cba9239c1ae2541426c2477888a3a47a523d454649292a3f4580828a8c9254545aba7c550587f247f6f4802f7fe1da5e9eea99342efba358ac156b65d0aa477e554511f9d51592466eb3ab9e195d56a8f4b45156aa954ae5526bcc89cc05b841418d80708ae0a123a3434dada41270b5eae15004a0d7427a9a5f5c5cf510611a3047ae84f815894830a5e5ef6aa8e5bb95117913c81b5901b55c05b594f16875841af590a62cdb62379bd5288527e86023d2a588a47c523d1c4a6907b02745445e6e75d5c32b9f2480dbef0ad5237b3e0470cecac88c91a74800b9df9591ed9ce59ed5963470d11d3101b84ad2cd11ac3ceef22be975f7dd59e903de544f9223fc5a2969f9548f945fa954b27b56ab155df5b45c6935ea70dfb800c1af8c441b53cbaf92449bace5574af8d5d1a47a1ef975b7369def00ae1ce54a22d5d3451b68e24e83c0ee7765445e555750385c1df10a68c6c82fc7e63d7e3966af9e70d2871a01ec3ef0f3f9b73ac231f21c65b532c22fd777d957b6a9332d6187e875365e70db6c8ff89591ac76704812cac15655c0f74dad8cb47cea67d24091eaa149ac544f4b1f4d748f1946da4a41250fc1b824aae822bfa2d01ba4344bcb2abd6d4a4436025301c6cb13638c52099050932026404a921c317245110ee3d98a8ee79f2a7c88d01e0e8504e18162c7090b3471d68c397fdb664c6482c3259448c2081d45e0dca89991c9ba9040f099f24726e14ba049d3ea69c23431a7e8059dec6248933814294cd3382485f0031998f087912b98cd9352cfa3f2b4a8a349c056c5c85281a09c537ecc27fe0128df9de4d14627e5c1166b4c36b061ce240b50a18894e6a123158a1075778ad4eb11ed8ed7f13b9edc11ff227f1c42a59402ced323f134c6a3c6610b2c318f5ad0755d378fa28003309e7fa3ab5213e2306a435a51572904ca503a2365389c33130c938a0c8734a21026044ab0067ce9e69c77d6bb437d72c89642e005bd52099c73ca9cde544d24164727c7711ccb7832dd2132d6805f8eade7a4b4883b6e3a3ba18eb4d8a7699a86691ad5264b2d6a9ac6628ab1c6ddd16c2c6d710390d22841486cdbd6723374a386f914c3ee8ed7f3d89c343098b35493521e2c9ebdc8842ec2dc2803f06e3de34b5ab2451294f0d3d363802e06315323136566848054466672d84e68300ca53b343a7e167979790118efb18a5fbcc412fc8e2577d126f6a43b61c718e512ee1f521780f1575022c393d4cc4c1a088893301b9a0db271989362709a739e79ce19852216995e4ae61fca0c0408e29833877bb60f7433983fcfcc10e8e41dc0f8d85380b1638c43a4140092942851a4202149918214250ae6d2b85ee9d22c0e253021115b890b9021c889c73e2427e6b08b9e3fab8b5a1cfc8eeba5f1cb7187b87044a13744e929f486a3969fce9c3e64c70bbd014a0f9152f090396595ae434916c6e00ddd30905f5b4dacc1bfd9e7a386459bad5ed9996673c4c64ea39292ac31463e6603404b29e5719812016f34e2d7c6e10f4a251bc1af6c0c2c00831a6214d23045cb27f144f2a458a66d25aee3a213e2102b46a6c64f6712799ff7c5c9d39391919101190bcc05e662ebbccf54fa4ca74d93b32413c4154a1ca5f9f30b5bb4159c108da1060a00baa0852c10699b864d1c3e75606d3b8d4a482d3aabb7a2699976de8264f40321d5b2d28a874a4d554ac53048ada315a32430108454cb4cd8e397c4118dcc8ce1d794845a1d8b58e4c792289b184b5183ced664260d4f21c6f0b1d0fc5bc385662e3822a21287bd138ad103264fb0396511b6c19d699209487f24b5c15603622f4dd982e2c7948c849499a48cac34380c6b3e243258d03a24d3a99b1892142227e88e8eed07142bdc2567a91353f4a40289d9c071603bb00fd341c71b9acfff216f98e1d07c2246e29756d2b692d66d8c748afca29b375520a871a5af84044e39854e49a54b1f0e188dfda031899150d8942fcd73e948a363c6c4cb2eec7058c7a48162829c55d9f20c3186df069ec314727b96d18d9374a8a52c0529c3aed123d515526ae14915a8948884d4056172765394b69951b9cd8ccad2124a9c96715ab66d253b80660984006689d34a19a76d93caeca5745a4be757492bd94b9f85a0e90f4a8b382a5d84b9e06cb1dec2c2c26a61a9cf5a734a0f67d21d9ed29b949f4eaa8585c55efa524b476550de4b27499975e84a25199dd493e81599eecaf4ca695831a3696d5a0446aab12b5a5a27233407b106d3d2bb52f7e9b4a44a54867274751c3e59216f4e478ac89b53922be4cd498911797302ca41b4390d21d6b0a2598a34bd82751c3e1d9137581279b3fd9c94c81b4ee804246f3ca4d310a28d87865883914e4792b4925a63feeac363d41f0ea3d2f88b5ae35895f1970a806348f2e6c444dae05390b421246f4e4da40d96372721e9a121da9cb098f1cb2c5644d2e93ceffb744c39641ec46554216014248d6628e23772217e218b2d747ea31656a0110b387e2315b4a059e4f88d435b481b4ce31374fc0ed1059b03fcded8414f60a00228c0af0d31d0687a81e0f11b363d9541d23be3e6f745d38a0697a6f7a5294baf21d5f4ae84f83dd5b841daa0d7d4f414077ab5a6a7d12600a7f6b2dec9a8444c32ceaadc1027643a02909ab224022a929c9b724ca76db2ae1d08b8e9a623c0f2c8a6375119a7f614057973a243149a7fca42de9cee70caa2f9272bc81b5004272b34ffa485bc014970d2a2f9a72de40d7882d316cd3f7541de802a38c0a90bcd3f8141de802d008318e40d0803244e6268fea90cf2069cc1a90ccd3fa141de803638a1a1f9a735c81b3007a73534ffe4067903f2e0e486e69fe2206f401f18e049c4a1f9273ac81b70c992e69b4e7468fee90ef206043add4104f206642282e6832490376010099a0f9e40de804d5a4ed07c5005f206149236f82d2a683ed80279030e491bccd282e68330903720111230683e380379033a39620636903760d11137c206399037e01323de39e081bc018dfa383c683ee803790342913618e706f041f3c12279031e3d913760142379038252a40d069af91145463c69231c283320130104bd9ad09c0f0a814302f8c7e4752ea869de6ad22d42cd32d47c1e05d8a123070e9dfac9a088fa19e10fb40248043aa196a85b2d5ccb7766a920680f899aec15324410f5ca0ee2a30f40a5fce9b48ee40d17246d482348f2660e8152e40d86246df08f9aa3341a628d2e00757627bded47dae0d6e934145d6e2af784086e3ff286725808f18bfe7213f10054ee188938addf14310ed263430c33f6025065dfef2ce7ea95a27b7c6f3917c43542d8dcf8a0812f8dcc210cc9b6ea1dd22dcab5dec2d94bcf72edc3415b35044d3b8d659cd44403c02245b7c85883e5f3d3699da5d5c2d212844c5df244446acaa29c8c7332ac1411490649c67aadc7b0d5a3e5ac9f98b87a70dd0693e61316f6728341a7f34f4d5cce3f0981e7c7d3437b0a6ab697dbe5334e4d5a4e6bcb59585ab8056439ebf22d2dc93ace1cd2ac4a5756759ca98a3d807a5ff4f590685f4ee87a6fb8a8164dbd7fd53b4300f5022100b03e21837d3aa51286c974329d55d5d85dc71e7d57290bcbf908bf5e2e8332f6cb470002b6e93c609f7e990930ffe13c2c28347d41390b3fc2f380fdfd72179a321210bf2c45324182fdb2119480c4a726c7f4cb4bc0e2741eb07df8e5a12900d9daf5cb5428eae1347e598b2dd4f8652e80c1fe0002f6771eb0b95f3eba69f9653234a5f6eef0940eb5813ca53b14cd39cdb152f0147a90ce212318d210878418f281409d7aa79f8e771696d37a39094851773d7e3a2f4e2e8f5f125444286a84f474b9ac3c147bf1bae5382c5f2eab8ce3704b452283fbfc5875e082b826d16675febe8add4d8fbf9de804205baf56b4e577722b013954bd5aad2c13417a4565517689954726403e25993e4fc52aa9aa0e6503b8041318fd8d44d36eb447c030390cd3f3311cfa02525f19212a38e90baee44624e5e3a4efa594924a59730e25275154b4b5e1c80b5bf881d1310b2a903e1648c10b5d0431399c5c8a33091d464e2cc1c4bc1244f745e830827592a02276d145175d40d119280449f67132fb74b4974ad9892c01429be36a840e0ee739238e0926820434e76b6289da71f711bbe8ce9d7bc7959e59249fe5d795ef7a48afb33559262dbdc13535d2d6dc909f59465bb32e1ed9b56bf6c6acd92a0da6e79764cba248209f6a53a014a3188d94bf44dcfa46221d93a6460a2cf8a98114b890340328ae232c1db1b842498c8e523032a244325b4f9a3027861d238dfcdcfaaca1a4287def8406f2e70b4ca670e4040b1a084d2848010a141b987c5c4c1d3dad459ac5618c95c61af2b2ee80510a6b38eaeb75f5706627bd4864491c5283199a552387710adda4980e2392d08114c4c8899d2a2e8b091d46c41757e30d8dc8c32b7b747995561d9f3ab5bca9f1769886cc8c4db429408d9432a699223eebc4141c88a1f4e9972c2221453a34ff0dcd3d5e801d69832f715ea232b391c32d40f94f664950688193221b948148164c78420da83ce10a2427a0b80b4652f002d2d00f865a7b56036e5ed66959d7659204499d96cd4dcb364ddbe4087eb46c9ba708e345190e61b6f7c8aefd666771287764365e3b42186bd868041089cf734adf5e3a76d6dc9070dcb78ccbb42264dab7775826331b136d62c71af7459b5b111919197ef1670cf66d03e3f6195e8243c99209deb0c90446cfc28e6d33d6c0de00ec0c8d61d8e71940ec2a9e61e8621042334629a95402821b872f670961d1d01c9e2330810f9a7fae1dc1825600279554747106148a9ccfb52b2353530f13ceabeacc520e63c424165d7cd5e99810936ad3eba0a7941a3515e2ff1e6bd0c71a5bd302482f9fc4aa650194f1470e93a60363ace9ba48a5a7f4c9020e497a5e08d370ce3c8f4c18a550229d5d522a9dfbbc0b677570a8432935423ed1815d281ab3359a1140ca16b3a7e75f566fde7c943ff40edd2cc59cae54638e56a3a3a374d701b0735f40f7d2316cca58a5e75921439668791dbd53d3f108c7adb9e6a2ef1e73b8eaa296c149b3c5180d7c57c319a31dab6c42827d0999835921436a3ab348b06bd59561d5256da42ca6748b17cf99508605320d40e944ac112febe0041230894c80f1095c78d2dc69777229c1c78e59218c840a5472f8823f2daf29019c5d00e9634f3ee2236e5ea1e3e6ec2c47b9c3dde9328e7e3a1cc73de8b9a3ace8dc90269d9d221163e7715f21cdc3740be0e5a3ede80a20abbee592910134fd3b78d65f4efbc5155afe578836ab9f70f87500ef66843a4f019a2836e99c93a768d3ac37cb664fd2912c32e2887ac698792e8895a463cc7ce7491f4ffe78b2c8bc8a8a8a1f63e68936a39e53a667f81833cf72c6913d759cb9524f9ff57b764b455a06958c6e894a7345b8a03ea58ea51a954a9d62bc89e6de7d33aacdc3af3c82f99542327ea5911e7e650f8c9b50a7a78f5c7464e952bf1429b37c146b6401944592686ab159b0283bbdabdfb3ca7a8a8f0ea3de28148faeec81a9571ae99b255d29d4374b8a51398baa97354ddcbb96fab5fce39ece5aecf7cd496d07b0ee71fae5c1ba55952dbb0664e981440a999c252bdfe63bea9deaca552a655575287a47a67b44d5bdea44f6eede55d547f63ba4331bc587c37aa114424874dbb3ea230811114cd1d3510ce958ef8abddb954de9a743b3ec496654742fa39225655dd7550924937098444eefd3e93a4e1665459d4149f94c9f19237f6a22d6d352c88a9a2aba44a465cfa7232589226599902ce36a6654c461c64d8ecb8888529f42db106f58687b43cb6f6a88afd5e537346c6590af6d0cf18689a48d3044306c525a6e64e8299d54d9da103734c80dca185a9ead20869677dbe0106d6c6b9036e43733441bf27268f94e28a9e5b933b01340592489a450240e259174228bbe8e262599328914178fd4e9538f2b2b59c0a18b2e805d00693a6621872a4deb06650a8199aa89eeb8d33b9377fa388e5ee53a558e7274a2b473bd33d113f53cdb01ec288de5dd3b4f35279dd366d99651d93e9908126039d8333ef270ecd836cffbf4bccd48b5d18e09e0e7330e09667deafd4a653baeeb58dda1ce829a9da6b178ef988b718b60a4f95fc1184363e8b11a630c55b127b9abec9bb32c5fd5cb83457b1cce6c4d62e9e3c762190c6092ed09426b98d50b41cf6f7c44047fcb915bafac705d92325aa957ebe19e12880aef1776ce285a133a3ac4041f1f39f83b17516b8539c5b68120ebb3b6ced527788abe21e8a233bbc35334a87d2cd403e73bccb39cb58e320adee538cc4ff8e56281b42ecfaaaeae6b591a70b6c01ce07d0cc0d53de6a85647513629278ed275979fceceac48f89d54a284e52be79d77540a27d15f8ac453745507894f45b2233b3d7d0622e1cf295a12b5bc459b805726915488520b29b91089708ca476887190940d328bcb9d42c598fae928d6418a2493c8241cca95954bdf70291db0297e687d25d1955bb4fc42cbb750a47bae4b9ee0297abefb6637bb4f0a9e8285a7e8cc4a25d66bd5aa664f38942a9b159d7d4aa5a10c876bc0798d09203df796e6230ec370041aa8210634a842166fc899df224d1c0313285590830eaaa00552ce3c186fa411173d8f8a36367ab6b4d176c421a59fa79fb6c77c76970ed9dc0b30a4e98774006baae2a26afb917dde4533eba227aa52227128a514b6a2250d3e0e2b41a3e7dca1d19c6a72818b9667683950a437b4bcb40a459adc1055a7a2aaa355e5e1c641ef6376716a81c89e5fcd1237f7d297837b9755243d52542025f4e45071ea59f244f699ddb583eecca69fd99c2d973ca218d24f70dd721cceba009e3a52a1087768da05d0eb480523b4a0bb1a907f3cc94c6a40ac87438911e1904e91537a8bc2a1dc905c00de2d4a57036653e6b4f78c644d59917c562f9715654ff8c57d9f4e96753b303dbf194d1aba3af357b81487e240cec358eed56c4a52cda8b0dcf49b2571140976168ce5b459ac6b87c964fa76707cce4a507554caaedccb8fb21c67aeb81f14c461987ef1bc53f6b27bff3e1d8f8f268d87a44a7a61b11ecd8cc0b9b2740a274def220ecf779100e0eaf44c86e270a4231d3a0ec12149779ae6f2ccf50ee5a53eba7d38c0abec7d157e758c94670a9529fc62d4279dc2a1943c180e7a6a51a747b1504a85564971f699c57cf8b5b257f66a7a3d552f7307a67bd0af3e7f619ade7b8711e1d78a7d02a6a7e5272f1519c924a85f2e924a56a88a8419f57914cb8a7ef5cd88b3d6c5ddba38cba37be4d03b7db6a2ab1fb5583689da8181508f9185d52c3346ceed6833da02349ac22f22c498d82c8f9186006350428c89cd7221206da3a9ca8a26cdb173362bba952a0c641ba3c9e52cf57a2e495c958f301be11009d2a4c992664c0fbfbcff62445a1efb01e994cff32e3f1d2a45ae8e7aaaa21ee3ebe5f7a5e7b948da98ae9eab9ea69e5a12548c5f55cfc7782389a48df9f53c95375991b4213fb58835e6b47707a653f7de7995a3b83c173e6224dea0f06b07a657eed1cd6825ab48b0cff9d69444f28689322d8aa68dd10678a9b231ec6518d68217daa8bcd46d4addd4b0954186f2adba852186f26c05a217b53de83395b5f49b11d2bcea5708559622d52ba4e951729e36a38beabb6d464fc0f47cc732bda99a2a98f969a914ab02299214262273cd53d7b47cc45196006e47763322426f4659523785819826e6b0112a334676d6757aec2af8d57249a5884ce23083b27d21d2f0119b214acbf31822cd66948696d796005e498575986f50b61b4ecb471c661335b3094e6a198922f1cba57aeceed99615b18fcc0c8732db667bf8d501ac57b687772ab20ab7f2ac5e59efbb9b5d278950477d65596589a63d4a7ddb4030f5cbbaffb42620fdeaf19b51a6094046b27ce404ccbeb2ae9a1b1c4a1fa30dca76c4afec725bfd82ad8a71dacbddf39eddcde807ed15aca745e2f31cb6ae79246c5dd36e461b148e916730809bd1ac027832c924dc26936c01de2ca98bb2a12514e93c976771707befbe19f10b6bf90d8a4fc90aa68953008ac2af38b4a449cb1f4de926d2b7d4d3f26868072de85baaa2a5d7717cc4af2b8f34bf56984b87d69325693e59524bf6f99458e24a423b665dd9b9c69c2225f89a15e25aa209a29815654544bd65453e4ecc1809c58c91770589d242725c9f3e51c0532a1469d2f0917c0119e40f8745c800064d9a2dc9a4e1a3cd2889dc8c5ae6684a00238cb43dc01f294b72054598619e821894a83a4e810ba0ad254f66e60952da81f3d3a3735ebaf11b6434e23bb10413352c236a6e50a6c12ef388cd190e59662684999772ca3b80f218cf1c4881021ba2c84885226ca15937e0a4483ae5ac9d12407929611ef214a20cf16548e0f1abe6064ecd904c11323335376a40eeaae43e35ce86ac591a1ccee64f67bb0fd98566af2cb5f76ddee0707e39be7b46f06b4edaf3fbeefde3be1df21e1772cc9f212759d3c9e8a7b36d92664066b3a5e17138278d393d7e71b34055913014d182250a43584421226ed8d4bc6682900182860f610f30f6305e5c582c2a1468f2b82da3532835cc874383e1814df7033cd83a4d1704f5316050d315d2fc8ec278f1e272c14c37042e2d560bcb2a335d2934d31db299f8dd26df83a5ed21cff1072dcf11bb024c52f3bdf8eea5724e5703a29270a8844346017118b24c332a48668661a4f0eba29234a39aa092a0942060ce1cf65e2acc65840ec039307fa933074584129a31300d23c4b2370a35ebadeabaac2e2dff2f4c4b191e7e6b88a40de6a1e58b96304e64942f1812a64846796a98271ecc16b106ff9a5a06eb1725d47c1822790363e444dec04029923730474fe40d4c942da20d4c19620d7e0f44d63a8179a9324746ad316c1da6ca8831adf350a35b77d52b001e2d0f63246f6090a0c81b182947f20615246d9421daa07c001345dea018064af3d111a7be0f68799640cbc32065b748cdaf350936827562c88751899021ff45a589211fe5031829a8a0ededb2529a5d5041e7e13162b0c48001a3c278f162f5e2e545f5e272a55c2e2e2f5c5aad97168b8562b5b4b8b4b0b0642cabd5ca4ad5dc3aa84aa5585228d40ab5b2725a01c114d8f232ad6b2793c964fa9a638dd6bfcff34e5ed7993a8ef3b852c92b6ddbb669cd2d1c5ad6dc3a77fe70642d2f136bb45a9e26dad0cbd0967fcd2900e658a3253f136d5c247f3a2e97e1578cb275977a87b4bc9cf42cd92cf5462dde5726465f990b0355afabaf4c4b35e668f209c7602dd8b29ecc0aa6914f987fbcbefcf3c3af2bd80a2ee2301e0b03c8daf89765c51658a55512913d6c007f3469b847164d1a991463e2232b4699c4464a2bf8e97b5db7f21df13d48f7bbc9ef88cf226141617a574fffbec7781c5ea95a9be427122d573dab4844ad7b774c0520d55e92da3fafba78ac5cbba6b3627b68df6ce91bcbb65e7a67aa3d5c3fadbc050a6b18ea96ab4ef56e7d32c51addbf9fba7b3b4c413c4f3b1d67f6b82e2ffd7bb792faa9ba70685ff909f5d3bfeac2d1f5e099cd2968ec58bce114441bd84da6d368b3bac9deafe3777be5fd01454ff3cc8e62489b90b0beaa3e242b8a216db2dfa53cddc5c3f4f8687bac5cbb29c8dd013e72687af72e487f9dbd32055c77afdead91001fb5e3ccb862efd79866ef873a0ec71e286bb2aeecf226573ce78a3fa2dda17de53bba7b1fd2d326b004a7eab2d7c5f2cc56dd7454953dbdd2d3dfb7a3e52b2dff9000df69de5b5aea56ba575d3b56aefaca55ef22136084c21aac68790d89554bdba36a56521183f5d63dcfdead4dd7deaa916334fbdd7b90d6ee55f921b1b2f2d3bbae7ab7577e3c3ef0f143c2eb2edf216159b0d61ba4638c4c7abb0785353c6979ef1df5547545653724c05b1592965de199a5d2e587c476efddfc90881c6a362221bfe10094d7aedd28866caceeac207d79e64abdb2bffe74bef8ed38dda57de5a66ba60eacda4fd564ba57b583d5fbc9f4d5bb7216d70934995207ef5dab2ed44fd7baae7bfcea4dd91d2c7799bef2d46f7599ec8e95a71edf72f0a7ea3a3d75d3bb96ba3a4b55adde52bdb3acec1da2fa0f79517607eaaed33dd91d2b07bf77a90a1e554fffaa6cad824f55eda87a32ed088247b6f6aeeeccd62c10de8c80f2d9760350de47f66f55663b562dcf3fa9a97a42d7d580349c74bc8c2ec62a314908cfb681208bf587a18ccc67cc7c9c0378a3d1120c6e9eec993100eaf9243f56cca9a4e734d2f373cef9a9647ece1f7e4d2ba47414820378a74ffbcc2ae804124237dfcd1a7d4e48c8bb78c41efc68a51187f1d24a221cc6cb271c776874188f9845cdd135afd03e9310e9613132812693d98469a214a059c5fc296954f87527115779e1d7e5a490b234ff33378692f494b499c453947038894c9fd943e32cca84ba3803c62df5d8796fb1502714cb7a377e38bc7f2bf7222b0ad2d15954ba299e170589c3dbfa8b968ce1986f3d3d312daf3392f1e2c3c31931b6ca84fbcd84b221ecd3f16612559d403349ab582da11933ffe29ebd3b30ddf2148cc7647a35601745a7eb8eba230e6767c4f2ee62b15acfa0f08bab342a439a3444680954d0f35952368569886844486fe8f9ac0ad3d048ca9cf02b664182292d4fc7f3bc186fc813f2883c2130c68bb9f718eedb01deb3fce500dff2173513e2aeb25c890bb0bb27a469407c0f084adf79d42571386792ed85ea7d0afb24d3a71e7ee711cd3c9a31f35b8cbd1b38cfb2f72d7bc39e47322d8ff579c4b2301e47f16076b05c1eee7d5555ef7878a1fa9017316fbd6bd5e8bde5c2b135eb3c2d96edd1baea437a4877eca9ea8af556bd1a68c5ee56adb3eab56fc5540df860bd938f6248f3f8d0ba877cec211d3f9d2ebad5bdf0ceba14cdfafc70c86e55ef3135f68b7aadf5567ff1a3c5ea18d6bd56ddd8b1e3c752d51f2a95f5a1f57df198c74fe747eb31c76115cbde178fb14066bfb01d94d89d11bf3c14ab51a89007d983c3a4b34ba9c9ce83bd32503a7bd2d95fd87b2760cb729286a999f5666493779c793949df12d0eda0f47c0f27267d4b40eca4d61b768cf919f3e1bc0ff5725d91db05f5fc4abd21a8a2bfb3d4ebbdd572330bd62760b254c619d3b7ea13138ad9e1cb8b17ac9f4ea7ec749cc9aa5f59f9e9593dbdab0155d964e2f10ac05b022a451d381c66deb311cc22b2ecedd91290042a25e9d90467752d0b11186970224d29ad56abc53f5c2ebb6591b83c7e0788423d31d668dda51259d2b2373ceb24b80fefc20a8404513a6ed1310b1254d123a8d2a6b0766076eb3e54eaf9505b0f6be42f0a1dabb7ec6d7d751db15bb6c33c9728c4637520b35bb6a5c3b2adcbd64df7aa8b657768ed79add63f9a21200af560968a011cf5b4eaf71209c29c253e6403693dabd7c57a6cf09f8b657168dd7aeb60fc32ebfabe71987d553d0eb3b754d7e779f7520732337b9a5163cc242f9bd52c5b69333a7431ce52595858588e330f53eaba1054d1deb3ac4967432d968d1cb2b2cf96eed59717380c148b5aff1eb7ce5e1e3f9d0ae3f1bf99bda8cffbbe1e2c8f711ccee2044afaa5631627f8e98e697f31ce72afceb856596abdb26bf6ecdbcbbb9799b17ee751fd0badac8c07ebd959f6caae395ebc1e9582bc23da1390f5ec9eb52897d65933ce3a1939d212e2707a441cce24a75f4f2809bf5ead99e474fad6f2d35b4adf0eef996784c3d923b35e12eb1de170de039a403309873c2451a201e17018747d689d7946b8f5e90909451b1e6e8f7a46fa0777ebb3a7a7b3b72a0fb7d75302aa46bc242eac7a0ebf16ebc3b16d016cfdfbb605d07bf656f53ebb2501b7df4dc5e104656f49c05b02c2992b1f2ea387cf97864a4ea2e8e13e1c875b1389c3f0d4aaac7b15f5b57c2d1e78cfb33e6403f1a1750b55af6be54066a31e5d2b7687d6acfbd01a7594f521bb6855eba89a3aabaabceaa3c5f2487b5d3bb6ce56e1b3ea436b1f9eaad7e58557559767337b5bd687d6d94b4c389c16c86c1fec8cb20ae2703eacdb16db16e0dc11cee0fec1c3fb0c9b39d1b4002590d93dd86c88b67618199fa79f8e0ccba2c9d69887fa83da7a4b42252018afaee3f02be5702716457e22167d3a2f2f5aa6d9cf7745304d490831661e094e9c509a424f8e4e383ee108a5042433730dbc672f4fb161fd7bd6b13ed6c723fbabd7b5230addefa877191187a954ea5ba7ac8b87eaa9ab6ceaf351d3d981643fbef3ccd6f9ac0fad59a796ea9d55413b3d3b8f389cffb23841938e449fece157667966b7debad1eb3b4e373d1a73c01805251035bf4a42fc22ea212a0391a6e19c212cb240a55b8f5f0eef5df683f5186b0075f6cc6379deb3775ef511c590fee13dc61a990fad2f3b7e393c5b6ac221cb22f1097330ab7d01bcf3a88b108958725dac039925a14913738858126fc41b4b5c2cbb63ebccfa905ddc12126c627fefbe7ab3774b00b3f8ede0ce50ef50b4055462c2af56ebfbbef5f73d6ba16a3654cad11272f1e8ec9ef5a1b5e940a66946e157e9f3f3287b9f8eaa9746a3eed5fbc94e6a7d6643d9673321a66a005bbf99102bf6870473f93dfdb39f1f122d17ebc201f89e2b8e0e4f60450ebfcf5ed45b90707d8f3925261c339fc96ea9aeefe03f5b02ca842c5702e252f6f341e9a84ac193cc4a351be2700a65443d81be12137ecd9780660968bea1b3cf931e12f25df69b15652f5a656591a7e450bb44664225a0182334630948a86709a8a7260310e421124b820a1d3f4a20c944067118721366be6cc2af2b8124906442a33d6e53cbde75d83fed2e3552a25a762d593738d2c64a11d2068ed72fedddde6995c892276874a6017190f441fd4aa02aa4fce117f5e1faacee403d7b765426a53dd9159b5ac0023227dd12f2c609698389262c80816803e404451e7183776207080f91264ce39288bc0922a447ca13c41a7c2a445e518f515987515bfea2b2fca5aeeeaaaacb1adb453e94f6a67e021244ca26d2868cb47182682387106bf8c81bd992445a56b6d440c240ca157ca033db23f5ec7cd9c4934d64eab2a6b436a54cf6ca9724c7f0f4f0b462ef0764ac71baecf0f4a62145676fd074ee30a4c12f534993729351461a4fd0e8ac25851c8251d008d8e529c264d9337b79664720b3b3530ee9e3250523d564179ae5918dc963f6405875c4c28a2ba205a0a03c2f04943e4330cfa41bb1c6ac9991a1c1e1ec09529be03005f1080e34467ad6f987528cd2f032329306643da1c994be51a8a888065485651a38c34943e97bfed186fb7cacdbe3630d9043565516872f3cf9079de74d37b004e90ef5a12c90434a772695a697736e734e4abb3967c72d9873dac4ac053c00e59c32a924613de09d32671e95c1d29e167c01299b2942078e8c95076b29a5d5215313cf20188d704c75acbb3c54c6ec1956290fd6d16e740b20772197f0644dcf337bc67f3be6a5a5d2d93b4a594a1f413adbb0cb6b9b8def346a81ccce2c66e913a6031643b693b347ce4e39c462b03acc694517672626a59c9d94db66af945b1763b79d4a25d0244d53826cf26c8fd23dd3a7f3591ab0f495bc52c9eb50b5f47997df562a95b6d2572a59cff35eb291d24fe7a5d256a957afc4e1bda3262efb38eef44f8687f6f753e5e1c6f1dd47ecc29efefdc47ddec11edbca76f0db1efb3bf6e97c25abe2cb9b6c2c0de1364be59309878e0af9833dd436500787d88da822836197608cc29a363ea17300ef16897404914494302256894631caf6439b10c5c7097330d27e9ab54e32cd344ec22f25fcf2ce40cc8483b8090bf1d0765988b988370c246df081c6d051b4d0f1fc85f8e29889b4b145e42cc41b0e9236f87c056682159a38d962b8f215b0526d25489b569eadc89f302a85e9c4a6688c0a20ca061a87663b34bf44a4f91b134adfc04c8836740d540aadd2cc140ecd41cd5be55eaa774897b8ed6ed7b6cfed1404cdda4f0aba0873b123254a386267233e622420a6d9b0221c62d8151c83fd494721275d3324d3a4b14b7b43267d258d1dc38e74120c3b850388fd72122771d23432957015ec3c05fb994766cfac023bc288246d3b353adbbf8ac588c1347643ec4563adc61ee30bfc4535d635c6d2186ba5b16f12e35f2eaba9b140131cb21335cd37def8ceafe1e3700dbb5c568a9aedd8b7176983439768e3c3c97a945d6a8c31adfa226f68481b3230f266c68768438150de34c142d9bbf21307bac7cae9a58f6248af9c068bc60062c8072b0e19f259ea114a300564626c2285ea9512f613280578ca19d2ef6a5a73d6644fd434b534a2a49043282d0d613c3d8ec11e31ae5b0ce523a5747eab2942e581e10d566374328f284e78688d9d46186c0b1004cd6084d2974aa58c528ca39a76cf3b1a404927a53e5d46bd15d0446b8fd3e9f77ddf572aad7860b7812693e9f48b7dfb091bd2dee5c10700b0346a8b322bba248a2a752ff72770a6562f1a30c6a07ea3104bf56288ba0a2533532303c62350b5d384056466b4ade4994e9ed773764165ddf17a665ff2cad70d6845cdb687cce47dbc2458216d10f4446e7c1edd9c4229019824619a9213961cf5053b46212acc61260650b61418e1a464399999312a259d92a9f0f58e1afbf590bca40e63047b13e210dbde4d19b1df52b42939a1310cc328f33421a1dfea26346336a2c63ebf03700eb55bd08cc19ed9008c39f43935d8318c0a01d514d28cc19eb9328b833b934c881abb77e449619a9511af09bfe2139e00d4589093c640afa8b124a3be9e516318d0139e6086be5e94c632c95bd026b411f1eba690ba09bf5a8d797773d2580a69d2504a84d1e0107ba85501d9fea0ed11cd1ee210ab834607f052a2c6ce94c390434c68d61f34c8035a823d04a24c68308d944a5249cc1d932ecec82da421137ed3eab93ee1d108e773dcb0a7d7fcf91acaa56ba5edd8b743fb66ef76ad8706240377486fd6c583bf9d2d92ec9b7569e7bec131f3436a28eba0931c6bac8cbcac025e992b835d7ea68669349df21d1385e62481e4232c55318a6a481561a80aa4a9a2a60f41159c04dca6f04cec22bf14f005fc7a4a3c966aa96469974af1c3513a031af0f8e934e058f6ed9cb46d8cb461d8e664db360cc3b0ed19866ddbb6e36d7f564b471ad2130ea966c441e18eb8275c114704c349130e298c6795138251b9206c0a0c18fc03ded44f117e4554128a0a873a5a128ec759c4e364d9c7f98200198c0cc61187319e4c0151a8a4c7f87abc2a9e94240e298cdf8836f487d31f4e7f8071a37a475e140e1df0002620100109bcc0d1244b59912a62533f1ca67e52565c54524754ad28230e75ee49e197014eef257954bc2a5f0fbf7848011dc1468e10e25c50adfc9334294c17200cbb7b8d4c77c776ecd8b1c3c6c6c626890ffb6abef02bc0d71fcca7257d430c31c4103838383848b8b8b8b8b85c2e97104208214413a7f9eb02f8cc03f020ae253d71187bb70dbced05775e007b593d1edafb1a7bc3635ad293d0920e80cbdcc681388dfb7022ae7a8d23f11f7ee3f5310ee3d9990bed23c2af1a9f2abe1f7ee538fd6705bf78383d8eda2901e4a101bca6d61c070e1c55764dd58434229601b60c56cbe861eb1ec0ee21885f56f750d39e4c7b617b6771113c00efb2fa46e60600bf5bdfdcf8704120b0d5236fbde2cbbaf10b766aeb542a068cece5f20760f7097c2529e73cf66e9d731a7bb728ec053be72f7bc11ff6b23ae702b0a81f1ff66e1b1436001cb0413c6107b0015b84bde08ebd2c560f6befed0d9bfb0b0dd82bd3dc0960839cb0353668c63360efd6330e007b370cd80bf68ccb5cc05e56cf00329d1e95d4ba05ec65b5e940d8cbaa80a5612f4801eb43110f4b84bd9b0e7bc16e1dc05e56b75ee327e6492071c35e10a6b68d612fab00164698d99218409d4aa93ce117004eaf19f10bc6e93528fc0ac0e9b5237ec99c5e8bc2af204eaf21f18b88d36b57f0ab9e5ea3d78eb046af29e1178dd31ba7d798b016c42f204eaf35e1d7cce935217ed938bd36c42f1f8c7864235808c3ece5a2cb95870a72981dac9163662af600600fa26297397f3a443cc2380ec74fc7871af1d3a9a1a2a1baf1188f9f4e8cfaacee78fdc3e3a7f383012c65c0e397830100a80c8543ec32d86360ff4149635761a751b1dfc05e033b10d86d1035761f2a7618d8892855cb4738c4ce53967856578ca8978b62ea85b971285ec9e54ca05e7ed192606e1c8a37f54aaf07194dd4cb475c2e38448ed8d42b77d4cb448438820bbaec6400f56e12a8b7eb69fa08d4db19697a08d4db09353d13f576474dff807a3d234def807abd251ebf0654ba0403ea02aeaa336ce55855e2a5fa84aaef4e6f7647d50b68614f0155894aab70d8d35910bf94383dd764e3d1f2ec2dcf2c10d92d578005c24a581a1053a2521eee96e7687937e98e6aa7b763f5aa1a2b61e7b2205bdd5165f31ad1a56f7726ebb82cbb5a73f687bcd863ed81d99d99eca5a1ce5e1a406665b310874cc4217d071271d6b74ac45bea00eefd5080a34e31ccde9577d8576a0ef072411cd7845f3baa6ee184b8a016f01877ec9cc52c4f0e96b7f060a119432fd4d12c7ca434f6d28b7611c388451a4a85461beef11cc771d8cdb90bb1042a7db920a01e8e885f310a4b40a2e11cce89098ab44bc72c7caa74373daefb4d7753bb731df7cede9873d7113be6f23b82fb8c73510a885f9ca5dfe1eabaae036b609df665de31100437212a0b719f5181cc9ef198ea43eb199687ae6bc66377df5c332c0eadb9db2b2ff6e1e05cd9eb575d19c675da89c78ef3c81ec2d4970b2a652d85433ae52843c2be75338e5521867042db684fc0b6390e77f10978b9a0e6a0f06bdb68eb31ae24adb46ca84c1af008b80f8f932601cf91801a630c022a48e33f3c7ce93b02b33ebaf7f01e7bc73bcec33e1c43bc1ba20271f9e5c0b9cdf9d3f16658d78cfbd0ba0a61af6b86dda1f58c03993dc3deab3eb4eee63e64171d736c881a9b466555206ce4b0c66d2c43e1707b4c6f37dd7d689d591f5a6307321bb3981520451de0776b97247ec17641e297d52e2803fc6e47fc82ed62b5cb88df1a997ed1f90dfb05c7effb25c72fd82f2f94cacbcd0b9c170478817af1c834a8a41943696a1e9986c6c65fdfe9230760c6e60278649ad4cf8ca18f1104001e59e691ffc8b5d6cb1f807d7bd4cf101fe207b0771be249d80b0e7124503f4d8f02da6e007bb7ed47d80b6e1702a8e929152184784a88e710e23e08711c17e23a322dc48b10e246d85b5334696415bd9d00f66edb718ab6df14353d2a09e726e2dc062a29e21c085452c4390d5452dfdcc6deede631a99f9bcf48fda4806ca8cd397b5936cfaccd31fbeede51e751af114d806f1f8f1de728bd7dfb72ec3890d92ce5d3f9e1f3c00cc3aed761ffa1c6bedf0b50817073ffe19dead3f9e1874a5bc5c3bde3aa2fc78e1d76e390cb8e59ae09c7d0bbb0f370cc724162005547e9b0574813e01d7fdc154638a4c728866118f6559165c7308c7b562dd643053b837784a180aa21a34cc3456c84eacb4537c7e114130e2917ad6afc70a9044c05a58038a46cc4451c0ae1227e42ef0929c28870480578534061ea590a28c505a56a3c87bda00f960a0e7baf636fd845502a9179e082b61680a7cf28a228cfca22ad2f1764f3ab8026c055a209606ff77dc64bd5bb33d7882fc7d69ce582ba689d9e52699d5ed302cca947e49ceb9ebd2b55aceecc34d6f5f2918bb37d00446c19cb4ad575473dac72dd611e564bddc596c6387aae09123785696e8ab8217ec52c7cb8274dcf5dee72529ae66c1946a9f0ebf21537f583f9f0ebf2533f4cabf08b9b62449a6255344d0115699d022a8d01e420202325479e70b87dfb8cdf1450d377196b087b99081b89361c12620d7adad20282776b193d5c4676d3451a80fc2161fa8df865b44a9119838f87e9379e7596e3613af63de3275fedb27aa3623e1cd2df545a2552e10a4afaa6c6eee8d9c8326d02ce78150e29150ec100cef88af604b4b117a6b70b61af3cd2db7138461a261263b657d1db6becdd1ac6761a7bc18671456f7fd9cb6a18e78cb8a04903de023166fb7601d8bb4de9ed33f682557a7b00ec65758cc7b83d087b59db01602fb85dc6deadff18698a8831db1f63c3dead63be02c25eb0635e830ba2612fab63fe83bd2c1feafb72419313f262eca52d0630b4e790d2cfa8f10a7eb59cf6507fb08cfa43d2c3d4abe2c1d6cbb5fea0af172646bd710846bd31ca8b7ae54bbdf288ab5eef8aa677a99789f4e5827e4816f6ad85a53ea1eaed5a12bf28fdb652a550760a6f9e8a3e324d154d572812f0f153e52cc18ec3fcc32f2bf8753add6ae991693a271c437f25942bae3872448912264c64932672480e3517447459742491e86512bda497559826e65026d2b4643ba293757d8fed311b3eafc872da66333a84938643428ca177c2360590c342d32de482628d0bce22e0b9204a25c6d07341acbb51ca6a1ab920ac2f1774446653550a1ed252c8211e1685178a848688848a384952e40a254e84848666523cfcd290691b69837fe8410611305a5ec6af4b4e4b3d0e6903558052d733339d62a2af7ea5d015fcda992962a448c8a1956266c7eaa9a7be4ad9c81b0310216f1090236f168043de38a000f22602d2065f65632262c5462c9a411b852c9a513780bc994044800322c045f35356506961daa2b90bcd6038aa4618efa1beb88cfa7298ea3a0f55755b4faf15fcabcb6384e7d3904ec89b2042e4eaa624791e9f2ae4cfcaf6d4d45fd4d55bee52593186b7d4a887fc42d9bbf2283a7352851016b106ffd81e2bcf2eadb0e20691077209932a83b0283911523941c93ba451aa8b7af615952905a46537630d53ecb0e401b0d2189a4ea6ac489122456666663a0355f252c821185d194151c4aaccd9e42f8ba593d3c92863c97483b48f204de712187b41f7d2f9d818c01ba9b89c2f845fa79b545d80da59e72940c62216a3267d82bc46fbb2167b7574cb5575a3e2f4f2fdcac45454a95d36f4dace4cdf1e2cc7aebaf63b33d3da595fd52b6f4d2f7962a6b3b370c0d6ce0cc80231242f33ad56b66dc778609abd2c5f3d084f543cf89dc55523b531d6f87baef4913f57dea019a985070b23a3e38b9ef1bb0af275f46aeb7f97aa4fd474fc2b679f8e1087cc44e12f0ba54e5361ac3cdcd1ba78c4878f0fb118646e33ecddc01e64c4570c70d2c0fc6e323c0ef94a748ff81d1abdfaea3cd4d5ea4168afceabf7602f6b7519f682abc3d8da721e1eeba5d1f1d7e5190f262cb260d4110c1db1d0620eddb167312e4079ed8c6975be8bdf0eed2b1b39543dd61ac3157f67fa7b0ef0df573eebca5155b6aabaa2c501fefbf7d8a8d35e3dd6167b6974fcaa625ae50f473c0b8c6b75a6585fa9f1d98b83f5eecc740cd659bac390de0bd6cc766271adaefaea5e7561571dfbe6fa8bba2179d1b4d872adee78cd625f70b8a5bae2ad184086c1094e550813a9aa9f5c54ae550b54c76a645169516b9939006fa4d2423848b76dacb33e3f245cbec2beaa3de28ae5aab86261adec8dabb75ce5f2557579ac2e5608c730f7adc506e1905b59c8a00cf11213c2e10e144e70c8372212919c80a22606119242004fbf914a107ea9b0158a051559885facf3e3dd504f09f16b889db06c102c0cd1c68f5956962d66ef93a002dce890c6a28d16c96623c7784fb110152460bdc7cd3289433ead17ec5b73cef2b8829297aa4b7bccd930211ca404a0133186bf448c99f6b26234eaa4984356a4e0211956676084c6130e99897018d9c7720f8791ca247e41a12f002ff7700ffb6c48b6cdf2cf8cd14a25233a2904b08ba7e199bc78ef53674e1a21b0444bf9e160263c1a3b33aee6aa8b2d0e1d59da02af52a864cc14c6b11e660a0d4100000000e313002030140c8784a2e17834a289c2a80314800d92b058705c1d87414c21840c32860000000000000008804043327e1ec9303fa8bfa9b0a931c8236064cb356f734403561f4ca1ba56ef05c5af72a66057f8b12782da56cbc92ce8e9ebcc891c1fa82d9b74f69bf6801db3eb0b9414298fee200331321eee4071f81c6836c79955701a387bd1a13cd8106bb8750b58e4405afce2d4e10bd3f4c8d57fd80f96fde677fe61a1588117d1521c1eb83cb614da9aebfa8b344ad194d353f63a976705b34d43850dd07c9733d0a35eaa7396a8cf00f95c7d8861632d038e12e122811deec8eb58d06e924e8d55a32fa1f02a55fc7bb5f42156a0a83edefb84d6c0528e82951acc98a7bacdb9e4c27986f323e299b0fea5722228d97059bc422b72008985fc30b04af39fa427a1b8c4e2750d6900c5512324b1a25b91d715aefdcc612e3ed7d90906feee4c1271d6df544721ecb914c9d1676d7f7db7e14bc6e43223d41457c014e566a63a61b3aa96b4f1096099bbf4a35ca3f038960f8cbe7241114d344138f91c18537a22535aae5569fefb6016fe227c2073025eefad3a7cf4b698b976d6a4d6402c6b078a62d6c3efb21bca4591686515b7538e3400c59a228955b5a9180d933a31c3039ebd12255bcdd1fa754a545a225be565f722ca1358a8bef8f4b301c98233cd7e6d39b0a4fbb4eb9e274aa9d3e3e2503e80f893c5ccde7afd0c3386ed1665a057ad3790c792985267ba4723f8b62cc8e72dfe454fb1da6ef07b25de208e777366ebbbe39fbba7a8001095629e3ccc76a41e6588f99bc534085710f17ff2e29fa4c92493dcd9d7b73e1f8dc8a8b18aa3fec41ef22b4de45fb6b4fe15d681191f35ac73915bd427c71301c35e8ddb6efc79e6c13024f51cf00b9c7b3fe960770cc2700885c111b1b6c5c1d17bd162b012050abbf2fbabb4a996bee065f1052c70d5c3094d60ac5d7bfcf53fbc309f92cca70786df1b818f5b933a1f34f5cba7881731a2015110cac3b7adf0ae484c76143266b52beba5eff413ef36e514d8060a4b084b49da38309d828693364c3a8410db4ab35a71e5808d06c1de6117ac92a8e6c8a19757bb4ef90e35cefb44c509491ed352ebaf5619804b994eaee23405779b0e09e113b339900e6ba9a0e8bf34a9bb18c6141d5b4e5714aedbb40c2841027ea35f10ada174f2a4fae31cbbb77964f5c765840815227060329fb8692dd50b1fec2e48c96f4e4ed564337229ccc4d3d20018f9aaa6e368f72128f38bb9c942354a930a71e395eb30b61836cb575d96c87f6e55561914b0130e299bbe32a3277b4d8fe2de60eeca0456ce23225cd6ab3cae52ee4537bd09be8cd17ab0a4543266b1e29aa2fca416c5bfa87bc51a1031dd725bc888fd6844a241c095f4d45e3e9afc34b4d1e421999591b6c207c8a7fa4ab45186d991e5e97b352e50a4121ebfcc07a7eac0a7834461060e1f42fef095e66f5e1b230a2e7da787284fba87f7f80314e43cb7297455c9b8b0c85f9d3bcad2b4914ece578f4eff6b89824b232821bb33b5311d351a0dcba878b380c967ce3aa09a17dea25ff255be0d7817908e12cbc8ab93988f2ec0c0428b31648d394100e825cdb701eacc64fe2a152acc264ec532b78365135b61de8a7796503060df39f8598149c9a728fd22c3d109b5b5c37b46c05e36cc6afc1a358bb144f16a487b8aebb83c3510244c2ca8ff9a7298393eabf618b9035bb62496a582d1ab6951116261739205ecd5f0164e03e4d7f38cfcec7e833df7ed9c204504f87ac5e474739f50315f4881297b77ddef31e79d3c28ffcb6487f0c2f466d887cae3c39c94def75f0a4d59966472fe118ebf9898f34aba6e3854efa6e3ff4b37fa406af139a2b7132fd734bec1e6ff65e7e27134de586a9f635a8a03c4c323db8e936af614c9b2921b9d9f4a0a581c6c67819e3097545cefd28564b225201112212c0b6c7023cd40c69bc29d817d2cec98d218c859d85a1ec14fd8aa73d696253baba1d9f0bcc21bb5dccaab8a0845c6c5e46a15caba233ede06a9ac922722b2f2314e616c7110c728c4fed501025805fbe5f0571002ce024591be39e7baf8dfa7df85d7e4fc767fbbfb3d0c1c974efddfe9e6dc8bc5b8b79b7bc1f570302c0dfec8448529015d5afdc6693f99b9e0e925306606cdfd203ef7043bea42ef1a7f8cdd758eddaed0dc6d3c52513c4b9763bc4577e0f873f85084227fc18439ba299a45cb3bc2b036345a79f373ec30ecac8f9223f48e45ac20492b32fd3e508c9c5a3e281a1600557b7529907607a7a4585683d21f20fddfba56bd7ba2adbef0fa5b92fd86c00ef099282379760963e235582cb93961bc6f7fe8e5120614c909a3a1878e0cc63801a567cc1a75eb370741233d058b8affd078d44529c28ff8e218b585dbd415a1db77c6ac3308f9fc9d01194bf120218659a111be60d607649298a43c919987902ab374db3262409f59c2d8207d7e9038ddad4ce52ff88c69a1daa5a5af2d28e8091ae62202c8af50d8d8569df4e8a96d036d06d91da331af91e258eedc91714c1f78cfeae11404a99dbb20b876732dd540972204d60463b4cae72a8616f44eed5e4f24bdc0141c7697bc5d8c91a22200a3afdf5e2f661b26f80a10af7074767de9f21b80feab7c5e2f36826be86948ccb21accba308c9d78e52bad81cfcccf3540f9a07920ea0cdfb743f63dc3e5550b0bece01d1d20f80676380bfc86334c5c9d39b22d6aeb316387d137e32cf67e83b6fbe381959b002c64b930411b710aed8a44f558be2cbd4b10250a8cb395c2ca8f0642ff0c090e51e04f6154c86166cf2bb62d501914f074f198ef9f44d8a213386f641978c34dfaf17d854bd0528faf8ea0982fed0aee8d584278e033e4f6ac3c0c33853dbc087043e72f0316b0f680550b7b0f75b787963e46ba3a7fdc2e99cb4fdf3f74b221584ac44cab8df73b9b4075184e1cd7075db5cf1d83cea7848964d3d640cb57556c24f88816625f9fd763e756fea91a6d57884c308df3aacc5833df181bc8e7d54f25e552824ab7e755e517f9fe43c7764973bddee5609bc911200dbfa6dd4401674a3c35cd5f41af45dc5829a0b095fc0cb7ea3901807e52977e49dce27822d9ca00c269cd760cedc55f499846d14b1bb51910f14f1cd8a52cf2f515daccbb81e82334fbf57894b1bf894b5c20d6d065cddb0640b25c69a6c37cc40a2c7c239cabab254747889c14b6dc27e9826734b9a2fc9579eb8dd8988474f946b9fb06e803618deeecc5087ce61e64a7659ddebef0ed33bbf58947a42c55b3fc567142e366447f89fc5f50e4d616b5c7d9ac12cd4fd0a88396955d48c195f8bfb3e02eb97b6ee9fef83a74e2acdaaabecd48dca17b871c23d1e250c4538bf6f3de26c10af61187b1de5aca57443deca602a86635a2789954d9824a5e3b25bcc13967439789a1a408bd2e6acb72949a8daa78f757a306165c0c06851b64e2723bce61d4a1f5a279a07cc190b5622b59ff8e61818a4839d74096e72ca3f066a3c853e82316df389497eb443f6ce200a289bc7ff7871beca9ad2dee39ca2853113042533d47bbebaa5f54240065ed945416f4dc2c4c44b95fd8851384613ed8152436e297d6f30e1ecfc7f192935c1f0d3f833850dac67740212d618f84584c1c8eebcec1b179ec7423abb65cfa4eff8730736dbb3e822901e2d47eb57ef5d7a636de0d9008387a1b2ce0f94b67001869985e66303926771ecfdfa16723e5ebee95c384e2373ff1a1de6b00d78ac149136f5a879d9d62f2cac273498f6346baab60b3c15857a9b422c7c07ba4039ea9a209c8928c53be266cbbf04cdec781ceb6b9ddbcb374907f1f9d652c049cea5e447f8072610a48c15268eed001dee4e89acd7e0fa40f600dfc26d4de085304e50a2dc5f43802bd0c675c22a1140c0ebc60a86148f21526926a0398315485b044289dcb81ab8b76b6a8107e73a5e5a031275b9b46e7dbb4e20d810da0d963dad51634c039c5dfe055ef1c96379a2c28a5e4069a518f4f8b75b67935110b53df0203fab067bb939fc70dccac1f0e7a5d5b047b0dc7f8c60f109d9c3c0e92752b546c5412d58ca3a65f27fc3d5dcec6ced16cda627d4fab2df2284cd20ce715c0c729c69e7173a01ac105f420eacaf844e2390d16fd773ea041c8c63ec507b8787d37f6caa55a6341699de9f29371ec6ceddccf1c95939d6b2c9d5ad1259022d20b6cd0c79e4c1c0422f25ea2e8a8f206226c3311ba0c1d62d16f0f3bc6b21f6380f1b2493a11aeb5811c7fc71b13973f3434aacc8c4be0bfc371121361971139b1209c1d78a3a28e20dc8731d4f8a1886a230f14e060e209a7918dd35d40996f271260dccaa1bfded4e022818fe1ce6da61ab630343441e5f48626ac51fdd7d0c44636f4d3fde2ce95116e569a50d30e4ba4667009160b464de039bf309d36f9bdc85d5935c18ac3ded8a00d5e1f2f1d5b6cd28d6ad7d70c58d496552024c863ed3026df07a90928bab7a6003361743b35fcd2094731e186f4f2520edae9faa218e24d4ed047bf2ce123a8ccc090dfe16d2cebcf2b68a277228d28ceb4995556bdf08ff62d0075a0db655fd70359ba70ba8667f1ca137d0977025ace9ad7255e70fa26de041242acc50396b168e066387d4d71937628c4ecdd03ba36308fac4b45f8783bdb481a20149e4562654ef2df413a8c9f14209a142ff27d5911d3f3d19143427d1ca341e01b5996c768754b8d41cb6f1393408827c05efed231b165092bc17fbbb325831886c0996d76c11f00888e607c3aa0114abc05626a10a100bd5df409da47daa416469539d672820e70ae33a0d50ada635bf7c0eb2298fa433b5de2e0c9d88804b9a24d206521af0218c2c72b39de8a9a1196b2ba435736f1107dadde430c52a05303f4c8f9eb9731e17928d8ddd00c3e975d2f53c0cc9d0461e4e81f394ed22187e9bc479c68c95c64402bd36dd996d2ab672b67dba52145a5b1caa79941326320e2a0fb6af1695ae8eb68c6e03168e55f4fb35c62792e8a18525af7e72d02cf9dbc59358499ae86f3bee68a42c6f849bb41d0d1c22c47a0ec8c35fec817f36783b7dda52641c129ebd095b3995f6c7892050783ad55b59e079856086f16ae18850935958922ab5890e59c0ee5cae508fd1f2186f4c61845b5ec09cafbc330152807c6018ae6c1941104246782b67cb2a66f072cf6e652838f542a10843c2ed10f7e884544dae3b31e8582a0d113c169510414119cde1b22de7da5b341b8447aaa59a1689311626551a657d5171091508b85781afbda7ed93a686d75fe42dd0e86f71a088af28ba680e901e82d400940d52fdca36ed411290b5acdf642df93e5cecef133b05117c2aac6bba412bbdb45be034342a91d96e4c121efc4e6bdb33e8c7aee5c45a898192a74ac63cf15db2f3d39ea30bb04ff378a7f47c7a0c863ac708ab70441a14c12565ea39da7a15b046b52123507a0f650463eb0b9993358964f6a7199d93e14b6c27ecdc9112d53209109e10b04740b38d0c88e04f38487b54675ea564467d417cca8b437f88485ebcf3d7ebf0d499431022124f9438ea47be6a8d37207877337caa011793017277bcbf223420147823fa17641345cb8669e42f7dd8551ad9f26081eaed2b93062af9a8dffcbd638fbb49b311cd937634338d6f841e1c3e5bd76fc03fd1b07c07187ea5f77e8c9076b3a2310bf3341028187d56750027174a41b1735a4a3787521abb7a469aac894ebdfee0ace8bbdbaedccb5d3519fe6df5d40cc242067e4c46c31de163f8f21a6819b0313302ceecbf1dd23453b596dc3b12d61eb8d4b87132fc730e3374adabf0ac7fbeb6f306f373e9935167e34da61f7e4640d0e5f3716094f34dc145b6c3f5a8df5eb7e5fd2b27cb1318427e7f6eb7aaaa0372445d51a9b102ab613facf8c4ae8f185db395d7bea2f28ebc089d6c3a67a68af4b64ec8a9e408c792c45ed04e8168f5385a0637a9de1ba8fb45b34edb53992615f8ad368434c7211953a5c735f87b037a3b4ead4495c86bc10d2c3619342325683a0a2c3b2a218022d3cf3dc6c6e1f3c6219ad47a6f67835d6766b99cbf44dbf146d02072adc217cf266cec00cbaa8c368e6d3cc1e96e49547382eef1ed8507863f1b2acf2a608f345ac0ffd181e1690375b9648cc8d8f749de372e8925b5acc6b15d2045ab3ca73212a625449886b100e55ee99e17fea4be537b795a4bf13fb9b7a8e18da7f14b7ffe8a29809a52a23b079a8ef19be33b08b2b6320c44eb5801fbb8c5f66b5c286062f1267a1c2eba785ae0104ae76dc1aad2a0daaf042ea8dd3731ae3e6057168b5fc0fdd6f6edbc6d6f0dad9d5053f39ed2df6ad9d3085ed4b585d612f2aa1fad2f139ded75087a14b2166db07449aa510eb049c303e31d41166ccc04a813c080d8534ab7f62217dcd5582c6a107091684bfdb0c668198c81ff71a3e1dc01cba9e156cc67a0a71fe0f8003ca39496f4bf24d5dc1fc77994510e27fb0cb138bc08a2bd80776f2323d48c5b0348c0aaae106e708921890246aed56f9f9b11d23f11a46bb9b2799258145dd226b58f05328838dabb26e10b764a99d4a77ac241b5fd4380e8f527531b88004061b3be21226a7607f0b9d541d3a2d55e43a8e6d5e3fc12f97e1972f232245a0a4610abbc03ca0d2256130e2928f4673ea92c996c5e9668cb53dd8c2d8aed9efda66dad11a113aa48c43e5e42f403e1c7b669082d6729437e3d8f1c71a7e5f729952809970bf1920322ebdd09db06dcb9d6cbf36eecdc0a65cbaa43a2df9847d90337f946da98516ade70ecaa1e9fd25bd7d21475fb978cfc05f14308d37c3a0a109995f46cba45b045b385c5bbfff2aa978a3f0fe6a28b839b47251eaa86586a75819e9a8807edb409363e6578ca9766259b228cb0c15a43f9d4d7bf6b5b9cd5d4284cc2d48cfd9d90e4b8e45697bdccc59846e251cdb371f1818093093612c7bd09ab251229b00f933a255ea09ee4b2bd7844a186ccb602980c17568439aa58a255b1144d683a9ae866b09db4c5c38fefff38909ae856871f6ee153c90c323d1edf1df9a527ab95a6d60ea845390bd0f6a4fb04f18742a249a2b56aab34e6520e4b4e503d873c00297cd785d9d0cb1b0e8e614d8020cb5e332c7358c81be1d10690d66fd7987950a67b5cf97c9850f41527dc55dbc213e76c4feddfa910e4032bbcc7e15bbe2757e1c5ab9aae248709d235c1a7eb762a10b3b1153f9c70c2d893ba9e276105bd841caf0e02511bf4ff4acf7438caa502e9107a3f7a668f47367988d2c29b43146044a60c79c89c3efc4d9a338fb6d8af22287743409c0d81687c52101b9aea00faf4cf3b293032d8e1f543e659a0e949e9e063c8fc923a139b1c007d1b905751ba0d93c879e28f9021fbfce16b4a74e02c6e225e208278b72f4c386b463043bde1ce3920da60b3d156f0d6e6309b3d4aaf689908b66194591eb9e3bb8c02fbdfa5858a9323dcb84c0777198ed4721258391b7fefb2de365596f8ac3b118212749c3bd94cc72d7eb5ebf39d598726fef907c0b50572a88f0db1f7eae2e39aff376597497da0f14dc9692ee56adac4137261d95446073ede4db3c6a03da63b3904f7f52968dee5d972231fe616e306568b90dd9a698f06d3045138406b74f3e5d633cfab60a64e8bec82513ad106b24af9ea7f5225f181b361d54244dd21aa043cca1c83e576be8cd9bd1be36a0ed083015c58b9ca08075120b62ca94e53044da5d67d73145d5fb8178af01de79e9379486ee188521ff364c06f74fed610583ac4a9bf1487257874cc148620f78192236736be486811adf09854dec1f5d7a0bd959f9bc61fc8b0496cd08c23201765281590556f11ab397bf87fcda1604ae39d9e4174ac8b5eb34b0fe2fc4e8f61218b253a6d77fe48a567245c6f345c30ad513e2c5fd2435442313eada5991ed8763e793caf25d7a9f6d15758185ce634abff712e2126d29f9fa9fab40940219f24d4b1d23bc3e5fc7a08da520bf04591c1eb65f84a73c68b9cd1781058afc34f7ee4bafa3496264ee6b632a4c08fc412610ba1a72ec7c016a2c0974eda462c662ed3ead4a1c09bb27e40c0784dfb4045e13032de6ae495bdeb80ad27fd6708cff94d1ffb6732ebcb4bd20db2f3092ad1529083e1d84670ac2394903fa93fccbfeeac2c1dd0068ed9e512ce998887acf0c0dbd732929b1dc50177b3daaaa111a3eb3c007eb80a5a68d9342a219473bef036fff36dfb54ee3f486119034f0e4e12fd2084c794820b37d8ecf9b3e13ef9b4857c0ab2ba8f32030be266ab1ae031ccfaec71ea3808eec43ff9959e6320048dec2533481f021fb94e991e944110a5b340a81e3c7cf9c4870447c15f82711a80582637fcf9e86e39d14551c6749ae5c7ebc11fcc18c41e8a2c692e90269ce08e31149e5e51d42da27604441828e3cb4aaebfebc442feb5e82f885e75896067774abad52f8516444b960d8232161695f38c6663e6aaf0a552a11570bdc0d9dda99d61e554b1e03c74859826102e7db00c78a2fda8ea3434adcd6f1c7c7af55c1582ded020251752a5709f089ec1aac0f01c1d87ef581f805612722cc100e39348899ad06bc7d4cbd1d82113be3e5ae96f7c17417943adc3112eb43d0e4dc94ca34c46efdd8a3ca53c579ad152daaadcd2fdac6cd9d62844759283529738abc0a8e9bc92bb81f3f7a1f9855bb5a1aac4e8b9fa3090ba7a32394709fb821b37400e2fb9c1242063c7bce5cac86938009947a92705e6eb6368daea22f2782ac1c724eda72a4c94b92275e27221cca9114df8400899b0d8e0b048d77da692b2728ebf176342af86b2cf8c1b39064413b06070136a7df0ab17efba4b07d5d8cb3d62ea3d1eadfb887a64bfc97646fb3c9b8fb6da54954f8fc8a9b29f5c62cc685a3a90ba4090457086071023c7ca8584ad430a8c755e1b60ca8ce36a84ef1dc182675d23a677cc57f9d07cd74961f13339140337304aa2250cb2dc86b81d9d6fcb67128aa80f0be4e772fe4bef5464d73c4ae058122d3b90c9da6efa56e12061582af8c55060761bfbca97a7e6840dce3caaa0d82b08327d52cef69645c0f3b9c14f37a13648fd58a2d35ed49ee724b1580919044629119e6cf871e97ff18f15e242034c07fc8686babf4855943f1881fdeba9c58c1aad0b5e5b767142fcec72c3195668ca9c5a7bfbfdf55b8c03e777dee6e69753895fd90ea95deed03752abe95180385d22d5e97e0ba2e30d48f033e5c41ef08569b39668175d0451cf8c507ac7a53688cdf82aa971f736d77f3853c6db3a476d4f895d1d73750bd53394074dafc5ec5095bd528eb0b650b22b12101adbf2661e96350d0092322e468d94fb40285e5471a0e51a2e5109086b1e8a7f134c97ac0194a73245ad104ac9d8a8bee55a0b79ce9d550b8d27101c3256d51fd83a5a245a9bd908b97850f2ae31ef6c800dc7524d3973204be3876096a121cd6b91c87560cea005a2a9840dbac882e560da107cbf2a7e44faa02520aa6d733b645a7ace6644815720e8162617c640a00f4a025a4427c82240d7075942fc34fa63b72ce749df3c6cdb46f41f699f2b027625ac36e1c32a14e71eb7277b4981dccc461c9ed535ebd8942e194e23e5ef5c76b9c8291fcf033514719ab8da0fdff4b88ea1e9409434383803185e32921d61352fe833bf1d99f33875bda59e3e0d0ec680d75e59f4e17858a331954acb76dd6115853cf2b54056d194a2f2e6be6cb0e1a9efce24e5b8b01e0b26a46b45cdb04ad13b24871c5992e44671067bd0bf7de1026d0c91252c89bf66030d83c9736c0a1a831952016e4958eb08f58e2b79458fed216789319d25256063232d333015f825f782ba1877bd319756d049ea015502620e7a486db1ac254003a1dad0320832b92830db9cdbc197bafac222188208339d89239e557e702100843ce0e2d9663c68b1414504535027484d6002661754f552621be0b4837300924619a33bb87f8ac419ea2761b0d5020db2ad0f574c40c43a58753305b068e1fbbdf61dab8938f28b82df65ee10e75ba0fdf5fc3bbfd50eb39d85a94b2501c85c8a90fd81c109c14fe1e2e63e117429031cb2406368c73041498ba2e458f8cb6dcd11261c05e4f9bf6d28e7c10733440714c34b858b3dd5010ad31bc34b15d622957aebed86213643beb33aa5691709aa0c6a3519ee59fb73c4457959b68aa6510f83df7a3a3730e2878f1e79b8fea3343d353905c427353b4a531a61a0946e8801f8b3b1a47c750c9057718231c1d654120e0b4ff0ee1dd77e6fd8462be72ba300363123558e6eafa4d38a4caae22b811cac72b8a26cdb84ee7d951ff7764b2b3f7a21700102b23c02d41c13e7637039f5db6b1ae85525d9e2458cbce603a7a9461654dae6954104b4e0b9de72e69607ed684b380d2835336b9a11c51c8f02dd9ae34d0f9283355b3fc871d775d526843ba589bc3fc5dfd356944cb16d9804c1a068d587b7e1294c4ebc2e944c84e0ab873eb9af26c32a75900e6c63c1f5649e9af331b73c1b0b59356c22e84a16733f80a4727cbe6a93782a71da5fe299897104ea8cfa4cb6939419247906ac585951c025b286ce24fb915d5f93e6ac1721ad0a1d3873521a2b0d35f5f82e618f50be5002936528064bdd9d3bac8595330726894547a9e253e664ec150df869310974c634d2703da8895933f06eadd89995903158b7792b5949edfccb85b57fdf04e464921252c7ba2187d9723588ded54ca18302cebd0e500b05ff33848ec9e60dad76c77f2a3dd8982754c5ddf662b45bf90792d3441d69dd863d4b5ff67da9d4c54ade52d87e87fd038f3fc8ecddd89d8dd9daca69ffca0800aaca8a23e0a7797d8434e02ddee84095fbae0383698a6a9c34bc81391e645860179428c7e3ca16fa707e1536fecdaf1e4cd1a3329a7780eedfd78e281e671d008557eb42015cbbf2a1bfc3c7a5f67306842cd265c1982918903aacfbdb1461df3856a920c829235d20f8c9b1cbb88d6f9f2f725f0373e478fc306f93a54cfbe278453b79438e79cf9ad3e412f05bd86cbced6544ca8c3f58a4ec20ec860d945a26e98e6cb980e14039007837380a954cd2ecc4f0207e120ab9be99f4499abf521dadceabfabc5e8b6cdbcc1af6ef529cc08ad18cf71f13fa2579c702484cc472b6fdac4dfe9fe343e0cdf9fc72f489c763f31e438fa063a5f2d97909e68e644ff488f1ec61f54ca19d253077d52675427e077c9e1ed00c7d8d929277ed2cc6ccd19ccf85d95b2c5b533db96833181c401074ae349ea508fc41fb0d2599933c5bf7ebd70a263e307a561eeb9a8e2e3422c6dcf51fa7fc2a3905a480f47880e8db7140752db16703e8d273a0e53f461fd0ab8ed365c690f05dcffa972d102c2e9701032a5ae8e6adbf4b7cb56976dc2a8b0971ab6050d82d025e640d1cc6f3a8abcb44c69d952e2fa9020da8c226b0f66c66f61c210a09f0999faedc9bdf23d0263198e893255eebec6a2ed728c5cfd07314cd0344a6b7bff49e8ec20d0cc432a6149acb9170c3daa77b3848b2a9103ab5eecc616f4f95ada8df175e573ff839e0ecd6afd73d13c9bfe07ffcf6026924f37a9082ae5e09742a0d71f234fc6e4f46e35cc3323ebf0d673dbd73c8b43834de344643f69e644642cdb7887b432283ba3b111141d7e91898da0cd2bdba9406223e04bd1c3a6f4a26f2d8e9a70d55f33f71202be4c4f0706bde2aff6b4335728c7a51b6e7fc53ab149c47838bc2c2aa1d73a9fd3d0d416336238b717568895283d513a070f2b42b1f613a8a0f01b4294520f0c588718c438f05c0675c6640f637de28040dd47fc6731809abd12c139f97192fc6d36f0aac4704925a17c74d31fc2e4f9846893bd68a55cc2fc067a007664492070f16170935512cc753aee30d1f66ba716740be5fcd11f2070f59001b2d93fbb905dc558211ea0493fccae0afb678117c03a42bf1b190613e61d51cbaa4a39b8265581d807a8c8a85da72689ca74f5c7455fda7222e40de6660f14d691d8c38ca56b7714d9c99fd59da69bac114ec4139f0260d14a0e0d50ad4471925f2f1b2fa74e4dfdb7130a1438fdf9ed58711420d3d7cbdd2300f0e04796eeabacc5a43c24485ef52442c323c11d27becda01f34395f8195431eb268271a061390f4a7e44318558e93c37d1e3d8cd8ee3dc51b6b22ae9e0aa842ddc71ae39625fac6e0cd9060d53bebe2b0251e478796481578281b14f4012fe79d5f4405f235e10e0b7dd4c5ba16b8cc8be1404b39382a893a7b000088aea853f6b1b2a18484f6313ded891f50e0121f64222c844969a9f1f826d8daa36ad4ef65ae830d2ff48e23634f0be4a5918a2b1f80b885c48d4fd1dc9a6c296e507efc5e82825a84ef8d30e6ed851095182a3274fc469c654fa669ac0859b87458f77386fe5ea2b6761156b7f30b9c65adc50872651549afa4354368420f00402ad3f2cfd18a5a35513976f339ab92bc4861183772af8044c9e15872321edcc81a02f8bd9958cef3ff3c7f3a4f73316c6dcdb38757fd6dd666afa2f625b73999063b068deca0e7a7488e11521d0ec81069d947d88ca99ceece387abf612d75908596d64a3c8da0975f297e8a628650f44fce049f433b7786b2fd405c39e6506e24e1e8013b423a7622df119f2e5746807cad10104457b6d4c8cff1177d4e3a0dcd4b29e145fc7bd24e71bca529facf4abc8833bde64f65c05d21408c915141c30443614f28b75a82da08a0c0790692fce4e841d69ec0353e7f8df0016ee0e39e2c4eb8d2d3cfd0c40b4d56ba3bb7f9e1f491a7f3fdf6c624dcff31e9ad97d105a5449bcd5d718049006dd0a8280965b84ebcee77d39224224250466403e29d4b711ec29154587cacda90b154c419807f9589d8f1510772abfbc3d53322f4f9c10e1ab29fd8af4fc5c89e6956cf08b749fd9d009f2cefccaa47459a9584151d66faa6444f60b8acdea4956a1d7268926e14687f2f12b6a474b10469b6fb4e26c9b6a93c1b35c2551ead681b0edc8d04c2c0e972f45225cde5f6436ee8d58a3f4dd3b6baafd08253c56f5c6bb7db428be9795e322700d0dc0e3077fb7fa89407e3ac1d3b9b70311a1629fa8bafa5c7aca9f9d02f0a5b0880c3dae0eb9b5de0bab0d2664a5763549ccf5180671fc8de4068ba3f110f4b9c23421b705adffc61bb2fb53fca1135f99e64fe0def57a56f54d9b0f9305f6f7a9f022da1677763096a63c842d993d2364d088f8656710092709cf333fdbf6ec8799b4429c03f77c1638a769729e634af7e14c388a07ca18a1636a46651ef819035a932fc28a7be7fceea5633179ecd50b15558748b64c9a86fa82f537c13b6d211332b609d9dd0ceacbf403822c88a0f9854271a4b1d853697163be34c3ddaba34889633f622a447bad70807702f684e9843523509e371d3d6cc5124024230d168d376ebab3a099ac5adfb6d07cc70317dd4f826239d0017e073f20310c9c76859ff1f5dca2c53aed7a419d2ef1f8f0889dfa4452c782afea479faab457698a726e1fa306638bb15a8657c68cd9626ecec4a307b879cd04874b29b39f37f3bbe3ee1644783c08987df733ceba95cfd99c3f85aacfb4f69377d23bdb8e0f203fb7c8b9450bef71884f00e6c204f434fe3890d6ec9a500056c5c254a2d48c60dc3f05efd2ccbed6a3e25283432e79935a9789e1105c256501883712061cef5df1d6abe59bfe5b8a67b8660624b87b4c401623660f5bdfb35d605009ce410be2b132dc3edf1dca594cbb5ab9a385dd00d7a54a51a44629d838d5b00b059840d7451c5a2852e459ca33c1f53911f90b51ce097cb0a8766ba92c05b46fac82939f2d64bc71eb62847025028ce06adf62ac43cc49d9cd64f5069e2c2b15fdc97329142729ba4354e5267f8d3df3febd78541359b944989afa0438f22e7e1741b6f66be88fcde361bea0be4bf49aabc51a61f093806632bfedf8a9e0cbcc8cd6a921a766586f7a006ecec0b8e828160b4627d2af35358d8e54ec8b088c5f23a097259225bacfc6379265f42bd6561d74b1d6f01aa6ea954af2375560ed79a930ea5cbbf5426bdf742213861cf23577d0d7b050880e1806940d0e831d9ffda82de77938882ec5c8602df426c04f0f5eb49fa63694807cad3012e2b259ef33d9f9caeeb03c40206877059b20aaa4607fc7586081b7b738ac69c90b18463fce1710f0c46fc15950de6f275575a46f3a5bef33c3013425764d6c147c6a06a2430ee8275720b79ae4c4afc2892a13c9b0786be46eb1f1aa4598c596851fc318f2c681067ad4d60744f1eb6f771af9166c7944f60991a64bb9e0e85920970d6ae80c6c8d09733e4a0a91b68e2f8e64a3b00d9783359eb1a53e5370090048f3172f7b348c9e63ded27110d8530369412b1e4e012af12d5e14036206a81ce493e4b782bc413c281a1c07873a20e565fc634db31d17f8fa1973bb6a4cfe1ddf94d599c1a3babd428aae94e56960315e3b59e87eaf6f742e3de8ebd6350c0c3869eb8685d764432ff22068579010b266d6cc70de14454ced449ce60a37aa07a423f71ab423c5ae34a1b9a5fe1cbfc279e8e1ca3b5b745bdd6a81ec84a9c1c5185382f75925035cd30766394b255796b95134b3c50ff9f0339de0ff48d8f0503fc94c2014dc68d0443b3dfb56d54ba8fd6e9194713007ff181be845d01d8dac9e224065744562a67652897866022f6079906ce279ec33142a9d2ea9a983f371c45f5bb9dd41f92674b57b800c90b8ef707239f6de85a7d6c4c1678c538ec8d2207e9ecbcda866fd99cd449af803067fb497fdc524696de6d756a937353031478c991c4899fbb789a4f14815455289f224ddfba4c353aa9a5adc5d29a4d75025a07731998994550d7b0b040fe7a2231531eb02c58e3dba59a76d7c186f50bb02ae587907fc49687318c0c83f1cfc4713c60ae10e73c600ffc0cd7fc4d51e78312852c9f12e220c2c8064aa2409cfb809e95f9530cb7aeb526b00b4bf90d2fee3f9c81b4277a4cefeae985cf59483b32494ce33bb27b1f6deca9062b491d5f8703a6d242c69568bb4d1e11929f3550e52a6d3ad4ef0faf7e0c92ca54477edde9891f6c39f68e2ce5787c8c09df3e0225bcf66fbfd517a43b31c3a3347fc8df0db7a9a142498021b544954f4bb5a0a320bdead918c17cbe2893df7de38fa42cc85364ea6656bcba540e3b6466b98e9c154be578cd95911988496c3dbd73c146c491fac7276933a1f5436e39094d79ffd07125cd705097ac829cb5e72647c7cd71d74d92a329bda456839249bf6d0e1f660c3b1a07c39f9efe5f92c9026fb6f662e1d14c1ac7ad0a5e26115c3f77a1e08558ad91fb03ca62a325d7378629c4676293de1e1a4357a429f3aeb8a3c7cd7a9020caa40b2af9425c2b044495599f2976e9d527a948ae47bc7d00c96b2bae029b5cb30bad7937e883358d371fcac29b8f27a00a7fe6f8d6f1621d74a267ffcce19bacf36b585e59abfbc75f4ad3824b400227e682f1f9c0611b1ffdf2b684a97f6f67a829bc6d31350b2979f00923b462317fcfc1f9757beb3978f4f08acc845cdefecfe249a7c3af1e25cbf35d8545726828f9830cc9073dbba3b8903da4bfb55e35512a13eb42de88b8b081a28e203d94ec296fc1b83e0df7e64c576e12dbcf69d94c8005d811aedd5570bd5bfaa2c9bc21d869d5d934b765c1783ac9554cec3c70083b0a96809da9e91bb5b603d27c2e696279b9b529e6eff168ecacde76ac4bea636bb76dec951184d5965cd8092d822a2996bdb2d2a4022cd541f968f66e43c339ab2fcaab4640548adb6cdc4ccb339f7fd4b4570b3751b1528a789e1a19fe30d4a853bbcb78b8cbd74f74a1ec7961864c563232e5363250a6641eb3428b8676958a948400c35f1c936f58e8a068a71d58b19c1640106819002f930cc2badc4e99071f9ee21956f2e48fee71f02c4cc4f0bd06b01ce6f0f946679f7d450a6b83fd32c8da4cb84476d761eb00cc12a01d2d12f7247a2bd0897437a1d523a5e900ea0f9382bb5cda65ecc01775dd2ffe104de3e424e8bc139bfe8efeeeda067fb0a0ed4dafb71a5e9da35dbdc45c3fd8f9df97b8e591fe4d3d874b592350c513085fe41a26455d933204dc7d1297409d23da0a2c084e9786f799f8ca782707f19c25e5a9bec573b0d66d24f71b0ce8f5a9c02377c1c73979b6238b83468c44ca847dbb8212eecdcf680982d6deda6ee990aeab2c3c309c2cbc09d0f8a4d4227fc3885b6c96c6a9cd4d1ae809a9b3aa524301e576118f347a8a0bba7ed0778a8adb788a1b8234014b462dec32a7bd747762ddf38cb0d42df08914ff21ee32135f92d26254bfdf6188122ce179ca2adb8ad632dce5fbc5b34a1f3c35b9fe93d705e688d06a528c6a84352ae7d81f756c0bb5b7b33ffb974483588931223728c41e925c3d7012927bd57cbc03cfffbda9f9722b18fa793ff518357fe2d0507845acd69a39ba89a862eccfcd82df05f9f85c3708bc20f6e65e9abafc50e8e15ab734120d5af1b654b3d8c9386962d1cb4e0011f3692e8e25e6b7886c59b7a6a4a8fc5173c51f61b688d5811942c9c42686f4162cc3707b8df1e2fe17f960c840d68f38e6fec22c31aa07af47e68e3f962f17f6d1a77f121bcd3aa12dbb76892d10476b9cde8f518e2f4e03086f84b99e0bb60b2407f1a62b9074076d75f1395d4290b505c838914e7b0e90d0855dbf816492ad337ea9051442e4e242540acb790391ac4cc4586c8794021461ec0d3b7aa25fc2d32ac8bf03ec3f09e40df926e4c21e9379b75511e22167fdbaf30c81c10666d2eac4c00ac4282ae04d648c7df0738620c9434e80f0ef6e6fc420e6e44b27c2170b128037b0e3767d8047f6f9fb60b7d60738a60be81b1d1dd50738975e4616cac00f560422ad5a7107ef8ac4797a1a98fda9153d41012b5a9bb4706f4956fcab53ac07a41bc31a7b1807a4757c6a0954ea0350c4087b4817624c4890c9e4a9762cebe74e53a783efee264c06a4fbe49e63f111380e96f5a9ad95ee336d0e858660c94acbc11c367bb660d30f700452a9a169344bb7b322290924fff54d0edbdc95e86716dbe1a1b4a55f6bd76f182e9ee858e50ef4d333b55870d6a6efaabdf0e8fac44c4c1408017c4df782b1efab2c69c0a93da31aad52427d0ff0a7ae9a320bfbdecdb97b8420de903b7a394666326fd2b21baddb603f380e44af635145bb5f544ac5e35858de10ce1e5c3ebb06aad45a5275a3afb4bd9efb5abebad12233b11d20a10410fb40f7ea6409e60bcaf303d61ef904a3a27e5faab9839a1386210078918501bbe21bef6c079325739165d1d59a743bc15768a9830d1f8fb80a0ffd29de4c2aed968ff7c90183d05bd253204bd9364fbd39c260d01016a4788c20330e37b03e219ef25b334de883343a463466d6ee5863a34d666563175ae9e3c5d800802444a30364976a3742f32d87c1478035cf0c76f47f6f24861ff6d38b3f5f8926bd254d9e7b83131ee81e6b21cb1745159a983dce6c5033145a6703e4c84d7e89361a8f9e81dbcb7c4283a0e1f4fd1d9ebc8806c1edabc4aed2c30f9ca5f8738e113c50456629b32f14f1a06fb47b7b2f6ffa46d2ff1d3c7ea34821f9ef7b23205497afd76096c1c4c2d46431db2c527a06363195161a305e1ddfa417cb07f649b2eae77ed15483d4711a2eb3b65235343438924b1caea46aed922be26028c34a6535ce2b0e400cec0dc4488adc4b9231061ff25003b41a11fc6a8d4de81ae06c5ed172fb4662ecc73bdc638a358ec1063915bbbd33ce2263880ddf46ae3a8c9ddf723df42b0349cbd063b3e6504f3fbd4a81529e92d0196f07ea57cd0189dd49616c8f7ebfe35bc5b600d9be620800ecb4f5fe2dcc2ebc2a98c94fa71e6d8e85caeac82a6a174e7a6d5c802edea6f5616a48afef2eb2c4fbd2f994958ec9db589ef10bed6b60fcfd2480a85e42f6604bdb9e4b9625d6089a463dae01bb2330b41b82e2c6c3c820c92136467ff84c08be9f0f6902f030dc84c38efd5b2b8b702941d799393d9dbd0751bd57002ab99945c5f7df677a2e79db2993d17db8a59a34bffbc261b7d0fb318a6cc579fba41edde0ef631b127a2042f62addc00579912465384bcb14826b0088ea618fe72fdf073e6a57d719ad4393ff86a444f21e9840cedeb939b861a5fe34ad0a2ae0cd1ed656c64f3bf76a15b8b4a92cb766d4b35719b5894ad43adc8f81f0dbc05784f7a2aecd92d8f33f3e7451eaf06af57034077231d3125cfa882a5de3ae8d29f09b6a22e9bcf256b1b3819f0e065ab18ab95b194cd5330bc7a45a745537cbcd028a544881db1b4751c9a877955d352e38e7a0633af86b28886d20c56794e4fc22c75cbb1abc34512e54ba74e6d560527c0eb7519224b9e4c460bbff4b4aa60dfa235592669b0aead6a94d4efa2f29e8454fc19928db4254c5de22ca3b8bd5ac187e181270472e4524342ec55831f04e864b61e6dbb49858d225a2132712137bc4bf1091fdb621aab751eb4f5a488bd6fc172f8f8b3bb0a1048208ecd03c7a513a7b5d7fb224971433da66383ed55da6031270314397d410632d5b15db760cbfdb869da2e127e3722d08f449607644cf544cbfa1d51af62ff1200121ad3a0e98ee38267fd7935d8beebe80ffb6078fd2652ca600055f82fcf8591dba7f87981d084d528e4cef38d6e1b7211c3b460b2f26341c0dfc68dee9f1bd88b2bdc37ba9fdea3803421617670a88e69c8d63fe504ab6da4e70e4e76dbd6078c82e627da22838d09cf2402ba444033f64b844e51074bbb1a13822dcd403528b5fe9f1877826e421a8a5cf36d0a3b9169940d1538fa3095e401f6bf60cdcadea69b618384a3fac058ef4cbfc74d77c63e2fb46fc750ea0bafe79228320bc023832506f3266bc76cb3d91ddcb68c82d0d81130818ac3ec677c70c8d0973aa1f802ffe6ff50f41e141a0af0fde3e813dd53a71f37b6312d48da1414d5ef8cac0ce038b8f352c1aa9070e9aab6f2a59c6628a32cdf435304e92ce9eed11a9fa892c440f26dd1b6a994ab10fc384d52951025fb7fc38063713cb45b2d0be4cf0f22f138d8b32704a9bfed56c69d8f9230c35cb597ade18bcf638df9f20d0c92bc65b586b4f3069949a976c8d1ad027a69578a534d3cbdb11088725032778ac0f7a577a088ebfe1f4c1f4d5be424cbef43a126dacab92cf311b85b6e12f9ca990436e92cbdbc8af5f05b7d5eec25740d37b6ffd9a04a1a570392128b8d605720f5f75501a1beb0db312485d3dc3a4c5c94b580b9b04157a2bce175736e110d0fe019d08bc25bacad4d76b88b76526265ae84d73f7267610e8e03a48e8d8c0357859fb6eb4fe7fd36887f93462067490e883c1e76ffa5d6db761c09e3322d0f01f87ab047b082eded141da2a88add7fb80b4b6c417c585383d13d9836112918b91e9b30ce180872cd59e1a163b162c1ac8fc1976fa33b6e0a6f5921474dee891b08c0bef049de2c842f4096b5a2d6f8064f7570290b0f2a46f467fa5cf5eb3b5a782a56f40751b49671d0abc8f85f1187ca36864746bebc8d0344ba2229cee3eb3c2e36728bd863072a68bc0f5b74d09ecffbf61fc7828b4184a4d43aa8963dec4666c980de7bc6154f780306af9064363f2db13588bb4fb274b525d68c8612fbf4666de39d18025d6d86d790b4224768b247edad219f5c34b6272ffe12179910421588f81c85a625b3284a471cf3c7870ce26c3e2a5d1c6e30f3f557b248d0b63cd055d7128c179641e2b20c525efd24dee2a7ce756fa1d204cb26272150c9594797c5c3d72899f9db90b22f22939a76eebf6b8a155cac0ebf215c041768832d35f29b2d05f38f5e627844f0f09680ab05ab33c3e1ae2a4a8d6a628277110753dc96e56eed380e5c2ade820cd24daa63b031c2f483aa4f6f4c9be0c7e7bce3f02111071c9cb6b63e8da717e70bd680823e01f11dcf82be763832efd3e00d4afcd7445be4e0d996822f22b7d9f05b3b84bb4b12a3f40fafa4f1e616dc1d8f91ea633b3cbf8f423889c8fe5f74215567e86def052007b6dc8e9cfb50ebe808afc018d233bc8d189bc1560fb1f48ad24c6825e3b1c81855172c9be2f40b2807cd9c270ba207b748cb348ffcf3e0e65c4cdcac880b9765c1518cbc8031999a88adc1e23d8a6d064533922cea30064116c46e062e74292e2999e5799ebed62936a9cd26191e282d0d4d4ba9d4c29fdc2428780757c3886914129796503d51b15c34861b83149d1624555b34e1e4b882f50d37836ccb23cfd0bcd04934a9c9a2901b3647b406de12c0ef1e8b57c8955bf14905600d7f446462d362d589ed7a567b9f8259a483e8a0bc0b7bdb6ae715577ac09b4cff67d14ae9f25e111b3122ec4e192d78b909a979cd1f3014a92e225e52327bcace9b3a95013e02087c7d88caea7a4fcd826d5adfa2626024b4072c02ae9f41ea9c5708f18302ad91b4a67ac3271942761544f7d63e830a0f4f9ea8521a7f8731a6b8042cc52bde70b300313676659605251769d1f4dad332e0b028259e63fa111d00a770a070179126aaade1267e76ae6d9f720d1ce8a03e0c47a265c723deaa4247150787680d693ce349923cdeab5aad7095bd4529fbc2c8e961fb490674320361c90f515e9433d686123dbf5dd7731e0502c69c984972ca837c32af21a3a24277e8d65798bc0ba01f118379770851df1f51859f60240621fa4f68cf0c05461885b37761f0668d33ca32ecf1bc008aedcfde837a3c953803d892eb6dc7e862c9ae6f3ff23754b730143120867113cbd71f0d873ca977d3ce7dd60c8941aaf4eabfeb4a6b4dbc474db3e13371e9431fb0006df790c2695c77532656e16c14b42ed677304fc852b0843d69df53c7b37ba74b0fd5d15c52d3865e16429c1f31426730f699d4c553318431dbd8084a3c23f9bcd8ea39067ff9578133561b59aaf94272443a8b1d03580d0159c6e707f607d2ff6a826879b8f5a9899d3d4ce59ea9dbfb2f31261374113e477407b5ed887cb93b4c77fbf6e004ac0ef2dbb6ae768019c20da6c9a6d724164e649532fcd5cae23ba8072f7939a3bbf9a28d06962a8c4a54a87882b489812974c031df2e20e6d5861929e2e68fe13d3a184aa598e4d14f42625566c3f9dd58ad2ef64ffa50280fa4f70e9d056bde5d1b6f81ff4b29712c715be830675cebb7d8c99d2e0aa42e78a3b73def40b6a5316e980a221ed8ecd0da62a529fde7cf3bf52bea4021773b3299b08ca094df4653d8e230ab5463abdcc51a79b2e2cb56eb68f412650ce9fc1759a1a5e3e6035242b5e5cc34a0ade8545e740da56a3e92ee57c863a223103dc9f2ee1702a763de4d86a3d7a18926abf521acf53e51cab936361fdd787dbffdd5f69379bae338f9fe5e505b7ffbfbf9a10ae091c4803a0b6e99a31f828b2861fb4e04bc29726483dccd871b1ee9452ecbe698272a6d21d5e31c2655fa1e0810b54d203616882776ecce958db8b226931e584b66098400d575b0f9fa3fe3b85710666f85cac161d4bdb2df6c57a751882f5824c90034b91098490e66459fc86e3046baefb52e1f107308d81b762e0df913ba48b69005df7f1a7184c3ac5173a2b50d6f812df9eab7af674a1f8a565ec350eace271b52c39f195a08000e9a187d7b3b15602c116c77fa354d3c7ad3fa03e2ce78c6eee7020737931cbaf47eeaf840407a8bdcd511b075cbd26bfba76f4d187363987a9bc4f92f71fb340a6f208f5b9c1b08f30acaf52fa2094beee6525b74e44bcbbfdbb84f638150f748401cb4bbbc619a03b63ef1d57bcc280f926a066d8e71241f78e0e50b95c73690a0824caea34d23939ecc13f3be14459868d62bf048054323e77c608ab1b068de1b8f5e38fdc87d684f0acf1eb5ba6d0a1b75d9a58848bd13992ba24175a52c56c340b3553464bf4500c94b3ac701d7f6a94d98f18129e78aef1d7ee312b57b88b3f2b5a51e5d19043611be578d26db4c959cd7256f69d31fdebc6a5bf0912d63a0eaf154b4f2d9b4254edc5eb43dd642b579da72af092f6a23461853f454a1a531c23fc5ce89f9a0ae481b04ee93ece1a0e4eef3b1b5985c820ea90a73fbc1656be31a40464ea3884ea674cb78710bba1a14b2ab74fe0d687753650e2b2fea14d187eac43b50bd854c9c8130c930b096833b1c3f0559c79160779cea92c73fb6841f339d9b361f5105272dddd4253615c87a293e0c075e4630c8276d79a9053731f4f187fba5c81c901475831a2cba66c57b952c67087b5c43ad33ab7a9e61a9111bd12f7d23bec4a074cea155c79a8a4d4c4125b65d8c9f2787700dcc5232e732b5965b6844b29745a1340bb7032ffc36bce1f0d705eb0ee15a3334db1c3afa2e0795bf51cbee542d1c33da0c554c9bc89cee000b9835ce21c82cb543eeee853ca99d8fb37533a553fd6d9012877ce64910999eeb863d2d98ce0897107b14f15154664e20edfc991801c89061c475b6340cca8ca7b730fbff63310d37afce35bc0a595860fcdfead958f717cf775eaeec39d60d6bbabda4b9b6dc8d62fd97aaccbdd9786d0a4f15ca635ee7a9ea710cb91922700d44abf2251479185d4449e2753d98acb072e3caa78d04e5fa140c278b113142b6a8b7bbb9e1cd10986557999d64574e822e247ce17a707e7d28b725ecddbbab9444874dcda616eb120edff676ed21b87adb0bec41a159e2385203a1f3419e038fee7e2ca45b186d1bf231bc1c139772166044c8537976b1b5d3b50d76be316995dcbd903a388af86cc95f8c9669c6c61dc89525f74a3e14486874dd709a1737e21ec60433ac36e651c924d5d33454ef491eed78409a1a1d82cb72f3c4622ebcf6110b56a7404406cfa651d86311268891a5a775da64a7d4ac81418c917c602af19b96094940350209d929c644d097dcbf65a4465ae351762b8bd2e2e705a21a1fc255536b11263a0e2cb2e030554f6e23fc45d64744994236fab58ded038a739a8bbf2de014aa582e76e85144e9e7a7dcf15c12df22657aa33a7f3832ae8b97a700c5d3f489fc1082987f31b085715ba22151148cb0a2a2ab2f10b013c561a7935abf6397a5b7edb057f6c14f2f71ad82d219738b76d8d38032d3c80501a8e73f8d728c0f10a0f136eba05361ea932a7424f375154789d85b5de04cf08d089a7ade9d64cbd189f990c238330de5401ac3b043081c618d194d613e6648313fceb1c432bc6eea0cc812e909dd8735c438c67adf38140e1262a1949ad0005f404e5b77fb28cb36698080fc4843d4929121132bded31c80a897021631e30925515d6d5c767e9db1a5d522e70dd89f50c5b544f131f8313f92f19a4049f1fa39a471ed190de7d6febfeeaee7813749ad6e4ee14e9cfc2dafe8c245e9ff03a673b83e9b3dfe57501f01efdc1a0d393afab60f9a842a4ade14d921760eadb885007745fb693bdebad4ecfb280a03f312bb78701facef01e030e386668491c37f88639beab6aca7b97c5cea4c3cf59de8c9a502206c8d03bd497c5cbc221abde08476305a37f0ed32e81b7c5028384d01ea4a11779f8ce0144a508ce9cab44f3f05f4739375679f846bbf0bbe13c4fa4191e16e42dc1f934371eecbc0cf3bf4e1a03456260e44147410dcada27299bd5557f1f14c77548450cb51daf0ab2169bb5b952634788ed1581b20796740c3916ae3df5685208a0dc62c4284457b9c1b378ebc6a443ed3339fa77fe7ae734846952b5a9dcdd662fd9c588ef76c251ce3cb0569dc67c9d520dafb46586e007b913a71cb1273c5f2bfbc056c03f159fb06b1cdf9f5eb208889efa1e12a0c6608dc604eacd8d710fc2a4d9905999b643d41023219e1f91e56af57941611c4ac73fb7db657c10ea66a294b35ecd35b3a889d8079fa47619058a4f9408609090b6f78c36e27824c31ee1962f35504630c34e228b853b4a2ab41bbbaa29a20b09b3d18abfca88bd015499b7b63b0dd3ebd6b28dd0f1bc44da3ea9dc4accb8039e683fe59bf308000b3f238b3879080091fc77b51fd01d7c5bd30450947569fdc3cf66da5aa68c39275684510f5dcc663c4f65cfeb08f806ee6d3a50c4e4c43a550b5640e0adfb63354ca5c58a70b75da447521f2b556a5cbf3f0ac130862cc8a34ee7ff8dc4db5790bff5542f55549e03434b31482c733906e859fa1142ee9ebbc8973860e1dda07bb1c32a900d89bb460b5f623b71c4f726d5bae57c1ba6482d96b960169523ed30f1bc527fceec1dd33f24cddfc43d2d20a438691b921fa5f38de530718f194086b992ecc96b938e0b554e72d10cb29b052119c2caf44cfe770a35834cd10d76f7ac5a12e7bfd71a80eabada7952c7ddd1d80f8c56b7d1a3753a3aa1d2cc69c34e87efa8dc93a21cd9d2b09a425c6aa02be94d5d4e37b6a47feecedd421543d9c225549315c3ba38d0d2a7caa8ef6e7a94b3c3d7490bc558d0c3b2c2774447c53efc1737dee913fba3fcdd113ce3f9432c1c5bbc243b2a7b34cf9ba9405352b5e47e882bb9f70cf4b11714b5ca3f095cb4f830440c98923e37a78c23171cdd6d0dbe1f8d1fa14c0f07a61222ef04a2819f18d45f5694ac9bdb8760fe058c5ee670dc6af6198a792d4114704b7af7ad495508bb2712ee56d58e0118b9968bade343d9d55447de95543e85fed8d508c09101ee686aa0f7be97ff876ad143738aab484ead93c3eb398cc564eb0f9baf3c3d560b1a6530f905a81bf58162e180c4dc3191ffd8a3ea5858404811d9e8e14c26b330c8736739b7147f7d8811cfb9654c7053a9b657d403722189ebc70996ee26aa127f317bbd9f8a3852cea220d61851db42e5880ab4b6d2216f993a9086d2f60e7dc5bdaab7ca0c30830afd32a5ffacb3ecaefc6ac5155c60ca9e0e8650b62dc922233564f2a6545677546d0079297944506ae756185ba6ce752155a381ae65a832a7dd68c4239ddff63e044767de51e2e3db03de13524876cdc365c37f24c2df0855961d14a6e34905a030cf400abc63737e01ea5cfdff5c765dd7206faf798f88d02d4e80250f8405bc9b8f700bf6b9ae3a95d42dee240a40703474fa9088cbf25d1e915876de3bcc17c2a4fde942fb4721220f59eb1fd37ca7a6e04279a79ef74659549e175c215d66e0174a2b82450e6522f429017c49fb6243dc0a444d8a70c1ee6eaf881a3c3777f1df35f5829fb2baec0a261a9b992b054c7ed291aa570ca8096817dd57851ef56ef52700fda29f90f8bcee150fb331b72600eec85bc50289ecdb7bfa98a814e77724b856d047e5aeb685c20a7e949c73f8ee019ae86d3567a034d92383b8190e20a92c79a7445990bc71344df6aba8e113e89ebe89e5649190d3c179b0f9fb93a2e7e8b5da690c5223c5cc65a72ecbc222aa2b866d1a50d5f708b234cfbdad00d8e89c0813d452c27da8893d3f498d32320db09425bde949cb5f2c7a7de6f7b9b3258d425fa97c005529ba860f93ffee4e43e8b51af101f528253a7fc7f99b3cbc304602804c9aa166ba98e7abb803d17a8c29d2e91f8c95f7bbc85e1b6d7c4714bfd9303b5603cf90adeae87dd92036c41b242ae5cf4e83266d372f8471075da41b1e20de7ca472f3bcedb32ee39853a84e02a291d558bd32add39cb8ab42f707e032920509ff54e6a6496cdf983fa251269589327e26b7234101ef2617e899ccb3aac6e14eb695c204ed9a09f0393e816051eff74f165f393de803976e517a18f326e27b8b2d30727db9400256103a776745308a98bc15996f7524f4fd75d7a61085e8c60c870e7101b77c1495f26edb3da65118d28196ab27a6cc58f1c916066c15690d2b2de887952ee7d1cb1f544e7e634ac2038b9e03c947ccbf852d34aa9e0b128a55a6e7c59250114d96166fec0d8378e57c56e46c5a345c423d37083ae11fc80e22eeb89a17aceb7d87d6bd75accaba9807e314e273adf8464b42379b758d620e939d969c87c199d2b2331639a4c9a6ee1bbd3f46081722d073d16b2c52cd11392b7b48a7eb49e142d4b0394e4dd58cb465e74a1c8ee74dffca2ed021f4c3424f0a72f550f60bd0afaca402bd002634992ff124f44b46e9704bf0b115307fe611b6704e955946d89a00c6c053058913e2038e1c789dae7f4537ca3e6dfa5c595444e27713a0048932305c6111ba17f33d021f7c8f7acc9180cbe4a963a2a881f9f0f700ccb01befb202025602533816246de5ecc33940e13071235a82c6f53d3316588d0c0c9969ef7cacdd4f0b590064d3f74a01534270bc4124a6b0c83abc7575d588d4f47aa99aa72073d45e33412c84821258853281aa4652584cf0f56fee8b8395a6978b0a739adeb9042fda1aeea2b9a475d61797bd58b336dfdcef1aaf0e302f1e0771e9e255dfc241c19991d104aeda30f07dbb8a655359000c7a320df6092e44e81e5f6fc9d54afb52e5d886b2a5cce81eb632b281b93aeb4eaf1aaacadf9586cbf84b089cf4c8f8127e503270bb6da66e356626330be66cba0aa830873e76c2a384ad56e6eea371e0d5eee9430554ded5d9a15758eb5a94526cd95b7bd050d54d7d69ea2b0544dfc5b263f8d4646aa4dd81859d4847e0f550db033a0b3b3c2eab93909219529ec2c2be6f8c2b33bd0a525bb209ed82c404bbd8bdc78e1ec222781a983b44c5bbec3661df57e1f0b14720b6f3691a41d0489a6d76fa5fc07d94d5627a77dd48b35f5d22c75918c72701acc4cefde09f7bdac115ad2d379651a1c13dedceee0ed220fb5c3850413e776ee8c7ef8da4014733a9ecaa73e8faa851af9c620e721e51711a992183be51d9b55da20085817818ebb546de0e484d475608af7896197ed340fa0852f57ac1d40a63f9f3b0588cf8dac698fd004aa14680041c23f407b219347635259d1361799a5715de25edd9d4eb20cdcbbeb0459c4757079209e61de14414dc7c24ebc8e851ac7725fef18d092074e143dd5ce053e421b6d59eecb48406cd1709c1ef6e1de229920c65e7f288d0d1e46b6313d0d44b5d4068f7542cf850b4983a7e7eee6b832c5443b6e12e9325ea37ed18a8e35b32f8d001a545487b7aa3790e35a3e7825d6a91fbecb744a2c43b455f9311dfedd03660aa0aaf6170ebc345f7b56d62e6dafa4ee9c8171edbf541e71b035c6f9132e0404a7c4653356d652995617a268ece24b8235ba949095b2205c1d021a5ea23b2ff797b75236f536de1205c226cb6d3adbdc07de317e39ee3897610cf9952a299abfba37c02a7a36f0fb785883ada1f74054617521494ba96236ffb2da1503745d7af91acd834f9513fb6ddc3b26905a2c5240071db266796c6b78dd9e94953101b7b7dfcb18641a7a9fb140b2aecdb77746aa218bdc978cf0ef135f6224e83b5692e9ee50f7c6d86bcc64e140ecddecb6e55dfa02129f3ba18946ee00207dce6a0f58d1d22ce928f793e5c63e3bb9000b17020574f3a23bad263c99e6028aeac862dfa0ee590e49019aceaa2ef29e53a45fe35ee331cb4d9776cc9a4fef8e41d88084d2186d1dfa96c5319f870d11308c16d072199e427c94d7f8ffc979f153e943ecc3d0338922b0bafc6164696a51fd913501575c40482c1985aeae2e8a8b13d8afa015f279c7268815cb1dfa6dc88ba2d4e13123f76aba4bef20b88dc434931e010335c38d4d1e921566b8cd8228bd92147b0820423e58c08c1b8df02c21fa15354edf9b79adfe9fdb2827c65ca6610a5b6b4c276014d6730aed6962e2ae9fdc3359ea14a0c093b83f7bbef1c1a9cf6f2e26033c125809b91b62a31f9f89651be91ff3f9c730e0d97d1b8b18b59875ef0bb36893bfa7daf43625ec66a54fb18be84da645e755e09b2524a57ed730672743fea32b637c042182adfed0fdf29d41bc6ad2994f92884a792dd6a74e8972583a1d54648265d974dbd9c09ef8781250e297c3aff9743648061abcc5c745a2142a4424ddb2b8cca4a43896a30c3e862641184bd5c4a6f10b6f4782489df9af8e27be1d6bfe99c75d426cd59ce156f06ce79e21eec043c0e1e1f943be06644a96e4d71de60111dac378c36e540628feb409350834faabd01c41c721b765c29fd54d3238a613ef34c206163216b5ba6e3587959e1dc8d85305c64bdb15216c32c50e2f4ef7f60a876bfc456eef3deff75500e9e3a16ac61eb814387fd62521efef2324204a3d8cbc1b0dcf030b43cfb3265409ca6a3d13fdde3c884c92ba4cd0a7f25c01540484e0bdb44409a0f1c927e742c5ae8e07692f293036467944fc17fba7a4cdf7bb485f9bbd56659f1c75b513785146c75b2c9e8230449920d6cc412784f94e4ebf1a6405b21aeeffd240211ef362a1d2f3f9e376b784d84a48791730abe28afd4b88357b025891f811ccf767825cc654ba412a1a7d0e620227f2d32cf5b6f46597121c74d1df23fdbe599fecb7206c9ff517581e8505ab69294277e93ac7a2d5c30343f298e349a59cb2d0e01b5f4cfe05015942a3aa51aa03763f1798d8105cf5f4811ce39175a56c389fc5b12159084a6457eb3824cba227997a498f07d1038604925859620034b7b7a8b4d51c3a653843736406e121f5fbc3b89dcf8c87b010f6c916965d906a7859b406ba38149ec5a8462e402c7a01682ad40ad0071de2453a21de8043967f30b969d21a76851b53e3125df3da2b23e81e9043d1e487e1a0b6cfc6e5867d1f58c0d9822144f4c53701c24c63a36a71dbecad4872700cdb18457445756dfce28a49902a4120494803652a9d00e73295277957cedc49756593558b83831a2429920bf1f7c545d7deb79be23afb397093a4655bca16df2fe0d1e31693996258ee99cbdd66f6a23deed74c29b773b477eb2f41bf9258d85967631647eb4590b4a36b7e073b622b5d5729c23a4108d8b4273bcd3106e34e8544db02837c38d7db236c9f4a65c6c4023ad4ea3b8b8ae296cf151712c569c32c888b760c7867d3e85ac0213b8834e652070118e7acbec114da1a1073b1e1c6c6dff7b9104585d7974f3047021fc68101cb3fec6e655fb94fea268740c84e86b24e7fb3cd53d38e6c1221c040dad9cb37a2fa41827b9d793a92738a6d702e95fe23666c0c374928bcf9735818f8ab41e448cfd1202658828f90b028401d7b388d16285179bfb8981d176f6e54ffd3f27d70464b32b63a86c8fecc285b5bde09286c954a85332927b2a8bbd3ff3abb964758779e0e371da1a52626ac71a849fcf20854fcb608c7418bc56b9926cb3be4b44fbe832ef535c23db76d6f75117b89301a72e0ec7c0406d511e2cb1bd07a9ecb7e6d8f627d95295e8b16c593b3de8a3e6e5d18d0eac8adc2dc60254f3be16f71ea3dea67c4e970fe35b70ebc7f2560817038938d74a4ab0ba6910e83efc0bf64d8b3b74539d9678e8a066234cf162312c7fc062b20ed493c27a3fd9e4eb9d090de71992f9f0e2243ac77e4b45d1926b6eaf14232ca4c52b5bf548d63bb5eb9a03b19e6fa92a6cecdfbe680987b9c312c8d20a88f2050617e122c487d263613e11c1406055caef2c657a7e606eda7045eb4fdaa65f0348f925228fb50d223fc92e368d52186bb4a80522c7fa435c819ba45d7c6d70aa967b42fe1b255dbff3fa3ff22fc44ebb94e49cc09e1336fa35087988c2d360609f0a94b5dff91fb72039094d1968592148c113a14289499fc11824437a2aa8bb1fe88012fb5874ec70d424fee26f8d2e034370c03bab1072c46974c7840573a2061e65b0b3d4283c5f1dd73d445be85aff0f384550fea9b5b36233f80e737e7ece6c160137c778743f626eca52611dc8903a7e7e99c921025d31c01f887b8ef0efa0d86fe5671f346c63226a819aa7eabb518231906ab4d72e1c17ef5223f50e3e7b0d3a3394ef6699231405f9fc9d8387ec58e0255f722a852182acf58a429d95ec8b223d0e1d37fa3603b93bd881f6d4cad52ea5b941794799eb4808161d203c5db8972c8d00a149d5b35cabfa9b71a57cc035c407be0dc9391cafd277ca525e75deeaf7254d15ecf083eb52d3e914d96b5a785540cd8e3117a9fe359fc86d2946c899eaeb5ce9f8b600fc014842ded12bd432eae707cef33eded9dfffb0415f804a60f0eecef54a908687a975bb57361616cd9397d81c56da8bf79b2142077baf0a25de4e038c9759f628ad6d922fd81652d3ef5088972af64ca1e2e81ddc4310760ed3290fd5994cfa19ef08cf963c1acdcbe85f916c8e2b02ce0d6c4621403e9124029a856ad547bb5be35a529d2fff2ae7324f1b2bddc0e842f1397a46fe9ca0fce920a218d7c538234995406e13eaf880dc7b893c60109e842f2b5a45f5e43fc4caad23f77e7fd794070e23e6600b9bc86605b4c82edbdccc0fc1f50ef8dee6a12f147d37b23443f56863f6a5681cfc0a0b11243294614e97771b8f5989b4004adee7865ddc4f111afa21ffdafa69dbaa2470001e70438472e560c1fac5ac869056af849772398e0c0ca8a8b2ba3f12e2042527e01effe2e0dd803d1f358c8503c0e03f91bf0c8389076374f522b42c6dc526575f29ea175c323c9c9b8300703fce66457a516d3a94f13edba559e61bb6f79ab514f0032b221cdcab56b4989205dea5d9c1bb63b988ed82f0e36a0b45256592dd9068e16f4a18028246ccfc8761858b58c32bd709d98aea49f5dec59551ff181c26c15a9f188b4010daeb14e476e051d954448cfbb5807f4765b23f522a161dcd1f18244a7067e90fdc278143f53c4655cbfb2cc485a4b8c39312e8141c1f07340eb9993e0b5664714abf694eaef3a035a4cbcc19b5f13cb739595577e2fbb40abcd8883277ca6db4d316ff3ed2d0c5b8e390c4da246fbd760afa262aa1d2034753f9927574961cc8c7fab3fa5abf96afc577f9597eac5fcbcfe2bbfe5c3e1703d7ebbfb9c3b798e8ce3cf9b5823dcb9ed0e335135075fe98af2bd598311fceabeb5d518ddc32e8595d86d35e9725f6fbe7e5e87bd654eb237e120226921bdb619e91cfb5c82462d886e5b6d73c77086c9308ea945ae060bd6eed7265e060f9ada8fd9c35fcdb795259863fd035f9f513d277d9eeef5b080c1d0a81b97211147d995c9c72ad106ed2cd680561ea9b1eb6dc4f915c67f4e88099be52383ae763d32c69483b1db3d9e83e2e19018584e80724a92f4b1c13d3dd406fb79f8cea13bbff4a1209ce9f1712a4249aeca71cba915e8d8afd48c0f85b4899e62a9835dcc388dd0159cde30cf4b0f8bf97293988259d983ebdb4962c02c941a107a22d69df5f29a1578cfbf49cdb5e1f765f2bc037e9af09d4fc7331b88fa0b020b574e0015ad3c7c0c04cc4a360a72b14425ff2cc3e46b3cc4ff8583a49abdffe0030d1641ada452f3c7ab6893377ba61a7f7b7b1f4a4f95640ac1a98bcdffaee722de92629c9d524e6d4312704585c1a70bb94cdc13d67d032119258677750f315fff7d3d31693119715b84b243765fd2dc5701da283a66478183ab288aca2085ec555a49a6263eae886561364141dddc4564d7a2ab986faa1edce99407af815d547eebc185330cf328e8f60c3dcc59b0dd5c136144594aba4327d3ae5ac9c6721d5b818e9f94a70395cbccf369ec63f591ce3615b2de7506797bf8caefdf12f45eb509b7f8954f3d2423e90ba053e457f7c9843e76a0c8903d0d2f3f89aab7476b493358f4cf1f6ba6c777be17a103c3fe05659a406cfda091ca2935cbcbaff658047394f0f51aa3c5c9eb2a25cd8831593ce1035882f66a87277c23bd799d30a5ae34215e37406159dc1ffac471d6cb2c79aa0dc3ce6f0921863bfed402c18630105c899771bb8b44d90724b6cb24b326abca6873cd586aae74fa8507b1e1f63f9a61343430c6aa69634681c570f1b70ce90459532da6abb58614a43ec131af57d7651b15fac7b693ca397e98720be1bb2c60021bea7fca61ed57c60e97d1ea381d4f6317ac1da8c9cb6e8aaf170138dd102dd89db612723584d9c31ceabdc821c04e9e538410c8148d68864c8c760d1b018dad82806bf6ab645322de929e844e69dc6e63d1759d90f54f347530ec20ec246d86604db431fc1cb5d13fae3473708a6e0ae06ba0b9b8a76a0d3275ac220171c5f4bfdc604b3888733d2977c9c35a12612bea955107eb93d88ecf7fa3353a0122d7f738d2c6745f1362fd4de31b321cf86e54e5d46db03a51f261410a0c9201d127426d025dc2013a9f83006a45c6b4c0f957a45fa0aa20cd389d562140376e3cab5e27d060f42bec86d0192189070faaeb20678901473157f3192e3427e1f1bf1930b3af367584b6f445a706a08f92143416663b2a599134a4196e8c3f45354596f5bcc408289b6f0c17689729d0f351e84ef461a0f06346eb0f571354d544e1ac5c7b4f3351f1a048119afe63fd16769e9fd2a44b9eff6091ab6f6e0ecc3caff1f3bac7aaa8dddfc2d5259fb76fcf110b37e2e380c6eb1e9b50bb66e9182c89150ef24b00f6dd40d5a7e3973ff164d308efc48b5b3cad5668b58f31b0de4490e0ae5cef1edcc5b2dc9d7d95c655600f693c7214a52df1ac396762f9af731e3524c6fa915e86cd70d3b172bfc1026b1ae12b14902391a0cfe3ff8eba12c5b8ac65ac4513fb87e39c141c90f5f17038bf5c3a8e22baf4c582378b07317e10bf5a6abe56d4cc3c8e4e90a8c646bfd37fffea05dd36edbe64cef90c0b6a86c900fdaa3ed8602fec2464abdf85a193488349940957a2a9598d3d29e4efd227452bfc34df7e5bcfc66c85aa8a5bcfc079ea3a06b0b7dfc9a7699c569229cd2d7b55d0c5c35856ff90d3902de1121154deb1864164d674128e318afc56ec5c4473b1cd6df354f32e438d7e76a4dce4b5ac164fdf03432ffae379f5897a3477376947eac0fb804a7d7acaf57d12db8794395eab88b648265d1c770b74b738fb260e2a007abaefa983ede8e9712076b31264d83f601daa630421feba9385f397d0466d5c2be2a7a50ad2ccba7a1485283a3c3fce263c641f0e68fbb0162c1c17e33e91a089e5250da5952b883edf856ef91ad4b6f1bc4df7cc28edc16a0214e3a11a11420f558fc2c24d409cfa0f5b22c3b03937d00eb030f5cbb1b2cc07add978f64b3ca698c7b3704c52dffdef74b9370c8cdf7240cfa2f405685d043f386647d209364291be832f42c0a268b7741bb660d4739e28a13b3d946cab0fa6e04c58fb91c5cac64c1c1ce2ae909c87682e863c32b799595193bd6a541c57e9ecf8da54fd84eeec94a34a70ebe4002202294a5f6dfe5950c7bf4748136baaa55a421136248735187f830b11a0a018e483b83f6f9fd3d007f09ce3ad036f35598e2e5214a344a53972acf0f57c504c06ceb96ffe9f7b0c4d74b58503fd5b9d635f4c25ec7129d22cf49aec5389f932826e6de1c888a6f24ec303d4a58e4b72c7fdfddb2c2576061e5915d61b5fc2e0cf29f836eb308515a1e9bd4d1109431eb42dc975d36ea505b698b41a4b203f216efaf2b4004a14c62c45f34ea46eac852595e4511d21e6bb2b00e4f2e04dc9aca40a42806c03f2260ce3c7f68ea4fc2382dd974d774b8eb7fc95943048a5eef56ca178179e8fd742d2a64dc9286b76ec6c36db801ebbcc6f17121d65ea4e822768c6f69b6253c5dfa59f20fbd33f6bace06bd811984f2c6d0925045411e0bb8d3c44444998144539a9a19cfb213c8daa7c7bd2f5449ac5bd2feeb8259429e596d2baa8929f38a72715026a8aa37ae22b0289781727b49abbe5df49897b8810cda01087f875c5ae32d41a6b28d59e5900e848f68ac4fd047754da72e6215c930b201585147e1132d8208cb8cc889bbf86dc23ded3a62e23a3a538d1262227b88a13b6841d42a7e2fdb8345d99132373cb9afdf5e1692a6e1dfe1cdc37d90ee20640768e5c3894a466d746435696d825676da47884486526d03897a5e6e5782c0dd9be044c99d2dc53bf5f7e1f0aa9988ac40fc4e4c91006e4766d931ce66199c1e4470ab22ee743b8094e331f5da113e03b2c17a694f8c3a7b093fa3bff44e7abafd4ac365f525bcd108a85b74f6819794dd55f4cbf7a104a48d81efdcb9f141640d9c58d230dc266220205f50d719e2c11ac87b89bce5158dafcf7b942a3b28d58fee065b88089f172b9037106e8b6f20cbe4b0a3e0230773e7dd01d92ce3a374e203ec1cef34430002290ebc5e8e4209e1bd08655ee36f4b637f8b564db52cbb318e203ccb8a5e8019ed6a1cc41a9f81549a13d75fc0a1e06d10345a4540dcd342cb42554657a7a594725cd1542e1a85057314ff633e941960cbdd370a41696d294f54227c3f043c8db234a335c77e57ffc5a0ce0b9be8b2080a0a9d9d09aeed0a3467adade16447b2553bf374a1022ba4a98e09b3b2044269a5666e7b974a57afb04ce063463e10eb9853aff9ca9d0fa4776d57b8ae348dd094bfb238f7f118e60c605f6d8f481db37e22274d75892b2d170a0da18d2965053fbddf74349c728e2b9151f3efa2f5e4e8e34a439d1e09bdfca8b15695bb0ce0851660cfb4b376638f0a88a130e601296df6f9a2f1960ae9e5ef3f49d3e1a6c9b834489f8e7cf89711fdc8a11449b458cf13d5518f1e5da9572d2bbd808a6377c358397399bf1c6b4e93c05e0695962d04b78d688230f7490cfdbdb179aa266fc3efdad408a054aafcc256dc571de71b78ec29348bc2100178cffe4d4a21160f36b713493f91c13144086a53df4099016a9a10311a21901364ffbed1f9443cc8a73d96f0ee942d530845ff9f3d7f3e1f90f6abc359e8f9d15216fa61b4330b7af8f11571639c2bc9d03f0e54783b24cf886afe3eb0f43a9bb9778f2c122b93d4027af2538771c53584437d744f1e87e970cc449f208970c722a245e8363c44a48e26c193bed6873f1706b6afbe64e48c0ac02ca0863336610602cbe36461be15e610f6f9105d2ceece5037e2bc185d73bb64f0a7cb33a87369677cb0d0d70eb2082f49e485fd43bf4ed64873aa5aa3824a4b74c630f2ac2af035fe91cc92f439aad86d15fc80c244adfd196020acc35d0608b58490eeb07f3c657c52847518267aa95d7a27459ef5f05ed7e13499653b29cac4b1e907cb63994333afd9e8c2422009983a377ebe429a43c8313b819228ed90003b54769c1f49584ec8a51cb137500729a57c19d67e512daa8851fc8e86aa165cca435e6cc722592ac40c9258b17d7adbcf7246c8d303c27620da687760af3e22a2e39377d042f37a2542dd94b2a339690a180d8527676f01d60eaf790bdbe18a0efd55c7ae3c777099839a34b5a9f2ac9c15ca9ff007c2176c6f744a2b316c051963008d1927e804f8bfb9317eb13e5d17ea0455d67bdf74f306fb9b3125bf7d18ad58f45dcde4f17fc2e3e42d65ed8a10838c9e9826f04322ad51cbd0e468aed1d907da65566b48745cfe0167c0c6d2458f2c91538abe2da224e62038951a30a2cdf2feda9de4e0504e6c3ffc257749d91de15f5bfe96986be71bd1c9707feadc8c86f793ff81a1cd6f91e2f93bd73d1242ee9a1ff1483d0f23e5d561e202ebb9305a05a4bd613597a7baaaa80ae79dc77e9124c128c8249827c38664608b6348c9abe35e2e4685504c8d1ddec34568079158e7b3ca55099a58c315858477904697c548462ed5d56179c23095c9e1ae30f8e5ce4d30439377780baeeca409d30bf03fcc9a5b0049c1ef7e2c16710c7e75ceb4e4860cde0076204f322877f599776b434c425681ccdaaa1c80c2bd1e53651a0a0cc7bf7120b79651a6f7c3454bb2d5f5f648e10d1926dfa7d4a7d8b229dcf702519400d0fa458bbae54823bcb0833690b8b213aeba690586a57d51e6f93c0015b07016dda0d7a85f43a5512a9867e4ce26eed4c5a5fba7380648b216d5b8169e0d1721dbf50d5e63c2231c5b5b58ffe099d3ea5fceb020f97016ad2b652d3bf7751d0c89f1d9f9e3d265e287082671a09d795492edb7e5bbb5f014526e78199e4d6ecd83db73272b144d82e24fab34626b629d77912833e4d0175e5020d16983fa213ec44f1d7bfee1c64610d94d15326887ad2285f59b20506d631e8d80ba9ea44d7e9ca0136cc70fc9a00cefe2218a72a625cba6ddd2bf32813b2a8ebbdc74f07be7948b361ed5a70d68ed936da0c89b48a93872ff6fd27f9b95b1b6fa1e0b7e487d7b079a36052d8114cabcc4fa8bef19830ccf36ed81a6c3f18a501aed15d7a9550121fe905bd23dbe4c0a16b52e5a80b3f699042367c449e1b6017a913067702396e502cb90f8f2405901259620c66194edca6eaf3935db4288184ab2383cef773cef3ae0ca260692d8de2ed7b683f929fb5437237be764f495ca7821c763a5acc8b068ee8fb42678723306ce1ce0496730336adee67cd0cdaedc6e98a6db4b43e1ea23b2dd60fff4c7c404b33111ca7d63806eab27d62addfc20700dab4a326d01af1be1147f02e0e8f5c8e29f710fcee3d2ca033338b7b5e92552d28caaf25faf0695f0c0062aed81a8907aa8c98ca0a44a9d77b28677b63aac90279c6d7cd7373a9bc9e6d87b53e2011babc4c3365694e5c60d179f652665ebbe4e26ed1df7aa142a8528510c2fe1e7108dd48fc8983718e9790d7ce8f2c0dad965d031e8fd9c832a469a1858585b32746653c0cfab53ec57df24663001aee1f7787a0d2b23bd8a50fb15abfaa8a61903ce2d4e812e079910b6ec85b861a27bc1cf462c4b0e4b280c2d845257d4f7c1a275f1200ee7b0f9af1eecc1031ca1017d6864fa373a2aeeb81851ed7d7554186174c499e2b316e4e264161c6794aa86e6c9451c2d705055bb0cfd1e7f50e5a23d5ed4e61550c78afbdadc4579400023aa87cd03898c3ea5627ae100b91b62a1b2ddbca488be81dfe76993656111de71ab0d993d3a517c8d7cbe91b0196bf8dd4934a69919548d8b855182cb799e8c2d8aa2f11cf0e8278511df4d0d3926aaacf46b6e68c57a58b1246b5b700bd4fbedcd28be36faf06eb4a2626c01536fe1c8d9761f40d7d331dcfc8789dfa2375d46c1792662b7a69d78de661421ec880d86839c95e47031be75e59e23535af7109a6500ab3f632b37f0caa22c8f2f205f2e8a6be4a95aca99906d15bb8edbff7101806d84da54243ab8e87dbca8eb4f29b5568bf92b7d3c2e552c85437cb0a3a927565b14267bfbe6438e17e7123dc79759ddf913ca6432212c7c52d55aa70ab6e11931643636b9ce6b7a7e104c6841ada4824701de84dbe3de343d52a5394cd1a7e2597c92b718f9e52401da26dc05b1e2d7b8991f5db5a4b964de0ca5a5dc26dcbc9a1b7b991b0eaa9e13bb6cdc32444a64ba71d89b2853abd1456b36ae5ab2807f08b7704d3c060cdce95cb1189edc46958df6184a5196281ae28bbdf928f9cf9116b164c9dc79e1470ea6bc921abe81a14761fd83530b1ff0bd649ad3213d655ab385b7641cd0e583f00e8698861b3d56a2691be6e0a545c95022fb24f6d3fd3cfef19ca6128551f1e7bfd83c912b81ca8d38fd1a6d0f1c6f02be7def8e76a58e838dfaf63c9788fce772091a3e9b2173910e9ead6ae488f3551e7e92eede059dd213ca0e19d6e93047e0f46d7032b1a64e610e61cf0f41d5eea8855a455d3a56c10136734257aeac20ad877a25aa418a4a09af71e32fd67fc4618225e8e150d1c63c19880ed9266262d92704645c02cb096b265da3e66840308aadd30941d462808f3c9db61d9a627fc256d840d91ec424f168ad910f76d26793890c91da01eaf44ee8ada9d0e688581674113bdd00a633cfa2c4ead2822b8ffa3b296da982f6a9e5a9d277b6370b7d2b1c87af45ff2dc1dd2f9339698ded0ec2c3d630da41c8607f250cea42f014dbd7c92cc2550ae8780caa956a82b14d995bd52c6dfbc0ff8912393424909b8946a94996d69cc785235b87148e054b0f1949e5a88d5c08220d1fd0a3dcaeceb1ff0e22050e063ccbfa48c8ed6b4a3ce3c83da436f0aa54c61e6e3f2744b434b468af0c6cd7f9207b3632fcd99986fd170f186ad2b79235b5a329d4794045e2ae9839694e3f125004acc6de3017a8f02e9d8a8d87ac69f3326c66710a2a213f21802eedd22827137110091fd0631e94df9d588bcc62b3356e18c505d4e545e8044d833161676bfd8c0f85496781f2f126378330377abf6edde88875125fc9fa7a74304944426672b8af305e76df3b8f27027539d3e0b43ce164cd8ebd2054f3ec27078ae51ffa060fc9642171c6618e010cc0144a586db2b385fb0c4a44d5bced706de9a449017d8cefd901f14d5a032ae1676ea32bad600937a61f6ffec0008831fc912258641fb920a0ddd91f61d8138fd684fa7091251cc1a228cef1f0faa63720fe90c8f36c55828c322b6a5b6445677348cb942cf437012e9e63c41c029ef42629b6b996987d1bf99ca1707d3bae2587eeeec1cc0f2832f817ada98ecb1ee0eb804e9e798beccdb33e563a5c5a1ce992f95ebcfca488957b44a57045bc7cba915697da1c294ace1248d622b25594a7790bfc899ab4659c74745d5e84cd8d44c074581cd9d49a183ca008544a20a3623b541e833bf10b409eb006e2cf70e7c4455840dc812e9e30f583a624431dc29245cda73094006c37d35c50768f173e87626e7a2bb7f3a17a7e7791fb4be9b65a5b858aafc595a1237eb810ae953b0e5c7713d54a494b5ceed4bdf2bc3a1368d502d9c385be8559ca2bd797988056faa3f6b64055ad034b50c0d51b593bd0694b0304fdeb50e7a6a524ae3db74d421b7721872eb072a71d3aa65dfaa485533ecc691b32c48ec5dd84a444a57d9a0ddb682390bf9c6432e2f834169d4b0995e2c53f3086cf485fe0a9a74dfbe844f94e6621bd679add588d9022a02fdad1061c7314c3e3c0cae73000c17a977cba9115eb5815a67a6154acec825785ebf0a63a34e58d611dd59e8a20dc8fab868673a8ad3a08ec635235515da9258e14b234f714ae551e70c4808eecda82945c0faa93dc574aa6426ffab074ca1178182a840e7f8414200edc0ea70914f2f44d1ff78381d21b9d4082501b48570b04b7b72431d69011e2a22d4bb7938397f30f8b5052a05e7c6fe5bdb58d448af9c2ed3e9a3fe13491e010f505d1cced34180a77e69d875c3f0efb212edd26c4d4ead967df311eafb6912acb34e12e42503c7391b49c2e905f87b933eb40428bc44d2f42c6dd851cde3f3ee4419bf3091a48a0bca5eee4f767837e6c94170a9912564122844300043d0cb290b45f7d8ff33d01647657c137b0c53f08b79ed25a35622b4fee7fc96c3230e014616e052601bc8d6ebdc11431eb0014e63f302b03fc46868fe5b5c4ac43dbfc8f46c427beb04aaf3d12d2aca339f2bdc31ee7b4e8661da3e16fb652680a5a873e68c5d83575d14e79358177e05603151d5ae64da58a88d7966160e53ac5707775c15ee5ecfb6dd901f1e7ad88b5ceb241c79d5bf55152268179d0c7873a53b3536b07bda54fdba15dbe50340b93ca8315f2696c2b580d9e7eee0a90a59e3dd6573f871b8c9c6e1d08a18391a6f6d3b61ca7ddacafdc493dcb507bf64a7728fbe9ace4bf743d93bb24860065d042b85207441532a8459c2bfe20911258382ea86e591c56fa574f449a93238b963e98059fd2f1c0475ba16b51cd8a4d84ba020f51f67f61971ecd9ae9781af007a9a8491e3aa5a49d6d6e2bd3fd50c206de854528179b19c699af0fbdd3f163d0a28e2cc1559608cbbb613a8651f51ef6d35ac1d34386aed2e58206dc5925268a04ff5602b2d7c0bc9d114f87b0a02266f43171e651961fe3fd07961b5f37e4e6a9045c8b6e2ef726ec8578b6d310d88c850d019b9276f96a1d3368781a481c973fc90b8c7334aedbeaa52dd92168bba0d66a33ab15eaf3dfe74f1a0d12aacce34469b4b844ea9d80c00d29603ca7c77590590fd2a771467d28ac253094a11ec852e3c10963794df44c191dff91fb2a82dbfc693161dcbe8c3134014546a9e5bb7cc9a7e1ce313724b486cd9ae59962665f901e25aea446775f1e506182e5e82c561351fd72eb664e20d1592b8a2bb78800269d0beb75439f5f0beb382ccf057a54971de89e4e5083828232728c5d6712e0395e9a4840075b2eb1f95240138df682ccb868cfb1f9313559c29693bc52ce47976c5107f7e8cd36c19685fbebf783dae7eea52d81253be7399aafe3177c70eee68e994cf7f8e78355a7253b61882c831247b8e207dfd2e6cb265c553b0cc0d2f78441ce51ea89ac498c22acf982efdb0f51b1d8cbe178021c45ab8d9f3cd5282d557a9c7e82b6b099f28c21871e2925064d796d924231f298abe477e43820c916890e7423231af13158b28da7831e2768fb101ec31dc65ae7a9cac367053ae26f1232e57a90b0f3f294089596cc3c2c55695df48c0ff026c282121280d658d84c2d99177d7121adde4468f0e2e6a57aff4e791b5e15167763088951bac4fd5459d9ede0685e325d04c2337ac6c2282bb07aa494e95687f1f96671d8e12bbcb0ff2f0b6b54d936c8e5be2ac1e6055ebbe46014bae56f1a0b39406807b4bd7eb0dcfa6d48e4c4827777b5584c4f099b8f0f18a22ae7ff48e99fb1036783681eb21aef62572543468f1d44a0c327834e3284bcdafe7ffcc9128d9646187e0ffa0dc4625fac53b4e1214e6f3271ddc1750c8c9d12fe2ea553e83d167718109e02557bf5f72866746c3845bc337905be511bbb6695b70c55a2478fd6053ce29529828258d28080ec3bfc2d9ceba89ba91b5d47673452e7a79ada81ea2b6a3321ac18b9109b11f0ed8eedc56171ff9fd567f7f0e367726cfbdf904364dcd98f0124f14a7913f23ca53a6a982b6777575adba6a213110f91a02e75265ce93727e54cd490a40e995f641db51e929c094426c48e7f11c7383140a2718286c81de74d88c5cff2f0f49b5e52d53c4044e98cbe3f6a5c27f8d0c56d90c8f6a2411cd848a563a362dae57bb6646b524004b7a3b8660678dd26676ee4279528b8aa8150e77a466d3cc9e47182b5d8ecc49bb7ebd236860d9e3d11426ffc723dedf50499f055975b6892beb29ef315e7159890528f7c04c6d84c70766cc8c53facf682fb42026c1e5eac74e7c79b204b2dabcbe1c2051861c732946f546b620854c95ab928199456fe79642da37068498337f06a44a3b860ceba21af5648e64e25619990c76d553365fe21f495055fb6dcec5c624c0d96ece4de8b92d9fe354c9441c8b3e498d77bb1b79ee5ca55d00530faaa172aa5b8dac850aee7c38e4bcda283c98097a91e93fc43f9f7f16f5a07d6061ea4cc9f2b5a566770103d6c3d977452497883d0b7c65c137fd69c721b656a9889b0f22ebee02685e1e599b290a0fff177ba442a861b86e9e7cd6cd26abf6ede74b952b51b86030b0126b392e80b8eb4657939388c1a9aa3ced97518024c7472cdbcfeb5886d4b56e509a8b2f420e4fc1f51a52e0f51392e5c7f2e53ba8f231c3b617bf72c4df538ea24b2e0690571be46277ef0f7bb8581b916516e43d82b4deaf8038a9370456307a371ac9394d3a3a333f5be880b51d91010eb61a0e8538984476215ae02e9452303f47aa5a1286ef490921a65bed267e81b779e41ca422a3889e1f092d5f50965f686b8e458894b3a15a638043c540d3c88501add9a2513c0de87773725b7d34683ae35f6f91a6053e12fbfcc38c7208167441f7800c6d6eada57057d039490d485223c83dba134cc4f5f099ca6b73d55d505fc651fba5c7267b00e0ef28c1a62752d2b4f1c625d7be4bda0f0e0cc86fbf3607135961dda8f1ca47d52cb6ba63e175e67812648d02552e7f2e644c679907518342d060afbadb8f9d02fe92d76f32329c11d2fa35dc4e7e11cedf412bbf1a1c792bd1c6c2e958efb2576a08db81c331ab054a7c74d52989901581c9f1393b412896650ca634de8e58a04b90577cd618d230a104950744114730113ddde574320758d3c0e5df5cf983f3e2a7348075a2318eec8f7f2c1c7cde9a57449d58c31b22b0207b9a4ec80a9245ab3c73fc92c87a56651af59f0ad693bdb2ef1de8c2b22c5b5349dec5c02dea98216e1a33a9bc49278b041fa753833025db3fccfb88dfb022af2fd9f8a424d3c43da9c4d5ad20e552357a097cb0de7ab9df461cd73e477600ca522dfb11e367c8bd599f5d1da00bedabe6b260aa5179f3099d99524a8387868acfbf0a2b43bd1bab2fc06ba0cc42a1f1aaab547a0d7c502f6812295d3c48a49bd14d18f5036b4b2e9a7f9298e76df1a98dcb178f54f8602d4ff62062760c7406d95bef659bb6c985b1caf10864450a34cd0d8f2ced412b1327a33c42e7dc91f11042f4daeca5eaf5de10fbccd6305043d4a76cb472dbfbb33605b105cd8a6e65bb779cd6ea22f4803a4a0e919ca56e83eab4e1671a008084a9f7dcf637ffaac19cc84d976ac631f202a1a71b2a46903d4062e7750ef7d3f0324da40dcce38cda1ea14b5f5e3273c0f07f9dfeed5b078bf916a5fd9d43890ce0e26101f4cbcb988c673c61fa2e19f60f50450c23f54c74b97211027c9e0076097f3160c893ebaac36f44fed6f461324d5d9937d3b9a90dd23106a2c3b573351e386dce1664c95857de4f9f35041c952a6e62a01acf890c42a60726f13d0ac1f37f21aebdd39c5ce226ab017a7b44df6f6b828b0cdeb2ca7f616caf7d45f638ee61fff584d196418354e6270fc2375c87f004ed42cc709e1140b532909691069cd6c8fcb32c0fe1b90434441708cf69ec936802a9023161f45ce78cbe0b194af0b3b496a646f9316637c003dd0bac17baf0281bf1e0baf5b31c41ebba3e593d98b062606c9bf967b1f2875c88d62d48a601c43d82427c5866814e0f07d0dd956c92e678284e80a659d37c972035c21a372326914f47ce337f5464d47ab5f9362941bb21e07f2f2da90b2438e5e122649f12b2986f9fe966e0c5c7636a88ca89781090b43cc9a62c8743ce9ee47ef4d5246cc2c130e39eba5a884293245bcd38f25550693bc34c36fff506c3adc5c086a46d5167a0756c46655524b7656626f029c11ab8a462e81f93155cc68ab00e53699b2acd484619e77a2e6ababa44645f18c50438a835e7bb760433ae431b2b9616ac58c16542682dda8b45aeb023f882a4fc38edd9862884fbe6133e15684d5af1d9053a88fb3541204da9957bd55209cd53807437cf98025433cc49fbdf8ecd8024fc41cc908f675c94688170d00db7fb4238705f03b4ebf20c7a031dc85900c8719aaa8581ec1c447581c545dade631424989c07f44fbdffe6f379166bb7b4b29a50ce90bf20b960b2b7fc2cb122f45bc0cf13254fa93fd1410b102cebebf0874ff01d8f1d4233a7e3aaeb4e38a01ccbebf006adf4f00b3ef1fc0cadaf71381f6d17cf5cd71651db900c6fd439c7dbf10fcecfb8350fbfe00b47d7fccf8ebf8e7c8cf715c51c7b105c0f82d106ddf7f641c6dc6fd3f8ca3ea83faecb852c3f6fd4556d027328e6c0f6cdf2f337221a339a6e34a9031edfb7918f71f4135abf452226a6d159b86fbcdbe8fc4340bfc932fcdbe7f0da17d3f88edfbdbbe5b152b2365597330d34f8c530d4f90a5edfbd9beff8497314cd52a03656163b47a0513d1be55a90c536c3163aca5b46f159a43a9e58ca1c64855680e6d4b0c3506aa4a65982d668c35c6a95265b0b43138cb8ad2d29a542c49469a8309b628acc924ad23143c43d6c4d292ce910c33c6da372906fac5485148156afadbfa1c5a520c15d481ada1ce40736075586da8aa73c64923d5415da935521aabd5460d74d5d23875486da0354e1aa60ea90db4c6a9579b86b95a6dd440572d8d530775a5d64867983474586da8aa73c64923d581b5b1d65067a039b0a3275bcebec28ee7887ebad27274651dcd57dfe463bba2fefae7c872734c571e7dd2eff0e4b72031fcf02428dffa617a204f8eeb97c4f41d4889f23ff8a8961f4f427a1f3bf0d295a3f5fc773cf9ece867ca24a3ef31c37fd4b1ae2c2f266f95885a49f8f3d8a14307ca76dabedb95fdb0a808f52994daf79fe8484b39dabe592f7259fbce91f69d1a61cc151d2a3a4c994ff134873af212c62c75a8a50eb3e4323c878ae2255775a4395c5616cf91ea68f99ac385cd81ea6075a09c7569739c3a561d678ef5c5e4ed0adaf7dbac9a45e23fe22fe7cb8ae374315d549a6671fe82beb06ddfff72beac384e17d34565350be525754171a0fb057d615dd21b2d8e75a65926ee72e2486fac38da1715878943fddc50fb7ef345c561e2506fa8395cce9716477a63c5d1bea42e280ef4068be3a42da5221d6c9c354cb02db1221474da30c1f6c48a56d0a98369a33db19e15a47e6e98ad1251abc47a561a6aca0c951713a5631d9da71c2bc85bd2d9b228675328aba3e56b8e7625f53ce9b272f1491853876a7a5287d937cbe750798ae2629eebe9a2aea616655d52940db12fa90bfab7257af2a5fddb2a3d89232571b49f276faca0275dcef18238f9a2729388e3306142258e43154f780ed3070fffc1bca1aaa02876b49e5430079694a2ced1c986aa3a49690a1dcd304f3aa82b9564234dd54057689ca755db37b85afb26f910d321ed1be5836a03e54a44ad910fb21a270b57226a9dfeb69efbb0d23053b80fa95eed15dbf7ff00d32c9093d81c7112bb509cc4a70af7e4a0daa436b0232f1b34868d1aeb52bde294363ffc606ad69117879377c6769cbc348e93b77d7d4fe39ce1fa958da92a7fa83d0d4e5ed90c4e5e75c549199512d2bedf8754b34a3196fad3fb30d3ac133fa9292a0ff2d30f361d7f9c3f4c1f649f95f7f0fd3eaca768f3524f1f2dffd1fe407db069df2cff317dfc50615ec4fe58d136e64d6adf8f85fa63058202697da831bcab3e7ea840ce9ec270206c477db03f52202c1c880944eda78ff647fb03fdc10249fb8ff3c7ca68e31a6dccf187232fcd2a533ee5c30f5f0627fff4a7ef3ff0c16fe1afbedf46a659291ce429a2b3ef7da6ac27e985a0d9f78e31437515f152e664ade77a3eab8561992298344605f152c6d4abcd8a3161d4f504c34a61d09894c5b2d01816e68c61b12c34868539636058561ad3c2a031ac16a6659930698cca045987594fd6ca3a63625618d564a93126cb8c516152560bd3b2d29898140686cd81258385aa62d8550c5aa4a6c29c7dbf0d6a03d32c1328d3aaa90779b4e77e9b54b344bfdf26a659aa4cbac35c55be63a2a257779c7be53f3367df3cd2be4b6f2aad2474d4f62dda3cd4be4d326cdf278fb223edfb64f337f15851bc94615178b9233de1250fd3c44b1e9cf3584bbc942977a0e58eb69c41398f102f65d41de70ef65ce13c52997487b9639d3155380f19997687caa34d711ea788472b83cab43b541e270f74c6944977983bd61d2c8f74e69451779c3b76b4211eea0c2ab3f6fd1185a60c7b5b9f6b477a5b9dd3bcad1492c75a83ead5a6f160fb7e1b53b3ca1f6a9a65f6bd836aaa7d7fbadfe6e5e354cfbedfdcc1dc41f561aa33e989ae6cdfbfeeb0fa3867d41dce1ea68d8b455934edd1a6336ddf3bb43dd21eed0ee94cbb433bc3f6407bb03ed21d501fe8ccda6307b647a8872a9a9e1dd4f7618233e9c7144fcf0e6bdf3e4e7046fd9ca01eab6707f67da0e0cc4af6407b8876403fed1b9c6143bc15f2d295a3157ab2477a5b5f18fed7a315b53a9eefa4cf6f2b8597ff294fee702ab2ead5fee840e435d31651c7223197ef8c57af70e8109dac474d432c3ef3f303157fb42735e5f4d1fe484166df2b16e8e783fdfc50417f5b7faa6cf8e9e763ed5b89a825e2f7f4e48fb56f91b752d01057226a79d4b66f2cd4be3f3ea4f5a19645646511f54691d84b59243d7d8eb2084caff60fab6681bc880e4eba5cbdc2c14999174e8a2e9cbcea0d4e9e74e0f812689a157a25a2161328c216f8667a3a591b9cc426283ef8a2da37115ab4efffb230d720ab99b64eb60627f10bfcefa4fca7a74f61c13f9da2075bb5f3222f83a83cb468cb6cd1e0243e3fef41bf0fd7ce7f443047df61d30f2f4344503f2f96540441facf974140bce441e465ebc3cbbef296879741505ef2f0f1920753979d1df156cacb20292f796079c9c359f696b7667012bbf009822fc86082298471ae6fa6a4ecaa5960062e82a08133acc154db14f454d140e3c20c81d9843665ffc94b8435c53ca5d88b0e7020075204a10daddb029fbc58b01d94a403265250c102278ca1755b1d538b73071990618a25c880034f68ddd6bb88a0b6bc8820830d74e0032768dd56cad9ae5871c5076a00043604addb3a71fcca02ed5bd3e00c59f4608b2c7cd1ba2d90fbe0ba58ac7d3f1155b38cb07ab57f7667ac8a9397a5c9e0e4a5e5c0c9db12796956a944d472e568859ff20f7e0c4eba809d07dfe3a4cce9fbd3bb72b43cdd87bcfcd1b692b470f2ca8ca0467e34121b8d9cc69b0e6935ab3472c660e866e4a5572d9c74e170d2bbb27ed5ccc91317a7b8058d8bb3efafa9a57c470c818cb8443f22954c27cfe41f0aafa6055150a9670285f8a97cf8fb8d98f8f913388cd6af8c2cfc537e7f0d2de4354ba851420d17f765ef67196baac0c71a2ad44ca1c60a3557a8c1420d136abaa869428d13c0b1c68b9a2cd468a1660b355ca8e9428d176aa050f3849a28d47c515323d3ac9077b8c8b790f5fd1610c99b043309b0bebfc8c9fd879ecee79940219e7e7f11140cbd68442a99521e74e9d3090aea4b3dcbef2ff2d2ac960ba7802acf048a536be5994021b6f83381c26b8dffbfbf88a9594fe8305a4ca07069b1701a23a85a3445b82ffb9940f12d1a2deecb7e1a35c3ecdfcf479a27dc97fde348e3c57dd9ff238d13eecbfe9591060af765bfca481385fbb23f65a4f9e2beec4f8d3447b82ffb51230d12eecb7e94912609f765ffc948b3c57dd97f1a69b8b82ffb4d238d14eecbfed2483385fbb29f34d250e1beec1f8d3455b82ffb45238d15eecbfed0487385fbb21f34d22ce1beec17471a25dc97fd9f918609f765bf67a4e9e2beec0f479a26dc97ddbd70be8349205eb5eb170b2dce4ec3e1a4e77152ec3879e238f91b27559a932e9993329dbc48503b798d80f6fd5804f939fd26010db24ede23b4eb11dabe7f05b204a4046509b7b30abec8b7c35cde34de7bdfbddd7b379d37e6769a33914eaf4a24649ed3322240821430c6590a318b79244f18efad23bb6c3a4a97ae5941e38d7196026729c49c7987f3b6f7debf6d9cb107ca881c0edebbc39fa5c018638c31c618638c31c618639c33c618e3d71d0decd77dd18040d382488a1b636f83a79cb5d67b6ffd19a0ed1717f6ab6f7a3b3d885971d3b56dbfbadeaffde2cc609bc126832d06db0c36196c3158b2e1195e6c5d9eba5d826e35187da361acb7bce52d67ad37bd6dbff7f652ffa7d169b4d136bd6ddbb66d5bde366edbb66ddbf2c6e59c73ce39e73cdab69019be8cffd318e39cf3a6b5a61d614151dc1cbeda43d35bd8365ad66260b76d931137c7795bade7dfa190d4ff69741aa53ccf03bd6db6a8549ffa54cb89a347270c622c827a74c34e9642044119510443d40f446fdbf639ebd1e7731aa53e5114412050d63a73db6badb5deb4d69bd6db73fab7acb3283d7b5fa2f032541bd14432524c05d52cd39346b15044eb9934ebd9841ac9482f51ad6712ad67116c2423896a249ae8358a9168a499c835828d6aa219e913f3d03a2ece68e6c1c29847d609d5382f8f168e6a215967267279b07014eb396422cd382fa2797f5f3d77a42745b09e479cf32a2399e96fab147678ca4a7af5cce129b2930e4f21d1385e92bcefe2d01a3d9cef985e1c132dd6f3732559cfa558cfe187a78c42b59ec3ff849e59cf23949ff55c7af55ca2f5eceaf951545c3d7fa9d6b3ec647c984aad67d3f3d2b4c2cb134caf722d859f6a295e965c285e966a28bc34c94e7879a29df8e965e2e56956e265e945e2658936e2e5c925e2a6102f4d1f0f2f4d30bdca0fe225d38b97269a2e4f318e972559cce329a25a49f6a2c566a69a0c468b794f9e5cb357a96692bd68259736411bded0c40630c8a2755b1c9599c9058507be08a31606145ab7e5e97095d5347b39420ab21006145ab43cae2283e11fb08104ae348cc06c755c45d5b5298c60052ea820044968dd16c75562a45a57c9299a063f05d5ac17e773ca0b4c79b552ad6695dce74fd53a3c0987a76470e882637278128fa7d6fc292e8f27e9786af644fe9433c5ea554ed1f42a67590f5bafacb89a10f788646f7ffbc699c04b8864ca84f5fc15305794a82cc14ab8257b73001b3eb56ff0e423e5c993ec74effd27718b6bfdbaae7a79e07e9b1097604224ef115a2686b4ff4a442dd28fde95a3351af1527cd2e8459f1f793a9ddfdf03aa59b7e5890f9385ea27fa50ca8b381328c21637022a93f53da41d8780a1f6fd9f58dfef49fbfe0eacef7ff4d5f77f9f723a89e0b851211a393d2ceb39df1e84d5acd3ef0f42d3aceff7076983d434eb7fbf1053884bb346bf5f48aa5933bf5fc84cb3c2273de9227355fee495edf0e49d5d96b6e3c9db92d874959ec4e7c993f875b560fb8d987af106243ee86f5020d48d0825ba092511a5789250e8515c14e2204e7344845b50dd264e515fb2a27caeac664c4e597cf6a0cd9b53cc626d02c928c6b975c9275695c8ec671317915711b7183d92d5515dc12d0b8a12575633656ffb2c2c56fb16f10a834d99cf6d46c551e47133c6fcf8644e5778921b259ef5ac6fddacac3c8959ae44d462e132372a309f4445a5dfa8bcca93f844f578199ee406c593a050dcc6c74d2af5e4bd41fd13e0c708217a1911cb0f2c418a14f952003f040144a210cb0f0f638497321f63e451658fbf2927f0a01e3c78921bd03f2196ae1c2d25781216b761f56a4f8027013d88dbd03cfb9140fbfe23544f2a0aa1210bf2881e10b67dbf03401e557486d2316c41ebdaf73300edfb17a0f6fd0a30fbfe2240ac671585548f0962f5cad37a5a912a52436c88f5844c4f0142a68725002bba7a553386d671f59ca056009e5389a825ee54b3a06dd5a728fe90b36fd6d62dccc66a9485979bb935bbade7deab296ead4e597e082fb773abbadd58cdb237bb4f16ced4aa8c91aded1bedfb65b853af9bbadb8d72a75eb774b3fbe4cc235c6fe85ef7d6ea1f5633654f14863d55dd9aa9686bd175c8939bdda7e64c9a27b79486df7cff3db9a943f84d4786dffc3fb9d1bf2d16bf49497952affce67444081a948ad2a2c49c98276b101400ccbe5f0027e7098b627bd8bf3fc89768dfdff65d048542d7017c91d4ec3b6506814afbfe023c10272aca29042f5366894a4b1496972705e028678942a128eb493a008e62a25027ca0911fca445ad2813253d394f58bdda2815a545414fcc9395a3c9d0d8186ec3dec47ccc0dcd3f01fe4d49c36d56bdda374dfc1360eb66c800645e899fc023f9259e091956902f8f78f29178097c122c20bec8970f78073c04de888f408c105f0601c407e04b20be34c017e089f8017c49c49702f872882f15f045fc029e01df8077e5680d809744f05200bc1c8297437ccc0be089f801bc10bc0c829701e02510bc04e2c10fc007f142bc0d2f7de0650d2f8bf0b2c8b388f0b2075e0ae165105e0679191e7849c34b9a1fc2c337d1848804f71ad9b5b17f099109b4ef5f22edfb91a8ccbe5f09b3ef9f400e6b0bba4a8f8c2a93666431878c39ac4948008923888c2de90a95d1b29c32630e6a04d4bedf88b3ef87c003d0bedf013663cbea94c18e2c680e03185b1ad0c2aa5a06086094a12e4086caa2c68c399c0a6051fbfe2272684940cbba42c0ca94718071edfb8118595270cc01654987d4348b871e386a97c6ec67fb3ec1bf7aabfb693c0e1dc24b8fe5a8a967722c1157b776315cca413d7448aab61c4ac4d4ac21dd7944a5f1d2211dcb3139afa643bb96f3386787766d7772aa97762cc7ecd6cee4520efa8367c2786cdf1cb54b4536c4c178ab88938254ae0d712c1e2ae2a0a0b533392feddb8809eabaf3076e85f15411e7240057226a81c04e0463c095f5ce18f5343fb483a669a7e5b09ffa999df5fbce0ea7eda8df7776386d47e5b09ffa999db4b37650cefaa569a705d5cee9b5e68782e0da3159efec502c7c11c506d09006363551b5042ff041146b104118addbaa67aab2623849d084dacc5cd1740505e10b1b38c31568008453b4551648f1031560318696a7ed61bae1892aa2f08431b4442a143a48439334b85a21b60a5bfc80c908a4208456c8fcd103d806d2a00130b43ca88ad2a2ec6aa6ea498bb227eb49141af324ca0af3248a7992ca3c896a65b8cd6ab2b8cd0c95c6701b9685e1363414166e233b51fb36d15465ae29fbec3bed1bedbbed9bed3bed5b3d57e68af69df6bdf6cdf6ad6afb563b3580610560b8a14993d6d9b72af3b143ce187085e9982cdec91a02aa9dd36bd336064c51160eeb53693ed34867edb070581657226ac9f0b2c8bb72b47e78f25b69b812516bc86d85823cf99d46b812512bc608d981e1250fefcad102e26f4becfc60233aa5a6b30dc083a15534e4a49a509852102f1ab134414eeb91f4875388a769831421c2f6fd2615ed7b880fb2bf88cda9f5c1b4d69452017c11514b3a6d78792a4d6b594a4b51cb496779624b935a4245ec109c745a4d69e914ad42f051ab9a4a66a80d828fd8536a3a496d28007cb4b2702078d9c32b11b5644253145150ed5b264461c49665177951dab791301d22b232a259f32c16350280e7e1d5be5f5c3fad0f6f046c3f270f3dac424435c8c7e67908cd8fd9032fc3b514d5f2c396a1c93f26007819aaa5b87e5ab0e59f334c45563441967fd010155bf1048bf04f1a82c4affda89cf6e46b4be707647a443454c1b4847e504f1b9ea06882d00feb494376e549716d534f7ecebe3d603b3e19aa7ca40957506925e6495155e1e487253f26d83af24a442d10eb417978f0b38ecc904adb776925a5413e24a6a35325662cb1aa904f9d68ccd9f797486b0f1f03424729cd09fdc164e44b224f034a47ea115e9ed0d26496a41294f2915a9eceb2445a41281fa527b3445241271fa1a656aff64a4a453e3a4d6c49257d78e02313002d9957226add487540cfbec1196ddf68df3a9cfb45b62dadfc8d5307b3edfb4b33561a66df6fa365fb7e95192a0d1d5a56cc7e98fd32bcd4a12d6db0658db59c91721aea0dd3465b839da1721aeb8d5307b3c68cd508a7c1de404f1b33584ea34dd17308af6186a6ca673d31b12515354be789989adad24a4afb26a92814749a25b6ef524b5a4729082d1d89e9d546f99154afb6993a02d3abcd1e41f56af3232f507a729652d119925a7045b1a5502b5243b464a2ced4a815ade1dab729eddba4a64aa80ac90c45ec894585780a645a3b5722124be987934e3ea4266afb7e2744dcbaad2f926ad60a0ce695885a9e14aba29ea7cce3f9b1ed9b45a12ba6874d695552e7caa96a568a99b27e54504fdaf7b77dffc8cb54cbaaa4a9952231cd4aa5a8289533a4f6fd6cdf2b2c29e9a8b2925a5556185ea6942969a9925a55d694149533a5aab029292aa95445e50cb1624afb5151574ed08a1942c554fb51494128aa4da52966ca0a4a51512a674a85fda4524e156e24d5abedcad1023d9982320213b19e4c49534650bddaa48af9e1465e272a2b88974fe830c26801e095885a9f033c023e015fc42be083fa72004fc413e00bf00660c57c09f325cb97e397417c005e881fe205c0a2f9f04b2a8218f2345f0ef952e64bd6973c7c9017f23d3c9177e56885471e003ffc1123ffc39746be2cf235efc3db3c10efcad102002f8ff0f2075e1ae1a5910fff873ff200781a5e0ee1a50c2f59bc643df8323fe4693e869730bc64e1e5c8cbf13fcff2301ff32bbc54e1658a97285ea25efcd4ab7c59d5e14dc02739e7f71f0e87f87c3cc906f47f5f6eff71d410df871ff224db7f9c0ad4edbb058e9f1d02715b190ee2a39ae5593dea5de55f61d9a3f6fc21ab591e54af482451643d4cb28a332ed184d83924b836f27344706f704a905735f0f4c083660feae901e7d42fd1e3f29859959fe47c21de1cba344b9fa13eb50df2eb1d5c16e7d4525c8d83ab6178e63b49ad762178cf39354bcbf4eac433dd496a59987377e6e7b44cb3c0eec433f8dec09fff091d3fd98d20e3ecedacbab5dcb284cd5b1e562fd994e825784ba1207f40c40fa2683e7dfb4fdfb6c74d30a0bf89dd9b98a8215a9bbbc096e617db80f4f073aff928abc42122ee1dc775dd7bdf81dc1198e359f5ffffffffff618ddafd769c3920e627f18b09627ef2b240ccef01313f7eccc4d346e815fe7ceab303c9787bc1775b482e83180c6c846675e14905b0df107858d3c420e2ff4efc81fc1fc8ad0e0c2c063c835b8fe7ff3406238b4e722e5aebd13631f4fc7c09dcc5113442b3b4111f0e87e41b1220fc0e57821a02b73a8f5b1dee025be1bb768b49e7a1f05ae077236ee13088dd0a39144f7c5a9dcfad9b63360fdf17cee350c877a4f31cefb76dfb1c0ec97d73aeec03113fc9b9b62d6cb4ad6fbeb11bdb736e51e0d49b38f50e34e2de303af740b2159cdeb82e0c2eaa3f799ea757d7cb24502f17e27d52ecf9eacc0451adc0de59354ddc9a66574088fdd2d0aa46bedb428abd87e6de05f1cc12b86f9cf7e3cd6f56a17ac0bd860eacb14a26dec75a03db11c4fc57d5ab2bf3567176629fa66af5ea76206d4daf30c623f078f0cc8c9e731651508113c31462124c1d4e882de1d55183d8b2734ccedf047fe6dc86082403c94bb0129c818078efbd09f1aed7894ca8e870bce73e7f06c4fc5e9701717b1c0776cd3d0ed659c8709c8afd9f55fab7bf7bdbb6debb057cc37683ab433cb15002da2f164a307b8d7eb1e0a2091dbf889f547939785cd9e542c5e1cd6ab4991ef806abdf7739725916d02bfc1d96ae7fbc3318764f6eca8d11bdfed29d314293a718d0ebffdc192440fbc68c6694b8fa7272ffa7c78e067f8f980568f7d25b77beeb9c4e5c48a3bf03ff863d34015f7323f00c11f891c0330630f1224a0fb836f09388c0331d1f894220d100453ca0011c2ab02c5d6badb5d65a6badb5d65a6badb5d65a6badb53692559a13e17c7ece83238af3b7d5d19b2a623497a7ccfa567e6134c75ccc023ca373ef8167940082679a0882391170f01d7fe8838eff6345c74a04a1e3c7df04de41c737b836f014f806fe2a32ee41c7af57b658595149828a4a0a12525252b2540a7504140ac5082828274538393969713a9988603295b2289548589048237534125d21128586100a81ac0081c42a44f12384cfc713048f27044218823110fc7ef07d1d1f743a9c1e70381e0f3cafdb41d7713ae858731d6f1ba77d6f1c5c1e5aeb1b5c1e39632ab27e0cc353648e5f18bd42cc38d55f88a89aedf3674e4ac0057dfb1bd284b2d0378eeafe0e4124312cfcf27fafc712f47efbcf83e36ddd70730cdbac103d8e4d6e81acda6a10f37fc6ef3f0ed4a1674c022c2d5003bb27c4e9d7047c0deaff5ef32670ffdec393007b668939ccbc09f837043f8eca7fb770416f3b4113f01479859f336218876dfd9d340bd7e0aef0e7c00342c78f453fe113be3011d6e102378eb83694804927310cc32ca059f8752fecd6bc5ac7f8052ac14bb012bc84b3c5e0c2775bf2fe4e7e0f82fbcb71545ed2ea1eb33818ff55f54aafb84d04e2e5ccbd64cb990d5adf0c73ff5eadafd67f2feb92fdaab2293afe1cdadcfe83ef75e0fe97c7ddf98164972e6a968bcb77137c1787a801d2fbfac5c20d53ace05e7cf91d71f1377174472044be10c925418800c1413a5cd8f6260224abf626850824bbecdd71dd77528cb9bfff350b0827557def2dc6c4fdb9df96bd61af0a4c2882183819175a68c1854cc60517322db450b5a8a20a2d54550b2dd42aaa8855c1031e54118b5551458c073cc0a20853a45814810758148107581421c5a208535c1c1b87e0fb3ef80a97bd75b864d595c939e75ce3aaf7f28caf104931e79cf31557809f7bf5fe6cdce7f3d1d803e3bb2d246e7bc7755d0bf7dbd6fd369afedbfa3d9ce34697e5a2fbb6fdf6fbc6807e7befc6ecdf1ebcacd26f1b132a9268e9a67f42896ec4549865d6f4a727f18cc9f6b97399241257d2626ac2fdc68188fc2b8d4ca8d8440f1a974082c3e8a06fc2eba1ff42bbef1133c1aeacca1da4c110b7cfe3ad397b4b6d5bfe8cb977441b37e2380d6ea3e847631397d77a62258c30c28883d92a3de8899591e837d18fb6e86fdfff6d4ef45d4823da9f55f9bb1009ee4d4a3c3311f17f9ba8f47b6ce23ab5480f7a20fa88661521c46539e0ae8ad02c25f4ca01974581bba2c065612a609a856554c840239ec255e52f8d580bb2cee7d1b348e073fe92ba73fe923b7c52f7cfa5574cacd8702cfcbc8da317891e9b3966b46d2352f47bc439a25149df3ee3d643a3135e17c5cf166ea0cddb9e13d26c9bb3e5ad3bb8733dcff6f8c36f566120da835bd0f37ff90abc849edf33f573231549b4f46ddbbe05b71e2578c9de3eea775bc895f51b59d1f393e1490f6e67fb6db18a631e6cc3278d8eb2f17d42e3c409e4490f7a7e149766a13c1145a3b85612a507df7fdf885b28a8b4e747b9346b058672a15c2b3094abe75761354b25e557cc534d6c699e278aa713ade7dfff817a24310e7b58d9b0ca795baa4c655d81ada49a55c2b8cfaf579757649ac5719f0cbb330f97f52bc788a8dee5beacf5fc235e6a172622bfbc9598667d2eae9de4520ee159cf3239d3f42abbf0cc022a5cc3b28c6346e41a2ee558867d42fcf25cd928bf3eda856177f698f6c938e6c1357c6b25199e5da68c67ae909f841e1e7a54362e36dab070d7f4cc53e21e0e8652dab24c85971b1783ed9a9e85f896856a1ae679f5fc240eb6639ab6c9b2ecc3495bed44cbb658fe93ad655b8c73edbd5d3a06dbb3adb6657a9535f7daf2363371a10df3e859966db29e4db0d08e7968273af5da324fed44c77ade603d6fb53deb79bb4e504a3c55d3b2142ac5dc623daba4b85ce5494bb57a9551382fafc6d552389b0be584d6b936191cef75c279b093594713bd5acfafd2c13a4fe602891ccd9379ddace466f02ec6cdbcae8375b2eec5c93c983753f18ee6d13ad7c671799c9757e36a1cd8e6daaf0ebff1843c1c7ec349c2e1f09456afb2c76f3c8ff31e4fa1e955bee9fe89cedf24f17437dc3fd1799e847bee53682935cdf2a8989ad5f1fc2a2ecde2f2a7b49a9542e3feab791f6cd6332793f51ca2f52cebc47ae6cc7a0e7db39e479943fb64b59e3b3013f8e2d4525facf34af1f28b75689d17e8727d9d0e0c7c716adfec737562208cf3d1f42a7faf8e0c8c7166df07ebcc382832d3079b71649e992946a27daf8ecc130b69245868d65d3558cf9c1af892f58cf2c57a367568a3ceabe3e25c3d97de8365f73ae48f6916c75366c73d7ef5ca06274570e3e47795d8b57102f36a5c6d73792f14c745736d340f461b79b397cc93bb9aac8371b3d249985d3dab74b3ae8b71dd4929848d3c311737fbc84ec218ecc4533b01699f58287b796860ed030b3d2ecfccf57985b4b0e691859c58480b6b1e59c889851e976716ba3eaf50e679796860ed13c63c304f0da47d6221cc13fbb8c0d947c6d14e6625d828d67d5c9c0c152b85b10ec6d550b4146c04d63a19f7ead9d5b367d6b30a17ce7a2e659021ad675258eb59c5447a64dddf160a2739313ee395885a26104c947d683d7fbe84f58cf2a9a180626248069ab5fc8a48136b2019b39e4520578c0789ab9f01aaa97e057ac9789528e3339bc14b506dc54bd04bc54b31268397a11cf867568666258856825ca5f8d2abfc31b808d3ab3cf2322403892d5cac95e2ec530bc54031100826ca3e21ce432a21170a08d6334916fad03e219809244301c548b39e43b59e4331d30c5523d17a165d3d7f643d9b683d835c3d8bb09ec5570fcd544454cbb371f2047af54c22c5580aaa579954f9a4bc42af9edf0991543961b0953fadc07a7e95976695a633e5d17a9e7162b0d47b9450ad67d2e8d5f36744ebf9238b791ff232441bcd443118cc73f53c8279cfa905fbbd1c83fb569140dba1ba3de1cb527051702e206429b8278090f10cf6c1131ce9f57b3934fac63730ab8357fb3b600825c5c91655c78157fb3d4f14f509ab902a5d07666153aff04c896fecff9e44019f0c751247df7f71a79338b677676bb97f7738f9df7b9c3c81fb33288aa713ffdfff718163e055c612fabaaeab108ed39a0855d843e7bd079271cdf3700debee71ce732312aace7538121c46efb847e1f750d88b378c28cc71ed66157723e219c678cdae2ca4f0814f46d4f15975f1c86ddc08fc9f468231c69b7eac6df66b8cf3e31a9f551cce26f86e165f6ce1f15804f30d0c515facb1c62e72495782755b4bbae6f46ffab7d65a6bad39bde9ad7be86c03d1f41be989a0274f26d393aaee9d1e89686b123eb9fde94fa25048f49c3ffdb66d5ba8c913218fc2f33761e8f17c187a461fa2807f23de95e947a62f991efc1b13278f7423b6bf3d9f1e48feba4fb1985071c47ed47f1e93bbe3ffb23822d9b66de31c4eeedee9a836a4bfe1f6a9178d4d4e1e65f4f4aa349e524f1ac9ee53293efa8cde481ee9a7ff4e462a3a8f1a51345eef3c121dd979ceeb500887b344cee790a6f31c4e8a386f32fa1c8eb6ffb63189ae37a1fbf64bf036a26876dfdeabe9fa866a9dc6abca20ed37dc1e46bc461842153dd5af118680f6efbbe03692182fd1b9010e7108a3771e09134bba135def702fc71cb15ffc6d247117bbffbc3dcaf879a51a7de8f437b3505ef437b34a4fea7ca9f328e3cdab2df49d0e1f8d37af484f7aa2edfb167a52d5371c460785d14f79e34e9c74d3773a9cdc9ef35fe63c12eec9b28b7f2f8f8d3b7152a33b12ee993822bff847e4df381b47c23dd9393da7c39170df794e6724b7fcdb293f27732426de248ad28f4aa51f8d4ae08f3e1ed183e1df8cdef337a50f4ba3d757a1d08b4652ec212ede700836fbbd36409c14f9f69cf7c4f1347e2379a473bae790dd737ad7fd7738a9fb16da74bf756a9cc0dde34874dd09ddbbdfb8569297e4bd84c301499173aed1f7ab72cc11f855db23e99e2cfbe54e9c74efc9fbdb7f77e470bf3dc7e170381c8723f1363688fbb9df4870c7dc09dd8dc0fcde1ae4e548ba278de0bc90ee8ee4eef7723847e2f126fa3bfeaf5937afeedfcb6d2e7c355a522311bff4bbea77ec973cd2410ebe3722014110e44c74389c91ecde7b1d729ef340f4f7751d67a2d33d8773241d6fb2f128b6bfe1b86d7b0e73f9b7d3cdbda25ee1bf39e915fe25dc76834d7a63139d54a2c8ed9793e5ae894ae418dc8174dcabfa1a1e8866ddcd6d7b7b6ec8fdcde4c2777188dff5bcbba941249f0894233986fbed83c8313a14c27140b67fbd79a2b85f6bd12fee7157f8bb8fdbefc271d7071faaf39dffbe0e278f7424a413ba1bd179ce88a4f3e492de79de792696f40e67c2d323b9c14e13b8dfbf9ce79020212be0063884d1b967c2e348784c36a081eec449e7fef27b5564c79170bc4914fb6fb6df368fe2d4bad9bff128bcd6cdcdf637222f3b2e78410f5260822bb6405b4aee0c06871b2fb6f0843850d1ba371b17f5eafecdbdab935eddd79c2fd994e425596f0d7c5b833138678f08ee6056f10d0c713fde577f1b63ec626449277bf49c830fbf0bcfcc5cd3b43deb39b732b89eb288820c5faef37cd8aeffc3692aabfe746d64fdd229766d272ea65372433b19aa5dffca6515a75b9d59e76891555ac651af8d0e4caff403c99bde3c8ce9d5a60451ff9b1f36eb2d6edfca707bdb9d087dc6dcd5ee0417829787c6365b34cd8ed9f0e9b708646022868d7dc0c5ce3ee0813e7d2aa56590f1557df0010f44a1404fed8118764babf60905765427479d14416f5fae63019271081ffe14bf7426533d7f0b88471ea278b3f0c2d5f3d7c8acdce39455b8659463507abe3a04db16385eeefa0744d21bb5a44e9bd35df6720744fc3a97e2f7fcf97c3ed9e3809f4f87b3c1124236bcc7ede43d99fa96063c6002a3be911089e2209240280487501220d01b4013104537884a7c3e6df820f178d8e059220c6b211320b806b089ef53c347814e270d1d27381c303815f03c347816e8ba337417e038337018d832d0b9096c6e27a1b92d818edbdd237179e0cfdce5b8aedbf6e682c7f5ad7ffbdb400eec0c10129155f967dcde38349b07c181e191cec37de779a10dc61d8c3b8cb515609861107a74087a21f77ddfb6bd0de46d9e6de33554aa1e761f4fecb6bd89a07bdedfbdeef8fd44363b140ad9b64f0bf7cf658e4756d570d118eb37ec717b6c04de39e6bb2f140a9710f23d877b2039e4e89e3b87f3fd11df6ffcfe37026dbe47f9ac103fd1077e1f07adc05bdf6d7bbadf1edff8dad84021adad082de1368d32bfef3f8cc32584ecef72a61961441744bc819c07de1b033e794a7d8b164ca4fd3d40cfe8d104aeeac6a5e9ed452691280e120885427048020402bd6102a228ba4189cfe7d306241e8f870d4b846158630204c13534f17d9f1a28d0e974d2e00487c301a3029ee7a1c1025dd79de1021cc7990103dbb6f5dc66604f60ef5227a175927c6d6809e4dc7367d3ff71402f14b28490ce7bdff9404ee7fb3ef00bf76800223c1dad791047c48ef33a2cfd1da88d101135cbf3917171017542dbdfdf36c7093b8fc4e5c17dfe6b448ec13d737249dfc450c8a67bee77a370a010f790d7d09d50a5fa3810f7dc49255d7f2884db2f0a9710a23ffc91077a3ce3296c22ea551675f86118f268cd5bb67f2e86f364cbd789e9902c0ab8796b4f031eb03d2393abc2570d3dff032e8f24ae0d242ebeb743f38cc0fac18d93fabbffc21ef4734baeeeb97b9ddf8ee8fcd71185423eceea9fce8b214d678b204ecf21a9532a75c08cf285175e78e185175e60ec856ec2771f8f3ab276e92123b3374eb7fcd750a9b82e8b5a5ba1adf0c0bde9297c5bd719732016f2ceaa1b84c8e5405c5cb60944555eddc77f6f0bde2d0b68fda4df2c9ac076b3d38d4a24d1fd11dc67211d47f5903be7bdc71d891b6ebcc9f7dbd6f9ad06ffde7f5b605ee9bdb99705d1e3190e23c00247737c73b35f16257889973794b38fe09edb41385aebdd82f441af436500436f0dbbca0f4c81d6406590710e6b746fc95e28047f17ea521db7e49893c7afca31a2d771d231aa6352c79e8e3b99d0a8c71776fc1bcf00c137f2e356c7212a92a8816580d111c36aa027319a6390a8d143de5b2004023d7e1cfacf03bbd06bc9311e308736a1c7a1d7211d7826482b3f8a8e8f4c8f051cc15a84b8f8962016508417b30f3fe9214e86fef3d8021de32954f8467e0c038ce21b229a1840df0477c178950004502cb9207e4408c3600a152a9ac2a3eaa1c76368eba00fed0e7acf873ff75903c9b7766bb786f1deff2da791b8e95007df6d216fe77dffa53ac771bb737fefef8b448dce3501ffebdc9329fd9242eebdbbe23812353ace1dd41cb839eb1a9d7baef37b3c827bfc75ae206e2e7795bff3013f1724af32f7354c9842bb706a280493b3818ef0063cd8a6d0448badb378a97b8b2288993f21eacf79db7d67bd846f6fdce79c778d2de79c9fe3c61e3240643246881c219273ce595523d750a9543572e6728dcc8dbbe7676fbe8be331c62da2a8c53cdabb0ca2be39e79c73aab3180115f21659e00045ef82bce562176f097d79e09edfbb3ceee55c16be2bfc272720ef66310228f41ba375637420594fb139a10b7c4513bae8025fe184269c015fd145175d74d145175d9ce1b6901e16c4dd0654e827fd6e6103b57f1aecde9bfd7a92c974d1d42b0dd3ab4d35651da6593aa3ec69d6f36a9e4e621722a9651adf19cfe4ba12705b88a486f5fcdf3da781def1ee9555dd9955f9b9d727237225b7d53825c82c3038ddd666557e0ed95d1eb773ceee3fbdeb1ef76e93ad7a953735734024bbb33b735782ccf25af97728a4e32cd1eb99e4a4e8998b416c059d1362ef9ee454d0f36fad66dd2380a0957f53356b8332e7819eb9277a9eb9a17338b9b15c4dafb659cf7886b3b5a1e7ef4ad0f37331cdf29833ae163341dc4cfc7033fe86eeec4224bff33b4b10babc3054417fb58814a2a1aa49248e7a1ee7fcbab163f6ab45d12386ac5e992451f4409cf444d183923ae9313b5e7430984e671dee593b5f82acca3a0a91f3e29c33a580a834ca9654a3dc293423020000a00023160000301414094482f1388b723415ab0314000b5c9a7e826822cbb31c0b22a58c210400c000000000000080800100cf769c3fedaec22d5dbbccf55d64258169e5d17f721ed40d34892cc4f00dff4b1634effddb365f8f8b582b0195c37898c47a93ef5fbc2d62a51f1b46f69dd9cb4b0f71dcb17b86385b8cdf725d7d34acbdd62949421027c8a93bc2281759948e9c66b262b0b0d6479772853447192019c19ca81bd246c931e9fd80cf9702551f43a122adb91d331c43843f9c31fa715bff103697f0953cdc9b5d11392c652246194d3826f3921765a28e34f5c430899e214e7384322f48cf472845b387f9450c1da405b0e8142329973fb4073622a479e41f822ece49164986be4849e78ec42b3c24689e76bb0f58388f0a6c74824456f328ce0f9b2b853168295cee30551f88c0dd814a18f39ff9a5860a35b74aa800f08f6af6865906369b8fa55c98705f16906c61a7bd44eb418a850958bc922d947a350b2b9961a1861c0cffa05bce486fa0a223abb51f25dd9de49955e551b7dbb24f8ec4b370c823840557f2dfa0fea7ad410530389082203f2023f88022c98f5ef183c49373ce0c6e80865e624fb36e397ea0c2fc1e3075324733fee1c6ba0f096037ebe7540aa4f30139bd2b99d25c88cddd25e682a2983ac7e50293172df049b8caa51799841c6e1771a5e530117b0d537a6c509eb744348abad01a6238e3f760bcd38fd5e363b6d00c4a01d2894ae99feb77e18827b09ff078ff1f2f28a5635dfd8a9c8a36b1595d1d6955201d9b03a186cc2a6432989f01c91ef5b452e3fb4eff6420d56e6c6121065860de5e01044de962200db340165ce3b70a0a436695af07dc610d3a1c0f48d655936bfdbaf2f97d0b435a8c82b9910cf3014a9344a5487d5d0d13ccbdd4dd82c4ba5bdebf31a341dbebb868d175b8194294ce26471059eb2726312aa75844d9a6f94697f7f264f7515f5d427869591e44fdab8f5fd797a64d9f33fa96825fd3025f3f59bf3d927c012ca5fb8eb07b103129f778813ff87b278390c828b6309f4574bd4f55b72c8c052def82d8b3a25868c0e2d95c811978f595ddd8cef54b1a20036b3ac80c55eadd5d8aedaf5fce13affa22106e115fa7cdc81609e2349f06ef1f92dd68d33582ecc167889cedaa3cb0dfba4e9ff38ccf7e8120453e447ea98326c03be6511256d8223232659b3df076ff61b165e96380980017a658d5b4dcc65ea324ec3801af902ba22b313f47e94e311e5cdc81c466056592611e0859fe16c610def4d4242fe745d262d981cdf83cba3819e8dd39808ab4653af18c2432d35ef49660ead17b9eec9348f19f745b0b15c10a4b5f6cd2c187d3113ef81e3f36873304f1e6d4a758d70e4890f4f97c5ae1867a8c02a0fc5252df15ea238356d8b7c09fa86309d5fc551dc64c801778b7211cea40c0bba43a46082953cac4340a0e6a35db08ea67aeca821179889c050428d63813eecf9cf0de6f20f5d7dcb9d8fc39a68f942240c13fac98bf10f0c084cccd5a110130ad8b592138ced6a16b79a93fa8b60bb3e1e55b66e35dd72e2bc0e534aff9d5a34e47e17e5ba696e3b1be0f3eac55d5cc16415d5233e9b6bc45bfcdf9d807c922e027659ed3916dda788f438cf1361edd12b711605193880c40e389b656f976c76840e25be18a4c05141a35e5f9f948a08c44b0960496866c4a73bacc2651614a143ab926dbbd053145ccc0141d69d4b570726d30f3d6ff233b63631d878d790736cc72d7ff961815d885ebb824e8ec6d379cfa0d97922b1b3e0f5225c5171ff670f7709244d78694cd4b9f32f747df253766a17ab2e5c84b948bb10c680caae66d5033ed12b69738764519c032121a52766c59089707e99c646118711bf65f6f5f7dd7ad6aca5d652a6ef121775db86e8e711f5df5f745a307456ff03e75f0649f3c337895fe01dba8c6608c7928211d0c8f3f1d585dd445146921c27b1404fc2c501e21c711b8e33fde8161c1284e3e1f12c2a81b3538ab253cc879234dd93605ffd1f536070e536f9848199af550936b3d14cc0bdccc82c4c8163c1f8e5dff92ea4ea30832f0c30f60efec9e3d0ea1d11c3bf162ee2c449c626de2acacc2be3f2dd84bc2680ab9a5e5ff25edef21e939d35d6055a71dbfb1ecb14ad54566bbfc4bdae06b296eb0b4ccef7b84adf5bd4754a946dd74f6f7f29e60cacd6051872299b434d3b243be7a069fb2a51630aaa9166e986f46929a397ef97d937439305a29f270e70a3757f1e16a1cdfe8a2decf2a42ba7b0dc40cdcfbbb643e1e83adbe36e7808bacc31710fc99e746632f7e1bbeaad44b4fb2efb2dca15699b89fdb902174c8e0f189bfcbd301ff14c8cc491dab32be43d51b9fe8f3c1c6f78d1f8d6586785fa2f9869d79b9446a0c14f2100bba76ab609ec2ebf5a563957eac7c8795d137790035cf85a591cfc8321309c0a8bdc5441b76b5c88e1582a354a31b7a55eb84d225cc0a5f83922dcf80da8846541e38e77a38b7afa71da06780f0cc66019140d861dd38edc1253b11895757408456f342013dc62163dcae2cb925216f2895b96bcf9e6f642506cd3ebb0941e3d4c2b88310091841790844e14e7489d94e17865deb9b38f4a2f678d5c10ba23707bc219cde8e1a9064c967c220bb50a12328513c8b435a3638de7dd6f5c7452ee7024d029dd5627243f6500f4e55e4f7cde28b101cd04acc1991060919b8a37c2db67ab0212a0dfb784bdf08d456376f5cacaec0299cf11293d9324f9e8706a70818bd8b7ce0c4dec9ecb802a0b7f8f57c2da8085f4ff1a92b665e85c4d2e1dbeb18b87ba0940e625085fb779e43686d1aad918930908e6f233c2226aed0a9c85cffe4c320f44746a84d6c86a8fedc7a0cdbf8ab35880c9aa1fceca6481df3cb4c28fd14d32504185b249966698a352716824b44984e286ad548ae22d6cc14bb0912b66876337fbcedac285c0aba12f0bddcb6103e591f12dcc7f6e8521435081936e84943f595bd47967b01ed063178e4d7c36031abbab4162d9977aaf34149044344c11ca9a0edb9e74548dcdb2f84a325c8e5f935aaeb7c96afd687e89f9a7238382040a6e567b7abddb13d25e413864b580ca47a0769be3c18272f7cfaf1089c03cdfd29f257d099c20f8588da0108def6b39655f8c32b03653256bdabca802b3820882770e0b3941f56b0743dae1ea923152efd8e6f46103b4a89ec672eb829846846da0c69b3f42940d823a7b228698b0cdf0d767f6e40c8154251e8196fecb0b87210851fd84a2e77c82619a100ea8f206aac480d428fcdf134bc75a8fb241cf75318a7f527e75dddbf1bbf711f57d9ea0b667908b1796ea97fd82d5518502bd2af12909314fa045f91349119244be91cde1046f986d2f9d4c306333db44d3922a422808559f856f0c9612b09598643e420910a67e1f97e2f251bd512baffdb2017d5e28765d4c54d929bef4b5b02fc9928734a1d3b0f1f6485d9a0e0fabbdb9f039834c1fe64bebb4a2d1cee84b8f0dc424afed33cf9299c3fe200cfe1a2aad068c1a6a2ecbf32cf8de7e0dce2574c7339cd96029d96c4d2303d619b4a30c0386cafaf2c47d4222000e689806ee113ed9fb587ce7148f05fe00ef9a2eb18dcd77cfbc1fe0dbda472802e769d68065dbfa048b30065580b3b63cf908b53646571685c56e91b8f4339a5ce62cbfbccaf605d927fe30698cf22d1cb4abc4b8bfb6b0752a10527c39338cc6558152b253726b3457b5a29715030a6be74e2f16edc8d25142b80c107cd4b80adb75e20e88cfb78c032909ffd4d28de9658484a14e2acc3b329c65f849a78c92cbb7a3522845e5129c853617bf5fd60503540ddcff0dc89b6762542b46106f2081663e0c78aa26e030a0439d2baf442946ecf446a3951564f3fedfb10a08c159d515402747a7f0fd1a439b17d358b4e9d9445db6aa78bfee46cb90c179f30576b416d6bdcb5ecf707284436c2db0e46f12a89f963ae7335f4b972ce3ea2fa7d1b1f0a259c17e19c028203f4d8de929fc7c361f74eec813f5db7124eb96f87fc2c411bfda422fd3dd885621283f59cb602157b62e73632c51a4ba8a9e76d514b065c94e35c2835c12935b32a52a70155ca5cf96e4d7f49dc42ceeabc2db4f1c3a8328c637cf0e2a999f0d907fc5398b78c0187dbc3c126e794c141c1149781441d37687cb3019392a1a3f44788e4c7bd602b5e11f9b26078abf10e62717b3f6683a7631e01b14ba699973596a8e24bba701027ec5304754666324db1b5ad965b093b0fcf5b6828f46b750c5b703f0e5a0312ccc821a5e1d76e821dd16cd134c318b3e7dd685d20fe106c337fbad5f91fc28e6c0b82722bc4024b4e6cc37aa8a80e2e1b432aef184f4e1c8b0dc6c347c7ff0d3bd6eed1a5f2ee5b28fc33ccdafa227b4f8310f74ae2a57ea94ec45fa26843cfb940c1e7d2d236680fcb355439ebf02436ac4d525700aff414b180d9b8f62511d01a0518705d48efb5180b1fbc1d552ec5087ba0b7464fc6af60fb9400eeca486ea24d49a34360c899eae728c9b89eb012cd1016dfc758090834e0fae66a223828f80bde02b3df6f9692cbc5046a03a49ff85f16b602493958a7a9c99bf3dc8cef1f4749cb32fc981718f7313d83b7e7e08919409e9018482bef5c61de149d7b9a1b9e22e7d0c33260a78336f0ca5eb9ea0c4f6cc4231b490c3120e1675e4fe85c8e5815aa0ea942faae821528cd20523fb3a476481d9dfed6d3297b80afb66a24b714e91df42a294e0cabcb2ad084384562711bf5560e7be23f6f4dd456ad7a4220a17cf73f98085fb8dc0ba13b5b3938d6ca9c539c0d615df5aaf00213a80d3fd73594b936ab0156064e58f36bf221e10939638c4421f9830828ed95f8e52eab05da41e626082fd10234ab8410fba6a0e89e9c2c9bd589fe7a65ebb90e2a4911a89f6459efe0cef5c72d52e43ea2a0dbcdfb473c0d366dc9b66009286fc11f18252ab025621b571f26d431792a9ffb5093494f9465068f1c624f1a2c96971241bf245589796db84a93b5b2ccc763d358af27d5623e1f5ad3729fa896e37dd4988bfb64b14ecf63c35c9ea795653e1e9bc67ae9bb5f327984b76d8f7fc2896aadac99847cea58ec35a6711a4e5725504f440358eb7b77ebd7ebb832275c6d131920ecb251dd3ca38bedd1074e7397de865b005a01bc1f57a7e4ebf176b0eeddc4bc5e0f992a8293b6529a560669cfdb48f370e422ce5847f9a0c3a2e085c23d3e71d10e1112181a4b5a87e9548a9510279c1a371e5596b4a3b44c7ef33c349848c23c585ede4b9a20511b9c50f60aa39f0809896d06da15d47379856fe797ae19c20893b798ac1f608cfa6b732c65e8d4358b6db677f55fd9d822a7e73c08d3ccb9f443761d8d4f16d0861667c8d019a63b0c83c31838c5d8968d8c14cb7913a809a0e89669e5da706130b7274318bc584fec7e67318bb166b9d72e547ec8a2152ae3582fa2fd5c515fdf724d2cd5fbc543f86e6bf1e231eac5c6690525cee0ae2c3f47b0a0d52e9a18f44bb113f5d63e9ee4bcb94a04cee785b3a6ef49b10e3c8f4eeded54703c55408beeb11a8d1d84977c9555433c3c773f6367f11606106a5049057a578999cad13dcfd2dd0dc8557d0bd738558fb646068e2a9b3e1241ef409199b4c76dc82e9f9e0979aeed165981451407af44474a9a3bb6dde260e43619e7eb31ddc6b98dbc43fc38997a65a3ce07476431d965e50bbf287e57eab5827b803ea7c00f78e0a60f1edd57a2e4fde0ff9f81d91e1daf332f2497c8d42d565c3cc4120c1ff4e56854f15b8c671498c81274cb39a4e3e0d45fabe8293e00add82d395dbb7867fed9014c959c9af41a5d61cd40facfe83eb7ecd5264c2fdf10b507cd0daaafdc6837c77ddde03be44c74ddd914ec3cf70333b482574599d21992c04f22e9dd4a6f38d4ce9a4b88969f0efa933764f1b97ae3b4cb6c4b01050e460e48e3b93febc0e49b3bea5b9777c450c81ee1071d5ba24a53e9fe4e6539bd7d60081a42218fd58bf5b27c45fe27df8779341891977ac7fb6dbd123d7860706a40d29d21d12769009b580eb3f940de3e5a34d710bf769a87b4077fe68928b64151335e5da79b7cebd83c05a7744c37259e149bb07ca9bd0f5d082b9ec6570b013de71ee2b912a7e04281bdbb94423bfd4ad996267cbe8cb1c9d2b06b2df5908719ba48a13ed427ef067db76aacb319aa4e47b67087d7ddcfa2e7b1978ab210c62208649d462530a60381af56231a01335dc1828ea4293ff4ba5da081e800c26926a6bb0008733e43960b2c23753151546bace31f1e48852902bcced1ebb3745d8a4060d06df5c3a54ae7e6d055083a716ec9a6f6369600c8e738195178049555f4ebe0694373df728b69c1134b0ed252601f09e23dc14db61ba9e34ed1217aa44882db33488da751341f2abe0ce5601c95f3117dbae55ed80add23540c8103618452e537ac7f5f9751dada4eb37ceb9388567884e4a2162df5ac6a0192a1f3d1f19ee1a3b1a11b1fd18af2199b0e279956e00371b5fed3403b986db4a5f776ad3f87c9a20845f3476eb797015e680107a16d71d6cb1f0adfcb2ccf4cb1f5372304ed671f688de16d98ddff4aef09d81fec89973fcb30c751d942b922ff3a6e76f74de57d86713c176fec20547dfa3c26d6a95c245ee711e03dd1be21ed00c3612f1d5a7ceea4716fd1f701bbb6808956fda099fd290d2798be03803d6370e57d6bb3e311da2ccd90865a72108ea87ee842cdd5bde13686fd1448fbe22fac280e77a97f7a7a59ed35193d31856d8e5cc7b6c3e593345a49bab08cd811eed84bcd9fc74936844ace965edc9183230b08dc79211c59f1c2fd9e857297b11d9c18b8d3b286545d6c5d961863d298627cae4815a4595ad5d15515340f1a47ec67f89c9527debe7362d65200c87ae434d0e7cf91bc448db99f5ed8b8f908c50c3084fe3e53b0f188345cb79713a42182920601a634ca4458af48fa4d57ffa4bea1841b3cc4288f06c60ed2883f76239773fc944bc0d70e2eb43b90c685666dfddbdcde3160b638aa2b5c430d0d1ba67f5904e66965047780cca3c1034c0b8ce180fb0ceddc7b2dc1ed2cf2334a28df157cdce417e185dc1c1442eef7de446723c83f83a57e565a5067c6034050b7471a5dfb80372137ed3ef8117f66e11afa7e89eeddb6824c31f62f70c5c4a9216b1eae41f12ea079367112bc9e09f80fce8c44896b50753c0b8a84bbb6d070f8c04049d6ab845f1105a634de6ad2642c1572c4ce1dbe0790ca161b2ba6e9094f5862439b900db51deb74b9544dab37d6c13901b4860a3aefa781bc3c41646e62bcfb86587adcd48c6363f66cf314eb2de5535eb4ca78604f0c98c1f1be5b9c24d3eb39da452f0121df1929a93da18f3d7af4451eef67ffda82e65f0fa4d943e21a6c40864766e189d4b9d21dce611eca03029f93e90c47d868a46014567090cf006fa6eb4fbea2f9dc066f6ab66b786ee725d4b28a6e5002a2e6a2e9173e70b9e82b23544d92f558637761ded3660437fa2bc867bca0772b93ad30d69eaa223999296e66a56f7b6ccfe460982f24e0de1ccea895222fbb93dc1caf1ec22b6d36b2737aac0061d3ae0dbfbf7c35c9032e0f1c4999e425cc8f43b6e5816f418161fe877020f581b1e7401ed407c4cb166ffa06d69bc2da1c28847ee3bc0930dcb1a510c73c7984e301b98ea0d1bec90cba0587a0b5363d173e246982ded8da053087931059faf99491b8fb69723853e6e1927e965f0ebf29dae3157dbea7c769cc97e6b70983f4e313af9a8ef46412ced1afc6346b84d91a00f3ded2a9af61e2c6b36c45d0c7e7f55b801d6196dc5557d8d7980fb4afd9775ee3ab47896f9513dcdca17d8d64fc1e213eac08b176eef88e5a4fcd4de8bb53c9f6f06cd70eb5dad724491984b020932e5f0f558452980c589b7408c58a8470a78f81ae006c0c09daf18f3d4e0656254adc0477fa33ca864ebdc2d38d6faa2278c7c055249c9ae32e94159c2d221b63bd38ed87816cbff15d72a657be6a87a8facbaacee295c016167c56306b1cd31c6cb09701eaa197abce621cce90508f9040607744d5581432ce23913cf4ee71732ae19682f82992d022a34cb69aebb7f1b1a57d698cb31c30373d946fa584ea4cfaaf3e34479e7dcb933cbc727cebf539e53b6c8b5918a84e22466cc9a212b5d18da68a9270ba937909eae807858ea0d3cf3807ead4f4c42c76d196d85832c106c918a99600169ff0e425f55a12e9ed6601438abd6bac94841caec387e5799beedfb6c9fa5cc7561370328c874dd07b7cef684fa8676a3dc43ea4f76ea71843d26bdd5403499193e0cdbd7234312bee915ecba697889e4c5d6dfe37f087e38890110dfd3fcaa50a3546419079c0531c1d378c9a6ec82bbf9f1f70828398e75fc438ca1761544ff5e1dc61720ccb7d0ba3427cfbb4057e4b55ad49961600a18ea3902c009e53d02cb4f0be2362c46adf378ce62d29342b6f0d8be993d274813283795c76e3ae13b850d2bf15004e0f7c699da5033b80038c8b55430834b5e4b23adf308823d6fb3516dbd85b491ef0acc104b596441cb318b44940f7fcfbb5b7f2008535e6e23389d8b8cd397fcb0f532e92011a2338693272069268165d53d95b19c623f51e3d3556266f589eed6a6081f2ae12aa0c469b1d390fa7ff19a57ddc12524d3822a112f413824b0bdf9b19d10bc7a6d24db805ee44e212a7e9204786e2a622acbff35c68eb322b83751507e32afbb08ac8030fa59a02d3990e78a7ff0a3722cb62eeefd2bd4829de11cc365bd0602ad4e230ce6e8a7e328b111b77fe1350b0323ac67fc555f0a252fc80e039f596dc7f308fd46db748e8d51918772d79aabfc9474ac321ea24bfc09f2e049801c3b58e2f8c3cf1bc28bb3ee345a8fd4544de2aae71454fa06fcdbd442b00c93dcf71c089351155b955b0a0b9132191f6062bb6f30d7dd9f47a9d20d073f7d307d75a0bc3eade3cf4a84b669e00c5cc9236c331fa0c580edf515be5a829ace83f432b8aa021ea743d0cd65a65839b76ea690b1738f2a763877ade5113b08b1057667be34a2155bcf730fd00b32555a35b77bdc8683fb27d8ba9492367f876e99581f98f9742416d139dc1812a8d0a3cd2fa63c01d4741b1f3371520d6d17326e77430a81694673a117efebd6fbc9bb4b39f043d1a1b3ab88e60e3d75f128afc45bc96ad26cc80302ef6362858d8b78ebdc3af7d725ba22a67939c6d3a7e8fef957a4701b7bc5b372fbf7b99325746c20f6944a5e6c568ad78f092fbb32bea085a1e91dc32e9581648429a3c56b035f92b276416504d44bd775e88dcb4534ebe3e503eff33776f780bba467efe6dff55827b8c0fe0f50f61d4bebc5386301ad88894685b9993025a1034c501bc60843971d24cbacdb84b4343905f61c0dd83f707113d4ce45b01587c8b87c175dcef8264c1093e4b6a4ab9f2e4fc243dcf35c0178ae1233048285ac50b8a76592a3e5c1343799b8b08706c54fb58a9044e33a35f85af1700ccc765553c1353187ee2773072afdb28f898cbc97b2eb1ece82ffecfda8b30a3283ca22d5e26d097bf35551a608f7061d3d1ed22be2016ff10d4efc120fb00ad77928582e465ab6e5575cc1b10fd0ed0d9b483947202d9bd134c0b918ee826e7a13b18e87f4eb730dd81ee715fd3ff7b26246a443fdf9f274d48a4434335f1c0144cee5e43216d77e496cb48d4485e3399009cdef165289602c470e7ce7b67efec549e023960de0001302365a9ce5bb8f4ca832d6e8dda137ca5bc3a2989a1bfda65d885d65f9771ac290b5424e501f2227a520afe83849839817c3db42889b7da6fc135f9681c4fb092c6443fd4a4f8f6d28da9843d63e5d9dd9487fafce50931448f9fc9012db899d83a7b510a15bff53586beebb5fe9ef73d2b557fd162099c5199c82b555833957fc807a0d19682f3e99fe436a947fe8a86562c14b92e0656410feac37af045652b6ce07748de7308d511dac3414755fa5ae6590ed71c445c469d5b217a085c1752bfa8ea6cab7f71de3bda87d58d8d3b488a71929521ba137d2a7b831fa945d23b6b4741e27a3eac7ed153a15ca7122296cae6d76eb1ce3241149c31d63df0d55c235c8eb07244a1a4e665af7db0deb6704d29a2f70b29a6260f4a599b4fa373c69f968c9c626415801566858954df370f1ee108dc0a9e91027e173a4aadcc53b33c6822338b6946a1e3747b90b401d82660f81a857056b9137e174002237a667a15b486291ca0cdf4088a14fdf2c52638c5e9095a5b95cb38370ac2d47d507ca87323223e28eddfac4a5fb9096cce4572853fd99e488523fc020dcaaf150a98b7246a7d3c396898dd5a6e66769b681cd93e663dc5b4c02cf512deadc717a4da5fcb63efbdf08650c04e754470bcc159c572694c531371dc060844a00906544a8dea1486742114bbb1a75534c0ee211f43f4f9497ab31154f31778390545b396cd2819d7b55327d6052a3a035f1eb5b28d1d5bc1f02dfe1985100d94e583a2b10aefc9d1f8257736342681fdf36766335b39587848a2f7f7cf31dce6f55984f614b77ce46e34550a9799e2aefeddc7f19f2009cfbaeea2b70a5ccd547627b20ccdf604074afad60d9f29e929571ebad204684e4293a6cb6d911d7d4fc639e4efd91fc273556ece50c662b7b9e0e1140824b5a193048b330a700be793cd009c7e87c0407b400ba99e6859d9ad27d0304d881a685f89200068bf6b79e8ff146e326e21e59c2858a4e4258113cf3bd80d5b946e8612f2752851b847125d531389b71e87e758061fbc2b146d5039d6c2dd1ad44ec09a5c3dab73a80db1e2b9fc3b41e0304ca49baca3336dcb05271912047e82951644182b9c3fd5d19d50d52aa49c5fc05210ca3b24b9dc84d7c69e6c31f6aed2b3fc717dce8e17d6103ab3a9622f61a2f50f5d34a8a4b7fe570452c19802672cd44bb7726901fcd1eb98bf46451303b5815c5429b0a58801c902310db0145452934dbc96af4a2e7b7910085d3ad8496808d35ef83a5f81539e068d3278d6672ad04a4952b0e9878a9fbf0a506bd37901675132abb09be1e0d01c719eade1483de63176cf7d21ca551d6b6a280d0c76103aaa08a2442e240fd95af9e4a52403cd439750102b35f8d9e9c0a2ee169bb28cd78ef0f4ddd0f73c21d668bf29a5fede034b84d9ccfbcd2cb732097093aa8b8e100e7455d2393b4123d6a0d7fb6db0959bf9045ba2307353485853a61b53e81d144d35460af26c011fed2ac6e7357d7cc515f812854ccc0e5b9bdb5f22a7885f3141b7306100483040474697e3b40990940014c4e1a407b28a80ca5d268e5d6a2df352ce0513c1b3211b8239a75dee982a705f79fe987fda634f2c63ba735a8d16a34c11b9b0f22b1fed9dbf8eb4ba59c1b5a74614e20998e850e503708afbaba8de24ca509289f99d8bf492213209ef836ea575e45be1a26dd93a5542a81e74fbdc6ae7950999c8d534c9f4f79994943c25d453957a7dd133d7fd5100dc9540f3610476f81829a83164a671f2d82a1fda705c30f22422289b6edb5090399c5bc248be9b1e68863dca29890488936e95730c18d16defaf6c7f483da81a8aef84d9345712a92a2212397d9e535c54147251c5919a92a8593e2449d1088631799655f3bb6c4f31bda14c5b8f0db12e9e850831827291e3a9f98cd52ab38a58b897984d6cb1126becc51ecb58c52af658883d1663896dec62156becc41abbb1c53656b1893d5662eb5ffd17ff14160baf8c22607b7b1913ed61447390122fa864e4b64516c115e4d6d8da96a322b5f7b23ee834096d050fe7c4a6e8c091e6745d30fdedca2044f831ea6209cd0d22358ebae173a8b69c0cbbc7f9507dad6e276e2fad670a84bf7b3234029d73b793d80a545c6514d5d2687452a54c50dd95508a5efa35f94862f12ca353b6b8ba56beb6374439ef16a9eb12a7a3c93d72fa4385a50e4f2a299693b25f47f6c817cb1b9f2d034950136eeb07ad91e2b28199e6465b55d4a4a555230fa93c2c5aaaa22625ad1a7948e561d15215352969d5c8432a0f8b96aaa84949ab461e527958b454454d4a5a35f290cac3a2a52a6a5242baa3ba92eaa1853aada4be8cf4dea2291f2b2254764401303d60c05eac99da3688586b7b20caf051afa3cffb568de1fc9dc2dc912d90096ce762d2993e32a3b85b2ac82214be67fd0cbf1f850b8ebeb823919c227fa2236505e657a940e6b84fe3a09afcf1b8281204577d7a7fa0173b3405b33a87dcfce31796807c1d031bbd42f53d0e3cdc85a33e01c42896360e568e533ea05178fb0ed57e54f6516c04efdec75a3bf6cfd9aa0d04d27b1da2cc15d49ed844b3d7e1f46e5296cc6ce15397312dbe301d6019b169dd5d9657c1db260efcebea87905d98bdbe645ce44f776ce9b8cb54c744c9b2ece20a62a438990ee71dd7272f4636f42a0093ae4ffa0104907f483e2df976be4c81ac501488e83ef7ce44b4974cb2e09e73874432222888b0401757a00fce7f9624cfa9eef9bb8436c2e5637646df49ead7fe728d48bf91b017b052837b44608e094097dcf0bc322c6e5c52402dde4dd99d46360d53ed0bb3c8686408bd2088435a398ce5271518db858c782fddac76a67accfd332d941636246d686d48e75687cb8acd274ebf36a118d139584a294b31f4515a026297a27d29ec6b1d750728509c5091f1727a0aaad3bce6c48a56a342c6ada4c8051a7cf10364769975981a05745014aadab83719b8e16d30f585929934240b67fdeeec9941ea48064e8db5b0cdfbb5194a6ec964770ab18579d7936630e47ccc75ab1fa9a81bb25b4a33e066de39be27a619e6947ddf0f144546f1d0c5aff51e9638bb9926e4e872c1cce7fb17f7c2b7d9b5b862d02d2b8bb5d0dd4ef0169fc985b392580bc59b977cf95626041aba5091c660baf65c91336c1e4f5a526911c123db8713ba9b5fa0dc29f14c62ce349f67d7b5f9bb8fe7c3412ea6e2416643cdd19c7da26bb2cf8ebf758dcbfb45b8cedec1720fa7b0c554465fb599c380c4d312222668c6e88c9d99e48e1ad18ff12c55c793363e9a77800c6f45c1b50577174bd0e49f7ae55412722fdb854af21ced00b8af7288aa6df81c723ded06cdfdaab8726b36a8d0c580c84ab075d81a8db650c2991fa4b3c9bd1e90e38c800e5c78de3b5a2b42f340c0450961568b4a20ff58b93804831e20cff4bcc6c0cfaba7a1e226d0495b44abbac815ef6a813ef226c46313513b9f6a4677fec2d015689faf646f020044a4fbb6534af5fe62bd8e54fd1c5cab9f496a50b12fccb7593190da56adbf064f45473c36dad25600615fe3596f57d08f1c51a59456322b9c5a9fd408551613636bf85512150e5e12f214707d4f0f19b471d0d8454652264f71056d307b597ea1f682341f48a264c45edbc94383d23a00827dc75e756837476951e9d17f266b7d3643912d8724a2f86755d644d3854e486e2cd874c1a432f14b44f4935d9ee1547bc95412a74f4af1af7e391ec68bf2859e92bdfc28d53ff46df2389c5a2fb84ae2f54929e1020c67c4853cc0b524222b83b36be820f8c396e15f2c6401eb6d3aa25cb9e1d0471d26e51acd4c635dd8276929b373304726f43f33ef288face433cbe9e48466c5822334dc15ebb3ce95c2e7206c0db36553baf0cc2925d9bfc0b280cf4968ae17518b083f8b5c8c47dec7496b8de1fe030865c4c465096dc5603d7930f70d4c069631e559c084b62e85eddb1fec96092dfb27229377cab8dc3f63eb4b8386c6c38c85d29aba493ca1897c3fa1513e83422bf1e3399388d00c109bdcd81f0b328ddcd42b5eaa3d852f3985c570bd6fd026daabbc042aab5972267f375d1351795b40bb45bc2842eb216f97bc646395ae088ad1ef38512c734c15cc42c0ab3afbe9a6ae93853ea4b55b270b8adcb3fdf0ba670604213be644afcd7437ed20eece779d503296ef61eb7546846aed4a885c35b84a1246df568dec8eb9fbee3173b3f9485f600754a7d98d9a25562534af0b796316de82717532cdc0ed4c71488885fd0d555d22b04ddbf9b377f55c55e2953599d44b7bbe3d034ff32820a3d9f5192734fd6241eb4437d6ae871574120ac4d4f0f4f55cd0ac65acc93459d6d6870aa24eaec20a9c35afeaf5457a734edcfc1a85a5bdc5e96e74081033408ff0d48eb189e198563b068bf8a00588dd7bd1883d8742381119fa8b9f7ec9fd3c4eb375cc49180a18a2b1245c8c679109f526391a22a51cb56c621fef68474a7a4602b26af39e473f189ace38c3b2f87cd71c4737a61d9509ab641938f83193b3f9444e0d702d39af4e0e3a9367e7328a8b1bf7eab2ee76049400d62579803f99fa2360f2a5440e005532b6a6104b9fd2cbbd9659dcd6cf219748e48152b75b5019062b1e5e50b43814d8ad5dfe94e491009269a0e31450c7a898608f7f486d5e956518c0cb78b23ee4d9305f7a7f00899bfb750720ffbb663635b55d786d13346151dea3f07005ca5070203f0c4714fcc89c1fb5cb827e49ba69cc43c3e43057ab8398296235197d3bc4caf062e550ef9fbf05cf338dd48dd5e06e72414d1d64826e2dd8b9d4be6a5d5e72ff39d610c3cf3af08bcf649fc27f4a0b3a15c116e15b55ebac7be903b35c30c597687f6c4f89c66488e02161e170d2ef7cfafc052e768acf88137443bbad5875431bc37cd4de626a932fc4a2ec17422b6d6d76b62218a104c81222b94f8b7132e6f846d882678f88007da7a55b97ff54c0f45c9169f0b3e848954d15e00109e56721027408d297c77218f674d4e1232007a991d6031f487e99cfeb4969add19f6d47f2c6d5267c0faaa405d6eaf56cc4370a0ab9abefe9ee5bb94229078276876210970bd1014468c2f505241ea9b6a364c9fe9ae21a3da68e3381df74321054d6d608ba3ecc1becd64065773b52a6d31cdd595f0cefaaa8a2a6542f9630b3292a733d9ec4992f2a77c9c2853a79f0994640f99649f28e1b3c44ae266e7ab144f25b0c352f884cb6a62cfa48c1ae9548794b08cb1de0b59e1d2be43d96f93c8237dd44978d1ff43062c030cc343ca0309497b9945201d11d6b27641fda940f511c8b6cdad7d8bf03a2f38b2cd22741c1d85f2ccacdaca6b9f0e7c029f04c5cd756570f02d03bba8aad2f587d1cd1413ecd644a64fcd8371434d53f7654b3c64a2193bf864362ce5894d71d5d77ae3f64374ad798f50a488bb3fb75d958bf45e71f7810f46b67066172dba6dad1df19b5f4937ad592a2f48631e34f5733d1939a882a97259c6ccd786a7c23df61a7dab5e0deb89fdec0de0d4d50c7954e9a5e0b18beea3a3eb06f710479f5b5047f427584c6adf122da15122d1dd7de440ea589b2e87b66dc20ce82407a35ebc3b02b64003517c9f43e4ea0c5d30e1e900424c646f980102adb3a7842f36d9d0aada7a819a80d2d808520d2679921ba22ba5aef05407f7444975cccf455540393dabc29fd03758b7c4f15fdf6f2fa54b47ad8a2813482888dc61977c62ee79977e112a2bad48a7945f49d289f1b0925a7f8816a71830d2477e7001171c22506435455893a9aa59849d2210432a4e4d83e0a60c84246e3a8ca08a9664c5ef847515067ef25821dace74809b3196a71cd9ba8e40f682d7d31146d62c2994ee386dd883c91215670073f156fadc2b8eaf45a675c99d060736da4a0958885fe2033482d1be76afa03984578b6ef3f51548318e9e5cb7513adee41255655e6071f5ade1cc39fb242f6599fd52211a1f2395f7ec43024933af4eb13d83a2b9a05270d2cd9f6d19cc799b0e6f6c753c490537a5f0db920b22fc6d9c3d365d8eafa06dafb3053a61b75cb25a9c4b0dd3f51f6e5f4ae1eaec0fc5fe0e657d9a6e00ffd9eb1244f56edfb231aab120fc79a503a4653f504ae26c25562772b0ed21397f7ce0e9f5cfb06b40cab9578fb6e1fce5570cf56b46ab5e2b83604019184c7980d76c49054dff484ad3bd96e5b5b9d48df3fd7b87e6fca92ddbd9911efdb2d12af7f6d439c4fbb8722a39912d80fcaedb8341ec7b773c9989d0ccfeb10c2bf27020e43432e5aabca32be51b8ab21aede65bc9c01a382a8c991ab5cf361842fe39b80c11a8b8a7737188a1da80e21ac05cd09f870309f40eba32931a4097b6a9d2ad74d743f27d7bc8b6c3cd9e3d5936a233fda9eff0ad05b81ad435e30277b2a800fee58c97f9089055e349e67d573fd1a0aa092c18f0f0f88a9bb20deb7c9c25d850df0f27133e55977e2ecb45567fc4cf4d151d54912bb1f209cc3aa4d2ef5101e93f7cb078a12c18ed687bf742cf31e05bbb08ca9971221f07c4348984d34b0a64c2475912a8d95a7f3b99a290de5ce504a4ea9d45d5628c23cc8e29ed094bf78653edc968a9633ecc29035dce3395baf03376ecf50ef80b3248bc85723e243d0b1ae54df01cea614fe4fef4819321973f39da82d8365b09286d4079b91999c20fd5c42ea6b0254f114ec0fc158acabdd8c89c4c4d3b448fce0db422b443242eed1a9b584949860e5cc27b0bdf70bec445c4ff02c5ba46ae03a53c5042450ea69a3310f84e523cae9e6856529f197fe281f98a6e857f18d4f036e87853ae70878a83b71aabe36e01c63675038ceab0103ef2fcf5079cdf466316daa017525e030cfacb048b947cdde23ac8d28ef6b8e4fd11d1d4073f2a3559af9ae4d202132360a683c5cb81327fae87f9a612bb0372474d68be24e201bfb0f7fb0059320d10ddf083f8c39d8c4c2f957fb0f77520ff543a52e40b39494315622228d65605594fc027548143752c329ff618301a8305140e51d20f51f4e4d80e61748135b0764f887b6c47036c964ac67f8961ece46c454d3a6f648be0db1dd192095d3faa2e9aaaaf4b452f9ca918168034ae29f21e8d49e681e8f0c2e415885e43212d8163790244e3546254bf0cc1bac54b178db243243b5bcbb8a2e8b2b49a286305ce69fdd3864910171513545d45063ab288cf62f873bf0da1c881e42d827a13e3ddeb8fc1cfdfde9cc8da57a30d8b11f8942caa394c28b00f4e91a4f72f354f4de3bf52ce4c2e14cddbc815a77472592c936279ad822b0232a10dd591dcfcf51a7a4133224d748dc0c0c1e96864f20ea2806b943de01a9848867bc0ad90fd812afc671fb23cab9ea76265ddaa389688003bb46c5588cdfc7d00d8f8b3128709635408d219d432311a7648f8cfebaca1857345add878160abf1044d1e75fa5b06970e518a2b2fceb4cbe775a393ab5a5cab3d2b82d3b30880aa7a42d8c7042f8bf32485a3567d3917afbc41dbc8cbfb5a1620df8f91d16639882e3c31b074bcc695e2f2f7650512d6a60f674e06742671450edd771bc4ba7b90edf490d14d348fc20bacee561a1e3a30a1d15781efef79447f861be052c357b2f70df30b167cd9af73267b6309453091cf1e04cb804b1d89f8bcec9e374fe373ea096ed5311996492ddddba704d30b7171ea388074a9ff8b72e1d658eacaea76f9d0d517ae639062852a22864b6856303fc27f7f54829cda5f230d324b9eab787f59cb1701f8a554915f6d6118826da801f6fd53b626cc486d2e3b13456fa878787aa61c75dcfa1a1d8719f39ee15cd1d395c53836a1bcd92750378e1c5ca216d1958d9029ec74cb46f3c9d29789f7a136c3f83ff4be110fd006df402d03edd671169f7c1fe856a99fb2510b498b819feca71d6a519a2aa413788998e9787ae40ec323844783b112a6a9a3f7558b9c470236c5ca3f198765f30d16dd85a7308b3c7d80d0abd152e6134a0984064774b65eedee5e8953cd906a21560accc04d1ffd9d19210ef35033195cc3d1feca40997e3fc0e54a0cd10ce3de0622332a4bf901bcbb7061d5617a961d122600b3c285744767e666c3fa8c5f97f7a474c18e2c028f0d8e955d5813c777345adb17e9bfe1484f7173905f95e7d153e543c213f3e8223c18bd9f8d0bd1c317e67ac537d1d83a1b0036dfe0f3b494472c240185d8b9ed226e4d1cf85fcd546d1f73c7c59f531e9d0d9b87f600dfeed286da326e1e279327fdef330f771c0ad11b98898683882623023f48d06ac1ce83691fdd748a351e29c028a88e1d01cc7c4fecfe070a6cbd40c2b7a1ffddcca3c189b3e71ba29f0a458733a2251709893ff109e0ce3cdc465bf0129a7a6c00658a01d7c1fdd0e74bc2cb6e45dfb7fa439cb9ba761f1c1f9584c8616f2477ae8295994eff62af33813eb1182892ecba925d56ba0feaa0715b67db462d1b2693d6ccf588f8b8b0f1968ce3a383b1c9028da34b76126f9bb65355459c96098915c9152f719b370916bf79af3d6997c9def470fae121fa2b7d88e57e55c687034cb31719ee08a5a103200e6df0e8b57fc71020d16796390abc98276460587999d06f1285154c40d8ba242fa9ca498d62643db73a0d1989b6437aa23fd6f087d4301ea7c4fb7d4470d62ae27233c20da19ea6ed1765bc0707a6a49497718b7524984de784e4a6e0b975e65446361a6cb7c537454171aac845de37432845f4eb556d14b797cdfa28535c87775ac450ca5797e12e4e579fc1016902bdf06e9766205d72a45f4be2636bbe5e1736bd572877b9fed0ad233c764c28a889175e5d02dfbe5a1c96c5eb5c04be9291aa321a02e98dd1a325f27a212f96596a7462f1c511437676e6c9f1e8b79b493ffd650a229e8f2980b0adc6b25c02cd3b0619332da8c1672451126e80ef5cbf6f4e80d1ae05757b9cca79014b8a0fe7e0d015d7549ce49363db06e0d2480931e497717a805e9060ea6d02308e39627f518534196b516f4d413bc2714600a0b9154c124f37e1edc1340816bd1479d25eea5afa10f002c792a723fe86e89c72202df78081a3d2f5fed153c4f2bd090b8a5e41c723236f49abcb38166afea60904eb760f090f1a37c19a15f8c1cb90548099734e80095691630961ea8bd3fb21a6c63270a41fcd211a7841486b56444c73e2e8162d50593622b560600407a453a719f15934fb7eaf4f1c469c9e85fdc8c013039e627284e3a0ee94253ceca86a4e335bc15e94a237d76a4891c41f232de0c6b4297d975cd265adf6b0f664031b362076300ef9b12c91bbeece8a872ea2b076aefc2d50f2db48ce407f03a07e4dd4c570bed711fd837020d41e7625bf83d3713917fb60fd4963584becc4a5ee5924cf1f350c8a40e9ac47f18e1679cffd1e4fe3f05185747b248bdc0de6f3f1a8bbb7bc1ecc06470d2614ddf6eff5497aabb8202321008b0eab01dce6fa5de4f2b960b8a22faa126857191337ecd9a103a8d617c1caace8edf52582694dbaf4e036588447d01125c1613a77e3165c26d3184329a0b9291966d07fbf160f4648b57edba0fbfe620d8b0e7f640c3d1b13b02571e383bc888411fe2ebf99e3587b6845ab0a51c0bb0711456f752e9e5507e23f8530b2d6389250d0446911943c117b5bd9c5491846e5f0b7414541bfcdab44b4aa3cf1baa3168d5542fdfb82d774ee8c31c678139e2e4917a6e1ca40b75a6333b767d2a6792bc465f7b816376c2879d3711ec6ea96f1b668e35e8e5d6bcb75519bbb01c87b58c63b7caa990bc290da400880ab27329bc9d530b0710126a8dbe2d2986dc191c569c2a0dd343052839b51d744c9f2d0a540f80aae65776383e84cb9acdfa54baab5e1f68922573d136f944793abbc5763532212761152e5a3accffeb6bc31170695bc80c9884d54145847868b0ae0b7c678ea1a565858f9fd1b5c4915f8b5ab3e0510ab846dd67aa500d7b7d67a8ab7b53da500113d47bd847eed862086bafeb855289f89f8443f3a6ddda7e092cc23378075ae2b7928a92c296adb21d83324276551a475bd0818628b05dba1a82455a6d8df85ac2d5742b060f00b05176e083835a6d462a4f0b2d62f8a5d0d5b5519f87813c8f5b19d89680d5396189cd62804716bd42ca2603b13ca39a4320cf569f7232f758de23b3bc6217208b9c8c59fd0b5f5c482d1bf93e330120191601a6b11ef14a5fd10211a458b2622bacb477b711343b79c0823e65fd7d06e11e52037140560ebcdb74a7e4dc431fdac35ac9db77a85bc27ea28ac6ce6534d64695104b502038adaf6ca1656375cae3561c243c8b5c41522514d7111aa20ad0434e7183fafa6f7bdd814753d3eee4ca7c93bbf3106df580fac6712334480ebcec9e8aef1424053c22ced6ef4b1721a59c12d3cc0a8eabe13385a710c17d04b82176817f9d9e1829edea0d294b033b8b0942f4e94c0f4a77b93d20b5b2a6e4e5d2fc18c7e944a013fd2bdc9e9c1aeae6c4b85a78928bdeb48f50413930af3f30c61529241b8f29b2709d071f292cf618109bd95c20213664980a5bd22dc413dc585a9d08bc48dcd355cb88fa490caf92489dd27d0f20533c492f486762195869ebfd96accaacddba438955f87b0705600412ded5798b28a3b8633259d1b29e3bb14150be7ae3fcd3959c5ee341d88c117d0bb91dbc6988174efa3c4ce0d76373b327637b7b0579b9bc2af2e298301dc40df5b383653bda17b23b370e8d1f7e9e9a3cff35e681bef47347b0105180f04590eeb72a7e4edf9805fa8927df9f36c2bf5f7b4d178e51dbe34be2344e3793f132ac3fd72d766331dfc0427292ce2920fdc261502486c04c2076bfeb9af8e7a4f1edc07feb6347a87e64262fcded909d451d4a4ee791c3c48aa30adf19b9a5e3a353530f4f2d79a004b29929fbe6414c52a6dfebd8d8eba857bc42646b2841fbece03737fb2e8795478677ec406f4f86599915172985efaa5119962c196974bc455bfa5bd7a39cb6f198d4779b41fb8af9be6e1647eb1d487c9c5b9920828da382f31e82d77cdc5bd2ffbf7d21a9a57eb8d5edd6b7db4b17f1bda3b87ccef4a749cbd74ef5b5d42d81146ee9dbe518afc5737f5193c4f548fcd70b327bb814423fd2f2e43a2c98f8083ff5ab60fdc1cd8f82b100936b3e2db3c5b637d65cb9fbe91530647939af2c93e7fb1a1ce7471118614d3cb56e13e46fdb979b7a46ebb69eaa35103daa47737e9f6ccc43c9ae519ed1c4f5252f51cc43944f59a1430a98b83e775e83b7aa063cd89c2454007d80f5e6e1b90950ac97b7896a295c240ea8965e7f85b034d23d9b10bd07e283fa31b78b17607d944527fefd6f4eb5e1c0f52f9be9113089a2e2205c52b13228bc7fe14af07171803aa706df48c1ff6ce546e03413bebc0882d25965221ec9ea437646004abfbc8bb3a0185d150c3f0065c8d5ea2d7104a58493c7fe8c28f68245c6ed213bfd4332b0adad89224f5a89f3e16d85e8001aa260eb6285b8488b8b87e31afb2c3ce741b58ea9c69139325e8751af2cb6d4940a088663f865875691df8c4d24821e0cd433e07fb5b4ae4ac07c43b171a084db012d36f1ae288dd151dc8da2048cfba0bffceefec7225659a04d6495962ca1dc2e01f90f4398188137ff09bc334774bfbdbf9872e36222f898650889752bbe6d77d15c71cf94a8ccc19d95a9d9024b03f912f5ee7148da63748bcc43d0e6e09569694ecf4209220096e5a49e24074f0088af02349ec53248ee75cdbb5e4ac24918fd3a14832f290b5d8912da2131c0203b77cd97fd063aa1684428a6ce3e7ae6c344ab1ebbad67ea2e575814e298b3832d84a1eca34a7ed6c12d19c6fdc2e271b499f94f98684e3ec13a99c6dc2d1c386b2dee857a42c96452d13feb953a42cbe06d778383104991b44f8e4087323953dcc2489c0419731669032401b386ede870d70680c0812958ba9af501538f57cd0227bddf4d312417622bdbc04200700ba03575e4c8a1d916eda930e8f4d0262b64d8472b5ede0d82811d28df2356efa11d524e71f94b51e6ee29cff0a19065f41ca3cdca63c48b64ad89bb60a95ed3984c2a0a43e3ffafc0658e24365c40d791a981e1eb8826ee5b629108b4d895d51b2281a1e7f6589dfe39a6423dfd3d93eb5939f87af770a4c720cd2236270571c9c7c8027fbce83faf996ad651ec0d0479094d603b7e0127e11c173b00cde3b22defec702501309069c1113728ccf872ca2e0693651c64e83091fca452eae8df5e3b7c89ad1b187758b64f01b79e5907e8b89f6e9984a59d86dc13eb83c067eef891bd9f6be8ed16dd4128624418e10237ddab152b4a62ad500f2d09a9096cb43f2a81653b18bdab4c6f2adba3d77bf990e2dbe72d72704f85da39f5405dfae6f96c640d93c5cb7359154b7c7f987a75e847ff953438e3839e5d79ac56d48fd24453aa03038bd3299552216453274482a694daccae266fab0ff380e78883d4bd36655efad9baf1274761b88926aa5724e9ea67e0f5b322889033344094e4958bcf516c1b183499fd121978ae47e9857e2be0a5b1519b62707f8257640bccbd9f8b1f0c9106a3a336a83bf9c2dbba7ea68f56eb0dd80d50740dc6e2c62f0716a03a02edec7eb5f1528b6fe2884776029742de178cb12d451134c0ae10851b1a99c3e97751efb96034f5959037b50962aa41178ddf06a31cba503679462c11023a2ef72a3dc48a9dd5edef0c735bec8d0319fc3bdf4f0a6d4c2eb6303c266cc9fb2ce88054223fafcbe56b897a80842569e1d9dc533a78c42f10e07054a844ed278dcb62bf5dca26018ecedb612f011d6fc38c51a33a91db68531db6d45f33e59b92a3d0be848c521ac77ec310613b5cd69b987cca1df6d053816c2a9133e4ca781d5a0755778192311f3c0b9f6d59c35a38950ef4edc822067282d873450ee8a3d608c1f8dc5c980c1beeb7256addf70699c85004048d1609e24f6c9d209f278965bd05c70828b87dac023a49b51065b1b260021d0de65cffb9657131208dfb64fd0b941d0e1db7c4aa3c4b516c901b5fb3815b0c83ee8d51e6c66c4ad905ee8b4a88bb423d7163d327ca8e9b0d5314e570f2b07e819c1f7de78498fbdf713da51cd7d93a81919889c2031e6fcbdc6b51102539c850e23ee0047e13e2da247ad16391908536002df4be2103258a62a9b49dc69eaf9f8935a1a24a6d4d157e999521543396239d43a9ecd707852c0ce6244acf3bdd520f84ea74faf6f742dd37eca785f22476ab89bbd10e74711c7e7eeca4b7dc39db7bb6b36db02f78c68e1cee144031e3f40b2497e4512d76fa4f9c95f0f9322c064361356ccc9ea69b482d7e91255f4f23511a5b7a9f01b1ac0ad485dc534c092481bd44b0c67a490a03a8d10d3a4f6a334f4dc05907e81b2414863a37d46188947031999084b9308d511fd346c7bf48a97ad6466b1963d0e5489131ce7dc4b01c9f165a14a9958b99bb850251936663c9501350d33265a1fd07d08398f7cb2a0326aac7933a28424383cd7d9a23482cc9e1bb32e5f45ae548c520f27b7a868ea7629a44676b949601c5534cac455304657d95f867e92222ed055d07e6d1d3a52092056de85481de8cde71aa50b6b46dce5833488a8233cc1aa89a8f26d490f83102526b8dc53df3a7d780892f4bc13d2a6beef327ebb3a08b9c1972cb940a6c3c38300a6ce2108e8af91368b0fb15370785c8ada6d327648870002c3f36dea2488502e4fe8cc87071753061bdc943aa98dbf34bc9ac0963913fa92b0e035376628a9e27eb4d341fe46234a400f1684d7b5646bd63b4104acb2ddad02b34baa0fbd5060e24d05b0d6b2b4e28d6c4d7e65ee570bc5148d5422ce236081dc199ca9aa9131715a2e072e919ca97492c57184f01b09d53a41ae7f3cee69afbd02496168654f7e9f0f496a54ffdf741077568796ee8bcda6ef6dbe9bc64b427868da0262f39ba8b1315f8540184e49c6221ed46aa0a5c307bec47e38b68b47c630dabd6708111265ea5eca6c76101a475833e355316e29fdb9f161dae68c36dbdae8a68a8e5880ec33b6caf232b5062c5aeddf79ccf39c09381d84aa5cb5de9b27c7b897572489f9f6bf19107250285f5cd2581301d69dfc41eea46c9034f0eab3e3ba3f7736330df2774cda6bbcba8338de1817cf967165abadd174cdc5bb9fa37fe2b14313f1fc134110bd3f0b398b08e90045f35614ae89a6b62744a24a32926c5bae78d208b91f0f7c595a8b4781151c98717b527a6e51995e267239ed3ead9d2bbf702ba80ba14c68b925139091fbc780e51558b99618c8f168f9d68c6ec9f4db74fd409fa874896e8d8eff2e69660839cc139b6b26e7a742b8f3734c6a01e4fa59245428fde3f50b123fe3534ec395ec3fe27e1548482ff3ab801f11782d41895c914163abe54a95c8e286d914cc8de168a43cd7c1c5f8461d63747497ff33370495f6c1b8affa6ae28218c61a0bc27c445fd452332255e9c03b46d5aa439f1e06a7944199badb98810c47d905c73742a8b24d9466c77eada2f0f0ac53ba3eef825813e3b85e5746ee125e8f1d5ee10ab19a8b00d0e207663419a6fb887084026487dc37706b27002dacf64df5504a22f4f31075572217a34d0ba9cbb3ea2a7926943c3856a562188279215ba9cc0d295d3bd70b2993f161684a7fbbd5bec11cf98bdb64784a0fe9a605d1156d8eeb9128723f1ac5ce44a4d651ddcb69ea0a9ec525418929bd4cac288f7ccdb497bb904a11dad61eb45f9989c6f1cfcb02971d7813bfffd2408414048b076264f9530bc87ae77a0c92cc9cd74d9db25eef1bbfb3a0fcdc2216a96ea3c7ca4f79e0f2c1a3272cd45e207e3df038e70bec16d8162954e217be0c75f582b8a237df6030db3e77f120a9bb5b88fcdfe142b1ea619050fd9c9beb137560080c62173555839b34d9c7aab48fd48a6eac7a0251e15ca80860d642e29029f35ddc8d5a982af46bc59654fbd88008addf654b4252233b7089daa5a9bd427681475cac8a6971f04f0b0dd3955c1c4ca4ab4a74ab14078fbb612c8daa05e36364b7f136a513a5bf296e79cb732e4dc58732e4a0965994aedb2131572b71a196df33ec2998c63d374a1fd90631b6c4905bb2b4a3f3d6164124d37ebb27bfcf083c0d35f7787121f78888e6e5c7b2e27ebbb6b2a4358ab317247dd1f3c70ecd1e17b5a8bde436087637fb79985c747f95b319804aee229e2a068d0771789fbd11b41dfbd8537fe7909b6d4b24e9540833f09fc10d2e8aa96d1666bc5c94becd12b9058f60f64920e0fa3e0b1df11d9856c727eb1b9ac4c3612140098553a17b1bac37bc811af218003e800b6f74114fd1efe9de48bac6af93bba3ef00ca4ce56e297853da4ca12fa489522f9502e5ef86fe307a6982be88e26fd4f3b518adaa86ce25c56a8ebd29ef419aced73f064d8bbaf0a63b06d21abfee6fa6eb4fa695a7d2923ad4a5d86f89bd13f32c9d50b0a38f8f3b208f05ffa9945b7920c75e41486674ce086f92ab2ea4561210feafaa33b1cb532fc346791ce0c3539dcf2437d1f5eeb5d91c80828752677a2381ff97919b4f32bd06e86a7b5ddf99c01d517a864697d7e11d90a0404bc04f660570381b90f327abe9e2c23b76c20f05765ef8242465774dc1153e2399be76ebcdab4ae7d1107cb1b5e8e55687fcc6d43b4e875c74b3fa088a539c74c82f54661b1df83f8638e0b139271876ed2b126235169c2c2eb49601509f12c66b15b4a2d301667a6483f25985d945af8f8685c68a13397b70c48a58927cad2e46b055f172484216634b65b04413d07f5a8a4598046e2d9cdca3639661be2785a930e160e92f66e00aa5ad717a83aff973ccc3ac7c3b664480397f83a70788c308991966f54fa68295b2563dfa57530458c0811793579fce4de20a4f74fcb24ae8b56bfefc0778a239971cc3e8116c64ee338fce0367613fbe012246762fd24e046ec33fa6ed9c03ef5c1fec901725cd1b059af6c2546ebd7715acacfcc520bf183e4cb66c7d89fb9eef5fb4b23b91df9162a85f407b7152c11332bb7d08918870761008e165d5638aef62dcc4aecfc0d7d326d0fa791d6787842dee00d98b07bfbd2e82700e7ecc2ab7026bef413c3ca90a91fbbbf15800c2aaf0265fb6e24c171482d8bfd7bdff70d636eef510676df7a31877b3d19c6a3665d90440329b6a27d38a1fa57f75567d1ad40285bfb444bd412ed095e1fb2eccd220985de8167e2b6f779dce26c5526471bdca99bc20046ed84923cd5aa16e9ba428db2f6cc05ac198cf9bcd0d293c12fdd02493fd2939ea3a5e8dc0d0ce1fce9fd08ff66c7397a5ccec98038cfd3005692e2a58a77fa31a887eafd3f398fcd5e245e6f184af4968a0e7f4a4c09705403d2fbbae46513b8262d6ba454b3d87a829e01e2d85b145b192756515330931a855dabea6df53cd9c20ca8daaafe18382799d5864198b941846860bbeadc0d919d53cf54568a695aff4c687d0102c8c755bb0fca8560dd8a2ce0dfbe07daca05ec5433a188cdd91caab4a83604a33fe48ceb5c58dd3daeff00ba620103e987b2d4f61511ded29457407be2068aa627cdf209dddd5b591ec714aa12b4736483a32725c906418de72f333f2c34ea56892995b7b29f9d6fdf4b11002c93be3c9a26850e9a98abf648b5363fc8c8959ec52246a9d894c55b768a9e7102905dc23a464ea19f0da79a55b96b55d61e3820c83be8ed0de44f1cf047708068c9984140b55e5d148fc4ee277e63aa48f6fc3b6ca3f241f4f864e6da4c085cd15c53114bb4396c9a0c6edb81ca0d7c14134e7737cd4c7c3c131837159798bb4a4914a0f9acb95a7437e7b803bdd30606b0556ae7d24400c56cbe83cbc1acf0402fe21e58114039db03ab458e06141fa719751389df721032ffd117bbb8f3322c0081a4b04942671904a4933a30838ce4e45b4d8dacf22ce1fa85e6465f26d87dfd243dc9f5b7543c23769a70087491901322688dd91f7d20ba4d4fe685ba0c98f51a96af54747133822d24501273a94e968e054782071314d5ac3ff1f8af1f2b52fe7485cd1f58d49551a1caccc0ed1b40c1ce400d3b25cee204a89b9f760859f2a7749d1a9cbf2f352582f35accbce1b7db45d1c8d969da55c0ad2a648df9961bc99037159c2a6a4a7575cb1076fac1973244500b0b22e913b81aec4343bb4b209b0dc63732b25bacbafc47b56d69f7dd23735f4de2d1aa3bc62b673a4fc15b636b7e3ccb76c0226230014c50922fb123229ae3269cc76c4e6f81bef761b7a9371d98829a82af49d5486eb817e06fd4cbe20b849ab8a43f7f883e61f39827217346fee5ae1596282b0da739d87d78954e5b9c2b388ee9792de2509a473f43452234f215e79746a9e6a1827dbe8da31aca34b8894d7347b720681868a15c1ef44322b836cdfb6922c355a5ace6eb8120bcd07b31bbbf5a80d63110d0a67a7e07ee7b5c94cbb345dcc21224578e97700e1ba1be247ca237643beeb3ababd88a1c76590ae26c3af2f58e0706e80ac9ae8ddabd876509ee52c26f44c569493625f00339c5e2699b3d7a84257487ce24831a9e64240689600bcb03bb967fe7f45249a447fb5bcd109e7bea2222345e4abe1fd5419be21d827654fa0859e6d7db3862fc33b78173d283af11e2abce3e2e4bdf61e3b240ccfc3eb78cce21df68727ed88c7f374a031401e46590d081b5c98f12a7495738f85f251b3b426714831668033c87811b652c9593283fde2191c7633697f6596d2005c864348aee29cf947a9ca4d70eca9e793c2bfda95fe712d9558ca71834618c9817600c0aee92f7ec380b56edca9eb586d553ac8d0e40beb1f3d99ed32fd6210a3c7fc3f392e642f8bbdd0ac3813028f10c66420a41269284138a3a50c3dcf62fb2b41c19f8988961f720936344ddb5c4e71469c07a33b3de049a5794b6984816d646e408866eaa390fbcc73b6ce17ef0984f8b066564542541c0c931e8cc9ddc67d628a0b107763ed6fb1a770f8b8c58b3ec2f3b52abaffd58f7b7de0020aaa0cc8a1b88fefcc20c3ef62e0213bb3fb31e817ac581cf08317fd0036a8c6c6e1b826c9cc8e3f5ef3a02ac7035c88ff4841b650c0b3ba210a96b080d4c86409ddb6aa7f4a928848aa8a5468492d622e8b968adde610017310528a0fb8d68857c1648bebefaed3b875d10e1e8f3b2e89bf0a8397f600bf973ade3105eebbbed3a18d8283c5ea96e64e665353ef27a133463386e553f58b4f0d2e6e1c28c70f033b36a32ccb9797e1d0da3dffa397ac8f1687df04833bf438a6d863881b1737e66f7638bada1a125336b2849271d6369868b1f732a9b9ed46679edd9f32f51b07579456994a7aa2f9323e31f1b90f901b8dedbd9928f6dbcb053406a6c70e13eb768a204c53da6dfde2c76b3713dfe506f22a5be6571cf06be3d028a09bbf7cc760dd0dd6dc5d3932fe22127a4101e36a7b23d465ec047295631171b3263d4481a0357d1a86918ace00b4d511e36c389885b604c49f63a74210dbe94304f276fc52d0061fac0aeaf6b3b6841ef7e9a0217f89512f6b8be416f30342cc8490aa90d7386a2869af91b56b89895467607133ee25ecd5f4b9348ba347c68cf96704a93fb7edd6688fa19803c15a20ee3dea6d16d4c9f4d0ddeda5a4b7c65ec7ed4f0264a4e768bf2410af5ee6d7e8649bce17be1e8b920f0655958876106adbb6a651f26459d5406d5c7b1d95fb44fc0a44c98ba3706d6974953b397fabeda882e50e59cbddc036bcc8c5918e1ab0967ca3df060cf03f4abea94c83be621f1c036d9e8b35738565dfbf7705c07b1d77869eac6fa1a045c99fa955f8a6ec484684f3441c6ae28c6dc9372f987ac9df3c540978b4ffd8321ff7cb2f1adcab2830585f339ed8efbdac0953a003662292ef4eb3d211c18949b852e6210538529e46c993cdf43365e3d878b15255acbc64e4924255c7b68368e0bf7229409c7e4f9ac2d089a84de78b1f9e3eb1d89d4a8dd03de406dd07e19cde73a3dedc5c80a6ff57c320861aff9d88cda9c47e41221442beee8ec04f83b9c6d6b9f2685d53dcae04929f4857a1328e888c219cead49f71b91d476151b0a2e1903476ff056aa590a180963984f11a8d47dd584fbd758ea9e3168f19ff7a88b1443fa05545dde911e993f4192bdf0f18a8a5fc49f6696d5c9be1a616d4a93303265bc7ea4db5421cedb83f2b9e6d366e729dce879ac719ab05635c4abcdd0ea6bf68adcf8403a5ebaf5dd2b7f2a6b683f62305e5ccd612d1da0c5e84a6b5d52cde72db03c390a33d68660c363cf07f99a1ea6fece405db050280c0c26caa49a8ca7d45e5883807667080716119d39d0c55efd3f67cd9a5bca18afbec6ef706029c7818cd8f61b549c7c4aa002773866b112af0bf7bf39613ada1c0f20537f072b1b21ddb92df7e1e3efca681152251b8450b03583f22a14a9242e3eda8a1b60d0b55b236e498597696000efb9747294973a6dcce0fa3a2361d596f631e80e63d3754887677435fe4551b5cee034d256072bf0ceea41a241c47cdd46ce3aa2b121c6e539212a3f7a34d8d96ea890f9c5dc4de2258b937400329d4a38b26ffbbf1c4bcf5fff32819dadc2d2e9e921280c3600551ea29e503f3b58fb36e8d241ab279f80080d1846281bbcb56a40ab15a3639fdc1f608ce280ae62b0593af731ecb1483a45f7661ca868cd1d1dc20e3cba1bfb6a9a7628d91f2d49033b404ce09a88abe1dfaee74935666c4aa9094dbdd1b37e461f50a703cb3ce5a5fb412049e81e6987f4aa491fa5420e09ec9dc9709aa46889b7d16800db93c2b45d24605883524f4c5c6ab286185a32bf6a0106d6361b9b2ae6765a4ce42c40a7d05fbdcc13644b855a6bd9f03471756d879feb66698d8be4b35dd984a0f1a2637b918c6008d506469e56af807354a962782cda6f982ccc10f59a94a0e7d0b64f0705ce32f0aa8b4241e0745547897851af4e010c735d9c5be48bcee76556d174aa5a80887569690316b45f185107f83f7628e086176529807345afc27529f8aea6a4f47c456dbe57b21bb8a629ca53a4eb8905dea4fd6d39aa8081a678853b2252efbe00e4652d097580754a4045af667c657301a15713af9006f477c6e98d9c1eec6c149551c410e06de0ef1c6985ac26f57f1b981c71cfba3fedeeca1653e4e0fceed2a20080045015c185dbb3f6bae2bafa21815f569688be98f51c21e417e118964d444c8967bef810c600c830cb8ac1f08939c741066c99684f410e92aed6d379b919a229d924817f1cc29c01592b71941c22d71cba4a655a3afec9a14973ef5535e50af988b71d414e8a392ddc237b04b385a8cd26a9047251b7495aa09e18230ad3ab9406379fb0138b93a3cb9ec783ac2a5292eadfabc0fea508b5a75e23a71d98bc692eb58b6078da56859d93e3c71d93e091251579fb169fa64cf5d5c768d07cfb09d12f5c23872ff2b712bf776b31dc9f4266bf7c88fb3486819b6d373ed27048942b43689040023d1649a3a074861a949643609cad2e19a064084e4f0a689cb0b8c2be67559dcb088b168d6fc849937af7923336f662aec8a277f88b9e2c91f5e62dc15ffc30f37a4cd6b6030d80f2cc81f4e8abfdd7acfcc1634321c8c0c6723c3c970329c0cc7b9d0c0d8c4cc980c3765401a4f83b9f45fcc9bd9f3d0ecb54ba6f394524a29e5c018dc0a5cd1b84093e76badb5d618dbaae7bbbb3b86b6b236995a6b6d8c6c95d1982ccb62d8552ca665608c5ef53ded9b321b17a3ae5ae3c2ddc018dc8b1d3dce4c147dcfbcc0c4208b32302e73a2b2899a1335c7225c9e4f344124d30cdcf9441342f296e7134d5421d77ff3b5073d98e7134dc85439d0630fd03ce49ea8fa9208dc3953d3d2793ef1840fb2886372766fceed86cb0d1c1c11f4893b62848bd5d4e46242b89e4ff0da37a6abf94dee554467a3e4dd57a39ce592138fe4ac246921b991b32ea693e9664aca0f8b7311967d77b8dbf8697d584544258fc5fdb02af969e962b8d0587263792fac8bf9b0b6ad2e71b96f1809db92c1e5702e393b5dcd0f09feb47c583eaee825500704ea7443405d914e080d48ea8046a30e6804927eac884172761fb37b7ddb28466179130c7d33f1a8641653492d9b5c4740478ea0b4b67324258d6ec3dab7d2769456467965f11c4669d950581b8a12a0969cb57210445edb860f703d5163e2b6aa3f7ae722aca6b66717619e905cda0d24ca3db04a162df42d740d6f25395392304b718944d364eedb43de768e6292127d0facdc434c56a91e874f47a80fda49b653ac921a09a6df8438e181faa09d7bc992c5d21493b377f00cee45c491e213a964769b9cbd822b253c37908890864bdbca9a76d1bd12e68008631d95cc300c765532fb8b4bb37b9f96d245e7f287555373477f857e3b1d69d05c7a06c2287d1b4b965cbab7e1128ceddb59f286bb2095ccba2295cc2a99bd8355327b286bd8b6b2a77da11845b898035d4c73dcbda2f893e40f5d0c0b16b695fb151c93b0ad550f0d976068dfbe8da576169c43c313b32a99995c7dcaae15e196af29718e9c611c39c3377206835b8854d56530aba668f92339bb919cbdc8655af5611d461c4b9164bc0c0c468321c2d5cecd0fab55d9ddee6943b824ef5e2a2924fb463276392ad9e988e9784ccd43695552bb4a0be1763c76f4556af7e299f554729eec1bb872c719dc919b4a662fc1dc4c8de28a19ab0b51b8a021679f979cbd14dd40c2ca19496bc85d711537a25f7223ec4d4ad0558f92f622fa252fc2dea462b461578c367ad8e897bcec645e93b3b27be5ec990d5317d32abab2d14386e9f6364ade2f3b9992361251f2be1125a311a6f17610fa0af7c3f2a8086b951d53c0b232bd9f029655c9b3579a7b3f2c159f56ab4abee2324abee2da578c357a68a30cd3558c35ec4d6349abd12f194b1acbeadcf64a663761b24fd94bb0d6e3fe1fd63c6527194bce2667db081369ec2de660bc128dc755f1929b5c261f35e57966e2618a293f2c1126d204c9db588a4372f6f2c312692a99bdb108eb5326f6c0cae24bb864c9a5dbb3ac4ada28a36fc71a3db4d750b16963c99b65c55d63e2927cdb4e823520dcedaef2662ed4a798256b1889a6c9a1f18407ea83780e97e42b8b57e92235253efb295653338b3fe181ba98597c09cfdc3db0b247bf5256248bb09a9ad92938448b8a979c8369951d4bda7f1b296e7a3696b4b144447fc58bb0ff68a3e4f62b461b3d64948c2cb2db5031ce3e69da0f6e8ab124c39a46eea54f19076b951d4b45581bab3e8b113d72b03e65bfa157ae7309617a10dee886bb16dcb56246b07aca3eaa217dd61ad235fc9b4a9664f4eded58e3b1919b99b12337d3a755e752c9ec20dcb954b2bb51c9c61c0daba5aae68ad5b5d05cad635532eb34ba69946a25f483d5d04dbb4649ceddbb1ba51ad56aa5d1a8a6699aa6699aa6699aa66d9bb6695996699b46354dd3348d6edaa669dba66d9aa6699ab6691aa7514dd3344dd3364deb344dd334aa6d9aa67d5fd683bbfddbb40d839f76105c01c1954d0431e566e46e1b8c8ad7366d4ecfa66d9a77effd7cb44d0b57b6512bbddcb66ddbe8b6bd94b6536dd3386de480e0c69264c72d3f8fb5aa24c3d628c9e897bca4cfb2b2e3637dcaceb2caee35feb4fa94ddb3df6f62af69d565ace60358c643f4297b833b20d0a7ecd50a57f472ceccd9f5d3294990b7af44584db1e4ec3595cc2efec39a2db667db15f236ce890a91680f8d392b7162919aca384e84d55496e7139c98c9df8d18cb4ec22269c94e72a3aa402c71884cce2ed6b4caaee8f661d5544b4dad68d55478c3a5a6c067ffe0a82952cefe79a9a9cfb37f72d41449a5453c8392706947b8e47ce4ec223cc3660f81b02d678ca3c9d9e56c6a68ba1b35d579f68e55539d310822af4ace709d4bed5ac0b1e46039fb37c27863c9b9341db748ceb29a1211d9584d500108c83641853970324d3c8103584d9597c9d9cbd77c585d4cce3a59458a8e4cd6cee2726e3698b261793b95b9db0ebe9dc365c380e8c8646de4b6f74cc39a860d79fbf6b2c16cae19cbdb3936379cd88686bcbdb3d18e4c1641cc06dbeed94f7b8332ba17204ef6c08acc8d73a2ca12d864eda5086232121b2c6fd770e9d9646ee3582c15641ada699e601062d6c63951dc383bd02adbbd1f93fd93fd32afa9a97a2334d0a7ecdd88813e655c4d8556465432b3c22d674c0435a55d04356c7276eaf251555d4c6a3ea109989c89b09cbd346594f522e3c4097249613418275e904bca6355d256cece6d9a5863635353e5bc1161a21091a6a6eac5212211532e4558a6815675a05538bb1908b23de10845342ac09e10045603716b9f0033933d0107ae1aa40927d0704304879d5d839b62aab82992cc94f54212744421534fa62f3f6faa442fe3ba43d772273367ebf89a9a321912bc928cd331097a3af6984f82520264b5da67b4c9df50d3ae948b43958147a3e6feba52ab812b5a566b666b13e1d677f965cb8572d3ca83d6ce628645294a8085022c504f7d239670cb1f7e38405bd174b938dcfa9b37587a6e5aae55b4d29a655a766f28cb7ebdceba264f6d9cb305f8811fab92b803956c0d6fd6dacfed76b3dfec58da6c9e6a9a4aed40255f7063b8d795c96316875b65aa4cab38f01c56d1a1a39e5474f0f80eae807b0a3aae9b50c0d1fa418628c8f8600e342c4d00820dba00871d3a5e8ad4a86c81054738f2841b760086d50abca780e371e7740d70c20847f8021072c8608915c779c7bdc7a4821c5e32675c81c8816e8c010a353868c20c4056263af00214ad1e37629085558feccd1aa24f5d5223656de170dc1cb9fb94c7a579ce4401938320325353653961411099c994821f10f7de9beb7e23326a39611d91215c3057285551d897b52ca3b43ebb4a1d02050dc055483d758555b2276c7255665e2bfcd0a73ed799d530fda15544cc2ecc28c62126aa4fe948274cc610cf25eebbc3949943b4583bc6ce13fdd7d4d65896ac416f88e1e18a71f18889e1e172b974c0b86074b85c3a60606072bcc0bce48081c9f1f292ddf3d0d35a1a4b9de1acd4e3045f00319d20c38b1364c091db0932b86434682bd05a1a0aee972bbd95fcb8df5c529255aa1d626e84053050c9be11956c1693460146586002a9261348a72a20d3d245a609c81401074029002ad31f0640804c05904d2954ac38ed540032fd0acc02cf3e953c05368d2577cf024660a0557a39696ed4964bab964aa53a81745792baa02c51a80fc27492a09bfcd0efa7da08cfd82535da457554b24fc2340793ec8f30ad0125fb21a63098293a1e511f04caead396ef7dcaa3bd8bbaebd8e32bd961884d2a998df88ce0efe819cb77e80c72df20f70e72f70462ed04328164934ab68918ba31a18f0a542c2f7da139280c7dd1ccc45e3f82d01711d4a02f3447930d06e1c92815670f09b2410d01b97f325d2060fad0f7d02f834e6f02c22cfad4ff703c92cc600e0a435fe14bfaf2a3a69020f3aba6b8b7a521886954123c08d249d2b36895e77d235ae519e94b9f685982fcfd736f2cc5cba21b3fa578c7ebb5d7e94c5abb43c1b1a42fde0b7d4d54bfd17067d0d6c88dd4c88cc285b64e0bde9ca2dcd76e682e2aeba2c520f7129a4babb4569f9698290d06d3d360d0b226c8dd367dca138c41575dd3a7e67215e2621386dc9f5173a9c560f29c37114d213be92938019aed48292c533aabea0611787fb4695510ef03a0d52a09bc0f0057ab26f03e00665a4581f70160d32a21de3769b56a88f74d5cad22421ccb1f4a167346c5cb09c32f278d0d005ece9b19a3ad00bca42e2fae18fa9aa1301a02bca4363ebca4373496f2b2b60af0b2ba18e0657d39c0cbea42c0cb1a937a595faa977586c5cb0aab342d5e561b172feb8d025ed658b718f0b25dfaa55d9912817b08dc42e04a015c2780ab04700d02d39a08600a03530860fa0263a04ff44060953ed1afe0f789fe01d80198eb13fd0ab74c9fe8b38a2bd337e025d333002fa05b995e012e5a2480852af58ae99301700170ca0f310260149e7d4219c02926d393d835fb14007c824d0080473cfb94c284290561ee258d2308837a9119f5fa2197204cca0aba8c7a4d94162ee825a7fa9ccb15148661188661f839973d8bb7ace5ecb567334ffbb6cf769d1da37f46e30c97bdd08ace569d504a6ab617ff8349559db83418ea35c2de076faf3ed1a35e1b904cb720993e2403aa09514a59dcd86c8157d0913a5247bad714b73ad8080273c686c210281412452e1c776f28da30cd224d873ad4a10e852f4f5c2bd30f930c10ed21f6967045fcf14494526b3bb824e958d2b01b367d95894b1fde64a4927d2235956cfb0fa62bcf8d8934dcbd2fc52bd2dc9869484dd59888d4547890178a2c88653f123c330b8421f2341a8a426b3dfb8970f8d144c45463c4626a32428267bee9558a5ca6c2dcbd0f9b68845c2ec4224c1f7a1fa52128e44018a0d104049b7e988408a9643fc58504d3fc71a657ca8b905c623c839a8c988ae4369986e4bee94735d1942621262035e5827a7963298a9c710459fb193aea472545a81914ac6f3a5848248ae20689078aee95be9a8c5e9288726282e4be35013185865c0ccc9ad902dcc144f59b44ba37f4b6176206ecc9147c41330893850bc2882024c913dcd1813044f18c9a4b1086087b91742dab2385464e3e4a26507841182010280c41f3a323ea758f7ad9b14405094121f0e380a2d7b8f27ca2e6251b20cf27c430862c7ea09011d029fec975e261fa526849b0a29a8a653b00bdf48830072c3ef1a8649f4e31b9ffe2eef88c496c30aba22c160b0630abfe0784115e34d6bc011410d1412827d0a942bd266a097383cd169c6c3f9f90fba007269fb85a75729d5ca190cc8d995e29395260525e26ea870c13a857257bc8d582d0c13a186c058499a8be45c12d41180a03bec0022d390d8a5b9e5ccd5df1240bd82d4daf13d3ab44bd4c2f2068b6018544b863454826ad94d2f233fda8a7141f8b9ba2a5a2b582ceee84d65a6badb5d686f74825eda765acc12dd14beefb43a85322bae9d5aa7e699ac9ad5de1a2dc4cd469e6aee8342b5cfb59498e859ac95c8b56856b8ffad1c14e64489ef22272ddfb293836cffb292eb30525bdf394184c172491e6fb3cd97f6c449a56f5cd3cd9772ce70ecfc98963d74cd2fe835bda66a6d84f1671d74c94bd07838023278af4856c3fa70f657741c43b46e746ef461177a758cb9eeef6db390c022e77f748c0956deb211260c99da599284badbd4afd422e51af6e484af8d043a18794aa548a720344b1a596d2d041a13034964e789cc8fcc4c57141eeace04af704ea05137d0402892ee9e1bd999514dd18692c6d2b93ba8ed64f14fe25fbbf3c7195eebd36b46128a354025d748d8950281412711d0893afceeb609d901eddee84bcb4ea3396ec4b377d3416f1f9e845984a63d7f489f4d1487a88c4755cd75da52fde6e2a49372395a426442a69625349939a89ea8b4476c5f6db85de5c271a6d88a5518195ed151d44a3cb577495ee30c732b169554b8f1934b89c5d89af7a78de390d2e73de37a9016f12c5742172e3f779b7389bf3c4d5aa8ecd13e9a4dbecc15d6492d9d8369324bd04b7f4cd4c211d0549b05625f7aa86dba633369149926aeee0263251a48b980c99f48e62fa40ba673fbbe3f3ec730f6e9b3e915e42c29e5bac650e060197bd255c4f8641c065cfbd92c773d25374914a92ee695ba76b268af4ac4de1924e322143ee7b250ac80d0969bc476eecc62a597e42aa8a6d26d7ae49111a520ad5e47e294493fb25708810ac4f7da492fd617d583746f28d183047a3091524a380d86e26378974e23ae181b5992b5e93c22d452e51b8475025280dc712a585a28437674a8e4a768ac6c42551a9448c0ca9a194a2b028aaa5928d6a55b251ac13d7c95553f4886773f8f2e40aef81f0cc94526be927180a41b7a71ec5a17bfd515ca9e8208cd212a25634a2b02a1986d8da832e9e6141d68526a7c8a40081c22d51afee9e4551028585d222b22c1a1d8a12284aa0b0505a505a282c1425b67ba4a6b60d855553a4dfa3b45017335f94564d5d94170a0b450914168a12d487d0b236524ba6501842a48891dc27c971d23a7181e158475058284aa0b432f8aa5e085b518e4a3608d251533387f0cc970817f4ed4825391047ab28b68874e4be28476e9a2034319e06e41e113ecb153553537d14aca648630facfc03050415a4a6ec18aab4c6c4d5ee4d3a6777767c3ec122eaea33a25ea8564a90214066401614e24e4389cd16f77d140b0593ec77582427ae93ebc4e3a718cbaaa9c32a8982997a16a60caca61a8a4982de7f168464d06113052a4f2e11db4a825e82b97a02fd83475e08cfdc03cbde87bfe40ce882b0280c2d4884670675fec612850eb94f5282e7ca8343b84b91c929ae4a76789bc223f7136e897a6db12de6596b6d49b37d682c5972285c0985b7a2db1e58a287e44c0681c692862df17e801e8ac6926650082f83461108db9f40a0f7c07a09b862551a84ad4ab5f622b86243a47798f4ed86f4eea723d4c5cc5d0fa493c4e40a4e80933bb412c2f0b21d4f50ac4bba884b54ebe47a420a90aa0261fad44f0922a44c1992fb5a4b5df54d6e5ad5c1fad4e74c621d6b0e048ae75e8230a00e3026f72d1679210e5d1bc2057d565248d9d5e4fe160b3f11682cb9108b5cfec1130cc53215bd54f28a44d4091289442291ec28de0441f3a8397145bfdd59565d135774d21585d6e2d05a1b860fdde2d086a1b5d6f4c30433c12ad9250d9b43b727e11274d1a7ada9f0a27b21b607cd3c962c3db02a195ea54b96b02597f6346ab60f3dc4f6a1d0da300c475b49d14323574991682c8943c49b1b4de66e2f4daf5b8a5c72f7452fadd25cfad47d918b08474d89a6579b5ead32b9e4dbb11f8e462c251929528c1b4c076b956904614a7dc2e3c405c25c3b86425efd9c509eb832e9a1f020d0a80101d4b188422743b4946e2a8d367ad8dbf8bc74908d929b0e2a5dc6c7a452adb5172fba4a253dc42c59844b917410c91596bc4c79398969158df5a9dfa5482598c67c62462f694ca382c44026452ad92637b94d6c4c6afad4f846c52d0ef56ac265c93397b8b5dde493cbc70c9bcb93cb62dc026d2bdb975cab1d4bce337d9fa7dc141c397c99f2923b081d4b14105178d1492412a5a0cf4b4696152814a2d18000c26118e24ef4b0131d2412894427e1993de08aa89257b419c914f5ea94d6e89f872ff95cd9702c11517ac98b28bd64b4d1c3c6e8a571f6c98e4594bcf4d268e3f39271dab1dc605a65a3f492cbf449fbc12d8d2519a3977cf4927183e913fd46f3198da522469f4fd088cfb8d19494a8f8b69abed16ab9d4d0c060a512b852ba51c9a694629710e356257b6e362ad4ab4ffd90c3916988c406e370549286394a32469b4d9fe847e306eb133dcb8afe83a90db8834e222bbe595323ddeebdc577f49297a8570a8e9497941c35d5e17c382819d4abebbad1e7a3cbf87c34fae753f20fea857a89e2a8ebe056c93f120e8f30be1f09ee78366d3c7155b255f0a864831e824e6240f824064e9a65e0ca89c729e6e4aae4c7e286d7c09513e861c902c2a7987a7255d2d64e78e251a23746ee704fb6c845bd50afc6ad100585610842a26359f40aae881e8620126eb5eae49aa73e6e9d5c3c50af4a86615d0209db5aa1b93b566b70430f71097a35c1059d74195c4a6328194f84777c0ec2f73e18df005742e38ecf67249d78d4533f035742e3c9c5848bfa514ffdb6a0e81ab8220a3d043d5469775ab98f7ad514cd19f5a3a64263890292b3fc614d54df18292433518d7a55d40f1046c9fcb8e589abe4a46bb7b7020027d7126e89c22dd4aba628bea1848b5d70ab3cb950af568dde47c9a0666aaae6ce7608ea75c2a347b72c160b052bfb1f5af5b9bd6883654d07ceb65740f15799d0745cfaf2444dbe89fa5149944c25fb7644bd5e97be44bd6a0a6c9867721200017c2727e00a1227e04a165a6badb5d6dae66e31f7aefb7c74931a132235457adfc4a69a14a929ef7d72e156ab4aec1b7c797261178c5b7d6a12e8a48ba268ff39cb2ab4638988d13f9731fa67acd1c3bec6e7a11d65947cf49291651512891e8617610d0837b4f6a18302de76efd947bb5ac675c06fa3770ef882f32dbba6dd66d97b606da3ada41d4fdab7ee9e7f5c0f2db9a471c20375f17da351479fa010a1b1ac39e37a60e56d341a3f5cd29c8d5e8e46dbbfdb9a0afd1bbd23b8672f496310d9ed98e1b1f4bdbbe6f14c00867df64cfb965dcbb2b20756d638e00bd2b3f188eca37756f378b27724add348ddb92d3be99be6d1b4ec5d7652d7e08a97e16c668de338ee2a35c3367f232ebb06bed8ce7987ed555a843b0f61f020fc7dc333577cbdce9795db966ddfd61fc766f7e00da661b63e1c69d8ecd1ba6b63d364cf78c4766b27c08ddda895ba67ffceb981c9ad3df3bc2467f2377a4bb8dee7194b72e685fd11dc58520d14e2cbb6e4dc801889cc8ee50758b2f6efde4fde4f78c8c0158f839ba6d3369bd90b9165fb2c97e44ccee6b7537002dab9b1a439d3b271d679dca92c608765f03c9a234786e918983c6f5b479eb79d03489ecf7ee4d92f36458810b189d914215289d423cd8ad91421d2adee963c6b80ccc8340f1e15489da93231f31a0fd816245757ec881123b1d81123d648acdea82e2f68aeadd81123f5a5e6983732407efc901142039301f223fb2123042603e4470d913c5f9ad6d2d2ca91e739eea5bb91e7bb96790ed5e1b5e7553a3dca9a93d6da6dedb6c1e6bbae862324cf7382dc189945f2e43a333324d6da5ff7672d175a11515638e00b9a4970c50bb1f8c01734731d05b8bc128c7ebd5771090233574f0906fdfc0bfa7916af09b714041d5ff23ca594524ab99a5a6bad5b7555579eefee6eedc65a6bb3579665966a5acf9999d1dbc12defadabec9ec7dbc1e5c0187405a3be4f334bf6385ca764c9c61e5f589a2908c38e73a27aa479c8cde590c995739615c5a56d2c11d1a797d1357a6ca30cee9cb146697b789615f71aa56d9c2183fe7a3af7408c59e3b2ac7ae4c61a3d4aeea5225c5481084ec8033726c1bdcf924123cbaac7f624848d87688a3ff8077c72fcf8ba73d543d48083554e18cb8ac32cabef1c10d0203a5316f76eac51a3037daac7c06c11f4a97e468cb9d2409fea3d1063ae38ac79d3d59a370a435dc0170e0c07c430356fe087b71104d803357fa798823364d073c61a3538e78c31e6aa85be858e9f2b4ea5393c571fa6d9c3259dc99543f36a822b33c3ea6b9b591bb3b1a445725d955c5dc9e409802434964ea259acb64d81ce19ab3e2aa55438834d1474501b0a8f525a2b4d9d73ce3927a593ce2cd356e8ac737edb4cbf181243268ea3b34e1392bce9261371ce3927a55743c1a5ff40d0c867c843279df77e3e36a493cef91507b8c97d8f6edc77dc7acf821ef0987093874cc3dad1f3caaeebbace765d67bbabd4ed2a95d2ba123a48b401dbca16096fe649ba3112a9a6b28febe3e3d3f2c1f181f9f0208574eca05ef9440c3f7b0bc7aee913681b41dd588aa093c612040a854220440fc718a08b26080ad51a869f967ba49efae328a5a0d38fd3e95471ebc6502fdcba5d89c4bd5b27125d125124f17815e3c037eaf78d5d4f4e2e1049e8e4247492432f4fb2502804794ef22611dd9e9bdf4cdd5b4f23c3bde50e3af951c9131f24dc2269b865b531dcf2243a87cbeea21bab0cf884c66d8c4223113d176df77e1d4dbb4088bfefdca385d65a6badb5d6761e76eec55b2c72b66de3386ee364241e120fc93d60b86507f30e537369aef9f47d1fd75dd7755d8b9d7733288927c3e57644c49d4f901b193057e58747d9abe04a8988927f5e84e9a38f6a3ee2102da57f46a3d2472fa2e4a6d1c6e7252fc128993ed99108ba42bda0b84874d14b11b7307e9ffa25dc212e4f1fd6e58930e828c9acd0c53c11063adcd8d8d9d0100b2d1b2c3eb96eac9240662ad9a1284581c2300c0f42a18084e1d26b60b821ec325be03081cd165366ce1633d4b1993122d1d1b64ec7d35070b556e8a857133d5b8030ca4d0b50dc30c93e492e4fae89ea7ff0c9d5a7d310a60f3de3e5f2e40a3f657ce0520a47206a0eb321b98fb24119a92a52cd145e1044084ac6bea00d2c18c02097a822b9437b72d1d454295241bfec86e4d650704320102a328d55d248a988918d4f89c59645a9894d2545619e9f8f2c2bb4a0d2a4268bf589a6055388d6328122b7090cef20775698416e198ca30b826310855b725988cd267f6e54f253d2304cd1d165b194154cb2ff820242ea827456c8947e6e54f2e3f2d10153c98f4b253f9f1b9f984a7e7c5492b3e3a735512c1268ae5a7572d5535f544f4e80c9fd714921f7249998a925cc9310e60909b34578f1e54909b93f59fc077f72bc7c7cc4e43ecd95890b128944611886a2d05a70c58661780e5c09bd4a2bed0e68fcf0a8640cbafab0b65b7c639f15d81bbbb11b2b3f2d28996d043d9c2dc2b7600a11b52a142d402f1b86f314a60b3108f5a12de9a24c9f4225ea754522510c92bb5553224c6bc14c8959d0645a656af5a993c92939525e825017261c59ac955b44980972bfbb20291c0a8a10a9890cab52f8c0a097a02e4c3a3e2d98a9d03f2cb0431ee607055305b38548c78ad80a3b80442a98a836c554b2571831c5d4d4c90913937c9dd52723d4c55da80f7698a92f31c9584dfd762b8ce4be7716c8e5446e2e0ffb90dcb787d9c83c8a43712193ecdf9c0cb95153c05153a8244c72899942fd982428a595fb274cac20f7515d087d784ed45977a12e5053983ef4594fe47e7919e4a659fbc22d6f2cd4c44c3d474846079f184c134c17d7417db8473eacf28be5a8a9bb2aa98313d775d033d1dda8e36382d00433752029acd902f44ba183004135315d3c08f5a13f965e2e51af3ce9ea30cd0bb744d15c1e161a61ba023fc2a41fc8a570723dc883e4934b84ddf7c52cdc8b2fc556abfa261c8d23f7c3b2c325980434e4be4805b345786d26aa2fc22009833a2a09f2c87dcbb2f4c4057a20ac225724dc12dbc170cbe2f2c6700bf457915b76b09a2a4daf6ca220dc372f5464908a58256d4c569dc4f0c02dd08e116a06f5ea1308ccb51582ee514a69adb57677a5b56b77b6238e1fd6cafc0002bea019bf2af9c23219887d5412fba82412daab926dadc53ef08f4a368ea9645bd03330c65ce1981775e639b10b057389920161a88b6a82921284a134c4c425a25b95293079a8b5be88728870b870b01418538ca908a6d70a9b15464c4530c5985e2b6c56185921071fb7ec601dec5324124d4b3b13ea35962899ae0bc3f0175c096f2ccbc49b50483412c2455ed02cdaf8b8190a061a317a499dc22d419810857a3581720235a32287a8112e2c859279c3bdf6221567d5f7802be1a8ba9c2cd28835b34514b3851d41c0650f341e5859f4be68c3dd58ee3cdc1275d46bb6a8e19b48ee21b9afa99efae5778f70df0de5f2c6ca1bfbe100a757df581bb2e9e50c790c852831a4ba972832e41e834907aac6e4aaa4890954169e985270c23cf54d3a4263795f5a85bac23cb96a0af5aaa4898999422d61925c30bd50c1a423f73dd4aba66a16726341b8cb6386ed8ca3923dbb52db11b984349a4bde4c5477b944c970a1cbb03c74ab93eb7412b97031e86ab46d600c6e35bab77d343436361cc7c5d856231b9b582c86b61addeb3e1b1b0e87d38dee713ecff362d8d5e89ef7c5625f8c5e8d2618a3ae46f740ae03bed8311ac371c7e81af86206057a79e2c2317d8a62e44a8941ea4c4cb24b2ef4102524a7b8a4bc08210afa1255f31814cd65a80ffd6b5fa2b2907226525a5c3595628249b610f21d4b141428192c7acc65a80b5413d3877e8f250a66afe3d271c60b9aed5f740c86e53e7669a2f812ff20f72775217a898190bbc43c30f6011a4bfccaf847eec6404c3f5ef684c7494c09c2dcd83df2b9015353a5c805d471e23ae16173e821b812822ba05008bea0398441d4d4a4aee08a78b9733493ee59d2fbbec1952b0a854222f1a4ee5ec6e276b7a45b7085140a752c0cdd4318898e6d3756b30d593a8a43bae68b513fb8990c84cd242cd06d0499a42709ba06c2b039f4dc813a44d0451a419813978571a42bb3d28da8971b6e29d2587b956ab5cac4b5f7365a732d4a265faf92ba1687d4142934459a26dab80c5cd1eecc31b944d5a082a0662ad93f71c172df66b145144dcc8ed2497847c92d08c3e67b2f846916e119a2d3e072e86d2384eb4475ef44984e543769ed6c57a9224d4d89dd28d2a4ac60a6409849f61becc18ddc4f69cd78247a729db62c74692393d489027d035742ab0f8b0389e85625237dc32d459aae8648dea06b5ca5b33b1d9b451aad5124a037495fc80441a37df8b283857634c9bccc703fb3bb5b73f9383124cf279c08927bc8f3092778905149982adc9a2d406f8c049b98285c5d8081e2650ab9b14b13b9ef7dbecac40539b932713f63f6462fba0c1a535a13d5c7ade9830fb9c4adcde296c8c4a55bb8e589eb96e24bd264a655ab77ab1cf03e7e69d503dec7ae56adbc8f675a05c4fbd8a6552fde1f5bad82c0fba3ab5530de1f675a151dcbd9555ca5daa8189bc626052e3fb8fcba4fb09675ecb8b645b8f53d67c75e7276ae3496dcf7c2bdd0ec799eb1ecaef1dc90f4c062c925a7e04ac94b44a8f8e81550e17905baa64f9ecf3e99c4ab54af71d9341a106edff35a6fc2e5cda6142429486e22b94a97e0997d7535c2201186e5ecdf0b4dce32504dce3211972e9e04972c990414a49220186866a23293e98d4d58a3c2ed979e9b1a2c9a4b2ff904abf81266c915d3e87289f85592de4ac26e187a7650900fe8d94133b3457d069ac27441fa077a6e7036f25cf4bd789e791e0aafe7228fe85ebdb86d401fcfbdfee02632519e933c9e7bf68621cf4538ab58cba0fbfacf430c82cefddceab9763d9eabd4eac93c57a9a027cab6f1dce4ec5e5757b6fe1393a82c9c24284ba6cd10633ac639c3e5321e35657b9ba82088bce612b77caed672644d71ce013bdce675df0f95ac5cc7b2c51ce8d8f571632af92a6f0c8f9a42a263d9158a71d9ef34898e8d3468b6a71b2ec57c73075292aca9c69cc6e12f9313e4368fd3d1f2a5d8516d44d9f15da57277cc35e3415f32c323574f6bf00598e9972fcd35d3f1c6744fb822ab55dfabc7e9b8cf90eb1bbb7c6eae668bc9351bc5184e8331dc271c6daecda5dd70371c6536d7e6fa389b6b736daecdb5b9369766ad4aad339b5bcdc915833bc7e9faf16a57f3d0d1331d0448c3d8d0222bb4d5ac1b234570647a23d36a537db40f5b5ff5878f3a2453fa58f7115a59b5e5084ca63a32a5310b6466480dcd0684b3c99452992cbba1ddd0b1b2c150177aee06e591e99c94d65abbdb5aab69def6b1b8344556e8399bae13c2a1744e4a6baddd6dad154d4c3fc00ae57c2c2efd585c999517348b296c55d99eb569679dba802378b300afdfad235753b792a5185a7528d3d14deedb9b65ea845b760d14d7deeb6c330e8aabd4cd47257b7b55b26bad9b8f1fb9eb1baeed54bcc554d20db70c63bfb9e516c64033956cb5e1de03d3aa30363d2eadf27e304f7d579ede0fa8408769cb2d099ec7e5071e9789ea6f37b86518cbdd0f8fd477cd5dc35817a9a46ba2ba667453870754b2aa6434cba61d21c042c60d7d16ae1d8d18a292f53ab8e597825bce9b3a6b5e4e18065e5fa70d290519cce472d67411bc6952926a72bd176e2f68766ee446941b1c50087bdacfea761a356b166fd9b66d637b1d374e40a393c39d73faba81dfb891030ae1e56decc0179d49bf6d94b62887c2bd71769bfb1bca0d1425a80bebd14e3ff73e4121ee5856ad4469e5e6529fdf7ba3567ab15cc7927d766e3b1dcb5314167d8f1ca5254a2b731df8223c1d8fe0422e3bd75b87d7388ecbc2cca338d3344dcb46fac1a0ed508f178b796e723dc79d1bb96fa72f6974130c627b568a816c72a534babcf58bed47d8f11414e2cb5bc9b1a6a5d129f1010e27cbb62cd30d4509eaa2a4aceddc58d2e8ba7cc4767a8e1b4b1a5ddede1bad463ecbea537db7dd86e47a70abc9f560b5ac49396ed4a87039167d3f3b8d2e67a34a7b284a50173d278b4459b6fe948195fbd93b9a9a9aa9ef5dda732c6e2c6d0cabedc7b578564a7cd5a3477d494c910f4109121fa89c90f110e490bdecab58b444f6e6963501f0f87c1012217bfd515cda3e9f28820c4adb4399c31c20d9cb3e8ab757ccddd3be8a4959c8def6552c12210dd99b1c9dddf14067edf70479a35c876b99282e0560a6783e51042be40d97e8b3b3acecb3cbb0cfb2db918e32ecbb5b8e35b3da29a946a30181e2b2868b033f41ba61964c41ef9ce77d7e180997a655dddb8b7937d9b3e93963af523916adb2307deaae46f4a9dbc2b4cac6c4c464f905a3ce9921668b395141cc16dd87315d7414d3870fc64cd149d63a0404644060b6d0724bc00337dbac9adab61bb9cfb5d41477ae554fed04c3e55810a863ab5c729f659f89b305670292a9e24e404ffdb6c1e44e2c684f26e15859b8f525c7cafd0c7378c7ec13ed242a0bcd3a6b98b385462dc5de12342a0196e63aa3f49f8f68ba49779b89683951cc95c35d3ba709f5ba7a1577b4f3b4a152acb57eb5bf9a75425ee32cdbec55cf7e8d6bd63cedf33e1aa6b93d5aaeb3eb68942b431ba964ad7d33516d538a377b4bdcec25d79b5c72fdac6f9a56d967381b3f1f95acf57b6531c6f3f28b1145d19379461a1486f76c34b5aa69895b722d979a2abddef34ab72fade23a9f3746043b31c6b6b81cf3009773d93e0f5cf9ceb9d0170ee67bc94beec5474dd5733135f5aa298e8bd931fec3e398846d95fc7bc9488366efde5682c59756550ee7e028c6e47aafbf122e6d0bbc4a25dd4c54fd87494630295649ae564f07d7f315a731e86abcd7c735ecc77b2caee946254d9fa0a955c91e32f0ed475ce31f5b31201b4cbae95355c1812f4d5a13778891926c5a357a3cb7d5279ce2a09a56d956e15792b1bcf9238e25973f2f2ac6d6d7aad94763c9958ce5fdbaaf358e1c4e814bdbea1a5c924a9195eb3f2f4a2387c3845fca5bb956abe68871ffda5a569b56d5d557535c4d65e304228391e10e782cee88746d7be20a3e72dfebfc08cfe98a48f2aee45d8ad277d3571cd1816c3cc2bbe71c9cddc31d8f10f7d958fa9c039ef383b8f4f1ce7957d1bda47bd6b9470385c8c612f8cc834be03ff7fce2123802f1cf3ff77efff1dc2b3f0f79df3ba3b784eb1991b02dd0bd2d0323f01dc4de2748019abf7b23e7a07be311dfc1f10815f790f07ca3ad648a73549c2b792a52641fdd2bdd34da4a96c68f4ec10994bce4ddb14741189e97759e679fce73ef59c958dac8c009d4ec8df63396a32e23e946928f4848a61d4b1a9dbb8fee913008da74a3921fb892ddd432b9985a376a8a46e7564d8d5e7f5d6acade16a933106376efd93d2feb2ec0b928647ad3c59d4fc06a32f89266afcfe13c0385e064f019167fef357045cc70760d04c2fbc773efe1993b1fd0f33c111c8f10cf81218e254bfe2efee006459c791e0ffff0def2e0b2f3d03d3c828066703c223be79c53203ccfa3d9e3fc039e6730377b894b9abd7bdd07bef0fe399e59ec5cf40f2e9300220437b9e4dee11c9c9983c5abb488fbddcc23112e3f6093b987b867e1bbb00301d5be097a075932e7decbf0c779863f9f67cf40203cbfa7e56dd9960746e78ec7f3f2b672f560aee7b6331ee1bd57ba7bd8f3c60c5ce9c62068eedc9303dc0efb09dabe4b2909ca522db683374dcacfa508b77238baa6aab621f5544fc4a6c88d915cbf1dc9f5a5656526244a4d69473c94d606034589dbce5a4369d96cf788c2eac6daa88079cfdad76f95335b3bdd6e72ad9f613d0eeeb0a76963b7d6e44c96f5f77945b865d38837e37070386a776b6db9ad667b63ed5ef6ed6d4f47acd6200cca4257407c2e9c1794168a12ab3b9f888247ee5f3147ee9b6acae67e143a72df7a9eaef4eb8185eb0a7d86ebafe04d93926365e770cdf0fc2a39b72195a45b4d25e9463351b4a592ad4ad2bebd657999c682d262a9954697b5d36be7b6ca651577d7304a4bc7bd66759c336cfe581d6d3bcc573c5f7be299875492760d1337fb04e99ba6a6fab4eddcba6b2d596a9f46cddb876772adb844a269fadb2bee4fccb9977ddd7536eebed573ea67fdf6729b6173d9345d93690facb63535f3e4540bc49b26dc0a0cd7889aea0c515f6a60ea0b683f33da19cb2ac3711c30ab2f56d3668b5a7f90ede7ac43c8b62661e6b2ee20d76fef401bd127fb0f8ba04ff61dc6409f58cc3e655ab8a17b9ebd569856716e4b16b9ac2f9dcf67083ab5a92fa0d14614bfcf589ef438b83bc7dd2b8affaabe54182bc3a1b1b79e91c21a76ede94b73dcbda2f8db19a07beef5d7432ef76ef5c936186ef8f9bada60a26c7d99287b95da62b8a0b1d4f93f40b387bebed4d48c52e7bbe7adeadb77c088566db7c740abba579a70bcadaad967f6f22cbbf7c194daf4c99ee35e34ed1f3c8436b6b47807dfc22975c621ea63cc551d5956459cc008410a79587d63bd0cf075acd1e3f31a5ee733cae8fefd1b6b70de8da5cebb7f6759953aaf9f2b0e973a638908f0f732c0dfb1468fce6bf4c1774619dfbff7bdac3444bfde8367a63637f5f3acacb5f63f902c20d02aedf6e2e66dd75e922c327b181b2363afc168ea8b86816c34a2bed064dbafef601c4bcd4222de3429272cd3348c6fad3cf0c24f93b243ba4b46409e4f708126db6fdc6c774d1b3b21b667dd671d69d46c471a3573db685fd2b065cda3dbce7e84bb2c1b8d9ebd6c9a9c8ddde82a15b401a8caa8048db396519042453402000040015314002028180e0805a3c1784053f450b50714800d8cac527a569c49519052c818630c0001000000000000400040005eab0937cd0ad7fe6c840db097ce9d909f0aae25bf4ecb27047164b7db316675184ccac05c0f2de2b2cb391bf8eb817a6beae76cbf8a5f2cfe78d3401764ce54dcf7e890230fc7643eeee92bb2f0896563c3f28ce99a3cb503071ec9c35cfbd468cf8e2bb6f8977322ea441081368380b97a9a0968e668227eb94bcf11820c6440f20b2a2a1a542cba2cd7f115fad974dfa0415fe7bc829e11e8612dc99396e8b2333a21c2ee5965e864aca7b5a381746f12393ded19dc57340eb032bdeeda11b5197ac559ed460348478e3276cf20a3c0eeb035efa07b5496f3003b7c1eaec9f54d6eb082dd0f78eb0d928ece2b032c99ff7178c0ece851f5250194540c3548637204e5482bcb909c44b4cc033ca0fcb254c69003747bfe56929045aed62ed42ecee33e7828fa303625fa92aa0d6024eae88cfc27e65af171589065aa497f8d8a8873e4f33662bd00cba3f34fd727c31ec5536237cca5a211d57c6d451e388d65b092afc8659d62c3fbd66cefdb678f651ba1290e3eb24ee7e929b29b4400e8d5943852269c60e5959279c8814e4f91a7e53937ac28d899eed8e9dceafb30eaf79aa18415059c94cabd460e1fa3d9a0be164ed6a93d84b2a2e6a27b5909d6c91a5a06ec15fd0b3c840afe77d64eeb0457be2cc165b9aca5cbf45171d9f6c2b5c667845336b7e2bce93c158bf27e90ed42f54ee38a6f9d68d0f87115400707a3506094ef959a5d5651b8ce52fc196f155a6a30084607669537d76c4b280d09055eda59ad05e845baa29593822540672d5e62455af8c9d4a5b9fc42c617ae0f85fcf42367c7068d5442fa06c548eb11d3192eb0857519a8d8f08c04d6d510cbf16401fb431744b0a0d4f792bc19e3f8743ac823f938dcbec82ff90f1a9eb86ca390714b086a104cf395de8e42d4897b465e8504c9b9b5c172b60ce035e55c17bca37304bab627a124d3c7400dd2f9a676b1969a02830871a990b4004e17e64b846102aa22699064109f0a4274e493601e6ac0fb4826ce467c04d56abda1bc03eac8124c042604a76920e3d7e5d696214176e7ee287a6aa10a4dd3b4e8c611faa86c912cdc08bb217894072540aa3f1e39c1aca520338a0d23cae23cc9c1f0ae7c786cbb6621c019366aae3221c785031e3d60589b29979f0f28f4346ee62c200d03e8d6e6549055e5ea861dcf59b21f74614a05f4cde2e8a31deead5b7def19f0a019b6c6453822f4ee7f87136c5f6272d9f9be4d594631fc1d0415ae16af3fdcc20463df5abe302fa8bfcc227968cedea5d01eb4764ec1286f401839301e332d5f2b6f7032e2f49b091defb7e96abf61dcf82daaedea2c745b4a67ed45204f9df6932661e341f712b50ac797a121eddaa46aeb60990e3c86ea8d7507c8578ba9770e7692d81093260353da402a6c067c8eb2421a572066590f6c96b79c7e0037c5952e4cc1c21c928a6e6695be3c75f5b5558eb9a07e897218b4a921964119489e807290fb81d87142e632eec75357051fe8d7c95c1fc5f8fcb583faabcf014677f3d1d65fc3da4db8815bed467adf8cb257c74ed4edd9d85a406f293696f890d89ffda9110e81760056e7d75fb3b77db5fdabf4a57898e72b69adb5f45d5c42762c0884b88fa3fad61ef995228f24dda1a9af4286786a9c7d4931064cdf1a8fd7bc4c0a493e08984b12c103d24e4197310bbcd367fea7380d733dafe0a81d876b43ebfd3d58198086af809bd35039904b99b76f3645ade885f9633592e85a3754fc9f134d82e7d7f33ceae0ebec44a1f200a91d7ecdb3d52b0f091338bd75dbe4fec927b0b8adc808321ee262557b614025f6b601f61436a7b21dc8421bc243d9a40e91370f916d7915350c1ba37933e18d82e08594c66eb51eba8bc7219e28ad0c39bdb0f24413ca51affbca7dcbeb6c5ab368d152852d97bc1703bc91e3eb8359c9189f6ff248f1724be17c62c067b88959b144a59e1cd85a5ba8af1df3fd7bd32b69fd98e5cf2265d6649b93fab59616f55743a2369b8eea0c2bc1fd7684762a716cbd70992d307726bd3aba634c46a64fbfd05da3eb25f6ce2dcb8a670a89cea92836fb9c87fa5838b239ebfd79c3996ec1e6ca175612c59fd61745bd54751eb8957b98212757f2408f4a1fad3ba583e714b4edc8376b75f8d8938949821fe880889352cb44e20f4772c4a93d9b801dc37baa2059a8b02987de7d45c624a010c1a0aebc22f85d37093c961f4dec5b2dd1af79a18337aaf5eba0b367ad81b027d184a62492130ae667c8edaccbe32233cb63f9f2190d566702c636e7ae5055b3dc2114b466f4509ba3cb080f01e0bddd2a6944774a09e40568e512212bc7d823b8c2244c33b48454a12539bf3d644dd53826516f97eb2a76addad8231404f65f73bd42981e8b1cc1cf9db6e8ca2cfbdb5504b08ea0cbc9e5175e7c70596b269c231219aa30fb258f6fb9a7cf8bc6522c2c77036b1c2dc8dca273b3468b563f53f32ed9276f4b90a42e956912c6d0164e8fc8fc2bb5d42523006e1cf7ca4455b4a72baccdaac4d39597f5a7367224d43d07d44fd2b36a672caac96ce47cb6e98737d8a5a5cae4ab4e00f1ad097c5e49e82c5b4849fb237dff2c606e61d1532197d7c636386cd45c848b0dfefa9151b8122cf089bd2458a7436c85091d124e626ad9c17ccf36321a50365619e82edd2bfc6bdb7a079c693b2e94222e0ec5e3dba992c23fba5a28156f8a3332b6bf89cc0c7112f1de7c147b7771c835fe85032f49a9c632e600457a1f36f989473565c0e733f767a6aea2a81e18291164aef4172be8201cde0f5f571cde52e027583ca842267b403acbef15857bce630f18e2dacd96e4e498713c2bce84073b71f7be8a1d3353c89cf8fb2424e123719cc69d3a95fc64a7b0b21e27919df7d7865d2b02e4061b211c820e5ab5f13e004817caf57c5401c281ab352863410996ad6954454d810ecc869719a52b35bf185103436825b1e91269a9c3fc0b41e9103b2a7a28ff142cd9732e9e24994ea42e1c36855a9028efaa7090f91ded439a6e569f1c5864ef52e0ee0d1661d65dfa98f4901c39de4c7d74ec6d51511e46846e10b72e57e89d5e184f0fd118299e9e5713e9ba8ec11768864839f5117e8ee101bc2ef85c182fce9998463c1e6328659ac1888572a289de1dfdbac5e302ca439df44502d901e26c42a83830edfc28f05fbf1b0d8506868b407aa6ff7d3e54a4ed9220045788619ee60079b19b6d55d466a23aeda17de0f9f7dac6541aae64b2e284cacb100b8d25a5096b988071134355fe1c1cf8336c1590a030a0f39cdf6ca1b743889f318f3ed26b75695aab1414fb085d2954aa3581705145c3114d883627e4bb5e18260b48238b297f6d340770b847ff30d050e74b6d5161d681483ef1a3291806f9048726dfe9f99b0067606be35bd311dc4e55888238e30a7ae7ad45753c292199b422a1816f199bfbd219cebc643ac7c57b2e4be32f94678dfc8eed5465e518a98c3ace2744987a74cf8f5f141f603d7dacf5b2098bc627b779bb627bc951fb93ad8728a6fc3a85ad8d8d8d1023e4480d3af24523ead7eaa252c681340667c5cb892082819d0ed906c4c1198e3f11cae087e0eca17a3df5d9c654bb580439a18f7e08800008de4928f1e81da4c69ff51296062ff58ae05f88e941d63ef83ec31952df865363a61be48ed76853458f840d82dfb59418b736890f709ce18883c5d566f9d6eaea889b1857a6272acc224b71236470fd80234c22a453e5de2a6e0f7d60aa4c5f3b3888c0ad15b9d0d42de939fc89f874b80da46c2c59731e8f17f7e0c5a601aec89710009a9e80aa6ae8519db8585aa6f4fe07137fb2edfd943579242f5d8900d3a6cc6dc9cffb6f0229d4f552e76a67a1db7c4c5dc4fa4c178128ed92941ac62446c450a37c4b3791f0bd92e2e8e65db3139c5df65a4199835cb9b21ea3f423d13476b74435d0a3723e82e9c251584976e2a3156432db1c7464b8a20595cda9f9b8f1ad46ee2effb63de374abeba9a31d59ea5f77d063f4d0f1e4abadcf90b82ed7c5568cb431e46100021025430738b454ceaeb73c78c6a4c9d6a3ff8426ebf63e7dd228313cbc485ef11058e81bd2ec10229ed9b52e30c1fe9f812384bfeb684068226808244fddd67c380a28acc8246152b8c372320bcba2b78d6ca8dfe9fe653843c4e489382ba3b833c04251a80143591d5ec595196269818a5dde2fb9122bc4488b42a1a4838f4e57ef9cd9c836fd71fd8e8be186432af48c5e54e86a6f48f052a4135de0644524aca9679218c3e3896052d34aa7af42813daa897557b198bc0fcccc531b0121dcc2970571f7b4a617498adb8b5077c419d85d817da111a68e8bd37dc335272e21fb5d52b97460857c3206fe5d522dbabfd67054a694fd30371b8b167cb6692e384c2446160f0732b37640071ef271b9ee0f9261546e3ffa128f51082577a6ea03d0edd7b74ba192bdb85577dc35e4ca84c4b38892859ee113c0c208c8ab17c1bbdb646abeb4a38afe8eb7cab9dd7eb9a8e9efb95feae8a40e77dddf250bbb4fd10c7464c676ba3039028e7532d29242b0244b08e3f2590b2edd2283a8fc26b528602d616116875f231a266e340900f1f4ef5665c55060d22f411450c71f9cf01b2e87d4aa4013013291610f0369b2ad9b5b0742416cc8bc8ddc7707ff01aa8528bd9a28a5a83e8c0bf730d2a291f7b5f57472917593681b91a85883804290068fe12c37be2349e8875ce9f7f637066909033a1087c7c0a9d5be8a0e740fe8103d37a21e8c5b4ad3af3dbc49646ee57567e0e9ead9c3dd4f1bba8cb5a1dedf0f86bd5824fbe3cabbc2ace109991dd688e770214941cfd43a06040b6892aae77491311e973f68fd9a849562971f077f25a2e01a7ad48a13622723546f92cccb857f65877f8623c3098ceb8172ff1a18a5f8c05546c44619082952cd874c945ab2eac90f18652586d016148b4a39350e8836379dc86ed8e80af20f397c036378b04675b785f97b0709dd9ed828bbb792ccfa50d14dca8b168690eccc24f5c09655fca4b6cb9ad3303a2f60f08b355ce8f7a111b0aa1cef6140860dfdff3b31bc9b2556ae4edd6bb6f8463f6ccb000017b2380af03fef80f39991aec02243708937e55922abbd12495fe99bc8208b656f3dfac00e6f108a033e724a2458c986025b0d025b5c3bf61729fb8e95c3538717fa230c88baa61d6a5cc7081c578c44e855e047d2c47319d8b3e05cacb4d24ddaf0cac018e8b846946f7ef8c58514c1e6b372bcc6093d7fe1517d3111a1e3746ec179717caf1a6cb950354d216afaa9c62b847f05ba8ae9ef59b0ce096cacc380c36055ba6d8e8e1c060b7b587965b91c77fa7879cf96805bad108bf67d074c1f98fdb237efe87f584809d578e28fece5feb609720cd3726ecd945a966023c6e93180bd2f49afe5d2b00bfdd88d396f939d00153e139849458f4e89319f5804943215adb03f92ff268b81e08cc006e9649ba518edb88c64fa346bc60eb0db5df0ef04e1c3d9cbaa683518a1b1a8ca0b2d3dd0a82b5bc9211ddbdfd357e4954ebc78059973372ae02af25dd11a180c99d0da2691f50badda740aa17919fc2133bc6411a68ac8a0e208c67e3293f4043f4765b0cf0e42aa1faea2516b6d0f8d6054499693cabe62c0773ec8ba31f7f4954c79122ea992cf543b40e485dacde37ec48576ba077100479a2040c8d9e0bf531ad1940b5d7fbf945ca027023f0b83721ed4e2101eef2e9810ca750a746517a011756eacb53d974684e447ad2d9b5d2c7a23de7ce964c55b64ec6e22aa3599e0682e301ead755713eb429425be5ebb89c0be1cb6998f970406f0d3365f24f0eb6c2472a01f5ec1ed49a61fe979355a20fd1caedc9427aa6a1ec1e313681d780b930fd4055f76da7ddb48c000929458b50919e263d3285b816f3d9b395e4e54abba7f476dcc10cd0e74850df47257af021529a7cfadf5731172c2c96f042e67204d353af81af70fc79c0937caa3ae2ece73cd3b6ed9c31d076d136dbabd11295f5d41be242ee581f762f59913969616e5afeb2187f3b035e4d71cf5a816c3d950db869deca8f410e5f4c5628ce5d764632d3b6ddd4ccfd4cd4314a02adb47b2fba07a99b5105b4e1b67e800c2d6870727cac07ca53679c1ad86a2a01f2216dbd55b2fae1722c69a855e56819dbe6bf792095488002d66bdec8d543ea55bda24cc956fc16213e7ce28ebc36221253529d38d9a0900f45278ce93325b27d8827103065b68c77d43dd4220346964f3ac59331f3c50870e12fa2de33208e99d5ff33952c02bb73701ab1c4710fbfbceb6330e66f4fcf26d4e23bc00594e015a81adef6abb677e23e0e1c03fc7a7a54bd521101d2a51385f1c5a3f17b8f7ef444237e9192ada809b3a74b8a484918606e5030cf9ec2f16c85e424f2b881942f01e83ac5ea711c4fe8d0ec61309ebf58ad12126cac7a73484c272399938958c383872c4a43d80fd6362f51f1d8a6cee3bc6d90e359eb839c442eb56cb204ef21e36977934da3139c5033cb24d66b27c600613e45ea9670f4b3609d241b822089ac0ce9177664cc4fb45c981785dc43eb82e24da49e5adc718656a998bf14eced3ae18f1ee5e30ecb64f2a4887eae6f44c9196c8b68441030ebbbd7b980d1ab9b758eb26ae32e65ded6756d8af2a6d614ea14a7d30b045eb7bfafa51d178cd539590d7a0a15e38ea757c666c2806db4e093a9ad9d61328deae51c2e870f633930b690978040420cf9b6dd65280e7e51a95e87d6cd3bfd02ddf255b6a4e21443334f09e7c35f7be12c0616c5727c4f7a96c770ef6a8baf68d4f991b0b98d6e476f7504c155b6e163dbcc7095c674440fa1ae7df0ecf760dece4060cc57de10f074540df1a9a2954f0ca92473fe6306a82952ea6102084ad125eb187ffb360770c51630cb5cfbe5b7c4fa894af26b6b3da50798a968a7eb634dfd4da9a0d48b367decf17b24ef7f20afe3faef51379c2be237c15000e3453369919019a593b3ced14bda06d80503b23560725c9408e8ca110dab2cabe96f4d69b232223f511c26370c6578ddcfb0ac791bc0aaecc7dbad243fa38ce845fbe25c56200f694ff284754701db7b072c669e7a731f9510ca4e20fde02709a060d75e4729eee58e8edc676e91485c17f0418861be6bfdb5932695730be3c1a49d88e90163490b5f95ff0071b74037b865d1ed7245d3753a4c262af582f50a296a52d91d838dda895af5b7c24a91c6df30498e07ff2aeca72123aff84cec41117314e105c7915e38cd8e632d9feac98528a31bd8b85e8340bd70d3851eeaee241fe5de67c725ee216a6df03606c27b9b4e6e82dcab3a996617a5e4e348a9c309005a9fbfa5b10958f90b70232d0320eeae0c2b9f0ae2691a7ed3443cb9f02ad252d9b7f44ab012e8f8bef882c56d5f96a91415185ae0848759c91421c1b40fb52cd6a464f8dabe641447c4b854e3f50e96cb777214fd27bc53a96553302b9563bfefd53b14a6cbe1478db7aa46eafea51824d9c5c641a714b79e185e21a41b70dda1f5cb31288a7616bc0ba995f725a130f02782a8d180e4b3c3eaaeee0f999a005519184786f4e656df874ea66ef013543432055aa60b97b6173911e7a80d2775ce990e118b6b2d2eeb370316e4856d1a506fe1a84258c52911a5924d67e3c63e55a9966fb39108efc65bdcbae93aa162518a14ad9de6a6176ac02a819ec62e31394ec19859dbf38af33d80b476a705755324c4254bff2eeea8ec58766cfefa18a348f26d101f4badf2c963f148428401cf950362c46d8af81cec23698f83b80b946710d006bb58eb6b7ca7c86d2eebb3287260bf70e480b4e3a782c88dfe02783338f211b96c15a43e4f3d56a3bda643bc268b02f80d4446cf7abaa8e6f50004e989669fc66444fc7d1c4971bef1fa27b3299b923a0ebdecbb35007603c8c4cc4c9e0cdd65d6be56a8d1bebfcb743def6bf6d2c625ce82dc8e89d28878fd068d7ed84b62eecddf788afbba7c1056efae10d981e2bac5d4cf681758e8fef397b60270ae514146936a0d6c78005e263e7a5c3fed71d740b0ed970b7a2dff76b886c2b0984d3cb85e4838356716ddb28a0658aec0b65ba893dd66be6b1be5a32eec1b9ad4614dbfd0406815ff917ca99fd698b9896699495ca63656860b6de763597ca143dc47473764e9ac4d85222971482eb03ad96dbce094ca310338e4a2255c7c3a1912b93bbff4300b815408e1dc41946c3e7c245eeb5968420c43f388e92c498ebde0970b7b9bd9fcf85f2591f78d87d1761a03299bb412b7e713c4cec853c5b32bcef73b5310ed35057770aeff3d4a5fa97fe3c7ca38975528e60a8459f7ef696dd31e8e39fb365699a4578f02a9837b0fe401e2b9a7b314c54ac90994ce0894198959d1d1c405963f0f5d47b540561dc6bc33e15c16f2c835c46cc575acf78789147ff95b0060e7fb00abea18324a0e7cc4055e45912fcf8983e4e9c92372631e6b3e54b5fc343f7d718b698f688e89cfc941e16aca52124fe8aaf74e13ee2d3327536042f934316b7e7c582171529be74f3ce0d7bc9db5fd278e9055c9ed96d80a3f46c4199cc4d62d0b84a40ae4f7325412c66ddd67fcb4ef12f2bc4fc380be866054255879daca7e930e4e2f3a106dd02a6b4293f4b354c91ebb96b37724681d493c57115cdb8f01fdb5f6e8f8f58c6a14c752b6bd58c504d86933274013bffdafd742c5ea7c7f0d53bc24e8068abd0f567c174d0c48b74296a38458be55ec26f995050eb0eca7f2ba8836685d8aa78c7018d5091729113df8b41152b74e71c0a4e564cea58e32dbfeaba2197f94c15d5324a04359cce353ca9846df24ea9e52489a5fae02dcd1b23d37ed3e5bc544883b519ce468e42f1f7a4cdbd197ea863143d8e46435e92b878c6cd8bbc6c5b2269971f2ea9ebb39635f793667e64ed0bd893a43ee865185d42cdd9c09c4056306ccd28434d186f61e5362d02c17974ff15f9b0239268df670acb8dcdfd932133df9198d1d62a39d25866a8542b822ad9c0d4ad9091e500fc25a158316231cb3eed8dae41216bf7a3a886f49cac7a8ffea168950f16f9e9617cc8465a238ddf4ea0f7074ae03f1090261a4375e1b30c24b979e0cbcbc034d40f36d482b51f372abd87ad15f1462639a385c7452171c7257854bdf028303c800f62769b482a8f835195484e8f5320f1570a669a0e83b84f693638b41f4c27425d56553c7332a7983c015576ddc20752da2bf230451c1f8143f54c7834ca3f682f39fb816a79b4e23c4e114f3e54abb40e5a1f5a20e35449527806da9bc16fe8109f0361da5055ed206bda9d1e647b0c55cdc888f31fca88d98ac681bdb294d186e6a625f015e880124e8552661e17085a883160ee13fb81b7ea436fb4b0c83c8eb353b7b1a78eb8529ec5a2edc178ef3a298e39fd726e1bf597a985a75087a202ad14559657da2f8bacda5e2b1a0b066440682e3d02ce3c2ea6f111dd0819b2dd8dc16d6b3c6a92c1a2fc5061b15843d8c8bf6da561cf462542e707e607404749365ec8a21e1f0ab057b1c056480b6e89e30d4c88e458c3ec62e2168308cebd5edc09864b0da884ee26f39f256d24fa5ba0353edb36e9aadae255eb299551ff515bf6222796d299166bba22ac720412287d9063f53245e87cfc50442ca2f41dcf386ca3fa1f82e8cf317a0a942fb456e34c31d736f081c4a96e637dd152cffe38f9cb11688c7b39dcf07df0fad5defa05c7ceb8d7be91aeab5f744a9e56be1eafab97585e98f5400874463f378d557730ee349d3fd2581d957d846208ea4050960bcec177ae703e165f2bd066b8a407b1d5428ea36ab09191e8711464332073c0bdc59d668014f3ed316f5fd5036c8468cb65c34cf1eec8103658fe49eec8fc89347e65449012e6b6522d7908d88b8921e659ec19e845e6e066a72a9524830f5857ca8b45af0129c5d4be4c2efd41daf400e6f6c74f24eb51f2e99ad6d97881be6a9055ae771de497f238d3c45f6640b3d0d99d0e4cbefdd19f988d1a6fb966f82a838f47cd1ed43a2f350ee8ad6e6e1762655da2a6ad3e867df0100546b83b89e0be72617ae71562ec7c7b715d4f1bc0de800c54278c09d6126ec9f0f91709bb507d481d6cb80ec5b5addd77b939945f07a22ef738cb3d5bd3fc72ea702ea9a5ed9d6b312c5f472a577c00b4224218c8930dd15c4ae1141462f08c75bf29ae9ed5c2e6f637c2cfedb81a972f9a971da6b8e0fbcc8669cbf10d85ede21152cbfb73d2a41bdddfbdf2da46b1a21503d4b8833eefab36229fa22cec413e3f94e12dcadf15e1fa3d99b689dd95914b002d28013d878bd40ba05b94bd0ac5df22132d63e0dae15213a20dd3a4737dd4273cca8af7d9ec976adbacdd9aedf646da50cbade5861045372cf16683f2c235005edb84018fde5a2a781985da0c04792728774e5fafc2ba0b740463b0b7e57b5b726202aa034d6dc3e334dcb69062a8388064f92cf091e7a1f9754f3cb793a5b05c214351a10a5b3e148b10511aff30ebdd9383266200335628a820076aba7d75fcf914ca98a5f066edbd79d8883b02e139e88dcc88f0f292a2fc2dfc2e1881a07722df32f7a48184f256587055e70818dceaf14a6178eb0740b3d1e9fb0c691684c1053eac7f9254165c5205a7c457e7ec5e8b40605bc06b0be204162278001f41f18461ed4e0a482860466d9a1c4bf2e7e0f15c68724a8bd740a14c55512510595e04e08db290bd2ac99f9f31cfd49d467d3a3a5555d6202af0b6b244ee0ad3e904ee33806974e90f7c582fa7392cf1aa8cceb216bccb75b9035eb2961c04cf6f8522dfeb8fa572575597f8111ec430e8ce82d8c055ab4ac69bba91cfb3295c0daa8729f130d9befa63e10788290b714701354814ed711f06d95dbaba3ac1e95752b5c4e3ab9a635a9fa44b4b8f400027b6d9ee1c88649a5fc716f411a570e4904ad582f4ee0d6b4954bd64a33caab1897bc750dd7f729de699d4aced9aff774a6a7f090886d2ff7d3468a7284566a28115b5e5e6e6ce3c0e9ca857c1a5b359e01d1f0b869b2409c2e5f81810a876a5dd34d197c3826bdbdc905f634ee297651be2200c85efb5aba0113aa71400996205c4764ad9957d4f6b3e4e8f891bc659d4d7bc06b9c9bb9d040bd8b70192981048cc84045554abf4488fb99385e728af130e62741a7312e9743c782c97bed240f4b89f708053b2c9abde4a257a7fc99f0d428ef3d0cea552cb819101e9a35cf80c09b91e6ab1753551376ee43637bb995b2754dbbe9fe266e3d9a81d58c38ddc726bf74c92362d7eb61b835158db8ddde24edacf8ebd7a662458b8a95d2cabdcec3eb3cda6bb9ead3020d47a2f9255ddac7dd9a01d692339fe1712d0fc086c99e2a6ecae19eab11f3b4253db54467426d9c8b545c227f04675e4d0b46f3ee73965270cf3c0c2644f40fcf64d9fd3af3600e9e27f4868d9af033a7a84c92c3a4aec183acab48753e995999474df4cafccab88e4280a38d07a0d468b3f447b7d0e2b3402e899f092ee716d45de525a0a98c7a98293247c97e80c9a64989e17302d16c87989d95867df62cd1aaefab1b3546de0995e81088bd5d98987fc0bdae70d32bb351d37d34d125703c155506dd64527c2e673db5115a9db718331a24b52825022039e2a409ed5f3f6c2bb46a708fce750ba0cbc8df9883b50c07779171dd44684843a1fe41adc79c44148f6b95f94731f20930eb9a8d78d193a8468ff3966fa9909013585d1929befac602d04222aeb68451b7a7ca7ec6f8f59f75a8adacafd180ed98df6f7823699e8ee5bd9003f134f9cef611540cc5f216b4365e91d6c6b5c5335e8807c0665110a1849e2298f104ba312c4a5554cf15c56a681d39c6ba881dc51722d706b6d116070093c248178b7b06258cb1bef62033d86b6a19dc8fa02edc2dd4a9a4e7215e345639bea07b64d1489e6350c724fa29b0acead8157fbdc0f5f9a8ca369747071a987a614a32ceeb386e771382ff31eefbf6c86fd4f700bf8cfdb892e26bd06c06c7cc546b3b4ca55a3fed7d566b4bc242d1e842259faaf81aacc062fd031e16190ec7154be061bd8433c683e699c7da7ab4da1c158d4c27fc126b228c9f3f701c76c05cc2a32e8de696a42f1a86d1d5b6ed2fb578e783f5f5bce7767d6436f665786333ab1102add4436a04812ce3273deb932e2650f628a204b5459d00e940d0c1407ffcb78c89a5c22a85902ddae1b13acd067417957bdc36e6430c705d237f2f61f0f6642cf10757aa3937bdb77c90867e870d7a9570bbc67fdb44b344e65f9a31959e8adb25e407bf22b12616095b1b9d7b5c888be70e4cb0d2bc9353d06d8875b85e6d728b7817dfa7b7f5642dc82e8eaab749a4de67fe4d60bcc2f91b297abe8ef9827ce89420f24181b4b2e4fc26cecee367631675d54ea6a9b156b934fb318e761180e342dd6807ddc5a97fb748b82221e9d5e73693396f679546556a60e294829590c91f483bc4b89e31f342b9102d4169677fa891c18db25f618c60271cdcda3b4d6c1c39097e065bc64e08c4c6242fceb8c73627ebfa8b7f8322c7f0cbebe3d199830bb5ceb8261c6d3082ba2ac47539894be40651c49fa5834509bdfb76cb812551af7d84a562d369521dcf9942dc37b70d97e95ff0aa770b00f1b92385b78251fdac98e3ead49b4eb104dfd3a755ffece7c712da060637a3c1face64f78da935dd16013b655f9861bf1cc8ed7848033b96834e726b7de2cfde40a2a8ed88326f6fdbd553da4ebfb5898ac781deb26c1ec592b445415ec4d5b20d49a39f742b3785df6801327071a09e49b1a0e9c35c537fd8937992b3682f710addafb9933a5f9e7660c23832e2d720e3221417ae5f0a513e7128d5c054a77e94337ed0914834c5bbffc0bf7a8405a7a8aced311e843861b2e435532d4b02502cbd606a4a26f6b8ed49f639b3f962c17f05017c565252643982d01f5038642d191c31ea675d0e1383e6e52ede3ea3682abbc77f30457d34c40eb3c814ac79bf8e1922109634d9e2969efe811f188351521cca03b7d4ae5f52f89fb336f31f19316333ed192895f68a543672b771dc60e2f5727253fda1b2a475cf4e6cf14419c5a65ab9258da3192603f0539d67c31a5988c4f495033403c2f8e78437cb2c70e3e7317dd9fa205cbe440a1b592d1151558003dcf7350d8e557c4c18a164da429252cc7e32d2338781ab6b8a70a0a0d02f3860abb4cf181447a52f3ea0cc7971ac33504188a3d76034678d4804d374c113cc491e7dc2c620824cd00612bc84929670990f0ab8c0fc69f4dd208e356e9893785d73aaef0da306d595ce234e8a669690cac3bddd9638a0920ac7daadb5701e0f29b278e32ec0d2dc7e046b004dfd6decdcbda9db2f015e591f4ced84062a67329a864fab9aa175d732128c4d004be91d1511b517a19dbecf81494371e9adf0bda9b94b12d0ab63568ced1e803098ba5c04f49ef19686539f5842ac723785c9eeac759d4f2b83e5bd25b4660254d530ff2a27cfd54aa4db478984e95582f2a5c75e7172cb8f27a90bd26e2d51fcf60dbe8653363e1b5ce38bf7968f2c2898987a8d43be5be4e9d939cf5f8a9c475d90886bb55deac69550243a2e3d9be261601e0211c8a6d4b6f8486bc9eb89d4461a8b6f51d21db00413be506471e53465d10d5216fa373e2e077b56f5d876ac959839f03d3881387db876753f1a8d91bb2d1d53fc8317d53d43165f218e315003f81f26b2a899128718f9889c9ebf943c7e3764e49ac8be88bd6270642b77dbeadbcc8a5a6877a81497d84787b07a8c301eb7d06c563d1c20498845fb8ce483a50b1b5ba3173084a5b371e8e10013317013d021f27ed07a6e32e1ffb724c568edcbd8ccedb97d8ff689e21e1411ba15dcd8196e546e67d472bb9344c3323db5cbefd25669c4e09505fe91e55f7e3df25558a4c9e86e0dc45303b66b3e8ce1526e863fab292bf9184cd0fc9d26e07932c7cd3c324384ba1673bacd04293e23ec9e93f276e7c3da16a3a4b7a52371c139f786b97036dd2376917e94ec0b684ecd54785405058ed681894124cf51e688dda0498499808f74dd2d97627d1896000c1a98429039c7d9e73d4916bbe0a446137556da461c6e3a2f7c699753c1aa915c3da7b934c66ed9283249f6c80b52fc3a52354b768c2a1783ade13ca7ecd9fa372c3590438291ff6239c68e92b22ec18860e717e3ee95358e7cf444d57f8e52a8f730c735e75b86b5f13787ab441895356478515ac18e1a208e810a85baad1fc4c5034d801498bc98048cc1712932d8c31f2f6ac135aacccb762a5e9d8d8125e678f137541c89484f910a04813d4dac265bc086880ecc8219e0cc8987043b30215914e24acd12582c3640bbbb5de1d418c20e8d9aae88682fd9882ba1932e922e193188ca888542d885b2494d4ea02b8acb7518421b3153d1670458cf10b00b048dee62464fb4f5f732c1368074c5159d3247dbc855cf7e8116f68d14da838b02adc755c5e5ae241783ad64bb1ead6baff1d4811f8c5d73390a2aef903c3e5196ae2421ed26207aa2e301966d223c9e7c2a9ff49447524576d4bb4a90977b79298147f172621e06190d6524783940b4069339805ef599471b5129d588530c9ab55d59000f93db05586b76447b0ecf11d7a3a0a012c1af21f4f3284e62157d945f080383dd54d18e07bd099a16c046ffafab5e787171366b15c1d816a8ccdc1049e78cacde3d818e0e2155bc62f1549cdb266cb6daf62972d5b5e34934e799c799f03beae53f0dd720266bb3d0b8b8ece80edc75212941f6ad4291dbe15db6b57269ac6293d1815355fa287860e6117e47e9cdec99222e0718ffc77cddd6d4266e5c595a7034e826e482441b00cf010ad0f63937673ddbe3512aee3ed5dad5141cf8b954f6934cdee4df321a8f098c95b659993c80b8b667cc0f17bdaf4e9e127ff64851220654ecf155fccf86822b2b97c381bdb24bfd0b5833c37da2d2d96ddb77252361a63e5e1f861c7f57537a612c7650874b6ea5248487ba14bc867b0bc17849867776659d1be1c1eb04d82ebeb6c959d141f9172a7f7cba6852be5ca4e31b2d5cb1a8992d85b4f9d4d2521f4a22c90319e134ed8f3242181341c33a992a258178edd1daf864ed06196bd6cba643cfff53045f1e61727a82c60f5edfdff1f449085bfda586292b5a54dcdd4663df9af27ae26a39747bb0924a22305cbb3d2d09aaef20cc24de9f0ffe0fab0e68e1247b59019862450d2da76c748fb039c02ee692324b3b62b363feebe45e956ae2b044094d0b46e9b091ee2e514ba848c86ae34e59eae3d8280b1ba1810e05a3527b8fb7b4520a5fd2965757b0da152bfecc17c33cfb6fe766fa94730e2e3d84a90b642e055281228c8f31c092f567e908138333d25ceba47f76b5fbd9d12dceddf99b5e2259a399a7aa011616c4065a966f014117a2b546b7ccc9d79ac250d2417170643b7fca8fc80c41ffe8472ca09663e418b60bbd5070f0d344e914e927705639d85e4f219b2cf34767c677da728fe9ddf8f769ed9ea25e836505f3813f42af5f21066e8dbed4e74d942c044616c25b01ba7fafc65d159c9e4740e0024314332b0e84456e681d08fdafe4d52030154bccf97836313aaa41479fa6665942d013f33feb4c2ae6a898cfe80f9ca41d141ed2accbe79db8b1c790afea11a54fc0fd0a0b521eea6b3f7b046191254a5df047df824d6accbbd7ae283af774694ad3891a28bef93359edb4c7ac9c987860096c4ec444c87b246c10012d39011385585de76832c991266eee976eaac62583ad6c3579b47e4a4b5237bd92d84a9a03a788bef2ea26fa6702cdcaf5dac30d9ad8975d17723a5561cfe0513f53abda5f6a44a29056587523be1efe2a6107dc3125cee3a5c41b0f71c1d3f70335c5d316d088b20a4cd63f2ddef7bea3d9129677d476602219e6e80a843be4bbe5b79cd6a42ed448887d04d05f06db7a126d65f6e36e6903fb5d04bda8a35da8658c0caf57f9f4e50af5bfdabea326fcda130e38abb18ee9100b132b51cf13389475eac07123f108bb40b22b5e0686286def6d0d41ee8f2390fd2354c4d44cc828076dd94b31a8ee6db455c9291db1dddad344bf8a45d08315cf970b4f9d0008475dff6e80ab5bb931de30b37559c719eea8af17f0dccd8423a402a6ce30830b02cf347fc1090710d61b5a8b46ddb5f1d2223210b0da2e19cc1db53092053e74cc44b9e9dcefb3346321188ed36bd6d88e4e4be9f85fe6171868095d6501240af66a736557fefcde026e679a61ae0c693254d0f3e4ee9d2436fa76abdc28c54cebb99e46bef7d75b7170f138e00e423211cfd84544bad6dd6be3ebfe65935e61b2130bd0f12aa3905f43b5c6cecdebdab0ec7659349ffceba1fb86bfe31e808b89c78f10a3b26e203003b0dbf7c83f2361a99f074417415168988b5f2ce367c315a8727f418471c29b1ec017f54fb3b6a634ff04c324023a9d2f3c4cbf380e0e3a4265bc540f15ad76f33520269142114b77124cbb352e18e6c937031739ba300d68429371d15ab79122329862af209964172329da192d003e059fa3481f5b66caa4bb7195e5a439cedcc79ca97df33af2d5d4abe059ae85076cffe68ca1cd2fffb5ff16a4f4e2ab041e1a455031aa637d2cec340e4191fec1b930584988cd43da49ea16f991e31186998809b78f6315d37f184f6aacfeb7607010aef9abae67a899af71675eaaff21737c692eca07e77cbe9046312da8177b07c47e8884cc301ac0719cf920ae7c8e9ada78950f7d39b9b7df8a9f350dd0c1461777ace21cc22b3ac209b039245253bb1ceee9a25a040a93ab3db5205e7eb4b11f58ea91b169ac9be68b8dadf8e68dac8bdc22ce758352a029deed30ba55e908465de6bb997c25283e91cdbf07bc8005a8f123075732b0fe2769c6341fc2df48f73ee007d7d1f66dba1304bde233bd42b281833b1452786674f018fa15efdb90e2130bee3bd833cce76e56bd1931fec9ee070309cb81a26f81062d326466c0d37e0f6e0d70178b790bb1ec31d9b05b3d417520b4dee645d4f60987eefe6ad7f53775871a1ad06fe78534097c4719a91e4fe8dc6498481eda39c11ebab9ad2b93378feedf77ceafe8de1119e1526a639acabf3fe322c64b2588c297ec41cf07f3f7a5ef74afc4257262846ffe7e9fd35866c66bdf507539775ba123d385ce8ca0b95789786538ca2a0d88f49bd4e3b0bc6c4428ecd59968e387b5a844c41c5be91ec3eac070dba03559d30e3ade5e7d78c8940a2f46f7fbf13e236b8af91ab45d3a0af2ab36b5da1b2b1fa135558927643926fd20baff3306a0f07cb0ca8abf615a53312d0a30f01eb2a2ffe153963906be81bf0fe7504e37149f1d7dce6d3b7d4462b74b092489a8624dc2f95dcaceed9b8f8909c18e233edbd5c789358ff189e6334e9b8108e711ad0f2cd05cfb29ac1380ba8d53dc8d5930a4f9d455bb1839c94b443b6ef943bd88b4dcdde3b006f12bc71124526129c4324eda09b1ab5160b767f1a8a09bb0d3440301e74efedc9f44867dab555395beafbe99a6544be9a1b52e90840c1ac2f9af0395c262b1e734fce918d057c2a14585bff033f3449989494bd944ab72565c7329695d97156eb148e97a757c9aa29cd222bf555c2c62b2852a572dc204dea8e4e43534cc51ab1c732be98a45863f1967c0659b1845833fb984eedab37a5cd2eb947e979d54415a84308e8a8b010bf92d3042240e22abedd42e708870b744dd0ff855cea3ae6bf7c677a5d6bace3eddaad6c66978b1ff5f89e405c886134c86e171f95fd2f8c0ac96774bb0d961ef2306a78e4a446cf68ef04b47b24cba69fe6795e2f42fc8d1916a122f74003ea241c11c863de9894f06a240e3d54b7c1bfa6c1d9128442857585b1bea08128dfde4151116ac56e7f100eb0109da1a0a64661f5c2792723064d5c57b48af29ed31393255b4d5832700de1a0a2eb510f671a3ce6f43964915caff1a4fa2e4f5c3b7b53fab6300e9c7fc9e2822c6ecc3b4c097ea42ee6b60bb62bbd3aec8a034baec39dcfb728f736cbcc240eb898bc673c69cc75d628b37f550fb3a39814c95b19d58b489b11b44e607d0c3b7bf4742c0e313ac2a062242a39f19a18cc777ade291d7ea3efce084c3f9e58c704edf1b1316b64aa7e994af32df9f368ed20a2ce606d4e84c0541f045e1db4587c3c0e4def7f22cd861df33bc45b080260b0eb1ff367502e5df298700366d6bbe6849168926596124689430505e28d678377857ca4a53d5adeea6972e587ee06fed12a51a3acdd6c0cf468f8c4fc1a6da510a899e74136353410fb4711a95e232395617fecb22c52dac8f15759023fbd138fa60162886c811e5846adf7ec26fa6a03cd2fc492717d69f09ce0787d85a71181a174b17da1604b15cabb0eb58bc7ff17b9f826cee08cb7befd0782d4d30632c1b4e8b721b0e43ffa20365ba5190d8f0b7bed526894d39b7e9975498ce152640551a8828d5e93b02b4bb75a7bed69289ef2cdfcb2f80a34b46a520aeed885ea7bd636f6d6d3fb81448378b036fe66ccfbb5e40c2c284706d7b8f384c11d5ddbc3c317e2df8dd1d2836a53563639a5ef44de73b2f7df4b090246a8080c7b644e418bc82a8c68696193e9ed0b7e9d6ecbfa57f75f88288c18b5015ab5eedf1e82535953d3320e5cd7df55a8b86ec0db8228536b5c806d2fd1bdb775daf9eeccb8cb582ee75443558caaf5d0449b4a3d5c31d07f34d007959c3ae59fbde730c4d4c078be4744201187245770bee047c3a27d1cf3c1e93c4a4a9583f7190324601a9f0b0ffea1eca4ecbcbee88bfd686b279c3d266f4e0cfc7e97ca3d70f4b04150baf5638c54b57153897fbf024d5dfc3e36e0ee2a141b6afa2f7080ff5d90181a0a1e51748ee53201950e280f201b551598e2e56616e7190f1770c374d307abc3ab8c9108e5802be250c677d40786541972d949cc66f192597ee748eba26690316b423882d3b90f17239705f62436b8f16fe4515ff1219743c3c5a2e7c5aa94d5c7e742310591bc783a6b61af8e0384826d9104eb5a8f0bef4106beb920319fe5fa9d98ad9b5dfc8519cf803ca53dc7cce88e2dd65d168492073ba75fcbc2135551f174661614ab5a6415c6ce7de19d53083211bcad1d6e0815932d30415dd536f465a8cc0bc4ad42ab8f0590a7a1d1425fb3f9e7a2a7c971ec536e46a76884dfe66008afc29793018b7323af43dc854edfce29a3c029120b998bfc67d17040c2a100dd9907cb9d37a236f4efc361c3a4e1f3d06ceaf38c01eae7a98656409dfad7cff3a08f37374d3f147c9e1e83c6e478e37949d72ef4be477bdb8d2ef61d61b7005651ff79097f0b04e05ea0678200ce0251cb018816f5dd80d8770fb1fe19717e8735e7f78a2c24ed658d712ca3fe3d21c1a98e379c0b313f41850008dbfcd0126d127d20fea7b75f5b3970fe606e24f596466f86002276929df8fe1f174da1d720ee809c7bd5770ae27c1c8515344461a5fb71fb7e6bb2dbc3919092b3f20c93735c7afb186aafd5038bf5fc360b83c2b99b73fc677554069179a9074f06628d2088db8a7e3867b4fdecf42c6240984e49600f86f2e76d26eb19d82d72c1cb4fda20e6373cd47bcc1a2e32ac047daaf35168d1aca5181db87f6f0537a4b51ab8dd80f2cb6f5903c70df8b554734c039f1a47b12d70c944135929409580e224ab3cb2652c704e89be2ec9735ad3a6838f028036b355dd7b944e234c384d013798f752cc2bf56537f445d125697fbccd989942e934c499c4ceaedadcbd0652ad0572ba5af921f4a301401ffe41ffd20f52d0c323605d196c0db50f5841b98da21913f592cb6df26653487384feca72df39ad31b40ab429c091adef98135e1d2ef77ef044765681192d596b970710dd7fe68af52a7d3f051d96f101c4bd7737795122fae0afc5c364a47bc47783343d8e65d234b3098094a65929e798dc67dcc4d38194d7f3f452d3a8fd490486c1ee864005a93d24cfb1b90ddb20e85b4d24a1fceb2b64fb749bd8955235e96187c47a4d9cfe03a5174c71767a7d24c14d19a63dac94f9044730584161bdb705b6eb72475b0882af711e52b00435f6e11ca3db9f026cae750ec20e3be1578ae724f2894e5032bd1e05836f3f13b724af1708b056e80df0e75c8b6cb27ded02eaeabf80f20b1516f01ef1bc75dc712dbb849438b03094181936ca992f3d1a5ba035bb63a546e9f2f752fd05efb4cb67ad7fbed863123786d54b60bcf5d7580dd19bae68051142f775ca0f65c3c10e64aeacacc0bdea7815a0f7efefd3b5f66075013f8275f758d0de1c0a97f9f5e86649e3b1e064006472b2f1f02deaf4262b98d897ca7fc3443e580c5e363bcd31768a7ff866279b4a9e009c8e0d681d3a8d574720f15c49eb9a27ddb7d8cd76ebd09cba1f71e9d6ae6571f43b9184fd279bb8fb1a32ec962fa49b9f46d735cc1b29a36388d6ae3d3781de76b1c19dd4c12857623c459793b70619b0631a554a7990790bd1c77f71a0886d026f0e7df03c248d2474e87b37156fe3a5c9e5a19d4877eeb26766a0ce7baaa103d03e592d3e889767f307dcfaa5c07ed015c98a7b89131974dd144f9451e7cbdc0032b20991a370e47be90695cbd4c817dc198ac99bb4d5b9d6b451d40786364d64a1320562e5a59bdf38d31eb7f0ba7163eec70d129a0aa8a46990453b6b80d36e8edf12adf27eb196aadbc9e6650325e6b981013334b2ab5fb267f87f188436fd61beb547282bc3f56689d9d918f17fc990497e48ccc6eb1a2dd82e01f0f362f8987d946c3a18a163af46f9b0f56d36b603a87df5388877c633d5c514c2e5141138bae97dedda039f3a76da08bcb4ba803ba0be1507786779a815dec6fcfff2859983c32f43caeddba621b6279731eb4f0fab09688115f91309d5775b404facf9569f15e6a5f989c7d624fd72caf95726555a7192cbd95cd30db8cdb2e6719d6f06d2582bd6708106ed5b0c2528fcc6b676bfa6e15a9313294ac9405b5f2b42aa99e5577eff68281c86c41444d85937939a1a276a1626647d01ecebc9fe160b072e7aba7fec441f4e7b7ef9a259e3ac8efc11b81076c6257110920fec45cb90a82eda86b8de6169d8864bdaabd372d8cee6f3fccfa19a8c83938f655b4000396e68a8cf487b9e5a1ece91876b34aa35f0714a07e317941bdbb96d3bf100589080beaa16221805526b8655e5a6315e77cbc417275fda1295cf07bbdbaa39cc35af08cde973a8999445592b06a54604ffa2455c393e523fd85225a6780599c5b46f66292702bae4d80881c9229aafc4323b0fb959b417c9759dc60c2d7e96d853c9257b153e516fca11b9cc0d3c70492756e2d6b3a48f309ba7d570b2e34e39869a054b6b66301f87476febe93e15e1ba12ea686d66eb30023fe00551fe5db22e62716c9b96bd88dcd17e8ec4740fadcbb0927de4f4416e2b16a40241f689a6fd33712312d510d3912248a559e8215bd6a46bdffc0ec1a9db1543a32f98e1b1521907ba9e809cc278d3567e2c51d46be9fdd43b3a3aa5d6c025244ee643d72270cae00377c65245543e8d0e27c6d55d7f74cf12172162477d3e49d16261b05df24b20bd3e15a77ce95514b8601dc2a61d512b26e47a5fdda5b8e574c4e7c7ba9d217e901bd0b26cbaeacf765405e88a7f4592462ef721a9b2e52b50855a3140ca3597f651c306176d48d119e7b537f9e933ed5bfef1b3ad66c317b1378e9d58e2d7ff25ef47696ed5f58efa513d07219db3b526f7d17c3c85046bd85a739e856d502e25c72609008b97c7765180c7a1357ab38c62eee311992a087ee8cdb87b34f190bf34c5ba12d368a452e33f89b762995f2686a34322217820a4a0266f5cd5e538bda9a31f8de7ab2462f57a9f45c9a99fb8785126358fe1d116ce9f7ffd727bb37af769ac0229128d2d0660467edd8a5ef7abc4bc73ec8c9920613fb1583f4d8307f6d35506c89a6784420e24947154832c86f9c654308626e88dac6925c02510a1d4330ec9deaba52b0420322912118d209fcb466010e6a75c9e94fb15c42146c189f054e6a46cb193fb9d6e83ab85a87a397f8bc4808f6fd68a8abf2d0f69f42e60fe5283f5c546d3af07785f2cc1aa3f256d35304687d96f1d66dd1346eb25f43692de539a567d2e25eeafa49c6b428e23ad31f92a3c7da7bffe1438a99e45ba550875dfdaa42a064a1cc71c065b9adf62cbedb6cf180134445026e4152f10b7ea00dbab63bee02111b09f5170ad8981fc580b69817c6e6e948cef413f09e8abca9000696fbe4e8242b154ec495025dfce9b66fc78fe60060e1816febb9c84b1854cb74c04e856cc90c8e066ccaafba4832eb5e50a448387a405e107a03c5a4c8aca656cb8a6dc0673f616e3d56b7c58b6955710f351e4086ff2563510a1948160b5004854c1c04bb72a4d6e60648c6160dea2563b89c386c536e42cc3a57f9596535a7edcd341a24af25da767e9e55dc99132f6448f2ae6092f714dcc00742668ac0aa8b05587b64e894549f9210ae0da9c04bdc033db02a86213a1b6799fad8f4918b1420649cee7be60ee16f8a42f36fdcd3a988d869cd22760c4ad12b156fba27e1fbd8ff447582cbd5f4e6cb432ec512f3291b0ef6772b37eec5842972b0bef12b295db6274a4c40adf72bed2abc75e03bb4af35e088dd7fd8d57141f5b3baaa1eca0303fd7757cca7af597bf497e77b9090349029d87f76c37a107851e9f6f13c640747565b15e156ba58fe5b405d74f5eacc5e710b8ed12eee40214fab022cd74ec17e9088b733d2eda9f4b4c8b4da359112b4e2e6ca692e2d13660c9ee672e09b876f3556f2ac9d5ab74e1ac401ceff29ca574e93916827e0b9cd44429a7b830e3baa8719bf92fa905deb2d0ad281bba399276adc8e8ad55a3d0c5e3c94267d56156bc1a4a45992c5c0296fdecd8b77a13a444b016eb291666d1a54cdfd5381c8067017ea65f4d8ff68916792b435c684f9a82b10be1e2cc6c76ffc8d7c0dea931f489d645043d790a0db0ae5d7330790421d069d59d17de7602ac2abe20fa79271305232dcb840de716439f0d3202aac8bc0e7f174415e819c52ae3fbdd1809b4c63b35ed46e11a1f8a2e20092e95a9ba8ae6567720d76ec56ae8871078e1b1526d9888c2c9e51afdb3110356c3966a127d4296cc3e684535f307b0d1c5c888bbdc786d36bbd60f7367156055eb4a6128b12aaa6222ce3b40830af56348b117aeb94bd876abfc27d437b0732b8b7ae17b8da40378804a028b933b522489152be6f21df244e0f9f9f22ef3baa1635d85996cd0f6463d54e9d4750d780b730fd435e7ea001604b6e94d41af3618c71914cd5d4a1d55e7f975d9f5474d922b093b9aa68d5c7cbd74247c98d2a6adae5a771cf12d79232e63aa57ca1114e7c6e600249317a99f7311efbc4f6e8348ada438ce03f9bea3d5378a298553f5e2447a0617d9df48c7ff9ecda924e3aea8256044d521d96bc87342a581af941c3f50b621340403f5245539d3dd7f54ee072650c1b62dbd5db9d41884166b82c4d880eca731ec35c05770b2265507917530931179ac83260f35d66612391b55161f501215a30ac4bff68ac8c9d6e710df44807e67c851435a52e820c93cdc9602a21a126ceb92c12368b6cdd8de56e01ef1a248a62ea6316bbb674fd1c404637efce229a5c8dcddfb635558022dcf51f07ae35bbcb19bd76bf54c6cc69cebaf2d84fa4c2273e7434f1140e8bf526c49a0891bec546686eca1638211f60028ae7e072ccb049e49feae49948543fe2687fce57d46ca638b080f3c53958be6f417bb2c91ab5e8ed8e099b428530889519943f4701263015ad04fa4636a89a9415e0385e8322d5e9a748d08800cf2c140c09920d129074ba11a00fa075321878582c1831c2345a364e2c435fb55d6af0a68ef64372039c5bd71352289e45c919f5314a143aebd2e0b2527320e522a44f60a7698ba87eff60e70aab837b1fccf6dede9867fe93f68f2d1d8fc7e4b4e9962a79bb442b8ffc10e46691b740c08043acc9ece66cd09293a7ce8636039061f199f6c1303556e281b9e1660ea0644c4a4a06ecba0864dbde9564038071162b394428551b5a781d307c7c469113329fba3cfb2a4ce0dcc689af3911cfed00381225a3555a71f4e0d6c238f13f8b9349ba6067016afc33cad75dca21cba76030a0b25fd2062ff2e6b3d21177e0c2850f33de046a552aea79bd79de34b822212c4f09990b0351539f62fe674f58a626e12f5bb23428558be0739ae2b5d5e2bf2e7580ab2bafd0c03567c7c8b1f996120ca859f99423420da338c6b0c06c1e847d467371e87c73f7739f0c4fb8c089db18e3700b937a6b87c87420b38bb0c86c6947702045d1692cf0b9ab1383481327c11516c1832d379cb50b2afd97e87a18fef7b60ecaf595d2f0c5ca3561bb8c82f72990f77a9236d2b116ebfc22f3b42131b743fd14b15c04f4f3109931701c4f098162e1c0d0941b5d1e412ecec99388f7d2085cd28a7cc016d39866b48a231001a7c67ea918b07b8ee4aa370287a5bf6e087001e9731ed991e10b23e5fe57a425004817fa4d198bf80f7c6fe00278d9ef29e71cf9bf26196bdccd714e5961db8b9898712b56fb892c5c764f9e372fa47235a5f295bb0192e753726c36e240956b0afbf4a5af612949c9931548f1722ce846ebc0b0d09793b06a71f125a7f8ce7784a18da382aea9dc7ab703c263abb229f0d5025945b9dbc82691b495468204498869498666e46f765a48062bbba12c41a036881befd43ff4bcd71f53344f31987aace37be5cdc1005ee3e88242eeb5967443cc00285e50e9e4ab17c9646a4c2f4b0bc54bae8ced779c81a9cdf0a10775e60a1189007c0e79c1860b3e73930a668bca5f1c378a6d80d40ad2caf5031640b1eafa84e603056f4a2ef5d1307e3759f0f44e89f1a5698c1157419695c114dc9db9ad864d32a8be9ccb12e899d810b01dbe7d219d2e246b10e30aeb6622fc626702c24bddfce52a81189a9604f40523ff45c4db9c3450b88dcedfc512ff3852d4bc129a64b86ea0fc158ee9a1463dddb6f4265576d3ef0272b01912f11f8c442bc9b6b9164662200b5dbea107c929d13a867d24e5892384be1ba590164fcdba573e068b091b0109e80c11f13de0f3e4a2e1cf58b405e8f9f015a6184df4c22ca1ae7993bbb43a619e559c0ef5d08316d8e15634463808e56bc1c8deb3c35f7977ca67c8dfb41699aa0d999d83cc7ee4a2d884023dcec42436a12f9772be4b8e701368998aafa76fc5b2e1cfe19e7e5c2213026d78e4a3573aef8fc0479a72511954cf09b6e966879bdb892694fc3641dd33449f3353397bb91a65575c844b5a13619f9af7f40e08726a82d7daf8e1cdfafb2cf705901d0e461b176369e05a72bb3e5b4635ca63e11bd9e7b2b9fd5e7f15f38f645ad8288e040a1468d7127b71982ead6010366a4a326590591de2575ed271d3a8d9361567f7601494d959d959932137eb578ee8c08b11c84713a78debd0994cd38fb06e85ccdebc1bc655f5447bbd240beeae7561e62c83df7c5ba26166bdb9791be75ba743ad038b0a68ef4af2fcfd1f78d8f53b4ff5fdc98e4279e069adff38b64954eb67d6a80dcda8783e2afbef4e427b754563a9138d0c99add1c3114b0ec82bad61a279f1568da69544b33b8754dd2d921a53031be65a66767154bbd420e740a794727f1351a25fd67b3054ae71384c99616e81bdd75c85f1a8cce7b32ba04c0a6a181bb018794f5348ac6cc132212e44e27e51120560cf864c8070508b09fdaa9a4064523816832f26c7b31e040c2b3eb839ff5be520768efbbef9fe62c133fc3668483dcb1b824b7b4b7f0d831dc03841a914a8f6a25189fa8b6a9da6cae5afb0d10e641f6839eaa1ae1cefcea9e0e3eaebbdbc03052904317ff46b55be19550bf528b6e823a717f99ed0058ab041120754fc10e5ebd5685dfb68250bb8e9b69ce51bd4c2669dde345eb5d7e7d6f6ff58fecdf8caf09fd2e01f0f7bf0ea9066d945e8f29c9a7a6f92348800643aec847d06b62c04ef2e863f4ad033221873a7f51a2bceded3aba21bc53bc6fee86221a8f10b7f85b0431704330a837820dd6800c18fd238b7c7bbe9936e6bb180513b99c25a429261e065f0e342f6042d2777a991b2b17725f645e01e20411a151c344ee2cefa24b3dfc6642e381e16f07713ddfd17c847b5e950aa78c8b78fefac3e5a4cba71ea94f611e0e80d51588351685a12c0f440362d5ae57efae2862b984776f5746a239357bebdd0ab1f4f67941302dcd7be497d8ac3d75c991c4861f62d9dd001e62279dff7175eb09e40d68ed216c748a92d3d9487fd9e95f5a6a9074ac0ae8faba8dba3bcc3ea719fa1c04613e9f6131e51c6a9e7f2a6d570f17354ab2ea862d12f589cebc02255283df1077df274ba6053d3345bb6103e23f9c5ba8f36e05dcb9666509370b9eb81964d91f71ab8fd5e7e8b28ec5a9dcce80207489baa10a785fdea3ceb083b18b0603f2472345201d2e8a2a7d97b7eb2b80aa0ec7d9be06c3d0c8568fa14fcfbcb41186a8f4a3685da1f5baf60cba8bfacd41d7fb87905e270d64d783d5e0adced65575d98b015b6545f44cf826ea6ddfd1808cd85a97588fa07b9fb006c545d05cd706c0cc38d7d15b72b6f57b31ae4b25fa6ba42942cd44c9d15c20c11074762abba78f68acbde4d7144596b598ca8a921acd6ab3e50b5baa00759c0ea806a1ebb00d687972ac391e97d9d929e1b6434f065009afa721cec47b88c32b43a054e9ab62b2125eb4f069feb701ac71c11522177578625ed4a60332ecf87fdd3161686fcb1fb75c87d5dc30b9b20e64d250ecc3936d21a204c84e0f884ab65e0a732e8852b7c880a90bff0ed2d3177d1b0d719b142e3116c5b99380fea82ea9f5eb7224f894b91ecf7cf576aecb0410ddb458560291bc13f9356bc47eaa952f16ac4b501f794da9f3c2a3bcd9d787a85aa88936579a9ab790cf0fdd7d08509ca14d3cec4586677126a4c7b46557016f667930165b7eeb5a94017ae2628ff4e7817edcad6a48f771ebf0757b9b1aa0ebe2abb44a79bc4eb825d9faac42f43fb92d244fbd7c1aba2ff406c67f7d696ad017b64647184b142982ae377f811305c139f0de131cbcbac6d3f6df33dad38da1eac2489b2e9f60f2dbe027b5cad315fbafd99d637068f419d5f9b1ec75a0ccc6be1e9147ae3230d287258094ebbddf89a8bce6a8aed314116031d44e771ca0f182ec8f9bfc29e30f294d33f9d4b2f2fcd9aecb842a70281d420e576464897fdbdf14580f7ddb274b1c1298660b75ddf3815921d658b6dd88ec261a445afd60b2229a1888a41e24c980a61166dbc02b7837887a2cb93b88a8f12a8154ec55ad81379907e996d741df20ea42576f8e560a621035223b9d959751dbae54cb9ccfd14615c4635a363e4c15330cdaf2e62c5f5e38698c6d0614e862232552d6c6278278f9e786b6714968810f45e06dfb9031868f1a3d983028721bc98e1b1be42462f825885551161b9272f5ec0687052c2528cf0752477956ad1ef6b6a21a6823a8d4b141bc565784e60789b84fecc2d5d4d285501d3e6463501f21fa8401a06948815449d42ca6ee05117a5505d60f848784788888d2482368380dfa667b5fe8e129b1718c55217f46d11a649824257a7700890ce2b80d2ead5df5425c3139a8cad722df36fc726f4b1e9c04708bb7d6f22725d7d10b74b75786383280f9f3f050ce1f995d27c308fa75483a75ecca0932fdfb36fb48ad9ad09c4f86b6f8bb25e8d9df93353c8936296d1927e8c5cc1cbb11e82bdff9e4d3fbbe7db174761fae67c7d216c006c119b963e85b5f3c32462e7933887b6b8c5043c7072825a83464909aac72388185e89650e5185a5f14acf402f50d4c70909f6037d15a6a9467ef61b723d296606b5bd71ffe211fc4aff5c52be9a7781a26f07fd13230b1fae31ff661fb5a5f5c8e6e38f4e9cd5a1ff793a4c97cad2f269fa1e807e910ac7adef0554860036191810da0af1a52482bbf621a84dca4f9b0f864c48be035fc8bc1a05bea95334c953ec05f9625cf131c38a77a8131fa522da75e0b4a459fb1df880b735159da510a62e84b6b4c91b826349d3854d922fce802048a35029d506005302bd97db1c604c7cbe242099fca148bafdcf143d22f1828e8102a7405d0738ac2db33f11bf65f89af0e658357aa4486b09137cace80e12eb999a49f0278a51cd060a5d3e3b6219830ead033bd955b2249a71861a734a644876bb3045852af9b21fffcca4e1cef4050a53e8c9bd370804afd06fd123359db4cc7962013adeb26287ab6f625297d625c36c2f6c5d383c3f3eaaa32cde47d0baae3f8f18e00505c647889e6e9eaf6a1e7ac09393dc5e094eb67073ca6b64d26bcc9499b4d0264a18fd148d44048b017fe1a62ab73b41613828e9f5a7b22873d610b525f7c6d08a1301f79f8d782403841e803f88e78c0fa1e096ffb4ae8042f7633684598f258932dc87011f2902ece692f9aeaeb280fa9012edab923a00a82b025ab9376f68c67edad88476b38d49435435a6c6d35e16aa00a8286e91038ac0eb1659b8ea1bc6b58c019c84e21a02ad74e0157563f860d3e8fc3b3f73a614b2a97ced48a3dbc897639ddda4184c96048442d2dd496abb7b6e31a7fe2144ae5f8863876bb20c0cdb293f5a4fbc0b959bd72989754c5a94be804b174b90242a562104cbeebd32873bf34490957ac7797dfb3ca2c9297dfae9cbfb970a621c060dbbe638def63ffd578c128611f3bf01f70e0033ebfcef8a844d612b426774696308e335b6ec3e909fdbc7e6a6e0ab84c92528258c3f0abc38f17b3984b4ffdbbe5068012d3417abe793fcc8d56c69b532f5e595a8784a8cde7bb6b235a9260addfe824047ccc523386952ccbdeb2dd7e22fa44e1942718ece0bed40508d665db84526bbd55311f9f4137940bdb145a520331468991b1a6f5b6b850cd62d0a0ea79a7e4a9725af6d7e7f11ecbf8d800898ca63e725efbf71e7ad83fd3aec768e02e83e1cb8ee096c1b3ebce8fb4bf85e665626c2a37b1b6a576e8fe097cc1d4fd0cf15db530281739a53000483fb27a5aa84be75b7403f40c23cd3e5be832d6548f1c37451c56c674583163973037f46450bdef30a3a05d7154d5c5cc3d920175d6fcf444e4205416ff64d8c5131e18ab26bf95170f7ca31abc71bc7ea36bf0e2feec703fb2c210689fd135aacf88e899c0d9afae157cb4fd4ca3b0f8846565f1816bfd8a7707cfcb85fb18c3d0d46ae72e1798e6cc2620a792e930ba49a49380a8670c9ecbbd0205a7e0aa5eb4231062a0c0579552e6c4a5c84763f7820a1f685c5f6fd475be1e69ee24f14ec6090e5a6a553d93ec9d86072ae769c90a02111366a6260bad0eaa62cd443acf3251a1aa0c302f7ebc39a8a82c81922966400250c8a53c9f267a95750091ff9b1e42f925ea02bd33c6248c6af54b92f3f1f82b228ce9532d145130982ee4bd4ca5bd2a8d4fcccb2f01a7aff11c0ed891f131ce106fe6f921a85ecac71271e262ed5ccafb77f430c301f3a986ff23625e1f85aa4a9388897e521cfa2b7d85edb72460c82cd0e73f02eb7824c6b443a4c80e09f48b098bb1a6b03299607d049795d4cfc322ca2cbe357bb47559aa8b1eab50653b3fdabd460335acc4b8cc30bc06702ac4720d0f239d8697fda786bf42dc945a1437ae2661fa537f137f1a5dcf00d1575cc3dba697424c9bfece1528d272715241a4468ae2faa79842c02e13cf06efff9ba447901d28aba246b2f0c89c918f71dedbbf4a938c245aedd64dd1579a785d775c6964fb6f8f71c1b36c562bf36e5ea7ce6a9d6fc420671fe4f108e7ad6e89af414c4800154bd88491292e091df53d19c4f7fadacd0e3e13b5e0ea39de8e125b2d243a516f3ae049824e5d7a4540057d2c19073b569fd580bca32755fabcd261e88d28c26ad4acd5e7275fc3fe82bc6a847bcf11f92c1315d66e92afca21bb0a6f48657ee66d1cd4ba0140a902c96c77a4df1b22d50ee590539744517ffd56a2dfd01a4bae2a7f772597d88125101e552c154ed3e026f35be3082731d0d12308bc2446a9f37a20393759a8592bf31848e16f58a97219ac8265bea9c2920879c6e5717add28b811c2e19f0cbae04859c9993f1cf9916177918b3c5c82da07fee9c7ff90065d66710d6d9173ac9c4b7e846522941620998b388b94db6f30ffa8f7ec6163f1283b480d3ac2d59ddc262ca77344f6de0b546cf85821aafc1d258ff495ade92ffa98a6b6f4bf9b12439e835faba5943570ff2af582be63ed4bfdbb4f5c02187d29e03d4ba8da62362ec489c5b0eed26945b1a1bc81cd3df6d731efed523f30dfd011d2df7d3c06943a349751a5cbd4356ef078150169390445a3d1ed9974782016c6bccaf8bf577f3ae32dd89fd1d087f964ce083aba16cfc55be4a6e9e39ae0957886675d4813e30533f9255602d9c91081a26d343c2bd763ed7e3d83ce425230ffd0ad4eca69ac752382a8e3e38fe8a2f647dcb684c3c689ee7d2c4bb7c8d5acde9617bc02b0edc1de826d9ac893754cc0d72b1dd56e10d7663e2d309bb3f1b0465548a945ee368f499d267f1a5588ad3ecadce39940ccdc0066e7d52e23e364a7affe3a1e0e113c93528ceafd450d13b1bff078b40c919ac5090906107ca7b165180675430103a0c205674abdb6ec2d35573c8975a28c4e8e1cb266a9c5fb2c46d9bba90610e9ebaaf80990265bb17952d5e768206bee317f87ec50e8ea3fca8f043a24fb88817444fd117589f0ab39a33d3754335f94d9a108eb6132124d815b8989113159c6a956a013122ed2553b111554c8c23f0f30baff984f117689cc36b8eb9f6827286a09af89fe641a8692faf012d024f196e0c2a27811b4f9ed7ec166acb5bad5f7db5209643b8e98463fc1b098bec28307f57f2002c1be1f83b2bdb0d4fbda13dd078621594e227e94416c130caaa36d889d96247e0a8638ae77e5d5291d3cb5ed5c39a10176ee467bfeaf25ff2317b2e154025f3c6144ae4b4d4b7528ce381aa37a5f6f54577411450f6ccfd8afdc9f4945177d131c4826fd0c37d5974665e7a7745064cdd2aa4f9590eb11922d87274a9ba253a5aaab7345384645ad05b6aaae976f82a6bd51ed8b7732b7e69e98dcb88a9810f4c784451ab3744ac70461b496964e096d97d007d34a362999897c2dd9c53d120212e36d2b26c814911dcf967a70cb0fc216bb865f72a4857ec2f2270e1ec6d1f10353418221922492daf4d893d88bde4a67607ae00041707458037f7d62afabf4cffde2568ebeb081108e0ecf968b7964441aa9beba4c71a37bfa1e3a367cdc7cd2be182f6c2aa958f66bf13ada428a559f2d0f99af15eba86c367074e40aa9ae2aef5f24c32dfb7256ef85ad9446d400a0ec0943b75c45326bdc269a159d0a3c1d70f5b86b20dabc232eff85af002f901e33b0b761808c69255f2162dfa3e38c70f2aaeafdc83c017c686fa0c78c99118840cb5beb5bbe4247b7912caa8d3539e25ea36d8d082a22ca1b87727dd5846d95f2124347ee21cc00cb4c82b0adc0a448ac79b04b3e59f71ad823b38fc83d039ce66530dd5d29535604df4e2568361578660f982adc84880e81342198eb84c42a6b30751434b1378b3591204c314850a22c830fcc60f488d471a6627bd18c09949fd32b1d168aa76acccb12441ed39689948e910457609e1070e2929dfd2082fedd1afc16899c37d1cbc8023d723fb62f0ef19739e3e8e36661827cecb8713527fbcf86ccc1d316da87116b3441867944794b7277cf3cc8d27fcb2102940e1e0db56462ccbbde27e8ec33a199f35a4c7104118de050b5b0c609f9f28f690c6564694edcbb64c524f34648d3247e952521f962107ac2e48fcaf5ce3c47ac59152ae74a34f66d7296c3c12442806b335cdc91e41b9bf61234c89df2bf9fec0b235e5c74e1fccd901ae5c39527ecb737aa76041d5aefa3fe888eb821f6fb324c4bf211161b623f4bc15097fd10e35c9c01befbffa53396dec400f267e272f77a555707dda48d2dddcbfdbbe95375fcbbd9c26834edb6d3dc7dfc30f13cf71e50b9db796f43b83188588098e64de6da284ba414f78dd837458d576dfcf70dc7d3a5e78da9ee2637bfcef80dbdb66fb0349b87a66f5c3c0c7d43d1636dd7052ea8914401136f370cc44517fe9cf607708c1e86efefbeae3bcd494fba9b3512f89366cf2117908abf5473cc31299688e902661369c488b1a5d4b3ba5a8112e15a6ac86d0694da215b2f79a045b1aebc98981b3d8e3a2cae4bf288bf93cb24faf72d2f809640dbe182dc5a0f79eec699ce682647c78cf06e415d28e178aa326ac37a746684521ead9c1a33db11cea5eda6c7d78f6cde2a4f587e056bcffd2072006ceb7f41e371bb2a9a6c6a12fa5cae549e94f8aa0a2f350eab88d965b2a721b763f040f0222a88c8af6d4e7ce478d5ad9899bacc751dec303361f310cd404af00e00c03ffb0521c0b3fdacb3f8ca2bbfce8b8df7df75ee3614d18a7613d0064373f7198b653a81b9e5e72165b5f02856978565e2d83f55ff9f71a974416b54e7fbec3c1b5672385761e064de9fc95573c36bdcaa359ef4e7b6c65d9d6f98186f3dc2c561f1707b6be8de1c858bc850fa9764a93717fb4e6c6ed3dacdff7b6cc1864b4072116ec372c6bb8e86cbc561ef5a846168638c2d437d4443e163822dc0a7fef30e803b83f149b6cbfb3caecf92ddfd77a3cea2a8d5e9ab8c0a6967482cdbcc220b7792fe63cbf87ac00b6163eaf5535daac4ba1afd5cfa398ef01ef85c636e790ece8ac65a5d317bf24cbf6c1afe5073375cb1a49b8683f782f09599efe826e6eeff931ef280abb43ef8523c1c6390f1640ce709a82a6d0a693191f021f8044c1d63a0e05f97c3a868e842467e7b1cd7076ce33290991d0ebc18814f580f4d06aa0b966435ad6befcde4fcb71bc777d2de2f9bab84d52d5e2803c8a2e86ade9b17a39762ae2a4df708f076f172037acc3d28810ec89c6e5b5095405a88984880b228b5e4e4453bf821a9540edce88a402b6bd48984573211a9f39606bda531c6e177ebc5dc310542ca332d04c86c48dfe809dc06db6beb39a3a3a10fe7d48e1616b141e7477c8c190df91a967860cbddee316ca3d0e4fa25e46adef3d19bee378a83599d61316c34dc4f6e4e70b5dbc59b632289f0730b1a5967a749a3f7fda5c7fb7e15bf7df2a719633bf9cead11f512d6398be406f7cec38cc27efe2a1fa1709fa0c28589d3e17029da3ff10d90edbadf0edd6f2b162c8c40ef2c7bb3504ad7158a9d0b97edce85eead2813cbbd0529a7ed6490e71c016acdc7116bdf55570a2b9a349d025c68a915a8abaaa1c747787e1562fc1c5cf1276cbea27ae6613e92d17be0c707914c984b26bd7358065b819de35bb8e18a22bdf3080c57c92dbd4c12cca8cec5d900a066ee2de8ebb534e5b25dfa1db84524ed36c010ebb52ccbae47068ec7675a1a46178f1ab946579e503f05c51d99ff5509e8ea7003c96cf5edd9047b8aeeb1e7e91a3cf1fe881acb58a709b3ddfa3fab5f07f334803f76d368559c075f95c769d8b676f3bd689d7c14f60ebd44551256b09bb358eebedcf5be889d36e92bbe0dd1e2a96cad3a58f973c17e46884216f6e731165aca4e69e23387d6e35052295acf280c3740d96e6aa7f1bf6135edd633a98261515b29fa508aa812c185341184b1620778d0d444ecf1021e60ca9c3bceb688268d7859c70cd2d60e5b0cc772fdc9d8e9f8b1f89fdd48dcacc786fd02ad493a47ffbcb894a9f38b0d62cb3b3a7e5c4bde7a645e3155d743511103d318ce1be29ac5dc923a937ce2c989c30772d517f46e0cb5054209f216e22bb6b8d4d2ce98a1d565f32c35b39d8c40e999448ea9c073a0a48496e80744112b97e496d4a486c4645a0c84a487646bd859b490047fdc21f363abdc0a0643ad165e4222ff779259b129370684c1060b1593d8b7fbc9dc87b97bc88260deda696c60246f07b16eba3bd5a9dd85445052f1331b14eccb1959753b0758415fc6b6064e6ff72b585e44f7c58dfcaec80e52e53b24daf49cdf722bbcdab53fc070f01bd04e43e93e45e75a49bf0c7809b8c395e81ae7d8f865153cbdf627e00f4129c8b4da508a4bb3837130f562413a84095af288dd516834b442cc4c850398f4bf8e3324ceb6eedd3c70c42901f4e64875ec00e8cc5312b9052c0e397311a61594ed658c118fcadf4604ffd22482b37eca19cb473a7d52bac194521195ba97fc38650946cafc2d12433b25985c9bebe42c6108a0aff19e956cb81ef2ce1f901bf15415806957fc8972143c78bc2efcc731ec1f88fc1126e107e5e86363dafe52b2fbe359d555b1286a2ee9d0acda6df813968552fa38f7ed56b46feb62ae8225d659f214dc117296d1a19040820a573eae8ec273ba8298f171174dbfc749fe54ef34516f3e34b83056f406aee6e0d2b607a1b01c702c610346022f6cb5db618c2b8210576e6561d1ea8d74bcb5b745c55ed15165aad7d5368e69e7d7b32a56914ab3d61a56811bc6e060b99656a03257e84a150728142740f06aa026b885716d96ce5346e246ab54b35f250fd1eea4c06b0c635c61ac790cfd0342e52763218f27e3297fe1d9c1db2e55d2e5c46522c33f1639c60c1dcf12f04b17ebbc37531ad315a750e94d3e9e2d1f92630b3db8b587104fc22916f20495ffa2271e6f5b9debf7f76aac82cf57e9dc14b0b05231b791fe55d6267487fe15f549cef15d9bb964d75fc58795190468253593ac3ed2b5eeae109449c88e9ca6e7298096f9c2b590e161f44b16b8ac766f23ef4e00e81bcc67eafe2a2150b4e84956632022755c38e239b291346642bd774b9e859d4f81e0f1d740d123ca8f856263580530e7b6743809470b13ee8c1108ce0a5afe2dd4ba4e8af3f9df91a0671b2f99b74d4e01ff33e9d329dc8931660ca8fdc0fd47e52905be5a5e5612e7b382145d809b816da928c7c91a51a64ea2994ec6b53d0134ec2f31563750299d34a26709707058293e6094855f310ccb2da4ccc11bfaf849c84ed4684844a61ae295a78655467f57d798c882b763b1721367a9e5d3c9d9a428b4da013499560a1b4fa40a58d74f851b46a7cb2f0f3e864ff23970d61f3f04220a1a24c1466cb21d0f55b8df3c0a17295253e050b03ee930cfbafb4e1126b5d91e1165452dbd3f7eb237c271f48a60946179389f851950ec7cfc3c8e7bb0f755b3b86f2253d2aaa463958a50e762c3f206ea2d2b92ed44ced9ab680944614c9351f1a7bf9c8ed29333845f28b45b647e05d5c96e492433439704808d4eed28a0adae64dd83b3d0239d662e8116eafcc0d475308ada479129539ae25e4bf87b979c37a149c411902a5d50c7d4864928914b9a077f5319ac59f9eb7e0647bf0078bbfc64125f807fbbc5d67c2fe6fd9fcb1d15d2eccf097366d6edef03806d4846e77b03ba4f84cf478c53b1091707533f62a1ccc7c1306f0030d143bbc0027186e606cc57047aac33bd5720d8554d3a096d3bbdecfcae978fefd5edb72abeedf4f294858fde9544a8cac7f7ccc4a68ec41fdb148ed7cea37da719cff5ef3d623eef3f8ff67b86f973df5e08ca7e84bdbc104b5bb468a2649b34b5b609217bcbbd037e0bc50bfc0b5e6a461b48a8e4863c89339238838486888a662741515aa2fd00f510519151ed0849a9ca2590d6fa39102c68a8855aa0c0928e9494248be63c6a89462e2db0cf59e7cf5145020a0a12121a1a9a44b3c80829c618638c924869098a521214a4a4186b4c9c255528602bb526ad8b7119aa4460512bc60939346751292a290d2d0d356d68688b91434343434343b3a81a81b5d6515212969c4c9249324926c9245afd01815a41ef50d4ce980e0a0a0a0a0a526a81024b3a52aba2a8ed983e9a3f73d6d20283fdad16081e81b505be057b0b6c6e7709bdd2250c2fd6d82e0f336732723cf6169a33219ec47dbcce99ca2513a8533d178229178d192c00d81b1ee7ace5361060000140c0011ee72ce606b0f1f2386735bff13867407cf638673f3c013e9c07fc3867457c87c739e3711d8f73a6739ac739c3f9cce39cd95cc688c7390372221ee7ecc78708e271ce769ef338670cf8cde39c09f9118f7386c47b3cce5990f7bc5b0076d1046b0d79bc37c4e67b9be5363a5bc6743175ce62f10031d62e319a524be8875813ce7689123f6cce94f8124cdcfe124ad824e4192004892016888d33d6737fd838633e2ecf8e8e8d33967373276179736d6c9cb123ee026c9cb11ed708f9226c9c31222e0f1b676c882b848d3316c4adb171c680b071c6686eee212c67ae0f36ce98ccedc1c619e3e1c6d83863f8ee707774d0cbcd32e9c6cd12caec66a994809be512026e964607b859d6e4119636ae148add2c870670b3240ac09d3100dc2c69f6de70b304b241ba248d3be3e6a8c4ba3946a3589bb18884ba2ddccd2e341af5adb3753e30c86923e61ebf78984e5d76112965371b310ef16624f127bbc59fe23f6d8c3d678c6deacfd81951208f6bc24c6a19aa561c699862ac0f724e006bb4218966b0c91d80319bb5720760c76863d662cc9c9d146df4bbfe2ce1f02e1fa3d2762a9c06153161daa973dc2665ca5249ed1663346852dcd909251e60feb34f6652844d4ced44dd18618d5136461bdb9c127fb69b7749bdf49ee5b0c93e7105ed649fb8824651749b37d1894db01a13096926cd59bd1b17a0ecd7f079ba45cbe6e5466717ebb7e949796ece5f7ae975e14c95b6f90de58a6130963a9331b205b70e2cdd3da3663d0a6fb5eb380e0d1dd765e064603a574ff554b95a6bed947200eb69a441354f8a1a16b1c785014241e7376bbde9de5c85d130ba3a5a21356c757a5ead9eb48c08fd2aa957505a56f12aa9cff5e9dc4ff3a3993f75d130cad99aa461d4ba4e8fb876d129358c56a099f9eed5d21f233a25db04fdc17356b07558cb7459d28f3de7bb7737cf23c191d2cfa9d4d195d08c3d01f3eca2524ab5c0f4738c9e794a4094facc28987e2a794af388f39494ea3c9ad754df754a7306829572d509552161faca99ec9c47a61a6862a14589526bc7e2c342fb6e4682bf7335008f30ed501b6a436d8df29452f7945ad67d2ae530a2443999b86ece8e3b7573769fb5ce30ea3c0a574f2908a07c576d6cc9ebba39bbae9ba69eb5bbe9d376af96ebba7abae964fa0403f494700d1c1540faab6a59556b1b71a07593ab260e85e2884055182daba99ca88ebc89427d3278722f0065b5f59d3575b5e34c5dad748cf63aabaaa99ca88e6000cee3b9a34f690dd3434131edabaacd18bd1454b595d2b461033a8042aaca9285eadbc7c3c39c0a346d2168e2529cc771298f0bc19b402c636d99c9647af8aa02afea40962c5868aab364a15201356c522d681011c0d8b0ba6101cb7f5fc0f228284cc01e16b0c084a93467130a943946cb5435804ff9dc424fa596a93eefa53e999494d4170412ac12022825cae6d66482a959b2889485c69205cb4fa44400597e40e9a92009423107d34f312585fb54366569ca730bf7274d75c6c08f4787421dfcc966fa7de1654d799db3d45352eee19473e1cd12a7f0f070ca8ddf4ccab7c334eea6d25c1a0298559c10c0cfda531f075ad7f9d812f7181a70a0c5966268d8246a08200e34ea4d8e06a0ca46a5dcb673f6c649676b80cef7e346bb224c511849ce27f334934cdd3bea793fd9ec598e05e0e9dd4d72bbc922c112165b8aa18186d419cd21ef893ce72aa23bf71edb6977b98bc5d6df2638436955c528e367c7d1d972e326d29d48d10645d23d5310243444546454fb011a222a32aa1d21292d35ed072848a8c8a876849404e507284868886849094a12526d812dd8613f5d4c0ddc86b6181ac3cd60c6d4c0ad066ee0169434a4542469357093924e4c7bce4e55c163a1b5008c4269b428941639ae7291abb1ab2c34962caec0b500ec88ba8d3b711c67e24e1cc799623d678a3576a6a626e8587e28cb0fee6aa034d33b13365dbab164c1924557398bbc5823abacc4c0bd4ac20dd2c0aef3a9d4878642a1685e8c92a60ed3a90ea4b5ac415a675dae22529feff11d85456a42c1e2036948a4e9b27ea67b35d5d7fba4bb4fb89e9fdfcc362948e9566766c77d32ddf57400520cd29880338ad62e9afaae72f5aebaab428a363816801d48dbb818ea0204b7ad0b2e86bce8bc004114ad617d10a4b5ac7231d445cb4ce0a97a26d3c954bbe062c88bea050d456b19477f68929649142da3681ecb4f46d275de61da747a776adaf419a4e1bef76abbae9a4ef59ea9eb4cefeca9d224422de31aab4c191c40c2301cc17842145cc303c0110c26086126006104e008069218d8c6a6cc1417693c447e7b7c9e37ca4fa561f1dde92f52bcf52a2f884ca454eae69927d2cd45e63579f774ee19c990d3cd3217a1328606f952ef10f9ee78bbb73b51ba520535ec76358fc88b1e9147e41135ec897ca528d47d82a1a0aaa038391680591544c4bd5305854aaaa06ddb36939411e511a9823c22a5704915d4b2134dc279aaa0ac9a367a9eb79d6e3a75a6eeae46d4b24e698e3197bcec114d1bbdd3e99491702793ed4c96fbc972f38743753faaa0aea35ad0245c9cb8c0d223aad63bdd74cebb973a55538d2d7d34a63b953e19eed29f14aab3bdc5eed49239ef112431f3ab2b241249431b2851a2448912254a9450254a942851a2440955a2448912254aa812254a9428a14a94285142952851429528a14a68df99d948ba6ee145194f07e0ecee39e79c4ba074094a4a54d224ad5603411a436b35ca2d817aa66f6609bdb161574824dd9c16fa607f25b62647371cb8181ae826db024ba0618b23184a10033f19f288e2c54156afeb8ae6ecf4c681265fa48f4ca67ba5dc368e93527647b8d61519e16601983ba44e8c96b968468291e825cccc4822ca23dae84683195556a9525ad55042a820d4162822940d56a56132b6a45262c970b164ac7cdeb5e2b2ad5894d8928cb39e554af3346c4602050d8386c1b2326c9c31d56cb5ae6ab95a1c8aab815c5d59b9b7b93a1665ba5cddba55a861dbe92743e3d3d6a0b6750b0e06603f06d52d88865ac669cc5832501d53a1cf346ee536d7b459ba2c0bad25ca6badacacdc655b6f3b5daaaf58169f964b7559682e1b715cb94ccf90359c460d35d440a386e7631a47f1881909b6210815140405c535d81c94554a33b2ca7a2bbdf276b5de5f69d1b43e67bb66cb75d5ec76cdb775b9deba9426e3723d7e362c6d367c3b1703b0b7281408c40d7a1555955ad658653392a952a241740b2a44b9a0414335a7d7759dd730dd52caeeeed33eedeeee1905f712942d3ce9eea4ee3ed7e7babb9528ddfa5c6da56df3c2ebba7eed9bbaa8ab35a8bb6394b2bbe79c94d2aeabfd6a329dfaa7ee8e51caee9e73524a6baddddddd92e9eeee5b430daa0c36ac1ba361db9252b4b10551540d5c1720eb325661b42c57bcad9ccc94ab94e6ec95f24c554b2fab52026d46c2cdb3649cf51e32ceba4798cc1f615d468fd7eb2289e99b5d6f5d8e05e00a885d2bad8e86cbc28a6878b56551d6fad66a759f4caba25897b1b2721a3468d0a01d8059a5a4526a198d6f578dd1b2956f572db56c7ebb2a8acb75391680aedc5f011fbf997e0b496be53093c6caeb371ca623931e32feba15aceb9a67fdf4d36fb856c8b8ae795d459ccefa1127d68f78bdfeba5d07a26a0072367434561e6db061e5e616b6e1ae6bc3fbb418809906754a7326e3dbd29cb1e6d2e6ba7df3540a1b4ebd5a1f524fddfad4eb2d4273aaaff387febbb9851b4c69f0b82d1414ab6451c3b628364c1fdba876fd3b7f7810673349c7b6cba219dbce0513b630c2d442084545455e70812ed473c051489cf24d26b5b4d08256e30ddbb6264fa058184b122ca9d59221e3dc2723e3dc39ef04512693aab73d4f2ef076ae0b60dfbbca555e486ad9fc691815a26c5e20c2b69f6c03cd58075d20ca3a0c11d64a1b6c9b3e4143f347c66cd3a7655b6e957cd2b318937a8721cab668a596cd1044d8f62d3597c0dc4b4b2d8b423bd9d9b409f4168e5f80c0025c1740d555ee3dcb22cf022a7602d9f933639beace202e802a2fd02cb600e6f993f2d624aa796a6164748464647484f4f920f176eea953b52d9fd5a1851671b41fd5a44d4bf2008da69ca6a050946ea877c0061d24019a451228d4ea265d3b02b65113ee93e9540ab6cdebab72910db716b69f80a99fbcbeb2480b60ea7650c3b69f6e03356cfb1240faa87a7f33a99feeaaf94eff3516e0dc3eb1004fdf7e1a868b7cd845f37dd7c521c16d34675d2b68444f2b9a854b8e98a25a10d12c84e66c5620c6b66f006f0f01de3e4f8037a1b96d5c16c02c8b66d16a954a8177957b44c67813e8ce9f86bd6f86b5d111f06dc39f6cee87446058a5faa91f4fb2555f70c00845dcea6659c31bcda287cabd7b44c6a85c17cc0f4546b5a2d4d1c90355a0381a7d91054e016baaa250e7b83a43c6b79a7133f7947b60ea29a919600a3863c6539f0182333e03ace05132be15e6ea51e0e91c16c09a92929292f2793a9d7eaa5565230e6dcd9322171085026d55790659ff56293df8bb99861ffd16d2d4f7d4bf2d95a2287ad529853ba9620d9f5057512c80a8300cc3f0f39309bb5158005128d465c51e113d8e3cebba89e98948a87bdf470486bff727f3218175ce64cc1119e33d750ada25e6930845953a5157ea1147f993e4a7e9bdce05ac4fb5cc75fa994012005de0fc01d202480679560acdd8f6f9244895ba31043780022669d9162d93dbd4026f48209d3f4524e6be7d35f4471a66a461dbea11d3b87450f51408965656d2a4cf1962085e55eaa397df8c6ca0530f20cd24b1614feeb45946f951a5e8672346a140abb219865514c454d504ac9bb411b55da3ff8aa417d2e8e49da63e9ad3e9cd2e1afaef1f3d3d15de0ca6dcd41b3c355659184ed9a293d1679b80617a140af5399331a8a39678f73e8fa64f4faf2ce2ae00729f407326bde8a239eb30eea4259b6c6fb5aa11de6411de382b80dc731b35d0f6ad6e5bd3f0564d954847809b4755a2400446f12463bad841c14d7f32fda13fb5ca008cf3024da009847b0275ac3fb930c07933e5c6e0cdc71a9995d405c9b8401ac80006925ca0023f14c8028b8ac1d6915c61c5912aa89862a97b4057a483401745274507c5134e38a08906101992995842091c3252483e383a008e60f8a00438c584383b21451c32ee69e0471581322c7d41090ba7941470cbf034f05c33f00c62e0b9856592e763798167189616f08ee69c593c1f0b9f098011a03d1f9f60f874c5730b3e19cd58df8ae77ae419ace2533cc38c50299e5ba2788641e0f9459e5b0f780631144b4f3c57279e41073cb79a787e039e61449e5bf090e716ec651813cf5fe2b9a5c43388bdc724b8cd0037550ddc5cc10cdc0cb6307073eb496ebebcc0cd30690159812b7fae77242920b39058481f15959c8094808cc045fd481a922b6e6eb1e24815544c61448aa5289620b054640984e2899bab1337830eb81fd11b703f222243a04061e283b2c4078505265180fba584be94d0f77d351cce487012f782e62c1412020a12d2409050068284301024942448e802477316560bdc5cc10adc0cb67ebc230a7847597847ded1cf9cad805046d5e7e60a4ee066b025819b5b8fc08af683e4e78a6b05cae808caa80a94111528a3295046b88f5a9a3315da47d462e4e616981437c31ec5cd6f41e0e61658e466f001a8a50ac5cd157ce266b0e5c4cdad3be0e6c39ab819d6809b5bfa1f94395351620dcd58bf85c8cd2db02137c39e6f7e8b899b5be01237834adc0ab68ec34d09c9502895124a09a584524229a1d4734bbf8b095be52a9f2b20950a4805a4025201a98054a7ab1a08ae6ae0aa06ae6ae0aa06ae6ae037155a0a2d8596424ba1a5d0529e5b3895a29e73b2ce3aeb9d8a529f353467a79616184c454945a9da7806599e5bac211cce1a8a3d1b0067d6501277c9f6a039bb793f85346749736680f75350e6ace5fdd4922a48a5429ab39df7554b73c6f33e1834673ee6ec0798129452346748bc9f82346742de4f596ac15c622d1e4524188e970f4002c9200180450150cdbc460a298504801452eae65632e2b9976c8fa3f20c3ae2cf93681631c04e217622613b886d20b67b6cffb0128a0f2b79ac1c9ab1f89d781dbbc48cc5e7d81f662c1ec7c2662cfec6ceda8cc5db1c11bf801e36ce981144d838633cec10718526ced838633e58191b67ac071b63228cddc1eeb0f13a6c9cb1d68b8d3386c3de70899f59597c0222027268b106b0b10037d7d5ea2c37b75627c0cd5f1d879b61abc76e3600cea72498cd2a23559210eed7b0194cca294229462949b87f9b43dacbda6057accbd66069d8969d616558564e21e5164a21c5259c53484438a79052363712ce29a46cc24038a7904e96b339c52ad998ea825c34b9038a36fa9e273f8f220e570d96771e451b31a6c4f8645249a931524badd4b04e25352cf5648ad13015ad612a9f86a5a2346cda79146d448e72dc6cc99d52291fb903d0a3e14cefaa89785a4fa2ea4d38cfcbdab038adab460ee9e423f6a494524a29b9bb64fb9c85484849211214a510692944ea682152f703c409017143401c1150119011508d3bc25d9b31285509dc965ab4ffc0805a681b11ad886644abd18e6848b4a4a2a5a28d56b4fd146d40455b50d1265434845b69c68c6a0d3c6a213d090605ab28cdda3c9ab314d28c75c441df520423fa504b080c4a21c15a0e6b1d6ca590c219ac805635159a4a918a9251175453489145802b664862574824734b62095ecb8cd1963cc500ab0bc058fb21e26022daa0a7a789b32c2390640626601ac180e97334c22c882e4289384163ccd1302a135b54788968839e4302389f2394d3d68c511a983b02f8c30f7346a49bf6cd1c0dc03e3de541ec493b9409d52da826d9936e5c574da925d20b32c56cf35eb7492fc6b912a23268d8aaa88936a11517738b864d538c0bb8325a512f1a365741d1c6bcea087327244e09604e259d524973a6aa15045bad1f064b25a5924c581554f19c9f48aaa31853ed7c77429a9ff328e2581df5e44c34ccddf3e61364ed74eeb226a1547ab35432c16657efb33246d6b8af39c904cc4929604e620173e752f6a6bef3e6136a2d5359396918f7ce4624ccc1c0668cbbcadecc18f7cefe3063dc3fdb3263dc3d1713ac266918b7bdca18ee7b1050ee1f170e063e7adce9cadaac75c6c07bbdb6a725a044289fac1d21612e883bc73d880bdaae04923fdc978850a0d80e9ebb9442883638598b36b8cf2880590e0db54cbae81f2031f81a47bb83a9599ffb4dcb52ce7da767cee6b9b7702a5cadd66aadd6eeadacc4b2c6bd561064b2b244f4f5f1f18ebacfe91fa5371d498c8b5e4a6f8fefdd3b24312976497fb30f03f7112d02f5ee477c37d9eeaa1f617af8eeaaab6eb221a6ae4da5726d9d756d8f31444c5da82a621a01746209ee1208fc99008e9fcced7ec474afbb473a1711aa1b116354d73b4a758f9c7c98c41f90610cdc44d5d69f09984cddad9837fd88eedfb5a2df3d65630c68259643b35610acdfb9d7562ae2182223236aae1d4b67e591acc598968671af17d6308efb3c02b91a4db4ee5494bc1ad4f7543c00e765b41e2d22c66cae22b86fcfe1e2968de0784408c727352ccac4d927f04c3b005fc0e10806182bc02d2c6435c59448437ab369c81967aa46c348d0dddd2d7334ac6b12a661ed427bf6612d2d8b6000c14908a634629d68589c8f7733d231c69814638c11c411083b58411cc3a3f76875c2d25234faaa13aafc9696aa13ba169a50a0f4579dd05d9dc05527cc6f56276c4b4bf4a3d509db579d30ab1324ee54d509d5b481c193b267e8b7cf19f918e3ca8cfc64a64a664e227c402c361f64b441f15431adacccd4a8df4c6b9e3e23e28c791e089e3a4f07dff7cd4cd437736b782a1fe8bc67aa5da73292195a712c43d82a54a174491d0f960b6263c382dcc5c686b9c0847c878d0ddbf11f3fded37320409e80e23b3c8087ebd89c219f440af8fc9401109f9f453c3e3fbd28c2a865b9479396659dcb5acb72ce574e5a968df8eb881546cb7210b7416a591ee23762b42c13719ca423f20fc72dcb307ff9ccb1613bbc0255a42320eec8c686c1fce5e53f601b1b864f848d0d23e243d8d8b0211e848d0d0be246d8d8b022cfb1b16139d7b1b1613a2fc2c68611390f1b1bd6c481b0b1610e0022f328e2f31da565d988cf4f5acbb2021e7ef6b8fc5cc0579ff988bf3e3312677d6606dce63389df7c66258ef3f929d4b2bcc4c897f8fce4a265190267222fc9f1285e9384f1286cfd8180ad3e4cd8ea64095b95b05d12b66380ed90b09d51b700dbf5b09d026c6784e58ae061b9269cd116bde3e741bde3c63d4237a139c361e4c6193b00be590549eeb8b90694de6164878eda0e239ff700cff5e5e6964b6d76b30bc6b19b161bd096e465379fde680d8b42971a365d3e5f7d5a36fb7cfd6919139faf495ab6c4e72b50cb767cbe0ab54cc7e7cbf17fb8594589c3dcdc4ae23bdcbc02732137d760c083541a1217e266169c2b6d87d7dcac03ce9526e43437bbe05c69413e73738e99cf774d5a46f3f9aed6b29acf774e5a26c40f9fef925ac6e3530107e241dcac12c487b8b935c489b879858803b9b94611efb91966c47fdcccd2e33e6ed681e766979d9b7374b49601f97ce7d3b29ecf773f2dfbf1f92e49cb7c7cf27ce27cbebe739d9b55749e73732be7456e5eb9f9036eae6173286e86b1fec4cd2cab3b71b30e0db8d925a6a33d4056e41070d232288e5af6c4e7b9a49635e0f39c52cb62eec41d70b38a03dec4cdad264ee4e615221f72738d21cf37c3f279b8998587f770b30e3d5ce6661799fb70730e8cc3deb05b50fc7cb81909f6e13f2c102bae6379aab88dc599e2d2beac141deeb1d2a6e74bf0dce5c70364111b9c9e9b6bfe43082a5c74a838721f56f4f8e0f9cc0a1a26ac9881c0cd3fde6305143e66acb0c2e6c7cd331dcd95a2ba5c29ea8c66e63f8efcb819c87d1cf9e1e33e4c6a6eaef9ec8810370b719a234c2c711f26333743e03f80dc0cc57dbc87e73a5450a103848a1e2a80f4dc8709cfcd33d7a182860a97d9030ea4c87bbe63c4c8ce7718e1d1b90f93278c38610487c7c8cecd435cc748123b708c50f19c2a76729c38ae020825aaf8c10137eb7ca78a26aac871e266fc1faa00abb0d1b9f9870e882b454de24a519300e287eb50a17333cf73a8d0c9b90f93206e0ee2495031c4cd431c082a2e163e4c9448e23e4c7eb8d901d7e1b9b989e77c07579cdbecb0e1d9e1d9b90f137cf30fdf01c46d8cecc04f9cc789effcc64a1b2470541c38f761d20022386e6c74e0c0b952804810b9b13172d61437305310c1802986dc6cf39b293e056b0a982918701f26363713d1d54ac46d8cd8dc8c7396111bd67d9814717311678011236e36e24818b958f830610012f76142c4cd436e8373733eeb3744ae1415a612a1e3751cf91b9c9bfb30e171338f1301733311d7a103e63e4c5e3737e038f26622bff9caae1670b3140f72c4cd0b8822c8cb57ab4b296e3ee2512ce0418244711f262f578aeee6d7258e87568a0e2fc951f1921c3d6e7ec9b18310f9550e993047b8438e979b77b8901c42eec344dedc43c744de87c91137f7b8902b455dc0cd42aa0c0e19e290e17d98f4b8790197c121e4e6231e04879020f761d2c3cd3d5cca3cfcea4ad1e1253c4471a5a83bd41e2f3c5c295078c98dd79502b5ba0f1305dcac80f7b871738fbf5c29408c850f93971deec324e6e698bf78b89987af0e332150e401503ce184039a6800912199092be44bd82057c20a791236c8196085dc25378e840d72ef263463f340eceb3d76f51f56de870dcf635fdfb1abeb58f91c1b1ec7be2ebdb1ab4b6dacbc1bcd86773bc20af105d89af7b03457809db911568817616b4e84a5390f3bf321ac10770bc2d6dc0d084b73b71fecccdd7cb0272c63392644e08b31700fb603e3a70931c03cd8198208d4ba80632c77011e285501e31b87c9f11d707c875d72e31e913137aec32ec9718f74cc8dbfd82538ee911973e3fa307199b3bb6dd1b019ca6c46828b28212f9f00bb4487eb6099b4bce5b6c81c5a1060a3681c3e879f15ad65397cbe3aa1b816ae661a5a2edf7279a3903c5a8e801b45e79083a5451ab73c7e332d6f39556a195d7aa651f09cae59c3f3f683e7966403dab438c0cd5b109e39009b86e3e30d370415a1c5d602587a840301586cc460031040006a588959acc404b012e31071cc4a0cb3b28607601b0bc0c627380096c3f2e8a80600aefd0d7636d2ac2ea034d9a489175ec840065d74c105175b6c81a5165ae0dc4a40ab1ee3f555784d485e005fb7976e2b352c5c3d7cbdee0c0c5f613e5edd569a1dc5a822d55e7faeac28e0f1ebdef044ab345b7d1a36efb2354905aa5ab46c0daa32ee3ceb4a596b73d65f98af40523d4ac25900a3518c55209ac5eab2eaa461b586d5560a402bf5183d038f68341a1631b3873020451b6118c288b00dc3b40743bbc0f3ad34a34cd43c9d3fcd9f0a337de63719e0793a5f81e6ac33aab439eb689d5167d4d1bca3177a854472802aa9a04427a5b4659fb6c058830a01e4a8cb8a8c3d670a8c36e46b8c4930e298f8c8abd115987d6705e836ffc39cf3447a84ec607aac355a36a4ef6ddc4a94859767c59796194f893295cb9fa28c259371f9547cd1a18b2f444c58cee7c6b2beb343fadd3d936512c52664f62c41e372decb31ef02a3a2212fa58c335a7688b07996f541c2e655ac10b1c74dc3e671d081c83c6ca6ccefe0bcf35efe74eef341ca1c7d10bf884680829a2c93ae45362c6f141bee6e8d9baa29487ac36a340184b9e06e71c9b1d3b2fc7ada94767777d3eeeeeea6ddb49b76d36eda4dbb6937eda6ddb49b76d36eda4dbb6937eda6ddb49b76d36eda4dbb6937eda6ddb49b76d36eda4dbb69b74aff84042fd6f0568eab0bc7d3882f951565f5b1c39494751d8e2a389e7634e22a5f62c4b8a2409c5570cb97d609255f564ca07cb941b5703fdd15f952e30443dd16f9c252003072ec01ee7713dc3fdd171d309d388bb0fa03dcef76e07e01220e59b4215f74d0894e6e8480fbfd1b9070c30daf23bc5e3618c1061b568e56565c4570b96a20420d35d018020d1a2d27add60c3066cc90f1850c192c21b0582a351595551056ab10086198f2839414b00908aa7ca052a57a904a7d3cf83e543442a1bc1d3cefb4e37432e930996a8e5abb970e07c76d37703fb6d06883ce228e3965114727e02d3a748ba55980f91985062fd69058ca78ab8ccf2d31c773b1fb5b5c5ab0ec2c67374b2d0ebc2131e6716500fb912291b2a516910063133220e128041c9b8c210aee8905c7ba8ccbdd7a55ac6765928cd3f6944bd7e527e3ba9dd142f303188833591463db2b106534061eb0400ff0b603bc05356c53491cc4591b79985b02238eb85d6555b6360c0428200398e5904c4a9d407bb2d9e2d3a9cdd6d3016831fd496565fa662427f05dd37d9bb09888c5a9c76f26e5ead7103db9981b4309845a167e9bf1ed3d44d4b254ca5ddfeecdb011872a0e6541905b7df533c21921a89aa19af1192a6ec65532eab742d9195c18866118726270d98853526dc510dea6c85802fe74f0a814caf5d461fa5b85299b6ac28ae1a74f26c564faaeb0314c505d48018b81e338295128ae0a34258e0b5728d487fabe9ffe7dffb85538c6c9641a234c85465f2c216523569d1ac72fba00056f9f45b349cf52538b96452124e94286dc685e6c29a2244f709e5ee0ed445b0ec52f9e80006f110b98e2ee8f86c3c009b0ea6138c3ef744aa152a93140d4e993094d26d4181cc7a5a417d24816d19e417376a016065445d5d7542a954a8501e45028140ac585e1b422640537889b5a222bb89bd23b7f68609ea77704c04ed14f2695e256f01150e5f51c985570a7deab1359c16d5556707b3fcd19771159c18df304c2dbdc543e43e55eb132e314cf98f119335aa5ef4cd2cd8101cc3249c6adf77e11b4f405ac7a0af8ed353c621a2b1b5ec5d54fc60ceeab7baa954bb552b95c3fdda552b9ee52d519323e555dad56ab55ad60c4292894e4944014773a9d4e37ab9e722f95724aa5a4649c2ee3a7cb48a57e3a5dc6659c52a8d4410eb412abc09412884a4949494941cd1f251055836dad709c0b288352d4a92db26195aa559749ad962abc0bc89d3859740cd61478d4bd938d62935e346c6b98913793b40c357fb622019f54f69cf3f1082871087e584cc412b13968d1c1a545269134496b5906715b2c3fbf7bde3601558cb9e20fc45f0b7fdfe3773311fbbdb3d2474ada67e58fa4edb48c88bd9137329f5dc2dd2b6c2a25653daadebba7166cba373900332cda4d5a8b55802a57933570844514bd4cc4580be4be50b7db8fb12c23702b005b2207608e49b8eb4f00c606b210061258410a9c2ab74e3915a7521d94a06a45758a55d745035e75d5419584c9fed79d93e7b86dbb9452ca95277670013dd4fbe341b1bc2c41783608221ad60dc32d3f99ed9c65d2c40a965dc771f78a95154c6917841044f9420449f00d1cbf00aac02a8a47b3de7c12204c6b18e7f3438897c46104cb4f2dc05c9f4c0d804b6ebc70d818f3aab50e8051c3b9e300389d346c3e36370086323c8e0defcd1f3c01659f01c7267e3236df79cefcc1ea3dabd58ab562ddac56b759d99e87ae70e621cf8e0eada33d210ce9147070ec8fcf78f17bbd5858d848d327637367a0b4919d64ddaeb6baf97c674403c71e6831c6ec0116606cd88fafec8dcd406c7e5d1f384170f0d4d4e4a0d19901f2d2f31e17213b663bc88c5a3dd75acd5f36d7ecb058ac2f31a293939363c4fe3c2607904aab3f3dcf95c6d58058ce886bd2b0c9a2b111efb0304c90bfb05818e665e71ecd0ecd0e0d0d0d0dcd5918e6856525a679d9d9a1d9d9d97909729a970d6d91c640726cc43336d2b070be13529bc3cc9c1c1ad64ece75eecde8cce8ccccdcf4d1cccccc3c8786b5c39aa81c2bf1cc8e0e4b274747e7dd27a3b3c3621de7393c5e67b1786e0384e735d665f397db3c8775d93cc6e47810eb625de7ace3b02ed6630c8e7b3dab7e026e1300431e2b2fcc09eb1839763ea9868127ed0218c3afacab26bc7ce8aae979f8f00ec979cf3fc002cbf1c4dcb8ce6a8991ef608dec60e5ce7572d4767456f263c12abc117659f8c1e16dbe923105a3265dad337232ab1878de7352d435c161ab938ed59a17c0ec19c91d56472bf2bc68d9756cc2bb3272983e8ed5635cdd1c1ee7392c0e7bc3c6180b6f73f9f910fee630338c62c3387706dee0dcd8585718dedc221b7e9d7e33af3fb1c3edb000765700c3998b8e130dcfef8882678e858227adeeb011ebb011bbd888671c166225eeaf0c990b03a9e624bcd5e70560ae355acd49184f228eb96df29ec668d8acc06af59304e8eb5cb0f3f8c9e01ca6756c704e18866168b30ac3300cedcda52582aa61d4a39a63ab1835e989ce8ead38b68e7173ab93ce05f3354950cb0080e7eb64d9b4aacdcd95450b693336bf0117cbe62bad86cdd35ab4974ab8516186c7e637130560ae35da4b45e5deb867639d08cf922ffac9bcee46d4b0996178e62b3b84080bd63911168cc3ba43743c163c64759c0fd1d1e901ec394bead81d9b91e09d7b376ef4e43ce7f2e3d1638784a14d4ef8282466fda6e72cdbf350a6c7a35ecb4bdc52d6ac2ecea5cd2ca10c652843f9040eb808eb12cfaf66c3acfbbafdd56c79e7abcf7ce6f193d1394c47ac6323ded1c1394cdb443c635fce6323be6127a04ac30ccf6fac2bfccbc3dfb0aef0d65a750205ccb59663c3aab9cecd12ebb06e765894f50aefea6665f38e13795de7f1ab09729ac334456d3b372e3ae48dbc01c2e3d5f3ee93b9b93310c8e32703e4423e756cc4422c10483090efb04484bcdef3ba0e97d7c3bf80dc228d6bee1021a7f9422167fdc6b26e96f8263c6d199087af2d2382c237cfb967639b40e1f039f19b096d726c96dc7878c3e6db476373b3f362e98436629625b2f39b0f888e4bc7298e7807105b03c4d65c7e323bf7e447b3f39aebc87a78ecbce6a84f46e7cec09ec74fa6c7e5f49b456c73170b0412dcf3999dd979cdddf90eabc3ce847f62a6a1e71669bc73e52723e43a41f32067d98873ac8d8df8659ba079907b13d541015f6e4d11ba087269741e3f991b51aef38e002857ab7086f2d2f84c716fd57ac7e6735dadfe3acd1f80e49589b0e0d575ee4d619934c1a23359a14e2d64ad585f9d758b481c9efb68e45743e4693e443ebc4ba698e234d755b3f3f03b0f6fee3990af6eee81571e8ecd12e3dc78ae389ec11ccf2d238719b1396c6e5830ce67eef1d82658b0fc8cec8ca47c0ecfcc0f8d27c72eb97123e7f2393ca71f0d0fcfe337c3739cc374adcdf0372a38bc4d7856f857e3f052e737d6c6e696cd4458a698c2c6181dab736bcdba429e9be3d8dcdbb14d6c4eb6da8e8d1888943dd549c77ae45fb2569dc486d16a3496bcb51b6e9012c8b72090469bf9300162031bf04898a63e0073a5d54ef31e084c3c84e7379f800a87ce6deeddd85cf1cdcd69cb707ef3faead2ae7e3cb43b7fd925378e6363c7c2db5c9bc3cc1bcb731bcbf31dab6373789e17992e9f8ecdc3f48de5b9ae707600aca199e9f942042bf07198c78f8809ac748e7333c5384e8e1a1676b423ab556839235969338fd3e6abcf10809d93ccd1e6cc880460ae9dd18ccdcfbcd2e6cc77b0b9196cb57094abadeb01ccf94bdeeb503e6c96d8c78f7b42fcb09d4fd7fd34ac33eaba263efe8376463e563e8efa687cf878fc6684b88fb905983b23aefbe93adaab3602ce8887e7343c3ccf2da386158900dcf9cec3d79defbc0602305c75b48e66d4d53a1d74b5ce68074d5c2d5d8dea00ece9f94cec893db2be6e8dc20f9a40a11edd5a4343adeb24129cf37ace33c537bff9fc84783de79ed7a8f7cd95362707f57dab7b26940b18deb4aab5b0439963b3c439395f3d53bc62dd0362a368bc7a7de5a465451a03f9649dd680bc56abfbfaeaaf5b446220577d34400ee4f19b01f29cd3ccf8c9e4dcab2817f0d65ac3ae0073add54a6b58fd890218461ec01c1ef2391f22bfba77fa7cb079f8957d6529844de3d7ebacaf6cce5f36e7dd279373591344c8ac0ba3438a38e47b788c2f5e5134c07c0f37adba17cbc35dec8ecf2cbe101bf320f6f51aabe35e3f016dbeba79fc64640ed31e0ff6e53baccbb19d3dc60af9cb06b90e5b73691b7b2e60fd99b91ae159c5286a9951cbb267849bb44c857f08e2f19379dd73018778fc6476dc9ba8483b05d33cd81d8fb1af4b1b3167c4e3e61d8f9977c88e21763c06ef78c4f8ab4f06df19b803ef48d9b1e3d6f8eb3b86bc2e3f1f84f57000bebee37246f75e8f58c7c34f46c79d812f1dafd7e347f3ba2c976bc219dd743519db3569d89437b733b2f9ca6bd2329bdbfdac2819c0f0f13467cbd329d6547863c3708e63612e848dd8878db8c7422181b0b97382e7792c14f2871e6cee9880e7756c2ef21d3b8580e9f03f6e4d11ba3810d673ac2b7cc4affbb011f7195cbe9ab195567d6e8de6ce5c9f86ddb03106e686ad4e9ec44f06e6ce1380f2d61f5ac3a61018cf05715b8c71b46d013f6f513027c471c10d715d70449c0c381bcf5b11cbf3e60501be3501c0dc9ce099b730f09c0278dec4c0736e4f62cf1b9419cc8ccd2de55395fa3c9d14f59dfa609a241e714938da9c35a7059e0538bee186daca8b1befc1f261b8da7018862ff96a19569a8a0acd8b1b966bd2b179cee80a60ee24a31c1e3f19041ca6ab937a546b371f390252a3d0e67069e327636323eb919436af3415159a8c29acc2e75a5bad6a752286c9a767dc912cfe600bf5084301da82172677f4032e00e15ca3e0599fe0f9950c63fc7cb0f92ba99f341419e0964b2e70cb139084fb49b8ba019e1386acc3cc97cd12bfbe13ea84396178730fc746b1e1f037b66bd21975b5dc19f9e0fca6d2708a6c3e84a7383cc5e175d5845f159118e7f5a3c139cee33783f357b8a313e6acac5cad24c69939cf15dfdce03cb7f0cd639cd5da8ccddf9cfb646e6a391704e5cd4536fcba018e73734b88d75b2eedea668ae5111ce67096cd36d73523718dbb68ecc3db870f9fc3bdd0b6dcf312701dec1124313a3cb6ecf51cbefacbc686ad6e2ed23801cfe1f41342de96cf8f47cb13702f7e344b6edc2b6e5c87cbc29be50d1b3b01b9a912259a7d9eca8016d11f9fa72eb48702a142d017ea83f2d01dbae33a3e4f6b1ee4f394e6423e4f6772ecb0954887ad4b2fb65372b11dd1cc724a343417327b4dcd83e8f8cece7978eec3c78588399006bcc789fff0e13a32cfe9e19387cfcf9ccf4f9dcfcf97fc03f56959dee167f599f15f9f1988b33e3390db7ce69edfe41f542888cf532e5a96857cc7e7e950cb7290bb7c9e762144a7e7a8a48cb6754d4d999a110010008000c315000028100c868442b1701a668ae4f30114001282a8466c4e1f08c4308721859041860880000000000004c220015fad9d7d7e628f96abfeb64388945d0d924a5ad73d7b35aa3f63cc96f36772b0c6694f260cf0e074ee9182d7bf461758fc740cb77305f81fa89e09b2d14a7cb1132d21dd0a1f0b748b1dcb0fe4dc8d019ca134bd08c1d96890a76ebcb4167a4c03c8515344011d3a368c614fa9696d3ca6305a3e7106cf96b49ad05a4ba53cbd70a65e06e9516138ad0eebafa44dd4a191462c07d3255008e1ffe030ec416fb002bcda2e13d8cff3f3e640ea69f04cc1e87d30404520b3c7da8fc89f8a932a51e07438fa2103534258e7c269ef2742c4db8813fad76f0d9674475f479c4d55e2a425c83012c2774577da6fb0989c83deb724ce07cbb66abab088e4da98dd77baad62859298fa50abc3cbef58e1f53749b315ea92a970fcda90a665e8c10177f0f825d40ce5a6ec68fc6dde36813f5f6cfc6823505002c42a0dc0bb717bc6c9f62435b2552e15fc54c1e9260719872e03aad7c35a30b1d1441e7943dc6a716dde540e8351665e19b6f42909d8d57bda28b9e22c996123a4c2217c28db56785f53bfec635501849bcc5d99555ac160b4edd5c441c4f60dfb66a87b1c7ab2ca468d37238bec727f574e745cee77d0f2998ed07dfef0e507934dad560bcbbd39edc23e8b38cf88e32a075acf4fc56fa783f60ca1a596039bb16771bf85e5b6e57fde7a739d257a934f432b82cdf66c540c84cd54938a032d0c5ba260a9566673b617e758dec831e61acdd21e83067a947f5eebdaaef9f4c91b30ff480d426436aa45a6f53bba9eb3b4fef8f61cd80475cf99d04ec5ffffe95ec876b12d3ac3ba7b49226f3a559d2e4f96778fc0485f606e7da1d1bb300e24493f9f2ac66b922e4c1adbf0bf215c7dd7fb30ee44ca4765b4aa29d94fa4737a7b3ada71f89e4f9632e56dd417b541064668ca51fd8ee29f06a58bbea302d22dd8fca3148c941a502db01a6a7af4003001abfc7f50ceb81a615f73a74b3cf3899e5f020c9d78effde20d990a8b09bf9bf5599534c94fc3f301bed5617f852a90c84f668b34a9ed987e90b316ccb72018ec8a207ffb134c13ce762dc670dbd038a4965f6fb2a8661e3015d7d34ea4a98534174c79b97f0dc263063a67b4b2024594927735dac684f049e737ceea1b40e519699034642015cf4b5b9e44616f5bcde9336f09261d21b7658d0dfa04e4f3771ce2d49641f780996381de87463ae89667e0807f5e1de77450945d3ac6efb15da9098c2fa02f9a9ee88817c91ef208a9060c42c18eb449059c2b4f02fe6e40f37e62dd5428d53e2155e03e9b6b624b462c3b4469963d01c52660de5e3b32284267a5c96ad49013ea73c026a927a95fc94c4ab2a77f36b6631fb7de0e6c5e3151350d087f61842cc57d4cf4b3ae944dd27e7be2231c4ea5e6e2fc90eeab81ce3175173bfe2a4bff2fecf105c1ae95ee2a7bb9fb1b9134c2462699eb1b39e49f862f9ece8101da6ebe9e7b5bb3a3ae6e76340743ae71502635ea52fe12a3e9bd76ac19474db01b5282771690659e9898c53662adc67163b7e0834cb27a5ffdbad7d61bb40b0e40167a6613fbdb0feb6a6130978f0e053cd2aa54a6ffcb8c813afa938093f04158a14f9f9497961ccce7ee27feeaf7d15a63cb2e4a11324be67c68483f8a0959f245431ac1747a4d93da9cb70e3052607bd7a6f38f9d7044ffae948ee9cf1e830575181dd0cb2b1e0bb71b26907808d260a87ff3ccb7b2fe818517b8c60bd84757eff4cbe7191e24a187e60c277b3b2b5c1c86c7906c39fd54dafa52c6feba54ce810c735eb020a00ffa7b8e29b24db39c34ea1337eb2c64e23ff467b4b77afbabda53832ce0773b279a6766c2be0f98b0e35a5f922c7b808985628e9e719c8d8c42c2b393f8d3305b39c1540d90ac6a5e2a1eeddb5bc0dcad35edcf793ce3b464ef94e9f238cf6ce730894877e1743387295c63f44ec4883c0ba656341eba2d6c50a6d5bb9a7e0485a1ac4cdbde6effe9b57c32694b3fc4461b4322f901b23dde851f60c5b3a3d2baa587b09d261ead035bf0085bb4a8294503d4b8105abf0309e491033710ef31f82200b908636300ef57dac55b14b1621b35e1a87dc518c8496bc1d7f99f72db1c399a1d94797e22862de44331902b1b3bdcd4e114d9a0ffb99921a00e5812cffc6183a8edb53848c79f087ad57e63d222a07d224a758f7e24c429a0516575dfe5487afd3e955a258f958ca4600103d95d5019a7c7210aa46c1818723249f95816ecf99de401f3c5adc40fb2ec653a0ccffd576fdb73db0c8d0573f2e8ecdcfe7d473248458411e59d5d6233f04ed0664fb560650a00c7758ba6a05e079323df5e0d10069e4e6b05349876a6efadcb4f151d3563b0b8c695cafe412f3e24881e7c6a64b06559b74e6b7636aeeb706571388261ce472c812f55a4e99284690ada87931afb7d7f82ca5690d5ad0761aa6830515e7ce439dcd2e85c26abbff4829d095513925468c11ed82f7a95273b25d055546e524ab4db202ae3ee9d94d99dba9942520137b681f3a84ef850c8dfe3f0aea400857463e00ec681927dbe74424725b9c872100041553333f3adb57733d2a3920f7b21472563b25c4797f6461963660c034982b938c2f529526a201d88f29f3fe4c9d1047591362ff16a7191d3912f1b41891371c1262c4fb9fdb46c26eca925f20c12d9533b337e010ed2807a17982d6ac4ec934b3b8c86dd9975716eb23aea6a17c588fbb605fa5d58649e1dda58021edbd10a0252709b672a0ddfeb16c1713895ecd30be135137516d73949814dc1fa9ad60a433ceaf6fc98c7e63138cfd9b35c88e3591e1ee41c0134f6311779e35c71e7789370c0090bed4adf4a95e467fc8c9d66a2b0ba04b3afcb6c9963ac79753084c852806477910baafa592c9c0e2a532641ce61caf5f0782eca6026db762e142f6d6058d4f5ee93fd1867e99d3be1c5f5fe98522ca51f2556225406535340053eb3205ca2c6dd48cf26b6aee6ef7ad498c84f497e1a75f2c6123c8e33d2a974ffc60b32a63b2dc1b3e30c17b1a373e0981f4f039991fcadb0151f2e22e53cca95c312efc3d55ebe6055bab4ba3dc4819c2bb511ac04894614b86a1511e2718b9cccf9511928a889ee5ad23313a7971d39c5a74c6ffefa88d6d4a8f971de7f1a6052e968a02fab82a7ebaf24d0ffa0fdda65508b52799cd6e40301bfc9032066c897d04c3201c514f33bf1fa0804b9a426dddd5e2507d011dc6433210a42f780f4dd9c52940a5a21e036c596291d2f349927e961bea5087bd6b95d2358957844cc5224c006d423ac825d83817d1363bb81bed030c2968291bcdd4b2d6d87a76c7925e2244ddbcbb2c2310c2485f73d6a02fa52a528963eff0360f79f1146f6fd1652ec9bf4b2afd8388d14a8a26b8cce6cebd3c80b438f51f085359ee5687a722215e4266a82bbc3a7d87b13cb4106d23be46b1df119f8d76e39cc6de9ddae9dc22edd9b0b55b61042340ac520ed42b2454cdf5416ebf492f9df29773d636e257278ea9d53232bb6e1081544129753c9da8348161c7620fcbafcdbdbc19c6350634e51fba0debeddeb01de131b7062362fdb2d12b1cb0925a527e14ed8d1c8115e3f3a00e03092d52ca7c16cfcf83b88e9eac5e9136a39385b1545ce60912ea415bcc8406ac1e0a9524515dd172803e3301d5190f72811c4940af735000ddaa21713a412d38e74bcc1ebf96e0b593feacb8abbbd729a283ad00a8c4def79b4e0cd3fab0a201d85a9a56a1662553fbca1c1a51818a06abfc938a440993a302966ccd06014b6f8f402d8aa59bfb6a179e2bfd04d0bb69c545ff34a3f6b9281d4afdb11c7c2b22df625283f0ee22f95a99418b9cc1c39b7658755866c07b4c7bc0d100c05e91d14fa097e08e3e635aa93393928c0818732fbf898944d9260b3e9ff5e5a403870255fa9b1e4bf94ab1aec68e3b9f8bf1cdf117a03592840556c8a06a684a61c3ca774018660f8d467c8c0d0564b00ad44cbbe736da0c6fa7b8c0c2e95025a498b286cd526734ad4184a5f92552c23916cc5b86080517ef83b122b7677d071d1e3f8a30e8febf3d65cdcb3aef56a23c85cb21027cdfbef13333380fe868232bce58a3c75e36eadbcceac41eeb0bf2de8d19ea8c69c50f3b956443f78dfdfd322b13407614abefc5d134f599c9c3643f829a189d00c9a8e5b3d380e60fa33e30670b00108ed5480fc2e14ce2ce53ea4f5f764119deb9e010a97f6bf7ca188155e44466d66e0cbf3fd72eda8bb999957347db89a93e470f0a77b53a56dc859b301dc1ae7f5fa6d8d112f7c65306853d1abd82d7d05280dfc35291ddffbcff882421f2a2cba79612ca2fb3b6b09138b57625fd9f41a6d589384412678dcaf1f5680c84a28ef910a88964a7f269c6845a7665f462102f8e2728fd471e265136f15ff41f04539952bc946559f179191b4d0c80109e2907c637b6ef70a3a0505687342c0c969df36e7157b8ada0faa15b3aa5ea588bab07f8d15fbaebb7bd049aab7e4b01ae0e3d939a2f340f62a330b40bebd98ef86ccaf42e877dea870fee19714dbb7e146609de7b7d2f3348ce4a6aead093d81d6cbee11a5f38d06b1d7db5ef20e418a1d22413efb811ac1a81eeb7dbc21d0e282eb59aa8f4b4fbc65e3a8a4c5d97bb2b4196d5f24ee61f9862d652d1c80adb0162a17bbae16051cbb6d27a5df3bcfdc4f9142d941f0f2a0807b03c8fc2c13778d5401f8698020f91b7c5d2e410161ed4a9d81ec3670db791ed73a4e71404e1295a9756fa68178fdfb50865ae2da7a84fdf72aa3adca5027e47ca806aba636b86205fd87702d2124b967fd142b21934c5e87092b86f18aba5e57018525625eccc0bb1cf88cbcc155313fc44f6b5f6036b1bd8490ac7818e32332bfa635aea7ac632cae40022561060cbfa68a909d70e192117392e722e7a8e2d79afdfbf32e3e12b4d2f2cb4601a0959401dd4437d10d1af6804fec144feac26758aa207ab637f2b5acc463430067fe2a2b4e94972868cda7118544d213adcf43bca6bb3bac8db59337d4e40ed0a3683a523a95a8568dd7772428e6ccb9d2260c13d319545e6406ec13bd02ec1df89a75a5db0436355dcdd37b7b753e8cceb46e3ddbd366587a79dd9a271121785f16ef9d79b2c4558a1dfa011b6c90728b115cf6e32af9b00b99dc86c0f164702e4143f3ed77ecc963b0ce684ffb3a62a6c70d892b0320d9c6433d59f04c00d1aa4b0dccaa1d7436e8e0902ca19d3618f83c57da95c0d014a4259f37272d5e429ec8a960ec30ab87f1c412948940ccf80ca2c3187dc5a29b9e9d54e6ed3a910f5df19d95175752fdfc3f0658c02a322446af4d393f96606d2b66e01770418987bc004b061e64464c2b84b72aff977216bc050640201fe59b8d16e161f9dedb09f925dc527e0e15a01e958c609d131769725395a5616f008557c3ff945ceeb1c91abc6c411a816b45a64274fd574949b1f5f1972c58d1bd946ec74b99e4ba0fc0afa466cdf2311792704ac3d125a7072de04fb220e87aafad7e1e4f8b4e7d9de7a9026bbdec553ebfac7564a15f7546d642e9ad32af6113e277650c4e4494c5ddf26555d3cf7d73f17fe21b85ca4a051cf0a95a74f0da3b74ef6204d8db139c4ed0983360b09da9e818392960a132f02cbd0a2575e0bf4223956f71b800c2f45fd0c5e7bf8027fbc4d807161d63081ad281c8acb0decabddb3bd053eacb1be0ab3118e9efdd46887fbdc0e3726ed564f6f955a649985f4f02cc83ab9381d2d27ad57029d441d0a3a43d1393436b56464377bb2540570e70fbea4e6b7d49c54e4e52ee23cf303c75003de47dd37e830ca09d8e63def55cf275a748e25331a344a31ea3d31941e3036ca03e870b158d216e94f1aa56a7593b782f37677592641a212f1cf5a60b38d865385be0f7873a691c9cb0c5db7776adf796f8fea76ad103ea4a225fe55cb7db22f276e81dcbbb70523c0f8f859b8e5106f7e618c58326be742af6c1a517cffdc76481942c86ec44d38f349eec383913fb5af40ad6aea1a17137ebfa4d23c440f9a858d69bc13b4e410f41ccdae3d5630826b88d2dcc9f0d4ed3d001e1ccaa449cad8e02900a18b4b70139d85996aeb0aa23aed9a1b2e06f2dd2d628ac985b44bce9bd2200395f41f0ca3390780fca630967404652d90c4b27420f5e197b4a55f03132ff5cdaf9c93e3e91f2c7488094a9ffc1700e3872dc9f423fb7300c33857e56b91e537dc36f0424c95bf4751f5e7a093ee25c708742d759ff98ee293d5bee3885080c304113223138cf7e6105b997ce56b0214b8f48ee317714fcb460620c82536f12de05979d235e6f5fc79045bb9d2244c1ba2e7edc0bca0862b62fc56036ef5b10d24e0d5b61450f2d70866c9fc7be6df7be0b7328171663666d32acdf9fd1f8f4f1e494368115745bdc9943245398c3c2dc308712e98b7e4b68394d4dce8bfa9963e3d5ac83cc54125a5c9b14dceff75985f897bfa618bd30cd5437c84f88a4212a11abcaccae5943377d5407737cd6182792f7a508ceb95d228de68b49fd59e397a128dfe0032780f2f61aa6b71ded96a7d95ac4e97d84314e35a3530c1037bf2f047e1dfb0cf571db172705cf3bf685b4001751cc2bcb64d2d5a4822e90565d6ca23d52182da569c9a322925cdf209c029f7167c22ac0cb95725c5c295516a992cd5e91b2098b6c4f4161d18323e7320543008216c2270242e7b6c91a1f448b7f6d2ea39a8fafe90df4dd906899828838c2b6e6785c94730d9ae329f231930d780fb0f90cc085ee4fec4ec0c3fca7a062a3782a6692659324d0d8153c068608a9ab03cc9f46a1f3db0e8d849114be82715c2660474817d1464cdc1005bc3780dd94a155a54594b963f2f9e6896af8d2178f5b3f31005fe2d03ed60ea400a76057e2632a6fff4faf3437d6f01f1099740c35318b8918edb62a87c82a9ad80fb49ad633200d1416fbd5a4a64104290e25cb187387b2f066feae7d9a134d376db0c17e7613f0f6708700eb5cb1ddd4575ace8114d521dfbb95afc47c3269017bd77697d5ed4517ed8af7bb39cf0a067e20dd681f43738741168c66a9979e6ffceeaea4866cd484635cf8bb2cea699abee7dfb1f156a1fb6c0adf04432be4cf7265c20b843f6be4b348ec777086307bc906177205fed1883e425fd0947c47ec5cf8774b8e02873563664951e44d8350c91c2cdf2972ba0f78e5ed5aa33c05a5e0c4d15fcd539f3706b7d787cd3bfea2defefd46dbfbeee2a5f67de7ab38fb4733092b26e7883ae359921bcf74ad986a809ae831d55dafd493408d02d759d880254baa4de0b1c0ae41e8adad7535034985cd6c3bd17a61042db7d508aa467210db9968501a000f75db54e78e6d3d0ded0c6cc047ef8d67be751c822fee161d4d4a76a1461c0bdcbf3ab21a877ae655a09db5c69c6d3b27a0cf6c3fbd2532aa1a4b076b58210bca22a193315aaaed33b53488213b8ab03e226cd98b75605733d143fa160175b329e30e4d610fedc678351125b9d22d2c67335e29207eecc12307a1b081db135c008646e2b39e6f36292d68fe64bd40124d17d7b3be3257cf2884bc7f3415fd77581e8afbd4c1e7cc9feb74f7c8f6ad86eae2b3633baa70040d5c97bc4196cc1a554863fa2c67ab35e7eaafef878c2c7c2bc5f147f3ab719bcc73dcd565f25a6992302cda28971b4a265b0ab529096a19f83236705619bcd7df570571e96619bbcb0f030709e2bf85c16de7521c942a76e043806a127f679f84f7619ced2caad0c84f6662fd65d25195e4e1f89e66c7b967cbadc264e23fdfb6357ba0dd1440537b55adb8720ef6980574e5e5cb641437b49c1542461e37bf7e5936b2a4c47ee56754d326aa12d6144bbe3942a35fb4e6f44843b26794ea629b6f0cd1ee6be630acdb2cdde88f9fc5a8f6944b4d20733a24d4de5b04dae6b450e8a185923ec0e9d2ee08b04be4792acc9b6974583280ced5497e1003367048c0fab1cff0c76e79c54546f8827e7cf8baa86958c0962a576cc4805275d3994eeb9fe60a70adf60479cd0b33f6e05ad6204e1a42adf34edd857068d040db5b0aa2f5812edb675970608b0932eaff8cd0e04cb171ab41b7f79196d8ffc04676a04fdfaa0cbd5b86a0726721c2020a3e3b05ce245f23eab9b16280ed241e89a0238964be648836513b22844634135510075cc0b8b4bdaee007cdc3451be856283be1027b509232c165e6ce75d9be9092967d34157e0be5f980d2e05f60896449d47806531fb05b1705e4c3574c5163f87f13ae038294e36998e8e70f4875cca6f0501c6621336c552448f59f1ff4835dd316c9ac20d65358e1be3cb2e8928ab5ba2443132d8b25ba9c3c1d58b95691a55dad2f189fde6e7a467a16ba76faced917c2193368ab2b3e8e8201b0001438496577516d0352bdbfe0a3d23d875419b905c8daa898b6dc4aabef9a91129f6e849ea0f5897425776962945c527d28fa664572081eccb30c01b709ce6d092fbcf2209b58beda70c3cb9cc9fdf01d2fd382681a5a9173c01d1f067a76ad2e99777d1b60f2b2abd0e124dc051e1d8ebf93196c6c00a3fbeefbc6bae6c3933a6499187a4b500fd24b625a01b13579721b2452db940540eb08b8ab2ab5d8dd63b8ea5b5dcf1a4c482f7623546d904c7902bf9df3aba639a7c0bb113c3e554c1a8cffc9554eac562f0b8d1402246b113c8c42706ef9f9f78a96bf1793da63111aed63c130a229fd140c9545efa3e56d34e4fd2210ba08a9121fd4b4517a820bfe90610b222b0c347bd3347e776c93e04667cf51bf8b708e9d5a3210128485fdee04aef43d4e40d4264735df45410e8a77f0911f56b1b28d9e13523c963f2265ae538472196f0b1c2c9b5fd77d0bbdbff3447e8031bf02d5814340b1f1ae130390b382ce958984db9ec3f55d0e27d4bbceb23878d9d4ce677f2413e5f6b0afe212921af6ccc47b2e0b70396fc36866b1adf715dfd896dddef7d65310d2f695360122228743e391c6e6ac55f1a88ba5dd389c536ae9a32effff0d6c6d16e40c20d7a32ec1c1377de59eb8b662671bae1cada01d9b9e832eff1ab33ba7e511cdd321b9264bd93e9cf317041cdf2c76b616d71399616f10079e83b681e21bf832d176c98ac1da5479a7757635af3789085821f5ce18b8879f53c0dccaad33203389d292278e3b8ca1803ed3a6e34f566967086473cc6d1515ace7b5fa863d34e96acac56f49dabee516cfe4bf2c792876029ab6dcd2c6341db4c7af82f8b890f0c9dbed301c1a9fb450d104f126a0358e0cea4d2ac2d59b94563709bfce20cbc0f9de176ac03271ae3376aef0c842a491a9f46b8a938425224c8366a0c28af3c2ee78a7446992eb5d47efee5540dead393df3513e3804020c3e9f704157fd9e078b62428acc2445cd667802903f37b290bff80b7ec31dd12a66e3a32556ce684489feaa39b0fabefd7ef1b8fe72e1882c652d6c28873ce2cd4e879da43e204f2fa75dafa5c2ed9488663a7e5b3e6ecf40227e726b8576927ecaf72f02665e3c21d3597cbd1e7dacb47b14ce162322af6b01f7e5baf6e6a6fe9160ea98a6299be9b2d6e675e942a3bdc863c1a95b4314e44698d621f690441493a607bae2230bf24c83e1c4966e075ac70db2308ae0b474c814ea3143478f94ca6abe359d3bfeb36eba69e57e5a251aaaffad2ec8d174308a7344ebc8a3eea6d32a76cc95e8317288c357c0220f7f01372847740a4e19899e12c6a65b5d7b7d1d9edad3f5e1888f7b016b0996e5bc87512bcae7ee016e8d9cc0710524c3d724c8275ba6e5d839bd3670736438606b089afca9c173e8b898a21f2ae084fc2c37a79b6b65660e90a513504d5ce7e6f13dcc40afc84506e3776f3e40566aa88e8fe7caf506777d1567c895c2eb22e532de1b9a6e41bf484fc62947e6988d9186738c4b75da32f45bb4a6c3ff385dcea8afce09dfe33def8c7375d5c3fc6ff4aa87fb51bd8453df9d33dec5bdeea3f15887700d37a4f150e952148c8068b8101b47ec09331f769243b820f5b0ef5cbcc91d4782befbe93b348d84f7812fb371cd4d663d4deb245d680e5293a47dc6bac8f3ef5a211edb7b62e9e342539afb083d778901614f348222330b06522768b3bc75bbd534371f635bfb182789911c289a1e3f72835c8b80a9fd1f3f846a7383eea717b4dfdafbe2272a9ec69dfe963009a81f6616c1e613d353ac049d81c39c740240e062641188fcdb6f249f7c968f0baeeb02940cd015fdb4437a0f1e941fd5a9c7c04d3faaf3f4e447d52f849e4146a0e97c9ce0040a084d096e84172b6b212723739ba46ec66955c88940153b6d2ea247ca4509ca0cb8b34aea142783e7fb3f2352ab2901427f7747f354d818ce67dff55f679dd2739e65feebdfe2b8be738c67feed9ece7ba7bf47dc6141e64242dcf0ea8abbc168a9ed979671a695f4ae043a4d6b63535103344432b76312b404a1fa23a39079c857d7b6b195c6c652a85bd11fc25236543eb21c60147363a97f7664e882a4e42e34be010fb203d069a907cf1cfeae0fa90cc9041f8aed0425f66ded57177daefdc4704cfeeccdfe9257402ac6693358b788997c2c8c4a2ae5fb72630466c00262a7756654b8b641d7fba2441f76efea284c5d728b4338fd9642d418fdb6a0a1c5c787be9d9c136c531be26140378b5ad6d02e025694c2938936b7b7f124b0428c838c974f91b2f712aae77c4c6f8933091a40d9f182557abb7a7c9a7c389ebe24902c33e9865dbc382c725b24d63247b4365163222e6596459a2afaf34c744694ebe32c1f483de87f7a3e0ccd01ec45ce15bf5790ee5660f4fe053326eb9e0fbc4f9a65b00f4414d1404515ab8af1c4e733e91735ec17cb1c7126af232e0ea136823934a3b5cb69dbb5eb107ae37ae9552c31cffea37337581e64507c5be4450edce0ad12abbb79854ce60056a19c00e80233e66a9482ea96a208973e6a33d4ebb9595b1847374cffe084a4a4a3b8dc6c4bc283fca7caca4f501c799ef9edc5a3a53ec5325e7cc76080f27844d1caba6df3216679276b4b430ba35c68b3e02b12a7b79ee6749ac298dea70fb8ab7bd99c253ba790b89841a215fdd38438ec8d9ec9e73b9c3286956f040cfff18f7f2accfc51efad56ccc344a94e8c9019448107ff6328f85c3c6f817698f4a184e53b10c2700290c0b04a236afc6c30779fc6e9899d33711e492efdce3f7a586ecc24f38bebb38ec8ab5f0b66b7635fad755f0d5c85bc0b3784865d7082ca777049ce5264c99e0fa52df1fcb1295fd43745735ab10bc7f7c8715d80effa3fd1ce6ce3a1b645382a6b0e84338b0bc512175d1567277abc7302ddf03454dcaf44f8097e9a82159f815672553764a4c500f297c76e01da26714e351a81b9316343f8f95483354b2a54f5c21308edbc0997044f5361d7532ab9f4ad76e0a4fe5df1c7129535f28214868ac85a28307d1857b201a2d67bcf66222d7e7c06baa8b18554615349b1e266f281c143ff6f920d928626380ab4946be05aad6f063dcd3de117a262d5aaa715db6fac46d5aba95c1897012a25c491b6a4f46bf3e50b5d23e97cfb4caa8f2fbee405eaab2c3f1396a2b5f269abe8d7ffc1b5a9f37a01a177c24ac615d7f9bdfa3687175d47eb45e7e07765fe7080bce2f845afec17ff1bd77ce8af34c125d7f5775afd6a21ecfcf148a53c55a374568396e9acca6f84f4faffa951fd615f54f95b9a57170dde60cc106f1480dc00909bfc974f5f41260df020423ab06a4bfc0776b8b5b023b6ce3da8b2f183b847ad1d4651e67b2ed58453499426c420442564b88b3f1b6cfa9bee218c9821b8e77715c97bdc24e09d4c60b9bb45e01a7a886149386aa0092fda4860601c16bb1033ffc8fc28d204135ce0448da6e75930d7af9dead881d828da7ce58623e897207c1cecbcef69c3ed5acd42f960837b3377e8a550dd3c2c68caf07265c8b9d24e729a5f131ba3dfed7dfef5ad09243a32b241ad7efde6c0f2d4f3a2e7e8eb5fe1643bfacfca440b3a6963269c1d3faf2fb4de4bb8b40a2c7d8d084abd5e4fe1cfd18b1394e0c06ede6b0af23931c6344ab0a9afebfd25a02cbad4c2939bb103ede5f646d43070b0e6038545a88fd099823b39136ed60fd0fd8d95fe1d91a305e9b168d7b6ced29c99f413c7fa789b88be87939fa00cb5195e7357a120c45cc519ef8729be74c4ce4785622fe6c36466625653b74922930715f2832dd5038f3eb3042232374c06ca76b5d89abdaf3e2126a6f8bbe35e1fc86dad7b370a0dfca46b235cba69892714bee46c3244d780532ab1f1cb52fee406a764e60c21b3bdd3d09770668cd4442f400ddc2f3f1e67f1c33dc924c1cea822619b823f1c1155f2e986547ba085fea2858098b11a82fcb5aaf9065f5a5ca7d8a838a9a1f7d16da0c379fe5b12cd7e08dd06832e578436e33e329e2cab27e50709f5ea4a670ae065cbbe2b1afccd0a5c321bf023d37da8f448a114aa7f6b16d2b24cbb6b96372e5e2b5ce4b7354c7484f2b6a7ebd8d216871e1bd869e7811d8329a558dae9f1988b8ace9409c296a2ff46d70a380595c02aa6b3938181d16aa760eeaabc8467d6f0bdca01b23f1ff5f4b69cb423f8e129500b5abaeae94c6cb2d3d0c7e1c47b284e40d9df902633848097ff4c858e01d0d1cb15e6cfa4626a69ee9e8bcd8417cd50222b9855e9b1b3fe74e16d1d4849bf6f8f0829b40a9e128f800daeb714151c797c93fa950829ba5dec17f1f31c88026e98461eb6133313a49092f2a0ff9b877ea42ae004f5b94daf65f3aa0ccd1803b86eb2c96b25efac86134f823c492a98b74ca4610d1d73524754ade68f61e0119ae4cfbac9d71a0ed6824d15bb35ac927068636865583a370eb79ce5608fcdaab5b91214b0d99805240fbe174bb82411765e89b0f465fe3d53424bd8956eaedc1ac6de7ebf1eaf10afd8c4a033aeebd37c1b5d9dac8fdf315288a39d3a492e053f6ef0a1bf517b0fc4516a5d7aa6957566959ed79a310d59c438703db2f17643aa5675402b3245f9c75642369fb2f4e3dedfe53cf0f23bef430d5d68a3a395d6abd771d1935933befb3de9f56bef04ce6e6c1d955030a08d3e9987fe742e1b79690684033bd78a4e727f0d105e7d9e9a1ccef0c14453a0b7145e834d04da6c2bd5eb2f57ae0037425587e405549cf3a81def0b6b044333b763c64faec6bda0cf59260754d02b5ae0e7f6ba36906a0b0235d7501c1701008a34374bfa514dcdff51095e113dc9249ce6009908c61b339c890bfcfbf748411b757dc604651e4dccb4755f05c20a67c88dc505979b7426a5b9c21572e370705aeb040b399e7fd0f49b2962c878b40ac177da337967ad421ef5fc337aec92e0e55b79362221cc4c44d0ffca2b73e84deb28b5e3351ce184599838236e40663d4135fc782b71283d78279cd541626765000a6529e883fd9fb651ce07caaf895cd4461b0338b1421fbd3e95143e3cd652db8d9cacc251fbb2b88076bd9a9e80686f2cd110249e348310b0a89e73b20303e50afabcc384a875780f014796625156886d27eb48fa8a7ceb97ca63c7b1f8f783633e5dfe679271eece1e1513a1e29a9ed75c05dc60ed30665aec1700f6c196b70e7efdb5b444aef9496c69a907b6205d7732884e2cedef6f620a0a6732c2503f333eb2fbffa6d031bd71530991c64dfee341ec938e130aa663bb61082e5eeb12ff89773411beb8f99255cb1bef627b37b25184b9b4d3181a68474a2f5d8f433198c1acecf6fd902fd3cf4074924aa2904b688ce1b0d71189631b81b93068672387e96aefe3c641cc85bd16fed455c3f3520b253a6d8eb98b7c9130e7221acd2510903fedbca21e26f0b284a49ce32085c7c58ec6756ba25f858e785c6ba25f22497c77a47b896cd4ecb71126c564a394211ac7b567d05ed0842bb8b71f57bb27ab86040e6f5b96cac8a6d103e6572f7908275189e92afe86a582c655d869a011fd4da4d88f5bbce2239bf7c0a1d6e0ba024aa39a5840c5a497c0849e253228d61c85bd9302024b9b6e01ca903ce9b74f85cc63ef73261934f6598b5cc36ae2cadac459b21562de4b7970184c8b17c5416312cd02ddda6955e1611d02beb9b34d58c9a2e752ea8fd17ba4b8f94d4d78ce7df13a468c0f30791765321410138d3dff911648d0ef877fd61f529e9eb4939d3453f3022f0b69faf8e8d8c95cf5dafc38775cb1bf05ab1ffe9c2ce983cf3953840e4e9359fd1b9ab22de58db5ab85f033f38e96c197f312e4047e60d88270d0a95b6e81ca6b7a4a0f356bbba5a9be355f70f8286ecdd82fa6349b3e34560bf4b3e963778b12818b219a10fd5b887f88235bc3b1026c74bf5e54728db490f464b3600ddceb97db6f686fa3b638ab17201b8470e380ea21cf255ea0e0162c695cb10907d267ab4d68fe0fb6eb1dc15832287d8c3f7f5d96228c6e9d98581995e3fa9b11b5c2322dbb05ddc357aa85ca7f9481e19372a62897c656cbca80ba7025cb844bd54579985e7e3230faaf3405eb95116e2fafcd0c439aec7fce0b13deb63e1c0c04514f8a989394c360e64dcb17074e4f74f3907608ad24c9c8f6c9a194e827c910c19acdbc6ecf90aded49832fc5030eb07321b7db0697a9be36a1aefa901d3d2514268e290bf993f6289370a4f0da8a514eb9af931fa36604bf66a7586657a3bc6b931e39796718e368385a0e53e76e3ebdf925b89c1b6d8aa787dda2716793fc514feb538acc9ab244cec5cde8079ff3ba61c02eee826416a6d5a74464d40504b64647624b97f9bbe94323a029b33d6e007c139be5c693977a14385c64b079ed24c5ee81dd4b02e3c059def6c4bb51302738f5898ba8a24ed2b3a988e60f751b6008a915729bc651ca12c4e73ad52206a492997ee7f74420892c54fed485f31c06ebc5832ae625ee5f867392aa972de927eab996dae51043542c61b47193dbfc90d646c278298fae0ccf5dd0e7c2a1452f258e0beb786e42cec322e24b820730fd0b3b8634772547851a36d67775344a602aaeeef7f0b20e9d452b3107369ab7d1022a949e02b6d667ec33091eeaec0adb2542f424d88b55ac8fe1d865da570fef928dc32bde63fe4075c50a05800284f66bd9609a1ed802659811415b6e1e4e8878875846ae1766f1d5fdba5b2f5878f6c0268fdd28046ae98cc61e64d1b84361e95f22953e5fceec6aab2aa981bc05bc1f0c0b0c36403eadc86306ea0ddc8a5b5f1147298c23b1a2f15a09a07321d1de671d6f63a1c8ea785cfe2cd191086d0bc69ee247ba57b9e2c6d3c82ec19f9ed08d66da34f2c031817957379f810f6edb6a2a6dde5ef830740143bb77156fd3d224c71585594d8435c41c734c1b4f160c124e4708997e9577ba61cc837cd5230944d8c3d2159deabb75ec28cf51f771546e0e38d14d231e3b3cb8321284f20b555fbd15d089f4f345806cd7c0674106c9e85563ce0b8ac71a6acb326ca65744f9cec568ea31dcba799170736888c0b292c034c80422f0214ab3339cf7a51700deb900e92a7818c5f78a4e492243241e3aa4658dbf855bb8cc057be2b8a9d3aeb6a7be576912d828d755237ad7ca8bf2fa35aaa249288d33476ee73661d3136c0f19b52cd7ab41b9b69d22d4ddf196cd8136660d856c47b2a6560e815a8b3af9b98fb25f5a4db59a90e76100af256201950dd368c2833bbd62ba90c2a0b754462d0f74b66ec296f360cd3c9d1303db0d7fbce93539c1b2ef325036537ac83c3b48b9cc991f433db1c0d37422cdb4e0c31a70750af6085083e59b1dc6ed696bdf89ec939d76cc8311cf4c4b345954f1a0d36118178490bea1f2d3a625c96f9c6c49138e6d0309b7cb6fa784f0d3943d48441ccb2c1107eee1891e30ffa3e75745ec5c2492dfe8e87870a9773f9b1a5180440ec8fce8580fce0684c1a732767846d8384a81ffc510a349ba8235012fe3df18215d31c1e0f5f9bd7152ac7ee6600dcbce33898cc84845e94f7fbe4c101dfbc800dc7bac4bf4b7962c1a0724319048ff5b56b7655ce8531a1ee5f9b18412dc2336c3d87710c8fe4b465ff37ae2d27c567e00d7ab3874f56c694071f31624dfcce632be308c9f11b6190c95ab1769a4dc1d51dc784594096d4ed59248041b24828f4b088238cdc40703d01c6e79fa7a8021ac7147b0af56dc26216473064d990951b047fdc7555ad56ad07f1ae85a7f0f7d1dec2bd38e2be6679494e11b081de2bf5d4190ae1317655ca8f2913a6ca6d4bb0854dd5217886b1d4b0ad3c24080260d419c0877d88382d5afeb2faac8bcb8a90562b42bc22d94806d4364cc973f3e120be405da20fcb10abb8ad4825a7b749c8dc9cb44b0ca6d8fe0eaa23755b4a6a294f6ab28531080a9c9a25551c0c702442f9dd5cf3b7014cf796887308770bef06072701226e56e1cd28ce132c3c14299cc50b1e096414b1950f55aaaa72a42b1604274aa8b21dd742b6e584953fcc2493f9429212c8c1b82f9d399e72058ac1d1d7e40e4f164ae0762570f143bf0653e979c03b6ede73dafb8fd31d2a60aa162d66ad0a57511124a028225661ca0bd948f41dca14df47e5a1aef90ac71910663c406aea806b081ce3c00d15d0371c5bb25e69da0b43d360de89673961cfe92b93185fb8a963fd97ec63b10b7a2b2a969e64bc556d88901802dd271bee3f0f5f5d53c596bb1a4347af43a0698e7d79f61616398ca136435bf545eaa2b85a4b2d86165f485a9173b6c2476f44b8e4ec9f92d37dbd26673b1c87c2058711c1886c6132ed39be250465e98296074975edc8e0091067bd5a203bcb470d8598f2996f6256063a93389a9bd6ae0f0a8c8539c6930191d9d2822209f5a9f50bd3d7033ad200dfbabfe3999f2c46c760ec5e54a51c0ca983063505e9d072244753124e502b9931dd55fe987df7c8da732671af23f4b9c1ee17f30875cfa9617d5a56faeadec30f0e85d965b51b132bf83c8420dd5635139c9b49a0b7d540e2263bc2fc9435f57d4946d9ddf2179751dedfdd4656dad7351363132809989702eec2c5ddd6aca6b6f3f6d70099228ea52b805d70ff97a06bd2ff8f0c96e045c686dd098f3eb787f87718fbd8870616a138ed38ec255a95b61c3c2ade38ed131dc62741ca5e120eabeaf9c7648fbbd3359eea9f1f0b3cf2da4fb817800f020faea772ed4cb1250e9d7f54b7b14e83dc919caf086ea0b00a5a239992881762f41a87ab0f73b88530efd1ccaab93698203eeb52313f20440242a6292608ef826aeb60d49e2e6b11fc6122facfb5531714884bfa513d7b2bdff76b438c20c51ec7e6634554d9bb30e57b7621105f482a21105f60e008fce0e0a5c6d92dca4fc6a59c05db0ed71789e37827436c2bbd0c937cf3a01bd8e589a6e3ce354e1baadf7dffd520514f52e279e9d8f7c36cfd5b79e7d96faefec167489aebeaf6d16d397335d7d72b03f6423ec3f7e280afb49aa64f486fd768f0ffb47aa0ffb8f12bd1ff69393057d2ec3f4fd839c0716793c1afdec572957f5d91f041803b8d8a0fa1f6e7fcb454a235ffbed511f816a22806c647afe12fc48a6e9e96a9629c35fff00acd5eba19e8c57321debe63399a6f85b359d6e56a09333a90ca05095357d42accc36cdc1eea912786b415dfa7604e9e9b8eb1733db4e0c4a8fee20141b8c52e4083b59754b641c421f271c75268c5c96f038f9ca9976e09437f893a53b0686987fe735d366316fc0b59a333acbb4d28c69ac048197694a66a053d81c27d17cbceb5558fcb21a120245a66602a8f98fdbf73dc2e41e19e1c8dff76d1d45cecf55864435cf67612767a406fe478f4e90f3ff0e80ae5f87ce3ffbc8ec7a2daf457eeeaa15f4e2007f4a331470d5a94a461301d15f0e73c981cebc92ce3ff3179c7f605255d1ac446d1989fdf4ccbab15357168a2410997dad54aed6b127dd4c45b3d7ea28a1b48bc0c2784de99fd3c6a5b4459779ac6e3ba76a2f9455818914db5e3358873204a44b2c1f72044b9555df46c2672cfce9a2531c31cb8004b476e89507e29b7c139ec59f944971e0f6ff4af27c38b5f97dfc52ef52e0ff9a29740a55ab1b9b3c49101e7f456a8ab564f838103ad0fd0f7cf293a396ff3058ff9247d25cda7da677e1ad3a4b0e8ff23312a8a2b39fb65dc189fcc0230958c3d4c1bb42889ab5ce166a74eb0a08b3d0d47e4a9ac6a356accf0beae2e4f53a0282f363e049316d5d3f5f2cdc3f2089deff1bbbd590ea7b5be19002ed1833a79a984d2698bc6e5f2600c1be6f50bf6918afae81b0d73cc2641ac8c1ca0cb3b7793702bbd2668ab7a643751d8da868fe157d51e009371ebdd2f51c973fda31007e6b30de78fb4fde4cb2bc68a6ee30450bd1cde49b8fd5f6f3dd773e454b3711ebef52b412997b351f1251a910f946d95d6296504f8f5ead303369900688877733e07406673a961bdd5869f8c0e1495447648d17f2f7e18a6b712e1313799b1ac8cdfc4416fd898f6075514f8b5eb56d8421612775765fcc29d43f48b13425d8fb5be784f70fed537e14a526955a7dd591ee5576fe43412141de67875a371c43551e4732244ccf08b6d43373b781daeb892632f7bec6ed8d160f8e5edd9f68132a7477a703ab186e80ab226764f1aad84b003325a2e4551537edcbb96c8b0caa6262bb8d17c9764a550c25ba0a2507be55f12cb1e0144ed227807855acb07156e0f07980a44e06d888d88e5f706a241533e70f2af6e719caabbf7af0221bf8c897249ed1b1d2c8777070364ce5a2eec24c66c87221534148ea39a17e7ccb7ea050a9f4f07b8624adb1633a6d7379795e9fa0c4220ed8930441946775d0bd85c4b77d02b3203c71a2e3a60acfc00a1ab6cc81fd001643bb8107b416766add0f0eed8b4f990d08a0a8e9706e72e15190160230ec03b73f78832856ba0c714feeda5640f99381ae9c753b453f34a77c4ae005c276b2bfa05c733ede55ff33d70fe86d1a7ee5a2a8362f22da893042614440d25cf472cc429baadb4335612f0d10fcea3d50df571dd9a124a72beb7c34b4304c0825c223d4ee8a7c2d63e6c4d31cc468134447f4d08f8afc2dba23978ed553c6b322d1778b51be5b30e3e7c5a23f89b9bf5fec61c49a1fd9aff49b5cb8779b00e6f77742a5b4eef6db181c72ce9a773ecc1bd73d1751c1ac8f1466b9971c09f969c398ceb080d081a74c2f525f8f0d9fe9e0815988a8af531ea7f32160b722e4a571b1ff89f771352cb711c667a6839c79d4e0c4bdba94c970b82ba187065c67a5f8ea9a83e6b9b7c555500a8cf5d169e23f7dc84ac5ed741dd713b3bb5f257849612fd88a1607400d5aec023ae1f0772016ed7fe1f005d010c6f394f5dc31869ed454466077a97016e02a4034e51c9ec5eb5af127c1103b68447bcb42d6764d03e149cc14503ebe9f12cb01586f28e1f9127545a8497fd4265a5eedc96c4a314be8060d9642b08bfe0cd37a2f5f51d873707f68bc25db064de268cac7b9974762fe3e403c19c1f1559e12e31a26c5aaaab0071aae6309e20579851a74fe47e57a83d4ab29e91e12799b3c87b84ab523315521a97b8c913f5f345728964bdb7175bf481f1b9b0e27ce44b935c2e8797aaa8e93f45e362280b3553738d2204081e5355e1021f0e622e9dab049a1a0b082ab95a1ad501c51c6c2f8b7efc24529939da1594ee292b5a10615039f517232a0c592989d5e0f5c3d5c4c1f03f143159054d0b10e72d4877c07a0c904128e63d3bdaefb9f94681a4c123f314eb4689de2e302de501b874c4b1a4ee0bfef6621eeed8b4036aa4190730b2cc7e8afc71c9e1107fff58cbfe96ad479ff7aaa123210fb4437929169e292fc91b807875ea376a5720b3ee932c75b3d4d722d691a327675def79f85e28fc0aaa1a38a5a80d85964549a8718993a1dfc8ea672dd308f53f754211049ea90533090dfa6a80ed0ff723d0c0ed090fb1ea25f3f3f2f72cca36065d372ff6371753417b238a88c019a35296d4f8cb1b3712a875f9a55526f4fee2aa7196ed426cfc07e6bfd4537ba4e054f1f308bcdea1d0988170693213cbbb459ed7f9c94f093a2392bf0b482840582f0fa1813977b798e84659f242f79c6facfbdbc13304474d36bf0d28cc6e040191350c24188839ed9b136c48626c0c5a92ccaa5adca100c8800d29a50dd1efd50ba8eb1d1bcb95ed2ed09afaf972dc730a10926193f18586c8cf9f3a99e66bba9d48b7aa72a4bc0ff53c2b9ef364b17195d7c6f31fff6421de02eea006f464d6eef4b4d4071678f2405ab58bca687e9bebbb2e7068d306fdfd9ce991afb7300495a2f41586a3cfa6308b89fc23131825f42a62c8bebef915f6e1b18e306f7aa9b9ec51bafc7370385840c81db73928bcba672444d531e4c9f1058d174573fa07b07ba7affe79eadb59bf814711397610884de26bb7fabddec348b221e03463029f1a8fcf2e8100e4e23e6ecb03907201fc03e0cfcc6bea4421e7d22f77ab48c2b924d089e5df47478b8d763ec559967daf1afc389afca42ca08f6f03495eee5a91e6c7186240a3943ff425f7664e9c46aaeb4bf78ac2eb2328818bc78064eba5e43d28aa31e3a29ffa34d08949f5e491dcf53344b389b0efea1580a4bc208eb6e61fb0e4e952203b050067c709136cf760e194a7f479ccab9beff50e4652ff83dfee70e7480dea933e8883221fe48898bbc21e0855a36d5eedd3cfb475c5f3310206528da92cf0fef3610364f1c810e2b83505055044684df7f8b88480f3b29765146d9ddc34f44adf8c131e36f912f4f74ccb10ec588841e65de68166f36edd7feacf6cbad11937e22062e61d187a55c8623fd448264fbbf22ac9491abb269026975069aa74d858c3a703d16fc36d1e06a8b45430b438988837879cb36dcf20c0e2a84aab7075a719be5df02b2f012fdd863ddc61eab47f2df62f9aed038fa2532695d3e537e1401d0f1af3cd790a5681a0b276e746e49b69dc42efd6f135818e6a0f92106ba117317b37d92720e7c33f73de012f7ba6f003fb8aed189d9cfbc277ace3b1274d593c872721e3242c4f8973faca244a50f0eff55c203ea4ef21ca19df797447d5adf4c1d2e2e6944d0f6d9f69cc4a4f560927e921028499b44ef11ec0df22132c324eb1ef4aa8abdcbb04962e92631c42487c279edba6377e1c2244a8c2e484c422c0a0ad0769884e072beb606df3eff435476cae3a866f646f42b3ef6a63a75f948e93a4247bda680a0b29e50c1a5903adb5074aac6d2faee0d4be7640d36792811ec92847999d069ff89291c9421dec79c37735abf1a52aad9e47a6b9200ccd4922e77c9db8d58939874e7642c35c59d7c2c13040f1a2b64ade45e46c2d5457af8ebbd09abdf497497a92528b656c420794ce9dbe60b4d4453d05f08a35bf6ea8569b1b9bd989a4a91f4d44525fe59362b98101af09483f9fd55cd17b4c707b68e3a1422195c8ae8f6d90d4272d56df069391bd43f49d2593b610377b3aa5ebc761e22e12a71441cc7ef7f038333e9ec91689380f56cb75216a531d4362e5a1289909c6097918dc9171e1e63bd2a4b78d9503f5dd2473e081e72986159af7bd90dd20884c5fd318c7e0da99c6ba4c56cb98f368b3790782ea0d283e8a98b0e22848c59818bd4403b044500b990faac7650968cb0d446c5fe06c2068ee658d9d720504672eb8952481fdd6400e5dfb410ba650cadc976340f0e2d1588f96ad438b5b50ef1d1ffec3e708cd48df5848ffa63b50f4b4b556362cca6f01490e6303379d7f44f7354edf066bf165bb0b4287ccf3d96d2cec123cf468a180676ba863295e3a266512c930cb18d5068a78aac199f867428e906113a967c7b8142eec8091928b8e044203af18e715e5422e205e9908ca0eb16091e1cf4e92e5d054667b932b935a220c916f3b05519e9bea93875a3fe82907c947584f59c4065d843e18bac6b2f8ab0711bf7afee79c4265df146abecaf5f0c7cbe267b42f605fcb5f707bc550cdc7bf317b6d31400a24cce77c0841a32d813f52b3bb977891630b22eaf8002e37af5f2bf28731df075314dfccafb927130b2e2af6011c6414fd77b644468eb063031aecbaeff14c39eb9dba441bc9f513210c0e2a5b878c786523d1f6c6da47bd3f54ac8e8df3e480af4fa1b2306e9b97fdfc45087f86b3c45d632fd7b580ca2a09bfc8044687e4913c628fad9c8ff7d20639046f6fd58fa9012760ad7467725326aeed3d3b5744c7d58d8e47c141fcb169562b82cde430655627347891da810587343d59f4b1520dbc3eb3db06810081c031edef500be12c1d6c8048f9e59c858e3a8e02bc5e42a150bd8c858e5e5ddb50880c0c9d3e184b1e5b7d1e4ffbe377bac70da6c8e45e4b8779941eb15b5ddbf993be3d1eee222f5ecdcae459e90b244d2c09e857f30bf96bf97ee6f7d02824c5107d61f2b089f491465c131f201a57035f4ff856b0ba71f9096f81b3230c4daaa3a31cb090f5628d1425891263511ded31cc9daabd933cb54f1adbdc8e5000fd3e99ffaa9cfc831dfadc0c0eb620402b78a8a8840f94814038db1ef9f701bf3a7e4807704c1403334432565802a0d8a30acc5bd76d576a55d41c74f2a72de2a9cde18c41fb04c11ad8aa8b143aef3a077bf141378c9dedefe526fcafd91fd36dcf2568292daaaae228db7e82d03d3e1e2b687190872e7b83c086300b0f3d83288b89233da16475f8352aa209b2ee906b941a4a4566f5d44e0881638087399aa94d1d1e6470a91db3f23ec4eb4c0b8fd765c0008ebd50a797c85399a91830f556cc369e02fea5f638e1e13c6ae6a7406eaa64cc5405debad9affa82f416268b368099569a27e575a6a4e50ebd8edae08050081b822b7f47bc5d790ff8674f80b05561301b1865dc7c2b2b3885ecfab5fa57ad81d833d26197607e81f48a362175862790f6299a563995c6b2c87b158760859bef5582ec6b1fc81fa26638f6497bd89c82219cac6a15f02ed1f395917fed8d09faee1aea32174da11b98a4f4d048d6bc3c0b196f6d1cba460cef87801fa5a06d0bdd175d4341f81113c1181accc8554a4653c1624356538404e929a3214c4503c3b98830461a436c3c07fe21df64059ea7403800f81a18146ffbd649c4f63dc7ec2d594655486b1c711acd33fe7ef4043eb7425096b0744b09aef02ab484cbe6a131556d76a60f3ff804dd892009b7801de13b81696fcfe6b51fbd7495e4cbe7ff90706577c3790016cc270ffddf83a3f90e21399ac811178c64f67e74ed480a0a7cee6e796c99478c0bb030473998a7a450fadd7e43bf69aa36caff969dd6bb6fbbde60e5ff367f5f10012fc529ef98aefeac7832dfa8a32565f134ffb9a0d39f4ccca8d5f11a1c757534f23117e5571536153fa67b4f1851166664f205f9d36d31a590abffafa1474273e7c50de52954cb03db7510438ba6afc80e0738233eb998a45434b55afd614aab22b0ec06e380a848004ba5e8fe7dbe01432be0943cc2e025f53600bbbe778ebef92de4fb9f26f7d528814b743daf5ee40cdbf04d4e473e5e67fa339c0cb0c9c12d908f52e1ff7389a1141935f5070c70b4f936115b79643c8b93ce2f49a1a18df73363305c1613341fc35ae9047834381a20023fddd29fd3fdd3f06384cca0bd3f2c261c355764201ba980ee0c6177f4b1471206b4f616aafde1d5a8924e3f4a9cec7a19feac933191823c4e93179c8e976b25502c1d807b86f8ef0ca3c7d049f0d15ccbf2e84e90f25bf7689096ec0e26ddb6250419515395f318e13668b195ce67fac1d82ff5999cde4326346a8b24dfca2c4b8f0d394744e3f37c019a5a950d3e6b4e297f6e8649602ca74657068c873b81be8afba93d09d6e78f6a9dea236482cf700a87d0ca48a34ed9df8acd6d778c82f3befbe4665031db8be6480030de066dce6d910849b8743ee66409ff4c16f706a5654e2c9a2030ed4ccda163a3591d2f26b1b584848333278e00834d81c30bc49311c7acdea3050a4add5abf2c19e195d3f2dfe8b05a747be84a1d16ecc4f48877cb513998e47c270300f1e8deafebc167cd5a4cd35426e044ab101a68a7066cd67b038cef62527e0b8d85a8f36cee6f70e4752f26404a2c023ca3cde533b61e31e41ee5c693785ef19e7636d452681312fcbc63bd8baacc6219c19bc017306400ab269e260359841ee2a2754b568db9c7743c1221ab475305c8d358623fccd8ed4c4e4e193458d55c084d0d6ee7a0b87841114c80de66c664443745c3b6735e894044398030a07b46eb0b3f5aab0f99bd70b7104c93a398d2d52c86660ded6667c8306b6fc2c53be76d803a92d4eab7bbdb4f1a802317f2a4adb9f9c77aebb72caf1a7f064ef68cceea2e8db4137ef7fd8e4bc19f713d105908744c28948795bc7a622b7c640c60e96917a5c5b4e0121daccb2450b5c4f67c4ec900863fcac7a91ceddd0e37931597e0a946985cefb643cb61c8189c30b2f0a1cc5656c90aa21366183d6d283ec65586e915c9b73155101304a1c50ed5a4818918c805514fe42deb4fa20e14d51dd669d774b438f3b2e10786608d82fc0d8335fb766030aa4646e7c90f9bf0e29cee15329575b4822eea41903198e7dfe5dd75af850059e39e51bc164e01445fe9a424041c3eb22638f7901b5c1ba45a8f15054185b5e46963f5499db8969079182bc1543aaa7a030099e28562a64857baddc287b597abc0e13833a94c1b20afd96d32c67d73d1b6de8648bf0f082e859a3cd27b6ede9c6215293adbb54a81fa2093ea832f9a11139a6ac27646a445a800834315a79d6b4b4e20f6fa9c47f691883691718b9b631144d92eea92bcbcbe7a8d1206ca550fce427a42f993d5f90bf49ead7d01c84641014916e0fb6ce726bc79fdfe39c2b3124f08a7979778badf7a7cdb236786b2f1667aba13e16b48155cfd5cd0a3a50ad1d1f0b28ac08552404c3e9dc711936f05c0e9317240af90bab421380bfe92c6f1c4ea09303116bd0431ab4faa6f79ff704a62166079d164fd2c2bb3c274dc909fee86459021f6509390e3326bd2c91282f9a5b47e895d2f2be1de202636c9e88e584bc3aab2e4676a73a07e5542236efa3551e8ca27b1ebdddd2c6cb5eac71fabf3eb17cb6daa891f4f2a0fa28573bebb5480ae3ae4e9c58bf02b58f91fa0b12a9a08360c0504a90650564e8882a1b1478e994400f6eb6692c1e7432bdce535531eb52906d77d2a7cf458eb223560a3e283e4bb0354142f2f51b682c1f57e5e4305240125447cc565857bc31cddb5d32d772f8a8cb425e2386089a8b28d9c42886d64779ad44c5cf7743d21d3c9c7b98ebc1d9835e686d0d68bd918dbf2a1c48036a0f2141f4fb1dbfbc3b101a03ed72da059ee14450f4c2077d3c387a5d0a40ef63f7f49b6e3bb278663551d5e739b02642ed0229048cad24c438b164c2e1a1a6a37bf7268d329483173b9c7a3b2ef088f0a205a883e709435d2d51e1a9c5c7ecffa6a1a0daee2bdd24f04be068839aad2f48549935a89259a5e09e2bfd37602eb83e4352011af29615484ba13b59f7f8cdc62f7d49d89cc5df034a7eded8223a77e8c022de4dcda6e3e2953502f4b3ffc1ebcf594ea069389885a70339cc80b6b3a707c247a1e47cf155cd7d761e0ea3f5b23bc37a754336614a9d4297de13203f013e3975284bf2c904546a1a2f0aa87210fa119a16d872e7d6c9c283921bef97ae67ed9a0367b7a1495c8440ad93968a6fb3c4a495c5269b3d4551db573c1f278ec5895e0335686b5280bd69f38e7a8dcc2667930d6d70b80b5b207a3f5b267f953fb77aa76b92bd303baee60e12097cb187e185f5b055192a41ae544c265f204e6702f43f819c48776c4fe954fc2939e3b524d3173ee944944679598e644f6b2f7ae072fab334b3495a40b11147c0fdc7fb151d9919b12675c8365fdd77f220cc9eb992bdcd3f88d33c6d59570c6f6e37e46a9d3fe17701074b7e147bd4fd5988f713eb42a1faef2ebcee52243dd6e428f6d90251fc4ceac2c690618090e9491a4d809d93f472e58ede9c8510e758ffb8ea282e74a2d0426bd9dc7144148c1be8affebcf665746c3a84e9874decc456de80802bab496fe37de0d44adb1fb2a2f16a26c355eef73d54444c4505412a7a6352a50439c2f7bc435b5ad0641814331a17affa24fdc309ff4dbd22795f29b5987d72f73993795412490c741b0331befbbad556709ef7d3f48d8c4579a15f294e745caf3d358b7b6325d324cb66636957f2deac5adf850bf8ad04d8d0cb387368d2f438161ae140bf6656b1236a3c62c32ed4cf3d6c6a276f07ed0d375c972ec2e5e1d0b207463326eadac2c1fa9b58fbb42ec7173691c2d9776ee8003af84e67a0457cce48169b13d3ae2343952c67fd9526f785bf9f843a2acf11566c67cde2e522940c331e064131632d7185bde6f7a7c46126354e458737784ec9e376df723b32e9c6e3735eedbfd4601dda927e0b7da0c20e1efdb882bcf9747201596c86a1df7fe43c219a8faf271ca026378495c208935f0103b967c4dd5d7b7d2c3dbf973d891546d3dc408c03fd2cac3233bc121ac51d241357c8f847796e9233a16f138478131b49c6d061e5a44d26fa7d0cc02619813d992ed9fc50a076fb49366342b5e90c49cd368b118b3534686ae7e766d130eba5d1de1fcf8c8199b528f22e14d2ee89462faa54f555e2c6e730572aa34d20b4d39b66b3b51ee2d8df377c7d7cd0f55c4eb8a64b099bcd77990685688f0a2a94ce2711955458f2ae733d989bd3d0e60691003f93f54d61d8133bd1ca8aede66df5680a1b11206c0d8cc20a0cb67e88855c0432d6b91e95c797f613058633d5cfd2a73d1b8358fee68ba8e807751d0149c7ef630548401eb9893a7079102bedec715c1665c84cc95290a10631af49b47c4e60b298f6270faf6f952707b08c523967c5f464048226d5fc782bf9b53821a67eb5f6df3b0bf465a51c6e3daea6ca471e3c967216189971c6ae7667a70ba2932097a05c9c70e36c33e58d0b240632d1e8cd16611d14a59eb7a63a5ced8dc2b56890275370f3915a00f3f2f26ef2637e80111687f5a78081b11ea55aada3efb73657a930ce0840779ad2ca92f501f2e3f70521d12a9180f6dfe73ae493df49f3f6af769475c0f2930311b5d26668b28a78848fb3c73544fb676d648beae71b92b30fc877f02a98b5cb6d88f6c12f8b77d8ea7266d6df345660b0c3a5d71866bc9bc1225a5c8ae439a173cc5733484603717a8e96a73068857b5c5118d86a66590898614c578893a1d716c92a1df18bb3ca84c88a292e6a84a01a9c7db37646eff3742d81760862e4a16dcc118a4bfda17eba42d0ac38ed9161dfb5c3910101b3d03b2330596f903398214be0df866025921b4a42646cba869d5ad2dcab2ef8ef0897d79b9105c65dabe249316148a917836ed1135bb6930ebe481c36ec431b6c94af182160071460f10191d3fed63d0df6a69b6044caead51ef71fbbc9de99366f8c392c9a28992e6d3ce51e1383a4c1985dafd2ecec146f18e4c65d45e095800f822a365ce9433552ea91c00f9718251cd8b862fe1a50f2408d95f48d2f5a8ac7c6947e68434a3bd830a50fd868ca0ef0a886a31f07bc61031fd5eb3b9abf8f72f57dbfa1be37b86091518cde9317a4d1db06ae6cda789b1c95157478067c10e3a8dc1438b12a534249ed352f12c3031597041ca32bb450af8a99f84fd692f62d78d3d39a9eda006ebb0994303aa448aa3d4c8c39c29c014fb81b9461b180274d0e8a3f0f13f461cbc943782779e365a4f23ef17a35668c3c6150786bee187f3961f36e3a7d8776427117d544a7bcb11ba292e6bf1b14004770949298fe32b7a673bad3853c4f1282587d88bc6c4c50e815db1306e5717c0990b4f5c9800d4f92711084a7afa361c26ea54e584495ac2654bb0c7a8398b7a7137f37d1aef72070bcd2fcb5dad0f8bc3fc93a3c16a4e6e31bd4db3c35798397e736954d14d587c0425d7336d38c9c796adad1bfe98c768839834a2d2bb9bf45db24b0787b99190a446a16467da8a6f41ec68cc41a67ac80da19077c68f94733d027407c149c9d7b56b2215fe923389d6641a91d90e216e972670f5629436b5e4335f105abc41d43691b8706be2136af0e4c89b95ae544a8647753bc88855d3ef0dab5b75963d2660d7b4a55498a8e75c0512a51ed6f2f9877a0e08ec980d0b8895cd6a5ed11f3644c2b2ed6d1f19358fca107fa1fca4d31e985e4c0ce2e9f1e15b48975bc2050cc1ccda76167c95d53b256e1e6ea70afaaf34d29494d69ab89d92defd253290fd20f255a4a6fb6d8dde9ea0d0f410418e285018bc12441f03e4b6b47ed9de4eff7f40ce270b6414dc0f9d22f44d61bf6fe55cda4c9993d0d683fd6bf90f3c00c19bf8cd9c3667840670da9246f408f218129e2059129cc560af90a9ca7e979417abd6ff1b21917fa4649c4c298ffaa2785e3a0bf9a06b0f33c7eab42f30834e0514dd783c08e60e2151657b21d184c8bc16febb0939e207ca606335fef1d56004a6f9ea903d70441e4c7521915cadec22f821df4ce1f11cd8fa50592e1d114c2af3c57ef95f9ac5119b8bfd3cb59aa8c2c7dc52a26d1f3362b9fb6e983309c4ad2822461573599440b8f3d2f0f4a9e02cfe943dd33f0a172b4f521500e1aed6ab92894d5be2418d73e826c39fb119889fa34fd8680ab8c30c25ddea49653b63ad9c9666e04bcbc5cdb00835b525a314760d88af50d1ee75d5df2f99c91225d6899e3a2172ee56733b938c1f5f4668c30ae1686bcf6ee287ef20d7415798fa1315372c7bf98c0ed7396717fef48037498b319008cd6372e63cde5764082dbad73e799b766f52d8c1a445cd875e07ecb3b4615a801e69c1f15f0e90e069a9da8aa2b936fc625845192904727c76d99ac50a489526d72b290463870b6175f4951e41493dae748083fdc2364b7417734d3ef01e1f697638a8abfab753c6da7929aca03dcd36e65b8e3b9b057dd730cc022859d336503b0d96c269cb0bafa43525c58c151b1f312188953d0ba4cda8b122e2036d9e36d5c0c7290db99da32d32acd402c4a9b188598e0f91d10da02144be4bd72be9a2c2844885cefffc1c90822f0c2232d39549fced37a84cc6ff3b174d6448de446f5a34be1318e89ab5861441bb450ce143da5c48b153c1882da4856423c8d01aae828bd764307031f2983b1cd329cc373c898b8e1d8b832ee7082774de5d0f89fafc8b4dce8b101e2e5d68f4b1f3fd945c429de7344eac378e6d331306dd72af8c4929734b7701f900e1da49cc0a2c7a225f29808bac7f20e0feacb62fe805164970bf4b57fac6845b9dc50379d1b43f3204118c5dd5f056700e9215e20467a59bbec31b2b0fffeb81a002bdfd74e400c894e25767f13efc37dddb40fec5b6801b8ee228b5396309c8f834f6042e0bc2ab685bd3dd751354d16f68f3294886dd19ab7c92ad1736ff2a2ef5cb370e54b381743a705035943d77fc5fd3bb4a54b4fcb161cf1cbf6173bdcaac69f64bacd327ec522fc2139ec118bcf884e3b54b46523088b36ccf3e29c7123f20d4b20a36bca4b25bad258e30fdff5da8273592666d0cab4c9d59d1357cba87e6f2bdce42f8cbe413fa753e4d7bd31bd880b96fe9711a46f92d9c26c02b0c89b3f947ee8f34a7c8c8ece1148f7f68987138bc6ab5b8e7e6fab97efb4a13643de0c1399850280588e81bb4007691085cc18e051c64ddd006e8df18f312a4f77177f0fe3f14a4425dc6548c9b894ed10478e0b258dc709a0a7821f596aabaef0148523f15a8f5ba6ade33693962e73b59edb4c59c73d73ba5333b102f74cb73e9ac34aee326df53017ebb9ce50e75ce6d6dd736b75333fe306704675c7630493b059df4c0cc958c1aadfcc1980335c472da5e0967f7531738ff1df11868316921e6b821cfb605cf7631d33aab33a76ec944cb13a69beda0bd025a23236268a87fffd7793f1c1d360024b9276f32045482aa2b1cba2aeb0028daf5822733bb6156b21ade6ef0475d459630f0a1c2102ff80d435995c3485217f2c4003356d7ca0e25052cac6b9b425e6232558dd0b340070e3d61e81466fccdd01fd49bbf1cbdd2e98de1be7781fd2e76e1ca2f26f94e39f47597f5cf6f7ee3a3791bf03d2b13356029521cd388efd21c750a0f7a4c2a7e4e302425985491646f0f98d50fc622be54a23945d19d3901a948d59fec3c74a4569376bfe4e9ef780a55e514955728302e7e799fc55ae97fa1e9c241d8777f09e31834f192e301aa5e7803c6309a0a705c563420ab390f77bd9c7d6c48303c2089e7ba63eaee11dea67247beb6e632b46ce376dcb3dca370146953b2c91a500f365a24637dbd142949b2a2e610365584b91eff6ae488a3feaa257f37624e3a9b363ec7ddc16e3b967818b95bc3183de202e67c8d609863d8439b75f48ff2289b89d90e23f79e1ada32bd9bdd82b3162509e83397af5e16dee87426ef5e329030b39bbd7dd04ed3fd96418021f238cb41dab8e9850ea804d8152eb73761ee7d40ad2cfc5782407e18d88bfe09ae50b17aa5417e3e4bdbaf1bf106282a093e32230da81e2b9044802aa1393d4324fd8a327e9371a1ae6ef1277f9748978b282e081fb27e802917401a68300aefe27972e80df86131756c0ed42d4b0a69f9f61c7f5feaa40e2c715d0f70c84e6f69908e4c20210713d393d345805d3a151c1200b0548774218a4253cb4651078b061f97808da0ec03f3167d2960f6ac994e49f2b241bdf9d7e1c717793f24380ef70ddaaddfba0dd7c309617fb9aef4bc58776a730788e2653dd35e27d6082a74ce390321a09956eae0a83bb4623bd71001ec7553562d0e69746f003826d3bce00c4802cbc09b0a450a5ae4038291b7e1b467755db550a58cd221b7bc34d61552d39a9481741461bbad3cc8fb6b95ac569f9e5ffa4259811355493552da7f121afcedcc266060534be526d1ae0c892f6062709b8d43c438ea66ed092bd506cf59181bdd74b6f2b1afa98fffd8313eb4cd6b9722b045eb1ddb3d19f51f385968e28085c512c0519391646673b042d1c205f24683a25dbbb183688523b974c46caef13987ff7248cae6966ea97428e891c0b7c55350f2dbabe3ab75ff59765e75efd9f2042b3fbbce1347165a513f6c6b41030e911ab5ba6f25968e6fa2ec6f0878a03390de51d6924032d69773010548c923e8085206c0b43d13ce96594818a14641940802ee1a59ecd18aed883e22f11d8188466cd97e7b42b9894c9ee7747bf908876b191d46b5d9049189920e208281b5205a310455be689d3d3331412692294a540a921a56981893c99011636253d79cf29a34b50025b9751d401010b948b7219df7c013ecd8c0a0c65cd51d39c6f792bacf1880230ef8433242f50dac88a2fc0d5801a7ca62c4ea4990fd0664c2f00c371d31a2d28b8466d2b16117f9e581d94049563bf5929a6217ca0c5fe7db49dd4289cc4e78413f8c11bb1492b9506e6ffa524e4160c590074742fb9d813205e5622178c73ec590193c53e03da936d381897a4112f70e5024eb98d26507550c09c28ba86c6244342438440dd0f2d0476fa7f14c2adfee7e91da3f77a4c16c22200413f6cf85fe844bffe0c656c2bb99d8d340403e48393ae425df4b4054c63148e96694ffdd9e8802c1022e57e75974003bf9dadf54263dea1bb3ab95808e72e4089d68d31e33f974b261a11f97850b96be03960f57cf55cb17fc4107eba59ca8ed2e1a2d2e54b7b79edb4bc97af5ac7ebbd88aa4ba02c568c472fa36d7252166b3a652f978c666d6681debffab7c6065200e3ba2e605ec1e36a1f094c3b43edc6e29fb39b259b4986e02ea919b8151962d70f37c2ce59181365fe77b060340e62d264430c3d8c070c888242c93d6ba1601766682542e8178a42e985aaae53213fbd0cc44b423419e0aea1b61402505ed6b64b4bb39686eb1461dbd86a71fe74a3ef81a3d95ce1aa25aa316bbd16adced0833785de009ec600de0595a50bac5a860958afcfefcd345471909f65a255687e3770bba01338990005325a2a6b65558581a03252582d7bfb55670145efc391237ee694c1b05dea7a53dba0189ea3f5d29256acbcd79dd45db8d564c9052b2de61f4c3a73766f9ebd5788792b3630732beb29026c96095b488ac7ab3b7fabbeaf26976c42463ee65633b81c0842cb53e6224d33ecbd6145e95429023963fd3fabfe095473b5177586be92f31f122770862acb65d44db146cb642451ab705e231dc5ff8231fb63be53facaf54a16f73bb0cc2e1653acb7fab3657323f8fbdaae891ad6415eb108ce715c1db5254c346dfdfe439c5bd6b50ee1a1685bb2f73905fc7edf783d6921cb1b4aa48d495c7a59e6ecbcd34c38765d62fc914b744a9935dd9439ef4dc906a9d8ce4e5be9b361e4a9facfe006d93fc7e8358a3229b02400a9d885b4e1b7207615fc191bc9da4f090d0699ad850787fbbc8476881176e13dd19bfac485a1ca748ebd1eed94911521932e7897abfda7e0e6c9f353eb6f2bba3fd3db594a8deca539b9a4a89ab9d568a7ace2fcd95460f72bfc475ac4a4bea4cec45597147d6d64f09cd41bdd1094282b510015f06ded9f15e7cb6bbe280da581374677e57bdbc8ee0ebedc28f628d0e53a1b454634e98a15ab8ee1ba692004b48c937a929a125cfff2bbb4d3bbe0e795da948bb8b59f8eac9f4625852526aa56c405d4e246dafb417c7a97a3011a00e7981106ca6b9cc24a789a3fecd0452f2ac66488f5381c55ebc482ba823b584ab6ed593f731214042e92b6f55936e2660f16dbef73ca5b3ab5a5129ab8048a9788a12384600343f095880e4dfa60d365e06ec28e70e5b12c420689f3b3833e81b8e5a8608f7aca4ddebc1743ab1b883a7bee2e98acd27e896ae8e13cd4fd5b736f4f7575319ce2e07793d3a9adf776ac4a88869e9818e8afabf2e2247a4f1a69ed666b6d54a938aa69c0a9d49613bebe6bf55059068c09eb2cc6f3b4f7ec6a246a475b2815e703d4de032a0af79d55106067b539c0200020dc2e0420042004182824557054be93b0ea67241b0000801d2fe924ab00b75c620d3efb992650080281a48449288c244624a699d82a8fd3c7fd89a26166e6e9dbd46c6d777777f79652a624038f09b709410a8f9f49eda94da8d41ad72087dd8f812b0cae420ebb30b8f3e358ab4557a016fd60aad56a9d5ad4c1b3c92a6273bf90526ed32cd2797bf2a4acb2ab78ccfc8bff7e83e1b10f290cccf7eb5fdfa20e2c219d5fbe887579d6b38474767d119b85742db75e4829b75a3f94ef6216e9fc629efdaaffc41feab7cc229d5de6d9bfbd4c560f30dffa96d9637bf261cc1eaa27d2b924bd6989bc63d71f5c811c767d32ea4f2ad454bae6b0fb25ee2af74ddc6060ec3ad89380a690145d1eec70bccfad002c3f97e597e5934ed347e55b8fa9be344fea300b6426bbbc8bc861b34a73f9973feb8e988f995cfefd1dca1797999b2c5cde66979777f9179348e7f251220fe5bb9867679bed972dd6e9552d5f3eb822e2949d57441f7272ea438c03dea1145a9549a503cda9ef6f7a7f26f751a732bf8f7e87c33653e830f0cf3e3aa91017688d90aee5aff591c7a878acd62c5fa433cbefa8287cfe199ef0d1102e9fff5cf76288cd6b9a97c674b596294c0e0b89cdf15a8a01dca48055ba13029ae2fe6446e5a6c2c3730482232ab33b5904647f53efc056dd5611879a3e2c8fb5f6c11b6227484aadb5d569d85dc705a55d93dc9de36a15374aedd3efdebb6d1bc7517a9f76a150063dcffb8d521f3529741c90572c8535f7e90dc1d9e9cb3ac8fbd3d5a2afc849f7163b198ff215730073ff282474829acf360aa56ab4865e7a83bd2e6fb83197375cad18b611c9892118b2a480caf87f4520fea47c462c29b0d5fab3a480d6d0dcbd871de7d9d0d6ef1bdb5cb113ef2d76b20a2a8908f06ebaafe8337ac179f2f9a4905fd157340ad5cc99b4fbc2c65eaa54aa15306cdc2b168b950ac3cea2bf6227dcdb2459d46f8938d5be4bc4b13cb9bfa740f65fecc3f2e07c4554068f423e0e8d33ce05411e3bbfa2ec3e4f4e3f27a0af88d6d071c863fc5b449ccd1c8574409ea7d1e727fb5f5b410a829f38b2f4d49c5b4b23102cf51655aaf4163a488bd35b9400a4af53062d3b473be26ee95e415e31e3795eb7cdd0efc33a1ce6cd38ac39dac540385a0b90c3bce5a725e86cf949e231ff171d8fedf88b8e5fecc47e5b130947bbc9e27eff3589340ff57e3703ce58efcfd217798676de3573901d09a35ce4bcedf01dde5991fdbe73342f73db9fa52ff20ad4a2f485159cd9f24365a8409e2f2d3ff9a535a44d27f6effb93fd2ea373bc7e2000e9eb5c098199feea41af331a4e6f419e9c5090fb90b5337befbddbb6e1802ee28421adff44f39817b466e5fb54749292fb6444769b7e05990405e2ce9bc79d80ace5b3a379b8f3f82ee28c2b2b63df906342e2ce1ba53b1ce438aef3f78556fc81cbdc4f16a7174d251d0ce61376522a7132a032fe1bf51a4caf7619b421974f2628a79377a25df2b46ad2d3b3fae9c9fe2b28ab9f15d02ac8636dceb2d32c4d872c6d95c459d437e1edc1115cf58ad671e4863ca6347246421e821fe8855b27eaf0e5e69890e78996432bb779a25119bf67a9870bcafeab500739fe4ac45989b6d63abe1d394c4fd889f826fc245e01790dfea52e9f2b73f5c39980f43fd12a0dd753fd3920075be1d7eab8cd6b8df6c3ccfd7045c8433a9b9c0f47fb449c7af6704d7a85c4c1edb900d257bdf641500719c461ddddfd43384ddf04e183c74ab93f48f7101e23c4167098c9d1c16a081184c6f41735ade958af35004d40a576218538c463e4614052025be1c2ce9785254054965c22d7adfdfad6eb3b01d593eb83e0cde077b3f826890382fdfd8e4ac5179f8a336fc769c5922c81ad5369769452e659dab176a27912b9b0915a41fa875f0549852a0dea77d495adcb2873a52c4fa6c9ecbcef3c069afd3bc0afa47996e097ccee33f83df83bea0eff70f56a2db75aaf99bbc7e68c95abd27121852955083be0c28b29424350a00c09090d0d09418112040508084a501014284140403f404f9e00fdfc0001fd3c79c285174d7cb8f0e209175e3ce1c20b1f2ebc687284246a2a42cdb910d2420e22ec781088325de16268890e3437a5453deddd28f0ea7ec4a4da5a4b60afb5493c77bb57041bb76d3d58924b4cbbe8818c52afbb9fe2ce8d3b5a6545de73d43f49052069173dd0e10118b9a41d4a09c841e1799de755cff3386ff3ae673d87d59891427bd4bbef05c1f3b6ea751ee779d7b39ee75e7b9e473d0f097cb26bbf5c09acfdaedf96866e09ee46e698d828add98c5c1bb7090b004fc6db6ef5ea26e280a06d999d77398fbb9e17825e085e24f97eb0181ae3302a1305d9ef7d0d2fec6e38279ce949c8fe1d0e8622d7755c158378df736ef57800b63715c0cedf746fedd7b0eb9f1f0886d806006ad864371d41d61a3248c986929051c73844a4119108632111b00630892fc757c4c3e129d1d55a6bad5c4853c33b95c8f6ebfd1347761aba25b81b1c13db4cde8cdc7baf93ce84d5187f988dfb1500d51ed95ec6ab06bc6f03bbaedf7eedb7b5c51f36f03d1107045ba5c37c8bfda97ab50c1b14e6dfe100c4b2bf0c5a03002ae35f0396b9b8015603ac3108f318187e60088adc15afb87d0d5ad38ee43eac96c24ad37535c69dd01ae32a20416edb9edbaa09071db75d5b7d06f6ea3641c97b28ec8656a63517010aa84438cccf99cc4387021040616d9e36874ca63e3036edd315bc3fdcb50982c863e0fb37cd69c2771b217c4063de7befa063ddfb770eae59a4cb778747a569598d711feecf9269fa24e91d8ff51387f9b44d033dd92971e659ca67cb7210504b79e2ed041a03d436ed45ff907f3610f2d935a1cd2ea232ee9909f2ec205a731fd54a880d81da946717e1076dd30a028d7162f7a063f6bd7990fd3ba86d5e6d430b1aab1fd4856497324f3b26b39fe8105b3c5a5ad636aca032fedd54647f9619976227fba7880803d53b2be6d94962c8fe27930bd991b2ebb842f677f36c2ad9794821fbbb79f614b2bf58714381f616b4b5a042f6e7b2f0996757c9fe178f21fb7b1cc8fedd13d9bfad906d11e453e4a2f37ef51ed0340490bec0f62b06017e4254172af4140fa26d88b8008f4d4af64105f0de0a8235044d90bdc8c3028d31c9474d0229db96c36fa043274aa3907f522999d2294e25d3af4163a5a71f3343a61f83c6bca726b50982456d8470a1b1ef59327d54db0cd14263e3d38e88f00242b40d8f3b043522b204907682c6f8af9027f3845de1021d32c833fe6dbaff3606b2876644d53c9d36d4361dc50ecddaa68becac6d5a0a689eeedfb42844699b9ed245562ce9a2f640f629b2ff9592b14061fe3da56d6e14684d4b41658ca8b8f2d93a7d85da53b27f1f750a5a0bd97fc4bd01d13c9b04d9ffeb0f7408b27f08fe3d73f2f6ad73deffc06f3183e67973d8f01011895c2f8db997b35bad375dab2c3a88d52e15a2c2d398c9aeb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5fe140f21111ee6f6b5a9a5e5d69a5a5a318c682960b1d835b5b462318cd892384d2dad1846b41445187940cc646a69a9662a22928575e3060c109285c5c2bac1041347902c2c18203f64dcb841b2b06ec00061e20892850503e4878c1e4572901555bed04095a8328a6b51e50b8d195ea8f285461448a0ca171a33bc822871c3f1b4fa703c8da725ae0dc7d3ea6798e1785afd124d84e369f5334c223cc2cdfbc095d4077ade97c22ba037c4ba38ef033fd065b3de07aea4b0cbfbc095944b8cf7812b29ec1a623dae134555d789aaaeeb4455979768220a2470cf8009dc563802f71592c07ec5895d059cf7812b29ec1a62b7703cad7e864984c745952f3466780551a2922c2c18203f64f42892a386a9a515c3889602568411225a1b917865e5fc2ae218f155c42b192882478d77e9a85e4e27d51140625e4e3e7afca85fad7431994a2486cc7031090942e38e422cac528945892230ac52124460dbcbc06ef2f555c49921bb705022137f459c25647029a33174fd4d19d19aaeb99c32a2355bbed6de9a324a7d416b34f0fea928b4cd915f6123fe64d1e1f1274b92ec27cb4e117fb228d1f1278b2c6594324a4d4951c9f167aa96e3cf54157ba6c0c835be9afd6a5feda47a89c5628e38a95e542fb19c6b4faa97982380fc88c54eaa9758cc1139484eaa97982380fcf0d1c386d8a9d651c854badcb831030953e952badc70c2091d53e932038921346edc30952e376620e1848ea9749981c4101a42823ce086e9fa49a6fa397943dd3997eb96efb538fe540da97e684dcd2c2a28aa1f950c684d43f1feaa19b44d3ff1fe2c2cd54c893f554445fe54d1b2aba224f1a7aa2846e44f951495900ac863a52d659432f2ba732ed72ddf6b85f89303e27a684dcddc13ae87bb82d67414efcfa9a06d3ac9fb93cf4199e1b9a1ccc49fdc6c893f392207fcc9d19a784ce45ef55363406f4aaddf5b11076cf92be2c4f8fb600db7269e13718cfc83b6ab5dd7fd0e57fda87eaabde666a59c750a27a573b3a578ff4a25fb9fb596fd6b95268cfc59c1a0e1ab518de2b1afbd9ff5b82a8d466bbae6b26fd7daf333ad1a81d68cef5f8fd036add741a33760e0cfc7c09fb54aa5d11a2ffbd7281ef3de9fca94b54800327f921e95e96fe1af6df47b18031800325c4fbea136da89fed6c17d056aa33f07fb15544605d446bf068e74f8c3332d38067edcdf0436826920b110d8855fd8fb99c04b602a5362c18161b012b808ee4f0213c15de21b4948e0219806ee178283e007a870ec080c04ffc0d4613e700f4c5be11c273602f3c0fd19c045601d1d6daff66e9cd75d2b4f7fad3c95495de2b01a54a154208755997b952437eabf521c5675c0705853daedee33a221efa9b57a13eb3e17ca0df2d9b6260ef3990f39ac8f6c53f1243a358ea3e23257e2b03ecafd9476bb7badf5debb71fd1da5ddee5e6bb5d66edb76c461add34b1cc6233be2b0eee926cdc4619d4469b7bbd75aadb55488e37070d8105ed10e38388c07a572018735a5ddee5e6bb5d6761df9ea26459c300c6b38ac3b8a015c2f802d8077e04101dc44e09e006e09e03ef221b04300fb03b01fd5187f07e02a04ae0d8031002f00073153002d0145083802a2f6034d3ac08e01643ef0f4e053801f1e827698e940cba108e708871a013ae96627cb76f00cc047003f0108ba616643ab29b2e148472d29b653832c070f0e1f1aba1fea0be930720df3ec5ce35d3a29954b27fba78c5a35d54fa591797f55904a484553d556b24a5381156d5563c9583f2c1aabd692559a07bc7feba7d238e0fd5bb4b39c81460c6c868c182f1813fbf0dfc3bf14e05d78d8e15b4f2b8d0ecf7a5a6972f895aa6c61795a69f2a7763c6ae564bae1c9d22886340f7e1e8ea7e1b7fb33b8ac31fe36305963fc0180656a609a67c0278c063e6762f0a903864f3aa3b4227a446b346907e3b3653cede382cffe71e1b38366b4b38b54f8eca35ad2e93b297cba8ce7749f133efdc7837c46f3a3d36b493b555679ceeaf3934f95ea27bb766490d8903343f52d4e20ea745705e459e61c2a20fda704791c77b7eb7996c712d999a5797fffb4b3232a5ded7bef3391581eef6df64c560ff7bbbfdf797f3dcf3c73f2f56c79f286bb7653ba297ec35a9ebcc3cf1b7604ddd1ccec8ea88c3f0f48ffd24d52d4b9494357fcd82ada092854ad244a87944c29a53a98e94c3927a47f59724e865a0715e2aa20bb73a63eb5f4d2cddd2d354db2cdfa0dd6af94a45c15e439d334a6bf7c58aeb52d0e2c8bca5a6befb5302e0fde6df5ac5f815a90ac6ffd6a65d290ac15abb2b0bb60ccdbf22e2f255e619a5d5a1ec6456431ad75215d6449aeec5bd3bb58972d6d8b75bdfd3e6ab1a6cdb29e63bd8bc5fa8df525eb5b58d69a5a4ad76a654f2e0c6ad10faeac7ab5face9a56ab673d4eebefa7f0997aea3016eec7a7e9ff95fa2ffdebd46a69b12de6b9facb32ad427065f6285baafddae4f47d44a566ff65ff6de715ebe4e2f2c2e2e242babcacb4aebdf74b26d7db96b7e5db6fcb7abb7afbe0e91f63d3c505e65d2f2e2e2e2d0f63962e2f179bac1ebec7fdd2bfd9a3fc92e98efdf5c7aefc4985da85bbc57e893ba9e54940f2b6942814ea4b2b607915c6c161f6c195b045fbb6b42db61459cc1dd65a6badb5a9db47646934453334cf12d3ee5aeedaeda6a4f8978c72e9c7074bf4f5d446c994bead1d3ec71ee397be8a3df897de451ec64ea40a28caf63dfb1e2d8f2ffa875b08e5f0b999512d771f3ee8854d6bbaa760679e61f6365a0fefed9bf0198a3dd01dccec8b3c786fa9c32cf65ad933cfeecfcf1ff6f07b701f3ef8a7f82dfef867d99bc883f8e3dfb7220fdc870f8a1ed89552ef3bda7f3187eb7c8cfbeefc5c6bfd1cee78cceaf0f9f45d7732997747ec84742e22a494bf27492ca48611c6b9d168528eb62a3a4a789afc40994531a2e23926964ed448bace0dcd1fb571864872d8f510fe15bb2b76e68ec7c61e6e92b365de9d1207e479efce26f650e49b7de13f78f34072fe1c78c1a6d78e49b6bfdfd96bc7495ce706740b6e5c177218dcbaeefb420efb13b9c3358c303248451d1c8acc99489cc81deed1bd1746f672f2c9dd9d2afee07fe6642e5f518701e4ce143280dc3de879df42d93385b450eefe868a9d49a94cffcddde16eeacdd5b949ee4e27cb14262734f5803407b97af0de3f4d5e7e4c6b36df705b81cadc07dba5f5a00d1fe337ffdfa421f163fcfa76d65ff187fa43a97afdbf1ed3dce5bb684194ebb71ea4364f98e4fa0d4549ae6f3dd6bf7af33e0cfdfbad3fcb3a7b2aea5067754adbd4a3b6715be6599253f27db01eb50deb6ff7f74fcfa752c6cfd118fc2cdcb852187e0ee357bd64fc25c65fa9542aa7178db1be1f4663fffd3568ecfb4d2c0c6a41fee3d39f441f72f2bfaaccff1dfe6313e6b767c127cbf78365f90d83cfceff20090303f331503030289818a6b2144bf3fcdf30f921f88f03d78e94ca5cfb63811ce61f1560807171a7d3e9885ceafdbb241d4e2a2536a530ce3ca95010a0c8db0a0a6f3c95c677389efec2675bd85f373ffd697f4c1d3a6f3c54c6bb9d4ec761f508e4e93e3a3e6757fafb4ea5f144f3ecac799221d8a1bee29595219dcf8d87884cd61fbf846d4bf1d8498f72b7f397d624f1e91d217c21a8c272e4b377dccf0e43f68dc7455b798020197a60197a2007c28fc20b3dd07bf033bd2c2ccdc6f3ca6747cf1c67477ab9550fc9cdd92a8b148cc022fe5fb91f3c5007e4ed1e36f345c4b3b5a67d18805db2fa29b5642079d4b841473f3561350a234bbfa9a5d43477f8e0307f1d4545f45f883681d8c1070acb3a2ee0b1b3cbae630727c2c8bdabd91da14c1f14c1164735867ed791e776c44921834069c05aed66b4a6bffc8234c2764465e883b54ab35981c6d0e79cd80943a61b179228057f3ba235b9cdb3cffe0601f97948e7cd0a9486de78f9dc8eb630704ed016e413ac794799fe96290f867af209d65632ed62054932cdb48b1f107999f260c87d74b2cf93ad0af2491ab05c6c8115e4f6a0099a8a2e5630827c82b58e9c427eeebaaef3e93a376dbe3e99e6d0437906d6b220cfed683baa5d47fad88e7e00a704714dc0de84de9074e80a40b949a64fddc79f782c95e9d0159a64ea37946e471cf8600fc7b5de6a9efd45deab1cb7c5b52e001603360db0bcede90dbd2338c25f63e87bb8745879976c61a3429eddacac91b4645d9f4ad30581c6d037c28f1799fe179452d6fd8bbb19e69ae045e477b34ab3fd573101f466a6c6c0fa670a30cf3475644a7f3bfa5e8e7dbcc00fd79b21ce57d651cb5db789813cc15aa6af437db0e660158fd1f73a77474d1fafcc6d26ab29abdbec6650aaa5dd8c6302797641950634026974044ea0204d14aa2e2d40fa0a7532fd2de7e645cfb2c50aa27ffbcd3c92b34518618411467fce4d6f6210f82cb3b5d55667f170cffad764d19c4ca331b685688c7dda6969d90a798dd24d1b880ad01430d32e80bc7053a65d00cd72e9300bda1ac4c9c0023dc935d32248da0510937c86d98d50860cb4a4f1cc0937d32e8076ba69906433edc2065374774769173438fa32ed82064d303b227048f744bab3fe78b77884ecba4a33ab4df318edecf77fd43bd3b618047d5abb1a73fa8c7a11c8b367166f794688a605517af249f38868964c5610e08b2f9a4742b3f6d49c9b9c1b06d01a3386bfc3474c6b4c8f0ef8fe2d0621b28210c11741c767d5c13634415968eb77518d6105411f7cd03c423fe7c65f08ac34e18b5fbf1b69b8eacc32e745207b60e9e86417d2d1f1dedf33bb3aa331b5d2d41e7333eb2cd7fad3f91703d09249b2f0f27e5f2037d225340405ca9090d0d09010142841508080a00405418112043484c5101643580c613184c5101643580cb9000c9ad56152f3b149ec4ecf0f1014ab449634ab5501a356ab52b349ec8ed5b13a34219d99cfe3be8f732a3f3b3c8e26d5f0c163e70b91c363401071011f37ecf8d7d9915d583aac07f761487639666674963004115cdd81830ec7b10eb39dc38200a27b3827ddf7059286ad592596a74a2dc9ca6c8f6d629f8061756c50a5c2d56a54a780b4c65449aad55e2f3258585e901c614406cb06842c5169ad07bb5b0f56249478a18e9c432ad7c3325756584dfc3057349044917b3a75921e33e0530e133cb6d26532954466b84c4efc15713a0acb91a97124631e8a2268745c2dda2aad595e64f88b0c1b2a072c0776585e64184172c41236d870595e64d86004c9c6811d96171946901cb1c4068440c086ee3c9617193608e0540dcd90fca922ba5c0faaf5ca9143091d54ebd57ae5f080073a806abd94d04162488e1ca8d62b87123a1ee800aaf55242078921474e9a1c1daa5b6199b1d88f27565826cb8c4d3185921596f9e389268ac4622b2c33f6e3892994acb0cc1f4f3451440349e858b9e069854f2bbcc237a8b8b6078f1b37aa0a8a4a888a0fccd0497af0c861e2b4994ad70c22a6d255baaaa842662a5d33881861aba97411715e85cc54ba661031c2761426ee69ded3fe69b4e65efb53fea53ced8d406b32f0fe7f84b6692bde9fa4fdd153f9da5781e2cf4f7a30b0ce1b7d148f8defff1df59e842208862a588b08fa0802e3557b636c36d6e4f5847bf5bc9a741e03c8fb87af9ed7cf0b08f6e72be805e525f41a7acd5e3e1ee879ffb417cf8b87d674cdbd7868cd76adbdf5c5f32201ad29bdffab046de3f22f9e17cf8be705e5c5e4c5f3e27931f1d8f77af2e279f5bc784a2edfd3b27f0c2019c04c58818d54815b0632dc33a002b7153e80fb0a5360bf420976157800bb171dc0ce040ee05ac50eae56786028b6a860303e827463ea6396d068288ae04ca56b061123ac131dc5765ae1193a490f1e394cdc1596f9a39f68a2880692d05151ad970e12438e9c344b90d4277503350802a057d54f02ba5afbb7d69451ca68c68825498d1aa92a29a3d451caa8de1a3375e3eeddbed1e3ae890caf2aa86b8e13ad65726a72abb89d78bcef3cfd009d82a0089d7aee89879b99f1be945167edad9b77e0fb9f6427d9497602aaf5d4e4243bf19c641d58f34d8dbb71de37862652089b3a0243cf035758c8d06ba952f424eb9a93d19a2d5f6b6f3dc94e55d01ad6fb9fac681bd7ff79fa39019d824e504e4b4eb293ecb4043c3139f59c9ae493cfe9891785ebb68d1b5162b7ad4a53adf69e36db8923ca3433c3cdbace4f2defcffd39cec471341aa71c51196b236dab2799acb9ad7ed6debaf9577aff5168141a85c6297714ba639451689c8d425fe99e5a5898092375e33a71449956258e1a1e18922b2ca956f7d0e073c95318922e2f2da75086c91abfaf6ca1c62f065ed5eec4139227f28403068b09c9538bcb0b0b078e903ce1687181c584e4a9c5e58525c374008e30244f3870b4b88c425e77cee55188d66cf95e3b461985c62171241a85461ed09ad7fb8f3d689b19ef3f0e79ec1bc7a2514af6d1689c321e8d54c6da48cb3e340a55aff338ae33a94a1e07f3a95bed65d92c186012ce9b29993a1617777e4925d309cac025200fc804ec0175b8dbdc56416b6fdd1c5c79ffaff6d5be1ab864fb6a1b98e4ab7d495f0d5cd9585caf1930dc32e8195caef34a26550ae6ab38a2cad62a06be51233cb5b8bcb06498528c3654592aa17ebc94252568e0536a1c4f3158a9518a98af22098262cb6c21411e30973bceb23fed12aa745479a32e6197005242952f3f66e01b374aa8f2c6cb8f25809450e5cb8f1958091a35dc289550e58d1b2f3fc6538af5f2f194aaa7140e6be41a19329e52ac578cc781631b4f291cac176764c8fb9f523322154d15252636d6afe675e75cae5be602adb1f75a30c956f307c657a3355cf8bad03645deffabe2315004774025e69fa00c5c02f2804c4050e7abf2d5ae07e47d5de7adb84c5f37830cd556ed5d6df60907c4f97c9daf603aef4fcec7b4e2fa9313cadcd08c88a3713fddf6d5b89ede6a68edad5bc8f2fe5c0fd7c3f570431cc701713d9c0fd713b2702b185bc4c810dc33a036ac0004f715b6cefb4c2b2e958c0b8a2d2dd38507ac8ea714ebf51d252656a3842a5f7eccc04ad0a881876b69994c2d467c15715a8a182d531146602c2c926401f2038645f62822a3a24a148d195eca204abcee780ac3f167ac4e01f4396aba88bc3f795b90a8b0a5408adb8323790a4b0e3b215d3353922a4995a44a62094ad552551cf693fdef97aa25f590e3cff833028d411e9b551af28dc82e93a6a432f438afa56bcfebc61aaac4c629ad741ca64aeac6ae2b61d0ab9ed78db5d572d192cbe50a2bae3c4cfa9be2319f9177419ea95ab771258eebc8c6ae594b2c7d89e34acf611f9c0b0854c65f95a40263a5a3051710bcceb33c79740181d69844047837dfd76a354695c4f1a892b66ddbbaf139975007e922e214bdd0541d5f5e5e68d99fa3946ecf6dae28d945e4b0ee700f6ee2a72b0a916b36fefc74dd8fc7f293aae154528df1b79785a7ca58767c08ae99292925e6e0b953a6a4542d0ba425933eef3f11c73b22ab3526d49a8be630179188f31961d78c0a79a66ab3eccfa2e3b1f333ca5eab924a4a81e1b1d3473dcadd67e47598dbba9a644aa22fdd88853285b1391689e7f806801c80426a18dbc5a7e7db71dbb671dd75225ec3b8dbf77df63b5f9a37b388676bce5428601ca1a13796bb61d4c1c167a238e5b6198fad20fbbf72f0b04d71c5356ff018d7e1302fc36a81c27bdd724728110f33f7dc9f33fe9b7d0fada501350a499c4aa5d6b5691d69d36e77bfb6d62ea9f55fa24a54cbd2a6dddd4dbb9b524aadce0b06fbd6b75e57c4a15b90cd31211ba49fc803974f243acb637b32fdb302d98edc644e43bd26f1e8f4ecf8b4f591d2f5385831cd168c92ce9834d66a4c4f4feeb87c6d12afb7cce9743ba4ace4f91ece0734026960111137e3660eabb556dc01d1d73cab51bd77ab75db7af2c925753c3d341cc8e3b0987befb51bb6d9f609f254a01b73769d419feca00fc8c447f7504a296592e906327118d8243bc893248bcdc78f4a1aaef3c9ce03c56be0824a3dd94b3d5e6a52f2f1d86676df8e1b4f2472e9e77a0c14b42844445168b4285168444433a2a121a2d98c88683634848484848484848484848484848484848484848484848484848484848484848484848484d494d2a36eaf445019ff6abf8a384364fb159fafaedbfd153a8cf63f49ff020ee3d1ee3c88a032fe3974dca0363b64288db6c14146c3509b1d3c46f67fa131ee7d70c9fe658ada00d136fc4d74a4edb446025f571a0bdf7f870ef2496e91fd4f260e36d821063efc037145105d82ec6f1a22672fc8fe25a215646712a5a9005b041e16b967808321214090fb0343b44d2be910e8b0e3316bfa734794c286b4258202d4f34c2695ea2ba521e99cad8634a85948223281fdc643ee6f2c1eba5c87085922f7b8a6b778cd22d4736e3709c02452c06eb2d08166fa4992ecc040416b661229fec6ff0aa94f5f8812fd4832fd21d524d2a6108e9a94ca6c02c8e264d92f52737d9a37d3c935a9d7406fc882654d1eb8dc2f84cbf5abe9c44d4a6f74122aa463a9cca530fade4420a5e188bb779d69c69905ee411ce67e045623089197d80f82db7df1392ec5f2fd5f694ad3ca4947db70f2062fd3128c48902566e39fb4567a203cd6ed501a2b6cfcfefeb154fa2e954adc3466fc97c736f7f2f87ee4861b5a3384cab44d906fe9c7a1c48253f8020ef347e1085098ff0a66c009ffd0668fd26fef3fe44810d22c7de3d2fff8fefdde573187eece2245c2874ffac5109bb7ee7ab52492ceb9d6ab01f8ae56f9afb3b6583a9b2f812fd84c0e1d334e8576f0c169fac67decc0a1fad8016bbdb2c36af8bb7fc3ba1d34f8fbcff8d3243c16fee5e50a2f2e2e567071b98e5cad56155a2c161558abd514562ad51455594aa16c6989420b0bcb172ca994510a8582026a65e5092ba793134e269314134936812c9598501a472f46512c12c3700921082a01fcbe247c9e17c5eb3a24741c77046eab7d7f078fdd7aff87fafe3bf8fd03d47adf00ee9eeffbb0435f6abbf0e5a21290de500b725e90ded017472d0064da85cf145907b9f2a7db8efcd32bd9887f92e19f2cdf9f2d2ad79f2e36f7cf07b790cad45fc122b551ff844b1456ff62d34aae4fa25872fd7195eb8bac5c3f74e52af3992f2ad3e17c76b806fea73233fccb0b8d1717971817970be66ab566b4582c19acd52ac64aa57aa9ca12a66c69315b5858304b2af52914ea05b5b2e2b2723ab94e2653cb44922cb2545a95c651358a622986614b08822ce0f7a53e2fd7958ecbf5c46db9d69bfd4bb4c652199bfdc75a455ad31cf69cb9a6b68e4d6570ee87b4e67e6d2ad3d4474a65ce9c90f4d2c7059943e78fac29d06ddb3c14390c44a927d9718952921da7f24ad2941351762c9a7cb2e35506b7d062324949a94a763ce6110c455e68b10805876060921db76030293b6665300c2dfe9e64c7a50c8aa1c51ecf185a2a842a76b263320f3dc98ec5fc8524d9f167f0145a6c8fb263540657428beb2c3b2e33880a2d762f34f1824e76dcca204b68714b188eb26355065b684b399e39b32a53b26353cea96d5550624295da05d10bac26ef2b4d5751ff84c9a88c7dc1de1a91fe2519482f50fa18a04f2badf4cb1c34345f636aac0785d53fc31be3e1b0aefbea450f1a6b295f9641419c90ed4fa1cb42b65eb0b25aa37c65fbf6ec1f5a29b3ad03aa0a924263ed058d556b9e9e9d684014c2ff4816e6b9fd1519e0cff1d8cc9347b6df4d7d94d9e84301485f679579f7b67bc7b93f7bc78bf9a5347eef5b5ae3fd7db0d3e1beef549ade712a68aca9a0307f6fd3655426bb129751c1f5ce8ec39c46d21a73fa4e76f3f42a488c0a1dd65596029a6baca5f8eccecec70b9e5c331df222049913b72d777f6f05fa09926d7fd61f99c7ec128f5d1ed956dab6b779dba0288551bfbf05e4e96dbb96d11aefbd7662334f100f69d9914ca44f243a990897b76f7c22c95bde2a1752a7e180b8a9bfc3395c97780c13b3ca9cfa08488fd2b88cc6b8e7b2aee9eff03072e8302ac3d1487ad3b50c6789c32c185a1167db5a275feeb328c2d526b567c3d5a7fe64ffda03e4029082bbe1debffe0479ecc76374e372f71e2652730edd0b29f1f09ec9893c6cdf99a613ceac674eeebeb8753258c38aa9a883bb4c2693c9b283620ece15813c5b76565976d9128fd9fed849a4fa57d9c56448d6d08a4ed48470185a42510f1541493f310404222e80bc44954afe049943637186d6f6186aa0b987223cf981bb814fce278a3ecd01032adc4f47859cb60df7a75fafd26ae4b0b61eaef962279f518d29aa15099d64976f170e2192fbdd95fbcf3a05bfd4f48a7479fb2a54696a5147394cdbc6ad45feb98bca22cf20edea7602269033301d30580d1af3be4c5b6da38e34c67d0543fc14d638f8681bafb6d1b17dbe6d03f3c7817e91ebb3c21f28acfe47679feb7bf8a45c7dd476d2192afc3a6c02d2d7c6b325257559470d0c73985b8ee32eb6cf611e42eee5de6221f7decbdd5ab77beb67988c1cdb9a82babbdbacdd4ea793fbc61a65fa67977368e5cdb4410ef37abb4b6fa6a6a8646b5b6b7ad8a19901000000a316000028100e0984224992045126aaf614800e6ec04a60522bc9f21c466110320a21638c012220020320038301045c472259a6b3223f689a1aa8ee1b43dcbc98c174d32b4bdc73c06c95db927f6c8b5488043e796f97c0e053715b444ae665d467b78ff3bd8ed2121b805c788a45586b9aea948f39ca397c25e72784f5becfd38a2f8ea053dbe34a83d40242a6758b71c8bacb12a1c46023dcf08c5cfcb4710bc0e06ea9403b6533aae86a95033885a0c93915a1e677e76f6d1c4803726b89eadee08614cf9698d66c8f37f3104888e1f3114e64f6c5233e5bdfff40a626cf801853ebe9ed31814692d9abfdf40c07ffadc7fd5f6164548f2c21f39201c3066267b906c19bebf9eadf79770ea0c7410a5bbfd6fb6863d0f62f2122c1dee496289d698875dac7f9fd07035f1f78aeaef5be2da75aa4ff22e036bc0f52cc5c42e4776af4c4eb17fc5fd3f84586c4028c62561e6bd33f78eb51df69b2e5f24bc55c305df57ec282cd031509650db442027dfecb83386635473fb6f7303f1bfefaa40dc464368be873bea87292c9679b67ce0ea07d2e6e36637d4075c4cb8ab5414a24a6da44a0e493c5262ffb184419a1a1472f7c0924682044dd0802aa32924e2613fdb62114b69d7159371d8c9a5e778bb66a33e8b0452585ab98d3fddeaf5526130f6df104372db90aee8868168508caaf6f6ff013034ca60c4954ff229f9205bad10084ee5aa4448486aa308d4c3cecfe7159a425c7849c074dd1ac9050f48d4b5a3fed1ba0d7aa3aebb2a8958f109e25b6c2194dd70e2e25a2e730d3add7cb9b92c906fc27f35c66460848246419829fd22bb5f30418473a578f46a628ac0229280f317d6c0dcb1a963ae22e9d97e14698383b4aa2c41a543d0725082776b77f1307f76b2f6e9195368a615d82a6010bb8ccd41db614f0c9134367b3d9bfa4b48ab6a81b3bd9dca25083745359cfd494ea5772d59dcd7a37c59eaf2c68bb11928489ec7df4068c89491a4107323236be7c0cd0469ec8d49b8e72a6803e6804035d3028dffe84a20b0c790d32eaa4a1f8672c2ee6498f5f0b0d4733836655c38f1ac790fbfcf7a8cacf09c5d33194663ae1e84c660f34f429905c04a8a5b3ac1a662206f16ff290277fa6fd9287fc76cebc1871311454012c56f791362f2e5611d3c9c22ba2f74f68a61eed18824d6bdbb43341136529c872a00a3fbb841a5522062aff85639312c7e9e0bb003e08f2bd1f1cf1bb1da4f97f2ed6e0880a0847859114fcd4531fb2d0ed225b8d226fb12b4c10f4e10a8819244d5ebce205c4eb8ebfc1630e8346e355ac2b42b2d629c5cc563c17d63d6b1bc25fd7b0c0c0593fdf78e5957a98bcd5581820ee680ff98eae8ad42181b64009964e0a715a5cc7e49361d5362552421bb4d8bfa514ab94941279d2fbe6e4e0a2626804e8161709e6f32934a507b606fc1feeb39578842a2d05c88066e975140c732afb3b77c0a563e71ad471a1bd054b1d66d0bb734bf97b3427e320b327ef056e3b31b884943dc19099023803695334a083504b1ba0e73f6d6420830576ffa5e3973e4589f6e2ba0c43dca1edb844bd0ecf7b657beea31fb20cf39ebc257528ac1ad3422775b80c24ef4548d1c7994a9a50bc0c920a14e4266b83ad120c18c35d09e146421a5816cdbf65d8160b3c5c5e6a8edeac47cc79f0078a22dd33ec6de3888b7df9c154e75e4a87096789ac332a153d0a76f783b661f9aa0a0918fb9d64276eea05e434f00ca6320afdb89045f1bc3c7a70294205903012e79bcbf7f4b2d6da1b5741ad1739a40a602dad0e9f049f36e2ba970680926040aa3516ce825baecc9d2176e3deff8c2ebc7bec47a3981dd5adf3d29b41c6dbe89283c411296e744776c38bf8a00dbf8dd046225fe262a9c0b03b48ea65f6b62340e904eec77e4cd48d48e4313dddb6f818f60907cdec6cfb69accbdeaa8c13a7c9418aa3445469307014a16b7a4b72cc695fe4eb7f5093f66d227d557e57303c362bd62200df168f3c9bf55fd5fe59b194ae07a5a77c176f1e6110fe11166f5ab7f474f65ecf155d992122efdbf1175c03467bd92af37eea4addb653ed1eb06d73e529e5892a32504cffc8c6c7a78d3a242192d53dc8574d3aa8c69cad5974a4ef01f736a921a13cda98385a76532fe670ebc518eb03cb203d959efc168ef357e6f398ab27643e6079d731a72162fe04d61ce499ebed93be924b326c58195592e980871d1bba9b0d7a175c0d286f9334968abb57f998b4e10985420ff0b158245e8cc99d5b34c957b4b14786a7a75127ccdac243dc3b07171c93e71886a300b4cd831ceb7075d907442a06409b7e8b926d14ecddc8c894a1d3e34c8cde09c90578501ef4890e370c1a64e7fabbf9b16c3a0d8dbdd2c060b93c0d4082fcde6483946a570f3549bf9dd4308276375ab3c234986411d284cae3695e0fc5490efe2884a0dea55c3513d18f513387a54df325f615f8371914b2d56821c34988ecc05ae98a959b00ddb2ac36765e2afa0220722d44758fedf71d863bbd8c69017ba656b45dd6be5b9de9c548d44c151079e4f60f14260b43e1b00197639a04cff8ab019943c8e341bfb8a8ab54ae51059d4dbf69459a9da17ed839f02bac3106f12476f3f213d723156ef70afe186967d3ad86888a528162c61f031ffc1275dee2b562c203060a1a9b01e4d32a96b7c7276e29876a9fcdb27b252746030a645631b6a4c6ae2ebf6c731f9fbc5d8aa1756aec6af9cb36bdeb17174e402a919c1c0f60a0aec1fbc04c3c5c8a81652aec0ad94b36f5d1c4cde518d953c3af925eb0e9f19d445b70b4c5c5f0b808b33297987497265b4521f6ecc0b84b3b1ef81cd2492610476bf98e00db8a643157213f7a96cfa0ffb0c1aae9f943f6e4ce7fb6f59773bc87eba79730ab08f567e560a0a1ed346755f88b2f2447226f37da8d24f6773b7cc0c2bb0d9414fb6ff7781337a47c640df51b3773d8a631a8d4718695bccdef11c146bee375e5ee7a9d39ed5021d3583e3794f6f85c7df246f5c42320da11b71dc688586e99b17a50b62fe8dc4ad073b8bdbaa5e5f66e90f2eb7335b7107fc963d3457be9156c59288aad9785e65abf41c1f0322076b9de00220ede14c74c9c56565f6e3f531c687e3aa07f7297bb9e9c4b1bedf4bb640c4b3ec320738de621c26ec9a28087466f6ebba4907f2d7081af139e8463ea56634068c1bdcde5c8d4d4d5dc5c135789ba9f64c3c5aef3bd549db80aba056bc15d5dab78b679df8f4fa365ecf284e09ac88eb107cf874e84b8f674180d1b138006c56e2c66629c83b83c1c8bdd1902d584c70ebbcc4ce33c434d4d3c8293d4c892e414eb6ecf77f85977e6c23cbf1166fc0d19c43cf9cab0efca6619795111983ff00111835685d534ed6c26452cb5cd74775e5f1cf862f53c31af4bfb9d2940ebe0f63aeea8147c806f7bf310f24ad5d9fff7adae3763add38f5dc6bce5a27ef4dbc9d8d3c4785682a65168d339a05ee8c1b5055708c1fa89c3a50a97810fa137acb00cddbb8f0961ea07620602dbdca41eef019092a536e37e0f13c5f99327927a04536d0e644ff0d1e62807cb6c6c486941609b82080a6bd61e9c3cdb87b97d79a0b33fea233177adf24de0ea2665d2a874b0d7a5b27fbfd9055ded8d635612a02bf92116daaf5c85c695d1d84017a19dc06666240443e0322b5c75961c9df006527dca7dd67951e38b15e36a1bd2a8cf04137daf55c5c439dd691e7b214aa3e40542042fb92101edd3dd02b7a5ba17562751305f81725c17dd68abb7b50fa9552a9d5683f6daf7bf3a18a5f10b6aacd9c17a36b83ea6b7ee6de1f949e3c13dbcc02fa50b1bcb675b6373a481fdbc9208d4bb4b9655f549a305a73d7b5daf794d3abbc4eca897467bedb677e84838101bd7d2c446523cb1b145a1afc1f50b5ebd088829fde6e9bbd8ebb5c21a15dafed2609e0fb25e4fa5aa5541e7734fc408bc1f1b8a450714775272534283d37a3f394de700c95970904e69415518c49882b28ccc314a5a4abe786962b4f199f9c275c75cdac965b43981d596ae04c428b2feb6c924c3d72f42cc1e214aeb41908dfada78558efc6dad7d5449f46ac2481086d231472ecb6764d59e8f3f3b87d8034816aafb00a64b1923de6acf3615e6aeecf490590a27f613836dab71625bcba3d9ada34b2ed31cba815322d13e4214f586dadaca45cf09664103dc8ae108def944c88ac1091b78631c02c58537f1e19e53255dd7fb31dfa50419a6a96c6fa5b2408c368aee2adf04d012e00e90178f1762ccd32e4b202c1239b2fa1113a6ba5f015ddcba9d0c98d1f64b24aad4c900136d7c64c05b3f3d31a1d587ccb8e8930324b2d94809b5fa74628eb70d3151d35f264869b121036afae8c0196fbf64a04a9fdef91d579d99d8f9a2858aa8ce50b6cd70b3477e62afaf1865e55e77e2587d4f1b279ee61353b7c2915f299c4964446da73d4a8eafbd0e5503051988069335c912332f6b470c07000b553df7e632fde542386368852bc722ed3808157ef6bde91697cebc9511c3d78f00aa01c402d0837c849b84932819549d28922eadfafae4f692934967beae96fa12047113cb9d679c616b35fe15d154f42cc697b0ee8dc4c15568bc7fb0fa2625899fe72bef7ed9d2661fde78d958632a589b5c80e69c16f099b5842afe6065582891a2ae00ef7cd141827bb6e821c18d5ffcc8e0ce773a2473678b1c92bcb1c50e49ead9e68b24777ed1a1931b5be8d04c8d6d7468f0c6373da0668527f378471220bfd3912667d253a64639a3e846b9cbed309329085a4bc3b7b31f472ff3781db60a9c6b4a5d7ee7a8ce3721f0ea07958a3b1904fc7eeb6c62c30e2a27fbf12bc3a30cbaee5bf1304a92313da04a90ee536718ddc3e3baf8a1bebcd3e9316bca91b115dbb5948cb2242048afe3804353545f23d66f8457c48bcdc13d38f6c9eef4c58d8b99981019e5d4fb7e9a34c6e18d7264e899d04f9f4264b58675f2f7c64ca95f74efddab03d4840c4550dc0e518c22f4013edb6e95b4c287922059abb71e344f46798c933bb75068c1d2fef12cefed4615f0e26c11c8245291a28467c41899a2466ac3974c6134facb3f3cfd8e72be99aea955a8ffb458ed420fbd28ff73908e2604a8df1fad376a9e5f9b9813e99b6a750f7a14ec97c877ac708699c84770a68f523f4352b39271d45dcfd71838c4c4b58e0f0c4f3305f5670797ac85e713ee6f567db7e52474fc247ee5a4056a3908c84bf2a2a7dd4cf6efa7552fc79e47ea07cdb49a653c683e20e7243d563a3b9fc54740f7aa420d665a0c4bd5a59eef9c6fc1085c9d1fea9c2180ccfc9066d7c2e7cdb878f479b006830842b1d90630af5e99b03c85542a48e69793a9dc592552991b5dcaf64eaa37d606f6e9b5c404ee2026c511cd85687c71d1aad99b2c94efa282e6e9dc0b117883c74723edfce1faeda07892e75057d419d938aac76fb015042f2b336ce3941f90f95922545cac72c1f5a0a2bfc0f0ea785b01b7a21f66028620f048a263508be309276b2dd9acbbb8fde9ed7d6b51cc754597a6e07275646554e89036f385147847dea008095294093ab789050060e78e2848170f0069f8e5fc3970ac8a637e870358189693804d9b83f4e6252dc0460efab493859620ed04311c0f1c0fd4a96f9232fd3f3689510e4c0ee332d6ff30290dc2ec7c90d5f51b398f0490c33ad0ff5d32eebd5538d539ed1b36b50e93ec1b167481b8a2059254a052c181b5305c851470af4249e18a63e2db5374fc5d42ce3f01a64dddf58502ebfbc4173829c5c44fffd479a1143cedd30797f30538bade745836cc7b0fccf53a1fac8dc5a02b30631309185e54a0bd530135885bf501b8d1f6c665636a325542f96030d451d9a6e2a311851fc5c02f48957e05503b71742535f299b099db3f6b4c238036251109e4902077a48f2223262c8f557ff89240a6bd02381ee24ad0ac2f75cfa2e65e2479a4cf66253777825549de86144b7eb3183ebe3dda803aae8f1d65cee6414891e1610018401ff62486ec59387d8820a2cc0006755143a16c32b3d0406aef98a4032fa20cdc6355a9e8c57774165d31bba71c6eb0a21ae8f9fcce0a282fef870096cb0d5614b8179021ba7582f82a3cce2e7fc2c268414349802cb43327b1b855b39a3f7eae091c187d6eb64c2808b48f3e9eb94f5c3500b03f275a8e2698bba402110d73010feb4429a85db53f25e63a1c9994b540b8c2ec2185df0884c4042799b28bcce1c48d9cf430ae3b4ca52368b07ebc23a9262f37fd4bd347e7c54a0180a40902fc725b54eba547d31a7621f4b4df26a9ba6a50118761aa85e699ad7ae6d03abad0eb7c333c2e7f518397891085edb3233992bd100d3020e0e7ff41bfaa75d85d86e069490201896fc6fa0541437b5a42d09c422ae878e4c04c925cd300b4461968557e97560edbd08f3a6be690d9598bb5463575781d2c6ae0981bcb9e0be100ff83b7db39be26f9c35a78ac79b55fe3fa4985fcd37667ca5e68dea5d38ea0fc35ee028cb02e0b202386ab1d90d411d8ed75c087bc8be33fe59128a04a0298ad4869a84642eb5d5e2bf2193644941c0034b6e0278b01ddae8884008126a8c275f6208083b11f39537b485ff1fe185dc49fc546baf99559b202e5e7264592949b4eb84c4b6a98dfd4fc650bbc73a805bfc77938db17b7a8562b51d7584fb7e73d5f4178db2c1900b40eabf3fc4577d5b02ef5c12fea9c9e55964d5757f729b21c6ff08cf6f0940ce88e52ac751af255391dda2d90149d6a7c9ae95bbac2bb578f7b0fd66aa9979d731d6ab013ab19b7cb37b77d9bf70b2dcba57dc9c25916779299e5d311ca72fcc07b595d1e8f80ea58ee74afba2a14a53ba262dda4480c00949e8f6d318409d4487c70ebcfe5711aa8b831ea90108bef8c5e70900f4af321dd35ce7f87cfef09962f48c27b91263d26e34e3f2e156c0964d40f8b0c360d0ff409fe8f5867349919e8c86a0b623c165448395a98f04a8deefde632e022a045e096edea07f23aaf728a64299b68d5dd5134ae28faae2a855ea0de68ca88a68f15e7c6cd32476fdc25a54eeb7b64edd5e0b617492c0b6e72f0e81c91fa43a128a063ad19ea7a1a22d77ec1d94689ccd6ba0ea68fcb317028b92bd6e3ac08ccf3c3b12ede479c366ef11cc81714742aa486a80f4fd240c6798cf4ee5371b3865c84759897c29876b273a6a3f61830df7d7ecee43cec5c2d0fd12f63a11c1cf5aa2690d13b1e5d6293293315d991555d8168f0ff82d67fd82612f96d5496b6fedcad9b4edb7b1c96daec73176daa625634d1610b96cb4c784f45a6b018571571b000352bda3ab088290b9c657bab88d95feb342b6c0bf2009a2401c835ab441c4be53a9bce9b78dcd6345296e1f1c8a4064556a798e59e895cc49d6c9872392d7ddcba7d70af7a6a25d763429ce63aa86730c73c93bf3117d62c0a631d23701d8c92ac7dc1c364a4ea83a95e4c65dee603c2f6aa59ae345a97c18a6c41f20f909eb6b2fca93867b64335811efb4c731333cb09c1cf34ac6534750972334b862933619ab4646b852733518a90f2b1869bbb6a7c46eb33320bf0268ba4050b735611bc85f082f232ca9f9e1c9765dad1a4758533f1ab902de3d0e6b051b2247eecfb36f3b752ff9bb4aec2714437ec5cda0b2d9a2ca615c9f77de5adb15b98d4aa34c3b9860dcdd4ed450000db9f85a743696a5ac5e1408ca2d2ebdbe01f2991ecf3488170050900b0f7c9de5b9ebc0cd8e91e416c4742b16c64249b2c88d657016e64c4cd054e69107797b4cf5145e1833d5680204ac2223490f6c2e538a8c972c2eaa0c3654f89fe627485891ebce2ac274e7c75a72a97c8ee6fffbfa790409557b22daefb57093f21345a63ab8d1d4ed4c586b8090256cc6c723bf80ba9a09700addf0e4f5415d93e83a06bec463bea3f6f22bc70bc912b07b5b6be58c4947a1867ead7e4fd1c407bcddfe338c5f26b602abf5ca6b948e0d1137548d41f50bda8d1c034fd017683e253a20862298b4705ca730c0afab96d08748a45b46ea34fec9d62214433778783ce13516b1b8bf312548d101cdac4c8789eca0166ef7d49156bdb217d4722d4ee2ce1a245ed830297f480c7325e6f52dd63cf00a740253ba4fdd10dc6eb549173d947fa32c97223d531b25bdfc45f859abe9e9d629d22ed2a680597607fe94d234839e5bda554038b5306beb79dc0777f20c47895d1f2a2f396ceffde155d15a4e11b65945416b119fc844f51bee8c9dcdd9e54d04caa3b5949b2ce3453045e9ece608a2496259725a11b414926cf805a3c5b481d78339e6d8a2253cc056426c6c38550cb5d11ccdfa7c804d20685b03d003d380e751fe76aef3b0f721d11ad8b0f2a0dc77da6a9c1474ba67a47e52a12b1d15b61e1d0aa9c3be73c7a2b12f25ccdb93307a4b7124aca52e3d83067759890f4d67442fcdf91a3b70c256eabeaa178ab86c24cfc4e691465e7c21eee75b1a4b702c55e9ed7aa3c3e083684686f04cf8781e83ad60a01aac704cf1e6c731e035a7ed73a7dca79a4a37d4f9db79edcb960d7792b2ff04c11a001c286aa0b8cc475ecfb8062fcaf9050c21ba791449306d8db5461a622a82c63f10c4cd146baae9e3b5703049e7f2cb1fe018ee481047470a5480393ee14343d7ef669686b2a78fa91d9e1b871d16d633daca5d4b80ec5223fcc7e5906c3d8e1229e5646299db609cc488373846847a4a2ded5682a90fa959fd972cd6bc5ea87941a548ba4858439450311e8747228131eace79f6bb8fe5771174de71f765ca89e10abe3a27847aecb9344b4b42f07219d4dae1037020b19362e35713e0a8abb0a51a6d6d660b8abfdaad2a2c75d6a547268f8ba6c9e0db18d3e0718175d1726b10c2001bcfe0263714de15317c43014616cacb39fd6b16b28023a4cf255f28628063a14c58e547f7fd1da01d0d1980da4420dafecc2206efa22874723d8e95ba27152708cc0aa4ef9220f9aae1caf1ae350d52d49fb813e15683af40b0104353e50d8e3891525167587104914cca9df6145fc0dad103843c2eafd16e87b0a4b223dff68cccae0ff0529d64696af9ecd41387fe2ed90fda3fd8f40db1ae293d28d668f2a78922d45cc6a455ea81b1dff437f02c4c08a6db0ad98de2b5310bfedf9adec859edd33238a0e9534ab2506baee47dc9e4146a3b68d84de13f9c8da0acca07d251f6741254c71416a6b7933595fa4998103950456062bb30fdca5c1684a0aebca4142668bb2cd568deb59f415bf75c60f61c9178b0af11af1a4c57161cb23a83db57680a4923e36a64d26fce656c84b861dcdee423166680b2f0e0a1a9f0f277f5a28783e06d19ddcaff0c58d520107d78552c359075be1333cd3148a50d78f7893cea7bb0ce84f9affb3b63c5fd7175cf8cff3efe9a2bd26c28bd3065897dc26f981fa5a72275ddb8ffb9202361133a666b3399b39cf965b6a635234e2d3484e0a184dae059cd521bbe673542f8cba9ddfa01fe76d5304139c690fa4228d5ba9458458fc68bd80448410e8ddbafb41df56c17262f3dd07af48b975f731bdbe87914fa3af2f56371ffe133de68cd971da2fe2833a9a4bc5349b1ed9aceb65916379da31ae13d8d730a8291a47e36ad4e2b9518ac12bf0bf3982b50d19ff5a7298c1ae8c1aafa5ea1e13698d22be603c2e4d92996cad7f716ec3322aa38e63ddcc36de2d0d94a6785123d1086281a9cc0b8d77b9a26354cce3b5ed97eba3b691867f5f31cf05c460a8c2db03fec210fc31b1307dd4c4fa844b69b4c2146b1a026902a5d1b23321f3aaf77ea5ee8e1754325112b5a3f993f63188c31ecb6d2a52199f64a4591a225d9c822bbb0512b7081660dddcb766cb8ec7a72b57f3c9f9b3b5f58a100121846831ec41bcc8111948d780d5f6f5ac810c82754792e5fb06ac89f3c2c7e595f77e66c9dcfb4e878baad074bc6121295017fdeb7d6aeba2b3cff1a28b5000dbe5175ff5491d6fc5a858791803d2ee2f4a12c5366c4046758251297aab0fbf5e18f0ff36b5ae5f0b3ec514f8f25e0cf415965b8b1f722886ac9800ddda283555c71d9b0741cb4af5296c7dcef22f65cd342fcf5bf285bc55232fd5e267322f96b2c6767a9f89fcbdcf09bf8c535c204ef4937750c3c35791f1234ceb6462559278cd65741764a00ba51035eef6ead00e316e2080bdf6290320fc47fee7e29fcc874bc6bec41b9e02ed0f87116a8c506a6b6bea5da99446676cd343cd67fd88709211d5ec2b57fbbc169f18c3df2eb1dce9fe1ea101c5497efa79ad7a744aba64a9cd88fb81e27d35efddcb2ff37ec4d09eca5a234152a28b2e79e83b83519882802de16c14558cc9657cd0528292504bb50c0b344c50ba69ff2bfb0269638665128a53949aa114edf4f3cb8a8a4b6ea46c22e4bad9654b9a537982fe709c10fd774db01529c48cc1b260b50a62288bd9c0405bfd44878d2d3c3991429f89af9ebb9fa836b707994b22713786ae4d4f0cf09b3a3debc87422411815a027aa7152ff50a8c12c111b91218c5a54a45ac9c3fbfffb3a1172be1d6c67e92f16dc2875bdf064b3c08e6ba5e3785ce07b49f0f220349d686abe6935f0e9127a686d435cac11f7211d0b68f2f19331635681b073488bf45e4db91918386639a0b6544a14fb3295e0e35a4dfccd6e8dd3944ff7ec6e9c7226bde7928367f51c6f6d854cc1f480ea8d9c1f9af4ef275e6398584b08c174154c5797f4643d96964f8d1baf2509dff4a55b6f72b7bafaf40c79bd554541815fe323837c761c286697c930d4b784a2165cb1159344b5de077217a59e3d9790331e1634819214f535b1e8a5b90ef120874af95985acc887125151ec19222911b188d87db9d3bd58079c62e0946c961c5353dd66dca6f34c6aa75e77abe88b938a0c392a4f5f482d8b5aeda8eaf7d4d75b1483e28ff0894e25b6c2eed65860861e321ab3251e50fbc64ae0a24227beda4cc6ad6c05db5810420be8ba7e3b87aac42c71ae658947c29e19d4a2e845ed158e584b366e45c3ad04965f32ceed29f62cab57d1fcc38e738369ad1cd1dc2d7bfc3ccc88677c7438fad0a648bef013194a30d015e991be15ac4485f8959591f815caa1e6f46adcf2bfd48eaf9b8a6b22e72f326dc20dd671bc9fa6b5ddf23fab35805b941f16036c618e518be4a02a99cdb4bce62c64396033c59ce5e73a1a63622ecef6ab049b9cb0afe2a8900354415fabbdda34e6ceeb798d8098180560b8a6ed8dc04eb42f05b15d6ac66ac9c5bb29808fc971bdd0b9b144a7e214095d21d30e98e5f8e03c983c7ee20e1c34a0a6752c9e48d06ac4f810e5f7dce29bc464e5922657f4619e51ca520e3dc6648ec4f17d68405931197abf862b3ef0b5f8917e8692fc04beefca7f488946fdf5723ac816f884b8c07f55cad6882fd12c95f7b3e5bd68861000035fa2cad7b3d7053e1ff102df06d67f1b63dfdfe29b0022ac000214ac96953ecc2efaf93a2d1c67d98b9d786be6ce6bddb1f25445ecda3b660dc80a7402724964d900ec9c1184d8a76b027e5e0d1cfab8d2ab83651d84e67b73db9b41a14b52eb11edec739f61443b7a04cf88060b40fa2536aec091540a881d1b2c69afa954de94e1041ba0cc6ace372b84a942c81922e444bc1f5891dc7370e893e54aee71c4dcb81ffa949bb14b1b3112649ab11e90c1820c9e0907166592708cdd64a9908af3c761cfb17e927cbaca425723768537f9fa1454f38ee86b8d28b601fd67f5401cf64aec9e5cf18870bbb4f702e28a93016582c5dbbf0b865748db88075b6e6162c23760630fabbbd1c43138ec8dd14b5669ad35f0ff8badbfe003bae02c5200ae5062646e1c15827d7f0a59d851fc5252e327efad872f76e4275c04889bbd0c00af9198b3b1ba5e8d85da763e4fc9272831e47af140bdec4883e1047c411e093db9df66a3719e8ee43606e8c023614646b3382e47bd6001e15a745375ae5242fa5d1b3b7297b40278109e81f5017c4f068f8fa7238df30f983650dfd1d25550607ecf78aff2c02bc8c325dd3a4df12fb9f2fff56edd2c0d63a44caf6170341cafedb8bfa49cebc50b45199dfc7c332babe0712d5083c12014fa724f4f38bbc699799ef3b91d2df73f645fdd9bb78166bd41915a9e41b21eab3a2a6c424cbbac4b6062b7cc17bc47bd331d8987e034533ed572f22792de11f18e8b56eaa2472dede3eae530abf1fa3ec6e923caa059dc35dd15a901a831577540b4585614bfaba6d386476e68755392fc13c9cff769f6150eadbe3d2d444ab6357cd17c5e5770b6427b7640129afdae529def057693618655ac4a3bb08656808b92045f486ace26ba9bf594e4bad6e1d85522f857a3e21a2571298ff3563885564c4ce37cc333a6effc736bdf8a9d288a8d618494fd2e11ba74da89f078ffa9ca7c43cf033f1b250db47b8a931d11af8416dc41ac39a5f71bc9e8511c05f8a39cbda10c7d70fbe60d551735ed04d98f6dcf192939ee4cc34ae8884cca2f7ca33e9ce434fd67f123f726dbc81500ea9992ef39bb8d20a59b0a81d6ac19f73b14d02283c02be2d5f789c035d97e38b9e0409742d8ceead448aa25fa4c5682165ad3a40cfa215e6c2159c5e72ac1a66221c8ca9810f070dfed004d00e5de0f40074170c236324c300480e2999c4e175dd91fee312ed45b4479043612d39fde6b860cffe68f38023d424292d27cb222e8a154c74add1d915be2c00c79d4b63f5889ed7ca36f0022a05b8adfd8ce4da3910abb45c653c18b849190e4072f3a08a742bab9ae1e22484ee2a487e1743ffa2d3d9f11c60b1e2d6619a6ac85fa3200c328e0826313385bcae937404c67794c0838bded413f95573da44284bda432fdc57f1bb868ce5630169e8bf844630adfe631c6449af3362361bcef222217df4723e31bbab3d324cb32532bef31ec20c4dc8bd2f5f47774398bc0bf477fa10f1468ff88447716e824e2335ac93feeb4191e9f5a4d6a5a1e43764fee71be120255784578e21a5bb912e21640ecdc293bd26788bad08e18da595588ec125400a3de0693e18ab05db6a18667a7998a4786ba9607e7648f694cf687c7d0aa0f1979c05f9128aa484353f255885422e1e98c8c86741b1d4d880d67b4211aaa949a816fdad2aa70f5820c0d6de94cef38b11193b9501205a2dda1daa7108a8388afd169d9e164fb82e4777888207004f97a43658c7c320eb22d412d01e4553cd49ac416c6c69b1cea5ecc5261d4138a14c9b00fd9b3e4705612043454a14a2ea2b09891feaa70272263f0aefc5bc53bdcccc8fb918d004dba97a9d61d41d841888917a5eb69ef5d098f40fd53ae3006e61891df14161072aa409f2e8f15968c3ddabbb9f989877864a9125df13464977211ac4a57000e46ee73d90cd17c99a32e1db2a1d237e6ec542df9c492673956f1960813d6de24e0f449f8dd0700f7464e74af9f6442f28f4ec006181954df40be2c7270319a26c293f00d591005d4c41d4e2e22bae94f34fe078bc42d81bd2724cf16770a25665833262f0dec5aa92bba6d8e3144ac74f3159ba7e660d1305bde22295a1e6310c2661e2073ce1905740480a186624bd1e3f2cc19d1318de6ca14f6777291480fefb277fe0b6ef6c8fb78c38434e9be4c6d987b063b0831f3a2543de52d6e4e22d05101df51afe75892026518a1a04f024f344c8fb90de0f04e0c05034780c24806c140cb5670c39479671a356444d204913ec5b6ba487d35fa81b3ca68f87df7af657e1bdc33a4cf07436e5ac86540c8070f1a0597b77e2627ad6f01aafeaaec047072b91a725ea3307ddda04992d922d4611956450b3eca5833b649379c4e2ba58225a7ca9cb9e8b1a444cefbea1058e61263ec1dde1fb7d4ec9c817b9bf6f90501398fcf196c79ded14bf619fe43cc4d0c73fdd0f9213a04d6d9201e1df97da7616c4a2f60cd012fe16aecfea44d65b61cb7c77918789a34a9b58288755f9d7ae10e8f9440cb5694402d82de436e0907629051dbf2c10ab6f31b69018c017d297e8d85057102d96e3e3b45a11e9123305dd47016c57572679f8c46cf93b251b9050355689019f75effa253c517f19a1d439544480d08d1b2bc10316e813876a0dc00aac70f7e5d21166a11e6d32e2c5f396661c87f078818f113350fff736cdda30983506f9a8655cb7f84ba1eda833165af48ab516ca1b51c0151b4e2e31aee3c8bb0000a7515f4937a7342ed6367f01e846e01c3e865e6a8b4e9c18a0854e1156f9766a077b150a3699a493c95b3836c80938960a16c833290fbac97959156fac45feb4c8b606231537d23827ff981067442d67500757db26b543bbcfe4d99fb5d545cd35c3e9e898b5c91775df723d47c309f5771aa66f968e9bfa8e772880eb6c3fed304a8383506cfa316e66533cabc6b0fdc0142dfcf94ceb051020e61225e661166950cbe639a3f6ddd3b465098b66e801e096c11eaf00c2ba2051f346b92f90265e77522b93080308d13348860c19cd1bc81118fa6b455c28c24228801078030648a1213a1524da192b001083a1203a90fc212d28247897380187ccc03b44511882446094098d5200963a2afcd5cc2c9c8247c689a9d871c1d96506c0292909c649a154180f20091c8f6c3db120e964823d8fa61946c466ff2227864fa72fd128ffb5604cb2193419aee0008822617eadc41681f4d9d8a40f68786d54aaf652ff191c10158265c44386042b1f245187377e4e684800f5ed80325da31158b47bc00024883f27892762fb68212083048b720f3fa9033d130dcba4104103fd16175474eb77b24fd14884ed3e86ab10f94df1cda41889917a5eb29ef8e2a24021d1540a2315779164b81084452a44b24a709440fafd3fb62aef519c61bae861adb9d568d00495bf171f564cadadf20102f795a9e75c08739160d3831a889392803f021525071552dcc7e60d6f460c7a1e7760c78aece5f4632edb24687a05521bf7286b5861df8046286f92cc3582b2039f4013be4099828844f371156222a5056d788075df5a48378025f50228941161179df17b9a7edcafd36b99728e497a93144cb096df2a9d0895baa97c39008becf687c172fbc17fd4c0ea3c17ec06a22bd9204e827c612f3c46eb84fe689ecb2e26e28652d08b585314694897df2ebd0c97baa16e39928cc3f83c193eae913234e2c2744cc5dfb88b4a7170767f23b9036ca971baaad213d59433cd387fd3cb9336af478c654ce3a25e61023c225fb35ab64f01dd3fced1387e211852e5f4d98e256b7394236ba7e47b7969cef5138dd33920b263571d3d06c4058c32e77d16cde695e2e12560975c9b2370b04a4b8759a5edd6517f74de2ab3317ddc0362b76392bd414c915c6f8953399fada155c6a7e867af9668818ec00722f8b731119d2520b3b4fdff40c12f0db1f62197e060d24439366e4a045f95223ec16446e110766b451dbfac10ab6f31889018c016d297e8b6144527f838c878217636a854d32d47907671bebc658a3c84f571f4f63a933d28e5fba5115e40284e4f3547554b8ef00773396440927e40531418f2f37370cd37baca87670cfdc379a0c04fa2112cd07531ce5e3b38834e45114fcbdb7765e8e645181fd28cda02ef646b5cd273a0831f1a2743dedbdaf781e818eccd2d4c7901710237a54230afaa4f15454e3cb75f65e9843838e10496b1cec76511502a15585df850da788aa984c208dc9e49475b0759857df85b5f1215bc452f488bc910cbc121a2905bc15514d9cd883d7505b90cb3cdea205ce011f340157bb6b1ea061adfa93e3599257770d22554a005aab9aa866b01029ab467e55f3e4f5125a5a6f6182a2e9d796d59339bb29f19d966dcb9ce24f4b2d4c209ebf2f9c57c794acc814f312b41c0a04a20124d30b873ba8bcc2597b0a885635c23b33e795d02e61651777e6a5295afc5fd460f813d1ae8641b4acd561105dbef7f84d44126438a5959cf6428b8ae163a94b9888e0d7bcb40ea8263cab8e5c865ff587627fef598450943480cef617741f450f9eed3ff4436e28570a3f57d973e5653228800ef6f7fed36844d94070cbf1d0f0d9fc3d346d6f2344032a0d36079dd49907c212a773eb24ebb042856804a4011d2ba0587d89b66bfe0576a12c27c6019a953f4b18e2fb0e31cde628faf25e42ad84abb1e040ad40b8444c4c11dbf726701f498295c7ed3e05ec49f0b17fba802a0848c1133be3ba07be047f1bc445aca87bbaa4b5c21fed01e3d02e12dbe4eb8ca8ff453163231690c11fec3e1a512995be77ebb73f92f1db96cf59722f310b3aa0bc8f98b28187abe9067421514724f6749b24564da47fb4449d8b93f327d94027839a487b3ed13d3c31a8411d4e9dee8999af8e9c19eac01dccc47ce806e6d3aaa5a80b6790227701048141332cc13b71b79dad3dc516d51b7b08cf54a61e2cc9046e3f323bd81b7169e27fd525f844df6a87358892caa57fea2671237434144c611115d96de7420d7d858e04be48f135a55fae544e2c05ae3267987f0091d1a51c9c89791081282e0d15e070762bb5857d3c248a01a9a9c2117b97e848c6e473a75270e7123237191d191db2d8592975cacbdad9a9e887698a94750bbf737ace728008d7d7beea67850528a3285a5ba7518012d822d4611156450b3ecb5833cc460ace876ced1596a322ef86e8a2b46483f37317692098cb606f833b1fd4f68cbadbe0be861d08932c60abcc6c40d1b0b9cac3f9267f62f0c070f63ac59150e7872ab6129a7b53c24e31095f32d4ccdb88ba2ed675daa6a912456c4a906ebee0e06a64b8acc7727a9dfcebe9caee64b466e5eb37a2de59da903ab5e50f0baab668ddcff4c340fa671b6238c87db1d7429dba01dcc09fbf0b34cb35825727c3653d96ba55dc844073583f9d008c9346a8c9cc8fd878e479fd891db080ecd2ed7b5fea47ae1fd88ca2485ac85f4472cae52798f169670a2835ab6bb50cde316d80599ad13db474ce58703de6a2bcde45c983d96638bd9641b7c25ecc1b287d40549529450553cc110156edb2d4643674c5ba70a67a9c59a224e2612edcda594463d28d5115a2a8109c6b1a420e13baedc5c6236c93005a26c1cd994c996516e5693fdc76259dd21c334065ac93a23592d2b3e79ab44fe8089cccd7ad2a83774c13609737ba472d9daec79ccfc7bbe8f2286a70d32baa746b8cd3a484d2070416eab8837a2243347cf2af83cacdadd6ff43575997692a8bd0485394c4116fbc62c828f0ef86203310a26db1811308715689b95b3d880adff0f92a01833a0cf8bc689a27e8baebf38510013ed310cde2a12f132bdcfeba9f1e591032ace6782c248928c93034828de41b4d2301d8e26bff153330c6507a7a798f6739b8173ffc8773e1ea85ec06884ec7f2285ad4b037e14266ac9985df11ce6a70a11e9c58770582f3c774c46b3c074bcc23d80e310a6ea6377d2338325de6128c3fa5a2873bf33b298885ed74a3becc5e275b0fb5f02037ef4a93bbd0e3ea8e3b948b166a4dfa8c751b97db24a97dcf1beb22c45c7e4f0c6b678c023d9abebcae9c9ebb7fd427d9c310c4320e77f021d99fa647211408bf9e40679828d3d8fca614e2aefb991e668abd21123e67ac727b20a66f9627da7f2919e067430a0da6b3b191e90655650fcad1ff69f1d3f61833a291785b29832b5fc46e84e7208291b968764d9a81d793d580853f7e57480337ef455861632d60df21721de1a36753b543034580cb80371a1ba14c750e577178badc49a61419d051b6bd27d2837c6c71731a9a1690aa545bdef64b81f57e228a7b40f51c8014e14f21211f9aad99b1e7d5358e69e77158f4bb2debce12bf25384e40b3ac5412d95259d2becdca429b2de4cb38458dcdac9ef385550c44d0a9fb0a1134e50f02f9f46d1e20283fe9d9dfc0101f481ed55be65315457370a37c3e2fc97fff061208a2701e8e048366abced0b9e9c83472cac9c8ce4c1cbc19c18b4b181f7140d80d098537b258b3088545ebf3f1c99cd3b557214847490847c5229070a1ad175502b9741c0d1eaf705ce7b7c8fa3ddf5215cf8c758b547d306332679072afcad139ed53c0103cb5181812df38c2490a976707ecaeb72c36e396530fc30a39da38096df5fe27d50b5efb3d40b59b621a182f6630255a920ce03dee5e2cf71400d36b7022191485f09232c838fa221817c3f3ae51b591a27ef544c901125fbfdafe238a943ca4c48b010ae42291d2fb7b33065c865c0126349cb94bbf89246a124c6d1c66fb167a21ad1d87a93359ffcb5cf8a71dcd8e6ec57483bc70255a39f567e3dc00180ba726620f17efb2c8f50b19abfd03cb38479ec366a32e08d3bfa1b24eced026b1c0dcaff12c7ce96dc43852dba745e1a6ad208f75c8d514f4d82b7c2003efa4971ad0c968a974615b0ce1d12147a4f03daf1bb0be38bd0360e4ca8c84cda98268cbad958ebcfae20d2d29d1edbfe412310b8d68f06b89504ab0909fd930611c9ff6b6fa2837205010300734f5844e40a5d96875e28ac0144e8d4ba6a6acbf1fd5fc2b383d6c28cb31ab14b1fb38073d283122416ce6b202255817a5dbe9314163d52a05b57d62b457de7ad95e535a6ea9deb9466a1de2cc61c9adae3591ae424fca097e5ab0906c62726a9004a6883269cafd54ff68179ae169fe18096ea430d6298a05faae4054c36b357ba6df9016305ea87bad22336fe85d43eaf9420ef5910f8cda3fb37b1c8c50872be282254390c2a1688c6c21e3c9a2b4c89aae927f9b0eea5ed15c88dcdabdb15ac836c3099c7a48ed425438c019a0e3291e4ba4203bc4cde181120038cbf3a6df0a3520614b216f8f22ef26040705edc9bcbe9c6279f70b25a1f00c8ffe1e94dc12f00a574a06725c988948b7e5ba0b081915ac3c5624889ae2c86cadcbe726f6592269330e3aa142f06c15f3a935ea330673fb99ef38191c52e51bd230c0a7cf2755e0b4b661cf1e4c8ee7224e2a98639188998a47a9b911b07070b3c207c27a3e2c6fb7733e049c3fbe071fe7bf1480eb699e3b0e06e54ccf1e5010a256151342687d934d3b10560af357753a98b6a3771c86492a84344bdd999da1b63c235ac426dcf27bc205dc040136b43c6ee22cc4c8b4058945f6827e67e3f0652ec963788ab0dd7097dcea37843722a89ce7e3cc7543a850520db169909afe48cc1c10d716c6b09fc8086ecafac47c23dd2dfbba27316a64a64abab3955aabce7d72a92b1cc226ff643eb3b413ba99ea9bac3b131b3da7b3d453ef9720726eddffa92e1ab31bc81f5a04a41ad93312339e58ac328c8280d0532a337bcd0675969f62cda2e849f144d077ad87de4435742f36a1a24ae8aee9a0db52417fb1067a800ae82aea9f2b70d4cff544cfdb5d4103c5ccda8f068e39fd876d7a00355da599ae214cd7764b6f054bf74ba51b664911142ee90d4ed012a061b2e70cb8350d84061e3a507a81d06bb99c31e254033d0003ba3ed23c5b37a5cff594301a9df2d5a0e77063d7cc30889307279d9f21674baed820ee45289c4b7575f33c1d07f0bedd946a4a58658eed076740a7a257599707e8dcbf4711590fd0f758bf55afb13e8ad59d9850790bb85ff8d20aeb5e1c08e4fe2cddb9468bfd925d111974599ff09876c410169872e6a3a44d427571f5a23474d5a117cc1a5cdd05135cbdc633393a52363a70ab57689b32b782aee56e664217738f01ac4529abd18250c8215c557734480efb6d5d76996e091a7d4abb8499f463e9bd8be81bec26834592f59f7ac390314edac00aa07a38770747af6a0716d925a131cbb4997a6d88404766a4f5ef2db1c718c0af3c712522a0c6d1540ad4c826fbe0c0f34cf074a744651c987ae7dbddc81c4ab11620e32886a062ec76501b95942d2d14108e0cc22f8eb4305383d49219471118b9ffb72bde0a8ed33fb445b8350e7f5427308d1a450731c9b6c31c39dc9572ee1aa1b8e3ab3953cedb5bee506bb71f37bd0440f44a8593fe3b3035ac52ffda1adbab8e3d4715b4cf19b133879d944072ed268ee95995b6d083b3a4acd4087ce371b7703d9b3df6599195e343cb1d7232279a5e86fddca4e8fc82b61c2131ecc469373c56789b96967e835063c7d70c27a5adb5b77cb9321e5e2159f3902cc22bcb13ae4bd5abdecdab0fd079dfb0a356af3869ba38fb31bdeb105bc8de942e6d47543ec2da89f20ae1a795e31559d203175cf3262c0ee6f8239cb2dbf98a7b6a0c5e26f0fb8eb00aa2c43aa3a99e1262931197320b653c0d8c4e54a9c8a29b9511dd952cea5e8e5e445e694469d40c47000a943464d3ee4b402b7baed14fc7cfc922d73a4355e5461f8cb31301ad08d805a141d0808dbddef27fc5ae6bd8b076b59240f25a49714bd75c44e60b0121e1a32b4360c52a705543605e0bd57502e13148dad17ba722d11d080acdd53ac583c98e85bf5efdfcf58730c10b7cbf0fc99f1fe4161bc7ec9bee519d13f4289f3f35b995836ad22b409cd8ffefced8e7791b5463b3aa5c20135b1f91f3894d99ea23869a1a50772a3a494c2429ac80a16c02dc01dae1a48ea6a0b09377e8a68ac169a80233bae48baefaa7ac2a46b763fa0a223f3c6bd9c7a1d412f6af83a3c58c8cdacc950d1ef0a3f88e9caae61c3183f3847bdef9b9d89747c5ce9845e9c452b1dcd0a719826ae03c7370338303d83697d51776823a681e2f1f1cebe57730f9e0f4af1b4d3ba7c1d1833213500e56792f0c68ab0239c42eb4b63738465509309b8058ffc7f8f0dcb89304ce5f03d7720cce0e3b9e76851483c3fc9a867aa546d5ceb92038e124acd59e950d0381a85ade30aee45b7a47e0949d05c7da6fc1e5f09e57c3c1e90dbb0f07e782452719374a0a5010c14984c139ffa5f62c9f6380baf7101081ef3482984db96ef03b9cf6eb4558bce11a961bbec254a8059ca9fc61b35f10615f72705a2ef2080dd555bc3d0a4b852da4ffe401bf73204a606784031d9c032deeca5365dbe0fd0cd71d0d69dcc30021a361b940181c152b3e4a347b4b5a3c837a284973bbe05f4665edbb8c8ab60409d7f8dec396a97a94e5a18585a967bab616e285fe304b3ca9e2259970a41b5fa4b9aba45e14a6155c9612752e1a0aa9c16a175c12bcc120532c2b9613ac09e5d121750218faeca9b2190ac14b7887d4ff56c05a54eba0738a6359ee5a28da3aa480de4b02c14273925f92084e57be7c5aba999e59ee95f03a5cca46eeb45baa29d8221edb6897ea0e110f618a306221d51f7b08e40cf87aabf1de0d1447db64cce4a1f97a88bc08d65ab989103db19578c5ac16e69005e36d2f35d7fdcbbd0cbb37b1e9edb76c67e49152042531c54c97060cb4ae7cb0c898f6a056251fac080829fe3f4cad78bea421f7dcba0fccd19b667560eb42a0d401aee5db74f50d8e318c7d06c599c7639518844d757187892413576a598a084eeb75adac7b086eef8b804a1ee3f728e335468f5a43176012c520314017a31e5a145ca521127cc71b5a7d5a36ea77cfdb5bbe5850212aeb2d4bb061fef02308012b45a5606b92f77ea04866444f4eb247a14884ca30acb568f0f5387e4fc6c9b1301c00ca8f28b1f7d0169214e64f342709bf6f6f995110275875d5bea6b5f18505d096c110cebef480e3f8c1c5abb99018f9222b42caa429ba436c3dbb94891c1902f4ec200f440df581107ddad47c090743a43930d1c7c7d36382d8dd9e9c67e55cb3a29a9028fdae2602de7933bafa5f80e7b19e33512b1e01c8813c30902b5bebbfd7ba03f05271ef86e04d0c927d29ba65219bc337e5716c09e3da03a43756462854c1e4c46b63026ff4cc50fc338a902976cfafdad63a9236d69b0f29f0d93668034f59950e8a8126c725c197a5191a68b2ae0c36a25cdd17cb4eb754f901727bb490fc99ab4812328bafa2dad27726d82590a749576c02dcfa52170df930e9cb3e1a1b17e83e52b14c90bb8ea4bc78f9862ba4017a6b4150506154174c310467b293bb773ab1eaf4140c05e5be380b9c16edbfc7408aff4e1f9df024862ee967134687a14795438195c848d9644f5bba4cb3ef078fc539a38694f3df8aab2243403381135d9688d6d617c29f8590282b12fabdb341049f4a19baf876d3ba55fe0ea90838d9d499406824fd02d7210a1bbf1ce946b0a704fef4f3fb22dbd0a282f24bd50c064019133c3f58575af581a5f8ef6ff14116afc91d1a3c1650fe82d5c96fe8cca29c4133b8fb66850359d69b7160a7236bdef6c851b8cdb1d798e51d88a143bbde84f299a9aee6a52ebed49593f70d25666dc2ffaf65e6572e0e6256b126d711487400a90c546650fb9d1be67794025b4b88870b5cb716aa871fa1387ee28f1c4225fdd3f8139dc58ad2c2a06cd749d77f4182528e5125981a1d77705a2a2e61255b7de248414f643268aa8c3096bb138e5f7329547a0c1eadf90d4854e46bf5819d76b52b8500b31420468dbb30f4232fc75619a1c172c14d63a618a6dcea342a2437569ebd190e90902e8016b7f61deb8a411cc7f3397d2a3ca39d2e19d2968840c29abde534e5e146c6a94c46360481fcc6680531948024ffa9e9c24ac625d300bc6c2d62af942d6f1a441c17172268891583c5f6d1a8f5223129d8345525f3a293e64690c126266ebc4e98dec33b9f30f365fadb410d529d4fbdf87450174ae5843241adbf8c766bce2a55a1dcdc6ea3255240a65239e1c876790580522094b3fd3fb1ac52e428dbf16d7df0a817f6e05b048ec7ddb40e87dfb4b1c92ce33bab8d7c73a31ba1313df4f865723445541b961cc23a056747809193d7022fe1c611e9d021b65f09b235cbe8598437563d059ade72cba8ee56264d678ca1b1836033e8277238fd6997006a9500335bb564e077ad8a97d612e424ecf071e3a806aae6453bbdc5217c73b18b6a8e2ecd16cd9ac17edd3d75b9efcf1607ae01bb990a58c9c301045d077d869c639a630cd0a497351d9f43325f1dce8e9378d512d81ef5b865e0399118b44a56973737edd21d8414e636d25cf2531f222c92a9beabf2b22aabbbd9fc54855172c87b26186faaf10007d451641030ae3960c4a611fdc5f5259af928df211b487dd386d792744e4e2e312d166159e3231902d1b3912e800ee9ce617291a2d81cc77de48c253bba2b82eaa3f8afc4b232fc4260289eb05fbcb97d67b196bfd07bf0aa159259699f5d014c84e5b4e672ade850c87588b082c78315c2412918bd986a88989c737e81ca4c25dcea4e0523bfcdb49d2d86e480d9f00d64ce2541e5d6b477ebab8da2fefe359185a5cd9f32858e389b25db7c28336d3ff5efa2058e813383401e159fc2cdf30bed9ca29b05d9bcb81f9b3d210c40916158800b0d639a63016fdf778248893be3b41eba1290806c51e87cbe02f04c2d111883f2f61ef3d43599685f019e00528514434609079a55ddb38e86ca81de581316d4e1737c06ac5f8bf843f7a28dc8e0801acd65ff2f13fc56401839543ec2ec3f343c99dc0d960126070404e394fd93e9715c0793468edeada66d03f7ddd356dc1a6986567a3fad40bfc164fffaef9b72c512ee879b4b134dc733da5ff960d071c70ad01088b7a486db745ad047a2f2fcb550850a9dfb3624c4407f4014112240b4b0e3055f31d86aaa70bce92c32c09d6c12a42e8e931621463050cffa2f8b9366963f81090b5584115f418001449ab406934f4320b9db5a9f6f509c1173c010e03293eefa198c821d3a908de23ea46f30c25d4e39089e751e9c14e40f0771e35e38e6c67f590e2aaae803cb7f7dfbcf1eec2c62d082b15d0d8bff4724fde657756bd0866b31fb07c3b958488dd45121893af9dbde13d9a4c5d0cd1cb7689f5b968cadb977b9351389a7f364e736b78fd717fdd30fdc4d1fe19fc8e056d59d6a794a18e2cddf9047176526f56c91d534282fbb22ea02018c9265f733fb31cf79368ce1848715d87588c6f6742c6fa60a113647f160d22c21947c05b91b9a20bf6a565fde0cb16fa9d29e99f0f812829cf39aedb1a979ad7802c3b593dfdc0569edb6e4ca64d93edb52d5642f99d79ed57e662f9c71d9b1ad13ae7e86b430e6b85a231355b494cf563e4584660aeb44cf7d25b3a60a8699534e2c57fd9d71909d187102e9a2f207e7c2146603206720ae1c1b43e226af1bffadb4702cf29e7589c6d6cd507d2449f95b80ec73d2e157bd57d6275851bff0305abc81b0c53e38d358f1eb83b8792854f37e18d38fdbe0a73b11c2202861c6aa2398e0be6c275d084a4a3b8eb13ef08ca9311dca1498dbcd5424fc1d2aab841bcd3df4405ef3f92e1254486f60825f4b27d4a47b83130f8000e4d8a5e9ad5e25d853e4712b8f7543ac9154f79d6463782c20eeb08052e53a32f2fea6cba5550c519032724e6a908cdb13c035f0f3493230583c6db7b949a383d8d6b365ef78c400a629e941f1be4750ff626c59e67093db851d3e4f6b9c8f60b024f075ef7de902a872d1fb6fbcf8a77aafa2b5ea730ecec49d0c746d069e56bacfb536d9f303b34af345a62dad7dbe4dd5f04c145e31cf9bd9defaee6cbb40537f0c2b607cd71c6125435af97d5ceb6eae7d4ffb4bf6068a0bfa3527a225b179360f14146363aa3c7ee8a4e0b520fe60c8afe809f2c2629a185a651af0046d84ba1e46adacc7353d0d5499d3f78e88504afca34bda60acaf26bb451932811a810a1686d49a2438926a7015236fc63543c1a346f3db0c85a995d4a5022c6907795ee7d98883612311aadada9bbcbb8118d13fd89fe9b0c619c871038be9d61bbb1444789904eefa20c2a88718f1cb9548aeb2770a644f27de1823857649f67b5141a720a845c3b3afa543f6710d1acced9e06846de5ae00aef6708928b5a2b1ac9b28dd5128f13c0a1cd7387ba5eddb1babfeaff34fbad6ffaee344c823d24d9e853e8fb25dc22511d9cc9d8174fbaf7e0f3f301b64d68a901611467469151ee0fd2f8c9b70004d2b796be6886d441c478dd9e754a674a8018c8b91c1e6a99072f12db9a8b84afa90a45b09c0198feba5a489da4403f626a2cb40c351182c831285d2e0b7a6e347dcca1516dbce3c2779695ba804fe15856906972482fe9d5323052233ef944a07cdcaf1ea74b627792507a3aa90126657f5fdcdf1c8e99c6f59be4ae2ef8f8f698129901b2c5e9cab76bc87b675430e1128949b3fcf44a99136cbe54feef90e12e0d65acd53cad18b93a9d93457736513a19a4102ce43bc64b7165cbf066e71a84d2ff835506d48ef2a8a1c8c9b860716faeee0fb97a4a6f57a10e10b8b6147ec75448e272cc92a4322e5c49c95b67aae1a629d592d87c16b2595f309dc1a6d063c241b5f3124ff47568e13759bdd903fddd138caa87289a3c5142e1aefa37d30d4de14d4cc246f464d5fb00984f1e0ad08a1ab351ac4bbd734ed595ec08f5b92013a46e6b11a11eab001a82125dbfaf30c584f4c0d0fb03d11632f00433271c26d20212d46c66c77e2f2cae6d2acff70413b824a3b676e6ea93748a28c28656021d8d989d7002d6edcaf1cad7895a596a09666d4976781576d7cabe1609d9c7b6e249eca52e3c8adaca0cd886db0b815bbf1c770c1009e11e32866bd9c13e4e7b8c4f2666f909088dfc8bf717b50b3e69b3be8ad238238107394de1702f8371e174193b072a02466664ac7665a557c343e1c901793f0b79be0846d98bf086187bf5ac0492c8c00d31d9078b15fdf2916347422d5accefadba943dca1cdc5a4103f360812c38beb4abbd440372a75bfc7e2d2f0b22fc431494b98ee15e296b02142643af0df07ac2bc991131a639c66851655574d1eb0fd4122168df7e17cb1d5ac71c6095838f618ba552579cc32d154015dfb0715264fad77919656bbd0274b433febd79804886c0a79d64e4313e5254fbb4219cd7250cf42303ab6e2c5341160d222be02d0eb8eef6d4af03bdb4f53a9dd515b0a7da37b61fd2ccde28e20695843919ab0d5de3a86e496964f7ffc3d9fa5cb2eaeb8e269135488c2c93271e715326a0f20c5ab02e83cf694a29a59aa0289a54de711fa094b3578286a5a629503a66601beb01d17c5721ad919dabb966bfc8ea4d44f519b8ef6811e88bf2b4b79f06d8c5239d0eaa70923d09480843f414c837f53b4a02036765a0ac34761d66e0adfbafaf31a294a985a00d232b16dce5a976fee79034d8772fa633d60a8d762397bdce762b0c74aa6304dd9f2ffc753d8e06af3fc8f3109708f0536a8966c3871160ffb7e33814f1f15a30424cbbac6a71cd4dd8a871303a3ec4be15f0765834f1a1dd51ad4b00c132d2cfe8bd2adc043622ec5507152f0246086e724d194301914c5e73e18b885892783599e8ddcc15102bcef15789aeed07b79715514b74f9b50c30a3d57ad8ab3b16c800202a6aea5ed500c4e0be6a68ae9dd3e8acb975a7a5709558d6df9d3919c23c8bd47932fa2df0c10d7cc8b240c0642be04908357ff45c456bb7144e5b0c5031bbb88b9f0eac5137a85e7b822907a399c03f51cb084b07fc333c6516fdffad464d46eaa5c6d382de545310c8e7bb99cc8fd22bbf8ad4c80814c6d1f8102eee8ba006001ccc55e6bcbde4954d62fb95a9ba998e1f06aeefe6d8d0b9cd53bf4a58db1a25553a360d760a8f61580d256212ae8b7cdc2685bf2e083ab6db82c794b047bbd41a1c2bf2cc18af1a2b1b243e402d1b8d245aa13ecaa51200c5420bf8a49aaba7c7bbb4a917a7eb281d16745da9ecdab2d58023ef6023cefec350d6f4a3bb08bcc5e0132db05a1a52009d124b8009c8d40ab327fe28a7c13fbc6b3e09088781222b2c68cc8106c471467a0f97c9ad1e7b7295cbbf3e047236144a1afee0e8218a1c3ddacc4ef6b590d119d1c87c3b0aae95d819db82f45716b6adecad2cb9bf3f1e4f35214daa7e6ad945eb829b5001cf370d152717f1ce4a6f153d7860441a4653c4045adef470d58e5f72281be022c484e6914b82b7e4f26400221df4b0de2e73272b204a4f8ca523ec205b2d5a402f70762879c727cf48f7a90fa00e9ae4038eecd37ccb32cef5eb903f42b68cf88adc86f4fb901ba95002e23dfb9e22cebde286e20fd0ae14368bb856e901b40e754ea0b472395000fdae4f808d0856abe80db6ecbb9a1bee2f36533fb505e4440b15e856a493b1dc0a5ee421bf135feb7aeabafce0a12305a1f53d8f89e569107d96707e8d373b82f05ef65df8f02338aa42ad8ea5dff0bfaca3df9a05e01be8c42f30d6cc5d1ab637e3ee30c8b49db4acb6d79da08e22749f2a09da1f5fcbdfc1bbc01d059d9b8a7fd01f9c2679984df19cda5eeb81779604ab7f03e28d67f0ed432e12681332039dd22245935a6005eefe30be2b0e9f5267da3c4edb21604c47da12f7de3cdbdd91b203f1bdf881bdadadfdcbf7a03cb34fd88868e582b9ea5378d5f2cc04820b16e9090db5e0fc5087a28fde47675c54e719c0c772f0a2704ad8e0635f7c037fb4712fa282de4e9b68d4fdde208862c7dd33c1164a54720748d84b70848d53970ce6f8c15740070dde9453e41f92a3ba5a80c5887b52d0440cf64fc201483675620f9fee072bc23654fd592221b24b92a89ef4b916c10e5f5e0cd71d17e6dfb4434c5f5db3290e30ecc1e9de8c46a1bf08776e4b67d88e3cd7d7079523b8e6e05de14a1649ab65f2e4153480d45e46ea3ef278c8cb88d7b8502a2d63f209a2a4f7813ffffe92f7cad8b1772811c93104e75f600a1a7b91a7f9b396c52ffbbe2ca89e138370df32d9f6e7f2f245f3f39cd809343e3a1ffec9582b72d288701fe2c2c4b294de442f4e03f5bec442417b14d8dae82734a3ca2f9cf5b244891c9d0cffe3760ed8d83ceb4e712c0f6ebf3b81d76fea8c5b92291fc37e836481eecd28d0c25749c330df6373fbdf9594ef1be59fb250f2eb1607f5ebc437d8d4734541f11a7a7c264bed977f0c3a90bf527bbdaec214ccbb7b8076718b554df7b7d063a4007f4b3fffbb5fb0798168c0b86134ca6ca67d2047f8dcb84232c3aeb1c725fbef3107d5caed1bacfd958e31bb69d13e2d0b1b7141ba422183d86ab04c91c1792dfe0e2f60cc6f708891842b44635e56dd6085c396d24b3a5578de406749e2a099439dcab46f80ed412ab81ea6cd7bd0c61ab5405e8a68486ef8da693d4f40cb60408aee801e488676c40c806800f67eb1d87800b29e283b42918d11ca79c03b1adce81ddd6573634ab9fcee09914d15da5e53be8c7d34321f67c3cb51dea4fbd7ec028d284a2d871c5826f46f157e97d20e0dfbe4e7c883080990a2d9aa7b757e660155c2a5a320b8dbd444b47420107caae53745c44832444df8923b3c91251fb67b087da382cbbc8c1455008097b3eaf14252611a828021c1b1c2f8868399ea89c501fe0605f0d05f0dd9bb7fe10bdeb28d6fb556cc88d2cbbaf2f02e93ec9990b8117dcafe8185403b8658ea5617c2f80a1ff1e569134fae68d05d3eebe6879e050dc878d49931cbb9777feb2d8f400c2e4f0225d518ceec5bbdd34a703f6b8ace3d4f0842a0d0ad23a9a7d48aaf5c652d44736d0bb9191bc6fc424914b088cba10e10024151b57e647005c53d8d267c6e397675628176b2b08e9915da58d7670916c513e107c658098dc7985b11144c13a482be3521f6906327fb03fbcc1da83d0716be70a0f71191763d167f6b5e30a51242fea4c9331959f6dbc1bb3e2ac1ec18519c82339763a557b0ad238a4427416a61c2a06394fa231c55b8be7d383090253317099e004014e71d7d4872cc599c553b13eccd4ac91f9f4e575cd54915d656d150e679f9200a689ad9b6a4c5990344ea6a5e17cb693fc064f404d1eb4f4b2520bbf7f0e3ca7317476eff74541210812fbb150f94591b7d87dff26b14e9246f694c54dfd9f577eb44b0a5cee81371693c5728c0c83e54073a145d1567f9ad20f9c087b2b988a3a6de71bf14c73d8c130379face00279939d8c7483ee96b67e6698e01c422618467f27e5aeb5f508e3c18bdee330ee3a9f882dc7263e810c094c04eb290e899c1e9c026435aef7fce8a5735c4908fbf27b910e64570b1772c7f04fe2a1a6e299d4c39ece30e5637a800e65761bc3be72927be99a638e022aeaca1deadf4aa24e81fe88e1da4ed70324701fd06dc4ca0535da1f04bfae723e19ba75c841e69cac0225c2b2751c65ee1e827e94a79943f13ee7e1cc7d6f958bca7b8e93c8fd1659744b2df85b7672207410149bd4500fcc94ee1f72a833952ac93e01467e92204a28d53ad9a6eb5b085bd974a9aa03c700b18c07e1d448d2d9591dec1080e26621ccc906abf18d25749056adc0a5f70dac52e0827bf5807dd91833254e0e38c9275cfb066ceb97f4f66b4bb8f4550e8c2de178fe4e538f65a984d72efda30908b6ba65df4e375b9a20047fa38739b70fcc71c3bca3ecc89726a6b8ed515637818ad946cdaa2acb6d5c6d12131f9249c450d615696ab5813ca4a1d81dc3101a88b417758b9263d33ce80c31b1976e6560efafe488255bb2b31f559af3df13f80699be85250da09fd3ec909c05b399470d5e04a1c783f617e653708b0524e4277f7ce014f7beebe2d7e978b4e284fe7986d2221e57e1765fb77129a12602f08bbe4296a09e528f516943e2317a9f504acda248d0f58969a8b868c7bd7227a4ffcd364558835928964957fa12a1454f1f74254f8e8d2ddfa0bef682ab7106acc11752a7a095b8ec83c54c9af084e91fdc65c48f6a4838cbc6d392e8bbff2ec47b49a13179d64b96b7cb042d61d4c06043e620c43a5fde544e11c47c711f21b0d24456cae69fc141d455d204d2898580779d4e5245d504dddd8186b152eaa8d747c75672453efbfe301529f0970b5e3428f050188d1de5ce7ed4c8932936086e70bf3b5b637505cf967485014faacbd1e1d8c87d0155b3126ccd70691e6a73734f0334b13839b7fdcfc4120999ebfe86f4658b95b6f9674878fcbdd204aba500ea471caf8500c32877cea87e50d736023448fd802a601e165e39e10d6651f3f0dfc259ad2f4b0e9a4a910e1347ff360b919469c4c90ec36ac4d1c21445dbcb807b9df7b778521c686e0982c0cbd9cc047e63958f9807b70a42bdaa8c5ee03857160a19fd6fa7b1c8121334718116956f72a82923de09e5271dacee104364e00811927ed6910c0503fce3174a527ec85918ecfc2aec72b5669ece7c8a9f1eea8ac4680240d83f53e74fd24076788529f464336ff1f0c54cc3e04bf9d61e6858171e9a226d13116dbba48f65a5e8249d8f1ea17a87cfe638a4bb44daecec6e8d9583223157a04aab97cd51922c452628fbd47b2859292595a274a594548a924a5252094a2a41692528a914a58971f001073fc8c1071d2e93fa3234dcf4b2fc9f7fa92e0b22534515a6327e8dd23e5aed28a8175c74033a26639e5a309851513ad29e01b191d9befe3dde5c6fbf7eeb65b707124c38ae3bcf3197fb7b7425305cf51dc800c5510c3a44e80f06f00f06007bf60e3935c9aef35d34fc58a129bcde92d67b51f4afedbf8af66c9690584236217bcbbd03b009e909b70937c49ab797b6cfc823e26d18237ec3329c41ba48eb5dd1fa6dfb479a39c49145a277ed12bae855cc9f0c65d411c7aa3ef49a7ecd6f7755f18d87af4110432ce70e8a6b3ad7e01b5ded4b51971979060e247143b6ccef48202cba9c6e87ba74354b9b5b574b75b53c69de8cde90b4e7cd2b8ce19338881f8e0fe39847e860412756040c23dcc027b602026fc09e3b1de9c8391055584e5237fd33e92f340bc951978444e5a9d4554cfffa0ca21744d595e9d795b75e2faa512b283cf66d66465de5add45137d54ad5acc22696b36eeaaeb0ca5de1bf8e5f830c3bf0ac1667ad525c1fbd348323cbd4d6bfd6edd79b42d930bdf16a65acb9f57a572b1f55be7215bc825bf5a63bae9ca5d69bb0de82f5a6913aea75e57d95d5ca4d47ade09895abaec2b25d263ce2c828155cc795bfba9ec29f0fc47f760b13e0bacaeb65b880995d23ea157f3e10516fbde4328c71bd6219d755b08cc96b4d6714aee9ecc2b55dabb74cce9253aac9aaa67c846bbb52708d166f71d663748b3b169159f5b559a8778bd58275af4645e1161ebdd7d0ccc263cd4d6661f05e4cb32e8865c5630dcdac7bff50ae0da5349a513c5b43a928af610cca1b05e52cd53b21d2f4aa52bd4defdbe1c8a973adb1e271f66df5b91066e6b11ed552f94a2bf57a6736a9742d1396e9aeeaf078933b85ba32aaf7a9a9eb952bff7ab1cdcc262cd357bd431a2457a9fec574ab2ec44dee95d7db3aea8e3832ea2bd7460bcb76a1c669baaaab48d41d53bf57b963115935441e599ec2359d5597edea3a92b3aecc285766efdeb126b3fc77c49159b08b58430db829eb32f53393bcd5fa8aea8e38b2ea1feadfb7f2bea87eaa2fc318d35554afe34d5eb90c636866d930e1b3bc6b3af7595858a6751219ae376ead8c359d5b78bc99a10c17a641a3249334ed93a15e6504f122f72461f977726d9ae36a2347a461359d4f3e590eab5b28c312a9f2e47d6b9a9e1c0c634ede987261032afdf6150342a70722744a4f0410f41b26e28465ad42449dceba140b8f774d99ad9541448d37b9f54921b63ebec82c3cba5478057f726e2d6aeda0b4d2198f46555aa3503d71664c05465af9279b545ba877391a3672b5d5aaef74884ca0f92ec78916aace1aa642caf39c908695c28aa9904aea9ff765ea511f6bc5dd570819b272a9904b6918f5a6efa6b56beea01f104459bb50b862994f6eba2d84e5be2c0ff1b5df22cff710f922b3a4b2b66aad3351cee88cbe8ebaf8da9a0bc4db5a0b550571b4b5d1688bdc90403e57703f98a3b56bfe8af9c97a4a7513500b65cf4aa94c2610bd205de8a44e588274e16614f2b435eb727ae8a30dc3f7d19e817eec3890e75b465d4e0f5d058fddf7152c3b85522d7c141ec58a6d8da3c92a107df54b77dd7e76b95c47fd28c223cb1f459c5065f9a3084eb635f932ab902d3fed1a92e76b7d7783b9fed45a15db366bd76c5d7b856c99b219d439a6903964d626d0343269f68acd5e215f66d4c512e9d7bceb7d5da07d498a8513fa77fa0ecc98ad4901a02c10c439c35336eb20ed9aaf0deb99498a0d6ad77c5b20fa9a950aa1344c67edf23ed259ad9d8e76cdcfd98f77cf1a26ad4c6c616b53366738c4ce089166f9c30b64a82ea3d8bc97bf1762e582b4666be29841dae5b11676119febe564ed9a475d6ef623d28f9cac65f4353fc599da218eb6c6725b932ff5f3968805922fadcfdb2d48182b9fb75d902f2a9fb76190304c9f2ad3cdfd5697db35c7d1a90af9d29f6f996ce9ce5448bbd8a7f2bd15c8e057774ce5d56ab472bd34226203df9198b10fafc4588abe260acedd7c97c25dbb527dff167604f3686b63f784353276545420079152c9bfebfef7ca76d18248e5c612e3b40c8996e1d4ec11c4b1565a5769341c33b67d4ce1516c81b9513895511f414c85d099fc1903503665f9630c4fc8261755892021cf773bdd13edc2628b344cfe20c293a72c479e79b4405d4e9e3d8b421e3b9d3c817e1001ca63e7449ea8da9cac61638ff45c9086b1e4b9c2c972cbe48bcc2e39541f41f0d2cccc2399e5355d5ef9a7ba2dee52a961c242f490bfc63bbeb1c67e57b46bd2ea0c71ac34210dabb1dbac61dee7375ac33a709bd5d7d81a9a4726ef9b706d6320aebeeaa79cf491a3997cd6f0794a932faecf166751f9f83d41c25059f94892475a050963a5d2f27cf86f756b58ddbb495fd43f7a73b0defac7b1dc7fa582ab2b3abe2abfb7c57f598e72576e5269aec7e84d45e5275f59f9eb75e26ac1b2a2426385779c4e9888109e3c18c74d0c073d12a7772c46b7ac83342ce5f33d932faccfb79086a9e44baaf5f14b8284d1fa24e9274818a8d3d9d73536f7bd7b9fba3feaa2dc2447c790e86247d823478ec47ae0d6ef55fd3775948b7adf99c78da3e519a3576f5d9a1a1175696ac48cfac9e8e336b367b0619037ccb3ae05922df3ab6b6b56756d9176cda7ae0d922df37ded4ca42f7db4b59046e31d212028c538be2371c23d667ac8a61711a3d5bee48e2479b4b5f1cba325b5ac248f2dab95f410b3b13866ccfee298311c481cd1438c080dd0f710bb89c1ecd000fd8e10de40076e621447c7ec3d4c85ccda2573c59179caa03cba40429e1613c1e10d6c47e2d387ba6c7835ed18c4d1c55df435a76c9bc9d7fc364720863c3fd291654a887a3e4cd13d58c002167c98d0d9d1e1a3d3c48e0e1f9d267674f81cc1c7e7c72cc86c26fb21fb116416643693fd90fd0812643693fd90fd08e2e3e3e3e3e3e3e3e31364e6230bf243a7891d1d3e3e3e778a3bc59dc2c727c8cc4716e4c78e133a82f8f8f8f81c41f6c3270c3e5310274d5290d24f4a19cee8f20c48ed65c7bd93348876b38bd576d12beb8cd11c3de87673f4a8354a412179d2688dbab4983bcb6e6f65b34a69d4a567a555340e912916fdd41b4aed183ea932a6e8c440dcb6188820c7d1422eda856d70d5d11523dae807c53342f140f1a07ca0783a4abbaeeb3c97cbe5d9e0d15ac5ba537768b424f24ee50112c793209eba7312d4713c2578077dd7293ad6e3c12755461550ee99e915fd6a9a9dd95910540b221782a1a212c4d1526a69b971646fbb77edac396e0ae26867b9e61930db59bb3e991542cbf6ca39d2f964b95f473a25da8927f78987b6b59c87edb4b35c6ba702b24d90f8c8edbd9373565adb9e1037986d03e9f7d1d6c08378f4fe75f70214c8126957d780ba83df150d0b8202d1be9f8f160a43f0ddc12e34737747bad139e2d80979afa10c0fbb881428d3333477519edd475bb3b533e4becd137f34d93283fec791eccb92d24c0b621f20681f3ee80b67ab3f7448780a14923408075aea5dd21c3d46f4cbc1692214fa91d52debf08c5ab25619e9570751411d2028008136cfd08fca47f5a35533fa52d142ac92a97e5440135b3088634b460a0ad2affeb76d1ce775225147a9b53b997b27459f3fa2c71d0c65740fc1d0d7a2b5824c2ba50c47ddf250174ba3f1d07828d875740c2ba594d68ffeb3747b8cee7a205fe64b29281a8d9672eb4b77f44204c3d467f8fd4bed081d04ef98da915129251a8df65b1188b55f94ce9c1a41efdf0cefaf6f57e670e45290e7abf7fa47e7b40098290e02cc2cff5e8800b80c65047177b86cb887c79bbda3ee086614eab55d426ff9379968588d903c3f44c34479c6e60e75c9d1383e32b0429e9f3a1af644bbe408655cb041bb8470344cfac82048a53e3838384dc45e88ddc102f051a4e74af2ccd4458814aa4413aac4446c8952486a28b58c5c80df696ab81c7ea6876c53f2225f686646d9e65400f9423343b34daa5dbc5ffb5be77de088543279bfc4742a793fa512df5fb14e5052debf98e47d959516ae57e97d00d8307a3f003780ef0b0087ef7d1de48b4d6907f9621382c9179b7e215f6cc001c8179b0a43bed88808205f6c381ee48b8dd8837cb1e93247225f4cdebf7c4979eafd1ce4cbf77e0cf942df3208d9c5f598f07248d7cbe1e1986e67a4835abc29b7ab795294ae37ba9e0f8f87c7d3aef9f07a4f783a3c27668e68f2f9409443f20d4f7da6f49951f899ed33fd195a5329a5d1656c506a045ec6162981df652cd0e80b2f638980e176195bfbb6be8c1d423383328e36263fdb697a9c4191a1b131c9e26bb82c7a8c16c2ce7263118f226c73ca297894b14666660a8f3b42253c764f8cf0b883009d131f1e77acdcc6248778b431c91b1e77a8dcc624573cda98d470995e660665b499629b536edced2840017089692621763525c47fb439e4cb4c9546a0ccdb69984c4a15a470c2092c74e878e2091e1e1e3c7cf888220a19afe788140d93f1a43872c4489ef77cbc1f303034ab3e33730af67672c4ff9b429ce0e0e0e41d3e93f2191d3e93c36770f88c003ee3e233249f11c2ce32e942481f9a1df0985f6e6392533e4393a2c3c71d2e63001d72f8a8c3651090030e1f73b8cc017010c047d8656204e0e2a3cb6564b820f9f8e2320978ca69484e1f07701998a7e0207aa021fd84471b934cc26310360999f411c665683c881e8e004d21a77cace13209db9cf20b1e6514f020e8912359e494e3f0f1e532351e440f47b2c822a7e071e6197487bee69fe2e2143be935ae55c0b534ae4dc0b531d722e0da2217e6ca76a52ee31ee01ae0d21d4b8be1d195f1f892c7c063cae43de0514cc15d4e4e14392693125164adb5d65a6b794a9667647940cbf3599ea0a0a0a0a0a0a0a0a02019b72393c9242d7332994c2693a5a44a2370e376c2efdc4e4aaa3402b91d1b32b7938253b884477804b99dda56db6a5b6dab6db5adb6f5f4f4f4f4f4f46c3d5bcfd6b3e56c395bce96b3e56c395b0e8d46a3d168341a8d46a3d1782a0f0f75e1a184477184c71488c77f958707dcf5140063151c446541414141414141a9d22889f0b2bb26a3322aa3322a9b30f06873f7bce09602a86103c0f205ee1f1dd43017230d83e10e82d3b01ca60eb885e4346c073c71c07dc5ccf3b4096f2691d333a4a7a7a7a7a7a743bce18a694ff77426781437118f57428ca273a88b8ca5f0d895f0288ef098c2a32b4f9af743beccec0af1f8a770e7028fe24f787c3e098faefc770ef932c7491be969a44fb631c9a34d421e1d397224cfbc7c06fcccf799ed33a4cfd487d348c31abf18c06bb8ecf249694abf86cba9cf5ac5d3d8d43c53139a4c4a3e374c5373ca33a31c9ea6469405701a9bce33d348de5ec365179f1fa6a929c9333de4ef343560cee134e16b6ac6e113c43435a50c3b4d4d28ef701a1b2ecf4c9ffcbda6b30ea32e8d0e7e92b6d3d474f974d2e70ba6a949e5199a0780a96cf12e5bbcd370b2c57b4d9737d9e27dfe850bec5ad9e27d87dbc916ef3a5c4fb678ff6e48b678cfe17eb2c53b0e17942ddec31bca16ef02b822d9e2ddc51d5d51b67827b924d9e2fd744bb2c53be992c816efa65b225bbc9b5c936cf15e724fb2c57bbd28d9e25dbc29d9e25d7455b2c53bbd26b2c57bca5dc916efa9cb922ddefbb6ee896cf13eba28f7b2c5cb22abb0942dde05c051f7f51beed8f977f47646b0856506006e031eb70300afea69f818f2af867b0130f75f7dc31a5e322814a221ae99b986cbd0067d0df802e00bbb88af5bb30c7b864580b11e145be0e60d0771338b0baf2a5706b1465d7c98cd426fe1039db15c997da02e3246fb91b51c5b697157f533a6f2ef8548b70ea8f6227238376a668e868dddc845c66233d6d5ba2524ccfb14572061248102090bbb114cd8f7e9e12cd1820c48d77c6591e7c30ee4f9ce0446e4f9295be6730e5162f14b99863c7f0090000028358ca0869397085e2d978e8bd522042d562c20603159f9c08a4a85099554ca122928ac043edd24aee9392f41f1000ac9091227a556075a24560e96b83a62353231c244a4e2802a4c81791e417d7966710ae58985c9cbd3484997671a486c9e68c893cbf3469098fb19902fa33aca7d1bf922a279f631205fc2ceb35f235f66275f5db657b46b85624b53b938662cf47959cf3c010ef2d8d582c0208f96265f4c185b0ff7e2458fccab77391d132812684627a7db7a405d42db8b34dea14255b0ecd0ad3433ac8e58a3410d93355b46f9ea2398571fcaed743a27944169770f9d4eaf4e7e72655ecdf4c0055117199336c7e26c3dc8f328285c1075b1b49e0963abd182f2a43da0489228a5924646e9208dba589e9a48b76f825d375ff3351ba7b3f9a09ba21b8284a1b45a97adcf5006d8f5d0d77cfd4ad766e382546ed6e5e48fdce873d3c939ed40dce343c35d08095b9d7c7e031286f2f91b1306b7934ad530c552f2b0e86b1ef3d0d7f48e32fac92dbdd2d77cd7755dcda74ad1aee9ddd9f5f4743d3d5234ccf3f1aa87aa5eadedaa3585723b1248d7fcc9ed42202dcffd3cb733617439f386f9298a5309d9323ff6046ad7cce988ec083d46f71162ca535d4f4f57eb8874400d93200aec142c3b85eb28e6fe2ec3195f5fd1e9951b8dbd771cb124d038ca63d763b3e5fe0d208c77745c34c22e62b7c440cd14d7d42c92a054db4d564fb19efad86594a3b4f04f7e6f6419fafb7dbbe16768c31333fdb76dff2e08f6b6f5f710875886f7eef85d544abd53677d96238bafa5ede11d6fd8d84ebfbbdd4e013ffa97027e7410e3e8d73bc2b25d1b78e3bba91fca100133e3c7e8fa52c53535875c98007c2fbc21de1e62fc10cbe07b58e6af35356fb8a6668c6bbb50fe8b7eeb8f826afd048f28d653efd459294a53754bd55356eaa81a1457546a95c2aba356ab944945fd53a1ba1abd31c48d14a5efd3ad554f89dff01613f270c4fef618949adef5ca985c3c0d2f57932bd326576e9476ee2c7edb6e1286376483f72ee9fb05e21bd4c3d8f43609b1cdcc15cb98d0106ff2cde42240662f26f4be30ec8f2793300137333c0d432cdb55db15be82df650813e2b1a6880fcb766d339b983c0615af921975baa30f5974d31d6f944c5c23651685b77ebb31e1ebbc91e93d1cb14717755863d228c9e206d650c626def08e37396c98e81fe9dad48e48ad5d40a56f1fbb9a86d5d42c7e7e881b0d133d4cf4cbde8ac69b4c4add034f221df454218b65ba67ba271e44813da32eb356cb61e20bb56cdfdddebb76114fb55a7dff0115e7cc18f7c60fc881440f31ee3933d65dd2578c2ee580013c49d55ab7a6a30e5ed20bd19bd974673eb933a75020e8ddf4bd10276d5e6172d23db9a96b72d9301b9393c21a1e9611bd8307bd8b45d066f41ad64578ca4e610d111ebda79eba29ac118a5e12da10dd6493b3ee0c4a96595de6d19d41c9ab8bd7c3d7f1844a8ba10dd24978ce421b23f87924cc7a78e7e9e049610d151ebd8b172fb22eba7dbaed53d359867491443a8b84479617fa8238b68f6c0f8a4ef2482411ca43e1f9e3238aee9e868107472b9025b246a3110b6cb146a3110a8b3562a1843246a3566bd49976d08fa873a10dd33d3c0aa1721117da106da37b781461216e322b14893078553ed6c8421ba2772eac310a71c33a283a0b8fa088d50223a38723203a8a640944c7909cca12888e203aa4c8aa2c81e8d091c1db8314debb5e08e37de5b2795891300d10f37d203011fd898998af2762e21ee289e857dc83f4f05d58433cdd7519d638fd5e8634543f6119ef2a51140fd260b98865bcb3bcc56334c9755b47bbecfbca9837e2c863ca55dee2d200cf82c79b0cbee4d2b857e1f126df8ff03f0f24e1c7e894cbacf21bca5051b91505a384334623fc99315ed1b8077f71f3f8782ec7c1c131c24589c7a8cceb1f3e57848282e70fc992be198a07afcc5f0aa8128257f4f07823ba63cda2f05f68037c88c7119eb3c7a0a2cb3a783bac41ba0782e145e00c0c6d421ba297ae02ae84251ba48bee5d51cde1b9d08677d2c13bce0c8667fd2b5dd6ed1fedb22fcdb2fde9a58fed336b184b489d954ee24b17df228c39fdb43a5de6958dbc8a295d7555e926df64109c3299138ef14ebaf7506843f491771105afcce29539b4215e1443baf7d2fd5a843258ac95957006088a0731eba2bc74c57b7824e139a45df6e204a22f7b708640344e0d1520f3484d425e10c7cea93111a4436be2c74ec3c629cb4e346c9c43b20d6a1cea6271faf5b336ab8749aecc0c99ffbf4306c85863d93b8c935683846548f7ee819e17e35d8447217e129e3fe66c0e69d831c9ed6350945017ec556f5d9bcea77f533683cc5910ef8ee0bdf0e3771a5d64a261f62251fc48fc0c3d32baf8112a8cf12ee211bc7719efa2296b979599a483892cb3e7fd5b8126a10cd1b5e92c3ac9ce2091fd0cf1a28f040b6f6d4ec364288a3e438f886ec3bb08db745e85a12a54c98035403c67edfad12efb125ae3940e7e1af16ec1db7f2baf66952a9c41fa0c7d217a0f1111ed3ba799b0de4d4219de0cfa3462dff61febe0b59919bc7783f0ee9d7569d020c2af68b8ba37bb452b4c81cee1f703517599bd9ba8ae52a5ae0a67a452a4cf4c3a5d66d457a78be10c3d926b9ee1e9ac93e9ac7086c954f2994bf038330996215df4f943863548a7a10c110b8464d165bccbfc61fab2b73ca07f21db55c293a75d2423fa15bc63cde04977ac99f49450c678c3034ebfe21cb277201d89c7eac1d33026c4a3178392ae587bac68cc1c7ee6f0e01d6544369dc1dbf7ac69e065261d873248a45beffde10ccf137d66d1259e3eda65dfd32efb91bde84e9f2e8841ed321222228e33288fb327dbcf20d9b01d7b1e1e1e1cd7c142bca3dbd971a2bbd65017c471e664ebdd7e32d12ed20707072747cc5e7ef75e9b87efdebbe621e7b1d0bd83cd43e8de1fcaf0e40f385cf4653f314d03e4e9cb7ea60132f6bdbe085dc6faa3ab7ef53e80beecbb585b04d097fd2e0f44eedbbf873e4a59b677fbac007dd9db21e8cb7ee59daebcaf47e4f00abc8c71dff00ac42b1fb83740c6b80311f34278e5e11503faf5407cc6be09ca1cf5f432f421477fdeb6369813cd757777bb6c48b1fa9b62c7e0b3d485bea32ee0bf908b4eecbab993ad1de72c5beebb29fab20f5d79bd7b13eb7b13b3dd12a28c75efaf36ec6a9775415ff69d1262ef50171f3a87ba501ff9b2b72860827d411ea94f0cfab29c0cc4d50fdde1d6a12f6b3b27db7f3d1065ec062708012726633dac8c49158b65e86cbb995d75805383483e8a25ab8cb3bc1c3f1b13141106e9234b9630be4b2ba910d4b46e9cedbcd00786a291482a9194984ea894ca64c56a9da0bc3d1096a089117ce006d265cbf6194453d3e51c3436a9fce159d3653a462077ef8b12c2fc2829804141396985302727ad1d98568bb50a6158ac954908b35a999420f755218c89892a15c2a8542912e43e2a8449a550a71006853a89e074cadb4b421893a98424842929210141ee9742181292d207604a251289242e218a235108331a899210894230840943d0033020f821f17da10ec084425e17c2785e7744ee3a6b44b696e3000cc7e5edbd7d6c1c982d779f47e44b7551b3902f54b66c87a17462215f5ab6a460956f05d4a1efa261d3c8f6fe52c0ef85d8e58902ea9d5e0c5d3ce992a890c746c144c124b98d436a13e46e113b044ae41b46318f44bd44ee873d82dcf764d0efdedff875f7f381f89d82ff6a55d121ec46172c53b6c8bb8b8685f07893bb6fbfa10c151590bbfd767da03ff30cca6dc428d638243a9f54c911fbb263c212827033f3080d5a14692481896991f06392808a1d0065122aa2f871c46661b1b0476c16160b0f0a71da3c338fc89619dab059ca969056bc83a351921dc896791e71fc6679569c5a71c5912db3822fc4add6ea7dbba337a7e038295f4c32a517a94b7725e55eea3b87e3a867e96b57e9a9070a61499877fa4e821216fae7c2d51cb448bfe6f710f8502803fcb67ddf68d0a5455270a8b784b8f2d1301d4fac78563cbe57f9226b09494f0d595052eed67e7d1d28e9c59a697eaa5d50175417aa8013a30739926ceeae9ee8d7fc17caa078a5c30815874447c338205d487a72c5217982848784479e53c817c91473e311473bcb2349cf2aa75d313a69e248d233739229c5243db2655e74777424214c8e2346dd4a479e1fb7f7b8809de12218e8e2a0149c3cef3df41103e568d87c0a4e4a4e0a4ec3421b13ba772fc6dec3f6e34daed6ceb812c8b1f24a47c559e9a86589d3cd405ced346c24d9419e9f5fe590f040ba50204ad2b36222af74e8c75513799a41be4876205fa419aa072a8e7c1d215d6ad72532fda6043fafb3212e14512c65cbc47d2322494f1221182a0e494fc5998138ae74f43405c1a6c1a2a1e78f4702b12f3b477efe0c195277865429bbebeedb59dbb35b01153d7ade3d56f59b0cb77a3b506c0c7c01008a759d01a8d821eb4ac5113fa21548a061a7880b91299d90e51d20612860de308f22e5152b1b1ad6af7865654a45649574eac7a8430b96cbff406f87f713892eaadf4b29281a8d55ebb6f6e7b423d201d5da65a4b75046e3105bdcfe344cca9c1bd4a5c5e78718a70a72787924a5ebb13c1346887b70a9b4a56c2f95b6add471dcb6955252aecca5946de3e1e1f95e973554f0e57d011d13c48e09a2fcf491e5a50f133a268863d7017549e894203b25744ac00216b060c4d709e996d029a19b754998540281c209995ea984fc4d1e32c8f4c2c85fd3400499de01e48ff21892e9ad217f1504995e96fc6d51e48f037b2c21d38bca9fedc1854c6f8bfc75a01599dee74f76d693211a70e19b49482035b022d32b83903f491b888f2532bd2859da7479c61ec90227cfdff4ec1014794191222f2852e40637b881941b6dce49eb492d9f70dbc6e111b533926ddb861bdc78441f326ff68736b1584398cca1e05cc0ce5884b0cc2e0b8de527f7673f2c439aa5f633bb6a67dfc298f98ae7679e8d3242c1c93d79444732d9d23810473e3e320bd086059014cc9e338a0e88091a0807ac3043dd6ad5a9567c61b3e209dc294b20560cc15aa183ce8a19e454bbacd8095991c467851160156008aba8424eb56bde2a828caaf8219244318aae9425902a74904a2452153a692899b240e249a144840493490e4ea42750b225522a31a85250303151b11ae98005831689ce09386f118e4001e725421a1e84484eb56b5e204490f728272dd6ca44954261d14889af0bf2ae238157ecc9238b2727409444f0c14e1e4b52a99286bdccdc89507c3f889d251022c8daf5f1883ce2a4e96e4a4f2fab4fa6b7b4abb7521dace8a8812c0138e45a634488a28776449801912d0544f0c00c8b9f0ed73bd68c60e6b8cc85eee70371de1bc1392f6b28a3b3b91e5f00ec6ade2ebda4cdc447234f4f2f87933b9c2ce5edfcc9705e5e05d024441f10d0041101edea51becbd47bdf8786c9197b96bf3161d8f769a60bf7eda34443e7c82b6f689c02801cc6398053ee069289378220d2d4ac801f04342c6848ad561efc06df5912189f6b3ddde86b3de2a34788fd533963f30b3f54b2b294ae8ac76f563e8052fa03505a55281171bca54444e99a9d4ac3c621ea25ee0ea4140d402526502c914451092ab59dbed56c314298ed333d9cbefdc495a444308bc48cc2e328e5420709b48b8bf004644b7f93115f6f830d0fe81fba06cc9c800b1dbef725d0bd2fc56f57dc36114bd1c31186d95e3138042bbab96d559e665702f94300970ded226331120b1b5640bf6ae70371fc55522513943f46f06e88794ef09e673fe704c18fce2a41ef13eff8b0026474d8769fa31c112e5f4adac5c46a584bbae626b93b3b534a29a594a658218d2f8f327993372d678b28d82e2a5f3acb8b21d72be50dddb56b4a98ca6c9c6ff543fdfc5cad809844d4cfcb98ac576e24d9ae15c5f3f23d546021051558484105163d9952814514d9089f54994dbdeee86de5b6fa8f03eb3f0b765ee81b499a834faa8c15a733d235cb6c434ea5355ee636fa6fa3db5729a5f4d69a4a559c06eac1030a28a080020aa932eee023f765fdfaf5c4e7c4877bbddb6badb8e5e7c447b6746df919f1c8f375c4331ab5208f7686522f27404510061611e47ecb4fcb4fada39d9dd8999d6daf1bb6333bab28231f3bf8e0a838c2118a14a1f2a02876f5091bf8a8410da40e1014644b2965492a254edadd4d69addb566b28ac15cd772513c8d973ce399b76b78c9cdc5f4e9d928a4294e2705cc8c8978382321e1d3a94f2f8ea9db179497210b5229a0fa2197d858ce0e004b5abbbad6365c975352754ca5c50bbc87ed5b66ddb788288a4dcb3711c27f3d1b13ac4cc2368c4442863dbde75db486794b3715b278ef2104e9443b2eeb4f6f80805d14f46c771765664e401d97247392326463a4b88e3682727f7471ec87d271ad64d0fc8170ee409b3cde9ba2ea7c33c72df72933bcde0fb465e4d1449244cbbbbe594f3134ff14995b1e527f7e56508c3cadb6793700a431272579a9959f9eb7a88e348870ef9d2d5735c38a39537fbf114860d9ff8743cc491c5278f748c74543c69661e4f7c6876d62e169d1328c4d94121863358b97ebbac8c59745a79b6fd69f999b5898f0c5764924a2b9d386210029443a7c842dce064ba9de631c6942df2313c647a1ebe79246f772c8203b733bde34d9e4766669632f4f2f5ae60285ec5f090e579c8f4f2f248c6ab184ae56c5a797cdba5caf85cafd873ca147d4902d0a6ef205c99523c762eda2545f9147599efa8113990784c65871de6bf3e62ce8f7ae6182d4e10987c7e208e24201250c3669186d5d92ed25a6ba58bbb3d5dd5dc5ca8c6d5443c24a0dc2701ddface7297fe9868cd821d7dff3ef0a17f62d8fd1be17188ec853642bc03bcd8ae50a85fa1874297a18dae5d21fb4d34fa3ede78e1e965874722b2bd1c751fde21bac46311127ce8b25d4438c49ee7759e0db97f76de8b99b73846b6cb7bd7591b83439edfc6212a70d345ccea85eeeedebabbbb9b9ebb1bb621db258551f8cffe0bfd0bddf1460ed19038dec8df76f0ca78af17b1485fe0f7180d3e74c72e8322eee80bfcb08cf72b430888f0bf4bfa3e4319a1df71742e04011196f445c2782c227b97173dd1413cc235345f343373c8eb1e5e98796f86f7d08d99f7707867fe2ee90bc431e8d8327b5e0c0ee38d3155440d05b71a8427a49cb34e9a99fbf4dc6bc2cccd6f15cbac62e6b7cf198b6d287093392cc4f69a2d6f5888ed36a4bc6121e66bc23c67ec912347b2c85e98dfb6ee6debeddd5bd77377fef8360858cc61ba51018628f23c04eae5bfd998b9d2cc5c6d66117d539b260147f4ef8ac49beef7d92bc1db1bfebbf6e0b5f1dde2100223d263506bfaec87c7222030c2242c9e449d0a3a1584a2300c49a777a4796554377d2793e9f38e5d9e3554b67c78bc3199dea18defe0fcfeddf41854664cfd8e4398ee0ac63ebce9a3e9f2ae602e53437358433387b1493e464f2c2f7e746b6836e1158d79d1455826bcfdc432e03f111e67167d881fa6684a9c1cfa48ec1d45b7d6747b43bc59bc5d86248fd1a10c09b6c12beee2e74af4d04af479121a118eb10f1ff34d11dbd09289654c97a6abc263eaf4799250ceef0401d247e129bcab98efa77f3f8dec4b57527bc1300c2ffa41d297fde8fbfc27a9e88e436469e54757d2d3fd4ea77f10205dd2d7c46397330902f4c50212e94a1a8a7e288d6eed4517b45f7847d147f1e1bfbb12ad4c076fefaae4e2ed774f2422d1c39bee4a847f20992e8f5a8927b9e81fea9ec07b3aea8227f0f2343383f887d257e228e21f483f90b0a42ffa5a81138d336f421b8917a69447d0a912c81172e6344290118ad02b7a4e2abc50c40573066922d32c8104d1c9b41c244b20b333e43e08a448193ef9efc7ec7af044fda802aabc760f98a03c2842804e45e575c837434e096408105a4ecda02674805000b47302128894d64a741cedadd2209f2cdf75eb485082cdcec41188b2d40844693b12d8148ca0e99c52fe043f9f54f956309d473197742c69c3b49760bf6a170471fe87b9d3ae5a6b7dada95a69778f8f8a2b08e91de84045159eb8c1094210c598172267e2dee7de1c106796ac9864e554cc9629ae4089bcd830ce245f5aef548ed1b202a98a47568b8d83294451ba42262f75b03c3cbc5154c115593e0406b1673314a920489640542045be214b202a50a2039ca3a864ab75e6a9a2854cd1880002000400c314003028180e084562a148248d6455d40714800c9ab4486a481887518aa328858c318600000000000002000243845100c0bc7603142602304e8bb40142f8dc5d576737fa245c5a27c61549dbfa7b3cb4ac682a8318bfc1ad4295a00091fd2488157d7592b4582b5215587b7857085c29cec933773bf7942f20dd0f67e31c7c3dc9c831225567c72b1cdbededd97467d10baabcc4dc3f25f4ccbb52a93a08ccd44273c9ab9a7e15ae042aed595339bd2a5c04be71d010f55059b1a3f2fcfe0b1ed12b068b63a7a6e71d871d5ade9db88813f7abe932571fc4e959e9c4be1b430a20ebff960f7fbc7c71309746bcc4a035376a7313b24a2c65602d3d4dd70bcb5930a7213cfd0db43292124ab060a4cd892838954f4ad3e5f7eeccdf8f7bdc87017a6d424781f3ffb44e9f279acd49776cc7bac931c74a249dd79b09ffd30e9accfd8d9427788e4af7ea23d4b17cccca8dfa88714e1d7d270f850cc8da9cda4d5e5ded6010cf6f2bf40081ff7c48592088a9975929f2da7b4e23caef76cd7761064e377208f4dcc5e055844891b6e42717688fd11452959f2604e58531a4b27a39e5f628ddc985dd6c9d69134a25c1cb07cd20676924796c330d821f6a077d5f63c72ecb5b0a5feef6b4172e4402da646b4730edf89c00ea3ebf1b1ad1c8111c07b8f5de28ba026919489c4a2efe3fc7d57b7e10dc61dc65ed398bd22e0fd9d3846479a4e8d2fcb5d05b21e1564f13988439f2c4873557fbe7646adadba86f6ba8e311d081f2e01648d7dcdbf844a0ab88812db417f607afd200278416940ba7e074c1fb31aac00bada2c6aba3308dc2cf433e0b7c4e2ff361daab2092f9fa76c16ca3af10bbbc9fac8e65eb519d89ac1bb30723e7e0429ab1709564144087cb825b205d24d6d4b236a18365c2c9be5bf308b3ec5ca29dbcae3806b470b4a5e2e24085522d29d47664bad045af9e78506e2916052c2012213a0b2ff882076e1310e291f8ce78530c675ea24574c58fb0433ac06e7876e37417eb60474430137d347f3e677c4e73ac40fc40dea766ae8497429fdd3c74c2a2e7fd2c701dbd938deb02011fd63ac9c441fdab389c6af92c8e477f0381bb2d8769258150481ed9162138bc6f231d8dd104d6f46961d1e7568d5ecc279ab82c38fdc1706b1ef116843463155fe028fd23ad3fa1c2e0dc9ddc7bf1d8ee830c6a9807e28bd380cfbc77e483867c8a3b8a89b8498cb574bd4334cd8c69a35aff487acfbe48c7bbaf908c0f8b8f511ee38aa1ec4dee8a6f006dc0127206fc40c4ddc9e44127038b8ae80193c58d4d23fdb310d7879b934999e164023dca170f341412a5f6e27ba4b86d591553a9ab1f31c7a9a446d06f978dae6a76d26f71f897f5d6aaab9901402c97ff3737cb0a9b5aeab6d41f25a6282f8e4d29d21988d9423c1b45c031480cc79b4149ba33927746c6f6fe60d303e0c91dcc686413944677a0926853ebfe4b1c329280a2795b171d1f835a362350a869b26ff2cc94225ea9fc231d852f1037357e7b539a4e4e35a8658b2edb18282cb3660a40628d7148802834fea0da8f18272879607e10fcb0ae4a0ebf5860c32d40bdcef30219f4ab93f58c39d357cf1185311741c89c5ee3d34282bc0e3e1d3c2c3a0baaea99adfc2c6065853caa375ac9f39442e9380a098ed8e81103fbd397090c80e6ab832eca720aa7538f37aefbf171f139ddaae767ee7e17eddd7373a675437c880520ce9472a6ff19cd567d0f2c037d2d3d96f3e84a564da79278fc392aeb7522f6aa24f96b36dd8d55c0d3535e5a7b03954b792f0af137a0ad995c74e7c4a7377202003385081d6ae439145899a1b48ab4cb4797ab59eea10169ff8a54488b47551f536b51fcb326e2d35beefe122c962c08581784ef882c283b4ede2faff98fcd9f3fe5e3c6e6f1ae01f6aed1d31205065000474698bce0e9bfa4c2a55808f6344de7dfeab2c37d1c604ea8c874978ae8a2a21d41b954ab3a535b3be070d263e9fa488e627b239d28675d8cca94b45bbf3b82f52bb6ebd8e3bfb26d459a6c6644189d18ed50e2a436284389aca891107a144db49f88b2786e5be8fe6995497ffa7b7f335e0e77d54cf4bfd17551f58d069bd2144623108d6813e8293466bd8013ade0f39239940c324a25289b910c990068bb18da9f082b89de0e8b25a00279ae76794b72de10887006a129c2754d0542bb7d98145b85ef168df5aa9b0ef11c2366ee458d4c4a5356ddd335017cfe47a4c4ef0b30c7c6a3f187d2ec92351e74979e3813e74c40e876af33479048155578bd1df2baad2fbe8e7d3503304c754f46f6b6cb40fb9cba2585fb3d55fd70c9f03106389c667df27d1d2749799f28b6d63a0dc3f67722a2b3eb9bb7f90231c01e29ff0ec80992f3877aaa3adc19ef4fb6eccc380d9426c6f1385499c2b25ffd775691f42fbf3082278bf6307de1dd1cf51329c34a2a1bf349ff4e49169cc67b71203a434aeee508e71ca83215dbee6cd3c56316d9d9ef884533734080b42e52903e3f5896a5029f3d9afcd41a50263685eed1a6ba279d54d92c8ae99c3ec527ff6c80af2c51e6a356f5e0bf138ac7dce615612f72e9fa0c19c65d4f2b4ad3d2e243a8c60c58f96e488444fc0b621a7d6f905d662cd2b2f2f165a54eb81313288804a0d3db1b808546f336766e9d3b9d2cdbd5f3a90850c70e61fc562f5c487be01bc479a23c0278c368cd9444f3ab733a85e9bf19b3e19c8a5d6013a9fe623e4c6434ff04a9f63279e95bf66f70ff7d14d941f68cafff3633a032e0f6b01bb5c7258e83544a7f1ecab08cf43ea2683e286e92b11d973024902fa36b4c80160ab7b32794e4ae6aadbe15d473143b7a9469df0a1dfdad506b4410ca309dfa92f848a9bd70a605c102fb8eeecd44471f5c1e127453235b0fac08e653e290e53770ac1e6b082bbc35f0683174fafc1d539f8331f8b9b94a1b7ebfa39ce61cd4957fb8a753518e3156776d6cabc6f523e433f4019c85b90d8dce4f499c3c20b1b4bd71fc27aaa09fffb9c3e549a529d356ba6b2710bcbf55ba1ebfb44ad2147474706a7e12a1159dfdb62e3737f3d59a69aa893b8e1e431a8a2b43bccf84df262c3621108cfc66327a7d35fff0f47f89fe7e4b33d96049111840b1101c812150cc0159a3eeacebf8c0adaa29207a966c02ec974996b80839ae6ea2849b49b6b9a3386a64b0340259dadf6a5cf48be2ac60b6ddb06aaace3ece0fd0721a36697dbb6a3d89c98162155115fd1f1bd54383aeb8402c1daba8095b9025c6343d4ff8b65cd635fd278ea146ecc261849bea1d6912b8b803540d80e08a94797160aa365ee29d2dd001694d27d09b5249062f42cddd5dcda635a875cbf85656faacc9d4bdfbb1fb520a7ab7afff58d44b164dbe5273ad125bb908504f0dca8f7a2b972b4d19e2398d6c195343c5a14125372bb83c44ec4c07cfa9c9668bcebee64a1c573518ca2b93d869906343705689bec6b5e09675c667263b64ed69bde8ef6b8a0544fda8c83a809d0cea784be9cc383f49ca78b9a141f483cbd46ff51a0a42eec69921408d4613dc2e2bf05940fe5dba659f86491707a7a2f0dbb7002d58e6c6d4b4fd6319150d697903209acd9764080b431d060c87e9c630dd6ee6d1c247a5729f8ea8c9ca8095ee293a607aafcf0d2ef1aaede43f7a286030fe7558f7ed787bc0bf0486cc816d27dbfd7f8cfea1b727b4bc5f7dd35b21e906769079983a6b5c81b5d182b0dd51cc547912e88e14bea44cc9db856c391597883ebd55ac4968a5fa5b5943d10dbeff8e7c941a77747d6dee4da3df785f0b8dfe2baf4da11514f3fee33e5b814a6b0b1a979ab8f7037c39f949a2a7f83deaf498176f23bca1d71026cd7f8e9cf637bfd3dd02af87cdb44424005de0462851c82e018d340aae20a223872015a6807ccc383db519e28244f29134b7c471f4a945801d8621315d926b9c323f4ea339fc24db485d6442c570c136145871806070af336f469fb6d031983a9cd38133d5e391ac24199cef1b87abc164e62e2aaae0b862ea92d063937a6e26965b8dd80769f7e304663c85d7d05bde1dbc12203903b9c8db0a70459e03494e0276c59d00ac55238f45c4e7edf4c8aeedf48c11cfcc3d94ca28e17c0a2f7cc538c7d26f8fa8f5ac5b11d665c169396bdd7489c679090a6b580f0db2333971b5275174bb19fa49df05c632737a19bfac672ca5f5db8b233717728ea3bcedebafb65d1999333cfe6055d87edc5ac0b00b68ead595d55035fa6d09f64c58f12b6e651987fd3c1de6f2427213f359cd0ab91b50cb6edec4401f54bf8a7c2575163f6156045dfe6ec2e09bf54717f7b23439b033edb8a3b849119a078346ab34e80007312197561c3f423cfff3b0b42e79ae44e289d10f44154928d0d1df2dfd8177ea898e969f4182a007a100cf11deeba5ec6f06c62b0b6480181baa4e9530962bac79cdbe8418c71bda072e0a70c9e4af82db81a0bee7d4403f6fe2723b68cea13e37bf21283c507e2e9a1837e8e3aeb69cb07173799867e5d5c634c6cae004dc2e7f255a276d652c24c9311d76728942f8d32eb779348b184ad2a42b84ec8119d5fffc3adf2c4210f59cb8d8d746915e4002b88f6e1b4584ed28e811b4da541b68c4388de19b4d78b92e18b8f4bd1251d986cc737267d93273366ea91ad46537621917bfbe2f8689de0da1f61cddd8f284340b7c5e5bb842d87206a1220a9ed470e9e2a3b044c7de6029f4148357158c96d513906dd3e886d160a7becab11e16822d7071455264eb8f191f2ea18cedef50c15668a5975491b31c52077f08c488793b05b7a70f952b1fc080f4eb24b8020c26b7cf85a00d9f928733ebb70b92a1533185d7a91e005ec188f9f8f29e417b887e24d43e091a801a2e3103c447803fe6f331142cd603d5c1021eb06fcde08fa01201b7445becc6786f97c86d3ed82ae9cbdc59669ac35ae6f20d01475d58adf3f576ee2a12fa221cebf64aa1c2f482863e8c7cae78e7bbaf46161485a09f85fce15648779ed3e272e330bdaf3ace0da10d0d0c80468cad5f4a371c11385735167e4d6b34244ff91d9abfa1064084f1bdb8ffbf86572a35efc9c2dd44acac7e834a5367a48a2adde74dd6ff63393e21ba0aa2568f1d2d226df1e2d8ff146319c78dde5bb70d301d4f937c1f6323c2708feabfbc274d53756ecbcf592d8067e9758b90bdc7f3dc9d53deed86935ff77b48305e498154437ef4c93bbbcab40c56cebd8f7398e810581ab710cf2b83ee8db27fbda34c4096b8b2ea9decacca7eef903db982bf98e1c97e56e25b890241ed48be1515f7523932c8ac46010fed970dac9714a84c2f9b829b4c4dc58036aea006454d05bcb556c9308446cd8b5f69488b6e947b1884e77d3b145fefc086c70b8ba0177eccc66f473bfe8253f2dcb63c21b96d81c9f8034b2ce01e6ddcb6e853674bd7e473ccc9a248b02b8cee5a5d7f523b284524d2008369a09cca5538db7571128315ad16c2677dae38eb06ea2c9989fa4a47617ae9f057ac4a733a4886cfa2acbf9fa3eb55697c2f8cd00278627c1dca96e871dd092238b06a0e3a6b7a6b1ac88f6852a7cd684d52433cb2cac321a040d7e917aa46eda325d5bd8e407e0f81b51cf7689fcd4de050dd8e821883a6b75a2a76c95d3be86b06e0989115e6d35fb712baecb3fbbc26875c18d73cbcc202709c2d916293f585743259bee4dfc7c12d1a2bab29da1342257c301c98ec04d21cae243a8ac48ad62f9ccc5c0ec6f6f860b8e6a049e66e51590cb2c8feacd630372b8e902d9d4c20cc6599c919037527af6db4eb6a3cf33c2e9a2047c58b8ae5fdbb455eb1d19522711eb4fb3e427ed7bf85a134af2acf99530b49794e5f46ff8fc2066fe17fa3348413df390354983bb696813cd227a7b7d2375a56c39c1c8b652adf53335184c8dc92ad3c8895caefed7be2c053a6ab93350296eaee38b6e6fd1dec14b50d502401638b0298632224c0abaf9ccbb040f32151d315f0bff37313b1589d5b9f336b936f7003e408c2d69247a8b40cc8ed35c2d51e5b27ce901030c35c9035addd01fceac5e6d4f383e3d0a0b2e10803b050f8f3e3480d88e3713124159bd36f640477e1966cc96daa4d06edb4a49596883db537aa469cafc1a44ffa00d2191e5c8b84b0319bc721dc5a94adb261a176dd50af9d9d0c633eea82ca8c54cc081e775ebfc4d9f95db1c0d4dadbd36fb12f3162f9015e3391f5d7c4981c644f7f289dfd766be27aae9a2a5fcdca801e9bf9dfe1b85c37d474e5543f54d825d7b95b584cf8b5382c4342b9087e0fa2cb3c016627a94726f20f2d2d4a7bfe832ebbfebf1ad8edce67d42b12f3f5172bc6264afccb8f7e2a2aee28278e03b1ecfa52a4ee864d1221b3d68ca85bf2a8d2ed06f67fda2b4b4b915dbc83f74c3749cbf55e860e983d216ad42dea35946d750d442d4fac8d7a26445447f29bcb5c2617b07f37cf2ff09fe456c1c27d7fa5823a4e40fa091c19910b8850252f9cc49846f241c1dea95aeebc62f4f87f62e92c51038fb4c727fe922b068f2ab079d3b99db3c51bb2c67eabf14e9000936c00f6dec2112fe9e22a51d9ff6d13a11e173df0215a545c5a1c39bfa2a5d51b6d65f1ee2105caad7801235a754ac53b3266a7168122509027e91bbc74958fe2c960b3a2fd80339dda81985f4dd7628e7536b94c25e5617cf993a30844dcdc4253ea7816fa3ae339123768b5e5132ac4db5de567d2e614e384e2e44013e1d03cafa2edb64eb0ac868db52937e5369091b8416c076bacf58c1119f367bea099b74b8798d8efb86afc17d4349326ac8552730891bdb3305a9b495bb5957d82040e8b68e74ad869cf7371030732eb303ce847fe044fc41bab2a9d8c9b26295a27a2af48d01310a9e2a034e25b2df4eae4a8d0c84aff4971937103f585d2269850af64dc70614821133903fc6a6be4d2c671de44b841629ee8d8e821d7cef9b8659d49400fce9d1cbd63939ccb1973c4a036e8c3897eedf8e9ca20f4c87e9501b075080e7b752bc8d1a5e4dece9fcfb8899e00da1873d91a379622aa637a26e513246bae877019148b66aff0933ea50a44f2b671b3024c651cf2c429ebae70587788deb84928350e1e0bb007a2d40147386ef24cd7eb6af184d09a434215846f66c44cee3b396ea8180d6b0e817fe2b8a9ebc6ec7fd336e467454121cc0426102186289fb0386e9cda5e0ad58b935db4f9ec126c0ffa2fa544e42ec64d7642822f88e3c6a5bd84ede18e0f3271dcd4c84969c2f85885a7af97deb2ca8dfdceb8443873a14f2f64f65efd3dc4d5932224f3d35ad8835ba6267d69178b71258e9b92e2c79bb568b350717aa6221868da074a295cad08e1025d7c14080d8504f3e6d1276c5df34b59e5e01e3d1508fa5b5d6d6ee2a0d912f73ef82835020e8c1a55a44c9a6cfb40c902655ca61a67d02948352a97b89f78c99c7ed5931109ab0bdf5f0dca77825e42a55e50a697ab56325cf701b2df2d6909c56f926edb702f5498635a46b93b81c6f3ffeeff89787f8db1116680255ae6df6173f1e03a05ef54c58248d572b7a96a503754240f40c3f2532e4c75ea5ab8c8d3bb7f2dd08563f2edb5e6b7b6a75424b4f03625f28c0e01ce81299567f725d596942a76f201e0fcafc575b00017b40f5cde7e6cd8ee8c0a23d3d687f5e38038bca798cf788b834dc287dcf58649d7b9ffbd9f831b970ac32d361e954f145285fe8f80536e6d07d8a8e2a118b83bdda26973f66ad0afe7a99681105a8b20cc33600a8dbf315c2a4353053fdf3722ec0ff20ba5c092fd3555523418954cce790a71f7718f3ff17a986a63cf17237f55bca02513143c798c9e53dee50e15ffe0b65b069607e88fa98c32532c99b9e590ddf549ed22809abc98202c551ba10262f2ddc2015852010ecd54701f7d47a19c0d126df11bb70f16089a45e92c78e8ea68db4e4bde9aab10ca9683d9574a30e52f36ba900747517046f6ca3ab5fda1a637e7764469a4cdf5ad138a6062716c716a8484d23be36b2ae1a5aa68813ac7a7d6ffda058b9a875cfe90305699536a5dccd3a70274d8e489486ed9ac61e7db6d0c75b3f2e61eb62052c3d448a3faf7526e6a7e9655a87097316e0af1fd3f9677a5300e40c7d95b678c4c3e0da4d9c953e985af04d8d0a272ea24dfb42ee433804edf1b4758a9034acd39f8a82dc4d1decd04dfed6d7595768faea7a782ba9e66f4bab293988bef6d754d8b1b7b93677319a7eea412cc38421c7de5a8753991c4a294f02e091a9ae4fd12ccf791267a41d588d02f17eb43c9dd613adb2aa11416371866c5b82d0096a8588baf375ed42cef2a37cb4bde018e484291a402656cc58da433e19fb7244e51c83a82ce0c5f82d67053dc940921c3b954adff4db375aa605d632a8b9f136ca146f360063714ed1c0ae7fd4e459e41af2ae6ce27dd13af428d1704f2f9fb3736dba2753b684a4d60b81a3319dae4fe41d3a18f5c3290f471e1a54e2d97948a66c5e2a6faf03eb000424c43c1cbb2a14e9efc2809afa11f5b0caa6d6b6945d71946d221fb04ae1ae33445b2a2703887e98046f95018d446d5cd3bb21c01b870ac6889dedba6ff771ac2d314deffb68032a99d3b15168d7722004c927f85115b6e13230bf578695833077ff606e2da6bac090bf634ccef94e42202f83e1262efffd5b6fdf9a0f6066b326b8f068aa07f99d4cbfb64367ca5b309d371373b3ed2300bdd7b9dac38b33c6d81dd8adfd4d02172f35ab8ba2082ed169b336be018e5914baeda7114096fb6e1f5afc12c2ff655425db9534b8a369f25148632e317a2ce89af4cc9f022238247cf6ac7cd6a3238875b0b4c678b07b272798d2ca1144bdfd3d03de8239882b71008b664b71a2e1b73e4d4af2636b3580ffd055d6f2c8e96a97f99c542309dc979531a1144b1bcc626e2eaf1999ee1ebd674fbbe228a11c55c1728c373b843f2f4e28872ddca8802900e5f6aee07e99cc948641e56bffb8ea5c9054930a5543e81b195ac15144dde2b15e2bc24c3a8d6c5f68540ebff693fcfe9c296e44f49102e16bf7dfd77dc08276b1d146e23012570b11838fae754ea0e2c91ee297bb5b83c62e917bf1228cc3e5ffe188e38e1c26b1a370fdf62d236cbd90909bd70c0bbf3a3cbaaa81d8e6182704203b6223ea99c8bd41f75d1763022bd31bdd1bfda86887e3be666e5a0046d2bd940940206384fb1aeed3757b72b61ce416429be5b1f3c10643998d74be31ee7fc35d79a01eda1acc78dbc3be856fe219ad4351473e66a36b0cef2f89cd8c2d60be69995bf10ea4b29df5c35dbd5d4e1deadd0a10579590c8909c4bca7960990b01d149d431b73770bcaf071963fc398229e45ee125d6ad69dd128ff7a5ae308e1507217755a8a8eb91cd07dfcd28e980e49f5d4192af44a522f82a6d1d167d832ddcb8a06dc785c8e1467a8df605160dece2bf4d4ce7defbe1f97cf168a7b699a0f6b39c9e11f0aba4739a330040d5bd9c6570119c650eb61544fa907b15398265a160f7b7b41f3fbaaa6520e51174e1354b2178cf2ecba1d408ccf2ca55d699e594bd9b42886128706a8e1d117ae52d50225a7f4620deabdb2a31107540866807cd54dae29e3e39f8825e80cc347430b060b9bf28a1cf188a01ee525b4739b92f09af8aca93498971dfb18a49e41586e5241db2a09bf1f1a231314310e06425d99490224231ede77126058d3276125aa7da0d19195b5040c8f8c22c23def040dc517d44238a76793dc500d887d4c296c7a8692620f1112d2c8444558921896797edb2cb3b457f141fafd4b33000ac8e69cea57438241520c3d4b022ced30eeaaa482875d59a1ffbb182c783766b738e19d736096bddad106f96dcdc84a93543d550f4524e33795cfc65330783c9ab2017ddb93a3a52ebb2bc3396eb29e350d8e38feb0df3208d4d6c357a8bdc96c514c6b4ca2a14c245705515c21536eeb596e592f75f83308b54fc4fc615ca0b04a84070b39dcb01918c1242862bf56aa544bb6787c70402980d85c406267b5468861f5e6abd199d680ac09c1ca6e247a02be7ca6585623fc68751c7d2d182415dc4943ba665f91d9ddc6d27f51cf2dc6dbbcda2cd7f066159765c5b8e7e3f2c2119e3375241bb73f810ff8b35d90bb5b398bd342a4929e540d6f824a768b2c4f09a1ebd417bcb80c77e7eddaad9a34bd30f404961551d2d6c7a1044c668cbdc01fc162a5eea44334246afef2fef1cfc6f9132936b7b23aeded6c9bec5b31feab7c575cc3124eb8c4aa21f3aa19ea6fbc4d4c8b38ef0f9313d746ed528a03a31c74efdaeff98b4bd63bcc72b66defb77ca2c5ee5bac37daff6804480be5a93feebbfca8fb383d933fa8b4988fc97f1d92e9fdec1cd0cda3f6af929db76786362470327502c63c562116a0fc0c6dc9a8f2dc481f3a7ddb6b6d94694a8fe3e9832f7f50e41b23535ac1f824ed0f3a42452cf9ddb2ca87e5c4dfacabd957149dbb28be29722ab0d7424bfdfa14d843764fb981f1699d9261d297c5651e48bad9e5c75524837677ab2c4b63bedb74c2ad6d583c79a2e28301742ff14cb60f643d51082e5911d4bdcc7361dd9eec10902a491fd979c1c3b1316a53785b63a4bdf320f3513c771479c98378e14899b891af99e8f4a7a4987dcd1044217e37e34aa2d2d3cc5a5f513f10e5c780a51864cda1c1caaf3b572189510a253425c94f49a2d70e36e9bb86d486651e8899a58a03171f50971d83f6d076321944f95faaf14592c554a5acc96de452a6b58c4d5666b7e8badec41983cef318aae7442d0d53c3b4790057ff0884fac23624383036f40dfba3122576d1db88a8a5201ceaea54740c68cf46518e212d110229d134ada2fc183f342367d82fa65b4993e0449a520637a21e5408cb649d90419790ca6397f0c470d24266d7d54b9fa1f306d6e39c6e16eb17c6cf1ddc8f6b712fa3989c2365f46d5d6a60dfc59657be60cb0e1940d0bd9ac85fbcb3bc6627e8e71f07c5a06b77ef59eac3f1977a31ca21b8ca316ba27ab455a42522fc6d69d6c3c2446d761fb1cd7b695fa8542cf0036ca475efef79a4f390a800ae8193a5d88ea9dad330253665aeea5948a9b631abf82824a96d99557a1256a26dc21cad2ef7f6e153237851411db93bc8a1900e8f668d4265c85be7e4b8c872f6e0b848aa176bf411d38cab285194666dc090ead16ed72a83cd64c90b7382edde414d054d2a7456adbdfc3aa1cee5817f2887bb05e1f3fc05f2dd5cb23d8c1332d05e9a668ce9e8cf96638a3308472ccb5a018868be3aaa93c15d9f21edb53f8abba3a49b7fd389d216c758ca2aceb108f32a693ae40ac5930a0d746b8d090f78318d77006e87812225b01e0f4f4d3bd85efdaa84333a8405ac778e5418e52a78473445daa8abd9df405065b839f29afa81d7a34c5a85793a7ae44580c428f38d76351203932bfc4ada7219b402c5c6a7f705c3c0ed9492ff9c14f72325bb6fb07d8e864987a5b95f943070f3ac8137606688214b751d97798d59b687e4789d2cefc8c8371a2fd0b6b1f8e3ed5ac3901dd3882000232a7463098f84d631c2cdbb4c5940921fdcf5cc162f6fd55791894bf9474d406d0684af5407a28956dbb705ead6407441e419ea21e9d41627e894132d993c2412e7e90c12205df33c0c39bd06deeab70444c8cd4e8036fe6031e0dad36a665452a582bd1a417e3889cff3d5c407f7d4b31b4df09c035fbb65625cab6ec816fcb31e4941f451a9fceb7f67521d8dc4bdcdb206f3917e1ad91619fdeab7ab76c3fb8c362ac917bd421c5fbd0d435c6ea018117fbcad364ca155e96d31282f89746f8b881077147d1b27e57b44f36f439f0ba41c136cf17973ae3bac206f61d841cd50cb20b1d63427b6299fcc3ee36e33bd600bf286208a61b6c99bedcb423c4b4f39722d57ab150062746a30f4e9fb05767f82fdf4d4d353dc3a83f5be8045ab31301c1d9536d909cca1e5eec48b38b95f952e3fea0c5c9cc2c7b528d443948cd3546ac296ef240c0d8a40f0fabaabd0dcd2c46b5f820e1aafc76660f212ef11f29c61b79bb190d32dd0fcf7f5cc2db3a7bedf6371c0bb12f12317b0cd7d020f339830105aa14c08880605ba53b74f6c05da6571428ae7fae68a2e3d12bb83aa9d68d6b2f5edc750cbe8837e32272d718049513226bbd06917b8ad68f51648fde71276dc688f0697ed641aa4d06099c53227affef13b87cde80ac5394978b74a482bb8fa2c6310e2b11b8b400f71a2c19f8633cc079fbca44f44c2d6f4c8b8af6ddd3c9dadc9eb8cd3e7c0c12a2cfdd70b34b6eaf965700bdf214d426f50f52cc54ca884dfc99162b38e1ec13e39b51bc132c9724e3b1e5f33b439e88f9207598fc39762191d7e7fe2e8480eee1a30566df72c4e9ef772db452738a6d11c0a8d4460c89dee9e2845374729b4f2e761b58a76a489126687107c5cdcd51d1fd2a01d57d98895ff2d78d04068c2c37525be1016f46887c395e33d70cf39990c4b9e5f4bc99dd0aadf26ad4f4ddcfb816134d00bd72e233a15dd50b726b110918854dc487ab9654f1922b16f683d00d2684635ae9b828ec8f558a360adda1448b70e7c04e33cf2d9d834f2b23817bd7e92917eb0aacaa1878991bc103512f97e71263c6b429ce1ac386de5c840339d0d9cb6677242680455f673c9ee79c001eb057f5561a04b979ee91ef2892a23cf4492ed53c4d74f5d7c18fcc530c3a4a851103cca4f6ddab4b14679b5e718e9fcf01113661e0d052a89342fe612b334af734940b24c4d61afab3e3b2d2e941372fe4874f0f06a5d57311c00ff0c6af411ad85630f3eae6a3ba56a84bad8ff75030741ea2984f60ff7e8302c4db787068166a18377f8be0348f02a9011574a6397a0d3da55590ce029c0ac9206d2743304d56993a06587b5249c0ec551fbe91efc3e37329cb8639d05aea4179a826a8adbc568c32c0d83ad5c5ba7cf2e7f8d19a91ea2b9e8645bb3a0ff5f52af203a65a149e00962098c28afa67ed0bac99163ae7d3c482cb19eca1a6bfc94dd71bc649791e8d465599d51a1a39ff5cd87c868da5d5144559a1fb08bd6520f082f5ea621dd7c60a4e7b5420c63777f6366a73bf10a625a1de3cff377c02cbbd94ba62d59b72b82ebc94b483cbdffb477996d3707e961c05d1636bf566c0ef5cac823da5664f54fe5eda2f267704145af599e06fc6b35d0b9e6429e8dea6bf331adeca34421668e92c2b8706a14510931125f67ba81d651498f300cde80731d022748bb93cb5d23e66b85e2233f86866b5408255e59de473ce2de94dffdf0ba566bcdf050585a8846178aa63901aa1eaaeb854bdced0d7fdab321f6d46a0da413f815b2ad6156d605077458d71c3b795607129e8d4bdb2c6cf53b7047232a0b184bc7734815857519e5180663924483bd758dc05965685424c55a237925ecc4d7d59d88ef0b6baae468c200db7f68a43f1a96da1bc04f3ec4b06e83ec830618c54f297d1e3d1284d92786142fb2127aabfd5acf8349c845377db0d0c129e9a79157e1fad423102ef7897b4e2cfa31214be5c80b4091c5c90f82af87de84181c6ec5d251d342e118323afd4d156cb1ec7fe979011cf0c7c22207cca20ca7a91c3933a135bd28088840a692c33580892cb2032455f3daad977ab1e4fc71715d4325746ce3a8913b57f32a0bdc57964d7c4d02398642011fd9c349db5c03aa0373aa31824de505ebb76566a60a79e764e37334dd86cab854d515d098bce393bfe00dc3a78deab54dc9564fd4aa36862acf1434c8378140c15e2754c2f655295b9d4be5e5673370d6f66aa994fdcfc2168e2f0aa83015f4398366372c78496714033e2503dcbe51c3d4562a188062af056b88aa3fb5e72a20ee6aa851db65ced7fcd9e7c923254144616921db9e755398ec715210c159ee02cf628fdd20aee618fb1f5e1a2bbde32441319e292e5816dd08ebf1f9837ca2baa1954a2fafc4ec3362eeba06d7c7dadb11af1a51cd54725570c8c6b8b3e3353707af16517be1e53a4efaaf57a511d4bdfcc042b5cfa25f0cd70b86732faa683190ef5e2611ec2312e14cbaee9ad651e2a25a160a31d9ecd602478a16e612c40fa30c14e0a24e8c81b444e000c40a1ca58f00e40b793f722a3f13444078ca0a578de960ea8072dcb24be1b2db8a8400357246ec87572f440fce728268be8d27b141656fa041ac2bcb36f63992ab49df345e0bf358ea4bab514a7c0c99ee1d21f4c405c5a6b447a42002a7eb5af204abc87919a3d8d1371aa9dc02ceeb2e72a89a8e25a87c1667b99ad8a9d61524de762dd771cc168fed42e787713aad33bed651947315ec4aaa601c520c3dc81a0c9d730e3d69a516012bae6e85bcba945f2e865cc52550cfe84cba21d20bfddebdc855762535054429af2dbd49404a8a5fd6a50af989ca2ba46f905a10b594e80b4085fc865997c697e2a5e5390150f11c0151326f8096f076fd49bac66e0c7545d7d07dd167b8869cbd621da932b92118776a515acd148ede18ec29d653791e4e8d3fcc68d3645837f87d0e7496111eee6b0cf5a780e4077356d2a8c31586c65e43768cbdf6c2c16363a6247a1bf28085ac464acd1a5e34b86770c804dd057ff0bfde88f8e7d3e5de9a41c2d5d11f10c59b3ae72ce5a99457832971df084e261ea06f08b94c4f0bba7f4825312cab6593d740009bab8ad3e802eeb9871b9d197170a4ac91e260cd85e814c572659a8c215addd1cc5936c40162b3205f97ddc5c0ce8dba34d2bc84d5424dc7d663783a3188511d39b7b173c476ac94f62148a9f92e4df5aecaabe94a07583efa4aae4209ac7698031bfe8a1680a5eb05ca768d742c5bad2e4595ad53ed31adb2050240ac953e9470df151e2e54df9f45f63805e54660ead004c5c6a65c4fabbe3b9d23402cb4d1705edae936d52aab17620b9642861352774644c199e007c82b17dbb924a508ac627474c3cf37163db58712b1e6405407a7c72095ebe9e0a0b96da8da569e2a9f1ae221151472bf169a6a8d7da1cddf0b1230c4f846a1e49c0b38704f7bc34f1ba4caedd049dbfcc041e657375f2418956d660a969cec8c3bbd57f4648228f80f09706863974b31b5c4960e24e522024d9c8439b13941b1f948b1b950b1f9b3a7b9c86874b067b8e31f827b1d39e2374716f37cc226a5f419d87b17db28e990af0f8b78f9b5810e3a81166008ea4c203e59da4d6cc067c9dd72e52d370e0fd3ca865ad9f861f5933b5d72e0a7dc7d0c4c04284cfc29613520faa8a7c495a6db1b3661990b998db54a2a7ba816f36b607f2030b0222ff70e3053911a7c07d25e91bcbe836aabc80366011806e500b07d7211881ad25703dcaf7f125ca8e9d48a6c0d0bf5105f1e060b000164320019f45e7d322e25a6fb907369b76b5a434b9a0920ae55feaeb878c2f18f6fd00d1a1721cec861b8abd9daadd0429d6aa0f8e527cb2562d90fc5d589910f9a26189f5ca39d590085db345e6ca35d2d593e03dd03ee2a91b0ce167fd02988e60346198b1d792b8c287aa9007586b1d2e84e951085fd15e6ec28de22c16acaba8788e106d8800bbbf3d3249b445a5f496be1e5f5a08138aa74d10d782dce08f6ff1ef1d3798287ef04516bb070a2cb6e9dac0264c7186b32004b8a585f5a965cdf95095c915d1c72b11ca546b9ad4a27ea2c0ae8dd0cc4313d250d116e8e29e84c3cab33d9b669e6801a2eb5d327c1193da6063b19f34bd4b86189ef621dd67265b46494eb37b813b1e3d7d5925f0f58bc377c27b8db5b07df91f6284488178eee0d53fc6ff3ff5b6e42707ccf892439bc9f809e1abea1080f1536035ffadb8354a9f36aee713190330d7880ba97ae933f721a370e35f2d3fe685a5413f7a6b81d085ca1a9d4090d3636d7acc7cf5d9b8be243878cf559fe3722fab2a0c6bbf986f61c73b509d21fe002fb4223a2e73d40a95fb5ad650e9aefc2beb4df0d09b67897cea6f0829ea1e2e2949a63fa9de4238301c5a2676512f0654a1f52c7154fd395bbc6a0be26142afba3252f47d23f664fff1951fb464d1abf76ceabfb279e400d13025a72d5de41fa1297bd850072a04c32ea3a38d718641848cc7da962e78ce387e51cedbf88f789e8383fe5aa57d40c1431c52050f0c5eb313c14cb4d5878d8ab95a0588434abeded8566befb9db665ddbeca962ba247fae0ba2905eeb97c43cf315c62960af8b596d462edd1e5a4f265ec4dde5b77b383afac9d1595ea6edf46acbc01efc5a579962c96beeefa164846babbf1c72f960e21903b379f0110ebab5a9fc8b5e3e1e4166780453c46769cfc70f822649fd169df9edab3bff5c7ddb5e00948536029a64ad8f9d7b255c0e1528bb81d7a2af9c13aadd23239f52d42ba3e1d46ea8795819a96080c963fd8f22ad1e3d5ec93ca34bf2b02a9e95d5e3e1c903dd68289e7a0484625b806e3210fa5ceae0c1ea6ee63207a56ba8287a199586c14173037a0eb452da822510031e9c043387c954ec01f15612d4935869bf8d630193826aca98879e144ca848a651998122f89e06803d3c9b0e4578685106c6461d2015cc36e7172b3aa4e8b0513c783cdc97570fad8d22bd16bcd9cbfa55b175a3330940a3419f0055b67f55c6bd96c1184b0920d316b5dee02c04640d96b93895e450b79a7d54e555c34f156d431350a541fcb86ad8546ab0beb5513a61b9512a3ce2a75896a514fec286bb6dc515b1b31bd889d651fc43ed0571d10b0ecff84c7b9f0c1ed73e1071ae7d42f74cfca27ea98dbff719737cc773aee100b97727973c13d1f7580e960bf8406f1f236e8c8552c830b737b8f5ec92aadbec79c315d85b014425ca1e3577b0c982ed34ca3588b2eb46e87b4bca1ab252334145a42aa3ecd685cbe03a3ceedba825884687d219a6748b18fae070f94b4dd888056d1d313a01666b17b51c8c69c59f11cbab7d2f50be41b05cb9d12c70bb9ea0bcbcca4ac2eb5303c318b85e8d324ed16d9c191b16437302cf3727149dae9a771da9b235ace118273a853a125608cee89f54c6be2d637249ac802b9ca722ef8a35bcdcbb64d703a23dd14ab0fa744e78c1b688b3419a717dd90dc870d1922a2bde200300f862c6658ad7667cc4074307eec799797761094e5493b7dd2b0195256c8571ff10de32f3d87bdaf4d339fdd6b330e6a756b6ea9bf6bfffdd19d2fa9cfe76ce1491b091d45c2601f28b2791f62f52d793d0a37d8e93125939e00cce4b47b5f4515f259dd341c4314273f88f97c6b25701d2449c53dcab5e6f0820b18517a32980636551b8e352195e63e0e6688b63cd30af0764c542d52a578b56b38ba55519b5c3c5dcc7b45d5a81f82cc6c4ab2d7245296f002086b96419ea57a408b1ecd3f29f081095f6a14bfdf5085c4ad9f01b829142c006a93c1ec999b551a3a885aac442300b9bb2c307fed55c7664d6f8988073da73493661cf255cadf45019f94919aa762bff752eca2a26f3aa4fc419b877877452e87b51ed5d9a14d63decc257a9b9d950d5a0acffb5f09d678b2018081810a76e54634a41c495821b34bb0c95fd6b578e05e59cf5ce882af31e566a70c5af1eab35404ac71d72470bafd64c00820b149faf6956b67b4107652bbc7f670310ace4036b508ec1ca91b8e4e7451f679975dbb3f60588902e736f5729b5aaa2d13b3e5fb3c76d54865d4afeb629627f8a06baab41a57dd5676853f4b6c3a28ec8c7e707c127790c9f62b139f13b17b3a3decc439b1a12f108117829d2d8e40c7ecdde2d899d73744ab82d601446976efa53311ee4a1ac040134517be4967beef4da1c8c9ecc0266bd594cd13161c184ebeccc4f6d9f4739634b8bd88f66f815ab258e2460e70c35d83f78917ad3637d4cbe3f2d87eb67d26810f72e97c327bc23efa2096212051397fcecf8a3d59708d5b3229f68d1bc0af79d000b93f7ba61c70e6422034c516784eecb8e5d4aab1a55bec4b1623da823707cb59606ebb98e6f79c8fae6eb1ff8d85bef9801d3d49465c8e378dbeb85b497d23ead69100a8c66195749ee384a51f11701d1223d95fdb9b3f8d74d1c9f103f148744d764b45408b2b19d7e861dec5314c4aedb191063647a3b6baf6436bf514c321326d70f6e210a1e922b3ae2c0f5c0f9dd2cf0c6e99964616109b5cc3a091a552764ab2826ed9f57ae9460a9b0d5830c3e12b31d0c18ac99618b8e161f5df9d3da44581b14136280c1f0ee9251dfed55458cf50899c53b40b3bdf5d91f6b770a98274fc3500c40bd6c895e84d4147122965fc238b159e841ed8abbbd89ac262a2e1eb59e710ea9d04893f3f45f32604815bd49c3d91fa0fb9b63d400b9a5a637b026a6129cbe1adda803b97dd1d56464e7789e76dcaf7924701f2f284dd6216636b5d78ba1c1e873255855c5e6931f1d1e4325558a50472ea3cf3ae33bf09d49348b6d6734960bb8caae4bbccb4f29781271d7e1b79c370847609c1b5a84c426875636521a6dabd0e9595fe423e108a970cde01f654355c5218dd47a1c9949daa5637d4d17979c74e357f55966a88a10687a3a62c200386560d218a795553d804d5689d434f76c198f801be82e41157b30773d68df885c6a17066dc6679f500a30d0f7bdb3f1d7a301497a0cc199db0aa61d5c054cae65f649e061cfb4e1b236a4aad2998b02eb9b8cdfcab4a46d66dba155c36859b095dbba011b1003073babe0f084cc461287225af41713ec6a49ba1b06a5ac02db0c4e0a50622a53a5d4a93ccf38290ed62f00049af0dc0b2f6499a768dcd2a4020d81d0df79e3080cbfa5743e150a604cede35ad6f1f131f082584ea5c0e3d3174b9f215847691dcfb02d5053041f1e121f5d956f332b3af403bffe0ec748a42cfc589d528ba105a44cd917185dd5be31f3885e1c0877a0c141f8cad1ddfc97c0fdfdaf50fd9119d55fe0e2bd5ac982364fde2e3a4b3bc24ad617f1d76318d3e4ab4a0d7ed6d1986366ac4f79269b115d61bd9519af7e2940d021a6417ad5d1d549900db5b4ce5ff126c7c960a85755591e404e1e08fa162e8123f1696f2853dd1823031149cabaabc74f7a8c1fea77c04adf63dd8745dd8e79fd616509a71942d79ba82cc2e1b6228e4d6af3c730031378bda8331db495c1d1340bdec1d898147bd299fcc7f18e16ff3a28706cda66d57c3257912e1ce15a9f4422ebc9bab4313d3c5dd1ea553af3db5032bd2f53193a0791857f4ca656b2cae44d0337818e135453851feb6809bfb1b3407efeb9ea0ffa4a7682a022a26bb21ad64d5522e078ffc3f245b99ba8cf97c7d1ab92bf5ad7d75e8228a937219b4c0d2c2dd4b7cc7c99006665d1f5a2c8f605ecd4ce0ed9c6b54ebde3490a2851642af752c421d054cb9f7ffc28c66906867ad731162187efd714cd48ec02d8b4d52be3b0ff3caf84055e0db41183ca8436d3c410a733cf1c7a5cd0dc019836162e64fb4ef143f358a49e779bee1b03b301c29fe39da89be99e2a53a5d93f589483a68ba964a1dedecaa07256276fd1995846e30f69c46bd32402f5b881f611309365c16acd51feae86c8949fc855ebf0edb0b07394466c7eb8d31cbfd43f1f8cb0e650bfdfeedd33e2ef06489f222685247242b990f92d00d5138c9d8cfd416151663824c1a87623fd349e014621d8a03490d3237227bda6ce12b85e2fc451959fb6c1fe73064c7687cc19127b3646159748611087c142d252dd63ad1db40e5f420141ae3f4976702508e657b4fc08e601e4120c5cf5a13810c59a12bf48ba6fd52acc963b34c38fda5f657b7e3770a11b7dd6b7d2d12b269d3b7c4511b209c62cf59d6747c61ec91c4874003ded37343fa112cb444ab8d583dc27530babe7496903b5700c42d53e0d60d9a46b81e1ff02e8da999baa29daa3f45fd45c799a6691e69af8859024d8f5701abbf80862027410fe06806489cac3e722b0029af3575e195819f67c9fb79bb05db89d8fb5aff927a349b349257d1119fa7f72ff8854bc5fee40453a1a342ed86533615753a5de11794ea2c668a7cd0bc5ecad211dcafdd9d49950956677146f2bf9cbd6811b20d02d8c2f9e049ce619e14644f21d781ff85e83d7b35526d32218def78c521575f6da925972896b4d068a5a5b9f83c0b637248eb2b8b1e9b1b411f3c4574aeb39ca529ad0c4d2deb432e5e2b8fcbf1b99e94a8d3e134bee1269ae840b73f0069ef9c7dad6aaf2918fc8458c9f418b2c3494195cca6c951344de41818018a0e84f2f51293f8ac89ee0cb450436e597c662886cdae653e70366ee614f7db003b411fb3b26204671e4dc578bb744b356d760cb6bb149d7c135788619bf5237fa61aaced565685fddbce3adf90aa4af8e0d12a9953e481aa392ca0810648df9ed187d4a50bc2d0edf5fa8cfca59a499cfaadeacbd06ceae3cd6af0e4158040cddaee9351774011fd1bf7503e6fa479ed81c64b5d1aea20e9422673625b9a2756d8280f4aabe15a509049e8490959a4cb052768a154a91a9b955e0b333d0072bd6a5b4413ba09b4e935eb54decd110dd650143bb5f0a006b35e514aeec386be9714d40b5df413d9f42f8953f0f1dfeade3f2f3e5fa997c73e7de36d9135c6018686da91809af4b8f9cb72fc36f3df383dfd572c2e2b2a944c08a05d51b85b8545c278aa168a79287aee28ea06d072b43fb6a4ad1e1516f275821332ca2d31c7eac710f58d0cbd7221ccc1db4a5d8795ec80c97a8db84f2b8b65ca899c69378a1b4b1187091db06816936c3851b24b267dd4810aab69020c5b2521328109430d8290293f92f2f871664431ee94dc2c9f2208c6fab99310d51ce5e997c596941c6dc112ef548269d1726246d8fad1410a99e3fe42ba529941a5bc2e8ffef0fc136beef58a80a87340e5bc96a1de747310b829d8e6f6400f1cc2f25d8068771c31a3a88b3b9485287659377fb4107a0f5858107153e4b3b8e5e28d87166a92c290d32e05ac28520d3914962b00b1c948752e3e79a4300c1d97e83fa8392f4ecaf2b5ba70923b57160d0969fcfea21643c17ba9283d51ede68801c22e17958fc17232b3376a4bb9444c84d93be515e4de9bbf801241894a224137b7be210d67024594c362841bdaeeb4083cecc1026671d455096e847d8c659a290eee74cc4254163efbb704a1379accef9651c989dc312ca04d709fec986b6125fbc319770123805d40d085a7168058a4afdf387a19d4d3e4cd92550d1f4f0c6a6d092c453f66dae7875af8497aeb8da3454ed0f82533a856c8322d30aa782994a49c2c8e707c1e0ff93d13290aad74f1fac80d04f2c563e508b8205ff888cd44486e32543baf5b8e2e0327c5cf7d3d6756dd86e1a9e570c90f828aaad5b98287e7016fd304235fdc9ff8bc7799efd696c3e8e9cba5e4505a8160955e56e247e8fcbde58045876f106085c308ab014aa9882d1011d165668aae91fa935f0f4bc1b105e9bf2384841fe0811f4caf459a338d2e988af0201d96327d2bc2a4b15e6692d09f90481b2dcd9e2cb50d87e5dbc4163ab42062f99e808a5e880aed93fc4920601b69c413a0abe4b4f52f4c0e722302b0585a5b429f38901429bf3633d36242df0896dcf09969b73811e51e4b5f323a5a686e86bdf78f9e8d5570775796cdcb5f31f3f48f7346911560d1d8e0c4fd0a8d471d0fdf8464a41b4dec52b14d6a720b0312e32497710f3dc34f902e4e243a925f53aff938863235702eda0353a6b214db2dd038f3c8b7822ee038a7417bf6ac87a9e1cff9d78acbd5a3b45d0c8fab42dbbda823162a8ef43e4a849ebd2ab27685d8ad196d552fd0afbc6bf98affa129da1afd1a1c8f45dd5bd8bd6c8c6cc4251ab5c05b7ba46e1e7e888d4c83d29284706db3d8592c594f3831568cf6a23e52b7f63879cb8b0033d2d560b2618b125d2a9e4182c59fd812f9467e7bfa4954eec664cccd7c3786dbecf13c4a6842d2605e4f4a7f020e0d2941fd5450bb68d9c3dc9c5eb6cf60d1d36cc81410c84b70c7820ccba08397434f8aa45e8e9daf83151599d6a6d5900caaaa708ea556db910209c62c18585ecbea7a611e5e16efc717d81df9fc11a5399b9b16364883cd58f215ea30e459096664142033014da614583398cd46825b211aa835865b0e164dfdea00e3a8bb9e1c068e8d12c88da9d13913d8a19c740f0f8a94526b85a0626eab0b119c526d73a30fd310d52a1b373a592d7101089b446825b3915eaafe5cc5855c5f7f749c0204f622f89af4dcaa8cae2e8f1f279b9d0baca8ec1c835807c1cdf489e08fb0c96a2a1d46f31b330527e8997b6e3683808501411323f4e5c80759e33f5ec2430c0d607de683470b36c97e4119f4fd3531f2ce5ed13865fee52f9fdebbed2785cc2095e5663f3a44fd84f800f67b65e1a125ea40654b6d8980e7f7831b4937404c649826c249608b43c0cd4a64f63bb022960bdf1682472267f520088c61849b3e591af3976ff47adc3722e912b2cafc26438f571af8bb6bf0b3b62696738e9813f692da153bc7ccfb6642d14ac704cfdb40cbecb9e16fcc28078b1a5947df640745a0ced75c88ca143849b1b8817be45d11bff0f96d7b58792b93407da60941c6c352ea9e83162a23f90885cad02740e57806be3f285d3c129c2d1484af1a5b64937b3b8cf77dd7b64058f4ead94047112c7171ac3d87922d452e5d8146c06a6d58f12a1371f1147fd71962f50a02f29950beb64c7264610a6060a98d6eeddaecccdcfe288d8fcc0e0ec5578aca89d8b1911c905807936113673289bba7fc214ec97fbd0e44477fc960a6a6ef5c86b0d32a3725fb0219955a336dee958afbf281a6c8f319e3ce586cb432967cac571e87d04c80b26b5413132bb71bb670da7f36acd179d60437d2849f4f7b33d9717c433ae43bf8e8bc22123f32095f081569e3ade8a0ad903dd086e517674fb5acc97b43b58fa44a6a5791b18445e211f8dba2b3c9137b0f195a50210216b35c8c472e55c2e0145464466ab22f4bec891c9c3d4c546e9108ff1fe7b08ab3cd11e6c4e24da3e7d5f883af501ada49bde632f9ba4bb0111b66e83339808548e36646de9622cf64efcff915c7a215895a9fba2ae184630272c0756c0fafdf090b79e301d0878a0b110ce6eeaf833d2fadf4aed4e7603df61fd62597353b39546787844e6c2884ad969e583c8ef7538de147b5352bb6b081e687e85efeb93b7c3f2926564d8ce51596c059833a92e4ecb2d3d642b105b9f894f152053f2c0704e8c5469fbca31b44d78b4faf9b9a78134ddaca95ec0d608ba442f75e807bc82a749639007b29f3cc432f7a133b866f051d3aa2874ca49b7c898ec8afa20e3ad049269ab3c05528693b70a02759941baaf831f4ca46654e0124526dabd72136fe67b87192775f0525f8cf5f7b428fb1fd1fe44bd17451fe175f2bcdcd54cce756d63f2df6b3f14a995f131ab1d908924e844c64be4bbf568019d44da7ccd3dfdd5023093dd4196a6aab82af40cf1d7105553508865bcddd8ce33f677d0bee2453974c475dc17c30484f6242db68b2e7d59d6f2ceaff2601d4e56e300942de08dbb72d828c25fd261742f3a81188891ed50275c499b31cccdfe69be65aff0371261b4cae2c966acd226a1440c3cea2cc353a18b189a1b754849f51d0a2c22f0a163ca9babbf62d6a2ea0eec27cc94c9801243280a057fca350e72efcd742a10ae429e6f853b561f1f78c53e444c55cf92f84dcfb76289fc6aa97f70314543a14aca3fa6a3bf2179050d178992dd88d353ad2334aeb6635d719d27370bd5af43e69600211b9523e17303d290647366748d9002d0fd2788a3250c80d3da51811ce451c177a143f0acfe5659165a1f258dadd66651130c8a60013ca9290c1146b820b55802149cb2914f3d54b553d6b4dffb58fa2be3e6c2caf826041a194a55d68c1d1b6056c3968a3dd9fab224925a7d011ba6906c719c2822c1a33c9dc5fb1350db53151f203a733f03ec83cc2b09dcee861b948bad26d5e4c0f9a737f5ac9d84590a5714d7b3844e84453e28291be1a5e87eae333c2f667b5a2310c2ab6e0ebcfe0cfa64ff56fce3a8904689b317bada87b07b532e841c87cc3dcc8565442d671c5e5adada897b20eb8c732b38aab35a4a84ea98207e4e2a1a3279feb4bd89829b815d593ed343965fa7a3c3fdf3890702ae18a02a039caedf29c0f846e24a2c6f985853a2c905fa1324904f536b11bbb3a580449617b7a8ac7052514bf599cac250cbeca0926b4a432435cc131fd2688ca32eabd00af61d42742cc83586aafa683b8223cfc5b5e1e8315a072e444619011aa3ba96d9afc08e9ebaed365230cdfc94d0c8f73f0905690b90a5ec9ed9743ba0cd8a2aa59c5f3a09b06b008d70916bcda61892c41fd4f98b6a143ba69e34bece79ecb4168eb6df65771832c3afc0b7557dbafe63b3202da5c722776267f31daafc60940ad3e5807473f9949f012fdcf7606e88933e3633631b9b3bd5966c6b78bb4ead94998aded8a3f3761ef5896904f6fd9def1205bba766e652c576e828b80a9bf1a2f33945c0d2f5f59b1fe5217219913d08bbe468d71af1154538893cf94a7d3556b268a51e63c1bd645494272619b91757fb6929c24633d898ceb13fa3eadaaa555737588c4fba4861d761086b461f7fcc841ca4be27e0ed665ac8a2fa865c7c2505ad5ae6cef198f99efa5311539207d625aeecf31b8893143bf80a66b6aed5193b4c67282119b350f2966778afb92057753825f82e560e16c94fbc94614a287d56fb870a5c1ee1f97f02b6ffb0b5006eb470416fd7411c290c3a8b43c0f1bd738120916468301c96c514ce8bad91f126a2f24dd6b4cb8c0ce6291ba5e12c2d85e281b491a079869247ba44d2b0b947f701c907a79fa088be97c552836d94b28b1185c54843a2ea5df5b22ca28d1cc629ab7ee6033fa1a8ec3220b91356c4aa582d059ca91df7efaa14daaa94dc24c0dec1518ccfb640c6bfb0c82abbb442a94c8959b35e33c1d91f0ab97666cf88da4d21c7249ab1bc7019f05bd0596fb1ead12521069a12eadd080394c92ac466abd9c146c8c9e94529781c53f91cbe50ea27b0333aaf36c34050eae615261d04e4b22743e0b86ea875c540735fd1d8714d8f4593028051426a5dc8bb8c88867dadbead17060a8b2fd33e159df5a3863e650d99b168f37c6d660928afed3a9c0826070f3c170c1f227b2e8eafd4730a33e1436229d3950f8af3c2a4447fc601d6f95416a87799641719063aad5fed448fba8b1e8a1a84c3f62573ddea46a98675aeb93d0db55605c32495aee34c9781e68642f8e46ef42fd458b0789bdafdc45e2f4f28005ac1d73ea3d6ac1a0f83f3083b6549bd10599d82bffba2258c7222846c598190dde39d6f717d96409307f6f16fe01fee581128a1f9851ff0599bdcbaa0e54a03f8541fd4d91a140729bed65de4a9f57a85d3831576864007ff527c63fdaf8cace9ff24b9fd3f9a76c21355f7894bbd93d37b4dc2e48769188987fd4fe0e076955564caba4635a241d7e2e60f0784dc7c03944ad5d20307dcbd493adfd1ef8c1c3fd635e557a31c84c13c39205f40f042a499fa65b405a554d07d9686e3a1bd69de358cb50047f0252a11579050da508dc124e229e67384878baa0b54ca742cb25cc155e8c07ccc50d07a06eb8a7c86b60a31b63c9b263585731e6f752715897824a41255176db7bef2df796522629034c0a410aaf0a3b3c4488f0f010d9d969a205b1214db460a78916ec34d182214db420b6354144cd26840926ae5084880958ebb2fcbbeac5cc7e82eb3ffd67a411e39c2c3c2f42cb62a170e5bb76d16182091cbda3ce11401a2de77c5397fde0ee4efb0ec755f4e91577775b8bb9ac21b5bf8909dab5d85c6d1d4e9743b30c04d5bbc3d174b416c4b7a77ffd83a13bf7371ef265cb28eee3cbf6332ff6ce15ff0e4767aeb4585cc1f1b739d6c1b453163821c5dd74d411c284d72e892982dbe5743855dc6d7a997983341aad4c80513164d62084cad64a184fe7cf0c9f231fff66d13225ff3669a97d97c2276a924d3a75774abaa35e0a9352b8c44e91c223dd691ec6abcf58f528f886778171f814166918188904c8971a523e26151c5f66c02fb07cc101d3d6fc09439f9086a03e7d27a93e6de1f49d7b941569b4bcff1c43a441e3fd6718620d01bcd7a8816314c0acc215b4fc963044554b0bae82a6acd64fa49179b487ab5a5a5e004fe3e71157d1f896f7ef4a3e181a79755b68b40840d4f2386a147c433f45572a4c593c1a4f2af5287fc377a00fe686bcbaa91bb0d48fa5f6be1d66742adb140e95280e7dcd1f4a4359a3918965aef8b36013935924c4333ea7cb59c12cfe34e3bbd0073363c69d3d3e9146eac314260940004424297c5ff88a935c3573c5597325e479f447ca90310aa530088b813d7cc5e9c8c786efb1a144c594c220161c82cd95b0078bdfe0a21a1a1d6d0716d3206b44337f4c252596b260a99f18a14f0cd2e8c59b3e2f85bf5b03066160d035573cb63357fc5f601718b424afe9233f723b9106cafb3f65d11eae0a9fc5cafb7728f846d428214a17e2169f82812c4230530bdcfde0b278940f7f05b3f8aef4c1847975597cfc6058bc8b8758ea14961aa5e4db6146b3c82828d975b4202f853dfdf826954ae14ed76870fe4c1765b5e60a0864af97c29cee48bc14debc14b63a45e4a5b0a653de3e46f914ce34c53d90a021eb0882a569a0289ffa94ef4c3e9894bcba00c052675cca295cb50ad672a6a60366dc036cf90d19f4a2157a387fe68a9de2ee9bfa27798f6f4ebedf5d8ef63fc120c6b42605832c0fbd480365cbf901595477252f8527c5f367aef8674c5973e5b1e9c7553e57f4530fb2bea31864c9df602b95e78faba41e69e91d71d5e8c755537b29ec292c4f5eeae6e453f044c1f308ea64622ad9cf1ea5e90783aadb9fe64f98b3c39fb7fb5e90a59d869b3f5a4c8b593d43311a84cfd42c083a33839033a620e48c836434a18b2a9b4547599aaeb2ce920fc09887fe9665591186db8cc618e9f676ab9ad6a2d1d3b6e6bb5c5996fc805c9966949907220cffb96956661bed216db671f5a7115ff1df38ee83e13e988e52eea9f6e3210b5684e19a4f0a8eab360b9676978dabe82be587abb6a4ae1e78d6f78a690f5fa93d3cf4ead12b4eb1f1154f711dc1b24a2e577920ae4a39259bd2abf443974a4bc860977260525a1ebae8b3417f66467c68f861c1da7ed3c0a287abfc59b058b458b06eeadb4a92ffa6d64c665aaca6b82cab94635939b8bb949352e3aa5df2816e9594882bcda7941369a414a153527c6807435cf1df251ded5ff241a411a5bf0686b80a81f6992bcb8a2b42c415eda12a6204da65a63e5a5a29eeb62cdb8a3458292e119472525ca51c29dc4d59a51c1aa3ccdb6341324217553a90ce0d052901d28176900df4e4ba23b4735528f9cd19d1beb923da77d703acd1fde6b6a09d67faccaf7997f4bd221116408ce10fe205f80e07c0214c8259300442bc4399555d0c3dfe7422aa22e867b3e8b8af29b5dfeb54717f3a86447ab44502846acc8f73ce495b1de8fbbeff6634e7a36707da90703707922cb356bd431a25e80657e4850dee858718c6351020ae8a9508c3bfcfdc97c308c3b53371a93ff58f710bd3e723188ade41308a82a80241e15dc621eac4203ac2a2904800fadb8601ec1b34cb0bfdbdd22e80e99a6bae40b158689681f50202fb127a10dc9792b72098ab341d0fa1882a8d08a5d85c71b17715a5f150455110437f5aa3b9348d62f902e21bfa13dfb4ec0bfd6e87d5dd8742dffa9792122d84415f8836f88b308808880783c61043ff8a41564421827a9c0059ee311f04a61724a68834765c22b2c6977758fd5111555f90ab1ed9fb83ca10698056c80120b1c36621e280c40e13480b91c6f7dd87421fbaf9120d67ae2c28e62111a20ab48418fa7be678b8d85c817c402db7eb48484848de7a48f2f1eb5e4238be54ec5a62ab3d7c53f2227cd3237b9a37c993780883c0f4127a8a5bf6a58710e015579481f5527213caad7f0981c0bed02fc12dd30bcd428470cbbe84662ce64e68f9fea025086969908f8ff61fc144f9263479220cd0c894fa2dc44108794584b16d8c366c3000fbbb618ac02e08e95cc90840dc90538e46307eb5fc6cf88cce9e77237b19d5aaa2424d26fadd98d9bd95d2fadd70dd0561cb2e08d75f638999cf1b52dff09f58fb6cd8cd3f7e369ccacc892ec695a8817ae78afc21e6673f047d4c738c36c4ef64006cd833f1457e31de106fd83cf48e3c4cedfe93bebcda638c2bf187b03fe90f3133ad56fbb9e3fb679987ab5dfbf3a03f2512fe3347bcab8e18009ace485a7b645c5cf22628d4eb388d7ed7473deaf47b133d4ac7e9b7476d7857d18d10a35c323dea5dbc54aa3fcaa5fc73656e1f4aa5512e914619b4e5eda2eb7726383f493f57a09fdf95c4dc04116328ff29d4a9a40324287fc237a6076112ca93e0ad3d0a4aee4c7f429d8288b17f4181204ad3bebe89fb1297f70534374af9fffcd157a43f79d4475fa5dee4a3af4c7faa4fb239ef8befe76dd2a247f91494bc4df547267d6232c9fba670f4959a516fc2d15750795b5d4b38fa4acddb07cde53883a3778e18dbc08b3a9db84781267f4f0f7ecc09853a3deaf4a7acc324df8860f44390b2ef48d186d08fb27c1991c2b93247a111b64fb8fbf5fc9f1fced568441a7dde0f517ad00f61faee8718bdf74390befbf92d2b2c24a21fe1191c1f74fd10d6f0bec076d135ef1c31a663c08f7a0341d1ce9529671074c67ea33174d10177feb61bc6e343d3b7933e8d40473fca97913946cf00b163be0ef932b3561d9aae38b4ccac6fe5151a88a7335aa332b6a3f1afc77247774628ab165fe26cca9f5a96c996963ba614da69902ecab8d3eedcc8041098d6d1ee5b8e34fbedbf8fdb3e7b6b5fa6da1c53bffb193da3e3cb8d4f4c8147ef68858a0641fb1353d0d1fe32a1ded2c728b378dbff32bc63fb0cfc8e8714bdc5786fb58bd797e93e7b1ddb7715cb74598716e37dd433fa0add61af7b6e7bf941509b370e88fa52db2abfebb07daebefc5db9ef7a789dc35535a3b68f9acb9109203bd536e17aef1f4c96edeb82463b06d17ea7b8bbe5000bf81d61ffb2a31020746c9f7d96756060466f1965c36acffb193da3a37f3072c399cd281dbecbdb7740589b75687a57efebbaa8b70ef4f635ddfd0e50d6a17df43b89b727e5c76d1ff771ef612032fb1cd67e47a635edd3a1e9faf6bb91bdcd3e631d1ad86e709f5176c31b65ada5a1230341d0cfb6a7dbc78f4371af43d3199771d88fbadbbe03c2ddf29ea1f43b49c3e1d0a283d5dc5bcd71bf3d473f98560b4a07abb7b77afb16982def1b51eb68d1f56dde91ed98ba3a488288d0c5284107411aeb266176c8126c2c37fe9effb26435079d0da93d93d9c70fe67a989ddcfa71aea06c482df3bed98d9f1f41c77de1a2dc90dad445959db9b477b2624d4f1f3eeeac99341efef01275fc6e68bae26c43c1ddf4451361f809ee769d7a846be7ca5f3cf6e81d774014986db8063f42c1841058cb87f69f3a5388af62127ce611ae8a3012f4d0ae336b4860a3bd268ef4e83d83d017b04e1d21b02131558957a2755ee89dfaa1015208d26f1902ed2f59b286fc91d180ab40a8df32274a1e443903edee1ffdb7fc80f5ec8e3b71e727cd8face13a4388306084e1bfc954923a2579084ca8d1de57d2579cbda7b989b7a7a78b579cc3d3a37771cd8710699441bbac218fcc1e3473e52c7944d67020304296039135fc888ce1ef2ce1bfe994b7e99ae47d4db99449ae236b4c23620c7f27b010a407084f123b282883cc9366a3b9b3559267d605203ca10aa039ed648193357dec4933694c70f7a4b152679ed77dde574c3588bb9f1fd8000f7d2bc1057ffea4a179c00f1efef0e900661ac31963384130fbbb8efcefa5ce1efc8dd2df771f6ec00f2a2d5fa5e57f2d78f1b71f8ef9326fd446691dbf991de63a9366d2b88e07f1157d71aa7be24af4f97228e2e7aa7228e28a1846bd4bfafbf2eaa236106bdabbf80eaed2be53555168aa2aa02bca3fcc15ff90b524f776599665d755daff0072d06f130ff53d0c7a9ad52cdb3e4e9bf7eb8a636646813f3fa3c09c4304f39e3432f577485dbff37e7a239a99692c4d9677e6a233a09962755165d74023835b6db53ab81b8cc5220dab3be97595661b17aa7cad32aa4531e2a1a3f8a0fcfc46a121880e0d301a746ee6cc5e7e966570d497b5beddea676fa7cab532b4bf07744a6b5f8a8107b47fe7df8d93520cb47f4a5b576d2d46b58ce2a3e3a33d1661388a8fe735702b80b184ec10193284c8ce0e11223b4386c48608113224161b32242644084c48902042603021426041825c01e40a9d26ae08d2c415419ab842a7892b8068dfc9afabf846d41a90bb65aa8eaf7dcbadd27485dcf82e5df27e6de31fc0b3ece2a14f71f7d509592c4b4cf36944bc230f1d355f86de21359d49d90a782f6874912fa96679cdbdcb01dc6a432ef761feaae189dfbecb9cdb5b0dd3e73c703721ae0fa196342c0fe878848a691ae1ee6b8366944d7928672cce58112c0fe838c49df937a9251141e9f78ee4fba5f27d1209c311a9059cafabdadbdf2c8eef108041c0fce286807eefbd2c33b70c7d61ad16330266522e4ebd1ee6e7ebc979334df6bb18a3697ef632e6fd367b1db38fd1725bde56e77d57e20721be8b61a399c9b3a8e10601c8d071860b1d61a8e898a2a3c944c2592ba9d0fea11a48585cd02415fa52bbf3321057301063d8a8848cc6558c37e850d6192da98734c7506f3323422c69b9f44e35a1051abd4db604dd0e573ef5788f40e341015be288ec07af1917077f9a5b640e2d4cadd965ca39e70ff2fd795c2ae333f2449e074c297398bf43cd61fa20e5e4d10f6899c06cc93e78385fe61ce4eade2694f8519d20b706f49c5b037a3efd60e8cb68ff467d9ba38733dac7bfa17dccd1353ca351f35138ead3bf5169c6417ffe0d9a6396d51a7150edf9c6c5adefe25125cb3157faa03d902b68e2078b3661832240cc8f71c639890045956f5ffceb0723f3ea5a5d658faf38ebc787da38ae9e25be36aecc4bc510a394b566b566b5fa16dc6e5607e66272950b1d3f156948ec928387d39b38014cc726898faedf795e7762389d1055b38a18d6af6fe78afb5a8448ad75cf9efa72092e1d26e336082701dbcb96412f2edcfa1bf492d15fb5eb5bdb72005f5d9e11ce66d15527063657571c4cba7a92c447c7192a103ad4024cdebecd3cec9ba0e068f9166b5cb8b193928a6c443406b787e9e59bf2963c5c30da534ac19f517726984704030ba4c07ab12fbf1b59d316cfdd229714b9ba2d728114c7a45ea65ec337a637c15dcbc5381c5f60f2e8f75444a12f297dc98332d2df474d9e98512579cfa8d34fd4e9f7e4419d328ed383a9a75fc9974a5e87d1d73f9de83fc9d73f6114cd38fceb93e499378f779927bc4f9f493fca39260f26fda4f931cd31a49f39e63be11c93a79232f510f41a2a4b7d20ef66a5f74a5f52fa92524949d54a6aa9e4bd929abd9250490ebd578243794b5de24fb3f79d0ade31531e4a77158faaa87cfd70a8bcaba87c89684824f92d75eae72479c7a21f8d44a7ecd334ad9e462492ec2422c931a29fa23c9ff4f947b8e2e922da01b994fe16b9469f9fe2bc436a921ce33aa47ebefc70e0d0ea1e6599a973e0a0e7cf30494e4f370f570f5a9d2422d2cff0247807a1278f1abdc127e51c93474f118e7a6251ea4b70d42a386a4f03391afc0cce9f2dfc624a7de5e1d2243f89b8aae4aa779c69eff874cabb87a8477312f190f6503f45fa5adf65661bfc1c9347a752a954f7027e206d9d76a2e9734c1e7fc737261eaea9736b758a734c1eed55c9e3465791fca98a21fa54450ce5ef9904edfbd4e393a733e11ed5f4204e995ef4a3df261b57e598a0c87573f215cb4c0d7382633402eb8de93ddfb4fec5d4e9505d79680fabe73964c4439f48437bf971a3d8404f1bc450fe249974f2650977877c7c07a1a549e94bc0f6d2651317ee0ef9c8e8209277719f518e306a0e19d956936612f416b9ac86a1485460f2581d3f773b792a307974c808dd219f904fc808e823833b445cf53c40b8db84e39a2e53aa73ee662379233feea71f0f4bbe9351f2dc92979f02e20b6dcd15495348a4512a4cc2d3147ce5dcdde998dee43d059b9e9a40d0c664f2f43ffa2e9e007f7150cb2fb5a8d0db746ac54f01db0be8329940176db9483fb8c4c2a556a9080fa5c8d53357287ff2db9a9c7abe07c524b3b2c8250212695ce192fc0997886ca0e58f4878975a78a260939f7a3c94fed4baffc9c89105f0902c38d203afe2461a242d5ff48a34bc44335724e8ea4c18e51d7bda43463c94a29f904fc8c7f4ae720dd2d90feea6ad4ec78b5c51cbb3888585bb452ead87b63225ee16b13cb3b9bbd371d3bb3fcb5c9dbcb77414e02f287fd3cfbcd4aaf5cc95ce7160c2c39ad016e812b95cc89d3e73455296875213e1ec524bcbc7b9fbd413350882134b3b5726acee13814e3da58f7105ba484e42fef567aeb4d04ef79eb43f9d344e1b9dec07733a715a0a057a25520988a3be295448041abd9c8cb82a7bf9a79fb9da5e9e8c78284f3ff60ad7f53ef5683da06b6ba29f9d100f3b9d2e88f49c01dddb8c5a807dd39b328f1a46d881ce8bfd991791c845b1088b581e4af79315a0cd10f7c4d29ee6530f8bc572d5ecd1027d3073de7dcae02b9f7ca070b7c87572a97e8858211f57b9268d483e736542452ed16bae4c0fba744017a967ae48d38b5c6e84bb69cbf42e4efa9938b8bbd3e9765cb5a2e57744220d5961aea2a10769e6ca94452e1a4de412bd3c9422974623fd5ed7fc43dc2d326ddab211fd90a24ccadb928cb2dd9d102d2f6d51ec72ed90cf7c16f7227a4d0eef3b31952297965bebd12e918d28092dffd42377a7a3e5ac5f5fd332e8cab22cb3239beba1045d913a4846180ebadc3568e32a29b53f2dc2c3e9798b585d1011cd5c81aeb822ffd413572428aad1f1246269998214e8530f0a8e8e33ccd420e6cc0cc2673c6d5380079a68410f488467273bce6cc3f5fcffc155abf8040e0484c406b82a3a318621da7f479e9fec8929b4a68c3e380c5d81b0c4dd2c2c93443b9e35f7013f78b882bb93536338244e10c1c70c279c70492386a084145c3b30f1c3379dd884a2c7891afc70c2a6676a4ec4c0470a9981f3fc70c2c523728286b5c5b6d816db625b6c8b6db12de68410349e1682e828825d6187c58db47b7123ed62dc4883c07474604182c06041747480e8e4e4e80001a2a303242727891c1c9c9c2492c8c9490207e707ceeb85f3e3070ece8fd70b7605970dec0a2fd8155eb02bd8c0aee08a2a1be463674cefe0ac3c0ed7f770e66d3f3f1c59d6e9185d9cd32982376d9a739a36cce909d36860d90fd6583f9ad3d1fe3bfb81c1b43fa7133fbae169335c41345e6b687ca48f8f2be163051f1f8f0a49c8f1717d3d3d1d902e07773a1e82ef813d9a7bdf40578f157c7c3c2a2421c7c7f5e5f8d0f4e86905ed56f0f1a890041f2ae8ad25c10a5d8ee682bb41578e8febcba1c93e7adeefa3cd68e64a8ff541e1c156479a1e2bb73969967dd4c515b0bd84be8bd1c55b3f53fce4d86a7a94e8b15644d3a3bb58d31dcf5c81b1b9327f5a9e29c4d337db83311d3d3fa6e7dfbcaf46d9d1f337183bf56c4468751ecdf78140a0cdf336afe5e600495a3f53fc90b4dceb227185649ca05b29a5f57e141da145341e927892e77621afe5928c90429f0fa49eb922f221aab1da776f42413410b487f784a6909d174e8e8e08274707c6791757eb7d1fccb5f67ea0ce03d91e54df0f06f41d89d772414f629fe483b120900d918442a1538f4b4707167b659de75d3cf5867b2021f2e137cc97a21a3d332078abed453eac88464453c47a17bbdeeec35a7a7e0989749ff4c1dcac8508639e341b642de8d9a9b8aefbf9590ba51a305672e9f9243056ea99ffca81c5765e3820ef62a94b3540f43e1939f5cc95f9129f7cb41bd0a0e09315be42b39501e8b787c23357db8b607a7639be325fc7c2f48ce9d9ede839e76f91e6693057892b7ff69c7c3c9c272b3c2c517cea19c2dd283c7ace47f171d52ed5a058e1a3bd224e808d07a5a7541369c40782ce17d174375e0baa4f71f404e59d22a2e77f788b303cdcb4f999d581d535db0863d29d65a622834d67c3c1a6b3c4124b2cb1c4124bc0aa28e2f45d881b7fbefcac735597bb2cebbab7bacb281d70d4cf70c4513f467ea603d4dbefeea387d965f7f4764f3f1cddcb2c35ef6a4aa37bfa5d96653059943119ca46269f003a7b29b39f5b7b19a96b16a58c30689cbae6af54480256854d240173b068caa2817d350b8b13d1032b7c50448336c718f288554faded701c94c572997be8800e94a56506427b19fbd998d1f42d0f756af6a7b659c7d4daa4d9ce687282a0d376787a7c7e58add7ebf57abd5e1768b91fb2f0bc7c5a64f6c2c9d181c56a6a6a6a6a6a6a5eafd7ebf57a5dc0c75d2faf35353535353535afd7ebf57abd7a668e0e2cb6c3535353535353532379248fe49138351df56a6a6a6a6a6a6a7e587cc29ee731ed5cd387f65ed38736ce49336ba66bbe70664b27b613e389f5c47c623fb11873578ca7c7e787e52d1a9e9a1c1d586c47f2c41f169fb0e7794c3b37164dd3f433d471b63c265fd16aebd2c5111616161616169627b8fbbb4f772a85f69bbe6b39244d0e49a35540d2c0e42024cd0b1239248de75080f1f068173ac27892d0197d9f3926fbfafec1fcfcd3b43d643986bed31b3252fbab6ab6b2caccb7543b0e7ff78fd111b367b437c11351bdd5bc65cff6dad783f675cb5ec6b575ed7d86b72ca2b32ccbeca354abde675f79b0ef759f675bb286fdac6a5aae5b664a22ea77dc7783a3af69eda966b5ec75f73f19654bf6842411b28624f1bc50debe5ddbcef3b2acde6f4f7b97b9ba9dacf213651daaf6546a19257ffbec7fae58c0bf51b664115944e4fd267ab0fe5632d234ad7e49de546fdfc922f4f69208d1367d4829bdedb3ef86f6dcdfb98aa1968c517fc3f45da696fdc4203aad9e19ccdb769a666df7516b7fd374d8e877966654f7f5b367992b17f037d5d997bd6f3d789bf660067d996aef7df6d94b22648da865111dbb4c7794d2d7a4278990352a47737839bc1c5e0e2f7774bea643f6b6082d8990316aa6d7572227aa813de1882ee4e86d378cc746fbdbf727baf0d239a83042c5b532462890708485020940281242800421269d9308d58ed4288ed0852308398215363246ebc35e214c772a7ee004aa0318153795522a8ea859ad302a484005cb6ada143e5314a19962486c8a2076b35683591fd6cbd9b86d834df1e23a8ea34e9480043f5914b7a4236c0a233aafeb341d615310310508b487c1fb3c8fb2a8142629a6f081becf470a22540a2b451040200824050e78ac142ef082a014342ec5072e8c0818b489244442b22dc193360b2122215128b4e90823b20418111dd14824f292f0ae8e30223696880f22248045616454322a89a288132ea8819e741e1185103d4d3a4601240a1c0d8be255422a29814551038bc247844541f3a323a412896445574516053d42c933954af2082e084b123fb4bcb0271c017b820f6d9f10029389c944da82c9c9c4a484c809753ac19c20e40b82c43027fc48c1b8a2c371e5c76ec3c1b6448c524a77d7e68e142847835b5f7a9aa6596bb70f867e91ca795609b7eb3a5b2bb8c4f548bc6de9a495f3e101bd7c34fd6c7c5a7ea886d422edb88b27011ba9b5856a784a786aaacc1c4fa806f442799137f62b06bdb69ebb4335a11a9ab91ac93969a5b52e7137e8f5653d9a8bd4c2a42248349a8b4eca3d05bde6ca56520b466ad9d0e4a88eadb138543357422e526b0349ad18697cf266fb8a492d4c2ac257f607e865723a9d421c2a954a8d5e35ae8ed6930f667e87e2a1a030416abd7e7888c3d9dc1daa79b96a935aa11a57858e08b94236a4d60fd2cba1b83b54f3aaa133721d0a111d18bd10c310b9a0633492051d3f7a8c538845748c54442948feea928f8f1255a1173d69f49b85888ebf92a3caa8860544d57dd0efb8133f01088835463c44d5f7d154041ddf00d1fb1861380eb246aa0051057e0b8be94b99ca1a33286d31c18100d23464c68d18d3f148da32393c67d7edeeeb2c914a4658149a79472768e7e8e65efbd8e5cd7d0534d54874ccfcee5db6cf02249593f4e5e680a657d678159448a3860843cb33680b975fc81a381080250aedbfe5194ad0feda8c9818fa83f8c6e71d41fbb7d8883062a22a462e7b0b557555775dde547b97c9e10dc818d68f1cc86a4cf401e7b5d9318054d194be584de9901ffa44912d00f9a145382dad9463801f45b61bd8f81344d8d8ccbc580b8b418f85a9e0076de28a13c08c884958097c006107083ed01144e9f09582daead63ff9d34823eaf92a2adaf1ae5ace77140ed7fe3b24b067a28e1f0e7f8aa3aae8f974e6388390e9effac9acd3b6a79acdb0e7a1b6aba7a3fc487f67afbdf7403f53d115c7cf307d4da339028969121da1000244cb6f5bc18db92da856cc17a4c4934e1b832606b9a14009cfa11f55f66db952db9bf9740133e7db0309f71be2df2987e86024b042a86bfd96abdd20002bc3cef05c7830aecaa56174b2536a60b14d26522805d6df96d2a021c2a8bfa79542d7aff56b6482ae5f231274fd5aa31074fd4a43d7dff192507fd7fab57e8c18d6cfbefa5efdae3e57ebdb5a03a0ebd7fab57ead5fe73bced5dfbe7f36dc466dde64e0add447634117555a2eddfcb3ed35f755f733efed3bc73d90a880a7bdd1357928a58aab72781f82dec332ae6140d353f11599c3db2697df311215f0f4fcae6ed3ab803744e5c170b7d5b2be8bbb2a3d3d3d3d3d3d3d4f8ca08685c69d2f3f34596122a2a98e50bc8a686709c226e14e2948410a3356e9ac5298d65a6bed8c13cb4a2badd4e25a69cf898d8cf1043e9e38410f23f409238a4c77238698fce009237e3c6144cd1346b4322dcb9ea0f9a14fd018e9beabee79191256d3715fbd7d9d8087321e7634c7d640bd40e51161742fe524c19def3dfcfc199729f10eaaf705b4a7a7fc7ae05ece39e7cce237a7fd60bc0f6124ecd3a7b66a9966747e309ee833fab3521146cddcf282831295c8f5b721ed679e7caae51ca814ae6329c4433967b866f150fe473d19a37df4f296d1debf263f1db2160f650e8fa2e6475d310e36a46e39727dc8395028d08cc32af453ead0fc50f49b3b7430d61b629f7ed5b4fbae7bddfd56d1ddd31cea10d7bb2ef4b0f3bc1e0ea0831733a510107f2f33b5e7ddff7e92e01d3cbc79011e76ef8387dd47fde11c3cec7e52208028906be3eb4c290fbb77325c170fbbff728b875de7ed16dd7d5e0e87b8afbb6fe9f60b1c5cd57dd73dcb0bdd7dd7fd0f71d51257baefba16ddbd4b71abde1106f3c243f95d8e91ae4b0220fe36cab844b034b52c0d9b420f7f7911774c2d65a69633cb4cfddd98336a9f3e72957c23ba38e37e383a7377ab65ebe17c18dc48030054349d7d3d1204a6b3df5688ce623a1ba2b3203a63a93c0d2a52ab7cd77257c2936e7a9ec7b9f80def4fcf89348da26890d4a3eebdf73e8f4b5d99e8d334144e610abb71113b8ba310d73eeae377c3660f8539edc6456efd4b0b171f41aefbf08d0badc58b300d42753c8459aa430010d017172ffa6cc4615ffb9efb707cafb5f8f8d9b869f1dc6b1f0c273f1b9ce8c64546715f7a4e6b41756810edcaa03655b8f56792bc0b71593cf73c2ea53a54e7d3a1affb5bed71ef6f363246f6a4ee331b57d9c022b5a88617af8c533eba2af5b50977d79fd0c7b86f65c23579d3cbc0372dbeabacec853557f555324ddf0d16bc596496a73dd306bca5b6e1290f2d6243fa2cc3c836dae6f5027d2f9be768868c3fefff54de212aef30673f220c6d96e0d65665dded5be0e82bddbc5cf6b89537c140501dc24050bcb32374f6a0cc083afb12d601093f3cbc80de2b0f6294d52c56fe84c5afbc93c192e4bc89ea4fc692c24dfd7b58e32627efddb6fbdd3cf9ed9ee0d84e277b469fb4ec395ac4c3ac87f278983d8cd76ed69a2b19ce5cc5d902f3b81587c7adafeceb07c3659146d45908e43a62531e9dd578487b60bcf636ae02e51814e8493e6a96cf3e7bb92a946350a0d0476dc3679ffd8834b8afb01a3ec6c7f8e263fc8f7155597325fbd1c7f9a12ee84b9ec3d98f08237b1b70c682339bd18c31f24ed1a3af21ef943c43dea6d1e3bcefe794bcad45c9dba2f2be2653dea627e5fd7987ba96e0c2c834531d0f2709ec831f17b258e05fbcb507df3d704fee07733f5c61b113ee48919e92e93e87b5e7b87b9fcb372d3e8477e8e40404d21e74f2e07716efe0bcee83b1b6e441d6520dfa927845c983be84fb70d893e741f4dfd572e94b1fbf93a849a88d87592953174735e5287d79983da5c24d3de9778684cebebba4138dbb5f0ff7bd93efa8e7cdd0b188b67f318b8ce1fd898b739a0c19c39be1a1f720962163800f7e087f3021f0e307033efe4fe1ba4e6b9cf7ee81ab65cf43cf7b1e97c23c8cffe294faa37140502d43758ac56f6770a17d09e64a4ade656a3fc3e726ae20d24503dcefb9cf5ff25d0ade52a77cf4550bedb5bc65a84e79fc1d86d11effd3f86f3f1cff9ff22e0edab616a74e6a9bb667e8bdf570f3fdede4e437c96b5a0601b927799364bb9dbcf71cc61b64b9fb2cb286f7f737dd3233bcec75df0d920f81cf1265cc7015f8dc8f3e188e3bc1dbdbe7f06691354eb416bd4dde93216bd8f738540fa53c437b26d9e22df5c96b0ffa2de3f1d3c17b2ebb3828a3ec6f7fbfebb8bc7168cf3df7d27b1659837b2f5f6ecfd0dbe4b7df33bcef06e8b91cc3bdf71d08cb9031b66d02e24cb62daf385c2d96fae4e4e4e4e4ad0c1963cbdc9f601619e3e45da609df2f61d293e078e20ed261cb32640cee41a8ed4f9efb933f753f283dc96faa2f494c29839e7e3d785a7b19b286c6fdfd7b5ff4c1dc6ecbf4c669af3719a03fe9b4073d9749b4e734e86486de27bfe13da3bb78ff86f737df9fd1dcc59bfb13d0671932c6c99384fe04835d94216b440d8666e80fe54718450711d70273d443ee4b66f8141c35f8e25d3cbfc82d7e86fc7807d5da771563aaebb7c38cd6b20cbda1bd8e689520725399a5b52aeeae3f91c6a633cd652d9d6545e8ec5fef0aab3f5cf5dadc7fafe52de3ddf6e1ed4f5cc331edbdb69d7c96b134edbdecbdf65e96917a7beec321f5b6fdf79df6e1e0fee35e7b0fc770af7d573f1bf6495ec3dee6c1e6bcb9df21b5f7274fa2e1ef3dfc3d577f78989de0935c5f1ece18bc74ec2aeb48c6cada73f751367b1e97961e65b30da9ed477df2635fb2cf2cae3fb81ef1307b0f1fb95a86c225d97a509bcbe50acb3a4ede85b8d643efa387df7315a6435e67bd90673d309f641d7b466be0535fb57830ef93ef340c6eedbfcf31a1077378dafb40edb9ef7728c7d8d79e7bff7a0071053c0dfe87ab900abb7177fd09d523da4775f6e3aaa8b978d005f8e087037c0dcc31da83cf83f6e06b1f8ed0832110d43e1c5ae8c14c014f6f3fa3351d31f6b9075b60ea2b27df4dcf8b5cd06fefdff71bae20fcc37dda8f4e7e7b0f9f7827787bdab3f18172fc6cc89ce0d19bf03ef9d16f27a32f6938ebe161f616dfb4780ee7fa3357386b238f8edf973396875955c1ad2d0f432ac5257919ad79f7e7cde1e992e7484e3caf3ae1eefa73f2f588af5a7cf6f5c755de67dfb5b8b105c7719c165be0ee0777cb50d07fd8fb0db7c03d407aceefc67d1d31467b0e23b18372545319aab7a7df8dedf38d0bf73aee6219aa3917dfc205976f5affd2e2df054671b9febcb4c8f588af645f77aecd35e661f627b9c23c1ce2c23ccc847898fd7cc1e5befebcea1157edca62b96a539eac87ab5cb57d87f2d497aba2abec675f85cc9e227cc5c71147d8d8fcf89144123288de99d94f9ee9337fb2a7acb932616545b80361e9c865ade561f65ab85f77e6aafe54565cc9fe841b612795849885fd361a00a0e23e7c455d467c4575b61791f7d5f8b71ff1bfa51529bfa5912d8fc8247c557f288f8caf2a912142824820328993dff2873cc2872cc20a23f1c8027c5559337c5561a3ecfb1d89c4214270d833f68bd448ebcc4653d75c790f5f913f43de36bbfc082d1fe76dca9eeac8b742cbffbcadfc94bcaf7c141d9d7dfd992b691357e4ffb0a9bcaf7c54dea6d38f49de99cb94331c9d3de5914fa23c259467947974f6f5355710a8acb93a405c917f444b235a7e28ef4bf2ba795bb0b2e483583afb4fc55776e68aca19fabed0f2b90ad359cae67d7de7c351990ed0421755f6c67517d0f4522c43758d787b14e7f0743cb2cd56d67171abe2fa6fbfb1b6598db84afbf8b20ef195b388b48a5861a41e79f5701b1ceb4978e89e0324beff14117346e36115321ff3dd713c94336735190d166efc9dd1d0643df89e60b18c98e1c4912466fca382a8e46c34e6999e656a46440000007314000028140e880483b148204c546db50f14800a8cae4a6c4e1b0883204c711462c81860000130000044006444081b002f88143d4bac84f4a4d6a3ba0ff4bad4afce631f722d717a0ad3ddc88842837f390db25abd4acb2746090bc33f6f2e5d766cca438223b29fc218da0b0ab2b1cfaad5b724414a1a9c1d8cc692d0fd2b8d992f6dc46abbb1dbf4c9d5c5bae65080ad36fcdc9143b56c232aff190a5cdd574257fdb7be3a224024745524f629bdf637847b83eca5037c6728b87a382e77f717552c1145d52634156f72e446a3342a92548a5b27c9adab3241c65344fbd3f555e998c2b21ff1580fa60e5b3cfa9ca8c183fb2760d78f4ea4c875c10f387c2c7588f6798c8aa2678abe9667888c0f2409844f49fa8f56805599c632bdc92ec49bc197bc652b69d99254bcbbb0fbf785c725a2298e22238635bc1ea3bc1f4cf3235769c4532cdfc551376c6febd7a230fb25576f2c20e5ce28031ba70a802107dd502ef53dd18fa5d2e8d75c632920d2cad18bfe22f6081cfb0224eab5806282ffc6859bc8216b1ae1f3e461b3eca1ee69fab8972701d246e7a9a168bc9b2826dc0c634e6354f6594323bb104fe443d2b1a3f227cbc79302f7c34d620084f3cff4e00fb571b8f062dcf5949ebe71d168bb5c42924961470a46b56fdc33571061762876239df857c9dcaecc2b6f1d565feacfee9872185f7ef69f611d8ff4930f6deeb259f0705cb643156f0550e8d077565ba233acb022dd1f9520d48b9451f1eacb0a28f0caf86f2cebc471b47b20980e1675fb89dfb7dd90e198a8be46d3d6c248258f5578b0f2c27b84f37b2ba20e834dad907fc83fb3ae778feedaf9a90a1b42d6fab47b5b6809158a208568b24d882df9496bfdf6d38dc1262e67af737e4f5e717adc8137e857a29ce3dadcf0381d7080848b6bddb219243d04165ae3c506085360737fc82a1d3a93826f1b2aea63be4c23d05900c8f7ab354888a06f555e0d98d97626e9bac0cee768861bf5cb4bb161b30a1c4409e979b5a82b7f95e6e26b9b7a0d944a38e4b9915e2f204df4fd64b5bdf384cd0e2f8c5ea81a6a852c6e85bc34e45f2496664b6ece706b7a2754908884fcb23da9d265492da51d077945bbfa33f0289b7f3b610b5d595c88e9119dd455dca15725fd4dd8a3bccffab7972da5ad9908e17e4684ff36f9d0532a541ca1f43a4820a5100d4681ce8418c06da014a962a1b47aea70ce484f07f8199f4fd14c61976aa09c20b0f8e1969ad62ff9404571939ed95af9a031591fa99dd4b9a10f7c0fd4c8b88488129892b8abab8800e104bc879a37d00c5a6c03fbf7e34185952e7978485bb51ed64cb097a3a26214e4714134c292d41f9dad47c42c1cd8aad21e1fe18ad878ffaac6d6c296f4cb2a2f69a851fbed1d6b0c2581f88bcd446cbe6bdf30d629a918b0880841c2f8c31e44c1eb44cbb4a405f597e30e69465d3cf08af9d541e2e83b06aff0bdd148b8c990220e4b4f534d43326bdc9e288b8da09a8412574726005f1586df7ad066ce8143b863096ecc397cf5e1936337a54310e24841c6f1ff3bf804c4aba187c3ed6344193da016b2044bbd44b116bddbf4a919a2d271c763ef04f3e099f6aae72bc3d9d9471e0ee87a2577824dc933161b021509fc048a3d2f346fc0c849a28ed509a9f40263539538a5cf0064be022f59f19096f8a2065bce53092aec1fa9eda41b794868377a1636ed59302fc4a91221f0652103fc225b73266470d9cace3af626512c9730004feb9e744f2e94011c98345cedd79801c3e3906a6eb2f2816a798e095efcc64a83415aaf0ef3bedf1e06bd1204bba914a341c1c536f999ca516954b095536d2095bcb91af9fb15369f98ee90ef701750b22dd377265eadf4e5770c84f868ff9816c090d1a3c099913a726e3b59efc1b02a7c557a018f3b94be47545dc858a827bd8851fa4b42c64cb3764daf76c3a5d22b3ecdf66b5d8cbe03ac1b4b0adf34c2459d13969222a1a1c050629f9a2668dcf407dad1b8413e85bd7356461a857a3eec3fd8688d3a5b0f71b2232ed486366590c369cc6bcc4f3b0d415350391deb13b0d71b32d7eaab3a0792396082c92b96e840c7db4420ce9699fa363c029866623b103c0f7c91b76e906168cd0879aef572437c0167555bca990d01611d6c8aced6b4a0ba8710958d8450376e296cb036935382b0dad772cf2fe61defb081df7dc77bd4eda35ae18074c934a8f8badafe17884cc0c43b30f7918cff24a34aaccf7e08b0c9546c9d857454e0d55959103b9db5ce71d6933c51d01e31c97e469b206f3856d766375877a8478981e373896d0b83ab8218285986615ae31415889e33465e6d627eee010f435a088b2345f8026f30f305ce684b00fb090f9e6b1e7de87fae824c8fe16faf621e47a2056964fe335839e356251867f44ee152ff02d87e0c15bcb238a14341a2a4750dd7ff3b27b49c064e611e78c37b36cfabb4ed915e985e1db2edff5a6a764801d5d5965b2b55e683f407b4421d0da6346e0ded0a392f8d91dbd68d6fedc837f14e9b9a809211880dc0f9accb73bf52acffa965da5decce142de2b424614b559f479fe0a2e5f747a1bcb238510df95d371e1f818337fdffe7575d709aeb8d1da262f17ee97447379613da7ff2b13e22d995ec9e8c4fbba393c99c4e29d82b4ec8463d557a4ba621d3fc1fa1d84278f20bd8a1fdc7ffb2dc82cd08fae0a4e76a5464925725f3ee60b570e2437bf2491a18092c9661d61b31f92fd0af265e5a5ae12bb0d693687d8e8abdc27d3ae53958b26751ab0b777e2f2d98cf04669d5eca17d689f33ad1b9da082cb2bd36b6d7390cfe81181e3d772e00b3b57e4f088cedaf2653d414d3498d4c380f6f9d4434f317ed5ab342a7eac04bb6fb67ddf4c9b9f45acd3b85ee28b5840b0f0619e3bcce2b5c01fa9efe47f41b5aab1ec87ff1fb828688a160daf1020cb9fb060167f3b1db8f26b78a721e82f638826ec6c909e3e950a16c26969bc56cb316d03708808541cef011803290cfa514ccd98fd4cc76e0087caca1ee07438f88c9a42b2d63808378ce458e0949dc72fb167e277905bf2f0f6bf2a5cd7cec128588f5f277fc33631ad74788564d15271b11b9bb5cbf08412abe38f8ec446d628ae5e115375598624fb10433461595c381618a560b62f0bd90dbd5b2821a7e51ba3402a4d6c5f1e458036206abcdce0638121b96d24652b26ed7c423c08d4d11fdc7599a15af24fbd1d5dc02f4a62543d13932847e96a2fcca93431a28bba2e4ba14685c6af12c90de551f9ef8941fb7a664572e4dfe187f471c130ef3170c3e4584939bb9d4260caab097a72395324d755537b0833e31bde72011690eba24c7d7779aac8dc5c954c22e29e9eb06c3ce851fe2f4af3edfc6cde0eb380bc1165dac9a24443098d826931132d332a9b09e1b183b653e2a15b523accff893fbec101af02b089671aa6c782ef707097928ceccd132e551480f5b1fcd71b1d682d566e8c79d05c786772f714c38e8540b872047a3e4b881094065b36935d53e816b9cc32bc652958eeeeb480aa98e7d4796cfe5e38926b0764100a734672ee2b10d011da2ea3ba465dc2f0e0240c6b928f46c7f6bf736f0b558c522a8860f9a75847e5f08ca6e8d9f27cb19f2f6166611a87ed71763ba1ac15d010202e8c4578555e16b7a318291165868a15f905ef841f5fbdbfe732c006210461a84d960ca2f787a2ae5c283866f02d13702c701349060f243db420580f6aa5440b20c51113f12ba574fcf1b9775be738147ddf7b44cfd94748c40cfd0d5e4ab537b0b344319dd06cefa8056a9c87de0a0088df5d16b5c1d0d30ff68a4671c05698d5b973f6220439ac21b0436100896cfeea1961f258834bb032ca9dc1dc07e388fa850e0fb607825159c46b899999a9474397f93ab804e9d7a04b4520dd03015a131c11b04f9b1493921941e7b59d5fd578c7eff204df600328424717e3f9dd49a81158db111654c6410e06b2440b167521ae3bfe12d3a81cdf4d24190dfc949ca4daba41f99d440c6bc580c29326740135aa17c54d7e4f4016973905e98b63e2cb28fef44e4de3c80acedf31f6b0caa833433e22e021810d369b122c5304b0425bd8ffd1230b7547d81bea6c6f1e7fb05dba0841d7caf969e212b960ea4753d6a476b1e3a0993badfbe0388530e1a4452dd593566d3297ca05604284e8a00191607c9b8287593f158c6018d6ff10f5f6e22c9c001aa62cb7a9a482f29683446a04e49ee4f719f185c7afb71809725c9e5b1be8bcf29608654b0b0ef6c811e3c873f3e23cfe6039c00bcecd464a18394fd3a3536e759c6748594a60aa54bf1d19d3f1c74611f1fefc58221049068eca52580d87fd35a5402577c1664f3a460326b0b4b41311ac69a225a7b7c6877c31bfcc92399e24564e966c0dac7e7a4815467b920bc15ee3c32c5b0d3a621457c28d74297165c3e9dceb2180a6a42a752eed589c6ad62ead7a10480da5c42fc498b8f09e990d787797762e74c940c6bcf0d394781e090a074a0d3175dc35cbe8028cacc53cdd47137e75eead05c282720e311cbce197e4d4fe4b96e04caefc0ccd0da11f81052e8fad6a06542681e1714a5994e9c455a4f8ee6fe80725a1c156f05ff54cf5b1ae7bb6eb0a99c52a67c6b1a415f3d1115d2cbbd16cf7db780d2a12671fa9489d106e2a4c09f142e8b1670cfd6988d678f952bd8670be8c28b2a3ebb85f20555ad6b405326d1b48f3483d06e891c7ca2d73947fc80019c46a5d339ba7e325a9b0c8f7b570a68d61eb31734d1a170b074c8d6558ca42714c166d75410ea628512ba83ca9e6c34369962fb0f2364be55fe2d2ba41071c513a7738f68b1012ef32201d248ac927cdce890f12042845be9490796317ef3b9f59298a397f76679779e4c4b0e0cf1b34f521144331dc6327824b22b31ada83164c05a3e8c933373db54580f510f5a3b821eea6942d0f320f9eb9fc4e844feffa95e9771d993df456fbd7ea3ffbdca267ae63a841429812c035d534f0c7feecdff0a6b66176dfdf5c1922d86510d3f733eb7fbba75249da3f392c2875ba9a0f94cb8413dd1b07f93077e5e070c9dfec5e7c20acef6d1ccffab0013e990f7707f29f8ef484817f3516fa0c8cf662d82fb77de1728a88aea258d4cae77d44e1d932186c4c91a75c536c08073f04eee465da4a87b53fb5476f88920c167abb853ff77be9800dfe23e8f48dfd89a044627246d45930bbadebd11534da28f3494990170048b68d0835af7b3430314bed1dc6505eb56bc4b1f3d12a4c02cf6c0a568acce71b7e3b2eb7f6c409638049716bd95272600263afce0c57eb976c2187f51117e6ff6312129a2dc86466af1df1c96c4360d74afe86ab63ab9055394477fec90024b0ac9a9047812b1b0521b3f02d31bba47800364a7e906b547fbb4db734a75224169310c83d2a492d81e39d7dc4e9a2a39784d4454febb3ce112c7f6a726e8351b25a4a1c4a845649712849d92f81a23689c19283ca0130715142dc0218dade9e1be4da3c03685b741e74026a41b5be551f061b766fbb2079ce5e233d171e09e08bf4d61c2462981fc56b726def85959940df503711c8f451ca0924c16458b242d851bc88d472ce59e823e5cb9d450d519ce37f759c3036532d9a2fc661ae5cd7df2f94c55cad44e1f8103e6ad853e166cedd55384e46d10e3f7c0fdec58a879cf26a6207e4a16748c7e0514fb2cde9d6e7cc956d2d5570c30d263a876787d5503c84a8be382431e034bb4e7be742df8fa9e3602e1e9e9d28a2a23377f9d36aaef54efa126c2126335d6a11fe1a8b2c7b654050243b901e803c8eee672e7d35f5b466cafe33adef5f269e7bae6e8944256234f0a0de575b964d820bf00d73713e62c1930b300ab19fed78648cdbe7dcdc7bb904daf53653f0df8a73e13c7bfd95cb2ab7eec9de224490769c638d0c41e11ec78d0656d22ec7136065ade6c386d202a04f52540300822b65e82bbc24a406fa88e8595982b624a120617a9aad8a4def566a483829b2f14f6c473afd080c25e51dd40a1b0877e178ffc5a9e7cf5ffb152ddca86bbe24ae0aad5ee44f7b73611d7fc9a72f8e2bc4e7f7c26212ef14d277725a07eb6ae4e1c6112088c43a73c9531ca92e2455f1a6f8aa440e8395e59bf5b6d3d8fb4dacc2086370b097e917303dda30e3d74993aeaa05fee0586dd2adc2ff98c91ff307d7f1d2551fed00a0a0b0b313f496695c0439a9e7b46ca47364a676d5e29265d649a21fc17cdaa95dfb73016b20c70ca8bb0b382b5c10d45cea3bd6c49b38d395c9fe4a6243283a705a40fbedcc64bee1bb14a3e56ef45beff2154bacf1a50ea169910cbc38759d25823673aa2f93eb0a6db81296a7fa27193f0fd25c882522c6acad3fe6205ded827eaf29da2ca82177ac9b094d6c20b6e58c1b740b4f8e0aa7d3f8a0e83699fc3423596eb1983f44060f1190466a85ac66495673f8f523d67765a16bcdd955b4e9f0c2111f74ba3c7737ebd2982d00c45353ba597d61a40cbb7b3216cade653ea002c6a81cd00cb974777f6696eb3d426dac7827b8318bdb449b355c257ac3b46eb2e4fb6ca666eed9e9e8dad217ccce02be000ecde0430c66c4a824067a60f932f85eba59955300861992e52b1c6c9b6b4ebf5c01ba671e9408934eed8a03aa1aca9bcceb54d5f3c86be8e80f11ec8a4ffc710335e8dcdd9fca694b234979ba3056dd9e71e2f89da361d9bc5f4a2cba9f202a419aa6901d65886148d729087f86b141c620c41535bbfaca1ebf82e0d0f7149cd86cd72f520f7b04a0136ec3d60d6ba15d053cb3882ff68a9a3c55b45e261bb7ea37a1c96ca31cc48e8ae176416788f459402b574a03b24b6a06b3886d3d692ba8f38861c44acaf08cda49ce274773d53660bdcec081934e2cd99e148001d266c571849b319f3ec0baab1b16240148e4aa374c9faffe4f101e20f4f309d0fd1cf97d95693e7ec9360cc2ea63c39b76e93c680d4570d7cde34bf20640e36131713fa27b8cc66648b7639335520f75d7815c7ce6970772a247bb2df100c2e9d04e64f76a77595af9f500bdc751a9fb5fecf61dcd24a43176ee9f459c2c07f062b357eddf7787e51047199a4a327864fc50f6af27e571445583671f4c9e1a8f8039a58de11c58896491c6572782afac026d677a238e265c9479908075710d02113b8364c70c17311f5e541992e115862cab6842408940175198a216b9f0d37da00ba705dd005a0bccf541d90ef33bc8abb8dfc2324ab578532647a7e9a76e1bdc328fa9d63ee9060d429a912990806cafb5f7a1a56e882575ce635cf7987fcbebf4315a721343f415c3e5ae5d8bad6ef9391c0d99ae89127b11cb2d59c6820db617b76619ec931446847f90ceb202d8029ebe9812c13ba3b2d213326acd8344e1fc8331e402d57bb09f70ec809f0398fc20871d6ab82482b1855be97a4076335fcb353fe9283d9ba2a708f494934b7dd2a798ed509b5848802651746b059b736216f6c5d04dfa9d74f9e259e778c3f234a0c96b2571d024d6caa3081f1ae6cb82a7601007b78050448c8b5c29937d123573b49ac65bd1d55f8780a482d0bc996f66838e87c000078baf57e072e482336d7214b73b878ff73ff316366d1f1294b81630080d37e95ddbafdc1c8e54e9b7b396df265f1db27c9aff9ab714e390080553fb25d9101571c13ca2db4f2b22a6694d301caec6dd1704a55104f1b74052321515957cd1acbe11e6df5edaa9fe2e1f7313d2f3c99e6b7b1045db586a23c1bb17bdb34f1f3727c4f9a6b2d5f74ef5c180e463ebe2758f62d008b2745da677c1d7da8554dd8c62bd5ded7e453352880397b6859d5183278b9e21995c4071c6a94b5485ae82ef22b1759d30acc6ddc4957651c7f7036f392658d197cf6a387c8fb65792cd6c0b2d5aa4a23121b94dd3198a74e3ab50d798380630c59b87d366316359a214ff05cf18efa7493923dfddcf81e39a007241dd04435ddf85c5d9c0401b9dc5e1d27ef7c34179bd5e0fa1bbec3191c10cc119163f5ce693a13d64dc826e0f8058aee1cb86b06f6f70cd2c0d3cc85dd24627abedf1637d08b1f66b727474f5032740e1579f4ef38e58f3e4a0e344d25ee4d4d5b0a335243aa808b800a2ea5b8e2a16590901a40fa1ae0d030c00d64e3d9696a492d1233e3d4a910e9c60313aef330781afe9e485dd3f48fa67af56233df02538be34ed85ae4f59c2c34c275dee5b81fa80e08213f7a499296b4fa5f147dacc3dbc9d075ed4bd3897933041c11ad990784ae63e2735158d1697e72af30d2943e0f3e1c0864e4a63bd6c468e659bbb161a51e783484eef7bc8c3be126d5c1dbd76ad0d9191ed0c15b4664c4a0d0431ac7b94de160cccd728b5023c68f4288bb6e1ae859b77d9a26066b38b9a879efbfbfd67ff9163153000609503d01dcefd23eb681b0c5d79d3c93e3d98d9b3fd0376014a26a73c400a75eade0853c3a314679b8a76f3056d14916f024648b38966890b3825168deafcb7f9b3fc725e17216feff78c6e9cd3fd2100bf1f5d5743e240802888f3bf5c78f4e81bbfcaf428bee793230e33039f0c52543d184bacbb78190cef15ee97a607a15be763ae48a9012e408805d96dd45873319c9f6e9f1539612de18999a232d613923e9cdd46e4dddde0c8d73ec56d5d1a4d45788d2869212de350e8d69d0b782578091e33e810a0ab4144dc784ad47aee7cc6ced27f245b2adb133725ad84a2e1ba78bc50a9846fed88701a543dc8280fec05a49cf58197a47a0de19a8ecb73003740478802147f322d033caa0d8e4fc420f6cf04c4a9b58d865f74b50bc9912ecae2b2cbbbf17c9c535b51fb682805c9b4a65479fc1b7b6882c9ee08164f857cdfacd8b7e0f24c3b65005fa4d8e78ae55a54a2b4dbdaaa5899141ae13227a9cfebe1290467967109a171ba6061189213b6bf7d2beb97e5d35cba1303b73506ed9e3b91b5eefdd8bc298fdd446955e886559087b9370f0276e2c7e57ab9ae83569416b1a58518db4aa34829ef1eb45e6a8acf4727ec29d6b173708f54add23dc0fe8bdd4a78e631fd5e1393d578a75b910ce91c6181d66cb349067294ddd0494521829bf140af6827954dbfbcec47d2981638d78cef5ce87f2ce3bfda9661ef084fa5398343935ff06a60a6ce62b307dc4fbdbb3e2dce458b3c16cf4765ddd6b458048c33dc9a71410d199a9a24829a0a172437677d8b629793c28b12dcba33a7aeae7cc9fd2050e209003afb082bf0dce60c4651db0b1bf88f2573115ad3c812bffaf7cd3920373667eaefcde1d8d86cd66e9cbf1eb23f580c0f28972a272efc44bc7c2b9e068b8e3958f21c4ad2dae3b465bb28827ed2e689c4b224a21c2209675af48604338062e7e9df8d6dbd870651055016fc13a90aa87857c21a60d19c2a345708154e308d7aeb8e9688aeca1ca48cef1020f7f4e7bc844d9f602f5a7927a83ba374209e2abdca88a97742a724da1ff4b060d2d544c880a4117348a8ba9c55ab4343d998dd3779479525faf4188d4325d422e71d48a2988fcf329d856b6ca683f1cc596a19022a4a03b5f0bc2f2c0a1d2779fa95e63e1e28e3b48dd867829b43d690e781ac8a8a1cae43ff29b84d89c8313c0e6f0eb9fd279bd6bd1f26ed529d79dc5e44f9f1852476c0118b6f1e39999261b07f8b3a25130e8d0a27e6e30fb72728677426ecbc3bc48ebd756e251d0ff07a4854ac75007ce1ff3c7c2eb21d2e2e07e5c26d2cc92846995c11d8200c4cf224e3e0c72f01e80a48ef73386ddc2ddb19f0039e6b22dd64b692318f11ce3e1395286777c9fea202b4b87da727bbf1fc3419af79d3d7d47cda97768ce5e7bd1a052c1fa273a6b4da49f9b266f0ee06ec833e283cb4b3de9f1e07a5ca6696795b09f0048178c97041daff18e35c8b3958c8e98317a63ac66a4cd3ab3107114d1b2d83856f49a27486caa7acee6136a6d4a6d6ff3501144a26ee5d88e06900fcdad066e6d3ac7f901fe193fce8ff02d4c2bcbf1fc2d9168f475493c6cdf618f5f43062c4c4e130bbaa6bef3745385c95f190e9ec0b8fcd9a6df81c574e58a6b8640c46e34be5b1aa32b904972fc941d4f56b3e4b03fab10b37320a73e59b12a7c1e6bcca78f3599d69004de0fbbbcab2a3ef1f43a37b12789753df535f7b6fa55de3d96f974b3420167db25c2486f621524f0a1f8e6d0032af658b5ee2f27ab206b68af414877f95b94f529eba9a3dcc1f009e6cdf3e1ff3234b1303979bdd6afbe847b173c9d0e56909c66960f8098ee34ba3b8de85a91643611c95c9df2c6c6484fb5c38b1bab74d328782a306365bd1e9d54ba0ab539fb9c3ab79e3688ad6903e92872d26d027382bad4c0d46b2f75d3d111a2ccfac8905a590f5ed6ada3616ade4b7f851cb58176a3d1b649ba34857b9d8655c65cf93d38ac0ba7c922f68862d22f8fcabe87f9ac0c3da3cef190f1b889bb03840f99dcfa0ad1753fc6a61ccefc5fca6fed3fc8ebc00edbeb337a902df6147fd620ce8719eaf11f6ec4a729dc4bddc6b2e998e5c101d85e1b7bdc59ac03eeb1a4a428fb20fb0b0d0fcf7da5d95bc18a98c17a18c64e58c2704c6153f8982e6dc3c84c4348d3dcc239eae4790179bf2f2d72c995b7d87480d0f8ad0cae6fef03d979226b4167b898515d9a201eb790d934ca3e6812e2306f4fa246afe35158a828b9c66a115d3a61461e9ef318868d03f41de2a0e6741f77c126572738314b0db324e566e144beff247bb8e96125d9f3b5d90ff4eb21b03d44833d13b6f5f0b0e736886df4628f9fbed18e33d818fedc338418ec344f890d1d56026e9c7ae60b1544d2619a0cccd7efacdb0b3cf079630c4f44666e63a1b1af2d66f62fac22197f19cf85c565052bea2d8771b65a011674cef4d2bb614e682fd9f9f964f6fce33960fdd666b6bbb7810d2b30000b967fd2baa08bff7dd1cc328fd2d838e77bd1685101222d85af0c7e06ddc0b2a2ba7cf880acfbffea1cf036dd163f006419e1338e2a1792d10ca7cbfc315718955fc0ad7cba7876dbc95f84033fdd144993626835dba4c0c684616d96c2e12f3f2e4290adbdbfc11d1b70ed7d426d7c7c52829a5733c18c1a2dfc21fb223ab02f8372643e5f4275383627014e57eaa80427ca4b8015bc1c5cf6deead08e31a2376c9f0817bf59213ca288824aaf5a0a6d97907ff93d29876826e266152765bd37077bba9860f6407f739de28f0945ba4cb2e4f24d0d9098c8042330324f62a5288e86c1acfb65108ae2d0630a06691304ce9b51cc28ac0054d2e2562db302acc404a520b80fda8b04823754324522c0a42d59ae95f3ac578aea91cb7177afd88c7b279780aa4e65e5c499b22cf81044c37eeebdc69f15029d49767b75cabdd3f63a9c9740b23bf970f4967b17ad0644b225e70be001f1f7878d63087f2a2865755a20ce1f2d99282e11f56177791456cf06102d5e3ddea64acacf96a674a3fa227d3aba7e5bda171060dd7b73d3c33519cddb9ff19dd7bd4f25b762f44261c42bcd994f7b619e8ef1d3ce2c2f1ed7e77bef385e6273a6638d27da1fc6546f357c97f72e37833f482528bd8c306ef3dec18a06aedbcb63fc12f7d02dcc6d40d24d7b274237abc7bc0b4e47d165a3dbd6eee17466ab4f09dd595a4b011d1c050e0857cb9ee342f44cc4b11687d5b9881b41ee2d48450244b043249de75083331522cbbe4757a4a4b6c4f693ef01469b81370dc4d2d1a8392129236560666463e2c4778e1991ef4b20f647c3968d8d66970384ef34cd6ca0c769460427cec53e261b84584dff3a40d589fff4fbd03bc88e4c050efc314d20284d061a4c65fb2a62427dfa2df331e46d3d2319f7829db437c6197039088db73f602638cc2fa8946badee01f47a50c7bdbc338885c8f7aa8d223f7651c5fd0a96044987e2ebc701ee5659392c6ede9e7c45363a751ca36cd75f6e3d83ae823c82e49e76b67adfbbb38a9e675780e85b05bf86572565682515952bedad0104f7a2c313e0c9c0bd787539ea22fc90c915238b064b3cb6a5f7c668b6fb6953074552a58c3e6be6ac9139e6690f1c69bdcb78bcc681f5e7f160933cb8d71b1fe8e0418f4760074bfcc771a0a8fb94c627b9cf72a580adddf683f9f258c3eb3181b7202e23bf049f6e3effed3a8934048f5b3565ed94487fea87975822a0211d3e74c6b53eb37e38842c8749371bd2f8c3b0b9ebe50722960cac403f67b7b44b7aa685815ad429a4c6bca03adc2116e849cc90ade0bd23c7a075c82fcd0e5160de9127164db4acf3895a07560c13adc484f6c986b79e62055ec504dbd67d2ffbbff8746e26603519180b267446f8442c2e59ed772913fef238f77d5ebaeef1fd0424c664929022fd1d8a0a7cc8d79f1fae75e9410913da035bee842c8a8cf87e6c496900f0a9f69e572270514e24f140c6369a7c05472cf82d125bfaf3eed9b94651dc643fe24347314c6647f56e2ce9be908eab970bfab08a1cfd82c2c7135154c9181e541966990f9f8d6100357570bf194e53611fbe4d40114346e85905b8122a25480b7023bfc68a153d3002be4c441143febbcbb0b17cae31983b8d2be537297f539601b85a0d9f68055e3713596204f6fb152887fd371a07f6e2ab6381d432ba9a80a29dfc5fb3312fa3d45ee0b4168c22c25215be9e98c481bcf7d57bc7bec1a9f08c7c08083a8a4fd2be3537f96a44420926130b6001170c329daf2d814007d21e1c8c699bbe22c9e2648acf01eca52d9528da7a24e99d246bc5353985f70d917c3981c402d1a655d028823bd82758bc9e6b5b03d9c32c2093aa08268028207bf7bf581bbec1f1de0a3d97defff1213f2016f4a613cba2c41248f82e3cb1e9483474fc76aa7b4ec402fa6287114c0d488f9e949822c11a589d39b7b606b1ac81b599724b30b583a075783dc6f1adfd0434baffda3f2a5fe2176a309bf82923e225174a9a48012210f1d7d2610b0b2499b56b6a96d242e4439da2f890dd9f3b4832ca64516b2084573acf68605ac7e2a5141af6038f0ba7ae3434bae9ffe21fab28a8c0741630681245620da00fce5ee086233ef1d532adb3a68b2e662698b81be36d61568d27d564aef6d90e9be9f31ed41a95be760da6d060181346759f81367f8774c366dacf7897288328fc93f3f00c3addb220cba820e419e005c9f9f583a110461b7b603999b99ea781e6c601c5f3a5635ef20c8e0a0f3df4bc57d6a263faf58f3c9e61c6e76ffd9426a511c463fb78861280f38c97d57ad56791b5c028110eb074a8dae5d63b0fc4ae52d51da7882fdd383f1ddd81cdffb8ca0e242cb4dbf36005c9e941c1978c3d7c03e9be9ebc0d879d8c75387903ef3fa71383dca7bd670ef6f28d132b21bb5e47c41ccbdf986d665b2a0ba7fef1c67360aa1154dce79667c26a59e2ca444506e41c2340fbfc437f8c405f7d7f8c99fc491ee4484934815cb77e3fb1e139d17a237af7d1f8b9bec09ff9cda018bde467402850ca474e9c492ae15ba67d714178daabe380f215157955ccef9be5fe327c98662ceae1b5f6053e9cf337bbbb349cf10bbccff4bd654bfe1417cca7f9fa8b9a72b8f96cc0803d9d673a47eb01369ad39fcdf8dea685b8498bed51191c2e7c4d705a765117bbbbbb000de6526e05f7f1a6be7611b1aedb138679d09a69777e2f23d924953c6920e7edf3c631b4eeec663b9b9e8a40d1ccfa7abfaa86efb6e7ca38caf093d25b4b3d1e49dc57878734f579ac673cfd80e1c7c9e2cd908c99c78c535079a583c3c6bb221a6f0658f91756a8d95f3a06a07910186447f219009e28f7bc0210e4bb95f547318c3743458b23c42f6c55de636c8bb0b592e53ea283dcea40bc198912d07b5ed0d036f9dfb30dc98c1b6b81bec292e626d22625468dffed3f464e284b1ba0c9c0d42c79388f63987e8d1db12911e5372f54bd8a6b10bbcda4ac09acd93996e577780f7237ef9e7513c7e9a629373c8a97e6874a9bc28f243334688cc04858645292d3f51ab55744ff8732fa15a0f19f763447f1d14d018398dc7407eca70d6bde9488e764ca3b62ec890b7b6f8118e9212271aeac8307faec46d5ba274ea4c1b2637b1a430d934cf52a1819c10c58c5ee195a98aac85bf6af2c0d10a91829440601b6ff2abeaa1785b01a930b601d4e04b1ea0d036aec73e15e44230a18a8a2fb3eb2d0b6b468c8a216f255831fba329e5ab4b5146a1018c3491fdd916cd2c394de2e261786c368f76092816b0410c32cc80745e641fcbd9b3848633ab3999f8d51619baafe5fbe6370844fa30803318303d17f153bca67be0a795dfb6e1176d36caa7f5a84bbb43dff35d745f5661bf911d2c759187eb515c2450fd2551e427e079be84106ca80b45f56216a0287df7352063cd94b013e2d89019e4e4bdc6bf0a72e4993f20c49de66e61298f0f92a0a42f5475bfc26532b51de63d34f2a4c9f79f03154e0935888974314c39e19808c1da825868a5b71cc321bf4bb8f25f2438de07c4f0f55139addd3c513efa28c1d4059be45c766ce36d8580e92df93f73748f86f2151eb0cb96e3151815af7d7c32d6356de77c117d99651680b50ad95b38a32bc36a366ab05c0b6d532f86598c563b868571f1ca6a94f529d3b64d3370a99db995332a3ae237f0d85263cf8a52938534b17ec73a7eed77aaa6859c8ba6ef1ca117ff9d530ab8cf85d2eb1393fe322649823336f02b8a53e7043d4827f958cf711fa87d895ce642fcd6d6e09ed84652af0bfb5bf4cc527dd081987413939ead8bbb0186de45f8366947ad06e02888a427432cc26158fb59c7e61c467904f3e1e3bb9f7513cac7f27ef14f49957a93daa9202423f156139c981dac9dc4d2f2a71aacb9476b36ab761ae7a37294d78dcaa78c219bf8ebd61f635bba6fa6872c450d7da3817a69c8861692094cbeb5afbe5af53de93c2095da3589a7e6b3c615b80f6629138e94c355989a7511aa3a59e3d8391b5923cc0317769b1fba29de3dc094dc02b137023587494badbe4e90138c3799f62e6612b2613aee6e1909fd94ddbff0675e4933ce9e846badc899507578fe62929410c6d143c9879cb046862392cc2bff5c76c1ed857390d1fb7f0c4d1a35c1b6b535e2a03a2118037cf1278d13462a0c954ef1982c1b6d0476ffe2d5d4aab7f59aad31d2a2634a94a0053247721d919b98c6cfa3b7320ca65f799ed9cf46770928f4683cbc65cc2a4fa2ae1eeeba026da37d4b5220ba2659bca20a9cb7ce3d227e1ba3037128079a73f15f0db741bdd6071ba7ad544ab490bb4d2c08a6aa4a94a13f48d5f5f644665a537d7a721b6289ea12d5ea3f31d86d60ed3cfd1657454bb1b5aec423eddd2b6a66d4085ee58960a922d6eaec5401e2909794343fc5a70816dea4e5a7ab0e720d946838d39984794de660eb054827adfb969291c84874fb3ddeb74b9002233fadf113cffd17e1568a0506b8981a6053c34e1137f067430f4aeab69054cf7156922fd20a96351d3376194b37c003f5180d2209e1d542be0407b98dad97d94cb8a057810f4780f15ef513ed8061d57832be5c1c272062065d15731d1a236821911458e267a290292e447ad8a22315e00cc9cac240f2d8fa2bbd00c34518bdadd2272718c269391c285b27348467a20c1b7d4dcd2822be6e82c9690f65ef116e55cc2869a54cf6cd410b610a12e341fcc91c6f382cbc811859d829e3a413cf66fd0248dc7f13c30b68bd005af91f790663b0979816705057297c57882f7b9b731bd8dc7eaf5786666702a2daed6318f48149d79b84e082b379ce7818be58c810a9eb810569588e27c7c431d74f4729cc89b304f350fa0957a9805f489492f8f63929b28fb488ceef2885eada19f5fccf12f80e417d77baa8cc3d0b8e3290109aa10924cc19e886b662b0843c090cac59eb90dfd0316eb9372cb0f956413bcfb40457a6337328d3223f989a28dfe00cdae251baabadeed8bd39bcf1a92fb5a7172b9239fadda450a30fb8cd07299a08dfc551899d0d9e70e73273d3aa995f51977e59ed8181872fa289313b115c3a089660ecacac42ac8a63d181a0e173a699311f5d51f76247cc961fd4a0265eac3ee4241638aeaedb3cafe09f01a78c82d394b36694e612fe403a83f7eb21f61e1bb5266e96699eb1b09fafa1846eab298363b09ef2d832bf2de9393bf7042b912267d28008e142e36ae59088a4e51712502c602d66647fc4d6b122d055721dae946a79b94e062519503e7cb7006e869d278b8df06f62eab9551c52ee41ebfb7b65e85643ee3e689c03c3746b238b3b12f7da6c6a020f5a735a9db23ad767d4f245b4603a45b1a9bd9ca935bd36523eb030a2e8cbe8a52b176acaece02a6edd06ae32af5ca6e962f4bf3eb8b29b8a6ffdda1be9620535dda9fda4ca55f026e739498ae7998c2de60e59541dbca1ef08d8163b109b52870c9ee51e5247455e1135dbec10ba229b2ae0a326cd5cce106e927549c126ecb9f2bb533ef08d469bd8f9fc2aa5b55eeef0e3b48b4c7d830e028d3ca569b181d86776963e987fd0edee5c1081a3e8861330774be82f7db0563bc9225b7607ea5e96653a34fdea7c551fc0285b679a9a0685159e0d90cf7dd606614647c30c3abe0ba994dbaf1aaa78b2fc0345192381adc203cdea2b3caa0c92479be7d51af788102bcd952e65a1ad14447488f3b8cd5ab5fc90ceaf6ce81eaf6a5754c3a1260138d6944e33ab6172d8ba4b96ef557a1b49cfd79074bfe886b898856c0e3af3c0e2b9c62ab3850e8de707032e11806507a83768b66948240573475b7d31dbc46694083e1e5eeaa31c06c7279188a9396be542e1c5f3369227b1c70fdc904466637afa5b29f659ff44dea8b1425748b7f4ddfe247660171f847a45f0795adfd93d2127a2aed9a2829820f26846b17555fe8a4a157a693ca5f30277aeae85766d0a35e2039c39bf4b57e3431d0bc325e915d9e67269484407b2b075bc1e12aab385480d3e7852391d961fa17ffbdcb5f70e5a33d28d33dde16f340c8c8e2dd00a4e37b551eba83480bdee255603c1df7208d409276283f4cbe913472c37dcc3a42ab91a45262b153d715e0fe4cdd28e86878448aed02bde51b2addd30dd34ff82c13a7116d0f90d5b29f2e7fab1be0cacfbd5ee028d8c7adb09ebd124abb352f0c9fe3b4d9d464e928e4f1c52577847a6c12232bddba97e320a3cb3dfb8e2076cfa74b62a839e39458e45eb4e2a84676536a9dcf67570e263b352cd6677d09c9c17f4c854a688bf94fe1059646af0482cd793566010fb5a39bae7e66d2f5b60a14e03264003f967e40cbfd2fc8ba9c939c7e9cc5e3c65b4cb5f8ba93112f30ec97614867fe5203d497c4c4b07a0a0eea10e11054e072c14b45d4a21cc8f94310e48050f4ed23c505be64fd9767a13b5d004b35f2df8328a338a8bdb3daf41405808c93bd9c46f7618ea52439be7039b862f645314a255b7acea4b536b3367115aae25959fbb8643a1a9238b1a5b1b3c825c904c0f7dcf23edc5846e9d9a2a27fe2f0c69e61a0e9c50fa68c4bb9980c9c8436086d0bc6360d19a5e0c7fded53374ca06198e7b61fe14c5820747585b00912848d282c5a85d0497fdefb732b9c645e03f3f0422cf022daed96bbe959f4f0852869f974c0458939f9bf70dc478b5688d4c2a909d9c9febd210f741fd1329f7b7f0cf7ac7975b108e78222d083697e4acdcea3242a3f5f2178bb3ba59e190c19eac084f98d5b7955aa83560fe756479366d0a1061b93a496e2357a6f580c92b83dcfc296faadcb5cc4ac16065ad4d366ec3cb4734e7881875ad475c8a63e1cd5d07dbc4a0edcb5735fe7c3b8b207a967452c96062ceda12d71791e0a260b9703b0b4cdef8aea9ce3038c9ae13b93a429fdb83e457b9efe680ab304d1018eb874c70fdd975db8a21a9336b7a4d6f589e7816b373e8e495ca61240be935a52c84890dfac466b8677d4d4a31c64351a1d669fbe2ed33b77c33fc9399a9e95f14edd26c7ad24b1101dd6cdf8744713a073c5f63731d6f377b03d68e47a8e08e0aeb0034f5edb19c48b932f1e2532f82beac013d77682f8e264e5478900e70afa0d2013016e4f2037571cc166708d825aa0f2e067089c23848ba5db8c53a0c934b6400fc7cf586ab06a9467d22fda297b66b2447e5c3e451c12b291938de4413c4789dda62f38d5bbf2bb5a15d597ce9127ca4708ef941f8c813761c16a0b60df0889f8557198ee292f69157298ef415e1be90e050acfb25d821bb406413d0ba1c7fba50b9900269a8fac0d5162b8b356ad1a62ab46a0af9bc36dc2c3322c1adc1e498172f35550039f4b9a941afae2c7eaadb358f576ed279c71d2b8a1233bc130ba84b2d4be9bd428b3f9922ecda5b3305580121b0275f8d8a80bfa2b801bf512a4e325f4bfa13758a9a7b1c57c11f0b0b628d2fa7110ebb10bf1607a29a5e2f4ece0b075caebf42f524fe95e35de318569445ef2536268038cec082dc1c5d5b5bf82e64ece33b259c960a03ba058d62ac5495cf3df8157a3accac908eb11dcaa45c03f867b678dd95f188fe2befd342b457906c2268471e140ee84550f524c190030e31e6bbdf134448b5480d718d0f872ae649ae860e493a7ac3960db8bb07bac810126da3bd322c8d4589dd8a56b645842a2d4f4656cda4c6cc16ba1df1d53895c4a08572a7dbae28adb3872b767f66e49eb8855528f2d2fdbad0a1deeb2f65e3529da117167a9d1acc2bd89a8683ad0974a4f83e5c3acc0eca95e864470a32667a51127b770f5159107632ebd91dc18b4ed498839ffe3a23bf076901ad9076321cde015a6b6e16944bca208c637be7f81e4ce42d013efc2344e9b073273947ff44746b136bb07d96b6adc82d54874116d4e168a17cbe6425015f01bf8d689fe41b8904f17328346036e9aca236e3d8a5d05708a2259ad9cfb4b2a8944ad92137510869afba4083dfa4ba12226d28507447919c805507a0202a5d357e94b707b13a74dc89c28ec917dd2dc9e5efae88bc0b7b9ee9e1b205c14ad3dc828f3dfb1cb9ccd382522e557aa1fe04f54b6aaaa7a5d318a4127cb8854d1bcbf48df9b1373e6b1ad31e4abfc2a36d0e697f63bdb50dce5a54b19bb886454c314eee70b98f03cee7fd945e7caf68ae34ace887a3bbddad79b65c80ac1cc7322e8f2971558a48998892bd3130ba4884bcbc2fbc0e9b25606a45d181159631415089560b2ad0622fc4f6fe8f70462d369a7f9b1037026c760d857bae9f707a536a3c0a7b36fe175144a95d1a7e003c5ea2bd990608efe2bb694d8f7288d832dbd2154019e60253ae935f3d5929524f76be6ad8856120b6225decdf08bfda9a7d521fc6b5f486d4bacd66c0136a1d5cd9cd7aff121c0cb58004547f46b3625cb1e43c0e5a8c96c91213837422d85e51924cc8e21ad3eea3d91e6c24e8a316479ad99c744e8d3e2c405fb846248f81d1bd3dd6b3d208db6ca24116cce45e4513809eb516679f4270aa1f702eb817ab3a6f5fcc37bc8a740f3ae24931b3f27c323b1d94e6d27f383fbb4e515fb79e0a24a363a9ee181e4251854f11c92368d551f3603391924d2b1a541ffeebc3a90f438f704aee9ca2174394cd3ea1fe26d365e2e531cc65b4eb61ebc7d463207f42424d43d90cd6016ab72d76a69096951149a6b318968d1adbab6781dbe19c19bb85d2a062377bc383c4a08730ee1d3ed49e09001c4ffb36c163baf6ddb5a7ff680bbb1f3488dee5356ead06565be37ee65142c007a8b313ab78189ee088fc783ceca81708cc33fba2146751c916ed95881c48779dce0233ed5927ba6ed35240d6932388d506c2771c28f512be94a829d432ae61cabd1983bf90cece23a56f4c437bd11593db4eb0d2aabbcdc1b56d416c5d13cea1f5599d096023b6ba1629361e1c1a63175adfc84b6f9377aa5602bb38f988a67358465bbe93ab206130dddbe140eb8f894fe97967dbb84fb60d72e5cde44dc63c8e721f9c8cc66dea27429f741e875597a5e8251104d29f65792866f45df2b1a0f0cbcc05b8760f74526c3abed62f44c1e2393f806d94936dde4d7e1ea9ac150cef5179d6bfb78b6d2edc64bfa3b9fbaa9ff10769b6c7ac6f7646dad8e2908b7ada3046256c092e4591f5c53b2a4780b04a4e1d8626f7121fde0d5e4ae82b687d8c95da8dd9c99de0a6f47e87a5fd5ecac3839f7083f1b72b0cf0dbf2ac838cbb64b5f0f915b853ac31c50922143000ce1e96230289906d02f1569d6b88216b6c4d727c04867cea06c98488d4f54eff012774883d56e9a895b0f6d99b8afd173caf64482add899282544ed49067240f427f6df0c22c8216475374848651ffb3c738963a41681ae75571113b1c9f29196814af839a680393840baf0d856438a798b7abdc573e39e0d852aec85eecb3580a730fd864704c664b1301186adaa7a69ad2d82e71b6e819b12c0e28a73e285980f0bc768ae556b9c9a20041d297991a02b55db6d4dd133e66da126db5e4958a3bdd0abb8becaf0be851ce18147442f05c539f8b4e555c190b9fb30ad1c326e50e6a8c194c9287c96ef7596b40b23b25c5f81b24e90c02621b430563fa2fa4d0d1f3628377ef00c0c1adf4efb4c57526ea9e89b0392f77878a97d8be5fafa0e8b1f3e39e282a2ae7d24f068c0d231f9df45a1099ee309129da3270a1476ba4c5151160d291b1687625744e3845675cc3c4d8795ca21c066aaf1b2044d56b67a1f128dcff529f13f56a4f57c24169ef8391211ea92568d565b0f19aba5c29b5e2cc8da72449fb030ab51de803dc82cb4cd3c8182119efdd9f534cb8714656e853dd8ad6b348b5e2f96a28b3c3448a42e6216de7121814be4f066e2b6b9fa73d6601e0234b6ccef3fd644f5e8ab840e1df39f3e8ac3df980982e83fffbd2d3643c074d154b32af00169ea2a204591d39b07c0bbc3847714a6f9c21f09f739cbec84101ccb029e8e543713347d0efa53a9ffbdd1098cc7bb7d694231d18ed15e759cacee827e2fcfb6771e2b2e62666344ceebbaf0bb1bc66176c12ede2af0a307b76281ad71988480b5b91c0b95f92a6214d8a9bb9597b0410b1650750907852e21e9f6451efda4bd300b5dbac9c91eec821a2d81e26b3dcfb40be535c29e0cb193d364ca85ae340a7b3facd15f402aba9a96e05063326a21354667c21a18d57d5e4c4ddb721572750ce89dee27a497ccfb853d555f08edee05cb855ed83d3023ca8c90ca2c811cee22ebf20191f32be6cbf9ee4a454895c26f86145830648990f45caa6ac61e4bbc06e6db004555190f0c057364e639a109904760921dd3ee11bff03ec8cea332b62c9328b40d532e0e7cff5c26b628d88a3f22800458bff8319650211b574943a898c98341cfadaa0405635a675919b467cddc0e11c42732d19c7828e76ec5732c711e76b90f066c506fecc61defb104828005f4dd34e53282ca7d37622458ea9be69c76c97e91b1840417c22e0d84d057f99482100a2f8d7280fcb3eac06281ac183648575b7266d94162e352f8a44a097b377a426251e043bee01188f261c5160d5a45098f320ae88496f298ab0b32d112552a8264480632709e9a4af237ab3236c362d31481de4fe0c479e9ef3c5142c4f69647962a5bd27583164a8cb18ae496b1537f05afaea99a45a184e34dbdda31ad9da43d1c2451070c9450955f5942250d646e6e5c2dc3a20078101e54172cc68d699cd15461ba66deb344205e362a28f1f6f581c4a49d4b33417219b50a4e56c64eece7bbea057500241fa3a2da64a63529d94105dec4eceb7aba991a0418ff4c254a6ed5a2f64e0759f2a954e1a1ba4842ded796b54415fa498e0e5bc819aa544ef27f545f8b52efd3a5482e47ef2f06681459830898f99c92f832c12a2b016f4909cf5c82cdac9feacf9e242cda1c4a53612315007c411b84ac0705cf443dd1e2939534e4faaf12c511671d196d2d2adb2548c5955995d216971e36d29cc286b5ce076c88e5368c1b477fbad3905eb59dc1e3c17d1f2cc340682e0f03ee4fe0e6fe11f2c1048b439e1ad93326c42a2eacc5ba21fa79ec4c0114a1ea845102dc9b4c7a2b074206962a6306058ff5aa02786ed13d66ec749c87a2b831006a000dea0a9634c68daacf0c861eacc2d032cc8b554811f5b231c5770231468d02b18720c6fc727be806d14fbd446ced22f7b81b5bc1af22b7bd0e3e3718546dcab6691fb56f10ccdbc2943568d45407f30c754d44568edbea260444ad2ebac59bb6497e4061814c27f72d2dfd51261e5a07c5fc30dd2e62257a2ddbd25e5b9a65661b84f253c94479f1b36149ce61ae7b0ff9c461b0e1b351cbb24cd094fce4a87d6fa4b7225d6d4a00910968e48a7669e9a96d207b4090c84a618647951f40e169f84e66e0eebd155f09535c380166f86144ee3e0f2ae002872c833d1aa4800abfb5451d8c1164c132a068d08e8394a7dba3ff673f573a7c8339f2b91e0b580737dd7b290c42ca2b0db43e0125c18cfb00b8ded8526e72d8bde56c3273d690e978ba8444c6e29f50b1a01d3185e7bec3580e9be84c014c72b4d1bc0948fac863043f32781c5e8b83dd39a2506184ce63dca33dfca5f37b50f17281758bdf9cc5839a9b756aa770e3b69cdf9db6ff21a75ce951b3071bc1da0176d4240321b2e5633aa713c73f0329ac7a3294ee6de0c9a930fbc8bce57b4d478e64603d0277ada33efcbc3fccf0df76f0db58e0ccf3200dd5512c52b6533b4873b2d03b32b39df3e28b5e26ca655d2a76a0a18457b063696236ef8da0406f9368e27718834c1732fd1b427b3a198e0bf0c10cdc83892452b5eb0e5ec3b19939bb7d3f169dfacd2e9cf58853e16d12b8000dcf4b872a14b8568d5a7fa807e39f7d256ba3c02d03c566dbeb2791ddf06ce3dca5316478b866d6a56fc1607b7b719277d5c3dec444fd7239dcadcb40df8073f2072cfb4481d5ea7ed6de253172bc2b76fd8ea5c5455685ad54b7636b6d41405890fd774f339bcc3d80917a9cff5638f2f2ff14b61a99a9cc0f70fb5c133aa2648721a9eeaba8b782a62728db0d00c3e8315e9af530481743d521286274aeb305967221e466822198164d8404794a0b8da361193281cdbb4589f2db7531c8d7c51d8a47b6972e0b1c78e9cad1903dd9b89efb7c3574ac38dabae0e2c2699171e80b686696a0e3bd1b700fbfcccaad35dfb16e0dd7961ff331d56f29bf5c9a63c9d674784d083983e10e6d375a9c572f79c9109fe7a7cc477012bf1b6b8796d829236a4f44221e4445aa0d60eef89aa237c0a586a21e5c53c93538f8710a9cda844f32e9a9ca4fa4764e9c11786e8a6e24da113a4ede1ce1ba216362038e16a5a59b9fa07d0308a181848b1b8054e727cd7af6d8a36131b99539944e4e1a81d1446f244ef926ebfb2bb87dc8ddb4119fa0d4cd587cd1b0cd3cf6729014807c6e0e0b84bdd8fada1488816f18578709d60e7006a48c5b4141625cd293356c64c301c46574e85f126c51be4a69bebe042e28f0176dd7e36f189aa1c58000c66bb44fb84df0be063043db4f18022acdf55fdfebb3e1b7e190a009aef66c3f863b4e81ce64b469bffd6152180788971d8374c7df9423d14c34ae5ef2f0f62593b17fb6f9efbaff21176dc86adab4722827b648c90d279d53323a0d669f0c20e293d73eccb3e62d38d5b0cf090bb7846fb0561cfe25a029e573f171279d68a76190a9f940fdede8c19b243d041929d1d8b03af575b1ddc44c0743a1aa5d55b404d3b068656ce3c82708cb4ee9a62c8fbcdc62efbc03cf3d97e4516a89c1ef193d9ee0107f80386995aae6c357ecebcc0337af2d85b32757ed832ee844c29a93f5e7c3f12d84143fa888bb36ef50e3193e4f8d462ff5271faea7f4b27eb91469abf1094af8c4d62115350662c939222ec1647fe508389556189d9a2f2aa98376d087c6736d49286c5c1dfb8b285a495fdc5088e2ab42b2c5489111d6584f79fd6f8e508356f98a3257f0e4649f82201770c5967a32d3e113f2418cc454c2af2928cb0f4ab3115625313858797905fad73672c3e544b516f4d522494dbadb307b52e71b7cafa117f7efe89d62bc77bf5d6838f4bd1bfa00baa443361ce1f1c9cea35a8f655dbd82a7cf8105749ce6990f3c2f8add60fdd3d70f8577fbe83f0452b2857ba5f3ccd1265addf80f3d42f6fb2fb72a0272ea27b3dc1d15dab6234d918bc9fde649902fb31ae56957b204616bac87e3227bc82d14344274b4c846c2ab0a7bc4d84c6f5df58a7e8e63e56192d08bd778a8ba22865b6faf770608501ce2df1437dbd3e8dc659b3b1f01446c1a1f00c04c18d416756cf60e41b051e3e358920378a73151d93707c31fde99b71f7ecdb3a8264402f89186a2f83d74d33986a43e365c78a8bd3f251d4015bc9abc94437dd80ca70373473f4b07869e2668e79f5d94a0aaeb4d47b74d295888905cf3cf5a7aaa5cb9c938706f11661834253a30c46ab23c99784b54b9543dba05082b24ac08e9bd4208b7d8f82ebb345c29bfb454cbb1d4d17c5b3ad5afcc14c68fd772cd38fb56a8d15222f5fd68374b83ba2648be8f4c008c3012dd31f6ff33da1d32f6dedca4714b85800fa08c7b9b8303f48fa8af0ec84989c02246b64c08814b09b8cbd0085e0aadd8ad39ae89b588301e737a63b96da0d32cc5ed3ab4ccbb56d8a4e0e5af649288687383a3b1056590c52080661a5e0ba99d0a20125e9791cb7928237e3f5d3a20be11e284d569d2f36c7dc52721bd59f21644d01ee50d4824d4cd79fb91bcddc1c99253088352909330b828cdd2be68261f3b514265b76d2874600452889067416911fdaf6f3a81f1ee118d8dc3382f9641214fb1b6080bcb07835e442bb34ec7042e4fd91941cbfac8cb0c2b9be7a482a9da3aa61060f1545a896b995525e7cbef4588f970f5c612384edfdec9ed9852b4b100ed4b8bc435dca58f64370255cd3e2dfa6efd79189ba4dc7d38cd002815f7e4f1bfefbe0721423bffe1f7011039bd2fa06c619a4087defa5b7f337e8d7afdb6b7fdd47f2db1ea12cc6072ac6fd56728fd3f0729e8186947d4570c1654cf7b37ffd3a5f41eed3af4cb1067c08ed5604d4bc1215243999672dfbba1add39e149f86831cc6a6b18bf31e075cdc0fba6b0d46d55f53a25773734d5a5bbe1212cebd50e5638055e2fc7860f6dac5200faef5074815b5340f000264d0a32144b939f1893d41b3a981065e5a9ef6ac5a2d4e73a113005fd8e26597fdd18d6d0216bae8b194ae209c4c9ef4374a900032cebad8af45c27fc22430cd9ff38e1452d3293e942848e448cbbc0ccd8d9d1f15b5e5a8f75748c47972ae201ac322ddc64f11266b81826dc1f43b38a8dadd629f62618f0b2a5346c36c4f5c5de4d5e632f0bc630997737c034cb2388921ec014b4dd4ad35f23113c686af1f1321e28aa2b376fcb808299a4db10979a91279ad641cae914301d549cd9f74c19df8a4e52ad2c8fa9f97fce9cc1873d82dd5c3f252669edca76095afad4b5d40ddd62ee2f284e4427c8fc26ad5b9bbd568f14a454840d52a436b4eac2c40b2c7112f2e675002ed80858b432c0f4d19513dd9850e705374c3aa60df54338d53a1dc123c56e84995e4e15fec9085b30dfb2f6db522c4d13f5cb3034b2f73dcac7105e031db1636081af694a2f6b18ccb0f84ade9c0b2af71c6ee8d2e74cb7401c9943f3668bbfe63a00170d6d4ec309213f6ba99a5d045a33cae35951f14337af48f351b09ff6f9b0652449d5ace4640726d551cd729ed1ca734ac524084ea9fe7e7f91ae034b90652cc4d74bb704d6aba5bfed6ae62cd085663301efa01ab57e2ba136201da61e9282759ed032484a570fd15e40fb1ccbb090655587a2f41ff825696be2a01be61ea37f32329ae052f47a618ee38c83a3a46bd6e37c4aa4c22bf8f260bfecb3f74a07a4293bf0e8047f237e66c3bd26afb5318ef6a560fd86381417e70e51defe6efbf5ece211891054a397ad12034038bed6f93d54c28f9dd79483726cc850330fd1d909386d9f936029ab34600a18a4fb8c0302d044ba425016d214225456bc265ea057e38d1c3749f393ccf8273df0d4db0ff812c9ed7937f3ddd85c4183079e886e05a5b150f2cd0e0c1889f443407663d0207ed9d88723013496075d8df3b595c7f8a850e90ebb5c9ec934a2161f1b480bf05fd257d24a7c7e4f021dfc205d2f7564e047e2d66e35272be19080125a084a972acfd5550ffcfd1a5685b0c3465f1af8bcc9215c66b944ccee2f598f36894f491e3d7f103ecf0c0d21c92aaaf47e4047f044159702a818830a45422c23e488501c58228aaf0b6a87da84c7e1921523e5856614a2c8a0c5c09ee3ba4e954cdf11f3eec89bc9d18ec9fd4fb4d9975a743bd6d83e71591dca30a0d905b69c50adea91baca29448f2df5fce2a895385140ec1a4d83cca93ed1b73a87bf003086e696068578f721070881298ff891830894217b731bf05f41cd17ce71f7b4eab5e9f4a0321df6cbaae29058dc247720e7d579816a31b64f1cb77122e43bfa874e7240ce35667e45b612955000b920431b4cd5379d9a6fa6747282f8ae577976f9c7e95ab4d6f0dafcf607de532b13802106ba5d4453e33654422a708a58ad4d12566b8fb031d8d68f9c372de864dbf9fed404c0a73fb487847e83eb79dd219be6cd08ed71b2ed6cfc8db75120cbbdc2b44190adc0adbb2c82c303b2f47da9c2f8ae084bcaad0db776a2ac6cd6456847d7991a09d5218262069b042d77c699ab6ae8ee406d194de45c0c0168a08c80746cea8de36e380664acf08de8a383b6eb2b003fd8982ae3103ae7fd7c95e6fa8c4cb1a076ef2265f480f00691cedb6ab425224ee16e842c250ace98b2c1f9806bd7b1144a3dddb55631c2f9c9ea40a1741da5bf17c680066f5740cd4643ad98f576e6c54abc81d6f69e41def023be0099b9d6e3f142edcc14823f79e38709c0430d452094f4ed1b4b1cb35f0f0e39eb18a5b8deff696eb3f33896d00492688b3d767a9213f22771b170b121d536e8f52b15ef79bfa350e47c6002ef4c0abae283b52411a1a3b1410509701ca594cc1ddd352e59593b250439fb9b335140c1d3ab603868bbb693235b77aea2da9c554a9103ab0d4372a753417a82d84f98736cf8df641b4c51488b639e79ebf38e8aa55c916398a295c016a6def2786a1a59b9037244c6812458860a09a9c01e941b03523f925f140775ccd8e28bc0e835bc33882602cfedf4286b31472548a3aba594af5f73b03d3f53a223f5513aee6b23680af8ea17033d58130102a4bf5972fe36555f13bc99f2a2b72b97f6f3d22e69acacfe633e7dd781fc74c9cb3ff2fe1da9cc540cd826f189e043cb78525e1350f16b0115797d37af3fc5d3e78da6a7ca47d5e027ac9819de916f65ec9fae64821935666b6239c9908a3e41b96d2a92e8e6de5ce1ecee041def54ad908af5458a369bd2bb5bb10344c74a590d4b2587da8ace64a0169655e35743d11359e91d77a3a6fa5105467a648c80ca055bff4f769dd925ba9f5340fae2e53e6f2f74f34fd4190a54ab5c4d6100d89fbcc205aa995f29a05180eb3903b71adfe4396d6759412b5862b0a53416ba53872768821f19738cdd05b4383304bee01b4ec9097879ae4e255cc120369aa41c548607885a540c77a22e1258443b69d7d739b1245d870811c0295bb77576af8e7d8a169afa5acbf986587e2008bd74af97d58fc811d629baab55210bc4cd69aae5a2988c9963c83d792efb356aa599af6be6e3a262c574840924d34dc62f2abbb4d4b055f53a9ff292be3aea88d55751608e177d1d2162c399dccd306a96f9aad6d165bfea7a2d92c987198cd06dce1c1ebda257656ca0a0db24f7a7f8698c80fdea335893b0bc3a91221f39f99956e201975354ea9f36e2eaf12a8c29bac54f090406b8391d73327af5297651d5093d83c5f429607a23471a0e363ef0474a42f9cd48429d5a81bb14865e55ed76582d124abc6779389cf6371f8034e71cf0ae5d8c299ea0bda6d8506fd262f62d6478d6a5740011833e868306824a38c0b0c6eaa5b64509870d4c4f7835a82d3c8da2b8ad53f6bb0832b55b1b163d57fd879e2d8de6b5ad5e4e835fb62a50c39606da717412619ab185974c13af822dc930a9e51eac0341cf16912abfef282c9c0d0e1559d43d5e902327c6c64f5cc2092871a212f3bdcc4261359899198d4e9fec2fe974033b45e79df4276bf844b3f8dae801a689df26117ed96738f0911a81ae7eadc5bab558d2462b1f1434972d09b3043672394e7b598b9ca337050537fa39b0e8d8859f29b8be30a6712a88e5bb711ff40218c99de9b7eb713cb87581da9ac951e66f43d6df70006388eaf4ede3e6d68d36a2768e6ff1a02e97415d13338d1f4bc04970ecac8e9413f2cf3891a4f18c1cac82ac3dd88d6a0618e5256ac507880c2c830543e981d260ded16d544f61109176feba48ae36dfc713b44c85bab40ad64fc950b038adc1b8e9a3cc3a29dd6036fe8e6a9828edb167797d9c0e5bdc40152242d4723a400add4bc26fc3ae0376d1b7a1556ff0055b47f43657587921e517b459155ba1ade23968d1077714164a0fef8eeecaccd8822b5bea392cf4d163cf943be27d539828023f7967f1a42b1c3edb13d5edafbb6990373fa917078a8758958610270857610a4038e39d45273803f1283c7bb7a6b4b4ea283c632e23a0490de7502b4e4a7d5ec51ae78405830c1c14af384acc5a090e98ce8645dc17ca8fbffbb425ab6349b9c4628c64238540487901f4670e4801034b8df242a7061d89cc7bd9c55d64e77b8da911c680ee0b0f946d6f237bce6a3846b9631e04c4195ce1bd771b47a9c13d693568048d33295e3e870bba7c3b590e9dfa0507100ad8ba24347a307a8969d8eb8ef11c978dead1b01fff1e1de340ce982c96266a2ddce6e94e2e664a081eff169d2aceac2ab08fa2ba02b558e7984162c24825714e149fee95a2b1d5c86591a71888fbf3f70d087168a44196c0106b1c067b61e72a7ce763cdb8d0ebdea5764e1a44afa2e2cf9890ec555ddb82403fb4ddcad1cdc6a69ac8fd55043aefd65a644f9bce47596a566ff692e9e817d29d177bd152d606ee8971f28c56cc170a53c2de8c64769cd7817ef57e71457f63c27fd7c50d608be9be70c3343ba78acbb53545a1c0c1817ef9940d1b9e15517612fafcc6e7721eef8bd86373686d81b73d16d83e599dbcc43203ce2a5ed1371fad1c9a5ad123efa21bc702cf98885c7544bb90e838a66aa3c9e11a19bc9a572b758226087e595a5e9e1d793cc9f4c0e550aaf6df44115beabd59534031ca30a87d7d7a6d6559d57d01cbe23b2bcc158124ce54590cf6814bec5f620ab0d486e0e7dbf513a636804827d10b9429ff9a67ffe520eb9583cdf14df6b560099366eaa415593264ac4c78489c9a6bb36211780ebbae5870f7463679082a1dfc9cee2dd3568dc56220f60d907b310674d4cfd29245d9065934eb952c4bc321157b580bbc67739102bfbbfb85e25f55670eec80aa40f67983df1bf0e7391b52bfc8bc5abbed3e9fa0b5c4f330c71a40d738a822180a65b4b3b2b987f0162f133cf23a3f26e224389cca7d17aa28661739c2de48398f89249d0225501bba98e4d9f92d3491466b8d84c45018cac75f7ec44332ccc2dc6d09e26cf082401e08a7490f52f94b741d82316f50627a884bc335171fc1804bd4dd6280cc602e931f170d8c306abb37b82f9a8d2132836d1499828ac87cf76701345082892e0791843a71b30add6725c7870160e090fd0e0ff1f4a06917e9f37811e0f90f0f7edcb44bd17fc968350dabeab449fc34e3ce0caed8e34afde505ca3bfc0b7f7b9b4242686a84daeab4438769f62d00ff016437ea2b950655986a1e2ec1ddc01c9268be31720f8da44dbd8bd0241d92f635290c30d67504ed68658e040200300b4bda92d58eec060c340a84924fc52fc74f1f0df6754b4f507ab6a6a878ced5f9944df0efa3db8939c2d475029f7b30f7241d82abb8136d63ace56ce785bf14882899b3b7010216453c9a49dda3577b065b0e9b499ba53ad2e1a3577c07c50261950452e3552b8a56646b093b3c066860f07977cbbc6e9880716d07ec52df7ec3572acc85d3ed4a611dc9ebe8382d65a5ff422affec55539b4831c5fe66a4866d7fb58614d4f505eb9b70de75ed4b737c495848d740bc8b29959ddaff1453b374da8e4cb8335b99fd389ee8cf972cf55d27967ddb624ed805334e86b908924bd681fa55448c2fe4103696dd08704c0842c4e800d20b1514d605466c2310ed8f4e0892fc2c5239bc1690b5ff993e6693af0f5b2c30c3550b3bf28dd0412ad71f2f0e3c0c3033725e2649dcf37fd907c3ad8ac61fad3ba0d358dc84428022baf9f29fbdfad9fe9a0ca7c3ac8a0ca3f835ce9804473b55cb83e15a421371de4a69510b29b4cfc4de84d78a1390a7775d5c4fa3ed0cc647dc731b756f4275b098e4445189a444d97a700a6e15abba468c15adea626cb12f8d66ddfe13c21cbf5c7d2464004e9bd6a60b6407f66633371f4ff6fdfe71a6c53aa3850f3bb3030bf45f7f02a3d5339c43c07cb9de83e0855b07bec66231808b0585752223d5c17c775a8ab73ce8b0c64890a8a6948e6559c20224bf1ac81dfb14987c05b72188accd46e2a28954789a8146efc875c31f1be6e849e001b90aa20cb9201c1fecbb06db7ae5aede8fdc78616fd362e2841b069f17305b5f7c96a6d7d528a43df83cb991e67d507e9004da23aaf4688f0e937246fa824220f061dd21db02ea568102329b9c92642cd65d758e29da0b8711702d99ae3a44b911672c9c1440ea20b1c9c3553170049b9295c76c08bbef0877ddca3b3caa790b2ba3f1926f666a1e8e1aa0b8c46ff0007d547cc5fb51628b43702daa6a0d84223d4073db9caa4d780a016345eefd4fa9e91225517f22c949ec0959a5b908bea9cc2d29bea03b40f8ef448b89c0b6a923ce43e40fb1ac6add7c51051992db3847f4a721aed92ea50aac051913f08cdbef4517a821371946eddb78ef948e13b33f5147586cc0e42816a71ff178c2de0f026b41be4dd955350d21e11bc12bb37876541f912bfefed5fe1fd346604d7f238d274fc0566931213b048bf7e99b6b94e9085f592d5b5c5f102926a28f76ace51410645b9e8d4d9e4c7f38e0f3db549b279a2000c206ad4e676fecee88906d081462b815e903472bff4b3e8bb46006e870d91758a278587a5f9c4634e636b33fd9329bdcce92c50b747d7a8c0afb13744ea9a6dddbc05b9f6e99aa4c6beb2225c5bbfffbfcb144fd0a6acae4eaa7c9d67103b1ef8f04d71687a88b7a2f93b9be71605b30b4be316b20fe6c033c592a4947271d1181adab1f6e1abcd567a0e1b6c847fd06c98d136caa3ab36284f82b147076349178cfe489fca833a231b2ad5e3b5cd721ba0496ac2dc8445edea96313c5ebae22a20e8e0ca5ccf5806f90cde9603396f8ea427b224d93c2ad214fd9f986504b861c1c3ee7cddfab15ef0932f41a9c9c9d39a11bdf7f62519c3fc3cbebda9780b030c029b9c2799b1edb869a91b399fe7f84d9c1acabd10e62195dff421deef8f19e60a0702e54053de6b5a0ef4eee1b562c80f0912f426d92925ca7e2eee5fc3f1d8265be4fceb988e421113bb41ecfbbf6da81a42d67ef44f9deedbf3b2ca1d70cbc31b7b75b37a1afbcbda7ce8f04b33b85f605e055643d0d0858dab727c0bb3639a555f084387236e4ab67c36b6cd94765309ea710ead2e23f807a0c900dd52c55cbb96dc2f1100049d0a1eece6fcbc31bd7284881794294da26dad14b195b3cef39c4f04fa6e3fac57305c19a7034d4852485b481bb5ebd56ab5e98589cca9d5ee522267cd2dc5c5cc972dc758608c460a13a9a5cbfb626160072b44749019b73adcd249fed6789b20e14a9c76c82560728cea111f85b4bde5de724b29654a321f0b9d0a7d0a2fba455c7ecbe1d50553211d9812bdbfecf8cf76a56f500e60ff8d0d3f2f9c391576ce08f67f2c6a8e112346423f7afa468c805ef42ddf1c0ed789ba51f7d2f2684034a2eed1b0e81ecd4bf768ba86a480fadc03a9977b202e9752dac2b5bc0dcdf6399c06d6968ed4b40385287dd0ffa00ffa7e10e843370910bdf408201a03d124faa421e8873ef45cab7f5afb813750079ae06a72385c2bd3b69fcaad68bddd5a59378496bd761f34cd3abbbcb572cdf1d730d7955db55a1c8e2c816dadb823d210b448e8e9879eb6748f867614079a60152cd772d4f451bf3babc2b576906b714ba6607f8ec751543c05e3868342ca13ec1c0ef62736f802cedc0e76d0cd9212e0cc4dc11e61d71e47e5ed075771140dbcfd382a6b9ace9ba1e93c1b5407a672b0bf6b07e482a9fa9efd4038ca81d9cfbcdc4a634193cfe05a47628c114208598e7437d7e268c0d5a05395eac0fe8008d87b602aeba18e27ce0f4c55bae281298d663c190fb606bbb538ade35a2fdcd3ab56616b6fb46dc6c27eafb19fefdb8f57c1667893391f1c0f6ca269f8cb0b4bf066f8d739b99ac9d5c4b70f3b964964c3dd2c0f3b211bee16f625d188cd130a4e87bbac4371a9186c9e2eecb309f687a41e8da70a576ed3563055735ac334a8d5154c6d2d6ab7164cd51c68f2b737f4f1b6b07fa6a1ed07746bd7345bc7e170ad977d98e4c348f6dab3e0c6a4fefa3634f57f705f43cf7ddf1f1ba8c6871123a1cbbd11d0e55e5cb743ea07bd0d0d0fa9b7feed26c1a4ef8fed41d795844e0ef6c72d807ec0c2d7f1308de2cdf0faf2eba53897e6bc192a5c650836733eb5c74b5c154f693f9c15eccff5380a526aed68f47fc3b566aa78c97f608ae370b82b3f968eec8f4a5cab046fb8991f78036f582d9c1c0c5d50073bd78226af3e3ddc8ecd35a7072be0d1d4da537f608a6b3d530f4c693f5c4bfb99933573fc29ad39d1354dd3b4a6a06c83270e4f4e0ba61e0d8dfff6c3ed703ad8b98be558f93407079a9c86def9747a85839d5bd284cd1287338325cd7f2f4945f6384aa6860eced1a3c817965a90587834fcbb93af1d9bb91676ae95432a61c6e5456de6e4b106aa63bb350dc21f6031272fb546bb7d93122be5d8871f963fb0a16b3ff436343634940a2b5ffac036ce2519d20ffba10fdd2460e480c9ca4563df8606c70862b0f2c40b4f34b903011d08834a0a35ec8000c3309677c10505136023555331821ad4b0821b583a4fb6e00518845c3c5b119e500514397c6a73622b6984261c61a1c14e138a80734f694c7b5c0fa7f26822179bc01b2a2e64a724241febe463980b8c454d93424e587bd9d1f85b7bdc24176ba55b733a5afededcf87e28b4614d73c19a067281b519fa08c4d4a2e693873b682a09bd76356eea90177b2dcbaf424e350fd6984e7b52f730f71189a362beff927e7639e2399f7badabb243c29d8a975cb81aa9c37b242763c478f831209cf20527567015d305d11ee39cf4f235d28dcebdcad23d3cb99aca7548ba7c0282e563b07481a57cd1532e274c3716ae46762b461572c2a0aff5c7094b292be863744a56bc5c213fe2182f3f860bc703f4f2464e07e8b977e9200ba65cbe5d6e1f69b142bba315f741974bbaddaa62335ced803d1e4a36e0a1b46f9d05340afb276eea1e7407e1350e5e69c7e6df303e3b76913d3bbe01c6bbf8f7ffe25ff73774ab37edc295079e8d2733e4582470c2b2d66d3bb19cb05f88e46ef4760f775dee1df40f703f8c2eb79323309c9fce83c2abc2119189045c6029a3fc2cf419e7a2c505862dd705c21544e28dc34b7d67e08d943d2a18818635a1fa14010a54601a3cd23734ea03bb4367e68810f0ebd154ac25a0f8b800ca11b4e772c9a0092865f8c1b29b0fbc88900517ec602f5e3b34ee7c80634161c20650a2d02271a09844785d010a15af62e944210d50d0c0c5174e8e4f1178b4e0af0a5219a104dc6479c1c7450616b4606b7939713901634db1829d1a70dd8e12497d545c90e2ea82111f54ead280131a10c145e5c449155c4b6892e5a897115e585434a113e1cebc7922039f9d174c1125d462270aecc60911b8300515380d47c50473e95051859e6c47dee8ece8688155057db9912cd7185caf273c5798020d99cfebc90cac30594f9418d980841347073e4fa8d88207ac1415e708ae29a420fa3414ae273d4748e228f88454b9a45843153752b061891648ce05552a880186a9e20d0ab0970f6a60637644700211cc60044beccd0d9430b061bb812206123041cb588dc3049d2e7401e79e92836118a6bd5e4d042c94c1f5e40623680cb29cd020c817eb084e78a6ea084388a273ac4047f50ba9b66b1c68ea6ecd50675f76daedd612abfd106cee96fceeef2a8ee2a0cb8a6ff130dfdf3ca26f7979d0d716edb46a5ade3b39393880544e426085919310e06c1efb450569235d201c937a07d57805ee4733c5be9e3829dba2671f587befb20c96438cc01ab7b5e85c3c537c98eef44cf1471d0e16359ee0f82eddf64cf157741d7da5f85c175f2996e2cb7bfcd5ad99268e6adc3fd3479c0ad72384b3017e44006f44f096e1ec0e49026fdb8549bcd4dacb67c251dab712e76a9484be36d66e2f719366bbd0e78079d43bb95fb45b4bec63695352523a8f70031f0fe07ee8819f986c1a08051be535c194295f5bb2e2a6a170d43b82931cdcff7a821be7d6c1ed4570019e82fba7265f8ff7f48d878ab87f47df900f8017f581cd7de408864d282058c191d5118f47783d1628a2e7f500d9d1b1250a968ada01ae045b0baa0f88008d10754251382a643db48a29d02037603d1053009f902dc062e08a5203323001fb01f683bef1a4135714273cd6bfd537deeac8e83e6182063b6f1e61ae172c318393b42eccce602184ac67ea1cdc334f0a11e4f0d181a6e7afeed16014e8aea60ac1baaa50e1c7e9981893420452832c9804b6bc546aa7e2567067c89a81ac245fc4633fe726841bc548b1450871d46f5d33e11ce8651c351d3b276f1fb1df2dc89a812c57b75ad0053c83fbabcc8988cab978aa5b50eb7703bb4710b1984647d5d79e3a6a7bed3747394a484c9d9d046230e8b56e7e33e12550d737da833ef791248e12120359b0055913a4c5d03001bdf6a0a8bd7f0ef75773d853accb1acbb7720a89c13d96b0a4a18b82644371424f152a54aaf4f454a9d243850a949b292f283754a0dc508172f382723325377602e47003ecb839244e43bf41b097b383642f3f139138484669571ef233adcb8f354de36a9e96e9679fbd4ec6d8c18efec0f63f6c2823d8c932d83d13837deed79221b24153619212eee76f8f0063781ab388721cbc92fc9657c1f22d1d070fe543f01c199862b9f26632ddf63e04d0cbf79c9b3b2cf363b9bdd350cc75db3f4e0192ea401a75a014eb58fc2c83a5a665594629d541828d8f059b5d07cbf724e83c1b2d58be4779369c3e014baf02965bc0f23595c434505f4cd666aaab46ee822484b21e9b4798b6000d40e0534782cda391dfe0f8474479251af11b9f488cdc80eb8cd56e9cf052d4565e2a456d098e5963e19b26383e75c2534d1393e0f8da124765ed86e5a83c8f24715408c7d76e1ca539e1a94713bbec8888f344925d7ae3a50803370f6cd68ee0185f3ba2313157384e2762fc796432e128efe48f97e4cf740118f00adc2c0ee0f7cf7a29bebc191934224c9f12173a506b7d0e5f09e6b4bfdf7bddf5e0ec4fc4f1f4ec0d82d749efa682dd097c24fa03c1cb36546a6a9e4d2bd13613c215649b57ba29d0cd3e46cc126faecfedc0e6e70ab1fc496606a640ef5fb903d8e0ed639769de70ad42b014c7e7e2af781b5c8940dcc21961b94cb4af23473dee9d7bcb8dbce4da7341b4af1f3fd4552058edb9ed2bccaad8124c8db4a8659a86695a8d2737650b60ed29768189812733402309001499a1c4e9d9d8deb72ecb01c83d601ea88b1ed44bfdfe990b322ff46454f4bc7a322f645478cf4b2f881887641bf8be457e573034d23a3eb7eac65142de151cbf6fe6bb025f46481fcb09ef4129af8b97e2cb2491a9109991973a213298d297400891a93e7003c1f2fb878c10199cc9fbc34bd187ec74d82c836b384ac826e3a89ec132117b083f7be857021b969fa3c413fbc96199f552d68ddc850b0206eeee24a559a63d4d8b38bf1dec437235f287971eee01b17c97357e6bb43b7c10d6c06000e4faf82cf376a28f1f1f539af75d5cbc4837948c8c8c8c8c126d0361ddf1f7c78214ecbf42070b4ff0e3fa3577eff45e7a3ceabbbfa623e45dc1ee358cbc2b29b03926053647ec425e115e7a55b87c7e548c3e3f2ce0f740de7bdb3af7476471f192f6a51c499678e9695266ace8e54696577cafbc546fb3845002af78ef72c7645f1feb8874ee0efbea1cf8ec3eb8c3f5c2263e9ca67d7db05d0908ae600a7429b576a5f366f46b28b0d6756ae8330ccdb5b79de684ddbe714beb78a9bbd8529ac7de8ee2a5cd7d3848433ae0ab99e8b9cec7c727c3c05b8673eb1cd1d88545b957547388b9bfe6cd7a9686f98a15a41e997bb7e236ab63f1f5dd9042c4931b5288b06f8a1f3cc1f5fdcd70056b0f045b5fd6c46a28b07e02ff0c572297ef9214cd09ebff70862ecd043643d71347d5ea9e6d19c743461604fba25f21d1fe61153c1bd86bdff733643d1b8d5bd3585e576c2e5cf6b56eb57bb8a188dbbec2d4688d43d825c3aacbf6c265bf71351ad658cdb29a89b2fad96d24f531acb2d85eb89aad669febf76ae528ec37dfc1db67872b476170d53d28de9ee26dc4f1c07edb6e23c1b6af0f6e5c8d46656073af567dc33580bb7e86bd6037438c44e37a493c94b804c19e486b5d10fffa75e3e15f8784b820fceb90c658638c099807541d85fdc8c715a1b704699fc38b10f26cbc47bbbad33a188b0b2f71efa19fbed1569a4697f50ef5d121c04befe5730e38cb5fc4b74e477936b8ef872bb85a6119cfe45172c0f9f51801fb0f3eccd011f9878010e128ad099b5be77deb3c1ba2ce6ec499689ddc527037125e4fd156aa504982bb75425da57fca159c61607fd14be580a6c6de43d514e8fdfef0d27bdabd4763e69570e4c0d11900a68828c1d40ef76fb9d9b2509e1dad7baf94dd1ced33397d25ff1c30357a11e81bfd68f8cbc0c77eb31019fc1e9520fcb5dcd8fbaa75afcb36b80736c381df6bf769d7ebfb92a34842308c048c79df061c672c10bcf9c0db56bbecb7ae88fa7548ad9113027bafdf6dcf5da7ffb0b675fe43e8671b4c2f056e7defb69be3eb721117d6b0f7a79f7547489cdbb12ecf281f3fff782ae1b7d3dceca16ff0fc8d42d3fcf740e6e340623355e1f9f3fb48abda88a3dc0847f9cf27e228f8f32dd00385001eef468da6317ffe8e6703fbf97aec687eb6738ebe467e52c0fd3f323eb33fa3f09c0284cebe8928a82fa6ca7fcf86c77f91851370fc3c22c02bc5a74f0a8e3a3c1b037833e2c72ff50d1c4d237efc99506681410518306e98c20d37bc90c28b172e785cb8204581446a0185162d609e00033392321a899c2012b168020b162f4c787971e928e3774719bf3bcaf8dd51c6ef8e327e7794f1bb23f766c8f88de33fd951c6ef8e327e7794f1bba38cdf1d65fcee28e377c7e7044789e33f19238e4f8067034288e30fe0d9f09ef9417e7c1c355de9c64d0ca38fd292ac1d4b137b18167178293e9e396149ac4cf40dd88f251cbf74f2540c4d8cc18fe94605c7b72eaf36770069c5e6191c6728b516cee0f85e2029dcdd63de89dd11e38357a60c6dc07006b409495a2c562b4992562b09ab0cac32acca80a40cac32b0ca80a40cab9e9686d9dbefaddabba1f41c8151a8af07ac318d50768452664f33ec312ceb6b10c0944cceea06523cc1832658a1f129d56d3084f3cdf7f273c00641d3f08fdd0afac709f729018a149c90383854bcbfdb7083ab205073e8d6a0ec209950582a1858c130f09b02064dc08f05088edfafb3ee3bd861b3248152774909183d051da0d2811c5c5fa6069ba9fc7dbc12df7b74079ab89ac75db1993efd7114c8522b8ef28b8424c24b0d4487657924feac5eb1b0bc7c967e9fc3e90edda13b4f764ae63f6ac55353889b30f57114bc566e115f9097f41ef635c40ec4f8220439f63b04f6a8608706b83f07bd7a333a0555881df0772a76be9e1448c1f9f13c9d66c1d4fc1618cc7ff921b4a7b7087ded5f6e11263fe86b5fe4a5d297f7427ad11759f12f3f848894e90ec91ffbf94364fff236f3e9ff98dabfdc2458bcf649d09f6f43535950aa3dc99fbe0d0dc92f49012f2ffe49acf897f7fb43447ad1dbd0b0f8c1e269f62e3f475f492b6c68482d1e26d31d92ff7bf855d4bd287afd182960b4e2b187dd0f974bf2ec250744e31715965831034ba5a221fd684422753634a397d732dd79d0d4c2860646f4f3453b53644333494334cdfc224c7e8c5ef48fa6087d163f048ba7cfe226910413920f16bf8047c3e20e317f50f00516b04047a5a239e2342c5e09157d136c12021e2841095458dc0dcccf238dee40930d8d46773a92029a469b3f45c0823499eeec40533fed280fdd21f9a03634596743f3381d8d7bf5831117cda3699a920c343505816d81c1bffb6e1353b43fe8f6e15e7584578993257ab00c7e4e96c8c115367408825d3c72043ec8f1a01812e1a5de81800ba58929140b56e2972912170c8be8d58b521feaf36c347cff7984c4424af87929d31d2f959634eb0436f7aa0868f24992062bff3da4281e4781be9f52a15370bf70bf778e77a4f078a9d44ee04c7d564896e0fe76c25199ee501f2b3b523cf56840fd4a2d12b7bc05ed60b908388335809772e844f93b1020ddefe33a221c08cfdfc74367b0b5c0a920f1db2b20cfd420266004b20b5cbfce585b6b15e202d72a6ca63bb87760aa88fa232f752b988a6eaadfffeac75a1ffe5572e41b899bfa7b3586c7f3e40f2ce9c7f6db93869845b09fd8dbd060dd932c737be1fa381db52301513f475cff49f104159c036e5db6c143ba9b1d6908adc87c6d5ed28f49aaff68b09f9754af029a66fea3a1da6d165cadba57bd82a67e3d2b203beee319f5d3c96ca812d246c61a54b8bc501c0e5ea93b1c502c3c93bf0e34e558f80f3b8f8df89268bff719bd5ef2d5c40e32dd2c95af9b4743eb2aecf2086749bc04239c52b6131f275190c857bb9c4459e25346f97214c9e22cab607f9bc4519ebdd651eaca3a9a43a24f2fc571c114dd68a63e2e1738539f4c7da80b7ba92443ad1d8dfeb396a7b4d2896e9eca92f8ca05ce59125fc5da1385934d8591a065dc6ffd40b2a70f44fbfadb4f6fb788f6f5fd16c9dc91adc5a960aa487dedfdb71fafaf7d118e7ef640e87dd0f440ea1dfd0d6cf6da2fc11aa1cfbd9122db57ae05535a46ff0777494d2fa9ef0fa17dfd4adf86a608e8b7a75d11263f40bf7d91d03f1f98ca92c8944affa3519684fa6449289c628b30815f84fbd017d99ed43f04f7a11f627b10a9af02b80ffd0fee430f7b1c159f6b65aee5f2a2d3ff2ec7e372b9565dd15547e94b7d36fcfd4471c449ae3748d07e7290399e1756b5d41fec2fda6eb615fcda6d2a68aa3ddbaadb5cbaead3f54cb10fbf7b7eb0f7f860d0733d514e6c74b996c8b65c799fde92cbd6da5a8f06e7b9ead6e3d303538f66f381777b6d3c1b0fa52d8e0657b079fbf91e154cbdf8c094cbfb6f2b78f3973696fd6ec1e65a2f2f2f3b1f2fd78891d0d737027a174a694b7dfa3fead3d0d78ff7870be85dde86c63e1af7c0e892e0d7787fb4bccb4d4274497008eeeb2dc2e487cb6f5fa43ef7436c2f0a309f472d48930473bb71a24429740a9edf72716c178de86c1ded4439aa9cc5fb8e8b1c55be737354b580354f3146b8d480ad7ff35f1eb6e012474595113b602a1a71d37c96e7c3dd6cb12bba773e86d1a8da6e8e4d5c6e8eae97ab6ab91a4b556955f4f561dc20c25ecc0e213750f0f415d613ef6102470afc8948587035140897dfdedf05c9e55d6e9016961b6f1090d6715f03076604cf2ef4a315b605c5fe398a621a75eaee8efda87b34d2d20c8a5ea4897e48088b1e832d374d6a47a3a7337bf92d79491c8fec66d1674fbfc545a2b176b367bf61a2cff405c7835e9167d77f4808fb7d4f1d95e9c36f51e5568229c85202ad8839dc3e6c8d5ad8d53efb57917ded6b0894cd1f755a47bd5467c9c2c0aa74f807c9e88d2cd1486c82677c82e7fc7a33a5f2666bedcda39176f3df5c8ad921e4060a9ebec27ae23d4ce048813f11c9b3e1187b125783b5e084d02cad7f4484e178886e7679e7dee5fd5b585874dc73441a6bb8a3e8ec38cadefe799b6ba07f447dc54b47fcc64d1becb417d9cf4475bea873293d1fb6663f13fdf951f56c643f1f068685857ecee8bfa8ca4262b02a4345238e6aeccac99e85e391bdbcd169963d2f4dd1833821b2a75f75d8b00e62295faca942b0f65f46bd448934cee85675d8b26864d44537c517d1ae646729fbf3707a63e311308175c06f0a11bc70e47458ce5f5ebe391da4218db3a73f2484e97d16cfc209a13de66fe945a27176b37f0b8beebd5c520f976f79228d59dee506b1bf22877792968e76d14bf3e777cb51f61a91d1e7baec030e9c1f1a887829cf1801a74f7fe82fb60441a96a7106acb69b15fde222081349f2c5848175344616a3cda8a54d06e7a01d42274b6279d1026345e712e32586450ea219231d604a2d7620c970e12fb6e828d3bf86b1c54ecd781efa3fa71d5c66de931734f50f34c9d2bfaf333a93e97578ff1a63e24c9fc373b8e96b8c2d3a0a066e3a743b7cc581abd9e1a6ec0e5d63397f070c9e4ea713cc9f4ea7d3e9e1e9743a9d5efce9743a9d60fce9743a9dba3f9d0c702ac089e614e34f277cca7122c029e64fa7019c7e38e138e5f0a7d38d938d93004e33fe749a39a54ea8930e7f3a05e054e3e4c3e92473e2e1d4c3a9f4a71dfe949d0070a2713ad513770a9d4ea713cb69c5e9e5743a894e27d39f4ea797c1d59c0c50001a9c830003f801c70d1b029849a17ca811801e7890a10180ac722196152fa286c95cae1524c7302d2fb88d638101a373fcc2762c9625142346e7b803c5bcb8bc7039e4d0398ed966c08c6028a594524a29ad3a905a901ccfd04a2f5cbcc876d8a1735ca2588c1b639a64482923cc01871c4c9de31ab3cd581e3270f49284712b758ebd537267742f98aa2e68a274054d485cd957beaaac24f5256774fe3bf48f943ffdf383a58c877fc2e16b0e5c0d2c758dbd7b18723abce602ab0487cfe18f88587ea98b38b23c55690be32071d48a2b9eaa2e5734027f208fa76a8f140885a72a6d629f60f81007de784aa32bcb7ab5302455f194bbfc4a013e43233d8e7aa1e3297f65dfc1303b0fce016124f11454655f82a143817ff8ec4d30ec1ebeab3c05597ee4c6c798e229e86a2a18ce4018f3f03bc753f0d52e1f5090871e209cf1b0f400a0f1b95532f08df054643d2ad94797901d21190c5d30dc52f1054d728787f0e1e7c0d5b8b0bb604aa33537536b809b6d016e1ec98cd2dc4c2dbefec212aa602a63514a00d500543fa870dc4c6fb06cb0a8006ea676e6669bba7924b1970aa630164c4d147cf9005f35ee2800378f6c0f375b1e5454e6666a69dc6c01105d303559f10553f2c58226f9a3cc35ca232b65ec5b5faf170e2b3615f6f2372398cbe5922fe325a399e3159de35a592c160bcb8f1155adaaaaaaaab0fc1830dc06e3b86aafd74bfe258540afb1604a73b934964b63b93496cbe592dfbd60b12c8e499de3ec05539a96699996699aa63d8c152d393c63c154e672652c57c672652c97cb05a37b7179710ca3734c5f309551aa7abd3255a6ca54990acbbf218688450ea72c98a22e1765b928cb45592e974bfe8b1898d1c7748e63748eb1174c511534c9a7d45ad58baaa88aaaa80acb773183d40263c114e672b15c18cb85b15c2ef9a4d20b172f1ccfe81ccf174c61aa97eaa57a612a4c85a95ac88071038ccfe1930553d3e59a2cd764b926cbe572b9b07c18efbe732ca3732c5f303555aad76baa5e53355553257fb4438cd4fd189fc3250ba6a40b9ae4536a2dcb0553964a970bcb177140f4a98bda0b6cfc5c7d555f8e92f1f22b1547f94bf9524a29e373f8a973bc43e718cad741be497ecd618b8ef2eed980113a264111874e96623a79bbe7a6ae93ff1d8c4efe0ddd73d30b92fc16f261e48fba074d2229ffc50a96efd2c916f92cf606cb0f75f2419d7c4efe26bfe2c8cfe453f998fc1905cbaf3a6c31b0f07d83a144db400803899efa6232a6c233fa461fd287f421f68ebd63ef59254315ef86c36f95cf0fd658b6dfc7e07dc37fc226780601cfd75c60e1679f611c6204ce3ee384a00f9fe301a193e1a5e87335400ebcc013ea68dcedb1e7663ea5d0da9797387964e75638201abb4f0bacfc3c7df07c187d78e6e7b98a1da554d36e8e8f86639f6118d52a7631ad6e0fc3d22f45dd3bad09cbbd57f152149a7cfca1061efcc07c14431ff7ceadb0c072177b4aa70a5a71d36cce1f875de8a3cdaff3ddc7ad38eae7d9a03f1d0d787ec5ee8b91ce093331d584a0313cc57982fd37174f06fbbf20537460479bc28811ff8952433568c8676c8ca04e421450e07e4f82650dc2bfbfbed7f2e7947e921f44be7f7f97e31dd218de20a1937bdf539378c2b199881c158c49c1d9cf283017faf8b1583eb60ffcdc2f086262cfc292f5ca511243acc32076ea10f052fd58dea389ddb1716060bf49662c1702855cbe8ff0f0c76edfb8b87c9df3057bda11694c3bfa7572427418bbdec427b6549623d35730b5ddd681a6f8945a3b6a1d1458d18acf30f06c691f688a3f5f24bf47a25ed551c7e26b6ff145a2db11ebd85259564c0ca31c4bb74f365fb8cfa6fb9c4fb97973e3dd9cd4e5a3cb4f97e7381e2e2e2e2e774e4a678459b1652cad9dc0721fb78fd15d9a09acbbfc89a3749e3faf48bc14b9cd574790382ad2e9f463f648279d37d16160b6165cf6956bf8829330424d5764b145466b8b8dc46519e8c651f4468a6159e6d123cb67cff222cb2e4669d758d74cb8d8485c8d0c713573def4114ae34eebac1cd5471c89b31cb5a2374819e9958fdd74cdb1c4f7f88ea499e81b12866134883f7d4aa546595e8063b7e255629178cadee7a6f9f17b45b30d6d5ba6387291de4bdf8cd83f9b4efa987cae79a3ef5019a305211cc137e03745107ab013b87f4661056b3fa7c8c1c136f09bc2075630114f6aa81ffe7b33e667edb509678c91dbb6a97141e413698c9dbcd4cf7ded372306cfee7d77da739c16faec43dabbc0444618f44422ae9fe76f5fa1c03409a64f3f731ddccf0775f52bc7f25af77e76dcd7def2b73cfd875bba6c83e9b3d82e748f4022e27731ad7b8811f8bd19990b626acd05315f7b8ed36cf09cdd7bf4b3d782f4cfd7248ffe4979f48cf16bffc94bef89ccae4fa79f8f1da1fd7b33b8e72ef792abe15e6edccbdc83be6231462e066fdd7baeab0fe24e6fc6d3e6f77d79fe0b32ffb1c77e62ff90682cfb6d8370e2c3f83008fcf8997bdbc33277fcf9725ec805814463bf34e70c5530fc188a5762e0bd01b9c4e3f3e303bcf4f042f3a21a611616b3a0d8f5cf5355b48348247a2cc751a5772046a6910e23150e3032603698116e61710b8a5bb4780a054bfaeeba5a9d3c27388b9f05203ff3d0e3b309019fbb20520910e273e6e37367afbd8fae9fa95f882e015d7f10dd7b2604743d4c9887caddcfbadb49e039c1dc5bae46ebcea778e9760f6bdc73d3090d13015ca7e282a96de6669abad9a22ea7823edc4c6bdc6c7df8005c9a7ff000378f9ec7cd3bae4a878ac6cd33385715c7aa2f98e25c9b4ae6e6110f375b00dc19378f66fce9667bfa1d9c9a6eb640dc3cc2359de7d0398f97e06faccda5e1c05455e170f308879771b38db9996203dc6c0b4073f1ed2a10ecf6767b9bebe0f8fe1fbeb270353fd4de7ee81af327dec44bdcdd6addb401347d1c9f03721d012e1211e3b05ccd006ecae2f8d7398e970680e387eee189e3c64f4ec78d1bd7739cc0df5ef01dbe8d9b297c01dc6ce1cf6c2af8a99b29ea660bdf07f8356ea6f00370b36d82e1f770f3083e0cf82f38167c1e6ea6f0656eb6f069dc3cf2e75cdc0b3e00ae0b3b847f72ed7033d5e1be4c378f70a903a9602ac6412c988acf0473b879041f07157c19aa989b473140ac7b59f6bbdbcff25df73e07fcce3e8c2eff0d5d2ebd78ae3c83f373794f8b2e079b92b12b9922c1fe2cba4c9b643a256748b0ff8a2e674db07f4b87e5585962af045c1e0cc1251146b742c3040405f69fadec76f9edd8e0e0f7b5cb6f07672c077bd23233259992e59ea9bf3f6339cdd5bcedb99bed7625007ab5594ae2474ebbbd7aef3d6eae3ca76f44157608bfbbdfed1c1722831bf68df7998f001f3171f68973b3e01a6cc672b01cea240853266908f9f1e525c117e5d02421caa12902a69c06c3d8c59a68395ef27f399beb6168f21b98f29caa82292cc757d8bdd4575cb8849f146a586129aee0e027451a7ef00cfca448830ef69c67238ad703c3d44bad2d619f146970c57831cf336339588e0ff6c79a788e37f128d8932ab6272b07a6bc89633939d9176c9e2cffc972947768dad428e1361e7f68c29db02e318d844984dddda9bce43ef877c79803c26e0a89c1afe77ac2e656b513ab1b0c5b05534d238180064b7af349fdaf6f5af54cfe58dfb46af352f6447d3d58b953d271617f1965e4e224a54c9c99e33ef857e8730326fdefc2253cb0d00690066fc66c1c28668ea3e085ad37c3df71e3ecc78eb0154cc5872d480369dcdd5938a3175b3ad81d075be1e8f8e78963ad4bc496a8f1dd4c7143df28c430a3f4f2c01e5600e27983c820f15ef727442d091f8d46a3da8d65ddda67da8d58967d7cae283b3803d6df8493b0fd6c70a31902264001839c5bfd861d841db6d52e138118befc1b1ca789c18e8dbce4ef3fa2febc95c4cf3a228e6b2e91c6f0e995c0865bb68b515f25f1615cc1280c15ca083ca0490102c2e6e40913909603eb9f470e9f1839aac71296c838e44cd02fda3ebf8a564ed89f8aa3de7bbfbe55dfafaea9748fc7c066daee42f66c4385b1a00a44e36a1f5659ec8bf5c5e4cc452357437b60350cc3b0ab7d971d6bef23b7eb7fe33859cecc70588e4ae2a8d66461f5467b0a573247aeb023d0249360fbf364e13759103e95570978036f70f4d2bb5c0dcd5c526a21db296e54d8bfad1841a48df41516388163f08382c407d7500f1c2aeec3c356faa7adf495fee755dc8af7bc70093f284872f0e3e06b378853b020fca6e0818f4c5f1f242d9c037e5090a8707d94c73e284ff8cc9b1edc343e8f4c2678f00df841792207b72285a625d82388582cd5808647c31fca132aec023f282bc002ae756eef753906db2636313ae9a4d9cc66a64d6dd6cae998574e900e083fcb1fed0676aae48f0d6c7f9c8275c18f085758e1da5ccd7bdd96d351ca0db92a048b3ddc22a7e37989d3c1e9c0aee4a08cf04dd07c1f7fdef766f4cdefb5d756605f7925103426364383952f73ac7f3f26c194fc993774decc1b2aedef650c6cee955ff8f0f38dfc7933fcb31f9bbde7d5ef5100a4a9b79f0fa4ede3251f6d899d509e58e1ecfea03c51c57db4ae71f4d15ebe7e159495c08dbbc33ecebee2e303538fa67f54d08f78cf54cdcc0c36bf578f114ee4c77b84c01b9c6549f860f8dd039b7b056feefb0e7bd8098137983e2b7f7c7cbc0af579df0fe177777777773fec84c4e0885defd16ce03f3d6e05fb57f118d82c7fe6cd8da39c78d5eb48fd7eb2327f3185fa943081df1433b8826be037c50ca4981304ed8b7913d8e13ef8c7ce87fbe02fa5b099523bfa92cccc73d1d837050990e04cf3e3d131828a98044c60ffcd050f383f29d87b508982e106e19b201ad81cde495cabbb6a801fee41e5c912fc70f57ede83ca8ea348f01bc3fb5eb0079a124d8926036d069a0cb419d080065ff8c2174680c41f7e945a3b1a7d2ec94013fc17dfb34124be28594e70f0c30fe7e0d8c2f485b0c2f45f0f4304f066c088c51bbb1a3d1af7db60e9ce05d1953ae48290184679c8c036edf1d5f019ec1f8b7d83db890ac7cf7c70fc17a6efdac10c888f5d790c780ea882e9cfb86d9c8e7efaf2e1cf84b820627ac4f470dac5b88cf25b4ac9b50c86b1658bf08a382144dbec72f6f32b17c4ec20b28f5fc34bb06b7809e2dc5f9f48ecc73ef7cbd7b8205ac620fce3d74a3f887eac9b8f2387972e0f199d9588f0e51dd2328eea1b1f420c21123084ff0480e1f6ec43c58796ab990d23d69213223efdc8f180d962e732677d83cca7cf83e3319fbe1cf29a0b6c10fffe20b271bc9065043e38b6df4861ca02f0fb46ef8ce2eb782cdf0270a76fc4348d38b2f0663bdf4fdfecaf34b198f9308e88f08c213cdf8cc1310f35dfbff45012252557e3150856fe9c52cad7acc4e0f7e3efa77dbab6c2020b5ffefcdc3bbd1363cf35b4ffc31cf743e8e724b0ffcd271c64fb9297defbd7e79ea5d65a59b2a797bb540af63df6977bee1fb7e3e1edfa1d42b7e736fadb733107f40d045b3820462f7a33721298e527e961bec593bec2745962988ee55d10815960481d8b6f21840cccc2e55b742f0fd3651f98e51f376219c2f250d4bd192cba77e9646424202e82e5ebb77443583edb60967faf7708fd1cb7f72e6f438880be76da6f2c9785e552c0862e12303803ddf74a597bee6eda1d925d251f881f9f5e2c79c82f0940a009fa802638059bdf8e0f9882a9b7848526f8f1bed112ef013025ef1d41d383b702c18a94701b8715a7e6eecfb1c62e06639df6997c2c6a2fff7cec3feb1c16a1be982c5578fe142b6554a3645f14ecd24a2ea088d66e0863a49948f434a30f6f44a19afc2c23620aa6efda632c4fbffe36635dab9a68c66e2be8dd5cb3efeb0d51e5ef5b3558a7399f0b077ef35fbc957105cf97c1f19081897869b2b4c8311cb66dd431c1a81dddfb300ecc8f1a08819e455d2a0e1b5c025ba21613ff9285b0055bbef1b05a3b4d45383838f08a432b0eab402ab00aade3a6f9f00aee38c32925291f65f4a4894328f0fcd6a139761c0fedfd656c16a61aa7757e1ac7fec89fda3a3a9125baa8c877904081e7d7f9d202814be8a5975e5a0388e9534f4515fd7e3760ab69cca71489d8c519e2b13b31475704428e51644a2d36ff391e996ae346dcb75cdcddddddddddddbdc66b2d6da52cb64ecc5ac0c85a5832d786c38a5aa7c64927151dbe7080326c556df31d988aaa9266314addddddddddddddbdc6a3ca5137641986029bb97f373bc2bdfdf9a01095a010c8c21410989f0f04a61ae706a62fa8b46c35c6514d19a2190100007314002030140c874462d158309ac8ba681f14800b8caa586a5819684190c220839031c018008001000000000090c1c20060b497a924279dea5dbb9e934a20d4fa0321c68209b19525f1defc020f506f3895323c25d857864150af4d043410f583ccb27b3c63ed5c0fc375127ab287855ce44afc9fe99a16341d9b4cb1c3759694bb737cd121085fb268e59238415d3d07824e2dd359318ac13b378bf74cf617e818c9f1c9d6010dde9fe8588a72221b48c4e22b6aa4a45ec0b6603925f711b34306a544da1940f731ad087c7df7b098ece1bad9f89a642bba8cd2c007b9dd33f94cdd0991e5141d061e9a4f023ca16c2b8d208c931c86d40074982323291a564c55fa8e4f43ef1d48648bdfc12502b4caef488777063bbd0b37403cc45aedfa64b4c5519a036178845c5d047daa559aac24a4a60e38944e784f8390def0084a64ba5c77a4d5eed6816a418a0c005e258d60b5c447f061c548e692b5e721ccd51862f82b7c44bc562be201602f36a2e272472520a12e87fd643649b20f04b09f0d04666477d46eb5aa1eddbf36456d80ec15bd86106622ede2231f82d830f1d41f8cec38049f6368c67ecf6f79148b8c3d1ff17b51a87ee49b12021edb63a309612a9db93e5874733d211c3259bab497cfca42bcf1419b30ec1d1616942925e03d8fe0e484ba0769c26a7a8507584100a12e1c8835b19e1b6c63aca019b52df4515981a101441bc97f32f3da8d090ae0a47fa3b0ce28e27872fc88c65c9fa7a01af52c09a2f494c504253d8552a399f414bccd6632494aa5a7384670ac4584a5c29a7fc5efa4a7e471b71e7ac8647a0a7156e05ace624c4f09be44f5511e57a6a7d41a75a6a08baaf814f7d0a7ccc2522d21c11bb5b84f39895567e54977f5acdda7fc5b99b3bc2f545dbb4ff972a44d3667a6c19a08c9877e9e0821fcbcbc6c24c9e051de6eddd83badab0825559e8dca3475f54c37ea608852890c435ca567a957bad79cb4ba13bdf0053b23af84ae20f832963643b31a9576d30b1e894e7e2fe430201d6308cde915e262c04d0a58a60aefade85ddbf9705b229205ab0b87fddccdc8bb55919d04954edc8a5584639fd90e0ad87537f76283669f56683933a01ce1e0065bcc40c3cd5efc3de9c3e9c09c4d87bdc03933cb0401026380588e6cd7d55c6f04ea3f9f7353005c9dba09b2390d9250abb696ec7c903bb17c4792bcb98c81309d8f16a59364a84c6ad60ff3ee36a2481ef89894338b68e1dbed94d35a2a3f892649763ed8cc1a21311d2c5c6b3e487cab30eae4c54716c80d41e803fdbf80a77776243cf5857fd6eceebf99b2a7c7b00c771f83d833d7338a8b5a7495db239a9421b865a024ce9cb5aaadac66d198b1cddc9fad5e8a9078065c2f31540c569019f2573cafc2279cd2867716374364ddb78402315c8322f49c7e37c8c01f616924c0e9a7cef68da9c7c99ba68d070140e9d760dce2d8cd1db48202d0294c6ec392634f724d91eb6f94c75852679c6d2cbf76631d4a62a4a465497f1cc72deb2cc8d85cef2f71b21334f78e716aaeec68874d709aad49ba925eba2034d8caa2f127c03955231eb168f05840640c6e2ff1477784bb43a25126c413bc1b76c539fd64680b8d544575c48f23f2cf29f3505a741e849b88457d7923d7b3a8ab9261acf66a7b8a6863f1414e03f12f4edb2ecdf5651ffe27bf23b165220545f7e4e584f40875c3f8ec2ed6a988155ec20a2051e391f7c725a6762b288b607eee1928eac9f246f9b78ca08ba14a4b4c234381826cec921922369cd0f8526210a76b035a5e6cf737f48110ff5c1903549b381f2e2072d1aa43c0c7ee9c8beb22285c9085e68c1eb2b8653018fad4e800997b5b304b942a0921204b2976832807289a212993cff5ef2360265ff9a6619815124d1f784016724b75fbbc281f460fa90e778f396988ac052ed267696279a5bb4d44c77fd2173f3c4e770785759d275c37ff03521d13eae7099588dd524d4cd23a221fe87a4e6a8526d8d76abaa4d3e9f56c96a21e3ad5c3451c2fed54f91dc9853ff94eeeae543121896af9cf32ee9ac6d390c0d3d7a5e9cc75bb1fa4b86eaaf3720e5eb229b7b21328721fb53d403098472ec5bbbb7e68fadd94b80b38e5c022abe30104de9f1c0464ff3446a03f8c68bf12f9112e88b60c42f9a582c1e1998c219ca83ef2115e75233ae84480ece357576f735f70989b1d9f68b23ba6de7703e1da56ab5cbbc56dc207b1fa062e89447800d3474fac4f5fac61f6bbafee09bc399281aa2388780308493f7219297b041e09d624bbafe3e44d206f27680b16685aaf8dedbba681c501105270321d5de7ab88da641dc8f74f39391ff46c7a0e33575e6edea4fc35ff98ba1f9e22da75a516e2ecf6e6b5367b9e309750a305bb53f5afc41f6437c82bbe708b6284b712fe6828d82d073a13fbb34577caa3acab69590ccd9b61d648148571ab887a75a5c7402748ac104133f4689e60b3271457ba1b4477af9d9f134e0702d11c52aca9bdd1e88d1d1d3a3abbde37078911f0ab2ec2837a41eba1429bf9f6aed334b637e429d1c39c1b4f6f2ef3e2ca24ebf0b556d442e7edda1505d0cc0671b6b62900babbd0b12a20291c4a7ac88239ab4ff2df46d849fe08957bac5d73a002da25b9edae6ec357296c6b5a1f62b219a3fba483188ceeb51e0f1eecacbb830398f6182397f03ae7eb78cc01d8527d7554fe6c8e4736b93549124281c7b5f43750ba5927199e8e9762120294d10027c1f4c262c3c62cc80652690003d2a0627dd446bc9d2ce88c44bc885d129f0c3e6d7f311d2180ba674dd4009c607e163957dde7040859bfc75f4b605160b522f1ecc3a0cc9c3e54896a9c39fad3be3372d8107c5e0a33e267f58dc5b0e8839b97c27030f52d3c67ba1623c3fe79a54a0a4f1c556ed13f45cbc7077a292b1bc6c905c8220d9f67b2b213c95856adfeb159ac95102d278615ed606f48e0836758dcf1e41d8c19cad6fb935ac3d4f390652cc356152810f1f5997a921766e4ee9b5d0df001972d3463ab4407685575751e1632ca7e119acea6b197eb07965bd2f006513e584e807942ee9c1139189a4ae80e851ca67a949710e2957a6c94a076aac28f9134cd6f208ffa901faa570cef95e75ac1ada972612f046a0c183aeccd0fed97d0e1e91008c31a0c1e59a161652ea958911763af5e362697030f3e123f204cd5eb64731510afc00161f7dec1b76740ffeaa5539a151b0996162d51f59021fde0e994cfd3e959a1f7b9c9300f329e49abbba7f4d2b38ead79fb6690e4cd7e954334cf1a3513249887a54a1f1347f06d37d6e0d854c74b796543bec362a3b872bfbe7277bee7725a8e400f419d0f8b9a9a93699316cbbe93ba828a9ef21f64a58e8c3aec5e0ec7f1d7b798dfb921be0ffc0b5532d2ba16f09472483d491f40834e0ecf366dd0622a1b093460a30d2ad8964c3bcd04c9e414de3d41a51e7b4b6cf491d3d3499d501a514e3e1cfb9663ee419af15ed8bf50060929da467effa804b765330005ae6cce48614a3b9502cb95cb0c5de6b8fa98bf10fffbce6b4b50552fc81f1cb8864872798cad1cf9450a752cb6cb0ce1d7fd486e7f6f4cfd2d4ed098cac61503c9a062b4948ef92bf23ce37d14a58a5a3bdb715fee8d3bc839be13b9b5ba8a1f17d7a95c8147adb1e5ccb6d7b091234e6af30f7cdb1463330f490486cf91d276de2cf1c2bd442a2109d5fc90f0765b7ac5c9a3fdd4170532517598354ce0cd4124d547259d07877d5abf145443cc65dff5c6a69d95974768ca86729f94514a70096c8594bb50b481ff16a4270271e71da587f4e788f6432a48ba5f4c6fb927509bd33d683046aea65a1c3865ffe252a23d574ba032aa445e87ab94940ac8c4b36611287c957836867688a5ba7eea24036643088593cbb8666aa823116061f5a03cd435a1228f9c2fb338e9245a3251c8b04836cdfe858c1979a133a4812d881ce60cc90d213b6a279c166008f30c6314961aa499b8645b6d8f037486b7dc1a48ad61de684acdeca9e1b945a9f598eb47150fe7ec0b6b606c7706a94ba4d6a2e576f0e3d6bc108f76968748d87f5daa8d9c517310f177d8428c88ede116314b22fe0a36deff728a2e5e45b44429c04fda6f5b57cea90e160c37a12da69944930dd4be90be208594ddb70548cabdda72e6fbe8923551a8312e66297d25f4f36a927db42ecab379330ee49faf04fa333859cef983f1ea01a18b6d458516532011d384da9a86f932b31dbe20aa7b57bd471449cfa9412c34112789f7ab76a78095e769db670eae4befd4cbf10e467429952bc5a90991c54654f212cb3a0519df2291375021d9aa6025bd4ae6dafb3d0d78cbc9802586cad47cde174105d8769601f1a51d2382d0d9542d53b47633a3455068fe81a61016461403c563e0ad5b7abb692560f965988a3aa1cd65cbe4d67b67e6a220c213315b562a408df310a823184f0d621d1e1843a0603cd2c331b2c0003cbda6523d298d0472a4ca7e8e684e2689fc1007dbfb7664ff88bc78bb272047e4bd01e02a41ea07f04274ae7e80db77b78d7d25aed74e6881d2f441b4450a211302df354ee3a6719e63ce9915f9a0c3c6318470595507d3af454955d1757614cb4e4e8e9861964e8c2e0f5a6874fab69d0aab5b83155e47ae3ce0e9da5f8f5cd3afcc117d568659a5c97716f3ae19c3202e0280fb24b0552ab179e6505d588c5444fc5121c19d5e4c77827e38b144be498c0ddc25bd78509d1dddde3559fb53f13211cf1c23b158c3db1d0a38ee6ea297492036d7876a3b702d8409f798cbe0816b0b5f02def852e0d0adcd15c278af30d04aaf9d79ab3872963cbf929bb08dd90394efe0a8b3b613e95e7a5bf2d15afcec2b34923e0d7d7580cee48f7f7b845b0b64b6a9ce109e81eccf761c04f44f12b2a04d8855a07de40ba458bb4b5e46d60f0a335d603e31ea61126ad0f0176eedd65b1b9a0242de273b4d32636f969ccb9fabafe0dcde275d31eccce352e671bbc4dd29ed444fad11e78946c767001f358b86bb894b35bfe2d04e2164bbed27099cbe9d0067c0ed0b2ba81f1c16818ed19f26017208f1fee02204f64b64458015e08a3a9959af687f774b8dea3561dde86e086c56a7f652fdfba2ea3dc44032456113088063d7e6e876c3453b68d95566cc25a7ee0ce1bac079568462e6ee57df25c3016bfd000beec8735b207eedf82ef649497996ab607fc003a9b055c971490ce688f6f64f28122050cdb1c907ea5710cc91338d4a3feec3703afc5e7dd77875c652e80c193220e1dbe006f8f2aaf7be6b277e67aeb4feda608e82dd896f5123533d483490ebc38e3b4a811197877e32d2fcbf757b43898248383f06f1d8780942c2e78e6cfda4e915f2323255095976760bd736578db905514a6de9fdced6e1e937d8e7eb44ae01ca001c902487bc7727a52ecd8235114e9b6ec4cfa03a08de1aee0ea40ae6a809068b816860980cd54980ca62b071b60d40b2c5f8600a3b0f4d048057f6cc025beffc31daf1428113e1db5d8719c6af1b5eebbc41f7a4a2d5b21e77d4f737810402cc0a673538b9fd7283319335254cbe0960ded204d7a63ab08fa3e1327def354c411bd711717f78d92595d0e316efe73937e3702f2bb509959303a20c2caf99cd25003e49c4bc1140cf3b03f2bd88ebab12b5f236fce32bdfe57ad6f8568cbaa3b2fc1a0c5b6b86bd5ecbb5f9357efb73c849746cfc315b091b31dc5228f987eb9622c2719991b3c429154499f6c4a4a84571788311a185ed084df5af29109bbbee8bad597d29cea7c80b8909829dcc3b40c143f3340339ea2c58482d85aff7831c69c385dafd77d1f386cc7d2e1b17ba0a16e3a9c8440be4e1a80f8f0bdadf739d118e6b23ef14f44908782a54868d944beda0440d5b3ef97fe8547ad69391e3c6bd501fb59c3e83a56079b5272243439aa763b4faec5f988aae383b260897235934392b698fde9a8bfe046d2acac51697588f0cf59211577ca5940b8c905dd814cc35fa89f49e18e1419d4b31ab205edb3fe691e63ca45a9c253cc52529634d116c45ca6504e324183626f6d431f8a1e89d62f3872fc97724bafc0d0edcee9c72c6e296a5aa8ca526e9d1415b65f4a6a38c54f5847fb9afc126e8d37a4dbdda4a0f9fd09bf34282ac0e8a745ce8bee504176331846bac3a6bcfaa40be23842b7d98e2b5471f98aba5cb9db298d8f01b7306b8bc0f27fea4adb97bee0efad07729f00ac3d4836b788e10db787a06ba76ac1b1a7f9bfac290050d7b72bc75415aae162619a7a73164c558ad1f6390deb80eafc846edd1cca6e283e6f5750b755c2935af67339bf440372ed1a2dddd9f8c79b6c24537d01a2fb094bbb7ecc8562ddf9d07d4b91457e1a5ca122e0f868a85444511764c33d777fb42407e0590b2992b9f03a4df078c8d96c4e5c2409f7e94e97d82261716a5091cc6661c107d8700079638a916defd4d2eb65eb8b5d537630f68d543e3d3bff27aae16ebf2ade4aeb56008b6cc1d2ae3ac7bb332f33ada5a5784351a23c17f487b1e4e38cc1372ce62951333bb1d4502826e9c59bb4ee777927e54dc9583bd3b260d72c941fad093bb63a3042c13c2ab9131dc580d43da8dedba7ebe23577f566519bd511a108128650a4a8c2ecfeccebea65c0608069c019960708b17611f2a428cb798e250e973960055dd5bb82ae6e700ee6144617c3b4ef9d80b667ef679b525bd5ea6f1c764236eb9606d8657c09667576f08fb0d728cb40b8eef63475a2ec0630586897e5dba469e9f494daa16af98fa288f77460c262c5b4e2db27197261eafb370ea9f4b3fd9012599d65d52eb980bb7f2f5bd1b00dcfac4f96c73adc032275ec05b5e0680a0449730e03ddbf8ab5140f31e68b378c6251e82dfe27734d9527399cc7bbf3949356fd2cba9bd521c604787eb248de0aeb73e29d0aba2abc5b63efce6346efa155580960c1ee87992a5b220a71915498add5291189d4e699481d6e6d20aa624859108813069a15c6c195ab41868fdd80e7b7bc2b7c221bbdc1ef1a972e520d0a0e182797f963f13c01596d9cf93c008522f872c4ff7cbf3d8792485d4e4ca67095a83f838a7251dc2a8be6acfc29db4087cbc26398fb2df1258b16f3eadf2c632e47d5f21a32868e36fae3f2ad6232bf41076fc94d292df5dc9a4e9acd6f58a30369dbb86fde310b854e239668e3931723bfe7df08f48b513b089ef247d9126a29d6d939812093474753413ab4f91e741b4331b38126e88008b1a1342202d133cb7f6a23a672bb47c480c04e4d5c6c123c43c1d64a951d081955046efccf146049178636d5111d5cb1aea8aa9f39ebe1ed27b8679ac500be5b414d1cfa18c99c9650ccf47b89536beb39c9e4b3ec36a7d4f31fbf7841bf7b3aa52945b942fe484e80006360216c982c086bd3d5a3f0f2246103d7b05752e903f5cc1f96052e6cd7603dc59889803cc0b3b4687819652ae61df3353e7092ff74cf1ecd43e210026c2147554fb399b32f614d308aaaaf7928f647eac1602fa7955c1e3530c469fa4a13aa9f37e742aed38ce8fd952e0298021da8b8bfc60326b8e2363b99b9be3a6ae3d5d45ab7869e523bb0fd04a25dd482955d37072ef28e2a2111ef5da0b86f58f7a7c94a0728fb534a7eac4a0844886768482095c4d162e20e087fb7ee911a133d823dd6e50b68c71d40a5d6a72ac3d388efc6ad99101c24686191e0e31b841017080f843101c6ad8d6c08256809ef8afc0bf243a894df4dbd112f655670ca106c84f9f76a2b8b4d355ec3942708ee2cdb2693e746718541012dbca5fd61ca73a66fbe32c77a08d3f1d6a15efd7a700916f6dbd054c94923a13f19b0ed5b821673af308358f3de9b483e39d6da8aba0a545f1ab167c070310fdb1f368608fb5ddb16cdb2c207456b58a1b7f0bf303369332c19db45a0fa0c270c270ec6e32fa5350073accab917fe8077d411d4364a08018dec318633615bcf162789a5c6d72de600496c08b6f2db8ab5604606cb5a9ab44e575953a3515f28d30af1dfd8568b276b910a6a3b90642b6041d57193ae7ae07cb7d9493905b9392c2887d2cf4398704dd050ce49d634b106d5405d6a8e8b702e449cdcff8e00526690b20eb42acde861af9b86e6a9084c084b51670358f6e9384326cfec7eed732fd10695fd5e8bbd1228ee392843591e75f2aa4dfa0aca060223950fbf4cb60561ddb1e423e8644d2c5b2b84b49fe909e1d35b1d6ee2c46514708e8770c667b8903c36f05bfe041ce8eed6652c5823fb52166168bf20f6451c1d27d56fd2cb16d07132bacb11fc39e1339ce6953993e5f62a250a78b611fb3279d2aed41dfebd7e1894a42b4a09be5fe97119603c26c47ac53f605fe3285daa9a4df898def86a8401e9e40288a9b8cf3d208605d942d5d482e94d6aa890b4b7829b3f948b18ee3f9d4cddc6babd938d1a1ed46f2ad14c6252422447523fd6405b97f24c95d81321ea7a380783f2019cc9d7a095841db0d840be9535410136167ec0c0ef2685217a00378d3b6450067aad8ebd8ea058619a27cfcb2eb2d873b79c326a613527b78c38bd460ad652a016f97162fb632a6c3fcf52d1833aa0d6724fbcb60970c0f2c12fb332ab8cec4e211f8eea1be8e1a42d6b6569c58c7829fe89c9a1e6d84a1d53dae16d2a501005fe45efadcc28541c01cd9987a9ff325762016a184dec29d1a42b350a70a3d7fe0a62ee9763437993ac18285b8ae033177b151bab2db98c9a0ecfc904d41def587da1edd95a1b7b5e6ed27fa82c378cece9311a1e9abe1d30dd99e05f40695727c33f95a101a1b0e2746d2de5ef3d6ac3dece7fea69488a972b38dc603808685b48a1289b87f9eed0f678257d705cfa562bc2389e95b787a009ef312ee31d7d538244f69618d26081b7a1a0505cc49241a3418304935c6f8816c308ea64fc9ecdc873730462f5c0f9a823369fe22c6d0b6305bf5f417fd310f76c44d3b717ed45fd9101307026b1b8cada9da9524fc3a7bb08c53decd1907f8d0d6e390460a08653f9d88b7f2769a9ab4ff73f52918400e0d55437247f8ff94572a8ba486ba7da78505a2ae4aacf6434d9c23afcc80589c05e660647681c482c8d175d917db53c78fe3ccaa411e37e40f747ae084817d0a145995d067496444db2a7a58f697a8e4625319db772fb33fac543cb892682972355755e47d28bfd0d64c3d80d2ddd88431a257727678e9e5ce798199d683863fe65bbfbb481938161dc0b61299d30c20caa5289ad6f20b6711a355a45b81b81112861465299af1e9d4c8a9c3e7c1818a912d059f09ace03de2ca4d098618f2e337c17c8a44e5612271c2580d7209d6aa1f29fce3d4b84385c01ac11116a5825672ae2194087aae8fedaa08bb7de768ba42a921af452a6e7de668d32fd0a92dfc90ac249b8722b0973cb6f1f126ac314655d1ad0de1b5a75bc17501ab1bb2be7184e352c1492f3b56efb9e6db79639741ba5fc3a39d70f87c932c97eb5ba83946391940b9fcf89f03cd103afd19d8da48e8c60563d03bbce62f2593f06afbb0e9b254083c478b557c754eb5c383ea780b3e3ab86491744bfba190aef9961298678b9fdb4ac886946e20cd0c8a2d9edbbe0b41c7ea6141baedbd4a72d68cfaa6abae1fa21011b7e3f256023064fce14bf3b025ba38b273e45a6eb7ebf7bb4075755abce73795d2b508e1ee273478995e4c37c964eb16fd67c134d9e9976beca324139730a5b8204c6a5b0d95b0590a496460f7309791d81d3fa52835b70a2daebc080341959bf6679c1083d630521ef239088e411ae9a8119d3e68c34769d62d7d1723760d6a189b376ed56c49b762b46e4f57df0b0b12f6893bedbed38e77eebc594168d4a360cd2f8542f5aefc45b6e3f71ce537902f2e72449e2ec3dc6348cb11950356567b3a39d86a05b28170c933bdd44c0c5ebb8b485b611c9e462a42e2c11c64232f365480170c191b4771c370299145b118406bcd68414d22dd8c6b6e7906d2408a047e59644dc228ab601afef4c576385487c7c22f8d7691de4a83ce49d1c990baa0c19d2deb4138b0a9f01ee01166d692f5fa49fd66b87b40b15143c74e3ff1e5d7e06d372081edf90694efc6b599d0f523df66bb49b8fb08446d615ec741cd1a6df1f1252a197a84fe87cca891f0c680781be29dd792099fbf7468502d695f07692c8b0bd2e249ed4003afcd5270dcc6db129a982763009826748001b643037a550b0927733e9be269a7183b40a0e612ffc15414e2740d3c92bb1de09dd40ffc2ae6751f7be41e124989d541a58e4d5545e8673f756bcd7bd38df6255e60e61965115a93f6d721e17bd83ddccee933716f3e67a0b5972ec4e13aa2f584dae7d214efdb88c65cfd17d263344b35cbbd95c15943f11a5ce87cac10a1a49c6b1bceb26807df9480a9f0a9b837c6acf9bff707b81d91d18a9a9b00bb7ffcfa30d6d8675bd8007f74c13f92ee6262817e42f0fe49f78f1d0167a5237d11507fe988505b44324b278c4f4c2ea65ffa08a59149fe5d61eb6b710c871288436287c7f4a5f470a538d8a1c1b7b99d1cd629365b0b02cec7840f6dc3ffe850afaa8d7d38203f3318f82bcef3533aeaedace18171d84341ee799d39d753b6272b1d2e6023c54f76f8c323cb0015cfd82d21994ae3022a45ce7852d2fda4e38f25cf54c1e616e7eb4e75465216e6417518254ce9b1638f790817a68f08264da13bdac06e66e7f4b8921261bc8a814c10a52eefad5daff4fafd3a5219fee818f7faa600659d03302ccb0fb8806b660b2c724b5eaca2324f62696e3a86897f3ca0b9dcf56ebfe1e401102acd67020b32b921641ab3707497adaf960b5126b0be2e13c22662217316444d6751487ed8a7270f87e6ff7f1deed5d5503d3d65fd5341648a53d78c1704d42b9fdfe3c27c019e66ebefc6fbebb02b717369f78a7167cad8badcde54bc08f027e6cf090446b7bef799c5dfe88eb508009ce013b11c88fa11fb006595833eb8830ffe400773e00795d50f7c400739e8833bf8e00f28ab39f0831dfcc00774d04077c0ddd135d503c8e95e7705f143c7ac7d718135a62117339358c4fef798928d0d775f57010e456bc8c1d9ff1ed2603172f3795d5b0c605a6d1e9e4f0ae67736187ff8bceead04b8569b87ffa336e66a5b9eef757338e2994e5e30b315ffbb3e86f1b0d26cde9748628277fad40968d106e30f9fd7bd9100d66af3f07dd4176206efa75e4d92652cf6f4baab82a9a47928ab3f2c74bf117e747704ec613a58798fc8a3c4cc26fce68fe7524bfe6e3e3792d56b5e9da16acdc09e6ed31454d4ec988d20aa90a59e3bcb079779967c3c427e77a97fe3f9190e24391d37cd3f1dfe21ce8a3ecc54e88ff9d1369860281c7eb4288fd1c4fd0aae3697ee048ae92c6a57083acf342f9d2f824d305ef332ca04261b26599a62cad1a58c4bf827f362271f27a7fd9a7989744d9d0da373490177e4e83178f099725821f008896407d16694c79b01ea6993a92a1c95b0769222ad9d7feafb4f4c86fb04c61b13306a014d624a5fd9fd894405162466c4124b6f975d7a0b24cecd4f9ed7e38c47e341bc3d11bad68e9379e2c1b476a21dc0f97a7d03273772aac0d2b54f59dc37ebbf8d632f32064a7a42f99da1c5cbba6080c91142352caac6173ef0b3cd9102a812ecca114c33da237e589548643e4d09181714237489c3082b97b3ddb34ed522a36a3030f48bec9a13b142fa160577d7e408a01c8758394f78019c3b6a5f57e66726c0484b25f55d811154a7abe2c0be89070baceb7f9ac9151ee6a9acb06860757560eb9e49b575704f277ad31262be709164d2f6487b16dc23608d9b57e88c0f4ce53d9cf21df2ac5935a13a8127052659a5731c59dd3053ee6d90c9793b8978b8b8c2dc6a44bcae8ca570be9c8dcc1549289137ed0e2b7372370dc6e69c203d9acd60114a86838540f38e776f981b2105e8beca6188e0e0c1787db23371c6ece2f6c474d80f4071553d4ec7d7411616c64d454720094af6b93d113a329635972ecb3d6d5c40a5ee6c73e0eeaf32306396c9ec23e291b96fb18c9234719ffeaeddf42332403ecf3b4a744d01cc1f5a2cfc81434621f51d01f260410d230c6d7c9bfca7d4f1c812c97793fe468d47a57fbe3de5a13caf11e2019c7678f3ed928149d7de88d73d65972d5f72e4675d39c7e895f3bd82ceeae2613e4acbfca815ea9763acc7ddb99add6aa4610002360dedd2ad7adce5acc174ba1e55c19d147b6f3601e3d479eb963f9508981b8063f1fe41f8e5cf905df62101a1340e1a80784de301fb0393ab6bdb6aa403b29d4bdd7af8d79923bab1aa876bcb366bff33dd6bebc8bfddda38c6a5b465290e04d0faf54afe48bfd6b85cadb5621bedefd5d380a884cfb4e64e3e655dfcba43c21a24df1b1c8570935dba0c3e66c8d68e19c0c7765002e0cd5f1d5c5f55291d5a1bdbec32a97415b79ed7732bc6798b30bf773702ee2135b0334a0021d6fc4e82993fc8697d944ef8dfada1582e38ad57836d764199adc0e528a723aeb385061d2b1dec15788e277e7fba36deadad629b34e9325872b01623e0b776d1cdc00ffcbbd015c53f44fde1bc570edaeabe1abc5b006ce752f5a6edf2beb0cb723e93fa9febc1c19aabd8a8c95c9732a35a74a11648ff134ea8d1e9888f3ab20f7784ff97a81258ecd244148ca7ebf23797d404b57add763a5a3504c253e8bf6b4635b52b8542595b049bf869961ed7c13d7ced017e77a3c698ef62935d465a41972f9fa60ca450713bb02912657f7eff748d9ee91e10096b65a2a58a96c6bb01f8d2b9c1542a5fbc3a4e0512881817e14386771dd872df241d74b3434e622271ff0611a453f73b0c7d1a6e1f5c653750db6436ce80a2571aaf8379bd7e3f5725d98a66cff31b6123547a03bc87ae95ea21f1c33c421ddbc644c1f8b30ea79df4e8e66aa62ec47650e744ca62e68818214b8f41cc5a2e6fa2a86f6e8f131d25e341d00e7d451fa7c77fe1cd1caaa1dfa800270dd42f0de78a50b054d1f0592587235041bd73150d1b699c092206772cba7e260fee84609ccf8f2da60753edbb47b534e2c0b941ef2d0cffc84ec3ffd2d78981ddbca36ebf96f57d59603bab81ad1915ead491e0f89748a6b0e43fc4197b053fe8ed670b5ceaefd1ccf20b114cf77f7b5a3e44a0bf2bd9a38cabd70dabd0bca8e53cf7b626fc41ce6f4c3d1a9afa233014f77a1f5af4f67aa854113514292f1dfab59b5e28d491ef53b10591a992d7bc00e204331f4c93e31a7197d4541782f318c5b110fb809501bf1914e86548fc58ae3189c2fb50c35d41f46be17ff75df0540e92ae662cc88f3db3bfce6e614907b013758c3472c2910d00cc56052fe0ca4e9668984f0e266e81629cba282cd72574b489ae3b348a57211350b84afe1c780b9f0b87f3666abacd773a4b944724c346851b2b189ff9f850a02be439a625ebdd2c56c3f87e815770b0dfd46498737ebde2c74e396c4d3fa44894f5a8bb7448f80da9c50f579306a5dccefe94d53b073b60e027019efb3a877eefa7309bfe4ef952979476e5f83d607cc15b345bb55820632eb30e0fb51824372830fc9705123b2e81c4f4eefd9f1abca354017265ff1332e1c08856cd90056eabc03addc934cc7f0265121a3bd579131bfcad72ffbde3e34f34b1099a5c7461995d09dcc41af792ace202e29b0f4685b90a7ae51c25f94b8161e23d217654be66c12008f02ba62ef2225285301797d6738eb3562e76304c0616f962c6b9e91fad39b12affb9deda1573cb873fd35bbc5d1a041817adb7683e20e63a0882ab202f3f22cd649a598f14821a11b2a555aad4448d7c29a531b55203e5922f011decb66b825db6f3cda9e21ab0256d21b146e62755b9a6eeced7c65605f68e4bc749f193f4bc33544c7b36ef64d49b6a489a272a09379258b3be696fe2ed7b6be4af0d16bb3e7e1a7b16207a88e59db504cd3fc582f384f030f94711577292098f54d0e08a7678f612569c0e2f133d542b00177dc271554c1c5f309a9d61a86ef2ee0a52ffc68225406aec7f5325cfd36182de07d3ed13f031331a0ee19f63f9708f3f49e47e2c4989a93b2b73bd4c0e2d48ca9c68fcedc81b35de45af627f29a86014f629aa6b8ab4f9e1dedc1aa0c00e4fee397e21a613ef24729318a5df313f007f438d9459b751ca33a494940c889e09f7d58c68187c1106f0aa220e2e3675f063e808621cea39d1cacf6b955908d7c8b8376e242f361f9a0a6442690bdb4e79264d36e770377338debdb3f3aaccbed9f510b3cd692dbe9093e0809ab5a8c90b7730a137217cfd605cb9781e06178942ab355326edb8ca0c09f0f938598328a86a57101661283c33b1f8e0a1dac09f7c67c903c97e6c44062a025d6d0306d584206bf13d0a53ff82731f248f5815ff8e58ed1f8155d2037c79300ea242823e3875ef6f119ea8fab033e46aa2c2dedbf6f3d5c887bb5c09f129ec94cb48c6d4553f89450947abc6737fc4515a66756682514f5e95b16101e4b4a26a4551d42d6f0aea8f702b1410b4f1d8ddb603de692503d5ad19c78e448499ec3eb5ba8563bbf680b1e92125d96bf3331f2abed65d106ce6a2b543a21db4b5a083c0760f6a69011ec95c84e7dbe8cbe7c3b5f860e9c8953a70fae20aa41f8ab29abce6c242496390b9a013240085edb1fc4c24a647f05a23d8620a9a00f94703eccfee9e4fc6879501c7b7e088a54310bfab91cb08f183f024d4b0bb0bb802906ff9f974c5e346944f44352e9d88a7230247bc680aa814805fc0452ccf1270460823385dffa5138ba2715f2f9ac74b1d1cc88b42fd1b85f220491472933cbaa09fb2262fece672fce35baee2c7adfd9897bce86b811061908bd2b5a692fda1571f1c50b515943e1dcd2e638b79d7bb55a547f202327048f2c2aa50107dfb1397e5e04e0441d8811a6c3c70d48970eb404ff262ae4b38842e3022e65a86f1305584b57144790149034d1adae394a9de5b5f5e24e283ce44baed909831d5f622b13fa78292c3a6449010c4371c7a039767e7cca558d530a00caaea1d268ab2f785eb204d4ff2646037a9a68a31a68d0dc0936735aa4e6e8923a5be99157b2ecb5236f89d52ad3d4d84af3d0ed3f0c1f8fac8541481a77ec082a0004b440133c14b0d56c8896a018f4154eb5d983461379a58315265a35dc480a52ca1c8e5146ff6538a33522f89682244721dfd78275b34c11671ca2aeb882f6966e0a62402dc471c073626564288c36689a73c26aea6f336bed15e68923e6a4c027f1e8c89777fd1a3bc04f2c4ef4bee6373aec5fc3cafcfbf3118b0736521eac92c97e1d56ecc64f02cba19f002c24b4e271a3bb8d6051b51f3f60446037560406bac6e187ff69c3c26d220951e1b9f26a5be9254ccd0c73609cdccf74d72f3b9301f13398c05a286dd4bf4695dd98d43f5172ea5ed511c3e564fb02cca294f89bceb108ec447f3ada2932e361aafa2d8a451fc6c67a12babcf838408669b633d89fdd2a10b7f8168ee98f89815133859a7bb334c9f12163392a033267aa093bd76c77bce983016e2baf0204a987d661254485375893ec934eccf08c07c496c64f631d10f5a2f2a0c0d7fedd9f52e46c9354f3f26786366e7f0dc59f96eb873e3ffabdc74a7eb27d212288770e8d248a07e72c5f0c39b281e46ad6ad155ccf093f1914c24865a56423e23a5d947289380671c599d93355591a228b19b3da3e65770c1a48b4ec564f3483fd50ea9cbb98bb5065252f516883f11f1a334db66008bdc26dc022627109661931b70597e4a621473c0a53fe4e600ad4b2c2f136ea12887cc416c8c49032146cbd8630d5c06cc9bcb7d7ffa6cd1dc291c1b410bb405a5317d5a21bc7f969820413faa27f3417dca9b4896bfd175028615bbc258cca70881724d4593fdaf89036438c8d7521206d310cbff1803cbd548bf5a3e9c31a8fd540a0c4531a9fa5441019c5efc21d3ce8c3cc0c000111575d286147a5add4f2564001a95e0d46b48161f0146cf961816ac75320bd0cb8197e732495fcb629a4db7b52cc5ede1b0961dc268276b3aa9a3bab5c8a40834bd03f4f59deeb83f82846634e25b26fa8ca9027c41cc2b500149e09aad4a59009ea806c1c8063e50f157b58cf22b2df8a42b29544d0a88b2da1b695bc0dee142082a5697ed264ae94e308fc629b0215f1e8dc69798eca2338d6120e4fbe51f04e6e04a1f06469ad71b51f2bcf069011fae30a75974ffac0122abeca225339584baf86f665bb89c05fe7b305db4d9cf3a6e1438d2e176cb83beb64b6883255403303575531cce5de4e1af900ae3c0c17a74c879d26e5610b6185c922edc225bada0515b7493f8293e5308ca17e245c11fc8553d4fa8394f4817138926ae0ec260b45f395d53b156f028326ba11202d64f4db65747b7f20d610ff36e9fc553e08a31d14c5c3356f1a8281a803877b756773b750c616e717f1b23451f7629b737cf3483db86cb26c1902d0f66d5817a18a6d52d3deec63a746aa62e0f754057efe5b32bca4ea0d82351a9be8f167ce12f1ca748e65b66b0caf81378f4656cb53644c52cf583e8cec8a3e38be40ecbd802aab281884500ab753b97b9bc2e303f33c96589fc00184ac5ecdf6edee2d04e660a0be02aa49685a6edd1877b80045be188c8ac0a60b9724a9995eba0664ef948a88863935b5886fc97ae382c107ab627b407f4321f28e1b1831d829c5a453c16a307534ca8ee4182e608d41e38e44cee60e9997f0493b0106ed5b3e95868949a26c334353a1d6acca74afe21e643ccca924a43f3d5b00452f7eca04398e6c1b72b328228e170472d95945a89127fb985eee2964ac6fe7c59a2c9f2497071e2a42debd4b63381362f78464088b64e312dd2310439e2f01517a94868634fe4456ae8d0a421ae89ef876d465ce70fe18b027c66146ab87d04635938d5fd4c293598e904449d7160a0a588edf868aa6aa4d411c3c8aa555e0d46e015e6a8a68274cb62a4445c72e5314031743ecf21645cf205b0d9d9990f6e02c79396ade3cfd23819882fd81ed1e6c064107b0b9fe4a202402d84f66c93d640f8ce04aa4e8f3163fceb096b33fe62edb450eaa63b8e3aea3c0a4931854502f13e9915e50ee42421fc5de17fba64c4d527afb5e51b004cbf994c0f1a15db3d45b9744cab214a14cea646f9e42807e13275df05be1843df9820e1503ba6089c02a4399c18f1c66b700abe537fc0ba98b9f847024c47aaef00b51822194bd36c0cf46158c8a2f9dec88710b9a13e4260284f76d6da61d82c42e68254013e41a342370904a78226c2518ba969611da1fa0d735e6115b47a6931817161585c4a759c32218153617dbe7862eb032879fb5c8372dd56f004ee4fb5d1620e63799d4144b90bb1a64dab1b65642f8e404157a1bc21f20c6a3ba506bfe91fc8d58cb5f8b464dc2657ec5e4fbe8debe03d89f6e49f3e9e8cc8294a42f8e977adc3e1e5cfee07a5a709755bb782a5e21c44392e61ea32d46faa37b26a323886eb8cfdaba79eab09b2204151359145e1f51f167ca5a09b847796d2d74a28a7dbb1f943851ae106c4dc621d28f027dc8381461905a0a2bbe741cb180f2c3056572a06bd1beb6a81b42eb2e51a61b9982df5352dbc57fad7fe5ca4a008e9e931af66ffcf6b0ed02dd3b1892fa6ffc9653007bfe06a1ae355ad8098fe0c68201cb1688ee385afeb8bf05062454984cc97564be04e23f43b63ad99dc4b08e6b105d6d737de9b9981e6d2fc974016be2b028d9ade7339931650b5379d530270b125952c38b9640711d09dda8397216aaaad34e2fd08902b61d5e6750be55da840265de5455d8a4b6f3fc50bd01b76f7c67b9f97485863d84de0c3a112531740e3e29fedfdde01c3017903e26a7dec5e9b9778d233f2908e11d6fec6e3c821900fbb59ed5ae54a55ca5e06ddad94340036000ff8e097608959c7899bf41de9ed3ae25bc5b9e82a537045c526076c2547bf1c5cd8a961b5f82ba0718f4a5d4b16f693937d2d9a122debc67a51bc17d01eb1e46329950936b33e4f12fdb3f151459a583bddd00eddb409e89c8d564b0d4d2a56fb01045b8f8a5185869e5eb0dab659c9a8396fa3bea067430540d03e949741c0301c6e556aa70fe941bffe3da06abdd7e260fcdd4e50026a6ab72ceab2d9baeaae0aa88c8033bf3b1cb7a8e64ae19f9a14b667cf2b3c8b0a23e907a1c821a4acdac450386e63af460f1438c443f21bb9651305c8663fe2f7506fe0dfb00f53674f7e0f8041f93761e6a71a545a125f10f0afb35f298d7fd508085857f23883bdc100bd9c32abc4c5589116869ecd24825b296d9b5373bb5efc2bd0e889a4a065820156ebc217edb501e8790dad8547edc55398eb04aa4c78ed070a92e285fb23d98a62b84c046ed79d39f71bd5ef9b2d486d9f759bcb5b01a98a4e8d15096b566aa4fa23759dfc8ec27944b4c3831bc5bbce7f18d8131f5d57dbc3f29f38be2fe9c8b4c664a25d2975d0337daa1efd532d92398b97ee854019502161d0baa549ee83a5ea074c0c9c2feb186ca0b2f6d2b230a81e0fb7d0c749ce79b4b24e4a0e5044254d81eea3b2e3a2f97bd77007c6c701604b27dee6fa40d2d1bd0bc0f3d8c09a441e0dc4e16b21770a500b563483a97719ca2c6648d9b1f990854dbf64d6a4cdceb92cfeebca6317dc93a249751251a87fd4fa94b9f8ffe4918ca71d7108b0aabe2c00076bc93061ef4303c118b294bc0971d61defea036b9a30a2691df7da03e9a9e7033e2f02ea000aa9e03f547813437fe1af7426f1bac05cceca5e580133b97987a89de2090f67479affd812baad05e83264f981fdeec4e00b2ceeb485a4908a0247dada8bdbd27d035bbec9c870b561963a3f6695ec9a85ab62fab31850a7562fe986e13be88012380e83548f14eb6ead6cdcca0b38f931e61d9cdd71246031b197e272460ae6a9ba1125b44f1b1a6b5aacbf06551abd9a08501b552e5f8a84e567e468a71e325d9c28e69c99442d65951dfa0a9855e395641225b56827aceab53f098b3c204087384b20708520605a6c6480046cfb025157e335e8710da0e8321f2b6d944b086c4af7efa041794f8755c234f156c7f5c36d560e23cb66f6019ce80d392d3fe93da8f40d08b2633da8dac91e14883ce8cdaa240863b38998d88a9b29f30341a1485e4c743334f0425008f03c398098c1cdab3bc076355f7904114551937540ca3fcd4e04536a9d8628a6f93c2303cad3540df4f3f4dadece3aa0b0faaf3a4407b17f16282fe6b6baa2dc2a5e984a18025c19301722b53e2c14b1b05986b39226c14ac19caf75165d62a4a62c6d26da04b3fc54873445dc1db0e32b85843b973d8c949d51118f84aa1ab06a76be6ca40f965b0b293a40baa52396ba54d2566e0b56464d26a0577c114f844d9abcfd09b02ee147b2d00bb8fe394bf43864fd5115c8e26ae92fa268afa3f7c3c0da158c2872ef1a5080cd0947e05524095b9b0288838c2b5329187e281cd5c45e489d67c73a1e2e0adc0d1207cb26bf64716bd3ab3648da450b70a79a9200a96415d244be08547035106a9198fc6066be470d0324e45a0409b9e4ceb9ab1d8fb71ec6dabdbba251718a68464dd1ec37507cd736f9b774fc5daaaa289f629fa1393856b53204e11ac6907deec698fa82e97e407d0ee2087efba3ccdeaec550984076c13147f5db43b61281c0d4785d8023aac30904d65f2288bfbe7d76f303e6388dfc8b29ef82ce738d81a4c6749e4277a7a77388e8b38daa938174410461a62179cc53d825439e0d71f997d55b26a58573be88b12146fa1cc3547114baa349d0cc4242a226d97adfb6e6aa108e0e45ee93ea4f7f5a917d5d2409ed911de619a51ca894b20e56ebe6c2d6e8361f50abdf89013c3ffc8a86da268c8cc5aac14ae1d935b789e45ed4354b609e11221a1c8d148e4569dc12193f0e1e180a161d18b08312766c94e19bdbaa8ea68eeb97cec83176c67f6cf56d5851e3de60b5fc897162abe6df57609ded5497e684f566f16f5a3bc5b2ce7288c7e9cf7a16570f39d72c9201429daf7479ea9857227d919a2791faf20c25c148fa896d083f347686f6f18555b0254f22ac0f32d2da4f3c940e3317faeffef34b54d4417495b22bffbaa6004103f2e72e2527ae23acb7a496faf574e132192db06230a3695c74a6fe5e224d0f507db477b08eb4ebd179ef6724f0310186b01d1259d4d947153bc6550fec1eb6baac6360df9f27fc0647721242be7bd38a47cad1b2cfe6a11724035f28bdb3bb2ba9b30daf963a42f16de04f4bff047733ebae9971bdef02341b6feeb3c58f7b7134d8997e4be1761b8b771861bf496fd79987e4f29f4273a9ba06fcaf5bcb199ecc614fc746819b0a0d05b61340edcd7d4a32c0ecfd1662b97e1f6990be74f925cdfbcb885d038e4ad03b97cc95c4aecd662bb692920410326c4af7c22f04acc8a953ec2c104d98a1e92b0e8a188792fbea95012f6dba8c2cbf97f720378f108e72c1fe4ea55ab3f3e60fae650e05d7ed3504a171b17759a0d7a1d87f7c0b4ef00f8745a6a4ce681cf8c82178133e18f7d9fb0d65300318dc70c370d21ee1a4dee12d7888db2c2ce2de37999c20ec33d02c1ee63ef4c3b67c794eb98a8c23822dc0c1beb6898a4f06019439a64642143ff76320304ca096b484283a27017cc4b2d2295a50dc2980c67d411ff30f229f41d5c6e784b50120339e296a620399460c547a8a3104604d9b894dfda7dc91053347a0ce4f63d9d8b12f9b2b044e538c633f1f0c5871a9bd1a27eb6897f5b18b4b237058010d338058fb27ff222dda7211e20b6858e6cc0013a38e0b2daf2f84979f943465a19902918b1ca0b673f449603a3b49f1ab15bc7294140ffc8cd0e50165e9aa35dc2149478881febd499482feb08817208b4eeefc1c7de1254ff7333d962f6d9f218a3bdbdf44de3666d69a0abfb7fe0261007cc4275570db867385a721e007e85f55824367808cc0214dd24b797dde979802ad6cad52bec1265ab05846bcdcebbd033e9a7c68b163d8e521a53b18f1eec81efc393e936d0c2dd4f976309c6428911319289509465cea1f2c38f4740f5d2592476152efb3311393e71d91a38be3a0de5c65593c0c7c49adb8b9b21ff8f80fd55313338369b8cccb2c9f3d275bb98d3e61b6846ada3b3e61db22729401280dbafd0ff65e49667ba7d36ffc93ec458850a8f488f4b8272d5bf0ef321d72a721af5687727627d72b9fbf80d5c582e2f24e7ed25cc5eaa98f70a9255c4a1d82c095571ff320ac9657f2a4d1e3838468c1ed22e2c1a476fc6435a43ceb96639dd98d52ad953ab23c859bf6b8e97f6abd1f9f1e976e9a699d5e9569551ceb1fc2516c2f79229fcd6ddf596d7b51fa6c4708cae0c29b811a4a371c57e8bb666e34772263b45450001a88372cbdc6a4cac90b994401d26003597719d229ddb63c9d478d932f74c9fbefceb67eeb312185ed90427944f0891b4a9660cd446165cb92e9c86ed59170edadec5a6b193cabef1d66cc4387fdec6abc9fbec6f47abf370aa3b9da2c13dc6045ed54dc64448cd62f13f86a4920add1601359bfcf8ddcdb41c789113ee3348a244bcd4488e3d5ac9646b1e9a3fc2c36cd40f3d08e0b661a0495e312d9ef367afeee72c0b7b55409fc418a67a25dc6050c2b10f15d2feabf4adf17d9ea2640f62405879b9e4212ef7080c57d53fe7186834a06e29fa482446104ce54942e2527351bc8aa0e44ce4d26b97f3995e80fb1d92f1e92afe329dd2ed55fdd1516d443074ec6ff73ba7853191ee5f8379b03b94e4b1bd27f6d767faed7384950ce2a5a8a92b6b925f9463992bf1fc782795c8248aee00f0b59c3bf712480ebfa0fd94441f859efcb2743dff1c50499c46b56de2e4331dcbc27b8c06920f3c824d513ae48ac35deab57405d1ef36d43976165a6fbc47683f352b3def5a5da50f1f89d89ead153c82ed6745db3e0c2ad25bd7f5c7657387d2ba2194051bcd5b5b5efc11a04f648bf2d7496231cd28f327f18ec7521062d92a4e2827562f2740e52777526db93ff9564e927bfcda7d0d37f81bc7322cd9e476893421f17fe1808c611d1eabc4385a11a6488239ff292819afdb860b954f262243f01dd8b83f9f7f22d994689adc0a1e93e243156f61caf89718ca7ae5aafb2a12e43c267214ca98023fe68ba463d3ff69a8856e41c4be08cf8393e2046b38fb230a23e4fb3a831f073a8a2dd19c51499eff42946e1685e74298c354a5f79c1df6d66ef2c110ed9b243e25e20f1222fc458bbace694278cdf108d188e2f25d408c4e4759296a209b5fcc2c2b4804057de045153dfb2a252707dc0091cc30f8de509ddaa006b8321c40c5b195fa30d09a13040c1a70e68eafe9c0b74dd80142f2c13e2873f50ea1f6fe1185b418d5f9c3808260a82f24a4bdb32cec749b5e3670208a5f79b840a5db2ea4b16e338bc2a08fb65683240ef3a47b940ede261488376a32d7547708f2d668b56653b05a41a19bb883045540500194bc130c5245f33e614c9e5fbf44e9d7d3af20a539f07403fc5c5e35c0d365b7a05659dd300ea434de5cfb2ac45c2a8bc30113f1712d29ecf2cebc614396f0c3c241301c814f295ca5221047fd1be9a3bc98356af03408784ffa4ff7d1725d0745db23a426562c4e9d919c4441f87eee223689e8fd03fd5fe72856e48f2744c54f1ce8c437311fedc072114a521347ed68ea672e45d3607a6b18109dd911b6e4816d70b33ec7dd122e76187f5fdf66234a2adc2e1dfb7a1e5657f33ad9de08782c71e06c462ef6b49fa1cd6e6b7240f77f03b4914ea20bb6d6022f0df69371d8209e1a60d61d09cedd50a39b216a63c3a224803548c43ff5d74a30cd64694020ac0553017f854fd99b94badd541b56163e93e9b0ea7e4f67dd0f125b346c171cf0e9069df1e63106b8c07d425bf4161a07295d83e5d3dd14ba2638459a7ecb776169b0a917d500e9118afe073f922396760fcae1f8eaaf3fbac937bf149322a9c88a38d3efd8bd222337dba06bf4855c09beca5eb6a2472d8c2fdb0b882e9c823daa571d8d78395859bb88251c834f941258f45b2668b3014088a230cfd0b6ddf48e682ea2608ea89ba43bd67fcec3a8812b9bec17fff81661fbfd856a748001eefb94d7740dcbb609fefdd23ef01cf96e7314c9c547cb53953a37f2aff3f87394e312b919f1dd215271e41571c326c20f43068255d4170c9c921c47afbb3a76d782f80e03d21764110c7298a25744cfa8e14d95122ea06d8328f2f005a692ed63b58cf2b9ed2d11b9e29e5a8436482faa0d14b05ec71b1b47ed06934dd21e6f531e1fafd26dfb94e6e2a610b8dd7d67ac322ef679baca5e2dce93dd40362b90aa0dbe38876ab0c01340d0116a037eebecc9e309ded13b7c9567587438b5ef97e5ef34fad3c756cd99463af2e084839fbfec6ce32b79a432e7b50b217030cd6dd6e2af70205e67fa7875e6d35a5f0ee6a2a81c39514159294896fa516cbd2084f33d508ff390921ceee04a592a50e3e03a4ee217a3070d6f48bfc55c8facdf48ddeaca1ac994fa938b5f5b86bcf4762c3b3dd4fb1e0903896df616d13ef0f5988a615c6ef85dd1320904dfd4bacc42fbadd0b23e6e589b54ebe778790171b953d5330b038bc231b80489ea3c05680d8c90ad7d12d4edd6fb8058048dfa52393ac8c1448930f0ac3beaabe092ebd4c64f1abf4e3df9c43cebdbe513242e29019af14e1f93fc84ee616fc9b677987c2a0367da5ddfda75d806497a49e4b79a864b2e06334ba99bf5da61d6dbbcd36af9e7cee04a2708721eeeb765e5762441236510286c8958df5c6a16029d89913efa12b33f9791ac5b28e468ce47e8fef3d550225816185c74414fc9a95115a8f6228ca411ef95ed1f5840652ce383e681ef5520cd336735ab811090330d1fee50d37dafad7699e769971de07a1a6e33e2f2ddc7e02abc4419cd82a0074c1b0660131002d1c902db9a1f0f6571d9912be8ecbaba9b356b37acbca9eb7d0129a9fc35f519cc27344eae902a534daeba453230d19d5b2f392f673a408894f3184f44ad919ee533a6e1304d5638149cee96a5c05d666efbafa792e4f747751f518da6d2c8ed006581433ef50ed8c26e3cf35ff975a969425156fe6619b161e8150898c6e749d25d0bb0001276ad5c44779a53bd6121dd5dcb70e7827af320a0348f4ee66fe47c06806f63ecfed8d5f89e4fc195ba4b4855f05b77ff8e445b8966166e1b007ef0d6689f47d21b03f142041902a78ae15dc6d0979f8dad524dc9119b51385988ea0c36879014016d5f172e880879af363759ce9285cf84431d4c2120d5c7a050bc64f71e301420b20f2613acbf05294af4712452cea3fcdc1afb0946d1f9f90d15a69a16d71299bc9127f2eb2f48a64299437a4f6b0143263f610e55931742a3f11a5f0e3f1a6f87b8609b33780ef547fcde86a9cfc176dfe987d96c33210e4802d1b4e4af3b1811b04a324e75171be028d929d3aa62f3c737856fe5e16f554258c5e6f229e84f7272ee2994604bc6d50c415d0b094e1efa983c5d902683da5dfe8f18a997a09e114f66710958f1b613be595a8a0c0adf2a6b52d5a181dfd2ada8bf41032f13e059d039d856fa68a5ef0945ca2c9c8575b0a143a0bd30604173dd7660726275b62628415e6280c3f5193332e357dc20c575c3659ac53541acc575a3d6b52a1ab0fe789a56811271571f0b1acbf20ae810f1c2415610a3fafbb73f15603aab6d1c45bd7f9aaeae73cf3e34567fadc24ee9555274e8b424f2b387c8594957387c1c4feb1eff92054eb627a84643faf82003bfab833358aac46e6b79fa73e88fc9ca48758a857561cabb14fa89460b2d9f44a25f30ae64bc3ed548f41ab6eee690d5b427d4328fdf9aa158645865f184cfefd5d270556bfba8efa30d96d4ef5185b0cf1be1d759b08b098084ee36b51bc4e6dc29e9fe8e926db9a144e8ceaaffff4d443704af7f4a9aff8eded0896b6ec570d93b62f184b0c1d979aa41f8dede000b52f5c626fe78c87455e43d308c6bac3c8ebd24db012fd94fe485b594c9073e7e9a5a5d5f9177adc59d71f08553494bec3647d284c7b19ba0f2825bc1e59f4c5fa065489588b602c687acb5e2a2c6880ed883f16c69c9bbe52306750ca2da25f9ecd49dcb5b0d245ba5f0f9746850e81b1a0536a405056cc8a0482bda51219068ed8459ef3bf94b18beb39e87265faedae03ce9291e8c25c6ed225c63d4aa6bdd180b033a7546d2d30a08f643d4484cf26f6c03f248750d2800ea53366ce47becb89b2b5fadc8ac1aff74d3f85a01756a6ee1de15fb700d0181ba5a8f2803cb3bb05cd19a9426c14f37d9592844b5c8596477161e13b3194c787a310342c328d2c5ba2006baea785d7fde25ffa5240bf821a65db32b1ddfeaf473286dd22852464f620b7efd0551b900b3bf74f9162add4cd1f13d40a05c3422bae63606b11dc7d9e7fbf6097ee55e3580a052556ea39879fc3523614c653fe2beb2c24c8c173fdb4b3ddfb4b6c03bb961e4cb7f06c41992f814b510dec72ad8689e901f9e1cea523d75149244c190284a9e365bd8331f9dcecaba3afa32101f40d650e40c1319c3edcd34ab44f7b6a0907bf80421f4a6b4162439e9259a5d3749fddb73468b455e09f1f008a33ab3923b93c2b855da89b4362ebd4f3da00216baf3b0ae43232470d685f463095be5c31945351af1b6590e59ee0ad9f94b35aa2c9a21d7578890fef9061ba969cd77d2ea77e088e762c0975e601c8e674d2a532d2892571d6b5681c96abc0136eb9192e4eab1f8d2dd5ac31b9e9ee49bfe8877e5fc6db72a1146c0aad987f18f98837bf53a9854883663d2cd542d06b43774e8971210d62ed77eb96a52694c5b08798790da5769ca5523eb8ee9f80894fc7e2e559e585dbffcf29eb90ed0689ba32bacb9fc3f5d22743231713d81fb277f456accf4272a309cec1c553c12030e458968590605d5d1c1b363fd1253c67472d45c205b951c09c454ee5596f07e15394f1e9341d089cb9bc35139729994124920fe03b748c092370ca071320427189b3e11ff277cb5121c9fdad08f87e771d79d469d3d7a862bf41fda10eed6eff9252016baa66fa35d37ed7ab332c91fee8af1d76dfddff0610baef4ee84ff9e4459ab50d9dbebe088fe8fcb9ecfb862b3487db61ab56399146bef7a493408d4f35312b5998972417760be644c317e495ef1caed001ef759a1b41396bfcf872859cb686a0dea5ac6113183349e48ee1ffc67d75ed64cc3a6bac290abc56ecd109b1cb858770ce6a08b81fb90789d8634f27933b1745222d8f0a1d09e149ee84e11ff0443a6a9973dc0bdf78ed5978380282daf7066b0cee606b3fdc58103a142edd7769d0aaeb875efb9437d1112a1335c13473abe17e8a0621863fcedd49c8e5638198088eef5ffbab30549de45a3339bd9bb2b4614338432f16a0354ef92b4f50380dcb5076842511983257c74222b17c1e673077c7ce05f2d3b3ae4573a249f7dcb9cc81757a5dac88e97b3d5453b6c5e2e088f25c94d803a97000e90d150820c4fae1b0e3ed23315a475b44c84016f4e53ba434a9c55361934ed83221fc6e934b9a1bedfe4cb3c4cad8731b434e2de259d00a1442c0018334a1babcfa852e709e276ba230550078e8ef0ef00b4375c0ef09c2fd0cd4e75af81b144c2ee1d350f187e95b00699677bcde0e70ef3cf4af42026d33d6b9b58ab3ffdc21d958bce85004feb339a4bd7fea2f180273990b643cec187908abe4388ee9711e941c88509f123a5d8895784c8d829ee1014896d7fec294cd1c590fbf811f373e6488c2f90394d70eea1e657bb93f5b9c71ff453618fc3e4d73f21271a5fefe35d466564cb40a82037ca442c92f480389f18468eba0f5ec7fcfa77aab90300e134287c5afccf3006cf1441bb9e0f8efc9e4b9907ffd4eccb17cb1558292a8eaff2eb8dac0902b4ce5ffd34fb1fcfda654a3ab255692f7c5cf3d3c77ad80c584370b0da9bea3c08fefaeb22e8811bcab2771fcaeb72e35496fe0f8c96b490b6975133a0f62f7f867bc2a9104014d8fad285a1d400caa1e749a46ac27ad0d4e6e502922260cb17d0b0d90d9b1d6c43c4d8f0ebbad6b73059cba7e835965bfa2239911e595733d8d27d967b1983a8b870f2423d3f5cd33d6b8f4edf770bd1045961a97d49f383b387a9b099b72a75aa2512f42ee3c389e9d203457e4d6cf48f58ec29c7bdd9775ecc8792e7d201b330a1553515cb678c6aa78b10c5554c8e09f50fbb57cc312efa56682948212ca60e0100dbd71ab5c4b0049a9a048fa615ae9529df5f83180c76b4caf403b5eb38d9ad1ef31340f7f413aa56219757b2913ba48768f55a1b40a836de7d577ddb95966e16ea59db2ed3a3a84475340450b180272cefc5951dfbf6a3af87f48ee2215ed22edbc2ec2e1e8314c2af63b7ee66a200f4555a35f73810a8149ed6a66fb0d2ffaadae32d5f013c74b0dcf09e0d054dbb982d9e6d8ce55ce9bea70aea4b3fac4230ae74ef7090b0b1e713ffdab6b16152217a8b0cd7c46013f6d9e753b7d64976960fcf756548308d5264a1653ccc2686b0b8e305341492de8524786c7d5bc20dcd43877b86df116ce6c86a131b6260f77a22c6c89225df46b88705a116922eb1ea3342b610a3a972dd77aacac3df86791815c0abb2c460017d44a431e3c01eb32b24df5b5589132841e67fba6a682220424d887429efd526bb0470bbfce43003a098cc600f1364f08bb9986135059f4430beeb673848691e66527f8e90ae97462449cd5056535d3eca8b56ab1e1536d85aca3217bfa93cd4a5ccf4bdab44a46c1c0c07add208b8dcce7b774b58e60b5534c94b64605a6dc4a704478e4ab8035d9d87d2dbc8b24bef6aa426f6522a01648630314345903fd0b282a453e3506caa5bdb7a92cd29b46e55fb0668891b84eae356194af624fa17ef5aca97c7a05cce3e2c5a376d564325f01d5c542c68a2f123ff302cf0cdcd962d2841c83d16714d02061e814a39fc02f3efbe98a723f22434eeb8d64cf2b35be10e6068b99dfaf18f6b23ae346a10a717693e0499e8958959188c3993960843a8a935c2052f3e70af722300fbe094f2526f044de6959e8cf34057b3ba62ba2710e30734ab0fe15b107ac34335174969db4a15d3003d20726d001d7563fd03aa92c5d36b674f8ac38e9e3888b26bcfc135fc14fca1cf87e85d83578ee075b3f74400cba76300240dcd064c45c034329257a5c8b3d6942428cc40babcd40d7e19e2e1defeac3f44ee08d4f014bcbea2189a9c5d988f1ffc84c15a6367d520e7717d3652c104add8394cf40983c50346f49324955ae6103a06ae06e7a9a230544186d01bc9fa46c288960d0093d5f0a4c1e572bc702511a4b258baf41abb6316a07af894b3a7fc21be450d0bbcbf82348d88f9edfa7c4f61cb28c3fb1b1145da2aad0fd6501bb1ff3bf1cb6a212a2b7c93422101a1161d11f58377a98df95c663296033dceef1981261c2db22cb5d8ba0a8d8ea689ce47a54ae017715a2ef14fa04ee7e9763d264c07c6a5bca45cb1ab09a03982001c8820c3698a9dd2ea758c6ed640e52cdd3fad583548b06701cc2c27c27ba70041a72b9e1417fa6718d2ee28639769918fc3702a91ba9594063434e3543ea7662aee4da74e2d74707ff82fdb80530638b5907939583e61be25df1a643b96046c67d3c31f120c22c2dbb110765b8c9c0e73d4edc5f8478d4f261ab9a6f876c7f82990af5383d8d2cdf8658ee547299bc3a159e20dd9d5a98b52fa66ed10a4678b78c35527e788f1ee9b4514cb97d8be3d47111f0035e399d2c79f28382b63906c9dc3ce70289977beb6ae7ddeb6cfe41c2e7fbb74b9040be26aed3e63c4f5b2b690af02f07324b0ed141b55a48999ecfac154833b5be0f42c66c3d198fc9c2030065134620294f6302d988c2a3a71feeb425d118461cdda331df5161fda6686877531e8b379bdd387739cebf49f318b6176be894f9a1d81d071b3603d6519e00843803d5e4c87d3018b899a9d643d4a907aff996d378bbc6c15c2302397e71a39a9158adb08fc21af4f46526574e1301d4e9c8302a40e3a8e5f51d16dd3cdea72db4ad8304b341a69349bbebe874f5286364674ca733945067e3a0f915ae2be71e8fa9ba9465620a8d732ccafdcdc3109b01c5ce331a0da6a0619c826109e2931e8e149c912c157b14c48c89777bde4705c8bfde3903ea09719a1e7c1ac9a9188a898fea0ec67bc33aa8ea4350a2f37294bbeefd726e28098219c316a4f8c100b4d1e38aaec22aa88e7be72ee5d4d42ba49cb516aa15cc6737143883a9855e81c0f273ef7b615a6e585669a1782f696481e1553f0c62a456bd1df6e1a47c1f18a4a05300ac4c4c50784ad50dbc865502626844416e0ae78351ba8c963b6a85fe017947814035d0c339021b25c0d4dcac8321e0dc26608c62b210f6a11a6c568cbb22545623cc5c47258d320a51eaae2fadb402b3b5f4f4f382c1c83750a37ff377c696039266cb20151fd514643b6792cc2ae5085fe459f623a92a2d3b4d5ce79a39e1b8a56cb8f21d4addd4bfc3b745a9a82c9fd16ca90c8d670afae453a26f1fa73f9026913128d9afbe511fe794e03a99ac2bc15eea954204e6a7f1105316e1be0afa38d80cad3f8e4cc349017489085878056ba1afce6a1e85d4b41d9c2aa16030b4e08388d0ba460f5f203914fa0dcc7c70d7a49532f6c9148dc173b273b60c517c083bfa89020a0a11bec186d187c6260d67e2b9815c5fbd14a190ac4647b528d8521a9251f571dc2ba5c236e96b67768ce198bad64c296864814d1817d600a081e015326706dd80cf2541ffc163e6c62672be343a49a901637cdc35d886a9fe212800a3d00315bb1cffcda306581d8b961a286ca69bfa46ef1c08981b419a81c1208ce286a8c595d083ac055a4dec3cdf10339fbc1822616d5485d50a9df3cc11e8efb55e1b6eadac6635f52f02021a87a0a2c6164b10ff8414454eacdaf6b2d12d0466104252687b8e4e56a07ab6b5c65a56b05b2c9696b93b98f1e5b8ef191c00e13499eacb706aeec8f3596e28994368c247240883149ca288dedc3957510e0944261736290e8df659cc9d86f98ff601d6c2cc6389b876c12275b9e0e578dbd847a956e9449b953fa9e80b2eba9fc11bca0ab1bb6c816a851e856b29ffca5945c472bf13d2c27d405da7fbd875ed327c6402da75b2276962ff686d511a98a833972b80cc1e37c257b6f158c592b5412000332995490cd97de1ff6ac90ef3c4d08eb3fb9e8a5901f0d03806d74ea8bfe0b4e67f72c18e54fae44ff1aed41583ca116c4c241953a44f7ea8b516eacae4c3f1b0e526f088713b9cea6611e3c9a066136fa32b42aeb1bae6e1f4e12b8b261d913c3fb23c2f1aa4ce8bc849e1ed82ad618e75e43e95efff0c27addf9198541d1e82a3189a14ff3914a814798e747e23682797604727a95574415702b57153c32351a9c0a7e909b60558e81a44527f9271252a0d6908bb97c7e3548f9c8a16fdd1f80efac5c258099a28bc2fff28706bc7adfd69b360e59bb13004098042041c0814c664e38f506870ca9fe379149f37e186947938df492dc453e03296cc527f3ae5d2bf25ffe6321af98bc3d40090ec2e656032523d3ea87bc17a6ce3a196ad0afa2d46a9ae47e34fe134516ed8e80fe7fa32fdeb0d827ea1918b0679bc690ff0167f590a6cba4e9b50e22a37a32ceec7bcb2011b86a368903a0cebb0d50cfcb929f301f1107abb2e0e26cc334d0b8a1c487f18c8acf0186aba1c07aae1f35f724f9d78da4471ba968b3a999da47923f56405087cb3e7f7c45aae154b8f5138cf9d8d16f93dc7970cb020f88d8233e47e42a8653cd87c8f56b1f6f8c87908851c2382fce229fb3be3d02f826581ae5ccf9178b6c0d64505b2988aaf7c8106b138138dfb3459f6042e731f751a7f1048e42421d22e1c14b5373ff71b126e6766ee7795a04adefee96604f11ba69d030417999e530c58c275fc2f40d60f2eaca21cae748022d1772c84784f1f66612571c5ec07588c62e58f892144ce83ef9e3671ee1888c23e71cb2fc63d2622e2ebb71ca6d86ecc5fc32f2ced0116851eb310c1675da99526268690d746118502e0f5aa70ac923384da3bf06d6387c78149dba7567749e94126db0a1963c1b5d17b6071551e39845a8a9bdc5d6904d05842bb0cf8758d93c48df983b1c44d5a253a15182e00e26e44ee8551167acc42440e51512bc448c0673310dcf865ef8c123d853c270009772c0478dffc4e612571c1fc45fcf0a53044f7bfec9141a44b717c53ba45c8ff1805ba17385e00f92604e69d51a25bc8f30214ee23e07e46327d450c3f60e9772c04395fe34172710731fbc020d355ccb901497710f23f8692fe02c70740be0d817f334af429f09c0024dcb110daf937b2560f2974b00a76381276bd881b16029ecfa1e9c8b8e62ccaac7a28fe8259ee01042f1e06ed96224c3f7ffa44f161f59fa15d63cf48612424c7f236d4dc55196a2626d0f72bc549659de3eee95b006068abe2fabf7a22126f5f4994888509f5ae20f85b72a97da33662feb06f54db4d88873cd94d219627654d0fa97d5798c33648bdd3cba6862655a5699dfe7a78757f9b47993bc689e0ef2eba49793707533c7d7075cb42c4155033dc331c2251e2a754dbdd893ad77a6aad70a8047d2dd1e21e18ba8a81c92189d0b791adb27ddd3598d274205dfd51312b381d6e64c6e98650db5a6592ed012493cc053fb68d83d2082f71aab8ed0a7694dde5ec47d61814d6763929d72e4768f025efc2aa9a71dfd2014e765f8abddcec7cb2f3d22d0fc50df19b305d4c1aaa4197bcabed1ad4fe09e8838c1d0a8722aee06f8683a0f60fea22c06445938c625b754c0a8a837a213f79f22bdc257870f0c45d14516ae09e9a3238fe6aff4ccbf07e532f6df9dde72e903675ab14de4625201b9a597e3d6068de27685a316d029c2dcc2352f4fac03a241ceb6435f6d33243c958d587fd5d12fb439688e1e17d0a5ba830e1b061e79bebd4c6c53b70151bb7e20136436214fcf455b3f97899bb8d3355cb65e7ca651154ffe617229757acb8967e8b964896cea0faced33895f2d610105e365979fc9ee7a93ca77e67310bea21d4e7e6644ea7d536eb0e63496076984daebf1063723a6f022961711727e81c4e87613dd597728ce27c16f6c298c908fa4b2cd00c18dbd45d37c87930683ca5c57035af50519308db3897fef4bcdef89f60e71bc04151e0b4bf73847c21e0d9d15157145c889f39b13d1a93cb7672013f2b13880406e2fca75e0ffec90eff897b2c81a405f2cc408a31f3af8a1fbf5dcc1b2ad2d8d8f393b8f0dda3d8fbabfe9cc74e39a822acccbc846a8f3cf339dda8563baef1a5c21c03cfed2914ba7324ec607fa2c790e468b65840a921034c714bcbf636cf89f8204f035fbab22f1334097052e72d8844c410b08fbd0406037daf2b8791724c7f5419ed67d773a88ebc6893e7d9d49d5ecd03f95923a426720b49b5264cca0ca0a0f20abde4e597f2384776ded52b66357013d0fe632da74913ed9c4c080b06825903fb3210b74460524aad9ac6bc9eb06422e868a041731bea4e202475619e838e7968d5bd5ca08a059bacc093aba3b30a8bf01f9db1c0b30eee0cadc81d4aad9300a86a2faa26a5881a9df27835e47d65da488afff7255ee3689824ab1f8ceceab64033f53a5fdb75d9248e971c7740d9e4c1d339c2cada22352649ad26c802cc0bf1dcc6ac6a7fb5ae34a694717fd569ab1b5ee22d91dcd7377a628031539680fb0a4bb101dffdafab53e09edd7d0228eac64c40c1bb985d3a55a69b04df8bde711477f24812381b6356eeaf72d1637c7dbbdd36988da2581660f54e078fd419c0907941d05485d61f41a4d90692d8aa50aad90a244922e019a3f1b224d0ba7007f1569629a5dbeda2184fe9a776c7915cd748bfebcb815a1d76c9ecf144c3c7411da85c09b14d2c573da608c05ba89c107d7f00c75ac15b61f4a1025643a63c9a771fdb644cd043f9f01a41b6d285e9e09178b6f40f126a8139cb91b618276ad15a1b59d400c8d3eda2ec1f2819c5c7d0f67a62584563b7be750fe92999102121a0af334eed76e475ef298651f32323afeac30fbd42ef2465eb5ba2de8444b0ed5e844bc9f95a3fb899f1c51c8ebd99c851eb105ab29ae3f6cc2277513675bc78a319b8cec9ae17f80bbd3215da7072216fb7684df71eff3e66297d2bfadfc27c21d6cd9a2f8d8f8fa4306479240c075502beb73beb3bae1405ca8dcc11973ca4a567222079a78d2059e7ad5d176eeff021e54d262f9ef7f6aa0598edea61d715bfdb92088f3d17dc0e52a1ff9e2ad140da1c37f6f8f42d7f0536bef62a8a16d9e20ef3f7c595bd0ea8c89633b8e1a915ae04051a15b89801089393d734831e3e701db50716ccb82da364596d9cc004b86296feb820fb7f01b17a48f7e720fde14eb24483f3b1224a097cbaa7fd6ff42086e917b08966f77a7ddd835b36771f8b631fcdee11523c099f54613057f52c5151a8d1d00599e458653dea6f6609420298cea254fbc0355410e076e34ffa862ec5441bf65a642c39a80c0f3898fb976cdc4132e57e1de81a285c756f6d0810b8fa5d32b01ae9f0cbb8f584b2b898bb5a246c173e70808d11bc210f335552f123511a4fd32b8198308b3e981c70b98b050a093c009fedfcd155442e2cab646b621604e738c8fad41d772e5a36532d1683ec5c2431721546cae7307922f0d7a692cb12502cf13c66e080e95960f54907707a5b42b769d3a4e83a985e47c20b5a8d294687b0bef1e135436d3c2560d2a321ecf9906282156658291a8369038cd453a093ae8f347cbfdd2f3d9638702b23874d4c585c3568ffb90d7018757ef8063c62b00b4aec0707dfc294f2fbb41ffbdfbf7dc1fe7815c61f806d934968d6630ca3b702f25d22c276f3bf3eca8e76df586917c5b239df4cb6b0b5024e6fd2840e80c90167c233f958cdd61275dbd24ca0ac69db642a7150ab6b33acb6f058de231715d5a4ba53baf431abffe9d3f6e17f44dc4c7ad4a9b87cc827c41d81a4f70eb04ff7a51a02bc43053e0fc4b60c55202015a903096578139d869b0cdf71b7b48a701ed5ff30ef6dd2701843d345dd1e8bc5c781425ddfe36e202611550554c09fc6b1534afcd8e1d8911345d01917fe08a5520f5a90519821ac257b9790bdf79629c914820cca0c9c0cf4b2e85346f390d35e47a6b5408b4bed8f1617c59e781fce3773d77f38ee02692048bbfd23d378338e5635fa79cb277128184715b59a03ea3f9c49ab9348cf59a7e13f1c977e1a8c7fe987e3d2d5f799d7dc5ddfff87037a4dc973628a6cf0944dfefca480c912d4aa0593d077d881df31da13891c0dfd99734efba1baa7f53b1044a9beff3eac2a1b3daf5755ddcf5b24f4a0fbc4993978d3303eca5d2866b58be69266fd80612c510d3335899a3f287735457d7de379c8480a6c1d5d35d9dd9cf427ad285f823fff0d782e4b7183da14bf9f0f633475cb8707b2fb6abee86e97f9a27f927c78f588102e891d3cc8d9dc0bf57d95bbc597493feb0c67a3eb3831c78d22fe245b0465512af605b7a6105c44ed8167ac3efcd09fd8b26fb9ba1d7a3f923c3bfa18ef3ec68398a1847a643ed8de64ee4e2b84bb9d3575ffb4a371bec99b8132c6496df9bdda96a85ac71a3a95006dccbb1ad903b99b3b6373c854d2b626bb7b9a6caefcaa550f6952b5b236faae28ca4de3d88446dad5a2318f089aac28bbade462b77d49b782b8cd0d895dee3971a2883569d324acc97f96e7666161b9dd6ef2737d287fd4e71f859aefb49d269b27a7490e0d19b92fbf92d2e84f497f4a0a54d21b0de27c5abadb6334a7a433e65434674d7f6acb4f65bfbedb9af57de30a5b8ea8168fb98dc596ff2b5ba23e4b6db3b8f0b9e76dfa57016b9b8ef5906ea946cff7a6a1a8fed3a4ad499f261ba5faf95c48611ca5758b5d3a3c319b282ecaa5b2db744673a84f9fdb9f92838305dda44007660305911c19e4dcd4e527d441264aad78fbf69f777897203dae0f7faeae9ed6b2470e96ff3e7ccea953a7fe59165bf6e8f1be6af9985ecd70269477ff9afa15a95ffdb4aaef5ff5bdeab338f8faaf6a49ff64002dffb570cf3dbfe9a998a3e5ddfa68f9cffaa8331c676993f6b9fec9bbd492de7f1775a0e4a8969bb4b65479ffdfc1d226df962a3fc523567cea593c62a656a456a4668a7fa6f8fde78a542a35532a5bce9b7a7e9a7a9507515588cf264db6ccfcdb0c7a6a837a956f4a51de13f5290ee5555685f22ad5731cdb9224e698afe270a53eccbfda5ff1cc2ef07f5551acfa14d662573645c8bc6c7d70affa1675a0bc4af520e85eaa1e0335ce2012c6afaae7b85a3a7155cfe26767b8abfaf2e75d4191dd931ef7e43de684cc1bfe283f6bd9e3ceffea307acc2d4f7e86bb281705e563fae46745f99028836269acc9fe9346324a612cdd16924ab7dd26d37236b771cf3e6f6e7bb1ba4c66775b58fd8839dfff865b2042d8e85c0afb9a2b32c258d2695539f8b9e7afb9fd42a62a890f5927740861a373fddd167122648ff81fe123de1fd3dce5ea124b703f5f95a32f3f5f216c746e5b958ecbb6bcc117c82f21848dce9d564592b2eb0f43863a5cb7456030f043ef8410363a2f18f82acfd2cc970a019e6755dff3cb4340e841ab42c07c813f5fa0a53962007e7de06142d8e8bc4256a5e375645a150c0c183189908c988f69500a389cb563c711158f2597012f157d7e85e6ad87123f3c8168808ab1a4307ae3ae79731bb3fa6ff46bb7dd2ec2d83e9ec3fee33666a73559ebfed6b75114840983d90ca130b7d11b0aa33634e636b739cd73dc87bbb9bc434dca09e782e801bfb033b94b9504f7a20a01e2736bd5fce4d82e164972543f67cd17ebe7acd0870f8a7e8437b42e2eab5593de7b197af0455f2782c318b2e3a5933ae904bbfd44881809dd61fc22a2896a46c23b45b4397d8a6244b40ff0cb4bebc4f08ce93011ad5b3921a011640ebb108742cbc40cf5b136ee74ab7317f7a598b33e258e48cfee4a89b96b34f2a56c6942a9906ce972cb7136ce5266a3cd614f61366339ca11fd419fed80149a6c9eac07330f0ab74d364fe6ed783b1e126fc7d37198db78483ce6b0f674bc1dd1eb19f9f01a59d7e8c37558b75ab4e42d1d9662c9937903faa9b9d7d32d66c29124943c25de17d6d09d40849f155aa8e3042230b939a108313a4252f3518e174e51c6d63eb8bd0526db09d1eb882a7c5e72474f7d76615e70cfc16d27629a1191b9c9646bd2f4539a3c22dd6a8fa2c9f6664d45d6654e846634d94cb426c57e4f94113d59b74aa7cdfee4dd961e0f109fd83f350c35065d77ebbe73bbe6e550b02d3da7e635aaa3a8122ded163f81084a6ea360bcd304c9ed5b7aec86085fb8a5cf6eeb10210eb7f41cbfb92d527fb75f1ac6119226b9767b5e0f306d66661ed14a3177a520f1661eea945a4aadbfe693995380448f3d7618911675284426737ecf5fd735b36a876abee86b5e7c0d50f3e2bee6c559d5b44c24c1bdc8d28ccfbd01f825fa77567fcd58c78a729697735b877bceaa102082a910305f273f5f27cfbdc81e59825f54186d29a7ef141e1d67a5a4d44a8f32fee94dcfbd4dca8b5ee57ffa9ad758c7f1fdc793a549b15ea331597616f7352f5054b94aaafcc7af79d1b8177d12dc8bde5f64698eb84d42f4a3a58179cc65b09788ff06dfd28945094a897d74ec50a1ff52c6594fccf3723c9927f36464086804dff3786e7f929d26fb91dc1e756e1d6b4d76b02bbad341c02f2f7a157e8c02bb434627e2e9906c4bb0ee73db751e8a321d12fcee827d4f33d26ef1d3573f183edb114e8a125501e6cbf9f28c29b6949e26c7596836ce663111f7fc6ae203dc8f4f335a1502444dbc68b81f4737fce2ec28e6ac598fa860607048a41f8bf463917eccd59a57d7e4369326c39425b73d52ca0f083cc03478bef38ce91e7010f04bbf5b87f14bbb4db708f98a5f7c76985784d1fb124a90b34c3667f59b6ca30df56f236da69969669a9966a69969669a7dd0371a45541714f48d4611d57988e72b7de388f252c8ab8da5c3ca124e8d47e13376d86761decc5d35af7e8fd6adc9c333a6e9969e6c04735683b61cd182de93d980ab4703af9e2cd6a488c60d61645187a7759b5a43464a8fbb1cc62c778d3366f5f70eeb0f94713fcebeb17f44344f4671dcc6630ee3c6597729987d5f8a683093ad4b01bb52389e41bb177434b8dde5a0961273574a4fb3fabfd1536229b12bfe5c9dea2f70862956e0942966ca173805a85da29fc59cc53a630f78e7f6fb114621dcfe142a94d085722c42167804c2ad02cf1879c02f3d93c66864bee867c218908c295af87ed66f9c75ebb3f3bb92df7b7ef97ac6f2ab7944bc9927fb625ecd9db449b726db38bb2da2793210c759a5c926a2cd904e6e37cdfa4db66e95a69969663262f2e1e74b99992b77fd04f36a386f013d5fce5a0aaa781718e08fcf2ea5df98e0d496750c2b03043f429af19b1f7e183ebbcf9fe91b9ab1f9826dc87e3531fe2f1818b7a787ef1fd60e6ab2b98a5008dce6998cb316d441ee9a61183e577ed20ecf6802cf087d7f080863d9389fbb50801c8884c3a320251c21c965252401c9b59795900417dcafffc458ceda0d3119798a32b309fcd2a202501efc904500cd2c03ed353ef82a6eb2bf256337ced72f068d2139c821f65f4321765638bb1f5526a8f80c3e681bc76788c918ea9a6c77777777f7c7199bec194514ccfd43717be254d141dd4de7797e63de0e0a9961d6ba0aaf839c993bdb411de4b02a460772206762f2db4cc9c065ce7cb70c99c6f8e5bce34f5b7eef91407ac1e91ded51ed3bf2482723eee4e4519ef463656266bce3830f7ea4b01bf1c928e4bba1651eabb3ab1bfc51e5ae08fe1481a09d9de813e57071a1b7abccb1cbebc8386a03c8408caf7f99de34fe68df7ec8ab35a9d331fabd828da4756cd79aec2f3d9d6999a0d76d88c958c2f4ed64de8f8eac86436faef7ec2e6f7a61498d5cef29cd5d36dceb78ef69ad5ba8f7523c95f74ede539e6e0df11e4d72bda73ddd2a7d8d2fa992eb3db5752b7ccf07a89b3f659dac9180e0e6d528b825cded76ac538341a263a49bd09a18d2b36e62246712b1a167f0e3fa837ba66cce76d0af7c87105f45b43a6a74c8432126c9985c255f883d06884ea97c3b99bb3cb07b0e64155b1b7dd9bb493769974863251c61c9edee66d23cb77d7aa8a33ef12f1d53479db38ed12fd62923d2318ce4746da7729343f4d7a861bfa800f3e53618cb4e76eb766e0761146d497e312332223f51dccc1da0263c6e877cb0b609aae2e6830a4d26e40a45bf24b92f5fc7972897113f87f8f92b3f4b2fc47b3577196141980e7b6267a5441cfa59817e40f04b3a44ca1560a4d08417e2cec903b3bcda28d68e016dc94fe3197c1bf48296f2cb248932a11aa6e792bba6ba0403dd1a2f32d51a40af232b366c5234aa9c449f1a89365e5f7afb25547d7d4a2d655caf666bf903e6ae1ee6d6ba25c4cb2e0173e783a329c4ac4d98d791959d3a4d8ede9635f7bfc98f6e72eb933e04d4ad2198748b885bb76834e9961041a12aba5503d6ad189b58b7c2ef170de996ccb70fdf2f82a25b38ddb2df2f8aa25b01f8a639ab1fe5a2884adf2d8db784baa59ff19a50d724e3c69730383e3f2c86c84f4ce21b51df3b15e3d8cd9f27616084cabf323ac6367f66cd9bf38787ad61de5e7806908118737e76dc8034b9fd33314528a9e27b7689d1ef551c1de30624a6086f3109ef1b9d45c5f88152f06064ec68b65dbec1b8e6947cb79c30948d070b7c6e3f03be70b5c49bb4ae47c7e019edb639e97c79cf637497f749f08c86d1ae0430abff0bed82d12e7ed5d8b99c84475706e671843e382d039ac5d9eb6d612c27eccee725d77930cb5d53c6b6e993f65d61d62a49b276fb5bcc8c349259d37ae6d2b36e1901696d234d764fdb334ad97baf1e5b327cbea08c914793316d4493383a4e097eb0ab4198b9ef6a106666a63f99693562368d34ab5f9482b124bb3b02d308c324b410fa07b37bc0bd036e8950a4a6a81fc9699b8da81105eb5993ad33964eeb5ab7463603dcf5c13fe9f798e1ae55cd2f225ad5ab4517c6b267cf60cd5de49c31abedec193967fcd3bb75c02fedb486cdd96cd220e70b1df4f374171a139cd6a116c2edfffa080d6b20dc6e1ef0cba4d1481a16843b67fe3da31cbf0bcfe0ab9ab31cdf9d0f3a0a0cc6ef6301ecf6879c4ecb508de2794bf2e54c86c12763932a4ec5591b7d399c8e82af2b8546c4d63a9da4671ccf1c7e432b184ba775142d6b1c87cd1a52c1587e97f31a8713c1abe63ab763ce6aee1a763be6aecffb1aa7c99679146f184b6e8633c1f9b4f66b8a327e2be7736e7dcc77d008e37cae9f7d053cc2387fbe98635aca1969b2fc6ecb9c7503233a9777682e6c0114403d315caa22dcf3f7ea9f5ce5fabda008303d5fe00145121c46f878e7dd2cfdb9ff415e1c46eca03fc8ebb448f71e8e4d76e330a20819353eb2fb69048e378c94e72a8199edf23761a0a168d7d465817f62a03072fb8b007f850251b725a0448f10a024a0447712606656a2499d1e126020282c61724bfe4179ad8f06733f01260d3a5fb4ba1b4ce31bc06cb1a83f66d20805c0ad49639c2f668ff9a23f86eb397f044010e30afe0b8349ee81c5eddfe1b6f00b0f3f2b68ac58d132a3a58525002c2c2b19ab95caa552adb4565652315229140c144a250815951310a7530a0052524c302653e945a984e20205e5e4e5e4646c318ea41f48a4118bd148648962488621e803088a7a1089423c84429fcbf7793b785e67bb8eabb79fe7a3e80a9ee1eeb7512ceeee7c1b8101b4398272faaffa4faf2b9f4281290b82e07f7cddcb9a0f84b95e4195ffacdd09744bcf75e6dc18f72a0451a6b3df17ca7c7f42a9dc245b194dce5019d7ed2ce7974a25b08604140208d6992304b054621e61d4bb52e7a72adf5a0d04eb14c27ce1df730ddfebc79dff9cdd0e10781d627a94020a9bdb4f412f89441b2073e949203fa96467fa7e09be5b9452c99630d77db43e4a2fbedb12c596a09de93bed15df49b384712729a5a4a3f4e2977332f85cde12e69660dc9205ed148948801fdf4f08b3d6adefc54a3aa9a95fa9454c8faa25ea25b713c92d510ffe7c945729bdafbcf82c2271522a674d7cdaaed38b1665e54bf145bb627d94be84b9e011e04f6b45ab4279d2f31139fca7ff047fe64c1af341ab7ad28f2ff2315ffc908804937e0534c258a2be84295576855ed2a750b684b9e1ef03f4dc4924a00bcecacd5b2a954aa5471149767ea9ce9cf942fc1857a9fc2975f4a76afa719c25ff419ae397fc51be9ce9b2f42ca6581d28f349a4177fbe58fa32a51cbfa4a64a9b35b2658a75f146e97da0d8b254e2671906e77566eed24b2a5def3fc2f9e5bb8bf94f7efc9245e2e479d66e29fea896355d7af69ffe5cb99aec088eb354b22a1de097fe06f8255bfa9a3b6b49f9497ff2283577a6ef899d42982fc41f49b56c7145f1633c7cb1f2ac5d3a86913e68cbd1fbafef7caf327ba79a9669b3c86fb20a23b53fdd5bb1031898dbed8751e3f677ac4381f80c453d6d2cbfd5d35a84fbb05d1c8c66b1d5410523215b9826fbb9108c3a93c2605c810f5313fd11366ad5238e26291a461a0390618ca2d0b34b59694d10699e53c6d8df3eede3eeeeee3d29a594524aa7ad41e0dfb39e731603e221d144a926a9209bba35996ae2f4e79368a45a93241a29875473b0c8589ec0d3ad5ba32f32962ab018a9b602dbb9fda49c6ed1bb62434272dba74aeccbe6f1b6a9e038ab7d2ef84bb40f29c743ed73bd498b7ced23f29e73a482435562dd2abd9e29de701b523a8e489454776e99ba5d2fb42a317d023a01a978ed7341afdd2a3077ad72564862b7596796245ae922d19015cf2a49cf1dbf24d152a95bea16aa3b77544bafe7867bb5eb633d0575abacb353936e8d6c4999f4109f55d1fe13d049453fa74952ad49b261dd2abda0dba9262b36258916d42dd2ed27d148390dd2198c25cced50f83260b82843ffab309a05d3a40a8e57eb96e8e77b48eeb43fbc07bd867609afc71fa65bd492722e89464addc22f49a926a95b2a2875f3ef679df12b333df438ee3a8116e7b61724fa1390bb546027a0216349a28d7eac24124d05e6ae142c753342eda66e6318cbd4adbb03774e26c12b3ee8e1fb25bb755b904df684d12d18199fa8c8f722f1f396f07abc6e926c81eafea66e3c7317899652d15199b580c82d533712add23aff610dfdd3ad92754acec6d95610c5ede77c809854c12de15c38daed1cd9bde1a088c1713396acc3841b7269123a844912233ec487fbe16c74760b47939c8db37111931bd22deec65ddd7796f36956733a1c8d9b959c8c5bc231e19a54d17536dc0d21c296b335d9b3fbd6401c19c6f99c8dc3b91c4764c6d9b81bce87fbb14dcb4caaa6cd09ae86b6981323576073fb4312f7ec1272f5b3c138b9c09da495dce6d1991fca9d3ebd696a2466c9ed2f6234b97012eebb8f11432766d23b6360c8ee1e0f03c8408cb76e95a89d1d492ce926244abbfd23a9f2e8183cc38677453f658c356260c034d9dcc265d5643f1010936e71149ea8a20ab21647810449bac76d3c76dba318d9672fe9da925672ba65fbc8be96896ccbc2308a3e7c239a6c1c5fc4e3b4d7d073bb4aeeb9e971d7386d40b7a0fe76710fb9cd21eb412a300d3fea1a7f0f773510b350b68146618d6e75ef227dc93b2d6e3fc976cd7eee5e67e8158dc49abb1a08d564272186fdc3404c6e4d82dae636d08e1245cbf94da45b25cd9ddf2d5b519ad827363041cf65298620b92e2e4b6102d9e5671767400f1e4dae7830806d3ca6f7f03469c4c793a427383f5005e3f7598069d4a8004f60d28881c07c00d32882c7a481430135d2c040a19f913ee8a10f81c263dd8a8533ac3169f8b7f3cc176ed57079c7a3c03c960d491e00da9ec570861d5c8630dc28f00c07f00bcfa4c180f9820953a164851cd8666b15c878f4ebc68a152d7168696181030bcb2a68b552bd41a55a71c3ca4aaa0da914aa090aa5c2061595d31a4ea71435a4a4986e2653290da5120a1a50504ece707232321947921948a451194623910ca218028521380610148941240a51110a7d4bbecf0b83e77560e8badb3c7ad207f00ce7e180f6e7d180e6c100b763124625dcf5f17c7d7d44e90ca7490ea4679712fcb91dd33d77764b2afbfcac3f9cc63d286374ef5bf774d9b79e497be79b0be9ff2e4d6a5a7ed799e84b33f608890f06bbdd7fdf620e52fdaa100f000c19d7fd9ff677737e384dca9aa4f365327332412f677f38ed525629b94b3124c9a5efb425b26b9fb62176037079870ad8e55912bb405ce609c3152e68c3b9dd62295410c5bbc0f888dc66f1068c3b6d5a5c2fc11fae3f8b6980347e51af97a9ebfe21767d386ecb1fef7524fb59079fbf88673fd146973eace5f803c67519b74554fefc2a5595bf5581772c0042aa85d7eaca7fb66c71bf49afd3789c75f3e18c3207ba01c1803c167356cf671b7fbc793e1c6735ce2843cd9ec6cd6e41b0194f0f8f8de787078802d1806a3a148827e6acd8c489c97ce6acdb379bb072c6d867e45ee5789cd5af049564f4188c1aae97d097a61fbe5cb5f8d2e57a8b1e5e2a48fba1b2fbcc799cc76603e26c0ec4d91c28e62e2e28168bddf70fe79fe4ca0f87870e07678633c399f1b8ababd5786a3cb5ce66a340360a64ebe762eeea823c1caf1614eb826238338f9ba1501e177397c743f37f146a1c63df378eaaf0537de82b411a12f6a9aa87244a7aa8397af8d18baa8af5a21fe934d9229e204709ba1c4e77b5ef1bc712753bdbe9bf6f1c4fb6ef1b470fe7723310a4f17cdf38a25036146a1c9bb37ddf38a250ff240973e7cbb8f3bf2882b81d3e880bdae177d8e157dfc3b3aa0ed18f5890af62616df465f1acafd1ad77d1b9a9db1f836389166e12437c5c20ac45b79867090e0b1659752cd9f1c1874a7b60f9f145d5079096ff5ff1dc1746d27f384d626174f992ebc248bf24fdea3d51a6e5b99f98c8a799344f9324b0069e61fc46a391fd6aea1df53cd4528668c9fd2ace0f039566b7fc702650d9b16b55be7e55e958f12d5665fa79f9b254958ef1e74febc3ad6ab4aa2a7fd1cfabaae1833f2f088622d169ea576c493f6555dd93be7b54557d4ffaef55aaea0353ea124efba26812a749d9fdd33beda6bc48bef7e0fa29e553ec124ebbfe31ed01dd7dcb0ba092756cb2fb57edfeba30cb67678a9d2eec6ae959d418222a088010316ff72cba27bb0f8259dd0761cb8fb4e5c8c2beecb77863be8bfadd0a88047ccbc27efc025af039d206996010f0e7734fa3223d4dcd4bf44d887ebe3c0ea4df2f52d5419f653140c49d229148f4d316118944a0874454d10f515dbc1095f4352aeb6954f26b5eb3b90bb4d960886c36182cac8267b098f1cc34c09cf9a24bd4ff8736a001d3607d7fa8a45b41f00c12f9b46eb9f81d1a46c7e85608a602a002512bebc5533067d208c19d33c05a006a325cb605da62d876f8202a3719c2800865dd0259008079413f0e9435f9ac77316397249d080aba20a50f12296b2ed3ff78c68f7903ce583c08ca98657dd067f1dc73fd316f2e8bfb925a1fac6796916eb1b04b583742298dc5ff9837979fa33466316fe8b30f7efafc94c5531694328b6761cb79a9b5c08c5df06b2e7f101facf7a72417acca17fc011ae916db25e6cd95f92c4594e15cd4cfd6a4cf49f4277136c13444367ed13f9e01d58606b02b94b5e69ccf009ef1f23df0e0f2955d944663d10010803bb9c0ac36b50bb439abff07a7f143abc54ff2e4c70751aa10cf8dc8f8cc671c1294f1434179153107caa3bc5416a1ecfbb89a8f230af54ff2d083ebbaa84cd255f992746d96bbbd5128140af5e00c5b54f07fa81cc80576d99c59f0923b9f233df71f1053717fbac573409de103faf8653e693e172243315bb24e8866fb6da89e91270603d5629c21dafd9e9d35ed676bb2dd7e3fa49d4f87f4fd8c79612cb99aed76f963c62ebf4eb72887e4d3f9743e1f7c78afa5134197daafe65d15df876aeaa196303cd49274a9a56b07d0c6c4aca1ac94f1612d790eb70c65a58c5bbacf4cb594912a298da3820761a68a7ff225e98f478837e381e39c5f8fe8cb8f07e5c1933aef18ba73b42e8ee9aff621f1b80e9714bb3dd3b9edb3f904a73385b19c37608aab39abe65c6d56f14995ed0c77c2a12f4755884773288dd62e579b5f52f19dab7135a75648777f648578e337ce7877fe484289ec7fdf0a5b0c4284ac564302e4430fb743694a381ddb0f13a7d15ab74a9fd19c16a585329e41eff559b778c70c69b82de322c1b688e87d14d980aa00f3f53dcd7cc536107ecd6bbe58e7b2a880d0d2d4bc3e5e323ea5713577f98cd27a28cd671d1d6e4969b35076d9965f28e36aceea0fe5602c3b1d51a539cdea10fbacc916892c87c41fa4a24cc872b52e8ca5cf425909e4761ffd9088066ee785b26ef1fc50d664fffc1a1271378544c63294c988b89191078413b3668a2e90049cdd8c735ef7c5f867a329bd5eed2a1d7db86d6fce38b84bd9ddb82a38da78736714e88309c1585235f00bbdf3c633ba75aaa283955d142dcfe4743a9deabcedb726e7d039ee9a4d82b85b93d3e7766b326d4d360c0ccf9855f0cb7c5134706a500215ded37bfd819a32c669a4c9955ba54093c3e188b4ab07196dc2d9d01b17e36eb828681077e34186bbf10cf7fbfdcd140db7c116d80339abfffb50fe25055afda90af16e5903bb6c67bc3b9a2de58c7747204b15c24d234dfa6ad2db64ffd164b1423899d56a7463f4a31ff19d22e79e5cde994276dbc114d7a44911770bbaccdd522cdf37c5fcf3d9cecc9bfa4fcc9162f9d5c7f47fc9dd26c7e0b8d2bb5cc95dee6b659ee1c88ca35fcd0bbb287deb20e7beb9bbf3e8a51377f431ede160f439e319ccd767dc8d67307be0fa9773c2aedb183f5526e62db9db1cddd18f2ae941238ce58c7757a90a3e4be57e24919e24de2091f8a6aa10efb258d738bf3b8a37c027fde87d7061aa824fe2ea0e3f733812bd539409a738c5076d8c9ff2a4aa4afd0deeae3cb843e5073b0c8528b9ebdf979ef3fbf7ee2a214a743fbd83de8c934e3e671ccfa7e10eb5ae5ccc11fa19aef48b47044b5eb004e442d137909823f4733ecb4f1109969f0fb2547fb0c51ca177fe95f567db3f4d32399d6c39432fc924a7fba7974ccb4b58fefbf9527d4c8ffe4beeceffd2bbf3e77f3c798807c12ac4bbf3b9ea4c78087b10e73390dfbc0b7240a0e7249739fa982eb91bbff7bfe2ff2ddb96bae2573c4ad83fdd0af2edac7286de20a1e75ffd0a1fa1f7671a158bd5717a0c1071f9696a5edf37f1d9278e0421e29ebe5ff3a5fabe27e255f3fa1e6cd146910d7ccfb648074250b3e37b9a7ea9fe34c50278afb2a71ae3ab10cb87be593ea6512a3734704fb6d4c03db90d52ce6b4bdb40e5775b1e5cbdf511fa965ffdace0872b4499d097f37df5e5cafa60f979843fcb83cda45b2db6df4e237356270da8e5cb3963d2ad19fa017d4bad628ef9d3c7fcd0b7d4f9a1504b2844c51cf343b654e5087dcbb7d80cf83dbd0f96f70ff59e9ab69f6f03756bf5fd2b5166a5528937e6a75e0805543aface9bfa9a0b86c40278bf52b90b864251b5f95edf7fffa9bec93da1377ee95755aa06a6409532a1414d36004cff55e6204aff8960f41ee54b0a944ad9b6a16af7b412cac4c77cf61c219187f7ec3e6349813a88d6a45be58c5ffed3f7d3dbb7986bd7bc949af25e4b0ddc934da92148df40db70fb512aada27ba775bc2f1b06e3bc7ccbbe14880810932a72a668007e71d372fc136566100c6d429934d9404dfef00b733766eed6ad2654e88cb4cb871eae8a6ef10e9319d090dbddcded8e48e7b37f7a8871cb90f20c8e8b4d1abfcc9aecf1b33421a87971e0fb263af0fd13f3f5bd679be840f74fcc57f79d55f1e72c1ac4dd66dc6d76b72906e105178c269724d5aba8b1c9ef1f506bbd93a3d5fbaf96a30b6a50c4a8435a20f458b2a3c919d3e4e41d1818efc244891e3e3c7670121c313564c0b4207f3586777a60f46e509337ca6db8f3060683d1e055f292f93de6cfab9fbde63aced3f3b4aa64fe8e29ebe11c47e633bfe19df93113a64383601ebb31cc0fcd6d3f403d2e2deefcafe9f0d04ad35ddd2984de254d3237b979b51542713e19f7ec76d8add9fd5cd6e1f2bb3592b174dbe57c84dd6e7f786b62c39ff5e13fbfd0d96d18c24c3fe831a1c8efa2ee939df77db6fc46ee1bc7311c67ef882eddeeef2cf7deb9f7ce3af7a1919d655d1434b68bcf86c1a4e57ce3cd583a57afcffcce98a374c6daed76eba639eb43fd8cb6bee91b98f9ddee67735b4e9e5be733b3dfc4400c5fb865df4a008525dc6ed93d4d1365612cbfbe61661661612c3fca96cbbef90d145fb88a429471b7e1ec11ff29f2fb4db74a7ffad6873f7f3fad0e8537dd3a146edd3a4908e3f7e8743a81a75ace7bf21e775a3fd579477d4f29d4b76a796769f992f72595ffafd3539efb597bdcf053c0a7e29b9e0bc790b9c705adc9963d2e1796e1affc9c35a54b499d7eaa94dee3c04addaac47f95f8df378e54255afa29b50c7f44bb17bb6953a2f5a1f2f3c33ac3755425f42eea38fdfc1673a84c5bbea54d86ec11de974a5f3a714b0f4e31c79c5ef2927ba5ff4ad3bf9ff15b6ab165cd2dd996ff4ab554faefc15515e2334d7e4034d0e45cadbe7ff5d33fc8ac83ffea3d31c7ea7db5fa12cbe95b6ccb9fbea5854ecfe1dfb2f25e6965a12cce0aa9acf0c0946746a92795d98ea3155742da72fa969639dd5b1e0393d690d6966716f1552d62cba8e5b254be2d95e54f5fe2fba946bf52cb1e77f48d7a47f9e94feff5abc3386d39af8fbe4f276ac153e54c6168fa593f502ca588a71fc9841e9ca11f550928710b3d0744034048339c8dd0072182fbd0e9395bbaffc9c7e949240c8c0e6b0c45c348bf4499425e5579cfb75b49f972f41ab801690192db3f43aa42b8eb3faa3340eee8c30fe9e9fd4fef5608bde1bb98c31f2cc1cf0077674ca798c48f7117c2c9a458d7288a26b1542a01f944d193ee284f477a42a92dfd478f7232fa8b21c90ae1eec8bac6f08e9cbbe0bb7803fc2044a8dc0269b251f70bbf141ddc926fa424b7e49fd104a4074ce9721470a8c0ad3003c8408c2495414189b4702943b22e16d6ee8676b16e0d993f3844264eb7ca10ce6d18b78bc5ba21dd4ebb4cb20e8a9deea69b75b40e498773bdddbd21dd4d17eb6e0d76b19bbbfa356f7b463cda6d8e06d62d1b9c7034e138ab3b76b92077354e176bb26f7038ce76436eb82ec6dddc3057be1cfe94ddb8abfbe61d67c6dc4561f486bbe182822a07bba577b3a4631fa267cb5ec8dddd1ff409b60d7551783637e60db9dd4131832e46b952194a053b18c112c040231264bb9c86cb3b6f00e2099af1b8dd664d7018e1530527e391829bf0b01ac81e363876f0d000904e1450dc1768859e69fba4e0d6340393fd13a849b7618604e0e844ff4012581ed30a245bb24f4fb712806364bb337462e8639e9b99bb726861f6059d9ee9e018ddc0081c3cce3c373c49502ac6108ecef2340f0c4f12f4394b335fd4cae8ef9b1bcf8dacb9d11038e85ce6b9bc13049443448916dcd0f97d44c6597315f7fca2a207bf274f5bd590a02df0b499360fdcf6eb56892d70ab024cf6f370567fe8bb333848829a7fe123434d0db3e62e7e7d359f3d5e8801cd0a3647e6ab94a033072641f00942162ecace000c4d21083a4d5600ec8ac0831a842df84e100411489153c5453549450440be5c1ac6fe296ac3afcc18a5a025b9a5cb6d9414b49de9325b019897290380df4b5790ef0f42ba3b4b843f42ee273791f89e0a905d6cb863344833d20e4cfa4d4bee721ae8d3e728a51ca5d4863f9d3092d865a46f12bd612c3feebf90ab45e6fc98a673c200ec91e338aeacb9357322e0bf6fd60a80fcec5275fce5f47ee31806e0521d19d05cddad3294710dc07480830e6c800631c8000e4d5efc9d844dd226fd6b725a1d19d8e0528b6a92754a00baf38bd771d4fbc74ed756c2e4e97500234b4104e796215b2988c466cf96c2064162b081121a03907572bc70512b5393ed2e3a6b49732757698e24c13db534f439cbdc83491883f0cff5e717778c72be975fbfe86499c1142e7be0ce70775a1699612cc7eb44d7b4370e3aaf88f8def3b72de710a2a539327a9a23dd8b0f7a0f8e421da1d0b328fa0b9248efa327591ffda3effc47f6d595eff733ad837e28e4cefb3aca337dbd67bf9d2d277d7fda3e85929dcb52d02067bc2c050d88dcd0331434b0415d964296e482247617cde72c67112776e2119cf5d13435af4fe4269940800d3ff12f273e0488ece7ac46827bb6e5e8c3d42423c1bd0f8fb3dfa4467093ee04b07b0eb4a0f72d22d13d57fa83b5c8d83d8bf4473263e55ad6d0dcd1d270c7e09e667c27b863909edfc523f8bb6ff188d18bdf7355f45d437f521de442e648a3e7264720fdb0d2d0dc929b74cafdc7de731db556741a9b01933b69cff4ed771aaed23ad374004112d3393f6a33dda7bbbbbbbbbbfb9cb33bb4ec37686e1c51cf1b8101f4209079f605d969f85561fcaa30765de87d1f38fafe1f5d6703010db711c732e517ff1f233f210db05b86b7dfebe1383b2fef9c610cd7f92716caeec6038765c090dd6ee3198c6387cf8f8dea8c60ec82e0d0dd9cf5b7eec63c36aa63e3d8d0cda4c0893135753bdfdfd3a7f1fac19eb3bd398cdedd9cd50575f54735dffb9a17d0ed493f898ee6c8b449d0f76c4fa7d3d978ba9ab35edf0846b6dd0dbe9d0f5efce26c3773d6aba130ba2da9bd714e0de37c7ef6babb2948f276fb5bfcdc1d1d83a700f3c5bd121c3e6fa68dc894353979ce9d594eda55d2ade93379a6cedc99b46f4e1a190a59b259fdfe356b06807f6020668b0a410412cca258e042eb05b3150860c4c857586186152b5acad0d2c24206169615d06aa51a834ab5228695951415a9146a090aa51206159513184ea7942fa4a4987e4ca692174a25942ea0a09c70e1e464f4c1c12c86a028f4791d477120818300388ec0618453d20d26cc0d89e6d3e951da85eed14eb4e1948a36a88b36e8fbc3c05cefe73722cde991aae75118ef4153b77ec08c2f603a1fd49f724b46b2b6758c9ffedaac75361f761981e399098f817fb470b9f90b2edc059115ba20e234a5a498547aa6ade2e86c1df71258939f0e72980fe9d86db71b366d3c83d28ba35b3efa704603a36a0302d218ca5864fe639ad622317e545b3fda27fe35fa56db463fc5f0c18efecc8db0c86804845f98087fe6bbdd075deef79866563dd71f2ed79f479f1d0e95aae41ed58f2a6596ea690d9954a942cbfca27a100c43ae9ca5133764c05df91d382838d62333c9e4993dd346ea966a854e5b91717c929883b9c8f87c03188e542a95726e9e505df7b3fd397fea3f7987e472dd96d53fc6c7ba02c6c42c6b6af787cbe5cb6cabcd1196c78962f5a54b03b54f71c3ea774e7e6f1b99148e542d321aa5de3f15a27586dc35328b5be1de7fa5ce4a6bc824f7b47e4c96738a942dfbc7edbcb11a557e85322f50c6d8b203870b7a6ebf116d6b1f26f579b8ff608c3a3e1015e583a8a78751fd5b554c31f3c7cc1c3e338ba20c7369342a3d7f2964301465280d6d9131f564f5f7a19ebe878af261482a227eaa16193de88531eaf8ad2ac6fe2576a1228ce5e47979940ac49f6a10ef15c68b75f46175148b5c5d3d9297ba7aaf3ec6e8beacb90ec3fceeee5c7fc0dc23dc8de3899fd24bd94f4ceda9c8f85dfdd8c4280e99c54d7ec17d0fcc0028ff72bfe2189c17ea18e9198711358966f5c3a841d41e5502204a38c51b2f7faa65e86c6792c9d3a4129ff9336d36b12661fcd2df8d28cf2d506a8bf5a48e5ccf692a19c2584e9eeffc6b9b6df40d9bb61b8ce5b4c14a309e41a251f9f710d2bbe8188822a144236a2ec9864d72dcef4072c1b920edf0526dac5e2af7a9eae2857d00fc0ecf4ce3e5cbbff6879b7a977f61ddd403a0a61ea6a6fe454d3d4a4dfdf7f14b2ae522f5893652cf303748ea4f4f9f46e5e33731fe7c9dd0d4f39fec38bf5f5e75cc2f590c10717d1cc7f17d1cc74ad3af9347d522a20146b3c59f4c502c37cbc537ea7dacdc2c12cb05aa964faaa5690ced4753287ed40f2d5abcf8cb8e9bb2e58e9b5af992bca5f2e4bacd59fe3349b7b8c50966f634d9e0e4e916aa43591ffe2e7ec05c54d995d4fa407d8752d22d17760998ebd4b64d93b0988b2f1bd6d1ce452d72f2eeafb23e3a1747742ede5db87f620e550e7f17efc202305d101fa8af19ab2db4e2273b3fc67f402981e1993d2fb574fb03e6fafff029a20c6d51e70f75d64e23bf736a87eb5f9946c3f8856b6451a3fc36a1bae5c3fbaf7a881ede9f4f3458efb6fce172ff550fb2d4255c8c4085291c3b9a64515196d1fb287c6779949883e5ddb27883e51f44316a7caef44f755e16f55955c877dd87ca4df65053dce91860d69aec1e39f5eff8bbd1bb7f612cdb56fe80b9dd4f9b4f37653cf0f05ccb1d775ad3f3505b566ad96fb0d7fe0eb5445d6b1bd662fae76964b2d4255cee0f97abf2a657a9ca79d94eda38d671fcf21b3db74ba5fab60de127b66d23bff82b24caa8ac6b74b9a36da203a37f62be461fd31367fc263a30fe13f3355a9af9b2111fe5dd1da659fdfee1d8ae93f70f318d22f845bfc35c203c63f2086e4f13dc7e0c04611a2de68bfefff9442b24fa1254a9253bcfe97a6ae54b7a1dc64f80cc17222ffdfa4a652653f5f27327977ff2a4c08c2e7b97995fe5f2536bf93b4b7aafa647a990fe64cbf924172370f0f8a47c9bfac7b6c3f522e373caa7d8255c42e38746eb84cbeb0877ff2ea309b532dda6588132465291131e20abf9a20587cc4f1a45e0ccd9ac15815f6624bfc4caafb0f205658c610945fc22268dc9335f4c1a30f30590f9a2083c634ec12ffdd3365ff4efc0e0dc3ea936a33de2b66db60ec8a86d3470f91bd6adaeb30d0b9fdb260cc3b06d3ee6e1e9c9d35e60b2fb0cb7495019c270a7e019dd057ee96f9ff9a2bfa9b875efb5eb6ce9cf95f3678d8d3a75192d81a20348c17b904467ec865ee47994561f93d669dd415a417f30f475f4ddf68c7539613376798ae07a9cf85c187e4c871e536fc65e4738bbc48c5d1fd4e78dc789000467f7dc9d5450524a23e9c41b8d46a847192de9e45128a348a4724a31956060f4808151d6dcf165748b3b41f9f2e443dcd3f1494f1fe5c4724f1a6bcd25556ac58f715014e23e3bbf24d43824b729974434e26aa2cae98460a4f18cd9d5ba359979324f9c1fa829635253b9dddd59834c9a53a3cd94f88c0e81460d9ac33384781ae1e50273818959933199c6d1001d8f4ed9e9945cade46adfe9586f87670851e3fb3922308d1a348290ea4007d89df92e376f8df14b4fe78e3febc7e4383e8d3a0a61995fc6af463f244da21421e2c1194eb1640a256238126558c7bcccd5bf737eae0a215db6fd8432fe12f4ff28b3ed9ebffb1346f999ef7294d6efb349f9d996fea3cf68e7c43d797fae0af92e4a0dc9146f943e948535a883cfe8cf97f1e98c3ca6d59d2e7772cb7f8ecc55d11658646b52f4a04f932d03dac09fcb81b690c8f85f28e3463ea3e293c1ccccd998524a9932a5a22d70cbd6adc964f7fd94ce9bf22591489419ed783c9e0e680b65a1ac5b44c29ed0a75d3dc842239d4e8824d409794225210db4f174ab752e68e319d35d1c57d3b932c6d083e2e97de8cf87bd338529d4c4dff77ddfc7404ec527a359ddf87df722f73ed3c864f75ce50f05e16316bfe8defd760fd65010d8c5d3cad0ffc298cae2c14ae3b95ae3891862a5faca9115fa50a81637498a39ab69fc0fb5068d0bec0a058185f880dc157261495b8e2c1b8ab92b7473568b70584fb2e58331ceb2a576d2e6877adc2582e971d143867a6e7fe8e62e910dc759b67cd138da42378be3e018ca184751661465187ce6f79f221224d6d3dab32610248bca0de197fe1a95899951544b7d2ac5a21a0502bff8805ff40b51298d5ffa69544a44a54354aad3643f08537dafacaca050e3a87a9088ac4923b11a916e05615b825e41224dce266824086309cac85600e8e1602c7d8683b10c6547d067cd449546457ab0ab2e9eace0832c78068b275f00379ea5fcdcf5fa12d5ad20befccb52c4979f8c8d2f5177d5fdea6f5419ceeade46ed5ea6765f44ed5e97c7bbf04bd4fd727c7df9dd96e7ae98a8f4ccb4a6512c19a20100000000c313000030100c874382d170482857354d3e14000b8ec0527e5619874110530819420800010000000000004098300005289615fc3cb8fdf02a1ad16f620d56e952ea8febf4dcf39814707f275333454753b22f8626fa7b04732c15cd5a9152e455413bd382a809ac98d8227c05439d81c3cce9a3ede86078769ecabffc17653b22ad7eadc36a39948ff230aae1889e6a4c981c3251caff34fbec0a492a82bf641b9ed1428274244bbcada69d79d396bbb5ac9e5ab9e63a27430bf64c85baa8ba25e2632cb7321e926e4efd13ecf1fe60c87347c84d49706b406093021c76da72b76c741c8ba86c75f7d43b8b053c4e67ff5e99dfce4be2fae9257ea8f350807fae631cc7769294499c5d9d611634d13869c6243e76c68c751c7cf4fe88b14adff412e10468b51324a638f29857ddbb68f3396baf0ac22cc4a8903d0114b41772575c488b00778d243869c1f00b475e02615f722117537b5d3582d4bb2d30630e3868b1dac5ff491f6462fc2fe9cc959a3112619f1d5d259dc38410c88bb8b544c5c7b028989854e14413049e8aabd38181f07943ecfc93db8f58aad6065eed9dc3f5b31c9a266c442baf13dc7b46bb392e88c93a6641314f0b102d95f0ddc77367e6657c05ce20331fba6db31e390501dc0cf60c7588fe5f4cd32657c8652c35b7ed7a322b350ca508a99b5730c26280dec313ee98c0ef18c6386211bb8d4488a1438185af4ebee85aea649d3cd3a438b0661bf12b87fbb970f77a02c1a044841a4232b035475952f4c9327a0b487a6dc7cc19bdfcb187369fb11e5a87f848a355cde16d91722bdf04031bcdfbe3500e5e9f83d8e5b39622e9b6b4b35225ca3ceef063524a1374e354357e2090bad18193ef3ee7b771e8e68b71acf461c5a46fdacb152d29487a1d900019983e71c7434d2929b617d502345218411d8877be83ea2a4d4516f722a05715ed48adfe622f4346d58729865b392b792557e6ade83276c67d1529f4d77bd0fb230ae91ffcab8db9ef382742985f86ca58a6b0a03e9430f0eec402501e00c7fe0729c093378c176b0a0cfb17e981c1010fd44336d30189071fbd0ac80e07e8f923e6fb137cedb2d15029c0fb60156ab38e35800eb2e51c1e847321c6a26e6e2a88d24b41efd4c2db8f4cbefea6325b7b49ab4f16f3e0f045166b27a0728741999753323975c1705ef954358ccd99712775dd7e65c578526212a8af0252094da6e3648e25c8e3cd6b765c272e6b9f93c92082c1894666b6ed450be896c864d578ead566cd7177d7cc6b515fe778e13a32e82d37978279ef2bf42d5055cc950f055900108088e9a042e704fe46361eb8fd1273c044ff48edb5ae362ea23adaeaabd4b92f4077d4de742cd529d2a99a364745e973fc1ad1f7b8d65f44d6db60c9d0400772942743aec7c6bba42254041c67737d97865b6a6d7cdd38740e536826085cfd63cce96fe3d7b6add9b7fa743c7327da86a40cbfa3801b951458515da6f08dfec47b3c75f3ba11b0258a6586c0aa1dabf24e0cebda71035398dcc0b29df1a9e5fbfef07e3d8062b742c228ccc8ccea7cce23eccd2aabb2b5985a28b32332e199a3b2c65384ce0862609393c4f541a98e1a464181f974d0770c51440e834b06da644a1dcd07e8cadb50601580d471546e8423917718a937da4e42ccf10717ecb969e6f158dff8440e7bb87205e3de2f96010d1db95c73e9ed788e1b065e3fff0a2cf1807325036add0f963ed0ed6173a52ccd1333a67a2d7b8470e5bf0ef97aa45b0b814ef2138a28f8eb004ab7070dcdafef017017ef15ced1331c1b1ae674acf14c50a9f5b94c4fac0dbeeb445574bcf9907978e5b575ce6defd005614c0293924f4194b88fcb7abf1c2b1b335beb7f3a57d4ecf42a0f7830cd59d98785e095dfa7f188ea5358534526d7adc5c2cc0c753f7c7de1572e37592bcf679080e8c331a574bdc59865aaf671b4b720a7dea35a24197ff431c5fc19d5d71beca5c876f1b05a13eff0a2a1585c80242ace9febceb5826b21816db68ca983e83c63f40ce5f0b4f07a4086563b9bc24554cd8cd6c806514dab26c6de2d831c8b41d91a567d245b10e058a8514a745417fa87e6413562dc6827396b90263beb07651eca3d2897128a3be67ed58ec8b286edf1659bfe5b8ffcf8d2168d7afe0c14454fa19c3267926458c7d9758aaf700f3dd79c71da8530c73a88036cebc9d4f13a728eda700f8ba916a0b4870cf0c0d3ae6fca448188c1f949675c5be68be21e16dc5f1328ac40650377e541f27da9916d2ca7161b91bc71e8084bcc6f58951f05f2ce92379a481805903cc2ccdb6e7fd0510a444b8783a4ad95489cd820887d3f073b73c710bb04dca270d4ffd54008a30cc93897b116b667197a1faa89b96e6840c54d7de53ec6aa737ca05c3ed8683dd4a841a745900217cd01456af36c74e9150b76f991320bb9cb9e562ea690b422538133ece8fca43504a34a19e657b5443539605f4f9e20c2ca634a0e6400df7df0cd57287123ca8ac317622298cfbf799998a3d5efb7ea99be9ab1d8fcf9925ea40eb7023de9e8dfbc765eadac076c67b6eeadcc5bcc3364838156abbdd6dc73a444590172b05718415570b4b0a0b0464069d4a76a3cd43736715a6e65eaac7df5a2b33e056e44b1d241528240640a2ce097f94258c84ab620fbbd48fc8a74787e97a46b4216f7359fd88adf7c43d50eacb0e6d516bab7bf99602e86d24755ef18e3553916a32a532a0300228aa40b7b86986a029a73dc59ef4a42750eb1bd73279c2ee2ef88300645b00854b7eda3f336b7ed16d3812f258e2be7c5b616881343d17688d320988edd4a796b9b665a30dda17469ba9fa5f17dbfe02619bcbedc2ad4395b9a8c49a908a71a142ed88510168959eb91cc14221817d61cadbda54c20ca6ef1a72a8d198f252dc175c7078d5af299c55c6ad282798b8b89b86270aba4fdc9a717ba605c166ef697a7174cdf0831c242bc3038ad2e3109c093a47b2c4f082327415ff595a50053dd0d29d918ef777ee5f2dc420eaaf9a7c5c45f8f94f08b69936818b826ad6bfff3c75051cfc93c2c89bfbc5dc8244b979fe92fbb39462c292fcc9805df10ec72dd08427fc938e82f16bf83edaf824768cef3c782546e98eca8aef40a9dd03e64da71ce8c5eaa81e4c0b8f96d23bfc39e6f4ba0605e6b12a849343ed8c6cbc2590b49e0603451e8b9c4fcbb34c156a2d0ce09cd6c917e036810ed3d5dc5a81f4ac114ba14fee75d4557cabfef5ddacfc9edce0ccdbff49ff8584deedf4e69cccabe462f562920263305960c9b93e75266fc52c6a9419e30f2087c0c6a8bd4c7ef32b270ce9ad5ee1bd0e879adea39ce46eb984f577ccfd5343fdfe1abd7399ae2731e5de67c4fab7c9ed7d9de966d94c773a67924a0f7e902f5ec549d73eb670aa4f3f4c0881dc1a78f99bfeee9214380ece960c8b6f57449a4c3f47430e7af79fae44963793a78b24d3c5d12f9089e1e2ca5670a34f61ad2e1ba6b5f99f54e0751971c70605c84a060ec89b51d8f74313d7acb61f110b08cc72dc3083d19b2f94e1517955f15e5b60d5bdb3776fb3e7ab856a3e4ec7992d06c2c74b1ca2e840da2cb085feac5d9bf53951aae7eb8c1dc9853c7ce9b52a8c54d6b4e6c9006c5a6bdd49d98b035d498aecfd601ea978ddc45f7fc61609abc9dc977aebce11acb8f302dc79ba15f55d0f1461112d16f63d55effaae56894c25c1a22bb1e21aee66a5bfd32450eedf5925bd06aef5e7ce3b69ac317b81a679ea30a987124e0b85361d21ff88c9246dbad368a7bc1d21aa7b7139b94d38a9a277693342767fe47d708d1023ce002765124ff91b10a8c735aadfb7167d942de25cb5217b42f08a11282aacb2ad8f222967e0c9dfd4955081f19611bff3256b8fb5d77502f2ace21d3d1b28885d630b9e5c1d4b90094fe31ba2eab6ac99204d4a778712084a8a0a1f2f877503119b24a5eaf3e0b64d8a2fc271d19a1606debc6505a1a8d4560e10a5498f588aba3a78cf36e5977963aabb6e5db475791cb850f47fc3c732b6c8b20d0dddd25b25e8a6d0fbda01282b6ed49b005ca7e2c471937243ad08ecaf5148598b54dbe6156f0db829f09cf13d5ebaf02c58cc0d6f385ce993369206bae5c19bf9962b8d24d54376fc9d83a02fe54615997a36b00bd8b66d47d093033da23e8ec348001591f887e140d850d7696c0d574db13ab5492cb4d2aea7bd8c7c2cd03fee949f686d69ada9524a8f94be1ff5021af07acadeb82ce67a384c821cbb22da4e20f6897a244bbd9b43b8b6833b247b0a233d6a0eccfa6023b6731c8c2c386e405bd11143e1ccaf970d99672cf788b7faa25c57f805a6c5323eb4d1c09a2ee506543aa9597a2f2d13a5185e59f6c3b6dc6aff294f52527b09afb483c001a09212b42758312ca545e2e6cd588e43454038b90651a56083fa3740dcdd29b104d8d889c68e6278ab1c23aa2a882687eddcefded98dc2146149176a8d0e67451a97b05707e885da90a1ea94f3ecb704ff5a0cc995e0bb25fe0850ae12b6fedc1e7dcf5156fa22ad4fd0b89fd97654226f583b7ed22950fda972bbb4f825a65c3b0a7bb3db70659b5994bc5417f20f18cadd88a8843ffb4fba61936c18e95538225e4df54318c46a10b8228ecd102af357613a7ecdb92ae06e9b96da8a7c3784541da20d7435bfab09f6d6b8474d7de3bdc31b5318f41f0d135da6a4b9e4ad6b3670c0bebba29b1f89cbc45a9ea7fbe8afbab20c4d7841c5033da5b112e918afc1eb0c99c89c275fbe52e5951e733fb4e99dffb0cc78838ae2e052694c6fbb338012355dd5d031764f52b1000f4417ff14a2a91c23f26a4c1df1c7adb98628f19bbb626b3be6e421524e654f97d128cd5f5fcd08d148f9cc00796500c2200518d4ce87d1e9afa8b9982efcdc49f44bd561b547c9c5248210f4a15e60e1b0b00b8b38cea0e0b6cf237fc47ca118ce64ca21d39ba1b1734b5700af57bc659046a591daaef4962baefa1f7aef14eba841acd1013d24d0c11a8db0070aa7fb92a719e2350808045bef0cbeabba12d652879596ee0d116fb02db0b051a21297183ef01fea2b35a43ec4474ab62feae94e0dbfad7cb5eb9a88a4bf9d067b9c234262553ddda0f0040847c5031538f76c18684c3a4f539390fb1e39907ae8b610e1173a17952c3aee594990b2a278e5806acbd973bc68c732a801b3761c203bd800c92ba79d2ac21006ec916ff9a6574bfce7ac2b0793a206f1d70314a43bde5d570233fc08d3a6fa7c748c4242a1cf470912b075a1d3870f9259111a988e254cbf6c114c0aca59ff9b855997bde29a776fa4da7988fbaffa302b35d79a779f6325e815cd8f4f273aa93d3153a4ce9105148f43d70ec2b803a728842393c747de0f9476b8525a2c5aab4b25fd0b6a8db61b2cc46d3529a85e49a6990c29d6dceba1a96e589be08d536a90e3a26349116d0968359dac8d79b5d4477ee72b435bd2b742681eb7600a74dc78671208c65f48fac9315a25ca46450867cc143478d15b8623997348e69126fe00f5445094729daef0e3acd50e7f0de9f9cf5b7c9503b9f667beefa15c0f07d8e10d0910a170f525271e85d6df15fa08853ad6af32bdf85d36eb4eb6b4ead682e4e508392704a736c54fa2ad5da8baed0e0803f16de3a18e8f075746544d46ae955c6c1263b541a6da2b63cbc879c4cd789c13796cdce7f6057498e19f4d054455795167ff7d37365b6e356f5bc4706504361908db3ab86f09cd2bbdcb40811a01b322972313b5856704e771879aa1809a17a4262573144a88d602ed0381b74761870ccbb275b287d874908fa32bbf9309d51ce386e5326f7d7b96a143d03ae446702f0220d321f0ee43d8b6b378136a9efc3821338e82401b98df5c10de15366cdca6be01ace6bfedbc228063a2406b3f7febd5f1eb33789d89e566f36de2c7a548804d3121e812fc25ff0f59594ec68ab53abcdb925c48edd0137420438dd74fc8eb7b5f0c670b5a97d1560d1a6fe597af4805bfa7bc59aec3e38b061fa5390eb6fbcdbfbd6c9209ac609db714029b52a514020e5624bddce3c4da13c2ba95eff8694f3bde493e4e6691c37312802ebc5dc6bba83fd9a503272cf55a2865a30cc5db9b18f694846b3cb4db7a5163bc0c0e7838deb77db7ce72e2196b002c60688c64914fea0d87b8eda938a6753f2e2d2f7107627e8c75ed4156f31159ee8dc5882cdb8f32e29567f58e6868ec5a60bee076cbcecaf23598efb70a6cb50255d0b4b23d28cf06c962eced645913b6fc6afb896eb83080c330a4fa3cdbc0f3a5f84ed432306860b561718ba987f88d7a813344cb285027126bd10d3aa932d5b4742eaf6b63ac5087a31e0dd886451c7dd25d9f6c42e0cbae02fac000860f74174823b6b568f20851d8e124f93421badaed945741fcd20a38f4d4f78847d3ae82e6d6704467d09c0096b3dedf230fbc9d15e75640ea783221887673943cda4697e535dff1a4df23fae4b2b96fd3a6951af86098994154d85fb61c09595493c406aca5e54b1316c4ec5a5a28b5fa3fbe7b4abf78d539b78a425af438feceeccb44cc8c22930d04abda7492fefef3d7bc533ba8d0fbc00c343423558c13732640d69295b66b893fda541b8eb0c0769ce73b9d3d598ebb928c0d467984ffaf58ed4645e2adf894610980cf250df484a8a650670178b57cb20f1806a834b29572fcccef200d8daadd7944611f61b80e8eb9ebf7cc16543a11c2840a80cd878d737d19b21abaf9d3f6ff7010789800e31392692ed1e53c7e3fa0a9ff74ee3ec01fc2b0041970968c6fc559760409029cbf2165de5c2695cf63a050d702762637e978f48619094710664f331ee0ecdeda6e7e148eb43eddd93d1f876f9eca4ee79f7ea62cf35e365f8fe035ffb9bad3fbe08ece2d8cd20deae355b732a5f406eab59c545798fb41192a8822a9155c179d413323d4e11300be743eb5ecfb83675b2eafb2afba42465d75ae81678f20da849ce0b994db9b15ec3222c60fe6dbc18098392620231a3c47083e482e50e886b72855ecf4eb02185734ad407f3d3f7b14d147796dfe7eb54be8a3c5fae85fea4b1a84c50fd719d49a14374b02dd815940ec42c818163f70e4f6798b877a78e87fbd6c7deb66172675b50bea8c3fc2aa78371a1fabb841e568c107aacf44da4741b50931c28f569fcf83be790bf7aa0f1161f06687901b6b99be8a99e32f98363d0c89742c5d303d18be3009750ef443e09c4e1f3af0312bd9da89cf155141dc66d8aab7fe7dd3582485b6cfacb1724a669f4d39fea1fc24e1380754170d11cf54ed37f082908b96284f92f87148e81d9f893b01c70ca105e3341710dea272891fcc14bab8db2ef4d732ad1fb89f66942c600ec5d3bdee7f2082f39b4f4eeb2e34fd3173943f8e041d138bc2be3d46a83d16821cf3facd2676306087f40609a39da18e87887e6e3845465105fe36e7f1886b6f923ea01c19bba673e9608e283ecfae07a3e3fdb34bff078a9a101605f2ae03601b464b5e78242d93ff9d8a8e3e953256f68a88deaa0f7373b43d8618720127edc0e9786869fa7120308466abb95430ff2fd568d2087f6d327064415371b39c855b2159a839c9badbce8a0fd98973b183638d0b65c43f2346ba613339be1a58f61441878364956a0edc137f346cb4dd9bf76eec3418e7efb39ae4ec0087cce9714d59e2e103879749ad453f70dce4c2b0b6d2756ee4747492627d28cd774e6b64b2fc5a73529c9e40276523438c2a58d20e76e1afbd5b51f4ce2a71ffb2512ceceb58bcd0eda963abd4a483282c255fa9009610f251ffa3abf4e75ba50026afba832360d7d8fad5c4b234facea7e1adc2f6787bac3f4d7bf39ed45d22b0a042a030b105e4024635d2cd8f267877a4a0b5310c9a4317cd9ded24e3cbaff86e94ccec768746a4bb0c918640e39851553282b448e954e6fa09c08edfc68f44b2a00cc5d09b6e063abf064148db700e6202cd2a46100b5ef33c892aa14a5a33d518b522ce130e4f8a67f1a286ee5aa536c01b3119f54828851563d4edcd9d6115857e4d0c494438e8a83e168533fcb5717cec5a358769cbb3a88cc400006010a62604a207320e4857451985d95a2b22ba6e18018f246f4861a4ed4feb03215455b61d0c138fa9e1fc101cfc45681b540ca119b70d552513f30bccd0a0e3d7bc9d8a1cc6adb375a362b557957ce291ff025362059a6c2c57bd6e164ff422cb2314fb75c8479c28e4da3d0d7ef1d2834e8bfffa269edeee785cfa29f58142b87af54bdf5c91aab378ab694c024f724eac99a3d676c664fa687ca4df3c53ba25bb4bc531eeda7a6a4ac350942033e3896a075e2a0d3ccbbd371561cfda47860522f287acda811ea52fbe2a4d93f822afbb0bcc1070a8fb0c11fc1d43424a26d5f071316bc961614e91af7034657d784893f70b7e9ab84a9949830d23d8a3b8e4fb763cd70cdf9a23cf1e9ba81202db5ea89db92b04670549f34f7d63b63b3e20c30791f37fd9fff4fba5d623dea726576489eec4776bb1a01b16da758a3888c8c35784903eaddd64ab32d07df46a11c6ecdcf8572f0653006b0f5fb823ae85a385a9e12b9e0ab09b9547caddb75edab91fdfa42926804b05573b5ed08f89423be5aa36b1b9b30ed67c8ac4d72bbfddb379e18f6aeeb47dc253fc969b85d7aa130e0eb3aff2b8e34e3030d31beabeb94cdf1c729192c3397e84ed0757234764e012a5722d8d129349344e9accedb4d63ad2d9b5893af6cd0d4f425e9ea349659c54c3a688920ed56a84eda1316c23a77322c194149d9f8580ae9692c3ae997ea2ed79e3a2339d48b4178742732021fb1ece0f4f6a56c213194c6ee536f1f3a968e77503e5d4ae014b0a13fc01989713db7af0240f57965828d3999d934f507d2a78f0c2cd59bc6e738ecfb887bbc61c432f9179b495ff061363d1f46fc1f0ae6756ed92f7c294b6a41e734da20d8b06e2bc3c07a6b60f5d3d78d64070cdcbc18951f81333bd8e030ea5e617a6183eb98cc6db19c70e4eab21ef40f98ac1e96ecd5f4106f7938245364100869674b449fcd72032ec9250469d173455fd8d185b18bc719db9c15836d1f89163061d86a4ec7044f741a5483a554ad0d9634edc6836f4fd76df770f705127dfb5dfb74052a018cfdf97972b406a22d0702c2d750b683dfecd5963812b4247539c2f6b3958bc6c3ccbd800093ffbab4be309ca884cf176e2c40a4232cc39f02331eed2f12e9fb5e5a7440be766d23d7d7ade9f1414af9a6c06cd9f3b11e76d7fac8790a637f23873ddd6a2948486ba1eb96afd1461a30ed6edacbf335239fe8b1b66108a8af5b62a1b2d2260cd62a5fa792b40ee76b898e62db19ebf57afa3179463f38e9e3bae8fbee94a71833619433c87ffc95d6632781b7272bf824c4a3b11899cf5cf509bbd1a27c2c04210da6193459803bedfd33eff2503c5ad4ed083197321fa5be879922ad7734f9108b9a2d8bfb28c02e074d0f49ff83bf23827406d61ad55414b66fae0cafcd8dd58fb0c8ac8ed91e83a57a77053d2e3ce3496d2c8d526a878bcfbdbcf39fc9a4332d9a35a814388dc89fd822bb4b54ee6d54781f2c8f8cb43bf4760b906c83caa7fb7bc0f01a4f340c56bed7f6073a0b7f22798a763b1ba8dcfa6b10fabe15cf70e4dfb219fc90f70f97ac8b43449f84a9e64837217f9e14380d6a7a518e44e0113ba2790ff2a48f6e654c74d0983d97a304a8940be25a4a4b4b615894a08a8bab1e0bbf62406168f0d20515b8d42df205228cd98ca8475228b6bee9d1790cabc9b0d4d1e52e384d18b5609e81b5cb29ea2627ae673e90adb2b3c05d2663694a5f411a8e9ae6261cd590585b73791c34e63ba105f69f272a1d70e1839415db17e626e081d352b73a5101a838366e08ee334cc530297f586f97905edd82569721c4041af32595e0fcfd51a1235fffa386bd27810c64275020f46e6e5ffc358fec2684f7baf49e18036409df6f904e3eda8007369ee5e2ee8f771fa5103394bad994c69306031450cb19c27e93827f29a6d06a6f605ff6cd6ca182470732ec257e97086d1f1667e19d079f1ea19bc916fa180d617284208349541859a732c07e871421ebc69c3fb40efb56a8327599cd714011bb15f3aba0652d42f495dcbf91e3cc655e4878b997108e43815802e38d108a6ea91fc921613f58af4be6f47b8083bbe7b5a8b7c1b778e2b2b9a686da325f0f145a000923ee840c7048d89709f80b595b6664e023a3d64ca692c6f65b7705bbe21301cceac16dd06885c4320a11a0d13e763d27a995c2ed938e4ddc0a6b72f316d0bd34a0c571cb9522629dc6991f2fbf33db996e1f1dc161fffe09c44fa66f45c2bfba0bd13a794bd5270d5fc7891c7e813d6a982eb279ece4b544f6124ad071a3360e0d9c2ac20d1e6393e50780a0fcef65ea60be04a2417630d443fdcb3486b79556108f0fc27db21dd2704a40b1ee80bd0329c047393fc48cbf26dfebf7cb18626922868fe401f0d6eb5877d349ed90f7fc8f230e55e850c50d0bfffeaa5c7b5609497cd3f43c5a2b43160ecb4bc3c29b067addc111837bea9f070d59101639d4f126686a14dc7539d94b2c30cc97586d6f2f42008279fb00291220991b403312d86e0b744488130cc38e048311562776964052c48a48cc822a5e2fcd25c04d41655235f533e94c6814848a41ce332972344591e9de5b607ea29e3a7b23643896774282b522eaca306bde122cf432802ec19a87565851df5895fee00375ca24f0cf0ea68f4874b59c0f1c0da2ac43c38f50bbe3e2513631ac086cf5f40af2f8721506710805f14fd97c9514a07083921e7e94ac3a461e0de7872c315965cf2c9408f2b94d752d92edfb9237039d090b945f2fdd88894bff2cc30782941fa79f33505138cf2ce458e5bac01553210377671a759937102335513ecfd9a5b92f731315274605fa9fe52f5f7ee9153adbe74d3e10b06f7ae4565df4ac5b4724cd0489a38640d72fcbf76de58010d4b7c7224b5ddc132b447f0e282448360c7e1e9cf40995b964560958343f09c8f22fc6dd97538791e0643f6a2cb09c7476170d74c3784ae906357d022a75792a5156e4128989d8a0fc1011f94e9ebccb9c446d41332c116eefca9485a3c7fce647d1e399d64304242ff008bb53d50714e8a4dfeadadb6b7e0003b327444f119a649ed8a76e7e2780e641ac921f3c1b60083ebf5a344d53fce9f2df2cbc5f32975fa56a455bb810830a147a076c9a887c48b9afcef38c3fdda11bb5f8d317a3ac2e25a0e5b31fc6fcbe6cb276337fd46bb95a096dd893fb7a1c00fe7878e1ed68bb388eaf5a8b26a383e27a14e11d1b4247b887bb781c40406ec49c3435c2d204e69e5707088838e032fef1a90f7d8f073cf12d61026c6073cb32080a15b183bf7dfc941144af341ed4f11887e89abf37713ce84bc53754a81598f714394a18c25cfe7aa0eacb0ef4cec8d36afab037839ab11417e0faf976500670d1e75377d74d9a0904c740fc69545c2f737b28adff70b6a0b9457dcbfbe480489fd6270a535fe571f3c11a02f8849c282942f694fbb308a276f2524b6830e328b7897725c5003d03088398a59e5fa94a7202c6abb0281e282f886d8b8ffad9287b3f72ab69dd9b782661494c68fe159c8ca33834254fcae83fdf0b3f34c4240f9da77e128164c96b43be10d055177f3be4819b255e92078d33d4e13a9c09041fdff79654c1189d24de54042736df5fcebab2f62e0574fda8d6842a03ba16d3342d21ade1802ef14137d566bc65a4afa20ceec908c8625be8f1f0bde681a09d342c4453ca37b40bc7c15cc9bded5305cb4115484333096084a20e96d4b7aa058a057b61ef2c72baa12af3b8248eae7a9cc4657eb4258e43dd83b127a938ae731b3b8468c86cae9ca0ab9aacb64b8ea842457129fd313e5cbe7038bd35466fd8e45b4c9e6297631043fc9de94ac428b743a09734ae7dc76ff17061c1c3604447151ce9ef25dc6a7f1e1d8af2170d479626fee8858fa6e396ed2fe2496645a3492c02e90b80f9fbc06b51b9e0e004de4b2617898630e8e8523ab93dbbac20589697b171eb3924367b7a1be1dd484dd24267c39662923d0423618dfcab988b54a8963648c224bcebcbecda1941fbfc579a381227ac31cce10759ac5f4f96f1c95354f39de3ac564f4b0de00b7f9ced28a70c2935b827548255d5c8046a2eddb261bc3477588d95eabad300df071724d166084e0f2516638bfd2e69f2c054f59c4568ef1b1c4c2430d165f6d3d22dc561f54f3bb8839c294d859016f28ec83a1adf0a32746ff38c59a030841958893dacd9dda81fdf07f473471eae959c3de7cbf59326072cd6c7e6cac50782b4597fb6628c956cc9d8f6d97e2165c8c6f4b43ff06af0679c8ecd50672edb9720a415fa35854f5da9ecbf31bcb79d47fa8bfe41ac76d153cf3e9ef2cf188d2616f07d767343c7097cdfd8d52b029deca7c9ed815743f8ee29b52e5210375129461d787ef023400c1987b51790061ed09f6cc1bb7d07cca870ac3fcd2730c08663a56882c4d704f59eda9c5bef1ca8f99e06fc1495bbc7192ff4f1afe60160f0b4956b1ef9cbd09dd0f5ee05a47d684fb94dfe6766b5b4d28def9c8632b9e8e80998813e650d15bd14290efaa132420bbe0a6c879bf65ebc43b219b3fcbdcc828d12fd31a812c57f5b86a0d345a756985b08bac194cf9b9cde25e049fbc4e48d8142238201ed8ce93ccb285c7934ff46c2620231e4bb60818a4685ac5afdbd01d0af6d4b0c3cd05e45d7cd0198c1ad2e43336ab74d17ad0459a7e2633409811a0c78a98875ddbb8ae5dc09aaa69403eb70876a9c4d13586a5c242d8a51db31b3c5d64728f813c25d6584ca756877a7db5a264dd0618251c44de03aeae30a6261b9ba29ef07d8f7ccaece61859a766c7ec6f09bf02c1df7996e0a0d47670fcc31c75e7aa3dbdb1133e260060f4017b955ae85bd70f72a511deca4380587be7e14199c130961d45be20ec485b16c1887722fea89d22aaf076a51ff0bfc220789f22d7d6e778878db1e5f8c7bef584512791107bc6c0867f6fb1523206ad07973687d52b1b5cccf8509c3cc76741e54c80f27e86f403b420f3274c791120c40142a5e1fd120cbd23fd12bf65383f240e1d493c6f58d21dcfa02383df9bb834539d78466b7121377e3cd330f472fb7aa91685182ec26cce19f5d45a7c64e1b83c98ed9d9be882cf8349cbcd4af3afc396f22e3085877c16b0f1f6336c324e6f2b3bff66d9998bc015965145f3b5041b05eeafabe2ba20e5c2c01446bdf539fdf27c74b298baed3cb18dfb8b0f7b71fce83fb8cc597bf7dbe41c60aa21e1b66ad24985986490b4591c22939a9f40743cb730c56a905105b49c45363dba1b2b601eda8ad8ee1337d42f6a95165e6dfe21c376d9dfa469a8ddb202fd5b0d7e3cc331f7e602c6ed54dabe14c5220e2348579ab74c9521877cf7178a2cb0caf7966be6a1d37433adfa4de768b8843625add91af3fc2f56446d5237cd6289771c6922189c1683c3e445e18ae0113998e90c3ac2a189d1ba1c310ebb4d1f4257e0e9435c52c3afcd3749ef68a49f7cb371e949b49987c015514019828dea4c23e2c5a99687f9936736efb789f17ed104a611dd0ab9525a020b74dd885c96ee394bc4e6ba950b4b15e4f452b9b6e0e34fa33d46dd338569cb399fb0016f0020bfee20fe0cf02e4797fd1a7e0a7221825df365ecee7fe5ad43e0b1bc8be4f3e4bb930b84434940a4b7e186af75722cc660b1f26af1eab0968c04e6a7ec8e903134410c4a08f9148065847d5e71039ab3623dcd38f99d30e80dbddc777f6b815195597faee1d87e3620f7dc744c4824ae226564a9e4679acbee7035a645a4e6c37801e0fb8c08c020f9f7cbd89c47214ec6996924b2eb8088c41843d7c5a2941456d253f0f8a1d35755a1fcb4f084226deae7703f9dbd74e8ee0e3b68afe4d01982e49e5291308a919e71714b7b828b266115635f9eccd4b8e18fbd4b573e3b1b8dbde75e1204de36ef099494bd09195d25c9a0212f8f4443d15e1e0260bd03f2345bbfcdba6f0b193f5e92d44e6acd76d7b52385d2ea901246b916fae961ba8ed04f9bc736950a332798900e4b95e1eec8fcca66c9958db8de8c29ec02690df73f90d9c973ba818fd159678b514585a72ff15526928aa60db7b55234709e73ed4c0fb0f1560ef3076190540705aefd78f6ffe3e98303262bbff3438b90656bbe8f5bb355cff955fd63c9607726b25c771ac6e658fde6884eaa1e13026d0d76201d282d2c64fc1098a6d7d0ac9b5a11633c85975406b85e37801a9ef7efc267d4fba33431e3fefc2f51ab2dbaa360102bd1f61fb6416cbcd1f049a0ab28cbe1b8fc91e10f4135c8718566a47cf6403a3c1e88a601c0deb3428d517eaa1474d95e6bab0544b2e0ecf3a8f75b78ed75d0799908b8c14245a62654d65c98936c03244190a14bd1a6d2e031748a35ebe43e9966544d0f1173db5260e5a6ffa5554dde5d1c2dcbfd8f236289bc06090fad87a3c308cc9c5a6d4e01bccb0790bc968c48f6fa75e83595f7d7a0e942d5e8577e9e98336a80563d59a36d97df3e7e10b5623d7a7d1dde9800e897f55cb29f99ec23eb2c7d1d4119d128098929a1c961153a47a4c9574c2419c0cd197e641d0fd9f60f53c35d52548b4b4df41a1c4525029f1a8c3b4cbc270241a44d0ccc80c11d4ecdba88c37786c5d201693bc0f0dab312010e468f663f7b28910fdfd2e2debf3ef4e3bc6b1245c64e87eddfecf2cefe38b0ea57323b52c59605265ba84bcbb83020786e8014c030403fde79a8ff7365c6b80b1ccc3a18ebfc1feb5e493007d585e5cbae6698d56462b03bfdbe0421bca082cee768806d768b6746e2718b117d48a5dddd39ebc29f9f1d132c6b30d7b8b3816950b92f9d8f62185c5618393caf7d6a78ebff50da171045b269a7f2f1226ac6f0ac383d18bbf1461d74c1ceb06f2a8dd676eaad7c4841fdce9d84bc4aa8a50d74fce003ce35b3ed6c6bfcb01fb1618790a5172fcef4b2bca0d4988a211942d3dfe9491a122e5e3249df7023dbec0a521471ee112eb8ff31b3142207c7f95b3b1a1e19b7993edf9dbafe4a99eb924f0ea059d7c5d7c65fcf0426448af0372e61a6ad33badfc63a48c5184ba2800ee773b725bf47a4931c7a9844229b9cdfff787b577d0e310f8e5dd5e8d45cb8d70f41772b9c2843032aac59c59677a021550b88d052de1a27337a838666af3f1eb1fafe425718bbe773e983887b1accf5f7afbd0bec2827c5285d1547994361fd5d66f73a556bd952d8b30e538c3d0ad964316cea370bd00ef4a0d94983fd1d4d504fd3d706737fed00812752027698a05ee112e8d60157553d73fde13073e9db694967cb409331fd4a495c822ca368fc0b977c6804920474180915f83305cd700e0aa6aa13290aa655d4632cc75a99a3be45f7caaff754e8a0cf4b18c4fe4f5ad880026bbd476e20b8aa3c7033d57571fc64f511e9c5be8733c73611c63aa018f5d2a9794f02a30c93a7d83e5aaddaa496cfa58711f15e1c732c89cbe8c73e10a0a3337004aaacc0af5aa0ea6eef50c74c04cdf332a564ee0a5ef607f63043fdf7c3fd79f0efd59bb054bbb3a7ef29f1f3b81f2ef740173e2e7cb6e7471900b902903aaf0c96ebccc1252cff7c4c79a650faa3bdc311a68393592d0b5f1df89fa2f31394481bb7ec9188c15b12b41b20f2b4e6e812d6b2a564bd67061ba7cc83f887be24fb184e2a9561371c034caf29a72eac10688f7b64dd18a4c722d1262ea83f8f97e46119fe86da447970554835f052f013856b9f2a34aac777700789e84b2501dfb7fc38caa1f2df1db50a9c6fa7b48c95e04dbf45ecc8efae39be2ff237ec5425be511651cf3c6fd3a303a4a15eeead853018ab81466f51312cd60f122c4646cb135aefdb30ac7fe72e93b6d5ad94c347b604dd4e78f8d81fab36cc36577a662563204c58920e39f3b90f80ad77a30eb5ccb6602914479e41f38e82dd4809eb8791061d23ae8de0d6edd40c6f7b79abf95d827003839c810dd54b65046eee2cc7334900ce17d7e526af1c876c68d0bc6874c3e3050e96800d83a100c4105be5dd77403f003b3db04e17eb81f95505a2b25be568c9828a04b6a60c435756244d6044e30d413e80e5c3139404618e422f5f5b14d1e82871d48bc3211e2253049041fb9c19006038eede990e21c697fa6027d9d6fc85ad955b4f2f3f8ebce90202e143eb57f035eb2c260b02de6590ce67a6fa36dc030cab4ef55c1e919857926dfc259e1805870de27b8b2361d02336b78824f424e1e890c102ebcc4f208d9ffb2c542b23378abcb7c5b54af8b05ca4127412ce445e8a4fc332effa5a9290f192395afe9bd8af48b24047a9f6abd72a3b8d7f61eb651c80b05cc01309e888ba884c12eb5f8a253989e7a41322ca3aa5ace1b879cb5450d2f6a34a6464a407aed05b97e492408e67b278ddfa955e46e54014d073b8de9d9087289be3c0c89ed807922ecf0a4c13ed96532de07edc3c386bc62045ed7ce02fef2834aebb41a9b55888d13152f5f946cae37befc1451ee4a6d6c86a7a62e5d0108d74e1a88d395cba0747b145fefe1880369f3f6271756f1a8cb6bf837381ae135474544c1b733e0482f87b7985cdc2f2096c57200c6b0d21b1b8f1269bcad1f278845deeccf2b86ed89c2de733be69b42980c7b9fb1aedf1a40c0547a37014903712a18545ddfda093c5df6b6f6992840dee49fe467307da2fcf49f04f017226a96b010c70dadef1f40a45f3bf2296f8ca9d325e45b4e2fc670a177ba9d47282284314435ec56e0aab2b05352ee2bff35ee153f981bd4ee38be94ca34d2b3f5d5184bfe4cf41a39f53c2727571e2f0df17087436df1a9661c129bf9277f6d9685e313068dfcb535d19b4b1b64e1d4e09c48823b54c27a9e899fc9b1a07225f1830ab9d2f5be82447e8fe17cb542aa7d5334e48d3d8ec90dceed0b589c31ec76a0dae819107746a69a61316e7cdc0d4cf6602e0875fa87922f40366a6aec0250b1174ebbfa6b8b9df1459fa75a93a2fc4bc88063f72ac1617109b856df285ef4e6d1c0881b766de1a09c025c0caaffc392e01cad562c5d70318a9f95cbc815d17c56c8bca8620f6abc83c8e55f176ed4df53eac51604aa9cd094da05cf8055d93cad510a2c9ee990f71d772e43eb9273d6e14a875ebf7a72487b4a11a835403ba63fce783a03fbed8eaa1f10e47d68c258c6972e75988b546d6b1411e431c561929e179761cf80cffd96f8c5f54b1f698fce9a4afdd2566dbf87d7f45f43cec256f2fcab39d094fc67b02886d760d8eaf565ec3b083b57f39c96523550412694e4c1e53f892464c6a3d552a5b9cdef81203588692cc4612ef30f8beb4f1fa6b67e4f8a133f1471f410bec5e608143394c3898f285e0141bc41e31f84d10f10256da9ed8dcf11ed87969cba46087fd854b86be94c228c900b2de0be368e6df19146070c7f5b4db5ce88a602c89a398c228f30936eb602f6608b1ff2668ba1b267f5cc786265f588eb787179c581aef116424f178a299298c0206e13d3b4f05174707c44b3efdb5690d9993a872901d4152bef72c7228f29e5bd0eac1efd1b452aee4786cdc492fac300f34274b42f355cd1553b1360670b92a2622e556d7759bc794dc086b31161e0a2d10e076b5154d887822fd43806fba54e52f6ab9d0dc62b0fa64c641813a3365f2e8b623356ff36fd705bec100bdfbb77ee0a79901c05f5e094aa32fa8f3f5672366a7c2a3aae3686c9adaf069175d14d42fc55b47749d3d1b487f54971cb8ae5775f36e43c0e5b9024cc0ed12882fc50d2f48d0de1e4af298e2daba713f65c5346f5e9e3704d6b6318ac04c1b0b91f0063cd35451e23114884215cbaa3135debf6b7272311f2790497b354a676e4de1b08e345f599087c17e4a71a56cadc25b9a6f66917539c744f91cc19ef351b58dbc61ccc421b636a2193013cc021514757738762e152a100cb283e05b47385856251f45c3e3475fafaf6c035a547b744ef6e5282499facfed5e223f51a78ac4792b8e51178acb8c16329e48ba850d21664058e78ff10be9ea927ebf60af71bb220915db6b81685b6354f1d5648177201f238d87fd1e0b1053d2f23321fd15a8913cb71714622097ffaf61d024a5a922a2977712f0baebe6faa24551ff30f521d72eeb069e1e0312249a4440f49a8d1808e8da29add2814fd915eec31604593ec3589249bfa856cb79c29bf77896cafc376ecc0bec896fdc8a6793a45538b5d9fc2e402a1b07679a07144322b2fd9f41ee475abbe64a58efb3127627c59f5600c1dc463035c7fe50bade1b429bf6b8bfd3857393d36db5940b506f2b756be86569fb685464ab02f149a3bb04d0aa1ad338751a587b36b25a232c7258c7cebe116366c0e90f3853d657dd173daf498f5926835d2a6c4720c0892b716316145da947b68147549456375f25d670fa23950899075e2e118633159fa91c359871c5d9636a5b2b4786207ca57a7e9ec38fc964d2d1a5d0be497ee1e7395fa96194d98bea6b5174b550530ab70367d3842409c4de180cc0e7c16089f5ab8df4f568d7838c0b1e71e51efeeb074c5d2ffce7c87cdd2d11599f37ccb40bb13b0cc41ed3c52fde91570d03062dbf50d36caa402f685dd218029b3f1e615b2fc329bac1beb0544ced457c62b233283f92a8f4cdfb7216e28eab8fae0a7c8554601866970e2c7708428bca5380048633cabdd02ef6bf8f1988cf41c75f9980d51a1e03fc54c914217e1dca6485d48898cf319620bce8d89b4489a2407f51f17863d18f238105a24d561860062a0444f0f32ca3ec32295831382f6d55fb3d854844b11da65629b338a844101c0d640c37b6106e94ebd445c7f4e876b55345886f5005b5e161e63c5d96073af0534d5c07125c22665edfdc94825ce60de300564658ddcd9bebdff82d50011808d6ba815afccb9aab01ff0ef440442d55a749275dcf1342d3df3823b022a8a0ac54d7824e1093d7a1e15c02a057fb2e6df4b1b7ce19722cc7794526554e4b3a6cce9bb427a000d60baf89923de57ce574c2c4efc55596e6fc6b9e4bc9d7a2b7c726bcab3a470a8e286dae8bab366c22d4a76ba1a210eb5bbdbd5a46504edf2f1a6339650e7d5a6d7a724cd296c5d6369df26165ad72a984c0bec4403e6370373a8976c4943237ba2e82e528aabab3aa5c52bfc48c501d3f27956ec2586e434452f07aec416843aa9e2bc84098746910e578dbe40bb95dc5c822bf613ff930f7e179c237b0462093a8503f7c96fa3ef7410bd4e7ab79c5cd0ce0b46ae3b2ff33146fb884f53916d87fb4ba132216e6f4bb18f982af4a0aec448598273cebb0cb178eb310e3a5f26c024e49f7a8c4d1ed3e682cda8c648cafb858fd57bcab05e0ebbbcd4141977e6912bc79de099edc87044f17aeaaf779049a87639701912f66c8b5da59309e9067e009af38b3e536ff7eaf69e9ede4418a86401b6d8f38e7b47efdacebea9c25952e1c4135d9b3f0734738bc5a6758a57bb588dc8b7cd28b7ae1b3ff2c0cc026fcbe7465a2221b9faf7f6ecbf61c00126f52ce10737a9011f14221491315f8447b645d16794f7c6d4ff68990878bd1e8eec279365129c5a7579262fa3bdb81b5b69528ecc0943afeb3b7cb20758a67b75406f6e7c9d60ac5ece6dc233cdcd2c8c56524960562048717a3b248a46b22b4e783ccf52323c3cbec3027f6107116ef0214e10ece9402195f11c3395fb352aaad2d62dc2617526b6ee0f9e29b41b2ce52c9e124641aad1d3c4288fc2f1843c982099117ee23ac463aedfb52f2b8f61801e73c2c27d44a3618b21c4a4e530d9e8ab3bae4ddd143688066a6a4d7adf9f520f39b5993a8d94a3a89e43d6324cf655b6b4d8509a5176729764f877cf1ffea69ccf0fd6815ddfae4cbd29e9103d8bd30beb6136ce00a1665fdf3be55e49912366a32399a5efaab6c587554763b8d4379c8b70b2c07580cfc0974e96d3616f00fa2ad94c070ffc9dbaec0177fa23f52759ce0e87672fcf170b7e30ef5ab8e2a42da4509988ca299d47314080eff57ee0f101183c15860e08a8066e9776ee32e92bf0010e0f3740bec780bae907728217e95bbf1284c0ccb59978c903814a63519cc7af7e04910eab9d98fbc4d646c26d824f1a8e1af4f718b19f560ec1e016141224e2a8b4d2dfc52f9380a80870c1d404b8929fd9b1405451278f7c9d77ef12a0cf2369a0be12903c8ff66c8b4f0b438c49c176eb2aa7af97736a1ef2ef294c26247d0d196e308208d29756b4d3a35c8a510039b40e09a3ccac0efbafc27ce837d4e1bfec66f0cde0e6b99f23f8130b5d0a5751fb5411d6d1d397c42efe47050b8f190068639163fa5264015660078c93c9c9c3f5e56925d114eca5b57fa67a6c926fd82f88656f4b35a5c3da076069127caf6ca95f77044ef9ec07a85e3ab6aac754b9ed6966c66ccc71a243a652b7c66bde02414f53f7b528c9b9f01a785994e727ff05a3809da7ffd1c6c3c6d4b583bc26d70004561223c7af879968ac85df7c93b1e53ee52029cf901c6e14e5d3a52aa2996049383d037d2d07126ccf9becfd2308b32c35467bd18e1617409970b72b880150fba4076f71786ea3b4ce40eba869fd6088ab53b7fdc96449c177990b5a9c1decd7053a837d8c87a0bb49a6293acb463a5cce388b2e38075c314eaa0061a8020d44240caca186f9315662682411b1577f7ce2fcd43a80f33b4576d04c05e4a16fb7be45956d7246e4d10132853544dfaf09a71e25c18a0d5d4c835d5655abefad1714f4cb10125ab457d9cc12032c1e92485a1241c32ca587c50b7ed5116b69a08b770f35a902816d741339dc9c031b443d127784e07323aa1da309118e4e9b2c3660bcc0fe7913988e55c539564a7f699daddbc727252ead6386486c1a9bef6b00f18428d6c5608e3dedecaedac8086ab36429ba041d460e10231e49651c9742abc345a6107bc69504e84462354bea10a6d9de6c024772a8e08f431c6771df412bb06859db227cb280b89f17af8b8740a6edb45eb650096caf03664696748ab3a0700b4b5a8b4ccdc283c21a08ea67066b23b643447b71104d88efcf3693e77efe8f04d780fb097bf16aac0a23acce442bfdc824f1646275a8dda968758e48e90cd0af592fc37a825a7609505ee05010732340b10d13348c5a421f81103aef5c335aa721a1db64c0beeb42b1fe5f438f5d9949930e05e2a40557aba9f5d3abdabcc463012c89607ab720302f8153709de5957e285f8e9422ae8e30028909160c20cd8cec2dd8b4014a95781a294b0fcc0d142b54857124c32698a3bfff7f965056be2311e53a16cb6e8c233fbf5a2bc66dcb5326c07da0edf78b1874f19b736f53e9410068961533550788cfc87c8724e38f7a25bbe171c588f3898d81c36261c4581b7228d98511fbe39a3b64927c36481243e52fb0da70e585307ad78876ca76b5ba759900849e0474fc4b594df437a61e9151623766d2918a1be4f1f74c75a1b5f58d35600a21bab3ddb745e4b4c39db785dd9903828ae80be23dfeae537e5e19a4dc0acfd2d6887e7e4d933ba3608d6a3a24479ad9b11047d6b5c5d153bdcb972ce0e1641f35220fa5f7e0f8a436a260e16500c76cb00fca76b80dd80ac4196b6b3f554b8f6ca0b565a45c983d9c9121633755b777c2cffbd56367647028b34281c09f9b5df33671867f9aec06854df44dcac1a33294b82041f4183256c6a4a0a8df27d84cbc44cbb3aa8041cfb8fe52304867adeb19871bb82eccaff4b6717c958e3504414780f553da3f8f4b33ec5d51181cf388c35d15ab5febd4fdb4db4c4b37437c06fab506ac7ca34b185da30c4b001d9d5771937f12f9383d51394b14f56bad0b0478ecd7958d956f34b7bb0c65528757750bb88b22c0043232e888e574ad8b1224ca9a19956c2b99e07d4462dec6bf4df5fecdb83f3ea0bfade4ce641ed727b557c7ac401eca065a180868ca57db9c019801f9afb6b1e20271d3c1feafedcbd898659ceed50d199f6e471b1cb6ad903fa5a1c55202dfac7cfa9e140854e2ef5a7f0144a8a9cbf93874e40fb3032e5b2b33d9d3e78bef89190679c484826fe062aa72cadafaf44e8369481da0b0a44ca19de851b209507d29c767bb51494a01e0803176535ec891168e95b816746df80243b7b49c75f7ab2555afb1d2d889f8a051beb17f7d474dd43b10245928daf6cba7087a1b781fff1dec965a94a44938b574ec19a75bd64141f71a74bbc433317674c4c64ecd1d9729362fb04f306d04c6386057b3f227a00271d95505acfc170782517069f8922f13816fcf0f263e010256785bdaae22b22bea105704d6b6796044fcdabc16d050accdeb59206a0b0a92a0f151e86bfed5b1ee8aa68c75f3406b584c0a3542175b1562bc8ea36034ce33e1a6509caa22ba7f04e7a850f412c8b23e1cba57366a2e40e3e80719b129a61a2efc007200b620019e701c1dc78247a105cfef16a755854ba1eb517200b2c1e4a8fe2903734e1cf6d004b9a5faf95e37d49930b903c0c54d9bc809baf209500a60f6868f28925820b1e7e5876e6841400ade5a9fe4d7892ed7e8104d8cfff1ed3d5f0c62db63c71a8321a5f2bd6dd7c04ecc4174d70186f3d5631bb2a8475bbe1608d210cf6fb03427a2e6a3ea63b35dad82cc2ffa7fd8201d66cb5577b6abcf0549c6b6b698be4acd76655d6b5998f89fb5fab1ab75cee96e52f8ad63dee21d249486e3d119e5813dc9df9ace9587b067d100a469031984d4e273240febc645dda2e2ba6674d12be7bad928bb3981f1edadc2343b1960454944ed5a054ba03808c93b6778ae93de728ad4a91730b2c5d991fa23db650e580797c3d673f2be260207b21fa040ab9faebacf61f08d25ccca7311f6538108dd6ce3f5fee06cde546cefd9aa7b63c487c512f78216f2d20c704af28a7c46215b300a4812d8053a04455da874b4b351b00bd442edbfa2b75ca9efecdbc284bd85b19bd44884d9f237eaf85f4d5bb5f81a58af206a629fff6c292e67ae78dbe306cbff3c0acedb597e27210afc927d474c07a2d60fbf2ad05329f08ae42323e56057a9a2da303685c49d65eb100e6bacad794149ebf04ca5d93707493ec9727a1874213c56cf3f410bff8806d42f087222720602272d133dc9439a217c9a56c75740761b70867597def24d2776c52fd2060b9d453bdc5db07c4ea3d42e0f7802c7b2e6554b4ba7434a6cadbe26d74a0798ba00c2679188177b1f1aac9b545e854caffc4063be12d25c7dcda2530078af437523696f5d200dda549c2bc8038856acb96136bf322d6cd4c4487c9f565b8352de8e05b301ce6c2a98ece2c81fa0171b728115f6f0cd592447069c980eb94c0ac175042ec5b155d85a4cf0bbde51ef0a48ae6bdd73b936acd638fffec5b94b141bf6af11e31509cfc63e4b9184ca36b15a8cf86f753b21d08216457a21b3e8b0fe55ff44378a1f86248e475c91a9a91de2a149a1e96a03fc258bb75814336661a699d202d82c6d057981c52d6675803b89f20608f9b530ecbad3dd106c000cedd5ef69dd420590e40d5124f988bccb677b822b5d86bdace746d98a49ef213e4d1a7e05853861ef1f80e7c057cf721dd9e9325a3d8073f5c81039c2073cddd3619ad78a1703a34f0c8ec713a8c2d43508ddea23c0cf3faa40fdac49fd9d6ce4ffdb7642cea4bf1f5dfebbb539d080aaf18677236afae2df47a58d1d26ea264e60cd114328132cc5e2d3d95d512fa50bdb376f810877d6887aa23603c13d368ea9dc00b3cba0b131492879b8021deb84cdc896b854d085b68f5cf0b2c43b5485199a24f8da657b6e830f8e2838b1d40d5a440dbb9779c1d56c4dc01e4a577d45a82c2367375d1385ac1156a7e1a72d719272f8b65507aba63bcea918b399134be404ded7fc6eedc27d6bbf312a5e54ed1bd02caeccf768a2df4e97720080c44b7e0f0018143f2f0bb7a82112241abfd812469f2090a442f92edaa76ef6e54b3f318860cbb8c02fd19b91003f4d9506b0f1f45258511baebcf91f3bc4633046b25e37f4857e84ac4ecfac1307299fc2f1131a2d566b2ef1bc3359cdd64319fccb7cb1398bc0b82cc9045d452f85870962491227caa7f35b0c7647fc54012f3ddc97cdd3c214ab8b1e8bce89f214e60a89566d7abe705cf770684c2354c6ce7b7ad871704de6db38cf6043a4b25d7297a192013adf136b58a698d7f96616b25fbcc225a1cd3d81efebf5810af97cbd011ce67a968f691f3f9bd724fa40b801e45f3925bd41dfd290e1255b3841b35c8414c0b7ebdda2dfcd0bba1d61f77113091f4616985264e2a9f41c1bb613a6cb31066f957eafb88bdf04d7a29758ca4828c780a2f7418d04fb6585acf8370cacd56f4c1863906576a617e1494e914b8b8aae5bb30bcdab544f71622dd53586cfc0c071751f18fbfb678dd75d49daaf112eb45a383f732a725e808022f25c6ebe394556c74d05cd4a13802e72c7c2ec944903ab45d2f7166a7e8528fefe29731c12ac4ea11ba3a1f2e8e91cb4d641f2d2a324e1ce2070b8185483c740015f3319b80d019833a6f6816a1480200bf3a9c0b7e84fcc9ce3a570613291ec665f80eb22877813459bcf886f02b0566c3462ec19de62888a1525a6aee3d62408a8ca75192f0ab23942f44a954704ab139480adc4103db8780e95a4574cb7ac60fc58758a78c6494474ded7104b44c5a8f3f5299c0e623b53efc1144948443aa408f2fd0c904cf292a1be54efa122d652cab40ef71837b8e74e36a29456b06c41f094f9ae818e4eee11f07feb9644c68dec00574ebda37d50014e880a7985f1761115c7520a2e22f3d5399619816330c54f69308215439cce3abf28d0f27e1a849e8cb168100e476c6ec753dc87350a846a4af45d9c4e63286b6c91546123f0f29c978aa30ef8701746d3f799da89c87a1e20bc08dec9e806648ef9b75b29f756f00c520612f31a3fc5cf3d093ad707203da89014accf2a61d42011f17a0253428c175e37a15577b81596590406d0b5dba90a852e8e51b6aead060ccf00560d6afddcc68d6b2d8faaa5ed75c57632be5f6900c7aee3bc74fdc6a0155014911cb38f9bdc27fd96798eb6f60d671808d8146edb865b15e9192e06eb31e3e55464a84c727596f32580a21ef823c15015aa929c8cd547a907c3e3e0fbf26f3bc765cb44f59aa525b3c1178dbc16e6363e084c29c6d803414473945ad7d21dd8114d5aef5d70cf8d2c19930320b9305cb3edda07795340ddcebda2e82fb05d348ad5e9de627f35a9ded2b2d1e834b79930de3d3a6794e0297ee5cfddce9d99310d2965e969d7c25e275ad0f022e55c6071bd16977157db00466f9d67e8354d7debd100e02c971f5feb087d3b0775b2056d50c3cbd011d6530b14e0c64af518272df8460be93fd639b7e0cdbabc1db45f66542a4d96afe7467bbaad53f1effb63d4501917d62acb144bf12b1a090654007194887a993d33d73ed22ca8b7bb1df346ad92a52f3294b93456783de982356534be4aa145fc2314ce73b2ef35dd37ce3a17d37bcd1b739f4ad54604d7db24b06f6ae580c97d50aff477a05044efc7815dc4ad65ef74a04e7fa1e375c098530799cec9fb0182089023ba76ddef5a22ab1617ca6edf04619747f7327f512ffde5c8bf57c38712fedf2259fc9c9647872ef3a6b4400b13c8df11b705c7a853790674669f8e62c0b6088c8db410386079c8b44f5913bb70d785ea4460e153b8683749d8eca9810cb1b964d025464212c830ef7f22059815b907dca5cee8b06c8453d93d4df21a0db735bef49e7f3cb6af3b01cec2b02410d1b3b05c0c509daffeac3ffce8728a77706cbb595c88ec0390dc1e089d0708205d510e69ca3eb7aa27006b8e1d29b48ac297e03792eb0c3b73a45ed2a639c3f23e68e00353a9e64dd204f5c3da13d292b8fde175cb944ab1a77c1385ae11c305c547cca9776374ddf7daadb1acb1b137acf4ade9496ff03c2477d6638dbdc68ebd71a5b7863ee836bdff920f9df2fd3ba503597c48bc406e6260b35089b69587076c86a67f2757d8fb00d8006719031f54ea0bf0b7c426a3fc00a1e0bf6d015ac0fddf467aa46740c88b173ee96dc6bfa0a880407f765e261d383c10f2d19dbacc129002deb50e99d9b48607f5cce7ba1044d66158029d940c11476887b618a1d45814adae7bb38a1df9d207d276b5a0c858647a8c6466ff9de20cca481f57858f1429b540465888477cec1ce9f2e093fc2931213a50691615c0a268b5f622c64095a26a6821ea3408faf44f153495f68b8da02453232129409304b0f484e873277d8f447ff65d1269efc79ffb302f44f48ee342136b725c92bd98ac8db7027a19184d666865afc0fe0836f983a3608ad8ce568a1cb819d71ad7159b222eb0d4be1d1085adb9ed5ea371aeb92832db1402ccc46736e88faf6b142798cf79a0ea93eb8ca2e3b41674fe8245d272ed751b33a99f58bffb7ccacbc0f5b545bec146e72ecb512a6e76aa6cce5050b916a0b2fd7394b2ec94919ada6f04a79361f98852692075eb310f2cdacb84ec04385033e1fe3c00b753ff66b171677df3a2e633d0ba98964d707b01d173d81e898afba032c79e66bfe269ea8f932124526c4bae8369fe2be4ca1e39404817461755a228b1aa85c48251f1d53c3f0742712e5fd01524ff0531c988046a5021088110c2069565544dd0df7d6867151cf6e75e13225a6c64c46c0632d40bd21c979af21909dedf15001eaa66727330799d74253eaf86637c1e9d918649150ebf0b97ea905db40e46d98b588942f0e1d730179ad2aff7afe41ba07e3304efb75c7662bc348c1fb7dee1ef2fbcb45737b500536eb18cc10c44c12c1e18ae07c08439686deb451b03e9a70796a230db4b6bf017eb716bb19f75ce0fc7ebf26f8cd4ab960253312542b4c9834792820c2f42aa19bb419dc623e4b1d22a4c3bbf3ce3698c9421a8de4595c4a4e620e9ef76a10cc3c721cc858c4f0e70114e18fa20c018ed998fdbbecd9d0d4538c330f106db98f66239ef37b845e830a639594eb947a2e1d57d0e9aaac420adea9dc2137a48e87e3666a06c31c8a22d9549d1ae5fab4f1d30c843538490ccb78dad8b4aa75d440a43283d8a0629614b3531bb01c51339151290a3e16ade94bbfe8fa7187a3e1ea07a1f93aab294cd6efa3d1612d8d3a82941681170068d8264e9f54b2c8af9d45320ebbacb1ed952f00a57969e645ee07614ef1420ce1bcb5d3a965a6551cb0165df98c606692cc5a405b5fb104c24842e4072ba260f3480121467fcf1915c83014f581d6420de9e9725e4761ef502d166b30a2f086945b8cd9399044a4ba36e83b895f5b0901fad6d7281dc0535801f6611bc814c2106211c23ae32d221a8d35ea3f39a5526c4733f08d7de0ab1e95dd3ba85e702ae4e3a483e785a8999454e24f7730c15976d3b5270ae03e18d0cd6a10e83b6cf363e446c0a9c211d90a32d25fc86534ab2e83763e30b3b66772475a14d2abd94b1a90432bec57d8bfeec9a1384045aeb52d7aa0ee02d8a4a48aa0bd1127fd99ac6e0d7cde979b88e37d28d00d3d39e3f89a16d0df82ba5b1a5bde5d3ff204814dab4e97f4bd12267aa5044d3aad45c9520b2649daf6a5c5a5b5ad0080732c04e8747e41e8346f807fe8ebe8962980928e837806c9a47bc59140803e6e8190a85693bcf3d2b01a8f02ea9dd90c444f67f7cf1deb060a862c850266bd0ff7b07e250146f4d056a92a891cb66a2952d270157b10a9f1a593e902056018063cfbbbb35c2892938d9ec00c8cfb8a3c94d88a98b1eddc3c81246de0b657845b73b2aaa001ca2651308224128d36619c83294c3ac3eb8712b4a69f8705681d85f96bdf8288d8ea933d6a75920ef1b1b70e236cc2cfe314a49d95755e2b87cff3359e8c61bb38bc950fe2624663cd3919ce67e605f29ac8a1afa9b82d94776e9a8278fdc07b27add6c3c885b54c28359514108e22623d1e80765a889683f040f2866ac05765ccafd7639749ada3687c0752acdc7bc554d03ff14a17a218f0878ff8750ab743a2e4f0c551acbc52fd4acfb5e8994686fc418bed81cadeb3bd70e2a4f844164ed1c1bb589984759c4eb11863e6f7e3d7982b7d5b2673e748b6b2be6b1aba39bb7339f6dd4a52cf5e6a1ce4d37dfc25d80732bbf65295da4c19345c0273f30ca3e3593e65d20bb47ca1db30267920ad7fac15d8b9d22f661b6cb465b7e7114844df3ded5a402bc7ccfb669b6b764dfa2b0bbf67813d06e7546486b79770f78786899fa2c6bffd61d544074460e430265dcf02c979fcca000f617c0abab82c0c7cd1efce75a9b4aa84081915a699f4282651d0420f9fa1c4270e4b11c14c22f6e515fba1ea4d02177e72805d27db1a76988995a4d6f51dd4b078143e349885070206f4103f500ac961cccbd5d0d8003af1c82e8b72e2de0f8fd0e723db041bbe7ecd4327edba82e35ca6c8399a8c9d850f2482a3a90ebe497eb7b8c38a3573376d5a282595eb2334e8d597dba3e1a8f203a2dc23cb118319b3c475efd536dd5c53faa9939e78a256885747d6b9f70288488bc48a1e0edfa34b7a56c72a1e7cecad3c74a42cc3a63ea1ff099282f12b5e068c5f5b7e8a85b4eeb23c77437fd9229f3b6ab5d50241eac154589c12eeb4f9011e37103357a08745c649542ec02874bf50c09d2184f8dac7674d804802458fb94d50cb64b55777985c0102e83d3979edf2e4aa9046b7c59e14842810972e81e885f10770824bf0f1aaba8ee9f4c744a553f9f5ebcdd9ea2b09cb8bd0ebd6df3497d707e864b9cd0c4268773b2d62e0c7c777188ba75651615e15201bb559dea50144c3dbca89fae2c6326e64b7492e145aae83c64f95b36043be092a4ee88d33d74256103472a9eca72804f9e6aedf1925173043b1999ed40199aa284d2bdbd30c56c82ab6c35c7e86a6632d7e6499badd121f5da5e87d85d6a5f8a3c625b2516c4c37e01bd33c94ebea8f0b42db1a8187da01769321c0cda90360f888070a7390c88a5f2ab001141666f19aac3aaef438464b601802633044f7c480b9b6eae5d1d146d8fc1c702320ef6f93511539b80d02d20810908c73fa767e3adcdc13ec7d11ded28f1fe6d1bd063deaec2d1aa52f13d641b1efee4c6bf4f230911f75a8692a4cf10de301ba022f36c28a0f04283fade53a041faf2afc48c85c201f5da12a22a327bd8a41e8118d8771c07a5898615d965197dac3f5abd6f1b561f0e89a1deafefbdc42d6abe35af0a6fdd192824a5f8c7e2cb3e657059be3b8a7ee51d2200b3aeba496bcf1d8365f7a1a99583c88432e95259687d5e224aa1053ab1626831c7d9649fce48beeda9435bd3d2861d9c239fda7f3dd902d6707bef9c6dbedf38e58c5a3bc719ea3993100d382bfc2b69ae4ff22a1b8d935ec4c76fc0ff6ded9edd898ac97af8efb6bd52532f867cce7eeb572dafc4213500b1d5f3f6a76a3e286757812a877d5f8571cdd1146ec2050d6924b69f5e1b71d39268b9661426bde027d7926cda738dc2c66c8acf393aedf1bd2cfa795ea7bdaeb3511dee6934dff13ad5e775f8e6bbaea6788e4f4b78dfd135aff374b6afb35be5718e4e797c3e837faeb7af3b4abd277dde06afaa764e9525d0cc66c8850815cdfa0c9f91d4bd4e650945617f9b14e0390936c76973ed3f450c8260623d2c8c59e346f7ae703bfaaf4e250fe0b7893f7bda258ca9a548cb7e553d5a07a126408fb9d7b3bdb5c21d44b2bdf6973981f8a743e5b5c9390f02f49e45c4fac611d50c1ad8e6c63d932794381fc1fde98d1a3ba89bb2fe86bec18d8b1148517f3f67d70baeacf95f2822a516fa6d98d4a9ca5d59a0298c8c7d7b9d641f0546de6d7ef76e5691b0847c9cfb3f34b04fac830a71366fb0609940b4b5d2e81bfc8ee55c111a0f61531d956e5f46fc75c4c6841f91fc84e1c4a63a46273d8d5f52691b891609c5f60a9d20d6eb98c73cfb6871e951fefc095c9032cdf6faeea68163b17556717470c59187cb0eb310bb8b6288b81ab978584c48011507f351f4849fb3adc36724c980176b61b62466bce817f6bf50f21b2313f9e0eaa52fa8f8a797fc08b102772460397c634926015f01d86b53ca344dc2cacb1029df2924aa7b9e429ee768dc230703a43b9b164064610d2cffa3730ea7907b5e530631286e84b5819c4d5cd0953897156e83b52fb0d3cdf2fe2d0578912caf5d86322a45324f102095c94c423737f99e89a984029b4f9bd21924e2a1248bac6156fc2e4df569309faad396b616088d593b8787401e62be46237bedf5e2b26df8058e504407012bb384206b9105cb2f5c63e82ea77122950e284f7d6d649480237c0efa190ed910fb51fb57070e3a78459580a118a5b98b002dbbb9aa7e7ba4f3d4a7cd0161c87e837fe04d61ae64836338d461353ba9e2656d9f9d56f0e1c5550ff7a1354d31858982b80d85786d61924031ecadd978e59bbfd6fbd6b1dbb33b30d032296e7b533c26f1ae8e6fb6684a140a85951d9130c93a335b2fee997c1497b0ce52a8eeac2af11c540a444534869c81da2148fe9e8a12bec30cb323cacb232047b5840b29e011322eb1f19166715520a9380fb0a0117675273096039d8adf2119f2704487686a8f644b1df6ee46bdd5f5418c222b435249ab5d5410a12ef2bf568c6880585ded574bc85f3d986e7540afe30507999ac00475a2d7b7f8ad609ddf034e2221458d0e0c84053066c68818d0b4f95b4780fc664efe6fcd56989391267cf6593bb67566c39265c9b03b8e9ca8dc8a4be2663434bdfd6444de70345f4ac6e829a2075718bb3ea7d90e366d5b410da5cfcc4355daeeffe5659540b41ecc43461717dd9d36972e5b93257be7e158c85b8663c8283cf2854990020203e950f29941fc43aca4cb681973c11f9100e32508138150dd6a22393282f0f1b465b42d6d7bc2214ac306ed27542c8f7e00ad29219a4024af34965e045f2a65a608ad53bbc8a473ef3e5512b1babe14b55e7c74e2e4118a1b92a7c7e8cc29a0ca6e64c44302bdafcd26595ede8007755183d020ec405f3b64057cfc5a05aa40d21628afb886feda0606da5db3d8d4ec8dc8041d47ab2ec7942b5e209bff2a98a67a215ba014da10296eafbbf495b8277efc79ae1204335280f2565eb95dc735c875ef2594bb94ffd5ece6bf8d2a98afc81d4e4bf95fca12f97911a2e558651ab49b386d3f9ac8054d34e15e14c29248c8216043edb653dc19393cc5697651eef047ea0bb6cc6db3827ff2130b70ae15d63ae1c6c56499cb40ea4f554698597ba2ddae1f36be52cbdd3d9934c6ad640a0cf0ba560784639bbbd5e0a209b04e3d3372c1c10266e467bfab136567f323cdedc42ad40eab8e69dd791da003936b3258f3312eb66ec8a6dd7f041666ebee7423e0d1e147f56c53b8ce4951dd3070a5e03bb94696f0e6d9ae454bd032793450b4d42d26acce229b023da549f646039c5e5e5b047623070b2861937f1e99126bd2879aa6bd47721f8fc8887b0e570c6bad865ba963ac4ba84063160be260d4855deff614d2ad30557cf1c85ea6302d21a0d54da37ab60673696c6065147546152c080eb82a15600d1c54ed9b59b35e6f2532c12c69cff3dd79073e6c8b4a0e4983375066681de116a93277cba91b98209c808610a251997bc189088bea683d0749d1728b078fe2e5bfbb8ba64d4c0561595dd095919522d51031c1efe012116d481dee74cf72b479b183ee443175c81868efc9a54acc17835a1d09a288b5be7b5e00d7ae588d2a977e4a8857eb5c51a8e562de2e0252751e0a8bf787e002091bbf739b67eac852d8f44264b5b720c26802bf634b847af926e2ccfa1b441df1d94cfa05d4140937e58753bb35baaa05d926da32a84b20459b409bbd1fbcbe38fbb798f2f45124502d33bacf06ade9f2d82ec5f3da45aa0613a106f76231673f11394fa346b95380a9ffc790370a0e1bc46faacd06050ffe0dd464f3c5f629640cb17232430b5af3573b4e16fa6e7fd1094a5ac91a973466803aa2447a32aa4c7c9270159a3b9567b5fd7dfd6f32e19d9dda88c97988a74e57b8cce8b9f2dbb13c4d96f9f3edbebf45bd2f15470da46c0b660e8b030e228d483dc08b43d251a2fad6ba0e9cc6f3e746552827aa10b1e85ae3146fb61cc15a17cc8b43158c1f3c2d7d345b0c6a624f54ad6b2e9ec20c4dcdfcd41b07a82dd8c3d3b6df2070b76d18bc72625fdcfa62449f2c9b9915e24eaa5d03ea3e0aed02e928d3adf7d6e8d0a12937a97ebaddb74146535ae5b268859da870cde762fdc09d5b3309603d31a3944361f815a96c91a98718d1e807f2a5e2b04c07e209663a68a2a6ff64ef0c78829c406c67496a6ab2dc10105419a72e3ee97a393c454507c200679c63974e997580d99e6929aa1200f708f93182fe061592002d04fa81b3509eae1565774f9f46fa6f6c0771021a1eaab22edc46cb78d3d082a0dd6dbeb6cd7174f40425093de41b4f3a8c0d6aa5445b3dd875c5169c3e558518162b34e479e3d43fb9cee751dec0b30121fe221a72f4baf0bf44af72f415ef1ed6965cf8c9e1d2cdf4ef4f3c50c81a1bbb6fc9b66e0c5aaa99b08d9d22459ceda297a230df294451565652f22127d2c144600c21598aa8c2696772f19b70a1af95a140a16438678a53a0592e2db4bf2a84909d4328e4319723f32101872d01c2dbfde726683520f1541ab81151cac2e9be00c25e0bc5c2b37246e23681d1f3847dbf3abee123402308f4f19df891a73740f344afa20ec6bae1713b140612503f62917645e80ef0d8d1d996705ba80507e93df258ab3d3edb6a7c2803adb0199ebfde53dd59a38a0ae07c2b0cc67bfc3352eae248a87e824e31483b5b0b850f0bf9c6d25df5b1edadf19e201e24c5f70d7fa58e6a54d6d2ca9f2d7857e3f2dfb1d0e0143048c62b2a61450db359b349fa357d974d38fbbb518885313ee31d34ffceeb9a8c377948ca04eab626d5c1e4c7f508003c0c42f0473263de6d756da964786fc41ee4a6ad1762ebf77546ddb7f6d00eba8cda8ff66ab90679d4905ce000bf67e362d18cab987d150738f0efe08ef383536e37c3418d29fe34e81e801d42325e1f53e8fba091bb4a09da46d693f862201e313abe19d948f05673b4656e156e2f93fd2a721e150e89f02f692f37e176e9e4a42141e4513f1c156a9369412ee433a43f7aac8e91a7620fe770598f6a548a9ae10ffdf60380f2af9a74af2b8d487bc8bda6b4e3dced1fedf25a3a411e7ec8d56211a82e7f584491cea05ecb15fa5c1a53e4118e4331ae0ddd3fc7e31d1c2166f6f174a6a31c42ddc87bea2ec43bb6d83b9538fa4e46a1596ac995c2efc350533d17ea7a371dc73935e2534f7185dc60ca68200ae5ef1a7e4c247c19fb9f16146526c87834eb4a3a27796026a8dcc46223a4334ac2455ab2a5a083b985bc9214ee3e5d6fc7a082920ecc76876a85f81e919f817e153cb27fc4c6d34a400f65a0bd009c2b1b6125cc9a9b4de1d23ba414337806e40f8264fad15e8b9bb3d7127e6e4cb898edbda6050f9fb7256cd9180f3d466b611d2a60f5f665ca5f25cbdf25d2d6ad99f9e05395ee23d2f4c3e715400df8a33c31b56a47cfb78008c96b7e082395f2fe8662259ace94479382c6cdfc66957a153178ccc2f2ddccb5f03405065f6453b76f0f1b2d4e84107bc25c2ba0fbbe4cda14fcfdaac71d3a8f61a4335610cba88b1e70c4475d20c9cbf742544e0345bdac8d57dba0c73a74d3d5c861cdd7747ffb953bf60f087f3949b83de55085ca19214b5b4dccb306bcffe2e32b6de42a4587ffe4b2484977678a7b5716fc4d02e2cf864fc4aea171229ec599cc4e53e8b36dabb7564501000d761deae6e7284e64e99699466c641da4a8895c1139d639b6e3ca3759462c85c596bdb2bbf8b80bb1570ae31d173d810d5d0028edd81bd9c4cef9c71f08b9ee951f58f265003a18ee716fc08eca27ac7059bd0d514c22c3438163d8cb766a91e1e6721174ddc1559fb3be56c6305c24801b5eb372ecb63488bc325802ae583dd2120dd152bc746da678d9e5362020cecd8b1f2a68bfa96adb1e1fe0255ae53c2c8dfbfc401c3473809cc5f49a92d2d8915587a84de5ef395d0520cecfd5424416253fa95d4a2d90998da824b1e7558d4d7b0e6d7feebb9229a7e6d9ee7c4fbd8afb8b9f11887815eb302d2e3c1d56a0df2e94b0167731bed347e2dc5a4e046008d2d9c7524ad844d8a9b800c157d46fb9092bb987ea48e18c1c52cc8d7505619a772006afe7dc07b9b3dcedf10e98a1611ad9fe76154031de9e72daffcea6aaae41b25304e497f6b95251bf757af0f8a67b887c14e033a987f81bf9e98279c8daf77937953c07f60a0ceb51f6e81227131404af5dd5687e3ed761bbb5b940258e57923454d11748cd08819bb724ba8ffc7d79815af6fbf6d88b56407a0303b2a6464aab3441290503df63a52d401f57beb7a77ec4689f339454e89ba2c71f3066563555ae093f02c9c46f1da2d848f6645777af530243fbc712fecaf5166e49ce9e6ad6780f2b94278c3ee0367468f541365c9a47dc85af57ef4640b965530efaf125f4b53c51f59cc800d1cdb757a4fbd94eeeb1a8f5e0a006813a1e2592930c4b7e35592ee4ed415e873431e57ceeed57db7170e7b3d5eacdfb527c09012566da4af2b60c12772c02642313d8e71ae5e1fd3a193e814bda214c98a1943456623c6441c8e610562d8cf4b4202d0cb9b655fd6738d6575b8f5730c989e4442d3d4f0bbb9e3dd8ce1c0028b6a6f68c6bde7db3cfe0b7ff2df64b05ab14dd47edd89f41e20d3e9cd84bd48111b20b82875dc82fa24c58582f7fa9ab3a9a3f4f968e14edcd8f8b3de15611e2f7430b52d4311a0b2d3cbeb1fa7fe9f513068620419cf98887a16e1ddd287d2bb68df63746fbc3dfaf44e9ebd67bd54d7a792c27988d923a0b9da5b79f3199851766ffb5721834ec3e1c5e8491ce3035beaace6f8db0eb6bbacf749ff734ec954458c842c6a5586ca466102870bd26c0b305620bffa01cedf6aad7aeb1ccec89f5a01aa7143c1a6275f6193d7905b7eb6c6267f978bc8c27f4bc74b8a330b42ae15641c9b6d4b4581f642fcaa68c6dcd2352bc4e9f0a22c7a8f061dc9e9e33f055b034c3e5d8f00778e70f5dabdbe1aa39af1b7755eb34cbc8fca7974d7a3e7e90d24b02ef9c2c9c3f8f09afd874ae442b70f12990d468fa33a829c4724136a0e5a4d1d077528a1e65b9c122ef3894e034d69a08ac438f3bf42cd16feae5ac0c0a67aeebcef61da8ed9b65c52bd0e5d5fa7dc98beac6b7dc28db02cb93a6cc0b31d499e37d8a5aa9ee69928a00905fe4c68a2f5fefd6ec52df31815eb5c448a6bff54df501182d0e9451b6c6b398afb9a5b8e76987183cf32628e147a86447f1ea5cf3ea2a47f18c8dd56fdcef606b0c9b29512606327df3a2c41c6bd9b1d9b5cafd69568b8c4b96e1db58a77d8917bc88ade1267b197c780f212a02e1ad1428c6957dcceebad31c60086a3906671bd616027943885e97d296eef2ac6c34891902a245c657abb305c306ccb133379d36c5c606799a7fe47b0b0eb2332399265148c99a3062ca2701fda35c444c11d2b275939936fe5202dfba10a0a528d87efabcc46e0afec265d554735162433811a1ed32321d4a9cf952d5e44b6a0e4cd5b9e28bedb5722c6b7d1ccbbf54e711ec2cb853329b761e707d07afc74248be4491842aef35904d529c2ee323ff65bec2fcdbb0c353ef00c1fd27ac0887c9e08de3d5f541a2f40d3203eb962207716343dc9e95aed2a3c6c1e5f7b259b99ce438aa9e07e67120b24ecb4c29315d432d8fbeebc8ffa0c4f488a8db2c8a2d7cf3a6a8e85648a1b8c4c13904b5eaf917f7f6165fd15026a759fabb9ef8d8c31eced98152ad569bc973264ccc9e153baab4833b76419fcbea4fcbdeb35f3c3116eda1bba9848b339cca1e39521f6a6c471db1d56872ec41e948a24886a25a336cbe82bbc7f335fd25159b8e300662c4747cbbf01380dd26f502e7c1dc1fdfd7ebf9485f03e4e104e3e627384e8e0061f1472f0c237474f86520055d03c10f2d9c786a529943c25041485138a27367c10b0106cdb25e518e0edf929e2f4d9fd3faedad69552f9374b22cb2769c12d4525099ed2c63a9f068dbcfcc426cc8e8ffbfbf0b3bc989c6d74c0a106dd061a4321147cdb3a4abb388f52dab593feda1c2e2aa39fcd93869278fda708bb429b4cd0093532a828b72eccf316daf949af8d9c1d8b22ad41c40c43ca18eb4af4a475eaa5b823063db15f3750747acc742a1e98faf0f0465525f4939472680a5b8eaa908a3a998e5cfd089c64b38d90cae7605cdaec63798b983fd49ea39281bb1b31a450880cbe30940d3338e29f7bbed08ed05186007fed8f602ba733761f88bd65bbe27e3dd042ec6ed63957165b1f7411720070be5cb4c898841a98834b65e650197e7db48665992dd7961d61b39376a8828768200b62a5b23f37d61d15ddc456fb533fb7597c01d8c92d5e46ea23fcb9845f8143531dcc4de8243e11af46d06431f5cd4d5896e981b2c33eae8af34b6e7f785e25637b66e3a31dddb67cf52edcb1092c143b0efd6171cfeb23a882546127c583790cba9745e22dab16e51e72047713db551663c2c0953ad8ed8465fa46d05fa6bd7270f0b14b18386be4712f0b461fc1614d1e6c155ec8304e23c319cbac602c1ac2b70dcc7d674b70e4be1abd36575cc11db6b562b0f79bac4fea77e58c5261451d50fdb2ac18abf0a68009358cc078b49aeec6533871a4d4f12eb95ec8f1aff02abd5d4664407ef45b8df3b95218c3a4a003cf27353b7ed47abe04161138efe7e6339363dbc337796a14e619de8b42585861ae58efa02a8977d882a6fc993cc43d615a58f3f5d156858766cb90bebc6f001b51607dc0c24c62bb2527daa6073baef840884aec26cd4725127c49eef0aa26e63bd01529b40c0211a9c1881140ee8ac49fd727e011dde90247e14229e7ef965ae081f4060b3c2b5daeb7e1720036a168b6146e353a907fc1bcc57db2c9095101b695c1f729219734e0e72e366b1dd092739798efb4213e463a206c48f37bf92ddc40be211413751b5058a519974d008ae231fc3c6cf1cf0cb6aae63dd7291a45aecfff8665d2cbbd45b0e0cc4c84baa37f23d9341a665f10d21552977cf16111140314f22682b80858244115eb6f408caefffbca255e149b942abacd162d550a1f0e5cc866b480e4b4b20fae002246ae3337c12bbbe3db7e53d601f68b42154dfeb74f9c5928bd648e1a6a6e6c537eee9807069d62b81beb89c6aaa5d164ad8a63541d0e54198292cfc76dcc3ae6880244b43548874674fe6d2bda921a628f74081a94e67bd673a871b01437889b403a6c3d58fbc9d09e07bd1c5957d3b8c2547a4686075b3769964ba398bd2fcd6e39d06d9eea61e2f0a10bc3295b632591ea02df9db23e08f77a4b1a88da1824b1faec5fed44569f109d279f63fef17184d52920499204e90ee95afc24d7e55e9d89dfa31810ac3fb78888d4e73028a4d25ca47b1171e22f18142b6e8610ca6a2c933d87b623be4d8620df2bcac0ea517b18b01c9bc664b2dc283eb37afdd355dc939bcf672b7381714f21c08292876a5a7ca2111152f81b86c29bb4b975e289592ac86d141d0836c160f1c9615d7cd21dc51768ccaabea8257c8516b136d3caa4882a36a1d1c252b932409204efcc6e2f0e4755ad683dfb77df3d3e56868595588ef9506dd7cf3bf86e5c0147c1179d151927783b7166da66703be13df2a7b1446d1e95786ee9f0eaa7194ec114d94ca9573c5d15d422ce2998916674b326cff8babaeab3f51215e3f4ce8ea10e02ecf59466bfbd48401f1c260d4dccc689541616c5ba09f581587ec1810134df02f778e827e517bdc0536b9470c4a0e5f67b4ab9aa01e28d14cacb21b8120847e2a6340191aebbc2614ac1d726a4218e298ad19f97fe04899ce3c918cd1ba8c98ce77dad5ac015e18e38431c270455d3421e824952d2e943a627b68c10c01b25007e3d9ad627bee1ee424b613b2a22b3f14cb47b435894023143a8b00ff05b8d0f60b4ff3166059f57b86c5a1a13d2f1a622079d14b794e04530f6e4a3e50245124e1ffd033d2150f1500b3cfff836441e38ec950d3868017db5f9bd1178818a5f59535efa482e073078403c2e2e51d77d63fb617d5d7051de0dc2c6e00f9077dfc3a662a4da37253b7c22e75af4206040389a67cac02a664702cfd697ccd0caf16bfae1ea60e188974ad3a303c906d96c90e421a8f5c04ce57a50b48aa3d0d3540b620572c7d1e5d637af464194d663ec59e734f03d98d9eef466b5bde11a1dab70325485e9b0ffa61922a598880d5b84e4ef308b825aaba5d5ed8140023ce25cdf6288889cd449491b0599d66ee018326be60f7d0ca5d463b486736c72cfeec2d704dd952ee1bb8696b49f7eb0a877a1c2bc299e91fb3d45fb3fe5707046cc7a20abc44db0c6cea7dc8cca0c99fea6288bbffb401bb9547a01d99447f64121d6b9234147b71fb28d7873cb74598406491e7f23d05756e00dbaef003565a1350776aaec052f7553d6995efe2c193f683fc8b1f4e935687faef2382494b1df562fb83d8e17808a82641ef3c230649906182bf4be3b6214fbb306556a4dd3160f7642d71715f59a5bebc2f94edb9524a496e5fb4e3197d6332c8158a890ca12e5acc8497f73e9ae03a1ad49691a861736a82880bd524df6ae2a67e6c0c0eeaa94c19e55f4fa6efbf14511f673a3766194ad9264dedab29e78cde6df081a49d952ffac620871839a83c644b89bcc17c772f13d5a491d05bca32e9f9eac2ded25597e3c823f8472ed552cdbe8a7a18f081b5d1081d43a80542e5a9c4d44f65559697b1890d96cc1068771a0f99324499352670ce94a1e6900d8728539ba4e8099511e50ecdd868feb33638e678d2ca74564541fbec10d8c18ea2369d9b69a6f021f2189ec2533669feebbd9b513ed2f4ebc14671171b028f58b2195718f5e0e01c4949795f4d585a3570e74ea66c8884337a3b4daa3e2b80df8bbe2b2c745ed8691c811920fd7bf44fd64808739ac3058fee4a30663ee54eb6dad770588d69dec87298651cdb1cba4353c9aa3236fc63b24518d50a3b60182784ce09f2359fc311ca5d20861648f6fbe9fc88404596fe84d143126895ac40ad8c54ee554b3e15f90226e1d0cfd5e68dd94a28d1a2dea06888dff210d065393c674784d6c35b26ffb0dc20bb58028c6df4fccc2113bec3e970c6d1c45aaa71af45ab3d8e4c20010a8269c47854ddb7160964917e3b857ce52421d014fb3838a8debcd20c82a498b88e1204d729e5b2a4a09966dff61e7029b3172e933800166d3026917c9d5e92143bdbc3bcba5f31ae9458e4a1a96e8ea1055b37f822a9a15e7d9973980240d2f0f150163e9a3873fd8ffb3f57dc711bfe0ddd8ac9dfbe0c47456c7ff95b33a5e3dab7c4bd0ff09d44fe8aa70070d357443f9db2ac1f552ec3792292a9a8104b70c38c34f39edefd32d6205a79be5cf65f4e896e8da917e5a142e57b1644fd5d7f75b1db668cb8a4946ada81d0fc3d5de79eace3f77d930ea5741164c6b563b2653ada2cfdc45bd62d7966c728f862de6dfdd0c637b1cb5bed9199d2024234ed69a18c37dc99fdd943d8654f796b2ee27491fd742909833f9da5307666dd90b0519ffe184b9a2e1dace9a9786c8bcd000c41ab2ffdc6fad7c561da57aabc97718cdaf945a0d6681a4206e94cde91d3775c5c0f5d5e423b00255784574db5385b346e1d63600c36ae6efd95b65202d03c45569bc43fe8b3a7ba6fa46cc64f6426127e86cea22aaf0a93be83ca759f14d3b0989c7781cfcaada4b1e0e2eb6435e58428d5f31a54fec14ee441b4215879e5d1233855d95dc2a1d575a39a118504a5be9ceb6da65c6f4717483a00d7ca7ad0d1123d85bc6684361908269ab63f2ea03501c401099ef6f003092f0b38ef7a41b449addf73b5781d81cc5b855270408347de51b687ab8a28174a5429dcfb67d84418813e92924efa34d17a8f808e14e91d823fe07f9847faf02d0a7f22ad1286be8a8aba834e74cc606823ba1df05677a0c37cf11dba7a02e14be9b726e73fd767abb58b06ffa8b6e27913c4a4d117ad55f3512169148a01b4a61e21cdc7ccb2e73015fbbc09c3a9855daa32c65b993fe2161047746119ac8c8fe35c75742903118e1470ae6052eb23b643b255a8fa9593a1d0d889ac6766c5a1035b868e1aca5c38f27da90207146c11cefd398defb6605e74fb8c46531c1fb286ee420d541c6cccc6dc1d032741a9bdaf177b737e3d4520cdd51df1d9adae9e957b58e6910ca8690a68ea5d6b0ac1eb6f164ee4c1dbdf30b35397887b52913c23f477dc73476cf7319d78cc540c927a630902833f177bb70e4a50a94dfb53b1d08412ab71f7091eda1135ab67faf6ddccc2d0b691e6038d3bb9b85be885c59f8676dcc41877f7081d823ef87f26d147fc612e77df69cf9013f8b97aee13d9b754912928d7808721cc07a4a16bc561a09c89166c707815475338d1ab3bc9c083add22e0aa8cf38a5942284f7772721c8a9c7d53a7eeff4cdbb5bee2647a02f6c1f32f72a12a970592f19ede6f190894ab874228e1b1c18c3f725c98d592f38384f9845923d3bb634d649c1c1b247a2c13d97c5c5dc14ea3456bd70e7b039faa9bbf7975b1436828ac91d0982f9d4adadcfc7106a232356b0d3ceaa3e909fdd5a1fb84d4fa9aee6291ea26ed35d42d5a9b79242e0652127447921ea6170118d9f177cf712a26d7925fc6604feed91506da9b19878783f44eec0666310a93ae2500a21eb97d5d19d2798052356a7b8d42c59a769a50c1b83d35b30f527986fb3fd3866516a0a62d475d331eaeba767552a68f4a3e02baa5995ce16280b94913dfa8ec28ce03c6b6e0006829082762b2943f5c1f3f6869c0234f211b040ce0264199d3e443a0986f0f1c0dc1d0820ed3c401751a2d611fce618083ad45f5086ce8b69a7be6764f974bbb39b256a116e0f9158f35b793496bd69cd6827cc4b80105fc6602f53f7915b80fb823ff0e626003037512a0c775a400b292a7556861f6c343a87509e6ad5c9d393b616f9ef76f91d81c60e8f3488bcd96f9fe5401865a80b8a64c5529c5300c0feb6e1c5a6cd7fd467010859a6557f955da5ad3f323a5124ab0968e98f9e49256bbca4b5c464b3c081ba2be0f940b3ab1c3772a05cd2e9d1b1f070203967f81d2e95abe0fa420d69467deb640ed3cef4e84d72b448037f93f2129d4e71260384dc4fcab24e975ebcfd73de654f93d5c98dc390bfd3905b9205db914c76250611db4d1fe5e3362d9b0dafc8cd58deb1c0373df5feaeaeecd53f9e8d648293f26eddfc7696c6f1c0debea5f3855b4daa1d656e914039efd7966176c04fc256ca56470a57114a9bf011acb01192ae426ba31c9d4491412acbc293896329c023c45abf9bde31898fd236532cc5bb8f122eadbc433c28174f58660e832cce97384ac6392cd76ca752897a52b6d27dd72c2b72355f8f6b5b336a5901a004df1f28e800ad5ea80876d21abf93336f8836c3a1ecdfdea793ac1d73d2163f1b0e30d6f6b455769955b947e654e5fe4600fb100be8537381a946b40a592656cf2739053328b162a5dccc30c81002a07df65348d650a1daa8509cfe4bd75355faeff7c48febec451432918635ce313479531b8897edc7b8f5e2731ab4622601b653103eff85e036adb794b44e836c34883d2a800d5612bbe8658f4a1aa612decd0454c0e3ed71698e192437fd2b4ce11524034a73462c319205b4bb02b0a5f128322185a055e80e293f15554485bc022a012b9725e9674a4339ed31ea8f3d095dda3762c91641030fe99d59f634193591980b3d4905008b7896a97fa7a202de73c96776a263919c9aafe3eccf1bae54155cfc941adbe1f003abc7fa839d2c8ddca56b47c31595c629b74d086ce24723c11da9a32ab90ad0c8380c985d8e082e2037df405671e560ed6471c099a8a9dbb44c33def8c95361e7432aa0afee32f7aaf04cf5e9ffa120f002962b8166efbf0fc08a901da31aacf05b8ba82104ec4429979173b6332250abbe7e5b2519cdf6462a652cacb647c05336c9413372e064015b50db0cde05d3ef41f701b299b08bc47a182bedf69b5110b4e9cdcee525d53b96520b30dae41c7e93f3e64666e18adf76584309fc89d8304d2175df2954e1a710ae4910b8612d9fbad0ff2b03c1512b64b83f21247c43a564bd689a2a9462049e8084540f5710300b8b3ad98be4048a1b58a4e5b51e3980c68ac4e5076df9ecc75152fc34defef0f6e3e55394338168a59b896c0efd9234b99b12827af979ffac13a23d407a09a8f30131192b672cd543e91bd2fe4fb66684ecbd650af50e6d0fff0e443f887c10051101110919221a1a1a121a0a320464e8c7908fa1a021a021214244424342424241848008fd10f221142404242424085190a120424182040112e447101f418282000511028408c81010212041800001f203880f204140808008f941f463e887d08f203f80fcf8f1c3c78fa01f403f84f820f231e443c847101f407cfcf0e1c347900f201f428288828682848282040109fa11e4232828082848081011d010901050102020403f807c0005010101bd467770f7af51ecdb7fd3a71accbbe7e5dfc1ecee46442edcfdbd1495703ff10606d7351fb97b1124bce6fdb455bc35aad56caa4ac20dfc21a94b76ce4e1b27d198eae2a5134d2f95aab46624bc9cd7261527d9680ad4afdb57e7e2b1c04b11887b7a59473a5eda353e64c55a4559155ce0a5fde2ee33bcb45b549c7ed1e3dd9f6930fbf4f7bc4679de0a9f2afa982afff09a03de2a6d622a1b77920b0b44a7052778ee4ec34bdbe47ab59df9f7b37f3cbc66f3674848101ed0e92348280890209e1020bc21f306e12120210c0424c82412f261621f18080f01fd985b07d71fbddaf68fe7a291bbd7f0d2b9b83b1177b7ee375ff3bae257ef9f585d831bafaf6674dfade21f4e813ff4377ad7fd3d15ddfbfed6ccfbebee43dcbdc8dd3d20dd2b70b725b83b085e7a18bdda4c4c95abbaeb8fb9ea1f33a7e9fd11ae77dda1a9bbb3dcc51aee9ec34b2f655a84917998e110e7a34c8b2f6453c8b72fee5c519942d2a6d829d6933b34479232da0f6ae24fd92cf3b7e30bf900e5fad847b9a2f246ac285152107ffc14ec939f02ec5fefb428515280d158dfa2a5d0fa978b96428bc6a2b1e09f42cbaa2faf018192fcf145dfc12a62b96cb6235a23f15bb4a1f896fcd8cb64a238db913d49ee5c912fca665276a614311a3fb67345c51a8d3fa58811f932d7ac655f3b57afa7f246b16fed5cc5dec268c3f1610fa3a190c2f831da70fcd8c7685753de68f66ed304a78cd98b361cdf2684f1c5d9ec61b1a7628d5e4fda84e046af97ed5cc97ef6760705d85bd8db4721f6a22c86c3f5457053e3ef2014df4b185fb43b28a4307e8b361cdfbe7dd14826f3196c878a35b246af8fed5c4d2962047b2ad628f63b3842207ff6258c2ffbd6ced5ebc98d626f1f05d8a3107bfb46c65639f6b01eb6e37a6b5406ce459bda4128fe0e42b26c129f65832304f2c5871adfbe255b3dc85ee39028ee5021afa890341fa01499e2039422b82923bb43c507284570e38b1e0637a660ed0867c638d30518fe1e4426232a472dfc4c93bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb7b1119332db871467281538313d3b88f88650c9c4c561b3aad4645e419915aee233e8985c4a24514f2578d0a2925e5c62cf6e44bbdb4c47eb6437e6ca776657f662449eecc6633da0c38f1f5432985a3658bf8af1d19cdf5646dcab370fce6b31612e5eced10473eeb453e4c0a2eb653bbc2911b867bd17c679c6941e266145bb02b7126da3c0c662363fd78236e98cc8626b561e2d7a6d4a6d4a6d4a68836763c23ab0d6b57352ab561edaa76a546a5464506a6dc1b0693916062b40dc3c15a2e9ac8539b52e33524ade490646d58bbaa5d216b546a546a536a536a4351e88aac5d21cb1a15dc0dec5d392fb5611b7653d2a4368cfcda94da94da94da147268491bae68312fe40c6667b00c9453b19796204a2912cb4bcb4b0b89e5a585c4326281fd8b8b2834ebe2e5358428f405b6337bfdab76258bc56ac318ad36a5367ccdf0c2f2caf2c2f29ae195c50b10a4162eb529b52bb157965606b80051badec25e280b8903b9450b97da14fb23a3c5622f2d2f2daf2d24167206724b6d4a8c56bbaa0d492cb529301c0cf7620d719626b5612496da943166652f8831598bc5b261bd8d7dc15a2c574cf6b2d9c360b2b7f99e3168464698ec61331b9c87d1a4b6d863c87a9cf26f72fe0667b4c1f99c9d1b19eb471bd8cf64a22c067bd1a45c34da28de8864135faae052c5500dce07ce93a0028ccb0beee65d3f7a8f214e0aeeb5d3b3a6670ceb81f8a38fbf451c09a6942271522dd78c99c8e30f7bd74eec61e2cbca6f893649a6449a947589223906379a914a47994c76f33937b29b9795b47434838373239bedd0368973d160b4b1468c6431608a315368a1a20b15432bacc05919709e44156370321c727c1ce2bb934425aba4494991b23d37b3bfb13dae5e1f2b69523d8638d6c392f490613d909282bbc1f9d9ece6cb9266649ceddc3c4ea9f333da16713d86b0d7c9c9a149e9d06ec8c0cc3ee7757ec68ecebe494733b07749bdabc499fd4dec5d8f7363636d8c26d57a988b369ec1115954585689cc7669ed387933b337af176377663e94aed7abf4342e32a290cdbf7ebcb1e28c4b0b5128cdce10f7af779b997d29fbb20fa3599a4b8c2b8c6b8cc833becc15c6254614728d11855c5d58767496ed21c3fed81e5738a9d6bbc688291950ba3e4c4b8d28f412837c298b93ea21c3fed8d0682d0da8c1498d69c6779111853c090da4c18def2a230a91b8f1c734e38f5c8c63f490617f683d63d81f168ed603028983329651460f19d6034b63bd603f06c7fad10cee4593d252aca549bda4c6342e99195915b027ca1c418e2349662913e68bb7582e17ca7829a325cb4880323184c0ba43418668ed88c48b04e2288a2c305c5b40d101924592509cc1d9171464a04002273e09c517d71628ae88d68ef1841a7114c527ce947942cc1343902c92f5c49627b4d4786206568bc57ae28a45460d275c506c19eee3a4fb38cd8933e3e80419278cc0ed70028cebe57239d1c5092d2fd8ebe5041627aee0c88c41460dece66608994c0717dd8eb419b419220f8c03e31a91468ee399d19e19c7711cc771b467467b661cc77114df92e3b8c60a198ebb55221ff649c887bd149c28264981d924215fa489524827a52419ad285a5aeb590fd57a96ab2c5d364958d6ba8fbf14dc6893842467b058b21d3b72e480d9241969341c50ad67bd534bd66ac5683649c6960d924873d98cb424e293efb251129f7c98cd283ef9a4f38c341c4afee227711a398e2fcec6590cf6125b9684dd883f8e34310552ca38c68632160eeb6538acd9a8e695268df849586349be5c5270320a94248ec57a97abc572b9fbc0682e9abb4feb8d88e28f0ff512690178d1ce48217f3c836bd176109f45db416cbdeb45d28645da318bb5d65aebf41245511445d1c965348a5c442e6ad48ca353cb68b46aac1a92245946e3972f2c16d96ab59c46978f2903c7a2398946e3cb5e33d68e2c871266e3648d5acf92bd583b8c3496cbe2461b2517cd6d584e6e34beb8e3463e9a197bfc8d88a3196b349236579f84851b4b9c944d4286606d928cb8f1653848acf3d8b7cee34fda241103c06a89d692214bc2c4172b5acb041726b4883a2ca1c56b092bc85719eb560c182b5ab18b6b8b388ae312332c71652447728cd6085e499411e36ab5ac104933b498099418332a1146092fa3125b68e30692d04266c6be5e30582c268aa27d29fb23a9e044da949532da2156c07270bc00c01a2e5470e39b91d120a381061a6890d1f072b558e428c2744ad8cb150343565a6b45519c59dbe4638fb5b12d4aa9310c8bc56ab55aaf352e576c8b52aa7cbd5e3372580336aac1d98f6d514abdc294b217cece6c906c6644a5fbdbd820f90c92f6364c49fa0c1cb76ecbb2ccc9b16e756c909c459224f92cd2bab534d1458696f3c50a255e24c05259c36a40860a74724a9c1b9b992c067b9920030c74e4c071c3468d0b685830a3029d9c12e7c666268bc15e5064295d4158f72fe21019d8324a21f31d52358638d94e6c069571a4f9cb7644a319545eaf1954c8195478c8b27c9ee138f47abdcab286682493ed8846ee37eb341ac5fe254a952ffb9abdb8e062b40acc8c3dc3d1d2a41e36bec61917dc0c2a3f838a28047b11c90cf71adfcea052c1199cf82c24355e628b0b19161f7bcc885ad2582f6b3c0cce0eda8e782325dc60e733186fa44ee020030c74e4206fa400c023078e1b366ab06ea4a2f0d4b8808605332a68dd48a1d053814e4e897363e3ba914aa1c7eb46d6418f1bfbd69255ec195144ca8144d6106716d76ab946974bb4ee72c1c63056c80264be631422fad9efa3bf83f57ba07cd08f17eec7ed85bba92f55e26eefe3509127427b1f8736f81d1cf0a4bff441520853ffb4f336031d385eb4b8f771e8c81fbd8f43481ee96d981a3492bc957ae198de994a1c93178ec9788649efcf57094f82ade06d0e8ecdff38347b1b7b8d434ede3ef9a8dc9b70935e6559a3c63f909095c8233e009cc76ff8fd4545937a95419a545963d3a46abca6493dcf0a85260584b364c61e91cca845cc34a997a8d2a44afbfad1a45e6918b1446952a58f26f678454411071b9c8787c7061ab08c8c5b9c2707e7c1c243e5bf9046786707a591cc78c4a8c4cee7a881c1e80495e4c65b60e3a5ca0b463046319cc78b17d108efec50c2fbc6a1f14c9a520707d206e7a9e06fac11ded9c1c9eb9248bcb3c3ee935c701ef1ed15e799bd6b0c199711ded961e893c621213e5efca67108a8acbd548d1e0f001712c5701e110ce711c7514c4306cbd843c59e2163d78c66ec1adca8468b1771cc3864a98c69b46029492a59c6b8abf582ddec80776038f1cc380424c88b2faa1987865e7c71cd3824e43df8a2215fe4452346471ec9271987945e04e1952c697ad1e9a1bec98b4f52198744f811c6a1129cfc93cfdddfbdf9e268eeec765e638f9b71325134291f53c28e8f3d24d046d8f151841d1f2d13da13cd69c7c79e10684d3b568b5df3014d4a69c7c79e249a944d83b39f64e78c172e4468453b3ef678b0e363cf8d262586c1d917b2e3630f114d6acc82b33fb4e3638f104d6ac4320ec730a39691cbe865ece9a1498d5fc61e1e3429310d6eecd9419312d5e0ec6bb0e3630f8db6b33314a98858c42c38fb37766ad0685276064dca9ad1c929716e6cec93158ca3288aa2288640a3f2ba31624caad27ad7dbb455bc629faaa483a9a92addf5369d78bdbe277dd7dbb4068f54b487ae4bb48a5e9f79d7db245c315536357ae4024ff5ae49d26ba26bde1a4dd24b80a84f6f15ff84b749ab7785d2d8546f7a8d3436d1535502feeed6f88742e1dd357a728272770aa16989bb3329a9b9fb92f330dea167f0aa3d7def7a816afea1787777ea5d7b3a0c39b063f8da5173b70252d259a2c9ddf38a4f785efe356b940a3dffaef8c4370d9ae935813fbcf775f7a00e3e3eb379d7dbf437abe7c5beafc2eae35e77a2b9bb5ea0ee6dfa021ff7b4130771300435a3dbc4696073e29d99ce8b93aa3093bb1379a9c19013a7c113fbcc277cdeb5173c2f4e02e2a5063cdc13c8049ff9680ced4b972db42c586851b68e3682ced30cda11254723a0362547233c2f3fd5075fa34b9e443dfe6573073366f2a7d293a83ff18a06a1e0f56b3d1555d1fbc3ebd74ed4675ebcbebe55a77a7dff24aab6d56036bf76d70b7c27516f7bbcfb3445abfef12f3ffd33297f86ced30ef71353a1d8c44e5ac9f7f0bf1c216627de3a787d564822ec587707f2f29dd8a980c98977d0c45648362f776eacb8c9895526393ed0b09354fe187747f224171994119341171c2f33c0e14a940cd2a80c92dcdd3320ca002803abfbd317f86a555e7b2beead37fdb73ad173bd55c0e00f6f14535d1f0ee2209407fe828f7d5b47940e1f4a1d37fc78a9a389520719eecef32fdca87981d7e4f91eca53b3f9c2dd467f2b06be7a7d7bcd3f8daa411e4dc4c70abf9ad5bf9ff76f15ebd7e8f3fc823fd4eafe720fab3cfff804547f7a77de9f62f5c4fba21bed65ac62d30a57fdfd6f52e294f4d877aa58e3f801070a7240b9bb065ee6082a716451e668e2e3658e0110b182bb077999230c8e2beefec254cdafd11c94dff94334ee5dadf12f77aeb74aadca67eec45a6333afc09a70037f380425476e44b941a6bcd100139f3a407812557312f5b634c555afefd77a2abaf58af29e9795de76a2a7304d833c5b56dfd4d867ee0bd4e8f9bcfc7f5f457f78a38fd39e8aeac77d69a3c87f782b9536aedc4fbc710afce5a31d5edeb071f7265eda80000a4587012fbc55259fb9af910d203676d8c861633686bb7b0d2edcdd6b58e1b8a75ea7d3b635eef582fab7af87fe1e03855bdf5ff1ee17547fcacce9eeb16fd79e4439897aecdbbf606fbdbefd7867a6b77d1566aaa181bb3f797901191d2862b83f5561a60b2ef8e2ee5e5ed0c5f6246ae754d74e159d7212f5368d7dfaa6faf1be269a0283e78937aa33109f5bc554f835ea837adbcea9fe1e13e5a126066a9f5345a778fe54efeb726a46b5c65a8781c0eb7bdda9a253ba573115dae3e53ff15e3310af9f5fbdafd1c72bf641fd0553eecee4e5053adc9d899734c684e10be3746caa98c75b42c34b49430b8d2c5ba34bc227511beb9c93283405026f15667a1bd0b6be8af1eef5f5fdc6fa85f7b78ad73578f41698f113ff821a3bb93b0f2f69b8fb8975f036b9bb90973478d078e2ae31bad135fb7610578599c8b8bcb4604c180bbe7871772f2de0e2ee6e4116f71d2106c144d35db0e94940828464f4bf5f2eb7719a5ea09087f1ee7673f70cbc9c2102f7289ff7eb13f7d4eb3381f9715045b79acdcffb4f8caefb839984df3c548df3a951df7e9f89faaabed6bb29efa14eac831fcc24e44c80b9bb0ce58c252aa3bb93ee3e430133aae8d5867779dd1ac80664f3e1a3a2e98a7f3f3f7c109958c8ee1422c4879069e2209f5f366dbba06fa33de1ba35dac3abfbdc7d042f2b8872f76103b2055121192d71827ad259b75cacbb7fa0e4ee49ee9ee4367cd9e15085616ce83e1cba38f471e82e0cdd8a15f798c3dc9d8a7b95a1c3864315865686eec361151faee0eeeeee8ecf6cde2c0feeaef33267699b785db3f93bab8fd7fb7afb7a28ae7afc43b71a5c9f87fe89b7898156f835fa8f7d50ef812eb7e69cee7d1badfa13fb34aaa2bc37d2ab4d6ff487a63fbcb5d0dddef69a7dfa73de3e7d7d7fc37ac554787dbdda7cfafa7e7e8460203f84f0807e827c5ca0a11f2690f3c70f20444078c807efbb6ebd0bea1fbd8379cac43ef367a3bd9fdc5baf69fbd92bdee5f547af5833f9f1e9ebbbddf69a81c0a0cee1df5d79393444ebb75c8e6989d2931352931c14d2d212ae2997bbed8030707fcd5e15943eeb011712f4447e5d83668f27b15a8c87078547c1dd91b83b92bb1f89d5dcfdc8dd8ddc1de7eea4fb2d0680ffda03e0f56a5b7de60fff7ebc8421f46ad32b3e5334b8fbd93f9efb8f1d77f78173e5eeffff5fe3c1e336820e9aa5124a1c12fcf7fd134f99a87a813ba8a42aaf6b36fa9b4ef7b7584da7fbdbe6e1f43fa6ebd9be1ebafe6f1e4e79747f3b718a5e9ebeee3e7a89e39a797983821b10b8bb0d2f6fc8b80f19a2d1d77d4f4555ecabfa9e1f52f43c438a5e457b78a757dbddf7ccb98be00e82bbbb9aa1ce5d3f9793ee72568e75398e65d1b037f6e5831cf27106120397f87ab1c8d15a17dd864016b1eef280e5a25b6b4731c95a9715ad1d5b278856b42e918693b52deb72d1dad846b1d5e289bd254591c462496bc5981d816861ceb2a438626ba5446bc51713118768c51629da1088d6b6441b82bdc0da517c5d8035ba6e2c0d6b2d788d568b6d89d68a63ce8a640c06449c59222fcbda31228922193412e108592f321b44275d5c8025471e9225dad15904b01cb02e7a59966edd9256b45ed897d8c35a91258aa3b53fec8f7dd999288a62ebc8f2104552b440a34d66e3c581b5d1b921d66059a20d4bdad1bad8247ecc922ea22d7f9d7d61f49d0b5867d95b06c4d1b62ce9b23676cc228aafdb6889462b8ae48b33188f6559eb02228be4005931d67a89d65aebb2f66645b18ab16561223952599a5835fa58984cb42f97158d8818883a461da38f6e716c4b14ad0d598ea468431445dbb224cfc27658194bb42c7b338443fca025838976f79ab9441b827d593b8a96b44956872844cc21ca4497c8b2a315ad28135da41d59a3103b5a1e0bb3336bad0716033136baec8bb4a2b5376b5b34c41996142d8bb44244991d450cec388a222992568828da1b62ccc2ec8b14adb537ab438cb9464bbe486bedd05b9caab103961d2dcc92352c0c769339c18181d580b4a2d8125dd8961600c992ac15ad68adf5719703ddc9dd79bcbca93129c2aa6162f387ca220d19a81c38c0c5d3cd0228842cce78d30e15be240b27f0921d300660ca212f61ba526a3ec801833090dc1c4042766afc106571c380a16bb34328879815ba360541ce947180205ac8709f3328c0a076868b58d3e9903bd002d4a383af7d81c1999f61a0e5021dd752c113d7b164f02759701fdd4f15effbba8c5120c6c5f56ac3e9ee6e155d813ff8cc26aa065b57b10d9218f6b86c4698cb6503e6628da30533281598682f9e56ec4544ce66cc5c24ccf66833dabcccb070c3b07523ba6064cd4607d10fc35893d949d66e541081e06031216dabc802c3214b47725810c918b9d433c5d003605937a00a227963f48962d84153002cc0310ac09844851686366022cc66dc30447281fad231120c7503285db0d1863545ba7045851799330665a042091200eb21c5d56b4d0d37a28c6524c7258404013bf1b242052c9e189218073a91ece112b242047248b2821331fc5c81a92266280bf20ac0828d0f1c0b81a10d2115622e21add8eb661c524a32ea882171a92044c7d32b09071292182c69f67416851996644d28e61252814d2b2643a299a0c330f64ac2606765c81a4b966d85d08ab13c68f5c0159105613c5e49ad98cbc6cd110e062413ec8219399af478f1303971a042ec6573fdb0f931a4d4e49a91ae1bacdb28049b913cde880be68a913f2c10482223968563dc61d10082bdcc514896e12b460336a40296a1950179f1903bc81dad1e863d6ec823ac0e5818c07690397082461d2b0c6d3f76e48d3ee4c80200cd840164550921103f9009e305881eb654918282959ee2615367425409233461f2d4b4f441d28de8070f071b68f06406305084c806b41b365c5a965062071d42402a72d361c14cd6120386081fb8ecb0450139683100131e1e05b86157c2175ee4b200624079443c88b9b8c8806508a601333c70b90911ba60862cf672e5c001810744e17309d3074a48900e00830b2de89c093201207ee8418a084d86846acc209d2013461322438460ae16020e708018963011f180c7cca2403c816802710da9e6bd10d38859b0ce582ac42944296051ccca884e8860c4a951caee78e960e5b0b1215e205a6067e454c0d211736c49de8832564c84bd5e2269476b5bee7ec30667c431526048be3024975a3d78acca9f0a390b18b25833170754a840e610445e30dbc280569521b904a311cb518385218c04b2841103d96ecd5e485e44add848d42389e1ebcb7046940ab0a1f185abd1c68b191643561943d6ec8614c3d9f6116208ab7123ba3c60fdb066a06281cc460d2b905786383be58f3e393faf1a3965acc0eae045e42a1a71c6a2d71e7dc8a5223bad58abcb7094b56e903559d068c919598b216175e022a175a3156b49cd66cc66c02e9059e022614cc10aad1ba397155863861b4891bfcf6da083bccd705a39a41d7dc623b2c9c60297e812c155b25aae9cf1c6b2e0c6b664238b9c8de3288eaef135c26239c8d1c5c4a583d314cb71b55c76749140c81fd2be6c8c6786329e200c18de745121a745e2781d5981c462055aeebd0c323ea001334e9039624cb0f7540619326041322a326428ab5f78f1c3a3c479b99c94b084a90c262a1026831880b2d460e4062ca668c288222000c40e3f360e723f3404770c7a1d01186aac88a20c061c20250513a24a186109531224196070018d13809100103fa480424e478eac66807383c515507e36c332c8280109a29c5c4023670a233250812220f080206280c1859c092488b08449a9092632b0c404b224554145134c1881812228a0c3162b0160010c355344510405c034e06a884f25a41c1b351dd0028b233020012286e0418617f0298212524f8e4d134c1c618002c870854f133e504282e4c1edc686f40e68d1041348644002440c11040f0280e1eac9074a433cb80d0109ead1c921bd8c0e6871051247640003122022081e0420030c2f5c71c001b92751457e6c63a06009049c9b0de8c881e58a951144004ac00b5684563e78ccdd37f032b63aac8c910c32052c148827783180ec41e441dcc1fa108346206b93f988b5b183f16964607588395c37461b620dd6059606ac021d9db124716c6e4a9b19331bb21cb11cd8ebd5728dad168b35da5f505defd6a415eed8dd7178497ae16eb3b9bbe825f9c575cfcbdff31a6fe18ee71f9fa856d1d7e86ff43d10ae77bd3ef3efefacbe467f0b772d2f491edcfde5259983bb73e02509801b5e79b373f71b2f6fa0727268baa17277999724d09fd86c3627efdb3d15a7cfcb8f4d34d5bf66dea9e2c73df5aeee4ef3724ce3eea597a31977214288840c09111212440810213f84f8101224044888102222a2212221a2204440027817cc28155e93de96757abf765ebc6e15c5a68aea3fb11a7c61ba51134d7f78a36fcbe9e3ddba511ebab3fad90aab5bcd26aad305a5743a9fc62bde2afabc8c37e699afa23f8daad767e2dff75474cabcebeedd1553e1f4f34653d367fb7a68faba2aa7694f45cd9c9ae8d6a88902716fdb1a4d5f4784085491d66d1353fded51b1c62b10af3c6fa2c0bcffbe8a71d5c6bbab84975f877f57353150eb7cfc08ead4e7a1df73f23cd6e945f2369d0eafbefd5a456fd67fe2aae7a18f832bd6d7077c35a3298cb9be2629b832852da43cf9f8c124439d527470f728324f5562a2ef52a9421737942a2451e1a61c4e60880e8f484181bb7b80480f8f890233d40a3eee2b686005165670e2ee1df0e99b74bb41159d6b36b1d35631155291899bac200277d782051b0b1fb8fb142c5c71773477df232c54e1ee1cf0e99b3465e6d4e8ca5e85e0ee599c4757dadda328af7270f73344eebe4794dcddc37849818b0b0b48218b8e0b56604961a8830025650a3e4f419742530a443a31f4d2a06006050874d9824216170a808295af44e188951d453514de053150a811a60a46a144c1ab9c60d7a48962264a0d40f46a883284774975aa9076cb0cae836629ca95152951a2444975ac384539dda340b90e9aa528359b53033045772b6ecad980c14f539487fb9ced092909ae29d784434afabc83de270810105b900d78b1ef358fade29f9a57944ac52f4c773fac356e874510a629a642b5faaf51dded666af477bb653407d4bad7697a4d9ed7f53cf12cd1fd2da75e53b8512bddd3d1d377f03f45afc1dbd234c87b8de2756f159f2a06e2f335fa4747473a7c66f385eafd9e8ae6f331ba426d8d7be891ff1a4657a8a3270af2611bea09e259f2597f4da909f7ba53f71a6b267fd3f5729a0b32791eaff9753d415757611c4c6f13a1203dba9e209e253a9eafd26dfcf44484188422133741bfc7130dfdb0f9bc9a41d069219ed2e994742028e582be03a6bf69bcd15584f779ed000b7cd3f778203f886c407f13e1b1be46eff3369ce2d3e7753a5ed635e99a8429de770d9ae6fd5cf5c15d30f879ffced909af8f45f81e3d6e48504b987af4789b104ffd4d531082dee76dbbb77bbc625fd5eb7a763c4b36fac37faa174f5d25af6ea186016ea0084480ae3243a0ccbeac01f0062b5e803340a9012c0318069800284c3938b2400102c50150688002054a1328534079c2dd7dc5625eb156adb872b5008a16eb122b119a8c3e410359bbd864ec1e728d8dc3fe408fa053a0d1047d8238045908028341394449c1216aa0619dd560138c40b08cbb7b19aca2a4d2804a878a45b5ca29a1fe4fcd06bc64c9a5f98df03392132355632657469a4547233592f2e87ca6d290d10571779fe282457734554e01754aeeee4ea2f49f6b5e57a4234fa2324f45bfb6e675c54ea2def62aee6d3adddb4edb898117af4fa29c44bd8afb27513e7d7db9a9d549d4db7cd4fcea12df181d20822776f2a5c041406bb857612674085d42aba029688d4d33f814c68b8f8b161f162a39510c7d51b6bbbbcfa7f335f98c10f9807caf06f3110f3be51597a06626fcbb4c26063ee98b575355ca50fac498c9c4c027a76dde755b21652824bf7cb4d3e0e5e1236a6662b9e02c15ca2b84bbebf87e57bf461f9f998967df476a7d8047e4b7bfe5aceeef6b7fbbad185dd7bb7bad2f50afb61f9f9f69f5f333adf4edb6e69f6995bbdd7ea6551607c029c851c013c6c2f5c6fa6d6f5b334fbf9a1fef207067aa7f1b9570f7bb40fd42f5fe3e67a83f81dcfd77814f27763f6d3823708ae15bc5a8a9e2700dfcb4ef7e3a72f29c35ced21cc314c38adb16b38c09c61ca2344d7059eea78e0777c7e28a0d58e1ee4ff80d78b1ef26dc687af79a956854631527b1829a32b1ef6807b30f6fa552511fde4a85c4a9894fdf24244e4df46adbe9d5760683b75b2ea7571bf077fefc007fe77abbe572b93445791af72e3007bcd897db58ebdc0e667c6633b7b1ce6174dd39bdb1b642797805e6d2149dcaf9365a959b5aef0fafee5e85bbdb1b94f720bdfbf21eabf96f66f0cc2bf0853a784dbcfb5caea7a240605e4f1fb4cce1e480402a181d23bab8e3f54ff5567d4dc557a34a6fd34a4d381e484a704e4830deea5d6ff0fcad5e74bd54afc36a66d23dd61bf5fd8aa9b0fa1bd5a539ef747f5f98621e0f13e9e1d13dc63e11de042b1394ca275f3c19c2dda37872f564eba049bac28127dd6e504577df2377dfd3a6ef6ef72ad24769890223aa8ba82c51c3230be8a19d6a9067fe0881b45d0f1ef3f1bee80acc2b10785fc5e9746fd31d492f8a94aae8dd2b367febfc4befd3db84f767a25a45d76d85b3d555f24e92dc9d0a27563851c1dd35e0648dbb9b39959c180172f24e4a2726b84a50e3ee5e42598219d741b3540219357fe6a94a6fd327ba5b3356d1df8a373ecf35bf8a6a54a3e779ffbcbecbfbacff57f43e2f631f14baee14bd54f7b7d58aa7ccbb42bdbbf7f092042f49e8e1ee5390700409dbdda528e1c6dda32042042a56c4fb1ad3949953a3db0dea6b44a08a784bbe762add6e504599a72a9d6a10c91a1d2b46a839e33a6896fc0526239009e33a689674542ceeee2e0471771fe18b8fc0c575d02c8da0b3a5d11a222b5e31ca43574c75aa18784ddb4fb8c33bf4f7d52afeda1accc2cffba7cc9cfe7d4de409dd695049d112db8975500d6e9ceeee567adba9ae986ac53c1b3eefeff5ad7a55cda8cebeaabfe9b2af4af73e6fdb58e3f535fa7aa35bf3a8617d95dea6cb6d7d53dd6b1e6b7e0f74a78a75ff379ff7e03ef6ed1cc62b2ff7d8b77be8eee4e5f7790f36fa3e7fc3ba77535ead878af640f2b6da9a792f3cefd754f457ecdb28b65d1b56b350bdffcb2befd5abefeffbba8dfed0252dc420e8b0086fd3697af37e9c02d19d0685f7f76a9057d36a46b789ae5be335efc7c12327be6b36d17d7f7907716f4bd37b9dde06f451d157efaf99879e48b615eba04dcd687ad58c6e603e716fc31abdebe7159fe0a3d64eacf6d027159dca4dbf44044bca34f1caa61e4d0d7077779d1f6a7a40530842b84019c20921e04a2824a05e800a80bb477909d5f3b481271f9e10503e81f0a4819316a593150da724615a3a16e031c96122868904725e28a3c90b4d82944ca868a24413313a1bdc2ad0e4013a1a80a0490f3a3b729aeca0a3c10f69c800b3c52805579644d925478e604b8a6c96cc601ac3027777a67de408071310255c1c69a044092545473eee38bdfa5ff764cd77f7698a4e3dde7d56b7104ffd99a23ef3574c951fffb2de6fc336f46b2710fba05eab37a79fa638246ffbc7be8deeee67e1ba3ad1bd0deb9ed472b5ecab72a27b1b2eef1e2f9552cf50273e4f9c12016c9ce41f56a234063d913e80e978f9d9695063a71335c2e9a9dea40f92b8fbe9ee435e7e80a629ee032e3ed0e2b4dea612849e2a2c82bb0bf112841f0e1a7482f0f98941d0c1cfa353094a69490988128fd22bd5502a953c494d9a242bca8c49fa92b40587a419ae24ed245f922e6904ff33cd423c856f78df54ab77ddc0fbfbf901dedfedb6e67d57ace2deed867b77cd5b236142a2df877fcdbc9e8a6a8d2a2991aafc825acd265291fba90655266bf0c4eb79f169e2fe86f6f2d2113147c6f0156f15db560c7c6caaf9c4ffb613535dfdd8b77d17b80b6af3488d63a3330de623bcef899eea3d3a828fe0f88a8f4071772d54af929ca18ed21c91390a73d4e568cb1115139f6a9087d78d9e38fff02f779e174f65a03ed52012f7124a210610ae980aff89cf606aaaa83e2ff6e933c5286fa34636f56af47130bd5439abfbd3fd0f8dd37b62acfebe78ed2de1cdbbaf7fbc8a7d7bb7f54d83bcc778f75b077fe64eeda117f8bbe90ed52ad678dfb32aa7bc1553dd2a9d12ddd77ec11faaa2bfaa9c5659e153dd6a30ff6e9a5ef3359aaf9a815a457b78677ed55d4fdfbefae2f4d7fc27ba7bcde3358a4f15ffc6c2eb53d13ff19ab7c62bf05714fd35ff4d5374eb17a6e945b78a776e7adbf979bf0dafc17dd51eaadfa6d1cf3ffcfb139f28555e813addabe8ab419ef0a6f87c244e4dd6e0f927aeca697a5f333d112877adf1dacb6b93aa24bc293ec25b9b1059c1ddb146af531566529584e7c56b8a23b205f7d6bb943354fe612544c49444a670c75469d61a3d92a184e7c54e3b88974582b8ce4c6511a913339d6a104959c4cabae4448d8a98714c856e1387f5c54b4630301282bb77e0a591a0fb8aa99618d1e2274602de23231870f7d38806d2f4fe9e72865233ba833b74dd6a3ec2cdc075e0ee2a52898b52917656d57b54e27e28712770bc661e36ba4ba5511077c76b700791a84aeb45923394d109b749553a33bae2a6ad57140991252244448088e4203283c88b889b6b866831c48a214a8819f2c5cb102d59ae5ce91c0145c951800a7b4814d490242343807886cc98e9a001c010524d9a223364caa22f5e8a66b852042cf2954550ee65dcfd097787c2dd9fd0abede707cde9bb5ee0ed06bcddccdb4dcdbf5f3673b99dcf3b9566a0bb5b2e09e0a1a902098c1972775b44004e966071c10060dcdd8ed0c4135e6a6011850cee6ebdccaa40e100620b2577b756429041cfca2a6280bb5b0b8c52a0f8a0cc093e77175bd0600602d06c804412ee3e8ea00b131ad005033674e1ee76c88f48026a106b40b8bbb88454a4035678582981bb8f16c440c68b1ab28079c2dd593710608d2d7323c388bb5b2d46204394316a4033e4ee6301742e1b7c49486131640ba2f2f1116e74bdc06c6633af44593478818868683a41c6ddbd09263840e264092592707747e208dc1837c233e0ee8e815b08622e60810a44c009776ff2307ebd08a7c004745aa8b906178cbbbb049c080e7ab8d322c081065f30707f08708023830738c0dd7d082138b800830604c1814b8717207ef0a14bc9819883013df0c0650713e0d061015b149000306ee4a00501eeee0730401a1b3814e0862adcbd865fbfa28b366ca0c405596aa081006368cc30000c5820800d2c3043062c10f00a62b80e83bbfb0b5774ee0c567ac8a9e2c20607285b98e2ee1e001970eebdda600a0b7705576103a1cd06e8ec8a201b4a490185283965082006807b82d0aac9dd615ee5d7a93cb8758858f3ba1789eb5ebd12716f391407bae859dd0088bbb3fcfe4417d30d6853ee52eea8bbcf7beeee1bdc701f9de7d84f37771b54707562ce3788f9138f72275ec2062d27c1477011bc8933d9c09b7ee60842abbc3609379aa29bc98a7b57bd4ad6bcef89a6b709efe2a5f5a744c8c3d868fd29c967f069c540e05d45c867f049ef9c3ea937a767555e8f82b8f53a69bc83408d1ec93c5509f85b93803f26c0df91159f80a617dd681888cd575115ef80f9f3466d5bd5f8e9c525f1861cb18b9cb148ce1843ce888614ca21adb06a39241439ac2039ac2a392c33ad1b2d5e4ecb0139ad0de4b886725c2cb8a8c879e9e4bc84725e06c8799990f30ae275260776838305200776448c95132b7362b99cd895d8979c581739b21d32a71c99558eac871c1907726617e4cc8484198f74d154d40515100488b52e8c1077749146cce14529cef062489c79d1640c2fb4185678f142192fb628e1c504c478d10130768be3f0450e1cbe1072e50ba7ab2fd22854ecfe02079b7e41448e8dfa8209a8f40b2cec929a973da2865664772cc9a1e6da1963a8d162946a60e02255a383166ac458a1268b326a52a0041815880183071830860c8103184a6600c3842b60545d795a8231005d555675baf4e21357ddaa9f32af094e1374b0668dbb4fa1d79c21e33a6896d68479dbc67a0dd19a9ebb47b166e86e67ee6e957e782b09d7ad221599b809d09aaf4286d758f3720184355e023565098610c24ddca40aabb6dbf424d091800512084960848b1bd2254d1b3f695f0f4dca190aa7a6cac4a68578eaf5b96633fbb6195cb77ee17a7fe80a7c8c7b1bba06d59b75fe6d1e7a12210a1699b8892ebdc1cdcb78bdb89e9ad1a9bf697a57fc0baa482f4604c4e88941148618ee8ee654511084467a0415b8bb1445266eb273fa148472814b4e150561044fdc3d0a9c02834ab71b944ed1bbf19153498721268c21b48491250c2a6150b1442bba8411461835c2908541ded094c7cb379f1f9a53335ea932f0bcd8875753e5e572b9f36eacb1a9dead33f077813a67757fc19cc33f74e784bbdccea9ce55659fce6535b7b1f6ed13adca619fa9de75e772be9d577cc2a5ca2b1078733805feaecee53478e65f8eb752e5721beb1c3651aa15eb1cf017cc6dacd3bd735be32014bce6540cccb9ad6214889a7855d19c4eb1ba8339f70baa39abfbcb017f2b0e7651c3ab30531765176e65d8028c232e4c772b8bc1ec0ba7a61a5c6dfa76d3408dfa34567d7c07bfbc5e2a749b179f780ba22d6a6c81c316288c39b38583800904694040060466ce76ae28f6edda99e60c08acbb4b6166cc1919d28449e3c575d02c6170460ad61b6f71c7473e8004ce0827c6e10357513eb03f60eb397b30159a3ecf6f1eaa46dfb7716fdbfaa66acefab3ee40980ea8f100d0031d78a00a0fd890e60cf1a8343956674e11990e7c91e2890e789142035aa4f080bb7b07b0482102f735ff8937144f68753ebd6dc53b4579af79a0fb027fd954d1d7389bc63d9ca254287a4d8db770b7b36a13a6b5347d9bd0ea7929d67f9ef71f0d10344c68584073049a0e6861d362a7c5b0d680d60e3139826862461055cc82d0020df9c518419480036204e183eac75cb50faa9f6995fb5baeb6e6fef6a38329700dea5c7a77de7fdbe8895733a7a2b99f6995bbdd7ea695912ca8883893455416306401759e38a70cb5629d81796db2ed9edabe3c7f7b1beea95555c175ebdea651fd5bf3f3f2d336d6b49e1435d15f56b389d353bdbf15ef57519e34eb743e232c11e1f18aabf0eff55e33af478f234a58945790e00a2d5810000b22eed6e54a1b6391012cb670f728ced870f728ce7ce06e5b45e715c31c57ec2baeb862e90a11571cb902488e921a2b41bfa276450e2b6bfc8a1957901b3853c5cc06cc941b18e33a689636d0c5059fbe4556d9c8e6db79f73c251e56abf20bf1d49957e09fd9b7f19a51aaebc33b8dfe7ef03be572b9adf1ceb6735e5fb85397bc4ddf15ef4c0504041474e2de9a7df0fa0ba679abf87d3dd477d37dadb08af670efbcbd176e5cd311269c5392c7be2da442880b0d2440034f3460819924cc5c51a12407b702ae28c70809728c34a00a1e2a40400503a8f0e5e098c8c115e1ee5ec52d0777c5cc92991c3c5394c921e2530c31c555ce101cd49c9f7286ca5468100a924d671e5ec627a05af71a557959d7c3a3e2d4d6c383cf6caad8d6c1fbf8a1537313de5a0da6c0f7f1e3bc7787d7eb837fe8160ad27d9a7dffc31bc53e281f2221a070f3bccea76f92ee6bba53f7ea3d4f6c4261058a20507819284e00c50fee962c03556601ee96158503a278124559260b774b4a41258550142270b724d6d7e8cc13649e18e289199eb87a223da1929e30523e01e43a68969ed8e1c4185c3861c6892f4e7071228b9a6b79ffb95e2dc4533cba892b773b92f1268070b7620f11ababe4636ae6e12345266e72629ea626a2349136c162620d134c309199f0b956f38adf86d3dd55b1c65368aa5bb14d63ccc3ab1ac46a3e9f875665dfd784bbcf2a930ffa9e8a2af9db92234ba08417f879d750bcc33a08fc6016be2ef878e511cc4295c9db7a743e73dfdded16b4f56c98e76b8f43ad70cad3e91e53a15a6be1ad4a2ff6e9abd369b44aa33e8d57dedf57ab2ef0e96d3d4d3cbf629d4ea7e84592db5658f73efaeade0748f7c2747777796d7a9bbec0bc57dd8a37feddf50275bacfafd3fd7ded7455144db1ef852aee7bf4d0a8c6b81e3dfe96844989c90927c2dbd4aa0bd4bc9ccba5e9cdfa1ae9d6bccd8b64abf8a77b5ede6abeba26abab449799de96577c82461f88fab49acdacf57de14d75df53d1f3fe7cb4ba06f756f1effaf44d4ad37b6413a6ef63bb552fecd1e9785eafa89a7b4e9edfb8b7defdf785bb57f23622e9c5ab4d5f5fd3fbfc6eb8f7f91b2fdbf0ee54efd3df74e69a79bcfcbcf4faf0eed59ca6e9c5ab4ef3689dee7dbd605e7dfb048d6af5ead2f49aba9fc098304b8489210c52115c145144055aa80050052a28825744912238a8c00c1778e102482e305a800216d816c851012a2ad00a93820c18b133b0830127308005034562d2889980189e9811c4b02e308501a218d133e21a814410485421d174040a8ec0521e4184668c9831c031388c28a3082380499890c40b092a94e891c499241c70c4088ec861091d25965002004844610413234028c20892026050200b05a06888800e53a6400f05722ce1e4ee355c87a907261d8a6040110528a2860918017306882e607460802420012f4030218117116680c88208a2088401020411787d09034409dcddbf00ddddbdf8971a5e6e20e005023e2f37dcdd1fa0e6015cbc68e0244a986ef349542efbaabee624ea6d42abbcde600fddfdae464fe1ee6be9c5ab93a88b8142a82751c28b81c29dab61fcb535efdbc3293e9d449d8f7b21ae70f008a1046e88030ce1e42f801bc201ee1e458828219a84480212628710b30670d1002b1a5006d8005e8a9f329350bd4a8219c9ce4c42abbc36edcc84d3dd5599a0bf153765a65365a2319abbb95b6bbd0c3272b95cee47084ccffcebe5f46a5b73b79b5e6d3f3f5be7f0ceea795e216a9557a00ee69f50cdeac55bc5bf6d6229bc9ed8548359556f4e689557607a8350f00f6fa5dff541e974d95cf3912ebd26127edb899a68f0e96d27eead41e00af4e1cc0fb61f7af841fda10b208800f164a607f3810ccf4be9c317de05b8f0cef89085778214b8fb18ee8e02773fc11a772f81bbbfdc49e0eedb8675ba5efc3943d97822bcedf74dc22a9aaaf9f7c5bbbd5eec7bb5876af34eadb96a63154997b28bcf51d9057771d245862e553c74c180bb5e6d3feb0606d9807cd8807c4c4cb5d19df3c0009f67e0a76950c59ac773b1013964f8dc7d04ee2e86bb87a1deb4870add2736d54b75be4657bc6f550f493d50f5b0440f111081ceb88562abd8c4ab70f7534041bf3330f89877f5dfd0cbfbad5e15fd01010105f900e95f50dfd0ccdb58ef825a37adf8bc79d51ad5e55ea367de40e0fdf1706fd3e1359bb91503735af7c21d7abefe1eff7fd3b96a3fd6bcac7d6a78cd664f85dac11d0f7d618aae77cdc01fde8f77afde2374dd2ad2db841b4d51ac2e791b1050901ff24041bec703057d4d98eeee79b1eff65454bde60fbda959f53e13ad55e534cd3caa15eb5dd619b806511df441bdada7867b77eb3f014daf8af278feaae9557ba815de6aceeb038379ed5565df3359d75f3681c19f7377d1dd9f5845ef56ad4ef5de8cde961fef305e79ef63fef9c2340154650e25c8614b0ea9bb8ba0876a8dc36b3e22c14b059c40015b14b0948012940980618b145b78d8f2a4830e3afc7418d201830530e1ee3ebc5c000ee50282b83b18444e8c0283a6b904afb9c8c44d76586187213a94c0ddd5fcd09b1e9d17afbe7dd7db84022e05e0f202171f3b1499b8490e39e4a05345082d695cb86374ae78400b152b2d513a55c06829d252d352a34a130420a0448095d88a79787d9c064fa17a9f877e2dd56beea959a327cedab779a0baa0efe0cf34fb345e7d3b875574abf704e14e5785791aeffc53d1efa9ef03c41a7895a8984a5d3155eebd70f777b7533a55f46b3b5d85d50dc4a6a9629f086fbb4f6f53f10979e5bd46ff06286e90e1862337b87b01c22880050a800b90f3bbc0271c068083110e20308094017ab8b5e18c0d63a820c2062d583c831b365c6d1b521ba26c30c2126d20b281278562c30c5fc23be824ea6da8ee49546dcdbf669e4fdf24dd93a8bb5ea09328dddb80a889f27841ada227fea15bddfafa2ede5a4581f957dc5373fa59d52a7a7bf7851b5db3d4fdad1818d46ffe0e12600b027021c049801d7bc554d889062434c87c07979cf88742d1b0001aa040918f6838538306349c27de0420c798410c2dac984109305d7098618619ae66d84b9028217915fdf5da7a36a4b799682fa77fd15bf5fafe78e8a7d9577573aab379a299ea7e5e2f50a37adf9c53bc855867e06b1e1bfd9b70bd688a5a05efab17d5e7cda9f002b389f59fea35710a0ceeb7f9f609a8be476fd327a04f6fd3e113d0a7f7ed6d5e2b8cb5cfdb84eb56f1eb747f75ba13aff8d4e913eb545dcf5d2f9007fff293ee794a6a30afe9ee6edcfb34c5bd3286196260a18c6187bb4781450a8b8e18a670772904000c438700762e200396c1070b1858b4b8fb173d3e7e04bfe6e34790079f803e0d20cb000030001d02a880bb7b41a40807a1e023c29bfa183070a153a5080631300ce1020f0c51302cc16004c30b63bcc0c50b50bc10e6aee7795f43f528e149d2bdcf5551e14df16aa453d7fcbe9bcea7a6ebe951c293f435a3af9d17fb72547805f2e8fef69b52d1f47de6457a9bcfbcf82804258fb312859517ac3c59096225a7ca1877d7e7c5495762eede059122a52355b054d9b64a5a25aa4a50951c4c2018d9fea639f8b7dd13abc115f85be333cd3c0fc478eaf74ade86a732958981bbbbefa979a8e8c649deb6557ca2af6ef479194fdd5f30efee576575eaf5c54e6f53d19b9af87ce15e3130afc0a7edfb5b3312a2205ad3cc9b02f11a84e8e9e94f8c4f2a3b5a3053b650a5059dbb73d14414e4e9898a11770f0195ebee5bec8e505180bb8380ca1a774fb3e402cddd3fa0750b443cae83668949012de4686146d902e93a6896c4f840142eac701d344b53949822064c17d741b334058719ae5c07cdd2943ce574779f12554e59721d344b5388a6d4fc88d2af370d9ae8cea88aea5a2fefdf41e0eb34bd3dafa23c506fd3187895bcade7ee7be6fd9a07f0fe78eebee7ebb7e9b0ee853b5ba18ba8c42cf0a90335eb944223333002000004331400303824180d86e321b12c8b99990114800863a450663e521dc9e57194418819630c22c6001001180080110d181000181244ce6233d772a92d58d59a4830f83d6b767ea61861f73f627245557da68d8f314be9c83f4843b3d822241be5b45ef1d12264da9d19f7032605b0a7528eee0e5d7459f480cfb47db10b8b9ebb8f8f0678589c4649ffd90dc592e3e6c6f4d34b303d9cd354417454626ad3b100b112ae0a8e233d8ef59b4c32e96994338723a4c9cb09539faf11e7dda5f4a4d0687aaaf089f8b9cd40baa9e40a3094e07e9a0f41e72f8e1b9e8aa9713f61764eb4e5eed07d747d1b6dc8b158d87750abaf48a3b5dc0277233ceaea7664e9b221b444d90f3fd70e94cfcecb004980d74bedef023c97301eede0ec60423ba4cf9dafcc25323806009cc165e3b93c0cf61a3192debc187b73f50c63c4f8589294f13233af27b82f061bc0bd612ebcf610d90b78b8d3793b7f2bcfa04beccaec0a7b7c7a93ef3a5a9f2ff9d517c200ab655cbb3a2e9feb222c362146d5f7aa10e97ecd8dcdb2574e0fe900d78239c8abfa82e9e226da3f7ed823da983fd8cc1e7d6cdb53c27c691eba751dc09d0cec2fa142edcc33f07d86943eac8f5bc2970357c9fcc696f052acf1f39b6ecf73cfc25d7d40143fa2fdf9be762fd536a8cfe4dad6fce3d29367bf8a7fe5378fffc191a0dbd0f8e0af2cdf23b13ffd4740a5b0287c63eaf240ea7fc20323897adda036157e637384c4465b78758ff3b74db037039c20bfab6fbddabcfa5dc3bd81f001738768b84f7a2dff435e7d58b9a11c31cf547228cf3877e165a7d7d49cd90433dd9902615d986e481a0efccffe4fc7c88c2e8e96f836b6952d26bd797b607762068befd7ce5c66d8c1593edf0f3f4e9826e6d862ca3e844d8a7b30df3af6989b9537514c6b6b17821f54a61a39999203e9cc1defe42faadcd661882cb66c436e470ef82e91d0bd773e5d6dc43a7f88577e50231c146b7d476bd366fd23f49555f18ece4f37414db782e75893b57eb0483003c88a27fd3a8292fb22d3068c7b72d87ba77eea3da5c9d77f6702fcaf7267e4aa51d81d7b0c42b30fb876f555aafb1e6cfc74252703cfb1dc6570b1cd5b47bff6f77f1a1c1cebb1deb1b58dc1c03261220b91b6285e7c757552c49f25fc5f483799a1b043ce0f3199d33e60184538bfca64ec59f440d596029c5ea146ce6ac2742a81326c9542d9d415d7c551f202b64ad399f1d87869eb528a4d0c8ae15ae091b9c8a9a0f4585d4d259be1be0e987700d18cccb3903e97490e50f1f5a2f555fa5e956e2266656b6c59f0bd80793bec9c1f040aef6ae0ef897482552f4bca9f66275fa5a7679e76c13d9d4757ee580e4dac194e0c2462771328820416793d719f91751c57766eeab6303ab60a241bc26a5bb1d04f5f32e74fe75ebfdbae4aee6e654695ed693a5e1f257a69e18be9ae068ed73c41f5875c4da18b096c0c84ff388cf9694a0052a12fd7fbfe1bd1873f631acb167c64d9a667a9c636e00823d52782ef4ef5ee24a42e5ee036a543749e08cc2e200373dc486823efd18343df82831b83e341686d39033535852849934ec82acee4da5a14130457d983223abd52ba96281c1865610473e49b7a732cccaea63d2e953011df24a32132d1eb6c0e0740eb8e0333b05ffb42c1eca2ac6c6efe0fd72f5fcd1c6118633031edf112a0e42875e3245be49a9c127e7343ffcc4eb2751b5820ddf22ff0f1d6b50ac4282bc2b931f5780a68feb0d5291d344f96a19ccc4aa4135fc03257322e9de1030632ebb86c18cd8888726fa82a795b6016f26764875d690f8f86b4bc5935d2823aa92d8bff6009fe28e551e7cf975d07a4a9db86ea7f49125ce98aaf37c0dd4f8cc59d9f308d4b831acb327e700c7c5f2538d6b4d9f840eeb5d8670404cf5df8bbf61b4575f13a63cc60a542168bb21273fadf4b134dba8e1d30dfc7c1cec50cefc5aa738d8525c5d094ac279ccb17bd4f489bf14fe27e32f78a4fe912c64a83bcccc8c10d71bcff1c01aa3cf768721129e840b2f9df5176202454e690b1986feec077cfeb3f92ad4224df439ff619b07e914c4e741ba265525b1f5e995b5f78c8e4dd181890976d3c48e2d238d14d86cd7c57704fa2aa25c2f063af600c2c7e745fac12c2ade4ad81e34f285e8b3b19ed5f47315a9adf90f7540e14e9cf40904cdcf9b94bb17aec5332802d6fdb89786b906994235eabe17836d3a26fa1c12b1c01b927d231fdaa5a71f9fae2d555da623efafacd393c71f8c181633ff0e58fbfa7cd39e0ec198eeb17662261f7975033090bdd11c4d4b4f30f47cf1209b9095a6c7ecbf94cb228a8a4e10958a6fd5fbee9c01519ab51e8d27bd22984193b28d7fec239d0c21ff53b919cfe96e20b8af24f75bebb221695e6365cf98d7a08a12e1e59bc1e38c3fa301c655eac7a7edded4bde25808d6ee4de4373b93b81e2fbc0db1547e7b873fbe27401d80409acef94021072df2e25c1df71cf093d2c9629a047d6360e019b5fcbc6a8f206cad486afe669bd87fd2cd0513cd0de6b5a595b426f17e5c2ef693bf40f08f9c7ea719c8836b92c950a24d7e1085b74fccdebbfa47581e66851074a398c35f404e56338330e662a3b83e011803f3994f7e9628be3920333e10839099d6d9ef5b670519dafe76289fce7e767bcf4823f681b10f1cadfbaac706d41f147d50ede549eec8314f1340ed7802f9e9e678f03f99fb8d95cafebfa115ac2727561f51bee318e39da51473cffe7968dd85e32c66a2e266bfcc8a3dd9e4c0b662aff083939eef95410043c90dba7bf5f62de0c11d9707b9fc1d2d71e1fefcba992da1283892fc3ec09086c453e1c866ecb076ac318da67d110f53ec6f3b26233e1460ce4b6b39a1b71d7ed873ce3e4b62f780f657c1b72f87aaca6f02d816c3577d362d89d85a73a1a44d7c2e393cbc660ccafca1648a463e6ae2c6d2613f26dbc0d21c034310793eb23f1bdc70af11eab15959c0ab71d64cbb265c6d8082e922f3eeacf1e7584dc468a98026c8c0d2eb040cb6540e6db936a63243a4bf29fc909e9552c2d4f370a9c8a2118367de77ddd7bf1d64d592cef06cf8813d39f73f1e10a33bc571a21a6ec6b35624a6073bd08dee4ff5cdec08507857546b3a76f1b2eab35af8b3a1e36e182df12035d384ee8c1bb8b5dc8c44e51b37e6aba6ada02bf89eb8947ff87b5b1f154831159c9ed2151b89f9d262df3a3ea3ea6616afab114d2bbbf907d74927b7d7b5d0b3a97fcf3a858b6770fe915b1416d21e489c8c05b9a5bcea5a8ee0d03ea204273a1c54d522e021e477a44ad754758117bf2425b894e6528e4480c3ee03d7717ae1dda61f68b8694c7a18c2fa8cd2d709fcb1ab296a210a809d395553c6d2e94ca40c1a813238e4132e8c9e2fbec2ac605b1176ed8b18400e2e87dfed2dfbbe11ffc435718a516167572c50c8eff0d9b1b589a5afb001db9313872e67c2a821319f39ad9f5ecb20e1aecfdf90f10c16a80a5a84831b33cb93dc464b267fe85b7c9e4b60ad68211a228d9e016a2ede3d4436d30576ea875968e84acd1a7de65337097deb4056ff1fc5e76076df609c636e171812187401a46de95d97f6297d4b107f31b250347efd24a2e11d91f2b7dc796f91342fb41ff6eb353dce67ca1bfeddcf1009d10b1261d58c37c1e9ffbb5fe5cdfd76776b2e7858039694f7009883442829239fefe10482d5b1f9dc8c5a49954782d3563f41c43e1ef4541590b5d29f520743f64d4f24d31129a607e4410951fc51e0425c991450f4f3f10bbc4e5106d63224abc98ca30869becdbe4544033bbb0fc21f540b7c9f9c61aa639273b65a0c8c88a669b6a7be69d34c4ca03591c13b9737ccbace50e05ca0b29fbcfa43c6e8dd9d3c1f27d9220806564083ef04c355677bf16110596e609997a8edf924536ba7db4b1e789d40a6f04a9e34751a965358b9e4e690ed280370ada5ebb53dcf47a38520d9ad6f9e5b79cae7b28608d009260fc908222c42651f27850e77cc884fef1e562cef70e8817ed4db65c40e8d8b7b6bf04d5835b59fe9862d9e8922f9f4766c3b3400d2d53eed545343df8718fd17887d2abd4bf7fc8a1e0f771be48e23a68d492fc7654ffdb676638a51ba393bf8bf1b36e61e062e890594ff513c5e2cb050ea6e1bc173f482a6f30e59e9c98e7323e39d8159eb78dfcab48b89d00f708e75eb78a81b293ea114fe4cc286f559fb4fe41f70651ccd66ba08b69b8b58980378af56b8af3d45fd4971bbf9030bfdd09c2ff0c98e6be53bfdaaeafa1d0319a550a72f3cb994dacdbc1b48d9e7707462f66e7476070b6bbda45a1f8ff4336874be5522c624b0a78bf1919b4f7638780845173f9b56dd8cad6045b04c73ee713fbea7df4104b6c828e6538a093b82eb9642e3dc5e70d58b082d126e8b160fe2b72edf14d33adc014c17faa248f3317df07782178cffa78cad0a27088c6c7ab1616677ca11dc9ad7546842b12a7238977e0b94caf3b66a247e89ab038cc68d9f45571c4f1a71720699945be34d56f99a3d95071f4b518e96913a71e3acd78ec84263eb234fcdf008ebaba20fa3fb7b854f9141289dc952dc8aeb43aeee9decac37d1f0c7451c04bee46df39d719f1116f691f56a0b70a442d80da55af00f8862f9d61f0090c35f06d57a9012d1b796cc87526aaff0779a20a2e600727b21624feaadbb1e5ebc728649015ffd8918c20a55a2c37076041326d37c9029839347447ad8691aaedb2b6b02d6b8d0c834728fe18e81f0495e4546b20bc710cdf3f0450d865a293586f8d21bad8d98b8b5380c025729690690790267412f48119b1c141aac6a8904d43df8cc169c783c84799d9ad2a7aa3dc83fa78153d531de720477e51d0b154989b24a5dc647c56b39d6af6dcd1f85f14286677ea4b9aeb6374ccfa843804cee2045460b86215ec1d4db205f0f6228ed411ad8bb33ab8c087f4aaafd017294630586277012fc3204addd2320cd66f1bdee077b141e928b93bbe4acdcef854442208b2e9c1d40d475b5e43fba76fef2b84cffb3e84edc640b31963aaecb15f0efe3d100467f69b4a4065d60b2704a825dc447b0616a2f874dcd833931abd1e74f40dcec9bde2adb042e38509deddbb9baf96ecaba80469640045e512b173cf42cf56a937a0f0252d02f7992240dc25a07968d675305513f61424dee3bc8e3502c1ffa6499a5216684f94944c9c6a0352169ba753920c0e00dc46b1049d1e4720e9e2512560b9295c6fd880c4340c3a4cc31d000d42133e58884a7b1042bbe047374105d01eb9ed63ed36d767cb9012eb53e4d818e18592a163bceeccdaff49379b60ff82aa8d2e1f9819e9ea6387a0ccbde54e0c0103ebdb1e553d1e9a94a10c3a4318000c777a27c9174ca6e09eb85413bda2b51727c4c4dc14a1e7baf46899e32727b2baf306280d2babdbac81d8c43aefcf1156774829732155410654f847da06f0889d02a9f2303c613990a9b844a5a6a661add33dc629d93255dfc17493004d41206f16a7bcf53ea2949a29350aaa70a74589cc637c884225cf8e5292058f1a3f010ea2832b7f7b7d50799ddec37bda4ff11236bfccfd77bcb9c27946906a87415405d6efce45d46be3c126d8f0311bb0bd6edc68483d21417c227184778da787330af2890b9f6ec3d1b8e4c0763b604495fc206845e60b62bf6a124f00fbb6e7ebb5abb07e85cdcb6094c08db56f7ee09dcd5a6c77119d9a62a981aa8b12b2af6d1fd6187521b918b7ec04daec377c171e98026a20ad22e032a51b602e8ca27fac6a12c58b3390cde26cc02761852c3fd6924cc713a45ea901d222504f652f2ee5c1a21bf65a6539e523cafcbe93a091cc4111ecd603d9a0766871e06ebfa634e83e719dbe861d16bf86d382a8576a40bbfd37a472831f34c27e4c79e8cdceca67885a8475536eaba2ab3ccb8011673b3de3e496cbd61cbfcc58a983f6611ec3063ed0348cc79cfdd9d05f42d88f3c6103caf30ab76e613feb9f2192e0a68b5987ea0bba36d17867eb8d03f172ecb6e04680650135532de50c842fc1ab399277bcdeec14e32921efe7b48f908a676ac34fa6707919ee5bfa37c2bbe8e500e3328378fd8d85fca546320f9870a986d0b75cbdfb7e5b98c7361e7adc0f3e14c7ddc6b1a24f8dfe4215ef45faebafb792baed7acb8bf2546f3b5867f0db6aa4dd9c5d02969efb3fd47e4a6376437be5e4a25518d08b2d1ec3cc0d99006d11e03d159cfa96294eb4fd3302e8104e600f63d16f48846635e2cd716971e812191f56d191a8cfcf63886b8ecc1b62d92a3263313d0b898fffcf442b8675aa493c2f551da62434c51f9bf8bf03ffea06abe31e68413cdb3f50610f80de41b5b3879cf3083da79dde21159f07a8150fc8311ee6c276ea77cc78bb63dd3fa886ac53b8b1612c11a3cf1ecca87d3d089754e2151822700f19d61bcd1bfc03ec2412e577166f4cceb8a3624df131e6ee8238498cf8edf6bd17094b3e61104d15d7c6476ab6988f60e4557d56ae22195886dde8466d69078437102fc4e22f53cde6f5b46a61d164b96dd4bda1534bf67c7c7c86c26dafaf90faa4d8cae4c8ff51c95e81616755651fd62414bb8b8f05f2c91569ffdb4276987098cb6a269c9f4045e0915e4d26cfd28f66f23f5b37fc5f13fd53fb6fb38156c903e44839f14749049d13c6c3ddf906033601da01e8f9908de877f9bd8f52c93f3d4546d443d3038e90257f9ea1c4f614f8cfd43546de3fe9f2c143ed68e9a2986195c8fd22e870b86d3aff24b69821fef26b273f918dc23de799ac3c76686f8fc6d6956589e1c5d393580b16eea58f64e461ae0207acb27149aa172f5d17b9c3759f0518f0f63f0836acd1720ebd5f9d535cfd42b59efb83756d48449a8e7de2fca8a89eeed04f002128a7b8f5720038bfc9e1f90d2b2a03825d6274ee3ef4921893a1eb6e5a33c8d2c1f940550d3cbd8c9dc843584146b4e82b5638ec51653cbb3eb7198f2aab1f8b97949f7f570e22e51f18474bb9355d2e5cda5d85d3f23cbff4aa31037ed1147b9cd09ac511091897358d8e75f1e877bc7c6d075e8c59c1903bc065c3c602d8126104e9725effa51ba2112651775b372e484d9a7357e96f76a0bd78b3ccca75123a479f9f7a9bcff79c808fd5f37cc79cf4e12b7f4b894bffddd217cb6db2731e6bdf8dfb4249dae7196e0f926145950a9d0fb4f8a9971c6e73dc10047a9c24ae207c52599b87a2dedd6a8d1f1cfa2f99fe8a9be9240026b3c991beaf1461642edff7dfce24cb321f8a4baf3c917f5ad9ef126dc67781f6d5f3cd4dfa82cce001230937911fba68bf4c68f7355f3a0a38cd31ed1737fc4b451395ce464158578c7ec7c25cff0b494b58c1013bf5c01a753a44ab2a3135cd7c3a1cdb8ebd655b5f7972c590cb147007881de7c274700766c7bf63eda37353dc17a48bd6377672317dabc6bc66941d96fc575bce0bd66d0d044c340c9d68f9fc164443140d8f256ecd107d73f871bb6e8329d3b2759d696ff0b1352131a008f84d52d5d18385ad7eaf937f22c9b264fc408c83ccfe14464793423f46c8d5bfc267c3b1ddf8669e6fb0573fb7fbd158712682bfb6913bf46a91a275067fa10db856f0d8cd62b8c705af75132d6b2420ad4a5bc06c984a54fb3198816fbdc08895ce5c107e7542113fc0e5d2e0e30e6b5a29794e4f08f7a2227165283436de836bbe2d83d4404b6852acc402ee899228d5c2de5270ef235f757aae447c21a7927a87e419be94e898458e742eabe93b3a505a93423af06827678b46d2ae4e1493a2266dc3413c45af5e25954dad2626835288806402d1baca9e828ca3556127647fc6079d8a3de9f51881b2f9cb43093748f643fd0e6ffb495fe66db70ca92640601c867a3e0920ff111cee6db46124e83d720c5024fc535f0e9a6445892a3506ba68623c5fd3adc59dc18c0a1e3f2f720428494d1ecaa4dd12918742800fd55cdf144fa889e83f866d7f1313036607f157d83254d072832e490a92f42fdb8bc4fa01f4c96a2134f25a3917e58b621c4bef512e80c34842f851e141be4ebedc224c7505dc3518b38adb659b70385f64fd47a3068dc26d92e609a11ce2266bd10788cf7da317641c9e0e5cfda072f7dde70b70c2dc5027e247d4f355079c71433640400198ee6f9a6e79f7d7792311c355239b1e0a76b8c5d9f2571211de1fa558e576f5c0956945a1b9939ec3822cd11f35f8587c7e0536bcd2c5af353071062ab27c0adf98a03a9a6c5ca0a1042064ff6554d83abfb33b336ac7d5ee634fca55432b0ac1d9b705afd37f99af25b522751ccbc2bf43842e152f0afb83e9719927d3989371ea4f9ccd79903a27382e80367f7a6455cc798e71ac729e0488de47fadef0dff79d90276ad9863673b8179952ec85ca2f73af4bf2f6d2f9df58bd0794ab4a60cbb14de82781cb7f45b81199e3ff9cfefab1f55bd832a58ce84cb3b0f641ad1725d8da72af2011c72134ce6814adca38df05b590458b21151f1b0f805b1ea907ff258664a57421776bfc74df3687890eff0db6227beb89289b8a6f3bd00d09956025b00cce406b8fd146c88157b59b2345f91b81dd26f27619ea446af06dc4b631cba8e227579e26ff5bf204a162c1d861a3a3caa4781ab3e15dc0e2163b5f0f3bdc03af9b2a467055ff379c94e73c83b5e812e08a3211710a761ecbbd8fc810f273b60c81eefbb73096a8afb5e1563b2385f4757aa19a6480367fcdd4fde04c3ceaf48c90280d140883464ecf50b1eadbd689cb29065ccc5937e4d27ce2726321cc6e8b1a0b507ecd8512768152b9587722247572ca58c74f4a395029a1da51cd4c14781137588a81997808d96331989639b7a4c172563cdb31bc21f9a4b6e96d98dff103b5c41218c4e44d879f72e8342331fe0954e6a67aba46c5bfd3ad91ac15e902b53ef1ead6a125df487e58035e9383e107f737715f56a49fc5f7c23c1cddd0772abc897af4ddefc1b26e7b82ce34a76d137c3ec09abe353f98bea84f30b45c601703ffbf389f3e39faf04ef38203fed1e09b5fcd032006e59a6ae10eb10a44d1284343b64f2a0cfcb84e259fff283fae770d60642f14dbb8f6ae39217812e0b0031f8121fbbb104a0f5918f38b69ab12b3b49cda865c687f49cc784ce27cd4609be872a5612a170ad0bf0c8d11cdaaf88d96c8d61354e85c4aa73c6949972f94b42627b5c6f22d0bf6893cbb2faaa71e7a5b8d88072caab5f0f6cd8c55f657dddc7c218521bbf2ebfbc0dbdbd4d0a14ac1b16549209967f67ef053747acf52899d8b867880b5790bc8efa28832536cda2336046798d83419ee75e832fdcf82efadf8df3906fab5d9c9d15b3bd2f18558955699942307d294da36a727a7a30817b9bdf0f8fe78c7938edda4b430f14795c1a7f3ef3ef0c270f1f8a3b9e59b2ac637ceb5ee0decf0950977f8b0c9e7918bcd11d7ca65e221770a74fea160e626c04629ec2d1a66a7be92020c6136b0bf89abce0d0acdef9edb8f4ab707540227ec9b50db4dbda5c597ba64f505787451f0964a2afac21327fcc61ff93f82d15c000c829c48690f025bf9d91a8ba082ed1370aa413980dde3b41da7b16a65da10abaf0635f7365c696c67ecedf5c3ddcf0a1637247e807f4b9588845f0d125f4f13bbbcca85ad43d0d7875e6f946d4d5fbf7c3eb2b65555d7a622f1bea54a25c6faf09be0fe422de5170b70a8f9288a2aba663492aefc96081e02bbef8aabf673c1c31c3068af81be65765738a04eed9f737f5fb61bbb1d0c1740ad37620bfcb388de6e4bd1ceda72f46cb35c29b8ec9a3af121dc0b346022d2a8c7927e2362654799b94dff0b1fea0247377268459e192b0bdbe3b68e6be6dc72cb14f1cf6a0696b9f8b056e79cf9a3ff80f83b1afae8199a5de7392cbd44279b4f1e7e89945e979fbcb692d803ee6710b8a5bedbb43257fdd3996804f415b4453962decbc3bbaf6fe3db077d012561e6624ae0d81569c125a0b4244a64c8fe1ddf919f935771c059dc0efe98c033eb80800d575c1da819d9b6478b79b2cb92a071f779d48f0faaf685fb2788b1fb604587ba1c9985dc7318dd33d8b7924e92f19df99235f669a26f16ec02e311429d144d0c847b84451112747dcdc9b9ac07085ff341d5b1c126f050756e6714ffac2703c4a9311b41616431011a9d10cb4bd0065792e36510af8bf19e8ca53d69811e8a594d9966d5901b68ffa50784ca61fce3c952eff3c17ce71e24005ca566dba7f68d4d40ae431a38c9fb19301d1fe9a38def74f895464da6cda3d8f3eee601d86427c1e48f2f6798fa31642c8fcbe5a87f323815f24f593763c9f738988cc67a7fd91847b6e17186c857f4b1d0d33c030d04a484848a2277afae71ca4e316cfc5b35e47268ef3e8ff9f84341f9c61d33bb65dc34f96edb749106d71d8be849e15f612669d3e93b1c79bcb4e8f55e04d76ca010c8ddbddd034e16a60ff1700015ecef8912222bbd91008ad4cf7c86a479f783546b80ebfcf3077b249d446471c361e0216db9bd8a6d8a0fee55f4da7157d0a9b655ead9f6bf0494dfefa8701761a461ff832460e82f146e39affc11ebd1c20374e9fa54f6961af6b2c8cff47c122f7c9ed03df9cda670798f1a95bd883aa485c1a6ecbcb3eeaffb6da3ed9ae8af6c6cef9912bbd89327f677f0ed4b36c9cfce62ca71e08bdbd212ceeaed69e159625dfd8ea2e5f954adadc223786278c48e8e1861d104d4770331323da690960cc2eba558722eeb875910ed60b30d752140038797aa52f3ec3af7333a4618c4a0399f3fa32289307b87a221d067bb57dc71a3376dc04e81b28bf0d639cf77e29a4b6748dc2c8b8c5c6ca317cef377266e3b92a4bc0a52a6f6a97c4f374fbe61892c5c0ba3bb0c42a07566850e4e41391915b930604760dab728997a52fce0c18556f060b8a928a8af96e01809dd1fc862639d42bbd5abb2f7e3bdec4ae1c5e9b4f2d43f751a9fa45d995a335d7024a3fb84a5c35a1b45739618a4b0e5ccfd1961cd69314a016fd7f075aaf28d27fa90516ac599a40a8925126ae54ad27322e5c68124f1df264bed10b3f034e5d4a35041f86ab68baeb75fb2531eb7436043d5734a8457a1765cfa5f94450f57a31bf5e81761a174b0dac42710469803e11b067c6b9e158ec85b73b2ba20bd8d1adf41240af409950bb14ede8b193448a967fb790e378619500558bece01618be041f8dd08059dea351b631ee8657c120ffd5a10a425e5cd79b050e7b87946723b77bb0b654bde1ff0acc003639196a8b5f90190e7c08340f0a145fe013bfdfcadf35ca3dd7e68dc27cb47748a306053a6b6fbf8b67bdea5ed281331fa4c8b4d468ee38331cbfff4353cbb61b3c57b3da353ca8e8d9a5f9957089401135187ff69183a761701b40f133a37b92759907eb639e4805649db37c91dfa4a2f06282ffd5ab6c06c8dd824efb861c91f5fa5de799247f080d61986463b6ed95e77b3f782bc6ed57ebb94730fb64189577ae47378d0da9098c359fbb4ef852680a5bc84cd72c6e3d57b09b8571c3903794b1e96692b5fdbd331232cadb8fb6d9ac746e6aafb517dfda9ef06e9e0f523603e119f480d1aa6fe3c9df955acb3cdcc60ca3c290379244ee8e8eadf0533bbe8820731dc17fe409e0458be6fa69d5bfefe4224c9170d243bcd8cc3a1a38bc3e2401aa1447e032c025b6c5c7b06e01984b6aa50e6296874b514976cf91a4c99d3f1915bcdf3e2df19b09f6f453af5a4b1f3e8ed632fa4d00c696566bdeadf37dfe9fe0662ef071d883537ab52c9d9dc94b22b709c7c60f2f72c4ffcb72301f3025e55cac47ca3ecd865e337897c465bc191f5d0018fbe456c6f88dd3ae3ed22c897ca471d5c949f65c16e0c7dc872ccb3eb8db76936963a7f46c260d1e15b355835918ed8b35fda1f65a0a9979c17e42b6d494aa6900c9587568cad49a59907f67c95c2272fc4beea967a7b53f8d2817e1a340a0b52935d58266088293d8107e0194d44d0d43eb7719a1e8e3c5a2f43aecbabc9964384ca6098c169cd3178c03639eb4a10a20ba6326cb343ac650403ae37cf5faa3a1811fd27a6fe60233546ffcd06ccc3b2e21705c26d01d22fbc0c90b3e73735889f0e333772e1b6a050302ea20dc671a1fa5d080b8869d41a2865c99e81d15aad30c34e6c3d1f19ba0f51696225e92c68794816fbe72c08aaf7531b04de00b6bde7f9f72e918b44d056f42440d6f2bb58c00feef4c7b85f77a44a0bfa126a9bb6b52493359094511a08f4323fcbf93aef918060fe32104b4d1985ba114678540f84192e996e45430265a1a5635c99f764e8ce677fa0e0ebaf39344d327865226060d7f48df44b10afbcd7e7f319122fa2578842d86583048946d462a45e032be026f2a97859e77ce29cd1b8189b668aa29784383638eb189545bdbff27851c9f6377c05fb4b229a51b954cc73e3d681406fcddd83bec0866d58f89ea51877b780fff7ddd5a7dadfe9a8dde25d3a36a981e789369139ca2ce48142beb9e0abf63b64e9402e3a01f0dab5640ef97b2936db96272ff01e3dc7fdff92cd8f7db50c037f43d06d179b35dd6cf0dd55d79de021a05fbcfc3af1bdf1c3f07bf33871795396d50b723b7c1d4bb7d1a947feb507564f6ddc90277c1ac25bf132da4ccfc8016421800f3ef779b29ad14df91f11aff3259e3f0d7d387fefc9697057ed7ac936fbd4eb991eec197db3b4e7db0aaef9bd551f16a6b658fcf977ec89efaefbff41de062ca53b40fdcd07a7f18baf2dc797fd90a29a1cc27e284b317d7ef895efeef1433320d2bb30059a45e43d0e6e14598f7eef166a594b412ea302739943d97630d801ed0fcd1a7507219ca844d4caa31c9528e5eb436493815778ff7fcff78dc9eeb9e87511b08d304af6bc05b0ac991c418c370febdfe5e6ebb14ecce830784fd5dcb09ab17e696fb383865bb51052a720bfe7f7ff36976baaf67c2bbe63f37b128d374ccb14e19ceb3d0fd7fc76818632dff7770cac47db8b0ad57e4fc0cfc1f5dc337849357bc89dec3cbbfb857fc83ec8227665888bb2426df11a01e09eeca96b1759c96a091202ff66fdaca7bd98ca3bb55b5316f48168a1710b267744d4a2661eac92f067ebd938c74127a56dea2c1005b90838e642063a6af3ed7787d30fcdba73329d0ee2419a41733bbc14cb13b44673378f59d98566d131eb12100e60d5ddefd763ba6779d0fe213f1620c88fbf45e363e443ee872b199434b2ed65ec9cc06c144a73939514ed6a1a2ffbf2f01bb7c6d1d30a6dcbe9f5c1174d804b06c9fcc0fd930f43b2f31529ab88fec911a3d5d731c45fd965818bb6fcf966bc6904165f745852f86e0adc41a9ac7cee4e2fe94c23bc9b935e47c168773f00a49f7eb4f12017dcfe24c93535882a107b656cc812950b517d07099e0423c9e4edd50bfcad9f7eec594ad30f671dc47b7eefac7b61cd7ce2bce7e67b47ffd06b5d35a7a29d47d48bd307d27ae2de0709dce60a982f2827b730078ccd523a11847bcb46af4ddf61152abfc47434f2b8929ef06ea7641aa820a971bdf65afb98ed9d07dc9dd96795f6ba9e9119ca5ecb23f672ac6993962749af12a0dd2bc93cf493b05cfea6913fb83a60d2cccf2daad9c3477505ca5c900f9fda054bf79f6559df33224df0b75bae61f3ac2c0d5a5c39f670e68759e66e039d6e8c2a091f06d6bd8cf233fa5ef6e0cbc23906b716cf4900c655b5b75c737f81d63f91df2770d697f839078076dd3e1b337a37a299a5ac5dbca7c1f1786ee31286daeee303827c0007f3528e1d543767dd8f9f9d8b0ff5b735bca30ab67fa4fb01b119b7cd9a6df8b2ecca8e371b73fe38490b209c122b483f4909685de0c367f8f075b0e6521c4959e3112dc3db1fd081d42343aed372ded6d6eb73e15603092465da4338e10b333227ec1241f7d9d239aa9f2d0187cf1b5ff0ceec1f2a5231efb029235ef549367aff89703becaa8d67c1eb8dfc23dbf61186fdbcde31478cbfbfd7029bef80a05d3cfbdee4aa75651d62ca82518e0b16243bc802bce272c51b39710198ad9de5461e340e58c409f89cffee432a5d6e56089de53f83aad294030b55015d2c4d9a420852abe74c829e310c5d36c721ae1f2ea8355e9e78913e258be5628faee5038767df9a359bd7a03b332070c126868ce778d8f8ade871eedf3c647f8e3625f7d2f02de55456af687cead21fcb88eebf3f0064ffcaa7e5a1cc65cf721a7ac0037ebf3861d6dcbfd3cfdc2a2e78eec427499ace518a3788d3772e37eaf0805491b3892a80b73f93f31205ddff55017e2224755e6fd8ce524555d99d098d7723a96670e72b1396e3edbd943b8a8bb110916aedac4481f72eaec3d496945922a342c858c1112a214c46609fe7692d7ecf56a6b17b4f7310fe50f9601260c96329da05a6e25e38fbcf64c08e1a60306a8a2c2f78e820ebc84f81cd868adc34489f899cdc1591e00f36d2a181c361044935dd37157f0b78507c9456e6865ab0a79ae4f1025aaeb13702a293f28f900b3d65b2a9084ca1f8c67524288c896567673cfce1bcfffcc0000d68b95cca3afe84f083687ecf387ff98540cea387ec43808041972becb4922d783c7c7070b4c40085cdbd6af9e31f0631a1cd3682a490553412c58d1d8c089ccd7248a0b54230c0dce80535ba6a4b8be1c59deab5292d59a63d95543218b9b60b7ceb441c9a12d800447e0bd10b10f9f8ae3d12c26268b58288c43b231b848816615a41dcd4b8730df7693e2a2aeda79962b9bd7277caa0019108673ccedc751da830e050f2c5b8f92e7a21dfaa914436a099c9c81b3ea307669f311494be71fb52e1c55479503d249879b430f2ccb227b6eea4bfa46159b265b3f8e4e8713c244773267edea00f04d4ded23982d682b5bf0d9d0db3389edda5fcabea454d581390fbde415edc61e5e69398a685071dda60be1f19c6e744ceb73dbf5d4516cc1818d615ff7351cd73d81743c655d004efc8253bbc984e06d7a32ea1e7d426a433c44db9dc70c61aaa711d989839e9dd6020fcc88b855ffba2c306796ed2fe0ed6fb6be0621f7426f8f4737b2ebf2972fbe67780e7bbb69c3fbcc9b776c3a43cbbf408b82120f497d3cc3bc1783fdce3a584f837fa690273c8dc4f21dd18bd42367076447a3a2ee0a31e4e983d1f135bc6745eeb46f448e5df1a1eb8287426f451556e8e69b005f4110e3136b26256a6cf5c18f2a85e2d585b096562feef7750c5744dd6bb9f07a9f04dac1d80cda852cfaea92f2871058d3e8d5603e28d6585c3774827fa88f138a90a14b175ddff92c75041700e0abaf72f9d6b4e54a4adfb8abcdc2ae59a58ced761c2f45290ae3da0d7107a5f2f069840f4dba7294487b5f22dfcc32112829bc51f09e9cb26f02a2b9b6196a317e9fd1b05a1265e683404dd2ff8afafd297636d3643698cfb13b7ad6c081df2d3e3b207e3c574d9e8f9966897dc106633e2107c2962bb1133d01bbf2f4f09afffeef4feafdec03c15bf3e7b0e49fa6e3a7cc3f97b3f44b4b07d4b7dbcee16f4da69de3a48ce076bad76ca25cec54b6554a6105280a60ddb7d5e81b43b34c7b158dea94c18bb93b3f1a954a7f01271be2e6aa42f54eb0677305a9be9700de3e142ef3a56e1049f71362b430f883b78fcdc1ea0ceed57bd65e26e777752778256c28196e6264bfd8e54c99c4af722983096f06422c1abf22af8e611eeca0b42cc00c36a3406118f2806983eb241e0f7bd8b284bca78679b4dc3c3cb38dd76e379a5e2173d799b25b2b5eea51b98ecb1aa521552fd296c66423abf05effe367e45e4cc221eccfc94a0576198fa97140db874e336abf21e5861971a48fe0edd5e016445b20354a8fd5d28dce3809d55979a13bd20ec5b4f034186245a348d0309b4752e6c2955e9f9a7b514e61a39c463754b61c88a0c209cbb21310bf8d645cc02749a24a4a75b78dab66a49cc33ac61a904df4a263453f35e552df48de8300d6d971f196a83d69276a705504a9ce2b7ea57c190cb9081c685b6b471a7bd12e88e401f4fe2cd9688680de460c07d8c542ed29510f63856cd97f5bee8a539e63aac4e3f77aeaecead71c56d578663379ae026fe2a4710f201b22cf220f9fd7589af24a1c41b95538626e6ccd185ad2c201f5a9b7b858cbba3420d11ae0edb0ed8771bacff413f939e5e3bb02f44489ba711e486c9c26cb16c5b33112a168a2d7171aa39b57d3482a8d9186e044d2e428f2c224ed7a6798ff777107efdb34ee61b50fefd359b7ff169edc396db9e640c071916cb1cdf29d8728d9461f648eab4d70bb2f76fa36586973c029f7acf139e246877bab8d7fd8428493ad7fd39370b45b8414714114fdcde382eec3653c85458642efdaf4e7e5ce05fcaeb3b835dc90cf6284f7bd7fcfd7fd9bdc0056c0aee3fd6d38d0b5bebeb5c02e5ecd08f0953d974ff7ec683d89fe309cec3cf9305f3c0cbf04921f81dcc23187c1eb803f4103eaa8aaff23165617bd1433296b69f4eaff76fa547bf63cc1fd05a5e372bcee7077ec41453f1276023329deca8d67d2c575028d3201692528ab1393fd8f0c8327b8066693a81155a9ebef2b1849d8ff93498f1542ed78c350ac1f7ca199bcda82b49063e6af908a42a616b92b9104f233499c0303630cf8e2fd695c71c7630f5485dc3d010768104e63c0144261da1d5adfed0a18f9bced780e78c875eea6945368259356f3ec6c70e27cbfb0063abea6753bca32d9ee9e14c8b41f5363d2c9cb83ace3caa4ed0f06bee2e7ea4a1f74a044b21e9b959f19894ad64ac31cb188f475b61546b909e1fd371326714d1b40c3e6c182769c91e8538e39a1d14fd47e60c63e823e3c294f9515c92f0a20203c23d87f06a282704c81684422d4cc95fd2d3f2a3b1f934cf72af36183b136156538e0c05251e97ec7a05907c45b135ec8c1b7e1ba59dd797b9a27603fd7fa376a149679277643bd4efc0852855c2e3b58edfa8dba99d657567de71c5738055f1e37bee36f8cc56efd6767320b2f11339ef789ac270c2c48f4850f936795eec5a11e919efea5085381312e8261d85d5a4958b7d85e17334d802c64a83a80c27da87b9f68b9859bbe52bc6e11c1590eb9a78b462923941c36cfd4decc6325ef6d23363a6115000ce947df9cea8b82c92998489f014c6fd5ca86242ec65d309120ce31954aa509c1250de78ea6d3f090d8418e3fdd6a67207c0f93b424b277a264841451f9c0e64c2a837e1fdf4506c0ebb49fdc86baaf4c9c3d07f80b5d1c0f1cd22b2ac283f8c9ff109b8406e6613a98e07ef9e0832e771abab450aff85467d9a574f9210e649624e27c5d55f2532f4f73545f9f6941803fcf5bbe96caec0b5edf59117916b331040ee9e7f9436c3f190fd515f44a1fd4758bf81a8d19c616d4296e725a0aa5740060b5adaa51ee9ef4c3b47472b5d39022ff7b1bf615c359df44e4a1260bb0ada6ce51e93a3508ac1f54a48e3b549a3f5263324e24955541bc306a42b7f01c68e9dd7fbe83908e3c2560a9e95a2e7468154b9e896f673b99ff0e9c68a660dde4c4277ef3fa6e673d2e80753eb56fcc2ec4dafa3621f16eb99818d1d248f7ea6dbfee87161d64257642434dacf04b5124d075e3b7be7de20e37f7c2c47517b8652d596cc66bb2fa0ab3aed75fa235ecf59244a165ee041baf24bf3c70213e7eedf8d00672dd7c29ebd1d040fe171cf5afe1c855173eb6a37dfff6fd53614469c5f84cc13c9ea3e610fa14e47bcb2046d6a7f53e979980f44771a7c04465eb49fc1a5671dd013e4b902e6012e556fc812abbc89f17ddd7a3af6d765ae838a631f265500a8f8d8302ddd41a7b07bd00f2c53c10dc5c06dc1baa72cd74c6065c734135bdcf00e1f3bcf50b8de4d1d14d8df7971deac78976e584106a0af63a41dd140d970373930ce7f200f753a0952df8584b158c18df7aea0c44288a177f2af50db7d92f63b6c80e1bd716c1682445b8207e33eba3c667d0bb0dfc07f9be3cbc66d9df1f756f712343741cadcb0e8d2b6211c5fc278d86e7b1b4f7a0efd09f43186de95e7816e44fbe3196af7d8607e743f8734f59b08be999773791b1af72cf4063946a8c042ef703c6cdd1eb5d8921a92872871ff11da5df6b8911cd578e78b22ffd2193d08ca639d8677ecf4375062a21b5ec9a0ce94eae11a753fcaf3b9c23123a32c2338211eeecb513b17875eaf6e0f93a103ca34f89d933354838d6f3c4de8cd7e9b7def5b4e279f900f11eb0efc742226feee7b6f02f962c385b62c5ebd82cafa681c8341df8c43e3f6ba4443072ab11d15ac93266e4e64603abed7edcf72c440b2dcebb46276600c1a4f8883b672732eb29149f89620b8e97642bf851955c60be7c1b4ef4b55a07398133f55f079a09f871341bd32b75473a1f258f186747511edcaf33bf93958ba0ff444e1739f1d1802f1bdb3d0e0ce11cf1ef6cd63606ed8819bc3d357cbbf64ff78ca231c3e099c7e5085584068defbbe9b509ca11561fb2e50bdcb4157605d46bfd5def244aa8f1f6c2a54d4615a21b383baa66e2c3f8d5a39698041309d195e5ff8bcfd34554da974f60030b1f65c3da79c95c744f14faeacf64d2de2370b2e7e810214d3e84a58310be44c962ec78a3d1e01b7a8c38c63eeff441a7b6f5771aedc947a01f8713b5c7462fe164fa532e5f2eff7855e7f3a41f277ec983cbd4647c383deb2eeb502bc5375d865a9669e5d10228998c30e13fb7ac1842d978eb4454f64d47f29173bdcd1903adc732e81e761759134a534623bc94b096acdb3de3b780c4ac7132d30527946e5f798426f5408ef170aed07c4f6ba40ef0f8b22d96715f7f7bfbc09c3eff4e89d5c29fb8661c5b250d9d5a7aa434dee50ac1cdfe19eeaa093d45fc46182f5e949ee3fd2436093c09a4b7d27ccef73c7cc2e1a0ec0b3b112f0a0351b768ab834884f3b17070fe77091b8490c62ceb8e3fd581d7443e4c31577b7861a4833fc59d6f08764faee21c9dc00387c4ed139c6a7703420d2fcc10e5f60cf3c7da2c7d31153ad83f951c2ad62a1c2a31dd7e8cbcee82b9f7b3582c006eec495893c4559ca17c32bd8b23cd9807f8e7afc0737bf2cfeffd84c5885f487cca09f53406d3383ce33d6f86926e34ac7423f9240760c5648a301d7f5829a3d0b56251eac8b0bf3ad4e1395e334804434ef6690e9bed0a655b9f15733b66af718fef8e346918b95bbff54400e73baaa681f446741c3b116a178e19e851d911a10b811fde93a2910dc81635d872651af43323058508a6600bd234b2a2b93aeb9b894b82753f873441e598fb82dda5f0488742a8057b69c031561a671345d06d9f4a2e3d93dc5a0ec590d999c189c5df40a8b84aaeed9e9948aac2fe4e629de7aa3af14d938ab520e28ccce46df016b3f91749f9618b8029b1b62932dfba4d695635017a85b4f1aba1c50107642969f3e502cfe4885bf7993bab7d3b6f68e3d443ba86878dd35a54416c216622d27cc92a3e3fc4df7ca680ae1648ab586f2b4f4a8a5f01b497ca959b66a14e80814f8c98051325e5e71dec17552e7fcd43dd709328dbd93b5db3462f5bcdee730e83365e5e969d5cf7e048dc8edfe07d04ae92bbd9a30ac405088c5ed865debab11ec472cb06c972acb05e5760c311b1442d0807af3e9174afebc3a0c376b2f026d1dd7ad1f376b7d11816c1a3570b2697be8cba1d240f730097c2914515453a1d9ab265e48e9ca2fa56c08d208527a4f2727de4bd53c5658368da41f98d62d9741bcb69bb5bebf5b9f04e4a0a439d85181db7a5136357e09d267749855e55f90e25696e896835057b29a5ff86419ee6678454bb56e3224ba72b5ba4ca7101045c5ca0910178f6b30cea54a821d8501282a564e805c3aaae1382e5710ec280c40a9542911e2f2410dc771b982b093102045e50a8910970f6a1ca7a58a829d0500292a5748425a3aace1381712126c6e104222d4d830b340a313525861318952e023e38086818f159e4d1a274683cb0f0c031d0f1c2929554c8470172c5614ee2004a2a4583119c2e2618dc7615949a8a3203005c58ac9109647351ac7c5ca021d058129282b25415c3caec1382e5616e81402a2a8583901e2e2710dc6594a44b0b1710022c1e60699224d4e4841e5058914831f18831a053e547e68e238321b583e310a74387c4051b17202845db45451b0b3002045e50a49484b87351ce7858a829d058094942a26425e38ace1382f540a751204a4ac503111f2c2b146e3544c48b8a16110328166a34c428d4e4c01c585c914824f8c021b063f507c6cf238300d2d3d320c7630784859a13209425db85859a0a320300565a524888bc73518c7c5ca029d424014152b27405c3caec1384b890836360e4024d8dc2053a4c90929a8bc209162f0036350a3c087ca0f4d1c476603cb2746810e870f282a564e80b08b962a0a761600a4a85c210969e9b086e35c4848b0b94108895063c3cc028d4e486185c5244a818f8c031a063e567836699c180d2e3f300c743c70a4a4543111c25d504c48b8a13104896063e30c428d4e4c01e5a2248a81cf0c021b063f503e35698cc6c1161e2f8a15583e5d52389cfc876b0c2c0c218444d411621802c1c6c679d048f9937aa6eebbc47a45f47e64e584acb754cc4e65fe45d0cf7a6710b5e54216ecee9374f0745af2cdbe80a8508e7dd46337ed42fd7701287e9d3796cf53980a026e81d71a32581d02bfb65cc0b696306245237b1642137df2a8f9b6f202c8b86700bd669324cbbfcba1a4f067b146cb592cb0fb7f70f30cb79902aa59b9b68f089859b472ce156c3319e46262e668cf19af289a485d9a62aecffba4be2e0d7897325af98d0b0185857ea976a2dfb8f560a7cb51470b0b80f0da4e87bae7b562440a13979baff72996fe808c884c1e30e6ce30e00755ea2e2c32d93ed416b7f823cd55bbb3a7c1b4ec318d19a78d5e0b39b5fad8ae17ef856037732f36f52a16c0a1db8cbcf52b20c708758360a87a314f200a880c9887a2803e161ffe96be9cae217cced28019003a7a97ad01229f92878d9268003d73ac67af57aeca11990cc1b9011c2820384310e3e515aff38651c423e77e58b0405d247762f69b738bc4dbfde51c4d5830fa1c726f2022052fe893bc81228d6e1d020006486d2e039ad43ef5a3d40412a07685b6b817bb3958ae41f6822e1557e663e020672f702a90d0db3d20645306a11605025e0c97d394dd15b0d2671ebdaab77bf14bbc278cc5ca9d22fae42b22af1a1df58ed468fa7c29e90b3a44c963740085c84c89fc91ddba5f06ea9a853cb77b42a4826c5c17c23f1b5a0ad22a078bde7dfa1642fc2a275a66945c234ae681a2d7a27509e1cb96eed82f8eb693657929fd2342c3f08ac6350a736b5d631439357bcd4deab3f961c46683c5b6b246618c90643d3ccaeaa69339bd963a6a6d29e2cccba6f20b05ecfd4047e18bf500a6189d92ebcf353891680f6c9d95b594eb5aca9057e12897d601c5b8ce2e8a9dc80de7799e6f6ad3eb25492aceb5e64179379dee2d8f3d9c7f5759266e28939188761b7e20a1c33bc796962fa27718038d750410a90b1fafd5175069295d4beba72e3d4dcd95591c2d6523a87836435d41f8d4cfd337f1c3ee7d00025b9b96daa9ccecbe2de53f27c53abb252dcd99488b17cc34b5ffcc14766c409f26b60e26f150e1b1a5536c49e606bbc990abe2126bd0234af94a58a53062de3b9b5725a061257228170929cd1d41f3b8b3804ac1a790e40654ee4af25cc52003e4b5291925cffada54c39734f8f3da874d084fd8b4980f8b2c4bec3e30575849e45a45fa8ffe36b5c4e749a9edeb3b46a22a55976a83d425a5e29998564cf485cef4e0486c449bbead8f3e79ac8490819d0139ff739e07cb44c940389454c35cf948d94b247f81fbc035896ea1b484529d4e39024597d6a2413550e75b48fb2054702eb8df5adcd597312d5f60f8e4e2817ab752e5b6d8ab399b436ae5d983061ef1676f521f2ee834b18d0a90d2369b07bae88488d825a9606e0d9a65703b190d9c99a58d5862b229f05968260a9a1894ae5ced9673557a504e5ca5fde1ae475dbde833137616a5bb07a7b1c4f17d7644899096b5b74667a7171fd8cd52ce22a1d6b00bcebda0bb287771dc6c16c7fb3f2d2f1c5ad47fda87cc63a364048964791cf3a857d927c1da787a9648cc8fb973c875c58ba8a81df1cfe30554902aa2324afb3c768ffea1e99c1e89eadbc2309e01394cca3b9e1efe8e35b7f979315c7785b0880e610076d2018e4bf4dac02a248af542840e5e7cf3a1d469f7339e02c184e949014c7f176c08aadb466dc88dd5d80f1a8f29f4ff7e07d29e32d2bcd932089cb6c2a653f1c37aca09dddb314e9a4d576cb944b683de0c609af6eaaaa85bc6f6fa20b4db6fb484f607df3cfa552fc320da15b15c645ed8a2cc4092656237c44de4c49b2f1d0e487b91348c9e1dfa3e2a4d84bd584618a888972c37ee0e6c5c59c57449a7dcd34e4569a9993da936d72e45b1eb5118dee692d27e0a3b8892110c62b5f5db391b31b54ab6e4f1eec64438b10ac59e6d9946cd1994f3b6e4e56c69816d43364a48ee3e5054d304d3d52ea2ac3087346611e80a9923cca421e452ae1e958d0a64aef8ed47e07d54cc653f4546105e820db0d7b10dc318ea018246288ea7c559be999addda14291ac22ddd5500e7183c4408451c6f8c9c6fa224f226862406b078e411dc600788ce02e6ae5bc37e6b4b2e523d65e276c5e3d579e53c1208a00341cc0cbffa99bdc260e65ca10fcf12aec3f68770382e469bd273984cbc67bc38368b21516051d71422765e96eb57240602f4cec5849180caa63666a51155288af94544cc06d6269dea0ca64b012787a9929a5b328ae5b4a4fa890049887e84c2f7e2c35baadb7583ca7db450351b76dd893872d716db630998196e6b8accbc4f35b560701794c75aa82ac26b998d12c0b6ef309656734b51c4f7614377cecedeff2dfa6b1d4675947775ef870c702c759a40e1b3c802a4b825ef7b30e310254bdb88466fd3b3bb01aff0a9bc92bfcf9871a41b4838e64fa1a222fad4081703b7f07c9cf8665ddaf14326d90740678045e4fc2faba9b217e4c473cb83730141d013212637d44b5196b16c819219d2a68fafba5fc7e7552da0ca526ed97d6d7becb7b98c1da5c397373147383316e8805ef9833d79e06823d0049b0121de1c9618e9cfd16bfe8c467551589ebdef4cf7633912dab1537001c42229109944248aea79082dd3609d33049c562d0df76b7ada03dc65ff1fa13d32ed2d16785fcab7e2109c96857f802ec8e2d695cfeda0e03de95104fc014a23b868cf7d26e5e6f5718aefbb7b603c7be4aea4fc054aa4aa248084820ce1d786490f3dc3ba2040f6abb57114558ab6118b3f6f9f39b8f019e8fabdddd2327569e08d37d35ac1c384e073a3754cc29a3c280dde7b93d2c300e077d87190e2ec7cd5a6510af494f8328c406ad39d4b0df28f707567dcec4e5be4be37cd81055bf7025178413cfe002df2dbda8437d6f67acdbecfe45a97921b66c13c89ffeb307214addb4e7afd0081369b1fe13c9c7225203889f606eb9510440dba57c68efbb431e4272858bed622583a7877f35999f3b79a2fc8d488ff8056648b51ef78d1cc5f11677104086394dfc6288c576db51b8cd2d7f19bb37bd34a6b4f088f806b05ed16e9cd4b0e6f285651bad7ade0ed5d59af8a48907ce8d2e0b418173443ed4ec0e89855165454934505a2eae7961b6999ca53c46d186bfa4ad3f64d90a776832ef371c1082460082e29ac933e8b6a0f7fac1b7ea062104a8344014b449b52a210b6f8489260e09c3705ce79796e494b276974e1d68e80535397176c5c4f1a7ac33e1660eaa1151bcf69064d841e5bc5270b975f14e8537431bd95d3f05e832cb32b04666343c9f25b0a6e14096552576c5c5c25163244cb3e1645e32560e2dcf37cabfd6fbcadf7bff1bbbe5a6f6b3949ce963ef8a38fd06da87c82cf54915242d36bcc0d227a1901c863e988878e4bfdb4bd1def06e5d0382159d4434426531c52ddd9697a01721027f0d1f7f64771499e8f3d01ea7d0f6ffe1cd362d47c42f1f48036e9c74fae8f326007f20b7caf010073897a56433af74271837d960dff0928957e16e09323f5eaf4f7b13de49e1f65cfebaa27d46af8bc4b3a9302c35e427932ff4447265fe0c758fab900766d4aad7da2039c708041d77afe89be9ddac434c7359f1b9fa7298822ac237bd05b27b1d46f19277d47645b47bd895934536d185a3cea517c0bb1bf2bbe5eec2bba3b6612e62d12521397a7cd3248c77a574c685e0e11ad289ee26560876f4360f58664ebd94ebe25f974e68253319749d8e109951ed89f28a0607ae58da68acfb8f272002c0180937786af9bcd2cfe3df01dd12644e8404da459750e3bc74dcd1bc24237b06a1698575d7725720f340180bbcf9c4e1ee507bd859bc5628a80ea96d04f370092ea5b941520efe6dd27ca5fb117ebad57e9c74138d308f2431660630ec339b2d1f37c3c60b14c5446d3c9d0f3402f1346fea22e13e17f13639cdefc55bc8eeaaa4e5ff7012166e135c8f55e781cadab0c993a8cb721049221ea74a8783de80ba9fe63f80858212e19c2224d32a69d18af1722bc044bbaad62c52fa063acc468b9a46e0b17f61cc7b341c9a9311ff2d6fd9e67fad34f3f5705be238c36f043708a3aa6d1f8e8c3363c1d6f03c59b0b77d7e8c95dfa12608ee6b6e83fea75942d16586ad6d7cc9b486cce2a42eeb0fdf50408e9fa332562a534ffc8b3163113258387162d68c546b238e706f45e5d2c0c126036aa66b381d14765090125b0065a159b6817590f12a1887adca895c5d24b6d82926fe8bb478a0a45b711f1b0cb8a3e37327a108bccd0a783301382142deb528f3e74dc7a8f2674d37751b6b3449f785120a0be2b160bf4b73d054732ecd9301fa32428c12e29efa3d805d9de84ddb895436ec4b4bfc45f40cda91f32c777121ca416f327c6edb95ce772e599532a2343fd291db5dd0d3a6c44f47fb5c79618db4eb8191e01a7313f8b2e07c31fc8ee1dfff3a8ef2416c8ecddff0b31358fb35800db5bcbcc7a09ffc66201da7ad7784483efd5ab56e70c6433019a9660645fc2786daf7fe4edc858135fae98f2aee85e936591cd2f44d1c738d6bf506886a9721c336ceb3984d50104a9cc7095ed866d53530301cd60477df3fa5d06621be8b668f27d10e175eb7238098aff660ecd84b97515d7e5a3bd57880bf68b947e97d226cacdcf1078a3e8d3d503dfe6e11cf80fa35abb216b7a355cee9546b58319d7d19e09bae4b0ed298ef34ba88cfaec83a6ad50989bb3223ad200fbc8d181370b27f045434a4b30e657988dd338b999a20f94f95b8e7a88f559af29466ef6fa651f5009c19772d3ab8fe585b6272325014f6358c62aa8f9166eb0f4fdf4c8da1ff77f45e8cdaba8421eeccde34b2cfc441e669023e4a2c9f46c1a312a5f9e707dccd05f1ddac1286299ba0ae6ed7b0e753f873fb4a69a110cf189cb0046d6348d6497c97bb2aa341b00eb67ae98089b7493cd65b8aa386728aba0542379839573be40950664887ae90ecf6b53ca57dfa0b035ced05cb1a0175a984dda919f25a51d8b16a4ba7219e76d632212daf188a81b2a6a022c40bd72d0751f49bda2a6deefc0946d99095c4cffc6d9b3f4f9d24b673fa55fc4bf944708d12ac4e56b0e7a49c0eb3e591205e3e2e03b7f9136f4721933ff05c2d373e5aa3f43bdda6080531a8504475fe1963f222fb66b9397edc3f6d781ab13a81a711ff7be668b57d0963287f75010fc076071a61b1fa884a126f6b2bd4e1d00332f1ba0aad8ee5e04a9ead0b452438ec6e170a3bb2be55610035e291292cfa94e63c31bc5d1306996e23913357a85312a2213f39284586ba9d7d83d14b3da14c7045f1776cac0b4951d509507b7bb8d877731dbaa246236a5548ee85c956df042303d126edd6ad3440ed39bbc8adc58f8eaf361328485dbe3216e702bce8219ca55bf0faea2a984b8cee89e01a34b0bc247adb9aea3ac93a374cb8c31cbdc4eadd7e59418ed12886c8e13b7af35a68ad519da301ac6473a751122c01c97a08cd8bc4df3daec2d7695d1cb168a8d33aa8ffd1ca3fa8721aed21e9e384a7b58e22bcde1c44353b5f509b4a1c418e3addde395c699398086d33f914618f3086c4f31d4f01c8a584a7948622bc52189a9d4872056a90e454ca53c343194f290c4568a4389c7666aab532803c931e64bbb9b973130360b46694cd7a1ccc63b5ba31abf00c5c794a976e0bbca3842862dba4b85745f40b0314df8b19cb349f7ea8525103e0712c3bca8524c25093167f7edb04ce15ccacabdfee61d27a252da5258c1b33bbcad2590a7d0839ec917ac0dc9265e6286c9f776b2f2c5e949eee6f63798cede9e3ad3e04f33f87a19b85f282deec0175f5f7d99ecf8fff0cfa2437562db64e386042fb54efcc3e6195335899ce52ca789900d0642ec2be7d29af38694e68ae7d2c475cbcddbd2a74d7433bc5b9dda18cb5c80f2f6efcb4bbed79bcc2a3637332c6c8d2f89fec8876ed6f5072d39f62f058e5f1b84075a08560d9c4db70e558e5d25add81781b6925886f9cf668d905fd0c64a68c3fe984b19e6d8960d4e58e4d789480e47d2db15dcd9efdd77a300fa76ee5e37bb0de8bac77d8114c34261a29f53113dc57d2dc83bd3b8674a04ada04b64f3613a00816db12081d276947687f3e2aa71906b22142d33b8b9fba144d70ccc0f12974c269a91fc5eaa13478a065565965462ad1e27e5c92f15f1c51d76176f3ec5d8bed81d85c0385782635ed650e6be54b8c5a291c35341986e98064af4a853c54a8e887aeb9be960703494a61c8a94bd2bff510fdf0ece1c51326fcfd9e352c466c0034b74d5dcbac09106c9c0452a943503c191fa818174101ea63d23f30db71016c4f91b158b3a4a8c419392b2a706921fe1f419b1fa8ab1ce609cc7badca262d1e57cd02d07cb83438bc6074b541636b7c3583f6d50776216db6b5fd95567d1406955155951a5cf13f24174803319e805dc3ad66bbe4e4b3703e55d1b7d58a6d045542c784ac05858254dce49f601180ba13fbd266315d9a2f860a552a15c51b53c50d62040fd1a9194fb432660e576d1285a2c807cb82d700dbe122a79d20ddab795e3177f11a4cae0219dc66c149f35aa4d126bda0acc09fcd9a8ab182ab609a369ff0e2daa7c413a621ece9c6a2a8108337ff9739fa281a60a1f8b28a15d16ea464c8a8c87107a8cfb020bb4b174c62f2fa5e67cf464af6e694d04cd6b9e72ebfdacacf854825a1dfe3d76059b728e2d44880f247719d67a934680204e1c37a4c55f10706718fd3441602f13dd9b78dba1731d4c4bc19d3edfac4ad6021c812f45a9ac0d7afe16b9a7ff034cecc85f2b1fe43415214aeb06d67106c3e468cc2c4aaf9763a2e5ec71f2e71e1bf8f8a5a7c392a37954a4481aaf846210ffd59baaa4ef1f39e4a7633f73878e6a36e5ca7654db5dd51e42a7d1e68911d3ce10cabd372349b564262928cc0c75ee1ab3ff684d5cfae3135536fc820c45a8f726c17efac24a853636b086da0958732d541703335c869b3b0f7dd435a2753b000c6e96e1235e3a98eb680f02a57b2cf7e5bfa1243ea2a0003e8063c18cf95632848edf6e8a969bda40f184dc3d110fd7dfd98665d189f1c1a6261fb2039f83b287ae8fddd348ad89a7ca981f278186211d7f018234b2fa3e4e93899080646847e534e2c0116b13b0cc896104143370285148de039741ebe6c8d797893d1b693e366988691810dc0e4c3831a69cda0fd7989bf3e19d71f3b7dff15bb43dcd0671bff5c5200331200af1584acbca51c90603d293d785edd19e8bd1c747559b7b2d0ccbfa6dc71b6d2a320310dc81d3c0b91df7dd5f0eea80b34ec641d74863ae46190da05d9f76a19e2e98a4602496b71dc0289683d90d4a2a071e0c9ded5cad89b31afceea0cd4560483d6f87f2426e902a9421a76d067cf6fcfa0847fe4daf411c30e6ce18b5b0bcb22474f65d624e38cd3030cf59b4ab04bc8ce3ab0c36ef6f589829016f174be04d076b5b0c7af7435aa9012273a80e219c6c4f6ecc0660eb5859e728854bab84c2a0e9836f753b6c07c0dba5f6b198ccf3fedf881700dee2dd2ac301cf73d26bdc5fe83eb5b2aeae7b0b773e4c570829c33ce8d2016b2c332ce89fddefd6199f00c96dfa5a88002e319fc01cfd04c220be2ca1312a6e09154c5ff9dda89d92aab0d3d0705c1ecae9c1a0b6c4d92e1640dad5c142166a0b1368b1e68791a18dc9e8ee163f4bd8b2cb7db7bb73f9591e1465a50109ea7d7c768ab945aa7db61ce6ad73bd662446c1ef768b1338e02db0ecfc1a975639a2ab39be84341bdd74116d10c2864607146505eac7fbcf5510300b6b73d8077c1c9686cf12fce3f45029b7fdfaa13aa07b8c8b63d48dbe2bd0edb0bb0a145493fdde4ade225eafb4a5244262f85706a8e7ffdf09d1ff370aefffff6f365d75b73a64e658eb13a29e0a59594b018d0c6d0de00cb07f5d9250a832ea828242b553d4a21b84c16e5997a6c5174909430f309030ec80e18aab517bfe130c5a741003148f8101eee843c5f005019c08e0e8ce4ae84e8d0850c5c9c765121fb141e50b2a637a901103f5030c971e5ca864b142e5b45199a2e24405a9c799fa3d353d3d1dbd40c69d15e46bdada8af65b5dd382e77f95695ab09a166735895f57f36f554ecd697bc75b3e7ea27a6597c8bf593ce58aefa7294dd8379a1286d7f0754100eefe56d71c3aff95b8407377e196e4820deefe94432f79d328d70528dc6b4caa4c41a79853c2a92947a6fc4c810999b2634a8e16deb469014d0b665a18e3d78eaf2dbee87eb29269de64ce2925871423524e290690c2841477f2b141821b2743d814e17077cf91e124c7dddd0ed574dfa17a855e3d91c3e0452b02114019bf02d579fb0d2e9c55468fdfe0e9c218c16f7481235d48a3fbbb6d8b0b72f71f2f256bdcefaa9ca3b6f6cc8ba6e645d3efb3bac27b53dcfba67b977f43bf16da37c3972b7cfd366de9427f87fb76d153234137b6b7872a6dd5397bdb76ac3bcd6f9298d4b6f6ba861669a87a359ccdfa3a47ed164a85de68ed35b60236923bab849428687c26563beebe82b7d22e5a292e15a185a241afb87b9abd63bb5e73a5bdb4b4962b1aa0e0997ae48ba939e25daf695a1b3ada9a33c53bea5cde1a7e9b54a37889d214c5a34ce03ca3824de7b33e9a2b62ededdab3bef8e5d54fde32ce99f9fce1ceaa42419f8b82c667f28f24479da03b8b847f248fe6885a67ebcc61e433b94c6e227b198125825e12b2e5862d545a9947ce71258dbbbb8756a96a54856ee314f9df97c3979271d452d154885e7cbfefbc69a4b0626b5af371356d3079aade7842bc1d0fcaf34c346611b7a79896d6edbc25e0f6c4ed04fa071e62934383aa90564555095121cb0f1584e0a142190da4b4b4546053858305342d273772b0fd64dddaabdddb2de27e69d9c4707730d090f14e8d12152fee675a95b36973f7342f3367b1c26c61cbe66483d984fc4e2bbe358cbd6e7a5d625cfec4fc1ac9cbf525ec0bc3dff7d633c7f2fd42dce357ecb50b44737eda3a156f179b6fcb2892fada3587b4ff5467444635564da91a9ba5b758f5c2bad17b3baa1ebe61886b77c4379fb622a92dbb00bb644bb0168446840c08a3c8d70882518ad698244a4044404b7422e2782cad5742ae41fa40e2ca334a25ca1ec434ca25ad12c867613360b5b0513c12568a3d471e5ab5195ab5a656cd45da403234275ae08f15d0bc905bc1882605142f50d017707077a75a4365866685fb7e918f53d743a1ca369c51d2507d22c32f253f2900f9af913c99e2899427ae27203cd1e0098e369cb871c2c6c9174ecae0c7f6a6df897c3433fd96c249fa4b3433fd998220781bafc04ca616ddff68c6b5a217071bd5a1ea9d69f53c8ccbe4148f29d9949229aa29ec7ea6d8be5984e2290f4c619952c3ddb7d5d649851c47f7bd3a42f1fe6c64b575d2a087cc148e1e306dbc29326ad2a689184dccac29c93409d3e44b13b26abc5accbb667208cd457fbb287adebe86638dd559e8aae11892db8a387badae46cd2b5af1ee178f888688442b45462a06a9a1a813448d7167fdb8dda82326372638526ddc59214469e9604dd41935d58a42f24e8d522bea47e659bb6be49bb88cab62f8e6316673da6efd56a4add8feceb6f1ea9dc2ae7ebca6989eaf6dbeeb757d9cb799c78c667dd6f1da4eab6b193d737ac45785a1255467dbde69bee335eded53b3c4d7146fb656752ea39a986a1494d4523a3e540d3204c58fc9173d26595833fa7bdf1137552f448a4ac274a40446311d2d25398202999a92a28aa49ea2a0989a8ac0a7232326a950d718bacb323f69355abd9cadcafa6b8fe26b6f359dcb98fef3655db94f61e10b4d4f34cdb6a23838932e6b9e35a7ed8bfb4cebe36bc2c83fcf5bb5f1dd50d57b6d5d337a5d3577668d6233e7f39b844cb3185378eedfa4f937f7e4dd689a3f5d52bd33ade463fbe668c933dbf3567119a97adb56bcc3d0346d99e69cabc2d0ab5752410a4d28418012234a50947a2841d352a200032cf9286d40890c251adc1d0d26dc62722da969bac15485bba7793167979a92dc9d0341e333c1f9e25ca49fc4524e669c6a706a52e334a4e903ee6ec45b4d45b49a6e70772f9c2ce004822537dc3dcd13069eb83479ea96a0692dc9618995d61227ee2c1ff896496c9fbecffc2aad33b68dbb42ed1614cf8766130a4a87d78b500ff852031a296c49c14a0a670d486c52a8ad14765061259d99c206143c294c97a42c1848b29274d54a8292a49484e38dac0d0d4eaca981012e86191b6a409a6222455db9a19491826048ae1a268054917678a746a995840d0d4b9290b101772730f7554242fa49fba0a7bf7cdb98ee5728f5a1aba237a3e7d5e37ea3ab67f2d0cfe1c7d89ae752f51e6750e7b15ad3a9a200060529145ce80b0a6550a802c4d63cc1230cb0474868a120c6900240212b42a71095d08f9611325a46c29cd7b66f0cf98d28f4d6d0346f555875aee1575934c4d5223790701ef1bd7a0d6ee0b838b54feef4ac40abb6319f5fc14f886633f41be30debe5d02fedb66dabc79d9eb496b716f9db45c76a9a166771f8f54e4f5af7cde6f662f8e69876cc17bf6889be287727bc3e2d2d2dd1da41e2ee6dfd56e966f500e1030f3a70772e2aa800dd8f5aa5eabdf65b59d7db5022a35a964df5cf974b3fc6b73e2d2dbd693e2d2d91190361d0fa19f3c3c5ddd3909909a8c79d85c14e4f0a24ba7b194242494175db1a15f433c5fc21a9947e90f4cf91d68fec07041bdcdc6e4f4b4b15ca93fd5617bdb7ab4f50df6edeed61d3d301f774aea6b579a2156f3c80c7a8c52386e787ad3d1c98c974df6e604e0e183b41f05f972fe55f97dfc64946b6319f479f6794c474bb75e3a0f7adae797fd7dc2ba9ee9ec45b332ead999a164d070dc7dd7b788bd6a4a5c50107ae708046150eaa98d2e2600b77f719cac112210c15d34c567cb5c5799c63393156961907678d5e9de43454f7ad5e89efffcd19552fbc7ad288e7edbfa6b647614ea3b84ce28bcb1aaab67278c859ca11e2cee2b15b392370772f5a3208c842998fbb774126798e066d786e2ef0d8786478676c18e235d1f2be785a6860d9c0aac15940ee59ec6dd3b5866fad66c5ad3d7dbbe978b2580c5f1b7bb34aff2d26568deed63d6cc19a3873bc6d0573b9b3387077d6d782d5166c8779ad466b466dadbd69de240bcb99f8c670c668c6e868cbfaf8753e6368f9e6befb0e413f37a496493fe23cbe69dab26e9d5d75ff7d61ebaa5b5b24d5abe5bee6b6a1379b29f9cab9f65025f2438b08929b215c5a43f2900f5e2068bd7268bd9ab8d268b9c0b87b172fd776c15c3fbc53a3d4c251a38dbbf65013c519ad1637d6104d331856747c8c739a42f5b669616452b5da3ad9378b72a27edbcd84d9dc1eaa5e466b9a7ebaf7addbe2ccb4fc9deaa8da3a0185d609414c4063420c2d137e4ed89d0a66b47080b44e90800b38371c2b2400384f9cf030c13d3880bbbb10364c943ce8e2ee2ea48c10a7960761a0804f421006c2348cbce093b07a501bc7e6769a714196041102840b20555a41bc84e0833bee9980903b40604280fc00a2c1b67dd5b9a21be7c98b6e10e7f0ebbe24911a86b9af22a18bbba7a93032e9cf5c54ee95b8dc1dc75b2494d1aaaf5605803baba3e9a4fb1ad52baa953babf5dab9575282927a02774f5302eaee5e948083bb77b1c58a776a945a24a02d0ed670124c2aefd42891a0f400372d1276481042420e36d8b4462843668426be8cb065842c235019a13582d91a81ca030ab8bbefdc57c15eac579f15c5e530ac1f796beeab4258b873af04bd7aa6b0c2c2b2894cfa3669ff4934babae5cbb5c90be6beeafb76ee957c5f54b8876aaddefe33f715d558f5cc8be2d495fbaa1cf621ebf1a6471410bef0a14208b8109842e85a3d14d0f27182568fa0568f00f850a2e5a38510826885c0e5770b842b777710ccd6076d7c60e603327e9464e8a9290a0a04bf1ade3bf74a480fd8f8064dd382dabe39825f0edb5b252dd1d65ed5f8b67c377ef4eabfcf831870e8b0766c20002f1b25793a6bfdad0e48f70e6670f71abea4b659c44d6866b2da3a5175e0d40152ab831dafa8adb9af02515b5fb0dc57b9d04ce1e1c52b005b3c845a3cae7077fd18d7947b253bf74a3253662293863253ee9590b9cce5f78120886fcea8d702e3ee2478ab75811609ba1ead2ea73bd2eaac171164b0c6115aacb8b2c61655d608a335650d362d740d36c26d73e6de8fa27603361b582177943b84786b070e57b6a00d907e3610d25d1159ad0d7eb436d0a0bbd2f472e9a8e2ee697438e1ced281ee3cc56ce9a0d211d5d261d4d2517dd4f065d2e454afeceda5dc2b7babb18aa66795fdb3a2349dd4fbab7359d19dcfbfddd952f576baf16f9c471caeb5eaf3d46f6b0d97903c31c9d55e3d9679e3fdfa9e575fd1fdf8cfbc141d9b0eba0e367077ef3aa7146081a1b7cc75a876ad5698ae85bab37e724eada8ae65e49d1aa596ac55f5a3e5d0874f35bbf78f8fab868d2999b5c555fbe43549f2de6cb53497b8a1aa5c370e7a2dd3f795650ec3327fa7638d4e4718a1a8203249006327001c774f6343d3210110a0dbd1007757e2dd8e27dd0e1ddd066aba0d7cd8c0a9db00834e0028e804c084bb7bd145070e3aaae84049efd428e978d271a4d3f1d3e970e9e04183100dc6741a80e1e1ee0ef57d424ee739b46d0561e186855be7a39c2325e117be94b89ac210bc7aef8ff09be0f65cb52a39aa44aa920c9cc800880ca0ba0c70ba0c70006002eeae82770040bb0c4e904108ba0c2e0000588e36525000276f48260d85b73c66ec41a1fa2754380fd50e0336397cfc9bfe96a1723439997312d31cea7254c97185bb93f1050666301823060330186c2183eaf7aa9fabd60f4afd2e10e382311788f19c588e252ff9bb16f1ce8237dd0539ee2c0ca02e506ab3064d678118203a0bc0741670b1e00a7945f3476c47ef5641e108c271026b8c92fc28b34ae4d6a0ca42588b84504e4e4a7e23ec665d707ce14e0daa3714e28a6dda2bb41464c5e8557c4fbc2fd9b1a640d3269235821b1d10774733d30d2077ef6e387537a27813ac2f5d585aaeb0a85c91544847602c21ac1d9e4679121cdf2a67fb8d292968e3cef2e9e1e1e2f13571d32d09fd0dc67274807a68403db31c1f6b8168a30e4dfc9d1e998fcc2716fb1a79b518cb95ffe0ed82628481aae1699ce08cecb4e8be5df404f50420a001c3cb9c71b5b0d7e268cfaad19ad5a6dfa9862f9a66fdd79638370cb539c65eeb2f5f9fa6f822cfabdfe9b85312702181064a2096a05582164a40a6046a4cd081094613543101152640a38db38d0fda08411b3d6809420457569862a241e04c18c81ba882e8212a0807046184511024080ae20b181924f8110408746833962c052f7c811536e50ab59d0a538d86e4dff4548581ae30dc61d568b51daf55c651e8c5a3d450958ddaf7fb76aedc17b531cfab614b1e5598d351f872aab0245758c31d2685a15318ab2fd1553d7cebcbbaaaf75ed29fdbfc9cfbe2e7552c8edbeeab1f4d73f86dd4da9ad40fe78bee8dedb54bd54d0e1a5ba0810034aad0e8e08c2fdcbd0b2132c96aeb86053728b87b17e74d23151d9d378da446176a24408d19d430410d0fd248020db09586998690347ab8b1c2ddbbd83829042e35dcb87b9a1d8224422083fb6e72de34d29bf44dcbddd3fccee61a205823cb1a3be74d2389800d11ec2082235d048dcfe4cd06de283102d93e6f1ac9dd5967743923cb19f80caa3394ce083aa36b99910233d89841c58cd38ca92366c8cc10d232030433bcd5c64d7745016d9a68f3a54d96ab36536d8eb4da0861b5e1e19d1aa5361d0d5440d0020108847077106471bfe93d3e0b62baabdd7bc76ab873d9d6ea65b3b417a755a739b76fdacada6ceae5cc47ed25ff76bb75db7197e1538606654829e38b561946a801819a21d458353ed6b8b086c91a5f6384bbfb9a35d634c1012f381003078c6ce0031bc86103336c4087036f38908136612061260c2c34e0250c323450c50cc38d06a23410d412e306196dc8f022860f28e4ef7c8650fe6caa64520885bc202c278e41460464062a203f034f19e0311fffd93406cc186368a932c6394638c69131605ebfadbd17452b6260050c5471df3817f98d1df7dff8dad16fe874e9f09ff97736f7fed10b238b3b2b278c303cbdc914cdf9e915e21e87ae4a260d6da8ef131a2f6a51a8baadd2f745057932990c269b5522356ce2aa4446e4d758eeab1e8c1c5f88d916cc647a011c60a4000c21fc02625ce0880b8c61ec201fa7603c81f1815102183d2ed0c1fe82ea0bd81742bc40e3c5182fc478417ab1e3c58f2ecc7421a68b30ee5e95339ac974d7a134e750f26d237a711b0a95fe4ca6fb09d5e36cb487329942a5e121cd05c84ba65057672b4d162b64c25ca5b1912994b7dfcafc7ddb57665a319b35fce7b663c5f77146c9df796773ac1540e3398be302877301235f0a96fa9dcd222e6270e7c2cc4d7371067afe380e5900c702d99f2ce0c50252389a0cdc5fca85cafa9da0d17134a41765fd4ed054713442b87b54d179d348f8cfa60a98a900980a78a980950a50a9005901aa0a04ed5460470572b45953e6cc1467ba6c3933053da374c6e88c90333fb660c3cd1668b630d3da02cc165eb6b8e2c558b028a639dba9aba2faea6bcffa0ac36ad5c343abb4afb2a6e8edf46e9c336a54bd7dbbe9c7d55de69d6651a357e7abeda5e9a4212ee3aac7ed2c7edc3d4dcda2505af0c8a2892c40771691a09772a12acca5450e5af854d84e4feada5a34e1ee69b42081191acccc26d064468d96992fdcdd8bd3eaa80924c09d3564ffd59f2e990011ee2c0c5a59c85a59d42c1080851b2cc8c0624b68e50a0b2a2c908ec8829061e1fac101588080450eaf0c9b325f9431e364c494d1a14c9656192bad325749ee42423b74a142a92e785e0b15e682e7b5904b89ea93fa6d74fcb2fc0a6b21ac151fd50fdd4f2ee5c6a8ead5dba317fc2feb7f694f9cd2746a9945d76caad6f0f5f23c17cc459b0aeb8b357ccb7cda310c4d32d77f2456e7b2765fbf551612324d5bf47d423b0715741ba7bc5c87fc2def2115b54570be285a3f3704cd78c850bdd60c6bfb16e260e60bed50c4e9ed96c78c5e1d55a11abe4b45532fe6ec0d5b71a968ca56f4a182ae3291b75fbc7adc68d51eaadeebbb9f7c5cad3953db8cd69c9fbe9d5608303d8182272cf004159c42a04c0b02b91cb8c74860cc0e6388a0c081c203282c00059727d64071050aa028864401c21812dc6fe31528c51952e020c514294c68458145145144c142143c31a329805871b3a2871519b4aaf832051253282183854c12322758f1441537b4aa2042059a1615271526b4a6b8c28a948c1a64c0883d895907cd47aff00bccc6e090f8f7134e4fc89ed8c186135f3811c6892d4e4c7142c9891f4ee468224cab092a9d0c23686207134c3021636209374bb4196fe3554eeefc3ef3a80abd5c41281eaa5e4e5b580d5f0b85aa8268cefc9f140a150c869ae9d7c854245f1c3d0d85aa86af0a738515cdd8da6a91d0346d517885a0505518ce677af5a3d6ac16966b35672e554f7f0d5b124df3df2efa620dd7b62bd524f9682a56285495bcb587878604850a66dbd6765a8d560b7b42b5978aa65ebcfb364e41a1aa641214aa6a945473fad32815f684aa7a75a9682acd35a3b992bf49227244282102077737af45b2b40511470cf1860834a272607060901031023018009303981114212b82554453114adc9d8c2a62c45f65a35a4718196186113b188154c49b227e089313868323a038a20c43a59f4442843011081385cce31b21310689f20156b41e40c3037e90c800aadfaa298744511237892e890c48313a926893841631f508253169c40c408c8b882fffa4440662d4502246c614287e2825c096123b4adcdc7d08cd106486f862e51c826a88a021840ca18103da70c01a3362bc38e08a031ce000980378b4f982e60b192e5fac7cb17d89827dc121c41b346384102384962a4208a1244490102e2176b0d1800688d100340d28e32e8a164bbd4ecd6b9190f8a1c847f2a668b1947e2b9c846626a31c7ade8e74b68dd8fed3467fef214b445a229caf984265a6faa1fb49fc7beb0f62c93db4aa61d854bdd70f19526de3ad154b136874e1a10c7001b42e6974f980bb6732dd64bacf9bb689e3552ce7365e41e1aca679b399278b615cd6a26d5bdbf88352352254eb0780a11f7efc90c37defdc998bb6f6489b4d0b8e146015e0c40d21eeeec43b1d1e6d7c60e3ee22b05e1ed4d65eadb43e647747af48f368b1f1c93cc6deb4e3466a7139dd48508a5ef176d1fd95ac6866c2b907237796ab0732ee6ec45b3dcce0ce72f5600277164e0f41b01e6a0f3b7ae0818d160f2d1e367a711a556124949799aab7718fad6aae5b32b0650a77d608ff04b50306eeac1332d861851d64eeac13aac6ac5465bfc9ae1ab3d20e55ec20843bcb041e3a7796902d5fb66cd972b5c5b6e5c7161e5b70bcd1010a1d9ad0a14b161d703ad87498f24e8d920e4aeeee06f8717b22a39a714ee31bab2f98abe6ab2dfe715774eb8cabb01e4fc7c7e27695ceb81a82218953d3a23b35fabea8f009c43d0671fe3edc546bf572e8bdb2a908623b82e153f56acdb892d8ea58f51eaaa2e9892f6c63a30cc309ff91841af7f85f9720ee71986db810369b793c3af5bb4a7a783c1f5afd6af8c662db1625a139ebb0eefb230e5d18f7f815269916cd51a1aba67bdfed5df25f2309ed68cf5b2ef2aa8e552f670dabdb1ed5977eab5cf1755574ff6cc79bf19cf66d4535e605316fa8cd73f2be34e74c0002aa9e85123ef99b85aa416aad1ebaf5dd38fa77fafa357335d5d8eb538dba6aad19ad57b5dab1c2b6b5d56a9a160cb1fda1faed274328cf1bd1afb00ddbfa73d8e6447bbe3ed39cabb0b751d5d3b05758f1ce610bea8be2af360861c3940d2650a006293504a1a104346041431334943408c08a125656b0f2c306310608e10a9a2b63aec47065c91520573a1ba26819000c190c20c5002718800459806401001634b09081250b2c3b60c961516a61d1e08608dc50e586a01b3ec8e294050901385adc68f9418b0b5a8eccc8010139d81c3cc0a10a1c8ec0a10b0e5038c40e80e600371cc01ee04716345970c84275030e30aac4b2cca06506f205273368f0425900310aa0a500386418f3c20c55c4a8026667134d73c5d64c2b0e4dc5a18742156e863033c349468c776a9486d83243d90dd10d31c40c4e42b7ab71aeb8c7a49967e5767a3d7ab5ab29acb0f0b5143ae11ed79029469af963aa44aad3dd577629c469bee3c5f589aa87cf6bc321e2140b972a915a85842a51d954f17d6aca894f47485149474446b3dc5781df5736ed6b4468d36623b65a7c95af905683aaabde30245fcc66ce625d5a72357d596d85aa1ed6d64cab977316e7ac90d0d689d55738730a5d356c5e1b2e872dcd892874d5ad5363b5bec2d7ec6f573b851516be96ea17eea5d05537adc66afd888c6a8ce6f4357bbbafcf1ace9c9ecc636ce9457eecbf8cb942229a532552674e95485daa442a914ec31d219a4e1af47d650643d2be0ec90f2b91ea9144c6a6ea916f752dee6139738f7fbbfadc386f9c459bad1ecd563b9b392b9d2bccd65a36c186d45dbf3d645fd99b931369773e87d40ff630a3aa03d6e189930e207409b8a24b400212f0d3f960021733b818804b12971e3d70a087263c98c183968e87d90e60ec4065871e355b92d8126ec94087257cb03e28e900c40f1628000c05244001413e78c0872b7cb0f203121f7a80e002082080c040ec2ce0040ba0c0026c5840b880205dd6e8a244175c97a31e8ce821edd2a34b053f3ca0fb21cb0f4b80e8001063fcb013849a206208a24917840f1fce0e0813fc20e4ee2e840d420035e0040de8c2a5a801b9230dc080016af4b0c4000730208a01421d0338f07285972b5ebece4b8f2f3bbe602044088438630a3142a84100029a90018d162d36193a90031b398491a10d0e5fe090c50d0e4770d821c3019c0e90430614b8bba39949ced4f628e7a86dc90b7cc1854766810587138fc502cb084b4fd00d5e7ceb2fda2c23671df977da57691bed9d7b255f5aa8a16d91727edafbf1a356894cba3aeae65e092e33a1a566b273b9d18722afd1d533a1d9847a9d8bd0ab67b28df93cb26d8b64436f1312a7f909bd7a26fc4aa639f4e67975d4977663a99d7b2543fb2fbaaf52d9b4ff9249af91a057cfb473afc49da5026bcadd716c77561327dc3339b9b398b8b3a4a2dc9d8bfd7255dc33bd5cdbaabe5cb5d6f0453393b2699b76063233d0e05e6485836e860dccc085bbff8833d35b813112cca11744ff1fcd56a605f7256518238398246a40c940458445825b1971bfd1f3565924abb33a50e54d953555bef80d2514f6df366cc4b95dcb6c0190c1b7f7f761f18e00629c45b4d39ad1bc59476e0e16c30efe5b510ca93beb290620ae9ec431c062f811c30530b0210386331d0c3d743058810106188a60e0e960a8fe3a1709a167853d090770c4078083bb0fe08a01886000340ce074a29f01d4016830001c2fbcc0e685322fc0401744e0eede36c2a669cd18f937f492f7eeacefdf72d8d6ed64b5ddfacffab76b65da0ab3911687537ddac68b5a30ac4684ac5192d5f6ac59d2ea6f5114b971f6ae1adf46c672adda8ab3aef65ae9bd5f2e7b7bdc1daa9ed5993473d6fadaeaa176db7dd3b9d47fd67c516cd1ea4109c3271543099f40099f541894307c52377a3708da8cfed2edf29f6cdb22e588365ad343565b27a9cde5eac9dda13e5b0368940ed562d5752913a94d8950364f564158a570b504c7066e077787e21d2ec80a8dbba731eddb867292ab5a8e855ceb4a02ee9ea685fb819424a45c4901a1cb8571f72e82c667224ed9d14214eeac25bff44b533a30050b99846eebd45ddd30850d174c70f7342e2cb97b9afde6981bbfbc2e4cd156ae3a6d921768a3200dd339b4476113a5cc2b4a18030045b145998a62d445819d6bd09c64ce305b4e2b7e9e61772a9dddd9e5365722c04243267bd992af72d8e5a81c9461f9839c233b7683d990710657d161311d06d3612e2500718fadb9ade7d570cebbe6f02553a75a8251f65052956c6ab2da941a0338503ba3561a1d3151061d6151ee7c9b2331d688397a303f05898e8cee3ce254d78cea3fc737ee2c273447a4df09b546e412d2047756d3d8468cb1ccd88d2397979777cd3057f57070cedec41ceeee45275ed18956ac63e7ee694e8b8312dd8d1177777bc6da1dec153bc59e78a882618de554f2863566516b44da47f2f66b6b9454c5747f95454d98077b699c1c2e97585f204032bee94763359ccd8aed58f3cee98cda9b869df656f769715b3c2d2e67a237e7271b0ae59d16b7abced5b4d6fb9d1a25fddba2ac8ecafc48728c8c926a8ecee313556fa80609523d6c47d896aa5e98433ec6e5a4a45aa7523005662ac87ad784024d70131f4cde742afca0c2132aa1276c9e6c7972a473e20127593a274d4e40a022bda322a2a3ba4e40d11d9422280158c1c31e536b806574e094a91e3a90b6421a2b30a05b019dcae956e05901078b2b2b90c001932a497430219348bd912293c4042930495e5264549b243a5153a276920cb93b140fa81c4f6c744f5644abc6b715795042f4ea71f8c436dab1ccb52eb9a25bd2c59dc554be59a57f29087da8ab675ad22de996d89084572732eeac25a7314e609cb6b8bb9749b030c4c1f62d1df51dab69daaaa6b0065d6522d3b463cf2cf5c47483e4c368b3214eb5bb6720b86d587fa7af98989235cdb934e75c38dbca246c6d25ff750e6732fd7d56f2bda25791ab29344d5bf4db127d5f6ddb3327d6edaa9eb6fb964916fd5bbdae1a8220f91f8a2dba2b9a71d6b7b7a1b78c5ab14be12a8520a6596b69ccd2b8d452d280920d9d1294534e53184d3234fd3095a1d4754a32a064864ec94f0a64a44045c754851392535192199d243269470701eeee485c90aae800619ab6a87e24be55e8d61e88eab7c279ec927c20c916ee7e5a1ce8915fffcce3ae5b7be35b81e48355f671df87c40448bc78fbb647330633ae258160173b475d3c09dd29cef7627b2b8d92ba22304e82de1569c05dc96aeb6474c4681b7d3192c2dd8dc0403393911a471b3c998b8e70d0cc74d47474f352b4a5284b5195a22945a85944151554e4aa3cba220d88da206243448694bb87aa5873cd6d3215d17bee27ebf848d5cb99b7d767516daade892d7ac518ced8555fde887e85c1ace862929daab76b2d159f3c6f793451fc79e8cd545f92cc63674403777f32171931f2f3a6918c48d977a9332285bbef5308831abe234eea8484dcddb458888abb6d44ed6ddf25dbb64816b546385fa107b83b9a993aa109380a18380a30773fd3ac93a010e53809bd44580a051f1cbd42210a14bc40218d2321b87e523701b9bbcea835cd5c74e4ff3512abadd3910760a923631c71e3eebb6c42d3a6ab27f1d0063a6329dd34347a0d67ddc4088e20364164049909221304c64bd095a02a41641055909251902ba806691084a3c89b365f143953648c98225cb414b92a725a0153c466654b68a5c85411a322414560458414c1d1c6c7868cafcc145c3e2adfd547e2abd37cf7cdee4ec4bb1e311c0377f7c9294b9f26eeded4f9f880660c182f3d5aae4ce9417b4877772ba6db9da5a4248524247dbb8139391704b7354d0bd68f7c2631f4126dedddd3e68c6fd5e9601252908214ec5b366756df679eb70bded3ee99d5f7ddd3c6aadc6d1dad8619ba085039f951cc6b6d5b7b3939546e8a99aa3783cd88845cf066f603030cbc3863842be1a27b0d555d185372c46875483ded089266ae468cd497ebb4a3579abf95b092f808488ed0af1a2f7abbd62cba3a87d087d20f0545e2b434727720fbbface14b9a19e9ad6eedeaa8e8cade58446fa4ed9b453aa3357c77368bdc07feb309f74cac2174e71b885ad09d75e4cf1c0aa2a3d5711bafd0fda400dc59285c907cf259425259a3af77996b102335cca96158bd8cb28ca0d984d2efb4dd59415fc3f609cd264c46e48d3bab08ecdd59df1a2267888421b2c5ca142244884cd9b2e65d8190f881947ba739ad5d587ec5c474bbbc70566335acfbcaeabe2fe542418931597d1bba714e7bab7f5465339794cee5ea70ceb87b9a978ece4585bba7790dbd50f01ae2a5c22b04d7102977779c2670bee0e8d0e164c1a182d3040709a776383bba13daf438610d10a13487a1878385843c5c256f58631676f5244653336f517f2d33ce190d6bec55e6c43f6f79ace10b334a8a89e90ec57493af377989ae1e4d6ff5b53daddde47d6c5133bddd9dcd97cb7a4545b5fa741584202d047101f1a203a205089013ba12b828418912c0ae840d6a13b588ea44c88d201908924510288484d1093940272448c809262c3181565d0d0e2612a890900307d508648c100607083b534dda3d445ef14958bd27c92b8650f01d2f0ec5190a0c465edc50bd7a3284f224acde696f613ded6d5b1cce471b9d8f2ee8efb26c6a1242d985a0e30379897ec4dc1dc7bb1f1774217c19f70f262cd5fd68f3630711868c8043842844a80ae1873bf959a8f8387d849d8f1f1f301f3cdae8c1860c313daef49842f650ea11e4e68b56a743b5e67df5aa74c6e1749a55a8de4e51abed79da3a6448b6b827ea3ec04001ba0f723a0fc47067017930c6030f3c148c3cd821c43b0f8cb83bcb831c5d076c78a746c906341db899b284cbd80bd1dfa0febe6b14d632bb5edbb4e843e1a6b096d955c3d72c278ad6f655d90a5f1e60f028c323f300d2a6e3208c8e831a3a0ea2ba0e055d2449eaf8cc7a7a66969cf5d8b1d4f1c69f717c1d9e1fa05949fe3c907d241148a6c3232377461e9f9e1f20d98ef87da6f9e391a5ed584b02c97666403c3359cfac27c828fc11818064b399cf0f8df4f1799e11d4a1895646fb1dd1678767569633dbf7813e2bfcf83c4da7e78746a3fdd080c4278d401981645fee8ca2483e8f0c68c70e51d164338fc623ebd9794b923d3bb39294912fe5eea5273c40a48cb43d40403d7667ec117b6c4e764a3bfb01a201c9c4526756923eb6effb3e12fcdbdb4eab6bdf9744859f1fd2e7878704ead1791f71a71c836853cf6365341dd18a3eef6377c451e88a4c0afa1ab64fdf17944213598f38923c3b3b3c3d40b371c7ead0988c3b3fa48ed5197f682fbe0ecf8e27f5b3a3d333b33be3d36832518767b47d1f2c0a48f6a333d280c8f181de879489b6efc36f820f7e1f0a50341f9ef1653a5687e74bb21c816cdf57f454ce7c643252e7e7751e48c633fbb17d9f69758d4491f02ce1f121797e4ad9a8439bc94a1dd905ffcca1df2794c343df97c33668e644e28bc329d86af2f121817e7c1e68d623eed0767a5210bd95394ca328dab73b3f33a0994ef9d3e363cbdff7236ec248beeffb36d0d2934fce66228da6a3b343032aad4677d04c89471465f68736f3e199f1d0642250d4094132253e3f3b5626a3f9d0fe679cc9683eb6effb3ea014807cdef6904022e923f2e8fc00d95a2abed1f7054925e9c864329a8ecfcfa8f333da9f1969fbbe5d65ff04d1af7ddff7812028568d28209596d62393cdc6997d1f990e8f2c4909442b653ee5ec7768b471c6e363fb3e19921fdaff903da28e257f6456042acb0c0e1df9f0f8c8481aed7f7c68e2d8338e463b40345bca64a338925f8a2f132af2e1e1799ef2693e3b3c25cfcc9631a29e9f9f97f500d17466f687676794d984683aa979ee6b649eb71bf47de7ed7edf2dc54c433b3a0f44cec6128847872c653fe3f77d9fd010ecfbc6b72a3ab2339240e24ef953fef4903ffa9036147cca1d9e1d998fec79683c3ea39dd9be4f5bdb5844c8a70788a70768ec218176de02f1fcd8be4fa31b146a529b5434bd9d10f41999cd74643c3a3a3c63a9d323becfccf67de0e38cc1efd309227f762c5049a3f18c332bf32149dbf781bba7888e0fd00f8f4c242d8fa595b21d1ddbf73d7a352ec807349bedfc8c6767a7146932da0e69fbbeef436fe5f7990054ce685647244b9e1d1d20b11447dbf7fdebf2e8a7b43b658f385a71c7c7c7fec87a6edfb74b10ddd906629dc4a76747667b4a5939ce807c44a0f16ddf87cbbae6f5f4f8bc38b33fa20e8f0f50b9d333dabeaf866fd5f7bdcee38b87e6b33303a2fdf4f48c3a40b41f99b57d1ff87d3b3bb79c73e8f000edccececc7a71c7f7ec7ca746cdff77d3ab45bce604d83608e19b8530d823e6438393d3c1fb121301f444618d2e3b57fb85c383420278460021021e48f202f20b3df20901284d4ed22c13502892df8da9eb7bc2342de417ecc808450a2a9083eaede0682e3beb71eb71140007546ed8f0f767a44f0e02ae3d0113aa8b2e3f8553c7a786895831fdaac86af6d5b5bed506d519c162dc80e5cbbbb840d662e01e86d820eda2d8fe0eb59550f0fed1c7ffb6800ba02102403a0190f0f8d340100a0dde4f86046cf9c1e83e4c0c10076410dc7029034af6d7ce130dfea4df0cade48a8a0964d309b3d6e80e8d557d60ccd5983600f0f0d44af7e8807608a1c3cf4c0fa9bc53872f0e0c5b7062c253c00aec59a3243ee3bba1c01702dd64c31e426d8dacb611da55146eba3b0862fd769350ea7dfb6a1e793a75dfad75144f5dbda7bd4d6ae95a57233268d10d2389272205b7b9ba5e4e6c79d35c38d1ceeac02a076575914fceaf7a1b9b6b5f77db7f10a8d2fd020f36dc0dd020b9c91c59fccd8821e2e602a184cc8487d5d91d78596aff43de926b47ca55a6bc5542dd42bf2825f231fbc31314301705800f718c70f679816e0908c08956f82a4992d486224a812a9f84d1024cdcc0202bf3956a0c52f106293d588913a6a1c27381a5915722137b319f1be46febf4645aa0f847115a2928a869c868a6a50bd226f91b96fed954c3b5e6c1b3fea08bd58cab477bc649a823b0b97c343f66677aa04ddf695d0218de4c79b99dc327ef296b1b545bdce4bee2c19cc6b2bca99b8c99d85cbbd12256612774f815525f755325aee95b8083b3d04a0e9b8b362d0309057a7a6530551702ce9e18e8309c7d208ee388c70f4e0f0c1a2b24d3365c25222bc3080b2c93487dc592fb8b35c604d415f8f3817a1630b527a663977d6d54ece6a3d8413b3e9ceb232c55bc32992342ddd59a8b33619363cf4ef54ff99424131ddc6a9d3eaa8acb114aaf3998eff749473146966a437458b6626a2cf4cfb1f099a999e6c63ba947314a9ed489ab789bb8bf0c432a55ca86d893e4799668a44a358caa96cc2f91ea1e397e51196221f4b35b15e2f973b0b4a55933b4b8332d61865b471f79d7d8bdc2a6ad133e73f7336370b9529f637f371d596e6ef903504c5d4941455c42495023835b4947105b7f62e6aa6b79c9915aba501d39d15c5dd739c3e533d533c533b533a53b4a9d9d4ebfc33e5ce22d2f9ba7b0aeeae030477bf4187cfe00528801760081eaab6f69ecc29b82bc980cddd674b0c00564013aaa7edf166b1f1ad4cd3deb609c608dd3d031870976a3ab2940137ee9e00df8201d2dd995c4b0e2df70308555d1deee19ba278b111318e782d42ab2654fca6ac1a29a1e237dd934632e3ab513ff23833b9b3cc5b8692cafa9de488903c2e9b4ff4d78834d3dc2433b1708eda3a33d5f07dd2ac9bbba7b0c432ab862c91de9a4967adff5a5d233c84879a705a5fdbbf246af1ad51f8a5645da2a9c8628165933271d12da33b7de1a45b6da8be62b536af626ba6dbbe68cd216f17c9e1ad3dab3f67bc2ab87b9577694c9f9cd5dae2a01103d5591caade579db5fed0bc80260796773911dcdb9eac2f16e0e2ee3bd8e27bbb7adc97acb7147fbd6d8bdb19696b6f9be7ed8eb68cf9161d175ff88d0970e10a99c26f42b26a357cdd59a545ad11f9a845e2ee291c110d11a54d3809c91393172d5104ba336bdcdd865edcd61eb859fa59b8ac1658e48b35678a164d6f4a7698c185f8a1cdd2ad3d14dfb476c56e0b12e8821c77bf794781ab336f50ffc91ae38a3fb419b8f59fe6dbc68bfecd865e6d737e68b3f49666ba5d51bc9bc01ae3587362b5bab7d75b7bfa86087e8104ccbc016bf8ea141809aae4bd553353dc9d04ff4b3342dc73892f686687bb836c98a0165fe4b420e3ae05182d5a5cb9fbce7d951653beff6a61e47ef5580b99bb6b0182836db87b166bce6bdb601653b83b98851577f266717a16519e13c12c76dcb3d06004a3dc48367289c59a8d85197710ecb0f002ea5c82574f6261825828b93bce97d47f62e172b71d161aec37eefaab74c68165ca80f1adc577992bf732a1836590cafc94a9ee5e26873b698970901210430223900029012d012a09448d09aa80cacb05eeebe5be0aace15b42fdce9c39746b6f6695e30de848d2e2322eaa7afb77eeab2a8ed00be6fa3efd55dadebe8f443778c26e19c5d6e654c98841860d77cfdd6ea9d115389e7b2557245d810507b5af8880bb93116039f9243984c60c193263be90e1a2854c9529644c322499a9f199c0ce6bdbe8be5755bc71f7345688e0ee5d54d1a60a31aa405305191b8e2487d027494b92a7c541852469439c85bcb009fdfd4fdf17157b7ddec24a628b3eeeb187628b5e7d2d6f8585b8c74ed5abb9af0aff76c328ca4471861420480101295e9002690a027453d8a6e8a628a2a36284977753ac31c51554d8a810dddda9c0424515156050f144981d516c61228428ce28a68444f11345f5dcdda160038a324c1409c3041228b6404185092877f7a5cce4c5721aadf5d15a7a13c9bf1aedf168344f1613c9d85f8db2507787e21d04aeb8ffd539bc126c69c364d2e005003f405e3fccce70d0a306af82731b094181052b320491c30248acd19d25e654d492e67da20977960ddd9d8b1b4414d8807b50aa507d72bb2426ffba9182092c4fc8f004cc97aaced80dc74a6d550301b27e2966796d7b6b0f1d577042aa49d7841b99ce0ab4dc4d5b27dbf7655c65e052c6b5ed18136edc9d24adbeba92b796607736c350ac4a6451e20a254ab0c4b7440b4b7059228925c82cf1c5126c583143092a58725758ae287162e162f3126259620a8b154e58268084450c258e8cd101576041a1c2f9d662d556ed59f0431267126224b14512424994f1bab597936382bb9320891c3b6581b475a87adbdaa2b0b64d5eae1a6ebb33fe9cabe64cd3a2d52a27be6cdbda5cb73a548be00c852ae30adb9fabb0b46ef4667b8f7072048e2372ee4798398203618c38194687a942fe101246c28c208c129909126890208344940764f0460c23d09031428c172d57a618711a111a31658493113f3b8cc851849b22ce1451c696b0eabd5cb5eed37c1b1151ee9e868822dcbd0b224ce0ee5ed07452303adc3dcda3990998cf9df504cccd9de564bb52d0133c768478e003ac1f446830830a4478aea1a8d4d187da394a199a11008000001311002038241a8d06c311b1703a67e70214800355ac4e98566417ca3331881442c49001000100011000000400fd9e0c49d626c9b49471036d5862af47563328cc4a4224a761eb1d1c1070a28d38308158b6b60f64617ab9a3510514deb4fca6b251255f0d8513a8404265830326c7151c3cd0d1ec85eda560cfa5c0efdbeb267ed97790c8332c3833fa43427d704f872f3a230858b3b00648954919fb2c30031ae157c117fc439a4988219deffd4ec39356cc3d03741bfed21a7981b4a44a30e1ce196adc0ce1e5bebab7b172021e31b2fe89731d0ae4e06ee93ba4ed374d90d71c910968c86eab0569590da1d353866b0ede51f066a49eeebfc8fcfb66a468b52395229e0f791be056e3816a48b7d18fa87be8bd89036e572f16f9e7072e71bee4aec58026be15ffddd97b38cfaf7f07ed40fe1c1207534e1130856a5aa8b2137ef418141ee29ae5a7feead7e34c8d37f4dd1836e1a7841e10faa497d73d330eb92a3cd709e2a2a5a3aac4f374eaa2ed24e6f269193ac73558e54f1ed8b701f64d87e57d24d8c521a41d6765d9be74c0f7fbf8fb8b228a4b4782b2f185cfe55d0d58224fb4bfafea2772235d2bed5678ecb9d4d195eec52b3c7ae331738b916cf19b61ec7b3d7e890fbf4805a45cf709b5e48b34d42b41d52e4e6ea46eb8cb77e784398176bfac774bdf456c6bac72b8ba97a016e20af8a66d00df14030d2bebdd11bbaac16401ad81d9bff126af60332c93807e17a1a4d0f2cccfc4c377f0304c998ad9f62ca25e6a325c4e001cc94a68124139d756261bd0f14088b40b6ac61882835d40b11b4ca99c2ed4dcf31c805474ba396500d3295d3e7d6f137f1cf5ec8f401bcd884f0e29b90d2b0bb77dc970bcd46ae501e6ae6b72acf690fd4179d7cfc18dcf058ab30f08feb0c30db3f9d41fccb7e5450cc8af0f10a027aa63b8d7b8d8dd16188025861f42c69f20b1dfe54e589ef5f633f01aaa890a4fc8f3348e80090da32095cdcd3d57b4faf301447f2eaab4dad74926660d381915994fc111a25021b0e5c15c76c21b06105c69bd1bc08baf13a51273d69071bc44532ecd7d9f1d3b92d91eeb56681082b7817aa928a3ca59bd6a1515e31136f69d56322fcb462624b8d3b2982a2a31cfa0504feaf3e8ec289b79e2d4e54fc00180c48c81dcb8d2b847e535c96a3015f7a7e5e87800c4ee9840632865127d414bdfb9ee6cf862383c7e2ebc1d72f7633deb4b1925f378f97ffc413b892d0535463877597c3ae4c6d1e4bb16076fb74dbaa6f07586d1532c0882b4105ea766c79b22c87e3cb8a03fd29dfdfbcfe3f30ee1b90e9cdefd12efb48e9f8eea8ccb6a21049e5a719c26525eab1a1063e2f7699f1a0394183c905fe46a962360b35941e659bd1879939a4e13ccd72d5816d37eaad8213cfa7714133f1dae21770c0883fb50b2939119348f2fe9e797fc1b862bb5729386c069e13fdf545ffc9fa86e8c17562768fc7fba3590c5694c0bd36bc2b09da978c5376973c4c69abd56fceaa20dc63d852bc169fcb37fa8e3b2d5dd79f6ff521f23333eb5e390059edc181b0f3b0cbf98b38f7060fcda298107828c13708a3f8c457bbd17f05d2a02e9adf238c351cf0dd1ca6e3116f3110a36c104610eed21f5daf26c8835d1dfeb8101a3aa38123b1bdadcd90dfc313b37b33db19f7a353cb0bda05c2326487055156841b13add4b29137ece8d3f327576847f87e3da83693a0d5bf4c629b5ccd423b8917f45c772036bb9c5faed2215adda285da4ccb51d166af0e68f0f12ab93e63111c573117fec036a03861755fa71274396bce455981294b523cf82c9e695cbff1b43934fecfc3efda8067750fd3d8a8adc49f299a3a846836e923f940fb43aafd1ec83ccbaac68dad4726f407500d453b54bf52a7c24277e138e1c23a8fd89a1fe27647f0b5d6ab082c66ecd27a99397f379a13dda6535f6b90b001fe1fb5bdf5160e6578fd387d825bfdeb9422a91cd4785f0d043bebafd793032370aaf8ae3b3de4ee338d4ed3c6adf2206120f7333c818e7df900da0e84c4fdadd43206038f6d197a96a15cb6f721da550cf8f0570d2839bb3fc03cb28ae96c8ce628117b94c4fe4edb6e9c316c3ade395fe1886828a39624d49ad9318485a6c1096a5e36259ab311234746bfc3b046143aa957267f1d18c03970854249cc340813e86daf75a7064fc39ab52591df858fdeeaab553d693b64febe8adc6bcda295c509ea65b6aab3c3b19744c8ca74154b5f7e1c609a051134652721392108c4012c934ddb30cd22df492ee9ac1889d882022ac4c870f5728831d6251bf0500da930b00277264bde64de9072b60ecb4976dc227eab9a742ba3d278f0e4dfdedccb2b6a789e3ff890671011719b077c6a0898c0e39e5064ed9a47b94b517484407a17cacaa543cd903d389c30fb74b0c8a96e545c4d9e843bd62155babe68acad4c607544ed47186a6b6d44eea13b3f50075dd2615b9a308db216fb7430e1e17b7dc4f7eaf5948b3f0492f491cd20a4a537757f1b71ad4399ced1fe8f3f30a238bdefb00ed75aa036ffadb1e8ecf6cf82c2522348a6cbe5dc458d84b210e135aaa6d11fb366694371a2de5e53c0a87447b49733cd64ee829e086831dceab8ee14367e6b4acf149b1c5e0ffd7fa66d41bec4858e7e6cafd600b6e63821ae58c712f7ae7f575c5bb3e42b5ed4df7e48e4fb1de91f0d34d89a23135aa3514112dfe4a886e75a87b3d72927a5be34fcd586b797f758eb592df20f64af113ac93391ac5745822fbfe8272a9ee2896c158f7ea78a168e7b09dff7f3c287ee45d3b71f1d7299f82721afe4f0dc48788e660313b84a20c16622f4bebfe3cc40e37977292fc087c1256dddb349fa2c404f82dd0899cbdfa9cf39ef9bf466c31430c2dcb9b39d0ea490b2421b3c4ddfccdd0a2365feebfe62b2785508de913225db93c9b2ab9788760772e3bdcda62105f7afe1cbe1244b32458c972bc6a452c3943cf68a4a531648a41eeefc109acb4f3a1af55baecc07e048864d7d1a937bb22bdd4bb0ee3f0de3c27b56cd1fde32e97fb0f1827691c694d3bd8a7f300325f2d1f1e2f8a5c43d9604e270152c80a137e85b032e4ba88982eba8c0d35dde4f038a93802078c4f303590b43c858b5211c1db4bcd10fe364e45c9e4fe2f1a84380276269fc4e0726ebb2025731c81b6d9dab5f235e42bf3442e271c45cce51da2c16ef221a9b29b1f369c906ffc44315d0fbebad97b212c1a6cee2a91fbece07f6ad1e346f99fc64db31bbb8b7f911aa3647c9dde6b1a3dca62af2163282e1edab1a85b4ffef904625b8b6109023c41aa088c90acb964ed760d830f01aad00dc2ad8f2f95da597a4be46fe4440ccbbf936cf7dfdf520168b2f3d872e45b496c52a0689d552a261ff3d5f9aae609a95124602c7fa195b499a056c6cd2fba9c56c3461b5d265c106f8db8756deb0ab12eed07e1a4f1649a2ab06c25139c8aafbac773fa2b258b62d0be8ab3cdb704d31c1b0d110c04135050c14080d01bf0f70622ddcf84029742fc932919c7b0a2f7480f86450b1d5c6f45b88cea329c9e9a9782e6edd6d57f60974d04bbb3ac0570f87bee8b5adcb51f916d32baaeede591a0af08d1ddf6093ac769fb050b1749fd29c92786a92d411a52fc156e5d6bff603f5390777632d21c2dfaa0daf1fd0f91e570361e912093db916fb89ba643578a804da84484547cd88c288dafdcdf5e66d39f0b66f7d9e93fd2da899edbebdf8bd433db4b6e288c2e2a264d67a89d84f839f6eb8c23f29792475f8a1527897b709dd444f7d2c872892056c87d6ddc2b40d1a82168f50a27a6893cf8f339b074d0105fb8874adfa904a9b90678d81195ade18801c27992bcfd775061f3b35540b7fd1d213ded1b5aca1adc60e48ef528b3b25d0e3dd6e90a5f15ec7d9cad5c329d673c864dc4368000201c32b349983773a4526d423a1a31b2bc8cdc635bfd265c29fdbf6f2a7e5227477c25c7941a9e219a0e14678d5078f7bd6d20103b3e561640c9fbd7c20891d0ac52c79609050299b6d5730a5f136eae29b7a4049f5186be8f940928b9b6584712b6ea9ee7af92c2ba4983ce327a044e6bd172030c33bfac4bbfd0acfddfb6f4a49d67aa943ee1b2bc689279f043ea77aa160f307378706074ad89300ea20577f72e43eae12f6ff95e90e451bef1f5dc3c7dbbfae2c98cc341821bd3ad8feffdcb76fe0a3c061e2f2f3ef105fd7338899d19e5851f7bf8fe8100c94cab4e2a00d73727393f3268a203d75f45b4a89e8cb6ff9b0bd9ffe1b9d2e13cd8fb4a7a47dcffdb52118977352422f53a2a9e67c74524b12463ec9cf0f8e067fc0828a32eed84a3c2148356bead2357ebaf08f93254ba3509a741df36774deefa2dfd779fdd8d19799c016ace7ae2d5bdc66c679843e9eb787bd6e6ea06a6e8ce47ad04f9d10f53cc56f60189db4a1416ac683b0a1c90330cd877707f33b1b1d8754bd1f4af71b87a38dd61560eec228f1fae1cae667007df4f335d8f5f4f5f708c0ba14dcfb4b81ae2403ce2720f72f96c61f59e2c9667a311c094333dfdc3ebc7a63afdfc7b7ebe3ce4af41e4f3c938172b331937268f73811977c9cd7d1ba5a2aef299708de8d37ce1f816bad314f808d592641a0d777308fe9447ff9aaea4eb2cd1824665b8f6d9d4a7919a7e1383e60fef1bbdc32f97ae9c1cf0465c962b78ae47ce76436493bd60c328c5931de1e0748786644902205530160d9fd20585391d35caabb91bde659e0fcadab1ec71e4e88678c867a1045f2444004760523923b1604ab1bb13b2b8cb097d59b955d267d78da31243a31f2bb661a676579232e8474935a7c46714bdfb5aafc26a073b19ba0e52712e0ae84dc267d583af27ade35b12c11fdc771df715d45065cd240614dfb12ea28fe41a8396a58e3a67b22d3743fe9d2f065277bed5e89717632328c0e6ddb585b4911a10634083dc8ed9b8e7da8a397df0877774efff375bcff694da0cdaec02ce8aeb5a98b76ecd89831e94ce78d5f84d952e30ce29e30ee0e733b178a76e8aebfd396047ba867653ebc2288977d36d05f47fd21b3504f00f670aed1276b0c582803c317b37d18a294f85d48a5d17feb3ee8c6c135f400aceac0469d026d4b5bb26e69b6c3b5aaac6891df04529bf46677209da04440104ffe9af4d84c12338f3ff7295f091dd86548dbb57c0b60bc13a66094a32fd5f56534f774d14c8be2974259730425459979a6166d749bf008c6cf8fd4354ad3ba0ec4f4893574996ed0d63d891010ddc82212e76339c291f99df9ae801361172e1d24c5c76fbbb3ba31c7c1b667fd834c9b9a1361657705d61c2954d76822f28d00d51a38e36d1dc17d58ae515de24f1a739c28cc7ca5113ecbf400dd2a98714ba7f5eb9ba8ec07121b1fa111a3e8b2b7801987bf7ea6aca7ca0552b0cc5e0a85e95d7fe23917d3cce002fcc67310da4471b63279599944f407f95892dd20050f3e4323e5ef6a8ce5bdcf8467f3c26ffc2e96b7f67bfc90c560a3d8ca1bbbb759956b40edb9c20fa1503d9a0f2e386cb3c433a448e956913aafbd43a1e0f248c524b8c99b0f3696d96076484570ea2712bf12856aa1d7e9960b4f31e70a0a12f4609a32ed1fb9dcd78b6720f926af323b976b8f5f0f7b2478098c13739de99f813c92832c6a6b6edd93fcd43706964c2d20684759554d00af9ec48f471e766de7db9c51c9e6c5fec6e1b02b4ae6fc2131c4a3bd4433d4be14dc5191bb052919f83757a480fdb32bb198c5acfba45039e8bc43e6990a3f83798d74f3de1b051ca7e6d13a6d7d596310ecdf355412df3a67c42ba7959b6085d52e5212d2e08e792520281dc24a09ff44b23565a52f8d4d6c528ef2f9fe0c12b8ebe4e776595360e8df8330994c082134bad7f533a165366851e4c770093cb72afd55d4d84f37a82f67e742e1893577ece81a62a9e542203d6a5881965e75205b2cdf9673a369f113dfb029f3996e9d37f1b6217a9f8cc1532e806344a8aa3d660a834ca4c3e3e974a7d467d3faea0672668327d432a7f1075a4a2a2d5ddb2fc20a8560ea7176d7ec764e8dff96c8254c2a1989b37dce9767e8fbba01e10eecee3a90e463c23a64773f106b9de7eef9be03a2b941b4b802385c580f61ff1e48500bd5fcd27d2ee3fcf2f1c7fea2de8a04e7eaaaf6d4d3ee50d912e9efdefc3bf67c8a6c6cdc4df1e0846944bd68c86e6cf07bfd6b53ad01cfdccf53f2774000c843bad530a2c56a8d7cf04da2107e50d057ba13a62978fe6f16e790e8f126ef195974d19eab68f5078799c7f4e4f28328dcb6edd0c981d7ab2bcc1b7af382ad9caba037a0b54fdb2d766794c1943b2e48a68aa20827d26b406ff4afeaece53a8a20cafbcaa4965b082c4657e11a40512502509f7d386df740b2bf6c68600f49dcb4f2cb2bad086fc937a8f5e9145b65d9e021c69c23aa376f989bbbd6e49a7b2af4ab35889b7f10bb024f49e5919dd2a0d78a12f63c316807b8ae24dd96e1fdef155bda5c97d60f9e2b1872999f73b7814eacc9e15688dfb6ba52b7fe4288b7b0e6ecf050dd0d53758015b8b5ab6e5e7f3ff409654068c0fe67b1a4197b4085c96b26f287ce9819e10b3fb944ab1d6d3718272cda322e8080c5a91fda4f4991d7ab10f8dc2a06f109785aa52338ad79557d49eea61c2fde910f2259bf027ea44e58ff9bff9ebe0fd4f0da78148830b6e826d5c65c37de623d636031eec33aabb83b7275d634adbc54dfc4ce22ca434ca24a3fae56fd9ca91229daa2f704bf1e7e39756604afb3637cd286aa6d6458a9bd91b8557c4048b36cd3d7916cfad6fbe4a1c051ede63617c96d8e74bea1caf1e293190366980067b6e883034776d0271096feebb71d5e1dac4e1fa7c35bd98058ef827e55c82a5bef52a2acc80f9fc08a8d225853b71135b583e6ee14bb45d156ef4cadef7e0522c016f188b1ec2932e4f88ee5b506bb10b5d3b5ea9567360b9f1c202b2f6fd38c3b8c1fbc322f399fe7b24997dc5c9f2c26c86ebad2a3c95a44d3429e79a9eb4bb1843985994d6b176eef6175994f53198c3564b4e997e5149799e1bc3fa1dea90696d1327a3f2997e9adcbe0ddbc4b10d3776d7244423712c0466358b2ec6c5c396b1357a00036b8c60e73ebbef1e6c10313ce986037cd405a3272c77ece00c33abf958da332106492f06951671c26a097d851e50c5f2a224bb81b7a7e188d37fe8b41bba48f12c28255ab584c06a4c0a707d1a80f6b426add5ec6b8fa2016e5c7fd5cc082379cbd933d2231005df235f4453b990a36d64d1cfa26335c6c5ad3c0197e7ddc5302d8283fb566c191c3ce4b7bb84232e2175b2f9e73c78dc41e6805320def189a962438ed2e89c1024b374339ef3c2813875cf1c0353032b24736a1de287494cf60fd7412657f85500bdd8c0619430080b1bd289c0d7e8a64073c2964b50b8a118e198d690e3d11278c5ccf0691045235a0998b85a0dda5eb494d657b1380622d2ee533e3d76a695f3a3c5aff4407e2020ef9027922948453c5874993491fb36800ea05cfaf1f40cf2c83e3bbab1c8520ed73c96f245f7ab62d1eeace3bf20f578ad1682333adf517562496458427be7ed077d8f9cecc2b4518c54c716e084344ecfabca01195c75b5a6a1a2867ec89376b835219dcebf61eb85ae957b1c374eec02251d6c3f53840f402129e9534a8932265ff95cd3bffa8568a31dda829cf85330cc9ccdba5113ca9a2b88b8eeda94f719917aebe84733ca4d5c00c0949a18d01f4b469a49bece61dd7ea8713ec23a6d01202ccaa23f08f6b5264a298b96a46ff71a43a5b5a8de53e954d61975d34d23446cee21c7ea5acc52118246e90e82cf5f67eb836886546517e56f5c821d0a20fda7b560a136f71e70c33c92381fb5235b8a7992b5f8d1211ffd2933f241edc06436ae1e335952bc0d965e0a6f908e14e4232462538170c353683d1c920247da8d4bf1f7b23d17d1d445c02d3e0e1559f862f11a755f88a3ab0c66d1e78231d93d0a10d888d21e1498b0fed21cfdac026bee14c592635ad8c1967a0a4d16a5e1db7716565430e22867e526574f673eb2b2eb1f598448b7f537f5c00e60096b52db9b5c7439deb663c381d392460952ca029ba8c8fcbf496b36d10e1a3d0109cddfe3670fed5c39fe11debc22a4ef9354e526ecbad4484aa6c301821e37fabd9ea3e27213553e01f0541e090646f0e8a1931512bd2054fc7036c3e13b42ab5fdc121b201b077b18242d7a399f89f834ad114f98ac100656738962a089ca8b7b134e638b905e228f7838873de75db6040e0adb5b7a19f689fc77aba89498766bd0d1840f4e4f15ba293edc118ef7d0476328308f727d8225740066f141ed168078a2fae8cb7f317d4df6188ea87394e8b2c5ee18b711362b9b5abad5e87f5b4e09a4c17926106eac7035635a023830f8e23a68df11531149afd90540841ae9ff838a7f2409fdf3b23693c7bb5630ce32bdc155efc437d27b331329cccfc1f4401115c817b0d53870602ccddb5e9b202f5ce4c14db6ea2f3d34f8053ee277cec0a32fef36ddcbdfa4670a802921ae76cb935f0d3869caa4317f014849f2729ee377e6a245862f769b486a820875367f9cf62b1a92b63fe9b19b98212a520b53b3f99a902e332078219425d82c3c5f0a6958e44c529d7b4af50adff83af52b1d61adc8234ce111bad0307f030384847e139167f0bf510e13707002f5ae5e81834569c30be82ed5080c9fda83d800890aa73a2faa440d3cba88c8b2a8dc5006267cdfb5ef85eeb155d459fde6258279dbcb1129d29850290adefda4c453c97ca772b1a081be68e5fb30ea50df1a53a1e7bcbd53ddab11eca2b6c9ccb5fb4c487ef78e3995982e7b88e6bcb1e5bffc004b556365f5ce723a24a0495eb132eac0b88a46636b5dcfa5da5a0bb2393dfc02ee7ac375b7509ebea604d98931f1c6589b8b9e9f33e3530d187ca7fab91877bbd956f0ca9df9ec25846e543b77dc0aedcac1b0e4bbd72d1f5647efc29371a9686a2c438f05608f34b2313846939f13cf1f877bec9337c97571bee3069d91403fac3557f93158b82b9853291f0d968e11ae3dcdce6c7aafe9f24aa7673412faf288cc3643ce4563ab9641483bf7b29b3defa519b4816e99e0a5c6bf80bde181ca0d22d70e12e72129be281ed830fa2cc23d98fa169287c2ce3d584753bfa1f12d7a8c00f0598f5e8529fc0105f954cb1f6c50dbe1f06128eb6d9afd4fe63f71790a2e9e67df8a652c34e509b5c710a51dcdf8b0ca4f0f193d8072ad4d6ca35eeb88e27b1244f5cbd810e616ec6f396603dc77b6858f39e01616e995bd1e5b93bfccf7ee4254aec58a768ccdbd753f27449c945cef5a6b52d1acc5547d9f6380e733abe1ed3c76aa1fa01bd89fff97c944109d39d3fbe9d446245a1e0be43d9271e858976823f95da9dd11ad88e658920e008cfc68b432001ea9fcbee9d845273e736ec2506f76b4190fc15fa3a95caf0ebb494b2b9df48d9c282daf94c07f461f28d95c7d734e23421f6b22e5c6cba26640329b4f2e25b9c36a19fb3b9dbc15b5eae49f89fd7e75445b172f67fa83e708ff021bd92621a93d5e4b2c10198a1c874460dedbfc97e6576f0a4fb8fc0dc0dbc5388e839e50c760d2a9eb0e0f383b7dc95d93584648ab05d91401aa837c02615cc46432832593b1d88322fe5477992ac6788419be6354165a61ca560160a3584d528ddb43614c5ff962823062dea01845eebb2ee2a911e26566baf92eb0d88c80708488d4425742052ee019cb8406056a063a5d8f683c3e3602bcf554c6824a270164b669109fa0aa392ce46b1a1e0fe569f8bf3e40ece2b9e62e6b2ae7deb1d38304f24f4b6700b18c1d3d0129e6c45324ee08d22186b6b2c9a37b931e36ebd601a73fc154f86b83f2f6bbcfc01181b12137f2864e81dec0bb05053510dc7786f1ebeeea131648d013230979aa14d691f9441f2287683ec08d02cf813b40e3ba2e878fa1bc1b318b5315eb8f0fc8583e5113d94abfc564f42206b6b06ff760e6b21653ed54052ecab33891c23e6d11cc5e71079bda7f8a2507ce0587bc4a477a4364c29cdd7087bd89eb3fa394ec70ae83892fcf91a25e397669e5c91a2fd4d9336145755d08f4aa67c3ad3e0e55293c14185312f29fe85f139cab9bac490cb729971f6c2e93deb11e4e737b743e88fd4f2b54312bf24e1755661933cc83cff5e345166afc65e30c98284e4e497c54ab87a9cbcd5d1dd5473f94f3ec05c347b329abbf335662324ea39a65649ebba77d361650c2ecdf9eb345a8e8ed809ead90f6f08c4401f6b6d4a225afbb359eabaf151ecfcea28660aa10f13de8d248086be5ecf6879db978ec91de5148a9a11bd7c8bea9177f2389e704ca06741c44849bde10bd5126dc1515dcd8761b5d0b951e565b401a1635d727b27c4ba077dc708242a63fd456402b9a66bb28ae7c59056852dffd26578441915649c481e416453fe84ee7656fc2cf9d73ee27b2f63c925e7762aea36e78c804da0389ccc1f1cd1a420fe76b3c83444c440d767936a6911cdf7a94135fadb1dd491583a8bdd43743a52ef47c4c74b86603033db68609144c7d9a5a84650c179fb8ea9c6f66eaa40b4bd020abe2bc7b940f8426815ae21e3ffdf69727c78724376f24c25c9a1dc3782abe3d88802de9a8839978ee924a7c8c3740fdf8c5d48076cb1a046f20400fc83c379d9584058adf4f55cc870478efaff8c12e776161f49902cef1fe67e11c01ce6465ef10f23f2fce77b6a91ddee7b397e6710cff53fb4536c4f89a3ac728a6ee4307081685e17ee91097bd643e9014a4215d8b92f887748c721c19a226d094f0a487796d62f85b1942367c913ac85f122bb61a94a8cf4673dcaf57a0bc290fc395cb4fd3e339ce11fcaebd105f81332297a78fdc43651f878ebe81313ebe70abf0f3aa99dbf9b96d135c33dfb8686133d074050b5feb24d795f907c6798ad291f05904cb8ed0e7c153fe5dc5231e846372c7bd20d29780bbae2c967d8597f58a951081614a7d5e16378b9ea15e45aac3ada4f65675108e2cf528961591a4f13def662792bd5772bd1c7931d661eec20c10e9b6141f01f7ec119b9fbc58a57a3b258ec0caa5199adc53d7e59cc0add17b3226b5b005be14af30509eeb0e6f550d615b8e12323e9cd0eea9dac0558e61dd7d9275b26136e338b97bcc1732c85700b0915afe37dd8ba6cc80e63c0de3c1262f59bb34411db6e89512c6339ece0d035fc1a81f94d5d766b8404731b5f57869e467a60eb65449e73000522f760de7cf51f9f3cdf6c03972bddd8ae11c1d07e32396b0fe95220480f95ae86ab5a2154986b457799c76c4e877bbe8326e5d0d351d3bf7164607cce22b084782f21ce1d66b12b821efd9808471022b3bbc113fd27bcb78a85b1659a69bf69a08bf196d8211e34da0b73a5b31fa2131d9fba95e7db705a3856218e2bf050fbed047ee28d1d69fd41951129694d005b8a1e5c0e13881bfd9ca590364fc8fb821886509af444a5f5614cc074693e6d830f11c876dc39b69cafcc1f5f40094f711278d74deb39a018d15353624485cb117520324a9940acc2f8e87e10f51b0d2bd0a6996c34c256b9f1263be6166c641c5e1e88752708800a5ee5bb4391d1b14315bd6bd36ef18b7852e21c1c1333009d16546f25f654e701c59836cdf9449a77cd82d5e5b2f73f0f35f5ddec9720942e6479b12589d9492b923d1b925b38ecca267163b8d748dd644572c70a3537b20ba7e14c6e70afe71daacb6ce950e857347310732f620ce5428cc824b938459c0c0e0c7c3482aff29c878e5ab72dd8291871117c8475ab53088d76085c40a714d8aff7cdb399faf376d6b08b7de7e7bcd52fd819408d64867e8cb30686d4e8a95808f4ca90697c66cd62af40ceead559009f97210adf51158819eaa5a4abdad3b6ab49e7143dbc3187e7a43768f5cc1099a9289c5856eaf1eee104b797552976dde96ab2109a01ec9100831fe12b12753e6f706e6863e4f01b587d2faac69a17f2d0feff8e7c35e93fd2e1ed67bf43e114aeece2cec08b6b930a327386ed53fd2cd829d6eae5fdfa650372f5b3520cf5af971b6bb09d7dbfee07a3a42b2ddde79b6bb135eabdcc747a0f9f833d0766b311a513bf0e9a1ff46cd6e7c3ebdc1798c9c10570a263fe3b9860e67d55a1056bc1b877da1e18ccc4e4d77c34a8e145a3a83dd65d051f9de72e6555c1f51b4b4192f898ff9072a222ccfeea7820743e8405071fd3cb91d3abe4c8e6249fa5668d932131e1c387a61cfc34cc71f2dd21fcf7772fa59074bdd0c0712e046e6ebb89da6be9fbc485b7c50f721b5792634b86538b809a55edd02f40abf223f34b68623fb7fb8cf60670ab18f57d1e269f1d94de8639ef15d35bc58cdbb3275483d72317f76bf1bfb648d9b4c26ba82ac43c3929134fc5f31491929bce2d753d84ae8fae1c13a97eb299ffd36644a6b4103fdf39f926810556eb246fa1f562448256432d0408f6326e57ebf70ac0df131727a79cb325c0aec456c66493fa64bef421e7f56ff3f6f1eec637486e807098d50b285d2c468f4237a0e095af3d0f883adc9a5f81b38aafcfbf11d9c01f95220076adcfc05659c0e5a72efec4e42503390d2d7c0c77871ccd87f10659871eb61fa4f95f1f807638a319e1f1b9c3f7b3800c7ce3d24fcf8a36a47368e150dee7c46a15732869319ed9f41c720508cfe7e6ffc24ac1f728952d81f6e015a0ad083396ad0733d4267af602d879a6c67e741a6848d9b675fee07001a57c93318fe20d1ffc04b275e8641de380f6002beb9813404b7b2a8f0c86df23d033b3d437ffdfb3359d6b8dff6bb3872879ea34c2f02f100631821be30be0a516ba7f08612bc1724293f45ffc56086e4bf05791380966924d8f9f2009242307eca78bdf2d7e37753b671e4f167d6670842afd83a39a9c1215f2aedbd8595f4a8caf0e5dca3dc4a598f5bed3e623279d42448f40dbbe7fc8e57bff3eb39b48c2fdaedd1bbfa5c628a34adc56c1b20d2dd9255f17f8123ce2528692c6735f2b1f7e0dce43397637a33cd6e46cfe9766d1f9eceb8cd53001e6d2517b883413bf68246f1fed5e0709f09c57ee2fa245960e6f85eed7417eabe874723b7f1c764e99f27ce42f3009b1dd767a20f78f0506d66e4ad3bbf793f154df8ceb7f49a1418f67bf3656dc250fb240e34a1d4797c2c46893a6222f60b16e7dc42e068e86e9da03fa1ff20be5afe351f7fd1f42f3e6256d433e8d12f37ea4f8258199e2ca1f29eae8915eb2aff1b57184b3c05849e90d0ac2d9b1e6925c6a140a8e12bff4b4182d8c8d90a2376cebfdb0c437dcf00ba8da53d939b6b829a0ca9601a3e7b3b798316e548d8a1e296bc3145aeb90348410c915165977316cbec6914debc54fbf6f5281cdf3291b792276945755ecfb37a436799f124e8c5b39dc7e5d629cff507d06dd4f7c2648de1b98f4bfdd04664e16e0a38c7cf8a89cb7bad3f0fc9ef540b7c49be9d90114531df7239a927ed1e88ef051d2f5aff43f692dd0df0b19c4db5e7e65bacabbf6fa970125f93a1ffe47283e627b5ab6b48b26f33a22582f1922a6ec6448ae27ae40713c20618e8dbbee738308272a5053b38581a096cc9b87481e006ba65440478d07e262b83b66c1330a57e3f9a53d7c0f7d437012aa24d6f3b41bcb0e39bccbaa53aea8f543892950d7efc09cb660bf64696caef046e057662f999c7674e820542649244eb4a208af04bd38e557578f825b4b0a02dbb6f36cc3f62e88c07fba51f38898b1410ec3fa7fc8d5e4b86ec3e238c4584f7dacf9017031290c2be7a99303ded017714fe659fef111cfa9f65d317d6a1e28b4d702353aa756183bd9e9705b8684fbd1af075a96df137f8cd9bf169f09aad33892bc0a518a89486185b77c6364f9ba1ba62f08de71fd33e3b46f322e108a038f19f4661e60cdad4557c3cd85d37eb7f8c0e709f9a6fab0d9b891b3d15a9e386cd8a1dad94e0ba63468a9b3c65dd31abcb6fb1d3a0a895fb4c7982b314aefd5a33cb2a3480031961dfb4695b930a7eb02a6b5934fd609fe826863204442465588c1531e3ead9b032e7ee74e0f2bd5e930bb61d261e461c0efdf5fe8524a58da3784d54f7526e2604b6faae6099f8de32b0a994d2f8be3e430fddbe175660ad1f5d737fe59ffa9f91150740372cc9dd911abdddb717a92b1f7968f1e020e278464b2b46e6f95c18521cbea12a3589666e3b172d05ee8342c0f8b6bdf298ab9b92193002d42a42959834e9ce2dbd47f48b0ec1ba794b11d77703709f440bcf7b6b5c8ab894b153c17f783ab73e68fae093630ab89b3dc852530fb681ceaeb68c22a8ba47257719718d26197e890939df820e93204310712bcef69691a3f988e5b72aab94c58fa4a481f69fc25d232fcc1dc08a2a6901e8f221a30bf46480661a1133f7ac2f6e7d01c506da67c2f156fd326e1b57143e867daec5d686f5618c158cfe163744c0bce0e8561caaf653362fade9ad0af1c5967e06798b33ea885a19db76f59eb5beaad91ccd53379cb9760cd831a809a590cbf7bd1ae0258c35a269e74fffa52f5f7cc3fce10176f1aa15b3848e6e39b87ecff0f5a5ff79e6f5d16636a6a161882ce512fddda3fb7d70fcd2d2f1fc6a99488f2b9867a4d9dd1feb6fd36599dfb9c58c34afa9bf85b8f4731a67caed15899bb4261f1aaff3408188e08c58708477ad5441e27f0fbf7d85afd025bcf99ae64b7de91ffbef6227007009dc46c77491bd603bdb83a2c5830cf747ea08cdca606e29d1a813fe52ca13c015c2cfa8f3b37923271d8ffa6b86d6c100ef28f555a0cbe3ac54bdf792121a25e705c1862afc5840419ead770e1b7579d4cbb86c5ae8057b823dab6708463db5340f4a350b4fa21750ea055efef88969bef6762d0b667fd7cbd4c512349717ba6410d74bb70ec3b961514d0d4b6cfbaaa8652240944af304eb446ca8b8c323a46fe8a23b64263d628a8633801bda85c3736067a77108617e434447bf78f819e285b51f020cc85b75fe88532c239a5b2fada3b4e86a23dc5e7070491ba5ed32f6088a7ce74861a46f3e152718ada29d21c8a9ac80689bb170821eec0339b4bc88e536e7ada8fad709002fa8a49a481e398c3d075541a605bb5c7130230d35a4064b48890cd189678514882750b8667823e2e3bc069d23388606c7c2dd5e64c5eb1dc3e15a20be414105d4402ca1ceeb22362bd051ccfc12065dbc22697848e67947553d225603695d958d955cd9518d4562a0ece78bb31b8d2bf6a1a85f0e51348a99e77642478364527f78c70e1bcda58b6083995065c005b024520cf6990be500cf9a280789da116637501857711cfb39af6b3f31778ff686685b6317ef19c1691b1fd61d82bff36ba8ed4355aa27e49b93d51e0b742a4965a087e5a8060d8aa84142fdf25849e8f361b92c619e81fea42c5ffa9eabdc8a1db5eeadbee3899f2c904f02e585c2eb319e580c3ee1e06c9f573b11fad91cc91d987301e478422fda057341ba5efaa9b45166bf1896940b4907e1f594580f083f98f8e229138563e1f6580b2c83a4f7ed217147282afecd4570390eb752b813caa18983274ab5d81aed2eb996d674c230da92ddd4a07604d3d1ef811b474cc54a5c8acfb950fc55093c5b9de770623077f1346fe56c8e7d948538ffd163deeadaf33508b96833ceecf92ef94ae6f97e3facc3b167bab15b31f5917b7fd7ad23fc2064f48a2ed95aca0177197b0096460fa7986deb426aff447af5592e07496b34d5e6cb8caf819e0f237f7bf4f333d282f0e1db94bbfd25532038efc3e366f6e9ea40ff7e78d6c59bbaba33d3939799f9c080e309d7e3637699458f194c10edc4b9f0e82d4a450fe155797cc65b0a9df0f33b4526d700606b74fc606a54876102e94266fad57e7e60905ca051ca229b9a02a69af113fe462ba35f6eb319a95ed5ba3db2894b36b272fe09421446d2d44e4f9075020ee922e1159eb1063ce6f13e60bec3bf5f8ac0646c469d4c21f825f658a252d60aca59b2a1f49b760208eb605e3963085090e66467c8e48207ee342b1834d5651d022e699202956d01e0525a12aec03cf026ee6623d8ad11db099320142567fffe79bdfd3bc1b68e5492ced274f7625c8066f1daba26f7b7afb0c4c0eb5b62205da3b21a181cacba8460e2953ea035bc947885a1c9b09f26b30a49bdbd2da0fe685d8ec301e4f9605dc975bd053d4bf67b2f3a11f4197d5ef83b81fab971ee215ad98702643f4bba4d40d1e9fe5ce4692820b17756f9a13789809e1cc754e936c618ab496285115c5957fa798213eb08e557b6d5d760fc2b54a017be55037a94ff16d2c39cacc03a5dda9d81e6ac30cc6461f232b6dcc4fd3273262449b1c1309e4a025a01bb92e6866169011b5294c1ed71611358131f5c80c22e2f74ecd03210359205aa984dc257f12d3c97685891c34102f2664f0cf9a77697dc7c4bf275117de522dfa765684e4828ebb2c90f914ef4af3fcfacd4818d4d4b1a94f846003adae470fd8b003a5a95e48ac764fc8bae49024e8bf829009c97ebf2694628c2a23e261b6368dd7ac0e102eb7e78037e24f51fefcce99249bc1ef9b7756a4633ab1382e25d61e43cbdba68e4cfe2d196f6467bcd79fdf6ad309f0a2273bca7b95b218b583e354ea06e68c2909113c190445c5398c2fb479d88c70ae091799c30990c84bd2e876c8e0c8b9205de92373598c33d00b29b3532c4d840e236f9eea76680fd77fbb1ca360d95f43606707d9f3527c9a730999cee50143d81bb25ce4d97ccf4b1931df739c92cdf2592e58116d2826895e6df55a03f23317afcd14fcf9e243dccbeee9f720b9157f2fa8f5c5030204f30a7cc736c1d293c1ce87f1ff936048287e7bb34d2d7a55954a74c4bd7469bd6c75ef8725207a0556ee23682a6f6d3c13eb42d27f713599cc307f87eacaae865b5659db8eba23cff05de9744ac47d7bb3ae32e6ffb92b82bed612e64854d843a872c5f28de2b4ec61d1f7ce77c992be43d81eaab4403f3528d3c43b93d7f48b02f5a9a9a8d5692a46ba253f80b96b87de39217f124e3613d0722310c64363e1b7a45ddde5fce3db59fd31f1bb5ceb4f702d6fcc959803cdd6ed3fbe8ea17b3ac56dfe46229023eb5409f8a21d68eaaf7ca44abb7a2a1bc380efad937ddffa7dbd2e3e6c72d46f08d39844b7b59fca3a5f4a967d4b6b1ffe1eee2ba18a921253e11e7dd6cd7ffc8b0c202fc6ab7e875e04b6c533b156f70de917bf65958fd643b4f317b561542ebec0453c013c4b191082cd550c808a4b2363e848d81905e50df6535c4a822b6ff81cb942ee1f4e63a258b305dbb9925b7d2fb952b1905664f8f649ab53cd3a1614b76bc8ef4555104885ce273be26ec8d5a31f7a067af6fb71e13da1e591981379a2f82f7b401bb46fdc9d14e844c3dee6198daef5af55c499719bb03f46285fc4d252618a20e88a79ae234a1a9fd7f046ee1a326c007332814050cbdaace31655f785a0e0434f86eac78582dba228fd93da7dab4a58704a661d3833d4946516d9183385119ae7f2f4569caf19347c3ec851aadce378464522099c3415e0f474c5f0633dd395c233218cffc2f6d3831a42c3e3e8c21cc0c70ba896216ee65f6f154befa0a25e26763e0c9541ef4893d72e815a17d77ffb7efbd357810e524a71a734fef17379c1579fc3a47f056b09e0fe8db85c6d9a0a717714fbb9b58982686c167af34a1b22d72dab66499ec000778baece62957ff36f1fb762c70dd0bcf354bca91cdc77bd5c1a03ce14ba5d6cdffa8f266a20f2a3cb4129c0b66d9eff2f21b41f44d194fbca63cf91a6eff8d81d6a35fe07049ceef8332cc02a2131904f30aac8611bb3de0fdfae3de3f8305e8107ee4f02c04c53f0960598e9132ec7a84595cd8520d683a5eb828b85142dc660a1e0dd7a8e60adbd72f71ead05839cf95af9bfa4216a2c252254ec3718764152ab3f1fb2716194d67785d172175006cc52d6dc43936efb65ef04f399d2d94ad2396a267033bb2fcec2037d3cb44ba532ce5851a2f0de68d0fa25c8757193bb6548ec6634b4c9277e88f9ae0cea73eff4c88435e591e63c9de0347247247c15713ad0f7be379f80aff8b16c9f6d29ad5671f67975dd0a6a437f7cc6bd4c8b50b22eaee01e82e62f5dddef147eb588340a1a1a4d0be0005ad0a1074d9cc4b75ed1ff13c6d3615093b4fceed545d048d635f828f2de60804d05ac0cd4c44efbf8a0ad54f9961cb57a71bb296ef938396bfacb903d44f766fde9293a677942e73467d7d517aeef99824474af04391506a7f2629bc767685c985028f940d80f556fa45bd83ef0b9feddb418a41c7f8acb2053e2368d9d6be78e6e93a6bcde7379fe20ee39c6b7956cf90e022d7ced5dff0048fa05855abde2d7def598b66169b6c1202dfc628a2bac5540cbb5e993af8f88513a5eac0c04585f34afcf9107a83e1922b99020029876f98e933f3d82c23ad03af39b4337981a56c83b7d0f2f98510cf0d7babb88a1daa97848b9560d6ecd8c50a19190a8fb667110340a925be7a430eb96438f32c17d43c40081099a7958e3a6c66b6aa2068f22f504a8380f76c02f98332921fc57dfe46c371c21b5f55698e459cf615144de150315e5f217bcef4f761e9f05892b13722debc659a7be85b816325823302dd977c956308cdbec4e5e7604a9f5bc7a45ebdf4de0b4e8db67987b3beea357910d0fdfbfeb9c86bddede12916d0c83ecad6722adf58860ac80ef219910b9edafa03b7bbd62f847b8d8c897f8884d71bc3081e478b1a3c4ec03226cff5298e695f7fb6a3b4179a63b715a2ad0bcbd55d3a66fe61883cfc261e168f8361ad113c265be51d386b1e32950512d16eac4521743d7c5433deb6defd9f86d486e468d3197fdf1b85ca549adf03a76c0854e5183caec694afbbbff57685c0cce8060d85b509adeb7224d058653ce453b90200116267d0b9a8e46551df90a9513e4dfbc3af6e7a0fcb56405746da3d928487aea26fff20aff88baa8e9384fade30b547b4873d06205ac55337fd72f69f35812b9043a58f119b7ac99e0513a4982ed0baa9d0ffca356ad0e29940f7fa15c3086400c18a79b482af85809b79d3939d52c495c6f2468c0f6c6133933c8bd71627d502aa1502fb7aeb8c3039807300ca5ddb85cc098c1867d604204c2efac9e483bf5c58e499672b00e60dcbcd1a465d0a575828e6462702278ea60ecef2c92afdd6704689272d3ea9fa937502a99c4c9089a5d384cb7baeed05fbb836940863aa73e1bb5831e0ef139c6367d92cec88a2bce8a90762e2575183c76c56e2197821dbcbb8fe2521a4aac79e61a194e719c66efa6cb510f50cd279659fad116c1d906c96c7a06eb24e15def1aba029a115a7e719f3ed3a13ee148dd76245df348710cbd695cfddcfa27badeb67b23fc6611dcfd9c3af22fd209731e1c7e7e8e65dfdfe36fdfe80c2e431eb3f477becf13c8a66764281ab64679cd23c0f54b3f39c3f477dc3eaf3923facc5ade67827985eca567aa59189f3d9f4ce5bfd5276a53d5b7440a79befca188dd503b7bedfeef93663072ef17f265d462cadc52c691bc8816c9dffd18f9e207242f81b2721704830e7ee693101b83898ed2d8bee9a6925e6edf1af86f383cbf9f6968d07e521f1f938259ce5d799decad9edc13fea4e2987969cae521bdb8d809a08bc81549086285dff8d8fa900dedc741515c37166f05909bed9a7c9fc5cf83cff45a2454b195a97897d71baf4296cd97eade3e16545d575b8302cdced287786c656ccafad109ddf7105746aff49bf9f25c62fdc83a09225ea2e3420a8a043b482051f25e041616a81644fd1f90d5e684f357c3d078cc1f94ac6bd571445d2a2478dfdbdd51c2b6f75f8d1e77743022f25d43d6e5910e8e7ae612f091889fd8bf90fcfb14c2eeb063e1d064c4327d486f69eae930ca68c586b03b87ef34ede947745ef60b4bd934c0d3bc9a43e8883f168cb1fd75e0650a3ee5e64ee55fb1f2ab0d71e5c6f9a287fd98e4efcc676fdc9be53b74c28db9cfbf1d606afece748e4c13355dceee21453da931938ff31a84e31939ceb1ce10273bc9d1e116616c23dba5df3befa7c9262d3bbb25310402a57233bce7448467878477d4c1796567150c52157784f17e84fe624aa08d52e1a91ac6d98724ee29d9b4456934fe0a55acbe4cb001f6ee6ff81b14b8453e92d876d7120c7ed0f22cca75253dd78ed62684418771a926547fa1da520e5761061c5ece1e8bd0f0d7f5af6012ed73510ce9ab214b42ec17ad474261cb2cd6c11b894fcee9f65100142d07f82fbd18edad9c45fdde238fa314c812e4da20747654fdb62ee1698d9d55682cff2a065df79760f4892451c9c479b5ac6c0ddaf94bb9f755f90cd729fb70a353f491821b10a768b40c9d3edbe0d9930fb831305eb9b3852e093aceb271f88f85225d4ac78a1d222587acf63371e1404725b8c6102c2009b03d9abd9e21087dc6e696d4f5d478b6c38b26777c9946c34fa8b336fb05d49ad10eb2e586bef24af5c98924a6d0396751824008357cd4045e4b78d4bda5d98e0f692bef359fe94800d6fd21dda80ff53b765929af073978637c6f6c2cbc4749ed16370c18a40d78abc2fb27e4e1b8f5ed0a67130b33da73af03b44b7d6e31f09b74cda22f28223ac7bfb445fba3864f4f7f35a316931f0baac50173cff8384d295dc2db2b1dfcdcbc6e92687848349a8b09fab99d6b4cdb3837a55fbc0e104d9848f5b888934192ec860b3e8a404d880b1e83fc576d89c68d05679dc7f1bc02e4cfde7b326d96ff6eec6e67019791559d9a0ac43cd3c6501b8a6f4a8bfdd42515cbdfcd85afd6e09f5cebfe7c3a3fda48bda2944c9bf7c4019c293755b47a549d1b450846b6d3c8d45e646f5d36d350905cfdfa8e21c4474780027feaf21973d25509166ec01f4b908069f0326726c75796ccdc092d2c851a5d5ca2c3305a8e89da6f4ec3bae3ee753944e8c21f0be905dff8a355fbc06360c0a57399a3947266aa8f59b687894246010234c487d98644ff41466b5f77bda3b5ef7d773a771d96d1281c2c69db855acf59b83920a1dccb7728e879449804fd09790ee3b00d27eeac53912080be71e3165f8a38d4de431c055960434daab2bef8107a277a2dbb15d79919b65b1ccab8ebff43256deeddd2e5463e497cf99635a178fd765b1cee248ccb544bab2b0534616c00f43a1d5ca422b8b87f65942b7b26dfce1413cc3d8fb11f7e4d0da1749de97bb95f944cb63f4759535b2eb6e27748a7cacd8ede65633483f7f2edaab6c04cf9fc5f3fe5b9ad01c3c90a4d21756a783d73c1c593886f6ca278e5f6bb46a5c04ed8bafa467b7fbf265cf3d88a76eef4b195f21d0bfa387455bed0e6c4730cf19909a569a0c3f2a49defb0e06a237100f9ca886d8d9368eec30d0c490b656c7db2a0e797504e1fecc2084eaf01f33b9011e8fa692827d6de89f563fb23bbe6931c7254c4eb21956b2c500be9a8abc4f80600098ef025c43f8c435f87c1d5e1a92194d1fe0b285c1bc89ef7ffa12bc848a3d03c61b1955822aa05d93b70f36799e559741667bc8a8a9a24885e2db27b30eebbeb7d6f55480d4d11954140745e799b368b6ebed85316a036928a2b7d1dfd9c8d40c4b8df36e607b17c4d65958c09acc676fe347dfbe104823edfcdf23cefffb7156ff13de820478aeedc0c3ce911e13aa79a75801583a4a0e14b538b4382c923fa46d4fc63182f6b9b721d135168b58c9bef82b307ba09f1e709c572c1e1b4ad9c48355d4bd29389ce92c4090eef75de8ef741b8cce7e3dd7e8e8e1c71686940ccc8bbcab79822ad4bf2ac67cb3f5d5331f4cd55dd6dba1b38ef74d7f749ef3b83ec3f45e813a36c28e88ec2a4f2d886fc8d140371d99f5a8075ac67d11e6e07bc9396c66bec9768db00754d72b2b561c0fef6f6ced6e4e985f89ccc7fc7ec39fd6f73ecbbf05081d6604cf4603e6b56b42bd301e53632d0c50b6bcbfe6a995cea9377505643970061c7ef4041db3c4838e7284ad587e917d3a3985f7da1641d80a05def0ab83dba8aae2d59aa9d422bfb2b8384ddf10ed4315f5661e8405d4143736cc244430d1b59e27420ebb9dbc990f7bc2627093223bea23bb5da11639844c4e61244795e6a63ca3bfa0e837069d798a5743bf9347df85142d9a9152e157ee4fe63f6ab36abcaf0bdf1fc78b927d0f57401f97ffa1e8ffafa1ed7856e93b3ad2237a3a2fd8eb9fe90bd826ce7de0cb9fb67057647b533fa76fccaaf9d7297d379fd7bdae728fce38075e38097cffa31780e5812449f620a6ae33b523700f00d6bc8b0827fbf77f9ec5bbd1d950e751e5d33f84378e188d6ea6021178e19a7fb8756ac66b6e4771e3e799d45e8783663845e17e1302aae045aba5588692e26e49137cd8dd081134e40444780ace294319a1f9f56beca23c33f3eb5c56642b9ce575eb83bb2027ed7527c1df82d226b865a022c3beecb793b0d9cd7f86ce62eb7a60629d3c6fc003a1ef0ab93c14dd7a3cd6633cacb4966ed0c0a7a6f481ac096e9e722e1a1d625318f80f276c6ceab1284063910046989740c3a7ae2d1b076d61a089c5838081562caa63172f93378a7c0a29515f0ec4977e517a1041456577cd84fc12e559b7aba82cfd8ba18e78ea287c1ba95c7cd9593bde29073c6f646b64d0ff75ce6c6a290a30dad753a2fbe35b3900e8925cf19e2c96de94de0e76e904ebb25fbe84632c7df82912de3d7849a9aa28d9888fdebfe7486f086fd12dd114f9ca249654b8cd66a89b8c724ab4f66161ecc9f9b893fc1db29cb512e37fc989706e3a348ed0fb39c00a883409db9e47b76a85ee74207557ba451e62ca0a21ce8752882829489f4b012bb68037927257a7c06c6a21cc13c19d3f944b6ed283ba87227ef9f48a1c2b1a8ccb277a2708af6ad27e10fcdc025f75f1886836cfaa75f5dc96afd33a2e05837f295bfb5ac5bb8f774a9a7fee6cab1a3a6f34e5d1f6ab7cd5ebecbecb714076f7f203687f83af9e807b3b1e42b00dacf276eadcb52bdd545f6c008f32b1f3269b90c9d0509710c2fc76d66bab59d3a87f05922c842769cde96495897ecb46f67b966554cb0c064572643e3f4384db1ffc4e28323a94cb52be704c0f7a54075c98a844038c18ddec48ff06843288a1f524390924e5047b7e3a9a9d13117a2ece60516b9913d9f0e31721fe48de1e967b9c81c3a071a7e5b3e003c19c8c763d660795b09070ece38295531522a05e71ef0c53002399ce100c69014480ab2e106def219961753f24665e75c91f071a3e6e2238a6f147bfc0d7b24002bb4411c3fbc16eb2a38aebf2d3a208da3c903a01ccae88739ed8a72210d8eb3b42828c356824fb43d045195e58b433b341e323a1757b4060bc5cf4ba2ae7edb6cf756357665b3b93216bd099bdd3bc0d449de7d07ba1e6a8bf62934341dfb39783a0c2fa0d3e32f67d5ee6b00e3c7c8a833c2c26f9e8fc0d0f2dacb7402489b01f89c4509a6ce66047c1626ff64d9fc033964c0664c4d323b58279a13162178ba36c445002faebf5838b02422cdbbf72c852829b12c5269d5665dd2555ec16e8631a306ecd87cf5da9158765c2292a01591b7f6955b4197efad18a6020b229a9293dd4cb257e9dd572e756e5504b66ebcbe33ba48af7cdb082d7fd2d9846daae551b834c7f8fdd49ae7cf6f53a83571ac3ec3fe83ea2647db73dc5dd5f523bfde595a4138b743783b7ac29462d315f4bac5c72cbcf86b6a425a91b613447afd53d55394bbee77d825b1650e875fcd010e1969968d19d85a6962fc2802ca9aa836cef093941af1e336a2b1e1aeedf891b08eda9a335399534bb709907108bd08563a57df6003d72a1c663c46ec96a3ab13caee4564d3e265d874d685e866512b57d92c146d1086bb569ab4ecc5721ff9bd885c04233fff8308ddeff71e7f34e74f39b21673b35d922c3e1a39e4ba21f7a8cc37711ffd1016e70c6d214a9a950a86bcedba549c7812a617b2efe89518f5b5fa33efc3a0f8a67bbaa1b333d79895686a9bffc714a4c30cb94a55ff87f9d7ac58802db16e34757f08adf0bb5c68100ccd13026a886d7ea65eaa43e1d750401fe36287ce466d70e41dd6a118da3a17da26e1f8173935e657ca0fcd038331c8d5d29f1e9664ad2d06f49be43527dd0723082e7061ebecc444648e28c81e7a611181bc37619fa29f2db323606a6100bf2a0c01f266336cda421cbb6dd41ad7a1b70ee6ae218391b461c0f3b30b11f32d8a6873328b395ade1cc7f8b76e4ab0df6d82be14f53b9c7fdfa421491be3008e985cfde8a90fb142637b11a793a14be63e74a836802ddd0566f41c6fe411acab22dd0c2f18e596722d6ae86b71fdb18a507f2a62717473b47e59ef0a6c4ad8752ae0e8006e455b4641fa712e0fb8072d6babd61cf33899c281a761b03130b7bd43dbea68f088aa2f4774dbb10c771b0a191315b420c170aefb42baf724c2453defebd7a0bc829e1f188381123c670fea2cd062a32bc29d5186c98fca1258b08e71a602153456d0b803a317220f14fda9d01122e48d81ce71f2a269224112b7cb6499e21401b6ed03dad19d6c4764c13205c88c7c98e4728ddea3d402671c767e08bdc289d5a50c3c4a7b22005f36b6fbe1f92f12293c050e5130a05fa22c8479d5b8a4762b9804c5d17b58c44da7b6646eec88d6ea23bbc1d90d2a0f2021ec1e54d087f489ca93fdc4a6c9338d51854fbd01ef6d744e2303a13d12296047f852ef9002e89af051a3cc48a70e1b2926440ad6e34c8f485d51ded11abedd1be47749b2ed5ac0cf1b397b561dde06fd89b8767d850cc09ddc290d24b9a23fdcc897de0fce3b579df2df1140583f1c31d1be00340beec246ee7ec06280c11fc77b9fe7781760fe0b58fe9bd55fc6b8adf66e4f7c13639098aa26b099985939a6d1bf5c70194a7f34c866db5a23d2cb7a6fc0bc3d6cafcefb6d9d5cdf0654b7937cf067efe62ac748bec9bb9f4bce6a797b08e7464f2854bb26faa6dc12cf8f08e62ab4c5bf624cf7c05f500a9cccf14f764af4ca8bfe459dc1db247aa10c196825aa2a4a6e44fd02c154b613315ce5842f4c972e1ac2d8e38e09ae2e9847af5b0f7b00c07d7a4b0856832e4546613c2b6f13f4dbf4fbd1a2fa83ee8ddfe517af0821de3badd5c15f76f17c5ceb5ca0de7e4898588503180a733d9967167c01913466a6f1113f2cd3d55d65efd2718c06797fbbf98fbacc3ed2e37e767e3f3f1ec657ffdda3fd13c8d33934d1c02ff1c318e65f04539ebe12737c16f53f9a4a2034c7dfd32cced107f5f96cabd31967fe6aea4a56089e18aec6c18ab7f0dc547005a06c7f8a07b7fed3b42d0f2530a87e4e01cbd82814cf81f9ee220fbbbcd589f8e5d7eb42dd6f47ebf83782851f51a39909a4bd6e21b92831d2789e0c88de97c8528970789a39e45bc727c7009310ded3ce14c54e928b9982aa06e4f168be14e56f431f43faf69338f7fd60bf4a71747644aeb2265f5d3ca2f6f8803879d5df0a5836f4c371eb194e514666b10965d421a694676132d697e7065214cb0a2f2eb9794f67be2a63d46dcb803e59e8608e22ff0483698a689cbe7d0fddb80f26c8acd48a1955aadbb7fbb37878f03f2d18302e3c99b7ac3bccf0747f7f3577c62336de6eb89f3be7e66e0b771551377bcc7c3af9f95887dc32a1099f3bf891b29a7be68af72ed447457ab299bdfad83b4fc3b1932604c18c85b36cd055747df5b84e2ae8dfcfe4d1fbfe3ebbecc3e9c8fe4c1f3c65af872e5fb03bdd39cbd354f6eb27e617eb2eddb9dd3e773cedb537d847a5a624c6f20b7486503f628464488b3a8b43db5214bfea60dab53d58a329c5261ac6afb96ce20bb511bff7ad8a354eaaf3d416b8c15b6f6d633c91ea84b6d39f658838c8b68991659e198cbaf18db28dc0c7af010eba2e0bd060a70aac11048f32baa43a06fe02c10b8ffe11d7a5eecd868d4c193457bfb013735ee9905908ba7098cc0d1d9dfe5333faf0d8e42b5da1393542367d934324ace83017d22fe632ab444dfa610d059deed03cf83f0a16041a9eb4db027fe9c2c6554374b3288f2a2bfdf99d19eb52505b02fb9359ee331cbe4379cd650d63e7b0522fd26f4901c625f8813670da26cbaf3469b1695bf0399be6b69ce31b529e85842b228a299d4493b89fc816c455c8893e2cb6c9c54b6501d4957048bb48fdea38790e211eef3ed3b86dfc32f47598f48f3e95ee3afefec2d6d9d0fd1a7f915888367f61d1464c2fdf9f89645c8726ced32da3f72524eda13c5bc4e39814194530a9e0b437ed2c60d9d913846ce35294fe4af60717b6c258d39fa53b15d241a7ecab164b651cca7c297940ebf7019d7398f2e790bbfaa99c7c0fa75270d66070da932cec2c8470ae17db369eb56673ae89153fc57b3e4ba34cb17b280ba9514b95590ffd14e1528eebfbfc6d5ebf0f10976fd7d8728499fe12300c2ffb373b04f666c386ee64bfcbb3de0c7434f262361094f4aa7f0ea11c278b3a8010b035f932f2bdc6b5b41a55247fc00f2e3d0cd0a8f555220b71609ef20d2ec82ef889574c89611021fdd0f80fbe297ae88415f14666dc288bfbfd5f824bd921c79669d67d68c9985045ee06db0e621ce04844c035775b5d87d9b3adf7d73cc6d380400a9ac2b36792e1922300c405a0ad52f868428d45aeac031d1941cc94331f66b71fb0371ad909b89b2be2115d871a4a1fe5d61b5829b54b4f1f61b295cbc48407b74de3db27f1638c03855ac9c9cf167e121a9b950f5442edaf128b799460150514175cf3b05f5a63d917ac00d179c6ce43d07350477e2c6ed2c7cad316004ddd88c8765e912f407fd629f469a82754c8f8ef1454b8dd884495f1b1125ecc18778e0ccb1453eeb9a5eaf9f601f0c79ccfb3a0ee5889d3845cf2ac746ba9100badb4933f395e52f3af538404c423d57c29b128812c6e08fbd07dd305b184442fd177d0eed13077d1876d4d21ff137f144ae728dfe210884bcc73722fbcfa6dba1dac6005750c2bf17caf79a58c07c2c32f51302717c86aa469f0ef5e0de3107df33ce33e8d8084cad900cfc54426ceed123096a4b27859b340547737fc49480681ff2b8dfd9c7c4a94bbea5527e433f206f4c62d842f3e08cf22ea16998b962ce99023d3bac8e38ea6f32925a90fabc98e190233286fefae231d8cb59671f533dbbd7a62d64e6c7df2d757f6ca764ad596bc9bab0c05df6d8ba12e8046fb5b83706d2a2e40175f4cde6b207be743d3c125e9f77d94390b6831d2cb827e9a3e7d70fb39964abf319b1bc93295751a4bcb734949772d55aeeb92c9a2c07e65f8fb9e4603f42edb185947b844dd0ffb44d6408df031b1b8a4f6584ee66ae6be4aed0457c74d624d07db8b2e81eeb3265ffb8a20d66d6beeba430387bdc907a4d66c6e87d35271ea93d9c2eb0e360d942c63bbbe2a81870ffbca22a01ac4ddd0b014946e40455f67c84d7d23d541e52cbbb09911e7a23b6066997ae17b7bcef7d4890277721d0e31c74e3e65d71bbeef7bc70c3c7e219560e602304742472e81725a7ff89e7265aa645f73df35d95c357bc37630298b435c41dea9ff7da411ecbb2318b4f822ea2d9633ee80e4232aaace5b9f28d9d1d3f75410445bd53018338235a9af6a2f4e06e1e88ddf49f80616923ce119db7451757c3c78b2a35164cd7675cbc84c7b67dff7f4ab9c79cfadccd5f259e2ea82f0025923c00830a7d7b544efb4d2c483bdef0804c2c904a5024105f51ebf00b28e5778e9fccb97c465e82618667fca65156237f29b521496e9b1b4bcf819f1167b77f5744feca73512513659ea32676a595114dd4888481579f396d1a1a6bdcb387c306f05a1d54e98b7f7411c473161f848233194a0025615176479ad977cfd203f494a04d7c14eaf703cd4de3c880af6ab9b8c7d7ce2b4e5e7b2efb6ff6474cd78f27fe6648d7c6d7aecf23edcde800a0338d9253161b70402c96d8631203aac841101c1df1d1814a352ab2d2dace9f8fed7d2a03c40774aa573b69fccefe08b684c28facdc429d53cee798cb4519838a5b1af1a4ab21db04c2510f707ffb9e88c88e54e548913b10f3ed3453ffef7e0cc19222b555ee92e9db495d75b5ca33c7f446b8036511a9c3d64dc82595da534ecb997f4ee0cb59f1169052bd714f83325b71fd7f2b59685f1e39ad9ce771398692bdaa31640971414c3f9021c42ace3529b4ed805856875dfc534a1e167d142e656507da968e4de89eb255fddf4a9759c4c3d7ae093664179117cf27e1f238a775bfcdee94cb1f375feff303a43d94efe7cfabaedcc2cb1e0cc9f0b4456de8525c48fe7d76cd55dc7e54bb72ac375dbd15161ecba79a27fe7104c381da39fdc096a77f5f822e872064160fbb48badbbbfd3be79dbc8f5717de427aa25da4ee7cae9cbd40fa3126d6bd7ace1bfdbc66ae63fa11245eeffb6edb218b18ef9dbfd6a9481f497cff35070ba39c3d60a639d49ed6071e2d2f066c9f9668e50b8390ea417b99eddc7897fd48570c337b245f73e0aca7e493a1f0f07b791d7f33ae1f8805aec289e7d74abfe387ea1fadd1e85cc00fd7703676e6a2d1c5c7ea613dfaf3ddd2b714a79568844dce86b64eecb53b1b24e879977ced4e5d6a7c941a658704ff8591fe2e4ad307ee21f1a75337c29128f629d01c7ca28330b449546fea54321c1acb260c86a23d901324a6d4aa821adef2952a480ea3917283fed0d397ea417ecf1d71d2632597ed7d787f3309661a61ef741513091bbf9c2176f53222619ddfd7319b2cc4c0c563d71a465e5a4e350b693e37f0fd304f0d055cb0b0208b8270634a24f8afbf7f3ccfda888ace210b9bc1c30c7c04e84c6076273df619e4a7a4c3c14e4c99ee0d2d52d24c940f64d8fe5e0ae9c5cd240f7e9be160f855042c49795830e371a61e3bf883b18325f0af099079c06cc9f035e3ec92cc400af0a4267938ad80023fd307619f2973e9efbad64590378f138562c67e65c71ff290bc318d1381c8f03ab8342838e7f1b3bc3fc0119454a9804a8556904e021d0ff9647be136c40619e1d58c4844722c035a27b37ab227b1bfad825958ca13635b98a55e685036d4493ab6d3dab0032ea47c05e35f3f210b4e0007fc5412107666a2caca2bc34393eb7f1985698d43f8a1e9d30705d626747e58b781ed1aa12dbbd3cd307021ec21d03d0cc30b8cba40e9a4c99e903e06b34ab4fe6139e31a315cf79995b1815b067555f07107012ca5d1b2d5f838f5e7cc53a844addb8680cbb6e1825fb5ea9ecd3b94932d976dac0da599099ddb4acd2d7c80a0a8ffa63399f47422153ddfaf19395122e7049d8ea2b0f1286fba1df8deb39e30fa2c252b11bc1a6ae217625c86a7a88bf3ae32ae152d2cb05c62cd2c36154bf9a6344f914b4c93b2a0da30df6c0d4b246730c4b7b2312d42a2ddbc58218363c8085bce09d4ad871acac7409d8fb43562a3cc7b17e57eb7cb8a6bffdfb1c954724a7238c3ee411bd53b3630f273f6077a9f3a0d7a4bee7a46c6bbf28dee463c6599133510803a6797d4e5b1ea1fe21cb44c987809823ac467404070cccaf4077cd483c5f904cda0cc7e626a63e2cd27f5ea87c608efbec0a1c7dc46d20bb9d19b584eca77d66e4d17f5295347b9085bfe3e278667c43a7381643f5d9ec1f850c0f0f7d6865a40987b1b36c41dd698c0aa609ab7b06eff4f125fd3ec120277149bf3aa1683a9682f07b4cea0166bab4f2bc1c4b84f04ca1311752218a7d11387bc8d441f0fa2051ccb2ed5cd552d648c42d1bba6b43a85be5e270d1a45dd85bd37a4df450462022b6cd3c7f73e40b75edda64d71e9206898216ba630ec823939081fe43d21c040c9455806ff469cb60f20596c621d5a2c75be9fc83c6dfb8101338d2ffeed03248ffaad69fa98fe631f01d35f26f6382c22c6e52a24cfbde7f8039bb2ac87c5c5e0fcfff1bb7e23ef71088c5c412460db76f404149f2fe81783771471b14bab2fda0cb26e2339841a5959ef1145ff231f86addd22eb5f4c3a1dd2aa416f967dfdd333fd87dde1186ffbfaa9f98aa79337a77f01a337dfbfdd3ff4d9e0ad8b776e4b7a8ddd77aff36aaecffe10f1fbddcfc375905d11aebdb8f506b82078ca46d23b25451b7fd16659a10c4854918bd5de421f16fea92d6c0681f853f3f10f2f0520b03e0d98d57110ba28809c26bc0a21672131ac89e4284461b9ceea193935190b1907d4cc7ae291cc05af165961e4d4bea34519623a0f5692f3823fc9ccfa1d69cfb50c5341a8bb81e98235aeddde3b4754a18ca11c84716a3d8dd6380d8709c53b5de575d5a65ec2205b55f6523c0d6e53648f4024db2b733507e4589d2ba7b4cf1d190b0d39eeef757f96340afcc9e5a0da2a4c111637b8aebd5ce7567726327c04d6aff02a4412a4eb479867686644d92c333573ff59ba670fadc7a0e528204677100bbf902b0201f6301e4e06499aaf89c5df19eba5651d2031b63ac4a09cf43a9664df44f2bfc4acd9554d3dd741c5e53a514edd164a70b25192f36e695b2a8bdab3cbbe4eed3b3ea5df3324e8c788345fab0f0d239c8b5cac9c87b49144542b64ac68b9485cde3bba3da0f1eabe3c030eb41ee6b1a9c1c88d329c4f92550963d51efbf4018d7a6f853f900737c7100055af0ee3996894c5e533e08277ad2286598de68a96592c484e2aeb1f7ba2f52220dfca4acba5dbc9b63aee2acc233631eace8326a6ee9eb92b17594e0db2381a4141bbd0b94a7c6f5dea9fb413b82102ee847c5ba6c285df3fd375b857a909246ee27284ba658da11061f238b6d7d2c16ca3651d097d29802c50dcb2993bf5fd3ed589515e1c77b73e9c127826dc4063cee4e7cd5dcca5695252fa91eef77b20b887911bcfbf225d118d74a430b3f11f6ef2fa091d97289c8d589dbe52852612d0f38a221d5d1203cdc93b28225433c86b3e7d30bd403f14ddbe93f544da9c7309d2d6ca82c3ee220d4dbad6815e0825318437e3d7def77c670bcff189b0f818f9296db26797246cf19c9fa4f3d8171970eba2dfbf9f7ba6e67dd08bd94fe7d605ce06083d8786478fcb50523db24883d023047a8f540b4b83992feb562e3b8cddef016c1789c96d985ea56b81f0d284e86104271e0caad018fd18e221be2da618116719f43f072cde83e7a2543a34cc3e58a7ae63c87928eac42e394b8776570c65458a0f34f314d36e3b62429c36a3d0c4950eeb0d41db9edf5b6126ebbe4e2d9699175046e647d6c5ce371f5f497baf074d19f76e970d57d27e0900b109d9b6ed93486b193d335d77c8ee41570b52326a15fbd0a05c4184cafab4e79156ce3aafa2d61c5c25ecfff6d2986054016cd65221fb126f8cccca8ac442a3b8f58028a1bcdaa5b84b5df345f4b5546fbec8a73929961e9218a9d8666e2dc60f5d857701890c55fc70f3601b6c262b06333760a717defdc1a81b499c65f8208b08ddc4454029a189d4e7d4c8e39702622ae5dd59b4a561f79c0fb2e7124ada5f94ced675fa4acdf69207894aff80bc701e4a89badbc4965abad8421d3d6e12500a4d783034d552281d596ea947f01e5b205a89f2da4e8509c74901c61677f24ed2c23c7da444c640d65078978b67726b8b06327186005365996dbe4ecfd28abaa81a9cc3e4ebc0145d5f417ae76c1d660501c74a21e02cb529d0dc157a6f19407f082168954e27d64b960c174aaf05dc91105e56d220d4aede9862ed9238ca51a954ead9595dab0e8eeaea8a0258059c2832eb0648a4f6ae88c7402d16d92123ae0ae1299c83eda759eeed6b0d7ceeeb1b0c7792ab6f8afcfa592333feb98a6e1246e5b65693dbe655b7a82b4c7558bd024145b0a715ef8b4818b838220df88ad324a3dd305a1ba2e92f11d4d22dcdd4b2afd3041e26054dd650948839a3445d717f832a5c4c26906a60053f8fcd3180cbaac4ad79f3fda5ae3d01b7a45462b98267d32a6cbda5d166961abe2ac847d335c62135cf85561a64aa9286dd04efd3e02dd4317c5c0a12486868b223e3f99632c98cdb4643fb62a74c088c87dbaa0fd3efab6c393762c020903d6cc81ad1dc4cc2913569bd417d834d1b971cb2aaa6bef0dd6b1ac687a79527b3167ee312221b0b4ed2c5bbd0557917c23399b6e80d18593809683e3121ed68f87a23b5980d6019152f43cb11947f18fca13806c8bfa782b0fe289619182b0903665413b410addb4e7a4e681d0a6934043285e0e8683ff6d0cfdac307407e0adba4e8a0dc0d47e19d8b0ab12a46d843479af31ca15baec996d34caf5bf57c755b2639837d20af21260e2ddf70b618fb8405809086ef4f56cedf6a42dd3a933de799f6483c8400aa5eeace92b80c3ffb132d9e69227893d1b169bdaf06b91f71df235dac711735b00b4aab86a122bbef546d4c94a8c2e65d30d6463cb6b4c1a9911e6780ea910c13b6d5c27dc33b499f5c5f6bff735e5f7f6299bc9b9397df2b73c949668f3dd33b9c06497c484903987ba53d54ca06aeca0e06ebcc3fbbe4937b9d4859d3e06d98f652c670c4dacbead9e79718e67c332351cc39dadbf31a80b4bc4ee1b43d66ca7e2655debdd495db23def9dd22ef4dc3153bec6cee4793d0891933f78db47bd4482e67df0c0003cab23d4f00dfbb39dd2f03ce124f9170bb94ace6d126f26e0e68c62870d1f2585bf00dab633ee85c149446d3b44d9f37b43233284c949dfeec4d4c72e253fdc5250e435087975ac0ffec611b1fd14e01ee2fb0d0d3cb0da43c439b93e2b6732fe120c8501a5de2f4408ad0eda9acca1f60ef63b8de833f9b0eb3e0d12db7070c6602c1b8e3783cddb4153cb0962e71b097641ea4acef89553d60e3c93338b1710e316890306fc0ea020555b3e5afd44c6c8d317dc3e98aa43b34d54bf7cc11301cbab9d7a421fc6e3b145ee8bf2d746f1d0974e3f1cdd34931723b5620c2c15a3639a9c9da82c924d5b1fcb5a55bce75d882e559bada72a45991c1f36b72a70c07eab9e0a66a34a7185a9c7c79e41de0cfe6bed7c8183b3c9ac27bc77146b9366f14ebd2aaaeadc6c09fc09605ffc1f4f439456b286e994506cbaeb0aa7fb0d9471e8f53b04ddcd5273218ab7bc070223d9c51174ce68577f0805f30c2f87acb233e9594bf5e1e271e84064d15455c8fcf6c45e8c56fdc5cb6fbef262d1666cf5909531fbfc88b8676137fd2d27cd13d007b7079f785e6b1e129f410c171f3ae438fc2a3bf513adbbbf19d7ef4fb61171ae5caaef6fa2de81a4eb24597e14389771caf13475e777efc77b5c91d00275d95657f8a52d27bc4ee71ec8b801f881314650280ef7c6eae74124d28afba201594e53cb2d1f2111224c42d0daf8a33ba1938ced098014c718e888489a6a7ccf9b687051fb8f289875db3fa5820a007f1fb8c184f8114ecf08257b03408329002948b82272291c9e0f2c15c2805d47509a411117f4c417fc747746b17c1709826193915b5701a76aff1d1a327ee704ce5d278fe80355d5eb7f8fd40dbff05e4f61790814a99cbc7619755e3572a4a6e0f9404bdb4e496e6f97a1e183f6c0606f0d1bd8307c60ee2a2c9f917ff6784fbc05d56c67f296b6ec1e66f14fd0db38afbca215d8e5e565e6358d237d98903e870215692c5bfd543d76c50b49419c954405e0e152b088384c7126f97974951638b342cf6fd92a26abd67d579887b30fc18819ea77afcb33bfd2937a9a787c50b2cfe68bfd8c47c56f704523cc7e0aea70d26c42260c66de221dcf804173f3cb3d39c4818d43b96c18e15bb10f5ad44cb541c33f109e9ed8be2457e203b7f784b099f3f4b8e6d5d327a6725947441a664707736ec11bfdd73e68ae3d4d466dd27f3d03868b4521f3fc3427d6ac7cecc159c20de249a1369b3c3c7e14d3a7e7db859f8c62c55bbb0a523ff9b9dbd7d0143e3c50b218fc98a1221791f25dd4d52a06b00fb872a989b0b38109298f9a3eaae55bc183050ad053be1ec909858f5b9b65183165a82411433b01d062d5ccdc75c13682cb99a399aaa050bbd031d698d1b4b39f2714ec144c26df102ef2dd5bdd448ea5a4cdd2638b78bc3c1070937b9b855fc23f1c03c1e17cbee48fec917db68a807eff2ae317c4ffd43156374027288ab22ec1c6959ade51a9dd6d516d7e070d1c3f1c33caee7521de8410431badc976ddbe22cf5608b01b3faf9498f3b2051f85721c5048aceb510280f3b097bc557e4211ae10e60261cfceb4622b117a52d1a1864b67573c5cbf9838f0cb087eb79f991da35172d86e8c5a46798be59c115b1cf8955172c34e6495257eb6526e6e9d73d74ae556821bb5f6c1cf09f6dec56cfd1809d5e49ec7b72705135bc2195313ebaf116faa6c7af8db6cee7e688f102e7fe71fa2791859fcbb59ae88fe609c4591faf86b544e4131aa6d8ccc14238d022551f72fadfef2aa785f17ee1e28488729b32cc4cbcbe5fb972e42978b1b87c8c0fe4195d0c7014ea9639a9219b10c8484bdd129836a2c921c6ea7bb58a5e554d8bfe7f9563b2f8f4d2bdf5a08d53590f51e0f63e101d336d0e3e3b8ec1f9587342b03efdd516c82353ad7f73db922f8f0d354cf4913a4068e412fcba38daa7fb1a5afaf878d2f768f2d77e24129c35f651e4cca7667ea9b4bf582e543225f26436dd61fa40609abe5359bd555e55b2958918255564247fca6a88474aa311fb5baa4f091ce68d3831f257ed3fb150d6c7d82d40ef7de3a3e9983bcac9a65a6c87b1d5d43427ad96d45f6d148724f0e25580bc8640dad0d6b2129ecaa7ca1d35528b7c2e959fb5433d4183faf6f915b870db9074a2e17f1209975171ccb8c853d38107f828b3ab45310146e99638dabadc5a1f80577829748397330eb713fd701caaeb7a448208c96a0d0bd20ce3f7bf298884e4340e3e9762faf68740c3ef1886922801a5d5aa82673c8d734e851913545a9fd68cfec5131325a11290ccc7a305442f53637a1b66ee786798a33fc7cc693d64ef323d7880477fbdd0d73d8ade9ada1cd098b3f19721f2bdfc9893fcdb2af3b478b9242c4f52f4dffc7acc8da3a162b6412e9ba9e7137f2a023e73ca4f985ddfcba54817295eb2914361f2b7a344bc68ae0bce9ee6ad85f6cd90cfb69ae306bf080c6c23f1ddd0d3044488c8ed66b9f59595f805a6b544b1c43fa7dd33de7a0966f9ea1c2b2fbad58501b12e776494da704c0a43bbb895d1747f1343f5c4fd40d48627a29bb455f4d74def8f80d23bcefe83339f67b3c800de27b0edd95ca57e2c3e16ef95fdcbdc6bc759dd4792081203a22548669cda0839d4772f3b31c69814ab0e6f1847beafe5e49914a7f74bb2cb452761eb74a45e6438f121f07333a1f58137a78233b74e4c30923db7b87024a477dd4112a7de53854a10f835419768980b2ce9f1e3b1ef31bfdf2b8fe564509ef64431fa3d96d417aa2a3ffc9da27ea525a57320df8543c705bd0e62ae3353a2692d44963b46342f1050bbe9a1cb6c204443eb206f5856939f4b3ae606aa4bf7438031fc82a80c3a41802788cad6423ab168e31959852736e3154634da3cd6d0073858dc17024ffcc0ee27a2ae7802018f3482d47fa80d9192526abb8100945c6e60d1229d161a8a7094bf0e1a8a01ea3907887787796aefdc25947942b28f36db95331d5d6c67370b7f12a5b7a9a5c98cb081060c12591bc6fa796aa8538bbfeae367102f73c6e9b553830310ebe3842ede974b9a6e5017c745f38088f23173c3f8d448f2aaeb78c84ec23fc01bb570d9c2c7ca12e3ccd99cc8e5748f6b931d30e82d0f185180aed30354dc63cb4786dd60a6c42b9ebd958cef4fead28a1f93c3b41671bb6bcebb7ebcc41f8449d7971595c8c3ad8e1933c6a9d84cef1f0f812749a77e7162beba2373636f1abf09834cb2a53cfe4d19202b3bf24fb63a98aa9ba1092f7c36c3a0e94fdf530d96dc3a56157237af4ac7fa8edf8ade7cdb1fd31968f06ecb03bc70dd7664d114f383b1791f8adc8363b735cf82e311258d06c07ab77c3d99feccb1dac6d607a0df821b7f1922862734a5038db979b0cb31553713e743c77f381d192fb299f430fd71c299f14e8594ddcc4d00f07a18bd1de63de4f836b7c085c2ace1cd48a10f57dbcb54a3e8cb620bc50b03f40c6722b8fe813238e8dcb8b3114d47a47d8bb662e7dbb233ee8887e11f9844f3b5a4766fb6edfff2a135548cc150f2ebd13fbdbfcf75f5f2fe1dcd6def80131a69463bb1672a1c4e017420e88dc692fc809d09e1165279c89453100318be1edbf1f89ba01e716ac0e3ef1ad3c6153b39c75f30729c2bd0c76f7dfddd4908ee13b77a62ee194271e5dcb839f9c418f5d393ffc7b129e0e7cdb87ae59fd51da6e937fa13a30fd4e81066a4d4e3dfbb0907a9170a61373ce42e53374a09a1b30d90d7e49e82a1545e9d15dc5c5525bda83f25dcde697b4c0a5cdc1108bcae5395b04710bf166d59228b74be3ae04804d56e60e0940dd3d4265442f2c3393e890e18000532216111d2165c4ee5b9e6e791ecd167fe2d6cb0bffe60f99937a2518cd92621f94a86c60fc134e187bd9bc5ed17eb4a2e7b972f9e9ffd13cf41b558be68c08042929b1aef58933ceb811c07c9217dddb614ba2fdeff67049e5ba7fca3058e25e8cb7cedfd7776ab6675e61d3f92c1f9b3bd268d067742c02a109f06d56561c764892f5b80bbd682203cfa051a7a5ed6fcafc0c42dcbd409c6060e9c3a50ac7a4509e8c09e6e90787c8625c954e23c946ef5b2d442980a64a05e17c0620bed67d825ce10539e32a8550d95ad576568720c0c0c11e2c0613e12347c16e02b74490df25850c3c6f4aa47cc803b602cb5c396d4468047b7e4eaf23c8fe52270b2d25360a84af4d9de7e5a0f3ef803b5db1956e6a68549fb2350bebd93775dcd0c08a28fd3fa8c7bbba8ec3b5924dffb221d5cfbeb1e37f3ee3cf54a13fc67a084012f98e03b0f3f2cef513b86ad754995ad462cf5741a87dc974804cb3a0c404a074622b28d7a23a9a36eb6a484a43732a20d32128fb713211ab63de36ce0dc7713fd79201f1c4be6b56c8e75babf839238fcd91cdf34c69ffc2aa4a6acacdf60560d89dcb21b46aad4fee352df864cc72a9793d0bccd6438a8e6b43207523305c43e74d1783637d008b60f4d9a825ca54d997f27174be238c28ed8d339358361dd3df6057f98482cd5eb5838f51df1be076703156483aa2f6e1153e0bf44b15793e60e8a426d5fbf0b6d6d9498edcab35d622a70b8f356e232cc0042dc7619814cb8e4d1dba2923dfe4ca257e414278fcd022d2f396223ac0528ce7f51de65562d457c461ac5d8cd1442002f8bf76c5bba98ddb68731a4a383ae37deb03fde91d5760fd80a625b9246ed8ac0d8e5b8985010e9ab003cd542a59c901790493788f457f4e8dd87db1aabced7980c9987dd262c1e58b1ce5b2ca49d1c14c2574c3ca1d622e7b54a611f51612a568ecbb8445d3515639192724da877d990fc1db7ed61bd530ee045975facc7f54a6ea44a8b5df687641a7a7ad199e203474392d6158b93549890733cd601c4827fc7b01466107209d6b9ed2743316346b663e1f94655bf9382beb8d7e450b05b15a88a14e50f5aa547fb1b560956e6fba566b0a1faed76baedfce9091c67cd4d6c9ee5a49b2808c69642d3e298240b2a9d8e7ca21a16b68ea2125aa664e15e0e8ab29b4a8e614acbee8dee66358a8266dd80ff43f3530dd4fd53804f8e6623cc7840db356db11463a35ec0438661dcd9641af41058338a42fec47c946cfc0fd7c57f81dde3f246765c45d1d13fe9deb667bc2b55e6c4ec20dc3f7acc4d1ae58b6c4eb7afe5c36d4fcc3e71b087379264003b01128b83514a2cc980ddbba5b52e43a402256e26d5df5a676f732d85bdd21dbee457da423c49af849bcbcb5f7287bee7e79048397cb772e343569aabf52fb22ea926d0efc1cc2fa0eb415a4eb8d9c5fc37ceb31d166e60ff5169a43cbdb7222f0e6251ed6362a3368984f4f5ee78b18b6ce9fda878826aff02ab176dc159e3dff313ba8a0221d8a77de237503e5f8ded02699c3bac06ce26f4a35bf7c7e7af957c7264f8be1d73a56c4700abea64dcbd83320854ad25db44314bda5137d6030497c16838a2d0b16fe8bf4c6285067bfc93d5d6610dfc36892ee67b936bf82e2b37c89104e7af80d1099cb17707167983f1374c3fd0690ee24b8d1d1ab797427b57cbbefcea71eeb5a82c48ed3aa53906d1fdc89fcbfc8568fcf40546d82e036b7434644efd188a7febfc9a0d89c124c4ef2c3833fe6e5bd3ef910c56bc1ed73d625a862d117dfcd874b73e7186bc336af2e48ed4441946cf473fa8098c427470496f76d5de574894eb07087a586356f91cedf59dcc545dc3816efcc0e733cfdabf4d71d2e0ed35536c1cc8a07fbd0b2705b4668ef9348be2118e5e11337e91bccd31f777b3d30b623386d1ed48e1cc6c3375dd6b4e1be6b7d924ca9b08b330ce8aa94f8592d43dad02bd65bfd83449b6b34e2cdc5b27cb4d99c00790d43057ae6c99841c77ad7d911241f93e60a86b7a1d3b09433daa7a16506daf2c7730ddc8ecf277575e7c55ce3af30ba2994b1e298af9b7984b181e67fc8a0285bfecb7e06d7266da1353e567cf36fb6a6ecc4d909c621f9ea3a27183e517a4532a75053d875cb7a457432e03561cfae6f6ece55b216612ed09fbb39d990efb688fc63c3b302f7fdcfac30e1f025337d5d930f131403ffd84136ac88c37fc3272d7abd3c8f290de976ea6bc073122ef38f4edc5f4c0479c89dbd615c976bd97404a56c0911ec92cf2b7d06e98f85c72a24f0a41e97f54aaeaac2553123c9a20df362c4f2d3266b4fde1ba813176db3422aa988a75590164dc6be44b2112906e5b2ca6031193714e080db6edfc967a34bb9941c98731d4efc54af5ac9f839cbac003d7d79e2a30a9327d6fee6bda6b7c281178ac0630030dd9dd1afed3a5ba17902f56f4a1a12b67eab1909b4816f27dfa7f22a39fcfe69a22819706a87c508c0cb5915ee5f36f3da3cfbabe78322dae26b5baa9159bb3998ae5d7cde89203bc2c6a8af46a5b592c91d399a8990f14c0eee75454a0862f93ddc8b922047dab1847c963574ded27ae4b1a2cfa5a73a653f899c9d5f897f6b5c12ab84e3d94b33f74cb4c44d700d911c83aeefa194a7d275328c456bf7cdcdc6a8be96ff15d83ac31ee9c4723d35517dc7f627c3c5b9e9cf6452669b20bfcc0ee2e8473848ce225ccd904c7b4fe4225d48640ee538babed34744999f2d0599752f9affbf22fd70150254c25a92b8c63a98036375dbe8a511f74f2bd60863ce946a8c3f4373ec10d4e8e28641debb0278fbba00dc42999bebc58e56524f43c0b5bb1413e4ee43e4b97bda2b5452885335f3a5485b8f43ecf170366e5875c6ea6090e6ba7b3c1cf9de10cc8c59b40bf829428b11da98115daa00b96d6c1382a1bb909493a26a064d312f3c48c9cea52d2a8095cfd5a00ea86a527b995ee843822d8bf798e80c3c9448c45b2de2fb160b203fe68efb80ad7b7239709e88e9b4fb1fbaa5ebc187b4d9fe3465ec81e38847889d1390b26120827af79490c927c76d8600aa25d479e81b7caaafbd8be4e1c943a2db705a457da2bc736ece4121d34bd2feb2eca283fea4019f1f9e8e61974075e421be34e37ed946988a5e66627888126b5762c2acb67f2b60771af92ac0b440b18e58defe955bd8d171c90e151bf562e10d88d96712926f82596e52d02253afe58fe3fbd1f49b9ded86bfa8a3f6d974eb35f1373c653de93698adb4c341a2258395fc7d7ab3ebd448f96ed48901b34d11674552535ff2f27730a1447eaf3c3b881408561fedd13eddc431b13ffa95190b7e4415e7c5177bda59a93087de4fe27694bd8037f2bc0d280dd5a6fe36bac81314d9cb682c6b5f04ce824d2c2bdbdff10dd84c382c81cea67517725fa53b878fb2e603097253985780438c8649b3e957204e5d94764d3f475de4b987119379270958370d1747df9b07c57f1dff7d3210f8bafb390ef35d83bf7810cdf81548e7b2856c60de33c8191d38c27eb39649eff0e3ccdf43541a87d4ce5220275ed587bcccd3302ff70419d7c93d579a96e8d85e7832f135ca4bd2ca0ea1d29fd65563485a6023a718f5c2061e3e87a81c01701aa931080d04dde58eb0a60c205554971860b1b2adf3569a661d51f7c130766fdfe3a1edb4002cfe5c2db9ad765328f054c7e29dc0e8ea8899f69de9d7811990bcb306df92f0d1fc0b98b6e15cdba982e9141b0c91d0fc8bd6762d8c8152b7e53095be55142256e70fc630b28e14a9b3d71ec03c1c251b3787ec267145d337cb21f3c26a9e0cda040efd83cc355d90a1008d5c10f6a9f786c432989f59aba4936d27a6a2d5b00de14eacef4b089ec4457a01bdaa2fa90d4ca21ef9d46b3a54bf6bab688b1680d8c6e42968fbc5039146d5f2f71d2658475e0c1f6870184988a51a0963294630c3ed152cc4ac5e11fe2750e884252ca4491d9520ec891c1c4c005c7fcda77e259839eb809162670bf89d9d93841bf03cdbeb149b29fcb2eee2c4d40ec10e11a4f9f94fd7fc36cacf6992a4f0fcaaf51d1878ceea7add75d2c821b6a8f3ce83a7eab1228ca9623043e9d7928145014d237f7e6b1fc4af4af9945c2d0cc81d8e6c952da1021f0a351e9c352d9fa8b2d86a9ad2499e475be0632f00a225d8959e8934debd4ae1b1ea52b5619be05e2d698f4bd5bc70cbc3fc4c113d30c0c9b5e831759f2b8f823123397c881a2fa819f8c3314a54a3d7d54a53cd3e5c6d70b15bd43baaab05081793b15ab76ce3eee3098ac45ceae05835f088240c8fbcd4cf4418e1fe6430f10ef826ebffcd9f7a8636f00ae2018ca6fd493241b7ed2bfc8d0438b197418472b8f0e0012b4316b7daea4a70455636dc4dbdc707560800de888064e8599e3e9c3be2dd5f258647d17fc1936ddfd6fcdd52d07be184d02c4c854f38339d702bcc8fddd42cf3b1bcca7e5f1ddee2223eda8b03e6f37be9f0af80edf9ddf6f3213c1eb86295b656f93405be55eac0990d6c1fe76046d6b680c0581d15b8c4753e06e687307e3968764ddf0906caceb00c9cf0e13072d0d7b4fa2ef1a4b93d783b54cad2db7be4564cb26873c02a280c97f574f4b669f9bd81f1c7aa838c54eb4dd63a0bdfd931f02fc3c2762076c7d1dbab8061818ac15df76a99604028366c7344c319fa8ec4bbe3ea36a68841fce4f3320519ce97fccffd9d80ee2ea50c92798a84328af5157e00bf885e53046726939cafccc3490f691e6fa03043c6059ac1f661972c816d6ce6098530f6a0dd5258889e2c45dfb7cea0cfb6d45014f9e851c6c9c6ac0194a68051b78444d24617d84e3713e234c9f053f45c5f8e31f42013bc9fa7612ad6d159861f541e08033d4a51ac4b9d7f2983ef343ed6a19a702bd3e42fe9158a0c05855dfa64e68064fa5227b22b1f87626808a0dfb29f87d161a02d3ae78e016aa0753ef34371f37950cfe014da460a8f5560273d89df0d3c2cebe1900ce0b092045888c3bfd75c72cbf0230b4c0ff7a9e70eb9ab344ab71c0bec0a719c14c7fb8130dc827859a00e380f067abf14df8340807c799433ebefe8cbd54bf4999e76c99907eae0c2f0b2546bccdf2b09b4ccb84bad19e1682c8635acce956bf0c807ba400823f7564ec39f907455c0a83adbdd13f9ad127fab374a951d715ae3f5ae88e2980cfd62c6926a8db013ecab96806d96d8880cb1400102197cf665a1f304bc89de2b12bd216e1d4ade1633314cd63dc1e86db7457a489451ca542e9d4f58a0ab68e922ea05ae76b3901b495749057982df4749f8f8723984f3452b23959e9135dc3d7e354252b31644dd2d7284ce143a6461e5c5897f2ad529502036e74a78e4a2a758f8ea1a16b57f88607952c5b6189aa001eaceafada207353e37f1e4f6f22973313513de878cf485031eead144f5ae4ef5dd877193777b3654352d1bfdcc1f475f0c3c3273c1fe3f5bb9b8e69a578b78df56da4f85b4ceef6abf3cba0cf14cbe3c9d7afb4636e54d9e583013ddcab810e186dd219f4a07886230edccf3858faf741c8e12f5d79d4fc0f254023039e4181131863a0d32ab3f53f7dd8ab406daeff5ef3c152ad568de586fc89b55dd0f282efc78f69415ef914461b87aa35c3e01b516344fd137e1de9b3e9ba6debc61388e377450b290dedfb08f551713cab75024ec57ecff4155e53d4e7762664be57982f0f45e17ae6cd4fb9d025fdfbf7ff6bdb08aa6156a82a6b70c0596d0f30d0a87d8ba24a1cfb92961a43f57f4b42f01a73b675bb2f9febabe2cd3903eddb867d12fd59c2f2c056263e952dba4f6fe756ab271515f426c176985c6b32d7f4e3ac1b47326da0a31fa27dc094f374c407ad30d84050b0378717fc7583b40bdf2d4832d293de157eda2a978a51f2f102ef8d0270fb8d24849b8e6f44fcb38b05b9bcf11b2313015721363984f01fc1eb8b296e2584b6da9205110ae0495a0b138cdccc6afd9aa1e24478b90519efa9e8d10b3428d7fd44c611e1fbff991e9e7f00bd9141f54506c1cb7fb0f2ff06baf7b8479b343718fa4ba2936baa1e00faa5d565fca7283081096d87637a5086be8f06300f28143c03b534f867fddf8009ad4593b6026c972b22b413fd81635e867ff0a5cf8381de1dbe6c615bddd237df1e2379bbf15de1d5f866d87f3d806e32f67a7bc985e4c70ae328d78f4cf8d39107c32f75dba188d1a4f797297abd6ca38961713c201b0080feb665bffa6e07a67fd638c756bfe547d0003761b040c6be249d412908bd0563330638b7369547e96fe32572c06bde73b64d267e669d72ab7646d2407f09cef6d1b8aa30e4859bfbe84cf696a283648ae01dadeadc0549f1bd7b9c6cb9a62b2215e5f37222062ed63792c7d62633994166b7de7fb17d6fe830861ad1c6a92d7ea19dd2f3702a2afeb11e4345adff17ae64936be331dca22cc13b7441a7d643cadad071980cfbfb0ceafb814bd49322fb3f9b5c6e78e8e8a9ed451678b482cb91810ec4506474a68264902ac4401fc4b95dad4a311a7b8c8b527c184b055d4a74f362e9d784719d1cf00b6b6adaa179e863ea18c0095b3da35a57618b97e56702569927ec99cffe4d8b834b8fd3c465d2e78b3d66920b510f153292987423dba9ef0848bddaf8b2c63cf4278037ad8266954aa1de40eeab99216d6cee9b64a5008c472b60aaaba32cde80417e68b97d10ce1b8d1b2e9785dfb09e5ac7995502fe32362ae0806abe61c183f7604cda6eccee7745ec1a030fbb0113b13ddbcb2be9c92fed02a732d7d45d9bde6a86e935aad26923eb25c23e663dbeda36bf0ad610378e31525036bf5fb85e0f9c55f701ff65d69ce77c4c6737ccd9de4861513641824896df5ddfc43ca8db7ccc37daf433e0151e241f827fad86628c0bb364e76428b919fd08f59b039e33c6ba103b202c69d201ffffffffffffffffff7f8651bcb1fadbfff84a744a32a5c5fd580d4a0dabf6cf0e927692322529d01fc77098200600106666d6feb32af1101b10c0106bb1a6cd55abbfc648c160d66031030c1c4d506bb5b24db40737196630981ee06002e799f572aed7fcbe25206f538db6c1f3dfe50c06e302c4474ba6093894b0780afdf1b752b4ce1996355e82b0a8a824e17d1f51d9ae7f9a5a0307120e420929e7d3a4436de908890ba5c34753669e6a04659aac9225225f5658044fed47135f4a4e40d60d17951f2c18cc0e20eb861a3fd0301da702298f8308a6fa8ccea3d4f87a228e21ec7e27f4aeb7af0b31237008e1f78ef57413ed197b0683c11104459c92f2357b27352b1034954289ca4de3cc8d2bc0f1837defdfc5d3dcef2ac7e183c5c79b0bd139d88dea8c0a8e1e2494ea5d5fa1d5a8a995c160c4c0c103549490aa4e558cdfc2a222051c3b30e34c87b2cdce5b85651101870e4e2da226dded5aacbe33184c0c56de71e4e0f02054760cedf966a90c06f31203ff81c1ecc0605a585a58c848f98103077898f1d321376a5fa1c82dba693ed6d8f559dda9b80622b6c0537f301d29bea412d542cf54316a7a3b6db069814dba06b1196f652e9b82c82c96a9b3d9ac85c9cd23cd60306fb4f7e0c5605c7e381b2c2f8e1091c5e7a93fde9ae2fb93f625880f1b88c4e2e89d37bfa47ce99aca94404719296388c0e22fefd29b2bfba7935ea196dabcead4285cc7ce60306f381b2aeb43650522ae70f3d4a8ce3d83c1b86841a4156ecad6a093fe74a3ee33188c0f4458b19730214a793e83c1f040641528a9756122aaf8b5c69ae6f4314cc569fd4024154db327ad6c957ad715ca603022a8e8b51a29ed6c5d5f6ba7c80617b1d95ad5938829d0e3aaae65b492256606832943a414beac5989969a6475aa190c26067b860e1debc74a193a74bce165e8687111a400d93380ac8f198890a269f6976a522ef446794064144b6962c7b3854bd3e20c06338688281093f7cc13696a106a32188c4828cc9d579dbb613defee850e1e62888002939d937ce552d9b9f4138aefbcbd3e5a5f9f85c1f010f184255fe7ad394d233fa64ef4c9f486ffe4397fbaf11e1d86082712aaea9dbf475ea74f0683f1355adc07067301914d187aa39f5c316af2aeb1f2026fc160768868a2d51e5e84cc902ba4520b4432d1e70d176bf39fb6c832180c06e3e23d822c9633c62082895d496fa9eb6d9a869507017289cda3b9107264cd31aae51997cdfc08d28858a2bff3f918edad94af32229540e89d557aaed5ac4fcd603c80860825124a3e4d1a3a378973d66adc547983d295f5404412b766d624b26ea4b83b83c194211289958e986aa7f146e928f385082476b9af5bc479c99bb4190c0683d121f208a4507b3272f5e79518b20311475c23ce4cf54bb11d951f24c060160d441a7108b3f174dfbcb7146676780f5e13883042b9b62b62a4dd6bd10659045b7f837f09259e33b47820a208338414f3e24d6b948d104412f14df3ec2a21b5ec917147c80f4410a1e8a0f3d66cf6a3e9190ce6c5d778f10fb8bcc821d6e3369ae64bad72bb0c06f3b2e26365c7193ac0d0c123c565fd08c2f2450c56c4c06058c547c7400d1143743bfb4ae82c153a6e3e10298442adcb59cfb1334408b11a859e5577b7add4cf60306fb4bcf8606911e38d161e981022880c22d3b6367242baf674333bfc074b0f303018ffc1d2a353ca10110473a23d7cb9fcd39e94c16058fe0719fe010cc6058c354402718f1a55b6369b5fca0d1048171e6cc58bd10e3783c1b4c81fd6f5767312e7a3b48b85a56545fcb0a9d363d3be8e77a994c1605e82f850790972468af4c176d99e949c8d6e8b3218cc11e143aafb45c9bdcd3aae760f4db3feb0b24a43a51ce9e1de1b6ece427ec7d5b6478f558985481ef2b5419e58ed1b458432184c0d6ae06325e3d2451b3398c118227840caf2efa45b76da22774827256b759d3cbdd2ceeca8410d663003963454d65a0c66c7cbcab6f07880cb3e2024152276686b16a55acdcd498de23ae85983321de426919ddb10a183cde1a02122078bc3d980081cbc10794372ff6d43d6d81c2ee5067e5d8aa8bc15d25d6b434a431136f0e146df76ef6dc840640dcdbda373f487e79c3b35a865df2ceaf3fca4bc4274209206c37f4e0a9f8d512b4ce9d163c1b081081a50636867b0c6d0479f80878819947f359778dffcc93544cae069dccbacd1a22a43328440640c97daea9c337b39958b611ddb832e51ffcdd50243240caed65909bbad5771620683d941021130586a56a68514a53d47f10b7dac392ba11b0f1d68ac7c5103112f24bae6247b6a505aec21d0a102c4256408225df8a48d9bdd4b17217d2ee02ffdf4dbb9921d1d28886ce114776ad037eb9c4f4c225ae07b6cfa14fd74a9dc824816903d364af5562dae5f18202e2d225830546648dd41547cc63b16193a528e207205c4d58bbe9a4f779245ac60fdb74afb8e5b359f502052853665b6fa1bd46c239f17112ab8a96fd61ad5a89a4c61203285dff56fc83b51a6e63452305f56b7ef4fa9e956148eba3ca4ff0af320722824afafeb36669f5ea5e940e409cd377a8a8e2246ecf947c409e9a0e69ba3ae59acb65513541d6aec71d751cbd08c09cea8d413b94acdad732b224be83bff79a7493e772ad90f4494a0a9109e4447975e322c824812fc4caf9f71b19bd32b04294f1041c2354d6fea325b3a2b0b6182c81136a975f26794389322112360e266a6c6bd6e545304b5e9d7655ae99a7d4a8408af8996f1523d3a52bc70f196b5d60b224358877db129b5e8b49a1211429baaf3715a7610e2765101e2122205912098b6e34167e53a77b8d191d22b2153100102bef242cbdde9b8a5b788fc2061ef41ba4aeda46f9a0c06e3c6b6ec7079c3cb5001e2f28697a102111ff02a4776eba3b84e6e0f1a363bea7750428a5f85e0011ae001f3a1f25cd7fb9d5059c04305296388ec40ddd6fadf6ff5abb2880e0e3195a3ca6fd0dab53fbc870a182239f8758f929b79ae54f82238d866d162ab537e97cab738ff6667a174bafe686dd15c93b27fad8695f9692df6d1517c84d692178f16a86b28259a3d7b269a05a33f536a9b74b61351167d6c9ba67953999df4b168766df6e2cdbf73cecd60b1486f2d4ca7e16b4eafc8738899a9417f34a1bbe25b3335afcd72c34df3adb084da0536ca0e527d789bfe5c1084b0624faa55081bcecd26ad6299a1373acf6eebfbaae86d67575d691d5556a9c874c598129d648d7aa362a9d42c4e7f14fa6d7a9d82ff98bdf1bf3dd4343205233fe7ac8d2e4d5d5d8a93d7f041adecd7ba94a4c04ff676aafffbd2f628bcc165aed8a4e4ed8d8bc2929d4d08bd1f9516ea503caf95bab93c55bb270345a30661aa9eaba2a74fa0f7c3e630a7454b6fcff104f2e9b6e44a972fea84e625a6b3bca8d5b40f27ce08d94472446cd6aa0f33226be2aeb1ece65cbd2ddb9f1c846422a5bef5dfdd9e543a2aa346082650a5b31417b5399b4b2f8109b50bc764e59eaf7e7c4e1a219640e738ea43c89d371f4384105209d6a416adb5b694193594409c18a12617369e5a7512ea0eaac7c611527fd620934483941e42c854938aed984522136a1729256ef63bd7ebd12b323018b4821048a0da4388bfc9f576be1f81aea7cc571ae6ff1d47587693b6c106cf2ae6d508752ad5fa11deba4f8a11dc8d1fcbdeb5ac377911893d1da47db7dda8d3c84314e1ef9caec88b91ee3989b0668f1b425d988d0e21e28ee52ad4bc255fa59a439ca4ebf89c2b9ed4e4ab19a2f5206cb456cb3e4fb34218f2d347ab7a3137216ed3aaaeb4abb0396e83f0b3c3de6b8d54a1a5205242ed02ad758eb9d9e39dba2310a9fc8f37ae75e9bc1a40e4f9f33677852ebfd31f8e373bb24366bd884e0683d981c19c20c40f4d3a5fb3a94ea3ffa7190c66f9721941481fd437bc6bc6a6b7ac3d840f9dcd5179a8f7cda7ee1e4cf19ab5c6f74fab523d9cb49929fb0c7de6a21b84e4019b060f798aac8b06d1172bfe6b50265e8647c81dd02d852a21653baf8edb21112d4a4dead6d4ec356c84d461f5feafdd9ae60d55b9f020840e298f52eca9470feee11e84cc61214b7ed23728f110253928a276a16bd19e26edb0a1d5740683d9b1c30215f822240ebd67479b57968bdc28c5479fe043e0b056fdc9d35b64767e4383a85db471f6a76ed27af3d3645280b0b42c0ca6e5458c10373c5ac7bf59abd809516530981d3d7a2c182c216dc8c5bf9ba9b9568ab1bd0d1536ac5c2b29ee740e796dafe13b4f53b9256f375695d018188c4b0a18216a3047d4c4bd9a94d6ac55f9e1188c07f12023c0605a109206d5285a67fd6a5a51b31d821034acf54cc892da59c26366849c81d3fb7939f94fe5a31033ace5c8d541c978fe1862302f2c3d5cca80bedef7af7dbd9c2783c190114206b5eeb766bb59a7fe780683c160ac0d0c468c903120ce3fd3c5681d37dac4c0c768713758ccb81031a4a6bf6994eb9f371f0693c22161484739953536c9ef9acf60301997204030180e8480413df93c5a96fa8ee72108f902aed51c26366b33d615418817fc1693e5ea6eac530fb22029ef6974a17535f24a5fc6e8e9a00a0283102ea8ae756fa839bbae49dcc25153ef73129edac513a2857416f1c9c615f73179162cfba0996aba9f6d150bbdfa31d59f46132b06d3127285d4a4d45cf6a7691bb44060668573be1a75eba8d07d1983b19021845421f15e2eafeb377b50beb4ac0868104205e7e6afd9c6ecd076daf7345842a6b0567642b446356a93f304296284480195d79e193a2ec5da2c32de582c5f6030a70d0cc647c740062151b86b7ee959a9ff9a2da1f0eaac85a77dedecb928e409688c969cd661832e1d0d8438012d5d0d727fb4cb8d9602829026f4f23c74f3a56e576b0613c284c646cf8ea9637b56aeaff1c37bf4d84c7f11b2845f5d84a72da9544c27b38110252437abce2f3bf978fe64305e8424e1755763767f96b78932180c10160ca641a606068384c4d8cb6ae54a7ef593c160dcf01f3c30981f2ae408d6e7a8b4543acf603016628426d12deb268d9b44ca33184cc625488f572145d8c6c6f052f3dc4959653084087a898d37bd39ca4d733218ccf21ebc6bb098b1c61a2c660061090106b3064b8f94266408a8071d37b36b6dc36c81818b10d0d4694ccf9a99f541190c46e5c78a4a8f203e3a101204c42a7da9d4a6cfcfa80d1597c1ca0f0c86577a78110284e64e6a197237bcb65706833947d963300f08f901bae5f9be4bf9e5f985f880d3224d4a1d476ed442991d3bc8d0c123a5c55fc8f0c1d222463b10355654da81b874480ffea4e48bf49a46a90f6330292c08e141d3786efbb1836b9ed60eecf876bff2b6a99fd5415257f3d4b3d2a172cfc1a9536365d5e7acf5260407767e52c2e3fbf74d933750fd344b6aec0721b45a3ce3b263a860302a33b0014abe7853a12f6d6c510d12a73b85eea8751821ca60304d90141e34606ccef970d136cdbeeef00006d3be786030293d6670106e36b98c3add392783c1fcf01e2a2c3f54543098c6a8a8782103ebb65f2b5526958c10cb8f6d3530981632dec047ba898fdb4947eb0c06d3c2d2c6f6781595951e3d1c8379f9b1c222823430189697176f797159698941d3d849bbcd3afd783e7db0b43c06b302371ab416eadf95502f3696c16056545e5a60e0628336b839ee0dfaf12e34df0c06c3067283050806638220d9aee7d6206cce4acd65309818b0b00a1bbd3d38022fc84ef92465672f59fa0c0603035779690c66070c3ce03e5678bcfc580cc67bbc7010971025b8a09527a1e2a68576dd32188c8bbfbcc12a2c2f188c250fac1ebe22060683c1ac1f180c1bde6397b7d112a453d0d249d921da6f50131bed80c1c16d14236d44c4735b69d91f2b5f7c00c81af2b3968be90dfdb23ca355c58a4cb35393190c86e5e5c78a0aaa202aeed2b240ec47f3d7e83ed7591bb36a9081c047a7b56e58d7aaab5acf60306fb4bcfc700ce6c5b34736bc7c77a9f8289e860d33cb94d23675cfd67ac1ebf271c75ea8cec1cdaca0fd469df5e92cadb536d345a63557554a869c9a4bbb866a96a154a708219ee56a607edf1c0f3932de52076497176b45a086a7b41a55f38a2d9de65d028aff7f717da9a1a319610577ba1f75c64d26abf2e075860e1e3ac42843c718295f84f1460b0b2f95143446568150db23d6dbb5a5775a5a3c80c6094654d1a885ea8edbbe19b26754322f2b6ef4482af2bce953eafe2cbba6cc082a50a9c54fbc7d3e9baf25e58b9153e8e5fbabdeae3b3c35628a54279de5b7e4861535a5f873dab741b950aff5440ab33ccdde977df63c8a95b0d11d5df23fd436228a462fb71f971d1f76fce134180905da35af70d79dbdfa8122adfb4996f48ee294d0277ed52b3ff6bbc718db13bcbf69ab0e779362f4c6482710e2a15f83fea044864638b19967b5aba48acd8a9b406851635287a6f61b69629b11ba6aee2c3ae49f61795151011284a5658d914c5cffadd5999e5b69124630717a10fba2d46e52fa5f621dbf55ecbf14d551c8a2a202240812462c917a6952aeb2cfc9e6e048251c25e6ffb3bcbe3955168c50226dd3a8656aef8fe53b8f9149bcbaca45e951a52617079184370aa5ffa3dbe6981689d4be689562737bf0161268a1c69ad5acc54d3af48ff8d47612379e689de30875daffbb399dad6eb211ea5c79bab7e33e07152330e9222ea9224ed244246bf479d9a7ce6f36a5780fde2b8c20228fe635ac2cf59d4ec802270d1d67043a8e08741c34749c10e83867e838665440a5c57ffc58c1600eb1d0735aa9f8b7087d6388b3fcb365c58e5673bc2d2f31f0800e1d3d7a2c183a524880c1845061a410b63a751fdc5b7395dcc5657b80d1e2221821c4621fde4635998b15460681d42f0fa9a67d2946aa0a238238afc769ab8b54ab837e046101030b238168b04f4a3547ebe82c4b6104108e885be939b812db35237f50a5f674f1f7a2d2e3288cf8e11a4fb1a2eb3bf3a6102a8cf441255b52e78c113e18defd7fe3ca50b38ac218d903424c89b9d14767f7f48b113d24dba3bbe8ddfc35abd1c0481e12a5d49f398287c65488d096526d9815182377c0a30ecfebd15c857d190cc6575a5ed418b1c351ba09fd5cd79aff5387d3ec2247b7f9ab6965be061dd26a1ad4f80965b032829139f8f93c45dc28e45f9b1991433a6a5da8c43c0771a3affb313346e2907bd43a3ed34c8ed6c001a954bbfdb6d42cbe5363e40dde3477749b6ffa3cae45e506573e476d27d256eab80d46da902a9bfd6fdd53dc4b36f83a9c326d52449892af61358de2c67075b37a7a47d4a0546193faa8d57873d68da401ddd28578714ac7de34236838d958179f7e7d1a9496b95c2df381913374ea448d5a9dedcb2da52461c40ccd2b9554535afb0deacc60309917962f5c3c3052860651ed346d7cb231954cefcbcb8a91460930986f69a30323645027d9b13c54484f95655c9665640c6b0a0df91a369ade550ccbccba49cdc2d5dcf186c14e5f275a35437d080647ead3e3fee917fa55a387abd249d9647ae1b0b1912e206c6c840b071b1bd942b2e526520957ca3cd4c2a2bec6ec501b953c595e7e907182912ca09e52ab8daa9ab52f2c9cde44fb5d4ba1c3de912b7c2ebff23e27d67d348c58c114a6b4ba9ed23627be61a40aa89b54abd9dcbcbb6b17951ea142f35a5fc64d7cd88ecaa460640affea9ac4bcb0d9949c190cc665440acddaa634dd8389a7393c5246301285c3547ef8314f5aac0e142cd1f1b94e15203e48b0030c1d2d2c3efa04296cfc5851c3479f4009234f3847ed2c63a30c912ae484e3b4d439eaf37f6ce732d284458d369829d937e9b24cc665c7c011267436768d9f6468d3e2238c2c810fbd4aaf5c9bd534cb94c07a6b2897e5598dbb26a1553adbd689d413a1cf6030234850bafe15526b73e408acd48e9da3f0d8695a303062046f75dbdce0bbb2db0189912234dafec94ed3a466652e22b8df7255dababdcad110d4734f7f3aeb33de0244a5050c2342386bc809533eca5df591202c273a42cdf2a6da4633188ccb0810f22ca9a95f8a523acc66e4078df39b6ba7d4e6b4cac0880f1855713a96df9c5c793d40dcd9c6cd594a2ddef340f559222e3f9707f5d981e2a7b4504feb0a4674a04cfd26324e09938f477280fe9c739ab5d6b3fa8f114670e0dd97d44978f26e776f8156ee4167dfa0efc4c816c8acd6111da3a96dcc510b4ba6d87cfeda4196978316ab39b66fec175737da3966b1b9ec0be942a86dad238be38bb8ce21fb5fde96c2841cb14054be4fea6c255de860c1675dcad4acd5a8a436bd02a54b09933ae87151bba255c3c97e7dd05a5ed221472b909e94d64a78142bee1a53e99d39fb24d35534eaa6597a9e5a15a713427ddc9c94eb20a6026df3510aed0dd56ba3a24d33b167da3f74ece438454a438ad47b572275ea0325d051c64b0e5320d5348c87ec2c77fd2d459318a9567f18ed29854871d625bc7c63f4a37b46b14ea94266755a14ca5439d53e1e621e0c85efe69fa65763f7e381a2c98572a54ee73d65f627302177d3e841edeb0b790255e3ab506ef6ab4aee84af9ec6945bf739544ef07a7d6c47d887eea44d34af4bbf2d15f21d574d34f7254eebec33a1ca2dafe9b5bd58218589a5fa16bac25bebeffc2536f5da93f6a8bbcca6b104bf26c3e628d489729b4adc23c2e5ff9488931d4a2c75a895427586acaa9350fa8b0c9de6cce6734842ef9c55a76fad31753922813c29c4bb66d5b11b4162d91ad1dd2d7c5dbd47a4464f4f13f1bb69583962333132fa6b12efaca611b9dfb850312d463428d769e4ba87f8dfe45884de9b7fd370729314a62274d5aea6c9c463688f12817cd3d66a50f39bd296afb4f070230722d05d4a9bfe57225baa1c8750bd10df9fbdb4982b18cc8e1c8640c96ca8ebf459ee548558d81c8567a5236bf88d109a78aa51deff681536190c0683d9f1c6afb47809ce4821418e41b4aa379570d1f669f23218cc5ae3c78a4b901be410c4fa33df2952b5734865325dc81108d447c4c99b5a870e1d81c801883c7f12351dd5ac3e373cc8f187574bd591b11f36a3fba139f7a711f3a935cddd87e489eea06655f97a8e0fc9cdd6ff34f748a14539f6a07e0d1f9fa7ad64abf4b07e57a3e5feeee9d77a46458d1c79d0bdfeb55411425507e5c0c3cad59c073d1df24ccd1d3acf5aebd36ce242a7ec90e9512f2e6fa5471dd5e1ac9f15cab4a90d2ba6c32b5284b6da7fef1466301837fc478e3930f26974358d75b2cd9703baa58a4eaa83ab11638e38fc31e36ef65091ff6a32180c0771516179f9b1b2c84831410e383477fecf7a9556abc49ee30da9599aec4ae927650873b8c1303b35cd32e5e99cc50c0643831c6d408ca9aa39a6562963de71c60c72b0e1591de6a3b6cbd3e5af011942ac677aacdee0abc1d29c9b44be97d29d4f43f2dd6509d9e936c8140dcd2b52ec6e4da308213f43aae4468d662bfc54cb871c66406caaeb0e6ad64abb56192ed3f2a5debae7c58b0cb88a7cdb9c5ce5ea63f0cf366c5f44999e9618d40c8f364793765aabc3f0ac0929df51876e6182614ffbfc5a3eb83a717fc19afbe619133ebfa9832e080633821c5ec873d89dfebc7a54da5d38ac9eb7b1e5a8f934a70539b8d0a4f48ff8087d5a4fde02ae5c5c7910112a3fd682b12d57a8dc9d0faacd42e25ee860ba1f5bfd8b053def6979838c69aa728c1c5748c7ffa09414da5db8d60a961af597fbff8e72b50acdc2d567214d4a850651a3a7c167f4fb9d82fba3f2c659a1b38f8d14cecfbea975ebf49ccc1185734c7eaef25ed536a1b0764fde5a4fa48aff844489b9e89c5dcd4aca09baa78ffab36d2759da26eca966532f5ba8b13e2634eb92a95da5caf29bcbb10447bc2a75d15b7521a504943afdc1f529098c77ae7c1052c71c48b0d4e3a7d49aa5d235e908a9a994377612babb2523a4d5936ed3f159554b45508d6e42c92ab9a96e2442734d3a741afb4e478943685cb39bb3f08590b638bd2b536449ed05e1a4c36f84a7d6273f02427226533cb59737be0823a5c55f5efc0335c8f1836b1e8f3a6b4eb735fa3e58e87b9b47680dd2de2683c1788fb592e23d16193fd0c0605cd86061c900c9d1035769bb7f0aa5ae3d27070f5a977aa2f7bcd4a38e8df60c0b72ec001f1d277f65c675d6e6d04193dc60da460f6f5abf39728010b6f25be655d7a672e0a0315d49ff933d1d3608c72d50ada6ebd39c45f6a7b1c5dd69ce2efbc5efc93d8d30c64831028e5a34fb6e8e72e9514d4a4e0b36a58edaa3faac86f570cc629d6dd0319f6fd3ab611cb2486f5437723f996b93e288454ae8d579f36c5aabf40938606188f8e96883b9d6a206c72b3ab72f53211a22ef83c3152a593aedc913e9e2621cadb86ff2104a9634cf91e36045eaeaf5e54ecdaadf0c8263158a8c87d2edd314362b834315a8d6bdb9835066f7323770a4c24ef37b69a54569fda10b0e54e8deb9736c35e9761b15028e53b4bf353a57ad50dd260e53bced1aa6ca548490a5161ca5b8462ba9c4bc7dd59d7090c24e6ad4f522c2b48dca171ca3c88312a9e337644b2d5e020e51a8d4cd2dba47dcec624717031ca14075796a134adcbca903040728d672cfd49af4e8de25101c9f68bcd5f76996a23ec7dc9905383c716c4ffbf43498b9bae984fe39ee6a34d74671c3892631d15a44d8ba16eb26f0fab851da78d6e96d4d2077ee8594cacb8452e8913ba695ce5a4b2e40585c82849142021c98b0f3cdb3ca6f9437eb5b45e58d969720e0b8c46aee2c5e4d7aeb99ab25b49117372759aea6495f09cdc5c5d6a75053b32ab303084b4b18180c10969645860b8b087cacac818312ce9ad09fd3cd51cbb30c0673071c93603c6b721b5ba8d71042c8def032745888147048421d4b6e94fedcfe3812967cf1f759a44c77cfe180847df3eb4951fa5f97f888b579f0e8ff72eb6cdc117e943adc9daec974943562d14aa9d51e9511cb9ff4db999b6e9a3b8b5078a8319d745bab31a48875de341b53daf9859a88d368697a27212276a9df4d89ba32180c0a701c42259f76afcfb3c5a833184ce33084add5a83ebb9edbb8be00472150a38ea959441f860a101c8450efcd37ab95f7b7ca06717a7ecf4aeb3711f21404f7a7440979a2739e5020d6314f974835b74edd00618730cfaf469d4674f00ffd9f382de44ba9f7347e30cc95ccfca05d7fbe3e3832851ab5ea8a1a95890f09d56275fe6ccabba5f6606b483dfb6a5ea45ce96151352f3d9789d2f3c943e24637b46dcdca638687c47e768dfb9042be77f04767794a8c793c6d63877c565d564e5a876629cea669344efb49e970ecf867e71de2a7f11cfe4cb12a9a9d7de795035a4d52c711728f8326ce739e55daeba50f875ecd697835a97144ccf88666a1f427b931f2260f724333dabfa476e532c66b031efb5f791831ae261b36acf5e915fe42a8759b5e4337cdefe94aed90a2a40656f43dd45eead1e74a031e6a6aa5d262b25e34f05189ac8d8d4a6dbc398331e3eafa3e547dd6cd90dd28ab5208a5d93a57068467bee9fc32526d900cddcdae86dbd3fa6fecc7609948b159a32685c76240a79cf85ef5b9e2cb309c869973293fcc850806c5e9f8f6d355f2ecfb829dc286ed16269e3aca0b9fd2ae3faab8762fad2ee4a1fa75943975d33499c16030981d51c0c1854ee6bbcc7f7b021c5be8d474baadc6c3bbbab560bad691a5830e224d270bebcc33d5b1359ba41216d2518defa9e6da517580e30ae9a45c579434f9a55ae1a4d3576fc7df882f55811b191e553daa510d3715de6c0dad5a09692f745358ec8b67d9a637fe27297cf72fced5e0399acba2701af9ed72f5cecb4b281cab95f890a9d6458d7a825b838d5ae6a8dcdde00e1f389cd004e956afa39466b3b29183fa637d3e651c9c57c37bcdfd1ee409c1013507bd9e65d4342ba9673098161615304cde909ca892ea6a4c686a99b82139ff37a51a5a5afec6cbca1b2f2b6230690326747faad9cb5bf406c4840da7747b7b0fb563e2af815971f7369d48d9eeaa81b951676bb555e45e2b304983aa741e1d5d749ba7151ad2563a6a39a1449db82d5081179333bce2396a0695aa412a9979fa615286f5b809adcb93dfa7d7840cab8feab0f2c2ee6f7c603286dca587af9c1315194dc4706ae96473cad2a96467128693f06073ac4b9337bc6e0286bfe63486b8f946a9c235f9023edab2ebc5bc4cbcb0ba7ff98edc9b546ebe584200c425c54dbab0923313ddfa7241a9eeb756869fcc6f653018951fafe2c365dd50f10d986ce11971ae6cc6473c3d265a587f9cd32936c4dfa9c9423a7fd217eb4977ec0f160c25a4d2ba843e1df6bf8227a6ffa63f946262054349a9392f4d68cf4a2dfef2b24054d8586f6134a942324b6d9ab45797d64d06c87aa60b132af85a2a37cab851a9dd26536812ea9fa37f1a36cd97026a7e9d53558f4273a3a9a60f4a4ad7d3040a7b8faf1a5cc9bd97f21358b95f36bdcef206959938419d6ddaa55b654dc326dce9ccee4e9dba3975264c48e5b6d368f3b4db3540305942d37fd61873a1da7597c160d8581f184c8f959720264a486ab19b72648edadf4c9290f8fcab7675675d1d334182e3b5dac4d4c77777d4607284dbe4af507abbc5a749633031c2bb72750daabe47dd4a052645382be972b39f075dab9a10c1ff4ca9daa5aed237eac71bacf2460f2062980c41a93173275f6755366e228443d8a0f6e95ad347cbfd55fc2508101f2641d8d37db736cd3279523bccd0b1c68f153274f0d0a1c62b4c80909a83da16a3d33442b7263ff84ecda9560dfac93565e2833fa876a6b841c9b69b1c98f46095d1ca5edd458d233405131e7ca384ccdb71f5357a060d931d9cb152877579712f2d314c7480e74ff72b5f3bdc462639e863d6bdee5fada1933660820345e84a6ed12074c71609a113a3a4168ff2d7f6dad95a4c8e68614da692599c26138f12593036427dd6b9947fd0298985b69ea57f54ddb3416a85125820334bc6cb3654ff57f28a37859437e26ab2f12c6346892b0e725c8df252e9fc320546492b0c95e9af35e84d427e5e94b022d1f5af560dd24bd99ef9f51e18cc8e1dfbb261fcba193e285985af8659f9b6379ffb57a28aec66a5ef55b8887e592a505e774a689dc646ac50d1fc7e4a3779b30e352a839253985f2f6bdefc5062640ae4d8694d2af5968c9d04292c2f3fc8d8404929d0567626959c0da27c52f0b162625ad864f3e96050320a44fb94ae51e7d23d738928acf5689eb4a7289136a1e8fd749aa59acbfda45d020a6d6d45f6eda61f9f3f717ee533b76eb30c750329f1c4a1b5ebbbdde794ba77c2cf1027bea6b15f4be78429d47eca4c1d6b727513e8ac671dbbb2061b5513e76ebaf8709d4ee83113ec871d751991d22ca30413d66bd98acfa7751617193a4a2ea13ae9e3256bd57a9e5dd8f8112403064b892514f23d299df12e36962c21780972468bbf9091e2a3a412cde8a839a4b0bf59c794d0f5dacb4d3b4ad73e09defd95996e5dfbdf24e18d165a7d49b7bd9575a02412bb0b6f391e65c736ad05ba0412cbd5276a479a544a1eb1d94735e7c8b9cf8c5f5c585050e2884baa7b59ab45a6d83e83c1b8a0a411c957ad51f264d44c88117b16dafba673255b27cd285984bddb5f36e70bd3d9dcc123650e258ac80671a37ed4dee0722c4984e75aa597ec344a4bf9f01eaec387f7f0408a9ba004114753638bd2d5b635ed64a4bcfc089251838d9243a4a3fcb476a3789af55743c7193a78a4a471c619184c8b8f0f9418e2b8fa1fbee3cde6778920e40c258550e8a0e64faa449512427caea44e257a5467bf4b50320863be6b1ae5692cb9372582404a69a68590a5dac47646492076f15aa5cc54aef4ca3d1032851240a46f5ede76ab0d7d7220257f60d4a85d5a8699eecefe28f183f149cdae7aa2f477ae867f4045a58d923efc79ffba56c9ac69fa4bf8b050364a8db9cd4a9c5ab287feb3d4a3e67b8c123de41e856cf54187ee98e701191ee4e6d35966a357f1971d3cd6f85146091e16b711529c5eedd0afe40ecbffb4ed427dad1a376387e3f7cca9d0796a163f2346491d54a9067d21df6de5bb123a646a7e6d9b476cbd58b1f02899437b2bf6a3b55cedc832184c094ae4904df2598aac0eb5dbc641173d1b77ff6652b58c8aa7a0040ea969d0bf4a8447b9214da3e40d8a6fdd36f90a35e77a4550e286c6b5ab137dd366231294b4010d5f17ffd2e2b5aad8c09a72fd8d1b457516d7a010a1e6166f9bb7f4480d77761ffdd13d6b953ac58d9234e451df286ceb8586839b2a9bc34d456b3d43da7ba58f9bf296f2348329743c658abb553afe454919144a9bb7f2d6a66358428686cf6adc30b1ca647a256358c58fc915b2d565cc532286e6d529af7fdbe4d9584918ce995abf56dac4df6c5e500286f7beeecb265dc665c76841635f360c0e947ce118a1c57e305fb1d9f58235f2a9a5b64ee2b434b343c71829184c8b0f1f5dd20533eb5c6e4db29ea4120f099470c1be69648d614297da10185ab205c5f5864d1f8f42dde00e33527ca5858719295f84e12b2d3c30185f69794939a3440b0d27754da242f968edb3a050732b11111ec295180bb7d72c4ba4a6897e855f5b6a8aaf1b6b4c1b2b204eaeebd2d93a6d38554aaae081122afc51f56859a7b50e362983c1b83425534867856afdb37fa3449612299c94109d758c14ab4598c1605cde7036a2f0493b1bbfc58b1153aaa0040a0bf5d9325dd50f6a2e7902b25b473b533aeaf5d205254e78ff7597b6939e744c99344a9ae09e6a35f90d9151c204b37452a265e7a34dc225a493b8945266ab69fd55a20457b9d88e15d26621559284756bb127aadda47eed6cb4b88f2b4182a1726e38dd717cf6f5819223703708a1d3dc6ed25577506284e38d9fccd6ceb6b4568456eec4787c9ba60d89d0aebae1648d105ae9ec101657737663ea0efbae44088676d7e25c0bd752afd028094273ee6a2d5eed266da5961220a043aa33a5f4ea1a842328f9c1a36d545e5a5e7773eac6a681c190a0c4077e90793abc774a7ab0b677d079abcf5fc74b78a08e5477f51e8446c90e12dd513e8bbf9a734d96e8e018e952cdd6a4b6bd59490e902d9b6c122b5df9f846090efc3431e63a5295ceb50724b738ed35beb3bf293d225b1c94cc7a9dc524b5b094562ff67596359f8b0624b4703e98bb7257d33a4b31d228414a866416abd136dbe7f4a5f553190ca6450444209185671b325a5b8494ea0e311ef012c48717292f2089852d85ec503ec2a4d231092c56b2b5439a7e9b940a5fb11af1348774917242e90a6e50f1922af4f498d68a26dd6273aaf94671d9b1e2146d3b5bb566e3d9559cad72b26f6f761d55606f830a2d67d59ba86ff45002492a1ed5c9a54d7310de59898aec57e9e8fc36afece429ec1cf52c2eb7b3588f2974572556ab418aebef94e21b8547dd56ddf792c2d4598f0efec2e64cd928ac11e723e5b6f868f3a2f08378295f556f886aa158947d7093370928f0d5d9f44b21337d3b998c8acb60c5c507c9277413fbabbd336ad6a7183ac84801b26764483ca18bcd97d0b3f1fc4e1937fc87ca0f162f5254c243216720e9c4e12acce4ab7b979be4442ffe566efdf36a5133188c926ce2d4a7fd45f5f30a9d26e3639d3198344834d12c9eae71f3471b43cc60306fb4bcb878fff022a5c5c970024926d2567f79f3f2f5669b0c06438209dfcc36766fbe84ee414cc747f753b38e1713f862022968905842ada51c2584bb87cffd172495389cd49732e2f363a50c2f4828711657a37497f65ba399c1604290e2e22ebbd2c30b742a7b2099c4b15eab87af4985d6ea314824c1aa504acb3a4f52fe8b8437a8ae9997522bdb7fa4410289a3a8aa69e56f6886d20c9247ece24d48bda6456891673098e519972040bc207184f7f76a54abd75a4db3190c46c5a511b850dda5afe9f6cac40847775f733dddc348653098f71695971d2f2dde461b0c4816a1ce9d7d565d333b767c91e2e242c6ca1a3f82bc8a8b8f249028c25325e67f6d948f5725029d77b3de2c3f5ebbcb902042354b195f2642b4d292b77480e41049d1be6ebe66666a3784736aa24beed706bdca047151f9415288061dc33caa8bfdd34f1824844047b1da54bf985583d218248370956ea751a8917b7db2c0173abca8401824825049152e23dacedfb3109004a2cdfe38d131c3fb56409822bf3fbdfa59f9de1f144a3bfbdf745ca9453f58a7dcd524e467b1aad487eb55f88e3453f2f6587f715161a347105ee3c70a1fd471e7e3ee397aef5f021d65f81a2d7e460c48f680e89ffdd6bfcaed5b1915207af0cb6dfe34a6649489f3604debfd1e42b41a566bf1171090e001358cba501b940a1d131a2920b903a2da47a4ec339bd793c1605c5c3640628763990c25c5b4ce72742e6020a9832e7675e79ca5fa2457123a34e78ded2c5c9c48ad5e3f5c8d453287f7d49f99d4d661f794039ebd65a9fa5053cf3218cc0e1f7d82f5c3d5b040192471b0ee548855d7af49752470f06f7ad1716dccd51083e40dead1a7c6173df67ab5190c66c70e1d2f2d67e848510104891b9a0615b54a7e4919d99f41d2867348d95e9dfb46a5b476180f48d8a0fb0d325a7ed6752c7da1c38b941f2b188ccbf62059c339aad19b5b6f3e1b3f6a404cd5b5f4bffb2959a6478f202d68fcba1925d051868e357eacbc11c67b1abe584280c1f86209b904491a3c93bfa3c6df7458c05b4705525a1c0810969630a4408206636b5aa1b3a72bcf6d49ce90d6cd5336085973de2883e93f9098e1962ee6e6385a834a9b32ac4fa61815a24d83840cd88d35a90f3339262683640cdb28999db3b42a91afcc8ed582c6182462b894ec3d25b608dcc51083240c7d8ecd1621c51d1ed0c123e5a54790940f9080c104245f580af53a77c718f1f2ca60302b649078e11217352adda2b5e521e942d328b4a71fa54c976e4d40c285752a21b2fa79553ddb02428914cfc16ceb5626d102a6779af3bab64c183806b303061ee8b12b2f407c740948b280679ba58b0fdac3f9a7060916f6d22dd544b7fca637a50324574054a969569bce638a500683d991e2a34fe02efb80140c46850a245648ebc6079dcee63765629054411b4daf29a5d556d91c1590d3514be93935e7deb8cb7ea1059229ac293bdc183e2f5b4f542091c2e96b3645a71bbf733b83240ac6cbecce9bb2a5570f83040a4de36a2dae6d5c9d217e41f2844e7b27392dc44d6a7c1227649e73ad567fc3a64e40d284b4ff5f74fe2ce5e85a36080c5c30981e3d56b8c54580c160302a405c3640c204fef4a949735dc2c5244bf06345859fcbded62025a86564883d8d1336d8493899c73673add5d2a44f2041c249959c5d2984b78903244770eca5ac97e2a36e1a6530180b84a1a3022999902c9018a13bcd51e332a55e7917c154a2fec774961e6a9408debcaa932b939ddb9b219cd3fcca2fd5a1fc3e2442500b42a3071d12202454a47af5d227f9013af7d9a4a409cff21d1ff8276d9a5f9d4c64f8243de0d418aa57899a775e293302121e9c1e44b28335bc3ef88797eac64e66fd58790c66871a243a680ed3bbb1b5ead2f29a80240777bad184d23a8d4ac7ec3d0d121c1862e3e67b0ff9e14f3e720ba51435e7b8b62aa55e5730620b7556dbeaf32a9ded7ba609a263c71b5e46c665c7d0a11262718387b3b13dbe08c3482d3cf1ba49c79ba56a3d65545cd6c58b138cd042536db1af23343353190c86c7c82c54d369e5d2b4a6d463cac8a279e75b5dae3c2ff9bc45c50b5e1e6e6c1a1d188945d3e4f6e947a66fb4bcfcf0c0cb8fed2d01074660f1a71a46999f0d37d72466e415e911d761b474a14c48f97035465cd164da74da6a29b4eb6c1a23ad58ed9d3e164084813b183074d0032af080377abc64d658f98181d3c5a52e4c0223216f300602008017972069e408f13536c81a3fb68789884b8b7790c5d202e4840400b895971e1997555139e1e20e407c34e7e0c20e2fee52076f83c5870ff751c2051dde00d23edc070917733815132ee4702b2f6dacac38dccacb62f1114445e5840b386cf62be55da70d723c990659100cc687b7a8b4b1b25496cb8f959716efb102c4074b9bc1c51b6ee5a525e3d24345e5840b371cf4d89632f1cfe0a20d6a4a352a646b6f54ca8cb3b13c301817365c67234c9d879e0c530683d96106176bd03bea7dcfadcc70a1863bd6a8d9c995bcb947694087a749ab18a57bfd8486b6e6a0b2a1f5db49cd19ee1166f3d8fc49c46699a1cf5abe9a479ef65dc04519b81b6ff24e83d6e75765301815704106bf5f88d6dd2b97ddc960302a8b8b31f82eda7496725beae90c06d3061b3b4a50c64b903344c4c08518d61d55ae6f44c7273b0c49d5f13b29970283216f32cf4685d62a71f1053dbde3f5dd182b2b22830b2f286a3fab9a759ac8bb5dc874f82b6f9942ab782ca0035d900ae8b0400526d05c7041f1d46a93d226f4bd10175bf865292d22b2ab7a632df4c1d4de94ac795e791fe0220b9baa54c3be1aef463d2a830b2c28a4c8bae0e7b3d0162264a81151c0c5154c75eb61f7e429f56a2b243b56ca32256a344f57811bb4949072a5e87c3654387cc89ddc38e3f9945350b3a536f35257db4ac1d5f5f2d3234a9e07a3b0b90c2d61b34e9e46078557a570919ff7248510174fc87442c2a697ab856855537b131c95cab5eb64f35ec504657754d3245ddc34c990b5808b252042ca7f1b39f3aebdddc385123a79b3b655e935c959b948426373d6a864942cb931124e6308b1111d3a88d61ec15a35cb9b4e624bb9d408aa9dd87714e2ff2e42a674bf46f4d7d3a42242e3e8ff2065bc95f8dc10f20f219e663715a93521a45defd89abc9ad60601f55a5df68cec89f2002135b7a85a7957f235e6e2079ace7af5b6af57dd1be0c207bb1637b7b8500c2e7a6078cbd46ad68dbf7197edc1012e78b0d241cb72b3b3fb9b31b8d8c151aad6992b3d6b30a10eda7435c9bc69141739686cfebbd5d43e1a2f2e7080d61c45a7d55919fd16894fc3f8eafadcfb9c8c2dae95bae677b4deb839945a1c6cdc6fb5695cbd420b0d145af0ae36279d4f8b29fb31981e6aa0cc02ed2f5629257a4acd6964c1dea86944ea6f8d9ba2c4e258e75a7beba4ba6c96971f64c0e21b67759457da57ac554df7b9ba43e99ab4f2cfa304648821860f9775e30dc66054dc4071c5ada49ed9353553197e81d20ab494aab2523656dc72f64ff4b9b650e328ab58fadaad90794a5fa755713c71f63f9b2a6e1a03e292e2054a2af6d5761fe6596da612158d2dbb9973a3de7c17ca29924a6ac7cfbab89a5e6b8a6e92a3ab999f30504ad1f86a14a3aeb4faceb20c06d323888f44214523e3a4ec1ad783f23283c1f420c11a2b5f6030189451f41f6eb5993b0c45149da91077af7ed254a84307ba20293160f982850d81128acb06591728a040083d9f1ff449e9c283f209578da7d1536773dd7a82fb2cf35463a59c0f768202289c505901e2c5cb0ff7f1c68a0065130c40d104cadb849437c8979b3e9960000a2638292bb33dcf8dc2bc447f6a96370aa526a27a4b1000a5126ba9e766237bcd6444091f67140065122feea2b202c40b03a048c20128916896663779549bb38184ae251f5ec91d35bcfe08e476743937a2d50b018a235cde70362080d28815205ebc01011446249445440045110340490422148072089515205e38ef170540310405500ad1a01062ada8bcb80b025006e1e22b2b401a8022884000e20f2c9f00143fb8f441070a1f7cb1340350f62001143d4c00250f1440c183cb0350eee0a2d200143bb8b4b0b8b08c218203a0d4e18d4f9fd5ae8ce674682cff909b2ade6b50e6e0897630795d5650e4a0b202c40b134000250ee7715dd1aae6f7cf26ffb1c23e581a835103050ecbd75863795c00e50d2e6e30d547f7db5636f87e50dac00605a0ac416501286a48c7dea951aaa675cb333cda81a811b20394340800050d054039432375ad509a63a31503cfa098215da5f97e9a653018943228da4e2819e2bab40633180c19d66afcf91542e5560da28c61002862508c989e7cc9768dba0c0633064a180280020644d518ca1710aa460c142f18aa06a50bcde9d53b8dadadf3db285c40d8885dd9e2267dd9163a5de9412ba5cefb7416cb8ba368c1db125ba283ddc2a2e23f567aa09185cc845cbdfad78ccb8ea12858409c529f591e423b857285dcd409efce264a5ef763c5032856e0739a66b11f47e408178d942ae8b1ee324a79e8d622153376a05001fdab428bb37939d799423a3247b47c1429342b21af36945a9dbda244c13d5b93294e8d3a67a9172850e8b52cbd753aa8aec9c6174b085680f2044b6ba5ec7bdb6c56f32edb4305084bcb5a018a131ab4d8a4d44d83d2d11d667881d2845c7b76f51afe8ccafab12aed2508c18f161426f829b48878a9b4ded982c1ec5023042e405902a3b39469bd6b370a7fc718298b2504284a306dac7965c453a83e09dfa46fccf9b8e9d99f97202c6fac19344041c2493ce5f426a93f07a5972067f04039427a6cccd3ddf229463102da23778476cdf5e74129424ad4a010a1494ab9396683d05bf310ce52fd3c19eebfefa208a1d1d962836ecd1b5e8a1284556afbd572e35c374401027addf6c58e909ee509e507dadbdc9dbe7468d3ed03283ec86f9e9bcf5fab94faf2004a0f926f13f5368cf6ce593c50f68c67d6245495bc283b70ee66f1e51d758c693a322e3b0608507460b60ad3db3ac8dd51b5a0e4e0f0a3a4ec6c8dded9858283d57c6e6d7757312d9edc024fa9e1c97c4ccb3fb1c59966b34c9bc611d7f1a41628ad51b3cef2536bb2135a2864968e273ded9c6eb5d1c64a18184c838c04b3e894124d6f93b927ef892c3e1bcf26ddeb42dd64663018365858322a3dd6492cd0b9b26e557e50c275190c660727b0c8570925fbbfe59b9a7070f28af3c5bfd464decdfa8106183a5c7af4f042870e1d6aa478800727aec83bb773927d73149fd58a4395c929214394b49315678b1cd9dba9449abf8a45d834bb7c27aa4035ccdd949b8e1a43190c468565791ba94048b5d7c985dcaabcc96030ebc79a71820a6447c8f29c5e6f7f0adce693f6c7c7146bf9a8a3d0befb37cb27a550b5b34ecd61fdb74327a458cdc9a3cd726c90ed9de56414964a99284e2a150aa594028529d5b60d36ac0815f2c92794addb9fd1b9497e1a83714911c1892770a1f6a59689ac9b469d589994ad837ad9bd37ca8b9420279c409ad00f71d3bba2730683e1c1467bc6c7c9267479a76ace3f91425f07e22d18cc9d6862d3d3f7b13e379d2799388cfedff0fa296b7c333f1c08279838096183babf8d9ed5251651ae467a6eb12b26c18925ee16724be9dd4c716f0e4e2ae17f4a71efacd53e9b134a70d3bd144243e910ca733289944da76659c308d5afd4b22288c389243c9dd44d73f3e9e36e783889c422b50a3d4acdad9c4002395dd31cb6524b3578278f78c4a9ff2a9dc62efd5b70e288b64bfdad6ddf8dea37e2ace6ed9bb3bd788b9611968c0aad6baed94cf10b278b5867764811a5d746e99f28e2f76c2b1e22fbd59512a123384144d334a90b159c1c0253f247a4ce6753f396831343a86c90a90611b9596778839342b4abd3c9b1f1a649ffea8410e91c5ce4caa757af419c46a5fef1a4f2e4372783c1a871220853abc163a46cb69a3a83c19c04e2e8317fd53e6c8dba80404dd3b837c939cfabdc3f28e27df66394505f377ed8a49d285f934fcfa73e1cd4e6f2349e5d0bfbf8d02cc52717a37d3a8af19ceca157abb60611a16c45ad87db4f6ceab896fbd2d583e5240fa9543a7840a5ee903ee92ba3f7544dae5b39b14352677c3e76a94fead0a4d5f83a7fb4e95ee5133aa8fc74c686cbad593f5430981d63a49ccc2159f954637ce8d37d9ec821b1ca477f4d1b1b2771505608152fe244c49c2770d8f3b914358afa864d5f5737aca3ee205f8bf11459b6e1d4518f311e84c18071c286b48716c2ff94dd3499276b706e5652c71a7bf933d5d0ee8bbee9bff09c8527693898ffad5473bc9eb5d170d0add3597d926a56da33dcfa85d42fee93b0596706e5955467ea2c83be9a526b7c9a30139e90e1944a76320655374794d45989fbf7d889181a4daaa850ff1e6d373a42aa701206b7d52c74ec53979a27182ca156da204fdee4cc6b38f9c25ab90eae1f7776f5dd86132fe442085165a7cae1a40ba9697639baf5657f569d7041ddabc44fd99cc5d9e8c9165e976aaafd75c2954eb4a0eaaf9dcd57a675103ac9024aa913c245cb1a53a9b7708205e6c5cd428dde49a9445758ab79d6749232568db315d03a875d1da3f979ca2a687ff36e4b717feaa6174ea8f0e72c75a49469ebb19f4ce1cf25440daa995a7b748c132998fa737c6ebb1472954ea270f7790daefe6efacc4fa0606fd88c4c2dfa4285e9e4098acd4a971ed952c83e76789192b27ef84b0c3c80c1b871e204b40d2add5e6e9958d7491310d939e772d77261426626314e96e08d89fccc2e25a21325a057daaa9ccf6da79324f43b3e3aeaa8b43eb9c68a0b084e90d0b8356bd5ae748a7bc6c911d03adc5c5237336f58706284568daf6c3239cf39233829c2ada7955a11e60911cecfa7e652a7f5ea28753204c58cd6283a79f09ab32742e0fb3594acb1c5e4b44178e598aeba51f25fde00217123ca5c6cccc84afd40a95a1fd5492d53339ef8c073939e29a2a1bec3cc8e149cf460a1f2c63b8ad51cf98e1d2e273cd86d8c1b9935dd9bd9b8b169e4c90ecec2de659cfcd176e5890e547b2d55ec344f6ba5931cace487d7f4b46642c6131c1cde06e129c5dab650dfa2f14c781a1fd11cd56cc17e998a731bed85de40802c104c6a710e13b9978f623d6bd1e2dc7293d0af94fa8969167f1ade440dfa41e74fcd78e838c6a3022969220b654d7b9619eae6182d16d78f4e4274b84181092c1a657b9ac4748e9f746f029357a83a1f76b49c539b3a223071c5b9b48da9b4ddb402b3f9ef504a4d4c9e26ac402b1752a7e13efdf7375905aa47d7f05a4d5ecf0486892a14354b6537f67db2930a46db4b9dd54a89addf0415dc1cb4a652f37f69a926a7d84c8b0835d66c838e1d536c9358dd5aeba0ef6fbc14dea8695ea5b6d286cf9122b7535ad5c817a1e32f2ba80c1d5686f7e06df117329a60320af596fe8e4ea7892896423ce88710f3695c4d42d17fa9fd64daa50a990c4c4091e87a4edf6f73dc2d3ff18b74df558307addb79a2e14368edddf4abdb7e61d209b58e2dd5c9d7a855869cc0443b2995fd50b6a9c92654de6f93e99bb395de269ac0954aeff0f095a156934c2c6fb0d97e3b0d277a038319c304134b19595ae8ac229aaa4b6c6f1e6bd64feea5b7258e52e8d35a7ef97e7c95486ba1c36625e4b6c7cd8412afeb86bcd93c0d52ee2693b84e47e9691a76ecd39949692f01069312868924f25d39ae5fcabe951d9348ace6ac4a89dd4c20c188f25a79ef35f95d652d4b0f0c66c7eae12b62bcac7c71d8c58c5ee9a1c6cbca176b983ca251f972ec474d8ee9ed6db88923921eec8259cfd61fe43f7b1acf983402f5a009234e0f9a2cc2f46017268ad0e660175f9824a2690e9a20e2d7419fb7790e1feaa54c0e918fde34ba90b1219cbf9b537b6f7a0f9a49210c2573a4985f3d233d619810625d7ffb0f191ac4df1f94d65284a8c858100a592736bc3c0b5420e5980462f91937a17f73f81c35010472e34bbd7b835071b607fea00a1d45576c894de332f183ada3702f6dbba9c46cd28793d4ea497c765bffa8091fd6f2206775f4695935267bb8b469b5751136eb9f321d30d1432ab44bd1de2b3a968d491e90eaa3cdad56e574df0c06c3a2628287d53468d9faaabc43ba5deb7ef4ea55a76407745e6d3c1d47bfcd591dccd815ae4f9a54736ce9c077fc54bbf164c8bc4ce6803a90eca824b18301511c1087028140180000839b6f25250083110830484c1c0dc7a342a96ca3751480014a422e60462e26241e128b8522d1381c0c87c2815028140c85c24092823810632ad2530385fff111b60f5a8ad18e3034f9566e624256110ef93ff646edbb056ad4213a744df6d43094a76f261af467540bb4a48bbd26a2c407570e95be7bbe5596266b6fa50d029dfbf66c67652fa7000186077c9275a12fdeea3267b2d2a291052f5a0e3fd9c03c640443c3081c53142c4ac1aacae8a941cf8be24076d1c315c9623c1fda2c2b2ce0d5819c6952366d6c3b6290d9d76bf9f1b05aa987151319195b8a681b1a4c179e851436a88ffd868f271514b2c98384a102b789d864de85d9d60cb58788f7d85b5fe577e2fb5d87fb6ac978c0693c7c02d9898f215e0c2ab016b827eedd4ab18c65c3c466b11d70345c2076d6bda028647d32fb165573a33f68c3570ec87d33a9fcaba08e7491cbdfa50db2fda901ff3109835d0e2021ff3b6d276aad2e8faf1aa27a13a6b8b4da9f4c393450842bf366a589698e30c88b7f79c0c4fff31ffe39ab60eaee63c6c1ab4131aeca8cce9d491202fe21f6fea029d7c10fdfbae4488f3aef8f14b79ff357ed22fd5d8c6f76c84ba2f1e82ddad66f5f17c92f36ed7a0f1bac8ae225e5c024fc3904218b7c3f97637656ea2add823ed3e07da3db0cc5d1ef0333661e93c8c39438bbf27d25139c1da8297e77e70a87dd872674b78b84c4f2d37f849dcb70fc883a24eeb03a404e99408648392832bb362c2e17882a557f7a664cda588016adf58cc64cea3d220b470e2edbb6998e1fcfba2b1b652e39847adcbcf855690667aecb76031adc595cb38bc62e8867c0409c9cbf25e849446410ac79ed6ba844a1bcea2889a42ab4cad2341a284166236920ba52cd54533535342d6faf6f4e3739ea06e0a614c37d187eafd62396a7bffbe1acdf16c614da742ab745d0bb30465f765304fd476336dca0513114e01a101584e4003ac924718c628348a4e7f75f08baec124b12022fd5702015ee58ff7048733ee90c673ab033855e6e52c0c6b2860438e7e1ac0e9395e574bf0c8b2886630150e359f0a56ee58e06f879e19b38a97d3236ae6a087aa0eb14ef1f230a1ebdf797fd924954355b8ecf4811c1b4dcc2f7acf3b646211d71aac01055df42851e3bb760fcd6fdfe027ad71648a16ffa82c0e05423b4908d3ba18f07a80d182e5ffbf1c0428320515a0569176269b654f4f3e2e5ff85b6b8f12d029bc2bf40521b3f7fbf50b002806e10f5907e88814a2f41620486b0bec03ed109fc8fa0989b4d7a69677c61fc4160ccca5c64ef05e7a39691e3e9a6c3fcd145d51b5ce06146a063dc627fd6917bbafbe8993396543c5dc2d5e74d7ff9aefaf52b11aceafbbc4b4a739a8d2e3283b1c618669b8975686ee30c7fac7fefa716cc4f80830da585e29155e1af5be49b14bf2425c9594616220b66154ac88d107fd291b5d69349ba9fc9c29d781f691caf700db03b893ee021c7ad79786305c1e94a2e578d191ba1352676b89e0bd88be3f2c1c4b5848d711dbbd6b5618f9ce938622bc1288f4707be6f86812bc784b0ef01c9437a0934907018191b8a04dcb6fbeb0ed8e2015d6d2dc917d9a60236cfa0112ff75cbb9d45965a0b4081410fbce83a7d21747081284187c0be8560efdd5970a6ac1ea5d822266d55f577908572ad04e7a85d1d7df97c7ced1a66fe830e396ff4a89e2c596650a614b44ab8af151584c3a565b6b318499c09d4440cec66b4b3d086cd93606792beb7d708131ff76ed1a9ff115ef1c4960fee42c13862070a40231f6aa2bdb43ef9e21592a26e395365c1231fcffbfc88dcff29c706d6ff56ffee9204defd45aa7ad40cdae4f0a9b1fcad112825608c1f99882e347e147b63e9a2fc15809ea7c126f8b11d3300a304a8d48706ae632b63154d40a75d6d13f39d6ca11f59887bbd80a5386c8b447d46c42709a13d70726b3d76b0da0681c413fa51f89f9b81d27e8bd327ecfbfa24d616552dcf147f64346c0509e683f4050db7d4c5e43a21081433837a8448f2ab5a182c070c59238a976e694caae5e71243bf8801c7d1af833f0c8975e3d77f079880aecba9cee1f978c96911c03fb7600e23e5b77597abdfaa06a9841c058686882b0a36a229800c9f3b734c98b6cb126288ef3dcbd0bcee5e3a9830a94dc44e81655b069ea1d189182f72e57b3cbaa97236c9c1b1a3be61e163f636d2a15693434ac6ee7950a01ccf2d4bc8ada9e87973cd36182790fd7060047b6ea3ac19d7ec41edc7f5a4538288bf285f1c504878bc3a3469a68adba418ba03b70b1c0c3e748948eeeb9fad5d209b125649c8813a694d98d2d4554ccb753e5e8509c10162ef3f78c29d824fc93bea09ac7745469cba89ecb1da156b37c00480a2b33af3531c13dec237ca710d17801e3d20616b2902268a704a0cfb5b35f39f28c63368e3fee3ff2c42c7bb3ff24f2afeae55f86e61f1c931707ec63396a78ae2d542de9d7e001a80f444744f64811a31023ec03c4f81a5f8793c344b8c168f178a45af58649a6876bcaf3259b376f880fd112f718606d882c3cb091a9adfd312301d6a782e1e4a8ea8a0d57ba3636f728b5f067cb32656fe3d01df466ff5b5397bdfc39e6804712147d48c3c22490f22d39a1f7d90dcae0b53ba1ec72c836d006d028a3c60ab825c487a7546985031708b6bdc670231fc5170716296ae023ec6708d211f6b9b18ed67d6b55b0a2a5c1ae4e5111e6eabf6ec4d704ae2c6929bb7cb0826e63f107b6865f488c53e85c5885daf648139dbd3e612aaeb1805d8113bfb8edf174ee790d8428f7102729aa2c3e781903548624d1853d615192609443feac23ac1dd001ca65fd975d66649a2893e46507f1fa1252914fa7a4f5d16d2a31fea9adbbc98d5a81ba33cb198c80c5d78f4f259d27b38e0d8d046511cd79db617b17e28c1dd1e09ef2ffe1f15140ba04e84400654134518bceaa840aa1568f5b3abe328b949afa1e27fce584252955efc57624f3003b88cb05634d8b40fc96f8ccbd54112bbf9aa253311ca8647dc8b4efa0cf2e7b29fefb63f3b7fdfae2e5748270c54fe9636cda01577d0ffb1bf89b344b4082911220c3c4e4ca3f04ff5df5476111e4d87964d867890992c4770a0122db0350a0a889b4a918c5454d781e33789db956a74db750ded8c5642e8e2b3a0a925a1694a5222b49884bf91dd95669eec7fce9a4c8dd72f58bd36a144360158fabba2cfd95fc1ca90d0aa7abccd4b6d2b3a1bfb14d2e8f146926edaf6c8ad54d14a4ee40843421d567bc0bdbddd8d1a381708437ecaae9b10f229a82c0e85a14d5ef8de05cf9e0610cc66bd9bc5a53db1f9694bf95c483187061f489378830b9a4ac55043d19b283ac46f893f7481559b4be00b0937f18f4457a7f8647e7480d868d1c52373f6cf0122ebc13b747f3042f6479dee100c40c9a6d9e50557a87e7ece9922aa1aa60eaf949cb1550ca4ef1b0bfc9f015aa9bb9731683dac7cc6fd2c25037d0370ec4412177594787126e2c142dce94ab7f6c47c655a7bb18884262b399f26d9e47e05025a095b67d7afdba8cff252cfd123a8a2c845a94ca80edc8afe3ffc2d54ad4dd9b6b78c771233e3f61ee3a51acb6fe8fb0837c12e460c37105da5eaa5c2882ece8accb7d1e0c40c5be7db3fc4a620a8983ea88a27048f26aa56aa2d224b7700a53f47a69acedc3e62538d8b0838daa75a6da96445d88242da0d3ebaf41b1cab1564c31f48ede6450ec8651f6c69cd02a0996c55fc566866bc0819320d6346d52fdc1116ff71da56f53e466df0882bddfe0d5b4cf5b4f8824b5e9b09e30bcf9891c9911554b8561f2c23f07526753a6b2248cd602f2b5c4a6bfb1f24df24be9df87b238ed7c142d4c0201841234eb089f0fbfb3a834a42fdaf4bb8cc84289a6ba7b1797b076ed3ac4b481b35cd705a84f2405022882afa566fdcc8ff3df9606afcabd0d0109773da915e963de186679f37bf60cf92d9866c288d47bbcf0532aae1e854763f7ffaff16039fd49b893a4ef3727a575e57c9bd2b462c9a20cfa2c095adcc858dcaff0bfedf29306f379fba828ccafd0339250b8788646ac5378ee558002bdc0318fef3625fe525e27b61725228268fcb92ae4b84503c1d1f5988fc39f4740b96eeaa5b53f9ce1e1df6132d78f32b8488605eb671cd0b6490b775ba8ac9d80e10215edb940da90a505b8ebe34e075b1dd7cf146e63b03df56b09fc57c64c85b46aef207a2d3868076d5188b9a90d320ca9c071296b5c041f9481b88e0e326d598f4b34c32360a5614373fcbdab3fb6d7323b6f7c00a3120a1a0a43286d1df4bd704640be03940a195413d81e8f7dc934ee1ce7cc80649c839b0c8593516b95cbc5b76c9f60f006aab718052b0e6ded23917847622885c8bd3a3b651a06befd5903612736f7f4bc248ab3f82610fc16c4c1994c1f22e9e11f59cf7253898e4f47792c83a352381f399f71e9200a6adfe8e858647a374e3f1e59d13fbb6a726090c4c81495d4a9883e8f95099b417c586606846108aec2026235fcaad3ca7412253b5525cd1f50df577540733902960e132da4d49a5aa5428947dd7f59a46e86b53aafe737be84cbd899341b03740480b5f6659201cc2643ea3643a3ff9784e06b78c895027b85519335a1e2e0c0a871093156c3d192c13e9e005174af6baf4045dd853735f218d34bcff153d29abb4cc27f6a12cdf81a71825c1964c0749ec7a4f229a09e57c805db97ba42cb4e0df84d3eb2ad606765d9ea64d747ecab27d06d0ecd45d9e29102f823d62cba4c6be5ad57556173a18f99f9798f7dafb35c7e2120484a0d96e4cf9afdf86b93e86ed5c6c6a9868ef493abde49f088ef70683bc69f015a3dabe5ccdfc3d8d5ffc73f445df34ed18040090545fad6addb456b08cb91878b61103e4b402ac2f1923bc6726ee8fef58bb5536a7815785c2930dc57f4ff40d2d0dd1e5ff7efae683d09f49d1ffbd6d61efc89b30939caff07e22e537ffc4108d3e07cba45984367e11e760d808933b384a2a392774d161a8ba4be442da6e4d41ca78fa7aacd1aa313a2789dfdd38abd75eec4daa5acd38cc4eae9bd19ec27fe164f9cbc9217c4192ccba6042284386a4fc27ae3ac12c75201b95e6eeb60bd08ad556f44f595eab558d0e0edf6ce6456c3154d18ad38171092e5a35947741554cba70986c2f0b2c283ece96fa3ab25bf4f331156193b4f6a13d4998994d8cbe84feeac44a8e232d844b1e418c206be9ad5d88275d1cb20d1cc13dce3d8dd9914e629e4b4e316a33822b7076eeb31135251aaaf317886b31829308083ebd2be7bda7c86a8b06183c9349415ef877019a5c725585af8d425955bf03ae7b813d597e6476aaf9e7299f8c8178f9e0a9be50b8c061beee578c0646fee063fe6c947553739728880d4182cfed66c48a6034b91c7115559d61029234079f5912499e670a72049ae6a3dedebf76b8191983b5f00c85f2daa098e17dbbb41b936b76272415c54fa66b90d74675d5bae7cde4eaa4b34a7bcb9e07195935eb408ff1eaf96e64bb57d826510a4994936ab09a460455e47498a2816283f83b061ea9a18ec1b4a8defd49dd5ef04d31f8737f23161ecea979466012df293829fd257d67c54a6992955a484220147932ba0b35300e5a7b0da8a729bfd09a8062db24ebc1830a0c1e20ba924bda2438ad3a033fd00472686127007ca547ca961cd6a06c64a5b76121335422c5a99ab262d303002c392dec83f1285ee1c53161d9045db6a0430d62ad9362890ec3c79639d38fb7bba3c148e1ca63a5b38c6d4c01c394c5f2a53d49870494af42ff7449e3ebfe7d7de9612d04bb26b811a4fc1db136e75302df3700dd8d30e7cbd69fab7b7f143e20fc8f099b69c40b98c4dae5234d7a43b583964a0d03339b2069058265fea5b8d42f771bd466f26ce3138a14c36f5103715a869accd924a87b78f634e67996cef08f8887e9df2690c28d01c558568e75bae0b563dbf627a12f73fb15c04cb977008f0233a21344bb2dffdaf2b5fb6fedcafe27eaad7bd811e7309570debe96210f55e9d794e8b3a6355552a259e2c56b87c981ebdb201492408e1d42442f3e369b60fd06c9936b5449d82c8857e7e52bd1f190e42a07733b11d03a7aaf46af194c438a27a5cde7599386074b217a20f05dd483cd83a7e56432d7dd27025341fe1b90a706c49ecd43a04e804e3e2349257ff04ebf457e30d798a0c5082fe574ce07d0a611904d5d99f6f8a0462bd2c807c2fe0fa466ff065a2c0c01499303a03da188b8e34363bc92d7915f3334f1969d1857c7df03d39a2134df6b57951093211ddb9c64506ae825423f6c77a847979f3afbf5c70358e0c101041697f3d7293c4dce08a82d114ed05befa5222c548d2fb340428827321b02d52c24e4df2bc26791c21af84d5feab464f0ecaf26bc060cf5cf5dc929bfec3a08dcda1882581a072e97446c909f4c86faecaf9ca180189854ded5248f314373e0bb6f2bd9236135edaf5f663c269d051b4640f5fc06288220db3f634f2ca8f517a981c61b7f9efaa0ac071ae6e6b782fdbc03be21a3718167c276275177b5f118ea0bf277bfffbedb08b8c9876b2552da7ca42352be6a26ce5d559b4ea23d007271e3a9815b35e603c530a78a0c58c38b7bde329391231b3fbbf20e471306b535fda4b6f15756ef2821c90f6988c12f402c0245232d00f9bb04979527802a5ce11bfa82bd0f8047de52eeaf20e96c8aa015506aaecdc24a4fb92a773f62bbad0ddf2f9ed39a8966d5171f7f17d483a068668e8a41512237b1e959452f451d81b8e0a65fb6798e141ad91204f476114c71fd8f7f2ac0e2367a4dd0da3d28461126a4d33c25097680b49980878e317361c604a09f6a38dd55108b27dfbb985a852bbbd8cd205e36dd0c57edcaa037ff0d99ecafbffe1193fd82f1bfe463f9474d4e10f990097d53e0843cc93edc12a6ac673225dbf03a06fa8640fc4b9ab53928322639359304cb2df9ecbfe114753819ab9bcafe4c85f16cdb0bb08cbd499de7d03bea2e335dffaf67ca5fb637eac994681b2983259550e459de651d9f1d85abc642f5fee91c7b4c5cea32227d1b776c9e3d82a0f5edf2e227519a68d57a93eefc8a2424062ecca191685c2738adf57cf5a4ed64635022f732e883cb582b18703bea23e2315157020c64978499566dead4a3e4d0533ceb752616869a2fc1085993d557d876dc30b2a065590c5899277517f7d4b169c2bea68650543ae20b3db95090117398428598ee97deca04451ec0196b6eef761f25d18c6fb5c30120e52f7844008173370ab4d22e2c9d331a83253de2806c1cc84653bafc573e04bb23eff1e07b11063074d434e5b17b3adadfee701cf05391f9be8afb9e4ddd8f46e83d602cedcbd1eb83358aef8183a003f12c6c61bfbf91fffb9067f2cf5dfce57e76bf27e067d597aa3450088c5c0a8ee8ce9eab7d25ed8de46fc2ddc40742d91f8eda7d667f97d5994307c87d4d7c8f4bed76e488f98968e4da8b4ed3299857ee486ec966ef8baa2de4434a53f489c82cf0d85de43939575456197225ad93765caaa95b93ed889005e1a3f9a4680b1f6ef0f9f6d4808240f65a0c6444e4ee9cb59db1fb03a4b4accd1fb8152f5917b26982d877c7444084422324c47077e358dfc4d8dd2927900ef38affd5d51ce92632e6c7c18f4637cc251c11cfabd79d1f07e364eca52e400a274a041be32a35756efcf29e100d8252ee17a1da084b3d88b1f67309328d8aabba1cf2462b09b7706b756e0945a3720e4a7c1687bca824ac3a661ecb7df6054377af5f9504f8868e418a80a3caa7e760f378c45be1b02751db66181b8a0608e4ff614325b9fd8945f12fed251f067a0237c400d861bc8447b2c3f16e10d621306ba2a663a10f83a6befa8384be6943bef31ad147386162a652510e44075bb2d864d041e0cd1946e45bb10058515d6d48d290a9d5e50270200c939a804ae33348e837afd8782765e669fe8769a326a249f8b541cacbcea473a6832401d72fc36112864ad0b44f6ccf7313d77c40cf467637c9349cfc43ec6c858138c3c5d47b54ae5b14ae07dc2a04d2bb6f523f58fc6854d7c4ab915738f74e1816fb4d70a9679bccaa00e91a3c040183e9cd88f5ba380c228003a1b4f7bcd284fc380229606f0d689cc4e81df4694c04a764451b4f71efb39c098093865c8c9d2dba2530cd824c55a254337f2800d694c13fdc0b35055b3774ff6f9f943e8d688c910fdec815fac0f19a1229fd0e19ed1684eaef0b30f52cdf05daa6e0c3553a031cc858c37cfc27cea36308d0b3b50be55384a94ae780e836a313f1eb324855578f6bedf6d07b0c7ab009c69e528eb46c11c0efa3bb670ee98234c5a6ddc2e4222eea37922d73923977de7be05c72cc0ba2bde90ff6dfa15eb0c4ac5e04aa0920a79cadbc6f5348dd4fcb0e266a8996c679869814e7740c8de3156c2d96c13ff7e8792f205fa570b0fb435f867ffba8c2e506fb31c82ef4f6c5d2a63eed2e3e2cb0d6d23a66d1e1312b1573e9af3bb7578f5792a421178c3e2325ec500b72dd2f54b782a7398fdd0db8ac51b0858fa7bc75608c4603696cbeb97660d04dcbc27a473579ab0e06a6de080e64225cc5c45141fd22e421e8eba6bbe86bba0b779226a9e4978dd66c80c8f61ba63fa7940820157b0ad2c12c5c0cfd065bab6c6816c359100f38645c612e06986b05e24ef3ac6a128dedc17ef37831224a24ac422245daa80db912934a8bae6353766ac2f2474affb681426ed1c365b5d3111ac61b00f31965bdf31e53d0f2b9b862f075ec36e7ab4cd54eb4460bb3d9502176d100d0b7f03adee3cbbc7fb5d9e259b6495a3ad9109c1dce2edfbaad66fa9b60d214303c2ce8f2e530a46bad2f262c41f687801a96fe85ed8a360ba06798fdbd8820f705b3f54fd6bb6786abe86c29c5dc6e788eb0d7dd7eec57b4e38b72494f4e8bdec206a933b5fca50a72a7fd34a750ae140d57a6bd891382875ca85fc1fd2a496d8141340e712336c2d0de0b1be5ab4a9ce5e2ecc75467b1a18851699ed9896cde065045f22cfde0a39c150b0b1d4b1011a4bb397a152a2d446064d049601ef377426ab7a9913ee8085d03e0f9d94529f26ecc485c45648ad41ac3d5dfb0e901b85ff4770cf1564941674df3aae001cc49b3624d92d29c2d1a25f56420889457c7b0e87f5eda37a1524c0e43c2d80df883599398554f77e608d6acdcc74b7fbcbe8d2d3af56f1f010e6167491e412bfca97d654ed85c3f5c28294f0621d07454420e3adb62ec29601b506dbc2f708abe4f751420a40f6541e5c3c7abb8ebb001c88a8e95d110a8456c57899e930f30913d92a2d79b2bea2556efe64d77ae52922cb8b3725bbee6b6a86ca3f8d1c7a4fc406f375c97f27f471459a50a0a2f76f3b6ca2e2e34521b9b52c49816e8a12b1a70b47a603df19e1cd874b4ac50d3a8ae8ae0235a23611562547e3970a8ffee56d34eacbdf7ecc62098abe96948a8ce35915209be8b62ab9e991c18c88d5f533b2cb22b00ba44e7ec8824fc393a7ccba2fdb36753c1f83e4707aae535c151548974fe31b06f08dff60877d77fde896d6dca4817eedf7a6373938c4855086a334e684e8c2f9a0323b32120bf585d32f7d3e000ebf74e746fb52d3013232a8f5416c051989b299c146405408d213b4f498bec6e2590a7928273f4f7fe17ba8b3896521734657e9223bdc4653790743ceca8afd2c90826a8dab4467e971e284502d13323440dfc1830335020fadb8a323ca5c1f89b692f52042124343bedde33530842d401497a13f29ba66ad233789780543312f9d18a0c45469b6bc2d8b16eefa71720f32314b20f949cb5a7cb269a27a4d627ff4d3afc39169db11937aa2fd0fd16fb0facb90d590f1881b22a234c0389061f1248a644994e09380f817787a2a81e991c675a721e39b60c70e14e6d85d44488bed6a0d3fd97367379ac47cc60cd96c88cebd4bd4dae65078a4ec79dcbfd12ad94c954aadc4346661d89deb82dfb5a427a1c71fc3c609e01bb7a0790109886a82f8b4ee35252d71a4121cc5248b4696b3815d2d739ed37f01b831d58d297006b6ef9795fb54fa562e7cb8ca2cfe483b72d1e370a4b909b20615c05a9de808731100e0f2ab5191688a4fae2737765d9813ccb88c11642f43aeb0dc294ed50e5a985ba054fcac60a388e72fa43bc2f15e73d2105b1ea2ab0460dbc086efb2a519bc9ff2172a07b10c004fccbe25ade906b1222b2d48630cfe578771ca6f2c0f00cac12af4a9207d12583551830de35ea41f00ba45e4e63fbc443bc88462c648419251bf6e7fe4a3919d4c36ca952b8734eec97561bd1e3328f5b0a6c2810489af95e35ceacfaf0fa03982d3bf83ff0b775c8a782a71927cd70d5c3fe405004eaa638f95ab878098a6d6d76ef3dd363d4d9fecba59d7c60ec476924393fe3e4b0b4c7fb3500ef851b763ed28740614013d66cc8664ae20a9f7dfbb592aa9a5ea0414b0b5d60b7bb440dbd0bb0f37093e7d9155e5529efeb8b1f866a02d47ad0ed3cfd952dfbef12542fcaa53bffdfadd33b479afb8b020fa77783c7d932990f80d8ecee6f575b57dcb43d3e1f775c7dc3a73b06cf999500656180e13327ef0311788ceceb413fe2d28df4947470653c31ecd32946109cbf44287383ab375f3159ac2f1a9d75f29007d5f4b5127e5c0ff4f75cc41e788b3c96a8c74ea9382f51b39daa978323c6dd7b539261856345455a51825fc99b7d86a8f64e30ae0fd964d866a14087bc2e71782a1c930deb521ff0794ad19b29e099ac5bc603e678a5e492cab56d13ee03729ba5080daf89f01b8878e184748d9483f3d19ff164ef8e5cce207bd097334d3b551eff40a6c197b783335f4c9e0eaa4cf1919a810664aa1c2f035288110f22c06f41bc787ba780b7db15b7e7c4081ecf1a90992d0d1a7b28ce68b115d1058281ff756f2f293235c6033600cad7f78d1b052aeb3ff45387b2932380d6a3a35803fa65ef004fe3af71927e8cddfecb16ef2fd984c2b92b223b9ff3b9bb3b020a677a122b1330c97c1dc7ee887564714c59b89f113710753e6972cf07f6d4b44047db58de979eba848a36bc9e48e9679c087061854de4c35c3745c924143210e613540b5475b534836bab149dde29b3e280e4f8a4272316fe37085039b5176b086b5707a5a4286e19d1f4fe181982b42f06218e09280d62d112533f22483de422e93c9b5b44638f869a48efe5f8cd4c6b6a62c460f343b54a58749b4bf9bbb71d37fecb822c3e48f0beb3ea02cde5521daab8f67f71c91a5246cc756dd8bf0cd1c595f14df735b3175c17643f3793af65c6d5c0b2213d2dd6aca16c2a901276d7307569de08f10a8fef745172dd18ac289148b5faba142ddc3dcb8eec035c31846e7e3b2299ff9e3231c7f94655ff8a2333137b6c1bef74d1ff6fb7418323b55f3d4fc60e0824dfd01550b971dd6ca287aa55e6c162f0640e0914b022a83466c49483ed8ed440096b51b22fb30e157f6285e8c5ee3422fe6ee36f10322004f51d9d30a3dc093b56c9a92eb4b48f4a6ad0448cc1fb6da7965a9a259e493b13437ecf30e9a86a2f9f4a8b956c5c379312af3b3ab07b39e78f2beefdb5dbc89f09d09e926e454dbb0c699a962f2e2efd223ea75b0c9fd90680620808872beea5db59842ec12ab2b3eff9e893ca07ea00da08903a9de15be71198463df761d9858a440e57f8aa483a021cf1447c809451880c5e939630e059e395afdd7168502bb99c6e89d3a9ee72dde1bbbf8ce7e8859df7eb38c085ca82bb0d6631cc92c375f64f59e7d58c114036bdb868d538a9701d1a163d78399a7dd9a954be8adf51139e8a423c2282f1427657b1f96a206220bbe86c72fc45f34b863bde5d75fe201aaf9ba60c687025faa619975be4acd3d8c75ba9f7f0da1ae4ce88850af6427e903115553622fb610c9d3971097837bda3b868aed14346b2cd06bc9affe7c39874bb0df80f265c86cfb3ef2039d961832ca331bdd5cd4fba0d6dcc0aa066ee61c606a9f4775eb25a960ca61cb99a80931fdc88e51965cab026b3d219588c0d8e0b50aa4f77abb53328476c406b6666b5281978c2b55d5fa2ebe481cba18cf05ba92a0e01deb5351790dfff432b3b000f2d799bbc44ab9ce00730f2d5bc7d24e386fedf0c1bed868ad6fa3bf66be837bfa21bbacd29232cb24b77a222971f08666b76c5d3f165b4447f020bd7ef2a54fdb510ff5ac8be1c92925a3912cfafba89634150b3ef7046635d371a8e7bd3b1c68003039f3364446350226d0eeaf3b133e1ea9871770d8a6f76674eebe6b796ee183d4660321a201e3fd606a46e8ea4f7c34fe8bb07848a4fd9d248c2afb2bc5610c53e2ec91a02e2bcc3fb24729bc1efc7a72d7d4b1e7c53b1c8b5a97fb70e967c6394e0f621c5bc4a237a7da80371302e2285b2bf7fb0753c815237a855287d390eaaca5a6489c4aa7168dc4361e3fc44017cc550be66b0f64d68769b82d4f5d234106c7ab6c21f7d10a1173d728b7e25926086191848168f1969297900c2160e591d441f4ae088a1f0b6a56fc60785ce47f5ae6ca31aef3d5503352f5cf9c07907706a3618616e2c3418972ff21fe0106c3b5378baba6a82c7fbad55c486e4fea213428d4ae08857049226a8406fb8cbcd30f22b0b8e31456cfba3c597c360ba43f40430128adeacd8fca8d0111c3374d1ac65c1d801ac5b11522d5ab472162dac7d08681f3ec0e37ae60a65ccfc1e9594126452749f18dcb97306396376af66c5be4d6fda0d1782486e0b72d06f87de57165964937864a41b6ed75259071bc38ecd7d0f004c550ebba738d5da10a5435be5c964d481029904503199a51240662a102832c044221d67841de74fd3428aebcf44dce012f4ad58f62d3a9c7bfd6f49a03524e19089dc3d61fd26a68709dc98187d4da0a709bb3501fd27dceb89b939017d24a6f70abc9d12775ade710c4f70af267267c2f59804395785cd01b889c43a61f499c0ad09eb31313d4fe0e689d16702bd4bd8fd0ae879c2bd4ccc8d09e83f313d9ac0ad09d347023d57f8e689d16b027a520294a7607768f93729051221dcadfa2a78ac041890b6725f3fbfb091957e9a13ae2c487f2c0d9f8947ab01d9de2ffa8b83b4560b1e786db4ce90655e19a5ba4fa90f631f9723b1e26120f4d033e8a8c1ce3c3d27efa702c671832cf773f86f043cc0429c043912ef42ba44dc8f3da1555c1cf245505284d70bfef480c28e2e836df690d1d09525dfa25e3127170d5bdc0625cbe0aab1113367d8b4adb306aad669a6580648dc21eeadae82a9b62f3ea2dbafddf417f41528146df77380b3fdbe54f34970ace198570fa921b91c0d80d40dd5e201fcf2f84bd85514b9ccd3653314b26c306e350e88288dc5dd107309c5346aff9fc7f82cbee7c1f466ec0e1eccaf6f7062b6d3d99b8b78c4bc2b0e1d614dee0c92c73fd45401d50ad3dd9ab09438bcc3cf15086f7258c29445347848c042860a809a81086413513ed903e96f3236eee23c5ac3c722e04cf9695e6482353fd29728131a9fd9c3190a85db60904bee2f80118f12c9e19c3b4b1b78fe60ff446bb9821a57bb5cc53c5d87eac3b41898016ac41c92b805c86a4f833c08cdad607b0f1bdb1ed730b5b928c1da2d53be0c068d57d02c79b2639034c28c88549762ffb1a8067076b5dd40ced291fd469c9f01dc939e95cfc9f993d632ad05690d2041df44ab96ac9bf78a439b5f364a91ce0ba86f9bd08f240b745b406a94b49784a4be21c9c20aca19a1fe4b9303b9fbcea666a8dc792af399fc7e00660271bbf65e02c62470d260ece13444eab0685ef7c5b2abcd2b55d107ee6a5b9bb1d253ef982e8dc81890cfd33e84cc1a7d411b474fc42969260c182d22b61fd26f6ce7870630820ecdc07bf1af41b4384df8a81fc79848debd5ecb5c09e2d47c132ca85a0c66383c12cc4a057b194d9eae5482eb5ec8091bb69435cd25f26c39e54a641e5824fe712a3ecc719f0e428c4871f63f6a52389bcfac09bf7d0c3f50f106fb155809e8864863b47134c3f2793ecf7883e30ec4ee41db719132e1b2584111fb92740867cfc83ade8655f8091e29dffea05a1350bea2e8b7583b5cd1d5b44bb51732fcfa71a488b5b14d044cc28947639bb84b0f24ce816b5bf4b1a8660b6a05c63e248d966ad38c7873e164545cefa9bbb081e5a354ff697e89b01d4a77f283a79bf60cd5866512635bddeb5e5ebe2cc87dfcd044d03c9d18c85ea7cfd19713766b9f0f4f032d45eb4d85601dff63d68617bfbe102ec6235a6d0a488d1d8206cbdb11ac2b95915fd3643b3d9c2aab6e8829a404321411472a56af65a35bfa37c2d710c2684c8cd0b1195390f0c374ce78bbf00843e1c6ac29962b9611a76cf3424f4bb88f823013fa6e25b117fe0c8aea2cdba36e33531ffebc1573204caceca41b0ae5cafdde1c2e9ae0614bd31a814558110d97ec4e72d6119e1484b5bccfd09d17479bf7d81ef4caf6401f5da6b5923305fd4a8ad143c2e62cc53df828bd57667097092d81ff106eba159c6858374a97eecb8897636f0a4dc26bf556cdd21529e1715eb046f5f0e3cd5a79eb56d85562903fe4611d0befbd59f71875f13d704b4b8546aba0c7945c1437c1b8a3eb124e80002777ad2af0ec217d77b47856c614248360f44debfc6a98690c89c6894294f281ed5ae9540fecc5e37df3557bf61c9952386d00dcbfff3145c23529403f1601d54f11c7a2066faab9ca68ea8e7bfaacb7c2522b551b1e77cafcee09f0d6e1acfa4654d627bb88be132a0a12b983c5134590ac16635e31115729bc231821d825b71af1031713df4dcdc74284fcc38aefc97832c43902c368bee21ebae341b084f8430a030425c3534cccad2e4f231a5af6b4a029436394d25809cf43f139a1dc2d503262df92ef593be0085631d8150d1aa078e28a9e2824f45ca881bdfc800d461ac53ce96a6c45ec562dd6b0f7cdbfec3bc9e07f82768c8cdc0ef46aa2312288d70047ac892c450f773669810b44cb8ae1b5cb571b7288e6a545c9adcbc040a5a2b363349d290afbf657281e1920cdd2e43d2d51446163be468d78f6e94a0e10eba57e7e1a8c631c96185a65c27ec5407580d2152ee7c111170d9cdbff05e1dd40c0a055b9685e4af35554e4b9417a9bc979d55803c2ff68cbee66727b64ff7edd794b0b5aa1371eeed15b1ea504fde382e9312d58bc486e319043bf0c1c8725f592e0cfa87dbb9cacdda473a5e95e6248933d2c22c04dfb208ccfa707c8ede805c9ae8ff234b2f5778e61d2c5bffe14fc6310e06a5c312498d38eafb4199576b72800f2b6c1f5770111c331bbed458d0f52ad4316100c16f7a6c9a55bb0c89bb6e3d9433529342a2d90f6b21f6173a451ca096c0d6a02d4ac003f29660e550999d12cbefec0b834b3242385b4d80894e3395868be30470cd8cb7e2e68a30e066925ce9181986fa250c2f53889f9fb4baae360389550db63129b44d022f3822c20503e4db047e5fb1b3936819279ac5a66362cdf08af5cf842203be80c2cc36dfdfa58af4f2d399aa2a179d806edc38a8803f00991ebc8c9e547bf193d42246d526ddb32d1b154c434e12f3cb14edb233f34ec6d4832686d7f90ceda49682b7a95e02d7cd6f61a197572ecfe9796a15ec7c95c097ee307ee839de1d13b7cd0b1b858cb877161f37513efb5f589d1949d754185c1cda8e77aacf43faaf036f603bace1569987f25a7dd74efe0b0b7b6cf229a9d4ad2fe39c0df4af0917298bcec82db5f3e12cf270ef73c9440b7b0c700f0514d5a5e434365263fe305d34001e01a9bb3c7bdd4cf8f8a438804fec93a0a48724a4e2868ac6583b150fffff04b97e3889b786140e210e0473f3075d71154c84d1c2638205533072b1f7986d4d8370667e361924204678b0d25433d614cc43daabf0ef6b0dd57fa94efcd2f443e0a01ee7f38a62be7793b3f00c7ea318f29443b27301e48abd0c3412415174e6297580089ed71a5eb428a7b3c82736b73d569a6d797079b941eafb00104429db9e3191a7977b2045be3913fed64bdffdcda51c045acfc117ff0e69a3d690ecc794e43ace714ea0c5ec13be87591c8576bc98003dfb16012b03184d9b872b62530698d04550ac69135f60d07d6e9ac079f9be5390f3a731679da9f78897de8bd90c8a483ff9abe735cc4b778a4ff52fa17b36ffa84a23b0bef58148d030136d8024d3d31cce4119542cee2d33b09640e54304c4117d0dae3c03daf2941abf55ef494c278ae78aec6fa0542f2c28086e7fdcb07b7e3c52b624e57268a8f6c6eceac3292adf88299ba326b6d7d8800c3530a34079ea13e982a99a1eefde648443bbf31f03aed03b27f2788dca2470043fe18ee000b516b92522cf02b5ca01165049b788217cd860a2b26c64ed13eac725936bd18d024acebb4c2acd4ecbbb1739ec673520a1e7aca26203e20cb1df1a61952439cd0e3b9c400d7832059975424e7af0d104d0c8cb9c45ed1f9765b47acb4679686203d101822e9635aebffba98104f1e9fd08342d9a6983e6b83810d6384d74ef53b162f891a04eca9ac18098115ab298a613f8ec875705ee7b369f6554c40a409bece27373825a343a2d650ba643bdf19f7e2aa514939b41d76ee914085db5275e7061d55e42a7a20b472aec8f1b0bb3445635e12658e643d285499e338c04dc092a40f769c2c4e6526d15c24aa21d8eb23025b42362051a5404784334745670183ab4d3d55cf4e72996f13e4860d5636f2d051c3549b85812966c6873f59b445133e3201067c00c01c5242d5cd381d213692eac46a4aa63237b479ba3d81c009d44a7af33614b85f177ab4719483c10f3267b03ae629b055e97cf41a1b033fa0d9629b95fce92ee4af5c5b0e16ff7f8cd22c71fa85b358c29fb4713bf07f9d9d7ff81cdda529133318ed7befdd83175a15b0e20bdd83fe30286580984678288bf2c83c9605308c2316a17e35f8ab60c74c6a981e28122b6411d8235d463cc7669c6593157533a56313c65a596dd10ef431f78fd162f0c715698c1166e1628c313e4c7c1f16c533f6befcb312deeaf3e89d0d7defd99c18e3b4ca89dc0acc50b039cf24a277dcaaae9f0361941dc167304f76a9c40fbf20a5d66d89dbb93a46c38057115f514115e59e7ee5095472a14ae058810dcadb63bfcf27a5b2f49c355a28e85ee94a287f96515ef3faa5754526888f94a2c37bce15fa582c0f062e1fbdd440db2b3cd968f4a79fce1db27d0cc064e5aa94bc33095cf6e92c32d761b0104dc4f709555b91801dd3cd585629226ac85cc6aa3625912b4a2c1ed2c252e84abb2fcae6f4f610f12d0ed9886fb4480c805cd155db00fdd392e93a125179f224ce69622d02d51cb897673e57c487717c756cd619b0d8bcd4e81c0f2959b9c52fdb9fef93a37410fb65ac3aca8b4d", - "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", + "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x358e18726f636f636f", - "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", - "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", + "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", + "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x3d8e18726f636f636f", + "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", - "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00587cf2041e1346b713541070589c0ef0037d38990596d40bf8dcd604f21f6be13b283e40046902729805d1547369a81a401c42d559e691220f0355686207ba12107399dc367543acecb86fe506fc073e615ffcb4a4edddd6f69652a6246531140f132f14ed95c27985dc55af147edfa167532865ceaa3cd93294ce3f00d1fc7d77bf24e0f7f30302fcbea73bff864c31f2f7ddac7e654a6305f2d761e75238d1c85d7f43a61624993f0cd40ff4336b2499835872e9836ef6be2335a9495f0814e4e5d27b35cfdffbce0b7f6cc873e6784f0a479abddfde030abab9a4031d2337fea145a5f0c726f7771efed890e9cc21bd178e9d49df51cf0bb7771cb6f7bea749a1f75ff8438b0820941bcfc983148e3493bec77b7afe289ccf8df4677f939e2e065b85737b48f38b0a79cd1da13300489f6bd574e966b3e8fdda4fbff6b6b0bfa31ffdae7a32805edf7f7ba7dfddee5aaf7e37d0efafbe7f37f8d34f0033d3bf21cdf3bba19fa6a0a1787777900ff1ffa145454545d93fc8b363ff9a1dcfe8e06fdf73a0ef78a495d216a8be59a38a47b33cfb9528b1ec8fea161533e741a09b38238d65fa740c4ad632fdf92a6fa53ed3f7a7306f15711a25bde5f58ad27712d4adfbfd3d4d9900272dd35779cb3ef5bf610d79f096c52a5fd1a74fd47de44a1466bc800b3f68c11362dfdc6d450d12e4ee57b11acf56391eb939cb2a1e1409faa32ad3a74f61cdeaa74f9bf8d1ac9e4e9347552ee569850b488c2a1acbf3e6d542b57d08ddfc01824c74f26c557d1ad6563901402e2fd109f27c4314442fde8fe2e2978e586546879afbabfd7e8b8368a62f2ae44da7e8660fd08a19b13cad40a10b3df2b452c61259c7ed535ab63f472a826c5bb4895ed9213453184501a8e3adf7af5f9bd55ff1b7caf14873ada18a7e3838c66995fdfaef2d4afaca3e97474a8e9fed77ddf4462195d22a5bdf432ef45a659f6b957d2edba744ae3cfad92cee4778f4bfdfdd9092adb24fc202a479f42325b3fdf9e130fa5128d75148b3875eae61672e44b5ca82adb23f82d9ce59a6b06c9f92cdba6f9f4ae9164892a411a2fdda2cff8b83805cf690a655f63beabd7d0f67c6e9d614edcfafe254abec070370d4c99666fb458068d6b4528612d97e50b3eadb1f82ce40b3fdc9e551c7cb6c7f7a8b8ae3b4326bfd388b90ed8f938c6cc5719e91298dda283a3ab5b03fd63c47afd53ff2c833489e3fa790c9ca6166a55533cf5735cb7ffe8f66d59fbf85dd1c0038afbc20964f795e71810c72b76649926406c491266f3fbb35c511276f3fbde5f28127caf20ad9163b10b7e79a65f3f6db115de40d8f4b74f2c55cabe85b2c0090e69929cee1085d68d5ccf46bb7a648dfc30e6bafe8e300a6f22ca3d0f2cdd30a17aac8f4270eb52f2a44bd55106516c50a7ff7777ff72844d9dddd97907104175301e0151aa4510e3991fb390ffcd1f500d29f0d64feecba2982b33c02f6cdeaef9a6a563f4eb36aeed2083172bfd72d176b1e79e4a6c9fd54a749479f86adc2e923ddcc136704737f47dfe98f4edf7fd257e261e73243b91f0d6bfe6a190a8ba96b8f869e3f28d7a365285e690a01a264feb121d3ef9fdf0e952433cd0124bd66cddcdf516f4e21f4c7b1f39005d2ec3f7f7e3838e6e6a7c32cca748613a7b11230cf1b21a76d4637f36cd6d83fbfbe4c690ab09ffe387fb66ab6aa3e0becdfa15fc9c4b355153bee69a1a607e8a608d61f53d9be4eb3462e48b34650d5ac5127dbb7ffa3599eed152366d93e4db75ae4c9f667b33a8f3cb27db059fdf651cdf2b76fdf6b167dfb13c76225b37c75f327cea893fdbb19d2dcd1ef86da2a8ac720cfb5e97703c539d49fe1cc5d373f1c2e1e3fdfe7fa9bf4545b85c720cfa44f35ab7b7f9a666ddd361ae171f4a41f6d1e98e783cddade1fd5acd1fb77b355ded30f079a6bab3c3c7a4ffa2d9cd90b833c8fbea33da997e616cedc85339346e16cd598caf3396f517971f66ace9c91264f3cdeb7efdff99c33d770a4198acd6391cce1209be7f4727fd7b537bf8b47a17c9f86331cb93cdfbf494ff3472efbcf56cdefea37e7c96b154eabfcb79fada2ffadf29fdf0d5bf51b563cd20cc5f338440ef27c7f8660385bd54fbf1b2e9ead1a511673ad6a30d5ac99fd6b38f3376bbe3fe7ad4a9224498afeaa29c4b33f4ef69f388e95e8e4792344a296896ef280b324d1c8b3249dc83ef22c492972679a38e3e7fef9cd008e35f7f734479fe3a6b766af4630d31fc13c72b9bf366b7eff6cd6f6f36bb3eecfe79a35f3fcee86336f21cdddec0176f307d8b947bf1b361c04bcdfdf0df7e7278099efd32f87ed2f1eb7dfbeeb2f07306f3fbfdaaafaf3bbc17e4f77d4bbe1f6f3f36e7ea4e7c291cbdcdf70f4a47087fb233cd27c7f0bc78d1b6be6fe864a463ff3fc6e187dc7856300f2fd6e7e1c1eb9ccfd0dc759e6fb5b388ee3388ee3b8fd6cd528807c7fb66ae421df9fad1a1b90efcf568d45f2fdd9aa11887c7fb66a7492efcf568d43e4fbb355f77b9c0b95fc785151511a99fb99b770e61b8e3cb97e473d2eacbf8533cf6f8720f97e4ff7f428fcd93287479aa178be781c22dfefa8b78533cfefe220cf16cf568d35d3efe99eaee16c157d0f67ab4654a63f711a2bf93c6f8446b44ae962c0f9f37632e0fc79bbd92cfa2397e7cf66f5cfef3aa4998634d766d19fdf51afc3996bb3eccfefe87783c54140fa1df56c48f3fce877edc900f6cb94a600fdfbedfb7783c54140fa9d7b36a4b93ffaf3f3efe9f9ddd0dfd33dddd33ddd518f86337748f3fc0c3033fd9eee69214aa907baf903ec4c136704b3ffec56ed95fffc6ef600e977c36cd5c865fff9e140f36c957f4fb7409ae9cfd09f79b66afe8c0e5ceee772e3191dfaebf7571c4433c5b35563cdf3fde79703fdc6633ffd9e9e388e958079de083515eaa608f6fbcf668da9ecef9f6ad67c7f9a66d1f7afdda2a23fd8ac7985066964ffd9ac994754f69f388e957c9e374294e2d04d20e02c8d88e5539e575890449ea76ece0f0820ced34a5151def2b4529446a679c27453079cb69b3ec069bbb9034e5b32825e41850c52098a920abe354a534a514a524a4e94884a43a523be31be2f7c6a7c5cf8ba503ac1575422bf277c4ef8a05042a2f481ef0a1f16be257c46f8bcf88ef081f115e123c2d7c5b7c5f7030a18f962e065e16b818786d78597822f04df14df131c0ab8146c62741ae8601d171d10be283e107c2cf8aa6c45200581040412171f172432484d208d411283538344237d41620269099c17bc283c2c7c4e7850b80fbc076ec579e05af80e3c0bc7c2cb2f0d4a059d82b280ae807ac0491326412c41b2800240b1a1061a4a1e2869e0b3c257fbaaf069e18bc267c677c657c627c6978423df10be1d7c3c286580f3a2fbe2db428989d212a50d7054f0a42095f149f19cc07160fb82878557724870497c52a0344fe6c580b405ef06de13bc1a7445f068e0cdc0938107038f8a8e0b1d16484d7856745e7c439d11ee95bb4523e189718dc019a18be2d3e2d341b7c4064647eb94d025e10ba3838294c6474609c64dd9aec051e98670bf2075a09382840152942d8c1119f408dd13dd07465c904c40bbb85c90605f0f3e2b5f79c1e0bee88ec01d81030117a3455e10b8127021a030d8a4c03541b2b25181db00c704a70487018e887a817485b4036ec81382c70517e556e18cf094f0ad80e403520f483cd88a6e0f3e136c5ca05ad8b6c089c0cb62c3022765b302a701cf0aa42cb69a57dbaac01df149b19de101c1fbc13685ad8c7e629b056d577cb08f892bc6e681ad898d031bcc9302cd010f5c191c199c199488c4819b04cf06370caf8a8b048f8cebc53dc206855b84fb030e0bdc156e133c247849f0c0f096e085d111e13bc2a391b4e8a8b838b84fe898b850f0c6205d718140d24033d14b9072b0e580e2a0cb0007eb60b0a941ba018706dd006903a42f90bcc075806b02c7049a810d8d2d0b1fd9cd3c26785e785f6c5ee87e40c24127842d0adc08b62ef4940d07fd812d8dae0b6e096f079e16b4b669e1fae06a71ad7024d8d6e09ce09ee03cc07de0cbc1770597814f09b40434c69980232f11b82570b43b82fbc475e27ee07ae076e03671397037703570619789bbc4cdc055e22641b5b818b8542ed145e24eb94357ca8d728fb8465cd216d92f582fd82ed8352c17ac1a360dbb05ab059b058b86c582bd82b582add92a582ad829d833ac146c141a66cdb0655828d827b413d609960cdb04cb04bb044bb3635825d82458316c18160c8b044a03fb85f58266618f4075608d608b608960bbb043b0332b041b040b04cb85fd81ddc25eb156e815eb03cb03ab85dd81c5c2eac05e6171606f606d606b6069409bb033b0555819d8185818582aac8c6ec1bac056b12de826ec14548cde805d8195c2466155d054a81a940b36051605d604148c26b2315b023b82ee800d8105817dc23a613f603b60396037603560617609cf81cd8055c22661892c12768a9562a3d01dd823680cac1196ac45f50bd50bb50b950b558d9a46dd42d542cd42c542bd02d500fd001501098a2e4a7744670425025705c98a6e0cafa83ee15d18426de03a6810502cb407e8153a891e6a0e7c515a03ad44638022817e41a3408b4097409b40cba04ea069d02c5034a8129aa456a05da06bd0332813a814a819f409140a940c1a06f5a243408d407f40b7f890f07d417940b1a0e59705bda2a5d01b7c3ea032a035a03310829e809a8082808e80868092803ad146d00e502a5409bac40f3e10f9661f1639e409480001758d8ee649474c18b5fb3c314201224e8cf800418448471d09131f22444893fa2ca18091202642f84024e8880f5012244c92102112435a623e5992c448900f12223e3e3ee42029319bf8c024091122807c84f82192c4490e62e21304114678785212d3e70893264c881839c2a48901829808d1e4c8915c431a9a4f9ef82ca921912d232e04510097911a33c8e7890f3e3ee2cb280d244d8ef820b119a1319f10e1a3e409113e3a24201c5d2189934cc4932401202287232b0019d57046559843f83061199d31a5308138d2c489cfcca88c0924c40f497c60d2e40891244eb20f058c882ea3274c1f9a34017242c44912209e00f930a940132244f828c93162c244e2c3e487244f98081164e44813284984f8f1211204d4c4890f5090d11226922444827c9e0009712466449b4f7c920425016a024490104688fc402489936cc4091226468070b0311a63124101224a78b2c487899320808020828489104d28c02449128298343942e427082461cc263ec88cbe984f8298f840f1f162fec0240912263e4e88f8041941920409132347788c8c307d90343952332ac2046ae2c3139f27374644984f828470122444131ca32ea6912023488830699204894fd093244f807c9ce41809613ef1016a7284081141499624a1809125498c4031f2a320cc274e846802f403111b2320cc27404d829e3411801120233ca4465acc0a247192817c94003561c00ee1a89c3e3e42f80871801e90f8fcf083911e768cae984f941cf101e2480de69320263e403e403049f2232b9824f1616634837924c9132649808286f02142c412274e8c1001f241b2248910a292234d968834a32a6610448c0419416224c8a700a7510c2c9064899124414998247119c9a692234d965080884f9010477c86f06119b96002350180078367c426bb62460bf214ea664992990a79ccad5da85da04ee856593b73ceb9c362b1ae6f4ee9d64ebbbba9574ae9d6dd777bd978f875bad5ba757b53774adda973d57ddbacb5be550ac45aba39fdf182b78dba7b538ad2a19b534aaf0fdfb6daa3696fdbe528dd71779d5a43df66b66df34b2bad1dc37da1eebdb5c34029b5f6c5dd5fdca9edeeb9f97d717a299deedddbcbd65e7ddb9c6e75bb9b7bedde9c5ef779dd5adbdd7eda4e27dabd6d278eb69fb6deeacce974dab68df3d389a32fa7939f4ea793fbe974a2d565dae5db4e395b9fdc4fbef9e9744fa7ede47efa4e9b6ff56ebec95419eff6666f36daaf8d7b9bc76d196f99ed56f7cd2bddb6ad56f7ad6e9bb5d676d3cddb7b667319bf94d2a6bd3975dfe1ee973a6d19f7f6ebf9e63adcbdba6d4ab1d3952a078a736ff7995477cf78bbe7796edd5f5e5edcdbaf6f9bb73bf5dbdddddb56da9c44c2f1e2deb7b717d4ddb67add6f38755263ba6da70de77abdd9b6ee523b76bad5b9b96fbef90bf5ed76ddaebf6c1b6d4abbdb5f5e5e36e7dc7df3ad7ddbb66d6bdfdcdbb7de7adbdab7dedadd7d6b4a6bfca57df3da4ebb29757777efa6deb486f56eedd4b7eef6deba69b77757efeecd9bba6f9bbb6fdb8b534ae9db4c4a27a535f4e585d23a29a51ba554666e9b8d1aae69363ae9cca432bef556db3777ea94ce3abd5feab6799ee77925234a51bc05890f900f12a0264458407af824010ad2e1e520c5a4643c25478c5060c99226403a628cf800c9b8d87089697912f424c9103e5e104d543d92f8e003e404a3665c9a340122f2c4e707264680388299f838716224e88891274c8c000511094a1204058478b2f2794224882648981801c2a9a02744940035a940900f139cd2139555c120616284880f90112741345962e44893253f3e244996188142e4c9cd4b1036dac707c80722404d828c1c69b264891197b91344922026420061940f4142d4a086f0018248109324404e881c799224089a1fac9a219a5420c8861223478ef8286101e9d112a4c70e911e3e4a8c2ca100911f982401e28911209e85c90f499e84dcdc7942848f122247922ca180104e5440374eb307129f274f7c809c04d1e40811201f284d8ef800ed286101e9e1e488cf93d60dd027c808900f139f1f88187982e4c88d29c7b7c4078acf1222431809c2a6f4439325447e6092e4871f9a2c89213d2132840f122649883049620488233ef8d0e47790f8dc7473c7470991a0217c98f0f88078928449121f54dedc01e24890110a1009023212d405f9fc90833477808cf82c3942c4e70723404d829e1041b22409104788042d11c2880f3e4888040de1b382c2c4c747b30711264d923c01f2814284081f9200f9402122c30e10203d809e106912e48408a023448286f0b981c2c4c75b661301d424089f202e14263ebe63a2f5b445e64b4848c8855efd7a09d52253682b3285ba22f325b4bdb62242740abd5ef3f57abd8484be22f3f5e28accd7eb3585845e5e44a88b4ca15be445855e2f2ff2a2b388107dbd5e42b5881015a2455ef4458bcc172d22445f54c88bbc5e422f2f325f2f212f22446791398bbce8ebd545e6ebf512f2222f2a44bd1679d197909090902d328584bac814a25d44880a09097991964ba1734e1ac4132333230db1ec3fd26025fbd32085b752d84543cc5baf16b1fb32bb6c9682ddd4fc6928bd750377ddab6ecc6ee0d448ee268643bb51ca706637351aacf016cc0d9acc0d1227d6e1c06e642aecba31c3a9e19037311c1a0d326fc5609c1bb51bb0161c59cc4d7933bb11c38153c2dc9037b41b311c244e7943ded06ed46ee0dc9437b31bb41b244e0c0776d3dd90e1cc587ebca9c9c066ca199c1ace8f383864cc4d4c662643cec4706037b2181acc8f37603238b2999bd94dd9f2e38d1a8c0ad3e0c48d180ea6018653e6a08188c6611ac81b320d729646f6e7f9c25baed5cc5b2d61cbd3b2e380ad38da8aacb5e8a865c71153913766aa5acbe360170e1cb0158cb622cb6821b3e390712a588baacc31c3791dd88503474c45ce54351e9ab77060d971943754319c1c3968ab58761cb3ecaf5ae52873e4c03153c97294396a3960384a552c872c072d07e9c22153c154658e991f57309c15094363c141e3601cd9a2aae1cc6070d458622c306ed6a22a7148989fe28d1f55b11c3fe6a0c96038384a1ccc43746354c960300f2c071e73d458308f132ad58f394a9e98af3c1c73c478c80ec7bf5ac45a761db0956cc77733da4c2cfbaaacf1f8991de40e18cc2c3b0f72472ce76174c87494aa50c73f2cfbef90cd6078d58a560b71ec286f74601d640c1ff288ad6238b06b47e9d24173e9205d3c62c0ab988b870eecda21d3315bc18057b5d58c07b923a62307ebd0115b95bef21db51d3cf00e988e9a0ed86ac70ebc838663c632abc15632da0ed8cc0e52476c55d676c47494313a64ab19b94336aba556341e3019fc6a1159308f155ff98eb205bf5ac419cc53faca75d062308f15be721d640af3c87ce5ab58877978c426165248c1437e91fd471e32fbcf40f3d60b76bdff0c5f78cbe5854bb1e4901d0fd98f98cb8e4c874ca5e12d540a95039be151c210d381fd90a19e05bb72481eb21fb11d990e59f3960915cbce630683ccf4a3cca97539301e250c311dd80f5919def2ba1c190f5a074309930303299353f2a8cdb2cbe4d0608071d89553f2a8c19003032c47c6830643ce0c063227c6630683ec47cee9c74887bc3bb21c92870c8658f7e30fd948077661b6b4b2524e0df5e38f3227c663766128533fc240c6fc9833cb91f1707979f9118659aa93f91106580c66f931879663cc294d3a82c0caecb57f6fc68abd90d93fd59275b4f05f4a980cf72ccfd5b2cf7c4b2cfbcff0cbc85824cb8dcf81f3375a349c160ca6bc7996582dc7ea75b466aa5fb5c81caf62c9707c0e2030203ab0abb5c2ae16a9c22e962c077601c18181d06e60578b86835d2d988be50272838170d8d5aab566b08b350382318b0c42b6642e160d488859b020b056c9aa0179cc8af1a8c9fcf863162b6d8f12ace48396a2a174643b33cbd57c9c7efc511be99433971dda4b8f5ae9c71fe40908e98d682e323fc5910d1e399dd90b7eb588a9e92b1b78a786fa295a3c7d5583c754a63ffa20f1f4150d9ee2ab4534fdf80336aa65203358c9aab1583020651052c6a2b1662c1288ac1673f9b1056395406a40622f3fb6682fad990bce56b4583220b411086c9c41967d062bbc65c2ae1899b73c6c6762d985d0629726c3cc5b32f65b60d95f66961de632cbfeb4ec6fc2ae1962426842624168312bde4a61d37b33dc1fbd8bcc7e61d96d39337d0b76cd009bc9000b32a3cd507a0b854d312eff52cbfe65f64791d9df144426431923f333b5989711224b7dccbb6ad9df55a507984f0589c9209bc12e2132d8252406bb6448615710182c832b48cd57fe2ed825a47409215d41643294ae1948192e76098105296500695f8c44db623576a27d33126c9bc9003bc14a3352b9cd5065204f3f45ef4721654908d9c950da1f83c84c3f063981f84d38cb6aa50fa73c9cad1022eb48181ce15cd6f0ab45dc30e7abfe295e9cadf8ca7f9441967196c257fe53ac78faaa7f0c12cbfe160069ee1f2716524c2c6679debcaa507d9d84ea2b25442f254214ba8933d25a8bfbede783deba3f3fe52d6f7d7d496fc3afe116ba5c9e0b5d30ff6a1137efb777ddeeefbb60d596bed292fb9e8bd9d193de55a507f047efa259d35b3a7b52cbbbbcab4a0f2cdf42239d9ef4ae5973c12e29533ed155a5879787799714221b44979f424557951e50eff22e18eca2325ff9bfe029547441614afacabf05bb28cd57fe2c780a1549d8a5e32bff1376e22bff117615f1953f88a750d162179df9cadf845db4c453a8c86117e82bff0fd398affc37ec9abef2f7f0142a5edc610af3959d55d8bda08d8d7ea4659ddd9fb49fe2fd51679b3591f423a5dd9f2209bf5a44fbe32c47f8d522d69fe2f62325b99f22f7239565dfc21b82bea26fc394afe8d7f07d456b79debc5042b4b759679a39f44d53c87cead2c54c1e29443188fd53aacde421e2217a4b0fd1fe142ab6cce421aa339387c8a3993c44a89ac943446363f210e1888e5ddb13f9f0268f14a21cb1fe942b5ad4e421da5c260f91e965f210c1c04c1e229bd4e421ca213676dd27f271278f94289b48a423f64f71b1e26ff2107569f210914c938788059c3c4432a7c9438445fff92c93874887e8d8659fc887387988acc843f48d260f910b69f210d5889587e88658b1cb9fc8079d3c445c4f1e22d0270f514a9c3c442f360f914aec9f3f274f6357fd578bb86d7def8653d65e0c3a7611f910fd2de67c459fc887e86a112b7645f1a2a222c7d357f45f2d22910fb1f1fb8afefcd7a5d54a478900e7678a47fa339f0810ca967f28997f9e0865ff51283b7e3267ce3873469a6938f31020fd21c059fed83cafe0c00a737e13a5205337223b1e2999e7a703cdb5facf7014caf3e70fcdfe33a44bcc9df9b313328d4ecaf5eb6d42aef8c78b8ab8fa23cc84c323f74b84a8a8e58b3957ae4f9f7b0febcf4f871904263287a3b0dd2b8ff4474c689052e6cb64060196ef8f16c8dc08339964f020450e62f0220b6e88ecdf185022d3e45952b9a108c48d7c51021551cc20ebd328c89a0ca8a08918d08dd80bac90414e2619390a32062fb220a1d020a51cc202f97e14474c32c40d93930c7162d7fc17131298000946748124458b492924e94eb2d7d0bfbff92de0b4042540f185284545e214002afb8bb6bd3de81a96fd3b6400a8e47e8e3c5e4c956895123e5308904e8e62bed07cc2d39f13572c654a8e589fa84554a259a8ec2f53aa028e4b3255a255fe3a4ee0414a7d028e5489ec3f4e27647fd77cd05742e2cc82086850021ac8682429d6779186649d6209141c71822b4429537244fa442de29432a545fb443588f46b485483e8aad2037d170fbef2a73357951eec57eceaf195bfc5ae2a3dd4a7d8f5bef2af58c75765497f9cb3a90524ae4431053058b0842e4a32708a421de0e20a1290008b2f608005718af3479d1e9e2445fa4a342b0785bd5a887a2581d71a5aafd28db3f6fd39fb9bb5b786f48636c3b3ef9fcd424e8534ffd0a25cdfe24a7333e108173a24607f181041fe221dfd893382484c9f378578a9bf1d2aa558a853889d42a8fd7c440272a4b7dd5bee2df7f63bee491cf776f4d65a6bbb51e879964890919f7bff3caf18c145a66915c7fdccf69e3bcf6c9b14b8bf233c5bc56da19d39f3e75767ce7c1ceb32a0646ea2263225f3fcae5beecd99474a0ec18c1da81179e291925ffd1942d1c134a790b156fc63ca739c4579f49fb907907e95cffef3fb01b3634ac280be800929f9017d8222e02c974023df77fa5df74418947b220c0f58e1fedba7037d41be7f3b400587593671c5132a80992756e263030571f9671665fbf71b32cb26aec8d76221523928959d867403447986f48716e539d239738432ed70f4b79f0e7d827cbf7e39f8df9f25134fc8f6fb7e7f3ad4afdf78ce9cfe9ebee148b1bf0dc7ce5da1707976384b269ac83f39048952db11860cf2f8040955744bc86350124c4891208f415294e0cb6310139490e7ffe040aa9120ffcca2a22fe4f93f3a90f22884067e90e7eb10e65108189c20078e24e7a5978b26b2a5227b0ab24da6dfcd0480b30481946cfaa1d97e373f1c1adbaf782c4320cb3da4dfbfc747a1191d2c154aa0b8f8dbf067161515ed6093e9533c0ad9108a8b15366a68a9c81e0675b691fb756825edefd6e2a06e962090410eeaec78ec8742b34df6d0267738330d83ba3c5fc8d23ea3ebef6a07d2494ff573dc3b27c551dcb7558c7c6d1674ee1af96e1e0d3dcf707a21dff07e67bd699d7776a5b5b47d689f7e8f779ebbf99d77eeaaf5ae67c3fadd90049cef1f10e0fcf9ddac9c4d69ac409e98869d6d38d1c81383adca911da75a4585e88b0a55af2cf811a45f5b35eb5b2954ec4f651bd6707e2348ffa1741308587f479e57bc90921fa708104ba4c09246649c912d8f66d96dfbbbe16c1868a3f3bb6df43dbdd19f3f93fbfeaee71c85f71ba759963ef7f4d3818e917f68f86393b7efb8b07f86630fb93fd2195e3cd29f1b9e9347e39ea6d9bff3d0003dfef31be2feded1ef06ce6b409159156bd5c956c543039a65a7150234ab66fb3a196822dbffd12d17ad956c75f2cc66fbbff3ae7af4c3a1fbbba19f7e3af8f78675a06fbfdb429b5367282146de7e66fabffd0de96fe148bfe0857cbfabde16ce9c6a967d10d5556f7e38bcc87cf1e8caf7db0b03f842de9e16e5fb931675d6dbc2b1c97c7f3699373cde9f4634abfd676de48222e4fe8b8416f9fecca6c64aeef7d3b0bed7ef699f98f67f385c1deef71432df7e77c3fe6e87fbfd5ba8e44e1cbe1ceefc8b474afa9eee48e148fa59bba75c388edf854ae66fdfdf90cd01e02c9380e5ede72cc0e827a6dfcf10528e3082cc40a47f22944998f43f6305d6f042517e326752348181dcfd13a1dce1d92a121ea70e233c0e91b7fbe140caf75e6b6dadd5ddbbf3fd8674dedebf21a4fb0da17973fbddb0f5378484e7db6f088914cee8b0fdfce9cd70e651380e31b112ee7f5c79f4cc3d97b7ef692e1cefd3eff1ceb3442296ebe7581b72de236ad1e8200056975215ba3c4b2964e449a384141fce00fad39f73a61e490701b0825d6d158a87668d6f258fb308b97efd5b6ffd11ccdd1441fbe3fc22df54beac911340b346108866dde76996e7fb0d2823df8f40b7aae8f38ba945bea83c06c9f7e7d7d3a966cd728a12f93e4db33adf7bef7bcdc2b958c9acf5199d9b72b87ffdaf6fd6b7e7debadbadbb5068de7efb1bcedc359d3d734f6f5809f7f7bd00dcdfefe90d8f4279a3376c8fc79a6df5e66ca8e4c7c5713b781e857277a6ef6838e34fdfbfc319fffeed3bee3bba3d7d2edc86f46fcf85fd9e43ffb67d4f5bee3b3b1a3d90ff7d2eacddfba33b0aeddfcb7de761d0cdfe371c3bfbdbf79166e7f09c3c7c88f557c2fdf69d03790f14747337fa202f93dcf346fe6ebfa3b43cfa8ec4bd876367eeed9370b0ef3fbf0108e5119e930737d2cc7d7f43ec73d8bfc73da4bf5d6cc3b19f7e473bf73ca44368f6af1824d1519424d0e8254914c1bf3f65aadfd5494fe0d482d21e3ad277a6996bb36cf7f32737e25e278f46618a9b3f85d03cc39f393a79becdc13ee93b52380a65d2b7470a496f7b9a14ce4cbfd1d36f0867a2b9035b357aeeb7a7df0d243c0a6d616a1476368442f348f3e84921149a47a3b7e1ccb52bfd789e19e2997b0effcc994fb30d4758c9f6dc93c299ebf7c315607b0e9bfe6bc0fdf9a49066ae55f38633f777e48e1be151288f1e074ae61f5a72dfe3a49076d49bdf08ff786eaea7fdb1fec53f345b2cb4513ba59b52b80206482a5778f0851588f3035b457fcbd34a511a996621e0f8d4cbf469904c9f3e4fb3b64cffe9e3d01f99bed7acf9deef21034025fe39f298e977730a1975b215b2022065fbb6fee8787c65ff71349b902d8ea2da9f617d1b2e20062fb02812e77b38bab28ff7970889206f3fbeb2fd396798338671964450e4209a37cc6492917fbca8285f1c856bfe4b888a9a583139bab2c5a3ff38cafd3dee618edc51af86f3e7f7801904983873e4f6ee42d5aca12e74373d219799b3ccfeb559f3b929c4fe68954321eb8ca9ec4f5fc75bdcfbabbc35aaadbaef1f640af99973df7f148221d7abfb9cb752bdbaef9f82c9feb34482288f3fb23fcc1442b3bfbddfb557c3996dd856a8dfd3939ebc56f5dfa74fbffb33f569ee3c537f96486021cf12093372aa55f7ed4fcd1b9eadba35acdf0ddccc99b3b4ddb50e8799699e58acd14547d3e812ccbdfe6e984ff32c914023a75a359ffed43c67cec4fdddf0438bf268e6f4f78703cdfefecda721cd93e2cacd9c7e990380b39422451ebdec8da69099fbfbb92984946729850439d5aa7acab39462454e598f86f44b799652aee454f5a6d396da93e8ba6e7e6eff7e67c31bea00daeded2fa01f8f42d9ff25bacfaf01f51bbb8444977f8bbd8535740989f4e77783b7fac78b2d1e69de30f73a80ddfc7aa05fb1eb254ea9f26343be4f451bdabfe1e8d97e87f57bdc8633d7b0c5f9f5e022fd9ef6309ca290bfa8107dd1da315aa626ffce8473fdf9b58734771d72df21e5bea7bbe903ce1203b3dc3df7f427fd70d848df8523e9958cae37bf1b263ddde7be7e07528f0ba71772f5b870ecc2991c2a49e6ef6bf6fc7d879de7970325f3f79d7b5c58fa0e67eeaa17c589e9a3985c42a2e9fdbba17f260752e6f08f294309eadc380ad3977e7a91757267bdf2664167f3b870ae913f4a11268a8a8a8a44d377b6e9f46b6fe98716e528885e34f5b4b46bc97b9ab9708a913da4d90bfb7bbc33cd7952c27df79500423ae8fcc3817ed775dfd35d7f02e8c973f218b99f3f843ec7ddc07d4fd32f07eebbefba52f87d47bd5238a990bb443fc4d25bf71376710f62a7f9ac6b35e6b29e11e10a35caca6157f5c412aef58758b1ebe24af315765599d77c45bb5ce0c1168250c50f8c9851279aa002287811c5ab7d20032a3630842e8440acb8d62acd65b4a43392d29e24024529a39f028adb4f7991f4535462f7537444efa70411abd01f6909a6108a7f6651b6259839a125c1dce9ef423b82b9d34f0aad08e64e3f17da10cc9dfe2db420983b34520a118d28458a14295c1373a7bf031ef8008e38c2519cc662b08d48254a91928125e64e339112391cc5d4b2ada8e80b48f0628b10c4a410fd10a5703f25886891f0c4aac4dce91fbd46852380d184125801439ce2d6c5078e500324803005719322454a14d39417ad14956887e64eff141dd14e993b6d496f6d78ce15fd9b4acd69c98ae75cd94c1ef467b6af94503b4d0dba8933ea88dde8e4f92aa7293d28e3de45cecce7c15bfec9fabdbb2cf583d8556596d6322729cc4a9edba8d6cf523bbdab7f44afedf199af7a963499257dd651d94b599b9534169b3f6bb11a0f5e9691a797b51be36058daebbec12e9d0ab3323a6b5a7ed39aca40ebb59c7a41bdab96fb7be65dfe6157c76cad96947458c32e59674ebc2fac5de6ab9e3f7e086f8d5addcd6efe474a9467a5b9ac76931776c93a8bcd5ac33a666bb5e4e130bf4ef6665b96bb3657637666ea9606513dea52d76e6996a6a5ccd599e1602a8ca5c6ca5c3b5db3ac8d56fbb2bc6bd632b5fbaefebe8143c294b09a9d9a596ca71fc8bb7a7490dfe96761174772a31b046fb2adc695a33bdb621b8d938dc85b6eb06dc659d846faaa370ec6d1fcd67cd5fd1c4bbd9b4b8dd1eecc87dd35efeaefe7b0eb54baa060608c8576835d34ef72d332319ac7d805d650b596d2346381399127cad402d64adb9f9ac1fd5dcff47f885da799cb0c1503652c355f35cddbbccb464dd3d458bec7ffd8f91e3bb1b0bfbf7fb0bed5409ed53f1e48fbf81f2dec3ac958d8e50204bb50e40fec027d6096590fec3ac576b0cb25e66aa9b9401dcce23ac15c2e30570bcd658a01b3c89af455cf60c02c315ff58cb5d048724693f509c6b54beca6865396c8534c0625f351bca8e874d3d222838b7091e180242e8234bb1982f86a116360b91ff41676b18cfa595858de2583ea67215f4814486b39d55c6aa8129cb5c04e34171498835bc898988b4b898239edc452739181a719c965868a9d642f2458929ce652dbba0506ce4eb5d3aa0c16d2e5854cadbed8306ac66335b32db1db75edefe6fa5f4c2fb346f5d3625e6062fa45d6b5975a4af602134bd15e68a9180ced05969abdcc523098194caa44d152244c0943b6c85ea87803d26812baa0628c2d6a32705a09a35db23b50aa810535ae38616731ae46c23c0b651455a1c61956943419578e605b8c36855a1194304617e29d6db5dc8f851150e1c4125e88c1912b27ba5022044354b0224ed1377f6eb6450eb6c882114928218538456b7f142bc9a210630ba2273c204e91447a537ba108527e7086182128a2fe46cab6fe224c0f96de45eab2bfd64f2abd59571bd53a1849e6951d6d44eb4852cc9375b3d18c5423c1bcae1c95241a89f43ad948469a5d538b8c44c294b72b8822952998c3cc2aec05769ad999c760fa76cba7683525c3af96d268d52d760a154718994fa1e2f882a7507195aae55ec56aa84a235c91365c11852b58b872c2574388c1155700210b19299bd1a695269e8005285eb0821256ce48351a82286cc085155c418a59cceb681de98412074f70c14515e2884692014902035dc036503e419ce236924a521849a06009244449429c22c99bc14c9902ad8910ac914657034264650b4f78c11455183bd8118c908228aa00414c9ca2735bad7f9391ed35d92cfdfd2613acc96fe6d54c6497649fcc2b9525b21433c9be98477e25982956aa7db08fd6c546b58d06c64ca5dae883715dccc2be9a2cf717f36c798a994ae4e8ab4d9666a4fe4aaf6637eba3a93c81a0ada3c964024b25dafb5094ed87bc6886a36c387e8a437e86b83d76d9e00521b8483f7e43a3578b083ef823bc8a9546e0e84b3a5e87a9e4f2b88852e94d393ec70f0d993e0af7432e175c84c9a47ad5ddf1531c1aba1f85a33fc5a15111f7feea57bf232402c481713c18aed2f0553f0d9f08e521c07195860e98b74cb85f8713de2ae17e1d44debab85f07e9ad1176a5e12dae4b53e33caa61314df39e0c4c8636238ba1c134640c4c869499cdd46ee099d80c2d261633036b726616239391f9aa656a3d8b898999c9c4463d539631341959a96766b76fbf9433b019daa8fbf6cc69a606c6c0bed4295f51195a0b066f9f3027720df6af62de32e15509d481476e945ae111bc9f55784ce1e9ab7155cbfd39f0f8fd38c2959599d37f017054a591bb57641ab458af9ca0e9afa1d988d9a8d5c468602b584dcd868ca64646435b11d190fd3660366636319a590d8cc6466903ab99d5903668644d438aa1682eb1dc366a17c6d1accca5a606364d8c235134b59a32b70d126cb0615f43e676f9d7cc729fdaa58384233a708420ac600a27ecb2014361d7d4a20b1a78208a0d445902885d45b4fc686396db154409137461c4d0942444f0a76842793fdac45c26258cd18326c4a82121d2bc0917d1b8887fb5882ddd5df3a37e1aca0b38105f2d6211376de351dd5e7fdbf4377e96afc9dcb8bb1bbb304e87355f7588df653373611786b9c2c721cd575d73d994b8f455db604cde3ccd468663036359dfd07e76a306dba0eda00aaeed479a996c6683269bd1642559d6ca1986813f86347236a33014e50b2324e10a718a1ce9474c53030d284824c81588533ce15810ac78c20848356e204e111cc39a9529676c0103532812a748835f2d4f841a9800044eb0020ac4296efdaa2fbce59a798b4b712dbbb17e55cd5b1cf7dd0ff6f79bb02b84dde0c86c6ab132bcc5954add5c7fbb605718bb89e13c7903a6a279cbd4dddfd8d5b57e14aeddd47e06e3d0c2f286ec184e2d94ddc0701e76a349b12b14a10547c881685383c9643760326a70d18517491823168bc16e90b356053586ac64400a4c06bb2171489c9af7a00a1c5481441a421063340b2b1c91c54c0a207011f910fdc77056c92932141c91850c8853ac0dd282b0861948d80217e34d6deea0065b58a3e6012c2461c4a1e5ee23ac78e204454768419c22875d54dcb0cf5c527ffb572fddfe6ef913682a75aa53dddd386632d8952316835d3952d8750306ab5eb0ebc6cc05bb70a09a05e73861970ac4ae1b26ecc251c2ae1c1fce31eabfbd61178e9aaffa3d8c23e6ab7e1276e1b0fd15bb54dedf611ca4afba1b074d56bb635bdb56c1bc65b9b9ce31cbdddecd75b7ff7863969bb42ac357dd2b9aafba2d5e7de1abee8a57335f753b5e59f15537fd716525ebf884eeeb468856ea011a74e04d7d7bb5dbfdd2cf7f4f94322588c8fd88d4791fea5d7e3ee72513786a61f9199188a25c5e5eca949408f352a680a2cc4b99c289319f923245479cc15725dab9435fca9417ebdca13f2710faf3654297b9433f2644cd1dfaa9b065eed087095fe60efd971066eed077095373873e2a8c993bf45b426eeed06709b7b943ff148ee60e7d3024cd1dfaa6b09b3bf44ba13777e87fa1ccdca1ef853373877e17d2cc1dfaa4b066eed01f8536e60e7d2eb4993bf4b7b03477e8dff09b3bf46d689a3bf46b08ce1dfa1e9ee60efd0e59e60efd970cf5593771c689c52c8f60eaf3fce92d151120d08fa73f87b6ed5daf16d1ad7dd7f63e48a477d9d2f7e9a3d41f3a957011a4d150e9a35422c01f9ab31433c77f8a43a5112ee25444a9c70f016e7828caf6435fbfbe5b3c64edcb4d75d916f451c243a552a9eb19add14ca52e5b4667a0939fde3ae1a1d347d97ee8e435adc952875d3da335fae44f6f91f010e9a36cb88828b448ac42f3531c2279ef8a7990c8c7cbbbb81b4fe4437cc1ae97277de76197f7db9b4ad855fad3db7e9a900810883ecd8fc2a63549a98eaf3a76a3638ee3b40c49619119725d6be95ac3661a46c32de421ec099bce66ada4354aa3e4cfc81885e974c3a86cce66d9b51e3f76cce257cbce8fb4bc93367de5e37bbe20b33f8dcc5bf5d5229e60a0c520a365b7ef82657f32bb15a5b7fcb3156f9930e95da67701799d677deb8354f0bb77f1f81d9ff3307c0c4fe403c41b27f32ef05d39fec6ab7ef53a9ec887b871987b57f8fff86f1e0776c160170b7671d8c5fdf62c0ff338df825d33d825835d2076815f5fe667bee563b02b855d1f7675d8d53de9bf4f7dccbf60970b76a1b0cb845da63f3dea5dfee53dec1a61d7c52e8b5df64b7f7ff4defbd3b002a017c2400b6390853ab4d0072cec418630d482c050cbfe2e610c65abccfea850a7c6d2a9657f53e823760a7bc080c4b2bf0e2cfbc78431903190d93f15c630836196fdbf7087cc21b37f17fa9091c21e311eb2ecbf2396fd71c218623862d91f268ca17653cbfe2ce14e0cc77cccc21ee5f728b37f4b18034c072cfbcf84318431d0b2bf4cb8030b61d91f0c7d94618fb0ccfe37421975c19414941c48630434198d842d010660c8c088274800434da746c6d69082194e40c3091a398b81b603eb2103228331c8c001152310a7587ff411032c0a5ba8220b2e9c118538c552e9c718623eb0c10eaa10c30363d8409ce2e954c42886da0fa820c18095e00831718a24d209177177625a884208d058238a28c4296eb808dba3f42964a031b3011632718a15bb4ab888d3ab452cf99865ff2c85b75cff6a112b89e649b52645b201e2226cf0c24c2c62facae66da88923f723ac0048c9aed6189369969d26db6664ac7e6576af25cad2ec9bb0cb6734999d9195f49e2cfb93c8ecbfcdb2575bb3b10fbbbcf46a69d66315566926d2ca62d93fe5b0af761766abc35cf5c26ce92bf70aabb44b5a9993b0ab9275666bb63a6d9391c86f06ce40afd5728391685ff99160b5b1cdd65c56615fa58156562fe931971aeb6a2d654bf0c21cd6f3c57bdc56ded8a8e6038f9cd7612f66048be1645bb79157e6fd0b7671b1adbcb111796b3df0f85ecb368a95d9df2bb33f2dfb0826db36f2ca76f0986ac1443ec4993bdb622f23d9cb56e3663398232f6d9371a392237de597b671b4517967db68e3661b6c14e36eb9351ec13ccef28b1babc5902e314f6666bab2d446bac03c99b28566bae506f362236eabddd906f3a91f3759cb4c372a7fe4682e3b7e8a28fc2367c2303d663a310e669a65ff323bb733d391c570dd0f1f34954e399ac1f4a0713f6a3e6a40c8116d87a6fa41f6a8853f603ab3514dc707b953fb01d3998d6a3e74f04e0d0839a2edd07e903d6a3ae568d6e347cdc78e0e57fb41f341eb31d38971b0d94ee92bdf91ea62a419a9ec6a5e99f23a923723c93c9a07eb4a528c5423c1bc9a17ebc86ed6c1481fd9d13c5907237d6447f364249857f3621dd9cd3c9a07eb4a528c54f33a923723c9ba186946ea6a5e7969a42ed6d5bc925492689dcc23bd194946aa751ecca391621dd97931af46ca1d2c77d993e58fec4864c3745df720cc54966aa96f568a755d87039a4ab496af2cc166b00b8499cad2378b994cb1d24cf5c94a24292bd1be12cc4433c14ae5cc17fb6a30a699a924fb609fc944963ed867a29960bef2d2f7996aa65869f6c94ae4370361a6b2542bc54ab0af044993ac442bcd4ae42733d54c3113ac547eb52f66a265996996ad3091b92cc9b2958ff6c12616992893a712ac813116180b2dc75862a7d98964a981b25309d6c0180b8c85969d68215964271a589e602cb1d3ec44b2d440598681b316184b798a9d6a2719486b89b1902cb3930ca4b5c458489619386b81b194a7d8a9d642b2c84e34b03cc1c0180b8d05762ac1da8904652c3596d86976a29d6060d942b2c858ca53ed1403672db01e5a4baca70c96594f8d85ec49e324ebf902a44d32f2384bd917d9bfc78a1e196a86225b642e31975acfcc4586a2a1602de50b899aa1c816994bcca5d663e505e652a26a2d3354cc4586a2a1602de50bd953b6d05e622e3394cc8544952db517990bcc85862a5b6a2f3217980bad85f6127399a1642ee40bcca544d55a66a8588bcca5e61243cd50240ad652be902e32140d5543c55a662f3097d265e642a2642db497580fec45d6e3840bad27e602eb910255f610b5d47ae4d1065a4994fd6d28c3065a0c9992c1d05e4a18580f19932a616a2f30b118322583a1bd9430301bd28889a56629f2054616932a616a2f30311b6a31b2142d057ba9c1943165aa968ac19030b39832554bc5604898598c2c454bc15e6a3031b154ea8506a3a38c21636429185a079389cdcc6260a9b283a9c9902db2185a2a969ac9a45a52b08729532fb5dcc5c8ca9812db60e56d98a5623c7e8a2cd8862f6699c336580143da00cbfea30d56647f1b9cf016cc5b1c27539389c1c4cc76cc9434301b64de9a659f21656439686231b49a4c2c6656d2c0a4f0d60d1a19cc0c6d06c6c5d464ca1b8fb16b664686261643b321e6ad1be14a86a429676a37646633b150862603a399cdc86848199a0c8c663623a32165489a72a626331393cdd066603135999b1f6366b032472d26230b7f8ca1ad6862aa99590e3207ec864c8913535bd1c85433b49f22fe71a69673fc1471fc3813dbf1a3cc8ca42957b8861ac6af16f1e6479a990ad790068ef0471a3207b681dc3123b38188e54799327ce53230541e6b28cbc8fe3558f1160b7eff1a4a6f712cdc93d96b643434161b339b987f0d346fdd70dc0e1bb41b1bb09ad2464653fb1cd86583ac91d1d06636315ff917de0ab91c36a58d9a0daea666f63bb0cb06cd4629a3a9cdbc0583710dcc6696c38684a9b121c335b59a980d0d061ba50daca65613b3a1d9286d6035309b990d5943b321f395db94366a366ac81a1d3fd2d062366c9035b29a92a676c3466683660366a3665643deb0296dd46c481bb2ffb186c6d5c06ecc6ee01a74fc6843abc1065683ec6d943558c103d7d4e0444d8c94471a6a353891064c4d15b6d8d4be7c4ce2b20698b774741886f364487278f633157685a54dadc4242e6b20f2d60c7e5838533d2d8461d893219efdac0612e63f8663ab3016d26042d9cb702dac6159287b19ae85352cfb8fe158180b69f861e1ec69e19725265bc272c6a636433e9e71b016b2259c853099c7b4877138d612d2f24c1893f9dac76898e1e0578b78e3475ca3e10b5f39cc8f584603edc7b036836928e3c7504683155ff9cb6c0eb355f4bb39679ddf73f69cbd95b629b522ee24c8ee5b7607c27f9c34245e99709f6b34c184162d907121055a101d27bb2f6182ec9b2d32aa56d8ed5a9ab57684016b8562008513d6d002952d9c6103d1de646baf2c41668b7554ad2aa2c4acb3452edeb6304e5ef346b33f82579438e356cf3cd81fe7ac078b1b30ca80948a55ade2418b788bb34f93ad3565bb826c819075b62b379852e44a06625e112068488a784b75e50447d86beb8f1e529e5792d042fef2bc9244189b7f60f4c440095fb53d5fc4c00a6b7988c10ca7eca1013028c3dad1d6138312e47c048358af260ca4e0c00c084979c1195b286108547c2007f84a1261d8e7ec66377bed6d5b9f7e0f958759898421eb5b10ba1fe804d1f9a1e3ad1e2a4a30ead169d4cbe4e9031ed4b8594f6156baa5610ba4baf5c8bab0f5502165db6e180025ba4f574c408200f41cd1e21360eee92c50d0854a9ac0d9cca2ea902419a5e705b56d732d7a35b9e8d5f422f46ae6115c6276610b4f50614a1342080114c22a451be6a1553dd4ef81871e1ea4cce0034894a08a2c06553ce1abacc143f3304bf5bca00c983cb310c119339a5b141035f182210c810661a0c1c5086c5c3022c2066870011220c84209a2b0c5086c6c604404a2347660852f04610455a030418d0d1a548111921045e145196a80000444343bc0916759c5081af8ae30318b40748513b480053f00638b99236460850b37d880ebcca84e10b6d609a2f32388153adeeaf1810e6ad7379500ca0060015421eaf1968e0d99fe7893fb76a7727f3867a061c640bfac5296eaf6fdcf619d56e9f4b4e08b6dbb61005a453370802ac6004194137031450fc496c9dd5a287183dc02c03d5680b327003a3f50cf09a08a347c35b150e308d9e669a50aa23cce7296e78d10476f0884a85949bfffe85d6bed757f0ef4154eb5ea0f90802229487471e5095888607e31b9a7a70f7a40851911ba08638a26c4e47eb0fb4cbb7fd04d1c4ea6d402300c229595d066f94a06d0e98fdcdfeffae39254dec24f067241a4b2ed7efaed0085668a2b0e22952d56521f83cdc4120cc06a10a3c1112df8803872a93c824b0ce1fee0727996547c808a4fe1833a85166ecad30758ec206f796ad1832e985a74ce1d4c757a73b18523cd1b5d011a5232b5e25b0ab68dbecf993333996914356f8d03cddbd3eb51fa743ae5a6906dfb6da394bad7fea6b8b3ccd554fabc8e74e9e80ee162eebda94b6172fd3aaa727d9d1ff553f569eae79acab5eaa4eac7d47b5b58ee3ddd3b04bc30f5de7b6fccbdd7da7b5333a7debf78bc373585d8af1f531f6c1697abcfb26506265bb17ba51cddb2fdc7b1cfd9f72c982d97ade5a610faf647967a6f976e14d36ddbb669e98703c523dd629b4258b2ddb66ddb465ddfa7176f1b3773ecf61b1eb78d9b42eedb1f4d212cf6ea7864743302a0ffc8cd528a34727dce6bd7ae13a7fa60ea1e32670ead15cfce9da7a93473fcbf99e3efcd1c7ffc438b6815709653c8c03e2da359231d23fb531a25a35930d91f24233b0bd0c863cac3c93079f4fce9378425cf99639f8ee1b53cd22db213b09033852a643276a056c099e39f03b5024e21f6fd4f53080bebca1462437a65e67ca703c38e169e0a669c71051da80f9cc0822632b5926d0ef41b32819077a056bc5a9f9c664efd8ac76a85ce30f37c1ac514f2844ac9348a99335fc8137a65e6cca750d8ef6f076a255b28b2b53f67c021b33fb53285582b4fadd0199accf3e91653084b9eb8340548ade411cc2a005f68ab67054f98ab99fd2765f5ac800a5335f36823d319e49947963c823d2ba04dd5ccfe283a43cf0ac89831d814a1bb9967fd643e30f58130df0782e0bba2d87c984846fc7efe5b1047b1c1aed7e7f21df8afd1b7fc7c1a1696ad4a10cda6ff50de975afe354ab16c0eb2ccbceb3572fbddcf47c5cc6c1bfdd7f7332c2eef7aa1deff35fa520ccbf6b5fc0bfc195ca5b77f8dde65aafdd24f218930d82553c255b87fd9df62586648fffabe24f3825d2f972f7928fb2fd0e55d709553c91bfd0b7c140beafe0bc45528a66139611488ab98f0b78a7e09831fc6e97f75dfe12a24ec7a8d7095209a395c719597c5557095975769698b4257bd0657141b19d1ebbba65cd1ffc7e6b50d4174ec9a5212fd895ec4fa43abadef8a62e3f86dc5516cec13c988327e39925702512c3f9f66b37e39925762017f7eca8e36bf1cc903ffe582b25b37f2cb914adecf076bec36fafe85fa8ec62fe7fdcbe54951d4ccc4fcabbe7f2a85a3d85c9f89c1516c9cfb97cbe4024ca491b1dba833fd0bf5dfbba690c4191cc52626855d4432761b3df7ae57f7a477bdbef7def5327d096479f997cba3def5ba6fb751f7994e2eff427dcbbb5edcdb6dd47da6967fa1fef4ae17e9edbb5eafd28fdef502bf7bd78be5bf77bd5efef42fd49bdef53abdbfebd5f2f75daffaa47fb93cf712e234907e97b03610faa8f01b487f4bc83510fa2c214d03e93f855e03a10f86a906d26f0ac10642bf14a21a48ff17a21a087d2f041b487f17a61a087d52e83590fe5148d3402890fe2dfc064281f4db10a78100a1efe16c20fdaf193a32a39bcdda7ef4f351cdea7e7e8aa659cd027f3e4eb3784c21e1cf4841b054b2b6eb46a36debae4137df67790f7f4e0ff4f33364c88fe97fbeffb1deff90fe87fb1ffbf775b0292ad24166c163c53f365064f2098fdb10b2e31f9ba2f1874291c9a6ef69d084c7ffbef4e191c6c3638af41d098f28ee47e0fdede2d1b3dfe18f4d515151b6788422932b1ea1c864c7e3926d08b97fac373786f29229c661a135d6bdb76a7ebe009c78cb7f3e75c25b343f9f96dea2a49fdfe3add1cf07c25b3a7efecfa75678ebc6f4f38378ab64e3e753226f793f9fcabc7503f5f375bcd5f2f31be02d969f397e3e95c25b608ccdbffc7c1af31696c1239765be439ad5ab1ec7dbb0060fcd7ccddff006e76f3efc2d7c3c7471fceab950071e6afb3abe0b6fe0a11be1e3fc17dae8b7cffd29cc8173fc7dd5bb84180fdde0bff130a10d1ed2e1f2dcc7844343364f334b296659e6513c441b365ff3a670c80653d9210e7d6ff3334f9ac1544ae23f0d1e8a79d3d7602a2ee2d0f6339fa279d493be251ca2417dcd976abef4284cc5c5219837fd281caac15472c4a1d3d7949ef4351c2a612a348843dddb9030151a7188f4334f83a9a0c4219aafcf120eb970984a8c38c4fdcc37a6c2894334dfef3a30152a0ea1bee65d30952b0e95dee62da6c2220eb9bce95fc2a115a632230ed1bc55612a38e250ea4d9fe3bd702807a6421287582ea6621287bcb7791c984a1071e8fecc83e150942121f106a692431ca279ff10535989432f6f1a7df8f869388483a9b438047ecd471912126f30951ac421d3dbe0a111ea5b9ee54f0f3e152ada3cc6545ae2d0e867f0d0cc53a16268bfbe7f38448387a85091e66d486f231c6af91a3c4413f3a987f99777792a549cc143434343a62ffdf7de77dfe332e1abcc31e1f4d5fc54a8f2d57c9890075fcd7f0987f0d57c9790c67c351f1572be9adf12eaf86a3e4bd8005fcd3f8594f4d57c30a452f86abe29047d35bf1406f1d5fc2f2ce2abf95e48897c35bf0ba9cc57f34961ca57f347618fafe6732110be9abf8514e6abf937a456f86abe0ddf57f36b28005fcdf7d089afe677489df0d57c1ad2d257f35fa0107dc538b7826e8ae0b462062dd3079b35a65234cdf24ccd98356a005d2703f843679ecd9a2397a7b7e191cb9b673f1d46230fb9fb3072f7b3ebbefb0ecf9943b9908ec21c6618138b9977986b64fa5e0e730979c81c235312cd1d299cdf0d23fb114028cfc9a37b1a8ee1489ffb110d67be61aac6eeb91cbaa7f7b91d3a4cc273aab89f9f0ea3a7f3cba1e6d1e65be87f831c73ad12ea688d55708edc298f2013331e9e98e20b4a4c81c4144db460032f575070061454781c106f804613513801d98524b85c498108a020c14b9e251457701f9071efadb5d67a2f145fe4ebe57bef1d71df8d46a3ef6995b778b8f75e28b6c8f76bb34af93ef7a851947befcdf75334c8d756efc1cbd3ca0cccc836cf1d9466e45135a2160324140a35799046154420831cfcc00428408d4c80012a4e10b3e28a2129c26841c30bb94752202d81462b82c4cb130ba22ccee8264d0108467141f7a8d3038f56515527b6631d55ab6c370f94c8fdd57e3faa59f51bffc5b5bb7f34cb56c72800fb2b0e0272b9a77b9a072932fd1e9a75ad096a1c8b163df8628b5a64f4c5b7c4901a2ca10a1446d84213acb05cb14591920a5e40a31541a202a2fb81ae662f4f4ac5542be2ad911566193ceaf3d03da1bbbbbfa7bf8811ee5a2441cbfe296fa7d18a20a13060c1141128a1046704010bf144832a649a1d070153b9a7c13caac03cb3e002096ea778c23b608017882185185088c20b62802af8800a40d08dcab34c011ab9cb130ba2349a04fec3164a30664be08014c0104d7904f34c51276048542590c841184350011333285d911df1e559a26028737962a103306abfbbbbbbbb3be77ef1cf962b56e2dffd4f8486f877b7854aecc523b76df75a5babe7fba3df1f3b872d8fbefec6e151887e8fdfd07e1a4d3f0eff6c5949fd2742d9be7f43ecd7a7e1b8d12920b703f7f433874725dbcfefbbe16b9e5b38f3cc770201a7955a132c482277d5a3b4a35f0ef7291e95f8f7df57e2f7e9e77f4325db673115e2e8a5811523fc80438111f526cff2044ac8df10609b9d4235c3946779822c2c13dd38ad8c9e8eff8f6e4d9e3c5f35813aae552fddc49974066f28cf9f74d666cd4c9ff3308f3c7fe2d027b0bbdd8d93a28126bc6842156863e800085f195bc207eebdf79236036d4414c6b8e204114c3186f7022284a0beaa55f4755a556f1e51b9a70891600806600c915185358e20f673cdea727721c6951764c1cb730760d068bd339833550d469db7717ea1b3fda8e2d12a17741b96e27e21d8689dd2f9b4d24af58afe6c5d5a05e83ffec87349aadfbf36ab598dbd56d1f7df422e9cbdeaaf616be4517fbad3194ec5691cb14a571c9a04c8c306fa3e0fadea6ed88056f5d02aca83b754bea2ff5eb6a96ccb133491ed570e85c72538d95e5b2906c039e3a159fef47b7056e3973cb3e0c28c5cf32c4ff08149cbf346e8522732e569c50556e6a752b351f6e97732805eab96a46e003d14aa943ed1fd73c6eb53c72d44c7ddb6dddbbd7defb66deeb6b97abbfbb6edb6b76db7b53a79aa5a359f54eb6ff7dedb3dea91fba847eea3510df2aedb765756758e6b8e06d52affeefe99e34fa380fe7fbfb95abbb7de6add7aab75ebad56ced6daf8de7bfbd6ea9df5e6d77874e5fec959afac5a7b865aab90db6157addddcdd396f36abde5adddd47a377afacea97661b5112e992dc9df4e950ca17c7cc9cf9d6ddddbd5ecfdddd7dfbeabbbbdfea71df77fdd6fe2a8bd495bceceeeef75eefafb2aa7b3d43ada54b83a9c9a35170f27c9a564dba5dcb95523367fef6eeddb56bad5d6bf576afb58e5ebeb4defaddb5d6dab5dada6dab6d5b6ddb6adbde1eefaebbd65a2bab7acfd06350cdeeb5a2e6562d674775546bb5b5badf5a6badb5d67ab76a6badb6563bf311dd6c96f7cc9cf93c41baf7dec3ee922ac9bf559e6a95fb7bad72d277e18893bdbbbb9bebbf4feaafa4ee4bbaf7de7befbd97fbf1de7befbdf7de7befbd97abadf2ea85e3129cdcefdddd7deffd91278f56cd7bef55b9bbfb7577779c564d6ff7ae2cf77b7b867baf3fbdf7de8b83f7a3e742efbb5bbfeffb847cf77eee5dfbde7baffbbdf75e777f1269ab3f5ac53d8f56712f045255e6fe5bc53d4fe6fcde7befbdf7de7b71aa555c57e7ccb9edeeeeeeeeeeeeeeeeddee247fda5ddd6b37e6ac7b87a39739ee7bdafdfee83e84e6203387237947aaac9e81c47521291c85e3129eeccf7577777773db7795d67c6bcfe07e2f7577da786e9bff0efe4aaeed462e53fab47adbfbd4fde2fae3fd79edc5a1ba4f8fce40ebbaeefe0c474f31f773befdfadbfc1de6934824128944c720cf73dbe6dcb639dfa3dff6a3b5d66e73629a56cd47b56afe281c3f4fd0f3b8564d6badb5355b6b2da5d45afaa3b5d6526aadb51473f53b1b8ef6a9fdcdfe0ef67fac2c5b29a5d42babbaed4cb91f29a5d67e4f4f21dc8f9436672daead9a3fe9d31fb96e0cb299fee4a80b11941a5487d0ff9945454135531c63c2e3b3e6253cb9fe4c6d1efa35533ca3037dfbb4e2dab40494e6c64e8d986fbf95d86eb2e8e79abbb2aab71715f50cad0488e6a0cef48b329dcdb2f547fb9d0d2909d26c71b01dd43664fa4e9d09ddc4196d3985f8d34c341a4fade9abd13a91fbc7983c9fce96257dd59408707a1e8eb4e6fb1b6293fd69f8436968fc696a42204a1346b1bdbd010eaec8810e6c5049d2c5c5a05a19d82aec0c2c0dac15b60616f75b174c1e22ee05938708944d1ea214159387e8613079885455264fc5ae28930857a8d16fa1983c52a29844221d71fb29514c1ea22ac5e421f256307988502c983c4434534c1e229c164c1e221e26983c44dc09260f118882c943944ac1e4217a156cdf6f639367c3ae2817236183c861978b14edfdd1bb284ae41e091bc40ebb90b041246197500bb240a2621711433620a2620b1914892e246c10613eca1665fb28dbc5d55ed2bbaa4555afe2cde55f2aeddb1e855d3a764682dd7d12764d5a8ea6f010b98fb2bda02002309c90e20b0e88513617ec927a1255b2bc8b08256e4faa33d8357a19cc438f93537d10bb28ad44b64e59e35278f4f2a07f5c0c768d3e85298c76398587b8d58acc1979472f9885348ac9da05bbeea370d37ae634f655985b16cc05a6b9a8d4489695468ad239a60c8d00490000500063160030301c1a8c05535510a3f514000c699c7a66569e4b9420cd625021640c1101010000108108939800762b4e8a620942f03609777cdd5880fbf616e2cf941762257fa9b86e08a784781893255c40bfd49806c902f2a0cce1c7329b12fa0002baa346e90620f189f017bad630ef06e06bfae09c47257e3fdd9c063b2e677f3ac477fa1aa8ec1d94c323ff9bbc5d72c0b96ea0dd784836397bd83fc8f3a89b0e1e1c610f9ae82ce35fb919ee342cb9bff3492e2a71acaa58e88c7fbd68db670ae39e1c70a5a28db1419b5ae853bbbff30e02190a6e30f028cfc57740c978f63a24d2d2d21f38e796f37ef7cf5b2fe14fa830777a7c411865f4b3461afd56910eeca622ab55a69b00b03e810585ea8de02c6931b0a5ef4f935d03678563ef2e8d02794bb31dc77544e1029c70ed37245c42ba332bf8f0747baf410bf507a4480a9ab89d12829e7fe9442807902459a9ff81df3ce17c6ede03efd3b19d428eba90c7f1cfe073e59bf5911bd68f3ff07e38552c69c4a85625b0f139ae88148f3167c03384b2c7507b31b138f3a44faf20497fa247da13d119e46f96a77e1f1ff579748d06c84f4ef6a00e6aeb36d4e35316ec3391c71a89b17997c0f227ea468fb7be2e0eb822aeb439649d58c8d2c343ab7ff56ddc1c9afd53ac3546eef3a4ca2e5e6edc325b20cec8d94f4505a59c7f880d8d6dae48a77b75e1465de5d5be94e35dc310f6131eb243ad3ff04cf1486ec697f88262e17360473031f32615de75e3216b445214f7c0a311f3dcc9bd618d52fff008dc90080150992e6375f950fb3f7b0bb9b19fd03fb871470f758e165a5a5f3d9c968b4224f47dcde39eecd05eb594313483e318ce54754b6a04a623373b701f0f8aaf99082fb3982b80fe4cbc360bdbd6c343c91b1b62b30c70305b89e2de7089b4ee384dd80afb233f4eb961e1c573ab5a18ca4e66285196bb5a871b06895f59cdd34a55e72b80363a13ac95b748a46f12842070f88ffa09bc67c4e6b758f3f604eef7a19d7059cce5edc027460b846de77c74d6f6eefe23a8c62df0d8a563e94edbdbe65ae045b2092fe5c1d0586c2ced5d8f21cdff8368f115382b8c8c5e2ebcad468656c458656b7466934b6427b8e7745ee3460107c0c7c0935129634a7ba5b86be03ae5202aaa7190c1ec12155ba7f809ddb032871b2cb0b994a3bb4e7288afe8c4ba72da7d3adcb7509066d9cf594021df347d806fad004e00c2ffbd99b85f1aa304c82c74a78671e99ea9663ae023065e962b60db0f96f92f0c16f5e99bf7604338add35e3d6185cfd994b613c5ffc287460003c59d2bda2b56244fc745d98b2e49c2477922404923469dda9c750e43111a13564140b041cd158905ff8510027f5b992f8f8a1ac586962fa01459dfaeca2d93ae081c1f011305709d28a5b485525cbeb2622b51d845439a42ac5c8efedbd20982ec37afdeabb1289051afcae2c09259a9fac99a1be8f51a130e9e9eaefe342186b39a5b40a67ef9e3aa6b9ae1840f860307cb470a063b94f944d9bdd89198d9624f1b514db231bf5d9c2c03e5922e438e52a4383b9d93c4a44eafc04fc4de76022f3b259e67262d61a3c5d94909372424df5ed2a1c01531df56869a38f9c333e9f86f66fbdc2d33f951f85a2c801f4ff274e0ac1ea5b8d0b85b42ab45ef41a34faf0a708b2380ec4cf58c3e4c70e47db1050b844ea905ee39c20e145cf487cd78cf1705267a4b10756f876f0e8e6065df7379b17080cc43d7e2d8d6be7bd6e3763dd4849da899517ba62b99a9bd6d7093580fef49a4bd8ba10d2f31b577358f1e1e2d3f801edc189c8761fd8e061a9cf55e13c260a0dfcbe47ec36b069842a0f057f780d3284c1e50689adedd48456c1f0fec91b4e49cc0d34c5b5401c8e889426b2146703abe5059aa714bdcd04e507726a8895dd8a857967e7cd466810e171faba0f4395f31986d0d8836108be7f00941cc406b4b4d8c066b5451d91390cf5d9015c82ef4a078045f18492e16d74b8b5ee0e9bd01eadff22110e53a64f50ba60153132bceabe43cc6cad0e07ab17a627af0e88d7e6e2fe0dcc8e48523560dea5570d595b50f3f1cee7e53a97760529cd3e1af0aca88db21a7960209ee4a2ef4f28a607171eef16cf4c685827689d358b36c651c9d11298661d78b4a8fea01aceae4e21ca0987585387b520773569fca1d363dcec5787994747c979c8d6077fed88b1a43374c5e606fdc4fc6c9579a5a632472d0887ca431bfb6c29d7c1ebc8312e1c4bfc5e995e2c0146b6ec00c875e6896158921c680a9100c8441bd868dd314961dfb2ddad9300e65b5618460d23ea5291d9163de8ca4b4dfa190ac57692bfac6c5bacb4ec6df336a255fa1c13404ace66ae52785119957001c53579bc36a01e12e47b8c8d527c2a8f168d4899420ebb93b0540e1f2138884cfe895d278d62536d0f153ffea007e2755bdd27d8f139837fd1e04ae2badfbeb864bd0011f1d33c1bfe21cfc2ebcb900c44546b7e28efc1ede401de1c2bf0f07e64d8c927ed4f4d4cfa1059b11db03ced6e57bd61a1098761ea175b4c70c46cc830164fa8058cb1e0d1a749c9ad7385187243efcaf4b8d1e3e4e64100824735f2511647b2837a0709a23e05ba3044d3478c9909c7a192f9f2320579312b6fae82366c60a20f610e2d18331d48df9253b264caafb013b9e99d88656863ed06c12bd2813539dd54dd056d1ab26f5358d15a019fea35758004d01b99a13187f300145b6c0c26901c234f849812b83eb68f11e776ac5518e2e25dfc06833fe2a496e999027333fc482cf91a72740bd1e245e824a18b3c1516777f304761a1a97971822aa884fa2fe33bb0f9d178879c44d0ba737549e9b16371eaabdf0e6018bb89bea9158d1672a067770d67e328921d721713d3d1b9dfebdb18edd3a258bb9d2d331ff4594a793a7b2b8d7f159d2d1784f56aedcb93ba283bef0083f7d28e2ee37688d579edfa876b90990b9378add8395e766eba675a3f53782decd077e1480a80d9801e93d0707ed0289f18db72c2a1b608c08a9e797d7fa753faa89ef5995d1be8b91c3b9992c91b0916a4870dfebff64b9a68929ae438bb84e66eb2cebf24dd2a5fba9f14be993249cb1913785e7a1ef24e894a8a8385ef840332edf62f57ae77def2b3a744f42ef39cacb8d5017e7c54f6e1f2c6464b78d1cf0800980f37dcfbfed71a14de86aa0eaffc757382a2bedcb5eb4d944b4a94a2a77c4ce6cff981b882fb4b81e72dc2ca1972be1b6ff4d88ae8a41b5d2d0d15301cd2cf82d45bf42c9d9a388bc94ed3393d3e9924f00a274a066e8d014adcfc32d62601c3c06c46ad5f4bf5e40a292fc42ca862e3eca2258d6bb707dffcdfda7bc1fd8efccf2df699c80af4ac8ca8a0707490c143517b14463805d699e540e626e8300871144a0d58d2063e765bc066189ba3505443e9b62bb6631e6833083b3fc6f34b948a80cd810b9e8cb4984d308846a913ae770cd7c86691b1abb464e5d83f53c707820c4779a2afbac1ecd0d54a02286c5fe2c44ab6ccd52740c7dc96e8bc8d7f99712c7b0483b3933f7ed028396333df0d0edf3cd2caf00f7b6c21f5b3a4520c0cca71d1749230567ed67c2e9e31ab754d06d89013aec38c1b8a432f111e549feacba7be16694510d690f40cd468c2a42b5e5946d6ac979993e6aa16852ef312d4dbaaf2eaa13f03c7f2790cc5897b8baa7a78b7dc02dc856ce7e4f1945cae6ff8b4a2dabd23ae7501339e13fe96204c55fcc7b38a7ee2e9c86fc7b80965005c99db09de8fcc68dae29116ce9c82b1a9a74e76c34732d195e73f1ba0b061902235582e8d7805c745b0017b28c229b651aa0fd9171570c19353e0276d4df3347ba8736c491c400039452a2a5c19728162b8ed0fa55817eaf94c71bdf20c94ad641747a13ad9c18055f275118d47b3f6de4dbac2017bd7dcfd56d45019c7b2d340746f01ae12a5982ba2602112acb7a7ff868ac526d41258d549a78ea8f54584e59de73c23ec12e5eac397a77d0009780d4ef006cadbf7de57ebfdd00fb3f7b49bda41fd0f87783e9dfc8bd1f08faf680773394fbdeed4f2dd84aa50a07ea864c3a781aec5a6b400d4bba8fa2c3351afef255a1971616a15bd3931fe541a5510c8e88fda3dd80123d716474a575683a40cff706908bd6557cb38a90f53d5e45d103b0dacad59699c47d3706dc46a590444aad6735da8b8b4fe5abbf745a17fa651d0e82a1aafd1ac52599f8888b8d6e3a9caef349baeb9ba13b103b7717b5b28bfae886a214a8c0f82ded0f526b5d5acb09a1b846381cabbe75a918c63b0769aa5e9be7d410e80b995e5c0973e98c6e77f9b30a3b5441422d622de5de29f2e60a4c9ab0ee69b6acc202a984f6a8c3e7ce7116995e1891a5375749eeff96f712cda04e647f65b412bdae71e96b4ac635f9f9926fe6c0b03f201d3638997a63a4b2808803cc47f36871aa720e1acb3e02b391e50efe4f129507ff83ea21eb8e074b0da2d15a6df2c7dc73fe286a5607fd05eb9605ed78c392ac3bdef93c0fcf8efd9271ad9f2c9a933cfd11f16e187b9183573500c2d2b79ebd37c43fceea8276a682b6133f3f9165c4658e12908416e15ed067b34caf23ad018868591cf48d79291a85ec54446fa1803b698c7e8a0847e8be44cb654bbd7ac1846baec8105c8c127eb946f5c21a2970eea7211423b30415fbd3d8fb6dfcf2d72d6e7ebba18abf075072afd4066ea81f8711d1251e8eca66389be7bc714d1dd8a42ae26ce3cb41bb132597e6678c27dbddc59656e8f12434dbd3cf5a08f855bb9ed8e75addcbf9cf48bef5d98f5a4da99579c9666ff3701da29ae29a480c96b21e74492d6a2d0bec9e21a0a4ea37852a6e1f49d57fe1eb8868517093e60f7ed0dc95ec77224547095a83ce8e0d5bcf77190f89c6345f03826301da485aefbd281893ec339f82bcce34efc49027910d073f4e6542c851ea5a32fabb119193499c26bb65055c016c7e8945db3a83648c564fd98808d98e3416fda726eea3012afed82be154b3fe944f27b4797ee1e0c69a0876aeeea78c16d1cfe24678f01df4edf22fcc849b63b4dbc99ca087426d9fd6a112a8f5580b1a9c2a27cb6686ecabdcc4c39c0fd036d7b1d8a82b672f808eb43560bb04aca9ec26caf8ef7a328ea2265cdb2c54c88962fb57ab630ef397b9dcf6016a79e5eab221da312b29982a868e6d54e70ec91829c298e012439a6271116c66e12eb2c510a980c0c3746adda640329d19d0d88dd1dd896219cf4487b91cb5abe8f9e6a1f4ecc295f55f6ec9bd80f97149cced6e1213d8b1664b22dc08ef2367f8ea0b65144366f171d2ac77b403c2ad4dafae6e4a7d9d91221720a4f50834c9c5abbde05e1c7fdd3167ec1271a8c6cea40b43d4c98dee60fec47157addde969caf9c2c3dc5f657bbb98f31d8b104df983328198fe29caad870e92692115dfc9a4ec1a5810c70ba30b9024d421912d9183618d18a957f788fa7a3bf075d5c893ffb9ceba0c740231d60bc802296d58f922c2f25eeb2bf6aba99530d18f47c1718606d4bb7d98e27c9a13f148ee7f4ba720e5a8a1dc4ede008f839472329be568512f78e2b48f5024e751a1147982585a473b07eb17f1ebca3c823f4bb12b35b53c89a1294a537d0218655fb85c06d83af1058f5b7de0cd2958116730eb119d88f417bebddc0a083159feaf6298054850456f2b59887f0429a55c60ee9614e3df28f10a65b86eb123b63bae3ca8f58a39242690902784b36f3cac6053a9044f92af4e7f81b497140fc54e45e38c760c4e464c4b1f9e3cdd721a93d1c37fa1f82446ddc69e34e809b345644e173e0ddf111c5581161557684ab41001205b68f4023f43bc4f35fd10ada20e9b846a56a1bdb63aa213506575b846695309d77a6dbfb41da178b46c2da8e03e45c925535d58d714a873aae8a014ed5ea8fa586068d8a9289197c0bc1c770851b9029e72f644e5f20d9fd2b2c6cc222a7a1d4c19e2569f754dadeffcdd3582634154671e44ce3eabb84f9843de723389892f48021454be279a47d082c2b7c8f032461b36cc3d2f3b4c2cd10b3db563a163484fc0a4515fde8feb4de2b0facdd05551432f3df46990c81bb867b7cb96765da4e7a61a75bb80d8090eb97c820be985b8faaa3e43aaea2192a09a301b662821e52eb63f44703423e833aaf8191a72dd58d49223894e6f42fe58947b283e395c7839ef14bdb7ae77098534de7f88ee5395bb8180ad85d80c06a5c48a076d29cde8fbdf9692173a089d818fd12e2b78b15670080268636d662062c0c953d03393a23c695479d2e0ed945a65e526284fb4cd952215656895a710d4edf89acbc0c96e268a75350114aaf126f8672d070a3fb93cc6703faad1241e170506ba1b62741d3ee6a8b71c31cb5f93e57e2c91336667f9338255995f3e1453f2dca8aa927c7e45314a0d55055a8b550c706415ffc7cefc572cada8a7a0259d4ff87d12afc557f3fea6811214ae7ac20e68f9c187e5695d4a17a24ad91d146cb073f4bd34b63e45f73bbb93cb820e384c6ce0cd3185804c8807af4a88908c826675d1ccde64d092e8eacee53038f4b6d54c5c7986eecc8b842369f4fc4bccd051c371d641bc0ebe48c3d2b9694b084740da7b787918f9baf58685082362ed9214cc8601f21160ca97bb41968eba0212d7d3e5f98bdc2c9dd4f30e6c012d10fb80212153b0f4975564fd00c589c2fae919ec684c7cc0b8a98b84e94bdc425588d6f4b69c2e8e9ba90fadb451c60edd849f3e6137cffc1bb2b26039b8c0bcbdbdbc147c5547fda4c1d0ddb4499825a4e10081d2bd78cc01e105b0009e03de5af58a653a823f7b7645c901c84e402fea193918aa8d33c74bc30fc66eaf79129dbb9196e08d2056ef12489817b6b503225060268ddf6315300a3d46750071ffd07b983ba5cbc6dfb820103551c5210f96356702fd19c62258ce4ee4372489c193c68f7cdd0800d480f39f49be1f23e20d4cc41aec5158fe7e6f0d6ff17b76e80781e026eebddec7778b1c927d4ebbf47dbea8e783d6247ff038e730ba7cb09df1f657dccc3951d0e0bdc68b9edbc4b8bea006ff61575ad1f8e94f303abe74b299923426af1153aa40687f28a5fd64228e05548da0775b81735972babe5f183f7cdbe78cef6340c2924e6842683530c7d30ba82307c655b5fc2cc401fb2b9ac1821895d58828aa4068ff743c7c08278245a5990121236be054dcad86261770cb5711df218a2733af681752e38f7ecfc4ba8276b5995424de0f5b0c39f6be6b52101ad2292c228a11c6ddc77be74471d936d2589070af6fced2243c808c95dbc37434f6275285ca6cfe38a4487d4f57757b6ac47a81735abb4d4ec835bd56116101b75567ba233e1baf4a773aaff2d42a9096367aa5196717c4dbff05da0b84f38e17b5e882f4f98a2210dbfd4187e3831bf69e6daaab03217a87f5a8c0ee33dcb2222b68699bb132ca020f954ea749fbe8a35e4e9b340b5e043b630870e5442d7bc916a00126f3c59fa9b1494d7f80a3df9fbfc68413860ca0f693971288de500ff3c1658b45382c3c9390e10623cc20b85560da342bcef972b7ecc4a55bb8d5a24982cafb21d6b063bf05f69c47be0981a8c3d97d03d16734dc69f6ed867a07417b7baf55ba59db2d421117a333f8792f23e873cf50ced4dc2dc042cda1cb5300badc74a14656de07494ace52e2dd5bf215921fd3181935167ce58752832f624cdce328b8f9c9df1dd6a8e356015410b12e63053416fe13ebbb40de9e4e49fb31cbd3b4b119f260582e9a27f0daded4bdc555bdad88af3b89135a48daa8d9e9b28ba9f6298ce9c260ad778d6b9f1442467c5683c2ff50d89cac174573de6d57a740e552a2fe4e10ea641bc82b5d7d48977bc261070eda1208c9395feadbf47e3e8dc795fda549524da36173b9091d632b333cd1cf42ec8eae73a91fb3d804f08ec30e409d4beeee817abd7334e41cd09b52f1614ba9df5d9c3907eac0dfe759210d3e15288dbb9f4637dab8dd349f9563e95056c5896607774bc2b701f8ecb9bacbcd1e430cc4cfc6cfbc9ed8e6f4b7aa70df40162b606a57bd054b1393b26790a40d3c55509016017700d9d6a554ab07dff293f3a0f4d6d0bbe8e1b169ec81d2cd7548920287b97da678aaa7a2e9d1947cc1a6faa216dd577cf9c73a8cd2c89ce50d2bb2332f4b719bd5938a42fe49eecf29dbb5a67e1e87f3a990062582ad41bdce1f07a9505b16243e786181e931f6260f163da4ea45453163688da57aa5147c804bdd07f708d5bde4118d5dcdddaadbfd991391cef90fbbd23ec7863f4bda652df967124fd7c610f55716806288673ada5452c3bd7a67d0efd92ab84f99779f81c8c20e59a0d4c12a353217fb2f66584f6b49271ec2f602275d76df7ede2840f5abc35d667edb98cb69a820a03725a484cf68d805752682a15b067914b978e7005b5760b1034fa58ba6f1a03b8c4b2185c95807baf84471f917d3a810be241aa1bcb85e6db1d1294010728ccdf10b9312bb7e10969890e3681077648033fb53383a20f8628a596c65b1abdd803d91695725c12a8d3b06f99153e61c79892316288440258a76d096e14f95ea166aa142f1546d31e6a663fdf31b9d748ec10e8edaeceb894828e5355a12cc29a2cb807439cf1acf2fc2a5d6dae465067bbbc3fb15e1526c211203028534b32d2f43b9e6f76275ec8a1e3e1cf4eb5f2fed2592e2219b7f6d873d3dd88a9877b5e6d0845936febba0160b10843b3d77c8aa31e2086311272d5d85703efeb669456094a7b958b60f4a79b2483b24a224fb96d0ad0722058bc57c9e3f176d901395495713b15899efa036798138bd4bfef9f47683b8faf6916131317159a97d61f75f7e6915e8d0b444479e385f8c1fd329addb91eee6035e42c7d95e15c28f8d83f3a39d378550778b3e29a55f59ce0913a573b8a29b390761b35b33e248209a85c186102dd007e6e9c15143763b82cfe3e0407e59204bdec23f54f4025086f92ae55943da582730cf4c882408f67323688466f3186a416152823340996d041ecef4d1ea36ee06979a0f81927174622cbd9a41c4474c880c1748418053357f52b937c6c4102b15a2970dbe8c8f56471ff3075c74cddb3ab560f4207a86d488ddd1ac66aa7bd733a15acc07df74690cebefbe1b9dd7343d06a6f98099b02392cbd689a9284a0c40150eca19bc016726597b88c323424b767a3257231e3d0f68502c868e97160c003d93fce709a0c3acf854ce0a1412fa7db6e4bca8449b3318c381536d34eba7eeb17f400c4cc1c8ce1c4684e41402a2b98a0fbd51f7764bbb76dffa9bf8af4c9e3a7efbfc8958422a2f7cd91c951c5516fe7d1d598f8752fc9ac56cca001dbd746e8a11dd1e23e6dc06cc92fcf25501533ac04b15dbe00e89468b7423e647f5eb9bb1771db0a1815cdd52079023841355911e01be0ceb6e1f03e84bba05089019c5cca14a4e8da0dfafc650fb8aeccdfec223b88e8c48dc037f0fdc1ef1815bde1089eb0c172e81f82dfa1eeec4de1abdc8310a9a2442b928785dc3060bf7db5e2e12c64e0af0c92eb008ce1000bd2168a030a097d53d81e09507481febf2b5e92f47f54444cce15fcb4c46257be5ad4f88d608af79cf9717d426e610a005476235a706642ee1fc99fbde576acebb170547ba85032e2eaf1121f4ad8590224d4a4537a81da0204c11d6e0c553d814f51c2f3e3a823e8897955415a521d9cca31de82b99708a364d692b4050e92c2ee52022fb5264e87233ae27b3691e8b9f728c2d591480227f87f0cca68fe1f49373326b7283e73659e12ac44bb54a05d583b24cd5006555478eaf7f6a22e648c2dba707f0fd04aa41f2c488c39c1a70e4bfb2f720c0d601e3b2632eca5d897f374c4865e3fdee257940262c860c606c8bc27820c78a4be10fb0cca8fb9bae567a534c1a217f8e46b9eb15aff08999a5a955ca95e73caee1c04617ece2955027a69908d60a37fe622b44c01e454f549d68554a97caec969da04079a04eeb00084a439931c9f1783a698016a796ece7054c7d28f077e3ae3189b80deb163b78190eb78da0b0171146627a9265245f9bc732afd9706d24365ff6fb7148d0f49928c61d35ed605a270691421b8afb66c7bd57e7c2d2e89d15e89cb433322381271c944e1ac18f154acb0da1e337bc56a28d255c7c71efe415df539822332981139f0e87ce1ca17d4dedbd88d1366da1285882204a45ac259bbda662160c9bc69de4547c6b9cafd05cdd12b6ecfd89c9143568b1bb42a8535dfe3eb221eb69d1207d228fef7e9d3170551d981fe51fd07bb4d00a3fd187a0142239a41ee50ea1b0a2ad7e7d78ff7f986f6617e2ea61398af26abe14191d1d357bce7e938c991e6c1aae59a35b58463c8bc3850b792541426549bc2b0d7567e1da0d7163a0c8d9ef113d67a6b88cb522aca8b79776a493a5ad2831788cfd96a47a6e484ba5478a8c5fb35921da446b3ddd52f59c11aea982445dc98f8e10cfa83182513c6f1d1e53f93c71b0c9a70b93c1fd58cad037853d2dc0d2da60a9501af01dbb9a241435e9e8c59bef523180d2050c343ce4bf3a50fa3862c306b72581b36b3cc26c53c1ced605c8a4c9549a5b1ba715b489d47acd103580875abde50e2a5de692f1c9800881907172ebd3dfe3f43945f1cd4a96f9f77cc35e3b2179ef2fac12b151af72b71ad46a66c17b84153b72694f087fb6aeb74d082943e5ade263ac1f2e38ef74d66675bba2c351db56b1fe77faadf294c0748028a1fcb4105d68084b8fb19d19c29f10a133f8e44ac7d105ad458ef8c72fb48d847ec7fe08c74795e3bad523a2d084a7a9b0714c0a3795b9238b1cd2d140302753b377743fe9770d177320151441073398df4ae48479dd2d947516bea982491c8250e1cdc7ee6c04ff49adb7119575c173aee8c560a9a1278acea23e7ce584a3e78567f48720249d7cc4eeead8ba2cf755493994b733efda8904dccc1f2670f7944b38d7a2ebee8b72b8516824c877be1e0d88fc5108052d7b09bd8c6238f2e26febda6a9b246f2c952e622b7cbfd3eaddd83fc93dc9681c19e5dc2aac1a1bc99befeabece638e1b38ff8e20e711df1bdb54ab9b298158d0bfc0723efa94b63f8026d8e36049b5ab09a4593503dd9e4a0116227d336bf415cdf488c4527948a091a8a5014834403adede0ea9166b4032f973939d8248ad2c12b5a4d1f60c808901361f35823bf17ed906636ab30415e6079bd61bc01367b117c638e17e2ce6cb24b152d14731ee8ba1937e3d4bb6eb7a606661435d6db2527e61e2c57c0a87a6944c61f953b481592ec8d248173ddcf5fc19b24ecc1673fd9d08d0d03e1ba091035ff73729e70a30bd9e6002ca56de58c7f6719652ccc64058c704156fb7f3a2932ab8549a60c4f933b3650352f943aa0e6d8f0da64ab8e33e2669d165fcd27c6ef8c67a556258d0d0373cb171f791a7ba4eadd228195953c9100366f56909b1ea5977b9626a1d49c98670bc699be0c6366b63564c45a795c39cca6b9fdcc825551008618dae8f9df54a2bcbf6a79ed2b80d9beb9134a5a3903748ae758de4a17ca7dcd764b6283e187615cbadfca62f520bcc02623f359e444eae442773109be17ccd8cf5da9c35b75456f756e56e4f3d1d63e1845d023ecf3ad0ce2dd3384e58d21ea02f219841a7d00a68f62ffc11a24a9c24402b09caf09a056cb88eae87a0a43396cc751c232d063d1fd171bbcc9f2508819df6fa451aafe56bb7c0113989b1319b34439323c15d7829064245145725f29e8a82859b364427b93cfbbb06ab98666c25f9309e7a650d8bcf7b78a9274dd1a375f664ac50547a39ff2028048dc182c14aedfe8bd50b41e75bf7873501532c022398c2a64db2efa3767936fd4fb23b64a8ac035214a95142a89aa9743c039ae3080e601d94a3edc5846c9c64406c85049055440848a1ab57bdf3ba8d57e7d0381c0f9ab5d2c9070ab4369df8d6a826a513d242bd3054670630d13d751ca9453471f52911103bc33146b84a31d206d79ed5a2e56a9de50a9dbe87564586b0905a85e79abea7840d79844de56436f790617d4f02c3a7cbc2283349098a81b87b5049f9b24c6e6e9a76c12a8bd471cebcf88f2c5c1605536b2148741c24a0a6fa10684d67fa2648c5506747428cc590b1a04930493199c3094ce39facb678e336f7f22314fc5ad841f358b2ba3e293030f5532f430a47d2d3b0e6fbbb7abfd5810a8be15aad89d02e4ae4f8c361b20ba46e4f051ba7cb17d7814dd898243ecbc025a73861c1cb4131294bb70d1f395afdb1f09880e025954961eddeda42e11d036c94355c63a6b2eca6f801aab04ed12e3f518743fd416edba3cfabe68c2fd2d30d6b88551527b87c018a851d70f09cdbd3c1447ad04a7dcca716488a2ec67593d25dec481b24768887d89633b007ec509252c0991e3cf7b9eb780f706c7c6df37f18cae936f9d31b26f8aa0161535ae1e4bd900aaa8d3ad048b7366346f89a984d7129ffd8efabb9bf11e6a2afc71f6eea3f8f2029d6deb8d3a4a803647f59ce2d79247eee1b09670f22f40b11ef6ac2ec9a4fc2c26398d102b98d5876445cb622322ba801259932eacc28306c85c3ac85fb505e0e044424a42a03269605c33ec518d361640d052bd274b224632ea41649a96fccd3d5df7613f7df19b8d43032a7a633d854272133b6b6c28fd0217409183307359116f727c82af1566aab07583da2242f236cfe84d6fa25cae2c499c4fca05e90309ebbe41ca3acb05894e1d477f154a2d9e3f19a03a190d8197197c303ec53411ac4e79bce48dfb8042a6c9642ab84448ed1d341191392b7aa5d4569cefc3605bcb5b2c44eb615e2469be7a036621c45c6271d37916ecad92a9fccac86eef6a927c315cf733eb37586bac80036bb38d0da86184888950d74640069472ef5a8a897a686f4262f03e96ba80e92f08b3e175d6fd8091c78e7b4149a1c9a21fc9f7f996151027d61cd5dde1bf28bbec47287ff3e7be63b1ab94152f34282f3382b5b4670c3b67b924bc19e2b169fc86e3a7957c804f8f62435783be15a42d7240b1c9f58373c5956c44a63efa4d3f7d251ce534a0052949f7a118b3f420a83382ae2023ff19bae40c46f4abfa575aef0024f3f24b9f0f1ce7049c7d04b4216fc37e9e102342a41cac34687a98736cee47f1b97713a4146c4943c0c56d7fecdcc024102ba79531d9fedaf2c141b9bd8f910d4cf4a14d16a0c558279a3979d5779df22002646becba11eba53ba6d65ecf81e71594e839aef9e686a3a1bce05989909e6fbebb8c50fd0fbd9641e479835964eec0ce87cbf1649c2fc8bd15de39b97c8477b716db219537cdf7e9224a329c623e1da4a7a7b478b39a4a2a29cef608593585e30c81b47d0a911b11c6c0ccc7102e3fbcdab57fa79b7550abe1fe609bed219c17c0ff1fe4b0ddad3592568e5a040cf637cc95d851606af788ac7fb4600a1ac6b580fe57323a754aa6854f77a760043ce121186527050ff310af9cfe028bc06e812eb6b9e4d6d0d0bed8038d17f7f1fe86f098a5a70448ac1cf0503d081a10723b14640f5720fe503de860a5dbe0327206e193aa1d43475468c9465498df8d9dd8967ba2784f208bb99582cac2a23a1f0fdc4dce2a44bd913e116db6b821325850b4f9828d233117ab245a4fd5687136ed818eebb32937004233df9967e56c72c6cbd9f9fc5bf10d517fe7969cac25dae3064fa8cd8adcf174e9447c59196004b7cfd05e3b6118c24e7eedd0466652f02316b799c7bb7d4c2990697f7dc9164b350a04e84b2e59c9451f3f67b9551cfdd9b87b24374448631af4b4c91ec219bce1da4a5c9339ee923ab2c1508914d41d2d1514feea5522222cedd1592c41a0908dbb907e2773282080c4abc2c9170cd260216c6dfc3a71cad48e83ae46c0d5e0340d845e270903f77cdc620761cd7197809326948ee46ea0090e75b93bf78acd8215439ffbd2b1ab553dd274f1bc5ee6c7abec0b555128c387d8fd5d4336efcbc7a5b4a32cce8214c2a5f02693d7762b3538ba332f9f131b2d0e046cb5771d0162c0aaf627ec43d99da1415779c4cd99350de3fa84f07898f016bf4a0262d474669e14dcd7dd8e814c674d6c1d12a4736fe1dd16067b7fc5e91b40946fad82a27a5efb64300a7891eb57dc51ce7f75d31ed1306ddd49378843c823e695082721eeba3e857d47b12a9525d8e38e0744d9e8d11707fb788eb3f357cfd0fb887294223f485f8bd9301a59a8e86cfaea610992619d538d56eb3ac62a09822ed2d6d915820689f6b6cd2e292abd89f7daedb7a2c0c8b8b6b16dc0c07a12e2969946bcf5e8103661a6fcbb42817b0782e95dd2f2ae4784d4cab4873c5eced95344dbccdaedbf52e009da4449070153316e7a24e42d20b67dc6b90580f09a6901ce64b050ae9d58cb3cd325f898718008fd869aa2807d22126f43ef872412ccb024279784ebcc5385a1920ee65dd5d6ecca6256fc9124b29eb3aa24bbcaa92c12eb272e592bba7b86ce0af30e4b8abc5ad1cdc92269c60a73c6100849ab4f8f1085e6d47e5a00a9833b424131a3f17bc84a7748b7042613d4d6d1ddb2ba4cf7df71c9317a9f8dd1b7741fc46022585ddbf7a60a2e8c5d3249394af7c4b3c4562d47a31882cda2d19cf497619bb26233ab68681a2ea7259752e9f5bf14b4907712bf2961a4ad4b512f6afa1c332ae72496c20b96bba12d3ea94a77ba6d0a3dc7ffc66434e76fc57eade817a1fb3918c189b61d99162cfa872d8e5b8f7ce323b16c99025075d21afb706871db7f286d32feab83179d1efddf703556c3956d9ff520fc124460d97dda5068edb55d7bb5562b47c63219bba1c799e4a02bd67eaeedf3145d4bb19fb4560e8588cf18c3d8793b0228761ef840124b1ca6b85a25b12deba3ea4de11028533118c5d65ed90df2f19056959d79b10415d3913e5ab7f4612b5ae201a1533e65a52cdbb0fe573322f547f79bc04636701c8f25794e82b0261af4b365a3d88a0870f7c8a5a171e37eecedbfaced0fa62972c02a9820e85d7993486ab5e6f68940e2d0f027fb7fbc9b151f789f5fbd3aa8873fdadf6930c05b4ef0ee167869b5b1da28a7d8f6baf1aad88e50ae05f3381896537bf16360e5c9f2e1d27d45b4771308578c0b62df3dee20a8109b7215bc834bb0937158bc9afe7a4197e514c8640835c1111afcc41a41a9a9bba510b987188f25d1659ff26728c73b1dffe88b82d715e5f05794f8e1cea51d5d49cc3963008106a193a8cc21dedfacc8ac758632455c081bd860f58b6c06659c93be356005e4271e559218cdfd6be0d930d92c0f42e56a3aa61587c723780aba9986ad19e5ce210ee83d305a9bc11ed33e00db59b5bcd2d38482bf3aedfdaf4f58dec30da4cdc3610665c12a43823f6873abd3aff4f5e5329b5f1ac681bf34e600ca2568277af09af1db56f60d51a0b757faf1cb120d877b79828d8afb245d9c700ba0301b557f283d35527c60f54188c6b474a186284eab13ac28608c68f885f4f2038f4fbdde401fa73219fed37c6ec6590b2c06cb2c33b3f58c1e3dbaace04408c319c5e1599d9a5b93cb6722d91f691c689a38c59e316cdb0a00a3624d0dec80ed28be024302483dd01ac5a45475368250ceebf1654c7df0251e142503d61e0a58268b9f6856f7a3c8dcb281f3335b5174130dd2bf8e256820ba2ba69651d7117a9c183e4b40d77aeaba1be4246a2998667ab4e8cae9a35da98ab04a9378bbd542f285c274a241939da1254fee603586b7370d50c8376a7963ab843e228090e6aac471fc243bec69a5abc3e9725b1d443b5b23ea9a4e6020ed09f58c2016f6addddc83cca8b105c2fc14a09dfc624c14a492897b3515d77410522a4a6582609e026d318bddd014d80da2238f884be77120dd0ddf77b78ed6b582313517692f98ee143a12bfaaa5336d9f05650ee15375d47c56abf98104cda5d7e34c76efabb80426f3f8275095a6d6451c1606dfe595855e3768ba7b5b06155e90f91a99fba28fa8914a248f82c205c2aef2b8531ec8742f8f4b1e4bc3a125d56c28c533db1c612c13387d026e6a438d154e536a934150d4f42a1b158396f0670e8c30115476c9ffa54b1b35d8f0a47061aa8d296faf1f5aafa020bc0cd9fc68103f842c88d736ff75fa87fa1786f3ed7ef07869a8ac76463fd58f78d341ec4af827142575063041670f18643ce6f2ae629ab0846e2d8212ded1154a708125fe94a05c2228221756493b34b48e141765b09fc5e4509aefcdd40210da4ec91bd2a5735a6b5106dd2ff32d4e39d5c7105d9e92bbb2a3d94488a8f5546169e1106ed8eb3cea3672bf4aa1a416c66694153d47475aa425128c371e8c85d4d3956258a1d74948bd4c45daaf6383020eb4741fbafaa84a8d8b1a912753bf0fc94659d86e0a7f2b4f1fb773b5f54ac3e0fd8e5fc35f3aba22c6e7672740af064ecd40028fa60f2fe1c9c0716743bdde4b017fa93f9a3812a7c9c03087e3a278ba07af54013653be79f5bb9b27eba884fb288e175c2e640bebef11f497d8d533e4f196360bc6ccaadd9aafb015450a3bd2ec671cba572329887a1705078684f1f2cbc4920f31d67bbbb00d9d21bf02e4e20dedf8faf23c80ca378ef8ed8c71877d7e971d2b1bce118320724d3c65cbd302ad9de38d28b07a23f718ca27ba19393a574b108ebc99d2941f9bff8a67b8f2923143e48bc361b3ebf7b6d685b09847b1e70f6554a93e1b71194b331c90f813f363961f503a35650db9aef7155577a9f77e4486ba92d726725bf8a27171bfcaa7494c80bff64fb30999c4e42f2cf4c29d3c844ba71f38c2a541c3b7b19944a4b6a9b72825673f37c78506686370b24e1f55871a7977aef14a482cffbe89f945004c3a62d3fc6ac0cd3fdb3793c34732573babcd7140bab57712dd3958ded8c34c72df01b821ac9ca08c88a5297149fc4e0d90d7a5cff01e3b9eb894de5e07ca1378a9b916ce4f15bf12c802ae1a6f6022dcaafcd45ca2f52643ab7aa9e3df9556fa895c14380509f876aa56a86a195f2a4b546fbfac212ca5160a9e2adeb7da32a8687b985abd1d70b74de76ed6d20d3f41dd698885edf118d040f77938fb11bd7752386443350e50b8b5afd54908052539670697414afa51d461e613032b1a65a66d897fdfed46e78ee7401b91a5ee8d262ba198bfc97a1a654096c3a02807c25ad2845482a515789427e34cc785e2daf76d121187e9020d83e379c7bfefba10d0706ae0b9806e3e3d404946166af29271d795b8be081e79e2b35bf1625810171e248a0d511e3b499e0ea60763dd406c91e91431e71b93828e4844d4826eb30ad83691d26d939b12d3559f5e8ca071973bca09004da789ce398811f978b2e420819fc36e257249faa31174bbf09eb86368e58e9bf2ae6c1bc8e0428d1b7221236b464b9a11528eba5a230c980d86e9191ece626994bcc621e3a28ca2819784891bd46769f78d544817cb64505fe50f6b46c8eea8b5f10b354b77b55c800ce6c5af86ce211716cce6f08182438197e7abea664bd5c9bea0e97fb49dfaf7ec957a070cc045beee4d68694b582e0332767602d00c3c155f8bd2d04a5f0e7e71f823f0b00d0c679c41cdf0006985b9b25fec8ca4ab6fc9a9cd19251672e81a48468bda38c239bcfc1a3991c8274a06750616e31ba7312a0a2e10271a011d1ae1f2c9b3a0de64b2b87e005ebfcd8109a1932cc8dc1cf0a94a28c46aa619433eda32b7f8f35c3b7a42553a19a415bb6acad15c2a895c0acac0298555e948145c22587670496248c32590c632557339f742e9abf4bdbeaa5c204c65772d4fb5e98f6f6f54fee3707bc6899f6ef82525ea71e249d81e58516aa69df25078291cd128fcd98c68cf462bd6730b113525bc726802ef612fbcf52f85ffa96611c297667542fcf84c4cba9952007d1f39466f13239e96d0775722588029c6f80d74369e8c6a38140eb486977b42115422cf01dae0e24c4e2b1038892231784aab17c85c51bf76831b2ba61e7a19367e1e08f0bd020963986c5b1eb7181f8cffae584c220f6404b75fa436fbf965199b30b9330e948cb16e2eef4eaf6545a8e95c130c71907c67e81501769b26104be6947930c1960ddc53c20f80b2c69f318bcbb3eead807fae6c3496ce18520684c17d14d00f2d9a8a387badeb0420815ef0a77154e9084c668eb0e49055172904e9a121e044c34811d62e4571c0051277405ef6107e116654a560966bb0d44699e71b272a43be62b98458601c807566762cc7f292e2305a2d7c07e8a8f22e00308cf7e92c71a964ed7199d37ec10c77b60c95278123f9101c04b93034502b5521f4970df7b803b0bc66a46e20997b634751e4af80953b2843be9e7ad0fade640665886e64d9939c33109d3651028e9568a4472ea5e8c5ec25e59d833520272f810d525804c02d55cfa733fc3c71e3ed9cf58f5ef8c34302cbff1049a481a42d205d7280a97cff8944756b362961b20e2d9318939df2dd75e1c7217c46a7550f149e0ba6d57ed6cf2096222c816659285da752271bea3242453f5b404bd3164406ec94843caf0f1593794cd7a165f3aa1caac6771d0588a2b02a48fa56188a80d4d35a384249836fcf2f505b8349591c9a645bad145558c50ad0742559232c6364ccc84a9246180705524196da52d494d1683c933ca1797cfa978d8c70c3565e1843ba23bf753e17b4d7ff45726350c95e70df34808cebf37b7fc146271eb6263ad5c3059f36252971c8bdc56bfc86e115fc05d81e04fd84de56523b3dea7aa8368435d50274d6d6a08303ef0388fff243dcce005fd6933e6cc6ea946b367e0c2c41a95da0d929742d0831cc48eab290ff2205669557732334a4fbf4c75dfbc3e10e25a7b64cf7631c710520d39466dc088292c75328cb3870d8b902e716cb030da40908d7feafc7d395639efeee31125f6952035a305dbda9665b4c680840e955243e147ca188d166002a7a6a345f8214a8da50d0809c78d36a018813265a82d4124716c121925b480c75822d5640cb2850d33a1aac930680b1bcc42552363d08a3568b43893b2e44b07eff767d52bd0c8950b73c25f09d4a6b4315933d0314d07221b9b9520a4a616d033a33b343b8b9194a14d156863a623126bc3992620b3804435342b4621a21e32924c32012cfb9b5962ae564b63e44df6332657d90cbd0ad2ec8f11576cc6cc66a1d95f55ae4a337ac932ee68b3bf8cf630ed9faba9a11f91ec9983fda8982c5422bf25b84126f895806a6e378435808e7799746896c160280704015de67421f18142450117564093994e90ac0567b480cc0094d4608d10920a7cfd79e7d365143493e1bee8417cb348b65d352458af902695df5db06b4b8e985b97a60405e809d59880a0b8d3cfc92591ccf2211d3f051b25253f8ceaf1e595d8d8649f2a54b9fe98345166f41b4e03e3c88950a78492a7c2f25d057f240ea253696159b599ad643831c06dcbde712aceaecac2458547f5d55dbd41373d8b966a3fa5325515086cab3963e05b05f1744d49159d14da0228cc752f96ab4e4209fcefbbfd14b249ae380bb13bc255115e98d5c3aca9d8fe3129e7d7e837b824e1da80dc0c9614a19e18127256c9b87edb5b97aaa2fcd4769f556d4b98f9384078abcdea696cbc69a940fba89ec3ab096c2949054e07b1fc880de0c558a04b929797d5586e91de07b04a621319b244a023ed8c407e5af7d4b814033c0e56aa4205f55dacf4ad831416622d836f55c2b5505d4d3847c1a91a6c8ba953f13e3f14fbc82da313733a4ec109e46aaf9500ba9b0c2b7bb0e31932cc6f9c84a67893560a41d067080f61ad85799e5d7164fed36e9aa310ef3f7441eab8cc89a207ae48c5ca9aa4cfbaead8efe779e4b99b78634342239fff6ec911773e5782e897ce5da7c2ec974ea4ff9b85ca83a1fac349fe6265365dfda5caea657364bad44633b3932ce41805eef293fb30d218c8d83a0358e479ab457afb522083873f879687c567ff7b9a817261c6bf9f38d9451454c3ff892bdc11252275fb7765b782687d107d567d1d8453ed4ed213b71db3e2bd761ea93cad013ed403427200cecad69c0d7fc277839a9ed5e966d68ec7d84c627ae50a844254d33feff1f20daa5ac002653ca7242bab360131407036756402c8c97c97224033d0ac20912adc15900d88b2725098551fb9ce8abb257354ea489a09e1365dff9b0d51d2db01264e67ba99a05dfd392352ecef7e2bf5f6f3f97990a833e11430a741d41a64e3301df164578a63a65e7a5ea9f860c00cff2de423b6e4f6ea8de995ac0756f5802e009347b030a9877e1d504fa96c42772a8d1910aa041d842b65e9f09a8c2120ffb40968a3536de62e804b7623351d7bc3e1bb719684843508f9926061065dbe97847a3aa6278400246a16c4e6bb648a39593f9f32a69cd25b3f6094b387a2144d91ff5afa6ea2a0372e391ec8f804e29864c167f5fe1727b818217c92bd70529be8cc23e42c4ed872193389c8286342d80ddd1b32ffdb58aa072620c034d99f0e7a23f03e9c50bc21f10bbc1f268c7184097c5f5eb35095ac2c283527e9e2c79e80a3abf0a7caaa18cd88be4efe269fde0843069c70668a07d4ff753e522f39f591bbb2c9fd3142dd0bad514b79b5ac42c177f006e6a6842a3f711537d9e2dfa32398ede3a4f8b6d65b1382e6cefe3463d7bc65cb179a80bbe75d4d228e3744ed7e5c325a54efc274a0218c7795417330c8a34207fcc9259109cb1020bee5a12039e585274ae5dad1dfbfc1155ece5f43e6fdf5d5730cdabdebb7e971ba7c91f1432042d4411afb563dcf8b090c61b1cd7c8125a43c50e68abb6a7a5ede60f7c54e99e85cae5c62cf4d02a7143acc2a2bcfd80f75e018a79562fb95276fa1a24c3631edeac1b2da55e50cc47d8b6a3e7380e63a65c3d43d3e2ccdc15dd319f561944800995904a64352ebc85015201c3ded2c651658076632191c1214fa4b383bb1387df484b33affa9fa152d196bab85e7125861e20998095f533ba0e9aa6b4e6cc01d295c8b96479aa9c2fde279fdee187e4ab85fb87437d646a0d49a5b4fe07031e14f7d3b864b47651d06815acf771b3e1231fcbfcb799f53a97519cdca1455450753ee5e264609870c3a2ad7a76c255dbb06ef0223c2d2f472f1469815ba1746967d2d9b7b23b5e56aee3e722a7018e9fd1008f5d1b71829c91a869b8c466c843a084a238de5b3a79264eaa84b5910b9ec50e95ab014c77fbda6344ae9241c1d043479f285d3fbfea9546b43815718cd18d88a1fc99163858c6da24ef68cf36c9a254d7ae86371807b7e43ce04bad27448b2017f248319590bf6980e37eb1146f159329a0662facf17b2ff8e3b2cc7fe66bcd33d3a1f6f31518076b19c1e25f2c2bc1534e70c436fa8d967405a6680efd75c398449661fdddfcd6082f7d10386b5633a15240cd0eba55e65f94fd181f2bb08d6026a64867c392ade0ee4c3c115abb261607873b8096b7cc9c241b0e83c1806d49d7e9c288075a76afa2c78cd7fb6e022a9fffd437810c15672d91ddb12cb9e177208ef4125891d858225f6b6cef7f6bd8118879423c8526b71308a6f4cb0bdf09d81264d40791667cae2c9abb9c80782d8c9f0321e2c81f6fab0405ff27c7ba9ccb200c8f6992b10c58d251d54c28011fc0bce1859a178852f0bd49d5539c7efc337a0451a2d53ef52a2c85df739fee89178c7c2bf11bb0e5f5ae64c7f3b6cf801d3737b6f7867dcdb1bc423c721df45c2d7397dd712d5b13855f8077c3b0d69718067a804d98fd91830316705ce052b1821f5c9a4f44b6e46c11bbd77d6f358f94193d19722cb739bf9d4b81015ea67ac59b8f3dc6f11f394b1379e556d4b99fc1c2548df10c09aac0fc3b0102b359ca734504f60893612f9786f4aa508d4a704fb4c63df6c1f77e2d5806762c2b9b26d6914c4408647e683140f9fc3fbe8fe396863990975d125ba21b49f6d92b18edc4bf938fdb462394d6b3fc649cf34cfb7560a0f4621561200532650b42f7db27408a45429e43c4d4865fe315142929e035faf59f10c1709dbf4922df4a94b0f1b971b030878427a632bdeea4e9dab580c4274f076a8a1c5a88f205fc4e0bc0c8235adc8b1e11d08665c48a513f9d7601e1d863d420699af448e7e2f2943c89ca1a6612fd551cd1f845de6899284e9f35c64d2fc142e8ec415f4916363414d6108dec57b0ae59a8d8aeee8e0445560f381e804f95f651297a4ba46c53b72081679f8b2958f38ac8fd10abfd8ce2ca35b6abbffef22fdb1a913413f21eab4c5590fdc49a3dd10fbc1c06363de5718f3605f04af3472147c5c08469e72c8474a2f33baeec361d79f875a04a274cd38d16efe62fe2cfa0a0b61022e8971a4643d9855150412c70837c064aa9fe6aff64738ff7ea049f0123a8aec8cb632eb4a47ccb57734f058071b7edd4303180a29948ea5ec86e4d15cb06b565b0d1bbceec06591f7d5a6ece6ed5e721344c8517c8a5b51835cc6f541654c2c64ac0bd2318991fc2fa7cd63b5b2343bfa4ccc2e24812bb22d8a1a54a8acffad1e55be0da36824b1ec58f1ad14841523558b7ef9581fdbdac08f867fad32630a21217b98052e63d8117a3511fded5a26c94d3abaf1e3c3a9a8e49327de96b2577a88fc0f6a0c9d58d627326019a2f76bdff6b7be5b22c14a820957e43afc0578f6428f461ebd8260383b22545c5fc156a0ff1ead4b7e618d94ce57ae91bc9cfd4a9e439187ef435c70db99972aea55dfde0ee013985be6767a652a1e2c35ff2cfa29238422040330bed835b4f873f74b91c3b1f1aeae76da3ea23811e553e670e31f86c580f278a2752cb2dafa2d7ac108dab2e54d68673c9156a846e55c89b4296fdda5c5896a363f6bd88adf08683533c5fc445ee4fe248e7d707a3b09e1e14c500400f8f12e0106fe71ae0f1479efa8d62ec8011032c298e62e068d471ad254e4bd6aaeee6fc3f363e81ae2c2132967d3cf4f5bf1326bf77102b3424e6cb90a2db6cdfa30f7e5248babec0fea3528bcd385fc2a5c98296624b778eaf3c068ccaaac127551e9111ae7077614aaa8a85e4bbcb54282b0f5b1eb4df2a013b770e608dfd615f30e508b08c04a3cd1a2a303dac4048bb973d45b8ca9327c6e66e0bd4a6fe5bbdf700bf5b67212a06e1a45103fb2977fbe98b885f333f0275064b7dab0901cb70b1e10917f157fc6e790edabaaab00b3e2a4048776f5d2a31f63be973707c7be59429f390456d8a76eec13e74b32316efa7ff8cc5121c17f69fc61d41c6ef28d14ebd5cacb9262681371a3d44f5bfdebaca86210b21bf38ea0dbd555b78fd2fb687836223a709455dc814e04a9f85247d96d02d8f6cb9c850349d5433125c70b972095914e8161e65adfab7669293247721ea8e26e3ea99699faf3307336a79a5e2b210f22184d7cc5a959cafe34638ef4eb236740736f9e79db86a284172d7d227752c95a17b137cd375e315dd68a37393148b81672776fc988f0c449d77c9f22c645c8356f82b09a74f187bbd4482e62857a5785d4ebbcd63ac0765d3d2428242074a55d96fbd536849d3e2831bc922c24b14b0ddc098a04c028a140a7dd5377afe1e408915316b4481b76edd687c8ee4f61fd33dc8d678ffa88ee0dd80a193f41429202446059ec84f6866e3fd3ac6117ac1df53c7a4847a134f596232f4e5709cdf045e1e30b963652b67e68efedc56e5fb1ace6ffaff3a9045d0a07469724c5565fe133b988a24717108fd4c87a6385f3095a6a54d540252e8dd3412045595a97478a5098458ae884210a2294ea9fe1652faa1d4df377dd7deeee356281fa93778369ec50f10a8d9cdb3f6ab4b45b95f166b4bbbcc6b0af6b74ab18fe10177a7211df98c0560476df1428ae9410c3c6b22aeeea24c0dd312c578a93329f060123728c5876bdc77d5c5cf59418bad473768b0245b300915a83aa14ed87b89233342eb8efde07a90543ed4a19c432af2c42f3a8d99ce503459ea2781f5d6fa31b20525c353bd106589917c27f613bedfe2207248304849fd15397209f82f8f62fdc036876414e96d04658e1f0020d31751fcbafbf650549194f219ab73a76f49ef2c075bae50396ee868a082b0e37cb0173767fb7c979b6ec2f79f7e57e02089655969f88b0ca322ccc5d5f3a434b9bb1e869fabdbf5437e4d8589526fd545a922e89477fc3e907b864f15aef03636d022c4aef77d6a28aa8ec2112311c40050f34e62afa47ebeb6753788069dc878f50781e5849deae2869920790164e95783a56c6b26cc68b8fe3c7aa3f695964b7442d325204a240f01229bbba07ee18dd1ded86318c7585e33233cde908b439881bac2a88b40c9fee251d8d2e9c20be041e8256ece597e2944499b5c49914526beba787f6d81570bfd85d01c455990628662bb43d890175d2cd1462e835d3cd9d662300dde7a036002ed3be649e84a9c20b5671096f690654ceda6ec692ad8cb698fada09c56ac698d5933263930ac2d115c019c7c5f19fa41522ffebf3551981c023e06653c121122305ce9bd00883c283ae7f737fb9827bca9dec80441de9c0f5d7611b670cddceb780ccd473e1055c347aa6da2a6a56aeb007fd6949f5ffdc4924c21f074b06bc66d52d2761c3b05638645261f06b58f857e4977fe6c078a97425582186281a0e01b90a3e20176e044963728732bc04d99a15755128fb3379969526d365f87ce4c3fca429fea140df45b68126b97edcd4ba835ab32024da3363c88470bcc2883d36fe398bffe35868da6a5bc78f5d38c6a55734a883e82cccfefe29cc01928957fc5e02c955890fdde8f7553a127a2c3e448e35b664ce41f1c1984f6d0a7603b6de0a12a47b3a62a04c9b28601d00b882effbe0ee8ee7228b7afb60729491914db5871a2f05cb4b6bee71c31fb7b33c23d693086a5463463ae452f018cca0ce27bec304d935a88f9c36040d3293a58d1e963288e78e3cf376a8696808056b40e5e250863f77a3cefab0f450ec51dd97cfec703416b1c4f476d2322b3cc986c65f2b6bbcec46f9898f2399bb8e81cfcd4fba2135bd5afe6641ca6c36815e53dda2da5272774821878d594c1d00802ace17a2a449d1914eab391843f9270a209ac53f2ea402cece36938838a9ff3d07a4e138755638f603c847bc2b68876e8b55becc423f735665e4465405ebe427ad96865ea39178ad80dd3b72f18386648d6ef20170353fd652ee120d8e9c442f8066f7179cf24e27fb428ea5a34179966d027a7d38abfb9cf7cd79bdbe6517dc40584b79a6bc1da720c71e3eb7691b96a97bc03aa547bdf224009b1b60ed7b319520cac02cdbe457e0de01956791e30b73287ee03f34e6f9a328fda19705d363ddddb3ff426d7060a847a69958cdfc8f6a7d23eebf0b8a2b9c70baef72d7f4a38f0a6894115096c17f77de0b8ef86a9620eff5d2dabc0043ab45808118481991011bbb42069f1f14fb864766a4694ebc4f046b6b0a910e045eeca3c2cab2c42f822fe7ef05caf38109489c3dc6d612056fcbb6d22454bb4d14910a99f32c00fde34dd9b153f78f8ffd7b5db0e71fd6e23ff379655c3cf127aa3e4b866bf7e67bf871660139862b9fd74b469f6716d90bf146a75c6bd8fa2486c6022939809b7813b399c76bfc02ab86570be43a76f07f23fd902d3427af8486fc0922bdb89e03bb6b736fb4bf61be7e3f218e93063b2d339f6dc1e797a14d206f41ccf93ae97740c2e80444f6c3d017d9b4da334c6dec5437c8f1943f798806106755bd9f18a71a7de8b44a42af9ef42adf00872434b8313d8712ba6ae6c4b4eac2b79b95d9b682dca016f3df07d2364ac67a91918f8bd98f9a9d94c594a38a00e2b417361dddb94c0303c7b508054f374a6a05625665f8d360c00ab31fd689332d775251212bee9b6740d9610eaf8b687c64d2908646a615602d298ab43166339e65d0c4c8d2d6869df57ea8886a23a5d303645c89d713f7300fb7b2aa43a1608ef3839c142e1cacf008c867bd788024f0933570991bc7ac4442fc8b3fd866a0201ea0d019fdd9f6ee74e93d7478d524c01b8707b2bd521b80f87fe5faf0f6fb8f4c8398d00e58fb7dcea3aff41699c590ac270aa01a438feda19b6f7a096c1800be82d14750130698a5ff7ec0af383cce5c480ec5bf95ca201662d0fecebdbad65e29d891355bd5e4410b5890460f08a47a25d25b323fc2e046f64d8eef4bac9d4a1c6d201457594461ea9a2f07737706abc82d0ef669e95153da385377202b20dc5b6f87095e00ec7662f7c0e6c58334011e8f4e91a0fa072c1f64645b587a981627eaa3d64f3cc8f07d273d8de2bdf22aa7c2fafc2468c24400effed1e20010f4a196bf977d6311c19296c7d8ddd7e01c7a64b81bfd36a42222fe26036b1f031941c759377e0fc7c088404df7b153232e988972468af24d420459559e430b6666e109f39a0625f88232155c57ddadc4290d1b447269137d968cddcfff8193d8c183848d53e0c0d5c61a1f51c93d53f61e850104c3e607176d1c1a666509ba941e90601e7f2d2196d4a31dcaec718220adc91f98aa192a2e55b1468acc01291f1994c8835c984fe9cf18e4d3ab37c63412d1998cbfb2acd6fa49fcf322aef558a5477e79282b32933a51134ed4a5f9394d62f500c3b89974c43ed0ca55051e5278affdf7090ddf97e841e8fa503a214a0f2cc72be814fc255cbf46381a1e3900ef40a18805db7c37c6a9fac93adc376e4c7b5b6827f434b8c968c6099d3f73ccd82245bbea02b131682584c08a5625279926738e6f2143ce2e5885a85132ea12e8205230ad7dd7f1b1ebb797e086afe40bb6ed4d2fcafa033531c3a5976275f88ac158d2a1e3c858f780283007226e6cc75326ea6ca432b173666f3af43f2d0d26dc5a5c5a7ce7fc9f7d6a074fb161051a683a996325934e1d292267051636f6534f0d5c6d6a1dca53764ce185890096d066d0d159dccf78bd038fd1101e45ae0754ac03a708f56b923df9b0ca567201d5859980e9083548dcd315287e07c9c700e5a976d1988c0d6992532540424997d4076de2249ba0e38a494c3c84f906de2abf31b5166ef7efdff2730382e3fbf532b575a1128e3cc4f0b49ce6e8cdba2b1c2cdf597d06b888964307ca9a3be054608ed8492fa247fcbd2cca03f53c29c0932af3692ea648def6836f2d73ce7a1bfda07352cd1b9682f893fcdee3736964af7aee078caffdd82336fd88e6a8faff3bef6016c2cfdc4c3f5af3cfde3cdfa55d0725b174fea8f1ef0cef83a2cda07e5db54438e423428b4e900dcaf86b9652a70efa4dec9d6e8c024aa66570a44b8668178e5acec556a1b3ba9d907eaf73b6ed700e2125da476e4b0c8172c08bd6702b176d1474b4186f71b896bd0f30e59f08709babc3d1cc5b5e80d0a2683b5288dd584411e723f1002f78d327c89c1fb623afc7af16168efe613db29c734e458c2094c40ee826ed0e895cb2d62843ffe93f4a0dc7d2dc94a6ce2c2082de3517bfa2f4e1b4ba7f51f199afedce924ea7b7ccaa2bb9f2b525c0016172cbf38db16869c0c62cc65fe4ac44e3ef1204018e16f72907cdbec4191a67fbddcd598d614efe1365ee9fee94e0e8cbfa64f863c4a0c9a411493b1ee8042f83dbcc8a3363137f1d6819b9d6f88a256c47aecc32bd101a9b42aa3e426fcdf897bec78f062727e543ce2292fab1d5312e74e872f6d44729dc00f33f6b212cf783b125275a0b685b90f5199695116c2b51909d4ea4614d53ba46e0df0a8d717a8714e10610c51187e56739ea3c7a1e8aaf2c4a7ae9596ec5dd06d757d4fd78cd7d0b7ee1491c8dd8c4684281b648b2db581260e20a61929205a18fd5f63dda49afa0dc861eb2c3c76790caf56586dd39396c22fad4b0b3fd343cb8cccd85cafde7b9a6a16b0370688f5b7fedb168e20c8bf25103a1ea4f647d639241dc701898d711720e7b8d9c21af6cb53827998a34fa8f774b91ac0320fbaa94fb0a6756ffdd4f9a33343fafd322e4a39514324ac39f152191ffd3fc5f001253329a6bc5b6f2e790e804f7266f1e7fa082d29a1bf9ab379bf4f0af63999511f70d211fd2ddae1663671842c2512766acf8677a8a06695668be9766d16a1630954ba40e74ddd06fb7751392eacb4cea9cd55b66dadbed948a9283c139e41e65b70f1cb553ec309ad6be1e835961f86a1720259d260437c53391b24be7870d49950b9b3f3285dc9fe33c8f4477af39a5634c2b60dde843ab51a229b9a34bf8950d1d9461bab10c1a148f91f5e2b34b9f24c7c2b2820b24acc3b0fdd1e31a9c1ad474812c26456c98b58a758a7fc05c412d2637d0b58d69f7101ead9ea569be959eddd56472708a2cfd680190f960c9eba2693640e07d64678e24df9ca6a67b45c2233d076008193f03ac0690c9d3d1b4615d79930f011e0780f85eab1f3e966ac5a55f90043f305b4ce56cbced39f6d987730693d1440e27368bcc3934f820eddcb5498c5197df57141d4a57d30cc24deb7107d9d9b1436e7a18c780d77e4dfb6ca6a2b57bb13604936eacb95bf88a2bfb59b1bc2cfd0db8b919244fbd02fca4026a4f0a775d4052324e075a12d556548a15d194eaa21da564575d32849cda857b4b5a2fe75074f0adf9af7935c7fb92251312627188da7d40f6003827f00794de48a6c8b5ac736ae0d76e13901532d85e3236ac40bff82fadedbdf7965bca94929401b207ae07f8062606e58cfbce8e5492458a0d40d953f9860996603e9d16598ea05986c0d2834bba11cb183c58415ef9f36d7c254dfaebe1732aa330df5f72956d42fa9bf4e6c4fa31af6a3f4d57da4cca2fd4becae07c3afdceccdadb269f7303557eaadcee4d4a326c889302dfc888eacc8acb15fd2e36bba175b9a1a57143dbb20736c41940bc998f93420c12eb159b823b5be0cdd247d147ffa45eb88ed8a688c28c432485680427c07a0086185ff418c1c31839b18a9943a6c4871bf400e8a7891b0861092a6a40c50fb820053183213091620c0cd480a7ca0c3a70650623e0a638e2882d454b402194734506af2b556c41baf14a6b0b1e608941896289994e4aee03d34462c8988846040b11da77e3d00bbcc0c27343b0f630eaacf8400cba8a420b78e3caca1656ace880078f7700ebc0dc6cc516aeab035f1c0a7019f0377e9c412b73dd9e336a05dbdd38f4c594eb370e7d21c42ca3c066e518e86cff42d08b02002309f2a9954be90c0cb2365073050b95196860cd4083134e80d8ae35345dfe42192557431b9a3ca2f8bb33f9c56f0710fba18ddb1fc6dcfeb0bbfd33deccdf71b39a55cce5caa734e62723ca6390930ab23f0439a1df18859422a8b8fd3bae10e66e29b8a09a141320c20e07c248a2080fa0a0005094000a294440b828618453df7177efc9000d0eca60a21aa30c318a08a0049631680073e34a8a0f144a3dddb812daa2c5b6bb1371945d06a218305a6d953bdfeb9cfed539e79c13a352aea8fef5a0a1c24220a4014c088839ba7115850cd60f518480b513111189e1e5c655941bdc10e40c98200746f0f820650c264203b05f34ed9e0cd927b230617982891a589cd000141db0a92d3ac083032fa610010b2c52a832021514152069008b1600e107297620c6951b08004a0da0f880524a77464734a0073f14690962e8024041a4806285d6534515587600861327c400924508a12c41a060bb7115050624193cc9b0a08086014c8807483141058e4882c5e4089cd5142aeec65514157806b8c05ca03c6121922862278a103610f200949b2c4f84b18a42650a15171810019354057e0094c410586073858a2d2344a1e240d09c64376221430becc6002a28fa4010105010061939a109851b3e133e249f170f2a5001cf143bf871654546e9462c64f0203ffb2df3b408c43afdd0545ff37963c5bed0ded02f345d0fe795ef1ef9e60239f3f318a4df2b90820d58b9fe11c7665708b7e7d147924cf2131b102b6bb5567e2f564913f93d7c4e93036c406c649019e4818dcc3fb899b11af7a79f7f3dae0465d8efde1fcb6e76ec333128ebb67da1bdfd71edce8e39b7855cc5e88718e655ec19fb9c41a645382903cbef5fb5340bd7db2c4b2ea5947ed3033240b04015249ad802c4095b2eed2c3ed3eb47841d41290c7cd0c096238250b988c8a1265c4a5742aa4ba7d340050b6a70ed8d2ba1d40d41d734a2bf512c844b2881680829885865f980139f122ebfed9164881370915245f10494226a6a3ab52385c50f131f78020a26480862a60a1e37aea4687129942453ca20234a14440081045002c0854b9495940e6061cd5471ba7108085b782d08ea81184036d8220b1f417861012b58b02a428911b47a70ac01143094581123858509006e6c20634194236e6c2063419511d5cfeff5f66783bd73082e76dcb882228c762ffa17d9bbf9731b6f8e2c6f94cddf496428a880ea8b2c5ca0258a1f524a8c30e4c5152b3e90620315f08d567c20855f6ebc524512a31bafcc60043d3e78417ce3c61594226ebdf14a155b64c12012dbfc8be34616433a7a588eab2c965c66b76c13729751974d575e13165b2eff0ce85fd73811e00a8b30aedf5805931f94c41c6ca08b1f6411c68a091bf0187a82870a294bdcee462c63d04004507ea87132748535cd8037caf9b66f669679439aa7e6f84f4f490f3839fe3c35676211ab40f38534d65e68e4d22cbef665990d275cccb3817e0ee81bdfded8b5107170e30774a27f24ae7220e00f81e936defc1e3fc6189fbecbf8b1fd63778a1f91f9f48321e624a000359c847b62d9a28e2a4eb0aecd8d559c60e26e51a6c0f2d7a0d0243b22fdac43a93724be7fa1e4a939edbf550f931950bf90cebcd0ef0ed7b1fa4d1b602ef56cf0cf0137762df0b8f3038280db787397e132ca286f2ca38c9c8e73c63923507fec1250809cfe9e229149647b0edc9d41974358acfc59bd7463f418dda93b1656f27b8c31d6ebc9e823ba7bbb778c363182a512cc8ca9b1ae2cb3c84de3249195efeed30b4dedde2693b531a2e2cb2ff48f61fdeb8fe3dad0ecf3039b65f491e4dcdd3d568d7377f7a871eeee1eb5172ab68d27c56a56332f8cab970c6af14f51f7f0a458c5aa17c6d54b06c916ff70114f8ad130ae5e3248b6f867d2f992412d9e1e572f19c4df615cbdd80be34aaec0ca8fee618d35f376ef4e52654645e886754b162f540ab0b18a93d60d6be84fb45cfe1aab3829ba45687ad2fcfc40458d065935600fd03fb44d5c2f5d77f709ba7b15c2fd63dfe40c71f164890bf030c61739bee3babfa908d7a7113ee79c33b8fb939debeffea5223a7ab066a0e1e5c62c2d2b37e6c6d5135fb8a811b1bbe78cdd31d6ef392533b7eceef666f7ee6e6ee6a61c7ba15fe6b9611cb76c8c632f9497bbbbb999bbc6c8dccc1d39469ea3e852e605f1594629a394524a29a594324629a58c71fa9cde2e9b07db46a7c7c831b2db784f8e1f3273fc9039c6d8217333374966891f2c022b3ff49437eb869eba7c83f35ccbceec3ced3c5c7fe82c638b3a421cae1b9fc82fdc218855d6e94baf88ec74fc632119d4a8253a2cc436cd556053ae3f2625daf00a5bc59b1fef8f0dc51b14de1f138a414878e7a17bf3a1efc49bc96a141811ec0f5bcbf5ef2da2cdf4f79e7863c2fb7b2ade9cf0fecd8a370078ff6ec59b1eefdfae7853f3fefd8a3725bc7f17c520a8f710c7e643b026decc9b2c65e34da6f29731888ff7f768b3e3fd6bb4e1f1fe5cb4a1c1882ef61cc4200b01590ebafde463a115db64425c45b4c9a488607fc843b77fb2fa862b6a948b6db81683138c68c37d11c19b2f9cafdb9fa5fac6f664aabeb13f8deab7f9b2948e4f756b70aa51fd3ddcc3aada01f14fd3f838eb80788777344d33a1348d7a33b62274f2f5ba1d737978a72d2717d7e9ecf84e2dae932e17107bb2a2731a62b0bf3bad889c8480589d25b6a31ecc2dc13b110d7dff6d267832e7044fb63a20c9da384a1ed198e0c51ce7e9ba173807c74a049ab671dbb651efe587775a9d84a28fb661e3862965ea9179c9b8645aac46cdf0de9b81a314f48f822787e44a93298a41505feae17e54341a75409248129148d6c55a9b71d47399222444b2d6e5c5c5c5c5de1f1e8e20d5cc4cc633b3d35a0905a97cc793a020f768ac8b8e8c8b415e624fbf4998979717ea916e8d775a0905a9a20f1a346a98764e7db25ad82206a3252af594868849b8bcbcc09464ec110c0c4ceb8eaeed8181b14f727ce41bfb8451fd391e050fc70f0f07091e8e4c8a4ca8f461b6da39bd5635de49e814a4fa893efab9a298981932af4675ad322c998f7c23c37af74a291e5fa9472ef9f9a1b144a60f2d51a9a7d443c344a57a81e180581d172fb1a18c8c91b147322d2096bfd4e9945a0c362dc2325bae27d3850cabbb3dbcd3ea24740a8a3eecb77531f1c874c1603f0f4f86c5e04bf7d271457d63891ad55cd1ed13bc999e122c510d095e8c3e3c8944ec64aa75613a15f89e5a21e038ea7124d2374fad301dd00ef1852a819eece9744a1d90e4e9df3a8e664bddd14c4f6fdc6fdcc76497c6a3610656911a5a3acce88cf46fa41d9e02643a19fa37cb510fbb349e0184f4f3f00ec0c2500c0cf69b3a229b0bc7c3a379ead16b7fd826001f0e48766e001efc7e9ac76ca079fa4ef3d8b7e3b71ab17381e6a947f3f1eef8984e67c78763697e93dc0e4fded8d1c0742cc44bf334ba21345f0f06fb69742083fd200e8d0ea88646d7425f1f3e68d4a8518397d8797b78388270a870fc441f3700f87eee8bbedaf7732db68911d4beb70f39d7e9e5c974c1a8966121619fc125acc4111483e8084b3da756dfccefd5ed7e7e322c19968e1a354e1c10bbe34f3cfed4e9f0a03b9eeed84a1cf5fc76a9875a55df8ce06f55c82efd80c09f9b7d28c39ae139b97a5ec872c0efd4020186c24ea7190e88c57ea6d329e23c97fe4ca7437fdb42e7099de7fa0fa13b10898d0abb088845e23a83e1919feb4ad8f0c84f782475bb75b1672f2ce23c97e6695e08cff4e5e101814fe301f17c0ef8b6a76f64586d7fec12abb24cd88646c74fafc60e4808b38f95a72ddec9750a83c17e1956fdfea8e39be954f0fb037aa646f5cf7440b651fdec63e5873686a31edbb03183a39ebc714386a35ebc3cbcd2100cf6d378a514833bbe52cf072c4ba60bbe396d61547f3f8e4ec7bf532b092bff4d3233624c2518d38b8b258d3a6ed34cd9cc88be0e7feac5e84307d6e9609f33e85f0e2f07bfa1fdb9fd9f179e8a6ebfe7856d456871782178c30b4d3fb7df86179ea4dcfe99532bb435bc10a421c392f142bfa17d72fb67c8b0c2ae72431956f8373cb542bb0a4d2e32acf0e444d8568cbcb0e686a756ddbcd074c3532bc4a1c4edcfbc10bce1a9656f786add7eef74f8b1ae85fafc846d6ec0883888857ef31b3bf70f687eec80783e677e4830a29c2627ff6ec088ae331871b8689246d21f129984b3213390f725189979a8894aa257629b78c5e51e7688381632e09c88bb4f01844b77b7112258704d34a5688a121b61ede0d26187293f46302c48707d4a29588d8a2c2c8e783122c54fa3e2e53a82cb880e23dc9885083d726744830c03417821858a1f385901102a4081cb8907010010d48009221388c182304eb065450406564505fc02497c7c18ca41162900838c941564106121430b2c7e406273f9d464cd9c73ce39e7c43eb0a607789b369d73ce392791cc897a1081317b3661b54c22e20b7c30810f9ae8000fa84c31444596121757b8a0a00211c58911bc60092b5a21f8214b9428a8684db2259fd562c3c146655404c875e1d6458bcb3df281b92e41031090c00b145cc003398c250a9e2c556ce04aa410c1bb717505962b82ea0e66e8e93c430d2c1a68f37029a594d64f06067918810a131e68208a941cd8e08a63b3073843df645f9d42884aad9812848bdd68c51446542ab247be91c94a8684a04dad2c692b4cdaca93b63285ce6ecadad9d9e9618ccb984f1715456054545281b04398906054154b18e53573ce495fee08b161d182c879e26086cf4054038b861aaa28a902c49cec1265ce39a7055c987b1881874811a989b064208a41861512ab25467ad85c2cb8333333b333e5138cb0c93310d5c0a2a1062a41938a5028a70fee4d404085105841f8c8808c1cb772ddad98c288ebd857ddb3971fa5bb112c8bd0cb34b2830e3bb05ad448dfc81d76cca97bcc42826efa8f1013a8b00bb8db986208d7797e688a43d774032ad8a494ccbce5c6efee1611d6b5758a6525e6744a2bbf30acd3915f9d62435b6be5aaf51d539d62b94e8704c45a06e3779d4e91aed391fc523eabac2c82113d2b61437b632d9148a6d20ca95b415e6b5d5c48405e3a9d222f9d8efc4297524a96f2484a7a61b78af006f302e362616060606068c02c81113546d4c468a5834190419e1f3ba97d7fb3fa26fbee55c4862e47a146793227f3b457c584525bcf654c08bbda2b1573320ff3801aa865e411ad34b6ab5ffcafa38bfa8673fc65e7423ffd19674ca1897fdb91da4b7bc911ed1ead9812b1451de10b733146ae53a1af6b7173f01b36cbbb8b4ea75b0cf2125b3f76dd2c069b47fdb2a7c7188436abbb601bff6e5dc63c25d8f7f039d8d7a4bffee48058efd91faf7ff76ff187955776fddd0d995f5c22de1013ba3cd25e97dfb16f24d42876a913258fe8f39dce3c9ac2281e098523a1cb37dd45b39ac59147f45f76e81038c628b9db7d4eea6a713befb4cf492986d5974f3a2956b5cdb7ad596e14ab35cb346dcb346ddb584542aed6d02ba3629372c8c5304f46b09fa937c47776b81bd29727471dc01d021ac3a827afe42bb6a823ecd5e5e7644f8ad5ccb3ac5966b466daa671dd884472798129c5784c4cb38c899131b1c969d4f0939f4ecdf2544711276a118956294456d4b24a0127ba80e0d12135447ce9604465652589e415414c5492258b205f3c4a644b76215992534f2e3f0771fb14ffb9fc1309069953d107ff0c177f93dced3e27edc961d9d6e9d851b98859dc72bd7aa779542a954aa55219a97181ad67998a703ad5aa0e6a218c4e6f1c1c1c1c1c1c9ca86d1cd775a311c9be94b09faab24126a15f8143354cd452a9542a954a6504070707070787c52dd7ab779a874e671c1c1c1c1c1c9ccb1f5d5e60604aa5989819319c0c0d2a5bae17ef300fa76e2a954aa55229954aa552a9544658c5412cc42b1e62a2e92a954aa5524923d1155dd1155dd12563a241a3468dd369c686dbb0d12c6dd0e04e36665015b22bd3d01311c9a2144bb2542a954aa572bd788779b88753de9f4aa552a954aa191b376ee0c0f1ef7dfe7dcdf2bbc1bde7c89d542a954aa552b25a6b32fd835248aee49024924592d5a9542a954aa5248b2559922559922559ef7d5f8e1c3a74eca0711a9a6649f3719d53e3025bcf62a2ca5f772c8fa9e753e08f5471b54444449faa298c53a999f254a77270d2cbc1371d5b2eff8ed60e1a9ad7e5e711c6e5df7870921fec569097b560907f8b2847a19a25aa8e9828fae0e71cee3ed6f4c77f1ec944a32facdd1756ee0bedf68556fb4253fdc20f9f7e21087e61cd0d9ba766c746c3758fb526d33f08d6dc5873431c9ee6893e9ae7f26f58cd46f4fb26cb91dd491c7ed8626c550b75aa7b6e7c9f14ab5e6bb3ac3152acc69a691be71cd72c398f1917b58deb463e1a35cb518c5c37e2b8e8c591ebc6df46241217bdb077a21732ebc67779f1979766f95274e30b0db18a7f78877b5cada1222119247be48fdc79c5a2f66ec521c9dced3ea953da2c691d49ee769f93628e61cd12f3492986d59a69ae69cd52c36a9669dab6715dd72c3b6de3b8ae1b8d48d6ad6d96b6e3e48893241227ade5a4cb0b8cc3c0344b98172ec270b114bdd0c61933b828637293a9599a5c38e9bd70d283d9604a254e7a313aaefc2d8693de8c6e0579655c46a659cad4514c1df5e861f32360bcc94a917ade5f1c7ee3dab81b9db9a75be36e75cb64eeb66d5ce96ea38db4d9ed6514e6706944f9c37443eaadbfc170981773a847ba1bcc56da62b6abddcdb4d1d86a70d4c3e8dd66361bdb8d0dc7f65c8ec771c3c6cca9060d93cc8c9812ccf78de6471a81197dcc9f12c83c1951f097dd10bf757eb7bffee9c5e8c36fb00fab4471fc800dadbdd1c1287e4ea29d7ecfef7ecea09c8e79608b7dd3847e8dc1a70450e8f931c89a3de0b28c432a0e5d4611aefcee1020cbb8384c4672bdcd39eac9c0d304079c6b037893e4d4df623764fe573d25f57b688203cecd925ccebc184b0893dc5e21c9e51c0fbd10c9f58bbd772dc05cbff2cbc15f877a73d0c15e1949e8f7f0c8c5b8d8b9d094ebae72b489039a76373647d8e7006e963da2977e38f4f597d1477f110927a1ec4f6cde0ad87c4a29a593d223a9b05b217fec0e068cf582cc59419631c280ad9d0ab28cdbb110efe602f6d9c76efb464dd8530bd8679ff910970271e9c3207334868173b4df9ac3bc6e183a477377183c47fb39e78461e668bf510ef328a594c24073b4df300ef3300cc3300c062c47fbad729887fd74aac5a241ac7ab956429347ee105d4abf76df08081b7aead2ac83a1e668bf695172fba4581d3590e63d973ed661df6948f6d8af907d45d147d844977e921b3bcc85ecb15002af5bc4792e3fd7de362096bee41864896118d7aebf30896530f49decc37e69fe31ec96c9bf8bfa66be7fa17bb65ae118e4c77efbc28abdf68516fbec0b4d3734fd0d4d978b6e772f70cefcb0fc5bb71236acfd63c37a67bba7c0234b1e45069bba27a77457d7743aaf9b837fb5e5c3d5ae59b76d40ecf69b949552ba7dddbab9714cebd39791763af3eb0f58f95ca7e3a325969d58f9b18321e6c446f596751256be10262161e56f96fea4535e998303628fe4c8d1e91c914aa60e055c7fe975cb8e31ce5198a4888edb2f4b980efeed15e15cf0db773b026eeee258af8379eeeb869663f54d6db57ffc39c2f0408ed6e17db147f473f4e0a27bda16000e48e7c20838484881840e8741fead86939d67774ea7b33e9d4ffbe76f14009d4ef7d77443fcfbf1d5b8574be8743a60b1595d6c535ddd87dcfcf95ec474b3efdf32afba8eb0d987b555b730c8f3b5a7f3b7a7df792312d8f9dad7fdfced04ce84ce7f0362bb979d0bf3b7df366f7ebcdd97d0e9741f8e9ddda499dfcc4637e7bc4dfb12ba21fef4a77fbcda93d0e96852c79bd00df14f87091cef6602e75e6d21a0d62d6c7383a9e5e2e9a3d369ffb0ffb00f8929a7c9a985fafdfddd60aa5f0f06f94d60f7e8c5bcba8551fc27742af0edafb618e4ef940d6b0be3dc9b93041d3f4a3f3a6bdd735ab303856e88fc3847a1ab7dfda5749b6e48bdad71eef1c53cf954befffc6e88941f6fbf099d4ef3b8e98648bfe1703a175acb174350e0f6fb119c6e88df0d8836a23fe904804f2cd336ae1b7593accb0b4c976266c8749b68d4e83e358ef764a46144ff068d9d1b732099495240c2491a49cfca1ce8c17724878447bea6c85757d92e5f550acbc9304a372ef6314f14ccc3235fd5ca977cf94e169bc7589d9392b99d3d25e4f2795e412f8f59ca67d6c272916e791c64434ba7d72b9ef2d4466227ec849d441c500c6b010e6efdd0a53b9d229d6a69d1eaedd2af5fd1070bfad5af56accd18a5add675d6c6713eb7d7e5bad3e2b92d22ace59c13db4457f384c4211c9c596ba7c33659e5aac9be09acb9d82562c4ec74e6ac3f6a575303c4cee73a9dfeeeae1f4df65a0ac5ca4c623db00e74a21b61231217fd076bb51ac5588b646737b91bfa72d22f6ef3473d9b762c38e1d22f302352c78de66f41dc105070ef4f46947b4ff76cce12fadd3dc9f5e9c5eb9ecde9eedd73ce4f083b6d170177bb672de34acbb6ccd6d8adcb5845aed6905091d0cb0b779732fa98328273b6d33967f7bb534a3f764f5e679ba6b2952453326c5881582d748a86d01b9f92616bdd46f20b99924f82f807895e4df11f247a52ac66b466dac6695c3722c59cb2550a414ca6f8a41996693e9a8fe6a3f9683e9a8fe6a3f9681bc775dd6844b299e6a3f9683e9a8fe6a3f9683e3299e6a3f9683e9a8fe6a3f9d8c8341fcd47f3d17c349f2fd37c341fcd47f3a1c9341fcd47f341659a8fe6a3f94ce9b23f07c14e58f22fc4302a368c5b3f2c79a753c4bbfb15d45e917eadc05dfa39cf132b3f07bffdaa961da34cf9d5afeb4eec740bc1b03c9582045a9e12f2d4751aa39432feb093eb1b1c216c2344e6c376993eec178d1aefef3cf10626e6fd6b782c78264fc68b8d9a11cedc12c9c5bebf35459b174f6dee09c18982735360a16f5ca851fd75c617563bfa42db7da1e9ba962db73dcb32eacd171436dc5c57b8966ca32e54abb59b0bddfe2b2e37bdcdd52809c5fe60b0bf86c1fe1a4fde924bb8809267a30ffab2d3b14662bc1a51f4658700ec96be700798970adc25b59e502b57db5c0c7ea3ee852c870402fd1373ce984c9334aa256b47d6c5c5657aa456a3482d069b707162c3aaea365713bbb9d8092b3797ea852c67e3126c616c2f067548dfe66a6273911ea6d329d2afebf2309d8e0bfdc2233c97f62b487aa4a75e917e5dfbb1d3b1f24eb9f543d772fb5f48ad469580b485c17eeb915c0c923e52ab092b3f2495ea88fee865f772f4759f37b7b94843b75fdb5c24ee86a4560a6c7383a770d806b3d930fa42987aca53178675630e24de219149b8be64d936203632b13ec5de609e1b1908e93157f9ea2ee7a414c3a854acd6ba75a976b5ab5d36466e9f3406e1b4d0ca6d939d0e7bb2a703923c3cbcc4c620da8ddfbf755d7f38b65d3707e91fd7c344f7d00db99e17b21c9bd13003ab480d2d1dbace88cb4501323866003e00c7c020bfed8830c8443206997fe38696799464dfc3e7645f93fe9081b8d125fd2d86ba0ea52948c7a997ee703d46141d52afb7d077fe24f112eb456c134ddccc24bad78bbcc88b4c607f30c85fd38a41b66799fae91becd98bbc4822f17359a6bca8c8b5f04d5d527f18e4af3f31313133b818646e1f7611567fb81e6dd32a8d31dab4bcc9e2fc7619c1f92fdd10772d8ce287e974244c09f3c046b97440df287e1919191a3c6332994ca61ab2642d0d1a9d4e111a9dce8cddddddddfd42b8dfbb1eb68971dadc703d56670aeb5a58d73f2ffa29bafcf5a72ee11b6e0876e974fae37a92e8b9fc9b75217523faddce9cf9628b2658ec48cfe5763129d2aeebeda1bcee5f588492c03a83dd835bbf3b15ba8b7dbe137df4331356be90f61ce40d7de7b2cd0d5ddbd52eccd5019a12a834ec588b7a142a452400000020001317002020100c0805a3519825c2dc0314800e6b92426256329346a3a11c45511c8551186588210010020c010019a4d0d80ee03e4f846f8830e1cfa2cc6567155d280307d7619934805778c901939b898a93bac3251f03021480a3646e20243bed12dd8ff683f5fe1124ca48c89c2dca092c22eeb101caec82b235be18d1cf63e05197ac420e07f52242fde50149ce0ed185dbc694da1dfb92811704c1d8276667a56980a520ef9fb1c77854a3f248f2e3409c4e31567f659ce931730bafb6ac60ada9ebaa947013883a7febaf0b4d552c7c3e3c605a2092856c586f4badd7100191fcf3aba4f7151bfc701fc13fcad07ffece54f463f34aa4bc1d8727ef3f3e735714771c37efad150333a3218efe63788ca3b7014fc1306e3143145023364209d7be1260f845651efbf8849cc460020cd950624a68f0bccfe3dc81d5a2d6b447428f212d0c5b96464efa6bf39704da6aa49bc56f9181e68d6f66f3b2146b9826d403e92c673689d8fe7ca614bc84a24ef31878ade15c8e50c3c77d080284efd86aaf7fb8007efbb66ada3f9733f3989d6bbb8d9547adc9eafe834afdad18d63b64a70322729e086d31ecc58827e237f235d61ab53e430dedfe7f36e9b780a367df23e076ba366f7e5503e190001216618b62135456fd2cda4b3b11f3048526436d04b89c5002b211f762ed46e79a8010d830658d0681e3b021003c77d557405068415482420cf23231bd3b66f28dc3fb18d818c02cd218b8088df1b047d9682935507519be9e7e089a9877939e86e4533475a559fa70a1cded8faf6b17069bca10504b01139a17e66e92b104ffc7a7956c5f1a61bac340c1cd3ee4015d994043a65e2a33224c0547d2260bbee40f3a93575ea62d60de7bf9d5138aca312872122bc392261d67962dd3f0f0d60ae450ba023a56204dfc61999d8700ca14a62d5a267933c378c10fa7cc356fd82bc24f4c3cd0ee1d4416bc12d4e508fa5c5e48ec33e8fbca84a1d7ac4a80293fdeb0320cd0b64c878435547c76e692cdd8299b0f0940443594817953da1d2c887ccbda8cff08235b7cbe9505b217a80d87f9c3624943cbd4719f277ed02ed559fc59a8048f16a4f6694ae6689f44325cefb1a7d9c11f565a88bc2c0bac5c3e5709c3d09305c655d0a088e138762bc91efe0db15d336ee3e353244f24e3d0e47ff92efca26f6cd5a2901d5c33bda16dda97e39f16ace6cb981e705253c014947bc37ab35684d07e4c2f173597b645765e311f84add75419e7ca62a5798de94bdac83fc2acb20254a5d2ae94620db6b7960f22a2251e4014688e199b8e25ecd1f2015e7a25ae8fcbc45aa3dfc3986b1d0fe40913844dc4685bdb636c6122810b0c9de71d836e722703a535b367c2e440671491c23565e17f20e8c3afe24d59d0d80faca4af4cc196f89fb542452ad5384556262873493640673330f9cd32928b8519f13bfc76b9aa4c5fb89404069f350a70aef74ad427894a6b9bed0eaddd14d8be10632a59e9d53daf28f0cee1a6770ac8d2320ae489753fb408a47cc239a9f16971a031fcbba7420a058f6840834749ff82538fe5cc31285f01146e4cc26fa5c24d45a8af3e58e5744787e28142b12adc286048925948bc004c7ceed3a43617efbca24993ae3ab82d090a0f333fe301c8afc657ad136c83c7b21482d2c678164ea846a2b64d661b987b008e130e834bcbddff54c5a5e1e89680ac151a5eb6280ca5a1b4b89ce8f9074f63d08c6933768fb49b427b16e2dc8f5178dbb2d068c17d73e8f9bc8ea0bbe3f6c7d7fbf5082d558b8553866e3e5e06b77cd6510da9d53f825912a46cb5a6ec85758523e2cf013b4907cf068f59a10324589bb8e9f3ee94a555aaa53527d31212d73c06725144b64dc4f1e73e33a93ac5a4fc5516dd213eb3974d6e5cacdea39588af7c1ca6ccaf0b01853e0462446a068b54cdd8a255d6848243e807a07816eb70c667e5458d5b8debac82a469f652e1cc4b07d489a93b9d534f1a5b40ce3b64ae6e0fd9ab0cb6f712f175ac7bbd1b8bcd43a3e675f490d38e1c95128be4b1851aaf0535c2667e71cb64dcd28e4113341106a98e762622a86cc1416952bf2b7b1166edf1a75960845bc833af06e29f94928a2e43b0e976bc1a86080480dfb47a0628be4481ee5a075f7116cea61fd80c225783e163aa56db9a7016bb5e0b8fc68c95c809c766f3129ee40927b145d6260e476693463dc5a01b44733fa2f0d1c557ea887e7ec28daa9a568c8c0857f008ce7892819e963047147e01b714f1826fb1de4bd8d3f90f877444be5c0993b6aec1a1ff89e3c2e64530ab4a34483ae007f5ceb1cd42adebab71c4f89430935cf1cba2b7b8036e926278435f4444a5842f471d8dd47b84125e0c4aa8042860f80bbaa3b19c2190cf6debef93a1186784deb927acfb9da73dabd927373640bb7ce21a47c09c8499e58abf1c6feb445049b411185ad1236812969c2fd4ece5c024c88d84392e10afcb8d11a35f4725a16294844403c790999e717cb7f42f331d23c56d920088fc47572ec48d0a49428b4591045c36990a02f596b762fd4888bb2e8eb4518a55d787b7a7a20aee8d8488ead0083eb72d454dabbb50e8f729ea82ee7e5e7aa727d67942b3be367fae06cf2110dc5545c269060e6bbf8db5b6dab083029135c5043e1ae21b4b3d91f034487a4b3cc74807d21f0b92e07645303d2a84e02a30aedc86f51db79724f4c94b82966b4b303b214696b247a143b3d314b4505f0f0532b5b85761cc29e28bd60e88926652817730a7c7645f65722881eea5ba04b709761101323821642e9f4ce78d4a15aa9f05817771501d70e8f0b1aaa54c6772f5acf92b9b1493ee0ea50e6ee38f869c41b525333b5968d8e9a6d38175bc4421336897ec4f37d66d0ab117a4837be38f4a02351971ad7ceae08ea72fd0fc29d041a1efcb5af57fcc97f839083aa0d5016d0e6e45d41c602396e298df90391074cfd59a98831354d4b7c4e580a2f948ae2c070105e2763630030f90f7319503a177191d1a85eca8f785b6798cd8f6bf239c30e2000d4863ba3b4c398808ab43ed2427c57923c3b943215b1e268413a44677031353ff6f9853ac30d0a11215773c964f0e4e3494c2b8e7a0d92d764cf7bf714e58f1a2994b0e661eb06664733062eaffc63b62c5c0a23c7260620b54a39e0fddeeb0b1a5ef27871ce06e5af5d826d898d8e6e58f835074b961efefa6e3e40bb382ec384bc21a5ef2e3ee3830173930373539f0c03ca464cdde7d4d73d2e37b8900ec4b48320999fc6412976a037947c531415dc7b4e27a8485d2d5ff26494202df24a935f64450dd809b72e0e09e5479028addea504b30f7e252564e143c0c9746cb945367c2a5e2a9b6fe1e95e8047ba8c166947360c285ff364180f568a6f9ed0667e81334674a3cb0730cf077af660b7134307e721f1af48b7ab82a6bb6b1cbde1b5600044ca8cf88911dd5c6c7efc416b319a3679b0ad554a5e9d144769f99709440025458195d9829a480875558bba2aaac895fe54cfa5a7886e04f58dc7d7704e07f195937e4842bcc5f18a946cf77e7d5a2c516f751afab56bffefdc4c24286e8f0f481eb1aab92962f048973bc71f8aaa373146dd1c2f61486cbe46414b48fbb8a68e28ba5e0168a9aace5eadca46fc0b5e41edfd6efa85b19a04c27f109d740d5bc1f2b9398961c409ab262978044762c1f95bfde12fa389123faa395c35c636078295c6d6100e0855981dfba7e0aae4f05eea8ab3660f188838d50b2f0e191f9ef49e6706e7e7b9189ace95f7c2fa5e3ac59fb811d21baf682e0aa36460626d5b5cfb1facb318ea331dc0e9abb0ad786b4d4686a18828bf77cb32ed64b80d50486c205358af03949f5cdea4b97a1cb65246611c3b529b836e55f0efbda38dda760257a75572d49b875e9a776b91796f527ea53768992585e5c810968d230df241c44eab2818b554381a312dbc620b1ce964b907392b63b22fcff0e5ab9283e2eaca746808cf37c5b2e2904aa25874c2fb05a66969f31237770607445eb4f0ace69ee20fa9aef2ecde465441851c249ced0098eb55b593e18e3878de083d380c6dd75d948940731f13c9a3b22d994ae2d7096374adcb935b2d610890a4ee4272cfde02b3769fc56262eea03d5d799313a2c7eb32de8909c42808197b683eb8aa8ba12df43b00ddcccb558ec0294a03eaa09225baf30107541231a558f73a7c83507467f5ac88199ac66222d8054aa4b91b58144f519723668698f3b146b9a1f0ee02c84ae18fda1e5eca7a92d16cc94aa3c24fd44f7e53ada60bae64aa9891b714a20165bf66a9f3f1145a2295a4284f02c11c151e1fa9b2d213b474e532d348312f86f615212ba657718d74de93277ce82e8fe59a67ca70950f7823347ed6b80cf2b8b2c622a267dd6034e8e41d8ccb65008ca06d18a0dc9505f80e531e89771392c77e097faf3d233f9d7d804eb45a0c74b32caa61b582d4540f5e8b83f6b5e3d8fe2700f874af8ce99789172d34a3136167c1079d34ad8c2b0fb62d6f329e57d1d0e655e569cea7ca12740b4fb9a1f04c6da28d38779585de734198715e8d62a9350650e993882b143260db33d82a1e141140884bd6f9d25fd05ea85d08f8605543fa56e5759c3c8ccb5181980f804720c5f9c58f64a168a08750c1afe38cf061b9c90ab52c01f0dbecff02fcfaaac58ab680ca6ceef41cb64310ba54b9cc201cda1bcd50eab08f46747eeae58f99f821532ff8b7c678df0fb1784af81e64d788052c9818c41758036b26879c0aed7323c86bde4ff14d23984d0a2b6847edeec80f06f475ca121f09fd10c063d29a256ede611f3eaf85ac18375f50d470676fef9b9b02bf657293e76a65f469b2d36faf49a240a5f62ec3591c7e0a687c27f61fa34daf86cad554540054504ca2a5d5c68f6c660b46ce0da5f7b526f64f855297002b40355428087313a4bd366278cb16898f06c7880bc0dac4823d3d33f27e6813cb888abaa72ff86408a952413883e4815e7dda57e8fb1ac3b7570309294cd3c6e8c0c7657bc8ef124b70a87bfd1fb5ca67857b360ea0775cc72dcf43ca9febeddf2c2e11ba3d7d482fcef564d919f31a02421085f32c5469c3f3a7fc95351165f6650b9ee9470664d683de8c880db51480c51affdcdfa3e6891a3a92a202e5e1032b59b8c173d1309e93e7e3c5618417ffc3a20808a20de0f0fa1104c47edb0dd3f21a38431a4ae0957b0ee9cc71dd8b57528706813e67c9f7a5bd26e76ac231c83a00e65f327cfef090ef9520bc7f6f48f08f0483da1d628315be0d9fe66fcbd45530e8ce8c3494132648d0b5319cda811776604ca9277a378fdc85c2a89b2a90cc9afcc956e5cee4f7adecb874211a168e329b6465c9bfe1530148801c55db4cfeae7b17a40f53c543d31d71d317e78247f4ada8ff1d0cc276b2434edee0d89044bff4307ec92a8faf1bc35bf540de6c9e5ce7655c29ba49efcb26f38c0b39e8487b85f72e75d9d21ef9684c098250231c47670278e2ade25afd26c1ccc8f596d50fe8467a33122518417d015c8a0a33b361ceaf081851ed7b96de2aae145c1051e9d24f535693b9252a7d654c9fd9e4b0454205bfaa08f84b2c5d844a0b3cb085e891e8b2c8521514ff0bb447b41901d82001a4c00c03eeb64a36db745e409b878a91e44cc905e546a1ce3fbe74402610cdae2232ed6f2add607108536f599f81246064f6b5e1c2064349bd69c3a1145e4d94090d6ec8d496446020de4a96080f30970957d95b7ca0500f5fa0b75ca9593e52aa2b7cc2a0f79d6de7498c7eb0711720c4829b1e661153fdfc7d888e7802c968b56983aa0c4c5f64985ff687f924c16c27f5c3ce8482431bbb714d6c07953408a1c3d2dcdb1ee0242f058b9d092c94576b0ae02a471f84610ea889538c5fd1efd07bf1e9b43415fec21e4068032e53622f1420950e8e75d9126b9d1ab90530bd8749a2e34951bc7abd90f8eec869f54bfc380ed1ca4508b2e0c882446e5218dba8d24b6183ae9ac74cfb4b4830da7c53a5f6f67659a53ff62fc98e2b700dbed53307b9008826a85e03d681d026a3bb1d8f016837e468428378dbefeb7f3311b97ae4ec0f1e059131f8941ff98166cc799d8fe94f85e7cfffb477820ff9369e28fcb3bb7b858966cf28f2cf280c43d69fac400124f7cca66c7891e11a4d9f3bb24390169269ed7461ffb9513989900e6631c3707704bd334e81bf9ebd2f72b5a346089c6273f6f29f1aa8dd8cfb224ba4fef4eaf2896a6b93dd5eca53855cb34ea64ea94f901b6b38eec34136c0f8313bb37d5d086d8974e0b4c969237c54d73c2db54112cc9e692c16eca182650e6d751a02102cd35cae86a05a8d0d8c08fb8e0e919ba7833b61ab039bb95c2bfa454b96edfde3ebd42b1ae986b400ccc4a9838c01bdcece9ed11d1a8a2afb2e2dd6c85bc61f24ec70ce70251b5b9a5910aed0f068bace6ff77c4b6aed7d90b73b8155d9552a4da6b54817d16e681fe01778cce816892be8114ed2e0af2184dab3d9ec3b76f648b2c4f9f32e4650c2c4555acec1dba519787810a129b5c29ecca1605462371ceb590453af84a5ccc870a8344e00ae4f8dc8e203f43a0d819728a720786347e21fe706f9976f83562e1da475811632a687f8d31432c75f6d583a919ab571ec28e165249f80bacb160b9b3671acc3a0a654b56bbc060da5342a05aedd0e5eed7b76cc1509abff383ac307fde5a1000c02774b57e60ac91a3229c3ee58e9b18190862d064f36f5d58dfe936ca56d4399abe32f74561026de2a99c6d7bcb73338ab78a8d6aa66854d5b821eee069395ec9fda359a0bf609aab00e7820808443488d303e8feefebc36b6988868c819aa5dda0f4ea6631df1e9fa8640c284f86e5606dc7b2d8cb9dbf1f5ff44950e009a522e667c7a87a05a07a074ea1d00753f5b58de9d6af72db731fb0aa30322e05383b02bc4f73cce32eeaae6b2d78e08ed95ded3eb2a47219f72b11a6d49845fb20b751dbdb33f137f1cb36a4d82bcd390350c70e6629b0d949a3f9e0e6fe04a04d4aa9f4d526c10ffdf4866f6af7d09171de9ec67616b0da6d931fe76b644f10d9dc31632d43612fa68caad0e67735f9206cbdee136071023a94ad1ee87b285e8d4d5c18eb064ff604d5986fab0c274331ed8644f76028040c92cb4ffb13642f8f68337fb40727bff0e81e0a249679256170576b28d36b3c218734304f60007526d5a36661523ecefb48550ae1d4420679e930bc298d25f987487f9e6c1922ece20620171674a9b23a9bf16ae9f9869c5fa296630d3207d771374d9af1a0e526d93a97c0732028464753ef010340033c4ed4184d20a29b4e30b78d1e7cdcb383d84c42b041212acb10bef3106f46449708b74484254624c623a43149ec844a302998a8cc267cfefe8c2814abb07324beb43453e0b540bd2586acfb7a041b464529c4db973780da50a3b05e02e6eac8c2d8dc1060409c280cddc84f66f64814bac012a44ef040009143d882f453487e1e099e2da4c2a0bbab3594e9b32125a34c0f283023b9432f7c27a4d12b411489f8a7c8797a459ea7a984d6a514cbbe080a16ddc6a8ef857bcc482603dd355a5563b4377a8e0b2203b12ed78fb3dcf771be45f0d38d07eebcd0d1b45ca5ea7c46dd2e51432172368f0420f784e35a2aac296ac1090503a60937ccc6cf555f1daba135c1145aab92ece1ab23cf416f642c22fae08cadb8e9618c0eb8fd96401257fc2ad3f6eeed8e6ee1d073a8d102c01944d4b7ed4017eba2a2cb47d2ffdb0a200112d67aaa6e01028379e4e596062afae3ca5a4595ecd8bfbad63da926a825135cdf9ea56d6f44b7e950e0138fe8adb424d79018f830b8c3e80a400cfcb642e8fcf69edccb3bc450d40f39c181c065867fb1d5c7d293a84f2b4206a414bd22234f31e41f2b3295068827620f82dd3bd4e2a3612fe406f5c319985a32c29e8a771df1e36c3090c5021eea8a15f3a38d061b2ecd30a13dd95e22268939a8658e35f4264266b59be6f0184beb85ef08bbce3b4e1691166956815648a3c2a16dcee218cef0efacce36017f03da843882893883a4606c1f1d2606998f43908a4de3a8bcd05a69cd331645095bcff506c2691814f9ef1c9c2d075cf00707ccbd635bd9a8f0de4466f400ef4b5a4fa5a5a94c3a0ae99852085f1492d6f9f7166fcb7ec0805be49a0c50f8f2c2081a9c13b250c0da963e66b975282645414bcdcfddce5e0e30c96e9c8d3a340d41abca7ecf8bd76ab8a8ae0f0100f503c4bbc7b35b0e6e905319af06d9977731234ba83e4c2d0f25494f6854b1d56c06dde58695bab23d4027afc54fa579859eaa9a60457b4e73af0af81f5b81de624fc1a3b7f5d2b304a860d7a37e98d0e6929bdd7b5ac9f054c1e4ad32cf37c5d527956cbff625b9d1679c82d71993c2e406a18176f9cd4405ad88293fcd0273e0d807da2a1d064cc6702f4c3f9cb206ef0ced9d47ca10f7216a803f3a3c8401e559132120248308e1e7adad9164996084fe0218df4cb9d3496e2167642aa1177b1e5cca5c9fd14d6adcae4659ad5e7adbd43f5902f42db4ddf27965d1739d206ad45c4e3f64267b9e9f1fc278657316b0e6c119524f820d9581fed39f16385c780067df14f0b5df187006f1766ceab73e16598674ad43aaabbbcbea54787b3b24c53e691589ff38e38fab0fc5828d5e8b3239c663f4e735065538d43af946e65baa604a54ee617b1306440aeb25f9ed67cad540252b4201a62d2ea4584e81d0ee67fcf695798c26a55c0e1ef5bc3e29dc41a6bf181223ccdb7a14c33c5f5b892e8479efd7a9aff01b596c35db230567a36a159ee14599be64b6b592638850f357f806cc0cf7b13f3dd899535b0c7688625147f9eca372d862a315d58fc017661f4e2336e2ef612be766be8a0b674a53e3ba5027b95de57700067d851bb1333d8270569871a9cf5018be4aac5e79f9721082bfc28c28723d82f0b6ce787e48aa85809c3b44fe21679af164ee7828cdb02dde0ffff73e61480a3ea9dab98a5014923f19d1cd27e70c1c4419acda8b0fcd4d3db258208df593514ce603de71d5204e584985d50f063ce6643e7282cc358e94d888365157a7d0b6bfb3d84083e9075238e662de9b05e9c76c16ae2436e7fef28c0c5e48ba1eb8cffa30836d6a048a0acea70276a3848f1e013957733f555fe4a47f14c276497f7c09f5a1aa395945f44ccd7d5449919f906d3bb1679ec42032f253c2373080cfef690d88ac2570a918e4d185be127f10ab7c870e8f8735b0288b0837f74067dcf90cea5334ecf62877af85333755a2758fe31fa9d38b1fe2b9af0eebd62a030a58ed9f30758e42babe9db29401240131f5d659b13bad1b65eeecf374dd26c50dd44a51c43406e319883ee2b66fe89ccba4244ab34bbf2228715206ead3122da243118dc69e10ee5c9ee3abb0294cc3633494b27cedb72c390ad38f118f394fce0bbb4b356334a7ddeeca27a96b118f2b5f2500c1f508c9156a9b761772f282361c4a13eb5c0509aa68293ec745535bbb9b1c179446380f9b075277f322aedb020c61c66c97abb459fcebfbb1c615f663668bbed538bc49987c988ec54ff42f255be0c37984b35602cb6e6532e17e98465e3c86274852974d3a99743a8c16b2b8479c86ce7e694f743368d2e9d580cd2faaced782c77c2f555823e188a86a9c5b2ca7f56313e6ace8f8e12ca122c52709ed6461ba064ba46016bb4f3e6682e59c59e7a0638964779cc27dd572606479c8fd75f7bc262bd1b1655d6c2b84c5c05a2adf514ee10ebd50bbfc0f56e6258411139c58a09b3aa80d7b5f313929e5d272705c765367ebeaa5a7e6a882c7b2f1fabc93eda7c0cdddccb8fce8b15479c123a76953e75cbb5c9ecaecaeff30e9dff554a7481510eb8f978ec3fb18ee17de99507baa9de009dcad29474f088fc87c4ba750018801e7898368009e4be76cf0dcc644a45131a4114617e5ea8afaa958d9ef0c5b44ce7bde1f8affba51b55456a5c69d526b9f41148b8900fcca3ac490f02f5cf19a2d79d705dd6cb353635630df4119993c84d74354302e404d90b8ba8e8f60b132ba6c9555481bac4f1b261d1b120f4256ac388e0627a06e2a0adc6653a86c67eab2e071b4980529d145e0c94aa360b858ca619e2f37b793352ae42552328111885e9b5b30fe6162d281f964dccb1fa766c258422998c907fe41754f6fa1c3235301b3daeea39cc592268cd75529cd0d5dec534a13cdb8affa59006b5cd57aaf7fb2358c9cec7274cb3ccc952439f7f5ea9a6a62c9cbd12a6a38e13214c81e1ed23a9c6f32ad6e395344eb8260fa369f716b7f0f48f65d1ec10fb0558c3b2daf9b5635cf66ef1a3e00012d476d166556bb88239cdb987e27ed5ad4448db180400b5850987c209427d7b938fec33d19797616843c6ebf1a1865b058eae3e9454bc6a0d2dce79817b363b2f9b6621704b19c7c9858cf0d52874f8cc9953bc9503731bef18553dcf63817528ba2b01e95cd6b48b0a38205270518fb0485c1e8c73ecf25e9c2841f1ec26b3a8b0c13a32ef705a114736ddaa2983c96eb70b22cfa3ba200d4cd36d91cc226b04d683d0f7b13d4f6e8ae12b8e0b8922f13ce54c4191aeb53665a80eb86b5f3ed2f54ce4cc3f53896d4a5fd79a2a55c807235b61f1766416468c51820ba0946aa709bfd657252fe1ddcda50894b6df13a1000e25ec462742edc63452639c5d6d4ec54c7a840a2bdf5bda281d7ebe816f784003b51bc04b707627ce84d407ef7e7203e1c3c4e81690d79e86d80cd8b8ec45470db0264cce02cae24fc417be43e28ea6874acd67702b9c863b76ac567a8b06b350138b2b49c1c358744a47eec5f657409b20703143a1171dac71c34d3e3f6bfe0b3ef0c76c8cc68f44bd9121842197abe63904ba6d20aab952d7f3748332e0bf9c6071133f498e0989681e8d4eab01d407b7be00b315cc19ac3e908a812b7a53ab3a361e5888130e440d3a854dff9279e210111e9498a7eaa0201377112afd35c0acd840f2af7065b75c3179391225de81df1ba047c8fe6e1dc7b9c20ba5185bcdcc739d23f33413bf0eb44435e140138047886ca3bf860a31eea734103737090150c9ab3a201488ba54cbc26a8a0e9b70cc0a3894700453683b91e88385c9fdf8916658c9deb8e7c18195fafbcebe8a3eeb27ec4b71b4f03f681df55b7995eeec1b6f31ffd21723cd78d8f02a7cba1311ecbb7f42cec8e009696ccecb6f87c97d79bf99005d9993d76f9163b08e4396d623b105326c8d50c37517531ed7f66a5cfcc913597801a6bea27360d3111b73ff4eb78174bb33060f87c6aa586db30a28e8abd8dbb876290fe66410121187e6896970e20012791ec096fd6e239f8c92d70db9fd47750375f5bc5cf6bf52d79777788be465197b7e27bea05c6b659876a23e66df65ab11ee9cbc897bb2665f0875930f54229e0f26c56cc10a8ef099262ce5e54efb8f19100722edb90742ded4002983f56b0a7cdd8e4b83a886b3396236f957512f16de3caaafa15a919eea092cf89665367ad8e102c97d4ce5b168634b87d3fe86a0459f56f643a0a59de3ca98eb62aa05fee981a8207a2943409104f3072b1823382165b97675e3de53e1c856e589f03dc9af8256b6b314c849021a4e027d8169c39fe75994b06a189209e23b1789e349afa88782008de4ab5ccdaa705d1f6d9d10d4342860e226ec6ae9d4f25651dd717ac865eb829ec9a8d8e532c2de8568e2d0d335be60a04a5fc8c5eefd0f4e86c7e406f1828f32316056164efc7579c622eb31aca2d08b1f62eca06e8e15b9dd87f1a014e633113f00aebf76d2a1d425a69193ec0aad550c3d057c151e4e0ed4fcd71a714ae9d4db71e949b0231a283fd417bbbf48c9709f14e1b63a70b1a9b8cf91a6fa67d819678f1c71d142693b8fd20f49a07a223bfd18ce26f7e70986c6a1be085460c1ea5f62f73ba4912c3f145dacde9be4989d4cba2b58614512bace2ecaec6989fcdcfbb596a57732c9cfad6f7c62f9200a03f88c6db8d3fb276a11bf15656968c2227707f02e8aecdc772f88f7000de5219c1dfce600eeb145d297b5a6db007445395b82aa6fb47bafb7e848e7cd1d96fd245be866eae05bf319c50d5584c04aa4547ee421f833141a7bdce16200ee5829a1bfb44efb519642eab81b80ecf5386b07dde7d89e36e856355b095dcc8a5c4c945277b3fc90f12ee8376865a0ca02f15f0d89129e0d0868072f764aedc878b07548a7ba890bed32f967e483ec6c34eb71c0d82a9bd3558ee315386a543d603a0a4ccc02196af1836bbdfd09460b226064ae4e5958a7d12d9bf59764ce12a68bee8c01383b2e2b17087b018e83f2246e422294f035331007e680c3d9ed68fd67bd813fea82b33aca47568de634551f7043619c924b39e53cdc72d2a0a10d621c632a0d38f6a8d2821bfedf3b8e01c0b073624892f45ad2631056ec1f18a048616527f0c63a494ded14b1eebdcdde06121f078c22421cdb8060fb9fa46d12998c1f8178b85369d6ecf61118665b94f49abe93e95fedcd29f0efc372351a086d853f27d836bc4ffe329fc445d1b220799d5959cb0c16ff1dc50f310af5d75ecef2db7ede1fad50e76d4f77098faa45add0f296cdfc231c40b6e7fdeef953afd5c0c0cf6d5c73c16af0daf20dd461b2c05468fd33f04a07e2f253de8090353a7b11f07c92a20fd269a9f557f12e1780f6c6196dad342ab87e6f443e2f4455b118efe6791a26530e7255861c7eb4586d85fe1c12e46834f0b695e8f974e39e7c6ae203247feb8b86e4c9c28e46d85008c07d87e8558da4c2793a64e9c1897fea261bc6e24a71ba844cf42631c3652670c7d9a75a74b4817e4d3a55c217eb471014108df078d5c96d13513eab24aa653fb3fb5a0cedb192f34098d7b1159ec8c057df46e91186ceca919209090652835536d0c22ba17039bf10a5712c982f60e9848c09d7b70b88f87fbaa9c3bf0181fc65a5a96485d2381933b0f3f7e7e5be84d138f296b31b0156266957956455386472d4a1a43a0110f71db5efeaf0504e52a7bcc91505153c80341b23887c1be995210f8e5b0e5b645e0a98607125ba8f5fb0fcc558de12fc2780ca3a63f51208804ec0c8bce4c112ebea1d1132207ca910559c4c507fb111ab71e1df8ff10aefb45ac2cb3eeb1914f17d1fac843599fe39c644f229b383cddfe1044d0be395762eeeaddcc0ea69be809c88f1b072476880db27f4cb7ce5939fec3109bb3ea30b737325e349cc9ea224b5b50739a0a991f2bc09088da7179a814f0f15ca465595b656126e6eb3a4f99d5d473a478f75412491344209a05e5ca068495443b22b048671b173c4b759d58a57700b12fdc351e04770287be3ffc4f3b6667cb4fff3f55d4992b791988960181274fb7a7e9cba37d708c5367bba01d960f8f733165fffce00167186f379953597409c70e6253e73d2b6e4a002aeaa7226026a61772dd0ad3e97ec81d2bef243cf02567847053954a62c77ebdc655e407a6c9a3c426b107749be3a5ff98a364d9326a0027de1c7c1dd4f70fe3a88430aa89293fc1532d07296ddc08b9a4575de77c501d8771933b7b56cd6d4a02468839824e954e3657724d3e295e95e79165c312f4106094adf45fb4e507d23340fef52f27937026417d1a2f403d379352f6e7bd652f96b24a12c40df5a1dfb654053724c146d970b9a9edb13b53bd717acb959431e0285ad03043648b06359db00546fc6d13ebdbcdc26bd95e41572ce9ff9f2e9d0414d652d36d931bfbee41e1aca2b990ca44520b94952f9cb6817f174c4dc606ac1acb03dbe172584dbccc9766ea3c5897eb6e01fc8b3f40e1c5579edfd90b95a5f4730b4ce3963cb8e839883108cacd14f8d0e3d0526589910d5dc63616032ee9d21d4b01deaf9085295ff2693847eaaa0284c0375dbd207bf09baa1bfbe3979c9832dbe5581ccab550813650a3c90904b9493e28a533150c1c0a92f312ecd58484a4c1a8556502d46402987cb1cff30281972896c8e16be60b07a48a85d0a28c9685636440abdf67d38fcff32b3c396b5094f047f09b596c391cd6e1fbb6c04513c2fff49165788e0dd5aaabe9b99977a55a393c5bdb42f632cb3103ffe29e8a0a29935baa33ce739354f1f7f1ea09cab8c44fa3d66ead4c4d39a2aa3113abaced2d346308d0c5ef2f8270425b5ca0dd2394f67f989cc747b2e301c3830fcbbca9c5b1264d00bbbb4cceb949df8f9915368c9667231503b04fa4e6fdb9c97c5c74306c3fd9a3987d854c721b865b17493921b40c1ba875d3a87b9e6d933bf4a57011aeb31d609088d3b33fc0763b0c725b576642ddc00de50ccf4c7f3015b5eb1292d704a7c1b3e8b109023b1ba9fca1dd5652df0115f1fb69ab2ae03623d578929b187bd67322773474b051060def029e4c9554a11f9636509c8e97eca823b51d2932bad805991f9dea178a890e754e5e340adc9d59a1725d40981942e654a1802a3f2c4320b87120469e4c45e51ad8379a2bc29b2fe502f336c222b75799254103bd6fdc0fe5769cfcbb95ad1f9b4557731fbe03c50f53d249d37bf897a1a696b2f6730f66c6fdb3b48a7570072335806d396d392e5ce2647612763c36728b55bca81eb3613a133bc6cd0930c4659ef11acf77c632ce095ba0733854fb06905c39b76ea3ee1e9beedcb227ffe2c03ac6b6b1eeebcbc3e222bdff8f91be5624b13243c2c58fee0f45222675ffccabee12fe678a0c4c8c17bc30516067ec9ca33166604634138f791ee032be1a5ce703a09a137ee99e71337b80ae0a0ddb8b89c5c97294788dafcbe7964cf08067e37d9f4d2969786bc0e83a45b11ae4e13155f65ad988a6ec10a65c200ecc311b8c845c2ad3de9e031378eb86ab65c168fbaf6d4924a6246a6968edf8356bf35f870a7f1bb2834167260d13373bb64af550d13c8c5282b52034bf4f70670f0225cbcf26cc07b4b30947e55e8bdd537b5950ef158345345230ebe2561437733f70af2843900485f60e15a38599197199329612138d78e62c1390f790a1432bca322dc9cb275a1232c8ce0d89f2145ac425ea0cbfc2a6635c6498829d1d60449f133a4670d2847090030773e29d6610b1120f388ead3d648e373f2a6501b8e563b8063231034604aec3409c501d96ae3a63d7782476aeccf055891649383f009115b4495376a41f9009f217fe374150002858b5c89e62bd4d31a4aac55b42ed96da9834fb0577571174e7664718377e4ec614364534d05eae533079c3c40a8a25c3f6e8f977d7fcfe66dc6b8266db72a69bafb8bba85b010af596aefe538b98cb25a6c9cda8c90a71c830ffabceaf49798bb963df91b933b8e059dbb9e3bab69be2224c5ae2848e2c1882e6e310473bc97b68a2000419c379a582ec514ae4d91fe074eaaee195f54b717082d4537d04fb50485b85326611c8fc442e1426702832ae0cdd54dd048d8425f0446b4c7488763ae75c63e7e54dd04be1629a0f696c22145d57c111fa6583133851b159d0e1171acfea1a4b68441f96b6f7c6a28b004341d8e29626a0e2c90ad7f4c8f55cbfd442fa2adcf0753d171d389263e55a212556fdd4d87739ae8e86254b9b0639a54f9875d20c6e3c01c11bb73a3e1d912274e6870d79204561018b309cdb7b20ea4161012b7861327d7f65132dc067adc29bec37895558a95e0b3eafab9bc87d2caf5901d8881009ae09cea72bd00e956837c56ce44c2b5bdd38bb3e5fce31f6fd0a0c5b3b3f1a83d1dfb5ec8d36512c13468e2cfdd1783701cf4a9334cb97ef2e0660a9ed38c59ea445436d1e5f911881139dd1f9012fa595210b089053a84ab3fa54182c50a616ff9976a247e422980fc41636870c36ad2e0189dd7cd4300b17360879bc0a02596c9b1c694c466585c1f839ef142e81d70659331dd794f1405fbb4d5e3561d0ec3d58834746f136330338a6731695f2f167cf6245cb209ee586eb373539907d1e725f16cbcfdb261ea9a0c64b68023b235c075e4fbebbaa0c7f9bf7a0f9cad5fdc5e92a7b1de6ae0e66118c45b6b50123497eb372fcc9af808fa823cceef615f37352b44dac7d9f203ec5dcf89c715f6905f8b532ed583d6d27f6ca630a5e957e7d6eba5afa4a6026d9b03198f2452c5679cc5535b1d2bcd3e2d44ede01dcc034aa9173f708282171a0545ad94bdefe9e371cf5682b8a2a11df89edbf8b329dca7f71168ee7966900095400b711c3596c86271eff851ecab5abf227385e85b60202b998371e77acb0180963cd14dea8343c3d98ef6e92c7827092159618bd89669338be6fdb55968f43d2ac28dac56cb17c08fe137697d9f922179de1913079c7cc94480f97a2ab282ebac82cc4f62d22ab39b6b3d9b3c5ff996a5b923f1a1719aaf896b9e82c723bf63db22b692ee6a4adc3f0ebde4f283df20852745360131cc351ccf1cf93966e1f5b1878d142dc50bac18cb7e50c910d2966a01d10676e18f9cebb873048a09605cfe801cc4e537b192723417b09e2678d9ac19dab09b1581cf4a5bd61b545bf34e85df05cc2bc350c8e9843fdd222a9b1e26338390cc8d05132c22d0cbc2580cd95405b3d90de61c27b3d27be310b05e224ca92bd47d14bcf9f9ba8805b1daa5ae8a75313b4e8331e9072688acd6163a07e076ff371fa08d4d41f52db86d81abcaaa603255b3d3c46b1ed29a9a2a55c572cbeb2f39a0e91e2dae38b5b89dfaa6e9ddbe5469b487001697ae199d3ccc502934f37e482281bf89ed2bd9e7d235d4c7c8b5182e86efc30e2e6d4f7643ec3d3803ab14010725e97fcc98498cd72a2bdab4998cb9db585abf0ed1e761e816aeddb973d5618541566d7f4800883a6cbb7aa6d3a617dfb0366956fd971a6cc4108e52a212f8156e4d0bbb7425e0281bca981fd5332a7bdf08b862b21cbde357ec7e2fa51313e4125efe0b688170471a94985c0826551969c3082618b6a8f30456da69fe7576afa578c58b190befc3a3c37c19ea2dd49fc4b41e2f78722fedbc41d9708283b014b71841c105e040046a557c040d701c5a6ccf212075009164d32d9cd64cab5ee284f2f51f9c383b58a4c91cb31ab55b0d3483c905461df1a0faf4169a1508faf4829c3ba4aa81172fbb6ec925a926a676f8efb697efde46b323d59aabebe83e9df6b6cf6255a30145f71b407893e301f21522cb546aa174ec56d8a6cc701d4a8e780c809dd63973550eb6e70e57bb808f84467fdb036444027a2e07d048614221409579f7a1b0dd7d3575b6bd94ce2077abb345a8b98d44152c1cf0962463ddd3df13cdcb3c9864aca47b6862241f9e30e7d30fcbb57772510d43a16768fcd9fda3a6526f154a73cf8ea2cf87df20b73b197a17c461585b8901baaa133499924e6fa5e6fbfc940de00f0befcf28e9be893f7aaf1de69227a6987e178add681fdfc2f4c9a56cba8cbb08055cdcd841839cfa4488b8dd6db367dfc2af96500fe96872e2f93d2085691d7f5005ccc8a922202be68b32a01a148348eb6c12b65f0bb30f9cf0e1f2179b00b8a1f2e81c8edb47ab1b423d1127a6649b80302df7395ad7aa05009160ac96b4f7462f9e9bd8e3ba550025671598ebad36f8fb57d3fbf61429f5fb458d43d26f599978216f99f210aacd4a40b872264707fa613250e77003252954ebc03366001469771d7ffc72b66c1143265e812e7187828ea59bf0405590a70bb2341a7e34ad05d5080d39b00daf30fbe9d1728391df5b366db81436b562f716e187ab26bf8c63ebd026bb8b41f410c0f909b8710831370b0382e9e1384d3ae1c2cc4cd1d4e000a78e454502038815ed756c6830ee5dca46e570562b2655968c3b7313a6320fbee600c08b8c5b3d5004772fa8231296c2b2072b687b3f61b8e1706a06238ef309244babe581de6b9264e8863a6ed94dbb8b7412cac4252c698e0859f00968cdbc49ed5b06648185d58c55328f54816157b31fac4c43ca9b022b6f8cf184346fa4ef74b1b8b9df09583c6bdeeef53f1c61c033012a8c30df7efc8980b9f365826c2de8550e0204a738fe5e94b2ec16a1c0590237743b07807882f914c0a7640deee38da910823f96deccac0ccc6cb4de3fbf6dcea85f935bb5331fd7e8ae39740a0618296518bbff580cb1fc0b68386cb9e00b846905a5e28765a5f92bfd1f3bbaa4c77fe92ecf17a87a397f4d4d87c742116dd1548e55917283a70e8cabf2ef6c82bc933e7dd918b478eb97e206e40535b773081c865820fab0ac030455bbf6a02ca6c16c9bd6d48e83d731738e76016caf08bd6e70e4fe35c80b62fb7f166ee8a977779b1952f906fd806a5cb9e9ba32d5cee646f0e1246f93878ef4195dd2d46f1a205269404bd89a6872e000b18ba0f0a928243876f6e00e03f59202a77817d9161267ed0bee02990af48642587e5dca4a1e6421b72fbb4275384babb554cbedb731f14b1b0ac80f107d4c23795ae43611d42813e45f2e0140ba3404b64720192acf95ef823988c62b6ab455affc55fdc7db216022aef33dc67e86a7f32400314ccd0efdfce3f7861c028b1cf77beccec9ce0386f0a5ab7b42a6ef7b54c016d9030306fe7d769c85e9d74d206dd4136d5432d455faaa577d4dd00351ac7a24dff41e87d0fa415a7dbf8a84b958fb930303161b3cc140eae4e99d99cb63c926379504a93b95dade51139e483ccec316dbf4819ab9dfc0d24a4b8ce3bb7ea173bba5552fb1a39cc2ab402123d24860c07f793010f9c52019fb12935ab638c8cbf39974076649344252271595b46316318d04c46904776360d5e0a53a9335e5dc34f60ab73412f829b774abb020a5bbde8a3ae0b9fcdf4e678c6f5657e34d8b7e14801762c61513e8e8fd7a4efbd86a45afe52653e449c1205e08b94391c6d278f8b7b4dbdb2148bc668357d475f6cf44e18d0ddc7d4776d4e122a98ea218aaa48b7444df20457f7fb7ad837838b1705d23d5fbc7b12be3bd17834b652fe08133a4b6b7a410dde82fe5b6ebfa5ed92bf6d6e4e76d7248ab4c8716a9afc5f172b7452dd45defa46443d19c592edc550e04e87f2f4553c2ce209e74e4270f13d5f57f7ff0a227b0fef64da988d0791f1a269b979009e4435f8e1c093c80047e1abbd53e7b23756c031484d170ee278f2122b751762bddba3731cb81be46afd5651d0d0394da1efb9c971080a2f99a0a720ab2e78a35cfedc78166c61cf9adb14db3137456b7b361e21c4e0d4e4eb721468fd180dd043754e5d17a069bc9a2f859e782770dd449f8225f90259c630e18b7181bd3494bc95bc163577da7956a41228b378a69a392701f5ad202eadb92a415d9d9d92c89987ab6fa8e248b24a410dbd6f4e12e48ee695f921a5d5bf94e9e2f36fb04f3caad590782d860d7d930a4a44642298b60dda76d8c43ae1695fef4feb7e3795ade7026ba98fb3d8e217b5602225c952711326f407126f56a5e98069cbdb2ea214434a47480fdebe1080c65a63239d52fe35b77a4380b4d7123e564f09369eb2b76b40eb94fd42a6f515282829fc250d7d585ee3ee7568d662adbbdfc0a3ab9531008fd8d17326c39b66ffd93d9551d5cb1852fcf89a1df19424f3c07155e14e96dcc9fc879c0adba65b25dfe7d8178c22b8b134251ef390485081a4febaaf3a445b9e48caf3658c0895a674a0921644bf481ade3515cea3248d095040c70ac5e1244994831695ac8bf390180f133cb500da7fd61bc0862e6321eef935337d0235914b15a4aa029a511e765b501815511b899df767ef9f929eba51a56349b99a94a8b5b565e951aec15cad15907e989c75ea23a4988693f549eb21991501000000eccf898e1c4fdbac4101d4d7f91cc6b058a94354b2b802ffcbb7f67f12a32d0911a195dddd3b0a073507ad07a6afaf4954e9eb6f8922a1c0af1f9228d1d72749d468887e3fc57397832938b8c3bb3f8220102a527006dccfa1e0f3a2e0b29fc21191bc85dc850c063190410341cbf3f9b6c79bc694b41b6d745034fafaa068a4d2aae8412014350a799043802f8a4af1f4419889ad4a91824f10480ea1c921b490dea02e2ead9a1acd20201cf38bd08bd721147ad5d4288770cc070847cf00e10816201c1f877014fb187a1120f4aa118e2ba2999a025d6e10d920a2216ad514a80ac73c00018423287acd08c7ecad7c17bd56f02c24c5f3102ad25791c23517aedda022fd0070ed858af401c03514d760a8487fe45253608865e26b08473046387a2da1896709592a183a567c8a70f4521e4538822afe148e9fe2c3701447c296c8a8e552539f8bc965e44b2ea470043dd3eb70cca507c3d123bd281c410f1c85a337fa957004c1574d7933a3543882a8107c7daf8577345347332f462e6898a1054825c462d3af15e1e88da08a707cb1e34f118ea24ac78f221c55faa85f2b1dff291c57faa85f22ca89139e63340ba127fa263c2b4145fa1dae9570ed45a67c2e6138f2b9887c2e2fd3abf422bd5a0fb65ed4fa513882d79ba95af885631ebd8e5f8733bd8623d8b1a7712ea5a885b77e05a6093eaae81fcf26f9af07456d210f54c8d7fa70b4d156ddab35154242859084d4072ad29797fc406cf4fb1aa661541cf951fa487d33f544ab8ad145af3fc6e8f547d9fa58f5444511fda21f419f1f457afd4fec35fb1a8e3b481767b986e9d70d3cfb366820df4c4d8133955553606b247c91d0c4351794b8c60212d754c0731252a42fe2790b52a43fe2b90b52048314e97b78168314e97f3c93418af437d7402045fae00cf7f4c156a52fb77046fb1a2ec0cbc8e0492aeebd611b6823183518dc0742515cc88374e91745e5a7f8b355395cf16aaeb966e9bad24571501818fc248e13d179dfcbaf9dd692ba1b0465b16eedd8729ff1e7bb6bdcc77f4bf776ee0da90eba5ae1cb293679598e8b67e88c9d73ce8945b6ca7ef9071c1383bf64eaaeb5a659a788fcee9340c7b56a4fb8625bed0809a77d39f3ac6b74c39dabfa5aae6af7d28be71e2dd0ab96815eef94a2dd9ecbd766776ea19d759298d052b27cf66e2e62b470a48bfb38ed207e0304fa3cffe90ff11ba127c1cf08853b3e3eb9fc1cf7f73beee3777edc767cefbdf6e3f562bb9fd39f799ef37c5a6b1f9e0f07c7f39ffeef4b9e5052f1fbadf5f75bb57728d31f75e9fdf8b7cef6def6d9c61bde1e3f97abbd5ab6e12c6b9f6178f7f1ce6172e1bc7334674885c81cbda1227dfaf8b9cff8efe7d77877030f3f97b57b33e65b65a768df500387b4c7a52ddaca5ac61fc7ddc4732050fcd0583dd12135144661f5864bf5e1e505074c85a93fcc5d63284791c8a1391408ddf445395efba7bced4789532f9747172b28cf8f3152a11fa50bf4a3cc01e1936cf9bcfc149265c44d9e6bd63b8cb386e15d6c62abee05ed1b648d195a1fd8e2e0587c2d0e1818fb434c8ccd3163672ccbded4d8955df51e77dbd6f5016ffbf2627be5f646b6ad0bb5bc2a91771d82b5db657972da3d2e826c89259698e13d373a41a76f51d0e9ef1474fa7a059dfed7824edfc3a51447ed0531e8f43d7e8304de0c295b8c5a0d3a7d296918b59a4e6b0d3c49454e54bb28c4eb0b0453596dd7d49c9c2a64d718ad314de33909c9826a4172418af4bb2f8ca1d3cf962841a7ffe172b2d8bcdfeaeae335c70c7dcdab8e15fdcd6b102cfa1d5e5b1ca7a6dedcd46d5757e5b8961415f2bc64d95ab4979c0489fc8ae6420fafd2c369e7a6f6f0d93f2ea5a83ffdf5379752fc42494579dadfe152daaef704fafefa9bc6e50e67b786d737ad75caca8525f566cb6526a22e719f737299cb6feddf3ceda45b75a9d5b5da49ef9d3a739b9f9bda56d9fc9cb4977653d3e45669db6bf9f16bf9b7907bfcdae7979d7b94ade2c2152f73f9f70db2e7d0fec09a755957ce5f92dc966cd505f70db28716099b63ebae6133dce12fa934f0eafdb96da09d02f38456f92ee58e1df65fa35628f46ad5947e792dcc3dfedf2a6cfbe426c639888ed5cc6be519366ad59476c3358e706e9d41e6b45f6bc37b339f251867d504a49c4e1b539d909cd06662a8b81055bc09cdb00c2375f939084dd9988bee47159d1f4dbc1f453c50ef63867920d8f9ef4431b4311bcbe1cd13285a525409acc17b2153aa86e2ba1f45ba3c9129bbb1dc16fbf852db359e83bc18734c5581d878ed365653390979a2df854e3f8ba1d30781e51966374eefe539099942dff29c85c922488e757a1ab310253afd4e73e9f4b3f6d2e96758183cfc1bcffa4411b59c2df8479c99ba7c3b5be6e49506b13058a7b44f9339ad0fbc5a3f50770ddaf3a43df0ac7dd9179db276b88a272d294aa44b9c0c932934dc09053769cd616d0eaf3ed7426b0f34d265ee796ada67eef35b3ea5a8fdb66bd8be9fe3a4a5ddf63268c55d5294a5a81d8e363a2753b46dabb8dbf1152b8e64c15febb370752ec302f524a3a5b3f66ce5327ef92792654e6969c76d9f76abb64d6f5bbd733e97b1766dc55b96efaed37ea7cbdfb265bf9eaf31f7a34a7e12fc8c1dda8f2b9d970a7d62b36587a1d714b750ca943e414f4fa0b3eddf6d03ed9ae31e665e93851ad6b4f7ba36af7d7ce7738f399cf175c178dbcfacd6dcce9b8cc56265dce3adca8f35af7d26141313c373908cb5970e0e4742e8f473def6b56d0355d54060be4c97e9325db46dabec6fdb06aa6bb2c7bca67b8d73bce6e56774af5f356563b365d49a2ce8d331f472804b877aaaf166101b1bb5664b4e42b2b039d4824ca18fc391f671d4babd86d8d6eebb5903b91a061b6d0c8795075e85758ebb7a5619ab37dc21f3315b1c34108ae241c638296336367d4c1c1cfca8d10cd22508c60a2f5100b930e133c4882e7f1241a63eb13902c96249205bea9d3e4c981f7e9c39bafc3903c9b2bf657b94fe71aebe1fa78e2e5928cf14e2236f17bd7c4ec4679f397b1ef822fc2250f4a3e740a39f3b072c1a7d67ab46a3f9038b5c2e170d27bbbc9caead32cbbbe9f4b5970ce3c5f40ca320e87945e4234653e8b4ee606f9a8f7ad0ce7b3cfe190dc14742982ce85f3eea21a9f885e3084787e3c8c70ec7d18f514ea7af8da3d7ebf56ab57e34843cd11f15d1e98fa3233afd911346ad51ab4a2ae2b47f40209ccdc7f8d63ae7fc604c73b03ddf9c437cebe70aa22e3dd6472fdb08a033b230c782c8acada0fa30bc6badbd3cc3eecd1e0f047691fdb900410f13f850c10f1720a1c900c856655b6535c7796c98fddb06a8f7fea6750eb26ddc4ee9cebd7e8ed33c3cee65d04ffbfbfb0be5d6ae0dd96db77022a1cd9c99c36d2f83da9007adbfadd2e18a67b5c516eb4d6fe104f2e2fe7ab850becddfd9aa9cedbc302c6d0d8966c771959fe8ac5cac28b6f213b7f2136c92555e922b0f35bee9ca9fdb35bcca4df48c4b29e5dc35bc5e2727d95b573ed28974760ddb2b37ed1ab9d75979e9fb74e5244fe5e0a7f211a8725128a42b0f8944ba72d068a42bff80a0aedc4322e9cabf52e59ec9a42befec1ab657de919818d195efde713923e33bf273b30326760ddbb9e79e0b4974e5da84095d39f7af2bdf38d7956b61e5b9a4f2ccc444578e4f4e74e5f7c4093d516ce75074e5551475e5f474baf3a2b029449413272625213f75f86fb55534aa13ccd2a5815091ee205d9dfbba559c0d9674759cdff21da4ab5b7ba9900fe76b01e0e556a19e83e1a5bcdc2a19292b64ea65d009782bbef20bd8ae42050cdd2f0cafc67b3d37e220102a52217d7bbc55db077ca042fafcaa036fdeaf7cefa0d2a70e2a95efa0f219f289513104e4642508147993d8dd78abf4f71c96b02dfbc77750e975e7203678abf6470815a9e849fe3384a2ea53f15347ad5cbfeadfe127a6f96708cbd33f7e621f219f51aba6be4f38664f68e2bf5608083dd127e1e3ec243cf4da3a1c6d74fd21d8ec5446810909f8511aa1801f251116f0630d0cf8f145037e4cf96292054df1a3c442afdf002eeb69e419c017c0653d995e013c015cd613e9f3199732a55f27e28fb7e3ac3d50c404942c1facef1f3db77908167ae5c0db3f865e21202f83a2f891d38b846f2a913e9e0ff8f1ccc04f7c0b7ef220debd0a37f910ef3c0b5ef22eb8c84d9ded4fb6555ffd78ed54a361a3535edb7d259cc57778e84db8ca771cf427bcc59fe033bcc85d3c0aa7e13f9eafff7129533ea1dc2a4f9d92769ff7fcf735c5a3fab67e19d4ee0f01a1a8d08ba2464f3fb44f6cd568c4adc904d3301d4e21b4d64fd1db05858ad3872648b8ec29f8f879a1d357893e42284a873ca87c6214b59ffe6708c956edfdf9a8885444e154620eb95f8b7f3d6c20f9ff0f87a2b490d6fa2345a25220ac7a7af123cde9f5690e8a82f195ae56fc4859a91f69102a7ea437293f522164fc485b01f891f60000ea47eaa3d7a73768ea738dd48791e218e90fbdfecc4153df3875cc20c629c4387b8cd3471fe78f7122d15133fc38b1806af1e3d402e8c7c905951f67187a2af4e31c038b1fa9083a0d3f4e2bf4fa13886471314a25fa28853c80a63cac01d0948734ca1f48f4faf3866411bf05e5c7390296921f27109d1fe70b4c7e9c2de875a6e0e4c789827ee2c7598231c6e86254c1f2a308a86f2634f5e15448d7fe6b69fcc3c181a7fdf8b5be1ee1874345fa6109e023807ff1b96aead3c3d10bc311fc6235f5899d42145f6ce56bf96231be580d9f291c57e87b5835056289b04658207d8faba640a41074e970043db19a02c5b4c8131b4038821f989a0ac1d413fd1d8e1e4b38829f564d8558ae9a0ab5ea89e505d042c0bf08677c5c3a7c6235157ab16a4a34534fae9a12d5f81ac27185001f231c5570f89670140bf02b9f98011ec52776803f7d62397c18d2f89170046d789170f46e78134bf5a570cc037812c8258007c311a40f8ad59408a6a6462e95d5bf70f466bc06c56a88d1f25af87c9cfd53fcddaa1de4107df477ab462f778651d1069e2a85e8e7732938f8a2a00884a1c61a7afd173205ced41199cabe9ef4fa27891af9fa2912157efd161275025b75bf942c28befe942891af7f252a5a86dd30040d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d8d46a3d16834b8661ea86a1a61c7a1ac81371f7320db3941f444bdf766cad2fb3589992cc318639cdf568c71fe9a73027ce00c639b22b03823505862bc00c00a8c196840a556bcb54f5f24aac5dba73e501c12c5e26d765383f822225129312e4e2950a0a0a0a0ac6ec0c2c9810200667deda5a63a2ef5546b08b51731c673c13c54601e2a321e39e78f6bb422e715112b4d09cd260537e9a022cbb42a823767cc74838aa617ce4587d2901cab6e26c54d302f27fe84cb0a9f3360f04059e172068a8b0f4e6fadf50c0b37b99486c894facf473923d7e866c41aad66ea8974f227a4308413f211fa51f2897d9030f9b84c62f0e046319265c5d55af3d8bbeb745d27c4cdcdeeba8ed7e97466562c9c24069329264cbcf6a3c6c269995c86c460a72058ac540aa51be9a0228bc4f3bc551fe9a0e20c8a9b5c86c46032c5641221c5907e20e51819b5463a48483c1c5e0c154fa1f7717d7e988830753ceff38c727c738631585eb4843748f033585e049d96afafdd6025fa5163b56e5034f0520cf69229f535ce6804c2e0f881c4c24733f4c5e86694a3eb2cffe4fc48117e5c46b0f1604a3f7a301fd7c785a263b5f260781fcbc3ea75b4a2a2c7b34241d181c247396668e02697d290524ca678be7a3e241209341a0531cac14733a12ed4b97c5c2c9c9af260707af51e0637b94c3826563d49d48b139f3fd87cab2368fd7d7dfd7d9dc9a143c30922cb66e0d345032b3c2af884f1f04071d33b2b1d4178ae7a1222565d7afd4f112b14209b14209b13c8e614b24121b24921b239f105e8f0a5e035f751f057e137549e043f4325dc61df73a128925e1fe56709256cf11ca861782df0cf162fdaaa16e18a675bd81a365431dae2e52ba35da332da38d4eec2bae053a688cf812088624503278991ace0242f99929a010a39dc8ffa0583e307fd637733ca414fd5b4aaa73a6384191b92986441f9fa25d3eae39a19cda080e0e949299eb455294e28fe8462fcb85ebd7a302828618d8a56cf2df8c80c1fc941477450b14ed70c4e3d79305906a32234d122e60a4c22a17ca98492f228a514bc46c5a350f19d584d8d663c971b1485f2f5bd171e28dca4c394c24d41ccd414e19871549478984c22222b22561f14fc93730a3fae998f6b26074d99748cac88589188e168a3a3fc7cac4239c14753cc588b30e1a3187e5ca357490cbdbe899528c247fa629a21cdcc7c88ab7c4633a52ef4fa9f69a5d2194d2bd30aeca3693532433285157dc9562658990ddac3891ea60dca19600858855518b572ce1b4a6bb5f65e8ae7e30ec0a060637ae4bcc180932652d26a2fce34a759db9a1b37c315afc27a05661ff3aac5f51ae6d510e6ee381bce86b3e970de9c365e67d3d974369f27cb341c63da6c18e895ca937db97bd85b856d8ba2645e557be590bc6ab55a3b5a2aadfe498036c3b6680e5a16a7db160e3e9f0fc8d2bcaa27aaaa92a5e69a75d0939d35cf23140a8da808088a442270823c6f341a6d9595b2bebc97cb2b52b537aff22aafb090573a5654a4f4b98dd372765fb270fad64f0988e0f518c26b0540805c61ce6969b6535b5b29a594524ac79ae9cc35c4c430311d31215dbe8c75090381208e19a2c533571064acac547badb5a4202a52ac0626e9407ad5936ac274150e37949c18792b5d2b0b83525ff554ffeddb1999e22426de5625402722a98b0a5764c8b881a2b21c1c242a838214eb86525fa670f4ea7355895e3b12275c382512c77ad2ab04b3d9bf9c248664868a95140341b084839e44c2124c0d2e102772d2ee64da38e152a6a8b801b29e35f05cca53963b02e88c111a885e700f798d49a7848fc4609fcfbb7056a5995028f492a64a302f370dda492ec962fadabde8a5a64c3a9809b755d8d6fc6bbdbbbdf7150141bd77d7e9baae848fe4d453fd113ee29229f533286439df8fd9eb8645c24930982d66bb201d0cd47924319e0ed6c14c30bcae23f2a6ac5da703d3b1084727e1a4ce0bc90ff454454292182ad60ed66b07eb82d054094709a62bc190c4008124662447b298f697606aea763f7a707a7d8e248624c6c4711d189e088728e6935eed300c152b9d7352110e2a56910fa2172ad68c44cf3f723e8860442ff5347659aca648623c98aefdd8c14abc64829748626aaa6e6f49623a92b00433623391cc623b8a5e68d05e82297db9c36f32a9b2b17652388e14411a92457cac3efac8f9506295724692184bad91237afd8ee825f791244677b0d24dafbf95604a38221c2afa39c68a0cfeea61f6606d80274a705c47c254416c9855d209e22929c85a1024a2828ad24435a90b1195a7b456ca7750e9739a7874d25a5fba38c6a1f6d146b7d9184345649b92e6bc6dc8b20627c771d2536dba725eef54a6ac1408c0124b2cd16def74b237870841ed64210a5123f7b1873e432b53bc6b29b5f66ba574ee60124eea7d54409e0f88762953ae4c9181f7f180b64a24ffc00b4d49b52a14a2548b4494827404924aa64a4dd3a475a38d9eb58e1e46683beb104b597588b5d6f3807863eef4873766189ea594ae280d35958187cbe0d1505e53d68d36bac459d6364e8bb6a8138944a28e2712893ecfe75a9188ce914e52f14e1ea394523a87cc21d4924008807d7aa0e519b63d67670665b866525a2e7374d65a7be635dd5bba71a01dbfa7571ebafd644acd6887ebe46acef80d01bad5e9dbba5fdb34ee6b1ab769add332645c9634153afdababa0b1a0b5a0b9d0e993bed0e977c2d0290da35e6296e1d22ed23ea2cf5b053ea7c98d76a3dac170b4d13f3f7f249a372dd5a7a6b258d5070e8e1e42b21882d444e823e82534410a9385b669d89e853ca04ad0213674c80d171b171f5e5e6a0c0c8c8e555d6936ab1973a85097af4916ede56f535acd370749f1fb7ef31102dfcf70dca16f4f8adff71d2e25fd386db3599594c65c4913bc69d9cdd5e27eeb7715e875db30d02bc675ab36cc01d15a5e3be640463bbe5ae399a63f6f95f69c9c94767bbfdc2aa9fdfe19014dfbad95b4ab698f770d2db43aa86857abec6bf6b7bb8197fd735929cb4afb06d9b3cf768d2cb44158161529bd17d73b737671b5391e8b9593c3aa29eb79f3457dda568feb523be635f92f0f3d564d6924bc96fee1dd04d131ce18bc35e3f3e29993735a7a886ee9966ee9966ee91e349573b26ee9966ee9966ee956ceb1b19c636339e7d858cec13c724e4ecec9b95ca7e52de7d413fd6a2bc79372dd43e35c1bd49c5353ba889c233a7d9d7374cbdaab33ae750faed33ebafed1e9679dd3e9cacb3a9db9526a4373cedcaaa95b370ad94f243c2b44ebc6e646b7648a0e30c659966518675407decc54349c6d36f39cb52da35ae3590f356de372cd3620ded7366969c7bdc6695b956959ad3826ae566bcbb6adca64e06d33def69cd6f8f5bd4f8df0aedc1ab73de335f9b79cd958c6f664ab70cea145f0acb681ed4d634b81beba4d83ebba55b92cd31aaf2772d6b6ec84a66d5c964fecdd75b26d9b73ce79e79c77cefbf53e77ef5569bc267fe55cd61aa7fddabb6d8fb2555bb8e279bd5a21f4446d2ce76424684af7e088907aab6ea85b7bdbb6edb32ccb1e65ab323d65cab6bb296957b7eaa2745dc7dbbbc358cb426ce3b9244bf69885317eb1e674169f39a7080f549972bfa33b2e67e0785a7fb37e80769d0cffbc2195e89977efcdbe728cf3df7bf3cba07ce7607b9665d264ab708859de7cee242c91959a6c55f69c0a8925b8916c15c624293152b65fb155559bd9cf971b37b155189b58715764165b85438d73a03395add23814b5699c5b6bae1bd738bab5f5a0229d3b736e06dd62df9d7179b2557b9fc88cabec1af7398e6b61d282caa0ba0745f100ea96c6b13c3fcf610fa006764d2573dd8306ed38d42d8c8356a7b7a46406d00c9b5b13131a340d3be74be5e9be8b9bfdac27b60ae317bbc60ded0b1b3e3b0a5f29de47ed1ab667cfa5680f29f7536c5536dae8249f18ce13a7c5e12c0365928ec31a85ec6518bba0c70b1603eb01cb304e42661f507882e7841ca2289a50b18ab9ea1dd6fb2212f5e1bf1f922da011eaf3f7378902fdfd2a51a1bfdfc91630932d229345fd3bfa51eba14ca93f5b7eb2a862cfef51b109deec79ca53e741b34504678b8ac94264b6a88492052553668b8bc9a2bee83d50efc0defd281cad063a3f6f286aafbd480c8014eb83388d29d6ff700348b1be872f00a562fbfa2ab3454a16dcd777315be464a17f7b2f1c29f79d4aaff7573a3fdefe75ba70eca177dff915ef47dbbf70bc3fae78a10c471b5746ed64df7c9c7dcb214823c8237a7d4d513c88ddcbf4de1afc12873d883376dc9007b1dbf0f5652e32dfdcdcfc08c112b66ddb7bcfd48d2cc31eee743adfe9ecd8b1c3b385172c06f60386051813b0908575881560d85a89849aca9a96efb5299cc5b8b2ac6959cb2bd7a5691b8e796ec3356ae8a202d16d558d5793dd0c635ca50a1108ef737d1ee9f1aefee86ee7503f204021d1c8fb3af831dd58909191919191919191919191919191919191919191919191919191919191919191d96436994de6d69a3ce79cac4a2da519c6ba67e111d4626b81e8c2cddcaaad036fe462b55afb7d1b24954ca01b38a9f3e02813799eefb31f3fb7f1dea34e9771fbe1b8efcb3e3bfb641fcfe72941240a7533eb3400e2529e3add8ff8743c9717032400e1e28470433e2eb6b7e7f3f97c5ff649c2c7c348f07406227b2ecfe725c1fb90e7435be599d3fbf97dd9c7d50942c598ca4b8228fb4ef7f6b34e6727ed81dae8f08706461821030d844ca3dccfede79c3336da023963e3b946eec0e68c4dc40ce3d9ad080876d931ed615e7bad80b5d9b95a9337edb579f1168ef5460e77d408d4bf3fbfc4653b3bb677622e692ec2569962eb07a84cb1dc9496ce392711f729ae7805b11508a6a4a4a4a444ccb98853ce446846d06c36236c361cc7719a773adcfbf4a77994703e384e6fad7549498988c848e83f4462c2c48360462f18ec24eedd75baae13e2e666775dc7eb743a2525252653064152a9d4a24549d789959e9b9fe77925252520482a9588e81cc1f33ecff77d2525251e4f186ada07040a8944226e5472027bc16041623198c7535252d2e9789ffef486b13881bd60b0dd75f9f47a9d440f8fbd711bf729026403b201d9846c4436221b910dfe697fe2098a4e4e9c3861c594929f9f62f21c08829ab619c1a6e44d3010cceb550282449048a40c3b957ca95452522a41294181c14c4a4a421bf237413222622a91c0912804fa783eafd36dcd6d0199fda8a44a9bcaaa9c2a1a0100000000f316000020100c86c362519686713c7e140012668c54665c3817c89218865110044114648c31840082803186203443320a00a587044ceb69105cf22f5ab962ad4ffb059d455a5e97108ed417e29b5dad11b6ed0effd7a9a2a4f1b9ee9c308cfb474eac23332acdb7e148d395b77f0db6895293689355585972b0e1406e78a2f90d86184bcfc932386ff289638d01f88f077fbc5c40959b0f9eb4c940bc7592088652f57ce45ed1bc2dd4d8afcc03af34a7ecd4d33d8c31bc6bab3e3af20acbd0ef47f57c0d20b998ea39fd20056d888edc21ecbc136a5edb69f2be63f0f350f3a2cf62f5b82a85088a8455413eb18f2f19c8daf376def314add4a6c18cb6f2f9d4b2c2c2415596e021c8b534972777cf0d3c9909e53ddf8917fd1f9e3ec5234e0631e83ddf8bb918a0fdf9e562bf1eacf19ea8db32ec82cf5bb6c192a1ab5160dca8f19ec21c7468970d89015904a3e6efe6d8259f1f065ca7e5aa95d5d10c421b88f8de966b13eb4f6cb2c57ce4a11f150ac8fe6406cbd7027e4ee19622a3db173d88d02e94b2e0c78f01b6b47f9e9984da6ad37c265fe7210715626facc038c7fd0cbd5daf40710c6e16fda9fc18b79d2993900a215459fd0643b290b5ad509815015d130b52c92f24615493a130ce91f6bca04d073886482e575244a083b6b83350c5ed092c9f031f05f5dacb3174a001685732aa02ecc22da68fb8a7a6a09df05851831680737abf6063cb71b702f21b4b99e2f0df21b266858f248373e2687646e3db0b4d2429d488a2e7f82f1c4232a5a6fd15fdd352229fd5d80e3ce256f4e9549be97ec058b72e74d5e8ab64c4fc2b16d9401a7b5dabef4a64578d5eeacda98e1a886479d0eb68c46f340bb50f1efefd5f79f346ff7fcab3b04d0cd88f18c3ef59ff2865ca5fba786afe21f834419de4e22a852dc1dccd0ac127388d1edba565b3e9b130e32e87ffb57d0e01ecb36974346d2aea59951622a13e10365e45821952ca35637d345d080feca82937bef94d92fe8cfd18627f5b8ff7f9e5b08a09020fbf7e267dacef3fe82ed74e1076f7ccbb721f7f99bb0499496fcb920a1d4effe0b4770754c09b577ed2b481a4867dff876ee2eb287170cfe6c2b054ebc2a1992c25e3e91e0f38e1927aad83b3a504709d6ab8409ce1cd4baa155d4955a1740a41e0f788716af56aa3bf17e93d60358912f77ded64e007923516162a898a662d98ec06dd93c27d5fba814f730a11d57f318276144a32b25b0b224046bd711cc1f62efabbee52bd99d9dad484d285d0e045ff183889a174196557947fc5c4f7c6bfcf304a3e58af589c517ab9c2a4770e3db027cf2eb1bc038fde02e7f171bd1acfbff621944e94fade4c2f118c733a261a5d135146a5233788f5b97ae71cb3aa55d44697a915dac5d61120b27c99075ee9bf8862b67155d12bdd2e05253b01630fe6c95d3a073d04e3fb3f0b92913745f347de53c6bbf4a1b2183c43076f5986e9f9cb5b11d109bf1c029bf09c7ef12afc19f83c13706e98fe2e2d9f0e832bb2cda18b29f8de3a793fe9980e1cd1d1e2be5fad8ce0261f23866bcf0a22a3c075f5946b4a71ddac18044e18c8916f2f250edd94c2737ee1bdc6c273c876213659a699ac256c0a539e8fca77fff271f5ade1acb98b36293f19c5a2d6d912109765428a4b69364e070b9987b66653f9e92c3c2cdcc973373e2fc24aad0d2da97bbc2e7a1dce4c36c7b114e1400d1fc692bb6cfbc150c89f3132f41e9f34e069c7a93e1716d7869a6db69e259ded437ddfd438531a5a7d3eaf599f8922dfc54401eb7e306155dbffbe75c40c3eb3eb5222df8598dddf1962e808b47c99ea4ffea3fecd7e16d931c7ce773036ee8f47bf2ce0906f4bb13ffd313eedab4ec8f62162926907ba76ce2ac2b6251f938bd6a5dc53ca3539bbc218dcfe0d04108a6441648f40ecfa067c13c71cadf234e81ec1e85d0114dc658ed21f20688dfc8b70d560f0da76d44d7959446362aca78fbb098ecf8b1efc5d6612b88e03608840c863a2c882be33d79f8a9d5c5481cbb2160de69cff3ff1a950b639f93af5cc62ece0b784a79f6d3b67110e202209891ac00a4531d40bdf037664a808fdf10a8550bf2b112f365dffb5d323afb047c600016326363dbccea2c2ee8b785f81227e3081ca64a29f43cceb6609c050b4d4c784e70c87462c49633503ec7704a8ef4eede8656b1c11a90003c181d4d1cf2817faab2ad5228388c8c58cab24f3713cadbeda25df8602c24ff8b7b7abc8f0badb2564e5387a2a1d0b1ff2dd1b160dd22eec03c71ce0269e9e8480eafac1210ddec65783f79b1a97aba6253bd08b045be10d891ddb5bb7d848d62b5c2ae6914b11b33cabe8d942b1e5a81927b2c0b781c10f81e440351e3129cb4282ad3186904e0715eeddd57c3adc11f5c478181359d821731ea6fb05fa909e0ac13017c14f6229b977116c92aa6ae82a56230f1973b87c824f70f45bf68b2fcc09ef817a09adc24647b2ac969b584df11edc3530c393199a0253ac0972e702e4f30f533294ea663752aa4492d11f1ba99bafa2b0c62efe8b9f6168af73b2be60ddd44f25ab432d7ebc277b3b248777e9af33ebf5aa2339bcca73ea8ea3a91491c55ad2bec40ba0811e9525a7db0b8c87edb7484640d26fef8b803c51d91a20c1620441c10c5bad468e31282b0de1fc1f52218e70ef2bc5bd09d88645a93b7c20578050dc22fb30a42e21d24a45a18178c1f8fc262dfee9bdb58db834f14d7b1b88e3da5edeae597959c8ec9b8a2d21a459de7ef510adb4985564baeb48dbdb670c49fbe6a60fab97ac3a7eafad39ae11eb7512729d98d74cbf5bd14555e9cda0ba9a4e1452770d296b8c1f82a262604227dc887127a1f4de86952e8a861d8de846d16c9028f1b96919b099a06580eec0c4edbc6e9a1c1202db87509cb85029d117a9e55d80f5e74ac18a2aee8fe33de2a99a98483ea84dfc560da7a3bfb73c173b43fb8516d7da7786865b7c571ed3b4f91d4e007c87a8f77b3a21e9d28628be3ac214474f5d43d41951642ca3e2af1b157cfc8522647e3bb8998a4f26991bf041329b6e56514b047f591cce4782b63dcb0aa1e0d2472fb780080aa07f8dcfdf8843d815bedde7be15b4505f2f806522fea4bfd0a43efb9ebdd2356232abec7e738dc1b3152ad770290e4f81fe1911bb2556acea7a1a4c23d03f18684afa60b3a3c8e97a0d4b87b6b43af2a665807fea3e33f7aa56a5198490fce0862e247f509c8210cc7ea2236710185d3a7b1fc439d4a990369f1197c8d8fd092675cf8914a7fcb07a5814085acaaca483257ec4f4660db39f3052aa021d86374d324e97b9b25943b749c02ed9a5d7521f8f075c319706ec0b2bd9197ca03b54ffb951d1decb3af6b428311c54208a895c5d260549c7b25e706b154a02cc9123209cc9e7b94379433741f57b750f4a9617d2319f2c34e884024cd891b9d6d0a7502ed3cba51ce1e71ed43019c6832e8da4b2588d6ac9960ed0201e58ab9e61c8884db8233b895f72fd1720cb344c0ae55e947a66ed017720f3cb9c29e9dfcfb92ecd47d5d1ee9fbd9d7525f60a566cec1f4567a63d0bba33cf3e77e60b108a09ca7b8f18bad018163beaef65a24685ccb0c432c517a2e677b13662970931f183bfc3c105b56abe27097bd55e45ab5a1a0b1513039f4eebf783f4d816bb03b2c5ced5c87e90d6828adde398ccd18e390d9e94c581f5fcb98fc7340f757f0222db405471e893f0a531c7cb70dfff8b76352e547028ab4b97747bb9878000aedcedcf32f1768a3c85058c17c46c1018ebfc3efb65e2ac9a556ebac051c36fb7c9f3c6c7518907b5c63323920c0e2d373531946521296d942a2a83a52d48492a31ae7f09e79e585c1e676eac31622063040d082e949228db73dcdc58cc218ba9a076d0b92cbb690cda0cd6fcacc440a389f97a2c10066347004d829dc196857a446709038a49e7cf3a3fcca271b3687be3d2a266d0a6f895c1585ae4c001c856c414b7c17e2bc56074c5774a26c52a2091f98d6e045cba3d425aceca3d5a8c1b76b94778abe326ece9a00dae07ebd51c9ff18d804bb797905eb4f2e27c046e745d847d227a41e533724fe816eeb50b7ec25b20bbf5e4dfcae86c6fefb5b0a307166f63382ba70721e3b221ffde620fe48e125cafaf08851e07101c23ac6803e78428d0599d60f246a6f251bffd0d07270602f7cdfa31d4c68a37e59412d44afcdd9c0fda6f752d189282ae62ae8a653aa3a57ee3740fb6c1f2d49b7ee77bc9243d0643b6c8f90d5807b71e05ce5978a02027130a630a0c99ad097cc4f0eb9af604fb1eaf6bbaca409f3e29effb0e65e22a78e4a00d1e2ab6154c1c1ea2e0798401e444191ff1517ddffc0736fffb342e59f42cff6c6d3b5f20d71143ac1ec0e5edfb7e93af66b6a1045f40e57caf959493793cb125d25305ad789d3ebe9aab0b3691da524e059a52482f850ef4e3f50def4713f79ce49e6acf0603b5efca5657c039be5b5cacafff3ebaa5996c701b8d7e93908db564caca139b62179924db63d9be4b8bfccfe9e6847c000186c2a31d99b208ce7c495265ede632b72acc1b83479928d1d6dcbce1f4aa8c9c3bb6ef612e6fd9e1a222d977cfd12c3f4f36db373fecc3d61f69715540f9ae1f6bd3b1ef076ef2bb3b39afbad8c87e4259d000ea1bc7cbab12b8b78243dfb55e12607f37b16b39db8343a133cb9972e110d16c4726ae66ed618d790ec7d7fdd9a267b59ca030bb8fb25a167d4d0cfc74a2bab95bf7da67ce9eaac38ab05cd1e745d843bc5f914fc19289c97056d061f3a0a0740a092a0d02f667f72edc956e37f001e0c4c0f3f9fb61f1de0f285f78c5e2c8705a9c93306d35d5187e6af05e19735f3f15c51ad5c028398728d0530e67f2fefba16b811883ecb2d153bc371e4e1ef33e9ccf7ba4e23589ed5b903f3a5094dacce2dbdbfe86bade13c3dee7ecd1868a820024b00e385dbef781c77ff3e2171aed4a56601b630efc475e721f3dfc2359a159551ed3f7c06b1601908e9ebe9f720c81a49afe8762220735c80070974d50894308d3f73d84006d3a60fa2c2848f748e6a82ee404e7db4698ce82f264b1ab767f6c9ec3fbf191b4b5610faef3370f3021dd1e92ecf5ef43581b5fefb4366e7ffe7da3cd17fc538ad863a506860f1240a25f47822be6d6d2688042b3812194d95d09b3c6a18bcf60a96c214b96c3e852f964b48fb14ec27e0eda24ddb981e38c5023fc1983a8bbfe059f4fc2dd6baad9a4152b8b69b3c1c808baae488db4c94161871a01ae69d2ca786dbfb120e593cd91349980870933da6c56a2ea948e85a9b0b963bae10a8899d823c5b6737037020201266ec185be902386747a8ccd46deba335161231345cc34c96067538206c1d175649cb3e9d90028f080b6aa1457e41d30c3a98ac2533f7051674c5170314fad5644a1e20865ac48db2bde9b0ecbc9c8b1a21b855b7ced1bb8285524ad401fe07a7061c275a5f6518f1413407fbba49332b6cc6703c9c727c8682ef952c08b9e71a4d72306a17c9f7c09f4d962a87616b107fa40570712751c4bc1c9c16ecdd81aebcf86c2000c2064320e612ca10a24a4c59905512c2a9803f76c3089c2b223f87e91d897d7cd28bc4baf31daf6df00b6e3019de05b9c545b0182e47c0a26a64497b530afcfc670d957c1837f36e6806c0cd62d424930e6369e66127b290b4ab8d86131d146357d1e02e468162c1a95e3c9a4adbbebe4be0b1ac6a8ef5e4e608ed1c632e429a88106a9996c01c7f5b8d607f4d90523865a8e4668bf9fc7e42e1542f8be0a076563839d871be8897887891be868b3161017e2bab0e7f18f5290116f2d9a38ed1c6ba7e4f6f4e7c877c16f60f359206d6a642aef1f219556a1a610b559a783986f7447e8d6e913d07256eea1c7dea8cb7d821b5d17819e2e6d701da417e6f98ddc08ddbabd04b4e29514c34778afeb22e811d3f3093ee35b42b750af5cf211b801ce4d475a5f46237a7bdc859d0dd8a6deb3d0a32a0064aa7ae6b85680d2900598db7324a0c9b2b2965d01525d18111113eb9496eb9b1845187ad1913d1a22a6221a824af82114e296e50b332fc0126ac6126858d85a60407220007500e24f1566d23eccdd4fe2e586295f082ab2b57ecef9cc9f2e30003360020cc8befcde7cc1802e8632395d2ee932f7df35b0d3a4654e1a1e152f20c29532b42d01db4a99670001e8f599932dd592a0984c57c2020abac9fec1027b0b0bfcdf1b0b184b62325a394506260b5c83c833295316a474e3cc027a06a360011af88f9805855de59ba5a9485316489e59009ccac1b197bae7a8398c18e6688039a9055c800c35d25f6a455afc1f0bc451dd6ff17003b6d7be79b220e25bf9c7669ca4b382921cbf23fa225ce48e37315b08c802b7aa2569b9c947f3f19b34ae60c00255d7c477ab6a83baccf6fdb02ca1a5a3257f812938cc09799cc5f84b06a0928d0d0bbc1571c215d9ee5f944a28c159042973167f52fa3f63c536686130aadc40d9c0f26d961f96c4c150e2d779432b984a915804adb09b81815e34cc2a444f9f4c143359d2f09fa4b73a8979d25b145a011774eadd5357838156b0761c69c2e3252a6919ab2589b37bcbc2ab0111fe188133420cb78508a0a6a4141faa005d31c2d5879e0959da81e44c159844c724fbaabdb5fd5d59c23cde4517446cd01ec21d3455108ffe83998c58fe2d83c5365fa3fc3c377fd08462e647396e68bfa628f0281749d830e047cad1d02032539a38b28ba109cd9aca8a2f647aa7e0894f08a099ae9001f1ad4f15da713328b22182b63250e4fa1130a35badbc4cf129d0ba0dc03ebb2a8fbfb53d34820ac665641fc808037a4e072e6c7fd5a1283233cf60a62082ce42235c86854538590bd1d008301cab0d2352e65b8113d4204eb6db30d194672f1cb5ffa4f470974a57a67b7a2c4133b5ed7a3cf0e400383eb0c8c11c686a3ca08bc039954a1a6683a3ce18ccc7a2b2629402003391655552a0fb8bea59dfb5b609fe8a780ac9252c48d7f6b23e2be9778f548796edca19ed2ee636fdcd6332601a38d95674b6bed2a35b78dcd1d9c4a7da22a041cae9e92e130af07c4ca872075c5efa447b9929ca75d3c6ed3f14088e44993186ea8560d3d448c1ba7da99dd434d0ff26985aeade410ceb7dc4e6e022d358bcecc981ec96a1c8e340bda3ee453d73e3b46a739a64cbe7e38c3c4acfab327e44c11df03b8e5c35f75147fd33b4127705065ed0ea6335818a7b6e1b280aa2ef9500fa6509d8b1b576aac0364b71bce85014a4911e9393f1b6510a1b1d009951a00ddd21e8c54d9ad9477e4f18817d0ec4f955657e82daece6f318e9cd750d824ecd8340ab2f038979fabeb42a0ae14284a960b3bd1e4dfc13b466d96198e19f805b09fed1f00b4000543a944ac8ffdc1c4b0af022367ab724706c588077480d50d45d42a4242ca26138be004058897820cce152e560e1128860a253ce3a0eb1339917d01a071b82718295838b692fc001269ad6515d301820ef27a333faff60fefc6a02ee1de5c04909ac5c8483bf1a770953c9091a0a7900acdbc11adb61b4bb4cb03a109070768be6bdf2300d9bbe92cf04ba1ba1ea67c696744fd5a38b51dfc85687cc4c4d10453bd52a5777b7563bbd6e992350bad424b94d2db9d3b0a918976c8bd47194d49b91b40c9af4d3e02226e1043581623a7a8007021f3b849f255113508b7b4543c0ed54650f0113d97fd8042a0b5d5480754d300a4ca0c2fc9edd0a71fc1e133f00566082881a868bcc1edf0fd48e0fc3c15dbf2d88c1a128bf860950c37f9289deba3dde4bb670c37903b2cf25288ad414dd154317cb7144d6f2b68d29c17a3b1c1047511e36aaca01967c1587eba725a4fc980d3cfa0365bea9b470b8f7ca52054a03d977044a7b01202425a8de6870cc262510cce4ba605efa6ade9a02a74e98b014c3a056048e60a6a21280d684a2ef4077250e21372fffc83507d2020ba9ecb9962f94a81d9f57ddc3baa3126c332b28428f4feb137c454aed09c96970e0292a81a246f7e3f49a1908a6b35f82315624b06e48c9930440a7696f32882a2f254724da0a248a49506a6a12cc984ab0729340a86e461e4d022fbfe4de3d4a608449e01a7014da4a25a07ceff98f25e0bc520237f7ce7110286a997aecfd64dfff76f951dee7c08d201e79ffe1e273d8bff1bdc7b430240df0de5157260164c0fb8f632f26090cee13e35b9704b4ecca7bf6d9e16e06531d007cd4d0c555b13eb9d55e3109276f3afa11732c57dc298b98cdf7a2ef718da23dce120f656f89bb206dfc99642c64f8bbca94cb2ed34ac41d4412fb7dab30f9e32a2cf55a74813e9544bf15a9c8ef8d9b0d4636b708fd1f67bf005491265a7db9cd39d07308343f6f25d0b1ab30c3421372b5ff684a163819ab8633edc9a7d41ec502cd2583092c25528ea2bef535d87b8b67a5b01c9148952260b59198f3d0c47e2d825b95c1a77ba7df2356c9f41ab5d5071ffe3bd800c8264ba6802d2ef197009b050cbdb17cf05e91fd8bb96b4b616ff4934ea62ef9d40302aca455eadb7266cb3bae042b882a19729c0246da2a216c9c104be80c99562a272cecb221e1f8c33802ce991cb7498eb22cf2c437cf32640759e11dd295180b85ffce726a2b232c256117254fa379ff34324973b5e61d5e5fb9bcd4bec27b0cb8add04ec81e368525de9afab09ca270533fb3fbfd2efdb8869a66439e8ce602b22c9c3bed55711950979f266761a7b7c80d56a7221e6b5ddb9d15e6d5f0b736089a9b249d1acf7acbf0e23bc2be69f7c57a5f5033e91be17e2a9f7875c09babc794cbc4f5e295a40fcf8616866394b82eca96c82982a47fabe47bd284c7590e799978cffdcdf4ac5a9f0ed5759c28b28d72a66feb8458439ee1fba538f61cfce4cc37c141e87da7d8d519060c6a76372ecebcf37742cd24e24272208bb40d0ce0e6a469cf1b2436113575082d8b49f79b23e1321ca440bc0192fb8f13d6d1527dc2b299e2f5a8d50d57f912d7024317bbee4995aa4c37d06c9f347a5912a041fcab76decc566afa70fa49a9e28ed0d90b91ffe14b942f7ed3019d9937ec900c1bc9c0390bfd0e47866b86345b8a5d51ed84107658e6a8a13b9c5bb38148ec8cc8b5a17b71ee477aefc1f5bfa267b1e43d60a6488d529e5be5cdfd286103f775e6ae3616be1436bae49adff489ca9186ca5f7cc804aa7905f67266f433a4c67a7c7debd06e618b96f80676a4d033748c3a09705bd1311c28849ab0263284ec17c60143972881c48487dd84972b76b24525eb22b35e2eed9ece87130c632fb7d87cb9044736ed71c1a311e92849e4be679c53dc7f04e9a86950a5af34a07abb8c7a4bc8c0d76a0508b7fc71f7aa8430eaa6e0f652c767b02021450517a7155c511a01165cc6105c8f232bd0f4ec34099dca263d70c3ac41b8b00a9370a7979435deaf644760068f0043c47549c46d5511b7c67a848811179ae3a5cb0cafded946129e4e44622767e729b968aa56ee28756d59c442773afdd4151f796e4bceeec305f5292a140a1768d43659188bb088c715dc76ca5cc92f40afb941f2e48095f5af5589f0be3460a2681b68b0342489ba22490c124928d865f53ae73018fd1b59a48b0f4e658748106db49acb19633e4936991952637a44844632d77c4378a12bea8c76b75369516abbe43e89bcb91c34cb20775eaf0362af28f59fa4f5e89ccce09b1cb22939b69dc46eea51933ef4b7496dbc33732d4cd3040b6f492444f7e7f22780c814a222b6f1e42dff23d0f43092a08742ec793dd744588e761d5452d6debbeec53cce481c6a5ca718dab8db08167a78b6560ae1c20c7494f09db9b2ca04454a0000b5e8ddd4c33a3534a7d9ca4a1581da83e925f89f6e1fb403752f4007dc27966e8453cb90ea883c31622c0f542ae11336d027a1af641edce918b80502d04b7475ee366a3753402c797dce37d5e1f2f701f25c6381a9552ceac229d0a815d5f1ce82006e65854cf9a63749a650a63858b42766e4d87cafa6859c1ec3b26fb5699c7201219e966bf41e200cebe145b25af2e165aa47412192b89118d843d450060eb84000be019a9c3dc63ef91d4ffb0cee7e3fa1b788b7c940c0a3cd7d9b10373fae0ca0c74703ed3422c14a6a0a076afbe430d1ab571842c89ca45d038425c01d1a661dd504cd4078554878b95dc233715f19b81ad42ccc144c886f5592203f6155d4a40b8a4004f2361004275981b0bb146db063a5603a90fd812822f72ddf38014f96dc08dc3bc3ef735a8b67168516212a1c95d05d2b79f2d96f65a493be88d931a9e8c3b960142def9096857335b21e2d93b0b48cd26919de4de05560f9a22e098414b52c70ba713a9cd432df86909709eb9f97808cb6fcb6d47205f912b8c13290ea99628056b42e209da0f6d67238022188127d722249a66473a66d86410959cba63b44e4a76ecc0ead14b4c59a3143b6fb145a14bc91c7cec276fe439d4d9c46d724b2016dd81068b82aa20d9683f693908089a490e5bff7619e2e3e8afbd813ee72169d17624df5fae611ecfb04b9aa1b5a0e3d78d4f4444a2839587495d679b54d21e760c9eb71e156526d2effdcf52999f5b6e6c2fb2f3faee0904095860f260234d55999e5291cc3ee19e25bb9110f0be222c41c35d19b33a56add543ea2f64530766e40c588eae6deb02fed2ed3b4ef46afe3af6c42c855db504b443459432802bb24b58d93658a2a150d4c4547f4c77f48e87b08be71cbdd9c2164df19cf8133f11019e8d3543bc684819fcb056fcb48e69814a36b1f5f09db75bf9ebcfbd316cb54e6f3f089f39ba1f659f463800796686ba9ae5a78c54c3a576d8d67620c475df97cb64a759efa74ee41deddbb0421ff5257b8b863576c41991f561e36da2dfa64cbfe17c54a2153c72821d40e840215f036cab624f8ce7a83943c203f55f97f6e19579ebf1cba37ed211921741e0311a9ab87991e22b0c6627ac22d2e1a080805df8a332109150d00861f2d554154e76be3ce7ce843a9a71919dc2b2c17d483f8044778e313eb218b8efbe0274c2665c49dcfe588a58c421139bf0cf70e7d2cb560c039bec0b5644cf35ab0e8376f6b25ee8b227f8baa40063499e8a5a60ae6014542216f9e45237c850b657c4f16f140fbea08631aa9231f53fdb724f2475d9c789a43986a81820d64cbee31cbd880bb917639560d4989644e836c75216ff402e208a4904ec66a9598bfe0c9c8dfa14a5e6b2bed189c970239c0d63fdf60b522e966127859a67e6fc4a3c9a039c300d30880d979e75ab0f6df7ca18a59e0d58ba6978e77c248a325f7dd510a372924413c3d278b663e8eafe3313a99c01684b0ac0553bc731d4c7601f6def54cdbbff423aaf7b8ede9995bdebe56331a4ba5290a6156d03b5c085a453f88a141c118901676d7a15b7fd0a7fe61cfc084052db0ec78adc1bf89bbc5a4bebda798419719b44cec7e64e9a517fc73e580383e8cf6380e08ed0e48e12f04940eda633ace1f6fdd3fae6e76f64b248f2ad832f867a7c262cb3bf62fabd436541a1c242ff0cdc529a32ad63f6cefcb097f5149cf829801b483c8adb5044fb6fff78e6c9516b6ba1ac4895ebb799d4179557b8b8c7bbf2214ba1254c012d5150da5fc75e1180b94568407090aae19b40084809af2e18f7d16527088f7ae76ef6376adbb253b102416c8947f67176a69874e1517dd6a5b1bd5e9719d30c17aabda0b144d93d5c40a6b177404e611a60a6007764a594b5dbd0cef6900cb79c80e9fccd980da174a9a5bf0384997c9b800ccd4c81115772da48d45934e16b4047eeb57ca4d44065735882bb844ee70bbbfdb3f2dda2d4477ce569baf208e30048303f5ab3a71294cdfbffc8f790b0ea23e0d4887b8dd1f9c78cff03c8efe786382f2c0c438a9c71beaf24e37c8a182b8c1050e993eaa6efe006d3cff70bd23e2320b016366a5b03b8a79539cdb1ede55ae736d56a42392324ac9dafa4a579057b0c28a3bc7ce84f82c54975d1ad2d0eb904034d82fb50ef7d0ad83b6fcbe1b64243eb0a82eefb5f693b5ddb28bb282c62cd9dc4cec8bb20b17e18ad35d685e519777f2d3014b6433c7ca3c26c66b2742f2d5ad03bf205f439fc62e59aa65954d376cccbe73c4aefd71200b3c4cba79bdb125f2d8b5d512c78be7e0e35744c1040c977a67d68bd0c11ef4127138de9e05f0afd843258b2f0643f2984da541c4a55e8b7e1630e97a07c5379297d459b2e712abb093f64df43475a2f3654227ec321b01e96e65bb00905610870abea817f7c435ea6365af10166aa6f9eb9d57699871a968e4a596390679f4972fa32206e94567466c2155308ebaee16438b892a078d5e25d5c24f34aba4cd2e36a735854eb5dc4cec2a066405c70b857e7206d39392058d33c8ca4610414370e3931b0915a23966919d4e15769e655e5f41890e65ee47e187d5817aaf34507dce3795712165a27a59f89978a18af95aeef45054b54cfada36e97d97ea7ae191dfdcad4f799388e4f4002e3ca9941120117f17559fe9ca4c7beb66b9a7d82ab8dfb8b8e9b286020057361d7a1da4db95c95763d272b5054a1726576900c78485eb453ba4e234d244e6e51b6f2dc89b02d079ad8a048e891ffabeb5a4c94f46ab4c70e6c390276d91a052ee62dcbc35a672ac5075ef023838dff231b568168ba332a23e3a3160d20b25c53fe3900928979df6882a6a7b488df987119f631510d23cad53d0b8deabb77272bc42f58afac29d629e6af2a061f2e6595194c50fc939609bac6b88a2099e4642429eb0700a4059a9f31d7e482005dd6538ad891d2ea90d86ef5caf3f046c2a82e8aa968ab4e3aac93be145405905aa0aee1710e45311bd2a7e22523d2c122279079338f3b8e735e058f40f175e79845ac916d38bcb0fbfb7e671996d111cdad9556a0a1522f629b3dc08b35cab31ccdab826b68a2412a85a4ec93aa5d1b9aac004210ae7eba446c7cdb402020b940199479d0dc93b62218edfc779b41b7d32f08633b6d9500129dbf0487dc16d2a40f5f2d3b8daac298a0b85606f85fb036eadc9b4a2f8dd121cd780b051169b7db9d9472d98ff03cbed283acc96e8a8a169cc17add4e70520d787214b394a0084e81780e69b0498bd4029b0debff994bd80a971eb6127a438903edf7454d1cd0a299e659116af90c197ddfa162ca410f6cbff79b41c213e913ed14918e5747d97d07fa4e0d760559c4bb5b3dc56a9c2cfaa6a494095ab6d080ad01a7b8cd69ae5f5dde172a4279b4a0f144a4e2c1db7f0522a110c9fe9c1d069091d9a38b10a5d4f60e479e261c1dc03b5699f609653408c3b22655cd36ba5b873cabb9f265cb315b7eca021057b2ac43ea8d086030e2f9a66492bc24f89a0682f583591fc8aa6ba9462f63187b68e9a3830068d804b3e7c96d60e0436309aef1f7188994f8ca9f14190e23a14a35510467e6168a31a1b02909b185ba5803682f33f441042c4a789f395ab9a043c7fa819d32c43e78a7ffb044b9a0ca34fdc5ee469d70890f4c4d3c5a5e2ba85f152d75591097c6d813c1faa0ee71c00204c19eafb04c45068fb82d6b83e70cd520a54f72b076afd12ff3ab8c8307a1782c9aa5404ab4c212821985a23b7c0a7adeb5a6e41f03240eb2a06b27fe94223043afb16c1829bd96863ccaec54b4d4325ce9b9a2a9ca6552f8e4937a3a07c5c73a47dd30b27230bfb4186d1cf109435fda95ecaf8623b97376cbd54c548483580c4ba159ee270deccdcb6524a461ea6fe4637d937c64a7be362baf667ee0d3e16e4b842482e5ad851933481ea7ec34c69f64fa6e82f16294aa7ec5fc7729405a8cfc4756240acfd0a5044e954af68869ba3926222531a3c4c423a86e83d5fc7675033a2fe4b2c9bbbe833dc40a375a790155215ff48bb957781d91022766c1be019bc796fc9f32d0d4d2b8adfef8aa27177902e7ac4a96f7734079c1a1d04bd57269b405fd98c044c143ff09b1946463aece034c53b318b67bd22800711d1fa5345f1c9d6a010c5ba7be746fc1650f66bd7f05546630e6c9a3da561e6a2e55551e3670de315adbcf6d52bccb6b88eeada93c26b54a008a59d504ef7955317973bbabe2f5f832dede16fbbaaca998ce378095e15c20d4b8c89ebed0f1719435cc1ad19f9bacff05616eca98338d6a79360d8d180c76382e7eaa61b63ea0503d4a3bc83caeb3ae5eaee884a8b1e1898a0a9427fa766e577dde550f7957264dbff306ce3af5f0b3b5a39a4bb67a3d620579e99b858ae6e150df7b763ab56718d3802883ebdeb4317370432eddcc744264e1e697d563d13e0c697ccde3688ea9868eb56f72d7a9b77dc4b7b51fb6919e75bc8e51ef5ae23b7ababab13526a0da4636bd753916d2af606d00384a4c5cc4cf755a90ca69c415de57259ca364a8f3b92ca630cb28c0a835cb6bbeb654751f02f420122a085e80e6f84fb2899de58378cc6b09a6dfaaae96f3e34db128406f542f7efea6a86495136d8fb152e3b41ffe2bb40f50c9cdb591d0990825b964a7a00105715aaca5c1727ac8fd1c13d983cd20d4607d8a401f7f0783109324accfe5a56f38155051c6b721712db2168e858636ba8857be9fe004a5b2d50866c3e5ba1d0744f755c43cf812a054e870f08713005e42a9c310c55576f47ec386d9143bb2fe5a8b836a61bf6577f6866a17ca63866f38918ba3cafa66f3b310a2a41bb777f4f4bd9817457541d7972e67e35284b4c89aabc130a996d9e7a3edcbb9e7c4d872338d1e030724bd3da9a4c0e6409429f5b1cb7034f207ed13b1ea60f27db29093966ae56a0b681ac3a3496e04cacc6f63f453319c5fad1c4055de51c43ea990d249642d30fbdd4effee457ed2a2578bbd9b53a9773d1ce987debd78b4578f6d6edc25cd8e056c5fa7869e9fdda24844a28e0a5a3e6668d83dcfe958a1bb0ac8a2955036c7eae42e9270c341c855852aab127b2418e81e3cb5f417a37d571eefb38d5e0b0cecd0c44074e170412be99cbc7f1106f709d3706552ce49ff154048c4785460a2807cdf1a0d5aa9486813ceeee2c2ec94b0be9072b342de442ba8bfdb9dab2071e872f0faf2924a5c766e46b31db8be9155635c583632150c2572bf33386c47b2bc3c209f1ed57e60307d93fc2e2fc79d7b052cdf8f059d0d6cb8979b2f66eee525988fee91edbad91ede15a0f2df5063734528e4d58e2fd161d7a6320b391a2f04a9d05faea40ccda56f9a138ce88fc01c0f30ec8c084e2fd02ab47d68fdc979de721a831396818c7f4ba215d2307f8783d2215880713fb23fff1382a8682b04ad93f2c46665b84605b4b8b3a4e17f6280ed121888875ff4f2669b487339c7f4f234a730c72a9c83319a8576250bfe271e58688eab9748331c4b2462786351b4f5ddea429b1835faee936e006c6a77b7acf84e87891b97d7cca62fb125c6c367ccb7e9965e2b123bcbf9501cc29c24869c8dcf01eeb06d3a62d5f76c45712ccaeaf48d12278e382290dfb2e60a0565929362f79132ea522e2715c54f78a073fb1d5c5b007c14a951e0a7ea8a79bb2997af9bcd6f284f08a4461b5cce291a45b72663eb997fc3bf931262313483c21553626efc5f279f2f96083fc0cb6729be28fd386bb614f8d0802d2380c46ca75ed0799a19cf6d52ff90bbb0d5248035cc1bfbec415e744ec4c7f992556c569a5eb402c416256d53cf3b902f50695a3dcdda864b6401d0145235ed229537ec4b27b67ef5788ba965a084b0be3deb380185881db7b693a1aa57b3e0017d5d7cbbbd3708f759156fcd7c85cb64546cf4c27bd9b357ea4b4050dc63a6559a5bc9073f0685c1270bbde5d9dc7c2e4235034b7790d865cbdd1100453b2b7a69b2d5b024beaafbe39d81fafc92e32cea4ca6cd9adc70af9c065856bc9dccdfd586ee6e87ccf3f515b088b7112547399d36e2e903f9db079a5a089da050f3e12ca6697963e863ea8ffbbd56859f45c17e8662b6d0dd45ca3a7cbc7bcf3e349e429da11cd224d91e629e33352812edbc7bcc7d0b158445b932fac8cf88ca0184d52ccc842512675c646e41c8de1fd0136beffb0b1f573e8fbba2f8999d03c65db88c37f869ab0f16c5ea0b337c9c4ce2d240a60da8d55157284d389708e3660d2c9f435804b8ccdd5e3d165e3eefa6d3048df078c84c505c3c83c8b8ed85047c8afca267ce46eac023c27c926dfccf43823c70aee9fed942cccb237c2f7648986609722818116bdd32b171da41964aca550cc1f3533d8d69105f074f8e32caac5c89f65c1fe39d0719afb4c3eedc9fe3ff195895a16c186b865f128a515afcafb04d45503522c01c55570f14dc4d5913ecd66fa8d6cda37ed2441bb6171992172cd9b453c86e4281d7a2af42b022982fe3a1ab8fb9a2c054f3b6f48f2ce39c6598b6a91d4d546a692d01745c5344f268c8b869f3c6b8a66b30f2dcac03f2629286050fb1e4ee96a0484783cf003dc504bfc36776cca4cbbdd865758ccdc693f2260211587334bb98749fef746184809d82ffa02910470a4ff6e86d34b08fffc29a46abad4908db3ae2247e6880143d4c7dc9c75161b47cd76dd1c438364563958425d54f6509fd10805e990742b56e3f0b3484dc823e2c000b22ca314ed2db40dff81937e612c41e091f04c615574a519c8d6a5e4392031b65b623afbbef204edde94812d00baec24b3bdc1e9ed8da920af7ab86ddee7a3424f605be3da5699f1b9ba427046426966a379bfb2668679aefc2d4f3b41e3896390150e3d0082cf25f6b6cd5484c32918654ddc2474af097e23c5d6541da24d463ac2324e12198ae7e70f355702d10fe32c48c262f89597d9a03daacf69dc7b017a47c940e3cad7008a3730bdfb8193a6cb72022e26ca5faae21edb5db5a840bcf6e9420e7489aefb4b3e1ea7813d8c12ef23a985222ebb93f8effdc345dd3e54e459d37a122f6a74e95952684a3ccf3a3b458cc979fb3244067704b90940bf31324fe9e4ab58a3b35c7c0f3b8875a7b18d44c2fc218e9ca8c77de50d298fa4faf80fa3f98baec92738d1770f5ef7ad397570cc9c8b7bca70e061366635b9a6a72257b1eeb657953bf98e6ade366276384872cd0b36322d85e3c3d96892d9893f419f07f2cc2c38ac2076885931fb2257c4ecfdc936b26edc2f3b6c88e9febb084cd8246cf6c86892278341bfcb4335c84452379f2782e145f26ed2f96c150542444577c01aecd46e42d2c1b950e0267ea261f9fe31e17dd856cf98c5878b9a983c4b13e83aed2c2b7a87d0be8ef8cf0b24c565a6bb9509e07735043452788f0ec4c1c3989c772a80168aa48c850b98eee7e1f9559fdb35421f2c1a567fdc9aa33fe4836d40467a990141e0ba589d13586ecacb6261e5abd8fc454acd3f28cf4f1ad9de27c3892aaea7ca9bac0e0b9b90f5f3e3e695b20d701dfc7f39af76f25e2479612037251bc1d2480a29462f7925c4843a15529fe732bb7b4b09b5d854bb3bb7f979b1f4956529e4d1124df1f3bee4186168d8fc58462ca0449f26a9c59db6cf8c1d1a3316c2c087f1ce8bd51b3f35316162774fe5db776ba332ab9af0c4fcb5d552820338c9b5e1b2f3cda6c85cef5a256311c2ba5e4ca502db609e347d2d57f8873f48a906ef87fc31a8db1e3315655ad8c18c160498a73ec2f3024a98a442ff9099df7b07d552aa625b9d2707971095b1f1857a22f01a815144c30b849cc586bce4e64309c3fe9ed69ba8c1b2b1139e2a92e829a76888db8615347b51ea15b7074ac1224e3118d633d6bb64a3d76507a5dba84bb3549103cbca59f1c4617bb7c191484da6a2b12cdb8d7d35b723206c29e10ea0b2f68d53ef4c918e23feeb1c531531f742201aefdb7a65c840d007a351e60ab45736870a6d62643de79b3c65480f1be6d8ee55416c7c7fd69cd849a47fdd6c1769b902a04f7e38b3aef8329fec185cffda7550b21caf960fc1449a085cc82fcb36c6ad3c0e020ee8b9c9509fe62eef6e37d46f8b84f8f2819f4d9fa5a363d7df23d20c7f7aa63cf1cb8256d580266bbcdc086c06676376d6d19690c83183b39935ade4470f9e5c9274f60f6625f8440df7d4bee459a2c6b6a3bcfb9e60d931e40f18d4e42bc25d4204192260190c4eed81f28606e3f81b0e84b011e7a501cb29975fd610b39c9e7f7bab218fcbf456171dbf00f9187539ebea50142f67c8b1270a77c0881f9d272650214e4d352533b480e5045e4974e1306b8d7292f7db127c72b911ccbec76215b4b0393a8940c8ac957889fa78f03d98c4eccb443de0e800e88bf61d47157f50e792f10f407872c249fcbb0d63a74c1789b42c33a46d5a0c3f68b2a67f0d095b99aea1502d5b6ba251d3d7d2dd5080aa8984d3c2a897a1b9c5eeecd57629e20c58b9d7c69b89a9b2c4a2ec5bf1474665b32e46413059829e480d9c6c7bb812536965aa2e548c6860108a8e3307453f7cf44ee1b4ea805e813fca94dde041fc042872d0be839d405a18c3f6846f992fdc9ada72fcfdf32b4fcbde7f2ee5623a8d7a6483301e6a9723777d6a9f5b4482d074f3c79c639b9b5ce359c36fb6c9f1e71592f30401af002665f8318f8a2a6bd2c8c1ff218bc1b8435906a11909ff6ac96ca7f16eceb90a92eae57b5f7781db5f2987ed63b34dbbc77f1a6fa005d8498e1b42f8882c9d64964f8a7bd1b15321952f29ed833837776b7b0c3e5312854ae4ae231116b36579459307c6a2e9d12623d0181846277b4c21875d2f052c9e65dbbc784002b200d099586ceddb33df433878889dfdf6e34c1cf609edc500e839ddd6ab85d10af95a1161bcbf24bec6171e3b3a35e84d01cb9018e11af3cafa193409bb98c961b485d6c36f9637213dcb425802110c624e23f78d1ff8115cb35844648234eda5001d589457c0ca0dd5a2acbe3d95d3199454e52adf5c24fb72549d40bd06d18a1acfafcbb72d05f16688aa6664cbb26e6d457b578bfd527ec22deac140a2879003f4c32b34a251faad9b9119ae4d918e810726e42283fc2c3f807fa112932aa6db8d215e11c112ccd11d31c2748b7a72804aa60cd407934502f58410b9744cf8183fde9edcf4060ce1e8c9f24f553edf63359d1e4e0287839d41e207b98ff1e5e93108b385e7aa5ac549ca7ee03396c732b279631fa85d1662d4b807b51d945973b9d564251d1fc1e1412d6eef56d755010bd3cbd1a1852f0e935769f6e9d9b523416e61248d957fff34fd9b3b0a082193f9e5bb95af6bcdb5c446359ad79edbdf7b37c463bb73bc6f60ed2e22f3e11fecd119797bd19d2002a4bec4e68c777e7ddbc91413bf6dc85af98e6bcded1817b66ad36d45c5513c52b8b200e593b3f0a8de2162c0bea62a4b8cb59e300354b816329ef48c0d2bd0e546daaf69214abb2387ade4e08b1bca89c45755afe686af1e9c477a80bfcc899ac09bf0dccd0ae28ab4ad9f008725657c06ebcd79966d1d1625ea3e4c402f4c0d09ec22832689d8ad0892bcbf6f1cd712edb7594a59bd08158e0d1900cf0afe577a3eb3a4b77e4fe8d28c6114e11383c7b74d0bde409fe3588e787295b0c8ee3c6dc607450d6d08a2e408116b1cad6a75de3b0759a737dd12087eb35fb5f4e6f0d5e65fd29fd400efe2e94de3cb493c6683dc17fffe4fa1694e36e087de00600279eba909b4183af15690684a7e8a102b3640b17e23da7fa1b68d7e441330a07564d921ca644626778e7f9095e73adcd55f0c6f5e261c8294c7f6fa84dd72149122533d8bf39259719a88b446fe193930fd75aff4aa92aaa8f8b79b17dc90a806eb486498a6c407734f5edf3234547edd67c71ee47c746a8efd169044b2320ab59aa0ecc4db9faf009965eb5c7caf901ea4e811b943a5ebed40c68f84601b01781ef721c929dde7f6eb6fc273058819005e0df44f17ff50a070bd9d3dbbfd84f0776d2955e240a6a6fc7230d875bd1b438b95efe2a16bf41a89ba2f31f3911a5f7e78ecc51ab028a97c22e33f2f556202642283ba7f5ce00b626866eefec2f2b6995d23089bf015e368af9e2e10c24d834caf7bf8cbbe0f47100dd490b06d2658cc01844e029a93bd4b58509cd5a4034b4122a323ce18b26a0c021e4c4fd459d8e64b669c12b36a096f4165484869be994c05fa633d8c02840200485d15cd31018be043e50f3e78ed8c32a8f6f7a6b53523468c584208d9846cb9f79632c994524a01c504df04ac049eabc3b162454a225202e5250aaaaaa9aaa9cacc10461145db58d146398b44ae608565591eebf3b9ae0b6485ac93c75c1ca1da86ab50554d554d556666ca8a899ab2e62ad4c10f74aa55b446a1aa9aaa9aaabce448159cafaaaaa9aaa9ca4b8e54e1aceb885531c34d186e6e10861b223738b8494bf32bdcdcdcdc8046cea53553b1bbd1bfe866e6023a9f7b6a848a2d256118255131d6fc074a3d0ac2282efdf57e5027cab9e73abe5a9d32f1db9a714568566cab9f3acafbf17376ce509feb89aa3a8bb6d1cea26f2e7619853d01b3cc89ea9e287e77fba8a66698f03f68c4889137517d6383644b302ee9ec65970ed8c1891d853d01bfb127385f61938d8deeb88c288dfdd7369001ce8c4377c4299206954523bccb88cb1cc713735d7fe5ba8973df59932dddb8dffaa6bf7054dff4175bdae7ce39cd9efb767db3a52c52b125f7c117be37ba15be4277643f2007fbc6fbf5bdb6b77bab0584679a851ee1420b429583b0ec8fa173eebacebaaace514d65c90b68adb91faf4b71c5e89eafbadf2351a1d1cabf94ac68c2142217b10b510cd10c710a77cef3eebd55436f42680e66a9a1eb2cf55475ce78bef254d583efde7bbe7a584cb22524cf9aac2ce1e4a6a7ac9969a2d602c265ba451fa93c9b40f43c6bc6e3792f56515bc21f8e5f396b2646d747a87608436d8967b48c182f0f06cc266c8a8d7de5a24de0b5588db170563a9cd8980a75c5c6481e4f6c2ce5f3898d8d40a0d8184a28141b139d9cc4c64e44a2d85808052536061a8d62639f9494d89887448a8d5d2a2ab1b1ceca4a6c8cd3e2c2c2121bb32006457fc5d4fb9696d8587471898d55ffb1310ac362635396c5c6200c182f1610ad61aef5de881143868c198d71a90403131b531b4428a39694b84122de834b7d534811b2e6b46dcbda123cb656887bb735f3f87d1125aa9fc7bea7debfa7de730f88976d9023ce4dea8e35e35cc7a1e169932d6d1307a9a6f862bdfc8b5e6fa7c26915073914f5a8f4bcadfa559473b7eecea1a8f7aa0ac62bb4f2a5980e924c924a3e2920cc69db9e25f7ec9e51208ca976d60c28c87591be8305e97c12dfa39341e1de635d9f820d01b5e94f563e89ab479024be87ca9f7ce84aa2d4a343fa136b86443a71a289263e9f0f59339f4fc8e1608b14d1f6459bf67035e73e9acb36ff09402d12884bdb8cd038f3e1cfd3952199b04845ee0e2bd816dabe0a17dafe4915b495f16c5bcd9d667dee8daa352bdbfc6ff8bb77ab00fef179b06f46b83573820581d0f3212c08849e1759331e0fa61a08534db44ab857d6c90b768925287f0ec25ca31cbf86d426e13cb148760b1b9bed62c9122f987cb13747f686da1d1831b24190a2620a636dabaf9c2748b994d71fd2e7579c052b99a2084a23495529d65bb0c536364e738c972c71c75e3061265fdcdca0819b341142e408d74bf44bb1669853da89d704d42292d5a8aa83c13024cc7ec46016b2a445c22b70212f230c73033f45e5197b42c8a847079ac145dbe010234d9f840d71699fe7604184e4e8d1e17c12a51ef02119f2466a698b6ad0f6d76ad1962c8eeb3f371c0e95dfbf8c640f4272f480bf7f1d491dfcfb970e74c70e52c7fbfd8b07d937a983fafd1643e2e80460e57bc8cc618b691843ac2261f6292c222152a134f657cea0edab8bb6c5166d8bacc5133261dce7fa82b63b6c110b6d3f22592aa5d4e192a00189a6a2651234d4685596c232e2df449f9047696c9dcada2a6d5b69ec27df90aba58d73a2b9685b8ab6bfdafafb2ecacd2d2c2bae42f294118ae82404721fe7717e753856aca8093e77cdabaff55b339df1bb6e294295a943779094c6bedf282d594b91565a7ebe4e96f6390ba2b58d3b29d3bfa968dbe9902cc0e1705282b02c6b748118238a10555589304051d4c910d334853200210469ab81d7ffb48fb61b708fb6ed2ecd11d19d2e8239dc81b53ca60ef7fb3efe7dc0002e8796909afee9d5498671d9e6fe69fb73a7ad3934651ad853abb6aab610ac555418ac604338c2b6150d8622a0bd576c7b4d5dddb3cdbfd34a808be6033e4c08a7b97b0699c9e708adb3ac1cb65dda7bf7307154efb2edfda5bd0374341f2f62c93058324cb636ed343d7c1445bd36fdc4d3f49eed7ba84724ebea7203b4477f1bb140a66528ec3672d996ef5f65a6bb6c83b99c6d236d3509902068ac9fd8965468db6bce9f6f23ff976dcea973ff9ccb9e73cf73c3c470ed3b7fcdf7d553f7b274cc7fb3537f24152ec86cb3a1b0154e5f4d30e635f80ae1756d23edbd6c833f4185b0b16dd2ee75ad9d0fdfcb7ed8e82c2a86ffbea106ff693ee0276c081fc26cd37f993b1eab3f8c5020be5a86ea011a27b6c568f99553f72d5d501f66eb0217e6ebf7367dcfd2f96abd3f62da08a9999999a99aa9baca9a9aa9fa3eb12234986d9d3e121362bdb8328baf98eae776f5b2c38400f2749130b284222025efbdf7201390899889098aa266800345c1a0f2425513bd106b2ccbb23a3340a019a1135147d461a264d580a2aa58ed2e866524193248305e62c46082a2c18394a03451a4080e319dcee5b9ae2b085248d1a1c175b9787697fa6d32920449911b26bdb2d22c2d2e2e303bb868e0f1b87c76776585a5c5c505061e1a7c3ea0100804aa2a94d12885d4e994382a2598d0ee8240a1135147d4f114d901a606a452247e3e138543134de0101362e2f2581c8b733203518da84654835233aa19d58c6ade7fa994430e7d9243773f77366c34895455d12a715ea548e7379092269a28914830505151796fa28ae0b0f2deca2b31f14a458a1429522acd9011e3054686bd4b0bcb8a0a296584223a09813e9eabc3b162454d459e02acd00525555575aa4bf5e270389eea03e19640592755d5e6b52c1b1b9b2f54a9036f42ace6dc072e67812df13fa742ace6d910cbba5068f18a700466666566654ef769628289dec20c628c1eebc3fce9743a20f67e6d4f7b863084213c2193995b0baca4a6a6a6a6a6a66683d333e70697fe94e5bbaa6aa71d33a14689e3c60204626ec74a1c37168e993839118998db31136a1c3716ed1c33733b66428de3c6a27a42557531c51453c4346421c6e8b13e9f4ea703721e8fc7e3e1820b2eaed045166e563005163247eaaaeaaeaa2a298bb122a3c585c5bda83c462291483262642b2923caa585c54d8fb160294c526e5050504442b6a4c4cea864242256f0232f986a154c5dce4bbf6057caf4bb357355c0058309d3ef56029e0635a065c2640d953061d8133038d9cae7037269712ca150289e9c5c4112c1e0c0c84844483f4d51505415abaa5a198da8aa8a568c7137c3586c563016259dce25859114261cec55b838428a1e0ea9ba22468b6359d62e0b077b952ae215918b23a46845528cd6159cfd4e67f7616f419716374d164b4622d22b5893be49d956844a2be78a0ec9499e3242119d84409f3c64e2876d31a11da22e4723087ddd3535652a1b312b251b0cc50868d33b6c7bcd5d1784f12b8feff19b4027a90bc3ad083e46e252cd11af66bb9c4ca1cbb94fd01d9be0d26fc8d017ea274c6f718f287164a3c6346539903884a3d17bfc5ee672359905c53956a7e348978a4a7f96fb46f386d6fde6eeceb9abbb98f79c4fee8e007da4b729efbda7f2de7b59cc96329fc39545e91bcda251f45f751ab1edda42a3d79287f0906b355925c59162ab5c5be2b82c3de4d0f26b5cee99015289f626bd623a2791dc350be496d5ef29a6bb8772c1071946f442dd02d9e5f9f37da83039040eeb7c55a515b30dc8125a7c777777f7876dc9447b558cc927c72f9577c570e9abd3de5b3f4dde9a9565cafc48269ad3e975b0ad86e6a6a9e2e18abf8d3abfc1f73a56b65d31bb1e64cd788d9715ce77dec23acf25b8f4bdd0ac5f265bb23ebecbb69c42733ce40083a58c3c709a7c98de733cf861718a8eb55d6cc9da624bd633092e7d8b83b9b79c4b259afb2a892712cfe135bc347ae8437c138fe0d2771bfc914a3c2ea59f81c9c862c078798111239381cdf8920bccd5a15a6c60b96125464506c247c22185c6a8064a0e221d4e0010b201dae173c383e3cad1e1217274ecb07668c61eaa005002987c803c9ee63ddc009a003cb30570fe431a80935a43d392e6fe3555d56cf34f249a27121fde8bf1d73c7976563df714bec5d461dbcae88a22b8f4e10b954585a14c84bc68ee54bd44221b87e0d2ff01c3fd253abf3a580d1743754c29932d8367ac4de94dbac51a8984936010640def182d233e2c65fc5ff61e4fd3347133cfd852694bafbd9f9cf3e9bdf7298371f79a57b3ad39c8a5ef504b75ff29938d18063af7b6a430aeab95eb0397a60dabc95a9a60e00d1e6d78554c74766cfb31bac19af15f2f2ef798c81eb8f4dd55328d03d388eeeed55d0cb33562293587f8d4d5331d36209aa65dc1a8c0c48a828169e1f4ba8d81131f16eab7518ba6df3c10fe46e5501afb1b6cbd61f5f3b25a0e5d961c3bb2b41f75474869ace81d4389a1b568fb3b627268f659d2dfeb7bd0d486a61ff3a2e93315cceccecce10eac95ae5f3f7397a89c06b56339f410eca0e5c683969f9b0e3ee080c30d323366bce4a0ed6f32fe596cd0f6371718a3146d832b1bfc9c6c10569153619d8440c2ec4f980344da3e64d9f71bb47da783b6cf3c68fb10482a18c03b687035769a1ba1b9073776e805e0ef7643de7b2f9fb723a29fbb76cb55a88240919f04ec01457fbe54a9f5132e830c933a98933a963ba0eda7953a34f733a68efc4fc838bac70a791cfea185496b01507bc29fc75e8cc3b384f055da6ac0a90dac9bb4e540ca38225eeae02ec253c772075cead04e1df942d8017feb6c1e96a4b1a1d00f97815cb405815a24f0f97c5826e0f178562870a954a0d3e9c04c03efbdcf06dcddc301e788e84e7711cc61a830f3f11314292cfd9b484b8fffd6a172e34ff5385acabfa161b8641316446bdb82b1fc8a8b4a0b89256565a4e29c43213907dd3f518a0f08dfc97b2f84f2de0389de7b9f93f79e27f4debb40efbdce87e3b1aed8a938ee4e59ee3e4577879c6dd5a37c3fdfbeef3bc7d90fa9f5bb4e1da594f1e1be943ad2653f64e9455a54f9d2eedcb9f31eaeb40289205a26e94288768396564061092dbebdd699ed2ef3ab55d7fd3c7633e6ce32651c898abf525555e520aaaa1a248547aaaaeadcdd9d57e0eeee2fc441748929559b08c3a4001484aaaacf929784f2f4842465f45d4ddc2f2dc63174ae0b52fbf62581d3e350d8d647c02745ca681cc3b50f2dbe719f9e722a6e172f71275235a5fa99b4d00e792f6a40aefd25222488a68cfa134506c3b5ff9849caa86b2672edfbb34dcae8fb7befbd6e0ee24e5cfbef39c8b50f5555554929ab42d26a25a6a5ca29b8f65dc59ad15f2f2ecd7c77b7d20c762a90495d8454ecdc797272e4bed10cbbd5b9f6eef6cccc20999944dc7b53e7a66632c3a676473be760376ba629e35312a0739d9969a3a573ce39d71dee2c6675c1e42a566b45e52475c5a5dff91633a7e0d26fe6eeeeb522a7bf6310a1aa3226d694ab261e027b93333912b9c1ccccccdccccddc4e49777777bbee135c55bb97ceec989bb9df4e90b9999b8a696536e1d2e71fbdc44cfe7a7125f7c628b8f4b99b999999e2cc0805d2cbc94166bace4cb66118e7dab9fe5c3e42571a4fc014730b2e7d377112ccdccc7df53b013bb36b20cddccc0d79cacc8caccc91932b2a422054150d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d3b7f70a220d5ce1f9cdee4fc41874cb6097f9b994dd40813e7ed5106cbbb3091348932d88e32b8f4797779775aa2aa180ccccbbcec857e8199734d50f5baceb839eb1bcdcbbfedeeeee6a70d7c55559fdf873b77bbfecedd6dab3e10a75b866e9bbed19c8596af44cb245a7e05840aed6cac7219bf27444bd1dddf9de1404b27b694cfc3e5ba95d0ae7d810be25c17dbed8406e96233f8d2379a272caacfdccfcdb61f52db2cf0b47d7e1ff99ecdb93b3208d5720d6bd036ff65e999aeed10ac6d06c49593a8da39e74a25cdd5a8a1b91c3934e7b23e800f402412cd477756c496babbbbbbb38d7d686e6676ccceccfb3a318863e103e28cd08d28a89240255ada605abf2259ec351fadbdcc0ea1d323b2de7dcccccfeeeed9d6efb2f70277c2eab359c284013c5cbb5d7039cb77a8edd53578c87befbdf7465fbab67851a8321402350369eee6ceceecef66765d3c2970082edddd5fb7bc9cf98d77eff3d8d4dd05e2ba3ea8f2a51ad2f15de4181359a03cd63923809d732fc6dd1d4ece3497fe9b9c738e9d73ce3976399e0d7e6ae34d35b694dc379adfaa73fa6a4cbf558c896c715ec73b97bb587564d3cbe296da03e1ab780597fe2aa12ab8f4d3f9b320ae2a229ab49014a4aea3c05fdddd0b6d292777773ea97399862e2297be2b717a824bff25cce7aea17359c8a869fedef34cc263ab18e3f4a66a9aac0b7a9efb8a6104fd39774c735fb97be421d7904c797afdd8859e7bab34dc73e6eece2277eeee5e626ecedcfd15c0ffbdfb81352c655c15a7699a2c6c2b6919abcc5d74774f71d742dbdcdd9de7d2f4c95d69e8031921449b20e1ff012da895463e15fc334d0ed427a1c8ef8269ce2b7a6f7a4d70e715e84ddd554c8e109632d5079ab0a8748c5fc5d4a9010080000a93170000000c0c8784c2300ba324c83e14800f53724c6a5a36180883b1408ca4200ac22886612800411888206620438ab91a0500519624f8d2bf116cf0b81a9eb5d0d1fc78cc70da524c54623d5d3f62e2443e27119c62ba5af066e44e8337b29396354832374d901d857c529665c67c255acd5401da5584902bedbcf729a7f446d30866cc882e561291c2e92acfb4ccd077053ec190e033d492b3af73b2ff8064a0be828d9447a53364bdbcf01499273a393a31d303af4685af8e5c613ed87560332b4d9764393f070b1dda0a22c3ae53524e7d6055c469543c625f34e5355b154e4192990479b1c3a720b71d5623172ac84c94992ce80fc8b18c3b67a193849f4bdace317ab4fe65eb8d4ca5292aa5888eeced434bf4f0e363633a2522bd098c75784893e9caf868dde79bbb67a2c1c0900a31d40d7717ebd8d8c9ad468ec3053e0394f632cb7177536416b35615cc41cc72bc99c8d76563a41b2f36f914d3f54bd65e695abf444a9a7c579b3bf397ddbcdcc38d75b82d3e9cf7e3d35a12a872403d11e1d040290f3142266ff8a1a623b942f53cd6a5d13aa56b510c1eb0c64dcf67fa614cd2415c2a4237c72eb31797e4b3ecf5a4e544c20b28986aa628d4a6bb54b40f764c805d1b3a9a6c144d71d3f4554188a2c7aa1ff819a37f0f32a5f3fd4dc0d6307672418b32ca18324306c79ac7ab2734901b101dd6f3680b4419910890525838a5245ea2ca706dff3a11d64954a177849bae5b83d4a869322864772eec4e1cd8772b9b5806223a6acc05ea82db4779f2b2790f1a19b765459f1bfbea616b585ef7a653481ee47d177d3ba2343d9293f2ce5299808e476a61a205a1f7b50f511aaf996f934aae60775bb13577c3ceee6e8a0d79b93d65deab1d531610faf74bffaf5420ee9607076ca0a95465d90df02ddc6d83ef824131d5acedc224ad2d2dbd32212d3ac8a44792a7b0356f705f4032117a3d8eacd19f8197459cf9b6f31ec67efec3c2d96f97700ce0190f439f2d465600a183382d2b5ef5d1087533456d0a7b9af563c3a0e746581801c80a2200e0ada91a870a5552321ceadc88308ed086517469dfa451deae393081b83f078d4b2a580549a65beb0183e88c51578f8a11e3f775bc41842a89bed1bfb18b3c507566755eeb936ce542bc14a198c2cfee4e461eb899201f631c81ab53e11a539559b64c5dbde873d4d9f10bbcb3c1728c18d0f940f4e3e3de5a5ddd55dcd019d14773777a69a30dc72313c7e550a45620e9f58a4b6602980aab3f9be5af0291cfe8a857ea936e2edae4ba088aa883f21061d3b732dc2bb0040995b8e2ed236acf4d24bbfcc825a345c063aeacba9c8b8f2dfcdd24c6d921425abe57603d66229b988a0104903d6d0f3216fb422e44968b53b72f78b547b9aee93da100b2015f62fbe2ffecfbc3dacf607ed37d44c7f95b28de0f1aad5ff28535c6c3700e67842dcdcb57d28f4fcb55a881be50bed350209593671990390e2f70acbba41093b51e5b022498a852875c07677a31b75a565c23b6892b2bd84ae8efb808e63fd7a37a3b17a582c6c053badd2f1ea844a38e760509ed92213f251daa7c0332dc347658879bde588c57e0b0323984fa8db1d67f72a700ab2c7375610fdaee11dc9e6064ace696e2b8b4cf05f61912f30562c511d0e357497818af2b7094ef412eddc37de1ee3970b39bf9eaeda2ad4a2a17548b6537a04851f8b36bff21be05007c4f4baced895d9065b5b7a2cd70f4a35633e6d98b750f7ae1387c4e39e44146cecf32cf2778c8bd51a0ca9b99905fc84650a73b594e5354470192ba408392281dbee9db4d3d4f134da4b703db14f6dde63229d5a42486a03fb06d20a47f302f5e1fd250707831c56228b0af94ad53108790f8ff78f0c138cec07a6c00f454d90649fe5b35829be5eea77e859564085ff241280123e589700984131f5c42cca91e457c61195f54d4458eea7c76fa7299646e5666530fc78c11dcdf9605b28796ecd5e76d8f5678a9c71402f4db818826a704e034796844a03d0f8f6542ea0fbafaf3b91a2c09c731c8399ab2b0f608d206000cc3b889bfbd6d2cf272ed83132e6a3653355cbd748864c366b454aec3d20957a96e1b9fad340a017c565df884c093fab7c50b76d20cd02bdf1a4d7a954ac9b298ce10d295cc0e24a35c13b30818e216bc510d20376175d99c6d591478491eb283a96337f5ba9d8ee6e5c31fe1307925d1c8615e1f6c5a2b8cad560ec453f04614b8974b67a3c89d192106123b626f8fdcf4f9dbe3a857f94ac261a6d9edac2e38cdb23bda0a963717c5da9759477548a3225c1e8a5d69a3f79e6e158652eb4c1b369252f815c4485528248082d957b36564c2ac7285e341205d78448663a22314ebb9781fcf6e2adb7784b6bd5978af2098df0d7572d0f7ac36658e24cd884da398c8f76e9746959bf0748534c37d8eb05dd438df61d771a774671b17464de1b66ad7c16ad0e93a11ae471a7495b1c20f606d4a4a74f2e5b5d64c62fb2023612ea6e3a92808bad8bad610314bdd04ec913df52828c8b8d60c30a910846cb267fd4f4733027ed98b20f42dbaa8e228c313838a81c52521e062352d4834adb5e8f0e46ff0670354b1a1410641eb96321c6fa309e00aa549198a15d61a56b59ff9ce17605e8f4af11b35228f8b99acd62efefd6f82028745d6da5ce20d4a2f6122185c7fec617441b56db5940a33485ead0d2fae27fe865f344b2eb6a5770aa5cc6b5bda85408307d8e226f7179c425de94328d527a47337bc649ff4ba5422c29b9ee96e8b99218087aaefef9380673aca895ea0d21accd9a6465c176a944627cd598e8ff91db411c57a4f63b72a539fd27cd2ac040f40dd27606a09b4112b93a4b4c5a1ac8c3b627d8e945e493367e044854d468647e9ba6895132a7a4ed6d48502863419000044686d26c3cd862aac29394375879774921fb211699398a10c379b3f36d42cdece25c73b6e4f705be39bd451d7a4379c4a011be043b49ca71389d58a77f1b802d73f2d6eed188bbe3cc918ad5667d03f48fb358e9e82717686758f7a5e1d95a2c432a5a938a745d89b38286527fbeb6cedbdfa7fac146a56aac4e804a9349d5291916e772f872248ccbe575d81e8e58510e15b98d48e3305c5f21b8468476a0dd16134b0f8d1bf913ed8363ae080a56a9cee753a47bae53e06f10db77c51f1631ba6fc1a9e4baf160fc80b8f5e045d6284c555206dabae97e9231a95289bdd3ac99345e69eabf20d924459c57aeb2d05bcda12781140ab2a2d3645cecbf2a15b90e17509650d9abe6e9f38c6a393b27f1bd5b74b9d515f349b584828c9fbfe01a0d73aa3964126afe7bc07452877d3dc641685dacbba33160cac09eb848fe2fa6ae71eb9cfaed8b7634d25e4ce4051ddecc08c6b3afafa89d22871dce05540ccb6062b84ebd38f573d2e894b2a0839113bd726f96bec0854646b329cebf261b621b73d234dfb1d4b6ce8e69714553c3ee48a7f0f9aa0dc1e9d1e1db6a4eed3e44c03d8378daff9094f16a91d1fc73fa093d5b9d39e3491fed312a8c11b92cb78b2674baa92684aa404484451eaada4a434d62208902c64776150dc66e912def60c6c790533a7aed59065e5857d1fd0aca63b27e059fbcb7a58260a9f788c1b9d4ea1ecce1b66333dc0588e8fa1d7a60adf3356ece14d77a408871699fc4a5fcc19a085701741ee0d6656f0315a049e5e0357c62d2c2e0b7aa4535295e600a1f2e26317853f9b9603e3ee198bc7c65a69da19827a6227fc6349cf3b90ca27f5bb1dc8e56b1997842a05ddce4e4da6590e1061819e0ca83a1a56bbe5d64300d0d81830655dbe6d51f6875e2c63ebebc4da0d75ec65ea090aa7a0714c476f989488c1ae9fe840cd1cea47c66b2d8fd6b6171ae8c7a7b831dc8d45612781e83bd9017880d91ed5fb0c8260e3307973c740382a5f490388e2958c86fcce4c176c711c320273f3690be648b502e2af259fa94fbf4096a103f69b1ad64d9105299df2ae41a65dd2c0ef05c4b8afa97e774193a8b4e3934c9545c947c2d1659b8cedd295423d64612acd9fd3f4daf898b45789134d47ee82c1ed1e8163fb4d4ba5981a813751cfa0fb78e0d229c77351b3ea5a72f3cea6e6d0f52ad44a411351a7d27ab0245025f3aabac9a9efbd2d650efabae48ea969cbe086cded0bdc03d7705f248f90adda1dfd9c4a445d885d1755053d98b53bdc0e61d547a79087ba1d9bee5a9e5d375eb508f334010a29465bc56f3c8321b5f2518d1a85531d0ff2dade0c7777a0982b25cb4ede0fddeb56730431aa5250ec06123266110393364020cc03d56da508090c3991a64f0ad3258abb208d73976aa20e583a2c4996f1feafe2d0908a39ff0d150449822e15d21cc712e2bb139a4204d8923974779b8fa2df994d8af5bc330ae32b43221ad56b462a38a8798580841d303496321b6c5a5bcdbdbb23dafd230861a37c192698dae258eab1690271805add4c3903a817e77c1e8d7ff64e04a9304919e8b4c29cd79770c62833d815c4519c245be85be324ee7d9756f2539e3a559ac1647251e7f15c9c95fd73e82bc135f204c4afbe2152398cd43bca2c32cea07cfc1bbbf8c858aa1f749d5b49f9b607ee1b47f4ab5bd2c167088ce9947e91889589b81b9def9adae4f595439d06f4359419ab71573fe285db640adabfe7735d8e6cc6a00a0c12a12a20b99391176f49461a965d9a43923470332990fd43a0520b7ce2cd636aea5029306d3d646647c4c9dd9b73c7a3253401218e1e890a036fb6ae642d8dd3a8b49e8c6aa9ede826bba2884cbb915067e63963f4466baa7b8375172a594f5afbc8ce39c4b67f9e212daee200dc0620510442c4439db54b3de342beb86df9b9ea7a7066fdf60b0d79e080261e5593cca0ce7094e9ce453bfa0ce7c91926089f43f83d6b2bfec3dd59710355b78e8a9cf9d37c3f5c78b542ed403a22a557b572fe270b43d03b9488a36817065d48b7841be390db8b0a78adeb1ec626e82e59ac4d1939c94d18e50f78f3ad929f43c85484527e72845e2f4ef7183fbb9546da73b33de516b84101669de14c732ec3708c54c0d11b3ca29fe6424a9c5ca535ce16e14670ab3fddf2d0e1ce54aec729b71f9696e12dfe008400555e12d84f179bfeb2a18c57708484c64962c5f8f83a62b58ff5571ac9d0e5328f8f9ea49260c763afe7743c67796a6078b937be447c3c52910602053c8d5fc4dc903c86d0a4045164c8586aebc0db53fbb3b218ecf4b34cad5b1e54139b0d5ff2986d8bf6bd54049e45d488fcd54e8d97710c1b384dfd8447da51db6f0927de8565eda020703253eadcb81318616944b5a14895b88c7558e0ec0c57d712777416748e18994d14ac99d80035161cfb60f557aff5d0c080365d19c9f808c584d1ea6aa656cae40aebad0861ba334d0d159820e4a8d9c87ac4e6d4dc34aee61cb597994eb97ccf5a3a61270e8a4f3fde4ac6c3b9431ab7c0958fb4db9b24c3a43660799b5d220e5c90b7b03164641579949803659a1483118c84469840624b937ffeec16a03ca84b892d64b03ed106f6950af00841e75fbc5d8f4d9ee24e9a31f8c3de1051d696fa65c170d6c35d65f47065609f198957ae0499d6cc166101f3e2f2e71fc6f00b69f401b6a294f3bf64f040378093a4bab4e49d0d1ca244e9671ed8b5f1c093e716a679ee3cc90064ee7992453fc6524e3130a8810b07cb3c2e423396dccc6feae73963706cc368861f62a2154af9232c01391d499dd4616a29c4c50ef8971eb847bd04998afb7d18891f1b5d06c9094b093c74730ba3e4c3cebe1533a52ba46a25a0fccc0d97ee2e584e15995acda5701590e905328ea8d37cbf45896f96e29dc8fb0a272300c082d6c079782ade64ce94a12cd6794fd2e41b91065d9b8b553d0eee51ae8ec56584acdd284ed1ba5549227a6ad49255a534da6d69d708207080695aa6376732464830956a69c0b22121e3c783e38411bfbebe1384ff9236abe46dd058b32e03c05573051f284d45ddc8052889db48b2905df234d078869b9cbd79e6188d33c7f228c09b677c16a467bb873bd5f537ec8395ec6561c96849d9e6f1c152e1c04fd719ddb8f32fa8a94921cf8ae6c1c55e52a9f6ba7cb56cb87a1654c472064fbe30ce9cc8699ef4c588a9c2a067df6925b2585223053caf511949f32d59d8166a2b6fd0a53a6b4b8313d24d0e444b6f356932e2c90a55d49a57800585097a32e105eb95c6500e868a156e61ca955f8548b9b7c3e09e6b2d45f10080b319ef6db3832e0204522f95ccf4055f336dacd1e3e3492dffe30c2595945119e0b6ca17551135d3cfaa5caa8d9cb4365040981c96156474a1c456afb67d8d639b47a17dc17d909230f1aafcb2543fb962b78d385e99d11420b397853371c3926af424b948df9e6f13341fa99b6b0c3d016bed027023914a26486f270e0034d02269498b52e85060281121c82e8037c24f499c280855bf91749324c6e82ddc925017b296f53a3b6acb93b4a9092d539890b214255b24d514bbf3428fd4866016528922629c3954e1ed254fdae4ef6b0ddc42e764d54f0b71bb4ae96c5049ba7bc9fc22a192fa7b06829a29979b322f0a839884ae89d04161df49540cb7f364f1a1d9568aad178ae6809395826b20d271a853fff079f2cb313db4d51c015bae455fbed13084a15e77ecc19fd54e4a43f099fd4e682eb07cd5ff5eabfb2464aad20be1d08ccc09257cb7a8cc552751982da9a9540ebb68d21080562280d2273c95d99086ebb5f18cd0436a5ec9ef1ddf7da8f259d4798f7a0979ffdc1312dbba537e42e10add8e2e0f75b183056dbc8839a0c285fc2a6d889c41bac572de6b22225d7878527ab57e6df57f5f55364ba9e31843466ed5b3fbed7a8955f60ae95c37819327a2b7757a19d1ff7d528c9910e26e67c5938a439a0029e6f394c28230b4775f64148ca7f5705eb31c4c5cf68135aa063f0652a71ec7b4df14ea58841218a5e62b08b5acde8aa978a7889840d8c812dba1790fe69494bd82da6470348526aa18774197172fb5315aba308b72bada652dabd943e6efe5cb7c0f0276bfaed6d6c4e68f1f52220e8e3753764b667ec6277b219112642dd2e8c11b802c8082e12e59dbdbf5af9781d6011354fe79c78675178b3520ad60a58824a1f04c7999163d33029e4c0974728af093c6b8b04aea20b66b0a3ea1299cf0eb3b421a6fe2a7212795c00ecd09c46abdc957a8c8580059930f04c8b4f9a59ffa9bced55fe97b341b38251acb8555a6253dd688e7e59a1119c5c21ca2c4a5b8cea2bc33e65ed7d79b8f42d9dd51e0ba02d536bc6a56196f1b8cdacb77b126907dbc79c2e0def104bad21d5b74302fbdf32f720033a77c2d982de079cb3102753dbfd38cea6b545954dc9791760e27104d52f5cbf9673780b68291259bda246f23061951d8e25c3481336fb79dd4dd0570c4efccf5a96ff619295b590cf71c1a3ab53d4933022ce4e0b20a0dc570c394f69d27d2668d090b97713ec5bfaa71a6d68df14a6c0d9b035efa84aceca9a30b0be152b8e883a38a956a7c87bc29c8ec716517d393c964ccb4ff3c946849ceab152480e72bd9bbb2842aacb71b2470182fe5dd7c89de101022aada0b5e358f57d624c8d9e749e3a033ce502dc02dc90e741a4c2ee58c924ea8b6f0adc37bff8908902606b371123b598e5219ba761a1bfb9796a1d45c6119defd0d94880ff4ebadc7c2702a33a104bd676cdf41e221422a97acec622b4108299e55ed58920a30872db76667c36aada07977b6351583ecdd305167bd795a11dbeec0c90963da8c64ffee8c14088f515cf50662e795aa59bde210756f31a31f395192ce89110f5611e4f0749c5cee8033fde3332bf56dae8236d2d420dd33d8d0c7825c2a89949d6d1af4653e30bb2f535fe32793eda8bdd3851e5eb62abcebe20f2de75caf97f074319bc6da0f1ef4e9f72a0fdc91fb34a9eaa968fde8b6b71890d542f7ba667f80f4c91f8be90749509d618e5acfda3071b2c71acd13bd1fddd2590769df45f18e297cf388c9f41b192ff63721f7e3745e61d8922a86bc2140a1351a65b493192dc195804f0534db8a184a188d501ac1e85f5795aad6e3f32c445bd40c13e5ddf019b3e4a3710c23d86d25715e3f0c22dadb95ba0053b031f0aac74023b9e42c8d4a08b5101dfa08f86498420590d8cec2c2a9e32092c8491c567f2e05f1eae80f0e8d294882463a7f288a8fa8c70541c40bde13517f13747c14ef3bb01ecd8e685d949c0ea110ad3660498cbc9b0cc47cad2a66266d2063e276a94527debce328a531445f4db43bcef2a4d9440d9b721ce53486e8bbda5988358f1c01c3850b9c8df4e742e5ec2dc6ed2b6c1558d4a07a326d69ac469868afb39d526af266a0a3f33f49e529878638d1e2304a690e51d7033dc7514a7388bf1ee83bccd235a6f8ab893e386f0135cc29a0643487b7dc2b57522063001545cb81daef08dab786ce891a1bc2786db6c29cb517b7bab77da7ab8196c328af31c45f4db43bcef21a53fc9589bee32ca739445d0db4bfc305ea728fe0ae3b891a43d2383a627328954a93707a683940dc099b869095fdc95819575ed808defd8e91c2c98f719f60bbdf6436d2ed61483d76690e499656242979dc380a59668a19c785890f73409224504ad3347c68d56d7ce22a503b28a41f507a0f97ffe5942ba0a1b4341d58c7e7df94fd0078b6a4c3565dd8c0ad1bbb7b837a82cc264359548554e0271dbafa318a110c4c9e2b7c709b5f52e055946180af1e01bf19997bd70f96b2b5d0a6406d2da3927080160a5a5215b9619fe66b1f32b81ae4c9aaf3a642e7d2f482c1d9a80d0dad7bf7ce936c567c28b48449ad05852683f65c4e10274b8f6e8dc459978e5ad3407c63c6f132aec01f9e8ec520bc3cbabae97ced0b6b0000153b6e0464b218b3d273e4e8ea95242a97c8fe322cd1f308a0b48e5241a6fddbf95762a08a218273f1464def62fd4d60b88f7cdf20678165a89fe0ca1a70e27fb1502fae8cb6fb4353f212c715452c4361c1c31087a1e2e673dcfa150440e84fe5f9b088ee655400dfb912e2dca712d9867ccefb8f5476375d150f5ae58b58e831effc6690d03dc8f031e4c9f553ff7b527a2e21fa7ef275a686bc66979230c91877aaebf38b624ff37091622758f888c7edd4a9a17cc8b82a7d73d94d4189144424670243388248ba4048842da4dfc19c2b73afdaaaae32408341b854f2fe70291c418190bc2c05c5dfd006f223f01ddfb6a7bfe32f36a454d8150d38b1cb26ccbd4518ee01f6ecf5433eb2b77a6773584487919c78621fc641d7736edbb1c7b75c9dd31f447bc5dd38baec0dac5211125558a3ac1aaf9d9445eb34b53b42bfb7d25409be45c142af340007d5502df760c661cfdacaa35411627884ee66a3f54bd22b208b8c49d6672a641f00b52217412784ac202db4025e1d03eb7aa85c28b7ddfe1cbe299b3ea6e1b63036814d53baf330dd5dfc6d4bdd5d313bde81de46c51310e1164ebb870e0e55353a8b2b2336d5b764557b5119ff57c31eda952c24eba3b0b479f2390aadd25f1d33d6ceb86fa1941a54d2b09810efceef82519b1bc62774b4194367f4966b4981a58cf383b277ef638655c309b69610367d496f88d75e7e4e87268d401f54adee622c2980f05f39027a3042c1de28aa3af1b5e92baf6461d81423aec1acff02b9210235ea770ce3760a670ab6cf8d0e831147a335cd5a001ec518fc42b2807745c2ff8442e23927bb4425c25bf48ede99df54279ff44e7b2ed5e35788da8da450705f315f9feef8f0fd009eaafb2580fb62c1864b91f6a526c376425d1fc0bba3aa717fabd0daea6a3853cea8da94dfc2bb5356dfcd7aecda3c44a3086aacdfda7e10995f82b0eb71692797a3ab20065349c9a228c4c7fe075d2294016db052bdf65075d720a4b16e868a217c2d82a20c4cabb8887817ac15fc6b9abdd7560141a5c94908114a75f20d6139b48dcfb9e5c02c8a08b959614eaf4f3e9fef15c68c2dab736a25eead077c39397bdaf399c1d7c724fc187f10df99b50b47687973d2606c6c14e0792e1051f07c8c0db600b7fa41029a7f56572facab0003ba4504a41ab8a512d04c04609febeb70a257fa4dde9ada4cf88d9236e29d21d7b5f5458694256cbc2c6ca4ac927146a6ba889ee80c4bc88089958624f5d3d91f2e5da5260b8575737ddcd4b90e02f7b394182cd845f55636f5fe667295d572a57ac12d7fe5ee31fc59f609119e25e5580f0008dfa4ad9bd5b12a5dada63ab7e93455696d1b5aaaa8c639fa626d1c8022c3fe47d6135fffbb2e11ab60484ef5d5eaf8812a07af6aa8ba554544ab8bd833a04141bcf670f5ebd096526e06781a892cf27feb81806bfb3aedfe7e7f8b2f05f35da0e25bdd3e29b7755b561a4ba7f836e129b395ac00acde55ad2bca057297a069ab7c1a52ecaa998c16a7be5bc657d4665d8fce52be649d9d66438edfb9d6775a0a1495cd1e174eb036df8f52777b9fa69c4d1b88bb4d0565ddf5f6bd394cc62ca3dd060c5c1262e955b7c7b7310f9258ca98ec30477090bc0119d4713a76b687cc80c1023a8a53f9f56a417031d05a195a9880da9b62bb54d211463cae3a684103075259626456579f1551a34c8de9968c84598ef679ff778eb30a20a782f66e54bcd3bf09d6a5ced7b2ed48bff7b81ba8e585cf8294b0a88da052b1697e8c82d2245d22313643bdd1abacf38646d3d7d6688c7f4a1391869b761fae74f6c510a1c531d6093bb327ab7ea6728862b044d69851283630243890f43dd38bc3d7a345899c7a699747d37f04d005065c6244927065e7e751078461555815e5dfd5e40b062fcedd9162609fbbe588920c383a76e2fc2b30371db91bfbc48834c3f2a52347404d9dc588d210d8a957eb4a2baf405e7adab2f625528e7422b7eb4ff238e356b2761ae635d778b583d20cecd550732e7e04a0aa6d778388fb8740e97a41cf7c4916202a487d2280056339f542f3fd4ed285b09f068be12481dca24d169799bc937e55a670f29b6f08cf2b5c2f019d07410ccf6aa4433ddaef9aaad8e8294b2ecc19e93ecb62acfc24307b47915312b6a3c82b0bfb51e62bcbb02c07b90e2c72ad52628c48a6848453252a99b070b29438347b8037993e56b27ca29d461923e5a48eb9fe1b25281b17c39f7f179644b29cf4dd5b098159b810fafc3ba5bc7f6b8eaa49db516495a4f5286f96aa6db9b2f030ecfceb12fc0b04198ef801e627b80d621f4b95d2b9e0bd71d9a6ca46fbf79bc56e01aedac6746c63850ad7fa692cd5fe04072b40fb89aa2d8c8d8c9d6ed32d715719e46721743811d808c0c65822a47943e0152423cb433e1123bb2014d729a2d4d1ef42092348bfa028fefc91a4ecc04d6cb639a66f8d3010d939d9eee7f658f107b5f4c08dc3c10a8de1cadf13b8180b95d2c3cf6d19b3d39617a02322db07daea1d9239bd4c2ea35267e02592cb1b97541bcb8620ec67ff640026d604c4a367e5c1bc81634e58e745762601235516ac94bbc93e5071aa04490dc9846e26f71fee9f732a90e963e76e8b02edfb027045172998be093741276b9a4cf9a8ad9b2d8a2f5854ff26dc7f29e4c9e493b8093a59d364fa266e824a963499bf89933ff442c1a37855f5366400c6c2c2c634ef3aa1fa6301c08721c1a025adeb7a211d9f708ec4d8067501164b1543c4269a58236cd4e2a6fd01c41de75b515bbd0b080bcf6b8e79d2e60f66bcd5068afb0a051588f954460500dfb97fe71d4145f8ca4bf7e32b8ade5660d46cd5506b1babfbcee17032a0a1f8c24aac252e656bf21c415927665a53b73244ab6add67b4a51c2dcdb410adaa7d25d78eb6841b74a56c9a1df08212bbd1741b4a705149d8f156bf26af5572e37571714c0cd82fd15c2d1bfb44a6142586481266c518efc728d6093160a3fa490d9717bf2d2355a334d39a757185f7bb918cc22b6b999670243e45c5074e6a358f710eb776937f941b443cf027e31adce80ed7378bad18138aef822680a28b5d92b5a48559b8088b79308394e49dab642e15fd0ff892508269adf88bb964c32389a01075571c9614487e1c463741afb8c49a91727edd562b1d49ff82bc67a5f9a3d416f9d17984d7a564c62820deec0b7fe3b42642dea6a70422cd3ec19fe7f9cd23e3ce06266b0902d9d73bd2c0ab562c41362e601dec1a86e1d882a8f794f7881577c48905a3e63ce245e35771f07cc4ea974afd66c176aa582cbc1af4702bf57a3e11b1ccefd3567a9fc4682e26f13742ed5429102ecc6e6943cc13ed80b85e57421827e25ff323b3382a2954791510f72d1afdaea2c7f3f145c142e2029e21a8c7c014f424187863f86ee8091391c62a66cae5250de910ba05d8ff184cb4e53b829900e07309913704be2d722033594b0fc0b620ed39960d2427deaf473968c86069a9c735597af3a0b3a5ec33caeac72dbd6c388b5ce34b5ab0a8f6d41d21d3502b28533c93827e5800ba977e5f8e30940cc48dd00b52006ece212cb37fd919125f614e5330c2f413ae4b1a40f5e2281b633adef9d18ed57e58039eccb9fad66aa38214fcdfd2ac0d206145a355eadfb212aaf64c7220febf7dbf6cb425f27cd9bab2d8376ee93683e0325543d6e97f9806edc08335e0b244c3333ca0948f12ef01e1c7c0a7843b1d10c6d00d3c12c34c6d4e4a1067b60ba7908500322a0c5c5727a795ec2ed3d879b1f23dbe566d4814894e862394052cbb1e83e43d6f102e97adb0363b48ad461eb6d6c23331b23eb64dcb3b6c0a2354d9578316a99a9fb0a6284ae11b3645caf44c9ffcf28d1e448e319a7bae26e499c4f3daa97243e2fe6b80d7cb3a20bf90d626b731c9c7fd06bcdde0a5bd54bb9f4625c93ca20c402d9219a510bc0e9c56f9af961d542266633159f6873ee10990d7c9295266d103b9249856973ade1247b655dd5682406e6889dda57e34760de4689bc28076600deb655a33b9595c905eacba0ca11d962e1d084797da62e8e22f8ba3cb1588a7f180796779a5cf3d8987d6d8af3076003b74d00aa824c3cf05867d9c6b5961e03d8d1b0eefccea109b227a9226b86a174107a4933269314c505420983a8c642e022a8209e82f488af2fe71516e0cb9ccbc393eead6126f706034cca3c5c05ae22eb1de9c741806184abf1892055fde12b7e79338e4818a3dfcaaa801bbd9f9d3d681d18bd75980b94ada20b9124d5c66c31938c5c4a834e4bc3178a44d69641c6c4c6f9dbbb65d97d4dfab2f6f7682018b3485eab3c795a7955152e318d39f5bac6d82ed0541ed9f2008885d116efcaed9eb5a7552d32fb9c96c37d5ccc0e82f1c4bd38ab626e7870bac514762919df86be5bd368ee619d71c2e496e528a396e420e2a536e4fcadad09a5da975d240da7990052fb2e1792f3d8329a3248113026f3b228f177c69bde82773ea2944fc2f4d369f0f21ff9721caa99b7cd62db1acd501193a0c076d50320312f4aaf66b808594d00e51b03b9157394abd8dd14c440131d5dbf3387b0c6cd65f1e43e03beec94aedeeceffffa9c26c9526bf6c91cf766792847a18cc04db37a61dd7d9be762385f04420bb36add308e6d76afc8ee61a1bfe7da85224f306301c7891b8d54cce8581b109343b14997c9ef95045d6737ddb7fe866be64f55fb9776d9506393e4b47dd7b93042093efc65f6133ea2ef9ac17799edde3796ffdee7dfcb77dcf3533c18438ed93917b19b2db248798bc982a068bf7a82185343a6fb425df774feff591e3590ff7ffba9203717971ca8577dedeb0b7bf346cbecec2024ee7910dbd6f7571cd29952f2df981f628f7eaa50ac788c59a2dd31cd36d776fb457d0db0dbf97bfca8914144b4ca35b3c94a7fbf457835dee5114523d39f7d37a5dfbf3b6a5cd7952c9eb2f9bef7ad96e3d7d4cd1dfb79ad724bc6e26d97d5ee9804289f4f51edbb9efd7ac6b9ca897b321257ffcfbd16bba27dfa3ec607c924b1b1c840b64c2d4e2ab1c63fc7c60ad92874fe0f127589ad039a035f7183cbace5b6d864f524a19a33329bb8131606c7b65f918c484894d54f21492258f76b3e94e1e18c6a02404d90bb57b9d6f722fd86b8e928b0672cfb6c11cfecf631af7f1b04133bcbc897d31f1cffcbb9ecfe491fcdb8bfef20bc1687883fb2dcf414288a70219430090ba4169fe9c8ae4b053fd5adc1bbd0547c8670c9552c79d97db8701013a8bf0b7c847b092867c7dfcf5ee250ac91959aa1b51b2942aec3f83b77489bbfec5ab2e264ef8d5e58ce9f65117936a163edff67aed2b0c46e3aee03a48e7fffa1f2e8de42d61754a90bc332095b6bf2b38d7e98903a4b3c62454faf18717397589b22b7a7f1e1ca1a80049d807e9826d62fdaaf61c36f181dcfdda75fdc7e5c433bdb4c0290ee7abd07b519df5fb0bd0c8af66e34be7196ae299a945fb1c3ef309947fb81bb8a5cfd851112a548ad08fd12eaae3374dfb89d9116109530671da8f6c7174a5b8769d75d496032403a10b52198b3748571d6b079c43013804040373278fe9a25a72224b6076776b2c2d5e4dacc1089c17d5fa0a14e6266b8e6ea9cf0a221451ea8593875967130607bdf49ea2063e32025dd474e46137e9af7a594be8a2feac04ad1275300ee1533ef90c43bd4f56dd138c5301b269a696f0b6f10f88dc48ddb134c2e415d08e37f47fa57551420111688940de7dfdba56d80f56660bd323e52f4bef68ce23678f3f94d414f1787376b6977db080aeccb3da31c5d866596c7f847a21bcbd40907adc261bcaeca724cead52ea75c66cba3bbf4544f1231168c6c8228d8190fe0a1c6f6ec632e585d3c4519ee3624ad254a6e4023176116d986d7f310d73dfcd30e6247d9e1ecc6b391a15b7bc8d5c2e06c1316c2718601ad2ffc8e079e5822463de562422c9602f3d072f08fc992422d6a16000a7bac1cb47baf8e3feb9b2d708f74b499d18c2a68c4cca77a41863778f5c098379ae1871bfe945ba431b63bc72b7950b52684066f7ebbb636bb64d3341bfc742f5f3dcf1ef9e33d0f2c26784dcbc5b44761f3ec6f09c55b9f58ccc588c79591fcfc518e592db5bfd538c1dde58bc8e94d5b8d4c3394e5b03d3b4d7ff0dbd6e64eff6ccbf5748bf65426c2986b288bdacefbd59a1d604a26c3915c43e5d5dd6add0cabaafde965114c235c02597fe08f742b897043d46fa73fb6c11e5ae101d2477703f03f57fb65b02fce27465076c66bb987bbaeba7976aab186e3665f0829cd4f84756021150325dc9adee12136586f37c01d150ac58bdb1a9f924a018bef9f37fcf314651da38e082eec7c18f6ff87eb1db146aea661c293102f7c92334f09ce581934bdd599ba5063adb38f9b427867885b55e24a25ab80ea4130ebeadc8f685c2ad2024ae73824f32ce09b4efd7529c1228c75abac3ddf1b5e57b383061cad57d426a865d8601e58652b9ba878d23ede5166487c84362fef5eeafb3bd658f323d7d7593b9d28bbe19d26d0ce3dfcddae1c6a1bc04918dcbba6f1afa8d47d9b5df447a6d62c0cd2ed8371150342b530bcd4cebda39040a168048690e3d3d8c6661a59640a815887a712c587184a5dbfbd2709afd9ed65d4c11d8baa12d9cae8351a89d4960d97c5cd575c9cf195c696f5d3585b9e0aab21a01642f5a72abb6554ae3ada7edc30c6e5d8964aeda4cb07bf8cdb88787579417300858594957aacaf27853c2823c2b144cd7ad500c7bcd5d37cef553dd97714c7fe7f52a38dd6bbc8f63f6510840395adb35ab79ddf57bf4cdee8a561304d6ecf6758b79512613cd258375037bb19b12968cf5bf3c42c447b8845fe1e2198ed53a49754e342e6b779901fd6265b1e4c4b684439d2234021bf785465e46485ee4a2c08c52bac297d5f41854ee6d1af8e9eebe7e5dff6fab9a33b71349e07753bab148e02e13cef8702f98bd3855866b89d307a037422059d02df8d7fbbe8b34bc10b330e76056dddeae34b430c676c0d105c7cbbfe4c03b8419eedfb3af324e2a8b269d60f7dbdde0d6a416c2ccb43f9a08eebe4888ed028bfe0c594821cc6adea3cbb88843a87781f5c975b5fcc7abbf282718c021f0685cdb124739f67b59acc13d2efbdb80c2412208ab9763bd97146bc22c3c3f91adab3abcfe1a4502bd3456a0000a3bc810e1ff13366d727859c38819b1616adc0355012331eb301a73ca47fdff44ca0142e21a8d15edd672b56074b02d9b18e0d829a657cb4c0d92e58511074ee559d21b1722f1b21a4fd51427f6685659e312969732562f2896a95f8b7e4cf0675f7ae0f478903eb1834e7ba5df34b5b43fc9f64df7a910253a8dcddc71171ae7409efaa55880f7b4c90f8a0453009f6e91f76f0d7b6ef78f8cc45d9e5ed7ca1067132d83efa663953c067ca4db8deb4dc5ca261dadfdaba886bcf4866f0e1086b385de99661bbe9adabfa14b8e98ea64c5b3580f6179557ca7a1162f592404f9d24b8a83cb01227772926bf1cd836ea470ab1ce4d5952105ca4b254b8249569b72165c36cf7e1232be88a36957d83af6276d27d8d6391691f6be4cd6fd6e31b0d4927dede11e2dc8beeb284ba6c2e1bbe2a0944f0ff2bd3803b6e3679a33c39c8ab82af38eb1f08141bef601e5a952791a0d56f88b008c7c297343ec1ee72e95b7dd24fd2827642fe5ba460eb4ea595038b865d6e12d311d7b81b401df7efdcd2c3140433e967c8fbb255fed9591adeb977c9de7c2320ece483de61cbe4c5c815fa96f967c01549cb4dc7b2bad64685aaa537c7841e432e88227fd0697c12d857976c9f7f6b61610de408c883a095c37e0fecff2222b065a38a7a5c2922f0825783b5da5780b80e215b5e305b8b634d8d780311067855e0e36f492ef68b54506bcc8e31866cc4ca08a4e39dc0b58f2d56cee9d99b2c43d118140856c2072af5d81fe879362b20889ccfe81ce78c9173fcb2592c6c80c719d4c03160f240f4ca392840db0fe28c57c629dab28e3312fc2f644351d9cb7bce4fba35be2fd86e8530040b18fad71053c678ae6408f63239af60872a0ace32ffe677188000bed6f0c972ea00c30ebd536a0af9617a37699b2fb6fe70321db51fd8c3607e8a36f9f07e8bb3b1d52422f5a276f574a099d2d2cca5cd499bbf3e69eb15d4e76547a962541998b72bb27805afccfc78258386721515651292e0a9d244350f8034a2ea7af151db41a31efd71e0868d09cafa26944fb4382709ce45ce9ccc8020724a14898252978a186f70fbe4fefe7eb3eb2846911e8fba7a9f13850c0b654bc0cae468a1e30f4d55eaacdfd7e176f49e234cafc08d61879df83a55e9f803fcfdbd1fb7c5c21c4cce20642ba34be1e0258b16119046b96ee25ed0b622786f4c35b54adf412369adc6376f461e18d1f74ee0365519418483b88e9e1ac83da96ecb6e29cfdc38e063f195759af106b936a8dee452718345f337fa41cb986558202cdde7bca227824f499408c4fcbca51e774097e2a436a16eddf66014d1e5c0b1ea6a32570ba1b3aca504f3a4898f93b8af9bf546c1031cbd5c56deb6c771f1897a7f2ad06565a7d7fea19c065516ba37848c9019a404b747c429c1cad86d091fe40d41ddcd40ebaea2ae1f2a3f6ca6b6aec0155add1020561d173a3f8bb7e98b80f270917be452f626dfa1048bc072d1f3bde22176030c5e22817194e80e1ea9102d93afad305963612737b3397819b5422a78f629f53f1034f39283815ff50cf78bdf3e2579069ce0ad35d9a577f08c056593b15177fb008abc8c71327e48eaf1281177a10f9b18acbf9a453abae6ea5b70cfbf28687255aac9a7277f0c6cf552386fe8ac1db924d61cf72929c4227eba225b405abf9b110b91b8b61de2459cc7a857ac93a1c0f8ec5a14a812aaec5e5ecca2e4b3318776f9e74da5a565b4235106f15293c1638667f66ce33ccfae40e484e18fef1224f541dbd0c7925e9ad1843bc91986f3749fb4412c5e20534705516f005251973d24121c32bf22b39b866ca826a0a4f24176a7606b3c2a4d8171a23fb599ee2b679e6df26f8ed84ff4ce04f04cecfa1087f8bc0b711fa13813f13989f8b268e1302f7b357b1ffb0fdaa714046c4e8973a46a7b624a71b47518082cfde89747cccb19d99fc89809f23f42d02d167cbd73ea4ac7ec49ae12a92daaaa5f43ee2af8fa887a2d842403feefc27b651360b149cb334f3140fb02a90416566ff9bfe787ed534690d43345717326a18188341f1d5d1a826642b38ff5d2e280efbe83d925884567dc2ff02fb33cf81988beab3ca96ba9f917a5855d907486bef852a236eb9c6a9200e586058b272c521d87e5991f624fff90c94aa10826af46a3a9ff61cffbf6c9e93641a0e3b46376d3ed26111975c096148a5b044fa452234928cb4c9f6bce1c6e8b8ee40ee9cb1ca73ec216d9e66dcd85928af7384019cc2ddda55271427736ca2c5194606f9732a061a3ee9d89db371915e7caea42997d1c6707026d96ea54317d87846c9a77048c2d7535718eb16cc7a7cd07c99b2fb4d0980e948c9cc7d4bf5e1b4c95c855e9424a69a04cb74ce43edd012e8341a65f5215ec1852e31e495ad549db47810c1081d46827b054af9e62c48618c07707b61a97a3631441355ca033ad6317ef39509b8f7a30f6c4143da1902be9fee8224f464d0d4930251e3562908e1634ad59169fa9ce3d9d91cd87b17d6a0552fda76aafe20c7ca68c86bf38d8d54b0f94b0d3ef8c66725a854d5ccd9811f6dfefdc157d34a82a94b6897d12080e05c45bb327396d40c0525e5eafbbba80fda053e8a6ecb567f3085cd78a92e6a941604e6cf60f7f308cfd703564ec0622e001599fdf5e22c2c9942861395d9d6a992c16fc60f187e2f7b0e794e1127e46a832f625700758fa99c5775d6524f6164e1a9b1ce60b8f990e4100f34295c8c5931b9971571aab6c204644de027bcb1b33c1d9c87dadc277d0b2152d1a2282c0bc11f5649ad8e8d93e5e57db757d51845664ca3f2fe2291cfa51ddcb9cff1e13a9757ae829a971fdfd2f79e6292c997b7e52248e0d2e7fb58870288656aaae1ac30ce3e222b7c9dba47a04b88f3bd071be401f43c51485d217000b07cdee35817e9e879471f3372349f088c4a41a116e97cc5cc708502977def1f30424bd506356a503745391a245bffdc9767a3aa4ec52f19e5c502c83a7b35e65d2a70a44f9d52c93fd3f4e805d657a2d71346805fb3d4f722c5f8314de1f24e5b841dffe63eaa47b314020ddde6e74fe29404701f75c2241a8920a57ccc130244c48019565733697b34cefa5822c86b527c38fdecbc72fb08dd03415e83a9ff6d1ce82c1f12ec1e523b41f778d7eb1791e6b1e34802be6a0545598431c171cea7984f81ab61075a7c25dcd913bcff27770a62af3eb853201541601bf64ad1d5f7df19fb68ddeba27ae1ffa2e51249a718d22766741ea812560ae299e94192f71cd268638f602072786667db384b5c4fd01150d081f1c947123932e06559f02c06a4784decee5ced8273ce7c1b8a46a3bcbcc6909c0c90d702dc2a369f6092b54dae20d55a6bff02688045f597ba14cd58e6447faaf1ab6f89d55b9fdceff39243afe1588236751882b7d97968211895b554b1facf95b07f778352f77c8c48f70fec4ecf06cea485a724faf7f7edeb8de47f4d6dc29308527ec541c9cf6768c11e57ebf0182b541746af85b70ad3fa55ba8a3bc74ab7b8353be8480cc4d660675403f4c190653c60fc7203ca036f9e562096aa5107cf01bc3ef1934e3d3334bc8fe4b31c42f209d60dbb6e1b3d82b6461bfcbc93135bdbd79b240f4d982ae18ff303c71ecba82c30b48bbe3fcba57f6d1601ffbea59f72918236d28bc8964df6de5b4a99920c8109d90999094d069629103f770b8ea000cb7e21210196b9c748e20ac0e70641105900f0b9c320c2058c850306d0c8428755cc0a03b4949e52f3849a9f19963003136e683772d8e0860d44f81ebc4f4c0e62d438c54e3400d23440ce086dc21b120d4988e9647ae1c7cd2eb8a45d14d25003cb660367596b379a483398b4e0c886a48710f1750dec9fa4872c0980983d0800886d4c4ed6b61817c4dbc95a96b5ba6ddc56378e080e3a18c0060fd3020b3f6a66b8b1c1061f2bf430f1f81ea224868bc1fe272040b68e7ba125d28e6deee00d00788a4ca214a9cfc4b91c0577b5e27ac31ea28464faf183b617b209e932b767e236db46b98e764cdc86869ec824e2f386442426963d4409ed21442c691a4fa269fc959033fe4abaab10d152607fa722e1682f6e13b2a7a802f65fd243a4a084c46122891ef2a469bcc85d0515b0a4cd67d23d93ee16001aa6092b9865cc3254305320861862bcca28a38c32ca28a38c32e60aa60a6a3597356f5cb7bad51e640e7a90382e3c4c0f2fcc2297d1d7a61f2dd80fdf1f3404fb7b32f2e4cf05a101db70061e99be058913003913d3343360ff39d3b5bfe9846981851f3e56e861e2f15222edd846a2d02504da0fb479b5761bb7553a5dfc8ba9f8e2f770f11467bfdbc4c82e0f3e1993b79eae85ef661dadab753fa7896a75aeb0c7f47ad83c756c9e643e4bc649eb158d25a7704347cd1c2738be0dd31aa10d566898668859fdf054c7c2996ae176777777f76ce14a5537534d1b75a22efc6cc2a799727b029dbc13773a9d96cc94c75c68ab99729a8fd50aab1eab553ee1dcab5ee17c8373c7666ac6624d9ba9e943ccdd0a620e69341eb4175ac93553b4f42431773b260b33365334f643cc9de97b88f94f26319f6a78c46e5ee66aa66a5712734712577887489b29da75a2a6618ff9ca6402634cc05ea3805d8aafb2af4e38fb6ad5beb29f05bd27d6e7c4fa54f4ba9aa9ea9aa8d55cadf01703c5bc5815b42c6a577eb62c5eab6ba66a6ca2fc4d265a5d3117f64a633355e3a8b11aab31ea9aa91a47650275d52850d72685ba2aadd2b073b36e75eb29ed7494de64b2586b9de63635b7e9bf4ef393f436fc247d660318962ce8f19334019310fbcbdd658940bb69d3eebede6f1b751be9a5baa7cd7e7c4cb130e5234d374e4c54929a9b89f2c6e228cfbbcdaadd729bad5b2499ea3ced9051289544ccb7dd6e35cb4fdeacc642658b4bfdd075d2a4ebc0e13fe9f08e6fd74cf5ebbabcbd1583eff2a2a72e6f9fbabc2894d8e56ae95e745bd66b38ca7f749d3c0971d7200d49e3bfe332d1e1506c1bb440f66ba6fc3d8a45b76dd0b250ec98e8adcbd317591058c465b6fdbc2f06fc8f4ed082ec0feb72ebdbeb7874b5ac3ad514983aeaa8a30aa3aafb700a4cedadcbd37f2b12b95c102c2212e9b043154922d8a4b1964ef43a4219aa600f2e6fffb3d7e5250e3f041609c59bd02574795007895d3e04eee022da908b4b75915e28f4f66e18a41f022ddd2a0689b9dbc0de5858ddf2c49b907a74d219c3c5706138f1f393a4d5e89a0d9f76a3676835606cc4dc90c5a0f0ed74946d8a64403d0492266992e674381d4e87198d939066985133eda49ff732c64fee791e13dcdf751d7d42bbdb3c536b59bd2af4f9c3cf312720351df8ddc936c8c3c42e9d4bf7a297dcbb84d7c5fe37adfdc959eee5a47db5849eb3df81dffd8364833d700ffe077a6091ef9b12dc8113ad485b4e0f811283453ed16d3ee6e436a0532ae481ef89f9093dbd0742d0e78ff1dee53b0f74013f74a98442e216ef3febfdd7814540d03f70074f2489b4b31fb803c51ee7ddff9813e8db4020f109c59ec804c5d44f1d27525c4193294603767e20903229732983810b6a98064b18b4608667108316a6c17206685ce1292a5b9e4c3cfb6593ae62a6c0ecef9abb5ce57eeb70632626a6e256c11d5ab4dd9ce29331157b12246deccb04a1c1062c9b86d6b0e3f3902e86d1e7192c0ca2cf33610c960120350d4cc804fee88f09804b24501bbaa6c108d87f0795b6c326b5a9c70f915503fb87210db0bf0be90cec3638b697469ee411b03fc706f6f7a40eb03f48d6e0061becffa700489c201f4303f6efc7fe33076906764fccf4f3893ef727ee6953c1f344a21ef984f3299fb0e7530a255154e8ad4e2c637cd4201c7c32c613f5b852a6d12e670a2551fe42ba1aa419d8ffe4137f4e69a5f3522ca352b670ff7d0e3d4ef5b9fda6fd44295133a41e9d3dbf6a3f24741cc751e5511f39f6bf4f62c5ef93c889f2f73e4402249e4cdcbda4e128aa282affaf49d7812f15efc34be57b3951a01008c226f2073f99b886340a9e2a2f9b709d77bb15e4418603d08937eb555abd5ae79c140c7522138e6b7de7685de3fb5cbadde7a4b4d6ad3b9c935443c843633b3d10860e4552a794883b0d411e1a8b46a31d3b9c542a629a6e6a9367c508c1304030660ae64b0c2763eb51bd1da01ddf8e1d3b765870c78e1da11da20fbca6a8709c4f2a124521947e9a95d6596bdd9aab9decbaceeb68adf487ca68f549eb963dbb8f8fb3e13353e0e71a5aed4749cc83b766a24e271b6e6eaa8fcf47a7acc91f2513e5b23d349f88ff28429bf3f1b174ce59ddea46f230c4124e3a420dfaf8483014c6541bee33909a1546292213e56d3ba56476a29cc194cc94b32151fe71d430137cbcceeb66d8dbf0719fba7d0eca3e19d36400966eb54ed4930af33a0edfdcd41bec3cd45a311599a898fa89ca191d9f8cc9b47dd22ab9ce0c8946aea146c834f508db7d4eea3535ee69b81ace4607f2405f27fb384f3451580ac1b2867cb13c923de9b3895934c3d96358d2ecd643bacf2295db0ecdb68363ca715c75dfa1a1be1d60621edc038b488943a7b5d6de98233ede8cb6d1c6f5b7ba858ecc427d63a29b54cd44391d74861e0b7b98b89b22d98e67cd4c791a12e5af061bd8dd0deca1c7402085f180c2cc2286678618627c9e194e8693315b647c33ecdf6e3b39c2f64947d76a2008e61c387774e46ab538b8da9c5151e394b6dc40d81ff6171fe3455cfc1c84f2f3d75ce09385b3e70f0787a35ae4665842eba7fe2e8c90e6a011d008336e36513d9333fd5e8450f67f322c5df028cc973139c483fbbf29ebd9dc8a03c3e9bb54c970bf836213d5efb2507e06c570bb2879c034c4c3b917e19331b96bd64ad92d5bca292ffd695f3e47ebd3baf1a748cf30e7ab7905153fcd31ea565b8a44f957d16581bdaf8c0e8516c12763f293fce44fb2c5957edf242ced29e6281e68f39efbcfbba65004616312ed9e3ee81341bf5d2adb53f1aa4ddc52415d0702b9c41593dc46098beb73dfd1ee6d523f55aa8612a6244c6e7299559e66cf2ae9bb80de677c666033b0fc5c2b0c23517d8ad56b75daeeee3f3771faac35f8be7cffbe77201d61ee401d57d15612c2dc610efb7b98939038158b1fff238d19b00077df3d28eb11b2763651be759e34024c9f2a738dd99da78bc8e7d93380cff33561b8f38c75f69affd4d09d274f677fcdd01e93d57cee1f9aef6e6fe586754ca6db67d62b173a37eb7ee7eee9babbbb7b522a5b5c9e7eee7cfc369b29501171abcd148886c35623c056c3fedcca6db82ce4c9df9fab22fdbf71a6b82e341111b3e90720e61780984f37885c678398bb70889843d3d720e63fdd88f99412734db7b2ae99ea6013e5dfd988b90b691073689a41cca69741cc7f8a41cc2721625723e62ea41173680a2266d3cf88f94f40c47c8241fc9928f76a4e28319ffe24e63799c20088390480d8c588b90b5d107368ba22e88930a2479bac9902b53c5acdbfc914865ed785a1e9ff74ca74854115a806f207cde1364e404888430ef9de1fe43353d645933813e44302d1785cd0cfbbe10df4fd1ec8036df523821b3f749c03f7936a2fa08f086ebc4c0cba52ce6c2f5762c71e1cb8ff23821bb8bb8527d540a29616448e0b6dff723771d69674a50a449b2950cd1fbc54bc6a8bcb6f601191048bb83c111735a61c6ba6be71648dac9135b246d6c8c2fe9c6ca6bed78b93bd38d98b93bd38d98b93bd38d96aa6bedaeaabadbedaeaabadbedaeaabc166caba3a98757530ebea60d6d5c1acab835957f7335376e6f5745d189a4cffa7d30ff61ed0eb01bd1ed0eb01bd1ed0a3cd9404b56a6a4ea77f93290c3d5ad785a1c9f47f3a815a2908c76eb2f2f7c2de2f0ebb0bf7fb57db700df767ebc23e5db546ed8cbe443783ac89a5bfcb75dce07729087398270be3be39e45c442e0cadf04466e8fe78f0862cdccc59a12bbc828f1fa2127485579860111fe24db80211f7713b1c5eba82a8857ed31ea0686f9e3fd8f6f792753e73c6aa850fb2262a74b1f8b9ff42f7c39608128789d0ba218784beff7bcd94754d547fbf9d499cd2f7e84d3bfe85c777bf70b7b8e3f2f8d2ddb089c7f78ffee5bf9b90c788870e12f3104bb79a466b58575b57e952cce3b631672f3b7c4a779a46a2f493c9f1cb1a3b986a946e63d39598c7cb0e510b497c31dd1751ca99d295387441f8fb2d6da648df2295e1f630d89a292a5b4a2f7a797f108bdbf0f81def0f7a117a7ff08a1c12fac99a289738a3bf2f3fba1bde110a41f8f2fd3c5e788837e10b8f9726bd88a35b77f0204d8a5f2efd59e2214a3fd1d1752cba12f3b84e9e843b68b268c795f88524ba4d76465c12b590c46fe342229128e5cce8ca9017e26687415608b6fc43a050c7b14277c37e025933e561f88119087387b70a7e56745d3e74295ea13ffcafeb3a1b0a89bf7d83462c78bbb7a0c9c235f807574e89f993add3772aeecc1fd59609caec74146fa7a3b8ec7414e76e2841376162c081252c0c2b332c616250c1fe23711ac7e45ac35e05dc2f41effd11cffbef3f310ad07b9ff7d6b68f27ca405deb9f9ee1feaf6920b16313c5e32b574fbf5a23eeef8a3869f2c3f7a03f027a09fee0e307d0dbb76214df83441ffea08fa2922a1f47ec832f55126c72041463b85f47aaac0822f9dec79119ee87124545c3fd3b2a0922f1e1e21119ee07f960092681f2f90bf777627b6213f14c5f35d65d1f3f78df7df7c2fd9ef79e8f27eb15cef455579567c4955557b299ea1ef499fad04ef4f143f7a0078951501aee972aa9fada76458ecca80c37941dfac69651c2a1f2442976e81b5b4695f714e653659ef7b5f543f7de4ba7554f6113d5bf428b331c0dd0c0051bfbd5af900c7440039eb19ff6b88d846107501042cfa8da5e36e5c1ddddef3f3335927501c7a8ea9fe35cf5d3573ff7b3fdcc9e176cc666b42c6b38bbfcc1d97ff2fca1631533f5a1e214338db99829ac6e5138b7717c3226773c58e2cc9f50a6b840d9f2432be10434185552bc8f1f86dc808c175071478aa73fe40664bca08e9d71b681042ba36a13894c1a84b656cfcb9c0c875d3776a373328923c2fddc1a92f391dccc6d1af77334b7f1fe15be18eed389bab4b0ac21fc40b55610e7a33e141a1fc060ac21ecf71b84d7240b3375b128cbb13875fdc0dd5900fbcb54374a943fa95f04d8bf9b5205fb4dc8c9f0f65ae8eb305154ecc671d24f7ef4ebc6dc8ddd58415ef53c90573d0eccf1543a445135e88937d415ab21ecffea67eaca41986f5cb5de4c1c84ddf7943b7c83f0241d7433156d10822ae892baaeebb8965db7f51b322e6a318e67cb4bd559742165547507e458c24af581c260828f4a0e8135464cf5d92c5bb8543978029699ea0badf1043a62271709ca01117830e3ac0f2da682d86ba3dd1923a875459a8ac04f5e2fe8e68e09e8e90da9e00c960a0afd9d89050d1fd516eea3a8be4f82dff7f5febb3df47b62ee4b64f645c2fb5bf3515444665f249a741d7548dc430d9e4d266682e2296626f8494b10e47d8773de80bebe77ff3fd0a53d4e670d42ee3375712f02b799221314bb680f0716e9c42714771ddec01c384e94930712dc18bd191498410b3fd0952654a1a976040053919c06ef157cf123a322149f82e5062cd58e8d4f8db5373eb690a3a5dae1f152d18fa28262b3030eccd15241d9d9809083964a3a0d3b5e1cb419a68768cb8d085508c347356f6f58b454437030ca6aec252267fc250e7854548ca29a6984f926d4927234190281425fc552cea886dc800c98ca0712fadb6f22941ba8c054548ca29250241434508451b5b361d132d10ba5ab3801083015941d520a582ae934ec7445184fa41f251bd4400630f922e4023980f930e26bf0c0ca8fca35708616349554a501041a7e325bdee00431a8a9da8a12a88047257180c6d8523516b30cf0a8be1f3594a3e0e00226a8f580e23d2b70c20746d50ec8072cd5161f3c483870bf8403b7f8491f2de7bc12efb8c8a04cd91c234d11582a2a6ef1b1437ffd2850464668a9a0ecd0f80006a38afe8e8801968a8a3b3555c218a5128c200499ea8321428330df6087e202951ed50e475349a7e16341942cd4d0000a2fd5fc3a04dad02741214f4a97ee87770b21698316b8c04735afe38e27868dc6927e8ef3f93bc96162da34fd39f890b2bbb368fcb9f883f23f17239ebbec40f14765d31992537a37179f3f38e735e24d30871f98ee40f15765d7893fe9d2bb6b28ef602a677e90fc347194d9fdf37d3584d28aa49f6c4bb15b094f0c0a359e4a86101c9000043b68430822f0400eacf0c0ca0f76bc60c6ca142b5cb8b020c816af2d66b0d18d67dbb66d0cbd6e68c20cb618bd1304b9a28c1e54594d51071d38d0c2042dd8e8c6b36ddb36d2314460051598d0c61816c880ca6f50c70cb498c299a0471668cc208b1ac0740005fc6109d3c11c9f103e13c751aeb35d487be0607f900c305d00669c260f1985a61789d3829cf901c402e04d26ca82aedf08fcdc8385d0e798cf30849f63a8e10689c68ecfb206a4cf52072f9f251ba5cf32082b7c9670f0f82c9160fa2c9b10851e9f2515603e37951f9fbb0a0b9f5b8bffdc575af8dc5fb8f0b9c5e810dccf01aa8f5ad2adf8ab967429fe369be44e81a923c9fb19a43bb1c3dc26cf31703fe936769874711896a210c8d49cf265916babb2f34021fba42bf11c676a8e2151fd3305d905e739f2c8997e9d3bb3985a348d1596ab87e58dd65a6bade5388ee338aed65a6bada552a9542a95482412894422bdbcbcbcbcbcbc7ced85255d27140b16ecdf5f803990feeb2f36b001972706072ce9666f05e6d0d8a3223b0bed2c9d657a7796cee28592fc385349c4ae1b3d49f4c691378ebc71f49d9de9e87cd6b1331d3bd3b1331d9d9ff9dbfab2f6730dccb910c68530eeb91046ab95566995566995565b5d57a2ad126d9568ab445b331269469a9166a4196936f32e34bdfc1c5f7e8e2f9f6b463a96933325296748ff7273f7227672a6bff67357e766f7c993677ed20b75dd0fcc67ba66cf7ccdd67ccd9ee9ea5e73357926ab54299dacc9335793e534aff94f2d954a62f699ff78cd6955e47e3ce632f7a9b5567777cedd3dcff3dcdd5b2f5f398fb37c7496f3f88a63d16a3fb39f1a6df61393f9c07c64b1cda75dddd32f5be2b6574fbbb657af9aa759f64b9c8e15738fcd6a1e4eccbdc2fd493616adf6634bdceb5c913fb52a49eacf4c25c9f595eb8bd49574beafdc66dd9ba4facc544b49f2637dd9d295d791f25d8f27dca337a2063749cc3ffac63212f38d8e984d574c2531874d2289b9ab5d124122843adf9f7373639dff409fd32a6f7c23cc212ce7fd4333248e03de3f84410f51c0fb8768b88d0fef1ffacc14952d4200f1fee16ca6a84ce93a545b1af05474aa1f686e9380396a6e83e4fdc3d84c05b10006ec2489028e33d553803070161a43ad102c3473195d5a33e5c4fbbbc066ea89f77799cd1414ef1f8ed9944fb926df18f159c6b29465e993252dcb5a963fb9574b3e374fb372bb72f7e47ee58ee596e5f6c94deb5aee9fecabec3cd959d95dd97ba07cf657149f3d965d96dd273b2d7b2dfb4f9eab3c79f264e5e9aac0e7d9f382e2764fdcce89cbfd6ce0723edc8b636d9b8f1577abe26e2c2a6efd9982caadb15b776e5781fea2b7682d3a8be6690cf4aa2dd053a280a2c24484c42043111c0820812490c8472ce90b34165748216534024b5f695657b94972be73a8751f708246364b41238d43383e3087c661ceb5ffc94e76db170a7dc7d3b1b67cee44f0390cc16713083e3f267de0f309935c9f6b3029fca15a3e77987aa00333bc9c29269e86b779eec5f96c3f1c2b8ccf211e89f1b9c3a311189f3b2c922106212f89bcc42f553534417eeb59f2fedbabfad49f2cdbd6fa1ce2e600f780979733a5c4cfbc9c29093c10185e409d5e1ae0e5015e22e09d8c90765d681f5b9a15f550459efc8f7c089338256f9ca8de22e62e148198435308c46c7a1088f94f1f10f36914c39f999ab1d622fe6051e7013177dd0131872d86983b0c3187b5d56088b913b94459c4dc1d9928ffb0d51c1073b77a80d8ca11975c4e55ba5aa04491012b507c0e9f70e263627ec9dd54a5ab2549c33ae6820bef2fe2d9a209269e27e4799825b7b29ed2fc4555fc4dce13faaaf3f11f03e0975c3a858516de5bd0e259f8dc3d99c08b4e5a73c99d16784aab3c33d5573a8b6ff23964f2302f676a89175f54e587c825722db9ae2a5d2d5d658ab48972511509f850e2fd8f34cffbc348996cc96d1596157af8f7aac7e7b0878cabeb8169fdc7d9d2d5d25fbca88a3fa5f98b5633d518f8233e9f282dbff872a69078182fa4c58827e220ccc557e0fd5b365350debf7d662a8af7f771a6ba8b9df7779e998af249dedf6133d5aceff15bcafbbbcf4cb514ef7de5fde76aa67acafb4f9e996a2a3dc57b6be0fd276da69a8af79fb5996a0bbcfffc99a95ebd3f6dcd547bf15dc54cb515ef55de1bcb7b5ff1feb636538dc5fbdb9f99ea0bbcbf37ce9411effdc5fb7b3c33d51b787f8fb5815b635fdc0ac372eb8f17776369e06e3e572ec7625dcea78bcbfd7071bb57066ef763e5763e5bdc8ea5c5e55e59dced87e76e2f0cdcea73812b270a01df58dcbee2ca8932c07795db565c395105f8aee2ca89dae17b75e544e9f06d812b272a876f2aae9c2823df53dca672e544e1f03de5b614b7a5dc1e6f921be5eedc282e945b810bc57de23a719bb84c5c0adc277702d7c96d7299dc25ae12570237898bc4bd475c3951a72557aa8cb8f535515ebaa41ddee83f6a4b571476ff719f17aa2e9f93733dcc804bf253e91770b714f142dcd203118122fef3e13a8ec0edda16f1391f81ff28582402e24d5844114fc423408bf8a473a16a732e878328bd0f3e8837618e0f3933a7f4df6673ee863fcee6dc8abfce027121a085880fe2763e5c8a1710ae3a1511cf80eba4f44d7646cc80ff88b854923c15af4a226ec9c9f9073c04fee3c02210106fc29c9760919c27e210b88d85b88d1f704bcf813a482c8468f25329e74ebc80bb45491097ca962194fcb7422804a192cff92186106f42252fc1224a9e880fd138e7767e2a2911433f95de075188ab25c93be0b69c297d03eecb99d20771bb892a3d031620029144344d54e9157065d364c7a5cfb9fec3a5b225e77ff82fe79adae6dc701c47fcb9cdb9dd388e483ee713f0df071649807813224900929c7bf253098958e3a7120de594dee6dcc63e94fe939ccdf92239a29433a5d7b9394f64e6dcc6476e9eb807d14923e066e973809ba5cc0037cb180f37cb9f02dc2c6b3bdc2c693adcdcaf1c6eee1e2337b7abc8cdfd83c3cd5d23c0cd4d53ddec2f7cb3f710b9d95d03b8d97d0470b3cb6eb8d96336dc3c59436e9e3c3837cf550d374fd7cdcdb32775f37cd9dcec341a6ef65af61f196ef6550c373b8f909b9d557373c7686e6e59909bdb67e6e65e01b9b961b8b9592fdc7c42d557be91b94e9c8400b84e9c885cb84e7a60f1e6bf0e73d261989b4db885c9c2bc4e4438cf99931e78053b73e2c4c3d91b9d84387be32b7779f264f7c94d13e5faaab90bc17ee01cde7cc2398461f7969ce56ee59aeb0bfbd7d74c495513251809114c942e4471d9b9e190805f1b24f8644c9e30959c29f99a75b4b0367f3cad6435b0d3cd5c9d3a13ddde08db7fde4e75c3a9dc95656d53d566bb6aad5ff455592a19cb2e53f5ddde0873886dbd79aeb04ad54dd66c4dd7ec79c1623e2b1e56eb058bc97c66b4150fabe5eaf9a9d166f3469afe54733359ae1be7e66af2b85c2e97cbe5627263fa53cdcdcc75333795abe7058bc97c582c168bc562b95c2e97cbe562226b3577b9648d5696b7582c168bc562b95c2e97cbe5aab15cf5058bc97c6634168bc562b1583debd9ecb575218f89f5ad93aba647c562b1582c16ab472b3e5d55f373aa3dcd340b7d3a97b94cc65caaa4e94f3537212b610ef1bc52f5c92ee438657c728459c6743080a7b6f76ff716b56cff514aeb568493331ee3287f908e30d760ef8f82fbe90a774e4dcd4c757de90aab0237367553430d360707c70e017390360cb1c1069f6d032d0e39e680a1d168341a8da6330316d1f96c10626b84c410830c32d819689881061a7c360d55c4d36ab55aad56cbc6d260934adddcd81a706ac0c1f1d9385dc8d65a6bada931d49a53ce46b71c991886589c2136d870c30d56000310c00006e0b307d08548b5d2f1ca388e56a61e190011ac525902e040001c7098de3874a1b6d65a4b2d0e458ce49083d561071d76d8617aefc0830c478b438e39288d46a3d168b4d64b8f743812574b321645f249eb367a6badb5d6721cc7711c576badb5d652a9542a954a2412894422916e008b8cbe1e386c898046b04a65390210c0e2409fbb34fc278be050a488cf2ec24dd84c01963fc790a91993ddcc42e2e4bcfca9851c227af9d38ab47961ba266bb67c66b4dacf3857ad56abd56ab5e66c565b33c619b145402346ac901c72b04274d0c1ee20a4003b14a0003ebb005da8398ee3b818de9f8b819b41c413c3f8c29d54a61453ca365e19c73147447f06b1555bac8d86120fb600a0111e6c100318c00639c0012c0282dc9aff640f08e8a1079fdd4317b2350caeb6b8da126d21e21122e2a1a29cad292743f760811cc9b14740233916888e8ef50108121f902099de48babb7beb20db388e23153f4921851baf8ce368595c8d45625109f8c1260034f28345a1eeccf406a20bb5b5d65a6a3720941bbd5ca12101616516c0002b134410b601320e6880031c30bd1dd0852c894422914894b4a1a81555acaeac56ab1ebd709bce4c2b018d0c61616e9e0f7880858100150858224effc9228828a2089f5dc42643a54ccaa4ec08129d1c1d961dd58d83410666ce4c2693e9c70a3d3893c934dd90386ff4905a923989a4212ca926c022018d24c0d61f7eb055014964be5e19fe9340240102089f0d44558075294b320710481660e9c0fe1f03acdf2c7d901c99ab2905cbf728c8546d6743e2fc400ec979f9de86b439d5fc674673f5bc603119add56ab55aad566dd55665805d00688401962688202c4d031a601d402384038410c2670bd1856cadb5d69af7af35350653cd2967a35b8e4c0c228f8887ca50526285008d28b1408618c20279c0032c0480dc20ff4922204004113e9b882e44126d51453c55c4e3c344739dd0fa2293b351fb2233329958558825c2be5044046c11a09108d8178c30c22ee1fe8523961c71c4f43ec25a6bada51608751854d2951a8474841565246c068d206145494840a484049450627a2bd1852c89442291644854661cc7918a1452ea78651cc71ebd7094a533d34cec12a0112616e666ca02ecdfa48985b94ed0c0fe9f133b0198271378f2c4673f91695a82c160dd30681a3374602c180c664795cac0b47ad5ab5ef5156d4557b16a6501430c9956abd56ab55ad20dce0e21e39035225885831239d3a3d168a4a3a3a3a3a3a363adb5d65a8ee3388ee36aadb5d65a2a954aa55269d2ba718dc2ddc405bf7cdf78f582ec4f54bf3d85a3d168341a8d74747474747474acb5d65acb711cc7715cadb5d65a8f4899944999c96432994c5f9392113602a01123962c39220bf94f22919140c267237144e746a291e8243a8996404ba095e825e8124b4cef2596f0422d4b03cb7733644ac4e39b6771305c0c692382790f2d84511a4dc433532693888753c24a0034a2849d5962093bc384896d32e3a48913273edb491722f908620a62aa3912e4450c30b2b4aeb45aad1a31bbd4984c2c21a5095827a09109d8179e3cb12f5080029689172e90ff64134c34d184cf6ea20bb50f93c964f241ca668eccd98463be31dd201db942436ac29e9c78c23a011a79c29ea0a8c0094a05a04099de50ba9025914824124986f4824c6904f3c28de3d8a3171d0e48474125e7e6ca8392020323030383c11c064d63068c0583c1ec48868321c7471f7d9433545c0a97c2f9388e340e2a079dc36d4ab42b57b2b89c78020a283d364fb356ad5a6badb5ae56abd5eaa5573b4c580a804698b05c134d58ce8927c01c1ac33c7769fe93503c0105143e1b8a2e54e29cb0a427dac0fe504051810a58923f1438b0ff07c5926e148ec60eddd999de3b3b5ec861cef22cb07caf42a64c2ad971481cfaf25b8e9e43dae4f8aaf6f382c5643eb310669aa9232613178585021a89c2c2b0b363618812c5f608c39d91d2634b692952ba50731cc77140de9f03c205a9b25a0179c9d9a84c896e301f443c724586a674ba72d2f9d37d810ace07eef111ee4895d50b0c2baec4fd0b0c18f4d22c32ad2bad56ab5f6046dcaab45ab1b8996e2a40236d813656ab9056450807762b441755a5ade82a5da58a8c4ce924339bcd999c81c3e71b2f77bac1cd58b3d9cc72239d2b2f586badb5766645739ce31c75eea432a5e0ee94521a274987abad46abd1b39e31c830819f3a865bf6a2348ee3388ee3c6711cc7716c58c31ad6b0554b018db414b634658a2d51e929465fba3050d15334154d05155da84b54a69853a0820a0b5880ae5694ca6ad2aa98705841db8ab6c28ab6c20bcd59ab215347688f2171605e7e932187c8bcfc3681b4a12d7bc17eba2e0c4da6ffd3a9a657ab9594957a051ae92aacc80a2baca84a15db57702fba282cfa8ac6a2b1c0a20bd952a9542a9ddebf742abd2071c34e214c87cac0bc348ccce885d56ac57a81010bd0c876735d03031b4f6701e6d0395a7416ad456ba14595d2aab45af5190dd379271456a2955ee7529a9c9943e65239602e8de385c6a2d1ec88fb925842bdbc78dee6bdd0166d792e97b6e48c184ec1d0b9344ba9d5c221e1e8f410ce6deaa36e8e6889606755d8999d559105ab691d47cbd1343d879f7c9c285fc1acb5d65a3b8e3efae8a38f3c5540237d856d2caefcd758d8be406300cca1453c8d81e6691e9e2e64fb029486814a8587278b2c78b4b8420b5adb82ce6185b695b662a5ad78214a6b97cc82e5f71599ea557d42e28c5e3e1472c8cbcb87226d609ad563af6a6a27dacf4c3ed8ce66b3d96cb69aa986d9d5aa5b0bd088cccd760a566432d05cc8dced3fd95d3417dd4577e1b3bb8b2e44eaee6e8e76ce94b13ea6f5555ff505732b0baa0a6a0a5e76f4f2fe5e8e08bba223b23e69ddfa8c6e98bf370c3665ac2fd3210c2667d0086130baa1193a309875c3be517a971a3bb3b32a49a68c6ec6388e9ee78d33e56648547b1ab85de68dad2c60384cce8c46a3d16834d2d1d1d1d1d1d119c7711cc7d1610e7398c3b4d8c24e2103f6c70a1719b0a49bc1551720152e2ce9664bc3fecd82c34fcd028dd89b3d2c5a9a654b6faf4c63e92ffa0b9fdd5f7421d2dbfaaa6bd4596da3c22a0bea2bcb9a8c03cb1f42a61a365158e2702f5f2587e8bc7c1ca4cde8ca4cc6e4e8e3486a989d8d856b2c8d65abb4b134162f6467724635ada5d6566b376bb9292fef6fc797b7230ca8931e0814eab72f62bea81a976b6772c67f74adceb56f348d1b72e6bbca4d72bd51e290dedf93227174dedf93a28770efef51719bd2c38819354e54f646d3cb88b94b3265f4288ce3e86738cc6133e5519082fb61eee36cc8991f344d7fc96713e535dc5ffd67341a8d46a351172c2c57585734a0012fbcc0f205ed2ffa8b2ffa8bd6801758bef862031be0408b76ab5bd3bb5bddf242dec8e13c63f9a65132d5575e92745e3ec84a9bfaacae92c4458739e93a4e72a7b874f8734bba1cfea625dd0d27b932a24ba864ccb75549ef149a19010000008317000030140c86234116885992727d14000e62a0645852340d08e5910cc380ce18430c000002000000003252d3006de4f975c53ab994a698dda4a8ebfa137168948145f92f9d582a8423eb2245c3c373b4b33c6f30e821a83e21cca28506989650356c81ec7f8f22ec2a06b9aff0a2cb3b88dc6c9d67dcca81a70835e8d9a158d85ae2b04aa388ef3be6ee14966e3d9e9a9e499d3f9abf6d3e7fb73d67a6de2a185cbef1570da6ee03f9ba73cebfb4007af7e4dbcd59fea20d4224c3c0f7c2964208225aef0f1d69f0ab4a01a945f30bab35108bfebde2e089cf7ac347679c7aa7fe6c32f6589cb0acbf029c377f26ca80bdc5d1106c5ca860ca5a0c2568ab61773bb39bf86c06cec1166a7edff100347571f8cefded91af533bf4309b805afe2db305d75dbe80443019049b39576f482fd99abae7f6b131fcd35b37e94fb8f95c855a40126cf04d5490fd38621a9ec56d361403447ae1ddaa6188b3520dd5ee0cff7f300577d7767f7afb71316fe6e8ecffbe7c6ddc2047cf094e99e73dc55cd643cf4dd7eb1922480eeed99a0ff2c9f9d3dda9a958c128f9cdc024d365b1d523745f3a2036e2d747ca69cca37482fb375d37aabee5dd751950d34087fa24a4d7d46ab4791e17686835dc3cc7c57a1a0d6f1f63627d8d86dbe79848bf564ab9a84932c951896e923acadf54755a3e147d2b24df274abdc5afcb451fbae4cca86f908e471af2a32fcfbb1454a69485ba567b488fc6d867f62b234dcde92bdc2367142ffdf2d643d9010925e83134e8c3e8fef9c623b63362fb86fbce1b3ed99a481a1edc4480cd28b7ef4b61c66bad9732c4b9df15872b86933d6e56b8330bf176bed3fe8fa8d1e109a5b964481d265144a1d1b5b03251899a390a0bca37a5e78b5199e5b5e59b3dd0907aec78be897cae83d16f1cee07db5d001ea36f85937e669f911ebb346316df34f3c29c5c1c030f3ed4583108e9de4c10bb213a8a20bd2d9d35cd621665bec34a26a1cd8860a1b7ab4def770dcc77a7b7bca82375595a21098f7d919778ab836ff21da07317eda3378690c66b42901a078f34df45b39a652f9b6e259f617e71a29f2321c7402ad920e8b69791a09c90aae2e93eb91ba70e13b2adb0d0ca07a49d67def386ccfa7d95a74399f40c4991328262d6bb958b27d6d4c0926e82b0ca9f2e54d2265f79b73ee64fc5135f4ab7463da7785b65f259a4db500a55644d33d13c399a1efe351559fe0466a5dd01a9b55bf47407d697df72c47cd20e45172bad4a376e997dc9eebdc165f4b4a06423aaf7b127ccc9549152159cdafb57e020fa106495e57e03b82180cd24702749f1aa022e9b2f1537872cc7120b5dda74e3adc1818370f0640d0822b99734e4f6cd4d5554db14077292723fe070ab5b40223b14b04e4d47089a6e96141cf9d3d8331c00e2300e02563c0daf5da76451da0dab41a129ca28e4e7ddd414af68d5888f27517883b3e2f24f9cba52ed07bad16e7d518979a8d38774bb2da944027ff7cbea19bf67373e612feb117fa4bb25ea0e928b00c8460f1a8fd83e5ecc8b2873588401c99a4c3ba195f917e4b749bad38fe61459dbe457844541c15ff27a5d4f76d49387f23546cdb7383714e373695fb3be98df66db5201e0e2158db9af6735509239ca3c5f183576deef2823f0e56de8d54b835ee1b0078edaa6ad99112165e2fe631945a3612ef2ef0e9b4daca9785c945ee37964ce196f7f281ac30fa6aad86ee2aeaa7032cc59fee7b8e364c18df44373d6ad62e3c97a7f6190d53290ef27ef7a15ac2b2e8348f58b9bdf7efe38c67d5d4b84bbdb7b36dbbc7d9a5edc8ef3d82492038bfc70e241fbc68d3777ec459218e5774f49a7a781e5d9c2252678020d5a97835a6534ba21c44664f866df73c3431f024fdb66437b819446b46ff686f690c96d722dbcecfe7bf00e4d2be36832bb99fafd5e63143b6e0678d8ffcc957c04601ef869fb5198c93a80a7cad4ec76da4830b330dfdf8709d799af215ccaaa78d9bd6a1448eb307f70d913ac44bbe8139b5eb6fb798c665f174593dfa5b22b6f30a2aa62685e8248e42dd944ee3ac2ca2f9a77705fd6e9668243ff80ce5a30aa0032d1d3e33a30169094897ba254c99471dfcb238592b23507255bc40254622afbcbe6b466526b0d55d928ac37264e0033eb77f5ec212159200176d8b8f3be7bc2f2cb36b6a9ff02407ec0e89c03866031f6021edc3c35878f5fb6bd66b86401dfe25a116c5e5375285cf60179bc463860d3d05937a6990458c8f616ab4ef40a5629944ada6333726338116aabdf16b783814c18f92a7676d78d359b6dc67dc7d5369b0f27b122351e43b0c0518acb022c4dd8a054bb66a0bf48ab8629626a9cfeb9ff346f54d5dc73d628ad8a3d6b9c2f1ddb882961439a98dbb96a7942552ab04cadf7279d838e64acea3e0add0b246c7a1297bb7c99569ca4ff0841071d3a16d4373b027242ecdec2da1e75e59a1bdd179f833382735e795f0c6c7f149b8f3a2c44154b207b10556b8f2c13acdf7696493aaba0391a594ec6622746ee16b33796b8d4eb58e25ce579c46d1a8f309712a2928f0181a646e3fdd7985053a371ff3d26d0acd5b0f71e17686a35eebdc60b35349af105199a3307de2a7006b15e792d2ae50e29aaad8d5c59993edb0a7cbefb5f6e8c2ce7e9a15046d530087190bbfb9bc9584fa05ae6ae8409f964f838680739aa616acf5a3e2271343e4a8e7519491685b069a971b1bfd7e1b9dca8d0dbedf228352ff5f4777b9099977bbadd1e6566e5bd1d76925369a22e4ebb1a3941737c86b1758c10f274ad0019456332ea6dca087397119d6546a0058a93701d942d4687a518f77dd32996dbc3e415de993f48a20581c248357973c8b6b42e3bf0b092ad16644db15783782e8c2a1deecca1bd77527a7f3d726576d6f84d8505260382d07a82081ccb61be997cdb27c446b168d2d42eeaff7ba10317ebfbbe04d6aed7196c75f75e5a6d8b9be1228a0c7492c36887e72b39a65c21ad18ec236c250d3030c03e4dcd638b26c38916eb353d2dc4eedc2ca16a16ec28955b8876c88b8166d1c16631bbae41b026dfa759f92b7ebcfead590e36cb1cea0cbf633bb82bd0cadf28e4264ea2ca7cd1ba2f11ba2811649e3627a9a63c2ab1234245fa89943b3d5a244f5c06b3e9ae4d59cf75bab75a5a9c3597a26ccc775c870e486388bd4318171e2254d85af999ee7c285b27adeaa5fc2c82b8310df6f173aaad5fe049a1c6da2c1c31278267ce30307470293ed916aac45ab5adae8784566eabeb0627612772cde3a4ac7cab43de1ab0b7c2d873f07c41959fbfb126870309a7b854336bc984e3310ff24b0210cfe3f20fd99d1f9b1a420952550bb8edc43c8e0b5c0f27251a23a5d9a06e19f67740bfc353005b86fd8d69b4196f427f97aa0f113cdc8c310cfe78add8aa40742f033557fa3b0c66f244cecb703b4d11bff069a25c75e49198e33efc13c99cc8e67bd2a9b4e25c651fd996815e3c19a74f2ac22e2e57858bf7bdd4a05e8d1c0d96d480bbe1e578466a44b3e1cb189110a85983d8612f5c73e5ba10a7996e8b580930879d00c8fd45b54f53941bd6fc0e2cd9c79b165d905e9f0c459461a6cc1c42508d3d01c2d4516783e01e654761171b0ae7a60395e8c814768326b05f27ba4a4bd6d63982b57243ccc6c885b703c69f442c2a3d9d42f53c32deea29b975a384163baa3d9dd25e7399fa4598c4fa4856504a7133b0b2d131a99da89a3413def3f4dc0cfc78947eced0d3196e04c93581dad4861dac6873506b8e9e554f34f11d5e15488a7c53fd985809a515d8c6e8d7a23461df55f6d32c5dd30c3ab9c87fbea9d8e948c8ea2baac3d15576a3c7f928cda6930acea6f4c143e1c28a1b4b703ccd53f368a7dfbeaa80abc6f55ee838605cd7aea57ae83b99d62c81e102ccbe2dba291e263f6566318ea2fe6a691242b7d01ca860f66c318f0b55dc83c50a0bf2d89602c3523452318e586c9bb6a3ccde6f822cb9e3aba02b8b1b74592cedf3729f3848916cddef72ed2ca492e59793c1a82483adfc6d2fd512af17d0c767b0eeae88b79a79e06ab633a05bb1849c4bab37cc52a426cc612c08dfc8c44ca7f6f32cd6f92f8d4968e9bc99931856764998e524646082950f190a5a366663accc391c7520eb876722341b8613e140160f14c83dc027cf534cfe546eedc9b4bf0db4735ace0eeb50e3878a4a0673d4c18d465949b24a5e3c4245fc13c42168a4f2fcff2a9e167e99a11d661329124ce927c38424b9d34168bb6085208712aac078c2e06e8209ffedf706a62d1b90c52b578f88a446901f06eabe1de2fd64768ed08cc36f5ad6e9eac86f99fc718b3e564c1a8c9cba4e4eaaf56f099efcc307cffefb1311b86800c4d605fcd280237669799154e19b565870019fd9d434361d6f3bcb60f3a25ce8ffa5cd0731c069102ad80916073924b1000c3f6570fa44f8d8521596f69c217d910fb1e979b705bd2a2a8a7883ca46900b56c45160d1a9b30011e71de986d46b27dd6bff91d1c9383b821678bf26f2b596dcd41981756581088dc915b621d69fc9382a2a2585fa3d99defa5d7094b6ec8d15689e9d696a6b4a4f819313d01c3a0e16d8ee1c980d5b53c0034a5b9b74fd89f1c0023361225c84c2879c4f9c2b2918a87bd5cf4b7e120bac57f2eca1a9eca2a5ac6159eecbc4aad12c24c7502efc8fef808b11db87ef31e92cf3886288e28216b09288e5d74ca7bd61276061fbe4f46c683512fa53812551617a5e1e432d201dfaeb74d2afc326fa9a5a015f03514726678210041c14151c0118c103a225d7bfb09ef9df755e2a5300736d2de2974ea3a1aca46875c51b776dc49aa612279355b1debf941d317ff09e676735d3271ad49c602b30bc27c94b785e64b4b96ebd38d5add51bd87f005ea66fe5a0beb3de2e58fd8e22cdf3cd598eeda5b58d981b28d587536b62d1115f079e9ebe3c8c756ba4b1789eed45a8c5490241221d73e4d68c50dc37cdaa0ec019c34d59cda24813ee711bc35bf5670865e380a8b6b9ea57a0803e5c3c65c2d8e64b018b67eab9828fe276fde0a87c41510ea92029364e5dee8b83495148edcddec46f2e0fdd1656efd4a38036334ca614d7f2ff54b8799f20ede85d419b126875ac859c2f3fdfe6a2dd0636dfd1ae4c02253b844d79e392bf7d3b4cea4c3f872d23b01d340de5669c4de8d09d8f4e2b891e5a684b82ee0097041d1c90041db81909fa5a4485761d4462b8b9d0170d22a2f0c6bc35cee4626dea749c3784fa717304bdd121f2d855a3490f4f7e47a4fdab403f56757060f2bc4f07f59992726e83163c92af0d77e82223433801155a6c4e3968ee4be8ab26a9afe711d4045f709b97438471e840ad9075af2f6bc8382fda8012219b274f0af72df294b6d0d68fd7b5cc9cc9f3a4cea43539f92c39a7e8066b7de8f3d4a0529bc9c6254daca9f5aba85b20fdd403867b17c1afca8601e6ab32c76d749d8d66b383761258f3700255f12b78d44ac4337ff5ad378ad3d2e1daaba3d8c7309b6aeb526823a3cd753eb0f08aed5d178b79f5325804ebb838238c6b457f7cfa7c29512040eb707002c099f6a3b92e135fa80bf8829df7fbccd0fb326de93d9c957ae7e8d87a8f9e995b91a22a418dbb58c3d134a5293091dee9e116fe12be7b4e3534508bd783c7c19706ae0a793a89d2c74100353746c013da47c33113dc6a0ba44e385d7d34f9fbcf15f3060c9bc89ff6e7e07bc704e379d134b2085a6762433e793964a2a16edbd68d1674a5ea3698b3711fd3d36fb1d3e81c0031943e7b05978d6967262e7eac3e8eaea91d0c7792f07d74282d31d7e5d30e409947d41aea07a72b679e74130c52f6d7973ed24870a231c38edd128f0c814da4783e4ef3ec0acc5073b035ff5e8abc819e64e8c9659f41935a42084aea7f8e1025e326a148be9230aece5d1ea94c99c0776938c2cf42415c2185672f240f927a676d1657ffffa1d86074e00cb7241b0c5c567f1927d98f0003de69205d40ec3d8c794882254c41d3f94af12293d1012791c6cc0a8ec0521f5a81e43ec8c9e5e7f1f12e3528f4f77b82dc34b8e06d8075976f75fcc808ece002951a53c79af312dc754bd6aa6312a5e4ccb9ae4e9bfa38033953dbdb8ffd672dcfa119a7156716a0a0968e91a11cfe02f8cfb18b0ae3d96da8a0055cdebf84e2500a554118716902a5329d81fe55d671508b2a84792f178bd1a627684113e97a5ab0ca7304b300b4bb8449544115618b4034560a3d6760a3f778debeaf8aac01e8e43033a31e20bbd341d281bf2bf94fa5fdf3e906aa2b3700b9a6f0270a097bf0d46a4bc8a74b028ed9062c78d833db49947f0d727b11433822b3655f7e268fb5838c524a32383a53612abcd3bd82a5ef42f20864a91377c6ccd7f208027af0214960388b9616e4439ed11427f721c960e2e8cd75430098660e0ed4c58aaf66b195e21a040236ea52496193b23042a0f4e158bd6a40517e416bfa39fe74718bdc9ba1678c7545e034b28d11b3066e2e5d6a6d4766096d75eae884dd3985f2dceacb8c800aececd0d7d218a8ddcab874fc2285cc70e50337b095ef13e719b1ad149893d02b029123aeee4105d78e83fcf8265ebb1a4ba00b8c1c149fbeaaf9631b04936d33fc87e405aa972b01e979123033a056528e4b2f217a182d79ca9a0e89eb42d590c642cd6f333ff45bdec11c4dce4054603b8cacba41b8b61bff420c678280659960a9707bd3ad0d6caf6e57c729f015edf0e4ed4e631b9f354c2ed0ca79cb15c9865454a7d2cdc70557780a6932cd90363c471da2d9bf1e717b1b8215c7bc5b071f0e4c37c88f886cedf6eb2c6b2bbb8985e71278ede382f500552e82add15c9523e7c9b3b1d8fbc06b2ba33cb27dcc8386ac154fb2aafe719bfac0156a90430c43857962aea4f440233a52f95e8ea9a9183fe4b211041205f5272621b4e0a614c979918bd810cfa5a1a5b50778b8bc7c1e2ff286858e7ea707a969b9abd3d9bbc4a0d8dde9f42e352874ee7678939b173abb576e20a83fc5c76def41d494d4021434f3c43683ba1379d4ec553161f09a8758bc483af1471a8c97e3d12fb72f4d171f4cc46287f61187e83ec5611df4ff80658636824154dd66741ae64ac2836bce30bce2958412ddc25c0f7c06749646d1020ceb196d43c672bf881f43fc8856e253758d8fa91ee98534be27ace121d7aa6d0f863d23d7751f920c1d8101869ed45366d9cfc40d1e9447910c9f5919466ee5bcf8f1404f0a19debcd2f63c4f645f1cc25a8cb713a402167ae9316f2b700217f15bc5f7281eead463c3de5678bdc1c2b110b3432e41ccb7b79c6808f787fc7e4023127c4936e8788303692cdd238ca6b65b2e0d7a2a9e09ee22e7f63d49dcc7d0f62658dcd081608af7698cc17138656bf74af46997a34426268979c85f3acf3e68f9f840e9053f2f63793373134d0d8a5f31571a9d54a226d5bf1d6f593aa92e2c712c186bba0b9b0207b54ba0ae7b654dad60f31c77f8cf6264c87739a80689414bf6f683e644cf888d925d256b4a48843f809d95c721128b4598b98e79f0c21142fdf8a509b3df987b1ba5176747ae70096814d53f567102ad1ce984a1a5e61a66cfded4ef1c319d0b8d3d462d15e268979103589356eddb89dbb5c6ecd211780f8c7875dda9ca1cbd3ef195b9d506074d4d29485d25f1d148ea96a57ec3db749359cfa9328123322ac879978bab3e45320a6bb2559ea40d185b964d6dd8d6a545f811475a8ab0f940992527a8b55c5f90577ee9bc87d1c51b5ece7a9ea3498a2f6f0183740705205d970739fe642e37af0081614b6f31c8eb3122f39a2c393ae667a58c652565993098292699b4a6bacf992eb48c17b0bec35b9b16aafcd9d33f906ecce7fdb8916ac809da8e94368a0363d5df4e62eade6d04c26a2af06c9f77e03134b5576bc9c0fca5936ae6c9698ce6667fc7fc4b4b44af7d8bd5f903b5339f65985f9744e0addd45e090f79388ab021e0dcc31c13c8598620992c9365484fbc22b3d9a8f4a2c0817d764028612ce416b0122388928d159e23a3b5c0b057b5b7349e688218aacb1f6a571d26c4fe04c967832639b98854bada29b4725a11ba69540d93254b8b62e9f55c7b9c33e6d9c2a10d8a6349490ab2bb71b54ccb759955fe11449cc9b9a7565840973a9eec0fc9116d63b8f692ff5aab8806d751e3c1ed24fbd465e273a640f9cf27e935130f6f84f90a98453c11a4878ba0d4151a8d2c063874642dc02a14a065871d1764027484a0c061ec4a20576d90305a1dcf7ea455cfb3b5f08ebf881c66fe0bd370ceb8630f807e8e0c1b170b04c136c5b2654c66113b11a3ac10bdb5d61060a41a57fb4fa7bd78ff11480cc04971501a0f6971e5f5a77ecec3e991db07806c3c182c02ff5902b606ec17ce3ae3098013dfd8229ce81f25c58a7c3852604d0a35da7523044cdea29da45c10bd3b983298b94f64e752139bd243f0b1a2a17cb0f0589022abe325e679b325cb48828eea3140a8002c0f80e999122a5ed92d6a1bd31e231ad8cac634f208a380ec57dc6bb0c79563ecaf969357ec0c2c10558d5bf21f65fe77f9893a354d775b49a88d1a53540b193420b633543b371c23d6c3ab2e1b21c218ce21e26a401fb8059fee6fcfb032fc99f99b133019acad858f51c15e6f534e64bd704d3e1eed38d22efcf1818771767271269f1c2b14d1ef4beb117a122469df493892827d46b62c72549edbe7d5ffd3912c4a7fb27a3d85f836330c58bedd5efcc6d4864f511d2a47447f650ec4ac4ee8c494d8601217c09932690c8ba1d767ff966a10a954628d008518cf0d9097fadb33752e7ea7864db860fc6b43ca04e1541a1c630a93f58ca63934b2e9c800716c954e818ae38297abd23a262626bf89b0f3c92981c2c5308a379c0304ae1d9f568cd31bfc64cdc2099ee156190ba8318f45c2f5f87cd66191da03f5caab5156afb4d6802b33c741a30924af24017b7324b1c96a7a63c8a47d4a360a62053ef9792e136b42aaa0a79f03c6bb3c202e26ac4355d08304e20d51668131f83caedfa413351556eaa112ae457e2afcb6f7a92ba68da8b08149b30ff8b04f410c7b4262a0f03936ee0e23b433994955f8f1ac030d13fab6fce01f29708deb63590beb7ea48b4c66380e9d4c8b968338225cc7827d5c4811660c6c74e622836c92893f25d826433ee3c5beb8ed2fe736d91283f111ebd55c18676b382d350fe7053ed41800bf2c1f518cf75562aa13a52dcf37e3aeff84caa83b7a5195a4fbe21d48cca9a12488673a84ae87e7691b13fc0a555ab670d931ad2ee566ce32ca4b8bf5f1177dd086507c13d8a5ba0bd2fbf09caeb1e14f80d48db4c58958a46575c586d4c6d2a0abbecaa885d24729b47cb5c177e595b5de2147c98e3180bc9a19d1e384ea5958b68fe07f8b0eb9b793e7d95498836a5cccb623909c23cfcc0388c409df302febe4420c848d5e3afb4d0cba7f8152ac265adbddf90f3a84ee52a3368f4ef30ca0395de5c9ef58dc1ca33a9274d51fd9bba1241a1dcd4cecd29545f1b0adb228a82673b6bfe5158a46be76693ea029542724b515e4cc187a7c6f0a79c3354616b549d512aec6f2a6a6215d8b86a4cbfca5dc62aaa66d591b017f4605690d8581d1bd5d0ff17aeb1d982757c2c919f3a13fe811201a20c17b9e9de0d625325b7e0fecb2a3e1e383168030a92e8e98e70ad67e2cc08d55f20e74e03106a1ad15b68f3b42c3bffbcf966941b2144bc3fe2879d27ae69e712e8e622ffa248428410080a3a2e5f3707479a17fc8d4fa9aac1537f1e77c49ebb31e88878251b6773d697150f4523b57dd9cfb117298ff8fb5f4bcf1fb29242b0174b5fec8cc9e0787344a21e9d331030bd63dd548f4c5ca9faec2716748ed328bebb065090aafac043918117cc198e87d3400a4f0201891e51d904c4abe0152ed58c457b42f15dd190d4efe3a7ba6169dee5a5fe48a95ef7baaef109bfe45bcd0169bfd76dfcebf1ebc6a4f51aff150d11a5fb9f1314d0007b861d707ecf1e3a23b97528d06577a0b38dc7fffd9f98d9b2c37ffe855a9262f5890e207378f33e14e3236a8748fbf147311600f43f7e32cc846124db82fdda002765dea7622e541866bb25bf13fe4131c1f16509da6fa8c5e4c32601f47ede13da73dd18a0319e17b210cf6edc756563a221a8e5e1e813bb8a989dff75a399f0c8e728169a4e4242d27112927cf405cb2cafb603e162259a13391efbcb2addfae7bc12d0eab2dee377955d5fbb9c54ce4a686a12aac530bfabd0fc3288782bdbbfa6bbc8f74e95371ed607d8bb120898afeffa00da321dec1778f9968a3318bd8fa482e71580f378221cc2adf0a79c117b8e10e8aa86f5418b81da3f3ea2215f7fdd548451fa59e6cfd6413e6298131069194221b9088050086df4463084f52a8836aff3d17d13eb61a650b9a2c53ca3bfe7bc50d9e8cac9ad0e2e7822f746f2ad34d12508ac372abbdcd1cc5543dd4a000938d39f5b78487970e0b42c2efd089d13bc593ca2be85f40e90290adb968537ccc4428b27b5196aa4d91a66eb8a719b03c42360760c6db50c76afc3fc6dfc9bed2a73064916c39235f099605f9589805a9d197ddd3633201f4467340e4dd467f4b2c36218e3d0d16453c228be2e1918334a3c16c88e41b0fdcde9e46f34522c1a1ec1de3f82f4afb926bdee57a1e2af08c190808244cc921b467a15802db45ec1cb83c71e655671ec0fae3e6f0375e96aa5d860c589354e764874323e5c9b564d1ab549e0d73a81cfdb8843999baf071a5e1bbceb887d5865385e01ee3d4fa0ff3c7827bdd1c0b9a100a830005747d707a1535ebbff14e5e56d44370716cb708b61f01dce980a971209206861208cc944860e7d385f5cb6ed53f6488cfefc72b9ad4fb2c3218b0084b5afac6bd3d58839b6a574ab91201164804ed88196b00421c9f41f84fbb3b93fca245621676fcda1d3237b214eb2215c3df47bfa605f12be0573585e1525d6ca257b88a32a406f1ab569d4267b6fb8f87ce357ad04c4d88360eb236b7d9a3a89e71776e4850944cc6fcb461a7c8ec555c9f95bddf435a7ad910a84248d5aa82062c439b077e3ed77c1e88fb07730d3c3de65310dd73b1e6ac96f5347fe565e600d01eb123c05c27d03ee412735581ac86192106432bca445c242f8905d77fa9a2c46c404b3bf0621da84956c58b3801c48c2ae11704c4df6a4a3c8df4b8e192d493402214134d97a4e72ab087ddf57187dfa3ad3d7719a39a5f1f14cdfb2680401b2c21bc8c0e2a72b015cccff22e1628b3b7bdc5f99793fffeb440effd775c400b07b780ac7b7312680dd45a4dafbc0ed3a0df64623a75d1c7d3ac668d8ec97250805a1208c84090cfb85f0fa2f33a1b89c4e7c81e94fbbbd5a008215e8e4a01a0418782decc58160bd06ce51ca09f9e642ff3250869965e6e01c515c96acd2024dbc1e0df28c4635e7813f412ff8a9a23f160cf8c956e4af7b5fdd48fcebec457a85791ff66cb4645e57d96662758f30760b11275904efeda7c02acd1d78b1533327fe0e07570754a2f7cb4296b04e97db3a761a1d91466b634a10ea1f5e8ab3b2fc05707ef1b5f4deaa9f558877e5bf752c55a8600b4173bf4c5f4dfa3a066814d83841f86890f8e16c9e144910682a98df2ac196f2cd9656ea5ce13ff6b69bce06462b76a42b590b69c8668eb100589e0e21146619a362033de481aab2a28e5f071a9940606366bb0d0e23eb3203f3cb05d0de3f6b2dcf019af7312b744bcfdec0d007e9351e3d04ab444261537070c94198dede149d89068bd95c80c027b070530b4945d1b8f2df3674d423581a736ff4ed7f49a8e85bdfcc5af8baf29ca20b950ae345873f99046b8f75c02353a5b355c77c2cc508854a24ca6249c1b28a51fbf2b17888e517050f313a122c8f16e823b82b7797cca143e9e90f7cf2694b86838c5d16b22ec1bc2ace6ef00af3cc4958d8a4c7fff5926d17f1e88a3eb9f286ec970c14a19dc4fd5e4c8fba7f53862cda04374732c692ca7196f8be0d86318706a08bef8bb1ceb124664ebff04e50b19433f4fc0441c9d61905700e4b0f4666756683b8cf500e140359a02e11a6588284416bb7de1b7438b213ce0c3af59e38f070725d1c75118d606c5f3feae9cc21ef0fd6479db13fbcc622aa3386ba7ceb267e060a7bd22e75a171062b1b661b3dae5435b0c2f6ee6244284fba2ada6038c76cda609031044e1d13d0405a7f798472e0606b527411c4b8dc1789721a8a547359933f04fc6b2e8e49cc6a89f7171658f88d344f1735c904998d0b7f551097c5147e058567d39a43073c667bf6e61dbfe72fbd7bc04f33b48fd8514897be4ce16f18909d299335a44bc25678a457baf16611abae8cfc2016e744032e24845f0c023ce40e073630847fe47695fbb0d0f63f7d1473cb13222f207dba88bc62d5afe0886522a05a4318df82c46271b3179a0da485bfb544191a8c18042d47b0c300c6a4ba5ccdcf44218661823d2f70997667ed0f2860cf7954a013e6274a2741416e4326f9b097d780bb91100206f93fd52c99d280f55c380b2b735dd0950a20309c7f04c01c48366a6927f8428ab40a33bf719647b3b4cc1c2b0253261fab634080172d45e0a5120e364e95cbbeb8f9ea32ff8bce9513cd4e9815f391034c63fc63c8bf45aca4a95fdd5e95e08d4a344c23729d64dee36a9758f529a392b369ef5c02cb99ed2c1b0c91ca102221f5278648ee6b0b06efc1014f8c359f97d2d63db72e0c6c2e824fe91448679e6a2929729f944b0f419710ccef5d6850dd0675f27a66345fff9b4eef2821aa5d422acb2bde308f3a2df644171b5b13cd197465532d1a2599cc49352404870876c046a9d96d3193d5b386595093b255d122db4dec16c2834364135232993c3152b39e316fbed3065147d62e3fc2c44a722da6b537c5d2809c8a13af5ac4559672f0d1699530d56bd9eb0cd73321d3b108ded9d1bc649a37e0bc0859da9b8519c8931a450e70d09c599165af5738833f4e2fb3b5c014dc8b40c1a11225bf1cc5113d2942d1a16d434ab451421e7cf9eadef1b2c90ac72b30d1eed6020b06941f6924eb8698d5bebd0e5c05b72d0cdbff2bae89a6db0922cee2cf8c8ef73702bb96edddd57f1b3aff4551b87f7798decf09942d62f1a39069a3d001226e2d2dda1421bc8e32e95fc4f64258a24f6af394b030a0e87c21f5cecc7ce96b1f1b3d7f0b18017bac3417e8a066f19daa9f0a43c18e5dfd16a90f184d3d7c998025a1124c7c0bb30a1cbf2b944695b1f6fbb624859ac0f2fbdfb919f1afb2d40f1488c2a09805c03a5fce868e999a7afc55f070dd7b593c2a807737563e80f49a4d0d33d3822620833ceb73642d5762ff49b676ad041748cff7b0f035218e1a381c6225ac1470f959a8e2581ee6c55e3a15a646feb9fab1a3939b92bc69ce06429e27d8380ef007c31acbd7e32e6c9aca5642e5eaaceed28052fd1521e5ffed37b925c42b1497d4ea59d14777a4af9fb06777958ed0e1a10476228a6ab6be06ac719c8730defefae3d38a4f34a954289eaad75908281f403b1da939eea630d93800f8bf30cc894b43dc502e575ff23128ec4d5c956eb0974b2cd4c7c55b70ea0105572bc51c39bf25aa00e4f8957090a6ab76c25dc8e3a684f3566a0bb0991253f9c36561d1544e35349157ea7099d2e81def4b26938434240c98c6170accc811409d6346c6182995cb0d5422cfd05eb5c5c819e1b843e492b2177f613294f3acc82b9f2b7e8bd69b893f5a29386c949c38d9726c557f1dcf335aca4d4066490b22cb842b281f65a5b9ec0275e817a6478d3f99ca050b69348c96180ca3a5b476d1a45cffd2d69fe47e108c97d64cc0ea0b969d562b93842ed1739389045514c20298ea5771e9b94d37d0ab6d6041ea737dfd4e2bafe09b66fe20936ad2cf359c5412af72d267d866940c35d282924fcd2c8109ff0ff1c214ab363a2a6933b2165c06f4b78c3a14cb3539ed793e265024ab66c7dc58a14d8f1f918bb5f6b12f43e3559e8ae0e46bcdba2ca2aaee58ac07ac703d2e86c04a7f5b6e1356927ada165d9c6161ff85ab1ce66c8a33061c9239ddfe5f5c706a06db3b19ca85f534beb2751f8be29ff4b11205b7e15d3a6416ac3025c184a9cc4569f8920a926aaeb77dce0ba146df857a1107f2154588a25d643add7c673dd5934bcaafbf7071fd2b879cef9dd011115f01253f9ccd3aeb9028ce7eb6496932ab367339b0682e15fcb133fd2f028ecfa6689de79c3ad44b9e26480e0fbcd5db8f09b69984288d24417390ed68aa6ef0e99e9d49a92e2c4729c98a28edc72ad0fb75b1f9ddffdd2f6f8670d65c50068902f822150d398e53e113a998747fdd8b73029940b224c0b2d3160087ae30f8d99abdc0491068661fa194a20feb0bddcf989b5f9910efdf4aa1fddb8f0db3bbf617036d59255b9937b8be1a5c3171b566c1a38733726249c0695597d119cc3e6d190f84716c34bb73a3b3112c0e87d21333665deae159ff52741ed305c532a6d5007675825ed7fb135d792d657dc01df42923a64fae755c4bf696449810c72b491289cb725c965a73cb66ea3ba372ba9e489a5f210f4642dc2151b73e4802f535eb75c574824f0dd0a7b95b2fe803c1a87998334c54b25054c64d10980c520fca2b789a995b83112a462857a622da6a79210a01efaa082e8c808e2870801e792aebee65729ac71f71833d889cfa80af2183ff163ac66ec86780a605ebde0906bea90ec0d7a0eaba5c7686d12ec6f48604732a909bcbe9a222006d18896c372b0678af11b820130b65158100c3a0a045a4ec1ea12057a407fd08333af76c05c20d5708de3397d62e260b606fb0eee90b5dd1852374d6424774c5319fbd88322e2d3340770f8058a7fab22534cd609c4fb96f5b141ab30b1fea5ffb2675f54bd0be2fa30f870dcc75ee47a2e158bc09d7d5c1d2a89b7f7eff5c343611a4bf12f0a9871f16acf054082c69980d10ed70313f8811d68c393bc8cdccc39444c1e7be8b4335ce94a88bd076cff1cfd48b50f4860e0e6091535f821238ce76d0a95a96557da39accdc25bb103bd2a31a5d30648b52b0b45ab2fa4abfed728c1c8ef9ab172735cf4ab4975dbc432208a4b27e691fc7eb3fcb85526ee35c358a5ca2f284a558377e868f3cc11147d832befe222fd7df2e52f0f75e18b5b2a44ca5810a6ed01aa38141d588e84610f92dab58f8b1c15f41217b6d1ede27316c76603e962bb2fdfdbe1766f1759b60e706637db60d42f5f2d93dcaf455045c178c7d2cd6d25de3b6bb89d85b5cff4796df35fe78148b4e0aec99cc4b395f10b10f23adf598e3a583265e7b30b4d944c96c9081d5d71762c919ef45740fa48f70107e9d04dcfcf9163ac1e7275ba363a261e08817ea9d26963e6b0bf99856683161b10fc045197b6630e79adc8f35a4f7dc39e8e7a7f1237fe37764e3767071f7b5cedc494b2cf683c7e63ea8efd212e43a07766411071bbfee889341e7eded496bc24e3970e0762ad8507f483fbaac8881c78cccc02d7f848f128c42b8476ae33e119882b7c4d1edc7d4b70cac046492a531f7768285b9b710f357bc66e48d173dc465e891683d894408f17166cf540f066b776c96c38f293d9fcc77f34bcc95c9ad058021c240c83417ec82cf78fe890ff22c75fda630deffe215b5f6243a3f76ef85fcf140ddf9d28dafb8e322ef5b7d0180d255d194ca63c33662dbae8ce8bd97a5f1c765942973e69386c0e19f4a3167a2aff08f58ff9982eec08e03432b47c9a365589180a35a0809dd4fc0cf1535b1bd602b0a5893a22b950fc748db74185c6060fb6bbedfdd219e9a884287864a572013963a0b0475efee618b21f90b90a1724762302593770c9a2f30c8314ac96eb791cffa6a621b7625b906bdc8e5c1ce08c792e2549cf88ef668ad4356934c899c178a19042fd4f97a38a5bddcad6b1339374deb1d8e8114d96795a82b44c7ab46836f19f0a78bf4698a92a830afaa4031b56d0bf6dd99e9c118fc1d4677c44737d4b59881a929825aaca71030e30d2680395ca60623672782ab33faa147a2ba5d9f78786fb592777c3e35d8cc7d6f5f71b1be8a283d5c4bf4af6b7b50991fa5a930e8cb9126ad309ae3701f4b5fa61582864116141796b6bf5ab5a6b3d6b6b2641d664fa1b3a0aa2a90edae09968d042afaab66d59ac66f1cedf676ad90dbfb029cbd8d968cbccc4ea9a5815df27d5a9b88b80b18a655d813aaa772376ab16885619136c29dc6ada5d5b5a1bd96da0c8f0c980852ab28ee9e96e6407f06c4a9e06b264f92718a1614d5725a1bf58f0a89611c8b4bff5d7fb826dcab7a7ce05e37e83a19befb6c057f94431998944dca987a8b3ff2efed8f54418556b20dd30041ebe40d30d117cd75fde6c5b225fc317bf42544b55f7e6ba205bd800eaeb9333ab35fc944a7fb3d5c42071c9862b58673e804d27c0ccff1544f9d69de48290e64925f35703c9225fad970208e7d263a58b9b0dc034701a915b854f0105c3c952ac23def3a12ba2de5546558c40a9fe2533713bbf1a02fa4b3c2890b98f4385f9e06d39b78fa9ce5d071522cc32367947ad05ee200a842504b92b4c46842b895eca434810971f953abd96424eaca38d259a97a3dada71e49c3ae9f9d3e5d8f04c31bb0fde4aec9f232ec15316d54b4c0ba1c8b3c157610b4a464433c8681c741c50e1eff59d6975dcddadc926a4e3e4defa4855ab2c4868916512e02b7f190df1606c87a59aaf428e703bdb24af40d9d7792ac976973b3a45b7c1af94a7dfcb3c103d89536ae9ff9130716fa400360e8f6ba19c93d8cc0aac80ad6e70e36bb9e4ed0a4b22980986251d0f2f9ea54e5e0fd76e4ee76f3a8e990244d0b29f35498cfd83a4b704a7703ab9f7beec2b9ecf1f6d8adb791a8d800d97f00aeb77f91b0a831a61a77070d72679db7ebf5e8611c33bbc7b2c0d23174f2f427651ec33431bbb9e2e791e2104bb9e2bd78e8ff8e5a48caf9405860028205641c259f44e3d5c6257be1ef6134241ab66a48f2571e5dcd3863064b39e970de0f357d024f67f73ba7bd6a5b4b20ae863cd0e1e1a1219920240e1a78c1ac8843d6f01c73f9ca4682e1ba74ad3e37ded9ee2db4fb5da1cb05f5beabb8b4006ea1f76b0a3a9274aa19674ef3f0acc5f63d05fce7c090f498bd30fdbe0e2c9678a99874edc68490d2c217f00be8ed5a6a71449a6d9ede9ef7a3dd2e9c17133de0c95fe79a1104c67501c475bee98ac9f40d81ec4df0b4fd9c3b5e342c28428e630d16c0bde5bc3618169107aea202ad5e469a9fadf2b0e9b426d841183bae22ce5e6a69cf434b103216c87fd6aea707dc65f395b6a30249ef23f73ef81f4fe518b177eb6585df56194c8282e8cc609dcc387301a60d15fd1c621a350e9cfdb1d7342a36bbdf5b99dd28236b4aae6f825887ce631a15baf6b120bb6f8b56df1f9022676e5dbb82f0d31448f3ab91178e3602a8af9fdf7b5a223d2f468fe9da0722ee2a7e2e3efba4c57ac52c07470d2baf898ce269b759f820ccc3590cbaf4a068650a4f42d1cb51d9110ff8718acd9cde9e9a589951d30c51ea719ad33d187f2f6d08eaf40947df793514ecfdf2444deb163a2cbc1c072bbf78c2dc8173d1a08e71a5323add5ab5e4e0e03b5775a3240c42132574d73de7a01b0dfa157c4cfc9c96b92429053e84773144e71bc14a75533b5efd1ab2a75ddd9a6b120593cd42cff279918a26b1831de92692730068cceedd4f29015732ab95c8e7d07a287aaf29127a20bfd46b6e3b0213e039194bcb58b50fa14b89447042df948933a6c4d40b6c95dbb9c6b6628dc2f290dfb5484816614eb0a5f63a7405dd2c8cc5b1bdf02c9348416f3c8628d147dd62281c4193680d129ea8f327e814594743ea7d78a7fd247c306f48af5dc44b88662880ac5cbecf6431c8be5909bd7214292278ac0ef5da657c89accf251499e6c2c9ec9ee1db978fcecd7de8deecea850f7f1e77365ac8c402ff43072dcc7f76ed25d6c0c5caae15b6dbc69235d65ed2b2b21c39881ea8f2e5f9ba85768158b77179cb6d24a3052dfc4464b408980721abdf7cb6bba821e0de469c4de016f87a73c5d2c356c101d6c52add99cd8592d2e3e2d1c92eb139b28d39dc5f8a9a63dbae353f24db52ce6939e4772ed2ace568a80cbed12549ffbbead564dd3d3bfad81c8ce07a994356fba3b9bab4b3617f91db7f9353fad23ff091534c608639b6bc0ed05a1f430ffba6cbd1181a8ec6d1723486c6d0f3e869ffe8c3fe93fe7369903c1d43c3d0191a47c3d078741c9da1f784e444b99978947c7ebdb15a1a9a251b1d476768183a47cf1a9e06aa23371019633b82a44b8a6e702b642c05c7c5813d11d1e3fd8c5507c55cb0f86f868357716462e18aad496cb34e06bf4e8991a0490c897b643fee5182259b5119d40838797d121b962ac20bc0b743d83084e351c40a1ac78615e32ca37bbd09f24fcc3b53214eaeac6bb5741d692613743eb060edb47c558a8d5795400d498345ba8a2fc35a04160b200b87af16b920f04548aca4df9c67b44a8c4474234383691ac542cf05c63e16c75c6426453a1f043efa26495fadd7430f5eca70b3e6c1f0a8ac015638767259b3bab7833ff79ed85eca6c76f3973a707d3acfa35cd4fd9a374a77ff1e345afaa3caf2a7933b2efef92b90a044048963d27a8820437d7bb172b2a26b03bce51d0e5dbfebe946855f27a5f101331603ec1bba162356d0d4d0b99324385989b233b7402090690b0459d5be5af562b7702357a5aa6ab8a857a5be37dc1bacdefb16ae15abbb72193729e8d5075b4664415dc67990672f059f21183e4f303a42dfe58a04efe08fb5dfcd59afa7330bb9f27c8a13e66cb4655d1545f4437968cb97e8903357bb13f0a780bdd4a78ad8c6aae962f2c9c4965fe460d0d6410ad841b66e2fd603420e3e8475ed6403ef32df0db3ea2cbcb907fd3023215fd9c642a48537347a7de3970f6aee589d80b7a090fdc6df5bb8e0a81181940d384f8761cb761c9cbbdd67e6d8c94490ddea42c40a6bd050ccf17ba5c7267122b780120add3a2d5811546079d10e60d23fd66e5905f23a0a929fd070315dda5c4946659e087491f4cd05b5317738b753e25476fccf691502437107ce423d6bf49eca4a32611b6a214a23cf59ce7a51a23a720b0d60e30ccc2ac911593bbb67215fccd16cb85a07443b9330ed1f25b7cea12ba4abeade3b1287065c78c0aa6a921001448f0f33800fc3d87d30b321bf7e0fb1f8316c376cbfea7d6a67887927e6c9c31ec679d923d90e637297bfd2e12fce58e35eb4072128e937c536c21b5966c7dfb3ce6d5cae090dd0eb09cd92d5ecb9e8fc69ef03832f1c796d8641ca4c563a5844c7ff7ed3c5ec5fc3e112a34d117992e6eef2cac1806f188210507321ca3c5e27360dc3c7888a0cf26e79d9eceb5293a0806c83a714a58ca0e1f7483461b0908294e02085b8f8de708165f954f4fa293a2b40e61b62f08fe745f00cfaf48ff4b284b2a65b848b4238041ab1c0092a025af8234e70c74fe0b4cbd20307024839a1ed115b70a9a4117a260fe2b26be5d20c31575ee66e7b169b4ce503863408014eecdb7d42abcc89357a880274998d6c8b0f1640b8b344f513ce1f131cfa94527a2b392b51b2857a015f32971be7a7e652a37d9fc866c23b0aaf9f698e46ddeee26882a17ac3b5a6685cf2937c90c1a73003e8469e54939b2bf1cee2b2cb148d187b909629d10b4e791e48d5648a11840d08c7bf720a897f149849645828980fd3959d58c428d5391595f5792d902119057d67250dcbb650053e27ec15945322646240cb5269bf3c908e37b074392c49ec638852b19fbe0ee6dc92879012c3aecbceaac5a64e8cf11a0b90843d64b97e4161391cb629a0be015594507ef4417004944945529ae20733705bc9fb029068c1245ea5af0c85700446788693c80350674a0914732018533149d9438371c3f40f172d2b3f98ccb427912a40dd736a027f180caa4aa8d18f766d26bf00358ea521931fdae85629dc2d56db624c55d254b483a5827bae20af0a2284417315a8553145adae3562498e5f075bdcd23daf89e71dc6ff8853dd92a1a8a96103f809e885ad6b3125470fa9f144167174b6369e60b8caf0111eed020938f4dcefddfe966114905dc9516ed982b9b0721aef83f6d21cc7313f959b90905fe207448be0d9d9518daca54a3ec4695174738d7a9981fb9159f4d9889659d89f301c3de88f37c3a503bfa41e8500b24bcc099af3c91cc15e2734481038cd3990ddc52d337c9631ce59be4b90d00205b84d2e4680c2ad92fb238fea275849d983c6add30e0275b33ce4f2898bfe3d37b3e923f019fb2ce098e80c6a20d380618b00d48b751da612cd00b63abf2221bb32e8258ffe617497aa11d24607efce21d13dba519b1b6390c512bb1ae41a04e8919afa0711e1f24a9cea28140ac831598bd0f047bab5fe00dbaf089d7d2926493ffb85714f636482960db3e38d402d3b9452bb0bbccb871882dd8498fccaa3bb9020447b1ec2bfbf4c4b4ddb0d3613588c46032d3840b91b584591ca0b6a49b0d8bda737848f1dbc534ff6c170b9262bbaa598511390b1ddbabd236f6e084b63a41060ee9484f25629158c6f4a589e1a488e41260e7b2a2871caf290dfa76613d21f85115e2c4fe20ad060b01cfc95eb28818ebac2285a9e79da3bc6c462386a7089de41a6e8805989277cbab20b9f0ff24f7519c4cd374f81102ccf676e216075bf7c50eafc0cdb99d525188aed49008410b19fa6b560051d0bee7c32dcb6bebcfcd68161643442d00ddf07ce63771fd157abea678e611bc6551cbd80ded1d50437ba551399244345520525cbcd8316f639416f51131a1c3965a8bea65988c876c81cc52762b71d40e37adc43c6ce0b744d2bed2418f4ba8e64d6027cf130d581730e8bf43f455e53d034ac85745a258ca106bf5858593d83519c6a59ef16877fd54b21c8e9c67b125f8e9e51ca68d5a2707d18aae549524ca3e5e340b41efe4f4871801a128d8c9398e72584b2852ad958f1326349934d5ac1236eff3ed7d8ad3371d7fdb2415103d835179ea002372f878b112fde29853de6a60c0738ef12bc8d25463e8ee7b66c9335653d4895644f94d975c2e9b5daa56e48e3f1e848ddde5eeccb488f53db2c72e321d3ce51fb88026a6344c12ccfa6e403ad5ffa0fc38e03cf1da43f6c02ac5ec433de136d137c3f6683ba662746cc82d48ec33d286f3b8298b36ffb29ff1a84bb1689be1645bc29de53ae89a6ad1f61243d534537fc34437e5ac90c1b0deeedce28a5de236451ed6847b7e6527207a1bff83d3090d6f0049254837ac8894b8b9a0c7d216a9cf3be17505d87b68c84180ac95e922a6b0234a6d854bf58f6530afc19ab0253dbf84c4e93a0f202ba5c1aadfa022a640037788331b488130ea4018ace1c27f80a2089588cb08c0097c91bb04f0358c31342d21099ffb7423089b1812ac0511514c508fb9258c90eeed68ff106e470f1dacdc5bc029336368c9fefd59f4704d0d3dcccc04678f5758532db8231573d10ff31327195f2ef294bbe946f04935369c5b264d91b188d1f5b8398c9c75a9b740bec6dd434b91472f1d28825469415890201b9623344eade995c4bf8b79ae5e69c9717afcf19e91eea105c25cedd93dbb7a0abc7474f91ead64ea0f9cdba24e8d2d438875cfb36c693920bc40b6df316c8d955158911fa6e1f847092c355dfde973f8042415576477d44ffb09bbd9b188a207b61f2bca78492732095368d2c43909897e501517ff5ef0d8786f648871ac155512948bfe356d8cb09deeeb579224c8f38d4f178aa9a4655e4c00a6bef308c65a5d437514151c6de18cc15c399161afe193eb7951fc38862a507684b7c9bc06f5599a55f556ceb1d29c87c433ebc27cbc383b66c4e16fd2fb9294a846a2e332133001a08ebe013651d80484700b8480cbd5f58c3570d6c9d613410ca77ea65a2e94261fb156e6d4948f3b627f3cc9b51abde5dab6254f59c2fe262c4cd897aedd4abc9f8d61a1303bf9320f0fa4586bfe455abacb39d7a186c132769b84ee96c3f6d24dc80ad586d87fb7cff60d62cf4112bfc110a81c6d7acdf8595a50e7c2ab0873278c1768bef5276d80723b50dd86e3d48c39fb35788d656e3c67e2524368c9e606848b8de59a02ceec3450785458becf8c54cd46d933b92218cd79d792061756862bb625c28cb1e2090e176202e5b1c83812626fc516ce8f7dbb047b36068b4bc3bb4b4d8c53ea6bd8f7aabf5e85ea47ef2da35eb4dd6754f9c54b9b6e8375697c96c74f1fb3b27ee5ace8decdce66dd2cca5726eef687792a2440e8473ce6d39d4f675c440f7efc4f1ef165835780034b3509a2fcdfbf51faa263a95cf7c811b87dc597bbad404c89b2a6d630120c92b9d0849154c9c4bd8b7db4a98136d20f1b89f05b6ff6a4c1eb8747464226a4d41cba9394f4a427921592dcc83fdfd314031fd6a041365f10cef2b0e6bfc7fd59ec790e6ea349217c85a64f195f6fa8af3962bde858aba9eebdfca28229338f399137097bb79584a7c5cbb3583656c0dbdf49cce5cfb588dc439f8896dd9a6282cef165d12f343e25e71a7b45a92ded2b3b7f52c15184f867bf3e9b5462237e943834a08b5a23fd441d2991e0ca53f2525e5c213609d140f7b0dcef520a51834d96c6fb0d2276e791c529d298fdede706e5900c44561b5b0b33426cd6e39335ace7b8c5ca1c0808782ea5acffb2ac8d37d0fe34224e0c223a0d0635532aef4426cacb11f8c4bb407631eb0f8020c93064f5b02df1ae720ef74c5bb70c9f06f60a3597ded3248ef62625fdd6fb30c835c11a49fe01f61be575565e14a6149aa7057b07acf5efd9bad3b542719a145cd204889e27af0295c438bb9c4856c135edbdc556070ab30215e05329d1fb305c36e0a5cdd4dc0be62234b62f3b3b03efc64b8f825d02c86df35d9504484a76a4c3227e741a52ccd2fae3c61b6fa917235567603bf834696390ab2006ec24d649ef189efbfb1ff1fa09e5eb27e60a26e10453bec01d467ad64bfc10f4ddfa2ce97095b8dc001c5fca5fcbcb0a5047499af665eb0d474fe0f3b1d82124e848382bc74c4a191502ad450348af8ec59a3d18f06befac72931549fe0832a269c88663ffcb005fcdf1d9ab313942511d85b1d5b5db05d123bfa2effbbe6a68f24c29d4bb9ed7aa06b41cf7665af607de2ccdb2ede6f065e7cd46d3f58a03836611a944c81b91ea071b710c0c076ad931064ea9ffda9afaf176464ac588ad5cd64a41d9c955adffd1c9cc9911a9a4934493d8c02fa077bb36d4b9e28c3516ff0d55a574a7125e434e763792a5d245f4b831791a369bffb5002fa674d857953d28fb970569f0b97e8cb784748f918ff218a935111c5c6f4633afc115e8b8fd63159f2167dd8ad3f386c8dcf0f45638d411661e6a2310c3b02e85dfb9654bf106813fbab14e00147dcf259a0e597232a345f445076da6dd684b1e77ec4c7eaf628bc8e9858e32189f802c342e217cab143636f7a8c99f08fca798498b48dbddb3e3172d919b28d61ced3c320ce1cd453bfd00b9547f07b027ab69766ea2956136375a8b9c767ceacbd61009644c27dcedc1ac8d8d753f21f6a49b235e5d7d7a272d5456a33a2807ba23bb3e78c36ee8cd194ec46a9291cd9c026057c04851c44ae676083549e08000e4ec1966001dc4ad3118186a89251b93b1ff8a0f6acb7a6eb19e23bac6fc7190d47900fb9582fefa4ab3db2ceb9885b07c89807c64c461f1c6dbfa4454f69e822a6c987936f7fcd4e4341d226d14140a624dfae53ee4e502876b274b2755e9c1b3f05424c40bd7063c29210cefdbb45e7d27984d62617f622dcbd74a5e13215827ab46e30c9782a5da62765efa26fa0291b2e538d0d41feb622da950ee0420f7f2ad921e992d4fcecd1d2bde7892e4bb301386a59d60b94cb048cabf5338b1fa8c68521f1f18ac07510c25645ed7414587ee2ae5709eddf3d88137e7323155af456640d4ca488113fa75b18c57a8ef417588019a825e4a097f27add8ed830014f03bd1fde106e3020fb8d88e79b9da5b57564bab988a26ae95baa96f3e81f96b16378d274e348931dae83b9ca920e248e665d9e061d2b53072a8715b9804bc7528389014bfefa1b002e212b060911fda2f4cc0b7c4f7cb9509d14a2bdb05c3b1448ea77fff9e96e041991c42d18dad77de1287f3e5ac1e292e6b52db4f2fadf5c222b8c467ee8b870b5ad230b213c2d2d7a0980c56fe05b6c14281031974671132dec4bf23c4afdd49d57a75d97c0b38ff1e8a204eca5c40d10ac8ad343c59dddf32d4ff0b1eafe68b9ac5163d805956228a3ba8bc095f9b604b272de17fedc4c2462c72aa7d0634520cdc06be703efa56ffcde3bedb98a8ae699845223fa36866c53a15896b2430cadc035c6466c3027c522ae629772b1cb8d4228522e6a17ca44f8b69ce38a1a6e954e98426ce55587490ada780489d4eb68b43fc7e02b34ad3378026aca051baa17a49124bc8447011b19970030fccafdb5db6c10b1b1d515388c0f0af29d95016613744b143422bbdb7dc592290baa1d22ca0ec3b67f058168ccf18f11947bda68f89f9bf9de2673c8f36ef5012ebcedf25fcf0aa2f13df45bf7ce60bf4b278b25cf81dc06e3a2c8c04fe565b399692a434f0ac268966cd65cd11680299c3536861480a57cbbc8c1c007b57a6de4331523a76f4ac324604854ed1c04cd004bfafd42e801f48612741f0e914512ab457ac5b26b3750c30338c5ef9c6b0c7adb168accfc2a3adf9e497e0fcab808b7d325c460e6227d851537bf626b091aa9aae1eb8ab096318bd2602ee19569bec38548e3fc486046dfa69773eb4c803b52b20635d11caef8dd27e1a8068b5e5996d6198982f64ece71e769c4c395a33f419ed9089e303dfc5b4e057292086803bebba1e7fc173536d155a406e2788ede280917676ed793dca44b293b00778fe84b4b2c252652003d04c1567acf7cc5f48a514c34cf7d66be8939935cff79950a2e09fbb1361cfdeee3022a80141751482018960402d6202901121f2cd76df73bb97a98566af629369b64aa13f0a15a0312e6e63280acc14e0243f685f916e176cd80e5dbbb91ebd5cd0673f7da78030253c41aabc27571e990deb05a3453a83ec9f23f04a467371874724b9f48420a48fe7389bf446e88c6ff06ef1491b6c4c37046c84322278e0f380df5812e5d7d7b249774d4c311cd6dbaf991ed1de1ef10124516df7690c66085b58b7bec5355317e10e1133001663636dc76a7e8ea4cb800693eeed243b5d3002e9c4f008b20da4eb58fd168220ed741698fc681632eff915215676c9ebbe4937d98b92d880bcc856ed0e8c46801cae2c02c53a094913ac4c082d186d386b3f2b10074207fa113864b9be7a77d82a38aaeefd42a6c536053fab26647a695feab916f7aee5006b54ac7d8ff5acdf7218c6c988c219e8c00f68148e4df25d8366b84b22599926cbd029502bd02499268127595bc5024f211692b6ddbb26ebb4b3618bc66f295a9d134a84db409af6a136d32d319ab8041b3a05929964aa286a552d0698713ed44a37dbbbbbb3b6c9128c6d188b430e8d4ffffffffa2381a9148a5d2e6eeeeeece524a29a554606b8c784e5064a727435a38f5e003d5477d78557dd487c49d784c2da46a0bfdb00cbb81248bd06aa5d2212bd5a62d684f94f551225d046a112db2ac5a64c449956a8f12d9226c041e410215892241a248489cd7a42a24b708dc23cb709124d1136d06a86d68a0067221bce6b55abfcb659652aefa788b15a750911c7e6011f2018719112c423ee050038b06f25a936278c1952c59187ea0fee8cf8ffef8cc8c8ebed81f62df24ed8249a644979460f851264d4cda449b2cab361971d26150e844631295893261a24c80804eb45e9d76f013cd4fb4138dd6363490ab1aa881bea594524a390ac1a48901526933b90899dc645a56d38873e55ac8dddddd21acc11ae72613039caf52527c753a79d75ee779cbea3d0c823328039ccd663348040cfa6f18248244c020180483823efe26534e5de7efa948152997558e38fda5851a88d997ff5d3e0ab5b2e22c2d2c2d2dcbdac2b5da07572994a6565e8b997f502e2de12d26064ab8b8bcc0c418989898658de118cf39270bc1b5e69a0d33d758d4def7dfc7093a9a5af4966a71969612255c5e605e606096154669218f71989854ca5d2a95cbccc8cccc2cebcceb75b3bbafa00944700545a91b262b9ca7f119130334264c38aba6c64f985c84562756ab655d8d38df75adee2eed07a62c5fb16c6cbc6bb5dcf572bd5ecbfaf2e27f1fbfefeeeeeefeffff7f7777776f11fdfb65c2694cd4d49c38e12bd68ac55a5656942064e32c9b56cbe5f217ec05832d2b2cc618e34d44b1038dd6a1b871d80d0e0e0a149e0280140000b0ac008c38fdfffff83125822b894a79f1010840000f408001067002582a0850a182575584023295758be288b4ac25e59a9452ba94524a29a5943221165b4857144d2e74442ac1ff797d0ee2a9271616958ac54281a28019bb2ed268b139e734b9b789e35c74ea4e5db7ac1d2d36679c73c6e69c33c67e77efefeeeeeeffffff8f0c551445312e6b8c231269695b725269dbdcc499386e59b939a72fc316b1b24f26ddddddfdffffffb3d96c369b95369373a614ee74ea3c7ff9bfacaf22ff274f19a514359412081966b3d9ecbbbbbbbb534e5de7792a2ad25391f21f855a6181b3d9cc8828ffffff1f638c314615f98f42adacb0b4c096165e6d6991ddddeeeeee2ea59452ca9802cf1858ac2ac7cfea6076c283757ac01e3d78b5470f12c733c7d4220723c15138886bba40cb10cee064a6ff3f796b74d7a98c420da9bb5c3e54f8717ab202109d50a7ce65d539e2a48ac5526d6a72e152855caa4d5deb52558c3f80cc202cc4a0c63416d31890202cc47476a0eee8ce8eee0489e9ecf008812a4485085121b11d1e21b2215087e8105ed5213a84c44979a24999ea6c0ffb406844112d42e260d00af64ab48aa365252d33148996559444e442ec234a96405da24b785597e892a9eeeeee5e9bb5399261d6b3990cb39ef5cffeffffdfdddddd7d213714751c917cf3cd7d59bdc4b5dde2b6891a6e9b0cb3d96c369361c664f6fdffffff714422954adbe6a5cd79e634777777efeeeeeecd4d268e4b493975b0eb78b5ebfeffff5f4a29a594a3d1e9c4c2a252fd0af0860981824016e00c31e84407aa8eeaf0aaeaa80e8903626a21a7ebcc233ed00818646ae12dfc092f435eedde504cc7e442b4f3c3b2964788caa0ca54b6ac2a1b715215dab463d8bdac3de2fc7784c886b4d003b5477b7ab4272464480b3d3e44a012512244948894437a7c88143102d5881a31a246a45c1fed20d6081f814892404da2012f18ec0607e2e0f02a0ecef77ddff77d31c618638cdddddded799ee7799e87c1aa5ecc34d84069e0407d604018307815060c12a7b20c5ea8aaaaaad2660c3f329d199cc87476768c519743215d27a959d75de7aa96923ac422a4cbf0f592383829d50729d5464341005a562a04115235608d1acb5a63c4759daba5af976ad3d70b0747b5294e370822d4188107126c401b3678d5860d120767228c20e5086b634b5813f6841bf0c60d5ebd71c3860927dc400107c481835771e0089900b428e0e001a69003737278352747a290424e0e1d3be08e1dbcba63c76a9563772c8fedb13ea00a248e6baa3d5685fdb12b2c105ed5a993c4f10ce932ec26330bcc31661de61de681caa33c3cca43e2388e481becfe7568505608cbe0d26448592ed7885472e8722929c68f0b6583b68795a9cce5a2c5e69c93c58acd39e7f4bcf354541ef528d4b2a26273ce19bbbbbbfbffffff49fffa4adbae9b73a63897723a759e8aa7a2b2ac2aeeeedeefeeeeee31c61863eceeeeeeeffbbeeffb3c2ee5d4799e8a8a948f822814afa25093e76a159b73ce199b40cc39dddddd3dc618638cffffff2fa594524af92b289695169612255c5e3c2615934a2d6b0a2626955a1a8c893131a286313173ced894b5dab7bbbbbbf7b7947071797981818949c1548a5753a91798989e1f638c31c6eeeeee96524a29e5f77ddff77d0f13934aa95432323334908686576968dcdddd5df47ddff77ddf7f21ecd6d81d6197845d1b0b4b20712b420d57d34279b23df0b03496e9f0fcffffffef7e205e08677012baa149b0902a157d489761aba530d80d1414c75cd60429e44c9003e6c8b1ac3946dc09ca136fb5549bb66030d5a6b01871e4e4d0b18307e4c1835779f02071302847c70e1e3d7c401f3e78d5870f1dcb637bac8f55e107fcf183577ffcf01a0f1f2a1cf18140201020bc0a0448c8c78f156610a8413448100da2ab150b3a3b3c42027233ad5629cbccacaaf2b2eb5abaee1f26c562b9cb55b3ab65b18dd25c2eb559d7eeaa8c06e5490f3c040dd1030f010c40808a0256c0152b7875c50a12a7dbe6262e65594f30588c2a76c51ab00740044209c00412e0d50412207112c8952ca16cdd902ec3ae7bbd240ece02262ee5d4411c1c172c0ea0d807204040f512018c20025e8d200212c7d28003ae26192a22144441284ae8090512e8111fd9fffffff772c395e9cc18638c31c6effb3efdf6e32f6e51643aacf577b26aef926b87f4e6c653a4a8c002bd80a360a093c10bf8e2c5b2be18ad562e1b1bd5a636363632b097bc518536bdf11429549ba64811e30519bcd06003c80189e35a061a6cc0018c1830460c5e8d11434a0d968385b131b6031950860c5e95218383181dc8f060069c31835767cc30a208238a9032860c0f667c4003d2a0c1ab3468480f3ea00142085084d58aa76ad7ddd8c5b129e4e4d00175e8e0551d3a48dc3233333373d7fdef94524a96bb5c4b2295361374c54883f24469524aa90b83953637712930256559536030b9a5f849d10a45a44934aa0b3ad21754095425aa845755892a2171caa23026b0ede606050a095a3fadffff8fdf2393c964b2ce53718ff53d32994cc6f2c5fefeffffff182558d78f4b6532198bd5238b2fdb81464b89e04a51292feaab46984a57313120ff512b2c2b2c2ccbcab25a757777f79c73ce89f254c62b8e5a61616969f1122e255c5c96d5455575777755f5c55d5e60606252aa944ab5ac2a5555ddddddddddddfe98122e2f4a8332ae929999a1315163a2a666596be69cb13977a0c9f8eaa2ef06eaeeeeeefffffff73ccff33c4f2543336382a6c6c489132b96b75c2d976b595d362d976b7b5bb1d512356cb57aa5436c7e7fdff77ddf577362b562b16c6c5a2ee872f1aacbc5b269b95caf17ec06dedcf0eacd8d8836d96627ed888e12e4eeeeee31c61863eceeeeeeffffff97524a29a5e7799ee779fd362d97eb159555a854b1bbd9c860060000031b000400c22010868120cabdd50014001522252c1c3e1d0e134ec4c1582046c6520c06428801ca18640002c02845cc507200bec7d0d1398c0469284bd1904740e9779447b8759902354190cfc4c3b38b073ba2529a83aea59b4e1958e7fd214b9afa7b8181e1ded318e2c567ec429147c66994a74849d160dc6bb4927bcea3af0206687bb7ddd99dc0592d9f1963c42ddfb9858223e2473ed17e4c9e9c487fac6b01ec2e06e17ca0be84235d516d410e2928cbc191cd21dc7b34a576c394d886b580c507d3057cd9e91ab5ab62be55c61dd6992520f959d525fd0cf4732d6848c54df452c6e9836b79e31ebe80bc47f90829f3d3d1dc58c746430940509894f16600110a1d5a0bcd234d625a451089d306a448dc5c85ea352534a2c9c99bf5ed69dda7d63d64b6e017df2802727778aa18d624fbae3be6ff2c92726d55b2899ca3d341b02f2c027c20685ad319f9ba984103bbbafec51191b1a890edae42b54b8482a57061b06229dcd2a29aba39a43efa2c93be875eace8dbf210c932ff19c91a11044af1b78d595ec93bcc66022b4c6ba284a021990cab0eb01c454dc884fa65306dd7fb2bfeee713060500d2599985a06a4904f274ec9716fa8ba3747298b3e04c66d22bc1c5e255d48d003aa4440237e341bb3965a385ea55d5f324ca9c26ab184625387dc6351f335735f42e59e78176fcae2137804fb7ed99428300872084ec0ee42983970968c1815e853139b33b0cfe8b19873e0a61b314440cbaaeecad4fac9649dc111689690d1a2d4ce094cb0061fd3f136eb1110d0454b17dd5cb6ad0b2942e27449de4cce87dd11ffeb762e016edec3df5cbcd1f337741209e8f05fa1c8f2db0870f183df6105683154b8b563936118e243b89cf762e32889e7e652a032f82dfa274e4bb1eb8c797b7678f1722155400007e371119ae9e4a6731246f4bd81a07209dd1a13e3d4257a54b88683a2d1a9445b5a78a85e95cb23742ad53a4e6bdf5c28efe0df3f31c669c31378cfce00c6ee2ee7e6d6d7d319b710dab86c45352e2f054746192cbfb6833b685ba00993b5e87364a11356a5ebb64908500ac428900f18ee862e6984622c178903280b4d9575028a77b81aa5ce3dd6f12462ccb4a31ef89eb7515f2e51a358f4b87af2a23e6ad40950f37995b160b4ef718be0000091cbb14dd02677ae674be94c2c5ddd5b175100218e951f7d029362492a0e04a7e8930b96a87ad05e17ae0b627dd05836dba645ba750b1c99411aac18c102a8465f3d9f1c7dd5db33720b4495800aeb72de0e1495e6cb51640e08c588eb1f314bbf8aa7699eedfd61f40db1f88a381e9d2cd0c486621ecf748931143d146f14d24263fece4b57f5e65b5f11ac3901c3524be79320aa6cb94bdd3447ae68c047cc4051bc5748358d7914c9d1334a22ce730390acbd22bff33cafca27ed0d91c336660f73338804e912c03cc9144d17c885d73748fed010401aa2edcf28bca5c095c99c78871b6d172b20d14074bd7ab1a30f76f2727bfbcf9d0df759fedca4cc07a038f81d69f90d1816bd24b0c53b6d7098445b3198583edcbdf14a6d48de2085e11db0417b8f1ad16e4cf63bac17ab8ce9231f426f898bbe6f83b5e48c423dd088700cb59f91c110e56f0e92b435071911698ec9dc073b0d70f98d89f9ef9cc5a133650cafbad96a5339dfb67124b7896ce0169da2031325c14f6fd6270ad0b657ec1f81ea466e0337f3c2197214ca402b2abadb5d7f302ef504728b7aeef2807a9e50d7447db60d54f90db6fbc2febe2e8850d62f816e02648b4c0387819135ba6ba421948af931a2c6ea85f3813300528c3b97f69024d47e6a3054d1cbfa7964d477e47094bcdd643b6187c75fc0fb4d6bbb8f2f03f555658fb9e7c0243cc6d0aaac4c3d8c65aad7f0bf099a6781f2d382b0ca2b67bfbbf9e6669e0ef2acc513dd9dc9c7259098204c1c1aa28cd922e0009aca3209cb0a94038baae6a72ba4eaba9083d229992f2f391d1d8a53cd09102e26122723ed12ba1cd51388d5697c8e916e1f18b7b07a70e96d1dfeb8bc47cd972d514884414dc111c089bad1d94a7cf1ef40fc951e65e578021f57280035e74eac5fb6a9ea87fa1a5ecb64a63ccdbf2e3775180ab1310c3a514ca8fafbdc14de9157a69bfceb0e2ef144f4abc7b98c273b3d56f35a7d18843e586f8370816e315aac3fa2f59c96e5254cfc17c21f97798a91fbc6df837425d701a0536d621d0788fdb7c4b6e09e72de36b43978471e3747e50aae91cfcd9356a945428bacb92bb08d2fff54c8f43aa6346f9e1a5784e60e3894235187f7ae897b595b315ea95645a912a9d6e11ce4ffdc12461159d05c5738e7250651ff33fad76d08627eb0dbab17a96edce621bb85c4b83e5f9022fbf577d76d3431b2bd7baa9bd22e580e390052f0f0d1b287fd00441e9a86375fbff35d9add4a774cc9a22454040dfc33d8e4516837f5ba38af0fbb4c6c6851ac275be1ade31840ceec0781be1c28f6f11387deed02cb7df11e451686018d4643d35db88f08b50abba315397451f0057a764b7ae98af91b83f4350534016d59308706d1da8b9d0fd4f7393c3beda675b64bc5a87482b0325f406acfc466580776ac55592d3a3ff1c4eff17136fb1d16646e73f1875ebab7e3cd579552fcff686e8431f424a15c489332eb83db8bbd09297525d42a4f01455bb7bb587aead69498afc3b98d130d5997982df99a3e918d4c3791cdebd7fc987bc82980e8692a085f83a77c8e91fe90111e498e81a3025d52cddb82ccd7ebd9b0edc03d12f9336e39784f4b01de9d7f383c9817a54634ba87545279daea7ba3b333225873384b7f19dc15c21c89fc1e6f0034cf73c21c9d147ac7a9bf0ba956599508858deb15af6b702cd350df5f10a9d0d33fccec7ad4589e1c9ae5ba77b7f0211e2d496706886710b1892e2eb90a3eb8376026936f2f98ea022d9539d4f8a2f5b36e23c4a45e31c953c13fa828120caf0be2f337e67d9044936cccf51cc113a3340ed99d201558c360cd653e8976cd4667c14ce02de7ada466e62cec26eda70cc18dc2e099a3aedbc1992af697792f0830397e43a65c4e72b9a9f1ecba1b702784c511e8a0d94db0ea399a9baa1cecdb27a779ed5843f87df36bfe37b08f4aa7d27e62b743df751076f0648dbb4a4132fe5b475e29e865a56dbd3aa3a140456dc92d9f2d58e7ee84f81174b1ef0f75a2c1a31b3aba8fd186e25d0181d2a7932dffae8e51c715287fe0b09fa34d225315faf4370db7e6db72e23573aee3529a2e04b3381fbe65f4e765ff9f4492bf6bc2df7146e96dac8fec7d325b67f237c65d76936f33d6dd99fc9b71af8e3d752ba3dd3bf944a34f9e7752930ab62ba212d92988c1831f1b29af0da1e1ae344a7ae9e95d451b7fc3b34ead78d29b84591b057a8873adeab5be56c858af13dbcc53f72aa72bc5b5a0abc5f81d01a5698e754faa8813b9fd3507efc5c906fc8cac07f03344f5cd1752499fef1f37d9226451c54a44134faae39588d5e8f8eef80fd2ce80a0ffdff31490b2fab39a42b5b238efa411322ff33d5246e3f27341a073a86a542a5b8e19998e34780f021e830cc6becd47c7e6680b9df8bc30ac1c3e28e2663fb542fa797a99e3ee07f5c7f99ff0ad95f94edb0edea8c8c79896ff79cf3a4e29aa1e38afb091f979bc08707660d04ee7a4c43015db659c639c934f18a763114d2da824510232aca83ac556453a73878d05f1ecfe36ad9b5efd428a2270f6f4433bd15abcf2ca544038b564de0df5d5461582a1052e57973786046914095004784073a998d132ad087ad625a61f7b3f27a21b84ba4df14934075b56a028a182e7d09da3a6a4d9a4c7355350bb1e92fc137dc32835cb251309e572858e4a1709e44c1b1066d9c09094c76943896b057037b137dd9d1cb2c0d3644a84af496b1935df45639cc7804a36432f059adc1ae768c5facb40008a0c028cdf519202f74258d2e4e16fe6cd6d6458f033012d321a03481b528c03f456d84ef775fd84af7ef4d8ec48e804429a1bffbcc4747918391628b555a225526e5e8a4c3354e3cd4d08d6130635957c349f391b1c8ff1b4268a4c7dd7ad1089042f025868177ba66c7e565a5d1429e9a2cd0b710f0a5d13a0272832c94bafc61c48d1fb89005d42b049ca473d914b3e6f1c6bac0c79bb8c34ceaf6dc2f267b94f82b0deac813c272b6871ea026713506e34fe1a0f844c44b9f86f9eb8b066443a3b68a142b7461b45a1c916e8cee581b7f01d76f3494228a5a2db726abcc22482a5607421e67e76ca45b35851ad82d15a21539e4c3f43e2443edacd3c11d1fa1d6f891a35c5f2d66d1f45144b3f18b539d2c57f1df45f8501ee0e847bed7427e523baa530d656e9305072047c2c50a05281990fd1900e2432f05bf3b59d069a10aed4a3a3e78d79224506c12c27deebc34a27cb656fb0715f8749efd341408b9b4e897e7930b4373ff2583e90973297dbc16d6cc5a0b14b580934bfd893ee22bc11c6825d89dc6af54473c20668c9b42ba1708b561eece4e0da09161fe31dad502d0c0cdc01854da9a826efe3a64696aad989ffad1243793dd073cd02389f7815ca73a5ba33da1777ca04c094d2d87feb7baf519d47f40618494b937e88de25378ba642a6e4c02b95574df34f596116230788d30022accd4971b012a691f29580f166e6606d161ba0c64704450bcde21b35cdb9c4bf0c3d99b3e9b758eecf14a8f54fdd195ec3718f4f9247a9a9208c58337c3469dd01e7d3ec6b8eee851590a77917850c7d69e9c37c810aca9302e024be48cd3a97f4e35a05bc64c99b02d91cf1c9a3545b88ce85a658df0a1c25b185d464997838ea76b867e8025a8abb571879ff36c2e6b465ccf49e07677a72656ec4d55adc6475e49adeb6fc3fb0dc6d7aadffe741d5a20be59c1bc7fb4d5cbb1676b78735897568ad75812c371bcb91974051cab5ebce8f12a016ebeb1c6472390cdd2621573e45923322953262bd52881297ba762b677039136daad93f81889c7d59f85d1e709223e9d9818bab70dc9899a390054562ce6852741cadc4686dc7dd36d34f3fd6a5993554dae3c119e9b041ac82a59ad8dcaf70262722b634e77b9a5eaab545a7600e11305ea5a3083a8a2f314cd33f5367c8bdf49b3349ed285e708158368eb6636f8346bf1f58e90335a34c0dfab78a34450d416787f35ad25ec183f17fc3d268d404713255ad0d0ea1d3986de561a9486ac8b4b43cd4eff7e12eadc9d79977d94dbedd587763fa6da6bd1be69e618330a2bf6c8a4bbad8e43167981f579e765feb469747a33d46e30e5268717761bc6a09672a0cfed4e3dda5ed53712712ce9b175b96f886a5f2d7db743cbbae6e951ebcce9ce3c14a97c30696ae0fcdb01a033f48fac0e39043aaaf6d930b5e91fd3d0c21e348efdadb1786f08b210a0752c3b3d3982a0a5e08e138d241f465fabbc29f1b676b3808793cc6514d3e4aa80c88df0905cf648228c0682df955411d3d6dd25d36af9e83c8853a5c99b27e6a3fbf0964f1612fdf81838eb449edb2e91cfbc4953a1feac08058efdd285327bee2418cc9ca3be66b75e6585af36f37f6dd99a1b26cb02e1fdc860908bec8e69da22372ce69c443482ca6089161805536c1dc775f4d62745f1c695394f58a2c4115411ce0bdd0afdbba55ce1a6f77799cf3a523ff04717427f5a011873bb1500c91248d9c79c670a61cd00cb36a30b32387ead7c04e4556398db945b0f447852df2dfae8b26105d8a51bcaf28f2f8493108fb1835de7890f19c0f349a28acb9babe62f82cd5bb4dfc6abd54448656b2bdb1a5f6b1df756de36b8d19b4553ae3bee27e57d9a7f61f7856a4aa55c62f22f4be48e3a8bf3b737105e83244ff39db4547a754d0f518abab006c0a5b24327e451bc24d22a5dc827ef37788fb446d40124ce24f36b7d2e0d72139cc0f901b1115529a9fa07feec05c581a22b70971a72de621f9afb47ebeaa12d50a149ec1781adcccc60e57145b8d881f80e96207d51f55972718804ea1ea8fb6623e5b20e6b233906700554f4ba4e2b1c39246876241ab8077918ac0e679418aec63e512a163eb855e705794518738cdc3fe943bdfc0e2c0e702d8e8e8eb245b1ec632b705e81001c54d7e675ecc072c2a7ab74293a7232153f92397b2498f5c817f9943b1332d78d1aaf890acb1c92f2ead38f5d0d6ff6ae1d47530c12fb9d26deece2ac7b0665cd3e37b2c4dcc40a32e61b836df5add26943dadd9d5c2f4752be13ff2e2766071f099c2166bdadb7fe3a6196b8afdba5ef9c7370fb8440189139308fda3eb6e74ddb5b63880e5cf678138a10c7ff0d9f313a8eabb8e66a51150d3f2e759f9463126076e62d327d02ec4116fa9e45882b5945e2d2a5edf1bee14275a105482ca37679c3968daf87a84c092c1595272a2d0678f25aae8422af893e26243be5478b275d1a7fe0c0e547823057d346bfd37946968b08009e1b31ac7804a8ed141c519db0678142a1dd397660d9fcd9a762b369b2e5fb9db047aeb09339db3fc484c9bd91f956fdcc1b4ea22831063f289a0d06b5d6df8f618f393ebee743c7833fe16cf58cb16448ab27e11a6ce1567aadd3c9128616252dc70b4ea4de806884ad617531cee0a2052cf73572476eb3ee2018d60123a040d995b9611816f7549206f7501a33627c5834a9946ca5702c69b9903b3cc7541cdb99ae5891b88ceed833ac77cb4952086a98cd2983a5e21961eaecb0e168d1fd59bebe44fd6f84c6283f843668bab2f37613845afb1b8e17a08b7c0aa52b06dd1d6d42cc96a93f9db00945d767bdf3af16a7d41d7caa2fd35d489a5eda722e2923d103ba259c89eed16c5d97b2d501ab153004fa290e2c24436af52211959bbc4b238cd70e585a9e77e314283825c5f2f397e10237cc7c6f3e9482ae52dedab0e241e667789c8f7c5edfcefea5f02707194582b8bd6116f41033522bf8fc73e18a90ff50799bbc8c1dcb0ffa43a1daa9ddc7cb122dab787704fb2d5f894df179edb4c84e06bf9e06c4b522108869ac7e12093b207e0e30d5321f80b4e15b13d336922f6531644c3ced730f78514ecb433efd38c8f8163e47373942ad291bfda7bd2138a5d5c6e26f29d31aee40887fb7b092b7c70ab29a78432f4cac2de927dd420bc2918be334bbb37fa54dc0cc27dc2c2e0608937382d7ebd4dc7a3eb6ab01d01bd9a6298f65b8acf67bf56cbb02704b9cb5631dffd5a2f1f4594e4aef0eadc054b3c7785200cff9710c31ad14c2b77f1711606c1cb01b49c1d826ded1f2a7a5634cbf8c0484a4dd7d407645e8200d7b470b5aeb872df264be5babc4479ffc370288e19b2d745237bea9d4520a09cde29ff46322d3d7f18ebccd322be777012298bf14224742f36d1c8abcdfca9b0f6c86307be03163b91b59bd996881a0ffb1447226141a924885fc3937c92d93f98be0580de7f097c74eb3a91514337e63567333584a00e07ce095efafce8b8c3ea4cd00b71d92950056f702bec8eed7800b2d1032592623e6455b499366059fe0c95eed7e9de4165d68ee5f28dc0bc3ee029d6055b3926c420233704a65e30f8f98b1e94ed69017176a08415b6a2e162bb96adb8adb5b05f66b1c44f6a9c21f5631a4b39242dcbbdd3fed4375ac370784d96879ef01fcec5997d4eef037f97ac853444f93896d4792f501b530bb6fe6847e8d356caaa511b6b22342bc3c88da8dcee7f6f7c500b1b9310ff22d55d24804cc34a1202399051e5d6865f1fe3c8057019c6e8c0ea84f93c64fa71c974a49ffa10b455ef3b581d0827a4f2807da689e1252500e381db18a362e9e78f4d1c6fd89acde0215cf6b953b3083c2a571ceabef0482e1afad10bfd45a21f06d6aebe1c7dcd0c03a193b9a8c849575e478564a234381de332f1a71b391ab559cd4ab4f6c4fa810d02cab868db34f30cba6bc217e40f76fcef98d189d1eca4cbfd39d8a7fb12dc07540bdcaf2264ec2b0af39bf76ba1cac3b8e8c41c62d8f4053c6d57774319615bceeeb3c59bde9142b6492004d3073081ef3ae45b08c10c4a62a91d0f0d38efd0fa16d05d44360904da963dcac983998bdafbb19a3b1d6a8f46f934fe1e709664b5691023dcfdff917785d559fce95a54677906aab899331968ad5ab7da9cecee2307eb3195d278ced8e5263f6b08a3d93e336e722066b2eefaf0dc35c3725b05671a560e6d8d5a530f7f075a6a25d564ad9b31426d3b0256a0a222ec090a0cfcc571978f913fec6da1f45fbdd1cee814d57c6cfe8100dff58aafb98f4fe49387edd1124b163253fccde88e3a391defa0002b2e61ab4049610bfb6861076e4e2144ffe7874edfdd72373930b26a03abbdd6fe6a280aa71b3bb42c1cd59f8dc9e181da9e17aafd10686bb1741d886fbba6612e9e4bba8be86b8df6ba106c09edfab60471c0d725b340538754afc4fcad64e9eeb26c4850a3fbdf5c0643fc83c781fb93783b0328409de4deb624c3acfca93bccdc5d0ee6ec1ecf6ed0981e0f2dbbb8da3a5995261efd749e03248e9da60bf7d8953e62218d5948f096d8494c14952e2a807e699ff579c195ef9372bd57632901bfc119d5cc870913913042023cab4c70bac0b8a551031e38ab354f489be91a22ae3c69dc42eafc8b340982d6a723e50a9929a45c0a66bac3fc5e4eac5cd8711b03514043581a7f2e446d232532df0f7128dba7ca5060935045b6045eccbf8158df9716824ba3d2d8774f2668c54ca0d7a485fdf36f43a4ae7835881e84de4b20837ecde5b3c6455ed2179b8368b83cb9f37cdf9916cea807a2add05b756f8b087d424fb88a4e11ebaddd13db564dcd7e9ca6d5684b7f516a8b2e8fe93f5f037e6072f2f717b23595a2b0055da1ddcb83006350bf6101e502efbcb90486215d1805142e157178ea2cfa103565e32daa819592053d0a1b08221b4fa715da89da815e19b89f8ad1e1e85faa7976a5955ba1ed05b3fc9c3c17652dfa2762a549acc689712bb0f160292abe555c9cadd9e7f0033556e9319615d7335a64b9ac1f42d14983de11eafe46ffce4d2ba926f371d0b56cb7115405d9e8b4650335336ef2ae767d5a9dec7ec91991ba054a3e6e38203f0404a4dd9e9f7d1a4f0bc04456d793b4e49391cb69a66821e18309b3fbaef4cac51415067833d2d82675123a483f6aa52189eedac1b4582aa5fb7183c07189a58b049fe6845db97247b6d50f8f00b7415b1018d3dc4436e423b06f7de7022dc455d7d60de2ce3a4599df87092f281e1e02b4042efcf1c7b6aa57edb2e14d500c407e8e774e6ae104bb3ec7ad79024cc41f5e20576cf00dc02cab64948ba064a2d7306141ae4121e4f9106d107869c7d34e2012f2e9ed05689bd17e0dd1d031543dd58665b4f01a0a9ba1a459b004fc3024cf6675ab371c94224509c919385befa6e8e6f29789cf50cf200fde157dd2c619c7c1b428baadd737c8d67e0ec16319445b3e24725c3431de91a7f1a58599a44e63ff9aebfbd88fd6a08dabd396735b06bb9b335add8ed8d087378075bf32f34a41de8741e34a7d4d5f66009ee7f5f9a13140cbd1069ca3250d90b2e3e185af881d17db387b1a13e669b2fb82233d864e3f7b911257e897d9acc35573d312ac1831fe520e9381dcba62fdd495719d2e4775c190975990331b426ad3dd839fab6bb4178eb5ab906838ca229497f5b96fad812c12c04cef4fc193edf7e06124de014a7065b25d11d4442f46ac342b0d30eceecba8ff6b4fec3de1d6c0291f468a78c847ad69286b5c273d0996786f7e207e527f34f63223571381236d4381d9413e1e4425d84237f9c829a18481ad7b8e9e3ae86edaa7559ef8d73a7ec48e1fd26b0f5ec4464430896c50b28d52ecb0d5a30133a831164880912ed5630bb07ce1ecda585e87fd85672afa56615959979a9a561f06c4b01358088969be8761a1e55d708ce162589f4583fa82d923c67417bb470499ce19b8093bc16e031da0c3e6b927709eb341937331dfefdca2dd0895b3fe9c17f9480bd9cdb356079959c30cc5c4c1bc317baa45509e5b339e10dc1f97af87ff6944618a5c2b2068d8877b1ac76933e6cf3a6fcdffc4a62bc8dc4a8073de5287deeacf35ce09afedf8b7860e0fc825d02826842ec94b82007d406e09e0d0efa6feac122fcb927c42c72346eb28f9792aac38a1f0c72cd0dad2eff367ef690ecb519dedf66232f02aeb9b8aee9179460d17a3fbc897ce3d241ada51888f6a7722c549ba0719f195d2b54ef7e93dc181e049e2b6576dffead53de673f77def5d370dd83f4f4e23050351642a7150dfb87216a008a67a1fbdfedfa0918db057b220e6d988d39b1f28f1c89e6902b72080cad9a138cfef2c9e64a25e1099ed1db540d77b3ac2227eeb45614940e8d6619c05a1acbb2599d1f7dbbaeb6cb71e52b31ea9d14c466ef0a793a3ac05cc511e20e928f2b13fc0d69b7838ca5336f9c6b69f51d590335ff8fa7f21b24fe9c101c16e6d988f9dec72e7ed4e81d519d5e66a8540f14589fdbad1c3cad495d4918eb6317b87412f9ea6e50706273a30f72aabab3db8abcc350630b0ae2402ff2d3986ae8826ecc3989c429a4b23adeba08d69b8415ad3ad7da70e606666c2dc2807eac2e13b897a9120a18b5f35019089e4362b0e325865a4a5554bdce32008f79ba006f7ebbe5f774ac214b6e03a2132e4b27d80fe202abce2d8931150fa20fcffc7d37f4078efc7da1e94e27ef50de8cc1113c4064562668a7cfe6670d515833c572a9048f0b63bf02be8ea54731cdb545a760d0b17f996dec34025399e252fa0ee8e0608a5e794eb3ed1e10a068f86a8fa183bf988c85ad733a82b90be390f8945798d6f1868fd0bf1e378c9ec95bf28f7b1697920ce6a25247219f8c170204cf4dbdeb6087a95bcafeb03ba36bc79f1cf00a8ae12c3ef9012068af7d5bfde528fb1d874d87ba8c33f53decb16260e583091f8dc821a7de9445f7d6c14e2d88e0b15a2fcafffd33175b382d980ab76f64071bbc4a7c167e499f71319b7aa92d241b35749e87b75f966a0c8eab3fc6d37854aab4295cbb897c832ac12b5a3e47b1c34544a181e5669a8b3aac763b3ac0a95c63d0254d66c8ae1a18229e2755b222d6fa51d932e0851809cd9364967d68777269d7d9e1936b567da97fa4c3c8b915b477ca97a8de35c7d471ca553064318adcac21de0dbaaf448e962971f2b8359cb5ae5ea5a180902b19d94f66eedab82de0c54fd372b0e813cbf1c4633e3a36fec8bb40063e435b2bad342479dab2d030537ab5cbc2906aef6347e02624c716fcaf78dc1aa70651b775865777f21bee40d437c016355981a0f75d0299885c5054c7e58e1242af1b40c4180d39655cf01a8c99f0ff4d147f722b0bdc61baa7974872e2bc2f728deed1f577fb34650f6d7e2ec28b858c746240fd829a5d295ae46bbb08efb9023224149012e7dbd91889063ccdc3c6d15b492d06d95e07a621be825bc57c86868d85690896887d81d1525576dc482ed42949319589a69d06eab5af6061327582f22fc7382e2d3710810142adfeda265ca5db2e67517f9aadec5a5fe5db6068217cdbdff979c6251538c4061c36c04e94fda681499058a29942d784ceabd19a1eff79f8993be3428866800f5b7f7a91a2c34fc926bd7604867c5e317d4c1aded63dfeae0f4e311c892bb5c57abe042c731509fb47c7f5c0fec25a160df99a00851d02f98bf15193d5ad99c28e2d797a3c705b11c72b9ce03aaf28e50aa31f983f1218583d3744b8a2b74dfb4153749e9c756241a9663a2e1a21d6806c77a180905d98462466e878eca8eb2859c1b4371d4e0cfb2955eac228de9f9e477680771b70e4543dfa08deb0fd5d42b1f27f2b2c9bc2dc000984b3af79d88879449e03c5816957edd3e2f64d0226d73f87c584265b6e41301711af64b76f01307f06ecb7d24893d0ec3b41b3c8b278e578216b57c444a0f493ee5da83a692574ee966cd8f5a05545168c4c922d1b5dff3ee2d950f6791108a6a20e776b398c39b941ba1328536ce87910b68b8b4aeb0d00359a40125f3617702d1700fa6bf4ed41b49a77700f648d75154a515bffe43b1c8a2ffe4202c3187af07022a4a7ec54d8316abd057046b4341ef7dc49cda87395ef965a1368c0e062dd0bcfee817dcf68a985da63ca4819f8cf0ef7122d5bef4c91f1a22360e465d7c7404aaa877b75a309ed5a603af9cc0033c45bd86a7305304f0aa7f8d4030ea5e6d21323e8b23bdc207a3f579fd66aa02abaed356f8e2ac7675eeb9dfe7552798c651744a24115f52610a423622db4a201acdfeffff37d96defbdb7dc5bca94a40c380ba30b630bb145160cb7d8a214b0c68d2dfa80e1868a2df2c0d0dd54b1451c18b3b1bec170d3c9bc8274c5e251c65aad58ac5514ab5514ac9a658ccd70b596a6a3b9b41dedf5ed5ef3edd4e6db67c8387d3b006ebe3d06ceb78350df0e23f5ed30aa6f6f597d3bcb65b5be7dd3f9f619c4b2531c0e5114bbe6a1a6851487fd07cd339fe14ddb344dd3c070738aa2381c2a4271b8088f505b56b38c919cb0f890ae6ae6595665652991accc413dd835d71804691e9fb3cc6758bbb225997048b656414425ef835d7ec55c7a3a601e4d10359e3d1da873ec0551e37d6c2ebf5eccb34b7fe3910511957c0da2c657d047e6f275c83e0341b0b16031e9123bb1ccb239e774d9444a1d189e25c25ab556d5aa566bad60a8e964576b694c7894b196e2d16499c5564ee800cc18c3628025815d4c090a6242682c81d3cd22bcb0be191147d4c5219b9883fd03edcb8bfb93186ac7e893ed88efcd88186aaf556b857a89953bf819dc6ca608f8c5a13e6142788747126c0fb32cf30cec5aadc59cab97775e5138d49102ffe211c63b2b8c3183d84d0becaa9b4c22ecfc90aea6d38f2b257cf1a1d6d23eaaaa606561a75cc9285c72b54357580d75692dbaaa3e9dab93e79c7366ff5daea997aa9aece0398e99270432fbb30b83c53c668d9d2e038f421ad88943291c0efbc14e31074b8f47fdf8d63bffb8c73dea9fcb92b6848ac08a488538c2ac10b3a03d89da1651db421c7521e6905207ad9137b44b8a17fae0605952c3b22facfccd3377eab1d4a41550a506f5d3c1b7633ea0b3198b416b624845f0ed9c8c193838f186bede57afc76025f87109823620efb97c71288a5462670541d5e563f2ca30c81d10e5f978648b1680ae186a5fe22e5d60f671758415060e750d879aa3b41796c55b3cd45af26bb99b4d8b9afda3e166fa76313087c18647f18898434a962ce327466be5c7a391acd3ab2488a03b93198d2ac55379493611e8b8b27871d1c517becf430d0b4eb4a060b02cee9e7f7cc5ebb7024629925224451214823fd45aab4d53a1348506839e7e37673a373d07780ee29a201c5a4511068c55df2ce3aa0928f8d892df5fa8e09127aafa51558514ba4d53a19453b9415454545454dcc5a589b7692a1cf542ebc3fad2395944e7607f0e87d5985c18ffdd2092c59a3734263bb6f3cec276ecf16527af76d9868fb09117eb7c86d983c004b51687341d0020f18117bebbb0ddece6e5ef82edb2f6c252ffbcc5593cac2d2cb5ae584b6d34172c47a144b197be9c9919739a8305f560af5e19c452994f1b2f6f5821d0b22fcfc00cd878f62abf6b7da9355441178fa682372c7b8bd70020cf2d364a396d6a2ed8905b2d8a62bb864712f4219f467a3b4769138f40d2238fa473101a0587e88ab238d437fee5e5e31a8807ea9f4780829f4720b648650bf673155fb99f3ef4c1cf1e0dc700be1e1e580fa567ee5d20ef83be074a21c81b32baa25160270f18d66ac1d0fe9602862fbf81616d35a9b668b6a48b7f6ee8a2e9bc5c8d894b17b623c5523bf5981444dee444243ed8e2431acf32f8283d1ecd85d6e251385bdf1e529bef90ba5c3c0a59070a8f428aa3bd781432eae5e9305d823f48c7e1912903f1a57a46825dd669abf91545edaf151044f0a1d642f16886d8e93f6fa7af26b5689004f727a9438b372811479d8786e03df8c6887c3b56838defd22b55b019d09881862e624a3c768aa1f6ce3cfe9c8f792c4d8fcf0ee43b0bb6250565d0a4a02dd1ace0e8cb623e79d497a0d6dac256f7ef32eb092270f1d905615ebf7f7a34987f340cdfa939e7644f6bd15ab09343dc50e82acab4c71cf2890db596a6a3b5e2670edac1afe94cbe1b1479379493eee3912c3cf1b068c2f6f46e9c8c259b3d209051568f04f9331ce69b7d7619878b70a81d474593b0d6c91c323e3a1873b0c7217c10d9bc7cd37e33ff637df476487a258b935d161673500f30e49720884fcf40be5d27958f47b47801f751a5448bce02c7177bcef3789ee7452c58ecbb52a79fd257b9e2b9ae53b9b1f4dd589294fae7210d9ec147e7e47763892f7ff65d36714e5c1df1e4d9a3e92b586c94694d3cd45c0c456a3103996f3f3783e40c9b8c4dceb20cc398195b61661ae69a27d19513d945889d564c80e2095458211f8795ce5c99ab0c9d0c67ab9bd8506b318aba5ad45eab7685d542bdc23717be9da3abd6096288da303dc1b4e26d78345bf1f6aa49b15469ab59c74a1d1ca89f39893938f0429fc4d11671c4916848c14083d0cdaeb9677b28bf5efce2174ef55a2b0d2d33ccf8e8f1c8c71cd8cc391c16c3300cc33cd5cb772be690efa9be432fc926828d88172fd82c46748918a2388cc323ba8aa125a0c061331b73c4c7266b56f8fe9ccedb2b681644997679bb0551a6fdfb9cde2234f0818d048bda312e71fdafd452582fe5a2b5a48ee8797860fd43ec746a922685286ac7a26671ea1276d25a56b0fe21a3b4567f4c8212d4fca8aae28b0f99d5246d8914b557a13af976ea9222294499c6300cc330cc35294c8d8bef896d59c7bdbc942b2950a87c3e34489cca0d5244025a5ce50651695151697112dc28b1380b4b4b7596bb856f0f63f02b86da3fdfae31d1745242cdf51f8f028f6142987453ea1af9456bb5a89d59e2fc3e2249620c9f8f48944041b55aabe70dedf541b139c150fac7556e8c22cbb9e7332d3940dff3158fe623537cd0ef3cc5e3d179e7dc0c32fc8d3aa82bded01eb9149f612f35c44a0f427ee1a53c233cfa7887da17d8dbb5292c9108f8bc5d9342cc81796b3adf1a16df120c35d7b79605f55073425af150eb02012a1e6a55f8f6280f60e325150f352c7ccf9747782d087516e77058662965659f33554402586e1012d8281521bf28e510b1b151a2446c6e94e88cd2ab8a0ad64b6ff168247b3441c82f1e9b737268ce7010f28b8f51869ba474de659af25214c278f66a3fe0b37f1807218197a22440e83140b8751564c843a18dc722894edfd0d03515a66043add512c928b3971777ae467c79e6592f86798c734e0cc3b03927c6cc7cc26e9a144b114bf1204bd8e90abb793b8d8247d5db693b55f26df398875a8b6611492bceb1338a6611a388c1907a418511f1dd4d0575cdf0d8dbad590d2636d45af1dbc32d06db0a482a1e6e466c447cafb40f8ce6851590556afdac055fa416580ca2a85dfbd4867906a90880b4c2650d5dd74b6c27c30cc4cb672fcf37943e8178a9a00d54f8f6307423496b45514311e361e288ae38d44ea1a04f9eae78445df3475a93ef5662c3c95e9de37bb5967635261aa831d17478c460389fc10a6aad0fb5d63749967a89f53e1eb121e22578430c75d1e3e7421d36597a3bea4bd046bd580ca24c1251a67d5e4c8928d34e2f2664477d06b1534b810993a20d36d880c3725cdf14a13d1da2132a788fbc5105862a3ef3f0000a53bcc603fbead26bd4e8bc8647d351284434262c6a177934d6394d47d349f1cc6a3a1c6ab7576b71a8b5160f8d0987da5d29d475998b286aafe1f598efed90cfaf28d3ce5fb02175694c3c6fd75a3cb2deaee9b867effce8791e48e473191f18822ef30ccc40f71dd889bc5abbd087e7cecd3b17793bea7b2e0a6288cf5ce4f5989f813f6c9e39773b90ba9cdb7ce3b6cd6b783d3670a586676d465dceb947a3693202e0f5a8600c0ae525a4ae6fa72e1e41c16ebe31211c6aafc1a39120766ad9cca787d80d1dd334497203e82858c74e4de21776faf68682d589a26e12b3a2a85de788131b7c5761b18f2a2a5ced5a2be6c0be5b89ad6068f23192a84bbff5a337c3b1495496fc2387c34e79b15394696f2a6c889d08d0498fcef1e5a75796e47d8939e2c74a7b0a1b6aad885d2214ec644fea793e1b3f292a31aeb0b4b8bcc0ccf08fe9a30c403017201c8209a4d99b4508830434afe0109b6b3eef945e0fd53770080c0537a5da2ccb1e4ec9f1e3093f50d26ef599aeb12481889e03a663e00f1404596ec1451a1d79522c5b599918ce109c21585d59a9bc31c71d7b1e0e0ec37f7cdee23fa8c370e9d180a4f7d0e29ff700c3a9470f24411e5afc731f60385551f1158fa5575863b80c1000aa1a035c812e13cb288c54f19006178393d17961b90becc42f0c07d8cd0cad4e7ef16b06334fbae21f1356138b986c4fc6a9ac38751f3eff9c823f727a500141d2557e5087402c5157710afe1822c70715f0c7e7d47f80404a3f565cc57ba0aee2d255c0217224d8838ab38043b4b88a0fc1e23496563c9638b9b90ef2379a4d88e68aa5954b59c01f2baee21ff823a7871510249dc5575c05fc019220880715ffdc071650db5901371bf003295827145c2b976bb55dcd29a535d6bac56dd33c9a9a39cd22ca3889324f2814ea62f11667e6361c60482abe05e7d16cce79d1938c25a139760316c3b7634bbcf4a6331765940df22542fd12d92e91cf615aa2d77138ac565b6e2c61cfaf26c512efd4c080402cb1be1d5bb5a8047363c9e3d1ec1024486c5188a9be9d050c82a51ae3be0ee662382d7ad921480b185b0403c44e2da238172441d00e9faf78fc1e58c021a8abf8e7b144779083a73d8840884d87b800c7a608dfd5b9949822a7b019626333e47f65c5a3a9bee2f160c654e615acfccfa9ef40a3821570e40ded5cf8f6272e301146f22bec9a2931972a2b9e4a8ec761df7d3c3a10f1f59a474ff31966e6c95cb76baf7061cbce502ce7536697e27839c4ffbc72b66d765c125a844358266536e7cc3210e3300cfc80f90052526813a2cc0006e0d89c9181a0d1a4c6005ee678e9e08d3922cccb17bf5e82a10de7b84b6d5c8ac3cd2616b45940c75dec041994def4eed221bfdd9597975fd30a36f3103bc507622426993c6c38738e09f9edd68f5af8eda67cc4c10a360432531f3d0748903bc976bb9f5500e202ae8f2f2e1e0b9252bc534010f399761cee00a6570ef3098640d8a0282cacf422281b521c90067cc40fcb0fe9aafee7e30571fb27156cc828282a502911e2bd7723921eb0beeb8f9e03b69f3ec3fc73aeb036598aa8914172a4d31bd4e0e995ac7a85ada01e984f9f20900fb721bf15f158c16dc886c3c3ebe57261a7d7cb05c5e582f2aa58abd59aad4c6b4519c9d72b9665592b4b65a71dac85dd8b393b76c240fa92256a434d3cd2306a3319454d6cb239c2c6e6081e99328f86c11b4f678abaead328df4e6d248ec4c1e667730a56da1cc13e277549b7e1d09c73355793be5c502426378f06932f33499b996801dda2e84c97955120e7e1bc9c4231319f091e613e78fe334a7ac54021e6b3d3d5a6691d5885b9647a7850314c470e1c37bc7170ecde9f1e0feaedb8a4141e5cbd0370bef7fdd95fde14af37c44efe3ba68d17178fb3b7c3b9dad56b7d7a3c7630008362054e74de3f7a12dc3141d51450b8977985c55c3a6f43361c9da72bcaeacf0a87409847150e930761e00e7ecca3f8f6cd0609264919b0e26a0849be359dd776bea54a08593cc75a0dc18ad7a2f4c8620887e2f3ed91c58943f1e5ed9185901e59e070e8391851e7064a7c480333c2029f7285908fc30db9187cbb8e1b6e5ef8f61c37dca4106e4d7cfb8d1b6e31f876d2bdf70700da005f4017d0037ab5f2b0e00d81dc6d48121e9858e9cc2fcaa2abc93a3a5658d7f9e29ba5b55849e0e243662db1f7c3ac05041730a10a590a8a1538c1223bc9000b58fc5cb2f3edd8099e40f2fab9a465842559fc5cc2082455f8b9043b09219f86a77c9df75e62a714660ba7c8d49973e2ccd56ab59a73ce39a7a76b81c5d1d19a4c22b0cf4b29dd6321c13961494811fd620774e7311bb8a4af56d425846c59dfc2089a64210a965ff3062c787a65f4b61b0e41c186b3a583489a2f9f4f9cad4fd371d15794214f42e1587a0c56f3e9479e7841a524f521b37a8a1697d52a8a1665556185901f5297976c3a964d2536a4385a91148f360c87899a9f7435b58a652f313a8e73d16ad5e6dc6289c3ea67a1f442760c64c29eb1e748f13073acc5741565526eaf628e8e712404471d42c89731e6c0b07abad84d07f28e87ac3910db39274b118b9f6b57d0b4a071e15bb9a01e1f521728f39cb82202089f135744dcfc774199cb1b140e2bc40324489d0a1b52d734c24a506b4d6131f740900786e0902bee20192205121c27dd94c29636adc67061bd3c01c609763a07a309763a078a1185a531000005006430c14e19339e98e12bbf4e5c7009a00c4a908146121a3324618618245f4cab96b83e825e8a86d091904825aa81044b6b04e00801a8c10835c81891b1a10836dc40841b6c346143002901c0f0a60f8000432040018450000304c1002326462420906efcc022807a3b7703870f70e4d071bde9381c00750004f4000109e0410266727846bea4d0c57b3e3af745ac54d5d4fcfcd2122505ecc04e052c40077676f6058607599a3876c2440558cda52462b9183230d8e087130073931a931c48764984ca1d0e81d809bb29627df0ff205d7306431ffc123bb13348847a3da46bceb163f7078975922fe68339205f93376a1a880989cf5ac9e8e1c04a67c69831c63c0c5b51cc319006e4bfe56a095ed40469675567ab6f90d34232b13dc482a40909c73cf3294d3266cc1b30999e15e1118719eae6060707850ab193d60ab11312af6a5264828a0aa69a527b26a43d1bc219134698d4b56749980453d39e4591b19a144b59eb3b2a597d63270c07dca0c81246935d1cb64e1b529c1a68adeecde78d952e7d4a9b2338d46ef31e331a70e006862f33b0b3556df5cc43465116d561e9c8c066956630b8a8b55802e928d8905fad29c47632c829579ca5e57315296160ba6eb6b0aca87c201aa16fc93c86574d6b45ae827aa0fef9471d48496bc51cda6b9a4b7b2dd1344dd358d5391c7b34d5737edeefa712168613c988a844279c30f2f3aabc9438ec4cc2c2d0618f28c14874e28bd4b72c851a9428450f9b261cc284302996546e100ae6d4ea1a48713894f9c7a3c9b24f0ae150e884c371e7db23bf5430257df188a98bbee88bba2814ea9af495793c9a393b57dd3eae90eca8aac86176c94d4a59bc85613cd4ba50f195093ecf6fce39a5949ff56824330d4bc94998280d10722683e70c28dbe72a273b616067c76058a594d233c9a482dcb9ec188a959f4793798498efa35f8213456f90223e1ffdec52caebede89c412236de5daf03411f8f646183f9021b62a75790e7fbf9beb9c1f3b52f416d27cab8c086d8e94e93119eeff798cf6964a6befd82718722a4079e7d22315b6065f4d12fb91eac95ec7a498b05169461051624bd0492e00efe0dcaab24c334d9103bc570f5c65a130db443bae69a6f5eb920f473971ccf145e9e1562f8ef36aa7b79231226a7ff6eabb0ae9bb09cc624cb9c39d39a70a833f668add682d59860371213c29f8161c7811d8f3667679ff582aac787e1d170bd1b6a83e29e7351b09db2a580e164ec8409c16e787ec00e0c6b8c8f47b4e09aa8edb6121b3f3e31849ddf380f37cfb01376da366edb368ebbd88d96691c487b4de531385560d933103b71885dc34e5a0bbb6114a3b01bec8409c14e15bb01c1cc14d8905f2f1f574b98028a7f3b020536e4d7cf11e64ca0503314c19138313c69441265cd8a28936d613306e5100eb5bc9947601906801997a7768579025b5ded9ace0b186238ce6117c6cf2bffbb6c5ac273b2e369021b4b7205489ab8c24d4d29c44e196b4ca611563a6374353fca62140e8af38ff5201d3ed64bd75a26e11087da555a44013b551df8c0ef12369cec26dbc41c3ee4b74df1382d73be9bcd130b821d086ea083e0c4302cc3320cc33070ceece3d1ccf95da9633aa6440ce20ded1c484f10433d8bb0d894444a605120e920e9b1f4dd20427d867996c0865acb35264ca2f29b9c81aa6fa0eab144354df3e91ba7cd39992536495029aace6c66539bd99cec4af2c4875a8b3af990ae68918add6027c64e8ce210457dae2615c0db470620808cb787dacb060f37530d0f37548c871beb794767b30980871b0e0d1e6ee1d6bac1c3ada6060fb71b91879c46018543f4c5207579f539024b5f995722ad26cdd0241ade3278bbb6d324d0dbb7539364789f6293aedbf0d824f717178f4d9ae11e8f4d02805b8f4d8a01f28fc726c170cf639360bcf3c86d8e9dd8e7ca1c808fae01aea6a3b9b41d500037b6c80678c38d2d7a013fd0861b5be401656ab8013b2d6a9555f6f2f930c655e9ece99992ac15e7cc3e9c2a19b39984489a61e21014d29b58966559c532ea7948e3372e838056c2648c744e3979bb5d5bdffd382c758e3d768f8679c8b7c3db57ee6a3ce2a7d06dda709de2def554f1dcc59e13c502082086da7158cd87d8c8c57718e3054bc477788306233c019134ab13df1da3f0ed5c108b39e6e18d2681ae1b2aab971679f7c5f5dc9d9fc25d6a85f7bc9bf2a426e5c66f829dce1e8d05db4117948e71d19f3e23c9237d429971ba334c3c92249f201b9b9759e3ea696a56cce1bdf44c098fd8f9a5c725155efab7a37ae92d960e67724e6c0c9498178fb8499383e172c1707508c3d56a52bd6951fbe9344f9ea7ccd3cb705530b4150c5f3cf06686c903d650b99ae460f82265b8625c35a2f068585f6315656aa862a0c4bc625e9c176c0d55936c58c3f5bdaaa1f3f1b0464b82618dd57b60802ece5e59fadc189defc678eeaa4931aa1675ab6298f0087bcee74b8b9743fc1855f70efd8e59591b234524c9289a3d6358312d2a620e253cea26312445d4d158c41bfa63a48823194393635a4d6a8f61715817c39a1e4b13743117e53daf0e42e15175f075e57b77cec7ba604190f4aea614a4ab2991c04b392110d3e6a76f3a4c972decf7c26991caca8379488373445d11f2e5218ddf1e9ba1d3580377f06b9ed16f8f81c2c4b7d370a26108932217315178149df062c8f72ac87718f3a2c1866f421a4c588d132e287c4883906f2d63192e1ec1707d7b28c3f52a95287814a9f8293e545112f324c61543cddc7ba40e464fcff510cb9ee9e1baf3d4c76e2cb1c7037cea2a30d830c67523c6c523f6090a311f7c6ec77a9ec118178776906007dd8f1e118c9b18e89e1b8262d95b95040790e9824e1c6aa6e00fec20246e649ed1cca9ff40a78a4394c6b8688c8bc6b828e80432819000210132814eda9c30e1cc5c61c1862aabef1b231c402690c9c5e5c423b61f8face0052a2b1ecd3081334ca0cb068f15a4473906b1d7effebb2076c932792e88c11df7d973a2134e8af039d1092725f8ed3d37273ae124078fc3caef4ad47763c953bf3d1a0aee009fb31ad0c5334cf2865e624badc44ebf11b3d3a41b51d43e5551d44e43cdbb867c78030a48de06e698c461658c2be668f9ae1f13e5db77bebdbeecf41b31525eed79880da76ade58ced37518ff04a3ac894e3c61c1d730d2841a290e750dd5778d540d23df0ee3e2c02259a39a2a6bade74b6111751d0ebbb90c1e0d103278349d7bd7fb7aa3134e56cfdd6c324b20a66f0ef21cc01f553870a81dbc11e38a71493a9fcea069210f7481aeda9a97b3219fb3d17177fbed46279cf8e0b5ab0dd93c1de6f7c802c7d63c4172c602bf9d6fe70b83ade15018b3c537c87961a3135dac3e04992a116cd8e17c3ba06bd5e1744598840373680c3b3f1d862ac605babe79d04a5325412690e9dba9bb9c9a844d95cbe9db6f88714d558cab455c0314d6053bc3d424ccbb6780375a24061bc6b8625cb3da70f351862c041248d30aa8808b3442edf513eb6ac5bc5e20ba671a215983e770d866a2532b0c73e65a9dab5c19933ab8880f1de42d843cccc7554bf55c2c80ddba1a3a9fe11e6a7866206a584033b121a7628ee6256e56ac1c781466aef9ec593bbbf252fd87203cf099c78f5e8fec43209ff9e0d782c83e732e879b4dc101fe1ce69441f4175f7c71372f2c919a9c0c54670f414e06aa837a60ce8e8140f4679d0eecb5bafc0a863ce26bc033d04c9e2051f30c827490bfb9fccdb97982e7dbf2d19338ac6449253149ca08104a927068ae5246b8b02127d9b860c3a8e2c2e6c0239fc901cc8143d317c0a1d91c36cf2c80479508e7ede510bf8242cce794e5dcbbcb415834b9e86cc32317f0457e648af448206a7817aed194e01a0ec2d73da0b59f174eb95cf9d80eff1a1e05894c238cf1d9ca67994fce6af89926b111164def3e6018572b2f601859315c66c8a9d04b92a3806320a7a258f6be0cbec8287834e3837e75998443320a95954956a08ca2e5e2b37a8da46aed0b10a1ff81ddc52b7bc672f150b2a41205581767c9eec23f30086a0f25086ab087d8a21088d07b7571ecba488fc605942dc9da828ae3bc7be92e7777685ee6714e76f2471e9f1e6bb5b6fb90532fe0d68565af36b021b3124ec2a4d2123791536ca4b4044e14c50f398a8f5cd32400f80c6be7a17dd16190e370d820a926499d16b178f499d3eb131b4a9d9fde3d9732c3a119e2a411e638ae9b00f53ece7deecc0238f4798be7c0a31470fad318020050ca338723b122f286e9e1f7fc6194bc613aff20ca4c0fb767064320429fe21fb737f4c0cde1ce7068fac6854df130aa16c0a1e9293ec37c7f60b7ce4354541c34e4a7c3b88c84189a0e7379093234fde57213222be1d60f1a67c5a77311169fcea8f615c770be82457efa3383b2fbe92e2e5360c8fee231861e78eb2fa04c7168bacb0d3bf0d65b6e28bfc5fa4cb7dc30e5430e61ae1033e5c605f088471f9f9e430ad78c08e719f76520f41694463834fd03a30fb88643936db6978d4896b879d98449b2a6a6a6c6a6345deaf0887db263a49fd35b345d729e2b5fab1f1ba56b1cd7611c77daf5dcf81e18ef4799e9dea492144d9f510a3f3d244d11993053bdb0a14ca5982d1be19095bc3c0be7613e1e61a99efb741589099a78e9ed2002eac13fb026a73ac8070a22d2792c71a026df7168daaee284c55f7b5f5a347d6ac1ae9a34c3a926c954144d9f4e60f032f599e7d16c5b5846ddfcf489751e8f1d3a0f029c771e0438e7548b9a899fcedd1c7a8736c24397665a347d7362439992291e19993b304204483ec6100341e3abf34df2d3b5e931ce2ad86cfaac82c5e6f4a99a497814324fa7daeb0b01630118a2aac246e7a46c52b569917449012e6c586dde07cd746cb2560d6c35f18865387f9a38548fe050a6c40456930d87e4ac5e6dba9a781439bac0306aa7938bad8c4915367c7940fc08822a87da45f9881686b432d68efeead5f9a58799122659eaa33bc7d52a8443b2de9c60e8a846bea2a4c760922cd5f0d2ab91138a4761c561427a15c249aebb2a63280b81c819db13a34c46b381f5080ec90cac362aa8383c925e8bf0c81fa4e004c36ce7650db2c221d92eeba1ada798b99a546da2487a3dbdac362fab8a935c11ab2f561f575fb4de868fab2f4eeff1cae8f598cf9e753ca3644f8c32b28233d820397d3b0e51b73c8aa38851ef789479bd1908c2c01d4f7f8629f883730c381ad6c3d51a3f0ad63fcc5e4dca74a060335593b257a67ace5e8f3d7b2bb11f555fc0f9ea84cbaa605f54401b2427b20158005c8c5104363acb9bd109c44697312463e49e5cd8182312381c56d6ba5203276383e470909cf8c2451acc943d4ec658b2e8e5da0fb66930a488b95bc23c5f0ab64e4883278a638f34c27e398f62bb382465bba287355e8a2c4c8d34f2882fa38cec6e0ec92863ecd7a73a142bc9fd0c9edeee342655db366d6ecc1a5d45198f3934a71c2467669db3550fa5f683744de788939da905c7af7843bb4ac9dbf8b852dde039ef08131f9df071a56af250a49e868f47a030bdf478a8b1e155a20e0a956c682124598b28a6165a1771b20fd4877049953e8fde0e1f38d3a21b1c6a28d66f1c7932c408eb3ff908141cad0b29332f89a497bd75e693ee660527c450cf79295d4db74d9bfad437ab5a638b766811911c9c8471254931482c1a17200f37530c10f4f202039ce12c525c50951770b0a01f37b9c25650b8d9c8d84ed974506bf50c307695016a31eee7a04b1dc65d7196ab6263dc5802dd58827163a9a4e37aa16e52dfa826c512a758c7c5230936ebf08b5dec629d263a3adc845d5a7b34592679beacb04c30c410186a62a8b16061bcc5a3b7b9bc1a130e693a3b661636e4d774092183004d0f0202b104e33ecc70d30327be28b538d6daee0e4182acf8e741549cf26b823bc0b4809fb3780f9fb38043e4481f62c53f97600fd4599c051c42e5078baff80f1857517118ffb1e22cfe43c561587cc57b807115165f711f605c250bf647ce8f16fffc070ca758b03f727aa001fed1aa8ae5b62ec3e854b176dbb6ad5695cf6eb5d61a579fcfda1cb6ed6437f7788ca11679377a1fb0ba742f37e7cd6d4b57419fe106700e93bb1189890a2f870630299656425df26e2c65994800b5d6da4bacbf26fd931fcda7bebecf3dfcf90cd757b52f998a322d9b7879e2485bc1fafb878fb856f0b9c7e53729140aa5aaa6c5d6776dfdbeefdbf1008f3e1e7d604baf0ebac733c3f2233f1f971f3024a57baa7375ad761ebefdb5df03fa24f77d3c55dbbeeffbbe5a3f1f273f9b563d212d2459aa0f69789462e35ed6c0a19629a943e5db37188438d427cfc7b717d830f41d63fca4cb148f8cb8a2304984924978148fa482d49754a2f2a154c956aa07dd998ea09ef85042f9f650ae647df1288caedfe1511877be46b9c087350cdf1ebd1ef10acf3ec33678c4a04c81d42518faa0df0da5cd87546148f3642a2553a0fcfce371f650fec73f10e4017388eff18f7fce1e8d27f441fff3f9aee6acb1e611f1bc062679de1ef2ae3412e251056be81d1bc69d0b78a0491130fd134120e2c3e88242910f638bfb2e3d7d7c86e9894742ea6bc9b7cb54ccf1f1767904cfdb251124023ccc336f974dc41c1eef232c9ff03c944ce83c94534c0f25923997f091a9577cef06f13ce5fb3ef73c4ff13cdf3c9a8f99863ddff77ddff7f9e7d1fb80f676936ed36a86d1294ff224515987fa2803109e21984064a601244037dfb2249928e2bb0f431fbbec490c3597b9aacf70f6640bdfde9f172769687566ae374a8600ce433b6b6cddb1bde3b1e16e3cd3dbd15f71649ddd18c58eb06d12fc41b6b76ddbb679f43cafbfde39cd9a9e3d6b5ab4794b617ddbb66ddbc08f6b0a16066786e5c56ae839c51c937eec278cd11fcee3670b9f178f6a966559d63adb958f6161af2c6d373ea6633dcf0962c5e191c7c68647fd62cf09e2a8b7103d1a8fcf707b341ee7ae2cd55b9dc38e60a5cff496d518449924a28c125146c8ad434ef50e51b38b01b9f31bf8c31690e8178fea0a628877b24c7a3bdc58ea21d86ddb7cdb36bbd3245962afa79883ab0906873924c18fabe27436736ed3b79bdfbc6e0e90bf81a1cc3ab31e1b8f73d4f3387763692e79abba428bd76ef75cf4b6cdb78b69cc832c65d566c7f3847d71efec90f15a2c4d4f3abd42cccfebb679fe793e05cb1e7ea8603fcf8da518491e154491c7268eea123184e35141247dba103d364dfabc1a87dd1c3b82ddc0ce8643b254719688a38ea1661002b1d4f9e5ba2b4bb2437dfba70ba9382af2edddf920763a8821538b9a6f0fd539ae876043189c67666697a733751d0ae44375ceb9eea6771a02b2d49d5ac41e7626769019fcb8360f617036ffbc98a0795891c8257c7b2d9213772075786c2a8ed4c1359de90811be81f06d42c2b7d722c0e0a49808ab0f6a0a27ca5c2295524ae99c9d49ea68280c832375f44bc2e07ce6f2d8481dd9ce17a24c434931e204df4e5f224809f2edb25fdf9eb9c20f18bebd3f62f8f66c47eaf84491d917628e8f1751a63f5d88aea51cf19d32826fff44913a3c36f1e38524794c1045ed3a3c398837b060e4b1414a0a3c49a490e01bf4b0e033866fff44e190d4c2b24bf0f3e2900ee921f3fdec7c5eecfe89f2e9d9f4d514fcec7c5ef6c3cfeb1385495c535353c3825263218ae2cf5c3185284a79fa6a92c788286a5f410cbe3d35f8760da42f8f0d15f206e91b1072e7a9274b5cf4a43462d9e5cc9c9320939863e5db3f3b318716ca9dde6951837aa843705e1d4889e32ec807ce3befc06993edb4a8678d1436fcbcc2ce6413763b4f5f9de9f52de33750b26b5788508240603a457e4e61a760c38af379cd8a236f900ebaa136a0b84823dc68267976f20823a40909662274037992266ec912c315ac2a1894200a5b61f190867332f39cc36155ba589fbb814d71954ef3525ca5c5a347d3229df3362bfeb32ad4238d20399d7f4a2c48a44eca2636ed7860675229d9141946173f6e3faf8bd0a9120ebba37ee79c104b9ddb2ef79ffb5deced8d5654faf1282c15c9042725b3b88a09603c301d8babacb0a655ac567666f087cce7af64cebe92b9bc3d5c3c8301a3c5b3eb9279365b5c32aebd07a4384807ce5bbc05fc2166309c7d6545bac010a273217cd4b72e840ffb9ffb7879cfb90b6af1f829d90a8bab801295e2114b986512957119976519c75d999228c9844449946442a6b839512854b7dc9718994c194155d44bab38146a222c95a5c86219b1b78d708428838428d349a687f2f57abd5ef1c84ba75c5480f5b41b44aabaae3a67031b76eaf336c2a42024f0d24b75186729a2cc1451868a28a38404ce2d66610ee33f605cabdf4b6ce79f740ef31f301ed7dc0718c77c8635cd855d20ba6e6b57d6f488497e90b68775e9dba54e81971fa717a483752e7a3d26f52c61290d370f42bebd719b33ac75f3cacebf8ed2178bc59a1b333333cba0dcf911d2087e71814541ac7304df96e5c34e55e1f1a87dc4f7812de476ac9ff1883fdb880d6c9b6c384444f3549334b04f35853957d742f95a1141c927e0e3aa89d46b5e79d0aacf7075cd31770c1c622b69e00e2d6a8f2cf6d97dc3a34983495c4301a69472ca3eb10be150cf6b4da8176b42a1527d73e291903ef58947b285344ea3640dacf4b66953dbb4a94d3647d8d8f0e8885adbe6bb6d5eaf977c655fe65d451290c897176b2d4b5693a956f1f372466904a477aad69fccbab1a134fdebf57add972e5d6a2693d582f05c0aa35a3aef62d691d613df52b84c26245e19edd32be69828d4045f7ac679d6794883e9e75d3741842ec26d233248204854a7620e23449654ccc1f2edda7de182d5c2775fe19510ab6831e8e83cec317c877dc5b74bfa798d24cd3f30943ec1162b6909720b64254d8f206da97dbb6ce2109fe8894d8c049bd8c4a3c96c6231122c3eb110d6267bd5a495526a822ba59051ac5aa131238951a1e72b4d51a65dfb8cde396f7f1be91487d8c448c8af53df6553abbeefbbadea541be954a77834f9db363e995e2ff93af5498bb56db852ed2662a73ad5a928d38ee1d89047feed590ecbc88a47f1c81854f020f6d8497804a21e3b0aa9e3ce2c8043ed51e505281f46550e0dd861b5cd8e29e6906e6f277d6a5a7b61354fb5915ed1c076777b979f6be9da8bea3f3c8ef90f1850c75dc94594e922ca6c61e5ca282c2f1e285fd561fc07e61eff511dc65f3ae98178f038e63ec0388807cc3dee03e61e10c687ea30e0105bc903be444f7a8e4bb801203fddc5a57720cf01b25d5cdcdecfa371d1bc8d30a9596efdc838517c7bbddc728968202b61b9f5576e3c32862bbcce23b36460535c05942c0ec9503a6db158f2d56ab194b0584a5a1c2777e44bb2364b43f2ed269a08dded22b4110ec9e894093caef98fea98fff0b8d65ed81f393d68eef11f9857ffa1b9c767f88079751f34f754c7dc870afae00159d5a246d958da4ab19423c176ef5aad95ee394bef5033b09ee733ec79a79ac4b55afbf10a9fddeca5e78019ef4d8e4637ef3cf2d9d55e7a3be487c7d663f30c047dc01ed6a9f3b04e1dc8476f87750ad28832d3e5e7e1fc6c4ecf3db73708f9c573fe358ba3c41c9c7b9c99681e32140f586bc54090f32ea750cc0493da088bda63c4e814a378d43d33c1ac5a7560a7381958e9d2d4a96e79a29486d2d4270e51166551166551799226898434499344429ebaae533c32c2a35675926f6754add64a16a7d3a4b6e11d16efb09620830fdb060a46f8907750269429bbdcd31b8f8c81063f6f165f4d9228c9922cc9922c896a4da25073a34143d33410d2602ac4c652e55852c2869d3a9d9ac426539f9aa58449184781d2e4fbc54c38c001cb811789c29e6fb4e26f4e3c32861dfccb76b78eec1487da4812967ac82896228ada591fcb2c14b3a24ca798d5cea6d6aa29ca849706b76d2f06a2854002999a4c010ab84823b461e332cd331c7632f3ed9fe1fd76b55bb16a456d51c761a78c891213860ec515e110df0ed5e170a893f8f804078f13032526cace0efa378634e90ba6bfa894cdb2a6510d434523100000041314002028100c0784a221a154aa29a5fb14800b889c5076569e08a31c87519032c81842140040c00c10000c44db06245ac6e379c20871c8701e53bd322da1a5f2f34adda47245018302c2b2a162949e932c975c110fb63d5bcb1c6c4b8fbf25d03b011398d6ddfe2be9b5884936312ec3e5da555c3d2ea910ff3ad06f7ac34573e073babfab392ebdc1ff39de323fdced176fd73dcb3335b0ef0f1933233a07b1db25f2ae9ab118724e6eb2315d735bb5455ed885d3ba5ba9daa2e52273ba2f00a9d28480356be43c99179ac7fb768c923a0c9a7871587a31fcda1e0abaaca24cd52c0d9d22b181dda8f0d48580add4a53bb1247df1b5b75985e3028b0562c04559b558cf059a684a903919e480c5bbbd5243fef0e32edc460b158564fac2abfc63b8e837890c947b5fd52d05cf559c8ab3ad490e0bf873e8bcec149246be2743a43d0dcb5806172f9cad9a77c3121397f8821ba133c877204f6a0209fd0e98eacf59534489ae7f97d38ae2e2ac36ce420bf11c64d6dd442e7801b7e5d3d5208322730acacc0f7b7278a0eaa3c1100f58b9c39502d9bab071a8c5748a4a302d99625dfbbf3c046d1af8a050897ed68e130497326f85610b7abe96dac70a1c9b923458da515f511a89110eebadf49c94c89a5758b8aa6a013bb6510abe893093e543695c0667271bf9275bad7c75c7577f25221aedb2208dc4c65fb923d25ec86274b7bf9b70642ebb35c9a0ed6e5380268edd795cb17b81d0c7474c6a18360413ac14e3047c8a5604f90dc89e467642095f86fe24607c6f4d211c5a114702b2050fcf19b5ccd250175027f870cff430a7713c7aa91e397c8c3d75a7255e5015fb07cb3cf535c38838f06eadeb10eb0c53f343b2b4e447ffb0950266d96a2e473a30a948a0269d77e2a09e5d8ca1add817c93a97796eb0e44d491e258caffe3749bc86540ac1a06bd423ebe3c31e4770ec49fea3890bf3fc9cd081b2bf13089e65fa8d7a75d6c8b2199239e2fb0f36eb773c4134559fc0688c6ae3c4c3043fc96eab4ce1dcf0048448382aea5769cbad3bdf81b133d179a7570ab5070fb22f8b2eebb86bba3c53d3cf370712d86c1aa623367732b799f2cd2447ab469593bc44871496caefae003dc1e1758e0acc6ae735174afc65d3e99037b6759239222d0bc19880a996af7d4ba2ede41d137d244448cee2156edf7c025b71c4dc487a917b50d217a9dbaf4fc936c9592afaf5b608bc2e6bcc36b1c01ef53ae1eba32e46a7807d704c2f0c4271298d64d7d3d18db94ad91f64183de1175c4288684c40242ea2ad61a218d4ed8af51c920e9c1d8b3e3eae934a78e2f8d3e46e58e7d6646b7ea3ac5e05a3a3faafc55714fabfe869e63d06cef503a7e4f36c9433a5c47a3adf2ea01c89423e48ec8e88c95014f1a3847f5d7060e41a66344a9808c3e9e4c7a2fe3b3c98f2ad85faea6c8e8c95b361fc7a7b4df64c7f0db08d97742e22455e37b45b62c65224c016f0ff5a1969a875ba8bd3eb39809b8c5d566656a4829ada8c34301eb2a5529e73830691d72f0d0ae48001e2084ed48c767cb15ee5086d08613549ea53bf5516d6781b30409f20a2fc63c4850eea85da4b2cad6f838777dd779a2fe56c5a5dccd36b85d424a6b8ffb52848125450cccbcd6a24407fcc85a8b040f08f6dc7032495768062f8411b120fe1ed44014681f24d333ad4eeb804ce4458ed161a3de7a4a8ab65b0d2b8b58f169f345a9d499a438ff8528e7326d0f950527bc4f2aabd222658d074186b8ac636d618e3a63f6411a102342a7e231037a1591395074c22ca123934105440e7b5408d7d9707a464926f106a5cfec897b038475fc14c27807d6179481e5b9dfa2cc80190c7c9bb41e6a87e8a81c06691159f64f9fb07f92961e22b47cf766e4151965f193f69cd6a3289b7c1f65b8f0ff2c5a45065291b16dd8641e05171c952de2589284a03008f4f58d712f0535cb39a192f0c673f19606fb332dddf81545fc920ec64fe7ebb9dfa94f9194690d61f0f9beda00a1f2dd74a06df6a38f43ebb132579386cd4cfaa99797fab640712ea798490688dbcdc41a2ef0dcd277ceee038f704f7a1613f30f01b6d42885a24d2550ac13e34c4a5da95dd03d487180ecc86e55460f27a8fb3ade9103a5f9aed11b89e7f2e3bbeaed813518db6badbb32e0332acaf59819cb77643ddcaf731b2954c160808e1d81277fbe9872aaf0312711fe13360fc921a6e99038d62a6ae186cbb448d9afaa62ed3b13d69943dd8696c9a5fa0a0c392b6a651f601a89f615c262ca35b42c266b41b1a2478ea51dce927114c6e3e1c135fa26f7c86338bab3623a30fab0b60fd01fc32d1d7bbe44b871383c37af2fd26630378365cafbf2fa5819cdc1e8217d92c2ae4f47b9f2fe260501c1040094ceae08bf0686b7ec0011c3a9e8cac7abfca8ed880a5211535a319868e0aab902e293466db50f89ff1b8a23a13f513e4cda57b28abdc2cc3efcd99bcfa3ce8c6f4fb30111909dac999eff68387c78d8985e64a7f702265809a4e00ba6d21ae3b754389a9bce95f9b92061e64bb8da44906d13454f5c99c006bb3a26fad2166636330ae83e1b44aba379d4063125a54dcecff6d2efc8ed7e5c289b8f7fb5708f69f8a0f5f32e0aa5187f87dcb9a2e81749673b7d39f10dc05125b25cb4a3e32320fd93dd8108cd7460eeb7b4616a92e408793de1821d28dbf24ee24b349f5fef46b0ef726ac131528dfcd2ac436cea850c97243cfde35ad94593ad1638d836ce725bc420374f378efb8675dafdb7bd8f70f62b0df229a66b4f92bc742ec6ed2e1c12ac59f1a086a2ca02cbbab0cc475f11da828c54a0f875845e9aae3c45bea4f28fec898cf5c4ca78e31faad763753ff5dd1caed630d7964e585c22992b5339b5dbc4c41434833ab739c8df906e1cce4ad9098312fa0a1506d29594962de24a17b1afb63eb2ed687528f8885e90f5e17d394b611a95719f0e3bc6ba453de633534be455361d320c9bcee9bb4fc31d71ba9a50acca2a9539f414ecac63c910f154a516bd0c6d8e6ceacc867d87846969dda109e6ca3afd7bdb69b3666949943716cc4d47b54a5fb4b74536cfee229d66961cedc2a1cbd2d5a481820f84f5173950f6566964092077c8ca450a88a1a666bcbe1c83ac2ff9c06dbd37b233246c1279a374aff8e3791a8f42e4ed0410492e72dc1025380631fe7de8035075486f1e0aedc0c13261188cdffa9c10a05ce2041cec48fb3d3291e5b9aa6a6f57aebb606669b588f053efdb77f12172bb66d1314399751f1c9bec460c33e1c8c463a191deb4c83cc11d35732abb025d2c0a8b7e503bd3ebb6d0d34d624762b2ef3f88ba3171a864b20c39125f5cf5dcd33a4468068561e5a5336c29cb278f84cd508bb85700aceabb1fefc09462ea41839932077767e32a062a657cb3411a3f094ac718902f5e1815cd7049e52f3a78308214d179ee28fffff26dfe7c8f1351995ae5bf7e8f43bedad9b127e00ece0f3d1bc9f5c90867d147b6f6871f45c77c0ea0cf170d6d13eb70a0cef7f9009edc7d9e2d176d371022a209a5be1c25b0ebe7bd84a0dadefb6531a4bc954b502157504c96fa5550ab3a4d758fa9f3982e17e516c081d13afd01d09fcb41d3d58807783e1c01346b2c721c11f1409021ee3a28ee292e20ae88eaf83340fd7feaa497d4c4e019687ed9065664d2cd3d7f4e7b9b5ae9045f94277ef800d19693a8f4d5cb3fb04a95aa9e23467363bc7cccc4d0712933051f8ac71ecba0bf6c3114b7342a2f01c0265c943f89400fdefcffed6a09f4cf5becc09e336b1d047c06df1a0eb1f02930435730b9749a461a22d4358f2cbb4a27b76b095341aea72e5a29cdedd424d05ce50fb4b0ff14203fb49635daa060836cc5dc5952bf08993e62171b94a86fce24a001ee7318df2b48854ad809e96a6af12b59a51cc1d81b477853da32ada70888370f33d477cc035c0af447f73801de334eac39cd4ce3d039e44b431b20f7baa55fcfa6bbfc81d67a27886010e0a07ee5a2e38d89af985d87ae8a4a02fc489cfacd9df02fabaa98a5f1b1c2e5c6ef4837dbf0b25396757a5e1da5084db29b3b305abf7b74d70154cf8407048418adbfef6149b0b3114f8fcd56120dd9de711a91c1b64325300b7e0197bd2d5fb0f2d9f1137f89dd59421cd7b129f3ffc764d0c5a04734ba26895593c2502b23fccaf899419eab7b8e3e7225d07528adb5739ffded6a4c99c0cd70e47ec7d1670eb35871103c410d6c8810847138609da19c8673df50b0ba76b2666db7b928906c6000afbc1606252992ff5f98eb5a8a00dd5c197f1d90bc074374421109178c21ee3874844657249094e46cc5d75033a84bbd0d83136a2660499e5a117cac746cd2a6022288ed3b8d1d453ac069e6eefabb17e20e117c91b2222cdbdb4e309a24ad14a31398fd05c58c26deb1889c74035f191250dc78ccf75b449bcc240dbc636832aba852e8f02866ee94962d32eb7349f0aab715113d50651f0fbfb81d4829dd0060f55e2c1550bd6f6de8f55a04ea29acc61ff5099882016cfd92b84b87efdd40695f9c55279b24b54df2067294256230790e05b720a24c0f71d0214d30b13bfd4eeace4273ea222f5e9493cd467c4216c778e19aa4048a0691779a83e420f9903e7a8d896c7f073cfce4b1f4843f8dc602849a57068ab21ef19932745a465d7a353bff209ffee3b90fca58755e7d23fa20ee15bbf1ceac93aa712235ce668955d92b5988d26ee54620c46cb2f253e3e64b24aea4ad36a892585bc71a0b8008d48bf95dd7976b6b5d83370a02d940120798ee873761c554d2b2c3aad7cbcd1efb7b6c68985309c2578ee7786b061546a47be274dfbcd9b0cfa1480445bfef25a794d099f47fe2e0f2d5b5eb52b4fb89cdf75dec2d9e50e354367942a6d302b9ed838e0990210de72a24ec1b7e7ce5721f1d2e244547864571fff1b6723a91fdf98bb4a71459ce169a00710586d6c83cb4b0383baed073eb7ca94ba7b9f012e2614c9d8ed91b9ddc87e6a64c113d3a254728b805bcd707a21d3cec4284008c02d4041b70e38d4b48e5b33b5fcdd1785b4d510f44be2bdca13eed6de9813fc3b45448415feca9732275a51a5bf3cb2dc30c789e1bc4f59dcd1a24bd2e5d6e10f317adbbbdd3f314522dd60120a7fa96c60dbd933bc2b20ed6b7c2438be4e4e440ba30ebb448529cd26d57945674f116b3f45690580d46587e93e1d5cbc58f5776b4ea7bdbfefd98ea9efbd406b43f15c2ca4f62b87980094ef82269e3044747c440a58061b8c2e219a52d93ee2d311fa291f9ff15664da82bb4aec7d7c3e804778575a484eefed3dc5f0a65f01791fca22119ced28fa501c53ae7df87dd0fb428c58c86cde753f14bf690ff989619bcf811fa2a1555883928c02058eae77f4a5cd0ee4fa63d53b7de87c3fabe22becfe00a64618bbf1247b7ff7cb965d633b9806712493d6c7665244f37401ebd0c8d3e960b3a2d9c4cbaa8185c93a926df16b7996e734a3749cb94494904eb898d80ac0d81e8d1f98038dfba471110fcab23c4bf51c91dec7618076fdcac4097f91e6012618c89fc58c47c3e34c44c6e38204477697040ef4950c8303fd8a6662f97a2af6d4a2eed92925c8ae082d076a274f135b9385506fb7036b552604823181adc52fc755c43ff1bac8d08b3134a5cf649378d98bc9beb6f0f3b600fdae0fb3d0626a7da8a00b6cf0fe220dae680243bdb4abc56ea94195cd11d5dd016e4b80d478bf9d4eb734686f49efcbe6b73fe3519464220d1ba95d05f480bc5ef633a7404eeace267caea9e96bb6b2ffec3179761508383f90de19070cbcf5c18cbf59eb415c53aa3fd4a7aa339e7213cc4b271bf88e7495a69ac5b9a76778d58ad19657e4c4482a16c56706a23d9234a551be5f39160386ec2a432449c0c5292bd8f3800b64106e6627ac45bb60c7cce7cf5808a1754411130c50616e7b5cc8ee97e06fa5bb7bc176a0d45d60e27a37ac5d353d595a10248abdbea8bd3b6fbddd05ea356ee9fb77f3c71e42824f6640101a3d4d04862f33a5764d3d9a6927a8a4207c82a842584155d003f3b31602efc9ebcb333062e708d0db02f160ed7321ab9d6ea173f711306a4974cd8f4aa5122d2f57044bcb18fe955ad09517e6a32f9156caa99cca767cf8be70b572c2759f64ce6da09d5f52289fe4fd0f44124b92e3ee8b75a670d42176554e154d34f332846923c0721a32e0b15e6cbc87949b49604e5629e62641e9e1a2203f71f2484e7e744e17cb3bc21d234ac70e73a2c758a74ef8882a779d1d9853475e8689418c44e142a3ac3232fe986932b4293317e4e574426f6bdeca58f86c4a6b538601cdada8eb42cff2474a37db1fa1b067c7229d8d9c4bf4aed6db8a8443664b90dd1c58e7d08c2edfd1ba26b2c33ebf79748d373e5ddf0f3cb4c1118ef6b5d2d120f7f755e119d9330848dd89413ab0f637da918239e6376a2702b4137d5dbbdd055b596b1df066db55932e014d726a33cc116a052ed1f6893c1a3612b5243d1873d2508757a043c659b8908ef444f7a7cc63686d376fa30ca021259634bd072282d4b2701faa0e2b6b68b37b42c0fc9de94a1a409f56209053b9d5e9d079982a527650cf0446bf8e95ad90fff0c1312c0f5de265e4ca20d89ed767d9ba11b095a8093435a9156d4569a1bdbccd2dd00b789b5ae67ac79e9453b0c5fe93051122cd31a8e35a53040c1ced2348d04191090136c13042f432a0c0af2a3dc7945ca797789920a0deffef818e97a4fe5f9354c1c1c983b4afac29f0cb4a14d29af3c3a80ce71ef22c4bd68d453a8896138f4c43f167fe83fdb1dbfa50c7f8869a9940d42aa8a968d4dc041600584cf786a6dff381613548b2194f035a5ffa49407b27eff9945d1f49eef23adefdde68e5e7984fadc319a1d415c2aec1fc8b2584163db720b1f0b3627ee5d4c63a12956c77855015bb32eaf4e83acc2a34dd4fe96c420a87a267868099d738ef7f69756c99002bd5bfd58232fb89dca86ca111d55e49f3caf1f96f8841e8aee4594381b700bf948ef2462dc02f6e9613b81ddfa24c73dda3ac9894858908e7eb16f2abcff9a36b6e86ccfff2bd3a49321fcc9395eb50d864ddabf6b5d92657a2a680a0bbe0a224cba4b6fb29e709898b62dc35e05d3e74edae09b419a28153569a5e94296f294630c3845b2dc7c8d08fee75af7bd592f518030e0dee28c12e2a392258261da759a39d70e1ac80416f193d4c7f168f92d144570b1da0040040b62244b3bfbcfbede4ed243fe2d3ec4b2cecce1c7e9e50df51167c52baa50532df396e9ffa9a1f815df1372a59db27abeb733a49543f9a83b2603ebadbf4dbc82ebdd443eca95e6756858aca1929877471267a1eb7edd717b9a322af2f1e391ed3f3b3027870b12c8548bacf338c8fe102a08dacfd98d6725d0d92299da66d620508563c242e3c122a9c6d9bc2080f9e06d14a469a800d0c9edb8db891c06e2507ada354cac76e1c02ee07f56c869fcd75a1236da5377dc9e355f2f10f5a894aab6ded81a1654e47d9b66b04cddb0997e8bb97771ce11193dfcf6f9ff08c8251cdef8f16f59a0a9bea959c5e88ae8a55fe9ea9cd00aaae136b68871241fff3f9d856c738e18c146449cc1d2746bd5b619ceaee2d4d94888beefb96f861f68589a494b8451c22674454a5a5319fcfcca6d743426961f79920e327b52721a87909d7c6cc70245c1234667695fc6539f75d507f2944d3cf80530f3df02286c0be5d4f881e551ba5b533a87eaf8457927c9dc25ca6aacba779658cf212d6ad1e6e9301c1d7c30f81bb6d1eb77436daf0c17e4ca18ec237982fcee5caad3d662f0feef30ae87bd7c7037a4995228341c53ae085ff732debf000e838ed57f8eff4b8e8b5dcbcb3498ca746e599004300231948605814c10f8bd328084e6b7e0e20b054b2044b977ad4447c290fec8dcdd9882de4cdbcb120d41dd70fc6bec80b4f175f708ae084ff679e1545f1190593294e1ee865c5ace89e7348606f423f6943650ad9d1afe774a982b761d6d7fdba2b750a9212a0d58a0525d1903dcfb24cb1af4bbb4768d18d0d39065dc2f4fd759a4c5ac3cb2423a26f23fcd1c175e62f8ffaf961640203ff3d99069e05a6e763cf2dd467dbd9ab3fb9631388e7db4b000288e2620c8e381e72ecf83ba8b90c43c6ec72ea309a79b04b4a6e02bc0f87978866baa5bc8a88999e013ff54ff6443502acb3bf74d56f3a5c484d412490af00a37e7b0b6cc835927e26d1625acd678a0af4d59243dbf6f7caa846289eb26a7658bdcfd66958aa8688dd7173338055337529c4c44966c503a46d6e4f75efa7216d89da898f1abbd12f1b91191c9422ec1f5e8b747c91b0e6bfc4c61f1be9c95a469d6182143d6731c7b3ea2beaf19594e43c2583fd09c4be161a99bfb4b112fbe6fb63107b808a1e10b5363ea6c901f8f2d4551e601e87176013b215727781a2792225b42f120c9e94a3ddf776c681ccf15e1ca5d8c2ad8b64dcd8ff8f6409482063f6f5d5be1c2eb76bf25b31856cab37b26749ca1bab4205f6cfdae8044c7368858879fc1337d1cab766cad454e4050a607522e2d744461d9548d595919f07670a6d3a54f8c54f568cd94ed0cee0d8e94d830ed49be06b538e282f0d56ffadaa0ad12913ab719599f72560dfbae0f7e5047a00f2388749ac1fd696a9d2066b6c31aa35969022a61ea8ebe115cb35c27c57f452a2f4c22af0c2391701b18128b484cf6789e7ea673fa65365c1137fc5d767ea34d53c27d5e1a0b045e27da886292ab32e95994db944763b94dd0c2de7c29345014b8fe05c9a8a521a60b8a145abc4a8ae8c9e50d42d8bd2f862b6b6b3a77f665148b6333a06186877346a1dadda7187d0735515650a1186920e6117d309e149198e84b289759c6c9e785767073033254c6fcc924a43999a64dbf39361dac97303fb80de28f663625dc6774363c452b431c06e0c7a235c925a0549974d1bc2514f51306a166f98293e2273d798d8bc5ebacc790f3a57c80b2bab867462798de1f1fc27261f679d390bbf822e635111a52b740d5fbf36a4059b6e851bc4de1be203c34760470a8cdfc60fbdd5c502a499ab63fa3834b9f8a138fc23e780dc2d7e5dd227390491a860859559133aef5b63c12b642a9e17748c790b58eef6d9a6c62ead570eb8b15367b951ca6dbcfdb26b35b895929835a3b477c7ee7054eef0495e2389a6f58f8fa176fa83bcefdb44fa1a36bbb6680a2907d198031f11da361002d1730c93738dc099220829ea05ec3bb98a4b42b3c274ecc58f90b032064f5a8d276129e54a83f925f3025c86bee5a969bf0a5b8c20796395652959d51cdc7549ac7cda7b618b1ea4c7eb6e539972c0241e886dc205ed76352cf7261a1af9a84dd0ba9f00664160067f45f9006cbe447567661975d17c4982c858049c95831ecafe17fb9e0105f825178501752ea495aca4f5719e35eaab5da34929be1b378270ec7a08918182593acf9295c8fbb5af1270262ac4659530b4d9a85539f987e8adbc9d03d9a53866515dd4238610316ebf2ae90d7d3bf5280be280ea0145bfed4a0ab0dfe1c3fd82aee28a4b3cc44c69e4c995e49ffb90a353b92343e8d26f45a3c4db55489ff18fa43c388d44c07731e08e60aebb97da7a836ef184535d573f4f58f47d832ca40b7075369d4333f1fc4b41d02dcbcf6a26613d98511726c34c71c82e62a2eaefd1d8d75d1c097801e52003147e11ea926438715cca700c3c4ace6c3f8a428ca9616b8ce2643c7a3ed66948a369de3832d3218db28347c9d6434a9b9704b22b41ed2d475a65665e64d41ecb4f7a83dcf2d9638836043da3f763c902cc4c3e7686730877dda2b90e772d123ce4491503bfc29f1980b3be937adb5554fb198e021c24a445c2a21f9d0c4f5d446f7607e8a0c7d6ce0925211d836255f806072b2bf5b407b01215c5d0df4c7772fdffc02af8647cd2c3341ce9736ce11f08f76be91417de50f59bd754d6c816c874108b1e90f4a4c31713482797e90adc8eae43f42a3e9d9153f5941f3d649ff2e4c00a18d3a1dd979fff4643cf3e8f0dc19b475c4fb94c1b40a574b0bc8e68f9b07b78392ec9a4f961940ea2b2a840d67e50fbdab8a6c47a249e33dd7e24348ffee922f4f56606851ee2a7ec27c42801e40d1c56605c8f7737b8ea23230731589342089f928f0dbe0f7470aba9a4bbbba5309a402abc293149fba3f857948e90a15856d6d8afa1291815c9be414b7d3c7296d602dcc0b65ca7cfc88a0356dfeab7229117fd4d0cac6d44f05e56c9063a5689bc302b4c8e9041de1c366f074f067c9b0a6bc7955503b9df2401b8fc2864b61491f7a478009541384618d12cd06a4c288a176c1e4c8cf62c14cd66fe6f7e0383e3670297474fc036be084a605084f33da0e2dbca4c24322129012ff56d024957382bd2ee9d2724e845b8cba768783731a39429c1c31e3456069eb47b06bb84e95a27146f507b1a3c68c04d2edaa40a1d252dab47c94216beb32a884c6c0e15f973d7fc3c460339fcc0796c7484e4e5ad50b85c0b584190a992874c51e37857057b3f3ba55b86158aa2d9aea4b967cbb0087979d2e5c431b8fc598f048c5b7c6ae35d06a13e87b2492d57c7095a8c1e2d6d78ad54899cf6dfe88a9e607072d35ed17aa2f08bf9e477d3ca399b9c0cdcc81a16bd49ca45cea4cc70127bb5d1de26251d27ca93473fc5c6d4c5a3436aab55a781d001eac74735e2d00f7112675c4cd8fc56953b832b3ba8890c5ef7018370ffaf83cb537514d4df0adadf1fccf85d1ab8939e0cba0f7dbc66f7231822074f904a90c507684ac85b4ab4eb76960a62fe3c927ff0e9821b9638cda063752510c6c6176acc3f52689ccf8eb4086aae14017bc944a549edf32c422da09542f722240e37453e4e4567ff50140201c5a1d387b830e60818f809e71e7cbf3208634ac714206b258b65f237e52f40144407e63c1069227804a4e7c6ddb64bc7aeae6ec1aabc0e56b65ad84b65b1f1e56d1abe33223111cf95a85890bedd9cef86d84c5e9b18e74fadc645575d27271fcc2a3c2d192d217a7d364e4d5270c5dd61d19d2fbdc780f071cb9c8b39fe703b2f684d068dfb1fa154fc2b0b18f066c7910a1abc90caabfa0f431298ce5c0353c19eedc34195006f6406a38b79104155dc9e0e158a2d82209fc1d55c554ae52eb08264e03868576bf0a077a94a92e953cb9566f874245a012c40d9e55e13886af7fa27648766bdfdc7e753eb2a55d2940cb96a453604a1176966d0d3811e1f2e5d13e8a80fd669ca622fc182dc878381dd0b10db5e15490d1ee7ffae4f4c07e89e14921f5ddae58911566df9620363e99d954f1a47e317441bdeafa79852b93bfdc3d6ab4c568db562d7641de617e04e986d516148cb752c9a94fb960b0fe61ae4bd6d506d6ffb9fcd8ccbcf2ca8e83b54bf7777b6153ca2d85f5156c0f0d1e43a5abd1f31f6fe20fb6467107634363f35dfaa81891af102f8b77317eb733a1d9477ced2f60b811471b83a59c75de5626057f12e5bc2c92eb2cbdf86c568dea432ce2c1bb047dbc36b54e6690593e57314acacda84175580e86c794f03c9e70f2d21a1ea8623420482eb8805057313faa38ab20fde4722222987bb8ffabbe5c0ac606372df30a3c080eaa7207456e94c8e3e18d18f0396d24a6168908fea37ea478f976a08c9e88dd764367d6cc77b30dd151cb890f37fefc18230532879b7744114502ebe947790c3d2cf0484de442731e046ec176dae1862359279f8c5f76fcca9b48299e5b62ca587182e8fe00c6646f2b8a0197ff305abda98be587ce56238e926f5ecfbd0cf1905d4472f337edca5690675b7c683c52883e2f6926af5ff296b971c36ea1ce6f8b7d02078e11c1c04221a619ea18a680c2962297214b18a394886023847b969a20f742b0f47e6b7971431f633da41859ed40499901dd91b04bc8ba8f69b833802951d285b34637345df08c9f3ca6189961a89e12d6ae349073179335d4e9c4dc411e50632b1ead8e2a47f165f4939cb542ff48d7ccc9fd0d512941419c1d08395d8926a20aa57588e7218bd5a90302f5f308d686999240920267e79cec3dd919336caef0ecd8453bce5fe8cf6722800310f7cbac77f3daf6a5b6f7f261f09354937c89dde5d1612c8f82ff2bbad5da01bac22b888eb7ac984c3e071c84930b35ddd9044bd08154d1096947f3910628946ac0f605d158a9512d82184542e34899947e2eb1ee52c3b0d61b3da72d3c3ecf6dc1aa499d03b0c42dbeb8d6d93ed0ef4402dd0a52b25d9ab3ace281a8591bddf2408acee7b34b2e0436b061a7b50e7353f5239b78a01756e54e648f5d3e94dee0754bc1293d5accb35617f32c03c9d1590d9773bd0f3396d30e5549a34b23a33673903a130e74827d679f82d410b3410536235452857d2bfb738a349c05a26303adb82a67543e353d2fc2bff6534884f4119d73c91ec7bfc33ea8047b55a609ee9a89d912089a3b0f76e925408bc1ff92ce49410379aa61e89df17d34d40c1cc2658acd842f7b9532d271a73d7092dd209587f52d4ff06bdd9ff4acdb2caea100a4c032fc9430707610d6d75100f6436c64370d6b011abcd1716cfdd2ee9a316b1473b41c59e8852d6a8bd34812cfd43cc27c441844d2a05efaceb9ec2e6e7a88031b933080b271b6859d60e88cc7da44bd12cc5207a96343e5ca0c58601731644b163381efe81b805330f27bdd90178ff19f534761f575d8f949179495f74298c0a6da9429c55cbbd1624d8baa5510e73185766ed1e897ea54d26aeecb107dd4b9cf91704dcc7b12867245ca8b5e3e53d510ca2db03e56682556efdf280307d625a6ae737fb3730c73ec7c979b8ad0d39d9e46f0095ffadcac06fa3f4d5a486107e7916d61c3252a2d3422a090a93c96174d31e0f20e895020bd0dca67a488573a41a3eef94537a6ed99d7531644d327783863c163b8f4cfbe195de385098adefbfc818044ae3f2c56c0e8751e6a283fc05bf502ca533e1aaf6585870a222176255eebaa684a9a708db0482706da063f580b6d1655dfd769f5410298eb4e827d6cb983462019debb37109e8d654498a04a39e770f9d02a3d2c3695e929794689d11d18414d255e9da4565a08963e47560cb8a03bbb315e9e9ba4cb38597701ec5c6f44d7847ce45c4495f0f10aa9f4d34339126965441aa7e54c4678c7ba13c86e2ffbe1fc56b8ad80b74e1ef14d10429e2f3798e6ec80172a7405f5317c33e5206b39a58978c32cffd6e2e037a3b43789fe7881d1dffe2de6b4c830a8de02d1a6cc92473b42eff0fc30c230304a6e6ae7148168a214d8ee3613850d0f33d23004c8b650f7a1f88250f1662d4974d49385cfc3a5460986a386b6ad0f4ed0c9e8611ba583082f3c4950af7c9626c27d0bb1961032166c44d492f89dafeae6f36727c0da07d459dc9ec6697b6b5229c92b30b7fa7b5b965dd0e11a5e6e4f4c1996e40602a288eb9a745d251c4bd6099b5b6ab39f3070294abf015f6d742cc18864af464c168e8646d0d5baf3dd54541cc26f20f6d7e4ce33f4076fcb18a8f23ceb9eb2b42e333cfe1595108102d5db036ac1ce7b79bed1623b618e051b14603228b1da6fed21c96378dbe955753edee7b3935293c1038742a28a62c6cb33d6158584415cb98b34de315627d5d4275cfa2c385c3a5eca91fed6697fadc815178a742de8552086b3d28d1586854ca46f15621d787203fe61e0ecafc1567727220249c1ef668802f2cf8681d6ef477f4f1d9be316ddf6ea4937a2e6e85d5b9d82798b807527b467660626a626d82cdebecf6c13ed68055c1a80e934461279d304a7e59dc8e4727494139aac2d076d2549f82d1c908539c4057f33fc63a254d691c52bdd2d59dacf32d6d8b2d4c8549dc996d460955cb4fde5760488d787c2c6ca2e34582069b1409909ea88eafa335253380ccd2e868e46ebe37040f35083ee9aa02935aec472b9a60d60a44c9d41c666f073b7359a1e41ec9640647379514197c6331a01faf39ca28bb450c67aadc772f3ee7081c0f6133d7afd2a081cdb958ce20220e6624602318bf26b1ac5df13405e996820e029d54d23926b3ce936595b00a3afb0603a2f79431e3eb98b7ed39650ac7f56a28c9abace9d09ca3ca6032eca5573569da5416dc50573c55da61496e039fb268731fc6ffd5f554f96f928276ce109ee18759e50e2a091b3552ea9b21d14909a6154ac9629a796f20fa9a06bae52e5b52de51e2f4c337709f0dbe9ecda90f08526321281b510567d215f3d49142cf6052e659f6b39b772b36be601e95dbc0b9673e928a31d488d128b4440b39aad83758d0adea844af8bfb28038ddea8bcbb322d9a4b2fbef3ab669004aa6284b292865bc69c8293737aac0cb61e69c462d255955761dd407b2470b62a7216a5f112a2ac4b0b71c2314f6b2c2957c44403a4480bacc409e831397e3f5e817cc0e72718dee9761dbd8d752d73bf22dcffb49cd23b42344bde90598601d0bec1a6d204df4f3c5a12eb6742733f4a864d251d6f71f0989d1365b61447e7cd7d084d5d0b028670fa32316176329021c3ded3897147ed5febfcf5f873f2d0e137aac38b855d25c4c2d9d9d69624f8725d543d8d4487dad77516943bb600b9c7b37a7b5d5683a665f2b5e2157a11a6e502c0da498189bef477ca11c8c030718cacb450e15962a9156dfd558179232e95ffc4ee51c0e95f335caec3aac22bf50e673778cd4379cba86731df336784f23cd8354510229a0eee5cc38b1e6bb9c47f3139520dd44c9159c4b202e1a745f131adf6e81a3ff2a15659382eb78a6f0703c2b031f0212756126c9f3e3723a78a0eebac0e0509a7318a121cc958c0652dfb887c2b886104793516b8dca28c50ebd619e4e0ea55afc43e6da80a05098c0a0ab1e1a6e14c501512263109a745656bf99e8e61e6734541a58a50b01c11535eed5e8bdca28ad8a173cff86b1d7526604cdd7795266085d4e33966a0386138608f7d215eb8160efe3190742847ccb112da6b9c92c36571d46467087718d4161708e1978dfcc7e1c0dcaa629507010a8901d9230868bde1175783285cf035b648e4d661fe8a3608b556f0d161f4945ca27324cf5d8619d70de4fb9346e34ba2b5aeb52eb4067ed7e74c9e4e0912e9bd84e03effa642ffb66e8fa0f84370792a469467ae1b5c4e1eb9b51bda17b5187ac1f705ee3531e40bcb4f04680c80e6f9e27aec8abddc2bac4b01ab0252db5f16931a5243efc284194412811cf2e88d4e1d25eeaf91b832102b658ae877d34205841607ab0cf9e9aac530e855a1ab022b4bdb280064e4bc6c0f7423d1019606571188b630ef10bf6a712c096c3b79d2c0c811db1146788e52a81548596d707a58df0881b2e81ea908983b5de466a6074a54670e73a857a4782feba0a6c1b59f7f59f7088141bf02610f73558e32ca948fe0e34de48701dd0327994161a49a1983377ebe805ca305d1f207952ba0640ccfae2d465641645f2ff99f54d9aa380444491ac6a3f4a4a6cbb425018a1cf64f3df495aff488fae502aa53d061ddc44181a82cba49c5ab73079f9db2167ef0016b2f7ffb429964e9aa33bc67645e3189aa4a5b2f28941068b7ad76b1ffda75530eaf469f230895b85a55dab28fe06d85d1d05396463ef2cc6cbf201d66d8304465f89ca19656b7343a4fa781e038f64f090697e07a3565c504fa8284e23773ab95442cd4b40f41124d05f71f43f995c25ed98218c5d0f61251f18cf4aefb4f3323a31e80efee5a3b4b6cdace7b5a4b31bc51529556ecb4227a555cedfa803c166bf645229913fe8e9b93524245a50587af5656851a71610ae15468c02606f3a9ae5055648db45ab916f5b10c37c6804eb1d08305f272905a7bb9461c8b71979a42b8419c366070ff4ea3ce6a6449b18ce22f66546513a098093bc543e45909f9dc8cf4d2e908557f0332fda675c378e23b7356b243e892ed37e113bbc6841e44e235f32b368afdaf5be872fd6ed0c6a09c2fb307f3e06e7a4fa483480911afe1303b974f2f1f54d9ed5ad2914e2626aac6f98efd548ccf54a3f9d2c1b1337f77b5ece1baa4affac15602cd2c0a7f1e82ac55da50d414ba65c48bc35f92f058a110c92611a83a7e6f9b1490b6f2980a860b751840fa3d0426e78eb7f22069984b5e713c357e4cc884f04bc3167d790b3b4d6ba190029ecfdd226469440b9266874651082b9e266437ee533b708d01fcb8cc63f57be50153be9f9fe7ba09b67cc10e8ff0c41169c4ed5a8b88f2bac209534051dc0405036f39c50d00e25f60c3befba6df06969a4d25158be304c68f75aeccda4018913ebe5ef2a73b9a7a68c37816503be9301207ddd4897011f328c1d1e26f4244274dcfafabd5f3627cd6b6b806ffedea9b15a3aff991c81c18daa88dd186ee8b7178d592a9cdaf0ebc74dfedc267701a5d659b4a8fa90cdeb75c2fd86bcc9c9a1a4f02fa2d8a2a88576e8422b247a8aa85975bbedfad4e2f484027a1fa07536fa3da2f4196105e989f086e6e34985a1c5784c58200200fcb455044767235c619167348c5a693893b0c5ee0d6ad08915c94c9ad9f958262912d238da3a4464f326841320b152013213cfbf24f9d779f725323a4b2abb629b385e2270d2e8c84cd1ff6c41ae24357869866f62a5dacc8d211e03f3874605394c497cb5bf51404506200600dbffd632a7975de5692db25c6d4fb9484f2f3af832e4032f35d87f58fd98772ca2de561d149aa62cb2acf436e7a3a9b5af868f92e49f5207af5428787549d7a2a1d4ea7a067a02d5adc04c79875647dfba2da4b7361bbccad3491ab19fa06e1295b2eba76a523c81d8c86585d95b2bd894b0ed416da611b3963b78ac14f11474de95174a2cf4a342eca8c7f445360790e25d044d35fd62a79a31b70384215ad7f79c148d757633b1b31f4a041c451f22e967aeaca1e11f264e32ad4e6e6f2ca2e948d6a53320d48f4f0c0aa1403cea4abd6b9455af81279d06460517b3768594f0780402303005fd0f9429f3629156915e9a70e5bce760d90c5c809217ed5b2302bad5eaa78b7da9fbbdee70bdc90509fedb8aa031be19810601fcb2d81437558241ae8aa68a5e147d4c03021de25ee98bf0e1d103ea0265e63a6285fa2ff4bd93c197bcf0a22ccbe99eebb4b8ea1680647665dd09e1daf76c2a538a0358ebc699bd72691c4e8dcb50efb5325ce8e02e499ebdd67589f3c3447d328c6e4ac605afe78aa8b324973505a0716de59cca1826828e4cfb8fdea84bfeae9734d8f357c6b4e5443ad4d859f742e66a670345303b61a40e8ed0c0df516c7081b0363fb64fee5970a943d3d5777a2160dd136e603dfedc813676b0aa8f513f15ef9ffa3218b51baa2ca488bf7da00d6dda304bda50f8dc7f954fe4a5d082d1870d8f8f735cb6af44948d174841ad8f5e9327c426a7ebfdee0d791719ec59da466fe3394d6e57e444733c216fcb74931ef2f8641e03d3f31c52459331a25628fe5182cfa6ab1e40e5b1612e87cb6b3ee58b1a04b5c4f455e799d22e25d922f284e8dd7a8db0ade6e35b61e13f3e7c3be855cd0f91ed0af75e72a677861b955c9bd702669b4040cfbef12e793d2300072ff4c449b78dd4d483cb4c5d71d332d58c4b90b9205a1efa23a6ea244484ee0d4b76cb3850ced834b956de972359638a997c0c6ed7c0537124d11a1eda34171e6c9c1f0e89992565c5c8221e54b0a23e70a4f8d64d6f0f4aeae8b16afe84901dea3dc5e049e21c5e9a4b49cb0c7f4ae8d7fc3453b0290d60763c641335008501609a3276d57ac0a17bbb0aa72f4096213f3a1e1963ee6c174c8d5a5670e260923b402e77dd98b93b1649c58a1ff733d06362efbc120aa77d111c2616b8bcd94c40ddf3ae5060a11bce802666fce3b80689376fb23dd9b7934790e68688db7b33ac19224d302d3382da705afef3b6c7074dc84bf4b6579c18a101486b11001e209852939aee12d9be972270a70dc15efee4181532cae497868a1af853e4e6602eb2829805fe36aa2ec2debdff59498a903f0cb1fa392da29cadf02eb65202febc0571da7b09b940f5236d266bb2f65ec63f0cef2679f2ffcdf981994e23c991a11942b437383811c1cdbc20c85e2aba28bdc56fc44503f40ac079105b756374c794c3e7289b6f2f56136ec30640233bc58eabec17a4cacb49180e866aed55a1060721d0a6a04cc17cae635bcf07dcf2d4af7be0e8b136c3e129286c4586665c54b757208e261f23d20786134af852bcf97881cdf164a6c2f8ac414ef907f3f8d40a635255ff86aa684d5cd5250d81b45745c4e6e4569cb0eca3e80738c5e59dcd01338d38cb5568c69f7abde069397fe600b2890ac8430bba04e9cd85c3643d29e7f29802a02e7f459fd4dae77c8e4c1ed7a7efab90a7c293dc4f12738f67ced9d459ca69ec6e91cf3ff9d7e4a6837672e88b3c313d12ca7344e7d577c193cb4d01f10dc055d2f1a810c25c0d644ec17086da70ef3c26f6bb94e688ae73560cbb2c519a6b25a8663a661f080458670ad1104a7f29914da01dbb993f74f3c06e721e0849b12af613a59dc5cf5b150f71d87262698e806e7481c561cb41528eb69de7ac790cc5651e904c7af14773745e8d0e00003f4d4215a4f7283c18acc9f4c3f124d81d03b7d05201d2fcd41f2bb187ecbd14a38350954c6dcc1e649c09179adebc9f1351695a844ce34a40d4cf4b528fcf87db92d97afb5093286d89380fac965a938ecd02b7c88aadb393f39f2d426e701efd2bfde595a9d006c617e2a751a97c1dbb04e30da3ffab1d0ac6f10e1caa43a0b15b4a46a8f4f0d34e2477ae7103df167d4dfd40e8c45e70ac3052db641f96824146c5202d6306420dda12553b513b9330ac736a2887a21552bdec47fa992e42f24cac6dab9f6be7993f6579dbefb7a589e63fd373d02783857f21204d5a67625631ba6403cd60f275cf9b4f5698c7844c79534aa9a30913d8451ce865aacae93e1dfb18c53cbabb749ac8aebde3d6b885b84c55df1a06c3c4da732066f710202026d5f7fa7091e24edcf2a64ce2b4fe85a2e983233d7e8bedf789dcf242ae93a4c9737aed24135f96584258ac073abd7510f393af69b72974ca10094e9f3ed0af5131b9c4d0dc28402f02dc8b40a2f53014eb6c72b8d02841e9492751dc3a897a47da91d6c33169c41fa426cac2c18004b14c21f264d3f34eb8c635dba303d4bc80058f664849d47ff0a1c5dac531d2a0826cc6a0f00d14361cc56fa552fe7fe6deddba399ca552c68d61282562526c904a39e925b9ab5c7fbb24d8206c7c3ed9d0f650847adf9147166ff1bfe3b10c9e634db47f5f598c1d6b96014ec650e5809c431024eb31486ae71ac4f22d1aed6bb3a74c4f67bb977664428da53e659b31afcdadfb575e35b2fb1024231001bd393c73bc6b98060a5b53f3f7dfa44491d6f0a46a5041dccc89f6bf9edf0df208f4b5ff3e3d1008a77f26bfc6aac15e3b26b0548180f45becfb80e2081ab52b1cd9bead27a8cc24ee6e2905491d7421bf897d983c485fc2a349496ff4bcc9345553dc6827cd668bc9e6834620a2e46eda9efdbafe8260298c645b1a2aaf1171b8d5151363fd9fb02251c5148775da221b58e16a2340c07c90b372a613d62cafcfa0bdc30bd8423e9d087a8644c8aa49952d5d86f556f60c846643dca0b22f3a5b23eddde3ee89453e4aa395eff8a5d483de4dcb42fb6a9253675674ae64faba2607786dde54dba2da31b52aa6474d4181ae7aea9089bbf5b49ac0cc139801efa72ea54c674482862756b3ca9a5656e196ab7706c9c53350ce0326dcf2133a97c8928341482bd8752b39993ded2dac505d818a13187802397f9f67b0491950e4db5976bcb548204f4269e64479c85eacd10e3675b4cc2774b7baf84a45c667e3854a06892b837c0b5d265ce286998955af5ac98ca216a4c92a17fd48445e86850b64f321661acaa3624168204e63b5e1af0175dfaf108145e1cc932f476450101d64a9fa736244a2e81b096c7935079941d468474aa10d1b2afe9284b7a0372196a827260ef4db51f18253d685cda75896bea6a208348b601754d54e22e10e705e9e2441dd70a89d4642df0060771009774356c46fa2d9e61a6902c97320e930f440a94a11a441ea78f9f9eeb60649a782894274848bdec9e27127a85a1cfbd989c21ff9fbb8c7e6551b4f63c228cf3d7e7b7656c4dfa0ac0710bb82b29bec8ed03d7d7a51d00a1a5ad368d0ae1c245ae8c9360b2ba89f27687b9645e162160a427eed1a718450a756143ca37b95a3ba35e83db927c9ea8cdc015ce34c281e40452e24ccf1875dbeb51997edfdd831bee5f09ea2f6160101b1c1221d18a8dd8133bceb960722cda36cbc676bddeecfb79b178f93a689d229ee9ac2d1e56a921d28a40c49dc41736e17df6931c8762ba46769abf1416c5a866553c8205067216d94a30cb1cf88258a50b1c4c870421c328b018a8399a6b6568907942a4a60473823641b69f1402aec7f34320971a6dac197e38c31c7c13a2a024437383e51955bc8a3e8699c48ac315f5ff489cfd09bca5fe4a48b3d5b1201263d47c607d6b059ff329ab71362ef8e2102b2ea56ac4209e75f59c5687ad9c73a7948acd762586c28c87a600336a1704b3938dac5958a38c900fd14e4f8d2cea56e6fe739294ba60c16f9a94985140b877fcaa0e674646e6fdd75e03f7a0b979f0b58663805ab91ba2bb6f923cb85058a297ad6e6a63a421962a9ca7f9532424b7dfd1df8d04d4b625a3417cd91899f85e8545a0d96cd84ea410674a843ee8616981dbee6808f513cb95faf4e1c7fe1aec64684d9b653c5c06ff80b40161498197dd7c940dd8b875ac8ab120af4017cfd18a52f3c5ec3caf8025834f005fa6f497a21418c0a00bd6c003ebaffd5c3699c957238888e658c18af00e8b66c0eeab8af601b50ca1cf4d050cbbd25ba312ecfbedf3dcc1d27e6269f5774f75c08dd5e0f3e2529b80482efa6d456874897dc488984c8a60ee79ccae32da6e53d7206de14856270df318a98ef721d0f0a557e5e27aae7082baa99ff6d7a3c19bbb30b3b9b8788456381c4d135f5177a4e07ab9c95603e46cb31ffe0dd972a9189d304313183820f9cd3df679ebaad09893a35e5ac609a4545f26b0534d51634f5e2183c9cc08ec83018013cee10e79a1a42affeeba5cfeafe063b0f6b63c441e7a30e3e23f14b6b1d0c18368040878b78e79bf80fc6e3ab202d7ae24b94d7761a6328cc3bf401da83e67970e7bbae38e35136955c0fee71b7f7c5518a41024ad9e2754eb85e2b9d9e8210b16a0205e80b62be19546dbf251c4dd4f9342da469b9cd0f40e8060da90761fa83647d450f7b907cddc8b07a03924303824e41ce9d9cedc4c7dc9a3b2c1a654b5f7741ff26b4c3a85b312b50522220785f3087f67be4c7853452ff78013bcfc38f2e00a3df54cf7297b73fd67a052d6c7fd5829c7b2835ae68873b8aba65617775616c76a18b8fd6b5c27e7614520c3cf16aab2c33e36c2f9518f5c5ea95410c97ce2e5c029867fd17ef9b2821140c94da029ef668293c6d7f80624e1137c6cfe7a18d6790586c4a0f0f84bee9e84ad83ec0a04c90971bd2a06d8da1c6fb7ce0f0b9c91e78893683b855a2d6d747126d46715149ade8a3873a210347949a2d339140513ad6f8c4e14cc240fdaed4ad2f3e807bdd1a2bf4d9ebab1259e421eda77b623739950b81b1b6a61ce1a70aa2ddcc92985f0d645b8344835ac1270e3fa9c0533256c147104f26b8a174ace18343998c030e5757cb4c10384ac70a3e719849048e92b1c27eefc325197205ae54b767d1f2930ca492b5aa8f1ee8841408b992b5567d4e0b9e0d927522086cf0b0fa622e12e86af6697670d676484244d334f6291bc94eac59bf17e14d06a1376765250a3d3650d5b4d50a363e63b8a464acf091439980014052770b566933bd0362ff1712154be9d809e55d2b40780ffa214378751a72c14a933793732e77649d406028fd598fc487103999002f82b3861f48bb3ccbc298c111bc984af58eb4a019332b4f58e5f2d27bdd2cd7ebb34f44869fbb0d5dfdb1e869382182c2174a6361c2dac13e9cf98539e95c09f9811ea6ab7c05d970a4aad3b67ed981e360d8ee1acd3fc4a91ea7216ef045cd54d44ddb3d3be67b599e26929caf515c722e4235356c5a7909b1b95ae582c4e577a097a23c1daa4724d49dc51b1478c28b0107347746503114c15d9da8aba9ee1bbb3f63d8eaa0f74681784d97f24825901f521920bbac472fe05862e6510269086ae1f22cc8f80cc3b03d10aa2189702d0830114b4aedbc07e4e4a4ecd4d83327b7f1968efce64487cd4bb2f1c30ad704425b2c24f834b36ff22ecd7bfddb3534eb4af316208730c3b99b82eb939a31575e79f8852386e2c37a826507968b96b399a022824d49b7bbf264ced5d0d3506425a00a29c73a834ddd1759a22a1f6652123e551e5d9bfe4729c785bf3370e8ef50d6a514a83934621641bf39ff40f0488a11fa52f8aa5bc1f7df252b75718d0379040d8451369759e10484f32ef01d2cd2268e329275ba229ebc68b8b6a86fdc7355f55d6c0dbc9cbebcdf1abf8df2c777967c4f27f4b35e1d6802f084579550d766efcb9c79339914203ae422fb9abf0eec953134a630e222089fd0050fd7d75dc9691f93da85fa197a4e67caae402d5ffcf43f5fcfd30f854f62dbdfc75daee071570540fc1e0e5dff223c83dbfcd87aebc21f43c699419df88db83f3e6025a07e0a8046bc60ef1ada1c24c9224e9f0699fc4ae879616c268ecec254738afed04bb28c11e1a165ac29ea266b606fe506d523183e993afbcfce3efbf13ec32a082785ea3c78034b58c5622c56247109356c21424856bfd5383e504eae68c515b9876834e45510b73ed7821524c6fa87c294a45de559387ccb002d15df35785bf36ed87c93e44d92c6d314586eae85498238e35ea0185878992bb9d740ec0dd56eb884aeac10ba071c368a9857df9c57d0c2bca56ebd11b0aab4308c7cc70fd48491a032ddb368d2664a58c5e84d817790eb24123c63ab90d45750ac1f84884c3405b12177f72fc98dfe3f36ee1d8299dfee6d2bec7d999b906b76a106c4a71a5eaa550aef0cf43b1128c9812e78b561401c8c817d5c8540197582a50a223196e09114dd102bcee4e1a103ed2c6dbbc756b67fece649e6c968a4d927a7d1a267546687725e92e757f26d3114759035842630d16f2fe980b9896dfcf3011cadd11f7fee471efef917b009c36cbbd7e885aceb6890fadd97bcfe3d430cbc505e1cb1631542b081c6b1fa05c8fb431909f40be1a2c44f53d673131f3111d13396d9d4f1253e8f416a1e13ac299902cb8119dffd4988442a1e9e1571bea8419d4f3c808764a090037182cb3fd8bfd073192b3087c467b21745226abd21b32985edf886d06c760517116370223bf50522a76c30489ac6a98cbf5325e12144c8edc92a6f3c1d1e1c489a5db4090bee64558ac14b2e6ee210b21cc46ed14843ac08163208c705a71a990a06d48bd9def9190167abf8b797593aab883a62a1e6bc94bfa4300d0ffcee9cdb5c5d3155cea8e982eaf65ba752fb4e86a01e93c0dfea38503dd1ca51105a0c210150950867129b1b42e24096c899ff11c9f97aa3412481591e6bd8cc07a42e03b27cec351cf821db957fa194b3281b14a2df445713bbc9c93540ceb50358073595e19ea0413e662015f6613ade3b3b474d6ea9206e330393de1cc675cd4fe2aa400982f08cd3e3380763e4bc5c734923d6db0627cf515d73b6d03f5417d87a9a7403b24986759ca6e6f13923b385f18020cf82f7160f7c69b43c57cd03980a7da65260f85233289dcdfd18e10454bf45af5594b8e697ee854f78f8f7d32e1d20b815173f6f391fb4c7773869a457e7fba159e98a654d88c55330eeec402ccd472a084bc119936d93005df63ca0380a8cb051f24925c003ed14d23c1799112565b560415be5ef61c3e49a438f114e2b2996327bd6a200ca516e20432b379b52011ae7f5660fa8c1bd6c59e085177c559475d79f0f2e8592fea32080512489905c132515245dd61fc312b946526d2ac0068f8a45a5dd312cfdf6710803c28e65d9bb9a0a65c115f217b0688dc77901ff9a64c665c51dc4d584eb25f8b04bdb47f515fb57ef36310dba6a9440b0fb2f7e8ba2463ec598e2250dcaed7050bbbd9dde5cc9b1158cf23fd7fd142bbd832c006952e299caacb88b60b8e780096a4f47863099ae599f65bcb66f510eee997475b35efa3b942d7656ea24acafa09bb14e6e57afd1c567e83209ec5681977d057cb66150b6189db423ec544177c45ad291d2dd9180f496752a2ecd9af9740692d49a236e46341d934a59c5a85ae662f60178a1899887b3bf055f7f42260199deb59061d95a3d74156d17e95f3cf1f8a4c0374316ac9372d4d48f2c1a34986c18cd56e79a827741ee036217068e9f433ec84e8aed5822011dbd9bc82f2a9e24586f356b6b10a41b8255da76becad2e840418c4fb3630d9df6cb06ee3a00a98b7abad3d7c96a23730804211158b9bd339baa6df0f73eda7f0a25e14b039866b7b2889c0471019b91fae8e63fe4e2b7aee8fb8aff151f4d60c0d87f56be4907a85caa5253a3b0fcb91afc33157f83c9b045de5fa5a81243651e4f3a4b2cccbd6b82f13ba5531a1d181529bb275a1edf3a73da6117bfe8cdd889a295f7cb4917d8278352c300522cdf3f45088bd4b12687d97a713af9c54d4510d881964c6ce1150c3f01078e36176fea7100121a60640fbc48f124e1c529b417b21c3bbdaeabc6fa93b64984559d6e1602b309ce9e0d04bf09230fc2c1dfe34306448de5eec551493506fa17f838a44a11493962d7d714a63053cb7e5e0f778182471d9b8682da19a15404c12c7a7342dc278ee93e42633367f89e47c6bc6a63cc538feb816974a73011381a34169dff8ff8127013d14df9eef5e308c13795c41dd69bb5db1fdbbebf3a718314734dae47edd1d3f9537eec3800ce5413522c186ff3585021cff7c739d4f1db6ca0d6b0338c7ce47a89a0c67f4fa4aba53968d292f32f6756de3e716397e739363591323673187236dc485ee2ff7a67fcb7e153bcf65a693b339c388413ab7a0c54d175896f2fb9688a078c80ece242c0959d51e17b95916b3c6bbea22acd93acaf45038c10eca1ed6119565d4ef945fd8b76f7dbcd0b07436713155ee801dd5db277a3f6a6704a83d5cd41dc38d81ff2f2f49cfcd1862482c6b79d302a3d25aa8b8913cee00ed45f3bfe6acb9260049d371883b2dc952aa062fe9710532756a92d701a75f2eeebc9a9d36920c3e90c1c00a58862db66c9db6dae4d8632bfdd1d53d0cc3780ddf580fb443b89934b1bd362d8d94b968f8fa020d80b626008bf8f385c61cdd9f3a2192829d9c63efbe7f3c8fb3f55244ad24279f127b820a634b7f99ab509a06bf7831320a12c08602286bf6ec8341d7eddd511ce50a1c29758bdab7582a53a1ca5b223130fde8ea9b3bc2950a041ac7e3ab4505e46cea94de7d434111af8ea3222f622e18be07533d84e6ece259eb2ca8f66a2409de6ffd3ba2c5bba6b56e388fba5163fc3b1dd555534a1a87ebc3813dc3a6dac3731b778b8410178e1ffd75a874dfbb376ad8e7fc9088a0ad2f0180f09e23f61aa95057f9dc4dce6a2f74657b0801195933f294aa24544b9e70dc51110bfd953019db0df2dd00d83550e6e8b4d424909fa5ed13636665c97091a8fa08272903ebff4c8f971c9eb2de823bd1e879500974c5c9a1d090f1980a65fee4f2cbc9473fa020b2d355a05764ec368bc5fb41b176d20302881b71cc3dcafa8289ef041e3b8b7a0d1154ee51fa235c7f169fc6b1ab80e40ed1d05fab583caed408342378980e810125d3418e0355b73680dc1d5f91414f47c4443e013018e357f71f1d4ba25ca896511da2bdd32a000d53b6d20217294411aa322dc2f9585601428233203cdfe1ee40d2feec9268d02c4d7ff9dfec292419274a3c2121f4b913dfd18e12aa64890e3fa4bd9f9b239299c23607e1ea31da2e47d0a4a8bc8b2ce8267951fa76d9a3f8fffd4f4a16d9ccacdd4aad3b46b041d602972ff09cee172fac98e567554f86ed4835ce9b036d06bf638176cb07077eb887cdf4dd5189801063c44ccc143a49e3a426f0b51508e65e382464e2129401ef55bbb1d3c48763b50503e74e1e4762449563c60817ce6a8554883967976a9f308091a83ab09454d526a3ca8c61eab26717cef22ea2c48a5c9c7103833ba78e4971c1eb6768d15202b31fc228ff1e8766f21a82f4eee170d39e4745ff5440793bdcb43a9df37d8cf6ae5ae550df51acc34aebeb07868015eacbc05857464f98c010c61dc0817faa2bae6e5d9618f9326a709ea1e884f34966b7cf41b04644308c52defa22722011e0c40f0f16fb42ef9d567bfaabf47bcb9cc1f6e442317179e482550fa7fcbfe6ddb28650f2ac9295a4602b63e3a4218c0503774bec210dd85b2489660b20413dc62d7ec5c6cc5a32a2013ac415c30a93a340bafcdd4469c7659ea82a9f95fc8f125d690da3923526570051dd1014f3730d2ca51c12c4c3adfeb6a2ba3c95373fc11a4aeb94832821d8c92bc7acadbe273dbad0cf7cb1af1df784aebafa854781c5a0882463d66634efdc1e8c74a04d1b0179797f14d8fb82cd256b52bc48a0f8b8b9ccdc668bf11b838c6a43cfa0ffed764557365da9d63e3a72c1ae4a6eb99bd3a2d5d7558165efbd76777ccdd185884410f9bec87b5891211a01500cf8a23c50ae48c6176cb007f2f63721d322031007aa81440a8a22c7275b5cf96747839aa6ef1ae5c1b71dc28262a06c9ddc6c1a28ca2fd074653367a1110fc33bbc3d42e1ae9bbab0fc8a2b5448b4e4ad66e67f9d75ade1118ba38480a80a30142962eafd41861da0a3509125cde73f14fb7e38a99966a380d33e497b01dc4a67a0cf141ebe5c642f877cf61f39b6772adae29e3965b1842a3d80e8b95a88f967a93d03fc27ea3cbffc7a1057f1f3cdc6b77248829b72d2a6261011a1ffcdea21812f1f71c25406bed569cdafddd05973b95483106dc6a329f0b7f0d2e09b943623468de20cac921a3d6f7e5af30395ccb2b09f09b980b2a7b7b4b3ede59a1fdd1b1ca19ddb324657a5208bca2597272c5c5e6498323ee8350b744ccf015a4763f7c4a87d5e07185112bb5b5ea84a59793591390f11f50b5c9130e3fcdfff100b1e250ed1a59243dcdc601e9fea408e16abd5942f666e2ae0ffe02ce974c88c95509f56501c32ed1aba3ca2e1807f0c4a83ac02f6aec05fe200863d908680f304936b514ad603a168c71ae62232607b6ca7be0f96d27d8d0c9dfad03f2c7a454a37264656e8f800326077132e0f4c7d134fcf70342478bc54dc15679f92b31890475fd567948aca6907606564b65f84bc10d13a51a28cf2111663f0e555ecb7bd18ea1057bdb16ce16a543578358131c8cbb4e6d210e34c57846fd95cd40aac5c9a0b6697f309cabdd9e263469e11f49f835b6ec082ad83ebcedabf982824e4a2a4a3354ed9ba4373cb2ef3821c8ec5b31da3007e613d716617a9dd1b643d4403c6f323913af77a5a5f591df001ce28e45a963e46aea3b2080a4bb63e84cc7ad58a5825809e9b598dbf40ce9badbb33af70409ba71eca9e529092c271c76b466ce8787c6c1d818f72c6081060776eea7a5d2b8626a84f2838e63b6021532fa61f26c24e3a7f2506b24c1a1614e3d71ad6828b836712761b3776e6579c177b38b6c6489911c6a79e5666ee1e42043ac8acd81c6d92c0bc5bc81a062e867745e61e3860297b466c7252dc800e02380b8eb9e0d07dacaf94b81270a30e20f760608dc4992942e74002517ae2ed4d885b2b31f6df3080b1391879cbd0f2908c8fbac145b32205491c4fe8f10e99b3d587a09f0ee9c3a198b405c045e20630d3869416455641af8846adc12ea01a52ba78c0de496be2a7c99c2dc80deb883a9527984dc0fcc842407cd4af2698fe6659af3b6e74e182e5c8d5bddb588fcece50e74aba6bffad6c79267982a27d0396a72a18a79d1bcf30ae57188050c037d28bb59171cf746b2b1def60f06a7f4851c419da74531d7304b4d5fa4315a8c27b5c650e7f2dba4b1512b3b2b8d96d18c98b262365dc93e7cea350c68a1e9f5fb49d506b0c84da18010ab00832aba2c8ab970d7031211ebfa9a55f9cf71dd6f4ad879d16abd36d62daca22e2f641de3afc5e8932a9b73ad95cae4e14752c96687988bd457f58d973997e4a0ae81718e7d85f16ba564815eb718ccd92df920b5516e8811a21e97e5d393f29b2ef624ef9edd72ecaf8f04912b7a9c4abf22c3313a56e914cd3378594dd9fd80fb9073bb84debbbf8636be0c1a978ad15d4f1711d670de58f992090922ace8b3be76b98b0e1f6f5abd5c238ff40b21bbecb5419bbc509940059cf3c60088ea5648f03277e9487040adde816ea820974eb1157394275095547d1a2a0a8067e31c8e0695a6e385b8e89d08b7bca87b3a8647ae55175c97bc94a46a5638fb556b163615b0070a43962e9c3518a39ad1943fa2433bca82bcaa75281d4a5f3ee49c825f0a6ba80f983f4aa307ee437fd932a4fe2f03c1c39840fb410dcea18dede9bc464e1e21a32c4c05350fe1539c4500cd78fc28a95137494a1fa20007c19c6c477a6d2e23d02321c75f8d657e05f52cfa98c1580993e85135b994514a39737344ccae832c6d6244cf899ab3fd21f880925406c12b30f79d6cc004057f860e1e716bc91e2769676dfe6163158cc41bd2f2a451fc3b621d8c91775cf9f797010ffbed944854935318722b3a88388b5feb076246a23db88654df6f5037751dbe0ea37240fe0844e8fae71f41d3fdd85fac443a9e3df85c6911e7ff481e516761c3cd8e06761671b80595ccab0ea0193a92e3bd566c07c08f4d98df679e104cc896ed23b2c1ae8d154d36de655f4989c726dae1c7eb0f8a6edab8b92749c55ed1ecec453f7f803f68638b3d00fd8185e4ab918d5170e0032517c8936c57e1b85b8c43c571670fa2eb444863119aefc514e04f3cb3fe345155722dc1c5258674dbb2a547289c937de98286c023834c4ef239a3686426661929a5c1c2b3d4f0586ae5e6d0ec8343e5ec09020752c6d679d4ca9f149150c6b865b318e52865feb4321d0c04147376a7d722dec5a856dc5af0fdb98009052913a7f4ea746c20f49b13c8e450a4d0bc746f09c92f0d8a81fd735e38b8f52b485ac5688f01206637efac68a291c16bb01994a28262af568600abf774a5b7fb5d3ee20ff0232c0821d80001e2f3854cb9b92a1a08aaa542379115b2c2aa9c70de02250d4a2114bdb33bfe7c452594171e6616f4c52a84b3e4d31f304301f6e92b67f4a0aede6efa267081b3e28ca5387c9fae414447aa266258aac051316c98d2c06a6b421881cfec8997adf5901d77449facb4399c1da016f0e571039d64aa8412ae526d7477f53e3404160e4f3572236c69250a49f4c6ccf52ca31c25063b9837d4496a1a60b3067928d2487aa5f2831fb1421b97602f6c3a19dabe0815e04d6ca4c2c64c79bd4ddfc4c2e6ade6a32364061bd3af37ccf88bce03b66862cff5d92e72f7f324e77ed738b6f571be4baaef4bc73f3ee305d0049a8ac3ec112da89c57377e35ed088c78c7aa1c476aecffaacb9fe3714793dfec73d5d2f0c158c0fc3252d7949e1bbb72fffc0307b10783fcc64d19fb4f5a33232fce052a90ee78495cad7a3c451a4791ccf4d30774a5ee39ca352d328cbca89c96474cf4f114cd20801445a14e2801f3ca8b00ffcecc333419267dbd77fa95dc34f2ead3a7161e856be0efd0065407b4c8b470d2e3366f2d5478136a66570b33d5150068a0afdca77f757606981b78ed02cdd9aa7a324e0044c537f426d9325cfdf17fe0da183d67a98db2487b91d963f9289249d6871169147769ee8f7166b052771bedb716d2aabcd119a539b517756f568457e9fc141781f4b5d9feca9e7fe4da6832bf2bc67b1814e01352407a5e953f5f515273eac0d35cf1945556ca874ca212a40996ce80c70f8ff15dd6668a6cbf2feeb2aaaa8d1f64f300cb42082829a431b79ac09e5e94117d8a9173bd1dd045e66ca66b8bf55a0b11695f71f410a91708213924fc663570e56d4052f0cf6ba75cccbb801118f3b0c4437ec48530666ff3664bdb40c80adc190b8b8a42f3d3c0f9bd411735313700275910fdb86a6deb1e6a2428e12d91f7129d9d8d4644456f47d5443c997b862d2081cfd816b9251a4183e0e672ef7930fbb4a51e02fc2a425c332e273b1546a2f45a2fcc55cd7c3256ff48312b8811a973e2064465237f8b7276ee46bf8808439fa0912210e2198cccb9beea0a46be12d3f1fc4f4ddc70bb6c800a9985094540dda2593f33070b48fa2090080ca42568477c04c846e77ab9e534fbe6a802fc13040b8cfd58a35d2216ec5f211354f743f36a85e072a17aef6e2792b10e01971e936b4d57c091e82f4872f59309f69185b931a620fdcc97a50dd60820ba29dbedb1dffcbfa53e26081b029a18a31ff9d0d1266748563560374cd8baf4f8cc621f17dc90cd46bdcfc50729063466d2b3405392e077a623a4beec8e4cbf5184f50b0f8d91b59e117680ea1556017f279dd687523d15644e1a1cfef8ea91c95b6565009bdd96ad0894c95f93c6f880dfd1e3e579d1dfea03b28e0a29c974a22006e670621274d596cea18d487da267c3fbcb7c4eca3fbec8ffc1a368868bb0f0df5e06d4392059110518bf6b01445276fcfb2c05fbf1510cafaedba0c568c0602f621fd694c28a8cae41fe26d699e8bdf8b9075cfa60c46ad3c48f2951abcf1fabd8235bf247de27e9e1a4530fb06bdc60f773217b6e0cf486903823edc95bb79ffbd7e4f456bc2d8ba9925a8cacfcc5533d1eea8fcdf0ccce34713819013b107fd34d05fe8d00c72edf570d00395d14906fca1c8aae062e08e735e4898dee946f9c2f7d610eb71034fe609a9f8c021ff790e5de95d8f3ae4c203c2eb38ca05ed12737ee55a4cac9198a89e992655a3d72c8f63d11789f36dfb1ddbfd71d1750ff85930bfc312881b131d26dfa04d81d035ce4e26c7acb41f0a83907e9c12b4a8c80a162ea62866fe89455212a4128300c708bde5613954a7501b47e0e4b600fa5f0475139bc40a70646ddc5fb4ad0acc89fe190becdc0d21330acc81cc2c08ee10e33af0027b3bc0fbe93c581132038f8c13cab146144ca0b13365d0dbfec7ce1fcf26e97c525d148737bdbf1e6f083bf61bab582fb90f57de3e7bcb6878abe353b912fa7179a40fc555c8616c8d352d3b9c481aa890f418dc0fe4db673316b8ba942d56be9325a4961299fb5cb5d140ead98db2cb12bbb5ed3dd5c47d28385e2f023bdce1a94e8024e0a443fb7ae2624a4305452f8e95943a377716debd9f81609a965e5852d9970ff971809ef4a38245c9bbae0d9316bfe682b81a8bb79b6eee4907319ec259f21e011b54da98803d4b929b2f90db4e7609108d9e8fc721859de7fd839e67199ace80513ed759343e82f8230ebce8ce8e961a0f65332fb498cc4aa4919d3c2f5059306193a400600aad83b807be09f39c94134b540224dfb0e23f413c1d666e876e3115ea04e927e7eab07c338fa5d1540d6d6abc1a98d71b4db4d4e5e00cca45ca8ee2c64692046559bbcbbf6a97f9cae89a98391ffd7384a0143e16d135cff09e408cd4f61cff1ee2cd3fcef5bfc6566634efff9d8521492d140c88c8a2d32992e64e0b6bef7cae78991fc1236b8f78f31bbe4678d6b795436d59026da102f23ec71adc22d5fae81aa0df3cee0d0735cd106191d2e5640b2b82aee62d40b6ebe344e381c7a07143c555ad06621aec0dc16a125f63dbae186a161a00c7d59aa8a8ce22703e8246b81f6ad1dbc9d881dd11b46a4766c39a828a92ca3b17abb3e151917fabf73ae86fdc8a97da59b98ddd6d03bd524acb24f1143e74fedc1086681b0aa93ddea2be305a19e33590d9d827ec3e6c16cf1ce99b69cb3e5271a26f5f030c9ab7d24e2a1c949525be78a17f5ac68abada33dbe64cbbb68b305ef02a3e435f1d49d0cc5f2860d5d3351b65f6d47bc2d1670fa6a232c4b68cc8f8ad5bad9d398c0dd04d959789ba9fb768c2d7c072ccb35d107403323f0771a5b9870fb4cd0834f8fbf380b11da9f0b9a08a18166ba9e1de8c5cebc54ef01846e7005dc0bf5bc4e8c91b131b29b7a38a31afa75cb28e3639c65fb00c5fb6b1dc19caa09363e3e7c9322c8180f2f7e8359fc12960ba4364b569672d0e49455025d065c9f0e71d0de30a50786b13a1d34163cc192d26213e42db76ba9d48e021990939b6cd4dd61efb17eb6c4411c0a6535a0faac38fef81644313767d37f4e3069ebbc09e6c1dee98410f74f18ee0a1e54d88adbae632086be404fb365ffe1e0b4e847424584f1a8c8e302306b725480ef8da993aa71d6698f4d90c69b595863c9143a309ff3ade2d96dbbc85c7d5764a24becb0fde5b40cccbb3b29d29848a1c0e782ea511433bec19f001ee75cc7faf2edd571fa1ab1016a98df0420dd115ad487af89f784428b65f083fc4c15d9183ec660fa50a0ea5860e49ae0d275999496e58dd62922ff7dc2f609d6c2e735fe4d5159f6e395568f577e3d7db0c5c445f8d1638e66b80b2865652639e293b10eeb27483daa2374d075eb05ca8bb45a262f7bb12e2339bf4034dd4e6717dcb51275512c50cbfca681af099022a17de03d6d8d49a8121116d9367ee6a5e07fc627249e24f27836fb5463c51fc0eb55c8c90f5b906feede6ff7287cdd2ffaaef686c6df3b711407003a62ecdff56196eca2ba02539146ef01d8ec9fd881cb9390dad718d4de2eb8d46bfed5df51205bb783fca96eb71c4529fc911bcd720a7e3c003f20b9b0803d5ce35a74a46edf066c468dd72c9acc9171f27510b848341aac5fe1b178c55ea4fef3a10ceb43b452f58184271236e470df71d0b061c45b7ad52d66473eb0aaa8282a43051a368f56ebe20fccc2abdbd2c376ec3a3259cde9e5a9393a659ea08ed23d271520c329c857d4dc1eccabe80866c4370aac87283d27c0004d0cdcef4c7576dab92dc5bc70afafb9a884bb456226d7cb49c6044a0aa0753c31c332d4134eae6481a54951f1ee2668c4d554e95148e660a959c39268e2267c5fa07a975c289e68974d3ad2d4ab349b2a011afa69266db2d766f84c916bb4c359b3171c65827587a9b4b7012eff88f0e762e74c6d092a3d72a35b9b43dacf97e37df00f4d26295bfc985c2ffbbe5394b8eafbdf29c9642e4432e23369949a5dd13db601c2beaf0d1451677359944c2ad6c9b55fa2b9589764b7e675131c038b64984c9f4ec921f7cf05112112567d106f6af23dc690f155085bab354f006e95fe81aa1cc812fa231336cacce8fa27a06a7bbecbf988bf88e4165a509cff0578eafedd07f67ac5aa2920eb5c46d5261f14a6fe03649e39dc8bc98f8a1d0286475d3cb0bb747b7681b5c4655279a549f291d12e746fd0bec9e6068d39576948923ffffbf7d87477b07ccd6568e1c151553871d0c9bd2c6e7eefc7bf53e3032327fecd10eaaf8b13243a3c14f779c92528bbc01920336200ec786ce1d1e8845d79348e58e84aac8756ccab61c32c4a8b6d4ef6c5c38a413e2cefc30b8fca58eba2a39313e03b4ac5fdcfb08141682eed69a9664c25fe1df5270a74b95ae9b9d819fc62d89ee32815837d4370b2a5fdf26f92f70360fa0eae1b61d6fc82c36ad249083ee6726e178737e851f244a381335d972324d8ee926ca242e0531399062d9dcc318f94265e8e0b77c55421995afddeb129e4a3969326acec2b4efde77a47de833cfecdbb5ace4429ebc1e0f54a89b677ef78efba1d0ffd168c18923681bda005c6e8bbd1c204f44bf3e182f672861fab055e54d2fc1cf7ae03403518630502e4e54b4f5efdba1208a0a2896f8ab0d70b6f819c2da62b564fbd61b69b76498fb46489468f6ecfbb8b8598d906220dc87cab0ed5b7a9929c4ffa0d622e999dc97dac258f5f8da8e3ff90669a3baae32a08fc9fb97cdf06c0aff9a40d155c6bf7d132003ddc27cb00541ced8306cb0048f0ede72332e177f7b5a66706483368288a8a244891d0c1d133b1c040424938b44c45668d788ede60545abd5d9787f807ac11dab613284eef1d1864401608c1d12b967b96acc6ab9e4c140358d70628bbee9cb4cd1ba832f553f8922be02b51059d6f2ae504b36730c900e900b730199e60721dc68343a43ee16ea7875e6d3c5167f97eef52cfe3a4ae6a439b2ae2cce3f8a5d84bf10481f12b7575874e89c6eb2336e98e6f31890f25acc61145d3c6892104e55ad0dfff3a85f2c4e423125a7b7a8ecebf2f2f62e5442f6ab651fa7b95cb5524257166f921ad96376537c27cc9836c888c8e3094894be7968c9a3a62981b0e73b49c48f4c781014b3184443708b4a538f470d1ee08647b2df3cff4949bdcca67b328f35f6613588af39d3ebc65984fbfd42b66053eacc6292d5c9089cfebd8353ba5769f2656aaaa67643ee6253fbf10fa51d1aa5b3d5d42e53ecfb828002e817784b77a9a26aa637320132cfc1f65d29133077abfd1ffd2cbcfea193a64a48bcb88d4dbe0be5eb179dc55f86c0580478046670b2a43e86c600cec9d375b5d44281e6ecc28b90177cae8d72c500b2b9abdb976aadfdd17fa272683f01f73d85eef90317a19bd5e9745db7f01809fd6a9124bfa6844e6794ca151f30708753f04fe6695e9d9d55bdd24bc23059e5f04860d58305c19251d4d48f8f53e5daf56cbfdea044b95f072bdbc2c4d239fcaf5f278ae5f3b83a11276e02c46281c120e0c966d30e996cb39dd155ed2e2a0d6783b888f58afb6bc770a101dab0df6b7b649238410b209d97bcbbd03870d840d140d9d218611de393333e373096168825f393c7758a34d2e47cd3330a667072cf7151302ecb90f61cf61249cf8209d3b1250a62c1e82fb0a4682842ba6e98c07f67e3379bb36ea44339562a30e136104c09aed5e7b9c10f0d9b5b8c9742589c51919b11773961d723960b80b656a46aeba193973e5c80e9fcdf0f83408af4cabb2f7975d439267e0d603857662508e3a39fee498134f23b7ed08bc465c79c35f0490e4ed70c84cce3c991a85d53c0d0bd9be6d874db86f7d8fbb373ad511eb804295383560e34bedc5edbd6da54ddbb499ad94374dbbef2ebd5c831984f1126ad5571abaced02a1a33f16229b51735cb5226596a529ac82193d2842bc50c34ea6c8f3af2ba2293f676a212180a79b148ab7091f6e489749e8f767e461fec9c44e6bba95d9b93d3346e6a1c7763e6a616757c00559e0ed093526a5847c7d2a4868958a71792d735ee3a87a34e8fba5309a212ede1a81b119f1bed346b98c5b6277fdd264abe6c82684f6a9de85fd775bf6c98882e45e798b4a71395b8384d8483c333568b79caa8f3519da804d591a73a49e4245a15a30e142f5c97a6ddce49d29e507c7237da4cb427a30e24225736302525f499f7bc03c4158675884e441f404f3e07cb0742c1b22bf2078528864213c75247ca24431d90d423dd7485143488fa6650a68fb50a2178e9ab0627f816520cf69589267d60278c4c7b54ca21d70f0cf576e8dc69cfa33066d8991e66eeb40ad2c874e2cdfa945178fe2693d92353f4743b842aeef3993dd6a78fe85484a70f9ef4d3a755301fd51efde684fdbc4c6fb46a9e9ee6071b580366fa194faeae63a7d664d22aedf41ff78efbe85dc6bde32ea4bb769a1e75a3aeeb3afc8d9e5d1b651a9769232d668d9b2e80297a783899c0188afd9a3a3636c723fb67bd3be41e3317adee9a488779a5db2a156bbdc35e7bd647320a10d0b8912e0edb1efdca65c1819d4c9668954907cddc69e6f04b7bf425292ccc3473b7268592a94565ac8f4eaddb7fa391f5d13f8f877521233bb2a7a3d188bebb66af4c7bf4ddf5daa3e72e4c7bd45275e74e2f633b3c63b96b967584978b56810b00a853490e98a4810e595b2109266bebb8679c0dcc169e3eedd1471258af55301328d3d3093445ab2214619f22cca012f101fb9dcbd1d906c6d0cf1258af7feecde198b794e8b8242ab931e7c62437e2c8c8143d76618639ab354ec82fd87f5ea6de6442eff1644abd4c674fb402959326b7ce108a2b6c207f33c3af661918e8d85564e19e4119ea80246bca420df410652dd19e8c44b4278964686fe6a583792bfb2157199e917155923793664606b69b64efec377a951d12d1a91b3fda9339b0f3168e4ce24eaba665793b7187495c8249335922ee4409cf4464c24464c20413ad8a10b664e853842f542bd823e28f05c0d50cc402f482b504fb4120227a35235b753d431f2ada5282ad92e5170053f258c8920c59cec815ace9f1c9f0e7c712b66f61f95b9675eb5fc9faf52c2c7f58bf2fedc952e9a555f0f2af168487509622935264c2a455513ec1b2c8d0270a2de46f8606f9f3f2854d1002e5207235f343ae3ca10c71cf78fd6d3be0e393ab4541610843c56206b66d968e708423fca0f4f3f343839844abe8617e8130e65f7422c3c813e35f6c02c6bff88409545c2275ef5f5422c3479d5601e05087c34725adc2adba878f495af5c3d3e18db42a87c31769150e87bf69d5cbe189b4ca74f821ad6a71f820ad6271f8225a553a3c9056ad1c9e8856910effc347abbac3f76895e8f041b48a3bbc4dabb6c3ffd02aedd9e16fccd090699535e32e2d87332e0aa65e5cc67d81a9178fb925e8bd38cc6581de8bc7b8167a2f0ee36ed07b7117b742efc5517742efc50b22f244a15028140a85f26ecca91ba1e7e22fee472b90512ebc0bf38bfbc5ece2f37e4832ea90c3813a006efc00f4e24530863c51570263e25ddc2f7e20c7a3ee77c40c795e871b73a0178f6f4c02bdf87b230ef4e27f8d402ffe748b402f3e877b03bd781c2e11e8c5bfdc21d08b37dd20d08b6f718b805e3c8b0b047af1a54b04f4e25d6e102ba6b80153f12c10ca0cf4e2499706f4e2471706a6e2edf5a017df5d14f4e245f7f00596a017af5d16e8c567d7c20d42e8c5a824cf9c2411a7cad01984a8a03225084ac914c90f79ced0c8f4d0479e1eea2f2516bb654a4fb11146f2dcda4ba255bde2c8145999131a2c80bd0e7fd8a4d68a697a6c5a2525a491c74d2aa703fe8242e08c33de82545e87ab7acad22948f303858732346085b555168516b4a0652b9c7546e646bd71e3c6ad25040da2a2f6f2d20c8d2cbd991b345af595604a2fbd82352d6585b303720a7b6a611bb33cbc11b1da565d9af63c1878eb74c25bd6af67b56555989a724a2aa794321e8d1f6668d0e89a837e6c2f66cd073bd35ea4692f7e06060d0152c4cc0d4ec7957db417af1eed45681344ab62ec48e1bc3ddaa338564a6309a6e2a56cd987b0d2d4206804282528d484060b60ede3bbffd01e649181c58e9bd0d8b427718f9f56353c668f6119062c760c3791163bc5287c3d76e92ba5cfb06b4fafb516fbe8957c5ff66815e4326cdb6b9af66cbe5a6b66d3aa9ad56ab3dbd0fcd043f3830d861dfe442843b1c723b974608f9db1ce7ef4cc626bd20e6f8925475c62694f3691a747623f5b6f6596a1f1a35523fcc5dbb7b5b7b7c77eb4ca76add6662b53ddb36bddfdd15e3fbb3d7cb4d73d7cfce8306ca6bd2681fde04f8f56c1283e1a46992d82291b5932f4290214ba6061861c965cb0f034bdf580a9becc272353dbb35124d2d17cb087909b3ddaf3d19efc4c81fdd19e7c8fcb041d35a4551ffc01d2aaaf16d12ac8842cdfc307f66779df3641c8dbba41a10c75b0421826872079b06f5bb69de3ee11cc0b546a9cd06ff78845852530a9d9aec929749793e5145b2b8e0c05f4d7331d4d344522ad659e8860099136a150bf65b7a4638519ceeb275e9d5da2449e77664c010a30438f56113102a5e04467a8e608a7049d9aed5300651f60edd9302e8159266bb53696dc00d1109724e109350359eb252eb770c53dbec255cb57d46b8b24805e5c7211215f3d34768461df8dc49d1c1a2ca9395282f253e324c6ebbb7c6094f81be5c882d37cb023ed349d89602e6d810a30e8d418395232434fcda580134b7dab0a3d2314b4203494841fd1d055579cfb8c2b70ecb17e556ce10b7fd713b22c451af1576f6f8ad8881c9da390cfbe6af1e680995ef70382fb86e62a799a5e570f8c917f02a6e4a54025cf25050b8b91e88384299ed41839d24285508d13cd0347b2274b6a5aaeddc0da404a7c61daf54a02b41794ab089711ae28608c7cf5c9f2314ade6eacc14c1b362213a330c504546a8c1c613182a09a99ee41dec8914d8a27352d3fa202aad98ea44673d2fd93110d5db256ab26e17a02bca87c171592a7074c63c272b77e81dc1c8f950cc39223a78374d38e4e887d77989b07e975ae78779bb4e09cd7acc82db3a7cb956e37cbb547e6ebc29fdc35d88d35a27b45c92e9aa3630de6336231394ba461da2fd9d39e361fb1f469cfe542985af1965b61ea3a77ed0dbddf0d95513821ae472ca7684fbbd267e5728a568db45114fb4f46b11f9da6451ccb3beeca29582e7da44f7bb2a45d135de9237b4832ae9ca659aeeed7e82c37e6d1bc7643b3e82b37e6773ad0baad6fb664069103c27abc8cd2aa0e4f9181aea00b4a7bda45d6da526984af2850347cf9d4c07e7149ecb15b5f2cc76cf6c49e9e1eabb670db8d35da861af2c04e8d912399187eae7333c618e3ad3976c70873bc7c3ade0b4aa7e2d53364cb90ebbdb291b6000fdee05363e448490b42354eb21b39621161a866fb9101f4d438b9601172aa92921b2c1ab2ac5718b2dc42b64f28558106a22aaad59ac205e5f2216113e9347f34779751f2d533e1a84a190cb52745553a1c69810ec7640f73776badca347acca4bb8d6ead966511e127c6a004ab5ecf4032196cb46e688e59261acab014b27a647d7cc77a9b709cd52ae984a5a40d592341917b72c0fa607b46e6a221d110ecc93ed8b86596c8064587501483481be484c8ae15d1fdd1664bfc712900f4686ca669958e024055942c0f699abb261fdbb973d88891155968c2a4c6c811aa84a09aed475c786a9cc423a9d1e2b6e95c3da4ab08704544a6e42f2a2a3904e809491e2f649904a1275421cbd410a0ea8ac2fa15c575f5441c64f9a8736bbe356bd6edd8735d978ef4913c31c6b8139f2020d6c4254c903c3d974e7bd80bec77f55c3db0c6137055a5b04cc8971488c895a8566b852e9f9ea18cdd951044c95588ecb1a73d7941b97c2c70f9c0bea1b9c986735e836153c457cf05a5535234942357d7139892ab8b094cc93f110d5d4f2e2659be47cdf0ea9959d5342dfbd5734111baaaf46ac61208450896489e4bcae573054936f4207f1795212ce4ef3ac3952df944437968662aa1e4154388229340d4867ca944439715b91d574f9657cf7c4f0b20d24f8682c9f1135a4219ea704422b98eb4653960061a447d5bb46912d0291f447b7292c0b348906566023bfa6a3e9b378913ccd6c9fd43d5c04eb4cf6b9a4d254196a2ed439d091c77618d9453b0b256ebadac605a7337d6449ec89361557475d751e4b02a7289e14db15fe481432fc81f04c2b042d133ae070608d051cb326d24aad89c232d8e32ac8aba6dab4708e558451d2d4a1199b092e151b7b292755dd705b198b5d6aedc2fe66cd5d68dab64a8423a5548a70ae954211823ef799e376a9148241abdd66ed4fd2ba1c062531fd6d433744aeac89982abd047af43d647ca4ec7d68f9eeb8845b46235cb1289021f59faeff48db40c455986c7816636262976d046add1c6166dd838a3461b2511ac91c3166dbcd0affe36da08c2126d0c29451b445ea28d1b114ba65d32c248ee0789368ad421d186910b7f4d4f24da883871c675136dc4241a8031f4d619327d11daf44678a09169954c1f7162647a1a93e92f0f408f7ebb2fa0477bc8f4187dd440926803156778e046ccc19f0f999efe4484d329072872c821531883030e2fb0e7e5c5440093a9c5005ab4602100162c4a374a25171b2e2e2b6aac58d1e2434b0bcb0c0bcbca6a6585a42291463d8c469686b55d00ba4ec48348c4edc0719bccb66933342d939165580c8655985aaf18d765c1b02c9aca94663a5fc01a520200d6e876016b4414ac01ab65aa1888cef557a6ef4144af444be86174327dc204f6b88049a69a508f0b74903f38854ca637327dbdac86dc57a4e67e5ca2b5a88a0651184a0a30550fe514460d86d1dc5c2469d574a1c472a123515a97c1a2a4f48a8453534938595e12507bab294841adda5edf42f46fdbb6f39017b23d5bfdb4b7bdd6ba955040f82301b54acbeaccb46c45021a0a6a1549ca6a28d757d2d0ea0c676895e81af44250ae2b2a6b208d641aece8a4262b59ad32553fba9a126c8651411845220db56a7b3d49a6ea6b95f8833d1c10dbb3ac0969f523577035a557364b7cc496bf15935cffd99cf6eabf97d1697a8523572b72c5f296ea52fac6e9b0b8ab2532555fbaab1c99aa77b92b1c99aa5f715b2e8b97e56a47ae484ce413b96279fd8a47ae565ee56ab52353b5cad5ea894c552b532b1e99aadfbe72574ce42ad6d4afea573a5fe5b40a47ae5054f4ca89ae5f35d12b267a457ac5ab9dd106511585855c515ec81545865c516bc8d5454eae2e96e4fab9d0c9d505935c2de9f5a820b91abd5ebb242052507b92cb51b3866707ecca5b1effa1804c08187de5438cbe72d291307df421486fc148b06093869bb4dcd2bd4cd5af5cd235695f39ac195d93864d08b82eeb2b1889d1add1ad2341fa7558a329c1624e06560524eb55b55aab02caf5a32b2353f5a49bf1c0c67a8d72384c08b83eba8feb230c65ca877529f17763e58c849361fe2050ae27917096b0f24072d535a28b12d035282099aae796b0229414604cb59ab015250525a553f528201853cfc5c0d2cf731225a53d1c47ecc82ef1a7e33c66b2fc76a95d54d04501b5a76121f23ba8900c9b74cccb4b6ca2b20cb69fdd1fe4a5e9a150b6f9934114e61305caa6c240864039bbe8666faec33bb467588886e345f6dab457dfdd20daab97546026c29bc65d9294f6ea4940ed553690807295f84351c9358b5c0e79538feca3bd5a8fa22257242014905cad7e60aabe1eca0f25946b8602ca950494ebea27d76b3166590651151b01240b99c1c9f5d8ad18ea70044382350e4070ce86a88fdb32adb696d5b8450e47778d9ec1081baf9f9eee96515a15af6b920342f41f19a53d693a4a7b8f018a2c839552b1f152da33f5494752636a6c4200c77de5ddd8c7caca8dcc73475223af591db74cdbb0a8d5ec34eb36741b2c0f64f91c7869f34efadabccde4074bc8f18eb226eae24bb596fcc066b0abbd65b6e5b274ad7158448fd7ad97aecbb572aed563e5749805ff647912b6a85841403b727b61c9f4f6921c64c9e1a897aca28a2aaa88f733926b5fd8146fe5584a62c0f38417d0b0c52d6e59e71c5613168f133b9367f65c55b09f95f3c5a0ec5608d273af894172c5612b47a6a8c815c5512c27b67f560ebdb6b892e98d3d3f20428e9c10cfd9e7ce56336a95c8f0dabc4e269743e6c6d6944db0548486ea9669db46614db3a05996e564efa06cdbae5ddbb48e5a6f9a4665ee54edf2499ed76e51c39f0c0a32844a1158e280e80b654bd0148c5241c1b079c15a92c450152a8482a6ecc815778ba73d79eece6b8ad610f31ce68e04e9f3437067c148ac9cfb1564bb7f564e8e15976f8799e504e9ce1d2ba7b6d81deb494643861c8ecc073554c4a124adea9c68a371e219b23c8723cb72dac3d6122bd8ae6e2f5963d9b62bca5abd36c79515ee70a865db6e97b5daddf443230268d3b08eb32e902282b64c6389b9aea89bd544114b04160a2c176439038b27673db09f9c277d087a168c04777a1246c2890feef448ac7cdef63f38c462db32adae9c7b632167d7e6edbee4d823c9ca392b47a6ac258da594f644b9f6b50898e7ee639ec33ee8ad1c972dbb5dae7db70cb91dd84d36edc98ba6fb06e1931dfac82976eaafdbe3a7f1acffe64e0c0a2a8293035f36cdb475dcac8aad9cecda28a0e093e32571554a7b120b81fd28156d07a6e4e1cecd5f0c0a9a2e689c48a95820cba34004594e0e084d1c18a3cd6b95bb3488025129f51aa641adaab5560d530ad49efca8945ec11e0a84a3ad1c58c33a1cb238800363a4a573ad1c252e2c5829a57b484c72bc2d197242cc28ec103d6221222b870d1866e5502af6075572bca2ec653cb05f673bb0d7e1941eac80092ea020086510aa91c781db21a798b9d19e3cb6bd703ca40f36d1fcb0e20418d39ce478b10c87e03e4446babc86c3965d2e6bf156edb465b7662d72384c085839771f2be7b01127da8dccaf60f9c40777123642cf61b9f3925bc425f99b3b31c8ca534a7b326b22bb2c59bbf009201421c77be5be2fb9e230f59887d9070e1f8841124c706a7ae42a6201a6e4bde0438635c4a07cd119bb0d3d64e5c01aa2881d673ab09f9563edc828add27ca0584eb48ac7ca912b796b89653db1847ee44a2e295d39414315c80651c9aec50118d30118e30118a3a4ad9c4feae448e18417b2c643fb86bf18062a5cf498cfedb0b2488b9ca6613f4fd66ed5f0b65d18c51780307774b83c77600d4b07c6cc00ae9e64387d90a5e5021c583cd6148b7dfb8150d66e9735257d0d5b3973673221eadb7f2291e89f9523b2222b45f2db357bad25568ea5c4cab1725ab56950e3b44da3da7c62e5b4ea8343d61225ada24964f92254b0db6e73a208263bb272ba1c487db214b276693635e1f01128d453e3c4a4a35e439269baef28775f3065ca9303533c7245a940ca63e5502a5a09086bc87d164c34feae5cb7bea6bc5df8841322c89a10d75fb28e5ccd19c01d9db9a33377a4cedcb172e68e951314141474eb65d18955ae27431d8e5c48e69118ad1f5548f822b0860988ce1d4f01a88a386d2357250c402f5e34dfb7080644f8835528003db9b2a9b6f47bf902165e629cf662121871228d14fad8d4cdc69cf8929217255109f489561231c237a6692fc6f8c1531b1ad8e3d9d45aab0d4dfcc14676c318638c31c2c7287dac6c966a2d75aa09fc827c6c1ff48f8669a934ba26a5d8af75608dae33c8b2719065fbe06b17b40fd6c5282b17bd7beb30c9c9e9209715fdd34059562b5df00a0e0359dc72fb2cda777676600d4bebc815ac61927b27874ace92d611bdc34355da9322fc89be72293ae9dfca8ae82bffa28fe84256de9da649370eb52749506705eaac409d151df8915e7fdaf3e96e8ce223f269558dd2aaee8754f18ced6a77dc38edc98b80624ecc1145d1bfcec9522412891e391ca21db98a393b3b5ca0dca851d03a11e86ba049c57eadd33a47885eed8d106193b5e2b1e7d43aba3d9224b9de4fa29db68e5c4520201d201d201d8b7b58d824ba157df4ad0b23e1c447f6eb48cc5b4752d3611f54c34864bf4eb149d4f741dfd88893ee46263689e83bec633e3e6223193689b009017deb43c45fbf9aa681e48a7b06c4e11f3225bf05558d8ac5399946a048655e58038324f9612353d286622853b07774a060e1bfeec7633fd644122d160e681a8456775b169df45ab3e5753a6fc529e7e9a184f01b95925e4a2927ec9e48c9e392d2882bf7e5ad1d6f7940cbb6b6befdcc67774eab55dba5c4ae8b461a7165f923f97aedffe8e8e8cf7bcd7aab7f5dd93c68cb0953c06cad624db7ce9cb3a114bde5e735f5a74e9e3ef1898eb490e8b487c4882bcb77e34b24f3484422e7958227f9194a11c516a46092653294c247284b01b44489bce5174c8a2354c95e86521c618aac41065828051294642d6f9fd7b0d36b96951dc2adfbb6713bb29c695c8e15c760a6699f3aadcaae5d7238342c0b2257d7dec2724dcbaa967dc3b6ec1b761a89dd74bd42e28fe4ec7e5287cc2dae4ded15bb12f9d3b6165848851c8f16dbb5cce52d32edf0157f3773db6a966559a4dba7619b911839522467d88744d68edde46c2eb15d212d7e246bf79339a3d9b7cc0899bf982b1632391e5fe716cf4e350ddf74aebfa669f52dea37753295f9992a17fa8a77d4b778762b5c3dfb84aad2339c45ac3e8b41e4aac74d97103ab26b3cb26b4d441bda378cbdb3f6ed141371395eae6121da5b9ce3786c39fbcb0a09dbb02dcb386ee3726017b271d7b0ecd9afcc8431aefad45a6b6c81b526e20c7a79edfb766771ad972e77972b3a8d5cb142c3f1c9e56af4d9823f235723dc43a6e6e50afeacc5f359a645ad5ec3300c13927dfbb06bbd451e441bf4daab5cc96b986ad7b4162226340c7ff88b3cabd135ed1096347b1d9b3472426cda2bc6346caaa7c7de43ae82c8d4bcb5533b3d764535b037336fff6e66c66e68de7e43bfc8d369a7af5c8eed42341e5bde1e44ae20c4b063f3229e8c9dbbd886bf0858967669ae375ad9fd2890b3af02397b96b399ab0e2d5fd7b4b851eb7e48b2b55dbbd8cdaee4706cdae9e7afd723b970e4419c414f23218c3c883620cc3a709650533b229168f20504f287ad530dabc434edc518638ca50d68f1dd70899cf9444922679fd980fd66f2e1b9d2dbe3f00cacd14129724329c029b967b88e38f98b39dbcd2ebc1abc500ed978e9051b6fd201bf755eaf4399fec3600d2cd327329522532664fa64525a856ebd06238452d4649ea667648a360784cd33edd14f2c2353348915ba2eace984e46aeed0c9a3cddb5191296a992cab3ea94d9c21d3d7a05651d1ab9627d5895641289c9092a94c944c9fd49f4ca570220d943e81220849f257a7646ab3155ba655dfe4a11d954c4fa5002493a3403b2a7235314f0fac813379501a8e6d7cc4ccfd6c8a2a2c8e21d7ec9159ca24c8eb447bf4fd16f29f4ca63cf21e31f311337f9327d337ae4fdaa32db0df33a59d5027d49d01d5ab88432d4e23e9d636a0b9cca72197da83556468a18f9329b9b5b8414ad3d8e4d3811afb2945b5b006b65cf90053fd27aa14333066c8cad098137bf8496a3c2005144259ce4cd38d849653d8f91df2740a1a95f964049c085cacb071dce5e56e5dc869dfb4f66012910cec76ee5bafae472344ae96ef6ea79048775889bff90944abbbecf0b5752af68c81ddcee118735ab5e138ad5b0d2447e6449c88d32a1973a4843d638cb148544d68e175ac3ebb8e8d15abf7068c89fd199374102041112748ab2c2a2d59830029220848114166cc89315ad29a00ce9e91366d2953adb516c20b636c582594b2238c626839bbbbfb47f78dc3d4203ad5382ae46e8f56f5c0ea35ebf6a8d7267b224710d7dfaaf62efcf6fa364678ccfc19c9d326881e56b4668edcf51b992f6cda41272073c42838fb393e3714348892730396bec9d4a6096c7f729393dfbe05c18a3e4f60b973dc85b3bd9577dc5fde755cf72fe274b8c9e82f1cf7eea22b847b778dbb9ab5f2ee8a3eee138859f496af74f7e5a2fbf2f232390e7fdd45dd59ae8956ba8b848858442c229148843f96af5c6359e1ba1369d5ca5956f08ce538ee90eb5ebabd116dddb9eedc2127c24d465c91f64638b2b8bd16735eb88bbabf5c24eade72ade5461cd37398fe92b9fb7261d66001eccbbb6bd0001642418628194e214328848432144241593bbd8eee2fd7445fb942ba8baead5cab5be472b09cbbe8ae1c723b5856f0d77d0231afbce5dcca7d7987e36574d36d321abde5fdd1dda6e9c21c715a85b574ff6a915675ddf26f6505487b2b2df65f6d815bce72ade51621722344a4552ccf1b8783256e446e5ea45530072181fda0504eabea895431d22a110b1c712c177cfdc08edef75ac5f23e4cab56de9769550be9f09d7d05fe4ad9374e88283a4d6f9c8ece5f0538c85551c7bdfca26af70e7b25b0fdaf66d1b6e1ef4622c9f434721fab5728cfbee5c3e29b26d25ebf0a451c98922b2010062d6924db9188a429e9085a1236f68dcc324a0e08d81e6c6fe2effa8dcc7d9a8697bcdeb75e74bf225974ee7e31732d051394c8f6957b5fd9f47a0ef88bd2e798a7b2fb8a6e35c10e6f93e674d8f78d59d32e257c8e092536e98097cf01b57ad26b7777c46ccf5d9845f6247b0df230371f2ccb2787630546ae74d12d5d833f5828451394e43e8b2a0cb040a8c8f02329b92f92820951725f5b3f7e44f28dcc4244c7df8b102cde879fa643fcb5c0b5bd6844912c441e5e7eeae022c7035ee6403229060249b6b0c99296f51cd83a773f7ad20dd0fd3a8085453560d17668e7d1d874bd7f4dd7ad43d38581d051abbcaee7e03044922dfc15a1f42d363177f21a16d5c05a90e3d1ddc242ba5f58c8e837f293f846e60ecfd1499fdc0e7b78c9e91861f8826f64667179883f139e2de49b13427416f88b59f4fe8ee486171691858078b6f7ddc82cc21f12b975c83cf1a4f8bbe9c7aea5f71b5b55d806227ac909c8f1c87277784b1fddaf481eddba5fcca56b1f8bc35bb5e7b8aee18a4d3ab8d7e7e05e6924bca3d326d82fca82c5e74d3aaed3e7b8589ce6894d3ae8e773b0289df40961e9221da5d1b5ae10b8c30a81e5eea50b57fdbd7e4efcdd74eeae4106d88ba460021359f4adefbc1f913ce7e165a5ac7afa95bee2dc35e2aaa28a2ade90e71b4f20e68ed461213bec45222028a516cc54ebadbba2fb893ad37593f6ee48f2854ddceb9164cbca45327c77735c1d568e4bc785ad470e08fad16924bc5fe9478040924df4a61c1c46922936e9b04e9fc3c21f91fc915ec237328b4ef18dccf0a423c9b0a391a26bef72bf2099f415f72392496fb95f914c62c1334120c92b780231db4b4e474bb62769db69dac62a6d2fb6b2f49cf3ebae5d9fd73abd3ce6ad58fb9b50fbbc42e4a1bcf06724df741689ea37b37de925b7b43a6f4defb7e5d1b5beda75d82acb92d9b226d07984bf22f9a66b5bdc379abc34f6da644fd83eccf3f3d1dec8dc46c42aaaa8a20a1d12e8dce19bce228925d0f9a633279bc01a6d935a5fe6bc06eb2965cf9a8add1894bc402fcba2b1566b21b626cd0f36715a734a5869e67c7bf1eb5b74f663ad31c6d83146392594de67e2ad5cd1c0543c4cc5c7787b24561a83090fa23e991ff5f80f46e26fd628efdda6a4b00b1ae4c1b60facbc25639472c638e58c73ce80c0c67f324f40c9df73dbdc425a8e98e92586d046843372cf8e52489a40084811f1f5d7b57ac2c76bf0cac07819dec230ed41dca592add2c232ed793240dab3092248ab6aad41964d900b7ad0839e07af2017c82da2bd065244900be2196b650b0205695511adfa01a7e8f664604cfc94160a514b8a5e4da0663b815286b465b5d7ec3d62f423ecbbd39ba4b7d2e482ad32d5047ec1d6d82ea0960fae5a92ab0d4f2d4e2b4e1a57e68c33ce38679cdca4331b4dd2ed4773fb9c73ced274992b66cbc43a6b96b00b86351177ed8ae69c225863cd3967572f6d7ece39e7b41fcd39a7c59f3de9d39ee51f897492bd1012cb24e13949933449f324fcb11cbbc672e3cf1dcd69b1cf11cb081b8decb4734efb69a7fdd739d6da39e79c73cefaeb945bb9bdadc49d7302b58e3dd65dc72c3675f57af639e75cb14e9f44746e65ce39e7ec708f8a4df6f5c2265bef83be62234eec8d601f9c11d1b923a9a1e9edf6cf9d67a0bf3e04fd859b675ed9dec6c9d0ba8feb1636e2847423f2d749d847bd081b69483f84754a8f84bcf521e8398c449ff6131c1c1c9c9ad195d9de8a93bb5b7170b2769d4028928085ac6517666c4e119edc9cdb9cda9cb0a6c29a39e78c4192fc90a9f98a6d646ada503c23533389fc6cd9d18088f9c5285ed24b2a03632c7c85abeb18b66e9de209a5856b7b53360f6cbfd160e5e7fbaf8d8f9879c84c9e584910146fc6c6c608f6fb512c413fd060ab60f70f6f1af18df660cfd8d7268df6e069fa1ea632ed495ba2d83ac5fd38af0b650adeba504a13d8d8dd3d7faa28884f68b44a022922089098538a4aa21259c2209a1f801401a78020c3c70e441590e8c9c31608874810422933d32abb5a8159b9d20e4572c55db742afebb61b3147ae80c894fc77168c7109f65cf6f6003deb333edcc891e9f509a394221a30c6fad7c3b723d38b2e0aa6ac7330d9fa760f3deb5aca2282fe06914c2f3f63b3252906225731a75a5b8a393cb0dfcc2a7200a6e44580821e17f4c49c99991b9546ab24b5b029b01f1958a33d18190ffaccd80421c59bb9e1c1ec005536d0934702bc0761a0aafe4586779103b451ba50657d7381365e5ad4c03046da68e37105c2ca126dfc508a3686bc441b3371860703c6c8bf34968131bff1072c642d40e1013df96a7359b00a599e4221cb0f815338008c9141c419f2f20979e60486d329872fe490030e5ec00187172a2f2fa62e984c2db8d0a2058b2db060519a522ab968c1c565451656ac68c1424b0b4b100bcbca155656485620914655188dac146b3b2a749d680a221127058edb80b64d8b82a66550c832ec091856a7a8f57242963652da4869236de479481bf903481b7921a44d10729381357a36924b6e6cd0fa3e58f8be10a6206e3912230e1a447d3428cbd81da306e3d0d6dfaa926a2357510331256ffd2b5dff8efdf3b673f893891a88aaec18c6f9853f00e42fe294220ba209a04c4510680740e6c9c85f1c9251e52f0e45a129b6577065658a00593e069c0157f5f25eb4715d1e06ac61c5242ea08d0b470bc017b086852306608c3c8e9538596619877082a245040da2beba247310d6884618d16800fc016b6c993b1110c22d640e8621731f4443e6b4b7905bf8d12aebdc8968d575ee405a55cfbd885661e76caf56b84f0f58fa20923b10b992e71e73600d98b9ff90ab3e177132c7a5c1ceb73c9248fdd19190277d88d15b3012fd910fd6122d00a6b84311fe0163b8cf0ed87997c7cbcf0f213ffb48902eb14974234e7cb47cc5e787e8bb6024466f6c12e126fd15d8480b77166c658abb5cc14eb473173db1b006d638e1aec9ad35d1b539fa4869438e1c8f7ad3f6a8a43dee72ca0fb269c340748e54b4c73de6649abe5cfd8029ee9c4ce62eba5bbe46f70777ad7ba694207f937461cde8c21a4d6e10d680a781810cafd99be5edc29e294cb2e866b9391c3107c670308a9e1be41f727599e25eabedf0674ba5dff33e19ae078ce14ed3a2dbd99a62b943148785d4258d1d419bc256f95967686080727465d89565578f618992aee967d865d3ef436101163e21c5948cfdd27e6fa6c28673546a2f0ab9360cb3b41759da1b49d390f692b48f56c127a45022e615b94f2449af926c41518c21f7a3925ec1303021a255f00929a4e43e104cc227e47e732f776610bb9cd669ba5ebb8ef9e8543fc61e1618ecd69e25af1968f45a44b54a0b73a83d799a7e71290e4da284f65028d4270afda153d07ba99429de1201b094d8bc4729189094a0ae755a0523e3858cc7b826e3b64e2f81f9d74b64e0d6814902068ca7aec1b85850ea62403060603a76ebc1581526b6271b0f8c0b73ca469c424a5301d33f1d273b4edac049f40ad6ac60cd8b6be3312eccbda4553670ee244ea926a4a1131d92299f56a57e7a8cd22bd24f8f53b44ac64fdd4fa7f813f7138b9f1e936815cc4f323fb9f869c64f8f4bb44afbe971a755d94f307eba3f3d36d1aaeda7fe91a9f574b29e9ceec9d5cb4f87a7d3a00c391ea61ddce3b9c7cbc0445ac6656021a6186c7a7198651c6653d79d744db0e6a9ce83b9172355bfe083a127595e6a3c4353642de76a49349cf65e6ec644a6e43726b2fcddc9f230324d892cef2289fc974a301766eec697db3766174ec9f7469f4c877eb2f5445a3d968ff503833525579ba1936568c8e0c631f5f0ef19f3f0cf83116900613a33be43ffbc38942bab444c4c4ccc6fcccc64211090d9b4239e3b873f24115f3e3662abc3a470ef643cab81fdb0a14e46860db597e1d0c09e1eff61322e566506967b8731a0f6b8775cd775fdd3755dd77118d00e01b83c06744ca755a6cf8801e303a5277f984e6cd50cb9a23da7430ec78c9be96449b487c9c03d198e3f9d7b7cfc09470e7727df42c63f8ee3645c195f65813f6b65fc744dc6c582b81da71ce3295b1c8e139eb15810fd1ac8e2c174b6a8533b3a144960af0bd3b11858f4028311014ffeea1011f2870d5581798cf9d0478752a7693ad4e17b7b740270bf99695cef4392533d1cc61d82c2c1434f0f17abc243922c8f2f6c2fe66b0816ab307db12a9d6a6ce882c23ee185203c6104300e635e70a7c72ebd6c96a57eb5ebe4e97e2f62c87877612ee3f2e8decd0f06e6c5bb17875c8c71fa0927dbb1a77f8dc3e3f498a4553839ad8259768472698f0dcc11dfc87c7a73394ea76b3ed8173229987319936c4997e5b4276f6696a4bdeeee329cee7a623b731b931bd8c6320e7365a4ae8c4b877a9868a23db931f169d589f6b47735c1c67cfa090a3684d32a18fcc53ce31accb570e810ccab702fde37c6d73f54e4d4bffec186602ecc33aecb4f1b942c1fe3a69668629b8053c8f25694d385199e4af1847978642afa1061096be86995cb5d2814999ba33b87ffd52c23c647ee2faebdb8fdc384e54e291930cfd1bdb1e91cea450a7fb5c2523efd2be51787277c44cc2fcedd989bc3f1025bc366019c15ac31c1f810548e31c59ca66155430ab68053f3d9bcc9e8c899d21e11a6c378bc34adc1f660bc39209ac3435019e6306ebaa6d161b636a71bb34fc7dc6e22c6e3dc661347f08081dcd7e08dcd30d7b4138ddc75f8eb73a707c8e4c64262dce59a0f3626c608e40494f6a4c503e3daacc5ad7990615c52d6e40694615c16599b1b953d23a4964883b99d356b8b715d5c1ee3dc8d71ad795ad5c2327b8501f5fb497bb10318470f55da933834661c723866fc26734de3dc1db26599430e874c0b0c004fc68a6422654affa8b0a1d56514ac8e5cd5211f6e031baa43aff19913e00238ea3c7c874f256ccb2c065688be8f1e4bd80f72dcfd414457b7c0c1c0663871e68e8de51230468a5d01ac11816343b08696e5b12a0108400002d0833637983bb3d65bc6c4c23c9fc5611cdb7cb0524732a133c8302e97952c9138ed499944ca9429527e806403b1c82e6a2277c25f917c3255d38eeef7177f4872d71c8fd23b0c58d24ddd594471852a3995611456904286dc8e0e37216118173fdd1bd955da9335b787720b911316e7381c2cf08ccd77029dfb2ceecc22988bb81c30378205c686b2165818566cda1615994eef3c338ce9749969d64e780536c7cca79b2015d81e8c41a293bb6bd806d31fb09f8bdca75b383549ac93e9324ed3d890e470648d55991cb0194edd828dcf58603f6cc8a2c15f2500feea00f067ed0dfc9550f8fb0ef8bbe7d5c89db00e989b70cc3b2b8912b6fbaca156ddcb63555ab5c3e5339cce92b48ac5e5b39c56b9b87ca6a455a7cb674b5a955dd5ade2e11dcb3315581816bf381ca76b3ed87b9a8e1c0fd38eeea8a3b0101d7878e472c41e30109ddbd483e683ed29eedde162556e8673b324594ea6246b1e6ea693028baa5fb0f130fef50fcccd0070b324376b71b325374ba23d791a375362c6cd646eb6c406732314c890615c970c3919181b6a4f8a85f11e2e9022826cd4f061a655302e4fabb42ae6f2c5573afdb3f9c561ff45ea35a77efca5be22f5164c7b60b009a74ef82bd90e7f2fe1cf8371713862708c4b231f807b04cd1f36a4ba47cc14bd43dfa6c3354dc9a56b6a0c446796b7bc33e45a9ca663dced2ead2a5dbe792687637238b4f7e5010319c6c5219b2e8c220a392d9ea0ac26bac3b806b953c7912e101c1139e2cff421a8dcbd63369dee8724c38071978fc587a0b28bcbef230744ff8f9c0e54fefb1241e59fded7301fecf62132593b69316b5a8f2c939b4abc43647216a15843fe5019c22adf1803f93bcef0092228c92cb61832300d369094f1c77873df8bcf3887bf98c64288a072bfb190d3bb9f6eba76ba30ef4c97837153dfd3b5b9992e77c8e9e87e4265eecd35d75c6bdd37dd0f954d37fee4c5039c827871d3e1d7bdb1a80637868c94cb1b723b60defd74611eafe9303e224e17e690d3618af82322c3b8e94618d7609c4e441091619c8e6d627e7118f7eb0e834535b01d1e82ba9f1c8f176f2ce4c54d5848eafdd3d7e121a8fc0273a9b338e476b8e84861197c23738ccfc03306dfc82ce351c65b8818f88b59c65b46d7719ce9f4f4ee9c0cfc21413bee2713fe2207d47db6ea46f6d753bc81ee1773e704c6e9687cd291652ede8f887e87b317580e7f31ebe89f4e23237671ee422cbbb8f662071e0e7b15006c48ae4832872123460ef139e06073b783cc85edbdf886a05e9c3b00620cfe6a4a060c8c1707808b2b84fbc9e5a7d35d5cd3e606b91c2ff0d7f9c5bd77dd638c3dd008c00e3cc81c87fbc2c385eded80bfcbe00f9561727719347277981bb93b8ceea6211a300f000fa6cb1cb66a87a762c4cce8017734f0071300fcd1e001ef70617b32181bea3e03cbc05f8dc130d8500c0c030fa54cf87b06c05f5ca8c3bd78398198b9bfb83003c0c5597c723a3a7358888b9f1eb91d2e3f1d723a5cfce4e27207802e36eec6ab498e076cef2322c70e23712247ee9eeee2c27ce26ee7783aeaed99fef63a03203171f83b924f67f10e7f2ceee2845db8b82ea8fbfdc82caec3fd90f06416c7f72322b3803517cfd85fe3824092af4d2066975f9c8e96ece272c93d4697f7a5e20c5562122591273e893bf00702c120184425e6449ca1f8a1320c8d1b39e0f0037db8fb0d91c9d9b725d9743a77bb9f2e0fee1d76b95fcc2e8ff793c991f4977f7585430e395cd8291c5e2e6c1a19ef76ee0a89db21172120934df8eb9187c8b0b8dde2e2c82e8eecedc2025b4f947892bdd444ab4a1802a8bc7279eb8995b56c6505932cdfa22da12959c14d48cf48f808aac64976f9056e74830c694f5e52811d8775826616ec0785b020b9c2d60053f216a0c2812c9f8920cb182487b0a18ae9c00886310c613c3e7285e9c09494ab3a045392c35fe5c932d6212c0c44c81fa6d3f3040de4af0e6143a5f65e5a287fa8699fa08e4824d89188a4b3621636a04114cd0f541e5ef0144ff86fc257782dfc57776cedcd5a2194124a02e4cd527ac939eb27b468ea21b599b3ce3a6ba5f4b22c3ae79c737e4e284b98961034c8c345f3a4725a379d67b5be996f3a07dad8f92808bdc04e17cccccc949858f8a3e61863c4699923ad8e908a3e24ff9150b0b0e70f99a2afd55a3995b000a4b7a2554b95d2c79e4c0f7f10d157c71f3994fec2391187d29e744e20edd17f1028539a843e06fd04c15490cf0f8d4199feccd01fad44cf814c29fd2753922b58730f721cb0f01bb0f09c062cbcc42cedd1db0b0916be89956f21ce041a2c80cd0e61972ca4c2447b8d619167a7875e3dedf1f05c4f7876747a5ae584142852a4908c30836bcf3e5960230f4d7bda758f9841604ceff4a1a083a30e8db4520907c020b046cc5f5c62813590e187f8ab9db55b89070948c8349a65945af1422bb390003feb5a44c121178689508935305f18869d7ad4fb75514779d4baaeeb342211142b88433a603bea705b10b9da308d4c75fc94f4dce5b1aab031e2269c0e78eeda7578e3b10bfb752106b1d3eb72c72e770ee66bdbee901824f250893e3cf1270c4982b83dda8b920322e678886d97300cb3d8e179daebaed5565bbaaed8d35ebf1f8448ab86b4ea3b3bad82714707c22665e81345136dd129836446719882060b603bc8d2010bb5eb34fd8ac90cf1279321bdc4623d7ca66dd8b55b0fb91d19fee094dab59e5deb106af4ba3e3a3527d63860bfcbc8550ff98450123993202526429b4e8f7a94e222446e4ee4a6488c3ddabbd04d910f1e6288811021ffa31b4a13b2566be5ecc246e304f693a1544675e15761adc3d334aa55d74b7b3232edfdf85cf80667023b4ff127d3c387b5fe5dd7757df668efba642e19989256cacd520aa56429ab1422a2b8404e830679805811ec573190f6da260849a18445049952422f57589a2ad0202a62a73f2c591c2cedcd69c1f7fcfa873d62eba2b05b18fb310c3bca9bd6f5ee391ea2c476402c1ee5e188f1ca10571f3d4a331866410b63f893ce28a45003b7f6e67b3265e955c5c1c1c1e9a999b716bd282c51ec527841082184104219b9ea01ff532a824f0f0ccaa05c4b64e10850253b800316fc64f87849a8aa31c6286597a34b8ea518e38455c6286b97a54b494a38e19ca711ce88ef524f2cf1677540afc50867aca101accda8f46c75a5514e32552302410080002314002028100c8804c3d1783ca4eb72ee0114800d8fc25076521987490e43c818630c10000000000000000009020093cd2a3082704724fe979390121ee71352ed9ee62cd64eac3d039952428216b4542754a4aef70436cdec754514cf8481d1c6f3c596f606a65cdf747a31868e219409516d6152c008073e4d900ed8eb68b2fa6c72d053e4c4b92aabdbbb54fa476474bf5c2229e8a7a18e32640c409c10070978b5a4f857ec30c2daa6fbf4537ca13d84f05164e0843d444971348f40470a445da3142ecdcb08a37e8d1e8f7a8c336f94d97844962398b1703d6edbd8c47f4ccc4f10ffdd442728257f0010a0d36495da6f53880c9b46f44bbd819d5e567c23d5bb49a9988cd9946bfe44b14d5248a895ac62b6c21abc22d18d4d1b77f1f89bb8cad1953732d2707754881c2c96a9c5aa747707c9a23efeaf720d74b0190ed0cd49a36d9a95eea0e851ba9f91598a1c66c492ba426fdf85337b1c85bd225c5e42238a447cea12b2716478ae392fb44fcb2b4c785a6e1778607af6bc2085bb3ec471b67161ed8715f4de5c3213f087c4a46420a8dcb81cad3c063172cf04b8598661ddeebc7d118f1207b97a81dbd63dacdbc3b03981d444891ee61e908169bb30cc5a82d93b8d47e6a416cd0df0aabc8e5ebab423055ac1370fb7a45e2d2172aecee5ba072efb1a64f457bd45988d6028d820757f621dd8c9014e6e5c3dba9dc4b542842767a5211df7b9b3e3ffca2c66ee62014aaac426328f7aca876bbfa53ba7d028ab08269a25d5b6c422cf0dae4e9d8808005f81ab55e7bd56e36a363e2c909964cd8ed39c75280aa84c2c1291fdc28c926e1b4b05b5c967924dd9d1a5225da444670110a3bb431855a299965503a11bd8e12218a086bb58d05b40d2371db703c8aacd431e03e63c4a2ebffd52f0eaff3120a7b49b1231b32d556f89ccdc17b53248cdd638b85f466393a1577eb24a681e2917e9283d83bfd723bfee2bbdc80a0c73063e56c1469ed3380ba2b89116c331a624ee4afd77932a9e5aa1cdc052c78d7db0e03186d50777e24bac7c0743224d9c347bfa9e9ae3fb28b34d7c18450be7bf40c057285616b636bdf20822a8c344b9889c98309e6385a4e0e092812928d42d013bb23b50c913ea41ca30ed32f6248f7e3ce57a8085901129c228ac7dce419b01a0b118b2fd173fde9d5a4bc0e89cc07361cf25dd9ef277671cd5febc5f650453024100acb2bea66cf174a6a4e8ddcd37d686a12834bc878d1dc97181c590e79552246064f9f071f239971be323c29546a4b8e31d240bf48e5dce44099181f9355d2da6787977e813d3a6b9ea4e0ec660179b02cdec38d86833f67d9d5abd386353388c88a05ce80b5d34462e064316ff6f99f3d6e3a55038a59eaec49804796a761717f492034dd2427c5cb8b09db192df75f88325fdf2e7e8801a4c12cc8418b5a19cb931f7ed7479b84367f9c71eebabaf7d2c8436f1fee95258c12e19e57b36ccf6a316f05b4c1fc28357f34948602a8d0ce6a40a8a6a20f2545098fae0f52149cebb43bb31a41f320a447e1e1e100f47f8c65d4f849445271d0903237559239707711ac574579eb02c716396e4203edb0f0160922ba2cb188131d7aa4bec39fa5c845e4837ca53cce37b8f1a47b8f15ab62de89e71622e2e284b24114a762db876b0f78530665edc73ad40a99d90dc3ad121a69ee1f01e1bce1a51f3e75a8c466cc12413e2ff6dcb7ba4f9d2f6703264d343bccb59d874c52561dad45a01fa0e6e9c36eb62a4b6e2b8a4b037e9d05bd163cd065811990033a53fddbd032637dc9890cdafe7f9cfa674f90ab98efc5a0fc47efb00748395cd0c06d54631a4739939cb4fc17fabff153ef82fe80a7e933453f70cb46b4a0f113239747792682344c32f8aa92b8b61d2248b7422aef78bf74024b4cdaed45b3c64722d51ccc2952b11766d3deb81000a3bc07986b94b48c65da26f914935485f7eb9f9adff20cfde250614ba702268dc05ad6aa98ff79705fefbd00cf2623a57d2056333fe8740d9db99e3bd6e5dfe06ffedc9afcd72c59ae8b5bca7d2c233975e9738bf8993bc2547688ae3c0bda497798fceb2e5e9010e7f1aa0148af89e082048a5f82f49005b7c15c294404082b088a92fb630c3e042d2ccf007d03bbd10842f7b3025de05bdbb55b0c1f24e0b6d63b5f4be6d549d26150499005b8200920550ae9bf755244b6b8dd8df6a5b9c5c19c4c298a3136843bd9b5fc6989b11c58d91c462d15779cc5e1ed7be1fcbf7a8e76e3233f7e2ccd0a38faa1055154520f82733bd63b86226c256e3360c4b1c5f0bffd3d1bc30d36b23e32b415238446ff47fe81a4136eb7daec779eb170d6857846048672384e796c48bcd5ecfd1f2364c0a2fb6bbf53778e83448670bff1c8efa8191b689e41cd108353f920b247725c677dffb95e48bbffd56b3bef5e2cb9d720c82390ca2d6fc6de7db8fa4564fc604ed91cdc1f23eed00ece22bd99d92aba84593f29b67a25c777085c8dfd4bb31e3259f641462a86333cba2df004d85a84b2046e206cb3e489745847195c22b8d797bede4f254bb9a30899592ce0c2c88ad484e2e5a02fb34f35e87c127811bd3a6729d2db63939295d646b6288b266d4544adbf5fd99b2cd107c2be7b26ae8ac7411da55edbffbd6cfe6aa8ec8c65b9cdbb73903c370fd30c8d43c6ea56a23fe34c64e811356c0fa94200fbe87acab5741524d5f52f6c3838527ab8b1fd561ef8650c7422bd76abce6e89d514a0d41a896333d581f800a49dbf28547725ff40fbd4e008f4f6239ee79921c581e1313f738df699e32386ecd022f86313efa3e9137ed640bb9bff10ba00c1906e10750268619295d69234c20b0a7b9d4d57149b4d4726578eea5b1ee47211b284d63ae59ed38f298a1f78f972a03d30c75bb68072aa55aab0f44f225b24e96986fe08a417a3a44c7dad6db32568549e3479cb51bc407cad10258c65ebc8bdb1dfba2c9cea5edd0e1316fd1c60be710b698ab3cc4e7b9a2d13101d13ef64e93b0831e2f8f6d913be64915c038a2db80ff29657d04ab43df5d0c83027da13b4777e5b11ca1c0e6f6e79c04e4a03c065cd89203ea0f37103b5d6ad494a94f0472fde7729c53dd752d652343eb08ba3d1d33c2bf2154d6e591d1bd5d7082e45b0dc9876fec66943e8d5d14b50884d0bdeb2b2206c1fc3c406ddc06705ba97a51888017251c7b4f90d124875f2e9a4387108d9d452e4b61d05494e887a273cf78fb5f5f685c1699076db7a8923cd26c4aa9a1bd74534a23ccadf2601701d67540da8ddd594b3381898eefaece31e288c15661f2c535ecdcb40ac1a28956f7d1e06d91582d72f712c0b9c7b35febaf9586a35e0702d055fdf0edcc51beb3ee4108b796a5c96291df0e50eee97efb2b7375413285ab1d2d47c15be17f8df716eefefc35cc21c97949f45eb5ba8728728eeb6dc3aff3fc71975e768cf711507a07177ab689ff04e3ab664ee94a596a025711bb1467082a20a435293e0035ed45e2cb761ccba69ad756296f4ee36bd193fae7f94eba36df31b42283afaefb1096183fdb3ad08f03928e44a75702c537718636e26410b9922bf7578f236b7bff3cf6799e5e7e366ee1ce64d40f930bafaf03ed3534b35aac0e73555767458a176ed885fe061dd133dd646d86cd3b7f5848bddad892814e8cb630860ff67ee269aac6aa43c916117779f7bd3cb131fdfa66383b0c975695fc1594687eab70ed4a565739fcf653cabe44ca1a5ca4e94a1f506d4eb3eba365551a30c7f985ce136418565165d9c07aa4523c4e76c98de8eb8f8371a6dafa72f6fa7bf1b92e9dcc5dfe125496d1ece309474db46cce6b08a4ba267cc15db3c02d1c2a20fdb8a44efc08ba27730ce92cb6e1f18eb0beb5e52c68d864b5453a4895d98ea86249fe2d1499178d6a5b84f0e2205c8931db1267dde8f3c72cf67064139a0ac4d7635068e27ac4002b90d5265d906f2569f635c576e78d525673f02754c09c4d7e595402d1550661651f58eb638b15d409e9f74a2b38eca4b66d0b0a654cb6d8693462a521e15ebed99f2805072cfe49194b1bf9945d12f5f1c0e9c4e2c818c18f9be9e93b55f7aad466e1172d9eb1c35a53b361efe64206ca18ed7dc18026144f121ec449e8a102b9a8877e5837663709a764231aca2d335534e1335ead0fd16ec67db92aa0be8b09b96ba8694c1e4dd28e261befa50ce15e9a8943da9a39c1af14f1245fd309aefcca68f861c4f5209abee9d40d77323a38bb09c1b576b22db3ad2a8c96324e708ded49da0e4d885047ee16267186f190682ef9800b6a5ff7d9b97eedc2f965f48087dd5a7f207b668f2d66242d0e040ec0d8100716b86f87afccb5e8259a6dc523648c3723a926233dfe1ef623b8d031e367b4e1e65b28e994cb09beabd36a2c3de04a6ea1bf689fb547ec466b79732360f550f9ebdf296b9c552a9b0fb191fab7488e7976851c1e12b75313f3d01b13e7dfd50fd7ebb90e9b9a523db5fc31439378e1c2ba8c372dd5e546296d0c74eadae2b803675a8620ee21c27eb4f5a30300d37351118daf4aa3b6916130288aed072bcd10b6e9ed6c06a250694ca9680e43fd0556c963b2642a61faa74f6928c696404ddc081102cfed4fd24fad887fa85700ccba225871b1442221e742025390e0ec3fdb4cf447dfb810f29b0abb2c89a617626991d3e178c00df9e7f3f623972b740599b80882879c07c3ce3233a0579856df4970bd98a546013c9648762d10c435f792c68a5c438254c09dfa831bf9c54353a3a0f6b43d606c0b1266903b9717c1e926456027c3fd1c3aafafee6480af7df22095deb3663185ef9357ce02b454c5647ec7f749f0e4de03f0415f719fbcf5ac295d6e0c657912887cb98043cb98ddb50bafee309c16cc4d6a6028ff3380b3ce651795df1938fbf626ac5124cd46b4fe014f23f8cfcbf7ba222a68f8e84a909a714a9e7f8f5171f69ea0a3c90cc3964b621fbde3eae2ee6a1c5db940d4bcb10360aae8b00ca2ec2aecd9140b6d7297475f12b9bf504bb017ef8f2f752fce4239d083e365a5959f40db4e80bfff76efd927f48e9023beddfd1017a3c4062fa0d71287b243f9f9f8625277eb12c29320b54864ad4c2e442a340797707948b8844ae76f62b397af0d222d5f37568eb2e1a9db27853b45b22c88ea79c6e4b422d701f925eec204afc35367eae7acf5c0d0a50fe60edcebf3f6d251af0bff34fc402586f575dc961b65f038c8fe2249de0e6340f5032260b38ef1b58125fc384b679cfcae16c8e9c8a782eae646d21a1d3074133cdb94b187d8ce901e8b35e71ac55e931245d8b2d0b9c0c48461b4997cdebe86e79fcc7633138259ba7af042153860bee5a108a0a7109c09920d5e7adc1b69d9d532a2cd49bd7e9f20dabe95641435c4bab12fbdeab1b90e47842135066a5f3a784980ee69c1382860a01ece77e3a12629d39cf7e0a5456f023719d94fba01d0aacb117473fefc1fb98ea7d206ea13f3247a11bc45ca39130bd126325d9a49fbdc6808a2eeb2e188c04c46211a3a2f29db2f3103f318fc00e47a7595383679cc2823f56665f708ea55e5c11a6af816a31e87cac1582a5a09fd3f17861bfacd10d018a317cbf6258db4c87bc10d5597a701cd62e7c72b858ee0af49d9c53aaee3890ca889e5f839340112f6d97d38f7ab7dcf9c9fcb8a641e0198053f1fd5ebb4a8dc294ca0e1585384bafdecfd51a332c79beb9f8a0877f120c185d0ae2c689030bcd575ae8e892496e6330ff7de374bf6c2c457091686311ae704ae2443a71f7170f12ba18489448a025b7544e940a4af773e444de90adb40845d1016e3a4b11fed6eea0d5bdc799ca6851150110bfefeeb3e73e806a3764279e78ab0dab30694ad77c180877132bfdb425c07418f0f8abf1ceaf8205d91cd749fffcbe1cceb3ba36643680c962b0a540cf70c61db8734edee067d8f7343e12881c2d504ea9b541d9305120a08952fbc6677cba0678a3c00e504d069c9839c1b2c4576789aa18b099b2a9f010679b9954f7a446b5a00b3e7ade1502cd6a9049855c4d7dc9965b146c7853592f6a278c542236390ad4b7e3951cd3335d6674d240411becac25404e990665913539342c34dfde657b3cca117c4f418496a94a2749492590f3b4551b30029290f81d03bed0bd559cf35cb9207502c9669d52c44fc0e3c5e090eeb39fec0595e2bc63eb60cb48c598843a348f7a651401814631febf6abb6c3a6d79bcd5a9a965087c674a9a30be1d4d1349440a4c1a7b091678edb589c0128b41f12db62d9f4bae2b5215a58d03a588f24b333f303c6c792c16bb3ecb51cdb3a5eb9f422df762c444ec1152ce0e23c60340cd199bfd7b505ae95a3a1f909b5f59a377d1d22907325350a02aa375a11b667ba9fa3ee2e1966e613578773690c26dc463cd9d6122ed40ad64d37e4c193679231c2ff057070b30743583ac95cbd15f2a980ca86c16d0306cb8a3709cdf073aaf17d6e899ac52d82201fa3000c7cbb088246c00d7cd4861f7be1228fb8fbf61770b30dbbb02cd83af008e5adb0aab5839ac990df1fc582e38cb4e49731b68cfb2c98f9f5d76939ccf8a2bf7c81c19d2248d91c66d8e018cb0ffed65852f1080041283240446ba587c5e9cebf7aef5166ec9d0c8719b08da2e108106a82beb4577e889e118ec71c1186f92e416dc515402d2d1da49c581b013bd9b4a36938003daeee79f2500e62193ae3269a1549f826226762414090f342f00ec46ebc0782ca550690ffd6d956b041a92d88a7329426482d55774db98a30294798cfaa58d51a63f25fca11b5cf3f571aee459d081c2b3a35c163cce289da317a1937fe3c8e4efb91e0b096efb2c683ba0d800018dc7bada2ef09373e2e10ef672bea536e54dc6a839e54044482f8ddd90354070ccbc77dd30236833a5ee2f880838ccfbe156b196318d33e704521c2a7adb0ce42aa7de4c00056ff456878c26b57ba1896b822da36ec73307bc1f83f306e2d3b1e67bae463c5523e4f934ca80563e52167673603e33b3ebc82cf15e4fe32fc0cf55f10bccebd06671455c39bd8324f44116cd423c1a745cf3c719d052ce9c7f685709f8924181dbbbad281f2d32bcf6ae967d39618bd744fce2f64a4d7794fb18cca31b4536c1afce3d808bb4aa968f447be6828abb7cfe1d20e16c8d2acc839e269fd053662098f7891040e3178e203273057e56c83586230961d8a26fe34711fc15574b0a209374f603bf46b5cb9f7a1a91e2bcd65508aadbf3d8d2c1988daf8e185e3450b8109c8533e5c6fa7a04652e0a15435446a9368d39d40eb6372e8dd2d0e5c5dbe3a2bf4a4908488fc31b9e12f600283628bf1027c7c0e63c739be3ad0e9d0b0965f530daaf38b1fdfb83522b05cc625f836d58ab647cc57573b18dd4a0d0775d1a4ff278a44f1381dc87c22ab5bc2786ba7e5848c0fa57af1e29d6da428ac8ff9e2a3fa8b2f12a018aa75954bd16c4d959f17f8daf4b2f63443b1703d1b81fe148f9e7aaa23c6da2cd232821903721c09f2d6526e357e9a68579d4c8b0e2060e9e437466fe5cd705331caa265332033d08b2fc710dd99d76cf4bf400074c51a00acaaec6dcb00c741f55061e36ef8d587af68a8c8c5326ea4ce10704bd501693a4911f07e1f91421698bd435899fd05d8fcfdefa1edd53b1040c122508e1cbd6af732d09d90a3d33ec0e4d7783487a4f4529cc158b48ad8bf44f6d6d1bb57013223caba8e5d2db044399546fb39e4e92dd2e00bfb5c943ef0519ed4b49c777f6d64c625c4abe1d286411806c5dbfef4e68606faf43c824fe2ebcf3891e3c3ffca6eb73de512ca0bcc912a73aa85bc8d63ca161156a7eb8a8bc749f447e2b6facdcf5a249dc203cf7c899ea3b3d63d490ebde7bd6f7aa8289931a9a2a655ce255124513a85e62167051ca60a7d455388e390968dacb6799ec3d0cc60c2d78a7559adb40de0a1789968a69d481a6fe6fdf605e89c111abd6ca51b5ba545bfc5446a7d6af04c536cbd798f2dd710448c0f59b24432155db7bcdddd5024e7cffa37159e787e017dbbe1c167485eb1df3440d04c0c0f221b8b5404c2f4b089ea4a46c8a1124565d179585214e03ac654e5fb6f05865187c640f47fd15b913494ba08614d2f587fe61fd0cc496a9b006370b21fbea8f58394142af67ca063e55bc7fad3793b2ab7f612ed69b921d9e8c6fa4908e0f1d2bee72e93086fa25aff1192e4a19c1f8dc671240f89debba7c8a42b933d875ef7dcbe659f56befd7426fceb587357bc4b704c221088f654ccf7d03b1547a9cfafc0752a19891df6573cd55123c054393ba92361c8ab6d372dd125cfa9d61264a7b75c1f850ea49c7070dffef2ac040810a1098f99ded1e1b73ef0ccd9384e937e0d8783f1a23bdeecb4ec3f491e67923a678c04511d222278af754d5c9abba5cb32f2ad869b377e14719cc1309a2321dd5f0967889cb75d17dd217f0b439092d8b2fd2495b6b8f3c8462792d9279cff9ad46fdd08f9fd1200a922981ea26ec1d23d7ce3cfc76a5aa451e2cf0d9e013a00d914fea99deeaf497214713ddd44c470a6ac871575b02babdd53fd9b1dcc08ff98dd7498b4bb2b90920587e12525f78f368a126813aff88575af88a10b4335d768e2caaf528b7bb4682c9c14832cf31b4e30f87eb6c40ab9e679135f39594790b9c50942d9c9b4506306d5f9e743c3fc4b641db1bf794518e7b88d235f22fdceed359a0993f2ace28046a1c103c7bfe71b81f167fcce13aa08f76ab2f2f70343e37db93ba2cf34af9f4613de1ff49e5ba404d17354da5812d372d43e504436a334264fdabce01daf649da34ec2a3268fab4a941d1e474ab0d1bea36e269612f02a539c47c6011ab13a8cb6087f05c3747c48d4853337c2ba635112c4bf83f7d45b63a8506f37de133f3637a37c1f34ec9ad2d3c193c1095530039cf0914e5b131311fd72138495e88839f3ddeaa0bc0696aec3a2710630d8ba1321b6cb84d3432fb423a5471b11b805168fe7760cb0e84459ca0432baef95e0e00eb617d46b92f98418ea1cae0af4e514e4413a0c6ba83fb79ab84198035d2619787aaac14887547f0016e205d6242cf06c7223213c9f1ce457b8b5468ad87a91b6fa97f11dfa7897d20141651d62a4ee215fa062d4f77062f538bcd9f5699033813d04b50b9a0a34e4588248dd0734c5eb13f9a61a5842f086dddb379aea082e026cc278be1dd8ee56884d16609469e85d472f828adcc247af8d47caef34cf1a0515be5cb2c6332ff4420ddb02091adb1f53c0c1a74458bb79e1037ccfc6c62feb5c98df250ebb9f71a82b88ca952b74e3918b9e98e70e9450a97c25a2160554a6b5358f2f4965c63a93de8dcf041bb28d9765286454254ce52a092ddf54506685bbb2be9e730d0e17543188014e74d52e8cc9ff15b2797a42dacc340ce428720c507e1432d77017915fdc36bebc58c2b9399d0f23f8b0d005a081853aa672b76693c4e3b85d42f3d8dec1a9ea175b1612b8cefbff95faa8423c5f20c9f9bdbbfc3e853f56501d7b16f84e1140afbb7b1a565eb68c402f50383a422fea4aac5ff9153dc41778969a10325e8de280d2c2391202930215750fd015e89bd79fdfd54e9387204764759426bd36b8285d5ea06676bae39d99a359451a992af43ac53640243d73b2e9e8e7a5435c3f43536966764eda4f59c5c1bbd3c61b8d9d505bfe0ab6c760186ae09dde713610e0107105ea584989b39280b4cadaa2e3cbe1b6fe972ee0e1c326a59465b8a04e601dc41c94f1d9ed561830287074237c198ac692c401657b023993b742785d9d0bad116196d7c948af8f12d69841bcddb86b5b1fa8ae0f6bed8fdfdc7ab3eb125e28f15797d2bf488db2627b5fa42c8a8fcb73b0b0aa32906e9e10bf826e41f897995f4dbb8145455116700ff0fe81358285259c120cc26aa2180ea55addd66e4cebb1e6768d80718b06bbf8b70a6b01f4d1d87ca78bfee845647f0de210e70721f332b437281504e10d441d92c9eca88b6eed346a95ace90bf2041da01323b0576041a51efe9dd3f676e2e61bcaef595e272c1400ad8951aeb47643d0caf18548f806cd3e4728e7dbda0b8b2c03419fb054d6dacc2db51670f29de5f459ba08ede764f93d46e0d659b950ae22342a375b435d2f75b8c74e9db66fd64c82cb09a0803dc5a96610951f66a52246a9e5f1963bb988c8b0c17ad825563e0df4dab0916774b17d27812f6c8d29bf525656f48c9e1aa9df5d6cc0de9598515ebe130c8ed2838debbdde7f2897ec5af5dd68fe91182d5bb51e1b04683fe8dfeb75c5806508175af83cab9e81bd0cc7c6f0f82c3091422182c1e9ddab506e2a0ce0f9b113486ce2802f229eb90225d2972238f3dc874349be5eaf8e83e6b2d2d63920ae0d0f2ccff9749860879469456f8e22a690aad7517773db24e3e39836a9fa6a5e7063078a40c9b8138c9046e9ebc7e3d2cbf6708752d25b155607d5c595d8ba8ce68f5838a54108460025ae0097f1df5a96070225d94534b5322967ba7902848029e67efed2698679b9281e8949e42019269d8090d5a85f78a1574a4e8969afdc62ed63a6e79efe8a6209f8a01132a6876925425ded4de1e886379d1559883572121114b0809f4586d79a208e4f394859b188602a8da4d74036b255c6ba84329907ed33b289b6273264768466b9b125d9f7f247ba1571eebec0f078f96d4dc9d96ce74a6498a90d44cc3e31ad3f560db93a328043fbfd74b3485d81b9c96761c82544031013b2f0df870271b52e65f2848e178fc92ea4d8f2c34c807b91c232163914018639c8679965c1ff1ed39a93208c496c5f14721ee8b365c6596ce592dfe4d1d5a62ba8b7b1cd270a45305f327701ef351f7d405f4d22abd1caa7e9415ad5f172a198fbdc53d77d4e814da45ac0ce73ee8882a539b60ed4032491ab76b79d4c500f358ae8ec43ef5c8ad6563f1ee5c6dbc7fca1a3b610768913af84b6dbb5926174faf73a8fbe6a3c1ddd056f8d747c12b91f98d3d46b21b8a933e63b386865a5232f484d574f0b8bc728725988a69dc8a0f75bcbeddc211757a1394437b39c1c268906992aa51e8be743670b005a84ca2b37f3b4559319a7af98c30be56ef21576a476ec5139081ce637e526bd426adc30b84826a88ed80eac47a4d3039c39b7a3e6972f4c32047684582a113513c819285989f64bd197b70397edcc7440d067db1d9eb0c84749ad15c71708997617e2f4895c15265c1c9edd584de8b2617f54c7d4b5b1a1202aff56af9398e0340ff159af3b0a341bbb5b8d8c5a600595ec3164b5951aa06c13dba37da39862dcae6d1b53bbaf1bd51bd56483feecbd0e0dd62fe6f7fa9bb8a4333335d23742cd45374edc9d2593ef1bda53a2c087fac1654f80e4ecd7ca1cbd3e8f0b6cfce3c6d7438d92846cc09307ed26250d93ea7e1923eabd3ecc80ff690d30a6733b50a2973b8a309bfc1c1682c9497307a4b5d8b669c42573398f2291bb3060a54efd0932bc5e59f37ee871ffca22b6f14d1c9d2eb596e35ece5180b1b0e6a378c897203a04060407c1891185fbe814472c9b0b4656be897730c32022290a908b1eada64a7423cd1be3d4996a98e0cdddffb0902c691ca524e9811741819d98f24483f9af6b8daad6829cc30399afeed93f16911ef78ebde899701381061a98ae8959b33242743ebb03522d3962c12fffed88e21bace3682c0700f4c06cc02dabf0518c9956fe6e1893a1d96a0f510155914bd8d515c869c149c300b1349a7505a1ab177ef186288852437ceab2230c85a1ad1d2eae124bc7cae96e58ae49da6aa386080a3ac4d39117d8f04e1d6d839616398b4d01b38e6819a325ede009484f7795d31c8e331694c7377fa2efd2ff07f008ac53fe539edea00ece61eaa735088f3ce478596084271eddac935b17e7489146c07bd7240ea6006735d00c532a2bb6802ce740991971a27817a1d4bb221ecd4fa29983cec1aadb3f2970c68c16201e26b040ff62dff48a45cd71de413cc0ac0c0722301b78b353aa01988bbb3743b8d74ba98523c970fd847010c75c4618a981849101e451908a2debb1500d8a6355f7b85ce4994f38cba7f3fb6bb6946252339f3bef2cb1ca2043d5d0ebaddc7cbf82c95849ae1734c73f1fe339298c98c8711681e3249f2cacb82e9517c56a2d56ac76cc27611120d8fe34b70a184ee84c3a8ec428716b5df3ea4ea4ff5323b297a845548ba4e7dff6f5714e410507d6399193220ff1951cf299ac1ee4bf843368a0ed89a2797d292343deb94aa37414b6e3e9957c084fdf45d8f621e60b330c96c6f940904b1e26ab07704b45961a854ad0e8ae82fb5312927cf6a67eba1d6dc9f7d669dce2507de945dc135122475e43f71978a6bcdff4b652a1db3d75e254c9c55a8ca30cde9aa68e66d2b0b4f8f86b6ab81229c4ed35afba6bbb8af9eaceb15a27c241523a6135f9e07a329d2c0d6fc21ad582e3cacece9683d5fa67fd00f8b3e3c1d95c530b6fe6731cfbb13a6bc5aa30a3a7927f951f6b6beca8706d76911ee2e68296dbfe18a40bd6e01726708bd8ec933c03304ab98d9541dff575d225525126ff86e9f63778851d83f99608255957aea1e78dc6d9458d3a6e403e8aadb31bffe406f4f4d87159a0f4a8eb2cb6d37c0caf74cc7affd7e025399138e096db77af668d6e77846d9743236b53b9e7c624f14d7e86706bcb1b1320875aabaa6444e04c068d43704e1f3395f7b0da8ee1eae0c700459d1694f1cd18187eee061a681d1eb3144115ac3696b13d06b9e70a47336aa17fd85d95dc378e01b337552365f14d106989bd9841ce63e0e86e90294b5c47c002c99d8d3324c901069f691f0fc199039dd335da07a9255f985b19da5837f8ec358aff0fd949eaa098d840f4df906a528c69760cb75befbfe703d08729a82bb7447b6cfcf8c59c6510b26daf42ee3a7772ca486bc6156cbaf38e9727f587600bc90cfcd105ac46bfbbfd899c363845c048b5479c95293252c5bbb928d0bf6dc61436c175135928e6089b01c1c7b3740fa4acf7e856bfa0961d9a21914997a871915c88a5a432a127bf41a139c5e418df67da55aeb90f645f431386ce7dd295b5207d496650235b9b18208fd992748cc20356e5ec30b34d9d2984287bc311bd2ca695e596486f0104c4dd899169dd1bce6215adc996c104b6016d51db18da729b0b293497935fdc49cdc934a52f6fb8c7d90cda79ce6ca26fd87016fadf8ac8dfb02dcd94fc48b2c02eb78ed48c3ad570a01111ad1e30d682f66b04b000a8b990e73df380ac7e15d7fc1b4a199306ecaf8a236ccf20c8ee347708eeadec32b2b52ab800201df78e62a6fd050b783165d6d03bca67061b8ebaf6ec7e247d7c06c5880db936bb5783dd8978054692e14140796c6aab3946cdf56d955453b5c13e52a1ed18409094d7c8b64ddb78421c567843c62dd474059f5b7e6c3e2d5394c70aea85ab3f62c4577c019adddd2434f41a1b4ca17d033ddb642b0cf37ccd0fef88bd7c453e68666e3cb1eacc75429175a386df435bc3eea7df381fa4193c06a3152bc74ed2d64315a199baaa12f8fb519f5072ca91e82d6051b1c0c43492b34da0df121f2ac3603322bcfa15e3e53f734de583e651acb8bc614dfe51335e3b39f207c9407b43793e9ba45eec97fdad839cd790e99c95fd8de7f3464fa142ab6c53142ef00ddf894281967516d5b8f829db658a5018485593067cccd24735945bcb7d41ab0239cc727e5a6f3e448f4e5cd4b7a2e6e5bed812fae08a1d033286ec434056a1cfc6c6cee7c4f867c1685117853c5bfb91407875db3480913e1b33d03c6c5d189135164661d6fbcd6f4ba9a4b2217b8c801ee5c9ab8d24ea54a7b39b5c7a074441fcf080e22daf8b4f660d900ed36175dc297352b433221e447e9bcd2eb5862e6ff50411a57a1845755004a6d84c16a8bb79c67d3022eb9501dae54d1491647720978e9dca9b122c439675ca126d3ddc163a0d314db8f23c1efff594480bc3a810ece130e234cc1c76a0f1c06ebe224e4d1160814a944caa4b29a1f214f69a18a60b779d7452292600ed2ef63075b3a2b516d7cb0499941892b26234ad83ad2e380e2d1605b0db7ba8511cf5950ab19d3def9c4857a6beba82911278a30e277320435a5a6485da259649b4b765d3b12204c04d03c33ee74b84ac32dd578100f9f25fbb6758dbca8ae63c1c8a404cded3c030ba59124e7823f79f202488b5ce1ae9fa863796a0471a9cad0bf97bf01a16e5cec62f8309d58d510cac17af30620c874a430b961a570d8ce861aefe6638f8a3782e3b64e6f24e888ce0688e1375ef8b2cd804dab10d3f9385f44ff86684c80329e730d31a326965d181bdb87cfff584af6ed88731817e06ad23740de557ca4ac3839bd112450d261f5a57e07b2753424e4e117090275b84e90acfa5f34f512dd7496e39afedb3db14962b945b0d8bd9548688b4b450c4a97a314b906da5b3705de8ae143eb7151b7632e5f04771a0b7c171e63e4e84b7e18b42cb038600258856ad4066bc205a83352facc7985bfca913037c98fa6f9f05c781df409865f08e0a5272a7ab3718623be2b8bdee3ab7cbb8dad6d4f8e26c184f19465916586ab6d4df40bad686a738b5089f6a5c8127de8711b82c0cd6ffd8f4158e35332c7431bb92a4b92dc75a024f11f632d5d40feb58a2095cd0e53683834b9dd9221c880042c4413c3996ba566700eede9d5bada86393e355f8515fc2e78b888a31e13c66a91c14252c9fb9321642f8ab9617386545ee6c7774e768a17e81503d0800df0f622a4331cc5c41d148ab9d17c326beb6beb3efb9bd0d40ad4c4beb4e8d17d50dea7485da2ec9f641da139560cffdaf35c4dc82ffcfc8b10080434abd5bbe7d6c279145422c6a8c4a4fc4ad1b4e10099507312c196508644182d8b47e97af3017f3bf6036f7cc2549ad50db9f376776a2edb7ea799896f4d02aea29745b9521d2384ce02982293684db6d1669edb01ec849ca6e7cd2c8bc674b7a0004396ce1ee72c71355bdbc64233adc089539246c0d37dfde36c2e44af82c0c522fd2693498ae0881c3cc1f0e9428c23f709ee705f2dc3b19cb0bf5ec74cc585e0e019b5b910b69779c732e1cb3dab2f51958c56aa9c4968276b224b2ca0f54f9d3995b4cfbd987e868859fb7f815c0cc81ca72a6d12f873608b0a0a1427376856e023edd09d734c54fdb13f22ffaf8141945f978deb5ff6a2512116e5e42401701092d0a4f083482b06ffcc995d93f9eb8b5e3f5f9a1d04e0b517fa192c5757fb8372e17aeaec789fc015f67e24337cc02377c2d4db3093e0940c8e640affbcad8b8311a943b53b2782ab8c33bf1159ad33682c8ebe5560e50340cb59b743294eafea054bf49e3e9c3874067a961eed4263092e95961472b90ad03d561557927f823817c3123d295b4b0191230cb7a47b4e83bf4e6406c4080b6d9371301458d39aa65d21a3c15667ee960f83834a164948bbf5b8f9642affcc9f7da27f8adf0272986b37934d09a112b7c675d6845bec4c00772d21fb2c27737c7d6a1d886ed8b74b7b0e3b3d1bd1bbb809fa9131d0407a11b3896694b968a30dd887a9e074a24a7a3255611d1dc2d0c78949d387f49e347c73ecaa50780963e09d9c46a7df71665f2ddf9c9ae6d34d813286eb21132be0f5c8b8d9e5441eb3d8624d7fa58c945c82eb1d7c06eb270135881cb4050efc2f35cfca1b062afb6c0c76415c451e0cc7244a180a418584aeb456e89d86fe29569f0c0aa0d1fe797fa1eb10ed869701577342630b3d626ab514b9e72cd450e27bf4bbb128386185aadd13089345ada62d03955d23f197aa490022710ae39e40428272d46f02e9529ea9c93d741716f9132103b028cc01dddc1efe90952636b65c4d7444221af6f506345d2d5f7cdccc281423269ee297df36150130a54744aeda30b9cc366dfe3f0b64411952c0fc3a0363ccb1265e06c57839722d840f1be99d95100355f4554b85e9b1e9b73f125d40c0aa730b6fe13eeb083c61c8d6ca96f2eb9d0677c791d0a34528339604b505aa6a67e7064f4cd7785074656bf0a6044061c82bef9d9c18fb19e2f6f488934fa6680ba00ab5f7c56c97a010460033871a6efe9121e0d6aded2f8de373f0890581c07b293cdc54ab3680873761dd2d8768181de65490007c248b9fbe6ef9b4928f397c9ef3892daacc5a7fb5266126ab3720c80c07971c4c1eacd189c539b4f24ae9d5f54f682f3a905407d6899c9269db2b26a9d4f64f691609b2d69a9b37d0e64642311b70b789bc58d239c9555ce7b8f50999b65e4aa5e89a68ff015ca7f2b61cc6a20e96c4bd7e23ed35ab217b7e32e067311fb8bdc0cb2d01d5d3b1f46bfbe596b1323a0d4aed9cfb3a7198d850d66bed711e5a69d1bb36c087655dcb5c127e497d5d0d4da3d8530663b38798367974d7e59c4962054f2822f008e77e0f3b46ce1572ab98eaa91cea35e885ccd849680a8c384bfa77f029819fc3117ccaf727997aa36f45e19ccc6724f7edae2142867a3ade69b873cc5fb9a9d239e648bf8a6723fb6f770f43ace35e1bee087ca384e5406d9257b0a6d094258c08d51e6027483072f193aa1915c24ee55251e766a81d0076a1926c0293d6a89364c34dac6ebb619204d16f0808e25fbeb8b95a13e20f8fe5786269106ae2d77228a7d23c7834d28a26161d61ddde78b89b2887b9913af3f2475ac73eda1f7fb0f4dcfac0888d518667f994b966323e45252d50b0ebaa8abe6e0690375e880a9b34e3796e65c9eb972dafaa66f4f00bc64cc60283a4ebe928b5b0d210e34780e412da9fa9804fa7def44710e0036536df1d0b820884e550d01ab9d85684e803cf58ac04197cc3f8e1d30b71ebe341ed00845c76c6323f34bca557039b9b09591f8d262386015b32d365d18b5c8346b0db337ad4cd1559a18e969ea8f0cdaa85e011d1225cea8243b01c521f7bca6729d4f39c308e686dfbd5fd4204023cf9aa9d3fef67d566c2368704700de3704d57b81d9bb05dcff79f42e9be72dfe1b90b726e4f80231d31130d608c8787358237a36911ec2e41dcd23a4ef124d219f70027fca7f19e09ce22d84dc07a5aeba2ee1852170cf07f26e1ef5a6eacea9e303fd0d07dd82fba8e9c3dcdd7613b3ef942516608a52c9d1d4af1c5384e350f8a73be9828a31faab3250d1045d3a5bf90e79461ec76a2cc490892199b488788a16ab61440d395bf073e309729ce7ee33b11258c7aeb5a544a98ad0bb7de2efa688a02521ec2ea1a728c8920e522f816abb7232c6cf9bc37acf23656217408a3425bf8aa104adb5ab462093ca330b468c42e75b1aca9423213f5583f61ee660ed71b7d8b88cbd1c94d33038ea64c4f64ab8b7941e954036de52382cf91b025b48a1351bd4f693c61089b7799031df86b52dd60d3f5ec0a9215ee2b4a86733249ef1cce4c8ae208bfce7d2416f7faf88a233b0df3c0a239e4a51fcbe0778c46a426555373f0f2d939a00c87ee7223285b26b679734715713a2694a244983646140d46b7f97dede2533e1d896ff58678821d139c422c070a2a03fe23d7f6577c39f1ef5b3c023bbe7abab3b75022f4e2c5c43f9a9b61f6fb2d9266035a76d0d3a943ec1d9797dab81e9723db60a6133ed32ea0b958d7f5b6d2f358d63e3b20b2a5f6bb9a5e123b1b6a5709c490b237bd044ac890bc7bc0d6454fc8b3623d94ff40922b68faad3a2095317cfdb2e51038d1d6958c0c5206cdc1a1b162a3200789aa949f7e2c89027872012b1dad49db1faa9c066c75d1c4bc25d44e4d4367070ca003f6f0435faeae6e05e413e0828ca80b3a4d248cf0713840876e45fce206196dee60395f1e2d67604dc862d94f2a0024c0177de1043bbb6bb36317162c7ba9252f4935085164728e3027511f76cc16bc7a89b4cd2f0d1d4cc5ee4c4e3093415da28855977173427b2c24161aa2f1e9e109b22ffe56f002e34b161f369126f12df6021a0ae370f385e15aac6f2611f3c12ad7811c7b7b1ee2038d41243826c2fde1e5b5895859ff92c38906dfa4b47709085334127eed2f458767a769a220a1acb9b67f36d2a856a5e585e3db0a9582a27001cb062c1e8c5cc378816d0ad6e2db4c72c3d6f306303bfe33f747f9dbdf37f2b1c4b511c64197e0e754365d067f098888d240b66413f27ac2ab0c165ca927ea8052645e7c106f4adfc70455b9af45248c1b0dec806b1b688c78de145c43839c57774cd53dfa5043de600ddd5d4ba568201b882bd713588f68031c968928c4db39a9e1078a332cdb67acc384462554d8ef900db293a2dd170951517afc66c20f2e27220cd4208755aadbe945d4824efa2adc3dff8bd7c515f68799e11d96a96abdb29ac0ee094f8ccfa582d6ba6eba45efc7f4911d55c38f47a450f745325c3eb96fa5d35a08d0e50552ffb436653bfe06c353d2e89c1975f1c814420b185d5eb26a17aa16b797e755b81c218bb6758af86da435ba9c9f64482caba29447df0f21ab1acce6c70caf23dfabcffb3fd8ad4926e8d996430260b422d9c1367860c4d66afb85c830fc57192043f2ceb0a1c1a6b9082e0ebfc08ee6173aac670738ee8c8270e071acf0dbed1b51db044cba70e03e0c85c183a96b8fc3b2c47a56c89a0bd0e3fcb36b71f8cbb8d695dab40662a94d002addb263dc73c63e13542d4c19fa9984541524029c66550d4e4aa63983b0056985b7e6f188ce2e4a7e7441b0dbc4003d9e2c4d2d4c250d66a0003dd87d8d1e0cd73cb546974f2a85e965e39cc6eb3f29c0b7ef9931a529af8f04c26d8e33eb45a1baef090a9171bbe68ed63a085cb07910b00a25607e81587172a424a27e0376a741d82beb365f8d8c5f0abcb980449f863e827fb037f566564a9acf0d3f409d35d9f6a49835312066a4f3dd6e622401736daec7ff621c2fb85ae5f29bfd45824f2683069d7b2201d920c44d9628e2c9003ea7cc8f8c0b8ba1592771b1a7be2302bebfc647c7c4058433ea0e1ca075c24915bd2fb98cd428b8788e169476b62b8def259103f9bccbf0970c3042cd216d0635cb56dfee919e1496c67bc380565144a261c89d7def925157910c9d740d8510fa138a73eb98d494bf185b1c998331ff139ea1b973e1434c64e004e41671370bc0057e3bac63a61e6117801b7d06cb74661ace9952dc766849e1c836cdc41363a547a157aae1937374af8c88e893b6396b86645f986e2c979a072b0717172bab25afb359374a1c0b52c3472a76b1e0a14d9193280aa2da5fae1413ae0dd0a6aad73a5af615d5b425898ac6af04881b5910182a18aad1f080fb4aeea635f046ad2b305417ffa8fef2969f5659608a20775a43e01bf70152b116cf4a22f2df0da501dbe053db1f481bf399eee88d0d877c0c513f7193c66c4b2ce1a6c42d36476804cddc680d234ea870ca1f710136a0acaabea28b90e4775cf852674daa4529c909525da54b9f57b6e3f44392b79a10365eff72f699935f5104e11510d0cee6b61635e7fcbc41e1c32f53a706eeda689b1a08ec005bdb416afce5cae76244a9e9c3ed20a04a68ad12789c6377d52a84acebc4370ac205672065a4aa01688a06e8179f4e0c262fd93946f3c5582b2fa4776b49b0750319b5df702c839a2f2c67196ee17786eeb8ebf77c6f84adfd88362ad4e1b76ad396352fda33696d7947fe8b277b4caba136d7992b0eec49b57625d6757fc2778c68b8dfb4f8ab945ddb303e15aa0708b4ff3147fea68be14f012f3dab6e854d5a6a96c76c1efe62fce17e21a6e4a41a239040f0eb916ef90cf5bebad4e7ecc639b1ba3f034c1e64a1b58ec41ebe7898040664db268cb23e6386035c72c51fee1f44d2bebfd4a7c12121c3abf7afb8aad16b26418ed7d941f7d3a94db07e69f9d13be04b342060c9387e439ce6d05599025ab71c4a5ac2313c36ca9eb19eab485d925821e159e79429f9da2886e233ef24e4fc5d515c2b4ca3aaf2893548e3fea4ceea10bb716c29e4a2a8c4cd00e9470b4f70a72810f7439c66235e5b818927441846ba5f66ab18af8da81417fec2548477fb0de8d7ab41855fe8be7793b8964ff97ce3ebc28099f2c8f868895e64682f0da2c8d867e15f8899a2f66eb3a61fa59890ca476e1ea03c564e6f5de8e8a2dc18c80280c88bf875b56d993ae5e37b5d46938ccd048f99861dcfa6f392abccc6bdf1d942c040e4f6fcac66cea2de16d09926b3c204779677e7ba12574abe1e85deee3ea1b5527eb6b726d07676d55d4009eda39575682cb1754ea9d25fd5e2b96b4f1ecaaaf162cff178628d3a8c23516ef7c9032a40d80c5c0df18ac4e7fbb1c92679bc935aca59969db12f60d40eb1b27a33d50bf462b25607e9e8643ca06077de8f575e6b438aa165449c218a120975ad62603985ec1e716853bb2a338939c01a909afb90af9cffbf3eb53d9d56d71f8f7b52214997dc57b2a05e28fc033226deeae6954f568b4ecb1424c298faef7c1fa1048de9b4ae00d3fa37348fab656b6c48b25437fef68ce4eabfe63a9f16f1ef240efe5482ea01de0e3666279b977d9ffdd0b9feeead8aede96f8c50f0e25315f00674983a023c01b435069d4d13c332661b235e5ba7812b439372545d218ef0c35cfbda93034f98b40c526ddaebb2fa95b53f88c8b664200b660fc7ce99c2e7516821a179038fd67e49ab083013cee3bc097ad239c8a4d0ecc316f58b5b02301101db711e9f7fcdf6591f00b93f08abe3f488a2e4e8d7dca6540f90ff543d0ab52465236b6914a1911f06d04c8d3a0a5384cad0a40e7f1163273ccc5f2ee78498d9f3ee65614ce19b835392725db8c334f4685b1f4f5ca50b9a08291487341707a5437a69035a4fca7ef32540c66360ccaec411f55581ea43bcb90c7abaf795b2a00091bd64166905391c3740efe97cc1336b6e9df89b5fdc2b26c9297967bf1bccefa2508af7420b6ab38d9a107b1da72856e8248c7a3958a2f6fc355a57e1dc58e79e12fdf7051e68449765b154a0eaa43f61d44db41ba8f83614291921b5cbbda1f0aa296956e296c163b67ea92152ec0e92f4d4c258ad0a1ab6388784c643a76f1dbb2aa78d7cfe8c4617180102cbecbf308fc34b77bfc7e9c4f8ec657d082b3985917cfc48ae437d644039ccaf283f03a5a28073f17ff06781bd6af8b5fa19efab6181492cdf83ad0ea20d121f02e8cc82a59ce2239b48ff51e28cf21e09d64fec40cb57a547197c0cce6a40e62ee05146a26fc0ddf382a92b2fac8d346aca491755916e8e706bfc4d64a6431e9628fcb6fa985865817eabc37b54445c9810f32104701c2e428ced105fb0996a3dc937a26bd068b7c1a0fd0498ffb0f700532309fc18df92eb0ba8be8a3ab1fd349a49df91f7ab6505dde193689ef218da6c24ff64512c3b94fcf78ca4388eaf93cab1b8430817fda0042fb2c522f5072bc68305ea094013f4e5f68b937e695af56cbd8e7f89f834721d21612bb35d09c64e480e5814f1c7e7086d1ec90cf230c5389226fac4ac4c1a8e3ec0d5ef9603703ad7ba4b7434e5a6d33ab339d67e07ecd3cb29b075f8f4b3c6f2da728ecba5968dd8501b2e50a5a088f91d17e6083f459113d8fd80925e56ef3354c6d81252bc54bc3ad161e496043acc51800a382e0ef9d4009ad7506c0bafa36e46f36bb873b4836b89e7e158261af7dd24e23b68a1e536f0d14ebe064d16d814cd1588b4beff63b377cf42ae01012f4e08a295ab033fd517710c447698b04cd43dfd0a29c6ef29a4e943f23c9fef2f16c91ad57569b76008fb590fcf0195b83e84204eaa83c9d2c7c68e3524d3cae859b377076aea8b66f99b672a03127c6a5ecc7e3a9e0266e5375014fe66e6c5af133e5b8386be726b91ca1c36af21ed8dddb8df79a2c2905424d58010f648c5c73b63d215517c97b8ec195fbc5f13d1aa9c12cf2c1e1dc31825ad3e559c6f6ea96ca593a3fb94eaa53a0bb8ab8047ca08305aa66e97af5784f4fb1de10a82009d7c72e74190c4634434a72083546e173ba824f7bd9ed8e82d0e324c85d205ba6594e66b9bb6d5cd1ab5f34cd655a8470da07e0c9f201f5f88709fc78c7ec8267bd0fff986fbb4b5ee99734a72f69c21819346e0dd14cb929094116d0162318db740917b870c0e894ed183a0ca8803f71a312d21bdb947f7b7a435426555797249968c76e8135308396c3a63f62adc62b3dd30693dd0278de2bdb0961b11c8aeefce6153653a2e0cbbea363ff5659b1295f08e270e860ec4a0607741026316ddabe9c0ba030a19ce8542a0692c6ca0dffd63ebe2c57ad6d777f72cb3a386c3a779445aed0b81a791c2ce56da1c128533a622bcf92c3b2654a9ec773b75663ce2e0a94fd86a4649d4c6fd1782ed47738bd46d1b0302d7645b8c2f5809feeef2de2fd1a2db8f69c7a05fadfd8e1176d1ab477b4c22442c2e8668a7d6aa13c7471fac5794499a9503e2f71a2d8d6e8aa831b000bb11218a125400ef580e4182ef30af966e3caf7546cb12fd0462b0c901c9302b585c0bd5016d3e5343dd4de2bc5cbe1271884a72d2e82b8f67f9ed6f6dc5ee8f16c1c1cb45021ef51c77e4688a206d00a3caa68b417f9b46adb579ff445de247db6f2b681fd14dd556cf057779d7594af477bd096a6b5235ce5a2d89e8a15c945a89874e219b699191a0bd4490b5de0fcfeb2eaae237865bc5ce6891a6496c4fe938e5542ce69367ccfbe20c9813b7c4490bddb5f0282e48d1286edf011f3801b7a901c79afd481fbd0485979bcc05dc27ef7bfbd40ec8d4285430e9aee23fe03ac7d7b44b19cfe83a9cb806ad83b0c003dcbbff3c3e9728af2a0b86e78d23d67b15002b6b893016c320a91dbea79ab7f16eab20841e796bccf89d6d0147e1dd835d46b354090683c943a0017348f2ec6e8a836312eff8cfe15c6c15fdf6f859a7ad00a3faf9f1640f6d724b00796e25c2ed6a0bd90e18d27501834dbb93893f8592ad9359feb4c8c5cd20940837b670c295be86ac1c2f2e1efd393926e8e6adcb9d0289b02723cc124346c8f4f01a49bff0eeeba2a88f9079e96f7a941368c7b0f87782e07a146a711789d44ca54f5d26251454d6fe79eb205fbf5e9414c86379e42227c62f49d48121fe56b8821ca40945f05ff37f90c0ea653e1d3ac4415d4600835d20c4e6bcb7c110df1b4c0f808843bc349ca12792a35e17d0251ca0cf59a9618005bddc83d370565a94b90dffe6664f9b3a3da9aa0832834d41c68f7afc936d278ad8bafd8ef9635beba4d510c744090c29dbd61df696ba08a80dbae8520951b4797db01126c81df2b63009376b2f49d4a44ebc4d02a1606b4c73b93918dd7405297eaea0baba33269723427f0424a8f7ced83927bd489d5067982f842300b5bacbbf15b8b1ee752c256f95e5f9174358a6f6114cc260991dee6e0e1dda957ca368ca92c7a2b64f12bb5c36ec8d006772c836cf0fcc88cab6d922c8c2d98580b03a37eae28b41fd8230b45b280f0ccde280a8324e430f7ff6c3820e027949edc4810b7fd173b407f76835e68176df80bad2517d6dc6f03de618f27223568995bc75a10a3839933b23766f822aed38c73e5928b2e38184a27a10fe0bcbf6a8e1c3d4ef63660cc01d2959e749b7aa418800c358224e1f8f530e886ff8d16f5bafd53a47e1c61cea0b630a2697e60122df0972600e69d3126fc809cbec5ec8665f0c9c504aed6eb69e93898c19e324baf83b02c1dda38a1c3872cf5609ec577e3039ac2e4674ea21428d08816a0ae10ac5a19f82c4a9d8504d0786e547bdf9e80c632590a2639955b65347f07ad8547446f58d4497c4d7987b98f28011e0d10dbbf6b37588adc8053d13c6a1773921d312ca887f142ad62a2a941e84ffab15113360a05800e9fc5b8cd01d4543dd013604a81a0e1ff15de31c099d5020318a01d436cf499957bd8badc59cf3e4d28c89fd6e5966ee3cbd09f8dfc39c80351e3845221bec942bb6487196f125f2c0f0dbb517048cf0237106448fe38b2dd1e5d9de552b22fa258811c2344fb79726055d7ef82402978d208222b43c4667bace2688d593d37accfc80dab2c66d8835cbc5ed270c1c49a382f503750ea27f7444092971b3494bf2c19888af030c74c7f86e5536e66b603e5e352e25c9f36191eb19de3d960b17a7b8f02496a6c1f2dc2d604edef995356a6b6d2f9759525d4ff75f3f0908e406ac6c42076b2e4ceacd61e931f91d712e6c2e89f28139f2d4297e186032587e5cfd602f1eb0a6a0004a2f29b7aba8c74e20ed940c10348fe46477ba29487b9967282779bbbd35488c75584da34867fc9de40d2f7209633fd17941e2ea3de6bd868c88fe09bbfcc9680f2a9a9568b88ec985f8089d3cd4bc2a7d403532f076805784f66e09f7846401598204219f7a4c39a643c890d698fe17eb9c9a7426c3321337c6ddbcd94bfb60cfdcff2740099f34750a4284539002ead525d9f2cf39ee9ad1c9a046691a2c556689138af781e73723d05033c64b64938ff8737711c70db487c699ce8d6a132bf691b15a6e3f87abacdb9ab533997f491313e894c4f0182e90ee7813530668587e4fc0c3791a1b30e06fd92852ba6194cc206a2ddc60c8414bf6643883a22f7b1c923a28c59d8aa9d6c5afb90588e4d6f6485ff3e645ec00660c58f28706f6e35bcb3ff2ef86c3cb026f59cd338c930c6205ebe84dc3d2fbecf0045b38a84013cc7d4e8ed97241125793a988e866fa269c4069d1be1448142fc3690e4da6a575feddd085b4b7d299dfa523e64f2a9453a0d69a9811a08e6ea20836fa9506a5b110d185292a9aed19a2b211ae58851c372621017adce62d61d4d06ce51347bef7313b0c940155127442342ad960ae0362614dca86fa67822f4d1faedd116f043993e242b733aa3d6500f47bc6084a5f70f42b61de33e3c6962b70a46d213ce7a120e2129595efa2213688d5a4bf92cac650e22400949b23a1c7051aca80d11cebbf644ac5cb829304f471696d3c602b51d80fa573f2c1d3e39d2b9ec5d9d908dedb22de336b1b0a46203edb9349d3df667e882458550f0186ade166904cf75e086ed72db32ab6862cfc37ec092ad39356c58bfc8e986fa77a0b8358f507504298f778bcda24fa6de19fa07aaea6c47294ce24eb766e590902366ca2b94a81a4673ed541c12cbc8c57e230a87cfb020618ade3f5b4f6e3c3519ce201788f918bc40451a1486daf133a04768517b84bb9dfdffa0659e0f4d6bc5b54b53b00e4acbf9a282f30d062e3a32f4da897ad91c157240096211ca943f1d2464cda996637b5a36d946281438046ed9b11ebd25b9cf3fa4bfa236e4f5fba6c91aa442a901711d83affbb0523c819646aa5da5406f500acc2665150f991f5ecd294d3d630c3252605c620f3d88f4fa15a827c2411500ba1c21027de8526708a4202233384e5531278380a57bc6691b03b0a8f012798433f12bd204b36039c5b36de056409366aea0a02d8eca4540c33e37213140fe9400bc54acc456896140e07e6271fe355f282cfb8c4d1820f7ec0d00db06826297429a7d74f52ba2c28961ee898be57fa83134e8bc424b9083bf9f315c0118c66ace3be5651c5866bd949dcc24257fb5b161e840aae495674634c5ea7589e62e935f44aa86bb894576591d2f78c7d77d6d4234f581334b02724add0e5b5bc820df2873f250f9ca2c5d4cb255336c56b4e90de6235e762d42d65066c57288901830c283d263e8a721392ce65d2eb8785c0b7a61e6a1bf29ce6756e93eabfa16f2e6a4ffb6725a526fa3ea88fb0f4b222701a9b0a8fbfc85469a76fb4d1a9af20afbe1caa293556db8303df1b555e2064467eb32189b47a22534d5ca66027981dd94e65c6963236f0519c66b54bdfb675d012dc1a8d18e024dccf579ba8a46ed3f095560bde44b910a0940866a285dad2c5e5a53975916f99ac2e4dc617e2cdb5aa61c4b650a348cb251b8205cb7a3868b1a92c4d321e45876ee74f29dec89fd04a1b225647ef697a4e21cb6541c634abd4ed2938e7077dc217ffe82ac9fcdb91813c5a609ffe7604cacc4e17747b726aa3946bed01b5bde59f60bf30060965d9cc38c4dc8587f8e3462e7bd296f9193e790a1efae47ddfdf6fdd77845fad9183324804fc14e50139cb51d783ca2c4e530f69e9953569ef1138f8e7ce30b931061aed94a9101aae4ac82c4b707a4d399f349e532dd3fe131c7d34d8119ebd33e205e767b0b62b9f20ca05a648d3cd1cb6a07f0c1e1937bc0cbcfba88bc2917cab7ba74e2adc93712d9e5f4fcb3aad09c4e41a8a0300424d98d182bf750577dbd03abfa603a2a3095e9d1f25d7a3dcf6e6e3f86c23ac4f508702d330f44fc5cf6dcbe217aaf8b7d91aa33ba2a46d14c1b24cc3884535c8dfae3a3d5931a9443e1878267d8b5b752171209978fcedbb460a8440cd7309757e070458267b8c1ae61155b98d4b5d41a0549982bb2bd149c54c9b141188dec7727d8d755cf55dfb38b8fe3adb062f085e73a1c16d66f50d617f62f621c41abc19ec23049068170e9a5c1d687779c2abfc834fa957262676070b9377c1f6314971f0fe986d1cb8ae059fcf3c0262d6e39e2c75b41549a9dd93e17f7a3f56dac41a56d9926ffa53d0512d93d4bf47312d825c458ddd206936012b034c8d93ce155bf53058b7324b73e8040ddf834709618336d9b8cec69b0d5ea88fb0d6e15c933dda80594dc9e3e8b4a9a101b19e0113cff50074b449a6eeee907e458e984a3e4ba7ed415542d9369d7a8b63ff228d292eaccc21c33260573152538bad52f7ce146a9d752c528bad3aca554ba3e80b280aecca8c89dd6c52befad5048bb97172d70aa12d6956f19b12cc273a04601f9d8bff822f3198151213c9f88668cfd28d1ba2912ffd5bb07a0401d80241d8993281c17bbe0f42f403660e67b85521b01adb8ac596a04c54c3e859017a033b550680972cf00d37c5943bd2738cd565f5c2056c884062f95aad356a5afa6698ef5c2c7a761ca8ded9a82d8533798fdeb8ae4943ab5e4b7ec14bee798abc79de7976bf242658ee3fe52248f28e6bcb25a5950f6b19389e4dbe7107d3e0b967d895058fd2c6cc80f5db1db2a692d8423e7ec8436f18bbfb74e5036e8333cbac1cbafc14bdc80d2631494fb9233e6df30f7802a58c68e92bb596d8bab39e290cd5dff48b126fd80e51ee56d57f3c0795de292672eb943964e20d64083e5ae326aeb517ed83d173b33733a8e0cbd73a6fcfc1f2033450d9f3e6b5d06f64905a55ca187ccb7b134b240845ff332d638c21fd3c525e4386c621de426e28d6623d8b15c340c1ab40a0629765aeb92951780a01a05be47e758508326c8c4a129a622ca0a5fae786103cda1982344bb5a753404dfe3a932e16fe1964b02980f19918e0153b3b51cdd360a50879522156c0acd7ead39f7d1d7147f9fb8867b0ebfd0b503201b05ee996a8a36bb30e2aed30e7ee153b080a372afd2d3650d2ae810310ca9c6606577d9889bb268705c1b18487cae1db7643863c7f6b38845b076f153a2e7127263be5fdba5edbd5d0d2fd4057b2df11d9de141adff8c599afadf32a8d40f6364a921d0ddb4863f37afe9a2d3f37797ee6023d38b53f7da3a6237001a6e2d12918504a1b81cc65ac6151476958ce6ed8842317e1b627ea205c32caca11be6102c9977a316222e562a1491793df1442cde7bacffc9e29f9f04bc01718f69d5c728d7db3c81691fa0ef2f7876ae9112e8700997981533c80f06d88c69a45f25d546ef597932db8bc57797490177a4cfd617f734431f93bfef9ad11fadba5bb21afdb5e0738a1b3aa5632819ed887317290c39519db83d0a70f6608aa3e623e9d5e4ee0ef38ba99c8b947ca20675482d17ff4d7c996d54a32697364154a4f87021860a32fb3493278a2becb7a5509e39d0919f97f32ee877a9c06ac67dd2325a6a96b496df3421261d45d88d0169852a6e10a41725b84280fd9d2190594a568db8b6568130bfa562c460b96d092810f19c8859d6fdaa6aae36adc98e6c158b7e3ffd1a9c4683ba0b8c24dd4a031855e35da6b8083074c3248a94d1ab11dbce2369ca8da4790b7e2641a7fbcf67d94037d6ab9eea6c25fb3a7c496a2888c757302b1eec37a3da286670cf6e858000b4b199a9ca1015aa92b372931f1455a04e2e7c5a5b6e7fdb40e032751b252d754b5f31498f3b008841b0ce3df834136d5303102bcca5c223dfd245c88bf6cfaee2fba3963f2be2923cbbccce3fc2ca25d86e37ebf88ade5682b804e8dce6c04c8703bc164a81bea228d6e77791c7a9c7c9d4bd9e78073013b52a45efc3fd21a72642e52f1171ec35cf9c0aa769b29de06328c6538fa0a2bfbf966fbbd2d782c2f52cf3863b5e907a5fbf4f33f172a9fd0df238fb44347f91287871de83f50b44202e628c853519762ec91264bf22c2f24cd9eb1f7f4f9709593ef620cf07d35a74994bb82386cfa3204b901a5d86dd2ac1d2b0d52d9b58be5341531f567f8a9b11e3af0943260c3e45994d2a836348a3c372b3b31ef3022a10560b93653f1d1947c30f9dbb998fc510b356ca864ad8fd713f622d95a0cb91491a4bd181c1b16a109d7d561879773b9f3def0806057000c17523c56a00dde9f6a32e62f6926fd4a06ebda429024c1941f3655097273710e431b4f6b1e156ad4cf1e3bdd174aa615a37b089e904a5699e67a0fe4982514bd3d477d69b0b30d4ce58fe881f5a9b1372e574066f8e53110f8a9090f1b49784e675e99cc59012a3e8cdfd22a77b9517b654e818abf618c20f847080ad2295127258e2653014a11ac9c6c75aaafbfffe1052cb80464a9eb1aa21ab0c04ef6701c4fd17b1ab19189c2f18d361dc3269061241b20cbd5e28c0c0a5f44901266648be9c92c77c891504d24b318aec7cb7d82d83a218a0b3b28127fb5dd0d8e24b4d5feb01e2d37bf587faafe4c7b5cbe61bedced10f72a612b34bda66421c24b436d84ded94859e26b6294a76336e9518326159125f1c23201c56cdf6a44c8cee3e728cb62b0d3f025d7d77244e5780cd859b0036ba9cae051b71458b2a7e3689e9293c265b77f1e395fe20ca5ce7885ae78bcc1d740227556a40f59d827b9aae58b95d79e03a8b113180e49b83cd181a86b62f8bd66205768751a8dfd5b86673e156a31db9d05d922d5083dd79beea8a0122c36c9f223702d41ab3adda3f180c4e85a169ecb099df12f58d7fadc2efe496f433915f64d1b10b800c86199975cb4d40168e81c59eceb2f70f050413fe0ddabafc78732c1099e8b6ae2c762cdcc2d70388433801ee291532418689b93a8598d32bf5daa6d797b2263c8a2bafc4574d0af2a0a461dd2b89375539378136a8ccc504d755b44fa5aa01db125bc5c71a683dddb3632868ab54ca7ad76b8a36d3ded59d271732ba133772a5d298c6382f4a9667c8b7c860148172cc4ec0f7cad6a9151464fcfb8c36450e8d184f12be4b9046e095fd0562a9645fafe023a94000d37b638f3391aa1a0666a3bbdb336592012a312a52fdcb315ca31aeb0a88a4ea05c36c6bc5125d902751562a1ec915bc65ab576527d3ee5b11dccca9d894069052fbd3be127b4d2b4325072a0ddda0af05d503126a99b9f667fdd60e48761175cba5d6cb1561e60a4165fb65c8e4bff158a1cdeefb27a7247e75eb2cbb5da40baf6c1db2348adf8f3f20bda11d4bf486897c124c84c2f6a8d9765bc987c6861a55e8c5ac884839129b6ceae1563d8b02b4539e2d9200bca42ac8d0eee3068851e2523e9d9f91b17779bbabe6359b78ed9e6e9ad52dc827286db836606462f02b5893133020ba66a7f9e6b7fac7ac2509c901308c0ece0933e1b996404dc6548c5c7311e348eb923dcaed816e70abd8106d6e2b93e0222a7d1499a0bbc1788805a39dba675d51f8842e41af5c1095e0f5219aa36eec2b5d4a2766ff5ce5614c2bd220717dd567fed4ff9326bbabcfede64f0da9bbffa97f15e193963e004bd8959121b4fa5cc1c33294bd05768c452937c71c5b6bbcb97df967927d4a8a142c05f898190c0621d1ce0332724748944539655299fb144aff92769ec25ae5fb7854d006812e2a87c70bd36624a05c3623f812787801ec096d2531d568a1b07aa346502f6ae359e72915b8422ffd46f37606c8d0edba4476a0414c2804cd60cabd8ca65ac37f9ebcd6c1f19d4b01b0e8a17fedda94fc00d6c11c9f40c651f9fe782b2bb87b7da28441e8ff92c9a01d981abfdcf2865466bc3fd4be5a4006b209c6e8e1ebf33410261735d74d832336d15579a0ca7a3d6d9877a5f8261eafe1aaf02911b2b2bc8ba66a41553855b18f70b4d2be3418673d7ca89c0b417d20c8a9d649cf8d9fe06f2846b344228d9d36e8a368cc942847bf2008662dfe73f564856be7e9bd00987e4563b5a18709941ca6d8aa320cab53a08dec1be78059384854d0fb8e167a396170a52440ea9f4dd4b409c554e0ec6af5ed09220ea2776fab855c959e268309ebcda16ac04af626c90052a116b492c7b8d8d16e9705ad63dc4b803c0849b50768a0a34096bd2aac0224ca5a4eae3a40394b53088e0bec02f23adc2da4b21d9ed4a5846d8b5f6928d6013ec2b5e4129fc010544c99e255b652cbc7bf2d2d8ff9eba5e4d82d1e42a7b1a736d6ddce1acabbad5eb96c1a4b4448b12fe77d136292258b6b09c2cf1260f05634b8ee1a785ad61731005aa58369951f48cc74b2bb470ee8c60fc402fef4b41e858733ce1256f23f72b2140f58f2e1ce32df18d3551fab69a92057897298f4c4a26786309f92810647e7dc20e81ed3c0e01e2f284368931f8872f3cd7939f04eb64097249ae4ae3853b2f17310602f22ee2794831f87dbd4050b0aa6a84ffa758a8dc1e651cc2d68636c7c923ac6bf4613dc7b30b0f6d8dc4f972f321506d8b067240c1c9218e9d946556b3fb41eca1af30535188862705cfaa75b3bbdcd9fec06b12ee4fc623b67e60facc73e9e44f42fc9d2d86bfc7a16fd1055b65f481022a00fc9357e9d90dcc19c191a78361b995da7aa623cb966f2db9d21d91301df508e5a12cc531864c1085acbdfac0a533cbea2979dcfbf7390629aeae4d6eba5b261ae017585a3dadd59b002e7aeb8c3dd8a5180381acbc51e7d033e16b93676c93d11a004a4d44430964ab923918cd3d4888730f188c3c1809244186e14f988fbec3cfdfcc3d1660ca562d3058298b246b42d58e263a36bccbc433a47f92c85c6e33c0b605d1a21472eaa85734e1b4a12ce80e680e6437874fff3630b647044d7739635536e7f1a2b4263d144b3ba34d55b34cd4e1e980604f28cd2d84f27ee63fdaa2c83c6028a3e97fde2ac3e4c56525345401791782e6778ccbe62ef929b177a10b8070e4516b2844edd4ecc25bc5f4bfd12587a397f6a8b28fd78023a52fc2ca80a8e5f011db29adcd42e7b2c91e9dfde3345080e0ba04d946acc664b1817938244f311755f7c9a6b35afc653a35cf59b147c85ba6187474515c1fb312108933f7abb16eca5a5d9e500868d8eda7b5d1276d4fac6d74818b39160e3e0c4a755244f4e1215c60639f606c31ade82689854e32d3d3b50f1090ef56a502ecb9e42a37be4bdfa47459a10156ef17257c823430c3d2f049b35aae3a9ca598675e8f0baa986289ad7f84300e5dac1338d6549227e5419c8ef2283815f8abd02f365f5df67d12d58b6bf5e90bcced2636140dcd5940baf37e65a3c0ac840cbb206b5f53ab28f6a8b3cd0dc42913560427ea1e63610555bb7b3263ecb1014d56b681d4976c448655520f563dd36fdaa9646fe0b0255e58e1ad323d864d8782fd740e18f8c84a37ad33d13946a9d5d97663d9fa6b66001960afde2ce3d764097daabb4e55252092eca815ba29a49a4039c0cbdaa9f708b94cce305cd400fbf5944463cde0bf463d0eb5e899bcd3a6e611c2c4cdbf6713beaf891d8108e737f511819d987c924399b812c9976d6294df4f80ee000edac5fcad09b8969d1eef8e5c21a9c5d812d0e1b3e2554323aa2011587d3f27efe3d9513c1bb4357691200c6c29ab7105be615b4469fd7d23866c1598a4c853549958c41c5bd6a2ae8d34119573f250501cdf6ef43ea321b520085c5307f3ef24ff964c6634182ab195346abbb14bd5fbfeb2e0833f566fe686277c2c21853bd41487570829e7be66877e56a9fc30c3b14dda52eb411696dcd9aa8773a532dd45b60ad662a203b38e4abb897dfe21d8ff4c397b158222837de32300c1c57c9383e83a5fafc6ab8828b8c2aeb7de0b5b80e1fc12585d407d49e1afc515a7cf7e2d68f5243d8d823a41d8890d25976e1c30d0bdeafc5c0501e8057216c6b507a0013a494f0a8244b69418ff7513f2ac5b46ce54031f8f1688bfe29aa4033ce622475c3d5c951e98dd7efdb7c1dd2ccaf0b36c2dd303ff5fdb0ff8b7d0377fdbe434abdb024b68fd7d43ac60db4ad9e20ec0537fbda8c94160fc41b827ece18a8d4461e0ea2f43bdcc2bd6858fd6092b8e872acfcefffa3888c07618bb08a8a4d863e570120ccffe13d3ea28cd6ccbffc35face5f36ff09b41f23d94f3f2f3b1c52f00320a830dc3f1e786bb13471786531d984a0a42874ea251e7c42166824af7dc875825c512131fa9b38f9dcadd34aa29b8904bf8a7815c611d84132cb86ae0c73cfda49940fe49a3b5561c3a1f761d4a8669942785ea5b89655680fb59bed7059a2d0b9d83f040ab7762ef3c2251f07d542aecb34deb59ceedfd20c912f3c0c6923ef60770f6f21a479b3857d6e5f1c46121e20f5a1070c2f9034f99716462836de03da72d50580db7bcd78439887089064d1484e24e19a5fa3e5233c67a1cf75b3ce3d8ce58a15497fb65cd1deafeab699b25efa5b41b51a6305ef5df02c39ff3ea20e4b03f8fedc9812355158a1cf3082d05f1b9b15e29930a494a2f5dcfdad07ac48cb89d87066a6ee8d692c561ea8ba8b8702d6ba1ae70212b29142567b1daf014bba12ab9f8c70ffcb8a567a1d3ec485d5600584d560f328fc1451d6e71814bad8f79d0667c59b66c08e076958a325305fad18ae5d25eaf8060c7fec74079ed1246b228acd7db4e21eb8030beee08d892d8d013eb343b0a26da97d4a88d61f4530d6e4c80aea019fe7e2ced930b62e61590f9618bb798883c6f1aceb1db0abb4516c846753eb04acd789546aa26db8438892a160ec67077feeab2a643a50fc2b72cbb8b70c5de50d0d1e189a8e04b0a8d1f4dcfb0f335a4630c13cac9c46070bf7830c946cbc2074ba061dcb31ac266e709bdea96743061ed832b1abcb1de297094c95e5e0c0ee70cea831d6e17ca292b4e8e18c8b1d42748d916e486c8592c0a815b9f0d6392ed12ed6996fcfb51562dd1f3924f6e590ee107da3060e0c6dba750091c7c5a07898437b805a02683f958c3978d22363d17debd9c650a1b565ec4502f645f7de49b8e63aa1f03c65682b0a06638322593b8e81a47f87ada565cdde616851a41da31c8428313b436a035642c8bfda47ec239fb0a0d9c50d21293984d0c843c8b30483af8ef9e7906c875040e346ef056ae2329df70980497456a4b1f2add065ccc91ab2f219d453fd904abb35f20c67bc15b660d23ea44af320a9f605f6d642b4c21705d949981bee344df50df330d0e952a28e5a9c68e5bd27ceb269c104b2cf2fa18730ff10efea04b5c80ec82647e7c0109ac34e9902be5e5c5a8512f64b689e4310213eedc7d54bdb879d064c7481d48988c562365991d8b9bc644cce0f0bbd4922df3149c8ca5f8c3457baae2bd951274808bb66c6511eacd4464fa88c70a7f76b612d84f239ab87a173efabcb1fec251745ae8ae63da1a514c03cadd88e621f30ebf4d3d27940bf1e778c04edb3354ac2e5a30f66280048d1f259d0115f561e5903edf6da9011a23fd06ff0ff5db4b40e7c2d1b8996d4df38d9a4794870993d1fa3b8cb76cb6da4da0878fd6bee7468c421ac0f20b1abcac4e3aac67f6eca943e358bb4c4e69408b632e1a3233c04e52a8647618f33a0196b094bf21cf1211183135b9517e96c191b69e5965cdff98508a3b355299f54de5b1978382c4de4a10852405143493738b782466a166fa8659c0b4bc7904e06fa9e8150aa032bd07f700e1dfdae5a969da52c9cecc5957219729c02817516f1703162678ec9b068121f601fcf0fd59187ecc1249f157f3606888383351092f5ba2a7b0cf0bbaadf5da6f747646466f471993e492f29785960bb6035a84c2b5edd83196ed465037c7b4ad9d2208585860b7a430556d570cc4d25a1953def71a7c79e300c84705071e75eebcdbe1c0b99eb4f557bbee3ff7eb7d5cb5d2c46fbb5a45ae0853097f34da4bb7d59356c03dd50afed25569c1004838b0ab688f6bd8738c74b5b3f98a44891c67e0fc6f156661dab18b7813fe3e5d3363315cdede19fe8bd404f202a2881b28e39fa0fc7cac0e213a18e939755061d2271e457449336f58cc02d2d188fe28db7600ccb9cfca67528bf445ee90b65203309ff58908ceaf893ae620562da421646501ba0eb5c1274cd3d4c6097390e5e2f5b0c3fcaeba69a6f1b3ebac662accd96e7d307fcdfdd299ca57cf63a5295b334b1c34fccbf72a4e12e84386873742dae0969d109a9f42e65357f92ca5248b9a8428afc922642573b1a73d450e86d75d37b0ce9fe3aa9f9ed831de56679107276091e6eb981db267133312522c3a9cd0f38d992e1b57d630602130f0237a05663636d3b4eacaa64d2fd6911da64a4f63b6014c94c6edb041a2e0b981a5f1ccc10b3531c7b72ee44e8cecc7797b3c4ed88260f911809ab8709da32e6687d1c56bf2f7bc3c1ac780c6c653c2f1ea264f9b8ec9c4c78567311e1e1b9307fb756173ca1e45c088f27b5c20c3c65bd7ebcfa83de2ee63daf157be8f1fd721f684d2139bc435ab341e11ba85fb9e23b1be40b315c4849d790bab03c631169b3a141f1c75e8dbebd8ed7c55fa7223380d40750fa038c72999876d9fd5b9226f3dc6cab9bef578c6a2667db564634cbb0dddbe293dd6e8fa077054cdf0a4e87674f33872233a96910ed3ed72f0b418f377a9ca75bc0d0e721e87fc5d881b0c203591c6be10c351aa447e431c756c1fe80667fce1e939c888794d75984b11cd853034723df193b8fe42c3bb8d43db2c3560fef5a2a20a847ea614e21faf5bf0736a8a66c8c0e2589d1f4c86e19a61acb240667ae23ac9393b22d2550ade5e154886edf3146fc44e112a303dfc03de60ee33546a8fe53ce16c3734a14b596bdc97d393404d3a242e218e340eb10dd9a1691611a3e1e26562db27ac7e6af081a9874246cad633ef4e3462b64c2c1083b45ee275e3c86469dfc96e95a4f0cd8bd0f8246bba7e123bb258bf2eaa95cacb41fa11e08d05aef4748917d8d6818e22494e7d89000dddac2320ee670815fb68fdfdddc288580d4c121e3f675d6bbf651d52587ba9e9a7e9f4a4e4602a73a62671d651d52496e69373eaf0f5b4f40ff52a261be340c525ae1b8f09a9c13561c4af684499fad8280d586e9a867db0fdd72fa0c7b8793866b6ba754393c1a6b1c5fcda18d84891e238e437884a639a1f96b6342781347a2ef58494587f1859b7d4743d1c6e2ae5484b7ebf390671c79dd7f2e4812e76f03799eb16df389e39cd13a4fdb2c1d98a529d1746df0652b9e9bb2f3abb003765bc2611f0bb7e4949d0561a4dcce385a4ca4821745e72be1aa2f949c561976e4ab8bedab8955a50b5d57ecb9dbb4214be728e91dccef87d5fd8fe44e843e1e7bd489c6369d768d864b9c26d3e82001d494ad72013a9987b8a1e2f8a0e86a9c1156e408dd625b195f8d960402808da90539e0a67cac52bb893460364e843f01c2f70c2677bbf906854ac8749a023e4469d6abf4597d04cbac2f884cb2b20a9af1f79aa07408b45069c7cf3a618e8feb452af252bed8e50a8ec263b76466fb43498cbd97df406714a571e992d8c4c48e2448180ca1b212834f178c9e3f046dc42fb206e79b7fa81e1851e9ce4acbfea8408d59ad301e57d640570f5c020ca0e0b2cd3683c37298b116df03404ab975c8edb9da4c9090079d99bbac08044b8ddd1db9b69bf6e7120621606f68103adda65e182e515e213c18101197380bdcbe0e5c61af429616a6146ddb2c704a230aceceecdc604f8a2102b19a6affa409a9520e2d019e6df3cf04a1cf838c119fcd3763bee386de4bf134e50225b2f598a4c98af53d3c19a574474a908649c202a16fbd403ad5740b934c20111115b5212525535178af6ca65f8dbd364a3825bf1fc46055646a1738bcd6f4468e3b51ea14b2baed05431982718a4157742058743ac4c928e256d984f54d01f41ff33f3a4cd71d15f381c71ec2b2ac212008d52d5665e54aaff487d24a9a9bc2f633ceb7a1098f4f77856775a6d3b9fa70e7924eb121ab64148514989b43d91aaf046e0965ea05b1fb8979c242c08001f5de1c015a46ed937fd36f711f134b0b535ef00d03a2b30a72a97fbe5c4f8ae85419a49fdf457e8b96ebcddbb1a78b46a046e720e27ac17b92a56ff665f754012ea16d9c2e51c5ab489a73fdf161ae5465527191ba4b84741768082a1d6212a4444fc87e78bfa2d5f8519d8c2c8c9ffc3499885721ee5a01be2a209e98ee9b55f3ce7f09142f0eb1b642c7b3e787464d76f4f1c375a14a7f8e3ebc1fd73621cb72896db24bfa538e46a86829a8731036e70fe71f030c906e5e5ebfa467c7f9cfcf5752eea3c389a9e80465963b911e4384a415c9161996e19e7eb5f59b85acece1160f7822133550fd23ce35d0177b7e6219059b18e081a6a64b7fa87ffd1335f3361c9dd4ce0a4dbded70529cc87c6b47651329e600a1a034e1edecee507d71b7ec28e7875cfc213fca0447c70d872f40603d59eb2675f66eda713d57db0eedc5be915c8231d4012c04ddc2236e40c750c958a89678f70bb23de39a2d019eb085948ef3ace9de099de356c9dc8906ed3f1b49e99fdc17eb0997d35cb20192c1c607db77f5eaeab5237be2e5af4f55b994245dc0b29d1009db45fe6b410b29653b7eaa0142496029fe461f94555e3d904e50c2a2e3f4a2a6818a90b9dd6f0c40359883581666bda98097005fa0d8b181d4c009fd8c62f044399998fbb8bba11914de03c8d9bdea99f7edbcc330e75406f63ccd5f93bda06c75879b2f15f024255dce8bce8cbab5777ee56695121d905c84a27e4c96123643eae711ea3c9b8c224e452705521347554179c3188871073d054a7d86ea856a0ca8996da028d232b3ee199dca621717dd616634d4eec7deb8f9de266141007827c461a417586d96f30bea432d7d990a0f14ffbcfa0ff07b89c626676c53c7b7c7afeba46b34ce2333ed375052a79db8a4bba708973f1235ad616028eb316798b37ae0f0059866cc78e1d088660c5ea8cc75dcb6b5ae3370816671e50507e27354901bb83b508c097aae63b97f9804b481e35d4afc2ab680090710c476ecb069c231813a07199e732de6c8135a94e3b31a184fee08f110fda2a18db2312e476e8d9f57ae875f6e5fa37846d5f37f27143b63ba9b80078030c66241f5679457bc2f4fdffd397e582233343cd4e18b397c0d2bdd7245621eff96ca79611f36e880373a77554819f18087ed9a22f0c0ede91c09c5a30194e4a5f1a26671c601c4542d7dd93b25f4360d0bdbca693cb871879ff9cdd3a3c75447b5ae84af4a90209af1e8e607714d73762c9f0078f660f89f5fd4cb6be2ac639d1d4d2e5f34236c708d24f8fd77d9593504fd6d4f14d97b26ea9c1cdbdca043b1a573641d215db5fd84b7df5d88ee75f9107eff42493e416e3f7c98615fec5b555478e1ec991551916a901f5a6e53242cb3eff092a955b51451bc22601e0b4eb40fa36fde10717d695a63a77329603efc6785ba30e95890c06675702ed81622e951de6169ba67d3e2bb9183e45bc120589f048ab8731feeea3dc11bf51ed119499b22b307731684d5dd1831f2c6f4a83135e7ab0d45402ede611448ff832e85b7dd5af8a2c12232df2c230ed32c1748fbf8c30133373d9eaeee94a321334c8934a7adc318b675529154eca37e0a1fbc833b24098a6064dc2a2d786511848a08b821988526cb006bdcd029d25c822f436e60c662250e01cb30948f28d3dcd99e83d75963f4b774125a31bc5e08de298d57eeded98f071ff489f63435021934d97225bf586c10a1280c7c3ef3a279e4250044e8b6ecb76b6d26d4954a1ed7247b76cfa6ecf99ff0ac9336f74679e9a34496da6189f5a66f11e1854000f3b119748428c45d747f3d734065b1a6519a42d47cc7fc4c89645d6821935601512062f268a4b958e33378959320f5a1dccf43c1a73b069e89923e21133393d95b34b491c79a5dcb1bda9c869c879655ee4cb269ad1933494ad0c7e3b04688ca6691bddef467857aa612b0baf798644d9bf129e510b7e828fa2b20a6aa8b1f6234f5fa072f9907ee735540a662ad4931483461fe82cd408ef6d20927b0e7bbf821e10cb81837627624d76e1807e75aa681bc11a5149cb9d25db84f19a9a50a78ac0289fba3648c3b8c234ba03e7445a5fcec70bf94fcb75a9108a86ebcec44800d64835dbcf177bb96eeb14b2daa8dd9404212360c6b772a3fcae05f84eb7556f8e76a7cd4210ce665272e6ddfce023ecc33864d60c0c622f0449d90abf41078b3f4ca5de110badf36421dd5d3e050a6242301e4e84dd3b347dfaf90b8a74ede3d5087127e0f9d18d7818d09be08e8eb1925ff20dc30e0a87ec946e0bad54980c30f298b184a542ef73bafb569ab5e3d02be45a8e6ac9e7ab583d8c3759d401352c69ae6a7c3bcf474af506ea9352236255e07830fa6115ab1097e433af62bbc509f9ebb5999b405fdc78471c7ffc8142e4a27b76bd9dbd4dcfe72940b1ae8bbc70d5081fd1c39a2b4ebaf32ecd2ac8ef78838b81eba83bf170f5944ee26bb5fb1655a0d49f3606ca30c1412fdd400ea92a8539f4dd2cd3616e68088e802c32a21f4ea53825c671c23fb86cecc895739093f7d1e5eba303921aeaa7e477a1a1a66cf0f43599eead2ccbd6258fe5c33d1f5b19472eb9d595e1e8c1547f3496e1c85fd917022e018edb57b4b57e142bc8e16510067ea82eeb96372a7457affd25fa454b2ad54b98293e2d463d73b3f1666537a457fd8347e5f34bf32cf81c37dffa567a881200b13aa02d10f217f45673ad64453b1dc41657d9c3e6ac5074f32f16ce84dfd26fea91bb2baeac985b06f263d51273b99cc5d851e09b03e7f67bb613e23ef6b430613048e52cb129daebda8556a2e8707eb3dfdb38f27cf4eaa8aabee4bdaed1f66b1559b170330084de345f95a1ffb28f12879364808d83c0af94213130bab11321b08e13abccc697682516a18fe868bb0bd93bb6cb5b73dc1ed0d86831d6a4104c70a86769a26f1818d6954057718c77760b75249243c4bb11f568d9beec32687a908f3cb2055207ae45369f7deaf13e9f889ea2d29298cecb9e828810f85b856ea09adb991d0638fc53e53046b80724e92d18405e429666a4e78b1fe2b07f6f1a5c4dafcc7b819055f009da442e9d72ac62ee09d4d167a5c02313532f39a5af79a61bee2ee777166837f18d84a5d155df769eef4465f1d7468e164318db5c7e11b2eb80d65144e9084ba424a0dad061e24522b7ab12d19882004d70e4bd31a8ac709eb7d665eb6d804e0403c255aacbf2e1e3581b3a2a4d0d74c0e15687195db385b641566f1d7a7baf55adc8506727ab8bed1c93e5c3968176aae748acf1147337f219d58d31a04f4ad038adc0a935a309ad9a8036d893302ad4f3b1462804737845f18f32fa257843a7c961bee286e01fc1bb53d98539c4fe110e6191eb58d774d0560e00018a64328a5e68594e393e0e7fad133cc196a6f6e946b3f81b7bfc94aeeb6e59652ca94641d09eb08b5085cec0666923ccf1bbdd11b63222b76d33f673eca22074a077b38a7446864b25136ca46d9d8d97e3257fad9dc89c56ef22b0a45c962e3181b63b1586c8cfd40a6789f0ec352bc4f8761a9d8126e625ec29ca7611d9a4ea5789f0ee6de7b6f13d88cf9e8a6e3e1ec15a014efd339e7c14d54940828c5fb74ce79b074ed6892c3a9fa782920223eea0ee7d69bd06b854bc90b1653ad5aabd5aa023fdc52d56ab572adae1792a956ab71d55a2959c556abd56ab55aadbc2152bc4f8739cf2492bbf3fd33e525298aa228e21a16e7513277c0bcdc7bef85e5701249a138ae0383c1603023925e180cd64c68fe82ddb8a9034af13eb59b34455f7326c6c498181363449cd40ffaba888f5646c466757752f7607f4de9a29ee8899ee8af57cb9ee080bee964de3809863d4e67e7b198181363624c94b97e12f72bfb933c3f9bb9d72b36b65ca7badd98f8aa9e243ccd5650743d5ecc5f92d4b1574c7c6db3730531a69aa686c15647dcd4384e709ec8bcd469184593227293784a4236b349ea66e6b80a159b261f55a26aa5528db13136c6c618ccf58211511559893e6a5847c6242d25127892fbbddf5219a569522f930473552f95ebdef18e7784a956b079c449fd333549fd49ae12cf26d424f7cf9bacba2b51257b82e384852292a289926716b963b13136c6c6d8686138aa719ae429858383a3528de338429939568ca3ca088ea4389d334d3ee24c93ab461c15cea81275c04919211d733fe72182779f8add32285e4af9fe9933b3f0d2e7fbe76c46714ae325fcfd948897dc4b45bcb4a24666122fc9bf2eef1582c9622d4ed53471dfee1a3d9628deeb92490e96f275915eb591af451fb124f0f56f3d7692feda4ada95db660759ee774b1bd5a956711f8ce8c542d5f3bc504ccc94957bced524f5bbeecb8bad58a33867338b99f34d28df4ce2533549fd1e23b9bf7f3a917e77f5ff87429ecbfb3a7fbed624fd3ccf4f3ec91d6b99788a75c813afe79a51282a6585bb6cd7789e24bcabd92139f472cfa6c95d2e4a52bfa4b7dd955ba463677eb6c0491961ca9861f98e19c33ed2471f30bc8dbf20129635296514d1d73224cc7b8e77cc23c7f767834b8185f4e2639c63f974a8f12ccf02ca5c03e4c0cc385e7b7938dec673edd23b1654872645a453c447b6e5a3d061e3adc162e32d6cccb3bbba1f01bcc8f06af4e843efe696967453e8651a04f8309469fc360b435e7679e92e2fddbd5c672f7dc6b715bcd06bb23f00fecea6c9699ce4df4f24c99f48f6226e6406e56691bd28a11a49f2a691a40a4892bf00c010e6e6a5c9c8e695644fe21dc9fe35402345b2ff080c3db0550030bc3510e0064972d03b090da0896b47f60f0018866a70a192745f70e0778cc13048287fbe65761a8c5d9e0b87f4a0b97ca110b94524fa16d1c783d038be7efcb5606f350eff1630088dc3fff31b8d7fdefdbbdbb7998f565ea2016e729627c68dbf20327e18000d0978cf0770bb92ec50728c63ffbc2bf151e38fbbe3dfa2340d1a5f67e53763cba7058bfc6f7cbf0814cdf850f42eef9f88e5492f3327127de830d10c9148241281e18c777996af012c4f028170cf1283f9e8c6e567b880309e7ba9ddfb5f7c0d1759be8a503391b8dc78cc61ef19e235fe96961b379ed42492cb5767d7936fb8fc0c97effc8d0fc80c92cbcf707920337ec68c9b6f4809deb80186339ef4dc0c52bb90667476e089bea3034ff49c77bfa75d6038de06f592e8bf172f608d1813251cc7650efa13270e8be1a09dd11dfca1330fff16f9ac3621d7ab874e0ebc0f0d1a317a836b09afdcf2dd842c721f91a5124c80e5966f50b4009a5ddee51d3ba0bfe57968f9b03d1ff987d52573d41ad634c5f8f99d719a70f879f38c1948cc80591ec70ff1c26d66e33b28d14f91e8eba0667413926b907efed61191b6ad8383e61aa045899e247a960f4924d19374103d1012cb6747120e120b0b0b0b18e2f81acfe1f82c6a56a3d499e86b7cde308f1a9df1cfb722d0d6d9d69a486ebc9fc500452c2f4f31442496ef7a1fab21a241836445ca860dd1cff0512789a613d0875bdeb224ddb871e3c6b3320e1f76c608f0781c409ff120891ebfe8491ff591e849bfe2a550fa4844fa95f7f0933e2904f431be83c46393048b018a64401f04e861bc023e88278b5e87eb23fc22d0f311063b38f0fcc3ad83c4050c7f70ec03f430409f3cbd7cdf8d70cb0af850f2c94908f9e4040314f9c77879e2e1f230bedab8499e3619fefe80e040e3458fbf06d008fd39d0a28ff116d10d2f7148c7fbdff0897cca423264b9a40a5d98486633b8b389a1b82087dbeae388c4f8b6d9244d2b629b2cb6e5e4cd08cfc69b60fc8d1a62b85fc1bbf10ec5c34e310f4c83d490453564202d2ffa30480d19487fcbdfe801d0e02e2ec8b2e75dba05c7d7efdf02703c8e7ff9c221390061c8b97797b7f1a08fc64f1ee041621d3cef120097ecbfcdfcbfefa357daf0e73e9f4801349000f587e3b916517777b77c7f4880442ddfeff776e3e002823e1a24d885e6cf07d3f80f0691007df8f22d7fe3fd0b83d4905bfe86b77c32e3007d7efa7c0398bd7c32d318c07b60bc631ea218a0088bf0eb10f5ebf8fead08181fe87e0d8d8977411fc0e737ee64beb6449d71ae03b615e1855beb0a2a6072bc0ddfac1909e613f021b1e101f0855e3323ec18093b4ac28e93dc89f2f942ce0917258867916d780ee6d3f1393e9945fe64ee9e3b0012248867916d80f9ece788c00c0f024533a087f1304021301e048a1a7c409f402f4f316cf88020c10bb7d9ac839aa449027ddbcc04de8c77e9017efa40fcf15ba7f1f9b77c0ba041e36b7ce1905ce3e70e3cff440df0a7ef9f0fc62dfff942cfc2b3c8fe9f9696af5f620f6b3c7efb8edfb67c8c63995b64aef1c91ce3db0bbc27cdb8e1b2b5c0eb1cf1805ca0ff1fe31a1fe3ceea6edcb8716317da18e31b05005f621ee0c73806c356856040f15664648c0b0025df90d1d2528002644046be018612c84164641a6860f918c7fd3042a115cff384a450b641e33f5fcbd3f874f87c0b187ee1cdb887ce1fd203e077d27f3e20f86526bdc478661be08d1b1fe3de2e3a4bc45ec2200766c63fdf45a75962fc2c9fd3380a77631d5cfec63718d2f037404fcdf85c6583d7f21b0bbc96398629ccb20d592e3162ccdc931adf98f1316eadb5d653674e340fcc4beef900bc0c80cdb715bc1a6a32013eb4e3bd9e170afd8f46dfcb7336781f8e173862bcc64bcca3c6c43c3e9806185908cc8e18295022b867281ce550dcbd653ef2f7945bb7d2dddddd3b0795bd34f35e7912de727ebbbbfbb43e7d76eade7babbbfbf4d49c34f3e7ec18f7269c9481c49500276db5b5ca1b92140adee791fc31270262fcce7bc1f0871a8674e8b838a969eac968e601f12316625253831f5670fd2e1bfdaa8c5c5f7bfb85f5b52032b283a2faf214c449fd315e1ffc1185e7c3932fcf953fa48dc6c01039e485dc0d334d3ee4689a7ac858f340be7034ba5161ccf4b9150fe4f0c12c4319a3aed2e6c935c6d8e5c5c7b88b4bdeda08dd5292449ff614997e0cb611c899824c5d90a98fb623327d09b87ce24306e643c687b87dd73aaba6cd39e79c736adbd63d6879db5aec5535e2a50a72c07be525b1699e13e3b06d3fe77cd10282ccbcbd684003a6fdce3605f4230896808fe80e2df3117d6928eda4711ad637eda4b3052fdc52dd3b18beccdf549cb7c95abf85c81dc93ae7b7a9b6d496daa6674b6d44367023e2a9dd17067941c2539f3e8f3a83bce479af07fe8baf8d38893efeae717fdaebe9c27134f51e5871e70de3bece75d546366eeb36bca5b62d354d7d83c170537560b8adc4866da9179f3ce1392bd8b01faa8312c06f83d75ded471568273b54c04794763c69da3630bca1cfa1fc92e70fee43290bc271efdd73f3b9d73eec0c8a44dbdf0d1445c0f39d8780070cf2d2f921d9ebc771200f3f62f3ab5fb843ae31de5fbcf83c5fcff9a57cc3b4eaa5d6348c83f71a78afe7b577b2e0855b2ad72b03afa17889be2449e6d30d5c9224b3cfafb186dd74dff8376360c360b15ed117bf9a019492d43ded5e8061686544669a80983fbcb4f2d7a9ccf1e4bcf2b21199f1923fc55b4ae53fbfa9bc84f1f6e1c8454900607c38237f32645771cd90dda67178ebe81712a40dfa21e8fdef34bd78fc2bcf7d210fd99fc3dfa65af9b654cbc31f6ea98d08e6be95c05092e98bbe7e428ee8cbf035147a440509a5731a09a1a7df2e174fbf6d589e7ebf42b55d2c3fdba6ce6c2fe3a5f9e2bb3c644f03321c97b9f7814691e9bbf842508b2f7c91b1ca46c44b2b4f7f53d179f3f4fcf48042bca8bc644e85d2d58c975a747dd8282066427ce420d828206406a2515db7e5eebbfbee25e8bbc17bfa5c28e479a07b9f02c6f828a5c70d35d7a75ef5af735540f7d059d34091f60ee87e7bcf31deb8012bdfb4069ee739cfd7f9ee8311aa812764c889f2d040190a0405cceeee8971e8dc3dc538d43cfd0b75d371a6bb77dd6f4534af3e0d922ebc51329ddf299933539b6038c5ac7d32773ae863c64714f401cef8c88797401f3ea22f23e3254c7fc63d5fc32689fe4684fe463723996e35991ec9f4398a15e04a7c34a231aef916824d045b111b0ab614173cfae196caf465fac66a818827559039c97992a9f40f1b4aa6df99db982500ba3b36c0c0e4827637103ffa83742861ddc474f1cd38a99fe3baf7d11f92a594d71e862c7d5efb1652c70e2d3e64c9daa7c812e8b5efc892ca6b3f6569e5b5efa48e0a789ad4d144c22d6b0cd0d1a371f4db0f88f6f6b9edf3b1edd02dc0d0f3caa701c9810e428e68185001cff7f7c05e7b34afd97b8e7a666ed0fef33f6268f6c0507b99bbcf1733b590fb0b610f91dbc746ef0f9503355bf086ee1a7cd4f365e4e2a57ed9122c50d0b2167e95709206afee089d52984679766ad3a74f9fd24a09ca5a291823f3b2e961936132335e7ac1bcfa979c8006390cbd7200a35c7069ad95d65a69ad95dea79b5c6c948db25136caaca5d3fec0e20ee7b99ac457eb6c78ebe0ce36af66b5ce0f6a8e245162a35aad5632336ee96a358e63cdea4812252995b8c259e1e0e034ce5f2fe4a81f416688a5c4bd10ab358ee338e28c28140a85428d234af62ac9bf5ee85537c80cbdaaa57aa9605ee8aa5a36aa56a9542a954aa512552a55ac4eea9c7459cb46d9281b65a3ac53301b191dc7d16d644e66c7bc6532994c36933531f98b88f4c699aed99ae3644d71ae84f86baa5238a228ce26382f5114451147fc108e688398fceba1602e144a48a326c943cd4616ca63281c0f8542a15e30d40d8a8542a15028140ae52e99cb513247b96423186cdcd4387f9bf48cd512c7d96cc6c30f5ecf5830eb367ebdd96c361b45966b1cc771ecd9c81267b3d9ac67e3d833eb63cfc69ef56c146700937f631e8e2cd57a8dae6f85c6ec5df10720664ae6e05887a5623829d7f86a3549c564ad54cb52295fb52c254bb5cc4eeadcd56e3a2a1f9b6d44a86ca014ef73b5d7e8e3a5807266e3787abdb6ab8da31dc79c576c7c89bd61a1f2d624758b151550a53e394f2b852383798e0bef9b880efc3c112eb8162b2aa04b359f9c07b7e88df7de9a26549e815456be099b4d3cc7fb1cc7611e6e4e28f3c9cad759e62a4fde274f5ca7354df274e30447f662b55aac168b056bb15442d06b2f17c6696a99e6b3d296eb055bb1582cd98c0fb754ce562c17cc1b27ab75bdd0af643219eb084b64b1582c978c2573b1c62fa4789f4ec33e2b35f282b951d9bc9224f3c8ace96c3e2bcd41848142bddf7abf5f51148dbc6aee91dc301e5b89a2288a2ff1258aa2f812c557ce4bc479e1882ff163033ba9731e7cb59b944f52ffb36639c47a80fccdfb74776ad4390fbeb9ac0fd11b8f610fe774b2a6c971582cd6eb0563b55c5763b12c0bc682c158776e5c48327a497e2a964aa5523b5460ca2c5232563d494a894d931b556a954aa5c654e8a652a994d6d952a9c631623d251b27956a9c21a4789f0e4fea9cc7a666ae46d9281b65a32cc5fb7498f3c4242c87f125de9a6973392414e1bea3f29214c59818136362ac498f98492aa24a4d921524eb8675040a15508af7992b231dd6112f75a014ef437dda5858f75116f64ca7f3f3ecd4ca400594e27d7c7a7027d6749e5301a5781ff7e08ebe9a70b32c7254be09a5f3d5e47eda61cff40f4d7f3cd4f582c9a0c653bc4f87a73c32ca46d9281b65b7ffa6e648f7f1523cb25136ca46d998a7d5a0e024672d6739976eaddbcfb35349ada5964efb032ca9731e6ca9731eece19cda6aa7fd418af7e950f625c60109ec7dba4b9df3804736fc44c6711c31a539cdfa3add8fa27ce4436eed483133d12091164fea9c677b5b5f8232c5fb747852e73cddc74bf1704e27ee59c7582c36c6c69b51e67d3a5927756e6524c6a2a88e75c65136ca46d928f33e9d9dd4033427cf9734059472dd97171f2147f3bde756405f57f01158c42e15105453bc5752ba158a76ec7ba0733895ea82ba6a31cfaa619a9b9fd0f970a268b629dd6a9a30c8eb569d0276af99b1cbbb5d7dadaea438dd3e1ecf27eaffb4e723c0fd070c023ff71e3008243318ec58338831cfef742acf519e3ad61441eee3c1df54cd0e9c2829eb3c274f75fbee49a6e80af2f66da74cdf519d0fe4a1dffc0105bb57141d6b92e677ad3c5193a669bf50b461fdaa0da32e54666aa258e20545118b5eb2b535d616abaae4ede34ef5934ab86290fd9b591662572ac4ae10bb5292d4bfad78b4ea2ea816684eb7ea8cbc40ca19209161d783dc6123a40d19481b477cb8c649377b645ed8adba57b7842cd5958f2676cdf95dd7ea5ca5ea02d9048b314830832222ea144ed4fc8b5d13bbb0115207f5409e8f6bbc249570d9204fccea5ed5054deaca4bdd1255c0a815ae49691a466131b59add6ad5ad700aa3308d8f2646611a9c0a611eb5b6c02c1fcdc72e2f85dd7a7929c4d8c64bb809cd21466154c75acd6f85ba559e4670e5b05bae268021878d9a26bcc46dc2c350e4895df493b5052c4b0008e1195285d08658aa811612fa724e6e72727e77fe362f4c9e7542409e68ec74236c288f93ad43f64be6904d5c28f29c5d45be540aef4315f820a8e7da73ccc307fbda7325700161a4b58a6aed5737e913e0f44d2ba7612deb9c8ed24ff2fc4a39eb91ad839bdeded52d882cdf0fcdfb51271efd0ef1f003a594360ff35e4d7b35b5dddf40e4848da23f4319f49b366d4a5f1baa9384933458f9f3edfb68561fe96ee04d279e0f39854bd102e4d7af3ed097389f8fabf2518f1ceecacefaf558591bf3b152dd223e72d55579a98897a4a452cab82a7bae4a4a293d76458bc490fe19edfbb76f5008920d9ce997a010214392c079a293bf8f69126da0e801dadf8f40bf048390df7fc12090ccc86f50b405d1af81a2ede5497b799a73fbaec731f12fef30d95d572421bb6ebc8998ed73f243ea83cafbf0d1d097b606d21a615b604f207d5afba37f09b3329d5ba9f0ecc74c92858151b143ac80ac97f26995cc0a08da9094cd29c3f2eeee1a920d34170a81661429bceec55fdbcad65aab8221b2ac6c57546c0c10067845602824c3b7fd8b4ffbd0e7e2276bb2e4e9853c71b4656dcb45e99cd116554251dd9cd11645ad50d4ca376733ca9cadbc05adac805e52176db9fbbd9ec7691ee681c49d24fbd40a2fe5bd5bbde0ad6cdb4bb1af61fc1ca54262d0c7787597a9ecdfeb79f61dfb2052e9f450df07ee2b285279d151a190e789f7722c2c2c200d8dc7c56b2c9f9ca849b2bf22b1480594b9b773af07c4a9e08c26c405e8393ee4e49aa60b02e74946fb18af3299c3ab17b2b543646b43906dc5825dc974a4f054be3ea84ff6553e95a7b369aab2eb857e24a3b32a6bd1568bb6aa8cb6aa8cb6aa8cb64e3975864aa956d98a2b1fe3ae6ceb83c0263eb255860fbbae515efd0eeb501f48d7bdbd57da57790e7f15c747f655ec83beeac447b67e8cd7989754de7eb55f71ec6310080456988fecdbe0555a5f348a97420fe5a5fa36ac34d9d6afb32a9ba61a9324fb7616923516cbf6696b9ae66c92ecdfeb79a1d0ff68f4f232b3547829effdc5a0efaf42f191fdf9e5645bab90366c151e9dd9da6febe36fdcc3cae397b8870a6ea0f3ca77bf9ad656fbdbdb90f62181803c690ffa64349086e6f3dbd378fe76adf5b9c69aa669af81bece87a47bae7ae8d72aef0859621e2ba048260514d5ef78a0a882a2076c5b7d219fdfbe8233f73bdf018578feda91873de223fbb4e7d6b11f81fb36655ff42c4146b4f29a6805143da0f3dacf745eeb7c0b70c6f32669e5bd1f72eafcca49e5d332e87354ee4f767e46fb0e2804498b17425f035b80339df74021f357c05933f6949887e8019ddfc02090ccccdf3e08fa1d30887951994b79fbe1cd219d4dd30676eef578de27144af9f746a3fbf2c2b2273a9b267942a5b25565fbd2fe8cd9b74f335f93647fb626c9beb43f59f6678d976473a2a6c951da5b1bb2d65a9c69922759b639d9a252d94e55b62b6badb5cfb9cc6dbf7126c9763e796acc43868686a6619364bf03b66b92ec6f9f0ccd057b9c246b71e0cdb720102c66090021ee102ac41ce242745f0290a0675afac8e99479f2fbfd77bc0ca1fc0665a40e40e4cfb8cf395fce39e7045bcef80863647c482ff598263a844b29a594eeee3d5452a854f096ddedd6adec2692e482f22d13bc2967f5188e4ce65ebfae97be5ef2f29560a881f756cfcbb1b1b1112fec15735284d738b19e457122b963453ad64e381bbc1e3eea1c7cd478fefd72e8f73ec6656468d090b51c597b509a7c4c52bff6316429f4da7f32478bd7de852c09f1510f91a3fef045d6fe2375344d9892b507c9124bc9c56b4fafd4d1a94ed6bec399b5d7c03088b4c9db4f991e5378af1c7c4c53ab2669882c350fa4102ff5e8a36e1ddd6a1cdd3a5a49e3e876358efe2b03f802b43479250969a33f050c3de71ebdd4363e6a1ec8522b2147add6d14d1a47bff8d07327b1a2a47534ccd53afaa671a89c68716fe885a199b4d16f599e26dbbb16a09436c2d6c0162203d1be9590a58ea29be0ef6f1b2fbd0043cfa1cf593e27811cf5bbf8fc03dd638075dfdf4ef4cde7bb05e82790a3feee7e050c5d72376c6048d65e03bb6695e734cfcac778a90518760eb507a9f42c65a5e508f431a0efbfc1e205682d41604c0ad81f33bd4fe6cfcc3d10ba085c0534fbd039782903d2a687ccd69a86c47d8985903627241990363d0bf5cc5584e821daecacc0c997323c777737cc8eeeeece5c4bf74e7a7c24e5d370367873ce39a7e7fe02f31eb5b5d65929bdc14736b4e0f5d17c5a63d0a7962ef9924de4cd8b24f5a774a14ca69dcffbae66ab9729d8030f999ea80952a6b512e663ce39a5fc7cc8cc1d64667c50fa1446a783d4823b7c34274cadb34e771d75877b5310c64773877b05a79cd377c4d04aa96b57f0d1572a3fe2a21ff152786bbc249bf0cf5389177a8a88c7472250fae10bda747e056534ad6add9f0f992a33e3c3d6fae223aa8de8fbe8b14303e77330b4445d87dbdfe1235a41181fc5ecd04a160c294cd9bef49264e28162026d8c018eeb598d077666732a114cc60f64ed45d6b4ca71a3170a942cb1a289253491936d0e6b40a2817666736c4e0a931c8c41b3597c3eef29217f3ef73f9fcf472a71450f98e0810b7ec08ac2e97385fc51420919e4cfe7f33e7ab8e98a9f28647bb30d9efdcbaa5f5b740e1c56a40dfb97a5f261fd4d9c2a9fe723fb97d5a0575101c3fa1b4bab15bc2c1075285ee7f08a304e0d23afc81c3848fbb785cc7187c0b2570c696008239f943882083277effdf4aa5b230db050040a4508610ca7f0629143af4b69ad3f2d49eb2df04ac2c5841480d08522ac90e22a690512349c83c48920084185f2bccedfce7b5eeafc8a9740b9d3e9747ef40213d3ca9ddcf91e39ccf8e8743a4c9ae081dcf91fbcc4e54ee73bd5e9bc90ce4b5711b6cdc6004c98308429cb120d4c9a3041d60a9035adaa72a3a6491bff7e45488205296870c592278401ca0aeeed86bd5a6055186995085aa082051fc0e25585205c71b54e10b8fa692d1f8db53613580c483589124938c207479848811556d40e9314647b3b9d25b06e305982134b780278c2882a8a08c2134500c34956710393223c210c44c4729cc8b4e6eccb50beb44f6b69a3366a49acfd7cc0cb126beefd0e786b3a1d30bcd6e3b821d4184c3b0276d51549d05aa0f49830c102017cbf96a4fbdb29b1c404b9fb152f69b9eb7ed47dc84bf6bb87e1264775ffa44696f6af34c993d7fd98266dbc4388e8410c0b62280211d1750abf0a391c5dcd08ae0b6aa33301b5d14b1d2d09c62fd70a32c62fc34bf6f18f707d8cdf0a4d7825e162c1132f226031cad6b2b44e30de4b9669261b14d66df1d6b4cb46675e51d3012f0bbce26b0846645c793d1d64cfaf7809678fe761c8f0527dcf8f3cffe2c99e8fc1227bfe062fa564cf7bde87e77b78a9f39ecfc1f34f9258b2e4c9186ca850842554d030a1e20823d38d9c9314643a729dc211b9d6295491eb2b87b2942624a2faf249b65fbff7517b1227c37ca2984212a480831c3f7ca0052688b08680b2840a4e1b59d95a6b2d05c32873ccdc3f4507a678c2e6dd2b04210a2c282d8982128c8083021b1c275cea101f8c200746c40844a8200954e8d40a458a5c6badf556e96a2743c8f68922558a1630418a2b9c80c2926c9d18d55aab4aad5740e55a6badb5d6274021dba7511c91ed11a2a8e2e6f1126cd0022b6ee044112278c2551106289ec8f5697d020b7255c20b0d6921c1892f48411543c28a53f853c8e128db1a68ec6bc916384dd33450e6a8b9d38102054648f1a850285408b0c8a224337542092d4e4031c01335703d514500b295b112e8882dc1048a11e4d7670a277a906b8c8e8a509690edc3686fadb5d6d6ea040c58b2d4420a64e082268e2411022ba41092b3ee5367271c21d7588d5177e42aa2502811d427727d981b6aadb55e8f09a81b4cc00197ed87603c138090edcb58c2842f64fb2e5e3a40b6ffd2caf66b58d2843064fb3bbc248d90ed0d936cff062fc925d92e718207b2fd1cac8461d1a4892b5ae418020fbc70832184a0c40ba6e0ac604113213840ae7f9b5022d7f7784986b7e3092672900310a420053c903839f46ac80f23cb712c3c87e279a9c64df4d4140bd1cccec29bad57eae4b0861dd9be0ce5ab2497e41c91edc3dc20237374cef151cfb2f0ec873607076b413b8341d1c2e678e98259703249451252395001148af003169ca290e73b4a07a54e9eeff39d8817f11511a7f91deb983cd7344de00b4d384214523441093438cdef97972414b25ce2083cc8d3e6e4ccf8d861fe0f2fa5e4f93cc44a9d90a6494930ace00a2d4002054f38e289d3948295e7cdda6ae2e47e19a3213288420c45a690e2034c4439c5ccf2cc1667921a081460f181224874b085214e338a3c7fc54b9e3c45d044b6f6af7d8f07866c99c876c90896c8b649b6ff5e924b88a820db97e12518d94aa98346f6bcf47c45510463e6becc7158f0c22b8e31b1d52449cb1ac756cbe57abd60b963b0499239bc39d3742d984345ee3ced744c389e60823a85f63b57e4b690e33a756e083c90efd37ba52c8170f2b66957d4564ce44a23d77a595e72170a952feb8a5ee3a3bee0ad6179c9760e0a95430b5ed6152fcbe24c93362e4995206b4fbd54c326f6d31cefb39d81d8d792f8a82f6b92acd6d2461fb5365e719c5acb4b48681733bd82176a33e0640f6a0e9141881e8285e82153a345dcc06753f7900c3a7ab8bbbb8460ccf9d453c04919eda7fa49496a7713b480e54935f98402b25fdd846bd8edc4ee18f739ad8ea28345fd9e9727ee83e83cfe08789e7b0c061104fe8e3c350e0ecccb4b46c9508af7b4b1cb052c0485d7449eb75b22cf25dd4d21cb0181616744a703d901c15d17bc2eef56d3f4432633c3c738e779f77a35e2a3d902a31e862886565f3c0cea1269ae18d5f5c51045516cf1c9d38b1a72d1825138855138b542d15451d3ea0aa3aa78b52ad69591d5ca4815efc53c28ad291fe1ee7b3def87d452a867243c4f3df527cf4fd20cb1fc2747e6d054cf9c0f8b0ca17731e7bd9e3773dc2565ae1e44f5a789c2a62914f23c9a9353e60c33cc00d2d0bcf8ee69627c8b19e83849d3d32a28130ab9e83ef433dd875ec066f71d28240648e99093aa0bb950b5b82e404e86af4fdd2a25435783959cb233a2850bad2a4979ffda229cce35438c2ee675d3d402a6809df8a2135dbce86bf1327c2f1e8542a1429f3c89b96375630b27cbf2fc39fd2bd8adaaa45d5ef2401f7a5eb7bcafb5e5a3e9813ccf037dca73a0d64cf9eac23c52526e75b9585b620d2bc4477cfee7daaab585310d12fadbf7e7830f3d4c31a0b2f63ef4a04541a132fd90f0bcf6f52004aa072128540f40a050a8dcefe9000858fef38debf7d7751dadd8077fefbd97b807074594e5f3da6a9abad524cde975ddd74fa603696842efe2695e7c8b6e354d22cbc7c5773fe3e23b5008127f2121300824339e67f920f077efe21d9c69f1020cc2f32cdf22f4f9d0cf7c3e8441917ff79dff7c0567f0bf008578409183a20774befb0870cff22ccf3d7e993d197ede900c207e21bb2130671542a1b2f65d54a69f64a2841a3ad2579e1496b5afb138312b4f3ce6895b797e0b9c7362c1382c2086b987e5c3d895eaa6e9336114679a3c3f9fc2a6093f6c848d79c2266c9a66ecbe4f17e4f9218c6ee53487ce2a2ac7458b7866ced402f761d7ea60107bee9d26cef330151ec7757b1e775dd81981b1cce739cde38e6318865f9384713e2cc3b3499a8d9aa67aef6ab59a26b99aa0cc87eb8ce86a9067a7833c3b20742fd884c170f27c2ccbf33d7896e77338a743e5f9170a2fa439ae69c44b211db3e8a570863447d2745d87696b9a3a3f9f8ed3c43dcdb91fe3e234615463118b168bda9d5a9839186531aa511a485574e5a5a6aa89a22bbaa22a5a84aaa88a16a12b154f144591e6d01c9a13a398a884ac994a7ad621220100002000d3150000280c0c8704a2f168a02699b07414800d738e647256a548c3248c611052c62042882140000060044406b3710050bfece63556903f3e63784820549b34521aac99f78395f459e40a429659e44dc4954d56e126eab730b6430f8fcee3aa14421f00708308ceb83e1238ed08c3a5e4f15bc05e001a4f5411a8b849899cf2a525b6207652abb73eda8f97ed7fa7ec614573afecfd7fe1dfd36cf847a2767773a34ec8c76837250bf677284e0e7a4992d2da6ba20e43030a516970343434d4856c3e65d8decfbd08538de2740b492b0077f624c58d285b5884c077610d03ac222182f23f1fdd45a3538d911740347fa363531a798ca9567485522326962940c8f65f17b8e23b2049254d22e324e538c01c88939f371dbb6106a59c2357390cd932d079f20a526062b807c24161e8690a0c78a294ac84125393c0d0764a383ea7cb29ba595d105ccd53ae21292a54c5cd4419881ed41a53fdc385a59525fad4960cc184590a9e1bc1c8d91ce9523d58f0eab7b948025b568c003ab93685035a008ec46eb715e1e01b539935e03da97794733ed0245346ecdbbd0d5739434990a3975848aa9be3251760cec660d4167122990df817fc0f8cf9a2120fab29347b43195c971eccaff6cbcddbb61492f6fe6ec26f3bcda8070b7bee9b5e0a24fa9da385d8ffbc3f888c0196e2d4c025568428f867a48005620588203f48a5f8ea129f904f87520a9d181f766c8daa0185ef8de85d257a18025c396cd4ffd4bb0463dbf7120f8d99b2a99c622334f994d4123f27c51337f8274d4fed953ee88e506f41b9e2e9f7b04eaaea7a50487644d3634315571cd943fe80857981d6215744e29487a8211139d0a03547d1e17c65a49d1c290da26ca914bf841f19d020f82fc44608a2519d7d76a297b7c58960e9d5440d7df755b34b6990e416b136dad3e9b4cc4c2bde4f9f59a1498de5c9dbff51448629b5f92191c78757dddb9e8f22518086a36a01a4000e966cffae1c6586c1f8eec759befdbd967e808d8f997530d091d91d199fba70f574d9ea0727195c692debad114180a0703524f50c5ba8f96a48084e05807df0f254e9b6d96d3982d0902dee4c339305e83c046315ab66cd909998f801c3c847d279ed5c91ec3018fa5c2c97ca18aeeb2c5035f6f36a6e1e07b9695a100d30709cf489cb53a9f7af760c7ee7406362f487160a717c332e9ce946967c83699b5f1666d5f69fce51b63ce98eb12efc6eb8792ea6a7ed6cc42c8dd7e8d5860a4dfd983171dbb43a0634fa214059aca8d68df474c4448d543d72e1f687a0308235ce06da367b64d3cdf964ab0bb34d0ff6f70a56513a149afcf1f1b7fdfe9f5a7b86e9fd8d40b2ab1fb355818de06cd3d9705e145d96d8f85030609dbcd591d4bd7b713ffe82a59a6fdf0be3e615372152347b155c9897d0ee48b19dbfe989fead2ca8e377f669c748ad65fb7e38ba30918e1db8f562876e61285a5767e3d25f8915e12e7b9d84a0385e1022376e655a60aa3f360390303e3642695a07bff694dae82b7f345fc6fb5f38ee7043436c1cc0f275472be8a5715da83b3868d42b1aead7e6c4e5767a3a86f22352478ee599afea90d49b47b1e3b52242f45a6efcba30e843912f771b13a9c9bd2f753f65f608eee9fe10d411448ecfe5f28d88c2fc880fcc0f6242c4e3cee5fa41764ed7a221e42528a6a9f06e33949db3a15095959e106f82aaa0a29252b8327eb2ac4f639bd95996c04d3daef10b71bffbc8787dcffd8daacc3459d21400a0e8aa8f5786778e4c4b43a63b18f2439e12e2e9fff5979fe755d84646afd8494aa5a2a358dfc2e1ddcbe83716a044a3d85fbaf46e6b2a0ac6e1592b15bfd51fdca271adc6662e14d871726692066db119afafa631bcca7cbc25c961b649182f59c96113bb30285c9fe3cf78757d81b5a532cae0f2eb4f62e89975e608027a2e7081634cf7192387de0baf32dd5f69c34f55c0e8b385b75917b2716e3c9f09e89faa308a644dc242d90332c9ab18c004a52e569f606f4b13c164a2c672816016bd38047a64ef0b477460b99d456ee017d02379706b7ba41a3c8b230809a52427be7a52bf84f8fa61eb0137c0ecf03d09f0f7e618479a63e790d1a16daf29fb261e120579db46ef2fd2d7bef13571aaf4f4a01567f517395791b64d3f249daa365594ad8c1bd776349d85287da38ee41d1efd056420f32e9890e36d743f2d8a5478bda6a08c1fbcee61dc76da71b1fe53d8b5c69e1b3bd4af8d62510acae1c152122cda995ee02f9a344dda2fc779594ab2df63b6c89358f4e4c671fbf396f95fb3e2f3a87e775d21c1678563fed33b805bfb658eae668910ca57b6021e7da2b3c3fece1d9afd8ff4f645524ab39e0164f0406c1354505ec01421b2bf6362158b9f30f2839f0b9d2b9a427ee0dc5c75c8a8b0721a99d707792962753cc6d61b0f3466d46fecf3b0e78e18b040a1ea4f348e88436012501801d54f7eeaa5365f163cbc98d56b0c6fe095da3aaefe04e94545ca23b5953e3d499361a1e5e750b4511128a6cb9a82454bcded9d9d500624ffe6204b507ffaffb7875836c4f579e0403024af4ed062f64e42bea2e6d8af5a27e820878b64a787b7324338a84e713710eee857d58866da7e0275a991f229f3b1621a9ff41468021ba735f3ddb749b6ec763ce454edb5bf81f40d53e2d90f9db8f24eeb194a163140abf1e6e8f0361aa8e7d0e610e77211a036ed23f441287def8a3dfcaf72c0b1525ea105a981ffe0b353bf736c76aae9ed0a5f71e08849d0facfab8995e379f7a21fc8ee774dc1ef21415c6664c5ebf414c6b8c7010003b8e18be4d0e39526fe6fb0e3cc789c322b998d34f74440511b94782cfddcf9e14b9ce071c6b0e81d9fd99261737bbfdf93aeea455b67c8f8d836f1bd7a06eeca534034a7a799d9f1ee9a74187ceb345bce810248482935d81e7ef03e6f4f223a634c399fadac40be44e2fbd3484a4986330460ab2ab1f262ccd11c267f9fb42f2a720fe4f7a939b764bf2ed1bfeca9673f32a620937bd27cb4596cf23e9b2e19924967bec64401532e899406d66a3f333a581eb0635bb118ffb03b29dc5f5a8fa4cd8f8d50cac12b4794701e064ace12e31b5dd2815464cf943e6447c30c89068935377b2e854397ce4bfd22359466a198cb6386086353aa743031df318dc2cbe5a32bbf2c4ef5c8a469a127cfb96ced4d32f5123d067b223889adb8dbc91620f0c78bc14ea0c8fd60fd202d18b3fd2ff50bc830c6e4eaa1a5641bc6a993af29351119058572fa1b34f5941102a648d6b42d0864087ce862184e469743e8ad509ac75aa7443643c8886c7523b83c23e9044259910c37f0076205214e40d62c26d1251cc134e39a66ac6ad3be761921c80774946ae61e8058c464ceeb9161522b5f45d2488a151db7474502f7c041707cd4b714542d72d3a36759e712f3024c21f3311c5c4222f4b5491761a99922699fbbad363df364a7f2601dabdc3f0e04cd0149244e53f6181a496e35d8b6e146842d72bcb4ac303532c5215d0cd9f436777a338e757c5a9544222e2db2c8daa487af91b21e88265d45d71cd7be0c127ba41fedc9a51b3b5f62703ff65476c262819170ea936882038e3f7a3e4f4203141470aa583a6a858c139ab84306478f57980a40396430cf8c2cdc4163462fd5af685a2a1e080db023e60ba72a1eb59a9332317a0d0ae8c4be12e11bb2fed8d98fd59aecb0d3bb8a35499ceb487b89df06f9078a1504a21caa8d375cd6292800e5be609c7cf714966d6d4282d8070d6b4b4d6aabce35d2c26f22f8a09b63d8122c23fb3fd25247ff942f3b70e557e6096b1ac8bcfcf0c523cb5268f893b5dd66ea28261a49c259bf04d7a84df72ebdbc1cfea63e1bccb5cdda55e42748854d0b051d7503808274bafe02b73f73771377d7ab12903043a3f5bb750b7cf11c81b08490a3b2a7d1498ddabf8090f0f300b96ba8c8db1b65ef8f25bdad5b53505e84281e24961d9999becf041a4b3e5326bb479580b1b31c97870869844b26b96f1b534d2b72544d122190a0e12816f38e396730352d8f3656342c8c4ca2f242eb6d63049c89f9cc64d067063277f489b07f1b0bc25116a0fedd60b56f3ec318601061e031e744ebf17198579ac9a3e966fd710595931e1ce9bd01f248442c645731771206643fc2f687baa5ebc2ee90e2944883651a53b209edb1020f49f1c23ac6ec006f2a1fb29e77600446b84293fad83a9b1189ba9b8f1354d9dcea5df9b94050db27f1f7a6bfea8f8794930b04712be86820b61af661c58ab158e39c02102d9c0b9fd86b166833d82f85a28cdcd074a46b117eabb360fa6f884b09f2db03ca24cb218f42e0b19ca7d6449eaf12a1ac4749c672f03bda2d6b6a89b48c959ce884b4f2c10f10395225c81294b7089ef1d31deef7afb0c8167f6035680a990765147913e42774fe8f40c249d14317e120453716abac14268d58cd0357907f2cb414aa9a199d1c9370425c95b66baafe218098a96c46451f09e809af67292bff4f9180aa43cf41d8a357a4f049174ccdd849220896a9be5de0d3732e3246cad0ee301017658f6438275510129e986fe9111cbd700e9c6b80546c876402946bd7894d6f99cf3a427b647e025c86c168ce0fa456fd1c3fa96a871b4f739ec95aeba0545cf5132309023517d3c841123f0a686bcdecf60cc7f23f86e327af68bf64dd7722437ac94f6092504f91857efe650fb17479f623e5bd9e6446839ca1b978ddbde50cea8c3283c378c03be6ed5c63d8bfb2c10f1b27f1d8082f3d8eda1f28b60ac42056ea5ea9e2950117a48f1d653dd8e8698eb64ff18221ee88871e0240152d5ec065a20309e0bee8cd8903e732f736f867ddaeec756f583932d31a74d10da48fe25d79e5f1dbf4ff211d666a0d6b6e151f7d83cf58b2d4911937ff92ea3aec6a0f2b1874d88e6e44b1baba8550d99f2743791e46784aacca333f31ed4c59752b22d221cae6d192d24f1f8f4b8deae58d01ca7eb69cfc3e18b0d3706d69b858b2ddc837b17e9502f286223e9f90777bf3df244fe4000b77359973d4c17757ec83592d01f5b65fd1029c6b79256d6501a227ddda3e9c9f148873e00e8f22c509d97ca3b20ac0553bb74fa8360161649d064dca23b39c4abb83cfa6b1554cbdef63b1428ccfc42a08fb2bce66ef2e81566fb64cee05c13a7e82a6b65e932046806cd3faec83463c425e40b1d0d7b1681c801f91738470a353dec43e7cecbc19904e7ce814f41c0feafbf123022d3fdeb9f321cff31683ae41aaeba42c4eb26bc7741b1f6bec98754f49c0532bd74f2dd4e2bf1667b8349a092c3aec059d7c3e616bd5ae6ccf18417064925d482a68b7bd1a5970748c619ee5044fe7032d48e04f58b8dd327298a80bad02de8867ad5951626c7bab87a482a4c3ca1af87c963c6c3ed6069b8043de907e60b6790d02836a195f6f375b77ec2a45611e06a1969eece89b370129b4dc4a9a396f80824810664e3ef6e432350f476fb4074cab29a4c07643de6aeb533022d13b8b40d9f380283c76dcd02aaeb84b397cc1fd7a87be3218211c7db3cc43da26aaee5fc085ed0426f52d6643c646989c691f33f7d6af12294f618b643efbb4500148e7d1a5593136592226c547af18f621cc7d77b62fc787492ab260df001a8f0b46e4f220d2e7327cc7c19ec7a3cae36c7771860199bfe165eed4d9f440181c5dfa03982f55ae836ef93a4094722731c1d31aae79027f7e34cbc81e9849ca904fcb2c79d0f11ed6b6af1e0eddd95a8c325e9ee2b75403206e135483a373d7f974ece7172e9a09f2eb39e26c63eb4abad0d1c5c45d0ca3346b0648ff994d2844f063264e7f808c65eb7cfc4ce9e0838a7d3f6e02e7bd0db530403f5e7251977af7f68cbbeb8cdadd34774cf27fc7228680869435de26c09495ed8148ccd961ba4c9de6d2353e0cf4f465ff4de9430d46adb4395c301b66821c48a8e7b4a2747e910c7556853303edfb3ae7e8aec9de99a826b573220a5b151507c17a11c9772dde5a7607f30091be0e0c5c8ed1636a9fb32418311e871f9d64a42921835c3aa47804daa7f21d79af514e47d4c8e78fe45251dbc79dfebb819a8e6e076d8273e10ebbbbaa405deed04ee2ff1089b757559ee15510efd4e72b93eef60fe8885c9563b592f66894cc6e109e7cd648d5da2b439cde3e8f4f9b4a4f5c0679a20763cfcaadcf0e694f34fddc238bfc885b3100c319dfcf265ba89a13fdede5497decbfcd57630f409d164b3ea50cdcac2178c15a08ffc22accaf57ed382bc7e84575ea44edf74d454b26bbd6c8dff9999784e7d09d2b5254cd5d040d9250a476382125c280d23437223335d4ea2a3e6214c07aaf0dbdd077a9491693da6ffe7fa0d53840925fb86dd778470c0db1e886c18a74e0f9b350f4d6be7859bb5cf50d89b25aed400ceaaa0e1d650dcc2bda6ec222f3b4fa7ba6daf3286bc47cd18318c1b532501da68358636a5fac4e144b37a1ded12ed91304b001dd3276146dfd1cb6c1cd384ed92d6d4b14a5563ec1b432bce517392ba6eccd3cb680bc19bbd12478d3db402dc263c72e001a1674becdcd8669b1987506954e43a682433f39969ea042a7acb1c5c6886390ca4c5d8ffe75ea8c0d184d5cfe439d1c0ac739c227f0ee8f65b7d730b0f74f8bed64dd9ce9c3c2cb6d1ba9f44d04ef119a02a72e6b0d765ea1b5756e6003f6ba3b86827c36478e711234762d6026eea1f8137f83961a65e214faac5e43b07a9082358c47ed82fe665e2c44a4be9e0bcff3c31bdca63c857ad6c4265df80665395f1912018d3c50d2328df3996c379799b0e460228dc4d8eda410333d51ec0ddf607128529070c6060660784e3f70698022425db8c06745a4a727a9fab45f6f768f22751891b373e7b8570fef5a3749c5ea802d0020c93a9200737cd5917d19cab7010c2419a6808b47253061dbb7f75690640491374619d983729daaaf894edd2f592df020cb3e7fff9b57ce21fa016bd8e31480aa8a725d6036d9c1e3c5e01a96d4adbefc7532680f9cc0a502dcfac68474abf2e5bc77b96526efbbb194b955972775d75c8a3e8cf244442223195ac700ab11ee117e9f9a2a680360c59fc91055093f0e58667ea1aec8c478e45df79eb45f68c13e92059b2b95e05d77a225ad893ca9cb4f1e6058628024a4602506d3cee64e3dcc78a9e5f2b52b48513f21089e3277bbcfff30b5e2056bf9706d4a5f4a8be289314d2dc2a25775d0829dc4fe04b164c5b28d4f4919055318f93b55004216f6d7b5c90e6f6985030384d290d426a4cdf5f520aa7db9c715073c341aba1d579d0379dfce026bd05c4e1b7200a54f7b498b93aa802e58ff965781a767a9cd27d2ef157e9569fcf5d0482703ffeda8e3d802efc5746c433a3e116398b8023562682b5ee3556b210fb2778c097efbf2edc76982e0579cd9c008e0f7b7e53487999a1356865a07b1329d81a7c7a8791628db024ca15ffd3e8d6b618af5507dfad5834eeed3dfa4e097cf942f675d21f2aa9711367931b230f766aeeb2bc0c647543235be06d837671cae43b31a166b554c43ea86956ef777c8d4dfc7258af151bc28d4e44bbcc07003ea1165a0994460e1ab7de2d15665abbd70d375ff5b1282a25061f943cc6bc52d9ee58f42b7dc22acb04517a74e43170cb237af054e92c5b9c5efcf2f156a3304a4b5308a13c7e5ac8f2008a1dbe7c2e6d660e0f97915a37791b930260fa7271ed4a89f305bb6e87bea17ed52d3992a11d5bc75d54a212a151598e1ed4902b4d94cae424c816e8a6e031b73c95993186c02d03f80c04f2436a05688de5cf98032d00de6ce5cdf0d007d1aea5e46a65e028c544c670dd051de0d725e21103854e8fc1ffd954eeb0f4ddb4198760b98fa814b927f1c22478ffed45280575029053a6f1c1155344565add8834b5034291629d6e86764f7b03898c117d18e6bfcb048e16c43a910dfa5a100eed4a335ea12781c7958f76313e0c3df66b725be34c187734ed82c69ab844f434d8290ffd9832b7d76ad9233adacd1a21ee9b5100647deffe58ebe5e0baadbc6097e7712b5121eb40193f2b41e3cd01edef0f5943df905ecfd3975a78a86056a155ce1cce754b8d7e366b4ae2e7e7dcd329936f9ae97a241d531c8c50b361b1eec60846797c5208c8874fcc12c76f47d23fe2d9d2cfdb87c3252329f5c178abbeb2b8bb315329f6cec34cb450c45be5f0b43c18536015849620a7655fb4fc7b786970f9cabcb79f7588a12273f1e931a71f2c1766c277d893de6d2d4dd2211964f014a8026a82e233e4038c34bc68ff7df1bfd9f44b8566130e40d4f871e2e239b0d204fc3bdf6d7bdbec949d68606c07c8b8c3a872d3da0dc36f77b9921710967d0beeeffc8b1a38f1efdfe8b05c77f013c57018da3392e025daf4e2c2f29d7416f0bd4385d4ca8b0cca4622e418647cd0d7feeed30a7efdb410e256d086a223fa026a2633d0058e8c1ad272b023f00b714fac35734c5d047dd15546f186a26b0ff771da5490d61ca9c88870eb9d5b4d0ef78c42be7ff0ffeb3ef38073d056a53f54f8c5e5a42eba404076896fdb9dc6ce6a0a2d73c701a6ebbbb9f9aec3351cc9cfc3ed2123377122c06125ba5dd2ef4f1f623a500dab23ff177aab62ce860bf7b34d4e10f9bbcb53b33fd0b49c01f8e3dc3f32d433f085cc64824390d9fed8a42d5ef9bdb67c8f0f178847853e8cecf796d023a061948cb3f424d816a95b1181feb4140e2343256f013805e739ecade3f017102c242e6c40420be153bf6d02bbf37a72f27ef659eba5d5e80f297d05a1342b0c6f9ea2842206057c26719b230aa05cc684a70cd2df44daea3749a8214dfa40e7b44b2134d272af51107523fc31d271debc6dce6d564304d6ddd2c2b311be134fcd68aa0be4d8d59fc4a9906f239eacd38b0801aaec7feabab056771d6970397691535915292efc06a66a019c9af1570f80c12785124ffd79609347d05523e17159b1fad3ca8394335ef0563af2720c7899cc1c6ada3203be87e3e0f09465bf9c592ab0f2ff80f55bfd95c3c47b9a22b449f0aa222d71d5e72a6f51dd13f2136fa722d48013e5ff5e1f06b61c729b22b24bc99d65e3ae7d071f795d3e9d8f10da46528cafbb247f6db902b471dedff0f4864bd3c861a289bb488fc4f68aa1ec3835520350ba0700c93088335e22372d818624a2177951632d7470c4fd4e71221b61be6b1653d4dc1f07b6ab4d35f58e0a810a6a9bcf6e72fec8e57d233cc8f41e1e59f72e4c7bdc9278b1f55a8f482dd2a074a8b46c875120a7ddcce1a030aebaab50e90567a8f78921911fb5880b9a5867dbc419c6d2c9d67950db4ed7a15ef3c36a095f4db5b427b29e1fe6a5762ac443196b95b1c47e7d143e0f6f438d2fe86192da94094f596af126973ce141cf9002e79f8a5d4e19e7c4e9e0428752e039cf5759839273fb738898b39de53925bc281f7f0464420a1ec3b99fb737afec70260f7e23d94f600f4d5210d19d23cf9dc4c7647a0a8327623490f0ddcd60bc67c91caa7dfa4ef953d8ff01aa90c892791f3d860d0ad80bf8ada1a5539183975203eb64da374a0ed3abb12bcb37ff8c0b1b89796368cd8cf1759f0e7ed2769176da3622a6c915880ee18c7b7da22be95cd9e4b7dc10db2c37c4d192c858c3907cce8138e1b8fb8dd164e7a46d652512e8df363e4f89f05388226de7da3ec40f81fd519b4f000094af838ba8d7d4a71306c2843e260b7bd89092d46c466a8b06341a3df81cc07fbb7cdac599f8b9be3cadc700e86c314a37dce7c74ca5525939c4663261db4f33fd59e5e1383be7054e36e4c6acf6cce7a49d8f84f93a817462da5e3cfa20ad132d6082497bad1ffa62179631c947a80fb5bf0ad1efdc9cd2300f67f231fe3cc890e4d2340569fd1b9be94a84c05db2937b9be529f98a4176db71416eaaa405d4b675b3df694c1585c7b0fd9ccdfa35056513ce5f190979d7c17066f07cce3ba96d87efeddfdf4893e2cafaafc76bc2001767ab1f0785493ca2122a49e4aac6143af1ee67eccedfc3ecfd4926a7057afa9c283c76e5864ce38522d696c52deafa61939cd817791420c431a1578d8f3b7691ca921de8fb7016c9b5b0c42f56f2639706b966975586ae8a4f9ac72cdf10cb071222e932064ad13f41dcb5751e2360af3c28d1fa85aea76ef80ff5275bfa7e790023d946931ad186835e673f62504206d22ff9ced23f71d23e3478c184e01b2e4d2fd29913a28a5c3100699786e40ec5951e433fbff6153fd49235e8867c13057632a29a5b3f18bee0338915273038e704123db17c4db529919979d4cd917e84d4f9b5876150e9686153e45d79ff78b52fd7f3ba3f615622cca517a546dde02c2abf85fd0f7ed49c2eedbe3f0f77d2f08206bfe01f8c61ebe3d08fc088a07ecb5915e847b7c06870301f448badb4e2e63682ba590afc5f14a424fd807f7859e67ed22fd1d827f78646915165efc2201e154020002b066afdc84176cd90b3d5034796cedfa16266a7aaf3ded29b8179cf4663b3b325e38b2ed03781d2d96751c4ac8e9e889ee92785258e347b07498565cb6dc9527acc7a181998f4c1012b613cb69e2ace65514d0c8c1157bfb56594dab9764704b426dcbab275f257d886fcb17b691337fa2ee80f4efbf029ed80189ed1c290298de31cc030924f563a9c8bb014ecf1678a9791adaf8084d0de7894a0f0dcb4e619f5a1ba603d7f38160722608c33a4ccf2d2a00fded7f672886ce6d26cc2da27b073732331fce510a24b5410053dde21f82314a54d4e6d7bffb125dec18fbd245fa012bad7dc64af28815924e44e22d01b81219de736dbaec47dda0d82d4aa3beedd634329d39ebd75ce8f95e1a12c78f0d45ff0d0c83a1bf71efae1aae8a44e853e25cff33dc007e6ca33894911cd0668d600e8a163f59e8770484960cc6bef16122406ce519c5a8e90f61799da41cc912477d80966ca064bf094b3bc74a23d44b5c6f8d8f4e758ea073e5c48b5e2a0fa6243795530029077ddc01d60c81755222c094bb02f8ad93f7ca52575900615e9248f0e54e6b100ff8ba59e7792ca5ac42629a707d5d4374023217d3b45717a1acc6586fcf2efcb045108f30798355f9001602dc12f1c9e5870cb53bb4b1978bc8d85e455876364b47a74f722ee8921f9da9aef1a6716f737634aa8d0a295f12bc1d71ccbb57e9ff158fefeba1c53dc3d777bf4360fa4436620a7cee8594b3c2aa498fd80e1bc5e036246aabeb1cc6d7becd11ee4ce911d25237d726dc38237ec26b22e8b23199b861e4151102893b12148adb737ce98a9c8a226ca62e570237f632ae82a8d4c4cb559610741614501bbfdfb7157e4309889f05ea737a713770b5a87400a75aaef0d93804edd3a98d378c319279db9f41e286cc033182409135d2c075295400eae6025d1165e5aa7235cde7e9509b104fc8c0bddd5c98375bb09725d641f4c99c9685169fe84526b6efef3384bfe96b229b2e625e749e16eb0e277c22be6b49c163800e3dc97894b8cee8400cdd2a709840b7f6aecb3ba9998ea9fa34e2799bb5a33a71fd6e6b9543e009d25714bd4697b2ffcaafe576c7914dd6f2ad36667679ac113d58e6121f08c2f7736f336f4a1a32ed77f7ac9b6239eb97129effddc2171496ec7e10f91597663c50293808340b6ce4a5fea9bbaf618a24bf514e6cf72110e5e5cb81921e81906e6f24fa9d70333cc0e78e9a8915ea61e27d484c7574b1649f8267f6017f60a1f1d9e8443b6a3e4c7cbf2c982a85f6614ab230f382401cb55861498ef3daa7f0895e2395ded2076328868fa4f0f8ce02f941916302cf4fafac7408496e9428421cd689910be90206b519ff79cd642f7214a5584d260daabd3ab3975f97e9b62780755a0712a9ef7aac73506b2d2314863e592f6275ef25ddc79a6e80d20dd177d4dd21d31b813d9496434713f25f115043ddb72216207dbaa499c624824e583d1de19ba4afe503766185ffc4ad06712c56d06684da703fc219bbe246818f383a78042611faea6afd427028a664398bf90ad11531dabf9cda38dfca8d639afb4689cd1413600c00534b2f370de0109128e8e026e80fa11634888d060d3a4a673864d05092a385a555493559512bd2ec13300d53b17a2be23b596757ec0281b3556c972de3d7aafde01365c17bc169575bad464812303af2035eeca1804346b9d0463b53d0e856ba3a58b2a80df9360a76ebf5014a552aedac2a6661352070035e351fc20096b124661fe23ed9e3c67de070cda7744d5501c6b4c61c2cef0bc07398cf3d56835f90c79c3850cec694bedec8f90d17b1a9d60d0e34c9c1e737ec881b96750613f98811556d30f92dcc29a5d5ea701dcd7d84cefaf6e382723ade1be8ba6ca32a04e84d0dd0f6671d1e9353071a47cd71a3a0ba7adcfe29702e51d7e0e65582e3a9248a5eb7d5b05e6dc0bf75524432e842699488b01efe3429df0a73dd96edcb142ea5193ad3b7bf71026e708c20ad12a82db92f494638d1929163d089ef523c9759e4fd721ac0153b56aafb52c0c13380de998fbc9f40155ef74071b0c2faa71fc3b6701f82af0cc67114a2893c81ccefd531507c60c2ef133e6e30801af7fc7cea6495e917d82ef56638167e16285872d73bef56721823c63d84e95ea72c71a9ac1da5b281f2d37f52ec0d72ca8d78184bf8264bd07112d082dbe904ac24d3cf1579d86fdd1615fe792d1e310c991ae1a05244aeacaff63af1978f63c50a9dfa558adac546cfb4a3e9b80a543eb8af41de8ce149884de086ebb50943c29ebf167f6fb7b99efdc515d570cd9c40f43c77a33d27a3655a23ae7f3f5ee86e1a08835a2e8db5a44ee30e3c1c66a2daf28e22ce8448c119c4a87b28a658d141cc7fbfb568fb867af24cfbf313b1872a42853a1293a92501e4f8421640ace2102fffca837b8cd8d07cd92495138417fec90a1ed12984647a1cb18c50b25785d16dd53705dd5da77b794d41a4ae31cf5eaef17aa6a0957c6595185105d70b6ef4c3e79692f503b45b8f582b1ca347f2939254107b70a6abe092ce53fca136dd4c9be272ab20c41de426620a7efb56dba503341fb23739b37323ef078d128d039d4400a79e4a8c20be93fa86cec1f52e34925c7e00633fc894fa00a0cccbf50b7ad3aec35f9fd0f10b82d1b5f185b63abb1ee19396217b5d8411fc45cd11ae815e728d9d09acb20db0f4e537fb0746cd6385679242c6bfb612967f3008afa44a0269dfc064c95f88cbcf34d2b9751f06b145fde657446a7102fae0c7961be02e59d6fa0b75882e637c69c82bc2cb0232ccffd2964d8f91d0c2a1f7ee7754e0d0ac69646b210369d3feef9f68b8a1866c56469942ffdeb286d0e3be6eece122cf741165dae9de778016599ba5cbf8826fd1db561e10fd4f9c3e2328c64b6ad0b75c49daaa503cb3fdf7bc79f5fa91c3a59f545a969ac03c72a869dd1a1c82eb97afe85884616f011af2d9df656b8e652feeea2b8d026c79ee19d3f7d0f8cf55907abf368220fd097ed26fc942a46af35a5519bc8573f57df1e97cc507159e696322ac2581ac930954d8352fe7d4e346fa1cb15056a5aed412a19036d3c46212c726a37e2442a52548c27731bec98f5e500bea28c8608f3fe4f24cab5a2582b9c739491009287798b03995f891421e830a8c195cc92720e4c08509607498f05f6be99efb14cb0045b1621cb63e6c1c19743496f315d49daaa7094dfd32aeadf2510325b767070a78be58d9d0c90057598fed16fd9f617f5f5a53b7658a9cdbc510c77d17a757f6916cbbc7b293c956fc23f2dc7a6d236518100e715c68a11cea41286a0989c4f27c77f612d7ddaaefb7b715b4a1d31f09a8ed1e00b131db832a5dc7fa05ebffe2db5a8cabde42b3f2329b40a309e5e19a7a22f31843a932c89938e86b057d0fb2a9afef44b0c58bc879bd1f407d2e6f435bcb294192619f04a2a70923778ccd4329f24d0cff3d95a22f408ad046b4a195916844ffb64faef20677bf380fcee634c38343a39c7c23016c61cec95097169b0b8ae55e380f3657bb2a7756cc166d5287e948bd28d07fc782a75f20387592eccd0c0b146912aeff22d83d4c652c302751b2b8b8cd25e26c959a9adcae57a0ea75c29ad0a0b6293cb8859887d25bb4b331e839744847766ac9f98a4467f0fc99725ff98b17ff48ee81b9c71166e965e4d11f8cdb3e95890b2897534a8e1b8efdf39c847c5200c48ecd4f0bbe143ffc2382b4408dc18f84b723af4c0d9641726d5e01a5157ff2807110ceb7aaca8cbe64b1c380afaa957301835f11d50565e8962e18780c141fb53400dbd52236b5582709b676869488ad27b8290c4ef3f626302cb95c2972641a10e71a59589a9b3c4a611f11d6687ca66c40e5841e7ec15996451bfe937953ad7ef30b832c31f3f22518f3ff244e4fe150b2893e68d1c0461ceed7df57e09284fb6bf5ca142ad4bd9f1afa8e68eda1078c8c16623d21d1ae6a85c414524b0104886acef09061d7f91d4c60d77516869d81d6ce45dfe77a817af1eee577d0e06cfe55d953dae73710b8b6b01dfdea1ace9a894e40b60f3f4d5e154b7de9bdce416bc48151bf86e2586d8079290784245934148bfacbeef5687945b7cff578148e58e045fb1766854167bb16ba40948ac7a204a6360cd6c0e7a08b9072519fe51eb7111ddf37b606b514e7af064d060a175cd447f3789c86f2cd860c14a9af5d263af6ebe70235bcd7250ca7335d9561382f32c5a6ec1185137992fa93bc1e5cb541cc14bf26f3f964e86cd0b03c7a43e79ae4eb34a4f25e9db0c1583b250332457b0e5dde34da72aa0edffedc5c2458b10f1007fac0a883564699ac492f6e4b7bde19d4c955beb01246f07c98b69a3d9f8046825c7b8ee920f361d804941b56cd4cf8e618da16c9c7638994840cfa5c2790895a440f53b32cd0904393b5a79556b052e3f8ee48c45d274883bdb11168bb9db4d4d822d5dd17a21466fec066df569f4306fcb16f3501e6bb5ae9b5ef3c5e2236e6016d1e635e52f9996dd48fffaf4ccbf226b3eb9429287e28f714f463631ee470a3119955f78ac8b828cdeee71b441ac0ef5d31056ea3f463d032d98758c4550c72cfcd76e33f0ce3a7f703baa6a2e459abcb3bb0e6455226ac05712233306d9fbe3ea6d5802ade13f419093e502bb7aac29431ff80d1f4c82741823ef7e0392879e889123782fe324eb266e7334ce5de4af58a11413f996bf77da9e612f584e4436b0cc01b64e7b0a4febb8a902f3a636ae202f4b6add1fadba4b04bf9e2446dcac60195e33e1f4fb495fb049f48c20eba3f9f044a403a18361f4d3ef1f217793b9bd2ac47d5e4b938fc055b5012121b536e9946046c3c5d7b5650bb4b334441df26e35d12f47de46a78b3c3e7a7d417524b68c50d46536ddb821d9b9b18ceaaff3002c11998dbe007c6e5c6995be077def8c915f5b57bbdd3e72f4c9666d6e7630ea386b81e5cf16ff4341bc2b8fb8d8a8ebcd399c0994498e99194d9cf30e0ebcb04b0461e2433a1dcf4206a141002959e5fc9510155385070afca7fd23fe0b71b5fae2f3c3b8b55e1947caefee2988f187f69ed2e30b4360b8402da564c25e9791a0e94633f4e8dd396a82779503e0d0689a111a411da1968c7cb2ffc735c6e8c7012725b21cafe64a01f9a1061807fe4e0450edd30c7edf7410a1e60e4fbbb0816204e87cbf1a0f9bd664a60a6c68ce1e0a03ab644bf7f8c822b817d6899def7ff2777dd4eb9843cd4eaae0fb3237e70552d0c129b98deac2431510a1e99d805a577017b6a7e67085765da456f8dd822f7999a8fa722f96391c3a18d225bab0e3f70c262ac19b6f6e0eef107b15e63f3315a42c1c752d0fa46dbfcf585fb30b3aeab249dfff7061fc1487bc2e0da6fcf51bb7fac7b63f3c1e5311c97e0176562fbb503d3c94ceb47ba58a7bcacf9e177e733e29e8fd421f8e72d22dfeb778528092d937e6a17b86f6731f7d62664cdb7569ea0f50d496bbe7265825064bb5403de9a0fb7f5c71ede9422a2833c7daefda662d69787c9520babe6a721afbc0e828952170235f00115fef331a511f9bcab419ed486067a3ca6558eacc25f4c3daf3e549874acd379ced987b31898d43d7975ac440c6f3483f0009c343ad64a4710cb6228f65a2a98933af373a5b033e7601d3da6468c025f45ded748c26aec28976b331fa90731233d91c186122891ae68d1168857200c3ce45bf74b322e8877e603af28a0675ee241b6a8fad1fc7caeb9e557bc41e1c569437e82b652a00ee2c22860a07991f6d5f04d05d879f4e3bb45c877f1948908849f3180ecedabf1b655e8da9977915bbd563ae56b5e2a8333622a431bc0300e649e42d53645dfc03f0d7ed3f8e24181cbd61bed5d445a374459beafc7d58a701d2b6132159f4b4ef83c0f6ef31e9dff3ed323f8790c2449b993363f93d583dc670c182ed9ab86ef8c1e42ac38e85b5b644210d00ce5326675d99b53c97447e8d27d5c8f97fabef699b757a3b6480456e654ce9eb92cbef39ac522db6ca5b9a9ff86cd212cf9e0537451b7e0265c78aca6f950c50344d4992575c080e50ce6b0c3ad4a84161c2712e797241d1e4e0db1a1e9068e910a44622cd1640305e40c16cf1d042d547b3d4643a55faacfdb6b26363ede0e788a11913730e5f8f779907f8f8784996986b3cb7aa22a64ef4842c2056d18fc322bfa99601bf7f5fa8f0f1a91f4c10f456d47d978df75010c2150012c0c80ee251c5a429587b886f9109c6bd34bc8a6e21c90a831c91dbd3fdbec7809c93083a937f50c22e3d35c3a265d906eea91dad4b7436e58a2060fd03439d24dfd46c60db44c79dec4a11c86d7200cfe09f57405c0b81ad68593eadf711b73058a2a0e41c7b06c13fbe1af5c8d5bd6c31cf2827db85c98e11c7a4a2805c6f3a86c205ddc2aa662358395336516c90f1cda51d295b505ee41455d36e6f53ccf59be99a36989df1ed5f1590de14d7cbd8a31621c27ccef2b2887ba7f9d53818517b5c1207aa8f6d2baf8ce11cb3286fe3522fcfd8d7bdafd3a2f053f1e58b737ede73881038167048a067258239dcd11707d578cbe03aa5f7f6faa09bd4bc25b3b28373751bde5ec6cdb5525b66d0e699772206c0cc1ef57684d6f53529710d72f8b2f0160ca556d2b6c35a98606fb5282fbf13a21dd6fd3a9310fb4032a6862088fbcf65661e47792b53779079c596dba547ba6cf1e0bd1d76da4e2b63494d9b1aadf215431f254dad54c9513865ba08c6c255f6c97095c2b879005d906bac134efc15589664da56dfae148571c7bc8eef56bb7d571701568c78e97d891a4eb53bb2fd7ac4f0f32651585cbafb9045ebd66859cf3b51364c5dbe7bd122bfa33d9724313d4f50ad4743ab6662d02dab8371ab2cd6e8636d1dd431e442203a4d7c61d23b5d4c48ff3c5d892fe9e6009dd3ec27c282015cfc3ebf69dfe2feae9cd83555b44ae879626a09987e1c1365e8ac192ae9722fc3db22168d657198e2285580a2ffabc7b0316819582d661a15df8046883c7b9e178738974839cce4832a0130c4c7683aa1c73636e514dd08c19be7d525da975cf41db3d386631420d26f67037d477f7fe317a57d6fbf583340426473c516cc8797098df00c48449847b4743f6d3512989e8c187db3b9a02603f620a65e189b8d3ad80f77330031d3bd02d8a51d30e216111d79e0a4bdb26308a36e113e7108ac96114e309ffae04b9afa7e4836ff4e61c4a4019b9070ed6f31ca1df8d2e2f1f658af306ff1db1207ed31bf76fd392cea97f6d73bd7e1453f773d5ce5066b82a6f839eecbdde9e40564fab1b5aafe1646eece8e9e6a97b950e3411dee93c322c383d56fc1ccbf8fb88335e2f39683f7c37447bcdba3a982104c7d075ddff671a510d1563af16c1802c87c5cdcac0959f65323f206991618f3d9882ad6a4333a354518ce1d3fa4c9d6fd8bac19c7ce4628321383a298727327299c1a2a371105dbc66489808e6cf1e546e58f54a5048c1e8426dff8d7a536ae17345997d8d47159db8a9b374cdf74db269dddcab9ce7e638137aa6e1b46f08cd3e37dd12a3362e9e9e4dbbe004527747792a864e1a6943779022bba67b37221fb7ec07234af8e6cf4c51e263c5f9eef7bb6c5cb97183d3cbec83eba9477a9e16407f1ce4a77c8bd8c0b8b38654337f7378370a99c11004541b9d2137dff8b46b561a25a47ccd19d0c36a6f9cbdbf0057885124a528e86e946af909b29c0687f5147595bef449a7a5ecbbaab0b91f45206888079fa7e93ac52811a4224ea5e45aa91418ff4a36ac21161a013c4b2c63d7ebcfa2a7494b3d00b3027ba0a2f8fd4ab9d80e95316bef8164d4ad132c66583eebe1da8c5e339b8507e9d4c0a3721f13cb9aa8b844b590cd99e50821577396ddd7341f49d1bf42b1ed28d4d0198d6ad1b538deeadec5019d871214b3640b740253d9c49c981aeb6c4bf6321fa78e6a1ca70f80557a15cb07f354821a8f21c7b8ba903486d210e48a3a77914739e1b7637c216885f2baeb8492f459d3e7c8166852648e852fdbf2592e03ca4ec41dac14a09f5516596301d385c2d89669d4fb9b4250ab0d7f9315e5491ed429439fcac08d69443a77df04a657a0ff0b944e5bc3b2254cbccd2c5f676a9d64ff254e0cfe3f7477732c5b314a7692992728888a7babacdcf6274310aad8615d225239d0f45a592ba7bef1d5421d2f66ae07f40a615f0aa0eba05356e8ba895540ea8e35dfd7a09fdf11355a31da33982dec4ce0b75649ff17f9d508dcad88224246e1489ea2a73bb07aac44c93ac7b272c48ad4b6d0d0edab963c883ff3aa6ea53277857bc0208aaa84e858d008ab098f1856db1fe089c570abf5717302b6e428ff3f7179de8cb58677265c758592b4756f62067ce53b849e42b3e25aa85b352c45fb5e92f099db77ae8470080a0df9fe351a6949d2eceebad4efd9154af5d0a5595a18c82788e8d3fb44ee13ab601235b6592e268983cca394fb36e1cb43b28407b851fe438765c8f27b08650b7315f84cfa2eca79bf068559ea993064d69b788e2bd47b6f842272328f4fe6cea70ff512e6744c49802eef738b76dc907b8ed36b257beaf40db0f71cbdc3ef3fd38c75f0038da20a7d0c822e5cc46221bd478f630d3dbe9c34f30ef781b2b550a028e859a074f41d26fc6f0c2116847f08275a686eefd655f5b327c4721e22879e09bdd5ee4602db8be781dfacb7aa7147471fe4d437c5414fa5c06e16fae35d68d8194439ebbd5e7c862811d1dc9b8b515dc05ba636e6aee4a0752ff22a869f18f28e927e67e7c57aa54ffebb9aa167121d1b6acb4d670899d5412909d6f70db9be36b80383f1f8f7ac626bd9adc04a9aafcf2ccbe93ffe13e1877a006ef09ddb5cffac33aebccb14826dac9a801c922d4d04bef6283890f97753d5f793ab154d856735f9992a656279880c59bc97234ea621c06f4a010994f8a270f34e961dd0b40498dac3c710fbc90d6ee49d7b0962c079b06aa86953042f713fd5e0168095578ac4ca3d8b457771e4ee90e0053bc34892306d14e78469e7b392c046afbd3ac2699d0e750c2286857894920b1e156df111f7f4a42c84c0de25570cded32f8de8adaaf908cc4e34e99fd635e8f4724f85425e8cf05c8ea7e4302afa99a77cbe498b2b4eac0db16d9dc668608ee1c820672fb9211d864e927bb1b84e5cd107cc512a80f4fe054749b421426467702e504499330a7438ac2fdc5cd4e622f7fbfa6750ecc6e622e4539b0bdf940992e8131a229772a967d2816d9da6b62c17808475c710c5f4ca3d31c492ed6c6e88cbda4321b55e600ec9efb77a02dff946333ea50168e3f0a5894067f83b5a46b372445335cc4593e36369212fd43f76ae100bd4382e221029705358ed10cb33b1b137e424d1b4c96412fefffda10ed6a57cae36df1577361ae864596b44bb9cceb4d2706e4b6f8fd163434832611efdf39cc2eea35a690d8e3c9335b62bb27c917b09b1aa2038354248ec5e38423165051153d15096af7b0f9a91b245d4c72731414d9e7bc312e5371e9d1bac5a706d2a544eaceec8b8a958ac1ab8f58b6bb0ef6c4dc63b60488789f687c6c6908bc68bc56af801e2558d5d32f4bac9c4b714a5c82d9e52afa5ef63850478dbf256d872a786d2eb94b6d1970d8836aa0ef1dc11d652c60e13812fb4d0763843ffcd425738cb1ec75e513868f5f34180aad853edda3346e4976f215c5e1e557cf671193fc4ed9068ac463b4fd2e4a21842387c2ef1881e8b8748d5c8e5fe32a564709adf946a092ee42ff5b5641aa6f7602c500c71b91bed0fa03c0a171d18715b3e92d5ea83d85f1a68ac19b52c1808fc113098601925fb0b0d60580d346b46277f910aceb8e0bc88a5fa67c5f94d72199732cadc63a86a9cfb171e9c89d82f34377bb1cdf98b73a477b56d2b0442a1a62d262cd7d0644e06090c60af9a26da0e28f2c7ffcec886280e25fd225bcf1b77bfe8e4702b9eeaffacf85730e38f844a772504586f9831d5b98fa6687fe1188c647d93f25987dc8eff61243070bf0da8502a596bf7ba5cf4c5ffd2dd00f2fa2f4b69696f1e77c023e86c9e54b1f17b0d8b4ef9669f5c596499b744e333582b1e14e8553ab8e0424caf5d58f0a5076f23b3fe523e67bb2625d289b99c6854a287c538eabb31ce446d97ff88923f25927fcf6f1473bf609b8400d7261d7f31f1b19de1e9917e67f96c81447a650349629a420efab4488b36178cf7b640e58afcb5f3363c5207323695e1376e45ec1393a35528d40079f8e5a42d560d43704ffaf2a6c6980f1e964996ef3e4964b1d4ffcb4c5e44e8b4121f420a499cf3a1cc7e2a82f1cb4a04a968cdf8f7398d90279e97b027d1310dca10c3e9c0887eb493a073622acbf26961dced5c11a548aaff86ace4eb8cef16e065f7779e28ceb5273ae6a8afcc751d9842f9d874d215b9e605ed332e197dddf8da6e9cb58fc76225df541f5957b955b31d8e45ad96bdcdb8039e571d5bd46c1794ea30ef0ad9ed0cf7f8261e225f7eec68df5634d76d40578b30cc7c46f84ea7a8f71b08098fa6002a332a65a14749a503decd7cf7f08c2f24751f4a2606bbefeb4c7e77875d847e2917cc3c0982b6f97dfaaf1bb4e43bd69cdea172d07db72fbd128afbfeddf89d9f299ba1fdbee23eda6f64de17cc67d286753472fa16bcc2fe594dda0a8d0edd50441aa34ef73bff1d634318c610e18013e175aff7d4be742301db962e7b6d4be7eb814e584bc759953230bd655f8aef7d1d56d4139ccd029c8659788618af6f19607518b5a55bcd221d64fda7a859087b2f3144df71d4678cde3e13a651a49681be738a31ceb36428dea6d010058edb4be7400ec1507c7d81a226c6cd96ce46d962b05cf52ffc7723c887ba4958ad85ae703c4af093f791a73325ae621acf09c198cdcb6dbe164b82d9a666e8098ec00a97d4cc0b6baff09b53818b72d32b73312f6136afac602354af167bde5340a7d550dd6c6508eb57eec245864bcb3dc7c6086e7ccdda0b3d6c3c7369c3df2edc471115f526c576279a7356e8ed65737eb62ccc33c7114d2df4b35ab21637be33a9afab0c492a988bfb899e3ddd2e5379de129477d03ceddc897148dd1dbd287625d3bfd4999366eed5af5b61e91545e3088918998c621e04a89386b3993941b82ed63da4eda12710c6cc7131a85e9888c07127dde3c80cb213e2ca072495b40c254592bd27edc547e149b73eb4a138cb3a16a89cfab2e6a899e866c67926c9f1bf1824b46a712c1cd8fbb050830538716269682949c3073d936dbf66121f17910a77342d35a048c3c988498ab3a84f5c1356b4360590b65bd8cbf7a693c1f8c28139352083880e444a0a47cf840688fc0e7688d621d0c205da5070b1314a46340dae831178341e1c4a5dc3dcdcf9182e02da304d570955a36f2eb593b10aff9dcc4c467998f5bad023611498ddf6cd88131c3787440ad2c18c36c14287c81ee173fd6a65833fd68ab16ea5f4436f65d8c29ebc32be185dd9e53ccf004353ff6f85b349b518cd3133f4e29ff92a0147f824b56a33fc9357a2ba81ea7e44cb440c8a8616b50d5e9fb60ad125a9c2065a167af4974a6f854fc925ead008d933ba8427e8353c75ab816b7e0a7ea9c27e9751bf615726127a62b95198ddc7013a23fe0d0f0deaa0b39540a59f768f36c4d51363629b560a1115bb104b4fb7c11a36e62122bfd23b475606531a867719e62aa2b112fa291e359a324eeedc669db0aa97f8a34365324b546e5885532ceebcd7e2ac721303dbca47619786990b37aa04177512417b1032d295740fe6512ad98d945999cf543597e65f50c1a337f93782bb265654743cc295cc5ad6dc0259ae4675c291344b086bf15b9fe6f03c45780f6d9b57c9586421299ed335ad17eb96a7f72628a9e87f59f886950e3c6d6e24f12a66f3b11f0bc39ae37aaef8cd2dd2b4f895516f0dfd5f0c388025742759c07b44e099186c23f3af18b416d14a64a1afde98e27aa64b663035c540217fdc650b03e9936b9f943f92a704e0abc68d863973d7dbd3e1649d07a98ac900f934cc555a3d4266c94a28071445f54c5b9205bfbd65e9e247ae4282270c389be9fdbd6d17254089d3876ab5a6eae9c0a820c3f02acdd18cb091499039acd1309e15a5102ffcae26ba989a9294fa45b0d65818f48fbb1964dd1c4369822bc1d0c041bdafb5c8f2d4426c99e8d3f7bb3ac9ecc0b56760c3585ff30b8235dc2cb31e4b6cbc59297d14e15886380b5031c163d34ea325ad1a7bc5b8318ec3ac6f304871614183058fddca54f856bdad6b74f39e49f52604ec40b98e4c962f58ec7a107b543758abf5eb648849ab22f49822c99282f11dd48ab5b5a14aaa20bfa24b2216ba8105f551ce443331c26fcaaafd52ee4177646b8ea69ec26c5fa07f46ed9861001ca4f1d54e24d258a36f6eca9d821dbbc53354a1c6c1a825ceb26a6e24510535f14469c5b889bfb336347ef87c742a2c665dab3351e93a055d3fced550ab6b9cd404511c6d6fc31a0536f7d89e5201d38dd3c61f061311f8b42462c3de75849eb4d6943de42fd0ca28d670655a31e4db4dfbbaa9beb27e845c613f48ca587a56a7c59014d778124f7aab3810c9ea3db2eab66fa2e45294209cc7ae390c449a0d772d6e3a5f1ba9aabe8a4a7dd3442ef9ad104cb3695796e121f2744d85c09d95b0bafa89440dff04ecd6966d25e974162bd1616dc59f29ba084d92595ca7d6484639780163ba0eb2fa1db89aaa39a60b0e522f0dc9410381bde2e58214e629fed8807a1628f92d86950c51313d05f2b4e799ae0c703dd93db59669bdd7f541ec69a6059558c28676ddeebf47c7988e0b731ee679f76227efd111030d8bfbec7bacb56ac32479bf1da0328dd97eacce3b270907a96b293be400aa46999278c9a011a22e552ce2a4dcf999ca9d9c7bb7245f714082d0cfdaf7bc071292988209e6579e6f28b6654e3e3a726cfe26bb72f4fe48744acae8352b65f2ebaaf2bb420420cf23715559be9c71dba78f450540357c27c0bf762069c531dff8c151759d0868278100647ee4f01a1ff404ceaf0a078c92dd3e0ce3140bf7ad33f469ab0ba97f1956f646516a6551a05fb8d15507e494ab1598aded4058cecff394e914e8a291b77ddc524321da124d392ebc00b44781a5a4d1ee3c4423ff25df85355160671df896cdb04e13c4533e7c9af3ba524434763c1b85b414e2cbc97baa78429c9107026323c668eed2d973ebd05f101c9fa89897e7bbf3a7e368cf382b326a16fb08efb3fc0dcb756264b0c2f15ffd77477b435571ab16b8f9636bc8889b0e41da6e6d1f3db8c3a6c8c3cd09f0a25f5000255ea6ee5b47bd554131c23ec781f02ace1d429514b865dd94d71264a2af6fcdc7be07a8d56c017d601a0f810bad30dfafcc3fcdf5d70badf513accc2add68caa742d32cb6c2fdd28621516443c227d1069dc576992452b34c602ede2feb527617fc5f881c55b608ce840a4e03c14051fd99f857355e780a84cac0db71f63b840203ad5f4d2fc7dad943737d3e20a7b6bf8d2df712e1e64714adc0789904143ccad8d256bf04f6bde5b5d7d15d43363cb2792e90e6795912ec051dcb24c2aba172424902c2ba1aac151ef85185b179f1abf694eca0ff36e165da4f9dbbdcbc53700e5af7c2a8a576087834b6f2c13e67fbb570fa0248382742be8c67e53326897df5cda04a912c84a27e48e27457a251e8992dcd1e14d480ae3d29dcf56af2d8b8534e1c621cc8a42c21ee389c2b0678983e822e9741f592c6d24735995a6939f5112977390079b881099e1b43db80037504fb49f57ef8e4d745e3038f3dd9c9a8a0d734e7cea723577eaf992755f9e41dfd2420c45d9894ab4565a52e21b9f307ad948e6920b9265d661e52a3647c8ff48fcff33c0780450bfb0ffd661564551ec0b5ffae51b24a7411cbd51ded64d5fa3c50f93f5b3458aa0e5a13a39a32b567f47ba7c91f6b387ba2498950ec257d6638f28eaa07758feaa2b5e723c406849983abf5c88b71fce8bbbc4bf786e5717944ee6b2dde10d690c369572fc9bc3b388ece0dee35283be926dafc2b4d74590a5cf3d4a5168c65a3441a7332accef0ea7c2a86ad448c1d5fd5ca5bee03c298c1963389eb5176e71d94ed2f1f3d9e92700868d97250fbc0d608c4b6651b2ac8d496a76c389280898c6ef115daff0658b56dd4d21a931e1dba6235b8ee50e3415f136b9bb73b52f6e6a560804e60af0ed22c007a80c29ccc9849824c09d91d00e7c47d152202a6068c2ef98a58ebe1cccd8e5a289fe41173e694d94e08c01aa70b50c187e1b7955d7f4cd2286f26c42cb92b22a732439411b73b4a92a22bc3cdae7f37046d397a63cb7db3c286261b156b22dc4d74314ed02ef5059cd23cc877964dd2eeaa3b41b25c7881470d1a974533d2be5d5e1b4f7bd287ae54ffccecd03878ea90e4818f27c6fbc0cc21c7130ed2d1b136481d82330c0904b0031bd7fc72e5c5c3a96d4ce16660b2870cc599d54f9ecfa0fb1aac10b2d207ae2f44700316e617d98ed86e7c5be92ba4f85540eae7667861790d3fa4d5c119c5cf7dc541fd8aca7c0b6d8ee4006dbff4a68840ddfdc2908d0b76d117464dac39a0ec34f4e53d84bd3d6ded2cbda15d9e814db363e4e10b116ad94744333350892c7b536b1235d06ad1d463f0f78bb96f9177e866d7d478bb509631350f3fa98ea15adfeaf6fd806ba76103e4809ba47c596a0b2efdd1bca5cb908c25aac8c6fc0d970bef56ecac8164efae1844a403540ab11eef72ecfe875379eedb7c0c8ae66cd47e27bec5af035c10f26d4307758aca3e733d9afa9b1d2586a9c02d2e2bed5c907fdf6844b2aae7df4c44b5235d0e43dc2e9a4cacb2bf6cf7064b6b7acd17e6822dedfca261230fa9f401bc0442ecaf0958e3d7d4e988a883cdbe720027cf3fd5ae3e7888a77aae5d865caad16f372e4e35c8e7ef9af4dae4978b35d45e90babbe39016e1713830e841755b8b968cd97446af1c12a037131078c89a6e78e1acb2c40da8b548067507e24935e3b00c2daa5e78ec00bcfbd6f250faae6716cd574aeacef270ef19b3a466d7726caa46526410a72e47d77d2d5b2aaf100f5326ef0b8866b1b93b5872438ba3cf4b3da4e72700ed738d1f0d0687f3a5616f0f69eb8d0b255107d737aa06224e0685efd8749cac9c680e897866f040456d18ce1a7e847eebe2c9c38273c230b80035ab7c02a2b71c5dc0d3ec9fe5992b351653e86c5d5aa43709609d6bc07ebb33231662356b04a2cec7e2fe4c52bac21c34169fe336aac347d47dc8406b0ea02c355302ba9f04b55a22a0655bbef302b40c4a01c47f8659695709f3d16811e348acba9dbe8c84ff8156e885994531487124d5492d4e05471d4c9b073a5fbed16820ce4c7a4f0dc8d20a09c44efa10bb2e3d065c73b1d5820087019edda33a9af0f8fc91cb025aad11251d01e4b48b6529925508d88adb8431b5f839d85fee7fa25378165503a0b92262c7dcb663b1a899fcb945d55197655607659594734c365cabf3faf883c02cf01c8c06df433f1b2e241a09b51b8194c3e9d01f3800d8020c54908646697f88887025d5ff9dc1ce3c8c6f315500497ed0082cc3aaf9993ae37cea1b5b695ea060013f1680c995500fd6fdffd72a404d1b08c80d0982f7964182af53f0924420bb7cce33382b7fc74a4a12d1113384430bb929ec3dde9d5a776a338acf1feab609a68024605e98fbfa7774501cc4c3f5d21ec1fb30ebfc520269e0eef4568ab69b64625c7ea49c848a3a83eb2ed8b38b188f50acd72cd4584b30c1d167942dab9fd4dc1e22fb99f6de7ad59bdd63ce8d0a23b501585c6f2458d3b557a5e912b8d4f33b184796577ca4b5099c17e4d1c136a1a6222bda01331df79ce97802bac7d00db124c69c8ae71ef4e614fa54e59c523d06999e62547ba1cb6ec6e4160f4b40d507a15fe759d96d4988fd9d1d8d5587670f6cc0540e205793ab3a18943a1df410229f6e3dc33ae6200eceb531d038b89ff85e0a99f3deac0527c186d3e090c8650b1b7f5b22e524af9731c4951d62d2b3a0c34109d77c77d4aa62cfc58f1706bb1ce4f63fcf5f9cd8c5c980f9b8845d247abfc5e087d12aeee3a8f17fcd089e8b68d66858d8dd3c116e83765bd3a9a5f1230f42efd828faffc0ea5f2a2c9f4990d59887a50ed0864355fdccbef2873790644434659c18f0d85514fa980564c0459eed1d851e5fdebfe49fa41814ca4ec3ba50fa4a2d7ea2f53dfdb9086c77568048fa61f873626076d752731d50281c598d7d5ca3171ebc12f58823c8a21a4f4b305b3eb232366cfcc92113b916b3514535c722ce968d7846b4ac40075c842e0e85457a416d697947d7b3e0c8cbd0ba2a94f884a325522301501beeddea942decbeb63240b8f845be6b7e62290f99a93c1e753b39cb3eeeb8c1f2ca05f1b5f794ca3a11b448b4a55ea681e874f9684b90314bc3bf38619e3fcdd07ac4572ad987e7d4661b9634ca05cc1e61d4b15ed17af60b5267ec3021447521cfa9b0b8efe9c1dc86d4c3275642a788c40c1debdfd67190195906d482699cd3faacc3fef96195268d1237b999b4439d4fc960dbe517c07692d8b839d279ac3f7a91f5043ca96298ffbbdfe41d528ff0ffc906d7dbb2e41e7c8abab13dc2379f20d449baaa18b6b7bc43b89b69239aeb694c7369312908d4a2d018210e89a353726da4debf8ecf42e25ffe0fb1d5f39e29def4b2881b430c65f2aeb18e25de890081ceaa2ecc4258c5901cfd3042928cdb545b1f43a50d21acfd7cd1caba016f53388bb814c031837519dc0b1828074c22341f74a0317bd09c2f16e9baa5066da44457cb47d8627caf1d30fcdbc2a1c5ddf67a02bc4089f6e7282cbdbf1e4a56de5a58974071e857fec4b0c1926a02bc50c84377981a15c72d9645fdf412f9c8fa4dc666c70ee8dd323fb36eecd951973d41b66f3a0d4a1e6b89feff24aada4f9989cbc7f666d2a83d5392d1075f0896562a81c1acefb88468ae64774316743d5bae1e1f83a3a1541bae47253d91245ecf137513acc7062f462d9d0101dac3d5cc76096c135eb4859947823bb1ca78f74c9e2876c173b758ecdc15208918646929653e457a5a90e300016bb2e2360f143e1d16fd11894cb2fb98742dbdcfd21f84a32cc6566179f24b8c72388b507dd7903114b6f9b7da9b3418653f27ad6a51b5b89f8bc034c286a242df51ba24903b4bd1641a0bae8e8ff7cfc46fa339dc619382a8b3777fd67c8be47c3ac011115beb551f915702c5e8f8c66ace7ff426ae3c34c84c44cc902edba6cdb83b17a2e907628414e0a8ab00f552a9f119a975e823384d8d723a931be70150bbf9226487ca17e23be0c4ac3bdd4125a777a8140bbef8019911c0c20c1a3df2580209acb71d3433ee35bde16ae972ef1352b96af692bef5b6b38dfb492a06fc740c2d700d0ad1e111101431d05c4c84dbb247cc8aa9da41f46ef0db4f0d6fd2ce8012b9bb5a56eeb7f4e563ec0440f329c49ad3fcb020dca270288b2c880fb82c2604e98490eed634b74789eda19b45540afb802a5e30bd10729661a3911eafec84164017ddb7b80d8122aad7fd748ce37ec3f8d3a370df83ad4a529e7517bcde30c9166469573e1ea2a3981e256c3cc08e12754b8ddb76a34348d1492ebcb75875fb4a0ea21909bb9df84500355e6eb6885201b4ece4a3ca4686528955f3f92b8047bd43c68fc3311509222a54261d3ca726991efb3a2ed3af21f0c1ac2446d823b65ee1c328a8a6bfc55fceeeba594ff268934ce2c2b9c85f5f12cb88d1db6b4417adbae01003bf0f1bd309fbfbf609017b63775fec0e4424a46981c2a305b25fb58e7a11df880f15d0fafc2b0d5c7039301a0a2a1e970aa45248fe79ec4ab2eb247caa142b15dda38d025818cff8fd61b6f911fff74f7eeecbc14ca507d6c8837468fc38c7e43d1d2d628ade78685f63c2f8ca6c0a46a4714be8a014552550e26021e041f6efe28845ba9f30f2af6d44ac03a60440d794fa355ec49d6bab14ddb26efb851782032676e689a03b7cf77af7d0c480351f42623262056e6744cc38f171a3bf5f005d89e5be1a786245b8ea6d5a811abebc5b7e7254df7baa4b77e64d68166f92c5e894c504753e4848b5c02e8911565b7f4b94015d86c3df26ad6f9eab1d344c6ed22193e488aa460aee2f138cc79016e163f0738f9ba26d0cc20cadcc6179593213ee8f013fa4588af9d5286bc154b4b1ec68858f5ec90e9c7da4bf99aae53b43a71bfc33df354a897d05b9bb46ecba9989936dd00a533862a5531143023db6a509c24655d552d4c1761831bcb1f52fb7f4ae66b7c3c6404977aa419973c52ddb2ca5c1f0870a439402029aa5cf7f94c8c5f3f74e0059d85fa16ddf4bbbfac6c253e54046c14c86fdaaba49c98c99006f997bec2f2a82c05647b5d72a85d16f7a40886aa9cb57d7e88caf8ef8eff35028e2aa5588fedd21caafd05daea308d1446fd8744cd0766f5d89b0cfd98b0dca5982978f1977c45e5988057c07bf595bee1cfde1b9c6c22f6432340a4f82eb040cb270e7a1fbe1a226e576312b1dd7ff6de4345d994942c90ab977f64f0f794d01d588d48a034a1d33ae5830ccb0a30e62164c9a9f625db6e00f115a350495457651a41e611d5de8eaa6f108eb2672a4cd892f1dc742ce78200080b798d9d57ce7a00bb42b0e27555a0c0a46f742680721f0686985578870c91cf6665bee2db74c5206080b990a750a798c92251ef494a8d9f93380d2caa00aaa4d7209150dec9213ba9854d9f94184f8b1f38b308288aa267176fe14f8ea0b46808c112e1545b2c2b07e2a8fad7e2d6cabffe3abdeeae79c4855bf97417d0dea6f30826df53fb8bdaa7e070faaaa5251edd8ea8bf0d567ab7fd5bf49ea93e06beed54f81fa766ce3def4b5838dc361332a285fb45019a7886ab79a1c31ade620f69d4b9e9c737abb756150d59d3455385555551c8eea890a296ace59bd6dd234c772ab6faa5453585bc5aae14200a5c695206f9448bcecc86aba9471994aca6babaaaa6b585a6cfd3f39220b3dfd19346c50b177b67efd2174f0a0ff438811686cad9f045f835e7f0a4c245da1febb74ec72dafab675eef55f225a7d6d7fda0216a69c8f58b2ec9cf3dd38dc95283b3593c66d8e8ded0bace12463290e9710e20ff877b8813d0f6e489498a638dced86cc92b452c4ca9cadff47eb0e76201db9a6dc8839a2238acf8d44d08d0bced61199d5a355e3d6b79ba6a23267e7ffc9c72ac89d8f5c4e5f6831ed492303f7b7db8d4a8e0b36f8064775adcdb6d96c4f64fb9eed33d85e83ed3720d9b6ffc0570adbf61d7cbdbded3dd8de01bea66ffb106c6f1c0beedbed96d64ec8606723991f3bff4ece3e9b89c43e9488a1e7cbf625471663c815212634e150f303fecdb181bdbca4328ad1c63133b6ce3963508d61beb6d628b168b399a5903145cb4d500c4b5f1c3a6b6badb5988c9ddfcc59625f3b6f71aada3266e727ca36602fbde59cf305fbd215c6648b16195bff8fd65aaeb67e0b3d6d6d49275b6781b1f0b2d9ac310b0e1c2e37d648e5682201938f3372d02c2d817243df8a3bdb6c07304ff8d7095ad76c5576b6d96cf9cbc7d6595f6270e7d2c600e312214a5b8e5269ae0dad6d4d47cea48ee4716b2a6033529dcb82a4daf6d565a74c3f39e733c29dd39b17716b2fb02fa800984979bdc16415650c95af304b146c4bb63e83666a67342748d929bbc250565695e66999541b51a4c593125fba52f420d6b845d939a7699a33595400c8c2d43004a9394d73dcefe5aecab448d3742ce835e6a5568d1dcb04d9f92dd832cb9daa326960baf8549929dbf943c8cf01b9f377f070a6cbce9f810fbeda2a321d3b3f085f85c694bc948979d3e345d98d4b63678c1b0daac8f4d8baa7ca8c18335bbfa9b5ba75d598a5ad89d08c21e5b4ad2a4c982a31426a3f39a2b7d0e3b2e06ac61713c4c0d0d05205264b6e28cb85cd56a59452e5a5c7d65daabe90d03022aa0c9712736698b0fcfa01f58c0dac0da96578f0ceb39c858c704273e5e518230913af1fb0b6953470313393460693a5968c206bd35a6bdda569e72e533258b50b1caea58f99a4dbad2c2cebca51df6e719048b828c2c68a6cc90ff83136b0773bdb39df6ec833aa2c2b5106c02044e68dcda635175617279b9a855c62a5b5e621bb61b3e550d3a25835ab4a15952cae176b0fe83addcea576d2369b16d28a941d1e48d9a261ca0c2e5953d8646d59e11aaa59548658d15a6b1f1819255027aac881b181bd9bd6faa6d3348b4b2ceb38844b0945364beb0786242e69fbad7bba5b1698ad83704144dcdb781dd4343067137aa0deb6a1c7f180433ceb3d1cef857840ade3016b39deed66420dad2a1394164c54e07154e544ece864000d1812400607d4141439a298ae3035630bfa91a6555160b6c6c66530184c310209171113ca1270cebe5e00516d6db3b131612c79c128db3906164f8c2b61328864d0a0cd6cad8f2d8e2e96b48e2ebc84bd70d24568838bf0ec51fc94532a9d7c12b961e14804cad65bc7222b287c2da7e939c48a9e5322c60b374ada4869715dfc60790d0972c28d9030baa6cd8274790911727441ceb99673ce393f6dd9ba2b08920b20d0856a99e6aa0491ad16b92a1c5a6b7d7dc009fb91c5821f665e40a46879f2a1416b3d228518272c96b47101e5c80ff82c36b0f763b77ef36c6badb5e632c623cace5b7af4e8e24402cc490b903d3aa901f3216500c79e28417634b9808102d4ce39eba82265b8b4f5efe8e350cdd651def8256a0cd9171f4556f85c6da6f58ddcf4b4b332e90038acc2e40072e598032d8b97591914249668543953b1934522e7cc23cdd6578e36a8aedc90a1c108a9b329ca293425bc86dc1276a0766642913c3271b16dfdb59f1cd187516192f103ce092654dd249f2f3b2f0db7d6f6b844a5831c867cc575d69380704c0e2250b0c8e2dc143dd976aca17596733e917572ce64c19dcfe57996a6471a6954cea50d0bb5355a295ac8203cbc564881a32f0a3d268d8e161a746061b154c3a5393b6ae476ce369bcd4cd4ed6d369bed76bb71dcf9cd6c9b90e470a0d8f9897070d93907145886303dcaca74f161021212277ec8c8bc6a4b6db69ce399c678d990d2c046992e17045661a89448ad39e1c684adcc94ed53deb9b4edce339b0d8d4ac3894c8d151cd498422eb5d02dfd5897c476073b33cdd8d98ad1f6243554baa1648854c2476b5d26666bdbaba92d458bbede07ea07a2449d9b90474dc457bba994ae768e3243c50cae9d9f28e591f0b97a2cc9d6aa366118b5c4b8b1f3ef64aa186e76eed9d99a50ca08a344895adb313043e516242d344c5c24adb5d63c6d7d1c401966c206545765ae6450da295b5fc72652bade3cb9c10a582bd2b6aa311c61e921c72979f6236bce4d4dadb8f40e2da244ad75ce696a4cc3b55555cd75204e981671c0bec6d2c8c15d75ed9cdaf2063796b9013b971d68d9f935645555696469a1cc82c683000095a96ad651e52583adf5ad8cc679762ecfe569769ed9b2ba4c6cad35eab6e7d1560fd52a143bdb6c7aa8d3f48629d95aab5ec0cc2441d252a3a6478e937772cea92d2bd53e4d89780a2575753fddba9f76f97a55de7dad8b5561481c6cad5120a063093b361010d0f7808080deb2f120e9c8ceff9393cc76d660e73ce2a7359027a94b638eb050f3254ca665e11794b8438b6a9aa66d9d828a03d51e756d47e187cd36f4606b14625bd7747aa15c2899acb8c2d5e505c72c8ba16a556ff09c4f90ed344db5de5a6ba37eebbe4b0c06832bb43e03646bad356ab31d91a6b24cd47e722d767ea22309af9ddf42afc7ce9f4189323b7f013478b041c6ceff413e9af0b2f394e309223b7f87e4df65bacc6aee7b3bdbae649bad05112f172484b6d6baca45d3d64fe4ab00b6d66831cd7927e732346cefb4f59bfa350b385bff4e2d45cfa0bd9aaa69ca226821d5b148d257d1629a5ad9203f870f8440e0c0f912b628924fc86976e415c3ad07b0b5bebba4183572ac78898981963fc83993a9d8594dd507a228140f2dbea8ddbf5fa5226d6bad514f62a23dba49cae4d692193433e2a7f37193fb6a8e34bbcca3af437fbe79651abf98c4b37dbe39c4be112cc8f818eb9212d345e5770afd79b7edcfc74b5f757f8e2dedf3b1d257fbc60700393dc658992dd972e4773e469e8f8fe763295f737fe2255f83fe7cace42b857d3e1676d9e7fbd257eb669f2350c8c9615c725ab1bcf13bdf95fe81033c7c0871eeec13f7e75fa5331d3ed9a3bb8ba7adeada27cf3eff8ef90af4e75fb2f3af99af67e77bd01e25fd6081852bce0c252e7e679b7dbe17a57cd5d9e76bec1ba19424086589834caae9671644e769b86f6fde6e4343424240d46cdb856db3e974b9dc8f355f05240695a02022f6e9a10f2f5b736dfd83b8f5eff8aa61e7ecb465a36fa23e866cf4777c35da40404e4ad60a1a873b97554e2a2cc82a543bb6ef31036b0ffcdd06f628e4ac3f4759b1338aa225385db27d5e15216e5055a4cb952a2348c2f67986ea0d4c616243868c99211bab052c0a8f36594d5353d6006d6001368ca03d80ce0927c263a3522e9cca1243ce98d841e6f503be9a0deca1d9aa5f289aab862077bef2f3da57dbfef95a97fd53db3f3fdffbf979a29f27562100920eaa909880c1cee6cf2562dfb90c4a6457320bd8f6ff11fb61b2aba9656afd346dff1f16bedadeff47f8b3648f84b6ff4f10fb4ce44f120abad09eb89060f020fbf9edb2fd6f48ecb35f5d9ed84853034b9ad8cfff96f4f57251629ffd42a3452c8e0a2048c6c67cbd5b9648335fd3b3b45b945d4d24486e52dbff46e446bc15ed916efbdf86d867168bb7a7b125f6592c326441122c726449faf92d887d23564469a932c5751585e3e77f4bf2f56a112add967cf5bf355100b3abc9c4b445014921698f72db9f8211fbcc2190c23169c957fbe4ab25425128426d7f0a52befaa0d9d5443291d2c88294d867268d6d7fdb10fb46d4502aa5acf8f266cd929fbfedc9d71bb6fd6d44ecb36b905ca6cc9a989812f3f3b7157db519b1ef0226809181d2424c9bacdf4d22bb92befadbc46c4c76c565cad89ab6bf8d854d685bb24740dbdf16c43ebc04da92aaaa946dd950610645959f7fede8ebfddafe3524f659af1c56e4809942030bc6cfbf96f4f57a6dff9a12fb7a94806c2142e68b6ccccfbf36e6ebcdb22c62765624ad1665576cc54a4d6afbd788d488b5a23dc26dffda10fb7052897d56ac8d10305792a6cc40fdfc7dc67cf539f3d526f96a854ab52521dbbfd6e40366571c15e523b6fd7db67c903e497bf4b3b1f1b8fd7d82d867bb84e9f104489a3554543f7f9f245f2f96edefb3e4ab7df2d512a17c8a3ab6bf8f94af2a9a5df18e1d6964cb337b74dbf8c9ad1c30634e7cd0409344e6e7dff3e4ebbdb2fd7b88d857c14a8ed41b17295c287ffe3d455f7b8cd8378247d41c1c348c6cc959f1f3ef39fa7a91c8aea47f8f580f935d7109b8849ea6eddfc3a2474861fbf704b10f0b714fd231e9ab1df3d52ecdceb2c4d8fe3c693c517675356a78a4b63f0f111e224fd11ed9b6fb19cfd3f6df51621f05b69c52bc28333105e477b9b6ffce99150b43f5050c581024623fff2a42259e255fad310b8abdb3fd77c0ecea60603b62db7f676b07b9e3bf63c43e5702778edb7f27887d1f1879149320c93833e4e7bf93e4eba5b2fd7784d83701123eb0b89480b0d8f2f3df59f2f56e6dff9d21f6ed145733a62051630cf2f3df79f2f54e2142ed14d1b6ff8e94af3c6876752aaa34b2e5993df25187d867cdc6bec4d0dcd0f811f5f3579f7cbd52b6bf5af4d51e7db5c8aea4affeaa98ca64570f12446ddafe2a0b55a82ed9a39eed443569fbeb18b1afc253d70f3428a82e4d7efe3a475fafd6f6d7492ab1cfc2d11a3bc1aa2a98a2c6cf5f67ccd77b5c9a9df9eaaf93e66b945d9d070f1da9edaf434487a853b4473cdb5fa7c97de7d23f1df3d52609ad6c7f1d25f7d57efe29985dfd86df48c5b67fba95faa752ee4397d2aba4a5272294ed9f42b98fc2cf5fa3d9d5911c49a76d7f4de62bd0fbeba53ed34aecf324e49692293f90524861f3f3cfda5e74258652132e35ba4ef8f9eba2af378a5d1aa364d9428544096f7efefae8ebc54276f9aab7bf16f395c9aeb74c19165ae83eab7397cba411258841710356e6cd9c1d3f7ff4e8ebbdc2c053d5900a86931a4d7efe68d2d76bb5fd5125f659325c4d3f908a802d71faf9ad5a9a9d15d3ee972ffbfa9f31d89ce0f2149566ccd74bb53d023dd268512951a4eac6cfff3cf3f506b16fc414942d3496aed8b092e477a10895967cf5479bd021eae48f12418968d11ea5dbff04b3ebd5a2e514dbfee7d6893c93f648ca7da7d28dae92969e4ea291ed7f42b94fe7e79fd1ec7aa9a8d2b67ff6cfcbec9f95d8778f44ec3b89cc3813638c0a96e1cfef93ed16d995fcb19dc9ae37c80d92330b5f7fde3fe7257b745e223169bb0abe70c8411b621943fcf99ddafe6652897d23808c95e0fa51b544e6c9cfdf1cf3f54a2d9bcc7cd5396bdaaeb3fdcd28bb5e181786d4f637899866d11ee5ed4be65892af56a8642ea9d84e61fb6330bb9ec0f68078cb579df7c7487f9cb44746ecbb410772f9f2862a0ac5982c3fbf4eb68bc841028b96e254d59c9f5f13b63f1e629f8d7363868ab22461694b7e7ea3887abb6b34bb76c04b1a99af3dcb337b84b7bf2bb12f04f61130d824c17281e24611b39fbf3ff97a8bd87781375c66a83163c411f6f3f7a2afb7c9881e5e53a2a84a687de1faf9fbd1d7cb04d995147326bb3ec06ab170a13b07f72085b845bc518c81e5e777c9f6bf49bb34f3bf69be46d97500b6777f00fbfecefb5fa20f3f60df881c41946638515af230fe2ed4f62761440f2c5c4436675a92557eae44a8e4ab59b67dfb5b0cfbbe05ec8ac1f6ee7b2d898d6e98af2f5d4c18c3defc3cc916b18398648e8d1e4e511709853528906e82c07162f5bbc4ed462c63e7f6d7421c4ff8e6cb9c186f9248d43852e32d65e0b2d6e4d83adc106e68a76c3205e54c56da8fdf35824363244ad132cad6e95eabd1b175bf93a506ced6e52e60e64b9428655e748152e4a70a9658d67207063515068dac3426b66e4493a4a9234f6be6389570896c60ee6b4b1c0ee759655b5ba771b61e1c0e37e684c3a1f1b1756feab2d0c4d93aae1a0e87c3e17470382c24a2c709090909111191d93a32a4adfb1f5d161997adcb7a1c0e870b010bd943cd172b5e8cfc80bf7177c806f6360ec5e1deba692257e9a1d50087c3d9233c3474e6cad6e1703b381c0e6764e370389c3e43dc3a9dae4823c5d999e8f313e93e7f2f9bc841a1e8f387d02167329d0a9f3f05162409efd21d66edacb3f37ffe4b64f7f96fd178bcc8373b07edccfbfc57ec86b9637799ff9e79506a67ddce177c7e6791873ebf2fe54fe1620f0d0d0d55a5b0da434355494c7be82fb8e082aa1356b6909090d0d7706ca1ff114291660b3d91affa793c9e09377bb7dbfd5799206e0b2cb0e077850a3c0d3593448b8dc3e17024a436ee7f709f2b51c2c63d11ae84978d7b0bbe22a057545414246e9d4ea7fb9ad9d6fd8fee7348505bf7443a9dce8f888828eb6016245f5a53615b29c684f06421abaa215dce43391311f1803a9d4e67d4e95e48287862e370b85c54eb8d2161c28e303368627ec0bf4136b087d3e1281a7a8d129fd47e9748a79343b6716fe2a8e64c6ddc71799ae572462e4e3b77dbb95c0ef7b99c71cb09185c4964e370b9b3887de7f22cee32d9ea5ec5e970b8394667680ea72b52d9b95cee760e75e750e8732e8fc1c8bdaacbe97432865be84d21211d0f78b790ee9aa14b9072424257b6ae0a4f95219dd0ee3c3b974242a69182d08503c8c15af305864978e6e9d485097d8e27242414438606399d90d0ee829b2566258479d9d27506644899cbfda8e961be7ae86b857d7f68088672eb74ba9c6e0c0a1c4b51925cc46cf991e6c8e0e85ee8559d904e48570543ca42fa5738ccbd033c7c0891faec344dd3f40be02b859dbe1efe10afcac6969dcbe550a2108f49cece6f661c719fc1dc6391c83ab2b0ba826cf2f1933399939d73b95c4e0d917ddf5c73b91d4acc39e79cae19bf98c1c008e6c54eff27775bdefccb9dcbe5d23349a15c2a24b405cbcebde96b91cea95996966c4c2033f3c529cd39e75ef76a4e97fb5b8e779e1571bc072485396e694274cb48e4be17724e73ce7d8ee2b4330e97f3c964ce4ed3d7beee7c4dc74eff27cd6a6266a71bec34c5f574c9e1ae4eb74389699acb31c1b271fae62ea468d0a28e8712736ee36a1b8723fa1c8e0724cae5dace4ca680769ade72b10cb6ea22a68f1b16b7ae1d956c6d1c0e770b0a8aa202cd0e0a0a0afaa0270afa22d4cebe9df3d2b8d334282f611f4ac4a5699aa66642647c25877845fd80bfd31e1bd8db69fa1fa4699a3e4af41e5ac4e17868b1cd2d4d8382545425e1da019f61f7b2756b79efbd329637e2bca850b5be5a8b73066c64dfde6c7b8f79396c84d6b051bea635dfc47805d7f39573dbd7eedb809c2038c2dc888251e58589f33ccf145d748e0c150a375f29a850a89d6719248c51f4c032f4c3c7169b2c2396091714c8809da892c568cb8a0c193056288f646f91d58c61ec6c9a182335ed930a490c06245490e062a5c4910ef6f9194a8c6131e104cb0917461d271c2ccb5a28aaac58d3e2881b6791cf5ccb790ccecefa490df8fbdeff795ffdbf7a73f67906b3ec33035b4586505466728459719ae1f1e6ef9ec639372ee8a439bf97fec5a64e793def6913cf213a9590c06fca99aadaf1641ca5c93eff2db8cffeca76462fa4195fb14051143d359aa23aa8faa6fa36e5d91f8e7304400d8dd219d27291603a12c6630c128dab50ef99258fbe85c7bc13d55ebcb7f57cd9131445f51bd39e045046eccb93235a2b5ef040fb01df4bd8c01e8a6ba6355ff3ce536b1e10456b3e288a7ee67dcf028afec9437716bc77f27abcbfffd8777ff71ae1946d7cb431b65e6937c38534d55a00ee04f71db3c28a14343f5b80d3f4d99d6d7f8c2e7820d1b6faf369f189b1c5d671cf4efa3ac92bb6d50e6af7f2802082857dea1feff98ef65e0da8a3e33b1d802002057cf89c888c3ac6d7e61e6b3500dae3461f45d1021460a3ae2ecf57cdb2bb816773b9f3d024bb1be4f773971fdda9657783fcaadd6adef9692e5d4707eb64dd9f3b7f8c3d608c8ed898833367dcb3f3aae5511fbbfb0ab67e142842c5dd003ffae70e5b1e1086fcaf705fe3be497783d383f7fcf1ee547137381f25418fb842ef9da8c6eaab403bada477d0d74bbefafcb8bbbb3b0f68db69e1f0cce7815aa8e4bd7ba5ac06da47c3d6bb1fefd572d48068124d6a5dab01f140a061bbcdc7c6b3f178369e8d67b3fde501c1e63c218cd8ee1a7e45d04751a48da7017a4bedfba78e1ad130e7bd9b236744faa057280bf4882609bd771fefcee56996163c954be8933d3237061b1c75f2b0d13f77d8464d471b87e7f9e7ab44d848f33078753704d64498db45e8ed0b6f794000c0a34da81389da851f81b981e8d205b4c957fc253087a8d3beefe6bef097a701175e04f6c2a749d4cc1e99fb3edac61e4007ed06f7ef081c4a28685c69c185a2ea97b42f069ac41b0b0f44c9f64597ae7bb5835a08decbe789d4ed42f05ece196ff0ccd3fd061741f701abdc27cf03ba377a55b733fa0b76465bb53c0d307add9f3bdddf6e7fc10e78f70556fbf6db1e0025da0deedf8005d8b7cfc06fafc1d7f36f1eecdb6fb04719fced897cddfdedf7ed2df8faf337606fdf803fbedbdffef6da579ebf3d9aa4c04389578835e09dbcdfe0b5dfe018ff799e0feced0c5b67c0bd5eca807b0e5bc7825943936812fb4c1b2f7d7409dffc3e3eaf5e5ebe353cf4e70ea7854b4db5a1076ae19056b2b0e4ab05eaf044c8b0877840c0f80462fe690e0109a0e8ef4fd16e77778f1e6ef0d782bf9fe1512286bf185ecc57023c07c93d80b73c200ce037b88a8f1a4e6c931bf33c707eee519b3c77b95c729f8f77c01df0e2eff5b494af41aff33dc01ad0e723dcab3ca086f386d007b550fdd9dd1d04b4440168096df235e8efa3435f6fd00f50efe7b45133ffe7afce6f70ffd959eff59ccf83db59ab810e5e6d21d6b0cf2d9567bdc7c1e31d50040fb67e1d54398654c37f86f1f5e481c0035469812270f02aaaa309700ee0fc0bc47c9467051efc8a605e069e06ef9defbb9ddd1bec2cd869ef9d2f805d0d1b9dafc1eeb1d1f9b55d08de3b3f839d07abc1f945bc2fc03e7b435d157819bc77be6e07b4caed7fc1ceeedbaef701d8015d6807d45bfb3e86dd084c606e6703d1a4850dd44360ce6807aca004a1c7d350c385d917761fe86d00f03c80c19f69befa3cca62df244b8224d434f97284c6ef7a0a75c76aef9d28062f426f630c7816764c392133965b8e04e50441b1b5aed572b9ffe1897d7e550eb17d9e4339257aa4f0e2c2cdef22b9d059e11455a4196245871913178c61725020866c4b1397179314252e9cb0b4cfb750c5a3c671cb846114125945243d2376006152b606c6d79511a9f79fcbf957edd672beda8e5aa0d4f659e3849a2a5658644dbf33e85301ccae27185805b1ed5f61cbd7a2f7af80ac90b44716ccf6af60c43e2d746085e3f6af10c43e23272e2724c93753b27efe15927cad20c4be5de2461430e3f244d4cfbfc292af57cef6af30c43e1141ac4851dda0b285c9cfbfc293af370e11aa42b16afb5790f23545b3eb79e50a59d1b2e8ccbf48897d3a38b6fd8b86d887022559c8d24a484963f2f32f7af2f5a66dff2222f6d9b3316326a4b1ba1a92fcf917157dbd70b67f9111fb46a0205316f5244c8aa61e3fffa2a3aff7046457726afb17891531d9f59c3265df0716356dff221645c2a2257fa234f7e921b0c8c4f62732621f04e0d058b35c73e24dd6cf9fe8e8eb45dbfe4448ecb355b86851b16122a9889c9f3f51d25722242e3d6a0c299282c7cf9f68ccd7fb66c9c4cc7de8cf9f28caae2712244452db9f88081191a8688fac95ed4f34c4beb308247adafe434aecb3cb2029ba7074c951e6c4cf7f68ccd7eb66fb0f2db12f03c62d66826e962d68fcfc87ce7cbd6db63f5110fb503859963ce9419492faf91325f97acd844a444b44b63f51d310985d4f2626b1ed3fb435841c4ada2323f69dc3e171fb0f05b1cf8261f1f1e684651334573fffa1245f2f9bed3f24c4be1145ce0859ca61a1640aede73fb4e4eb5db3fd8786d837220619374d6678c528e1cbcf7fe8c9d7ab86083554f4e2b1fd87a484d0ec7ac6386308a56d7f2116673ca6c084c6a99fbfd093af4244ecdb50a21827ca1c31595a7efe42455f6f9aed2f64c43edba5ca0f206b6a44bd01f2f3173afa7acbb6bf1032c6f617eaf2b5b6fd8592bedaaa1b2db6bf9098afb6ed2fa4f4357d7fa1304264cb337b74011a1a0b21a1d0923de26d7fa120f69dc1a050d2f6d71d75c9b1e58ab315ba28bb662f5e7452db5f474447d415edd16efbeb86d897c7c6744f6367beda245fad5049b7e48562fbeb9a726076cd5a5a39b1ed9fdbca2173497bf43b2391c7ed9f4b5af2d53ef96a8950b9a25789ed9f93f215a3d93523419246b63cb347166cff2025f6e562716cfb070db1cf0256dc6cd1b1c4c8d9959f7fd093af17cdf60f22625f05628aa9609890271b3fffa0a2af976cfb0719b1af68c5172ac5b4262d3a7efe41475fef1964d09ced1f14c464d72c4448d3f60f6211240c5ab24715b63f509afb506290090bd6c051b3e2c70a649c9f3fd0d1d79b0452629f9dd3e6ec091c174fa0c4fcfc81c67cbd65b63fd0324b9aed0f64061465d70c23c390dafe4044808840457b54b4fd8186d89733d0d3f6c729b1cf04727ab8a1c292a4a4f8f3c78df97a97d8c7818a208a2c1361c6393f7fdc99af97ccf6070a62df10d51628683e8642a07efe4049bede314225a02533db1fa80907665713cdc4e1b67c55df1f874bda23a2ed8f33625fceb8e3f6c705b12f87f6e5cc8aa617c8263f7f5c92af57ccf6c709b1cf6a09e305d54309968c1f3f7fdc92af37ccf6c70db18f02589c1c8933e5842d27fcfc714fbe5e3044285cd1577f9c94af299a5d4d2f5ed2b6ff0fd9cff2cc1e0d29b1cf1c1b1b629fb5b2e64b18304aa427533fff9f275fef97edff43c4be1126b28a43c08c2d01c2e6e7ff53f4f57ad9fe3f46ec1b316595b403c6b14a141c3fff9fa3af374db6f9a6afea0743b2a0beb41787331f9344c18eea1bdcf62a6db94d33efcc123af82226aa0d8c2626b47012677915870d760e1dcedcb6c7245ad9041e3387c2e92390b01441c291b123cb2367c4a092f9659b5056db34f1a9bb882e87a50764070f4a884a8a4a8c4a8e4a904a924a944ac6743ecf334566aa37cb9b3e3f2cddc82a39d34137b250496e644f1f61de91444c58b2cc8e1f26684125356a29ec58a688c225a7eb292cec170525b482e2f101c46f608f67b902c84dadc4465647e5b05f0e4c84d8c8ea1db925456c64b503b23c5145399e4e5d36c7e908a6694a4962294a2c650c4b59622967784a10638c31c6d939647f23463d35070fc80e1eacb28ca6f51535636cf3cc2584103d2f77d00fc8104a1021b48c5a472da456524ba935a6b5d43a33934ca62e1c9edd8d6fd254777712ac24b99115eaa5da30f7f4443732ad14336cd38ad18dec46cd33b7a8009717ad1c593682718a4aba8a9e5304e5104a1021acb88ce6791b3605d152f5854a0ed68a5f132c4b24658e20736b8976148750820861adaccc94fb3493fc3c9bea71d44718eb19627525b94d3397504b6cd33f9867be1f4084a07245658b4a1715b11c95306e6477efdcb138423c357a1acfa6e86019cb2988562a929048da02a664d2e5e39886c899453800aab81c414410c7a9a573060ba630c9f27962538ac7fc800ca10411226c98cf5a129d138fa0246129820430d434d2c8e7084054ec760936cc4b3ee8793f80080186c446d6cc3c531d01fb549e354dd3344dcb4bcd117494354bd522a9967578238425f5cef41e0bd3d4c0312a6d479b2e325a7ee612ab3025cad32388385b04972388382e49dac05e50c76d45ec9f90e663daa4367596250e2b6e98836976f070868dacce5184dd6a73e846f6c98dec5e8017d18dac3b11bafa2bcc171907eccb5dcc9d3d8006ec06f78d70b2609b6f710149a3bd9b4512c9a1834d737fb6359e65d9795b2d2935315094e0b8628c1ca53068be1ceac7942133caa6b49066fcb092f33c93c25a7e8cbc663eafcd26566efbaeda322c3951bb4193b193610dc35281416b6af2c1464a529223992295d30d179ffcc17b219420429ca9699aa6d736b33e91faacb9f942330f5da1b5cdcff18099d7cb90817efd6147a85c1212c46c080f2c2465dbfcdc091994e708290d13a8658bcc152969bc18f9994430493a2c4710a1baa13a310f94aafa7892dabdbb9afbcf0ee60141041e10aebbfbdf1dfff949c2d7e469c0dd5603fba699374c4f61b4c6b4d9b1e4088aaa68766bdaab16729ee0c0e262f3e2ca8d78d8f82db0b7ddb4d65a9bdd4451143545e86deb59c132d374115c932299082a730bdb152ca416dfcb50f5c2c9cedb52099ba46bb269d313638c71de65e0bd32fc1ae324633636cfa9ace50332841284993424694cd0300e4a0fc80e6468488444ac7c408650827043dcc143c72239283d203ba461732449ed820fc8104a106d9646a6e69816944153a42b4dadc207640825883666887431938b38283d203b98191bd2c64b4af401194209a24ccc9014607a08cd17213690a9d00764082588b22e418810cda032614f564530d0d817102d42306eaceb071b1deacf12cb8f1247ac39f9c641e901d9c1cc151f4c3bb60fc8104a106ab89c9ed06a547a3029537d96527844f1c2d3c341e901d9618dd68e2ead7e408650824093352453d4b9d201c70c9a7e4086508220a3d2f1a249e7e4a0f480ec90662ac7509b689ce0500207c51c52b26253d69ad43ff0422841a4654b6e809d58ca4cf354cfb30cd4f2c3c9d3bc5d06debb67cef33cbf9665e34486fb0184722abd0a7862d73c3d9da68a0b656bb0979f1e747717fa0cadaa1e4bb00b57cb353a59366e5be317e36966b938e0c06e63bbdbfed67f7bc05d849d083bbf11c2871b183da8ae6c3115d1296128445de16367851734a70d07922964663098a8505222a242898a2b8c84b182674e137f85a79651610b9b17265c38f941f4212b54445911c34c4b28a3e2cc8ac8903483cd011c3ce0cf00ae52c2aa52826363c223748819a25c120708d295909c0d0c7e628cb1948d711069a229b08e56566a501b050583068c18b487cd9680f7e00ed299b15a9c7e0acff33c831462f8e9417777618f8e219693514e55d7128caf3cd0e016881d6b2035fb400b9fdb618c31c6f63c791a8c007e90f8a852f1a6899991201ce4f88204cd0c2ca28e2725a1b975c6a6a9edf99867fd9af79a585f8fb1db11200c0e172e38586b9c3890cbf3371def4464d3c482a18b89629428a539427ebc10aa663c4b236a4c513163a2c68b53091f69e62c599c49b2e26e4dd45ad35a6b8ac0fade300c4328278aa0c5800115c60983b9af89dd34cd2bc2cf7bb7e0a82a9264620a880e243dac759eaad16bafbda79b3c1132d8f6fdd18b690440a3e8e91af272fa293ccff30ca649180966d27082a38844c5d317950b1e57439edc9a46b4b042d4d1c3ca92162dbe230debea854f8c0bc3ea0896d5135dfbc9fd6c8b758546e70d0fc618fb48629e35395237332713dd426109631fa68531756854418b6a0223499a314d7460519d6155913031c6786b638c3146765d20e6be974106a26d8f4a259e353b72b452d998284a5f35a6a06dc911254e9c28724e5c006c7bec82660b6d7bec82858a0e091af3cc2911523b830446ed0a0fd4118324594046de1821b9ea61d162e39e236882562cd101e7e78410149d121839340a504c35255538a29022a821166e5ca0e4cbd011283a235240467edca21c09c3a0848dac8905283839146a121c6d744886ec2c619243235a51640bcf48160b4414665012143823304c20a82c14922ce1894224dbd8cdd6c639aaaae2b66d4b550544830ad5fadac3465746a9221491c89393f72ccfefbd43dc744d37edbd37e79c7356f29e15b248c226bc7783292041c40822840051334d5eced41fbc9701ad510f1d3884e0800f367870355c6ccd6c62cf71f13255ce12eeb14a0d638c638893d34fe1799e6710638c31c618dfb6cd3296d881ddf0649c2163bcb33cb1ef13c9c10cb3939ea669ea642b2d4ca9d628ba632299e6150b1ddbfc9c6942516e739b6ffe8f692a4d5329639bff63f66c9b05e5ca56b7cd8292a543a5aaf8ba756c5e7467f5695e1eb6d69ae6c559c2825049291b8a0d75fcbc69f74ec29621469c2d568e49a24cf01b653e6cf3efcdd5dc5ff597801591b7679e695e11198e6a7d059af8627c6dc6ee18ef601116633cc2bc8ef6bb0b690b6b1655a59382605ca5236963a32f124c61c6232f96fcdc86551124fab66d558e36bb67dbaa1c64dabcf57b2dded6ed655282264dca2a694e580999463cd972f2e68a1794176096984c38d7f6363f768a547e512dabdc60f2111cd6207b63748a7ac2c60a101a1724d93a4f423f1da3b06aa8a454a9509e1db3ccb03272311df9220a8d922c515a644a8fa7b26c9c216b2acceed9366bcacb0cd2059f495e74c484235a9aad6eabd584c615ad23432350fbde37e2a0a374e4a99a39fd149ee77906b5bbbb9b29948c6dfc39ecd8bc4a18dde0eab647266df4f0de9a7fceff3d03933087a2eeeeeeeeeeee1b34d8b63dbe39b1c3320cd57250738cad06f7cfb79a67efb69f6fcd6ac0039a6f1d63afa1dea07d6bd6e8faacb9adb5fbfe5d5203d6b6cdf9ea8e4faceb8f545454b4ec611f07f302f4b7b307f86037d0c232b2f19b1a631e50040b3be571b03c2c8c3da8aad02023e787161945d036ceaf73ee7dc0bef36215180f815325abac842c673c7e38c6c65fe3b1b19b1e1bf37a3d0e1d941f40f48e6e92f6cfb6c736661bd8c36699126a15856d8f672a8e67287c1cc1c0397335c6ece73036b07685499bc4499dc1b63512dca098297cc49893c4426275e3e74228a7e2ced34e93799a41b30142db0a27122d80c8b47ab47152ee9e6db59cae28558be213a33ba0083baa35578cb1b5a639c480bb33d87ae3a049a8c40b5aaa6a542a632420020000001317000018080608c5a2719ec6694ba11d14801358944c50584613c742c228497118c4188308208010000022c420a598550f6389777ab03642b97d0c65fd2d8822e250ead82d721010ce49c097ae93c2c09e084cff50df44d941cd5b8244a24f06b6551d6a70b4208bec481bd24f6fc7cc54555c3536d2f3b022a9039099155c91ce28de4da26f1932576da885646cff08baa2c9927891c0bbf269c9e62c079393a5727b4301d217562242151b055f70a05f37f9caecd7c1eb2bbe80a3fdebc08a83e5c8c63cd3ab52a55b10b6d27a20acad18689d96b9147684eff6e04aea5fd1a917089bbd05fca139453d1a2c1d564220148c1f63f1eacfc8a125a91a402f83f0c9a5221c678158664021542c07ee205bdacf73a1ff145db3394ffca4e53ecf076b38c382b25dbd840a61d4cee2bfeeb5b373c45435d7b96fec6b837ee9a2bf4d5e69f98fd172bd92b4de7e8dff8c471d47bf6f261dd1d2ddeb50711d0e47b9233e97be401b647c2755cedf8948df80e0c9f7d8787e4f588e5d1ed275361ab0620be358e8fd4657dadac4b08ca1df36d1c4bd70f6302d83676951298313b9de687af00f8ed241e11aa611e405a0ed822c665c98383f155189ab01836ff07acbe69551990d889c842e9e1f9377c390a0f05a7082c53484a6eb0bb3f9f2b8b0063a656ead696a6249aae537ec46f9d985442035b14c84d4e3d1d25a7845b5131e8cadc1acbf2216197f0140797b416f6c3c416d6c303f250060d6417c662c193a3da0e8133270cf375f06dc54a32d4609ae128d5cb4f28625b6da449306a4f63236d613b9b063021dcb6c484d549f5fec4414712d0575b90d13b5dafbd06932314f9a54be7c8c926879828f93d7c0e33dccc7c2ac49516a6feca24906c791d02f3ff70a5e4b45a164bbb3b55aba9eeacd580a4009c0949975a47f3d53ab9deba3604a04aca99e83fbbdc8f830870b098269651eb4837fda43aff6d96e28a50be49650f9d1f27e80a0432b84efeb15a95fd3d7b2ec03d722cdd6b444ca7cd7f6f019316c967bf22e576fa640bd80517d1da2b6de69eb0081b7812281312ee219a8a3d62e83f8b18545c4379dc72574e93ad75f0357614f6170324172649a97c72d5caf3fa0d55a5ebca01296a3d1f54589f2a5c64d2a80e04b632d1fcf62f8e3ed0a56cacd83a806f969d45933a58e20a3e8cb792035f999a2763929a9f89de6c2a524e811f2c5d3872a3e4a9be28e74d7757ebc8b5f39f9b5273857b37429099cc1f506288e1cc0c360e2dcc0284d82c12832ac1a897da6a7c981040c09adb08d0896c9caa9798e60384dd173cb82b5e4d353807891ec68509876d34bd84f7ce065d90a8a583007dbb7293b13788bf78cc5a44f06d80f1abe86f78812d5ae8be9bb867a3de4dcb1bc61148d6ada06e06e4a76881803c2622554b50d4d00f71c5c0bdcf048b48714979a3e92e2e0b995d849df304fc584e3cb308ece4e252e8281fecc2351183363443b129d450b50d2c4e5cab34d0a1d15cbb658959bfa0a643abeedfb20189a34aa7619fbf341e502aac88b717620c8cb7d71a966b6b52b10c0df8f3f57f115ceff05584ea1ab5420c4640e59d79e4c0649aa2c16d19a9f1e9de0bd37a5c898164c00b64cc7eb31231153938911669924d6ccd7412b358615d1f7ecfd38aa576e9c4d3331ad3805528caa6b7ec76a04dc32d97d5edcf9aa67471f789eeee74866d45815b0bf55b3493f27036e5af14973feccf5602c5db7600dee705e3ecb7e049c788ec6a9066194495429df36ad34516567d2bc97703a89e0a362773df611573a616e24b7a0a93cee6dbd785bf7b95546c700b029cd426a5a465b004e871c01c4be0d9d68d1120121f8d9b78f50b33dbb962aa6ab61d7d701ce3979d05f34fe42faf54430a48670e6b4f36f59af094f8ea3358090bfed098d456d937efebc7b9990ed7bbfc3ed0e81f36e186ac3fd8e6bcd548b90041a68a172c11d51bb0a32d9cc9d4dd6e3a1a4bd3c60b96c869f9c8905f6b3c30728011183c9aa010305e14ba11a2ab344183d64cc91e8cd26eccd69423a9a09ee441ad3947ecf4590ecff2773097faf22c8c5fe8a85b1d6d2bca0440f32b2c1d1216b19c4ed9a15a3025af13d341c2793c30c62af7afcd4826b3b64bd0892abe5df58c0c3618a144122612e60a940bd124b08ab7d04f1f78d44343fe029595b0685fc5fe0eda05109f94cdc8d10e8a015351f62249ee382d66043d7bf23b72a23d53215b8e07291dc6b64e167fb404642d9b3a36c94517ea93b04c4217091e68a3090c047bef06bb7834fa401a281509c1a805c93c4ab22e71f1ee5628c00ed082e128c22f4db6d2dcfe25b81eea5c15aed58ab75411df1bf300bffb8d5d8ac4f4d21c8e5b5e19a300a61cf2e161eb48cbe6aee2b08ee319678ac1d64b15b3f8248b0a36abdee014438224ed3ae95fde30e6e913f1c419482a18ad36e48c600afaac980135c681e8bee268481196edca627423ce5124107f3bab135fdd80c7a52662278afd6503ebda600ef825914ebadb1d2dd41d0179a708d600c988cf7f2e3221cdc576872d1d75aa21d2d6a7c70b2ee6a0af723a32e1faa9f40b6d3bf82a614f40a005069ddb3918fcd062f7d2e2a67a9c6a164c20df61af6d0102df4a1c698a84acf6cf33524f586d5ba62181b4ece2cd4ced29c2ba5624e900821f04e6e3916af104003830707658915caadb640a2ad1967b87566ea20a4d0798429c8fc9a900e548e21033dce9c25f464179973302999540efb1c05fb0845f863497fdc4d571896ea96072363dbb650faf31b1b9c278d3b60dc5eaa143c983fe6c1b84a9e14f22aa6a63704b0ebe5e5a2dcf05c9db19949b9490b111f37311623c84609148ddfc67a7db54293b38e8f8e9513dbe0270ec638911c6674e5218ebe656f55301904ae6132ddda6fa7fce187e1a6173b2bcb705a993b01dc28f20e72fd43de85142fc2dd4f9569e23a147bb1cc4a4490dedc97fa748b3becf319ea108bc5f7d56349d4c62a40c061ecef717345010b4c4cabbd447846339b3d8d95628f1037c7494fbe582e8a9b18e9eb1261565cf2205f191f69af0ac9874efdc411e8ce23626d41c87ff3f5c32f07e2b786d361c165e8a01dc4a024d87c9e80a503e70bf81ebdf8720dd3a6e2e56ab389d6028b38f44ff15e814cd6bcc1bb355ada04edaf7ad483fa757b571c68b60bd34a07cf1e16a27723aff19c1c92b7d9f7cf8e9763306d4738f7201e5147740389f2c2e1e680f557d368a70383142ea3d08e0f28102fbe709a4b5ebdc8c10ad7c08e06e66ef884d6b0f64266ed028923f288b619b3680099ecfd5f97bf1883b4173c3b119619ae611c0d80f3dc975b76ad7481834d0a954b50b687b20d472732ab6d9008e147e498038b06ceb3ec7dfab94c4acf0afc31bc21fe2fb397a4ea5781bec729e0f767f3ba49b343c5a3027f66ee78ef912b5f67065a7f05fa659cd9de2b1bbf5cc869e76b3a15c730f35a8cd301f00bf6dfbcfef50bd2968c871fc72174264720015868e0ec6befd3c345128b7f7571887df4154637ac3b6ca0b0b078fe46eb25a2255862d03a3e473cb235c72c1a400e4effd7ed2fce202dc917f8613c4277720612816507ce5ef63673d1b2b13a7217fe551a8bd743f4e18b5b9896c4483c29169b289399d6169c0ecaebe97de6e0ab2f9c76c953153d30f2dab0a381f9e69ea805dac866cc07ecc284be80adefcb5a2fad3164a50d1271a4c3c84650c0407ef9e5f4baef855cb53ff06e32afd2e2061a71688f3ac379f309e8746e3fd4b4e421a0bca25dc76fb3a1d6d438ecadf50a1508ed16ade6901324d395d20eb8e91d52122686cbf0eae635f636930c1448e314eac56b4c76f53e122f807480ce3ef4b0307b105027ef39371bbfb91f2ae122a0b5fa1afbad409deb4b10fa2bef512a7d90ff45252e1aba530bb49bf386288d73ccb731218689831f756bbd2bcec8ecca46b978bf1867da4cb14b0f63960ed08229f67026f859baf246dc2b20e46fd34312830e1877bc7d8e9bd9581ebae29b68a96d4f21df600d0edcd30f333260f1886aa5a0bfa09c075ae20b692b6148b6f702bd101d40afdace3169e675158843fe33bb951b05c1d2c2e846546c82edadfa14437148f8e4e7cd500bb0cded55b4b7d05209ee1fb4bb29b3bef63c354b75e893dd1d65a4bb3676d8c622944528668fae8dffb71a86249d7bfd7a45fdbb232120115a78c5bb300c45638d10c18d6d4e0110cd4f859a28b60215a282d5621bc9022c020374ea8891d5f6e8ce402782270f188c5757b8b6c7a32b2accedf27591d8f13e47c6819c33b2115beccc2ac9059b2a63a6f4d7b52f4b6caddc8588d879be9badac5f053a34fe628d7ff6c018966d15e303b3320e2b7edbf659f2c62373db9e7545e9081e0de2725a5b91d16a344e1bc5f52e6fca03471597257a67fdad4960f62fffffb895116028a1fcee66b317acbf77cc7ce17a38864274dbfb15752714dc4c56bfd3b2e1d8d23dcbe12027f65120ec0db797a6d3348df908524f6dee0ba41662fef59b0039ec2d764c413026f35f5550055849dc9b79c67ff64f1ecdac71449e26043d704d8d9ecd6298d30f5d7e43f1d8ae31efaf62a7f48fb79d9f93ef4c499064391080e210113feb5d51aec73e0b80a138ee2b7e8719e2310fc090945767df15875fb1708211732949af64b0a6192d4c3966930f4004bc1baa6acc27df308b207102c750c856b5d09c6f0f5f1127dd1d0d4bc591b391cbeed3f459bae89e9988e5ef9c3203bafab4938b790b6f93ac5899410c0e0c45c1d03202592b95c7576cad5aca010a71bc90b925a86230c9f13c1813d5000740e71e40ed0de963907108ceff183ad25a45b4cc8f579537c41a056e3e767dbf49d914564d58f27fce2318ea69f2aa3b28c7bcecb5269a2cd293776e618a34373a06fe81097aa5da61c359cc87402cb0e0a69c5c7b7bdf50907efcaadf2356b8eb2deee1dd95892b269a6acddb5f88d26d27f703a2a91c565ed89412cd948523289e5b8e4eb6870bcb03f9a832b88f9ccbd7bd372328281b4f99c9536d34c0d2c23886beb0cc2da7ac4ee6b4636a19f0d54026511e7bcf28b8e3dc1fe1417503f15503fcb8c213a040d035ccb9ec142908fefc47e81fcc346d21dfb5a113766dfa4161672582ba3a7ae2d0c76cc30a767f988f76bea3074af272934c60f6b151d1911afe57d58c383366726b1a4e2c648b2e8f28391ad80d149d41cd2e1a56af14913b57b8e1b5b5aa562cde5492cd1029b6b8b3e1a8e42a341d33ab27ebb02b3be893271d483e63f603b0e5cfc8b86b205f4fe44ba2eab051e5841f459a568a08ab58d929151206861f7f2bb2a90a211fad4005c8b4ffdabedd7f29ea3b459df03e42a942075400259104020129883aab050ad5c1c956b83443e4920ca3fc3b0b715f7c85d34526df55f9e03f63621232eff71878a9ea0de9cf1bc5b6dea466e11d4cbf536e53d077c9b472452393a59ce3c819003ba4fe53c71c0d0cc8347bf20f39bc8b62c0ff21e26974d84691876c8789be5a3b97a2431b9aa71d8e14f1415c0b8382d6a8d41d0158b6b0461b33befaff9aa7df60cc410e789b21b9f6b8064af2693f0ea1430cb9f82a3a25148b9cb1b51325c45d47ef841f28d296070625622d66b03f6378488274fc176f588916894c958ec897e8c2111c72441df078c5e3c755d80d604b1ef8d9acc4e86404419fc022809afcd9498ca9bfcff9e7e3f95af41d50f010fe7a09fab1ca45ea1370a18f7c5274af446af7d5b7b3a647425a8107e68e1d631cecdd139c9e0d773f2c6fc1c04dd97c6874dc8b72128729dcde0b4ddca6571ea15b6137b40ae70af64a77660589f1484ac5d6a2125e8b26067eb5e819dcf2412e37a42e592d58d68b054df642605392f853bc607dd13a6cc837266adbb011fc0f4943dd16795d3550a213598516603bb4fb5681703293df16b20a47f131779fa246df1efb00a008ebc725760ec7e953fca11c278120c09c94b607ddfe396ef51af3a2fa7c4c24f4aa128ee49da46ecfa3cbd9d0cc75f22a078ad74d30c1c1da30f22ecdc8348ffab0fb0487ce2f3d3d8e1bd401b51b31e0eb9439b522e0a32de3ff07f3407869896503873ed03e35a74f9c72c454ed5c40eb907e7058ba0513ae2e2d0227e1f4a9aed7b7184a0065a0b0881c6ff3d2b49bca0d42964075ba5518090289cc55142b65f1c82358819047197ac82a91f7abe48cb182f816450ae6627215144f0eddafa2595303dac161f5d8784a230b3ba99033c40488cbf471d8b880812f8a47c8486c452d8b08f9f6cb69136721f8b13915c5ab4f6ceeaad6f9308814571949fe35c416890a2a641b3d895f39ccb5fcf305a6522b9b554d689df58022e41cd5a65caf6f9eeab3ba94735c353496f4463ef0d56bc656931e984aad6c5635a1e9d80ea42f2afaf8738e182c753e9890ddd49c0dc8ad46a8394b20315d434cfcba5d1c0e05f18fcf699563645e940f4153687781c64e7c3af020ea00f43221b80b584b884239f4b8f748d652e810646fd8bce8b0268c14b30333e71423441c59d982ffcb6a2a765dd6771ad0637f713ae869f1ecf21e6d3a3444bc67ea560bc160f9e97d1c7a7d114c1a399e437ff06be71bb55f408692c4a4746489cf9aac1633917533c224c53d58287498a0dc82d54f409164b3f4b7bf4eb738cc9c8c5637db0f706dc946d1b9ad8afbcab45584e691231c9d3856114e73abbb4f89e93bb490a8b8ff0f0decb68185b5e5a8b3beec0f20260237b18a50742270a5cc0ac84a1ff39f43dad859d3d2dfca4b561aa7b8cbb4460ae41154a340513936eaee7dc36d9eb8f28ca0c73c95dc31a383fe279945e6a281bac08c1312d59d63b06f53df0181c8160437217cdf5e68dc13279cfb03d26e0d5459802f8cc2eb6d4cc054c28d6f8592ec29a40ff6b44a713252859e52c4a299678f36e8bbea9c4c9f609b468894ff0009e7ebf5f40b4c65aab6a0cda317225b59c96f41ca6a2ce17702cc84168e2ca41a4ff9fa2011bd22f994716477a72d10c9e12a2279696917901033aea0ae9834bb53b3286448a8c0c9749c6a09fa734d973d4cdf11d4e0eb1a3ed5bf20c2987097b52ee2c62ea558fea2e38e8ae57880afc6750d818ada6604c6f68618d8e50a6a029cb32843ab2178bd100d1634067c49a165059e2db25f42e0c59ce888b0316b1cd2a6afa1c8ee0857c87362e1f542ee256ac32ca671b460471c65c407dc3fb0cb8674d503f6d01b5a4b6ac62936bbfdba5e464b6ba73035a3cfd610aa7fe8bb2c41c521b440490088dc74f9ea7e5247e0ab0994d2c26771583fc1729eb8259cde096554e7f69ebdfb6e9d81a408ecfc01af151a8053164ef2edc629570f0bbf2bb45f95cb895f904d9e9842dd894c0bf20fcb8f34d4ca6167dd12c6c2377d8694f4a318d3075bdf1d9f915e7230df0649e2baad53f51a4411e70111f3959220ca21187ac097dcf38710d42ac4b0db4981dba097f439e1c7a886f1bb8067267c8fa7566dee03b0b66e6abda9f7896066904fa6a5c2ee9dd61e1d850727b67f1022b93030f262cf37790dbfc15959d4b4c863c2131c46b57b118104425c60183890b21825eac81827bc766ab10b43268c576fe34d5b937e7f23334806dc77fac4b586c56b03f59a0a1f8c04321deb915e702cd3d079b1a3476987618dc8c3327626d71c89cdbef3b3f3113666455a4b12be70a3115ae00cfd19ffd6eb43c486bcde1804c1c37e6e2f7aab96ba8b06b3aed3c66a330ca481dcb627c7c5d4b8373444f7dbf6d135c913e4719cbdc14923f8e0a172a674289a04dff44551616f9d81be677d5a79c5ac36565b3b9b7b75fb41bd90ed793391ae771295e25f669a6021a8a3ffb0434140a51444053dace985176daab9cb3ae556393d782db2b50221ae18e64d8ec5c9c21fc5549914f9c6b7d34e5d17a93c46c278344f5721511421438c22450d5708650938680adcbf4426084c4e410a40a7433b80bd383e8d5df08cdb2bfa4f375b648599ddf7b5f5004b5ba160b3009890fd2766ba486bb2adc7145cd49602e001910cdf542602ebe103800a91a511b8db33c00d8533098dff3707b33d7891f406473584f5535818abadaa694efc5b0e557d7d196232ca4aa0fbb8e6241114ffb7d4b8b6e919b1a4f627afbf0d37cd0e37ce48847bb75b3028a9cb9f8fca49ed779013032e040737de69b81b0ecef3c79e187a86f7f55d696a94a35cbaaa3e4149876a0cbc20ac053c0c9d035b194f7d14bcbd5e033244dc2c98557f4a9a40bcb250ded1242435d8e2335f812d23954882206fa6e2e45556dc606514347b71d994b31a8d98369e47050a8fcc9adefb0cf3ca3170a0e53b8c9fff1938d47b9d5d322eda18ddd0f7f1b7de79cc000360caddfb0be79b609afa12144db1376747993c69107f21cb5666a5b1e9c2c3ad17a7f728c1cb569a5862f78cde95b44ab274c944ff5b3add511f8fd60b2773b27e5ff5d3c00065257ee5bc228df511d5edd4111200701fd3314440c1c5a5ee24e56913f65c9fc9eb2748eb092925d7ec6cb84b9c6006a23858389766097818f287543f981f10402e58755a10b1b79ec4d672f05b3c1130a5aab430ed3d56870f846d11b027de2168c76ccb6335156e1800735c4ec8fb053bf9c14cab7167440f488f2fce0bd3d16519a7c2cdbb7fdd8eb832857c0cebbdafdd263d0774112f81eb744a2528b235a280a6e51815d025108f0d75a9ee58fa3bc767f038a9e569f7a34f9a8e85494475c84953a5680fae3b5eaccf392def34a4df0a9219b4bd75b80abecba06c1869b7be901ec4e8043b9a2bda1c3b50981683ce96c73285f86b1a3f5f762ce8f7fe96735a2742ad5c7125dd9cc0b3219e3ea875bd498c13f3317a29fdd02a4ea701f415cb77e32c5dfe559815c6c8ab37bf0227a6b01006833b9d9b65fa7c62460171311f23a71c816e6a36e4af7ce787150409666c211b56edfcb443084aa6356fe93759182d31c755a71490dc7697b035bc7a860294ccf75f8a0a782da27a72aca03cb146f084e44c299b128427db61f0ce1762f4f93881b8d3aef4608006c0e421f4787a0a46415938ca0bf5253b136becb17d8d018c676ab882ffbc707ff1cd90fe131c2a241828dde5dc5686809e8e98198a76a5a9f1a997bee8ec0d30847624202411ac8ed235ce629bbfabf53db3b11c39a856ce4ffab7236978700704bcab083c09544c15d2d63571174751384d0ff2111fc05a171b662052e8616931d3dfa83b25878c0dd89d8a6adf25f8e819bc3f53758fa59dfd4db3a2cd5fbe6ab122c1cf9504c4458ac272141fed9c242104d11ed13e3abe569e1116f018453c1d36ca344c04217a9312ad1bad9410c39ff1d76a41d8a47fcd4c6a36a184039369396cf000372efb8e6d32779ab9390a8871c5eec97077e199922ba40d1034b7639dd9e7801620de3a03a9cd4b233f32070334cc5ccfebd92a3c878431510acf220703e68c7036e3de566b46cb672f88b6e69d535dd4059e04d842e74699478aa331ee89b3e320486fd3e4e4e6869023badfc95389fe96cca1a8c9702a7a4be7fe39f0c5d68b333e97c085f33b01f0c9c33de0f28a44a997da133e8116e2c0fb6004442144503f3c189a4a105e18a9d12867c3796042681439ed33b61b6934b52c39bb4ea4860bfcdf9ed6c52ce31587ce75d80f0d35b1ae61d602bdd43d406701832cc28ae53d826a71555ed8192c94197a048e58733652eccef97e6972dff76411e69895ed7a83306ce90c89d9f0208b1a682d96cfdcfcb60d07005d37a264004539f8b0de2dc9b5ef5daf3af577150e53f399ffaa1153f488f8a47fe48c15a8c7b54289af411db9e00d35e48ed244723ccc40729d8b9e61b297bbeb89bb0a16b7a7f4d2a5bfad0b924a63448191b0c0c287cdb9bf05c0837fe5e16ad54adcaa26eac412edb91990a39be9ae4be741472dcce1542247b0f37def363349832ad760608ae87650166d8f0fa9eb988437737dcafd3c0d23c2408db5884f0e34b1a993de18e7dc20ad02f675cc678bafa17b1ca9067fbadd97a9655d2b6e009d7974429e06ddf122ae646bf5da628279029a019c67080e1f9ebc08b118e7ef1510c1cf073622fdb3a975020ecae2ed9180dd5e70e14167e4f0b2992cccc3114c88dbab22ac2087a00469f3b92ab11a06698eb1230b412c8290705644ebfc23c10a4083b423a0bb59c178a1e948346e7bb7b835f9ba77c651672f4e6d61ed0a9cf79ef21687f640fc92c4437ed0342feaac7daa5c1ddc1b43730a9930a0597d61dae353b49cc8899ecfb7e183e094540724d56ec20fd7583348c6443a09254e530d7a5394399c3284e3d64f4c8b920820433fa27db8a571145671d16d69177feaa3010ac8ce3e06c88e8c897058706e6db8efa4e144d36b34c28c726f57631f1a36c9a1b143376ca167304ef6e34f6191a2d07dc0627bdebceb494adde5d911077c305b7700b23f3ba80b91ef6d0d6f061318ff6e00b401d4f073a84d5e6c79ab79f7b0299dafebdcc8b1a6362da9e4c206f160b4fd84f4f7035c0107970f180e11ea64d02f557f2b828744a5e061c3099cf1ee816b9a41f288782def03c00cf98c993a7a99b10c2347e9c02c1ed4dbd627a533cfa1860124383c0bc7f302b51924187ba11503aae86d223c58e7c0a111bad99100a0094e5644c2d565b3f8b51f6322ce7e104b16b3f7a6c9bd7f45385b614372aa383e9741282d87d3729dd3a8bffd1a5de19ec2ff8e71710a0ee225dc7448af680799ce1944a6688136b0b732e616d7450e4a154f8130d190818f185a2a8e0691107a639986aa5818d2fa1a92011806656167ae4b60f6ca1e670c744ca2c491d77017e45536a5ffa3926027c68c5b1798da67ca0e6c96790ed78cd2983145821b8dd05a08ba345d8df887abf3c738ce034f82dd386edc0c7cc6b617d88eb9acdf16b3192ef07ebff2f0b4c20dec94cd722750c64696005edb2acc79b4dc6a112ceee53e4d9600f22f299b5adc9576fd3ad03831f424b4172c0e53ebc66b34ae7ee05ff250c6258d79995b549a07b0e887099607e38aca2bc6654d822735e54309b5b004cc8af9317ae96d6b0ea39791061a36fac108563f4cc7d5652145c4ab511599e692e61b8ec8823e5d9f4bae73caeb0c680e3a59f1409a7bda3742d061c5d51d7e3416fdf5835eb1a0eaca9f0963f7e47b006b5e6da37c35d481024b47ce263eab3d604ac43daeb976663c4563bd544f020cdb49a22278d3705d30139e86d932a5a4ed2519ed3c9167838c8b695492b2f6372ffa50d39eaa36788bc3dcdef6a154d54c02a199f4a6ecc85c2d9860977bb5a8a0608eb3fff2536bc21d50aee725302f6d8328e3ccfca0428707f9fd85a63a27b3819aaa0bc23307f49ea99d9505c9648502222c38849a779df38dab24b95ff7d25d4e202b8d8504dbc5ddfc9ac3816cc8a1b6f4c74267939315a1063b92d14bf7e754584eca455b0874823f1be30504b804148a113a1f607683b66732f2ee67d93ae40b7374858341a4bac7cc2daefc2d73f86623d34656f670908d3178cf7ff1539b60292fa279330b891408348384bd7268736b29a60e5900659621346c162df4c41f03339507706605dbb02e158fd3b42562b1486c0e172796beaaee6e9a1306e6abdd2c4c3f74cc5f79d9bc18d00ea41c970b44b941bb275f8fb8f26bf569a83656864355bede4a095843976a8526bc8ce934ee3862c8f8c9428d800fadf62ec259821559b08b8e3273f73b1d212f44cfa28be42d4c9a6a70ebe04b375b1040a7d824f5f63b4efe3d6b32040c62fadf0d2693eb9d0ddc6c64608ef6ac466ceb3048cf66c49d3c4792889a65bc8e214c1ddf043df9d270229f5f82e92bd0eee6f53172e28e0a05092f19a6025a002452d79606d4754080e8e9f3b6f04f18847f92113ecf29638b9447d47ab770464064a50aafa8b131a04a531215de7838b31a62a7302c5f26e2598a580162d84e28cbdda97780bcdb706c90e503da46fbacabd59832031a8b14804359161f01f952032f6f5bc7655c73912724885cda43187e4c80fe72f4ce377a6ab1dacdd420c0d09274195bb75c992808211f44ff9a1102959466d70aaf1f72c734ce887ee4cadb407b0df5b68098469d378661cf601e34fb171fe639ff0a602217ab0708f0b4091a76e590864929be395600b8b94f36c2a48e8f7bfb663c2b26028d6bf9d4ccf4212ee08e3f7fcccb0b2bf3463d62d0063402a13c633f269c8611176397703e9ac79423d01ad2d92511e81aa9959424ed3cc4525fee3cf7cb0e8f9651d92610d948fd9bbba8e73c2af0128fc448a2519ee06f9bc9d4e6605edf651c9388d56c651e02bdf8fb718d44cd9caae8323d84b8448dac6c21b7e38651fdb6a5b76e26c414bb643d0f2dc3473fd80e912ef9f3ad5a76bc73231ef0f82714ae49231b73afd0740be2f353be997f6ffcb32ab3a2a473a09c120e74a51333e6d71f012ea4e3a137e349412f97d02a045caf0c6f5954a92c7dded672a15dd65f647a6c35f056a5c8caf7fc52c5d40d95159d8a384016d615a785d49c47d8fd83624027965a0f7971ec08d156426658eadb5744d3af5abde10f9fae79074b76f6ab3f5fb612344633beda95ada8b3ae818938606bc208c33061c14839392b4b34ad42521af3ba25120d1ff0816604f326bcdb677a6909b7a8df05c7545594ba33321aa40851fd89c95695d7a1834a69e8dc13c2605221caf8df6c826dce2c020b099dbab68bb87548ef523bd9f55271ca2fee36f1690b5d5e3166673e724e45a43365f28b375646ea31f0166e2a7db5f747c510ba50e452ba11e174cd0fd8f39bab8411278e75e80cd99c488f403615c0439a68fe1b384b5b0cd2a51b136d04987d9e88b87ef1dc365a65dd37881a42bd2577f385f8f9dba2c80b3e75ef8bd7406bd3333cc43f95ba1c1db8000dca1ae81b27bf215da5ba6ffe2460f0f672bb1fa64a3ad3236e2d9e0ef90743951ddab8ce5f3853f3d9b62587c54bd02f6c638c1ee631cd1a4155a4f829ed933a082229da37f2d502258937d4951a3be28fd051175795f0beacf5c34b553ab02f73bcbe81b031e1df780eb59bed5fde1fb4fb50c2ef569903e879a32ff5de0b22f55836d37e7cae1d1904861646eeb3bae6be8226d9b7ca582c705b8c5cd450a5e2226e745601808d43e99305433f59f74737b6b09e5f393566388052e27a3aefd85794515cca02f24a1eb4b791ac804da23088ec4cc2e7a5093c5cd95911d2e1fa8a6cfb827f11f791ac8f56b4413a283767ea817820a6681fcd2c3484042734ebd530ce4c608aed54ada23574fd642b16887f42a7af7ef3b2be9d26f51548c11b8f4866a99b7b7c28468a4078ebd4516a6e2d0ef89f347949da096fb9f9d6858cfb30092e50160d680e3a2092facde25ba8d227c596464372cb624262bf273ac5122c7a9b6168f19a782d5ca3f30719ff092c7da632f263692e1c7abb910d7681f7eb8d3d80f806e78035c845148379bd26d3be443bc9c30c6cd88eb4f1e07a55b8ac7254e5d6da62ef9e69c562ef14397a01f68cc1cb20d914793793572fbe562ae99d3829ebe5da020e0bcb85819dba4d925e6d5ca1cea1993c0f18e0beac981570da71bd82e2f288c83c1127a36e58809fe7bbf26a2702e39f2422252633b1c780894dbd44bfce9f2a8279a2ecaf14256e890d4aa846425e98e49dcdc84021276bf483fe61bb5cb9dd2c40a1d1d7b75b9f18ff53845b7384d499f21ff33560ff751a348f26236b5102b7370e42d18595f4e08f904368c8a4e30d53ed3ddeb964d62db70bd3010dab0a8ca8f17758cb50ca35c59ca1395b2c3bf0c49595d05224f94d02ca6405d8a391c638b5a1a1c54c1c5bcf5f332ca1395d7b5f2b4a17ecbb9ac8cabae3b52e4b4ba476d473659626ff31edd66696457dc45bce02036b44abffaa7964a91f392eeb2f64aef1b188a557720b5482a230cb54e8abc73ae956a96a06ef9506f9478213921a1a22fc4a3358b089324d1838531d0d48590354c279e35a97ea1a3e838ebe9b7d97470051f91f095f9c802133d2c9dc080fa90fb071a2503d0d09a612d07be33125001f74472b11a8dce6fc4af1b26001f9789ec43dbe168576eb1f9a43241c5e82ba4831344a020e6488d1ce08778873e898842ec1cbef46a9b7730cd360da14ed1bfe345aa32a95d04ec2d10790794336a86bb86c089d28eb1f2dc8b824d09a2ffd985c22a9ea10a6a887424f3ba3fd76939006a2802182f8f0fdf3ba1a49d067076f22be9b3dafdf602eaac5bfe80a777403e6b70866cf51542fb81b494020a297196204fdc51acb9964aba622eb2629b7d9d5280c9f72c7ed372298db90bedc38096072237489a36c34d01cae3bc2a681ead7c67896116a8346e4b0982ca182d2a8278cb9fca8cfbc25a766323489bfd61a7cc8bb24465517fa23d85fdba024e86efff8565d6152160faf28cd18b73222d85ddbe05b02dfed9a1bd24785e57df9904c23cb3032d8a0854ac0b48e8e8d7710e55661bfc56519f5d2a333b5aed05b9ca8b1cd42d06c99fd60e3510b75dd55b814071489245cf14b7901a1cef367fba3b0944e1261f3ca8d42817f5a1d8ed172602418de315fd954cf2edb4a24244dca15367c8c947a909d19a90407d77c2b787ec385ef0f0cdfa0e3e04f22198519f89ad2f4a3bf058306f39b41954c8a438919d788390b93e6d9b425a704bc93ed88640b4e93a6d1764ac73f174c20c2d7500b8d2069b604f818fac107d330dce013ea6f2a0706230657ffec560fa58d52d7389b99a71d89e0c0ee6be5069d738363aebc29e4b966983e6f6d5c23823ec60dc3f06e992e9c14edf9278c0a8b1313a31c51fd59bc7ec8940bdb3be715c6a9225e12ce0fbd7e2e5e6e5651261cf201d4712a931f7742bf2210681fbb910b98ce1f068290cef31bff8eb6e150d0c8a4d3fa543a3dc51dc3a1398b2da0c5c06dbb4bcdb6b11006e9ec0c8c5a082f4c2246f922577bfe15a50dda391883d48ae11a2f5fc9936209ff57e660373d79e660337e6c054a00569e5b292d6efaf7c435afff55c3ed3c59830f9128625cb192bb4857f923e51bf37b7219c169f96c4fbf4408720576f12c85f0a667fa439a57868a94bebcf94fa6853d709e5928d3f1c8ed75fd528b372571a7d7d0163d8c44a445489a6fc65d31b9491ccff3868567702544c29985a59b4d08f2e21f9d5ef7913c928971bd42c9b54631a7213480e5f6e641b3a29c21f5a01c06db4fe4b48d854cb7d141011c747006ac34a7a6e3cd5e7a10400cb293deed742a3bfafcd847481c6c9b61e91a2b2e2b08014e888f698e29d74d279a29ab65a95cae7385858916de539fe8b120adb133d940bc875c0ecb087add8dc79daf8537434a824d844737b8636d4087748874eb6099593c7d038da9741777dcbb72c7062a454739ffdb1879fcd9ecdac9fe08550be20fd8cc5deb48f689ecacf86ea9e372cd6fdd42699e1d2473416042e3628afd37827f465a8512c109788d814df2cd9c69a12ac7d3410b09da840810e957acaf9c3ae863a0c563eb0df5bc988d54c1372be411f6abd4c99e336e8f35a5442f9d784cd109623f42f53c6d269d2a293bc968a87e060136c95b1ed621cbe9ccfc30ab1430e80f8426a422949f71b62145ba86b243ba281235f404a760c76b0413568c9468cd9bdedf23c1bf18a5317e9218af5113fff84c40fe5278c270bc51848c701c40a38b0bcd4aefedb7a016adab2e80aea8d87009c27a0665d01a3906efdf8e2bc9c28dbf60ba79abddcdf687ed53f618071bee3237446ed81f6d40c3784ee55a1811d101115d0e74aa77899ed4df352bf471bc9d368cb2c0cc5aa387ee4fa6e4da9f51760207d318f6d21c8a02664012bb4f17b406be0a604b9f08126e5713956f1fb723804e07b1479367e288523b0edc1869d406514ee9b94fed949711051419b3cbca77ae615ea1b28641c41e58d36d9b19cc3a644019ba87e324e23b0827b278f181eae32b085dc8f296d6c2d9bb205fa1e00d24d7a6bf3148a7364cecd3d756b32728418e61f623551d51e516f9c5bc6638c7bf49632735f036012c55979af8c8f0f2fcc090ada54254c801d074315978585f39a81bccd8907b08ede16c00505cbae9912c9a832c8563032888476ce301af40327d88cc1238b3fa021e124ac60d558d37fdbd5c0bb901b49c9e829f6152ea7f99ec6db67ee33f5d89afeefbb23d3a212188a7e4ba11f1a99e4a23a17d60dc67539b60c388d29187b027995f20ce4fd243c4232225a032fc732d0f2a4b7df919e6657628db7ed3ff274eb31eb8b35cda7c80d19eb3cea01ab94636b07c38acfc6813acfc6bfc743cb9958f3887426a8253b5dcb6bf4e43961d3a3862cb02b8df63b454b34c183148cc38f14534a4692c04fbcce549b3f92032f4ac27b5079687d3968ce087b459b102193fd685b87de1b92ed6aa771776c9f7740dc0a1e6b3911bb9820b781055e237f114ff085135146a439c0cec9fae6931b6e13aa4f802e1984243a7484d337a954789fae8c83c86f59b3aa6cf303d69bc332b3794819262018eba3f3ab264feb48d79c32f1da6591a8e9e09938fbaf176af9d12ad3a0f1450f5025407932837876a45b72ca071410e0b8cf4d5ce4f4e34376c50e3531218eb13b248cc4a9f228c02b30a6f6a474419e0b3f498154912c0645fa6a45deb45ef904a280f2e3921ffbee793489e7420a8130617626d5c6a25b84b23acccd6abb927314cda0035cb6b3686e1494d0040f091dec9d55ca6e8581971ebdd46a5f3f8a28428a283110441e2164c248a5cbf8ccb704c3f37815ebd8c1c223ecd41ffc2b6adea44e6681d08c462f539bbaa2019f21208b48a8881c57936ba2d7615c05cc2b7ce7d4f0ac14f826d1f5fbd7e679433b9f168fc01f5d8353246c3e7711ad62e584a65423cec88933b44e6d74fddfcf841c24f88de9d12a65fa995f518ca9aa1b18aa704d839044beed1f7c957111d69cc53630868c07a3fc86f6e9e3a7220df53718dc49997d7d7d499e6a1b319d5dc08c261e1316db88f6d691fa5415972f45e9d023d5ec8040e3b5f43d4d8533138c27c4f6200409d36a2a61f349891e029a2a66cdb1caf52d2da6c27c171f105286856a1403fb241594f61d9334c13a2749562b2eae7865ff90dc7970e510dc25184bd4872f652bb44220b4ce993990736613e0dc7d26a57ddd300a25fb95ad7a8bd54a393144429f5652179dbcc90f851350255fae4bcebc396aa221abaa9f952611649001295254dad3aea5bbc1c717cd1711bd0ec3573e587bf6fb2fc527558d864b4309d184022ab11baa74007908bbf083d76a47deca1420e3cfed265c348ff4f91595c6f5a7657bd7504fce5dc9d9f9a2b2dee6d895fa83e4581427e5b6690673d2762743a66fd71055238acf9f9c15e085e2143b846f81a1f680ed87436919d804c8313c77fcffdd1bfbe5b9ce6809483c2add440106ba0347497f75be33b986b3002d552b0b8e452d7b5587715d32ac2f02cd32656b0abfc993b2389500816f975b7f96116f0eb55cd86baacfe1442c1ea9e6cfa2a515d0b7605c2bd0f21f8730e35eb99018701669e14281c72fa19ce85e62d6f534833a71fe56eef20c46133ec123731efefe97e02ed0b5099e5e03ac7cf4aa2f5eb6755b630c48a3bb1a0e898c70d20bab8833b764643944e7201d0bcf13bb5f16e7c0c2e2b3135d464d33ab504964a8cdefaa049b638cb72e37738e903b56ce07cf4717f140dc1b5c486e8936867b48ba560f0bc62feba277612785a0534031a2034f7cac5bf66a04fa11753943292ab67d570429c129474e90e590fa65ec82e2b80f69745a19b2025eb9a306664a105bd91d5b7ec3abdbeb2258086de9b978bed8412dc735b97bd76feb6bc09cc3c3c262e8cc42aed138662913d84b2ae877153fc93f3fcb640695db9fc2e52cbdaa6c0336b5511340def888fb8098d345d99627f4005d4914ce08258e7a8bc62b47dc48b9d6aa6dd0331d5051eb6453d6450029e213bfd03682e1a890994b5f98f6eaa567556f767985523d6f20e02aeb2c76fa760c62da61141f140eb85c5142400d531a7cfb7a39dba09b09bfbb6703de4d94cb37ce8cf417f883b0dd72423e6cbf88d6010dadd769ef22739633b93a3207f0e0ce9bc4e1024543031cfcc3ef2e83c09e9dd2a6eb2feeca4756c82152b0c8551e3d218e3c4899253d8c24244b2026797761064c6f99b7c9d0c72a708bc4c2ed40037d677c80ca0071e32b526e5120520041daf2dfa74b0680190bd28e023ae92ae1485f1a8e4fafb1209606a147a32a77dfec622dd6e88a68a6c78d4f2074331700a3fd2100f817dae4ed6b983045fef01ae2da62db10bf5c1643c3362286244f5313e1c432845b4574479694dd5980faf88664e26bc4f12a1045121382700c818402eb2c9818ac314236a560edcb6c025b6a593eb7e104d915d53ca067e9055988c76036d60e94a9eaacaee7bdfca230e455c657fbe221f5542364fcdc515081bd3d7f5362e399a6d186d53ff09c0281afcab371f99e140b3e82e5261ed96cb10558e022fc44cc6c58435b21b5f685bdee813516f50f42a1f9b0b272346a1ae5ace321c91841ecd861c7e978000dc476e21b87e1d9b6a73f379a8e5b0016a318ef25785c15bf3ed36ecd2c357e93fcfbc4aca209456670c23c4d92b03d36e8d778500ca27513480b582ca472823bf26615455b927b7504e1f2580d2381a2b0641a5891bd05ba9a8e8dc386bf6d3050f6571dd941baa6dd678c31592ce621ad6461393f6e6355547acd00ec6cc5a40f5325ffde8b4a13a4c6cdfdc1f8c34bae8393773d56daece7b61fc03374bda500f20d4ee93fa2b73bec9fac54219228176caac834de07f5b7acda4cc4eb60344661f1e60c7836763558eeb7b47952fa0559c45d158998c279db09c89e40e3132c875e8633a316c7a975b9b46c6ccdd6d86d5b086ba17111c7da5a1d0f895e5140ec0c2ff605a7b5b13eab176c02cad39760313f56ee9e8113bc70b98eea8b0d81294326f14cc95d3870c585485383cfed23890768ca2902aadf5a4590a4784105e1918394a190a396787b0b00cffb79d202ebbdccb1b3efa7cd5bac8bfa9571e47910f9f525d25df350a68cc46fe7c0eed35d8504c3c62c139932d512bf48c2cadb339759223c588e1bab3d9096abe83bb66d624b465368f54ce878d18e043253f3266658bc4eeb45a86bed9763b93f491b5c503d074e0ba3e4dcf8a45eb59c41b5d48f564d82dcea7896e7fa1ffe5fcdbfb04f1048052bae7d55b12566051c0b70e05c246a88d59b3e110d0970641a963862768fa8b264c19282a35158a50c1cc72f1591e2ff4137fd2ca580b567fa6fbfa6eb77b687d8939eeed56c9d8f99fc38c69c755ecea264624b58106e618c92fa5a8aa1a60d48b52936a459bb6610cc75d6e9cc7d418f9139001314082d5c6e998f984b0d8655c7c603eef9fa778727d2aead4141e00edd44832d85d374c6215905caa4454adc3b3916fcb1d9cd5736f3769ff15c60a2ab9c9a848c809f2f565922b7f956598de34568622b8cb00cd46264b748f8b12e80c6f5493b62cdfb848d75ac1815712d4fd4ddea815602130dac57cd35f38f338010cede9458425d0f06429ae3a9b621b08111c20be373aad39cb59acc68f0728cbfe86dd90a4827d3c21db46721abe5e1b153ccf05b03ca150902066686776a225cc413f6652c6fd27dbc0cbf83005c3d423992db166a1c806a506e600e75ef801fbff87414e84f3fea14543c6ec36299aee9a3a00d399e7dfc292087a54e369032b838b85d79275583609cc7daced79781db96ea2ba522e1089e6f0f88675edb0cf1d0186f8b0e8d99c673ecc4cf404efd19b1d80f29f02198d33ea70b16d3c5058efce7594fbc17e1479d5ac6a83edf2de98e9aef392aaacf89c36351ec8aaf8716fab2ce5442e13962b040e7e01f8cec11e56fbbffbde786d825a9b4d6da34a33b43842d6287f787192df1bacf8c93e015c531a8750b3c5861d03c27331d9747ab001c8cf5915c55b83d84234e6a8aab181a8e51baae4191e5f1893350c6bd1f486e8185f0f2b0bcebf06c4a22daf470870cb5886a619af4d40452d605f3683aaa1ef1070243babededbcedf1e94cdc98f551843020b61ecca1e7dab6c84c539b5acbb103b364f3ca29ae377b6ba4386154696011d1fa2f040701358344cce6b82e3149903cac9f47df3af8c0737bf0f5828cd07533c57266dc952a9067902144be61a1aa3ea7a60ee03b1b173453ca7cd26b022c09713c15d3fd6d5d8f8afd5a0d93be3d0215246d483bbd57584a83833addb397267a23c548f60819e826dc95d3a9b1651edcb5a06d504d7b9ab2898022be0c3a3e0e3cafd88cd7715c511cf72dff9d7e94f9c0f14fe7c3f9faf8015ec106907335d02999626a2b2c92f43705082cf84990550bdca4d99bf60e6f605cc0043c7fb99e94c90653df9775708a8b3676abe218c70aae07f2935445915237362ea9283e5854e0878c0bc004ed5f87cf196cf671c222b35fd2b11d39cb908ee82c5a5cb3733d00be044b486533512208f20fd2984b9b68bc543786a10b3921cea2b396a30e0ce7560550d3518b26cdaa19b41e8a823650e4abec755c7cda00e6fdac78f9af0365b5c43717ae89090cb998772c62d14b7d849d51bb5da3b8ff796983a5ad82d33ba45b8c56cb7a806609b11bb5077ec4d302888454be2a48be30455800af5e1b2f67031b6e7e8b3662a2566d9e8c6c4e10b502710a90252345d2fab81128e880b4a4acada389fbf19d8570b6b96fe410d1eb62e691470014fd925855ccf3efabdec31e4265515b59f8976bc22b8a2fcbcced06103fa88caf64cedd81c4c03ef896d357a6b6457e41deeefc6b5e8ee6104271b50122c42007ac9799da5bc38aa8ce460bee018914490cb9c51110cbf79391c0315f27e02137df7e398680de56e6605804235a70eb5b6353e4c2037dda74320d4bb1283d238608e45f36107983b29308bf2dc8b802da0480b35804a82d267b98c459944b2cee470cac18a756b9c58789d99072807af8f259c19210d893fae5763088ff4161967ac77daf552de1fda207d7a30005b55e41715f80f3964033fc5d5824f1278dd687c2ca2aee24e7e39a02c5b0b8c7826c0ab9150689bdeaca03970b8e58ded20153491c4cde963a6d97fb8247a55c3255e5c45787216a3fe9483038fd9f7c16d8ec2577e579134270cbfc8046b124b677a97b8a19e47ad480a8903ac1f130773a6e15688906d49388738fb4c806fd1026302ef18484598891087d651ef8736f4fda290e6e446a311ffb30959964f3a46518f7dbd21f2dcc4b9c0862516225372814d6da3b2a9b30f091d2bc46102b24a5877a2f80fc49fdbcaa997a4c3cbf085aa4ebafcabed2f822837d2f9a3ee29dd00d3aec15e32cef3072f48d747ddce4d3e3dad89bc2d50f6c609438f7310f1b203acda4e61fa6a521552d2de60ef1efc05920a689923ed321f703075658b96c3ff698ebe4f14749e0c1e4a551219f6b982ae4a8619f0ef68087eef968e6d400e6782e5775b06829a9429f950054db802d1a73b8ca6cc6aad132f751c0ca54266afe69c3a49ef0c8e5640cb9b18d6c1548107f4495f844d5349468f9b9b10573fdb860aa6d236d96f4490a2cefd46eedea5e11cb6798111771d463837b485ed4cb71427166bb2f036d70bc49b672e6e4c64de73f8c7292c8ce3e9b53e5f0f5b920346651ea81dbf37191fa57aecb0f88f0296c953017d1f916dbe09157029d919cc4c322beb348614da718db3f947d206bed234d4a7a4bcf956d49a286234081aabd582aa6ce4bd01e9d8d41d14a4dffc908e02ccbc82c5ec2668fbee59aebb47fbbf4cbcb47215ec4a3ce901eb633c6c3ae5c0c5fe3df55ec400db1ba3e7775d42e7b9028276ad14414baedf816edb390b6dc8f3f1cbca2f68066f27d8034ae88eed3b69c5b58a0211105453b30f4373a0152e6c9022ae1b9dc37e6ce4566f49201b9569d2dbb9f9f0296ae17134aea3690f7737132519105a0732102113f68df2f313eacb0c003670517966f86ccd65ee0c8d4469c62e00066bad3258b55e11058925484ca7405cc8037163da5da0d3fb0d1ae552fe6bf93111e14c87dbb1362e45128759cf4db0e9e62387df42ff73fed9729f028db0e9c92f13c6651e0f5131bee881b6bb3e1ca53af79e58c04230afc1f19718fb6f89b8e967b1279e0335ec20689713c51db167e34e63579dd4712e445d27b63ade58d8a64ed54963e227d580302dfdde4cd2e78dee3ac1090a7b8781d51e8fc0403b688205f26c9175275754f356fb7ce67dc510cc53e7066d7d0618a1f242853096ea331d3a026ddb443d4653624895ea206707968426335a5f0220626ea4c3e65868b3fda162d7f37906acdf9a785c63fb740357c723e0e1eb23da55d40413edf84a531adb030483da47098bf3b974f445e45d2263a4ac9fa3f01a80f962c2e8474ea2e35d048feea24e6f58a055628548fa71cc62622045f746d58fead24c26bf07c690018841df7cca84f6221eed77e8beec78f5ddc4318b116305ded00cefedd2320518b5f0f2b464715c921b522bd876763f76c91051e4fa022c6f1b92a39ef69eee53f17b1d811163b6e2584bb6cf987513b7072bc610a889387523cfdbf84021a9fee1d7de84be80c9b0ad981014cdd6d96832ae5d9e9598d530fcc466a2fbbf32ace1eaa82efcb3cd8e0784ddee6481cab3f91eb4e832e6162f80ee57b3b9689223830f1f6185a4d136641d511188d15768e6d60a1386921e13259d3275a6e8dc5954a4305bf207893751544aff7a8c2072ff10f4508da594b9fdde55f4189cc3e2d9c3961ae50c6018f143b3eed2833e2a594af69a7ca1f067e36f81f8997ef2a217d182d89cda28612731d0349a39c55da60b4140e0e03f1b4e6c65c5581f94b0fee8dd5857112cb03c0e0d86003e8992c4d5024c8e9939591568d2e54540152b7b2868210e244d967337c9610fed7fb5fe04f4d5b621fd1ec2337fe2c612664c509fc31aca9e260f4783a40d21591e7613c2905f600723926b1b7766e7f0159c5b92f1e6828ccb6cd9b2e8cbbe5f5e56000385c5f8cc571a960687e53d303d346fb4ccb5925fc506fda98790f6eb9f29bed65d984c160625bbf2c54515257ae81f4f12accd947911c036ea2e1d7c8b119f328c330f8b6a7beafc26c9c3bd211ff49428aebdc5f73783714f3efaf9ca92a9615089eef1e8cffbc73c7139f006523c7f0f3941d991a5d9935903d40200f7849101a86d1b8a23abf72d335996630f2ed1cf4222d5cabb47b02fb5c6aef05e0cc4425a29e057786c5f1751d182c88af3722d7f0b32a599506c578bac798536ff30fad87aa73a0549548e1be839079f56088dae60f7c7ee842079d901038950ec5929ba5b8e894c983a79ecf57b3da7cf27bb412d1a20b1e7f990b661953a4ef1ee82ea2424905ec37c361c908303126beda63fd1e776e0de976b01e27274a23537562a1b4f219cc1c6fe3687fcccf73d0d5c28277f9c9518aa3723f99bfd31d7493c6835cd21236dd7a803988d2a92d2d1405705b6e33905a76930f5588f38f67985db33645efe4ccef82240bba5e2df5c012e8bc15990815060df4ae6eb15f28e159ab844c12ba205d24f8a5639e240c599c01e8a9ac504b5eb49e69af578a619004c8ccffffd515247e20c8ee9f32ec4a57839dccf221c8a7fe26fec2fa771d5cb504bf70241fb5c766bf8562041608aa376237e49d8bbef878fdc11fae3173cc44155598e4f2175f582fec2e36483b5b8698802a2dc33111da8632e568d924095820aa92031c17a7795cac7492be4cb71cb90284ee2d4f928985ab6a5d0110cf8ab8cb6bb4fc84f96f3db1915ff0111b63ad88de4be3cb23e0686badeb09b2a5b789b958675b262e1f721b62a2c055711a5ee315a584b42d8af201351bf6005bffca22c47ac13f35c47092e33340661032181ff452835cdd7849519de4a215956bc486ece326ff5c5b30a58d12b116b2aafbe15d38ef853808c87118e19d3b8898b2b900bc260d124c3812db01bc70282a67413dbc499fdecba3d82da809ff28a3aab3825fee797d7e841ed18295ecec55e0b228f723411aed7db18fcc53a4031b4934769b725c89e588224d3f3d988041f219cbcf63155f52ed331869cb6c7ed1a38738f6216fd80fcde7e87dd7c1868948e497a59f03f905cd09f8a546d679850392c3e3249a5bd083e72986c004fc96a6a2c357eb55810d68f3f8db8924345fc410b265363002c3f7213393a38a18f026432178c6b337124c4853313c742e8f60e18aedd8f7de908b0fa768a62214c2e75af28472a1f10a20d48d1465e66bd2078a7286973f97b351b8d7f37d177f6bf6ff281d6e81dc4be7e1be55ae382906faf8aca926a2dffa5f92ab125403cd26728bdf03f110f1d6698bf488120e158c81c10703c5a7a1a4810dbca7c349f02aa59d356f75d5bbb81eebf5de908321f2a6b6bcb04814b8f85596e3e947993b456c10a95082471f6a1a6f7df7b23695f4c70b991b9b19fde53a1e9c7401b6f93f2c74a0f9ed347b7bfefdbb42d74b7cc7110ab9cfda87a18e0d32fd8e2368f2efa27a0ed39ab8477232f75d338554ab0726edb22e76151a05e7486856d19168a742444f1468db9312536e0003321c1ce9f30edf317e38ca6f051598d4e96c4fea58deb2daef0fb4ba576df98c3e0cb6c2c59cc602ba32b0bd6f22bf50367dd7966e6ca4d33d7abb991c026a7401f74ecd5ea7aaa526c816743f6764a9b5e9be03066d54315e31332a2990f4c616c20cf20457af5829bb1b7287ec764bd1eb221cd641ba9d5a95d66647226e0879be1ea0e2c1919f55fe2fb95d47f799f23ee338285be8ffa18a38e454f8ea6348066d1862293d095f949f3d68f011bea87be23ccfa67f1885de67bf267ce9e162946d6cb0ea8ccf364cf63ddf4b90630fd26b33e6ace1e2d48f9425a77f156a2196b56ff712549b4208699c2b90b9a64bf1d7ded9a90020ef10dfe4000702a8564d215aab9a1dddd5a084a48c0a409755c8fc0c0b5ca4013a23b13f5d70c8a4ab0e8a10f3bd370dacb27bef37580d4618aee251e5ff19b84e088303f9593d7c4d5308493887feb8d2b8ba35a1676383e5063b364e318785c19cae911c305f082617ac5183912dc4444988adba48579078e1ba59b993944a7607d3031e04c803aef312a3c10c6a0056447c9a31e1b5147c12b2958a33a8d2bbd3f2492f8b06daa8c944cb69abba3bb586324a05e75c5d2ba333be401e78daaaee4e3552a6a81f6734b1b9bbbb3bee69896be76ff7773f8f347660dcc5352973b6e1b8bf4e7719638c319ec08ea38e2329381bbf05d8ce23d404495c3f3e7d61adb598b63ce433a34c2ac121a38409a6244518f83f7ded58208913243656453c21dcc9aa069984f9c58f8a39f6e610e32791827863c447d08f8726bed42c8242b19f7967a07c4940b921868ab73119fc706c209b4474a318b260c06670018bc160e8646544dfacd895be5577a77e20f2da898484929a02f200dbe910440001c4d8717246d22cbde724b872ba5646b79138445b8671d7ff585e3bb5623e6cc580a0d95af356862618956a94703e5820c522414c8042f52f37184045ac374b11ca9b20b210482190b49bac980eeb313a4a9a8ad74d7fb6602e66de8ea440c7965d3fde5deebaae38e9f1476bebfd6a912f80b6fcda4e8740e79c734616cdd8b2feb7393340bed892c18f7fa6bc7602c9177eb05edc7487627d30ae24dea8786256d4147250543ca648ca8ada0b40c7145b5a02471e1aec8408c3518fec8820c372821dae0c274527471a3f19e2d94f84433e2dc421a3ecc972082973e20eb5b327c5212ada109195dbba7c79603b8f257ec438f05cc6550ad6bc2a225c8584ab903fb4c4f83d1c652c91e99d5577a7ee9fed44dae0b16518f71f2c890fff1a16bd31cff5bd3ddf465640a3fff5a36c777f5e3b83c22131c7b8c5fff37fe89cb33b31bd5577a76e2053a7432083d2eecc9766df31d6d6c8a9e54d0e1124354f548c486a52aa7af57f4ed1803704922227986e20250571959824047d71453b9aaaee4e3542e4b51329c608b26625d1622ac74aea09eb486f8b77ce39678c31c618ff8e82697f9eefedf9843bbbbbbbebfcf973767777f7ec4a1c34b64e5fd5dda9449affbc1c34f37c6fcf1773c5eeff5701db587577ea8b6be7d63ae79c73ce9eb509cfb9ba5646f72a71ed4473767777f7ec392d62ef6f772a119e18223eb4e745e5a02f56f0a60959b5bad60c00a81029e890a24fecad8a430eb410b7e99599c11b2b5616b0603f63840c6b68b9c458ad3636a0c4305998281c5b8639c003ac8fccc8937aacb3fe796df92b64b7e0d8db755d43ecd038d7d4b5323a64cf6bcb30ff44dbe910bc0ba9f77c6a57e669667694372268cbfad377acad5da9eaee54a40a9ea14d63a52a98ebc3755d3fb8d0d2be4f240aa260cec93967cdebbdbcde4ad09b6311c3ce02638d1dbb3b05cc2564dceeb924e2855e5c3b6d9f835cb1e6645e34dd7417bb40c4cbd8135b01a4b19f312c84433b26e87562038e5577a73621f2da8984c43581c279bc3532e59de77b7bbe25eb929fa6e9d744b4fdae1c1316c744598119248e1c8874e8e9e124d5c387e62e59e66c21c1206b4ac88ee0d385a6221d2090ee5068fccc704a86452b4da292c67c90019b812c07183473fc26345d04d84e27a499221fe3c5f1a73bd5878fd7ce2022249c0f247e360aeb9e4f878e0e1e1d3e3a8278ec9583fce64db57aedfc057154c2133b80b79734d0b4f37c6fcf97032a87548ea91c405e7260c158f8b0e2e9abba3b9587168fad291ada14f0050686dc3e2f3ddf8ea2d74ea3e376b02fb926e79c5fbf7e1e97901afc7eeda61f5ab67c3a040f78bc76ed5abbcc5ca0f5aaa291937979bdd5c65ac1ec355e71edb4e9fd18cb60d1cee2daf9412cbac85ba4d921eb345d6063eb977bbec296fd02823382f53fa3a25dbf5a3f4ceac0cbebad2c35341454ae882920d0aa9449155298431e3d28a0580979348930b36a0a25c880b8440dc486b4156056ca2924125e44d69c2d5c4101bd6252cd90f04258aaaa01682c16d840ae1a0201e08d90b79102765790a00bd3add9cee331f83202068d95a6a837236d3936c4220587ebe484c482c3f13b9ec87162723463c1b250b26851164b8d1fb09d4e4d924ae8f759c1d982eb47e3fa21d9f2da4903d4bc2216ccf3bd3d1ff39ff714c1dfac5fce39e7ac813470a5adeaee54dc11616679962c69f0e2b2dadf381966679d1e3f5beb9a9c7bd064cfbc9ecb08628a5009349ae1b45c29140c7ecc704998228ccc7018289d9804d12c8125231fed365ccf27723e2ce8910c0a7101742127d9a1261b4c07de2e595c37b07037b4684b4cc007b8b6c800dbb95464f32e524ca5e29eb28ffddd3d63281557ced5b5323a0c40a3677f659d7366dfa4949d5f4d1aaf5fff3ff1726673de71570010121239480c111272c11d69737702b236f7ece96ea5c99591f6e2e34134e503071b845716b034b0f95d69bdb8fc884097961ae50918960cecd26cc5666903820a8d118ba942e3f0c35282921241d3860565a6394265f65bae7020dbc03c4688159729b00cab909617ee095139c584b6352ca958d0087e44ded9cf28893481d16c8996bcb678c170e36660f900038dfb240183866191202a18668209b09dec54138c8edce6640c603b9d629cf01a8f318c09d9c25671338afe3a1f3330000230098f5bb501245926092c0820e7ea5a191d8d20538d0a018841642a620100305aa4080238f044442651a800a5444e4d80716a229540a0907375ad8c0eb9227fb42408070d18fd3c09f46002d24d325990700c26af2244681236d5488080b4d6c492a098f020e7ea5a19dd8b57c68397b455dd9d8ac46c5a42702043d97444420327a2134e8b4b8d9f138a065a969cd816969cab6b657447d6494a6545c9e2944a9a53909aca51abc481403316954404a4b03f258e151476296465967375ad8c2ec9a854124196b6aabb538f84d8dd03beb7e7336e55c178faaaee4ead62ead73510def7f67c2eae9dbcb7c970c2adea9783c3ac80a963a73b07498829a855d368f6563f99c60a66960a05df860c8fb25cfc2ae88ae84ac5aac5b5736fa5dcae9a4e4e7e6443431929455aaf9d4b97f9de8a346f4656fc36682edfdbf36505bd760a6f59c3618fd8761eaf9d3e41b79788a8b596cd70799f857473322bad8351c96bac25e5b5730a08be6961e97fc78e3fe6408add8d7101707b345ea1bcb7244294d77b79bd7526640476a4d84289caedc87a1c5abd4e768c0269301088813aaf5df8beb7e71b8135426bc4168911eeaef5306b2d82a84514b508e30b8edeefa33d039bb876eeac3751d06b1c02ca6ba7d41410c785c0b2f05a53b0df7d6fcfd7f4e175d7ae9fe808b6ddb523e53b53223670e0d1f10244051a82339a48d068fdafcf4b44c8dff925047aedd4e1d138a14fce39e7ecfefeee3826d3baa6423f3ee6d83086d92dae1563dcd418638cf17bfa479a98ef547577ea04c47fff7f7f77cf3a75f2a8fba33492f2beb7e70362718004fdf8c0a1a7c8c7d09f7e31ffaa97067a79c432cff7f67cb80998283a43e5f14b6cfeaca8fee3f69cae95d1ad60d198677fa318aa8288c662b18f7976d7ba5444b5ab60d614000d56d8315c71f11952a0d28282c8246341d1d2567a8437565452302d48a1f9b847af2cc54473e9688b86228111189bf11065b2134da7213166b114eb051ac07a5a16b197044ce36c9f30265bd01244ab8dffec7975a8f0b843524cb44b3194bc0c951e229058063d3821444a967889664870b2f276f0fbd984d8a4d8c4583401d6db954b3261ae0f74d7391d781f269d014bfcaea100e2c4b229e8068ea80bcad7b056bbb20828b65fe9b5b35dba7f7bc2740856824f966cf79d71727659816b8a8ee092d9fbf378edb4f1d9b4d71abb9198cebdba564647234533b5ff517777f7ecbc9cdddddd3d7b8e6a25b7353faf9d415c8d506badb5d6aedddd1d8679beb7e7b369eadf3b7d5577a7ceb8334ca0fe4f95662ef746886be79f4594ed6ed8b061ff079359441ad8b402052b3cd13e38841177e0d6f62a835209b585d3a0acd141254313d7cead2c7af19305d142b5eb97a4fa315572948ed74e1e9f5b5490e6a1246fdfdbf3ed648ea636facdf26802d38e01a4d74ea81b06a4b6cee9291bd70daddb8d2d1aa0ceade5d17aff6760ce39f7c0f96f5db35321de4dd608a68cd09a77523575ba7308372fdeef8f71ae86cc1d902fe4fcd95926136c675bce39d5391937ddb9604e42c462ee3a84c17ebc46b3978f61ca0e02d1d01f3f603b7bb745eadb05415a361ec96e3ed87db380a972ebe1ce6e2e91a51252a1897a1c28cd0d7fd775bdc00572daaaee4e456a608d369e0c8628d8cddbb3a46c193b2015926d4f5577a71af159ba3efaedda4c4b80b60ca3754dcf36e14cfa371313a52dd3745cecb202a11f505942ed4cf3a7d1bc03c9033a3013987eacba3b95431047631c8b61ac8fbcdc73aeae95d16d10e2dad961c5ff6bff41435f7577ea0d91d74ea41d7383a4a1316086279ba520455b4a517ea327e6efeeee39e79c73f6fcc33173ad311c96be5d8c7ad02550ec852f64baa6b8f4ca79dbb04e66c4b08bc3f38e20886be7a6da31364c2741d0989f7149c971f878886b4f3592f031bb44323b91c92253ffff8c0f1e10ac8e550b6d2792a5b165a17002439a4f391bb2923cd96812229b4ac434c8629a5a0a9a31fc278c9fc3083a0ca13b6fe6a57d6fcf67547aed34b6dbb8a4bdb040584e5fd5dda9482f5233694dfabd2405612c54a12f62a631cff5bd3ddf91f1883d52d28eda17183449f83a450cf5574667a4f4dad92edd9b11d3b104e8ffcb5f9f4cead18e0acdb42b2dd2f1229e221fda6b77c9450c588ca1d74ee22d4611c8ebb95e5ecf25c70ead6528616dde4a1b32cc0a59149731743153726110634a4258cd2b69696467b724d6451285c662c1af1fc4942dbf8ef5929227fa774ecf648ffbea52933503ea71bdebbae6d0649c7375ad8cee6cdacea44d5033e79cb465dd41bf6b4ce2e769abba3bd545d4b16518ad5d2b07ed94010ffaaee40c513683f55aef1ea89fe6fa7a5d07d775dd595a9213fbbd5d4adb99cc917271606a9da1122d6108a5e50d8dd708026a11f300049504ca11f4063aa47ae8ff53d5dda9146051a0855feb17fb0914cd737d6fcfd742a705cfcece2e903717501a27a65b60b5d0dab9666bf71744b71748ffaf73479d0cda952b06bd760a6fc5a1bbbb1f518d7af6978350b2351196d74ead1bd1d60b870e4118ab1c289697508e0f962d24cc3942530635ec5ff0666519e499b1c11fd86d851b749112143caadc58148351af5bd0fac0d212239421244cb860f710e481c803d263122e588245af9d460c41168453ce31ddbd6c0daf990d1cbb8a18bff61da9161743ce1acc393be1d078bd739b679a9bee8e3b2762c2265a3c2f50e0646d2e18096d4ea682ed3ceeac2830918bbec6396ddcb2e5588c75ecbe0ed45157dd9d9ab4b46598ffaa7fa48b4673680ca8f6a7f47fcc612daa2462b36f970989270ba1502811d31dca540ecc3dc5f8750efd0860da9593d1c9685b74d5dab7031160d77487e2178b988cdf8b55d962e91944048db5ae95d105197aed2416f12d8811639a940c88bfbba38e5d0b39d89fd39c3353e7993ccff479669009ad260c1b51378ca4685ca091543289369aac80796e94dea8548c5e2ba70602331a04104105922009e35aea6414000914c85878a48c583c168f45616148500c0382814018460100c3301c444124869358ca5a4648157e107cd6319645cd8265680f4b706dc62f5b31a3d6e48fbc2bbae21c5f4609f6a39f0ad98590e87144692ccd8fbbc25c0eeac3380f6b0807dad017f1b0a89d710a2b20675709aef9e8b3dc5ab69e46ee8a1b0730c57d8044e3c9c80cb036631aa50b47b6ba320a3bdb9db0f1ca8bfba68561e6a6d24502b9b42a12283bb6553339804d27322e11982f9138096caec858663ba39a25f2263ac8f996cb0bbfbf21ae3b07eed5e57abaaf79d93d4acfbc2ca12f4bdcc400d2589adf41e3e625b8c57f25d23c30e71d06198677130ba4c47dcff1187989e12b7aa5bff62c79fc2141a1fee2a9c489514db6d376e837d8b3216873e25e2f5eb78486cdb9ed060a74b0a68a30711971e5b818c2b4a34c961a427723484f2b2852952316eab9bb23d62b25b5ea2bd356d025b3f2ab211b878c776b4eb63b4a709e7bcf418dada72bd9199658d4a153bc1d08aa16a1a56424e661af5dee935d772ce4bcd04ec0112b3460d3ec6bda53f45a7d33926abbba78f3bfdb15a7daefcbb0fc724c4170c6b73375558d1706ca042d771be42cc3341d83afc8bbb84c436a208e27d39938edad18879baa50c170ea0c824b876b96b8819b34c955f8cbd57162d8c1f64899c747a91be3c1ce6eadd38425216dece9c6363a964633ecc8e669ac2642a0969855ae959b87a36eca4c587c15c64cbd354eb9a2a690fc4ab423dc98196587777142313ebc34b8d8f7349d8793224924401413020d3b8acb791e8b1aa48b97cd91b473cd45b942974d034ad370ca85fe3b97e78b8b7817418ebde1930405f41160a9d97a4b24c3dea41318d6019a482441f1a4a1d362e472933e491a16909e867311b914e10a95b8b12ef726081c2b83e31574c4f046484cf53bb807ff65aa73017f4c104bcf1cb49abfde0f31c92dce2908d305b0b49df9f41413f4f2183e417f7163422251b8affb85152cdd23f3fb045d9a077c82fcd810882711b1c0783aa894cd587fe0a576a862f72bbd73225db91f1693783cd1d22aa06449d7903587b367685753cef12dbbd8e209841d825e43dccf1991aceea287d3bc7fe4959c068b0cb92c32b553a92b5c5af6dc009cf9bd0113105d1504ae2f601d284d6a24457645644744f55dea772ae952f3dadee93e54d67921f43f621ae5ac0af2fc32c5a620b6bfcebee293f599e09fcac249ccd0ab2845a3002697f167941f56779415d721f265d54d7de1a17a052eeb552b50102bafcdeaa5b3693e9d885bf6417185b8afe46220d95dc45287162046800a3eb552921c5d83ac394d76430bb730db9df042d7738ddfb64152729e7a04d4172f35dafeb13b993f6633e670431a5cfe9d9cc4c88196dd1795d101997eca744fd58159ef125a5843b46b87c86d9fb2eb10c1c350ae87ca7b92e91545b3fba67d172fd7d07036639b1d9ecbd575c2293db107e4fc1625bbd157ac92d515f5be983fa2f09a2980983123b0d05287d118d45847f925cd68348398a4ba997e15afb32323033e733b6a02d29d922e87bfb6c386a288c1f0332d4877f78ee8c11987eccc517bfaf006088259dd2a03c56b30077bd773fe7ee8a0d8d3a571752fd6ff94c2add28e8406eea57622f21cb78197c81bd1c79b13fa42c2372d267875286bebcceb6e64a0cab922724e35996c028f30f701e188a636f7943fdc3d7f7c43f88df6da09d4e80d5bcc907e54b13ffd73cbac62dc94440706e810e4dbec005c53522d44554e0d325f5e89c51b76cb5c21f3ff14764ac5b19305d1479273896aac1498373187272170e49cd3d6ab0470821c4ab28b46ee14ec577c19192f227335824c1eacc4e77d84b1535e11bc1a5446c5c4533bc9ca07810c2acde39ef88d8517dd74cc21537241e926b941d71b77ad0a8eaaa14ab4203a95e02c7a7a8ff51be424b92e5f0b209b60127709523fcedf0b9134ed5be9b2cac7e9a81ac9bc794b6747d4f66b564fc76f1bd03a87f5a0380930cdcc40d1bf90ba861db82f679ac5c3226a5bf13a1f45d4684e43f3da48ea74cc0788d0c1195c2bedd66ca5eca73d3ed5ae6901425bc2357f447f8a58b84dc105e586a59f8a19cb81fc98cc59acdeb3fd33aaa49211ba8b2cd5b9603a4908e61aacc892600c626e5dac7d1b4770348fbc1f8d8ad4b29153abcf68b78743d007ccf3b88f0bb94e1ffddbbd143d2ee879cd4f53f56fe5556f16eea4f2220ee90e81f5139bbeca837e06618cea280872c5414e57ae59e2fc0d116bd6ee70291e34b14b8bcf45199c2480934f8f2ac4b4f48b4050a791a052f95231672fac73168ede059d9bb57ec6d1542cf1809fbaf50897d7594bf6dcf88c4e2a3e13a95fa7e4c28ac308d2a290512035d3dac172e28c82b96993959361cfaba33883c7a25f8c5133b595aca8f784b80ce30c60309d82f857f7c7f8ddfb118d356ed4b4924ab8218bb3cdb22b5494e780310c516e8ad85b8d323a5802e5c230642c8cbb984a1752e6410b3bf3369e36a35de8ce7966166c63fd2eea5ee164ad9a8696734427ebed9bdc89bb86c963ed0f2e9be9313444d7995e64407b04b5b90c68cf377b9fd3c8cac0bdf87fc44c65457ec10bb435ccd86d519298be78c4c022348563df1489426f8bea5742acb8f047f11b2db3c44ca4ef8b38f3cb9ff23f2db857dfd38f4a9d13481fd594b8c8544f3421e4969b85733efead3c6529383971e419dc597c716a2c82e112a73d07d070bcb11fd5bb107cf39ef02ea3e30d6ed0c545bca8a1e3db9778335322e74df9d3cae4e4e386172e4a68d8bd30bf0d732b047999b0d7331f945e0c4306b18924bb817e7ff10c6c0b14dffb501d4d88caf7240ddcc4384290e4904ea26676126cd0cc6011fe67bc9fae274ef900004631d814ed890afda252beb81c0f205906e5bf9cf2bff5e07fc835a144aa5a788e933f33463219c5d72a168f878463dcbf21751e7f7b11759368a5397a50243121a9dff5a8b4fe6f4f1d227a509058ef283d074a8bf017a8eb2a6c6223e4f1e42556f42b35c7d7eb0ade80aeb83461bf5c580e18f2589c2b91f3c52e593277c35209117e35a0aa1eadf06f1ba4af09009a20960cb5a32b6e8d0671474f5fe6d301bb25e3f7b60b49589550b43afbe5c4d24234cac34c99ec80f3cee62c68c9394f2c1c347e2d2fbcdb1653ac8b52eb68e869e1ed248299ea0d9ecbaa290a7bdd651b0efffd5a146a8f9b87a3ecc615e7b7376a35685615f814806a58dd1c12329d7ee30a671ddd760998fa55e603c7e6a1257ce789be40ee86c00283c925450b02e92a8860d8eae39492e8311d94327ecfbf85d75cfc0afbfa48d3da1e8d6d876597da69310f7e5a854eeb510f8f986037c96b42416b8131c8725d3e996215c93b1508d3113630bd37652a4c9d8587c740c1b4f041b3359d5bfc9eac357fa00ec6e871220c6632bab2574d1da11163fac1fca9147823b0da8d5abcd85e222e5a8763b0623bc3356398f8db49b5308637f5f0d7ba2468a49da05f0e1d055c1d60f006c2aaedafa908816c06faf6dba62c2c3762f95df0d91baa95084e5b18077f6d112fb4e58b00c00ebd7e4d64e56823069d2980b2f3ddc107d6077059da3d705c996bc8ecdf400f1f875890e64a1140bac72413b8f80f82dbb81ef3cce5e054245744a126d4c3250a2f18126786ea178ac721520610dc3a8c271d0d5d02b2c9b74e1196d149c8753cd23a29f996c637d14cee9d8cb146f30e69e5d18810cd569db510181ee252242a5d62291645eb50b18e46448c98c2e0d5641beffb9c5fa94f65676f9564d57805cae735a5f4723270a9cc1f182f64443039aab4690cfe21081eb932fd8f484a89d42923a21290a31d7ca432bdaba4d59ebdaa77feb930628a40073fde135d7ab2f940bb39008efdbc93e6b24641c84743a74acf82a647176b121cd47dcb5024180440f51720572817ca1bdf15b5ba3bc879fb18ea1ce61fba4931b0f24ffe27ba526943b694c895b9221170a27784a07b0de2f6741a076a1c34ba727f883260e5792d60667e567dcd542c13a69599e0b0605e103f631ee09baddbe59ac1f2c9f66c555b79651cc0ab503439c4fb4143b386a914d13f7baf3c6d565b2921fa0e024d0bffb822e37885357ee4d71c10355fc06c3b3693697d40882acc147b8e4e423565d8c64c9e5ebf859a67dc50171d9172a435810c4efbc897974d73150e51e5800277a9ade1916b16c7e012dc7e6c6ee9c8626612a2f5f6c4ed698c0e970effa8df574b8cefd218b71d07c710e922d439672a191649683afce3816f89b8b8d357421b9f088b4c21c151094df6aa5ed735178b2ad60f2d5411af8cc5f05605ef3004a0523784251c179f5a457029d8312cd7f35405ca7c98681ae5e4e933111b721b7d4cc0c52339a6396d5bdb67e04d741c8bbaa3f19ebef20e10dd90cff7dee2de19dacb7956075ca0a2eff46f49f3d50dc27d5640903c4877006f7e30f67d0dabe59a1da4f5a865b029af3c72ca2affe8726e3efbaa4c9f036e613fbe61b9c9651ae3761f6157931b1bbc83bb55ec26256393d6702767bcfdbf66660bce79d83a5fec2f25e8623d0285682ebae2238fd4830b110e1c2621992fad3971c97d53d597060bf0d131df633ea9831aef9d0a448392402a0148262b06fa24015aab7b2b173549816fe213fea1095bb1d596abfd7a1d496f3a71e42e95b431cf711249549e6cea4b2971a58740c819bf9454abd0e22fed47ec0c2d165d39d158961ca8b94ab880d195b02b55efff0a444565805ec22e1992a8c302e9bb34982a340d3f45a5344b98d2b0136218f5e81c917641c74a41a488ba10413844b66b52674d269e53f419e100f511e090ba00bbe1fb1ddc76bf3d805d8c808bf3eccfdd70e5e88b0feb3faf94ab8cae0ea03801f404dc9989dfc3d4c018e133948d30650bf60f60f88b18aca92ec94df8753ec148817d4297d4e9985cb8faf66ffbf150e7c0a8f358f6ea5fb68e8a69b0d49e8fd2393e85706d8230fde3f88e4f97f5846b53642385b137cb293777fa4cdb0cee6e4904d68215092ae4262038a3ac8b9cd73b634503d7060b4364409a1c332ad29c132abad00c7c175615919bb0c6f1a7ffa1ababef6ee146caa3ff47541871b70e09d2b81b279460471e5f8fd591e7ae5ce7ed0a0e81624a22f75198b60ed80a7d13c742ce328fc02885b4800893a2a18423540aae20f6118d40e041ae12ba0c4e6609a5e252232cb0f9595920db97842a391b869782519f9e34c5d0c1fd8bc5edca13ad706c8f73620393ab2ab82f1013fd88603d81ec9da99e649b035143e323c2d258e9b2ebe45874a3d0cdf57c365cbbc9894d2d74b843abe7a23218fd9d00332b134a34a204c87016f29c13bc008ed97f8238a2ff01f11bfbcf006f4adf03e00c8d00d5fd87d79e1e5d7ff133e05bd8ff437c82f70b7164ff07e003cd1cd27d037eb1c6fd5ff790d804c004fe05bdabf26efe3b256a5dc85aca18c73180621935be6f2cc70d58cdd594c3cd2fa8e8fe2b82ad9383302d1fd68b948497ef57cb1d01e37fc81ea5c3ae5e68debc663c7ed307e7ce22e634ee099c1a84d062e6725b5c116e20a9f5517382be49424b766f52bf37a7856e89d5a2992eef6e430be559d309259a22ad7d790096cb191670fc550f00acf6cd9de04c24505422cf728cf900298552b3a98be0bac6d91b18e81081634a440c7cd3ad00ac3d1b8c034df78c6527f4844b1ccc8d9533af0bfac7a84f1740ac11783c311d18cb945188f1f8514180c5462d48705671c885da5eacd04e3420cef7c7f2809708d24dc849b11b1bec4bf5ff23943272a910b25a940081390f3043d5611fe73f11ff08763af368df827f3f38608be10e6b87d819e7316df5214ba239e4bd70870474b798fc0e67603d57d380a3caf8f9c22161b1eb9431091f31be793120e323d446a7e1481b2d2aefb6e918e9d751b59afcae35df3128869ce7831e4293b475744eac050d8b283de62686a00ffffa2c872e316835d06f06882d064421c71908f974f52700319eac478c7de52fb17ef801023c9aa079a3a6a9c412200338aa4c5d5d74e048a6900604bef3695fae120b578190ba437a57831cbda99f2cce8e29ea626278ca3049de33303e623b5972fe4e49f632c8560fd08411ad00c662732027e1a67f996260192c785320f661e334cfb52e032f195feba1b798848aeea4483f0826dd739235ce864ed7921aeb4b00055d872f5835d1d3e4b5ab51adc41ecf8db2fc343808bc39c17e8a0dd332df5e3e97d5f0748ca6283846838278770b73522d4a345bf3be1782bdebe008977643f0ca1be0e34581094754bacd62cf58933e6ba77a608aa1c1ff6d5a2e4da378334ca3eb062aad4ca9904764acef4e130cf195901f288ab682436dede30ab1e24c8dc9ec460445f986a3064f73016b3a81f5245a92c129a492b99ad8afd8da4689c1a6d26a8d9ec04316ae67e6d1e2a28d5a5e899bc527a02dc2bd483a9f7c6260fb59306553c94b548e03c8bd3a338f06ff61b371e2fc61773a3c400737e7c74ec3bd7ca75548945a725f9722ac619e83bd508db65001015ec88fb4a7899b5b8be8e1fdd0b4e781228a5207f7dd6c83e553850c691144583efa49c43937a68ce498c13e1b29e99a8374b34969715206695ba6535251af006e4d972494cd90c6e82ec390fced2dd8a21952cd93cfdc354b97578672ca4e4b9c036877576cb2ba684ce7e7cad4cd3579a1e67bb273fb76755641f142220fab6b2beed7101c8cc8f13a15c8df03cf204aff9288d418d2bbef8b725709d41b9aab34dd841273e2ec9fb9f57552cf7c1ac63945d0ca21fa80f20762007d0142a32cc25712ed8923af0b9e7ff9b3a4ac34a5a30a102c4c820705e6574f980fc375f3c45daed17201cfda6756d3c15cbae0c73caf724c3a604c0de94c9520598211c2b1b5da94ff89d864ead3c3c951a1b9b7ded45f1ca95a3d99a07bad5649973aa940a73de776373a63c1f1739e0095efcd25ba8f3778fa0df3e4d212b2f95077fe66c55449441095832e3285de93706c44df5d4944e2eed8d7ea8d18a276489194265177ef85ef2cd1cac0ec7ebcff2162b159e9acb45000698163c26844cef8ce422b7034b7f5c382000ba6f658e71fc04330c1f7027c3b90eee1692f8ac333c3eb052ee75e4fe808e0efc584dbd9295c9dc794a22869d6842ca92f82b4c4676b11e54416d7e75429a9f7c354e1c0731a476e7df8b26f393d0011c65e234c51b69b87002d7f7320968653659893f792a444aa92111c3fc4c018334cc9207165fb9f67ba487907ffc2c6bd86fcdf05a48305cf1cc7d691f292686f92e1ee67ad13686b6540ceb1012539cabf5f2bfdd1fc18a44843b1ba8e6a3306fc94729e21278ce9190667915e1489f62659568d73aae1c85c3ad9fbecae44e63f2feda8ecf1a4e466ce5e7bb882a0c0efa83ea8079cb6c21153d608e8b3f27ddc53ece4ffa51c9e6139f922b2273a399c813890146b4abe83e748bcf599a3a9ecb803a4caed970fec69ccd58f37e05c3a94cd04505a8751d4b40089689324dcf3d8c0bcec703c821a2d6be8d6d679220a46409a25a55ff022c9049f9d9ed281d0fc147af417395d39b853885395e9b02a8c8b753f872539f82a2ab16393853e8e632b8c9bf6924df8c17f65e80ad531f1551ff970bf1116792280afb08a88b3f883ff4bb419eb6ecd3815005b946e43bfcbc414dd74419b595e976f9cb6ebf296884bc3947aaee3d2bfba3ca90a024d7b756e8cf0c3f5322e461c009e7b17f041bfc09ee4737243255b9811f54fa064dd498ec812cb708758ff5c186301a62bcc4175959e8faa42608b6345cdf4573e3d2bdc36256d8f0ee17c30a0150408337d7bc5e909f70a3f1dd9ea4c40f72c04ece8652528374b008ee7c0f6c40ce1e2c19e6e1d83968f5dcc6915e5027b7a045302b15a72aedc136ac2869c453dec4f4b753d23c54d73a48767efaafdd0cdcedd8fde44a61889d792bb24c971301f65e8ce0da6c59e65cd625d8f2a7e98eafe3634b8bc7047744742d9d77413a016ca690dcc3190e00a38d97a3822717e8cf84eba543dd5c44697cfa95a9b8ecb03990a18d94bbabd7083de6dda00fefc0b21823877580a746e30d12f18f90d90a4dbc42db9629bcc96983a329f2c52aa2637aa2de2c4cc38c82f256718eec6b05d67987fbc5eda0ddb8036b379a7529b2728610a030ae3e1fe3c493ee35266e0551a228c11ca9c9e50bdeeca40ae4c78ce2040c214478e07d26c3936a4ddc8b061ba0b09065254320e4873a4c830ad81c5624455d843936b722d2848aa8e08858c0c524f642830e552160569ae040f429a354a5687a8495352ef2bf0f1cc66540f6cf19dd06fcedab0b19c2fc36799baf255eb71a9d1a96321e93e8327d268b7c9f649f71ea034022560c51ad9d3a419d372c2e5044c18715b885079c25c7f3bb3b986d16e95dda0ec89356982c44d1c986c4de7a452481cff88d2e716a98333f798049993b87d4e4f64fecb781f156cf7743d8d1e0e1da71be92292dca612d467555610dac4d4f587a801e3825b46d96669fb11a74976b35fd0cff6001866c742eb7198dcc37d6cca78a651eb177724024716312b9e6914c7ec9008ae6dbe7131bdfc8913f1ee2c682dca9afe5c597eb368f819a96a8c7c28a68e304ca6bc332b64337168afde36db052bb1b6b2f3f1c0b6a12dd8d9e16202bf5502e3a1b8845c941d5ba8e7d546007a7226ee7caed4f3634ab5f15a040f6cd73d722f5997238104d861e8c8af163a8fbf73915f21fd63cb86965444f2c25b7ce0aaf3a5e23bb9a50ded81cf5e04159930cf526c7d49c2891036b5c384479134224337d48a8b503168ad3f5b0ed472daec31aa4736ecdc1e7a1ccee19a0e59e5202726ee42821d10302e69f92e9bb7ba16b1845ebcfefc8921200dea7c1e5ffd2d887bb17cd3ae687c11ffd163974fa873a65dd485339b09fd409b9f39a78fd5328edba28ddc7290fd5b1dbeb80555afe9411b90db458213b3211afb2c843e81212353a1d442acf041602252cfe60b910fcdc72409f9262b09a4343e4e94287042c92c5d48f2b9df3b038d075165b336f016b6c46111c7e09ae9755ce138a9513067f34f6babed5b88ca7c3cab11bd93f1512c7ee94c96e5519b428a12ee1de966de7a488701863c9953296444ee8e143276c8ef791e720a1b860283f5a0eafa00bd92dcfd6e0de5f06ff1bc07753cc57895888db4df4427c86b06f0e9d0479e4f6cd1f9a77038053c6d1fabd5b8586c1913d2e74a1090417a015d53a64fea3ff4af57e5c10144e5ee6c0224e38750827ddd0e2cd503d2057099374b2015e43f1bf7d19c1f7b1c64ecceaca3579ca3fd637d08bb18687d0a2293081a02e26d88a8c44f90478638cec0b7728530087d8801e1b61cc6bf76645bd05cf0ca949419230dd883dc5080fe326bf817a8e2c1407b8c1e0234676842a093a7e2a0ce4e0f048d3c1d003a394a00e898a18740fb7a3a18aace1a860e408d3d35064b6766468d803a1da5639cd1d853815083b3e4fc11044ebe964b08398a8b1ce0bb709200c74d978c3cfd92f36b1c10be35e52aaa742d77e2c7789151c0c42702e916563bbd785623bd635283152b7fbb223ac5b570a56cc7ea2ba2a3474e68ab2906cdc8cb3f4a7ac4e95f667d5089078eb418517457f805b8d1a48cc559f29e09564eb1ca96719aa9a2529947d80d0ac386b609a5e0f74530ea60a73742bcc8925721168cefd24a7e1097d205eb40998e12a44921d51664e797cc6696f60dc5b775b9f1cab19b50fff6a093550eb84cc854aba2c5a110062ead19608734e1269eb4066fc597f20bf6e39bbc12c4cc24c970adb1751a8fd8ae148c3e825187fa1c41e262327261f197de43186e6efb802eab0f5f19cf28fea62454d0d1419e9628f350b19236c4938627c6658b87e26bb5f02948e5f95cc728935f4d29ddbed4cd062a6e639edee79fa9bf21d89aa558cb74cc250b31f2eda548bd6493be22a1c3530e9639af4e86f2c54375691388306776dd7351549665a86e4ccc4b13072c5668a147a4f497e188773345235c4f02a5c48e88e1f4d0514abe95425166f52b09091f413f7e3533a37c7093ff528634c674818158efd750b4b008aa6424c45919da754a16f767788a54399e128bff0341ed072a7ffe34bfbcdbfb4a7ee1ed594c27ddfabdb416466061d3fac02eac8cbe7f944bc2e7787223bec815d85c50bb313ec1fd83c5d1785bf2b7bdb973922826896f0db7c6c898045f2aaa73ef1a1c8d5d3b6b831d71df4aaf0c0f05bc0e31d5fa77dc1da9fed71c0187e62a9875555d35c50ef0f6809012acdbedbafe26fdaea8c46e891ad8e8c79b84a6a55060e14b1254a7c25a0caed15fac29a03ae246891fcf4775a6e194c7dd4698373cd182983f265f143d0a48adfd63923fdf8aa7b6be47069843c5bccf1b4c16fc3f73e3dd95bf442a045a3eceb8230358d4858e1ee7f89922714384b01c068b48e36423d0c880744a592a74b11642d558016dd4abd1ab8c4d694c1aee094721a2f70c0f44d5bba1b1ab07f1d3c8c270f2f9be8c04958267a562ef58e35fb0f76a13352a47293e955a8721d811ef0876eeedbe9d9d2dbe5c2ac8091c88e258aff75acbf4e680d2bd60bedf52a1e368fe8440ab44e07fb5becf8336e49012a9d360c42a3bda109ca025a55b563ccac5976aad4bf73bd863e84de65f74cd6b4c47a4f2f6ae758a743a9a8fa5feffce519d1e0a33ac375e1dab827131c6c656c1faab9daba8a1d6a65cb8b829ab5e5fcdf3f7038cec4a552ea9124b556ee9124b5560ef92f8d0da9edb3ca491b08ed741ef6167ddec8ad97793e613fd25d016569a39148b8557e0adf67460b1e5370fdbef79718306ebbd01232548e5d7ce620ede0abec8427dfdff8a444ca214bdc85c0a1d7fb9e4349cbe3479a0924fbde3b556eaf7aa788c2c1c34bab32b1962dc4c7ab7d915f30fb3ba61ae04ba8cf9883734315c7b441d24b4fb22038073c650139e004c105a1cab2dfad8d53da1d1359749135c4130dfa2ac4c9f296083295edc3ea6c556aa496fd363416559f7d5c6f7a59b3db76d53bf942aa29d226c8ebfae55b2a395a9641a27432cd845223198f079a1dc58ea595c2dba03b9d2db79e0fc593dae513064e3b02a5d3a40d78e090e595a32b6a9cd8d3e222844fa819697fd9b3e6d7ce13297cac3619cce9972f34003e7e877b58375725066e50b7690b2f0f2d7c14e4826630588db20335832d9e011b7a83ea38053c75f5f97b4bb68d7c82847d9e4f0ec439594702b203bf7dbe0f978404623778e4c249ee0e94e7cba60ea6cdedbc37106c7729fd56293510538e0bf9a4d36a3098f0a030511a7154e88490fa462bcf9b4c5d21c236ce19b5ae17c07c47870bebcc6807dc9ffd0b4abcb7b90b09c9d6b7bcc5725db7abd5f04677a24ecdd10003c0908402faf1c3b16cbd0595acb797f8d0420f2d01b19203302f93773c5ca9e3484a97b03e32d2639acf535b2b6a2205a74204bd29a1cb2581f8c09253a81fd8267e760784894035c4ee98f5b28adfc490122c5c0c17e9a0a6d5f9e2e478caf28299349a52ca9160b0f1d50c0cc9fdcb43c3c4120ea9f01b7c83e7da20fe7cd643e07baa2a99a14c842dc09a109a68754d463baadfdecfd65e975c36e23e3ea536ec83f239c6e24f9beaf2a73c30cf26c03fa0e9f7af3873bb127f57d8abba66b6e9dc6a7787f20ac9f1ed0f93b54902cc50034b95f644ce9a090de0fb1649400b05b818c31e82c20a6f34fa38eb160ec688ef73ca3018ebd10e0afacc5288c4ae0d461ef3a46a5aa7023dd7b276c283aea36d6003ac564a3ede8985d7779136ce442074254d11818ea5cab33e0cc617f0df5749b045d51112251df57446f4583510a10c5b1445459bc02ce9f02a132a71928a9c34691def23b4cad3ee5a32627950164d481d73bd7e45f07885ba2503e8967b621efcfdc1cdf7eee189ffcbe31c20fbbc1d509b381827089584cf90bec16422819baba88c837d2795114a871a74fe28ab15bf76d5925b90a8e6e63ed2a765d07209f7630669bc0b7a7fa40454737f2b360ab3477ee298533a51dde8f67273609fe27d3cba56458f0b437e8fb7860902ce10a5175c1da2711bb79ec91d96de52cf908a0b941c0e6479274b83b119310f7fa95cda8e069cd8ea8c10adc65202f90028a8eebc6ef779f728b4707d9922d89a6104940b1a1cf609a1802b936b5b990c171a49b1dca8a458039bb1303eaf6c7b44befc3d9d5091afbae3e9749f1d31edbcd81e3a34d5421510096ea76e828085f375be9776767e414b23f4f10d25afdfa1a01281c48aac0674a656dbf32561272685ea15655e82008de530b6a35511e5e262b9b8ae8474eba031c1645d841ca528ff7ee2ea0caf3a88022dd61781a338c0a692a090f5314292448b1a48f5bc37647de788e19d63586d36472d45bf1ef61573468d3945034fd41851cb11c12801e058d1a6d867c93eb4758c07f4a01e2d86df420dd664723428f45312612181abe28e8ab1d8dbe24535c2a0d299a35dc9418c4d1dac308e7a9279fb22d909739a208a8e504e42bdda1f19a8ef25263f0e914ec200c3b994450b75ec5c2a2f46ac0b93f3bd9f81daf3f721eb0de5d59e0e5f8b8d251058c8b2143731cf9613813bda810d0dde8eceaef0fc044921f7326c0333a4f27255a35a31d45a2fdd3879ff0b01009368a2395d423b7547f3edb32cc80a844c3cb6a559ec0b6575bbc7d02170d101ab1937100a4aa1f21b9764486caa19342ac7f6e5f6713784617a0f888f3c542a0e13c12d372b18a8955e875dae1d4ea22349c1fe90199ddfe059303cd6b7eb92e63d063b4bcca8543b84b1ce6c50c32850756a70d5996d671d9db821b30c941362dc846ec2f20a2e51c518bdbd8ec862d783a72d995f446439819c66be249b0bf8a236166fa01dc4838ef2f1a969ce6b7ed02b1c30d8e8bfeb1e4c7a7afedb0400488106796be4f0f6b210c16565fedc395990cd7ace118daa17860f670c5fbf273594207e1c717f7929155ebe166da74a765806632477d3b0b31bb3999af7638b2788ca8869c1de730402810cdda05bfc82c3ce2edd009d206ec86036aa58a855930181aa503d6191ac0b6f08d1459e927555182bb08a106da28d228ccb3855ac89f287574da6f6e7724d065e9d85870001c78c045de38bc742a43945462fd41296b142caf9ff7c2315193661b21846cb2f7965b6e29659249a6b308cf0724083ee2d6615a53bfcc7ee3f558f25a83969491b5b97152dad4a9c7771b5ff67b17a5cc22dd8b7ad5d263f428f426628c2d85105fc01f29fc063288a450a1890e3cb184c62234c60feace0c8c18a20929b0320588de828a1062482a4260714b97a9081154868c8c4cdf44ee0bb93be3c309f870fd674c005e5f22a1032cefe8c7ec67f24dd97fcd1eb3f5b338434357aeb45a424216d370c0aa66430b9f3dcab5a8d8bbf0a2ecd2722c4ee40179b6e7687a8ea497b716f2c47e1b3fe3397a0f937a8e34568f7a6ba79432890fec8294736eb9df0b9f4917bc2252c7fc4c3ea5c9418747e37d9dd1b099535a1df3d9b57897fb5df2ba24f52e2e17e8f65f5674af9ff2c299e223d4822fbdcf268b8ecd2b22df4bd29f2c1a02ba22a5e523d47f55f9b4eaa0d6abddf7823721171bcff13d19167ec5aee5a3f90bfb165af80c9bc9816385ee46ada1f15ec02ccd579cb871cf26fb24fb25ebd5782f2f789fdf8b664a1f29a594d3ab5a60cdf53a3af82eb4d0428def19de776930de873a7dcafb9e86f7ad50de67d3353cc825ce783636aa1cdeb762c1fb5627ef65bcef472b781f0ad579df36fab359f24c1e9d1995f3691790755d1faa7eab5b6dac6a757aad33b2c3c88e866de1057f8b1d3b76ecd89fcdcd0c20b39fde07338fc6fcebb19ac98dc3b1b159ad1ec5a57ad95f46765cf99f911db73ef79fcdc5b69f9a0df28b548fbed472c8ae7c9cfad7c57128d4f7f7c3a9d973de26b3a77dd3859683659dbc33bb136617a574066ec6bfd0783b03578a5530227349df5a0ee9b1ae6215c36aad15c34a9fa5be44b2f66badb64bd2ee90e566df47c7a01ee6e57df48b06e4ba36c3e1a1fde84dcfcde3f41b57bf46871367fa55dda91b755ae734266f46d7d52775dcabad7ea93eaa8ba9ffd271af603a9b5bbd2ffbabb9573632a31104fbf836fcf5f197c099a42ff4bc0b5873fdd6f98816a562ef02b2f85e5f742dcce80994401d14f7b01dfdb8fbb593ab9237c53d66609afe7e1b338d0649dc767e5df5b56b9e5ef1f84ef7835c6cd757d5378dbdede0d56620433527b26f9e29466c6e7d0178ebd0297198a69f865e6138a80d9e88d05aeddb6b9a80fdaf6f6ba9ddbe669d1154d69db8eaf5e0d73226fd6e9d915e9d6cfd936643adde3c01f7ed40749b74e1d4acc381b3ff65f734e7f6a37df6ae7de6410d07ecda4cb3817b8c9f6bb53915ebd87a6e774e6fed3584678906b221f633ec7d442c495f5d11caa62c73ec9ddc1713353df63e1a3281acec2bfd520e26efeb4bbfe47d6d6bd6591ba2dffad9dbeee3ee120dd4c72cf66dc07e108a9dcfb7da25b5fbfc4afb59ecea15b16f7ad772986f5fced898f85abdab665ef5becbabff4d4f56d357ef4b123d69fada7db0e74af9258926ac336be95b0c078a79b6ab1e0dfaf231fbd5fb82d8af39d8af3fa46fb0cfea671e563bbef5e53fd87331936643f6d52b52dff4272d870c5e8bbd78983d613fc22c662d36a7d00edeebbaae8b9abc2abfd46d4feab8ea0dd1b4cfbe568a3d567fc6c60457c47ef64c20eb83977e557ee615b19f24c2fad843cd00597dfb98fdead1b85e3e7dc8e4632cdeb60497245eecbf24f1662f7fca405febbc65a0de97246e9dfc17cd06ec8b641e7d182d87ec62587dc804b2b8da6aadfd4e5e7b2ffa368b0c7bfbe0cd3c1a0af0d71e01fe9ab7e4d6eebb6cf7c1fad2d62517ebf8ca854c608d7c1f7108939e06f2a1bd6d0d2d4b2f4f09820eaa34b901eab21541462021e5dacb394001169e185f5480c271d90a32ac184388323c40850647688113274290a5870857f81c013505cb1177bb3c850865e8584186969b5db6628c27513821a88928f40c1df156bb8ecb424500e2729785b6c0c116e96170f11d6915b6fca842179d1d9d263a4e74a0c818638c31cea672073666cf2d423dc3ad2b3fb60c4979c94965184ea464d10798f880131f88e203553e60454a920fe1ee2a90c17539270d2309528351a567d8caa505870595e57f80a165659950e1ba8618021543d0786448495112252188e287d614260bc01863680642ec44a125075780906286f18198165234a4a5c390293a4054f4849cf3baa49c0dc648d21d5a4486782042734005a0ebdfbd7980891339e7751921842c5e0011e5b24cf03922bff07aa488882042c084a8765fd709823005931d50ef48128f8c23b3a790f2d19118630ab448019614644981168f31c618bbdb638cd1e514030927ba09291ad2d261888f169f2d3e5d52b033278f3b53c18408badd5d0c2c62b41d5a448678207204d11145477041810eca694f2ac60c5e6476644849511225484c414208891675260d04cf6d77efeeee6eef29a71852345bf4444acff013a0eb49108772c26540010918287182284c100610a83042cfee6edb76c79900e2bab75379026d3686822a3dc3562e02a0400b6e4e2bc4d88991b41e29417777bbbbfb16ee125234a4a5c390248892284a824b149d283c44406184294718c18b2cae24f1c3b5f062767777b777124ab405452de0b284ce123c4bf4cc1e98a611588cc862841623b6ccd973ce397b7677b7bbbbbbb7e380933bb4880cf140044a14284c4071024a1450aafcd0b3bbbbddddddbd5d483f714d17f2a345cf30962c04f8d1426d07465ed4de93b6409371871691211e88b04087053c2ce861c1139e07c440e80454f8e04a932b7ef40faeb082e7b6bbedeeeeee9ef249a98f0c29294aa244892b4a0c2941a444114a092ebf5a8268ce873ab39d386db88228565065055640700113b020094b8031c64f0eda073bd41e994180e00a156038a1090abed8a2b3b8020745567001a2b67a86af34019618423961a204370c818094f935c495279b15e2092bc0fc228110095adc139ac06a8f8f0d2ebf4620a411408821206c3a4a90041882870845802652744a44435cddf22b082013d8d850c808981881131c174a581108350144d0e24a3ae808861539778831ce29b25ce18931c618a3b7b77b8c31c618dd638c31c6183d6e711d1952529444091843128c2e4c740722433c1099420a51746473e09ad73ca2a42889926b0a243c9112440e2a744b29a46508b6794921435a3a0c9942cb94eb2f650d9a4210210c2a30292078d55d8cdedd2d3bd216a6e9a71d690ab023e3c29aad031eb8fd366a00c1375b12bcea875e08a28860053ea953ead4b72dc6f810724d9c574248f3623aa5501dccbb96238554e246242e259de8c120bd51878476a428704dffd4805c577a9421bd6eecf8ca496132e61edc1afa68b83e6944fdf7373086ca8002c104751336a04e5ca653b02e4d3a0a0763c075dde866ddcb94924e0fcf65e5cb945bd22171893c30f8e30ad740dca4c0c0617bb76d3e309bcfd51d358fd1b339a5bbcc3a0ae79dbda96e27f5aa7f11ca3e52d1cb131f29b73fa8757d5eacfcd8a7f637fbd1be55755c4ca7d202aa5a28e054ad5493e6b145e9192b545b949ee96f9f17c448339915992f51ddf6c4f6c333fda90d073000327f8382372991477d8c86ccaaee472aaaa42ef349452d6fe9b96f7e6a39dc372a918ab68d1b6df3f3e1c6b734ebb0eb7d33a3709977354ada945474a578ec060403b11e2ad3cc1f9366fe5492cd2b5e58e61dadb56a41ae79310cebe455f180ea4ea72b8d64d65a2df3ceafa56f2b80318dfc2cdb32efe2c550a912cf9541d380f825150961daa804854bc9c9ed872954f61254b7ea6d3e9bcfa541d406d3fb5ea0b81d743f8e4e211175242e7126cafdb62a58b74989333df36d516c41b7534d7aa6b5e8a578b0e068e855bf86d3ab7e09e21e92541479d817eba578249388b8c74cf16053ee483b40fd8179a4a22be248cba18da1b852563bf8c3494571a63f45d28078975444ca6ac73fbce36b23cfc82f6941ae4bdf9a1a726c8e34df96b21fec23f6b2fbe1e17e60bf753f3ca81fd88b509ce9c8bd08451ef63b7a2f423edf8bd0025a006f82b8fdd64b898067fa47f74bf17c232cc513495d6e7f9776523c74a39b53ee6146a3972513c7d10b2a63be81557af5369f19a4a2bee1cbb7a828085c37013b72dce68c8cb987cfd9336864a838ade70299e2893c306ff38933fd9de2914f8bc84fc530290a3cd3df6248b9fddc603c0d46fdce0fd70fff1fb81faa8bd99bdd6ca6051774fc2ac6ff9e48cf34a7a771fa19a7875acec97b3f72499004e1ec9631ba6b41b8ebae01815260176faae3ba1f9eeb07ea551d0ff703b5ed10d3c1482d087747dbc893b22f8d1925ae237d21852d1d4c97ea503f49236ff366072985309dfb113aa324155d579ddf2a5b23f3cbff4d7aadb293ead6ff64206ddf56a328331d1e8661f398e44df926c5c3ab2b523cb737bfd97c78d5cfdc7ff5b2ad8ffdb7d201801ea4ff980a15335ca631605d04c0e3f21458c3ac1721588305d3f47f2e5cbe5a973dd60508ac0b290c5ef593fa4f70f591cab8fd42a66021d4dffd5fb77c5291bc13963ca7f4a422e9f23f52c96dc48ee431c3f0fdade1363420500a290aa42f98a67feb4852609ade42e2724b3ab7df96787a6eff0d0d0894323b786db7633f7b9b795156a689ff6feb8d16b81886f8afe5ccd85f3bd2969ee97f2dc8f51a90eb928a98a67ffe70f03f52d1dcc1deeafcb02b30ec6dfec89258a6e93405f40fcc56e07618c320bfd372e6f38cfc4e0b72796cd997a7d272e8db8b56cc6697765dd7768d3852c9749d5eae0be6ba62aeebbaa6f42b5e57c3eb621eb6c9de37dc2346354497541f7c0995900950b0b6fb1b36eec7dccc5d434563460a1503f372329548dd1dbd7bb46999c5ea45a7f4d8dccccdccccdccced757fc3460d158d192994b7f90097c43669b1ed3142afbbbb3f7a97bbdeddb1bb3beb8eddb1bbb99b59fe60ed54c29995f8bcddbd7b157bac6d8b43532038cc6677e9d7cea9d9c02c6f9491d20b5e5b33eeb86a36407983c844ed3e3dd831462ece7ca8d15462d39c333984c329715c07c71ee7a91833f3551901f507c7199f17bd2e8e99cebf286a4ec95847af4cd31e25325f340ec599beae3417a1c0c1f7a740973ff6f460a6698862e63625f88dc71b7ae597fbf42bce1863e4abfb988acbd3677b8c31d6f0e3b8dca75f3ddbb768e8cd924690bef0b692cb4c4304e9f142ae9069f8b3d0e171d52bf69ed365b7b05a310d7737bd6301dadb63cf1ca641a1aecb7d3af4588028441c976d6bcab942ff0decba9886bbeb0d6e7483b7c77638b94675febe325a82f0ba1cd3f09c537aecd8dc08d68b622a8e3d7d87538f1be1e8e895e446ed3e2337ea2c36f48c394a63d5ccaccd88337011b2b3d6bd41ae3898e66fd42847ce4c93f2d8d1194218bb3dbbe089cb62669417edc9ff75f4a9a35dce538cceb5e3c499186de28ccf197b26d136104208f982e16c4e8fcdcc6e6a668e5c936063e995f7f795d6e2f2b7955e35133156feaba3a072a296cb3838ab1bfb6d4f2660132d3a2e979aeb2665acb93373cfb7ccf1eabe99c3dd6cb20dbb0beee1096baed3997bfa4198c62ff7e9179d33468f73baf4f6d13c9847f4b7710af1bfe17fcd39f99bb9dca75f3de7847d310ff9908b6f8373e7e4befc6f3caf3a76bc7a05638c31ae66fb9cf232aa21c7cd99a6e7c718a3fc661c7521778cb05eeeee1b1567f8a70a38b85d7efe8c69207740e08d5ecb7ed5dc2ea6e18f30da9828a112acc0c1691c2dc812a8477d34ede091ba64c699ba6d09cef4db5b1c6e6ef357bdea24f152ead9503849a92b39eee1aa1bb7377d6c93caa3cc3d350f55cfc453dfa87ad57d557d73ea016f2c79df925bfaadfb64ee36e3a987784d2a3bbd6ffb18d35b6bd24cdda96a369048f4b25a4ee9a106647b98f7114b1dea37990b13f3f119e6bfabc2c0a860bc9f97a72f274fa6571cf7788243e2b77ffbd9994c26ef9b9f3ded3eae83b7d4bd46ea155d6dddb7e46e6f3f568aa0e2b23bb4880cf1e05345114a60428686b47498a2881e5a77681119e28188294490b1828b16710322967039123520a20a326844c113444881d204114d6cbae81e647737bc492490f81318401279a34703871bbdd8d16b2996652cece872d22bcbf15febe0f8af772e3fa402b3a0930f8ac13732cf0fc160167c026bfaf9e117ec05b3201458d30f250a2cfc07b960411f58f384cbd750d09417e2560bea5c81433e512e3f3c82593e90b8b9f1fcb00866d5006bfaf9e1100c450047000464a2a3e2df00b36c6caa70f92fc03d306bc70e242c011c2e6820a2e109a9ff7808c5df0066fd1fe1f233806f629e5f01cc928135fd08e01c98b55a65c13ad0a1634a0098c57d03b8fc33f0cde9f96ff81403df989ebf86592858d38f7241a57a99eed7bec437d9675f2371f9fb0866c128b0a6bf7da25c7e5204b3a01423f8e67a11300b32016b86e09bfaf6bf06e2f2c3289005b9ccfc2a8a14c8825d565220ab75a0c704ffc0e4329c5959aceb7a51080423a534464a237d6bbd22f1ad13c8825c3027100a64b50e14c8ea9d1fa00f970be35281600187cc0a3a3fec007145ecaa58bddebe151279c02678a61f0a2a2d2e0d21900fc8825dfad6d03b34d6cbebfe868d483710bf29fd96dc6a43030db5c6ece0133ca352ccd6cb5af816f3aea75d7d1fd147bf0e1d34e5a81812b511bb2a362b863df58b7545aea77cb9134aa58229bd9c4cf17a08d4f27a9d10e8bfeb3f08246fb51790abe415893f9fd47d400c59b08bfdd6c17aa77998300dec022dd4c9c1ed2a5c9700864ff03715b73feb1d6883cb847b401a340f644127a01521d5fbe015b7af1d08d43731567b5d6f63c61af610c87a9fbc17c6343ee747d78077cfe51596ac608e23f0dbac578d8af1ca7098664af111a77c77d92e9b9081e5bee9bcbf61a3c6e557d1989142c5c0bc9c4c2592c75de619e7f74dcb2c562f3aa5c7e6ef3ccf732e2c730fbe248a61ea7fa451e932765d198cd185befd2ec32c5ed9c08113bd2f753faec6ede7383a631096f635e1bcd09317d3f87bbb96131b5ea3788465994f3574fb2df48cb9c78c72f3265c9343d592a1536a976aa2e56c6fb92f7daaa76f485e8fae7cca3cb29737ae940fb947e418e6817ad26f3fea2ca94bf5748a87098e6403e9a73ecac6631df3cc8dfab3d68a65d7b3e9bf784fcf7cfaac2bedf48cf658c73df332533cbd4a35819a531ec15be26ba3fb6edc6ff319dd6ff3f9b6a0afd4c4d47da520be0d8a1cee7df496ea216d9bf492c82b3d1a38702f5f7a3d48ce3bf5aa3f5e59c3a069d0525caed2426da55b7da5b15cce542e9da2062a42378a1b6a508096c1e5195c7e11a241aa9637698dde76d6d7af1975ac56eeb106c85261b901b2285001208b06c19afe202b299edaed54cf05236df41656ea32ffaa16ac51f9408505b2bc09ac1961b9fd1488066155e055fc7e950f542dc8226db13a418cbcf8d90e4429a5dba8e110efe9547a7e1fcda3f78a8c9e7b38fa92c7161bf9e81abdd4828c3c15273554ffdc6ff3a90259581758138495c15571fbb729552dac0cac8bca9b4cbad16d6e7089861ce7956dde61e0dada61d7bb1e2eedfc8e9823a45d37ed60a41ddfe93286c78e0be8e83f2e05846f3a6c70788a90855cabbca47f97b623b9745ef760b020d7fd3070a95764fe9c93d239a9f7cdfbcd592a916c671b126c8b33463a2a5d1a81eba328a76397f6709dc254ccbd22f4a5f41fd58fb6ee27f5514e6bb3ae7fa06228fc1103735d15b8d8062ef5acaaa6527352eaa8dfba9fec890d0675d4fd6c3fd9cbec6756b36ce3b64bcb196ddc68f3bf26ad7c53e2b68f0fbbed6e1d926b4b5dec89ddadebe19678e533babb97eed645807bf9bcb9f41ee66ccc4e1cd9492573195a283b786de4ee0dde8e71ab16cb7c8e46db68e3462e7b930f3bf91cb7558b653e479352d8cebed1496d268437c94630333a1b978b2cac0bd708c13d5eb0f02690f52294e3857198648a09bdfc768b026bb6ae2f9ddb0aba67c9bbbd238511259224dc0de2a698a478680edce79525e691e2b129f1144873b039777ad1c18b9056371fcef33e1436afbc5b94be399560be9f3b75285e71fdcd11b9db8957dcc3708fe2fc64a4a947392bb6f5d6f9b66ddb16e9d6c5bb4969eade77931279641ccf6ca88c14e5a4f0ce996d1ddf0d09a9c3b039a56b5b86ca5cd892701ae544a9ac77f5e250dd8e0bb8cf3a9eff81f276b2ffe17f649e0bdcbfe45c57f2b8579c96c3719b8f6c9ae0361ae584c1e44e2571f9e1fab1f3c3ffd8f981fb410a8361e8274d810120433fd50e70fda830d0c934f2a796437f3ad582f8bdb4209dd7c630cc79a6f459572a19b9fe933d97bd2d956894b36241dc7256b791531d363b38d4d380fdb78a61211886efa80ec533a452c775df90cb7d4c77f10ce9531d0945e4720f4b242597735e91464fe256241aa5cd2ac6f195a5ee9b1f066efc1ec570744628739248249d11f6442451c619bbab6173920461cf1644cae4f6349dfe9bf4c2c1428e958e1d4cc58b9518d47f5c25c5c326badae6a50f1d032bc93edce815a10fa1ec08bb7f60605e7648e40fcac2c4e87466d5529445594a3718e946e3f5cda306847ee94bd2d4fda01ecbaa3d91505f42a12ccaba4f0d8873d4e94b2d67e41ca523a7dbcb392dcd66072d70af87935793eb7ea4162403f7f28ac81fcd97f9928e9e024bae9c9069a6447d4be90fdecd37a7733442e257fea47ed4fda85ea67e4bbda79eaa54311b0c50d12b225ffbcd070513938a8141510ae18af3f8442a6516ab41fc6a52e84f5a32f5982fefec936f3e75fbe1eafd71ef676eb737eff49231f788ffc949af138ecb1f0b97ffcbb1ba5c05ef807bc03f60ddf88fb5e020f00b16b7ff8b2f425cd34f83fd4f46c70e1a60fee32a3c4d84a61289abe242ce03b7e255a2e742989c58cb5a2770e142b88c70e1d7255cf89a960b3ff35612b6088216598ad09a167b6fd91616eb470d48ff75916e7ceeca33f15bb28ccc9b0f70098c0f7009c5d980aeabf6f4aa3b7275dabaee30c6de02877ad5363cef0887e357584135678caa8f9d91ecc2671658d086a8c48f31e0be083bbe7164d99db8ae85b673a05e4da25e4d2dbd9a818b5a8e96bdb544de073fbe119b3bb3cc86563ea1543628c746d12b28a29613b5ce9d20bde97d6a5d20cd7f3a5ef86f55f35f77e7ebd8b0f96fc69d7327e64ed39d4c4a773e43d6c6036be605809fefde173d07ea95070171d609cf83ba40d6d64407b2b61e58b3ed40d6e604d640d6f604d630e11e9b0998a63f86dfb42e2dbca6733bdb995a7aa6dfd2e82691ea513f8bfa662b82c24be0f11f37e1c61e1c37d6f88fe6461902d0c51a377637ffa97c66acf01fcc8d6292e1bf971b4737be946cc77fdb8d1b13f1ffa319d1dd9e46513761c06d5ade476f50200bfa300f289005811aa8b7282d4394dbbf49e91dded7776302b2e010ace967a286f75da59fe17ddc0def4395bef3be2f3de77dabd25befb3b95fed29fdac3d5403f2540ba27dd6f9d52e2d2703822cef81355320cb7d600d64cd2bb0a6214b1b8235fd3d405a12b22e5e0b332dfaf4d237cbb2d9790f6469453e3dafcc2bd08b24684590957d77c134fd9a56a445e6bfbe3664dec6679dcd8257577660ab801607bc9237f5dc373ebca6e5e4e052be84d3ec6b59438ebe65efa36dd641a6895f31c8bdd925364ed49d5afa26024c44e3fb67110d1a104a95cacb2e00749057f6a757243ef75b938ea189c5814d67ab80abfe9a17683613c0f46f4efab72730efc2e95be8b9ded7f7e5579b93db316639dadba098c5d73220f139cee4239abe148c9de2b60dfa6adccf067d5eea90c0eb4ef48de645c0e6ceefa03979b20dc9e6faccb08ec6683473cc1efa3acb9daae7c1c27f2d05e8ce76e2cef95f47d1fd9cd3ab1e1cea20d10b38edb3788ffb8c3607ea2b35be7a9308a86d90d5342dc70853b9d96b5a4ef6acd9a08c8a4ccbc9f156cb32a31603a7c85a329dbe55615e48dc68d3b28f9fe29b4ac5c64e23d2865cc06959b4a238d3b527cef4c7c06cd6094b4002145250a1e28aacb33bb0591461b67b8040ee2dd3324dcba931274bdf645e0498caad7d93e3fbb51c1e0e5773d458bd1ff951ceacf610dd7e167074b64a6757e8ac955ef57b9d6db5d5a2ed8dce62693b7425f5fda9afe15d51553143b341343abe336cd067b3dc7e8b65e91b2c7e13d52a51325b75d2ab589fd4279843973efde42f0e3363dce4252739e723dfdceb93ae3db5e7b613e88379319e75825dc2a9b348b050582978d54fea2c155ef5739da5c25e617760b380ad78719c7c6b832ce67967a3e899fe9196333d1b440507ffb341b7df02c142e1767442bfbf3ee949274fe616b7561bd0e51596907c804b3e062f5235bac62267570cb71ff2cdf59a8e6b1ae7f6ed15ee4bc19d502a1b35605e0d36540508c0edefae32001edc38438c270c5555b106204cd37f62c5b00385430e195eb8fd2ae80210eec1420d902583c30cb7bf6954fedfd765fdf707e24f296c1aa7c4a08d22a574a8a3a3a3332365d4c13dc83248e93ea7943f986190d2e79452baf4f9d42515cb321f4bd80e4f30acf85fe954f3bddc0ff5a1be97eb0f8b9c98c6ffabb96d7ae164c454a23141a044d2518a0089738124016ed4027764b4cd8c26b069ab0d8996e5d028905916b22416c3612b805519ac877aad502d705d4a28bdc094dfdf89017903d5377e6506dc86f7edaf71a15ec53de4f7e5b69482893776d0b07051300040e9408d7030eab2a80b855d744a1eb1e35ff1fd8a31425a3f142ac528295fd238ea68613b9591d78c9625b599445a30222523f606243a707e6c6450838f5ef5944bce08a18f96137ea92348a6d671cf7c71e7f64788ea422a5d9956ed557ba38f55cc73ac09221ef0028cdbef54883b708cdb5240c23dba0ba681acee72a7709bc8072da77e1351ac892afd34205176f3635f593c715c4bdf8aa24faf89b61129ce6c46e571837cb66e6f883c8e602cc42cd47f7942d0093cd31f0531a04ee4c025badcafa2db504bafba89aa953f74dac261c74b7a9d4315632a30cef437c7313a6d14e449af8ad94c632ae3420c33d8c09aee11c30a97dfbbee01af3a4b116e3fec20dcfe18b847f3c006b2da8ad08d1270b010e1f67f359781f0f50f6eb710897e0b4508e175691c69aeae54a254ec6adc408dffa505a193a464728d3f37fd39cd00f1cee75a725ace7c5bca4ca7785df4f4d244a921d2152172d2212286dde52931a90c422e704b0b45af858a9043bcf3ddafbbb750bf257125937c8f1ca7dc28c2b63a63c6a289289510e50f38fe8f0e5de8bcc4a36d6921815aa7f983557030e0964122c8e2600d7c864fa0cf0fbf80900bbef167c87365dca96fba79ae8f76c8825a2ec882451964c12d1c64412e25ee01c7c83cfb91f7f5ddbcaf5ba78ba016c88aad22c88a5a6c81ac7805d68cc13da2119806b2221658035fd392155d18b75cd8f19d819bd1bde77be75586e01417ea95950bbd0a141cf3cc7c2ed243b85bb4dc0a5ec197ce830b9f02c1b1dc21f7c185ae830b1f7e3402f7f02a98064296578135f0b5f01d5c28d987ebcff4f329173e338df4d8474b598fb02c93c4ebc3ce487669ed38e7385adfe5fba42729b1ebe157ac4aafee9e7bceeddfcff5cdfce90eb31fd7c325313a07780561069c1b3eb1830d91211e4c10cbb8317271a34f29e416428686b4748042460f684089400417236a3005238cd8a1456488872fb8702b08191ad2d221055e3c114215fcc60e2d22433c9c40cb93289e206b08191ad2d28188263cf94182ca882c4f8418c245e30912c068d5194610c2145a2a092c4e0079cc0e2d22433c2031841210e18208236468484b07228250021d69daa1456488871264518413c4e0a204a2d6a8246c5b696a0ad5cc000040033316000020100807c582d13ccd72140a960f14000e669058646a3a13479324c6411405518c31c418030020001963901933ce005d6b600113b6948a5d53b125765f3fbd8acfa910d7f928f7fa2d721190af926b4c43a1a0d85a5c8b25f3ab38c3551499be0550b99a357029281f80d2871b68ce785294e2e03379c8636bb4ad5144cf0c166d9b288b55e45504d9a25178fbd5d3bda75714cd1e291df9c1298a26c78052f74f096414b765e9d5ef0bb17a190aa3739624f5dc5a992f952c67ff52d01fc46511a0192c3b7843f1e0668c02bf50446b2816ecc55539ed877e444dca5d269623a7c698cfe807b59e890d062fa5f114e2905a48655aad88d897bfb9c1f76a2e0ba566e9ea1880d94d9b7f27783dcc207651a5c0c7ca0d136f127e6a0b3f2d2a128922b13737dd6b0451b204065c7dd5a768f2074ccb04149941f54feb1282d9e09bfec8923b566bc133924c84f2b34e2342e2003cbd762c4f8d60412a075d40b0b0b18044a072f10c19bef7598a0429ed0a0a64f197a04b76a93bef1b301a81353804a4e845a9471ba6d8a16316da889c8730c4689fe4fa15d250520b663059775ce06896bfbb52a067a4a7af526ed2b6d9afcfaa5f53643d1695b03d187dc70b223d2d51ef032a3922b514a7f490922a1a40a5c6d2c8d400846e69f3f1b55ce94a069586c59c417d466a4523b6ebaba9edd408b148807325d5c1921e8d5580e4bf4bb39a3bab00f1cd06f4c088a78fe301260657c8b6a822a6692006cbf6757a15d55f13fd78663d4e3bc8509167c210c5238d2439e765eeb8aa72d1b94834bd3ed6ea1be0fbc498e7dc43b27d2c00f5f8c85aad9087869fcafad08a4908a94d07e83ddc2b45ba2019e2359e15b983bd4f235852424901f88b8ec7518ad16810a0ed638d50ade2f0263e17e4b4d8780fce753cb63c856f5445b00e30c7b31b9925db3644191c6147f7e9e43735616828323f0a208c0cc51dbc80f33b45098bc51bca542973b3649b1f96f77cbf1923a4b905c502c0d9c403a363840d29a6dcbc964035a4ff08a05f398239188374dd123b68c5d54b714998eaa3e583f7a65ea14afc7b140ff886c053de9dd868142167f18fe68a72941269fd0446c31de68e1d903b2ace6d711310ba50b4c929c6f8947d649fc8bf9e42036375b93c5e39b3059da56ca52161ef1c88ea1cbb596954c84e317e52a56d12816961eec7e587c21ec2d684932e6f8b722793d10b54725e32acec528be112de63cb9a003a7ccc280ecddfa544d48b57aff3d4b58f14c1ec7d273b0927f6ce4c160288052f56f0e5419b29b2d0642bdc5d65f1eb49d65a5ac233d127e12d0b058892dd8a25d42c4e61297cec87e8dc1b3334f4c3a23b880aa2adbcd8053541bd93450585547af26d69016855c4a47f1902c6a044ba41789ee092a00952022cc17929a3aa148e99baa6e5b1f38789e872e53bb254ec19cf6bcc541fe20570abbaad4a9e5270415f633886722dca6a4ba0e582beb6ce3736816ceba25c48deeb9360816f14cc1ab77f4f627f7f7bb23903427da86084a5db9507a095dc859a82540e2f5c94400e58a4d09ffd1e31819179ebc86a0102447c00f61f08c2e16b0045a17ad49eb1dba02797596b43dd5a134ee3788becfceb03862d99ca4dfd7d025df18e5f9f7a738ba872fa34ad896acb015a30ba198a888ebafed7e3ced59e812a33e7a7a675bbfeb7676e040bd1729a1a2451c68f0e80d1fff4d9bfd163f13ccfc1fdbbaea6106213b23613b92960bf3fabc0a66ae4f8a1aa5061f702960b570c83366592b9e74228e8e970c2764270c335b5d54e54b1c2e9b1f2aa40aeca7bc4420a82a97546f860b1672aca6fa4504fc590ac4c486997307664d3dcb607cb0a1bd00694670183297f92631afb766e801219020bb1b74d5dea440404ea61203d1d532ac9f4d3aca72b9440a7910d2e14d134bd5eda95cac8e36ef4934d35f6792e94b4a514b38e3fd11de3a804947439fd1029def84d7caeeb99025ece5c7dc57f61ed299fe6b57a999e583a7670d441c5db9aa987eaaeba1675f475691f318b27e05f3e62e408b78118f0cf11852aa1df9096b2cf3a6384ff6028762d8375ec565f3b8840c3f432ff35fc45318a0d9521a92b6cb52dddc54e10a47b9ce222ede165e702b16425f0dc328ba48d1e5e76f4262538a7e2320015a946c80dc73a68d09d1c049379911f10f73f76b8b9eade49a538a3b2572133bb98b6aa1532c643f219e6860b60730787c9265422d3211184e0b0a52ee2c096d8e66b86b005e9dc28103d0545805fcf5d72458378fb424c5815b15695ccf807d1b2a0c825f8781b010f35ab93a7f58b1da353c6fa86e9328bfefbd4633d8222eb92e9e034e5f9a868825a767457e2a85731961301f937147159e0335f07260e2245d3245d13980d9924bd2fa323e63c60ae3d55d9bdbb380df9514915751ea6e1d455478eb9fcc8aa1b6390a13f5e13e94ce102655f7907207e9a201cb7c12ea8e6b309f3dc82ad0ee3a04291bf62393bc57b83017058e1dc39608295b8fa50fd38f00594d63f363b50f476c4456c2d1a65285bfa5829fadfcc8156f8a4baa17771f0b5dc673f362e8d33d04bf3679e6fe70ee58cc545f1ddb75dcaeddc899691b16667c52b7bb6612085c14088e41b4623e1337f4d8f56fa3e6c7aeadf9757ce665e2654783e772e5318798be9013a3b1b633833cbf04ad63d30cf9d8ba5b14894e66a6e5282dfbab79a6628b94b3c320e358162ab141609bdc3143a7853cb5c4b39c2e14fdd6fdf2065f0c18a1f5609ff550bb81e1c6125dd5ba89b5e703656bfe02523dddff52c8d7c3414a803820eb338de9565dc55181d2567182879081c0a028e8485fcbec69d37715f46f84d8e0cffb95d151ce43a4c3698dca509a684c33b6317128bb3fc0283b45785cde32051fe0865b983180af6f11d71b852bc97c73f346e106d839efcf57d50437face4121595e261f25ca9ead0fc69a0e7cdc69d1b969832da9f841102f773ba693b14ad4c2ca5c17bf6b3f8c14a83dfa69c9a71b869a3301ac451d8013c01278297510c70cbf93c16e7ebc2199a4dedc9e26fc586cebec5f24dc35c94007e42a2cbb0e4f7d79bf3be3f9c59f9d49a41ee8bc1755fb1e01092e61754e0c6297b8275b6d10f06aaeed0a4c09513fc905225ad1ec49266bdf94c9a607b4d1aeedf010937690a0081be251dd3541c09d815c912fc6f065758712d9a05c39108b7bb1a92865e07b5628538bc7cb631fa92e083bd88808d2bc3062a8a28fd77160564879d85b6744b4147c1089d24c073a567b2540424acb3e639cd6bdeb43febe4e087e2802a62c05c67a1678d18cea40dee191ed6a37e1492e51de8fefd93bf51d72b27419d47bcd432cebafaa966b82361e4671ee5466f24ab5d3e43303f050ce6cab936eae4c07cae37eed0c2e1d58b9644559b4d1482df03f32b490cb86476332cc13c1b1284a22d2e4b220dd42b2f56d0f04c3aa969779c8ebe2af60acad714cc33c05e230a721a77e96f6cee84746ab460be9d82a520c2e4c7244af398fc210dd70b7a64761060f27b64694494c801c991e97cfde265b9209aee69be1565db74b2488a0c30063517c1a622dd16e6e08765f3004378f6b5f186a930d3a7ea95478357e7be31e5b8840d50da637505be1c0853cad6d000a53a7657c897813045610dcda0b467750a5d1118a496d6a0094afaac3e15edb7a4a5370b8e6e2c91f199c60a9af842f023276a92b9b2c183403f87402690b07ad6f2c31c1b473fbf1b35ea99c9c74802a174700f3455b5bb807eba35e2f92b55e74b490139f69709799e807bb4b89d23f6f4cc3d35e21333f329660c5c1c8a1c8aefde349b65643445e9caab14598cd6ad8b8405167e627959c1faa9971adfa9d32e87140f610ec5d4580d053c57e7263149a0e8b41331c9678290e79bfe7cae4f29e56530d65bfef74e0d47028862907b345a3ce9b91931d822bad6e0fc65404f42373b89609d73d1fdfd93319a4497cdef98741b9731dc38a4b1c694329a29664f38f3a4a2af4f948d0ab9b1a2e1d17a9caff0538ff0fa6125b9f5f683ca0d4f019981253338871d98f6041a7c871a275c4cfea449cfc8989b6361aada97a9333aa3cb172e0c9690815794173ae431102d9d291ecad91df99153707b12da1ae4bcfca4fb40d20673d7a70bf04a89e2b9d72631292007870bc40415903e36af49c6dc0df23480a058cfa3e766bfc8f0b6a56bfd0f7a13b5b2ce8d6d5474f0e82744a3c8bee24988ed3a12b22c6626e34b21c9fa70d9055a6fd209ee8667c772edf9e7e7840183090d9e272049ae9f92bd51ba5d6d88190d9889c3aee63c9b39b551c4793e5d4982f54897822c44a100a377a1bbb8f7a47d13603988781a29a694da5a973435204776482ab0d1e8c37ce37e168af03b6d283f30ea67ed29bc9b40f883975b216ca5dcf4c89f5f781c66e54535838441054d1f1e0dad2a9df2c42a404178e14d6f1b322694e8e7833a78c676f9bfb6fc94a516b206c61001fd20e9ac02f97c44847b55a73211222909e141fed7a5f974eafea84826eb39ca1a6cdc1efaac0936b5b62158c6eb32c9ffd6d89fb48b9070f323578059fdbcc22c0a5c2de7fb4f418bcd12d54378fbfbc8e8ab01beddbe4d0200613908033e98848e9b0dc5c1f7c2097a4ec917e1dadc0358ff4b2190c246977db31338d41c6ce00dd9b38844194e6e0eeabe0f382e924752bf6391b2d3d185d1099a7c6eb527825c47a10a3ffd8bc58420712c3ced83ce0245c11b05e816554855911ffc8b66e9412176a040b1b15ee3392c10b85d7d2f268928dfa1665700f236168a38945e7912a67c8da459901ff1a66b7e625b9e2b8467febe43a1a09f4d213edc36128834b15a3d3ea556d24b53741f2d48bcdfd6aceda4d57ea49b137b3d0a24bd9d2ce1e3e88d011f3fbeca0b6f16876b876b51fc327e0f280805152c483c7f5c1875d1dc584cf979e1260d22bdd742ec85a26a7c241f9a984774f98e88b0b79002729e9ed58640f28280c2ac813c5f66add18e41e4c21477c0b44631ce2360662955ba6c0ec6c4e517c8f32783b0c5b60b164d422c290bae00a10859bd63a53a099313fbfe6bb143e72e20906b608fc9aa98c445a404114b4edaeb448d37df8e427adf90323334ae21082ca34b7f8fadf031fadf966a9a38bab25f1a1aafc8546370fbae7b2e08d10962ad1ddbd860817ed6045ee41b4b47e638a377c541cd56ff83dbf0cb35dfd9ab8b1c9b41ad4174d1bbbe5b186c1fa66cdccaadb5fd0908fb2b59016c9d9bd671f9674b62a521bdd4f026f431bc7b2053ac768bb56ed64e31036c50995ada9592760bb1bd9e978300260b96d962be706cc33321141c8dbc98ae82da2088b4f88cbac00b00272ac1f12259e042cf51c54afa61c182b76b2b26552a51378fa8359a28cb3043a9061d84e9b57c75507ccfa93a93b730c7015e42b2a77cbe7bde5d677a7fd283bce7ffb57e28849c12ab5b408c21e37e2b0c76f34e7bf27902367c9e156ca2e214723265cfafd67b7e9c6f9283871bfc62835933187f0a59f70249196fd2501fc2f0c030b3ae0dc9ee4da02e8d0ddbf9aaec6f26533343dae25cf8d599d2a39b7460bf232019f079fa8a6930022e6300585d07b15bfb2e97efeb649568db74c4d82abf7ad4616fc763cf3121f2c6256712b26409280980f2a75d1a05f07102377d9b876b713c0d435c336f0c3b69503eb6689d58df9c260a4456710476c95118c328bca2011385e24dcb03cda6151e7ea832d1fdfc0cce2eb151acd51ffe5b0fda282a18f801fc133190ca832d7c029f0ac81108b0e18010f5f6d9699730ac190169c907403e841b395aba282cc8b07db8912cc02ccd41db0168f814cca2704593095c08d6071f13dcfe644460db1a651bacdd81ea57dafa43835c12e615e70db06ced37bb6da2435f094a12a3bc44e294760163cb0fea73e57dc56a6a05312b2639f2752fcdbef6c2d876247d286d3c51d32003e8eb171062c28b16205bca5c05b029ed33adc313615cb87e726c8176f550110bcf686891b17d9b353f706e1fc6f0964f7cc7c06efc8823c26f2cb61878b1c3e46b7ea9e48c84b7f7e86aeff47c6dc808c19477fe9bf7b4e6894fb85497e30b4eaf74c9cafab893dfef86b41be30ba8858176e22b7a5dfa71ddf44bf81ed0df0db60b08f45ae0cd13fadc02d32470e4b133b78d67f74230637a32d9c384b45d5eac1e6f49225b4b11eac543e66dd83a2fd333a09409f38bd350d5e48f18b3dbb1d38b4c28303d297cd31de427e1e7296dc65301aed62cfb70d0856b3d53c6477447383e0560b652f22ea47da10b3512176b80061d91abf63884a9acf57aeb26e6c34abce502216ff55539b7c2e78f75600f3560cf1ed54340c867ab9b32f3e6c4a4e617b02be23cfa4f9e18e9cc60cd68f65c99d66f979a239cab1f14b3956d0f588818ecd6228d4c06a0ebf46a5690c64e20346bf4c2ae1ea2b00b24bb37cb42cab80a012f074287217c0c0e59b187a7562eb8248d838d1a11285c6dfb3152b866126838b0c73a768567bad34f05870685638144e5ba1d62cc3fb894a46fdfd72c626a6dda98ff8ee97cb3bec2bd93913d2c51ea6343d039835b67c65cec55d278788acd3b8ef05fb37f6108ec6e64bd3b875747f03500ffca984f8cc2a8d49dbda978ca33187f69cc57b49081a6252d079167ee40e1621cbe307cd0987f7455c70f79a157a1b181497c3bb52f73f087c4e7e4362a7e88035f24cd0d4f4edfa1bd368299483eaeb74ae3067cfccad1687842010fcd8b8364f411a1ae41b3df797a79700a07f118bb83067de7e13d6736532f4d856af60ed66fce6c522d85a37f75f10e97322c3d03817b073e2e23e096149da272ef3c7a33d8299b12ac61f780af2b2c3827b18b28cd3b0fef0c36e563c46a435ceaef6c6d1c8c13a64beb3608a9040fcf2408b21510c7ae44bfe2f19ec608aa13fe065529fe980b5f3b1a0d4f28e7a17a3d82e9137ed1455dc2c04949abe1c9ab79a0b9871f85c2afffba70b49e996eadbb41385c1eb4ad4d658b4a690c1d4ba27948c5a5a31a859f7b41255a055a8a9eca0b042764501e9a997e88e2078c02a107e59514c43bd34ff373a9ee89c7ea1171bbf94afa2dafb58868faa75d0f101b040252446012d2bef693c44563cc098a4061c324f07233cc34ac0f345391082dc58fd57f545022e9316ee92dbf2446ea93dac5741c1f2949a2dab6dfc081f0c22a1a4c1611cca7c3360c7dcff27e8ca3fd389770a6b4f743f38c38e2d64446a19bb2db63a8889c5d90e5750421f519076e41faab18ee66901309fb7df704edc8b52d2a291ac46f221b333bc8fb21a9816c17b6d8629b1f6cadb2c9e71b19fc61cd69ef216467a8f6514bc839f0091c7ae739c3f689b2f383a8f5fe2c80edb6ae73f53d8f3b8ae26afe6996e484a99a5fefb953cb92a231fe81d32247b669c94690db602efe7197229e040241288fcd5279641bcd994e6c303d151050e436038530502ed83d776cb34eb2f6d4f21fecca2a62f33a1744a5a5aeb8012d11b3d9f05f538ded0cad8574b12d633b3b1571bfe3e9890807a12f9037cc05d25d61339e73ad40f106814b86632f5a681526b903de90799c9eddd2385851de1beb7e7965a9be85d4e972d1526a1eb51b7d8a961a2d8afc522e750403720412600bf48e4556ca09ed9c1027c4246e13b0fc903e3bb3068e6073bf53940f2990e2c50eb2e710e65df9d1e63c622325f7a5a30e83d44bf803030bcc2f1e2921c3c4bc142e0c8a2441ae25fd0af8af2d198c96650a6c185dc8ba4ecc0d47b7a9c621f245c685cb3c5867051e45dde0d067d468aa8e50a753e47883fc59a95b3d9a093e09721419796868668cd05e6832bb435af03701e59a147342fe4d1e0bdfdd46e535e2bc0930b96e044ab3dbc0df350f325af89a0acdcf9e93629135c56b87cc65292ae2aa6f20ca9573f5bf73f302b33e19addbd63cc5979fa4c7459801e890902e36780c87267bea33de13bb9fdc36f73a297a910a4fb35936b4ff49026b53afd63d6ddc98d391ce248dac6f1016b1e4fc68f6c96c23923e1b8ca9d5a10719c60bcced9336c58da36153ed09c9bda0af8de8fc25b3fa57bbaf9dfdd53e136ac4221f34bd724fbbed320362c7927ca89ae962914bbd43b7c7288b8d8f7649bdf214125ee56d5dbbabcd070e77b5cf4cab974e5e306d19e35ca45edac70003f6655bb4f277174134c69b9ceceafd7c2705d021f7e033596931c23bb45e478e327bbf65fbf2732fad614c763e49262aec16d64a10de1ff81396410327eccbe3b3e9948966af3b8f3d96c96e18cde6263cde5fbef35b6c7b1ea3bef07f0ac0bdfe92d0cc481ec714de1e70d922d0f8e85c9cf528ec28b7295842c17a3c29392fb8f19c403a584c89b235e03b22682a62b972b66efb04974186950defe2eab463b5d1ece1c159222b862148246fb79dbe858b662655a554042361201896506b3e32bd02a6912ab1daa490559b35cb3a4fbe4745a52600c5a9647e333714f2170c3260fa17c34d86e4accfbea7823a26707e17064ef2927913cb97230bb98140ed5166da9bb3a6ab51c9eafd82073b2bff2eeac66c46aec55ef8571aeb5310aafa688baac8a76a15a548fe31631fe7c34a93cc721c6547297bd088688879d3d905755f5977c2c139f699c14910c6e847485ba4df58ba3296ddd6dc3a5f2afbf5ea23318bbff1984817b4b3beb6f71c3c0a365af95f5ed3a004fa81f6cdbabfa9ea462b86cae576260ba2fc8eaa3bb191042369a39301b7aeabba81b0e81890525e24b03929069f72d20593b9f5dd43d65ee6957be5deb566e0b9f514686bd78cfee47f25eb54303d97f2df4c0ec5a9ef4ff9ec15656317f05da967ffe2ab8c7cf8ae6c849caf2794240d68b82f2f025d1b5ca94a6fc71efde363c546f75eb8ce1340428eef3678dfe8fdf9035437cc34173b1737cb3ced0bfacdbc6b13b002ebb965ded3207ed652ec1d9c2f22d0ef157e5d595c311e80deecd2467e9b98ccef94aa35f6e2d1f1129e0fa1b085a49701b527c76882757c22e385d17c07b99db0a60001e1d793442fd192761a74d5380df4b79e06a7a82f4bcf3c64e23785c50c3c6f2051b4fb75984b68336d707e2d845458eeedfd6870e3f8873de7e437cdaff10f0d176328b25699f8a16afcf77b9a813844382bdfe211653c076614ed2b236e894fb7bc3e0a5d9cc89df3d9cb29b6403ca4fe60f9939449ab71cea5be05ee6a2497d2175973e072b04de5f3aa2d840bed7e4d9f7db12297facd437fcdc6275caca3d65aa02c11f47b1977b71e1bf2429b5e1bd27f9483bb55e2cfbacb824d723e461b7a13581ef8b913ca65f18c34ec947fc2873546e2a252b1d4fe260ff805f1b36381de30d8c22d696f6fecf8fdb7124218b5f0a3e30ced90d81cc6cd752e6ceb7a87824f89ee164bd3ea27266e80913a97e2d990d18f740a622cf6dbea3279c6d6366b54d45fa3fff74c0e89764b3fbf0a5a04be9735c4c896c1bfb11ec60d9735ee4fda2a686710c89d88523e9fb36b407e35941b888c3fa8a84fa47103af21ddb822607bb23f9872892b19b19d6ed718ae8e8a63870f7c9b4e60ebfaca83161e80454d47461f3e3226fa1c0c3c55ceb53ec4227af9a271cdd69e568b8b652a70f6ea1cd7e5dc8ce491cb0720bb874ff9d152dcca70648933b3579fb622637a113ba8ccd3289c2a1055de8589eb3c274361ba96900c13c90ed9a9661f2b12660cef848cfdb84b65ce8afe24fb636239c1dae5971f31275ca8e0e32342d98e640d8f60aee00f94143377bb3424a943bb1222883b5b954e1c445303b61fb9a9f8af1a3003dc5f44e03ff60e544e13d6a4bf540b57e1971c552662712be15df797508ad72f4b2fccb1b331a20714118ae103054aed9aa24dadbf709d6aad1b0e98bac9ba41ded2249d25b2ff943043bcbeefca49692e45bf668751c4e38a7420831a722831a4bb837d602c6ea4b6579a17aeec8a450f535ad63556f3d46983a8a8a99a64824205daffbfd3405c28a5e2da6810d4d96a15cd9dbbcfe740d1c7431a68c19a05d110a0f9c61f5a32093915a72852870b9b16a623f55756b7f15a8000c56289d8cc4a8985a8a22bc26e54dcf761614786af692c5f805d30ace3aa42854ede4db4674c0e3f90bf0b8979c150ae2e15ff75980a8581e1afdc410fdc9e119e49ae8cb0a872daa752074d751485f45e3b05260a97473777677c327ef4e85f8f4916176993e144d0d9cc7b8675c6092a58035326cd77fff9f400d1a1d1306e823b253182e314a0f2d480aac387390b3492a7c628e60d234e8e2ccb0ab8b99cf94acc9d70da9f84a29feef99202dab5eb790982e8e8b67ae114047e75e9f40caa66dc8b6b94580306093056824106eba93045eef53bd55d2f2e00d8927cd55466a158ce1bf004890036eef37c8969fb050bc78e375b266a850f24ca98a508194ebe41b4b055c66917c622124f59476147b982628d8eff41450685e592414bf706d02e4f553383e98b3a73d5d14663a5034f5efc3c6fe0209659a5e41dc720c5d7e526cf2438f349bada9ee6c14053ec80c4e71c11b74129648c198a4955e3cad017914beeae371be2f5c71d373c4d892f08191377afc2022b6705a90290703194cb71f8216e8c2806fffd3f7458516bb5128c2950252a1996024d0d1c23cfb01ffd96935fc0780d2fe5142e9df63c58ff8ec25fba4c4f8b0ef100819ee147ce0159b2170eaf67c687cbe6dcb90dc866c8a64bded579ca6fd20e53121105d15ec63bfa2910a833adf0984da2d02d6c376cebdcd9ec28c167b7598f30ca5ac106801b43e2d8f8024d91295431c0721f500e6242c8ffe7a9dc8f8e50317dbf10888a9190df6383dfc9965e0a006116c09980d8e61b323672a24722d63f8268ed0005d2bbe01eab6df3c7caca5e7567251e6ef98eaf0a81f03ae01be2eab27ca6ba3e0a4523d3f5893efe5464fcd36a80d1d019a8a5a1bee371b39e9c9f74878ec19efdc2aff739cb82ea507e1c6eb66e21ca94134864c392ddba81d01561965106157aa98a4de6d52b91bb360ad3d7d6372c41e61d6ad9fe03cd815a19f4a249323612480f3ebefaf85f43e71b34b1c64021e0a33d2b073698e9e1aba5c50e50c82c1195407b12738de193da7acd4aa1e66a73d1a8e7ad80a6e1ab95fd0f02e2dd754139f0e16805567fb5141d23b35f0ad71618424ad97f187d270584ed117e3ad3e51f7661b0d45dc33e44151fefe2d787830671f031248e31d871d3167b5ef0dd52c07e966580b95b9cb6278e8c730d3da252a1f15ed17809cb84da9c4584fd1bcc648b216f01b785c37875b65f929c652d0e139890537e85a147718544fca5bc3a805e43708e9584f9ccb8da67002753aa53fb9ab8e149f8cb11a041b3243f13c0e0881242765220f4e48342d1b33c79cdd54d9e72223c371af36dd8778eb1370dda960fef25a30d33508cb9e7c6d8824b0fa4910bb90cbeed0bcbeff1636eadcea546c3013e4de42c3dc830c5c81bf9426e9ab911d449c7070339c2fa3aaa6d4ee10eef1858b4ab3dbb39a05945945deab89d0fcf8328e679c95ea2c58440e6203e2326a8becec73ec39720d0371460287e26650d3b1543635097316cf79f9e27fbc09bb6e1fa1697f9d4ba5cabcd1ad80f90c1038ac0de4029c13f47c04f451e26afa2f17f453753aafe9a146d70c4a934ed9827baf10be5db0dc2ca4fef8f4d387ac96342a6f9224adfca1e7ccf2ebf7505ee8e0418588f692ef0396035424f735354b72213a3bbaea6fd14220e4fc26e5bc3dff79c85399272accec378624c1ffe12607e86dcc228dfebd5d08e4f3e985364173f6c6986bed6f1250fb643222d42c3129ee7d55861314ecc3f75f9a9c30a0a2f85227af63ff1bd629ff9ddebd5d0e0e1db0978fd0971e0bf0958a5b59bfa175ca9bc4d73ec00f49c22d2b0b2b83ace03c06df54266abd9bf119182814089997b67e58d65ae5bc9a9f9a5fac475e374cb044173f70fdada78796c00e66a8e3c66d28c05c4c93f87d821b4477c0800cda1b6257bcd21160b3c66e0e2b095c1d420c3af654aff4f0aaaeaf80e8b86ec40ce4ceec11dfa5206fa19e00f5608604cb3f1e1fa30dc8cffb2da773a1f8b1a0c174be9689b81aabf074ad913a12fca988973f87409bf977687dc9b2005a75235880750148ab5aa4e655a1408fa2191f15646975be9635e25f3fffd7f6f3d7e1c8f6a89b17df687420eeb12c19ee0bcd312e80f8a4da6b94fa8e617920d90e103135d7a7af99c7057049d490f53eec9f4137b0037c23c136d73d2081a11a696fc229d42f45cd0ca1c3b725165b2e0483ac3f8c07ee956c5f96b06edb19b850aca688e6c87aa39eaa5f991e21b075f07727ad56239306eac142b6f18d31e1205860a8cc7d971bc23d469180f1d78b27a14cfb611b84468e47473fe6b44cea99861a8fdd16f35d86897d5d0f17561a67d7854a12d42adcbaf9743b1bed6b958f16670e0fd0f642817cd1206386fd3bb445036e8ccf7b60fdd22e71f452dbbf0102cf26745db800c354af7a93a466699d11a7596903acaa736f3256438b6425854ee918ad94046dffdd9332a1d1b0f8082c29b48523a225567b892f89715a2a09a8b4b0e83a4ed2906f29d15d0288d0272351d2314b14bf5916e4e541ac82188ff654fddffb43c980dbd8003e5f4d3ffccde3c03b760031602b8f7c9fb17b0ba044afc08bb49b6336b622a5dbd0cedf5eeb41f8814f498283868fda1c4c233047d3415bed48724302b762677918364e7c5a8d45f67b93268300844f9386e1b02c3ebdca4f0a8dd3b5520872583bb52cd469afd654e71e9617e04ecd7ecda0f726c6eb5bd963ea30b5cd34dfbe32514f3b8395dfc42e3543fc7eab15a100e81e1d04bb47b22acec0f40f183b2ec9f8f162c1ce838f0899f09c46ef8808df877c0523ed18d02ab330f6a5b8dcfbb19faa8f849e0d805a62f89b6c385540e3bb777dc7322c7c54477485d097891228a76404821338f038c6bda9d78c4a741b232dd2d7b874d015bd5032ce0dc15f63fb5061c3ee21bf753adeac6ccf3513a0fea9f5c9636d0be30be0fa00711a8f106865b77f8260e2b65876f383247668c296727ec04ae1d0e14810003792ff32120c1740c9bfaea1e76a2006a5cc3efa6914683472ccd84c034fafea198dbf783006f87698cd9f04a9f8b2aff58da01ceb4d9a058dc1a281782d28ab4db5c5c7f452706826d604cd4bfe621c940ccd36cfbfed197535f15d8e45da1a1c137eec79a027063e9b035f8e1b73f075a8aed37e6b99d862ea722195f892ca6d4d8aabd6023fa4bb1ba56dc1b9d8c73dcbb2c446e7b78b5911a3a66832fff207eb61eb180a4c22624f60e99470aa0f9374b37be82a138f3ab0da69bb815e19a5afcdb2bbf05d5720bce807f820e90eb90f03bde29204c5839fef03b3d26b0f2bf5ad5af85abfeeaabff732d5af02541fd210802f4deb5f1244e1f927612ba25e296f384cb3e152b409710e4cd820ba42e523171a34d2d1ec2758151a325edce8770a989345db8c146a7f0d3981f259c87c1e698e3b0d3b9d0ea7b397f7ae05afc954bfe45d55b79984f3f8fb40005edb2bff1ce2db1ddb90118cdc1fb70dc159e7cbc90cd89edf1468af3422547796d2f7b59b125944c565a88270081a37a9e74231910f1db22cf0aed89bd32cc3688c988a93874fefbc5b3a887282e4d9a0abce20d0558f6250242b21bc9c1a23ac3d05349009c659c28528e5e958dded8016a8a383708c6d6a4b6906451324c23a5607a2ad763573672b2efa815351b5d3a6826183c757ca31e2c2d30145909f0d890529af118c5880367927fd932d70298e14fdaadecaab7705a184f9f612d3a314875818969dc4ceb4ea290dde241e6259e8a13ef9e7f6fff5a058995b74e7cb887d89b31c9b0da9114b7a613506fa0ee192e38cb0556ddc30cfd1bb5f756e6650ba2e3e73b42b4c80a130088d49fa1b4a816b83128ba9d38b4920b99ed44f8472902a56d94f79c806a7885a49ea7c85a3d73d84f6848e4417515a5f48996e5b67eb7870946c184041c6e2bde92fd4e9bb2ae84b52b930238351f92c3c2e9af2f45d01bf831c246a765bc98e5459f92cb9143ddc68c697947f5b2a6a66b3ca013c51090bc62e311ba8c16c467150c936bfae7e24c23227d33317fe4399881d8294d2014b7c039544eacebb3042e0b2a6e412c1dcf122de25804338c0ccb92a3953d8886157219bf44c21293dda7ed1f34a05e4dfe8d7f609db2220ecfe391afe87d7f5761656b3367909d74b09a083eaebbf069dd09e4d1d3107b51fe32cc56efff6ffe3eb85d0989dae8de2188437c62d376f060dabdc15a0f61c40f33b5ef0875b62e3e9f3bf0323975dbcf31ab05a90bc2e77d20b447d3048b09035d887258577f0a1396611a70640fc7f8d28585ea3b3211e585f4b194d6e67a4bc1a20d28cacb6d9ca9ddf25a4155ed01850fdf5226866dbc5fb5ba15fa697c555b6465e3d182792ac9ae9328fd01a3ad716c6bc657064181e262693d0cd02d320eb5b78e55f6b439c90d61a3b25a661e687fc2625fc7909b366458717c2a017fa3042c9b92d7eff95bdff8056caf86a21c21de992093543cdaf272c264702e508f8d32a97aa4471c69cd94b9534ca6232edec9571343513a26c498bae0aa598e0b956f099b6ff9b0124fa37da8c968a0fd96091463c222333d79fdc764cbca38e619b3ce2b272c28bb9a6099360889633630da42050de01e5eb1f525b2657278fbcede1625fc7c42d224acaca3563f059240551646ebf244d49538665b09f6a0f865f7ce57289a7790a45c7740593750119a9a8dab97ba2e7d5cd89ffbf397f0853786e28f0c11abdc0bd3d5cd04b5976460d289158cafd7d7d7c17ead7ad2128067949b6246b91b42aff8d80b8437d2c77fec238ab474fa04b3d8c54dcee05c52d20200cbb18e7d2ee5a1aef146dc5c10afce2117d8ec13365d108b074f84f58231671a6ccaa5bf72de619e38d7e9df12b7cd4cef6415bae09c1e0a0730228282b2359554347f616ce52af375b8f57e2440f7cb9b43d81cdbde1d1bdc845245d24e9a96f7462107a3248963e5bb83d257f5d4f228897db00f01a92ad56d3a9ec1fdfe827559d02296bbd2518e02d80ed0883d76114eeddd10b1dba463dc70602632137d42f930399b76785083d74e20d6de5c210538805e4248aaaf4b8f1aa79c7e0d52d8aba19b41f4d624f54e57fae44115a3ca1da353c41d72d565748391e11c5047a88ef6238fa028a621640054fa2b84aefe1d0159842c552c7c37af9df78d524e887a721c156955fcc723ab282999e5c677f6242a348008a2935c95c600762a838fd935b2b67a4e1c691d34f62e347f0de6365e00aa066a4f16ad6308dad8b256df02a4d0263e7433dab39cdc9a4c70808bbea330ecf093d3a0a04e95f4cad22278686ceedb9d28462147bf6cd88671059a06bdd2f719767b1914d2f520e5c55a1373b3edcdabf6ea6df2dfb611718069ce6dbae845632616f652e600f2fdfb558dc85401927c825f6251028a7a46f06959ca1f45851aad1ddc6096c044204c972a4c9acc48c10525680694d50036f92edacd738b47be6e1bada6c45cbd73e27df1ff50a87e48c61387ea9277335760bc77f74682406ec37cee853a644080899467edd458fe484a9f26c1a3e02c8ab34c454098af55ad7544a1aed05ae41789d00f12cf907e87cbafc6ea7a440ae2f880ed8e43f0b6a34c25e8e3be754d28fcbaa84312cb1a8b9ae0f447e258ad430bda172d9980443573a892b0e6c9167f9b20a167f94d20e6a389a74e090b8e338e9b7393b56467a230cc62f5d936534430d587945e814196fee9635114e2f76c91801a2576b4557661c789b2114eba505cfb62b2ec0977b1ca5399248d7dd7001795bac7cef590f01d027ad41e25e85ed997984e3919ae88b0427ce5f875680160271ab4efc9f0318abdee42b7c297b93de61212e6e2b9ba7ffc0dee040b5bd27fccec49c97e0b5d2a4263c112420542e7b46d3c2b967ab027d32833f75177f6ac440ea44e45681d37d727ea3a68bf966c20e348ff314a7b93b9207f80055085fad009e66cb1e5857fa8052357c1f88c1a20c70a20bf974968da8ed2ab30eb671887eee1aaea47a5710102fdd87955779f63dcd4451da141000b679101e6960121e1b818c31014ff8d2c2104a830402a8728eaea6a2adf06a891cbe5fcca6bf81c9f90beea21b42215880be247d3c8b60311a1570339c8db754d7c235443f4743960cb7757262e6c722040c4232eacb235263bf8f5c6a21e8cec385612cf91b89402bc8b16322cf89d47ee30e2fab6b4684c75f752726f42309386e31f2c60905ee03add0229bd8150d5171ab20f2eaae7d12cadc08d8683dd849fa79c6a275e501af110aea17c7056289bb54219cf52d97721185090df30252850006b2298fc92776ca1b4400255d829068d3d08ac2b20ca49db939b881038df31a7d8c7e655306e9542abdddbdb89379d1c079a00d8d7d0d20cf9c5f8ebfa3c82eb84b4e83a05061f9d4cc2299faa4a2744beff783ab134392d4d04d3c904173a5920462d7542855174122dc58bbccf309d985d0aa14f7230828aef20f8bb00b0c9121db2b6d855db51a49329eeb2e66849bd216ef8249c5895f973857613c908b50c198354f68fd232bb9c1f62e1c4571ccc64ce02e442b2c959ecb4624cbe214a8f0357b6f6bf45dc9657bacd130f9c045d53a5bb0313632269c044b831f4eba0590073284469dba183663fcf3494a2f0ad3899e71f656678bf06268dff61d4a008038f2c678232fcfe07d72db570cbc2f0b6946b86d422ce53e670fddf10a873e7429a3175feba09f6c5f94d5f4201e53f1cc4d804af329c0df0710b475cdc5f085114066197843834c0edb952f19946e16e1b378b4bc0ac5fe7026ce9fc8985746b1cd4dee7ae81b3b748c49ecf83f655f28d67795037f91b9ef5a07ee2353ceb1b34d5cf79ad40e790d1027055dc1aa0d23cda1ce795b79786a8283ab3526a9fd26bfcd687fa93df70d60ffa26bee1591f8126033777fa9347d0d292a91cdde84fe57b6d0eb3aace19a58f81e817f7bf4abe9e4df04f2a84aaa6c5358361654d3afdd7afc1067aabbc4748245904758d5bccc62d0369768bd223c932d9547932952b75785dc208714f972ce1c635fae8304c2878cc8a0409be53020bda40014634a5312c473510c84c7f4658ef589ee13894946c5670924b6715dd8487ff07740896a4f41335599da72fd1494d496bce383c418a0960845ebda99c75a226c822acd20b353c26ad29d0632a2ea26f35613951be9aa19ccaf6b14a18c8e25b10b6d3e53238a162eb3ed7b19fcfd0782bb9cddd5f4d2d12dd874f5abc04e80d0031ad8d9d6f086d5970b9675a0626f6f13d5237f2af8ff87d8ab70ec417fe205d99b2a5e9868d2eb5f5156ef4a4e03a2a28b5bda66ee8d3e29f6a2fdbe635d668a11e4753958450c844fae3bdfb931f71220b373509c474684439217c8136683c95c85da60088619055a3f4985e25f5dff43e45781523cc579a335340333da6a62b4800e4affec6e4e982932a525329253ee2356d12a25860adb20189882e2f3edb3ae659f43cf20455db0f9c84e4599ea4afbc6d2bd9172bbab7be90d8238dfbb8f238e2e1dd66b59402223c8e6a8cbe9aec97bc652aed164aa339b75a8eb526c3e015ffd27082641b4cae66b52ab498313b7400d25075b7e2ae24b4fb37cbf697d1c9810b72d3862648a31389959674610ae37efa6b7cee177a4e539ca3df0a57b5d123a34b9adba23b354159768615b7fe40102ff9c44bbc9781bfe1d756e3c1bf705657d643896c2d0ef425d5f7ae5a5784bfcad40c07d12cc3a1b0e60a7c2e449b285c55613700737425f4ba883d111ce88e5551424d95009ed85231f9209beaf00b241f4f8cdff30a1b6869bfd436c736e2c9d197544ee15b8e9896a4fa2b2262a9ffd3304e0180d212781ef73cafb1ae41020f643c6fd6e0f7357d42444ae882512243b9b22a07fd33035612911e989495f59a0a452f9c94fad41ba237d5039fd3ae2a2cb70a82374ee3d5cb24547b435ede87b459f212f27af9334b90531b692870b2899dffb52dad64f13556503f6cdcb011f4fff0d6b8b37f90ec7e43310c1dac783df856f1494071d8cf8a9677181cd3bcb2f7e20c3b8168b8609a5bec59ae98693bd024936a830f888fe2f4a8a65cf3e6da87ba4244e784adffef9f071386d785e1e64e3a2fb0deabe6246aaf373d830b0eb3d3da004245bd67a34efc6d7fd76fdcc9831de67ba0f279d926c47d2a1c1a736b4984ebdce74144bfa258d8a114b24905a2bc3be9eb0484f7beb6964799c789d54862b347f30e2224fdd716adbed2c10cf8ebaaf49bef072f0f21e04184746a836d1e15c2710bc7d0fabb675f4f2e037701b050db02e69b6e879aec7f842104c0f2cdc552b1990442c224a4f9bb5e0c37a520de432ba51596094d255b5eccda51ba040f8fe62126c2637981abb15290cf4ee9007b149c1c844e2c7706f04158b7a0f496071bf716b9b38ed25806415b00795616f27ae09a6bf9fdda67973674e04c412b701311e68a52b8e265ee4f8ce9d02119c8f2e01b564ddd405f0f2668d73e5998f4802f2194dc2d282ac4737976f8436a603d87109b2d747a5c8561a1062d7944047f833c5e946661fb03118b6efa891e1c83f2a94c5273d61b9d858821b007eed1ab88f9c2c2998fb1c31a88c40aee01ac1c0c50670c992e4964a54977bda8483fc4a438a0f62c4706e301859d1002ed6705366a04ef369d88f38731b3fa25141862260f6156b959c40e048c4a1e28e4751a91486bc14aa4653d964a7c90b825774d0c88afbb9ab07ea58c2dd3f42c29441ca147321674473abffa574fefa8d9e3558886e09d73acbba9b7cd4d13dfb7a30395db19e31ad60708215bbd9263636d1a43165b66e0d05361ed5ed52d42b7b4bd6dff179a30d27dbd3b1929bbdf4f7c2fd3b74c4611c51d1dcd2ea473dee7f9e287fbafaeb5f2b8e37489e57eca9e50df924fecf10c5c4958c439f2d3548ec286208f36df31fb0573bf7208a3e89eff3e4409c9b7fefba9d246e7ca03c7d23383916d02eeb65526d034f0bf13c15e2922b26e2bfc1976f5b1d71911c11f5482b9f2efa0e7bcc7c636dc2ff9c5cc30bda64b9d629656635670e57b0af8c7fe211a20dbb779096f99eae74970cb1b81e99ddfda50689b2d7daa5bb6cee7b2a2e30e881e4eef1363a34a58d27917d84359b6cb6dc4123079dea94e037ada9821c5cabfeea6583f59679d5c0a341013a98823e359c2f1832dc18163ef8de8a63a785d554ce0dd873535b15e9a3d560e56746579a16fda777ac0d2db48667e5135c578f596b89c1bda69a5c27ba11b09d9042eb297f475244d1dbd873d741bab7e0e820f8800615f8ec22808d763172427c246b110debe1735d1e7efbe41f2ad8e1617841bd21bd5c1b80023b99de97fddc10a7bace153d54d3e251ed255b6eb42df3adf12d791e6b573e03be3fd3381f41ddb1af9493a0eeb0e25a795a8bcdf098c898f8280338b1df40f038e69ac178349321414c2a775c7395c565c4a3451d0f3c68b109342c1cb2f46ce076df09256f5a017fcdfa5c3ab62e016abf0344b35ddd7f657a670bdc479e6b4d5ee0d4a79d854289ec4a813755f346e804234059b63bcbd458dd33d546608e90806c6e25d42565ace3ca234d48728a1142c32a7e25ad3d5e468a3b4e349815fbccd80926cc28534b825edd5e619899bdadb662d50e01486521e76604fc8adc370b8213489e9b1ed8b2e19d58735e1b66f588a3a31de63d4127081529f894098c07086a3072771832bb1da6da57b05961e6ad02226d0192db6aeffef845ef3d059917b6c15923e1195908a50cdd9f04fe8411b4b24ee9358f23848794ae2815c9c58c3c907fcc3f7084ffa8edc1cd830ea8cdb5e484a1317ad855adb037ab4738e607e0ba0c75730702aba1d3caabb69260faf9114a2a3d08e9a4b7d44b099db4511ee37ef7f6773ea9d3ce28c10722610675e71b0ad23f304feb1ff134b06014228d9d7bdcdb76d2cf81fe5f9926bf094cbd70f15a46fdb13d8143dfff8edbe8c8d651448ee3a36932e138c1060f4abd766fbc364bf66dc07ae4b6fe2f3d211e0036ce98f5401863b985a0b75d3b8b77cd205bbc1d821d80d5a4b9ac79489a8977a8705de73c3826b33adb136f672addecd19edea920f0e77198cc34d8d7f2b93dad4a932bfdea6cf75843fda3894d35a67912849419598cc1ce3c8dcc8c1c39349bacd77c9ad001f90625af4b98648ee4a661116ce35a229a49d16d285ecc403a8cb1928fbdb24e11414c09227f2e4230715170a468853f27447f665dae3483f88b2965abc2037589791f073a751b6261ef46726a213d208c6046b2422448533c237c13ca5fd4842f4ba417fec9700b61012070879e617361dab20d3e6d490d352aa2a793a86190c5c1f28966e5ce44a7c0218d1bd1e8c833a07dcc2ae86866723f65d95a3c51ae182a7ccee4ccbbd15c4bff2e397c68bb2a0be6d59885b86cb92e2115aee65e4d731f3db306f34c9f589ab349121c125cff220e3deb64458974cf5235cee993199c0485435f9f0ad5c51baa18c087685bbd6a780d925ed1805382dfc3ed6ccfb5a952426de56de376b2f4ab396fa8696568ff62308334b489437e9c9131c260239de3c80af15457e8debd4b4bf35792eeb3ae7fcf1d68db97797e49f055e186d5cbfc85b79db156880c127113460f2ac1ad8c670321a4211f4333d9cf725af86ddb30579e2823d5c4a198863e6f157cd12ae523b630408e09e4e205300250925923e0eea07d35e86bb1086080741411864c43027a9543e4fd729b5143ab5caf88414abe7bad008509fd734d391ee0a68422b7cb3b3ea5831071fea148eaee1519245ccea61489d8e2c1948aad89546c4ad38ca5d418775e42f67a9e8ebfed7b159a2cdba0daedee291593ca441206551a64330d0061b71cc2988fc8332eb588e30047e70382de13ca946a7b9743bbfbe81644588294b80c5fb8f044d2bfd46bca327b4d006898f281503d90d3162828103280f421b13541d5d0317e3370d0762de20da84496cde1e8ca28e3fa268fd6132b7acc4020b076df605ac9bb70d3a19bd173dc6f27d127a7147a4d4e13382d221d740931db1cb697040537bdad486de02dfa413ae0372a3edc7a5892f5577d11f0bd953294ecfdb1a6ce526437e7e3814229ba658aad29971e30b49a615bc1f27a61e55270f9b02c935d3a2c645a10fd7fc53acd904123b3b450c2d7fede6b07a0b0dbb13e40d0d69ee0ec164e402ea5d6aeb7225ab9bc0adb2833eebb43fc9b00d3797086f9c3784335b9937549e42bf92bc893ac244c4d0a3d7b40661e320d93632aa849ed4c9e64be1ea658ec41c11deabfc9a60b2ff02f8d5b0ed1aabb07f2f5923cb12b1ed592da3ead5a0aa761251f3a43602e08e6f2efd4e4bb481e52670a1baf4de27463429540788f81a54e468e496816859a74e5d7a1c89b9c9e4b6b2cd8389141e098a5a2640c8c5ce12ce1a71190365cbcef5fc5f8e26d0c0b51a0d0e8796d084db53548037026dc1234ab11daeddd88fe1bb4c120d57c44bea0b4010f1f7024292da80698cf2a70261e47bcbd9edb43a0881f8889a21097fcf794073d93e2a811430e1c956399e3ce95cc2c36114715132279041b4bfa12a0780bb3607a2b9354b168fd06c47b5484ae828ed82488eb5d8109b050a3ebb568729c026dc3f5a0f47891b45340ab5740127062ab101fc5cbd35cd02d22141e6f1acd2feb562be1a67b3f6b3b007d374daee529f32e723484e8d00c2e91832c8aff1694f4cf03f42c9dea5bef80b00b186698fb7629333318ff9c27eb0d56bb174119072217ab0573b8e24de732a15a78327d10aa543b149540bb0d6fc2268a05360bfa5fe703ada4ed019c9cb100b6e0ea3bf5d4323d363487b3e960e43a9e2c61ccea3312e5885a5248d1a72d5a23f2a51d0d0a11733704dd481f45f69a100391e6ed658b26be3bbefbe391de3ada7664ca658d0ec27dddb69281546e81239fdf536155910d894341f9d0946de6f31a9424b34a201a54bf6605063963cd0a7a762a494baf1bd7c9ba536cc9609d253b745c823e3e11a5892f474fb5a111bf8f40191d615d6216539242d66a0d8c2bbdbb92c31e184d60258774c0ba16b66455a6ffb3370046f96ec089b8b86d596a74420dd62bb957396fb101fa0523eb0930e067fd62cd9ef505d9f63d2b2f840f336d87bae2901095159eaf61417436b90639482907067e452df03376f2d73b727b7a1f421195c0a10e9cf3bf159fc8119c6ee8852a992b99bbeccdd538e3a713f993b5e8cb78fb983390c949f622a9ead5d35d8967264e2b5c8db85a9e8ccb8a56a1fbae09f3f43b568618ab2389f739e3ec3fa0b3bac7b106c1e125126088f24af26b6c89ba9bb87643ec15bbdb25d162247eeebf87dbddefb663d0f7f5e2fddc7ebf9750faf57a582fa1779d7d75fef6c0a25be68573bc2e3fb81b989fd98704e018e612c952dcb287b87eab4118b0543168149b0c615690c16f39af77ac936f29e43ecde483d8456deb5e127aaedf4cf59ec52aa5c3610449b86045157e85b1dabb3626f8d1b04b7012867b6eb457b3c24cf31d82fbc8ff4909622485a49b11d54d2bb58ee7a7c5e49ed1f41146a4a57ab7d609a23d8c8f99ba840e16859eea6eb62c8592e455e3984b4dab1693c43dd5daf76056d1b173303bcdb8b0c8d85b6c5d120e810e18edaf572196972c40ea526b96f9866d049963281602b49c43468559aca74733bd021747eb34f78727796a6ece86555b39d0121cc9e87a747fc4af3eb47dc4de95088accdd3ca02e4eb035ee1d4df6c7aaa045b596460d90456ac55369e03084ab2b2794053a95a59d8a5ed422d05b2e8aa65b64901152a074e8f4be90eb5232dc51e79a98fa85a3f1dec2e20ec47eba675087955984f63fab8544eb380107c2cf35a418c327098e53773f293e5239189870d6492d44432b95cb4c59d82033a87e983312a20b40bc26171050a727c581303846c45d30b770e48390166bed5ba7c9d3d52684e11618e543921d77998715dba05b4d3d1a9d6112f9eba82a75eaa9e1f3a1739980ed982da53592a5269258c32bf27cdc53e17cca7c9b729e95bc7b4744dc930ac7b36a3ae41ee9435d8688674bc8f724a921dfbc00e3549b2afa8604a660ab2df72b3166b1698ebc73cd2a6298977d483706ada35ad3a1f238e04d9bf74bbd0c2a9d2edd36b64526884d31df696f544962e78812aa66a0907ce7e9be55696b4261bc372cfcd890a9ea87ff8104632bd91bb0a67d950603665b061ca16042932a41804e825b24e7cdd2e4e9d25a417091f3c37769bceb3fa24b4eebb95164d8ba43054dca3e5ebc5dbfe5b801e53392a008c06e0da756e41f82b0704dd3fb8b7c1ec2517901492ed7575e75881ab9481e301be4fc3acf0523b2c12738b42fb28d4b4af43fee0094ee926d19dddd80c64d11f3712aaffc4625a936cd8f46486e9abb26b5d46a6502957d17912749b3ec649f9ac4dc6c94172f029df3283ff419cf419930f21e5e49ea7a66e49256bd28ea24cb2541dfb55d89430310cebd1416d9f1334c179bdc03b2dc7b8b03771224b837890e37e9a5654bb2066549994bfa32e86b4279c1aa4a3fc787871a8c1725ba8d280f08ea39371583413a895eaffca31703731c6a51a06ad478144f545e194f2c3af654d6bdcfe8ae7779fc067841b8e95664d536a0803d25c2817312638483a16f525d6aab89997a38ba89829014ca0708b71ccfd11d0812b4c2d045a1d37d8ad1eaa3c2a5c511332ae7cc0bd7cd0624f58e839713f8f52073d326280e8973b3fdcbe1c1f90edb4cd9445b6d7f0c4a51283dd143ad6ab9cc979b5b37c401908137c8c3d2545db7412728feb1c1fd5760fbda4267c27614c82efb8d9bb69591d448e84f1e1696c18c8cf8eb5c88bb09c2109e3e654c1ee29218e80241c19b19f88b132a88e87af45baf10049a379cc00caf57df2c69b94ef620cd18d310e5562acce9bb1b391ced2752889a7b61e2c965f66b84496d227edcc65116ff2a745f278816620ad36a3e26d92a6d02bd07f2d930e5abf37f97383eaa93d4e17e42cf22741e816038e61232b4bda62983e9b02127f572d7fa19b16d3fa652a41df3887d889d2c26dc1349c43a34137f9c91c92816bd5a5dfa06772d88750a663e47db860646f2bf325ae3615d15402966c3c3e460feea185da9d168f43b50e35982ef32d84b7cc467b5ac4e59c15c94efee86132edba27c6b15f03d11a07ce4ee2bb36563db9106683f06ac1fd77135cfdefa5994db918fd00a637b64b1627ec4675d88f2832f402945d8e90180b120528b7608a48befe272493ef7cd038fb08b8720f26fa79664d2fb3e90937c62f17bd8c2a01bc732dd48be7a98c7eca72478a1315bce841f155239c20f1ec91f2e73b2cfb3f76a2ac721f3105b3e0770f987c1f22524dbfff5928fde1c17110277e7bc2d1ad53a26707dd1d34ce6fb5cb1794f9cb3ddd70c1c5b061acd509f682db46fa1a18e106f6d23b0f672c13585510ef6c1fc45c397d5afc6358a55d2315aa5871f7c8dba8f0d4a3a5e6709ea5b3885851d9595e23526c407f1ce9225306b00da6001911d2d2c7509e024bf3f3f1de57aa11f56e4e52be2e84f503ae753b45169d0b47da9e202076ddd1b4b28ef3be3f82ff084f0b8748b7b36120b10924d574e510a7e2a1fbe2ef22cf250023829a9c9226ca2803c3231f77eae5431d251cdd6a0cd1f42756875187d9537d42c1c15ae33d97fc6be82ca92d136aa55c4fe43b28e597f82acce14c612f0a980a637213dbe5c19dc72ff21bd2ded52a344280f97e526f700b6b5f3cbd4febd125f05f09d24c033c6f783ef17bb92baf897b25c9123816c57f7dadca2142dcf585888a13e5285cc7eebe9664ab80ae089cf9d221917352ec6169707438f35410e75ec6f68e6728a01ea6e0529cc4994b392679eb9be4188ed7e81f2b6c3c8c7efde5a71411bf9871fde5a8f7c8d75fa6973348b2fe039dd34347f766c5b1905d60bc40e18926ad24673f7395764f7e9b3860a2e567b16ebe9169367ebc4e5b4715c0dc97c030676a80f0acfa1940774fae4e87f24cd55fd8ad20e033cea665c1854000206158dd653c2bf4f718bcb8ebd06d02d7bcd44755f8766c04ded14e41213ef5e0147ba271355005c6b069baaf1526a2542857b884868d1ba8ea58c85622086865cc7136886c95dd269797c72943acef72761d1ac9a9e03a96cba9d0bb5b5d6d452e2e1f67d7d1d5169b8eb9a2077092f9d7a8470fe29166382b190e0368a48378c5a2ac2742a3d62041218f3b53cc97f8d843e87b72144eb8a1c837d31a1218a3c0bc8488acc37dddd2cc721cf855345843bbc7a254e0f1784601371c35285097cc24e9c29dea8d6769b8b53c45a927ddcac93d4073b0230f9f83362ab8395489ca43d62da76500454553b9eae03bdffa0b21cd53e97fe0c0148f3b9a1f2758bcf484b89a7de650c8607e3492294eb7ab8df2159deb93e76ab3dc184123df26bfc894439bd8d4e27b757a92bcd25bc9311078d74dfad308b3a6338ad55839407b92d04a32e4006dcee911925d66f8eae6549fdb372e1f9781e2d51926a8f536e79b6c6715819109b0b1e95ccada1d8fb5579dd7d8e3d0ff10bcfef9218fb092d02d3878dcb5f96a6ee15e4fa8b83b806dae975feb17c36a619b276ebacf0bc6d9118af0ac7c106b025b85f0417f535a159c4ac85781b667b13bd7bb1c8c758eaa0e11795ae7dc2e34594551b9c6134cd5c2e9e041698a2608eb9658e16eec9466185d1b7801370bd987ca2b365dd6a559d80129571328884ae4044c8a5f4f9fbd2e909a7a2a3204b608c0decf761af67d8f57b4b92a7a485a7d3beebe075ed9c3dd626770ac71d1118f02b43efde8ac2c4201694987ecfe7dec3489c35f9cca3f6fc952daa4b1871cfc93707ef7a7e7018e5600b232915f6384ad4ef8b4008593a48873943af71188ab9112ea4f79b4999306c8045469ab2150eadcaf96d1e498751cb03bbbbe3d9c2e3954b36d5007dab04d64e06c20c6e021f0fca2b23f2253a46582fbb81cb8fd81c1ebb8a7e8b5c235c18caae3414e695783ce10f5a0af8b4212984a1637266c169651d705a5ba8d87c0ff69cc7280e0cf282b388bdc6b27dc64590442625520b5de19693a0ebac310bf8ee703f5832f862bcedd48106c50c1f12a8663a4acfb1461c4e1b09d25361f73dd79db2f92b3618d994eb2ed8c47ebc7917ab72d72444581f0b519799b4711250e9bed92569b70f62ecf002012077b4f84c49788c73d0bf94647c8457b31b7417f94dc8be635447bc92fb95413c2b7ef2c34908abd0b9098203a52c16651894730489dd3f60a390ba8de7d57e0bb2d3720f6f8589ac2de0d2f4840f25771d1cd4f6deb10e7e2e964bda1870b8827be561d07c6f2f564232ae018707f93baeb809d255e58a26dbb91ea8694479be611a9681ae4d204ca3734342f236ba10d101186f269572e202953d48e1c2219bc2f290db4b12e08561f2dd56f225ec77a9cb1768f18a96f112511f8602916923ef46d41706155911695c5a2c5530e6b93a8a9da3e26524b5061aa170425da026336c2cf6f840437afe5580e585b0d7e39501666b7d249762dd57244d56f12a3bd54667971546ddebe93038181fe74f06c54f0c2c9b47424a3f55b25ab402ddca6aeb4c1b8c08c33a25ceb0d28204371ba96e54d5cc8d80cd5f0d707e122926d5fa546d3fe1c7706473239303570b1c1fe5c570304c5078e87a832240d174f2e52982b50e86d73d885392d709b71dfd59ef1ae0ab073e9de7e029bbe5923b49d7afa612131ccfc44d5f9d14d4e1805b702316f1f8062e596c0adc23198e32441391d3f89a2bde3812ed9e027b75d10e2330c5f8d61d62ac55dd234d3b3110f85f4355568d69277875dc356d528a1767681e3b9e29ac1cf46e1c4283a62786d24731ae9258743ae8c398a3db32174b615ae5d471c015b2e0b8757b7b508e7df686e058c8d4e8954bc1e0562169df7c513ab1cd5bb67b9cad9cace20f945e7374b1fe78e894717df4d36e5918c6eb25ad03adf02f914305a19d544546fb32b8729bd45ee42616454993449cc0ef42893f6f8b2e3841f8a8c50b16733c782cc83c40712ead86b3c72c0766522b99f734cdc192a14a8b6f154977b438e4745d069cc59126d2412b2a926dfaf5b002302ea40ac9bd00a46df233f1afd9813e33914a6339d351891af24e14d55b2107e2e121fbfbe29f457ca4efb95f13aadf9dff4a97177aa3fbd9c5e110a28f34a8544be186901a6a943e47f64a34cdc4d51bd8f42ca799f501b3615dabb63428e61fc056ae86c266bc429b5cff38324dc4a4546c542db3b664b360319570c23104f3919da73213ad1910611b9144cfe260d1a0d08f71fe058f0bc9c98c188dcbf379b2a6c87cc4e8a18010b56559909535cd6caa919495a1cecccb21a5bc64aac12a4c2ed96cbeead413a08360bb024cd0bba6152f818e3a72416f0554ddb2ca733d8e6998d5b08d426c5bc603742483b2edece48543a3da57a9e32b0a7a5415baf7abc4bb1ca20848a4c1a4f4c0f8f8ca08c2f3e29fbf75050d3ed8272a5043550578f1a690b5d86e0d43323a24b58e62b0ebaed7442f26409b74d0015c0c06d90814f30f83f45599c3949abe0b6ac49fc3ef9e863ac9d3c87350c408caebb9cd7cabdc90b1ad34aa4fb9ec9aa3c4f73655e268b7dd4843193f5c8c5b050739783bc38a3a745153f1af312475ef76bdb0a559aa2d69fb2ce2315619cbc380d946e9029b320251812d4d8528b08464c25959ac7c764498c1164e1eef77f190b4cf79622ef5c19d20e1ca64a781cbd8654323d90310e0e8e32a17651e14c6ff86a1829376839d5b74b81cf55165539558ee873c34411cc55168422cca900c492b0ce3f612df3d0cc58cb44524ec533c88a942067ebd9243a67d027c8517b2e596d091ea3523c81aea40973f69e4d054e18bc4a2769b96e67e28c5156e4421ac9a6cdd4f591f763614c07b3192e2c343167d7ccd2f6e3e22149f85d345c500e95d9cb1224a0361ad0021eedca352434488fdde0fce9e943d89d59c8d0255a48622fecd6279a3cf94f2d060f1c76019534a7558c1cb066e4a8e1b4b4fe0f5b2dd435e37383922f36682aa9dfe7e4aa93ace41defb0590599153cb82445d25d7e36db128ae98ec6633485b6ae1417b5c8c8773f31f4dd2057af14ceb7d7854fdbc235ebf7edb0e4497796a88b8d6e4efcb7718a901b6a9e7bfcff5cdf8e33204ebd9da126bc816ee8cefd4d8d512f96297a8458bf376f271788d8402ced01147dddc791eae0f1d076873c22f2a83a0725570b7a08945f64c17a73988bf30a220f7124216b5d368e7b6c4142992c88cb9654b8732040c41eecdcc21681bdbb517a6591aadb834566fd85651e7c142249032813810fb9d80e47bdc0a4076c1302dab7dd5b5c300ec2a20efb0352bedecfc60d072e806f672c384ab77915bd84d72da43907767b34faffcd2c317f5434a277e3806c3696541be9d00f43308c74703de7d1100b524b9b091830b19139cef8f6fa8f04853775174fb6b6a594524a99526c0538069605389e5fa1676a79ac95f3d6bb13bbf55fa1cc31fb37f5613011e7573838a21058716a156138876724569465c01792155f431cfb375f43021de42870923d28e0c1a7748f7c7792b1203bce8c29eb55dfe3e4c009453adf90334a5fb157b58670fe06cd3171a42f8e8e23fec044554b01f45daea73821ec5f61cd39610870c681fd0b8603fbd70dec3bdfbc0a760383bdaa25024c64ad56beea8f067c9b5bce6c88c01a1a93a6a9c872e747dc860ef0000975f37480275311ca668a62ff2b8ea0953ebc484a296d1d02bcc97d7889c530ae36e98267145570c777fffe8a9ff4893183a77bb09c7ddfd7df5700707ef613b1e8ed4f45fab426a796d538ff9dbe9ce28abec47246a5a54e29fdda02af672b0e62269d525a49250e4f6429e78b524a5ba9ecc609583e2c26ffe54cccf2653da01c43cee894c97ce4537943ce9a0a0e5fb2ff0972662d15580d457a19101206a55721a764810661a2283185122370bd9a2ca2cc977b47e6cc951eb09c8180e6fe59bdae83f270a22a3da9a5984fb1b55f0c6b2d08d386d75e2af6b44f417018f2a795d34e298962d8b9ea967d1ada18b9bd641ad2c690323a6918c3ce6c5d5835cf48dd4c1ea98e2fdb9f95524a29f629c23f2fb63e2b388c707e0d6f9d3e3e2a167d6c524667f559c161ccb7755a2cd5fa9c33f4a9b4d63a9f7e0da94f51f679ca34240d7d6c3e6b686be85334e99c73569b5502876b52b23abb83e50117b13b589de541ac41930f3e34cd9e5bef4933bd48f16aa5d662caa2f762baf31f83c5603b206e0d398eda7864b2dff91d9e182cc67207ed0ea03faba9e9f57aada0710183a82e372a8aca92defc7247d162f48d2b84668fbb0b4d219fd2fd9f602ad981c83e45a1fe19030249bd408b130e4f7480a2571b671e3ffbf37c172046309167d30ab4d7d53f957aa0ebcc0ec51d948265a069346c3f062ed0b404f45b80023dc495205e43fdf90032829a262454801066008130f3c91ff64cc5c1f7b29ca6c91c867c1ff0060fbc010458c38a53ac408e58c5e6e1dcc028aecd9bb5d6396b9d5544613e05725a0d6c234605ea0c8befcbc605d6d88aedc5d7d29034efb41ad786ad800917e81ff9356a992cff3614596ea06552154596ff3591e557a0c15ca06568c004a79dd06498c8f267d40d2a677d033b8e834a6e3ec6cd7814a34b91fbfd89f626bc975d89d1bfe47eefd2331a1e97dcefb71914c379ee83d1773ca347f58ca96737474d3341fcd189e47e07d233d5f77b0a9a76c361f887ee42b3d0b413bc85dcef3d7a8663731a074613e4d5774fe56e2c6dc5c50cd93f80a6399310727f8c16ea59cdf7fff4ccf5ed231d4afff88f1ce4fe0034cd9f3ce8990dcd9db8e859733083eef7c7e40c6693b2b3021544fff8fbbcc0018832c16992c961384dde1c86cb2687e134891b5b866c41fff8e31e71c4a04c1cc1d807e2187b0fc4f101208eb23cc678621dc4c42da1c8fb1498384df61c869c72182ec748330ea565c8332e7ab95cf77ab27b2bba17eb9e3379caee2ea5dfa826cc5513acaf1a978d9415c961f8cfa822661724a7c9c96522659733892f9f941c845d93b919844730f6320794eb396deaec94d3a61439e5b4b97318fea394669c36ad388c332d63fed03fd386c11d7104633ae218fb97c98062d396336d5627c569b4494ad9398de270d38ad3a8d3fca1655025fd23c569130a4acace69130b16b7d2796e094232398de6724c4db20512e7341ae551a347458d1ec562456c5585380ccf7916a26e05ddc5ea9210a7cdcac444f677a5fef1cf1147e95f91e46cbe1346b23fce8dca087a731acde56e4d4ea34c98e09c4695b40cba43ff388d3a99bc194481e81eff21a490e87d79223b25535482ec5f5b803a03f6d39cd3a88e89d3a89427a7d19dc3d8a165d01ffac789d3a815a74cb23f65f95d61a1b7ccbe48751eb3c771eb448f9a3df2f1774d25f604bb86bf90a88643a21aeb55a1ea6f1802cff759e108335fdb8e14668ffc1ba22d8b60f6c85721025dcb1181aea96cddfbeecd8d5a48aadbe846ad50e68b43d5b3c22b86c033eb5b610e9959efa1eba60a36fc55e28e1daa57899e1323d0351ffe3e5c74ec3fba0eace1f75d6bc8b3d7ba35249565185c83725e4d5aa2c963da4b452704548df931e48c3e951b973c7353b91d11bb65b1557c36a6fdf0cd877b667e78ce7b9342c5ad89999b0d656e344c71bb91b91119734b8114b713dce08899288e88993ab284982348407124ea892334e81de9c189233a347184091347928439a202304792963862f4e5080b5246ce2861248a248c84b181912e5e8c10d1c508105c8cec9030c203cfc80d4718a9c108234d451859da6224062d465a20c2886d882252441569a206456c90a5c816216c14b952b1e45a6bad15df5b6badb5de596406578a3c09a2c81310455c00558405342852e48722427c28f282952226a8c24466064c3d2a4c4aec988c98c224440f4c5664c014450a530e51985e008509f784e9888e69080f4c28d881c9870e4b659c2c41d164e94b0e4bbc182cd5e069e9071c6c2cc920537a43a694524aef9c94524ae9ac4b4e60b0b484c9520b962cc960c312d20b9660c82dade002252a94284dd5a004c649894b12a5215aa0044583d2149cd20e489460c00225a71528cdd0a4a434831210152815c99054c52de9064792983092e4a5489216a6a4209692a82825e93c290907474a52e2449256e0439298fc2829880b4972c1832495c063401ae340909c7023a4241c06a4223c0548581c054855fc0712147f012906ee0252ce5b4042e24548469c05a4235f01e9879f00a987fb203285f720f2849b8088949780c8116e2392a50a223e9c2122e5a3824893cf0c111bbe324468f8a62072fbc81021f28d2192824f0a2227f86e30c4cc57a3c8b5d65a2bbeb7d65a6bbd7388986f6ac8129f9821487c500c89fa9e184283af37a487cf89213a7c4d0c61f2313124c91766880a3e304392be2586187d5f86b0f0491d9df994388ae24be228cc6783a32e9f97232d5d8eae7039aa82c45114de5193238e96187194a488a319b6c82aa59452d63e5ac294524a29bd73524a29a5b30621e2e885218e7a4495a981982c6084e88245cb952b415401220a54131a2cf921890f335859aa126406425ea022a4c7aecc14313d80914117295aa25c8152e5499028b8754d10b0e400490c30c38c255a1019415e2840901e426582c4ccc010a04b0c2d215c01a1ca00a2003581b14400497e66f0597a11240031bcd013430f59990fc4780006005d78b4747045ac1246f9262e967090a4c50c3b4b3a415800796105901eb132396270c0dc748169795db1a9e28a0236a9594293a435036b691504ab8c7e7c4627c067ae14b657bf502e33a645c63eb633696c06d5c0f2df323cd76a2b0065c3d65a6bbd135381e16132b1a1763e665658750c70dcc119267bfc47586e4ca994527acb4b635dfe6af64f972bb6f33cf7f2c4408c41ea329f11c8fbbf197aa6a14ba08b6da51f11f54bc3ea05d874e501d8742500b0e9aa7946952dcb265be6d31c22f74f5e544e051d38abfcdb69df8f12b3ea8f20edd6089e276fb59af9864858b98cad6e06d931b3473ede8150b1a8e7c9666eccec917f73d6e8e62cd2cdd9dbcd59dccdd99c7d9a41574aaa465da9cabb5255ea4af5aed41889f10dc4c572ff24d349f99437837014c56129b017a363de262b8aaa4638073ec574bfa351597ebbd923816e32a4378a51db1525066331899fb880381ced183c6f9ebb52525e292b73f356c7e8a2b2a4388aeaaad1f4a2f1dbe51a0ec7e6028eb17cbd86c3d5f77d342d65aa9afda70e2df2936c31bb1455610870c6ffed66d0dc659957cea2773ec99f34de3ffe2a1b0f279af54583945493124924c164032f5e8474a9357dc9254b24329705ac746c883bbabab4fcc83a641e92af33017ffa5424c1fc9f4f549b6157978e14732091e5935043090620a6a644a1030b8ec82308839c47537c61618809763002880dd2089d944c75725329ba211759cd8bbfbfe2bf8f459c85c6b4757a0e0e05e33181273b0d47ecb3bb1bf635c4c1935bb0a018b2a735044469845c3462af98cd0ce7e9b33ac8f2e4562b140272016c2da0e5a306984da8820e9c739ec60caae15ae5849d5f27480e4899cc37a212d84fcd57b7ada1336a9c58663a492df31f2710994ea84c739ec2725480f4478cc34e5756a50de0fdd91aaa7fc3f1553395936b1953bade7f55bd467154846e4ebf4b14720138d6f4be9e4a1c89be9a9e9479cd54cb68aac3945b979de4ac03939729cead6e6b08565d5f5d228fc9b393976ba658634d2ffbf76aa67e88b8e805f5c22267ff840925f89d95a3ac49840b1748583cfe55d8d986393caf90b0f8cbe2259327299b52de6e9b2b74411f60116813026d42f7de076a5d280bd464ff9cdd0c72551bb2099c4143c88c90abf79a026da00db409ed288ef7e2b974b367976345ca1c17e1a2221017e1262b06bc4f635e04641cbebe34c66127fadfafbefb4c18d0f98ad80239df125dc9cc0dba17af65e0b40cfafeaf3039ba9adeecf19a1efed50e4db6656a7a38fc031be122d6ed8545caa6005f512f2832e0f8e24165bc2b9a412e1c8a93323b061c71d10f2b0588c119f4f4816610ced3ff5a43b455820e7dd713d56ad7f06e259b40ba6315454f576bfdca4bf86a1487036df647d0f6e2cd1fc011efa8d1a448b3e7b66b85aeb721ced9b984668fff0dc011e3ee548d02c4d9b93b4f73c50ece8a1d9c3be51481fbea491ff15db1833d5fd13193a719c4e29d8994f9531603ca3c621ccbf53d0d5982b440cebb441d1b2e9a0f36e86aae27aaad2c14604e0eb4bd5aef3bd096839b3d4ebf848fe2844af05a8bfe2894f3e42a41d65ae28b57b34f8023ebf6e261d7b3703368477cf1b04bc4b544db033b8f2f9f3d69f0d75c3655ad1576cd05eb4671d16b2afbe322d03623f451839dada7e1af56f85a4bac818ef4270a53c4bbaf35f47d1726622ba0a4f1feb98f7732632b7236f25080e3d033a534dd3ff7a913a538d68d95bbcd20bc73d613eb669d009d03b159a18e8dd6bbde25eed0b1e1fa9ccf7189b60990a8d67aa29a4a676dba22945c9d4e8b13c6df0765b4bb010650bb253f86c037b77a7bc264063c2390f86e8f07e5f6c5deaa20b1449d3647436fca992d42380146e5762f0043bf9e33d1d24d615285bd4eb81ed506a5b52322cb0ab5a59b36322d282280bc706dd4084a92edf2a02cf5100308cbe1ecc509a920fbcfa050d3e8c9121938a9eaadd57eb79754f613f074432cbdecbde1b28c8870dd13325056ba1848914798108aabd9df3201f66aef26c5dab28830b340f9c297d4ec79f1567ec3f9add0f5567cf1c0bc72784ea23a0c38be78f7613758130c077392b3ce39efff929a4138efffda797f98d10cd279162bbe6662a7bc9d131f3b273e3ca0b1ed72f012db3531b3c253b6867ca438fcb3f92d562d4405c8dce26d1e56e4d95fd9bb2604ece96440ea4d3372d6c26635f10c3b8f35b27d1c8e40f9e64821dbd58bc7bab990fcaeb1c29dee99bf13fa74cf7c9d7046f7cc671176f7ac08bb7b62614bc9f3734256f7ccc709316dd994cd04d83821af461d79656323e6d891572b2729c3d9bf6f45ceec2371ddd6672b8a2f2ff65d61eb67789fc60cc7d71858110c89dae48b0706fc7cdfde7b5f2f1e28be3e8342b515760d8bf40831f6e4da1f5f575400151c782f2f72d63b229cb23fcc08c624835eb7571839eb29524dd985cc64cf1766cb2e756384c823ac283b4cc8ab97fd67159233c7bbcefe33f0ce69f6e59725c0f1c553e1dd141d829020336893b399cdfe9fc7174f059a47a1974c3ae4f18ab97193b690f45f1500fc3ee07988460968f3f7dd5a80cd22f4141872cdf6d59b14479d680ec700391bb1fbcc59b7ec4e2c40dbe7798a3b3e62cf3382a00df441ad48bc933267dde46c7cf172939c7df67fe11dc58dc94a0c41c315903f4c06bd78b2c7ffe2fbde34fcf7fe7dd60592c97c689280f66f6b68e55fa6d376a63878b2d4b93ceeea7a0b5b56d509d8df1709cf287559ea5c0f75aea853c2bca2ce7d9b27aae1dfa17345156cf88335af420e50dcb1037cd7fb13d5a6b8a3061baf1123b16191c74b24aad1e4c0eea1019c618dd913ea80668f7cb02694cd1ef934a1502adbbc7d6919e9c82851b54ee750663003852905f7cb91c932a6c7d36dd1939a4eb06c53bec0b0730114a6504e6f53addb93190ce1c1a6e672e0218725800027165052eabd15362847520db5c2678332a4099d9249caba1b6a2765fd550838fa6e278b66d0cdf7cb9c74227572c67ab9abf97e0925251639737ddb7cbfdc22254f4a2f7286f3fd524aca3052f6e4941c23a519396dd3879c85df3f8be60f39ebc048ce78e40c00df3f91e4cc83ef9f4d72e6f3fdd349ce04f0fd33276730be81be07f0fdd3899c81f0fd532767217cc7f8feb993d38a94463368c5f7cbdb0c62f1f33671b925922c9a2bc9246732774f8c30d6b217ff853b2d7bf138fc96bd9040b28efb9ebb3502ce571c391042086bd98b0721045bf6e20710b25af6e28142dcb2170f23a42d7bf10208bb652feebdf7fa849e7f426f591d41fea05dd6f945387a967de03da1e700840ea465f28fc0e4fbc1afa851ffc8ef191dc8c8c3897cdf83d07fb4cc8bda7db4db5ab64304ada365f25d8429348e96c96f1172e084be5123a4d13d7227d432f938610c9fee910f0b653cbf1383812cdcb296499934caf747910fb7991933d50b23e585e72d05b42e7f628e14f29d211423e3771bf9ca787e2706035919bfe377ec2d1168bee20f974552d63fbd73cc2aaac8d3a5d3f9503b9f372b48784f82a0744a1c949c8d1d25679efb19e034f9ed5872fb16bb04288b76ddd3dfed3b5cb7284f2a27839dd2c40a96265634463de8b64c6121636f52b92737b0d09b5a816573e33d410110b727628a620879b72965785145f5b3e930850a268eacb00e062832e0d00218cf16832e5697c30b567035dce82a1423bbcb622647e9ce1ac5000a4a9525765256a4fa3dcc749d59247ff4cb271d5bbf14228d724b5c6ea81e6de4249747e924f74fe92e2567ef61da77fd6e45ce5ab9bf795a4461b2e0318964bd26f898f473ff6a1281f2b13bae56a4547a7611bb70b9803daf862145a812d0f1e7cf55572a3696dddddddd6ddbe774fa7dbfb6b6f65ba755f38c3ab7ecd587d27be9a536c4c193690fb073e76b02b025ead8607dcb064eeb719ea8c67aa21a51ed9600e4e05705f0fbe2bdbcbca46a0f60fbe8515385bfd0ea869def156d6b0847b7e8bdf7c29e5e1185fb9d5738adf7d602c44c7136707cf15e3c17a60f43017ccfde1a02bf8648721e276c7d553deda732e36f8af3ed8b6097e98f3aa432a561fd19b64a66d994aae8c5e0d0eaaf7889f22a1cc133f8351cef531e618f63f232f8371c8932d8e2df5b22d03085c9cbff3356cdfa421bfa37f457d67ed35fd1bf593db5e258f3f76d8b849ba7dff269de8ae3ab52d17e553d15476a2180eb278a807f3e7dfbaa709c0ffb06c8c70fb0224d9216f46da81a41f5d75b10a0a28e7dfaa1ce4f1d2b8af0611acaf1be4aa44902b6782ba2201f8b28f45b1c93375e11c7e4e1803d6d8d00be15bb46d431f3cdd3887445c2ea6f68ad965afc2a6f9160452a65e225a18a93da2b449f867c4a85a4cce98f4233beb7c16f439b57a96c7e35a3e4acdfd2bc156ffef5ab9bd0cad5df84214d92fa2aa4fcfaf6fc0a6992d8a709e71629b3f621d0a2b5795815dbe63f1b5588821d01c46f13daef967d16344e73fc0051563dfefe5ac511c7e4e11bdfdb5fad26ab5b0b50551634497e86344ee0e4d59f351c572fbeac550c81671c621105fb9ffdefad5d893a66c631237fdfc1f72bf91f20caf65b43aaaf21fe198e3b4211b0d8ddc1afc29147fe44a43cc27e8a38262f7f3fe2800d7d9e6dbe10fc0ec251044f19f662388a4097611f86e38e5b86e5192dbae500a2fc5d14d67272c2aec14211b29869c128ee05d579469dbc5a612f5b4338646b888a48727ec72ddfa7e138793280d69e012d85fd0d27cd79d91a827d4e889d6021a639290b920fa8c4ca97318bd63945030100080053160000201008054522912048a250ce940f14000a76a2445e4c2c8f06226114c53010c6300883a0444000008000400c30c621c2030020601e2a9ee1a4a7b823de2400c56b11d71071f58c42fc010e1315ccab8c25ea7c34de400f54ed528812b331020dea9671e63394e7e9a91172839dc23295c5ca966e8c46a152a51a2057b3eacb163557abc592afa09390c2f5170772394d301d3a738507756c522bc0179ff1523f8c3a7598eb9886e0e124b934e7b690ba6c3dc1f8feceac465e0594db5ac53ac19d906a0d4c57c22e689ff251f928ec580e699efcd0aa1e1fcb32052202999c7c59fb756d19c231dad5027b3cd842969a852964bad8e03b548eb21bf07421127c0eb79ffdde2ef6d6dfe2f73e9dd05ecbdf4f75c6cc49a6691c8e8cfa6dc7801a18d301f1e3d8ad7d5c1d62629e9511c34d1e3e8ea99f3d2e199f6505d800b158d479a85b3d353f32b3f136436a5967dbe8b81c12e6b83df8dba03ad6999ce7fa2e25b47129b6f8226073ac9b843f62ec3d37b9db25b04bfe52c0c0ed4f68a8739c5910c5040d9126aa65b8fca92c9cc44c7481bf40a125abcec45d8d18a3e32d518113ffe7d63158cfe115be32c2ceb5a079cc2620da39dad06c603535321a0482b341c5edd9405e3f351fb1ffaf5e404172aeab110f11fc2c6f5031de247913b11156c8d622211794608cd8b7c90575281748557ef0597ec01854da26453e2621caccaeaa0d749b0b1aca0815a334e5f02290f1d89eaf0bf775276a48e933c596f128a7b518b532ae4ad7a1c9765786cabba6d03bbad4b2814114d21ff4b893b6ee9e018085c5d98ba49433304783365f0ce5bb8ab7d47770aa9f07b562a5fea3fce97c50573ea6b6ac99d3d779082676431f83674b7583821a389a16d4824adb4c01db785133b770f30e4151814db9bcffea9f573e7e43d271d285e311c54950401e7775841255af305cef351f1d92600dfdb4112ba90583eb76a01ee5e7a085913e6a0c413dbd7ec19196eda868a2d4691449f313d323ad1a55f30f61822a17f561c4097abd4640ac07aa724a9911162fcb045140c21a2308431dfc83fa102a2d1a13ce5d09961932f3ac70599eaae5d291386945897ad3320ee904a695778a5ffd21d4441824755407ea9bfa8d54ee1d8eacd707dc196f1c538e0ef464fbe5096753823d9c2f4ab09fe210753e02979bd0bad201390514e640730e5a7a998dae14186198cc76086608be2990c26654a94281c8fc222c193b359302f9218ad7f173d297cf2978fdc8014cfe24a0818a082b3ad32557a6b2add13f82b68c764a5f639e82bf4dac8af095bd9f60162387fa6230d840b64729a501e2e2511ebc00610e55b699ce627eace0f8da492e0dd3b86f473fd1e97b4a89585a5065681845ad2ba9a277f9711096a03b6682e057c1d5c620b24a33c86a5402dfb7323402ed81ed74950a84607985ca43ddaee05a46bd57d4d92478e18e2e53edf34de01d74c1259046bc12a2e8a2f625b90cdc3dbe4f8682001b2c2164eecd0f0c02749c0a757a011c2cffca00c8fcd016ba1370e64d9bd9fc60c9b219f622e5fc70bf46d794785e2fff333a7b014a9df3343b386affe83c1ef0db22f2d990eee036ccd49a90ac4ce87b9a897db42f77ee24a3718e728f36380f40548c0b7930ee0f5bdc06f927a8388187801ad81a894fcbb348532a22929c92a43eb42e523d00e2d52fe64a34f6a0cdf303656248084bfb88cd838256c4b8e7b8160b4bb347c36ad0f8385630f547de1414445421c505b48d4ea82273e7881c6edde94f6a6d4e90c883e2fa5c8230cf6ed07b039d24886ccccb4ccdbe35300fb44056a276397d50da1d5d9f0803553a63d5bc27824418da46aaa03a30afdc2b561e3c32efaf434905453121d45208c31ab2fb4087361caf7c79b8ec71de81e43b2fa581cbe6ef046f312b57047dd3f2a26c9aff05a971c991d842d2770b2f8c39f91043127b30092ab779a06a2e446f01dc210c714fd72a6f85408f1900e5e224c3f93fdc603f1ede5ff02cf9b0f314e6d3520bf8cf90f7ffd9bc7bc52bbfdea6a2a05c7e0ec425292035ac37ec11fa7747286e56859cb6bf02c81d6bd027db6d2433f9c0050a855a02e3d15ee35b83c7be37e571ffc2dc5e0c7b5b10a8bf2dc146f8fbd03a58ebb46f4804b9d6875b3af32484fa83e9d2daea382de3a6cd0cab45dcf018bacae65df06b25741b3c4933458195c0d401762921e4da690680c54de81e1bacc5c8417dd042d0dab597cf0a4b9dbb2c96fbbf80fcd59a9e158c5c083a86fdc2fe98e9a3266ee210a2e4aec2d0dccd67671198e9dfa56c942af118bffab102414a4bf1e55b9c578034cf661a079c70f4e8ca9c8047dbba20f2848987efae3b16c581bba6f3e73b5933ead3aa5f3463b08cab316277a3ea9573539aa357c7fe01c78980b7740bf23b98ce3a8dc4599864e760b33afccadcbd5b6f2acac20eb7b32dddb789f988ff4df588b68f79b177f0e806d09f648cd5028d6d76132ca5a885dde2f0a0c2efe6a634aec4b719fc1f6a3ae87e7649f1bbb98953bd7a0d552449ce22453673407fa8150591242311be9b9b4eb760c9fc2b286c00745b8c7597663e256bb3ee8177dbdc74a730c11bef856100c4226f28b5b0fceca7dc54422a416714d110a33038e5260ebd419de472d6a5b67ed9c391b23f0eda8d0e0e13c7c2853f8ad7be74e60b42cad5341048b7ce81463825221a484799850219533bc51875ddf47b4ca40d1ad12c8178032e66d4e36d40a698fcd8c3fd77b989e1904d78ece82c698671aec10050af3b7c70b9a90401f88bdf88c4a0597e5bb3350e9bd1bfe710d471a578a0cc25b9690c753d2a6b4c82f27ba56bfd27903c0c6e166d6e59733a7cb28d88985b4bc5286e81aadeb868f5077a7570862b9e5ae97127c0072e1c0cebe74a8150ab20682c8be6891675b7794ebe246e529075b204e4831ac836492f87d77061b989554e26afa26625ff930aae0749661ffe6da9beea606804dea0c0d674661ad46817105e03b9159d7a6060060b8ccab806f4877f8b3b2e64a5ebae89d66619accaf17e75d316654bf5bb19cb4df16d1112deb430fa0a1273bf84780bd64d0545650acf062fc76398f8ae3bc7aa98885b6033e6c6e662e49fa635a44c6a3ba37a29b4680f809814bc0fcdd0411a991e2e8b6d7cfdd05e7ea7f61128615544ecca3b7070796906da74a88d08e2fe0fdf6dbf4903918d355a6f1b1de434826a57faf2a106dfb90c193cf29889b4d13e91165325a0323df97be225f24f8cba86e0a9a42b2c2241fd53bcc1b2ece396b63bcd173f9d65e1a006393d69b9bff59aef6988441d95e75da2e475db7aad37a3cc7358877d8d8e1a0c5277f0f9e9dce3420e6d845312a55868bfcb1a325fd8ddb2ad9bd84b193705a998052b2c5a15d87d9a4e44a9c896be2c411d54f8084e04bf54851dd9fb75b2b00d3354577c8ba6abd7bd7e0af30db8c53aa9a6e9dd57c5f4fc350da8c85779e807f74cf6d0da5f5e59c21871c950560e2140fdf0981352e9e90e7a583ab001e8c778d6a27fb72541e0ee09b1eed23a25955ee7babb012de53d520152d9e26035ba940bd8e6d49584c776410581ba25e974d99908fc7dbad144446e6802e4da6dc7e262f850e8b1fb8f2095c8a21b94662b030da423c0a71954357a4478ae0be217666983b71943cf88786ac8140eaff5c5aad4506c4ba2578dfd963d40f59bfb2559bfb67a3acf8df8a6b8107673590112b4363232d5c9f6d9e285c84c3403fd1626504d482f389e611d288499ca2b507ddd7e4b53e8d605af32240aafdc5596ef47a032bd0b0b81a44f43e3c55e5eb239435a4add80f69b2ba62c94052b5757db5871d0ec21afb25b8af069451896ff0bacaf190639592c922e7633b89d95baf5edf43a8dd8420d1a83b52e1cd7396a4d5911ceb46e2d6c9110228fa1c8ec5fa37b4800605ae46042b0d64ba1768f4bc575d42048e88388cd3a41d25db6d0138a1525125e2c2104ac184e408c4d6684d50bd76c0d94738e3431acd84dd4ee23b03b498c2868d0f48dbbeff41a465348aaeaee8d9fec8d15c5c4978ef4e0e9e844f5340f3e6e51d3611d6c06feb3c58bd23580596c05287dc55a97542ea49f399b4b46ce7901afc72b5a75238dbb76e4e3c949d22e57d9d1b9aecada9ca3cd45a2bc5ce0839217f75c9eb6e2cce0303998c1248f74a56da482f5f0c83b7c843e40d22525eff1f91e89dd83104fa7106eab29711ee9362bfe3016423b284073fe8240a48754685fc9f236d7e629d240c7dc2809cf1f93d6568c81bdff14737abe50c2c5520c4f1ae0fcfd551251b8c83fd174ea32fa6d3000055629bf282a50332adf493dbb5b9c27ec2f6c8b511098e104605dda13916f2fdd0052367b9552496c84e8c16e3e80c5040e50795e74cce212454ed77ae72f2b3f415fc986d9453b71088f37f3c5f5b5d8a8e09715b3c17690e2ff764007aae5c448745daba094fdb026bfd886f4201c377fb1f537e0e6eff0fc05dc3e90d88d54dc46b5776b3113ae155afa6ccad3e1ae70ec94acaed9d56ae754972d98c1d991650789b1eb53c738350a1fd703eee8598edeae163998e7f0a1a0ee7264e9cc211ffa84b7d432850f650107dc0f82a79add6c3bdae9ff15a0841cd1a3f0bc662c7098c02f600b28b0eab2d49dc8a0a62aa33f5c461ad20de60d6174435ad1f68129741f2089f8fda9e16e9c83db7891d01f7939392ee0bbb84cc79255bc35cd67321db060d491c173a484a3799e45e747cc574c8b77ef43c3b36daa331bb7e66e3361ca7515b5197041b51466a9fcca91da1772e9b0ef666ea4ca5db290c16aaf7f89224f1355f152be8dc74bd3b39e357280537e95d46c7898b03a5ac58a68ce250b8a11978e0e2af23b964840cb451ce465a2c5937532dc0849dc7fd3045bf5bebda72ae6adfd49192c3f4ffc226a8c07fc304f0d9f82723280cafb478dfef2e2c44398be84c7251dc93aafa5081fd8ab2737deca65192005fb82beb9135ea747124979644638f0fd9a5a5671331ffda8d6d5c91fa33d1e1b68d9c3d57a600fa69f892005adfeded699b598accf5c752d37129422a39557cb8e0fe9a0076927ae408893c3c1e9a86382ba0049f08af8342f1921488a1e23fcf45743acd705ca3d86ddc1057ba8309d2beeb9deb4dd92b6e52845a92fdde348f03ef8aec5dc402127c6046c339e464af788723eea6c9efbb033a95ceeff8a2ce52f52e762bd5858af35abeb2e81821c9d1fe12739d27f4b3d5b49bd095e8fb0d78ef1db44b32ac3fad7b1c1e7a21dc091ca5e459c406db7422ed5e0bfda96eaff7bf09a262ed55828d1380f6c0519933ba796a1d4aad02a2e347a8fa2e920238d10cb1a2990b4816b14d29c2386d58ac2680caeabe030380094fe12aee8f191f16197989b68141c08c5cc7c370fe531208bc94c2be6a00b2603f70935aa1600bad21b0c3fbd48c9b4c3305a0187a5afdeeb7d20ee721a89d7f484cf9c414f4543e36874d3930470ddc5e127e7623017a35970b0750e28f0292396c278e1d903b822382e6e0e002ea17941436b8d567f0b21dd2fc6954e15648f9eb15d2aab68e074aa6dc63056356c005fee4b0183bddb77b5e301ac513195238bde019f7bb8a3ff5125aa0440c13a4c9001b11a8d3b2498486430b186e89d776e35022c7480d954277670e105c7174e08803a8ea58ef0d4c92bfade65b777e31b639ce0c84ee0e9199b9fa9729929e9705195320da24a2ad920bec03425acdb43ff6c3e3f45c4a5158706b9769e2539289b5e2cd4e48d6a24ba53762ac5f81ee8a9144f36a0f02904312bc15276d87615a262adaa04b37a13cff2d596213e10766c94aa831a7dd4efe596d5e4798b252661894c14900affb55d1daa845b4c137e8a483f1f998fa895390cd6cca76ca2c74e813b2f2174ef3fab5a4e47d223119696e8e412ce39fb79a6228e855a6f1bbcc1421105856cc8daddbb67978bc314f1c242c5b918afc452f7a6c255171ab70717e1ea0a85bd8ff6b628d370fc8c30b8374211edab7cb66c50ed826af644cb63180ef6e25d466c3163092198d4ae6cda31ecca72b12bacf94824211e0aef0be2895696766242acb361c5954024f125617357a4be428f06cff169c52d997fd77dea139d335d674b840863675ef8a054c43a180ca450ffc0d9c70fce3c5274add7192a46543466762c435bfee34dbfa7165d5f1b5988ebb39fd0d50d5681ed52f3efbcc696d3190f52695cda900528a2b8984db09c348fe15a47ac4c246c059dfd60acbb451df947056de20cc849a61520f5e44121c26bf5c2cfbecdb584085b35c3d02741058c295ac5e5ca789345091408cf2cb932bf54bc70572f6dfcd25399ec9775c3c6056845a1564443927d0c3adf87d39b9e2cab291e916df7672d22253a4ae34f4af6225988da017809c98f0ded72c731996002c429bd747f4009567c31a6738814e0f7ac54ccc7b1053d97446e62e9fe6d70da4b28715448322f0198b70901d7a4501150eb6fde39c50117541c0ed44418069cb374a57f897c574ab2ccf8e25fd76f27ab03f336cef42409c9d09037062b5001a2ab90bc9c11004bb40f8892e2ab433099c5fd98bedaec6ba60ab2a46afa66e6521b64f3d60d9abe19ec6f4f23009b3da310e110c0d4ff3547338040c445ada1963182ca1c40d260bc9d267f0eef04c60ba462174f0cd76410f8deee79a6ec05565bcf6ee4f26db01944d6b4d8c7acd8bf8043a3f8b3a988b2d6ff4c58fb6049aa5dea872fa2194b50651707332d7a8becacdc34d658f2433117b3575ef0a5daf4ea672532595dad0f24bde8625b7cc541c1d24c7e405bf41f923d33cff94a079b744b4d3f7432a922e38d148d6ad2acba6dd83e13393c974b10051577335a208280fa91bb25b17c319bacbceac87f683244adf25745e3c019079dffee58c8757ab8b3c2baee55632357be3f35ce27c3217207d21cc87a3055e8b020a918c5fa022e273415cf1619085547a36505de091f75492417653afff8298881eb41d78952907e359a91429053dff9ec26e5e5e379d2b04c849c159594711f13a6d0aa3422c4f13dfa74ced44cfc5a29561d8820546188d62968947c16807f426f3b65030e077264ab8270017742edf30ecc2981864e933b12466ef1a5a5f0e81f3eabff4227b62a4dac76549b1e58859ee124ac4737721501af323c6c2beb7f47778c0e1ce18d5a205a8eae214c8f803c95a4c26e49c725cbbd334f6b289498f64f7207a7722e44ffef3d996286420666fded94b2be52e5fb66c28989689a519672fdef99c64b4a62d43d995f0f4b0b2454a381acaf0bd84be006c5c0c735d8ed115c19d8f52f37056656655b1cedd34569e43c83ea4eb916ccc402cf52e82fcf9402f6aebd900dec9d6fd50d0eabb9b008237d5c294838d69005bafac8b04285222d1cc99033accbcd4d2bd20604e4168682a7083be0b7395e58db8a4ac925e5ab2bd4031b01ae508e078bde5760db4ae40965fccc6cdedae0b0aef19d669e062bf324dc1cd765710026ae02a4e80a762255a2600d0594d43d028a5d41c42ebd51eeb3ccecd828a9a1cd5dee69da11e4505fb9767b5cdebf405bdad229f1f64dc5941ba8339eaa5393c3f8d3605d9266554bc29db51aceeea825f7eaae273c728d8c2481b051f80f2b1ea9216ccab3164e58540473978ae83b7af95e90da76b1ab4cd3b5fe8da89fb96bdf37485ee181735411d424720398aa6a1db14a984868585e150b440cfd7f9f7c69c2fdaf70b527b8d9eab9b76aae9221b75e3c77f494ebb9ce6d91cecdd670dd2bb9a546b8b518aef113eeb305b73d9d2b53cdbd51e5968f73d562b963cfb90feb5ced146e5625f7b686ab34c2ad8be18e3f703daf735b92b91955aefb7a6ec928b71ecf35f29cfbb4c26d277265d6706f6ab8e510b28e1bd0b2d77498c833abbc915fd2f52ec8dccbc6d920d4abd1208fe45ce0b250b9b3e95cbbf55cb238771d8a2bf639d7a1c6dd42e662ade7da68b8cb225cfa11aeb873ee87329765928b4dcf7da3e5928f7369e0b9c74eb8ce8b5c5614ee0c0dd7be864b2ee0ae87e78a3ee692c375f30ac2a3815afe9a0d13dc8fe82e6d4d1569bd2b24f7b1e33728f2566cca3bb9d7b86cc8dc190aae6d2d975ccc5d07cf157fce752a71b7a17331ebb8366aee32712e6d0c57ec84fb59c1659fcec55073df50b9e4c7b93458eeb173aec3752e1b853b4bc9b55dc3258970d761b8e21fb8ceb8723fe5c075bc03d70917ee678e5ca7bb721d70e17ec489ebb41bd72177eee75cb88e76e33a73e47ecc99eb7807ae134edc8f38b84e77e63ae6c2fd9c0bd7c96eae43aedc4f39709decc475c4c5fd8c23d7f92a978dce9da0c17157a468dc55a420f775cbc11d38b4e61e6702dcb73b2f77248e9fd38ebbf16e9709fe0e24d2d38b138323af37a3e6a250f20ad4c10d1db8e7ceb386b9e74d0737eee896bbcf1be3def7badcb8833bee7c66807bdeeae0868edcb9fb9971eef9a69f1b3a70c79de786b8e79b4e6edcd1057775ca955ce65e19e7d6e3b9c68fb84fd6b9ad34ae67bed3eaca900c285a7d32bb80f40766e40460d041a37062643f43c9e30eac55394fabc488ac2e075cbd0374f89fc44d96ae45948b6baf00335e7ddbaf7e0a91e88ed90af046e27ac6c681c0755d964b34862b76763fa85d96691783eabed1bba4c32e0dd23d76769d2f5d56a43b83eedad7bb2461770dd2157fca752a72b7a25dac75d746e92e8bbbf4b1ae181d66ff0e68e680accec6aa7da679c0d733a5eebeb2cf6b47feefae8777e946bbf591aebab85b4fd4ad17cf551fc3ad17e9d645baea63dd3a51b76edc553fead61377eb225df5f16ebd58b73eeaaa1377eb8bbbf5e2aeba086e7d71dcfab8ab7ed4ad2beed689baea63dd3ab16e7db4ab2eead61375eb475df5e26e9d58b72ede5517ebd68be6d6c771d58bba7522ddba78575da45b2fd6ad8bbaeac6ddfaa26ebdb8ab2ed2ad17efd6c7baea23b37a750ebaeaba779672edbf73b3b9bb59efae2c5737dbad9b75ebcace55d63f2bcd6eda02b03f9e70a7acff780a1700cae76acb8abb9b9883b86331f6f76556d9ed93fc3bba6446f7322a27250e7c4d555cde4dacfb96dcb63454249da7b8550e5a9e07e1968763bcd423eb70fded1ac9f51432e5799b988b936d48e7fee8cc022ab1d45dc0825c4a6931c7312ffb5327a2d1f779d8266d7b76898486274b65c671eee78f39d3e875fe741b97818a3f033c7b780c6b834027e702cac8775e14c7008e20c7243e4388b2434f0489762df0f239beb30d23241e41a731e16267a0122c8a55d327e912595f0dbe95d22b92eca805f2ac82086590fa604ed2343459ffa3a406a552a2c3bd6d7566401112ad583716b31d0bb980cc86c517f288eed25555ec23907f9bc5a126bf14fa1184a75191e52ebb065ad6c3bc683d45c73649dda35b34668eabeaaeef6122dd6ded87b95404e01f931d389a7501b607b8ddfaa0311dc9819aa210ea0361e95b7fd701c1e02d5f802854c72d004377f424e12b55bb2a376a737dec44a98329af9e9f37ffe48cd1223610fc85e6b06898c25018d1deb4db9889ecd2858d4efc1f853070482af85bd9302d4d14f67c766881ac1cf713de6f713c717b7db0da045ed98f8721124e73e72b5dc395683810e578e946c81f83f0f31aa28007c2c40e35b41c9b828719d6ebcfd42d0a266bfbb5123f799b6875e13c9c5808032874a00302b802e0a30dc3fe95c7229514f5fa60fcbb2760c1a44fbb803092635728db199815b5d6c5402a7c6393077134b628501e24462ddfe0402dd3882917568a5cfe64bbbb92556ebec3874d6ad2d8cfe2d3c3a4cfe06b900837d40ab480d6571dee47ede586ec9822c81a222cdb994541b38b1fcac51d67465ecb2e7d340c31ab9d67146b127d010161b8cafcf1fa59d75804d3b2d7afcf85d6f5f351ef277d61e8ba2dbfa8247af355cb1a8e0f81894438140755ab222c3d7a1bb8215a3e897c41d8add9c99249a1d8196725d944ee2282afc698d892f7e8f7423e61029a533e467295673a8c7c11db0d79eeb4070f04004fa32d590cb8d77dccd9c8b0cd233ab6f0ec08ef4213785533da3191cea2df1239a270fe6a8e5ada0f51a61f836492936facb589d7d0f75946f2d976ab8ae1018d8091f3ba9a0453ee74e7e0c5399be1709c401e26a13eb68f5ca6032e5a534978c3926a4455d2384626dc7f4465222d29a39e8a88b6fe74c7870dfed349e766bdcfe5f1b2b66549572d51db39557594694a26f5f40271a5391e049d816a3d8284aaf6e650c1a13aca4e1c4777c98cc28c958b300b10004adf2357faf1c895ea1ef260a7b4cc2cf8739e909a15fffed9ccc93a6bd6fcf9e7c273d60b71093d94a53611a5d5d705cacaf988ce3f3cfade31fa7478b8c7a9d0ba8462678666a8c03dbca3e48bcad860b6358ee1c6a7662fbfdef192bc1337916b858c26c0337a22353d4f9233ae40b32b61bf84e58c513097ceeb619bc36feb059adca577fa7dd9de1ed0f9b40e318eda88697667c423a2273f479d0bcc50d731323d6c1c5151209207df97c42940572eb946caded622385fe4c7846891ce109fd95a1fec2b4de8ac9669a0c0db7d0c6c6e70821a2919f59b0bfe7ff5ebc8a3c541140014eeb2ee547279252a1744d92e3209d88c82d1c8048c7344d4eada0f81c07bd3381ea08fb9c9f4133b2411562f040e898cf642a099f02a0d2f2f299eab67dc88af2a2d9977ac43038c09f20c1989ed5f0890519487ce0a7c1a886f7999b3cbeb130861bed858866e2c5f31ece0595323164f02e0676516005c501d0f263d8376d2d51fe25420da5450d1aada8d7046da027ad0e5fa06d5b112bd88e6896351a92b86fadba3c84142b5d5aa3bf294900403919f0884ec9618671deba8ed7f9b23c30d7006039463f34b6cc1a01d9e3ea812bd8585540888324110f2b4d00ca2215de44dbadf6d1e8e2d8066759b572301fcc0b28b9309404829b2de02478bf597726c9c546b4110c23e73c7fbca9f420c613f81a187025a7e44804cec10c90c0c674301e4aeda6f5278e049e2e491a0d630f86bd99e3d46f35d59769d88696b0b4a968e43c86dc2c74cf022b839111ca503235dde88ceeb80446a2ed691f14ae40361854eaec05ac05df03ac15aba62270c699b6c6166428c24c6b93c9ec1be6f5eb058377e9ed6f9a8cac6834575ddb347d29f86da4f7d8db63e2a00a0a4e4a030db65a4e6c8e10f46f8096b4e4d00595c7892c8e2f33420bafac46949eea2bee789248be7960c438196724474d0bbc10189e164014766c1ebdb94e314055d29b8add437dacec1313c543acd76563db81fa176c9073efb338eea9dce5b572d41666c235995d815e5185ba41d8a0c48403b449c202a3b60b241d8fff46937fe4b983cc2d8e8dff5b816d577a44e9bfd6168028d1041e1a4c5b952dd3cf35fe3295fbebe634542d9c7ef00fd81cf4c88cafdfc9060052e69330bebf42a049aba8be8baa31bdf7c7ecc8b503c31c787e1581c8d598da6c89c705ffc1c222ed6aa8d57dcb7a290effadf900ff31de2c0fbb676895afa90f70258d0a71ec73059ffb5600249f98780373248ec27fa641cb14354041087718e7078576b11caa67036db36e53f846127a93187621ba24d4d61df20c202b14ff7c466f7500e11e4beb126411ad184e3835b930fc3926341ab95e80ed81df1610aa3e7057d467fb0d52806e3fee0ef9425bb0943794e6cd03bdc6a5056e8145af734d3927bb82e095c01fe1a0c04f6716c95caf647c75e84d9d2430885900184c396e48fcd9e48fdc8e00caa1248ca2b74d6bc29308a17e186b0c5bfc7d4b66aea236d217cbeea07557a4c954af8740f958a917c7ff860500040e64b8c0b62e35ff88bdbce45eb4839f89d4da331d015de665882f0ac6f6ee08d19776e99292191dc81cc629522939f6f2b9287d50076bb5d9a0e98e7ae9b135a0b9c6ac563537917716ac193b93a59241736aa79d33311447a87d360615b828681acaedcda313b45190c70151336b72eb1cfc265fe1d2594292ac40a597fefa52375de516e192c62e2684c4b34b7b5dbe610083db3d0edb6f553274a54c6a961036bb544c0542963f91caf1270f90d952692293e50a74dba8a83b461ee71565ed9c88115c7ccac2bac77a3b0e2c433ff7782c368b7bd986fb227e486322527243f286a4f07fe59712178c11584bec2258a312de4b2664afa1f24acdc5802b9a818c0b52fd273b7ee23e48d7de339c26a333d63703b29c3259d39b903a1bc44613218fe0529a48d14df250de03bf5ca2d11c6004e73ce0bdd0f4c912a87b99261c0605223112dc0b25fdb8364bd2ed34a2d811171ab75049cb83735106b15f46d2a8721884fd3f325828e424fd4af106d0a06ea6b2fe6401f9d02cf4fd49c95454b5a3db6cfb124270c6204084a50a61ec573af88c59e729ecf22664d030463157826dd8c28cabf32faeda8dca59d91a51dfb2e079ba0052835af5455c44be79b089c8547b55477566e4f5b060bd08ada47e5115bfda219880255e71040af662613ad542c26089b555e506b5233b3c7715421a48f8be85131b16edae47f65332310eb610705d085656d474fb04d8c30adc650332f72831e1d7efead11db5af7da7f17a81ad842f8235b6d0d8e229238942a4d59e6353e48cbfb7b2bda8441e4a3dbed701462e5a23006d25e29f03f902f5637c39465a676151b3639d11543ad6fd4f4e777404771404691acfef1e7a86420f25151afb8f136aec79f603e61154d903557a73ea403db29cbf00ccad6910e7dce5d2940012604fd02c06fd8ca3818f3ff60de0b3931d0f63ffd6f64ec873bb9a2d397836092ec94659414530c16e45e59c639b81ee6d1bfd28719b71302eacab1612c01e0befb5dd82276251e757c78ba5335ba9a5c312fa59446f46102d29deb337bd8871b7d227153706ee8078d2aed29be6c3af59b2abaa5e69490366769caa94bd8949e0cad9e7e8e8372f8dc84d4ee8d0501e8d6d7f786f9c4f4d887e6ee126617b44c3da5221cdf06bd198662153c165623142c21da84b33be1ed56c8e5453fc1d4405443348ded5560ab81629b5a91d9f7942fa1394cab3c5aeb6daf7bf0629831643e089b2ae303028e00e6f99874ab9c0b15296c770e354ed06062a9edc6548924aef9f4e372353aa6cb452abb627ed7c0b9b38a5fc5249ab0d65279ca9093548b43e90e3582b0fa438affce7d0f9425e55f04e7459e357ce13b0c5a86231d575df13051474c77f2321ec968e0f13295fc3b1466680acc161428199faa9b686238a89b173695baa0c4903bdb95a0d4e75f8aa91ba9988ea28b35ffeb828cf62d0e540e838936799828be6d82c1ddaa667679324d2d023825d85c7a5970ab9d8f554588f07ed252216a50650923294f19e34073304185e80dd47e6b20a46f422cd5fe5db19f49267c80d61ae5d6408e19606dc0d2c074741359ef1c8a58aed5830213eb68f4cc74249e3176104347aa6a26e24f88df50c2fd6e3a9bed2e6d951e4595482117152e8d8d5baac5763e29fefe3854059158354944eb4cf69849dd9361fbd6ffb44961a9dba68b9b43d2ff5d83548e78f108fbc9490bf321c0f82428180ddd87a5677f52e7352f5106c63252c6752669b831fcc6aca9e09f206cf581d2ddfe919e3edf3f821f5ad8d2a95e5e61901e2426dfd0be66aea15cc66e664c40c2d5d2f1140d4e536977bf9b14da255be28f1fdfa271fd8c8a120d3f584b811b5e31dd288f143e99390df0e93586a6b8506f963cf80c65e6505cfc9f641c73978497965ade8cd4ae090adab87873d60820a2370ebee60258673a42e983973617206111c2fd160a5dd3c181efc6b1924cf0b80f6ec18ca7260ebdac5c1cc13814a7982bc7dcea17ff94f6361250ec1b34127d4a27288d402805864e1a81cb6a1f97d108d4f20ccb53a3b2401dbc68a4dd213a70b9cade1e7584e55cfebd014839af1ec8fd78016e2c369799b9e1ae5276e8d9a28fa6d4b85d48e496613202416d681111d6851f847089616584711b16ff0aee35ea05581c2211bc7e6a084057d31d85ed911abeeffe8b97496a3c339405a60ae0fac7c9e7377228c3de62a43874182330ac31829b2c95bd97807de1f9be9546f81cc30e39b670b9e081fe176e18c3b027b802f30acfe20386ca6b0027e3964340bdb521b5b2b39f65af6ca236293e60e95921815d572af25a7c5526e48cf1b2770bd6be714bd50446c16f421e5b02abe41b953baaa13156828ed74a035c99159abe6680f2d080c1b310dc55d97106267cec57f8c81c4e0309a221bef785af42836197827682710585b2c85e28be38ce8509fb597b4997049aa7a0064909fa1bb8f4b7c1024c40ad344badb1bfa6c2e42e840a618a442a0180dcbaaab63e49f001301590c921bb7df448200c90af1972e6d5cf8229340cc2d3ea22746ecc80684fa8116a6e0238b287467b23bcd0cf498a9e33aea60a90b381703cc12f0b9658a5c8dac84cb9c3063baf6dc61f56beebbf5879aedc629d75cc5e8f5d659e64919eab78607debf878293f59e7d70021a761d979b5080299a06e48340b562afebe27452ad6851082f3d8c3c1697581df982c2aa20ea71569701dfc6fdc07599c192be8e0503939081d75ac0e64159a9a3b203f676c4b43fa9ee685a434acccfd20d4d355745d98a50c17d86a683b5bcdcafdf40afcd2e8d408a67cb3906a28b395031b6d79509400f549fde54b52077066a0ce86198e8a906c11dfd624a994ec6d0f39853a1aceaad569b265a73a109a8659a53ad4bf82d5b173604e3d9c1595ad18f7f3873abec579c3a6ee0350ca616ae436ffc20d0273a5e38a1ca9352fd10a87ade88f4e7d54e47068c37ebd8da0b30c94e85146c394ed2dca0348e5563119cbf4782135079092b51c046d58a5a0aee3e2522c88a2a958d282c9abd84d2db814d3005098e35286679a0c104b4896367df22a4b131ad26fb93042838fa5323ca8e31bb86ade7f2e2289a9e679dc17714f4f91979d5f90826ffb1861d7990d1e1cc9e4de0b808f27ee1bc34c29c0a0f49d9d16297789977e735c4b94db513174f5945e65147f771f9b6d7135333e91dd8df866c0771b2cc3a75c2948b2f6389d7e7442f2a95574642910bb0f42cf435148be4c0440d2464a0f8130e880b4b1e1c2b93cd09b1daaab771c957d70a587f2b33d151cae2109e078d59e0a1025c355d1c1007ae70e1a25a19ad15356d31682de88015276515f3c934be7422653d653ec9c0e73e5068f3db1c87a1b30c05301601b8cc053fd90e9b4f7000e228259675d4857180b5244e59cd16e162c10b404b09da65a33f88fcd00b00763b1133e28dfe4ba6ef6697a18223cd3614f5d414889f26972d8751fa4d195b242f862a71288b312602bae01b14e1188ccee32009e0967fc1747e31fb590b015e0a940d3718785669a97469c367b0b2cc5c16993d792fd6956b61788f603d43b0245e862f0f6b790e0435eab92bfb0edb0fc9d4fe62f8c614e94f6245223d85dde49d2067ff7e3a48daa893c2fe4b29564a81069515a6cdcc1440fe2741504e11d73f331d68a6f601d4676cb040c5e057efd84ba0f5110706544e90886b960a35838168eed2559560489701c925f291fc6f938144e8161c662150b5c4b546da5ecad90bcc2a7a66dbf956d68ad43e9461674e851f9de5415fd6fff13f1d98c94df6e42c8de72ef7d0f900f051035a18b6ec212b72489647ae907ef0c78d26964b94433dd1edc2fbd06bc2b9e92dd69c983a791911ea474d2e549a483370aee93ee6a4607f74b2b28b8e3a78494ad6e262cca481d0940ee3a22e6601065b4f7edb7a37997b399b0c6dce56e5666d89445bf1accab1b7c4d3bfd6a1315fdeaaeeb3a39b2261cd36874eedec89a6aa61d5316a61dd34ec738536dc471262040d30e0ecea26319c4a62dde83bb5610a4753fa4a01f529087d3b12ce9f570b200e6128d7e40a2cceb74484111d65d0f29a8eb2105cd9f5a41b044c35deff4c93148d676b25839190198e7cebcab9b7e897c445d701cb7baf1e917d71cc7753a13d6e75638ab9b9593d5cdeaa6637476a54df4c3825ca2ad703a96ebcfca4989b6a202f74bb4faf3d331f97e579b30dd4f844d98aea7eba94e2842d733b39835ce1a21f500ec9ac807e7b923f28932fa2d0230af4436374e348124043f3c52701c87038a17614c39ee492fff3a8c577cc4d44afc383fa3cbd0a9006c70b682dc99fcc25126c12e05609e2167f0744f123c81093cf884e31398a033eda4f50b07a6a62b57a55fb2154434d30ad20f3d746742efd3c844774682c0860c3632295a4244db696411462e8dbc00a34ae67971442de5b07ca56236e900f64377b97dffac8105739a56f2d6d629b507ca54e10f07c5750b2bc0aabac9e22853591e3c35d5ad37ac374c01e9d65a5de22cb10b2b04238b75b108c3ccdb4d0faa851ef1f3cafc66ce61eee4d8d38170e522a7f44bfef61e6d554b4b476bd93a5aec6997d369f5ffabd6edbd1904cecf3380f32d1ef4f595de567dc474bed26392aa5a995959379df660ddd54dffabfd67fc70dc5aebf2d6e9fdf89daeec71b192a705fe3bf8b62dd0f3aacd33b87af42bffbdf8b1a875695acfb2a68dc5bae0888efac53a0bbb9cdaafaebab55f2c972b33bf72d6fbf3b1ba2f77f9cb690f89576eb24cf0edcbabbd92c62b2b2c971f0e1837d509cba2e653f35fb9c9f4d6fce753f3f39f95fb90487dd6d3bbd79b5ddbad383358c6747ad32b0ffbe9f29b7caccebae9d5e5f2589df5d565dd68bab599f5971b714ac274eb596eb22a559ec1a6cbcfc7bc2dd6e757afa7b6c5bacb29ebf260dddece607ad635b15e32519be95597d40390deb33c7e3e4e375d99d35757a6759355d2d8f46933bd4a1a9f2e6dfde5f4ebb172d3e7c7a3754d37c779b3eba7ff4cfdf3d364aab3ae26eba6d7cfd369aa67ad6ea6b3ce9b39716efaa4371567eaa8b7e2542793759494687ab5a8f9e140dd73b9e7624ff6f52ef677b9fc7ca8debaab5b9bdaacbde0888efa65734c6cba8b3ddde5bfb55fd63e7e3e5417f597ffc67eb9dc883a0b75330d9e279b5b2f7d65ef5336cf60d6634c2311aa8f5f75b9b5372b697bd3515fadec51a695b358aff6a7bbd85cf112bc5aa9543753ecf2ffbab83c66ba58d42d0f3fadbeba50486cba355d997ad6ca59f52c1a5c75486c33abde54ed4dd6e52b9b67f0ead6f270b9c9a32393655d556d5cd9dcfae82a9ba5c0acc78f87e9e697b7ae92c6acc77ebd641acc7a4c9bacc4281b71cc64d99553fb7d6625f8e53cd8bc04bffcda3cc22f2fd93c835f3e1830ae929ebf5048bcb272654f937ec9b6e959bf660daea65f58186186238e03689a8f3d92a75fb2070420fd14d9d32f39697000fbdc43ef0b09bd3b749988ee6bc288003ebf262d577af35ff87404b7def4ab49a667b93cb358679df5d9d1fac5baf92a168be5f2d53d97d55d56b706383b9b7ec97ad331fb97cb0f91ef5a1e551c6d07463269f4f28592f47433c8cdeeac5fb2c6bc5c4dc7d984e94b934dc3eaa58db53609ad02e69e51f96ed26bc0f2ed24da88b4e5561aa77c00b0d549c3e4415b6f7200bedecc21b3a3c51e2f663877345c8a403b5438118176707ca809e019d470c37a9c2b97d0f4ca7afc70c4f4d40298b919379b301b4dd2b200e67a63aa74d61944988e1661f2311a841694000b2c536082083369b16301960fad00ac308830dc65b501963bc040c0dc7f730d5d75edbd71c2441c14d557f5e6aaa0c200cbd9d96092207736587e76b4d05228dcaca37426790213aae0f80431cc56383e81093eb8de441b9c07a20c79d904a69f338f703db548547852d6b66d342b81b81957c345e1a4704d38271c8dc3e1a070567036126803da6813a63ae9969677730a38594827ce03d266d2fa358b32e42bad4e6cb09cd23001c0893513ccb0e482acc0f23a3c4e70ae3b5892804c00044c2717d4b1587f815b0d388f308e9e451bdd78366998daa4617284bf6bba0704584b77b8c31dea45a2c2d502aa16af14d3a9cf9be56c6646f4d0b9104859bd890690920be06643e38258979fb4060d6093a6351b40b05aeb52a1d45b6b7b56bb8a33617f06f16a757b7bd62eb66baacbed9ad2cdf53783aa9b55f4a20f07a5d1575abf6674f59876b19587e672e9729b566fcfbaa65fb26754661b6db3196501ec0301d2879a00beea4f256dc2240e5a5f37d39d40c509ecd994acb3ce7a0fe87aee197d79bd8936e863f5abcbd72a8368c35ebeda20de50d9f8b3770fcf1e7208cb7089f1cbd178a63ceef1538249074217418d987b01a22e4beb9eee844d18fd7078b7f64b85e777977db17994446eb43a25d72aea1bb07c67bf5f9ba94d46a2c2f3bbf4c6f4cc719d7c147900a436d4a6a98de8d5541ba6de4c9844a2c2f555e2d119c088e7ada6cbcc0f814522d14d364b6c6229e9b0e582b82aa13b80adb7e64f079f6bcbe5a74db4f14b57b4f1629f3d15c41bd6e5990506f186cbe85ecb7ea7d6dec5e5ad24a6532715a70f205f4d4a2aae3dc0f24922ee4f47e3bf65ef7a71a15ccbb6b4de9d22d1ba4f42a1191a9908426f59d7342dda505da6a20dd4ead92341bcb1ba643db3b40ae20dd64b1b2d73332ce557f3abb3e8596d5ba67a4c53c1a4b36cdd41ec417e65ab0d620ff22a5b716ca5c2562851863cb5d3c62863058f9e30b3920e7f48ccfb247c7dfc84f4c3cb847bdf19d14510ba394f0c814d974216d331cd62330bcef5c6c3b9de6009da19a9dee410e7491b02cfcf481977cf9b9ff64907424023eb53fb247437d07746ca6644c024f4216434b2cef124f4799f7480097726b2f8fd68bb81be332de3decd249e7750d2e179bb59a80e5c105785d5e1dcd1b0e42e93ed76a02f0229ebdb9a8fb2ee7000e6d8b3e3c784c9783361b8a00893974011268fcf00069cb9a089b3042af1845a7a10c8f1228c5cb2c1bdbda900e7b75d35614d87c805772f0a7793509cbd28360e60e80b491a672f8abc2171abb260bd28ede9e8d83017044e2f4a9745b34212a815242465a1db12d1c8a8c8d6a65e80ef78265084f56bb8d7e0039c3b1ea0ed9e159404a0a7e3453103a8e2e200be6423b330bbbb95cc1cf34fc83bcc2a746ea60d8e07f299339f1ea09fa06e89b5f8136b5c57b91a0af578a34dcad117a58c2452a90482a615a09f2029bbe7a474e3644f4abb5048d4d5504824f2bcd1f7c912f8914a251034adb0d096138aaa42341522d5183c983ed3678b21e7b394f231f3724a4eb66cd9b2a594f16500336d1c79723caf44f20018efa4624a993ab336b39850261513a77f26a5dbc6715da5b5ce96958e368eebba5a43dca8ab35141289bc9048e479a3d1e78d46df472295a2fd6ab03c69462a81b309e8455bb145ad678a4e5bd151aaf414368dd34e7a5625280b2e7a7ebaa865b1239b482a248e8c22ab9036b289a449db3f3da9c41e1d12f3c8ee3929dd64cf49e9c6d18de3baaed690888a44b3a5a8aba19048e4792391371a7d1f8954fa48a512089a565658c2f07442a56c6ec1d2661a589e65068b178e74482c5b4e95d427d186a1ddd272c6b991faca308237050cf104630cac11668643c0d868883611c7c510ad91bef6ab435d285e7433c5b77694de1aaf7eb5119e26bcd8eeb5d95144bf9a5e197776ec903166da1dd18767a7ff63a731c891c18b30320b0e9ef7e208e31f9d69045067eb76fa6504907652e6ec76a49452fa35bb2cf0943af30bf0ad1c1df14c03485fc299b784d3aff9d24dbf66e906a76311aca204d42f6f67c2946ebc281386c526c2e64b37f371b2d8b0d8e0f96e7e9ac18b72c5f5a24419530b3097bc2878bee4a46162e359baa13281a28cf9336151a28cf9c382c3c9c0e606074a149d9d1e9f1fa0a0190de76746b3b989a2b353e3e9f199d16c6e70a000fdf8f4f0d46acc785d05d68e36e6a94dcf4ea53d383b95e2fcec54fa1365a7d2283168a7d218b453e94eb552266daeb31665ecf4fcbce0a13327405066948613c50a29b4894d500d884a152020202ab486d2e88cce78ea84f142052ea8411a707c4bb411e78c34ab6e40b3a075ce19adc5edd29ddaa30f7ae94dbf3a8b7eb5cdf6eecd3d775dd73d7e56eb5a4170fa445853ba43b3a03b348b8ec5532e521c9b283bf1b10b20bd14caa538fd8a31531c4a45bffa51c695999e42b9140a0e8522590066ba9345c7e816b8a90740da8da74f0f4fe705af634b74da84de507182b2a13854c0c435d8c42bb46882fb7416ea7e3a96a9cef4a2a7cf8bc6fa193482b8420b2e701f0c75d3677631a9f404a291d3c26b89214c0c1a707c9d9206d81f0ef9188ee3babb65774b7941a01acc2ebcc604154c2e80de109a7ea169ddeaf6fa5a2fad15a4afb7eb1f4186745dd7e817fd0c4a8b881d47bf00ca5831c77588867e9cc1ae06f7edf42c520f66f4abc66c06a67748bfe865b6d3f8910570b3352c121898ab616734c77d068d1ab4eb90c0c0dc7ffc93d217a63370ed4000d2378e302827bd3078db238c3c79a2d4642dca154ee8c215bef8766a41d0a216e5046d0869e1094290830a07088b1d2a80b05842930fbc4459c21374c25082d28ecd0cc430b2a1839316166d4a27940de70958dc98b030c288078b2b349d5d937772a1ebb818035002f5eb15fba663d149943fd18b46d28265133a92b62d921813c99c375276ef462c2bbd199736349e2bfe41862a1f0c707933921649eb57b4f1a480f459d29a489b7ecdf20c0c3ac3668967dc87771f0e2431b001de7d380cf02031a20f6f8b2406a641e3870fc70ff7a4853169666c7eb8d7b66dac154089bb091060d3ba494d4402cf4e46c90fffe1d600fb07281acb2b6beee8e33e1c3edc3380954efa157fb8011ed3346060d912620965c2e2f3084b168dfb708f46bc0f56dec800a441e331cdb2dda461f112ca84913f1316afba19cc15771c0f5e930031261ffbf1e5838ccd37150d8ba737ab6cbb40bee2dbf60ce22b05f1153f001e1effe241469e3ec6e86100cf8d0b1080e7c63262bc8701bc0001b88c7bb1375923671dbb72d6aff82c0d60b3c406786763a6017eb801ee0562dc74cc071c1a3ef820658c1f62607a7fb821d8aff89839c346cc834d42036073b300c70fc0e68e018e8f6173db00c7cbb0493a5c009b631901a1cb261dbb400ba6b54dec3af984f5c8ba52b4c8cb7b81161cba2daa7ec599aca95649bfe275a25ff14d20e9d871fc901d3e65a83af8990de4850784c50c4040e9ec0305d5e48d08854a951a2f19775e59d6ae839a03789b68009ffb076f1dadab4d18ae1661db375557c3dbc6d5f0f60863bb329e0f0d29249542d28ca49034570a49c38d241a52502388981a33ba8819346a04d1db7629bb6f16490bee445b100dfb70c89037227d9d48da981a528288afefafefbe627cef93ec8f0d7f47f4cb3be2c787a3bb3b9a00e617ee2062ba3bc76d31faf58af116793ab92b50a1127d006b4968820980634d8a0ff6628763b38623783469432955b2e1beb4b192560538a78094bedfd500cc52a7bb81b68f47cf704bb1dc61f2ca260d13e36d8206609fd24b4aa3a451294fa7d49132ee4c29757486d446b7358ab52bded0f70b2a94463a49fdc4c4fd98963a46883079f92a602975a28c199ca10e38c79e2b7c8173ac4d2e807d2918c0185bdb43af13a6b5dd1690eedc8598a0b05282d369ea837022d167eab9d3c83c54a509727abd3339fd19969fde37486aa6f5d46964b902d1c838cbfd7421a2d7cba45ef4d3659213e474ee51e6d55315bdd5af8fb256df1690d3eb859c5a4f9d09cb4f17926ae50a847a7dab1f7a78ceb6fadd55f75a2c2c9646d6627df5d6599e2b50ab9fb2a7148bad41a15910d5bbb705a2baad7e8c3648785b7dfae5f0e9421554e080339bc95a57a95a3432d5e9a29f2e7aae40ab202ccfa291ad52e79e7aae409646964a71402d2152c69d494e10d5538f3226aadb8aaf473d755bf10a41bd1e756766725a3f505722ca8470412e48c30c66509bcd64b496a12ec5ac9e04059c30d58449292618c214a6d005ea7e807b5659201a994808d702226522eedc0970a62c57200c346141135681865027acf5234e98f4a191852c8d2cea20a06647166552f6b233586400e6f8b3528219fb768c724b0118b3d4f1e29c72243f1c9236a467cba2522c7f9f706feede8c534e52a69996e2e0c49e19dba39c9511e651521ce2450982fa55a55f3a32c4110b12c401f717607b01ce0a24e74cb261242f1cfb952b10952b8e608367e0788511c0803dd944cada7334a2b363dfbcb2a48d7ac884d941a5ce953ad18611628c72c1085438e1091ee120c2489ddb032cdfc500cc922669d20996ef60006eff74d85c83e663342854059b240dcbb7d715a852a9414052475aa123c50a208943e5854b8f3d1ae2c93857ee106c02ef03a4947ec92b75b20016d12ff91820c4d7f6211d7b40c7f2926fc3e998fc156bb0811a98301281141c2d7fdc84e7d5d08086d9c265908916ecdd03028c9e67e7db2269c19ed7dd80b902e10a34616405f2ee9db335b4619e777ab1d737d360cf9b524afc913add0b685ff17305166a8073ac7d00f4de6ee89870efb8d3c838cf0db8bb2d212226dc451fc2dd5610aee53dcaba73b7e55d2052c63dcaaae84aab2377409d0993f167c98ef8137f7a6aa1104d9562a3d92802c080c5e3bd5aad56ebee6457819bb33af2b895778d6e01d330607a064cab8069e5ee8517c0d44b07dfb5e6d19936a7b3ac48a6c73967b409b3ba5d53ddf006fda3d74b67c2e86b054195eaefdac94659d728a5949abacdd3a1a7f43ab474f042a9a25f40a587a7a5b33c8761f8f0e0a1001db39cd61a86b508a30f6f66b112a85f3f567ad12f4a29787a09c4622306492058ba1da514d4508274aae8944ab4444ba552e9f2c351d2a9150455aabff4fca236ca7abebb6fad459441695010ad51f0a427c0db3275dbbfd3cb9b09d3b509a33fad45e947d9b42df0f351e6add81f3535deb9d78c5ebb36616450058368775ba677db6d994c9ff1cedd16f8eedc4d37489d19bdde16785b40b8770fc2bdbb3339e067e6b98337c8d6df24f6e468ce7e4c4719cd922665d084119d8e2e3da594d6a83fef805e4d4c18fd8e09a3f4ca8866558a4a23b9b008a0a4f2c7915eb069adcfb74e989cd20d9e8e88655f41072b6055bf629c5044386ad18406582565dc69a2433d1cb568c2634d386ad1a40b58f545d738ee8c600d384619dcf784bcc3485a1a65c47b029b8e04f40435787ed4b1dc38ca80518b265436dc1f492bb13c87a3164dbcf0ba108e5a2041047584a31627c0a9b5d650488b135481f38846d3a85f518b1b7c00abfa25e38d2d6b1578e6a34c56230846988c3244ca4bf0134b30e551a3123a148cd630fa62a486288ab245ef038642e2ed00a061803a63c25e3d7f40b00570bb63c20c99b09617899c4d189211961749bffa4cf494f2b2464a7939a36189635ada1096b38e491869232f234c2443116290e3843624810b5ac8e4e5908e49d97762098dac73ac82696411ec5e93b389628cc9adc2d8a6cda17717eda8738755b2d91f47fc38a225cecd662423bc7dd28039d6f0b6dd1faf8eb5e66932f3c0e89e62fae980a1ba02d8aa43764c981958505185cf5b01f87ec987dae38137e78f1d47fcf41ed1af8eb7e3fdb10377c76db476dc46e9113ed80d21e8c20c5d70f1332905429278f908234b1b3cc3919be1685ba23680386220c0f87a031068d650b8a08fef8aa913f206f77e1209b3fd39ce01cf96cf9266630f7d0110e98d119609306f06251018f528a3e100e608043a5189002639a261e44fc3e27b40022cc4d0b32e82b89052344dcfb913e2c15cac609d308ea2012c79aa09e354f766d60a82dd639ae3388ee3381297333afda6398ee3388e3379b267c2a8ee355def7a2bf6bbc8920e5ad1a140810225c4711c672a55903bc7711cc7d16f37f74de44ee7c2e7d3e9f48d3b71dc893b7127ee278fbb67658de36adbb94b9eb979db4639ca71dca54fa41c47a34928340985d6cd973627fdc2695b038212089ce837c7711cc77d49e8132dd39fa0b765aa1f9de36e6eb6d0bfd7884edab8d7da63ba3f4ab7455faab7454b0ff2bd74d3c1e6a1dfbb0b21bdda16bd6dd17a96775ff9caab6569d1b79e909846dc3ab65776b87377029636e08fee4a44597767728288de7da63ed4dd99eea2c7d68fd29588b2d29dc931cd84fe8177467452676b7268200052ff5d48fdd79dc9245d26fdee600f277b3077499b30e01d3261dc4b3e95f403d2e22862d9c3c91fcc4920ccbd6b827be8d60ce144dc435ce5de71dc0cf1e0080029663db521bec684998fb23a61be8f449fad60fdf7faafd6cd66c983bb9bade346563561dd3debb5a59189acc876d3fad5754ec028fb8072b2700424d8f45bdba3acd57d462783ee4debde75262c6f06f1c402b88273e48999b0ee1c19c056907e6d9b09ebbaa6e1ae072d6021238ceecacc1d2a297d81978446c1f35efd78646d8b29afe491b53aaba4b2d63151ec7aa90c121fe7a784ec81021831e5b0fc86ccf886489e20a5efca9ddb0ae2fdfb776746d7bb733661d3939f10529cb05690ef1e8dacbf20dfbd3be3fdbb71c2268e8c2d65af09a3a3ab9a30ead5e488dedc3638cb9e5690d83369645edc99302d3a3f7146a447d9f7f94ab2b236613c13e6d938e7ac86656dab5a98618695346ef108e57e28a6ab8d78fed8cc26ccc489b0d95d1c354c81b3accd19a5b60784ee58dcf3f6be73f3d1dd39b7b975dd6bdce846b71ea29ba3b74e13781146fe44331c432800e78c5267389ea7b6132794099b51ec066516a5a14c98c9836baa9dd9a683552a108482fbf2c321abf79ec267134a0198e7bf1e75a75fdc8cbbe16c381a10a07cdd216d3b3b554abfb6a00d288358fed49d8e71d19b4ebf6edd91b2f5bc01cc55677a00cc55a7ea744c4ac35459f74c98f88414c8fa1b940943371edcdbf3160577de746e122520dec420b90fe03e4b54753829a328dc280a27bd1004ba61544b03ee516d0cb83f0fdc546141e44c80475e3408bee3d8eec7f345f9ac28919e4ba58fa744b25f949eae15046d4a8f118664bf9e8fe79bd2afe6e918b791e8f6e9f4abfff1742c7fb5afa763f9cbe29bf2d5b2f8b8c0fdaff67df78917412bba273f21a53bdce10e7690892e930fcc8b3ed35d74bb8b6e4e2b5299674bf4031265f354f6d9f0c4cf66c27c5122accfa3fa783e3b4a4394d1af767486d8437f549b30232f463f5ec03dfa01a9d03180112791388f7e3a4a5fa483fb7305328830a308b361419c2f88b1ed6d831b074e0485500066793371c47192629411b1c019c614f00d964d4c987ccb228cbe329fcf941daa09db8cdfa4a434cecbaf07a61df1b66d32cfb77860f90d531c3f1e7236c33b58dee901f00d607fbe00eccf10ccd9c4b491f5b4c15b17ce135bd56074b3713bb8bfaa41e66ab8dfdc1511d6e7a02801823905a4ab9b8ecddbaa35de47d5036281035c55f3b5137b88b4612a5ce226c7d14d6661b333879b3747e7dcf9698138ec571b70b301679117b87f7ebe1eb4523380e0eb3d6e44bd876c7d7f40a48cc3b1dc4d0b8894d5b784dc7a391b9c09c34d69587fd43dab38ca4d6918d2e8e651d8223a77330c7a730c9c395ac3906e2dbd62880e23a46af1c0b0a6626f07229fbca26590236a0630f4d2bd28bbe983885ecf857282d48bce2487bb4144af2fd10b44f47a21a25b2f2474ef4cbc87ce247455ef5600d67b5f6101cc229f19b5067eddd0c107091dbc10d1eb6b94c529e324b5e49548dce21ec47be9f412c7b43c937ad241db92b7c55d20de4b17524f3a939c20a4d73329dd3b931c7a83d41d13d63168c8910b7095573bc0bd0202eeaf8c801bc7062ad3276fc299309b0987bb3826d3ecc7ea314daae205f0fbc1bd7a5ed55acf2b9ed4f3aa67e3563ad8e5ae6e5aea76b9ebb16ceaab9f9fd5cfea075cb151b6ea9149d5e9f8e0d54fa7d3dd0e6e7a49b426fd9af5b6b52cd1fab56ddb569a918248554841a42052958ecd3a16bb0f07c7956c9caca830cd4cb390a9d61fafda28f3a81940efd574d58a45cf609a99662c5b53b372f035a97fabd5ce6a67b563da9930d1b473b3371bdd1fa6db9237a96e4b9a1e04bc69e5e0e54dfd3b8dcc64f26ebabc41c07f77a65e9056b3e1c13da5d70b21fdbb957426de4b3f6ca22c7ab41a6f76454013d6a2151bf4a3c624fac17df08a7c26cc34f35efa10ef7ec877bd830fe21df44c2bd3696424d9f6fdf8ee993ceb79b5de7b907aeff29e77f0ce785e921c32876c0191b27aef2d21dec183b5561034cd5400763a67991346ca443ea7c7098312925a79ea4619ad3fb9441bd13280a593ee7d3fbe4b0bce306dd1d5cdcac994867145595181835738b8a1e0bcdac14dc2a20653c079b505eed594229f2e3ad640b84bb48e65524df483ba2dfa286bd10b44ca56372b9c4e27bc2cb725c4fbca572e13f0dea38c7e43c07ba79f12522623d5a28c7ee40eda48aa4d981edc4290946819b86373e5a9352b65b30860ae3f98524a2f69a75f2d02c25d75ea0e0feeaa5305508792763a4643a49d0e897ca28d30441bf27d911824ccaaa2016c839cc3ea66c27441a39b9957d27610ced4a6d69bfe01691784bbea4c9828dba9e1e689322f34ea50d029908257386a91021cec994c1f8e79433e8e21cab0a230c41efaad1e33cccd709227645dc5e0ae3c8eeb4296d36844e9e9d4221961b9d2398dacc0fd500a66596581fb31ca380198e914f79a803d0514153fd1ddc10e332c6f670230531c273a1a7768ca5028140ac54aca3478ceb0d78deacf8401dfe02dd1543f2bb582a00e9691ec0a6775530230e2d68f54441b33832e17eae61aaa70f879fc8263ad0926e06a2dd4258ef17a9d7e184875009e0e83c578758a8e39113ef52d08964e9cee7a78fae138ddd0e6970c92183895ba32218b540588240696391d759930e4d1f296bfd84c835feec5d81927625227f24c31ebacf0aea7ac4c98fafc72a8fec7af872a75737828244e7df51379ca121985b6e59e17da765de276f5e9a2eeb239860b74852fec0aef1a005692bac4f3ebb1e1d4fde7d7638bd2afbbf24b8b0d1f3363fa642396f8a5dab4622c084a46c2265b15fddabeb2ad30c6b6c2eb85193c1a48e4abaeb6b29eca66d55b41ae44ebc791b47a1c79115b835aadb73ca681308bc5fafc9278cc5cd98883b4ae846d3d09aba3f596d659f68745a27a128f1f0e225726891749e2acd4edd45f6e574bd9290430751ddd16315d8358d65bd9bcbaea743aa16e5e82510f6dae3894b4eb1c51700b391cfe49badc825d4759255aab873fd9273aacfa2d12d559aa1a5481548f9808958e1101da5ac29696cfefc763260b2b619f588255ff6175a84ee43e315bac92c6495c278afcc863fac51a69dd0b14f99177b56e0b1a68241eb945de7a09835a0de05b6f2fc093cbe5924862e053abfe7827d5636c980ad431ed9d6ca6c13142d7db2746eca98922b9a0e5b60287ff239602a39ee8f06fce000d6e7911d4633a3cbd75af65ab4ffdf95000a2de72d495697991cbb4fca5c8eb4ffc7ab4bc4878730c1cdeab36443cab9660d7979c088b6d8c8ded529d754f6559b6d24232a035b9d5267e40e1538f333c2afc29fc63bfc2c7ccd0b69eb25965338873cd4862e096b78ad8d61fde75efc53e89798b8df9765c7d3ad6ba11d72e5a3dc2bbce9084d05ee0e766fddaee56ebd7b665d1af2d7c15a1ab49c3d0681d6335617d4186c98550f483985bbba83e51b828541886611805968c69af04b5bfb43430b10ceb297cd63797453db4dc4ebf56b9e254eaa99ffebbec5d96d3791273958d0d731d65738d9929cbbacbb2beb2d9759692d9723dca58b7e572910024f2d2aa11e271032f5fdd4cf1eaa60660a59deea20198bb1a2dc7b7d327604763e2c85d577e01764ea6e8cc00fee1bdd3e974dbb83f1eaeabeed1d16d635510989825bebdeb70a20dd7b7c6433cc61b9547f6b07d88cb1b1528f6b07d7bf4b05df225acea31968807b1a9d37f4fba96587c955de244d898a76c90bb6c632e8042355bacc28e7bb4fea82ee3baea7fa6f83eaa6fa3690650e2b01b713bcf9c0eb70302d0b549e1763a5ae5e16a461e76352337f2303442e3b6e8d74684c859448e22f293eb7f058a3236aeb6713c1d73dd8dab751c0fc7c3d5b82db81a577389baaef2b45c099ecaf39de06b02e60af49900cc34d8e5ba5f09c05c817efcf88fff785661da470230fc6860f86f0460f84f0460782e802e9bffd491e7542a75247504046f3e72d5bd23b60655a04aa502a97ec446fc7d385412bb443f47aa004f3ff24cbd9e71743afd72a01e1ef9c91ef9701cb9f5271201aaee3afd7cb8ae72fd3f5919d77fcf65bdd1689a016c1da887bf3d3d7e3d50d97528243e3d75abfac9aa4e7f8c38f7e1d0e1c9286a92ebc628c3f598ae3cae9b759c47a659626b96dc1c1d27c2d61071738a90d161848ef350e978c42ad5ad01ea50e9d071eee3a1e3d29831231771954c113b2ca907601157ddca73af88225245bc88771f8f226e10b74ef96af46b7b0301ac3c754ac7ba2d442317ea9e6aadd29afca9e7d3e9b4a76ca5d9a4be5526ee919b3aea5e0af5a38ec10f07ead6005ddf6b155af81769392b7a73b6f4bc5849e19d2b2bc495b03c783b119b44e2242c8e216cee6c80b7ffb04924ce61733705defe6285b811bb6d8f694e8793327fe24eab080cd6c2bad5a763e1379fda45c344d9f6f885776d1bb05126c4066ca5d2b0ed930b6078216e78d7ed681528873fd9d068349b5aadd6d56c684d68b42636362c00b75c8138aee604387036dc141d7bbd6703ead97eb81bce0987c351c141e1aad860b6ed9b141adb9605de08f0bcd5f0b66d81b78da787e76d0adeb68d0bbc6d5b173e78a33d3bb6956fa66f6048f4ede348df4e9d6c9b4e6d0aceb3a6b7cfedfdb305752cf5f3f313e527734df256056f9b5cb98cb8ee161ef54a25b4abbb6c0d52b261968bc572c990c5d2854c834f0f6d3e118f79aef88f11063f83f8bf39fcea44586c63eccde1535741b161d5fb9e1cad54aaab64c3acb3beba8c417d063fbc5b78d4ad405e18fe14335d76f5d0d620258d5d412ed781823a16c33074dd357c11636b170ddb0e74577711aaa261bc28b1b873062ef076ba738638e01cbac1db0e1a6e700e5181b7d00c6fa12678fb5da1c4395467ed60201ec4137c78301077ddeb518b07ad8b7e7973d4b2b5c91fda1a5ebe1586f2cb81baabda48cc7a4b18b6c290f5d4bd54f8b35856e2d0cab0250c5bb7aedfdb58331563c5a9546a7beadb872305b4b9debab99e6e065da74b1fd3e57a68f34ce8b2aba36c0eaf92c6aaaf6ef551d9010ce003b8ea321ed32a5b3d2f88dfb03334b21bae47d7b5f1ff41dcc6fb43c2759f00f1f9f900e2413c89b952c4fcc61170fa13a3a471487f3a6623a65084f8765a058d42ad28f2ed54a76379082aa563d9c8912059b645c732119e8ee597291dcb2d19c78be0a26359892fe1d3b1fce34c74914410386cd529c2867064b60b1ac2763a4258eec70f21ae845da288b7b4fce5e544883c088f1fb1c08d38f122481cd1e3f3c7082f58402d2ab2a0f03947d6416b3a9677642047b2915c84de24e01b13c7f1585ee2437c3ba522480c05d80a2564d3fd7450fab5dd08cb2d6163bf96f81036f66b88336163bf98380e1bfb85e3458adc88911f39f24492e7c880116f5996cc2794067cfbac02c8b7cf2842be7d5a31e45b76406e655666c003b6e8584ec053df1470d5948ee5057cd503816fd9c7777ccb3a2efbf6d9458ed79bd0ace786d36163bf745c6663bf64f76163bf7c7c878dfddaf105d8d8af055c0136f64b010938036cec9792b36cec17abf52136f60bc985d8d8af0b1c888dfdc200102143bebda9742c33e05b6ec0c36fef2a1dcb0eb8ebdbe7ac63f901ffb70c8149eb588ec051dfb2049efa962770d5b74c81afbee5274bdec4b7ac8157e0db274ec7f213220ec5b75ca7a872286cb5d180ad4d2a602b95266ca580ed26603b09d82e02b6ab750fb09d036cd700dbd11860b929432c27c4725b70b5295a08da6d5a88983b436531dff0b725374e588d1d37873389e36618362dc412218ab8994608a7855872226e8de72abb5935c405c21702686bb2d1b69a6dd6b40a0d0aed10df5e9b744c886fafc0b726bee1f856c437d977dcc7cd2105aee366d5049ee3e6161d67e2661812f81237020f526939ae44a531f11f95b6c493b839089cc48f2bf1eddd948e05f9e6e39b906fef823ad600204f4097802ba053c017d02de047ba2137d231e0453a079c48f780bf743508bce5e6207047ebd8916fef9a74ccc8b777361d2bf2eddd141d23f2eddd4dc75ebebd83727acb5b3787adb36e5629b9b9250337c3483dc9cdaf276e8ee1c4cd345cb7c0cd3578dc1c4406b6e898129e8e69604ac792f474ec896fe77e3a66816fe7823ac6e34e1c03378718f8056e565de0486e6e4172999b61c83cdffc32e2e61846bcc7cd347afc08ae76c491b839086c63ec66336148dc4c839178117b84c95bf6a5034fd9d506eeb2271b45878d5857cac89b78f9104532e052925a19b959891709c281215a1c983911264688bc5c08263f2ac024090ddc5ce44698242192041326a9223727d1fdb851d4216e1455881f49bcc84c919b8f9cc84c1122afc951e266252ec44c909b83fcc74c059a784d4e12376be0458edc9ce4446ee4e52d0e70a0758403463870c4c86b725e6e4ee22d0efce0c0104264e04794dcc85b962c69398e252fadd7e43cb1c48925ab97252d372be0ad2513c0b15ac281b33ad0c272e23b3a0084021df081819b5b6fe9c0053ac072e2e61df7d101b003a9d6cd3e3a20378a3a811b459d00101f6f71a075f3cb591c68b15e9393809b13f009704001372be0403870435093438109bc26c7c7cd1878ebe5e60b9cf5961d75f5148ed44bcb4bcb6b7276dcece338803cb504c78e27fee2c45baeb2ae14ae78f59a1c0b20c1aa54117875a300238044955a72d406543a36b000096c40e6e6d4551bc81b406d40c70624f09a9cd4cd0be86a5dc0534b5237af8e5a9242bd2667c8cd432e81250cb899018fc0921b829a1c0944e035390bb859e6a9d5cdf9a8ab90dc28aa8eba80224e5fb9ae5aa95e9323e466215f808e9b17f0228ad0f19a9cd3cd16f8ca753392ab7efb07dc1cc59780c0cd0f806209d9ffbba2b8190287e2015f6209285e9323bb5174f8e6d35df8a18da2c34f88a80eb8595673f420e2889088300711b29b739c092298784d8eebe61e5d8eeb353910b8d90167e246511f703313f508ec0ab12b7c4d8e036e7ec08fc04cdc0c812f819958e235393d6eee71d7110fff1b45879f1801c58da2e6a80e901971a318e12731a71bc5e8f4d7e434e0e606dc0131373be0b21b058843509323cbf19a1c1e37f3f8c9889b8df81f3335a02403499e70020317b00012995c01cbc49bb04b9c0296894fc02e71095826ee939847c02e71ef763361db8fd8d38dd8bf88759d880dff624f6fb17fcbbaceb2e157f67455f697a6aceb52940d2f85800df2075825ee00fbe30db0499c0136c8875825be00fbe3426c1257800d72b7045825ee06c4feb89b0f9bc4dd90b0227c84e5b6e0012850c13d6c17051a1782808db013061ea87d817958ce0457009101ef88b90e229e031f877d127367a42ce645d82744dc9996c55c669fe03b336531b7266788bbd9f46b13e26e53f46b7b88009b69b0120ab8ee7a10f6c98d1d7cc3e600711bb6faf4ab3110af3f1d03e2e679d4b77b5efc7e330dfe43ebb2993ebcb9ba6cbea45de72883d8855d61f8dc825daec7cc2796e0799775fdf6890ecf9f8ec5f99fea63852e3a165e281a87df5e7dea8febd60043571846a08ebdbedd08e0995209c0330dc21bad82b76dabc1db96b726356ede6cf076162907ec198e38ba7ce102ef0bd9d343e300319802fce0830166f420a3777aa7777a07c64a1cb3121fc04a4cc3461cc346fc8395d80703d8c6337ab01c2e800c1b71dd7a27060106b0d9f46b7ba54db1d52286c1e6b6e1c8206af3436715e8310db31386ce266c3b0d687bdcc2ffae3baba0010cffdbf1843f7d3b0bf57c3a853f7d3ec2cb9cee7a4ca36cc7738cfa763a9d681386faefa16cc7e30a1fd35dad63fff66e8b8e673beab706e872b96e3e0eb3fc01ea1815bc5dfe6cf1a7100b113ca6e71cc0631aaa6297c7e872c32bf2c2cb76b57e6d1780edb6e8d7f600d88ea75fdb79b0dd947e6d8761bb9e7e6d0780edb8e8d7f66b3b9f7e6db7b6eba25fdb5dffc3d3186b3d7c8d31d6c38f626cf5f0608ca91e3e8cb1d4c3ab620cf5f02d31767a78b3ebbfd573595ba9f4cb75d7ad2fb752e9d796eb0ddeeeb56cab21beb6b7d83e437c6d3fcd10e0eda8e901bc3db55d2507bc7df506bc9dc506bcfdb4d8885b366256c42a1b712a840630575abda9b4cd0b2a6caf54c26f8fd1c60e16f8441911671adbc1022ee22be2f0271b371cd3de8eeddb7670bbc94e2afddabe622750bfb6b3d8e945bfb6eda5eda4eddcf66ffb68bb68bb8cb2fd3f5166ffc41afe6cec028f2c873dbb63bbc8c628aba06a0bdd59a55fdb8c163dd8529441fa66c12883f40258539441ba0cbb1265908eb22c5106e9291b4619a497ec29ca20fd64515106e9d4a6a20cd255561565900eda559441fab4ac2883f4956d4519a4b36c4b94417a5b972883f415fb1265903eb2ae2883f4907d9441b20366b931ca20f1f01836b7cbe610142c4f8001b808e04ef44b1e66914c20258c200c38007f59243329b822a806988707e031ed09c02ea9c287928ef5bdc0c8892502b01107c0e6ef3cdcd6fcd63d11bdfba418c972e8b580c5df456261dcd6ec7a00fe84417400fc98b5f244598f8f1251d60200dba297b296175425340bbaa209526c663532482665b1500e0c7610635ebd818c91423632f8811c417c49120a5a80e5ab0ee40a62206fc89a4f71022c9fe30d1360791601704000d7006e308017980d602e2f9c578b006a20805600681000160f33e06105c3090c1500640080d48dc1455918d8d36f1eba5ee0627971c1cb8a4b0b5c4c2d53b4802d16b44aac15b0482b15ac3e958d6a944a41ca43a100253a9de0140a9b8495c5042cdd4a0956382c25094cf8dbb00447106d94684904d106699242106d7c8d25fe2e6ba28dd1638cb089bf2766f0f7ce8b7ec99679bb9f164d01f85c6b523a762c5f7b666dfa6089049c6b50164c3061927a11d3d0b3930511d49830ddcf84c96f413f91e3428e389f8edd2b0f0468ba474d35264c94451ca7506f9e18a2c611f286f440943812045186949f30a2ed59c9269fb42e5bf766c2e84c070fc0a0697a1e85661d335d5e5b71fac693db06c5bd9726b0d4ddddad018aa74cdf64b99ee6b8e8970bcf149e2f45988ed6f39b9db18bb130368a31d6ee57ee5dcbf934d773e57d4cd7daad81b81677709633f90179090239026982181b5d5ece54aa20fb18832c885f5e1e238c7d8c2ff7b6d1fcbe5f3b7af7b305c91bdc16746913a6d3e974ae5783a60cea6c6647abd5b6e099f2241bbf8a83586b106510a73c0745dea837b2077979791983ee7600569e8602e61ae485661f8d9967d9249dcda5929ccd66f6668903250ad7d31c177d79ce47822bb706b862251e420314cfbb6233c52b0fcd64aef4a693787ca7b7bb27603736859f1f0e16ef5b5b95cbaadfabf7e7fb43c2e56d4fef5da737bf7cde1a7443b3279cf0ecf7f6de9f0f7aef9bcde0fc3fdb9f5fc8fb7769bfe677bfd049367b076fc4fdf7980edd3c1fbaa41e84a6537abb72b17dcfaef4587102b777cffbde96748f15fa8815fae8a13bd3ff788c1eba67e9c809dc4e64ef277affd93cbf72493d00e7f5714fafccfd7765ece93dab84e27ba9ed61e2616ffc5532b14b8e97be5c2513afbebacb5d51ca7ddf4eef8aeb9be7ac633debd73b340baa4292323f1edbf59cc0dffbf3b19dd43d01e9f69d54a736d28fb4bdc56edfb72fd3af36d257d474cfbb8a74d6bf6f1b85def28536b0f5516805b672ef070bddacc2dbea241b5167d195eae0a78caa87e9de3dbb8d48244a49f73b8d5886debb473ab5596627f0f63d9444fc1e7ae86effee2807e9c653eb796fbc794fdd0b9d14ba241f80ad1ea4d39348a7fda23ebe1c1fe9820f51bc1dbc99869ade3f307894cd4630f893cd4e6070d690d23e81255b8374009a9e6b509dd4b6e6b7cd7b9b666a95935e1b4674d243a025c50f079d69d18bbed916ddfebdcb01f8cdd047f6c9bc4a5a246b1a261fbaadee2b690eaaf44084c993a0aa0094cfaa0ace6a47859c819c0dc1eea70685a4983427299a8693a2694029244d2824c16007cf2bbd21ca21b68165f41cbf88b10cb18b08861b232f848f197c89311aab8f8f1163a9c7e6650f7d02e0f8db72c1316290185b793c907803340289182b11116fa872c41849081c1f84bcd132448c993a964b83bbab1b8410232c553474c88c4492fb4423f9e118dd84475646f4d0636474cc4aa580fb9ce89fcd52e0ef31bde1c949118b3b2b98a323ee66d1592ebf1c18c0f943c598308045f9c32c23960c60d137cc723b8045578603e58dc378f54bb451802863c67769886e8dd10d42f65080684308efe6a661053c05d3c0323ae2ab7db0205f35a22044b49123ca0842de284226c6b888710bb8ff892ef790cd52c4b8d1cd5260d1657f38bec78c6ee6f0e8dbf0887b8e3bdc6b3d973180e78b729789402bd384c51b6edeb0835d38d6de30021c4d9e9c53ba68c15357d37b2005fb85731d6db3e994eef2db47e97c8cec6e8e31c6b8c918ef0c1a919b0310dd66d0a831c38b17921873563983f41a53ca9fe28d98149637c5d8cae54571c658787952bc5144176f20913dcc97ec615e8664648d195580211afd9a31d38710f99a5fb11088af799365c236d1aff901cc178164fee51dbca3f7f4b61110e00c1afd9a87f11278b39c9dece215b0c8cee858fd3c8d1ab3d6b861795b3d2e141beee6b939e70f63a32316d94581c619346af4ab3fa35f1d6bb10a51e6820fe3d5521f82e1bdecc49e6c9148640fdd72ecc3cb4a1ca33f86183ee2eb59c0fd1abdd0f10a3e441b491c11b98858d8791aee72a1c1f5f272861717971f97961633b4b45a6568b1586460ad565dac54aa31a8522931a450a830a04e279f531882216461f902cbca8a17564c262e4c20d805b054e2428944da02e9fb7abed1480b23cfcb8227126141140a4d09d57a85da7556e838ae0a1cdebe23ca98dfee23daa051c67c12734ebc1d898e3226de7e44b421e58d51c69461b4d1e00848243f13a0fe3dfa009e1e5738d6d4d004c74f0a88bacb95c18bee3589446a99efa8cf8fc77714e8a1e877f022d4cabd1ea1402b1275775929c5ca1d1212ba93629f0f10a06853d232a4531cd3a0a5d88b2a38d6d2b0450f38d6bc9002e6a261dd49f2c3813b1850744eead45a40e8fb43e8a54959e87dc12135221842163a4dcaeae384c99e7e7552c0d6ffef523ae67a87faea9f251d08f03b10a04be25b895babef9bb2a565a5e82419d1516e6882238ed88b0c0063cd0d4e30f80fcc349804b62efa4e22fd13a9c0975e1a91ac8be9b15f2ee73e24445746f4d65b5746f4ef9fc85e962450980e5ec9cac1eb856f5df421510269f0e772162bf33de215fb840bcbbc3ce24ff4840bbf9cf4e178b9173f7b0f08b07bc5b44da4a25f8dd3afaefb7c90feddfc9dfb7c8017dd9cbf9b011abc225a79890509d5cda29b6e2a950e96ecca41db5070f28c0ce9a62b716e3240e343b422fa9000e6b6c1dd5bc78a282a95aaa3340bcb5c415d84ba4874d257fa77af8e586c66a91c4b4761b1add35158466d4547691d161e78e0218aee86bae8c3f1643eb34e3f1fa88b6e46ddfb5ea7a469bae866d2cd000d66f9774f7e55b0e9a49b0e926ea6a179fdabdfcda5ee4302bc59f4ec83e5dfb78f07e92c377f240104c0c6152bb197f391409810adef261122df174299f4e565224fcf6446de9cd2fbf4e67c07bf7d48906eba578af1f8f900c0571ebf1e2caa950be0f1f371bfd263005fb932a213009762d89ef5ab7bdb282380ed717fafb23d0070969b6930000eda3c83330f7fdd74182907e4e1117f02e0e102088095548ea0c13cdcd7a7c374189718c66df500c0ef01709bf6eeb9676d45f7d83025b86c5e74017c3844503a2622bda9681ceff57dafd7a74374dfddbb97d4a4d24557e27c2b35375481638d0d51baab70acb1e106b7410a5ee1586b030f267dafb5c10b6e746dbe5f21dd4c83492fc99b874c19a041a274d2bffb0fe85a19043e769f22688eae8db83f1ee045e06dd1c7834ac74417a8635fd0b5117b3f7ca21f443facac9c7473e94a2bfad57de5463cbb7b9efcbe2380424a9267c23e1f5d6db2be2380b247878b9a0f942e3a96e514b87bd7656905ee3aa9236dec0350f0a29bb2323a22b6b79f1f9028eb1bfb005974659446e2bb32df45171dfc6eb6275d3985e8de54e99d84428a520589f4ef2391482412e9e3f11dbcfc4012e9df77914824b2a52ba128692ca3f4abfb2d148d5beeb2503466b927bb775dd7b14cbae81de9a28b4cdda5cf673d91cddf454a1a2bf9ba8356f694ace4a25fdd3b2b80df23e6a263a50b45e3528f8f082cddd2a7e3fbaec4e9979ca25f1d141e5628b7107da2c70f878862d2b72362d155d24080a2f7d46e449de81fc5a577a677248b04fcb772928502c9f7ef2bb6c7c4a4831609f8d61312933ec1977fb6f1cb1b83f6e552806425766979c4df776b802d2d5749e356f80f87c42c4bca0159482c24d52556dd2cb1e8728a8e85e14b9f1f0ed107fa34534cba68f4d842ccfaf4d6c43e00e922b88cfe3bf7f1101df59849b2a5d39c560f89592e31cb3f9b6556feddfb7088fe59520eb8f288c1935efa8ea0c12bb7f4e940a16237297c4c77b48e919ad8949a7c168ac6df498d45a4970ede1389449f0e91e8ca902ebafc78902e7acc341f2829fe2ebfd8afefb3a52b494a1a8b44a2eee0670430cb5a0fee3a2e3a708b773f9dc2932934854235c6729fd49567d1ca556232891ed326d08a3eb09bd283d80302148117bd74f0ca7ca7d8fb6cabf64bf489bb23ed00ac213f1cb46445a4ef8a4e5b88d145afde451fb510de454982c8cf3b33f39ab0eeaa09eb2eef8c09eb3e615d5f89281b3dd7f01e65fdacc23b26acfbc88eee7d8894856c947577d20e7ab857bb5d7e40a2ac8909eb4e82d23f3f6a964c58776a5ba2cf8b4ecfddd6f728e3beddd6775b3f3829db2e65db47b7257a9fdebb2dd16d01e9d30b919f979fdd7be752f4f6c3171c67638449b09f789e376394948bdc9c52d230ce386953d95f80f194dee6b63370e74a95da3ce475290ad94fd83665675ff885e933adb26e4fe6e3bc52bc6439b45fe0862ca838c140e078851b7cf0937b547850447408a7f07cf056d3af8da3e12da85fdb56859362246609769d4e01b260bb91bbac9269c486e1ed6a540520115f12de3c83436a03a61e3343222fa87b130e20115f324a0278ba1773fc1bf0f49f5a3fe540615b815caa1bb2514105a26243a35d55553fd19ad0684d6c54b4263641280073f559ddea837acb5b2cdbe28d00acb422aa47976d71b98274bc3cb4e169c75013876fdd0b6d155d014a1cdac84f072a7e394effedd443cb4259d5553d66aa6c91b7ac11227fb1d51629f215d0284bec24c2d2f0768f882df2f0291bdefb72b8eea85fdb556f617d3298393f91affea37e42adfeab7eba25f2db0a552fb78595230282280860cc2c6273aa75f30c6e3da5a27da5fa513095eb777df5fc9feefde4bacc1f56da57aa7ff5d3bdd529749dc230aca1eb561b140b0583a99a8086c90314b54a1a87446ce476749890a4c7eae151a7ff742b503e3d3ccafa583dfc553f591eab87f79efa5557a954aa542a95da015d2e477501dc1ef1a9ab755ba05067a150a7c734cb763556914be4b25827141e9d2ad0e9143aa16ec7e36abdb870add5c3dbca21f12f8c4f81cb129f6e2b4763d114783b876fb9510dccfd53253403a212deda840e60ae4034202a5542b48e351cf0f65013a06dcb628aeb7a4e444f22175cae5ba7e8d74dcb5ba854bc8313a0cb2aa1f8f4bb5c0fc33054dd65918caadcd6a0d02c5413a2855a36d4b27d65434e44720073a5b91e3e5603ac88a8d4ebf4c5b91c079942330308000000b314002028140e880583d170340ac444891f14800e91b25476501c67518e42c818640c010000000000000001300000db4fcaa176643505406f5c234260b4b485e14121e573b8e634bebadcf8f5ba215d2b7c9cd65e2991a4dee1621e5c4b4de72b4d651d678b1313faacf59e4e78c9f4adce78f78cd24bf49cbd551e3bff28d03ffadf717b2e260e126441a9b226436a4ce75695fbaa47c81d0a30b13161fc6071d3c841d48fdfbee9ddde1d7b566b1f73d206ef6a2f5ddd64e79ccf948f5d0379fce322460df62b8d464c7002f7f38fa77accb8e3ab96d5474abed40b4afc5e61d11f8737359690e1418fb3668ae2c83d8209d9168a0e24234a18adf707d0524f5519406a612d802efa68c2f62300b0f7444f4c55d72871ecb53be85c0482b236b0c7a6ebfad4c8659dcd332aadc541055b19967aaa80d28f2c5c90fef7f1269f10c22494d7a3ad8601384dc850895870adb8f021854951174be0290150113c88307508431b0b33321893920c8a04720580d201bc7204aa4532174b611030d015188467740c40703531393087284c850620328501d0ee9dd1fa4f70c59200c79d45fe7a34fc7eba2385c788aa15f51d591b3e8cd30db2901dd91e5d08a614d7cb2c78c290afdb5188a24551638d586da7d8fd21e5bb20104a40f7b9fb12228ba457d15241b2d3b7f721a08fe3bb5a653a210df7a117e0f82b5f91f1cbebe1b8cf82c9493df3b06c35f67ba749f4950864c36ebebe18e8bd30893261a77e5ebc0373d28b76dcefa74bbeedf4de3eb21cc88fc2b4c30a02bda7d1df6851139bc6aa1fedfc90bb6a1a4278698930571b7e7ce9732b67a54a76be920e5fd52e12e8bff8f9bf4def34626f23173f8d4a5be6af6937acf431b0864a8df0ee310bbd276128f17944fa19fda4aa7b606a7f54649343769c1a05892892f987c50f65b71e95f8ee7abb1fb355636dba0584d80f7c9c73c9ff90384766c1eadce6f287f9486d1da91349ebadcf761bad1a41909a8593420033972729ac3865238549f49c149560e4c90f767472d72c462d2c5d4fb1f0223c344c8296bb5999802e34a1e80067edd6da3275fe885e66f354f13751e96112722777ce0edc4e9a5a774b6a66f58ca4a3c07f9cb60169d3d7e8a9889787bb4f1f67a65f54760a059d10c509731364aee10ed756d6daa37c3eccc7ca2399663010e49349f81fce46cc3c04cd7e060d4582c7373043b84a1cfb2d26c99f1c3088a91a1b8ccd7f6672392ee789b8a650bf81965d8e01f83bac1f4904fa73948ada1a7ff8f7a6f1d2eeabbb23ad162ba4a02bcfad7e04c94ce47f7aa057d80e3ee2d65fda708793835ec0324506a2044045b36c9d8312f2f90ccdf6924f388e6b5de3729995ca759a48e04f53f5321e48989a0dfc57cc3558914dbda751aa5f8f987741b04c8717d613cbe75078407ad7e8ddab044bc04cc4fd1158eff45e949e4b551ffc2abd9ccb7887b2ea3929b511f9565dfd44af3159c6d66faadfd36333590d04e8ba26d21a48021dab635d41b9ef812b90fb97001e8e7994b90744c2c574b9a5047bf75ec5aecfe9df99264f74696ee8ff8854fce95e2235314a48bfbdf15f98b71c09e673021fd274059b93cad0e374e80b42849b27968c2831794907a398756a664c03264720a0109e41c3b286ca92665709f4dbf520da156ae85d8a3ee7540257ef7a22382051bff1ae2637790c17bfbbabf837effbd8bdfca00ceecdec5b1be1ba0ab4558dec2d2284b8b0f1fbe180989a3f863a921776121c80649a9058be2540b35b39349210e2e0c41fa8ec0c71b43a8536d18b23186b8225897e71d85012434c0b7f239dcf08e87e15717cae1b46809d1f9823fe9a22bdcce71250bb6c6db3081a880e1a4b6710a7a893a4ed18f01a69d695aba0439216c2ac60d22c43b9eff82d5f5f3c71b3a3e03f58acdfeb6013912ea7cafc8a5ff58f4a3d6c2616feeb894fc8ea2869cb1009284357bff8a305b941a4206d08556d3394e089ace6928b3d085873cc11f7406c05c53b2f77ff989819122f05b98facbe39a834f6c8b5a88398b9d2c11e4774b0b37b0eaa77fda288955f8fb16ad296f62f01463e07a4fcfcaeaab5f2818eff51e28733b02121c1401d3bc157e02cd456e8dbbc1c14f39b8de27e55bedfad2e3496ccd48198440634c9f9bce8e0869f9465aaf3c9b458aa3146b1cbedc9fe9d311313ea30563bee0bf0f60074db2b7894bbb1344dc454ff3528139ff2123d3ac868f848dd5420ca0a91f054d5d1bb277d2df8761f691316822467500712386e75c2c6d655055d504c47d1a7572ee36d0b1665c2164eb0481bdd8116d7dd4ce20f4527742c85432081b122b9093fa6970c9b14c5577986202bbbbb741c6a500812503782a5ef4b418383d1414a3ffcbd146d85b1cc020e001cb174d2438f0f608e85b3851e0946073db8fe0957ad974b882ccedb65e9379e0b4c2ee2b54bb23c7341ca2aaec699f7569688cfdf9be006a46a94129af139d88228d3778c3c5b1e3704ba61201e62e123af05029442341c1bb77367f53ae9b9bcdd308e38f84b1b94531e2807a2137614a4681939b9fe453080fcbc03cdf1f0b9c5d85c25cb6e1f48bfc39794298f486975cbaf5866cb901f3d5506eaf8b12adb9a3cef8dd6ad0084bbfb1e17e7bfae52fb7de896344df92f3a961cd591bb0807303c7a67663e463d9e100f9dcc355ae48d61932166c42cdda54fc43be78b740cd3757a0e8344c0259de1fecb6faba9519b806296d9fb23901d2ce167b175e887411006d69ded910b621288ead50083a442f210cf894782ac52b715b938d07eb8c1f82eaa57552a3a60342e18c5ebf4e3e449d273ac1dae55cd8556954ca21c5155cb01ae5328e3aefa4eccd520987bd4a94a2f58070a939ddc4dfb25245175ebcd3b4136091bf5298187c316bafb24dacae5a6a3f3519bdbc0e01565e9cecf96641bf8f7214be89d4894f1f84db941c4f56d0760da7e4e0f4660558586f58aeb16ecdbb03c4d54f6b03600623b311d62f43266a9fb2864f4bba52b035240b790bf171fa0e024257732ac1a529fe13f1ba9130b25e90c9475d950107c6adbecee42b95c38c8a964b9f0d53c6b38a25c45925581aac04ecbd8d020c8a397ec6610db5f494513bde7e5fa91d8f2a7f29a29415802099a016336f5c40d3c65d41ec734123e726e220b627f1dad781cd0c44782bc177aa58b226550a5b9ae695b4e2777ae2491e49f466ad68f4157f994875f505440272886884b44356d78468efc9394b40b05325aa8a54bebf72877966586e38e1bcf84a12148403c4c4bcae00465e22c1dfd6c8818641df0bc7b37f2b1dbed808bbb803eea8dd45a76313421139c140aed21a1ade20b30c9ef08803bcf0e58d24fa1d3c9e1127db2a974e5f1e668a9894040210f1354e599baac4b68be10c117b24b9c9bf4dd8eed117067629770611daa388300736b43d7e840eccfdac9553293c81dfe4fdbb5f608a8fef130d03190e4686deabf81956dcaa4fea1db0d3f759448e6933ee6b58f1c65605bb6dcd007f5919e989a89e51071520e4db8a846ef77a521561dce7c7812583f165497441956e788cf0ceaeaf7ebc436acc49260ee7eb0798dee32df28e639bfeded452340809ad0a24e2809359272f8d8dec7846a6ad8a738ff8eef2f8e084be60a8d3afad6870adf544b5ef9cb6c95de00563b7a25f2e72ce08f790109f5d53b8062cab5d8f0375b391d50713d74f59b06de0df5ab1702a3065acf33d515acb520aab213d951d663083fef116045efd427899caea2c839c6eeb9cb02c4a4d7115823487eab1f441a4a7efef4078c63116377fd66986e1bb28b526c37f03b24a1408f2001bf333ed566d9c1d9ffbeafcd83c007adebe2b16a7c2f8bcad68f090fff4e3e9e20d0af2b9b92fca207ed3092deb6f2c9e31ed26ce20f02b1c7994ce1361f28b9cdcc7dfbbce04ef8b86891caef1d7755fa73dd563ec0a22ace772271ba908312c42142204d4c7a3528a2cdbf8aa29d58433005786ef35800fd41eda58956ef81f16768a9580bc0c164ed701f3df29b43ae077ae1b49dc908ef82712e09d71d2de66a679d2754278aae4765b07e2626b8c2229965cbe331880aeb55dd418fb9ab670b447f5595a6ce323a7b7f1cb9204cc217c851a7805db97347df6411a51653401984ac4fcd83817e54d643a89e105d8b5db5662a7dbeb499954b8d53070c0f46b7d853a42d4a24005f4d69fbdee295819afd5c41c0508ff6682ab930af3ee05dfa41c5887dc1e16b034361a150b6b9cce89981b4a0204fd54f3d5ae42b20e0514544737d868cc0f54075437e601822c3d2763e64129b0b54096ac968a9ac1003d207ba9e8d03d7f435102251365469fc165af9fa538506a10720ce1a5b4412999907d2f86411b33d59a7e9ea661df1699e1333d50e5ddadaf111c8d4a6f75500708f3dc2385585cfce06f1f6dfd8b898f066314e35ebf3e5a0226f1615a2b6037552e2826d901bd818b945ab0bdeeeeba95438c0be7c0e3202f5a2538e53713323baba220de3e81fde8c3a1c9b640c476141dd7e9c4ad623798a9c1499f964b5bd321d5573729478ac9a250750f9adbd1115017010003a939e381e53e8e32e3f600f732c2296d72ded70f6ae0f70fce929e2a1a9c5f96ef317915345d38db2e98d9e99b1726d63ea4b9c70b22282566827c1ee7540085dbadc3f365690daa03c300f056772cd7e4f8b22f69b81b57d8f4e91b2614f05088fa3ba5de3090a19f793df3590cee01c62e890743394c3cafc64d04df00fc371d921827f489fffa8be7499b0e96a3efdc296955c9dde7e8c98dcdc9a1962098a605342c9b210d4fabeb02f1b4f0fcdeb6cf32e2f71e8401784438d0214417d36ecf5d15b472044ad736f01a8327dd3bbbdee957236096ec2d13bdbba4b3b9b108076b953af515256d56f6355c1e2bb30db6e36fb265bbb7124b647f4712a93ea90655ce9438c91e4c036472bc1aceb6a678fb3a760811aa939f9a7035526eb521dd44fdda897d0186ad73330bc5b47029084a600001ef6c396caf114ea289589b04c91108083116c428d52390e22a99e23124e212d89e12891029c002132ea35c2e05041f33885b6166101184b891a64804812304ed3262b111acb1994a53113c03444e27dafc06bf3ad736bff3c626398ce4733037aa94d15bfb76cffa3ab5141759a2d20a11123fb318f58ac0bcaefc71f986fa81be547f1f3c5d90bb6889f3a0472c09c99ce901cbc949c72850c14397afe025e3026599f546d7687953775ecb69808857d6040949b0208375cc2dad913728ecce35b058691a16687925265eba07ba869f59d2d0810573a247794a1cda6ff073a5de18dc6ba887d901e06aef2eb98fca00b50736e12d5cf005a3a3ff9507f87e9f4538e8f66a23c0dea371091cef0e26d48830813ff5e48044ec5a3d6d182dff98d01971e0a5a4a22c46fbe241fd337df6a824c14a80ae67ef57a2e300181ea77dfb949adfa84936a16521a377c18285d829053799d039a2edbf09e741d71dda5f0f40b915b9b49d361c3f8e52ded90c9b173fb1f73bf5822b93168e297e9f6ea45f8d0e5d59f93345dfbdfa1730b3ea7167045f8ece057abcd09af90c9b96c0379d4997d9938a4b9448c7c933ed68a9d561a60c6d960a6f8f7f192c5d36a3089c7ef318024293ceb3b75f6b5d8d5efc245227c5a88c12d6df084d87798ba7a2340f384f17afcf595bc9d67bbcec87e1f4188817eefdcf54adfc334f5ed0a5c6cd85666e959cdee11aaeddb253e3d36a2fcbbc5c49b1cd43c39774fabfcdd76c27cc8383f51238bf28eabfbc2f10b216dad5a60fcc4fab1d6b04b31c50366dbb4fa082f7fb7554e12e2de02f9f2d73cc7f471c9eac997e6cf1786ea62da2700a7a460b915d2e1320e1b3e607c3736922d3a8887defbe35de5812ae7bf9b6dc0c341da9287b55c1d9dd956dc63bc334ef25abd2aae0fc8e74cfc08aebb880ae7cda115440849ea40820d00baffe117bef6909a82c15ad4f97cf0e0830c0330b478dc885a5d4961799c90c9646b679dc0c42232b1d982ab19ad47b4335c6b958ee4510ba4ef912040d1efdff63e8958e9cd84c08a6a724d190e5e0745de82129980983ba1120afa59deddff8af313e1c73ddedb62abf7304ec14e752f1fcdc7aba5117f7ab0362e0a7d9f167b747b25065f35eb1a8596c1396f74c5139bea553cc1bbaf335bb002dd0a1c53f5c20a73b5e61020e355e147715765f61d3ed372c131377dc075f3d8e80eced1e85762955a307a7ccb12dbcab2b551bb838985b0a845ea243a1739c65c8277baad1be802960239394f6b45ac77f9d0c38b11969d2328375133a2a32c2af4ccc637e0dd9e3ba6c3a975daa717f1d003e43cfb9c4b0c052590b8350ecc5ec78a946fdbb0a3d94b461560eb504917fd8d48a844fcbf88ed2526677e20ee6c631207622a2e2e5cb8ab515e2cd1424452df84fc2cb3e9457c4a7e2185cd1093b4145f92c88982a2a5df93abfee70b97d2f7623301cfb1ca942ebed822b0eba87b0d3c318c31e21be9a4a6de8bd75cbd462fb8b81495c31d9302622782e2a98bf7c8ae0a9d567d40ba0e240dccd90adc065a1c618304cedf2b4581db2d04c0fc9ca81d3c4df093ebc82eb865bc3f5e5c189158cfb6ab847e821fe44fc5ca51fb2942e527b314178ac8ca555bb89144a408c80392503d1f9a86448cf08386be1aa8628241f5c47e7c9d0dec0c23c7817b3b471b5bb631de38395cad0df22a0426fa4d66c35bcb368e1495f1656b67fdd5f7893e3877d3a2c68cbd7a6102e3f6eeb7ede3b68fa55f8723c9f4c1e623f19e0470992ea1f58580d278e0b23edcef93d37cd20ce84a2a6647760a31527b36137508418d4b1b7fcf013091d255a459d3b9954a6340a93b96b8fbafc4cec488ac4433ed24b7a58f0ad04e17172e7e9e378d5b27f25fb1ed1453400715c4a075ab1ad48329376d3d0fc6b5f2ac5586a53a9df153e990a20bcf0dadf3a70927805f0d634a5b00047ac9a3a755dcb3249949a87a924955fb4da4560b88187110002ae6a8e632b4d52a51ae8dc80c8af81302fe232efeaff4f8376053543e13ebd620f3c382bf33ffa231513f8b76b31c8cc4a1785f663a1b4087d498034853a3e70126742713bf653a1f25d15c644ad83159e443697e22ef403990d6fdf147ae110ebfd790e8297689469f75eaa890b83aee10e259ad05f6e18547cdc5130071470b0098b773a4e10cb6bab947c0559fd15cb46be94c72301c81f22ab64b039c7ce9c5d481de54488e05d3a811ad2f159387b937a5d05382a973ee675e3952a1b10490e840c5deacd1756fd0ec21f55014555092f7304fdda10af094bee0409ed8bf1c6280bd6a44ca523e7657c1d5bc4285a77747407e57030ffdb536122b8c3a180b7475eebd416e4426cb11c8bc0fe59cd02d1a1a14a94343500e0d64e87195a0095bbb4a8f34ecfb8c8b3a7d152f81bb3913ed21e83ba5c6fb4a2b644daf78f8386421a644d35ef868c15439b5ff826d9eecd13cd3d41939b6cbc355b7565e666dc952bd03cf218a86bb176adb3c4f1f6e68f6f5c46ef8f4f4e8a6136f36855fb7e6a7f68124a727dadaf00324c3e98299bfeee0f653f89cd7de525d772a1ef76fae59758b4b7398b8deadc4f6c36719477ea3911057678c6ccb10d6ad9fe7105fb1a3a5b4f831854651d3fed6b7d96383fee862535e2e8e58a9f8a7f520c4b9a5642a24088b99748bbe81605d449b11380857e985f1e6b21cc4cff47a262ec3e9478235548f02739954147575d4c759cd99dcafc3d9ce7da53d9f816eec4c20f2b660bca0d4f04d2df019c89b342011214cbbeb0f1129842a3b84cf877ce48240ec81d2d785909bd7347b3b93881d9670e5ce6516245a0b9afadcaa0a394dba7e513769e75c4e253c1a50af9304287051d15b2d64512a99c5a52f41d86a0306d0d0d98a8c0e6912c00227401f70bf22e566659e82b28c6ed56072227a913ff172a530bbd1e0ae8812b84f876506a854112300a5f597140b57ac01719439417b392f683e6ca18522fbfcb3214ec7360a095857650c42e29e8908ab89d068891947f63b60ba5e2cb36b9a15e5c98b9c1b53433d6f570081d294df4573deb4cce0d129c2f14c0924ee27170477a18f8c4a4121317ba0b69d449270b82b99dc4c525667d75613d8ee4affde3b1e295d948c87700d2e90058535f91b868f59c09043f79ed2d08b8f3d06f2d5abd6b65a50012ecf6d5cc8768cc9f7a172cc7545cb648fb6aecff112c92d3448291587e6abef683cf4c9d49c06ebe99e2124ab3dc7b3417f924fbc35c67acb0fcde4bdb24f3fb836b9a62a98ae57b1dd5579962480813d10320abe8c709d7df5d5375a922301ebab30f5c005e4b4ac585a0b6e1e85bf09be30c3610889e44956d652def206621601f44738692018255564a5d078529a193c7b2051c430e9a8b0020843bb58eafeabaf1ef2de0a1ec320adee67385ff19a9b1c1d4d5442a70ca22cce3e3f1828bdc2e0a6dfbd4746bdd7de26caa52d22a1b6508dda54133503682480c8a9038df764668323ffb1221890237af2f0eb984bb4da78d391a03d459e095e34e3e01a40244083046746c88b44f9bfaa9a84d08c018c7fae533d491045df288ff3c0c0fd5f1b8673410623c99acc1d145628636696e168ee9213492329fa2ae05d57ab86cb7a8f61f31d7138935fda5c2cb8ebe40378998e5065be19c64778d70777e172851c337693dd814c181415244137f817cf2dc9f456c42497c4816838b224312137630adefae87bb6ca9821004d6972c5548651a0d645212a65eb3e0d11b5413c9620dc047902fed5a557f7cb5b25913a5015c8f1bd52dc0ad076526570add1de05f77b9e65dcfe07f1f7e0c27d18fac1c57e1464094f414af76a6ea64fe8cea54c37b875bdf5c8f1599fb7c35bf5eb2934bd7810265f684e74c1218b4fb6c95da33296db6ca6df096c6f4dead10ba6f9b80cbac5f40923594580bd0266d6bcbd2666cf635f53aa09da0633b005a98ef271c8f0f27924254671388f518274858055268a2d961c3991920f7cfea12fe9db02945e8b968a66aa8897502cbd7b17a7086e118ccfbca67b7b0d0e78774625f3a0e7d18f714b508570b256ac8375944b2b71e7cc514d6c5afc240613d838a1f812a151e5a7bf335954d01e337def6637ac7a88faedffba781896713ea200faa242718a57d259a47fc19f4f6b2924ba635454fd1cf68e332e81ce55daaf3c60a8795311165d13d051172fddda6b6efbf7911de8b07a35fdf5735c1d710c4aeec6d9c7389db6676820ffaa6259f02ad48345ab5a7724707fe275389b3654ae0c16bdb413e853ae67e3aca6630449ada9aad37c1d89a92c91b1740a93c401bbff6c52e5c59766aeb8889950c4a864ce4b0a2edcef82e948b793d86528ced5b2d3d52f35564de6b67e7fd08eeb11daff27368e3b9af78be8592858207689456b748662f271969586504afa6ea2272585dde7000ebcbcb0ce4204064f5dc370cc755ff2a71c0d192b407420498bd2511308d38ce828a374e2bd782d046681b3d9153d5b5d221c14346bd33cbd7f5a3f9f4c2a3e9f38459824c99b559317da34c3e74caad4afd787511302143599ea4c9295b7ce7cac557461f36498923db3a5c5804525ddb1bbaa4b5b83319004fd8437d8332ebb96459a2d2ad7da72aa95a8860db73c96e0d71ae45ab3578e00de090701a01999c1763422ae9f5a1f8a91070f44e82310bb282ad945e8a4c9133332f1508096e8fbb1d556f2e0dd0c504ff4588ef623be06e84a161168b9d67bbe6d0c20a46dda9e39fec71af3e7a833a2d7e0c49ee431d5b4097b4187c2b179c728c78a1f15ec137ec163b465272e2d3dfc6984ee51c99970bcaf852afc253970314765274acf05ceff43eae4ad3feb5a2aecdb39376521b83f89164c520cd0094dd8e85b10abb4905346ee83c855b183e55abc467aa2004e4ab3e4eff88db89aee2682162e102cf3a7feb897608521f94bcd63f09b0a6f95436064db90c6d788f711102e520ef5076dd3405e3ac378217af1f7a7920c3788a4e61327c1fce5afa40e999cf15da6f1a409a4a1aebbe33cfc81f345e591bcc013f1c39da5247caf6ef2b47792346f8959142ea9dbfbf30f564448b59748a49bc8df3170fddf0ad9c28f33498de03fc7d81c1861e09b3d0e6066e904b92c833c778887e873f356d5f4f11d57ea255f400cb7866dc54bd1bd28e0a6c83b8599618306f592f80791601f6025fec625755ddc9a660cc435176b7d762c54ac4aa1cd843111f5433f7030d0cece069221e0e5156530c34583eaccc9f3618918cc6027171878209fa581913d85c17e50bee20279e127319505227792b4a8aa8c22141d5a62323c08577b07f8c4d569e8f148d7553669f7eb50916578478e49c806c577a154dde93506e63181e16d7f2418d4da2b74bfd49ecca8419736ce016f7e8691ac60af958373a7629301480848ab4dc81c1cf6a28d1445858174a528dacb10707862e6c12128f2904d8d03cfaed8a63c0e79e0500b250dcb1e82f61e3278566171d6c0a6400e574c45d303dc4ecea1ab5b72a472cadfce18296438539d286b1e5d73387d1c92806153df7ae0cf34803e41d188ec0fd55a580f2e9098a06d436192c5429a18b2abc0fa46997ddc0565a6b63d94512bf55cb010566c0f24f8833c1fa5f0ae49251914a338172efe48eb3861ce33a6e742b3033f1712bf40ff3684f2163aa2c085c6355a00b76b4ef0c11d765c3f6858667e0da0329c0a08408ea33318b4370ec60096776c6a451e88710d6320b1007464a57cd3fb2f44a26c664f0092f76180c7868264c60f3bd6021cb71a170e97e3f9c630db013356816d5f575fd54651c3453307d182b97e97744a00f8c0b321d25c159010b8f75a27f92c27d3e846c3c1d999da82c750fec03a550209f4db5620d02620350a07f63f0c1874403c73d600f9c827cb788c67e33c4b67529d50b1382d1104ae222c556a68ec017b7c3d98b93e7141efc5926f1dcd27270e1d13000395c012aa0a034fc2d6e25f9ad619150b06f6299dffbc5ad8ca75a677d2bb148295c51b257b84487b521c04bd3e1e94bdd983a810952449684a1a44a9dcdf82e59fa31e29b0b360ba70a346c5e7a266fb91a20908097c3dad0e658c4f6dd16c0d4b52b645f03790db827bf1ea3717c243ce7e5fc198e348d2115487b661ef7b750bdcbeb4145e8242f253f4abec381992b33256e90ff7812c8de4792b610d4cbd014ccb02b80d32a0720d7da33dc045a1503fcd22479904294943e0e6361437639026719e2fa8cdc29f958d50cd72fad32894e224e415202a02ddd9536b39d5f757911b7e86b450dba320e14274d5b2dc8a7698716e7bf787f9a7a9176b935d2bea6f00a30ad00bc99db4719d168b31b6cbe498e2c5d776203e703ebf2341fafc697cdafe434427a71dfc79bd6f79ab2ae212a6fe385360ec470b42ef9e0215535454578429c5faef5aed81f3925d19164a26b19fe56f050bcff7c5b0a0180b966a79fa3877a0427cae6aec07a8ed2011fe0c0804eab736197a5eae61820c4ac67c3cf7e1fd91457fae0a9836ad98615fb1c47db5245863e8d2a2dacf9d3be5ad43eeae810a5e922141c2f5de2656b9d04da0284186a38ea864bb39aea17aa3a7608b636174ba9e71e75e39ffc0b22fbd0cb676cfd23444b8ed8fb663193627eedfd097a819ae3c69a3b7a6a9c2d3d90859983ccab60318475a6b808bcb1280d61b57d96b1ef3efdb3c598fcb250edcab7e0eefb99c17b690bd2544a3a2d9c4f594f58398a673fef101d24027c08ecf7d429ae2eeb64ed2ef11c421451ba1b6e36637d93a3faab04ddca486becd90cddd990788984c93ef0b8bf31bbaf9b3ed1d1e9465dec30572c7cc1a6a2efca39b3edec36602453d71f43ad5151e6a33a09fe6ce28c6f6e6e9ada5cc89909d6e802ba76951dbda5bfd19b62cc71d791f0af741b0732f1d4c1296ca1fbe2ac3794a6f1627c9d010316fb083efc40eaccaf8a09934751122160672bd21625b1d2824659c63951398e57ea6bba2c3528429df8828b75f88976b91c7d5be51bdb0522751b4631881e9a0c211843c5a5fd1b6f90fc2a9029bc535ce83742454531d1e1c84938817fb4037252502a36e13ee80d817e867aca5d2454df530f312656c38ab1e854046469034708497e0b18b3be10451218d69051b23c0ecf74bf7d15900902f5c7caa77337595ca1c173bb809efc63fe044b2f2a7f0be3998beff1de184b719a835d52be122f7b76987d387be8a6503e7f7eb6de3aced92adb094924934d43e64a779f5138c50eabbb9da93538408c561516290eee1eb2c76105a83550483c63afd60364a3ef4249c1f844ed3ef8889d7121639efebc916737007775e0070fbbe599f596b97ec7acaa754cf37ef9420cd7e9014cae600b4a622ec4baf96da3063f4d9d07325aab7996887408207f9fdba03d92e7a1f6788f2ceaf8b63d6c75c9e49f096d8dde1a0c6bcd02b852040366a709a646bb5822031ea16b62ab30557fae310bc348c793e6e01f8c7e015f5581ad0523622d88d37a64710d2fb5feca244f4ec92149d71e610829bd50d9de6e36c21a6fbe9e071685d9ee3768e0a0ff5e4a0af7edb7716b1f6c615b137532d248b38e4c982586bcf9b2cced4dcd05f1618072b5c8dfdf60f0b98a1e0cdc22ee683475e8e8b86dc9f3b39e4b41ddb76e79211779e7cf081169210f35d204115a43924dd355b328bd2e4bfb9f6f35919e02402095f55bc6516d99325d30e5c0ee51c196dd8156418096ca94526b0d5b3f7308a9aeb2207cd5bad62529c40e1a1b643497f39c7d73ad70ce1de305f95b4e23e201c2c846314589cb3caa65d35a1517b7559f0915d292960da087588bd073919920d6bdb13a55b9074561cb0761bbd75d67c3ec9420f7829b99e4a305ea16dc3ad1ee65fe891543ca7787773b5c9d2a8adeb4ced68e61c3dd698565a6a4eb2ad4a1e6b2d12b375cb4372e29a419ef68914466691269ee2c1c85440378668cca20faa15fd10248bc55774e3d64c256d4bf32ca5ac3746fb969300e72016132b66742cb15da352331d0aa16b1f4bb4a78eaec520b607c4e3aed44b436754e3b0f8e2286d985d7c376ff76f01c48a0326a2c59e6f0129e908a6380c0955170e70260ff5d3500e96de725195c28f4e3c5c249925a0339375c721d4dd9bcf0b163376e78d1272dde8007babacf9a8178cb7eacf29a2830ed0d2f221a78277bef6b3ed3e712f09745e013af0413d2b8d907eaab6e7e8495ac5b97d63a95b1db3aef75c48ff80028846305ca44420e1434eec9df0cf57ffc385827df00d9f3a293155697aa658fd349dffbc7be0c42fb89d50d9d9bc6cc9f4b96d69060ec746b5f1803fee53677870c14de3d01fa52625990be162670cf3943bd198b34fd32fa3c5a61b38136e93344aa74b5a82c284d76532c9c28957c8299d557449f21363fe1f45470928b130359d5b433bd7fbcb9b995962abbfc6c54040893ebee177b63c9a0aceaf371222f0cd9cc813ea63377d18a1c4b55d541cefd55ed727c33d0ec4ca1e5d08de92f080ef8c80b52ebc95fc0208742cf77fb3cd85adb3be0863892e687578caf8d3da48d611ab77580bd2d442b631f7f7a002254204071515c550845eec905412783759e8faf5b1a19d965d14f72179051353189ca531139a5237fff69d0c05010832c90431fc250e61f9646870eaa02ba15a9f5cd2925aad22469b1c2ccb9ac0775b76041cc8645f737fce99c378c2e0540a78b5640f1ad92aa3d8a576bc368adc08bc7e992dda35a071ce487f88788075cc963309650749b81532a1299cc02fb3650ee8ff0b1e820085d7b0aba3719467d9c22b99233a64af58b959f9e785aed4e92702146fab847ca1699af14123564ed428cd9ea037f50615b12287b0ae365a9e1623c9e1e4022281c27323c8c12b29e9ec5936c80981053c45f6817bbad07a7df33e7c9ab25c42a0e735fb521b386b59471eaf61a38400c7d37ca5b08044a3b5328c2ba7f029b22a6d61b25507f995898d406ee187c5d4666a8e296aba53b612ad9db2cc14a21e39faa272751db20400a331953c00f180906c2320825b9fe5677788386e1e6ae3f297143f75927a8975ab524e3ef54afa6b4bb6e7af4c083a968636c95f1bd613d9ee9253b1a59a0609bcd83931832e41090a6c2aa72dd0e45e28af12b0b8d26a18114df8b1e4e3fb122ca2ef9f8c3bb7ddb57952f0dfaba44cfcc2ad947923344614473034bcae8cf0d2f8ceb240c9b26fc7cc9ae51476a4025e126eac5edd7ede955d38655318eac7d82ad1430d3b88121044c486c2ce38780367124e4cbc72b01f74ccdc1cd42c84eeee14e48f8f4d504392e27874b9437e58c3f843334b24369033598da7a50851618816c9c0cf2c88ed0f12acb090cfbff273c27c9f7095e015d4398d03887e0f79fc3d386443c08b0f6726115d4bcd06455a0da0987e596c6ad40721a5788900c95a8d9e80a52ea97fc9e4dc71d72ecc36b21aa888352a4054b6971ca0285d5328a498190d8b986a32015b8b7d6ab0ebb55c58e6e0c8153148cacb7a4d239fbd701387dd0a566551294cd2ec733d80a742dccd526dc43cf25043c2e7b18e2e22655c20cd11233a92d5a17a722704545e4bed2f2b1f1a59a97557fc2941edf56e4b88ddbaf332633f3613b062924bd4753edf0ffb7c9524536da137091b360d56684804a5c0a0b9154dc372562371cdc4be1140e0cb10d50c08d5cdb39e6299fe111ecdac26f035a1d305c3c1c76249e250fbf9592e83c2b7ac8c9540a94b307bf0d7230b8b57c5d7115801a5aa51000138989223be9a0e9f61952872b6b9948273ce0d33136285c78e90aa2571b9b08daa8458b932b2a545e57e86f8fc43b27d846304a19f642ea70c67838fc592c4a1f6f3b35c06856f59995857cbb996b3f4cc647b17708afdbbad39a121e01bda337153af29499cc4798f5b858fb63a7a31243e5299d3bdf79e5f3f53f2012eda7ed8cc11c1d314110c3167b9054066b85a5ec55266ab56a1c9b20a94b159d0c840abfa95acb3c14df87d21a6946ce85cdd07fb68b45035a5a9f8706d0480c0ca04da70feb5dc251466ac9d8cd741e821e2e379834a667d3d4e2bd4c2616819843eff445b47376bb10a4e7263e7a08d088773a8a9267122958abcd933b6e754a06bfeffeff9438f69692232bc580406c7c041365fe736aceda304ebb568696fcd1a7faefd445311c48454c801668926504020782d225e7d513c32e643786c92c8334c62a5d597a84a8b0f9984317c77ba25a046c346cbed94983563bdea7663af7fc5e5ee428397308f886ff8a7cbdc1d97ac4cfe4ae2c271e0d385ec71bb991b2c92837517b77cdffccf56b2d307fa866fb08cf48a396abecd0c0818babdac981565d9b7cd9c338f1d1e345097478d7e23d4daaf292ab7d6fe434783611b6babebc175abaf5fef043bcca6ebf5e342d3e090c666a83a3fc5305c5b9d457fe8a50a452cfe93b37634facc000dc5092572ecf60f9cf48d9bdc2be259f1c86ae2ba99a810fa10391b241e48f110b172c0b4e8d2805295b8f5fa9f1e2ba4fe58fcfa1e99a9cf19f9e397447b7a2a6ec053b78bdd14dd203294366b4b578c8ea310b481e99751939669004c69254ce0e16426cae728e1e4bd6337e336e2a75e91eb2622749461af96f95b90aa42aa99272519c661ecb826b987478be5c0098545e5d242b25a17bd31175c3f77bf9614aa9e608ef9612a34e1358b58d9c76efefedf6113b021b332c27a511bb26107981318fd253039e09831308ca838877260eb3cce3b1c8bd02ad5f1afafd8a42c16c2f88a11b066413489854551cd6808ef4c0ae86d6a76309c7b514af2d2bdbfcf2bfb8e6ab14461e4d7dccf70359b869263c237c99df1d1f6b4ebb5719983be2648e3e3b7a3dec314bab0568b21ea1809376f24f8c0f4c0e05860735d968a6cd26fa2cdc675d4c3c998cd7b2d72ca1a02a1be058f269a8b9d72c4945fa1e7fb5b77fd054791b9e865d966ffc93473576db83784c5c73717bf0d1dc84eb0346448bd87d57c6788c1b46847b0a3af991bff7331aa308e2220217e5624a07751c9abc1004d54d818d5079cdcf55cf7a955e51d9cd1dd1e17027d691712e2b0883619d1328e9cc8b6ec01c4c05a2a2cd0cc669eb6a48b96b9c234bfb283a42b7909be9075608c5ea4dff7a4afe15a3a68dcec4cd95adde15d091e272abef015528d5ebd53d245518ae1dc21b9bd1430ab5c153e848d4b2d7c6dc24d23382afd9ae3c7fd27987e3250ebed59a00b7b939c23ef656063cd44939e8ad21ee0d483796d149ae6053c45e9f2c0363f30e111afea72449f19f543da3f17b5969815f328b4f2082ec0123d342a3e9574770209d3d60ae5c7f30144b032768445a31f897a680d1ed92466f502e61117f124e363a0aada4321112ad368f5be241d186114b1743c5b2a8e616e6d7771ea0e0ee0ed7c6613605a6f0efe2cd4ff4f9413df1149dc163353c939d3fbcf7aa7ab5fbfd99790a2f0c4015451fcc344611acb16e37eb52dffb3e4f3552bf5bb369b69f6c6ef577c49b09c5388b436f6970983a0289b20c582f2d0e19cc6a03e64a8cfd6bc732ee3663c33ea54d197a1580ba82017510a5fb70d108bd3b90bd49032567a05fb2d9107f2e3d9d61e3107faa6a1e9bc4b54cfd8c109fa7dfff862c5dc5b59e11431b0396cfbc946d4d0a7eec1302812a104719af075502c3ce8c02e99cd25688683b2cbd783cdfd05dc8a0b67f933da70300b8c1025c94c37cceefdcee1390c8a25f697a1b478800c8223ddaef336668fae20c6694ade8d770f7cadabf2f1eefe6236ca5a4f049c2bfe2bc0c234b109fa16c0724089bfab15d4d9a210b8be6cd74859f707aadc8b44bc9edf7c41660eb9c874ac16759ea57970c32ab112a65d0cca6a02773be8a50722e92c685e421a8f1d83b264784d8cb9ee9d38569b56097ee4e65f3d3d6755e8d67c47d1c6f92f3eed68c8289af1d32fc5c55a858022600167a8a0982533f702825208e875fc383e1a3f290b6fc9b8a283bff48f07d47581e831db28a40b3eb1faa15bcf14c37df4802002fcbacbc005083fe9b061cd024400830213172e5487d6f351420d8a4f859b32c766af0db2fa46d3d23344311a2fa191ddd23c106091fcfff496dc5792133995a4494678748f6fa29f1ec8bdfd555aa15cb834f9274c24d117bb71a8ceb871e31a28318f62760f94e0d530f374da6ca8cfb9f8a16cab70f04dd505e696455559cb7461f3876b3b8324336204aab660be7be5e059f53e51289f90b93848161eb4a7feed4c8e4f9e9fee94488e3390d491aa5f3b3aff41d9132863552758ecc84958c57a69e5dd9aa1bcab414c83cfe4a1b794f013178c3c17f394bebdbe99f73c0b5d1d118afe3b513d3a4e9700843ede4cc74a8a010c0a326662f53abf6a0ebc3edc244934e0146c1713da735945e3dc2f0582b4088787b74b8579725d3b78cf1b76963782d1e41555d4204428a82a8c4ed6597220e408a9b9fdcf797d7bbbd8671c01cfcefe504af8fe0b8b9f1d14bd72c321ff913f95be3f51cab3d0e66f32b3822edc2247acebc7e4156f79b8ecb0244526af1a9e3b65d0e84c52303ac6f89fb812a2daaaa1a665fb7e82fea1f15c34e7c005dca8a6fbd7269e12dc88ef71ab2be0c4582022ed9af7c50b681d8e5b57e92155945470ff15a13ab566f217f6c44531cacf1452b846807421d1a78feb7a2c49742020a61724e2a9da2a0e67943650f300992be5decb11283578664cfa2f1671ab052b386ee16a2ff042c19f23ace3e2c592e912f4c34e2c69739d64ff8889260b7b58c8233d3c648b783b5f4eec584e6d830ca45a679d776627bebebbf8c28ac71ad03c64c0bf961929d26c28b4fdf6cd1e214b31f1524d0d6bd974a596fadda7ce3b0e01af508ae921c2f825ef7e8eb61676d4a862e53d6e46861b9328e290e685247513899578db486b7ca6beae7d02c8925b7030d4c6125066a19d0195f6882797b40daf04be4f2017ec8433eac4ad286532ba4f276ed9d32fafd7b79cc1f5f6a2720da917f01d1b287aaafa429065c1b583b1018ba1ee19090a7c1f1185247142f3019f427564742bfb53fc682395e5f8d95b0878e3efd239ab66f48e5483448c6c5c51ac75a9978c202556c47bff1e6625958bede753318abaa51f565e7a6898f63337ea6f5fd97f985ad771b3f96bb0c3cec6e3a9a87388e57022ad6aadae8b6d71b6b1af0833272df93773f96b4b2357471a76a8d623064577ea80d6d9fae34359fdda30961447b987a466f0ba01997844c3c678f404beed1810c9c6284bdc65a10d792eecaaef766f353a8a911369b3ce0f546678ada722eef730759e4318bbca4d810b849442924750d85a0cd2479bdfcb57cd0baf04952d8f93d8dc1b940d9fc8a627b96ceefde18fa7bd756ceff7e180e7860f6d5e397ccebbc982a09cc82c7b5a05d8088279e625896608c5c84bd30e7ecbc74204d63df1b794a72a00295b0d2654cf5dc20e97a9759fad8f74dcfe28c18d1144f7446318ec92192eb626dab4697a4573abb3552e4b15be75ae6cf4512a39ff39b3a94fb8a0e0778adad4657002a3b819d3990c3b22e5a922fb43f26d3144abab8d6a360848a7d5aaef6d74e984c9f02f425d7159984992a70543d56c7bbb9b42f415ee59147f66aabd50017ee0b3fbeed3a2b8fb234e845c77e275c9bd86152a7b64984efca4d3d6dea8a7ec291ef753849d2229fb92f5dea916d788d4f4b30774593db4193ba2af0a50fa5e456a9b6462f76e7d72846d3b8b6dc7ac3b7dfd18dd055bbe8ba106a2be04043909ef58c20d0f4518d23ffc240f5c05429b2f96825fdc1232c9ab136760e58092e340e1233e0501fd54dfb8aaad9447539a689a460c2896f871d7469919cc88c64291def1bf28e7becd538f1e4e2fdad1a313adf5aa9b7035fbf351c9523defa021517aa5e00f75c69323676dd73c7930bcd83663c7530fe7d47b8ae648cc2dbade91a1dbf08a649ba05130e278c0da65716f55b7bbf12dcd53b26d56b3f3b2b87dfb50d0b3d8311eaaad7c751c6cd7d9487d50d5413ea113f7d3847dd29054b35f468717a8d8acd8f03e32c66c3607201b4af2e89fa638560c5a4304509d1f79348037c23a929a84e28f911aa63281d4f2479dbfe6408ec6bc244c4059576a4c38b8dca819001a1f7d06805fdba9a6db8f1632342d8f7a5167454a65a65211af6278b3af411a4a739c26324250a03a0c3240411934b4b0f4a4c92acde6c7936f8c505c56b03ec6f960e411cfd61484e056512587bec0155307c47904342e89752c67f3d5cebe96f7a6380bc750e6abc7e0522a0a34ffbca6482b89c4cbb97cf524eacb519084f027d58a619bd4d320234c7adeccb1352c50beedc871d21800c370e3ddee0662289c0bcf24bc8723684677673f489e2821cb72a17b37d670d23888bb5afd5d57fde342aa010af39b888d8f9e0b4f63548cd911c686e923585f4feadfcbf2f374e8424e58b68090fe52207d9c82378e2187d854af2480dddec1f33b0db5bb91d30356450b00c48ca0346a1e2d9d8e60d79d11a7089e675b9eccb8a3c0a229cfeaa1ae79fe0f030e8e4c9016fdc4c6c3984a5b44c1ae2e080ab6e67baa53aebbc82bbb28f9e95459b0adf2c17c899bcfcb52ad48986cd866b045cefdde91c286580587827f3ae4d344eb6e0e189a59e0e62c7f5fc3b5aac2d298c833b7b838ca7796f64a5b61b7dc22e5dfe05d7a2311d7c257621d3e8b1684dd0ab7491d0b5b1cf363f9842d8e4ddebe1b981dd27491dce61e4fb9a74f496eed9d2451432993bc3a61297588280ca0d31765f204a503a02a791b5c03c42328555f1bd24ebe77fa2a88ccd63863d09e200a1b42a4a7d53ba55b9ff05c0e7583812f4f80e85670c5056dfed88aa7de6e2de7b7e4bc575e8a925180c5a9c1d8a3e51b836ac87b1ef15fbe08a4ca6bc520c69a31dedbdf3ad244720d957f959ce607521dfc0a8583c9d5f541eacda6630cdb42d6d9ea8584f1c411eff932bb963cd585dbbbb1ca779a63eff76c77bc5dc193cc3252ede948474925645965c18c6d6f763ccd1dcac17d47da49fbf5e272661a9ed51f4d8f649c271965475b351840fa1a0948284dde8677607e217833422153cb2533bfa143a37f6bbe8740752bed9d34d09b12f4c52b4ea25a138ebce0e8f7e7c415ead673c92bb093a44f921bfb2eab1666725a3b3895b7196be22632f51b172c00d544610a4bee255d92257765c2037d2428a62d492a4d3c04223c98a6a69d38379d2ea4f06a7a31402d159e6c6a386a152abc9a20ba6bf4e2f82b76f92250f358539d879ca21e2cd80a49bb6e3bbe1bdc65c30f02adbf1b9071b14054fedcd2e2351d5ae5f4188ff88cd3ade811b84d34f39876a2b76f0ce7adbf63f42eb57c65139817dacfe55bdda391e56d9810706676ebbb8bb1a93bfffe7e953c277f016acd3dd56dbc985d26d0b0c03d5403d739a13df97712af65751ba92a834002e9c01f46196d2e7bf0c283b39d61e453cb5eac1823dddbc039941118a48552f3876e65fc9ada2332ba820629704a169fcc793d3128cf89f008d273060521c42a0420b07f40709ed6c1686f130f6a8240a7f977a81977742918f37a9b6ed6e64e20f3785241139a30d79308c54a7e307fc9f513167ed190d7dde6099e3f64d8b3f44e3942430984c549cc6576e259488ad13547cc0318fd4b8aa718fa7781265f957554f844a8f93a16a58d2344d67c153974f5d9702f1a061e1c06ea0012b92a2531b2fb929a9b5cc882a732a6fa0274730a7a5a79fd79fb57b5c0869f2ded315817b5811c598faad0967af80fa142fa05e04e77d2e3544c4d1577438f0cdc9e6af51aeef47da3d04fdebf293b17e8366f0d022651e873e1dae1acd57148b96f58a6f224bcb57408c43e577588cb4138853ebae4a52e36f065ae98adad92024e694adf864557e4a9ac6dcab59f8a42332bbd3b7dcc6da1f1221fe9713b1e0af5937333cdaafad260a5eaf522872043bed4cc592b1b66238f245195a4138ce7c51b3b7cca391559f43524c49a0a25c82f34fbe7dd720016723bcace64b64be44ea314a6296b23010ddd00bf6ca8e3d8d8bf79722262f068a277102a5d6e1e5b0afb876b4954d49911e9f1e977766f2eafa3bf9f336245900e029dccc888e08ad9a1065ab8130ff07326d1ec9d41a032a79b6b4779fe7ef609cacc9c77e1f4b30df76e5cf8e7820870e7673012ce890ba9fd9f8d15db938589fed3eb3f721fc6c092e7841ab064a4e0b1795ab491f0affee8fc85069b836b919f7408c8cb4fa53a6ce812409bbb9d2d72b86b888a63c34571ee2a8ad30a1382f126974f934ddf4a46672906c7943bcb1c5a68435090087d1de8bf7f5fd036ed644e3d7eae76996c625711c1ddc459d8873869bd15a66b284ba6bdfd905b7536d9550c5e8c50762c7611caa44095cee670a0d00e59402d26ddd9dcf4c6abe92ec564197fe8be4ef1263c44855d083b3c7c9ef57ee96b5dff2ac4f538c887e103229bbede3b5d8576c4ae6fa4060e3e711bcded92708895644ce6542132f5bbb3a8c2df009559aff934307a72193f510c68ccc9d8480df26b3b32ef02587f8add8533f4d8c94e40638ed18b3523d50aa5b9e5ce203ea4470a8410e0859b01d63bbe8a29d29fb96008c0c45fa5517901b37f590485f87c35d7b6b84cb5630d0ce1601b0c2162361fc0ecee9c5720fd53be7ef53c66c8ad8682002092c9ea14e7b66da8dbff4571c3c7c86995c75f71066b5918ae9b8ed44c11a7cc80d384688fe9b385ffccb40e72ca8aeaee124dc05425258d8ae933131fa4d4125ad12ce08f7e31e92d69fccbc64ccf12ca75b64ad62e2ea7bf23e9bfe23ee243be9c6286884d360f2db3d6d2f6dd4218a6711b89256c716ba0cf3515612582c10e5f1e49746b983c7befc6c97f4b6e7bfdaef35f39b65d8010e70590cfbc926fc0323b544caa799088d89b31ed547c2aac4ed50bd8a812bbef0bf0fd50ce1971e9c222e248ae9416fc80816b2a4500b6b0fe2c496173d3ec2fbe20c878c3afe9c50893480689ab4d22a08a412b0741fb41bd515f6cdbea8a52329969d07294db78f5104fb19f86b18e84d02e90d001a2131ae474d781e32b1128162e77a95af80a6c5f33e290a2e628daa28eb2309e03a8ff564a8ac56da96f2860c1a87039962dd3c08bc3f7c8218e96fe821e45d99e50237d6e510f586ae88c63dc9238797257e3dc8efd5c8849f6b698c2b1cf179522bd486072dcf08b31ac45a9c800d904204b2fa8741b405642050a4638329469993f2bcf6b6f3ef36d9bc7ea3d4e3104e386a0aa83b7e6d72e6489c6e2568e8a4a5ace4d0c6579f76181c2e5180eba5b803d0bcafe4864133d7923ea1d6bd61c362c30afd796aba1a7240b8740542697a82a5cce3f11b49eaef42ffcc2b4677ce1e77e52ad38e5c118217b0d51831e0d9af55a76608633005711481b29dacdd313d455d6305cdc5caca52107ab2eb5c14e454de90c73bed0815d89ebe8a9d4938f3043b71b80627cda375f7dddc5062680acd532d14a5b6eceaf1492df3cb13ca8875a7fa03b88c3f819f49dd243430aac004d996638b5574d990dddd42830399f5d967767b69cdf3dc9551af9c1539dd548c42927d4118172e4718073a2a89244bde208499258d625eb59f961760087b049d120fe1250c91b284e9a1e60b6ccd4469cfe61d029a635b94d88d1c225edae1d283efba1673bcbb5a1fb8c862fe2be332748461839a857408dd508aaf8031fbb1136b3e8646d59928f875d9db03da5d8d51d07b6d8805d12d27f2606a912763134255424a39064b0db1825c52aa2118d4f9f8e56543f14b2b98d44de6cef25631b1ba7f6314fb423417c75424b560318216c24cbfba804a70b2d5c8c490265b2945e685957109bc7a8b1d2d962b9deb419a815cdbab0a1a5b24afba64a2044ee927ab21b1e72973543d3fa2c4f3bd138758b20ea4856695b68741435e95c842fe387df49618c202bf6ba7a393962b773c76e5e5d0d0284e87c5f2e27ebf8a854d07624881ec64b2a36277b66ac11900bbcd9d36c4f5d582006ce36dd8f1f353880c2bc64927825bee1086e45aea56c3b29c74c017828081c23b02276b95250fd71f62d1ddb55e4a728c3668e5f68db8fbe6046ae337c489643ac677c14e10b3cf74b06244936a4a28ba41ef9163062f0184be45b5ccc413a50a264ce64fda5e7374191e69f61b5318748885d00139ee64dc64ab8b514f86285278dcb30d7dae2c5f5af25e0d194029e001ee8f07d1b736065479d18b98b5a965c6c4c884e5cb86eac808d1772022399ee9cbb8208aea523c54f660735f34a00cf96280add0e7832fe9efd20826dffb217ae67961b78f7a9299cafcad3d848b382b6ff2531030b654c8d53ef27a054f68921113976edb34ad43e61d7a26742d3e73351ca1ce782e3c4e7fa6703890b169ec12df44112909120909a073c6311bc750d9a01f2c59c0e6c72d5c55e641e27a39450a424a70e7717c7cc718244b2023d48d024eaee388bc3986f963a20e1c09ace1fd43de426a8e9b9a1434914f5710d726c04a1a9c80135c8bac5f2d1f1f6fdc2a8709ec7481c021314924d5044ef272b13934caac2e63c580bd8b6e68b78f2622e92905a724dfcf1077d31487be192a36f0f3e6fb64a4c50db4d892c1bc69b4d0f107d9401cc95232d51e41db245b1244b1219508d5b0353c0cc2deafffa0dcd80c578dbee7bc4553b58cb6ec9537232094f3b9e7ee46b735c3ec0f4c4161c0186a3e7685e075e87944751242a6fc41738f873db8bfcb7d276f7bb3c32f3bb5bbf160fcf163bd0c17dbf6be0b90b014de6a80b0a6758c7ae71f2fca6c882fd736d3419d979b59b8fc70ed7551e3bb98c679877bd98b6eb3860f2fd4585e4fb75ee547ac6886620f88a7b0ada7ef79876c48370b5f605c266bf1f35182cdeb9942c5310b14813a6dcfbe34a2ba844a9116a1590cfc14b1026240d87257eb8fb98e2b1745802eea251d9610e55b5f8adc9a125578178a35e15f2c712ed3f2039a2dca0c33eb2e60da222860970b03b1c670dc047932b780b8e1fc7138ea2031dc9d1e512dcfc0cced812da6e65d1f266f3e2911129630c509bb1b9d748660d324e2f35f0e406b81939fa0933093bd939a7f916908b95ec614fed874389c6e85cc3a5621d66e7dfa015782c8f8be1e3b9410f5a15177dcff744082dd76525f0f6d9412dfa90ee079bdff087721fe40840f2b1198f76d79f3f64a72a72c81739a05b9573e663681fd7e74c819332a194968bf30a25f1c83c75b0fcafdcaeaef6d4f771c0f0aca75e632e730686b21c28949959ae49107ebd718e3433b70447de119c3ce33a7208f86bd39601d6388f07009efd28ea094b80558d518f3806d83e905caceb67cdb30c8e40fb828d8d2510a5387bed2917fd0bab58165d0ad845f643e092cb47c17b572d4716985609c97740dbbe5ee5f37108c4033ffe7a2469320df0acae6e9d02d4eed1509bceb818e64f14615e7d8fc6fd3ec5600fde166a967a8a33df4f07acfc5e7e14ee785946d66a4ee848fcbc4c70b1a419fc83c8e36891f54eac65641cdf1352adce4f4e83dd455914c3939e1258b05a38f44bd87bf96f5972a3adc9d7cfe59f11e4c69ee3f56156bd4e44c689b7d79d945f125ccb49a74392d0981e2a89a10bbf9ae9aaf7695a90a5f93ed96e99b2f33c847a7042eabdcc834aff35e6fb0eb3ecfa29a00a7ed10be520ae45914346dcd09de9378cbd64ccac8b3508119dfdddfb74241385c41bb31738a4920f3d98534a881671988d2351019608e958b913720c9043326020b98f3eebc2215242c7884c1e4fefe2e98698dc43f89e2cf402db2e71b682f047fe2fdcbc093628561a4813b828211ff7c78c36890006a35124601bcae7dc80e003d95fcfecbb6a776d3843f978008bc2e19d76aebcdfa52c051e31dbf0283dfecd60f274063d7d6a59251a663318d551ae674498a37199c91dbf4d6e14b5d4b14cefd31ee61fcfe3871329f6fd7457f31234aac21698b1a5ad70b8770e1728e9a04f7aa4366d7f64610929d4f6efe71c186556cd424a4946a537c2aa7507747baba11826c3757260ad5bd0a5e886a402a95623e4224162d17df443b0e2c061b98d1769cfee06e92b7ea6fb1c2031a126a4af7d100d1ed0ea8b892ffa3d4c8c8e86e26ad39397169bb0a1a4a3a8586dccff7b44c4e04e3aa9d8845bedda14ac80b0eabdb6798b647de246e0895e00b41e96ed479a80001904fa9b38893c530f7216333fe7f135746ea3193f7e1e7f78e1df9624fdbfae3e975e6e445b0e216c2492fe78f021d65ceb379a3a7cc81dd49d383602eaf32216112a45c8535a4a0ae39a9f9cf4a4935d403cfffe877aef7d9cf0f35db5f486ffe0344044bf3ccc66c3df22cb6982208a2602cfb371e316d0e8b33937cd6fed0129448c70b6b39a237d9f3ca8417ea835c9dbf0fe7a3f21b87f62d556fbd34763053b74d997091949dfb533eaa7a0bf4eee4ba94cba5ea64f51f2b751cff0373d4b2cc093a5836273c90c514e575666f4a76938555694063574404d4a32370a8d44958b990d9427563a432083dd0861348f0f18a126f3359a579f159e26248b12b39c0d5366cfbb8e3b5297399cc65761b65c4c699a1afb01e027be091dc15b39d2358be286e632e16da5e8d13a923d4d5d3d21c27928bcef39a6898043bc5b0361450834eaa5db21615f728dd2204269ff4edcdbe23802ef2f3c4e80699c0a12891e2203518113808070d88ac04118c4b58f856bd7d45a6296100f224e0634d1ca7ff5fd7f3c7987b0377fd5e4a7e9522a5a22e0797a9ec35b9178a0d3d31c282f04e27b41f53f494afd603c8164a7137fc8a31ce1a112afc2c74e58f32d770c5a9f9da02933e98de129f1b7e6897be34c4229b94b3e1d9ea392731c15f62d58e82de08043dfe1c1f18a858aca1a2555044a93fe227a917c6a61daa7c71095bb7089a333ad1c8b4d35dcaaee00dd54c78f87391c002387e32a559a75949860decf2c5ef129e0947fab33536b5b9331da6d1cf34e03b5e95f3938880c0b632649816309b69410365708e0860e0badf388b29227a056a00a4b9082f15f8e3193f1a9c8751875ec6d63a52d2549107d87f48d40369747aac38684fe168ff91945615515513bedc5beb8b77b537d2ca150edd150d1122ad96cd492d1a4c8e6cc789c72736096fb7c6d6562f370f540c2531eae4a3752ccd15b6920e895843a648f5e63dfb496fbcb0c8760919a1f622ed0bedc30f6848aa49606f2c6258feab6f8b5deb2fd7efa474a03965699e1572a169e7847a94cf6656e919a7963e82196a70ca5c06c594a83d9194b5d446e48d5b381a59ec0a8b61370529bb4a9629d978d89b333314fd321ad77bb10fccd0266d1de877d7f3d00d9c4cfcf979667b26e5cd0a34916160ce94e636194103f752912579c16a8241828a7c8bed6363dec6de76fc138591acf78b37dfcf4d03f8bd732f46dac79abdb40e14b6ff0ab9b83eb0a40785188f106a3bae9e51b64b0f4de08043a92a1236cb63ec620f67741e8675106a0842afe13f0f6f4892c6d79fd5715175910dd5406f0b88f7d32b8855cafe537909d482f4162883365216d57e4fc8819657ca7562c0f19668fc51ab40b00a06c41d08c499db54c4a6c498a8396da1f2e7f9fa53aec9087e38dd919cb8696c1b5f0f356cef6a60ca7b1ff239759a219b870efcd637f9eb858b59f3a08bc7bd9d60014e29cb4ba2447116a6808722a44f7c710defe8820998fe7221843a3b28341333e0b53471032416ced1f2101ccfab711dac2ff85eb3dff1293b0090acc9182a6ddf56b167438fb6ee58bb0059e21cbd7d7aab260d9540ad38efe68472d2e9408b364d20d308f0ad7a66e4fb3ab648984e104fca9509a9dd2b1d4725a1c0add30c9e85bff2326bb6b1f66891add34005f9f346a154c962262f6930fbe0553ed718cde12166fbebf858e89a9f0e21b533ca46ad32dd4f7564670e7727ac7236cb932c09074fa628461bd44c4aa2e0f40cc080227ed12eed308f239fdf488b74e6b82eb003e6d34bb6725275d45688ceb1f0d429d8db5ff6d4458fb303b9f1c55f0d8306c09d5abe65a2c705622357c29155db0844997e589596a9252c62663f5c414a43996d04d049ae1f2a0870f723d3f0e94c6ec4cdb235d77993f3d338a56f2bca24500482cf58b0ca480451cfa37c9b8d68ae328b4de47443ca15c2b3f405b58c278086c9c3742f2f6f8c17ed9e19147e2122069416a6bc51d3e2e2bdf1bb69633249608b7c1611d91466338ae58b1f0ccfecfabddf6cc68bec3a51f1cabd9db46113cfc05c2afa1ea703b482ca8c86af3605f5d21e648665afb38b00e229062acee960f9aae7f8d44d339d13ae1c0f6efbda41161c5f9140bc8a6fa161566f0fcd62d830ffcb7d7d3209d24d67a8a150c508233837aadd182f85950a592164d1efb9910465db4ec8935f066c00e14774366c242e42f42975aa7883f5430a35caa39d28683f877d28e9ddb220c59c2747d2e74dfcb067d764ab7725d4380b0a6e90f589e2258460804a2290b72212fb9f4a46f6ec44fb6736762b20ebf952232bac44888eae93bee7b26f60f6bd75955a19579653d253439a8c3e8db0f590a30578a32cfe11c5b4701b9d5cb15a31596f04814d2302612461d112841e39866c26adedd76ca0ad4fead06bab1ba1e269bdb5b3a4d0db663fb5d5778d4eeb2e1fe41419cd60a42f4fa81a591a4e10532ebe33a4e0f77d130b158370a1bd6122b547cb71ac42d64924ed975ca46f574130d75a864e544d6226ad638b9d584f1c75b54b968e210b3a981b734ff0a348ba8b3a65ceddf83571e96a1ce2a6c0f534f786bf3a57b4e88af2dc2c48045a9f502ba063b1bcfbaba421ad4b24f7e711f980faabeb15fb18b9bc7e1d3e9b8106441f72dcff752f9bc718a04fe9a9ef95a6999c3f171c279da19b04c2eb86721d5cb89e15ce206fb540a7d24a13a07b96a320b041e6d36d64545446034c0cdd5e68796e72f77f5ed20a1465e50bd837e95ca36cf714ab4842e81810aa19a87316e357503dd2dbbee4073782d3ac7b05b1da4bbac43fe5270e6e92afdca98ca62644e8f8d060a14d57823b5d57ab9105526c8b20ac5238b9d8967fa27600c5ef37b4accaf58ed06de242d2587381ee00472397a300314a9d9a098a38dae7544f4546a2facedc2252683fc9ec7053ac741d805a4bfa718d8dfb3bec7ab742162e1f46f15848b274144837c091139b66f69c95b6ce7c7544e250b89d574d05fb0abe45fc4ce8aea7af462668c0b5fefd06028e46a6fd031544abb88992afdbb538485c221ece3ff68fd1d7b2d1b893b188f2065fa9cc1f956020fb141f34315253aad789936781b4f015eedda81fc1d07f47b26a0ff4b85caee6e0e01e9f9836a87e7cb83539d15a2d86900bd40be6349106fe62c7289aa07b432da422c36edef195d8084a3194367a1c1b6a15e1edf0026fd1ca163f38c4611993ac9f663ba98dea544d74eeb4e2b48e6103b0724f4c4964b66bbb71c805b0e190338e0a4fe00e4f0e9b997254203a203e5790b5015d5ab385e6449d31ba0c42e98b04d76269235d1c4979715117598ba37d46b169ce61a770b17be26881820aff4f5b692796a57f14b3e8e5b201fa1708c300309cb6f9e9a89d3390d3a94b7df62d60575d8c044dc67b2b25d861af795ce15be826d1490c9010347d2a403ea492a15bb6a71423ab958cd43fcbab75dc42fabd3183f219a8937b251e952a4bfd0e55d01429587e4281609cc55295efcd67b2dd176e2341538fb7d13dbcc0bfb1f9bff0b8fa0ab876cf96b6849d3948581047d698a6862c9bdff8f1ce2081f2b80a648a1d3bb0f6bf831a9d7981e5eac24f8c9133183de98208ec136a52910723fa2bae34e75502be344371c76f154afdea2970428042fa7a6d398e73221cc437c4c88de607eaab84f67ca1f96eeecefbbad9684c01001031102fad1162ef374499962d9185ba61b821c76ffe5899e60097991639e2a551a1df986e2dc659af309d854118bed9ff748fd7276afc05c91d2bb3348fba98378688c2be00e9df314f01243a55585685f2ca1f0febcaee6ddd7cb47b94ce576ccc295a2234dc95b3bd0083b07eecae3206c277bc7c565f2716041f2747b4c81ca99469acaf51a330aa77993e2621b1d76ecd55bcc6720f973385389d0232bd45e3f23684d37dc63ccbeed0cfeb1a25702457fd907f74b159cac873c280a5fbee3c6fe5796071c88690a711c59fc032750ce351b1777424fd4345c8894a5927909705732b0ef1aa1a6739cb248a8e2a78c9432ad2b203ae83ff21c50b88d951c183b9b271dbf8b78bfdd76e1199de45a7fae426d10af9fb6455de5fa242e79f87046e812380996cc077505416774eed9710c005f7c0072e1e32165f90102956f7075a440c116f1918d21f523c52de14242c574b0f26ea6cb2062b024e051cdaf111f0b732da960bcb774b19562c5f76c2a78e485820026af99c70e6ace9171d45d97fe78af9e7916a4814d946f83a20763d6437ddc09f84e8c2791235d49cb030fe96315f563bd520670dbc2f64ce22758ac35d77e5fa1687357caf868e4839d8184602d73924a39548b6dc73f2f349f213b410df2363797708f526231c10420bb36582078fe6327f66f17d5356b1626b59b8f1dc5e7302ee462d028651cf1eefe2577e1dd85f7c798552189b2717f330bc8b56612362f27b40192c9947618d281abf2efa11980e1190ee78a5fcf85d3ec07e73bdb0e35fd641957e5131cd6f68c26052d7a47ab7fa28cafe174800dd0f96187bf5ffe974575c653ebac8b0929d06226b66797dd9ae4be51d1fb314550620041a9cd2d611e5e283e959e1d80c51d0d5ef1cc2d2fad7976a693e480b615dc6dd22127ec80e4b3271af5c840925a6120a7f4e2ecca86f188295726f7cdac8cd202f9f19a1d033dcaa6887f53b36bce41e931cc600eea9d572b2271d7643d4473b2caacd0568be6fd805a5aa43a1ff9cb92f291119318fa3fb2bbd519201fd6273578763193445e313a7c5a0b76a1d14d41e0d0a3080ccd3f894f157f21d00e157ef13b48f2a44dc1018e49bbc5599387e4ef37b650bac238a6f0acc523d27901c428e14f19ca18040a13160ddc4cdb8e55c6cae8ebe2295e9a13431972db7183dcc2f3ae4622a773d4d0a08713f37cf67f496dfd7658da93151a3a05af497b5d8fd504378149a23fc5967b8f82cb592266fb80aefe70d5a577230f374a4613482fdf6ec7227898712c5685c1db7559e4e1dd7dd9d07933f3ad6184f5389166d9c98f2706376e27caa5c5b15d8b47f48eeaf55965b51a3e1173d8bfb6101d80e8ded0414d811a48984011e8f76704506201823ea123ae1bb1408c0a5ce2fa1683881bbd4e244d4c297b73a0bb2c1a8cabdb894ae88851d9fee238316c10e6eda222580c740eaf0694e8c9d6aae1e55d6099373b1d130080569006afdd248863c4a92829dd843a6d6995997a93773d9d6f026e1f55686b09f3ea8c501f148faa7ef08175d77e16a7c5e108c3c79f2daa927510c367333b67f8bbfee258096bc55b7d32242849b6a030692d14dbfbc68ecdef25fac753f77d60f9ec916521bd6097f0264f8389e8ecf5c87bf74bcf12ddf8841726b463c5dccc1e8b42a6b5e90273eeacaed4cdf977c784d86338cfbbda2b9a7e9ac94a82c12f149d13d618c07009d8255a0ae1a8f570a62a13edb36113f66122f7568f29377ce0352a2c8a80f1c4e26737498dddedf404171f1c34ee8df54e23d77cf08d40184037fa26c73353b3be324822bbf111ac5e5abbe74941328146fb3c1c0a1d4bc20ed034c589037515ad974db2c54fb497a8326d3379c9f6246980c192ce19310452a638ede56b2610b052010147f472e2ac8d45881a411aa222007a7f4e71b7a3c2a30bf0d7de0110b13c7f3b5b071221461d603058042d4edc7fde8d3f952456b6dc15558bcfede06a20d806e6f19c98906c633f4cf8c226a82cb24c6fabcd8eb3428dfc415935416c0b63410c3231429e0bf2ee24809862878a701953289a39c92ccd107f07da85db714e767cbda7bb2156cbd6bc0a69763da824bd6841bf792a61d2d83acd0aa06b1193b840c02463614bcccede387eefb17bff2b95878fc0e1fc3f97f4e5ee81688c174abbbf7b6732126c3c02796a8855f2c981aec8c37880dceff6906809314c4b729b3d6f6210e474be3230684277994e3125a2e71277031c147923debbda03fed1f380807a8dba9c6dbc278750477bc1ad061fd8cc4499a639e19fac2f97c15ea91ace2aa722f464dca57183bddd212d2dea1f79b7d764056b84620328a0f42f5bc624d7a8ae824e7241e538f8562ef8219f0d59aa7960c9df5acd3413962ad133fb9f0e240e407baf72da7ba35fef7c6c6f886d6df94e6e54d2d0a5e7844368026e7b88bf9a547f5f39e0a2c82aa72182d47e7c89afed299e7cb4d233b9e8a2bf75d58a15ee4f62295b96e9491de4f8dacb391a33002d4ee87b5c18940e85621029dc71ff58530e71d43c0755a9de6279e9ab27d85bfcc42af14c207661d8bc6e6cf0061fc91c238b3a43c38d9c06a5e53e6c7b55441d725f0f28bdfa11840e3d541d55c1c599ab25592605bf91abd2022d8a4e6b30b079f57e728008f55b19c30f2355bde8a156dba1be80d9b783450c54b59161bfc6e5d8756e20a66989a6e4beabdefcbdbef9ae9d36efe16d0867e98ff70daabd9bf7c33e4469ffda898987c2269090141e57bf8c357887d144b51eec4ca3cc7a97599119dc63066a8227efc14461249c04484d1fd56be8ab896503a3b9eb56dbbf1a20ba36c57d8cf74b1cb994a8d958e6492871f051ccff4ab1dfa0032bc94cb6618b958055e5f55b8b4c72040fd5bd919b0c7b1e65335509cd9840609b8e56c694b24f4f8061872f788c58d8b49f9f23d04a164aa8c741ae3db3ff0202e6e4dd7ff25ac18ee5c3a68afcd88cf420f3c900f751c547cb730aa2b6217517c66a8baa657af540aa413b445f4273dc089c906b50c3a5b0f6bd7ab0ae6b91f9fd9d9e5cdebf21935e241e11c1856e86282e84b56822b910640154382b14b8d28e141f8b3749cc63e5b64663feb72c2cc99ee628fcd871670dafdb6d5f3358099ce90cfaa88bb3f44be90688a7988e6f91c743f2505792435de6160b979fca7df53d032d23e2d08cf98b31e39a086934b98448ba577baf801c84de2349d3086928f78973d7a59deee2de7d0c9d1020bc735d018e4dfe66cfe85ead10087614c643975eaacdb0b781efca5d0cc7707664b0af9e6213d8823adc916a3511bb45d8b6e71c315bfe51b14d7085bada2c07d12cc8ec43d2d41364f11f0e32405af98bd78da01d0daa0e549087a7c98d823eaa590bc4b5dc3e8b248efff002b836773f15773db4259e64a4f946efe7bda3fbd5a51011791e5d5f09fd66e49c1b4ec7094a03c49d0783654baf3ee980a7de75d83605f521c1d3c4764a0f9d05488f02d22b470f20a0eb0e60d74d20a1c2fc5d30c9b58a4cea0a2ca4c076af868067360996fa8e1d88bc6bc23470abd82e7b0e2a6a7fb535b30fd7d512fb3cbc1321eff16d75620610ddd22094f15ce6c0714647fd95e4abfad02dff66c47570ebb2684d969a3e32bafc7f3a9d43187d41d53808bc124c9a1402fbb8a714920aafb966962d458840de3cb96be7d75bfa74a9597148ab3eec17cd3cd8ed9ef1c452b2d7a21af3f14c9444f5a5896621e4e1c922e02eb0a1fc0b799a3d001e72e3cef939ad25ce51d0b741eb4ca86e506db7acb0631d46213036a3b67579ff2edc44594131a9e409214a1ce3f9b7f5e5a0d8663ca3ef696e13a93120e1071c6a209b41ba4cf9cd340aff12c7f5b109d0dfa81cd958c5b95dc365dc20f05a2dbb6ff26c2a025a6a463e35c192ee2aa93752a5b0866f368fae1e4cdc255e2500d3bb41b63416e181b2d957526f4ea7bd2228cdc83004f2597e8555a730b2587edb29917489ae094fee01ea1b3f996b1ab637fcdc0d6f5a47fffaef4aa487d11f8308e9935d752570395c356768d6f5d5cdd18a8fa52c13054b0e23e7350a16bf3c11fa885597b0250e0b1577a01cfe5ff44ffbdcb2bfc3a734ed65a2fbf3d6ef524930d7fc9542b7ef3d63e47183acac8082a059880e2ea2416509f4df0d58a45c9b538c03dc76eae3e3332d8f75eb148924135be88925cc06b0b1a6ccf09a3cee04ca5bfb60628f16306a9d08294ca637894258737fbd2d8486e4c5d6a98e6fb9264426f1d81ed14449e73f989b917efb03681dbfc39f022758929cc3f933079a80e0fc208366fad0888561e16c748840cef92a152aa4ae01e2166288d18d12ddcbd12c8ca5cdce933a424a3913da2e1971fc563a19dd1713d7c8d7035c13ef523195d0fe5f2a90db3287504b7794e1597385386bba9163f2e5514d04b8f9b8c8ed47944266a575918256816e9f14605af53513039081a3255d376105df853f38f49daced754559b6f40856e3c7c32976568e1304219189a6c25009f1385bbb5b07bb23dd2dfb4cc8ceac8f11f5d794e168266cf336a8a8d8485b7589a1ddafc51c7b0537b264e087bf74ebf45159b91e9793f69234f9c155db5d4235c07418eb644163168284e2668e2255f471a8fd222fc310f208569a2fea5d4043cdeb955462076a35d58dab934ccbdd493ea502453fffda79dc841e2155e13d4b592ff44c7ff23040c2f7f224034fc23fee87b4f096c3635f22835438ef8c7872cd3194dd24f1e5276647e056999b3e9176ed874c62f786ffa4e9accfa489b05d12846919129d655ed2326a98a6f925df02a3c74798aeb6d54ca193d7c1b9205a6a970e1e0a4d7473a1618a647e69178e4cecf003954cc8259fce78b9245b247b246abf4a74ed889d82ea00c2a46a0ac9ca2dbb94228ec4eeea0d99c2cc958c9005b04a73dbe4eaba8bb3728ce110b96a2d9371d1fc8fbd4ecdd190b20340860c7f788b0a9fe3a5b7771bcbfe1b5ece8048a4b7866f68127445cb892afc671591effb6032d2b2b7cb7d2b23cdf9434fe93bcc7d701969d9dbe5fe3d249aee8be90369bd9c300eba3b0ded522cd4b76073b0c0c2504b24261023210a4bfb2d8d979611d24f932ec918ea0427f72dc41b9bb32512b563237632906964b78373f2f188880a046c2720522217addb4f3462d74f2b1e6a37a29e689d81395997fd03ae0a28b29f2bae42404141b347945cd9d75530c23c972be3ddf9ccd70fe8d3f00a5c8c26530e2b9ba89f18b13b3c6bf50d04a89241355d09029fe9aa4d7bca724ea84da25fa73347e1368970cc06be1eff924a35f4885faed3e9acef9f0e8c33b013cd7e25b337dfe26e07464166e01a1e675dc5c37e250af79970001ab10ed2fb2c0044cd22eb54f33ce287d0476c32f0c8cc7edd7e25b259eb77bac104466e286dd776839a6067432521973eaac0d1d1337f202d2693368c49dadb9310a1e7b0fe61701859106e1fdb881f382bf39b8d991ea2c3b70db78686d02f3f848424d6bf435300c1a705b4104798a45aad066f7028e565ce2fec6fab06cd2ccea7ebb9573397b06e48e5509d213ac35271620998f888841da65404181700ae7e720bc46d63e3f2a9b3e6039a820cd60dc0415ffd48478261aaf1bb1a9dfeef01400ea737643344639861fe9197975f192400981dd58504160ded0c571ca21942da217cfddc0fba68bae6e6d239f4e109bc8276b83da25c9e5a273b053dbc1bcd7b054c9743601155c9463aaaa205a05c7a13cb5d53cad820dca95944fd5a19510c2fd60f890b2cdc409008c5e336635b862433c2b8abb0a6211f3c716d6184659635564b0d10e52960669bfa7b265c9b44448539712d8f78579bc27f73054d0b0a25ab01336346c5dfec3115ef85d3d34f30719a8e56c49f7427a2b022ea08b45d109850141db2daa85e2ce092b5b0adb45e8e2f971b531871e18c74217a9b33c065205073c97c5857127ce3fdb85d395a68f4df3e832d4e5e343f0eae0c6d1a3070bf41ab332fad8f9b03135972d1463a106f1d30c464a0100227a5f76ea4d325225efb52597c1caefbc34934a22cda1af28276a3a620bfc71f204cf64f1d47763053a1c6b25d0a1ce92e74c054f0a11feda3eb6fcd0742ea9b2ffd7bf1654aacaeccf9680436ebb2e4ece4c0939156adb71a529135643d8b6fdafe0fd20ca6f1a94445c93725ec6df5893666ec7d2ca724e47c53738238b21d9268ff95cd035011f51747567acd5fad5415158caf2b75eced42c0a7e76b11b87050ec48784feac7699f082b91791ccad48a91af0fed35f0b7af56fcf19a4b58158c1576840e31a385fbf59daeb17fdeb0e41caeb002457cd11373f048e90c25a3ae47921b7ebd708862d0615cc7db47151254880e6bda5685360e2da6694f3ea181503493998d468511e08f1df16a911ec3f34bdae59e171a8283a0997ff623312542af766e917d4f27e535628ed7dd3036337be1ef6829b334fc8393552d2a087df2083df132aa898469baf0b257bded7b9251aabc2a1c11284537d772c55ce8425294fb02011ee43851731732ff454402f7a1a2875e91ab949a76a9007275803a29bd9659fded874b21d8afa9c62130cdbdad321368cad0579173945ae9cbf73090461d05e586657e05dd3d2a2d62ba78085379f3033114b870faf4f8c61979b26fecf6d8be362eaac71a4fd746729201b3cf9b04e4881ebb115e21c08c785e979c23f668bfe3c72f4991e1149322f18247b4d2e33f20330864432c8ec8e212072cac73fce8e31be8981185cf12b7b08f2fef41c4ffd5df72547494f7c637d1cc78be138ea00afbd98763c6ecf40620fdb75fd82e40c7dd10ab9a86f29f0eace1f8d2637cb70e1aa8ba7c4a1f1cebf9fcc5a441d87f841066677518c632faef31ba365e368a040b4f794671916aa73d9a4784214106ca27c404860f8228c38a56600b4239225278e6b3d6509c9888bcf1d8e2797158e10b0a3943a33b22889fd83fe09a784d70472c1fe0426c2f1d0f8da5e74e8c1fe14a2c3f70412c3ee042acf4a37c44681556b5929558818cf988a08485709a471f284c73b7c7e7a9c33bdf9b1cd9db5d39d4f820280348f377e720af7290a915f7e3512aa13844194a8f46a98c47216c14a1b418eb00aef3a0fc88a00e2365ce44f9a540fc282771ff32672ba1b7607cdb5654f7e87bdffb7abbe189ec17f5ca687d5ca58281bf2688b0769c19813af455f954e17f601fc7225f25e94f2bb85981aba80bb9f61ce4da4dd1e083f204bf0ff0adb88bdc42b3fd896fd4584f05df9f296ae186b99168d2c2fbaebf29a759d5c253a6d4678696e245c3798c9109be7e744a9c14eb3eab96294a5abc09d3b719f0017cd67fe0fd03f6037ab6999ed8ec4795263ba560e7bd3d94423a4262570f16a13882455a06f5325e78502d0d0f9dfbc3eabc8201cf2c349fcf63eaa34f8c1e098fc3e545af202b21e2450f602ab125368f23883e0682a7da115046304dd03b7b5a68a610aabcc13701356591589bfebc018b25ad3884fe55298b847e807f968925c7a6aa44ddeccef40d6ecfe310100af39ca7fa1f69974298510e197947202536ad56a00465a8490d18c834d85c2b39be97de5c9482077d01324c62fab959993165820fcfa4aeaffb7b39d441b849c95e71364e185c903cb5a42f5c6dd00517fdce1834e3df7e67b2d316ad6f057656530ea0fc7ad7c0c809bbee8e776a73a8f7b11b1049ae93ae48937986701f5718eb924ca57f5defdf332c5db233761e24ccd96bb3858494b6586a331056827697e4b5571b03b657073aea54496de788cfb070bff64ad6572ec3a5657b43a5cb2425b269dfaa68971af83b7f935a80ede8a2dd8ebf5cb49a02125c7b8101e2731728febfdaa8ffb6e16b8b426baff81095ffb6b7c6bdd2e5a82ac2d1f21fd8737adcabaa6df68a7c00b997a121f72a83767bab59e21abaa4eafc8e2645c11ff77289e6e650b48d2fc983cbc471afdcbe06653f7a01b731ee355c5dfeb696189fd6fd0e7ce0ed6269140f6ccf48bb3e2a1f32298f21e16fc144641428b6ad87d341907deeea508af98373f91a1cf790a88d6569344420b257b00249cce58ea4e34f6844032715436c3580c8d03024a3495e2d7c139e49d23f15009c0997c5811536e190742af6ce777c8108ace0611984110a17923f8f972968835518257f1fd5df66ed24296b539162531a2d6ad3df29ff02ddb87e29adb66a8573c2be971f52b454248b07464baada29c1450ef6550c6ce619a3e192372460d2088067135e42a5f14e5cf8de9a81026830fa7d854f99bedd68e99dee9fd0cbe4cd734a4e6f500d1c37eac010f41d09842fce2d9c9d558b89b0683cf78e49f1206d62590a7b605c297a5207df2132d711d2fd1160fc4bf2f78ece18185a7c487c331d340350c9fa7f54406a680bc284282af057ec92a390ca295afb8cf17e02f88e3042959846f62bea0060191160965aec2b071da4c06b4c8b3ad74c64089c8313a9f0850f0fbdc09d43cb6fcc40d3ac16754e7fc0883a5b4ccb4286d2b90dd166761bc3d1d71422fa3c3e7046c27333f606f607aa667330ee28c3e63ba6dcf1a530b52aa0a6a3ad2d83e596b224bfe714853926f851ace0f1c12c2e19e5e801aa9f4841c51f3538953ef5b5fe4e4d644bb929870274e3e3a67708cf6f277202031c884ece4c65dcd28b4800a16f3e6ce63af791a154d58cc763d11469d9ac142c1e02562f8f1e052ccfbea9926cc60fb599b8eeac8054dd0be3f3f27e55d17f51a3b09d0fe7f7e83c9080df09f7d03ff2af829dc6ade99537e7f68222e6718844bbb67aa774a93b989b03dd6904e1c25e73e23d022fa58e0879be3db1097d71661924c445e6246a5686d440ff910284f98d3a24777c9252b4f8b58334324c1c4f2abd6c1f00332e0cd07df478199db8e0f9a51be719f30545408bc806130274786c3eddc98eaaaa1c713150251d43db6bac0fbca38eb35831a6d69a1637b501c06f0a453c096dcf20ca8706920e4ffc6cfb8a4cfc693d12b817e4fe34c12b1ae7038080b34dd41c7344cfa524e455b305b6356c0b6e1b3c37487e88f86b030f0282c9aecbb32ee7446291578453ddb5df31bcc03c550a4e2f0f56391b1819f44181a1f2cd111c88b64c83e1e24ce695da856592f14f58656734355ccbd4b795e8f9f1c10c9f10b5d0180db8fdfc710968b3ec7d6888076fc3c20715f5db5f44a531e06c217fbc478884eec9bc96d42cbc9e0162e803e94599f64a64deade03b7be8d7e0649cac6650eec8c2185cca5ec13fbcf5ce239d205bf922aa0659475270b67d4ec4f98d60889f443e8649807b2d44051163d4798007feee67db4c49d3d1eb75a2433b07b4bd56c126a4f25903534ccf80203255e2476017b2433dd6cfee3fcef40349c6787de9b001f8c6535bad7e282ebc6384fe34b9d6a6bb058d5f8bb44fbc316acf19e75696663aed7bd066c67fe255897e6950e9669872deec02bd34d4173f8d3633942cb77576cbd260e2aa989d2e559021501e72e928ea6164e3fc1c14e33cde840361cd70aac6a9bafcc057a001b5fca5aeb65b5e7f34d1948d566f92d603534b1974d2d860a08eb0e919bb9d622b5945f72391db71fe27c52e0ae99478e61ff43438a414cbc6d543449a55d8a43f8d45def0d239e7dc1eb9313a85c0d407ec7826609b1d8c1e1e084f2dea04f3e1d93474f1c595cfe89eff259450f47b64ff36a450bb611799204e02e21a0c925b8fc81e4c90daaf4b1a75776ee3817bbd6083c4c47822d0220b5e25b1c51ea1cb03297696744a687fb49cf12f553142e68392de1c504c69d0cad2250ddf250cc7011c04076270f40d1c7aad866216d25d1e65affaf1c9d322d68d644de8c5e2b21a447a4e92bdfc8f584d6bb0d0aa3d6cb37bdd818b25f872844622993f4387a884eba649282cab108fb4c3697f4e6ee4b8ebb7743e6f39949cd1468d6a9798390c9c25893653ee8b9983ee96fdf8a30475a04d07723ecf00030207e895bf47d1aaf5cada4dcc3c6643e85b307448f2ab6e2eb51b7a6403b77824166f42646404bad247c255209a59493a95e340da968a18feaceaa425c34315026ccb2434f9bea89292083e5f2a46624c24ce5b67993d1e0681685bf06cc37e88a5dff83e6ac0e31f1b61fbdff652aff2dddcd8184b622364374208d97bcbbd03070cd30bbc0b556529b65aad561373913b9dced93c047315366c94ebc6fc68ddf51eadbbaeeb43b0ca65b3eaa7ac7e6587601550e3ecde88364eda4f165551bf11772046a56e5a30df2c0c91ea359eb5d50be6ad9b8186549612e1c053bd0856c4ca55352c6c983bfb53fdc5660fabeecb79644c8ca32ccc316e4cab755a6475cc1533571303cd1e2a950e37a675b32078aa9f4ea7d3e9345bab5e755900611a7551fa05a1ce86314a848d608c528131150e3cd8a96e921a3f22716a5cee48ce60af1c52bfb0fa96eadd5bcf13b754e75e39cb1d85c06bb56e921aef5e69e743f5eeb57597f579cbba0ebb1f2ed739d9b2dd5db6bbaae39a344e8d1ad851bfb8268d037bb0962b038227646257f698ee1073c71ed35d1e117787f8f456e4ecc96a6ef054775d8ee3388ee350ad56100ebb5418ed7e1ae2653af4716fb9ceb95c6fa95aadecba59bbaae36e673924e83aea390887556fbdaa6c57d41d51e26957bd021c76f9a8eeb2496a5c653b248d53a38685b83bd2afd6ed90340e6c5d3a942df154579db4e793eb74d24edae9743addacddf5aab95aae96e6ba395ecbd5922d3a54a7054eae9fac11aabb6e8eabfbb80e31ec76b8f2102458f5205c4b65335cc2aaaf6c5e2919c2448823926002b7ac4f136e5d6533ec02a35e25d7b2a8af2cc4b033023e71d99f0cb76e8ed8021cce6e06c2aa1b84c3dc0abed5ca7ee0653a949d16699c1ac74e875c5fad6e56bd759e7659d8ed70bd86751d1102b85aad2cd0c4aa1ae7e9dab2a82abc0c3457df6ceb9a0d9a58f51aa71aab89a5ebb2ebe1725d9fd35daf91ab61ad08c2ba1ddbcdd9ecc453d3b49ba4c6617772dd1ab448cf603fd1211f78f5d9e590fa555dc7eab3cbe5baebabee487f2e4cd33ccf75085d37d7b75eabe55a963bea0ffbca724dfac3b8a37eb58e9d6bd2afd5b1556b05572aecdd116e0a8c9d3b52a930ecd3065ea6437488a948bf327744d42f8c63ea8e7448fa953af6aea85fdeb1abec947ea9240e7644361d3952546464c484c910760905bb8cd2924abf88609f45b0cf29a6119b5eca34d5c5a8c8940ec119ecd85b57b9be9a458d845302fbfb6c0e35e5d19821d34a8d338ba834ce449233d85dcf5d648aa6224689537066e118cf914abca2a9689cf944e3704cb18bf8243a894de21571495412a98853ac9e6391ccc2700a95241a873bcad138dd912539831d3b06bb804fa0931c373430545ccc2c8c7d16499c2e82e35d376bf766cf1661ec1349e24428718a17632261ec74285ec992f89826d4083fa143188b77b993297e355fa86e6661e79824ce12903b923842c414c714bf72b37784b177323db32471660ed60d0d0683e565578a8c1c6206249ad5efaf6d56d040309884510d83534e203c394d605293219a781309f208ee28d8a8bf29bc787925517f54fa33d2af8849a26e32624412b59ca2bf26ead7945212e16ed99228cb2149441291474e50e509ab58b6410821cce66c4aa16dd854363984114d812515b1833df0fadbf326847d13da68d6058ea74f1aa785ba18824214c5c8144aa53122385ec371c9513cb5b3afe82638deee26230f3ee381079f35229a45dc89b0a32ada88d72484359e263f2f472f59acec6a174e0fb787278481c158945de0384e4e1e2186e06172a2fb864788c6813d32a7b5da6dcf0f62b1f62c0b2f62adfb7433ebf19409586304a60899a8c5f15a8cd1da8c3ea142991cbff27a3a5d0f76fdaa9747f6e9d5aeb03a1ed9dd0ed4f1f364b13a290467e4bb9b5ff4b5932b99695b8bea2f56179b51d995b7d895c7af206d494a3c72469e6477969b592978e4ddacada02e8fd3bbcad93cb1959a76b397ddcc9252d2235e675c541c5e84f1b610517178748807dfa79acdb49b3588a53c168d502ba4ef9b81666d0b7b09dc360fc1da699e66cb6fdb056adc36d3b45763170038dfef496f8d1ce58c90ef0bafd71fec215bec2a73c2a9c2c90e27c623c4103cb7b9cc13192601094199909f94d21b84898920fd6a09a4bf968f2fe9e1f080f49704ab5ff236867940fedfebaf3d4fc5ca94e8ef88474a4bf19ab0c17dda5815555e7eefc226897ee5dbdcbc5f5de3ec285f5619469d80e55b09180858232f7ff96399b3e2045e21c70a3955c851caa142ce1472a490f324878b9c28e46c91939403859c27e43821c7494e13729890b3841ca41c2d72949093849c263948c8c92247369687714e2caf03ea48891bcb0301751ad6e4fc10b17c0e29633c3d59c2f005803b44441bf13ec3a5144dbfe4bc311964c978303415cb49cec1b90e8f8492fe5c360ac999a6b209fd0c5e474b25c7221a6ed773df4d28f64068c4f5f838148bc49d6c286a4a75d2c3ed4787863414b312e0f8192337b312cc53da5469b743ca39bb8e5a0e49e2644cb2a1b8439b3c240ecb9001c4611984c3b4021ceeeb23df9d9eb3985237499c23605252b7834ecb724f56186e63b97c997009d5b5bbe75f5ee7cb9ca8ca6d2c4c1d3d0eaff6bb439d76f4f71595e474d833f572acae9ea7939c58368e898969a2b221f9d64bd77a895886056a2287673a6658991c1e5f73b039cf3c877f348ebad96254abf5d938a7b75ea5ad7178a44408c71f3959d8138b240e91165222058e8f46fd5a8273328a45fa058faa6892dd4742424253f4e0f05a87670d4b0febf0ece1cb73dd0e1ba755d7e2b9b8bc8061b53cd70e35586a389b0d07ea0801c270f71f1d3848a5037584fcace0a0d50f5047c88fc441acb6f1fea435ef67aba0d30675822ad7f23e6ac5e5fd14cbcafbaa172fde5fbd7810f70275822666bd1f03c37b3f868c97f7eddde17d991930efe7007582583ea813749a813a7d1d68b8f777b0c1c38dfafe0dd40962f101ea049d5e502788c301758276a04e102a07d409c2f00cf274409d200dead4bcdf027556deefd3803a30eff7c00375e4fbe678100b6cc36e357633b2b5d88d682bb20d6d2cbb09598dca0e7673b2216d4dec76b45db131e92fbeb3db92fe8c362536e2c04355e1412898e630ff61f90ff79ffe8f9c302f2cdc7db421186ebb8f468465abf7d184b8ea9351d93a7a9faca9d2be4f36a5bb90ae4205fb6452e88574161204835907c2b0f71e18c892705fd6cdde0d5ae1979b7db4223f413018e6e624a707c160969b93e83c084649bd39098c9b836030bd3949cc7c06c2b0bc4ff623e3e60ccb1bb4c27db52bfa8b4fb2b3735fb8b01e9378b1c893716d0aa813e3eb56d42f9f972d5ca144091c8c8c962c61c2e48a2b8e8e9a3441ea97cf8654c549bf7c362755aa50c1f15b52bf1a431e12b7fc27e297bb15e1c093812365e038ec9cc3c639ecd761e3f8f0bab23c301043484808f7fce7e53f37ffe9e13f37fec3c37f6cfe63e33f18c89270cd31008ff00e87dd0e213d37fff43c0806bffc47c8cbcdb334b2ddf4f02ca7d088f470e35912713778789645a8f060f32c87586c6c3c4b22532ec4c60ecf52e8e506d121a4e63bdc1c04836b6e0e926d816b9ebb89494a16f0cb3310866b6ed00af7dceca31591928af609a2a34a1ce2805f2e4fcb227cf3c773f375dccc02e2fe50843523469a18715979c1f29898989898989898989832a68c49c62463127136940d6543d95036940d2961454a4a4a4a1853525252522a7a8161e1b6a60abba21718166ec38a683056f48215c160452c581187156d585153535353535353535353535353535353535353535353535353535313121212121212121212121235428d5023d40835428d303131313131313131313131313131994c26138993e33b87b959d339cbcd1e9398336192e36a483b17ca994ee7de2b95e6d092393487e6d01c9a43302cdc56bb492a699ad61d4a28bd49442a4925a92495a452861ba9bfa6d238ed8448e3f493eea267a6689cee28974790401d25a803717c4c6204698ae6212121e136d2dd799190ea5b4332e27257585e2cf27264ea2630376b2c377bdccdacede61bd99e409d887f89e366cdc3b9998565bc7cb83d05d4b9f98bdd0f1955aa54c9413038675b60ae878c2a55aae01f1cffd9fe53ff43ffb3facf7c57a54a952ed2afbe383907c2f0ebf1a561e4e364496f3e762e2bf3401da9f48b5e21428050d8e642821aff442a981e08c3360eb4c23f2bb87bac578810200edfb890a0897fa214dc1d68621e0ea4c23f3a707ddcae102016ecc385009df0cd850461f8271ee11e98fac5b170df563bd47c45fb85e30a8135a80bc1344c610dea402cfc2371ce95b006f5781c1b610dea2fdbb006751f6c066b50bfb11aac41bd07bbc11ad4ab3dc11ad46fd80a6b50e7c172b006f5ce76b006751b8b8235a807ab77b7637bb5a8bfb032dbfdeefbb3800cae1b8c35caf4ccafac0524ae77b14d485c2f50c4ac17183052a9548a476e29abbda65e6d6aa93fa64dbaacbed55a5fefa674b727324a09bca48da73f29e5eae6edd8f6d53386dd075b490cc396e4103c42f427b759851862935bd22be6f25b17fda271799ed78acc67c8a2537392a95fd9e56514bb7ab5476750c2700a181e9d41081f49918259eef2da94f588573709ebb013007dad599d658958b1ba59f5d5a3b8978120f993e12156eefd64d8833dd4c22321d8fd58b95b8f7816ccb33906e5ad6c0c6ae5dd5b55794159a88de2ebb1e227e2a0d52bc41c6663b6cb23c3ab9f6bf9eab0ab3706ab6fb131d8b79b57f727c3f1cefeea4dbd3cc6d2b079c2d8976b360779b9cc8c178b1d614d30a46dfbcaa5aeb62965b69b3d50a4a7d4262e5f35135cdf46417aca87ca698261af7555ab77cc06814918527f3009b7eacd9ecbe10a2a61ece67a2d084cc25b056012aed7677518af1d53c5c20643d8e5154ad3178808f578500b2f4cc196b0250c05633ac2126a0185a97b64dea06051b0fc17a6c03030d4a20b4e70c5322dbcb95a6d760686d42f999b2396b93c4ce6b42b739857198b21f5270f63b1a32a3c9967ec08634dced3592ec978964b4a1bf6047a1988e219bf2762c556ff7bd8abc5927ceab127fd4959d452c9193c8b5d6954d49f9445b21ebbcb73fd76b1a4fea412f6fa8c2561997b401c24f176f34fe6532fa6f42462c1cb58928bdd9e24499cd8d361d87915f5cde54112bb1cc604498cbd5841d94c099e901747bd5eb57281245eb9ea3f1976b939b5e2f263971b24b1ea2c56c88f13d8e7c565f94f86b19b51d7e5c6f838c67e8c5dcfc7bdcd76afb631a03a0b6eb192a93f1a2ed6fb6651c75e372b6405db565e63f713f1b66db6718d3f1107fd64d8e510d6c4640f9218751b935d1f19f6fe9361d4513747ecdd9f580573ff8955b0cb51b6e59ee50ebb1e2d4fd99f950b14718c0f0dd7a6f16a7f32ccf21736486296b7d81cb33d08d3386763b6eb43bbd9e55e962ba1e440c326214b82976d24869d0fd76708f9b17dc6c5a270d5461c24b1ea625026d61ee358f795cd3009c7bcda886558fdc95f6bad90792bc3662e8615325736e6ad980b9bd4cb6347fd82b93c86d42f9889b7ba6d97a70ad138db167046be0a4eb6f0a49d241ddbdce4bc586dbbd5660dd7bbbcae5c562eafb17b0114b18bcd313ee091cbb15717bb2579db937e792e39b83e08c349425c0e24f10e97173648ae5c09e5caa5fe64773e5c5ebd7bfff172b9909f7ab855c9b9401d21f6070343f0ea3576d526a15f59a09f0c3fcefeb6ad0b9ed54d32f4f5d09b35f1f29684b35cdaa40081b022c7ac1e24993620acc00e73c01c56c4acae0f0d6ff72756a9cf5b15f09355ce2edf8e6d10af5c8e5d17eb7223b6ebe3f2ed3e2edf9e6c49b1fbe17237a5fee4b7c3ad3e48e29ab43d691cd8d3af2a97e2bb3869b0f7cde69e82b76329386f495b528604cfe51c96e30bec26613da38edd18ec2b46b8dc2443ef61dd987903ef389587e09bbdbf581911831df66c4f7a46bebeb031d8578edd2d095b4ac2a7d49575e21554909e823b0bf1c76d5878f1f9984c4fc1d8e5ffc993cd98946de3340cf6949e79ad88e7696c099322716411c496240e960467e4b1252c651296cf8ebcec712b50c4212c02e0c223924312b060cac1880b2e64c1451b92b42c43d249dd5509528c8c502814f1062138210c294803172360431604d6085ab21eb5ecf302f5d7f1f402f5a7c9998677a25ff107ec44c71c3937364e34110fd45f3b41af134d489cd813a760a25f18135609b8444fa5d026e04c4f29a794114ad17a086d4d0a372c18675141082885204c7002b750820e0c81c83972e8330e86f701ee0c116dc8c343eddbe9856a75083d38c3fd855559ee41e2ce0d6b8878c372e5eb65f54f13f5373939e2ce176df0c41d967ccd3efcc034e5adc8af83f2c1b0e40dac89f246f6006ba2ec41467943f2006ba2e441dac09a286da40d5813a50d19e50eb206d644592369604d9434324a1d64943564943332ca4fe6006ba2cc41464943ce803551ce9051cac8285d32ca2ba3b452ca0d4b29a37c6149964b1150672589901f42056b627e81b30fa6f0a3f7e709ea713750a7b599ea1525efa8cb20d425216930f0985062e94889253099fe3ac61823867556467e38f06480600d04c3b079ba497410484f996fc649b19b845212d91d824708ba8494314a39958871cac88a505e26a2908686a59c1c3c394d6c84b8c972c42873e4d0bc22cfd65a3c9623e523113da3dd0f7eddfffa7e34dd3939fa15a3d69786d3be8fe630589e6a096bba45c5e1492c0f5f53fac0032fff321e118678325329e5d5a0c46ca653be61d29c1c3c394a4c00914f4246c9399945444e0e2d89f6f2049ab8352c89de81c92b21b5a94403e991447cd5ae4ffce9f29cadd7e655bb8c5af4112f776fa60dfce294126b07928412589cd9c4dabdf16c6e3e9978168c7ef54f8d85806bd22f8855aad355aaaf56190a7c72b9aeeaa460ac5ba569fd4988c48397f98cd37886b1d322397ba29475912d612c8382311611aa0a4fe634ae7a9d2a1b6566be96eb156a505b59497dd35c5636db2d09991d53bf529bcbf3b66dcfddd2e66267517f9bcbb66d2e4fbdbad88ea9bfa50e4ab794ba4beae678abd56ad52dc5c06c97d129f54b755756566ed694baa42ee9c9797ae21a396ef6b77a5db15c7fab7708bc95e71eb0bf95cbc1fe56373781b37625cd764945f0b6db4dd1df6a2aa1c28ae43ec4ebe155656751921a46daca53cf9ab672ed5acae838754cbb5aeadb6bca4ea359a4a43f6c7bca429c753bb65934954ca3b9f296572274443b1d15d106768f87df385dd22f1b1b71879a4348d371f7503e86cb3128704c383b3af2b02778dc11d67324351b36f760e33349e2d4383691a6938e0aefd8cd8dbdf34005c66e63e9121b9632e96aae76b347735772b8f63262c07049b91ebb1eaeb7aeb22d9ea657c09a139cb0af5a367b78e69dcdd408996201638fe9a260ec2f13896533551203fbc30e710e3377e5f0994ba6960bef69aeae7a875d95557751224a448768113ad45a19c13a60b8042a10999d0fd75756f5963da9562d9b6863f5538d5772a7d5ea5c1327fd61cdb53824272e0b71759d5bea576b758a12c357b675956aa56aed583981552bd5909bfe86b4ee4fe652a9542dae49e3ca2dc120bceeaabaca34aed531b5a6932a9f785fbde5724d26232e1dde5d833835dedd19c5c3aa1f2bd84775eeea606bd8aab253ca193c5494d22fd5c5b84f268e7b9e4c9ceadc398ee338ce08b39329fb8cd21f7625d8b73ba5f4875dbb93a93f6c32d1a2fe265dd22feefac464e70eb13dd65d1fd5bb437c8f9d5e017554c7ba2332fe18318790ab2d2eef2a4baf8035d8afa54cfac36e2d5dd29f84bf5906465dc6cd325087e161d4cb65b9dcacb1fee16c08deeaad3b916652bf56d944ca6652966576264da4e964224d24d4449a4e6652ad771a65b06bb532efdae9507fabecd5e6d6b3d34ad5753b569a153271eb024d7cc26e5ebd75ac3eb75aadab86fa6b69ad56ab7573adb62bea8e58d757ba1dae4e053915259242bb5a28c17650facb9868aad57d5455656bbdea26a9f1ce668ec9e5729d3a26db2df587754b1883d2cadeea6add93acba76bb2428fdc2b263ef98ba1dd9acab57d82909c1cb1d5112c6de1175537050323582aa3fec1b760c091e07258aea980aa51d3bb7d4af18d4218ef911f704632d974b753a5d3af4d67b0c5e47f154f5d4eda84254b448cfac5c970eb556317450ad7c5eeacb0b8cec5e635cad56abe5d3ca5cae5af3e99c2b6be5c6adaf7e23eeb87ebacfd955cfda0d3e9df36eebaaaca5be755d3647dcfacaaa5cae566edd7c835551b35af7e384571aea362ad56ffa85baea2ddd0e5585b566d5cd7365b387873c01c5aade26ee640f60d5eb5d9d47ae5ae754364bbc6279e56e137756e76ecec199f5566569b91177b8b75caebac12dd6e5ea55cfaac3ee47ebab9ba3aa55c4eaaa9b7dacaebaeab133627555eb367147f5d695f906bb3cdf60d75396eb7a6457dd6e756f441b2b978bea7aac5656ab17104aadb5d6eaa3e2d655bd5a9b68e3f416eb9dc5bace235337e2ce297bf6554a756fc41d555d9d7bcd7e70f746b4a17a7673c43786fbe9aa9feae9409dea7ad4fb78373bcb8db8535577dde5faaadbe10aaf72dbb6d3cdd293f5d16e901b1ed84fb711cb578ceb6c17f591234986a2903d52a87d98af49c8628b234aa620410fd65c570fe7b9423b1e3c77f96679cef518e23cdd45116f15473b2267e6b5c39b83a8f0f6d4ed23fdcda22dbc6d22e9228e082c441646981819d5a1a6249ceea945a628c130181e4d21c2b5426eb3dd359b3a6769f7885337e338cd6b67531948e1b05daa7beae699771f02e29922baef5c0af56be7f36d64048f6f291883e327c3a9a7b01db61ad7bccb1ea799e7be6383e44f865357439283648d4971356cd67638b703d75d113c0e14318ecbae078e572ddb7800bf79a8530f4f7950858aea899e36fa9f9a4e54e692c6c9b154d3c08427ad53e089733582e761ae47f03ccc55099e9b466951bf725381e767bf5274099e6dc0995e81e72b4480078fa608d50ed5755d8705eed170d81c318e73dd0e8f082d6a1fe6a3780f356a1fe673c43db4881a753a5e55adaa91d3617367d43dd3a2ee1a0e2f756aa423b37e78f680b859c769910eabe33a342052f866164ea5fea2db91a246fda2787e429d88bb8967d7bd66e0f917333084353d4814e03487728717c022613dcbea6e0ef74570e7f1aa7138acce7bb86a6352a9eb23c3a907499cba5ee56c3dd59d01c0a310e858f2b8f7388fc46121f6ba43581383e310a7aa8dc1717964b8fbcda1f39eefd89ccdbc8ba90f923cdd63bb8bfeb6eb58d81f009eda8e23a6de9facbb5892c79284270b019eb5013c7b3826b3700c8cc38671c4b387616416869163e3d9e6c7f347c4f38b786605e0d9c346e0d02239335938468c9618878dd322e3858e0e7ffd347bb8f1e1b06ff06073d896750f7bfe3e92c10be2aeb348c9f11c27c0cd5a8e0fe0662fc77c0b910e1d17c0d5f1235a88741c470b118ee3b811376b381e809b3d1c2fe266168e1371f371fcc7cd1f8edbb8d906c76b6ece89737bcb76bcbde766564b12eef9c4d7e16616bececd1efe8b9eb3f41c889efff0190b753e2f85e4d4f9cecd2c9da7aecebb6b74eebede6bf7d4fd00c0cd0d056f3f753d783c4862d89f8f9b3b4a8f241e57b5eeb507a7bdfb1036a871e5dee3f545b7a3478fda5279bca5ebc183c7d58270b8be8bd10e7b62b4cb5cbba72628783ed871f313588857aee39cf43793283dea2893263c0b34afe86f52255ae55e6d108e163d413baadb51855870a7a4bfb9a42bea6feed06e7704095e0af624f1386ee7b99ebb561299313f39d4df77ed5248e2c41e5a4495348ef779ba8432e9d7ce8de1d13366cc9871cf9ea8f4cc7cc968f7d47403ce7245e6a9ce7301b0104860216ed69ee26cc49acd37587ba55d0f0dd77b6ab255a3ddcd1a0fed3baf96eed82037187b10db7b6cc636432878fbc7d3bda0582bb4fb21a590c46923ad8da49113bc6662a4a404c993be026f4fbd43edc0d371738482b716293b0071696e8dc732789d84b737527fdb638e9b9b08dece6204754e6d8035f393f5ec8269b068b09e354c83c661d743497f537b9d38bc27b9beabdf79eebaface887a9feeda797ac7b624f5b7d32245cecc7737ef7cf5ba63e5ca4a2149a4bf59bfface4a0a4922f5b628f5375b8c30917eb57c5e0eb5187557eb25fdcdee3693d94be6db483b77d5599a2c69823a10cf57ca842ea929c9c58e9b8d736a9233f3b00ae1790e63dc9481977a3e35753f50a74cfa9b4bfa9bda0f9436af51a3fe9c78a9674df0529f6f4fe76619bcfde5386e8e48f0b65dc6b7e7c8d88e73b3b7fd558d9c9a248ef725e0ccf6ed3edcac6dbfb9d9dbdec3cd2cfc43b86de7e16eb7b959c342c099ed766606cec099d7383541c1f0d484da81f7999b27668297c37cca3615fdfa3e21fe2cc4f6fdcdd36031c2f3336c56e14c8bf0bc8ccbe64672ad90696d96b9cdb0890c9b618cf996cd11090c9b2394189b9b0886b142e68b25e21db1ac90c6f9d41464bb70859bfd3a71b5a3315a7ff31073fdcd6b2f542d2c4b1a47e354386b464ef07c4f0ba8fa48bf52a97bafde8542d563057d13f514fd5af9d4ce11c999f978746a426a623e3a894f1a4a8c321fa74cf8648839275764e58ae1a7ce7a56c59469b77e12e7d4063833ff018d045e4d019eff240eecd1bc79d8046ba69721f19e4f4d785e2524715a92608b1489d3620467e693582d52f09c93852776a98a48078a384483220ee1b228c4829a2920312c4e68f3949d2910cf23a9f53182661662180fad4601fa4aed94432830e7b1e6a4d5e0b388bde3a1ad648821861dc582e4902c4a2a35ee3c0498c5c4056935862d486eda17639882dbb2b0aa086efb02b744a1014b142c326eda549427e0b630b86adcb45e14a68d9b76254a1b705b14468da072d376648001c74dcb5581dbbae0da71d3d62c70db187c52c26d57705de1a6ddc0a06169db7ab8a6b869332c54166e5a4c0a6edbe1dac24d4bc90007dcf6b8aab869a70c705b15ae2fb869650f56dcb48da5855a4c4109b77dc1d00bb86d0a57c8822fa83ce4a80c4b1822e33c4295171284fd07c29a79208c528cd2c7f8381046afc52a58d678f313389e474a2b6488fc91187bb4193b6c2e7f34369eca0ba287f140345e1ffac949fb13c343c35956a1c56c86023ec26358c668951d0f8d5a88212624c678997b404cfb256f9054c24d49a06957b3dccff6d38de1a14df9aa41a803b7e70e6269f266bc0db1dcb5204de67a0d0b24494c64e844897e65c884914a00028c850d94f0ece9a60c99ba737676e7e358bb3fb10a3e1da87efb0f0686e0d34f16a8423c04c72a384a0bf110ed9bfd396d0792dbf591e780e4b773975688fc0f144250e0fa2e7752e3a171f6f4ce72c744f4ab76b78d74811bf737eef2dd65fac55d2089b96fffc92e77637ed473e76ebd34fd6daafebc275e66c1e857f6bfde9369700bf9d1be3dde1f0c0cc1da8de1a161d4313004030dc143f08a6673cc116f9b8552caee1cf156cf5dda9f27f0f623f116f3435bb1b9be0a399dee4fa6695fd11e24b17673c67a68187598d1c083591841c2492e30c27d181fcd66218edd8612a269f727fbc9b0d43eafdd208933a8d91cd33d48e2d36663baeb233be9fc68000a0c618d76edb53b1edca66d1672f62756c1315a6bd7073c82183bbde6bc5dd32ec4276d3bf6cd67bb769fed30fa6b567f3fb67bf9200c4becd6423c6d901c828a2b66a844a2f87afa44b06787504788fdc1c0909a5bd10362787fa47c3c66890cb97a4200a5341056e418fa2089e7b14bef4f86e7e74dd217421e88405803e1070f450f91337ee188cd4d8e4d1315387f4e3c916d341a9b1b1a997e79c7186dcc7a2b19fce11865e0f882230b8e5588555c813a018035fd7c4aa982d0d44deba4f022dee20e12d1463f8900401d06c09a7ecbd193264a7167092071878924e24e9068c302b0a69fc4a49483b0f7c79baf44dc6922da5822ee0031116b7cdd4c9ecd1cc01e07b0779be81729436214f1ebbbd87802f8f557f64503f52315dddda9db94938967f9fbe5bdbdf895548baac5660ee40d60ec59e76362ef558bb05111d6ac6428223ecde0ca537fcd2c27d844a36d5976a1a0a1c1d8958943a8e4907a8aec29783e66f6941a543a8938628878279808b20411544b426cd66ce9820a653207736ce48c3cea45057a0a562f2cd29f3c27d4a9cb09d5a6fe5a96fa3bb6d462640a8e88e38814f13246a50906060626e61853ea3227c7c6e6fb7ed8656d83473a5e60bc45e3344e63a3f1adcfe0e520b7634bfd49a6edc926b33783e5e6d4b1258c29f5548c9b5932377b33eef694c5981a83d29fdc30a654ea624c588b55c2d42fed4a4d6a9a46a70ccb16c37279346679ea18957e3586476910ca846436249f116553d41c91c7a2f40b1ea1a18925b5c59c7e491878536d9f8d832d6d37dba46c4e2a757358965c320eb5673df038ece85892f48e1d4979b86439a2fe6491e6e1156b05933dcb25b9a4c5f03cd6ffa56efe32236fc62594eda92b976451ea2c874155e1a52ef3ccc2923acbb35c4a5d8645e6f242c822f39657192b995a2e41914ba9b75cc642bcc96da35bea4a23298b3c2c69c6b5f80cc9ab545c6cb08bcbb10bcbc5250a15611e79d7cd5a8c9bbd7a999b59f5dacda7c1f52d377ff52cb03e75734e17e1ec01250f3cc1f575729572d562587d95dd9687782009d7dc46b99160cf6e491fce5b120c9b4f4cb0fc8bcd27257c6aca9549ae4a5d84f396942b152c9f11c1920a97076c784119a298020a310083ada20b557c21338112aae842ca3a042738910202224e985a09e8a42729a5944d4ce0062cbb264554c00a035e619885932a1a0db029a40994a8e10d2b56a0609e9454210a256600412d62c50cbad093485ec592383fdca00b4a4f588212d10a7a241196ff686c907c00068c6188e4832d6c66f8d6a0862d88d0852500010d28485aca64087630e944a2b196f4eb2298ca5ce18614f4e0090886c0454f4b41837a82364af50fb0d411193a09c3304c08656408275c38fac20ea07c400945b248a2a28a2c7c210b1ba8400a2c30912690011638c8820b2e3035a8921085123314010a4618410950f0634a1429b088c317a2808404522421c21796a2a862065a0c11691c0e16465a20f4821158a1821e39022950a0699aa605090292096e50c59432a0200a39a59684c3944862626909265ce0d1239680242101642e518c6a2e5389242696966042d3b22914d3b034745436b1e48414202730cc0432886284318401063d102a8208aa64e1449bda520bed23a400494202482605048a7c800c57408219e0004512a1dad4304dd328a651259298585a82094dab5b7c485f8802d3300cc3308c08043290b205138af4a0880c01129094d06289084b5a2c29a1d106588530a480093f8872a4081204534af9032c3fa53c02487f518a2154f080085d00c2164a60032e7c2009485168e6a5f9ba2b6474327d13c39a90524a29e5c4e69c53489640b664708525537a8083a319f4482984a511964920c2524e79c41692705892a685a008509a64a16dc1051e3d62094812124034ed882d08b9cca46c4a1a3a9979a10a9d5e78036d62a9456b299914448e8440840a462888f2852a23d0e20433a01fceb4372171324cc334fa84d39a5872420a9013f3040dd00209b2c0832d443174a467c66149a314cbee8782215544a10940d0810baa28810470f802b6c1eea705912969472270c908484b4a58c2029332565833b8a04a1c92b082303ca162ad08585e5aa7d4ca8e4b8c2589d12dbc297f0426650b41d27904124947203174032cca1534c1e445a3540a9d5bb6841a80807e4c2c2db1591a8a65588a664d683453e8a2c91996a4e0a2066f58c2d00d9a5832332a8589a52598a8629b472c01494202080d466970ca1aa319869d4e2998734e2da420c247359aecc2f33b5a830a56687713fd499933078cca4b690268ca3e6178b486219cbfad59e27004bef6500e0c613fcfa8c1f046072e0c0f8d60c02e3289528036a20075221594fa9b382ed1957e46857e9402dc8954e21051910ee4108e97e872a6df9876941542a95f309624ce8e4825ee606863b66aa5c3191e2de120604dc7a107149e76fbc2997ef7b3aec216c2d067b0c19d73300face9381c7517b3283c81509b1c2bc6ee3e95721ae900d334c2641af1ee032f7b73a8c9a889323d6104d3265e4b26da41f0e43482e534328dd0b8dda03e524a29eda64d698cdd54524a29a5b169532a9b36a59452da9436165e379594524a296d4a29a594524c4a8949da9452ed09a256e27590a692524a29a594d248af7cac804fbc43b0c872861d3044aa6204bf67fade13bcac4988b57ec5777cbb008737cfd57bb0c7536128a594120b298ab07c902560865d6029b7eda7d3cda930282bbc6d6edbe17673e468d64238934365fca2851f17bc9e2762c5fbd5f1ce63f92c0b5ecf393de8119942f25916bcf89652c616d49347c48a494fc48abe3670c209e1612c83372f350dc2579c1b9e380b1cc01a887116338033f06e18e23eec22542883c3a3979916bc0c8fe935ec5e7f53051fdfb7de8b963525abe76b4ad83b0d618c5105d43f74b07ad31e2fcb9bf1aa4f8833158677f69765c18394527a784ac586853f56d20790bce4079ae0b6812232e1cc714d56881d2392c470094248437707ed4fac828fd4a0b404219c413ea9314e29658cb309cb7b534a2dc2f8592a160c6dca39b198534e29f37d87711832524a29a5a473ce793aa5e47078f209222905c720524e299b302905334929b30c9584e5853948963423cb15590e3cadbf960287b74d3bcd39e54c67746b7a8363b3b249e79c9a4e4402d64c19a881493e524311ee6b1207366e25dcd0668726e59c2b546b245ebfaed89c4e373936dd8e20b276b70d0d3c82e73a016c3d50cec00ba3eb777777eceed81d61b44cb7d2ed08b202b946e23512cfdbb40ca3de949ee7791de10a2a0fc9b20ccb329a4dd959ccb26c85d24a50bfe3c5b3427004f739182cdb6ec0fd20b2a594b2fb408dfb2a51a9542da79457e802e90a508831ce79052a1d8648578822a5a4940a1486485d14c12c4a2986217581f4a2a40b251586485d80215a0fb33a834394dd9dd3ddddad2175b78c1c11566084ebe1291eca8ec7e9e6489d20d25f9d4fe43824ed7c57c4bc51e86efd2e168135152229f5bc7cdc228e3868e2d3399bc53b04e53ad81c67e3caa7275f338ecb1ae25a330e763146acdbb172cf5aa1713edce52b0eef07721cc7752ba79776d23b7150c4f3dd57cead5c25b222681d0fed2b9f9d0fed2bafb23342bbe43ee19cb47ba694d28e7694527a73d7751342c8dd0c99bee8a4bf38cf5999832b42de1c1f7ad4a7cdf33273983bed7eac5cf248daada00ebb4ce364c05988e515a2bfc8598961e378af9c8dd8b344aca0f492c670d5eef0faabf5dd03af26214fb1acaff5e374eae510fd1dc1bdeb66d7ad742b5dd77dbeaeccb93227ac5df7c3a6bf89ea7c10d15f7ccc8feef2126254e743bebbd109576305d25f3d7795e8137119268f7b77f371ad1cb7c27de53e2bfffaab3fa2562072a676af287b447ff59d1da2bf7a6989e8af72dd6bfd11f52829cf5d9bfeeae30abc21fa9583887e65adbed6fa5a5fab145c6badf33ee46f64eaf589462ba5382dabbf8e305e55d78218638c37f0081e71200042fc9473b6164bbec08282334b3bc27d561f46d3acd4787b22fc7c8e71fe641048e2e8435e2089bb1ef2e61e10471bb9458532594584db0345a40fbced9a0dd25368aa0b7283e98431fb48101576710982b7d3137dd5361b4485b50aa830bd3e2df701003b84384f7ba008a6d7b4675c78da46af8ff69c2b30f6936673727e6a5b888c6844fa9bda90cd8e23787e783c3a9c4ea794d26cdc0fa739842f239ee9b7d726a1009ca8cc2a748bb8cdab000ec46315ead7a989da2ab40121d41f958e72a7a62a746abaf54485e73cad7714af75b70ff1a80edf6c3e5d87c36ec7779e3ed9201cfede51bceff9d454858c929e30e9d70f379f4e293d9dde879efef0c3bbd71f6c0b9316a32546a7b718f5ab5bc2e487ce680993d36d393555a17e613f8011d191ee6e3f3c9132a5e63f1c5dd131315252a44372a4871b3cdcf7702f0f17c85b9abacf9c1c1b9befcbc7dbcececed6750848c015b06d5b06ded234b796a6edb945ca36e544a5bfd9d2d47ddea0e181068786e6e6ee2d523adbd2d43db748e94ed3c38df370b3c7c3716ededed9161adb32a5a5a9bb2d4dfd7db345caa9494a4b8b51cb9216a57ed5dcdc9de6dd6b9e6968bad33cb724f9d0d4d816a3fe686a28a4a1a1b9b9e63fbcd6d816a51f6ccb665b9ef4377f78cd0f37c7db5ab6dbc264055ebf720b9152bf5a9ef48bc6e75bbae857129f6f216291c222a55fae9f7ed362a4a45f3e8c248ec7a45f2b57f4ab3bba71b327c3628483438b4e4db68db05a006c568425c26653fa9bb71180cda2d80c88f9d6fc0f9b7561b36fde86cd74982a954a8531c644ac8a58056065c46a5b05b192596946ab1c72c82187989898981f3060c0801123468c18356ad4a8b180dfbc87df380fb7b98d6b4616b8cccdda83d08cbe69463742337a006efe5e8466742234a3d75c87f31c88ff709ab7fee3dfbb9fcebd9e9e9a4e330824273d3e87f87c062caa0aaf9bbc1e844555e16d97791041dc1c6f0b22939235f56774f3ace1173dbcb8d13cb4877760e11d8278cec1281bd4318a85511e46bd5033685c336ae9d0e8603a463a5f8e2e478e1c9c0e1d3a743c92c1833903ce623473a07b73b386811e6ef684dc4892383f3cdcac35716d6ef62e60e3669605eeab02b7889bbd2097889b593ef7c7cdcf970237dbe066e2e61cdc0fe2e61cfc4fe0d6dcac4940879bbd08f0581c5f02889b5910b83f103de0d270c055e2d234e0b68c684b120fd60970330bf3f877338b87006ed6308f9f8eb8dccd2c236e8501b859c32c26782e039c5e7b0c61bdfee83d9b71e1e553d39d5985a90f875d0f1f706cbdb98bf0f61defa8e8d7e973a38da43f009cdad45956c8e461b30c0e9b611308251289482294199b9b08036c6e1d36e7b05946c766d824a276d08c9ac8026c6e2432b009ccc1e6b8c2446ab0d8dc35c1f3346c1236cf975580cdf508cf27c0e6ba84e71160332794b923781e88cddc52ee840e60f3dc617317e54662005a44b7d4350b0021ec04c0f5a18b4ed76e8e47b4580446134b3bd44ef3c4345504a35e6b3d678d38a9b0766af3c4f410a70e3b0d5b4085513707c14154b86b24dd4593d2467222f029a5bda8944bd74a633dcc50d10800010002d314003030140c088482b168345144b5b60f14800e90aa5466509da74112a39031c6100208000000000002002263040c0094ab11b0499d5e1eda6a110b1e51b2f445089371a65e3effa3981a11cad072fdd2ab7113d24cef18fe0fa5f0e205d6abc0b17b5853db0ec5ed357c2ebf3d45811cf92d6848466c0c0c07e8b3328a9abac96ff88e81d23eb3f6dc125601ebd6087a28d92fede6dd99f483b2c1133e87b605e699bb5ebd792113b7cbcf8bfbcb13bbf4ffe9be4db79be9f9d06251ab97325932dfaa946d2dd5c6ff993264c1d5b0656e71905914f1256a49bf5f9109b1e82b76fd6af5fa4fb4b40b0b9f58681eafe494bc6bdfc8f4537f0c77cb251d5fa5922e43b4f67d7af47848d88dc3dd51cc0409c446427978fffc5c3dead1c12415bcc8044cc707956cbb65456a2071c83e34a7ff455c29e5d366b03c17161bd711fa59d2c2221d0a95380d3e066ff75af84e0f184589d39d92c7697b2f525c1b615cfb8d18f3c06a3be11745cbe8947e58f001e63507d6121de4f1b017828cac68ff3cebeeb163489bb6c08e3d200552e9b4a775b5518f100ea7204de34113b6559fa93297499b2ddebb776dead501a6bc85ce892789d2a59c5f2b04dbd71d22d0367e8d2f787deed20594fa856cf27687fe741e50ceffb73634fa59833010e2a9a14d2995272af2f9d3ed5a136184809065fa35755794532642ab0191c6799eca374cb12d66a9ce1de1fb154956b878af459a4db548fb4b350df31e43af28d0b786e91a72db4d1d8724f4f3819017f688d72bd7a50a4d8120636dfd08ede4aafbce1ee233264f3fd025bb37324090f9205ce564f7bd8f45f552e915ba57998e040d41d919b0afed208433dbac7fcee4dd4de7d7beae943d161abd5af221ff812032ebd85f6772e4b6e7d5a8d25bc76d37a203d1b430fbf3bbfd672b8fa0b15a83d6c5b60325086c9b34f0d8c474f78ba2c81d62474bd3f51d970151d342d8fbd63fb95f9c7f14a1ec1114299958e55ef47d632a96450c779e5dc6cb1b850033413e1322d2026313d4af46fc8d55cbe162c330c22ad9c9c027bbc2ef232f50feb37184968234261fd12407a3c7298c000f936bdca5fb60f15ca65dfbc58ecb740e3467cb9fe98e70037ef56ff71faafcb5a3b9896c40609173a4d49ea30d894b81eb10d73311372e33a61391d40fe7cf9d123be18eb71cfc3f3ba841f887a9de875d225b4e9d444c727ad708fda1a540bf0b7a9f7e787961120d8b8df9d8bd53a32dc50d3f8d3c34e508e8d574b4db83ca82ec6dd86761a18824443e96ab40199bb04cd9e52c36354c9317e809842e747ada0ad06ddb96a798d9ab905cbadedcc763d38cc94c5b2e92894d3a6d239810ce9361b98a540d07508b8a2ba09803ce0ae106303ee7a57d20a00e47b1a92598103838b6d90df92ac894a2831f8c2e3076730cd1b48410459a425a4080d28ca2120e22f14c18ba9e8dc3169a882d9d39ca0e22f0d3bf0d91d6417610a3ddd15137ea253aad6a2e9df68a12c8d76fe26bc63c7aff2fd3d1c61fccfbb14fda6e3a1e35c01095c34743329268a3c1d8513fb682d8830e9cfe4cf584524740fd6c5fb321121541b5438f6f0ddb178706af5eb030f1698b525de765f1df36fa466911dfa2ea5fcdd0c0f367c90d8375e3f4a25cfa3e0242dcc999e939b577b1c036276602a8bf1f27721b8db103322276afee75fe2c8de32e15ab8efbef2632ae075ef2f2304aba3c7d30eb9659267ba2c944f211e0468536313fe9ae3c4c56a959b5fe5c96b9e541ae9883b5a7e68a042b6a3ed989d2973eeaff0ed051dfe7e6ff473a5c9561a0da8e26990ace118fb4660c497d02e0d5fb4442c36161806caae601b92bcfccf80e2612bd416d57f6646994e6ba5e8ddb0c9cef2be1507545a61a31ec91efca9e5c634ce0c291bb99f86e8c4e85efd485d0226820eba65bd4f96aab47fcded1238b3b5c5530790725dfe8054d48e6fdc3b8e36ca91c4836dc31d1dc103e2ff69cc1769ea8ba5c8240a9791e2aba98dac2ca1599942ed6608e216db7fbd41058b9551ff07451425e08a70a780ea200eb9e422e63e1fbdc433605c70c38ce35b0ad897ba01691290c28165d3aba2a70e0dce4ed97b61538d3e9b302405b4a314c66749670748179a4d47db90f2658db81d4376f9a8e1fea7d88ce59e4a19e01a8f27a7283cf28d471931697bbb31852c85a05ecb72d587ca818c19d244d4aa1e197576aba308b032f5e52822b5b183bc15414b4b88f1ae42c10642fee8294bde3e0ef210a7f891d5721ca4b6bda319f4150e176c499dbdcfeddbabf9eb08a343b1dbc71674e96f92e10445b60f05dda677e36fad99f9cbd63b8d1d0ee8aade41c6fc3ba664e4922ce038aeb84cba9718617191b271e6eb770253b2b5ec54a162c7cb5f920be703e50d9a588f9577e2a92575a7fd3dce453bbf94da97382e6894494f0af31e0beb8be334eac075e67cb43e527b27b8dc1544a85149d865174a167c9c62a8edf3ccb963e3f9b37ce50aaa9a82dec910eabc73b0c12ec7c5928d329043dbf2c06fe0b6794605fc8c75509eccee328263387d083f95765fb0d2453cbb48062d70060219a4a762ae5adedf9069d42f7fa88511785d57c13a5738da13496d60dbb5b4225c5f19391b1e97869afac9b0c30b2ea416c9925b90e338197bca2b9027d5bf71f075f7d35372a34d843c658721bf97d814de7f9211372820d576dffe4212ccc69ced04a6e643d346e9b585280deca2a343229fa34abc07e2a2d4c729838547c69b72516806981e523e938e26b12da305c08fda09e418b2077ab0bdb08cec1181f60c313ae37323123e0bdcaf00123820ed6ee59c73f08dc162856741607d3a52ac706df776f323124b31852b315c9e257a6b24613b55412eb3f9d7f1ed40ff29c1bd526e92918551563d786e096ac29257654dd6a11bc5a01f95a03609bd2a0bc8f909b7d4b6f6d3cfde3379fc47aca82b579b28e0dcfa93236b3e5bb264148c5f52a6404b50c5caf21126f77660dd524f96c345e1083e5665ac96614572ff0b683c9dcb91491e22860bfd49d7ce73f103fd1daa5a2d66b80fb90ab6220515568d07665190b41e707008b4fd81c2895f6adbbb112db3a537bcc8a43b90683c4a79b5dda3ea704b05a2d6a9959f0986cf8f0df75fee790842cad8a7ff1bcbcf47c630697db024ea879ceb9a8a62acac2e11b79903f4a3172829284658ef5e847d8e9e73c42e1e967a57a2eb98d70874825817ea97e53754c4ed17f0862db5a715ac9615cf7c05a9a22b86be27619d825fdea8a1a402f5bb77b379416058bfb6972a922065a50863834fe9fe8b46ad18859616802e66eddecb7073f522c50229c10f4b73dfe65c80701eefc8af23da36aa77d7c291bf79512b8c1d8afaa9769898e4e9038cc3561861bbdeef96365d5ea48d4196ffdbe50cb1f871c2e0681a7b5712dffeddccf9f1940915412c104e2556f6254a0525729a654ab701379321f18f6afd80002761483f180edc06b107e38d673b92b0db8a3cc59f3591faa750c979f116f8650c1e54463e1da1c418f671b9e904dfdc2c5f284bbae51015d79552d2ea655abd127fa502d3147fb9ae27f075f5784241903507075103fe045a0b080a8bc84c6aae1d07d308b0ceb1d52c2c04b0eda09c4d3d438ac3140fac86f69d07725582272548ed2d0cd3e4a2f20facf85beb33aac7595126ec45c1fc6e5bcd8c3d5337ebcc00fb2d32a754fc254ea7ef472582869c704f7c1b728f5fb086cc5aec93c1367e1af5b8c5869f4cb1b61992aa7f9a2d6a396a5e9e0cb972d4b3259d1faa8327eab763f60129f6788dcde0431bd53aa434614a17acb32e7e80aa82c8016a39399ffb642f1606659be533fdd9f7d9efaf94fcf2416545ca2ca43677c378f90b2d684c922d42da84067a8bf393da9cd662c499d8e3689fb70b48bbb1e75b49ebebc8ec687571b937dfef24e1f1056d209ea45bf20c603eab081ad6250d9cbf84e444284eb8c6e21c6dfbdc9135c7702cd8b9622d8165f5b1bdba8250198975a52f2c46c9023fccc3861c541ab3a0b1dba992f296a3c23bfc26d50aa383c6f723e805e2ccfa756ca141eb7948a1d40120434032697d1c0017f56292d8f598e1736cbe5721890eb4ded9f2ee9d750d185ea763963a9ef758e24e81fa5be69ce355676f5722d4c526569169b8a5371cb8e75ff07aa6db6bdb410d62931513a5f62c5dbf6ec300be65f98f46a21e6c829fc65f09a2b0656bbb68bebea64fb78091a171a46f8d670a642856026cb1c69d9578c94431451422b64248fba4dc69a16c9be048c633aacbb0c0362a57abd8ce07a9ed5b6daf3c7986ccec559de7ad9ce69b1f32285ed300364aef4bbeffd038b3773799d387f8b3654344bbff081a720eaaa4fe828c21ccd0599bcde90f350a3217dbd64b5b88fb586c47d852530d05ad532271e0f03309152013a2570473be7c144afc0b03f7195d3b1d0511ed110460a5bb843a29d0e0d8ac47dfb48f569137735df7b70070749a16a2a2f11adc65dff7268e3a75e298ccc7ee8667996c9f6eb0920b2ba1595a0449b1279393d14917976ad56f873dead3cabfca889ccf349827d43c0ffc9428fb398790407813ed1854d09b9cb91ab3cedf59b25a5a48d65917ed5c29f7b547c4fb91834c2efdfeb44fe1ba45c11fe473a5049295668c5a1e540eeb66f0cc029a80a484576473468e786b34dac2d3b7f4a4ce753ebdeac3ef27c00a46963b2bbb1afa370f14ca24773b069f495300005ad916e15b7b0fca03f415cd225a94a05ae6412c2dddf4829af57233e849948e9887ac015082f970806b13e1af96c02a6f710440b735b56d1059fa048297617dd269370ab87f0f54778add9759613092f236fe296de2a49bbf0a8f446e3e6ab3abec04e4b4ae13a8cb440af718f29b423004a8f606db083576f20aee6be22e5df3a8dd3ef69ef088e4ddab848f8ecffb58b881b1d752118449aea06c51b1e68741ce447fafe81799655c57d78da14bb137f8b1a3c4e5ed40d26a33f4c98b16993c922e7a58cab97953ed07907927253681f3d1c70faeff9f4c1f1f1c5c0d680a13f572a588e0a16427581a258c2a096be6660006b99bb7e7dcbfc70604d475b49f76a44b50d75e288f972b53587e9755c058c95d85ad57dd3d9316c568d457400358bd5a74cd55a9d2849746bf6500d6aa937d0e299e3d52b5259de09e4ee580f6db93cc7c7b53f80df59cb99af6e02eff458217d6d789afa1b633c24a5fe68b1f63405562df22fec8e5d76fc213ac20de7afb21abb8878b08f6417c79a73178d00942c5af9740623444e21f51c9eee7163882436aed3b6c8c298098f27dd418de3cfe156be1207cbb42c8140e93258621eaf6bd0ae1b590ef77c2e78074a76576389af29a01cb049affc044e3b363e8c59a52e91d8ac040b1dc867711e5d3fbed2d374c001e24e3385da09be08c31676b68b00c9e679569acc5008edf14236ec260f1584d60f779a57048ab165e299b8066d50256b3a9a98d1375985e23fc18b0f879b21fca81d88218795c9631a38bb9b2d85660c4b15b546a1144a007d20998bcf9dc4aff028685b90c0c78ce4911701418c70a1c29f9fa66acb1153bcf35f781e70aaa23b16738bd7107d99ff7de6727ff19ca8bb712064fa20fb31b13321f08f792f4a25f10fd7c1ffbfc64c1870c920adb8ffd156509603be6e0bee0e71c2f71b6e41694ba93730df2dfe7839d66fbeec06ef6fd46a4a2d1fcb64781dc9c3f4ffab22c6f916c6aa54870e68f698ef6d61180af32ffb5576793d814042d19149df90eac2736f309d184920d9e342f0b2d86c9466e6dbd245d87a2b690890e8aacc12a66e52aa5c286779ae7ddb72ebc7b7f053b41d9bb5884fadd45474acb1879fa13ba5556c7b9103a66d00d74ce9930a22dde3ddf112481752676508e56bcca756dd8ad0e113abd724c392793e56aa93507c1d8cb3400bdfb054cc4339917447eb5c35811aaf760fb98353209029680749b701e2d71e2aeef50abcb0ee8f66970d53b62144d7bc0fcb45af39b52f90add08d0c1082685d4da3306077ecd82845053083bef80368595a76674aa9bfeb8f5f0f8dad1ac0f65142032a87d5f7fa94418a22e0e46a9b55d8d04b4edbc8849bcfdb65d378d3d9b573054258da25025dddfee217a76304a7b718a387df32027bc8ffff519032b541208a5355ae43c7b5eb41fbbd7cc4b6b4bb37b6425ee6ffa2c162e4f7c26f70f0187a4f39136804b31bb7b7b0d44c3372690bf97cc061af00c24bf48082f96536bcdaf433a80bbb5f3118761efd6013f4fdb04512c66543d708abc15cc957c89e34b112081a10ade19627f00d0d8b163d762a2dd1d0176d2889a38c44adb201a77658e6c3c9d4fc290db5378e2b1da3e729ee92b5f33aa08c6548e75d933dcb412a92506d53208eecf77a5d733b715dda46cb8826744b4b5e0d655e0df309e291b086eb411f514ca4d634d040dbcc8d3634e111f7feb6c0893941887aeb6b02ab3c4a2c702ae66852ed0a630cf3af8c7f65885d52c6571fd5274863476879fbf1214a6037c0b81361000cfce0d1d532cc46a97c371376964af86a58501c588111d61034c6ad7fdcd9aadd9228772bc53e077d08001a679d160be213fe306c5b8f060648c0a60ed2715952b5416dce3315608462094f6cff0978a4cfd723d57bb047ba7a77ca509d13566e4f68ad368e254b8ee02d0b29991a001a992f17167dd5052050f7f6146ecb1f76244cef9528347353e0d3bed92ff37a60e961ba4ad238a819ec3caf26646f047ec92e419b395d03a074b922f94773683f6e49a301af82a27f3034e18706014a3643c0c83aaebec078201b8f9c2383f522c4ec9841d0d524fb42093e523724bac320a1a9d3c3fa028932a0f27dfed8f4e49ef63718825eb69bbbf0dd033901d9cfa8f7212677cc62134602b7ba0417c0d7316a6fc7c760e29ff59407a03654a739d382696ddad2adcf288379adb612710570c0a2e0f4648ed420fc5dbe7a27b75e25c33a51242ee52172ef58a7e35e176c0e57f1aee63dcdab77eec0a1d540c29652be609d0d4910284836f6071d101365b9fcdf98887293fdbb0e33cb9b412f2d59e5ee952f883b8edbced0f860942acad57631c03e75688115f5af33045dcbee07e968c2035df3d5702c6c4e085b31c6e46b61932fa84ae2d19b9b44a07ba0d16a384314c0039155edf5fb385bfb5b8bc4e0af8f8735ed4baf6011c8d193a7e2f71e595373e1eb9e6e38a455ad8a57a1c301ea10e7b7a33abba99f9774a13799f03c2462f152e7e994af41c1f0b2d4c11f6f85b251393b87c943f14b7a585a60f36664f4185636dbb0eba3c8bcb77b3f104ed90d3581f776be689fc0c913edaca2304bde0228d4993c2ba524ae5f8bbbe7f1a32a6dcea04f9fdca0a70011d19f29f95c2c7deeef686cdf3f05371c73958c95c21cd041be4f5016a62c041733bee64bf561b0d6f447613f16975facc57fe8bfe8a8b0e2b830c96a8b132d2787042e05bef76f655d1cc2b493c476df0e70d20b2038283e09101168f47c0100c7a38d271b051f40311a16827f1587669cbd772aa79e4dfdc4e905991e55c45f291e11e023f1e802fb8b92d39ba5ffaa0cc5da0b118e2628b4489d87d82ad93fbf870026c44e5d48102cad19d7792f1618292e1aa1361d648006f221c0352566dadb56e2ae93ce403d3f5354191acf5e7be64fffb380fcaec68743cbda0ab75e8be16188b29fed28581a96fe7822f411e5a1d9fb37bb81129c1781669700f1e24a526cec9a88ec58906b73ae352bbc987296e98dfd333128606e879366d3c61009f867417e92fc0879cd79f64b9abb0a3b2450f9649aad5f1230705c4cda9592b03a0780e8559f355c956f3f53ffc4db1dfab5dbc45d5bf7c1f04f62674be87e9acec8d53845b90ce6697a44562aac0e482f161f3d58f58e054ea890c3e29ea08f741c6ab4b110c82b2555a33aaa483624f48b55109ac6783c04c72a3455bdaf75981aa32c6fa8f7bb86b8209ae1e74c895ac92ab692fba7bfbc7faa53dc19addea720ae296b1604e72f921b2e241f4f91f49caae18002356993e76421a4a37fbace2b208878abd4dab0974055b5cff4477ce8e67c62c169c2b2faf44fd4d7c02a528597f8339c5d53a3ea4620f477935dd2fe4b4ed30e34468c9a5ea12336a0c0db722332a0d0a08f551064234fa69856883bcb0d6b12c75774adefcc6332ca51b7e82fa86b03175b1fff930f2545336ac00a0c967f712185631eb15aa1455c47dc35134735f11dc6c59992efa9367140622c74c2ca7954c38f89ac4e4cd033c6c3b954685376beb37f2c3ee4cd20cfe8278b8035404f15412d9efe4d8b00efde0227c1d8c03fc47d4c6c20fbab1105f3bfda30b3a3685522fc8e235a36c91dc88553afdc9788891c68d413a0c128bfac31b982cb6f371160f8fff813675032e2176ed3235474410e0d0551a46b24d798c071fb12087c2ba2bb4ec59a12203dfcf6c19dedc45cccbf0de34734f2af04346ef070c9689c5ea81e4e80b8d294973c60dd5d9a4cc873b327c80266f2cfee27e502a2177eaba873c0568e13fc2984057ee1bf410f3b2df1c167b1e78c9f527b62770ca457444317acdb68baf172a43a2f846e44697d8e4383070f4e302424945023250ad2c0b2de973f87d9a2c87c226bb65293f3e7f2ec03a0ef7168071cfd8c4a5bed0cd2ba9e2776de7f96120960676ebb2375c4232e17aa538e1e929866d7554c7b9cd0681e818848a926d279d5e81620d4fc050ae40ac4800f27d31a32516b4cac4723afa31ed20193c5581dea53d84411dd27c5453623d90a064be70d8d5db9039d84c0145d37f696ea55fbcba7159dce1991da7a2595019631bc0386f31fcb57ffdb1b5bcfdaabc67f91211198d375a93c062800cd89f5e8a464447b750f8ac916b56ba08e5149d39a0698297d57358f4865e73167041e11eeaca8124cf39ab0b4ab1824a3d05cb84bb5d6d8661a8e688cbbad30b918385bdda5a0b2a58a7cd65cb7a725b16d24d3f8fa6da1665d5d55ac88ef9e9ed95aa14dda431de6a1f94533f90b9ab4d7beab4cf2ba0aed27ca452b4e7ce489ad469077a6c0bff72db96bc15e42fb75dbf04927e0e5d422ba38942909ea4ae3122e8302e352cb8fd62f885c79b07ea74147459af4fa46528af1e2d82990e9807d18e77ce77a35aebb4a4280bee6ad859df365c7fddf1485613d25463afd59af382a82067cb4e5f6482b8ecea5a07c38ff9cc76fc849be69eab1d4e5e1355cdd6c91445facdd02a09b231baf7f08a0c72a8460a4999ff26c3b48d4792133574d3da8b9e75d9b981c6b4da7618dbc46a595b73e8c02656645e1876698a735b0728226c309561a4b9838535308d8dcd592197e29b89dd36df8a7f20ede46febf18ac0f18be0512ad0c0cca8b460b7edd06098caa5a4cfdb80db8745b187a453840201643c6149356917de09df4fcc76e440a04fa115ff780bcff1fd39c60b5d31800c2c42ffe67b657ae690280e63b8070f6215d5c52bc2c90a7cc6c8eb00ee420c30c10f18b8bcb52892ef4dc22fe43b7da12653d080036ee988504ebfe321ebd8cae6a4addb4a6f598060760f078590cb575a42dcd740a741548c1e730e2d50ae9a9a4faf450d84f58aecddcb7e297e1a8ea00fcfc7d2f3ee4e7deefc833063bad660ec1af32a293100b8553fb56f6b277ed155ee0edd4ebe7cc829164cddca0f298e103bf4cfeada492d7834ec3a2cb565ab07980720a30deaf9a452c6dd8912f13b544a7a63571a97a59f9e3a99fd8fadd339f58657bde9b5930edb936ac23a7ad86c17f73e2f05c1e8e698dea625a071f1281ebd8d5bb4b4cd26693d2cd6cc269f7b1fe616b99945b748f6fb08c386550c1cdc18695a4a900ba477dea07473bd7e47253d7e94337731ca1d7e0eb59257529a666813d052e28c95ccb04a2aba9c36bd4aa32240290edbdd59f7d4281839bc6a88b02316a417fac95fc0d58f79f36fd5093e92c448d63d5cc51084b6bb4408d63fd4f4040c888b8fe18202e536d91344a127924314e43c97ab360f0400565d14218be9a2699e362c8ac7ca7da633d62f0f115a05408cb31973c4ef8333a35f88d62bd8126fa16be1353f791384aab6731b2d3e5fcc8ff7693d593b36f6e1e82d31c8d158a2a0f00ee33ace79813688a8f50e8b62e93e43eca8ee0097cc0777cff23b9cc5b627c1a3da7080cab0a0010b8813a1d739a0ad43bddb177c888bd8f8f17904c006cfb80022eaafef2678d82fe5a4bb7a4c7b4b42e9875c786c13c3154401fac989bda8e0172bd7a78f5e952a19b40fbd1e55182d97dff7f5c42cc30359e680e0f78d63af1daf4070567f623b1633c3a60c6dda6cc32930369b68ed507df9555473e8a8ab9e8eb1db765218e36f3954fd81d58785956a773200feb22ae23a0d4cf5dd0fd020d629a265eae72e61e39428f17952752771a2e6b8222b9324a2d49c31c673a733c416c4be73a4034f64fd5a05698184e0560fd320ef731f4716d05bd6e0ad0c3d35603266ec992ca6f0694d4de6adfbac3870cda8d1f7afc6e0f22dcd455aeedd8933895955f45602cdc55416882c729e67e2fc6c34517b51d4334434293fc802e6b1074b486efd079230959905c6f0ce7ecc2ce080a9180f49de71599dd895a3662be0bc6c66d2f51278b742f771ed0ab7eb2deb48c570b99c0bcb1d13a55997e032d821c039908095ea90245402cb36c2928e671093174ed7742b66a4e3b7c3dd061496f7b6127d0c60e96ef23cc1e39f75e9f1b04f979c85acf176598816adb9a40886cbd9deb0dc5841aaeba6f5f37e9d39f7e8f4232b91a4089f9a3bee2a9cbdd554668dafd16f7818069a49697783455e15d7dae38e9556f86d2e4619985fa863ccfdfdc615ebddbae0214dfec3f30dfefa322405d02a4b442f38fd0dbaad2b063e597434bbee29d2e2935831c855df54381e0665d278850707b5229f70cd4dc8a4cb87aae490e72dc8a4cac121eb722d3c69f99eceb614d51e402376f769556a57a203897c9e3221f508d620114a296636907371f6cccc13085d14c871822712802e5e66887048b8bffb651f0de6515794e087ceb5fc28ffd6e4fc4cbabc13245caa3380a502666ed56d4f1cdac9ae0a3d2594ad98387dc66994f4ad693f5c5ebf65f58d062197dd9fcb71fa104256163a041e625935270ef2a757957bdc8e826338d523e8a884c862ee7d6b0e950900a02a8cf8b532a861f65b82585fb69b763354ec8928b1d77a906a16df014a97d1bf5e64e85aadbe9fa01559901c35533232a66ea2d261cabac284c7158b8f463051ddceb058113a1ab583430bf36a272e500ee348e6a1abc6082845b7198c1d02330a41a0c772e249e04bec4e337ec5ec61ca8e32437ea3609e5d8804988728bb3e71376c5aeba62e62d429129e6c8b1698d7cd6a8257f6ef7b7119055c67100c56374d5ddeaab386f162b14220ec353cd8bfb92e62c13547331983fe53885ebc9ced91d616064a18ce6f8543d515c20ca0edb983afa53745b141d3b189f992f9bc809a4d5ae61c92f2382365195385605cc89f409373d8ffa1932aecaf654112711d6c47f7eed6377d2776a02a3296a0d96408eec1de6f07f165f088683c1cb87dbb73e8a2a60d27102d397008cb4cab7551b5f61dc4256837d00e86b0b5d86db79c952a2454e3b3b5c0c9c99767cdf8643511d75e924badd1541cab48e667b0fc907428328e8b6ba12fa24f5e4aba74e6673a34c587da244c09aa3821f284099ebc9bf1857d7b440d23e6d65c5ee171056fd14186cd1ae1a896e90eeaf268d231c74d7496dea7bc3cdf6793d0aa19ef7b24fba802b89ca912432f34c63ffd3fa06b5ddfb7dba0e3c64eb36f23bc43f4083c8b179545d3b4e89fc52e3de32904f060e74a7a620fd0edd0ca2ef68dd19f85283ce1b154bba5d5b0ec37f950e346d4c8984ebedbd1b7cf03a75d04c1ac540471b08749e6cb17833140c3cd92aecce7395ff74630d49d976be682cfbf6914bcbbab066e584a96fec0514c7a30a184b13f297f812dc7760fca6b26e052ae8289d868cc183d07d4ce00ce6e9d52e1a529605c4ad7db74ff9cededa70069c515e877328a0fdb26117fb020cb72851afd461baefeabb8b8ace35dbaebceaa100151746c8b32f2764afd384f2a7ac0f426d078b50ac3c7ae2049ae68e96babdfaebd64c6f17ece3327da9639fd10500866b4d122175402a65624b18bff92de59adb8c62abf38272cb6ec186078a4f8a62d10654c4c15cc00bbf0023a83d2a5dbd554345a8d5f2368f3059e5acd1ef2c68d6c4b5faa5792274c9ac8276228d3089e5d0bbe45766f7dfab919e0c55da455296517530195bb867ffa2f003d54d92a3b4f55ac87b8203f677d24253a1727952ad59b41ae8c36dbb9e74b8224ff2b9671d07dd60cf8e3715e9fe93626f55333ed54f4c2193c87a6f988adc20191ce85f5e2867d229fa3c9dfb337c263cef4740c73d07296a8b7c2ca4eee086a23484549772fc541ce15210bb9906da300223e26f0dd27b8287c4bf91abb73eed60be6b29715ac3108a6e52b545ad8d3c70ff8d1bc9847058932c21e962b7ca4b9076c02925b62b8a80becc52d08d1965090f07e71d33f55c502b33dd1a66c8caaa558d1d85602bd1fed0db5fe7cc9064383ffe65147b27558a209c0599a19c77a201e036615189dd0d060b53014faaee85e051e61c7f055b0c174358fd44eeb2bc731b994110abc25ba0585998a5f630860d488a1ffff534afe3473136c9294660c8dd87286eef39fdf24622b6fa00488f0fab7ebd1c85304c6ff715aadfe7bb4f4c9a2342250364347b79b01b492e5b72f390bb36a0cfd1439b8e230683a2d70fd97842e7ba6b6ef22e1593f73873ff7c0a80a87ebbaa41d9d78fa1932e23f2ba6fe0ce4665278644b3c2e9b4b9d238e10648cde3bbef8b610549706e629986c21fc5cf37dc396a672bbed6298a4287b493a922f08cc58ae61b84996602d87bae8ba7bd7658a1eb1adcd058d7cb265104f51dada1216ab68a64eb98389bb992316908c9259bc5381ad92ca2ffe7d7026ec186093ea27d5617d621d9f68d690890a02b64f2ada2160dedd857c06867c5fcbe5233faf9c688ade3785b6f80920942fbfa6a058d451a51e58c03069abc3341262240a10fc7ed46db42ed8e12e6c29b388a1e3f861508db1bf6c51a644e155c23e9ea44d57cdf0668651937b947df20964afdbf7a58f2aeb5ff345f9ff092e4960ef89b7e168cd6b41071b7140a60318f2d804fc1d697ba747bd1d5acd5b8c3dbc37b62330701251d1965329870bfdef9ff05e349952952bca82df6a60fac7a764bf8e06bc60784ccdf9fa94353079332ce28e27b60943dffb155785392fe01963ac01ca087de63dd0994939d5d5096844a15fdecfc45169d84c7d5ff5934db291dd9884aeb8671a9272c4cf59d9572aaf8ec0900da669767e7553f5f58d31c1dadc48d9d39721718b710e6e064af23555e2ad096d0a3a3867a81ec492666d82e2732b9c7675ad8f8525266dc97c81f1e57d5acf25a15fa454042d3cb087d852b104ac1344f15eb00787337adbdb0a2227f46d48652904b8d90aaba775108705162672d645d23c21d216d219e1edcf99ff584c01adb2cfbe493d33aed139e862bc93e61b2449cf32e9eaa168fc8df9b338b0ee519fb5614816c5e3dfd714d3761b6b06c78acf63d1142767d2d74ba567c70dae9dab8c24d151fae1e7da33e8fce5b43f2d233697faa7b39b237b0c6468c571f3fb766363938d9403e7f824f1068d8cd086d6c875c180df131140c58fe0bce6d9dfe9dc1679bfd6aa9a029d218592b69c839712a7a48e4b15c2ca1a49c6e24266b4642db86978d3f942bc9531c27c10107b1983711d894a65811f9092eef884554083ba45b171333ab4148f120fcae882176e123f06971476eca7e71728991b13dd4765f57fbd444281de87bc856340dd6628b3fb2ef6ad2dedeef1962ddc2819a51256e2468b90bcdc930251beed55d61fe95daf10c23bdf702121949e1454870b308506f412d6652844f2c5cbf69384e6a49068bee92c63df1baa7b2a5df4fd272e471d6736ac59e5186bcfb50df0267e2b99cefcfd1b89352cc36f1c9ad9904b347281131ae8c22a0c00759a3a464039a49a0e692c88b41bfcfe434647ae03ed76c983040b8202c59c774dd018ff75947bff9439c3dff5af1f1b8c20c1839dc66821e2ffcba29e1cf22609631b71627a12444265712b8aac4d476829bde7a2b4770a551d361c97266a44ebdefa025f90a6411b44070c33cd40976f3989ae82d2d75534c7d8e544b22f94c2cff0b4a3b13bddfc753d68ba9681b92105dabd3383084198eb230a5370aaaa605d7f85b0655c0b20f7eded8ef756a45483f5dd69bb68baca18e0b355935be78593d9c2b320d819a005c54685c520d19e9e43c0857fe3c7e764dccb95f437aec0cb0f997b3022bed8d3b801d048d6ea28544c800dc97c2264ed94570355c1c54a27f4b22a10d1be183fccb1ee18b18605a04ab375b9f1dc2ad544cfb914723838e98461549c8f86f3e4fcafbbc24d41f1ed55112fa1a255a057074aa284a605c7fa8bf339fa43a5cb52544889d51b34fac4f41ccfa354415c996702b184c166079b090d9785fa26b8395b7284da2234d6eb75e0f390a2231e6182ca001f934c567385788cf7c9a114e75d65931b13bc7bf481da242a02302fc908082778079ef6913ef66cdc7bb8246e704aa21a97e82583e625cc525a14f92eb5fe61338cc4fecb14606cf444e00d207cf593930cecca77061a85a8721ef38eb5646eeb70a6f7c78b273b5a0388a247fe3c9205be7b49f774f7e324f0b088e9b65eb12c4d64ac3d41f5e750c49415f38d8c7fe81a74116d8634e4fd31aa83572ffa81cda8bec604a860275a7cd6a0aef6988683e40c02b8928d1d2b1bb9f4588aea0be29ece2ad20b4c9a7b6645df654bd5755363a56958bce765da3acfdb19774b824169ec0fdb2738a80a4dff71bc113a01448fe4d99d98e522281cd6109706c13a97bf3202d281d20b7309014c554b5c21f893f28224a9a26f9cc06a611bf1ec7af9d557a5fd9a2c9335ae437e3f9dd012030b0bc3f393a2e2a45ead82ddb0297b92501e2cd9a06e531c1ce6e96daa4434e4490f6806727cbd52648a5c53952f815442796aefb7fd07b69d34b4db6008caada9fdfe835b0f1f9992427a0a0cbf417b7f81219d1fcbcd58baa881b09551905bf9796c5ef08b07114aa72927e59b1d2d2c94255eed44b09489b58f4b5283a387dc368c25fc592cd796aa2e196acf55e0c1b07b555b168442019243646d01a9741fa1babd27e4a7e9c43d5db71385c354d1eb76691f711949400f9dccde0602d0d15564f2a0318d797922bcfeb006a5f72151ec7e876b7fe36dcd143931f6c2842b6e9b5702ad863317b252c6b6e60e078eec2f4218601cabebaeac742d4b26a7c52bdd1b30e477f76ad74d696625a428996ec67e23dc60f4b1b16a1120f03c8b943210a1890ab25027c8ee7bbcc83d8d902995ccb0372f023eae087ba2c228296dbaa95d8f4b423f24036aee51c8926ef28e135ff2e3953beaea0b2eea32d12c11c2f112aaee7754e56099806c7b54aafe739fdf1989eb7266f22242a9fbcac77526146875d6c1155066c229c9b28cc699fb4a9752a5283119216250050801ffc5f617695467138605c5770eaaa9f7c270a3a4e0a6ed772752505aee083f0c0e3e9b0f655538ed4ea063e1c10bcc4d947f37fba3be3e80fd313122c7227f2f4e687f841c6c1ac3ca6e7674b4875643b468d06565977d898fd39dbf40b25e4410b6f25de4c61b15902114caad0d978dfc58c1ea7eb41e79c063eef8c6cf276682cdbf89641a49d32035c7e245b8a8aa6a79a16f191884bce1a6e0d5b732323e44481b0118352749b9c41f9299444ed7b411c897f9ae26140e6340942e76378787355d9afcd5ab385406a6f66de49512c578d20ceb20b1465a65d0fa4c45ee94ef212a87aca5cac5cc3e14ba005f33486080f59991c8ef29de2e1375651da2600025eb40736debe667f7290b97c22f6d54f6ab29c5a1d7538036cf3a220f2f6fc9d688cca6ac48ba8906eadbc3507d5b16b7c22aef69304fdc002837d4aa89a956045c4e7ee5d24b8fbd581327f4b62b260f8a4713bcafad7c8fadf727986168dde500a14f9f7088013719eb931468663b1e3030e4044009301da80ef182c7ecf3f0c29cfea04c9eb444c22a4a4b0797a9a733d11bbf1ac1e5fd758167415ff4772398516dcb92d9c8782c6a3388e142fba6570556ad250c5907155807cae10aa52a43ed3702de0fa6bb4fcc51dd6f1a8f102fe1f2a4437b6dbf3f66b8c09dc9a7a74d0bc37dd09896543c2bdad83e359b5d941ad062f9d062170df89018cf9623e2df7db228186f48c02f208ca98c33c56359229b8d173bac0d3b35fa9447ab8fab327db969c17580865cc7eaec64ee76707b0db58bc1ea5db6fbada20f7d691823879e0c3a21c9155622c0e64341fa0c52063d11498f44783804ae6610f2d59c17ade5630b8db388ea4ca8fdc08ae80858b7074461a69fc0af23805c2e005d70b35740709cd80f85de03c374b466a3d37fbdf2317b0a1a2280d051d154b9e1c62a0a052d2f4c2fe09d8a24741a3a166e94156e91c22a855e47bb1f4add25cd1454df00ba657d2b5b181e57a96615c6da855090e9d9d4a7db2a1bb26714294edab971b23e7744f640916b5c43791df30f72f2ebd59bc778db3371cb5d033b9e5d98027d5acb6f3a75ecf82355ac47a66d1b489637a7cefc74fc0ec443b5760ae0d7ddb65aed13b60b6327872f982779cf7e23f159b884e78241e9c047a4c9488af5c3fcd0d8bb14282846e3d797e2521861f4e4fb1a7d8b215a5dc03bbae6be228015c189ff37afefd86ce646d52e2aabca807a688f400c40286853c0611eb3822778c87642c86752dbccc604f47f3a0a76684d12805aa6f7bd5d2514121384b28e89aefe40d39f7269de6de5590af0173710650cbb442eb4f2d0115eb039b884345638d30219132541b51c85034cc3e0141f7d8c18821a98852686652d3e3282d5c7a4e6f28cee3f5cabb0f6b69bd1baa898e3d30777ee558ee47445ec555967bc2fb49c201346a0c6c85db00a6fab91b3139a841685515a2c0cf156090d08a216b7c81808229ae2dc377ca241592f2753e23a83d01891f612f45ff90ac0d7c8b8ff24468a898fb96c00d4f41c9d79517835c58698e3186f82f96e2607d4e07625445da40f7079be42616e9798f2e35cbe43d86e58046217957cdac25a2d4477da72bb36bcae588839053c7f864d8665dd7a4b6fe8b1c473f39b2c0bb9e6e734cd1cbf42a6f7ea4fdcb4009cb0fa05f5a8b0480369379a10dff25392de64af41c29015b63ebd698b3fb254476e22a5716b99e6dd793d7778beec7a9c5d1e4aa8112b73a686420f5db0e4d32668f9eb8cb92b21ff0aeda45bb32f90c4e717e09f43940b0743aefa45b572ca9516b3d3f2ba482beb2dae3011390d96494e4a03b97644e19fa3af7dd965c8fd6e1293dfd4974809dcfbaa2d5fc34d7b7c2aeaf749f216bc4b586912960683ff1011705a936430116488b5173b070813ace372530c4422288b23e19209a03d4520052f69de91e114cc6f11d11f3028040afc041eb5a6981ce28290c337a54b806647b89199b2b76f97e6a0cda94ca773501c9aab85613b655cd739bbbd0dac3f1bcf0a3328800237926746ce3cb5f59757931fd11553ae10c91a3399bfcc758da9291931e0a4e49cf6b9bfaf4d1be3e310ad1c433e2aa632906d9aee771f1a67668fb09018fc79190bb90620f0a1a35da5ef67a89ab95f62a1bb844a1a6895d5290203daa3f6cf1a055769de5c63cb7fc404461634a4aa8938625b8a1981efd92300864ff85e620fd60935e57328af965930678c9a29c4af4331fe7a85264d74065f737cd3c63984bdfd0d4985bacf4d82cb6754b5d85ba00e6806e3d66034150395f963902ca6f994aba964d323c7a6dd9fe0f8216332af923ac62afda2aa7deb9c49c7b58fbdda4c401a910dce9682bab7d53f14433a131a635cc64d6b88274e931ec597a748e0b097dc358f4b188e1b3eebb91c60f57e1f76205e320dd024fd23865997c4612ad04a6324d8de10c8aa66b54e146f34dbd6702c6db92f05abe9198bd7c52d497913e6e687c397b2f2404381c1462de85aacb78560fbfee5d120e4cb5455cf2078be4bb8da3b41a1356f1c90786a7f31bfaccf5bd6fc337cda190af6d57ea61aef18f008f1ed76a91f6fa4673dbfcb90b0cedae6d92c182ac10e490bbe9e3610aed536ec7e1e7ff627e89e7012e7efb31dddd206de8937e471f4bd40366087d85fd35418bc8283fe2767389791e64916cdebc68f8b3ff7abecb173db6d8db785e8a8d48419cd4274e22430c79d4d6ab7473564a6429fcb4c0a2bb99c879d24c8838f1e8110d2c2338fb54cc599f4accb7be576411e9f0f5b64678fe9c3c790df6373bee14c8f31737882c1c304dde04432796037382a7d0faaff1bf843b609e68ef34dd63c80bf1c2ece784ed6088e28418aab2b1029a67d26297104424ccb31ffad59ec7f448b0cca32e637a7e781834ab8fa327c1cae30012a911247b81649db67604e9e390ac057ab25c71b28ed12f176b33dd2a63efba12eec2ac95ad3007eacd32a96be94cced5b04ff5ca268b26496a00592e06363890ab0443da367694a9ad1bfcf1e0d67075009fae20603dc8fb77a6affb113bee1e891aea6714cf1595802c85ba02b68cf3780d878196c6f768a9144dcba239b08de123109804fee490527840a3c90356e838d3e87caae9d86036d712da4eb390416bbe40b39301049799b8c18aeb9e98031fcea7874fda5d7968d70c750d3416d7c5886822b38742117124211875a21fee301f44039a843eab628dab08b633324d56c7c8364557d898d40c8421701cbb84d3b05b7214492a59949dbee1e44259d19cd9ef3fa18a55663424f6308aa6cc6031594ede26146049ab3b5a188980c86c574e9023e43ca4395ab0c791c4a2b135dad1e785c3f2f403f84e009f9a88aa6f806df920e7363cbaa7925916030d04062fdc2a16948619c77e670fe0af1b49030ac4384246baeacd2a98085acec02b1a1bf442bf027ec2373372181c0463e9f3b48751300ddba254cee88112a5d4ac3ad3854e47838ec8e898e588f147a0e601956124d0a5a590081a298980b001bc8902ab5c06ef04d0065e0f0fd32dfd5aa3236d923995b0a75e07d9821290ce5495cc72c8f1522284e40641dde687822bb944a9db154b0c815f5980a0eb9059338df6b10f14253cdccaf4287a77a04ec8b72b4ae1011f2964645e4aa08f509a34c53c7db8b68f3b077fd73cc391d10b97c247d0c3c45438874b6d39b96b8c5dcbb5408fb2aa651fd6ec5f59766d21a7438dbb958aac102f1c4507029fe3f6aacd31a7f0fd227bb38ac8d72140d03e9e99d4dd55cee14fefa88350c4692ba387249d05cb4a203af1a57c55c31e55b1d855fbc4599e16847324debb03ef3ec8021770c8fb57be3d7cea195a2ce639933b492fce12cfbb1587ddfe987a2e4c1ac31d5199342952c3f303f162fdcd02e71ed2a6c3f60d1343a9560b7a0fa52de47b5e3c1bd95f509264d6e15d502a881af17ff99fa394cedf54c9dae29cc6fe4cf99c72418b0d04ac18021cb787b9a64871a666b18b1ce1a320717c70ed1c6ecc924a1493fd7c4048292dbe3758a95e1a6248d0b6622a0cfd15213e391bf524ccb2200613d6c15bd1cfa53794dc4f9cc848692cc59f3189c00224ca83821b866093bcd423755ea5d81325b769aecca45b55627c8595400b7eb02d9174c7179a99cd2e2b06b282c4d8ccf8f785684336861a3572645d3c187739c5413116e3581789c3b098ea723c70740900dc6af5758ab597be5d61c3921db59b88c260e96a223525fbb4749fb7afc8f50549b6cfeffd132dd4085fc4ba6cdfbcfb67317bcd70e100e09eec024fa6c0fe1d4db153462485026c0f2c658159779731aac6d8e5fc35031d540b1211d91f5246e08dacc2d22562c10fbfa8087365b4bb05e1d0130b7831ca6fa32644ccbe9e52dc876a1dbb5a4dbcd6d98bcba1648448d92beb7269ac856c2e9aab57a917183abdfa7d4aaa58b9528da0956d662c12923a58ff86e9beb980d3bfed95c72c3bec23ea3b20ec182299eddcbdf26297a146c324af1bc4863eb6ae5fd9d343ffa4511c4f628d4d76e1e2745b477488c6bc74bcf5f42fa6f5d38876fded895fc1680c0bd2bcc4e13519096067297d4efc187c8b7dcc154747d291d52a0198ed038718fab19c5295a5ef6bb9e9c6e82ab657ee3d80f0a28492e222cb816d82f5266eff4cfa9eb5584396f94c0e9b68a11a8df1b0f44e1ac2fd242923c5ed10f2b124f33d2224ae56b131b9b6ade3f0b34af5bc24fb30bfec9ecc38face8b75d774a30c6df1334a9fe16eead81e83c5292c8568b58d61b715abd8ac52538cf3a48caab61f0f8279b82c6880f26dc5ce98bf6b2f0f516ebe05ff629c67213ce6786cf348e3b0bdc57be0718c5a8ccb7f7c83d233108fca33f975855a8cff5709e70ce7627cb095109cf4588c07b81226f98dc578219610241b8063a9f616e330b58491fb75d72c7f588c1f700967a9c6625c60973096fc5c8c1f383f21098cc538e02f61926f5e8ca7b9db68d2b7187ff0b6519b72311e54456c40b7d10872313e06da469f7ff01fd9ab6d347d5c8c7386db68e1adf76d53e5fb4c28e1e18b718f9d8a2fc63f2d64a48acd636fada28ac0185771f6d6417fb162a48af758d39e1a1a9673d361330f50dd60e5a8922aa15142da3ad12c8354a3b754b9d8a93ab83065b3f74153515bbf3241c101d5aa5d27fe5b73f433165487eb70a3b984579c44c67f1656a777800df8c973ef80ac66857630c605db02c8118ab67c627e974209f885bcdcfa0152432ca2c88ff4fb8bb1241b3bbad9f58208d74067e1198a775a274d2f80ddfa2c4cae2e5760409b2f64db88d17dde0b7f97573b7b5474acc4a2f60eb523a0944f0cd3d6948c4ae40489a98f84af72c1002622608e2c86a3f4bdc938656a87848007138f835d2610840338ba8db119ae8e4d34c5547f3136877d34663afdea3d5326774d2f188ad96962b50582cce672e82ba31a9c687a4b4ecbd876170ef1825e2634ac7940290b53d32cebde0141ea7dd50b051b0431241b6e2ac8d902dfc1adbb92390b56f29aae50c44092f7b425c32a042982796f1b76c6a4fc57e06dd9f8ec02e1177c1e9985f52e4c1b75830f90ec8254dccb16fb692d50ff78d5104c1459fce901cd9bab83074a8acda67b94093e68773098ca41095315d5e83ffb5a2985e1156814f2b91e1fe6a3c594ff5ef7a1bf22fd13d67ef11510ce7768d3682f943710dc59bd88832e08efa4e24531fd49c88b7bbce9279c356b68a10869320bf126ad3e5cde555bfa9c815a16c14a8e4f77a841fac93bb1fba2c8f0d6a503ff7d7e884e060df63c7d3790de9e1c1b426d65a619ec9cb60fdc1aecf338dec63e249e0ce95696baabbc1dd8a451db338db1c00bc30e23120b72d229d2d37501ad79abe68ed7c123a0efbd5fdf41ab0278bb08286494219b191b3ae3d57ad6cc14a83d1903c9efdb26aa1e23bf3716bb16277511479166bcdf2d343f01b0505b64b89828fca886760061dc3205f52607672233e555318008c7ac4a28246241d17fba5f0cd4f83c58b6f62e0fc83c0784b21b6361b12e6cd1dc734e0cee5d99b19c0a3b3986af8eb9c5e995863de4f577ef10ba6b1a87d2bb7ab21682d1f162af5bce472d75748c821e88c572ae15bfdea284bc0665bb841e2cdc4dc9a99db470c514c750e8ea7a29014db90b036abc8e38cf9d90546e539888c1edc3a791d4c8854f70882ce6d6facce3d94f066fe446ea41565e24ded92ca4c835fa6c6f8c07cacc11882dbfb7bed63bc531bb83f49b5606517fb843688d643126498ba0c7dd5a5a66a5059f3cc6f99aa9203a3b9ae567471f3856f5cf662b5f92a695beb51a56fae1d11e4844c7b1452e2b7443f61121e68e6ec51895e8aa5db646812a48c0adcb38de7b9b0abdbef4d6161154330997913f3295790ba6e93e9be2c581060cd7e11b2bf019d5fa88e21629328372fba6ee5150181fa9d6b098249b1d7e2d5138a624d4d4640b294990f27ca665afc64e66edc93988df5b50ee32215f2f9956c3a78c106c469aaaf44bb9bcd8a74e69459f28f9229b682a53533c7015a85b361cd4e21cfb10a2944296c1400c162d421fcbeaeb98325bb0ac251c58e112d6acb2fae4186c6173b89cffa9781260b2d63d75e7af0122fdcef657dde41c225691945492d4d2b753afaba15015c7155212f55ac3ee8a0d884535429503145cd49a42e459192285480a536f10abbbbe4f9887c1622aff2e3a95fff846d0cb0a8d38aacd63aa1c459127ec4cbded1378256877f590774838bbc86ffb55c6e7058379946572325d7461e61af7f534fc72118ba76f6579d34e26f26fb523f310714b87c716eeb44de6edc874e6ca9f63f74a40f6c124bc21226dadd41655e26d4a075be6641b0cb754cf1eba3f4a00960c92654aa0f8af58ad4487427150ee628bf5f76f963ce21bd0028b5b79516613b52d2bbb5b5111dfb12a86041aad7e3e94b2d0d8d538f2e03c0e0b24fbd28f71a849c7f84f2b61028d93a2c4ec229ea1eea62a9f46162e80a0f6b38d3521ec3cff27338e843daa6ffd6422f76c51866c8bb5428df7a40b650dfb74e12890a2caddde4792fc61717d78d4a302a8d1d7eac90f0ae9839117ad2898ea8126cf95bf26f79465ef22ebfa9e04e25157493c8cae72b8e68e21db8831263d717728eb2ae8b7ddf80cf500a671fe8ae783a987090317d948cd60b35a2ddf06926d6aa3a6a04c05ef130cc975f299983846eadbb568ec6f2d0ade422899783f1f95003ad316803683968277ded00fe814733010c49edd9bef823a6d1f244027f60b5b90bf901cd3d74d7e893d5b3c4bd8fac103285026e6f0ee8baf29187a5382b4ade624a1547924385178297a637d0789ad2f78ce8df610d21d6d9282b3bf06b580b23e2c9a3e9ced256be1ab66ce3e30b53848dc58dc9259a6ab1402417f9711329e742d0e620e53ae2260525e0c84137818dc5c0fdf797b5f6916b547ec51931ad76b038663307de39bd68f94eedee9faf5171e4b8dcf6ac922e2972cf7b0158b69e4dccac2079d5645ea0f57981df50dd52d5952239205b135448f00e9cb786e74fa869974331e2d1c1f16029af77a6706d47c67c0f2226c51723ae391e063c300ac7f608075a5becc2825ea6265147bfb7cbad7cd3bace68ff1e10eb140630f313911c644eb1db3bbd7b16b3ed27dfbab70c61ba885382a55f7d8e894c604d3c849eaa9c5f064a9393a468974404517502f77a20e77742def7a4e8eace57105e6cab1ae09b172d393e44e4997786e103d88bb1a3c26e25e6eb2e0b1da04aad28e69a6a331a1118a64e0a10f6131e7b44adf08625d1c0d946ef9184a63ad230eda80da2a2a0d641ae212424dc9047c706217028db4c2e3805cb7e030b80003bcd409b814095d96e87460186e6074501c64f35fb6f26e1a3485380dfe9ddb2afc7713d9d2e94f740a8c78cf1cc66a8592aef358b7bec7e6b774bea81525f0532e40b53b74fb11c547db04a04403c7c2a7fec8b70266f71be7b438805e9cc27e3e26dd5d321ec89edc6118e499ef37313f5ca11d75e95de8db850b45d9ea4a680224bc6801be9f4b9e3d35b1c3de3f14ad5a524df2e6899d465fcd11f56d97231e8c30e2302387fed919cb7232807c10872c4854611a05ef03583fd49b3cf849f4c4edcd45b79c4ac3fc19de7a57dd24c88d19b9eb031a6d47f6b1459b58d719ed576d34dc25038a922222c02cd90b6832c94b9c930ed494f929067e363c81ef4ed0e6c1d716df2c5b64155bae76dc9d6c7af2866fb72ae473dc8bc0f8b40dbaabd974234f59acb56bdfd84004c5cf6c28ade0a57c36427441fef182b66a9e3459f11c167330eccac43e1a6b165f150fccaedb8d00697e62005c804736bbe4f8806bf1f161ef9554f20892c80783b1169fd4664b90b481b3d73b17e3074df02ee038913fcd74298a7e4c14b0291b8d0b6d30fd6f7a4e144d8dfdcd12d6f6dcd76a70ef35414d440373f3e485b507bca7f8323072c28ce51d63cc0ba02f9b30fa2a992bc596687c282935d82ac5b197e1953980ca8f3a9b952140d42f64d8d5f32114a5e65b8313520196d64ac62e6da8fa0a394d6c44620ee4e8b207a2c1196abb4af05c42b5b13f13a8487dbf3920ce3566de6f53cae40a697cae491ee9946ce485e6ecd9aca8aff46e26bef6f7c95d55f3aca17e189c5384fd37969614df480f7fdd78d0682786711b3d045414a372da6e01508843ac980551b30eab2bfe78aa3ba0c858770539f618319f216a2b465e3ef40deeeb4a536559532d90da689d9707a4be61f458a60e6e8667e9e310b35912307c42891cad077170cbe649137cf99a3dc31058a069109ee0c1c7b0be7c57d7ea1c147a3b48c07955cd76abfc57d880b310da8db642b42ed8a7cddf015c034a1a5bd1045ef9c777e807913d1704c4c01759702c00fba270640f53c071b4380415fdc308c38f2bb55e280887265ce44eb76c621c4708ef42a19d62ff490a3156d3d4304b6a90a9523f0bf7f64903f699e2045b4ab1a8eea824654ae0d30f82f99941547493697d80bd352fdd57877cc0a660a859ade66800817eec6419d7f6d74461b7caf8abf03a13d4b771fec42611f4275aac974f1472185908e03168b3e908679e941a518d869cc6e4383a5991d3fc109005f9a214d29ab75922f915aadbddcc8b63beea7b19b0dbd240eff9b88ee191e35b7652854df3c902343f0a9c3433b5fa53cef51258a796caf72ee72e42881e002a35cf2c51308c43d8c07cbf0696d264d8ebdae0da252c52a3ed56155ed60c434811c969644595dc2435c211b1f31a52e7e04d44ebc09009e32f25074fd007a7765451055ed39f91f89a737e04bc0e1dd516faca45edd3a270358b4c204a0e5885ee6921daee1e8cbee24feae3227447ac3221c11a700a143f710e81f88976c44534ce5476de6e059a8cb80826251a1ffdca2641e043a93ec4ecce5dd045ad952cf28ffd95dcabb3da70d1077e39a2acd4dc12551110ee8e5628d6dfe8b721a7746c9f113feaf582f8360f072061b11313f76604ca0879858a817a67f0cde0c92a20ff69403f1d8df23594524a10631d32447a13dffec490009c7b7059bd558f287b4c8047778c547bec73af1b5151f8f730214cf4651225ea5a44b062f35c9e21f285c424cfd16be831a8c1c97caa922c864ec2acf17b320c1abbfc17e4a1a2761d9a88e6591ceb6aead492c2ce33e221f826cc9346abaa9222029539afb54251c11593b5953ddf3735230644ee8634aef3f3e82cbc40ba10a9ae43af505a6eaf3719f3bf2b665e44a09a80dbe99351c926a7646c7ed2fd1a43b8042118a2d888dd4210a719050df46a6ca07a719dc375648ad8f8a561d0417010d30ba22f3aae13fd1a36b4ce68a1450e0ec8c4186ea2f0b5cb093205e1bee4121840a6d39c4873161a7e4a100bf689d9046f565b9b575a57609dd6f3e53bd439fed3f9aeee1ebbee25e5a6cbcebae28b5c0b067e3a032170b8f83ca09e1b10379a21e8c8e14f8c9ec727562294e8b12fb973d1ed98be3ca9cdd2ad14fda50281b284890c23b7e3c66fb5e8e30d5f6401c4c02ed27f34d9a56ba22d155653f87bbd205479d291e72fbca94732dd512565f9d64761207ccc0fe17b86719e1e8a95a9ead9a5e3e3655034b393c8370817bb607c78cf6c1421d976337f28439881b66c9be833e4fe7ae5719c2d9087e0feb2ccb749a4f22af7b011c07f7fd26445565275fd98de07db4417390197e694d27b7e7350a1d1a475b00350ad0e73234e35e2efffd65c09ce714c09d55b6e9644292cab75a08ac7a68a0ef8de66977f12555e9db748a436089057e44f73d52e3468f518bd6357f7a63002b78a5a6257efb99f3f62fa9da1667ed3489acdd2711b0a7b11591fc1df49261238389f9c46d19c77d1e00ec50ddb3858b42e8c45fecd8236fffa425a35ba28273af42e67747fd1ec91752eca57a044ec4ae804585194c6e123296c0d03f0d263eee08a354ac4c008b9097d37549ef36add0a6797ac84bcb33466a8e0b9cc88ee67fb7a1e1ad6521110956961eac404acd8f39d37c4b04bcb149cfc4f4d686b6afe8ff651bba61ed7c525f5b479c0b93993a9e513f13c45b2473d928e20206e7eaa6680a3d70ec60c37eaacbda263228d3a6696d96fd431c8112cb84dbfd3a4f0ab67fd4d48ff979022fd04686c0ca70742396472d1c37cfb01a8004feb0bee89342d07941a85028581d4785b556d3cecf9643c8a04343580ceb24b4b6bc231555731640b962a6c17da0a34f3a850cccb2d22aa839193cb85619dd2aa90dd67bbbc8fdf634bcbd7ad56ac04cbadc4db91b33526ab28a6e9fc549ecbd7c4be6cc77205a49d4ab4ee11b120da26bcfc8a9b53a4adb4490073c9e398de6bbb562aa1f554885098134f28993d763bd2d69f3554a46db72e2eca6c186da46eded9d17fa86e58db938612bdeba63ea6baa5c9ca232071e9b445359d6f962bd357e822688e93727149f7a0bb5498da18446037bd80018c3673ddc595eff3662c1ab4ae6e5d336eacd644a51749875acdcebed19d2ea6b7b62f6a56ada7e535d377798add57aba6986a2b2ec258316a298b2074500f2756234178d557159f3ba08eb2aac7816e7b43a4ac931c0460619bb15506e95bce3007a3fa96f75a6baac8c9fdab1218b839faf95dc121833f7c7e7d0987fdc81a303483415679292f48ea6671e080b6c2993c6d16b5818dcd02ddc83133274a5a90662698f600743b4a13c0861b8b96e0875362f299365353c1914c638f801acebcc4433764860d42dd512cb22be12de3c23a64064f3dee53af26af2d653cbf7e4d520a7ba073314d6699572322e93c62ffb088c35a1186ad58e2bb361f4470b6042d3a40e1768c88b606714c5115d65a3052c450172552b43a46c4d3e974e7cfa804aa8cfd196cc64f0495884d43e97bedb2e23f6330c71f1311d559c41ec09a430ad0708ce787884e365ea7411ee2d975c2f1b7328e87d59b36b1c84b32890cc0628f0f1d1cb96c9d8ab0f7b72d9a41c4c863725e448c3235c1974e13cb02908e1384721ffc01c235bc228cda9f1311cbdb25c2ad676d5cd84701f7c6bde4025f701a61aed6cbc998d327e1abf754ccb18b259511ec0dc75cca34d38c88642cd413a97c06f187b7702665574c207d057e4d7b51ce8fc4a84505c35fc618c369b3ea394285b6379663dfde08410af7062fc3b9376475184eb74b9fe47a76ffa0c519e1d8a61dd8384e7d44a17b871ccbbda8007d01c56ab4b25393dc5ea7f776dcdbe41f1425c0ef6d42d90aab9cdff48e103081658d4c3fae2f142533014d5f8c8c7ad2d796bbb3153e1e8e868868e01402b7d00f4ee7c8a32a7a3972900206da123478ef81968516276612f621eee491c0f9fb259251270dda622b9216d4e808e564212414c7194eb24e6fd259174a603d9ed4ffeff5611a802aae861b8e8c75147d8dc2b89cce622d769302c44cecb97bb5a33521aa52729b6074a0dae04d04d886864d08758211dbd17aa6e4877894ce99a719f05d73717dd7adc56db848adad8debc6387841a97cb9f739e08d8c6502cfc7b441a030cca20d709b233d33161e66e3356373fb7386b2e064d90db36192dad4ac11aa92c0b1ad326d462836c5a1001b7130231c74a55b4b5c3d0faf81f0a0af4a86ea0549244f109089a0296f989c5e19452dd7fc4611359bcdfd5c197a1949e2a2a06bc1e9bd306930da3aa1d569b5a767576b6868fe8127976e884f86aaf1697c3abdcc86efb2e5fbf598ee72f2c8f631b55004a3ea691cb15252d33f1d5211dbb46737f1736507fa529c834ab760e5120467f300baa2139e466518f4abdbd0bd8e24be0bab527a290f3d0aa4f98445e72ba1d4f792078cbcf2ba52f7c90b3e2acc9e8f5b0a226ed84579e37735909bbc89268dc411712494687b9983305ed1861a9e2f2e5230516422ec764b833582f7c29d48577452ea71cddf4926ecd4b0efc01d425a6f57df321cdb2415ada0f36d811a2617685c611bb6c2fdf799937e72e11d1ed13958242c401e98e72764bce4bf3f458027868931890e4f01d98c0bd1535efca13a6d01f5f13ebc64eeac2389578eaec992e97bcc6abb27142c14564e60527c8b23f12a142e3aaa023a8e5cb7c0b4e4e1ef6b4cfca0f7b7ae93a1ef2b97cf1ade05c2e17adc3c425f70d23c77f218e275b84207305819f5be6d6b2ff89c448c67dfbdbac6c56806c857c2132cbad9fc5d18211f7161333efa20fb1612222cabe272488545c4116beb041717732a1176bf87b82e4ff5a04b1d9392a99a0742aae7d284b4299fb3e8e5cb9f325cda92aed80f4c8104d188589349a31bd73d093da8c608a5a83fd39a52aa582b8f1c108d421bb5bdcce8e752341aa98a1bb2920389e6f9ad4d6f5d2623542c4e815a9422265c01cee1daa97311aad7762e2d499655cd604b46f11d19b6845d9331e6a8c4d44832bc0478537822da9cb26682d52ec4d8fa6fdf6c6c4165a59a9cfd5d19d94b4c7bf1ffea312b1529a48f7b2359c79f99712a83013060eb3a10faca4ebd8b1f10c4e6833feea60cd46348d57b46d3bca842c3761aa32a18e5bccc55c94e93608c1050e439d47a0f16dcc875c75d70c9a64bac6b8a18e7a9a3e7b16c2ac1b0d2ca9268a9273b43b329fd6b65b20757b1e06f3fcd12155316404f400e7f8a8968b8786c5891e6eb2c704d73f21dacc9fa1c632b52292c0c09cb3a02357d486e4854fd834e077b50e74628a869df9ece3435703a315483d713b5e3817427716cfbfb51c8b2446e56dfb8d72d6c57bb6083aee5fffcc067a00d72f82cd39a8aa8aa247b9e2b944b4549053140ee6ed5a27fea15bd26f7f8aaeefc1b21c4ab5f1912164a43843476000278dbd315a7b9726027048d4a6ea210f24ec8928b25ef6ae994be1f3c2bfd43701f2d9c5975e955dab176f1c1b5deb910b473bd198e739cd44b74921b04e816c89b17af914ad8d890f38f3d614bd5ab25700c690e42b926d5c534100b8b07e3e3e42644a22ed40a27b6d1864c003b0bd1614af18d6f595e7d9065fb9f672a04a3306d171f9bdb3aaed57ca53fcc4ac7df535d3d9f1b175b70678f18f91e4111ec03cb165cb4d8750464ac1746236e3e4c089111443039e26025630ac7559647007866f668075dbaf20259d73f3dc7f62a32d633fe0d5b1de6ba66e4e580aa625aec58322dfdd31e59627657566efa90d5213ccdba41d157fc8459d9f7d46543b8b55d8270a52c2928ef018ae951a190580f85566a582f4b5d6401326bd68d4aa1dd202c485da186fcc17556434274b0796f1fd821cd6d890831f5740fe6e28d4636c55a9ba15bd2f257125ee71d6476c68e4586b4a9dcd87a36705a1673fd07feb085c0dc325bae2103d933a051c23cffe0dc8857d14217aa24838d3336df16c22957f5b32dfc82bdae5fca478aea7b8a5e48a84586a8beae9dff2e04412f2da3b247ba677fce521e4ae18550c85e186e286d0f850d0bd4d3dd70e14e59334df6d1114f2550ad2ca9b5ba410952d1812f638c4ba3dc62a304ae6e2ee44ea6b9816d7f7d34f0bf2e2d8bd8b1a669517d2701cd010838500b49e82eb03ecb1f2c7cec0d79f2459af975e655cc5737a7688e823965f314cde99bad98556306cdcc3a332ae6d79bd33547c39cbe79bae6f4cdd6ccaa318366669d1935980c81d4f4da48c21ce130f3b0548670308b6c963200f06ad7fd59c4906b5f07dfec95de900df5ed03d2b3d18638a236c4b5d931146e1c66f04a8eb8b0e608789b9396b472033f9183522a3ebd47bc2c72b9c11978e3d8aee5ac75871cbafa59d83c7494db00cccab4f5838c827c98452fa05ac225b917e28155f42e7234e232cc916cd6fe83fdafc4cf608684d84776d65e2b8a76bdc8e336621952d0efa3fb406c7aaf90c06622144710a7e7f52347949f467e12f39955dc11ab0063c6ec2aba40e91fd6882f7190e7b27b77bca0df6e720c9e1e88352b830f29ab7c4c8dc9a2a343a4003a698ab825f197e1f49a8298580c90957bd2a674092fb5588da06c21e78486ebe6b33f57fb230f69e2595b577d1ac2c16184d301a1252a3f188e44313e5ad01a7854032c059464c429494a9d612ec429ed92951f7d7649500286441d6899075812a3b48923280d58ab2c39e99d6d1d272685702862d74a24b603e4637e19d4f762e17640b00b242ff06c2da16141785ac17703bb1238050cacea0bdcaf2bc8198dd2eb929b0d0fbaae01e4f83b75f4e1605c17ffcf52c604cbe9beb4e79022d7c170d7d311cec7f582e05e48ca8585e5733ed10baa0f8fa6c097a29a35de2ed0add171ee5efdc7eab43504255016112a0b93a8cbc8daac02c73f616f158c7ac0b160a45a271c8499a061889cbf497715ae2f070357a75d92c66d8d75cdf2c2d1862bf2c164c42dec9da3d980b06bb1d799fe383d6ca30989fb7d765e24d64d947458319e28cb201c28e1b80957d513c831c41bc5faee9ca38e9e65c96acbd4b6bd3184362e311496d06ddaed82fe439b3fc0464fb5026353cbb055a33478a44c9c551584f48adbf22c29a5ea348b57f2590010639030cb769e4d2d57afe165204a0a795dcf55c48f2134f00f629d9d6f9e990e579b094f660000a7d7217bff478a52e9a4ef98753d8f5b81c5e7c668e47b5072b9d7d704ed3d82368348ebc7641a202c6763764376a888855601fd0fa2307752d2297049688102bcafec463e56cad69f2b325680ac6f18737479121ce643e1d527d343a454e95b8c0f302b4ec4054c1197a83b8f688b3884019aadbffdf91ba2a5670af07a9fe036488f097f6446d2f575731d554e17afe0e6bf3ad247c70185ed9b32767ba893ef0a5f957ee6fd8151e47c4c9345e72753713a43b8b2b9932ba784714346c1e445ab256bcacf7f8dac74ab7075d60051216476160b8a7df38903635005f2463202178ad3b9b61c4cd7878589fbacb3b4f1584b2bef9bbde10eca51fbfb3e66ca711e3c24d3bf0a8990c347b0992e5a1fbf98fb57e5605eb1fc7dbaed207dde632f4647e18b694fa1fb06affd87f5fb7e59576fb751d06751bba1ed26ec285ae53525b78b89863eddd4db63bd5b01767badf37df9a9fc685714cd41933c25c61ebbddea5222480c4a5a0b5c4c0beb427ae5a329036a5892e3642a3a56518578d5e0d8e99b855e90e41b85ca8e89ba9f02ecdffcdf3543788d7febcc0963b706afc2dbf1c587f318a922f9526f2b48dbf0af4d984e46e8c9c2c0f5c94765161f8ed26f337215450d3276ca281a34c62d6a87215b760a6f82e82c8cf1218270c7bf13334ab5ab4c468a38762ca4e944ff7782c58274def890506a70718903ddf77db9084b67ea87beb7696d6a603a15a780d251dc215ecf90a89384df4dd19ca70125189d4eb6dc2c8d8a063f0cd2f55d5fa0ccc7c9a4f6d6da6236e034e92595cedbb40b6c6a52fb5d344a1c1b87262adc8387dad6b8d8d67987dc2ab63e562c2cc85877638fa00224548e61a95918d65f25c355bd69c69a290638c7175199a3c571ff573404ec2002d3d6c0c88c60d636cfcfa9fa735021cb9945eba0457ba7f7ada2b5606d5222b661ab6595b363badd5299c5e0d439557298e2d869df4d3f311256fbd71e372e729ad89b692b282e72460bfdd2d611ff8bb217bfbc43af150bfa5f57c9fdb9e2d388fc0da5996bcc13e4dd797c9d88f2257b8e5b1c91b33183b48be6ffad5d5895e212bacb8b6e7c125032e9c9bdef56f0de121a3c59eeacc601ce033cfb67829dad9e4f62265d33a68ad5b2fa60a88eb0dcfbfa1fec0ae229ff6193c3e51fac250e3d244968043451fa22c5f4a0629e5a31c2580c1df8c49d9426830ea0c16df58a2d252e8f4eaf5829e9867a74d5e62208dbddf178fba7d767209cdaca43694716452bd29e8f87baefac5aeadf53e0b1be82872b5a7e22a04d06d0e70b76f4ebac7e5724cef159a26b2ed556e465d90b274c42c22b0979f4dd556cfbb174f5e423746551dc7954b2277327add2605eaca08f69d06f6170e93777c649417029213e1b83c511f51d67359b21f53c08ad985c7eae7a60fb2613084e16b0c1eef4aa2d2d2e8fae575aa97431e86285956a17872e5758a976f768b2624b0ab74123abbe84726b8dab97bfb34ddad42d363c0c1607015e320119e8ae56991271f3686a056550def9a3db8b2110d1f9aea044c2a8896f404fab1b5b5afdbabbe6561c7ce00bdfd990bc5c6125dadda3c94a5b22dc52e7fae5390c40c86dc822d6faae032a9f018503f7de49d8a688f8a671456c8cef98d8d17b10f0f46e722390372c1c8c82466f94a077ff209d12e7531f7c148c5ef1b641f46c718cb56101e2c8ee4a2afe79cee7cdf9f06640949f4e6739c4ab621f8e8337c0d1e5c2ac8e41dbb347e482431ce5efda08b5fdcec1e73f3eb2476dee8125e6649ecd3d906f7a62ba975e0e03328053676881666d9cc29fcb70afc810de3a69d11a89e119e2976bcf018fe014a803e540b303626e4fb8508d886038127a82ace116fcc5c38123a7d35d94ff13c1ab33baa7062ed976eb8e2daf51d450061addfe1ff1875c8b5b58abe3de85bfc66532e265595b26eccced1090070458f159111006d082c46e8793b184b75cff8e1dfdf55098e98606498df4a76ab82a57752068c5072db11d69e31a2e43036e58fece0a95b38ac450bfdf02a53a604bb28c9f84c95192569ca512b47afca9baa6cbe09816415d99ba7bf2fdbaa06082b516684be87ef1e8237961e4b526492295049186185163c811954656de5e2f84796fcdc9a5b84504204ade1e97cb34ddcf439d7abf4d127c5b0e83fda12691e073d963ec80b3c8b7c69023bdb2cb6f3c1141c7e0acb81d3ba81f245f021abcc5585b40d2224e075a0b1b9cc129e11420d4f0bea9708f6c4e0221d012f8fdd13610224f3f42f3a8393e3560a38185fa3b88fa1e6017769e3477215bc6d9cf27809e910558b2c90e116ff66db3bfa4a8fe2089c9b6f7de7b4b29a54c52ca180648050205dbc6ca22bd5d035c3f88e52ecdc92ccdc79d4dfdb497d79a6f555ce3b0dd524bcdb1b2ffe6efda0692fde5b04db5ce7dadb3a935c80d7adacb6b81581e0872b9ccfd9b9a0f62a5661119f45a7ba240ac3d5fbed77299fbd26b81589fd7d25e5e4b7bedf9ce7156671d6735de557b9cd57757aeda8b336df356722a758952d6facd204dc8dc2439b59b733478b8b9d77ed3344692e5f6d3cee740b9350f29087b4af9cecab5675bc07bec7f1165ab1fe83d2d785be2072f1c6b6cf0c211822dbfad071fc9e0e7b5f594b1fff38a34f2e517e38ffa9fd79e8fb71ef9719886763689cbf0486bbd3ac8dc756a90cb94bb5262b16d1bf89b8cb3b3c1768e5c2be6ee1c19c45bbe177f7edc3e9fd8e20bb8b2daf33720d2e38b3657fc3825f246392853fe6441ded2e50637d72283a04f6a4f10d4b3a76fb96dbd30a732ce59af070ed9f7354933cf18f9394c06f9be30a52b2baf4c3081e3ef3a0339b694b4111369b8aefd32bf88f4ab1e4d92c4a4596b7407b95da5cac693247f4e2ee218282229b861a4d582d51222c0c12a091a6e10c1c40910e84061a409540cab87512d0c111f4471cfeac3e03299d76b79422e3e1526821e4c4a297dd2fb8099e139e3894d7f851963370d79b6b7234ff8c4ddd94052f850051228d430e30549524ca0940c1104172320d2f3832474f024438a780376640a1d399c28c391f4c085c7c3c5f657113dc9070cabee0088ab0315ae94133f70f27252c49770a3891551dcdddda79da639e7443911777fdce40a1caee039a38d9d224b74f084174bb04863fe50c21b4e449182335c41b071a448966537f8ae60b32b3719bed90e683ca009173460c1163ad8011455111d2270939b3456e60d4c48184488123a2e2a7c628826a008830c1cb8a1041831349680a2046ac4c007a624a609e80f4db4a69d73ce89ca3e2080266c2c99215407a0b88155c60e46e8f004091519586bad3565383ed89ed11eaa506388254f9210c38b2aac3802959100663b136bad357d88f8d80236e79ca8ab831a5558e1c62582870d24b61076e4610304610f502081161cd1a1881f88d821891145aa10be83bbe700060aef00061148721224db5f45e4fffe3e60665458a1c553c610fbb3234f1947ae18630a364e3c1c3181ceab882147dcf0f2e2061f582e2172b87befbd30d89a6d30dc1b726237ed1aa128d83449662dbdd4aa5497b544e8165d466f84844184dcab9a011c69e8c4608b29ac20228d957903131206116275481842196031c8804a02a6061560c56088385890e48bd810456e2e8db259ed46481844c835e26e647b124b2fbdf4babbbbbfc0053bdbdda9df6ba180326bedb5d7628b6f666b766b9665b7da6a311e52e48d266fcc21c71234c0c0f866d7aa64d5656de6c3de0f67f8da7b6f866f666f97d17be7b8d6de0c865006580c32dc8b4f2b68e2045fb8e08b1ee620819f20b3164bd1848a35ba790313120611422fb537970a369c843279336b4937bb1a8ac87ded6637bbd8e2fb052162fb8e5854b1031f3cc8c123c51440c8400824dc0436eee065adb5a61b76d4a82028b203c50c2ec67082872dd6b0c24813352e44b8fd5544226c7f120cb7638b05664061ba288041102e1edcf08336608083a750d2244d504020d42e320f21611021f7060bd613ca12daec090cb42ba2f674add5b2fa6447db819fac605bc137fb3ed224dd3c51e293e90877b0e28405193d58e3062a20822092822742742a37f572367473b91cb4c051c1089440811c5a00d1e48a14504a3950ad295a56b32cb336ab3bb2ab564dfb6815869a85bc30cb6a56eb0b59e5ba1720e07200046ad57440f184c8c685a0387972c3568219e6d08289387240c6131b94208e1e6cae654fcaa0806856afb5b68a6c8a2ac616a10cd36a6d1683cc070cd965b1d86b920116830c978392bbc081521d55acb07d010601970320407d70038725c428f2c613398ef80f46b45678b05b08e20bb490030e3266d0640b1f7c2023b4e207fb821195eac2b159a6d9ccd64c8c229da53730216110215966b32cd3320b029ad19b4c8c0f74d6434d0a171536cb30a534b8e294d52ccb32abe9907dd294c64acd7cd44087cc7c5c0a83ae669f3459bf3b62614592bdedd80a83098a023a88610732c2285244b50446821e86e4e4f00513d5175e2c39a38723bc488c125a87fe6d5dd6dd01e5bb8aa0d824754640b115d562a0c3e2a7937591e3cb1833fcd974b4df3c50cb6540302fcd8fb54030ff605767fbae56aeed106a1532852628e645cb65b8edb4bd9eed9aa4f9284c0defcd7b81a258fbe96cf0fd2eaea6c17b42265094499aabf86382624932e8ab3d3d0b77ad224d94979e36983d0fafdc590360046acfe8d706d902d7b567a8ef447ebc1369b2167cfb2fd3118a2c37b9352d77b59182b2ec234d6d7a643eedc0dcc3913db32d83d8f8c1dcc39ee09d2aaa146450a4daf3453b7827fe98cf634745551f858dd8e20b58daaa4851302fe507692a253a941dbdc7c31daf02ca420fe6ade167896d30bc2fac25a43f57524ab969cee6da5c17f6c9b92d9701e156ab058202d395524a77f0506511a8a5a3cc92cd6ab2dfa29c524a1048cb4c63d50679e4f048f1e041b48325e6a5f9b1588f9d15ad7726693e8bd622ad5d5ed22f0dd3e1ab256c0933ad6ddcb66d0ed2326524a7c78e97521b7451b5c4744ea14e22161d63e1e153eced416eebcfe4f737ee627c4357eb988ef29978d80cf4f37980bcdf3ebf75369f550f57d7c3e5c9e85ed7d9d0d0b5407777e9eed21df42110d8238b0d0abdd4be57507b3e4be9873d5f25b56729270b282c51401f4b8c25b6afa7b1c43a3b47962cefa59e2bbf5d17cf679aa4a9a34cd264127fcc07691d6342c74a4cbc8fe7fdfc1293481377781d03b29a1d5f4ba87beccc981092ec50760d34f4b584d4eb6cee69955dda1dd23a3a7aec80a0b8b072f67c16ddd2864ab4439ff67c500bb5e7e7649714a8b557be96709270122c5178987aecb88c0eff5ac21e3b3abe169658931ae88ca93f3f9d8d7f3a59d68059a3f269ee486689f568324bf3bdce06f4db87039241ff09fda7b30941c90efa1ead90eed16492742cfe983d7654196ce9b1b3e7bb98660ca8637b866db4b4e8d8b6f2920b6c79ed097a8f8759702cb1d89e9fa2fdf3d645399d56db614ffec7d33a59b8adfcb96d35726d7f8d468953a91c69f09e5c495a1be4909b0da00a91e88e9141d29ee0e5b1b916e90cd9f2bab664618a46d7e59be4ee1879e22672cc18d5c3165f40106ccfdfe8b55e31d67557bf5a677babafeae6504a75b4d6d65ab196f75ed17d6bdf7636366a8cf5dcd5378cf166da7026e934497875afbdf86fbc166fa6cc6e39cb3a9bfb1bc6984553de1af1c7fc9bba466ece0af4d6d833a60d9c3dfef9de1a91264e24f21679f075c53c70f2d8ca63fedd9497a6d59c17d7c84d85b13d1fbb3653c6b98e35b86ebe24dbcd56a9e3a6cee485beb399dce5df66f292171ed6d9a6d7628d37c5fa6e7a2dae6ff586334b733e874306bdd0b4e77b61c882dc94569fd25e1cb58deb40301ba4159d3163880a9784219da4d61aab0ef7442fb2dcdbb7d65875ab561869a8c7e3d8f3c1d09e212a5c128661c89511c60dc3e3d85a4a32f859b5d65875ab564e185924b7c9aa9a5629a5b5da5a6dad34736b2dc6f8de2bb5acd831f65a99d427aae38a2b185289fcab7194d84dd334c7d86b65529fa88e6b86bdea0fc472100b34c594b99f740dffb665186737c39d4dd534ecafc2c4d871b51aa78d9129ad3a5aad933d904caf77361809cdb28c661bdb2a35de58df8d29e6ae76a991da6eab75fcab96b14b247bad499a2e937772ab354f54de107ab04c9020b14c90e4ec395d1469e44f27b266b3ac66afd5f7ce86862cd3346bb3b737157f4c104bd3a029403b3765359bddd4cb65eed34db5cef6aebdd7d55ead95b33ade7badb512634cffbab64a24d6384a6c9665f7769b94d7c5133b1b102bfe98da6b929c6830ccc46bc6b4b2f05c5e1733e641ac489355441ce6aa6fd73adb637dfa9aeda3d389ac719ace46638cb4cacde22d8258f6351bed03dc48e31dc248df1dc2bb6815eeb5cb8fb4dd54e32809c097011b4c3b00d4e5471fc26f2c2e3d748c3f42d0727fa31d2e3ab891aefb455fd6dda1faf3699ccf69a2f0793e4ea428329847ffa39e6d857badd3d23db8b1f6fc16fdd19aa642d01f93cfbf3b91c6458a0c669791a67bdbc18db453fd696af2d26b1dbd248a3263a64f97a13f476ffa8d7e4c2fa3ef3d3663e48e792d226ea4270b37d2920737d271bfd669f910b4bb688fc2ca2005218e3cfcf6b54d3b1b1030083a7b1e1e238194b5e7af6890a44383bf418f810f6230e78f0984d9a83dbff358cc63d77581eb8ad755a3c45d5264831c323d135e17c67d9a96fd45f22d46e8680e7d55546d599365a9563116c61ed8fe30245a61015d55f69e3e88afcd07627a5ae1cba75c421c217399192fcd99bc3f308b54f840d123e003ff009f013efa72999b9cc2076611cd078a1ec807fecc4be6036154b5e532129651f8c07cc2a7f2f18df0a52ccb65a66b7e0f13ce00f8c02c7afd814f2285f09dbca49a0fe3f28130a4960f24fde8035f94553e9c452c1f28fa17edc068909ef6f65b8a963514a5b2e3e7531e583ef4f3a908e6d31d620aa2183d451ad0ab622caf723b1b1696ca817465817255d3b4419aee1d3a96007aa8b2d24341f147686e1651dc201d9fa212fad00703e9b8630d3dc1282abebcb43dd5397c8d12cffbea7dbc3de3323487e6ccccd09c999c199a435f5e9a8f71ce22d1d3570c552e535128154a8552a15428154ab5ab84d59684499884d5964cb98c9d2e97b1a614c6398b44ff24126bbaec85812191fe45a29c6d78c2386791e89f44baaa2559fee7b71cbce93627ca4e55b8a5d7560d2735519665ed59592e4d1f0dda70cff7f0927c55fba33dafd3deda701aa7f16fdabe764202e8899e223dd528f10b63831ce2f3965a90e93867f741f0fe3c07b29459a7fca6ebf63407f096dffd563b9bee9bc9295d4a4adc29b9dba6dfea9b9efb8373fe709bcdf9419fc2fde7b72ca7c4f80344022863d6317a9a039104d21a826412ea9c72d3ce46fb8a3f7bd93566cfc671ff0e01836c6a9f6e8b24cbcf9e4a4dba1037c6fa729cb53eaf0d7288f4c903c6a214234dd66347b5cd9594524639a594a1ebeeb8e5eeee943aa594524a29a594babbbbbbbbbb3b757777a7d429a594524a29a5d4dddddddddddddddddddddddddddddddd9d52a794524a29a59452777777777777777777677177eaeeeeae3fd38c7177777777777777777f1eeeee943aa594524a29a594babbbb53777777dfaee6ee2c1e4addddddfdddddddddddddfd7bec50777777775fb9bbbb3b75f777777777777777eaeeeeee5427a3d4dddd7d26c9f455704aa9bbe325dcfddddddddddddddd9d52a74e9d7a17db29a59452ead4e93b759bfda0c18e15946badacf20ed9f7a377c8dd624bf78f933d1f24ed8f9319237f7400091e604f2879caabc50736823d3f7e1f58fc315f051924811fd876b96345c36d8b9f29a5943c73f2b853ca13677c21917ef4a317518c314629f317e39c73c619638c31c618e58380d8713249d37b792e2f4d0ef4d0613d3052ca64dd8d1ffc37ebae33f92765f28fe963da73a5b7ff68edebdc5ae83b2bd60ea5740807b5a7bf324d9b38d4348d6e1cc7893097a969dbf06f9d0df6fb8e5dfbbe1a4789fc1cbec6b3982878cb3d0b6f39be1c773bcff33a9b18b3ce7f9318df7beffd844c5a6c3bcd18f0938a69513613988a34b19b48e48b3f1f9efb524715e629b68ae1ce058a19a11ef33ed1bae772d78d31c61863a4c17a16ad499ad9ee1b0230cd21775ad7165f400e457f3bec85499a4564106f06cc1a7fbdde61b7a7a707a427909e4c1bc4288ca27ad6582a32f8828a2ffef5c49a70baf285b9ccac99588b2c7fbe38140fb6ad067130886f59e5c51cf04d31a577069f52ce214ff2e4a03ced4c7b7f9086d9b5403fede9f672db34ded41fc4977ee0a66316bd745fde8fbe0a4e833cedcdb72c72bddbbc1a6f4d479a6f94a71a25f5bb803c55771f7ccc22d156b5888b2c77a554c545756efacd1a486ae9dfec4f6495120dc26d6af3639145d74e3b5d6766c66770fd48a9f6304bad55a5826aae2a75471555d1aea39ab2eb6399c27f7566e3bf5788be486342fc317f8254523e5168b35ad6b0c817920a920416569024cc970f06f206e96b0034b380f8003981186460a1002aac90520017422a211b6c52de05b0fe07ca0daaefb1502b3864d39a8f5737ad35b3659533354a2e303387a41cb1c9eef38cc1dfcc5f5552624c2885d18d297cb6ebfc48f50c354f12e644d9ab884888a4f9201d2349f353b401e20a01f8d1bf703fbdcf3ea9eeece1ce7b52fd78240280347bf2602ebbbdb67efd688d393db9bb83209d9e9840a1dc5155fadf3fc10828533bbe0c379a499ebc07256ac79f2a2e07c79124ccf7d38c224727b3aae63b0efec0ca43f6d52037584d7b3e4ede64477f762dcced3a5827cb973f2202dd6b9f0d203c40d6682f6bb4efc4d5747fa23538dae7806bb8bf5ad6c8ce01b4a6fb72c0e153a3fdac99a00d9c96b184ec25a7d512b22faa8ee4585515e7b4a77fd59444960f56930c2ee3357ad6c84e0143f606443b8868db9d81f8836dabd7d0abb5a15dedf9d651212853f4f3476d1aa3bc7a089d93e5a81764fa604ecf063dc76bea47a9c8319c783ece1bb574d2e928476d3a49711e91e5db495beeee3e3f0308a8aa582cc6c4ce95d2ce91a5e8e24c4a1b29fda5fb883bb3882c475df7d4dda9cb22381b29bd88223e6c8607a4c9dddd5d4a9fd3a7c71f4ec34b9c2bd862c65cc48ef2548eab7cc5da51a9542a954a750313927a1e267acd4447cdc8fb82f5843137a9542a954aa5ba8930332f553833ed54cd156ba7e54aa552a9542aa552a9542a95ea269c39aa187aed99a8994aa552a9542a25612a954aa552a97a522ab962edb45c2f094ba552a9542a256130985ca524ece4273ff929954aa552a9542c0513927a1e267a65178e2d3f4dd7744dd7744d17c6398b9e64c538e13b4294ec33900b840f6398076feb86393f3ef5f2a0c34600bdc7c736f32e0f62fd208c7c50ee8f66f4f203471a84bd496ea479d0c98d34cb17bd34d2a23dd23bf656b9915e8942eb8862a455f68639ad63fed328bc8b96f91174017ea443fb8756c20059237f00370cef8b963505f0d80d5d8614e24cbbe7ccd33c10203f9f9ae6f6e96c807c337906c80c4d3753f77c92e9143f9bc7471acac3d9e0a829d2ccfc7c9723d200f9f90e474c81e6670a3fdf53d031d2b8195b3e1034b6fc198723c6cccc98414d91467aec45c71a00681fda458f46eff232bf799d8dcc379347325aeee7462aafe376d13af4473446d3140a9a5ed8288f3468075d5195c7288a9a5454442e9060605a5bb2b0b04e2089a049bfa590489fce85b849df091bcba17898b9914e2100281360a4b38f599a2b39292fcd1130c7d1d8ce962684524c18e94fcbf5da1f9c599a61092aa09712be47a42247da83d1a096974838301385194aa176eeab755dfb635241794c870e4c4dad18093a423e4820853f1279dc4877393bff00f4e787fee47869ba5e3ef46704fd39f9547978595bfe7d451a979f7f436aa23833a62402e9e76f2eba85b85d48e19eefb209407b48b208eff2a52769117e5be96c4adf4c16a1a4e51e69b95db48a08a39216c08f7404bdfe88a03fa056a419bde86382b9b88ca236d2dc7eadf3a24779a4b7fdf198e750d3c94b9e87473a030598afa814cd192a5acad0900000004110002317000018100886844259146639146aea0114000f65944e665a3a1007e3c114456128c318428c31c4000280218428848c11d90040a1a5093509ad82315c064f1295824b70e31f8e440e362744b8f4ebd4c864566e900ee18156cb8f06f1583b67cd125b6d67bc9fa58f68eed925db16bf9739ae90bf3d954327c088ab79123e0e02677784b00c15e0426dcfc2f5036b4e6bb79224413f9f818c2457e9e7f32d48d24f269211347c1a173bf3a00ca5271ca610d8d2acae2143a5fc3bc5ca40281e7f04cc1a0bfce7969373a26cd64a99e2d40714ebdb127e2ccd8b9f5901cd7e799cf8b1007a61365e53aaffef713c1c08f977d3f8b8c399578cc2250be75fa5a1099786fbd96e9d57428c170ee9786105fd95e322a7e57a40149f1f9c0876370f15ab0cd6a835bd96d8cddb3d77186d280c07e1e324b84e72372d39c03741811a9bd2401d41029d48e13407d3e927c55e4166d46c9f988d8c02703ca704ea02c35b01d4edf354d7deb9f10d9680e8d729e48a82dbf2092d484d076db87968620f2a25fb512f1b078b2e6f0d1439c53053a2d168829222f80b34262648de0531f49793d297ff9f8dc6dc5505f6052b03376684a11545f58b980f16029a2fdcabac29da2d5078b1e2c6898352c5180a3330314df3205c53f619906db9a21747728f69cfb354fc37f3eebfd9494fb723473c2e7c7ef0a37ec010ba67c0444e3e934bea254960d1c262ac06fd4ad02780a0191594362d91cc5bcf3ac1ca315b7b585a86ee450d7166614f623987dc75e1bcb531860aa520b0154f480e2cbbcb5499d268058168f2173643bfce00856f2a3b3e67c6c2b893c59e1d2f548157e8a0e3eb7aabb4b0b98f6efa012bbf6efd50a1209a3f3c00c4e53795ba03fd2ccc9ae2c07c990e1ceacc79aa982ff70b360eb696f546a81d16bbe242b0a0235a3b58399b952705ad4906e29779b594af530efa2ae483e0834ed3a9eb49041ddd988c028bd37a10c4731ac3720e89aa7058428be1f6c9f243041b8b03d26e2124f8b2df102cd23c028491660b81eb788e2b78ebb6107ce6e4f48ab5f395598405485bab004c13e4c652ba021a3d2a4e5ca14ea806a40101839b5180de3404091850cf612ade376bd3c251e5024851d03ca4295a8498c771afa6f7d2bcf270aadd0b9bc8fdfaa43721588b9de6c1d9565047844396eceb13f5402f40786cd223eece080698d50476c89240d0e85aedcb87afbe288ffbaf989e2e52d8d6a5d9575982910c558c6478013ce605d0e7780135cd4f8e502b0f43695e17ebe761126166a97adb5e84fa160b2c4de2a240e295f674ea5b4446d77a3aa61e65ddee429a04c199c66df6f240f63cbcf6bc380c246c030c4349158f8720b7efa593db2ae8ae104196926b5c72eae4593b9108c291a8a82d8be62ea5ee0d9285898344162cf1dec8330b7af869df1a9f5298df39dd438c444cd03d4ed6e50111bf20019ac8269e077c8ba0272441f7d713f8c96e6e219e169f5d9b38c153bcc00e7040bf1fc4f0408525254030e42fff586b4c299f7386e66a2d2d76a73f3e1a38d0b7b0da806e8bc916706cb3cb8b5e0ba12276fd5606ddebe060fd27563a388c5528c250ee8e3b8a309db3efeb1c50ca710e7954d496a6036cfd1293c04241b2eb9bfce27c9c940c19b3dc59d4b78832602a6500717c88d2586e601083e7392b3c74dfc24b506073bb7677c02dd0069c5e77d1f6cf7bde0f04fa1df4f1f5ca4e81d25dfea72c6d90ac5498a335c03184dcee13e9f57c3669bb94bb36d806ad20ed301c969ebee5dd7076f14c97902b305356be2865340f33699e3f30509fe72d51571803175ad52259cce6f89e9cb0f322ff342c86d24a542da116662c680a0179972fc01de606ccbef1231083a6594cfe22c38e5abc393c24cc52cc24c767b85dd5b0878cf7c5fd9ea602e8920d1af391995923e3bed9c53720c1f88a89077a71bb4edbd90d2c7ba090b50d4b313ff0fbc0f424f4d069b997d984651cda3c643058774dd8b69d6bbc253dbe0272a961c2386b855e6ec077d0dabc541e70d78c24028562b983c4344dbeec4170b68fa8911d571da2226d684d97cb0f4d6187851fc20b4867cadd1e4335d62071a4563007bc4005c0ba8ca4978bbfcdacf3ca2f002dbb4f991f5258c0d6d51e9e8bb92bf81cace5d311246292e91a2c30e81a8c57705d0063e6d0b13f530994f4876019cbd9ecabde8ae8339197c1d084f929955b2d57a3fb5ed8dc0a121457c4d6873d811d3cbdd42c03564ff6bbf6064a4762efcfa0a908cb344dfd85d7d5501dc49a00efbd6f095f16eeff0172d5ab59359ca5d04fe0e89a2e85f0226711c3607e236da5eeea4b6d806b7e344181aeabc3e3abcf4130fa6d1190e487128347535206a1e79fdf8e4d8445743133a159289c8fceab37129ac37983ffa227ed14240ccb6e97e06c1028be0e8be2edd1096ecb1ca8d86466032cba8cee07d85a340474d3aed3f599021ddc12812193f0868fcc19e2a134facf37ce86f086b769bc123458d25e2ab9edde2622449525caf077ccbcd3cf9a83dc8bb4fa7fee466f680793c0885d1ada9af0e60940a1dd7578cd4edf2106fe9088520422130cfc62c5810a93dacfc5a6bb325c4d0280a2838bc171bfad4a0db324d314f767307ba83899b09a12a2f19838f6413e2f1d6b319cf13800a31766280b499080e9646090f238f45cac594a77b52729c8e2f0159cfa8b6371f43e842c2f16a70fc0607045581c5a76e0978d30c1e2208a0d4edbaf380bfbfc4f118e025bd4bc579caccefa48c32ba9a3d56cf4f094dfeaadb3cd02a38b03d28a231451a2961507943e5fd14c386ddcabd8841d69669dbdd125fa2759712a7e7f4bcadf1ad3c84d805cc3551c9b240b2366ea324a0c717efbbe977a037c6ab07840bfaab3065559c51148ed6722deb850c5410fdabf7008b2bd7b572570fb1b88fc518a0e9b7223aa381d21234cbca306ebc2ada408e126acce64ac2bde6400f02e4b1cbfe58525d64552e67d0a8bffe9ddd16d91c421657614a04d8f336f7310306ab9d60c0e32fd452be7f11d29eaeba71ac35599711c458aa18b0b308ec11e1f24a06b3ad247c37590ca452a34e0e61350fb93bfac67d76b3977b2607409ae062a68d9afed63cdb2ab8be53f4f23b5d09655616ede8938859e401255e9e0834a0d2b6941674d275abe075c6e38491f246979a9f73f6053cb921e20b136bcf4cd3349ddc0278ca75e70b81310074d3a0cbc6555de1b5b9314f10743703058770f9a969bdcdd636ac847314e39d4d8da45f78a1a8528ebd949944381c04343fcf029445e0f3fcdc0ff44d7311dc0764e987b48e4500e33b3eac0b39af41ff126c30a23e8b197463b70cd22e0f242051afc78076d200c5ab6d480c95b96d403da79d4dd0404f2d1c055d14335afc324b732a839665ea53e4490e735b2c8a780a17ee001cfc37827176c32882d913fe9055554239e9499468b283f11e2142d59232adc1e5a12bc01348c622cba1dcc5862d7dbc1460dd2e66bd36dbd3403e1a038d01ca435a02429db2c0f5e0405d4690894a482533bca9b5cddc813ec847e42b7f06d4f81a3d7ef62e14db642a88fb90e73a2f42d86b5f973ac0647af21518f869dd210a9c2a4a90ea8264052acb874e7b860bd235c1abd49e088b968ef26611ce780ad83a619da7844e4d38c1414e0418fc3c9fe21af1978c61ed4ed6bdb2455d590959e350a14a6c8a66e1a2cf5793af976002df083d12d6a3a90a96d0a5078e428c74d576cb8dc30df4da61a637faea9ac1cdeff505b1f894778ece0034c494032a80f803718499809523619adcf3bd19f7a12f4cf93300014bda301221911ee8c42b43b8036f4adf2e45b27afa14e864b14ba25c903707d24610c938eb8830681f640c45dc1ac77aca9538aec50e22018c53c7d80f27fbca10858f052a418552d296251e8811a400bc022095007e9553aaffb15e01e54cbfd5e45229016ee7014a3fac6ad6775196d0959f44014e39c8237b9038df923403f181dc35c486ff6c65a0175d9c9695fc943cc5c9b314651826a474c85218ea0bcb2daf6566639a8ed5f2c820c8e2e5a2a2ca4c8c866f35c4c85b8eb8748901731c3843c95de27858e08bd9ff48332f711da5d5a6f0372e604aa6b51855f54cb14441b72dee2420b470cd94634671836c0118876fb02f232f31b3e4b6e8e1d3f80193ebc741435288e85d06b0502d80434a77956a7e041c8f3fbd2ffa71e8d3f7dbab0e1b33165ac69251eaaa7983236b7d9996c7b28700bffb13368aa417aea444d61aecf4f7f8a81904a7013bc06a44c50ecbe6d8db221c5c7cd68070869d74b85ebe4613d0747d405d30c82ab3a5caed09f4c351523a42906759fd870f4dc4af481867892e95145d4f3b5b326f1ed2db0b23cc2ec34141a0adc43629a121d246e1e7fa41a9cf6cee97740008a36e73bb7f4c754f9e0033a3e0b384ecd4b93c2a88a6cbf8858aec27b4c04a6bf04385113c3dfcb4e9d536c38ea9e3ce2a9f8662d632f5e8fd61e3a9445a9c703b5bd23c285f0981107717c7ce1e35eb466c76e4b975d5f471c5b076cc9f99e0eb1cf09da173b9713efd087cab7f3ce6457bb834635eacd718704e2ce80fc3b0ae273f9f3763e5a354724bdba568dacb33699759f62c9fa8a6bf76e6e1c18c29c50c078690c55e037652926a17f04199b8dfb6a0c285b59fcfd6636462c97e1cb6c354466c96b68c7ea30a7876fac3fbc0c88225f2d0a074d00209817953717b1faf5b0eedf7c483cceb0272c828240be8e9590554414fdebe6f3c33d56ae4c33e99f9181bbac8500043ac65844b979fdd73de83fd04bc53f0c3d51924db6e040f91cbcb1e7467e2c03fd07afc15114100dd9e5cb9df1c9bbc658afc4054e2d875f7c9a109513bfaf0b70d6f7c1be67c5b4e65f3874b02e3941ce6c568710b662e24b0a129a8182ba462c0727d0a952f8f11976b039b8041c86214e4b224ac98d8fbee2e7d3c8afd75c2348dc092cf4d9a6433bc70f6421631e0130246481e85253104f105b0fff4a823bcede069f052e349480519e24af6bc2cf2391870bc152561118ad4e56d7da6bd49baa881c83734279885a92ba792d02723f86e1e2b4f825bf1df101c46cf479ea6ada83590d95c2593c0d83218aa2679141420b6814c2433ff5c471ce582963aab36b470a7ff94a693f693170a7649f3d6b8f8b051c48cb50efd768b3ac01f8643e7bc00a62cb98a1b318d00a40b239c5fb8568ea215d5a92de32cd06a2747cd230e4ab9220006d5b6383d9d95a9ffc15150319b84b051be7f220afc88b3045588541b4377f1c85d92b74d2a8cd866ec8ab926b7d9a582722151b206c8821a37c1aa2fa6787596063733a09a79fbd709d3f67bbbf23d5d5c85c12d4aa2e7bb0af180d4a3d8712d104016d78df8125469fcd0dfacfc43be2ec19706904055713e7f0a75afba441186d71d72502a705941bb2df0a3ea597560b10dd4a703378b12b97256eeaba56daa145fabffc77b3bf08f215181b457ad93520702edb19e7617b6ddc146516cb8e1e9950dbaf63b7d710b11da4de5ef65ca7a153fc789165e65ed4fbe2cac4b2b99c172e4abe82b14d81056f425940fc46f11fb01b88c2734e937541ef38d4437aede22bdc64deb1dea9b64c7849c47acfb70c0cf2f09800383beee1930908179b91a68c1948c704d2742366863b0b1de808bdbbd83232b96f3d95f4b9b9285eb00acba0128e36d44a58fb6b4c15a5234383a424d22ee7ef26b2ab3b5b2d4e05068aa349bed777b912af7f8470be4c56ac23a1382e55a9d9ff1e872e5e3e74afb66dc44ab1ee1de89654ba60bd7d417ac0e6bd6ecbfdc38ba19706ab000708090c26dde645a2117b88f7a2f5cafdf29d9ddfa178781bbabc53211c07eab18c1f4f98f69445715a82c9f4428a7c3e2480b12ce32d510833b52b1062a6a69bc3ac65d8b68640998fc4e7f34b739f73b9e832e73ee5981bc94caddb40d47c3c276a0abda5e2cae1508f43d30cd6bc75cb08c6e3e58b44f73bf6380fcec4ee8c7d26a9fcf9cb5081f50d3f3e8d995ae41c46600b64e9491345a90968d5d1c868b1f48e4b53e0d4630874b145a91492c0b8e04aa04ca6c17f21a6bc76aa594ec32e7763d8e928060b38534bf45dc7ed885b5c842de208d431a4d02502642e42a328838fa1fa76a65634a5d96849a2ed493ded0ed48574d6ee29e37330bafe2996cad9f08522eeec4c6d5416287fb9fd04c34e80e20b336e9f1168414650033f200d09c114b801d1605b8d401fc2d9eb098c0fd4ed4ced026f4b1901ed0f701875ba2158d580869d8d6285331e1791e82c41a12d1d09bbc4131f7b3b5313ba167fa001e9366526cc0692b59b09d964d2d3f896c2db5ad923b50750a4f2710246a87ff296d11640090c3bf39dbf21a16102c3493c030e32da43d8b64a4ca8db2abf72f65b05e95bd22a60c216f22b981033f4f258bc5bddd1d723d2f3cb5244c28a8b599830c273004de9e9aeb5706665ffc35f74dd0a6ceeee0b90e3696c3a9b64da6cc5558225f620a1658ea1cbd4aa9bb81adfb96bed369ed74c7b70df05e38a3096a9a964f4de8e7251f4c5ab4da6a0b2bee0dc68b6baa9ec0fc306b179cce4b1f7847a13b675c9af1702b2702d642c8318bc588021b6f5f5111170e88d144b7f524926ba7cc6d48023cb2777995a57e84b3602da4d6cfdfff8acdea11fd0e3d45903133c5af00a513b003eafdd38049a0d59721a29692a64fde4b3b1be73a99daf0d250eeefd4614e407afb776cc9b4dd3d9996bd9b42bb6b17988ee26ca396b763c8ba3046a25e2477bf3f8628db009f54c6b159f6fb2d307889fc64e6ffc4809887b8075df86fc08c9933287bd96d17c7d62c9f2eb4241c4ae322bb4a6e7ff0e2e88e027553e344eec1e0f1a8b08c5d31d25c02a7458073bcee7f7d9ed37a0c07f437a355f5cb10513ed67c0c9e4b45d2ce3a36d14787c2e593833b3dec21cf2374b6f94a7ebca1adb54be8e8e9629e4777612132d4bd4d3516305ffb538645669a86b780368f37d2d0bd4360e987acbb3ce6751f9cd92fe8e30014170ed4232b5de12bb40590a7b6b162992a90cac7204ddea95c0fb0c2e8134101cb0b49e213a46c224a0df51a57573253a4dcc16169496f4bc32234ff0f6d88c1eacc12d21f120f232f109d75f1fc6d4b4c1e1dfa958e54d9bd4bdf8d6bcec2463f87f1da7717ca036c6d4b2d8d93de390c4f260ccf9970ef4493bbaf5456310f7c509ad8c3412ff9486fa3620150971b04f8a700bb02769008528c53966518309b6d849bf01685a2a933e0a138298e1f246492ff8459b5c73081e2f18ff4fc88d5831d257b27fe0a994a3fb25e0108238a159f0604a4cdc814eecf84a75c9b1a8d4f3c960ca3160b8488088002bd35c5dc71cb56fcd4bca1566ae8460c203b842f3611f21643a63fd043e06727422579128b604e437400715490928eb85dcaec009ab3c3652c951f5c35c59b3842be476d44f69d78c34af1afdb10f9207f4b50149712213b1cc812c2541dc84897491ad5a11fd49e26502b903c7870b4d1105e48714f2ea90825b378deadd604743204c1f8933484438a80af1728d11892962f64a366d4f6369c965cfe5233b6f18710911bbea89817b3a2ccdf5a717fd2e8b7ff572180fb27e340a7f8a3ece9965872be3ff878a700cad165a43c9667404539787938c1239a78df30eecf2621d3872c42f0dffcc8a70f8b5740f804cfcb0197a890c7f4aeed20d60f181ecf754f2a819450b6db1485683ca94f10598a79e649534c300a1b9ba9b22c9def1e30b8c156546c35ce8bd77bb492c32e6ef58d184fd157a4ae6c1a692a072213208007d64974037cd1e1be6cd84edba42ab6916970d08664e1441ab008db06ebf0754c92b26679b70b315275d8fb73dcaea0bb8655e24067545ab25649b8b40e491839e402ce08f431006bfc05e57e8624ec50411afb3b15f8dce8fec059167dbca449025e1424f20c18ce6e63b9a046564736378b524e2e2052a63d5520c5181cc75a626f7df2ab107efc61d13b6b6c3261f0393a7039b931b04e0369f4fab5de454d3697a210de9ad95265d91d85ea1d7b427af6c5c0380d1d33006fbb0a4421f8235a8848ceb8995ca0a0389d177d1db65992bfebe7613fff4a5d1bfe0f2061599a958a1150d5c5b2b0b19bd59d65d1c72cc6c7ef9a51a7b865d6604261d0ee2c4cdcba1c53a3e6c054c52a141d0c3552659fc7484c3b83d16e91fe1269b1f385c9fe175e5811847ceceaa9a8580263cf3ea4b63f72e7b4f0a1955681e57a834a20f308d514f1f5b3b508ca85efd8744f62d7d190177aa191fe7d7c248441da32b1632f0071835156d27f499fba9818654e8d329a6c7482888cb13e6bcde30aec015dae42fcf136203a5a818be86b3e93c1bf5040b7c9f702a18f9fac2e806a776eac7b7b04236bad2247985f958f79d64806a2d7559013276add0df3cede27a057ebac239b472e2574960ed121d5acd7911a6be2d219ef6c0b305e1d7d7abd48a080c9db93adbd3a1db2926414237e8f88cc574661f1602db0cdd5e85e18afd5d9c2fbbec86a323c59c97bbf31d1d314fc57cba4a01202fff4c47a040a48dcdf8bf19d43da01cfa19d035b69b7d2af8d710034639070270b0ead2c0aabd7b7615d17c52368ab7653f95545c72c6916bedc9138c7e79a3dd55a133ace2113985c5e06fa7320ffced5478e2d50c7b1f56a16d5d12acb0b8c6dd93a986413de286ff4f01a867d15f8d86c539aa66c4089cd38d198800205e03c5197f3a539aed4296cc974cc344eb0b257ccb64e668d0126bf85873ffc364ec17411d04a72281a704ad0e4a4d438d3a407daff3625cf8b6dd75880f010339a2cffc40c8ad60f4241c9c928275f400ad5ef721e5fe1eee88975d5d589b5d01fb65b1af654e0c6d622ff2376612c0e875e39622b61967725d9502b780d1a70ee80e191e287ef969699e466ee748bf8706cb2d69936eb26e8d9ff7c8c9b0394d0c5d14fd9b71d1cb5dad322ae0f39c481d4dd59f2770829ece012aadfa0f6c04b598295a0c0241d11b650de505d3ce96c4ae9986c392c88968d8d92a1ec8404b0f044678c7ca20e22f05930362c8bc1e65b93b72531c142651b3c1b6cc579c1583b86cf32c286e46f2b7f84d70e8354d50b94b606ebfc7924803633de6e498c6507ad1bcf54ffd9d803a40477bbcd09ada5ef2413cbc72c879b1a6cd6bc62b39cef38b4fb6c03724bc2abc6af7ef83d5ef5f8562b64707fda7242854f422ed9fef625768d5eff052be09a9d07d7a1a7a3bab04217c7d8ac5e85176d5943e8996eaa5120bf064a179fb7df10afbd9481d2de13bb196d94479204169e16355325f93671b7e054edf215ab45792530393def2d0883d07fcdd0f485c7de837226ac59fc5f027658f2859b981816bda8653840f927044db49f234f6e2950a379d629240485b934211e34c439d8cd593263487c13f127510901a50e34bd0c0128c2ab2a8acde3cad04352194c9a60197837ba22e52bb76c451376f1045fabe677818cf4677406bda8e9dfc47e4c6b8b91d276d8f6a72ad578e8320d1750522dc7621abb78b63f24688fbeb938342b7db6566d7bf9968dd9938c1cea819338abafe174d983e7074a9aaa27d8a8edd928bd9fb1128c96825f5a44f12de5022f4deec8fcb50d3c5866924d31df9b65cfdc692d669a95fc95ec67817c4782d09c3ec7144b87bb7415dfd884e00606a0a615be57ee9fdc58a4504f6e77b7c78623f305574f4fe21ff7a8a7beb2fda93ba5a613a81c411d17b0557542fb91b4a453c3e1bc3c0ab1eaad744bb6b26a7a9451d5db5ea5ba45c0e8fa91a0220893afc36ab88ee31516b97e2661717ea39a04074651903a782bbeb6679181208cb4b1ab841eaf3e80e05bcaee2463cf472602cd61c8572e4aa13884b9d038a127d42eaaf18520af32955777c20690bfbd408fa1ceeb830321a10a9e6de01a8c79781312bdb1139a7e72caf6bb9ce9609ab019cd2eedd87f760a52aee8e9612938e2bd1a0940b9af7da87b33645acff00644769bdd2c68ca6f355f534b3e9e10ffaf99170074c1ffcf4889aff280e84108feea1374d1fd6ad48e9e9e66d1fadd926857970df48b5e459d3c5471e4138f6aa408bb9675ad4e6124724fc16d5be2bd214a1127b17e381e0692217deb77c7cfd017d7e2c1ead530106c211fcb3b2c3b1a655348613a8fd1358d9d241778e3d75085243b8727f4b03cd9405da065bddbb553e436e0ef3df735044206471a3e8a1b03fca892e2102602eeff38e1c1bc8bb93064dc83e5110a0d86c84881909fc434c8357b96ae3bb089e6c0e6baa07351279707f97a6af30d58d916753723084387c20c9d1d19b0bea45fa02e790ddcacc87d312cada6cf5de6ad8e002d0efd4dc98714d6f0a8ec7051d9c05cdd29f31b9fce9854d23ba9931573c6f65777ef9706c8d4ac4682b5da547892ac2f125c6239b88fa28e92e0d1e40b6695fa7a992492bd9a5cd84304841aa57675787cffdbc17a9d8244869352b00035077957fecd2d1c39367284cf75aab9dfe116b6aab4f458edba40ff9a470f8ef803748dbe2928d7ef338300fb3bb2b3d572c55e6d6fc0faa0fda9e078029536ca6ce49d019a8d84018de8bdf9f0dc3b385151679f662f48925298ee7937e6522a8853a518846b94a30fb3ce9e40a9fd1d8b86466839e30b4440b831c99a23c0b5e4346db7f38b66e16981ab695788e149e485d7113cb77b302b261dd4895ecaeeaeaf875e08135fb976a2e6fcf7cb7eff5fe9a1084568333004aba0f943505a0d315e4762364ec0a779a9029902ae600a87c7fb801d43dd2d577cf5db45917a261e37874c6614efe88589775af7a37272460c514ffe90899a4300ee578856ca8658eb872faa7e513ed4de9971860d7cd28d20113c92dae51ef4bfa210e4c0c4a475e982b7b08ccffe962b635894568f06fa05ad5eeed70615b82c40ae9864e4af11545ed5e1c7f129c71906c60c00070503246c8ac42c8465f4a46921690cfb4728c5515e6101660a134de87d6070889c44eb6eb2f91d9293518947436e4ecb9ea923c932b06be50d0dddab3d5bb256aa9104026ceb15c654e1c328823a8cb5413f1fdefe82225f4269fee269bb35c3b414bf8196a7d871777eb59344b6ecaf6206fb36ad9de16c140a01bbde944f511d9722f60312cb5825ea0d478af3945266aa821f64a8a37192319bd0e93ad87f67cf4b96e34a939e3d94714e036935b32faac7010c9a37a811b779bcba74309b50cb257d9bfdb64ed5f76a849eabcfd80b4190c560c449c5ae18f8789e5281e56b85f2c454c056a5b30bcbe465abbe52f6f94f6b560d977d4ee7d90e109bb5a3ba549790fe2ed54c452ed139a6551dff09dad9b159fc8ffa053b8e4d259fc22e2ae8d75b04cf17ef0bbcc029f5cbeebdf70845835639252c4ffa977c1c3ee33383ffe482fefc469ececd027835fb00b1a0a497d0cfaf80193320fe74b034ffd7b449506d4b53b92be8740215510d96e5529fc1b48ef87d0d93816bd2d78395f4a854461fa85728324f5c23420948e0b7c563791037b7598aac9c81b60d26a7f540c08e57462511c584a34cd99a138539840ad9708f018c16eaa4caa07af514ed88113da02b5c6ac8e31a5604e348e2cf923101bc174f8fd3b016fab4e3f476541075666082128d0f5b628f17ac066b7f0036c1124fed880080397a5ee8ff9293aa7d2ec5f3be5bc5655ec5ae199833c6e539bc75457dca7da9d2165ae9943a695496795673c401183a07ad5a49139aab89b93258fe16c497a3acd746a59ec146512d86fc0dd39fb1c228fe69ccf6abc250c516eff069e37181c1b49f923fd24e96c9b23c1dca8d2b4eca72cb9d03e6a42cadf3fb1072456f14da0efcbd09250b009523d02b15f5d13bac07c4e0959dbad0ca827779a709e01b5ba5b4a9ecd22ade830ab6a91c6cdfc3b057359d6a87e1ab076b9734075b8ea293d958ecc15551621760f536a60e5abdb10b82e82238edfb198c15743774ef530b9369ba3f6dc5b7394ef07d23cc03207af4087cbd6bab7e8ad6953d777a146f158a2f96149ef35e4560ce0a7359c02b24205ba673ab87fefb2eaae22e82231b3fd9682e22e2662e69e49dce36c1c9af1d462ff17fe9386085507984831e61895739ef3ec2dfc8c1c682f846bf936b2e5757040afea093a73a64f35082d4b3be89c014102f47976bfe3ead59e385d28e164bd00be4c4c028f14e24ac2bb9f0362d505010d50b06673207f4bab1fce5e92a5d6467bf1d607f6c3982a2f051e1a5bec263bc284a5abace94a8456cd4284b404d31c04b46d798f5a165079c7e0fc7f0dec71484653187966e2e083552129a9bc5918b9641aab9c54ab08d5c8f681aae6b5f103d4468cc248015e74ce187dc684e7d84392be217cee160eb6d9f09080cb5a866b6959eb366f5f685ab52998a1db725a8c9e82aaa4847c254acafa7a404ac17c617ed3be98717dcc8fb89bc4981a2e3c6943450118bc715ffacfbdd6b0743710f42c705b6331687c54ea3ec822828fa7a356a6e663fa25513594772d94d2ab9fa5661fcb17ad9314431842a0cd1151319bcd251a4c9f5f04c4478cfbf606dde748eb8c800dd151cb64592606287ee5209c06c6ef21b80163824e293028192bdb27fc87bcf87c4165a2326f32758b23fa28422429aa5acd7efd0adf17a6e7a704b20ee5f88b20a79f055ce2a8072d7d0f45a018f586ddf3316c5abd674c41923088949b899e944e1a9664f3d3d1024db7131f14dabae3766c586e0e4e3160b54586f4ec37301fc35bd9fba9d6cf5623908a4fd17cc78fe7a2a9acf00f476fe9b90696ac1ca6713f879b77e7932113a2bee0fc17c4025c12befee358ec7e6523f35bb9f761af7667df28fbdc48b26b8c8abf081f933303ccfd308146ec70113fd67ef8b011149b8ea445ef75283852f31df1c9246b5f58c04562d7b37c137dabcca7d81cf09d53f3efcc843c7adc55ed988b50b4e5e66955e5f9032be4f7d7bf33d088f664e894cdefdfc93f375e17694b82e527076044a96878eaff0ec1bd4c0c6ef997ffc14c13cd1fc9d85ee9abbfd9ff116f320a5c3b8987a1466248bef205fa6e32a20ccb3c4e5b07a0dff03d71e5da2611287d1f8047d5424cc8ddcca70a1e6d027ffc9349ac5e6d96d7dc9f9aff5751778debbd939524f5f1415a2a6cb094489dd4e715a87b3b9e84818e9a0e80053884f1e9ea53fb8bfcfab1d37e2116444b414eb38e29e9c20e4ee30359cc73b7fe98467f486ce769ea5375611656ca936e26184fa23913e6845f31c6ba2fd069d699922ee8e2344734a80fd183e64aecd27e981faeb86387e4e7c5a469a03aafc63f2c41f0faeaf0a518f8cbccbeac98876dbc47f6b0fe910a272a7fbc8dfa601e84bc36d1d8ba02b8fec1d8e10117afa0b27123027a7ce84e20d20ab44feac72839f0cb403b20655240ac6e2808535a8c0b1c162cf4c3ed4b2905da6edd22227531755037f94cb6ff10c61097a5defb702500deaea24395e516c810f67828e52d3646363dd42934727ef83af950dede182d34fd775f86a20cbef7e31a91936d682f8e51a4c4f941c246e2a39c5289b64945dd10e9fdd74d83570383f3fec14a0217905142d62bc7f46a967bed7149ea7e74f472adb25b07ece778a7c4b88ad8a60c15167b5444d192d7c2e08354658d2daf7d8265bab67eec1ff8a737843da9cf0525ea3a311f842af7f9e00084a2807530ac39223c6a2eb99cee50dcfa7769b8b6283908c312799f5948891263d1e12a84cd5786e587c6fe5d383abd983b2dacefa46074c709b895b4b82f529e7818899478f80db7ea7d089a0ec00b68a835fe14dd09684a87df22918dbc9a3180cac1aa99fb01f404f812e06c013ee0bb4797db2208d53727572949efcad1bc8e942a9297bbd5c624397b6ae497f8e4dc83b0eb4b3d2bc3d47cad52851998f4a7510f7dbc8fc496d0f3cde18944b1c662bd499ef1e58c550352d5248891bd3d19e984278a6fea22212fa731f89a8cf2d432a611903275ba0d0497f46ecdc87c21618edf0267ed1c3d97c8b8400b9f2c7df9bed1372666bd9a644769ac0a20f40f15e8253e2dd7a1f6b1124b8d4f39d4cd7228ef2d6436ca6acf62b2588b6fe8a6e9a28e3f562a956e4e27475eb371f0f22049d343ec84cd0a3d186b5ad7cc3ba649257b8fb3c6788a2ea8a7942b032a2660c849d47aa0ff060ba593caa144308cc00839a6d60d3f2091914ddcd3101f2686f803da450c40f3f057bb36f75344caecea4633c568480d0bfbd2f3461c1b44f8b8094b8013c08ab3e89d18ba6fcbed0517c88683cf54eb76352afaf9164884c4176f255bd972eefe3544f664a8444e4edf5df5311e912838e16ca76f301f38eb29d4279658dae880e76c04dc8c6d5b1a4f58e40510f183bdf956608608916dfe2170180da6f23406bf625e06da524b6b6f75527ffef714471bbef9f6af0b85679cb37db2d1d955809bb0a54c609cd8fc86b50b709093ee30521a248d93d9dfca6b7214cac5f8aca4640356856f61f5e9e777422dec4210f341693c6aedaf38c085ef11f5395f4203ee3ee9ec3a91ea1e8c85e0f36b47e9a7d577ab1e41b6784c66c99023275a38f44d52c4475bab09dae85c0b5ed082299bb78f3d1d1c152b309795692a390267e8a73c165cb6b61b9ca24cdcacd0abeb39935b7e2a401b1385438cc145f94ede862fc8d1f5cfcf927d20260f945e705eae9b64f94fb588d338d018f719b76f19b43dfb891445e3b6b694a0ccaac6d5dc1344a5c5520e56c2d15dab80542e5fce2e531850207f5b3f4776710e688529660bd8b6d30b4c63434ed5b6bf5f39cc8d96c4189c76191cc93f98cc467922f3802ec6ca7fce2626005beeec373e7b45220d70f5007d90ce183a874feba6613cbfbcf262e4d5860a5cf1240502f772d738247074d73a7ccd029eb1674b5a02e7b43f0640b17e60d7a07365a12c870c30b536ab1f9c86fce02beb6fc9f99ec527e2c5a58554e5dcd68a88a03292ff982dcd76009925e3f9c765dab73803e53358a8a09373c486f5a30468047936440156b0a7de932db23d4e8c2ecfa998edcaaee33afd62fb6babda882bfabfb293f734caefc6c79ae6cb4f676b09367be311e37c8536d7985deffc17a51981adbef787b6e9d36026ab13aa9dc00f0f7704a3521114179411ae0be1ba7489d74e308b710a43266e553a6bcbd971a5304bc0a48c156006e223401cac08ffda053ca76438585f4d239914eee3e1134bac8a57a7060a71db0d03b34cd59767c5f697da1317df63391ffc355c2c511d998225d6ef47cd89e537762e284d7e7b82b1415815f3fd1dcb9f4e1cb4d7c8e658c1b589279a126e5be607a8ae3a3e5155d9e113bf0a93147707ea251281fb916ffdb5aed466a71a60a2117d93fd95268d159a4f94ee7a4b37204eabf38d21878e75de24c0b7ea86289cfc6538796382284479f8441ccd75db851cabaf0422c2df0d13f271ac30b5e6716d493424cde804c236ba219b76dff3e57f4ca614fd590f8ada51bd6a49f7797eb95fddd6427c376506844eda7dafa0f667138557ab6ea70561efc05cc0fff4b409490991cd4fa3eeecd0a1197359d991e692ed4b6c8e6812e152444ecdb4e25fdb499f626469581849897573d67237a328d8f7dbc598bdc54a14a818a3e6062de78613565567d695d2bede8b332ba3030150c093d4061bcaa533e20a105ba0960dc5a2471b9d5782f2cd79ad914bcd051eac33c56f4ec89b75e2758a47ed62ef6f72de38c6a93e8e1aa54b18db08942dc1b34497eaf8f846eed07e7e6c6a001bd788eedf602edeb84c0d864610e751da3fbf5aafa2502c43056760c93989da53a5762ea023fe62528699d4d18eca84d6bfa5b82c20369ab571b9f81ad2207802438203e254cc1f692b7a2909c9939aa70c010a8915862963ad48530c00a9895456dbba4a44d707ef8a35e1028327c5357752a4c60c91a0fbbaa10a03d64595a5559b935c85f7c6c24dbe9b2f042380b05a301935a35d27ba11d0acaa01bd743754eb18dd2f09a29e289fb078f4762b1f8fa55263369570b2674f747545898953bb1f931bb7b29395923294ac31f5f9ed27d8fed42da0bd5498b73291a7b26f84ec7fc18ab5bd2328d909ad0e2d50d0fa8e9c866ef9ce464f4a42757c525cf8760d383131dcbc4e538fad045842a62286e08fa03dc3b9de0207a9ba14a5516a117a276e982d7e3a4de047307c0850ae72a2d076dc0ea56799c5f3be3b82284039f42c10e64070acd889613eec91ea56f3417d3285140d886c8535a38e23277dde112c7d92f9788e116344969c853bd66f73ad110b5f3e9665741d04d47c243d2c1e3b211c179b62d70a7c57656c5ceedca70b4eebc829d7ba44113f4089fea177b6e24e56f59bd62a8ddfe785914bf14d1aff98b27e2e5d081d9a6cada4c4fb3fdc6adf3ef30b22f37bc00fdc0a780381d7dd614b5a07f827b3e5a859abdecc74dde829d06a6bd66bd66a2b120b4d9cd6ac78d482c57ef157d7f439e805c076a3b2811107b3c48e2267b119909e8c0a4193afb2713d0c34fc8b2f288859338a0c52b2d489365f342c52e330637bb63affce4dce8e30908cae82402b079f8e008e71c1079ec069afe4bff0a877afa6169b477b22de2b3e1e2c0d9e16f208ec4220743d7b8fd0519143487812b16cca897cf373f70168ad35a49bb2e3d24112d66352d1842bb2642ac253c3481ea06fa85aab96a24f06293ade531daeda44ea6d717988ae51b37eed7170f4e51f4763539d239c967220313447c8bcbc23b63e0d838e2159f14972c9be7b7eb80b6b9f93d1ad7a14ad191c837aca8e75b2ec51884aa6777f024c036ce07208db41ea96f61e3d2db840f82cd918d9c568c4f7e8e4cb98426d7230f8159ab332ab4fd252761cdf7e7158e26f894de945ee205ed51bbe82adf643ffb68e384407f163afa54752b492d6f178225704fcc3bc82c0eff2e1b0013cf94ab3d82746396f287e915893b704a8e9df07ab6a3b2b4834446eb2f37aa4c93e5533da06354da98a42a623aa711bea0a656996bd314ba6d9988b4c261ec12a400d252f81df01043ca08587d7a1c61e88397c227221271541f9f9e8e1f3940dd704b5c046a08366e2cdf34614c8ee5ae5701e4f2f01a0b352ff69c4b6c1c449bf67a51b2c3d596cbeb59034e326acc14cb820b64ca104e14e5364543eee0e3a562dbe0bb56e78e70bc2b5dc3e0229e4aeba29e7908ada95cf89fe9b17886b74b40cbed9b31204d513ae4d23448eb02ae84fceb1809cb718496272f0e45021f62f2c28982743864103a0ddf5a5fa24cc342e524ee73f4da5257291040620e82c90b71e53ee9854f032d0c9ef910191630b03b74a634d775f8d318ca7944b9754e6baf8f55e588895848dcee68fa5b601630ffa11a1ae62b61b353dde3668452c6f9ca8fc5f6b04f0ba3cea1bbf9e50632fe33a702c74bacffb1b4006d00a8fdc876cab1c182478455faaf8523587af1c70c33bbf32222636fd18c883f831a1b01c75c6b1e2e19e0f26433585c75207a9e89c090e646f5085ca5f478e0d2e2fad0056667de795603111a883f6bcda9ac7c6ebad4eae2112cdca772a90e5bde0516b6266a4fc89ea0febae5ca28a2a204c54c99b4dcc43a3c6b8d1106aa6499af3abbd95ae5541e373db4d0ad0969723a04451dfaa423f8f17b7c872f2c22c186fa34b1de3594b43682185ba68aed66c5481ac7249881d8a4236be2128fece8ae2b52fb6c1661bfd12497b74825c0a4e92ec65c2c295b7be60c7513413a7abc60459d7bce51b1ad6544c4954cb8989ac4c2ff9fce009a4f244bfa08a047be8750d33604077fef3c215e29f0c2d8b3f7fc27bafa439fecbeab1d6fecf4c06e626be797f69caddad4fea393831b136ff59d8f85c13c479a2abdb2a1b11be455bd5ca0e9118d7d9bde8ac50f106b1f9048d157c6cf859ab22b2ce4afc602bb4e878f9dcc2c8dd2e5e82212ba25fa975cd8751011e473cf0bddac9b5d1dd06c82a49eecc86082c04e4a459664a15e2aa953fc87cb43a11aba5215318115c74df7f722906dd3584c510af9ac369e3bd810ae331b3eedfe7271713ee54973d89dc8cc63995e8b403e3a2f38eec37be07d1057785a3031adaf1d91317fa6e8d8992f8ff35802afed99ce679a54ae6a618b49e1814a8f50f2d9fcd9ef8041224ce903272e3739d4f0fed26d3e6b711db681c7085b78927b5129bfb6d3ac17c8a3e340945d71331d556cc74e72976d4b8b16d413f6548caa6e17b8c12a8ca8eac92a4353f3efe37800e481aac52595acf26324393feac831f8cbb2d09d8c6fa2c2260c078c845e032677da39296f4f8a8df02566042c72ba587529da8b689a0777d35398c51871135381bdaec39a6ebeb3e441b7a22dc7b9205f8a9fcf8abd4c499e7c5083009ac159e5c2acfe92a44514f6e4a6bb099fb896d53774da44cd2eaa8dcbb612d8605bb0545ff1b28faca4810921bfce3b22822c6656fd11384fb7d2a84e0cc6348de9ff39d093cc084ca2b1b901d7157e2cb815b03d3649d789c126d790d419ff686b17c79dd6639ab36dc0d2c0f0400e9a82a2370132c5cd62818428844057a1862f4bbad3ea99652208e9dd99182e4447074e2b46c81b9137e10699033cc7ff28a564510fd32a9a8227d5d04740e384d337cd5502ee1bc9ffd23362aa8e15328c74216b27fd7f4f0ae230986dfc77fa281a96920a212b0ce162622f53f69cd606f7ea556888f80d40c5558d07645919bddb8d9339446092c2cf9864fc873b48d2f1f15b710403ac544d2b8c036d8b9ec101e8d5bfab93730a65b68aadd150ecb2f55a8c297e2f994068253c3ec46b606903fe5dcf563c324a0a49517d330085e99b406dbd925802bce16fb6c66c6b4f22f4a4d9f9e662eba46eedb45f41fcb7218ffc765bd4c916c5583700569a1988098cbb455c2cdf88a07b5b50e126ec262dece29029a61700b0da682fd87015f1d6d3b1bee0736e63efb9087a54af71caeb790fbcc45d267d21be935478755aabcad9955d1417711a2413ee0dead72326c0ec5abb8b6220ad42a390308fbaf772b87ba13fba31ef9f2e8a9d13c57070489f31b322dad7b278d28eaf6bae71ae24988e34f4c9bb82d2becfe6a783b203c5d3bea99e8c69072f2c682ba5dfa84a806c1b4cd282f5802820c65b2a740d4b66e124d9ede73d6367e138e7b081d464065e348f77f4546ed59e37fb16e667cd14d349939b85b0a197a3e9164b9d0f4ee4dbc9c4a04ea6e7fa957305c15271d994ce5e2ead83d7615b68e5d859d08f7b95caf9cc42e92586dce01a90fc1865a370f668329bf0006039dcf717fd7ffa6fd9b831d252a630b54fb7e5e91c64c9871beb1fd3743dbd41a218490bdf7de52ee1dd30a8d0a3b0a6988811674ccf7a34eab9cb06fa2dece577a0024f8e00759b8419213a840c7f49c20e968a29ece4b01ab5002cead9e13a4e9396175348172c40b4ac86941156160a2830988b3440e4d34d1a20a73904247132d30c0821466a43862022ae890e27a3f3ae1145ca9b846c9ccce6d3672dbfbec135c92db8f67e0e285363858dc1e636071eabbbc1e6360dd78b50b6a2d3588c518b1effa40176637ccf3b2e3268ce29b1d0ede401487d920ebb81f70464bc883e313dbb7bdd47a4530aadf1e64d48da55a4c6f8b1f6ee04cf66a5c135f20aa0f51f19a15711d394716e106b532d8d21fe0f7083888a3fe93ef28c4d4e373e53f577a261f4a32303f445e252b6f46d3313ddb28782825ece623320c524a29e9cc1bc610032736b0c10a054150c26c2d5cfd23c7889b22665e08a10a2660a11902de357fd8233f8e00071f30414313d00085a6620a96523a810329a53c49fef2a729aed4ae94a40bab600212ae7661154cf88176828c9260f60bfd07732440691ac006306c0183269074800c4080423608620172000216b001066468820b74c03881154756d57a27a03229300216925861060b39e8a03fb8945ad181d5a553e63476a1152268831522d0a92a88cc1cb8fc73072eff853da04ac5818a10a001075280011974b091cbffc137820f01fec075f2061189fb8400a781638e45a4d9c9083dbb05f7e334f70384b483a00d5f2cc7719c9d30dafde172976515196cf938164e7164999c88c4f20c9bf0947d8bcc1e0967645303d7fe94bdb71d58fce5c9ae7a50095be42b64b0258b319ce21bf343cb3c74b9f0cbc162baf02588c3c210c4a18d3c31550fbfedc26710071769cca7b07ff5c2cb797ae1b9ce083ecd93e6ad077e30d42b824f68e0e62a6a114734a2dd792ee288339af7b128e288476224019c31cf223645234d10456f3ececcce044ff3587700789abf3adb41788a2480370c0067cccf1c91c6fcbc69c2137b73f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973ce02e480a9b156ca39e94a63075962c2a83c343fcce7983d985336eff051af7ca4d122e704533c2c224278f9537cb78cb1a7e084bac419cf7c496595afa72aa59c53ca49a9940c830373589e8df0f82dd9eb84b80ca285e053474a3bc6202ec40ff660b838e3e9b68d7c07c15df91836c1ea7e9c7552c71099b21030dc0d60541bd104ee7bc189760b276b300115dc4178922bd63cc0cddddcddcdd0563ae38c51f68f225a37ed1941f31f7c3222b657821f31fee88c8040dfc09b1f1c54c590608b7e8144fae4aa25be63e113f7eab35efc0eeeb60d155348fa84f564a7a7a4b3520b2f795dcdf1b2529b95da7a598c6af5b2d895697d6598966d9ae7233f9fe6f8b1d9a679b68f4747d3b64fd3709f108e0d131d2d6c98b498455343a383d364870b9c2637ac16ab59746674eca7b95bca39a99c94d66aed55ed756158966958a669dbe6f17c36cfe7c371205088038542282822d1689442522991564a9dd25229d912a85150b4962299629383637305139d2db4b0b982490bc7890e4e164d769e70819345931bd9289a6c91486b39922a289aec1e8db4962952f648939dd252459656e4ca4a735c591969b25334d92a2a5a4b922cc995144db68a269b44d25a96e48a34b1481696e6c8c2a2a2c9962bd2245924a94b362b53ace06471f9a62626adb9a778a1bd78d11c5fbce85523699a6635149da4576de4c98e4d0e8ece165ad85cc1a4c534bc84595cc35370144cc34ff0119ec171a2b3f3840b9c2c9adc441615b1a65b4c88205950c4241109d4e9b8da91409c8947a211a9b3850460cee5cb0fda781f6c75f7c11bd8e4b2107c92ddf752c3854f7c823356aca74f3a14b89374e8ac221084166e86d5a3f240e2e9ac31c278a7f81f45c44718e38f977e897989e7e60be633e6eeb1e3e0a98f7516a2504b5c791925ae94d8a70ea955d7e7b318eb92f96805f7598c3f262e7fce633a8d9a671d701fa67327f5e63cc7c508c12ace09cb0773e7459c82ad18b048f785c95df8d303e2a929820f38244e3cb939420ea258e2030ff0c985b974a1cd19d270eb85366888e204571ab230500e6422c841031aaec0c20d548a4027eb411428531a4a295d5d334b30c26c0274032baa98993a363f6043f6832d38d1a195448e9e0bc74c44be1aa51a3d941e0d4e6616bbfe61afc78e79964f7c2d34eda6e537a5d2072ead921e1c70f287524e29a517b96358632a852c5a70d8e2c22a6680c4e5c2161ca4b8d907b67050c57da72191061777bb3e1ed8fa6c5c38008bc3e15022d288ff0c8063894823be401c711569fc8010a60453f4fd173055df8dddfefaf653208e6824043ffd0c5a8823b6220d18e10b9f605e6ee45103864f5fd02ab521944c4a29a594524a29a594524a29a594524a29a59492e6c63717b8ef36387e43f8916e73b7a1176fbc680399e34897837c6448c4d1ffc7578925daebc28d71e57de1c61b895180a7f8dff82b5ae1c683a2162211b07063c441857b0378234201ce5832ab70e33bb6629421460c18648001e3c5185ebc60d161613189c1645a09c3ca4a090ca512490b1249e50b2a2a295e48491975613412e58844285c4041096d211402690104e2b2e0b84f163e1f0f163c9e0d8b6dd370342dbb42966156c0b0ab0ad7659b585ba9502b9dc2a5916794320af046774301de608e4f601ef136d36c818b57f0a9bd68c3273e77ed1fc7695d5cc2278ee3b8781363e49eda9cb3a675452442931b1f5bf1a3000cae3c1c22d4852bad16621a15bd2e7b76c9ab5d7b86758d85ed58161c5f7a71099ffa32f44fca1f7c92d1c699d0e7b350176be292fefca5f1463e331b6163b3e486535f8c5770eaf3f8d8242ee17e90d7d2f8d7f97a1031514429bd0a68314170aa3b79a1849767e2c6027723bcd46055bc8251f12f9caa116db2c0451bae55d10a297058705de0388ee36c6caca6f344b4894be2cc92b804632216b9ba071870ebb68da1c7db479bd18dca3f98d6757ec98b3621cfaa78b05197c7de479dbca8e39448d1a08e9b8b9313c33a32ae69245474160d059f5828ff42a187fe45244042b7ac505b1b0aa1a07491159174b338052facc14518dbc6254b381545bfe314b7ed3faeb96dadb516ee8481f37c0b45d53c7cbc41544d2f5ec13115bdc88318ad8836f04a74b4b9369fcbba65424c7cfbb8c95cb7f69767e2dfda4f27c575acdbc076ec5907023dd4fd0079468c689f37c21dea8836ad8a4b96449b25d16649b4613e7d111df354f336204511dbeb37e0392d422ec1791bd85e2f3b298ad8bcecd83fdd063cde76fa0564afa7dfaefdea9288d73ecb3a131f7bf6ad33b1674ac076ed0bc83c13fff36f9e893dd3f60564f77c01db3fde120ce0c20d152b1ddb3dde06a490a288facd5b42be7e091d9a8779595cd22a237096e02ce9097574770beab846b4ead4fd03e6442235aa4f1bd5f1cc84a5220e4c31450f7ac0031ef40e7a0753489f48df3e9cde9096a9b7bd8f7a327d394615642928e590bef298e5534ac8576f2f13e35e00ebe869a5c7a8f4828077de2c83db0e0cf38ea0af1790f9236428e50e08f62384f0ea669e0c673c2716bbb8b2939dfd552f2b80b02344ca26d2178bd3c88b4976bc8c9f8741661f4f5fae7d90977a510ae18cc88f5e96c5ef05c630bf5cfaf272e36733cd439f759007f5fa059b0227e9cba518a597ad144aaf022f9709d9526a21cb20bc1ab3a5949965734b96dc2d25336aa75bce6e9652f225df466a840cb6eaf23c38e0702e76637379564b29b5958755a5a83974363bd413daa81dd41c66cf9e5c8487159fb8a5cc3e190fabcb430d6aa77958059a482b5dbb4ae9a3d245a5eb50ba572ad55a3912a972a4979a447aadb5d64a22bdf41d2b3ff750f785da14c314437493079f799d11ef1fb80ecf93a254faca49cf462552a9f4e2efe225954c26d3594c2613cb4ad767df1e6b1dbd3e6691a345b669a4aed4493e89de2ffd7ff77f4524aa22efe35eeabe52ca4a5ff94ac9033212b1bc9a5eebca6be995f4dad5bffec5b3a862ca62c0c04c2c261fbfe9a67b4046a217304ca6182c26934a0c189ce82696d10bd20b0f08f7ec4046a293da543fb55e543faa5fa92fd593bab805a8a3f5d792ec744587180745b79ca22d12892e1a1d8ebaaee146a723cfaa7428598bba5dba173e554e3402d551ad1c4aadb5d65a6bad35140a5d235dad135233ccfbecc7915aaa89474f40383ff778964f12f4e36e9f4f9097eba1c0cbdd3c209f6721effb71439f6fdd664411f7f398deba0fe31eea3e5de6e96a14f0f3f12aa0ddcf3f1982d9760ebb1f1aba3cb77520b97552d452dbe48bdc767c368fe7d9e7d3f9e8fb79e6c13ede07f3447c921ec9528ab8ab039c3ccccbcb95aff122af941cc7719cc705191c00a783d6e563d9d9068b2d2e5fda60f1e4fe66cf3eb005de6459676dc59e9db1f3096e3ef8984d0ea8b83a5c689383276eb4814f2e9fb147de76f4b6a37a3035f864f9c4527a4cf2b65cfed772193b634eee1148926cff601a2efc07c7a02219f1412c2e3ca95b62091baf08096ae113768c9bd8e0421c08c7c5cfbcc8da7c6c208b2967ef6b11723dabb7dd5759447437f3780b5647ac7fb167b0232bd90e37cf5a8edb78f435c3892046c2987551777d80b38f5047348a367c1275b149c419792a3bf00667bf2cdf837222f65e19c7d0bbfb38528c6bbf0b639b4fb66ee85911ee8bbf98a5f4220bf42c83912373a0afc78b063bf7d28c68008c07f3265d23e0f8dfcb855c705b3400aa2c871304549d60602aa4fa9cff034c79ceef4861b8fc08714820d29056e3ae23dc67eaabc3fd62fdcb107c79393825c31e74025409c1910a598871f92a5015d32898c2602a536de74388e33a57af083e411ad5fbe2ada20633175bd2e466f1c21945aac6acec11491663656d3b1ec39708b82fda441cf1c633124ea13cb2b4f6bebe44e2cd3c538feea28b9b5d6ed653f279d601b11f12bf0bc8f5ec59ed5fdd77695e0c77c32b045c062f27b86b866310701fd481a1c7cfe329c64336727d80632757139c7d766627cc05ef30db2bf814439fc7f065e4f3d0e387b10dbc611fcf56c01bfcc837329ffb7ae54644765ea2c5cdcecf18ebf870ebc1cf88c46b71be28051f2d37bb82e4e423c5441bcbe2544cf2b1c1c59b6853412e7c42f9c72c1b1643c14b228ec845a4113b4fe7790c67dd7594ee079fe0b54e083e41eedf0ebfd7751de1b9f6b8d3281b1b141910953d1e72deb7c3fda08e12ee0b70331f6ef614efe366dc6c27fb288abc483a4f0ff62382c01bf0a6208f7823d4c1c01c313007fc019e1a0051cce782b4858538976fe20c3ec6cf584582a88823421afc17d289bd2f087c7282db107c4ce68b95b1c3ee2b723dc05d07220304f2e9f2300cda6ca620f5cecb6fdef9d8c59570eb21c3fb7e5c20f0f646443d5ff35ae08c248a5c227d8fc88edd7632d9fb598675df065a17fb39ebfa5727645a493d970b7b65351a8031d073ccd11a853702de80a91c7ca287b966c07d36ae9cd8c05cfa38b332c2a9791aaf12f4437ca484e80171d48834e8e9838037ea07753eaee325e5d4c0e2c6efbc38a1f15fea5223228d6441065b3edaba2c6b264dab8e68141f09dc615d8e2b0b33ef32e73c9499b37ece59bbe9e3ec6aadedb2e2be382373806c6ab0258d947af13b9d824fa6464d8f52416b68cdcd85ff6cec6d0765f1e96b9971ce489124e113ade1134fd10527ef47a3b8fcfe1767a2a035f34d05ada153c84ba7e8a8e094bc97d670aaa9274486fe7faec10561e8c29d3ce6371ed40926204317d6e08230e4dca9f2d875776e40d01ea0a0095ee03111409d600232e4dc19bbdf9896c07dc162f26a40e75e3aa95b913570c6157e4b5fe9be7849da2d47e219882a9dbdd2a7f7914a6fefe32e8c3c53ea3c2775f0ceb4ce929e91359ecb6d473fe6c01bf1f23f9d6c12b39889accf142c01eb7e11e732931b67e24c8dfbc59909a14ad64014734cc3e57ff10d9765cdfb08f6a08e4e7b36b3199791327b27b4377169f65766af6716f32e2bcf97352d353ecb314976531013b3086d5214b2cc06f792c5182f13e7638cdef43ec9448b083927b7cb67e40fd45c1a7a466d94029c416df0c49def2546ee7c67d1461ca0d363f046a75260c4f8c75d5b214a74fb94aee1494443742ec6153d46273a8ccf15bd3bd157c2b9fd1698822e308582699d07071cca45190aca516e33abc50d08948bce72ed9eeef3b48a4965de742b6c00c5e5aef20ca45923303c29445ff1e000e5d968db8182222a9da55b4545e524151595ee606bdaaf142e6691a345b669a24ef2897bb374d9e8d3ee8bf733130bcb33959107f9c4c9c4cb9d88bc7d99cf6dcfe3118997f33eeda26724edc5e30684e8a3be96893efa48d44638453a55397d1fe154ff3b8d504edf5dbfe89aa5eb252abcf16079e9594c2182c33622a656f24c3e58ae721516afa9063720dafbe2dc8030c9c4bb7222f2f2269978492722af4c7472552ef3b92a1e8433ae8d8879934724de15efeb6bb71b11dc553c22f192bcaf0f7a4c7709889207447b3d10d087c4cb9534c82d39c2e9e993ba46c2277a95ae93f0892eb9d9bf536c92d2459c2e82e8475dd4824ff4a22ea274710b3ed1dfc019f4d712ee854ff49f873a173ed1be808077eb78d32aca71dec7691e7d0c430ad2f874c202de90894eee65dfc4269cead3479cb9f998efebf1dc7cdafde28d907a3f3b24de79db9fed1a12a330618b20394e2e2cf72d97b28c60ca4ec82d9146675a77788a6789387e68a12cdc729be238fd877e439b0cb35680e1a12fa2d323b5a6d12093bd65736e3b94d0d0e6a9f250a610e0ca907cf5c86f00b8f218bc01c3461c2c9186bc3c497e5caefc079232068e183160dc8001e3858d172f586058584c2a936925b5b252f2a15422d520915408a0a2923280949491004623d18b48844203052514805008340304e25c38eed3c3e7e3e1c1e3d950dba69d342ddb21cb300060d825e3ba6c8bb555875aa947e9ece6bc52feca18f046775f7918f006335ff917f04624b1c01b729b35d62a6d55423df2e3b1f0496655dbbaafe58ad7253d10cef8782c24fb84db3e0fab28c116527e3e1f8fb3f36a507cbe4ab5dcecb2c1914af77308ba9f7f1e3fff647143007439f62cc8cb0d794914b932d93fcf89f43d2274ec1f4926f4af48e84914b9212f092e3bf6e9beed9ef73624decf3fa10e0492f9301007397471b727c17941ac910e70e01229dded1f8f27b3794a9ca06fa2bed626ea29bdb58d8ad56b827a4b603088810f568082233881a5037613f4daaf37a179a4ce4e6ad5e549afe7ccc144e4099a43165539202a1e6259701fbcf96ec4ca8f22289d9f737aed7dff0e4f0e38f997d34f1fdc005e967c6d1c681031ad53104c99421a224091c1966dc527204a9878d12105127c42e20221d2f7880b7632d7bf22f7fad525e15d8f1d13ad9bbd372230083b19258c748003ab9b44912ffbf5d87948583870b1a6552f8dea77f4ec1bb89af98eddf6d9e938c28a51f0629d8e23ccf0297e0ba2c59b563931df049d142ae18919227c6109ad1ab801a788116eb0022cd6a0040a245be4d0182b84e0074f9c10b146ec57bd2e0f705b0ed8aa99122d3bd7733dd753ce664a1f28eeb01325da39ab1a0c0c33b730c718792ae11251a89a358da2bfde0253d8afebd7755d751b8263143284bb510d4e220dfa59d3aab80688a2a75309973d10874b6f313a6ba0e05ecf3aad8a4e2ceb38d1692d1845e3c670ab5ee7f08952100b9fb07fb3e6d267f4b38653534c2ae00d7b1a844b9f6157853eaa270fb7e8a42905f14ca541c181ddccdc3930c6f8c9221c99a6b1c02e5d03c67b892ffc971af130714e498a11055bdcfd810cb670dcf341fcc0a71884f7039fe29370ad8a3ae04b84b16750a3460d181818962e7b5451d901e3570cb25fe75f2c4e892538857286095283e4311ab88fabe738553a5f442a95e0f48c6066268ce217a4c36d07c9fb822872476ca3f2efe5d60f756b776badafb7f0067d7d8dfb01317d7ef4faafc6adf5dce2130c0cb61ed5fb4c2f29c1fd9171e143f02b2a37a1a876e18b975637ce7c910606f0ca2e08ccc53018ce117a16c329cc45c60ea753071bb543e739fd10aa94d866c9c31ee31916e37a018795ba78459de700d0c95803c095022ece2a64b073e1162eac42064edcb8d91470f1b5880b043e88cb15fd73b9a5972ebb52e95ce95cba0cef2395de52ba0edefc52fe42b4f578f12aef75f4b0ab23d6bc0e945113fc57e39afe79f701f1b9e9a58f3e37ddf4af74a57ea95b39a9fb4a875da8d41d92cebdc634ecb27747ea3a155cfe0b1857e9be202e37fba7fb82d4b8a09b58bc1e3736a6f9d2e76174a679a803c6ca905b0fe1ca6b1744bb23133cd4b104a33a13bc1705946e093ec1142de5894da553620fea943013d34d5de92593a7049fb8a4d2c1fbd2121d1c952af47c5eefb2049f18eec0c4b012adb21eb74c3f71aa74285229a141ef8336dc9aff98c9159c42823b2bd12acee47df685f7712cde47ba246fa7e32b5a2828d84b9cc2ce6726bc410e9ea18a67f2bcef57e571db2113ede3b64305eec0d8ab9c9f595b3a097ebed40181a5f7c6c3749307f9b4e2791f3c91784b57f988f452473aece0127cabe2a5784778805bad627834bdec701b027a4aac17ba765127445e146e813a213b388f075f3ec21a84b2d34cf558fdd599eaa10e0b719650e283d93902863f61200e0cc4e11b11135c84d26f3167945a1210b8b8b08b0e29707072a9615d6e7c2900eac6025cfed74377a30c18377ee50715967fa51b516e0c097199fe6537dec21ba1470b030e4223f51fb80eee8fa0128bc9fbf8827ea3850ecee8baa37fbb23ef8bff2471690862e05224424e8ac0f8813802189f602443928cb8002561e282ce7144b71da11fbba387bcafc8057dd71d7922daf1c3c0a5cf288cec0979f6c3c0753fe73a097df85c6e3b7cf878a7356ad4b05b09626c9284b397c734352e212e3fb6a280736d5cd88a82939b458d917c3e5944776a2a7ba8758c8469b43fe131123e25e114127d4ec22778dbf09f7b3c3ee6e385533edeb4f739e0c66f1e34e2c6f3e03b1b70a3901d7d1e7c5dae3d77416a9878f0b5170bae0bab2843189e60556cc24ca3dd8f692ea4e154f538093f51bdeb098e64499f9d71c6089f2084bc828787ccb2580fb27ef6814788807ce8459c1b3722a217679a7010979b0b8bc41855906536b868e372c58597b1ba5d33d9c55b3b242a500f849e794eecb30b62062e6ee9c22a62e0e4c6ad7a261e1ca5a744639457a3c0d986900621c991b6d1898d4e7835573025bc410fe525e5d52d5df05203e6e5c8f9c473464f493d6f3eba06a3987a2c29d0b9974c23cf8d35b4f24f94f1e98db4fb865c510b38ce6aad15d0fd94b8a2c7233cc0190db8b94d2ece6de1545ce28a209063014864034666247084d302e5c8bc28cf308d451eff0891f7c9fbc583e2b97be713d37fba4f0397521d1d1d1dd991667626858daf10cb1e5944daa4d2458976095f7ca30b2f9fe8e1275459888a97ef8eafd61d5f599100f972e1214f177bf3a58f3086e70b4431f7293dd4f103a398bec78d8d174303ee7fe1975f2a691459c669e060337b52c239cfcccccc9252296590eecaeed852c965828b0417092e9a48d37541b4aa832879292f6fe3caefdbe10c79d8c1ab35e1643c03c7871d8f782977798e3136082e125c26b868e09320f009c3271f1b9ce56ac044f8e6e213323ec24da2c8ea72f36d4ae9693d337fd29ae081d4ce043d1ef78bb90c6740530f035cbe0126fdeceeee1d2dcf1cefec6017b70f0f84e10d70f990d97be4c8b0a793245864714f175ad1640b1782b22437f210f13248b0a7f1c9c5258b1d7f454e1f631a087f12c11e9178db0312e3d97389ed810cb67c7c7384fb5caedca1802b8870afd32ab29f2c78a33fb721e8af673dbbad077dc8fbb4db35c8e25ea78f1b11f45756e36d0f7a2e4274501591344afee29988a446ef8b4ba8642fd244286212ede3f9881e67b61efcea451a111dd5db6e48bc76e68b4e88e86ef598084e405ce8976699176d1a252f2d47b28133e4af194ea55e521ae955e6a30a2953e92289e4a5d8c81a9d802417a2b55aed5cf771a4f95d74a43d2bc25d93868645229117ea3ecf3218393207b8500d6598765da00ba2e4219d21da514a1367ea8f3c866ded220d9f24dc408c24e28828975c88abb55e6eb303523f2486ce9d76406c689ee779823c9e1c373f20e02e1faf6055265b4a295b57135c3db738c5846d20d432ed1f73124e7df5f62b8037e8653dbd7ded269f6af45ce9123e4928ae8c31b8923d25db93b06af3204724527e9ca4e1543c2251b40b96e294cd717a343e490bf984b2de07995c296f3d0b6748f9a4d268ebac1ef5f866b224218bcf6297d9cb6a979d7de8cd68a79d03e026d5b40e86b3d795596ccef9ebbaae6b6e40586dce0bb33302911f122f1d12af76cfafb8302eb4e20651dc2c6a90539f76586fbfe289820332bfedb25bdc783bebacc1911b3fe79c9f6d473db7eda8309c0d2eb3f659fd9c3ee6adb5d3ce791b8f59ab61f1d67bdde659ee10d2c53e44deecd9ec3ecf3a6bad96e46ad79444713511ca516e55b61dd9493eb2aad94e1341d1b9ec59d5e206843dcae603a59b17853aeea16e1ea56bb970eb110a854221ef8ba167a16e7e425d066fbbc963de7a1a9f600f1977cee97df1f5a078edf12b724d3eae76ee424d0811796ba38d43cc5ff19b32487c7388e9d9c7cdc7f4be22d77a1f2e6eda3d9a0d2ebb158134db85b61ea08d081937de0697bd878cecdb49db8eedbdf96881e1ec316df3617f3dbb9e615dcbedadc775eb99884ca0c885b7b71edaa79d2d37c64f205ce2d53e97e801717179edbe0cc21b43e4b5ffb22dbbb4a20647ee8d0bad80c20cf7c9fd8556dc208b4b3f6b91fb61bfb0eeb2e20649a80fecdab563dab6637b56b50d86c39e59ad5eda0d08ecdae6037bf64cab57cbe59b9dc8048a5c20b0ee3a763dc334ac83cfbaeb5af7cd0bbb969b619a9679da859707f9e462e7e7e9b34babdd370ff934e53b2211144b426009fb9b066f4cc997ef1389b75f8463644156e4b3af508397f9502c422c8397efd6c52e3870b56b9ac7b41d76713fd8326d1e0fedf34034cfd4c30077de0057fbd434efa31f12330ff3e235e3b5b2eb2c361ae417a2b83dac9a3d203da8076448bcf14270f2daf93b7bf0597ad08b6c454549a9b5568eab2829a3d7aaf2ea693a04f78bf77add88e02e84332c11fc2a13ef3561a4d263847ebeb9f635ebeca20eda19e1958ecc6a5fed0c36539bd1ace770afcfb6e194e6a3afaddd757107aeedba8b2e2e6f40f0eada2eaee6413823f3bebe3a2ec2b55f3cc0b59ecc0160eb5e576c456d5a4f47dbd4d6d12d266d43c345b8517e90a5a8f0ed65b07f4b5c76b9403c3f75f6a1cfe7f30965c73cebb55c5270f0d765e2f588f43dc2e341e8f2b1e6b97d0c63f7dcf2b5c7346f2dda78c019df066ee8a4256ee8f52b37dd543aca53bef2cc143a4b03aea9fba68f1653672a793e5aae4a919a1bf264b0879a34049cd15749e9469dcbf711a174df3c7b109ebe8f2783dd72f779fe391fc479444a37fb76ed9ecdf364324f8913f24dcc63d69b50004634aaa30ee9fd6854f5a26855abe6a4529e42ae517dd94413b051f27d08b46a7a5ca3e0db23915298e822dc59924bafede92965fa6bdbd130dcb35ff4d9b416ebfa5967fb58adb5d67eed5aeef5eeeedb1e326ec319d2fbf81f782bfff565170f37db9f5dcba5dd37e3463d186e4ee02b02b71e322ebfc81527930cb67cdd6a427239555916edaa9bbc19e41fbae7aca38336d2f6abf2aded5f6dabca3ddd0c7a05dd63bf4171ad0e71e78b3b1e12a8a27c8ca36d2c22ede47d0765f75a40bfbeb843fae28eddf9e24e8ca42e2d1fcbc738359a86eb9a46517969dce1132b3e61d415599cf7913c3672793c4448d740312747ccb66d1bc8db86006da36d1b6de748a4738fb1f5d83c10c9a3699aa6699aa6699aa6699a766ddba1e950b3168b03eefbbcc627de969d4e9aed209f32edea8e30393d6d72e921143b3b91155991d5979eb3b058e8334ea441cf8744e4b597f95c184ec1303387ba8b73708a6f03de1031b30edb10d7c6ccf1468d9e7122e3a4d45a6badb5d65a6bad15c64604e8d949dba4b0d73ace8271f8a4c57176b2706bad350bd7118eadad5c2b4e8c03f3a065bc2511af1d51925df11ad54528d8077a1b03c6813ebe21243a23e9e6b294ac072deed0a06b1867a76b6e141c1497be937c39e87b049fd37316ac428251f4f4f3af4bc097f69148f384c405b7c5a51f6b71e991e0944cb49c6acbd1c3d87a588f48bc97f731dc78a49c3f43b3c1b107e499a1d58ef4cbf3eefa5ed65a6badb5d65a6badb5d65a6badb5d6fb82bc0c71d9b6b6fbc5d6a36f9fd1d0baeb0b3945f280ac3d91be913ca4cd0a40630f88b4b2b6b7b86d23d66030d30760eb21e30ee1538622bb08450034db896e448a10cac86499999999198739ee3033c71d6666e68b795bc95e347833ac833ab8da576ddb6cadb5a6ea61e84f2f3f915e59c5388ca2af35de5aab7db10d61eb556bdcc1e114b5ffea2fc659f178df2cc51d3ed1df80fb709e6f329fabbd3ddbb69d5e7e226d967efbf61c9c0a7d7b0ca750befd074edd2dde6df3fc651bc2b3a96c5b4b104168e00d667883e10d8637f8484d37e91d782349cab6a3b50ec219a396e9832e448ab61e9bf7cdd141cf04a0bd554c1285a49438240fc7e3e1a08842a218de184565e21d9db26a2071a1696191392e84af07fdabe7fec52797fe5b8f51fce47d76b6575e33e0e6fb919e71687c0354c5d3974a3bdfc5f5dc7235cf44445ebecce7b207e18cec76c4356e3d52fe79cafff17cfe49e9a0470482c9015b241ae85c1e2eac820645b8bd0131da3e9e9b723ea77840465e8c07677cbaac6505c8fb814fb4860dbc81383007ead4ee836fe846f5b3990d8e670d1dc20d88d0ed0644cab3db0d88ac53b9a7f2b801e1397799cfddbcebdb4604e81efee8da4684fde6118957f3be0632f290e013fd90c8a12e7302f9e4f99ceb3ef8864b3fde103ed11a305f8ecb47824f3d1ed3672f5a7cd2a1a491770d38207cfb8f7f5d88bcd8d6833d22b2e5798015b09b3b5dfee5c0b1e74edf0b9d31f9c42d27adf6c2326df37c38500845344a512195564c2c2f60c4b0c1f5907139c9b5931200bc874ef28993f0697e46e7e221893951dcf913e91cc9728ae329ee4482b13096b5b2d378e8680fcf5ab61d3df4400fb7206468333a1797cf383f43b9b8b8c4f0a993dddd376ee3ddddbd3d7b7777c35cf5eeee06fdf3ee23a377b70ea7849454dedd4c382524e5c3bbbbfbcce294107eb7901a0478770b79617a777777770b19c03925a47b777777b790970b6979777777b7704a080fa777a3dedf61dbd105c0d106c871ddb011536a8a06a075ab010a9003c7d55bd6a38b6f74f0dac8b191b3e5e4c0645765a20ccb5a365a5bab05ea7f1a85613a78552c150bc46a160aca4728a18fe7b352ad40ab55490504e25b1ae5e43ce50367556cc9768b657c64747c195e1f582c560d0278ac0cdb96ed0bd3562295f8be20808c010840abb5b6ba1819dfae832c192c160b8b0123c64ac66ab56ab974e8f8b6745046f370b23ac8686ea17aa828784ff32e38773e0380c64347df43fda9eb2b59ace2965c226b50974938252475d51356714e8e34f2c44509f97c3bea8d33bfd24109a9711fa66055b358446031615d715142500e3aea4dc3aa460951f9680b56754e0e174fda888ecb4d36ac92abd5cd0a6795c3a4740240c12ac96245c19a8245848b3ab350e715ab64abc5332da6693d11c00770d46316ac923932470b99b3450e173831fee2a8472a583557abd6ca06f5f804aba64d72a1604571518f53d0f8cb518f343abc3b690675245835495a7059a02e04ab664e909607e0a80721e33bfc832d98d50b8985135d14ea2756d1550b0f9f7114aa879f8efa49b62eaf6e300c73ce9d574ece2a6795b362b5ea6ab5582d568bd56ad5c562b5582d56b7ee7ce7b4ea5a758ecdc959e5ac7224ab55b6d5a8796b39ce4ecb62b5582d96cc69955d356ade5a8e5bc99c55ab6a4ece2a6795b362b5aab65aac16abc56ab5aab2582d568b35735a5557ab99b39a392bbaea796b392e87b25a455b4c22515653cabaf3dc3ab754f1a9482ffb158e1b9e0d180f5b65280f5b6d1f00b45a9cca98b00adbf8aa3a785339a99c4f4e8e0fdb6b6c32366d7b0c5fa9eb73a15a20d451502d1f0f5f1f3a786b747c2f168b75b146a3ab7432b18b3bd201c4d5b8502ed46572f15042288f615307af4bc777c4d79a2ccaba580294ba91e8d66451d6a5d57c959426005f6bad1d8000629448a5c7b0b5d6be8801c3b462823746c777001dbc02c8c9c9c979a1f1e205cb5f3c86ab4bedcab5d38125068cae8357878eef4b072f8d8e6f65b158ac00b498babf7b0cd795cbaaeb8aeb6a07192b3a78d7e131bc4307af8c8e6f003a785b3abe3427272767060f2519ab2be3314c5badc2588d9a47799fb52edec771de47a2ad3b9f9d7ac058ad3a89c4418c75e74936e0e43f6c85045b716a87cf6346580580cf4fbbc363f8d4c1db43c77746072f0f1ddf6c07cda5e3f7d0511eba3e9176ac8cf7515dc6c3490900bec385c83b9fa1b40edee8736cbe226a7a4ede0e1d003ac828195d4b07f9a44307f9e47590515d37ff0e362a46370fa39b7fd1413ea14a534507326a34431d6414a89b9ff96d5e5b72e7b3198910bbf9cc456bc66e2ed4a108898958a463c41938ccf7f5beded5767777378c261feb638d317a5f90976d88ee8e4eeeac99373d82f752c27db3e6f200de20c2dd9a88a37e3eb972b8fcab065c1ffb376f6c1371bd4f371fd7fb7a5fd67ef600aae01cc2e599048e3d8349cb2720e26d39050db8f9af467e5dc9d715ce857d25e2b0700bb7c29dbb655da5515f03a793a854acd8098316324523020000003315000028100a08044291583498e999b63c14800c8ea85866569b864914e330841021c8100006000c00000000a43001366b300f77943354e0659f5aea28c32206966442b3ff3c41224984f166402d6c9e614ae9e65dde7b9f803dd1622f0df87850c7f3a0328c92faa424de8ae1e30b70f1fb393bb100392ef108e9689f4e7f7c83aea73a16bf199d96332d36f413004b95a3c19e8da6d30fe26d3f882bae380124f8641d24cccf071c6cfbd32755f9c30f6e0e1adeaf2b30ead8119811a203518dd7daa4e420f681984a2aa22dcf8d7f0b01083efbe4a308e042983bb157027da9a8c577ba1c1fba73dc401e4ad5294879af1a642b2450b2e5450250fae602aaa26789321cd81cc7be133e011a6dcdc2ae25c31ac9a1fc1ae3f95cf55d578d2291763f3572e337f1fab5f6b2ee71c2618964c0a65ddb0ea6b2386b8cd2d653d199d368dbdd706a3f0802460c50f9b22f222fcea6c1aa2ed26c1ec66a2074c3fa4d0ea602fbe877a058a5b9e50f4148113be070a770235e868cbb62a57e11d004d81c496694a30fbd742915b72dcce18d6fe66bf59689bb1156227a4f25e6818dd29c1cbd513d69376139f8a8975d1cb04f41e348ef1818338c77cbe3cb7f462565c15ec8cf824c202ad2f02995a40fb727d4320addeb203a419280f924a94ed9b3b223290a34daf3e6a2bf8c0122e3e948a22668898883858bbe7eb63f70c24861ea4912e0e5924b13edfba9e3cc90281db139fe86a843faf60d6eaefa0f6fd5b1964282bcc9b5e7377e6d54506c3449c2bdf783941518069cad13221b4d613b110cb7b6512e40108000dd6d66561d25c8f28ffa6e4c8d5a061b1a83140130fb0804368354110db2aff59452c63a07ea26bedbcabbc9f0778b36431ebe820c60da78a12f227f36bcd46c9dfb97ef7e2bcf4c3ed8015b0fc68ec9e09a6000348ea19b6c2d5359a5f9a5da85baf920ec9f53896df17ad8869ce6a4a4f613ec4e8d7b664a4134a07dde57d3d7e326f488c7aae9d31a0efe1b3f5c108373c9eb0b0ff457f0865d1ffabdef7c4338c3329dd48ffdedbaadcd70d70520c438e400aa1f45f1d3ba5e4c1c00f868560b3aae70c0bb249aa9da8ecebe0f1752071d228abf38da3bcb5a3f2598c8616f174fa9adb717e7d465e6f404bea3b5c5576f366d5e8e9974d17b25517f428838ed113aa68d5fe8e18ca3895743e282475002642370062f042e762090d28f1b248a2ef401b345f1c4e76b22b6d02389c344e4df91d676c48f3b19fc75027aa039662c5c64d414243564d6573b3fade779869e40e975ac69be67308361694a3e9722ecac3edc2d98db0e48f3c9df2fb3b0684b9e5bc18feeddb24e1bd0fc9372554ba0ff6b859367132ea1ad42bd425c802a92c526c33408655f2cf430041d953b53547c3c07102c207103fa03290168c770179879c7539036b7dd4e8fcdebc32ae9a8f756a7d2c85ea9f3793e866da706ecd42b2d9a515b7998a2cb786d97a88f32b99394623141c82d487cdf66ca10d9706e3dcb7348c7f40f3564ade7c78414ef8ea4c9ab7c037e25977b413e3bfed8a684655d04923833630aa6e72869a41e3fce5f64a69644eba5d6664498adec260e9933e8bade49f9a74af62a97738e43e9684a74d1b4adcc6f86f975ec3ef7611df9ba1acd355f2b7b1d83a8a0fd30ef3c99bf75bb858c06fd8cb5ba83e2b95d7bf8b31d9af968344715dbf9c1fda18aa85c49cc86c9230cc010f523901ab7f240bb50ffb1faef5a95bba420df44826ea73b6880b1fb7b6e0afad1fdbc8c72ec274b337ab2b94ff715fbfb265d54c2e751244e35463dbc676d3725205080cd2f5532380c10f5ae81745fd37e9af177c1631b93bbe989445a6a417b96699761ca1b1f59005701d5c6655680ae56d4c59e8c7ffe6842205ed8d6fe68cbabaf8ba6ca578275d5f5c30fe4573ea56d48236e3efb66cf15fa611c69ff31450398968ae7a7c1437e62bce16c36eaea313ac03bc4f6880331b51fb5e1799903200b143d3fa9c092bbf7c87be2c6ee721bd4864a228801908a883e6e1320bb10ed5f5141c369fe6e678ab86af4e21cbbc94c7ef076d5fc32454c02177644e9780ae0fe02d762166d5b0656b34297423b424b42a445412d4b14c84ca2a48367716c1a99e0cf61bb6096db70c7dbb05c0873f363f11c044ecd5cfeab3508f701575da0d0d170cb5233b9db36ca25905112c6cc7fa1bc7593b53344d2430f0372bf507c721da836fbe1c802070209f43437bef11ad6cbc31220a80398a747f9aa771f4094920deeb2791f16e601d2add73ae2d3e4a41082e38115aff5fa64615443760a613108c6adc9e159e9899bb98f5017ca033e1b6aa44f46548e3f446e15a0279424b5bac89694407e056151f0c5632bf9ff4ea35aff47d63ebd7a12567e99c3a55ec11c42ffc76849656c5297a028aae47b9d1cc433890b666cae80062fc8301df894fe4d28b8a09e6f011108b57c9af93bb4d95b622ac83b8bb6880df25239bc66474909519442132f7961f95671caef1e8463b09274971d1136c5fe55f78da1b745a117cf57e797ec125ad8c7b42aed9411499c6c079e40269fa1873f60d66d06360cc0b30b3227131ec75d57ce7dcddd2951092eebfca55889304cfd6e903031f1e1e449e798a446b653b483bf05421b0196a39454606a130c36217ae22ada4d0c39624fc1caa0c99398ab88ef24f6211e4cd9a9828a82233d2ba0534984703f72faa9ce24d64108b98cbfe2ccdd02cb6cf40979f960cc1be588b70c3ee4a95da605a32a6489e97b005f2f7e45dcc29eee4c91f55c40bd5c8b344a4609b6d4f4d7f5e38e1742cee63eb0aa6d8ede8d26dfa664b585802b432067bec6f100cc39f74c007cb7c031e9371d0dbcd0512fa67bec10aac804a99059210d68efb4574fbe0cd1073ee6a181fcd7b75ed3a58a102ff3c3ce38ed47d92888dac58ad1d64f2ab183629b35231b41f0680df9bf1e19d629e3dabbf844739f40e3747295717d3262ed2b1c128aae8af08c441f5066617f082636cae65ad18a282afeca169e273a7c85a4a432ca317be8e60d2ff65d7c0997cd63ea489290c22016df114015617c028afbb525b4518bbf4a3f2db236105ff0f89e1603ab14efbe07ccc6cc248c3f106be44dbb6a3c295250e9967a5729608ab095d322c14727d7901e7b7786ff7186331e8a0ead8f025a7188fffd6e8acdea0bb1d8aa02b03cc6042311194cfaa428351d1d2ff00de9174649947d51fee249eb02072bd30c871438a95d1da3059ca3a9899d3d523bb68e43fb878e45ab6da9be7cde6d86e51b5464290035166fd7233d2d18a12711cdd146f7f570eeffc638e807748b0062d25fe1325f65c810343f5374c0b46bb90bcd6c17778b4b1e7f42cf0c88bafc8d64f5ef1edf4b3da277da9094a11c7b6502e35b4fbb35b19e2482cb1a8b5488361da3b36b80f92e482f9eb1d22e9f5f7609bd3f8c8817ce2c7881f7784c16efc6a587320aad693c20ec932daf57d390134c741a36d569c2a9242ed3ea0d497390b8554c769bfc08f08d6f3527f55def6afc10f8e7f4ffde743aef4144253a917d679a1a3d4363ed75c85203ff2bc892575c440e418e82f8b897d76e7bb4c020c770850617768a6f4857a1efd39861ccd9577a21b1cec41d6917803bba1c347336ad7a37372cc7bbccc3937ae744a47b6a9370b4a8a87376a421087beb1decc31082628932ec7ae54111da7b592e70d741bc4dfe71f32fa5006d34fc43262dc7533493466921c38922d156db0ca707516dbd4a632f3c13596649c33e090bbd8b5daa9f9d9045a3866f5d34dda590b82cdb21c9bbb42c9db09281d83bfff0455724ac41910085b1df12ffc59ec08d49bf10d10462178e976364d8df836a171a4b72e8b4be87912a4ef58cadfea41437907cd6d38b604fcd2a54c5cb5c52e953f06e441502fe7b747aa8f3c014b4c7b133b96ad8965bf4068db448b7758f1e2d1703fcdbc925f58c9f1c2900c12933da0e5d6d7bfd03b2a8004f7617ab685a1b542f3a2bc418c8f017853b590de904399bea52092f1850704529f8462682e36f48757ce84cfeeef093f57b33c6e38b8dc9ed1023f9ac425d028aa73b862077ef74b75fabc40d94f375152bd97cba3a4c2dffb22a614b769f99b7090f01819a28e77c108259f9b1d8d60a1c388bc323348f8d98d4e4faa84226cce4e6dae34953d479809df001aec9daa83bdf45d77facad8e591e12ff5dd422741171b9fb8fcad0a1e3f79f8a50be7bf7cfb27186feb0ed3c7c12938fbef6330ce67debc21030ce8ab0390f0a62828bb328df4cb9de20330940bdf5a1ef9a51007acc967ed59377e9719ddd2d96eae836507eb97855edf4bed0a86291cb6eaad4e5377305344e0ccb968c8bc9acc75606e971ff086700498fc5e9403e3b6bf49f0c0cec74ab37e5b4f40a81c83f589d5a9957fc1b4ad7a01175ec0a4f048d86cac3cd69ea6647e22a94328e62c5475bcd66be9227a7645ff89277edd9acb0a686daac6e8f78a84febb21a8e6a452bd0e8360cf5eb3761e1ee042da4de8dac751ba9063c9d45afbece5d4e32a36134b08c1484405d7c451b172edcdb31b8cf2f1a858569b45c6aa2e3e47113f2ff6d8dfa85ef96146bb34d25208ef7d77bf45d1d7ac9d6f718e5560ff32952261bd03fd44bc4f2824b88c50c3d2ccc06875de4a9f1e05832db43c34af20877152a1eb05d6deb0d879f2fe1fd2b83147fe4e4f1eaa026070808a2686b68fd6079eeaf9e8fae2274f952a6cfb12e2fe34ed412abce55fd4b7f5b2197f0c3f3516948c25bfb05c69428a12168340aedc6a0d7005a1b874e63d03416fa0da0ad1174360e4de3a06b10da1b4157a30c6d7f63dd27058501a20c36e7661cd9dd11471b7d9d94119ca5e75e1305eb426ea81c1ce635f73e014496bd1780e77c1e517271afe7d904189e3e9ab94d4553becb3187ce521c8c1022b0ac991654d8bcefeebcfaa12f494fab48ddafb6edef875e2eec9d4fca7475c42f3583832a967d3be8fe346518ed8e5227052b69b0d7ecce4b814ef428d8b63dbb3d94fdec9195d878d0f31a67c1ad9459346dd00ef2886bfb788afd03c199cc9dfb05ba09793bf61a6821e476ec31f06628a7cefae67592ced8818aae8dd6c467a4e15393bedd8beb6aeb621bfb81e0531e8eeef661ca9e0b9cccebd5e3477e4e7b5f5e4ba8a38f51b4147f4b3dd4526eb73b0001d8cf6b44d92ac43314534f85699e3e2bb8194cd07e81f4ce2a50f49dd7fb6c1079391eb3981c57db0ef353f2b5d7b06afb0e6c6e5e63a07cd95c8df965f238c38e394402539f0ceb9571133f6e6c30af6b9d9a4fecb86b326db50471b1e8aef085d9bc66ab37b770d149a686bc8d6db931692e77ae1dcd5adfd569c6b7d1e22617ae753818ef9ea9f1e3e51561253f2290b89d6af7f455e659ecf9a5a8e15280194aff5581f588656998d42782e0c0380284567ea02b41dee4a773a334cfc7ce5b467638c22681566a7a380dc3bac94d3c5ceb19eea281203158c0765ceb7a71e1520c44a73e050dc2042769bde9e723f61e78ecb2638854528097d17b45ce3c2c6d2f63586b1c7571080504a532a55bab2bdb62e52346bff1eb57ba2234d76ef42b66d976c5185871740909c4586b95ddb20eb7f988b9a1d437732a3a514ea9cdade5613cfc8ad82c77849e4a54583cb20b3c21bc82df9bf9b98daf65c59379b80ac6760a448eafb5d8ba0aa15cecc42b3b62fb88abdb638b989d91d7164109fa945270eddc3cf0f0aea46f1d2ab02b409c8c17986b42127e5cc73ddecb0243fcd819406c1b2dfce6cba346ffb2f1110baaa4051e45655fc7a9c04f244c6669ee78a6a5bca395bd432e4d18942c044438e49effb457d3a94b49de8a8f70487a91e02881323ade19715d2acc7943d387f446213fc693e4b310a6012a1502124e61a38bcf5400fb693db36cc382d79350d23598a9053cbdde4774c3c932c7da8b82de4e6e21d3d2816e75033d1c9f74aebe891dc1b51bd9a07537ea4300a8cfc043506c9314e7703a6b0b5ee471d3ba04aa2d7f0151b9eb3a019a8c2576a56415a588286b7c7b1047bbc8f1078236259b8af23444eabff8c48f93c0763706af5488e778c95cf103aa8004385a96488d2983d3af2feaae157999890cd47fe87fa903a0c52edb2069386cc917a51818730873abea54da4c14430bc1a5a38cdb12add0bd8ee0439ab562f7e5820734d863d1c55cacb422990435bdeac435c8dc55fa4b2c03c0b53f1a404f313aa16d1ae80063173fadb4c030d5d545b2580cfed1a2cea70606efe4eb3ee04ec62ffe1e9cc671d2ad437a4d3ca321cbec0628f9ec0be228f5b0e27b2d8aa1d4c385afb530cf394c46c6fb71e9389926088c024f9f03469caf1d95c948cf4815cb4a53b7b209c99f323b7dc695ba0ff088753cb189d11e3837057fc59d5b5f3add3a891af3b0f4555c75afe6a788424ea777632a409bdf90f19d09ba9cf800970076ea490f3284f8169a872cc99319e22ecacf238c9a01395d396bed9dadf088a61dbe32479a69aea3476b16786c9a15c5707272693f1061bfe6a62ecdf8c5a98f1d6400e5e5fa1f66a7517628c45c1a6edf3967d5ddd83763ab6c3e346376af95c551aed9e8d7d26c9b5359fff01494573b2c553ec19e5e2ba69299befcfb0efd91e57b5debae64e52a58e35675e67bb235700b031e35b052472e5db9333444f76ee966998d5d6c657679e68d3e7b98712ad9f0dc0e3a2ca51d21c780beb212b16281eff43a36a7519d4cbea4b9514b33ba657159ab4a12d117755241542f53deb558d1c51e42322cb28d0ef7e642a9f4d14c5260e0d91ebb1227a316426ccda3575227d545f5f2e65d8b155dec2140bcbda2214936ed2bf0bd8b2b43f89db5a971ee074130f0838cf59e5935e5c9ebee07a4dae90d3e557f993da656f18a29db3c0e0212b6464a07bdd70b447a1a5ac2bb2c2cb3bcfd3d3814569c9ae7aba0839a720ae84195f01544bee6f9f47eae89b6f4ef9881b0dab3c53e56fd7250f1e00c9e94e39ff6ea614417cd4d2cdcf3b517c724fe3f0e94926df858181d11f7ee50d7180a24526b105d732827ed1c45fe8d9185b49f28c6111a3db8baa4c039a1d3ab621b8ad5a535af24db8e891498eef5ac63c676775107fb925ac21dc758624847bb5c02159bd13a061645c91efa991fea70360761c45456b21604204c569e95d797195c06267e2fd176f8085ad3dcb6dadc2b881239191f9f3bf1ffe6039f1f1d8d84a9d2876b0a7be5d2e921683a335e37221123cd4b4a73872b6ba4c694b4946dd8ddc95c3e61b9f6c1a3b5b3c3943ef439f27d560d110462d2c2209ed082e706e1092b8ccf57ab098a0b4895628552bb24f4572a360a40a4e2b634a7081e27f412885ac8239e666c61960e36d3d9a7b45d31b0398d80ba9c592db75680ddca8e16c98dde448153c01b3e643deb177c25447f1bbef9a23b9582c744b4837f7060047a9690f2e76727756206770ab65a0dc8fc2c79d5fce3cd0d932ce0fcf0ce82a2da1e23f1e6c099df71692f9d6b73c840de8dcbeac1bf56374728fe33a2f9a8d625d7bd4912c20e762591102e2cbc4bbbde4dd65557d9ded2d6cb889f731ab2ba952f42038f53fbe0b23c326dcc7938b6dc3b1e14a31e90af7c797d65f08ddee4901fbceef05cfeaae79de775e967c99a9c038c24b067164a7b960272d1940401dfef2801575593f82b2420a01220edbe5c2f8b6a0a3675c1dd36ac0976c9c821488d33a61d3238deafa6f17fb809f48e3426dc67eae29baf376e21a074926bd720b35664dfeee174701fc4a1120de19b1a8049eb4b86e2f4b2cd3b43992017e118f29dfc764095ee084d666e30f15e573d177ffb97ebd4be6f1a9ebb244a517e04a09c9a5dc511381c1549403da327dd9975049d399e0b36a9b191846e5347567fa0d1e7b4479fcae393300b3947077a6292995c35a05480a9f53136077ea2728864308343f6ebfdfb7499c5e8cde26dce636f14f28838a9409006707289293db362af4b364f0a0e7e05364d70411960f6772b1f69b1d95132a451cd0cf49a8801033b647cd04d91ef5b588a2b5039a75296e1c2d41a26f2ab7331cbc921f5706a8911e14a252352c487e3f43aff66b01756168c160316634541683ba10e7c2313c4849898231551e10b55722f64ff299288146283ad6c5cf443643de1d9e5908673a8cff356f391e0a984f97842a6abe6fe660f01a759e18279577620793f6deacad26c02b4cf358a4ac89fe432ebe1bbcd12a7d0a24bb7f42375338e9e67eb0fef510774b4cdb0ef3252bb70e6e09ad62fbcc1bd87958f13494af11c5ea70d689c62e136efc2415e6b2253529f08f2abbcc40d4e06b34e4c8526db1f2a52e1bb932d978e1f0ba26432031034f66ad9cb37743ae5079656edf0587f4c213a0b23b16ede4f0e79661c8c387e88f139b4bf13a37ce29edb8b0d97fc012cc22e31b26c59345f7386e450734c9acf42b1c2265794920e944fc8544a2ad8bea7276cf8fae35677fd9654311792c9caa2ad69a74e4bc04211976caa57c02587fe08afe3fb9eece0d0df4863cec75596d541566fc0493cadc2cab6fdf81bcfb19649ddcae8bb49dea1c07f7f352a86f8a4721741a99b202283bbde99503e965ede0829bb52238b851418ac0d3a6599d3bdfccdd01f4933b4542bae34ba9580ace5c71ee267571b057404422a5d146b3fe94c9414563cb31ad42d4fa3ad4d284a536ffcfce7248ad5461acca393a12278e8eeaae3487508466e2bcdfcc34f60c57ea29f1ff3afd3e0b6a186cfbe930ae9dd11b4a7fb0be85e1ea7a9016dd97ae7d25b1d2034c7df5f386b895733d023db59caf5a08c4679c24881404e7dea306b93baa454814054875f920b1fac6eba698e1e162dee8b97af0b1ed99f87fe6beba600876615ad0ca68a6299e7bce41cd56c2636b8cbcaf4be7e49c467db34d0949872856ebc3ff1ce947837ee459446551867bf613e52bf81b395028bece245e0e5aadbf1c30367140832c750343fa87a77bc4548df72a727840aa136d5a0358ef2de5b9deb51fd79c09356f3523d4c1407c984c026809f5d01f2fb219157eb5b610cd7ac90d1934db6f03b21bde5063db268e06ee2d201fd0a692370d9bbf837d78d468511160023d68d94b4227866f9854b66949414436479d2f5fa9cfc1658709c39d2d6fb393c59770f5dd5436440c953875f60990d9ec85a00ac64189096c1b166f08c0d75a8a4eb175199291504c8950a415c2e554ca6d3df409b095d1f7d6d5b15e1fb49f961268d7cafa74c809b75185b1ecce12df98d07676dc399eb4cd702bb4533157152cf55311584eb970aaaa218eb72cca5648d3b3963d800ae3a25e9eeabc984250707a74fd2a233e9289414979e5774c297eb7ff00061da48011174990708d2a4c1df0910ef62c8bf235f18864d1eddc68428ed646cae84f440133d438791720751286869338c4697fd8a7a2d5b53fb48cd8516de451c66b0a72339cb43b41ba27fd37d80d87c3ff8a8626830b407b5a16be091ba1280ad8a4e143b7450a6d4d068fe58ada0bf1954d65060ca25066ddd1f4593c0f1ea6037e13b9be5da0eebfe9b0fe85b8b01da40e0062740631ffdd11f431dfccc2429665b6a80197be0534199774e4d365313bb801850c81d40fee268c31a4c4c48855f2c51ddf40dbc443e1debf436f3065ca21e895e05f07a6e1c1df9c049b83c86cc96397a17cced5a515be8d3436d22f06a1bb31b670755d08b4c9c2b31b401fff1eb70c941a73540375850faa785ca2b8291ecede0eb04e54dea5c37552edb891ba9a7bdebb59be60e72af96c21c909e4df94db8ff77447eca0c9675b2602fd25898e4e71852b21f16096ac5912ee385204b460e201d663bd516cfabc3b5a7a9cf38d96d1977c721b59347cd754421630bde61db12d027da65e24224fbe7e94ea1e61a3aa17e03aa4a5d2626f23c5d47bfd51d557c55f1e75bfa5b2f6385009aeb5fd7950fc652ea9388b0ea5d916e2f340b34886828437d01f16ff9bd4244c798d98a594071af832f1dda3324176199061b0db38222b838ff4fe4c675ecc0feb9bbd24398d3d9310fd2df42390baaf5f105ffc601cb7b23a230262297c015f140337f6a00e5b4360d3df1719dba9c5e122edb1d3ad65b01a795e1a67090c7edc87702b98d8ffcfb8de0a6de67f3057c0008cfdf568b486290bd80134f84a0abc2ac3bf288a23b6ec610a356e15ed517add8716752cf1829e888a28dc0da392567aba517cf83183791a00dce238cb8ca38f5394b758d40219563e3ca91bb22a9030ba95262d781b3eda1128aee5fc1cd7f82289257b196cfd8015cdff6e550156a58beddcf808387ff1493461888b04f44b7601a3c82cf06f342e996edf4003a9e63ecef08335144f877493190773ccd1b560024a4f58b4e800f8bd5e01698e51746f618d057e5a5c537a77b009a2866d24794e65d05172717e8ff6b77943480043edff8266f4a5dd45df4e970bec7febaf06e0f349aed9a7486e5946e924af86b62eb19cb6e3eecbf9f584661fb684cf437c8bc4780af10b8035660c591faccdddc5b261dc5467991721c24775f0581e878172aafe98139c639adc4a18d6d9d986737b8944aaffca28a6284287d17653e3252a0d4a898cd6ec7e5a6351a791f87df0588a4504a94bb08f2cf17416bb13be058c973f107345e6a8712910da63a3f08c393f15d5181089cb234dc0145faa8eb9a97f40a6a3277116c3899369df9bb73b03e58faeb15d280a5a8e7c612f64989bd002a552110711761f21d0832951e42a6869189f5ab5db8bde4e89a4fd8ce75ec0616e9422d8a175b77ef33fb0108a76b52289925133cd05fa04040c0856218219e65ccb10bfc8e6376c12607dfb582ce0aedd23d8de18e0ad8a023c62869c04c4214388ed496c07df5d51810be415872b10b41cd042e26c0c1b8b039625a80a050df8c783ddf30c5209107b973348dde1aef5535cb66298abee4885dccbcd7326faedc45ec743a8ad6161b2c315a9f4697971c0f6b9cbd757468ce21c8e480281e99a3c1986ece2e8812c9af0b07da854cc67011d155e448e4f62a1d3aa5b95f475c3d829fc7226c26451c3a316d460c17fd6465e2b270539e0e853760350495060c465c80f5d81522046cd85809960ca9572c5631628c1865c05b15a715cafb87efb15734ace38f22a3b0e017c091a1fc22cc7e1d52a361548dda47b5926b68edd1a7d937506bb770afe03f183ea74c09617c2eb32ccf2f91ed2d84dde245615a632b3fc9068e25646ed344cdd3c1eb07f03223f61e84590e0eb772cb474f9e4ab8af365694c62692f083b2b4fc3823c748ff90800b641c78d664619444acc9099f8d334dc345e8c5b467d603007a5505540634663583b958073fdc5a4ecb398e04e371cc4fb3ac1d12ee2ea9c0c77655d03cdc4e745ba0f2fa352197602886fd470ea7f4ece177014c21b1502835a73fe2b2e14f1c229d5be1d43fdb3a5979c981eb6ce221e61d11187ed022c1151493fd2e45c31f9ce90e2a4748d2292d116e94aa1f68813ffbf5834374615b71bf6a4f0c29b0096145045654c9205b18a9b957320b50609b4ac3a6afafe10fb5dda01a4e3b2ab5f9a08a0385d8d274bd6f23e2213d19b7ab25836993c60b4923f24033c8d539c1a9e00ed1b5bd4ccede3226688b6c71bf93db698537ff52fb5fcd978b2cd932ec116ea0199b6ba461e2e9395fb6a45455d6740201f46dbaad94c759f58d67d78c2b6de7edf5e106a7e8139c704e4abf47c87c263e75d83717ddb6a428401096f5247f6bd29054b442c43d4df1a01537b7a259a0f2f5be8f994a7dfdf628ed1d17e893d15a3ee5d2f5855acae1fe208586d51d1dceadb8d8b874bb748dbef39de6eb3b6be666dcea56eb57a5fd8a7de21a314c7c36b19459321de35f96801fba0e743ad82fb40caded108a76b67bc1175c8376aeda5b1a7822a24f295b050d2e8225fe68261fbd758c77b7b3508ac3b0666f64e20dab9fbef7b89b789a73ae46dc00136b8d2204125a834acf592e0d20a2c564344990d25147cccfe04b6f5cd77a5d9cc294480a32932769d4810b832c6502117fef48cb9577b215863ca26a9e4e394261772564e96196dd67b10bf68ea13a262ad844e8a23aa63181f40c12cceb6b7a3826e83133252e91543f605d54928d09b68a6fc8412202373626c06d01d18b290822ef8d09011203aeb763a2f31b13729ef31082714cb4d9145c86f13efb7e1713609d31c1af29265cebab0d748d89582e8e5a9366587997146e08a10929c18a9951298c89875163a223030d2b6a6817a8f0fb007dfc26ca1ddb8480c26b5dde0d375e838b7540a208ef02769167a240cf843408b3e8655da29ed5263086bf56cf44663ac299c2918425c0d8b5547b26d6d4f83b6e8fb8de35de26c3615ccb76ab1951e4370ef23516fa5b96fdea50293b0b54abd86b2c2a22bb754b50ec41ab79ff667e9aa0d90b2b5ae29bea4b150b4d7e7bf6cbf45564fe83d55116670e163ee28c49799bdf91cd80998e8788167eb666382f8c706081296869361ee2b1abd47a8250ff533b1f37f85a50f11d5f8722a0ebf93cc970121d02e092118e8fef9a1e51c6fa6c4582a03d6336abfe1de072983995609d25744146535b55ead07fab96e3ee16b5029103ba5deb3cec274e3bb35691ba61e3a571fc446f3af23116372beb7befa256def2ffa42cef3a8e9e9629a37dd4c611285f0eb01c1a11d38abd94bcff39356d53dcba71124fb710509cf92e4ae388fe47e7bfc819de213b5c991ac864c37c5b205b477b5f213b4b7f3fd9e090cf4c4fdcf9729846b685827e2d318bee8dca62695ab76b01c76583663f531beb54865f87689744907619b9228a77c76e11cbe4cfea51687c7da5c861c2666c9cfeb2f555e619a85eb83892381914b235543abe7cfe6eadccd9a6b19f51b4f60ce81620f84cf83753c9b6262bb0d612a51ad779b859f5a7635e7f66b73828919b74a77cbc1e95c5a41ca04b1e9070396d882c8c32239142285c0ef2a996b5f50189786f65c47627f7967dbf3f567808bd036be0c51f9168b3a3c32d306bc79d722f9e336e81c67d5e64bd5ca0b98616a2f01ed8057a1ead4049a9aeda7d50fc2b871ac242c89dd5fa39c916e9e64446d82165beb02af2017408af7f4b002ccb2a04d3dbffe2266207c4765dd4982d197831941b9b807b664702d4381ce62b7bdebd5eba418f6cd5d5a36709b00f3ff719ea5d68e41ddc8989639566dce46e1297902b500f5bdc40c9e80532c7618c9305fa91258c9286644b8864bf996a1b7f6cb97aef47cffe79638d1c7f5abdd2104299f49ff1dce7e5811bd30d37db60646e4b47eafeb04a0ebe029a935252242c47a38ec1a11e98931c14fd94ff03a115024e8c54d84aa2c7b1b6e84f8076770bc8ba49bbfc53deda661800052f2e1b0e3715373087377021f1b0e091189ce1995ec4efb8a0ca696d769279298711766254f501e6c9990fd964463a007dbd7387890a97190c71d22b7f48c94b62976fbae80112c8807d1350d2167d820b29ae5c8d1ca336bc073484c1432aada96c318a14efbb6fda3564506503f7ed159f6fae9411509aa02ea9179d4b628029d27f7e6f96d4ef3f628aff0731ae05a84bfa48244417d1946e396eac0ec2696ac445f5ba9854828952ac1d8493d21a42c93c9517b6c213ab7214c7cd312953b11942b12a829014f81c75b7a08ac6a848ad01005ff512bcb08b2e56993b60ac033159441637244ff4c293765f4b521311f27a228eb528ee8a8a7634e86fd19cde2b8734d81afa0ef9050e1e9f53b39b58b0181a1e0f4deeca5d18469c25f6e55361fc99ef0642879bfe6cfb070671df4f95f6451f5926cd2aeb8efce28fff204a68db90174a335273c58016b04dac8e537a12c165c52b3cd9023e60049abf5796c3841fa5ff7e939b3fbfba97eee9d195ec3b745812e4bf20de82ae1958981e247db796f86e0f8c04164c4184096d714e9720d2af301b6ce2e1cfd9733e802d5a7e8cdc4d09d898ac72196122825ad514b480e9bf2fe9c7331e458a497d4e3e2e66609a05e8414849a97063f20814696c4398b74ab2ee964a04cc6457fbb95de4889711a219ef906d0960a47318bf18984638a2c84c91b8e08110013a1c890d78c228978d86de823752973c60ca50a40219e610e23ac2723cdc0a6164eff0bad84f51f022b7cd0d805b3605a94e2ded4604750a19ff1b37e29f5b91e75746d4f6abc3d8255938ff400a8b46aa8056772d60152e6aa844cbd0c09b891368244fb72bbccadb338d9c1f27f115016215649cb2a3fed24895d4daf21cc736c45b2e525ace529c84461e9318ae34121297792461d34985ec03e89a35b3cdcbd31fbd6291ce2aa79b1385ce4bf357fd14185c4fbb47dad5f813b1acbd6d3ec131fa500ebfb2c25580001845729c5105ff7055714419fdf7494ece5db1f0b232dce0aa00bd8a599003e11a4f1fda07bb3551a0154922d4f4170fe6c43b6bdeec4687ab710c06fbec495cee20181c4a05f1d0344977d7c04cc14287abab5a2723c23b187a480749e0ac62bce7e8d5252bb85a5080af44656724950616b90be3bf5c9f8b8dd2b5fae5557c3b02283bf82f4c5615d21a6d29b54327c31c6769588e771d3cc7fdffafe06d3d630ae8adf47fdad9f49c9ddc7b8bfd2d8f9bc3aa1de0a05753d75f1499613e03abecdbf99f1acf5c1a81ae3ba851e914455fb84180d56144b676431658685f5da096280e1a7aec9ef5e823386fccc4f8df477a03941fa20d56ff1e2483ab6186cb59ab81baa7c8d43bcd37154498b03c6e080fa657a8163f7fbcffc867ee4886eefb89ca305d7c7579514a9f8045a2a6eea4024602a10b1bb371982592e9bfe225434cea4cf8d981a1c8fe002b5de55abf8b371c3eb66af2c7c5895e61921f0456678cbaef0f85273d85000e35630c05e9eac305cd931adb65314a11f1e5adf8f964cfa5540ea857eb19f967aae328d217c8035d596be9cbb3341bc77b1ac1f8bc4af36e7d217b810c0bc1ff72f703974ed5faa258ecfc911b0f6ee371bac059738f9fde288d9a65f41d100643cfb543ffc071885bc805589a04526f0dfd96e3f0de4adae0d57d40c087725a507c9bc1e9747f1295b53d6346c127b720f575eba1d53f1c14ede6daa3eeef16b5887a0a69731e7367595caeeafbef5cb217817726e76418aa92d36f687fe934240cee997d596458b69706af86c1f99c580b52174ced7e9103167b947031781c36e217bc24e9d1cd0047b1fbd19cb98369dddeeaf9c67799a05b8afd58b5f4899de4dc38db4e6ba76cb77d9f9b5d7515c9189575afcd713fa9d17b315a2f1f0610af705bf06e12eff5d67e33af7c7bdf0b1f683f2b4c37c404f55041b5aedffde2ec12d42f9b216f8a2d3ee14f2b7eb814f3e8988a7aa012bb1f5b190427b642acc7c0b2f5cd1932a3e8aa6c85686770e5a977fbc5c579d833c5facdabe6459c39e96d6c3cb2af3bfbdd249aae2ab65ca82836950a2acee94e58f7e601327aff30e4602933de31f2437733372f85f37f7d6ea33c81154d396dcaed669732dcb9b16c028ffe43382a8a7a0490bf0927b824082be32feb29cb966444c1aaaaf55d538f2878effc0ff12ac645607df1b441797cc30d26d16851326f80be70bdd51048ad1c73d15520f5471432ec28c9f65df4766a0ac4af1828a9002bee3ccda5cab0bc27319dba090e4d39ec587628e50a3b157c99a0e71cfecfd4c1c7332e38d96064e79e85034c104ef70c07e7340d99bf06b9b78046456ed65bbc702c1dd849983d3bb299379490ae13a1fb23c73b1577709d1f16b8d9235661b1684ca326e5db43bdd02152abda1d4edbb54ba6b15b0036b5a9067991b995dc349b664a23dfdb6c68282e4f1405813c89135d0f214f85adff8320ff6e712928d49d65cad41dad96e99b13d1afd0d040488531d60ef6a2e1d67218405e703e4aacbef3f5284ebf53de6404a21dfa2c42a3a184462a00beaec4b8a69d72a240cfea84d54344e2155adb0f953107c1563b82957f3dce36b2a601952d8929f119211705260f007dc184b1a70d464e3d64182282f51b3885c0969eefe4628e60567b8d75a4eadfbaeadf805f23f427d6cbf83a746ea9a041c1c3792f62423aaa49eda24cc67724a39ffaf255edc563dfa73a9fb2508fd5f3f54e1da1c7a4684aff9df0654a21688b947f30ec9843371cb7744921d27cd6d3e4395e36ea67968f16b621089b319e5e39df33e7d8b00c3b91eb513591653bce4542ce975038d91f1d81218e55724ead9d8d7d0091354549eabc54651977250dd5f883f6b40c04386b4a8c7db8c0f641093dba760190e4aad8c1f74ace89bac9e19561ca0763b1d3eccd8ddd01973e8aa7e80aa191f0c59928045d1d8cf6fd56a4234d238d50fba3e123a925abc6ec21a123d967ec8fff1f9f5ad43bb6ffe7bdc849fd6db30f20985008c05cad4ab610f91080fb23c0a3c026093958ef4f7098508257bb01cce4d3bd473b0a453f56d9ca7a7d12ab9be707474fdadbfe56d8fa06e2f62deeaa462119aa8b27358763bf731cff5511388829dd72118f787aaceaae436e36f9eae648a7f292f28bdeb6f44760d9e334a3b29920f1c26495745b1389c7d81a47ff12cc4310cd8a2ddc42efaa90c1615b3600be52ade41db1ffdfd677b440bffe53791e7e2b3036f590c201ace9141fbc469fbf6b027903124193d066ac8212199411fd93c5be1ca4354651fd066ebf0697f0080c06685b1b1a07c8049a2e5c06186103af717be9403be690e14b220537f816e0700a00a6b0ac484684ecc8800dc4a67bcae951da0c8752261036c136b6ede17c3f3188910c800522d28fb3913799c546591e3da92890020d2427689edf041c34a22d3312f4ac67875e35a3ec34b4e58d1849bec571252e2c1f6d97711ee08878c1a1d4bce53730b1fab4810804d3078bf6cc732248c4499e732426ee112a2b418a0d78c32f8b0bf8d8ad03902be5cdd5fb8cc06062804e9060653fb8c9549ad5bd27cd85d7724f6eae6794681d2631f1ed0cff543ac95c26c7dd83c8eb4f72ad94c2eb04bdb4eae11f627f197d1fa052a2c69d6c6d906a8c4b5e1c0681a2204c0c6b6b9f6357395d493af8ab98fcaff45ceeb9f98dd4a27322647b3dd3f8d8836e4cfc0b0ecf0af9e79f9021380d8508118d3f7dc0c7c5f9cc54f9043636d612694c8cab930fbf670f0440daa5a81fde6d32989867625fa88820443219428a50e33dd534048bf60c262e3ba2a7e41a8147af89393d57087a7bb70014cb04a17ec279a78dff0bea0fb6be06b6ff7d03418c550698f6e81b8f331e419d63d7ff1378ca315b2f50e075026865144c10d7c1daf1fee5a1cd2988bf82d0a6969b00a3d597f59bb1d089a6c20dd5d211289d3b1c4ee754d3ba94129ffb1951b520f625630c276826fa7e1f84d9dd7f4ed667659449d2894b3bd22693f69736546c427df415c7f0ab7db002bf0be0c4c6500cf2f37b188087f9d302d74560f9a257beeb7e7cd61b7dc44dd84af654152a27b97733e6aa08c998395708644dbfe3a18359aa9c5b9cb4bc9125315f09c5d5e261d0a9388083794243474d393c09ac08251121e3607e42dfbc562700eb7b48c18a36ec701581bd44625517e8ce8fcb0183daea7023a7a268a28f22f6d65da0dfcc7a7798e85256ec6d9adada0fa5ee6a91c55e1f5ef273e6a83a11d009b650ef4aac13fc7758de995a3d10ffc9d717e4b7c47d8dfec8d2ed23b7843454c44633cf0934770012353863e39b5540909100a505bdb0cebbd6fb1c8fcbda9b3edc1b7492dc8e190e181e4e84b1cf4fd62d1838c60c626793f5fd41df21e9d56062a4fa13e76a302a07d508d3fbf3f03d20311cc6efb8318a57c57f93425c81827a93e38249ffad8bd8c1c839112e3f7e99623d4a053c2a0eead53578711f987d6afec74a60faf36854c481847fd0b0f16a45e860db18b2d092a274a06b39749a0dad4ce147ae8c1a9fda44c67731146eb57423e24c0e0db10e4950c5a2544694f496c9d144a0c36dc59fff11d2b1f771281ab0b36f7cfd06a09c77afe9e434054f163350139d815e1bbbe7d3c7c00d6792dff6e5dcc3e3869dd00162315b90387e65f7d1c5e092b2fd5a6c622cf00fde610adc604b8658f0a4e85a05ad7ca69d1a888d278cf032017ae10dbccd3014686cafc1228a5da8e657f6804538430e5724e544b06de4ebb8264ab4298998b2e00493a747780a686e19d1175a1245556d64c9e5dff2063d02aec1545a9f23827fdc5b59932bc0b5b5511c66428c7aa46c88468584c5868bc7f098c76a1810686a365b6d53855a0631b7ed1084c76a1c2d4c8dedbf4b1928fb3ec35ef4e737193c84574dba5975d9ec76f3abd92fa8195ab249226eaf0323c1626264e093fe53861834383ee808ccbf5e95c60545e002e9af84ed4748aed67cf96e7d560d290e7797892878a3a2b0728e9cec113d96e5a5e355f351a9fc30fe045f884a892b7a21a1e8be95b601aa4b48bf5d08142d6d56acd2f3497a3ace05ace637ce977b744ca005ea19cb45ba4df6ed51717e72ebcba74781074ecda64c7377ebd46476828faa799ae2a5a4d8e2d467e81a2ebd6749b7996ea324b2640a09129d2be7c9477b3114fdd9ef7fb32c11207289a049b307726905f6cdb49e551ababcac8081dc37e048dc112f4ca3549f882d3c32074830db2d3ce5d1470a0e3166fb6be9e9e64252a58e8b1e2d4dc850970f47020e232461db97bff2e4a0b720caa6c8c16b249e24d6ecead0908b6da3775361086dd027e34ed1dffdb6f251ce97b1c53ef0f29994a872f23d592c68cca9d9144699760c155cacc764da051e9c4d5251c7a333343f37adcc5d40172e8a7122a4bf73692eb1348fc746e0021f37d0f98189c21837c6e6e387de2bf6ebf24d0a94509861ceef2822fe8f48bb0b6e1a1271f8491247f0e3c8c909382016907928de4d188041e1f24d7a4753156e026a135696deae8cd241ed9666edfa616ad072b9d344e3853a63406c8ee979900d4926982589958ea28638eec710e31d5a75c8b9a4a1f14488b95de9fdc7f5adec41295652405047128a68e56ad571fa0f0e67be3f7e32e0d43a4d7efe1a822bc4f898f67434a104042933ebc2dbae58bd080f4d30d26b4c688daf8c49737de804aa838e33009f01d2b0ed36dfb3088ceeebf3b3c241ccf4780c964f0b372a5f61421bf86fbe939d67f71eb08294baf4f7d94b3c3a0d1a27da91b8e64a811d16853853cda7951ae28826b3075aada988bf423d7d80eaf50718b525ef13d39a62f48618a03614a70a3cac781b75d2509b2f12d8cd1d591241eda12742803aac34ed3f2cfe06f32182e5383564253f06172d641d0b9700861d8d6fe4c7758153a496be1ebf8309f3160028e977badcfc32d0202b75c63a7389aca7f287cfd98b7558cdc9774123dc14b9b863013c3d25d7616a3d6dfb3b9f1edef8e0fda4e42df93dbf92f1ab65103073684c03b1b063405bfa0297729e07b9ddd957ad107be9cd73516f5725280dabe775f1bb260e1c670a4b148dfb016f7e275bc3be534f6ee434fbb16ee4143f4d30639dc707f5c2013fa65ca9ce869849a4f091d60ff4539f2bbcb66aa442c3343f2ad56aaefacdbc31fd37df947fa06ab3839bd19cb6a570b50a09c2b5ea56aa71784f002b354bd9a39b2a067272c31cbfee0b4d4289c167884860967c151110b7cddc712d8c76ea3bfd67fdb5feaefe7c88918217bda6023e344d44cccbddc8d4f665e31de248bb8f9b79135989bf394ad26808e5808f6a7728b367baafea3d821de1d0d97f6cc621ef5104d03b90675b43cc43ed68556573c7dc0d1f2274c483b78cf59838e21978c2596830a00957da8828edf6e329bb78260f888aac06a29903c9775bf7f8b25ec9bcd52a9be9733658e063dc1c24acdec9dc7e8346c27e9711a4b4618673622e4f03256ce29c95b28a1ca08ac280884407403ad3fa5ecc845394ff1eb402fe0285e8ceb3360351d532e4be0523bf08ffbb0b6079e2961cff9ae09781bd84a65772258dbe822980de4758ecdfa1d154d6f6207c42fb2fd295001055835c54e6ca20340e8d01cebb62551d8ffa23f29a6bfe43ca184d538f66df3f3d35df1694ea3437d3372132a54728e2106102fd5409f6cbac06cdce54fc682cf745fc74161995e7de038a16f5c3b8456748bc8f8fd643eda62b8134c0376e19bfbeed2648fa1494ad62f53e481c61d669aa5b70ddfa3dd497a2f7dd0805f840253b12425dbaa8fb279d8577f44416c49ab3572cd14bc814d3f3275d4a4b11d996037ae08f83a7a23f1654f28c0a747c70326bf1306b9a611fd0ad8db8aadb5764f70b22e89274e780b99dfa9d8aa049bce9425ceaf6ff45a46db9088b952e940d143ec9907eef20bec2bdf0ccc2a69ce1c7e16445265362f02eec9662a615e6b06cc7f108c1a027e4f43bd6ddea7a50b272a1b09167a85ab95d1e60f435621ffd52a3376ffb563fdbdd43db9d95f781c89163853622f1a9ee351efb4bb156798bd6916f2dc84bac078211dcdaa76250d908d6c24c882f74acfa29d632d7e017f2626c33dd14e269b505204bf4f21a8de34db646b99eccb89d1bfb53eef159f5ab516d5b220514c2fd12327d3c9594f0b5fa1e75f67f84468b376ce16cde152cf88ddfb36f02e3c191d32dd36cd367d80ccb3090185b8b5b30857cc8139689827ee4787f0e24321bcdc1dafd03016491873eccb22884123e9af8d7c6844eda8ea78bb1934d1abd397cfecaa08b81cdeb502010b4453b0746538b5f881de70f62a5b21c3051f9934b869ae1d02113e4999da2387c6ecde4e5f5c2be4025c378e57e9defbe024bb0685c78896eef09c9fce3c99c3105979c0161b5c0835285cd0d3aba8cb5ded1896be3eecc00b8c92a45f8ce116cdf294f2cabbbc5847bceb1568d950bdb7230fd1387f00ac4776f19d88335a41f7fa4e12a875a4093c5ef38f475e8ea56ce69c7fc167c80ab92802f5201e7fe02fe0513ef3919bdfc1f502f9ff3f374f757fb8e0c471d5030989213940047df3d0e2c87fbe884f774d861140754e33f35cd6b6be572e506ed6206834f01fbe8278356cd2699ed25994b6158555d4566efe9bd260428b6560bdcae9b6ee03f5705404520e433fdeb6265d09c8895c1a1c2183412de59936dd967c5599391ee0e4248758dedbda18eddb019d2d331fd443587cef6c196c39bcdb8d7fd00f57e54efce160ca39edb863ff6d49bccb55b681f18c61faf8d8e6c428ce0a8bc94127eb8059f4cb4d2e2e4de59bfb8864b89c5f8055844a1ac06f71dfa4e5fbb1100a7f939138216188c8ace0c15d4d3b191a1e4270ca81fe012db28a1bb21ed9881f25bd6f2928516c800a709b68022f23e7cf31a7d132d1a441148daabc613d4bb56b9bb9275c0f8dc2e45f051fe66bb542e9399b703e2ae632ae623bfe936f732e05e31fe96fe2ad4582617372545dae2c361c340f60d0de3c3c78679ec0b8d201f6a28ccc40fd964c0aee563f19e02f33a010f2e9fc0f8603f7bf0defcce8866c46b529e980fb560a961033da36071e283f7fd9abbcff952a58ab6c3f34ede726035b3ac7c922d0ca7cc9613dbb0a47b3c7b4c0af42d8b98ec61dd8f3f65e6d47dc6d9c9b622ad86e7bc679a2b520d9ef413517b1d8dde739ebf0a50dcef8d1b157a1fb878ababde01f636528be7fcf8177877fe41d837c99d3cd07b025ebce38c107f52a3c300d6adbde7305513fa82d0c964ca85c829281e525fd40231c98afe1b58a8229232151bf64a98d57fefb036d71b13a740f7544bb399236c6d3b20b7780357a45b115d30f38069f2f066b92b8236cdecbd384408b615a9dae783f034f06af057864a2780c0c0ed79bb877f54cb048de750eb7635ea1192270a99d479b42ad2d65f5270d0ebb5394f8cc38fe8dfd34778803096975a644bb6992e1e0113645396ac5a293757935e80c1694b4e3481023c437dcbb6cb6c69c43b688e1d4bc9068a4080d174151957f2bd3860cdd2fd3e2fd53ff4b3c9dc4b87267884c2c63e05603f10c47ae77223bee8a07ef5f938e4289bbbc29b9e4ab0026ac08b6b934ad74b7dfc700bd3570819768bb08d85af3887dd4c61523f383f807c90ec17889593df1d7502afe0f4582cc09ddf428c7e2872f35a03312a60d63aa71dd3e11a736f866c920aa087939d01486ffc52ae80c53111653c3bef43a315aec73f4c43986b33d98837bc93fd135dfd71a882ae83be416667632bb249ebd7ca07ee07d064ce8b6415776fe8722abe81104a1529cdaf05053a5978207dffc36b7660c643ecca13c5c813763062210d06493451c0b0cda45d4076b94bdc610d5929ca9ca99f21e23006fe2e5f0735d99b3b3d1a3c55b191db6fb0300e883cfee8fe00046bac8f24eafe4b36f6137cacb030af2b6cbf1e64fe13486885ed322d18b9d1c0964dbf637c41c9046d05b95316fab06d8c0ec92f94df134b5a87bc8801209b41b15fb7746e2ff3615fe40828bb50edcbed454272281306e74fa17b9ab456d484db2ca403d4217e52f43f35703e33f0a628b3808c64fd52192ecf66188a120e0160b02aa54cd437b6358111d328cf467b07db30c94a407c503d95b12d76deb6aee9ffeec9c08211c2c92a63c5c92902e3145a0a51b318775265342c69b7e22e5171af0629e2b50c73780da594218bf836df8c2ca198677388ea5719e6191fb68d2321b56a322ffdd1fa63239ea3e2d9f3a39736538b76e72e37e1f133190dbd64ad740ac1515d4d6e39c3218313419695acc1663d70ed80ef33fbad7bb4f0b7e2be8ad14f207a2fb796d3c0698aa4e311526a25a79fafae3ada367ced5ce2c45b4d866fbb3eea7dff9f2e39eedfc0b0b1199988fbef41ecfbe366786ba9f76be4e0fd33a219d1a403b163630c218627f0aa6b1837f730116ac2474df1afee36f6a8bc787423e8523f057042b21df3aed436c88c740111d308e558dc43c285f5cba99f63aa5734d09897ef1814d10fa9270b03e5c8d9cd897f1485f74ab230008c9c49ef2cce4ab04a4023bbdd8143587e48257a53cc88f6686150d3561eef13cd6cbd771b089bb705ccaff96299c41b6a5cbea944ca8259f43bac929d7106f4d133642d19333df0d1b453cb22df14e4d267b15627ce58d86363e58d0bae179823bfe19acc9965a09f9645db9638aba1e1f3308bf4d94275dbba9883c80be9a7ff9aa16440a3bdd93f75e1f5994fda3c934904ff1a12847de9c2c9cd5b25d5b98ac9b32f817743fa4766eb3f11bce980824baea18f8ac0ca54ba05785a90a20a5f6a4b85befe72743333f450b8d674d6365b70e63866dd7fd9626568ee5602335ff0dcaf3f27a0d0044f77372e88f33abc8f37ce5398a1b0f1d08fe182fa1ab9676172236a1a0acd5b64dc3736c1388e72babb59c91a050249385637c8330cfda60e1515c76fed2a6ecc72a28279f019ccbb182588eed10a5686aedbbc4603aac808b0850fb03aa45ac09c837eb22ccf792c1ca05f195e0fdf9fafe3f24ecbfb1f945df82b4b6142ff07951934993b061d3e3256080f7777d04e032b16824b0ebefc9869106d0082c71ba565446a194600321bd609bc3da11ee8f06c63ebe4150b58506aecef918da21eef30f47a74c192cfeea2dff70b6215bbc1554cfdcd3a4926c149d5c9b88861416506e9252e82c713651b0e07d99d3de6176b4a71c5fb9c211e6113d6292a302468792dc8bd4a719b4f187136b75fb214f87931c9966f31db664911e228db37cd7a99030a9e135e05f5ef8f0a2abffaae220751cab9fc7540124f9a6e92995be86bd43cf649a4184b781516a11231cdf4966e6c05c63a1251aeb664c5a4a54df6ed159a9840e7eb7550fcbdc1c754fcd51423bbb79584d72de44bb6893f51265c4ecc5aa11dfcae2b32638f68ccfd485b868230c86d2236dcd7118f248e82fbf0b2d2714818fd5d446383d26960993eac28aa55fb80cf243ba594b3a855081f2e75e0936c83212006261e7a7bb69af83fd7571e859c07d8f6777d4ba4f8f97a961224d11051cba8050bd3d71a16534251b8e89416a2ac3e75001e4121a4a53a9014f72dbfd264bab71904a1a59f7e8806ae52787ec288137a295b85d16ecefcc6ad1ab54b4b34dd263410fb58bddd2b5ca236f4b324cb0a3ad688c04e2a3ccb8490724f18159990f9d61d6b5ff262b5ad64427e77b6f384842a88077a34b10eca800c969f4597c03174a39e5edee84d4e6806b8ceae48b2ccfb22745e04b5ac19b5734c116e0cdbd8480d96bce5817d3fd0fdd1d200540660c51b2d4c2b54af463a27c16164852fcfbb8d50c5357d58da511fe85f588854bd7f7cd8f4d41f457c6d1ace3f80098ff873f35bb870c4a781ac5faf2728f7aba3580c8149cb78fba880a065aea41352ccec16392bfa7aa1386b1c2461bf47ba9fd9b88cab158f895474e1868e6832a7f3181d766735d87ce3ca6e0bd991e12d48a168065a05e276040c5a77eb8a1302784c61fe2e499efcbee8f3db81daba8900298f73e920cedc463cd85eaa4b16b57228ac2e2fe7bd8e0be41b55e2c4a418dcc4dec26a8f43bdf92061a91ab16059ae702175ca105bc433ef508f565584d3132f8003508e01dc35be8a7976c8d12885f7cb07a25e16b729ccaf7a07f45c1f64c8a788ae64df40d9ae187223c1fd0d2638e4ade08a0f84cbb61418855839867d2e41fa2b983f267a84f5b938838b143b21041a06a60f891936d83b5dfcbce19f252a3a23f170cfedb8e47e31cbd39d83685c02ce2e7c862269dbd7a20664db4239425d4c440432f6edf19bc14acbdb6d062e048757a06058e9f71f2f4da6d6650a8c793a9e4e41f5605ec8a5ee99b3bd2dabdc5a96f26d591a1a95c283348efe6518f9cf6e0b4ae4f087132eb4b0c24788cd8997d6946042f61018aaad9e1a8ea2764628e3c89ea1e13cc1bd8d51cdc38f99a51f3728d825f7e30448587b179b17b8ed07a804361811bb2051c09525b427b955598611f8954c31ce9473594e17c0bf3a80169797be3538f10fa1dbaf57c02e63e01db5f1873b006c86d3f0d877444fdf06ea00d1e61df409b64e602aed675f3a0aa884f1182ab1b1583fcc110af86ecda02e1fb0005e6aa874a0fe9016016d4bcc4eea4ea1f07f1cc4e70219d04d708cdca301312b420b345998b385aa131d158a4128180af7451bf1002bd0a6045c2bff39b7cc92e8e2590b86a6a75452f8d593c51685011efc44c9ef697fedf369621b1618e0ec80e3034919bdcdb793d9590ed058036e19c7dbf2216cb4f637c77eccd82a001c7bc8315280a2263db6dafc3da712764b068101bf7815bd3a976f6a71369d084706e1c56bea1d4950fa18304aae3cdfb51171cba6c69faff9b0e97639ac8e0fac69fe304bbd4f57d4626c493cd809305db98d9c3c0411d25dd8d7b8771f89ee62b5211e0e8594b50f8f099f313d7792189e3b3158ce9d1a30483106126a9f8a2f29f5f0292b0f5a4dde1added2968a7446dd73a935d90565a2448fc922f86482be4a5be5de21fd550e66feb41a1834064577750417b8890c8a08c1cda9139be685ede5e68c6da729fcf1c75871c6fe78b248087d711284e4ebe86f2ee0d022d3131d9c7eb6e0b52c639030ffc74d5113d1c27cf8ab5174e8bc1709685e1143f6de19bcecbfe9d4b9b06a80288c4b86be7131240444f8339cb479e96a6063b448d0da7f9691e42ca1728b40d672372e9f9c89888eafee00646745f8f610fd9e7e17cb4e1b8cf41f9f3d99bcca253efac6992ea868b9c5d812411f87541d6cfd1049de6f9bb37c9c020dca09e4a3d103e402b4e4295b2e2c4a02f373e372dff9563aa2289699dc04b4820524ae423c190ab8a180f2ef47b8907fb1b4dff4fbd55cf87622c20ed57602d068b19c58a754bc20dc53f610e70ffc4bff8a6766bd884c2071d6e18f191a9cfb283e4846711a2f34a088d062633f78e78db724a3ad1c5e8ad71f5263f13212b59d0384f125eaab42ff6f103281fc8287c706fdc9d83fddf411e5ef43b2ea59ef72d91fa78c5406b8b37d17f1406a1fccd2b743e6ade897f9943e3221302e377107b2ddd885cff84785d88acbdb5927d0db48f42dcc51b95c72c5666a51495f0246ca80cfc39778dadb6f018a5ade1396600ca2b0554273760e3f486620a8438a2b74594e31494ee6be1a238853582e6280f359c56d0e283d85629958dfa4fd24138a9c9d1b29f7562a64a3b1e1c75f2edb22c4bfbd9370385d3684e4c4277fa81687c3ed87de0ae2cb10c7807872ed533f06cb55c89ac0ada4bb12552073d9b2656105b91f6286e49caa1cbaee4954455d4ba0a6d9632e8d969b132590ab59762c3a50e6c764dae20b782e655d492d443cb564b2b292291e3d67b10075cef950c09e9f2a8660bf68bc45bfd59d23e3225aa0d41f7d650db80b059d5155f03a7c97ca229c05b1579497871791982f4a5ef872414d844e930ba6404cc3c982dfe89c8580a3acad2baf0a2a4bbf36f1e5de08b11c68a92ced740dd9e28f1901d4c638d151655a2059e2f3b24748ce3a1f7dc31ac652bbc12acb061dbf397d30b735a98a974d1c7dfc73de98ac6bcbe951801cc192fd21b6a00417dfd583af0c56cb949850737cf0ea5a41d898a9607db790d449a7758b5de9775408c7b8af72227f72a8181e473693d822ea5bc76e602909ba2a63376e24235f723725db4166f7d1b426dfc9e938285d1bca74db05d4e5c25006d50618fdef1f84260999f72d1a72a8f4ccb8292edc979dc8473a753964914592ce78ff0241ee0368ab72e3ef620dca28e34e5a548eb5286e996fd8d2d3ce262c852f8f38ff16cea9128d522a696f8db628825bbb67dfc81f65376784e9fc70e4b595c4d49b7b7a6ace42d53b3275f1f697ccf65f2d92bd54c3d51f3e0de6370be9b102b43465eca552e263fb908083dd5c2003c8b93beb646e30a6b0426fd2e57716f1085010b7c94794b35d1d7200c044d9f404c9976cae75ebb86908b1c9436eee1073e76e84f91f6f24a0d99492d0be60360ebdb15f81476633aad722992c1ebb27a64801a6bc7800b74e8b9adffdb6379e1dbb561acc545242bf4986266a1bb43e49c90bbbaabe40aae019fd11782c99e8842c6449b46e9d1d569e833a474c389ef797af41a52ac0fc904770d49123de43dcabbe82f04aeb171352e9c2b26dd13ab47928804a2f91e521e81a266ee53ee1c485629dbf6035856e796ffae290433dfea77cc40a7a750c7d55c9bb1e2ac5f98110acbff935ae41d3bbdbc45abcef34b013ca1522f914d181c5460763810bb20577f3fa3a860e9230e3a82473d23b7bd04b0e18d14f71307ee01cdbc1ca5e8590b8f20e85f44c6e7eb110e7c3a74e145fac2b72e9292a9c874b18ed018cd008a97dd167acd9673ef5325dd03af6a9b1d7b434a5565d091ac0ec5c8761d7bc4c339be5487e3861d142afcb387c9fe62f0d8a680333764121cc4f5ab35b83dfa786e5fca1c5f3429f2c5109fb90a7b0d8cdb033ec0692f00cfb98ef0b58455989c96a518d911916c3953fdbd6fde1067a033ce23b229412363d3cb41a7af6b0aacad8ac4bc11722be21b544093af31c31f826368aa490784ae703cd77c454e39213a6e5440be34db02e1dc400701cac5de25d14d278d99c0e6a075f4591cf01efb46508d67e7f654eccc75377d70403712ac73541166f0ff2489a8ad2992d8eea7edb7e11194de41343aecd6809baa8d44232fdc574890421207c7ef5b6ce4c600de75c2193d5b40aaab91476b9a618a9299d8ed66155692b161492a5e8aae5a91b4af4620dfa559f385f2cce5da86cb0778ed2e939ba19790a7c2305c69fc28cbc123862c38130ae5706cfd8455d3a300bfce46a5ff9559134cd389619b39f6b544c378a6810bec82609e3b420bc7df836872ad6037e47248c8c6661ee21f412594418280020339ae32cfc0e1f46dd23f486ae02deeb7647a47e92bb7c0f7fe184b438604c6a7919350642fcc57461b29c37713bcb1d26bff8e61f873fef8cb1c1620a18a20641f98af8c6223d7397cd4951d7e6aa29c7efcb8ea6e7cbffaff445ec3866703ee63ad96c5b17feb5f6dde75b866e33dffb53e184a2dd918b15980e490e37d0e3d2d2214bad404987148cecee746f094bcc43131ae7e6d375ad47ef8c1f7beaffa485e52f6d04750f08968510c1b0f694cb9840499c2173bb0a6dab775436124b8dfdde693a389cc85654c1f76d5e609b06c18910d5c710d5a7130ee974176cd44346500d35cb9be7c9fb7aeb5a1cbcab526e0ed6bedec8e3e631669d0c9a321dc8ce09b5b5ddcc89156f84bee4f2bed4cb8e003bd36771adf029f4c403ece5a0c234a7fdfb0d61f78b8f95485eca371e7f0efe596c4a953eb7bc31bd746bdfe7e8db9a26f3f971055bfac8d5e1c78fbedabf7dafb68ef3516e8eee3ddd06ead047110339e6da042b867e27b82893b70010908ca4750cef60dd2c89384aadef407f76882bd7d3408af443decfdf85f375101036c025ced1d52023c0afd9e4188353ee55719602c6dcc7df892712b5faef83f677f7cbc7576ffbeb3de081241f404936ffc78dc32e5388f29827ccb80d2cc39c602a4a5812b90eee76001e43b3158aa020cec0865c82740db5b740420d6111d732499cebbcf836285bffab4e719ce29c22ba3d5221bad923ba0088f3eec1083e8919ec622d19ea882d89fb9f352e349fa36ec16a63c5bad7049a560414cb25131e0a6b3ecf24a87300a1636f6f00731a779267fb58e77375a83b0b0c8f9123adf9216cb89ec903de4e1e40b2b875bc42c1746e6e4bde59dbc134b6fe2de5d23ef0b979e987e80f74356139d7b5a4433611452fa4fb8390db39758a3774f23ff071698b8fe806eabac270af7d31889c582d87cd48e4488074934f5b81f164e4acfd0bbd0ebf2c2fbe3c3434b4920306112a262b7ec01907bcf34e8c974192b421e85d5c004e47153111f4188217b03e26ebf7b906cc8ae61f445e12d3311c1a6fc249a750723e71c4192feb0ccdad0dac109f0aacd2d67651194969a85e6d05b804e36716dfad171903c1f84fe239c1dcf4c285f521edb2d8d17f2887d5550511e83f0657680c6e4ab4c2589cd991b5d306c73f3c90eeae55bc9c0b6b873647ad53d767ce3522847f9f8b21cc129595688e7ef7b12b6128778201876f735a2fb603af7adf95d26afdcaff059cb42dac601bfd7bba1e0bfbb54f9ec80f41ead7bd5d9aa36e82a6e52c3e4aeddd2d8ac1687fcfd83283f9544c61d7e3d2536bd8d9247a07cb8f9137b8a1c1970f1b7caf5e64b981b1aaf9ccd5b777557f1345c3be85e372711a3f045ba3af8d733a9561e63d2a00b088e1924057446d3bed82cb193f521e438a014cbe02ebc734b69c1c439040bfab8e84ff309cade4a080d9b162c9ed8a7239d13066f4ad6cce07fa54967058768e38eddabfbca6bb7642ba6ded3a0b1cb5845cef86d4462bdbac38fa094827019fa05544806171b289394a3ed7667d22d1145ce1b6c25dd9b2f1c080377fd72c1413c8110046bb54e2329989c67c6fd7ccd6cb55b7a2e2c5354eed59c853440ad328b907027c2e2a6d20e2211a2d2cf2e7c351c1a0023242e63ddbfa5cfacb8059fd8bc8b2da719b5a95ff15de0f00b7d7fa3ede4f99e0b705625513d87484bc57c34f563f58e189a23a111845e4cb590669d09191d599bee7f2c5053f71e73a204e4ccc43fcae75ba678dc13401189f074996a60538361bd97cc40746a90832ffefd1cdcb110a9946b6872df2e5e3082961c93f399690123be04901ee7f817f41a7647a975001982a11fe571e396da1fb63aaeffb5d52637d6805b637d5e64af78ad96f38cc21aa5465ec3f00fcfe879df035275d0fc2ff463a157284718e5b1acc7ff00125315cc44348a7003e0bc25dc5331b65dfb03ba19dab8d6e4cd42524ca421952e6a40c6ba8ee8056b2c899857c0ae1f8b809f4a0922c4ce26f4a39ba23cfc66d0124afc700a5397ba7f075d419f652c0d56ffc0f9f0b0bac15dcea99b9132838449726b2b44c718e5e44c508bff9965d8e93fa552a2165a7006f0862da8b48b43f3270403e9deac8d9d6bfce7582ee1a85e4157606299c0fa20b411f5bc30f71951cbe158660c840eee2f780500a454b05dd5cb44c0afe75c65e8268b44ea035f691dd3a8e1ec94d3f050fc32bb29b952449d029993a15451d09a63423463c1fbe87e2a62b86537bb099693e6e132dfdc9f26bee10a90ce0eb7178e0f3d649a7a68d41c73eea1a05e6e321a15a60ca2a60e620175cfa522031ae0a2a6a07206eb985134ddd2e2c57ba8522443db1e536a56bc308102c3773ed1e00f7452af437dec3591381b05c10125d6665be00a0f9e265ea239e541d41174e3259530aa0a7fd1124337025c5a31a4510a2c98de039cf62934ca6344bb860dc5ed3c748e472e64d82ea0daa3aa06a29d058132fb7d90c7bca0d1fc5a0a5b4ce4b882776fdb396012cfa2c2a9804219198b5a8625ae83a21df22ac570496216c9aaeb79a35461fec6acab9a761698e2d7db2a808e2ae52f71984f14d8a3822743eb6320f0455533b7b71b27189cc43b1b906bdba69962c9a896a96ee35ab27f53967b2a9731dea0c7e603394ebdb3067268cb16465a898359f9633efce0873ff6f10f7dec631ffcf0873ef6d1877efc631ffae0433ffed1877df4b11ffe4066cb5c668edc9aba3ab981fae2df61fd3b28725260520ccfe8ffce1f95b65643abf9bbe6675dd62286462be1b1b6d8b84404acc6102998839a574b09ab1e3be89170afd575df3741ea7de72cf8ba1fe6d623d9d0e006840689b4ecdf152755dd86bba15e4f0174c0a27286376242bf40d1eb3557033fcc2064e0b5ae532989d09f0027043c42e961d7a03e1ce2484a7f80df88a8cb9dce73f2e00f04fd4d56862f91e0cf2283a0c6ae57a750d095b1e71870842d9b664baf73a9ccc4b5f3058600df29ed18f7699ecf4905cda724ea197997ec9f2a5af1c5e1a29d662bedb1eba47592a52d3c34acda6b6ec43afaae5a0f52b4e28bc3453bcd56da63d749eb244b5b786858b5d7dc8875f45db51ea468c5710302c741c384f0398f98a2093e14748cc1e793324a01e6bacb8522a7beaf921af385c2adefb9273b1006f890c206ead7ee24aff3767ca1037a21a1ec938506ec936a7000c737b950cb0842d6798ae216c2029672fb680b7ce6d03d162d20c3c39c9fd605025d0546ba575d5b0a5a1f455434ca701bcd7cc1779b359e762b984f75870c17c9f10cbafb1e07ea39ea251e76868783b0fcafd657220b2c9a3018fb0bcba0efaaa301f619824549a9816153a4ec862d2eb0ea533c45546ed60a6055e739515a4d167a08e41ca3cb6b430c171bb4685505742531a78574d0c86cec2a002983feafb76c8cb10dfbd348a3f70a58799b43d786dced6165ba3b84932e92e4128886687c0a49f23cc37d8724be0e3b88f73bd7a24c6755d31a6cacd155b81c0a5ea83325b2faec0eb4e6cb3d964753708154ea8928e6ab30d9b02125228511c91743773ecea6e62704d47fcd712f28984af7daab77f8aa7d81e2a3bd7864642263e00f9afdbd14eb0cca9ced32e7ceae1613f43991bcd4de9fe62d6f2c65e2d0fe1a26e300ddc89de851079aa961ecac7f094f43442fd63606f00d6fcd9bff693ba292faa89d0fd8099f427b17b8482315082ec5c6612967a6c13dbd1f267dbeb1d394531c6e6d6be593f645dd3a7905e728b5cc512783cc5001b97d2f0ea6bcc25550ff3888c0225b996a086881397b38702065633bd5bf4e54023ab6a001eb56210577c4b3cbda968644cb0c6a769ea828ac902a56f069c1e4ff9821fac6c3dc40710b825f28b9f40fb933d799ad96aaf231e9f192ffde667576c3a958b03206d72afb113b12ebec86810fd1643c7b57d0ba4a74f2b61bb032f750d804613947a37ca6365c0ef4e44d3291cfe2e53a484e6b9c8bc80e517d7b4c0f50eaae659abd7d42976a4adb133c0b5e76b6317921b593579322035d250d541687ccc2800e1d4ad5066cb244dcce73898be2b1cfb5e8a88ecd3282005a6d95140936df61cf0e4177a80100412423c63370fbfffb062d505811a8203b5049ca9e3ed4bb878383a8eea3ae687f3ba3af36c22bbdbaa0ce79ab5fdd65c6e0c0935212923d22b1f2b969c4b8301bf6f417d664338ec405679870e4e69d5a53d05066c6b49f8235e71348dd6b980d7a4633946843ad563df6d59293f90d166017bdd41ce7a777df967028e0b0eabd16ede5d4abf4142141eb4034841da0a2d0a786c810dde91d24f8765ae8eb1df41d8f3a4bd6197436bad7a155258022d29b044408a3374b451956c289d41d728b9fa15edf814a7bf11fb5b8ed5d3cb628d00f9de52c6093f6bd10a143b5f48692f0f756f86e4ce81db407a42ea570eaca823c0957acd7152e4562c134a26438003c10e49e1919ed4fef20f6cac1d50730604455d3fb817fd022013f13fa885cf96c3a57f751e28c9c1f5d84e8a122732939b2e024fbb1afa9f03a01e944d094fb544a364d964ce7e9d688e2acbca00b5ba14dfdc009d332b10c5852ab9b4c061b3f345410d34a85a24b0bc63a4397c9ef3b8a94109b18bf8e46610a8a3ac2dec97b4b58a55be95d75ba07c220b7446852dcabebaf2960e5fd7946350a83a013027a5fdfe2696bf7dafbad8ae289f182bb6b09554026245ab1d8ec935bc002cf946948ce6a5cea83388627a2a07c0caed3e458bf11aa2cf172ea17e0a73a89208c1ca541faddd21cf31e485e72fbf0ebe1848265a5c08014c016f44c3acd69190e10fe4fd1395e6918d5dcc1708225945937846f0954825c723a2a1244ad8bbb4bce7dd3bd00dee372da4c2808e471946fed966151f89ee77a1c08343dd335e13a72a6cf4960ab0edd56834a5d46fe754010926e123439cf3635c33ca7faadfa17ed8f9c01ba139d156033a7d6c54944893ec455cade44778276d1dc8cee0445a4a9d9068b71baaccc34a735d6cde6d9c749994cbbaef5c34df5e4e6b8b6a8d4a8c975416d4c5bc4d7f666fb2d3ea0bb332835b208beef164160b902125c033356d4c882c5b034ade3d922175927a686a4871200f53c1bb644d243263288a3afda4d939edcedc2745689ead178a08017e11aec51c26002375bc1f6fe6dd86ad5c05d6a1c4d5273b41e0c15ae86c66403bf403bb32694c14f0d2eec56dca3618732103af6ece875affdda22bb5135729c85986e11fb61840d05701cfcd2ed536f974053bcf3bf2b57a857d92df84b5235e1ef708199914a16e2fd6673f06de6be4491afb4949f9bd8051240ff0c21fd3c72567a621579871b960abdb0f5b5dbea564354cb32dd2f2352491d9e7cef97b9e87e4b2af99648f4b14cbdacca5a61fcc14bd01d4a1007551bc82503bafd1a6027913c572a791ff9c2df12671363916326937e0fd388c65e890338dc060af56efd421b439ffe1c4ae5b39a5e4950a4ef1f41d3c6ae0944d1435da1f0bb1bb07ff2951453494b8772d425a07f5e1808bc7273baedf3d2b3fc1437c9f1d9a6e8f3f4548d5151473f961757cd7a0299b05654e01d67f000d89083d89cdc145238d0e9cb2910a12cb5777b7b7ef0e5e081120621a0c6a6720d2edc614ed123833577a1221e6c632d108f71881392553580190917a5cc164790a29b7e43d8a5718139725c950d1192cec9a652d95b9841a974e0b254210dad0e5d23ebb85dc8e8bd4798a2857181900282f9f47d32c151f9b2168c8553df2e11729dd855575fd0a23f252fd59f616dbf6e1e4348acf14bc3b57fcceaa97961763bb8b64564c47257c32473abb414ab9ff1957dbb4ffd237728a5a57396987c7234f1ce7a6ff78914050b9ac2f2a29566fbae727fb7864f9601a8da1b924069b60b9e7a5febcd96e4016ef21104c52d541dd5bf9fb90fff728fb5a3810eab1a639701392db7ffb2092b32b5a995529293cdfbae40d22a1eee2be1d2839956edf41827d8e259d1796c5e0ee8d8fca9b43fcdd39e8d9820837ce69c406f3dfacc87c7e6920b476222868ecdb18f0f51c691b43936a77fa8bfd7bb4f4921707a98a03e26c20c0806ca04c38899ddd79a1ffeb06969a20f769717de3d3ed092b8c3e62b69fecfd58109692ee5028476055e53c4520d56301e55493a293862b84fca89616c05cc8aa1b9f904946e2e6d078cb5247007a50c8dc6c161e90caa670841016015ed4087dd695874ffea005bcbcb01593fa2e41c9dcdcce3d5a9a39b6dddb111425adb84ec2de5de01ed0c450d780d2d7e595ce546f40ca9b2526f39abb6d4abd9582f0f8dd2b7e0de5bd1daf248e9e753f5927cb4aaf2d06c2ae5b3de684f251e5016d547db54caafd38d1dfd68537547ca533cb4cb43b3a6b3d4be8ae92af5c220d2425a77989efae9bce5489d6ea4ed2d09691bd6b8f2c8c937829007ca76731740595877c4a7b20c9a6a843063d88263f58a9f455a5db80badcb559a8b8f1592e0746a951c5844cab14ec1328bd5947a6f6cca312efe61316291a6312e3e8563390dbf68134fdc4a732af2304745e59009cbc8abbc5988cda0a6c249b8e1c82c9db649f7d1369e3af669588a16df14c0c34975b278a8a9f78a72134bada40e4f39d323078f71f1fa9392899d3fd99c0eb9938905aa40b8d9883761f5f2b83a521eb947779c4e6953155aef057fd9a47ee2ee8d89bbb1292e07b4f329dc45d97b1dba581af4badc6c5c6850edd766033efbb5e1403581b219534ec2b3805781a76195c3d7bb82048bb3dce55dafeab1b2905039ac343b9a4061ef633f1d7271befb2df02af02c9e83be8f713ceca9aab0c3a71e55d853dea64bada95e1e5685d554bd3c78d83e5dd3b7480f23f6840b9b811b6b3a7651a7aa82c7de18773ae5aee9d7e57604cbe9e56604b42c3f55ed19063704407b7a36358ca37f1b0260e581b2a7c324587eaa3b584eeb8e96370fd465a9b1b6e498385aea5ba93edab2787cd7fba2aafa68abf278b821a182048b7a6114161e6bd826783af656818f10eb9f4cf546d8305e5750084f2f9be361537ee22eb4a7f766d3d2d855cea5babb538e716c3babd229159594ca5b3095b3a8d4cb03d5559ee29029dceb192358a8fc612c544e370337280ca328ab7294699ed2f7b31b2a75e527ee763a2c86b9b050b9a8388ab22ef6f4d48b3d3d45957296963f977a52d5eb6244a752ea89435d25e5a5af60984af7e9e196639efe6d38da080c4359ec7d53aa0fb63ca4a547a1cfc08dc58e806779d8fe892bf580cebe89a3376147b989bb5158aac3deeb58e581b2f49707caf6afa6344db9796880abe3f2b057c511045403cbaa14a43fd2133854201713e3c643a11d4d94cda0129a0fe865b17a264551b6371b257c406f8ac5723f0bb71cf3f406a728e0cd8c9d1392e419b9bc977577771dfd713c5a079b42e8d92f3ca9c22021d82deea092fe791f0541a1397f61103cc46a0713a39d47482728a7096eba10e5d8abfdd49882de6e56b855559fe5a7e607cb4fcd76ed17f2700dacb77e5453cf6e1ced55137a7bfb0706f54fcfb0de8a1f64f9cdb7fa0190edec03fa01ce0f7eec03126a12c33e201f0cd9fe794414e1cdc4fcecf4e0093110c2159cd4b0c5b08bf1016eb25aea019d403e10b223d2e18d7d3eda8e2a240194819da627771de33a86896105055161f95049fff4144dc59223d078f98b3b18d45374eb76921f235018c4aa01950c491e126b36a03b38d7d1e9f11142512f432c1f88910bf2c017d40e0fc1bfaee044e4b8c39d0e8444454f98808dc5cbba1385003556a14eb36e0aeaf40cacb12ca0aa67217c439db7e2431c863814ea409cd822e980251cd9ac359e368b5a6f36e4b1182f9b5d9a9453c3da66236d6e36e449da68b321495ab6dd901f95de2ddf32da217b41502ad4b323d3908913d4c4298a4f78087e362242065e0cbe132f06bfc78bc1b7c1132f065f0387163e815d7dbc184f5806c258c4324ee29357555d6d40db84851603426f2c7a72c8f225d1ec9ad109e8e5274caee09a087f63d164a09e89af080e25a06b6295427309f4ce2ff04c9c0b06998c15c2a6291464ccc26e1863969ad1e3b1eccb4bd26187e1ee823157045eb276b130dcbdd89e71d5b864c7fc411e356c3fa6aedaa84b53dc979265bb331a14958a9189dbee94859c0f29ef39c617e3ba5829250f960f0b0f39541bc0727737cbbc9bb031c6a8c1086384314608218c91638c31c6182386611876cc47b4124208639432c628a58c51ca1a0c5f0ceeeeeeeed8dd0dbb21ec8eb9990202a10c391e2f4916638c31c618638c31c618638c718331c6084140f9134208619489cd7dc5151042282184105678569cfc1e8a7ad1a24c8c918b90efb313d0c6fbe058bb96aeed86de770cededd1f551277fae01fe0b383fe064ef85f9ef41f8e0b38791bbc95de3401cee604fdb1a2c0abaf0091151132744f4cea21f4728fc1b6a2464406c732e4470032b0226b6b987c466f00357b0cdbd2bd88c8110b1cd1561b306128608e40eb63900d84cf6d8e65ed8eca2826dce85cd3010a8c136c762b309c43607c366238d07b6391a36239148a507851030b1cdddbead073441b6424bd9c36a405f2b0c4aec954f745e0b0c4d2c5f5a71e55c4170e430e1219e7d2ff7e2b1ec043e814ea0152fcce3859bb013ee92d8cebed6d010fbc4bed8d71a5262e10b82fdd10fe86dc93e287c20897d1b13150d05b130ec6b8581498fe5c1be961872ac18945817fb5a62f8b13e7de9f4cc040275c207b5b20e2f065fce61caebc2306dced9a3edc668bb013f8a315a12495e315e9456fc805e38f2c9fb95308883152c84d032336c586fbceec2969b8d1b70d668a1b4f030d6864e9a70871dfba5c3d8ec02bd4c311650ecd807281f5aa97ad233f2c9a5f3f8d2e9c2abfcdeaf24743fee02ad6361dd017b934f80d0cb444f6c764e40d764f5be225b6751d3ecd5d0d71a038fbd4c74798899b04c1cc38ee57313b6c25e72cd3deed8832f2bdd28ec5300362fe18ebdb144748865e699899af061057dc217161509593e74d2840f08045ab1455237fc83104258dfe3d13a2f543e296ac25704ec3b6cd8f0c566562642c24f98888bb8632796b949ff805ec932f7d2b13a2c23445a818353c36fa9e07ff1a85890c1bf971cfb80ae20b233ec03b2c3908575445f11993482538287e0f3d09e94cf7fba560c10cbd20849f16395300288e51f21458fe56b46b0f729c151450fcb2ce1b13ed866205a1fd067b38c779ec551c510967950f80010fb6cc6f071094715445846d587b62b8e2a8858e61e41f65e46d709ac0e76b8c31576f41e1388073a80d951cda436596647fcbcea2a956cf10c62575d615b64a6d3982e57a3a71e50ea2cc7def2c733dc59fcf10ccac579f8f60c35597c748eb6d49b7a4a9e857bbc5aa937e582b5d54b7988c94647f97925ab76c5a6bdc7b5d5275aecca47a37ae5b51ed733b063bbea3bb64bedfa1d65d9a8f6b83eba76e547db65b65ddb6a8f15d475540651a812eabd18f4bd6ad4595858502ca854ea28544ae52897d4550e0294930e02d449281c8b1447d3347c62e1de5b61d84d1c0bee528b51f1a660b1aaba8663df8bd1a25e5595d7543876c958948a50ecda350c07f6d125d7561ed3e25b7976ef0f2beb132db6e5573efb89eb71baea99cc64edb1b178b65d7b265baa142360390852df32162ec334ecf4d866737df20c1023a58c854badbc63a9efd5ca4745e8fdcadf33a9540a04294fb1b03c854a3908e85bad9c45e5205839894f7a3fa66752deef7a0635437aff3da372eda711c75d0eb492307d74a257e15e4fda2b3e893bd19bb81177a3a5b5c4ed88df6e4a4668767885bda36b9545b573bd59bd510ad299a4c211adfcb4d19ea188197c6cc61a0630eba3adbc21a795559563f427a09df5bae4e31b1845df741410d35038c85ecff4e1b3c7c5f996b362ef26ae0a82f756170afa180f82aeb17f1d04f1430c717fd8fbceef09f10210eb7b017887917b353c2dff88ef4b68a4572f4a336459d6da853d5ef319e98fc79a5e73c6ebba3ee755a71c5d7217267f45d9108b495c979a9c8d5d8f8fbf8ebdde72bc6097188bc6eb973cd6988cfdabbbaf73b2bed8e676c0f36f461033423627a5a94e26e14349ec1a3c08e28449111e0ce9d11c8d17433e43223616e78dc2b66d96e94b5943499f44c4720f843c808f1db1d8aff700feec4962e7f911f6258a766d3693ce6099c87a443c1c3e58b8dde85f7d3e8417f7623bc658da6e7076d2981b3d72fce69c90fc62b3156dc46da3e6e26b94362448ef19dc4979ccc54744a2af7afb37068978be6943a26b7027cf1c0d77b2468d6d43229e36245a624692d8679f55d91ea93e968f15a66a0ccbc4da03ce60d62302be13e2acd002852b3faa9786957664a5f664e0e5e993e14bf9b027f18888cfde94f658a6473cbf3e016d478e5c8907f473b381d87644dd71fd3afcb5e5e0cfcb0dc7d6837b022211bfa3ef035a3e05cade4b167fb1d831febecca81d72d032d7afbb3e7b067babebba8bb3d80bc55ed7233367dc12c6c6ebc9c05fd7b521c193ab7661201022f4f17028c60887b49727739ddfc1b4e45b79499c6b0cef017c9312a963fbd95322e3e42edd416f7adc72300e7a138a90ec3121c46a1f691ff1699207f04b502872c4968e6d3660cbce7a353be368d4f01ab783b4e580458858be766db4e1185d238dae7123173baa775a58fad528dc8172bae5e0d3c70d070a1fcb9adf832d4bf1479961fbbad847c4a3c2ce973a68d4402c13df36bbd1ceb921d149b8cbaad64013c58e4e22713dfa8a2b3a286809513bc109b243c4670a20254d588625900c8583b6811845b3d6a60dfd00e3d45ca7619427e3961ec5849386e11438980b452c6b70db6a0f48eb75a90d1453968402da40dc1330af8463f9aa77d84974f44cb7de8a4ff456fcd7ad5209a78453c2c1c9324ad43cb589484551a8933450b72811d77b598154d452197a332b3a57d023a23fb940c55085f5b99e746b45a7df8ace8a8ee553229e276f5340d7c4d3f00c02ea153644db60f9720e96ff3a60f9b03e2024f44e0cc32650af9812b11ce855a1443af6928a8632a15e71d7cc25d0ab3264f9b66be4ba46c5a76b548658e6aaa8a8a830e189515c37300a668c0173385d0a4cec10f641410a452ce9d8762cd2908048f566f11969bb213712dcb8cd8654354efed1b96d1be9d3b46da4cf4964ef663a6d27cd8f4e35a55e269d4edf485b8c9584ddfcc0604e8cc246ee6ea4eb6d2fb41bc47edd18afc73c22a9ee981f3ddec824ca60903447a4c31a4955b5fd9a89e9156b38e0631227552cc60bbb717aac3be247d74e28310592b2ed06fc0ed2e9244822a5d41b238c3f5d9b0d1639b971d0ce3967b4db085e963e49bfb868e2b093b8eb340d65cf34ed1a8352616934e16823c59acd5f1e1a0f8d342ba992aede48486c755612acaa19d350b3a45fed2cb62016fb8e6d443acdb6d5cb43bb32700349c0497bd9184fc3d1ceeb76f5a48a19e445d99e5262d8fb7a360d355ed283022404af61794acba29cde7416ee3c043f854bf110bc72434b3fcbc0595db67a797c85bb377665db544aa56ddb4ec3a513f76cbfadf42420095ec3dede7dd80383280edad2eb97b8150ee56d3a0ae5a5a7d8e55cbba6529685386183fe74e3747a96456da31c0cc23a87421e11ef11513a7fa4047aa1cf0f4cfd6ef007faf834921c00d987e4063db6da8724074236d50293402fcce1a01d1d81429d208f8659f062f04b0f483de56f83b5013f201a7c6a589e72d5e48e69afa0cf5b31cace5bf15198a5c7a728956ad936140a552a6d2a2b3edaaa6ca76914a77de3b2a77090a757a7773a0db7024e270e3b0ae744b437755f1068793a96410287a488909e5dc3763817d2e8d89c2323b81caba9bfc01d1fcbf0c81030e0c09629b2d081d9859dcce9f24283e608f2784134a5c4ea2ff182cf8441530f0a0f118658d67492404d8765fa08965ddc457db5711befdee5801647153d52a7672e6a4d1c45a55cb8e30e866360cdaa5e3db187ca1e22d0db5d4f7a863f4447488ee52018ce0c2126f6c78a2227444d86b0252cd3e21cd3594879268843f85798180be332bef96c4100a8a9181844fdcb2f58f817598899421320843ebc15ec99b32db49a4ecf592f7620cef0752c75d7f862c01137da6c465d0582bbb272187844b63bac31b88ea8c6084cd5b88bf4a5871f6cb8380c94c370f117dc65d95979c4d8168f3116ca38570cc414b12c2376b0458d21c2320638bbd47b635dee24c66d3e85720cb10c104c5846065157c43247387932ad601925ce1fe1b00c0fe78f808c724641588688334faf58e64e3b040d6a61b0a8f57165d91731f645b7c40b06bc5879e1e2c50b540f3e412fd4bea4eccbaf1e96c1714e404c4b0c4b0ca928e6f4830f3f6c3fe8fc314500cf643ec79a306fc42177d9490c0847ab5f1a00f80d40007e5741fc72357e5b043080df1101468f270007df0a7e00dc7b2b0170efad6a70efad82e0de5b0580830700b7e2e0f511f79060e021b18970bebe1a498d11222a33f1e999ec00a751ef54a997b2a83715d433998a4cbdf4a520cb2e18506f6a897abf807a3b05d41ba3aa9765efc8a767b4205250cf6845a4a29ed97450d46746bd298d146449b5a55e9a807a537c2538e68163219dacd9877ae9a66379a6de5412f55204b8e01fc195784025e418888358c0cb905159b48391937037ffa690dd9a1dfd975c890714be2f25c4ba1cf58968bb8f6c5e59b43bc6b10f7739b867dfc9e09eed0e88f7760308202aff0c613e0bea1906c2abf92076fe00f5ce7922eaa5f3348ae655ea9df32ceaa5f3a9acc8f2359d9e8144de6abe889d979953dcd43c379f322fc47c8b6b41f341ee9c47d54b87d8795590e56b453d4381b79a37c05bcd393fa35e3aaf6945739ea52eb1f32d1507b7f96c41f33ccf43bda9930f3e5bbda919946ae3310e371bb3c2df780ccec639eefe76427037c65e4d8705c339117fe0ee4585e5c770f76a8205b1fc1eb88b15b91815965fb93b83cc22963f047799881137b80b9d0c61191b1bf3289bcaa2d366ba4c765263c40015def858ec5de2017d41bf8eb00c03b1209c5813288c9b0dd63d7297d2176485b04c5731f082a40e5d1daeaaaca91c0cc3b039e794390c7b601111c77269ce430827c7232686ebb0430e9b3d31ecc58bebd9db50fe62cec6b01ed81c8d50e631ae27f616623bc9886b9dc6e66c154019f0a3bfa8170afbe2906b21a37e41d33d30fbe2c5df66f3e2347cbdb850948879a3c923c6621788b13be851c7b80bc4d85977a49c6ee252a7a73cb3287f8f86cea0b81ba3310ba38ebac63233ff51479d371b17f76106a6881f76f419eeded8999d15960ac0ef83f8ed6afcc608e0973580dfd722c0ef03a2f97d41f6f709d5bc00339457f358c5eee205e026afe66b6e69b8c7abd500b8c72b01b0ec7c8d183b5701e01eaf561c12a3f7674ed3f3f2784476e62ede3ed8ce2238d627274411acd1a86d5fb630f7c1dcb33da2b0134688bfce3a0ec685c0f1ba1ae388bb467fbd2521618e556c5477cc0b21c4e769fae29e85c1d57b638538cc8539dc70b0156288c3cd86c6331af42a12f3c8c5ccff305f857899aff33f3cab9f327ef81cf570203eaa3786ac3d7ebc3fc2d17dca4e225e252b8ed7efb87b1de607e8e11101fdd187807118f74712b3aa3e3ac6a9aecb6357c571bd7b577f58ec57fd717d466330ea87e8baa387c7bae3e58d551f6c7ba8b1c62d8710385eaa8ceaa3ed0f1788598f9d3724ea7fa817da5abb47f3fa28ce5ab1d1affa37c2ae9ecb8765a6cf7cc4389f79f9cc59843b8e8fb93eba3f6cf7eee1590fdc0faf877aa31cd5c3a8933b186faebbe45eae5a1f7730620ed3437d318f3135de1f3ee31d37ca21c4f5d1dfd675f5c6f860db3de612e2317ed4f570c9dd09856d18afdce30e46bdd1c278ad551e464c0fcddd1f4ec4f50ee6aa3b463984f868341abd3cdef80c64cdc95f1d87438e0e23e687cb1c0677a3b0f1c2fc87ea836d7c394c0cf7ecf522c4312e25c35d1f16e64470170a0bf319dcfd61617ef55c45469bcd109545699cb41d7163695452e770352c2158a7616d083373e682d3384edbe18eff8409d1121e1a4fe330fecad577f54edb1d7b79f6f2f2721a56e5909f9fcf36b14f0bf63d210c42ece4ee23b231ba8c6340ac5cae46871106207665df13c0c0852ac5aa3e5e758f1de7e22f1ccc65709a1020aa3664de05c7c12048050dee2a72f9fc5918c768704fb09d8731ab0fbe11df0346bd7a4834a0ffbd7a201530e8880fc66d47b8481c01bd7cb07af5948134037aaf1e92765d570f0fb15abfb3c1eabdd9b1980b17cfb69f79c1d4cd67fbf900bd7ee4231797efe1b0a7c5a5e53ed878a5e93c1e919dcf481a0c67faacda9021144bc23233686371520c68fcdd822c4c8c9839678c63dc0c216486e861a6befc6d36305e80387f13621918e76f4b58a69ebf0db10cccf91b13550eeca38fea0e95637ff318a71afd59ec2af2c20101a3c2741c9c02b6b84bc24030a0974fbd7ab89b68a02dff673858c4070ec19fc1c116076370900a0e0629e18e97d0ffc29ea96dbf93e5af7ba40fcb98cedf8e683a9a10967171beb6c332dc795055550f2a95aa47a3d168078c381a5defbe4611463c567fc198f7c156c2f8d5306020210fe3343caf39121293c2eafc0bee42fbe2a32d07c9c2f9b9ddf8e12ffe5aa755d04258067e9e6e3633cbdeb6b9f8302bb5373fa2c0e2e5809da769ecfa60c9ede81e859ddc6d8bc17cfe6197b577eced085377c877302a8045c4e83e81f8ec0e44bd6c650bb1ed6227cacec8514a0c93dde6d3335b908c7aa710f552210ec3a75e1cd8fc6b1d58c47cb790396f0bb92dc48efe0377a1fde1a3ed467fd61df3303eb72446df827ae612a2de1410f54e19d876a3bf2302f1ab7f612416ed311c8f971bedd5409c92741cb4524a293b18755e72ad03655c8fc18d0ec3c59ca67fe02e18f3f7c5c2f8db92e88efd505f4fcf04f1edcfc58720ead5d301a8d95faf5864af34a982ee4d79469b9f9f5af6627760ef3e617cfe6d39ba3e8c7aa10a885f1ffdead1fe9a85347ff178b1dd2f8f97ed46f71d5d655c6e4968b63bece96faf7d78cc3c8cb70a60115dbd19b8b1f332461f8d9eb2d98cb2c9490b04072f0b04072d86611c66b1d85da76700f0c7a877b61c86833ddcf17fe060111fee8ee8f40c00eae395cb2fb577d3595597eb7271de6c783c22cb9d371beed9db469fdc7db1f3c6e8afff1137b6d483ab7b7cb6abad0228e33a0cee45f65a052fb8675b88853d2dce87dcc2a5c57da8a3229e7372dce3eea9bfcdc58db1b3a69ca6791815dd68efa84863b105597e8ba6e2b355e154700aeef84c6ca66918c430d853a489dd7c1e122130b16c2fac616c42a64fe1286f30a66319134581d4c5a2815e3f3d3d23755215f6481debc47502ebc4652fec290265700f11e8953a52470a89d8bb638c230cfb9c23244208c2e4e475637db495b5e433e21b18a31f31b81eec125f524a092f1931480228e33a7628e13b64625908bc7cf0d8e39e85424226ef7a2ac8decbbd390275b9fcca3328dfc6f262f0a918b230ec8302153f3628a70a4d6cd69a7c129d741137813656582113d3e9315a53f5c1d644550f2ca7e147c32da22576e57d840545d6c5af2fc10d3ab605496c10f601b500c766b2c72ab17c5984657a169147a6f6b61bd9e19b9b33b2a74f32dcff8c063d3d2629f5be257ded2ba4abeef40c6f500aac4ee8c349dc4e7779ccc0aaaaff6a7ce054dd750483b7cd1d148c14a6af3c5be1eef51595cf7a61ecbcb17d74b48e50ef08f108f540c14fb87b8777788777ba294faae73eb61ffff4fc14fd3cf9099a424244f009f4b1fd63fb490b68a75793a6f8e715fdfcbc258f890ffd9ab050aff84a5254d097a4fb87df685bb328db2eb65f5e7ee03200702b6e5a1d4f8825c4fcf8f17bd239393b393b397c4a537f0f873f3dd33d3d3f3d3f3d0d042404240424f4a4679a88e809d113a298f3d333b147a86722504eccc9e9f9e9f9e9c9e9992824ff14a5423973529c1614a52d278d485b122efec2a95e9670c718131c2fdf5ee254305efa16c41d63423dc33ffc0394f944a12894f944a12ca757fc39294d653996254e963151ce9c5acf49692af5773c7776e6ec39f5a4fcfc98934a519a4a51fa269a93d21b736411562a157b388ec5e22f87c1e5287deb5e5cd5551b6cbbc3f83cc2442c7ff2b04c8be5cf56cf00b974588004cb9f4054f00c90d95a811866321c222cf38058d0d3305ef8e0830f9cc6dd7c519dbec4ed68c2e53cbcc5472da028973ddcf1b126d0ca1fadc0e7a29cc5e766e3f2110be8f59be534e18eb989bd73a7c786843181966cb4459dc4a5de037759f6ca1eeee1b88b39e9ce5d59f488727a88725cf0681fbb72781e38558e16fd16f5d2bb9c9e72689f5571aa1cf4f1f4cf5eaa3ee9d0b670aaae36d86acf0eeddb6ca0aef2a37c9e85eb628268fced6058a62b067a451e55555746da6c604ce146437854a467fbd41889f5023056561e30d684fdf4cccc7c529df9b8a464406955950eed1c3277580665f4025ae2fed2332a32e219116934ecc89e3964eec4b9338457fc8b9b3b7367ee48c9ea3977640f4f36648a02de489211388c3334a4831f264d4ca6ee86513edec4a9e69f949272aaebd0d29b382946cf52a69a52c9970e2d75a97731994e653dcb744d7117b9c7fb606be2ae664de726d4741387728a025b358f2308e8d99022ad0dc114e3c0c9a9661c144d753d0319672815069c26f9dc940e782cdfe545144a6c1e822f5b406fcab6e84d81612886997b80a09322d66938f844382889b2db819a45b14c27c11601e390c4f25dbaf7b87b8f59c8decb953e56fe451a7462f6daa1fc9e4c0ff330111e5863853d957978787a309b5ddc653b07f4f68f959dd3ab1119e885421808e8e51d9bd3335c2363242799b9da800211789848d0b342913c1729b252887bac8c92713aa0235989ade12b0ab18cbc3044f252b21b9858f97761132b9160af4bcc0c96c92ebdf0c260a55402754a6025fc401dac7c6fb02f0d564af9ba60e5a4295b6f0c54bd5d4abd4f69914fb1402125b008aec193212fb91043899557a9b79347d57bf9947a53a72a546ff062b0d5ecf6b8d96cbfb8b63c34abf1bc182da037b24e5facc33b3755d6e14eeeb010de612158e998f692f61b7a59c74ade6119661dd6e19da9c99798f3b1b2320f0be8650cdb6c46700977129e37ed918b36cb84d01b997984f837725ccc8c98b16465d518ee644cc32d0756e3eb2226c49dfc0a28a9de08ed85424c843b791a3462957ba44a462622cf3c46e00481a50825f256cf1a8133e4ad9ecab20ae8751ab62f1dc3bc55bc8c315edc7b91758754812954d8a1651f901d82ec6571ff35e7c22b4e9d3b288361a00c967931f8977dc81d70aa7404783620126f091d323031fc19fcb07a595aea429972c7d7c551b8cf0a96532e67c63079c91ab96396a2cf47c1ae28f46af60dc1be82a6bd68507e26e1c311b94a81590050790a8564342884f0d5d3f71b080d50840a43eca3837d48a6c0633314fe126fc6cc28f15690892134b8e00da57aa5c47b056f04d640f88220b30a321bd0aae8c398b9df06816c09eef8086cf8c23fdc498e7ddab4846550dc4548e444c627a867b8a607a78bb04c4f61811cb3902b974283d6ed861428caaff77066c1de726e0df58a5bbde254aab30d898e9b0d1eb81db0aae4e1ab4a56235e5ff827debdd5465cbd337baaf25b91ea7b2b1b3cb0bc9ca6ebcb5b38279e453d6b3a13551ee27a1000c5d1f7c0a94a2ddc65c2b6504dde421626685aae4d28b557552e344dabd787ac37f2f0796379e072406b7a0b771fd29a6e7a26b5f79eb4ef09571015cdccb4807082580b719e50050a1af2b00cbbc1f2ebe9de5162892e1224e5d866736a9c06923a0b97ba8bce71d1c3df7943e287ad7a7dd7cbfd21e1e24cd81df3eff3f0d96c29dfc2c559fe3e3916edf03cbcafbde56f4e26ac4aab3cd4cb0413f0771ed52c875adf1eb74fb0b019b8b1da3f27a5add579787916eece47d535d565eda7b0c8c9b1a8de59aa8f2454977587ea5addd1e2f23ea495affa9056d5e2d174d9a287ff5d56cec59f8bbb7021e5d4e6a58b27a756ef7b0c7352dacbc1699c864ca4a678da9b4b9d07ee326179f8eccbb7b880b5eb9866f170c9b16dd160ab67486717f34ddbf257aaaa2d2d2da9973a4baade1b9ae6e1a5b4d47bb5050f1947ed9c97854cb9509d85c6c2f256dde593bbaf4563a5ac3dbc70c7b8149db72e62ec3c0f2db587a75abcbcb7eaa15e9695b592b8eed545bd33552fa52dea4db1b8aae52a77d1aee29e65a1b198cec232a764b964c2f627d71ac7a2a55abe728d85c6def896ea435a966b2c9ce9f0def0d03061239094caa2a753f5212dec41802b9ec0a1624d37f1713d7e58d3bde91e6d4d1502b59244815e6f404217aad01e6ca970485851dc382cf370a27d48d6a0026ea5d825d5840080b42c54e17818c0c0fc8d65207a610b6eefcd49413ae49e80169238d5126f61021c08e1c1a921d52848390400a489b08c0080b458a6ab145190aa91be11237dc849ab712a1c5600405a96b71cf1f3de78b689634000405a365a58557f3969c3719980c7c6547185ed2a050e4e76d2a3100090560d4e76d512f507ac51358003a3635535ff6ab0bf1a520348cfaaaa01b0263bacc9ea0f230a78351e388e0080b46a4855056b8cc0aaeab883e97868f404aa8aa961f58a6786875e17dd80c60835d0db3c55d63550612f0f71cb66e404da402c73319326d00b5bb6f21077dce22e89943cd4dc62a2d83c4d34c431131e62828758e6451e6a355027e924dc2476804666e6216ef564d81a03bd2f0847092250275aad0e6a89a26fe08c1ce2e94bd74fb504fc71a3842baeb8e20af89b9a2c6a1a8e7dcfb8215fdb12f0bdea988a41ac0fe6ab70c8f78d8dad16854144c8de4ba6a99690dfe46f6ade67cfa81ab0bdf4d2b7bf76e1f78ede78b67b31f8c58053fb4be6a2bdbc3ce35c5c6c5fa34fec9716a1a48f4eaa3b4628ca946363010912244890204182a46bd03cfd5eee4a8b07ff39814c9e112f4673dd6a2022d01c07c0d140dd7a409de4b75b0de4e43581bfa15c257a4310a85bd0de6edd1b0bad11ad1aceae24d0a99146905bb3248b89e115c11dc056747aa55bb74b01ea11a967e2534eb2151d96ba52ef9fca2a9d443a9809e82d3981dd59f6de5586509e3d4e85486548e5d50d8533b2a2923da0eed4cbfebec2a956321514caf261d4d48ce00daf7b352368523302262418568583618de899f75e772d3d6182b22914452f28306111a4b5a05054148520d7a864c51327439c024b862944e50c0f5319facce933a943332a43a5678f6b26dc2de16ef5eaa6a699fc76571105a9667bd69c0a91cad0ca55ce73667fef59bd2a7fdf3823d933154e65855361a23264b25765e8591a5621621993c9aa0cb1cc73a96129e4bcd5b3560a386ff5a85065cf369b5759d4c51ec13390e83d202017ab71252bb82b95904801c7ded4d4dcee7796794040452cbf8bda0a9e49f1f40896586e209d22d8db445a0b08e80af6b6930eea25969ff59b1b1290a4616478152b01bd285624c1a5270c638c31be59ba37b654c41dfff50a0b62f9578ee59380d88963310c082b1a22527940466c54652bf5b0cc2df13c243a20d24aa2a454c4f233a961627832f81819e28a8f94256ce81121865744237932c8f088c06a4aeba757a5524692239c927ca744928816d1272620261d154a845d173f231e114fa5524205affda6e65905dcd4c4dfd4c4aa82d58925e2b5fa637bbcd9b8148ee5d3df2e565503341c550360cd7658b33d5eab4630a0ca012df6221c1cfb6a22d751a0ab6ea5fc84727a20404c8f0782baa67a2828287f47a1f507aaf6935ef1b5ff30d59b9a4ce3542f72aaf75e55c9a3fca6e647acf1dae5b5fac388ac4b6847a93fb4da3f48dd7a359afc8d675390bc18fc14a2d2766c6868686868081ba24de26f474d4326ea84d6d7d40acbf5402cd7ce14e4d5db262113cbb1fc20266a8509873ee1eec2b1247b2581ced3a0f388e5568a70b742c4f27b1c0f6d85873b7e8e47c41314c72be29d6fc423023613908c9840b1cb6f35e5a7572fa5f5629c70ec8a4ecfa8cc49557c7c56747c5674887c2e8939b1dc819a5f8ff4b2f77b2febebba4eaa378eb86cb3e96cb3b992786f78d2f547928fbbbf47aaf2a35893912c49b311a79684a216e82df150a29e519993d2940a8e0a8ee553221c550338a03dfed5f0cb22c7010fc46fffb1555503b46fda5fcd8ff8ad0625e0d544232a96adc1b22f2828282828c8f247a82014cf7c1485e241f158fe08c5830d35774a51964a3d055b424aab813a6849133d2220ea3735fcc8ddd460459815398f08887aa9d52b28d0596fa9e8e7d53b69136ce8c5e037d02515b18106ef272c03ad883d2a3811888e9088b31379629198a3c332dd923a6d45c4e9277108b64e3f813d52eec82192c80f88033b08af51d4db6cb6124aeb407a14db42b8e3b68257dc4f5aa72bbd754a9a76fb38ed1d131ab4843dca3aad83c337ead86f50fb56df99379beb988c537b3f6bed9aa65dab5ad34bb97e92833db16c858d01bdfde42f28263c98ce28a6e48009ce1474a8f8b18f0df6219102907d4fba9f9fa129522e304966d14cc5e075a9192852fcce087896ce1298dd8027063b5e101aca3e52c3f64bd60ede00a55e18cbe7d5ebb854ef54c3965d5ec8a0e89996b7e2d7e0a49a54c1ded4900be4523f594d3d8a22067b5343a9d4e8094b609ff507acc16a939f09f4934a91816fa4cca8c88018e9fa3a7b0c8b32d51d21ac61df790d145208e3a4320205513bdf0ac64a5f0c589be923a22311a6b00fc83e2454005d98e3e363e4480753034e711d6a5f03554981fdd55ce7538067608e1115e98f891d9dab2adb794db4dfb7048807afe3f770d795c5831a966568bc8edf8dd4d0753d393db37a7cfeec5e0c34d00e26e3baae83a4513767aa0f7d5a30c807069161c8be1efa2646d2102347e2ecc8b0867e7fe9ceb2ccf7779e63646666865d3da350615f13b2e7c20b2e6c3cebc5b3b860f92f9e15cfda82e5bf78d68b67bd78563c8bffe259fc17cf7af12c1bfc17cfe2bf7816ffc5b3e2592f9ef5e25950b0fc17cf8a673dc1f25f3ccb0996ffe259fc17cf7af1ac17cf8a67c5b3e2590478f1ac01bc789600e2e35010929464efa563a723023fba3963582a877779cf603552565028cdc900a903745058c85b88998171f0ad4c236b5a02cae01f0760794a3da5a68575075482256802af02f002cf07140058e28766c5f584c88086367470daaee3ff2585a2b0e715313146762c7fc6d45c6a6087b665875d5d636278ce4a35eed8ce5823c508d6a8fa52d57f366a587619318e4eec1a064451cdc52a9d931a8927713130069b2334d01b6399d8780c92b630aa82de1825ea7d404c5424e324034e147d83f12827a3f137f475c758fba621dc82fc7bb9dd821cf784e035ec73f6a1d01ac1b17c989e225370f09183e96e2e9e4145fae3222cb33dfb7beffdf5787f4f7bf05ac323b8632536afa708aff8a30ed0db4d145aba8f8acee24016c2995bcfe51e78077adb27ab1a9076877678d69e7dbb36644b6fee3d7249f45f7d3f216da95e26ece6435a29725e235f55f052c8aa82b58379422ff744920e48a3eead20ec26f7f4ccacf5ea1ed8c31deb807f60f9b0e322587eec1889e5bf8e7be44071a6bd8c53640c43b65bf1a6bba4860c1e0220830065fba080841964f1900695b04ad18f4b74e52810235c1f779387a0100474ce2596afc58fca4033d02a415218f276e4eb96394156748410b1dcc33e3c85e5d7b22707417438878ba695722767e738383822b8f8f6919ea2a819c742cee6ca267736eb8636a3412f6d5e709e86794b225a8dbb20bce2ca393e909f1a734e968a1cd7bccd8661512aa757d777b48d94f355d6e9d5117a27e7c89d1d39441b430bdeb0cc96642f084ac362d580382a29e45f4d9c567293c54252450beced5a4a7eec658d818bb04323780df43ea0eb461ca144e4d1d940a0eb2812c48823966434e8d4e884d6002c7367aac6d4ae0e3b1f618416688c79313133623d0a28cadedb258c400e163506d9b28aec0541ef592c1e14597e8d24d7710e391d17134c5c3a22d01cab06772c16ab23d401cf9d03de8acf623d968318866690013182f2f7f28b830da326dff564974c73c69450beaabdf7b4d7effab99e5469873f1612591aceae3fd89ae44ebf7e3a0d6bf54261b54bd3346b9a979bcd75148e726782f5865e4a53d447a5a7a74ca91377636c974ea753e974fa417927143904793a0d41caf70e6143684f28270e5e9fa968e7a8282626c8f26750d4cbdb6c4c0e9ede4ffdaef0b26abd50e3485b0e92edd17683e5da1fc32370089b0da43da3449629619252ca77d34b4969324d612f8b3f996a31fdb568a92d5e0b6c31c97e2df0265837f8d7ef7240723b501e858551f6b79f1ecafbdb09f56b3a7c3d29312d44c9a398ea8fdd2e4b895eb17c4b0e799453f5c10fe5b1a8a65755265ac2d18749c023b008f8574f10aa4edb76e31dd61df028d7b6245cb2771627b568512f0f2dc66e8f450a918983564a29a509a5422550971c3c02656c6fe1569ee24ea76916964d095a998831355151b451deb077bc9bdebf3e785e68e9379a7a3aac3edee9e16f3c6defdd046945f9f6d3637a865e057eebdf187bfab5dde8ef305de59196564c756b95d3e97008a7d3cde6f4f3de7b0fa5899e4939a32a4dad3ff6f2e92fe5d19e49a9ef743afd86fca942ee467ad36f2cf4c1965638042803c66e6faef486008b78f6d2e08fc5888092765edcb3984a052b45f1aa091f17ec2658ac981931313358ef31143143f705dd47c4c40b52a2b34053f60125a9228a01275bcdc088140d0f7a2cdf008f8a10bce67a91fa8892e680b20122d7e349711d8667561dcbbc0af33020d03e6c6e29e56594523e68009689af274f108693c1f91e652497176ce5b22c8ac5f496bc1881fb25e428a341b512c5300cbb3413877a5dca592cc367e1e8eb524cf5f24071daeb523a5497a2a2527bfcb026cb6219547d5d4a6571777a8d1fb0d688362840a54dcb4871cafa9a4061ba97973f99f7ba3e841042f8641e1386b4b270c4ae40ac0c9407425e44bd87e03531e512a50fe8680915c35017f112e625581016d4589036ff5eae0b8edd78090788f012db3c78092fc9ba25c30b6adcac5aff865e540b688ece54d3ea1d8d46239e49c4432ca198a00ee8add48f8fc693356326aaa5712820ed17d5d2620e541214d03caac51d0a68fea25ab3a2805049e2866a71072425bc0c10cbbcc74bb020d2b33e26c4409395d82944f2e995c6839758f90d0bea42d00d4c498953e1e07892cfb5d8db0dd284a398416dfe484e622f143ef641981292cfb67dcbbe6d9545798925f9f40c0b4b10cbd7ea25fd242161433785c2030bb228a7e10d0bc2b240fb3c7a7217c08248cf4858908537da4ecd625960d961962141a824dcb145b5b696ed6b5c9f45ffc776bdf0a2802c8fa4c04ee2eea8a4ea3e0e2d58b1e570c7416040379d9c87a40953fc409492940b7fcbe12d08c98794048a6a5dd51354ce96c3031ccbdf82a05a49946c427aeb631ce908af48a41fd2cfc55a3c43d22ae987e433e202c9877464cb21b57a06d58a52fed85cdb8d69df8b812234b7202fc648c816843b1a740bc21d6f3a0d04dadb8edd787636941f1494297afbd96c78d0292cfb6c3fdcb52c1fd9a866eaba6369d08dc869eb999188e5adc8c66369d02d2565dbb1dcdd9b906d88655a6479434dec9211d58c42a15010e5a13c4dd3b44bd3a4a6c5660d6a9ab652da725e0cfedb50ad28603f5b0e8b455d39a097b62c5b4b59e64a3bef06ece8af9b97cf2e0e5a14cb6495634c14938eccf3493ea4d9734a2ca8dfa8ab7298128905a1801e0b426d396fc547b59ea05a5bce900bce280a78233b0821a11d102d612b98c85fd2471e090191f7248fd5e18ebbdf9be3a1492152480ef110fc2e01bd52480e5d9293423248f6abca250ce58f8f9592e7ca1d12133a6a929a4e2e20f60a42647b550a5181c22785e48e1d62f98f8865ee914296a54e7dafbb31d49237912709b21704cc7951683d20234b9e139e2d98e1016dc10c96ed7d43434239f629c13237a69560f9efc1cf25f4b5ec6559f837672ad5b2b17b6503819ec0051bd333a3b7e2c7b4d0149401cf4ff682a0a99c6e07465e1a86e035e721528f13b2126ea5a016e07b433c3ad106d90b82c6a4ba1fcb8799f15aaad887b15b430bba219c16118d3ed60666df610d1ad871c72fdcb1e6c25d7717b1cc4d31d143b2831d76623726da885eeb0d38f6cd3c2cf8b01396792d274f38a881700fd91a7210cb5c6672f947092f41a2795e659e2950d2b51f716880f3f0107ecc4450f0a192262d383838381ea8c9e99957c33a4f8912af14246b5bc11d677f894832d1334cf456fcd1ab4cf453fa76fecb754e0273945a2b9453cb7cc452e9bd66a2255e105193eb3d6108448922f4a6f8feb0f07c99c76528fa6c4cd1d0aa62887d2d38e4d8db422da22616bef4f79295b886b59988401b98d0c11d1311b8a11d13f4e988000dcf20b673e0d64c8050e399d25965835911e0153f004f66743e005ec01eae1030967de0c1b20b23a00c1d38a0eff771b0c9d381f580beb6cf5e5a0d584437d011ccdc544ce075fcec09fdc16e3a796858820c51c01af22da023024d5cd8be0eeeebe039583ef775705f07cbc1f2b9af83e360f9dcd7c170b07ceeeb60eeeb603ef775b01b2c9ffb3a98fb3a98fb3a980d96cf7d1dcc7d1dcc7d1dcc7d1dcce7be0e4683e5735f07f3b9af83b9af83cf60f9dcd7c17ceeebe032583ef77530f775309ffb3a780c96cf7d1dac83618c963f814744b7651d1280e7f3754400d649c140ef7c0a48e80935d07b9deddaea218d534bc89899aba46119bbbbe1935c5f8cf7a643fb0441e16603db877d6c507a08fe72b3a1f68109b210e533a2cc784d1e96f9dce181d7f5396404270fcbbc3b6385174a6f5deaebbaae7e29c7f651b80888d58af9e97c2233738b0045d7b927c5735dd7c56db87af2a0a448d70e7793070565a7796cf7d88e938765ded092193173a73fb2029d3b3c71f20ce1ae4bdcdc993c2b2b3b43260f945cf79c8876d654b007a8444dd4d5514d99221200000000d313002030100c088462a168402695364d3d14800e99aa527c529887419029630c21040000000000000020008000408232ae8746e9442db4dd544a626bc0b8a44c0666e6ad61d363990c2410da69614ae25c895410440070701b9923d3e51c8086494808d4ee143d5816ea2733fc0370ccfb53df95cd8765c78defecaa73d949fbcef3cac8b768af4c8d842fa4ba4af65103ffb9574f3520c694412dadf147bfd3d6254f64d26b88b2dc5e9ea8dd7d50ee069def19985870eb17e306d864a3667827e688bba9a3ea8033ceffa3e8f9b645587ca54c78738a2c67121c50af06ed5ff4ce3d6793c9923f7ef307c91d3bfc0620396f48cd2b288f87462fd2519e017a690e75022a771ad03851b1a6c6aa4f974382d022cd7f9b2d11d02164b8f752a2da27b1db5ff5b38057ec477d62d938911f6922c4b928c8e46528d59469c26c2752df426bcabbe49d0bbd13d4a4e02e98c039d7fc4653322e730665659434852ef0f88ca07568815213cbccc0e807c5580a130ee3aa5964530fb1a53675f8ab1415c4df676d22750ac8d8f7841f5b724aadd913bbcf4b304595a91d08bc552dd1715844fcd70f7af8121646a5efbd8fce21e36925d27c9a0923d37f3ca4995170bc9787d2a1c50d91c967456b5b57f954716d7f1975c96bb868529c6641ce7f174d0b9954216e30144b07e955de7e55a4f605044142c0103b541287426413455ce70c7694c8113cb8faf27c8b5b5030cd1d15d570d5b289933632cda5ea095e8a64e1038c0384af2e6353edaab14ce6e6a339905c037ed7b899fc9a7a21e4d577bdf1146aea62dd29788156d06c14a3003ad09f9483611a239b62de9d091c8b8959e4d41a04559eb2e5ce683cb7f5f6ffc2ee423017d1635e0bf90da1e5a01f29f9e8c1818f11020f37da5eacda0bda17badb15ae4a2c08846a06970e44563ee15cc701317401b2b81ead2250a0af4b1230320e7e6c4b73616b130a50ab99ae09f1a6a43505e440dcc7c4e414c88e0354aadb5db5eb792d3cd05871eeac701e7900c617e07357f0a13a1300341a352a79d3f007f47f4908702d3406a85c6977d0307bfd0859cb5163de6c59fe68c358d00e94e92c1bb67261fc0e653de2c2c59f51a6a022860c522fd6df3ae88ddbc60d52cc31a2e8eb40c398f5c3168bdb2cd49742b5761cf8bd8210a2f98fbdd44bedd6b834bf2667990291497851cab46fe98956f2eaa9b9d9c7b276b76db139d3c45d5ddb7161668b87da4241f36c448014d88870f5fbbef65c3e36f64d7a8c5ef0d80185731808b84707efd8094f7a78441e337417c8ac524ca5c825dfc4e4ad4254e5096979ac9e443bc35e32d18f3a3714f601bf4e4a1a12dde1dc3b9cbe536ba1f30411b05de52d2a9c0cbbaee5422867c0bbd2216b31432060b19effd1394ac1a5f8106d477c49136d13eaa6d4d286c1b68384b74fcb383403d1b771abe472acca7f9d4821488f1627ec0d7409c91c2b58af3221a907f90e4616823c761515a1ef7860eb912945a9a23311a3635223cb422e585bafa85be64faeaa963614af658bfd632807d0be02ae800cb6b3531b3088d29fe5ad36e5eaa7bd8717611a884035b26743bd940a0898fe5c64c7f152f45f8bef2a1e16feb32e03e024bbf370ceab23df5c0a3b0ad7fe45e92dcf904102f1c1be7cc493e7f60efdbda39d9ddb81c613f178bdfbbd1de45ecc60070c87b50269f48b2b2e9d7575db6fe813086f917fcce65d8948389e1cd1ac43deb13084f690efbe37afc407984f0b510ee4590d3add16d69a7e3bbe7a83205be0e2698a511f1f0cbb2145a301019a823c48d393f9bab145aaa313ee36e788be21abe1935a6ac652bd7d0bd2a745af7896bf3b4518fc961626d82b6d9bf4ddab5888de5688c0b349fb8ac246bfaa363b219573b245bd4dd7973db0231f549384baaa00afcfb542958b3c3ee3f540f6072c8d7f8a95d6dfabd5f63b3f7b858b271ca6c29160ae2a59f88f8676a74d0d06b604839138ce10797c308a5c78b8064cc05b7ac02059e6b35d9098b295cd838b432e40f01b184a9306b0f36700d1d0838bdb1f08c11b6e90e7c9aee423080d535e456c60361de846e20acd4182da3c1063cc89255ff61f43b0a137ccb40808b8215fa60108b22117eb1e7f90a10d2e8ef29e2d0717476f73538369147ec2b583a850093c3a0d540f2e8ee2e65991a5cfcd1a70071787da5a914df5214b0c5e27807d0ba3356ab58f9004076c5576e61f9b7600734e1e4096b388fdb0865d9f71401b693bd186c0a05c3d6984bc6dbe270445cb85f59347948669b4509ee13cb876f7363015c9a17309d19ed2b60bb062bdc10964ba34c20a8430f941f3c45d8b78b94ad790955f613830a01020cb2dd618bc1284bf23897bb1bd3895bb3fb7e4b669c3476032a8356d4dbb6710db0d6c684b08b88c180d570189c0a0be1e0c8c19e49d1979f3eb917f6a5e3e40d1bbc0c8bb665fd4dd36d395777ae4a4fc5138f59d0df582d0023befd5563e4f6109e58fea4e8f36c14f6730b2952ad0e9cc99127ef3b5a573057b84b626128af7c282cd367fce29834ca4f9624caafe4076f3289d84b51f8b0ad58b1edc36c77cb1a5f647306e2a42ee12434ca7173f422b2cf161ff1acc76a43cfb526b99957d0d1eee7455ddba9ef6276c9606c32f5bba7fba6a3c00c6032b6349e1ee0928e022cd528853a58cf67ca8333966ed5ef46f860e292036bcfb3701a5c4728558272ef3ae3d006dc2fc4812303a81e1073688470020fa2f9416d8547e48a564b253f97c0e7c552b16343c4decefcff405e9706dcf1ad1169459fa043c1c985b32e0b9d8e6e72e431b787f6d60e5f145993ee38f7e42eaf23231b396ffd3411a255b2d4b09832bb35f4ac9de70b161e4a50900bc97d87473caab1e3a1247757c7ed1a92890d354f98fc37f0c24b130d137142789fd43876568d0f9a365749c7a8b1d28ac688cb69701f8efa3860d6f56fcc282e5fbff340cc260bfd6071f8984af7f00d8bfcc6d6f9baf0fd033ce888ce974d22165756bc17743099f0047dcf8e7ffa5f95de30a41039a8071a9b71a7d566a3572646a95609c0f2ca74a523345d53abf7856b51ee228ebd38d16ac62eb5ea3cbd7ca82670a06d22649c826c64bf1990b70feb5cc3df4ed904accbda3eb360b9b38c21894eae89fdac6eb5dc7c87b3e1247d10c89f1ff598c9a0afa8c33e983f2f1793b8de9388e26895243acb5f91fed03a45c94ce9029e9c78c9311bc547771c72290107eb5c6822879c9c5ecaa510e9940b27d3a5e8a7a13a8fdbd98139ef818428ce413e191231b004c59f1e35a62f31b8f4357382e86d5ff90cdc293893dd52db9a1c82b761dad02a8c608b68be969680da18cc9109bba2d88f0be05320e7ba6aebfde70cf68813d453e18c6bb980087ee02591eef9e36af370811562d5abc8317869e2ed3303f0c1007da883d3453902daf7c252dc01be6477ee7336e352ce2177117b9ad4a64ab5bdc2cc4129f02320a5301943bd41e45a28645a83132b959d5489049f89fe5210419d737a63e030f33dea0ef31864b2cc5049922ec1d785684ba89f4b9b517a618a0444088f68fd8fe05929277a4cb8f36076951b634bbf956bd2358c758bbafb0fe55ed260ffc1800f534c097f4421eb7079b246ac42bcb8ffa71f68305230d18b308e8046319ab2f3d2c1251faf4232fe5e4f3e068387d34b3be11346feb493c24d6f3f8380757895b5864568b8a2c103973bb40d52f053afbf5f31384a33b32385aae28d7cd0df8116a0e3cd2c61a97494aba6f4324bab6bdfe11d99ec4ed3daf5809b42702fa92b9fc706660234ac1273ae1e712c3f401aa381676c4f3ef5c7c5543049145b5ecf3aa7226dac4dddf0ba1963557c938b4dfa77eaeba5bce7eed8655fea03ce7e685531f5ba7894964e76896a14a936ba335599eda32d986d0917e37a8f9c6ec05ce1a65112ba3df701543112d545e3f8adb0aadbda8bb5ea86f5b30bf54ef05c758a38d36aabd0b1c34d38ea6484f6a5de84356517685201f60d3d09b30a78c7113e1393e335c86081df58f49e07682c043806da628916fa500f5ad5ca5f2cc283cdf659ed4f2121702d433cf458b9450f40a0cbf2a790cbf149fbb9b503e7ced1f32f5171cc9be6f8ca951425b48c539a514adf4a947f69017d369b5e0e4a175e5bd5186ff214d30197ee6339fdbb09cc321dc461eb968a30ea323c07853daf4805697d18078388c3634efee95604d4636d41c548526fca0fab5261922b9feb9b805571d28905c5a4fe452548893b565b3787a217cb5334a5236f5c549a2c981397a7478a3a22365e816c0de1b0284d7b24050c73ff27ad329c29ce51205716ecda85a56234fb340fe3c210acc9f97aac0f922c824ac39ee2a61abb22128d9ddeedd570905ba4e2d585ebcc9f8a9b0e834043548efbb2236f2837323da460940ad578c53054bae962a0dbd62d13cc9133735b1ed07b404f0f92576622c42faac629efa1a9b700f349c025055d603b32c41778524af9dd59300a4d5cf7bceb7845ff6a08cbb202256588442f077555697977bee6373357cf672473e2f03088f3df85521dec6803a16a0cfe40b73f3ee863500ac3717a023c7a490420b79424187cc65d1d1e4f8487f91ddbda37161b0f4e84c928dfa32e087f170d1a4539dd7db0486f8e7f109b33094cc8aa8ca126ed9e03607aff02183756ff4dc89f73cfe344587a7776ec7df49aadef10082a39e7a5e06c2ddd06e06b54707d0194a3771e16e6633a685ab65718b68084c6fe7bd82fe05e444419ecdc0879140d8542c63b20139b78f36a1e22136e345eca19ab6881ddfb9636a4b0810a375dbc41837d4955363cb032ce59c5d3a72adbd7693b52ba82ed8f4846bbde05aea41bdb8f9d61a7959c2a942e4dfab863b42e1aa12f40329bff04e1c7c38b8fe30f1ca10a0e26added8712857a86e9bdb2baae6fb5e670d8b9b1ac7f2b84dae118b449ae71edd7eb94e9b86a0c792391144f8499d9c73011a32019a6b2112ce883388d52a80e185922f58bd610ffdfb511501729fe1c2bc1f224a46940665e50aebeb4ec1acec22251941b54bd1af0c5071c13c9c307633e4b8ff380d55eaa1050da35e470a7c6a134a668434fb2afdca49c1770bd8a3e4a8cb5465657c90ce04727e528202465eacc8b15a91c8c053c6d7e3cca3fd452de7413f887cc8da3e8b6fbc3738c8864adf26d91c3356b5de9e5d9d9842c13f09175c0f749bb21f42fb5aa2b56d74e0add4a907b71238e3e738c439e75df0094612ba0bfbad8529c04e90af4c75e9dddbd3f6390e31ed7817e3028426878994492625c980917512185d2f911f0a00ef10bb0489ff1ebfc59819fa4948620b39332e79f2adc07a2d873b0f93b71e0074a4721eec35d9636f1eb53f259ba26d56e087fc260cda23c10c482ec0b196312f6fa51c0560508e35b3ba0fd66c7f781a2015227eae4ad5f0a6fea90a3f7476db2adf29312a756a96e62a433baa0f5a70493491bc92b18121ede4ff78b748986c4900d5f6bf72f96c6f2d8c0f5acf09ea4f4902bed21783fee6dcd8a080e40092c0549ab4a5eab4e221e053600ca453b30844c14aff7ce10380d105e6a73510b6903348afefaeacfe93c93767dee1a44f404196139df8706567bc39b8b90d85d98e02296b29474a057cd083d3cb92a68cfa185540df3af9791b788ec9792f94d017dca6ce6b2194367bbf834432ad20f45ba71d25039515d3a981e4653a384d4fc68cf3b3843d3da6bebdd38a845238eb6896d558580918013927e8848386bfd5708199bc9feabc22b9014b201ebe6592ff20e6cdfe7c156fd96b964ff151713e42d8b28c28a02e876a15ca6740e5e1ba5490f80203604d46f1cf57dd15cd30b9cc806a800448217323eb0d04b5f1df07a235ae394344c304f788ac6c58d0edab077e422a8e2d8915c66c3992737700271a10dae87052716a06931cd1ab26c537434f187c1c98234d0198932eaf5134a61add3d8086c4c58dad80f113a8bbb91a180a811bb41176eb2b2393be579eab4bfeba221d4d16cb378e870fc78adaee7112eea9b7890c4c1a972cc4c59b3763e18cd4896e7286ea5d680e7b1bb154b0480dc70bde9764d33b06bec756c37aae67eec4e07c855879eb39367ccd3f6944e0dd59480769373a0fd0dd24a6bac73c0ab3e391a1ee4eb74a75343089506a60c647c087d73ce09de4e7190769ac2fa1523dca735965a107c7abbc7ac27964bc0eaff5472f6f3a9fff8bb375c0a413f3841215ce242678ab03bf9ae9981a5684644c230a019d094e82a6d02254ff2a52e8c8a1b65e57ccb4f4c5ed9906a877bc823274576fb475de597798c68d411e0521023c16ec3694536a187e6d57293060f08b183dbe16efe0b2fc44d7aad1e58c036a920079bf9b45f32e44097f04fa670ad30c923b6b9a458e02e81a5089c2cab4ed37fa823ce39f845d92f460a00beadb566552e4aa9246f4700512a63d107c8c739397f9cd704d82380b76a96412338d76638572e5de3507849a8d2f2ef919a8943f4dd4c35e11ea5ce38bef42764e7a8a4cd7616209d9432f519a379437929e2b695d1631b4708530ce710261ff9b1cd706aebd84efcde25840f04f2877f068b6efef37c7b5200254fecedc5b50568078772c0244ee80d9a5c36d8a73a2156e86084fdccedf1f2212b80816eff3d7e92b7e618ae9f89b52278e8c40fce041cfc7d663fd6ad653fe775bd127b1d8594d28d5b4046fb99cd56058f9f2fbaf4145e6f60793c52cd0f4d9a11b0e59557ac19bd63a0c8fa9efd422e9900687f16324866501f927f8f859642d660a71b87913860f01087500d46514cc78a43d56b335a66945c28ed184ef8a8320ca200caafc2f350a836805bd5c2b186d213463f514eb44d6c581b19924c038baf2bb5783c31e9e8d6692070f48087c6f807e5b010866a566931eaf7580dc769bb3408aa5602b5dee7a12a1b5612c476f0cebc47ca8232762525f1c4f28178f303741fcbb55f432004074bf16d2ef43599dde021ca3083d7e8d322c328fd9f7f2ed848cd636301ba876fa0b4aea1b809e8c53373516b4fb38c4e2ac68d79a1f84d90e658609aa3720e671e3d0be3ded4e7c9f39794b5a919c43f5eecef9f7e6b99fb31f25be03f13ef3b81513909e81cf75313db726ab6799f64f9034c30e71d4f838c4f0f9e03810ada7a0376dd6e20ffe8ee541981a602430335e4dcec8a30a085034a43c8ab6db7cc3aa7b348b7b3351e9d1553a5fd94560bf4a8bc7ebe5bc4f1e9fc5b691ea6b983d3deeff1ab004a34e0f2c41b4b9c9aa1b5c878034b5359fae39824c4cbd3293c58efccc9643ef21bdc1b6bfd360b503d276ad738b7fc164b6c8949f4d1c980c84e20d949a539b4b1ec31aad9bedfaf4e45ce4e519f977657ec5a8a5ee8c1fa46b0e5248bfe8a44cc49d629e4e48bb97beab35a69970d46999b3064f4b60a85d16672dd7c31f903bfa52553962b77889f7fd4c60db14edec0542319853451341b57325f347dfb6ba1cb70a8d915e96b77f3fb9297d2d98531a085067274b199bbb91b26e42ea7d10b3b9914544997605aa001ed63a4e153cab267a449700e7f76b4d7778a7749c929175ccbe96adfea9d923486e59b4e14caf0ff519c86cc333b7ae0d6b55159493ab112753b05cc71b7e10fb8cdfec312c2b59cca765830c822c040b206beba342f225908fdfa83a97f1b0b85981fcc3282a9c240a0b0a0025a5165bc594e984f3c208930dd13f2751ecda154a052871d40239af4d854d45106633cdaeb55de10abd4346f8d36d48fc89888d3a453c43c26cdab1b4393f515999f96c1ec7ef5bacbfa1eb697173249b6b0075333d16ce93d9776b027eec35be7a7f97c275f1e48efe1fa400f1513566ee530b1c97c894f6ccaad5688cc533fa6090500b3da1952869815afdbf20b9a28be6ac158cf9071a48731607149f7c1de369e8152f1f553e1fce52e278082be2a0ae992818baeb3ff303f663ba4347cca0cf6bcff1bf431b54f6b1bdc728f27d9c0079a70625f1532b77539c2a21ff9942690847c76bf2a58e8a7f6333bd621c5b3755ce78ff10c8e9b650b6a38b01434847bd9a8df4efa837be2985e7ba4af673d07d2b9a53e39e0d870a8c4f15fea2229dee7d0ee5b56d37016b9cb24de9cb2c3dff1bfe579cb7fdabf06eef8bb02533f571ac361ff85f648e64ef4f2b1ec051e6a4b99527eca63394a3abedd465836dfd0b2d5a09efa88e22edfcf83984d90214656f53b203acd932584a54638a1ba8ee4c225e0c64e8baf43610d3fd734f8a5efe382e754654eb2745f7e077dd5219dab4b1ed2e577a3eb01921fe345b2f7422d8a131fcf90afeb65b8880f26d45955e37b6e51e90872a766a6bc55148f2050032d27d55960689ec7ec856ac1a9369b9bea7e1d31bc2b6c4903507663297465efb5301168173d5560dd8b332da161e2dc64bc67d4250fafe204d2a576f500b180df0cf18f863d65b1ec197ea3639c1c0e65e7be7d5f5b4a3c592d55d5ceb6ac87a2c5814f0b604395731214ef1376004d67df32d6aef77de0a61dc2f617de1091a8d067143a0c58896a34474ad790821a7079a5bc9bf1b884d912a98ed71342e089ecd0f9f1fdc9b3df75130413c814fb5dd0f97b8b4bac0384eb12a50213640616f3bee3bf681264cde8d871b282dfed07fc64a69cf1968dacf17c586eed4813f39a079f47d5ae34ee3ff5d05e37314f8ff132ca7ab5a6f8eef3f04c5a7b3d479d3b29f772b6bdcb3a81b1767c1b717b5e362618a8a857fa501f891ec404f0128e5b5c0c25d1d3c2242ebcac522565ab2caf170c170489f4307dcbf10ec7c4542dab411428142c38918774786c5a862daecf973810983310149a0b76b009a8fd08d5be38acdf27c0c71a52cce504cba399b43e53d3c9be6d2eb83281ef9d134da6d363fb8e81ce7555151cef594e4ac73682c95d32b765c4c31aab56ac8e58f92f2d70ee99be50c9a88752caf9f785b39d4e9fd46e85586176cd92b00ae74afad5a99ac8f8235799dac6aae0bca946a635c24e17be3a7e770ae9a62e550d34e4873d379970033545f13907439cdb163690f12a3552be588a866e503a5534ca545527e273ad2bbdfc2479f13fcc5952c9c848e60dd56ac360f24761728886371965060e49bf14a61971b96a42b6318c45254486392316fcf0691e4298e7bee271b7197fdd2b5585fbc689883e3500e1a5f5348a0a255543a1700e780ea88bbbbe05e2a2aaebb25181829706dbda4eba99a7500cec27fa1c3c0b4307aa389f05a6576d0b3f3e03af128d08056638c9e4b4c3b29163eac08bf4728a476e6484b13405c2ff69a0a5b606503a4f2f1348dbae62c64696f0eb07d7f5d910500f13022d9611c5f7672428aeb71a172220c406a277a91b23b5ba38adae2db5a9d463d0f806ad6d5bd22afaa195cb6142275d596c75cb5f7ae283581d9e1f227540319ea593396b3d7492fed1986c31049a8085350c5b5b491e197fed102270e163e442d0e7822dfe0c4b87e7f0451e6bf6bae17efb6bfadf52fbc97a0e95e800198e7fbad8ead9b46b93e95965e98b95752ac7a296f18392ca9ffac893d72a839a174a791e6e409445ad2ab7915ace28ea0b1068d25e7615d390a836df9b3e4d41c893accc84ff99f617d3113932e2982987bf60e22637e63a94e1569079ecb83e3f1dcc3c502fb00847dae087c06eb3cc4b7aa410749aace7126af46ccee34095e038c39a0f8928b941d411cb1d9133343b63cfa3bca3ebb5584e50f0739972687739d0296d89de8da01b186350c772fc0a651088d5246ad71a0445b448335b2b199459f0abe54d433e74aebccce66f447090872109c217bcc68429e472ad0ee9f4d38e305d9bed939f1fed699c03057f5c02e00c399829136c35e179750d2f9b83dfe6c7d261c075dd832c0881fc521df60d9e0865d2beff9059503f2def777e682e8d656c8b266e493d9d2a538d346f5c74adf89d5514b5585c2b4bc98d65edfa138c1aa0c9a63f7ad67a25f741dbb7cce9016b79d55ad07dd3325584c2d2db42c1eb5ba4080268998667096d63587310c2a0d27c96a2e6d2f63b09a54f8dcf2b62823ecf1d9c9bd2fd8a197398c198f3de7fc23002cad942ef88839f62821fa805c06761259c484660df6c1cfb79fc4cd8f9e1da62aad885250c4100b48c1b0b972d5ef23bd0852adc267e3d55349cd4cd1019da6e40e4333b166062b855250d83899d748c3334f5ea6526bfe11e0503e303cfac194f9caf847b0a2287ceb6a4d5f9a81e5d7eec6515e0d6a7789f00eb568e2ec9ab035679f9293e0986220b89dd602264ce2a9baa54136731a7aa141be04bc9107b99de7b98a43bb280a06287687fae229b5c165a37da474991ddf6fb81bddbd206e63c6b17d4e7c6707eac78a07aed5ebe06aa6928a192065a347112b34538b8f7e02bea6d53995b4c8dce0e5a2ed0e292c870d99e11287dc6b078dd173e202ec12bdcbb4d180f15437a21955cfee2fc60ec5a6c3bd8c9182d9518866ec23881837450a4e5e799446e0a1a1841c6a3294b047e9dc370f923dc2c784382ae813bc92d7c05ecc91fc80194ba61e2db13437598746e0cb5b2b982f42db200904210bf53afd18b0826cf6ac9dca66a3ed8dc2b591dff1de78954658221949188497d9158eac6e5fc6116e2aead26704a060c4a4ead33267cfb2e9e97c694add59b3e22e18a681c4f6d200db409cdd0354c87a6d1a0dcc02fd52d42ef0e232f41b7b9b109aa9cff71d81a1cf32406d34aac1712f40ec01482dff9261dd50daaf98669b62173c372c4af06cd162fb675c96e43d19de0ecdabb043a8bb3b02419c1bd2ec256f8f2c9030ce186b13fab85d82ba4683c67306ff6cf532750b02d88c5ef2bef237999b32671df49b5ba15660d445424bd83358e8015111396ae3fd20c1cb4d296de0e07ff83d13dcea438cc130e051bab9722220f045aabad302bd8865b446a7e3f2e440f4dfe3e8620a96e52814fd41415a93d93ef490eea62212cb0b32818430c1d24b2b1225db6a92abd6f2183a23a6050afa73f341098e23ffef38f940526130f254b341808cca9987855a1a49aec57cfad3eac049eeae65c5aac4474d1a10ad9cbe1e374fca01cb27941841c3529436672ce942681ce4d60d6b358a876ad10e87bdd724d0c01e9bb396a2a01c1f6d343c900d1c8436751fe1737845ee51060124f069caa48e0f3b4c714f8b20394afa5ae4af7303f90ec511281856fd1b39920e1e348ea2e7192848894d2de4df6562f97341de96257aa6a638e7d0d91043e6def5c39baf43e0504605bce0a1e3892136840def33e486666d9907ad4f5474f4d17ea5216e0f976caa61c9264a20c330a3384a8f526b2361996d87f55872c91cd254f256d50f55746cb968ad7b342e8ffff76b532e5f3af69fa05d045f7d079c1dcb20017170ce3a8a7f9fd58ed1862ec52073785c8da318ac103d9564a9804c357fd09334e5034d1eeabb6b84b3f48db1f192f6d29878bf981447cef66348fc927674de2ee112756b502f7d30a554ebd6f83254cf814986680c699e872613269e3389d6d6d68e671d6f1a0bf0d7a6693b050a821731dec95adf0847ceb4936b96f9d2313869291eee6e14737f7424908fb44a086418cc17c0bcb8f86bd2148d1db9762529d3c04718153036d749eb3bd0d6593c4aff17a453f7a76a5b0c64d7f94162122c0338786a8574f01af2b952259902c3a1ef959527f224ad40b704b753d076b68980f0dd4344ddbeb2f5e4a71219ae8a74e16ce9b508177b6ccd648af582f65972adf11ae73b4f03de3ba03b8ac5b78fcfa1a9e1ef29e76efce7af5c50715ab1529d7f110b8963e215efa131fdc9c2421afac46bb75c1eb8ccbd72c4dd434fdc27916cb94500f690ffdd4cb70a0521137045f11fd7d1ea1b988912acf216a8456044044725f2a577affec4d3fc0ded4ce583456ced93d81035455ebc8105d87afa40e9fe7a20c9783c0c28eeecafe9f70244179f3967e88b3e14b505026b48c5753631643f50007749185087cc753b2fe3012f01e702912c3ef1e6ea0636d5c84fb4062032c1fb752e2201ae3590935afbe23d3c31f8508c0d1ac3d725c038b801b7f9b7f16d54a32322fd7d08b7f3b847711517a732218fde5edab31aa66686e6a324475706233f9b812429aba3255047a474b430a697611024239a556ac35b61e6e3730ccc3bfec1ac33dde2a6da38461d3943fc6bd8adb341167dd0b8d398e43fe859735b240fe88282cc283079fd1b82607f9df77fb5f27a0fa7172057a0d87755e6d809230280019e484120165633a3f40117a9fad26678a37ac603ed254d427a35351bef6f96f9ffad3feebe30387f7bdba01ceed972adae132f0e2c4ade490821c2152af9ecd5f47418ff6e4041a68491332b5238ea28e286fe81eb40615ca279255c11e6c144d58dee97b6be8fc111a95ba22442bed80147959e070f06ca17f5aa00379aa2274b975a8c4ce54bda0c0a1e3941e35619f575052d222e2e03555bbabd18cff54239074d8d131e67a079e767be87194e4ec441cb0f25c19e986b4e81041ab1913bdd9dd794031f1371bed33d8a667515be97145a95096c71f5b35163e57e79e726628c89e7e7a654a2ab3edcb25f6547e84ebbbbae4e23d512d6bc188f419e6b54143060eb657a090d9de4848d005e0aa8194b2b4adfe30e27383666cc6f90a8a4f52bf46d685ba06fcbcb212981af0ae9a5857d68d4f1b30e2be1538a5f0464a62c154eafdd6e30bfdf5ba6497d04682ac70ae67968672688083c09146dab5e8a19a4338b744f286125d78abbb0bafc9c2d99f3aa8c736d63dbbee4b593fde29eb37a9e5f738d11e805ae1706083a7c2025fa004cca49e9c4ea39acaad1f035a564dc7ab65df102dd4f9c12dbfb91b3287f4665017303d70470ad03c5e0b9b0cc8416b8679a147d193323513d91cd3aaea68c8c0e22dd05849ac27c5e7d43c4886fa924940acea7e57acc39115cfb7dd46418d30c0920d26816659cc43610d2bac15b2c73bc451accbc42e4b2af0fe8e2639698d8f103a978ed52475b18b9bfa3c58497b9ce3d628050c35b684f597c215a6e025bb1323881d962305b7c1c97cfad90b2cef1d84b922bb642f8faf05e591eab727de284fb0b503b0d2be4003c4143cb81130e45bd3d94cf19e5fe17145d8d4dcb33ab26d5ff93fef1641bc88c5e6c03188e8a9a26c8ce8982a4ce9de30d11569e14e411b263da96ae2a349f3bd465df0717d0c95fa03c67635daf5f2006f1c8eeba9fbb89ba9c7a968505d1ed265a8717e7077abf0be64fc91f73cf4a6818153b1c0337d9b5d08665c015dbce7acf7fcdb0bbc3f146647ed562f74eb38d483a244747a3c0f80a4344456b2f81908919a30b802902639e8d9035957658756f3bce344739dc1e901aa3a1517948621d6bb0dea0b0c2ea2cb892506369b5266ce0636846cb80703ce12c743a7098c785c885ef30349109f715b28485a68c4511711b759e080ed76c11c4a4aeb42788aab58181a52f37fec2aba040a5979fa392b83ac3358807755a16f8218b4cb86fb290aec43e83268d94405cf56b9629ebc1bfed87ebd95452dd0ca58240807049fcd9dab0ce24a6aa4dcd666163f340d5aff29199b945829af7cd875c3bb4d56182508f0dd79762b628f052396c042316227847098055df6f7302e1b0f705ca47705b46c112c8a6f01d9dc1d92dcc8d18a9b904bd59ea5b6879bac2e878bf41838777509864df4c62a5498b58024dd8604e8f98ca48d8fe890401dd6a593400fb249d41c21151660162b803047cb527f4a3bfc8a166fa1bd778e3dc5264e5f38f108507532c2bd5c4c9798c5a6ba49c4122b9b9652a83f9602df4f765fc0e968368ee3981055543a4f11540c3707812c0a0b9fe481f9587b067be53e27723f58a15b6c15eb26a332c2d650191006caa54cbb8545d5597ad01812cdd47164c0058429a2a68cae6da83c8e825d8d0f7549c898626475e97954f556369a05cf29be8ff626e09b0d9a1417c3d488c3693f39aeaa7e23d993cd880318000edeecd3ce3b340d71e3b1a9d4ac9ee8f6dd4f3fe5f71ec1b2d44a45ae879afe497b84086b1718254d4ac1d25500516bb57de61da0f7517e2b8c673f240bd02bdab586436c955319e44d2b9541df3ff1d59c65da3d1da61919831cb3fb2904cd12524e931e80e43870cc0a55f48d3282615507792a12e0e35c3e55c8728d577320f75a68b5c746f212a4d4215c08c42b8edd1877c4b692149f5f41d1b1d1c691d3d9aedafcad0fd2b9d55a40637ca336272b3aaa36752576c1d88520ca86f7646cc68e0fe45650edb3b7c9546c60200a8cab628df187d218c6e852018bfa966357fd7e9c24de3160628a52166f2b80f96189b3b5d56e32ff462782e0f37da78b78e273f85f702f6356271c783f307f1db04f9b1e44e86d7a530a26924994a706dfb1057038573bdac8f6ba394a1777ba14562845455b87fec2874ff1d5496760cff2a21012586c0159561354756ddfcc05a67f0158d3e23bc9949a525c8e68360fe05043cfa382e4f08b8ee58649e606db3df09a45846ad4006ef9ea1e822e3d6829c32156f9cbd4298c42e625e3949f03968df34b69fbbd9d59c5fa429be2614f25521888f89e723a61ba5030860673b35a7bb0ad6edb34834d29ad1d72ccde44db0d470d868a9c86e13ac89f7f20448e57908a0e8ac87892838223d705328ae2664fbf4820ea712d6bc2e33337c15bae17b996e52ff54bb75725d6ef67c9e1c57843adc69fcf041e10848717952c41b0e01967a21b9306a7f636c0cbb9f3a130b5f3d6ecafdd9eb2e5b6f137c204d7c977716e9dda82b824714ce84b60e76535c8042a764ee1fef8294019616e6321572e72432605bd6a3c1aa9e4956c3fd7b98caf7d0249eda00bca37d7eabcd0d8a5a61fd843eeeee5f0d6b282e1b96529d7f02c3617fbaee5a59ad4a62b3d7a819fc0fcdf0173bdc56a799dba9372b2c29f5e70fc4c3ba5f7e48763b987b96d0d3f014c017ee9723ffdbb86de547c7861510d93277654389dc48ea6004a4d0200d6882d9ac1215f977feef438a3fad4d016806162662889bb8c8286c317fd990c08cc16b3ea9177dd272749f15d6e34724a898c9f7ec06404361fef7189275ea04a070b757750db8f312282d0b8eda9cf26c73a04560097c0ca401d9775ed5fb061e1147ddfaaf47ea1e253238f21587c5e2b75f3bf3673b4baea600b2c70d6f20607b8d5a60b795925d05d30dbbac5803fe6dab9fa84aabc94fa989c6b1d47e415c9f12c33a3ecf763d5568a4a7becad708ea37985b177716fc748b630b26084353f2ab1c717beb3c9a15bd4356939140c463241593bbdee29850c45ec4a83abd8e07d4a44a83864bc82d04e0cd3a1ae229f6482607c88b94e52ea7b5c0eda81b085e99ccc841863759376207e87b0dbbccf76f48dd912b6ed71177eaaa7499da88a03389bd230c2d3ea4805c27bb5202c6793db621bdf1ab17ac4419807ee25764c22143e486d47233a32c07f109418e0e2dd6e0752422e84a118f7ec512f6486b356c8a984829b8f863fcae3a6e6ee1d32ed0cc3a7ac082ee17e59aecf3708b41e5bf3012f50bd1f2f7e3cc6d57ef994287be6e7297a626dde6c2a4401c1ec8f7c4615473364ef5d7b5cec489e3bc157c0192b6c812459282098b1993137220199f42a8a33a7f53d61585f9c9dfef33beaf0660a7404bedb2a182eda01e2620e6b04efbd380e29d140c2c040ef518f6b5831e4ab16068767ac9e97547aec9e3dab5a9d57964e3a9a39d483b40f46701b34ced650b5da0bc9e8cd9cda43d00d0c1d86a0b85bba844f17a467a6f5f469bc20a50c50eed15d7692a1aa65f90633250afa04c2976eabfc263e4cb2cfee2af5a91d16d8e6c176aa3ce62b0ea9062886a9fe06a5165eddc3eb33ea9b19db7ccdb3f97ad9f9c1cf2137cbfd00ff65464f6c823613c1cf44c41e0962558726a898bb6daf5cefc74ae23d2a3625beabac3c86de579bffa4af92ed5d68ff12551e3b6cdbd2a3789f78948d6bce186784aabaf916599c36ccdf27ff6a30d97b01789b0eb06f9eeebf94b32963c4ab6d358d5e197dfa4a734ad09471e77f1c289c97eeab7fdd94916c956af377887c05078d7c92db48e992eeff2ed144a1908a823cf7ed0b1cf767ab7e1020c36d5a265b33f0ace480fecf8bf20edb8538f91b4577f455defc7ccd5373b523a8b521ad6af681534f201de0b3864a64b834336a93498f639a7b786e964c092ca97b29fbec966bd2a3299a4cf50cdd8dac50ce576c5f15ed7853b523de84791e2c544883569550dc5bc246e78a5a4fc7c395af5be2b00d8212d00c02532e9335a404aa40b7a8295d0da2f1a6dc9f566545d668cf0a8e07b86f2e3fa390bd411448e31c5d9f42cdad12411a5f5f392e416cae4a70ad9ea9788e07957f6e8086b51c26c4d7972d179f07fb519c765cf4c7af35a16037f4f3d3b8d436a85ab0dcbf5f65968158fc6c75f441ed943d654a7a762a76a9e5adc45367e94aa10780b3ae4c3b8080b89ac5ec89575acc868df7a24aacfd4b8d6a98c1a237518c400d9dc35aab422cee792e4934599f4ba61e8a9763e915cf56f82dd8ae608db84b9b0be57f86be28347d5c33a5254afa50baf25aa41fee46dd87a31a1021a783fe96b998f4bd2251b28afd08ed8e947715b0d4df38076626cf13990f8810a4de986ee2e9a7e27a9570f19ff3da19d0fa8d9883fbd35ada6061da5b235118dd5176f0e94bbc321d33bb48a53edecf9856de79a7a9cc7a7c59bebc6c2740b35208373f50b450fa191cdb44348ac7e9e4163f221434030e804a65cefc123b201e174aef31f3641bcd5f9ca59c30c978f3ee909850e10748509605c7816273c4516b64b76e001edd6198a921180676b9ddb034471038c6e7416c23181e220beb44c5948eed70bae69697875791f208a344a2fbe70a96c867b93ea628683d6759701f988f20a1f1c0abebf613f857eb003e795a350587b951a7c9bebc3e6fe2e98519fbf4c728226a7b3767a33845f0afa7a9ec39bdb76c5ba791bd07fb9e4936472b77d03b9fd664f68d56a5d2363005ddb53417feb8770eef427e5392d6a84891cd3ebffa97d694fc2b772faa75efaf1e8759e47f93069cb41a7769de3d93d4ec7e07b915cbd3a5ed4e21f031de2e4a3a48a7e53485f59141cbc67503aee144516a986f0dce06835c99f40db714ac84e664923e4dc0f759f8ab178d64d393aaf26bde7b21899d39fefad52ace38f59fcd2b046009a96430b5d9a74495125597f9e6049a18b1f6fad56a44827a9126a2e1719fdd52ceba729f832d9039918245d401c392b4f95f867a9f01d20d84fdea461e9c8b448b27bb2845e77e3568640be66732302f510e20a7d9b5b24a460265f6791053c18c940859fb4f3683bdaecfaf9e3b594d4cb3877e756f3cfd75e886ad9b0e929c47dad0411eaa49a9d18ace7eae2628d2757eb5346939da8d097d79e2040bd43cdf8466e4d41e7631fb9dd86ca30e4731d440dc4006ba52bbe7dba2be9d33bbb3d4c04afffef6210be94c8f28891761b846ab7c16ef6c72cc94a6401de1f11c835952c412dfe51bab97e6da1cd5f49a3d9a5d20eeedf328201ab527febb1fe98d84d722543bad08c7009f132597c691d33103a7ce68834f28e3cc8e6fb79111ba29525e554d8b887a65b2e047660ec591354e89c4949c5477f42dfbc92c163a832f5d525a0b2485f17b3eef1820366b2fe2387c20074f6e53eedf8a0d2789aba8a6c6d3e1b278402289a021e5b8605ce8124be48cc09763653f7a0d0e2a5642d144dae628e78fc800bfce27de3cfee6b2544d5fcc3f7386039866aa4410617548c6ea01ecacad93e6015e133b16911a9e034a37572fbf982ce2626b409b6f16d88e98b21ccdd12b8afc7bcb57871bec1bb5e6f9a7fb09ec08bb6be78113ea7edde74c70812391de4501044339561ff2585dccf595d110539e836d19c228d852a24dd643502195b773e9253478ff6f00d6072a4a4ab177d4602eeec559669002ad29080a2e3d49dace82825aa2b05686a343ba922e7a6d6c3979aed1018f7bbc06bdc6243c448f742a57861945601419c3fa86d9dca312d2556d868ff33e0aefe72e8e0af8014fcb3cc1a9ece1e337ad7c4597eff9f1660fd09d429bce1f2db8d546aa643a340be3a17197cfe8443c92a6e1c36d2d0c8be5d6fb0c533296dc07aa251d352643ec54202c903361bea949e0311d5264397555866bfecf45a6d1bdf7c61400ab4c4fe4d0ed4e9c01be93d065ff0367abc995e58b60ebe28baab80572bdcc813d1d92b858b09931bd9424aac80a083034fcbad10e3770dbd791c0cc4dd42d6d320380569a2771f90a9ed0d972a58c3ac8d906d6f8fb1aac2642b35ca11bd4c30ce0436c88ab4f52c9d81c9c986da8cb51f824c786d944cf7f6c7c38c261e420e153be7a019c84228ebf72ecebb96dfaeae962f5743f64393c9de08067fd605503ed0b92551eeed7ee6c7a7b91b1e23001f5082735c9df2ba07a253438ded87793296127e4927c7d3bc089fa2f45843d7fc3362061a747eb9688edd90ffea8e5a9d76a35ba4ef9c02dd8f18e0e92b4757b63caa48bbc73a0c3986a84f27c92474cfda39e2b8a0baed67d9a07d6c968ae9c0e9fc02b3792232624eb0df3914a2d5d869279ce122c2f985323873a43b6522bb91e0781c0dd457d91a011aa96c8d1a0b640e1960b6a05c58a0ed7a5c4d7ed9f71c1b5c9f4c2d17c19d83f25fc2c617e5a57a77e02a1e6230094d263ea106ae89fb63f9ec60a8d99cae35dd9c86b40bd73a738a3814d19ab13317164a63c03d28b4f4b1c2be3d30e27370453f06281296e21148a47ab1e16498eea4de8b466a27ea933f8eea22132139d66ed9824576569b31f68f94da2d3ce88d0d5d98ca00e83ecd55ac4ca8f37d01c4808e1c9b8cfab83585ebeb0d432a4b932bde82a807e4367c215d2c4ca74d7e834fe3744544e941dc2bfad0ed99f974bb49c46310a1593384e6bc8eafad85f4606a04a9a265c54b71edc948aa78871b613f56de541a5c1f74f2a466ef94b0d18c9348381d60ddd984ed3706653714f3747f59b1e077338805f81080b9de34da2c8df0de954dbb9cecc7793ae2173d016f6ac505a5e72dd589dbe6f3dbb0b756db2ebc8cea6a04440029d100cadb79771216040ca01786883042660cf5ace80f77249e3d0d5f54a8c8f59e3b64420600f7287a018cdc06b11083f158f43a1cf5fd242089f6b695278af35157796934bc58ce3614924e6c513b137f3ebb1f95b77d6ecfb113c12eb5c812af96b148e1685b1a725a54725183f0d3a7af2e6b1e94dc36f9958330987f1a096abbad270bbc479c4454296a90b27e93d7a28a8647e6ba9c9188946eac102884a912db593f90cb57fbf025db2ad840d8a32b591b798632e3adba6b04ad1ef9678be5d70511726400db84e1520f10fc5bb8a99875bbd1038f4e6bbccdcf1ce339763c4bcd77735340c220e2c750bd39288e698bce09ced5c08e6a92e90d2e7ba28232690fe8c9384e5590e2c73b3fae432eacf6c14a945b94d5f68e366718a14015a9aa27d1d504d4f7728d0f364210215d30a67a3a617fb9ea6056803058d628f3dfd16a0fdb24cc206e0b222421c2131696166daa94a12b4d1a0bedb4ca489fa9f01cfb96c1ed90c2f2c0d0b927bcbf1414bafb780020ea8679782090459d1a3080044d8be1f66d89130060ed836d9d506cd21e5026edc5d6160acef4bb1839713e4fd01587ee853594907f9cb35216b201c5c540acdf7df42e2190f90430af87120ea99459b523d3e1382ed538755c81c3a5e5b6ee7a1bb4906fc46013d08bd6daefa3257eeee8428c27896a7657c688bfbd4173540dfe45083212f94c88d12c486c69114e7919f1acdda4bfea8b0ca849028650756eb939ace2739e70b7d1f515fb136801132988e97052d65c0149884e4131fa26336d09aa1c6dc4bdc984e28dfbf4390e8a752b7f30aad32e956ee0d281cf0e953298482e65f96e543bec8ed764206bf3c0fd16eca7a2ad721d63cda077a91769abf9f41c967512b75c3ac6f617a18cc95561deb0854b11294b7fbf34e02c83c2de205b21fb204ab5d8f6aa883ab694512cc8183779e3f0584d5d70bee0cdd091c7e8c7a9573a2cdd4a4ae7b698365e9027c9f195f5ea4620e235cf7a563f9c490f024a0038c14f1f0702a6eda62f05da96d4382aab60d87596d63392ea890b120492d97bf6ff9b4104a62ea888f054f7c76b955aeec539836d93f92dbcba7c6375f36a07d24dfcb502761b964ba718d13bd2b115efb3e6b31b2ca6bf6cd5c0a40a99460268f05b3bde67f9ac4c51f0145ea2867eac97f1c0022dde6c49f847d78e4eff7348dc0e9542fcd6e1033c889e13083c0c2ad2872c113992c5fc5f5167111b1d3ebba16e4ee6af6d06b4681db462ef6806f9ecadc11b40e6d6309bff949e73f1ad345811c1cbbd6c2854dafd3d67de8b672ba4f18fe2939b69f1deb8587446d8631a330d3c16f0cdffd9abdfdc9ccbd7178b29b8e01ac64ccee5c5e24723d90ee1ce81947e4650451837e09ea4c677eea87d0425978e426d8c78f253312df4729da90c94521ea82ea405123e5c3f20ec160ebf8fb8464a5f1f6d5f00c7909dd9a06c22228643c3374520738f17af145bef604b52761e2f8dc318e13f33a44a791f20a2a00005f1d4ae035d9fdbbdb263498eb2b90efb1599ac23d9fb94e7e8dea6d4db9297164819a72d002d3c52abe8faa064a45d355ecf6ee2aee55579b808c2ec5a0fdaec65f82840a86108095943bdb0f57e233042439f5cb771798c55b1ad8bb85de4d296da3f75045689aa6a775ca9674f06f8f8267950c9b3b8192a14c1ea10f5bb5f669e5bde0e8b8def9a18db13e5d08ed06d60409084405645fb4560d350f46c7d06cb079caf49e9d277aa097a317d0e3d8cb6eea839e3e875e83170a82be5bdd03005fe42c63060459a1f3c346c5120829e1d6176efddbe0f065da11f62d6b63bc9d021c2776fe319a3e51e1a9f684c11b50c12d7f22def38237da2dfd80b9183c3f6b4b4c999d3363de4b7274dd271a4e14ca9467588008f6470f1673a5be058884e4c5d8ace98bc71b32c5fa4db6a201e1ddb01eedaeabfb1ed3e7cd41260c055a80fb5ea61aa42902374cecc5156cf8595da51534b9bd6850d77841def85453d834e23112f0fbafe721f0f611944e174c92de8a917e549067c6938e619579dd14c5da37dc035288aa402b8ba510cd42ae0910ff3998f0e7ff18a8d243907b77f2f29904156f995b5d4f154aab24c0c4e107774629acb35ad3cabb35d5070e410450a77bb46a9b654ca0b495061334adacf3e8958860fe293213434e705553b28149b1a6a8f1d40360f6ab87d27c5b0087bfd24e0be896c8c997afb4ac696b85ea7c504b0f6b40288051e19cc2cb96542cb90036e539925bb3559e1b68665e273bb43aba1434ea41ff16806a56b182cb918a593a9dc07be3c8d450b5c51c8a37be7e4f2d718b60b865a7cb022aba4ccac01aef19573cd208b198fe11c0ece82af19a862c402d06498b11f8182a131938424c1b220ad1ae338b3b41223f9fcb5b63ed1fc86d1041819b369e9105c48f6d3a90bf80116219321235f1ebac176a12c04e14a60c35d8d59489abe001fd3342991d423bb943dd12d10615078c554ee32779f872fec8e3d591618d880080c034b3c5f6e416c4805edef84a65e3a8d5b20a390182e6aa468e91d76e0381a4dbcaf846677fb25942c1f8799a24e5146793bd7846025afa5642cfa434570e6ccea36908cbe3202610e4148210e8b84bf76df0f3c68e598516fb09cc3484f24a033ab3ed27889696a2b7c9e61e96cadd8bf956986a1beb3ea445fb4bec7636c2740cd4dad667ba1f2dd58fe4db9ac88df2f51efc329f348086f0cf7e43016d76b1a7c662b4492e1f1ccc6331171b9eaa0fe3c6db3852f449261d0a94718ae75eef11849f1d5062b146f115969504120f64145a1d2d34f16426da2e5c2fc3d33b240f809893d38dde837bd0f41e38369351164935880df7a7d0a08f95eb6b95b8e5eff23b3fff922c8f501431ce309113dd5ef241004c78ad68f4c6ae875472096656c4df42b5d39b3f5428224a765aa4637a35ee3bb2791134ccac83a306bb05e998b427b38e8a4600c068f59d9b435cd5ed256436a603a1589c5a6af0df6c5be0e0d93be3380cb130abad435fa88ad12ea50752309550486d1f9b150f1572ce47d58c60d32cf6ca67978a0a836336b8b41fc2565d9b2244dc5488a289f0e46c79527252b7e507612a442d2c826cc169faee9e96b2b915f2e1de0825bb747d41268997009a74be49f072d2d372a3762a702b0adec9827f18a73a4b1a637468ce181f54a70352a49527db314ab0a03d1183c62ad311a5815514f931ca2eeb48602f71c3b9b6420ba5e6efe246068b13fd937c435fdd85ddd06f53458112f56062ca95f37a2c8d13121e78d89f2cb99e153a88acf7fc6bb2125fdd1020008941c7a92b9678a06f0ac6b19a9366133ab254843deb6b345bb9c87580ee3593e8a3a685b64d0825ce00359d0254b4683e16ffea93bf1cfe416f60a58bcd0f7f7a7fc5dffdbd778d334da3526d7fb936a18bd80e2e9748afe0511cbc2a594afb46234348676c3ce1da565c30801d2878e65ea2019181315baf2d08b4f60b855049ae6831111fbfc75d4a96bbad06e4a27b3d2b53e7382a212deeb2381a43c888c509bcfccaf188f0be6b366b28b1bae3fe385f65d0695f141174f74553fc1ca7030227b46d79825f801593cc06518085ce7248ddf7ba3228fbd951ab1447f5b7df6142f6efdde24e568ad5c2613313a009818fbe51cf9ac8f6e69a5c5f43717f7dfe6db24ce98c6cf7bb0cc237604ea09865c09bbd0f92067902ff73ef94d199fdb70dc28bfca1ffb3fffa2f7d2ed9cfdce7a80c14c1cb26ca9e1680613a97a0c106368c1e351d2cbafe9e1530b0cb7080ae9960dceb02f8184ff98ec40d5749d49c05cebac702245fcc9dac54a3aa517159f90b580ca5ff42095380016f470630cccdae46b8afb1157f93886306d87efcc11ea96d7738b1effbb76f5d1b295ad313d97d53ad9020780c8b892d50b9ae7c90ad9ae74f0e58f26ca997a5f6d87f13c33168d811e527790c241dcc89b25e79cc67b69174f972d9240c916eea9cac51d6ac5f04b9b9853d90ba314ff11c1a4578ad693bec69d6e88c011a30fdbfeef11f1cab0b3ec39b2619d32e1e747b233aa1596f93e017f92c85cee94b36d0ee04e09d6e397629495daf02117e01b684e6766532466f3e09ae782577055a778fffde13266f591d2c74e726d025b81bec3d3e5953567a9b645bd7b3812974da51f28e7deb47f32f37366ae1189e04b8d0c29e00578876eeb5a91d9c71a16b78d4737b94bcfdb79b1d2b0f83d0958095db3d5625c3c8db44093851ce3e2f6f1d1d9afae8d1c839af2cc3c599d8c0020da7c04aaba73c6c865931f74f14831387c80de7441021615526209d28f80edb08e798721483e1b05fe8814aed5dbd0edc3d5d715e3eff671d370ece2b84e47e7e12ac75cad1478f380bf986c465a3b1534dc89b597420f9fcb055adabd5b269d5fea1beb4501c7cd017b4c57b1c9335d28aac39cb894bc7d414c0aea08df13e50d94f92cbb69f174b5f2d86a1798f0daa2a6cde5c0fdf4fce98792beb905f52733a9b52f56b276830b682888fa6c4343f51d24ec4d063d9e3a3d98e077ec0469dd3fcd1134e3eef7e190b48e3a8f29c9e74a3f2e64d31e38fc0d400c4907cd2e2b8365e0441b262e54734541b9d0bb85f00206a8cbea2c2ce744179912038647b9c89147805d6aa56fae49f1be4b4cdeccc340f2137a3dbb228e15dc9d2cc52e38260aedacedfa86f89e7258d6f2d23e2baa118984a2e89e186c1e111c524844dc616f11b7121fb13974b368f30414916473c088ceeb1c0afd46f682292ffcbcf6cf22789f099730a3597868a0b2f0ab2ea5075ec6c18bcc868c2364f40168086c2679eb084150b10bb49a9801850898eae55e18ef68ad2b3a23ad3784a2e40528ce77e64e02817e0fefa3e9557001266f4fcd31eeaec46a573f9840391277d0800fb197cd7ee096e430020c516716622590b5d7df462311fa48ebb29dd01ace1c016096e602699cb175cabd3df6de8a02f1fbd25425a44bf1b64cfcb4d9aa1d5ef8ec5e09c615c72c044853adeeb5a806d48ad68eacc66ab52120a41f873ba1e7a5ac27c1ec9cf3df08c1132c033a339ee0778ef671ab710a39f9970cdd445a9ec5a706c4ca98ee28aef5feb873c6a1a84e2ffbb25949e51fe76b6758d1a7b04748ffac484ee1621a37fe805e763ff800004d8d7d4867cb200db6e999df202a1468089dfe03d6aad6062a415b22ac68d673057850974c85a7764e77f3e98c3198aec0d09ad47cb0c629317fdaf2ec8689de231102a3ab00519a22b1ceb71997479cfa450c8c034d2f52d83a862e2874dde3d39e30826cdee9675d17ba1d6361b1f39b6b8ee24e1054f63983f5a07c39565388536c9f8b42bc8ed628f4ad779b00a091a7ea318706a63e0ec0a97b71e7cb54924e30c8c2570f581a20c168bf3db937acd0081f5e02072ec452a11a355724d418f223230bbd64089ae1944d8509d47999397d42ae42959fe67d1224e8dc5b6909af29389d9e34ae85b95d799f2886e22da15de5af81b368269dfb1b9546a42095ac6e2b02a7069e84f677a85af8561e150ea9c664e013973f0ea4c61b85ed482c44caf57b0792e03ed5197f0d4977b4c0351b61ca91358fe818db67a581a36d2270dac32d673eb1ae44b71c45677f436746dcbcc79ce9936e24f4af7d17ef36991403c305eda7b24989e08d762e73138331ac6cb8ea7cfa6ec3204bf7a0212e4a80ec46308fa1c5ef5d3ec8b5820f15cdd1bddcd8beac0f13e5444ad81790b47359dc71512c8d1186f9b5c623c02e73d240c76788c33ac3e90045ac287aeb6658eead57dc122b36d12fb80a5e608ea7d5e3b072c97bd39d2b9df9bd6c683414c794a4c4b55424dda2b6b19d3842cfc2a7fa52c352061d0b7e0b0c83148502b4d1c39db94073f8e09800fbb9daaf0d17639f7e85f6b1a257d1da9560c43b024c0dd23ee661435c0b21d601e7c675255097e40107620a3a26aee59fa29f8638a4e90b024e49e8726a6cac0869b54432d5b92ff0eacc932240d107c215afc67d821bb251bd3cadc8b8965c72cc3cfe7891b600d836fcf4cd656509b8dc19459852729bd1b2388936074320e69fe89b17f30a3f51b2623171a6aeeee88899f46f702823d62a287b194516f6f6ee52598c375d5259877df66d3d48b059ef5f978032dad72081055d3284a0bfd0b49e8d9a30776fdbcb2b9f9a20037e70bc89e6ca99a2f088d276efaa013124f9634522406bdee2e0004d68bf5e61d1335ed3eba5c08cee03809486c905d75a962be4693ab0961db1e0a246189912542b8862d6853631ac7323f7b305fc124743c4a5414df146462442962148090134baca280626ad64a04344a2a8c374a80846d35e605d1788b959c5cc525b2467d22a065aa02db9742a5d249a094fa7a975abcaa062f24dd07de161ee6f73ca97fe54a386208eee1cc733126dba6aa2bf5d2ca88af44bfbf00cb173d03001464f2abe04600d8209c49b68bec5a64ba06aa1a9437570952b3b054d8897778aefd1722392e48a9328bfda5e14c97f9449a2d7e1a43874a318b8fcbff6035309533a57884b0c5913b4834a4a394012aeeb6368210e3a3c55ebfb38c7a8a680f07de48d96a54ba33f177769ef6d7928e09381c678db3c3097f38cef1a6347405f0d84d4f4f89289b1b1b55741710701d327347ce5335fb26af4a6dbca7e7b513e48bc868005a60e34a560d5aca43567e1e89ae7773406fc4527584d5f5dc41002f7a99f3c8df74aaf2c7c577ab6eff0315a308d1e4dbd19a26b484059e60f15e8f7b409af131fca6dac8dff5ceea191286f446b256a48376f21ca2c1c9e4760e3dc4405b4f3532b47d30e75b3812a4863a0e86945d1ff27bc81acd37492b6c0cf9a05a74778b14901104b61474feae3a9b441e4f727e256a27a9f59b737c51527376ef8996bdbb335bdced2fd2af50d49253c798949460474630294d9612ca09fdc46e4f67654c5d5380bc84c1076f0bfce5d7550fc0d7f38487a9e46906d196907d9e00ca58357a9ad0a0ff34742e01a2165946693c6f2e79cacb6e0b03c689d726f4714156c9bb66c9c388ee69c592e65a93d731184100fd30c9a1d4e4bdf57e81d46d429285036fb09a388567b1185f6155683157de2fb4e079ca7f9b06c002d110275f3dc0d52afd4ad88cf47012c37ac95cb738bbfa1d38053f5d49a699aa3800279b1641498689e24cf239ba7f071d75c461ade1d1506a1856ccecac09bdd93674605cac8c684e3507182e99a8c3e67d6966038f03b0093e0fd1086179443106feb0b8fa30e46076649dfa045f72add0b81c373efdd390066ab016a6ed14763ddaa85e8dec464a35d72f3cc72f0dce219be69bda3a486d5857dcb018e6afb70f843cd4a3501b65e25b8773c48c1e5da4b6eb66ad6d5acacfec4d5b99a85db3aa8a72a9841f4fb5324e115f99c7c5a3f095b2394e040953219d3bd846247ffaa78fd61b8768f047bb8698a939f426849c00b006a7758aba30cf478d72b76e2f432cd4adf02bb011b3f98354358de1f52d4941084918dd7cbddc51580999edb38941bf131bc66568f73af81a5caca521db5b3b36fac3b1594ba6dc5f894da9a41ef9477452cb64bd91f107f73f38c0e17098640c47186f5db2da5f58d77009e81e2cfda38f30f0ad802e54fc7b9536b05a5da683acbe34a1ca94f993f6d65799a8909c3156a02a0833aa30201624537e414dfc0ee409f5c6b42996403f7010904e7562838c423ba8130f25db44095edac3d71e3ecbd57fece07a0e0bb273f938e979b6b3a345c937e0707ff8d0f65882b9f3035400ca7f13d09a0f0f8d4c732ac2b1fa0e3abe9c68c48e8d0ce60214ec1ad2b11c8a07c3d75eb5c1897a96e563e3eb1bbaf792bf245a68173dac1366a3567a45ee47a94bea2597297072a636a944a3a98c588748e361c3d0f849f2ee4c77908287168a172ab9b745a3dee225b9008e8c4d55d7acf006bd257c64b7d50d2568bd5ea8d5f65689882f135ae8b204f3bf5e5217bf67a0ec16f67d4f029ae7a33c0606b4bba05ccd994fdead933b89d69f322a17db036ff702a56a4137d5289f146798c5cfb5d282dd7697d2c27956b1bba44cb055768d893d90f94a2dd6fc7de969c5ae35f1207fa46811d8acf088dd3bb05ac6eb0be9f9bdd1f95c45a6aad141df657fa32e2a841ed4de472a8e31f518c072feb5b862bcc0c0559f71860f850703f054bf7009cd4132ded7958375bc7c05acdb5926ab5abf95602a37db02837b5b78cf98151e4fdca8e63288b5e0346e774f11972d8e605677f1f6b6a264604742f5a73fe02750671887eb0637b14ece62593c28fa21f33ab5926f3519c7ff8fcd7785d159b33445854a7f2683fdb21d32ff4536a0a75b55d64229f8b82c6fc86fe34b315916f230394147b5fa2896d72c2d79af5e2d49f95d50a74249bae157a300bfce0ee2d20c2a189a5cba6cc807c61adfb21ac09dfea4b63369db387a12f967cea66965a90dc7432b8f7ed692cdd72524650580b81b5cd64e2cb072415f4ed1df63715fa1577a2c05783671bc60ad245d6e0f8ef1cdb8da9c174a4d64e46ce6a2c913ea87e734c2322e06e7fd04477f525c5187159ab229cb7d4b15caba4c13d00b69240312440adcbc08bb3f15136eab2094ff20c08b7944b56b84dfac89cb2798cc36e769bab4d731c8b658499605f871970b0e9b34ad53c402801567470f851756dee3f3e45e189b148e67c1ec131019c0748a3581fa00a0f8067b5a5c9bcc0ceb3984e298531090ec9118cc0c780bfed30f1a0518134e01340f023b05f8f4b327e1beccc639c5300b2a82b81a1b593b8f6c0c6dc332da2eb80fe132eabc49f392a005360479eb722786b7975e80d20148b048f661685ac2e27ed4bb31d3383d1c3d37b4cb0ae64eb291cc14befa371afc4a5445c261f24a5888366a4a00dadce40ea00dd41774dca6ba8f89c05f0d1023f9a09e4a0b5f166d603e7f48e5e7c0657859347789a3521c1451bad342711a4007629676da7485857d734fda7f45399ebaf10bfa067d8a3f3e9f07d19a43c2a04dcdcea5cb07750242b7f977a976338dcfc9da18fa3aaa493a9a15b904b3b8a68143355074f56cc887c5fa12850513ec24a73013570a2100b534ac224629af4b2a6f7cf183a5b3a0e50a23463f942c69bd60a2906d8c18539b3d468c0ae9508e11235df3df14c6eb0dada9018c18ff50a554598ff858a70c0dfec08871bc0d89715b9cc4381014a44eae8ae47552aae950f6077bdbc4c8aaf7f1f3e48d3a1623d76798fdeb103761d8c89a47a667b589c70840bca3d2a2f0078641602783eae2abb7e13f7d8b22900d975b8d7ad5af7bfa3ac6be4b6d626c1379a0492bc817d018d69bba4d8c1fd592fca89fbdc47f280e02b92dc49cc8010775df87441d6e3e4e3680f0892f0f6a7a9ed29afa4a8eb0b638b0fd675f95bf715a2b410fff14a2ec495d38e86c64d5a12926215590069235a547e3334701a9ba16574511da62c7914508497532642a7b0752437618a9972a30f7dc31eb6d84a5f7be1e0f9a2f5bd0804d4495ad527ee0cef5530d008207eaa7aa5cbf61341159614689200d13ba8d2e8a067e5d7c8602b6f3006ac2867654c8c41af2fbf1f218b50ab3744274f3067e477b70337942e8dcbdcae3004e1c853e84275c6f5928d0580bdb81f7e75988425d007481767b6d41761d9487e576665b9fb87f97dcfa4e5d017901c80354ca1f2d1e93dda8ea4e4884593b8750ce2a5a67ef61ae186f317947099818334df9e7f3b2e4cc7ebfd36f0635f8b89f6a70e178deda5c617c62bba22ecb44652e56babaffc27548c0ef09c826aad02dda4ff62205fc6dc90e025c4cb740021ff0161a82bd3996856a6bc497c32815c46289c56a666fa65abbd201f0401632553c1d2e99436aed5fa76fd80d0e16d541f64796e645ed00764e4899ee7d3ef965cede8f4c40332abc69c45d0d93cd1859165e54b7ee15fb041ad58c608b2b5f96423945ee7b8d18cb030294068a1da7fd4d16f5f263b5b48394df866031b74f4a6c4ce22c7950c5cbe84a60f696ef29693c05db3ee361817c9aa7572cf54591eea1df9785d9f234772a30d45d1cabd2f98e84614a6b9c31413b8d8c42841bdef96141af31ef49f8b6299e82f29d575f15493e9f1b9b25405147b71373965a33b38400916e24a9b33181e6aed49812b8d82e1c07b99215615ee945466c8dcdb5fd031ee49185918b5a950bf9f4c6ec7334e39c1aefba425c8694777be2c7c9c6732931297f0a16b6e37cd3308ca0e14642204598a537336d87228a9c4526a0cbbc03fdefde8c50d2af79534a259d22c440212d61cbb5673d93a3b56290c3002e1b2d59292831003c1afb97be70e291e021a5e9adee954d7f2c79ac761f65be705fe7be8ac38b963629d5ccb6e744910c3fee494bb0b951be91ab28cf733d95d4b774a84621d4f087ee975f9a67cb86a6767c3affb2ae1ce378119181a53aac8333ad30848f9f711c1f76811ee200567a57ea8094812c7be65059b9004eb1e8244838884244a239d3e5648ccbb261beb20b87069fd4cabd96ba47e6e6ca197831a01707848680e1246b9d1c90bb2209e7ae74f07dd8f70a778f33e37cbfb456b55b70880634ffff26c23008d2c246f66054644bdbbe5056682c8aff9c08e1e2502b32e3f64052f086e64c3deaf2104a5b12cb7dedd1b479b8ffdb0b8cf0f878727df14c00a0b5a6258a1a6ed9452e7f90ceff5f194200d6dcf28fe2430d951cf5eeff19f0d226128565e0d3d7c45650270c17e37fe20866c4f626b07d79bc9f2e752d461bbd6fc2f5393867905c3193d3fd5557c553d885e47716274d20f9384a0f93a5cf67508ff73063c2f9f7cfbcf4f42e1bd5e7406659e04c6b9d100ddd6838cd53b8207268aaf2e393a0185e416ff46ae99d282aaccccd67ff0c36f669c632787f075a898ee966349400c003ad692c45a2eb1dc5e2e20bcb295459264e53747be1fd414454ab55cbdfdb876c731421a0790b6f68d8dfbaf9905e46a3c79f3e03956031f3efeec213079d7ace77530017834ecd712221d5cfa302c626ba732714903a87eb98a638eaa847ac420effa4c00641ad18b187553aacee0761c3111596c6b09e15326cf6226860984e100621f00ac6a256a3fe816c391c2c7ae1bde71542ec99384a1396107a37f419af044eb6c5b553852e2ca83e5e1623b765a9ea62c3fdeb531d4a82bb412f43b3f7f2304c3081a55d3359f4aca2e1be699a26018275daa8b82bd7e8491b10ae33f9696b5b2c97406b6e29b741255d65dab21d0aeee60240102541b7d79a12c698fb264cbcfc328178852e06e26e2368db84bd96c8ca997cda22f14b412084cf647c12e0227ceee7d22062e87e043f8722c0864de5c897edfc1258c3ddd40c981e13dbc3b6baa3fad64344de0290bb228181087c6326dd51cd0087e669f91d6d46046cf350182c6e50e5a7dd21f060ae8686b17b60de3b78cbe7df7c23bc615a64c94b10928a5206806682c3eb961bdd4bd8d2773dda60a7b7d0d05cd6640bffd069e4db5d765cc27edeea0a2b7fb5e4d13902cc202f1870a7d7a2786c0fbe9427a339768d5cd6ee6a5218b1b1ff0e6497df21e4c435b3cecdad77826303e7b6a3ff090cefdb108a5e3daa254d70644f5467f720ceb82a9035b27ad47f0f65e2d111341e6032fc9f61690c0c83d2a5a63c1cbe5a0c42a1b2709578fd08608c1b527bef00d61afba2b10beebb173e5a0a36654a6c15ee43df807326a95591ec8555f2e1aa820821523eb0ad7953d26fbe8ca2b245a251ad00f342be7eb5c73591f8015f031113aac4bdac8a202a89cfd0404a6a4014673c7a0b6c481691ab06ae56dc1d3c87286857822e0ecb453d07823f5c13f3bc6937a1840505180f6a814c2c339e8eb71801fb37c14766281cb2feba0ff59fe5638a80a279915dcccccb972fbd9a1404ce4ed34eb7ea3697fa13df9fb33f5cbdc260be3c64c670e503cb37b7ade7a912175dd6284379c348c74e7eef5a2ba5a96934da0296dac6200215b0ae7dc34625c23ebc3e84a60a42a3b6fe96002df9fca4c0c03294910ea9b94c4dc5680ccfca5ba38986a93116a1c34f35653813452aa5e5a73b3734daccdbaa76816a9d9e6b36a663b487e40172082562599e26052cd91cfa8a2f4830a3b2c59e65adbdb99b99f8b4c8c74a8796bf22ac03e6a62931e9f453a37e0f495d08cb0639424532cc6f1bb4e5b273bc75195441f4c5af20db1589df6c0317ef12a940bb40c03177f2e2ce301f7a3876e8fafa62afc861a4e97401bbbc0949000084b70049a727b50ff3afb43f0fa588c3f1bb54211ae42e9e3954ed64665c2d51b6d7869272333ee61b44d3c2be97dbe516429f0c4ba5e5b110e33752cdf232a9fb223ce6a54e94f413095b7906fcefb7501ad5800b7174423f37de428cd258a544a53c05af5addb4fa8f7fe4acfbe784e81a06f9d2a61e70e0bf3b42709e0c811924a8743b2043206fd920d7d290991dda0c985f8fbfe732dbdff1ae7bff461311b1e7cb11b344958b662dc873337f51f484df992f695bc788fc14e7f915542d786f4eff10fca8be60dd489e66a3795fd7e64efcc062cf3872039a06af35beafafc3e631762ce9c9a36960458f27daa619e0e0b5bd6886c48dba5060aa84bc97b54cd73a741d2a67975eec6f53997aab15526559f7febec8cc5365c863bc657e942bc360aa6a91b5986f62bbff13316546d2cf8ce875c3bd51751e0ed24da02619d64e3aad8b5f37b9ff31b0df3a00f171da50d2461fa68341a28142ad21684d460c31024d7fb03f3fcadf4f7f464fd46dfcb917c3ca7c5a8c97521ed0e4c59801fc525ac66b2446bb9709665f68156d36d3e0e40d61844f6b5a9b7ad86aac488c9d0c272efd960a54e4b049610dafcfcce2ba8e363d1968231f000bc89aa50c3bc3802e4afa9ab1b229837b1bdfe2e4295cb300f01ce75c8e405a3c3e92905a3237ae41b4000e7d2bc231dd4197abdbbb1d5b0eeba3a453a7220354bd33b469bf61a7a2fd5aa7dd44e834d0306ae25f2780b890cc084beb31b3618d14caf8994bd5a2c90e0b53a3aa4fee56344dc969b94114e458f69ceb0b37a205990bc0ea098951c60a2a21c82eba70e5d222f388d116b10833d0747e08d0a724e8f07171d85cd89d6a4a304c33dc556009c309273c2f79e2694ab1b00c6aad166bcbcbeb0290d970ab4d4f68fa630d6f3541671f66240db8daf76cb752dcd1c9d3b267131a75097a01062909d77c16326673f23e0bce931278a43a15e1a0635aacb30fe6d3c3452d377744c965e014bd28a35520d61fad044645951e7457cf266e828a32b9c8b11251d88ad409991bd0e17e766a5aa3d2cf44181f6679a8d1b09f453aba912dcf5cbf626f891fb2e168b1acc75adae2f910689b1287f877c6e08e3b1c8baaa32bd4800d791b2ac2e32a0992c10fafcd2d6fd0553149026f9c42a8ba2563d12620a96c28828715362d194e19d59e4e957301aab16925e62568a480f9c09b2c146dd5bdbfbd5eeccbe634958dc1fa171cd85ae78f4881e686495e5e1a4cd88627bb34ad26eef36b52fe765b7fbdae1a16133d7cdf9118165283ccb859b423e44d1c7f5842716bb1c5741d8e63db09faed24b1923040ec4518c05be8a9bb29372bce51fc0884ee9c0349a19fcbe51aeac92b67ca48c7db692ea7bfda258b33a51a8af1a8243396ec7796003867b300299c99f985dae0bd1ba25a976c7a41a26b756419987e579f062737b458e4014735a5305f94d469e2f0e671febd4eb2a2eb2bd6d61fd0329bd8ffc14a60b12c5bcbbcebb6435bdeeb031aaaf34425d92b21b329c1bca15d12f6c7bd8be0c8ff7ebdf3d2350a8a934c7a1ffc00e804c571aa253971237283d5f31e360b6fe0310afcae8b184a97aa708db2f685905f4b485cde70fc5c91676bf9759fb039bcdf6a9dd31413d690626184f854d0062e53d1b0269237eaee626092788aa16880a26582444b511664fa829f38fd76ded72a30a9a4ce061dc7554e006dd26e2bb7a1758246eafe94526f82b8ffbbb1edfcd8f272c7918a25555cd98a16d106c2c157811a3a3c5209e372c81b09f4281ce6d1e82daeca00cc15401682a26fb95d089a6c09e1f6bb931c1afcd33d6d776f65877eedba29e59e357b1778b60f9158125e86b375c970f8c346d7f58662bfa80530d06e6c84cf04d85a6487e4e7033ab09bfa0071473fd14559163a6ea9483f34bc6c2b27de714f196caf8cee193fcc4d768f6602ef94f55fb242e6887bcbd5b08faf42ea249237c1a236314f5613fef5cfb721666a2506faaeb799569645e1e36d8623b6df6b0cecd04db32b6190d748a1bcc6d1babc2258e26aeb7d83c8b389c0739975cd091288208f5603363e42e004ad3a4311ecd33766994d5f203afb5a70a284571eb24c0a7854877c434c845d3648da490686eaae8c550651e1d9b00e2ead2080f19ef23ee5f0eb4389a2b5c30ff12d82ec629a1aee6ebe6d446c273c8305b2df3b98a3a5defa7b7895f2a4ac3dce658052344c0ab469c8e4122f50a5d24badceda4f91dd29d6b6e133c19a4ddb9110220fd0835de80f9d7a12ef7ce24ee997650bf271c06ba80c29125c721ca0a9932b86e08e48c916d3d5134a32dd5e00c9656b07bd4e1012255aaebece928993ad85f535cfb527fd6b54337ea15b6d69b5c8814d73a5fbba19c28627b1550d3451c2e8066820f768b5f3efe221d0cfa0ede5681edb85a99f26811075a26fc74236d320399bfc6a5c4849d8a575dabe81f120179911ad65d8274f828c1819b8891e2f7beed7bbad4180e61a98fe39ff48a3a07ac9c7406c8bc16ba488645b280fc83f51cedba142c2285eebfad5424342ee7963f42c7fefee0709549c4b205ae9e755c92ea289cc05d963c7317894d6b5211cd1b41f5de30bfb2a1c14a1e534d5ab77d69e65e2134ff26ec5234422ec4439c7cbc0e7b2c4a59ebea27939a402a69e4bc9a82edb531390eeacc4a6ab7f74bfe562d5fabbe8523d62d95f06fb8bd9942a8970fa89b72fdd10222dad8e028501131993707ff073df5cdc8a6c45a8537833672ff2199b153cc8f5cb6645ac55d08fdeefadc215209e3ea6191b82f4b3aebadd2fa4b4a8ba394fbacfe86949d481ee792f62c8186df952b873a03ceb9353da5305057a11a11b8d3ddddd59cac424782ba904ae4d17b2f3e8862e4a52a0d167a00cc9343bbff922459db2925535c0171bb2958d2947faf4c170ff4a879ab47f5f8a0727996f7a8a4361b046d82d984fd75073644f48f55f48c2a56719a842a4cc4d6033d57927c1ec507bea8badc99e3f6896ae3f5bba03fffcad3bc2b464cfb3e557754b7773a78f17bca6948c32a2c856440cf58be9b6cff706b9fff1329bdf00c1d6d957a2348891018d7d6bf75b21f25c70bf25d5adc2bdba5272d0cca8caa69dde88b4072337e87809a45a66964a3b9d50384a25688576d1858efd6ff420e914c015035cd3db7ffa017c3cdf518e9c89cd508b58a048654144bff2189b5eae887f480c14be8a407483c13799b8e628a17f8d1b0608100e247c9ea325010330f32ef3c74c25c602338015073d705e01c9cf4f6ca93065df67334f4d860f437ce426d41537fafc992cceafa5fc251e507315caeafc39183c4f005f2e7db9518f6f53ed9c586e628fd1b50a1d6b0b83bfef35cffb6ed4bf2ee14132d91309abbb27f160f71022e6e8289f3bf03f411ca54e94a3dcde5a3a976cb82a3aaf1dd8b816ed4ba437b140a6c2ed2922813fae6e66ad0e7d83b29ed5b2c7a80f310f6fc15683817cc481f50d32276d639801afb2a2f79f54bace59853b9a2a8ef7dd94eab230354c27755eb8ab3e5e26510c5607ece4d4181fe85d9c52ac2d4987f4515f3410e8d1f4cfe8edc3b3b72e50ea889e55a722855a471c3c1417521b3052ad7c765e552042a7ab720784b237104781b4627eb091dffb29f37148b5de1b45c6bcb40d79e656cee7e879b8bc276119e4501581d0dcd92c66717ae1104d156c28c32f62d826d099100ab5909e6ede692a53d61821410f0b1dcedd235a469336c9c52def768f4661c5d2a4aa81a24265480f2461c32e08fbbbb5071d680ea976f934da94146621ba10cd04b7070f85051d74804901e8d01b0e6d41337240498239b005f2c1ae114b0d38955d3848a4674707c1e4526d12b35eb27f7dc3883e8ed382e6245f9faab7d8c7969c8cacdbefd6c36db55d04abc2361d9472634030c2306da75277c9b499b4bb0ad6c8229547ef1c9ba98c444c62744578dc73b50b9d6961b1bd674f5751f4f8afb3e510403334c56b4c2e30198d75a81d3561d2485dfc3c8bed86ee206f03603c5e6942f6a68ce148949e0e4f579562fc6f2ba0ad3875dd3e5d6b85c93596e3d4b6c6c3676b668a35ee11a7f829cd98a69b87b102b0613a7a6ff26adfa0e127c7b772d3c62c84e829c786eb35950720146c4081b7c38bf02125579dc20f11f2fd0782bf7334af856e400916173fb71336a2b15f6631697ae7dc288b40508312ea47f5751a644aab44808c6fcbb2dcc0df508f5bfe42aa145dc1441a8e1b41dacbaffcdfd5fe1ce5af93ac5a0edc92655c944e6dc0e39115967ed4795aa7b7082125e88aaab28fe746c1809598e84ec3f33e4e38e3286d526a09f6e04eeb1f1edf6d0b15b513678735d112fdfd746665f550dee8bd7ac26e4e1171f3a3dd77df2db45d6ba48db8bac8acf530913d633070ceb13f439aa81a600caa36b65f70f6a1baa667e4a133446eaf2daa950553fc2f957592d56002a336410556e3c1a8b5566758a207acaf7886de0d693a44d43b72ca172d80898dfabdde76c51dbc1151539eea6b0e4eab218cbd5c86374e1e0581ef9c82e654084e87c42eb0496904e53fb44ae4259ea228090c1fb50e5937ed54a373cc791c0e612c85b320715b69260534e9e9d5a504c74d81f72e4c30654cacee3c3ba46a2b644095ae01e08393cb1664ac2ecc6a028a623c46275be0fab12fd6c38c256f6b3fb763789a36383e3f81013a50fe19dd6466f9cb0d37790fe3727472471c12a83f3e765ed28f335a593e0ae010017b8e088f05451f650dea2ad6b16815d1b28d00453ba566bbbefe7b528019087997978a8606d117e6ec573861dbb821476ca28327a0f235918f43736f0890e09841c0feab738e88bbe51afa352b6ca4986679ffe1dd4a336e8cc166399e9cce70053b7977ea71deb5f485785c6d782f7b5689c872cbc9cf9c77d0892229ab46db00ca7087dd3fa346d5fdd156bf33fffda644bd03cfdbafb200a45c6a8c446acd9e74afebf962c817342c051f3cd1dd995e17a8bca45d6725c5b46f0a08062c323d00e0e42d3d2effdc035ecd53cfd1caf6cdb47f0e12e20092ccc278a05fcd713c8cef8f2b8e7af9b8c62bcfbe6f36688c292e0e13f1c64b5b551c568eacee434ebe65e10f406a3df08cd12f8e23599caab5aca09639f3479519f00bec7c549ad82d05d9c226ea15badf6e1c41a6b524a00e5d07d0853573e02a373d17309e453f698d98eb303cab19fd4bd42711d809f68cd51898032cc8fe9848b5fdce3994045c3de6306adfa2cce30c63b5e0e59f006ffbf949bd2b4a7b594dca6ab33457d8d8e5675ac48cb79075edfce43a340a8b68c071c624543365527d4e465877331a5002090e9844531982789ebfe1ed355f0888fab495e1cecfa374de9a756e0ae32c26bafe9c4322dd731403ba4012807ec00b9ac060633c28c76659e553d96654c8fddf8a1535b5fcbcf4348e8cbf6bbe55d710efb403e2f3d1efa66238858ea3b9778a824cd213234f3888b70f90a0a4595b19e71b148fd9e11553fd3c0717ea1d0842fdbeb6798e3ba7564481b4e75d717e5c35dca228d133d2bcac12f073b4ecb796b9c10b78d499bc78e41a7afe89022d867406517c423c3366c3747b7ed358dd7fd1a03bf8832deae84a32cd22a8bad2a59b416abc15697b48433de351d5d01c2058b0b2a3010907241a4355239060d045dbbe692866e84f32fdce3daca3fac7a24192c67d77cf1f72f3538e86b8fd99a50373a790a6a254a116cc68d369ba7b4a605fe9c98c0d21502c2bf6bd0c201076d3e7be7326f3f51d1403ef6542c9680ad945b06389a74c88b65d2a3d159674c74e3c0e20f7515a46c3d07979e0e9bf7ff7445403c2aa46126a5910857f2cfae00f6b6528ae959bc7ac31c51002d4f002bacf0b37e2f61728c3759c6b0653e94085c69a65c90db917df6a695437103ea68c17b69e9d5aa6f0b5a7d54daef5bfa9d0c2e40a0c6102c85d2410c8a2389fdfbded712f800ae0d69712c179a3cb8c8d9f6c64566e7db92eb08ddd7d96b595c60e5d73d1ac4d69afa2b396da358c72746602157c247d504ac299e10c9d7b8eebfa68badbab691f15d2127d3e8fa887bc79c94fa08894b1172e4085c4570a24bcd70a7b387b62b2cceabe8d370d3dc59ea9d73d6571ee810d824f88c1d43383a321c0fa88a617e19018ccb9039543844c2e1b6f11160c7b29711d5ad97bd9d2a47817ae310eff6184b0ca7421dca4ce514e54f0203c5f3197f54138fd2f97bb01d5edcfcf039b6c3f10f8f144267ba92e188977a4ec219708d56f8ff7ffc0f57cd56cb28320147e34721f450a10d58760f2d7879cce88d6233a28f78308c3c56e7c78c5833bfc418a19dbe3247eb4f2b48b132a906e85e55a60077d4202af2f30992303212043684fa9490b008c4b0316c625910ef451e5fe23a57edd4596381dd9922e6d7a1fae90b807860424e1dd168bf202fcf0268e5bf85068cac9d7b769ea62995e26b469698ddeb6caab753c3a202d7aeacc4a6d65e7e68532c247b140a16d590923d5ee0beb68f8c4872d6210fa712a095aae6015f951dd3b6a3f004edd7f47cd2c5f154ecf5bbc5438f1c93331b365fe10a52fb4dd5ca07866693aa72d4ccf7e02dcf2b1e0a4ac918bd480dc64ed19959879b5a8bc78aa68e380a77356cf63ee3c3eac5146fe63e88ea4647a7bbb6b12fd20365bd67537ed7bb788266c5f2b834d33d78f413b9b0b7a62a7e3886b79998ab12f74656bc90c4b764adac06f6d15dadb044398c1b8bd19a70a3a3199c6d0939d9bd2d282fccb39c64144e5dcdccea73a479892e18416bdf97fd0b6a77bfffc544f54490b8a93c1b9e0a77f277126c0576dbcd2edee189f70ff822bfe4048b04687f8964d00a31989a683484216f81bb429dca1fb47a799c425e563d2cfa0be69ffccc73998ef71d73a352a3aaa3fdeb6baca0760580f202303bc3a668c22ef0bd30dc48ffd1a19bf1b91bd14810e8fe35793e569f2665d049d15cb7683d4dc688091d96d0a94cb8029c432b1568a916a3dca8efe7b32b871b39662dd5c173501c7c7ddc76eb80f0946464d9f2a054e50cfe3a349432d6fbc60ab758c5212dbf3a7711c42af25feba2da7ccecfded4d7aadca2999b51491b522bf6681ea1f888469a27a627954d08e5ac59a8d8f4855c8315e2a0d2e4985742a10de4a733b192a658921cdb6a0776533373b54c96659b02a004527042a5e9bb48560b1557c17b8d6e2ea730d89236fb5c93ad6d673fd3e08eff09994cb2b4b79460063cc53e9c4aa4e99557ca9680d379ef4065535e9d4aa8a5bace80e602bea97b4352e794104b5c458cce22d42f2f4c36731ea9d91615cc52c1f0c32bd8aa698d975da8aa5a07e03513970d15eda3b1156f4d4664d427becc542997b086daf47bdd95e0c0b164f5bce0a76e4ea5020d7fc03dc955bf2f1c04818c7de5bae495f347774d0e5af8c28dc1763882a123fd5ca48df27c9602d25b5231fa719f70c5760b262b0b9a9e21234e065cc869c6e7f5fb39354e7d1ef76a2365dc0c027a1c4da064e172d320a46d5dec06365904f45d0d91190f78d764c7092499937f75c44ff86c49654a55482b6ba677bcf8bdf786aad422eb508e2abbcc1a0ae69f83c6b72d810471b83710c2a6979ce32acb2764bd8dfef6d357cc41ab9925b8a4a4a76b898e2dc3561dd0b86622c0b545e883337f66241454d407355439978fc063c1642ceb44b286a1813e5017ad8102ea8064f03f391b5f12d85a8e7c8742c90ab74962c163310bb84aefc56a6235921793e17f4bc54a987c88a72826eed0bc119c74ca54bb2cb1d6395b141c013a894c0e308c4a0b1a27104ab6ee1a7ad98f897cd4fbe6c71584cb96d56ed1a79433b096ba778d71e4393343769e878158d9037ced685636356b9fba558990639adfdccba92ca136dec840367c80fd772fcbada9823516c1e19dea6b3cd7aa08120b4a7d86a18c8e9bb670ad63d383def1f5ad2a8019167cbe2e585fe1eb81358f256794ccd768f6956fa97824144ad94a529aad66af1d5099edf52abaf40b343f83e606f20eede07b75d74f08c6af8fc3ed16c08bba6de0f18382677b0872750bf7581726ce1f51bc09fbb297196972806ef78b2163f10eb90cdff62cfce956904dc1361050100c86c90db0ba07d52a6044d4234585e3208d1fd9161b3f7fd1a9c96b4ccce1dfc6bb70960c9ea67f1af4daa48496c50f6053f53476cf6e569ab4c0cdfe18e4bcbb09454330b03b341ae732a421e1e581639121ff02558644e9d8811459f9c5a7ec14bae4533b6f74a5724757e5383654e868ad0a9f50cb19439180c6d8d452834f5affd5b2b9b555b5bf0df65014dfb9f86392bec639c1a55284f630664273a68f815b80b6a48339da3b09d01716789d5115561155cca935ffdb01c95d7aff27b83fafb5c8a65a473b258e88cf6e38a644a93d74aba12445eecef94e2430fee46d91d7ebad7e8f4c8b42469ea03e38991540b936ddb6263ff35c41ed139c7d5c6d9d118af8c38a3592483dea88af22cd051144504937bb60b6850a632f0e72bed7001a30571e7079d1a84c38242d0129453d9c4b07bbde0575472c09dd6c6ebfa0ab9c7dc389cb2f056ff03b002cf8219a8d331a986cff58de54bc8891472996936bf9c9e0e97bea3e8e49b20b68a83d964a1a37e08ed514f53cb9024651246a0772e350aa392b5699833d122a6cab0445004ae18db8ba8f51c61239a115a44829360b4f29e501a25306e086e76075e0d96a7894b6d60eadaeb2a481faabf34a0d36a28aa859f7f6c0ec674e5dbe01d8a6c5eb573daa00c38c88a991a928c1fc701d82d872228f1f99787a751dddb4547e9496464b98204fa7024f14f66ac93afe96087ab54af5365d68278870431c29b218a35a49a3accd665aadfd708c5806002d59abbbd0be1dcadd94df45a33a578114789a16b035faa66fe35fbad2c06db290b8dca77c8fe0ccc85a8c90aefe0b5348219806b9f98e35c1f2cd0615cadd2f2657dc8519c839620075a78d1f0fdcf1349033b3fca6462291fb7f752b7ed157841166f7b6555714358da05b2852fa22cb60e74b3d73d82dbe9ccf35e6b3c40eeea0d1f9d2e364433a1ecff653a78af7b4abdc4bfaaecc3a506f9fd7555d16f8b6bbc6751c1c3951feafa585d5bbfefa719b91bb8c347945265e8a1d24f1d1c0d208a62956e09875fd9478312cd5c376122201c774fca7ae661432049228f79f845349c497644e2a46181dd938ed45f7b768e0dc01f5ce4c23e261c056fd26397de6200e39019a52583ba9ee005b42711369cb88a9b7351c119bdeb59f6d1d416f40c56e10fc070eea895d0e193178cabee792c99031dc0f8e505317f4a27736f0ae9d19bf17b1d4981c8eb3ceca454f28be342434ab8c4918e51cbc2f320f5ffac507f45de7fd8a5a188402dfa432f8d3379fdacd034a6cc40bb03d31cbee8fe9c8b42cde7da034b95cf0a3146faa306052f85eaf956a803d71e661e02a0d08d0a0fd83fb4821bfeb5f1cfe93e169aef75c6e598388dec26f790560f0daefbb0e69a3b673e3d916df07819ce2490e4e7664123db125d4f96b568c30e8912a4508f9e5674edc8b95881c5bc1bdc5cff3b914c0a3a45e21dd0d5c215544f61b9a0298c7fc01543284d43803761009b4c3a19531b2eaf66ad7b31e05857d12897340208fe67245fa520bbd8109c37428048c262d84facaa3f7f9e4e4ceb365823786972f5c6862aad2914972840d8d96aeb9ba6d5a7a1bff74a0fcc9c2242788ee868b0fb1f0a0e50ec418056c1f1002f5558381e0b121fcfe13f226ace9fb697b1b1fd272395477d9445ffbb91363804c663598edbe6ce1885637cb93004b428f080c76e6c5323ba82dac1b679bf924452d6797f27081ae37360e740aba009682aca5b6bf48f4d7062d820f90b8dda622a4422a000f44d813040cf8de33e28300a5d4133a0ebd42232fa457e815c14a4fde5c4526aacaeae4b8d38d3c7ca83c64d8dbbff06018e3f2185ce2d843cc3cd0b058a97f5a2c03ce6321664335dcf3c2d28e43db18750abc151c30ada01470e81d8943a3b01922b22dbba7a24a96a9006791d96816984840b988116945d4738f7315689a0eba21690d6d4c3c8aac0a3ad12801a781d46d85eaa0af016f02802a1f3f12469415fc54146a433fb2c24892b18fc880fe64dbc672600b01007942fd49bd607617aed32d783030ba94224dc0ea9a5b939730f74f78462a0beda08ce3b4f30b0603120f10e4610dc4614236c80015cee2f4ae0626322d13820c7d18105e0f4560df56f5571d69f84289e7cc4c5f24007d5bbeb49d9886239760f9943a82a334853ecd722c09416efa8d52233432887b68c8ea2058efb1d2282e5ac811f3401785b89c14d281a20f76c303e25b3d414c28375b27929d3199301133959290203b88bb95f610ef31e7f580afe76d210219fe887f8d7015e9ca5cf41e180d6edd04f03e2d1428b6fa2ffe6d39aa5d48803d44a6aab1220c2a0079e901116bac81ae71a2363372ee7090186959b453eb36bb69073d1bada5234721215ba07684462ef68e4378f9621a2f6bcb7ce14b2ccb86147e298114b4b16df803f3e00c832c4c2659841b5f92d3ec0e010ee1606a86967506a0389202389d7e214840ea4f01807e14300f4628925a1bb536789019e96035b24e17de9442e90fd121e0720e8b69fc25758bb845370a6be7c4cc4b66c7ff0e525da22706b102e6fb3e5c7e0d453bd7fff455fd2dce42e0977b56518293ae2aaf1ab76e5b5271e149564aea1a946affe7c6ddc54c1bcd8f4e91e1292d3948e92de399082b83f15229bbb36e9aa9dde353d0f25c2ec6eb242cbceea1075a09f1c30eda5847684b210573ca00195dd5f6f811a676e89ecc7b36c86962ce9dd9812a69db1e0179293ffe6718c2b0fe90cfbe9597699288e291507fb9714807ccc77342d59131fc56c91888a900ab8001ddd1f96d80e05e05f867b5b71f9fa0a42304be186dcf727fae14e274054d18f8a7c5e89f79db05c7bbc08e5c4b0a42e2690569700f862083fedb2e3bee7505a314f510d6513762d8390fa2e9529d2946e327c042f184874a443aaafb746bf7ee5265992fdaf6b0e6e90794961723d0823292db22120110e72b797a9b61c2046df65f69f4f28a744c48197dbac1dc95051ae21af3bcb160fd84c8ff23c20bb86df4d8eae3f658b9d1f64bdeecf151fbf33ba2005780ab64ec449d3732bb1afb5e445b14b1e26c02a9002d7513d347f84ba613ae0239d84c139433ce0a94c1c462c15b4feb1d5ec4ea68cdca8ab1247f594292006c27015c12c24d071014a112503d782408a69c5310f1890048ffc60984556f17d589944406962acf36b8c13d265190feac2b64fcb48804db9c72bd166b8f6e89292e8e52f2be8851df75b71532ac6a504ae3bb67dff70f9fadf6395587f0b8645c7c073d73e0eefd145eb11063f78682ea05ad02aca35d86a4651ecfbd0836d7bec6d327fb77d9e90f897b07647a8a5f8f56b4534b59fe99387a8b333f199159e356176c2788b0385bde69d3474c12f7d9ed5feaa22ff818ca73316ae97d68c11d1d9c65f02509b67f390b0711c40a8d079f61640592b693d52b8806c4f2e433662e790c9071c3fd9063a7daa2bce3ce3613bca6fcf217b2ccb9fcd9f3356eafb96d0678397fd114c61bcc9e4a316dd6987793a48a4e1d49077ae64fa3fd855cc7c543f4908ed2432227d6c663a8eb0479233879813e90cfd07ea2d5242be4205ee02a031a7f822a4ffbfad8739210bb0f106b843f98e8d0adbb80607976033170fcee89882f89011557d4e829246a005ece1b40a66f866ce071c8f1b22d03e5ed135b1c03905e31bddfc14d4cf9222586f179255b52b10c2dcc77ae001efdf8aa21eadc39e344804d2d639b4b5618a740d6d66bf98e94e1d83c1dde143d985005174f19b66525ebdecb833385e0695ee8cb17df66cd1a36c184aad57876d0c7adcd3db83134be78f11eaae99b23dc8b04ee539d86387f8bad5d54071527ff4205419919c3bfcb4377a1e051e2d8a2d52a17c56a1c8e8e065ed6b361c2d8ff7a603e1caa699362f14afdd2332cb3d07d2de620d7dfe65e86c484c1616a26cfad38c7ab1cae87fa33d2b581dd945f8df1c19ce14c2e1dce763ce592e2e2a57e6b0b6e131c1948d301efe7d85b10e9f837753d88c97639e262cc53b149804da8c77af55209e51493a6d38387a16a9c49c18859e439c9f5da63722f068cd9384dee8ec3d701778f7c082f5e30ec4a008e4544a409eae3b816f337e2aafc8f59a8235d787c2de4cecfdeae36f8b6db7460821841042b6945b06e40afc0aac0a34f2b479a39f4ef2db3c7597a7ee93de0c7778bae79da0a84c14411abdeb368f06ce266eaa77f20ebfd5f4d35345481aec5b47705dba8f2057ee74444f474169e2a6fb08081338d5a6eb88a6060a6dd6c0ca71b4899bee3ad1140f4a03ef7da334dda513dbe744e5ce5d727e4a949e4925e4e573b49cd8688e2e6747374cd20fe2544cbe43c9b6e94d544b0602bf0994eedd7b8ebe4cdb3cdd9b905ae76aba9aee51ebeb99bcc34963a24160ddbe3dc51dfb76d34c71df6e42a14066e88c77f8eddf0d4edd6890aedb8ccca91ba5397d44bfd34d13e25428214e1da17870479dbd9994a35e3a693bc93b0a35b36ff373a2a666b8a79c7b4af6d139cab13781d2b75bb6134d995bb9d24ba32ec000aaf0dbb9244e2aa434dbb6e73e6862c2794a944efa3625fd9ca8875e12de3625073d25484948ce9b70d4cdcf89badbf7a40994e8764b7701864f851f69dd1c24fc6ebfbe266e386edbe8428f7ecccd6d935266a5b9ddb2f798a841a0a7e383d5d3b15d6e3978e3e4dc4673bb9ca3f99dfec97be766ea2453f2f43deaa7731fcdd4e82897df66eae4a66fe7503325e5a8c9715fee0b2b371a8dee29513a09e5fb94a3dc3453a79b3e3a2767f79494d96df705026b776f7e27540993a74e2f9df4ef44952891ee4d58b7ed26b3f4f5942849ba3be241001b58b773f347d74e0e127e39acebe220617c36eb35735221e36c960af3c8538a6ea8ee9f8afc67430a51fac743dd6fe92bc4f6207e2015a9fc111695ef0d218b2018f1a1f47589b37eb0bb4d56e10e2adf0a20415075a33659eda8052af6db38820d1b358c50a3068d1f1a34568ab0b29222422aa5320415951959cc988112020a95128494141420a0a09cf89c9c9c7e703a99b030994c8c989894ae2895a40fa424f580441af16034f27a3caf2bd275dc0e386ed3c1b66956685a96832cc37080fde506d85fe2e3b1431b2c8e186bb038ba69b038785d6210b23b8c6b8ce720246601b1917202b191a559fa42fdbe20204f0912a1f2332054be843fa87c0bf6c0072b7c50f95e10a00cdcc181fc78877798fff2b27d2b776efbce6cb4bbb45d978871bd260babac8892b5935c82a3216e0bd042956bead0d3a1722e0889d2429d7a6342412d14241424d45fb4105c2124fd059ce274ea20181e781a4987d142ada48b9a8c1e8a42484e87474141113a75a17214a2a2360a4a4fa873fd1b128a484e34228139ddc29dfa2874a8e14f13098aaf42e310af1a9ee210ab847e864e271a8768144a22d4305066a514569894836f70eae9b083708232953e4a36833e948d55f7a99fa63621cf843bdf9d85365885d7521c8516c7e930dbb5ebc032a8d02616706a498c244cb8c217b5eb32e10a41955b1d123e052184f45c6a25957a0e0e6a6e8b1a397081d873d3da35808db91b0483dead95213f9823c44210057b809cab6087c87981522c11173db9f56b719c8ef21356e1672d10f0a78902458565a83c0a2d8e3ed73e9d8278d59dca04023968b92058859f0d56535fa1ec933a6358ed8e794674af2165c1ab20583d3db592659e0d56fb1989b360d59f9a34dd219cfcc32a1f521965945175f00eab9881600e51d01749a8a8d9649f75e147a15837e8043ad6140c1300a12462548e43956351656b48f4e134542daa10dda6917d1499cc7c11a49bdecdd48c570e00730f3d23ac7a3a4767cf098073dd013eabc2eb1f56e137db150a1117c64df6e12cac5f3f39713d6914eb3a39777541c83804df87de8cca3320386cd105188a260abda9f04f126b4ecf90704c5207f945219aab7c3d254e7e5121a9945f873234e0b93b40ce656a0c91f32253e31f96fa3edb950d226a7ce9678355d435ca3ea8c93f1a1dd80745f987cb2208897292c703be55546e63523ae969f617a7abcc7e9f8ce09afa4eae35e690282e33240a2953e3d6ff31aafc07739a0a0b043f355b685df836660fb18a09503280893607693560bbe5b389b546e5a7a3dc3ad1efa60a49a5501ed969f608a8426e64ae3f71d1288cb00c94a1718edbeff5d32c62d10f5cd6657d695c1fb8a81096a1f1cc0127a741f984a2426b54ce330a1d95628413f54423125e35adf96055b90afd6c681c625556370c4754de1fca398e42bcb28947f94793baca51324a93dd4637c3d3a19284572a3448ac2dc4aa215ea1d0fe825547c8acaed014fcca516ed3b5081595dbc4aa9252399cf0eba9501a7895e76024e04cea2a2915157815faa566543e5855a807ba9e7e53a342bf9b6e41bd9da84162158a43294f07ca8977c44d85d426ce38a4291e5c3530e39cd641cf01273f4dabce6020de22087a11387914f874dae51d5ed389b24e37b79ab69accafafd059a87c0929f7b015cce3c3ab2c9290db353224ac5be1d5f5760bdce81321c01e0594d1a142eb3c1d7049e5e1b3382cabeaac8b756d0ef2a24288dcc880e0fa1321b81e0594b9a8102813ff41ab871a060a754e146a110390106fdc8b1ae4cbb10892271698d538213da52e6ca6340bcc46498992919ba9ab08f6d4f5ad50663305700bff92395e805ec4c0d3170f8c143121bb3987320eab3847c59171388773168757cb39bcb2aa4dcc58c5960e0e0ece0d84e0822704090d35d18126145660861e9f1f9e36d0600c60e4e8f44ee328295a4214243404d493f9485e75c7aba59f4dacfb6c0772a9ecec43a1708ec8af95286931703e140a0b9fca5fc1194205848f4d797b051e2e847165a118708a22945bc0850bf75cd0a8f676aceaee64fd5245c05abbfa795390f0f0270b565952c8af7dac6fd6f8fd952672965d87e7aeebba600fccb9aeebfa56096b9aa6d1e993c54cdb8df64ffb64c12af6f9699d664601c91f9f22c8535424b44488751aa28824b78ece0baa4883830caa7bec6b9d8f8b58e80d3eda1be497b14e8c316a6e905f068b9672dd0f5819ebe3a2aa05165454d15d7f88458df4a1b7ef2fa5e92f6d9d697553d1ad0329cdc2b04e6620e3e52f3f9c05c6fac664d98a37680b5754e62e94b0403b6425218cfa2dd1c8470948eab76264d8f5b25d18a10b75e642c10dea10dcc2289c8e4338b977ef14a34755f3457583557c3a9c2f2a316ebc9c26aacfaacb52697e4b5448e3ad13effd2d51b99bfa74ae2dcb6a53844bd41cb57ffa7a3327305aa7ab4ec7e2e9d7e8e4bdb3faa672f37bfdbadb58f5448709e501ebc9737070c61882024d33d3faa37e9f7e36b4d738a41f8d470a29f41e396f5aef094fb0515f333dde9ba6d4e97d93c3d3b947cff3bc9309fd96a84bb477d4a1e97d7a9fcbbcd3bde760082184232cfadefbd0bae9fae9b2688a374dde345da6a79cd25c3f511aec968d552fecddc92dbada6bd04883da741d8d4e3f5847e760c353433a6aef0423770e77d3cf26a7ff41d8a66747f66432bf25aac9bdd9dac8a39f898a3b5934388e06776dc41dbbb8ecdd21ddeca68c9a9ea34dbcb939f8e45d353093120dd2e5a5aecaa8f5114d9d4e6e321d5ed757ee79560d1b2f4d540daaf23e3289a9deb9efc29c468defdad0b29766cc8b6ae4dd847ea8ea9d4bfde23ee3f48bc7c94d26cf831042d3c983d074fab8abfc64eace511bab9a9ea34df344a5fb8cf9e5a8dd51f35ba2768738bc8a302b93627947dc54146a6344bf06013327f504629ec9e9e4dec9c9c910ace2d39c7c85557ce387981c0a9847f4508255acd292c8186fda52da37859dfaf0a77f3656e5e65140280f5815d2701f3d0747194ff4eb9bbc07b1aa77cc33792626263810c73b774bd2e8dd0aaf46348855bd89793abaceb2b12a77cb33827b0d0268aa29c48143da203f556401109225645d7652578b34f0a07e10e7db227952c56c0b1fa7480571b6280c2012149d592a11e8f0e85061c50ff2cbf2613a9a18a411bbb04f405e24d94845e52f9ce9dded4cc476cba7ba47b37569888457f0a24257d7132a1163a7e8de1cd6814a3c1d510c254022e7e414c10e62335428b9bf3ea00f2c7f1a46ae0f288475f94d5eb367b72af938b355f5cf46bfbeaecb929bf2140fef9c3ca21c2279e10f12cdae5c1052ce13efbc54c1c5068010fdb33ef0a19186d675c93934ae4a7ea588f66b66ab92af4163a25625ffd96d8bbc8daef2707d90c77609f0bdcaaf2c10f25276c3ae3979bacbecdec3ecfb30e15f26e95a6f87e7e0dde5be2cdfdda5ac63e406cb5cf9e7005e63c2d3987d6c76dc8d73736bc9d36159de0ef445485f9958f73249674fc75e52c88f7be621ccbc2296f215f408abf8675d9889d6e58aac6ff0caead19c9a8457f8346791233feef9e91d2827e77c375ddeb387c3e9c3494548277dbd1ac8ac64e5dde1f4317f700bdf8729046700d34609af04f2e39f12fc30d1e258395f9b4252f0d68d5944fb0056e467c8afc8ef20bf03fdb2152a3303b595c5d8e152ae783a248d912b873bccc82a79948e5592a5ca73ddcd291fe70ea819a801d47895b3cc5d1fbe961a2f8019af9af1dd8c2b3bd09a0f7e76ddd3e54bad89425250fb13daa1cce88adf77a65967193879589ad6d10f689dd68db40f685408cb8cbe5e033cd2bf68988e2eb7f07066399ccbaa1dbe72d21c593c4c961de6b772aaf4d759f62cfff152e97bbcaccbe744edf9e3e56502a0478d94afc8b6597be506afb66ad69bf6ecef36cb4be5e13f5e2a0ba5e1e1fd8b074ac3f2ecdba5784cb08a59ce7116bca23f7c0480a6b207e057f7221d85e26567b22ccbde1e12d90c0f3c643c9c87971acff27dd3f9a3da8166164f96b935ceaf4785e72c7895d10ebcd4eb90fe78a9f0f3253ab98a1ebd40f89b1a3deb99c79d7560869080a4fdf032d88a10360efb350e8f5a6122b043fa451d5833e65db131836415be4f637e5b7a3bb6d21a5846b774cb3b914790328f75640b5864792f54905fff047d3f5eeafe3a5f3f4760112cfab296d3f4d43c79f6751668457dc6fc501545894c4799908c0eb05498a373329d8b10ae07050b651ced1f5cd21a7d2204daa38032da73305402c5e8fe4408baaea56ac900d3833bc9304264607d601db8828c4db37f58756493a5f9712d1dce0300e1b2838f2bcb2e1f3e3209e7c7526169447ad3d1ece6b6ed0f965a7a5ffe6c51c8ac7fb23ec22b483bc052e181ae6fefeeeb512858648c64d40356bde84bc3905e5e48b47f7a44b75bb4ed6b759b177f1ae6db3ffcc3aa23a86e2d7302ebddcdbc998e8ffc93f14f1b615bf85a14794105fea1e2c81870a0e81b1414f186bb1d57e0b6007c1e19e478d5a61132cc01c700091f59b512630cc33a0075b01f90a5c02d0b730649b177620ed63aadd354707bbd137320cee2e8baabc41c17efc36e8349c8384d05c3347652bdbe32fd1cec5d8d33649b4b206118a75b38cba628415cc132ce66d6177364beac87b08a62f7a4875ded15911de6f0aa44310cc330ac712457d7db5ae2b05fd3aa8dc3ab6d8ccdfbb738ba6f8fbb227d7bb67085f0be6d39b8e7ca601c8751d8ddf32e71b615ac0f5c7738718a489a918ab81357b03ef039c851675d72ba905a0bbe588516ad6acd38454c427691860094696ae98c2419d68f3546c3b0cc17f148e56381070b3aa4edcbf27940db10b9e77651b00a1fb551a40e057988908394ad8175b9cd82553ed1a7e3e97886d0fd83ee07bbc2ba58150381f5bb80bab05d389da474c01504d42d3cc43704bc806a2010f8b3383cad2b50d703ad9faea7e3e9ac80dca3cfd5ddb338ac1f97483f1bacebe1d55220d0a717870e769501654d5855d753f9b067d6845d6550c880789505b10a0a300b83a3d9ba24e1d53ed22f23aa10a78b5d655358d51476a5a406354c064636868e464506c6664964fe6544f55fa684ebac8855341b8355602461184da75b74c278f7584343282119f483ba2159b2952e07310b63fd2c4cf4d95d691dcf462dfac4217439e08943589895b17e1a266617ee6eaff5d33ddbb047e3b674cdd35143e28290d816acc28230204e685d3a9e8ea7b3a213ea92300c0f3cdd15dd910ea80bea90743e9c1006a4436871c086590b03d2ce753dd68f7544c918d61616120bc81ab288c4b02010afbee666025073f4e1d576318433ac62aa172b775d750ee376351ecd8a8d31cbb22ccba4847255d6b52574d816eb1b5c95758d0eab09354cccf24a5ba2f9f4c5e0d33ed9942ba7224c6e4598397a02b26fdf7658c5db0c56c51a1db685356d09ca435dc648fd36a3b88c911c1b0fab78cbc16ed900e8970980ded882361e5e713a5b0e76c5b560552c2414848250a7c6f8dd8e14b51b2779452ce5aaa0dc0e6705ab349c8cdbc955c1f140ce8a6d04f2e3767af81e6ad1a787d1b4a6581746a1a49c918019816466f469c1ca532be7ab04a904a9a48a524a60d7ca905fc75346d7b3384642527d265ce1a7bb04cc1e2e33bbce22db73cc6f3d6d809e1f7a7a2a7f0b6a184e885bd22d3adc8207ddb80fef616aa31ebe0b23c4b65817827e590ff4932832285be390c5317a0fcf8e80c7fccb6a7ca85ae3cbab1a59a5b10b43030133a65bac1331ad1f605a1f625a17625ac7613d880994758bf51ea664554c10ffb26ae354addb781073b72586c57a926a593e8caed08e72a6d9ba68543bd78376938f26cc8d30b955a30949f585dcc86c7f623b94e938ed7be89d657af2f04e038f807ab8bd67918c7e60cbb6ecb0db3eb051212cd37dbd0660efb873fd97fd80aaa477642c8e11fdf77abd5c04b80a7009bd43d2f5743ebcea6171f4e727e70c00700f725710a9f05c820abfe27c80a0dc0f943300a5daa8000478f161724b06403901506e49e5f7d0753bac75dcb951a74d6e3400985305f0f57408008a2555a31f144baa7698c355c1aba535383ca8c3f1c0f8fdb873dc31d4a937fec573ff28cd8df7b9c7f903ead411a5193d7ebbced3117fa0c7a3e30f8d59441f179a8a77f90f1d45b2fe88d2c477bcf1be919ae9dff80d0ec09caafda6d28cbe6fca9ff5930de0abfde0ace055a41d803a75a7615686e30630359ea959c12a2eb21df3a0803a3246bafb3755db41b941a2a1020bd3f1506071b404e0df0e55b854582f8e0a820057d816fe3763b5416155fcb971ab2d886a3aace21d6d87555c3728ecaa0a05bd658ea24ffb583f3e3fd1c7fa893e3bf00013809494c3947f2421ee0a6bd5eedd8e67bb2c43a11685fa7a45ac8be6b362a8f07440b9a142cd070d3eeb02a12644bf055ab232835ded6e3bbcda5579f4432821a120a11f504b2a7f3d0760df6e8154e36155538d6b0e833950905bf06a0ff4631dc9962c6115a6522da9916645a5aba6e901981fcccb0ef353d52ffa7405000502e9143ac56c17e860a37bbe181adde373aa5ff489a9db85fa459fcf9ac2d743a87c94eef94ca7a90dd170a8e0155fd3e1d5dea474ae5b08b51c566938de7330ccee533f0be65415be0a50fc61d52602f9419de8f3a6d7fcb85e3815c218c0154029440071be57eba56740d80badaf54dbfab17e4ed23e94f66a63d5be1ebdfbb0ea27fa64c1aba541b0ea137faeced31169cc7a6b8391a807ac6a51958d3e1182ec514099ec19aca2322db23dd50028939da6c8078440999c0f74bf9159a00a2b7b13c8a8901b99ecece928b291ef137dbae3b996fef0583f17d005746db1cd9805b770105283dd338b6c1bb58e708be9e4e9d0a8f563fd54ce9ca8cb2b1af8f8fd65fdb4b47bbceee9783a9ece8abe420c445e1c80c5d1b4a0311ec8ef9266affd685ddc2894ec963e849c84f0a58d44fe6513ad187b63133af66d3012e603ebdd8893dfa6772e09ee1b259546e7e689db38fa41419a00899668574f4e545e02f5942ec028aadc515cac4902f594633309790f6e5f32b8771cfd6ea69c419a07f7f5b212fd521ea42bcd8c6f5c7729479e5744dc8457e526ac96655917e523401f322abb94e5a57e9c249685b48e511face2f760156bd93f4dd3fead12ed570f56699aa631e1e39a3f94f8f8c1044623a0c407133fc6905dea05d877aafbda493e12bf34c583afdd08be46b15fb7281f818fc04730c84ef09098871e121d2d32e3dd49dbf6bd4d57949f784741f9c993f05ef25edaaed8aef04a27a86fcf6650955209ce20954a5ba993b2fb3665076577582acd19ee2339a3549225d2bb9224bd341a8de4489ed41d924cce8d265c8f7e4c3f36394972273d47974adf9a326b602d9538baeb024ffa758d2e533cb8975ea234a37bef9c70a2965e4b2fbd9b9d71d7d16fa6f4aee34a24fac1aecb622dfda896cc95eed1cfbb57e2a6bc3747b49a8c46dcb9d2b197cedd644281cc74872f8dce71dc89a334f22439512797a38e342f0f3d1ede51cedeccc951b6975885323b141494999deb666ac63bf1ee25b1497a32b76eb3888a0743021b335436c9a3bbf76d8e4a2592e7f1e8beacda243d5764069593b4cb2a562d99512a954adb973d8fceb8572a99ccc89992c9dc2e65a94467524c9e9274a64422996ef2d1e912e5291cf714149289cea03c457ae9a67f3345a233a59be8b2cac4e472a624371a1d659e9ca08c4ee8b2cae4446746ff249d299146a3115d5691e0f08613aba42172b42ebeaeab23ab3aae628c9163bcb2673b6db8c6cdfaba8e5d1d5790a3e5ccac90e2b1ef2f5dfacdf097551de89ae2c1df2fddf8d23158905cba04f9bdd408c40f191146acc77e0d16448dc7e22d8c0b891319668891205cb5fffbde62c7119d64f5a9628650353663121ab5e16c8e8c48eb5b2d0cf60fb86d7ae129e4e16a3777777777777333331958c731337777370b5fc1307c845bac6ff1f3051092a02442610c8951adf3182babf5e3b9407e19336408e34827f2bcf5ae71609b815b9620a40557fbbf80805b968d192247cc908fa0085040891dbc3a825731bc1a427553ad66aa62157c8d407b81822eea272bdca136701d61e46be5a256d38c552da790dd0c074ea2ead59dc518b733a0bf4d55d630d6236fbb6594fe9b1cf49238ab76234bed8e52e460558c6d61d7acb6accde22a66ffba79fb5f3665f43ab91b6d188b18928d07403f481815c3bd128ba3a6891ba97d31db6e41fafe65882d1b7d8b3bc246bf7e8db6adcbb20dbb2a866dd726e5b6c558fb5ac9bbb6cd1514ca3b778ec3aa2053339ea769dbfc351a84395839e6bea152692b2b355cc3dd39fee1e565bd7b43b02a26662be91da3024cbaeea09c36da3c6247163126b490a999ed1bc582241c22ff6d91c49460550f2bc80fe2409c8659a25b7871569206e99a91488f8b0356d2bb09ebe5e9206119b5e99a1d83a999ecd8318a05490cb08a7f53b54901564520b382fc9668090cf8f03c4f02196172844949d2be69a52636ae1a5733cab01c9d4daf9b5f0a835906b725484864893092f1e1901d8204988c118c08231bd56ab08a512998e8f9c3ba40c9a62db83ec71e08b2ab62d5be7a8019db01cf74c756a616add1a5dfddb1a38e26b4a73608f69e9607ac205d2d8beee81d5b1bd2143fd2bdc960c439a978d5b1f651ddb0c6896afdbbf1c2f2c3e25065d9771d7b0d56af1bed275e69d4a6ebf5beec6abdafcb7a90ab5a740392f0556455c592752b37b2c8a2caba951b719170cbb2c2550b2e8e34c4c9d15700c32978f5ed52a1f699e095cd79751d2e01d44d814c0dd2c70fd649c271db65bceaba6cbbc70ec3308c237130f06e3d9b274edbae15b15dbbf6add7755d67c0d6bebacc087ef622785159c52466a1581555b17af157dcda59e76b33f5549f8fa5faa7ed205605b712a882232d8bc79d9c7c344aa96cd2c4f33ce97d24499224499274726f2e4d4bcf931ba723e5dc4d4d993ce03bc61f647b3ab88cc6b7096bea9b0d93ca6bfce72ecf91e0a57c697b6a7b8f2ecf2d513d13d24d7e72c9799cc7799c09ddb17584c512df12555ebeef7d26c74823131267422279248fe4913c133ac2429e7b9fc47d343f93afca472a97f3f3ce7927dde2e688e3e6487e44473e90b26f719446e5234a53ba34993656f56864958d934adf7f7e91072c519b962613fd75e82191fa46b7d4fca0a81b890439ab6befd6264fa2df13d646921efdae8d06a571d1a041836e8fdd911dc9d9a96ed24d4e4e82a4cb13d2e46a02ab6c9813694d3445bf4c05f5a14c7e32e9b63bd7c9b91e0fd8cd9626a3131229e5335652489f713242319126f75e22d1afe4c1739c09fd8072541229650535fa8c97d15762aa1c9164f61957199d3c257514f9d45153a65a24fd3e23857e31957494f9427ae926a367379148f7384e9e44ba2491481ce91e494a1247ba479a5bbbd1b57bdc7ec4edd66ff386e7cbf12d5197ce0805c565132dc504a4235815f7d87fd16859c7e8eef6d8c1aa18df23ee5e452265a32064cab9de825c394cd1b8806a8a75eb8815141643a22c514f3d7865d1785d7bcbb24e3d78b5bf8e323d60d593733be769f647b02a163999342b4721a2c6bfbd7678c0aa0058f9c95c5951593900260dea2827a7ffb2f94fa2a07cd22c4d9dbeb768ea4477ec89627f3dc1b0ab3a6e272813f59389ba0d54045068ac4c0ab02a3e35976055bccac400abe2674c1fac42d11eac8a3e72816acabf0d42f9a63c2525a6c4a7dc34bf57d3dbd391b217aa3d1d5656f774d10f55377e77344c166fc21d63c21654a647d3b72599de3d479be6e826f3cbaa0e7904b7c4d14cede98e29e4a7aa31aa1a26a35f26c61cea87aa110b38a8db8e84d77ef36f897a59dbd7cc6610ab66d732ebd7771cd153e39de0d5d65854c40415e86c18352aa991092a4042d4d1620918b1e3b1cb7ae155183f5424360c1d0f0a78d359284de0b600f2eab5ac2c5e94b3de9841c83b708213b8e0628b2d6a4024085b2012861ae680054e0057dd2f14011c8284ddac1373f005b70f90eb450e9254abe3391333baab12c2c382e73913717018d2249ea0574d97410612b08c5ad340b0db64bfde5e11373576eb2161bd3948d6b537139b618fb28cd674c528cd60bdc16097e02ada24951f771c91a48b99bbaa97cbeba2444349869676928c087eb4877a6887889234d11050b74821af2571b88abae54557d1060d45a021a2c682c02dcba7a540b2eaa875e988d330f1fdee51d95e3e546929905f0caa9d05abba7f58d53eebd23bddd249c40a1bebe9966682ec96a7a809318ff15d3dd7cf918da76b0b59214e4d690b93d2348d2a116f5121d9e38560b4a9d8599dde61da3b3b580a6453d13b3aebc2d9bc8a7a49bd26510a1efb8d8c9214a4a9065c8f57e27a1462045225e2312a74010d55fe750555be7eba85653029e4d2cb88ad17106456c6ba7e64da0bd9f48b3af56b9d5ed22d2890f00b84e15837dc9718b82d80cc9cf8c115957f046c0094b9e02bf491440ab10a42380485201cdaa01ddb42bcdaed66a01f4c7c3bc66b0685be03b581dd6de8637922673e9c11cb65302bad4b19fbf55a6a618ada00b9414364d40fb592c9ad9c02d28f97dabbbbbb344b7fbc14b18710bef74b7b59043f5ebe1f2f2f2f2f959f39016ee99b615dfcd2dd180fa490950216166651e20411d10fa808c3c70f32c4a87c8ea45deb26fce0554a2625aa3313d37bfe60a9a512acb0bbbb9b89babb9be8e75b25fce383579002a98165d41f0ca3f52ad1b4afc7fdc06840b8db64ef1ff8d32d5bacecf9c8dcaf00b139fcf9a9ebc32e65206e7f30e1635d1848f62da09f9f23abc4478c31c6c7265a1c9c8dba2bebfe74ff6cf29abb2e16ecad7f26104861b534ba6cedce1f2f2f15529ab830a3c3ee1faafe04990356e6a55bd6a75b463a751fd120473a239c1e69314192c5ca3266c8f2c560ff463875b59d6ed96f66e88114236042cdb4efb12f78b5d7e6ee5c54ab825b5666bdc582b0212ca861b8677bb41d8c06f2d376eabeeb6998dee9761a867bba9d6ea76eefd4e51e122946150db82b0b5223c336866d0c1b1936316c63d8c400e15cc0d68e5570d3826c0821cce17859d1055a3861a7eed7c4ed47cf46da3faeefcd9ad168341ad126ba2f37b9e941489be8e097a3359016d9b6ba6318dcd6052528c0ab9bda7fcb770751fb23406db903d6dde7babb54d24adf9a954aa55249fb1739eedd7bab9c45b09366118e83915a967559bf2e2b7e3b7622db752dc3fa6aabe92ee663626292720e769fc4544c524eb01f3bb7fc643bf14aa56b37693f415967e69b9c86f916c7ef98d6a0d02252986e327ddb361311d44f4ca613d3ca89cc389d88e9a75fa6b9db52a2dbc4a6373f5955e8f7e3c524857e26d47af719a8134d11285e22ca53fe655246947fff542f994a27c58ccf9871fa0cd48ceda893d389c86d41f97622a613d96d49a12fa67b50f4c9c9b44de697f326c7c0ccbc4ddcc41b355ec52b1a7895f51aec9f90ba34c88c9a5dbb6efdd2346d7e7bed397ab363f4acdabc20238c3570d2dd1bdfd21aec1fbc851d7e5783b426a345fa18b5ce2dcbbbffe4154617648f8659a640bcea06af4a8fabc546801a77d896b8b9d4186fd1941aafd8abeb9c657226aac9d96300ac165d21d5a44735a1ddbf8b343aa4ddbf922459166d62845129b013c9b22cd3b26bda12c1e88960443caabde3369a597f61d5de22b2dac284b8efc74ba5a989ff2cfed6f0995ec78e515813e9628f59ac753d1d18abf6d73cadcbeecbc06dc3bcbbfbcc4498f2a39444f8449842d190a3e052fb5dba7141f2be899bbab4899f1647d32033aa75d11a2beb16a6fb6d0b920f5976cb72145c6466eee6a10ade627e81de02b6d26be7d6fbf15249b4899b4abaf6f8d1ac21914824da847748b5d8bde168c473eb889936e1f121d322d7755db72cebb2ae13b1ce3d3b110efba6d14863bc81d6f5829e1a64d8186203a7a7070b2cb2a8fc233f3d3d58ac210bc2156d849e4652396ea8f6449dca5f1873f80c61220e1c0144415416b280052c484fc70fe9e988343505abe0e35354a47458d5b4070b2662d8907858a014755b568f65619685514c0b726b10249f63c6b0ec1fac180629267485fc30a10a493c15727ca41d4a911444b53b0af20726b41e695db8c692ca3596b08aad941ed2507753d210e90baf08211b3a2705918230211b241b3af5a706f1ea0b5218646c8c280a90ca7561d2506744928078f5912a9fe4435a1ccb03110ab865f978d0a9cb916e006b00d5c8753e901f2624b438328b468dd73fd20d2a9fc3ba38576a9fa214ad4b0fe45703a5a86242ebc2d810af307aa1145949862ac46ad4a05121c58878d001004e85e7362412bed6c032a0850945c154849415dc02cf6161901f2754a150c469abb326972aa24298864939031838327c08d93ae416e6981377f7bb90d495caf5922786b1ce437a0c6e814556905fea884f16a91f5e35cdba5b18e1bac05b11b316c7d55ae5472c66dd2e0e15ecd66ea312934c3a6ba6b2e096940fabaa60e289225818d34fe32c0e68b2c2d463bac2b4846d81a625a4ac601524f5a8a47c2ae499e22922533c155e7df5e43af28a58a9299f7581dfa820bf948f92ca93b2a2238ea783658785417e9850959e8e540eab2073146a6a3035fdac0b5ca911675da8203fd3cf0eaf3e5311523926232c4c17997e16c7a6a648e9d41f98508a8a86c3b6c07fa622c486c3c294a08b1a26e26c0b09b63b41c770bd110300a7add214ae5b1de1f64ef3744ffb003551a644161da77374b66808f6f00c412222488493e5481dd4ce79543dfba23a4a66287994ea2faa981da22029a5944132486a9a361ac9215e80dbba2c9facf1eb2ac7ea15d5202624ae4035c8e5755dbd205747548374a3c50104e2d41a04549844c4c1a910a7e322701fefdc3ecdde30740015bb2d8605d7e590a75b32988ce30e0b2c8c7461bbef211751d66cc5be0e54bf5e52d78a5def3e41c2cf1f98908ebd9cdd41118751ad23e1e3ad5bd84fdd088b98e9aad820e1fb16b4ace5d5b74c7ff108065c46246381dc2fc61171d6dddddddd56eceeeeeeeeeeeeeeeeeeeeeeeeeeeeee060316c615e3182cda4349ec110121252260865e42c80711067cc4ebbaaeeb8a316e4cc4cbb2a218acba2e27e21563bcae18638c917e3f5e6884385ab6843430765d45d7a5e52c1c9268e1076028f9c119daf0451184ea455fa88a558d73090128b6caa2383843b4ba5e08610ba803c40ef8bab012743185166a47965d10c5a07a75bb209a224e41c486eec1851b9a2b8609613d2c2fb8a843b52ccbb268c3a82ccb4a41b52c4a6f08f55062ab9fea041cc62c0533bb40083842d8a272147a691e811741501205a8e3851076aa57d78b2514a5a0871384d0dc755929b8ae92cf0a2a768951af7a3dbbaeab8960608996c00054e9a06675bde822a77eaa0c5a31d051c14d109c8086252498620e5e30d2501883175a10a17275bd60c217ddb05333d7ad0389cb8261413b533317a5e95fc782241f0857ed1ae5d1f4ba6890c682a4ac3fc1b2c39facc34b26c208c4e865c5c885dcc34358076e9b4032ae69e2c6c508ae9b56835df34b717406abdc86c59a0c327c90febad4581ba42bd42013f148a0022eca9822dbc96e308613b4d0051bb6c079c217c850b201122554814303a023f060065ea88047b38234d403256c8183294ad083202e82c0051748a0a255c08513a6682d3849173043bc30048438d0604815ba0b9415632a843d78b55e90a0a742eb064ee82cc8afc21f7e6319dca0810149c071db69113454338ccb308ec3580aa129b80cdbb1b382ddb7bb9b59c74b2cb1b00ad260cffe61471debb64b57865d5976415882220a2c9161d715d8eb66cca891eb2460626394f53264a346b06718f616ed1c5f13cb8ef1a04a704b0f56616090961c826220e0e187740cc4898168591778acb3232ffb62a1d6dafd8161e0f71cc32ae6cf585e0604f9c56c4bb7c4581f22cec820b6c5ba169975cbfaf712b32eb25af2c42b86dc32d84eb2aab3dddddd38026e59b286d1b4ac83de8f981d5947530dc0ae1d02d8b5634f75dfbe32d84c75dd7b3fd9d16f89ad39ee8b408597d9e6cae4e86b7e3bea8f985d196da6205f661ba65bb330996caecc7a11803218157223b3dd6265161b247cec1e23931faaee46968609a29b0a31ebb2447e2fd6d9ea66519d55bdab2b0c2bf0021a2a910be2100d0c5805e4612212f276efc29f2cb3ba2143082110fc09da02069d5588a211829a600584105adbf00d172e4308218c3c15c02a0877d5dd4c55f0872f2a7c0c445518c44586d1bedcb7981f283e02ff2c1f593e52590c3ec2472e2f705b8028a4f6b38bae65c31136cd72300bbbc94d7ea06a9735f6cbfac7472cba16f43c1e5bb53acf88ee58b5debb1636578735bbc77850d3b06b9a0dc34913576a1a04aa5fea9826298df628e1b16f559290f4e38fb7946e319d448c46fb6c96ca6b7f59d7f7c4c741d8a49187a2eefcb8cc3a46dbaa6979eb7a66c3dd3ff83d8d895faa7285eca88d76f93dcd8ec068cf2426559088d82d3abf1485184d45392a595ffacdfc4021f618bd7657fef111926704f61d794974168a054fc3f23c23acd3c0a7ac4b6c44311ab4b442a195cac4a871c2aa699a26b31e3f315d9bfc037db89e655799a4cf98d766310d83ba47398aa23e52e8093d518cc316e3288df5d2b19f3b02142233796498ed26ef24c3ac8c0945a1bea5ddbf979a2171611e12a53dc73dfb751f0d239fa1507574796199670476cc4ba2abd865897e3f50752f3f491ad10fdb7bd7f9085088adddb46aa921a8f40c76b54d0d95a219000000001314000028100c884462a1503c241786c93d14000c97ae5074521a874110a41432841040800000000018000019491b00a30b90a839427cefeaa98cd0e046db9518a7d249b1326029f484c0e0526538dc42e9864654eb43b013fb72c6b6b4587471c56fb328b92a6db61975070a93ca2f6df143b5941da23a5db0505707bb95158e6872d83a3149e52e8c98ecf0677481eb1228b9f27b9d8c2d2d450e1fc645858e32e46723892b70c09a9d72e71de2358a3fe25fa142c5909d802c5ba576e82fd80489a290a4641375069267aa87a69d3d880d82e159db6d9ea7c62adb0f890b3ca27573bcc322c7739f3a9f4a2bb2993abf257cacc248c7935e4c2d5f221d65c11c7abb0d8e2955fc79be67b3715b16af3f15964c6bbb834cb45817bc4189fe54eaa34386c86212c7a5f2a02251a15be709c2fb6cfaefcd9a4457c73ac0b79407b1ba96861f3274abab4a900d8df47958e4f11ac279edef955de1bb8b54d4a29913588d26d446ecd90685a55818cf6229ac80c66e2592e40272024ee7871f8efce16690ff133b0dead6708fd93700f8f426a5a234b32dd43852fdc664326bd82f362786e730b735922621960a5060c38549205535c5fd8cc72197c90f45feec0c2e0fae5a9356e296774a1adfecf188795eac00ca3638f1cc21ecef16e3460f2e6c83fa9c81bce2571ad16e679b7db116fd1cbf0152f79bf88357f100b87527286f35fe2dfea9f0393d82e8ed3715231b01e72375d0f4e57380941447f2027818a5c5c7157bbb6807c1fc232659e8561699d02790990b102c6030ec30958a6ab02fe2c328b4c8f28dd8fd3f391121d0bea3c512d8566c2984fd9d36d9bfa7d5bf97fc1851aa33f6a49579d010609f779f81fd7b9ac9dd84860cbea3f17000fd4d97e63de8cb42a47813e1f4ba2bfbab84320db23a87626f6d09fa35fbf6daeb23150a9776660e5796045eea544531675c29360b397480326c464222d8c5d1c6ca7f0ffa3c553b4874489b110c6da5958ade9ded487bc19b825aa81df628e673a02d77716bdd38bb684fd4d636540a1ea0efe313fd61e3699fe9865e515e617ebb16cc7694a7d8b68191fcb71ff2838497ae3d09a94b083643f3a016c0dac613b95fc233500a679ff71164eeac5d968e2855326bd5e10d76ed0002c9a1b5fa263d6dc3ae0d07e7758e8d0b1db82adcb6963694d0fab07f8881e0238e41478efeed2fc5d6c8fb118e94fea701fd705dd5666ffdb949625ff6386198aa56d986842e386292cdb3cc58cf792d6feb75bcbeec5b35db81d89aed3dd5abc8bdb2aa41db54f6e1e19afc958eb6f37f664d660e67bb58ceea4b8b55e26c6b975031fe6086df164b88ec6c37da60655c1edba2bdca21bbaa3bce4809c5c235bd1f7099a453c746bcc8085a66b47959d79c7540b048697244135ee3d55d5e1c34f364f7ba4bd5ecb2b25b3a826e5d52b977e93e82494b8d740e0fc6d0d248a312b2efd43a60ff5432c4ea880d4fd2548df429149f4c9bdb05ff22fd0aedd4babe966076476eee7e1413225fe89a74189af4342a30164f7a9cded429480dfe1452236169dfae5f6b38ea6a569c294d0d90715dde644c7dc8a360a6c9e18fbfd00ab63189eee05b8479c83618d87c67a0289e5583bc65bc72916f9c8acac6aa994486027506bbfa7db1a32b93c795ed484c84e442074fab6268d09397876ac5908f6be01898633c4fd789345fb33ab1f54a02828ed5da3ee77c5469fd818bc1b2eee82fb861c23a12df6cfe69a05b4b6f9f133cc3a21beabb163d689592e0720e9a56bdf069ba43aa2b17e406ffeb46728b4e69c198e95a51e48f789c8d3fb83cc970aa10958d775c47ac492e2b8d0f68ec6520d5a81c81a49615436fe48f6d71db73e4e8d552b8df4b795d8a0040bef37a1a8946ffa0b9d283f58dc150b47b5711c1b5dbb37bb954770501194bed5d694d6802858e8f4d5d0d46c67b819345484433ad9adc828529ef0edbbbd61c55511e7648a2286c9ba6832c849cee5042a8971a32932cb2dc8688842008709cfe40f0fd62fea9d9cee3cdbc51a5cb660436cfbd1b22379465fc7e0e3c61d094132f94465cebe71d3641272935c1917fdfae13d9b6d7e6a8e6793de4904df83db111ba176c2a47be558cb6097f11f798672de8046edb5cbfa68d62a826e86b32db2e119827d8644c0806ae7663559bba7c4723a47118b25a359c218cc73982c4c4a59df8c581fea2e60c24d45caf7282b8cec430076c852682697416a07eedc20dbc8401640db773a5f8e76874df0676277766890f0f6619361e5388ced8c93a669ad1fe9b58f9cbcab551cb10b0c1fbf805a5c5fa570a5f2c22af6c1fb2d02d85b8dd342e83f6599935c0b7fe38a897d34a902003f76158cb1fa0c9d1ef791c5174828b593683c9fb57f693f6d00daf7b5a961f296e74cc06f074ff1baf3c1f5174c89ce5b9391dcd324a912e9663015eba479fc631b76f80fc44d018477a94b423a526b389e0d33e823e6a36f1cb6da04510bef1ae9e7dfe8b22bac8d9595b4493d609792014458f9f7b39fb161c10f2399d5877a8147b4d6c37e67fa00157442b81dc3788a5809e455f250654f9a5b9d366e018cc65d8bf24d75f36de0d80a836feef5e82fea06b841ec78dc7f44e7803848bca34b077fe445a3fb343c4d4d23a8db02c7cd6431d4c905540fafa4cf126ad4297d60ef5f1844018b7d9b4ad2a7d36d7e3a4ce01660967172f1229465608393e393dd0e90d488f8e2aeab17cb23ac074a6efa24120b9ddbad46d14ba413ea7b054813cce0e7d9d559acd836cd262efaef5e5e6d43b36cff0f07eb2b4df4e7e348008719b9f6d3e4836dea70c45dedbde18561b8855bb9dc66ee150292e93f0d444505406c9423062833abad5154baf7c1b6f072df73d2b29ce603e8b1e19b33255eb5bb28156b6367fbfab681cb47fc179dcd5b76db264ecdc86223291134b7a2b3c10976ab189c8f2fb3b6b2273b0c1685a2148b48b02b23f2c83e2d37e9fc2be93761ae4da6c8c37ff8cd0542523a92cd3b1b2c85c36347e92981726c71d6449f4ffeee958296760ed7fa3cb232befcaf303d1e66c7a685323e0dcae6746e2744814db204b30abfd72d7f182e429fba38a790008abd1e96dda2c3ff6cd6c7aadc9dd7ab4558926eb9e16208a593bfebb4e13096c4e00bd9507ae142c9c9a4db9c6ae5a0037ecb690f61f199432420fa36dafa4c2b1a06f0a887b58ac22a23ef850f2cd91b18275bf5cc6e37b89ed3f207ef6c2861b0d0dc194ea432bb7fd5f419f6b74e50678cd275c694b356c37a606e9daf1da6134722e187c4288974321823115d16a03fb00ff0385d8922105647cfaa54f4dec07d80942b5d2042cbb7d11f6ec1c8fb6049e088529e3e51991a4ba5c8c6855d5a347d5d9915b2723a332400c7c277202805d7dc3feeb764e52e6735a185727295974c5ad52e1fa0315114036e3b96295ae31cd8cb63ad0be1b7d8fe6740649821073266033da2f2d45a843f98106ce2ba801760571c6fcff9cbbc09ccafc7791175356063a98216bcd4de4e5fc35bb020522f91804cb4bd9412fdada3ba654a1de001a33d1845669284275bff6a238eb622078da2a0922d3ade74c4e158c4170aee8f650db87b57316a6ce4b20379b77260cb540126f3d121f2e25835204f9cd1e80c338d3d12fec2edc86a60fd12f8ad71c8708febb20a112c935e6b18571850961797b8f7948b55870b1469dc366e8ad8bab05ca829348f3a3850a25708aa9a3ed033ace7b15815e09fef7737f84ef78cb2b729b199ef05204ddf9c4109e87120a30e9670e6b47d69621a3556977380329bc7967bc99f2121e75999abf614e9218871c7a1fe5cebea3f6f40bdac413e1c95593d22fa000f9d0dabd1eac7c602a2536955d3aebca31695a2b70d6a4bf02c3f1e1028af579d0de3382014a6b88de42acf9788974029de0c2fd03d72dec75908a26ea003e447ee4d7798181f01d55c588b30a50e74c7b8004712a2b82e10d62f1ff9b7b90663f303566a8e6e49da9f89c590e52eb64362bbe721b93b51fd2d2b98dc92636643e30c5b50784b14b4e2bc15c42d06d260b1dc7da2c24a11fd9eb6a59c10bc25c5e8810a20b67d9a2147a11ac37e34f03b38fa056469c5340bbb5f68c44cfecb0eba22effb43c325318e40b99f4e4564fb32df493f1300949be2de41435de59593ada61ebe8b5990cc5d9b97d4e06af21c9044ffc6a19487c1ef15cb67474cb35c8b8597ca023cbbbb08bf694f72032d1159805752c40c58af08865ebac8e0517d0f8067ac4d278dd3a67a31e0a877e58cb0500d85a7d6bd00a976e983473595c745e478899cbea587264bf91f084e3a7ef8c260b12bc52122b8012c8fed0578c1ce500108f70a481b83096f099431c09364b2030319428c832e2437ae1c262cb601e1d0432122733a8c645543bb875a70be103814143a0d26c726be7ee1c170b74215e01c34a68f8f0412af7a54fad186d448da4066974358ae5b376374885fa4810583c9902f46760b4e118c706cfcd4e1b8feea49b888b1a982f5c2e45166d0566613181703643185a2c7e6200213322605e6442ec0ce0b4101222c0bca484580c733a20403ce484d342344ec05cae91098b4197a70d93a99d3684a4bd8bd44adc7f09bb650ce159a4da9e683b97a85ffe4a81dc2cd43b2a40d4931e3f207109940e4c545fcb2588253ad2d9282b5865b9537444df4e6dccd1a6689a25cf59e192ccfc20a34e1be6cb0e47084d86bbd59034cdd275da9745596b5ab3eec0eb28b4f250c085d20984d107cb93ca63d3f56288d3b01c639cf719767ee92c26d6af6dd88be5b24c740d5db562d7c306b9bf73885c0e1310d076ee6105c04663865704b113130398e31e0db7d1013049cb7eac161d11bf1a17465002b6772a6e0d3611e77302d0503e8bc8b76f6e9b28c0a09c314f1e13db8d30ba2fa4dcacb4841aa4bf2dab367a707d53b6a552aa403d96e16b1d8ad791269a25446ed9c28857ed78241bacc0261ff36facd2cc7a40f4c1dbea822b29ceddd64364a2d4ffd49da8da7f5dd19aab08bbf6f1fefa020dc40f2861d353953945cdfdd456af439969e6381aae1514b0f0336f849134a5610a5b2a40f136f92fbcb2d44dbb114c625c2163bab4af3b780356d8298dd2802ef97070abb82ddde02f759eb61d446c98f962a7354daa22782e581a0d615375831aa91a6f8d49bcc0c45542d31ae185ac2dccc09381692d80dd1279b632afe5b98c36d600902ec312285a6f7c4a66f53fa809b9ffe283b5e0044ace37876aa505d3429989ec5ca2d13199d79c5b80e8a6db34ea13ff72dba95136516efe19cadf29715c4e8fcd129b1113a45b285c5ef09c2051e4c9d0e3f8181fc65e00d2190b01c7e12ab8c05aea9e129baa3b4938376ef30c14cb0a171185236a4c7946277a47d96a5984d82db6dabf7674a867ebabd48b2001bda70abed13f4fe947b76475206fb508d78bfce34ffdf3a859bcce870b9c8910e9d26be8f86cbe9a3cce5256f583e1a5d03a361b928592f9e2eeea3d2be721a799fdc8c42a81f1f9d8fc747e7a3c10fc04ca07571a0c18228263f90cf62458eaee92bd1d9db6c08775f5a0e1933e95ba161f60cb87f568f5e2628af5bb0a4f637862a6443d0f94fd8e5bbc6bfd00624a1d93b22a2fe57f6a73792c878a6cec59f9ba4ef52659200be9f93218aff35c4804a8b625535c5eac221a457c4c0127be23933e66763b05d79487811e6a6465e754a205a5009fd65d40c3cbaa62f202504585d0af58492cb1205dba1c531973c42057255d97943440b30415020e9ac8ca6c9221fcbbe35695aa68ab3c63918f08b9547ea932f1bd1c9b012355adf29475a3ea063074da80437cb3c837f37623284ba3cf2c333c4ab85dba4b52c1ed5c2612954c41b918584584256cd64643798dad3c2975c8401507482a75ac6f81d94c94612cf68c29bd00a2fb8d6b4088f65da4d9b1e7ea0200d0026c18e05982154c51c197a5ef75f730a9cbb864735b0aacf502561dc972a01a8e33243ff1b1c8ad82893bea7153e67049a18d92ab45c6ea0445f78058f8ba51346171a909caa92908eccf00c0b3c4e2aad11e91bdbc9298f5ec52c868dcdb1c57a2e286133ff35ff6f2f87bc39bef10f2dad4a358ffc8a7555313df71d4d64d56502325dedd2a164768640cb30ece932461f7614214c30a2a8f0575792860a0e6a6b1b07ca2f122dd3290315feef895c5cdae2de8e9e6d4ccd52acb8cb27563eae6a074ebb599c06f66db657cad014501826874fb9a8cce081981a7d0ebbf571b844a7d4cbcaec3ec0cd05f9941a527ac06d086a78f7f32893fdc7d58e1ff57485aa32a41b8d0206c83ac7a2ae1477dd142e105800f6e329d6d319fe4d841a725ebd78e7596b9b266a2c4d14a497d3ef7e5eb74c8bb86b4b60b014ef88c762dfdd2fb4ccb688ecaf16f3f897fcb0229bd144cf4c31a616e06066524b4d4947bf61fac1cb15ccd8c2298f5b7a224ba8980b8264b8506edd7ea13f643624052d85b2a81fc4661095b464aa743475c18a94dceb930c2c1a914c2f616175a107574d3165caca3c146a8a5f311038233185d6c16e394bbdff92c1d7af5e369b109b08ae146949cab52019b600c0686ac5eb8838bb4d9a4efa775bf6a2a1f5d842aefc2b930a79798d5029791b9ddb107ec8a2d0a6177cac53227b784dd38d790b1f9a4b15457f692736d613608bb0ca9c931e4bc7fca2b764666f57cc8474e2c3e05243c2e4ce4e9754c060896281849c21c5daafd2fa80da19fc471f1bbcf3b9218914f10fc9733d21cf37658db56d5c0fe95d49c24f4b82f02f9c5f285920c7a0d6c5d5f4e4e167c4a6fd7f2484b62574ceeb1174b676549b54c3e50056f99e44d57d87f6ebfecf0f44cddd1d0b09e769c1bd7c02e13b0ebed177a19ea5a725b5a38729a42ef4febfcde905fab34f64a9f97ab060ae3da4b979c169a12662d8a93937ffdb3411c759cb401986e6d540b8a0e2f506f9c9cf919d486441da0aa0f8d5745b980c05236d4f3ab0f23549437edd927a1fc572bae32e8ce322b358da0370165f8cb5e3f91877280fd87ac1a7548e7d932e3864c62306e413164fe16239fde9174f8c390cb243abd7d4e1e1e8daa3b8d167f1ceed40e423a06cd21849a9b45ab7790e7d80f7295c1017ecd1b490d81e8fa2e457a77dee190eb301be8e815ea33b901eb481f8c12687e844970670fcb70d581b99957acc053b179d58e9ac52d98df6561292f531ef09c23b3e320afc3db6a915092c3b2663c064851582e7c66f22b17f20cca09734f4b8b6701512d865c002a83b426a195c89e2f331cca47bc1de218c38746c73c861675b90a10413158e1a3a12de2a77deb31d53021221bc8c97227d67d63128da24ef1e482092acd993db5ac9e7b0dea47df1f955f65dc4f6d5f40c1fe7584effd2519802d5ada5fe413a6dafcc000f924b049ee426b7ac4fb99e88010483579650dcaf995f84a8798feffd8d46f0280a4da271348a3f31506d734fa6f73cfab7cd770ec2ce4af3921fb689da0cd80e1e04cf0a2fbadc4cc2fb4c4911ab2159f6f07d3ada03b81e2ace0b26a86da2de5492d34d9309cd91fc418e224372468c7d16ab6af2dc52a4ce3b5a0de86433f853cb53d7b3d2adbf05be2e9c47918e3143b7c1e289942f61bace7140ced6e3b6c94651304bd222b2fc456e68a6912679616de306a60ede4d75b89f16894aff8ee0e8af96e932cb58da6cd8c6ab66c6a2fc00c4b37ce119cbf222273edc688b6670d43645eb5338f044a6d3a2a1ca4a36745a35f9ce7101cbf5058fc82aea03dcc3ccb0432d3d21bcb1673c6670525dbf908f957bc4b109b899da6f7dcf1acd6d41a8eb398852691630fda93c8fa432b8c4a4ea28bfa283f9b7982d84e141585de4dca32ef38a65e920ead0fe7d14fccdca72440524e0560db085127c2cc8fc5dec182999f2cabd8d91ef3afa71d2dbd4346dcba92498d062c5320eb9adf5655b07e39d3d0d9ef211b69b83c595e14ca43866f158db94428ec250c6b2105eab26a1e125850999b8452b5f891027195d5d8d5971e32c4d84ac2455b567b261c2343c728e8e4162c938a693bb4ede430f110e8185dd13960bf7a39ee0261822479f38da6a5fbfa2a71ad3d1623cb1b059216d8420ac9ba6129b18ea30a4d1ff427f6fab16322db9ede117a988050028cd5410a6f4b5faf8892b130d15618043a3454747080fbe689521114396fae46d0d198b4cd9710eda5d6eec54275135d3dd5430182ca1e81c5d9eb2a5ecbff6662a0906f8d14d0b085e2ec65884cca2783c278eaff162ad22e9d08080b636c2e8cc650beaa94b7f47e942be23d03c896e528b1a4d981326120bacdf28bcd23957130214dcb238b77306ff116c160a2572e0acaa5494d2500068218811332882388c8f97f1c0887e7dc6259936e992484427208296983749f2548ca0fea1aa570b1b22422b47291542eef5aa5cb471bf5d23615bc3ed7b89cbf5b8baea1302a2e009bc3e8dd22c76163947558fb9c6c3ab1b430175a20ba6cc466bcd6b56488c3dbb08c2b96a40ff1e9179da473db7d3d5ac1c8df318ab55ba5d6d0eaff2bd8f8f4c4a2bf63547dc5baa197fc3c73b099b483fca26e7cd25814f41d82fdf6fce33277383ed500c02c562d2927f37c7ae0f3743d50bc887a0159140d700404e1a3f44b0380a2f47641a5aff6693889d81e7938d40d225559cf05b9621e0077c6736cf5b50feae6e1379733dcb16be81b82fef1ff5257e549d399ca883cfb94d70a14c502c6ad40dad30523ea1dbf81178f5c22de549987e1bcfb365159f418689fd0309e73004202ff2506462dbb348348273eed0ebfe138eb0e634e0374e19599ef33a30d2f8390fb1e9344e49a922b3362c89ccae0a138dbd046e680bee07d12c0de308435e3239770d6a91134ecfe26472d15fd6a5b6b1519a07e303a4e524c0df1847159a0f8481e0aa6da2fb0c8f0bdf25ad8603162e8bc2a075a67ae8507b5c8e50ca6f9a9ac8f905009391538e566c33ec7f0610762b6e78ed11e4d6d463fae5c50eab04345e79f5803b53cd9ad29321ac32e6b1b03d918d72c38da78723e16d825bd2978a0313c92d870a210173f19eca8fed25a853993099aa4c2a7b50615419c1ad13bbbb98438e05cc9001708cd5dd3eea6a254f831866c8aaf5064c26b167ba4e22961430318ca9590a7064f74a90ded723e357832a864d83adf0f85682ed632ac3dcc82a8c8f6dcaf7afc53a317a2154a213e2eb49b34556fa46f0b8721f759aeeace0fb878916e25e3bf11c00c023f7f4584fc52e5ebf6d3d1e219b773ba514d398261edd4f459e61fe90539954a92cf2bd03bfa8540453ff72094f326342f4e517fe68fd86da95f382e8a7fefa20b9b75a4cd21c2bb9983e959e074a424c49c8ba39bcae842567f7b28142de41472fe15a6c6306239b36fc8ba59002ad7a6a3ee7cb563cfdfb46d56b11c8ea57aa3e7c58dd2d2ca79173de4395d28bacfca646dd087a0f3258e7c209bf1e21dab7a15c31af8d0d7dbf53a0a42e8e9d2c49586edf10f87f46576347c1d3e0e31eca7ce63e2ad35b72640c3bde805620452ec329f425da82ed8076192eac14c6a4afd6b58d73918a702c75132767ed0e72814bbf5f815afa2881dc65e8c3c99c36d84efadf91f46952dce8cbf5c0339c2e759a33815158d3aadaff031aaeba52d261caf9f7b76a7e9265f6e7e22146645bd5788a00a21dd2f6d76b3233f7b3859aa0d14befa02dcde86ece450d10c6c85f06058653f7db85326229968b464739e18ccaafd250af742b14345c2ad426d9b132a0171b60a91f0a83c20d329cac9566c57db015c06ad412d4a24c9300e226794def4618ab60c9eea3a532aff60cb4c502820b958e1cff3d979e4c4de52e5dd5484b847eb2cb5da6ad7dd8f7ea042c3bad9ca49568f126f1aa95f3c3c2730a7d22e2a63661c0abcac69582a5a4a1e1629f681b56ebc11217aa46e13cfa91eb1a1ea6f052942df77e5bde658140093b0e2b235b9602f1f4337d9b4076a9712ab7199e06ed0765e487d5d21e8990150f654ff532acf40d56271f026656fc6a08e629467323e02a7ed8b1934453ae4f6631afc9b7815b5ee8287cb92115fbaec228476353324b5c74e24fb4360e878d07b4239ecb22975d9e8dbf84eedcb84211ee4cb5ec0896d7ca254af0d0ad3d961eb66f6ed34c645f69ea93311c58104026c9ca660bac0954eba11f98899ae96cd7392ce86b5d6b766eaa0813327f12c48c9fd1363ffa9ac5f10a4e0d4f025ac61465f61c12c127701aa24106d7a0af04faa219a656eb511b8d0b506fc59f694c3ac2d02d9ecbe8d68bf0cd7704c0c55dd86c04b17adcc5bd0829994b25dd7deafc9f8ee6d914d0403310ce8c635a5d2a2bd7f26e0478d5cd080837a5bd9e1f51aee4f58638378f0c09ffbd3cede698dfb6edd9f81bf76e8d635eecff0edbffaf77797093592bbd8d0b111ed906096fb730c89e31857b95ca4bb3fd396fb9d57940073128c313f7400e901f76778a4589a163e5292f3b6bf44cfc48be0fe1c28a0c222e3c0c08e276ec0fc79980565fb33342c9c606d9bc906006cf2de5f65c830fd25930d2ce44345e5086a14fbe2dadd05501011037b0368b2c05adb9f4cb188687cb21f9aa8f9e71e998984a0e947e167c59b99284d5fda3326884d04a3cec88e81fd6a4b28d109c35f958cdbab364ca1772834ec8183140e2b146c520561c391874e0f1062357e891397d96394db9f5d30527551b6f5a4c47a4839309ce5ed4fcf47e78fdf5827d4cc08e852049eb6074a1fd1ef58305f6fb690dae2d5acafddd7b078fbd3f6396ff86ca06a4da3f3ed4f5ff7a53967dc9080687f5a890c111cbba27537bae35e190787915d087635b7bdd0ed4f2d6f1920dbd3ad2ed534cd2955b68056cd6558d0fa58bcfd690bf0164fb53fc739eb0aa53b2f3f82891311ab2b2f87b418ca6a022a270139b262876580a7ff5adba8eacf705759dfc98534fe3477e014fe3812a9a3016ba308e4c63be9b2c5065bff78086cdecff40f6535c1265ce40423860ea32476e4114047f99c0a47c7f15d9bbc976dbabb30f2693fede043e753e032b8f11aa3c66493b59f9b6c40ee8071ca0a3b84e6120e15b84eaadd8e1a69f11b8ef6693fb716790c68d07ea6c0090cc61abf14460c8587f6d34a9e7065ddb1cde9904615ed67d7d068ce33c7bdbc912750dd61a6fd24ff8f74f77b52fbc9d6bb09ccbca9abfd0409f4bf3f72ca5efb89372a3b353aa2f9feb69bac065ef8c86db2954e206a3f17f8b58b3256c39cedf24ed79c4f698490b426ed59f8a2b981c4e95c7fd39ae4bc3684827c5967684517a2c55514820083250ef963eefa0db16828c11707fb7248bb7f0912e5708166c99d234739a0a2aaa63b8fe2aae8a0a11be2ff806bfaf81701f339492a4086926328cd522712eb1465c30426751d04ea1a3a93104ebc2a7c1d50f8baa128f6b9f5f8c7e029852c4a7f8921b269826c7e37c9d3bab92ba81355c3fc7738a804cf9914b7bcef76646646dbf71f67428e2b9afd6c6c84bf68cb3a11da868856aedd97947dd81e23b25c70f4c39470aad26e398c813737fdb44c43fbe96c11024c969059acafa5f5806d4f2d3e032cdf1fe31b263f04028dad92ecd755753dfba8020a5059e114ac646434ecece29dfe28e53e796809b44b7b2af04cb8b6338b7b79f16639034a6f000c3ababc6669d301b8d37dd2050706aa4fd6e1acd0ebb08cf6c566a1ae5bb6b93df1dc3bb89a1df1def8d69da967d5c75d4b801313276c2a9691097ad4271d4d8156e943a5eb719c1d66f73e41286787dab5ca8792e741802aaed45d8ac7be1aa41648a216db3a8406248ae7537f53ff3e46f1a54dafc6722ea426c73249cc1c85756aab81140547a6c482a311bfc72e14353df95207cf8c802d20fdd242507fe3e17c4176338bcd49651a54421600f40ae8f3b12bfee477e73a6d725455899707cd8fa233fd21a9c771095414f3aaac2ab98a9ea5bc9bbf4ecb962c171e4c2416e682c5285f7cd09da9d0ad3e3c79c4807af824d6251441af02c5a46be49245301679d92b87679be4081ce958486f409ef4ecb9c4494ac9f95d354dd35385c4856d2907e776018198ffd49dac8ca1e3f90cdd66ad13969d7097e0cdd03a1a8aa8988726e1e6f60fcf8a2b4391aaec2fa1e7a247b325c3a037a429d0062c659a02c5ccbd969c8d06df6992d4888d60e44448a6497d4a2148ba6e15fb8ad714f30c96fa30ec229be961a49caa634f9462ca40ef777059dfb08c7286a98f4f48558e0d673c99c0b4ef59f947b984dd47922cd3ec3d36dde47c29705c7b4f3e68f7f3f8ee127ae3e5929f08ac8a04922cff4952c2ad83c08e55e1130197fd6146d8f98502c491c9b1a31390a9f7ca10bfc25423b4b49cbd0a205610ebb8bb0df6872d030e2914c5553bf3b8ea3565b65aa95e284230b751e0acb4077a8a7295d7a6661f6e1711b16c3251bba53b5f88599611c5ab6725d7b6f58a1e9d9bd4c22917ac080d944423308991660b571564876e8d496c12e26121d8c635226cca41144cb87087047f3a5543c9de96bb5e03016ef6d2c51b80720a2eb5371e0c6edf73bb1f15e9829491d5b665e96bf0852ecb12dc657d991e6a1cf5c241398f7d445bb2fbd4e16a8fc2ace94fe7d66683935375d883db452520f0725839924ff072281159eebfebd4b8c8e6f69b35699ecfd4d560cc502ee9e324751362dc2a6c6141fdb222c45725ede31fe119f467fbe94be0cae90d4ef0201985ded3cf8259b7f23238562c5b1b83aa33b54d4a6b95a05106b35a1588edc30e8bfd770294b90571c9bafbc374a34a114df8b9711455aad174eab0de7c1da611dd978ff757f82a6aa87d1b46d122832a5e974dd22e6af7537595e19b7d58618dc83beb35bf2caf7813ec1815135eaefb8e15bca89f8a8a3a9e2efff383e0a1210e004e32ebecb787d8c33f3a1a97cc8bc4870990df78b5ef4a870c8bbae17871dca72b2fb2536450c0fcdc020053bfaf4d81d91bdecc1879f73493820ab215f3de07fd8ff18692492326c9d0d9b496eff3b8efbe51ea69b1680af0c642148e8ced87dc091b4684f3cca7e67926d38c6b87b2c95db97fe9a8a3bd4db3c8ca1a000b9cb62dff74081ff9ed832f5792b513921dde7cd608d292b5a39cd43a16a668707c5246a6d6ea1a02f8ae412ed1ac6b48af83e393392bb8afc50d525c6d5c62bbaa9610272bedf9bb3ac694ea4d1f098a76315832777e5dbe77c8c6c48f6af78107a521c15d90a4e38146300ed3c7560ba032223f530ddd3818eb668ff1b2c95c970d40b00f5df737ba0665016bbab21268d491bbeb93d7d2db3da8412376977cd828563bf87de66a94fee80ce34a2af443ec6d49cb884e69c19fb97072b83c4bdcd1643cae3bfd2d2b678663b0f540f997d22cab61b9af1e0e707fa534373db8faa62f0cde94070dc9d468aed62a29e1a1098ca6205d0aacd1957b30be5260bef2a3b945233dc7a5c29d94a9980bfe48f526f405cbbac5932aaa0b52b72ebddd814f1660989a456dec4cf485c883e69494339df46bb34cc4c8f401d82ef945a6f8625414915ac0eab09cbfadd3d5c1c86f7a4dfe3f01ff22def316babea3dc4bffcc5269e208f430790707d9fef05cb7014140d0d3a3fc81561eb397a100055c316e859e9a1591a62cc0323c786fe61034b926effaefb94e8bde2fa63b51d47727f8f9ec09220d79a8eb366e1c798cb40d6881af2b743d41d84de0b87c190b4ab44b40194c07628cde0c294a84135ceaf8d85f00c2d6d666dc1c41a8f77df8b912ff28fdfde2bc1576d56c9a622a7fd249834e6f2498c2f1dbebcbd6ef4cc46cc88a884e7d6d36933fb7a2c7ff8950a190a959c8fbc4539fa4233d09d76f086fcd988156386032a120a927fc29d71d2ede9d315f15a77920fd29df81aad424cf8e0e030e67c87999e31036dc6465a9b86e21fd83eca7cb1161afb5873cdb82020620ddf0c5d753161b070a8e70ddb49ec23921df252876f7dd65baabfe34faa519fa85c08d60977c7c3b08ebe5bf4bcd91cb5427cd3c81e01363c9d6b892696a028112e6a40181d0f7676af88ec3c56c98ddfbfaeb37967d580a47e26d426cae493076ccc2aa35527c7b69cfdb905f763fc1af792dc7614e11ba1005c3913db0137eacaa590429c8d65f8765e44915a8184e5c1e807141fcd978bbe353c50b8bfc463465cfe0fb8b635be7117341eee6cce2ef903b38463ddadf61cb5212e793defa62d031ea77385539b3aa4f590ba8ead477e76710925ecaff23465d391f223f5ed3c05ecc3ed858a49dad3041c0bc1f3f81a21ea9713606fabc49465bd7237cc70e609589ca2d49622f6118e986b08e4343d9583231e811305d0071dc08e62d3515f86c87e84f943df07fab04e55d6c54132792226525d6007b67e4531aa4f7d6bdf8809b3540f7e88d88ca26b302291c4ab709bbbc513bf08613849783de1b6660dd5e76ab013e633ccad65284c3e6eac0948a66dfa6a3a691d897ee180cf3c4c42c43c3161e70a1a24614b1c64ac9d4cb8945efb1052026b202379e4fac09fb1a0102250868c0241ac12daf103519802dca7d5b8cd5aa4a3df18e1a1ec51e7f28a0630d97d93308c299c053083371ffc726d667963f123aebd1de4a74435a9429410340ad13e3051cce62baf2c2ef4a389e6bd54b202fee4e278c40322740eabd505a6f489f807b95eee806cb9c2fb1316feabd3a53625712d05b66e52600add0543b83868bb32e1ece97528e05229c8cea094c392bfebbe7a3453626dc0257a1b2f4429c18d0c4e1e50e7d4507bec0249b52487e4eb4917d2ab5d0287fa37f71d8a8a23acd421f26a03facdd08902786d63f1da1d2c1af96bf8c1c6e0c7d0332229333f1e6cb8314899d95928e9fa0a760c1bb02e9d0af2fbea3fd922630f1fb1967cfa14922ed58c11266bb778678ba6400afde2937d405c356d3495bc45b2ecb7470eae251099d33e1e293abe021a41a1c6eccb4b746180e198fc37d02f9aaa307a7eb7e5fcc200bfbb88a2d82b807141ee2438570a4c706140e5e534c54ca857421b162d2566cbe70bac6c0a100bb321e75a65e7538cf646981c28cc596a79daecb76201d5c696ea040c1470628bcedcbba6faf54e580bfc86c6e6371a0f0aba63fff47e48a380c714a3dde077244fad135f35c8ab7e2b58a070489efd7c9281ea17877c2f0668185cea5cbceba68ad7fce5ce8c1860e6b3edfc56e8604e279a9b519ceb19dbfacac35ce422ce4072bf8b1130dd6611811f089d2bbe5a316381ed90dbd7c4f8c4bb1985070176d03a8794a3213263cc319fac410e812352018ae78e443f443d77d981c9b21a682b940a4eeae808c3dc6fe056b556de8db45500aba51cfa4a7c3745e35134db08d278493c13a92ae995cc1975035e621e594ae19737f69d8a520490056ac51f4a9c9367839f4ddc34b43e6a2286e428ff8ecdeb9a8ebb404a895cc51f815a8fc92070b249080f54b3801df4462498e2c715dc9e0da3e03af523f464c474f9b709ab4c7eb66733443a3d3366a938cf56634c47b2a3c0d995fc61f5840e760b3072724ab9fb1108c754d7f70948ea1edeee245fa20eb4390477858ca58586674f4ebb181f0fa9953dde43bd3b343d72e023293bbc887d4fb21b7d552ee28853cdb2eed437fdc1700f311870553929067e1d525819769d1d0ebd702475873587b888123f823a582975a0638b14d9f2413e5f93581963da05f3ea50b6fb37060e1d2911b91c7ed3faf4715ff8c367876b9cba968d73b1e4a64242576ba86937a5b155508f4423aaf4b2d5b9fbebec0a9b58f88879ebe66750ddf546b7d6d6fd05231482aa3301ef8018061dbf4b522e2ea49aa2a20d4d4c8ad70884650ddef015126cd18d97f8ab20b2439fc94df2233740ddb6da4d0a98ce5f1a070ae2df6c077d45603c4e368c9ee7ab5739cad530a017e52314ca1fc99dee5337524e2ad4f6ff772764c73b073d3ad169f147da130391438733af7ff82119d6d6798abdda48ea1801892f377b2677de898608e7e23c0b3549cdc314652d1b067e545f09853b3d319278d5cb365417496564650e58451938ebfcfa46902383c8f7bdbccbd7d807fd3a93bfa5bbf812c07f31ddc5dfe9977e60ba583812519dbb8f189ecefbbc9859ac25117af662c82b27df3f6a8fb7cdadc7dffe8d7b94c2ce3f411e3522cb488d0461df8552d36d6f135291881f2916496147b54bd4e32e53cb1d9685c0d5bdb3096a042b57607b5e46b32886deeb336d6905668c8d7a4fa7bb5cc0097d2bc3cb1553508e9c40e12ba21eac23230568bfb9ed3c075e49b9559642ba5b96ed1959d0f58c51cc6c9b030ef3995386dbcb35c7c56e20d9f88538de57027406080795e50dc51e76fd4badafd52c6867a6e5e53b02a2c793781c8fcc0124e0353233f1417ced46a90c8a88351658809e444dcbbca8b2bb5ceca46c3d684cd7b8965c3266c80891be981c33e20dd701d441028c4f58a82bd44bba5fb70b8bfd50e7c8badec6fa994aa38e3d0ee17040f0e9e61bbde04c2cf35c2d8427b6d00feca4ab5dae76fcaf1b91aebb5d0287d2f74e4471c90393ed522b510ebd48a59bf1be8f733ba9e27f69158501f8224db8e41cc96859df9db20f4b4bfaf4fbe5c80a13c63093df0edf94911ddccddf53b420108f00c1d788052a50837691cbc52f469438f1fee0ff6b9ff473f064de978d035c878b323e298a954f9a2a5b8a6937b90974e830817a934b36ae004f096c55ce368c39a24af5ed7ff0db6f89226b7d8647993c9160ec8bdef2e15fc9968983a14abcdd7297185351d29aacca897cc2aaee747c5d50a10e7aab7676186c0563e4b5add32063b44133bfeaa477f61a4a07106cb6b4f9d34c1b6cdcb540a767d6b606bca17b16c75cbb0568ae4e9db79ef436b30fc8f2329ac3f5e8d18c48e8cff7ad723f6aaa38a613c06ac33810b0f3f05ca549733f69a002e472bfc2ae006c1ffeb3499831cb547d5fcb38e692ddef25ee4fffe8fb27b2d6188efee51a241b95652309229c1f8158d9b5cd351977b913379a09171cdbdaacdfe9376903c8f3240971d1ea4ba18a4f81f54cf1373d99c7402a98db069a68d3aa21fe4c8692be1565b79fb97d8d6f6d9f9e14fe69b3f7bae004d6bc75e252dd29491d912a531a5d30be5e6fa3714f4b790077daadf7edd85279386ce642fdd3791536f4c35a59c1e78b754f7930eda520468c6e7376d5a64cfb6914807bbece68114dfda73bfe17d5721feae38e3c3fb2c4d78ee488fd8904b405e66055b37902220a565810b079a5e6b841e4285df535903896969fdc194e442817a7fb1ea440af8116cc9973d405f277c8b20852f590926d9acfefe4cb69880b91b77236c8374a2b6caed948ad1370a4828c12e2e2096a62efc0f970a2ad79f29710d17c3e8260e44600afe9bf83e19e1a7116ac94b793bca8db43fde4015fa699f7bae8e1df0a5557f8ad9bb13ad7a1c16503d1a1f9fe0968aa1479eaef484c86fac70de0af87455953cf66f6f8cebcee0ec500dbe19e6b9c6219c8623ad5386e9a7c05b79bb6c81d4f8084bf55e0b9fa3950fcd37c7fc7d97a4a3fd6e64632b984b7de069384a26a1304e133400ca054728de16e1f21f6d614eac66840913a907e0b5ec5656d28ee30b85a91e896803b40ec10f12308d4e5c5fa28f290f5311a9e0a9751e98e944a08c4eadc14c749de2d0d338060ba3e498208e02c6d7e8a90e898c1030c86fadaefc65a3647e0f9172e6622870cb61a96911ae0451ce929d2a4258b450c85d38ecfbfb0427e2a1a3516739020aec8ac1cdd28213f46f51b5040e4506f8183a6c6719a165ea46fd0a41a800981d0648f7aa690e9397c9bec43dc33400bdbd7afc1da44f3849b2d8a3e6a4df30f213c7fa3abe962119d4a33edd9e8fc3b0a555874f0ff2d094017508e6a67f4c4eb97027a50492cb5377fb2e8288a67336b675d8f127fefaf3aa28a7cacc964a93ee5136ece9b1e4e482eee3712e67e08814c37f1425342b1addc6da0b09a82503094a1602525f6a5e6267aa4cc64a193ed3f01768a0c30ad1f7ae04627edb1b38f696518c90374a4fe264d9406e4186e8582b74dd663d2709a3c262e56a1f7714a3a9228b95ccbeb6971217a305a15be78ab33735112d50ed214165dc3aeae0d6142d394feb25d92b4626e488a8b09b671c38a27fadeec261df857d0c8804b9ebd62d89f9f8d8f9edecf25c17e498305ae6445ea100aca609527ebaf2bbb38bb99d2ccd88604fdbe5e60dc33a30f3e20e353dc017088f35b3b52810e68055093f47fe270ff72c907f47aedc091d7f286be250b1508d1f4dd45f964b869e8c5d36020c311d9d8df119afa5108f1059b6ad71d0ff251e9934b594eed9b98f1ded42af003230503308e02a5506a1e7fc965979b9465f5b592d88a86ad2bb064876204afdbfde8ab1a1a7693156ab04bcd7c13aa6153043a271e2dcc97aa8a7ea3d091a47228038152094fdd8f617f4168e430ad541a64c57318929e7252631a7f0820222cb58c941a00b43db4d74bab2f66a45b57d9302cdee4a2a5a42818ba7ac9e4152ed31a94f20020595bb5705deba5a2022e0d1745dac7cc1003fa2477c5d25bb15546f3ec7820f5ab8bba0aaa8d0d51185289084f033dff44410d4a9dad0b14cfe4a43198a32933479cd14a5f966b28fe1c0980376679ab83cba6c0c4ad1ebf954381d1e18fbdc6822c8f40f46a11b9b4f040740f711b6d3e91070f23637cde05f3b886b147aae1aeb64e87372e63e9b467f26a58a8630a9baf9013ee0990602002f68b83888119a30995d428eefca32111ed12baa2b741b5119490132e4aab167733d67c519e150c6c7b5c784551a71e00f24ab42466c912e473116c38f349390dda426d8af3e310a747e57c343cc329688f367944e4ac322804c7fe649d17e5f1fc6422932ad100051f9898bfe0889582e344face99a1f4bbb234e586e80fbf07b03a27972929acb5711dd157dca201e60197401a9baf12b83dd8ae6d5bcc82391ad1c833c49e93a1a67352f5799707986fcc97f6e136f1497e9876a75a91e6df79438569710b2cb93ee725989e450659a8e16cb933b0dfe6774d530006bcd4c0b236a79157c3563fd9300383778d1277d650aa38ebae9805f82f55dc5b2d7de074422a88a3e57b6c29796424395ced43ae81b44805bf7dc2c041937705f9614c159859ad9c5741db6d31e5164d37cd2163330ce0d0aa9fcc30da615a4300d1df853598126d4006f008c3db12699bf06255b34a8137eb9ad9899fbccd503a19fdac2488ef99ba83d9522000f00759f365f19a852fdb11f2e22a601306d9e0953e77f7f513e4cdabd26b82ed41a9f43fb07f99aa10724b58ce1be679c18ee64d97eb76f43229b93b8ebefcf1ca38425030d594226128fffb489df4081b09700c7d65d2d7d41efb6e16fa63eb6da719fe3117bcb5bf6ab4b50738f14f16a86cb7ca37b513ab83c9ef4ac79b17c48cca75dad9e42d0a4c80626eb0977ec8525bcc6ac15e6a9a5bb17de8f8d883cdd1da62434db0da82d29e578133a9627ad9c7f1c329c15e206aa79753f4696c5506dc2b607a43f37ce355ba2808030686109fac4050d4a86bfb76f532b800937b489fa8bc856504c61ecae224089e29a0a88c5d8c2a75c554376ef9fd35c3599753b793a62141cb0783856d7a1b2fe1f0b536843545aa886031601e528f881d600f6560dee6e460f7d34aea560b711c9a49d94f8580ac91718a3ccc2749aabb539aa4f2e9d7feb28f112f45983b4773bc6ca28163fbe65c7b52a866a19b698fab103c61b0f29aa7fb08b9aa6570edad8e971a444e9a61a22e28a64694d9b5c104a03522318373f7df29c08f08d95124e8230412bfd7dda08b357b38cb79d63d82dacdf3a3d5544186020306c09f92a688734a548c9909bb0ad23c1523752050ad8b2d8024aa1c828f7700f262a1214c011ebe43d89a8caeb82a9c36725813788278fed18ae5ded578c743591b5ce960e5c448787ed78280cd8482df380ee0f9e8a676af20ecb623be33128b23f3ccb8af4127c0855ff17b94a126829fcd8fde279dc0afb81d13de095aa2fa176cdbe0eaa5cf3a40b3c9bfd4a250ab04b818ad382b44880c6346057457148c4888ab899d3b6ae8fad98ffb87e85c1b9bbc3a6131fea30ad1e906e8a6ca7990034ee6451436f7fac85589ef30ec6cfe206c2ef90b51606345029a71aab56381a107140b5106ab8d55df95e1f0cb7399f08c2597a9e2a9902794ebb2a13a935c929a19ddadd1d9425083360bb71a8db5a875417926e60283a2b4a93aefbc9484108479b6d45feebf78fbbfd1ec8ee0f64b77a0657add7afafc659dd08e03c0ed7c37000eb1bd9f6223dc2150033d2397610eeebfd6fe5088badb693d1a6a8a89b663a706adc6bc88af21cfaa81933a61332f079faef0c6b66795aca581f3f8b48282a6fba8fcc0769bfe2e86e5ddc9120842bbf21a6e2fead0113ef5baaaf155baaa19bb882cd71d7d62b2e4844e91435cc4b63617d45cd3b14d1ed4c5a95c6c70fb01cbf5e918dbae6ba6e3cde151f8ea573cec96b6d96ddd75fbf463fa75312b87ece9484dcf31f2359b50d7c4c6caff380750931e8a41d9d4967d5aec54cd7b690f147d4df472f903d17540f5edc6f251154eb1482ecaa0b48b78273394b8c42f10dc69f6c5a555c14b6703082316311a329b34999a152bc4241f8853cab4278443a62b0eebd9bc24df768c19eb333ab9e21ea3d0bb263893b673f62103b08925734b7b61a4dc24326e3c1aba40b29490e2df3d80571f4162dd9462d074d17dcf5864192ac6120a62fc3a316dee4a54672dac14193fd0cccb9fbb37abf98a4e99b45cbfb70562a52a2c88336ccedee613dd4b08b94fba252333e198fa30b8bc770acc47a2d00f05456d65c4806e6be3242b92f9567f03e5f7030b73c7095413d679815ed473a87a24e81278b6cac4b799b696e4e5e458766149c99f196232af49b17487b7ae9d24f3853ed1eba1e84ffa2305e84151c5520fd431e4d5b9b824a89a025e787d3fdc094f3e085cb9a6d51ee0c72b05b6fe0873bcbc9c9a83958887c7526e8e5d801719b5fc56241d038402e5160a65199d7331c841d367437b72fc4e9fbcabe27743488cf876462b83ee28ac3dbbdf7110b33d1cb361d77685521ebb24f0e47cdf6d610472780de720fbb7803367bed1ba40f1fe7064c1b21fd8676f6d2f7dd3610e2344e299458b845bf21ce21e2a4a3dd93df1400449cc14d0761bd2fb7338f83d6776348c4fd5d1aa6e98843a15341b72e52ebe554ce0fbfbd2a4f754dff145fe6b0d16fbf7cec988c47a3342ee41e52a1a67a4f6208698aa9ba51d9e4dd3b2156bde5426a03aecf68331c9c797305c4d9837e7da3262ef40d8d3719c8fc9e2257573f0768a0c437cf84e759470529f3645d1b922f023f79358c3929d3f05115e723d85214651d507ad93b9a78aa5caeffdd1646a2b1b4750802a9fca82e41473c2cdbae615f155c3a8fc94360f5078fdc8181a53f53849aed21c60ecb160140548c2cd546d54794c8b123ec0a8d4cf1cfa8ae4b84ce93d3285a708b846fbfd3290fde9212c2fadb5a195b633c777550759150f8d97403a2c36ec82f41c3ab03d1170da75e86a5ec0d38b1c3de3a5462d304fb5cf73d908b50d340c9c1f8d9155ce91fa8ede8a67f528dd38fffe4c38e6fa95322446fd6e3784dd1c1582e057b3e6c9391f309ddf625010aabff80c9e1b0de20b53fac28979375a0bac5daefa2355969be56b2193af8f39fd37fd94c1efc4ba5b9172b7434f245483754e302685f252bc778ea50fffcfc230fad465dece988ba86d81c763ee9bfea2b9ea64afac9e50901f9c0881e12e1ac559f1207636cea3a41b6b539d338e70f5b5c6a05ae9024495d4d8dc5ff9136f717aabfa4f50f0ea47cfdfd4cc063e5d3fc661c553036fa27acba7943e8f56fb40dcf25a11e0a2aeec2edcf0bda1d66b1abf3f08f0955f38e202b545736626b8647ba8e2ddebc631bd7dce678d800a49f213f1bc876d6f2220ecf5c0d4015de77eea7d786f3874ed352abb8d7d208781773ada75751c516042e87afccf1cf95e1673a867645f576612c67226fd89f3bffde6dd5c89defccbb2edb0e1bbf04f2ac86825f6d98b3b385821343e8f112c8811778fcd9921d00a18753b71777eda881f02fda60c9e404a7bb013b0e9dbcc9c50b998c37dc6aaac61520300b95f62c0939e974997feedd3e3039f16025f947656f5100b449605d053f27879b114360a5ebfacd0214c8aaac56ed968e8aaa0b474c3706ce8c9d39809f4368e606d537941ac3ed7f2dc2415bfc51c60039c3687e45d007bd81016422dae4aee316c7e750badbc7b9a43417fa163cf9398a1dd2e3eebf3b86241ea4e8175a3624c238cfb1c95f03516e4be2c0ed3aec89e4aa9e351d1093bfb9240ce773a28cc637b67c98ca8e9a5419ecaad0cb63f0448b7187cdc7275468524a0691e0e5c4a444514c6d73583dc8fb63c5cbbb274d5699959d31d81b5d309dd5acecddbf9796abc9d533439e396c2b43ce9bb96b45f05db163b21c2ada14844f0425983a7942172ceacccd7d1a6e4204e13e9f7f08162a8bcd123d4ac9d6cd2406007d631927e26315b655fe328fe19781ebee7b6e18c56205c7cbaa1444d64c4807fa033841bc022aecb928c22c53a9a1d3871aeb334d3bd70418ba556f4132dce8c4aaab5097eb0cd4fa72815ee39b52b9da4543bca67e2fcb53b7d97cf261d71db71a14b9e69c2085984c8288e0f8aae145955dea4229a2a02e6d4007c1366c8bffb6c0cc5e075251a9fcb17715641a30fc1620d15d385b626e8241a3af9807f1304ed409a887de8f8f5c762d4f5b1a91de29a8279c5b9442a47fc55fd91ac39fe04831989acb34751e2e2de57c5fcebd494f057339cabc3ad6e1ef54728148f9c94bce7f520c9cd8171e4a8d78ad4c953b7324e6e6154dab177311f19649409bdae6f3a69264876ac30bcbb89bf5480cda6e3fdde15d9774712c3d615d41e3672e08aa18bb5f041a3221e435225b4db55e17db0706083d8e9e5acd088b44895b8577880cb8850bc4891a236e38e2cde20b9862d87b71af506c8c8338e46eb8dfdd47f025078f67b3633dbfac89582a563f47d8b5204c25b5a45a16585a14a11b00c209f558b8ff11914395b1e4878a234ffb9551237343e02477a0432d45f4e56a71068aff21d8c16c871d7eb6f397712d3c454aa86023d0379a06d3b069fc3a720e06cf012af2e2c95c172d790870c9a965d218606f2ce7b8ab04d2aef58a087032e5653b194b808729ed00101204ea2d2c8808541d53a38d059224407a79a920d696db6f1990cf57f4c3dfc4e7eb4919b6c79a30592ce52b342667bd3c7c1a9f726afb034c5967763727a5ff87b5270c6fc12f4bd1494f67f35645f2063c2e95965d754d6c47f5d209349d61c5140c816144103e3f64de9f6abf2fcae8edb6dddb5849706c69eb7f67a93106a06c5fec16b59307a4507009b5f58e8ee75a78f7e8dfe5e995b009fed6cb9c7111b56ff563ccaa7695f3746ac6c9f28509378aca563c07b930ec5de9d9b9f240699ae741481011d798f24ca5d3599bf3ecfbca220f6ba2c4043f532ebae5c1356db6c47dbb471cb4f1d38d42c24cfaf1a42f8d4e8c7682bef53a722679b2cc68d2e290180d2fd4739b1e9e9afbe5c16f48048387c49f2b0fa628e01900978719d931444ed783bd79160b906e1be8ec02ca2865d89a0c2e514de971595eb68b41975a1976d1924291825aea7ffc31d6aa80596072a04a5bab742152e6d560ab9df99200f79a712d444b26083cda643f6c1ce4713c38cd3f89c7dd6151973c8854e24f3a2d914146a40c454dbaae14ea6cad9c03438c1465fd435dd8186001c1b04891d310591e0be05de0f60dad57182be40c725d460d8dcb56e28d83366bc3b3e7f3441d214497078294360d83e58e6e2a5d4b14c5e450bda1a462b03162f8357c9efb1dc18a8bd712016739fe16bb32eec4c76339756ca811e6de3bfb1af59955ab2d0ab9122f4a04aa097c08a2c2aa7432f60cec73e484f97e78cf7d759d0619ccc47edcc821716950beacbb520c84411ba2a1413813d1ad65c2c543670826be702125e72689900b84398440e0b4450bb879633414047d7e40aa9875332474a335ee17c2801569608281cdbd25273fde79a15c3ecf153d4dcce83c7743eff218a8b5dc76583089cd4f2d79f27cd8417354a86c3c69a697d477d8cdb3c457ebb2a23d1d8078add3b0eb4481f7296726e316c4e011038151b9b433fbbb141ae56aa127ab507094a222c4fe0a29cc167c9385ab1a28bc58e6ec2a6abfe309186b3dd86a6dc346bbca88bc70f259681c00017c9f16cb8c87f7253e9b8bbc77a14f00dfdea26144ecf4804494e01b14b9c56938b53d39c0b3baaab53ed7b290258d6e80e440c6c017a0f4fb23e7ccb285382cb08aa1a1b7001a8cec3691d70ba7610914dfc28e522fd4165fa333596c06c3822be81d61ed13492d241e91575dd02ca827f2669a6585c3dc74de73a5e00c0fd0c3517569668a37b89a65276e98cb2381bd38d5530cf29b8c5faa2044f66f49703809e8c2b3a14b81984038842ca57be30f42f7bd6396c6bca15d12ad09326a21364740984bf47bf420223c894c6228130ade7e30208cc7f04317f22c93ab3effba73fb1b3a5e3c977a5f566f60b66b5329e3c49e3d0f511251c16abec0d8bd7c6b620d872e8603ad235bd5d6fc8709c3d92c15e3f07792b0da6af4ae44c5bfe948d893607922328fb95c68f6679ea8e777f3c652655d60195477bd56338f4f59f5226de5c2bbed7f7a6b5ad1c21d9655e661dc5bd002db2877b25cd73497849c09e1ea6d50f1fbc26f292ee4b23f8b6e55e018d3055d5ec80421e17d9a09ebef35f90ee2e9d2755f9faea7c78580fa53096d6f065d8ea730776906cbfb278cc8d5f2c9762ac46db0878bae961480b51935cc632081c1033ada3f444254ade5c80402c59f5c43d418c2f9340ab91028ffdb671ba56b645c18dad48854cd079606ada7e10ce3e080a9a1d1c81ab4b9b646798d285808e292499225b6b100e458686e447c3871bcb156932f7fc369105ffe8dcd4a8a63429c132ddc91505f1074574773c104c51a89d170984df7e7f09af59ab5a993069d1a0bd54cbf243dc8658bd02988d46a3fdad3fa708558d50aa5ddd13fa7596f65f2f694976c72b4907794e9862cf636be6bae7742e4716c27be6b203d22a441bb8f913a408da5390ab89e9571c7b5b4f0783a356310cc7e616cc02c9f95c62c51b77550fa74027405b8a7455e2951c82570f0262c0d0f0e711160de0919310e5a94055f6884cda3e16098a04d9439442679083e769618c01a8dbbff2336ddf9b16029c270143560d12160926d876c3e8c47e9b69b4a9ae1b94986a11b499610995e329420ad74c486fc85c9537a7c2ff17c4b206dc0ae0a1242d278d1cb12596a178e22cd4e9cf2ef31c4f39b7d99cf8a2454544e660f50f1f5c5270a3a28b8e854b9a12259626fa5b10d84fb55c4338f0a5af94c630a5ff22f471cb7c412669a8c1309d19a77ee19d6897592ccba6ed9cf135d88916516ac986f39af5434abe0c92eae929ecbeb79cef1a6edf9ddb9d636584364b7abeb997de3ef6a85f56b45a4bdfa7d2ad5e2ddfd36d47da8d83f48aac1681aff5274de0b8a0c8e0e4a47205a3b25ea79665535a06617a26a0d3f514b90eaac1522a901b020ebd944d77c36c57334a4762639eef501d83d32886e2cd4aa30cd7bc1e2b04c5b59fea5eab987d34337c1c1bdf2328974df68e21dffff41739e125e1e3966b7705c4bf30d2d385f9e9b7e51da4a3d69732646048b8c72606e3454025d9b36b68c78a84700daddf15905834a6b8bfc8c8d9c0180391a7abe3997ce7ce3329790f7254bd412c71066b915107e4967e3b59c2eb9c35e94af16c1428e2425edf811a65e2f4373874c583cb5472b0ad94e04913cac4f914392b1730f89fd3615f2538dd5ad6afbffcc2dde47033899f07ee4c830ab466af5eea2530463edaa8972e091440a6b8d0d66bf89c63333aa6a6e819216c07cc106ab3aa0f926dd887246c68c42acd401e6dcd0710e46b9fb8249647b66fc290947f8b6e25b57b1bf9907d6f424b04754c81fe9cc49307d342349e41fa952bda8683d87896d72eeb000a37919b40cf2356f3da6aff37ba58e807dba604af409cdf6030ba8f2e351f73c69f5a56b22884425972d78508eeb9fa9c1acab5d5cf510f15cf44efec3bc582c7e7a5cfa6357126dd95d0605512e50efb6fd2fc1ca5ea0c228ae4a5872032ca026ada0c9a767c43ccf68c7600bc48eb8606d4740e13cd81e97b93da90e5474fe7473495f22a154ab9824d6f3240d31473d149e0abe820e498a8d893ebdc4c8a7994c6915db6aa368b1614a4324527b88f1849508e14a1bbac1fb9cccd05d1ddc62f4f42aafd2f8ef8db004d7855268ccfe625447f51e74875b8d97ee29efa5d62d3926973940a637a3b7ddd0287836adda07272402aac1c04b09b26037b219ec526a94d9b0ee7622cba8975beace259e9b9613a5474b7a1a2ebc1675e534b2fd7a9dc06a456d2f5d59ef01d5af411660118d50810ba38f766a6bd67d567518461ecbf08ea28fdee1695080caba5fb28db36ac41cd7caca109ce71e2c8f28129c99a935030f5cf5fea9f34220f66b29176161a14f871bd79cc4ce225176ed39e774af2e20d81fa833a452222556acf891bfd86b5460baacb093ee2d037c821c75d71da0b63bf89f5b524814e3d1dc171300be399a27d48a8fc59a3f903cbe73188352f8582906994aa2874bb5b9c3102ab353d4f2eaf427658818cdc068a3385bab4355019bf1eb02c577ed82bd83e64c03c2d76ff18cd4c726c67171caa53823661ccd0e32ae7153569bcc6448debf38299bd4279403e04d706deee156ca54fc081c252f0c9be3cebd50430eb14b36a176227c314dd642417611f4b011d2be0e373ee0938cc43be87db03de175df5575f8813103340a44ccb62fc07f472c0d8bed6afecb69eaa2d63c92e9da22d94651f228fd9bc13aa5fc9173d6e52bcc41b629b2be56617061e2ffdf225b01e9d88687a1e6f452c05582a352a8fa5249bbc10273b303cc6cf130c63670f57989107598726fc4daceca49239fb8d495f835529963021af7ab2ba19521e927c2b371021476408c7945f769317f1f1552d78b189120b9b6810ebaf615beabfd546b7395ef28aa6969cb9a57b7ca2f102959981ba86db688e9b05f3547224a0e985f731f4657cfb1c199c222496fd08838bbada98fe6161541a6eb167708d15512e7e13af2ebb87609ccb06c7e50fac2cf6ed3f608bff70f681eb3a0234a624361eb0415f44a8cf558a841773bfa488dc7e847e1e75d718f2f54f693abd78dc77129121e7555b0c35724215a2cc8642c609810ed002e70d026514015aa38587af900fc7dafd17d421e688903e009c4f1d8d23475a7099b2c542893aaec44c25b859933be3b27b6332147459e975423462b6ed1b46b53aa1948933ac3feed00af76aa1536cdac1d5249d32885dfc317bc363057f82da01f5f8ab99fbb8b1f15e6cd41a36cf36902f6d81a83cf0d4fe9df254114fe4e0bde43efeedd5b2ec882f017f87df831df2835f92f1e38487e90726f7520f001d06259b2d500190c524a5f836020451bd48f5f55e0d3f2eed96201b9ff08d8ea1766c1d2db5307995a6bc48a19105d0264603bebee9588de2f8b2518dcadeada6dda791395e5ac5996650f9bb827b51c8a3593032333d49af246ac239e3cd8e9d2a37673b35a01d897877ed1605bd2331d3133ef86c964057c009074a3b959637362604981fd95231b2a2ab12e375d3b04a68d321d5a5034103821ebf87a60f30dded5e94c74f41d427fc2422345581e89547b84a05fd04ffd72d5de6317660ee4fb92c662d6a8cf4845487579c02eaac8a9469983340206d2633b2a89fde39f4984ae3cdec4c518bda6c1da53a6a74c6c3b3ae08eef172512b2ba10ced425b867275eb7cf9ed135c57dc364e03e8fd0394f71c412ddd1529f4f260fea8a89ebc9eea5035012553e1c58ac3a6d036d3b446499812d50758acab81e642454d8d07de243a0143ae7206033eca81481d12955b7c62e2edd10bea7d3fcb2872d8e3e98017b91ec3b4358dbf127b198f90f6fd0650e935003d3640d36bafff1d8217f68ccd4719b0102ade2b31a041bea6aca3f260d847d6b3a2c3d8f419a0a4a81204dfacdd29d23351cdc3bc76d7784b814f54e79f7fad955ea9ab0fa76b89394f77ad32219333f6faa684374320ab62bd5e5f29942fc0e003882f55e89171494a042fdaf780aba04c9e0dfb42e44146700ebae8aa3041124e9ba7900a0c7d813a94c1dc31d2e526a851d90d39b14452158af591c9fec5ab987069173f9c4cbcd7147ccfb5778ba20f08eac1e6cf358839f1d676e177e5fdcec0bc04a9c0766c518e82abeb7b1c807f4215321bdc2384d147870186b26a80af1ef9eec748690a3f0f7f671de2033c07e86ce51134c79b010c75ad68c2fe3295cf57c5e6569d164d0b335ec08be2bf456d51c6cb45a90571c5563de81f71a91b8d22b334fa7bcf33ee958e742efe7e99bb0bf02d67563cdbc5bcf2e8743f279eda990cc19a3097799e6a7a067b2968ba0cd6cc34d81dccc4cd1d6470ee059740ad1c8ec354888d2302866f7703d173306befb75c3bd6dde9878b409b8151f8640d98156a40bd727184e4af8bf780a8062708f7d09a33b6aef602902640895936a58f15171a38c17b4488d087f63bd07af847e1a3aaf3590e73a4c37281134622bb2e47fb64df2f34fc24585960af2b7cd0d1a53a10910f8aa268b41748af6c1c4f71170c7b2778d8ab8f7967fdf9364969c0e6708ba535dee68a70a015349fea5f8194f63146337716273925bbad191cc08f02c1756ad146bee46e67ee220c34682877b9698c63961317c64162d4e271128f87875c98705a256377b5548c642de495e46f037053a9f38458bfd1cbe967c8c1478b30d7cfb1bfb8973f9d662d64f76d1e48a7df65900c0c85cfda5a8f55b994d64f97aeedd339cce1718a130c18d367ea33c8d8329b2406698f94543e2a2ac8b055c028bdb0433324fafa3081a43b0aa9d8b0801958148a60c669af55c2f0ccc00d84ee0df82da1642e3aad78f71574c0ff5c876b47b83288879c4281638c018e60f9827fe0e44d875ddbb92e837bf2153aaf308fca9a45756be6764419ed8f6dda1e3c3973769ca5d47a4bd129022fa00515d9049c9d8edacf84750a93aa8ebb69de6ea5a2e003317f356c5d3e351a282124837dab1df83b8caba0e19b7fbf2f44c282dbf7ee7fc1d3fc4788ddddf100ab3e10db225650703472c4234b9c81525403ffad681440bc3b6fa213948d208586f004a0946c0302cb316fd06d761f0cace2fab0019897dd91faca6a95bc553066f9c15b209f3bae005150fddf62b604819fb22a4ccc3cca01f83f8b28a46c6ad09ed99d8bf6e912709362d09490761a65093012740d81a93389e01094efbb38ac49e2122d013bf2bef459198bccaa5366622298359a7b2c50c43115c3406a118dfe2b9096ac1e60eb589a980358f478a6cbe92bb64e5a80cd7c200c24b1bcc6aa5d01189ae9d752ce734f143b1720507db6acc02b2751422fd24959b76f334ea4a56b4781a4a6c13b02277bbf6f42108f3d6d5415cf0457da5f4c68481d083b20a616a55f8811b0f8e89a692ba4b431ee0dca2fd5ebbbdf0053b2b222c2935ae5f881e046c41250b21f116ff068ca1e4a4746a30cd5689084ac7bc18e20268a736524c47efb998c6d7b7a82d9eec85670966a24a808f6ad021e08d16b90fbc9758f49d73f995815c3270047a251206b4044c92020311cf79e3ceccea9a9040b0eab8cc8999a71725ddfaa35ade85fc8248aaa026f68e943d9d96b2aa2ff357762cadd1890e4e0a45a4aae9d2f584c8bfd1331aa155d6917c6c289ee696c2692f9ab0ddb232f17423d34a14eed00b7e7220288f30c1755ee4c1081a29957f92c61861e37453265c64a3ffeeb69f518a851328054c300034426341049540c7783c8462c8340441a47018994660041a8310a8088ea46308928261080a0a21d3388c40233012854011740c47523004494310440a8791690446a0310881ca9020efae1aa2ec3e6da046b08e4a205c5b4a88315065ed921cb04cccfc2586f0b36c60a78a333bbe2b685f7ec3710f806af2fc948ba0bafb64093918f085744c6635e59eae28294771e935067178b58ac47a529cbea7cba3f50b3a105c8540d220328210e6f7c30e480d29f9987d8e7d3609a752df57e962ca6d4a6f5c8bb9b7bc4efedc70b65e02fce341ac48c36db31791a0d6e01da221b6b117c2f8643287f10cf69de820352edfd72fa5037551a4560f14f17e54de3b0cf8c576e0aa70d060a9dd2b384d15a3025a744f608fc0e2074d6b86f29cb423f66c2efb1486ab3b46d639c29bd91cfb611b2a43a758c0bc433eaa2dc573b483999d811da724ad4ca03cacc6d02f1dd0846d7693dd0f63148551a1e78017ad2ee45c05aae950a34577fee7c79dbc641381e56af90a2be379352aed19a92a469b4ac48db40b343003336936bca952f3dc9ceafd207056cb48aa1ce0541efd5492785f08a04ae3f0a547f076db5141d8eaaea53a00d0831d320189dd75142f7d4b41b40d2ae1baf28da93c2b3568147acabd6d10ea3c8a4cfac73932998afc2801a8810ec03070301ce9d98d052139996ed033067d839c7d609ba32a82c4516af7bd76b84f2d42f094d1705959c8473bf7a30040142bd3720252f258679dba6a2810b59adb972bb910b086676efa0820be9c5cfa0c9bee94093d37bafe9f5c072b7ac2f5a8d9e5f3ada086670b4e04dd8de92cb09661bc34d1b639b48ec17f10cbb839b62a1d05821cb67230d391019527052d6a706c62f9d23adbb74b14201cc70eb968b777cb50256e10f550545d0da81206b8afe81ddc7e83564379e416f8bb3c08459fcf57121b257b3d5efbcd9d2f76dba440d919d402b3d7e061f48b1062d0786ca2262f6132258634d279bc31f3793570de739f3c3b373607f98d9851a704e8510052d60dee8bb3d2be76f24bbd215b5ca1eecae1961bb1097993f159fa4e3e4bf90fe653323fb5134b15da93fc0d181297b1005186d94d717ea64e45cb1c30622328221e86c5df108361def7732b0f0dba6c3833acd50b73476af4740b3097918da3a60530c39b0b580141c0ac57554f907bb1d34cb2fc5344ff9dc0e87dd77e00ea3058919376a73aeacc91cfced23600185a50e8498520d72b653d0081545aa17b02c1743094309b1e26be9a793b876fc4b4acb02574a55e8b168e1423fad87628c45a6ae65717763969835fbb8ed1ffd9540be8ff3929f8846fba6ae0aab893dafcce61e01399cb04f2cb96a4e04fd76d251eb9c2acdb1441fdafb104f0b6ea5385a16d0ca136bbd410fb8170f1301e2dc6b5c748c10c721754f7f9806f952776295cd0b953fb30e0fe0eee1d8487487c2aea27f5019bfd5cceee1722264c06abdf0571f56055da8fdd60a33b4544aeed926acd93095e1a4700fa0a1216d9c6d35c1a764cec2613d41e4a461417b80991dc305483e27cbec5009444a4cb66bd15a3ef3a1d9cd7a2b93704d917e421db05d715f0bb994d99aee5b46b7a1f88391433b32eb7888c2500eb51028a6373ae890762b32e70ac2f63b8eae99bc6d2ef09ad64d793a433abb306dc4a449e8f313c92b9362d696163e06a62c83838abd585f4e922ee1b462d9bba4229423ab87ddfd070163312d2171427539887a1e78da037f13515863b205412152d42a3224cb548f82c8ad01c04b896b99a6e27ac7fd48dda11f6bc90d41793e59ca62768aeddf5c8d7a96df79b85f39dfdc642ff3a7a374f6d801ed2cb07e1c52927eb6e6032b45f9e37f2a4792d492ea9a871e61747e7f4307a2d8a09d867091230485588d5e1906d1d067de790501e7023c63aab70e2748a71f705f92b434e2170151488725979fe570488bf280f8719bb7fb9426b68e27aad11e79fb646345e052a3d4f2043222960db218ba4768f45caa40e308c4583da0325482c066c5114e764b07bd8943a4d6595f71c3a12c58514730bfd9bdd5d74290f1635e4d64461b5ca10fdda49cd3918ebe9bd0c7eb65fee07aa90e6b81d8202913195a78ad248799c221f471c5d8fd43652080f0570f69c790367987a0b2bd46e69c9924d33a267c4eaa4595eff9148673c1b55eb9a1be1b170ab9be7d62336c81029e65f2b78ef2c64fe5527a921977ebba789ab01ea3ac9b67f708eab945be05b63f6b954a1c22a24e2eb712ce4ab7b800cae69caedbd63b571306a970f501991c3ed42292bcf21e9cf5abc13899e8f67ba695834504b1dc8edae72cba573d703fac8d706124f864add0844b75340167ec5f3e0f2235f1efacb9a150105a4ed918f158ae057914a44de149d990a4eb193dba4c417fc6971f0a1d223e7c96e14f75c0b2cd057f4ecef8a5bfe85f91ff0e6944d06804ab350abcc7a8a1a74ad62a51baf6af22d9e495a0e6437c31bfe6d9d37aac0e13b2110f4179ec4ff89e01921160985d804e957c4a8a1e3abf61f628c8366cc35ce0842e882dc7cec02c7d0a0849fe001ca6b868522128ed13d399b28c2129d4e955c6b0d122e254de589e2eacdb7493d04cdb3f3905736ebba5b28768355b2f23caa6ea8621761726f9fc6965951cf48552b960a9914bd06b7c66d1a2935d87c734a5da587d12f3d567796793bcf10a1c8f810d9f4b3ecdd157c230109d65909e1be15e19acfef14e5d944508738889a604ba5f2f3c2c5d69d5d69bd1432aaa6afe892969b34640cf5199777897d77858925d29658421cc95c3d79d4079688aef36eb0f37301f315009d84d1aff457781e30a0a2502924c5a5375855448779814256dceaf7713d33387168044e7bd779915dfab0cba253dd55c3768a15e30ab73a06512ca3518293ae44b287b0c970645bc2b0351dcac484e885714aa0f598c3ba9c714b311b4cafc3c912b13552d82225ce914313ff52f0c13dc1e13eae3c9bc480ad346aa3faf682676f16f854c194ee0cc1100e7e36de2661fa70c2f8923dba85e2acc4962045c7c5ea838aa8c335bc32173c5455349dd790047fee693d1bc1909c21893a4cbb1476bc9ac79aced1f2ce3fbcd9e8b6e57fb963244df3a8a99eaf7d45ff3659a6a8eca4ec1499f65ae70ce8d5e13ffdb0b6daca2a50388d0ae45f28528b988151acd434812a4672333dedd6a4fdeb1b44720e9fb50f8c1589360f1894260c52172f04d7b1816fe8b291fdc6b20f52a878afc29d6946c600093d26ebbbc2b419306053b71131d4f8bc2c2a212198b9d5f3c18de6aa8dd05f6e722b32aa5420d4df480aa266f591470227c8679de484ed9f9f35ffb228d78543084a4225c08b4dab47f3cc3f353ee78cf87c69857b56aa28477624b6af0b6fac2b2aa2c4483ea015d29561938dfa0115d6cf114708885a7acea6c5c56d5a5962b11d3daf3676fdf65e127f3149858e11b0db771fd19f7906323bd6b407384404eea749c1b13dbde8b27ddca8a648aaa8425c667d9ad3895af22ccf37eb55cf41272d232a2428958c5020555499b859d4a3d876ecbee4ac32f06e68361f76b6c42cb0f0eea19e7e6c3b5a02301e259c60777ab6cdb11f69fce0ff5cf3a27a7908a124e435889a8070c336da2e5220438394d0e110f7b320a9e698366ca562e9595700e0a99ba424dd63da106285f058ca9c7d76b53fe6a4af31d997b83d8b864e56d9b5b72d92a7667be59a365fb244e5212bf68838ea866de507acc812a9150ec224c192908cca4df68d10ef43b33af2373c3369215f6b85b28dc2d11a6a46a95985fb97ae23150a3f8d7c8e2810ae8806ccfa6f34842d4bd30ddb495854edb574d3a8b1bc457eb980a62d54d9c49bc846ec536917618b1db24850e8f0b9003443d5876c989514d3e33d7bd7c9bc493973f173f502c0601550531238b95d4b2b277c5945fb02e62e735f53a9a1e0044dfcbc1b892a7fadb817ff838205622d0d4501e35cf3957ea547c177b023aa7ea8fe81803370e96c5f7ed395dc8471c7fe2c742d91b27c165860d0919ecabe39e4b8094325bca8ef02ca84590e384c0f722a04e477dbd64fba29f0602f11d71468f0744cd613a2c44113679b0edaa9437b800f8886ffce2e78946cf1fc068b35fa7dbd05e443d43cf339af0b2a96f9daca8b7307b5457ca53cf672e06574fda27e5fbcae664d3c1e9e39b0509ab17c135ef91264e08392ef291ab169de72306c80a2e367933172a34ef9ed63996a0807f451f9ccc0126c1b3049c0be56761dbb07ae651486aea710319a882c998357624a1173ff85bbd07a4a14f7a234e5010a4c60729ff763cf010722fd6512a52c758083e5e5ef7679e2389f0582fe0e9f39dc5b3c17887cdc4ce84a44db4391dfc315654525abdefb72d3b8297edf777a500da09986605d1d489593a37fa0694a6311695ba6fed25c84bccbfd004d8921f6e8699a5223331557ad810f26906b2fbda11bd6dfbb656375ea37b9a0ed6056750936f99e7e5ffaab03e960eaa4b885403f30bcc834431c22c1e47418b52214066878ec1c21452de195d1bb803aa5fdfaf6061d4faf8f81428944d2df71c3ad4597e1618146a661af56cb731b3cdc270c7d005bfb34a7378ac947f30a697a7de6a8ead8a3b4edf747d977c90da0e38fbd94a407c8ad03a658e8cdaa13aa56acb40ee75d1ecf8ad4002730ee462a703ada13f96b33d7532880432c73c72f3963c1dc18411be35a76fb5390e4b7c79222c602b67aec5f8a48f495a05744163e4f503ff5b10189f120122418b5f40e0428490e25ad7be07b86a0cec0431f3d8be66c39402769eac56b037a50c5f6ac3a28eba21bfa37d35c88444cbad2d01598b2f291da33108f39ad461b8411a2eafd7f409fc99c0128c3b937b09eabc48cb39fc448a3e5eb68e8b99b64451fbc36b444ff1876bc9da2ea8bdae0a075a014d546c0fcc032636c8b78fa09d02e94149ea8cddf6515b0f5ec6d4f993f69e6ac8481919705bf4ec99df0b6a36937dc4d1f182412722c946dc5960a845a0bd0b9787d0f410d723c851f76ba0e8363ec65dd408f22504dcd36a85ae6771507e4268f616d5c0f7e2d6451693da08537a57eff5688db3da4af1525715b8f8e74dfbb5376d93e56cfd6e122a72a52d25c88c8a3e9a9552a8a00c998e1933435b00dba845154a9c7760caef02f26b21fa48fc29e6c74df07dab93235bb62332ec79feab6ccd9de3259b21e1c5ae57fd1179d49b3240aa3d1273746cb32b8dbb6ebfae95139537795caf5b05de1c412b15e95b3287ca27439ae889a9cd31191c019e38a1aed20e03bf12d731bbe21054a3bc26e3bbd15f02dbaadf88b1c0aa458e5b52dbd5b2424eb884a14c2ef5bbb89d50ded2e50647de1ab287895bcc4948db0bf0663582945d887d0a55fe01a0611f630d2afbb877fa1f4043f4a8b9f44953666df083b551265b989e02f11f65f2f84098d18615fec5161b606c0fb7d3d434183c108bba562be69b978b232a333ae27986314611fe745d618400256c69022ec3b0f3f0aa7a35fd03d83d060f2b33e5eb98574e2603b7fdf0678e368563218e1a77e711e37c074cffdf20c79bf6809bc62f2e0f1992382b32cd7d889ff01ef2906725904892534344a2c4c70d64dc82f2119614f934b6367194de8174eaa2123ef95aad922f4feb1390b8951ed9427c3873ccd40203f1cfae2522f306896f98331e63838c27ed96b03ced6cb08fb0e10e8be689b4285b17fe8ff3c54523ca1bc77a2b6e95fedf36e6fbcbe88072482ba43741fd5289242b7e9a12e5c5e90a42716b7a8138a23dbb3e01289fb89bae4303ac8097b3eb0a0b0e7fe145ad109f17abca9eb516af860241ad950f792fd246d5bb3a9454c1ea5086cfb2f4acc695a0643e3b037d4cc0e0c2eddbd5c2f6648ee53f0e3d85f5b9150d284bb7e6db360c5463018e45188d891400ccb428741d4bcc6e877d8cc77d8cd99d0f7849a6b7ae1836f2b25656ee6eee357c4c2bf1b56b34faee45734aa2ef2b7c76d6530862176e9150f891957d9a0e91cac420a0d013d115eaf8ad2b4706f1cac9a219e5878491dbec8028fd8d62c745351be3f49e47a7c62e13c8e610f90d60086fb01cf85eab97560bf324cacbceee12209d3fbbe44ed9ef41ee3f56ba464d6055d216e517bd1dd2f0c741df71518aaf3ad648c1ff867f1b963c028f6ae5cd4bdc4108abdc7fdd54db02ec87cf698198b4755029b288add1ae70ce916ce85621f80d9bd22f77a0683035683c9a7d277a376f01bc53eed2c6ddf7dd9b7e944e534b929d09357e8171751ec4f1ce27d1a99747efe8083fd7af0c1d5cd16f105776d26f6323094ecaee29a81a6f44a723eaf44052b7504e3d2cfab1477e4b1b6a65c7738ca4c297285d54beb97b38e1833008160af39f829425ffab98b94d6c462954e3a08c0705307cc2d8a89a33d384211513aa3f521a6ecce5f7424eb0ed94b4fd2d71d18280b476fd8f174a6d5ef4eab1b76d4d0134f0ac7852913abf2f2b28a919311de9530495fb354932ad9c6c7d7ebd6163b6fb3ac2d6fed87b1f6c255de610cbc10acc54ac84aadb4f09e18bba0b6bf18ad7fd0dd7eef18ad4c272a3b29d76fa4954e1a99f3814925ae14e04616a03de2382d39d147839795e76b41ed665f490568a4df767ac015af6683d5e5c3262bbade0654b86495bb5d4f977dbaa23da3ead06679ce0a601f02440b5d803672454fbfe51906d6d7452002628a7f0111e0656a1064571405867bde5ab151700df598d0217562fd9de60bff78ea26b0916ac761ab9387ceb0fd06a48d24d2c261b4194cbff860942f5f9756b81299672b5191cb1751dd7187eba09b1316992dd06a1c7b812b243cc860f86bd78f05430942b50b433909d93ae2543da64075d6ecc05e2ac69daf5286dd5b873ac9761d107c55172fcc386802240678c8eb69f460700fd485040aece7ce57209ad1541d9b8a04ae75aeeab8a429121fd08b760ecbc01ecb861b258ebacea57088c359c93fbb17143b4012023200a80134d91c2214d7548bea5fa54ac533c747873b68a1aa5a25e506cc0cc7b699868d5f46c99652cad70c300dcc0c21ea7a38b1f561d21ad98f1f93ae5eecc9f58a355a973a7e3a3168e7b5ba5c4e0dd695865e2fe8a5bada4f8dd5859a5e6eea624535d41aafe9d5be50946b35d5486bb8af76b7f40b75ad35d21aeecb7da52eb6865ae37dbd2fd5d5d6585d684c879fafd5e5d6605d694cfa625d6f8dd6a5ce6045ea13af9196b6a61f756c3de81b7145f6d382568f9b1a79519afb98bde115d5cf89cb4ec7c44758531ee571198a565ee5d390c9973c2e39e3c9f37fff491ef5b85ca93ef56d87f4a395e94b8f4bf1451ffa4feb596fe280c24847d6a33e2aba1f1cde51f5b4bf8ae94705a19ef55d91fde027b091f5312dfdc74758131fe1fdc0e0678bef40596c879f2b9c66a672041df999c277c050ce134eb3f2275cf234e1356f49cca9e234b414cd08fbfc24e135375caef869e234ac8991a0aa244ea3d2d44e11af7177c476abcdb1115cf185144ce18b36655f35dd45c2c0842078400c666063d0d56d5de8185c26c048007bc2faaaffe62b5dbde9626bbc548400044de020085e9435d4974bda41101c3051040a5e2871c981b53892f8c2124e480204512871f9e80b45498f90c40742304405252e5731d76a4204230cb101106c24287179e22686a2865b03313cd183255ce18a1db61a690b85ebaedef329227f3186402fbea21f914a26d407f937e22b4fb62d92a4541fc488312cf9ce2d3f2f227f51be0979c27fd576788d136a9a50c304fca2bf888ffe13b2860a9cacc1a2660a3555a8b1424d163552d44c51f3841a28d4505173851a2cd4685193851a2dd46ca1a68a9a28d4585173458d14f08bfe1a76bf3acfa160bbfe1fa389d9191268de7fc7c3f980c63fd5c43288113165e8452352c9b47a71dd2714492a54f160f7ab44f34a2cf920469c4a930f62c458f20ff2af9fc76cbf8218e1529e701d5f60953abc805ff40731e24b1d5ce017fd3a5c5d83d4a106fca29f2475a401bfe87f52071af08b7e1352c71af08bfe1252c717f845ff8aa4f1007ed1af22758001bfe84f913ac2805ff493903ac4805ff4a3481d63c02ffa4fa48e2ef08b7e1349f301fca2bf44d214815ff493489a20f845ff88a411825ff48b481a23f08bfe10490302fca21f44ea28037e21037ed1ff21759801bf9c01bfe8ef903abcc02ffa4512e397cd0bf87d9e8d98d6829e5f87ab4f2c978d8fb8388a0510f1692d440d2146314b6e5d63999c3ba6bdb78e31ce787fa06b1215634cc292d44c54147ae4b24652ebfa49d4fd2a296149541295442d6149d4aebf04b65fab76bf5e764a47f4fbc6f1b46ad1ae9f233b12c60a0619449ecdd692da7e9d2cc9fb1d8b6d6625ee7e799e4886c33f3dbd63bba5637a96c3966736ef4fdb8bf8b961b9878ee19276bf3cf894695adb407fc248fc74d1309d61b96681cfb7acf3ac8751df3269a6772cc744a09867c3c42cc3b571946d1e7d13f32cc4b61fe59bae651abe915c38105109d2306d1373edcb30919fc4908be1aaab7933914ce46ebb16924252b7e26757f36632eeb66b200eda61ac8b8d3c19b76d1d4dd33cfcb467a33f651eaebb9d36ad9b99d836ad9b79302ec671b03d9371b5eec6d1f66d7bb10e75eb6ade8c939d348da4a3953c19889b85b6d34ec54a318e16de4e7b96ea64abeec6d5420e7652a5bb9522197195ac9b95b84af560e767c6d9543120a21215fb6e3715883a7db60dac5301bfd829d6b5473bfde9d5bed9ea4fd9e6f3d160e3a6d6facf47fb3635afc53733aff6cd361bd986b68979b44ff6d536b6cfb6817520ec8b81b1cfbbc93a588cc38584a010e442c02f82f39eff01827c15db2dfd71215fe9e13fbe07ffe32b74b7b490cd17c17921bf11e27d111cfe43c889c2941fffb1e13fbcf77e85aed2fd0ab9fe956cbf36af7fa5ee97c757b1fd426156e87e7926b7ef4fef4f5ad7cfb9750dab716c5d7fad6b7e96429b4804754419783b89b352281361a90e8cd6b5184b71601c9b093f3b309126c638308e0d146fe22c14612128da3a3651d6b98530d063136b1e0f8c73fbd040da6ee9558b59501f5ac9731b79609c9b07a485b592c736ea80424f2db489b251c7060a631ed0168a37519c89445828036f21ea71c95161e08c267a5c7e6b6c43e31891cb946cb734ec24036337efd6c1be180908b36d609ded93d9445f6d13f368b31b6d23f36a24fed1483ed8a6b6d9cc3cbe699d48e14cf4a7a7e671629fd929a47568270fedc4917d64616de699cd3eb1d0d69171681f58d8f1c46a61c713e3d4c05968ebc83c320eed030b6b9d9967c6997d6221ad43f370641f5938ebd43c354eec33dbad538c3413d536358f44469289681b9a472399a562a2d9a6e6cd466f7664a5373d32d49b1fd8e639b4c7b6d3e312c44f9547614ad09be12d457a5c8ec6373b310e44548a1e97256e7a368f4b1437c11907f1b3f540446509241b691f1bf99e102c2443d5bafecf2d34e38f02cd40b492f1ff03ebfa43b4dac997d86ea38a2a5433816c2118ca8fe32853617d0bb4f22c90caaf8cb3945709c53eb5163f412c7e8262fc1c67fc0ca5f04fed0cd54e90ed04c1ce31c647d9393e3f4334d068e3e36dac7d6ea1198873100d241b699f108c8764bba539b555088602c946230df4b17942b212888602cd4635d0e7e609cd4a3592dbc8061a619e100d647b10ec47d928be19aa95565cd58ae38d04c555b5f0048aa538105139e22a96c357ed0cc4553490c3ba7ef3c357360f57ada158d7df81d15ccdd812b6a4b65fb8fc5309dbf5afd6fd3a67a9af06ce64b5ef517fdeba8e756debda439b7d2ff233641bd5443319fbc1ba1ec9be0747b7af46131fc5cfd06d141bd94434d26c45dbafd28f4633922822d54a2259aceb2ffd99e2a74836a2914437924d141bcd4830918d5413c146b2d1ede3a7a846a2ed967e8f0d5693cdc2d00d8c7d36717403d1383510f6c9c4c7a5e8cdd10cf4b824bd4982951e97a7374935f045b6ef714c7c5c6ef889c294a37f532403858f4bd106fc73f5284cb9293d2e492287abde24c540ae724f3ce4aa77b7b4e84d92cde3e7889fb5f2c7f7e71aca7f20a292f3e1734cb1cd83269bf79bd3ecf35e89569a850f44549e3f3c7c057a91e741a69bf89e132d7c51367e6892956aa2d2a3485f3ad5464f8a897e54b2855e0433cd50a95f917c0af524a5dbe951269ae94f275b6cc5cf204674ca93091f26ffb0923731d5565ff2a7aceb3f99f0a1fad59fb7ae1f85299f9f2698093f4db5127e9e56fc24ddf8e996e26789849f25143f4d347e9e4cfc54e2e7a9b65b3ac6cf928d9fa71037cd764bdff879a29564a769e4a5da6ee9e7f0d304f2d364e3e769b6cf128d9766e5c755a29be7cd122d669bd5386f9a64a61b4d669b7d6f9e6a31f0cdd22d7cd3448b6dde3cd9bc374bb09d022fd2a0c40d64f044894bd0c357af09668408aef8e2fda28a12972187af6ea6da4b125870852f8c3852e252e44044e5c757ae2cffe00c2840c9700258894b20a272c357b67dd34b4051852cb480044a2871e9f1554bbaf532a65abb7ed5ba5f67a6a9d8fdaaed57bb5fb1fd3a81884a14a6dca422ff11f294ab86294259c87f7078eac65139fc07c853af7ed56cbf4e14a604f98f8fab601bfec3e32a1cbeb895fa3930e6ee76fde406c60be4be6a318bfe0d8c1c7901ee37306660d32f9061fd02e6fe3cc468a6645d9f637e33252bb9a110c1ed09ec200c3566c91fde8cbf399c77d6f8f526196f0f1321463173d6f8dbaf0eb73a2e428c31151e7ce38bd1f1487bcf63bf7c00f926a3bbb501391c77fc3d5f14acae5dae88e91ad3b4906d909bc840c846baceea16a3dae156d7c140dfb8eb1da73711da4504976f9fa88210a3989f5ac71f7e9b0c06588afffbc613fb85d104d34dbac99c05608a65f29f9a18612012e4260adcc23f05daf1e68a4d169e03e0920608d686e580dfc6ebb9e79c73eccccec6ef41e44d14f8854bb09b1bf68a4d16e1dbf16f3a36e2c5ac73d68edfebd8881737e8650842c7dd03f3028950edb8636616736e3df426e7edf8cd1016a21d8731334c3b0e653b055353296b75896e8eba29a6aa66e12f91a26cb7f09bc80d8c41686034c1540363a795011195248f7a14a644a9e00c3fb8a2f84982fad3a330e5899f28de7d3ec560b8b5ea8da7efd8f6eb34b59d07222adfd0edf4a54761cad28b1e7fc7ddaf123f4f3c88119d92091fa5373d0a539af859e2284cd9c1e0adf391c6d14944e2dd0ad13afe8eedf841b58e7f6c3bfe8fade3f780eede20374f1c114c3db08e592dd26e8269ad9b1b36e7601cb748ed0e163a18bb0f3b66cb30453737ecc875cc96a1091d72e462fc8f7b60a0278661a027e6493956981c8b76fc2420a7d13ac7b15c80e016e966c3c39b12dc0f598a25ba07a65da64ea2e3c7a607d683e007a528f2d2250697e8d8db1ff87d9c7bdf59bd61431d3fa18415b81b523b74a9f07379e652fcee71e93df827cdc2de077e810920cb5342fc6dc5f81cbb5f1bffae62343db0cde24f087e79287e8f07b00b7b25f00ce9f83d11e09707b65bf83dfc9c2e8ce089958aa774b74231dd2f9005b8851f09990d3afe263a7e539c759cee172e656a1767608a59b0f729ef71297aa407b6a918bf83e97e75610e649be202c045597558bbfe18f2d71394c7daf5ef40bbfe1749b2249bf2922f0a4bb25d3f0df24fd21c5eedfacb931488a8243dda752925919e9576adc2bd28dd564ff8d9a1dc76bb363d419fc5cf2ee5d8fd76eee65c2e3d4157f4af78e96e3beee5542fdd6db7729c876eb653b99643df16be5b5a74755315c54dd9fda22baa7bd596f526e7aebcc9a52a6fee94373db4f566b7b6b890f1a4f9f1cd8e6571219fffbcc9bd2b5c88c7f326a73e2e55b890ce17b17a219d3777cb85845fc4aa866df150f9083c04be8797c04f4005e64f06fc02be01ef807fc0ccbffe4cc0fbf81d5e01cf038d8e3f73f8b3fc73e6cf003c001e852969763c8f3f77fc59f327cd9f3dbe006f803fc023e0519892073f77f0b3869f34fca4f994aff91dcfe375f033077e96fc9ce1e7ccafbefc1c5ec7cbf0d3063f63f8f9e2e7eb555cfcacc14f1afc84e127ccafcce0678b9fad67cdf821c609a05dbf04daaebf87b7eb8fc0daf5430046da426d685d48186f8b64ad2c1246fa80b4eb7700dbf537c0edfa19c076fd0b808176fd2eb295dac0c270592c098307b5eb57c0daf5efd076fd0968bd5dbf0cd9526d5861b424ab6df1205b0868b136a40748bbfe1a12c66a00182bebddad76b758adb64580960d03b04185210092edfa6748d68a6cb96ed70f8096dbf5d7dcf6abc6ddaf550d904df9500f5dfdda35ebbdadcf5359fcfc5c905d3fd47377c0f66bd36e52bc15543f95b5b26fcdbb5fac4dead2fa56d69ffa51ef4b6336eae6f53e30dda89b77937aecb76e5c10ddb41bd45b41b5e543513e1705b29b95e49a3c94af05d70d4b7a4ddec98702d576839abe152c6ddc4ddae2b52a1f8b02531d561bd22a45145b0eea7e698ac872d2ef454395a3826db8ae9c177443567f1b8629270c530ef87258d00dd910e5ac9c96a3826db8ae9c576439e9f7a2a12aa662cb09dd2fdda8595c71c407c64006774555b62582840f8e308309be28f1cba62beb721143c113de166dd5b50505618b0f88c10a350042ead28ae0e0072d30e285d2f3de80a1a188215811052f9422d6881d90410932a065c8a5c2127e10e404521042194271e881fa013278800ba5475dd1368581b229fbb6eaaabaeeda626d4861b45ad69b736044123414bc2f3079d3975db3d881149cf0000b6080aaa9dbaa68e8c21659e822b5ad2ae8cba6359cb082164368e2052acb0533f4e0092fb850a26c93108423f4000b15582108255e42133029c4625085ac4459cbc005177481062594284f5023b4e8a2160423b3725d09dd546c39e897862a0b15594efabdeb9b22aea04ac8b6421406a7e5aca0abc28188ca15fe7a14a66c79336c5b1c88a864e1d204f366987220a232859b1c147e3e0a53ce3c2e499c1619d46935a56ff9ab508b629d58938a52cae15123b705736a5dd69654c7b7dad10bf372b95dbf892da9340f237249e84be6f4da30b531a5b5e65fa29794caf0f3749adab3b49ea29793d2f3e49e26b6a48a5c1a4e3ab5a6b5948a5a1d7cf4b2a6121a7a73e023f7b49a52d21b4a4b3e6a4ff80c3f6b3c1051b9d24941286954572fdbf54a471d4f5294babaa88aabc278f919cf76fd63fbc210df4f3aa346a7a531b2307fce403f35f8d969cf913d3feed9413fe80b3f3bec39b61ff1fda49d75744754743f6a471ddf31fdac9d14848eeafb61df54f892a423102a52d995441da9a2371dd1923a72452bf9e6d8bee62755bd29f2373bec8ab73a6d894c797364392e4db8f9711f9725dcfca02b9707222a4b26b7c48ad419bffab426d39b2ab528d20a338e52939413ca4b2496c69780d2919a724a4b6f9b0252476beba4b698501824d7f52dd0cacf937a9a50920b5a47ec292dbda416a48e4e68c925b1203e32bd2d695cf9c8e492d4cf0c3e425fca9507222a71a038dcd00de98ae2c0f1e220b12909a9c2a1aadaae5b9299f6868a635dbb7e9319f7c6fa76fd37a06cd78f32f3de58e1e78d17bd819d79f90d16c77ae38675a685df5871e0686fb433ed0d15078e17073bc3de4871a038dc1b66d61b1dd4e4d3a64c6e895551923435aea6b7d4925612ab524129ba2ab9a597d48e56909a92a8bba555ce43b65b1a2de191ee9676398fd86e699607684d85529215958648efaa55b924a117c586d415aa4a4b462faa0db5ab5565624b4aaa090915b9a6374fae693cbd25248fcbd2c9d49a90beb4864829afb9ed9616bd5d7f0768549a3f499108d5aad4148bba35d173b76b559a5a55a894a46d556a0a85ba2cea55a1295584524958d3737ea25c55baa2521212b424f5aa52a969edfad7ae4992f4c44d912469ca4da12896442549bd29d44ab2a254684a45a9242628aa25a9d4112b724bad2945b923552a5a4baa8a25a9a857a4424ba957954a536f92aca8950435e13cdeddd221932455f1b8a1cc945bc2c325e1660ae5614b91a8e5cb0311952301fc009e005f80efa1fa93c7ef781d1e001f00ceffcce1cbd7f1345f1352f973c6c33c8daff1ae90cbbfb4bccb9f2d7fc2f8f3f5316fe3657ee65198f2859f2efc6ce1270c7ec2f8d0b7bccbbf7c8b9f2c7eaef053859f2abffa95677deb53f889c2cf137e727ef21ffdc9a37cca93fc34e167093f55fc543de94bdee4c94ff193849f287e9af869fad2a39ee4533cdadde2c08876fd3d0a4012c0edfa0740e2dd52b96fc94b96b0e4ca25552e491280b6eb07c0dbf5ebb023d596b4e4ea25552f59a292a91a1a52470ee55a82ae50524596acab1752d5ceb426aa8c5ae2aeda95fa5257aeb4eb67912a56c576fd2ba4090d32edfa57e48a254b6048b6eb9f41c6f6eb448188cad5bb5da7b46a887dbb5653e49bc29ad252dbf5bb5d93f849ba292dcab3af6cbf38ba8650d0d5bbbcfd143fc937854549bfe52e8f74bfd2ae53d497f42f6749d4ae53d213978444f9ca53d2139744394f53d493f7394f5951d0e72096e37e7b4251c577e572da27df132ba62b1434d4be7b4253d614f5e41571f6f4224f416f724e4afae6095ff9c91f88a874413b32d618ed4ae53d6965b0a1186e0a8af21f9774851dbda5b51dc9685d58958a755b140b2ae35d795d5cb444a54d393f575cdc1654a5654955d815d7a5654165c47855d6955646eb2283755350977485754165ac315a95f7a4dd2d4da2289297f48a4a58cfca5da9dc51aa25a9a2d6b37a47aab5b48a564fc96a858e54a574c596ac56290a15e2e7e96fbca96a49fcfcc1f9fe2fe34d13d3f83f3e878c0f3f393670b3c43df98fd3090e37f809f431de5c89cff243fc90cb4b8b0a83850dfd0d2cbc259591c648554cd011ff010abdb82d2b4bfb82da80b6b02cae0deecbfb92b2bc36bc2f2a4b4b3b038d81beac33d21b32d0163706fab2ce4865a037788bcbf2daf0bea82ded0cb48565716d705fde97f4c56d5959da17d406d4e57d695b60b0e088c165a831549395455d4163ac26ec0acbca424dda15d5458dc1b2d295d545866be2b2d495d545866be2b254937645755163b0ac34c66ac2aeb0ac2c54861a43355959d415b4259591c648555c1374855a49a8684c3da89892581c298e17072bde683baaa81d551ced0d77bdb1ceb83856d48d970311dd80dec08e37d899975471552da949460a8a219aa0a315956a92a18262a8a2c93a5a4953a8896505c5104dd8d18a9a72514bd218ac49bbb29a2e6b890c17e57149f2264b35714960a8259737f4d27e5a3a2cac890d68090dbd7c5ad60e4b6b6283cb5fd2d0cbfb69613b2cae890d2f7f514f66a09f96b6f3b81cdf64794d4e196fc3e372e427eb4dde8c81f2b3f4ad53e553de7c594f38105119e2e7ca8bced08f6fce483ffc3c799293f4ae375bdcd3f31ce65fde9481922aafca0535c95841314e462bacca2535c9604131c41474b49272614d325a508c57655d715dda12192ca80a3b223f2d8fcbf0cd9537a54a955a218b9f304c5cdc120e44549af8297a940a4f79b3054501d1787e9e3c0a53ce78126e442e5d3ec48bd85f94aa1f4d96b4e3096f3c1051395a5fdf51d3ae9f7314f655b4c69f521cdc9084c455246ccc8f6e687150a51c21255b1baf72571518afa2aeccabdcf0e200e3c6ca92c6a0bd330fe34fb4bdc1cf1cd6b34ccf1cef89c30cc7a13d73504b34877b830cc781cd21ed6f8ef6061b1c873507d4cd71431bc37150cbdee6586f78711c5c7c4d43158717e5b22a68455126af3ac29b5a516c6a8282f2275c23acc9915645e1a70eb4743baba3cd91c35bf655079b23cdc12dd9aeea5873a039b4e5da531d38bc39b0a5da511d35380eee6e691a307c06105139be5dd36867b4610db4e5edfa5f5c3833aa8c2ba38a31ae0db545060d3634c30dbdb0201a2ecc5b2a79d5dbf50c95060ae34b345618f684cf58491a294c1be34b605018f584869a02e3a2c0ac2c7f3283854969a8278c7bc2ace70c96c39c33d693460ad3c2a031388c3a63864a03a50183c3b034d819ee0b4bc3857969bc34da196d8d969717b13122979c9954a6b591aa625a1bee0c6a0395494b62581b6dcc2bc3caa02631ab0d56e695596dbc648c6a63957965561b6f8c8d35e6956165d0181bec0c6a039549636cb433a94c6b238db1e1cea832ae8c1ae3da50555a518c3bcea832ae8c6a43b5e18e31ed4c2ad3da486552908d36869d416da0322c48060dd96063d6988fe8d6695f5766b571dc16df6cac34ef8e35461d6ba0201a33da96f7f3825c0f0df65fd80f0d3404c3d298f1ce5069a421985604a3c2a033d6cfd881d150791cbb7011e20f9bb07e7642ecb5136c5cb959e3c9fccc4f9c194d96f9d1a498ed1b27cd32dfe4bafec79cd6026f8184154244404d1c9182176b0f98b84115514c61c80e35c8aa80441726f082063b0a67f0c11988f05ea1873a66df5a093c4f11ac0e7ef039e20a61e0b6177d774e407a6f5278c10552982d810a21d4c42361a842731b148e1db31e8875b063235b58c125845c16806e691e9fb513423377cef674f0c8a1c330fe2044d7bd17a2eb1c87ffe03dd7718eaeffc079ee7ff09ef3dbfb8fd4017caf6fbecfa90070ef3df71ec875ce7be4479aef7ddfeb0e8d27079be77c99cba13b1d502dcc21a30ba6f55cebc230725f17a3defc1bd2a3876669efb91e3cbe18bdcf548818e3b37f3cbb685626635c68803142e88e37dfe9f7b4e8715940f138fd1d7f4db250fee3289ab5f16bfdaf5dacbdbbfe3df6ed82026fe7fca1defbcbaf59f9ab41f902cbb579137f18639e41fef1cd02031278844f2edc9010a3745c8fdad61d03e072b7bb95bface5aff50ee724d425341223e7438dc49863bbd56de179990489788f12896956f7fd06b4016d34f718975f4db3bad40ee00feec1cfa5def5126a898e8239d13b33a60fa177477c26d835ce0c23e74d14cca3752ff575337751b3dcb7316e62bae7823f14cc23994a9f899ba3d7bde7e14782073a58db2f14ecfb50b01a8a43bbf7fb04e326ffc7c598df04c93cef3d12a4c292d8b191f32075f3e686abbd7b108804a9a02440322e8c260af605f11e742274471374047404240bb7d86cc20de8037d5f6dcc319947e28e0aa25d2514114ff70da97b264127d0bef9eda19b076747c69c533a7c0f7a1037415a7c20da077a9016201988041dd1acee89e0d0ee190024036b33d0090eedab76e5debd878275683ecca1251344f4940e1e8748cdbe695697aad97df31cb08bed8e26d845ef480c76d1bf2d8c60ed00ba54b5bba58511ac815d80546857e93daf1322779aef4d4e90b67726a84507ddfc2678035f300d9d83728698dee410e9dd06840521417048ef3e081307896856f7998368ee1cb9b11851302ca34d306341ef402b12bdebb2237a879af50ef5ab2d8ca85f7dca7b21724f6dde07c9efcfff83091ffb49fe071399fb20f9fd2b32e5f1d4861b80e4f7ef40b27f07d473ff837bd4ff40f1716f4e30eee79e8bc2c8912c257eb7bacfa1f79b4fa6bce75e081125c9a3c894f7fb851051a27e53318e9ff25e0552f70bf5abf781fad57bbfe227131ef741f22a7e724fc253deb91fc5531e1125e8bf4d8c66754f42e6d8adee5164e884f1634032dcda2f70c6b9894a7bb7a330763a36d285257ca09be08ca64790fdad6448126661543dea55ad4a0b2c4c95cd04c9bacc4dd490debd0992a150146cb73a9049048de9bd0d4f19603ff74c6cfe54a18828bd508bf1e32116c6ef4d14f9a412113d93acb54402b1db4ee2ad35e416d0e7d82108d3ae20ad57bb70077d6b0d790677d09b48dc370c580fb3080641c1b40bab6abdfbdce91144f5288ea7bc2ff91fa927f98ea73c9e32c0fed5efc07d09ff817aee57fc07133e50bcc7ba5bddff50f1cd71e9795918533ce5837b92e79e847f9f8be2a847f11f7bf3b0f9e7ee56f7dee7b1769548b6fd4af9e027c73fdbf76ef2bbed16987aba0960ca41d9e6bfb7d43da82ea1595d7e12b9498be8170653b088667532f6d4fde89120ab59dd7fb6cd3f5b8d97375ece1e49166b3848f3c68342c923c2e87d8ebdf1fefbd023bff7f815461324a3ed57cac73eb9dfdd1351768f3b3ef673fcf446202b41ea6e751f6671933eec56f7bad3836675bf6ba3e94d6cc3586790c7e440df90b844c1b48b88ded1d8fd3add76ab7bdda9e1fd74cba2dbc13b38033d48b6e118b3785ffa6c02b1a98133ede2bd4b7da822dad57d1f0aa65d41d82eca506af7a819ca89ee5143d02f120d3544bbf01332507bf7a8d87e7165de8064da958476ed27a8da255a62a65d4e681768d5a0216817b6c2fc980092712608ebdd8b487373eb5d47e3bd373009edf27ce7e13a549186cff6a9457ae7f64ee4e657dbdf1a72f3a3ed1a0a160383c47af7a82d7eda45ead8881a886c6046d2d0854809236a58024cbbccd30d9d816460ad777b8a5d7b1ba387c6b96d641eda4686c598ff13bddfecaeedf60bddfb4dba916dd4cd12da855dce8df362993468d7668beebd67a579580f13b46bc385ee7d08c532a1581f62d637ef791f6e71f32127e2fd027d808f77cbdb707388eeed10f5af5fc0a47f1d70bb67866eff361f0c06822e84f7b9e34e004efde3987f3bece7f80f70770feafe740367a3d1d5e121c3f6101d0b6856f7b551779f631d912e7af799c604fd0267f8891b50818275399df52ed364404537f3da3b19d8ba998f6459effedb78a8182cd52e33a328182a8876e12b7af728d4440d4111e99d15dd54751305ebfb3bee3d8e8b3943ce3c40bf9e5fcce40f238e6207b76e8a51ec00bfce4f868c592d9c408218721842ac80f107fc19d64dfc7a8a2d7a4689f40ccb1ec8affc22d1afe4de237d6858c93d2633c0f50be45bef36378174bcc3a734bd4fe9c0e91ebfc0c78aeeb2619d23f16eed166c4b118630339fa1ebdf37edca99ef1b66f970309a1b77df34ae8d5fc63acc3973210c3b39e07c01ea3763e850639f45830434299e8502a2608e37c4f3a4b88113dddbfc7f3cc6dfb1f9befb71bf3efede9015742f0a2460d0bd7f8ee32751740b092efaa7e32890a042ce5d37040b966844cdd35eccf33c0fc605c90209b42dd8d788fd1f68820d7690c56e42dfcfda1f43bbb40ba8e3242061c686ff3ff24079568e1e3e1c10c3e5e48e23d5f737b48b07cab372f4f0e180182e981b9dc611e51fdf8ec05c38e086c3d9e81b39f0fb2831c6517411807699cf030d97981e3d5000881b391e451cbf8f868b0bcc36cba15dfab39d19a540eea518912240588007b5870f07f0d02cf343a9b9ec57106d33124591dc4b5d3f2b46bb6c4900831764a3d366fbe0903ef4207e79d68571a4593be4801c0e07e4b0d65a6b1d13638a3dbc2e8c22aec936332738a1094d5002b6b1e802115899f2f19903c99f3913f881e42cc307ef11a35937ba8c63344b3f0ffab4b10f1e34cec1f2e0ca5f3e9d700b42158967c4dca25f3ce918a5e35f61123c3396b008cf8c3e8f3f1d0f217220b431b262b8b0b0eb0310ac18fa854b71cc333d72cb10990358860198457f2872c6aebb393a754b88dc928bf8c8333e3080955bf4773ee41cce103718853041d7dfe98208fd2091aebf1b41d7cf19118222bafee1616019209845ff995bf40fd15948d7cf71b748811e86c81e7e41ae83cbb1d9fc3e69560e1dffa7538effbe214e27d5f338ed7dda79e77dda1d1d4621c434c60d05760cf037dfe7a24f27cff3b8897f638cbb8fa54f1b73f0e3ac8f85cdcd86023d50c0874df66c3db43ef0907366b1b688725299dfe607580777c4a81f9b5a6b8db1c61b639df5bbcc981c9a356245e650166bb3f2de1f161ee7799dd7791ec771dc7e5a0e1d7adc9b8542043308bbaf81e0efcd6d6e8364d851c0cd596bb773b1399d7197c7fc9dbbc2886d3d70af73e416fd264cd7915bf49b317ac723b7e84fe9fa4db0cb7b01e416fd660909cff4307936788687dca2df01b925bbc44e2642d7af8dd0f58b74e4199c5b7ae41674fdabee32203e7253e71974fd9f225dbf878a5c02ccd22faaa0eb0f5fd0f57f1e0884ae9f43722880800352d0f56fdcd2faeee09b1d47f68059f48739a32037f773dcdcbf3fec9a44f48e4b60c7ee01cb70af5f02fb41100442d9f68bda956bdfe638f1a1e2c98e310a854179efc729cd73277b0e4d84ce794888514c1c05acebc7e1b85f9eef3c7ed67e897f7a33a6c77eb1fc8d37712b036337c60fb15fa1c738c752f887184d0c852b8454f2242125d2975e88aaa41282faa142ad7ea04a5ec551a6126f91562eef8a45a159f5e78ccce2974c51db14bd66b706d66b76f34679683567fdc6e834b3436897a5d1ec833ee537ab3c6896b3647e4f5455fb914e647b82aaf28a5d127e515827ae2acd2c29b728198d79fd6a95c4493908e12acfdfd42bcacaff10c24af9f259df1f93e49bd93d4159e13f84989ca4f01f26265cc8ff7f0e2126266fe6b4e6f90f21aa2f82f434ff43a5e2424e318fc2943afef43808292979130b517d11ab5799f1ac272254edfa4d1d109bd262bb5e1185561e9fd27941ada715a92c8e8781ba5dcff0b835446ba8bde167fca9ffedfae59111b136fe74bbd6e15f6ad78f76ed794f111b723daa0e3c847a446ba8f5a43770d0eb69456a88f5a0200f2b4ad797835a8f48757770107bd6f01f424a5f048986ff2895b81051073f8188cad22be077781e7e01cf8017ff861cf80f21a62f8254f21f2c2e84c331bd890b0191587f1ee00df008781f9f001a2e7f0ee0054083464c4ccc975efca4f1a4d7c3f0d3e54d30cf7ad4b71ec6b73cca9f7ccaabfcca831ec79b1b6540daf52f40edfa7978bb7e05bc5dff0e2764aaa2ee16ca6bf29eb00950bb7e1f69d78f00b7eb3f00daf51be06425559514c57df464dd2d7255413ffd0348bb7e0190e4ba5b2a289f9ea8641b8f599b467ed38505d8963117580b5811224382c886e0c41249a846a87ec266477b3ab8c91c08725ca89bffe0b7f13cdd7c5237df4475f3f3de39e7cc91c87b679d45886774dd97f7efe7802037d9b786223c8d1fc6fbc53dc7fff479597cdd16230e03d9599807ccb289309ab866eb9bd47a8760937bef9d3b1024b9d53044020d0b2a987044733a3fd743ce39e7cc3fcdca5e8421144950a9b44abb409ceaf8511cefb1d9e9f843ec75fcdca68ff2cc17fe29cf889c57e599b1e39f479e538707ff3ca3ea465daaf3d38cae5f7fd79d870d5dbf66038059fa555e00b00be3e7d171d306ac9bdf9f2bd2379118d325c8e7075ceb6e10866c18050ae76996fe0dc771fc61142e7311623ce2d7b7bf51b3607bd7bec0da03fd07ac59ad3054c2a81f7397ad633f7e148e470edaf3d86c308f1c3a683974f078171aae3921b431a280206938ce916955ab9f2c3e9956c51ec13e02bbb81da420049b48ef52cdea3e8f3b349f5d043cc1886219dcb36cb7b24cfc4412b7474633cbdc8f129ddf813bf762489a640f5f243d39184973e7d09afc3c479a597cf135af00d981207728817e894bf13f644a6f70a0d12e7ee83d8a03027d788411f5f98c5fe841f933ea430a7d63ee208ee96332994c2613caf4411d614479a49191047a52ab4f8c291d3cf173e81007911eaf00198661f8a1eed08439932513a4257a473232923269446b69c751746c448a21f470ef510ce9eda38d5f187e40de177aa0cf188ee3388e1f07d522a461238c1c5228a644ce0de97eafda756413e9b6dabb6e0fa17722a78d844107bdfb7ca4fbec4417be8d71e414611c3f208ff42129f4a427853823c7037d38241289e47568485d378e451847fc7ddf388e1f27723e926999cd47329bd94ccb4732bbf176babb10fb384104227c9b4d8824fda71381135240d5478c83e63c479aaa0e84aa8b9ae3c6309a1be5bce662d41feef351f5231ccd333b8eba46815effa7c593aa7fc84c66da10c6cf777628d1f90f57023da25f1d5a3eb282310a311037e9686e14f4a8c7ddf49c14c9e37efa1c3ac4e18c9c8fe9539f327142dfe88964ee1f8e4934994c265348243d27248431f466a68182f0417d88423d0a04fa04018442a15028544705611c6956170a7dd7a10975a8d047e45e0cc38ec3bdc837ba431f92b18d8661c76597d541eda3859c91f3d1c6940e1c0edfe867a39fd103e9f13b4706a1d94cfbf00c74a1501039d46d5447815f496451e48ade6d2253fce944fa1008b41428e58ddf65d7a304a9d2a751a78fa259ddbb1e0f0af55d8706d569d4e3c94ce85d57d2bdfb8d0476e56fa77a0698d5bdb993e8dd87eba8bff3a237338d167ea6b051cd9a01766d11605667661eecd83bbb998b7ccbee467790defd4ebb5da477bf83ccbaefa6e042a75a2602ecd25f6056a7d3a0c9f0f51745d2a05d9b0598d57de8056134b3acfb9cc4c721f510cdeab64635abd337edfad31baea3f8a2efbc9969bb438a7ca798c50ba650b8ad18f5ef2a46972301bff20cb73a2c63a4cb3f1079805f99a6592137bf2c84de3da70ba3e9591bfdcc31f49b655b1bcbb6368f149b1e8c41a038a99afef9cc8af1db1d9fd53954e434874385d39b4e1d77fa6481faaebf6f1c35ee320d85ca6b9ee555bb52a9d5d8bd8d7233f5a5d7648acc6b9ea5deccb3d46727340b5df1919ba36aa4d2fa455289ce87aff51ea25bdd87a4ef68be51188cdc87ac663141b3baf03f6f8621f7e1ff10be66659de794ddcf8b1f7e482dd369911e3af7e2eb54bb8a6899e6b8aea16034374a44a71ad55ff7789c3542861fc5d79d1de1eb0f00c9739ee43dd935b955bb58bdfb14c9ea79a65da5d3697cfc127da9f45d87a6c4b1ba109dae5fa73c8fbbf844741a07e5a269b8d052adeed73e02b7ba3741ef9e05bd7b24f4dabb8d62962ed3682854e745fccc6527f65f184b3f723ab683e03a10ac5ea285281437738dfb820fd177f8994b51d7719169355a6e51d287a6d02944327d68fafe0b9142a490e96432994c2613294422bda9d9cf53e2dec379a00ff7e38f9ce7f378a08fa7a473fe4a9eef07e3477ad2e70e0de9fbef73e8c498e22100cdeabef3db653b64aa47c90317b5f1c3bca918bffdea94672e3b1f721d0fd903c7854d0c391cee38c3721018caf99013770708560f8d18cd8d72b2768d5b46a4773bed9dc9792172073de785d0acae233dee9cdb7b422e9a18823c5d1cf27031e47c0e8d3b9ee78e103920720fd1ac4e0a1ebe2377db8b8d8a21e713ea25348bd5450fef8846a20ef9e387a315634a87f1431f1ab90f3fdc1c3d9aa5e5d821ab73681caf00ab73df8ddfe5dcc771e4e6378ebf398e2bd179ddd141679a66754f440f7d307a6fe6d87ee523bad57da7d9ddea1e8ba7e2d4fde944d3ac0e55a441b33d18bd7f27c65446f310cdea3ee5795c767ebb28a7d11c7345debddc11e3e777bf74ba35fae94ea3f803bfcf7b0e08ed811c7ad73640f4b7c931e08278b2c089f70958c8e20ca814920002140881220d49f8c0c360b00f9c4028c84830d285e6987b1f5a8a197cac182e2c9687bd77ccde3d8ac021d4e27f1ceebde7a068162900cdda3cf60df27f1e2273fcdb9e14a430621afebed349ebb19f38ae39b62c9af5ee0b45a08331ccc1c3f6bb6f1ce72647ed5d0c30ab7b9333f3528e0d7af75eba5f1cd86ec500bb3820c0ac2e3f07049bce7126e8dd77afd65a6b5027d1bd976296db8e9dba7cdbad8e03f3520eace3e0db71b2de3d2803dc5d9a038b62e460bd7b8e90e7c0b04ca877cf098265f437823105bd33392f10e5ed4521c4286191d1fcbe125841b4758c071f9009a2992c2ba2e30f3bf1dd61ff8e6234bfe782e03cee4b7a68634c8366711c4cb358dc57a473efc9b4cbfc629d7b8f08e725d13973bf1f11edc25374eef7cbfd4e4398c52ebc9889f64cbaa6c2687e68e7fe43b5eb7beebf214434ebe34a3a57026e8876615ae74e319ee77d39e371ecde6facc128468c693646efbf6f1cbdaef3baaeebbace93ed175764bfb8c53d57e4c43d61eb2657a473fbfd64e118663bffeeb86eec5a3721e438ee750f7df31cb959bbfb90ebb6e7f14fb3b827743ef677bc8766d1d8bf31379bcd6f17cdda789bcda6e3b60f1e62344bbfcbd74dcd42f184710c575cd1b6565811d2202c1216099328c266ccfffd875fdf46fffe41f38fc4bba38dfb3537967b1c75ce01cd07202ce0434e55edca4596707908c00720f011bd3b343b03c1e90eebf32e375ca89998dc926bf44ce3c68c9e597ace61838c959e55ab37c55ef2f951f6e71a959ef7af487243623026cf6434b7ec27f9514c1f3de9c6fed739568365b20a30cbce44f69368e383b879027d889b638ae7cfe82641917925b31399099c6b9059fb45648e0166ed47d1aebc3faba03324fcfd3926fefe4c648fb8a9c59d75d7491f6e44944c12897cf084b8c7dd5d9ad34f10b9939a79063ddfc0cc4de0233d833903c147f011da484cc10874e01297e6a7da5218f7872f78285ed0695510a14b01a77970400f3cbcacbe6386385b1e1cb0f769f3f8fbb0ebd074bb13804f47d1acdcf13a34992bb179dcd181ec313897d10b9482676ae09657e8f3a36019cfe70f9131bbb51f448e2187e5c2ca7b8b64c6acce7fe7f7a388bff7a7eb0440b374f8776844cec37ee111e4436096fd9e9a63ebb7ef18faf7b3f6bb6cad5f7b28dcfe8efb36558445421a8449602c92f50ddeb00ca9ef07bbd8e819bc127060fb05debc1260176806d00ce08df3c076c38ed4fb0763b6ededc2de8ec49885230d90cb6ddbadfd7b8ad1046f5c4cedfb035dede27e57a1ef0f42eff7d03ca3617de79c73cedda38fa2ea708c01e4ce7133731cc7715cce3973dcc622d986071ccb074574ec75bc862874f3eb58ec702bbf42b9c5fde64d1173de54b970667d6fa2741ccaaf1e44ee394937c707f948d239cd451e7a851c936457e69877d3d5b925be07eeb9bc44e7b0003973ec9adb32cf4ba4f4fcdce7d94a0efa6c36e368f6e681f57d99e33a35bb7350bc074920583d07c171b13c44866e346882f0a3b30eb5ae41b261095e85ec114db07a6763cc9d376bd8f8667c34441b449611655419adba69226305a5ea98732a85549f8ec399cf2ddd9bdf56c12cdda3e496ee378fab18a51861f6644425d3bb6fc52946258c6e6cb2057762889fd03d88a377cfb97af70fd3bbefbaefba1addfcdeb13aeecdaeefef599c7e93a535109cb567c331a984e7f1710cc2c47efdf8b6d934f136468e338e3a34a3667ddfe6f46b3f87438e3c1877cee07b9b8f342b0bd1bfdfa4298e60fec653b8c15742eb5400be0a885dec60dd04abeb386134bf8cb9ffb44b09fd26119a9b8c39b4cb2784b02677ed6d1193aa3108135cf6bc1db9ef2741b8b9c2b81a77e47e0abb0f7387a6471138841db903f7cf0ba329c4eb1eda183bee88f1c4c7278cf8354f791e17a718007e1dde3b9a63cf9a6f1384f9694858bbd65ca641018b11a90ca8948a959606b5638a040200009000931500003014120984c2f1781e05792abb0314000b62a076886aa0ca93180a2a860c21848080000000000004c2200155876a40b575db45ad7e3299ced47707627eef10cd7b537c803ce0fbd8a7aa245128db5c49a15807a0fc9efa6f53061dcaf7af7d3bb54037a5a19daa846b65f246735c8d95d8782a8051556aeb6ed01629a6d05120a916f92e5d3adb1c73bc826229cf48ee3071b5f4ac67880118153f5dcc9b9782c06a62b2508bf62e3c4d42f529f0702a0ab7ebb3346d33ef7f3c109a1fed747b3c96e7ea58955ed037e81599f2aa17f3da45bdf3c4d72d05a9b5485318fb7ee8371cce805493c3ed3b91d42d2461a73dd7ccb6e7e5591668d83aff3d01ae6889f2189cecb7ed2bf425ad3749a932e02475c73f095f06b786888a86e3a6ae3e2e538f700d8389510224ae1920852897232d9a863e10973f41c244beb31c6c35e346c790bc575116a1ab55525dad58e39abc6440f241b021f0b2fa7e4f75c622cb1c63bb6902bd768035aaa767b3c62fa2d4acc3c4cd7b9c0436d17dee0d27ad123aa8de14d7d3a23d00d6fea9a533c3dee9fd30f0a642da73e7a60fbc4fdf6bda05cd7519e8e0b0428ea2b055ebce40cf3e4b626c92d915e119deb97fc36857efbb5d10afa1b915a99e1715caac39e8eddb8792e290fc0f5f144e507a7b6ef946f3bf7137d352be9030af6913829428901c783608384998d01a0d216a68ade51667c836b52cba5e9aa15be7aa353d655638ed7bd1043294b48718ec1dd21f097b9c5425a8fcc86920a7d141b1e7c198e8bbc0b57f6d929f932481cc791558c86efc05100d8d42509c8d905e7d4725f521604d600a5060dc12f7e7d5fb51ac41b4df7de60d5e44934066c65a1e0156935b039d6c11c360b5ccc116e129cd3f39c7085e65ecefee0f4d38d1ff5c249b7df2380c7800772208ef9c8b5ba875d41060df598fff4ea489de29c90b1a396e1489d42761543517ed89b34081ecc44393277b35e70ae89d5f4d76182c57041200df84099191f5c4b4bba0a49fba8fd1a1543fe5e43ac10baf3546f7965549e91f3914c8f45c17bdb51736ef1a774d8f71cd1825f9a86dd83ec351b32bc970ab9a268eb2393a0245329fd8596ef0934ac8b24f453fd28e2cdccba2e9eb57d4d49ecaa496da7ad67f27f0ff0a5fef633ef1ff8da85b91ae25316768eb4231641a53e7e21ed20a54d7a962f1159a3f876fc19671d006b7fe6cbd760c7967d6616574c99226a72e904d5cb5f59ca70f45a968bb65c4d0ad62d12ba82ac0b1118af833d055f5aea143e218183f8311962cf11ac1d6a6ccd2e226411df0ad0e55c82da61c61b193e5718f5e99bac9e462e4909d2c8a9021ea5ec8b7a59307484f28129cd3b394d15e1e162a283b7586a1f106d28e04e9459307cf8a9d53167890a120d50626a9f1f848e742489781f4c230655075c3d8f819c62b20c879c32366c5925a5e01d2fcb2fabb8a3a4caaf0679344ec5080cbe45061d99c70a8e128911c1329e0ce247245cf8dcbe252847c2189219891a984587a205755b0fba06fd2f5e0fd149cb31ce0d0d00fe5adbdcfe3e5caa8fa9b800ce649f0131a9366d50c3ff8e65482b8692b919fe887fe736d029168114fd28863a7c5063f2b321d52a5c6f6d315fdde10143e7dbe40322dec0de3192e1f1ad7944213d2d34254c614ef880c68d0974dba767fb8aa13bb6f722c23c44f1ddbd489da149d94020764b86dfa3f2e30e187b811d7cef75a406c17d0d27b0412b3ed174c583442d66581cfca3818c8bcaeac9e7bf56fcc032a76285c79e2e68f5c547a8cc41af8f97603ae3dbdd3873c0f88d3725cfd5d3153f06427bbccf84ab8e890f471e978a5d8696a74fc1bcd7768d8d8f1f4fca5837b49f499afda859461f84296ad1b7a6fd51b16045889951c503e6d527cd4fa031ecef61dc7e7faef9c35abb8258af46542005dd313c1fcddc664bd11bd95948a140dd450c5e76d1316c6ab7fcda91dfef198806c590f9ec9928c67ce2799b006ac14cab69758ac77c9ba7af731a9e92a77587fb38c52c083c09eeaee552bea8c9cf9ff3886e198d0e031a8bfa21334f2affcada629e381b9c8eb7a59434748ee875d5589e0d75df2fe743982bb0f4be5bdcd9a3ef7b2ca644fc7e91736b1e13159c0511d975fc8303c8cfdb501d6cec8fc7cf6e7abc5bd3eec865ab356e6daeef38d325ed43cb0a17fcda90f081fe497bf18731a3e19922976292c840f9899da184128ecb3c22acb5d4990379add6b163588e5dedd8258abfd7cabad271a0234061612b45d586eee86ba49931abd70f12859f71d606be4c44c4dd382bd014ec9b9955bdeec523234b6ba0feab2b638e988aed6ab9348761f764b68d0034224664151620e9c40ef7d359f96a1ceb694ced916521522a6ebd8e175bcdef46ed869240536d531b856ffbe070af9f98985ad2526e6a93a04b5eb8c3b05dbca55fcb69e06b71b265e6c8eaa22015dcd7706134bed31048b7d9736ec42229ec9834956408530234ad174862bbcc26f9960f1c43fafe0af88681615b579e63aeb5f7a9d6df50f280298280a23fa2c7ec7d2acadb41c2f63933bb2d5b60027ad6b1c81af54188da615b6cec2cf464081176e42ca24de32a083df1f821869db613ad0d63eba05443be160c87039c16bc34a8f53a0daa078da28a35da5186fe6f539a55e9a1c3bde123c5b007d3c5781eac055dc4b1f3718650424ef0c29a612455f67750dc1a2ebc943f3d4e29268a8f256d98c82caf92735335f0adaad048095a216fb8a909fa3899f845a72e161b968fcea2abab1be9a2c9ddbc11cbfc594bbd6ef54ef4b7bdeca5a32158a07a3b356eadc350e5fa131992f1b40cdb5e2eb61b7f7ce0aba9cbb34388020211a8254fa2b0c8ab3dd739fddebbd42e0b10a3153a871f38b0c86b3d899a850bd991906f7817b605a8980fc10785eaeb392ab8bc0c947dcc6d894f4b889b77d88467364287da92ab9f56623a4b6c864c12249940f34373e7b6c91192da2a045c35e71097c855e250a4a4994de358fc09e79a9848e5e98d7b96d244763c4d4181e52a5bc5052212254b11f6dce56c0c8ae3799c6fd6adc59cca0562ae822431276aec055a5e265d2307f15830c849c14dda6c4d986ea0d0129591658e8d3e24feff54f1154dc73c96676657427b1960244fe24545c8982ebd391cbea07b9049c1d29d401240abf4fde713173acceb35a465909acf3ef7ae7c66d05ef15f94c3841be63a9c7577e26b055f21f5c7dcb7ac307f83a1bee224191f4a4264b45bc79268aedca374df7c65ac13ef34cf01fc84852f041239d482ca2e9f69fc99fddb25d2632f283b9f2d644ec976fbc82024df9d750dd0e3d934867279b2590f09915b8155400caba49b9c0c04df853e67c6b17f9040e17de27668edb391ff12e21487e24c9e34a1d40dc887b5ec18cedf777f4d0d57fca5cfe3980c7a40e321c7a8a6f603de90a15eb7bc62fc33c26202833af85915be987f92eee073db752cc44dbf0d1da82058515d93acb9bfa17ad74fc3aae4c5e099a6d67ff4974f9c044229a937e0a3c90fde333fc25eca516e86176bad2903ce1b4e57e8c1e321b2b113cf765ac57438b53fe627b16b4aae7d1c766c79345fa90184f89b4d7f8bc9af1676d9498ba8252496ebb34b2374e376b3f8ceccc450268c6eeebe2b76f0cfa43d787f3e2b1594cf679aa01258faa16be92188493429b8b037f0a650a0849a59af99fde6170d272cfbc7afc9ad3c828608de0123bcea5551a4d64a3b4f394920d1da30463b9dbb60f0219897737e2a0fb6ed6bfa8970f416d4e17d2b0e4975054225aff62947fee2803594e59849df7e20a581ee6cbb8a769f72e55f87eb9f8f8abd1a9701e04c37848f24a827e4baed5293a550bc25963d42c7c46a2979f4e354ac53b91a5e3ae89b4af6ab68c2b7a41aa1673e5a3aabe4960a9fd53f3b686e1424eb7767bb38827551bebcf44bf4189c7ce723d1fbe8ad5fabfe1e9818aa7ff639e4b20b0fc43d7bb5bcdd456db860b46e449e41325f13c424ecefc7dad11709941c8ff4bc40fe69959350ef42b8b0dd4f59148fe3b5f6fa013fc8d3b8e5133b23c3e247f34b3ed8e68e22824eaa42e8f3661f3772c3c586c7b339139a44915e3531b524a1b8e11a0a4473bfc0157cf40062dc78b8f7d82d7146b3930b4039960719cd369a517c43990f8c58b45d21462c5ccdad92ee0359609876f2657de8854bee7cff8a4220983ccdd0ca9b70b3f6382eefac1e805ca1424d8c45d2231453ab53dc1a51eaaf4f00c833c87857530a7c374ebb4aed9823f212dcae4c0cd597968c08bdfbfae40ea5052f79e9f9e2c268bfe58c0c58172bbcab99b082f3225d76b2edc76c760dec8cd7eddac95e688326a39e30d6c74aae17c02dcf8ae295bd3a48c38dad945651b59d4aaa2e54be9bab8aa88deab1af036f6a72878ba65082460bc8ff6a339a8c58bbf0a2ba6d6d475893bc433db228910239b016f009b4810a69a878568a945a70f62d8a93c44d3a105ca7c53195d04abcec6c907884c3622dc82d210ade58fbcefe952d34a75e4d5420a349c09d3d2fcd9441973716c631954a4f53ace00b2669cbad3f3cb548c505d00e79808d6608ab43caa50679001aed97e402c0357871718d16016de630cd52454d6237ddff6392fc3993a87534b326d9e0c424aa11af1864d57bbc6bf2323bda9a76a98c87cf917f636ed982a99e368ea0a613f25feeedd60dd531ee56980d1606d0ba11c49f194eb183303d9fe40d070e2e93f0004771a03dfededfdf613f12921bb7e91433ad54c947813af0a7d51335506054ca9363cf1d1798448a8e234d799f53605d15128a392b8ad5cce8b0ce49de1d8f69191ce100f8f9257e2220d9d1e30a1f66ade3fd7c5c5988707f18eb115c961d8b090d0480b50d157cee71b2e413391500a3d961147cb184084614c41079f2f6c021d967c01f96c8dd2c955dd74ece36152ac7a81d8f5a9723f124052026f34d6123881279b7947a255d5bfdd3c806ca33d0ee9e97e21ff0eef5dc7f9eb1d08d53351478d40fde5acd70a597b9421bddfb47e6efd7459b29f645b1d884816e48b02edc450ecd832c6e8884d10a527c4b30bb8747d190a2b499827e7260443564217fbde47f513e7b82d98b1160a8eb6bf391f578e7bdccfde555791bb377fbf2cded105d7d19ec2d87c37eaa6658e9d8baae4184d97ab4bb21723072ad6cd64b97b3997c126eb5fa768b5494dcb5a8a3a3b47795f9fcecc438785739659bcd016374cc6d59d59d38ab14e463588e500f4a2447e70b12124f557dd496bf6c4bd3876427977691631791faec1f55ae17bac35113d5eb8b8fe315857e99c287d50544b236ccf69c9ef4672861d351b9c09db70dab4803242cc5f0e9f4dfd4235ecc755149f954b70cb621665f9eda78ff2c3046bfe90120f5d19c5bde67a5a4a7c3bf3542a18566f040ac3bba5b157e5644574d1b878e504b43497d26c1fd470f31d6bcc44c8d3d00ff5f17fdbbb1d6fcfb5255bfbfaf5f953ac0dc5cad9240771a85797f3b6fef79a1827d33f451e1766b96b3164a8bfc273220f992f5accedcfb561f6e1b1c15bc351ef6fac48ff0b564dae571fcf4323d3ce95743e950edbe63ea95a8e6ab66eed2b9463985b4029440c2d76b2accc903a480a0a895847a3f1abb99ec0a96bc1fa55347f1e8e18318736dbfd437e5188d99b3bec9283ef489c9368a9d4f7c4b3702dc8c80c36ddb7bc7453ef29a756b3af7cc4ac7b281206609547f8ec492adc1420fc5e8a47173249e3668ac13f0e942706197c8c6906872764e306a5443cc95843861d658dd38bce9866407b87255e1ae1dfb21caacc33ef7725e9b8ceba90ca16183605abbcad4ef9fcadee892d29519f78f1c98201b278e039e558d2e96abb2f4635e2a0de2b4dd30f3179565b5f0d2953b4bb1c76d709727342da4870d0c04adde74d10a16bf83ff137d31bd3e10f09f6e78eab9d9f70570dbbde564c29b1c0bd419d165b927c651a60a65c8c2db55a753a3e0ac97e07ccc7bfdb28c8d815e74e318ef2600268c320bcc208ca61232856142ca452e4f8a692ce8a8c96ab1572b656c90cced9cd84ee0c1884686053196624c332260e597ddc5699c6beb737f72871a7db260ffa8228eff81d87f80774bb24c803e66bdd14bedea5d634032da39feba5e55874c604ab6727a70b4e5edef0bad0617b612b72b32a6f6f032a451d52c2b247201ef3c6665917fee4e0a269de5ee6aa2067cb4b14395b80980da2e1d52dec18ac6a1824b38c01231d69d95238eaa86a68163ef43e654d3b122b865400287abf250d65534ab025df1889ea9a13aad50e8908bf4b400920f13a43c6b21e45ffe797b95efdcf07124b9b41834abb72e39182381bdea67c7057225cd73175b37059968586743580c797a5473909dcef06a7d5c246757d553907f35b2cb5fc35ba53072c728b7550efacbca57aa9e51e81128731e326ec68d5e8b16538af43059873fab6b9aba316b07465302d84d294f57928a0346c2b5364b35f8aae13ab4976b6025baffc1129b08518cf64fd2099fa3ce1468b064c81993302277cf247e6bd8887a7b7358d3bd6d522c6430287f8bba6c8b5972454b50b35359cf2f794ce61ebf23bb527688bc7a90e549c8ad83acd69a3471c2904612834b6bce304e8dd43a757195b202c25bf6a33c7682a84b3ca8608cba286ed94d0d43519c56749680f330556f0b736c9988414099f15ff40349e9a5a411c92221e0ab406ef3961d4a315889b81e0088512bb989cc248d1f90e32faf92cab388a568549d0462e9f5784acfbb242cee84d026a2b13ae88308ec1e5cabca03043c80c78828c7807e959170bf2fbed58346a934e8d3355e6afad358adef0f967717f8477c732895a51de7032e0c613dec6e4bba3924d863c1ce92c811ddd5be3e94fabddc7412a5d9d959d6262dc0b06e7b37adf858830a5500e06f8e65570e2bd4ea357401e2327828bf98dce404fdb0a6ec13ceebcdea6060661de64381747075a4f8f2e736fa62698e32a00403edc5707039983707cc2e192a23c3f1d95a53fa863465a700043422ab3dd8bc857e75ba252fc89d4e42338ab334bdad4fe124deb7e6b8124e3f39bacd1b6c662e3d8b67f6169846b3e1294eabf34f362480572b76a7a46e9bf1852f28264de4967381521e27b153dbe785ec7e7f66b8027a179e079cfab198760002386497c2329159ab9133c0c1fc4c94d51880a5749a2b468d69e4d9aad13e3d4ed5bbc190acaf50813678be57e85de55dcf7780e6a7fa5335b4f6e5464b4c34db42d4d1e762e250f95d0b136f3f9ad1ba5ff76e256f8098cff4540f215a5280850837445ea54b44e4c5bb04817d0704dfc3dde7c7642fc1659b010800172420f40a9e1d0ca7f2eaca23ab41a2fc46a567e6af0fc4fa4a9629196f271bce2fcf3111752b87b70c534421054d9f65b02575f8a519a13052d0745cb0f939c6f3d3f413ce5c549357300e9538ab6685986c6c8d91f7969c2754280111d61730a3770c12d4b5ab1801f425191ba3370d8efbe1ce4f533c1a0ddba17adcbe3534e9d5a5085a4a25e75ac978ef4a8a457951ca542125010045cba19a8acd7993190e734b793d302af2ce7361ca5f43d0f37a8be73dcbef8ab5d97a00056bbfb34168bcc0ec5541dd7be2b36f3813b1ec1b589050b5c080e80058d35bd35ce6cbaee89c5214c8a7ee725715a3771852c4693b9926e93a6901b748520f156e8c4c43f6f65893504f228061e00085afe330f3d8ca245c651e4765b3db2ce31213ecba97e78a54d1edbcd5b5d699787592a260976dddc164331232d08edf9aa9999e11a6a669630a7dd5c011ebb130514f8046c3ad79740a829a49055f2d4f0b4e3c6761d8e5196305aecb25f9a6808cad8bf6a155c8d88a47f101f1fe81f80d2a2480deeabae34aeb25450ca056d2fba299997b32cdd094591f4ad014090182208c51a72f64c34a1082fd338687d7d8009fac52e0ba601b025f360338d857972c4246707045f4eb1d969f05379128eaf17fb3f042904f00401cf5dc6803e1d25d02129e437ff195fda6b40bf85fb6bc606f998ea1750eec402ee3e5d4e01dc9ccf3f9d65a0e3724a588ed25ce348ee204b2fe9aa512f462285eb296ee7fe7ad41fbe148b9805de4d39bd3c69eda5462d70d5ed51de73c6e9fe996d7d22c08c4ab0a5a7f51924b3af3fdd072627b19f3953920055da45571d648058fec87453275e9459f465a586364bf98e5ee0e69d527cb867767a5fedf4f2e348afcde0945454cf583471061fd50cb150e10ae1d0fd5459c8580c47c822245cb6e53714eac0cd883ea876f56a43dcc1ad9f01d7a37e6690b0a47073497dc80a10e979aef671f86d39771f16284ebb73da049dbcfa20704e9f55c5cf91004d86dfcf5834d10e8e39ef6bcae0a2ea5c78097c2fcca163e5e06c1647243a191131f7394d1a277c3a8f83686e11a254dbb4915f863dc567aa622f6e90af061cfce68b9c4df4848bdf72cca11f9366ec477b4870a0811002886e0e4f3a39f6fd0a8d12b0369b9b3cdd1d6b8c711243a426133a156f3619de368e197145ebb5c52a7e3434160f92a7aa489128a15f8eba703fb620b7421606ab5f2c3380ff09acc579c43113a9a0d2109861ecd7c7eb0b86fdd5f1d508bda9689e6b50286bf4be35e9945f598982a31bf69fd0a26a0488f981941e3ea2b83ee8f9dc6ab99da65c8f4089787271aee1a45d15f7234fe4580739944ac0bfbcb8c02d97e4bc426401cee18747e3c4282e2a4c2f28c06320a7e37a79e7ae0f7485455e39fd618ddbe8c5bda7743c98765694ab622763ec28f9d8130bf21ec2cbcff130cdc70e87b2efd8e05f35166c76491e5a697acaa91b81d7c427afac5c53462369f9855c1da521e24e9d0a5244af65c8035ebea680b233d4252a24eb0ba7f4182b15fee968fddd4e6c1949dbf70091f635f6735c332d80173b4bd3e4d4bc8e4f4eadc52188b2b7c81277fd548f41088d8359e0750591f97628d0c01163a349a81fcc01539cc4afd48a1b5107105a54386eb097a6d4f7ea540d4b9788c8e8af3fed01a73063da5e06498fdc5f04d14344b6775d917185c7e19e4f02605f5072609ba958a39bc2e34010e84d43e4791034d234227ac0fb175b8816e2b504fd0e57657630284658076caf504a5daa13679402fa850ce80a76c2ec01aaf136f71edf5142751c542d6c44f6f34fcc42e814559fa00bee04b4b6e8a0ccb6c2c8e31c3aeacd997d6c7faf679b6ed4fad94bf6b2adfe05dce60622261d7f2362713943a482329e0257c396f1b881c238bfcc5050db58879f801f2f6bc0aedf4bf315f6c4841be7c448154bc0fa9b4e811ede9a40a2b1fc407c3a5f84ec990c0db407a4db9f6e363a1cb2ae700d0c7f773a6185a2866277850dc82d33734ea9645a57d86e2908ced9a4a92b1cf33d929f233a6c90117451aa498ebe79f7a2c16c7ef7cc2daad6d20abfde44b2a13ea4c628321056d3922c31f33ffb311a331471861daf9e884f0c5a1024daa975b50f2f564f75b7af39193b3760e5f112f5d59dcf45b1f7dd45317724287e8b45ea9c949c5e6c26d1e1c257d03e62954c9da4240362220f1fac68fe9e38177d2bffa54566faff09885931f19e47ae0d964b1f3f1610f9a7e3b2318e9ff2cf9aa499d8a3b8b360adddf69b587d9351f73a8f9d9338d5d91c001ec6d86481bb0144b4b912e6f8e93bbecf0e572c91efb0366053b49e150e3d126964bab6b363c4c3e75c4e3b50f0d9424a444b809ca193c81f732f9def3ecd39c37af80cd03f0c1073fce43d2ed4a52e4366122804809a2eaf26243f7fb0a613d4e5b1247f0d252d5c8449807515a731600f6c80b21feae2fda29afa091c7da0fe448c7c31f711a16f0a88e9a6c67bd246c6454b5033a13653cebfb8558ca02d47077a654b74f140b3786b811a477ff684341e102398b7e52ebe0109bc5d0699bb4654e3728bc35250e396eedeccf2632c144cd0e4ef69221f2ba5c2aea8715b97c38c8dd15f8e7b148702db4a6dbdd6767745b4698cf3f876c6bcbcdc34bbbedd62142748482e9ef4f8282cd702dbef3c843daa50064e72d814d034b09b688376bbbdd69f3a1a15d0028a9af2cfe82999998690105d7fa9523616e8219127b7b6e808938be30d3500cf5057861a01bbe2fa581c99e8ed46186888a89cc733cd7daaa893b299fb95968815e5dedb373e8226ea3386e99b21fbf2042b7adb261d54bc0ea6efdb20a3350e1a6a264de2500f0bdf2e7ab0e22144f25af62f7fb93d4d082575a16a8dc181bc516c082370ca701e950342c70cb3c1ff303ed18a9984a1630932acb5ecd9ef0c7b08ad941c9a1867da214a33c2b064bfd51945039071e6a171464689f9083d83632ee54f660223bb74797475862da5085fa3fd27de3c0156875119f3765fb66a78183e124af4cc6422c388dcc51317e5a39208f3d15dd6c07e69a7b4497c85e5506a5710c33900f2974d05d07ddd6e20d8fcc7115bb3f5037ddaab2766838403dc5e643d259e03ccaf1bbe82acd374d5b7e3bd1605b2e3e69aa30fb1d66e0fa7952f29210648f6862c00194a122f5983e6a01629bd069d005df3fdce2050029eb2f20fe2b695abf23fd7bbf102333d17c029dceafd7a17001600f33c5007a3d32c9ea643a50378f19a2616ce502f907a52d0a7cc24cc525a911faee513d89d1e68885c11a04a5ca62baecfa71d61927e241be67486cfbd27696646a5c686eca4c2d38624d4089814e5b94479d4e79d65258c627d5230db10539d6c42af408c53674e7653cbfd0790c74818c53f6799dd8421dfe839754b40f15f48bd4505e42f613d11c5efa04e7384bf2edb16d0407dde3233123502bec7f110f9b13ec0e2c43770ccbaa28fa9d7cee50f691ba2f9df3abd00a730a419dbb376f7928835629ec5bdbaf1c11476ef9b371d801fab74dd49d297a523c8724a9cc71a3e2220208838f3a1af43bdd2805e25eebd58d4b91ad0c5bd09459e701e239202b680da3cd7aa030545ab10c91700e259ac89be81e47c596c0f5642df64bf671782708ae9cb57e58691869976234e5e30b630a6280914d44c612c76e2e7e4b06dcb7e3ba88d1fc368b24ef99d4ff7c43d995184c60581e475275d9bdb8033a29dc688eae204bb208b573883458c6811b58e69a99bff0225d00934d97b50048e1067b3499860f28ce6729e9404ba434d671d1e57161444309241edadbea36b59f082f79d91b0aa28ea21da9f81f46c32693a23610c5960291c068b6fb6a634083527911949df14f055ba4fd00bdf0162f7d15810c2ffed58c4fcbf4ac57906f498b07e393406df08087e06503f34f80c1dc055690f33bda96e78f3328176458ef78579ef6b0835b64c56c2025a5055717f18131daaea567bc9699304b27699767809d144faa772dc7fa5429e248885f0149324b61ddeadc10153cad05bc4fb257947d219347897adcc7681741615ff55d0707c76a7db0208b451154dd25d8ac72b134da050f09d004050460a80f1dae1f5f70d2907355591027085bfd7ab3f37c3a3a7ada94c37e3297aefddf29f623db5ccb9d4663e539aa1c0b65c91a047f8f3b1938ed4186d2a4ee87ab1b68ce81988d8e9112ca589de38fb381da56b881fdce46b5293586f90e357ce3b2b5b6ccc2d7acf7a5dcdffc55d67ca9fef12d539414aa1ddf5a6fb3a779b537eb9464cf63615e03a039409c30ae85af2ed51e8e2123ca261d5b48d7954c40c5659fbe3e87c48bb4580c16fc4e0b7ec4926e477bf2620d187378fde5f869086e289db9ea2584770df680af6e2acb21fe70c8ee8313e13a49b0c3be7f6efac48e657e51b4282cf26348c84da6513729cef14172d2923ecbe129236886a7d8ad2f9f657772050e93f9ab0f0c414450e0f7cc5f37983c5aae8b73db48698c1cde91c6ea7f059b0d2d8875bf6d7b344864ad82d2b5bbbe3ef5f8d6824b7672c6e836c9e6c1920a9f23110f3969b3442e727fb7cf1a825845f95f324f313db6ed7478142ae03e76d118d8129dcb53dae7666d0ea79b48166a4017aee2feb78f3839c1eabdc38f33db1a28247515d1fcdfcfa420d22d62435f623a03e446368a056bfe9a794f55858b15ab2f27bd4c5c190c1c2c7519d1f14eafbf4a45893930d0854b42d437bda88fc70b945ab7a9ad47a3052bc1cd5477e531f89e2c601a7e622e3b28c6923eeee93d0689767030acd6141cc6c19316882aad1a451523ee0d197ff906a4f324b4683aa02c5d0d7eb6e3364098629e694c9f236945cfa384135f6eca777aeb65bcb798b2f78b534fa7a577f1d0a9d0aebaddf15637869d3da54daed2ea45d9ecb60bf0f20cd0d5a670a1b7ccea6a39d62e628bc0e579499ca827bc474849ce00532d8ce087e56aaddfc1f22a8839a6522634e0c27b3ac73289182c10204389f0ac46d2d2a5c1a202edd50a5063ca2a790c39df349d446297286190e47d47412211cdc5c761aa5672170fc9af1b74562878f834eab6c22c2fd870082b7e0d8898d670fc416704fa7dbb33f9f90c9a33c644484cb86f0ee194f0de1c4ac74e433b788486021c0178c9e7e4c2b7d15507625a92c66aafa7488c1f9356ee959eb08f54d28bea34d89ad78b12a132947a16914ba8a690d74d6d54188206256308820e50ba5f7e8dd0368d83a11d1b1f80d7d026353fdd9034a29794804a046988452276b7ba76deaba3df78dd8d796800fce47af81dc11b142ca42ef9541f4086079e2e0ca787a836755775924f290338ce2eaf88c0340e89a7eaed46d78088bda27cf4160c97ee9b2c7cc5d876d7077741418300f9b6db957571c49a900d169613c9a7825ae3f7eff21b5c428f7d54fea3ae4e4beb4ec9bd2a8ff10340e57bca556a31cb48740b24b7066f5dd2930a6d660ce7cea1713a8b935c41dbdf83ba0ee829f353a0aa5efcdab3a42ea775c3b4fcaae8934534d0d54642773f0f17e68af7cfbddca5c92dd0c5c4714c450f9f3345e11390472115d06aa75bc37b2dc1a1ef040b7cbebc1247299a01fd057774a9495212d80d272a176a45d9cb0db63506b88a1810113d4e6e3e5c50f80d54df32a2ee8529b807e1300c47b87c37cd917e9f9990f037ed1fc3eeba8211fc724a36491fc7b3434be913296fc917fe2d5cc9f950e9b3a74cf862d91600ace298f3e3d2623a36eb649a228d5cc25eade614311a73499effa4b579e84cb0bee3904b4351438b085fa4f2c183ceb9a26421fb422cc371276355e0362da5a11d41a276d8db51fe844733eb2f515a75bb84a542e00589c142dabe9820edabaf09383b52ee2178b4dad7789dc4762827fcc6b53fbae15ea09ab18999b865bb4482be7cf3f07c8f6a091b68dc05de6861245ec6a31d82c2ce0fcc61061ee28293afa87c0359d71989f332d6081f6077066b7c2533020e5371a1787a20c48a37043e7b56b87c86fc83c513758b463d605e49ee50d4deed8747793095c802b107a7d71cee0cb0cad65931a8c987e730d802c314acdc90f68ce7174343649f83ef6767e44c2bc82c5b2611fdda657bd6def599ea760307eb484177b4db2655038031745b6fa7cb9ac171ad0a7230e43b49593effe6c8b928f332180b4ae96c6a870a71cce8603d6ae35faf48c468444c1973a168fcabd06ab14804f9b572cbc9e881282e3dddfa18f58c0c13ef5587875343974331f1e1e3c35d0155b4f209883bc194307c8e068cba801646cb3433b2d1cb4ca8d6ec3fce011e11dbfc45017ca976462b46fa7af63a1343fbaefa4414d45c6d9f74ca9b9ae01620be855fa50274256ed23847dd1793d2d375dcc83adb7a65f4b580d141fee12342475c545f12a2fa073f858fe02cf8a74e6aa543ec46201ca0ad3286d815252e0fde6ae9b98e752f0dc477637bae092f263a64189623ce1b31e4ac7b55f9ee64ba984285ea51df1c39ec03f79b42d9ac62c8b9d2a2b9a57bcc7857896388d191701945e17347818356f66f0411accdc670d5945437979a7d11e0ba104c28d4f4de27cfba61512e001c2b5aaf29811244572802f9eb033426e2271260e62fb222988efab1a0265a6b9d4823d422a2cf5066689c82f1f7a973a50c3413f52b4af55bf254955d14a71399f1efb2facccb04b81622633a671c5c2c3c69fc64d595515be85f0ab60793ea43fec06f9cafd85895891a27cab6403b1c2bc3bf81b15cc0f32829d78de3d49c911db61227d2736613f3876fe81f8d54943015e26f079461d637c9ffc7f28d43feef5ea7d3e19bdd9d7c34baa282848dddb2bfb86bb151bc8192f56f7ff82366c497781c833b411f3139ed9b348aaa20c44017a971b8a4f836b4cd847195406ed73682f63cac381329ece16a3e1a51c4b167045041bcd35a52f93b5dad4d75193ca01f64638869035e65ade695d0d44d927f9f6d51fbcf01834dc769c3e1f0ea482b24bdc8dc3302ff9601c2dc52568fd71f67665ddb73e0d73fac501e6bac287c73d20280305d46acca002c693abe2b8dc4e0385c3ab39c0142d0ddb39f068e633af86133cdd2104233c050954deb9e101416e3c8e9b9f940f2ce5409fe675aa9a11cb6bba3a771e8f6fb18ffee658ba26db77d3a1752862d018a4f83f7b6065f47e0ce744ee8b1542070f7c2d837af17b309be128080bc0acd153aa5dea3cd91989a4f086bd75503f2a46cfbce3099a5b1bd31cc06b0035a0cb74c681062bf7a097fb3d95bd2a1f55db93a21e551c49ed6c3467d87fbc31098411c2dbe0219dc08e91f84b653787183f77c538ddffa76173b24129ea7ada9c22c48a3541ea9b932bf0cbe11c42d9fc0cfa40e1a8d83dad2237c265b2a5334a6f1fe85c87b69070ebd4b53e946cd18205f7bd031579c96074b49ae682f4a807ff464beea029b0e4dac1311dcaedfe121b0e90e2b3c74589a1211efbd9beae7b9334025bda54ae65b2eb41eb010757c2b95f6f31efc4e7f8c1575e5a884f3e4fbbe47383cb548496c14c4d23c2398983f2fcc43668172cb38c5593fa058cbfde144589da4a935fe8a7e56a3b7e9ae52c7db30627e71bad27b10de1659110772748751fe7667e246c06877abfce1c127f8f22d8af01ebf19e91b952eea493312e7300fbcd9e190656a609f3f068f284743519d02f62d2559784732106ef0db3161f81ad823cb2c24c99d41c377917411c8dde6e2a57a602e488010d6274579e91a4c5eef1539284cfa3574ae3e9331e39e896c00edde682b1a2810e1be3f0850ee91656e6723bfcb3e6f1d1f174f656a551090e40006e30a2d3536991ba3f0b809d11c868ef70d1390faf37dd3dc378b2dc701e29492f6247b2fd2444f15eddc783f18f5192512b66a2d62e4e27cec113d1847ad545e593b8cce4f225f49d2094f1c6d9b55b72f72de8e1c150213f27dc617adabe1b9141b55a9e3afac66a141130485dd97b137b68c8b34319abcb327d7304fa00b234b469e901b536ec0b451c20bd0194681b991d479a6ac11759b2eaa38bdaebcd74e1425e6940bbb6c58831a0a497996839202e9d71d644e6257f75433f225ec148a848fea3178c84ac5d5e1df2a6633ea0de0f424502e2eda9ba471902b21c7ad965b08a42723ce8b375ab26792cd485b1dc248042cdcc6f74569e703763533eb8ca6751af8d685f8232ee6154ae33d3537d8dce7fe223ff4a20d8f3e763fbd481b89e085a6fa3e7d13c2c597c8e2c2e108ea8b69a2f7d3c6c219f241084debaadeb8350ec4df64a1782ba5ea5c73d1e8d96ed1c4a21abf268e4d4cf65900c73638c045afe14de2222a8ee86cb1182c4e67347bebbf4eadf5efe3ec7cff3f32968db57a09d2a0a33ea2aefbe8e20f0581ef098dd2356ee593061c17f14cf7eae1590866a1995c27a3e4afb27bb7fc5cd147e0f5ef78fdaf8053548938f4ca31bdf60fb754e60f213f94219779e97e26933d80cca3bd5d9117b66ebdec9fa9bd8f04344cff52fde52280c87326587c38d181847a8340a200a37a32710db9d93b6360092ed74f2fdb9ac90e86c40e4dcb84e37e141c65cbf9afb192a9694987032116ee364dc55a9c62ebac26fe8ad551b911e667c6cc2ed5fed45989ca929c19a72853fab93bf9b76df6fbd347e22729d4c7551bb10deb40bab13335ff655c13a14204095808c33b9a7e894e79deb484686f40d44d69dc8605f4a7e89d4abb2cbfc64a6785075c1f09b1090e930b1f537ca030a442d32fa6611f06a7ffd06e85da1dc89309aa3f0b9ee7e17858591695500d00c0ddbaf47ec44c8dedeafeae05a7092a65cc143cd75099b19b06939ecf5c3b6e56101aeabee00fd1955c475f5e7ed509f1a9c725c2f694b9fbe3085c2116c81393fb8077d7db841f76992d6442414b7d8903966da89e4866d03b5440622a4a596a700330e2592a37da34852a0a4978050be836ec3886e0c40b6f0088c45fcf08f4a4adbc45619e8091731851652f820282689d5af87c5c8043b6ba35f783772646b7253ec61813c506f35ae2cbefe22f302291e5871de7c846b9f3085b60fdf734d5768150cd434deab7459ac172805e696a136aa3d277c11846409b6cd5dcb8a4bd2a461130f7e80e2220f0ecc3f7078b00edc18752b455a9425dbdabbea8d30c656926db39d8dcfa19fda82d147eb3947f43aac8427b4513f280faa0fb897de8680f3c0b2afed89e386133f8d0fed970ec78c49fb39a8154c347a71fec7d3f58d9b3d3feb7d3ea7fb3e2d498fda1697781f54c3ed25e6b5f9c5f29e526efee67e43d5fe1f8f63ba8d2b5ed933c7f4a09b3d81400cd6f071cbc64452dd62ed092a2dcdfb027c7e81f927c5f09fa707c1a8c22961dbee2db3a4b39e41c5a6fe65f98e2e3cd28829eafe1f89b667dcfcf95eef694caef98a6f3a738c5e7093a7b70f7fbca8d3181a3208703cbd3ee3c58314fdaf11335ed7f1d91f3a59d03977ca9bc7c99fdbf9bd4fa7696460944c472e3afc78c1aac415e2ebecec4b7514cf82474433cff12e5529c4a7732f85dcbd3ccdad7f2a8fe8de6acffcbb108f809a9db81619f968a9a01e910ec594a0bf8c7aa8cb29c7e16a1d59bbef6452745499cd4f85f10a5613cd8c82c5d31d37e6dca0dd3fd20f1d49d11f54c6a99fe1077c17ba052773a7c0043d66c929294a81088355c27132b974b98fdacba10c2677e0bc5b073fd10a79518612055a43d1a36b18787d11aa94c6de015fc381223f0d288473c44b40d1b6660e051aa09986d06505e0f6f45dd9a38fbc1e9063ef572563dd154f1a3731435bf8ede4ddc53ba176131069c35629442cead45f1049c7fb5a2f3867f0a67a0293e11d2fd2083a8c0007439c8020db582194fb54755a348695f84e5be7f88c936f93cb39b6693b51c8d5f9dcec3542e13b4504b956363c7a8d7834425c9501e7f563260a78bcb9ec60955d6267f429df58f9860a5c0a697cdff03868fc4e27ec67470729545fd0a9663fc8a9c0324d6cd85e60da9dd15a6273bd5412e7508139524b140d963558274cf2ab894ebf17a24bd692138f640a95b7aef99e4889c70e4f67735b2208d32abf1938032b7868ffad82070fa49c38de74fa0c49225bc06cb813f9902645bb3744aa6e2324157f3f89a183da375e970dd7cc475d7cd5730b7c960b2e006665278691d4ad3b28cd43b1fabd890e1bc14f24eff4c1ae66753081b048d53bdfeea12d6ea33f5850741e89f52acd0e6fe549f3a3fdcc29883efa7ff526a6e0e95c800403443d062a188d15d97d661243227e33542d8d61bb44c3773ee9e063fa5cb1c3a31528d9b7171d3889cbd88b33b701e8ce137087d2aa00ca282c6bd82584c0a598a122eba449bc644c411145eb3cf350cfb1303c0a63661843b1b74afc6c46c2da9ff1719275383f2981d1950bfac942e858c56d1889e6a1e60703108f64eba4b75f9399222c92d87e6b753e69f3c5b5c1c2a472355180ccc376dda2edae302c4672f75c5d638de957c43656c98ca77edcd29e679244cb836de3285ec336b83eb0bad63fe8a63cec09c938c1b7e18fe4e17e473a947516936b955b0f44e612a6bcff0799b31fe583c6946f598b2d32c960bf4e6465c3ca9b4316791803b2df4c889959d6b655730c6df95e27f1ae0317e01b6b08f9a30f7b226b629f7ae71a13f0d92f28e7cddbb03e961cdb7602d2408185bc0aa3269ea754e6923fdebd30d543279c51a6d279ba9c1ff70ba982ce385405a288a8f6af0a969518103b2c7650ba3ed822c01d60cf38ae995164fb85c26ebd6722c1154f4dca803972936963746cd30426069acce10596f46877f71f6878f202a6b28dea9f61eab024d74335e62aa94b67c745ff8fee3a271c0ad756aade2fab3dae324b90dc861f5bfbe24bd43be5ad926098b3a88af5effa8815f622ba4458a5adf9b9cacc26734009fe33b91b6e6cddb7e90930cf5d459f6a00e40b8e55c752ba0a63e094dc952ee76475635d75a232c86b7e69ddf78240c2605511dd39117547d56b152407c935274dd2428d9de0a5ddd4252c7f921193298297b45915400d22e555712d931069038efab9ff60b248f3dea4ad2ea60894bcdd7224ce3df2a62f091ad97fbd824ace4e49935d49cbd734511eda3964e1ecad4b07ef3fecaff1c29df40c3bd39561237c2fc938aad94ac4be4bb0f1f1f4e180e180015f3720393809119e9936c41ea146e212d86e4c1a28d83d062426a460887dd1e546856e6bfb77f1ec84b2b76a54e3022ec51185e4b0c0a4d4e472d3f70e390548117cb56ca6bf7e16d1b397d50fdff7ead8775974497d2f3b987459844cfd7635d04d792f3fe00581414c121c83ff57b25b676de9ca295b6043214ca193710ff1e3b27bd0b7ee7f6787bc10854eeabdf0917803f3b830ae5883830d0d0008ab787bed780c25d3da9381c81097576631d7fcdbac2073e11d055278636b5723f8a8e1fbbaff3731d50bd11b328bd1e9855688bdabceabac59fce7f31016facdf19bc72b3e015a08949091b8470195d3e1a3f2668bb095ff798f0330b5b885d9215fe67e906b6fbb0adbd23f755b6a5f3d4645a5336ebd748eb4a5ec7b20109887afc80d921c6f6c299aa9d1273fdc2bce55f28ae3c5a8dc96eccc6eef8bba603dddd037778c8e06115b0afec43aa3660ef0348677e97a06f2318797ffe04a887bbca37f9ec57b8b8964c68b17b2b806de861707bb829c7e3f6795b1d34aa99611d023863f3709a44e297efbd0af6bc00df0e1b5d1c507487c4f88eb991bf0aab1758f3039eb97081e21c51c6b6aa02f0ec055c9168bdf53ca7fc54bf178f002280c8a086cd5693781009b7fc9a507a396bf5b5535ff8c85d66c9ea5867d259b10566d70c14ba213bc02d304ea8cfa8d748dac6e3bc23309460172498316bc0d562a40a4583b39aa2d917cdfe137fea2ac10e0dcda98605f79e3bca0c6b762cc237d1130165d51ed81c301ae6945ada4e434d940b20254c2d88710077816af9daec8f263c8016974ffdf75ae390a4ece9cab9299e0ec00a0abb4c5ec9b28579761de066821fc3e0a2258e6950b515b01d3b6cb6c044c7a4f0b554fa81c8bb177cff92987e5aa0b4a03634059884f9ca8c0dc163bfdc2cd8ff6c13cce38c44744bc9def2b07429990127fd55495d92c41a6e300999cdc9184f98adc1a1a735355b89dbb19dac8a1de59993fdf9740b0e8c6f77d53c0e7b733d180f5125ed80d4533b8af936b71d6a4f44c8983376a528faadef8e13af4f458604320fc4991791b563f1f32c46199142b7ea197671cc4977511dd7caf9bd0517f7c1156eb9586c66051b218aae8f4af29f328d48c59f354bb6b28ecacd530c38b7290e54fe146c22ffb171e40c98462a1403a992969d1380e5e9b185127107201a6f429be7210feb9ce2dec534d08be07a1805d517a33eb9f0f61ec50047b04b762965e68008ad216975b9b51b5be2a2af8ff9897223019b0df3296dec2506bfe8139b1bb0dc358338f86346e958273cab2e9f3f4c43d85d077977918f82e588e14be72c811d22528db2802361eaac4633751bdb7217dc92ae4189c2b9c4f800b2a779ce451262bc6a41c9c1bdb1eccc5f14a917eadbcaca7a0592624f69decb8b0906f2a27e8a9526e1f980ccb62e1543cfe9585a072db13ed2c0bbd5e2eaa9fcfb314047a6808e921523a3f110ba284605168ca470aeff0e41a437130f2d098398e365dd0d5dfd02b5e71f9de8448bd0156642cb748828f5817ff88fe3420697e46a646f4bd7918fa674ac1497ec4d77babbc5b354b3d69e240883405a0928d14fdb279fdafe8f5ea1507824a168885362c9ed5d1b074148493076861bfc443f78949fb531bb08971258ea95962261d23c5c273b49f84b61faaa365fd6201a4bfd62c1e0a1a60c9c90cab612bb50f8d525e9e5afcad67f140609da25bf10a047a5b1bfcf89e4ad69ddf5af67a168aa8476ff42b199fa0209925ae66fc602d7b3d026d6dc96b3475928881c543cd72d9b7a7aeb84eb216e704898b65286dba0912bedded57dd75b807844c7463fce5ef49cdca85f53c60b11465a26d81589c7f44e903b9e2fab0d3c472f8c1637ff9a90e32cc25663be0b7e38dba18314689598e581ad103fb1a876eb60cd5af433066aacf1ce0904abc00adb94b7fa44c9e4893262b04168b7d6279ee3e80c9966a1369bb18caf5d14050a93ec2f6e1eb905c3c5a407ed8603b45206bca65a559b19400ef1b37606ad4ee550d174e101de32564fee23132ada1c227fd10597155b4d21900d56e1220afbe097e44fd7bc89eb5715416ac31e1c7f8b88cc6f1184805b5d8d77151fed7e535a7f16b2f0ab2c1829de133d7854643f209e99f279d309096d9d20b13c1a28b039ab659a49200e99bb72e0d3bcd02148bd415705ae74ea8c05872cd9ce8461834dd660c10b75ee3f0e94a0dd502f7f1741f0b264d6c83fc7fba517a82c18654c9075444758f4a06c29c30aee47d80975e04308729e8c569ab2eef2726d8f6c6c8d07e76f93d8d5b5a6d2648150cd692ffe793546ba93516c1b669024dc12592a9f5c5ded540b5e2a39e7686acb9ade4a7665716e0dfec959b5d0380592b2c86c8529fa3553835531e101aa086f6db128f5daebc88b62294310a18c54bb54e63f4f9cecbb2cc25d68f36fca9a0835e3da531f9e41c744d221de75317668e8514251accd690030426417a8610bad5141bedde06e974fbaf111333c57d6983d5390f7865b6fef9b8d9c5fe31235e4557f489cd8be69cca147a68e40d65939a70b033d95b1bc75938328807cdebf9647a13f477716d156037b223c49ac1698dd0e09b085170feded74d466e8bd2b40848559ac5e8cd66c9ba3c924b5870603ff530d928526dd4a0e80f00a5353c3f6d0cf02636222e62f67fa7184096c87693f17c1cd9a5588db19b113e70237170b8359fdf8fa62d0dc6a2a3f9f263b630849b55924956c8548f09466e6813c2c439bba25611e13304aeb2b45e2b3fd2cd804eacfcacca4060e834881c90af0a30200fdd0392674186b232ac7c3dd5fa9178c111f2bb7c48d32bd83bc5a178678ee86cc54c572ca610600e69422c111cae3d330c51801870dc2410da2ce471be17392a3a1996be2a493dd3cdf2bee7ad23caf1d7006a7b84ea09fb45052d6c326eae3144e51470fa3abc430c5a269bb4cfe3be9f5db5cf4a6ec494ef4cfc87277bc47b27baf7b3c2cdf48fe9045ea04fa2c4d95e41633f986e4b1e14a95a5ed027fa243fef67cfc3e96df8adbfd5e006d377605d8938388708ae211022c7a196a431544242c3c811ebe64b660a3522a3574601687981bc713e9dd402a7794b0e0e1361aa0f73c8517274ba317410515102a94764f3b0bc730c49dd1191d6a3b32869ce0b0430e26dbac918a1a9ccd266c1c34a6597aa4a3f91a2945d4d69be906a84029d1aa362876ce22749f4241759cc8cc4d0b496b85e6b07fd99642683646fa449a5d26c622db1eb51ce0d6522ab1be56058bb2986ca1e035762904a493942a552e93671493f929a7759725af17d09a8b9d041c629eab439bca83a2690c42e45b26b804882b24b66c7e29966dd645b404e20ea916c16e684530fab277bca11dbad21da92cc938d8653122b9128aa1bb9a2572395c3c09b4a39318e662b27b13765b11b02d3701e5a29335691f07406fa12ad98c863c65ec3030f3d61ba6f2a6ac69f5ae7a92ce074ce203504a80f4181f1540d271163b8d2c3807938624c9f06c120355cccd04a390a138e3f804d5c280bff7cbdc1680463f47ead0c05affe96b0c165fad7dd40f47618f62c50a31d7b05e61bc0f094ea8624982bbb6346010022687ea2d681f587aef931f24a73ab581cf4e3040ca544024ef8bfd23b98c5512e085777687192847330df2cfcc2bc3742ce8d0f7f2ec203251c1302454ca730085a9152386bbc6ff1267620e96b228da81b8bd8ec65a345c4ee1a1180b5cde87585b0237d2f7e0c75a186631e83e4531dece5a1c15fc1d570fd587f484616f1de661709b039b8b8afe0d23b9f7c92e11e414dbe42e2129f74c640f0329bea24c08091bb9b1bd2a6382c4999d0324584d0e9837945a8081ee1080d3c278d689ebdd1860d33fdd1159aba21e8c38c3c341d4d0b541b5e53354fc0d23b20b604e7e8c72151b345882521b76d3a1a6a095dceecba37603e9d92d56ee010a04d8eb3bff964109fd603dc002d369fa113addff39e809ae6ade6b3be05b2046852db7685d4dccfec9d5b1ff929bf927ecd022639d22c8f4191f4cf1791890b46dc8ecdd40d9e163565fa6a89b735aac6e834a34c3a1a364245628d3cc53992012ee488c145b92591df292fc5bd574620a4eaa0759f9bcf5feab76a567c6525771fa0a4b2f883303ec175e1daf5284b5b74d417a0630d9e8e3f849c88cd74c50cd78c012007e6a7a63674a642c976848d1ea2de9b7c1692ddd4be80b14a2c73e20606c8e534aee6a9f4132da2d06de501e5ddd969d7acdaaaa766d4173944e9b8b02762d66177dd25d2f9c9745d033dfa7760a40b65a63ba68db638d3e2d654d9f3eeef43a216d6350f60cc384321a5ef3b85254905686f9ca42ae264d1d9f8823860da344eaa274a74dc1efc2e3c9001eb7e1bacac1a5c8df8c3fd2013ccf871a2aaebea124e5335ee2da69f46e324ad39e70ee019e605084c5108aa5b2f78210174107e9568c07f78102568b8db14760de4323443f238a8435236e64890ab3dedf6ec2a1ae23d7a59e6be8be0d90eccf8d66dd6c9fe687a174237f44db1f2a8b4e46e6894af3a67bbd40638bfb344626a06ae9782ae695664caa3d3482b84fb7dc214100c85fb785b3bab325ed8452e807c34f72091884b9ce901b671a09fc2d0ea8ee3278afff89a1ebfb4bf8507d1dc4a8291824fcb43e3a18b6557db174be71ac6ad8b9660f7774ff169cd0d8959656e0a69760549114af6f47ab023b2ba4b5ffb8bbe515de60263c720e5f4402690894bbd6102c61f37c00438c52b7840fb61f8b7b0c898405773f4c08140e6505c5a8ee212bb15c951a47add4ac680473e2991f3e706a5248d1f7092b2da312b5c1792cd156093ad6b6ff40f24a91cf98331b6e885c080bb81831b6a1802ae6380c2285d3eab5035c03587f257ec99ce0ccb58c4dd125201e6b9b966feec5d20dcf809c48e4641243dee6cac6ec30330c17e5b914e4ed157054ccdff70f3281470c65ce14cd4938ba754dc06e9fb6fb73327126a62301e03c41455896c7c80a02f17a2769b7da4a450c6d25736025236810cce3982be31bf0490975a174cae693b63f20a067608576af8dc5b992f177a4fea048e31b5d14139fa8cee981b141e3385cdcf47f27dec5de188454b10e856302f0a9cf9ef0fc4eafe16e824b4eb1257ec6482482366a274b3be184785bf0f475462ee80dbfc479e217acfa1e7d388730075d99198627632753bf31d5f6b6304e22c8ffeed61d06e52ebe625a99a2cb6e65e86b1a8953648bb62fbdbf2dec8f0ebc8970c9373ccb3b9e71776df66d28f137b7d8a1aed349eab8bd8878e29b9c077353bd73aa7af123a3e37ab334f30e9af6a28e9de3444a47a5fb43b5633069d6404f08deaa50aff9354fa884587a0e29b29aa27b4b4dd0f4587303e8f51bb903e06b2a207e0f36711cee458c49980f6448bbd683feca04fefb3e71b63d4c0a3b927d1c4acc005eb1e3699d3cb237e10b19f704ce478761666789041479349caab0804a6df7b8678d16cea859a2c76e05319f29111004f2c0e2db67e4440c1091e2c513f3eebd13eee5365d022eda0437f22f25726f95930f4601937615adac73b0108871df2e40a441fb3e2ad1d6557d1c61e1e97d288edee5ca16be23fb9330d194495649d2b20a3eb94f1470c0800e8804ea5fbae1363f9f51fb10ed9e60a0e80ac9afd55f15bd52dc453beaa6875a00d12a5791ab6c468719364114c9a8e2de93f50841ef697710bca92a750e2a9f8f2d760371c5ad0193da5a7c79c1974cfc6d4b105ab275c34e889c6a31295c53e2673181b2264ace2d2ba4f391816f0e7aee7bd36159e969c915fa3388b31b04f4d6904d6bd93fa3b13924adbba41b0517c849f24f04c958c5f66822876617e091018fdac4f851f989227dac5eef216b8b86f5b4ea00a069b8fca5e40411491046aea3983d528c080ecb7aff873404d3041ff8b9946a714c00635202facbcf8aa4b62cd81c934afb6167fa5d2e40664a9b7b96cce5708495acbfed4f992ab104abf6218c23b55b2481f653a2c7297babf8d00af641cb0f1be30a1bd7100a50f2a6a85c70192de089650ca1de21ae8b6e3f0b4bce7b21b3009fbc2250e460c923e2778de09feff1c1462acbdb72feeb80f4cca65e3c9b52810f42bea60285ed0609c8849e898cc0a78a66278e8044a9c2d79c08a9da7f9258911726b5820468763d0aa903292056b6aadab94171416ee4c53d5b1108a3074217808304eedaca86bc2b7203883b0d7302c7e47ec23e7d27192a1003dfd2641ed3be077eaee98d7abd8b2f919514988a45eb93f2680e84c3a2137d942ce005ce4697e2da1d4c45f0a5d0b3091771f616ac1c1be2be753d9fd42e8bb89fba8f6aa78df44efbbda317db5fd8a0972efcf6f78a79f41f8fa6c499b6ee7a716afcce62fcf5d49b3552d8c7ca333d25aa6d8621ea1984aae9b3fa239a6a5aadc09b18319781cee228a234aaa6225be4d829fc201081e3600a8525b9c1a06a4e3781136940a87a26a49e4cfcaf0a335f0dd4acecc7a074e78c296674002176c16980b67bfa7bbb7de10100cb2cca5b9c8083ae25021e82ae00d6f8715d34f60d39182d101395e3d08a001828bf42ba504a86661f7fe83ce1bc5e63694bce0a730a258ebd2122c9e06691d62b102de9262b4cb9fe6348b8b6ec9ad6a5728cd7305b5078eb06a3f961d7c77598c78d9f4e078982a165e495f1504bf0542dae3128962099e55a1b62e964e318441dd1ffac79eff154fcf5c929e3a200f03a0637e58d8f047098f64e254da5afa5efe02f92f211a83f9b33240fe96b213ba95f60db4e156791bf04b41fe63de5f1fce326926404ad893a1e9364fbe364bd4af52c57af8d21759adeec8171168efd005e1ff4d3c009a38b6e38e603f62bb00b5af7bfabe5ea39605bd5ebf90845685b0580b61da689a5b322e04ec7e5529401aeb4bb0f8718267bf79afad9eeeba4d96068efc6bc2f7a8a1760d2c873f2958c015da90473ddbcfc0f25a7cac5c450ec29b31c600a14bbee26786a4ffbb95aa0432ad723814b754e011040279455412c58082fc26d2b542e13a4ccc4422b9d148445355059ca9933f4f96553a3c5a9dca66f50ad6babc5d81f8c9766da67208284abab49c98d57101c9595f01c7e5b0ca17e9f9df580cc3d8f49e0ba163dae7781dc1f79b0499fa1998cf6c258739797d9ba1bf49ac45d0cf79b6d4e70f5356b19013aae370b7d8706ff1a9e428b7de911b7caa622cf77d9e4bc0acda79a86b2136feb97ed8e661042eb7da4ef8d37a29fb1b9bc04eb915196459184ac7452197ce9647b003c024689f06f8e7fa51084e2f9b9c35d4e60309da9b5ec4d0e3a276035dbfbb8791043145d042f1f7ec529de6df8ed7c3fabd485d86d503f8701d33dbdecb01e46285078581d5d1227fd91da7cf4957bb33bf7663233c8eed4a45fcb3dd02691572f91e00f3017c9383d3eb03d87ac39a3a62aa02c38118c364dbfad5f74562d6a3c05003d3fe51805160eb3f379459001a12ef6a6d7369ea3883512122351a6f8c67f77dc3bf837b7cd4c5ec85dc28b1882afbeff82e32706e51f499a11223e2989e146f3454f262bbb78e37bb5d49ea8944acdcb44a32820995b131ef477e328af6c2794afd279ec281e45d5b8433e5caab676e4360aa0803feb13902769b70bae3a8593a6c11337f41002b8a5966c2ef6bc66df43e672672e04151a71b82a0a4080a490eba80a88618cefb0cde4104eb1bb380c1b14a239de27d8f31d2539b7d3bcca3328b5967a4be7bb4d40768f395f9ad13e21b21ef46ccb1510753bc1711df5e1d4cb8225f155259abc7ed116f6e49cf224b55e03d80f430cdb618de2b935ea40118e02d3de93304a2a97807902a6aeada2ec3167661aafb776d8117a6b4bed72f74e9d4fb732c5bbc451dbbd06cf3b8bb4264e3a564c52ac30087815da1fde2f34a4e5dbcfd4f34a68b213ee2b87430e4827a10609f94890bc56c43edd82f48b8b70dbb67bf7546dd87a73380f94861013320f6a4a6281a4abd66e85115b68329efc43c569488d585603a339b5e07477ae47782da196bc5fe13df8a811734b598e4231022b7ac4074b6843fa763644799758ee71b75f91ea824d5d9cc6db19e6ff4e250bc377670af7753deb7d82bb052e691720af6c33f475bfadb4badf6ca2a083f0da000778af756334719c67339faaa7c2a11ba7bb5e83698138bdcac38af4506a285ce7b598ba741c1b904e1240bf5fa7581eec6ab8384b7043c6309b34c8b2a7ed1290641b7bcbb5b7cd761112d6615f75101fc634daca4637bc370039319ed4e4ad135ae465d638475ae9bd5b1581e1b2748f16c5f492c17c89fe6184c63df1a785f9a2537644f9744a6094091b9a6256bb27072e16085005f6a46bde08a3a4fc1044965721cd8db515e7fbb3183b9d8087838db472c136d31d4885499b2dacd16187dacd115d3401d523837afec9fca4f181d817a521f7c75e4744b7f0f1a2d71c8ac450690f029dc766d0ae62540446c3d5f8a6d3befc866af7d8b44e1f7ae6dcc81d9e9e6733e0b7b8fbc0acf9e0b993b27d4240c960c8dc415dd54899f970158409d62e52e69b3bcb29c99f2883921a959235a2c9c1539c6c18b8df6dab90f89346ebe35e2a0f46ef72339a7a43eb505c0b4d8a1102d2929d0d68b959766230bf4cd70225cfb864cbf89ecb214f0cd3c0a699873383ef17fe684b98ec9bd824d88695afd5ed75089897a8d46623d62a293028bb0f7894c87feb14fc60c31d14bb78bc4654f1323a11a5f74293557d027ed05968d60e6f28eacf662b14217a3dd51be495d77eb22f4d068f60f02bd27b433ccfc79bd22fb8004e61c52d38207f70242ebcb2361ff60e2663a8f97ffe15ef78827167fb544f00f5b1515e030d37eb44a76f76f8dfbababa11ec694b85604081548d612bb0896684815da24ed2622f2b295a40fc572d826ab10c7d1ed9aad32f5eb9140ebae560618ac474c2e6a2e42b3d07a5828009077ea98e0fe6ba23508f241a55ad4e42bf38e0231c37092203585827cdb1c5581295fa04cf8fce4fb3ff0f500f94d10faa33f22297af5e16f8c6939457fc54be37fa2b802d267dc663dc79cb9dc6a913d7d007fee414bace71eb0eeac4b0adde0dc036f50d60beb5b38808948aef1d40f73ba3f37f1e0a0a5928b9ccaaab4dd2607c4a40847b42e0549c9679980958148d25de999a55d9602cfec44f1e68faeb652e757fbffa7feac898f6add76af757dfd33ec2c064914efa00b2083e6fdf5a313cc5b75e6fb1f2fbd25a60be86de8d271c74905fe072ca4d62d96335ec750eb1b34438a9672047e803d21fa9242017aee6af801a17a2623c48f97465a26839b5d6d44538582d640e4f6c24b615cb9f306fda9a02628507615c9c90c2c4e85a6efd565722a62f923bc23ee3fa7babc3cb4db8963ca1d166411fc4e1a38783e90eb6ad34145ed8d0f1c1ff53c80b0394dd7c22e061c3e1cea1dc60ef87c44cf4c54f421c6dadcd27042f37a4a294476f13ef91f1588d330dcc82fbbe6e89bd9a4034a4a4931b921acd2a06726317b863fd0779ad77e911b76148382746516b105e850b074a51cb98d9810885f22913b1667ea81df488a3911f1735927373b0c2f754c1e34f1f9d19bc02e8d58afb1853c2042ea662cf151cd3125e670511cc7a221600e33f9fd39fff786ae15e6a14adec15fc0db14e57ca38cf8e10f7e25326c1436748778edb44bd2a226b141fb96606a62272e3602c6ee4acdc6301e5129552b7afdf8fe31585dae48f20042437826a525a679af889a85a3b328e9c8674fee2bd0239344a6dea8e23dae5932dcc8655d51901e21894b0c380a37d6d6543b25525b5156556119e4e9b460f3f0722d095b0c5abb070658fbc8c66682bd5dfd0855061f5db4c9362922bb588bbfb07d3bd5d8ecaf2906264d71dd3c4f2b193592628c22b26ba707e87904209440d00036e2c0eebe9534f81dab95710fe4d6210535836b233c7494ab8da1158264d09452d1612e306b08a65fa18a2a3ba9d1be437720cea5da3f4afc596300240ab43b80c6a9fc9964682bb50fb8061d8b9d754eb1b2490a531df93a4ba8bc0309ba8173943e2dec68ff0f881fdb1d9d9f5befb8a0118662a448d9801a508e235e5ed6c69ad019e991a7743304181ad88382fd50acdaa4c7d273185087cba6a012569b0a21185807857bae43a0d63c402f08b3c644ba7f6ba0da783fd635d25b6cf5de45d72e881c1f5670ffdc36de17bc7c84da0aadb2c702f01ab755568f55f0d052536bed429470f22866380dfd27613385eaafe084b9e496175f5cfe89d2927c2c3da4a4643a566c8a691f0b963490437b6f14f17ac435ad75dca2714b605915a8291e6a80402ab60198f887024fa5e984e4ba6f124e34111d956c9520dbefaf6c0a4a656a2dda778b01395b8a692022132a108105d56b53032a58a9bbc5ad780b0bf7c1cc2927763ae3ac40d930a43b914341b02280bae272423bd9b562e3b394e6d45db01e7f36c7963e96fe4d71321286d2a63032e16be4be616e9a34c6a6a0f5a7c5aa741190c835d6d5ce4700f6871de7fc93e19db20a13f31791cb01bf83467fbd98e60bf50d5016d227857ea7daddbc3c83c18ff8f7def9776b4e0debcc522f0b20dffd654762f92e09feba8948a464edeb21c113eab1eeb6d6b553989ec22a46e418e5c36539e9ca66d3dd4c57c868a152a830e87072b721576021185f44548641699d002b3b5596e5eeee8e9a9ba03d0ccfdf17312495d240e5ee95dffa41cd36c0b77f0000600cf9559cafea224401f69b9f9df45073a262dd6e43da82b393a8436be9ca15281c1794c38ab7abf4e94402e1600dfeee16f0196c0c18e86ce99ca8a7bb4e9d75d789cb459ca92956ca9e667f48cd62d33bf74b3579afbd8a4bb1a0f9b13fe08940551a070d8e91d5c1e80b32ac93188aa8c03c27961ffb673ba0d94a0447e98d1304a824d3512dde8b9819d9162f3d327b2ec20713dda476a8f434c6604d5d02c4696da77628e88b9dc0bef04648bb5c527b381c75b0640b584bce25fc18d1ae33f45c167c602046ff17f78a28488cd2f352a59ef0d48476ba4ec4f38854422c65945d785063122700063b0ae554bcd04521f496e0f76df58125c0228b927ea1be7a1f75e6a757ad4ff9e1390526c0e569893b217b40b672db43095e71a3a1c603b290ea2debc7dc655444354111d4819bb87efeff11958b007b1a50eb3fef47e0822c005a2d07b7e91f2e35f0ec73bf67e14feae0d8761b955fd1e96b6b1c75adee9dfbbc964c973c10d6261d149df18abf004da551f7597ae52f48b52ba5fa41bdee6a4350c0d5293b7552e6c5104f610cda5bca391bfd024ab451e9509c62408410e1803e2433b883472e676f12cbbab0cb3f99361ea38120cc6023ae7acd1b63c1d05243dc2820cd5798ad320c1fac96dd4b71ccb0bcb082484097a56f658a882ebabafc22063e3e0c8121a39eef488c9de067b30c0ea3ea00ea36db12396f685742d79baab06241f9f1bc576c992a5660bfe03734ac71c5c2a527e3e24a9658acec020ca3aabca755d669caf41d4f51d3161138d1e572153fd5a6e8b4c92989104915108255ea849f16178f1900cb7f11084c59c3ade325ea5915befc5bb45deb7252c6b30f99a4f1b96dc16e93a424dd38a3781b351c4c84fc0b1bbfc96da10af2897ec3a578bbebbdf9b5ad48ab7d7a3822ba88d9b5d15dab8b40e9160f8c9ca95e7893309fc9c3541fb2942d73b1cdb839dd52dbb55a1019305d6d5796c95239219d3693a2f9f308b456fd34fbcdf91283f4ae6beb45068b2a142d185da46635ef9174e13a2988213b7ec94a08c77948c1816a10b26acbf25da31bd282fc280d5b1e641c8f71172facaeeb535b6303eab2983fd893156b5bf31ce6a81e469a5d81b3dbaa8e1d515f2cfad3f167ac2f9c495918799625f3c980970d5c00518b6e235f407b12889a9eee597cb63365c534649dde4c4e834c60acd05aff8412f6ddbea0e7facb2b814aa73731027b6ade017b6f9b5e1e5a8b25fba095ab17d9a64a4ad33ff78fe8d80e5361af22856cb6234915bb37501cff9c0725b5402ef6aeaf31ce20113876e51de6ee982e87ecf7a54d49f446a5be8c4aaadc04dad06c584f364edcb41ce6cf07d024391f465e535c01b00d2383a9dfcbf65a5474b19327d1380679dea10ebc4d2184982d642c0ebe2d86591ab552b210ebd428fbe1a4a868cc96f062831edaecde815d4ed63c87dd01a80bb2e3b8a587ff50c990669d55b57442c6bf421a9cd00bb17316caffe3b86454e0875ad2e6b511b5d4c872dda5c09cbbe5b99e3bc95c11449ebeab9b8e7098a85ba4ceaa1f9abefd09cefabdc6eb4f4c027d7f862d2a7d6c9e5c1378439db9a98e1ccecd3745a487ce741712b49ebab04435a8d4d2935f4d859e7acd8e6a18943a3c53b15a133def7867c32fc2bea4ef39830190f9478ddc2dec487949ef844be519fedce0293db6382e7b839855ce9ef81e653f8d06959972a60a6165fe4bdef39a9e48b904301c512644ee0238d849630935c6253550aeb86e1975b823a458f99db2058ce399f280cdb6bc24a1d3ae09453339ae9638dba673b47b99e35f942499647ff9dfc57c3a791f0dedf71933ec71335a0e41f68f8f6bb4f5fc3aa1739ed51c2857a312b29e84c6e6c99b3b0b97c357d5278463f8814a41c83b8fe124ca0fa6a6a313798a77817f8da327ca0b0d14953c249c2e7ef5b98e51c14601ddaa82f992c09452f3a25c53d4cd707b3a10bed6e304ec103ac8bd4d4d8785a6a060a6e47b9eae8e46a426a2321c420d69e1ea3445fa49a8e13d45e8a22a1644f624b9f4b2af51b6569987aace67da8b0ef45f28582b181c055924b2bc99695ac8a2d664b8d312e9ff0b8e48530c4e31e5e254e6fcb85a937f5ecf1f9b3aa197e18b113edbcf24d51523be482b54b42b864ce355cb41f982139052df0382672d0cbc9d8f398b81b4e344344036beeca2236a086a8b8470b5203505dd4b366ae0b0c854d3d287d228aa49d57e1518b063ba108b0812c8571a38d8460bddf399b6506f2f671711c750e86f6734c7e0a6fcf9ac9a5e390d246e83b170fb37ceb482cac22165fb9844c1263ca3f0c74be6b5a321b242b7bf52204597fb7494a19895db02f4256da7b08d2f9e7a61a4b4da247ec40084689f4984afa5975754e2d75a6b5a1db0f5c3f2cf0d6f640e61e38ed550a2a27fbb17c518cd1e913d58f0823097dcf95ffd9e87232513198dd663883ba5c478dee5efe4cf14aaa89a772fd27784a2311a227dde4d19ed8241354f4595337f0025b7ea6ac4085776459ede8ef1004e445a0c50ee3c2c9cd270a02441e57ef001652cbbda9f489862b1963a09d2bb87f52afdcd00dc2573fe36c35da5f20e7cf262618e4c864e840c47369766b4c5363d1eff6cf4821ea5ef8fdfaa24cfff086e58aa3460513040de604b45c458765c13f7417e3a45a5fbbbe68d4073cae6fcbddcca7511442ad30a37bdf349b248fdf8c9d1b5103381aee5635488c02276d85a51da9402057141e5dff638c0bc8592f7e389fa21f5cf33c7830c2f0702b54c972e04325a03de45bd245c2c89b89fe8a4953d70624a635f9b1dca26d9457b59c1ce878dfbe1fd064b6465926c0e2def4d549eeda664f547bc57594131c539e0ee84fb143338d75c1caf59965273fea20414dcfd82983a5032adb88e84b1c830212fa964b62344e2688362965a7a376cf0c2763f380567a4b64faa955d107124da63fc12b38b6b70642a4e0d0e6111791c58d9215ae68c79b44f1366261ae373321135e1ba649434c40bf33d1c164cdc9a0a590520e417d7266b1147cd8c188eadf7f943d66e7ff19dde3d19d08ef2f3d1ccd3badacee1d49a17164b7051526fb04795d3ffdbd8277554c4a55aec98c22fc351d5145b6f3fdbf98970a7408b251362cadae226410d05179285f0e9e05ddd955c382697cd936177d11398b6b67a1ee273c12ab2eb1fa1f2aa2ea6340ba73c5621fb2618a41339e0e3f144015c269ed783b50ca318e160ab23c116572051314bd21407e9f4fa7c781ad99f2007b323049aa8ffb6b0c9429398d70a155a6c25c5719fb0e4e74482c56ea348c80c2aaf7c7e9d0b3302e201108500254163b1202f9e2e6592a7000d3b526afce72b2e3a264dec8ad5fb89d458f861d5def178d34e6185059a716c3f694ae296eea38632add4ddd3b42cccffc63651bf5d5f95c9d382493697b226fa22ce30fb61d5bf9af04d3aab9bc7157de6e2258d5ba03eeff22cf90eeb4c72c15f2833c7a8f691695dbb404d04ca4804543c89666547ad4fe49c5790e0123c8f1c6e05e939726a34573e3fc7e9843aaec0dc2b452449c57228c16b7959102ea13c7802080b0fbec78c31fa473858f0fd704d6211a3fc318cb2db6e23f9976f9c82f238e4000c3f02ab5119e6fa92fcf5319ec6a9b4a8c744c63fc8d51304f5ce6b252e07fc5370ae050438ff609ab60b02d322c1e9b06fad808c898376aebe189d9cd24293f1fd8390f9399363f6ace247a8de30bc2c857eb1aa9a75b0d98edc50372745a971376db157d087c843ee92c5afbd5f726611cc97b3d4e882c4cdca9c5f9fdb52ea617c39fa8c1bbc08cff508f71bde314a237312055f6898ea8d2768902bebf3997e95622de7f61cd92e04bbd9fc629aca7e8e314a13de51ae8413224e3812b6f05f0cbcc99d9526ddb60f96f3dde0c0618927b10e7447719fd7dd0d7ad7d5514889f53c228b0d2edd278cd1108bf090128d21915e4548d53f04958b96264a0c5ccc040e0444b10c4f108855a30e50340cd771fc7cc7755c7c6d0f56c18ad8ddea910f01640e5614883ef73df4eb4ba335f4405541bf3ad789cc79884a61708212dabd244a25e0f9fb266af66fd964efdd646fb965925206ac0cc70c830c9f14d8c278f493026b309e7f52e00ae3d54f0aec309ef64981298c673f29f084f1368ed349a2bd88258cc51c2d05963023cb51dafb8f348e6af958e32f6250b5613005045f13e01b050ea1c061097048021c8e007744803b3f70c707eeac3018020c820083355ef2ff0006575ef2f700965e22c0770073004b2f09e03780a5976afc13587a89c6f7c04e60e9a597d700965e327d063006f005b005b0f4d2f815c014c0d24b427c137802587a89f44cc8780960e9a5fc3c2280a597fe97c0d24b315e092cbd04c4278191c0d24ba387008c77003e024b2f89be0178073602ebc045e018cc00bc000c8335ce81bf996bf87305e07d1380f723006ff0a5fd0f803738d3fe38f0eeacb4ff0dbc3b35da9f086c03a3f00e6b76f8d2fe06c03b9c69ff02e02d2200de4e3300bcbd2500bcbda606deaeda3e1300bc7df582378d99f0a6b21978d3d91078d39b12ded435e24d5f00c09bd20881376d058137ad21e14d5532f0a633196fbac278cfd8e33d657376e382f774cd170d0cbc678b05ef59a30ae13d67e66a056f19bb784b19086f39bb912ebdbf99f4e03deafdcd6aec6f160547ef9115c554c133e860a3edcff44ea27d922d735ea2d26f04f0593edc3db2f4136d7f647935be0c5281887068f47cc9394a7caae78bfc6b386a7b0eeb058c991c96a346968837ace1adc64bf347d6c644cff7ad899e9fe7e6b6c306e0cd98d14f94a1259bbd28dadc22961587358a79c99fbb57b439200882a098f208f0d12377935cda3d37dcd02be203858e1e931f987cf9bc441951d579098aa9cfcb4b30fea318c7dd2b127da398f69a2a02c67671c37f271446cb9f9797dc9472d475cd98f935c9c49854d694922ffe134c02c9484347e7bc0495a03033665ef2e75cdf9a319bd1d1f7b766faf3f26fd1717bcc8976d8dc23cb5fdffa25f4e4bdff3ba1a7efb9f9fb7abf3fadb9bff57aa2fd7b28dafda368ffb0a4687f0f8f48e8e8dfe189b95189f6e75870b8f6a7de624aa6a9bb8c24009829074080cf009fa4a70d5c8203b3e591e5257f9b07961253a5f79dd8eb94003084103382209964bcd0a821800154cd3a9da3e4389d1776460f8513da070d98f6afd8b30fa9559c8604a08a398453c5a49ecff4614ad905146c38794344c7aa454b486ac4f35870e77f7216062f8cb1b1a9ad9606c65816eb0677fb8c9ef23730e6f5d292b2282b166bcd66df0dae94937a670fd1f4a7965ee83737f245bed502b5c28aedce97a22e8c40446b6fbf8507fd2d491666301474c3ad50ae7d39677306865c6b8e42034e32b12b2afb219968fb9c562513edd9877d6d4e1a3d655b587047e82d964c40242417fa2199d00abbd83a16eecd73cac0f09270b587f19fbfcff2559f5c7ebe3bb953ef99073dfff33012595676d5dd76b5b2ac6c47a3b7d55a6dd6c9156f6a85903f68f13d2f65ad75a62ba8fe0de7ba2f5b236ad1e8ca92a5fabe12cde8aad295abef842cd50fd56a57b756afaeeabf2cd5f77e03633a3fc11851f415c3781187efd99b675fdbce567ad6e8f9d239a8088f805aa1c351b671c3f7260c3c5d381ca5417cbb729436f3b006e2f784d9887e4fd64cc1f82d61d2a65304abe2f95d5369d0b28a61e689421fc2f743bc61e09ada1236532d784f16101e1cc5e4b45fd121f58b737139a43d28149a53cb1e088f70129a5b6aee3aff11d6a2c4462b1f72f79750f8ef219a7b77f7af98cbbb0a1b6db9d073a1d7f05ec9a1d09ee1a7a20252113d205145d3a64b73cdcc17e7c4e596fa6ace9cea7c62d36aa9a675d244cf0f31d1f3576ca636858eb9a6beaaecbb8aa6ecaface02a43c7a9f2535a69557255d5145745ba6e355561e66f9ccb498a9eb4ac6933b7299ba2e36c5a973e63a3cd66409e95cf2221cb859eaf444fbb44cf19c7875bdfba9c70aeb9e2de57736616993373c56d3e5fda6cba6c8a9e4e61cbca801e18b12c6e1617a5e5146652dab2383fdc9526b399e3e44cca621266236fa44bbefec7b1860dd1fb105e790f2311fa158e0b59316f277455c149b49826fbb4d8f7a1cf41b528f414ca5368dae46cb5a08eefb30fed3df41a4caf7c45a2d6cd091dd25e82a1398596a626aaa4e86925ef1972bbb2b2b2f22b2b9f834e97a3ecca4bd343d9da22aa766c573ebfcc89af22522a8aa11f54bcf7acfd2b519cb75796ea6f98c3529656f21ee27934c4bdaf78d953f90f6f15199f837a32b00c2c6154b0cb256691852e76208324aaa7a5193d697945825a5e394288ae4ab851a442d0e319c1c82819df0264841a60d619df43aaced4d41188bcde9a4bc641e838ab3542862170312cce759d96757032dabea77630b3812c0631cb02d80a6c60708385b69f85b6bfe5cb8a7fc158036d5f0775876581f642218c8415b55a1ff6a5be2fc111502bb497b7903fe81cf493a7eaf31289cf5b197ab2798aaaf2cf5f287450f0c1f734ad6a1988a63f3a3effc9997ecde2ba6856538916d332730ab5c2091d41fb74767ebee8c993f7f4bc7dcf83e76bbaca70a7f6fc9e2e2bf49c99b9332e2f722e6c204f59ccd31179d27ede40ce605617c871fec402060c1ff5b99f17a43f2cbf29e8e5e83f2f258eb0a634ad2d09fdccb345c7a9d51417eac0c0515416bc6b0c2a165507516c3d984188628af07eed849e4640add0b5566a05cc162d47a87cfdcae5a9923f3ad2712e6122a74da58116a3a728f4f45d2784586892e1dae73ea46b0866be479e6a0a0d4cd8411c72b0032d60c10e30f53989925f2c79a2853c00410b5e88c1d4bf12c77ca541d757913768e81ad275be13d6565bdd661fa1af9bfbd0f76fb1bf8691b0efa1b7d8477da95f82f5cbdb09cd7136945bac9d5999e9868083c4e838b528749c3359dc504b2f7ee0025db3b89f965e1cc143ad4666e838658c784c39090f93e72dfe61f253fd6d592d9ac9cdf75676d52af7dd8f688f2a0a74e8a596e08e1010aa575e7bc7506c3a14dabc70432f3512a129a8c60163b41a7a0dd411aa02b79e9082496d3102fbf5abd86204f65b76f8575b821f81ae2d3f43f94d30448fa0d32d5f3b4b90d0715a1a8e0e775b24dd1dee9e3392f63c3591bf36fb18a8ba92f70d650e4dcd9f537c77dc767092ed3dce92e6739c7b69959f626d0a2dcdf7606d46c7af6f53df4a67c5b3025a5979494f3f4cdad3663bb8de4fc9412b9e39e8763e9bedca5fcfb429241d1a85425f6928f41c1813ca36aee9ebe44d531f959e7925cf603c14f46c5752aecdb916d11f8c95bc5fafbc578bd49abf12b1b816b17199a94558f434ab44cdd967eb7f6f7f93b4adabefb7c8c8f7f57b4f828e7dd4dca2b5687987a463688aa9fd7bc7dfd7982f57565db9e68f72e77e322877769821f7665eeaea70b91f2c59592335b2247508468b962c49edd5b7dacc51f9b5accddee62dca79becc52963e18efe1fdc1f894af386ef49a83c375c9fbd3bb7676b86ee69422f4e4f9f92a5f45b382df7b15f49fa7a991ae2f8505ff6ed11514e377e75fd68faead4963fef6740575b59934e6d72e80f8ce7fefc13b88aeef7530fdf09c75a6f8a8eff92925fcf9327c9cb7f5811ce7c7c05608739cef61bb85b44b6c4d172ea9fbf3676bf4f3a78d8bcfd1db3c5bf5ed8a6aba48fd959f799037a4cd33effa5a1e80c0528e41b4e7bd3c67e8387f056f2ab4e73f784ffd79cfe7f08f8b5d797adbd556d1dbae360b680a69ceea465b8e008d80a43d791601e5cf9dd95427bbb20b2d5a4ea62bb7dcfa1d8cea8131305ab026a3e3b42b79c3ca1b545b9645a2a7a5d9af39bf797dee3918abb0ace42934cdf22cdcd41b6884d42b3a421fca5268ba26a12ef2a1f29c5d79a9433ea386c7243abe268ad91a29c39d2fed6aac1ffaad695a08cf191db53c43efef85b065d9953542c7b9a2277f1b0263dc7fda141d375753b30642c0352c2e80f43c1cdeafe78ce4e6cce7e7cb95cf87f2be9f099aa009fad97e2e0eb7feca4bd03f34c553749c1fca73667f25b7d8d007a0e39c2e516479f52a52f9aaf253e5579cfe7832104db7d49730d6082d4d95dc523fdb151de78b785fcdcdae5d7543a85fb85b8be9f917e76040cc650373d54e9eae8a86abcde4d7795d04c189e72dee76454f46a2dc38a128e945cb22a127d90510a0e839b34baede96656b66174098a2b7b59981deb6c99defb6cea6d013ad839e77c66656a5cd5a3cb66849028ae641c7f91ebb77da70ae705b9a70c2615e0e82127869ce99d8b469b51ea673c3055da22ae690c9cd1ac4400d6a48431a603034a0e10c67e842176400ca810e6c6ca0d0c2021560ac17681002551231c4f4904516aa111568e04455871f28214216c880859625446cb0e1c00c4aac40060c4b98834d199a6086910c9a20e1e2092b50b2037f527f52936854abfee8e83014089ebc9132bdb8a158a8a9cf55bf5948f9a7291daeb6c9c2cba6c98afbca50868fb39d4d0b6f8e36463e14d1f44d07204d3e3899770a290a7a8ff494ee3688c1dda39e77b05e6bad558b81c872370ac74e6ddb58203261b3b58b226da8ffa91566aad5bb5a76514409760c39798f4a28922b84e338eef319695210852704db408e33a4ccd071061d7401f29e211bad30472a481c232633f2e884896374334e61ec42de60e1a28363d464d2009f2344de231482c87b5c22236fd198849c5966586c308a8d984c1c5fe466d464e2f8184ce868d444fb7ba28f880bbe88e545600c8bbbfb74f7e96ead75798b1ff4b47c8f658a293b7309915ef4b4bdef5c7effd85c1d26bd48ae24d77baa3b4cb1083697b6f9c7e6d2a32739a9f2049e587efe274f9d9fbfb9e48d4ecf0f85ac237ab80fce231d20800063800063427f84e56f0c8a44ce49dddd6bad9aa669331321a5482c1869382c928a44843443620149453929a5b7cd6a6323eb5b4cb8d6bee8385f8bb9462d1ded8b9eacffe7604afb28e67942cc1782c3814b488a841b3e075c42c2882dcf5bd2aa11957c2d3a7a90397ff84c54222e119780600d1d97d0d1452ee8e8a24843479f1da883ea1c746291255f4419d98d34241727bbf637c9f57948eee6b0e8c441ad70926b8998aeeb1ce64f5e238de779de9e73ce69e79c76cece9b513cd814ee1ec5f6483304228cad3dd6b84d139b7b7167576359c58a0042b3ace848cd70ed9f58482e677f4432d2d81f59236b4442c791869ee6f7f6475407e34fa3d3d3e528edc7206f741976654ea2f9bc3c5c8dea96ee9b687f26b4e4bf3faaed7f5328cab9ef7ee84b77d8c601e8e824d71cbff0ac2ed8ccbd9c38ec6fd1fd3d3a618cc22885d0eff10ada7f8f5c189ddcfc1eb1303241d248821c8d90449684205f7e30477f30ef91dee397c7263c417b4682f61f91d0933fa1a3cfc6251b7e7914aee6fa8b1b6b462ec62adcdfa3179ddfe316b4ff9e31a3a17ad0fe72cf98a2472f681fb5a0fd9505ed2313ed2f250e19b049638f4f9811932f5166b82194f7d84514e6d804498346bef86f7854c2a4c1e53d3e41d2f01f9130762fab85f69f1e1eee17932ffe377aba402a90ca5f1c77afbffcc98a7653caa41283dedfccf5070d72581c180e2bfc9175a3c3df234b1465e8d8b1df0463ac6bfb293afabbfb8b241a2ff98b44e2111cdf6ff107dab78844bba824cc5b6c691797745ce442fb8fa2641747c2a1f966a08a9e4022da7fbafc24bbc0415244adda237d241218f37f24c65bbc4931fec3100000000018e37df7a3aac6118cf1ba6e8e34e00c04bfff66df1490065c02ca8045be19c8029568ffbe4572b5e889e4a2a7f96f4a39cc4bddcddd872055f72048d58d9de7711cf7dd73b87b09769e1dc7118cc9330cc3300c43246108809748eedb2b82aad29e7ddc77796f888f88fb3f44fe21c0986cffad8bcb5f19cee22ccfa269268d7e5d8c206c10f6ebfefb4ea753bbd7baaef3feebbed0833f447b60e88bf17d8cef3381315f27c61763769ef77d20077e9cd7c93bdcf91dc7e3709c8fc3b19f7dce7e67a9fd9bff4741b0c498b2c9f43fe75dfeb30d43132dbd0003134d002dbd008313cda97c23183d3d0d1dfdb590a3bf8cd7a4e12fe3c9a4e12f0386655a466cd2d0424ad13433e8a0fd9fc4c82316b45b618efe325e13c748852a687f8d5dc89729c89726c8177f108f34b7e37ca313268df10892c67d4f823a3c2937ffe7c5127a6f0d57fbed3fafcf930f0c0a3db9c87831e52851c66f904a54618e23b51f0233adf63cb6d772902dec07d17ee6cdf1107f7b310f81997977cf79de17d7fbe7bef3df0fd11d1e6bbe0ef739dc7371e1b819600ce7e232a6bce4b1ca864b7a39c905833b35d52015c9351a8154a3eb257f0d8320087258a0ecceb799f5f29797e6873387317e84a360d9234b24a2fd435b4c65bcb7297a3ea87d218ef112e47039011266457b148c6951427ced99105fcb4c3cf1630dc34d42666b51a2c78bcf448f17b3902d78682fbe90ed7b6426c47f220bd15e0cc3fda4fc66a92778c99f454bf0e9e82db8dc733ed9b5749d06733da1a83a23bd788d3436da5f7be078318620e83d3ad1ded9c939f917da5f6e8e12ed0d9b1b6672003bef4d22ee88c47a5dd775efe1fda3cb239251091d471645e2d5e1cef7e870c3e7c494a3260c117a92505a3366f2869437a4d420d537a3a7181fc2e1d5514c6d391fe3b518cf3199c0981f2630a6b3de5bcf04ea9823dde1743ef0bdf03d30260439ef819cffc0981f3ed32acdd9a7ad6b3f875b9f1171c307c19898cec7bdb5d65aceda202b6ddf86ff853e04ff5296953f0b9672b499650552396ac65d4c75884724a1560d5844d5e08dbe78ea2d057ae472f41e047754cdbd473924271dd20bcc24570f2e0789bd4278b1d4e04813c329c2dd2cabd17a60e7939ad3f21f5be312d6684393a4c7833889f81e076a1623f4047e20f875c2af83e4daf7428a840b8e34fa088f827b1742e54b187e78ca9790fb0e47ca9730b3ace8e82c4666c85a5aec21750f3c41aa0ecbcab7103da2f2c5fb0e18c3f5004350090e8c983f6a84bb5956774adab1b40a3d7aef4130e6df0b633ccbeaf31ea247ef1f0373c098d1b3ac4635da7f091ddded77afc5ecc7e8f8cda68c64f464ed7fbf398ef3c17df7cde8c865e7b87bb9bc47323a8e62a3284e8c62a32823d9105e97f76b9bc1940df6ad65b81acc5120d5b764c95f24a3bfe51cb749349bec8833a2aaf3491004df73036739163d852fb5981267447afac422e28a834599108b4444953823161157626a64b1fc07c6b08037248e2d1f693c954f8261de54cc74f89e1b3c8fb35ccd68434f9cf791454f54533db2e8495e7afac625f4742f1e918c4ae8e83fb6e8b8848e3574f49fb2bb41aa0efc0bc684f94755e9ce7f339a00ede770412a2ff92734a29d0048d8e88b2f02e3f3701434a5815cdd79cde5a8918b9660f43482d1f10b791a7d2147ead2fe5b8b159938bec82da2fd39ab89e3579386bf3fc7c8c4e115993848aed5c4c161bd1131c531728b684efe9511ed1c8ee779de7374f438d9b3d67e88a710e9f05fc018eb79debf5c0de21108ae89e35913877d926be27824e30f3848e829644d1c177c0fc9c4e1bdbf8c2713c7cd32a04c1ab089c3cb32629cfc4840284fbc2ce54becc350188f8c401893e091868e6313c61aedcf8d4bc696f69701657482e642fb9804ed9b7cf1f7e470b798fa78214f32a27c6e64cc414c915c3d98e20e240e1952268ded82c5c42163a603310b7983e5f747ac81f8028943c69449c3e90994a1278e9812539e9611859e48293ace419e482c90a3cb903271905493468c7791a2fd65cca6905294c402971fe54dfdf314926a9288c450b98ca04c1c2422326213070984a29dbae84da2210d41d2f0ef30490b39fa3f261941bef8c79882cdc7b69668ff1126112175a167484dd0fe4cb43f4822a29df404edefcde4196e902752113a23266f784fca8137c9f3c4fd1ea3a0fdc727481c242393867fe9b7cbd8047923e40479830509130789a5643c82bcd179ff7108120709c9266f7c7f0a7f8384f8207e7b9a46dec8ef305ec652d7d5ed3e8aa937892607cd78eaed3d998df3a422a3f727e540085ac6938cb8bc3f8915e3fd4948fefd65c9488c1782a53d081292f978836a00ca0204041011445d989a8506f28615b9e48b3f87412c18f403f9e21fc2a023f2c53fc4201ec8d1bf83413a902ffe178356f2c5ffc3a019f9e2cfc12022a022dadf5f1c87315ddf0c08ed4cb8de935c628a9e7014b5a34eb89be422b9e8c9ebde9fe42405e33740e80e88e9a22378472420153d42e3eb343d72f7c8a2d1fe236bcbda9307b8d20b2414d1d28b23d0e821b4f4e208357a3c224723b868bc604d61d584992368570d413b47db3c434cd1a0d1fd14ff42f6edfe04da6b78f4e270378725a638358efac0fb7358f2864dc1ef10054ff2607ebffe3dfeaef1b1719413ef2fa64495a338f0fee28ca33af0ee81f7176d44984a4a85a5a2e24979588e32c1fb7b6c3c3047a9e0fd3f294751f1fe1f96a38208c953e43dee1a4ffcb621c56f796381dfd2b5e52b8adf32b6a56ccb59097e4fd59e337baef6a4d9b3f580dfb34604bfe74d11bfa76bcf978fdf33b6a76ccfd9a6aa4d67365d6d4ab3696bd39a4d6f36756dfada34b6a96cd3d976d5f699edabed345b4c05c14e057615600a045313600a05a624c01336023c7fe0c9c233041804d803b803f87a693e079c9819c0f32b80e753003781e74f004f09e079c4fc06e01dd808ac03cff781a5cf29022cbdf48008e0257009b0f41206661458fa9c5260e9b3071e492e9fe2519037a751f02920b906408f5c0dc5fcc337036b1c55c4fb77588e12c15be0fd6fca5140de1f4c390a04ef0fb21c1582f7076d1cb5df1f8439cac7fb8332473de0fd3b2947fd78ff0e8da378bc7fc7c6512378ff0ecc512478ff30e5a812bc7fc8721414ef1fda382a8af70f5d8e7ae2fd4398a34c10f30af802bc74d4023e012f1d65c4837fc437e0c3978edaf10878e92808fc7de92807fc0192f8ce4b4721f1385e3a2a02cff2d2514bfc8d978e9ac0bbbc7414131278225e3aaa02ff2f1d458126dec64b4761e0657c7ee928275e880c3ceaa5a336f0a5978eeaf1a7978ef2c09b5e3aaa033fe30df0f4c815535ef24741dee109f214d913b1142fa63cd4dcef500abcc17833df8015087872f89cd7de83414780debe8a4a6e015fb3b805546901f3e73d9b0aedf39de72568c4d42bf641b9a3c5b5d9937dac3c987ddcf77cb0b6926baee011fe9e7770c7cd124606e23af4f63d79b3e42acaf629f800319445bcabf8bce73d0ffee0e9759fa7d3c2ffbc27573ae62da4d33e9e0f352b5a8958f444352d6fcbc2a295c8081de96b4e80dfe142761c8ce9bc98f79015dcd102f4397ce541f8f322be2b180402e5bdbd4ad6e18ece27fc8e47e5617494a86c130cd1a00fbff39f4f067de7f7b70afd41f03d2b335ae53f1ff16174b4105f057794dcaad2625651f9fdad5470c7fb95cf07e4f9cdf3a03fe879f0f3f97cdee3f91cf4fe07dce0877fd01ecf87b80383ebf95d552a5bfcef55e61f3a30b8fb0432bdb717c1bfbfddbc8774406c82983e814c6fdfe14dc54c6f2f5ad19335c299738ab903a4fdb718ffaad29ab55a4e52abe7116ba58a39845620fac006cf931f11b7be7cc997fa1e945bf306c2714adf3977bb99aea0bebd864d3293467d538a8eb49aae98346afde828a98602ed269549a54d35a69449655275e179f287bf76e050e8483da6a94f30890e924b7f824a50fa9ebf1c35619ca0b627b4441f4a2c8a6cfb6cab299f5255fae5285a5574a435a82aaf0ddf8cc321643d87f2bd57dfd33c223eb6af9aa51d962012dbdbd7bed6bc87486d5ffeaa567fe5cb5aad2b2b5f7ffb4bd70770c45b69cdb57aff813ab8ff5ed64a4ff56dad608c972b1d6dee645c67f33624c8e755fbdf1e82c866f176fdad0cd19ec5bb6a5b7fdbf21e4266fbea63fb70e5bfcf41bfbea42710b57625dc8648e9fa368740ea06526ddd9cb5d9c7f661ad478435b784afbdf75fd73d60c7cfd257ffcb5ead9af7813a425fb38ffa2bef85bcaeab36e4596f8f373aecfbf842cfb15ee77939d4dab66ddb56365c9a326978cf69e2e3ff60f03db8f339dc72a56eb35df6e8a7bdca738ea2af92372f6bfeb2af79bf79787bedc34ec6d26e5fdb40ea1e6f74983b5a5c4e78a3b5dfbeec71faf3ef80b8d2f1cb9a67bfd39ef3a559c90f1cf6171d37ab375b35f9b263a3a50cd0415878d2adac1b5739cee9e434ae6a9623b7ce7e72fb24c7e93cc9e9bc8ffb24e62cd1f2bb56e719f16cb4fc8f0b96960f823aa69650a6cc5ce532312830aa84898dab096d512594460a25425574458bcca4c8b870e2823db1e1a266ca4c23733569904cd5949929d984c2a84b59132d6f3ef2e948dd8696788b744c2d3bae23e73431f18c90da0b5b76cc97af63fe7cf975824b4cba04755fc26bad4b544dd3b425346badb54bd86ddbb66d5b6283a9ef85bef2150c4669288d4c5653335333c5d1dc89c15d8283a9ef71347da73949cd9e7578963f444b90b6ecd04334e58c1c3972e4c89123478e1c3972e4c89123473c3e1c3952df538324d5292908850705d91f3410ffa91d3c42a43d4b7ac3b089d71b86b7ebbccee3cc393ff4dfd7797faf83c1ff384e7fdfe44cce825e97f5cc1c56942b3b9ced58ce825ed7795dc779f60339576ad6eb3acee3b88ffbace51c44c4eb3acf5a0e12d08aa304a41a97789de582a60322528403a9be59874363bbef588b39341c5677934c891a592310a494278de472942863af8d177e2c4b74b50d37071636ce71f73aab099b8474a95439dc4a0e8b7e31b81ba4b22025f434bddff7e3d1b496689f202e40361ac484cb1f1dca4db43f48c7226e8773671c39e79ca32854cb9c8aa3eaa6f44e8a333328a37d24c5d416d062d651bf84969c0bedb26fc1404c7d2fe8bc29153e104e470184d3f7bb197a9038bcffbed063ee3b6cf5e57e3ec8bde7614d6359b957cde1303b4cc663520053ebb0eb103b4cbeccbf780a4e8359d2b182f8899eef7919f4f4318438c9f69ced39ecb0977c99ffc9d89f2c787b19f41e59a6194d7aa2fd7bc1dd9ce92d93b3a40383aa6adfa7b26f7fcec99993b37df47ab1394950e6b4d33e21c1da602de945475b437291c419ed826bdf654499ef8a6bfffb7ef40446c7cf4bbef873fe952e27e4ee7b0e65307bf76bc1f57e8b298fe300e1680eb74da1e3e4527484394a668b7f209cce2cefff79424f514031ffa0633c104ecb78ffcfebc61457775e88ff8c41e2e8bc6797972e41fc6396b7d86a192c6f3f064b8c182cdf5bd008a959b247a1e3a749c9617d8f3d8a1c339e82d39f3d26c7ef452ce3322980ef5950450a467ccf1f7b4c069e82d331b24391e347750cec50e4cbf79d2ff4f79e0649e37b4ffbacf6597b96ec312f7d2f7a76eb384cbe48ea1fd83da7c78c1e786481e073381c6debd1c323b9484e3820c945477f9293578bd57e7b269ec83db2c3bcf4fd96bfd732f8db6332f7fb0f0c43ce26858ef31302ef4f19b47f1033b0cb1d95f0febed92439a116d86eae1458e38873a4195920de4334387dce0fb2f1105f7b2d07d15ef41f02e361c8e170600cc7e138525a26c4eff13db2104d0ae9f1e2afb6558fdcc2637bf1b717f3c6f252cb96b5df8634a1e5edc5f9ba4f7a8c0e38e79c1ff86115afd3eee1ee9135b398d29e33678dd0e6e1bee08e3420d593bb412a571eeea41f1210f4017ee7bd17c1981f158cf1cc414247d9790ffc192ea3d06f2ffe1e5933a6985226197aba390cc36d7b4dd3389c7b5542ed61148cf12e788437a7437954b2c9401ce3ff072746e61071ad0db9900b6db4dd36bceb7537e7eb79934adae1720b47c4b54de8e8fe445c1bd65a8b55c0afb35dd7a97893fbacb5b6b3d676d67e3f7c16c3759df75d4a6696fc396e9c5e55612127f85df61adccef3d904636cf762aa03bf1755a2cc8c0acc624a5afcfa414468c9cb20150beed41a166568c9cb49342d7b72ceef3298922f9476be6b83471657733787056a4e185b1529622466a3a2a2525373bf0d86ea88e8d9753f3617a7a22337a367900de6a5f91b11b7d34237b26292cc4993f288dcf07d9c0b4b1d82327ceff3c5e69c5ee775ddc8b22f69c62535d4c3a3155c1ff33510094dcf69525d31698012943a76b7896664bfb3f675b098ae30a54c32269567bac29432c9985430c018cbc2624a99ae1081313634c5e54da9d09b64260ea94326f0594c35a694e98a9a02c2315d614a99aea829f05df0e652f4b382869a9ad053f74a4c2dce64e2c26463ba713961f96d7aa2dd0433416179a95d7e9ba274bf4d31a54c57ac9854dac353bab7293d432cb3a4a38747df619697a0cb87ffa5ae0ffb9ade232ba4638b9ec021521a44127ef8fe63c90f1c284bb4bfd786bb4d3317dbe760ef3dbcc9b66d36f3e8d761fb36833b5c77deeb9ee3bc34fb8648e9ee3dcff33aefcb1bdb2f795f9a32847d1730c6e6700fdbff7087da18cb81cfc1e06f327a0a738c2fcd385f9a327148cd1922454f9c077fe49b66f30652b5fdd181545c4c974b333a76dde7a02f90eaf3cae11d061ffc18786f523e3031f5876b9a31155969df2696098989a6b34dad1a2e3cce6f1313d38da9490be7a50efd3639d1fe729381200b18035abcc96808ec3208e848477fcfc340e8e82590ed21daf3c3ed1efcb6e7a1fd96836cf1491f02e3756f83d0d1514047f7fa70378735d3293a65fa7037c9355b1c1b0e6b769d4dc6f197a2274c46b5f626c94572424ff75f97e422c5b4775b4bcfb71b8d9ebfb11cd5c2a34710f17be48d35b2383498a384b6b4bf0b87c56171387ff11e02524db95b4c8944ee773fb23ccec77d9ccfe1323d5e8a1e59c8163cb67fe28568dfe36d16b2fd136f5ffb1e5f01ed7be40a6cff44965e1a599deffe875933663e43664a8d348efad3e584a66a0d57fc96fcc4ac86690f0e7788962015c9652d0eab4aff1653f7091803d3fe2aaf24aecb4b53e808a6c0d437dbdccce3c355018b00424fd74d93cde5a89616263621a296379788376ca3bd868edf22b948aeaeebbaee33a33d07fd1a47499877e50fcc5f9fcfe3c3ddfeb25594dc9cef597c5f472e4745fbcd5f2ed7bdd14c346c0a6016df6f1007456ca08bdc009481f6df600d62fc06b1d0ddaf88b040fbcbada2f7370365c2e7e40dbe608356fc4f5083695f68b128cc13f79c229386ff0805cde118019f33b2bed66bb0196335929173fe2ca654f2c5bfc322112ace8835902f3790220b16b3107b303f37f2c59feb38ce0bc16ecee0a9a99b33d8814bdda0c1069cd78929161ac8316887a2f7b7c5176c110b71071f2ff4c78b1d885888a9df9f4c915cfb1ff088ad0d14868c7c33d6e4249c607246b149c3bfc531122bb2a4868e631397f69f3794d2f115333e7127634dccc8c5b8446a55d39c4e8deb789fc7967c113261469ad023e20af1128c09e2657c0e7aeffd7bef28363ff62d1219e698c7a0fd496e08e50d43e74edea2ceef4f8a42fa4292da206fc4e48d3248121ae48dd173de9fe485490a83bcf1ef4f12833cd9bf798fe090b747e7df2435687f9b0419e2910b3a3219b52047ff20f028c44b4ee91d19797442474e922d7f0e3ac5d5dcc7c05388a610e9ee470fc37482bb43a3e5edc0e4edc0e4edc03ab0fb1dd8fd4d8383518189a20a4c5481892a30510526aac0c4df353618cfeafb56dfea5b7dab6ff5bd85f1b81cc571f78a442aaff21acc47e5f1a83c2a8fcaa3f2a83c6fbf8a2bccc7e663f3b1f9d87c6c3e369f7798cf8ce3ee1589fe67dc57318501b5628eea625ea25fa3c638fe8b44f70a20168b050014d32fbf69e80de2b8cece495e8eba00019e16e0e987358ec2c0d30f5f8eca80069efe5d39ca89a77f6b1cd5e3e9df97a39e78fa77e6a80d3c7d71e5280e3c7db1c6511d78fae2cb511e78fae2cc511f78fa2a2b4781e0e9abd4382a046f80dfa2d3ef11f5bb860d22de245d387ecbd70c04fc96b20428e08798337355f2d48cf3a532657306003a435742b46a82a0ae08bc4892cd6484abecaded3521c00e02ec1fc0d403987600530e60ba013c634fe0d9034f1a2fc977024f9597e46b0083c04bf233808df0927c0ce0d14bf22f80fdc64bf22d80e55740fe64420232027809990412f2010e902323b4d7518464c00260248b02b0f452023002b0f4d201b0f4128e1b587a89082cbd640385a5974e587ac90005c0d24b04c0d24b1573311f40de9c00f2be35f216ad3c8dbc7fe50390f7a857fe256f1a7a7731d30e5743e07d59fbdaec0b136287ab2dc2347d12de2a2915151b4d1f7f0c0c847c173cc22d180666c1221c92e18a9b7976b8da624ad31777b8e2e81daec2955803ee70b5290b6f4ad381b0dbb2635bc9178a049537666e3962b6e848432eb6f7fc0b8dbc27b5aee3395cc917faf641d8ddeeb261b824648536731e31ffa0b77fcb11f375cb119a8f99b567e5251817bb32919d7d4ad3d5cae525dbaab1b971795c2f9597649c36bb299555a9542a1b2fd57036f746e4fad708b389d5688d349aceb4d567a6cd68aacfcc4bb4e5a51bce755f22d8c7dc15aebc44fd6bd88c94158e357e14fd15b1aa5583b7e27c667a5cdb8baa2c6569185b357c669ad6cfacce16d5402d9fd18d65c385ab70c54990a55154eba10698f3a0ef39093a8e26da4412d46ad6da2692e0e14a82471393da6882879cf2c60847c99f2f92281b36f48c695ddccdd5251ea363143a52191d47d08abb3d1673193dc9daa2635511a9a127fbd4d65655d570dc951eab35746cd525b5555bf4546b4dadaddaa2a75a97d0d3ae345ca0aac760559b15ca94293636536aab3585c59af24d89c566b3a92518f34db99be3389f56f024697f29ed9cdfdc8b9ea0d093b7bd27da2b9753985355991066735bd0dff77e21f48586c2f5f6a23d00401505c60b6cf05b68162d68d40bd8a0310f34149bde1e0483287c58a8f440b7d8975ec4a0d562ffa3b98e89f6ec37b1955c8793912ffe5c0be48b3fc5a09e587a11832d689b92725f8ee2bc37d3eedb8b69f7a734b728512bad3c6ab5bf719ad428ddfe037f88b678acd1e0569a7dc90f73d70dc60d8bd5043682e5a8da721ef434ad76aad596a6bdd6dceca0f2268923e40d07d09343a1e37cff1d1287a741d298be439ea61c294dc20879636a37c2e973b0e42ae6521e11cdc9685b6d1e2e1bae3f575f13c91b9c15f245a2b8154c1dd4c042fbef120703edbff1be5c8afee6525cbd5fcaaba043a6d6f982ca7396e3381f5ee5386b1d0ad71b106adfe903a1ba52edbdbbe771f901f5bdcf414d29eeb5c9e53d3ff0884e6ff93d5047e7b99726993ae71633b90e8cd97c568704996fe75b5311eca3fb2af4c4dbf5e66d75fb6a22c2591ff53bcf74854867f8336f4a350eb3addf717f449739eeb76ddb7ebec9ceb799730ed4a1e27da7c26d9603ead8de87dd388edb54b49a5a6bad35cfaffe22d6fee2ef430c4aedf9e73edfbe7bf4eb60a92738b3294547f76461cc936d9f6d5be6681fdbdbed277884fd9a2d365d3169ccdcd2bd7f18d3743e108eb6f56bdebfcd7c862b1de7bbcddb04434c579852a62b260e3046ebba29a5e85d6534fd5d7de625eab556277a87fd5a70b9946f58b35673cf94325d21e57b609b7f521e88454ca708d725a8e3fbee8d49a552a99a9a989b9b7ba5be370646e9e6034f92bccae13ea253f7d20d52baa59672db577aeabed6180ed58ee5dc9ffafb9bfef33bfcd191e33657030e9e24d597375a528f7aeed58fe24d7bdb4731a73dce27dfe370389d24f3a1987fd05a9eb1e0ef6da67b79c9abaa88227474cfbf0dd431b58a148e8a4cbe7ceff2521c6ee7256fd0f7efc81ce5e36b08f91d06f9cde998ceebf58c97fc3b2f79635301aa01ef3f6928cb511a40c1fb73a3a344f0fe468000058e52e2fda7aa89f79f3733465552bc3fbd71d414ef4f5f27f805d8805111411f2dcad1022302af800458e0310248070000077e88273ef02f1dd85fe3a5a342f0345e3a0a044fc4d323d73f9c7194874648de6190ac024cc57b68eef5d0dcdfa13fc54952f01e1554504105155450615f0558c250ccd1546009e3b17194bd71540a5c9e97bf0a52803914603f01f629b04be14e5313366d266ba69cc8f1587a09f521c0d24ba70701fe00965e2a801158072e02c76006602fb987348eb2ef300bc03058fbe7c00ac07bb2a6cd84d114b5a1304f899cc65b5ee3aa99158d5119a537ae174dab4635139381f79ced79e37ad1b46a54332c78cb9894c91bd74bc4d763a3fdc3cecb1fec5c2a523c445466dbb3d2fed63d368620e082c1932429256792e8e87973f2654a701ef1cddddddddddddddddddddddddddddde6c6f582c162355a23cdb344ab3b43575ebae15cf725827d6c94cd461b5f43e49c367adacc9417566366b562b168685aad9a1a1bb7f11b182c169369293da5a594d2c6e6e6c6a5652c9552a966b494524a989c49299bc564303d6f606c380a16bb366636dc4b4059345cebd688e6cb5c52a6abd3384ac6cd6e4aa4fa9971a54d1a0d66c266ab86b3b9372217ec3561300d43578e4a71aa3b235a3d6b9c349b5397a3643562a353d7e544f745e3d718a7739d2d27b1d97d6a02f08327497b4aedaddb973728205ffcfd8990a80acc92bfeb0d5e48a906edf4c422bf36d1f28b5b003a7e12d1acb5d26fc255663820a36d489171d79e292d6f6050c4456f09db603038827fa536e869d7d805d0350a4069c581f6e17886128341b9fe430455d5d2d2f24fc1229ac8cd655ab402762fca1e9106bf0384bbfd73d0edc651df6b322f691fcf1d253bd9f376d9f5e47bf583e1adc1093d69afbdc7a5f987324785ee87211ccabca4793c0fc27b88a386c0d0efbde7f1bd97836cd17d10efbf2ef308fdf75f0ef20d8109374fd33c9e07c578409af71ffd3c948552c259d8e9743a20a803adcc2464421fe34359c8163cbe0fbd102fb774ef3d100f448c2ce4cb2d5d6e510288f79e0920f233110a7de73da0f7c5057f7bfbeace7718dc3a1b2849c8a3a1ec1ff7d7a745b8c5730fca2603ad875b4db9455ae3565154d0b3c936d9262535e39b6c93755893753c1e8f56dd652ec5673e859ee67b5fdc6e0504573a1d7f4abb0e7f2875ea9a264bdd19af83393a6aa1147af2d764b476555a7ba745807987ef511a3ecdbbaae8cb0e92cbd1a1df0e93da6f9fc9178ceba5b58f69ed3d30566705ef217ac5d324c6e3027758edb9912fda7b506ed7e5af05b7fb1dcabacec7e3f97c749cd7e382c1227aed3d4d462eafbde746dea0afb5bcca7bbc90385aa47b2fbecb6060d1536cb50b9e82d3f447a2f738d148f4147c51f62874d43ef03d11f81a4871d5221618e07ba0f79ec3c01e73198114533d02bf0504dfd33e9ae47b16d1973d0682147c7dd8c33217fc1dca3cd8df33e9a781312d4a84fe7b1ea12cbd947938cc4be077efe974b2f7c5ed3cf894d2f73ce85786e88e7a3e8753ceabe0edc982d65ebc78bbec07e72918b349b9affe78dbe7c5ee6fcf4ab920a59d0f65f4d4bde74ef47699e7466b9d1c45d5db93edafcbdc8a5b7146389a6e734abe0e7ff0d5d39369aaeda16c7374d4fe4347cd73b33d2ead85323a6a9e4ca6b5f7649e942fa5fd37434f2d94fb7832ad7d57b753edcfc175a39aac0a3ac4da21b4188177b8fe969ea8e6d95a6bf305ef702b8b9e3c4fdff3e0d07b7e9460b5f12a8da33e345ea29cf8b1b9a21f55c397c99d5afbefd2718b569e99973ea90f8da368f862de377c50fe7c6c3c78d7161ca4becbe32d78d41fe520a3afef8283b4bccba75ca647c41519a1a38835612812d10aa4bdcd27f591f98c7058691c455f70edfb53edf7b79a302e9f844b9d39cac57236a12c9c396af494459437a73f2f1d357ee75bddcc897905e2561ecd256bd9f330f0fea8b47fab4feaf3ad385d4428572474a494d31ed4a8c8e6d1d428899e44230d5badaa3c79c3c8dbf3e1c78755f178b4bcb718f0ed1153fb7ff68ffa9a36394e0ee072be8245ecd07009aa4a73a295c848e741dcd13ea4bde8eff1fcd55ef4bc4d7b4d7ccd93378cb79a67e559de93b7e86d16adc4d7b2967d78debee7c31d2aafe5ad7974cc3fe8cf7b3efc64ed3d39dc833dbf05a9d9a8b46c53d7992065a84640000000004314000030140c070583c18048286782940f14000d8bb85672581e88419052c818430c000110000000000000001800c95febe77904d55aedaf0581959be8970ab04f2d3bde81684dd230d2d6b6e98fe73c939ca94c4d1a57ffcb80da3707e008783b8a2aa4fd6e56813d3a96c82c64553397b0ca67712cb5f162958085bed73d90294af24ef1046f62304a0bb3577372ac0e8e33958ccb7094bc4f2e469f854fe522a40188a4deef153921c6e2b302bec827d21ff103e13da249f2aa01df4e14f0bd78da084787c99d7f2b95769f3ccb9f8af5d7f3622a3973b9fc0ad2756f3f203f7384d14c6cb49ead63555bd81c862e319fd6477952c5b73fab47da3e23d464d486ccff42a64c34e3da6bcdf037144d87b7b37862e4310adb66af60425e0dda753dce24205a04ad655d22203898036e35767b131ce233d9f632897831c97ce9b48249aba09d65a3e36c023e780519c50037ba5ee6d89a27379abf14e6e63c610c112f1e1c7175e5c9280c7075e124ec24d3ba25ffa8ccb77806f2588115b1d928aca3b0a5103816d876c4db38aab7794daea5b11fb36d2e4965bccdf064cd92ad586f9b92e45e6f3394bc9264c342da6624bb216d4625bf8c6ce6dc3629c99cdb8c4c1ee7b6a4abb24900dc4f9e90e6b96dcc1089dc3618c1566e1b5a709bf6c96db29991dc6695f8b5b755dc6152f8399fe9c4391cd7b23b3a465da58a0ea3d5b4c79fb70d769c9cb9b48c211935a79b6f232176336eb64311ecd97d9b177b1bac925ff1980b6dbf2d33e52655de5d11e6e6fedbac65cc9d7c5e2b129cd468fc1743c1e5260b6e247af309d4e3cea2638d873226dc5cd082392815fc5dd13df5e9f3bd95fe9fadfd1bd915ca99d7d60715fb90e396d09afd90991fa6ce72d6ae55f53d46fa464806d153582f42af2d4834e81d636483defc1037e8a55dbc144f88651575f76cee96e62ef09167f26465289e298aa57324d41b9ccdb00ea486e54895920aa6e54ef782d10807bb96ef674387e657614b9c2354387d8a3b5b26328bbfcb997acc1872de0e256723d5f9b77e0a4e1e3040fdb2810733f6dd7f9e402ca560517376e4bea564dca6fac62242c7533556715948f2619466edf17b86bb044531351378a50468d257d0282f0e9c7cc4732ed22549a04541942f1b4696f599cb212f465555742568d7e7c098d1d9e297151280701ebefc3a0129b24a9d54c143fae34eb98ef5114ae8543959d80c774bee7bf9bc7f70f287b2a9186d588d85053932a30b2e013aff5e983442854c2eac1c7633089b7937a2d309a5deb6e3234b5f0c5541f7b70f16ceee1918e326b7945c9e3f03be9cebd5f67faa2f24ee774f225d8ced770204a2d09bafde6ecfeecbe24292b66175e6a6d4e1b87d36b79232315fc8bcd83a12c87f3658713e8af9c36fb648105edd9b659cdce2f334514bd232234cf164481eee735a338737ca2082406792456b8b096ea4795095cfbb1c1f71c088423ea056459feaf0585e7bc58f57ec92bd3f04c07f72b8c2a85bd0c8468c49e02152c818b1ec9a14181d8ecd1bb4d86524a1cddacf3ad2582ecfd5e2b8b16b3e362d9ef317c6325279b8c5a9030f30bf93a31423a2759f2adb55953ff86216b9e6ef2857aeb21e2a47cac32ce1006746b37a3f578253ba0d95350490bce4b2f3499f217964d20846e076d90c9ee24b5b2dbea1c9cb4897c6405c2a2406531c5c50136712887fbb16dc50647b0abe313962f4f4dd73d3323e383d99d67b9a273f9aa4da5b93e4e455ea7eccaf83c934a9e7da6a9231fc97cf9d0b53ce7cf5b1ceaea38dbb72acdd3c87d7c8fa8aa48b6a19a84b00a28f800847cba43fed38de19d11fd633c2aeba7235630bf3afa0a35834a3d6b49bab35d6b79eb04d7c445660ea67370b555b4df870f020b146a56841b9f8629c99f3b04d267224f8b53756b3d0b0a0e60bde35673c20507c5c48f2ff16e7503492aeb57bf01b6c6b812bc67ea1ecbbf0b031e875ed0a32913bc9854db194bdf5d12b7dd52334b2f6783fd6f2f82cac6b417d3098545131f1c3c84e889ac4e0292a056ee284f2d67898a82d1fbbd002436109e98b5ce7bdef329c68e62e908ef786eb1438360b19057bcc21141432a20026640cb36c56de4f61876b7f6d35a35de253916ac59cbc1fa4f02a7a1af041808b790a0856dc80023e85dc3498d705b42f440dc0a2eebb0c9dcd82b899f146409bc9a1fabdf3bb316c6034916ace17a211613939ca3e8d3c390cad36329d70cae2cb3767319dd4d79162c91c54d2a85e2da1cc0a2801ef5cf3fb0d97ce24cb1cba6af2263c8d6c991b1fa2fe3dc3787660cbdcc11701f4826def2520edbf7deb62f2afface23bd8b0095b9805375f9b0ed7f6c4ee6b005d967b250df3ef63d4fe246e6ba92cc7922cef88eff1dc74bf65c60f27083cda96d050883034ea7598a01c11b2802dc8cab5cfc27b35da1d73833576e8557a822400b5bd585af5812ca8a08d98f2019897bb5a117181e7f038055f935c095d3078fbfc0267e070e1c80a2585f5e19b2922cd341d83f28490e640fc385ab1c414a26dc38280981339731c4559d3439a330cf3c47126173c427e9baa3cb8412951e26bba876310f8f54f486c3fba11da3364caa37a284430b62e10b408ec703f9c888e4349601774eec887f79440c7abae78e530430465b7d5741118970eb1b23b0241e5eabdbabf76a1ac9b2fe72b7bd75351a193c6e088ffd4f06fbe1ed41a73950c41a5baef65e42558c42a522ca9038e7377772142ad6253bf93362e763232364570142b6e9233cbe9b85e523c902ed995b748d96c946c3e974a51e59461ffcf583e342a71e3a852a4928038a38b9687d4733ae18ee24d633c027a8188c34e0f304f0b5f68ac504140b4a04d4211e49c83dce9ce7f2a37b73e53c526dac652e641a165c2c18164ca7a08440f8083889818183723a460321a42c05ba41bc3406e3bf9615fb28a5075b4704ba182225100e0f3e1e7492713e49f50010c3499fb0660c41323cab9fe9091e5c25dd27d9a74dd093885cf2a2e957123b2b1ffb447e7a7d3665d295b8b15632f69b893257597d6ee683e8bc2f230d42262053746ae437cc8f1b353d6c19e9cfaca2227085e9848ce59b19124fb6028bf096dfec72307c2c3134dfdbcd8cdd2e70046be2db8fa612ba8dfd670472722dbbab669f9b704995bd0f57e58460547b7a27350b9e704c6d2c50c4c773ebd728c4208947a7bc0079d5c680a90136f918cffcab72e0cd9e553311457efff015d06cdf4b0ff355049198d9b7f50ae4c17d393c879601846367b7bf5a92bdd1e834fd64d04c9d37841865cdf63cdd306d22fccd493d78b3bafd22c09256d494c052a1ff4a7bccc4f9175640cfb8267fd263ef3345293258c333d7cabaa113c694648d7fb556c9b32b6069996f98c3140faf7247916239e5e7d33fd8388654016eec15c13f123d99a70f72d1f00ae5718ef14ce197bafe24e23fabb61c3aa369374f72352c6ae5e7cbaaf46f4bd8612748c40987ce46c6612433b5301e15703f6546ec611503d4e09c9c67c0908f3ad70b4fe730fd0841a684024ef4f4aea9a40bec0b4152c37406a963e52d9270445c502b3c6e85bb3d1cd558dee777414296561926b44aa3e0569f5fa303ff5444ef4c369964662cd8a1aaf8237967f267f25df7fb290c8ee68e5c1f65aa6404c916792ec377a0e8e1396ab7191c8c00c5b7f833d76e9437a2d95ed44aa40c6845c1c18e8d3314e294f5783da9c66a89e45c9c61cbceb7bb467caee89b4153c3e36f86b6574adcf1d66031fd25ba54d90fd47180a6176bc17e272deb7ae68de67f00434e0e957dc47d11e8ccede298db7ea34eb479f32ccdc15dfa4098f393cb92d8a80433ca18fe9004fd8750615f4f52eac04f5ae2c8dc94ed6afc5cf095fbee44e1ceef8f88f84950311765c3a78c4eb94611f08b540e5a1d95b374290a81c66004ad89cc9923847fdef2706d424cdf6405374062db1935ba5c55232c3efd4021f941026fcbb67860e5b59de05e8896cfdac1c959b4c89c89c0c59a67af80eb33d816882b9effdfe1f738e33a3a8bd9beda9b81e27975d9c7d144309a5635acc883de2983a1a3dc4130cbd7418c90e684ad9e2d41766e728a08d9f8a5184cea67a0adf4400e03ccb8f6a24389eb4fdcb430900cabc8db1c36a9f6928adbfbced07c0a561c933491b827d0752bb5c814d04b69dfba629ed81784ac3381d7855dc660cbe606f6e6ff39a3f6398ad056aa0f21f4bd2ce913fb027387f5ec18dec6be97e06d0f8f89c0ed23bbc7614244e0b6d924b726664be9bff86ee0b925a7343621c2bf552afb6e9a5e46b40062376c4398ace533bb64a6daf5b115fe4c8ccd94ddc51bee3cce66673f1d5983ad4511aeb8475a77f61b9a206c354a2bb390954205b6e49df6cc1efe1285da2b296ba93367abfab716ed7f9fd53b82fc1fb8022873ef1ecbe30ee6accfaaa4d62bea1dca5d75e54e5bd192898142bd450da102530c222c5477fda1f5ceaa45bb3499b50cf8ca2105236837339b463287829b001412f9ecdbd51d06eb03d3b72ea343bba6ab7cd1887bcc897fc97a42b2aa7dcac4c9c85816182da17cd8d6be9db504dbaeeee62a8a9622ccccac0ef9d6587c72f1c70743aba85eebe46e73489b923860104acf1de7e077c33960fb20387a381a5c41dc1533c2dd721c9d0ac47777ba24013a167b6931297bcb7128ca49c40c8bf6981edb212f2dcf61172cda1cbe9d434861a1a2c522e0cbbeed5643c0df6f978a6481a8f9ddfa4f6ab776848f070663ee2896993f6763355a9ac3183f4ab37a017f4364b82c2ef33394c475302dd230928c3aa3d5259575a2e10ea99065fac2348986f178b582239b7c441cdcab02dd0a0c9c7edf817e10a139591ab1a8c96ca23f3078a85ec61f09ea40e43f1dc505ea74c7f28faef9872c5bd211d1333e5ddee39faf6974e2ab9f24be6a4356ea1cba278fbf3ebae36ddc817fb7839caea35bbaa369dda180d831c5ad73cad4f906ba137fbb935454c795c5a11164ed4f6df6ce55adfd79cbcd89e3fa13096cedcfb60a5b225c4c3f66befa73fe855d12a6822e71731107e3e697dcbbb5febc33597a7ce4ef60cbb06afd699efd7f5bdecc7ba267c299acda0e785cf9412cdd1cc9060c08d3d4d9553216efe18f3fb6903fef237f620161f2ded7a7647669f97312ec8a627bf4c33639da7fc6bcdab2345fe860db39ecc689effc8d5de48c58621e9d6cc5cbd962faa9df8ffa9c39c66e08fcc9cb93b021f88360e18fb6c41fe18d3f14227f6c54fe5c9ef9f34fe74fccd09f2ca53f52527fa85b7f0c8ffdb9b9f6e7cffd897cc4b99b8ff1c13ff504078f56154376f38fcde89f2bd53faf64ff4477ff241efea3b9fc874effb10126a49cf81f62b52d8f0b80e65600916500595203742c037a99dd7d60598280ea06770469962e955ae4fceb783e49983b5458a4bc9b71594a4ef00f3c380e4b534b8cb5b0ecec63dae4a12e8a4dc14af412b4949242497d461de1aed3ff94cb65f278c143d0ac9222e041c6a072caa2a35cb4de0c83adcef46f725fc4baae6b4fd648dfe8c26f0b2a4e5687e6a8e97f0ac27b31e93f071d741039335446ebc58f96013e340d51c4243ab18921348adcf9d10ffee08f7c4bf9a55d9a522c6d694b1cff522f4d299676a92bbfa4a0072f9358042cb309eb3a080149852f2646e955a0a0acfb0f13286f7bddcf182013db059d8946a4e3807181911c2be80377edf7bf8806af396cf0bd11cc84a58255383b0541f388f05f46b619fd385e7142681196229de033a0af219072e49282cf9691b483855ac209e826bfd30badfd140641e22c62cfee806071fadc417caf47ee6af436b1969451b96af439d23899591bc7019b71cb0de558b5e1fa322f91df4cb16c9cdc221a710172461ac1dac7836a44d9e1576929d9c94ef6d3f67c3fd35e472c708d98a7695f8b0db80b04e6fa68e49a14dd40c0f4b0766d9020054f96b3c5498cd466e013865e7b632f87606dcbf4e7b193defee3f2e11ed5e7edc7c40c8c9ac1545c873ae3af31df8eacead034154872dc4c0dee8351f401769209db7906c424275133812ac33fb330f0269505961fb83db7524a47809c22257a73993919514ab04892d0ce0acb0def418bfc7e150aa3ed0c18d277d3a24e79438ca91524ae9ec1dad65da2c47cd03e18c9fb58bb7dff7681ebb1db2bb60b4003ec5f3358904da0481382854037da8c6ef9bdec16758737151bbdb73bf18da9b962cffca6199a1b959231fc83a2b83326e363a7a82c5a6ce658ef972d9f2998a3da475566a971227420610e3e7e0c9812f99ef6841f1ecb7b9975a1fa0107a53a9ac017d8a272982747476a3aab7ff53524e12727477e6b5ff8ea0f1e394aacfd013953fe6825414f06eba110a8fc95fe080c949970f901a94f603af3ec080fe773472dcab0fc040f5b264409a05f78dc4bc79438256dd1a7790b633d90e6adb25249349ce62c2dbef2d9027797758c9a0085477f8deb637066045e435201e5ab892918a60e31be62e4b6d0189ee85e7d01893fce4651f4280c701051133169005614107d048f963d6c5cf65837c37385e4c8a06a378202defa1227169cdd1f56405611d9649e1a86d6c29470b6bd1cebf99387fa13532c6434888c3362fca0fd077330c425800956d1c388789c42bf660645fec50e75949b781e0d9c447ad100e76cd770e49c690926df4e1d1df02d2ef999580aed7fc3a6caf53a950a1746769bb479aac988e45ab81429672c24f6e9340da0512e4d54ad627173b7622e4aa00e992946344c4c1e407c0e361ce62918d150088b627124faeea0ac626e736f1fbd0b513f73df69e85b4d730f3b6029ca68920ad8a1f6b1862333247301c352309f570dc69329968b0fd7e7fa7e2e20834092a9a586a928d48ef7a2d4bff78173a077b38bb4e25c41e2640af07c4f08ada608252560debef1e1e66df9d1037e5b3e18de348a058b10cd14597f6bb3a187521a4182a345f1284d5d25d4fca9208ad9a27c0bd2b0471a04884b8089a2c10048ee6f6111d14381e5abfac854c53c1e0aa72610c98c9cb0fdc71969cee249a5f95bf6fb0cad2e095a8af2d6a8b5d535b800bc84205331151216a8459de51fee01db4f2d2d8f3900908a4ef6eece43f7546bc373cb77560d76a76315921ac5b364e9d9c079d4d4625db1acc0581045d61b87298d406dcd666953f7236846921b8059d0c91cebf6058188c0733fe127024d3beb34b24f5feffaf5ca2e7fbe9c5d0ebbfe2fd903798968c4adce4e14e71395b8726cd40754d4d68163fc75a42987ff3732110ccd4edf5df0964d2b2f7e20d040bf72af6f29c44daad7b770a08faa492ed3fd502e7704b6410e1badcf539880120d5384cdf4f0bf7f08f335867228e4f9411a875407a560d167bc300c05ef43e91fe00afa1b1bcf43700344765d3f625bc0af1804f63ead4a36fab30dcda79c9afab9d4d086bba937fc738902d4682420c830c1c6ffcbc954cf9f0198c5c7ba99302337ff0f7327046e096aad279d1f02e4f555f5c994203e6fee8637aaae1d9945bea72114413b81a3067158ea5824bda3545e7314b1d3f58c8cbc5dcea4816ed26a1339db110d4f27985d739afc4a9115226d35155da4d67541781357312990b14cce4df7f1859ea22c0fe69f80e97931c5fb13cccd483a86d147d2ac5afda61a8f7a03271eb95044e482c08a6279d890cbe1285274598a053d82f8d6a81ce151a050b0ce2897b6d018258974445f4b27255e85e242e9dd4686eda3550b018a5ec81a2c812d8404434b88992f841a502904e3284ee2f64b322911674e49e26955bc348dce2bfbc9c5ad028c8a507847bbea908a91fc9ba94b15337a621354f4fb55272364bb7707b32a761abb8a41fe6709cc3ffeaf324229d0a8498059d08f97a7ed29646a384fc3893493211db29c196b0e53793da356ac4887727f8fd41309061c5a1544409e0080691914eaca5917e682c11e6ba7c2c2e7fb106e394f8ac04d6ae8d0aaaf85a962f27fe1f1d6ec29b06694f62887e1408351e5bd7708751a76425c45895898f81e8728620e19ca2225ee43e25f7cf07354a23065c39bbd218bdcc4443c87e960aff357c96319b16cf4453ce912882166ee57f11ed3478bd7f4b0d862dc1a33a6a7d29a58f86925c4d8876d46d6def64bafa072d6237c575c237a26959dfc1ae580ed8be267ea5987b6f320c4d78ec33eb6b1d318419fbad900307154ee31013ac64e3863bbee85463fd490029e1051b38831e1e5534df925c6577d1d160f95a385aaf94914e3881fa96b11a48651a593088806a418af826f563c9fb6d881bf98c87f6baa728f996314639432d6d4390bc8a36bf7d56ae1f68ee4898f83356a6d39834c532554e4873203916c0714bfee07f3c80b050427915b3f56e54d1b9048119dae93e4ebfea530522292f8cfd7c2337a197cd31c4d6ad8ae8cf6693e58088800d74864a7521f7cc1572b3e0ad7f3359ca276d4cf338bee3517e8256cc86c4e284353541f8a183d3df669228f2592d69be4351d540383c41a8c90b0c97e440b04c0156fcc5a6d7c3d84b5cb071a3120d54411763369f3ce5e4960f6a62a363cfe7ca6aa60a677473bec569ca69a2f5db13dedba389537b4418f8a434b3d7a1736401eea2ba49ef4511bfc8092f792132ac142fc7683dccaf718233ec07287c2e49abf54a5f98223f591ac04ed8bd225fc6bbf7f5aa5961880c43062234a22f05324dca22293481aba0e18519c04a2065139137f082161cb8fd498e102bcfac44f33889910c6524596dc2cc4e9f0bab44ddc5cd54c25a8f532cb6ef62c04ffbceedbbb2324a13ffbccce21a5964a0a7fa93c77e138f125ba3ef4862255943a7df6245aa30213642f8259d42047c09da0e3a30daaef0127fa454f900e9048e93bbabdff18a2cf79d0ba145d0c7435390532697066c37ec91604136b3c31a69507066b9e0cea91bfc49827597f428163476b1e3feb79f47792549f1a1f7243bb51ac5fba50cbc49eb8079231bf2663712eb5de80c1c995fb8943b1e5210bbca614ba1682d2c03e93007ae1104d272890db7dd0068e601e0d453faa008bd0484e0db2c4267b0925abb59dcd64e20fed5e9b435b91bee5b16a5ea1a3aee2ce512aa4171293b8d1b2f176e84e154926f21630c024aa5c653567bcf2abc51d8b9a0c95d25009f5a5e52755a6a73c720a2f3712dbf291f6d6c94738d0371d6d985e2720feab7d563f4875650bea033892e4eeee1dd92a4e269531dad10858e4089aeea98e7c302e95b92d7946319d153bd9b3cb568356020b167aa94e3b7cef30f673d39a1df178bfcabe252c543b6c5b41469363864b0827f2e589156e7d320fba9ce6c3198c53b7b6e53ad4da9ca374483221bc1620668193b943f00ad0b5db58d2761d5d4942b5ebdd0a35ea323a3f4512d395014e04f5955ddaa5d2a8e5c7722ad141298b8d1c2909306b50986809705c370c372de652646ec96b3bd806b3d9926b10ad05f222dadd7df5fe7adab69403a161065d3603172c01c7d5eb6073df62e4232aaf49fb99910262062fb53661f424bc75e6b4811b682704d92934e9bf252ca458f61e514fa9527e6e49532c58c8f38b9d62c76013660bc5dd98601e0afd3ba91e666aab874c81ffa42a601b9d65fe556c375743aa3fdb240b633d221269785d64192ef8cde39c925063f0d3e2911be2c70546552148a5afdb6465f57482f531646f93debad3acc871a6bda7ec8c6daf0d91fd6a21c24728ee44a999bbe1f6852ac8874970c103470ab3bb6c0abff1543283e83be73e0b1584f7f04e5aabaa7920a07c8870a3fa29ee20ad62b36e1cb0e24b01a0c682a109dd3cefbf00777a17bae608d92e285e933d9da72f66e89140a2d7baf78b04867b2b1c7192c78f5bdb8fd5e7a9a9052d71e02d788c62cb316ad66b18c321a34071eb17231416a14fa65d12cea78bb89c488ba8ab1749eeb51e1c008a2ac1b17c20aff8d8d81ef90d366a376638ad184d9d81f5b8c9715e32e15c39ebc5f56fad1bcb1024008d4bb4ed3d048a220cb92c254bf99c6d858b469ec3e7fd6bdec4c4d521226e4915b2e6231c2305661d2294b42ed9f710d8eca84a8d158e3127ac709a1619ba97e965a90721fb5c13eebc0f87575f4bab0c0c21a2511e34a3dc22200eb7533397eaed31b89e41a436f8331c22b5c22aaf2d60610206c36f1db81829aa9785cee0a9fb01865a419aaf4b8f8ce8078c1da127c0e27659ba4d5d5cd2b4b080eb4f04cae72cc726ca095849396d1eb780139fc848a8cd2eee2f3c5b7ceab849844d96926fcd82c2659d573e384f48d96994f86fbdd02532190a5dc51ce21c0995b811717bb3d2c57c7021f31e6877cf9dc9ae25b3bb235f380e6ab440a84cc162896b0f873942fb446dd4b16ffce9330fc872842a16c6eecda34683650129adc45634300dcdb3909af0bc15b9a3a41492d50673a0093cc448196a4c2656630243f24506bb3aa9a1520ec642195180263640c8d77b2f83562a21f82a62c8daf6b528f3b34002ec60600a312d31c3aceca348ad01b8a103789874bf901cfae26f6516cfc0637ca8b8c12448ba773cd292c1ecef4e2f33a3eb6a65dff0ef70ea1fb5a8deda3d3f5d5ba2b9f4157fbf5a353cfa6998a21838509130d4397c79e7ef0704ef9d51010dd1643ac9ad5d8e04adacfaeed9336bf517b5880b62789594b92ebac5075f641d986d19ca1f5fe94183290744443a6b43a6df534f31c385aa0e6c4a78c92b3bf9f71f38f9b7f86c95d96304ffb153d37e8abe250c2af8b585f663b627f19a3f93b6a6c87f082905c7197970e231679c6d934743edc676a9dadff7afeed031d2f9f737e0d6f70ae43f463f9cf34e769ed0e12c281d985a902be7a809f4a5bdf7a57a6e004e1553ab2e208655258dd9f046bdf8fd2eee521a6dfacd19814dbc5ab0cdd99c31f8f2546500a79cb17c02ef278950343c495504d70c75056d83a3f56fa6167e54504724230602caffb5f1f6bb7116475a414edae0d352b64294b13ef7d01dd405356b17c87b47441557467fab57bb58318cef9c9da983caa8222368312c985d2dcb301f112ba5deccec60cafd4273c82c1b874b0e1146270ea0fa33c2392c275b6db64d56300f23c9d8b7a3c2d2073181f3e55d295a75a796a12234a5beaf834a30032a0452d24d759928c1830b7d53ee95ede5a2cb9c643bb37d4bb3fe016acc5c9487d14f208d946124e7efa1d2f653f9b8ef79852d7fed03902537b92d42d8e2191b72e70b5d7dbc9710175bcca85ea309040e7928f36242daf62a64c5dd5629ec5d7764546cc0a808b698f90e5d161fcc03474a1b174e65d873730fa7253e594f0b2e20b09f283d5916a1a57377ba1b2600eb0cc9f1ed15d2f887e415c8ce2299153e5fe0c9cb7c471e05744d3d562c3631d185e4bd598a9a885ac003e5e7fb161433714418aaa9b0e98ab96c16e72e5fb2dfa70d4490c7e0be19f8f87ebfe094a0bd23aea20de12e5029fd04e91e545003170aae048d43c5ebf7f200c53ef6fd8f99dbd6f6a99eabb0ab18c9eb0abc2c762422925c858d7c1a2c3d373527c0931363bf9b52dbeefb3460ab61a4eed71df7c7ee0d88c5bb59ae5009c4d5a770c7309bde5a0bf10e1c9213cfe23d9900d33a5c33db926d0965b5169cf7c64542b828fd8f32dbee4e7907e4084f0daccc1a0e52dcab8bb614d9425d86f03424bc6c61e156d960c476cd92c4550e1955756f6fa929c2c16c1477a3a1cb664e3d98b7de12a3a4ccd49cb63a6aebb68c4e30261a3c7f0723c082f8c530df20fc1d8d1c796d3d571ae978316f3564db5100d44e8aa3db4cfea6986080fdd83492f135945ec8e927c32281ff54104ebb4eebb550ebd7725cb9b2260d6cf2b8899731546e5525a4383c77fab010934c1f840c5a06289fe7d28ac89a8a1ccc79c85ad2582dcb3395d4fec9335962864d009737509735777ed85ac170097431f6148c25cbe837470025605ff6b0b031d0196658b61638434940460c2468a1a4fc90216ae88591589e361f5096360d52b9abfadff95817fa3e476cdabe940b6c91d63532d859c23814f48508a7c4e3f136da1166cc527623dabb4eedeb33d04e207837f38b5247783aa356d0776870a6d123a4a1f234c350c75ed7dc302b18b248d079e21f4657bd2f8d95c3eeb5c5b2b2d3299070f340d73d94a56de3bc98b46af74c344bedcf63b53b6a16075c512efc22ac37c7b4d57d7d4f29a1aaa878e68845434c50341190dcdbf6db8ee7b0a6cf24046cf20c98363a1da0f8173acbe629361c3375ff72426bcdbaf4f25021123c16170cd9b82b0e1590b2070f0edb40b1e21c07a4f04d187bd195f157c0990ca3e0728db094153c5ba6ad5242e56438781875ea0e3af5f4b2a8b8feae0b177325405c6af638483d9519829871581adde2e52b8db3004674a7eb6837641941dc2e4ef009cc5846f8705313135586b3a0eb880e62268e8a4463e692d1c51a5715aa51e967392da5770033b8050ead990b21ddcb45c59078f245d647279319bbda766a1134526c3e3f06bcacc8718515249bd3b965096eadb2bbdcf839bdda97bb94903a8e4e76fc8992da1f5f436c3bd495d177e3aeb5fa9acd3c52ec6cc68734f151cad1a61972a623d51a48214ba0c9d63af7fd7c7a7ca89a90e6ede0ce39d3a7fbdaa2e4ad3faa39f4f2c7ebcb07c46d647e7824f3d33326121495b790b2a738b915483b94835bfa3bbe8d19a125da201d725321387b7d62f216803965903071e9527cf78da59e0ecaec74a7dbee9106f06a1e8829585da03e8341aebe4f0bb0a88349d5cd9d0e63dd82bd13a96337bb19d3001c5d3bd13a74b31bbbc3e7ff2dcc78823abba99bbbb13b4ffbafa89193aeb3dbbad1eddd18dd753fd5fdbb9b8591df568bf3b3a395754c6fa0903e7421ff68db49bb076a325193bda9626370fedea9c1ec9349711a47b01402195d981f58c4f2e05e52e66b2321dd944021132311072c99ba41c7f14b3ad178eefbc81b6ed80054467d067f5bbd3ffbbd3f91ea7fffe2d54f84fabcbf5e2fdfb7460bbafe60ef4a69af208365435c364e78f602ddc6c22cd02ccc2e81cbff4d42e9dc18091ead09cff43ff752a478f12c627babc5d1c18efcc06f68159fa7cc0c3ad2fbc4f63330f6eec84e7d5a16ee74a1ac680d3354d10009ad8c17a8664ee3df85c65765321c5539cfb8a181aefd48bb571c26fb5305aef3dce5b0ed117e8af91db50762154361b5822469a6d3543e0249493a1e5bb4eef31f62e3f6c5cf8a0afa35b18357a30ac675cab0b10184fbecd0f0251659d61444793ef8750f36ba1adaca994626c819197b0a0830b07cf60e42cd8fbf7a545b86129909aaae6699c84ac50a214aa5a10e1c5289ad19dac0805f587f18fff03ece7218441026bbe1c91a8a041b87575787a7d70078f337e6764a64d1913c900ec183f172a7da0921dc461ed1ae1cdac809e12a78087c4d3f43c98d99fddfce7dbf1a905ade24aefb84d831d7b29de80e3cb72401e8719b8ad58af7c74b7e1eae8767fbfb8b97caa12883fcdf120c616c7b1bd98c933cf2b76082dd4a3571e4c678bea0b5f9218651844e3181d18c370e55eca21fb9c77c63e4667ea0a9f8d1cb9c61a447d017ed58f5084a9bcec40c7a366424ddb37507b2c50750a92dd3fa05d8dc5aef442013453395356588c77286193f5dce76db51cc48efb4d4bc91a92464fa4ff8a32035519bcc17e6f22aa39e5aee71a059f78c228f6102949698f45b2181167030eb7abf4f60b3d2b32359815245dd81f747bd92ea9c03a3c209fc30c700f219f53b338a3bd8eff91aa4505a282c87dc86b9b7a88b09e43717179f11ba05aacd6317d09001e008c8b2bbf9ebd07893c2492ee7efbb8c972bf4fbd744203d53d1195516f4a343d85abca8c4f2a0677bd6c3afd5a61a45cb4bfa9498aa861201a56c60bd9a06902c68f23bb321a3633db7affc4cb8dba039f15bb10baec7195e4b832cc44300dd0082f2faafc091207a5987299e69d282829186777195304dc4803ac32983a34c50aeab78f7bb1155a10f7670fe927a0444aeb6770778970b3af6ad63312ea889955206f1488b51bbed4549cb8453312c6600575d054ce57c2e6b7853660fed82499028dca22d82f667fe9ea0ed948b110419c8935b803f0066dc03aeb808d7652d59a80011ae321154954bc99c000e5286c7356aebb035e5f5800d61ffb7091d82755b31dd0b22095ef1ddfd2bf906f1b4b4aa62208606a1b38207400cce402d19f41fa205abe334ba89182ea3180815f4a9d8f9904e28d5ad03a2de77d1abdde0b0ab23810b085c19baf5b07eff93abd10b802a6a36bd1a3e0022118b8f1ef49ac1e83e05d0ff9031133efe66fce299d7642c5e996b34df85805c0ace2204c80e750a46379a2bc6e8b63bd9c9ae7fce49aa45ec360688904f82d8333c58e292cadb18f744ee3ee6d6027f2f747dd8e922ff5df5a384005d5c021e1d49e4dc713f80531860fc23ae1c918e6bafdd51d89385f93175e4ba73d3bfd43873ddaeaaaa30217860e14bc23fdd29b207dc30fcbc63b835f6f79fa7f401fe9e0d537ce8ec38926c83f6a579c6bcbcb2879e7490f5b92b04625e16dff01dda7890ffb24fafa8b2f5bef2c622c5cbae4388b86bee7a7c74b9e6ab70427066039de9658764d288fd55a455066cbaefc9239687a559ec0c2a053bd33ed6cb5cc5a8fa436da14ee5b784a0dd63e938a31fecbd6583bb0a9e1b83c984976e2232bed087b7822e7366bf8bea7e7bc1f64fe6a3ab10e17396a4a9889f836f172ac8bf0a87aabe028a56b681058ba520a5272bfc88e8758866ebbd7477e0f2dcce48fd590ea834ab1535b0aa411cf6a86e6fe4c33b1adf1ba97173d5a62bcebb11d7a63c34fd330071ac291b23ad72fc131c5f00048c7dd198bc6e05d9b42494527351133b3baa8c5a1e983dccdb5d5ae92688314809e3dfed9e054601d4500f49d2abce258df80c7428272e9d2e6144c8fe7a66a98e83031eb0c80201d08e762f82e659bc6b8354711965056d2026df588cf8361f19a324c7398bce23e83bbb18a22e1e81c60c9706ff3b0b60d08b0406ec67d8c8b1c3da711c88d770375bc90f1247ad226c5d06bb416da62206ab00e8c2486412ebd152586de0706f93590a8da5534878a1b4f1ff81d6a811798d359c118531c6c7b88b751a8f66c45ee54a1fae67980cf0e46845468ddf7029ca677eea9a880601a008fe160218f3b7872f624ba61f45efa68206a2dc42da99c66e260c0844e7d8652c21f5378debfe6a55071c689f04409fbdcdbbd2b890371457f79e68712008fa778bd2a609b955e7ff26df343b87210c4e9b92349f489cd11ad84f369e3d17464b1f4dc189303fd83d5803c2d13d3156db4ba4e8e881494b9b1bb7a50781990de5ab9ac1fcda14a38fd4c82486a26ec01ed6182b1661bac00a24fe6798385ea09eee933b87fe3db4630cc4dcd8cb0031a46d045ce891b97eb61ce2449d5afd9b13d579d3c03e55acaf82be27d6e3e90dac1a00e0ec79579016e7051662368e0865bacb3296f1acb0e3ed2b830543b47c35842548152009d6563350b89a2f454030c5d3abc6e06174114e2c57176bf72e7be7b8d15a5900891ac860bb7c3b35aa6a0790d49bb70363e2260d59bd24b7555135efd03a3baaf9c3994e69b8570429e8fdf7caa8c9c570c8c6c5e68b06249d4bcbeb9a8c1b1285f4af6ef9efe3e720d9c6acd59b6dd4cacad2e7d71b01c1628e69b7c446ca454809d04a084d61f0e6ae4619be7a8d39a06d48dc28189876f299aa41d8958c6a6efa55adbd8364ba600ca512c072139ad7cd05ef7245387331302cef8b6eef38960578566d71b1462f53eecec5bdde43074826439daf4c77edb3e431272a098bf2fb43ccf07877a0be11637fc22e158df007a2a09fc9583dcc8eb50094306498c0fecd742f2af6ae393d42c395aa988b85af874d8f1aaa8d24a3a92339f6295596510e62e8c95243732f7c079594ef739080aca1a007208877fd6cd6d06284f89a93cf86b1e0c6f014e324ad30da66913e52083982b4cedd3d75670d678cf5cd600da746805c74e1cb6ffa787fb42570f82cc31a7e83ad3828df361a5964171d0c73f8591f0d4382845493eb577a908a8b81f5bb19749619dba7ab3bca8b7d05c63c7f5b0a35569578a9f3d20c127ecfca0ed7fbd9a42c10c17cea33469ccd88707700bd10fdda0fc6e7cf079dde757eddd2cab5c0f96f6a0212c1d8263a801cdb1774e08639d36eeca3664c3fd3e158626a93e4e3367417f5cdff3983f78ac81c668e22a1bd1ace888cc68b9b5b4394db094b1d8e2faa61188450fd3a19391f3e4193326cb2764a40a8f94c81af7f9d3048e1ece3ce8f54e7f94a0b01ed3a0524d9aae40f56a311e323c538879ab321dca3b638dd6952758c8121eac54d38e1c95d67b51ea870dea952942334bad77724f52c6d62de9afed4c6de0ede67466380ea0a06fe42452a6afb863d86cbf13192eeef9ff2bdc5730a01063b1867921cd55847aac597283b7f7c0016170aee0e6c91a1f00067879b1e1337125c68667c41809906efb6540fde7031c3e215d90fae24c8593323cdbb4a9956d9124965e916d2567c4462d031be935e76a497093bc16167c8ea82f98ca6c88e5189415bd6d10b239158ff604d9e9eed6418afcdd2cc49fc937ec54906a72e25f30e3f43122f39ee4db8b1d729fe13362ef42111520f999da0c3e72affa78565e8d6a8d2552982bb8be4fd08c49e3c020dff16a4c3212aefa8f97c4807ff12ccb0dbe646fc29fce419d71808cbd93026eb0d8634b700e4e589cdd75f2d025163fb325a35fc02c5120e249e245445c6147b23df724c67819e862dc086a980c2450f5bfbc909b4deed914738d805e3678e7180a15abf5f46bbd3f230e98767a3c5ce6f8ffaffcc36708b3e4af95585915fc8c759822e4d24cfb6fa92ca9669b0717cceff6bcc01f7a926c1e72a3ec7003e919fdd6da04012c4f009b297f6e353959dacb48be73798a095f143de648148efb950a1c3f9cd2a2758e7746ce22e3f34776d24876606ec3b849e7025be97293b863efc5de7670763186417d596537f1d12aa1be9a197e3182f02ad44dfc53860fe3d291445dacb8dc1df8df6d04071980e7d2e42491e55a865c51c9b763f5244525203ad5a50514a7946e049aa30c8f7419884b26fb22f85971d6e32213b8d6a6094b618b0ab43da7f1af50953ee65f1818d71ed7b71745f0dc87578a2e79171632213a452487d684a4e8a684541acd73ac052f7e0ff0fd39d72cfa5e1e5c6cf59e9ee0c00fe2890d4303dea09826072b58a81e0a38cdddd757625fabf660c76c4429191120af68b83237e30ae8c676a4258d71bc778090846a2e6c1061397b824833a6ba9f96d6adc98ee25513ec3f7f52189e6b44d1b88fd87f7a94a89a6625814d6934f992095042852a22569c0c47049fd8bb5680a81cd8c4919a80f32745910262290516f9600ea329447d5d4288b5737c13dc71a4ca66e62dd46478cab5198a7e7019d6aa1d4d6e65ad91009a02685944db6b6deb952cb4b762e690bfdf0cc2aac8f6d25adc789546afc7fe9940a238e874c300b9b8187aa56962d576cf2907f87e1b9a3969684ba45693ec62a4c1d12656ec53930f77107593342e0c9dc2d53d83665b68eb225f4dea4c6ce6ef13167ab4c8ab27bd461d5004c8dd8cf3a5397480084bfc72d66e431263b9be99c40bf6d6d35bdbe879b7938631ea04729fb76b85438250752dc624177c7d2ce7ac3ccf560321a227ffb73a1c91bc7ef530fd78408ee7ad2a6040a017057f2a0f855d5d863630113ac8034587324e502b8dd459bbbc619c4fc7f837543ba52a4f4717c096eb207500c255b7880e9626e146581db1b4b5b3bc00f813e2c2cf8642a3bebcc1526b71b299f9c2e2862a1b0292c97d209c03b429f6dae7cac4b236147f09def799011789681a68d2508fc3e9982a9f8543a8bdff8d49ee6b9c0f100ef39341a1bff302ad8062e96e4480860afa8720be26662c3b8576a472439c004818c72454313152eb8eb416c5beadb0b882e34ba7f5ece099b386ccc0510efbaa17065b85dec5abc924e84ba7afc5d546c2da84f7d08e83cc7a989c7a3fe9319b1f312ee803d717dc4e6eeea09eab1243497ddb816721dfe77a87600665f90af65c0b19b590224e7de79a0b33e3eae3219c26e9d729600db21ad8e74f457f15e225a33ba9e400d12e9c6ca908c9add373c0487151568f4dfff276802af99d33d054322c8ca52c25404140e32d4852c73dbf771d094582509bf25cf99c7c76cd2875509bfc7aad1e0f3023a84cec1c3ed1c2ea6ed49135eb9746054e37f8a6d44d146dea831dc97bdfe2bd3be33b942115712472aa5b6f9442d78a0ee5be189199d92cd13e51bf414e632e616add713f9844b50f4f6351c98dac7803ebade5ac7d93e1d16649cf41ad8f938c31c3e1fe66f35846ea3cc05c85c78ae215e283ab481c31b2a4d1dfaed976aefc7c440b8433761fe4d82857e8ebe02be576de1a48002238e8ed83cb8e2148388bac8901c709ff35b09dc4530e5442349e0f398c3620101d7022276d28f180217db20591bda3b8340414e8b33aefef1d55dc5b8d077c25712c2c92bb760c6546fd2fe48c28dd334d6cad69eba6529efa3699f054065ed1e2e8c0904f8508126594ba6062c9752da2d3f9c11efbc1d6366a9c2a6fb259b64fecbf84c845de38146d71393265b5a9ae672ab6306282b357bdb79b21e99cdeeff42a1480f39ce3d3146857d146b468ba112b4ecfd97334fb1800f36b73e800a326fa57acf8c0140f4d9129c095245c1556609fc0cd909b80773e4fb40a241e79fb0d4962c3b1634190cbc3ba0a6bf9adb1907f08ba6bf41416516e971a330bc6403c8e53e967321748b57546bf1d4b2a236e5f97a31e2e29e8a4556a07ee0bfb0e09e15899705b369e8fde797b24aa5cb09154d914a7e7526b6bd9e3c534ea96fd740b3c57498c2c93dffa4546c7a158d284933b581b5f24a7b48b2b57776cfd99d534c1df4f4c7ffec22d0b014d806281c5749c17695daa2a32a6a411d5fa58417342405a4cfcb210696e4c6ee07b8232f14c20f0eac08fbde5f9858fc9d3e586051fe58393902734252e2ab0bf9a175c9ea0bb2d4d0aabb3ab0c656f185582cb2435430f8689dc8c3f0697840348f33baff9181c8f10794a90e2349812fcf81920d58b45bd17740d13ce0b6447836a05e1914fdca83fce8f0eb9c03c8ef3a601721782b63b82f5501d1312593630e989b3110824676f45260ece7c9edc63ca6762fd4d31e64bbff35b48f7c81034fba49f7bdf57a2e01656efcd698a2ed6b4ad182e62304b124d9414e6af5fc6276647627a9a75b77ee839ddab7b6241f9a96c45e697aaf7e8db6b2eb0ee88f11d95b0493470d7a79ac28c7e7d5ca416ace7ba62134d124ed593310dd29407868a965bb305163d39a785a439bcbff51e35f3bf76cb3a739e85c1d183f338a7a2bfd9f64a3247a630cad6f8428715b59d51dca74ad4ac99b1cbf835de56c5b7a2974f446453b126e654cc4b2ed5a66e692c876096799534679ea8a3bfc752b63d56d6a93f8c20da42d9bf782b70f39f27a5fb107e76a189c75e1f5efbdc324fd930b3c4542b5758eba45481158a45264c4f9795b7eeb22c7cda212bad2162fd6473d869cc7dfe0a6c6e683652314be418246a2849454fa2e10781ab0a89e7ef1c54ccf93fd6eecf5291a02a01c00f8f444403a09233b06d642018489b3fa5592d1047ea22eef2c3a9a38699680059f4e48464983277f8a27db794b9d483436f28b2fcb8a25cbd00ef943995ff39842f4db014b3c0bfab25380191e252701e732f5136395eb4d58ce352e35a33ed3b1a7c2b8c71c8164b13396a499aeae6b698b9b08d44c9b9dd2728b380e4ba6d0222b6b7faf2f414e0014bcccee84a494504a9d16b2d5e1d35e3271518fb2c6bb523e9d0b67eddce645d248b1b50fa7f6c17ca176cf761471b5ede876fc5aeb0c8d6866f92776f136b3fbcb5a0dc5df5a1b7b2dd36739011606729c1ccccd916cb547eefa9f6c1e2277d350e714f1aefa1e244f293b260a895a52375c102464725ba66be5bcdbfa4a49e489a6ca8e38618fa97213adc2331e111d576116aeea332ee91c7515fe8194cd1c868ac7455d1dd4e17cc34b2a47b68e501a7cb7c9e1c8fca8fa565bab77ec1ce09a9ef4b2b48b29a08f677daec5dfd843f47ca1c60986b5999147fe0d75c1ff8d35f9adf4c31415ec2fb20dfdf2b0e8e1b62bbe43b5bd18a7b3bc025e431e7f5a392e41076dc90d9168eca1fc19be3409c63a16a0ad8794c4d805e2f84523d8511626d5a0b6a480a34e5709b40b9952655687a20f881a453399660649090a2091916f44b207dd3dadc9736f8261c9d17c22c6f061edaf04be4a4961319c3916a4f785abe6ad96d47bb5fc829f5b2949e3845ca274e9d81f8ffecc1e6ee660bfaf41e5e58403625fc7fff879cd03059b3d291546dd09fcf1b469eb68f30097b8afdcd9f2e7ceb41d894b9d5f0178bdd3b2537f48b8719df1f47a3e415393b096024f46999f3d8864606fa8d05e9f1f2f57e14219ad127be7163ca8940359631f3ca4f0718dad08ac6e589d46efaff27687113bea2406e43dd9aa40e5d7b9149cb4d7df8853565e8131aa2a2789e0f377aa6f227de1ee729159ad8fb52b76cb6f5fd9d0dc1abffa5209429302f071c487253cf20b060b336009bf6f43f4fd2e523ff8aeacce5aff00aa151a3465b7aaeb09b9f965520c95b0da2561aa07c03188440a6c37f25c07c251ed5f2244a5df02d204f5089bc349389d771cc01f34001da0b140b15bf48bdd31f209f18b2e6095c0799a30a80a65b60b844a6b423e56418ed79af0f6370eca090869420c70648e2771cd894984bc14878626edbb249b4564f7a17a485c4532d837fec041ea69860cd6e15a1a640cc09484181a803d23e936060be1c058af92b40e2d4602ca16ca16b3414055f94108c6423756d4f5761f11d4dd3fe211fbc02a11cfe4879569f1f11d88e64adbeac3e22b58ba1bab0c02255cbabf24ea75f0fbf7efdcbf44efed96c4d469db3d02742d40f2a444dfea5279cd4f0e34c451b702d88060d84c84dcc7084d993ec78388b0056215c18d11833a74c816ec9d4a33d29117eb62f292ba6448b9441686e3132212ff945aca685991e84c3d5a1a75b3ca5f958b00fec9763a3d706e483170f605f394d141c96d4c35a517ce89acdf4cc584d0d5ddcd728382c71a8e7742d5151ca56a5978e3ba5127e8595ecebf95ece1c1ee21500971859cab5a28c36693bd14dcfc39bc647d9309f9ef2a2e2dfa1d3d8750ac1bded6c2fe3734cfa8018cd7dc5ece04c010f297059e36f36460a3a134b908f156eb0d3f757273e4c728003a7000c721b330c090564201fbfa98eb89333eca477ea3beb8a300271d358c23e668a373a6b892442feaf94e79f5fc4d261f7ae7d4b8ad255b960811490393ea4f9526eca4cabd38ab185677df17e192d9a7f591c9ea9b09fb0120b189038f5f5292f3eeebe9652427f4467d49392d34c825e992287fb005c63307fe980db860356e33e77d239be703326c0c3bfcdaa8a5c16d6b6824dd7227b3ab065d293b7798520cb41382d44415f195b83aae92601784fdd3c7a84797a8223d2a27b95fc716d89813fafe315649c95ec9b9b6e955fa1aad78dd15d34e0c01ae63ebdf67fdab1e3ec8b9558599915e31c0f49d1fc1d4d2d9c2771f3fa4588d939ed49be1d0f652d7f2cd288a704bdf7230ba604f3f225ec051b56f3806c0dc029039a727d581c148beffe323213cf54149b4d2d03938a11f33d59280d3efc9a6b07f948cdc18cb7f1254288001b9b8a31de3fb37711dd3f8af443dda11b8a9d67b4c9614a7334499efdef0bcea61759135e47c23c20919f26000e0fb615d224c6e4c1fe72f07fb441ffbfc1ea721d9534e360ed1ab28367fa111903a911d416639eab0876ae0489c1e5c985eee080ed64e9ec8b5f251b9820ffc1504d421a828586c6bbdabc95dc1db285e87a29eed11cb2cda9f95d8d02c33788dbef65758afc7efd960a4d1aa9ec916024f55fd9e9193e375b6f72cdc68567355029a474c6f8cf18c0a0f6928029ee23d309637e81c71d19cb99c897ca6b60c03a00ec734845733f4f876b2a1d2466eb261c7be3c71e5c58140bea69413d2089d2d9d153ac543cb621d1ada95f770148641150977d2818b88fda6280f00f801c0141f80cf9c880e60e61c77d9453777d39380244f1c53d74e1c0bed4b71ae452faf0235b976fa0641af1426f0e68b7aa6d151ca60d81904257a057d913bc2bdcb86583e79499ac765465ecd82940faff1c42b376eb0a2e41c44adb66dbe96bd92fb118ac819f74c8fd0503857a55183bc91fdc56b1853c50a966874273144961c70cfbcebb38563dac17a7a33391112f5d1d0d91ac40d76919f0961a85f97de2a40d3224904e624fb000a0bcbd3383a46bba76b36bddca118f83997e7f4998390e014ae7e3e54aa791daa074451380d731d205cd88ccc3b5d8a80c6e28d4326f623e3c76b1df90ce0703edbf1ae2ac0daa8654916dc42503ef4f1060e6fb8750cbc674a681f8bb4c7461cb9e67d6b32325a038786c655ce448b4e0370bde04b0122012687dc49e6035b58709b0524dbad9e34d81b91f337e10629f981d3adfc1d52574a3ee59860daa8b94dd41a123d7d5e13e3287a163a9e10844ca24897b8973785dd79c0f0b3ecb5573ced6c301e21346fb6dce7dfd1fa2bbb8051d1b0d274ea570b833d8e0591fac3192349f762d952934369673518c5d3ae3d6e46c5ef70c3801b16ef720115a7caa8855c5b0efd190d32e5400f343be0e5d31aaf0f80e138154526aa43ce27e8f6db9737831ad10386964d800f8f4f48b212e94800c162c8de73834f6bc207389989bcb35253a2e0d55c693751f3f907983963aa83bdf4d70df34c32cbab2ddc5e67bb990d76b304aaf9ea3083dcca081007bf29df33a1cd582446e110687fc8d2faeb7f8300540743f5b922e541fa813bcdeb63485352ebcbcb2739a5d63f7876bd6ed00048a21bd40c6ca36ea914373a34174b56dda049290d65129d91621d6a77836220a17dfd5f6cc7b3841f75ea07cee4bd87ed1cc1edb9495e01226354d8e7ffbffc93e6f9173e9f344e168313bd02597ef1ed4781e8cfeb602828ab2d5f98acfde48c0ba10cc6d2a0266349399584552ca18734478bd42aae0921a83d6a2d8030b17c14c43bf46c9e747aa54fe2ee3c54c0c1c3df8c0cfa37978359976f8071ab96e1dae3b1d5a7bf40f900496b73cf7d6806dc45b3d2ff01798192672401fc7f6e7dd34a92a05fffc98ffd6c2102ea1d1173be12161468b96b59552c892f9b478556228622dd4fe7a242b69e2980ca90f43ea253955c786941b1d25ef96e470e6481bef67af3e1fded0396e587581001c8f70144a540d607d032cc3d701e539587d12f48adff222fdc93f9bcc275661ccef5573b41e62e3d53bfa97bd7667dc42237713fac52ab08d9c205e842ecb3646f412c072ddd83672a849b104935070f3d99113483ed1220b946a06462cc59f21013989fc09068b8c6abe27770135262c34473c5127cdab96fbe43d0dcec672f1173d12f5cc27b319ced6ddf14c18856c38380074040b97b6172fcd30cacf1590541338102e61b744ed2a3a0d9eba7d1dc0a9a0cc7c97e7f056371d484fea045a1cb5f4374b5b4840e301e96ecc22bf747c08d6d4e0bcb92c262c9ba43fcdddf315da1390ec11e3acc64dca00cdafc89118d388006ed08bab34f0590863095699e7a881ab9b98185085660c5694d1aa1c0cd8c638b1894f1ea2ce2c469dd6e4d087fb38e7bc37a25d0180e515bfb6267a2022dc26a97fce4cb181ed63ef460eb6c08c5ca58e1e11e2c3138eb8a053d0e0e82d193462a3d10ccb26a001e0a8b07b2ba89fe674c495fc8a232290164c594f89e8706df7b504005892cfcab9cdf48822ded8cbcdb9bf1d303fc2571b2b48a3641b75d405585fb5adb8c2d6d0963b27c7d9f05730a734b0081f552c3c776a068871891850bbbda47d66189140f141aca0ffdd1216ae217d7ec50a7bdfebf8ee3f2deaf182a28e2268bbe3ad5231af0f2956a23b2546bf55badb5111355f46da1c0441d9c56d7e51a7f89174890652077aef41cf0251c8321d05267f5864bbd71a33ef074af4d577ff4fa26a447becfda08cb4d58a0b87f338dad32c107618d4752e294219acefa0a88984bc0fb8a7813084253fe2913e9f56f22ebf5414e4a3096ac2226bea500428befac985a943afbd5c6d721447c8fca1fa67267b83fe40a8a349c5d3a66bd22ae195afcfa82619461ba5cc46904717997edde599819c78557037e6655ae874414dd9d870cfda15302de772dbcb39e274a3c7ba60df06fa92bcf63cc72542564ad17bcbebc04601a2fa9813f101a0816cc7d4860d27dfb1a83f10a25d321e1096b184c6641e48480c4159ed64fb13747aa83ae13f6bd5d4a702bf07a861f74e096ca59a8723b88b13330a53d2cdfa8cbe6692ed69d52719ec662d9726d1683f73fc86eac1d18e221ac52c0e423ebff7f3bb082c6044aaf46a5d4ba201e3c65a26c0e4289bba7d062140bfc557462ea4292d93b5e54234aa797dbd91bd58cd9e71d906b1eda55f5625b0870c36cc77be4f7fb98bd49beaa1a3bd589c11043526687e1cbffa11d0fce6276948117a1af79a17d775d14c8f5aa70243a33b4208f466eba008c954fa8b42bf030fca9b99d244fef5a2e30a0b5435ca8a80b9799e659b863a6ce1a333d494c56946b33788dc679d6931b40a24eb06fc519ce8d848844b7e5f834c4e279aa08a23ced63ee979b9f02f72f744734110a4904b337a62240edd3f8fbb3bce9af373221adddeededafd0b5e17fd9a29b0c8f2c6ae2e15cad0eea231023b3cd3cffa9a82da4a582996a98876f012b866759846d1ef46fd549b91e61b86b406a2ee5c28eb782d5f8aa790ff1ea7081b3be8c11f17042b449985ae0c41a21f29b354a06bccb5bf5aba78b216cc2141d4042c15442c5d52fdfdbb198018fe5b9708ef7488786c090247d7e3cbb09bac345fc5f482d69af8fa5c5e411262a128ec38d48e2aa007a589d9f2625556637abe98a1ea080e2837c612bc6a7bf6dfacb0b2a31600ffd9be05a866913ab869b91dfdcc533e5ee4fcec3376b2f9a21c2abd2ae1932d1edbf0716d4a1b36ff9848d799efbd4ebd5bbefc207a60eed5a8040a0bf1947160ea94cc4239665a0309f4aecdd49fe6d496d340829a7fe3b40f5d97fa3da34b7c1804f06e6e35105fb71026c972a8a434fdb74468cac14378e4fd26cb98b45990811295bd3d02230a123e8f5df0f8e2eb1ed818f0e44478389198696de852e2f7cc24cfc99f51743c8fbc15cbe0874aacb93e4aeee8219bc96aae19e32d11112b6bbe51a522a2d96d84d60bdad14d1034c9b28045c44f506a1f01cddbb5a866ead9f9331cbf1903cd732603cdab91a2cdc3f2ea6ca47bad6baa626d69dd2339ba1f34cf2ffc563227935024779e906653ed762d3c32002bb21c90467bcf53568471a01b298642debd96051a2ece7ff58cab23c00df7ba11d7a541da92d073c9ea3918c80918c97c20f40c2bee7d20295344285b28df2a43b5f32b9b41959b93966af081f8e855ce056939987e4cce18ad06b6c239e0c012cf815ef857da11671239742247297b653e98cc2390fd7bcb118fbef9f23ab0d96b707603b179da87dba500b09d011db02eac62e8ed172279dc6c188a0b958412fdfda4e3858fa170fc377f79939202ccdcb1cd4acee2389dc03f23a3c2b0366b514daf77984f5e7b0f10777159bf7a622258b449e912d93fdfbcf83c7f215461a0d2bc15a1e94046833698579294c8699f100bb18ee14721bfdacb441442f3400d48980cc9b946980bf118ff89fdc8e07a408248253ea5e86659db71f2a0a81a82d6eac70d2124671fffc3fbcca6a761e37af9646ed6e6bd71fac6b192f92a259f7bd7ffaccb4da95d098e0499c4d734bdf5596f13d33f349301795aa380ff0f8395e519756dfeaeb3432e731d3ac769f560294e4cfa48b43fff2af894c8bd017a037b60c7da4428edd9d106e98f3868d81906e8698c89f7b6df80ff6dcce7f46f8784038d97c698cf0a4eb3fe29d162d40996286ef4b18861db7446acd6b69b98d680c392aa1c9af697b791376d3c29d637a7094809f696186f8f529b096dfb0ca8f97e61ad82813a2c07873413ade7b8ff11f113d061af0bb896ba1771ecd7233adac6dd6a45c1ec218ed9ef7a8236def1a03dc4060b46e65aa6ae61c18b5d0618a918527ee6f39d45979a3ecdb59c8f5a7c0bdda1ebc7a1eab4e0793abb0232547c7a47227c12adcb43350fc4acbb4f41b36ebbb641641a35f3e3932f02f7a1572f574f0bc287379dd9ad00078e1249c0f1174daba398008d64dccb480e04bd20bcda8b0055a840b3b1ea48ae15a752c0c70f63576a1ea935dec979367902ff0eb0a5699585ec9470bba6f4b2d1dcf3828e0da8771667be237a5ad58047f7676eb5e7f406c107db24ea65b7892ca22d0043ba327e036c65114383d60b000491d09f5eed0e60107c1d3b4ffaff7f1739ae8324680427fa3cb0f9905d28367c93ab064e60496d6e434c74c40eb4aa932810f21dce468a8bc5dbed422b62a6fcb15775cf0ed15e46837faa11b09f0cf76e8aed9d251aede9965938f7e878ba5b595cde82c57807ca0cec04fec2fc3a2bdc41db0b64bfecb00475b56f2e0e3aafbc3ddc4c4409c676b24f1085c90b585321653801cd49f7ea0cb281cc49f86c0c37f048892a00d78bf7b38334b4ffb40806b2bb9c87dfcd8f893534db157af542577de837965617994f43e2c07d4e21ca38a69726979804da53dce09dec35dc547e01724be7d743901aa6303af641af499ae6777fd6865cb47174c45ed25d6c686979b510a7c672b5034acf0ed0c0981563b26a253bc5b297f402f3fbd4d8e3d65921135144b7292a818eab0fc648b212d843d290b11c848a972b2037e3b0e75204c8cf0c84ac7441c03006ee260538292601fb4a071a93f1776cc98039b27d9f90e03789040b1064a42d7b343e7f6406adb12998d15d941c3ca7761ad655cb40a0b7f8105a96a034d8807ac386d6bd40dc3ead929a44e6897ab2749ba20ddec86229a4a890cb525472c982de68520a234a5394cf64bb238e579198620e2845b21a3be2a941d1822238252d919c87e12bb5be11cc6bb6889ace7cdcd311147377e2c9f0c7d8e23457a05c1cfdc0577c7eb7ef46f316fdc1fe44293f2ab27595401187b7ce3279a28c70bc5adc903cf5c2a58845dbfd86ff806ff55517403c6f37762504eb361201f4e70516004aa84228a0113f6f9f0614abf9457bfd9b034965ead61a08e1a1a72bb3f0f3cae9283db0201c845b10fe30f3ec4a8e98a08b7c7710674803e83f3f2472391f6452763073b31e0a24a51c2707a4f9221b077cb50922a87db6fde8ff6afba116e7d0b3c2b77d4d2b07c084ed596ea43af9283a3640b5b15924794687c8ff9edc8c7208f1ce3b7e59b7901fca49f7238fce6b24a19ecc0f17b02feda80b15f7424d13da1c91a3f2bfc7016fa4b3b948f7d2d591cc0367d545c0d3c8103b89c35ff1bf93df6d7e285be22f0a143f798037b75e8dde57c4d244d77ca81b411736e72f2a9fa50ceb527527c8d7627dcbbb00be456bc3d629d510f37081e28aa8f9c1703381d86b1666916c55b4331e679f19c8df50fb5244061bf36cb50e027d45755372338a6fa7ce1ab13f467f7513fe562fd139e6f695d225ea275e845ed645e3744bd723cbe99cc822d6348a00b69171ec41a6432153412fd00f082d9ef609aa0c9233bab23f17b9fb318a079f31a85488b3159f9dbc50edaa79a800cae46bc0a69f933e3103b4781d112f1eb2514f413fb420d4afa17bd2b9432ca7a8e582b0c3cf63f6a96af7097385890b4bb08810001598ba042505f8e79e0ec9184c611fd6fe0959824cb2507d4e3a951685b3124202d397dd2cdaa1625a85542efe6120f8c3f8ace201e23daeece762cd48b2e51318861ca18e2213939e63e3f45a460b0b4df1551236b8f1a6fb9647075c45e194d3d57de9cca34553b80a07f1abc6e33fcd9f51db3fe3c3475843a36c5d881ce649c57f60b5f710f95d748470bbed0a875016837be0ea425fc0a4f9cc84fae5acf933b6abb447c39fba315cb1040b9ac729420dfca75b20557737c5248e18a500188c6b438866f0b98fe53400634ce03b9178bdeb8fe190ea3728ef0c7d2d4a64f28b9fff41d01d6c117ee487fda9348422e3e5d11ac0c7952bea4d8d203092e1359c06439d06d50fb55d9376937ef433296e5bfd4467e75b47b6fbd8190de88de3b862b24394dd1224eda4dd30711521a89c4290853471a0a36e552fdad50ec7184f70370b241c44dd611915dabc9ab3f90faba354897c8c70583efc9b66ffcd810c7ad5df977cabae4483fb84d18995d87549bc8142db13d40d521b8f7ba9826eef0d29926457dcf4dfb75ab68ae532a9800305f875235806e9da7d9b32c15b3b8a00b866473f22ff21ad06d10f18b5e2820e120598d54cc1b9125ce0e9bb7f5be882cab7a6657863cdc79a4284b9d2ed4d2da19d246318aa5df05d8815b60333f6a9c397ef2eeeb1ddc4e051574c211e3f20eae661929fb4a8239e81b7846580beaa3f98038e38f9fb56d68e08e3a11bf3d9fe904881a2a01914c43999409178a6b923a38e6cb2d368d365f7a05ecd6e0de8a84882af6a866dd68588fe82639c4aa367d764a70c18d49ebea6f75e3cd416915a7f217c70227a01606f87bfb64fe4f9f8b39f11db0f6aa371f72c5deeae805ba627362aee59d94b3e10620dd961b64ed430a6fdddf213b8847622bc881b05711661282147052f62fb411b8956fa5839c51fb3a0358153112dd55f4b22fa1a44a3ba7059c78177a84976eabd853184c6e4466170441ad8e4efc2e07b552cf52fda262cd2bb1b2cb7b27d19ef07e3fc69db774210da6fb13826c409d89e817d2bbc917ff3bf23325eda6608d3fe41734b10ebcbf9f5d921012bcc3e3ef12a546e3631e5a4e279554be05080bb03d9e9c5c83bf3b4828e7b70b12ce6a35c857c68dbb152cd6dbb86665a55bd2f0b686344df10838a6a13d0086f801647aa98a0ae87f10da2fd8e5b829c91d8645287a0307177fc93cdd3511a07de95c6c552517d49af02f61f51f0326a63240d3af901cc8ff01ad043e5748706bc3a422c2d54406ed27ea996018cc8b26d8e669fca70843b255ba2bdc9c23b5b909d1080085992c1b8017d60aaaf13d57ea1d8489903c01b177e3a94d00a59ecbd0b945afe7e1ae9544832051b46dab2869a238af6f119818e2e421516bfe6ff632666f89eaa3767f72c7cd07016d15ca86bb3d53b0ab5e35a9c91bfc5d35538ac67353f0f8f69527775cf2c7b29537ad0d83e0109d7537f3ffad3d08b86c67c6f80486ffa24a03952adcd4ed3e6ad788732a046f11e39648146fee3e064d8769247c5e10b219267e85432289dcaa379c3591758255396c0acaf2898cbbe191a35dddc0a92bf343b7a1e801784ec51125e33f50cc03f09688a892e4118dcc0bcb3b96c95a46c87da4a59254724887fc9df63dec6e7ab02182a96b018e559c069555f0d2471ff3dc28070a80d98eac0e35c960e85cb86a1fd1605ed4b4f720726adb0cfe5f511846ac4fc5cdcfb1970806903440787f74a2cb7f1d910810407062dcd3a38b81e57f0570c1d5c99de5d87887163019916f44fe047218b33d100a5d0fff44308be39d54317bc16ba68d2ac682aa8e049f8b2b3f7af6b5266c50a6ebbeb722568637ce9ea5f3786e0a3fec9380638a67f23e3242a06e6aac7d15df918477737c7cf667bae45b8c4a94113e3a0f4137ae64309f94801cd80f0e4b6454510b8501822e4e326c7e760f2544646c19fe109adeccec1f154cb9daae279cc9d2f24b25cf8f4c3b294e9562975920cf1aa6fa59b21bb2ae897294276c7a057e664d36c63fb93792ba4c3aa8673374a09fa3bc6c3faa36b066d449cbac4e552bd1f75130a8f863d803f9a9b0090c38c4f50881fa42623e3f274ea7867f11e34b46489193cbb2497e0d607a4165ef9c5b9407e4530d7201af60989efb1ec278a0e2bfc324687030673978606dffdf59d5c19e2cbc917110d614bbc0eade6ebd468486bf6aad52bc8446f72e24a601e62572cb571305d947dab0eaec75d44a3c4e60cb52a92f9248ffc9ed5f4c3abb1e01791be32686ec0f83376a8f1ff9277cab7c84439a84bf4955048125fc5072fa4e6e0e26508f299057977ee6beb1ac5439ac71eed0ff5518919df570d44e0d3736165789ef329be936aab2ed133d788102b9229850aab0fc5bb98c3fcee0832c5236ebf388290279e3ac7ebce98b23a88be77c6b12f248cdf4bad82b9512e9377f0f8162f89e269a352ac225c5b78ee37d4b61163de9bfe16d542a01b87f7172402e9e27fa3fac0f57bff7b99a8c4e6f0c9f8bc0964aa6c55137f6f0a3a5ff372a875a5c08571614847509048803bb734cd43f77d155a1f0e39e70f5579cf064b1a070f4b1522734c24e2fd2cf9976b47a8981b57aaa90ddc7b091f9148efdecf13596136f8ee6df56fa30224639fd58f163165a418603304f3a3c823dcccfefe7817f91050c84da2f606b122581785954184dfbf386715ef639ba1035b68e73278ce01afc03f9765cbaf51739e0eac65bda5420605f64fdb503b5eae5d367a8d62834baf9b706768dc74c49af8eb89b8fae21ac8b46a48aa986f828ae91e2534bdb79bef3b5931f764235234e7f48ee051323608759249171f7bad7991a8d59ad7b2696e1abbc8fb06d57bf051ca778c2c7823f3f3ad9be403f6dcc8d28a854fe0e3d9c83c0dab04a0400f844deb3ed08dcaca31104b62dd71824b0f9e2edf6b3b3106ed9c479bae95e1059b0dea9f687025feb04b223d4c26f12db7b97245c2e9b9836478df41051b6f5a01176db25b5749a738daad44e82f70560c3cd7aec98f6ff5862e339448bd737460651c9e78e486c13f34f92cacc4c8f220f0ef741772040e80981deec5aa05ec113e7ab339428f925a4a915005bb34ffad7e3aac4f6e3a4068df091b896f34dafdef399cf5a621a9830e8777d038589dc1053bcb5e5a25b3bd59ea6eb8b2fce6040205dd5659c5493e82f1c2171967eaaff559eaaba6a9fa0c0c18447418e5b7a08adcbf6a8170b4336cc00a0461ee750367042edaa3f7e6d71253b0f334153d977d45c321558f222e0ddfb58210f9304904884d234f9440081351775f7664c11a031f10266acf0706f64f591fc91ec96cc2738918875455c91bcd2a7195a3722f10424b82626880e1f7bbd90a54dc9a41212dcbb1bcf14671ce029a89ca150bfeffd032c0b2427446d6ee6018287784da9887804e5c87d8512935af248ef1cc6c84008f1449e6af8e49208f12d031328abc5187445ec01a735abdb28c1f6e3fc12b20ec8a54a4cde5d881833c6b2371216eb94712a8cbc8390458d839d54891af1704d3763d24ae85cbe0483e70470601ead1e5580a8f63168e4919eb82a42413016e48f9c2a0621a224aea93dde434a49b9abd28eb2ee7622ec35fcda7d338c1a99bef4a5a8177c1336000bc70935b7a121fd2a3a501ae5ebda2bd039ec61ee829bc839354f775ee0dbe2ad9d3601b55a506df1f77ace925c66e40e4072001308774ad8ab261c5bf4867db1a22dfa68082aa460a1df64b9d68fd2d026192c8949c6de69b49fd749c9bab50df65a661d60e3a01878a3842ca8e8e6c66788d917ab182f8eb95f3fb951b5c0fbcc5696b684a3acc4fdb962ca7f994dd0d9226f2028812cecface0a6690a93361282a167eaee0af4a7a325db6ec45ecac9fa14560522d5c925b084199b40450cba8debdf335bfa9e82d2369132aecd504b4e5ae85a23c5c4390c2561941044b3c9207549813687b1aefc436430dc27ba2824aa50b2a12eb05fda64be0ac9467d7b63fdb8ccc590fbc68b75c531fd5e938a5df17c602ebff3697520023362e542406a9aa8283c46ab6686e0c35004ec6fd65508f4a4f6064a1f8a04057e3170c05735543d6314c9385283c2ff01368f760eb324e2b11247203f135048b82c4b0786af49c56b3a4841b80e917b79bdd739408f81480bd3538f89369f301d0681157a7b5c697bf3d03c50e89167f9fcfc1dbe6ed6bbef1cca16d249d26f7b6d8a8f00cff1f56627ef9c9ccd38b132ecd171f1285be9d5c15b858f0422224f01b112dd8682f214e7fe2ea64e808e3dd1cdec9d6826cf60d716086906798274797816b0d6aa49119560403e34a3b019a2f580cfbe1d8c79f4d48b9b090463674a735d480f9e02e75d25042737e0ade17784af89fa5fee7321cd84b3683a39cc8d9d2b33a497b4bbcade9630c594cb147c41ecbb2e82a7134747a7222f6ae2fea0c33bd52ca51faa8cef40f6963ce1c100b52ecc5167f342d98b30f089f92102572a0e3154e2880e6f7676991171f68e2a961751713f5e95d2ad1b4acefc009944f8ddce3319f04034af5cb64815c8ee7060f18e87e9d0f84d6da088a198ae8c4c4e010022dc409468d4447fa7c041473cac015f3b6702e436d17405179e6b5e09c989772006a1b2baf2929625a8c47b7b68e419e0400a206d903af9eb60c9d0e48db11259455eaaaacba40232e8472bc58ff3037369a1266f2110eed95a16c0b4477aa82e989670d3170308b9485502619a38f711aebd71a137b19ada17440011b77336e2eec9442b41aa8f565581a68ab10663bc6d4c2da5635d8b1a4a56e1a00f348c5a56da02dc1fc44978c228d49dfced83d6dbccf4cfd0c38d3712e5d2fcc294c14aca97709c5dab64757f7d0ef1fc7ef12aefc575ddc5ed076a0e0266e2466d3bf1bc9bd95c4b32c6ad1945c81e1329eb7f8c453136d72d2a7b116b0add8087c4715f5b51c3dd11d07da8bffc6a87c16aa085761dafb2fa5bd59a94034c74e2d7b82cee0e4ca84eecdc8eb38a25b4b13451269910632e208fb56199a968b489cdc0d85451af341114a1e97de79a1124a026ff9955c6fb029215be571478b7eeb54eb1aec804c56839529d67518d446155c08a20814f95216fa1c5b18aa1b4a846538b1a14b0b4ead61947399454d249e8f945b04c5ecc25359d0c888505802190c828b3b94281362d5943cb40ccdf5104dccbf0ec61ea95eee89906277b03bbb28f57cebde66c758eb601fc4eb4c8e5816c3503ea7c50b856c56738aa56ae81fe3156dc5ccf68a4fbe7a0edd07abef69b254a6a50a9d34e123d0d4a90d0d849f735c33462cc49c378f40ded8358f4eb5cbb3a522e08588a6ffebc51ac48849a901d4467cc59ad69e598f29ec6eb69633c248572bd833e829e4cb02054973140a8e7dab720feda238bea182a5f210c2906f5bd6da18c7db337ae3a87ef1f53ba80135e0095c3483a525f5cdc9aa6efcdc3bb3fc6b10ca73140302825a55ac4c3a7082a2d68ccc54279036ff711adbb1dc5dd1402e86e03142bbd25e12ae91824766a851e08958a68e5852e818add56bc87815984331e98f41b364c45840ddbb5c16b4c19aa43ba08c458854a9a5034653e7e0d2c4d1339864f80e432aaa27423581911ce00d620b8ba89e6b391d7b9606e09bb74976746720f3db7e24a3b48512d88bda4f80e222431c70eb021459080622255d9f35fe6f1322a05739d66a9845121a14b850b5050bc0b6480a0b75088963bf5f80bc3acc2ae1038f9851bab4132e8ff2eea8cf45c39302d0c2d137861dbb5692b8e1d1fff7f5262c831b0769f96597a9ae0302c6b98b5b29f14305add628ff447a101a2ee3f4a55966f8c8eb3f546eb294f7b6acfd4d638e129ac551e7bb7d01bf5a63be7d10c68f4060d594600b3232387e6d426108c0039e3ec064f6b71e21743abbbb06e77e491257e6f6fa59c80a9dfb3ff87377b585aa04a758e76f7765727b13e23b16c1e398005f8ce53a0cf11ba4e597ce99d57cf7df7af9cb40e28fc13711c180d101c51965cd98b3a17176a86176306a4b828a841a93c86fcd3fcc52e32fa9f0c43f275dca34614f27c4350e2efc05b3504268c7703c6a69e516d3be040c06c0e71c865a7592f28379fcb299c93e2f7b3c0b97bd87fa881c3d23461d7fa6feafa0c4416e342efc0764e66954e2fb774bd19da1add7affc60c6af1ce62a0f8997d6c90aa116723baa9b668d387b7e067a00cf417db7d76f203ac4e494688e94e0f5f821198d23a0ce1530406a8afaf796e08954ed0320cc8592ce32bc32c5f0709da6f69f531276488a11ad8407bd90db3747e46599e51595229c2554842cef61fdc056a87521886b4975e806694327c906ac8e97a7e84cc93efdfc8da7280b9d4ec1239176c3c3a92f85631da95b87ee10b912b8297c38e2338500da02ec95c0e056e30500eb04f16d88586dac579f0d59b2e849b348843bb63d72b9c736d29401ca2ae575c5a72e4e5f2dff03bb01c6424826420e81fed6577a9794289ac81ba5bdf7c4801697622179e418b3471aa16d2bff14f24238dbdc53e8ea91a94d64f2c61a602b825a0d99a93519b3d7eb957ca048d96178594613b43273f0a72e4d868d72403f244583841f493fcd75353bb7bc43ca8b31e63504cbb3dd6bb8785b421a3eb90ff698ee0e8545b963a2ea3a8123b73fbb4a50a6c1632062a49a1914d3533763432d40c7809a0bd50c4ba9b6eb4705ba7d6340a07c9ed4c3d6edd01b91d6b391698b397200e8239d9ad0102f145d0e4232317af9ff4e690effc0f430cc8af0e3a3030c433381df4d4cbb69eaea4180b713166bc41e28e12e034794b1ee8094900cd521bf7106caa139cafcda10cb6e1d6b75c72e9d562263e8c45e9d94ef500e08e6337dbc08d777550f25323d86980201810911329e8619c4090fc26fe49e3d709817fbff6e861cd1c0152a4031be5f99ac50d2a58c41b49802602225bd3d09d2f2fd52d923ce94de419647cb0f1feed47b230a6f1400c9c27fe4f929b72ac37ea2de39ecbb70aae78f20ba126c3a6edf2db819e3b741a1e009e19c797b406c13105553ab61f6d35594a473e2ccdf7413094a5511f38caf86ad7c82043da969063faa55a13c9643e9abe48e12c1545630a04fe5b88252be90b7dde27b14dd4b054c0950fb707e370e80d945be407c0470479ce52566283a9fd5702b947a84e47b25aa07c994e28bb25861e44197d240dcf33cc5c40e04006f099e3628e6abad2bbd0ae4bd8a05657e77eb9cc1500ac16716b18bd21f34e9a990f713a5b96220035f5c1ac9d90cbe01dac83185994c7d61999e5811a7931b5d3710ee228fc305d9eb0565230bc3044886d3b585f6de06d18300a477ef7cd8bf59edc2fe4a984823383029e4aea16283e54f2a90fb3daf7f1124976a116dd6930ef01cde22cd641b03ebda63fa3a60013bbf5ac1b63cb8d8706d78bed5bac098b7bc49eff62dd9cf056aa3d802f896363674f619cfb6e818e838a62104891d6e9bf9c3b8df6d3fe806662a88c4167fb39e24b387467c15fa27bcbee3e420641a2dd39d3fa6110dfb623e0bac03e07627027f7aa437a5c2c2668ebeb7b6b16baf9686609ee5b372119c7c4f438c6da2865ddd4f124f59c09ccd7a4aca6641b5b1e65d06db24b3920f9bd1ae4ca354d401cf53f307c224809a2c16d4a9511682fff531467ca06161bbb9d6da1c039988c12864468de5b56d7d74dec08413af3ef96d521ad8c4ceb0cf5ca0ecdce7aef1962826af0b9cca40d0a3fcdae88dea402346592735b25fef7cfa19baf0d8067fb96c43034108a4743ede6f504797f0ced9bf9a34032ba06d575422b88aa39ada3e89596097133b74f9f21ec8dcc4c676f4fea6adcebe9ead79d4782e8d3c173560cf1775968bc8349f7830bee868ed58645a13367019958d23b89eb6523b4563cd687019087e090bcc703601788d6e62252fe5c119f12d46de285d5d3af808d6b2380e3421197df1386c1037a053c38acf0a998279afd1d3449a76a069a33644da63ab179b23e71f897758d92a8473cf2ac8f73d7e42eb06f758dd0058c5a0f6620afee1cc4200d058e5c88ad8297d5fb7ad1be0ffa7170a76004f0dd1c502f4a697ff84c9a4f9056f5d01f4220557b990d0b8c65069e502e3c5e2788fffb0b869f92d1d25da2adfadc02e178038dac7cdee8f2fb0691cf1bfd64cb4a4cec94417da8f0c3bd7fa66a8c51ff1e4a4c57d3698ee0bdfc7c0cbdf867c558c8a0d71fa3ae036e4a9430a78fd63b884cef7a753c2e806c7405ad0347a657cf15e041dedd0b3f4e38519470e09532bd472eba7a152eab8bcfc2bbf317fa7eb4a85c67dab0e03475ef5fd92bff2b863379a5897a5bbfa01ee48a50be39efbe84e20020b953f3a0e8ab90a6f803150ac9a6fee6015a27a7604380c2857480757773b1b1babf4dc7375a9b36a36aebb48a76afe61e6c50ea0dc3bdd6fd86f5fecd18b03ef68977752155ece005b22ad7893701918a59bf1818d3ddf989b9b079deb2e3b9cfa8f10a8f7246c84e4c5528f7f80b30b0c7eca9f70003a3132438b57f10e786379d8543f036af3f92ddf98623ab84d663dd06c50e4dc122ed39b0ef81e680be7d5081cc9f9fc9a581cf3542ebfe92608ca45972a09b42170af0f04137d19add19f30e08c5e9e2cef4cc1b504899fab2749e3240697118e053bad91546ddd4739cf02934ddb0708f9bc8a4494b1bffb0f0aa147d01281a8d9a38bb6997b5477ec568eb83ceb5a0c17153b0e4aa2b0c7032056e9e9cb52d905da5ea67cb1b5e5f8629db8d30edcca5076cd48a0390d31f4af78ef85e7725400bb359dfa0340396425a03357b55b7cb121a743df4c5b42a9036cf567fcd391d15a2511d60a28b3ffabbf01c29459f54f14114d7bcf68abc12848d03eacc9a8c51205e91690e89fb19a1efc7537a896e8c779816a73b476032f34ed5146e778de47e6522ed6c387a9cdb7e1337017a63bba3cbb891e9efffcefeb7c629e1fd232543304a83a2ad8d3649125ada44ca94a40c93087008cb0856ae2928660a0a2f54416a27cb52a99475ed64d9ff726df6ccd4cad36efd2cfbba23571c6e77a676e0ade0a826a0999a3d966559d6fca92734bbb3279fdc26660e51b046bf2fc9e7635fd2973453b3a76b509065eba7cc33c996b3593bd90debb3853d497a519745db542a346a7e9122468c1c39e24832126bfe7892067fba24ec45ee2b4f72a33cdff21b535e5eabb8ea3cb794a7833ecd2e2d0e9a7f3e96ea1a191792245de3f7e4a3112fbc56d72acacc4aa4c1ba4583d3f3d51581afb28575d42275cbb22cab263fe99692b223d7a7d7dff18de7705a3dd7937ba227d9d3ce5a9c3d3dc1619665d9955deb4faec95469bd28f49e4e7f72723a9dfce92d9b733aa9d2e2a8d9b71024d27d49956254128e9aadfe94984d6e13337f445470f839cad76bd5e0f6e319b16612bd518bd4a20ec548b6beced057d96dd422b816659eb35b67dd22cf5a94e79fe49c684fdf2f755f852a38b4ac9bd1d72ccbb2db532464d656ae7dccf5c4feb4394bf82a739fc2fdc9d6853bf59fabd426afd59584f964f34a9267aa7688516a6df8774f2d0e5f95c057b9337dbd269514ed94a2f2b55e5eaa6b52de5b54fef4d4e4599ee270e52ddc25615fe9a0bfbd67efd4043267f4666f7fa326147bfef4a2a0843b8072385ed9deadbbb27df6d69fac6c78cb41f6f44fc2ec4ba889f7d1e630798a7598fc86759c9e2ee12b0be3797afb271c5b58f05c4949794fa92959469d6e5e3f7b9ae29ed1af9b53f7525de3a969253169269a3dbda6474179f7554e49c1214fcae5a238c1a73fb928bf5d93d3cd81b799de7e0a8e2647c9fea6a9cac9abf80ae5b337fdb661943765dad7faf451fef42727bf6d29afc24591f227970be2f92aa7e09393373dca8d79bbe1c997feb4fdf6284b58aa7dfdfadb67d96f77cb8197f1987c76971840aed9adf54dc093b7cf6ea537dc0194038fbeb436b63fd96ecca690fef727377462cb8117aa602887f6295ec257ab6cf2d6c47463bef17a35a26cbf7443150ced00caf6bba4d97598afb49f1687498e66af17bdc1d370287d4790708750765cb3f94d066f05877ff6d91c6a70166970bef6376d556b565187f88d6ba11be5f05a0dc9f5ce9ff9e3365f92a3e66398e79d4e455d93fd1c81afdca86ba4cc5ee4365796b3ec2f9b936136013cd9c240b0c7ac13bec29162058765026a703e4faebed53724257549350f5e6cd0d4a3c1f9d7ed4a94e7b56a70fe4d7f49799ab6c8f3e77f495f12934fd7b8ff7c1310fd942acf9f3c7d8bae995813a07f5eabd9f85a396afe1cae158a8913cde3ce001f424d2deb72b72c27b27fc8d357ca8fd66f77aa6734e233b6f77429638cddcf3524cf6be8a24215790ac9b36e3f332379fe76bdc825d6b2cf328a65d8a5283ee4d0d9a0175d435c0941b3ca9827aeebbabebbb2ebeaacebf234ab7479da755d57e96a5ec4ba46ebef702873f79af6a5cf6e38a7f7737a8fbd4ac97b314fc4a4629e28c999f3a741e751ba1368061e7d5fc51af35ad99174cdf4bee4fd881f556dce8b727666574396bf7917b38ba3d0673f87e58a43e7226b31aa189f9827628cf1e91af9968c73065e8c8fb4d3931a1222a39292ebc2a1ed2e776d8e9aaf9292dbaf852091d735db3b86bd79ad2dbd94a5cf4a1e731bee4b4abe9e4afe2ae150e6122d97b8bd51f2d697dc98b192eb47eedb13deecdfae8c1e9048460ac50739e38f4a422591416dce854ab26c8ec41adc9ef064a4429e19edac6e3de17aeb95a03f2f6cc5970175d40d195f5afd37a87b37e6c4ba18b9c8d1df8bb0174599ca064f3a3179bafd089c1ee6100c099e3bfd8e324d4303aabc7350789262349128295769ede05bb672f0426c7ab8c4fcfeebcae08af1a131a9981e9ac5f85c988b62a676324dc3e14e76b38cc63c11f304969a73a8f125347d4572bf945f5196b367f678a906b72db5a552d24b7929bac200edfd95c81efb06449c1e1968be924186619e2ced0d297bdee876cca737ed8d39291739f4525cd81b34d39503649efcd6f3704bf0362356e4a8458b726583e7a5b694cfe6c9d4960a92e5f4d952a6548e3f38e1726667384a92c12db210ca01c8110b2f20b98672f69675639557865e6f98fc4625491d4c786e19a928f14edb9c7e69375383b14390486e1c5eef8f3d8761dc67ef6138dc992a5c9025bca8db30967986fd86c32d7bbf5c145ec5fed3de0879b2fc0bebd0f0957db833257dc7b08e0b235133c5579d960f6a7ca99dc417911be9801aac4335d6a13a54871a9446bc2971542ea2dc4f1ba703ea9a8ece062fec803aa006bb0e35d8f4ad3ae4471d909c1fd6a1b0039a3cb27c2c0c5ee8477528f60e1e1c29df537e07954aa552a9542a954aa552a9542a954aa552a9542a954aa552a9542a954aa52222a40624cae1cecc345cc28b9af6cf9e48e6a494ce961dfdfb7f4ed1852bf2cd118b2e04e5a2a03a844a722c23d5a094510613e236da37b5e894d193c3f914bb20912c3fcb249e5e7415e59e6f499c45ee8be812720dc96d24439ede812395734e0a042fbc72ff55a46b28166bc4ad0ee5f8c3b4eca0fae28b2fbef8e28b2fbef0e163c3c176031f3e7cf8d8543e7c385266871cb1d0021ff2a9db020ea40ca828ca118b290090231654fcc8dd0f62aca1e34dd2405484052251209a624812729b08c9ddf9c797f0242877d670a7e34d86dca66298e79d4effe08caf45524a29a5dc7edcdd7d2372543f8679dee9f47fa51cd58f619e773afd83608ad2d080e0ffe9e459218eeab78e1cd58f619e773afd83200d0d08febb50360382ffa793e771465eac21f3f1db8757bfca5c2dfc9b9e7163ae4518e679a7d33f086298e79d4eff2088619e773afdd3d06098e79d4eff2048430382ffa793e70dc130cf3b9dfe41b04d686840f0ff74f2bc21210cf3bcd3e91fc764a5e36a3fe3ca2c738104e06b500daa4135a806d5a05ad4d5a2ae1675b5a8ab45dd873479fbd97eb69fed67fbd9886c6adb88b68d68db88b68d68db88b68da8942aa54aa952aa942aa572bf15628f686840f0ff74f23c7b648fec913db247f628f773429c1127c40971429c502effe2a2f068db1c17b65d13d59e6c307f7714413a1fb54f8e8e2e31442ceb84ba209d501704e32242e79cb81b9a5a180952ba8884627c378598d7edd3dd7376b523471179f6d715020a0aa225e921fae9951666c9d3749f74ce49a997271095968ccefdcc18e3ac3c725755832559e5fa699b4bc8512d24547db4245a5283ddfd24e5feaec70f8faeb15ee2b7309b2f1fcbb2aca022933b6271ab243823475555835d7f6a10cf3a62f9b21fe5adfa382a2897b295d436b157a9231f4ffa4901e5e933311785e742399c4159f865dd2e9bb2f4bc662cded492d78c1817bb20ffe250e34b587f727b110e2b53e1cdc9c52778f27dc3b08fd6c7182351945b8f14be3dbdd5e8e461f0c28b2889688bea466e23571876250e8ab637659ed22717aaa0fe383179dc2f2a88106128e2f661c42a92a5a745165a0cd16228d31cb1d02209b94f5868d1239fba47bd11b36c9f31c618236663bc2eff3192524a0c2b5a83bb7b967590114a29d5b4951bea765dd755eb2acbb26cdb92bca8b5566be3907c6ad0da1c24f9d4a0b539f686951fafcc323e17b168c21016579043b7c51366f251b72364d69c19965dd99433a3d9cc3ccb3acb6476f2ccfa0c29cbb2ce32cf664633ebcab20c935916bda78c19473f43c3f4cc7d3ae6eeeed37d4eb7dca7bbbbfb749feeeeeeeeeeeed37dbabbbbbbbbbbbbbbbbbbfb749feeeeeeeeeeeeeeeeeed3dddddddddda7fb9c2edde7e6ee5a16a38cf7835aa7cfee6ed9b1636cea6048cd69a9d575f7e439aa09d773b42fdfe2585d66eb0011bfd069ffa9b44f6d1339f3b9cb7ec8f22f1f56252060842903119c29f225327d89bf39e4fe3e3988a0542ac561042525254748e0791e1c4ad0759d174c701cd74513d6da9509b66d7bc34eadd50d27d034ad0d28c8b2cc480a300c63830aaeeb5ac30a2ccb52030b68f4972d981998738763c0dd057d81eedc18750bc41a7e71968ef96ed999d92bf37580982706c1697157522cafbeb0cef3ba4b43a3655d7761340131c3b44a7fb339f337eb745a560242b0c0951d4b0008db4b0c4da704045c4220d6c08012d2080bc4a2933a9c8e94422d1649c0e22c6e2bc2db9eb34de4d4cf5e5afb12e81a0e87d6c26ae6b9f696d5a73aeacf97f5298e558593c2abdc56eb731647c51b67b1c9d19757b59c6c6e3ab52e2cd3e84f99b27d8283fcd1dce3b380c0513483a0c1ad47adf45a39d7aebed1793d90590d18593fe7534bb316a096b5128845b15eb106a675253687d2a9c4944994b4cfbac18820e2d34c35e8c768329927967f2929c983171b4c49d968d0d098984c6c3bf93beae42822a8a8d81810bc329f9cd82672fc2f947e016368e2aa64150210e44aafe7eadb25b3f52bf3579c3359d4f3a6476b72d6a33486659af5da8fd55e1fa698628a29a69842ca29629489b27d4e1a343402684b84e52fff3120685d268fe56404afa9bf1b6152e7a2568bce183bc6eeeeeedabbbdebeee983b67c4e896199cda1d7ec29fc793cda9dc49aee53fec3a03e1dc32e779fee337ee8eeefeed37dd218638c9647f7ebfac165d19e0b4be11f629645e7f7132519925772244a6284fc829e1c898cf8e4308621f7c3e488051980728e58837e7f357d36877f38be7c9313942c2b49c18387423fbe4fff10d36666441939d35d76ffbc54e2759cddaa9661735ed4a2ff2198c3cb1283f29dce534a122f3698a2725db8fbe0c50655562e0c0382390ac88a75596f519f385237ada1c665d383fd138f8361299c6a536bcc324f0db6a433f41c7fa2fabd5f767f4c4a0ec11cb32000700810d4366d5ef5416d03ab66790cc13b4c19c1d64324800f86837dfc0804c3fd85975d0cc84d5b4ea817477fd269f93545dd82b620c438639c34c619e39c963f11e38c71c68f779a4c1fcbc92dbfb01e1e4f3e28bdc7934daf4d4a29b1cbe6f1c0062396bebd4c3c7d4edffc069e7cff19e39cd865d199755ad46f10a4a17979910c700cf3bcd9a61c4acb12ddde701b32cac4247a6420036bdb9a091b36647b9c94e5468e0d4f5a1b36b08c8b3252664a8b0bac1a35d82f65e046d7df881104fb6d036244cd772ee65bd7d7b951cb2d81e6cbe6704bf02eb08d6037727db5aebf5a7ec7ec33dcf9eaaf7df5f45c78fa602f55d2b9686262a936cc57e2a2d3a22dbda7d369d1cbc2542a954aa5ba70fa72aa4c95a93255a6ca54992a53655a7fbf734bf0fa6fd89cb639ee96cd9973da1c4aa9cdb12ccbb2ae2db339d7755dd7856d9acdd9921c1d091182550ce36edc2839ca32cffa31779f4dbf7d76cfee9f3f674caadbbddbbbe5c45a5a43b811b34c92644b22936c495229214292080925d992c87c74244488949209d586ecc38dad850d073ebef0e1e38bed06b5084fe5c506674e3736e726a7a5d4b2bceb3235182f0cc32c3a2b8fcb6d0fedee1e7da6b01f47b951ac717d1399453557438ece861c5f0b03f6e336d3c7c7cad965c2098acd4b3fc37ede2676bc88f2ef33c46814511e7d1501e04faf11378aa0e5464c38914da71503a9d7a299d7a49765398e49f98da18931f3c6f8b8cf9823e24b6b1e068f885f1896615846314a2d47253d75cb08b5546059d79ceed28330efbca8f125442112e7572fbc95c5a30b2ff47a783dba1a377a278f062790855de1f164ba8223fb9a65d7cbea7b5e8f06279d3e6e19d0d5a4fa93e2114c1fa06b25bbbf7b0587fb5dc1e1e146850da8c1e9d66f5468707e8f06bbf0c2adc7d623ab18112fac4935a9c1d980c6a9431c8581c10bebd6a36b92d0700b92da7cf254e5f9932750d08f3ce756459e34dca88065357aa6150c3c1d9995759685313e98d62bf2fc5887e4f9ab06673de23a1cd7a38aa4c1b9f1f0c26bb56dd64df99bfe2ccb687db72a0e298fbbbbd3eb5fdd9f6617e5e44f9e883939a1965533cb7ab77edb7878ab2333439267a72c8bbeddc928f74cec48e59d0c8a1414a9143541d9c976b29d6c274bcdd44c4181a552a0f076b29dec04873b190e77322c954f7e9ba91dcf3b590a8a99da09342f555ebe2cface7ed7edf755d9523a87fab656fbbe4fd3b44e72a81bf26414f79db6f23d8d1c8d641a39d3d9ef6d0e21e44cf75cd771341aec2cf7dd985158101c52bdb55cb0e55b3ea5e563b4fc8b6f2d71c6d8f2dc8c1929315e66fcccd799193340f053c08f01fe4b6fe08df993dbd222e363622ef8dc3d99e166be193b33f3d2e6ccc4c43c17f31f0ebd98b7336ecc33356e1bccad733bb9a18489b9a0a6e11524b8d7fe06f73c5993893cd9ee74defec661ba987bfa93ee6f1abce1e79897d6868c8f89b9a7e7c2d357cefe0a876d74e6fe3319c9f26f12d03695a56be2902e8a64f9e189e6a70b3c780124a57ceeb330b00d974a7363c62a2ab77b706f7fb3f7bfa0aea1796bada579fc15df066a5036907d1a9a2bb3bdd25a6bb9fb616d87ca9599c602750d7ef9dd23462d6e8e928fbf6d0ef664d44ebfe1f094b5ff2e87c369afff7057541ec6ab7cc95d51f98853f241dc959494f7ee4aca479cd2772d259a5778fe700b40e60f7f4f83693468431a59fbafe5bf0fe37f38a4912df751fb2f94f19f4ccc832fed0d1ddbcf2c8375c0e050e6989769c13b1d46bcd319e6411c4e1a8375c0bccc6bdf1609192c849cd164e09dce3058c7f634bbcd41f38685903316471cd2c81fe6ba18197fd3d5dee88e1185b26f31f837fd7d1f6fc8c384e728639f461ad1bda591616070b8d3424823be0ec3e09027c37c77adb5d6be6573ec8d77d73ecc05431e6b6bbc8d4329f3ddd3c8c83c8daee95ee6a9cd91c14478d188cceda21072e60bbf17421af1c5cf6221fabbdda36eccd2dab03d120773577bef469cefded09efbba71f66a9bf76120de7337e6bddb38dd0b218d88b97bcd7ecc4b1a59c6ed98db40adc1c40d87335b1bb5e730d620f7f6f67f37768fffa6b98f3607675b603a1cf264fc2d1ff1bfbcb4393fbc44dd98bb161ad3e680bf5dd0be0cfb32f839ee51f665eccbb07fea1a8ba5cc5b9aefdeb20a90f1a8ff627ee63f1ccef80e7b5907f7dd73fff5db98a37b2ec7f6379cf98b18c7f6da6f58c3f16f9cbbdcf70db56f7904c4fcb6000ebf7c3030e18e1c16af686f7f5bd13e7e8743d3f08e6c9f0bb58fc1c5fc4d7737ec1e067351781ddee9978f3647cc6f5807eab9dfe90eef748ef90f4f8b04c681c29106ef7896f1dd73389cc17386cc77326f65c8bc95b11cf7d9cf6acffd2763bf530087b5ce7e9dfd9b3e9d6ac0b716775fbbeb7df7d407cffea941691bdc1ea442d4fe0b77e4fe1af335e6cac0116360aeb436220e7972fc4fe66130d620cc73b73f5e14cc479b4306c70661c06f790ec7066370047f03b7bf71193794f131be23a8813bddaf3df8dc7318d4f06fdb7f61c7cb7dec1a99e7601e068713e665647038612e18139fbba18c07e21bfcbe45dbf06f1beab7d7beac7d5f1c1173d2daf81ee66f3c83a18c0fe2616ee80417b6bc0cbcd3e0b7a070c8933799c1ede20fe2863bb9e581b8a10a72cbc7b8e18edcf25ed774d8d43611e70513e1fdf003666247de911967fcd2c6dc415d83712873dfef58584e2793c9f3b68d25474dbb39bee7c299ed8d7f5787fdf86f2d66e2c228e81cb14b07754d74d93013eef2f21ba883ee0ded3f5ed91ec6f615b3392d980817dfc29b2d7766af6bb4ff70288bf0ecbb19bc976cbf08affbb76fadfccce6744559e8a1808fe5b9ff6ecc38dcb1df7777892d5b018031d6e415f1a4fd5ebb2b1c46e27bfb1fdeec7317897e96152458debec53afa593e668ce5ba5083b1c3404c7ee59a1ab57259f1dfdb2eaa50a272bd3078dcd7592a6cb7791b16b6dbec73ff7552ae8cf0424ffe7b261e2b992493ac528eb48ffc56d922291d9645b228870df459c31f1d7f58bbe99386f2376e5140f3e964eda3e01d9a4f4e4cf08ac59ea951f2b33a78310ac9a22fbdf72156f27d38b42537dadfb40ca38066ad6ed77f1a8c3463d7a2f2a75f21abc8d28a56963f5eae222aa2e4afbc08937255d44639fec0b3d2d10a6051e3cbcd31058b369fdf6d1ceb7c3fcab87fcae9af1f1e983fdac48979f8046629b7f0238734d93fc63dd8c1e37f20da44199fc63bea002c353a36ac06040dfad3eb4570be025cc7743be4395fde2279fe014c3f3f66b210e5f973e295f931873b57a68f21413110175cdf3f25d0bf438a89a98540ff05020b8720f053c61a9447331b428d2f21cdceb6bd34d8d95bdf98272f767766be2e6bcb2eac02f1791ceec37f0173a4a1912316aa206f11b4d87bb7cdd1beb312b45887773b9b63adf6716ef102e15e9bf255302db33918267fe2fa37ed2f36c7c29f81a00df711ecbf5e7a382c05f616fb8d8bc2c3b4af98080fd3301c1836e1e96911d4b0c5312f7b7d6b3bf342c195dd9e4e79deb69840b3b996052b1ce5991cada88251aed22717b410946772e4c215aa5cad6db64d8f143b569ebfe3397e949809d9873ef421295b177602cfd64f8a5d58c63131c5b30f976c38987660862ffc000a247ca1072958e193051a644108d918321d5c008a226ba0820f55dc60880e57d861e8c7068415b12ccb4ab9f404e184ec13ab01128200c100098810f230861a2b8c1cd9b460c51d2e2d6401065bd080a3431f0186a2210cd9c10b48f880139e86c8e14b6f4f2aa1f2c8a20c4450e8c21678b0028ea7ae588316ae88c39b4e286bc829395ab1450f0a8623237421074eb04111d86083211cb9c1e2419fe029c2143d98c112cc4085902de0f81c828080c120658a286c47b082860b5b900391316871862852a2d0fedf35fe062bc6a0058d3f11910b552043f63f22126d5bdca17b88b2685012215a1d699fae69493b2557ed332351248a44447dbba741d92d8f1a949dea54fb744df7744dd8a92c91b42a098944d2fd53857b4164c513393c0dd9227eefa037eded4bcb6b0d7bf19e22b6d5c7a28d7fc5db3569da6fb8b57bf2b4379d347cc29e77caa1d1a0c561fcfae1b66dbfd5ad6edb562fd6a076a7a6691a113428391261010d9e673a5d9628237f665a90831ce210872347e000072fbce8a28bd5ea3232c1ca070f88dc20040d44de30ed511228daeaeeee9ffa82206830447323412b72f6063c582c5a0f53c8598e447a18031893e35b5af04c2550f1200965c0031c7c4081d36ec802d0c190109ab00514bee0049c6e03667dccb014f2e5075da3c5e8bcccc7949c34184545990d01249ef9b07a1f3d2f062548a552299c02bc7781082b921b320321c2b7182d9d629ccedf34e6e33612a78989f97c42b9df4728d6c8320124d6975b4273c6871f153ea158c3f337943fa12f099f12bea26f482ec0871f1191027cf86591fb13f205f984745ee64a9c5a146be87c7fe522d6f0bebf9a411a51c4a51d081c6ea97a94bb63e0baca9d51ed8c628d2c4bacafec16a5d3e771643eec90bce5b9338a353af7776a883580f8fe6e0dd28820bebf33328a0238e2c36f02f83cce111f7a3db9bdce48d7c4f8fece28d690b981b8415c4dcec88f7173ee11170332373aca751065e4b7dc17f9d8fd916f819b22649090902142cd459491cf72db0c7246fe0f57952557245f0adc00dc09e43e40ed63e576117007fdc8f28db83897c66d1f22d94594f142cec8bfb747943992e50be05ee00e713f703da98192e41451467eca9554c819f97f2b706986ac8a8c562b8832f24f970572463e8c1b43803b813b73bda8284719f9281747cec87791af33a400170077861311c5769f93526b52cbba2e0ccb2e2ccb34add64dabdb662dc77596eb3acf2b29297925a5d2f7994c2626272828a7534a8acaca5c59f1962b3ad764d3b9214bd6f9137b43d61314944de79eec0d9975be9e361d9daf5165aaa8784b158cc3746e88615ca4c2d3f90f5cf7c07d47e97c07ee8da3749e0357031bb852035766e04a0c5c7981db16b85d81db431ca5f314b86de4289d9fc0f594a3745e02d7831ca5f311b83a0f81abf30fd0792574de0157e71ba0f30cd0f924743e87ce2fe0eabc02743e013a8fc4d57904e83c8eabf307d0f91b3a3a9fa3f3475c9d3780cee3e87cd6f91b9d2fc0d57902e8fc00745e003a6f84ced7d0f922aece13a1f3363a5fa3f343e83c0d9d0f80ce0ba1f300d0f9b639fc752e1512c7aec19b42620d22ccc76d64be679ee6fb3121b7f14007be1f5b653e99504694addc0603dfaff968426e6301b7a9c03705bebffab8cd04bebf0ab98d04be7d60208052e241077c1040bcfc80efc370696159514939c200387f6272f311e04b259e11df7176ab1fdda6e6351a8f7d749b00fcf5d1a24f733dc766c8dc74cc8d19e6fa1011892291581457f12826f9fc001111290ae5ea74437984724399d43efdd340610b853d24a4899a4851d8ab2dc4c24ef2f11f20171aa221e6136e40b9898ae081f196021f9c264623be9a92d7d57061574f720c515aac0f5da2dca28cff776d9cf12fdd2e7a57ce7027d9dfaa64ff6d25fb573913e2172c267bfe4c7108f33060c880e1e282726969015b5858826059590162454525864a4aca4bcae9f4c3090505a39c9cdc1313933731996098becfe52b955a4a25252c259eb7e2759d4ac771299cb527bb6d285bad2755d34cb42c336518f661d755ba2cabc4cafd98d7cdecfd1cbd1e65e4f7dbce5146b6cde1b9b18c32f2dbe6d0fecde6d029add7392179a46b49a8f12504626a3dfa87d70179115ec7434a201e3d7eba79fc0071418686ba1f0dd22041ed2af71f158f39735c9e85e52d211616dcf13075410d763dbaa006bb1e0d763f3a2096af9655afad7f60a5d275958ee452c9b239b28424a794543a4aa2b472145083291f6df76373607cbdb8ea7265ae2c57668f355858deba2c5791d0f5af3ddef231d6b87ce8f9c95594e9872a3d3d997e8571ad1c1bc33cef74fa07f389269ffe0463214751141720972bb3d52db7470a18ff441532b46ddb1d82becb75f96910068c7771c12eb8fbc1405c5731171877622c376618976695920f4f8a5cee7511e228170cf34a2e2e3e0dd2182e3e997e8c245de3f2473190c448ea1a0b772a18b7fb69904783a6144cba002525657a8fb8b0b0b0b0bccb0d979817491227441c454f291fba00651a6219c3b20f4f8a32f5ae90a360dc98658c2ce8c7184439c61047d17ba4417a8f32bd4777a5f22d37e2dc1b7160dc6bf6e4d2df2fc851f45dee5d25f10139eac3bbcaf2ca0ce3ca5cb10dc6f5ace2bdcbed80ba96db55d9935af1f28b0b4d903b9f2843bff3c9148b3294e2951b622a29d7a7b46a62e2a1d0b3f8dc48e9ae32fd12172053d7859f4fa62d4719cca10b50a6af51a11c763e5e24872a3d99e28d621d40a44e1495a4563d40512bd00a0eed2ee58fa3a2cbeee9a3034ffeecf66e9739f09eeeeef64ede74faac749bee712332814eeeeeeefd9e039f241d2479ddb3372b2a168320202121212121212121212121212121212121212121212121212121212121212121212121a1811552cce10b770042e2424f0dbceec1e20a7bc89653772cb67024bb3ff63c09258824a1c410a0889e6a0b0b59665dee8e611da1631d129bc6e0852cb9814c161c1b25bf638de8ad3284851796a4fcd290aec122d630795922cab29445962522a5a22c4b4659e29e93efbe069d5c294cdfdd271e478a127754dbe7b4b0e0c9252e2253478d314a29e5d6bd5d5578ce94796e43434bb49037ffc6af3b240b7973ce79cd39af39aff7ae1f38a75e3fb07071575094e9bf32576bc3bce44a717de9625fbd4a258dce853c5966eecaee5e5534eab314e36e049205054929ed9cb32e71d91c93f73c21326236092254a89a667396d0baaf261fce39e7bce69cd79c265e69082d29a9f0e8211acba1ca8fca4f17bc5025482548d784415df34345a86b4caac80d12290dc9eee48e72d76cba403e477d5f66c27235d9ae6c0a62722f1f51a6af2524f7975c4358a8b12ccb4e40baff6eec214215a1dc5f2a51f9d143f4579b33b14a5017bcb0a41294fb4b434a5794884a596cf6866661c10b4b1b2e0db9611744c486ccf3bd7bfd68b04f54ac93133abdb12b939163e1aeb73257152e887785213721afa058e3fa7679b14be185a5212a43d2629707465906e1bd098d0665834b6c341a949d2c40119e26ed4bd6944822010738a24169b1b4f67690b5f80688b7d13408bee4d0cb1ae8a0aee94ea71843acfbaefbeed1dd0eba3bb48f781d3e3590d720cec71a4dd33496ef9a95977fc401129084125d63d9c82247c9fad9cb3fd1e89a1f5ee2f0254b22b2fc3e0e112ab2f2e1ee1ba86b7a6cd13f7a486791a550965564f95f67c3e5c1aec1e16344ca95a3e4c720bead6d6be37ef7372e8fba46d3645aaee44ad31a4806c676df2757f208ccb66d5b03c9081376417c63eeb5efeed775fff1d622bc9970c6d3bca4b9d2085f5934e36966bc0e9a57f99b96465d13a145a8448c986a83d8299a81000000007315002020140c094542914812669aaec90714800d8a9c507a5299675998c320658c41841000082040008c88c8c88c8c0900e07d906e37a2d359a2c6b8155bc4940ba35e003817b861ef1fa8de8d2e22751a9f689d9291fd7da8c221e3922bfdc548d2f411061022138b62508da232463b0ea8907c54ba49c8ee7fc3f35c2d7e2e79d2f56e9c08fe97e7f77b1fd2ff6c4bb10a4e089261791c87f54c6958098c5b96d46c364649da29632b60f2d70406f828fe6730285d77e31bbc6e4fb3281ea070ba83b0a7d3f650f0396bd9ecce95bf6673b9c73a90651044e2220f7cc7820627dcfaf124445c02bda9710563ef071b8716ef550ac6a28dbe81cf9f3eac583df3900258efb5cb33b57b777af63c87accfad8f32cb71583565dfbbd7ee78b0c41edc4f2e9a43d9086bb9bb8d682b6a282f4f8aae518158af7c80564b33b54d91489ce8828cc3a1a6935f1579f1f0b9e243447c9ac8a0b3a5d2e506c4ef4e3ddc5cff43d5810f0c0755f94f0a378fe24ac425dbba7928bb89cc0a55be79ec5eaa2fb3c90dfeefc875d4dee88b2381ccdc6eae4a7b86a8e6e640f753f2e910cc6f944b66a96fbfe7b4bdca69f08e05485c3be05c1f5eb035743b2aab182fbc6995d03458dc928968bc006473dae96f949d08fa30f1e5b6e1fb113a586e87510f7896f06aac9c921b0416f948f805e7dc9e4b1bb2e4bca425aa97448d7209f19b4b3e102ff9783f8155703ca090c3bc3e5049c05099c931a5d9cb4bf86695f2222665bed2debb92e5f1da099b7f986bcafe2441a382a12b682d0afaa937cd0045182129f292259e97d0d27109f8572e61fa2e99223402e629c3edfd4d6db419d8246f729918ce0e45b34b3284a3d2e92e21991aa6ac7957da553b5380c0d73062812e3e350e620d04e9e219309676faa3c1778b3c64e0964590e2929b72c9b206cbc20cb7b54cf50b18faebd1843c529daac92368faa921115b8f85862433bc841fa64b3e8bb58c67a2ded3714be68834524c5598cbf30ce8bba0c3ce110f34e0c945c4674e65e4fb4b960ddf9dc374848b6ebae4df493c8dd54530ca88cb66baccdf4b3c8caa137dca880b6d9adcd791380c4a076c728f40c0d0cdbfbe899111bb529363444a163dfee74b8a0fa79b6872474068d220ff4f4261c07d2616ac5bfe70d9fc48d7953a3ea54b2406794c2683006a429c142b93a30a0096fbc1bfd9010ad77ed6b8cbda6f84ef162a1c520d42e007c7448d954c4272eb2aee4dadde40355c75b618ed1fe5d1a41cf8069aba0b71968117bb81c7cad31d90d8c081e16a6070b822f431340008700688f1b2c8a32219d8d82591d3b0d0dd7030401cf80560a6fa5c76e987bcb16f81bd50e71eac658101011620c79f21e0c22ac0af50817f2499bb1b8d0267425060e54821d4e42600708c09b00c2af72f9e04664827f7da5e72b7212340043a1100a10226eaf5ab6bf85246563b3d5621ba4987ebfa19c4159f5332e252c80bf7740c106afeed5ec07fc34d7b7e6d02a300d0db04e06612e0db691160d1ed019ccafe771cb84601b17721f5a5312ec90ac8ee860cdb6403bb95d1183612400623000f563b34583068fc49071879034c703cf71971c0db5eaf00b596011ae75609a7bfd3f6ec230fa0c1b1338032c00048b2530238340420890370cd7301d8c800201ee570a2da21c471f1f6e82c2948f6475a1f1eaca768a899cf84ee13814e4c53e4990824df4822e012a788c0abdd2002acb28308b4daec21d03a9e1c0207fc73235deedc888b9b1b16dccc8db779b9c18caddc28a3931b41f0c88d0528b8dbdc35dc6bc5fb8957bd923a9c0a020231a10d10c84329e8d527616c4ad2ff0fb081ff3fe0c8a6ff00425286a565ade01f5aea2539ae918fac3881b95ebc12f86a4fc14a35dd3aaa5780f5981432f38b5faa910358d0dde8220ddcf244719a6aa3dac212b0cf1455997120e0df3d2a94978180eee9f6a1cba5026493e1299e33e45626fd8351c00e068f4a13550189afa0c1ebe7a28612610c8c5221383ec945dc0a9fd21c2f4f04c0c130fd0e1c345ee4367fd89fccbd056078a725477fa9695fb1b3587fed0d3761a7203b8cfd88be398eccbf808abf5796b12bb53a67a1931351b614c634b72557598e6038d99e49fda29242baa8f83d7132ece6fd8cde5c37d3ca68a7825563fd6ccd4b40ce3915d7a8fc01b5a95bf1cda019c86f4e92cbcfdee7dbd533ff52452f560db9e2d756d607f08c533a96621f16dd58b55f1ac7829a206f04081aef71d6cc04387655aebfe60f61b5223f78d9134bfcb89a209ebbbb41ca7337ddf29a97296f2ec0e1a7340f1b5c5049694ea90a9f6d4da57b055fcfb55a05c201e13a8fa300b74f1d53d01850992e1ec97eb447f447da186c1ae18aae5ecace28fcf937f0d4b8f0c485d8efb34d7f01760a978befbc1f9ef377c4ec7a48eff7dcf99c6ad16a14dde72ebd25404e30bb4d5451e06c5a615d646b6c9209d2a19c8be24784ff38d987eed86d975814fdf108a2178b37334ad7365fe86cfa7d35043b41e3e82314a15982637a95bd5f2b17dfb691714d0f9bf3660d5a534198121b1023c2ae3e1c120d91aef4fd9dda2b89b818c042add988875cb3f813c850e2d08dbf85c6332a100fc9178ddb04a8e106a45e9c9641dd75710adca2fb89ff62b1277d51fbe1a943a5773e13436ac93d8895a7311082ee34789f6c7fe7579d059633b3d008535c0d9f5725d48a936e43839804b6629cc9c141b5ecc2777a0c22936ea97a824130c67488588a4f77e807042e18fb502caf349b23ae5e84d712de0a57402942b1361282c3165576cc92b3d54fba4fa839fe7a9bef475a929da6c0455e78441384f0eca075da869f0a3a90f239c6c27e34ca059e1f8c09155132b831d06c6d064766eed67c4a86003a08ec5cf805ce7c71fbc3d667657957dc7e91f209f2ecb8e28add9428a24aefc4bc1408ed2a0728c3fc849752f0c2643360b18d06e17b41fa1d3c48bcf5370ac4130e1d6f4984a74f3cb7f2c4762fcf94cd035f92481968699192fd4a435acdb79f31e85cc02c3759b77dc2a7a9ffcd098d15189cda2219b8ad961da8d9b787a115649c4031893e297e541e8a46a8a5dc520e8760e0080b5189f40e6c2ec90fc90e7cb698305e4835232b43a387c026a0dc98af9e804c431ec021699217d1d08c6a2e62a760cc56dedb845c081dd7c517ca83a933da9c061617cc30aabcdbed71198c6ca0203641933452b9bd29204cb6f93a347bcc2130db716d3098c0a1a1c519f728228ebd87df5224819b7e96520b3e723d6d842cfd8af2855af4c1b6b106ce57d88103e84574f16b39353cc312c30d0542ec05a603bcbfc7f236156729000711f1e0b9aa9f1eaddd8ca17e123d6db05f66812a3480b750c458bcfb95860f8913aed12233262400c80c9d6169819a920dbed942012fcb6b6a9a644ea06e0199b533872a654a7f90ab16a64b8c7228520868f4faedcd5cf03499e99a1722870d3b4c0b13954f68288bc740121def173e302d7a1a35e346f3d9b44ea178ad26b8e291a3acd0f884f83022b7569aa6a9f10a0edfc29a35651f6078ec52812189c2168bc031f53581505a0f9b8458edf410ad30d371c146355eb46440db6232a2b0edb07347f277be607ba18a3d9ef36f8e8127893c8eeb3b1a89043ed4235f0a5637e9ad9c8dd3f47bd95de5bd09e8c06da0b971536a141f0dad0c6c864c445560914986cf4077bd517afa57c4f1109ab41a8307238c351f63bb23c3c9978349fbe2fcaa7bbe09f03f446361d0cfe6f37108a26c64a5108a7998a463f97af651a7b2a3c9e48896681b3171953cf13080699738ed1bdd480f89672939cd8be852ca12d3e206ac9033e0c71d4a5b3ab1d8e415e4047cd4b9343b078b81bc790c889d1e37a03c90c0195d2ad948e418a70e1f90f5a533cc44d6e79c300059b773c000e5ca79fc204d0f376c1e48ff8ce294d80272bc54879fc83ace092620eb754e1881d4f578c2480fbda03c90c419552ad948e438a7021f90f59d130c51aecce303727ab8c9e681e467344ec13620c73a353c81d47b3c604e0fbd503e90e28cea14d98a72653c7e90d2c38d2a1f2439d135166cfa8778fa1832bfde14ae9c1c8f9232693702690c410b1aefa2bc8b9155980a91d78e190671758c6c19766619b502b0c626549860723c1a2b803e96044a64594950fb728f5ce9e14ae9d3077178d0df618e43342bf429106c0371571638310220bf5fae92b4439ef6658a35f7e9c1f4d3df465ba1f6edd3743a65032ec0374a6491d22deb53289cc7c08fae875eb986ca594ad98af91181c6b6ebb4861b1d10c8ece0a3de630803d1da9859ce517388b1679c92f7320d3f3c3144521e6112e3b55b5b853bf23eeaa8fd605c9b33fef2e68010d2cf3c488f1bf686e5c4dc1726d55030109a22a82b21da604734293278627be0cdaea84aabc20866c1f163427bb8494d98dc14452100289ca8442cedd2f4b94f0813714241ce48eba0bc5d913d4ed26a7a1d222b5f68e9b1b93ed9625f4e4d7e1bbb8d1b438c50e410389f0a0e4ba66f0fb05c3e9cb8ac907bb483c9962de0a8cd6978ade63583459988c3668a07f9593e3711d218bfc021d48e38341c26460e044e1f1664403dc2bb3e050a0c3c96c09bf357b99a4addfdc31465e400af128a311364559b53bc515cc238c3c6aa4bc7e04d98edacfd33e2957e83d9d95eef80a89c602b1eb98cd3eb59bb054d643a06647943ce784412a535a1e24f77028e84a4b270760e6b6ead89da65d1818317415462c8c63e34640f566e67de4e05431a4e1a727e7dd419fb829de4ef52639a268ddb6bf55699039635837f66d7facde09efcd94f47167075ca1d3c9f29e281449f6fecbcae213221f4f29d4d6d48f5f26500ebd446ea8920606ec7a97c8c24ccf1391706fb452e7ec98d1c903e055c0312ca612eb6502f726ebbc8b6fbe10a068150f59ed32c2b454443e2b003941ef767e21d754ef678c22780b1f84e5824c3f3d18d075107689661788577743f029ea7825ad54c35713de719a7e1b757126cb9cf98b5833f6a9aa14a3ac4647cd1d7b87916d6d1234b8889ad0c7797db1d0c972c87f3c411845917d0576654d054e5a07f3fd318c1e526df2cdb46c145522f5583767de8547dbcd1e20009a2dc6d60d0e76d5f4c285c752badcfd3d43d60fe4de8e260974d0aadab4a6f3c7b546ab2873ebbf811aff36ab2ea414ab7f02ed6719daba4018aaaffb522982f677e970f71cfbcc00c466b34e707f456a594f0b118d43dea2e7b40540774b8b14c2888922f6a4587d92cf663b2af7fe27a5c7a0524b44b63ae8b7a9a7c39f36df8e087a2007a22d2199adb43a5a8d0975e915620803a1bbade13f5777b87236a260109da6078fb55f20a1f8cb65ec90d9b9563a439c60e8004e9760dcb26ba138146f3d118b63c0158895efb741556d62a885a309947b52565365739e36f6252b18722c3db31db960a7c5829f64967fe1978e30c70307ca5a7a9c00e36b8f8a5a283b0223e3411bc9c928b4f932df2a8bad154af87054da21369087ddd2496c8712cbd2098ea38dc1f8faa3d3daa69c0edc631fafe230cd35c9afce123f911f940d3c72c263f23b0d3d5729a6cb2a1a5f7e09e18549c87284aa01e1c1e5faf76f4284f39b35a4b828e88493f4602dd576443ea157198099ec88a8e1014404110d7e308d2cc63c65a83f4ff55bb4f28b20bca780a9a89bc9f1ef6cb3bb22ea9b21d568a89d3d26d415175782e167b912e75af8964cd9ce224196fe1df1bb59ebf0754c5a334fcef280962e0556a4239075e057b2b0fbc9ad42c58fc95c6bafec8f02a021b017791f2c61231025e3b51606d6cf136aaa33c7cb1f74367a1da90e13f27352132b7eaa21244603d1f30c8b3ee3c0a8eb4263a1a4a3ea7d374a54f97450b35a2a174b97af23b3f034068a46b066d7bba0a58fcb814cecf24b9330615a93c54e7c26df06db168b2d0c2e2ffd3f44052776064bef545362c9f9c9ef5eab97b1aaf2c6662e3b8686dcc290763bbd4b8fac39c6cc424f56a9163e54d2c25d54896f49c0d2139654a0691cf894c7b3df1cbc0509757738a3d9644cf654ce75b00b2a0cdbf9306ca315fc3fba7ec22a6c77039431cf3c32915a6e3f39b1923995c41809d1631c66a0d24a8a29270abdf403e4b18debc376bed62b2bd30709306b2923642f50d05fa00a16aa668d69eb6d9e9e58403b64614a27d33f5ae23d5754d27ce0e7f32562a57193ba47947588f4c416ec1723332a104f34ea2c7c2ccc7a6a0a826949d76d152946e314fb0f49722c6e953d8db31816305a09b2b812e843df070473a15a8444fe3b7fc5276175ea5db65e8d4b763778a2e84011187ce340f934230f39beef6dd7653007f48242837fd76dada150fef6331ddd59eca6a070b30d2372fdbab8645b612d37d7bf6f17f58a32b388136c270e3de21495bfcc141c0b81e4680ff63eadc22c76a47e174ec4d4a45e98d448c06d966592eaeb7fc21c2a9f023eea591cb15166bee30a4a51288eb6961b84dda81e5a334bb9e125926da7aad1f2c70726e01e81ed401fcf543b27f505fae7a39f651956b29480c003ec91818b55fb29110f6a98fdfc5077e999ccd4f37e6573adaa17cc7c77f4553d0f2431b475be0f07e6ecc6e07e352c438c89734a72d39c6689e03d4c7ebfd404ffbc8c9c980279276cec1f3b64fd09d2cd406571d8894145cbe4c4138949af5de8229abe748093074e80c13089b8e217c09c448731d87d8a6cc93afd45ff489c01345eaa48b7bdded499f502ffe75c3f1c7d38f5f34674d59abf40a6b6eafdce0b9b57d8feb683087b5f6682db7087a7e2814e6334011ddb4f3a21b6c3369e3b8897a2a8df9ba42f51a50d3fab8fba6b2e29b091a06df0b911b40064a5002fa5d9d8d55c0fae5eae7195637fe341a902314f5fd742ec32525394152f75e39cab6c2ebf4cbdb800ecc472429a9303a36897a73ade004e03771050c2757e2d3993d34c419245a54cd1a40d96f471dc4340d665a7e18ba40a32f8b1146b963df52c8870558e13af83ae793940642c15c2f84e649c5c2c74ed582b82a636bf8ad56bcc85906fee3de15ae5a917420889d4a0cb22ca167134bde65a3de61f7ee26bf2c864ab7d6e4af7eb268071fbf9ba3f1cf9088a61ed4f2da3efd69ebaac7c26516b07260d4bc67b79dabe22295ba21c0d8bc51c2aa311c3a0bfd30b633bd05469bcb3381c743c8353cba76fa3eeb4e37ad29b386b7e38278e3654013dde513d0f4c4b4e0f8f4a002442d893758bf8dab7972aa454d0d02b5d8a358889c7d9bb898b2ba2d8203f22628642a9a6c5b9037c6031d653b12673ba222412f08664b60f3b4db1017384cfe2dc6ef7092a707259266e61480230e88b90ea2010488e7adde19de8a93e289025ae8a26829a3c11e1d17e30882ec5eee204019f5d8d7cd786a0a2a2fd5438607861b00f597d23e394cde1f76941e84ecc4758c6faec0a424ffb7f2c63f212d0a422d8cda5635acb3f8d33104c85235146390a2bf0ff710ad52418b06ee9cf80591816de5ebb8fba6f4a696e397da806f3b49fd2693e1d12de495a37a9cb85fa3db4374c2c44a19d8b9ded3f02f4242b7e0a4e20192c8c72547ac51ff470458cf0405397374c147055033c2ddc2389e80d02298c70e400bd1ff899b656de0a400f3b13c897eaa60049c50e5416568d7e05fba16a41110f75664fff5c8b4897f063c963c19a0efe2453925c4e6f96809990cbe3e2502f7b6d0eb513eed6240831d361461efdbaecf8de29c302f09648976c0e8962485ad9610d2f4f06817b4b4b0ff25b5904df62fd53ee06d4b6b0564bb3436d9f9d75cae98c223a3e20a0840b01f37dffa38aaf46f3a47620bc61dba7fa31c42c473735077eaf009020bbe720cf287cc82790bcc683c8bf517ad98321d447e1a2052e41c25d352ac3da589fbe8436a296b0bccc6ca069c2654d0b185f586aaed395ad2cdcbb742f703fdff69a379738207249830df9fb6828e05bd5b026dff606103e0f71af4168f16dc1d1088da4787b19f41037f15eb26819c88a24752e3423b46c8edac8191ea046342ffffde6e2497e1f2aee13a90159943e98bb4a746a1a8d181b83442df8e86a95e96fe953fdbe7c94b897faab88118ec87f6be31fe03e450640ed90ac6bf5191f63c3f3a10ee8172d906f667e893c098272cbf9ed10472ca969383198424d6a1415354d171c8ff70973710c5565d2a75be81989ad2054b1c46813f0ececdca589add4a09ecf840e2fd80f2d9c9ed003d29f071addb0e8bddd1983b15746f81c780d377c1ff972bb3ff22446b81eb3b89caf29ffd64dbb97d61aa934a6d39f58c440d05ed0a87695d5325fe9e96f2912a935cce571c2a98fad74332914b0e84faffaf7b380b197032c13617f7b42fa2ffb8fabf6337cab228a7359db0b495835fe0230152e05d0ffcf94b4273549cec488f536cbb1f34866476fe393e0265c172107acb32c5bf1525c81ea1b38dce33bca53a4fd5b9588dabd916a89d6e07c25fa7f3407b5e1a38b9d5ecded4f399563ed159802905e41e8afaa394dc389b601c37eac1706c714f8d1f18f7813cc0105109580d585c6115eac48e882f888a23ca4d6e0fe3a9f02dc8871e3ad7d28b204cd24893f3d1cd6325656a02160d56d7436d1cc1f6b9d0da35bf3601b1cff06d4770426c44aeda059b77c33cce6033548d7f78cff3b6800b285e521fc49944eaff4dfea959df63982ceac9cc2e96ac5cd302395740225dc70059b4dde6389ca64be1610b6a532cf05a9191039c15a7f9276df342157f64cb7aa828611b127d2c172ef36d6c39fbe455b4e543c54e644b04245b2a260d7277bd284569ad41a5c996cd76a3d3d62dd062f488ad30186a4b75cdc28e1f469a4384fe07c13087e89079a57fe4de43f213c6b211e8d8dfe297672715966a6e48268621e4694dac52877876bf45e88513efb5604c855fc5cdc54dd4a446fab790ce03675353d10fa0338fbcf8271f0f1545e422220d91924487e6fc4cba95c9d4c3c06275203183bbff369ad93f038584a0ff727c840c5b7eed3450f840ed8d486d48280b33ec6500814c691ed491deff871ca151418b109d18cf026a04e58aaa6f84c5cdd65c3245798e1a1ccf5de4c725d446d1cc8f73f8e9cb1b56a92a0ad510d36bda2be82138e8041cc882b7770104bcce274953c6f93224f32b2e48733234f73c2162dc987f74ef55b8caf40a5e02b6411485c867c1d93f123116502300256f33bdf9cd315a789ea0169d4afec5a65fb5f8df3f03c077b3766d1fafd63b60cec6406e214015ce8d11f5538b5a6c9eca1faa27eccd1b7aece91641eff9a2038af46c6f2783688d5ef9453d5e466b41f28c1bc488cd4ec19597448d376365dbf57d772638fce9ea4033111ba4e0d7b6768a28d97aba314975a42574491fbcbdd3633611a8d573106665bc0869fa4164e4c351fb062c5165d7f274347bbcac2ee23859330285dd012f0f2235d6242c348e457e1d378f89cff896d67af3b2dd3f29148190b569bcbf9c69661fa83bb747611b86653aa88ea5c595ce669cfaf940616bc70090cbd609193a61d33986730a6a8a96a054cd82975a3f9633f11832acf2599de006ed6d88bfe10e6d760821b788649f6702a1926df8704d2b4792f3e08d02863cc3117797c404a864d19227410866b8197c6abd351ed068cf39ca2448e61767e52b2149cb98cb4aac91ccdc42163e78feda5e3b9e940837bad2743533572b2256f545648b648ccd547f7cb5c318e5c2ed81443b1e96b769a44e250f217cf85ccd929e91a21a8c4add1e41ecae2b65b020b96a76c40e1e660d1315004803c5a96cd0a8ef64383df93aa5548a7624c6a1a47326b2cd25393a78cf713767d54365639f674cc6d436174673be8fec44196c36ec774348055b524f7fb7c0f7a30d3ba6bd60167d1513ccf3e0b7b1a02ce0bbdc4ec590dd4d4d4e25284f62c7a931d71f2ad687246d70f39759c56b1a74b5f90b2a71918ac025f6850aa3e706ae1ea3eb13327f52225df91f5de3b123202211f23b766b16ffba07b2eb8b0b502658eeaa500579a4e0f4bdc281a299c298acbf022c3921c00ca54d3ad3dfc521c01bf014822d5c4155ab589cf3ccb925384d0d8f09674b088202188b2de730fe0cf9e1e2271731e450e33f7dcc1ee853140a4272da7c2afd3b9d61da5f79db6dad0131453d1e7213d2fd42c3df83371bd52b296ec0e225094c10b6ceb8129b0529378449e1cd0e5f26faacd7b3f33e18b6fe03cb5a6dd9d478737aca161bfd4bc5ab9169f5a3f84b746271d6ec463f46417b02eae91d81e6b9ea4033b4021f208bd444c42108ab954de4bbc8d8e91f4849132acb8358ee425211ee783b91bd1739def44b184726e7772cfb741abf57eb59e517d3e40b383c7256790b1114ad0cc04a7dbd4160f44c12b12a430d61961e528cb7e4ce49fb73e6c141d7c7034c7319052f3836d445043539410f02e7c77940fd673bad800f8c39b3611ee63d6452834253e15d17adabc50ec0823ce720b9750efdbe39a63cea0ad9ab701f4656815c9740d285e5ca78971f02cdb38cce4ea2efa41e60544f8ab95d6696556a653ef9de538ad191fc5872a4514039b52b186903f8f25a69108691487c418bacb062436d7f041d0904bdf8759f680d980d02d2266405b8d6cc91590b2da58b570932ecc4f3adca97bb5412377f5591f1803cb593fc56b1d13f6ae80952a5424450572631fca66f74c55ec1ddacd52078ab1254cfcdbb78f23298defe13ae474bf3dca30dc6bd67ee33cba3f52fd7e8dd1441f87e8080a8df6167074335af9acb2c77d109a5b2d8adacded3d1ec9527ebc6dae368d35e78ae99df89367b22c5cefba5c31fe4c350ecf9a1f9cae959d9f1a5ff480085466ef44f54c90d1941f0a74a4d544189283adbc6bd9f255feaadbbec18bb21d90ee3bba90e47bcef9df2d9164a7be49d88e4ded6cf3c278dd1c8649ea4365608f7011bd84db0999c0f8f62b769a8663738836bac00d7caac27ce3cc54b6d371b3600f7204be8ad98667006021500e3e6e8d23128b1eff1808280771adffd77ed641eaec564579560cb8822991a1a47e3f94d82d1dc0956fcefb3e76c397dcac38e5a1846e4ef66788c6bd2617f8b0fec57fc296e79f32e5b64d9811b47316e924dce8f3d1e79182081911cebb183cfadc67f445ad973b64aadb126d9074f816615bc0cff5c82e28b089b5386cf5e6b51273a25eedbc1f06c0a24397075ca16610be2ee692a403d84e497651206e3b495e7d19f9036eff7d926285396993a4d850ed8b49073cd4b274607226afbb747d85f5b464aca7451d02bc2fe42e3ff7fefdee7ab5dbd12bc2d7607c9c209546bb9b8b95b72e32740d294182a1ad8200d14017df52d2c60f4608ae0ed968021ddf3b8cb847432750f2d4c7f2f50440bb08aed90b82110b4196b3e4bd6b483a95cc4082449aac1b9dcc62075af1315635b6ddf08cd6db635f096baeb1366e831f16d5b19b8e3b33fcf00b2a9f21bcaff127ca27d9b653458dcd30602b135fd0a79cc67704928251b81acea08a915c8e97cabc81df72af02b0572baca67a1ac7cd01e790e3181dc53c515088f401f0c240a96307d025d26505565a818cfdbca874100a19e17e6546a5fa7197c7a2ff9c4d0956f679d7c2e3070f835ca955ef1c183401613465f6f344ae46ae68d0f84b50b5f270a6d60adcfc1724d46ccb943d86f29b53a53fa3a776564eaf061a5ab434a5d674aadce5252908cfa6a337586fff88f729398c3266aebee4fbb8fe9b161261f83210fe397d22b2b1e65c5f5f2cc3eeae2df6e2812d1f407bc04fc4d4fa4d6647a0d649c00d36357e6858b509e297bda079de60e92ac64bad74a8aa362fffae52e3fb52d84abca66bcd890eb0b0d6a8560c10bf15461f19cbd7e75569075f8ed10c67b01e56b99caf71cf7a7f7833bf8a22464f544fbbfe3575f12cbff77f5d6009e563dc1f89eb08fa6ab12a4845261e18b7b3ca664619e5a9552f5fae427a5314a80553ad7a242cfa69640c0222fd37b68ef01dbe9c1abf84c9030935176eaf5a19c860963e67dfd8f4a4fb6b53d63a66c800fbe1d11cb2981f89506276ad5859adced0018e6b8c99bef7265be47b120ae482f4d1b862403ddb0448b9bd0403c72edc1334e0980ad9e91cfb0497ad8e5f1de88bfc9c77e09dbc0d561e717566c5122d30e28a5b51428a16598b24201ffa38551606758fb4acf4ec234212518c3ac87ee053b5ecf1254c38861020f8fea4703e0fdb615c65eba50efb43e5cc7799f09ee142245bd48ff8ec859b2ffb49c77b48c970749e486d44a025b5e09c8ab5348ad2b0498b4ffb3ec1e1cce65f2c112cc8b3d37b71e6c33fe87bc11459dc0e1598519e098f32bcf8eb8f6e6e68801d301b77612915c3cbab9e0d0bd0d5beb186c53b12e11d4fd07ce625fc4c04fd5d7bd649945a5d8458185ec4085c1e0bfd1c46a45b3f79a9b835252e1ba0d5368ae8815bda10c7a87724a6dce0ab8737eaa4fbaa2fead82bc3e392e6201933eb1956d9c3d4b898e43380f75541cf218e46cb462047330e1bc07ab43ff59e5867ce5762e48e720b3725e065aa46e06afb6f055d01d534913e4e8dda2fc257aa9b31d368b709bd32081d22f82ef2d7be0d9fd14d2e5ef097cf9b470f5c9189efb7daa1ecbd080e9f434b01e847ae7311a2b06cf3e5e16a31efff0dfab051f024092c0623e8358c88148bfb74b313c27eb7f110649c73c848d0b809a0248fb69c9db06c30285c402335bb3a15b9480734100e211e6604cf32d24cb28a389763fb7a8107025b017cd9724e1dce5a97d3685e54e596df995cb66e3e44270193bae3f9d9c55bf3c14741590bfe0726310843b07bddf2dab2e41b9d433f52600ff8ba1fd77da09284c47b504f84e66681340f4b831fbc8e48c93c4e9263c75a61bf2c47da715adc645eb6ca8f419abaf04a87c9f066e415ac01824ddde05ec6e17ed54470efe67f7f57e59035d8220c03aeb3501346c863db36cabde11af8f7c50cc13c1bee6b10e52c40455c3b4a9089badd7d6502907ba4c61e34e26e376954800396bbad0af94ff518676dc77546ac5062e5fb3616b9923289170df6b6b4cf69421b60dc1a0b5d1e57d91a9edfb484f7348863b383503f1cb60007a9464bd4bef5a39fa00b51005f41aa09a1ae10a8161286cb01f84afb54fc8cdde4869eae423746ac4312e96363da92f7616829c9a8a17a987280307d80a0614eaf2830c82139046730684a9a988e410145656ece41745f90e6f72988e7a652e939085a319e9785e762d0d19de15ba1826ec770ffc945e1f9344b862a307137d6f1ba4e2cf43266c96945f7e39801621cb150220b081d13345ff524a16809302e978883261b8600edb5c21cdab86e6248be22e88b5e9fd3b362156e6b25a204d50e4f00d891a4ad5499b1cf70aa712c579a2510e7e94007691972e982a834cd3a2636f663549800a9142006399e92481178feca195bf77276d0fc91e63a8a39320090474e591ce216ae83310072206767cfb29e0e43daf2dcd8bd7c81695de8b9419805e337a44c749ad7c9e90f50bf8945da4038df893f1db5e7fbf4248ae4eb7ac4b8fb071a36609ee5608c9d5c7319f255992d690a625df59a9255227dac8a5118845a39dda223175f4955b6d4070883d057e5571dca7a625a9be30eda52f95da8cf706dbab2692bfba5276ee2a2e410040e3d31ba6b590b1c3cfab08d77ffebbdc1e13fdef4d7c6449f92f053f7947f0c77b05d3d95db404cb851c30d52f23ff93e23ba2a53246c9a022fb093af0dcc79bdbe35c314b91ddea9441678d9f9d030d5836bae1ff74e7fd6c9e2bbf1ad9a876fbe8e780869a7433f7ad584f94395b5afcd9536277ed65092d5dd64792e4c02b7e5e8c984e2d15cf4a00fd6bcbc08c7484387ad4c0947ce8eb67d0ab1f1cd6a1a1e8a0c38d5f7a6db9574f499dac99b8b2b4a289b565edac068949dd2266e50b79a8e56739fbee82b99d6786746b024bed02766df01147934789558083d52b62f8fe47f6229dd7758a7b5dc3b9ce311647f84533073596473f04112d1e3ec519ef4c25f423fb055d3fde4df304b931c13e61ab37bc495f97ebadebc470013d08eb17a9a7d6f71dcf6a60830719619b40ae36360a1ba8189e262bd318c0e2fff613a29943c93df7ef0c96eabfda93eb97146283e2b4d2d7eac71ae3b2ebea7769d696db3a231634a853ff6d2f25e228c0430ab258ae0b6e883206b0a1fb42804fb911ff914d4897e6b63eab839a34d3b1eda6dff559b5cfd942be848123e14bd846ad54517e5653273dea3d4c51bc34018a366ae306dbef5304ea297ad295ed045e6dea878522449fb53dc26234b3816a29475cfe26c5b7ca57a66d21bc75161525ce0a82f1828d29b90528c211185f8e068df5afecdc3ab0ed0ae3f005c5981471f6b91a74e9114f4a0e178373f158eefc243ef997d30d10efaf6d309f42942a2a6d7fd236d706fca6463ea5a4646205a655dc5ff1fe24611b682ab44f7e6762b000bc6a9d3bff959a2f80cd45d3c57f274577205bb9bbe2bc93d92ef0a4681fb85ee2bc057483f26e5d888f9fbfe316a4b46e203b248396311e8c90b74bca160701039d6b1bc2f7bf74ac63907b17553e0df6a9bb9b243976ea6988210db9ffc27e85a0d37a1c738c56d41992647491a8e285d285b33a521877133014b124bfae559d39dca381f4df59c0ac6a282618a53b93cf7dd1a94f04f8e202bb33f21b7bbb9f7c10da1b136c7014673453d0cd60226b0848415ecf5c739500f98bc7a82542174bad4358c78a22fc1fa422aaa0355cb01e2ca8e0c0ba1346fee9cf17aca244c6c21e74400567f0649dca60dd4258545694a18894019c201bd70b4cfea44327cb8d471e5740a440af0a8e15a7258c6f905d0050404973092d7059ed95fddb5169da96733467e25e35988f6dfb40b9453a15fcf348db6e5f1cdb3692dd470d0e6d44d1e36519bcf575bc986721ce0586963ba1c7b60de478654e9c16700c0c4d663c1ac4fae43f9510760d6205255293d1add996a168e5c9701cc6aee9d3969ea05baa9ae69f5e17bcf258cad64a2aa61f50a5c6c21b6b5e244906629c10bfe52c6c9d0acee7c7732534f88f7c0c89524fc5c60e53c4203f7c0bd8a43e18d36a5a220bcd508304079d649ffb96d8e136d4537d64a45f59c70bab85f0ff4038f9ebf38110bedf033aeef65ed6f629dd29701f3e9ab5fd4213d38afcd4a66a04902a40585bd1d038055579dc2f2c46de6ee2bf8e6a083baf2a9f3a648a8b858cdb28ca666457c11ad5ccfdc94dd6a0a0920624e5cc207742537fd9141c3bf6973ff8eccc40d9ceca842ce1ec946d1a60966d766d1cd0a644e26243bffaa1dd967a78978e6782dc7c4ef5740a971a30dcd9e9a4ad5b3afd5c737187b4c76774e642d448297911604b1b23004c335f3abc485bbc3a904f52725395a93c4a8f4858b7a51f12338ff8feb4a55100bd20d780c970f9707855c51e31b25db4605209374ac6a05fdad1da9f0da0ca37855de1cbe4b6e21620c4492084919ecdc92a90f98991f5f296c9a41645109a6e6759f4eb8c5d932a9deec344abe54d38dd536b8685f6b40260e109040307f5056e8fa98835020049ff4f1f357c0bcc61fbf9bc2349703e2554fa0351e31a1f854bcf0d71c401b63d042a7619a0f03dbe9c53d746899c4376faeecfcafa7c7644de1aeffff7312273836f1c5778323b22b77c8666cc9dc503467701d9f5cb7de4db57797a2eda60645cc475ea5b154751a451be6480ffbc7d288ab4ffd6b3d0b48beed955255bacc0b959e7cf882b2ec5acea0764b5dcc40adf98b845aace1e33964e0b7c887d3420909a3ce978c0ec0023c72f7a937189799328d69baf2c1a2b19825f1532d9eaebf0b672d0c3bb5b11d0e29f79db2bb0b7b6b759c081d79686a6970205822a55a206a93b09a6daf7006fd263224a9b3da2d8f782e86ae6e3155eb0a89e8b0a9e6b1e1fa96b3e2a431128d0bea62200987a702f6b5d6e0fdcca184cd36534c23b1ea984016a2161f29b7c918fdbde35a98148ae3cf90fd03f7e8e31313a4db1ec449a22bebfd79424fd3649507be005eb7159004fd6121cc70891fea003724c8c4bb43094a6e063beebc94c06c6f297c6eccdd747fe35d739962991be5e0c6c23f48da09b077885b7cf00760036a88551c5d04a5ef5569840e47c2905d71873a60553ba1225f528a32f02a425f9fa71ee2d37eaf30037986c4cea7f65e430bfa2362c8b2cf156b3f5c0e5871628f888b5fb1ff124974920d24da755ed50b4aa20ac61058834d49e68b5cd75df3c26cc5c215b4d80b47835f98ee5a2e2358436ad7d87f9fe41158df599e9f837a002ff172c8a731521c3edc246e3cfe2f4550c968104346ebf8b14afe8c613ccb036f3f9119e83f831b7ef93d8deade4c3209a6cf41652fa9941b2e358dec46df5b2a7e05e56b36d95f66e41da61d012db0a1ea8bf2b8e1e5d27390ee1d29bdbaba327d67380db4bd3bfc6a192c899ffed7e7d3457ec01360dffcdae6e24a8f09604e4b92720e9434faeda834b4b9802ed56d1d5e3a901e6ff19bfedd14ae10d3084c94f2e3d235140099bd2a749493137d2f763041a41424c0b475f196cdfe381d7f66c704e946c798bc56075f27bdd39d000b0134f260181e65944171718ee0fd847ee03f681ffc03fe03eb21f4aec286162f2147bc84ef2f741c8a025983c55a58cc5380df7ae8ccf67efada7299c73e1b6881c36d1ddf31960d0beb6a5fe9fb93323fd28d244dcfd9d8443e6fa8c9a1161037a43d18544599e8fac54cd1fa14d26a8670124080ac4b3b2a6f07d41c47de82ad04ac630397d7acb6e47b97c3d625b289cfc6e3b12cdb63ee6907528fa44a6fde35c46e85cee277c49f8232b13af2e579d146fe17af22a66c413f4e9907b8a2aa15d17c86e466b2e97d8f6cf7714975226e448d200678b84c822c9e64945d5ae9a5bbb9dd5b79de7d06c7e3116e424950047adae786a2908f9b2363000e6b7eca2fa88fce0e569c0a5779c6619515951a38545bf627e1707e2d0c541e5622ff5aab9916f34162897487464676303d52ac824feea69ddde536d64d137f858440f8ea5962b8b7f69245dfad0decc3583837335f86b143b5afdf7ffc11b85d15ca96a730a2a7ce6cb8b90978325767ccaf56bbe5f761067ca8c6fa82071fa1531a255ef543b05b19a2e57e7ecaa0dc27d333221f72dcd43a043aa467dfa1e04c93298c4ee06ddaf70c91a1d5adc4cc6df156f377db0411cdbfa8f6a7341ee916defb37f609b66848d18ac744990047e6f1d4c50e189ff4852602579bd15b9ab3982a10b004a1599589a27aa0a7bde08af7ce37da099a607dae36dd8c53e9da29ad8362ea185bf60a78866988087209e691fefb883f75c1ba5f9e02a22daa19669edb33bd677afc387a705e76f0f7cc9dfc88a24fb3850d51d422bfac59e59800ffc1fc6a75de57800966298974f1f9e9bdedb2070ccb04f929bab553ce52a71c6932e8de891b115591478080ff5281c4558b4cbb56e5d8a22bf1467fb097f4abbb1f33b045ee6660d0bacf50d3d526b10eff15e98fd1f1fca60ed815054a0754d6167f61a957a024ca759b0ee47df91cf917101db20b83ca3e6f841ddf9e78ed1fdc036f2dbcd38dde2ea924976db2de6d49c2da4df9cc68b0cf2ee228aab6b7ec73999e8e1803f384ed079623b05220546f28966303ed6d0775629e0708c56a3bff0fc901a66021e0c1595a8dd69cd5de6a6fdc01a9424561616db67aaa264994d80d31d5f7f6e5449a0d5bc5d81b4851299579e22c87aa89afcbca5d5701f14be35374aef6b4f0d086cdb44def6cd0648dee29b5ddff1f2ed7d386dedc6c1986941c3bf939226721e403d0242af81332c388aa762dca4121937212943481f9c3428326afc4ba08a400014ab154ca9a4afc84dd2af0a25c1864a03e446a76ee411fb09bd6a22c3162fe9e524ed080cbed1450905aa694ea8484e07bd5d9403a2f6d2ffa2b6ebc676b29c44fc69759adbef0acad5d7f28ede65d39848181320ee0afa04507ad937c8be7ce4d523c2a57c35098ebd040b3429efd6f39c9a8b28d7717fb6f0a884281878a06a021bc72cf9448751fda9202d27fbe994a5f37290e209868c10307be76d99be25de323a8d20b4767e6dadc9fa1646518d7aa8b956bceb5ccbc93a8cf3d1920a891aac411f69bc7631877dab5974d15e19410c8844d39224f35d4e05bba08e2fbe3771acddbc1386c16df0fed309a17f58d769c6d7f4df9ad9a3b87f5bee417ac9c81df672f32462afe9c176b6b87224730c5cff075f80b82f4dd7bb790691a4cf29cf4ca7657bc80858cd3960facac5f4e374e8c20bf876e5e28d52d5aee1b7d8b54047ca2d0e16034ace162fd53425b7163b43a9129b1687a5f96f9984d6438bc6797cdfa0bd47d094d8e7f2000329e9da04772a00f3cde9fa5aa4d44c3fdcf236756d968597c13e1f963a08615d0f9b71583bc273a8e4fb40bfaeab11fe6109f4ef67b911358427f72676bd2a4d90679a716932e1b852eeec628b6af758777e86c4ce4ad8f79728183c2b619f6b9c0b38ea5cd08909ce454ba3be7092bdfae67ab90db5f88ca6a394f8b510b21e26ba2083a104129ed221e8947955ee99754a1190cdfbae4ff872f15f924e669e6851c9958e48da3ff21ab8f1c31eeab63eccedc407e36f3df794c4cca6a78ddbc13923b4985f9577b9ced20e1ecfe9468e475e83cd9b714da186768ba2cb53c51aa670db5b713b237cd73eeb22fbfe7b19b5aba069cc4a2f261fa017083d5a85ba5797541e5e896e86d4bb43fbbd8f92e463936057496d5425798a18d907ead26037d0090621a6e3233961435f2a0db0685e09c45f9d6709986da16a221d60d1406eb01e661ea63aa62ab8dc08946af721f296b3569a53154918f3cb145b77fb9b942dca9d0ee5b9b0b42f92b5da078498a7831e0b29f5768d99497bd9fa1804a9976e77b8be66e4d60f64b87e36f55c1bae4b1cae84f551f5ff866b4a9c7f6d7884305c6939ffd586f388d6db55b8e66d55a303487d2a0fae3d98f683c5d837bcfce080cfc0954920b81276a5ac552d4b5b9453f8510988451594559414cf4b5dcf46ea01fe37fa87bff52470c0408c932ea165c5c5e9a890e8cb637a76e4f260c5296aebc4098ad354e5a760bfc4a911ef23544cc40923d4e774db879356c78770040ea7dac075a335194eae75b4c0395a38a55b8b870be3e1f539e1547bc254fd8f84937643420608a77a42cdbb0fde94d2cb472c18c78fec9bef475d4a4d638ea68c4e1c9867d34db130b8587ef3c5a31d170622b55b54bce26ce820f7ef099e8adb141df6ab479620b42a16cd410d3ebd17127df469c42f86c42dc8f322797dd5e8b00284c0cc1a94428cae312c4f0586a76ee1a7f224fba5688cccc152a7e59885416d5454634acebe5e3b7a54a4acf57661f0b51f3822cf477d7a16b437286220548f14defadde4023d80726e471908cb51aa92b6fe5634073ab4fbba52dffe2b1476b44239edb50163db9f3a6534bd65f711189fa0971d7e544e3c92ff8096433759e66a521f9d27cd86b0f88b577b513692cc0a31dbb35881b3384c56ef1468c4172348dd3a5edd9ea4dcbc6c57b1be382d33439050ea12a2c9fba9310ab0e98d8c517ed64be03e614b42ef844c7d2d03e725e15557cb56f62f2080fd19e7fa7da6fd3ce4cbb98c093eff955eb310f059e8dcfcf0e3a2552baeb7bdb55b096b9c3b66f842c79a3e6acea25d74426b9ceccaec6dd0db9843001316908432f8f567c0efac146d24ff8dd78adc8e98eccfd5e183585e30783168ac2df379a94e5b7a560eb4bb621c36f05eeee3d6b134d74a0cf9ab19642dbb59e1345570df37037050c538f5133d87ab52cb7a82d721287e2d232ca347e7896759d10c3d18844dec4a7d55262ad0c9796764a9f8c63873c805f2115c17512cb26a8db14ca8a8e774113f0c912a602422dd59deb702f4173bf894c616d50342afa4f20f22c3f77b1bf369fc4ce8254b6cc9ab4b3c5cf656f1d17ba6608b648b87f9cc80f85fea0119b823e9e7386533ce8ede279000bc660d1d9c0c71935c191cb0ba68ea58f72e725f936eb3d35a0a16cf7e9dbd134e1205aadecec2a6b43a0689bcfa3f1e1b3358dfe5039b3a45cdbe6c5100f8bc1ea7a705ed4679b942ffa890a30fbb4c2d387b3785ff10d9b0475fac20b41e9537d85a38d44aaf9264b87d32b6d1f6b86c854eb6f7705f26f47cf95abba30a2f0aa86359b1767f8c466c446577c3079c5c77042cf938304ddcc9aba4e529b1b5123d8434da254d51be4afea0bf9488ea393199b6e7fe8777e62e8120e20505ed625573961db68452498d8ac2c360d1d89dc8bc6e897322f941058ff3aae7455915e27a379ff2f8611cf0fa466deb2d51894d09d1bb2005797f18f8c2a8186c83ca8efc516f3e93728a6dd6aa22f4b01b8aa0182c1154f902457584b2ed32fbbe0b0b1731d4053b922f532c106c9f0a43c981def5215751a7944a63354ede652c60ee16bcf89b8b0703e209441869dad7d5d39f78764ddf5b8315d2706275b40711825027f2c6215e490a231ce3dd2714997cba924c22771ed884421af573eae402dddee8150d25961b5bb38e88022ccc654e0e6c345288d21f2e355cfca177f2f048f4bf433afc6ab458841ee6204c1a18b880230fc0aab6e8c359181436e6bb55f1974ff581dd78c8101cd2428e5d1aee710b98c17b08a804e177d63f1a69a391bee710357e63476a7b4a933c390b3f03cbd338a435f7e47f28695b925724976f927ab86ba34919c6c9cc5b7c8dec8d71d53d924994c29d85e22a391285a01f80213d031661e54c745a79ce62c94463876ee86a1b40277a811452204ec765541813702387350ab68fdc53854d01875f3609f5db1eff612caf0702d285e539ad03161512e812d59896eb5f11869c9c06a178d0c6a9ab2db082b3f7f7774da0c0ceb8184088adcc6b2de7dd24fc1d2a75de45c881d76eb60889855a458e0ab79a7ee72dab35eab8d838fc8197bb96fe6d9cf3e8b9da4cc271f2b667b41caa7ea02cd2a734ce4a41b3bf6a421840aaa25676ed789c4c0c39999a6298191cee145227ae0b26e54cd856e26e224b9ccc129f9509d23d2dcd293962e12ad04abd9282595c63312d895285bd34cf8aa7962cce962cac5b520b94b503f746c9c89af9653949b262877f804b6d0c29394ae0ce265ac1572e7129af4b029b2a2bea5db2f06332e62533b2ec5add4b7be9c0a94509fe699620403d5912030bd41cff1a7431e000a2979a09d1a5fa09379164760946d3285e9bd1e50c9efabc64b84be83c3e5c2c81c0d0972c57d7beee994141a014525b8f46f2d4a5c9341be9981d62c6d67a376cdf1415042795ba32aaaa83657761ec15b8a49a2657d1d94db288864f38c5408fbb1f6b86d425e4cd5bd98c2af12a3c227c812a79f9b626d89f60b8f6384f4ec857c22b90d043b2c2d11af7a42b8275fca08fd28c813f3228ee8e583afb2e8693d1cfa3cfe5af58fa52f40bcdc2bd28a82a6e54bc7c78bf503d6585428dd6c9e8838eb4caa1229f0c05b6d76ba153c9181d8846fd998955da05cf85e043fa07783f81f52199da6a6f239c4bafc994b7c816b0b0fb3d15caf99ae8397075983894213f003cfd59f6561165f25e64667b540e60c3008b92110a46563b2ebcde24b07f0582e0ca4840a33cd55501e4531dd89f80ee1174e15adb32ef0f012cf8a590a228411a25ac6dba896de5afd09cf2f7679072095c61b713e2a1f354c46c61779ec6a0850950e2cbaa158b5b201e1e007029d08fcf3ea2ba3086897bc13b72c8d2350efaec09bec348fd33db4184d2442b83b4c75984cab15cb5bc86011e2c6b88b75bff8a92e8211ce4385407a18bd73c2ca5ca210fc88d81c41da51da1d77fe197021b308eff072bce40d29002cd65c530f6174fa5792b4b148531f5fdbbaf80169adc8c7a7c3b08f457a4a29dd217c7af21822383776b1c85b4b441506a5934f03aef5cc586e60fac680187534fd657c14915c3c60cac229f5852bf959484fd9996cf9e1a7aad84cdf5ba8c82d455587af1812eee29c576ebe54c9cc2a1802cb944296193869fc2117426fd285ecfc7947e13bac464385f65380cb2884d6c2a934e9b2e31a4590199a4d95fad67e261b13bd76d5ebb04965bd5cfb25d3a215981a340d896fdd5b85844ce72f8c28b190d88a8aecadef0fdf26691e16df9ed1ec18c9b39acd785934ab1e7010bfeda8dfa5d4dab749fd4f63fdbab64f4f820c498d797830f8a54a3bd94a0cf958ec6a7890ad70ed958c51d05f0dce55f49f440c22b09570cf0fc4f4caead332c4b87275f910936131320db1649af51ab474053877c471f8d8cfb4dad60b4c2d9415cb576d3bda74f454d0502180c34f460c7c772b122c99baeecb5f916bf450f10996c59e9f5840faf7b905c43a0e4b70f2d4250dcb1c7efbfcd39f61d56246f9d8a1afa44edf5c1efb2c2e3f217a90f9f45f6b59e44fe56ceccaf924fc73c367d3e816ff31824727638cb64c2e27aef647a0ee1fe0c387fbbea79d588294ae644986741c97de4f9f93397876025ec4ae90be80ad19c04cda7e307c0307813f61f092f248a5f51b065cfec783c7d0a653cead106e720c3a68939540c2296351a0c4a2b289d26db8ef17a8172e394ede0d17b524563080ff8aa2d2ce3ecbf47ee258041e5e841b248168fec838fd80496a7607c3cf416ccdfdcbb7c9421c29c1f4dd871823ef47a0d8527ee4d7e50875efce1e0875e110b697077ac8c476e91122a451f96551bc1b499b5cfc6dfc98cd5b246d21b419d85d0dbe53724bdc42dc8564493fa88b237ba6550593df061094e8297cbc55fcd7bb734084d2fbb93cf893cca17ac5152d719215b4191dca00ce010b7d643a0632aaebf1e834b5c7e997fec24d1d720bf4a0969f5cb9a5e302ff317f6d9223542d2a01fa5441659efc89b16be16d11c4d02f3bbc28c6834bdc147dc38a24f5e6b26b1091c4d10b102344822ab659042862c7931ed90b2b5335d3436f820f980c723ada605b9b45b77424f143c380bca460a1c9c3cbb0a81d1cfae1428d071be60232158d121374de848964e2141ffea215791d0857d80881f6ec43aa7ca61a56f97bad97e9189b443d5672dd63b24745a7042e2c0423af8a0fc41ecd42b127b12ba7e30886407ac664c5d09d16da7de664e78d6eb23469b205361d0cf886c2b3877f66c524efa0715b249a7909fb8b333c8f14d2789437dc6fdfa93064aa92804fad92e28e853aff20fb7da2039d42ff42291506481e7317db41cbd2c50f575ac0ee8343d99fe4a9aed02bef9c38526083a0179107acefbf2660c5aa867cf87c77bc7142dfc443b07b407f9600cfcdc5667b8185253ecd7388aa7a6afd87a0999d99d5c11c30d7ab3132dfa894916db7a35a917b9af0e1681eec43117eaad71f73fc5d6fb25a558bcdfb4c1973feae10aa05a2c6284032c2042907113d0d3210a1327eed3192ae32fdfbe1821ced422d08b21b59dcde8784f28f9ff28680d3ba6ea4d9b1b5baa63f10dbc30b1cac3050683b13d7a4891d7cd8168da0813647e7056d48062339a88ac4dba282a67233265e3f0d296541490960eb7447d70db6187f235900b99d1e9299688ffcabe6a06b051f3014e0fce628490cff508e3ed318093147b3424ab745cd544aa82f4b598057f6d2bb10db9f362b1b83dc38fe8e169d81568888262cbf30b7e79a62658b532f3af90933c7f69e801f2e562a75c64782e089f0629fa0151066e7bb4eb872e3263ed030953a658de06d2996174c265649d63b3fed15fbcf2995604e1e1080902cd0e694b24b8ea10a1c9f12df8c2b0029cbd817463ca954dee2429120d94acb3e41e4ed32347f8507797725be4e852f34f6b67ccc8ef544803202cec26719a544185fa06f0c6770befd61703d7a2cafa2e61fa038b0f28d63fe5e9f8fb0b58f495b996be46bed2089e377a77f42a192a6313fe0766132c42bbcaac83b3414fe9a9a95b5470e55d718de74c051c8963f257446f8f7ec2e245d7619f5e94a25adb2c7473b0dad406d30617eb8c229d212be5ca501ee46245774daaa1a4f9e91c0709dcd98cb0eb09c698ab1d82841a8579e1cb63defcd523de51744145e1f68f78da496f0c838aba5054e1ba7d3fc48074e0c024c4d1777609f1d70dd4d108df5b7cfe6c83acc92f67cf4f0b411ea4f3e107e5f2520b734255e1445d3929496c0c203168c775047ece4521a9c98691c630dd1a86bf16e4291d44cbd73ecbddc2417969e52d2c495081322f0651400f766abb2411c9096beb24ee80e877f6fc191952e31ddbd41876cfb374344438d1790534983cdbeb89e5b99010ecf96fd38568b2c1085e24328b6a662e2386030dd01f8f7500d72f7a191611e25a94b3755cf78c7070137540826b83565cbfeede2a0dbd5c9cec1a1c611f6a75f2e62d6ab5a682f44ba79b4d702db76b4a45d057b03665a042c5ac3d415e206f51c62bb5f88bba7ccbe5e9ecd42ccf27a7cc9e4df0efa68166291cbfd1ebfa990a14b2b1c85cf7bfd0312f4a2bb751c4dffdf5207dfb26d0517c31e9c7a850979d42f7a110dfdeba0e79108ec35665a6e26f58813a15c10c05c7e6bdb67802d45c97106de0ee3c3804527dd924e8174bb2c5730b4e2c7f3611ce4cffa8fc03cc8186e44df1229f527bf1d5b90fcd2d6294f721ccf75ca4946672080116e3077fc5f8e68d9e9fcf30e583bdf3f44d88e97267a710cd19e3e2c5caed41c4ff594beeeb04506e01c8bca8415472f380300aae8cf33e756793f93d04abb6778baee0032d49ed8a51582c4a15d8b28d3da869741817966504fa55b82b333bd887641e732108d3cb6dab6bbf79b62358ebca781a69a4b0244658f52bc12bdfb085ff84edc6d3460b461c2f6b666a86881657a816da2196e3e7301b557af9f200b51d0abfada0ed114010a5da484653d0732de6dab0eb8aeb00769d0082474cd3003f939c6253c7cdd670ff32041e0782c7ced2f641a3a1aa7d985da3c59296028ef258d2cadc292581c19122dfd0201085540fd2b89d905fd992720f7f81346fe05c1e07c8aabf436069ef71585cb9c72d40cf221980243bca5ef102d72b86256e7ff2b6dc8722fddc441c32c93fb6014265b68255dcaa8d0512ecd0aea0a6cd1c0ef3c81f58a3dee3f73cef951e937be090350169e778325703e04cb3efdf9f7377382dc04ce1cd8a8e836197b4ed1e0a6075db290222a5ca51e41398c5f17a99fb55b21c1b29babf0de402cdcdb7d4b109225b63b35aff87502d097241cc8e47a173815701fed3aa43ec7d4086b418bfe6b89f7f923cfaaa06de17e1a1ef558698e94ccc6444360da3bdf1a07da7acb60a657f2907598869b2a9e9952d34e2caa8362c818613196ea4c90eac80f3b3815a39dd0be749e09290af5131680b85011794613c3e0c2aa7752f40e07537a39f44a31d6daec51eb64763d096385b2439dfce4fb9aa1f6fa047ab96797646eee15c092c78462f6ea83634a39673fdc938d6340613f746cd74c21bba12b675a1e657d367b473d39acbbae6349331a61deba6ad7bda1fec3db7d8271db1fee4ef9331b7bce5fea396ed70e7ef00c7e0dc125662e0f685e3bd69621066014ce6c8f28175ddfb893eeb6802a032910c68f4ec271b12c743deb5f87d53a9828dcae3369247e69a55f32036ffa00d7659e1f963fd372be4a14763f3aa44f5a04eb636b40066ece6ff2f4b9a835f3253921bd4008fb2ce363b1a9c3ada45fca90d0b1716adc261b21e5a4e24b4224e86faac82f50f5ff691dc4a3fcf53ea91b04f6151ab9a4d5ee28a88732b04c029abf4b5438fdda56241bdcb8989f5c048561d4d0bf70c18ae47ca13a3690f0857a36a125d5e66435ac25869ecb7b166496420e95bde10230f4720f46dab64258524859bb08cfa5bc659ab36536bd3e59a39c628c6a6e056244e9d84365a47e97265f456a096107083fcbc5d2189dcb2b1c8b761f1b86e0b221e82353a23ae9e613e6a109ae3d6b884eab8984cdadee56107ff17e02b7e5842eda29ec9ce448a1d57db1c35696c21e4c4875b1db090ecfc9e65e1dc33aaea7558c88878a4996dbd0247968aa1de8d627ec9dbc4867ac5df91b9b0271485eca390fcb16c91f449dfabe1b5ac962f14b2cfc9c616e88fd7a0316c46485c4b44f9167ad7d6d00c4614714997e899d8a48fdaa4c5b594dc2105424b41338ef8838be81a1d6b71cabeb6d84fec11144462181c923b4124f0c5897ed8e35c996678959ca4a0bb9e668ac29be62679934c25b81a28bd887601ceb6bd04ed15e6c50485cbf08309804661e5a4cc72ee0e47a121b678b90042aeb28339c3669e51f931f71011810f489c6a98abed56dd0f902e0b7147fd2d24b64a05fad01317fd181156bd838bf7c4e4b83b4a6fb9a24cc8e656189afc1519587c3527ecb76c610c0f4937af630d2d57c138f90c7f68197638ad1e15b7f02b5ab2d12b58862e2ad24b791ac6b501838c16c8f1e0186383423eb0c369efa985fc3896a41426b6547bdd19180eae7fc13043e54a0f2fd7600eb891c618bae5e377b19814e7c90c01372d86ce32e21f6950037cf62be7fae1ee80c83fd8fdf8ba393e2da032799cb48162e2b16932d9ae6348c3e431d2069aa9c7a79d89e3d30614d38f499309e3a73dd396ed98ac3c238eed98662ba550d1d40de08774fb80fd60b207144de75af41121c8bd91da775b100548857e45ba15b5f48a2e0e8f7793d5c4641c6ac9cbac88ddf83900a2d69e16aa2d2f15c43e2111db32686a6e3aa3dc71be6c7c3db2259290144a0cb0e1db6f7f9d3eea2f985dd7006b0f5fabb7c67fd55a6b40c478ea4541ef134baa352775e802619978313894474c416011b7a87265a89cce939f3aa81712350e42615e288de8f3d396e789198deaafdc37826663ff0ea136093f3b6e13bbda5e760ca232f14a0d435ff358c74581dd5fe6d1907f44789ece44e44113a29e9721fc134ef7c96d1f0efc6be7e13ae7c7e6e253cabea0814c483e908c86b906c5508816511cee0fa2d2b2ab7eac5dc4f556ad94073bf0039207e8ef593e19a0ca3c8069eecc88b7dba75783b3aad3325bae01f48035c4c22ef0026aa2b50a89ec0f47dc710b73907424ec3f76fd6ac9fef8db5cc94d037f0799f7aa15e2744e4390327aa4af33b53ca0ad8586e5c1b43d9630c6083318d361098cbf41455d0cc76b29f46fe8e22eee8a4071a277d3a74b56e57fe807913baf7af944bbf6b6095aa8457a81969d016262a9866465ef97e7a64a897d180b4272c1f02a5769cc16db5d8777ec609f999697ca856f1c358eb942286ba158fa1e4ff9c3f004ccbc4a90455b299e31aad1574697acfeed17e150f2a1fafa74b7773e8a3968293cf495f354ffee653f3f6bfc9b2a10fec11806b3e5f83622bc2db2890d15c632bca08dbfb76f70fa087acb9afcbad2d779549e524987a1ab37509868e52b7a22e1940f5e8110fdb5b95ad4609fbb2ef46e920e6f29bd1d1471c54c85b926edfb33f2f9919bfaa86cda9b60b4c683e04b0ae3e52d6cbf28df9c8cfffbe2fe002af2d9e3231a9a91d090eb0a5d5194c6ed031a9526ba1417b5202152cfa6c9cd905cfb168d912d78aba3a3ffc6fc001130a4637eaa1f3242fdf4507a221d177b282aef1f9820819ae608cb1090595b0d56aa59ac527f357635719ca999588bded5e113d17aaa339c71a401c2dc96b13de11559a917dbab2e67ecae569a6ac6e40c14a9ddd51d2e67fb195e23b3837acb2102952883cded2c787e5d9c5dc31811e9c8bc852ce979dec2154e8017a38de1bcab3f0d82e6a5341005fd04db133a2702a21a5a7d106b6b7ec622fa7478467860d635ca58bf40b459eca57175b7ec10791d8ae10f0dcb8c495efe825c53befdf0bc5d1f23c07c2df7a02a14e59d87637621b52e564126a213068c2aa355ac3eded8ea9ff02dd81860eb206b345702e4a9d52fad8771504d1f12865e43f06caa5a7967c95cab5b4eb173a0743f4bea34d9f6a94c6355f557d7eee1f651f271fb29d90f94ebd9daac3355dfc6b1cd380950794bb9620ef6dfaa66780c01024b3f3954422285a8585747102da7f83944b8c40eacb22e0385038ca347a2df4838fca5c17158101c8732e0388ebf40ef4901bc4103fa9d3a8a5b20d6596d0ec602f966ca1674dbbfd36e0a3a6455768b5ef5816bef5e3ff5fb96baa114b2a1c357e5ed7ba8bdf0b13ff0d01d001ab63afbcc3e65d90e06962627e46691a8fccfa36cdb6ee21d9ff779b5b5b5ddddbd724b296592320c0961083a08a7b9a2edfa66126bbe62a691354da2d344ba44a6d12b6612ed0a0468fb7819d592aa20a46513a273a842f2668311ae9b9f5e42c47f6a4d5955ebd700548a929cad8d65273012592788c13e696cacda78b5f15f6b6f92131ead3e28a595ba68b99599525a624aeb755debcee38e9f5e9a6bce814a65551c579ef9ef7b38e7c75bf6f25a14ea5a5fa2a43b01a034f64315d03f986dbd6c91cfdaeee509b49dd31943b141d8f65b77b35f16529042165944210a1d93912688e766b4bd4b82249b595a92a529591aada8a9a88b157543451d51515754d4191575473749b693663729e92629dd24da4daadd24a6212b33a489c42295d11fb1920c21b5b818abe99954359126db4ab2a4ed4d56a6481b8947aa268d849b66db7f3bb266ae5919a73b2d22d6d0ab9a44a6243bd736a55cdb8c726d33cab5cd28d736a35cdb8c72928d8631b658b61d9fb869fbe39c24d73279e624db1fe323f62bd55adf22d186aa2bccda59c724ca80033e48daf96e3849ce99030c38c20e46784194224346be45121cb06cea8449111f1240c0b9e0072620e104329045a1c94ee9610241ac00092dc0228b2349f80f7a2041104c402004a9490b4650c50f48e4a00a2834f1610440501b5c22760c88897befbd3d720868d83abe9c4e4116193b57f6d082263c30e17e9bce68306892b114f7de7befbd394901321f7a0003191358d4b04801b677dfd7f73e100f6e76d224045788c089278860f7094fc8b8867befbdf7deab05131738fe0106454c92b8077c0a30c0c06cab6cea8489117010def744b744a44f3729864851040e5471051324579ca0089dc20b9ab678220a267a30c25a61877042032a9e35d35261d326362862779b36b1c1d10a3c4a775a9881124a43f769b77fa53c2dcc00095a43b76f879d77d3d3ee7121b52ec0b34716c91659229a2b55776befc5f65e8c73de70cedba675fe36ad39aeebbccb759de77d1fe87d1f0886219dc9be0f0c994e600b75f3204f1b5ba190667ee4461e7322a6da4c09a926a944d5a8c69aaa2b59fbf1204f5a5b611e258fa7e08d93a887f4108ac745ba487487db55fb6633d2bd4ff623d11dbb2fd23d82eeccbcff45a2f2d8f7bf481709e9f779912e942bbb4adcc5e3fd2fd28ce551d39281a244b5e66beb2da967de92db571e7586a64606cd8c0c1934d6e2199a9a960c9a53edc4b4b9c5ef5fd36ac9a099e161f14cf694744d6bdb82707c82361f9f20adb92d08e7c62768c3f109d2dc867373e313b4696ec3b9f109b238cfd4b464d078de98f2b9f94ae6191e15cbf069c9c0ad968c6de3b00c9f9b960cecd392b171d8e7e6a625037f447b66e3b0977d6eac8c1af415e733097e5f797c3e4085599aa01a1a5b534393b3b6344138353436a88626ebf70fc2c1a9a1b159dbaea8080cc2f9683e1b570e9b2f470e1b100c3f1b974e0e9bcf95c3060c3f978e4e0e9b0f0c3f974e0e9b8df3b0cf4d4b46d69d0dc2a9a1292a4aa9e4c8f94ce26cf3d6ca81d3da70705a5d076ead1c3938ad2d074eab03b71c393938adcdda0edc449c2307a7a56d745e937846671b9fece3c3715fb6d1f1c9363e9b739f8d8e8e4fe6be7cc2363a3e5abb5e93a3be41697c13848382b4f6b02b08df0469effd6f5cae20ac3d1c8e372e146ac60feae7671c53a819af1fd48c9f31859af17afda0c6146ac6eba703c52d470e0ef79db28d8e8ff6427ce30a1a5259c9c93873413936419c8d4d1008a2b8a01cd32688cbb10902515c8e69da04711883286e25c7b409ca59e7f539db964eabf57d624be7d5d2697da2ceeb653f516546e7d5eaba19df91b97375dd56e3c2a9d970706a3cefb4d5b866e0d4b87036f74eae19337036efb4a5b26b064ed7fd7c47b6743958ba9cc327fbf8745d9873fcf8e41c3e5d989b72fc34fdf8e42ecc6353534b8e1f16161a3a5874e8686951b1d0e0d1c14243478b8a85060f8f0e9616150b0d1e1d206a85cb316d3e5145ebbc6ebc536a73cdc0e9c231e7f8f1696a5a6179793b5ef67c5e2e1fcfe5f211c515cfe7b5e3f2f15e2e1f71c57bedecb87cbc9cc515cfc56bc7e533a3e3e970d08ca0a0d3492568064fd08ca093ca0c1e1e7c527199c1b36d347e2367b69f6ddb5a3fad5618a65a3f345a3fad30f54383860d53aa991f1aadefd3f11fb97d39dfa7736ef4cd0d088e3a47c78dceb90147dd94a3a349c78d0647ddd2d4b4e5e8b8f93ef33f12e6d379f9361d9c0d07e7fb509b8e89b3e9e07ca8ada663d64c9ced436d2cb51a8c8ef9f26263c7cb8e1d3030312f366aec78b1b10326e6c5468d1a3b5e60625e6cd4d821aeb8f05e3bae2315976e064f8e30a5e27e68d880638bced171f3a158361d13a7566369a101b2006e200e8d1c1c302707279572017168b0908303d2c8c149b980345860210707dcb6940b0883060b39383a2c39933da54f87cea7a3338eaa4f470d9d4f87cee6a3aa460d1d9f2f67d5f742c7c75a4bce586b719019148442b504993682cc20548b69c34610c6a89618d386d63b5e9333faa5b57e8922cb6bc74b64697aed68da61451698a6a699d78e5618ee7c48ea70461872336c381b9bd369859bb163c3cdb039ad70b5193bb51d1beeb4c2bdd46a7ac68e4d18f27c4892e18ffe90fc50ffdce89b9b3054d13f3c37fae72654d14a3f3c4a3c373a54d12e9494c81f9e7f180d4f030d24593e6cd3f0301ac8f2617bd3f064f9b04d43ca05064883859c23d58b4f470d1d544b8c67da70b1c074af1d394e2b2fdc8c1d9b50c585fee1b9a14c5e84787e44fb23a2578697ece8794c5a7246579c3aba4856c637dabdf9f374c5a976428248746aeaf9538c9de250cf8c13d349eb211efa5962de3fe529284747e5994ada919a953cc8baedcef320eb01b6fd421e64dddbf778dd1f110ff2001516e2ecfce0843f3f382b2b3021cecefec109777e705660de7f67ef1f9c70db566042158a6ed1cefec1b116f6d6f2641e16f4e1c9f10173727c54545e401f1e588e0fc893e3f3670a69739597f7e781c1727cc09c555ec072e80ef1c0727caca5e12d3963697c6fb1fd8268e8047d3a3a41a9948b2f88060d3a411f0d9da0948baf89060d4d34e8047d18a75c7c6453d30c0d1a7482388e85e7c8194e47b59cd7d2e16a792e576b1c5dbc960e165c2d4f87ab35ba78351d2cd45870b53c6b4717ef6bb5191d2cb85a355e2439b37b91ac335f611fd147d4d598396aba1c396a5028555763d6c851d399396a50aa4ec9aca15423470d1101b70c62fd865adf3ae1dd2bcb0016241091ce902c1d19fa2620d095f3c093c1f3a8bbfc7154fa9e10b1fee72c9c33c565adb7f4ea7ef2bc3b6449a77e956037c0c2134752c0831b4421f6e4c692404aa2e85eeb197042079efc70c4d01494c07cca7677920329dbddad779b3a614244a44410d707210f001183224320d0028add42091e9448a22fd0b681249e889b3a5162468591cd072346361f9a50ebe72d446befc5d8af23dd22dbb4dd1d609b9c09790bd1a35a775a8713aa147a990125f432c3f8a94f95423c3b2842061b5f080c550a09a15e28f539d4082189184c0809cc2351bd10d8e63f92de1044fab60991ee8f81534cb14f93280826309f9849e3480ad521444190c1504410f177971342bd942bc6dab55d0bc4cec5ad3a1688e7f82bdad2aa86bf2b4d22b3c85d58777f6a6d12e957cc595a6badcd2293080893887bce243281308bb449140093e8158b2ddd1d4428c4d3fc6e088e08881711ccdd8b4b1ff7574baf58f727c6f8cf150dff3589708757f884bbe7deebb80b635faebb77c82cbaff8ac504f04f9c666cb7c45b3d40b463007899afff8ac562ee6a21fa5e0178af7c8d5aa462eea2efd11ddf7706cf503a738eac510b67d517fa91f68dadf2d4abf2549eaa6abf4ce334a6b019d206bc01400a803cc5009032e479ed2a06915d9f45bee0a8b31da3cb423c4dd94ab6e48992bbec14767d130adda1a7b835a62eedc22e17cd66ec158b7185b35620daf569389663d745032fc67fdebf8f5fa54291434e1e3824deb72ad5f738267da81ee357bda722b54a455524ddfa6294b78308824c7461d77d0703f32aad332e57356b561890b3c691fbf35e8e1c2f8733fe9b7bd8534b0d14f8a96c3a53a2497f8fd564f7a796203688dd30aa87513dcc7b30303014a65375424239d023bc80480c86fa1c5025929817b5c73dd308e5a190e4479d2ffe458ffb887918dfe3a87185f2d47b85fffc76fcbba2e97b57b5156db5b4a2e5152d63b385e6c11088e72a13c194993367cd7c0bcd8ac95d32fe46ae274b9e3541ecae790ae2d06f6fd4e8b7b2251c6dfdf9a945bd70f8575adc156db5a4b4c35d3f462cc650fd18443180a81f430837298dce8490b4ebaf982c872f90bb5c560bb007f15cf1209e2bda2d410d88e78ab669abd577abe7567fb52d4f1511c4fbf83e2e817ab80bbfea4f8e5391660f77712a8ee3be7b4f45f600aaa17b0ea8861ef79a356719a9f027fefbf702620db406ea4f5cf600babb867b9ff5de12235c267f8f751047ebf37b75cb20f3b77c8b3c5bbe86f461dfbefe0ac2903599cbb3a5c6feb541ecd62dafcb150db95a6a21690b19e3675af03d53ae4020e63765ce3267eecafacf7beffd3cd2cc99f66e7903509e2a17cdca983353964973890c7fddf966bb92e22ef24f5486559e7a83200056f81ebb02f9e263ac481baa0a6449de7d9ab4fc2f82d81df33d0e0306181ff35e0c797fc77cce3167dd37d87de2b05f04b11bc658bee4a7b0d592bf209366ab18fa1110b2f37b3b88b11793e84d2326224ca6c480c3778c2b9c553f86528fa740f214b79dc245733159d37c395d4d2e4a33e6a2994466ac07d9c6d974d6c306b657bf71aca30a6694b2555f2ebd711c6b74e7eefa291e524420d0783520a27e7c4bfaae423cc71f9784a8b9eb7c0121c55da7296372d7f922bac25da7191b9bdc75be8ab6bbf06333e62e5cbebcb3eabf8078153991a26807f10dc4c68ec06ffb2272d7b5e6f8f5cdd94b0877b90ea265f9aea4cf955497a78aa5a42eb302a35d2635b3f39397ccd9e6ecac1a69e7a8845ddf53fdf714bca1fa1e6f215d4bceaa9eeaeb7b2af2c4df5253e4f8993c5f3bff99c3c198a6914a0d94e8f2f94d235bdf54e235c6af97e557be3e0e40d6447deaed8f24cbe5c5bdd8eac122fe5851e160554a20d405116035500f6b52180ed6a4b0d5d625a534277e90d21cf0da2dffbd8af401fe797a0f7ecb7bf55379ae9a8b5602d1cbef5a72572e21f0dad9557317dddf9751a83287170c89f7b2254646684bb22546466aac12017256add97359e9b35c9249ac4d674e1c6d53664d73a9e5b535479449b3a629b332952b69a74bd004a27e17dd9bb2255beac7f74995424866181fc592419542dccb9c2cadeb0134579a51288d13459bce94a0ecd3dc74e64406b64973179d31a1b45d5c02443a7382b6f5c6f6f15b13f5b705f4ee831e8afcc8ef552ad547762001e8d6651e1ff53e6379bbd22748de66144a83a36e93960211bf2d290d04526db81bfc161244e517ad397efeba357d5999fa28d286bb33fe8bc47510f1a37eac7bcc8fca41f20652a76cfce748c365fe1ecf40eeca3566546595e6aefcd965eeca25851131b2a42e11a1d14e4a4b8294a454996a135151122c7e7d294cb42567d503582cc49567f991664d95af230b9922b232f55780aca952fea754aab1a4568676a68a469a959982789a26cd5cf2faa614b3c95da61674a772d6d4d9bcd9ccd9a4bd6279a6840e22aa69e372a4d97f8246674c34db94c7714577c05d9f967f5c25a69d4485077638abbe0f55225d3467d51bf79d68a22cba09e0041395a15b972bdad2b7ad0ffbb85c2dad6aeeb2656b7b9724f5d26f4fdf537be5aab6a2692d72236da459192bc2ea48b3e62a0a95a9af845dbf0aa65da3b02bcd9a14c63436ad689b11a31c2c810a33972f2ee4b74a3b9742761896a799c43651628818cc9b216a23ab9ab3aa3ba133c718ac7e1d635b93a6912933979847da7bef4fd3c887f7dcf738489a326779a0e7799e0792e69169641a318df4f7b869641a318f40aee3b8d29c9932d3c845338d5c2e9abb34d51c1d63636c6544ecbe2b4f9369d78d6c594294186cb5e4acba83c87d57ae68cea2396b89fbef4f10e41ee4de07f8dd485bd57e7f26cda4ad6abea275e46a6945e3deebaa775c39d67e4573d749693577ad966852767d2053b6652613ad89b6eb27e9a7e00bf475e983ae68ceaaa4f70426192c93a7de360bf177dffa38ad41bd6dfbe2dffa2db77ffa5bbfe516effae6f6bbebbbac7d1db77fc19c0bdea03018f2acfa73dd2fe4497ff0fb6cc1d867ebc53e5b2ffb6cb55af6d952d967eb44edb37582fb6c75fb6c7161cbdb676bdc67cb65af64eea22b875150d7dffefc8d889aeb7824ea9c47994c8be378f472d73fca564c2e2a460087b02ab02af022bc88279e78024481174102d739c3ca3155493e6eeae40418d8dea64e8cb2d8278b0605151595eb5effa5d6fdf282def6f5b6e5cb0bf6bdbc80bfb675ddc26bdf7fb9f66582fb724b1cbb3ecdd76621d6cf658fb3cefad9b3678b2434baf4b76d7bb91befcdf3966d5b6e434110bb245bef8d2d9343c4b3fb2ea96ba253aaf40b8daadd4155c2488920dc89124877ebedf6089e01c4fa77c549124af7de774b8a589f15a340b4ef3f7874f5b9abf32db4eb475ff438ee6de5084016206719dcada5b30238cb3e7929abd3db0bb97077f511c4ee4c8002c8e0eef9fdfd7397eb0f0bc1f3403ffae83b11eefade939c6e8423b91297f9927dbacca3501e4f526bfc93e04b5ea341d8f4bd08d4d51181f2b811ee047520501e47eac1a637e0c1a64f2b8f2ba935fea73fd19485face203bbc94857a0ac260b788fa53886b4cae949a915dbb3567dd24f8021b0f49b2a9b8586cff6e0adb5f6322d8882c90eab562df80eedc26b892ca73a5d41a7f2dfc3ee1d6f0f6ea568ff4df9a776be569f546deb79465bf0a6d44a8aa4790645b3f22721610b6c859f62d91ca5a2355ad96082377592396c8be05c2ba947daa5ce62cfb1f1079b0eea23649111e5d9d35b6ad0572967da65fe56cfb42f6edff08025483d6a2a852fdb358de6aed25c4932aed1d5e63454aec56da491c2531447dc2fb56717305c65d3194551fd30c56caaafbf4b1f159818d4f211b534af34db8b6bcd9bfe6fbb90cfe985cd58adeead687ab22c2a8569f73bef6576bbdaa958dc1cccc4c9321c8ec5b4badc5f75a6cedb5d6be1396aece16a93f2adb2ebae8a268dd9dc96cb7fc8a01d0a794c6ebdbb2a7fae74c9758c13ec5ed4450dd2177c8d5e1ea8034233724217caf2f5212ee0643df3b2489bb2149f162cb485a7431404714e1608058dbb61d61f492b79c733e42062c2eb6bc6ddb760413a04bde72cef908a54fb5e56ddbb62396c696bce59cf311589c58b6bc6ddb860406b695bce59c33123ca454b6bc6ddb868409c254de72ce1909242be396b76ddb904842a3f2965b9c464207e31531c69c2e8231c6f8091b6724a0acd853de90a862252cc2813f841f095c783440753317ae06515c740db2506d1d58c9474eb807ad06202533485d9a1227296b730f5a0d404aa0803420254ad0403d683500e5c0889ba14b4e9b3a5182c5c69b3a5152450c21bc676d31d8acad015f1f3007b27d727219683e49331809114107a400c2148e7e38021418bec0c6494cb0f196f1125272067256bd25c633cec218638cb78c31c618638cef8cded44993214d84e7514b6f3672edadde813ba4123f675177eb2af6b5b3dc5a6bed7556692da5714a43dfab3b8e4a69a8638ceb0f627d7a800ad35686d28035e7216707421476be39e79c73ce99879c4b908409f83271aee421e76c47b0734e126567a01a6816b5a913263b08c248d2b7456c88eed4bf3b6c4d7a05e2e9d56a9ea64110cf1bbbfb3c319d62dbdfbbf703ef5732443a75b53b8ea3a58994d2dcb037ee95c930c639e77c63dbb6ed92d6c81ad53c8927696a92c9ea501dea946ccd59383aa58ee62cbcfd6dc0fbec942cad36acdfc28582e34271d6f5ed6f83d76e08940688ddf595280dcdd2ca43b73f92bbc6f70f95b80b159ee109b6ff191a79451e10db1bea94ac4944e543256b0575854f50967752b63f2dcf8ea9bba2d362bb47a406feb38b0205feb393627ba784dd2d2174b1c5ac19d2ec163158110d4b7d1111b6b211591925776d46e113d4b50d41592edbd1ee5a481f509765b256d826b6279da72dc6c2b9b2fd69aa46eafd65fbbb509efb5beca5daab3dd3da395798481ec17fc923431a866fd0fb4ba57ee8612b3fe4945364b704b5f157214329ce6202c9500b2b28cff7fe6193d7d84a2243b62953a6c090dc2fa282216982cafb87522a8f4a7983dee1fb87545017f8fedd12d524b2bd7fc703ba236a5159407283de82d24072832a9c4277c2570162a74cd9dfa7523f24f5dfe3f55736226b764da88cbb2b94396b08ea0a95a02c7f77d9c2506665fc75490e6958ea43adcf50b6ebd066a13090f45d49bdf1919557218fe0711cc7f1b5b3c6a76025b23daee38feff9a742fa6629a282a51e93431a4664c869ca942d6230fc451eb67224550e3d2cf53d8ec9221a867f851c52c17039844e51298fa44a4bb34b24eb54c1fc6a66489d024342a9cd79c239419d93dbf56faae644edfa9dcc3ad955e924dbfe31cbc5c8c07b67d5d5cab6e0fe56a5420085b540776dc186165a6881d65a2b75e2e1f04e38bc3f91a047ce707ab0d494d6ad4fdf7b1efdb1b9fc1dc995a73e491ffafd4fa568653ccfd356c6d35f3791a4d59ae15fef4f3f60c995670ea707df2bc3927ed7755c05bf12477dadbfbe0b9b5a99ba3b12733a93270efba41fc49e38fc50e570e3613c84b6d65a70868cdfd2b7f9efcf56522b737349adcc0cd4ca589925b6e7de3b79ef7924c59f479d0596de83fe5e0c6279e47bd159dd53eaa67699ee3bedac6e0bffe43d0e9be31e7cabcbd3027b7b4ab9a7200c5e79247cea2c7d2acf1cf6f674fbc2122ce973ffd1b7e00d20756baeac200e30bf47e2a8bf6ddd6bf27481dbfe6e2edcec7a2d79f6e8f08d52ff9e28adf5561beaf6b79f3f08b8b30bf5adbeb7f4f1e2427d5c02d9ca1b1a700ad9f585ec5c46007f10bc711901fc37a0362e23503f0858df99704f9e77dff3aa3bf50cc6d0e31ec37d772f83605c7ebea4d3766d1285f418c018eadfa7f4f1dffa3720074e435c87ed2b35d8aa21622a9b3d037eb29a8488820d7e40a349324001071bbf6cbc512519501023834fd20c32cca000822f29498619509bcea080012ca250e44ae0eef3cb3a5bfb5ab4322e26600a910cfcc04914391002764b6a778ff7b8b7ad75263692c2665608b1edebedb5109219b8c7a5107eae14e29e0522104adbfa29ecf35f1829b4b7984d675668416115b4b11d04dfe07b7b6f8658ff46ce9bd6e449ed8bb55e4bdb3ec770247caf86e4d0c342ea35c25208897e2124f9c3e71e8330d0dfded3e00b9ef79aa4ce3a9d4a1ffefaf30b362429cce90bf73daefbfcb4cb4fc9108998a9efedb79717acc581147f2ba06c3aab42b64f5dc5d0e69ee2d7ffc40a259bceaa48b2559bceaa28dade897e15d256c6d22e0848411870e9833a4b5b5348084c839496362c8008751d2b63e9024ee5b995a28f737bea2cec63fb4a5dad9de5f7f04ff77e5fa93f8331e4a7a7fdef371439f430d4bb5029445d87be10ea73a0ae233e751d0c837f7e0cc270faf07bac778f490f259e60389567f8f73e489e3a886ffb1de7dd4f08e54018e853ac5fc8e2cf35bfb0cbd0ef0d3ceaaeaa77d1b68f5ac2d0c60fe32e3a45d3b6fff242f8f6c34f05ffe6e9dfc018ecdb4f88a77ffb7e037108d9fa3bf58b7afb948f9717f0778fbfebde1f24cfeeaffe903cc5df40d4534a33befef0d4bf7dbf9127eafdfffe07c6601f558231e018f49f3429962f2f9cbefb5309e3ac7a6eeff8b721153644a9cda9df7d744ff747fae01e575d9e42f6897f2b359ee9effb54dc7583dd7a7fe5e9a44ffaa9560109405bd8bedcb892d4babb90b0fa141ebd119962b158cc964188f5bd62fa821bbcc3b55609f8c64f2570ab2fe13d60b53d0f57953743d45814dff3bc73b5b5b3f08ba4035adb2b31273e16c907acb657fad0e7b7ebbee76a7bb8ec3aaeeba8589eff7a814688dc13c05de2e9c5f71f00ea457f14e99d48ef43d27b90f49ee5bdbff75fe925fe1efb1cb991b8d462c52538c2b576ad32b4ce95035a3b7b4736d2fe46daf7babf64579e2d6fcb9ffbe37204a2eec81c84f8d6f1df3f59fbfcd63d83e08dacafb27de8611c0cc4fcb47e7903dedb7fded66d361ed0dab8f4f1d1b68b87a8944e3134c5052e6ad3991298a628ba804783443a5bc2d1dede92a7f561ff7acf99ffbe0b208efcf7eb007a3e1c5e4877eaae174400850da15364b118f899d42f2edc58cc6e0aba20c636c616c44197c4621b67d206fc3600a14cb1d80e326eef83e4cdbd87bfefdbde734c1bdb10247724101b9b529aeebfef3a1b82e4edbd508fb0710904c6066263574ac36d20754a01e80cb76d600184e060533a73dadfb6eff18fee44a0f6d88fd2dca760059144fb4236f9c29a92375cf03c2bc1d80636814aa572b7ce025d90c3aee5a5342aa2a852f96aecded5ae55b4d61db0ba2fd47d0ad91a05de18eb8fee5f0abce10055751755dbbfaaacb08037c416f08688afcabaaaaab8f014b2f5d735d14dd9c1a7e22c5aebbde2c91e81249e7a5b7b6445af7a579a5db6904b75292f954aa53e30954a85271135a6525e63c25208524091226aebae648918d45aad5d028a93259e5c4aef12575c29f812a1380a4829a54e9a143521aa4d8edc48adb5d65a6badb5d65a6badb5d65ac9242c694eeb277a89169b70778e7b829484ceebba3cd494a9b89d0ebc24c872cedf7765a0b5d620784f2a701188a7131449502c213222499418882851dc66990abd447f4750230a7569b328211853e3784593d8b2e92c4a2ca5924a35cda0987297a4b09d6685ca8a8aca8da968b415969515a628ba22178a25dd044b0b0bcb12149a4e820f2d5f2a954ab5b44441c44ec20554332460b1552e2e5c5c38263213ad645c72f1e2c2c52c0a26b6ff97f2c10bcccbcbb7e92c8aa52f0ab1091d0551144c5c9060626062a43892020552f0a08a420b269d24e6454c8cd1dd740605ed55847801e3c50b2888bc4d67511835652aee0f30be870103bc81290dfd2ea925854c0aa4d9d293d9d2128d041dbcff62626262fe59a4901f0c18306090e4caa6b32842283f9224c9b25c6a8aa203fae2c265fcbc8e8309650ca1e926449bcd39df9c73ce79b3475c52920c333481c1ed80b54adb5a6bad6d596badb576cbd9629b955842b7c9a08414529c0c349fa4197c740f304708d1030fa42003529c5c2246c8c10ab66dcb3e885703f57056ce447e60821545a6a820081b2c01c33750daf8053dd8f8723facc9952c6f2d29014bde7e18917bc04d58f00f1a0e4c41f00b80707fdc2545485dccd48356c3863340b58082089a5004881e8c408a1536c6f7c712a6d0fea0e1c014e4c7922d3ca61f4c76b03f70600af283090f9789e947902076ec650a2a0e31dadb653f20b2dd9f6cff6f07fc2ec2169cf8297e4c33ddca725b5b69b0be96af9e97d37867e1b2ec295fcef297ebdb044f496f195feb9586e0e7759c56498d28f1e4a26a615989817971f1305e94e48e0a9bbe0a600bdbf6f7565e3d3c29b0fdbd18195f1b9e15d8fede0a5ec7e91b9e42dbdf03004a3c85200e4f0b6c7f8fa56a61595149e5f0cc61fb7b320fe3450ccc8b8b2df40220c302c00a31562a943af4f70410d63f7d24c1524b1f75c6849117d6df6e451e5d9d2b264a3b586b7b0f52cb3fc74725fee3d148c4012c8cfb1e87bdc356cf911636ce469995f10ac6b0da2bd91893c17c25ef8afc93b57a15fe7ccdc85d55d835e6898b5d615c2ffe64d9aba45ae3d415f39567d5c4ca094ae37f86bb7ed5ab59e559293da93c2b28499567456ba2f2ac965651501aff15664f7685c52049320695b1af028dce0bbbfe4aa9f2ac6a502acf4a0aadf28c48b5260aba33b260a9f28c47b5c6bf548281b2ddfdaf8e9301656dcbe005f01b35aa4959fe230b56523ef0fdc7a3f0bf875949d90e3e1e915e858701e305c68b17e48b9818173130db5d605eb67dd58b0b17312e5c5c605c54aa16554b8b8b1696eddedffa2db7cfb2a2627f45259562498de3cae82a28514cd56ff9dffa2db79ffa5bbfe5f647f0fb4e9fe7855eb71df5b706a07ca8d42a1d6a6ad4299a01000000287317000020100a08234190e44014a7927c14800d5f8c545854548fc6a3c11c85511cc731c828638c21c600638ca9219a6d000aa36aeac3ed72126f9296bc5b19cd6e33f317e0a5ae911a92d16c1488ca868686a66c4d71f0eb14c2581de117208256d05c715f09f641848c0607bf3253d78f8e17142750b2760c8281742cd581702e1eaebef5eb065042bd582467f3dafcdb07807e0d883503d66dc8bce8ccd12c508c04d7b0ca2c6f741b4dc8a7a58eefccbf8ceaa07ba0f9bba601656756b9191d7af8d49ab51ad8bd679b8a9fa045ffe9dc8c49a9d894f2dd8a846375dea35a2e89cea6397a4ed0524349786037e473770cb2e5aa8df634ad187c275fff1262cd525fb76390508f0b1685584f2428ff70f36a7e1688cc2c57f0a0ed6d98cbd098e73eddd0cf959ac40afcf1896e72bdd43814f7a928c25e5b3aec7dc077427553142590a3ab99e9a9777aab3e2efa5b4e8158763a4fa60fc6eea7d920ffa87734fd07f1a48db71e004e663652570223f9763d9da0e79cd88b6218b22bdc08d0701e0f32e79b700ae7e2c69df3519c02464970015c4506eb1d11841354ea523ab56758484f11cf13d8606ecaf350c2485619a8852cb05a975256256271ce7ab407d42a99ee424b951705c36042013d76d57345e18880ab9697e3d953f65ffd4509d705aa9015093b39ce98a6766a81951b23c682ce88379c3a1d49f77ea74cca5bfb87ee0d29112472672031a79f07612e57254975ccffc165d6ad96d9aba842ee28eb9ef63c2503a0eaafb82d953b613080130ff3064f92756db62a9b1ba02078d62b0bb4a7558c339b123a4305318be51ebd632b702011af94111b52612b298100280f145ac86b8fe9f84569602cb8aa840af5600c54ad3394cecb4d60e09dd2e33dbf341519ae134b4915390d316cf17066069af72ecc895492639325ac3b536ab358642b9b0005e2f4af456d1c6187de8cc23341bacd401ce5d417dba345557c0042fea54caa4eca9e6b6fd0341cf6fc06187e764206f31acbc28738a123cfe91ff7220769c81197f92a2a7ed0c837885621f11d558d193f6027182df366438933ad43da486b661da583d092df9a48d2c24f098a52228d1603b020b8318849be453a20f95067e2af35132c60410611b4eaa35ae266f7c81fea9aafc6b9fb5c30ae04383bcf33b536267e598b3e3036f7c0a739ecdfc1b7612921e25f4853ee9501e3d08fe20b6a9576e6088032225d9c4df065cf220230cf48cfdfe4f7761d73ed854f8f546f7ec89432afe09b9b92c9295cd77c2d17f4bcacdd73ccae66efe034861959ebb584985f20d5850370a4b3813628e9e3a00c835158d590bce73df457c34030a8943dc81a8ea651cc622b4a196b55099f2939e7383381c733014aea73b60c69ca551f4174ba90ae4840cd6b894f6ef4ba8b434a92579899449412dbc6697731c8459e5e0311ab6c41c0e672302ad5b26c000cdf34ee1c8070110e9b024778b036d4166deeb96e45760570326e4fc10b81cc4247521501c1bb6e84644f534eb0617da2855ac10031a07b3aab51528f4dd8bbfac5e6eadc0483ec0ba8a54e1493bc17c2a58585e5115f67c9227539a492c50a4772f0827de3f50c26e0d30ffd225b4c12e347d0581c123de0516c2686e44520aa3bb629135d0292ca1e6762dde0825f3073111ebb1fe4fb3b5140f6d52a7ffa3ef015e8e156ceac201d44f3fbdd630f9c3db1528cad84cf4c7e99fd11193da9565f1bb99cbff8152e901494fa23d4db208656e98a657fbc87e994abdd3ec08341b399e04f75c9637d2c5b0e25b082f970af344fcb79aa0ed9cd87fde5db313b309dd5d50c8ec25034ff957598709db54cb80f45dd4fab0959b774c3c9c4d40a6b272a9fa328913271b6367164635111ba5197ba19e91436dde374b798de605cff57f6b4f3ffd111f29d30217ff010f77a1d8908395d51343b86774d53dc3d838a14be64e649f1c9cdffc0f0c9056233526a6d9ca3c5b9977d7c397344a29cfb6835bb8ef4446afda1c48fc0f8e1055f0ada46aa83c76189f73eca087693d61ca9efac7a7cec0938ae0501efca7cc069ef42314f8edce630c3456556eb622b4d49df351e66a719037d3bd1e6c98e1a6015f84a3fa9b8c78941e890a7e37cb2721ecab8e5c92315a52b4f41f4f2fe6ef915a3e93aef78f48f44d17ecaa585c6caad74b20d5b08089dc405def1ff812d89a55956286c14295d5b7fb9fa9ff941d6b13015fc492f2bdbc3dc9b020efd8062fd1d9062a22c6e17699ffd32a7a0eb83e191defcf17b09508a046cf9b07a269a6a30157a3968892b1df576a7fb980e93d3c57f56c406fdbc50430424fa0f86c2cf5a48fa3e092e6088c8b14bd03d6ffcace00ecaf7f7f15eeb39696c5b807ee64520a1439628860acc658b3f41a12d81a8989c76b12449a03a053aff1a95ad4b5dc2e583a480c4743cd12fa504db7d2df7bb76bf9e0fb13a383f00a3498c1732ef902d19dce08a43e581d20c476b94cbde856cf9aba2935056d1a3319405eec4cecf97946273b178b3d8a620449e53c34f3dd486a65c00fee68fd49f1a1a67aa6ae25f51342011de295fc58552edeb1ae18ba5f3fd7e0280bd83945450fbc565ce1f626b8addcb7845d8714bc63f7cc277df1d6c9714f056d1fcb52505663a682f66862fff7bd41db64dc59088dab3ae533ad6a32ac5ec5be8e9297a65ea11fd33c51b9e1499cb5e3330cee7238f319a921df8ccb0fe147b3573deb055bbed519e43c83be2e8138e164052776736c708cbb3857e0ca5f06b7dac2311e905f15d1e62c3dfb673ccb1e06cd9f396260bc27b4628aed658f393653bfbc8bb2e1a3e808c46a4be8eaa5bda33de87362b5eab8d6db1650c3f367c5729ebecdbdc0d6cfe2cdd6216fdbe4c13e3d327c7040ee8e1178a8b454d9d6b584bff058a0c7c270f4bebe9ff3d8c97e63ec5c46ab85cb61e032a4e586a4cf828c3bb5941a29728340183d11c68a611334918182dd9675a1724098d8f8d3579f9f21d7c6048e3d1d595f4fec83544b103eb7aa388d39c001a452c36ce506ad35b0f3494ed728ac82ea943d04b8d625c6d1ba4d6b72fbf58ff0af2051551e98ec1069a4076e0028900ba4083b0839a7193217e5c8acb3153133eeb84b5cdb36e27863c1629d6856961e59a6eb2807bd7cae3bc0995071929d072bec5563a9995844710899711a8c99e8a0d570962f809618c26f4e1eee184b2148d16b08c720537ad4ac54c9471872bad6318de8331709bcd83df5954fd9a5ae1a0a7e1c7eb8c45a3eaadaa6ae0a04ffdb45f1d6426d24d375152919987ac13bbfa63aa644b4c50b1b13b6e5c7432e1f683f1a84efcbaf4229dc15d5bd902de069c9c2b9cca1ba9f4d79489922fa28b0d650fb6f982af173fef1d76b6cd7a8de5b77bd8ce4cc2d842f99a256a4943646f270ec98f945d76d489a7aaf2b781f4b40a4789047342bb020bd83227cfe02b6f70418d6ce24fec0acb145f83577e77b10c5c272182a4322a080fe0d9381cafae9eae0737c72ad229bf7f576a500df458bd90de82208fc52b8d30c98e364ef56eb5b6aa1e4e0251a1820f8759b7ca55a0b4dc06a69af2da4a3df70aebe349c0c57f532d24941e593433055af73e5e18d5d9e56e035fc80d12984b2eafc4f5fd7305b5cabdab1e6fda9aae3b83fe4dc4de5acede95954e013f5ff6fb254231a543b2ba3a8025f6d4e2479857a6f43b4df5d84a41cdd241e12f1d462e6ee0a3fda90c4a2d7dfb06f6ca61158fef33122fbe0b010a01ccd23a2150b967ba20241fd15feafb1c1988e345913f65d3e90fee8e10bd008bdfcda9beea7543fbcb09a0fd16b18c9f63406ce33f7882a240371e5d45783afacc7af5d17c9f81ab9e2048faa1698b6e42a9c1dcc112b06062fc8e5e885502455f99fe715606b6c1ecc7e236a5eb0ab4c9c9af52b452a346bf1e4fe45d1d702d134dcccafa3e5206a058e94cdb86ebeca812db4b1ae146333c9cd0c313ea40460c6494c18c1a98d04348ec53f1c8ab6d1f62a6fc6a0a2e52768cd9355c1432c191f1cf212a693cd36704043d8977527ac00b2bd2d753f2a83ab5a28508e08d83d0308941388d06e2ead115a3a3d906c9336ca07e730658a374c5a1d0adee0572ceb1a8caf4b4667c628be9ad06129dd2abd12295b82af739fa349f605c0554137d7cbd0d389f75dc57318d11e3111834f3791f6393b67abca35fceefd449041521602050e304a358d6f0378bec9dd9c71de5ac597357a72091647be3cfe6bdd587deb1aa91aceb1cca30a2e6aea78c2321a93144524de632803984fdf393de29a5de72335d4da922675e6606f8ca0e66ade6ff4eb76b1841742540c310c288bbcbfccbd56c0716d953c47d6d3855711c811a23d2b1aa19ebedd9c3b1405bff2af6502d018801c0601a0a277068264e1c14bca0663b2b20c1c04d0d9da51f79dc878ac6289e7f9a271cc54286dbda32ecbd65a00465871ff56a0a35c2e321493419c1be990ec282e65c4f390a2b11b98e613f2e5440eaf1ab2c0fc3d71c7ded8a1ee8183982bd852da2beee755b462e76bddc679ff2786d80621a271ca1d4a3d0b99b7b3c3b3f0615d518511d763deb613d87fc780b14bfe61b7dafa726315ee7ec55b26991deb6df720989d7aa449da90e6fa2cfd3ee2dbc4a9484139d59fd97b503cd3a16b51cf5ff6ab04cc364ea6e4f91f6741978d6b350ab1e5c7a6ae092212cdd4d61f2fe5f92181c54ec42d22de2f797fc42d1fb429a6a1d50e5bcd058a4782349502af39a358edbd00b320f733d65dd8fa95274dd3fe6a7fc0ffd1a748eabd10ca5f13c2f029d584d158546900418b2549a62347b7047ae2f3a4eabc11008988d07d55168ef7ff0811b674beff978877a5616a83ac3ba1dcc4d806b3041cacf51cb0466ec7c9c37e6e8eae7be7602c2122182e9bd88259eaeba55e4aa5745e89cb1e2b338dd38f0fd1a631246e2de253e59443f26db0c350fd61327930c2be31e66fa2e737b21877233fc0557f2ba0a99b4583b887530564c47bc45391f80c265188faa21902dd2e480d087d4df52df3c64b63b99e100ff589c1eac50613ca605b7b400220c6ee4125843d3b2ce8d9b88030e78a1ae1bb53ede682e2ef83a3df02764c9d72828c78e48a439accf971f12099d738ede314e280ae1e27da3b5e3f501798d7bc4d7863047119a8883be8030ffde4b949588d5a5066fedced02b213e981aaef747e03ca0e0707c60d34ea94e49a8bc398678bcdb077defa9da44e36f8f814e6b5edc0e863c94b4f8ecacbc5b0260e712d1452c2040a465503daab08bc502dc33c06922a0e9427f10b4f2b53ead1326f72be186a734ff88b27a66a95f38e52927240ee1dc350b19a9b7f3492cfd2733d75fb99b1b69334c7a6efc51033574caa790bd5749b2732f99c7a7914889edc0c54512d1278605ad0120b788b4d5c541621c22d81372938abdbcf97a23163a58ce746065a721c5d82e3a8a50d60bce169f45f509ff661d5fb96214ba03b0311c34869c65d881c24f3683943ce268b01dd9649326a8e9d6568d5458c1a65197f88e1ff7321afcbe9ed09732045e4a304b133af72f6054324414c706088e7cd439c8784edf2efc19844320c20ae7564ea51706a7d94106af1ad3710a90a3779da93815f8f845d724920a64fca2378da008327cc3daa09931a50383d9c231c27ce63ea42733df1e933d9ab7e21ebe556f26a2d792170c27ccbcb4b897984e81a0c18c8788fff27d838c0825ef551745d400b570c82af8f72c9b51d4cd17e60a278afb1a37fc349116a6a0472f83269ce6f8b58c5e0270d19ca639cee2afe5ca1f4f4ee3dd7fd6a5894382132c269b3048fc2bdc8169544c54e2d0769d342eb38846d79105f7e0e8ec625581635be0c8255c75e248a125f945055272f0c24078ce0bc5ded7b68f31b7339088be6028ec01f5b08440c82d2317a51fc16daa7c05192006c9283c7ffeb33ea3d5b6907bd512a798d50793bbe59e19287b42da7ba209ca61b269c22c779c515545842771439c693d8611a33d086a4cb5050d547bc7bb6401dc8c29791375b2765ba89814b1d31514a140711bd7a9d62d05d7af7b4f5047c7076a39e4337c148dfc64f4deb7d4bf47a062b3c18e002be145662655ae37d70648d5e478922654372059aacc4043822d2799d1362366d3c6e926767bed331f7664acfc0c293b5160339c87a43f1b9ea8e2de333575ba0fa4f34f6131f4fb139832bff27321e5165a574f14161baff6732658af8e08c2e9f587389baff6f884ac4ee9d9629f4b79af9e68695c7040668337a2921f144d9250214c883346563ef425f174a90f7b85d302fb4a0199c195640164352112643e0e40cb079914f78868a176f58590cdd333a23d8df57cf309eea88ddfb6a34b9f38251e2ccab87e26b4e620a242a63fa5420d99410747278d8b06683d9d214cae6ae25c847d7995613fa3d02a64020c1c8d06b0a828d2e25eb38d237f69d8001dafed271f0853fcc10d579285c990cc307c4c3f73abc52e29666041954483aa9295ce2a29d15c2531c2de8969c84aa2355ac99aa34293b68c868626456184d2308557b29eafa4242b467f0c758525ff4bdcb2828c255f8dc60d06ed53dcc36196c89ed03a050a0802fc4ab8846f4fa60dea69ad1d58cd104568d1983ca807440dbb0588064256c83a209a1aecaccb187fc6b216fa7d4407ab7fa128f1969306c99dd596e7e3947d558ea29aece77ee10c5b47ffc7df12442b90907ddbc220bae01c6ea0efaf121a88fa4f278967a80e2b5352aa9709b501ebb19c418affa7c377040a0d324768254d2973ebb0155e1cb370e9ba5d603a44ecc146fb6bac8f0b12ee4ecd0786be92edd805f4b8f59ae93dd39b087db11e10019a9676c06af21fe3ed90f8b5a9c2ed0d7ee37461ed01c933563867cbf567e8904e0582f653a25fa6808cd7be9dbbf428cd98dc4d314486a0f43c2b5585a46707a9901ce64c99ea3f61232627c9d006681104a122036883ac3306d82c133ea08502e693032cb1224c9c4a12e34eec6673b600c686d559505e08122f0ffc6a1722198737b91eb00dce2b445c7f3266d30ce23b771e1aafb589382710a8fe02c5230a4c9de8a6f99cbaba5787b221a2f82d886371c1943d764151dbe66650947d9588c2f844dc2c952ef637bb2900320ed805029aa7352637639694214f06ebf68e65e0003d03086cc4fa61529f69135c14fa7d70659966ff192854c6e16f172efd901a8b6cac8ef6f0c0f9513ce7ca752838039b64ffface76f6e260a55eb125de515b09ce85aca81f864811ecd7b35e0adb4760a0b3b004b4b0f9154c10e54b96a230936638d0a0e21c3cb7d83c0f71f306c5ced8bda910106ebe1ad810afab515c264bb1bff48d50808307af187c9c3e20885429a55fdbfd70af34ff81935f5e1c441e593f1470aa1b6c5c344019b2958b5a54bb606c05c676a53201ac270255bf34883606a71e1a8f3400fab2400014a3cee416900a147cca51e49ca434d84300aeadea7935b3855459c47d9b44adc23ffcd69c506737949e52d198dbae1ca1ce1fc8518727d91a6cf154948e7b310c224165f6daf9a189590fe373a7444ee7e33315d004c67af131826624b1dec9553b0809142036e6265ab38dda816176cf1eb3ebd7d150e8e8c316a0bd0c9bb69309c1bd1258ada5beb492588b9b7b372b74e417e388529e76f63a84b6819699f61e09a03240fd28a65166f12f3ed3f1b14cbbb8bc34b9b569f0d2613c179fe9e3bf7ecf9ef7681700befc4a94f01cccf47138c8e50b2d84a81a2692a06c8dcf577c9a234d191019ab15edc432899c2b0599f0c700bddf00a9af9f2c6d9f718a702bcdff8190b33e8e7f1b482cb026035ed836b0fc6a1f4caea9fa82571fa1520f0bd52a88161056ab80e8d823190c48823118a0ff535c45ed5944a9523c514af415630d8aa498d1436e02584fb0ccf70002f7fc1b93890d700381f7036e7f7235a8442f8d0909e6575624f8c9c07efffca91c74810f6c2f8a574f855290520f5618a8475f573aca7de085228005a571d62b5aa40261ea58ed5d3bfbd6b725b900c987a97499270bd42cf1f702507acb5e9d64fb5e3a61cbfad9c3828513f421e7ce80749ef2d5919ef45ad5891b819ea8a91bbee387af77b864c7e2df015fcae0e1d95fcfa38371f365573a8deb4ea7e7ea679f807864ddc3173e662b3075959bf9375b57956b2b17e4420cebadc9ab33adee9ea7500b8aeed8064abf3537bdd874f627c88859a5d2e2ae03b444df97516626fdf0d28f07f61f24bcb4dcd544552d22b59c23a0c8ede90000bea71cc5306004ee5ced58814dadab013f5f9b4808c304ee0fbf150ea06832f774f2b4aa0b014f0c3b87eb264334d16e234b0f939d9ea1bc61fba894eb688d2dd60257a92ac2cc2814f10d44c721350e34ab3932bb3d996fb424c17a1466a7fb2a0c6ccb5628e2267032b94789a343f7c0b79b3b4e21253246020efbba44f3864cb231dc12566e2cddf0f46c8b7eb390b7a598124a73f0188f3a8b05554bb6f7ab724daa1a05cd232a4a32d1e5936292079ddb1f41beef596fa6904e45d92e5045d90f341398affc91a018f3a4f2c01a854644bf7a53a7e218e07be9e6188a3a74104896340ee48b6e83dea80de509ff1f3f0d239081db6b5b27a78d82f251a218ca38263ea50e09cc964a66741412a9a3ac5d3ba5c1b82cea00db51ba6e8bea42f72f928ccd219fcbe754eb4525243e80989b561c8c5a6b37de4d75a243c9a26a067865a11db2c10622c0c02897b2749c8a3ed06c8c852352a21bcd294561483a8b13060c5facd2a45ba289b6d4e976519c3a9ace14112add918ca300674adebb0f137cf798f260874c57156af2cc6b09e6485795b20a4e9cf11050e3a80f8d2188286a7610142a995376621f64c56638ffb8ff00e8e3f284eda103a0f80328aa51e1a80ddd932a387f1fa96b526c28ada9523f0841d0a9a1e2a2ab21ddd5d98481586c21017d1ad01f5526838ace94c3b65c33e5ad00f9502e89b8d465fa169a260bc8a176ea1a2994db2392d7d9ce40486c13b56020878cf5f535e7818a1b6960ac615bbb30e56b004514e88b50ebc2e6b62c33e96c9b887941b1446909618b3b60e49235741cc53e921b8e8641442b72caa3cf65695350b62ad0d3b92a18164e9114b977bf2474caeaacab294eb241a7e6be006f52995e681837900c3f979242058ebba0a42549e37cb876a2716966c18568416a6fe44e0bdc92c37db9e33e33ed6d614eaa28ce37df4217034ad3dd870b31651423fb1cbb907c17ce893e6dc2096d55a059add926a3d4f3562937e9cc5466b633716f40da36c69bf90957986df6178822807013411c243bb0deca991d287ec2f8af5fe716f4451190e9f8c3c72b4ae44f801644a80432bc8bf2afb80ee173c69584281003ccc9c1224ebe4a20c861f9d4fc472d27365b80c00df89ae49a45573fa00f566c69da692450b232d2d55d787a632ae28d858e7fd426903112750711fee1319e90b43947c817ed6bea4dd4f1af8abd6adadc42a77717169815995ba720fa6210ae10569d03e00f2f0b6a5ce8bb47a9a56ed94c5ac7bd0b4390190915e7007f0b343c1250c61e1cd31bd2282e493891cfcb8890d9e2147503ae29a7ab5596ef60f446abca628d93faadaad58c6be12ab02cdeacd8b9b5f43b02d5963c7d5f0461d4ba1455ea28a029d6020f4a17f82174013f846ee081d6051c90ba78fe60fc9e7b2c3e782074810f32e91e886a8bae9be8dc5e0329b9799e3c65104fb2190ebf791cbd5316230a79bbc1ffe6bdb706bdef47b749d37f19036f23736e9c7f2e650b0158c81682b21eacb64d0e359a8677fe30e5fc6bbf357d88c9b4cdf2c6a32702bcc1f860e21532ec60e68fe571847a13dedb40ddc8249847330da1e958728f3749b5f41b869efafb2ed90b7d27f5e219810c87ba600288c72b2a18316931ec9f1a1006554c36ea77b827957fd40e308bc9799640c491c03478ba5208e8070044b0022f96db92efc75c4513785258781998f1f250e447dc6b38aa8704d60c9c8ae99df4363a227dd3d9add1bcb2904ba1ad22240c80c6ce087a8f69a4450752cf2d276b49bb569c6a816f05c0581159f181d2566112a434c9907277fe3ebf8d381a6bd7d15d0cc54d75662c978b6fd026d59c98d81f17044d455a87c6c92688840e286c333ecdb4f26ec570b49f2ad4c4f6719602e52769498894b4c4a19eab0f5d704ec8e9a4438dd8316b564cb10fe4f22f350683fcdd4eb8f015564b03d3b3979d2ebcaf4f018bc879fb922d3f7c32194c584dd63ff1f996f0fa3073a447e76a893ecd50722791b2e87fdb9004b946207444c821183444f2e3d02c5635b0b3a6ce353e551e87feba52363bb51a130aa20624250aa1c3a103f0a9cd7e0b80a0a40234bc2f8578b474578dcf97ac21bafd30676c1b1db7efb5e654a251a0db5bd50f334a50dc1c2f2f890e96624590ede57cc87b0d2aefcb0900464c06e8562a98a02177383a56d07335bba0f4c4884e3201a0268944dd41859a25d319abd1d7a766c1a675968d91b3278c08dc815108ff7e439ad12ddb6101556b191180e22f45c9f80e59e54574bad84b638f773da4b7fdf832faac3752e32fecc34e05a073b75d12dd2b8a33edbd75435d516c76e4bf17e006463d87e71f51e16815c573517a6dfe183e830a8da07bfc9cbc9670fe84af1e2319bb4efabf20a8e5d98b8d82aa0412c119ea623b6157b35da66fc05d1213027c8083cb23d8e3497bcdfe7eb41bbf3e316413e5142fdf5fdd99e46295c716e50a70727629c67d141c30b0abdb59e61fe8d3a182e736c7c52f01a470aac4e85612674e06f0cec01dc7ae4614d7ad4eae9c6a928fa214a4f6a0cd49bb2c825cde7a943b126e5e80841823b22841400559d76e5169d35f0c6d3d7c04dee96b4c02372b4672ea429dc351e638d445e7274e308a750c3e4d8950260dc05b3aa575cc07820110ba45249f509a12a5103e207ea94bd8ec31076a2f9676ba7b59aa9a71524e09ca040598fd83a14ce04a9b75c2bc3ccc17fc990dd35a3e1c54d0c33bfea67a6210f63c4e2c0abd0a36135dfac6fc2612363be4cb6a8b933234776aef7ab0ee8f34c61e19867514722ec1e2bcfc8eda3743696877f064976ec9e8c897429714f91627d5a684881eb9a90e1b7c472e9fba037dd4924e6f3115bfbd5be3253c2e4c0f5e296d38bf134bc3f7c476010d205c913daa113d82245a74d158230a479e8b6c38d980bb68bf37bed8dbc3286bd183d33657fa53579efe01ab4d8da25b6ab3ae76c5404bb34ab4bc3f42a66c765907837c1fe4cd33d958b4561aecd346912f3c83c04a12fd4c83bf2da1995f2a77e941734e717647cefc1ac323c027cea9661cc6306b6dbf5402e4bac00d4ae08a64673d2bdc7cb510cbd624d8a5cc56f761988620005869d1f5f4456e85e73a5bd849192636cb352497b87d735407b0527fa36adebe6992f838c8455c7da8281553f7ef23692017a30dda4ec8c2b04b9c8bf99f71ae1e58ee2fe1800c2f0564ce071376f90727d853cb78e6b4582a553a8140dde70598ac0ae79f2c5b405cafabb9e3869b2e57b2c92ad6293e7643ffb8fa28d60b2bbe180fe785eecc2eda18ecf9f0bec06eb6312afca40174ad6a12adc97da2526cc97534134003f3462e8e81d3b333788f0bb8fb4987d5b468ea8861a79dc68752aeca259d0756f10aac603a78451c9585728126c85df4283efa60cd7d9954aacee2dfd024e7f18c6fde400afe1678e41bfd93e13faf2eda4206ec4de558ee96fae12e2f696a7664048d8b624c4e68b0836e267067a7829031bfe7fa98425de3ca3daee225763b71b2738c4ba4d98b5fd2c534074e882e13bac5988e13b147c85854b100ad04d0a46d0f2744b02a9b7562e84bed0019e84ab177e2c7c4b75961f8a857fa10aadd8241f782cab1bf943906abe118f56b87182a7548d01320fd05c23f027acef6bffd4545208693a8e4078622d950c9ae090807eba4cd27191424e5ca015482f2502479334ea0a1c8b4fe21410c0457c498fd77a4f2facc7264b3a768aa01a6ac6f7cffda092b8265c66535bf110d9e1fb994d800a045b61ecc1c77655d61a4a6bf5874e9f1093d99f6c68f7f6580015023daf1efe7b8368ed2c211d2aec46a8bd29a158b46d9f41d706a3800cf03eef2b835a6c381f6cf0edd35de35a985b7b699e277a63074c68a788d1c5b4d613360000c9874045ea38ba25609f21ad4df8d770e1955e0b2c91b7e186dad39ea20afe9f3da69cf788dbd32a8a93cf11a5055fc5202e4a1d46b2fd656c66924589c2ffb04d4d3423d118189d7c893a94128cc5d7ffa241332905f7090bf47429de9b51f549701c67ed4f26d7e75d23b7d72fe3fa876bacb49d66883bb5f33dd5eadf50e62aba1eec09174146e97f4a2d011b065be50b7b68b1a63134ce8c4abf8d2be0ab73867484e9b8740e54ce57390449bf65de7a4622d8a1ef622cb942ccca040a07ac7ccb617f63fcfe751a89fe207a6060c8675d960e7a2bcc632779a2c8b76cb4f6da1d982d6c9293c9f74e824a68a51a2255f2c55b999542f0a0fd5dc7784aea3fee2e666c32c53157335d82dcdde5f26bd303a28c04f6dfdcb79b3fa4a54b309fc50d14becd4905e24656ca67124c710700140b8eaac90a7af703ac40ef43b013acba71f858a377df44870e374760b3b7e302d3db6db532bde0c986cd08400376bfb6be5409168bfaa2137a56f47eaa7db08742739e1cb0dc8a795f455b5623b5f1555f7edcbbf18ec9294b6b582d6b601e9d856cd99b536cb445d3daae72fe388929701955c679208f64fb5e415fd9757ed4a2426e9d2e467929374b8ac12c16aa38792d07caa87ffd0357b1ff89e41fbdc0c963dcf19c5346a60ddd42d2e0cfa8d1d62e4314407a7913a7fdf63c38d3cbdd7a4a78b189926b883fc80d9a53c8b8b4f0aca75055f604664022e064765adfcdd01549892a33b927e7604e227b37b97ea3643da86f941f1804acbdcca0e493715a17dcb11fd945a94de7abdc83c0a57772a64a343e76f28382f730a10d976aaff6b2b419330819024623880dd098385e945f61ecf678be69497831830c80ef854eb1afaf8178b3703878e3cb4645e39d1ae1597811d6b569f396bc1c5b0468ea8deb497a740370494a522509fbd65b864a5e7247f2907810524e491c9d86b5105b045b4d7a5e0f30e06472bd3343f935a51088522ef996c491491a200ba33654a99fe1ae79f3dc82625335c6d2cf42abca3d940a3f62b7eeaf1ca3f2f70ca0f2e5930b04a4f6e3cdf5c7d861d087a0947891494b484f3882fd9378ab4bd6c2b693049b97822b03b6576863706384977c7e84c13976e7e17d7a9bd7cb749538853876a0b174925aedc73fe76f090effdaf8c04e6ae31bfb81776b505e5147ca188920cf99f8ee6bd3ffd28041a30fe8369017de4866c24c7d47e37957d727417812347fc271cd39d7b917a383fd36aa804ef9b5f3f51f47cb0af49f539ee6f9ab0a451ddd535260ad494d38fd2db2e6c4e6c3c5114509130603d62d096337211eb221040f1e9013f842c083e9ab7ba94baac661176e9487a7eec6680ec2389c96fc74c071b80d18f9248b0e1fbb14ee3f19ca167f1ea60f2103ff5a678206b72ef09c19a5156d806e4eed65b5df4cf138b00e0341a787078e0b9ae5c043aca64a41ec6ebad27744d775b01b8ec37afa4991aa91b44fe823f790c01afcbbcb9359cec255a36881b8e7fc9967e205047752ff482c70aa361ad86990449e52c17ec022960a72e6b70fccb2f4c87f4d7b4cee61a14fbbcfb03f762c5c6a269a4488fce0f6325edbe087c0b7388d5eea42bbd79dc3934630dfacbc2d11ff656eab51ee54b25437aed62bf04d10fe8b69970e376cb9cf81d6dd520513c3dc4cc51803d49e270c63d55a7ac98a677d0d8678289eee44dac6a830c28747aab2779a348e791590080f76ed96c30370ec1519b5c88f185dfca42ab49a041e2eba64d86c8552ac22c1590e7176d69de8a71fa11afbbb8d567a780c2a02236dffa5ee0468626b3fb8cacfbfe63236318aa0223b54e3c3fa845bfa795d7c085b5d3b6679ee20d565e65b8f52249bef12266129af20db80154e9d019112621e55a47e90d28992d98e93ebaaba5798aa04fbaad442ab5621df27600cfa49e9819cf1963c2eda43401eadcb35bf063b43f185e8b0c1a52c03857b39cb789f99b9bd4ee5ad8e46005bf252537ad87a3c8ba0292140a22cc7518386be92552151da3090acdbd32d2fe57491bebb3a92778ab6161fd7a5453f66245e90b5f8a68f5a4fa5ffb4da554e0530264d74965edc4a20f1f486523fe238352b782bbaf991c5400a3a757f3e8c72c731282500b692e7107d6a9905c8a60d2e9fdad884440c43694177e817264c2de2c230dd97c34eea56544861a4198406192bbeb8db5b4938e3bc41754e45978bfda667a5e9bbd2147583419d2e79c7febb66ac1e129e04cbcdaa17014e9e7fa7746a33b9b6926af96ee3205fa84c5ebcb6162df2cd4f210a4c67cbc08e589eb27e819107e818e47b68f93317ec6642cb10bc5dc8903dad69689098c58a70f1e8b0341bb3cdd9d3eea95f3c2a46aa05e084d2ca9f6a9ff816f7895f7343f30adba16a0c26404bbeb4ff82c5709927c2a7fe03a07b27d2bb0b7871af7c3849085ae94b248fa1274c0cc9c102f9bf0f79193d6c56cc626794f073945d7d827f08da8b67c01a83f208a2615522cce67b2e9bb2cc2b080754970157c6048475c16813394e235c60238fe35da43dbebea98750878dac7c421224d4c2c54453fa9673389d91dc3269c400b2b6801b4c0e6bf7e251cc90f519fe5ed5c5a637c291ad5174337ac955eaf7a8793dfc9c4b5c4b7451f79b9914933811c57aad12ca831c29771e810ec59f728b3c9d4345271035f9998a7716696f54490080f531acbb93bf46419e2867e35be239dd3bc1cc2b57a35a5a8c2f86f651a272b47441d1bd9b89ef576168e2d4c79271f87e161f2e7206acd89c111159bdc9b4d76541fa74022758b64693cc1e984251b57a93978e8a4b59a57fa80756fed2e76bd0850216bf5dc589dd36cb3c0c82727e57b158c3e72c3e3e6bf2062ac78832c3088ab471648d9cc41c6cbcabc0c8ba2a3420c62da8e1cb0477fa1505fb979cbbdefe755f2f49501077e5f3891a07ecb128375a16117281ed0ccf08e50e6527f04377e28c4181df7bbf3103df01393c854932fa085f2d12dee607e4002384f66f1419af9d02a3b3a27a96e6486733e5128c2a14342908b73d40b8ad6d1ad280107871c4bf1e6080f7c23ce74ac830efc6b76b29680496fe1ade042de7f4cce38335c9267ce2a24f67929460a6788a2c201eee3e036a3d74dbb99cf351541cb21c6efd08563daa569e003da4b8729fcaf317107494578e52e25ec4c870f6f5e749e2fa91cefc7787db28e0d72d3e8f91d58d66b37f4ff6ea9dbb33210c20a276097844801ec32bbd478754448640a0ae43592f6749609440e7280840aea8174936682b82f249995f50ded109323aca115404b69de306c01e84dcfb02fe005b46ccb0b7469c96b5043f142cc4cb5dafb023ad62521816fd0b13e3c700615923934282d8e1e8846dfa898d8b017498c98742e6644c3b8db3c4f1e9a026ff849379953ee8681027641e73bbe6af04afbdd09b2fb2580bb81349398218c4c6b966072c1217c002afc808a4842a2232ff725abc569b46c82700c084a05261211aef7e4f00d1fb7178aa92f790bd77502d2d1503aa8d7ada0e6262b972a6f6557ec1239979961bd97a96f08d3883f80ba377040b2c64c459404d3557efc479fab8f66a97b16e50b8c42c17466d4fb91c0946a836973ff636ebe7862d2eb6ec046137dd9b4784cd1f7ce8ac460f35d53ce1eacb1f0a88aae5964935b7e5f4daa39e76daa971dda62e5ccf1c59eaf8e074db4b43b34997f6e46db9255ac7e38308ac0ad0d35eb1ccd01d4b5eb4e91602a7a0176acd2fc6ea6fe239e0a1e6d5d38b57afb8489de1e87eff2676659ecd2cba2c8daa7fd8e41040bb17815487d0c60ba65408ecf9a404800f5b668a5806aec17b58cbb6ae81150b4c19af8ccebd9f25b2ad4487c8cf31950398096dd67304d618964feaf40f5f770d898348f489abd218c72f5c857067adac08ae4a4a4c006249006fc0f7bbeb7beb8e8d13f01ba11f9594f8f7215c77cf168938cc6baee23e18dc7f73a3dd3e01fa0505b6cebc4a2fad7b55b4dd16a667012327c33ccccfdf2080712bb61586ba77d05c99447d658e47bb6ad2e1867251956fea69efc0016033f006941dd0e6e8063fb08ee04ce0c39e5748004c45ddb604544183cf12a352009a1b38ac7b8a9e6b246ce8fc994cb6f42675a518585d77ed4edee615171021280926f75e018273606572a0b6005f914006ffa973b6b43d4b034d34f52ca116ca8d5b89bc159b138b460f2aeb2f1fe276f86fddd8f27c1ef4562a9dd2b050fc30b460aa9316bddba14651484291996a6c6954347abe28d7a2513912bceae5ce264eb959047ca6cb7eb6128509023b6ee4a223bcaef8d0d5163ed580586bf3cced90412cd64cc8f7ee2c7b59685e7802c24a844a34bd5c9b0f7efd6b8b882856bca23a9127c290b9cac4f6b594e2a02cf983024a89eb8ca42a1af47204e902ee4ff1ea89010a4513376f45b43a964c48b68417040165c0c0a922b600f3b3b435aa5b68480ec6a9228acf3f1a3f72a436283f93d93a4f4773b7edd1e4146035b577b236f291c402ea05c74f580f31f79584773b6b17b506448ea829c8d4d03e4604447bc4ba764ca0ed9aacecb2c3698f146c6ccfbba4ac4d536c6e638e48c278a9c8ee4db7da45ddb2dc43572c7e5c16bdcb02e00dc2c36c1c1d7b91995f26d931b3e70efc074480abe1247033c2c0d97b29095827321a703b08996aa22be8aad44196c8a88f0eedaa3be0235cfb845f2e66b1f36d03817944ad95930d4947051f404b4e4f71588b164304c4125a8158c4d783d58cd722e106a78c1258039fb891c34fd5d2a5a6d14ea573ea74ae1fcebd97578e46a59e85efb9e74a705f96102f159343b88a193ee984e39452026fe862591274379bcd0cf6308ee11021239248b7119dac2c912dc3dca0394439889a4e20b922358919e9e1102aefae251bace643e70073851c0970f34f5b0a2033166ef8bd2f8e012d1333951d1cb95c652c8589a3952d5204ada2390b316a1490788d4ac4e1df8121668ede7350edc52f094805b143373fd058c5597605d92af55b0ce9962a1d2e88f081dcfe868b2b848f5ee44bd68deabc4717a3b7d458582e607372689305781726556e6f4f4358bbe9e499f76a8f729c5c13046e2c00827d95a6ee4051da7e41722c4358dfdc6ef28d72acc6b1817a2fff2264dcdccae3f0228104602988ce7f45a0c0239707db0fbb52e49c3b8e98304a487c3ea90f522400f7a9220b4b02ab68292710cbe1a62373b2386fd23b1d4223184badf0ff1ccdcd05e17f4a3495a1334897d2d14ed6cc35774196051d2379b6139800e9c7eaa8f03a3aa2551aa65a36fe2e83d6ff8f71514d0aeb5bbae60c1f12e3da76c18258795526accdeb834fb4d3fcc2325bc4b305296ed802be6746618e6fe27e1d344d4043d52414829db08019faf0d951d3ca6d0fb0db2448de7ea52879901831614dbfce774a03e12e27f9cd5b166e86179acd3a2fb32eee4a5aebe680ec0801fd54475e7c17178ac618dc01413548369d2a3b2f048427b5f6f86dba8674f2c072b0574c7e3c8ccac47c6ddef66fef7b4eb2621feeb68ca78d72a92a9c88680da2e3a4312ae6207112c3f43b57617089f1d23b0307b1055fe98fd4e25446dc87404bd1a734dfeaf7b66ab6e5fb42c3442d2b358bfa04fbb1ab7bd5cac80ccc49d3a39de33829dcbbd19e489937f6ca421be30fa3e77cdaceba666e6c499545cd09a27624fa8630e05d57f24fb103315238f14d798c8d563b5a41843b1ce383d80fc5fdb5fcf6c0228dacad1c2808bb5ce7e1651a7dd77b684e221d6e2faa554bb981b3f3512376f2c0c10663972ed7916568e39952123b4a051936967e19ac05c715b00068bc1c631aa7ebd5ee44190ef4b14e4d7894a2997f7a3058973d31e4b6b14afb3f6a7facb11ce4c548c61c485984d3c1a73882c400cc31497f382590d41a9b074b314f974111b3584c03a99792697067d98e6547d268457971ddc451087d39918567f0b282d39d63f9882b2c212ea439a4a5e90201bd327a888eb383d5ec91dfcf1d7d95cfbde59571f4da0758e688909b616cc2cb0291aeb4a1e44a60564db53758b9a2f0ee143fbefd047a024648fc8c916d78b50e86dac2912e59976058b1aff665374201b123d41338dfd9688ae4a0b7fe4411ea193219848127e4aa78b10548db0a2174526f223759741ece4a53c88a4297d701177ece909e44d770d49cd965579177426476b12ab93204cb17d1d48466fe88968e9a49ca4c3dadd273170f670ca0a3a5e360c453428e18936966214ad5e43f00e75e493a8d0629cc594c073f3fdfe64a1cf1a8f6db844575101bd96b484847ed63b158b22a02635c642beeacbd9b047745e202fa50ca24ce6dac8e212c444691110d7d1314223d82fde8c48e057178d0ac865984883518888dd2599f8450b7e9280b41357910fe397c9985d5a5165362fe03c84826dcffecfcc193eafff38d7ed2dec00c18392566034cb6b1353e5570bca635b620d4c59a2db27c427a0892b1142c4d057df7a06ef540e0993fc08710cc9a7f27066333218da68e63313619810743c1525bd8c1ae2134c86e08e840e66746e1c2c4564b1e2726863133a13b88e158fb5482059edec8c684f48c5412a8e11b48f3f526b9b42ee5124892e44f24319efd28d4afa7d4219345f115d18a734789b0d35848c5122c5f81f37eca75cc4f331201170d3631dd098a083d6debd566a1502a5be9c03abcf0feca328a9cb60ee91da251fa11cf3803679b7fd4e6e809d6d30264ae5a28974fe0a966d15d17827485e9f0931f90a617c1b30f66a02dda7474cf76b5637a631529f7cad542f95b4a77c3541f48efb3eb32ed735c69d65844521c4f04b9063ddaf4ba758b7597a6e83f315f14b36878e0b7bcc642145e556336621dbcf1a906ecfef3278bbdd33986362d5e18774eb1ca1c2a55058759ae7d8f6a722fa1d4ac6ffde6a4fa087410a4b4f8d87b4524bf6e317220c2d86f721ba1c9138e4fc5617439ba399944cca104cc9faba391c30dde2362ba23d200f024da2688ac917c604c7faaeded02259b290ab88ea0b5722b143383217d23c1c331a0c67d7c518642761a2d1e16bddc809ea70e6c248a36299146802b70cab72ae72a29b5a94114aa74c039d7d2bf84fe5732e7777bdce6f35db43f5ef3ff064ef7206a56e0d6be38dfbe19b82eba68bfd23237badd480f54d947b17073977f88c4d22c396684eab919a5fd2605d9ab9993cf93dbe47f075a9a579f9155ac96466387c8279b497dc7cd559eeee6c573c3c36c0c92df16274f1d729ec118c18e9fc1248d869250ee8d36b1a76c0234f2b4839c44bbf5cf40906162177f0c3b4517aa7b939bbb9589a1b5c36c142b52e33a19b2a6e000f5777c77e97b83429d10b7c0d6a4118d244801580aa50fa2496aad82c955006164d56af300d0a9ef43e4500718fdeaa80ab85e39fc21eb63883bb936bde26d2c784c59426cd0f236dddb7b25f6401ad8171e006b4674632cc28fa43d17d10397df3ffa68a2342530f5934d399f252214eacaa142508a8110b16e3419c8dd3dc459d2bcba5c186285087e22dccf25f06dc3af35a3742c863d3a64f018b2628d0ce98d394e9f0fbcc039f1cf09abc19000c54b1e3603bbe5718d45604cc8431ec515552dc8d815fb1fb1d1e0610fd9fd66b8add59b2e5969f9b10412581ce8899f76c6ed6af80b0e6f273adc0920185306a4ed9bc5f2041b00689803aef8de446a73d098af6c1613ee920f9e56a01a11549adb5369652d79d5735765b00d1db855aabfff21373231f667fc92b11ef0010a47622a1fa655ec5d3c8ca97de4e1486531299e93193f52b25413fd413322cfb711580640b6408e89f2894a081b0e64627fb213b8fa252baecc88c55f166c58e67c07abcff9789f49b36c3c34a3dd7162a5928c8af8bc69f9a5ee55582a208bb4115dce23221b285366735120d066d94d5b6b4ad06a98d2442e6033780f0991684b3f999aaa02868082155516c256f2e641966af549bd46e7401f2c27518a6a2a3a94a2ba9e4300c19eb74a0a72312664d2d52055d0b57f003d2e730ec0b583792f405b0f19c2506c3f182531c86dd9374868a884f60c68bbb454a0ec36ea01bdde0954127ec20499fc330687ccfeae5a2e08e0a50c5da076e64fbd86118a8b4bfcb93a8f179e4d80ec3e04efab87ca1b56d5e92c4144986a35b4a9232be554b835b7e2aa8f3593af37f6696c276ddd6ec81a32ae71311e1e40d3b83b4d0e826eabc9046deb4049112f8faef26c01e47e075cc1243681548819fb1a9c4fb5c9f1e8f7437ac460f3a8b230eb8757a8e4a08d93916f3d5c70185e751e7a87789b9fba1704229fd1115da1c356853ad3167d22c7537c15c3e5fb473f586eba73e6f496d186d13177de7a32740859b5ccc12318ac244c5baf1f786ca30e6aec051669e64c601f9578b5eb61ce503ee1764b8bff5ade7a319390405e38cf8941150a3485207abd9f0714fab60ceaa4183ad037b98bf909822d90ac805aabf8d768643582b208ce201888d1bb61398d9b36d9411d5d37103b435c82359bb977334814a76244fe1c0cefc132d48e9cecf11cc0044416cb8f748f6c5a2968d2a3f7e854e683f3dff9d7f3043ab1e47aff091308b6b241c5bac1fa3e3aadab1dd951e38bcbed926a1695fef854f09e5f1d0082dfaef09f7e0198eada01ae185c1e29f40c823898edc777de0911a154bb01f84e97fa69d7783c54f9419cafe02fd4ff69f23d2fd499a93abf3af3d651e3a185f915a83fd42d2555ea3b30b8a9770642753d940bd35f3d85316aba63fa0313ac53f8c105d3647c4ecd55371dc8322e611a01a2eba17e07ac7d5d1da60e932f2151458ad5e285c564929171ff71d5343da584644cb17b6f45aa421bcc0f8d440c1faef0059aa0ad0b2fae3dcb1a48884114459a8092d920a1936093321af0c94559cd2fcccd33ce6aac49781c98ad88f157f24b41d7c86abb5d9689c7adb4febab1d6a7351cabff1f22e0d3f05e022cb4a7ddf76f0560b7af7aceaddae8f636a5baadf2a2bf26b7141a69b3a6a8c83c2e0dc6067f0538a9e3854a6e140a29b0d8ccbc203451b491d8d3439f18beb51d0d4f5ace8aa4905eaef8f5a6c7f0d7f7571f26b84e13315665b1e46f990c4479498ff6d9b74f233e9854c747eeffc8c8ee0fb7c93cc7ac8a3d16754b69f7ac213e71ee79af2e18dcee406edd36484954f6523777e86ef0ab4f0383a49b290f97f789eab61f534efeabfd5c92643fe938ef8f3ead852116565f4b23d63d52b683779f9fffbb9432662f696440d5c930820b26f20dc9bef784718506ef919f79f2f73d93080423ae255c68ba2f8d2946b2a62e89c5d0bb700508c65a0ce81546aa945ef868281fa868887b26af1e603a4642a07890ce642783e148a2f7f4a679414e4aaea2e57b366c0f6455f31c8fe4d47ac511c2d8cbf8c489b8da041ce9ad7ef304d56ffc67cb557032c636fe64243b323f56639eaf6ba0a5ddb5c4513a2c35a5dfbeda1c1afcccb603e11da693cae65c0754068f91a2ab6973176376825a0e24196428e0afc15fdd83aa242087ea1ba77861c8b68e7c165ab54d88352a1416b1fd7e33a03819d30441827d511b6c5fed25b377e94a687dd484728e43f8a48b8f398c7252d8cead971f2882443206473f6244c4753e8fa1277c7964a432e19fc76fc68372e1ed34006a4081bf7abaaf668022ebb01ef5c9585972471528b46f23c842513a475ad2e9a70277b4da0bbc51efc925317e64fdcc804e94ca6187414abcbdb6b8e6eb580f0a832f6c4647f07c902535f8e7fa4c32aa494fca43292a6df8cad4d434b743b6658a389b62183ba5af527eff7142cb2d61320fac35c8b387a7394369c2a9ab43c04a833a5cf4ba68ca2785dcbeaf2dafa3fc9d668f9f85d4ee0948b300955b9f50ea3d750e5088b717c463a2c3953a24fae90247567ac76dfdef5d253b7d9074b876d8b8c52a57fd753854b07982d5814e479197fa35e765a87a5419a0c8cffa9b5c313c64a66d390a6303b4ba755d85eb49d93d03b2645bac6cdc5a3ef09779141ad94f8b0afbb36e2ce99aec13e71bfa1dba7c474868ceff6e5b0f6278ec2c6ac28582e118e58658277a5c312674afac40a41a4eeecd24da34c6439869c6cc12a69e4a39478f2352f7457b152ce5d01838ac2adfcd2a3fc7dfc3efa18723ae42d8dcb048a94c4f44c29496102fc38d2db8c418bdaa50044f8955ab6e989a55642af70c85c837be4e6ea384aaebbd1dac11f54ceace95247a8ab8bb2240cd6cce176a76a02a49dcf977a61ae9882f206e35c7cd9ee130ebe9d29e70800e9719fd9822c272e0a59a4c26a1dd6adbf197fa056da15e67691b8d136b87527a28dab7452c68147314fe64fc9f895bae89a0b17c2a28ce1f122810cb8e180841a6338ed1be6e0cd0e68a81dc32b1f4106dc00ef1840de0e2f9064d3e0a7ae8e9e89ede64a40f21a26f138dd5dbeefcf5fdc237588816be4a792b15099233d40fa4d30cd8e14e767c8f3ab81148a8e9dcc0f182c21de4517ddc7013ac654c6d9a17a79a2e1078af61e9550a7419e2556b505c53ec8ae2ca65234994b20a231c6721eaac377dd2cd4ea5e0ab0cdaead0aa2c3fc8c3c4ce27bcc1381bd789af39f4c28a1247aa0e71399f5692df37ce88bb713b1b7469ed97ac0f0ce3458c54415be5421e4a7c3c547efd5c9a67c8720a8a1809b5577c440e6529f5d822ce77e74a3384d82449d27baf06ae10b2b58c6f42262289e9da809a315e2f6bbdacd8068efebc8a840ea18ebab63512d10286b789243e2a1d11d6bc9e634914d044d99d7cfbfb6877b3752b2759125e5187b14f1caee3409bb6257edb9192359d4aa7e6e2468c09b17a8aaad8a8b2e4e74ee34a424b2555574784a63cf70ea926215ad86633a775a3a3df9b4f699943301d0156a572e46c43353608981961e6985a8a877566fd36a13d90f424eb742198df0c8cc0700fcadf39d9304d0d63dbf977512f29bcc9841814d8a4673f64045678ca27a5483dc5a5aa8d5bc9560927d83644c0bf3093dc1d31fc4a0402de989e4feb302242a1a4a6398669901c9b8be64c60c1a2c6154c6db0211254338e1a11a6c6fe8a256f7a500d7ec1b24a37acceffa014f9621830a2d56a738dfe98613e4a48778d298b567c256e17537d820671003850df0eb980d66700225d370df822c67dde856e067f5158a4920662049856d3c45693f0b899990b5e8aa176cd059d2486104f817dcc61998460869dc0ec1969387c677ac4a36a3513e3534675e3ddfb61ddcba13d9c6559e14e3c8a38827fb9364fc0a5d75cdcd88615190f439912003de540151ad7c692b909eda97fe406705926f6211a2702721a5960f6c42852154e614a4229248166458a2f067a4d5934b6b7f493b25016578ae42de0216da4888cd35f27389b5a9dc935a40fa2d1a66458ab167a479d589c1d87e59b2aa2bb4f3905b70f095594213896dc655176eb79a2a2c1e90862936d9a61bd421daceca1b2c32f5de77ba5a4d0365e7e3cb69b05439ae9e3aebd203352ffa8f562ffca880fabc2d20430acefc4e40c1af8b9641d038a186232ae5e3586c12b6c22198019267f00d4b1b54657c50642c0b27ef056251608aa3b09c3d50d19847398fd5e1abce2c6a55bf1a5eee96c4329ca0813a0174b1f1121a6fd8c69a7552671c5a2b329d01251937f695a06d9e49f48ff92f064ee34f6c281f9b182cc894c8345cf610f6a945abf3251cfc78e5dc9cb9caff9c5a28b1c05da07706646599c822b8ee093af82c69a23c41fc1bbe61064c400b34ae4bd065b8199ad59ca47ec4e22904114a94700fc7dd436be2f0754b3107cafee7cbd650a972d09765a05b11c0acf0040e884be05b0ba993529854121a675878f6b50d2edd59c1d655929463dc23982bbb63227625bb68afc547bd983ab3097d5a81fc557c6915e0fc9c143148befa4a1fa055a5ce5cba385179e709d539452ea376331c752b23be1bea1952e781ccb632eabd57d521769628eb9422df2c92b5eec501ecccbc639f686faec056fc88ef8c116366c7a19dc3d3dad04df931fc758bdc05019031abca0adff4eae6ef5238da4560bf3ebac661383da2b375fa8a2d3269c713450fd4fb2c66cd903123d107d0187c020e2bad25af16e20d14a6f6d75c93bd91deaec3489a8c8ecee7681e8179548b0e1268d3f68e7001f676fa3f33123f70208f9176540abd2d35167741866adb5e95ca57d6419e54eb79aeb1d2d450e75aa38d43ea054fc54e482eb5891db309c0b46c5ad290332258b98835ddc5f0a020c66d64af74cd3a68c2ba70e359eb1c187c1689d0e7abf3b16382f69f3bf3ba2500a8d2f9d0c2547ce80df6b093d2163883fd90e35fa9c29213253eb18824527716d6624ad6aba76a733f428fdab61649f51f0e7992999948323def1229918da65c8d5746dd011673f7bfe1e395aee39d86db9a12f9c99539fe2b2d0c3910f223d64822259f466ace828adb95d5db2da9ad2f301935773a4af11fdc3935a0b3768cba13ec3a653594622c195bd57d935270f83057e9c6c38a674d815108a4f0c51a5245be19b54b75444033e25388d3ad53662b3cb228b99c78760a9de9d0aee01b9463d371b950543a9c5dcc447ab7ac3d51718677a58425674278c4129224feecd69a72464099d131d0a916aa9bc2aa51402193f533fe87a5646c40b21a80f85b992aa5b58871af191f519065d3377811dc9fb0f6cd20c7e29a7948c1dc14f6496f10f52d4e33f9a6d3df6935b812440cdc31042e5d048d0e56106058451de8651b1da6c4431445a16341277f6efe3940e25f0a08b228998b42425cd85e139a484925b239f44bd2e46e4a7031df068854599de6e9918d52e7b2fdfff944c0a26d41a3666059a1f046d2f6de7b6f2953590f4f0fa70d50c4282218f5e64452b1989858462515ab896885e844bc4274225a215e414d9f7845134fb69831a94aa5279e932d2480a24eaef01ee065e13dd982d5841545c97b223e11b3f09c78567859b09a94542c262c2327ac26245115442955056d9258a2a529540a0a0585efbd125ff8b17ccfd279a7500cc11249e5f227d2b3909e8585f42c2e2921d3fb8b4422b9b874a416d29b4e1fe4e2d2f22d2e2cefe2d2123ef87dc7427ad3079d4ea4ea625d89aaa010fcbada52c32c78f0c2e1e5536000e50583272f5ac5cba7bc208a5757e5e5754ffa507fa2ef42dfe5e442df2544a58482c0174fa75348494fc3dff5e5028a5f0af25ea42234e60a4127558d774905a15e4b20a1c4ebf431574e8f72791f3a17fa29a196ef5e2e2fef724a0579af13fd1a2e5f43e54377a24bba17ea7da842a76f7997f7a1d617aa460d5ac3c68d7f5105d508512e3752356abcfc0b4161d08728175afaf05b529e8b3f985e255510f82455107d8930d417bb2a2e3504820bd070419497cdcba7b8c0a8e5bbaeeb545e3d05d197d8bd83424b9078f992eee5e12b88aabc5f0289fa315762d0f01a844314422977558db9128306d5a1f3dedf5d70860b4e203e65115337eaca5f6cc9000a143f683f5885aa2a8892ea5795d7629edef42c26d3b7fc4b8ba9e54d2815a9c5c4720a554230504a9e6885c973048556e8192f4a55a8979b5427f164746a39a55a54412c54e5d515045021952ea67b514451e958fce5009410e9bf575048a5e549ef430dc5130faa846598516f5ac4ef5e3ca962d0a82ca0487ff05e24aa0a4f5057dd7ba9504a484628253c41bdf9c8a8372165f942324e462c9fcaeb0a6c79002a7c0fa5380045cde8ce109fd0a1516f3cfa0a025f07e55356e0a4bb526f82422a21957ae353a6d0a033a3def894159cd1a11173053a03c6a041673ecfc8f75ad251d5279e54a4a76f2aa9c24f0c1fa4625d7566d0d07482015c99d20514efc86de0b585012d0c6861c00e14e9e5f5262886d0f3c0cf13c58e44aad42b752a77d1528b47c32eba2b3ede5702297cdff77d1f151768c21048d082134c61c5023a1f025edff7855dd7c53a1cf0fbbecfa7a3d2f2f2292688c2cab70227983a0a8a2530e3a889134c60099c80578c314504c7888114e1cba78c71868f142bbc0ff409820a50e7755dd781df165f8c4aad0ab992127a474b78b18002484003503ed005110e00c50052700076312ab52a6401be2a9a08412956c00238a9c2f791be2a556224cb2b68d542060c4c1773e3465d553175f46ba5a159ad72e43802d375289428d61b1e4ba7f2c01c31a8fceb0b71d5122fd28b2495a80a697d7f21f5691549de7fbf84c9e4b476ee02c31096fade9358784a2c5d7def3d954a14c2c2e3a5f13275ee995cfc15b204a1b5d4791f0d9d446aa95f496798beefac886698e1f27d20e98580f53b9427869406d117187e1f7eaa2aee32e0c30044fdee81c4f7beaa9c10bdfa9f4a0b2f55539d10f0c30f3b960ffcf0c31628ea97eabacefbbccffb3c9deefbbeaf03411004bf541886611876a9effbbeef6b8182c47244d4e9de54d2a2537917f37d2a21e057598eb84ef75f8aa6f1aa29d7719d25a8c7c2a4aee8535f3910742788baec789f10f00ab4044694d25abb2ab452ea4d198307e2183118c30925702284baa3510229a0c0001538791ff87d52aef0aca0948221942dbaaeeb42910c2952beeffb4452151c8461482a49b922c50a894422954a6338094d472614a5b4d67ac68b7ed799e143453150158beffb401014bd53e82a510c54104a14c5936704f3a258a044315041620925b2780b13284ff52da78a05ea868b0bcb8e5347a15e5e5e7aa06ab0ecd460d9f1cff33caf868d17940d1b366cd870a1c55d86beaa7e48c55fc0f0a640c30c32c400c30b2ec0b4c0028e1b366abc841dc80118647c60dc00047114010c344010043d1034c1f1640a08ba80a92b9a02010e40500608a21086132f614451230c0968208c12d8b061c3060e1c60802186b1021c3870e06081051038f178d042184c80213571a1858a175e80000c2f5fc440860c2e0061862921a0020d380ef02e5aa4bc50d9980280134d8991e34453359c686a8c2729558b8b028eae7c4dc01553c0d842a5ea72e0d2c27232954862156faa1d083e65314299a0381427fc2fc584147e4f4a35c9d1f1c230844154f9789fc445e713c550a5c5f7a53c9559963cea45abe789c00a58bf7082e8538300aa2215b5fe0d980e67890e546182a30c44e00029a042a75201b2e0e5050712644009557c0102230841a77a475d57465d55e970d0c5d44a2bad95d64a6ba5b5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb4d25a69adb4565a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d64a2bad95d64a6ba5b5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb4d25a69adb4565a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d64a3fc8f4bc239917984c3d50b57a807aed4ed503a84f0477c2eec3ae7a401445d1d4529fbebf3c5b77e555554274098f561e7c9e6734a50b346e7471461755bc70526bad5e64e105033ccff3ba90224601411014495d3cf1420aa9442a7971c58b27c078f18292a954ea820acc1747a693e9f44516748a1765e4f842012693c9743a7d21e58b282d6298589c7042899ed1abb3f291fec55310ccebf59f8a0a9587920aff94229d5e5a388b0f015c422d48a697d8e174544c21142aa4d77738b5fbd20bca2bc833eaac88aace8c108a68d202fc52caab22bec22e05aa8e50414ee2e96532f296f03cf00c93e708ba61f432a54aa8ae13bbf757bd29557550472ad411a8421d79a8a39391918882d1f9aa8ec9d4a53ca30e47147f8b577dd1a8538146465f754a2a171c70810a421da18eea0de92b4925aac254f65e41a8a320174f75126f88f513c28d90e491625e1896c2522886611886a4cf0b43d21786dee785e0e7795ef879e1f7799e177ae1e7856129f4bcf0ebc2b0147a5ef8d5300c23f4422f2c852552034017ba88f2821a9e17a3f1bab00bbbb00bcd78e97caa0441052808afab127a5e18650ae2573f21846158ba7551aa84ef91c42e9808430a1659d9e2d1176278eb428acf4a170768d141142944108c920093e7799e17e509c98bc205491ce3e8036b105480beeffbbe087dc28f7a54c84f0cc3effba29c007cf99428649428f0011780dde7f3811988950a49fcc00e3efa5f10548048a208450c3f60a57b41c309554005885274a604784fa270f182a92bcff33c101ce3080441300cc52827083f2a3ee0820fccc06ba5555edf0e3e60c5ab4aa0ee355e402ba52f66d4aed628428852c58b3285ceebba2851ba387a75c1441752785ff8c428d605a9ebbaee280a51b24042094250c601743a6f8a57d7051aafae8b03bcbacff3bcae49d70da00a3be042ca117c108510e8749e14afae8b42c6abeb3acf09a90b575e15cff34aa1170c287d37afc8ca2e855e016c80e27d514e5fcc4aad0a098223f8bc9b17525a4050dca0d8848b0b6e5ebce014763151650504412f0a2f9e8082a396ea5325082a40417c32e0a204a0077e9ff785024c21088220088220b87a81a0f7799ff71940000d78820b09c480054718820e142fd00b1dbcc00f38e105821ef88921f84514ef26aaaa5801411ce0e76d2bb73de50b1c7c4145ec60c2308952fc0a146ac6938a83a0cec9113177c400904842095f8252ef090f88f53b18cff35ef5bffad9c0c0e45e616a77f22b4c9ea3bbc9c1fdcc7e19fd39e48f59f2353a6e1f24be743ce962eae30f125faef383502f970f00d4f039de3b9c1bde8695f9446c1f8021ef4008fd4fea290d32c0f095be8004f99d179ec2b070e369950e47c8d320f1d5f3de537e10ea55fb20f185e41d09edc9d90751013cb5f1d485e5bfc33995c40e6788a744bc11ef1d8efdd8572c505414512818987732dc6f8aeaaafe007c55efbb5117535f1c520589289c2a0805b3554130af5541bfcaaaa055fd25aa9ceea6a255f093534a7dd1a60a124d29d58990aa3e0952d5b256513455104a9ca9429c1e3634cfc2a13ea132810a1550e7a6b4e8e16b1d4ead52cde862ea0318b0baa18607c011adf2e9dc94163e7cacc3e98cba2dba982c7cd56141af38591d3d181d948e0abd42af783a37a5054f47a59bd2b520f51566860f7a271d4e67a58bb9e2e4d5e9dc9416477ec8adc311f2c2d747b5d031a17bc2932755e7a6b410e26ba8afefd3e1d47880c70028368260a040a13a37a5c5101feb703ca32ec6f395afc8e870e87b4e56302854ad64dc9416b21fd2e150275d4c51bda1061880dfd0283c880ee7f4b53ea9450bef6f8ab4e32b8faf5fad7438385fbf5ee9707a7cfdcea8c3d1e177f8fa9d930e8787afdf5dd1e1f4f0f5bb271d8e0f5b74383a40be7e07468713e4eb77523a1c21cff3f587af45be1af9fa9d191d8ecfd7efac743847be7e77a5c301fafa9e518793e4eb7b471d8e92afef39f1aee87084f8fa2ea260a8113da24ee815a42a08664cc95236e55d4c4c15e43878512354414ee5458950053919025005f915b782440594f22ee64705842a8842e95111a101500d5109a9b2a30aaa60fc500555282f950f55caa5ca51057557dca878ec50057546352a1a5550f7444615d46df1a2cf4ac5a8823a305ef45737a86a48552baf2e46a54a753134a882ea91773132a86250bde042cabb18185510250347ca86918b2a883aa157ac6872a8b724f612f29ebcea77a9aa72002c61a3a395d20a84ea080d93d32c504e6a57753c12d8a0891980918515a650f19ef02850c597937ae353b238c2eba63ba3a5a5e56505be041840f94115624003285cc100a91e14cc144fb4d429ae204d818518265005e0e7022f07a72e5c054105c8478a219ca8f848c104d127082a403e524c21a442c507680a23b189c92406a802179c723004299820c514c02198a64cf184184698e28abaf2720a01a244c02485c505285fc1d01c3031886198e8cbbd294d54a1ef39825e07d47b2f5255972a4dfe29278cba1b30cf727485295c80024a204204a6f0041d175f4e75e5752c3b9e1427c028804855529cd8e2e5a9603a2adc247ed0f7f4fbbe0a7e9f2a07e57daf9a86bb57bd77b0f3bca7283089b47a8a0a3ca094761e102827830a68a8a8a084cfa3a8c2033c0a98606230759de73221f8795da555803286c9c5538da1bf84151c88410cbed8c1135a00011a36409a810c61a012f002bba8c1110f0e08430320d80110cc40814e6d62819602bc9071c5095f5c11838934a828830c09e804899e13af20949331ba201806a45601bba4cd605ab6636b66e72bc37946e7ab91ccd4b4adb95c3be3db0da761d766f30c9577c635fd18ef9ab6b5775d9defd0cd7f779989487bf3bd3398ced99b5b318a79680bddf3d0bf171aba0bfd58a02d54b4f170bcb3c29b21aca2f8791da55e9d02e1f5403dd4e1f3ea94d2ae0ea134a495d20e3ca2d24ac3cac2114a411a7aa52cadae82e0aaf4d4abd573423d4a6b8942a152927fd4abdda534a8525a452415864a2be8558a844a29582910b4054abb2a9ae0ebc216ca02a538c48e3ea160a5b476305abd1269473d511f22fd72743bb57a355d8ecb0d8562624075cf6b05a8d7adbcafd2cebf04d02050af8e42a19c3af568a54aa062c581d2fad5da51aa83ce50919e6aad15fc416fa8d5ab94a66b995c106da02c355ea80ba05f75817ab4a35e7dea97a8e7b504fd63548ace5326a0fe51570a6a4741ea8594857657d42aba3a9ad3d15abdaf27d28a7e9486345e0f2f34b49640b1524a6948a98bd6ba830ea4a4ea75435455893a194a32552a86b4fa5067a832743274de3975a160ad94c543755e75a1d64a41eacd282907357d957eb40587524a290c3500a08954a94c3c85950241454abb4a3d3a84ca507bd418aaa986f5a31dadb49a6ae8d1eeeb7ad08eae28899e28a53ad0196aa90ba9e8d14aa98b5290857a837a957e26dad51968d7d5ea558ff6a895be504b944445af524a5d54865a0a3bea891ea514e7a90b5197c3473b4aa21e0c25915ca62160988102c0a3b58235bc148583c63484d24a2ba554c643bf391212502b485afe404030830a10164138e3c7028106082054719f940edc081062708da4c480400f16d8488f0db212002c667042101b034d8f14cc4c0e105a3080635972dc6051a237965a8147953422c0e3c9155ca64a15666055d9a2b26216c0393ca1c12187672d61862a7f9ae1490b35fc898d223cf655e1ef11c0bd7377f7e1ee475c89fb0feebe72d46907ae73cb6e4bc24026a51a58601413b274a4307481147e5d87e304c4448f4a5c812531c73bdd38850238ed8ea563117140800618812d3524792c1619723660544a72223d560b1375070c1f128f823b94c0880722405e0850bd924724e60646ee04fd5c3726aaf742275303a31c7c9cc0e1a2e3442784890218b9405272bad100a3202d9ca22e45c12886005448ea583e21cf005130217a2f5d0d0d4c486102241c6cc044bcb280966afa7c78097b783fdc21a03461e35b9582946c88550f87b0471320c042481331a0628689184f9cc0c8849b3980002c362ef40b23176e9828853dc092d8d2e1f008e96428050999e821c38f3804869d2025d290d30fb983142394c7ba29853d6cb08025d38eca080b1895c42133c8a030fa3ad4474120c0d2a70388c3ab07138e748338042c852eb4fc7099c1eb21b5702386243888ab9e23363051125ba10e161d383c3ee1c90b5ff85cdd0de9e4ddf03e84a4b0e4cd7c3f78393ed00f862ef5b1404312c7aec71546628905120e134e8ca86987b8f2727839c00b18e1d0e201f972f86620e5f06270a9e96468c2a83543bb5927e375df00544620009f2dc871600354a440e1c005b2786289248ab4d0ec8e31238810228824487e7c880460882b47c7ca861a00f05e0a50d0838f1a542fb8103e71410bb4b000103b3db864c07132812710230c0d6ca1451614c0e2090490ac6e70400364422c4109307c002aca990f1d4ae1165538c121e500075c6ce1ea71d3c20d53490c6380e10b2f88b8a4919e00f004d989c0140628408d2a3c44c0810d5c60092549706e606e7831a0e284243e78b82185a0042210012a8cf4f8d0e18613ad42a5429d42bde259792554332a10be2a5407f506d506a41a9c68506350c5a8425d10cd21caf0c5c0e2426da1e2a0375e6c7c35ea0b45792dd5f4952a4914ab473b4a416771e960e84660e44961e41101715815a16c4cbc54c0e8fb4ea10d3a60c2c3a2c66be1940506c0278c3c2224164a31c010c08824004f886e06d3064f621031072c753938b0c04804c3e806114c90703a2998742c4a38fdc0e84bc3e83bbd6003a3d396f9801109a6a5863a7c339f1547384c2e2ca0092f0a239714ea3b99971911e6258d26be1cc49c7087cea5db41dc9d8c47a4871458023360d499c0173c96a9a6a3dec96395827c398402005f004b60d0e9c6e906a905138e50009d159a005fe8a034f19161544390677b580d3278ae930bf8e2d14ea6fbe1f9b0e0086ba824447d60f8d2b93e1c2d1434759f77eabaae76612776a4520c5e1722096bb8f8945e4230a45de8edf0663c2abad0553132ad7860c0a825034cbc801e0c229026bc1f34a182bda7718522e4000731a032850c1ced278d2b54e16447a7071e70f0b90425ccdc807211c3218430d293c60bc69042031534572cc08706fce00630500109bee08016332d1b60330ac06d2a74860213acf0a006344041174b28610411420461a44748101a666881052a8811020e6c4089246032c4804f1a5c5a7ee083253616a334ae2085281031440b2cbcdc4005291883045f78d1012aa63000cc08012831d2c3038317a4c00522b862c80e74008317a8000524188105b280c2090230c1ca0d6a40821188e101264697e4d97961b13284327e3005052108230a1755487149253c3b312f2c3078c1140838a00a26973422003c41767470b5b0783e843260f08215a420046144e90017079882491101e0e1410717ce8e9a981a2f9ea73184327cb0822929404108c2e8001707a8620a299804a10b581144f430d342a30a447e7069e9810c313889028a2094d04c400a2872451a20a5d15dc1b3c257854a051103de052a17550b6a536b3a1ada32c954569743f72cd04065a831842f742e5498af05ca02c9468d1a1dca73616941b1dc38b9608aa1f442124530ec40f0fb3aeaee7ee3ee2f78c9dd6b705448c4af29b3fb2cf36de692782c4f1ce8a8700677171d15b2e0ee36380ab412f3faee9c6cf57fc9529fe5ebf277f93ae4b2cdb636befd8dcfd7e58323408161b87b8ba3c00cb8c79e7696e7ad117dccf3b0c3af78d8e1cf92766548b8bbc951e012f7d8cff0ebf2774e5644abd51ac2dd5fdce98bbb03c051608eebdcd23379a3c01740cfc9f36efb1ae5a8af0cf2bc2a477d1ef89e7c6dd3ce6bfe0cff673ccb76ebbfb4d36617e2bbe9dccab5d1766d33772c4ded2210f719dc451ebe1d5edfbdd2e05e67a044e851f33e3e67dc88438f1e393d707adcf4e0d163470f1d3d6c7ad4f4a0e9d12327270727e7268747ce8e1c1d393639353934393d70727070706e7078e0ecc0d181638353834383d3e326e706e7e6e686c7cd8e1b1d373637353734373d78e4f0c0e171c383078f1d3c74f0b0e151c38386478f1d393b7076dcece0b163c70e1d3b6c76d4eca0d9d143478e0e1c1d373a78e8d8a143870e1b1d353a6874f4b0c9b1c1b1b9b1e161b3c346878d8d4d8d0d8d4d8f9a9c1a9c9a9b1a1e353b6a74d4d8d4d4d4d0d4f4a0c9a1c1a1b9a1e141b38346078d0d4d0d0d0d8d8cc6fdba3b0c8eeaa4e0ae73cb863b8b28b156a555129fc40fe09f55629506f0ee34ee9e72f7992e0b9d5b3a5fd22c71b2999bf1f8ffef5e6570af31b85718dcddf37ae3e509aa6ec7dd4f8eea7a7437b8bb0b8eea5ade158bbdabc48ac5deb567d7fc2fc562768d56e6ff3dbbe62af62ef29aa59d69cb030fd50c777f475532dc5f971b27fbd7e5aded7769f2c461d9cff06f1cfea24b768eaa5d4479d60d37fcb64f5ea1b13cedcdbdbe5093a831c41577d7c61521c239631d77af8eaa4adcbdd5caed9b6de734b2313eb2af907ddead4b7de2f1e471af2e649cf3cecd78ff9077df7039e31ffa0ed94b842c4d3b74f2641c648671f639af10bc6fb93cba5cfa0e95bbb495f906cbcdee95854a70388a3ef15d9a37fdb16d63351c45b7bb696f5a7014dde1ee371c45df79c8579fa5bbb3b87f2d4fd0b94562dbcc78875049c82005eece82a31cca79cddfe1afec4913876bfa635e97ab2fbae459fe1dc2b69b61374ba4ddfd73af332867a2736bbc4330229bdd3d06f72ac4dd611ce543b8cead6d9bcd8c59cf8cd834ed4c2edb2c2bcd8c73be7fda27ef9971fbe63f71b9ed3eafed9a375bf9bbb4793fed2cf7b6b68c676fdd2b8cbb53af37dc6b0bee9505f78ac33df77a8364842b4c2ec5c8e8e51dc9082a30690028fcd223c1e4e8753ef0bf47020925ea77af047def9520bd58522181841224d5f7a04a09f045d5d1eb741faa9400559faa7b7f25407ad6a3238fc991a76a22f4bde7edd48e0680fa476be77de02b2c0a430a060882ddf77d5f0722e1bd3ccf5305557f90760f2ef1f2fa0493bfc9f36a2ac8fbee0582aa20cf0b5a8286c0247638b5096de23139d2c0921e5e42ddfb8b7e134fa581253dbcbaa74a44ff144a0b94f7ddd7cff1ed60f21c6287537a3fa5ea9b28d53925a1447d5065549f3e751d53ea88ea985e4c994292f7a49a62e2bde9692a09f169154fae634a2d21a69af4a0d33d29c5e488ea74dfa4071def9d05a8337d29e53aa7d411d5393d29c5a4490f3aa53fa23aa4377d0908d7119998fef4349504e9a9a84a420340a4a79f44e92bea0443f83dbc84bad722e7812726a507534c4e4f4f2aa3eee95315932494e89ea432ea9ef4241593a3d7397dc72244f7a754124a745f521975cf024407d47dad475487f462ea88ea885f4a95de544ddfb1ecc00084f7a717a263222a5942e7a44a420340a5a79f04e96b12a5a7ef435722a59a6860490faff0a94e1aaf5025a445aebe1639efff63810108161f1d1365f1f1de597cbaff96a06017ee3638c3064c30b9bbfb3b8fda7955bcef0c30f43e100c43512481a1289248a592a9643a9d58585a5a5c4e2c2d2d2e2e28d40bad5de779df077a1f0886a128924291442a954ca653c9743ab1b0b4b4b85017971345bdd440d11ad4868d13bd71e34471782ae886a782580ee3c20b37280bb485164e14c66560f2de739cc0eee49df1aaa1955735c365aa938e254875d691cbd477c262329958bc94f7bbbe584ca81758defb20d108cbe94d2696d1e964c5ab3e4b7dd1495d552f6889eaa554a75490f87a89d7e9bd94b7a47b81af93122fd1f4610450412ee213318bfa2e2727502c4fdff3bc0fdf544fa71469899729c562f2f252fe2a85df87a9ee4155a77a72a2e2044c2c5660e9baae3bd5da7dcbf72d153c7d6d696979169396ea52eba9fea9a5e57da82eb5e574fabe6369a9aa93aa09ab09ab09ab890776817af13c8f65c58be7bd3c8bc90b2b0a8f75c46ae29dfec5a3ffe275c5b2c2c5abe1a54ea7671979efc28ae2e5e57da835bc9793c73a226dd20ba4175510757954cae5594d584d584d584d3c230a3641ecc4ee29489dbebfa8fb1248509611137fcab2c2296519b198382b0a5a2ab18e5847a552490cdaa4922a6809518441814f30798e2051caab7bcfe8f38e3ca3d2a909d289943a91b04005794e3c271d8ef8e489e7447ce23991004aa8f4df2b487c72fa276216e2166206c4371dfbd6d6d8fc2bc3d5368d56e67d3e2ebafbc4e3ac3c6f6d7f2c860bba443f2bff6a9c1dafec63312ca1119b3a2e17d02a86d337cff0bd336dc73f4b9b2e4f5b1bafedf3be43d77cbc4b7394d9355a69be26c2a6692ff91a9b3f965b976769cb775f529be66b87bbc73bf436a6a6ed10970be876f3eac7f286f713ed2b7bda59de6eb6c8b7b62ecd8ff900da21a66f6d93f6e6bfe479f7597ebe43f7fc3b9ea57ef29eb8cf99b6bb4bd70e90919e6fe54bda5bcbf6f6589bf659dfd2385c0edd7c6bc5eebe3f4f3bcb2b8bd9e5e3ad6fb859dbeaf5d76eb6082bdfdabe34bc7fe36ea68dd167b91affd6b636edc640df02c293ad891bcb7d96a6899bddecadb9aecdf68cf7f6a3edcde3c983813479ef786f3fa3cdbb68070305b936fc639b383bbb404edcb34f1cfe31bb4770be429cb8e773807f0870f722bc060c3bf09acd6a8dc3e9f22f897b2e8947570d0fda010df7d56ffbae9acb0533cd72a62fcdde60377b6bb07db5866d1cbe241e61fbea1176cbbc617a5f5d54ce6ebec14cb31482d576490413cad676b3bbe77007a3e0ee441ca543d18ccc86470d8dcd0e9b4b33b3c921499b1d3c6a687266333bb3e9415393437343d2e4cc68461de3ccb8352ecfd4194c8b5b72712e87ce1dd3de1f8dd3e7d527fe71b3cfc6f8c82d3390ae3a6c6a2a0d1d8197240747b988b857245e7bb8435866ff9e98fc5cbeb825afcbdaa656503d7cd0e3053d0e108bfddb9fe1c76ddc6de3f053e1a81c33bc877be26bc39a359e397db325957e9cf6e582b95c3b8f7bbcf14deb5dcafe2ced7dedf4476bbbdb4a20d2eab07e866dbbb4d9f09893bdcc9aa51dd2652e6f6d7f4e96f39dddfc2cd96f7db735ef11e50f79f325333e916423404e24f7e620365b9f9bf1ecead04e9c95e44b662333231b6784dc45779ff8c7c9b371cf0fd2bce56c973a27cf2e75f089a4e89227cf0d87b3907236c3e993e79eb4f2e7c7c63d765b20a63df3dd434e1e5d1611cad696efb64a866c9c116d875c12ff48a2cb22a4bd436cb63e4e851a2c515f5b09345af3768fd87d8b68eb63b3f541f128e2ee2d9d5b66b9713366b9712ed78e0c38edc499685fad33be434218035121ef92d7a1a6ed10bc2f69017707e23548407077f2de9dd3c9d7675b20ad9bf1d69fef0dc893a7d5a5bee7a5693c5ed2fe89cba5c53b46c6fede3c8b69e1fd773ced99ef10a63dde7fc3bdbe6197cfda7bf65a7d8bbcfbe67edf70cecac7fa3199b336bb2d694d59a94f7cd337bf2e1f08cf8fb695b169f1dfdaae8df69ef849f3d67e9f386c7b7d4be3bf5922edf3e4cd3747da9bcdd7a5654b0463a04be21f40363e4ffb83bc4223263294afbe4736eec1b35611b17d352c36c4e3fdb736daf1b5d5e5e7f23eafbefa77d13dcdd2ee0be4b3cdb6efcf2eba3d414068caf88cbfdcc1fa083196b332dfa1d7c15f190e36c6f92fcd66bc7fa80c80d015ccec3b54cee0b87b8bb4fdd638dbd69756923d30584b9ba61d9fbc3fc327d6a6697fe44e5b0463202bc3e9dccd24b1cde582c1746ecdccc06c30974b9fb8d4e7dd4537df4bde2c91161ab109bb63c6339d5b19a66db6b713db6c789c99a1b43bba53eb4e63eed4e67669da9d7111996cb3c9ccecb8e9c123a7066706c7da1e36a30e1bd9dd714383438323b32f8db434994b23cb2c93a1e9dc9295a6cb85bb43e5b64365be244c5bd3b4b0dab8adccbce3697fe460ba03808a1c82c8e188bbd32d26c0858f8d109081e3eeb487030c61c48901202086bbd32060200328303fa84115ee4ea19c9e0082810347e071770a05126888c9df0e1870775a826e891904800647d4dcbd160000372420841a56c00277efa09004233c900114302009ee4e79b0f998c0022a8b03ee5e89ecf43004286e80420aeedee1a0828a12167085183270f7af0109b84269e0ba820fee4ecb80421548a0b10021e0b87be78058c8801a0b827ee09ed3aa199291c9ed32db9b8f6d0c225784b34f6e9766b9915c99ed16b943e51eaf69e21ff9d2ec698bccec25926d4572b37b75b2ad0826713ff9de6e362bc124ee476f6cfe9c169b2411ce3f34ee95ed118de46603926fb6d9faecf3e65b3b7934ce1c4f9e9b6ded47db6c7d70b47276e21f67492bb3111f7b234f9b8598762c33deba1ca26f654deff3da72d6479f3603697dc7923c796e36bbb5cceafcccd4967b9561b9d71c708871af2b967bbdc1ddf188479c75eefe30bb575692387bd2b4b5d9de4e6c2bafccca4e9b693140dc024641105ddf5b6ec35646f0221af245de8d7b487b8710dd9e1fd2de21482e897f644c9ee50f19e77bc4cff067accba1927c9b2f79ad891b4d3bde6c776f1b007777392a77e4ee35b8570fb8fb0e7fe981e906a31b74b861e5f9d2b235ff8b481cca062ab6bbcb208eb22117599bb6b73f8970a6dd6cb8bfb57db3e521375baee98b5b728f98f7bc3723375b1e528319eebe7adae764bbb4e57bfbd3d676c6361e1c55c315ee5e9eb89546d530801a8270771f3245f74f7cbe7dbc7f9f57bf2ebf868aca61c6ca86b39545d68669f7cc6185affeffa5093277af71548e1f3952abffdc2e477bb3e39bf73c6d6d2c7749c3f7244d1c26b23e458e0cf95bdb9afc39778c1cd11a676b453b4a769004b91bdbee11d38e988826673323271106423b4bda5992d962d969e49a636ebcb39288cdd607a522c39de67599db37db05a208109504544c7cce3cf1eb12b6c446b29e07182cdfd2e5d23ff29dcd703aaa0fa5f25406346e08224c8bdba3b5e13c7b20ee8e83a35240a472781bb88ea3de8ad893f76f6d5f536663f90e61d81dcba17cb5c67dce342deeb4b6276fbedb9a7f657fdab1655a1c590e95e459fe49de3b16dd7d69244ef6a6bbfbe0a867791144fc3da2d4cf7a96cdf6a6f51d71befd95bd6996444f0e9577bcf90ed9dab5e11f7797c15134a0418394276f2e714b6e7e16ed2ccfd2da6e266f6db437bfb644af4f224c9eb6f63520140d12a0e1560411cf22cb1f8288d6b5e171e3b08ca368a071f719fea1d7270e062e140db555e447106f7b325ba21b1292e7d2acd6b7481159c26e389c69e4590ac176d13d7d00b1c378935c3d9b61d8cd78cce57deeb8fb0e8e9a21e6aeedd3ce923cefedefc68db7e83ede6fb3bdfd0b35c30a9f44f7c471940c669838f2d6468d7b6de1eea4bd351d8e9241c83d4696309bed2df62d9badcf5b4bde7097c423797117b7649fb7bc95e3cd3e6ada0e21edadc1c625fbc4e11146d3b67b44a961b07cc9f3ea4bb330f2da72393bf178bb5997aba66867976369de6c3cfaeefdcaed72df9f5bfb61da219c6fb7d7254f3cde1fda590a8d56873ccb1f76c6b217696fed8585ecf3ea9b7d4e5ceeb1cc5bdf237876f290b7bce1c6d1c8cdf887adb4e60fd2de5cdb365b9fdbcdc2866e370bcb785bd3c4a3cb4533e423e666dcb627adfc79d6c6dd740964b5edd6356d6bb0bb2d5992a71df5cd78849d3e7c649c64bc497c903cfbbcb693566a6d7d903c40723b8c3789ce5d21582edf213cea92d4b7ccfb6697eb2c6d6db4d9de601b9356c8c4b7f192f8870f1f39b81dc69bc49d52b181348d90e74bef4bcb1628a7f32d67e5c63df7e75e9add3fb4b2c8894b9d6f12dbdd3ce48fbb4f1e218e72e1666b6fff2c6d77977f4dda59ea7fb9bb8da35ca0f1163e49182bb83b1247c16c510411ac2188f896695e226d9f453bcbad7339fb19e6f956ce3471b3bffb9a371b1ec9927c7dc99fe1af8ddbeaecf396e3f9aa49a2afb6d7bc472eedb44748981f773fe22818eadedafad26838fdbb462b6d7f6fb96d3f5f990d77fead6d5611440c41c4dfdab6e168d9d6f6df8d7bbef544b7e787e8f618698107ad7bcbedd7fbbc433bee6ec3512d6cc0dd8b38aa05ebee408e6a81c5dd5b4510b1b1a959e4590a0d41444bdf9ab6a6febbed589a371c49de5d6a7cbbe43eefd07d5dd680beb5b1a93f662c67e5786f5a863c4ba11579da8fc14e5c6a7d75ecde6eb6f631f22c85627fdea19236c34fde9df1ede6bfe3796733fca77d5dfecdb706b4b1f9736d25d0c52db13723e459fe00bbddaccbd5a386070f9bac5dae7b96e68961b6f288bee58be8f6b8fb0d8e62c189b7c86bc3e99b5988b9b7c8ab71f6b6cf9b33ee87bbf370140b331441c4be1a360411df226f69de6ef6cf7b65af6dedf7d59fdb65c6b58db34f747bb2cd0683ed6b9af6e6ee34380ac70ddc53b9fbc3589a329ccf0b20c8ce8e0e0d8c06669384064603ab4932eab2c8bd418e3a77f7dc1d47111c3bfcf17e4db3e6ecc94b3b6d6dbce1bfb8b3dc271e1fef276f99f7e3b000dc91f01acc49ee6e84bb07e1a81b47ee362d9a56cdd08e8e9123403f31ea740baa73ebca70de9aa645d3b291394b335fdb8c0e9b9cf1f690913d7ad8dc8ce3ad91b1e1b125c3d57649cbe5ad4bdacd35d41cee1500ee55e5a81b3e4622353262c2a864e46e64e4d5c83b233780914301857bc949ee7ee4fe8491938c8c983082c2c8ddc8e809376ac2dd1dcf4e9e4bda4cbb21d9da12297779f21c519af62c83ece4ccdbed453bcbbc7f5c2ed84defd1de6cf887cb355e128f3eb4b6e608cbf756646d42233665a6dd78c38aaccdc70e272ef7cd4891b58da53ecbbc8b2eec6a2bf361a303b743be3e45d696af8f76b9e805dc3de6a8972cf67873c6e36f7cfecdf635d1e79f954fde3dde5bd17d5dfedf1ad0eb1083650c8b7d6d97444fde9a2ecf72f63a3ab7f42e6da569bb5be7dc6b8ade9b838cbab4b95cfabc4278bb5c5ae3b6dd3f773cad6975768d565e253220d756ee13772497f1b6e4698b9836df9b11d3da32eed1da9a3f6ae3b6375d02d139eba3af00708fcead9ab6b599191c1d3a78581e3d666a6c2c0d8e8e7107a943c78e1c9a8b2373b7cd5bcb707a466f1c161a6f6d9c093586b8e25ca024e0e23379dff2354ddcd533f7aae33f4b746ed90ccd8c59dbc622582da6c86a48ec65ce5227f632dfba67c65f73c5622fc38ac5c414590d7996ceb3866ebead62efb2099da5f9038822afffe4a12677b7f11a3500c149a2dbd3d277089ba5cd26ed9a667996f8b62d2b679ea5cc894b7ceed1cefe9e973cf14de6ca4e5dea12877d7338bc25ef99ef78ead2ce5edb8f216fc6ab7ccfbfb7346fb6f2634e8bcbf3e296dc6c837cebb72e4d1c1e73a7fd6d7333d3d6aeecc46f923766f6b995deb8c766ebd38a11e13316abf91c5ec74c7bc94bf4dbda6bdbb73b8e56b75eff35c773df9f1aad1c823110691aa9628a2a782b5ffd98c41adbf65992acd80cdf6c5fd66e9baf0d77ee5c9bd5db0ae5aed06b32e3913471ed73d99ea5399b61978cad4cc014eeefca6709b38d4509a0f177ed92bc797c57024077779d71b7abad6062c512777be2666f6fd6f636dc796ba3dd69e96bca2c99c3c7489efb43ec0a15dd9e9606d2d2b113c7f2be3a777fb8e16aade4c9b2f6fa965b57110377dac93362ad5fb827777f2075eefe807b704f152d4e9ce00409ee1936f32ef2ce689c79cb380dd3b975b3913333371b098399a6c5309d5b5438f177e5ac4ebed8e5a29da590dd1a76d356e360fb6a9d5b333ae34c92af2318a8455e167973b9751419f0d6357124b6bd2e491e1b913de2d2278f8bb4d8fc76482f28aae8dc82a2055080f13cf8f877414100ad75ee867fe8dc9ab1b95ca4a39e2080b76a861e6f6bdeee89c3b393873c71416ef6c977e8f610214920e44d425e8d6f5a66cb215bbbb2bf1b0fbdbe99b72623f5b768678969277ed6b77659d3b6f6fa967e7bb4802322567ae86356ad2fb2710fed2cb52e8b6c9c246766bb8331902e00140528a2000170f756ccea63564f747b5a26ce5be3fe9a375fa2d73be3190e38fcad6d203caf6ffd0cbf6a5fad8ad1b7dca5598ea50d9f78bc26795a5bbeb58d652b5cdeb16f5dda49d48a616dbb7ad76b9cf5c13f180319c9dd1f5c4c9c70f7d659ce9876c4e66bf2957313ab693b24f6ac58ec4fdb8ab9a919cb5b6eaf9ebcb1b726aed9f3669bb3e62565aeaddc3e45b648cb6ebb3aafd98a595d128fe785e5f0363a622f64f7c732dea30d725e5c0d48e6e6dbdbd8bde580623fc35b9f25cebcbd8d0e9224ede7f2bd5d6d755a64ee0ac56256337c8f2835ae11653ccb15dda18c73634cee0aad3e57646d9675b3d5b46b5ef2b5ade54e5b0487836cdcb371cf3565f64452daf2f5c13de4896466de1fdc0383c1603ab766646c63d18c6d2ccad836165d98cb651b8b12e08312337737f94b15585062c8bb6045d6f6ac77b9f22d73b6b2d7dade7e382a89337ca8b44364cb514964e131ab97c959f37599049984cf69cd8bc98f593d110ecbccf2d059caccf2509023496ada0e097224c9dd78e86a6c8e37d81dd225091b35ec6e7ce648d2e66e5984f34de3b02d77e2d3eef3daf678836e262d6c00ab16795e6d667b1f63a02b1c51867beb339e9556c9b77edb234a700418b923aea8fd492bf51145fea33dc2c7dd853226daf73c8245779cbe72ebca342e88b4af6f696d6bb4b33cb355425a6ce6ac8f69ef1197ab66c8e5d24086dcca9ab6ddcd433bcb13977d74eefea077b4bee7dd9648beb39c84e7e68dcdad6f6966bba36dcde7c4e5d5d8bc65063a89306962fc83bce4798998e64b23d1a6d5f886b38fadb4e62dc93b665c02d1d71c4f24fbfe902590bbedfed93f356d87dcf1b438ad79f0ece421c23d7766f58944e7ee0fda0e29ba3db9c8bd4176d1edd9d8fc1152d376c8c6f8c8cc88be79eb92882679f6b5d18144eb5bea5b6a6d1b83b8337b6d65f6a9ed52c9ce76ff90270e1fd945b7e79ab732036120f29e787681e48a70bec1c61387cff37569a7356fd75602edb46272fb63e3cb7c4d6cf5b131f6f9ee6bb3d9deb49511e168e5ecf17ed3964365de329c6fafcbbfb21d9d978ecc022185c632cb5edad6c853e35bb9b53559337caf8e098d56669a7686c3b9d5b3f49591e62d731b8773f9e280f8d689ff867bf29ef69ae36b6d6faf77696fb627c243bea56fb8bf6769e6ac8d45dedbad14d22cbdb1a9cf7276c99f6fc5e8ac6debb6cad593b7a89ce56e38efd3c4f866af92584f8d4c4f8c455e5cc98ac5fe2c7fc7043992e4edbee1c4e4eabcfa2cad79fb5cb6fac43ded2c6ff8f65766dad1beb635997c6fba8c59e580be95b3429876f74f4c2608234a80be453bcb93e6ccb87d4ffc97e859bab47fc7d3c8b762438084f4ec108101f5ec1411b2f303eb31c203f403c911a09f1e233f60477680f42089d1aeccd67636c397b479bfbd4abe95b73ef1883bd2f32d5d5e594bcf308dbc26113e8564ce128f32f66b234ee7b2b57f9e57e3da389e9675cd9bcd06f9d62d46e6c47fb5799f7696b57d854a7375b3b64f3bb1f9583f2bdfa14b846bcfd2261ef1c6f9f66359bbd94c3b4b01bc8afce6f9962ddffd63695adbdbf1bc38737696bb7c6d4d99cdd23ee31990919e07fa41520437de9f07c0b770d8e7d5fa9e364c9e369be53e714ff3babc39f3d6f6b6b72cbadf75a7ea95276edb4bca7ec78d11365f3d80a2591a9196c6a429b3ba245f975f5f3ab8d7b15a5bb9c7374d4bf4787fce12fd59debcb1a9bd02951f33cd5228f6197fec0ad91dbb44af436dc4b71daf435ab97d6756d7b4cd230d87cfbbe306f7b3f275b827cee359e62c916977dce05e7739ee3e84a3c6213cb6b1f913dbb932ab239383e53a5c8ca3480ff86f7b853e77855c2e1459738f61e5aed0ca3d1e779f396a5c82bbd3d8d8e820b2476cb94d5c1199955d991d3dd915b145852bcee8310d900529471523811a2a365c78a2d5dd34901c3d041d39410171062ff7ea837beda1959f3c2dd1b374c9f32dcde3f3ba61a7c8eb48101cf9fbb465b643bbaced9889b12cf6f673e61d2a7dc4ac627f6b4a5ee7ab439a38fc636b3c0403e15d923bdbc4e97b842c752e699a2ff21ec999a62d77b63e44570979c91fbbb4954474eefed0ca5da1192eb245be482b66da7227f65bdb6bfeb6e659da9def68da9f6fd92bfb9cb5d9b3b4c5a8c813371b677237950c87d5b86d996f38df6e3646f2c4fe9a5768b419e85bd9ce1eebbffde7d296b28c7559c3e59724699fb4354d9eb8d9893f9741b6b644b6b63e270f79eedc8cdbb820274fb641300622cf1dd3b4b61f8c81766ef6072ef3f5b9da5e22d90859eee082e813973f700f100c94232db6dd225797f608d1ed3979b4be9986b3cfc993b3e60532cb49dcfda5074709b13d97efd07df2925746da5bcbd96c3820fbea7b4413fde823e425c9574bcfca678d37c99397bcac21d2400dc1c510b6923c712c7d5e77b78e1ac2e5ff238ec4f9a661329c49192142e00e84e6ac8d366b970b06bbdbde3cde8d9395799f7824b299aced92883c71b39bef9089b52ec95d92175fa1114692f6665a996fd95e737c8200460461455f93b44fde3d2b6b5a094a4919343a8cb0f9535f3377dad7d796ad8f4de7d668d3b29191b9a61db51232dc9d84dd3b5312c51dcfce12f60077bfe3894f981224dcb5be264c492da7c4c75d498ebbefab95c490040d77d7b92b94c40c54121a14dd530c774ff2c461b511df6e9223774f42c24e220ccb5d21581296bb9f38d888874adc920b83edd226c3e92437dcc912b6af8621b9e2fa9638f09c0c8abb36ef79b3e51aac7c006c898d44728467486e1ac9107718ec05bf80e41d96f10ce6ee308e42e230201eb8fb894b32df1b9014770d03da02f6a202308e3c5fa18c8960b319063237ec02b98601e5b8067a777777711490e839f376b33f57ecb6a4ddd7f653e5870c77f7ca1a3eb4e0270a7fbc71befdc6ddcef249abf37384bb679cb39d41f981999971ba699d11ea48cc6356305db6725708463bcb94cead8db3c96e5a36362d1a19192973cbbc3f09007145e7564d8bc6a6452333dea15dca8068011024a8f155770f1d0504187ee25226f3f6ddab0f52ad0182531aec736b6cbbfbb4d9e268972827fbdb9ab9321e9fd75bfbf87cf2baae6ce364323fbe65f55fa2af8d258b089b269ec9f07867b3abf12de3b6c6edd116ddbfac4bb35bff6c459ed79ef7c9d392d7b427ad347124b6ed229c3f775adb13e1da23f916797326027ada5992a73dede3bf27ce387ddec7fbf5ad58be3718acc8da5a318dc3ffbb30d1feab6bbbbc3fc3329a75331e3736afecf70de5df1ad0c6c99eb4e19fd8e7cc32db8c6fb6bb7f7ceb73261e63f7c43db173c7d2d0f0781e9e86c7e3f0658cb4b76685303661b4b37c5de27dbb595beed6f6d7c6b246642bad393eed2c6d78bce17e865fdf12a2a93971f886fb3bb3fa5d33fc76f6fbb46769c33434343532343435cfca9932abf32dbae6addc26cef6369cfeeb224f1cd6f996de57cb709ab477ebb3d43e3fc37f498bb3ec653ea65fb1b1bc198ff734f22dbded95ed6cef907c4b7de4c43f74c89b9b951beb8d93b46618e79b4c2e6f7dc7d3fedf6d83b8571edceb0e789fe5bb571ddcabcbbdf670af39ee15c75142a2400931aa37ee95878b5e77b8db4c922f9ccb3596f99e9746de1349152c41d2f0df9634cbdabfeb88912347766030f21e21af69963f10dd1eadef38e27e82c482e8e0fe19e7bce393c3e3e7a7755eb2b4bf85acedf1fe3f4b2cb34f844f215dfe89b5bd47be35de9b7ef2666b8e97fcdccef786f3ed55393cb456655d3e8f9c9f9f27afd6375c21dfba4278e82cedb624fe9ab643c87be2f2edb7bea489577fbb57c8f64588b4b4d656f62e6dc3bfab76fb1397b5d8bdb9b65fcf4e9ed7f9b3f263c8d55f6dda20df8ad9e8c0c55e971f8b3dd64fe232d0d676863f766df6848d37a055a8644db3a59118754ca19919180900000203150030301c120c4583f1a8ac27add43c14800972a85868521f49435212a3308a52c81004082006180023302333a40d085b37ba7b8aa16b61086c44ec3283c5380e5464df53158343226fa4799a1cd0fafc3d40d9203beafdf62865df26c4938efca5b28085c412c3ecaa8f5adf66b99ecc8693adb30cf43b38603ea448266f05e6a107185580ed531584a60957d5062fff8d60bc614c4f8022fa85350dc55480cfa0d739e272875de281a39481d08ec2f6187000a6c8d790bca5b51612cbcdb0d804ffe669b09a5425bb5881e941d98e6d35e56a0674df36d5a6cc6e021bf10355f884b599d65c35b79e6f18fe1ada471cfc3024796bf4b0fa13f6ac4a32bd6413866b735beb6ba53d9e3da76758784ce817ae904f17fa51979ada26ea94e38d4aa5b27d7a0f963e7209329a4641834d1b94e5567b29e3e5679c719c93c7d6a2b7382818d5402d9b043e0c10f8cff876f9a69e56dd925bbc389a4efbec357052e28d9ee588a68d4c1b28100fe5af31540f3b9b66b6a113cf20c2571851568d72e0475b9e2c6882db06c5731659b48142647be1741122ef109651059f31b20e998066f66bbca7fe4d1f2c23b88ee55dc3498247c41b0d35fa2d800fda6c04923dfdc5909691c703909acb28980a608d9c307c903698d59ad7c2fc0e6c6b6236e894c49f99abf0ee32a0096cb20772da55db90dcf9ae7a9af93acdfb9d7b6d137f33db4bfd31ced2acb44dd63900361a6c645cfbfd40e800b89e45c938856ae1a2abaa812a197ee85c746d7b94b1176719a02212d780934835a2aa3edbf337044b00c296ead3be220d428fc8c3395a3d6781c6e177e86561851ee26cf020b1e8a746db82fee321a1a3f9cd4e6f10cafbd923874162ea8acf677e5d2908d2e47cd3666c3185427a01ddef956c2741a53557cace9197b72c9d5492209be40c93fde986af6b5a2ce2377290ba0af211ee4edd9117839c7ccd6cd0cb0f3a4b57a265b7923b43e0ea9d820ad3fbf74789df0ed7a3f6183b35eaa7aadc794709002417d1249f2a1108dc8f96e9bcbe8e68c14fb19e610ba6a89ba3f7d01580842051c9879be3602675ad0473da4013d5f3af336efabe2f10ed64ae60caaaf2a4db55ce31e4e5784867a7c072fb3007fd82b1d9fa06acc153dd64a09c465098e6f3268d03c6790c44e8a893670767491bf09c072ac744f39a254736ba65c987e1723d2de3a08a2d08f386c7be06a36f7b4924984207435f9d19bc38fa4512848041d17dcca4ac6fb9603501e3e0cdbc037779e43855c493cce1986121de9b898b15b47eb8888a55175cbd9e78422c766a8749a016d622e428c15479e0500d6397760e03c29c63fc07dbdf293e4a0ea8bdc0b45e5821da3611b6cc644c901d9a1820570f63bd81838e5fe870951fb696688c352f68dad6d8eb79ac8c3a08526cd0c8b8dbc6de9d063b1c0562e0a78a98bbb0b896d588e79cd315a45b139ef0f2dc1dd4831cec693bfd039dd1d562716211e66de3a45c2ba680e5ac1b8315dfad403969d40b8a4d378c412b1d79ad04661ee697fe1dcfb46da60f3b5c202559b2188a442e41b6425aa5c218cb4ba52e0186428013f9e730b9780838f985f0ad916d99aa69856eb309293e3efb3395af69f1f3b9740a7e0526740c87b8e9336971e733d273c9e9067d84d30603cf899510e22d131e1eacef29346fc46e3134e9e423e2db07761207661360baee21b49277758c20f21ce494163cb73fa031565bacd6e18c9694e950c63ece0e30c69d1c1b40531fa0d65aaf22ae5a45a30b4ca9692ad1e79de4e699c3a46fc64d1be2cbcce654562c1e67b271c2a8d8f19c714f2c3356d8a62af83dde41d0712b2a9bd9ba08861e84c30dc930ca4cbbd2ca87c2342a6fdd1a261e5ea85ccf42a0235acf38bdffc9b2a8071e2804f18f61222f38c993448dd37e55e1023fb41134fe710d902c44b54b57aa42689eb45fdb3850731c0043f1416d5873210f89785b80cc9a8bf0958f533d27436a5082c7c6e44881292f3c35f83901aa981c8eed3aad8869d0c1b4a455c2ca9ffc5f0ba301f4b625ef1802560a6534f0c534e7df8463bb92165a5bdc64096ffe113b63134ed220b238b6d9404cea788804ee6a4ec3b371b441e6e25397455dc7c6dae300bb93cc4d82d7c4221241684e04287c27cf7286454ad242a483c1ea233890e7cdc321d8d81d8762fe17593c1b3120be0ce90f0fa9b33b21744fcf69e5398b581b08d99bd51cd664295199a7c81df08f31b4bf8e3c800172bb506a35909f1cdf8dd7049351447b2aced7b65a7a3986c466b1e08966f535241900a01a14c414c2b353777f5c0d1d07f38c414fa78e9faac97bf0fad22fd1efee2a8313baf90a079709ebeb9c7ac040a3feb3940fd0e897e913b2cd5a176bd6d70037d7ea75cc6acc62d684cbe000a14010b8d84d73eff81ccdaabd01cf8efee8942ac6f08a6a567471cc1b58a64e927bc446761c13520a0d1b1f9ed3dcc3a68702ffc6f66b7e1a48b801675151c31624a972a7fa319f0b115220dd4a015a5e6b54e66cf7cc88215acba3e92aba04591046f98cab5dec9de231f835a06375a42839eb52d9d35c2c1978cfa93dde576d5eec8ad1f2f68e3e4454543a4e4e4289e63ef4da2c21cea5de5ab584403722a71239beefb07b8d0093e08ea63814261ef9706b72f140ac1880c9b77d503b2c2b3e8faf5f914aeaeda4c2a70691c6478210fa1fa63f1263f6904d6ca14fd76a984929eaf9634bddfc10286ffa2839a7e6836049d97b0dd3d3eedfb49ac726951424e1cda48bef65bdb804a62cfb1280df1d4d3b0d8fcd0356950d30005d79ff70044e49e46b29161947ca869a0890c252dee489ed6d24ddfb699d18b40511f8db1098492a37a4fb95c1153c613062dfcd4516e50dd070eac99e5c85fc2484a09637404134c9ac1cdb325351ff530b5e43853365597597fa18e3743dc3fb8004cde36be19f0e7cf612b61ecfc8080c1f2aff80f03282992138f8d53d9c351bf05ebb69a5d140bed91718d53b8676e5662f0d9d336e6eecf1b03a14367cb7e4f90bd8347506ed6e02efd410458d659ed5199c4c16c42263d6d17de75362ffeebbc17d65305080b26c1fd3b23186eecea224579b3f3cce4009760db6f95b8cd589d2409892b85000fa0008858e19c5b436687222fb523b81723f93977a7609ce1ab4f3e4a4f62199e851f11c38bc24792c8f04fbfae454c2bf09dc0ba23ac238a93de2ce3c97ebad2ca5773ac4db81199cdf4b2f01c7ebd87992d745aa14ea4cca6bfb5b544591e1efd38a3329de931d8d762f199c49291ec7a4a9f4c26ee98de528e2bf3f99596a99a48d089103377c7a8e122490433846526d8671c94d42cb5cd75b4510fb4921ff3993166ae9baad3ab86aa691c1a3c6eb4e28e737b044d5a6525d3d8726dbc48b57af6effe3cba2183292cc4c61e3554bd1003ebd88b4ceaa95dc36032af60573e8620c931f274796261bec97546fb360257f64eeb0e6bf5008b626775a4397e779d280c5d64c3431831febcb43d9e562afd276bcc8016e4eada7e86d361fa58654ae3a1a3d617f5cc1669fd01495bc17a28c7ea84dd251ce194314efc9590745cce05b0526028b29b1b9a7eb1267662720b8631b424ebc1e9eb02a663468e93c118f12ec5242d2cb1bf45ecda1f3710675fe0721f1a018b4e4c4af0cc0c6083f5623c2e65a508335319b301d1b9c0eac277f5df1aa0f25d67b42b6c48b7eb3897b3b40f0c76af6e4bd461c98d3e1ec10c8cfa2cb1a63ddc8cdb181b2156cd568bc387788d0040c91326f7608edad7a02dba0e9329a42009ccb18044addacd933e52a3185f342d2845058c337f6418e84d999ea7a378ec5b70686b46acacc026ac87a9f0eee396e1868a7b3537ae35bf21fd6f89fa7f81ed9fe0471f5b1788d3f512ca958b831d2fa242e28457e7cdc4f3db22ba43ea1eae6034b506017237d421863f9fc044dd69e8ee128dbc591a03348a4f74642655d3af38e201245cdd6695ec089758851b0d0c0b1f9a16d8529a3477c52082e0b24c5339c4b5c8009812d1f7c737bb6d5397edd8de8c0d7879b79b81fa33238fd31b48721cd0220e93b3b83e96cf5622a9b0546db3f80ebb0b0785aa368a6086a601775017d95426e342cd01ff5639d0e39a479796ae9443784bcdd9987754b5d524530a6c3147e0df05d2238e6d3644e24ca908f74b0470fa13de0642defbc542e6557867e02055a3778be04c99d6ad3d8bd3ce973f42e0e58ad2e3e612c8b7757867784810dbe44d6e773a0f59bb96b68a501b406c55e4fe3fd2db23eed252279b17f6f1f42c5b4512cbb454405a1108c7334440533730197deff3ca3a5fd1061d5300118b86fffc04f01f5fd4146ded4148101d228a60e840d92348d4068036c32b3a9e3d3ab7e9e031e2c7556a56de923ea5f7e2c0032fd78aa440d10706a46255b3887cd23c8e5b3b10f2cf8576bfe55b8e440570502a3848838c67cc2d8e39db46553ef63fc1a84be2f095cd1af2dd8a8434f2ef033999e39fe7b15e6e1880f1241994628cd9b431a89363f0f04322d81328721fd4f9444042a9763ae2ee61259f76f94e1932bf278beb3c17f204038a9666049dd487cf86d3a823476ac701785462c5c888daa2cb6e17eaac5a3120523ef74b5b1ba7e3692f0db1d2b5f6206c884e75ba18fdad57ac82468101f668877fe8dd1e82acceebbb9c98e5851cee915e8d45aefc8e42596da111db5995acaddd1d97239c958dd30aa5f91e35793b1281d855544f8590816d6917c65bfe3c776333fc8a536a6297a24f7994cd6eb2c54a2475b7b9c35f005edeb500590db7df0bef2927403630204ea298c0193eb7b87629858bae35379dcbeca631058192b75933d08420b2f6348e0b7019c9f813b4816c75581ebbe205d61b491da0e2b25369695ca80501a33132a732c3004c5405c4f0613c939d2c03deca3a33d5ee340f3944ea4ec300e282e2f4995f456c0be955cea44efa7410323a0391638918851a44924e4510b16a66b31406b3b9812a24cc9ebe6b1dc27718c36b4aa02228eab3b98a2299091c60f7e79ee39f0d5bf87f39005a9b428985884134eadb214ae01e2b877d0c4c356bc31d95088b2b19eee6735593c50dac7ab02e4331a57c8ccd4e1cae789d4ed4f4702186478ca471a4a52ea7cf2997fbb83bff6675389dcc8c63042795d1193d29b650849c0ff186f93577e6071653c80d945d5e42830602c9c2a9046ed00b37a798d9c52d0d2c39f7b9319ff3a0e41e77130a62d398e960a7c46204e1d4d93d7a3fb6da4f43c68ae7855349fa8dba65af03a616fe839a83ba4866ee4873fd8c3e63daf1dc47d191fb9219d235c0419bead86b0b3242432f94f8a0ec7ad42207ecd21392d262ec9a1ae8dc11be6d9a7c8d3727126b46df3df3c783fe45a8f610f21680fdb97d9d1bfbfed6fe101580ab31e43b752627301333de9181d5e6d49a416ff3206af9ed5b50395a3bfb05ab5c2aca8e2515187ae2088e40c70c4daabdbe12ef216595b9b1e1043475eb59d383642f769dc74a9b219bd54b23ea388c3b7039a1442fced1685921df2a12852c8e62d160b1db9155e0fde10b5c664f71cd8ee9583651d5699c61bea24c24dfe636c278cfb94e9fcea133a89bcb0f684238a5b323e714fb43d662298d8b7cae7f2dab67151c0249c0458a5aceca6666f15c2b11adb93f6e6a3e1615ffb5d5195f3c3cecc92282188741631b806014cf1390006dc0234f05ad0d1c4c98de8c27bdb14b651200da7598473678722b433f6e6053350d75455a2cd95222fa10e773354fb5f7a154596da07301ca82ddb15b540a8845ee35c8987a4a0238390068796ed2c8d5a61b345cb2062ef80c860069755ca23e4725520e4744cb76755f5d4a4927a17eb9be7d66be76edebb50c8637fdc5edbbc9db50ffeeb14a0f905ec5f23a6c5a615bdf5e5e3e2187711af257f035e978016d7ab2fd5812da9d9266b566f46f330c6de3b4f3ab9ddc002ea29c99389aaeb3dbf0f8d787af291d76042797276dafb48cc9b9661c738d12a5c31c32e8ea5926988dacb8cee7688e12f107c06c28cb107e8bc70d73d3a8fe579a311473ddad810b8b0ba505453e9772187ba9a4330a8fb2c7e86445bf65aebe55e02baab44c15ef2dfb8e5cf8d897e1f0e6dd7b2d44a7a47aeac860859b49d8b26456342ba9f61674eec5da106ec1249f72568f82b83ac59664238db3deb3fc5b01063ab73fcc18b304a465b93463fa0366098f92f5e19d3196c920321dfd9bdf3dd56f24c1d4aeb5280371221de78515b7b06f72e23c1d6bef17ef4bbec1113fbd3846e332b17e0667eaeccf0579485bbe03444f83eb7609bd05f84ddc2326978d9bebe6bb41e6c6a42c4c2d8a39ca0f35abeccd5a81cef8c2d1b6a10d74e2923f9968a318846fe52a2b37ef8085550c9d35c0c1833012288800cd7a8a2c572c10cb33161323ce76a71ac17940fac176df0a2b70d8a52f9cf0c7354039c8cd4f75cdcb3830b0115c4d2d61e2acfb71a86aa927d35a61971f19d8ef62c60adc219f07ab05a1e8e3d36aa301f72a5a4edfae993da3336af8e13a3ecbfc548c66c63d3616b7eb85eeb108c45afd1c30dd3790ee355cae81aab9c307ef6bcba4ce56f5ad52e8c626d624d69618c25c3906c7959f7d89abbc0ccc37f1c6de9284af5dab063288a49339bdcbd3740b6f8e219153ec1485033cc1eaf36968ab6dcc2496f9c80ca1501c60747ee721a6f679ad94624fe14861f72ddd88c4893b4f08309eb6db524544493af2a54c0f40dd91f24c85a9a43a263f849dd72fff4ae0a37146af3f8ccc3dc65ce8f03306972d47cb48ebb2c588ee07f09675c5101a22f4ba0e2a3d7dd4b9b6a1a194e7721e3c7a88cee0286f51a71b6b6aabad6142715496dfa8d050ec7102f73c4d7bed03a2e96bf61796c1564c9a264873382aade69e857057ca560c3e1556a748eb8dba0918492578676e4f2e31fa231c057a99416ab2859fdc57ccff2417c0b6a4f7c5565335f4c0da3c29b09c1dc543ccf71d7d34189e8a8c9de59b72cfad368cbfa016c700b9a75eea0b214d8a67d0fa8cb8e70b4454333ff962daa6b98a73de25cd354f3ce2e61e4f424f49a86c674b6600551350c26d189f7f9f4e3725f7a3796b68f0c3316597a47be7f876cb81dae986b064f891eabe98280705a6357837423f2f5693b4b0b6c6dd95f48c727671b6b630d5786c45cdf06bc6afa59f16c776976bf0eb7ea8705d88291d6443e2a1fdc4026aefa0fa202cdb1f55a87269361043573ba872788f0fcbbdb781891768429f22b39683eadb4e3c82804ff75204d8b0fa3b2777fa664a04665e40396bc18af8b4c11f1263b2ecc4a52cabb18f06aad5344b7e9f9cdedb71aaba80a924c33160be248e261e07d21020706f4a45fa8349970bc314a1027bfa026ff85a7b2591343caf936906cf83a78388aa0c79fc921588c352482ea770310dd60313dcbf4ea73c4749f79ab076c05d096f45c1d2302a2ed58f2a4837b0085ea7e265ebc0bb111c5269279a4003711c7ec90511b2e8f9240e9c5abb0a2618198454c689f60b10b198ac08d93eb87b486f0f721f232a69cc00f6d317d95c1d5e9720a9b99f7d4e1b4355fe47d706a5a6d164119c14ecbf4b8881439d301102afeb95d97a34d40a98cc87b8e2760c20e2743b5d299380564abec7a785925e0e6f11816c3921a6fc1e39293a0ae50e8853b1fb55caf104bb19d371420bc9e286f7ed557454a69bcc82576e8474b5ab90ac766fa25ab230ab10356133978340e979360e32e681c7ccbe90531ba52e5cd683239e3f7225bac45c3c34138164dc801cc1e2e224e15b91ed392d0042ca27c7054f808ef783e38b484922fab0f4ddc26980ab5a2623d6990800f8d0cccc001af49c8a7bb88372f0d3d3469a6e6eb6112ab378e13b2c44370933f56ac08dc50a84b637a5146b4fd73026b52529014f771578a062c52207106cb92da672cbed0fc8e0b326f7518dfecb1e65c33b74b5b70c5402ec3e7fbc6418a7439fefe69c4d80179eb55f49827400b1132778d65be3d8a96ac6619d9a7145b8c7e6ef099cd8d98a7644dbc48096e90927247b674fd086769d4393fef0cedf6023cc5e71945ca9f5e03a60a381e76893d7df951b90fd4b7f6a3ea1ae413ab145d48ad8883da94259dc37c3f15ed71a1a16b99ef63a4c957c49d4fc4cad49a4d372fdfeb1a77f1359180bf069982825b1a649a77be708ec611813a5a2e0c79abe5070b81a07a58648cb117ad989d94a9772493d0f9ab9bfe92d1f0aabe4f12d4331cf2d481614246d285ff51b5365d5f935496443a7988e293b3bfaa8497f0d19a8b2d7f09c8a7f3b403864d22f04b8e08b98b3a17179ff01ec2d0b288241598662b9b95705b91bc7aadced17af27e61fceec90b9647ee809e92c0411565afc29f2065d1a927f3de4d45c1773534af754c4a0e2ca4f565a80f4748ce4867e1e4c77a350da24eff9a19d3a33f9a47238f4dd6c8b5c95a9f2a79e32358a95fefbc4519fe0bd4c5767e97138fb84ae10032908a332b1b97020dc3dac4a4b8e9547f2780ac7ef85c98e3b8c4d0ca5170c0a891ea7da500a9f35f484f2e680049a0854984436b5fa87a6f3099a1ec4952ee2b11218395582ec199ba52c1675d510413dd067a18dfd6d2de654299f281d36f71c130403ffa565b3a9c9383f4d6c76f731c964d85b922b32f21a1ce1d4b1969fe31cd418a6d9d9c3c95e45c5832662900e98e49a4a998097d338e1b0f171ec877b0dd3b891551bcc8a0dc4eecaac095981c1fdea988b782cd400545965ac0a499268933076e3ea6e5e81aa610a33b1aec40326a0df35bde5e923cd332ac8151a101c4ff291a84718d559a23f8d0c89c50f21c8b5e08bff71a5a6962f6edf33902f1f71ef4cd08a88f0cc06479f3897025024a2b20b8fecd681f39744622ce48610968cee9bda0a913d1d477311a5be3abb88d93237be5268a2da85be9531bb38cbed51ae2a8ebe77f7b13b9e7d8601a078ad07aaa1dd199b77b2cf81963cff3b669df8a593322d291993e53a18e72c7468f84860a7cc97be3d82ead580d5186ebedfe98f99b95b9ac9c5ae7e39b9b8771606224e53a6cea8e5c0feea301bdb15766795c4e047a93e888bb5d504ea2068700297d8e5def8ed32c9025e0ea4f1aa5e91ecbd70d13af5922689889a26d71e3861851e1561b84da3f36f8a2833c32d5c1c9693fc5f88c9a5419db30f0a171d9d0b95f1446d94c38e8c9ec4a2f3d65cc7f0262d181e09db8a2ee02f9c4229e1ca66b0fae4f648cefe2177d5dfe15a7ffecfd1590afaac2c4b4f59cc5be6c077346f7488f72db9a87276dc4187c7450883e0aa8ae10f883e3c4a02ae1a97ae890319c60989765a1c8bf678a77f97db26cb5f017abace88f28f10e373bdf990ed78e7f60ccb6b4cfb0cd8d02652b53a06cbcbe1f2b6072b4c0abf093fff3e526c831a25520d376691a73afc413e1712606e1308af2dc965b000e55c8fb12ec7fae1cdd1a1ef2bd10292efa207a40896da29c6f0b0c0aa0352dc94b6be2e0c01f70ff1ec9a15d7908f8dc299126a7637669b60a8f3ed170a495087d371ca9932ed6cd5b1518a35ed1bdf10aa9ae8d166b0b57aca387d727a87fea09329687246d8164ebe4b1e817697ad8a4cb982dc80febec45673cf7f60fe7f0e4734679bc91b42a4c20965ad63ce7b2d518144c4835e354191d9eaab9a71dd2b935936c8e27fadcb9f4d2c4e5316a78d9f984919e155815c3eda5199c43875af806286b326d3305a13650bcb5ef01e2be99ffff7e38316882eb37bbb6ec31c1a4ca72c2be0426da6c0f2f5977dbbb1968fe6319c907453cafc37161fbf701fe86a21ed5b6cb9823203993b920ada1ff91a6f4f892e9f3affc2ee1b7055bae1734ed058ca109f40a1e84d6ae575edcc0838cc2e11280980480b849d3adff6a4146f81892b19748eb95f4b45e5b5727a05d3a1e440d78859e0d2a68d59917148a8488cde42bbe1799b8cb534564ed047e13444f7c3c2d7c51be508c40ab169f6b75e86a7c19ef159d0d937a7c6881c9e47ad1cc4ee893483eb41e44b98c487a3efe96790ab1255cfe52fcbfee1f00404bff9f5447271288fbf7c6ada7eb891405da172764169a405716689a546c3660c74883b8bbfbfac42ed597b430f935add7e71ad4f0164704c871c49e4acbfd7b6015995de0393d76353fd7050a3881ad424c1393cb34b1352919bc7a73329734036e80f45b938eaef1ee85d66f9540f579995afc1135b3d2e9b50e3f408b8797f56415b7969275d975cdc50f88528f09e0f23413ffe19a0d7b06091b2a16980cb20906da11da234262256881a803f65f2c4c7e2b76b7f30fd4d26b13a9afc7982c59edcd562504f9b0713a9214979ebb570cc942aed8323fd08b1d27e67c582c10dd21dbbb29f6557c740aa467629e7f6befe2ffca0fa0f136364de4d818cde14652fc8b09df3e37981efd9bb8df787f906907baa84fd1a0ea3eaa73040e499d671047bfa64554c04b3eee82dc7027e649020bf8f9978f2643fddf7317a42336996b66463ef9f5e2ce7a3b4254d2134c8ee24deebd5f9171f3cd4a599685de984d40925ad51c4c86f298b5dc9f822d98035b06818c72de886acf9217d04cd4fec312be36db2a01be87fe42d604b83d4eed82984c4bb30140c590701d0468d878a39e51db787cc9f125412d05b3be17ff796a11cc0f23105421580ed765ccc4c86f96ddd3d18d94744f2b5939f8b6de08df7ff19a1f287ad56fc9dbbb0a5e116d76f43c0558ea4aa852bbfae07238821348d236b0464fce927b00008ed1f15c12577097c48c173f5b664813667b2017f27fcfaec4c327902617751be132aa9e173f5d6d30909f4b52a36786dbb1ef84db4d77f5db1eb55c6ab4bb945e1d60a9c2a2a98dd8f5e207679cf0f9d86add7b0ebb907b386829d5cb97869a56f2881b37060aeacecae3787945a1349ba1d310b9ce626b750cc51a047f062d700492ccfd770b3e036a46dc0591b6dd57f36c36eff69b45da7d3c2658e92da2f355bcbff321ca1813c4d60425bc7516741b98d9c47218563ea6662c40166a2905570ac27e26bfd8c168a0c99aa3783dca8ef9ea27f7df8731eb0df4d1c103b46ca670a273b32b16cdc53e5face784253c45e5462936b26a940269c90d0142577f770522412fd892d5a5cb0574e5dfb1f3450fd5d0751e5c03e0dd0b65e69dd5237f601ec911ea05fbbf662ad91b52f997a9a0d6ab0d57a9ed6ffde0930f636062579a11726368000f0034b35e56a0762d6e7c7f156939a1abf223a0c183936dbeb9cac464b9a6ba34cbffec9608e07fcf49fb85e0618633a92069f1ce0f01b5bf4b88f084900ad8759a4cbf1f03b81900806458fa71a76ff92d7dc05b51d09871543224664cdb72ed546a16a46273097bd23b18127d258481961f6bd0750a2580c6ef3349b2310d843bc8653944e48fc489655c7459d43fdca5304baf0156c8c70f58b167521018cd944818c6de640c93e1c9cef0813d9359be576f0bb90026af3410ce78ddadb8ebfc93d400a9bf6394f4e25859b5d3d57daf0f5555dc1f3594ac859da7bbab08b3e03d149f85b8af31cd8e814c06bc53c0665ea77bf763728e31e3de335a4f3315d1224a8c12e322f4d984a7c1465a3cc89ee5d1994edfbf2dde392516c696b18e39e71203a70b93be4d524ae6fc259380f9d9023f2210ae90d847f47d335f5c98969770eb237866c911b4ebb576c9009334923fa4ed6fc7052d1380f4b2a4f4c8c10e46f042f746e98d21ea971fc899f23d846826bd21cae91d9acf4be4960cffe94b541521f407b29046fbb3c107e492ff1fad45470426efac43b803bae77a1d99eff644bea35b0bfb0fbd173647faddc418ce8e4af2426fbef403167a599dcbe7d4e87d9d5a7a6777e34bef46d54462d4408125c38be001351a106b26cb42a71108ad0965179fb226b43d6ec4c37611f910c0b9d1be1166098f73b41df3138ca5ba885ffda1a85c26a770d2134a3736133bd80cac028b195826e0d22f8446b9ec404256b03430e564b09f4ad605f9e00d44dfefd9df974165cedf9c8c9ce6df5194be61f98bc36154ab3b51188507a5fb3f2effac6634f819378cff9606b7af6add2ce709ffa8b8e22f54c81f00e9bd00e81f16f57b9fa15071ef4cd0f355e82f8b55bfdd4bc3b781b5d7cccb868a904cd2fe1d4146f651c1c9f3ff1a18f751ecfe5e704cea377cf21f7a65d3bf0fed18f9fd96f4d4598fc0c675869c04ebeaeed7a643d053b3bd6622e4678900b50cc4164ff2d4fe41866a6ad98286400700e9b1520047e307b8e5106819fdfb07748918027873f00bfd85da5f408748629ea7fd4c0ba19449b0f321eaea5ea86fd45dec8f72a2721cbc7f9a31ea6d8df5158d7db20397dfb8d41956b3c63d177e89fd1d4bd40833d303a047ccb0e3db8fff6c56fe1be7972974ce5f2daaeef4e320d70e1a9f45cf1a2d45d60d35208ad6bee494bec23d73064e730a7c29499188cfbcfcec50416886eb02db6306a80c1ec430dc185e61a2f98ea6c4ee067fe0c9d33ff1143dc99cc4cfbfffffd70bb9069a521821a8ef5a6afd8bd1a215b2a375b4b4cf3a0039356072274ae46e1b026332280a897f2f6dc431d364a39fd125a6069ab01de9a3acd15519abaa0e47961a60fdbdfc24ef7b4c84291633d434c1ef4a02c58e11912d394ec1efdfe441b1eda2dc16dbc7add7505a6ccc0059113744060e493b07522e8eb682e0603daf40f9d129695f89a759edc436f9416b3cbf7b4fd636b2d40651154770978f195a2f0beda0f7e665de1325c5279ae6d4c028c2f5b482c54efa5764de7d01c533ee16203d90da40b3bf84e0a4742d501641c6101288b0897c1e4d71fad52b12426ff42d50ad547f215d8e08fb9e64086bb1e78bb9efc0c18e85d1c7332395011285a2cd97b6ba4aa4b83a64e0591b07a2ef03d452650db26845b414ad5a2136433f69314bca4125326d5598a565a24538b6b35e7164f6e589ffb2b55e70adc08a48340aeec88dc922283ba34ef4dcee4bc1ac3691947a18de01c93780614c6a52f5cf873ccfce327b85be6c3c9af8ed628f95c7753cb5bf38c116e5747905512125c65d07da810805931b2e525e68dab7ad7cd632554c9ffe6354c6a58c6d8e10f308dee6b2e933fb00f0478dbb922e4e02fd1f1b20c1f3f82be80f9af46ab76e4265fc71a967a16196c93b793d2312bf00d10a35d0f11fecee6f0564208845d1415a3b4575027209ceb0009e872a943a5f74fe0ff316f6277a61fb654f70d5ea95e2e32e1598e83886494e177bf86ebb417785008990d5cb41dfd6e8da77922d966b1a8b3725fdfcd03e60a068bc27ada029f73610e41c04f59f39e57c282ab03d3cef232d6117ec858cfae15e110d0067c4f752e3a3b09a5b49bbfb4a0070cef44fe6118a008a28e86a40c62b18c97cfdb7da1cac5fa4b69fada290089f973854e209e3d48b08f65b41cf3bc0f03a9ee84bc98883d786a6e3c484e0c583cc5092a55505fea4b8cc820944b33350718c5618563c685d71d7adf791c015a37616f27cdee7c84074d436df23491ad63e56f8ac536b58095836f9e8504d484a02a88652ee63c865671e2ef5af30016b64ce1c6310945641cff1f07b932c5354274716041d0a71830a68648803b604608a2748016a9f964e206e3e618e4aee6f446ba70a9668512138353d7e522ad8265e72907d5ca7ceea745f6f9e65c9d81fc2918e6e39114ffecacebd8980ce8c07f95b93f1cb08b63e251957b5ae2d3b9b47539864e54351ca49aa8e88f2b71283a87deadc112fe2b3adb87153679cc5d810bf72772ed60e65aae80b06fd65c2bf6510ba1e257a9f3a2766e197fe1b789c62ad8cffac57188b044d043f0dd3015377c831717287dd530886d6d3c1f348752672941753fcd497c3131d57d5da0a38746d45c738baf2afc9bcd3e793267f8df0ff7ddb91fcd43fb2013eec57f23faff969b92108fa7d0b2526572041a2ef73e6fc8a82f18a12038953b08fe27b43e7297a2aa50f97909362ee85a362aa6db78a3790684e546691da1c5633a893d5271b846f1d6bef047f514331b441718133ded5a03a639d064f8d4a19b21a70ba1bcd75b3d207f601817fa311295ae9f3d6f59f807544865296ca22d0982a47f25b2d05799e4739e89288e10e50bece584e1b2694d653a8068f744648bd95f260a8faab3095236d8f6c8db483149ebe801bc3110ce1ab9233d71018fd282d835b8ff247f18fd7b93812a9399519c63652501dbefa6d3545ccaeae3bb14dfbca98449e4bc7bcf0482567c45ac14ac6736c99f2a925a2f15a7ae56bf3936a3ba96e74fe8fdb82a54149d0238efc97f00594abae1b3a0c4eb1009c7c1feb9e128f3a0db4c6b46a5d8bcf281d7cc68ac79e5928d51ba2d53aa23a1d140c33194e578f23aa6b52a6814f7888c516ce415ecfabce99ba338a690c2dee024ba9b885ea51a4fea7ff9d516357999a1eb329c21c9437cdd89956b15f888b38f04b1f58a813345b37f479a40495fefcc7c5a86ce1611dfee76966a47bf4cb5226a1975f741ea3451776a90efa7ca567a02a36ca9029ec99d1adbb45ec2504b81de7d9506b4ed7b2b884a9fdf19a3d924920eff2e5700600397e826ca440909d9a67421c0013e1186da16de806742b6b66f33bc8f06887464955f2723c2fa966280185ec7b8ef27bb7b5b3c5f6690760f1c92064fe716d151933910d75ad318c655ecb303d02ba98e92f22747a107b5aae0ed0ac3e4d6c02c8bfa56b12aff380c87f828dfbc0f30c3a4010dabb6826105be701a060bba9d52e60d44140eab2201a7dee1c393142d9ec93a2d458a7e7389ea314610f1ec40b6a73e1a9973f65fba0b4fb0b014d26501fbcbdfc81e297c9b3f4a97d6003d5eddc554648c74aed2b83fa608b6d3f80a21425d0078a1079dda33962d7bfea1bf6e88370df0e128590f46b526ece7dc0de71c03f3f6fc3f4c186099bc122d4c5d265106ce4ad781fa820a107b51f309384d1feb8340a005a4cfa415a72494e12112e61daad9aa1160f941089a31f5eb35a01384230f017f1eee9553f79563fd563bf15f9bb481b39cb5c261a5258cefc17488409939820ed2c61f0d665329f2d90302d467438e6f1bb55e955df3b810925c587ea3702b6c2440d8cc9901d8d7ed6d0a819dff4fcc6cc7630710b2290c1cb0c2640b895416e9789e331009b550b7286c38facbec73dc41d26f0d82b5f605d157c48ca8d797af7bd024d060a26768c1596a1b62ceb0641189830caf6a49be7d7509820dfdd8289630c2e6a0d0132cfa79ca50aa205d3a30b4798b05465f2a67a0b34e14ffc50e4b15bad29e5dd337b2a60e2b2feb6bf0b2cab58fe385199e69e165984ae9b9caa615932268b8c7151e357951a6cdd2b0aa71b73bee6c9db6dc314179cc50fe361c61e4da03c97adf32153f0b0a68a98c80733b3c010b71c1434f7a7c4fff84df4573a2396323a7ac20427447b7554a16869f59e816f54f88fa008cd17099e611ee798eed004d4aed19623ba8b9c4693060082e8ee58d4ec5a9756cb61f47ebb5e4e881e9de87a5fc1aedca3261b80465f88735375731c2c102220c8f19b78417a6266d7dde7e38a98f6ab85fb66deb26fd38094706a68fe74f4819cefb0267e97e313d9a6307db668267a8e95ce755eb22135ff46f9a9947d4cc4d43b0e3cf303ccc93db0aebc329f6db40e3dfacd13963152494ab36f9ffa50d3d0154f86a23c750f02f514781978ef40f29b0a16d477046047190a5d291d2f937a8a70e390d5c002c865c82ec57cf838f69be602cca0ab755f370117dc80374e2d5d62fa6508574e9ec3fa387af40e7beb389584aabe0d9d2f06d410585543fb367df68b3d67a2e93971e8b93b730ea569cd1679e972beed8f40745121343857e91d0dc11c7369c70cd01014d22bd73c49392fb2e5a84c3668a56fcd8594345320553b2e0d53f1374730fa96cd632aceebab06fac6b4056a2ce2c096a9f3814e38cdb75233235d80599067cd5a0150ebdfd369692035f8c4d947884b09c74b575d5c1bb5a6a25acd19f33e5041f81e88020fe7fec0832258f0701e0935ff8de2d2f75004fd327b7788bc4425d5285550dd14763816539e4480bd2b17866d29398b75935b997aecbe7ddb5f035182d74d135d9f7464a33b58b1a0b5cad483ea47e10e2344a3b716e029fcf4fb200c4c03af49b158e18e61f0ca1d0360e08fe80117c87d30e9854b6765f5fb75c4a0649fe400b2774f5e4bc4bfbb7bc0d69d976764dce815c131e38c072bdf26624c2dbd2a2292b63c6effb1a91afc5acf79991d9408679b626dd8e04693192674e6549381846d7d55fb6f9b0511019c7f15aa2dd67357103dae67b9822b47ce949b43cf3caa61d070ddb4bdbd736dcbb3805ae83132124d4f028773dd528f624a6599e64e8f40bc1ed84a51bfc60cfb14cd7cbc0e0ebd6ba6c71a23867a82b054440a90a81895b070e37d9a9e67de75575fa028128e76f98723031086453fbd3dcfa357f2789c9ae739587e05ce65dae10474538966cfd370c69e126dd38b428f61a7851a7ad607e38911bac14f64c669a90f000ef4831fda505969600e0acfea11e8f12371834bd678a25043ef392337bee584fa935722e51c99a0e8d372180b2fcc791f8f8a97f30602d2b480fa5bf9707172e1c8080babf474dc9b79dd1a0c96a409debb0fe61d5ea4ee39cc0606746e5af403ac2a497ddd890926037e617c940121df713e40374fe9e53e530f9ce01678316606f4bbfc1acad0c9f8e62158662b6abfc6988debec158285b8725e00d39d28d764940ca051cd9271a7b1559cb2f07b7b1271ad38553666272e343e5520bb1b852282d8ed94cce642462bfa2fe2a991e8437b83aaacbcd32e7f7b9fb34a57bebfdc9ede5ac15048d0219bd6364ed12062fce0c9317d841c359fe64289498ba320a620774da8355befad7c0c972a67f358fe9da5bbab5e9aec5eac2720ddf3dae2505de0d15930cc97a997b040cea633390c31e1a18c5b62602a7979b1964f793ece1d1f58dc515c4acf19f97feee77ae1a7dce9d2a4c4d0b933f5dbe3232ce69fe9a4f768c0b78d6f16df0a2b15c44f27c471767eda630bff43c77a9848dccf9b5e7f07c780180af6f5bf39922f9759e8abc77cf00d43bc955537b33b1a8721a7e7aca9211188bf3f4ee862e4d59aaccfccc168d3ccb7b14b6c23bf69ec947a2bdbd96818b863934c38c010362647a9c5726c66a0e19cca68d71833516a09a69c533de6f0a8e5735292eac6e810a123f3507b8ba227aa9c73ead05ed41717e99488fc30ddd56d5ba78f3191f82913b259bf61263ede18d404caf46465fc85cbfa54c78b4d7e085de4667ef842537b6cd6d8f85606190ef806765fa000dfc10d3f4aca012e62ea359d0687709a9f8986d2bd0b49e4bb421accdc88c2ad2c5b187f236f980f2fea5d67cbf65f8c776b6c99920f713288d0adcee0611be1a2959091f09108db2882df2d0c5407bb7eaf245b8f8718d27b48fcdee3daeaf06c84c06156d7ef6208c8dad826a264fe6cecd7fc97a6b07e4fd8c6ec99a0374d17c8059809da11640d19886bbb97e8d3f61ba067a7708f9545ed6c2de25d2999253d7c4889ca4bdccb2687b9c713bdcb969a804ed395235e9f2be77f49b43f3374fcfc74b38c90b4d14f04c16a3ca54bc0012e88f1e3576c5bde004752b9b81d42b7a0ba1b37594ce6f63d45798927b88abd09181abe37bd7499ee8af25fe128a5e2b590258c6139bdb7f2d749c5abb45c0dcc2463c081bcecaebfe20b910ecb4993e93b247d20068f7491c248a89c0243c4dce8650e6f8fe602f01cf08e530d05abf69c02e5c09602c1b1a95019e4a06328b3e2e727f5967b64f2120e6872d943fc14e3109836e3e6591675b76832f4f149d1e67d787f25829f4cb80bcebf900f94d6cee1d982a2e7eb44f99f15d85005379d1e2ca00cade190166407c26c1378618d3ae63331a3835f2194eae309cee3fc724822c06f5c9d691dc54f7573b87edb28120f23bfc7d3f38336c899d1be604d3c9b4c13f61b5cf2f05f7afd818899dde1b72c32734b4d1333acf82ef8eac965a04eb5cecf1ccc8019eb1bbc2574e67846c30ab0438a9fef0d75ed5d8f3bc09a393586cfb679de97b80c72281ac2bd1c8f15682e73ea472e235a8a5b9b9f3183140796bcfa40e9080b4c1fa78ba2c857163ec71f0e914f37f457b2f9fe1fc33284848bf5ff48f697c12a3429d2128bea06cd9bba7f52cfc0a3da8ceb6b9a4926f5fba1cde0e99bef71e8536bc0ae30cc34fca4ff1f4471767cea197b352e58238e2a9374f5bbbe8e9c33db98f070356de6d4420103eb99e791b37b7c55046803dbeb41b3937140c6d55afc1be5f6e200cf361c9c99b53e3ad02581fba4dfb52f837fddce7a1389830a6e9d051652de0dff49a08e8109d81badeec4ea87fa5fe150667c1047058c2516751b1bcd048fb050d4836f194960872d86354b1e1c9c368155a90dc1f4bb93d245dfa73dc23b9925830302888cded4026d110cf607e8d674a9f45de48507703db9a1226c43a2cb660376a638e97c785ed9374848d102449c080c183f576fd7546128df7a2a1788987d7897513cc248d8b1b0e78e972d495b969ae689c5541f2027afc5ab45ace1f40867903954af62b4983a4060ae71f120b8ac3a80a90397edb35e815f7db137066b7f192c375af4e3bfb6ee4c3fc216530765bbb4cbd079fd5dd260cae439983aa07282891e28bad5d0ee34cceed55c983a584f1374cbbd7e3734d49534f02e5ba8f7a998fe5cf330f3aa2e1f00d03cefbb27cc4706dc038a7144ee1c65f8d4013256b37c060ccc6c5229f0d441dc5e4bd7de6d118a5e3dafb6e24e8ccd8158420da88a8d161b290196111b47ea5e742c15c85609062b67c679f3d28698c45616004311900c6282b828fa4b9987aa4730c9a0910c2d9c5b79bd508338a10aab36a621fbe58596c5a7c6c0e6715c50208a8849601f3323af94a861106275eede66762922820ed49e05b5fd54d374471f68bf317cc3b42db89a26d4d8e457d835fd97508da20b5479c8f2b347e60f9b38467aef8cc07029b67ae981bb825deef3c26aa567f4524be34aee7b6d400f8b64be3f8902f4e07a3cd0a745b7333fa24c3d844c29aaf1649f1324e1443ec134357deda2f21e0ff1aadeb176aeaeeb1a4b4ef7a166689d1bbbff8f38afda7e3b4f08837258dec465b30ef11e1f12c6e6d7757806f46c3f89370ea02ec3b5712dcacf83165d599393adbc0546e054d66d75791725e1164c3d95a5ebbfa7bab91a7313a445a11641030e42e86bd7f5757ba7dc89a6dc66ea538c5bff9efbaf0bee12ccc1675b6812f9060e88ca52b58e422af94d7335a77fe4ab1cc5e9d57bf3a2cfa8d74193052f4e4c4b87aae260b4e5176aa65e733c7c1dfc6fed0eb155c699ded66e9823acb76b87f59ead7bad1b0ce245b52a62257b4a3fd9af6b840860f276364f5e1d52b00a9a3df1dc6766dc1b4be693a4907a96d706434de83f224e2b40089af352722f165d3cd4cae853fb737b3c582239ac6297849e628bfd1fdb942aea8f89a7387d1e321c688ad200a6572a6f6c46bba47ad0442b51c7715b2a0f9022b9812e9ec2ddf3b96ad3bbfc8270415e480697ddac3a0ed8bde277ffb54b70daeb4d5e97ed1d248d8eb8bd4ac2d45f33dd74b0a1d4268caba75d9a86dc8475cba41c16eb2dfbc91b52f3e9cb1001801204289162b4541385aad3029a7f9e511cf9b8e7a18cfed1fad8751ac57cbedfe4c27e965a8d839f6d17674016de8bc577b2f0bd58bf238bde67edfbb1ca6f3de1801d03a1e0d90adeeb3933afd146aa094c52a74c40be93a43151aabb92023cea6cea53d03d27504256da9664f6e444c35f1c6fc4092ca56d6b6e18446ddebd6c595b66ddd43e1e0b490d50c082ad85d505905e6904c4e48d0b8a29e3bd86eeb82fc26d1f9e2baf2e094ec642d59db3f7984ee5b709f2c1f352b70a13724cc7d5b8758c2fb106b23ab6d93b221c160702dfbb0afbb90397f057a636a7639a4e47dd969987aa05c24904423456b56eb79186fa2448551938ed07eab352c3e51ee923ece6eacabab89dafbb09faf81868509b0f5cadab17f5703cbc6a933145f1cd42415cc2a79fafa0402f73a40384c0829d7161aab380611cad3878fad51da6b525e5a1d08e2727832d9de13bd113d19b24d8fbb42af5a07d0d2b0dbd08a38996a111cd34f4708c0fd71072f43616d0027ad725f0e1cdca7b58f06e2cde87256610965021b72134eb18ecd93c005391e0392815f4e988da8df219a6a592d9453574999dbc0dde82369945313788473f32f4fa3761aab1ab489bcd0b59edfa1cc8fecfeaba8ad895d01a84b9da28c2d666f070fb1bfc12eeb69ee0a8a852d0f56d6774dd6dd24d53ca2139d9e7ba4885ae9f02836d6267e77a09ae5503d0a10d02835286d65c2f5ce3bcb5ed176cbfb98e7a0729c267ce24bfccf5199d3244e168854e9d9fd86aa523a1d4450a6ff4754ca62a00ff61e170ef1cc3daa23c5e66271316f5e701b00d6bb38f0b65bcca666c3eebae2824684eeab367ed388036e0200e16f497808b4eb3b56121b4330bc736ed796256c5cfe5e358971b9e43330d216452451511fb326d61a1878f63ad2f5e6169a47a751944c14fdb6c441ffa8754dd12d05d85aaf9b42984b3dcc4c3b29187e02564305e887392490c2f25d4eed3010d3c381427d269db7657b01b3c6a1662d4dc76efbcda1eee3b1a11e1851b865a43db85cdfd4590c146f1d6b8f6c8a67e15625833b055b835aad95f84146f1a6a0f6d1436f3b7d36fdce91cea1af55d8cffb74b9a36da829de85133caf228c4a8bbeddc7bb679dc7534e2848a370c6a06b68b9bfbbb6083cd824d438d914dfb2dcca86660bb70635cd3bfa96aeb54bfa9ef48e7823cfd5d9dbde512ee881d0d52ccc7224edacda3fdd3adfbd623211266587bb05db061a8c9df09176f1bd50c6d146ef237d36ebae95dea1af55d18efb74d34b6da62bbf84143c8f07888abbbefba79b679ba7524628416b78c6a06b60b37f9fba9379cf44ef59bfa2e88e7d9a45bdb7d915df8a03164782cc4aadd75dd3cda3fdd3a1eb155da5ceab6ebdce95c20afb357b3b7bd845da1634388f5a88847758972c47586ba45da8ccd54db6da9f61b52da36a4b76f4b3db8f019647a14533eeb98b83462ea04aa72df79e369f774df51c40929d818d41e6d176fe62f4107360b1b4635479bf59b9041eda14df1a6414d7f23b478635c636053b0b9bf051fdb2a6c1ad41c6cd2ef56ddb6ea39e9dceab6907c26526a32520122a7e4868b47464f1f761b5a85a96dca307182bfc6393a57c4f4e6ca044e8783ada1e0ff8db55ddf6d341d902f32b634a283f61639a323ce03c062f49d9b8c8927a3ddc1047e52bbdfbfc248ea702444a5e0984500ac6f77867fa5e3cb923c7f1ae4537fdcdc375225ae0e4671da5f408454864fd9c6db5ce039123e5d456dbc9c8bc23cb65b7abbcf5bb129747f35c7751607ee36eb3b6616228f42cabcdd2f4e831c631a88d2806ae284d65bcc4acff155484a9d70c1503f1238ca35293d97d33dfffe7ec0cba2d22bf6f13cf67fa63431ab1045dd27fb675f8f4ae0868ea2f1ae9a13399aa046f60adf3fcb58873959b8ba08704185d3ae594771364dcb2bbcff2c5b07374f05c19d2d103e147076107554c7c2e533bcd011d8a66a4825d6aec21afe7e7f25e9e6ba084543b24530bdc140ace121b7467739e93d13c6918cb30e7cac4fb448bd5027bda595085eb9f5eaee974842eeaa8d7eb56216c55e94c45cf827d272112bc69cbbddccfcca7c93f31254143d651c58a5d0f7cb0b5f65aa3a1424a93bab90c9ba6b74045378c45b6bed739c014041fb65dcce2642b33510ddff00c21c11609ac811f1d475356083836d217e96e81adc889f8e83cf1e7fe1a8e4e6c113d9f08ef10013aad95aa31fdb3600c1ce933df6fb46c995df5d2c6c2ad77cce9256a6540887b0e7d29f0cd65506138f38a041f2bb42c32aa56c16ca3427200747a9f6f791cf050c24f15b8dea9292b1ae1da0f9e270de12d4dc9064a91ca16de994792223181a7609329fa79821b56a188444d64c9a1a06a3de7144b3a0bb0d6083f2f986c4210fa2f610f4c1d4dd19b08ee791d10554d9e70ce7a5ddb50d84859b1410d4a7c5a03b50bea8c235588bc7be412581efe16e2740cb5522eee2be741288ba02c9b5ae85f47283d9694965756bea9dec03cd20970147783e7a4aced37f6c48b792cde36f639f094a4079a7fe6f54cfcd1930e27e04b5f63b86048eb281ca6d4cbb5657fe6f661f88fe7b6ce95f22763bde635fa8636dbc40c632c834ae0078851fc10edc31c7d094aa56be7da1969b27fd2a63bed74d92813bfbae4b920c775e4c95800779fa8cd2f4503de4b20ab9ac64db83b64697c385d832a83aa2ee044e90388ffd6875039eab26d4bfd2ff2e3f616eb7bd526559aae079c5849a1ab998966682e6dca3b2b0988910b63022cd1314b3c6939028188655e566130e176da6920b1dbe6e8fccd5583d4c44fabef4c4fef6434a97795a3f993cc7986b99ffb9cbe1afe845cfbeb6ebc365e56b32c2943771b9f9f96987abad50279c5282843d5130c19eb2eb733392d73e44f2baf6909daf9b95dc3174ac94635d6214fc7137e64fbf35031d6366ae90aa75875178c555183fe6d43c7032c6e78f3ad66d003875a891c218444f792450238add72eb409c3a87909a6fc4c73e1857b22d5679e333f7f5e1e75abc3d85fdff1c6beba1faf072a6f49e281bf912838993d197eac06f0b9fcaa227d31763d174ec1d0f84299b69b0b9a5bc6ea9fc10134cd015230800a44ed1dac5c3fd93fe319bed0551790b395caf8786147dba8c885c7f47cdb0d5a4346db77de067f578ea871f02eed6447271fc3cca2c7577a1e67c4d34f7b3786239991ae00422772ab925cbc93ea8544d935afd94237f850bddfcc0947c6fa804767a073fc701b7883e0b850710291288cd1c37922ca6595498dbdc929ea4e56c134b61c80cd548ac112944e171898aa13cd9fd138ca5eb8073a45e45a075991907997df664f0fbd7c4a7872ac7db3217c34adccd01a9069b229432b3bf065feca6c8d6e420b94f9831428a63b94fb764e3a08b4363e0bae9e5d93e52b058cd420436c3cf64ac009a181e4d9874d3b4aa781d4b32febfc81d31150beb1f5c7ee90f7f917333f728221cb47f42c2315366c6909839d9253d40269254dd210f69e0bbe4176ce88a8fcccef07117de67b44765f7e559f46676b52a461f4b7d0bd570f217a56f2f9c7a4e8d65e3b7b2f5559036af93bd91c7536eaf00d360fa25f42e2334515dc54f30c9975d150ad432dce89ee57c2716a5e933ebbfee282d3e0bbe6ba83c450eec46ccf581d6564ea31663e6bebe6e9d3aa7c2a43da657a68c8a7e49a763b18062843488374a6fa53298f4b7a54f93fe71d4d73d0bd7848ee1f51eee9f36bed019566fc2f5131f0f5dbc43bd89f2b6036a2cf0fb2feb1b98bcb1aa8aef3b16b1aeb78237b59c4725e261ded417e932827c0f414245f14fbe322a313406b5cb2b4d5b15f214c7fef7af41767ae6e6103542ef550a2d352b343f0286cf4365185143ad3925b820cfde53807f46b2ad59166588edd6a559fa38853fcadbe59605d5984294309df2fd5cbb1215283c3e691fb9e2e2a8f7cfa2b391de2bd564268fa66c31831be544fc71808f5cdd08748d69a621f1c8bd36f90db1842e3cf8f5ec6ff2cdeb99167668e2d30ad6c2156370b670f5fb45df6fd1321c6b9761d2afdd3d728858ece387bc7fa03f88ca7c3a8e7635fa80628c602499c82b8f39ed321c07fde13a5608b2b51c6c52c0f86a72f125b921fba82779ba6dbc53c2ab36df2b363d331b3497acd721959b622e19ed93b78beb1d88738cae50f48591d378d72ee9c00ba26c8ba0843a676ad35b0220a1ba9784cb946ead2c90104d4cb145fb37e4e84125debdb5a176dff4f8b745eb22b9fa36a12e59e453d288034b86b23e6f7a7ca7158bb677802ab65bac3e98670a515b7b9233cf24249f1c1249f6fa68a07fd984ee22b46dac10d0cbacbf9fb12a9cd1a3f382a70aafa883de43148e0db6611df9c4bcd4acc58472e7ada0fe854b06dc1a9fcde1b8d8884ea4f95cd8f8596cf16b143cffe135ae5066e51a4b15e7b23522368b9c350aba8fc31a3795df18aa6a8ca39dfd15f24aad24c29ace8826764f605565e8f6ae8fd1683910a3a5d39613b669b7c9aff112c459ce4d9afc3375d14e574bc895cd7cd7cc1669af8e5f3bf76c8926b72706bcff50f7e9a2b5c7219e63f1ca442de030d299d8ce9f28c81e1967d2dacf4085059097034fced232bafa01d257258983cd36ab1d5e7ef575c6359079d5e8f01b947d42c6dde1460a4086d82885678e3f751b0723bcbc0b34a5c20f8a96ea0570d60b82cb6d7292c6b79ccb88b7583d41b6106581905990b25f994313b06c01b9f8d7403e971a1a4a9ca9168f66e20c55308d406dd882c0c6008ea94508223c20eb6299dc02365828d651ac212e110845b365f655c856a706f0926896a4d334fe53841314f679d2f6b81207a24350067c77a5a4166a72663dc6bb9df6f122324bf924f47b2e062d6030b45742a9e714bb7e9c881b6824f8e545d3608cf16f1d3301da35d387cccd92624a7c630b6e4de5ac5992127b8925161a96d398cfcc55fded4ce8d98f4043cb36a1161dde1a375cdd0f5351a71a74c65dccd5534562f683b0be3fd3987512df1df511d25fd39088e9433b1b024b1209b9dd242aa0d63e4252dab1526ad3d0a7ce49dd21d4c3e94ac1ab4cf34e87659afc2adcfc49577bd559255c7767c7301291b9338b3a4a69876a3a087b0bbf11c3e0c0af95699bae202e8e5336564bd4e216878f62b634e264b790afba54af13d4548c68050a2d9286690f3c3fb543d832ab3a0116f92fb14e093aedc21a52108f9c27bcf93422c1c48b330614a354f3f04f1a551c67ece17c3a11cef5f9f16c671ea0706a89cec1d8f3e957071d50c45767bf864030cec5d8d9b5a8ae46c1b6c1fa96c64327a199f82393a98498ac9d2d9eb5d138a0efed165a89177ccc1047d53ca35da0a5f39ca12da15f8341b3664f41ba9e5631b6f727a19a3bc031a6ede90a672db862bc1ee1daaff53ed82df4cefb803e40ca1ee9914fa73a3308648ebaf0c76f49ac05d068886364d65ca966f1d98c2382868e8c3349b046b0dc3e41f6957539ece701fc220fcdfa733fd9a3d4f3bba1b571e2bc6161da34a7b233980bed777646438ff5a2f9fbbc9a66851cecfca82ce0cefe38a73eab55684f222335109d68a34dff86bfd5f41e8fb1bc46bf96d898ee7ef44f13e4da4f1665f510386449bf2145fa86acbb37e425bd21aa4b1c50f38c43c1f96eec61c1679c93b453933a8421f1512f755c13a43bae7561a9a69a8c613c705c73578ea09250b580d4e6961a1ac2fde710cfb8e69926508dcdeea396a326aa36c6b51cbc48fbccb1830a55e904427650d22957931a172f5db10d4f1dec4f9e42decff52a6376c8f302a679548d2ddebe51c7f62cf667004e06ae7ff57776701f890ba2bcfea7313199b5ec21daeaf1bb23ab9659eb48b960cdcb78028a3cadc5496962f4497ac5c6326bd9447380172b399a6fb7622b1c07db1959ec08e12c1683c15c5ea8db7031b3d6be2d12e95c7e167bea43948146a687998520d03e849b3c41d466e030a9d21aa386343c2d24ef4b1834850ba0b7611c3d010718e245579f43a92eb8a6d49afb5942c59c0b8459bade196557c1acb219e9f0379c7899c992f85805c265070dd661c14182136d583341767aa4455197ce82ce22ff62a23096ac610720299876cf608f046b06ace9096fd7c55bbcb5e4b715415505928e86032441e28f4b0d6592497ff57eeac6079abefafd3f19e1cbe24018a00cad6c0f536730923a51e0bbb3f171c4ac28c4c40acfefa11196d82c5404d69ccde662c08ea6a220c4f31ef1229a43ba5edecb84a175a47a726b72bb7b341233d1ff535dc908564ff75020e26af09c1786c85207329423c33ed333fcd2f136acc882d25694b220e7b73fdf23500b70541f992ded80cbea9afeb221553ce3a7253bdd7f07d1bb4c60eae894016eee687bb9975cf15d7425f1675e62a896589c20bd5fc477f8b57dd4119b95e4770d9ce85f020b39c3e5c87a5e87a792a1c3e2765acc32317d56e8f77b40286e0fab0c3cbb34a881e5070b301a90871e047b9f074d8d856c695a3e21e10e8e826318ed113b56b7e6ead5dd084ff8e9cf171c3000892477bc0273c68c5358ce78973b417b1138f73d9bb87d8a9a64f3e090dd8f631b7ce891a0b7e3822ae1f2e14691a92f1ce36885082a863df4b2a8c96abf0d5c751660d7730f3738f8047d35eb99188166544009034a48a869657c35371f42c8c01ded47981fab49c918eecb164a6c6facddb7a5abe8c15370f9be6a680216cbed45c3dd75d3ac82e5235fdc2c0869dbd83a2f13891e746bdd7bb513722a48a8fc6515c3d73a5b86cb976be980f305dde72092aa4a8812a8c7b6454d0016a85015fd0c8d9b51174a8c1e18bf470d949c8fe146bfd4f7fd2aa2268d20d29b2ec2e9b2a2aa3f2bc22242e526a61273c150ca2880cd81c2b2a2f1025efaa0fa824ac8698dc16190a24d550188dd240d32ced69233a5111c0480637ada1d5d1358d2705ee4f95b86b9bbfeb9c7904b28a6527ad8865aaab928668a747189b0941814e5bb10582e8deb87b0aaf057af34a197f229c5d7bac81d52ddc591ca1a99fe223ae5707ae2d69a12b6ba64197726bd66950e60cba91cba36fab4480d0d6cb917242cebd01291dcb6afab21aa61b54d9ddc7d9bf4fc30688be4e310face8ab5713d212bf3636013cff2312a7e6f06c15cb7263012afb1f5a937d2c7f16bd5369043f51db10ab6964237e0896b2c4f82a05c269d3bf56717fb7494bb236a69d664d76c878377b289f04ec653141641ff65c00e2d7175163cc6e856933fc0db10636fbf4d92b0ee5d59bfeb33cd1ab8e9cf67b406e0bbac38f653bc015244154689f4bc921ea2f8ad59fbdbcc6e3f80c9572b7d8072f82036c32dff37c393ce0c071f9be10ff053ed5daf83ccc4ec1bbbb1d03ac5403be8545532faf6a6d6a8af3056eb9474de6bb3eb976a0bbbecee391e8339af5b2caf4eda8bed9c7400d0bca1d781d67a36e32ebf80eea66c05bd6df1f8deb827ce0be1063213e48932cfcdb45a53f4674e54895ae1e845627ad74d401a91153da8fe13df77017c53056ae70bcc50107847dc1cb0169715b624772b5c0550da0b5789cb22ae129765d89105da1bda5222b6c80e9d90252964e5c598d9c83fbef158816500ff1e95af6b66b6bbbb8b5bd3b10f1c02782bae062352dcaa8864c10cfe0c740c5d67f3812d356479f8c5deea6fba8e7fbc731d568bbfb9fa602cd6877b567fb3ca9d227c20a00e1fcf234009d5a3aa05e684801c04f8a014012937675bee373b075842da901fc0032a9b9cbfb94304153a4478d121c2021d22a8e81041448788210c0006a52f197f12bdc550d6d9a6b0a7f90b8a183a28364001010a4c072589ce18a1df9d1b72e8dc08e30617fcac1997d8de2f9fd9d602e8a000bb53009b025c1d029c41000c10e0eb10206500721880124ae9c7d3f16b9f460bb9bf41ddf749feb7f8a60e69dcd590f509fdf6785d6b1abe4fb0c4ab6cc91f6d74ef0c9186ce106674867802a5d408da19c207437480521a04ed0c6181ce10b7330413426847004f10c0d911008a7e784db9f6692a16b23ecf9ce5fddf2f5fe51d972ebfc5acd29da56d35cffabf5f0460838ebd23c41334af9a778410811028ebf33898bcbb2344119d20b0607daee771303e994c9ee775fe60104a54c146063a365e3a01d843270040e804c0a4d4ea5aefba02c93c633db760e5b65e7e5d1796da3a747fece549ea3ea6f0b8b264b7dfc7ed586b3da15a644e3451d41ffbaa1300220080850e004c00002294d21f7bdddf358e4906075975ebddd4e7ff9dfa1bda2d7aa2f83a2c7506820b6a8526da0122c883b6367284db530708253a3f6ca1f383124a911cf140203daa2aa8ab3e777ef0412b680522ed6f2347f2c90735acdef1810c4abbceb5e3839253c7878fec59eb0e22c98e0f242a92cfebbdb6764ed2483d893b6943fe96a573c205cff124887bc69593a4ed9c0ca931d9a8883323b73f48d2b288b0d3d475361d93243a148d0e05a343c71bb4438b74a8c91e70b0070fec41450f69e8010a7ae8801e7c508ad554c631b59b6999b11131083f3f4fbdaabf739c7a25a45a9fef4bcb41279cf3a4f8389deb1fbba8c7ceb16ae4bfc56a6b5659b3260f9df23c04600d1fac71ae81e1e10c5b39c683750737dca18b3ba0ee6059555d7dbecfc337fe5c4fed9fdab6db810476f061072728b5f6d97f8cb1ea00813a7ce8b0c615715d812449871a3a08318733a875ffdb4f9236cc42e66022872470393011072ac401047180020e6a8083187020e1e0c161006f38c3faa03cd58efbbfef25e7bf1ab2c6faa3cdf8d5d0f5d515095ad09af64c61b0b41cdfaf862cddf7a77b05591aeb4910679cb1a84307ff930e1db58b42064686e644c4ca2a6bf23730e10626b881056e08811b7c504a6fb6ab9ada7ddcf37d4938e66a946a44a1464a1bd0d08619b421056da869c300d8e0043664c106d31accb00619d8b1eee7a81ab2ba530d75a2ae56c81275d665a8e3fbfb971f697f736e572ab725e69fde9fc4c423cffa0badecc849d28623697fafc1b3066adadff9a4063328b5901c3172e4a4862e405beffd468ed4931ab4a0dfa7861f468ee49934c4a1b437d250461ab0787ed340a25618ca3a576e47d5c5213e6bd0c0053428a1945adfd62c9f0d5d2c34b854bd3f49c8b47a202ae10f593d10d3ea81fcd5e11994886788e20cd7198c380300d22083d21a97284e280f7572f95175af18776d1666e600cbe7fc043e919a069986cc8d3474a47143c45997a7f20fc60c25308319b8194c94d21df486190c500635801e6f9bca596aad2b2d242cb3461fcc33f355fe5c48edbe94263d6c6bbccb30843228a1f4fb60657821831bc81005326851596ec21ffba9c9f021c306c18ecbaf7f6363c620833168600c7c0c633082e2aaa392469a15ca1a085ffd0d0c101831b0400c1410c38d183834ca80061768d8508ad51db5e3dff1265243fc07625454d551378d645db5ab218bff0d7ddf87427db7fb0cc3fd379fe0c9cfaa7bd79a46870e1d3a2c92c440c2304618aa08432a0c44c2200ac387523a05bd718619676ce00cfebbaff6e3548eb1f57d583c335fc56ac8fa3c0ee6b9eb34f64cfe79eaf7a9f1cc7cb5c36ae8f3b20dbf9cafe6af0ebf2aea8fe5fb3e35754765f1cc5c1daa3ed73cb7a369b209b1a93bdf7c7f79f2ac436ebbbd5d67d37536603083522347aa75a3753f81610b7af24b6a1eab8e55bc2239b25fdfd3060cb8fed86b549f3fdca7aee93a5388bbede679a37590aeb351d1a32a47af7c61095f40c217486aadfe46df9357d57f3ed5e7cf53af17b8f002492905426f7881892e58815afb43d64ac4baeb7bd6fc0822491b76ad69baa0bb60ea428e2e14a00b36b8a0072e38810b44e0c248698a4ac5615dd705bab0baa366fd91a40dbf4aa486ac8fa77ec75b55575a4216bff6f7fd1ab23e9867a6864c2a1587e579a5dee2f7d9caff66ab6fcf3ff6f3c40523969cb630da7cea3a1b93a9eb6c545472f4ca0d2dcc00a494bad01b5a48c016cc8882191aa0949ee80d33a430c386c5311ec3937f3e21ffd58c3db5e3ca5764d63d047fdb2a8a3c639bb2b5aefe86e332256bdcb3504616926461015890c2aae6b763ce9634f5d84d2bebd45775cffa6e1d9228d3fefdfbeffecb4dfd34b7674a6932e76f9ee9ba322c22e2b21f26982b8871052ea8555d410a2bc4c10a4aa8f57d682ae8c2783e8e63471e1f495a96ef86156eac00a40a71d099e3cfabd756a10655b0b156e4733b56a1882ad01315884005910a37a8d54f5def97b86f5d413695b1b537a6308429b0600a529411074a911c01656d9ebad7075dbcad2e4308656c80d6189622a7aebad798322c299881e4486d81d1955bd5490a3190c2114a9ef9793e49c1868d4213a2708228040119396285b8db52f7d3e61f6da0e08512bd01051840c1e6096b5024472a08d4c993afc8be53f72f79ea203c61044ff041da90246df8e3d8b1c5d165b6533c81004e3803c911909123966977afd9d63821024ec8714213526842049a00628219488ed48b2b6845e2c454ebfe8a9f7a7f2adbfbd1bd6e8db779adc72a5724c7fa722678412945d11b4cf8accf35b195b2dec3841bf434c94863930106195890e1a1140cad79135ab25a6eda713faa5afa72abfa416f2cc10ceb7eff6deeef197f364b30c28d258c9452bdaba875ae1d647fe7b372abbabf97e0a15adb28410d6add7c6af1471b257c9143095a506b7f27b1a8848b523a86d9867e27a10c9452daf7e364fc7d2613495a96ae33a5f8aaa6725b6d54b84a8e5e31993e1e95322c620a727f884a8e5e31dd18e30263ec1803014858828447821124d8b821861528a5968e2f35d7c1236bbc22573abace3a2a798a27af27ebaf2db3c639fcb167fdf8fbb48c656e5d57e497e2e5f7a3aaa6f2cd389f2cd07d1069ab1846c4b08e6006a5d4d23d95710c4b91af86ac4f56e97c934ff3c11896221e5bfbd71cc101378e20802579589282251858e204a5d4e2ff62ad2b6bea5e7ec79ef72f7e3584eddd56b5b598c2bf1f471b810994d2197ac308498c4085118ca0d66fccffaaee8aecdbc6b014a9ab6c61e88d305261d43028a5f486de28c2088af0004a29486f14010930c6a09486f40618f6061845dc20c21744e8d677454552afb02c2b2ae80acbb26275ae5423b5e3202bbe1ac35224ebdacf2a5c6af7851e8ca9d6bf585761c8fa326d7ffe94a8eba976df6a5b1c62f1f3835f0d591eac08a8d7eff3b12c4f0579b2225f7db092242652ad96da7d9dff4de52a6ad3861fff3836ebff8ba53befcff98d21ece1c610983084210c61a416ff3eaf0c73be1ab22ec7312c45763ecb5287b75bdd735c84e006219821436f082103d4e220de21ffb4a689a9ddf7d59075b38d61295237de36f5bbf2b3ae7abde127d387745610e95c790fae6cd9ed7e526bd0e3b89ffa4bdc4bbd5f68c8b779ce4ff40403fd710e7aa205ca8e07d06bd5151872cbf1fe7e6ad3fe9c71b52391da658d553cdbaa7bb695631b53adbbc12e54ad54b657579dbb4b05a15cacef83aa2018cf57b9adb57efc83f93ed417aa1daf1fd0532d9e71fd584fb5de82a9d65fcceb9b7cefbff9e64fc930d6c421eeb6db8bf270dc755ce4b85b6e3fd45743d5da27d7a488b7164fa03f77ffbeef53a4823ccfa7fa8a7cdfc7aba0229eefe35fed32cc0ae4968718a7de5c43d5ea3887b6f3fca616b50d0d8bdedf804f826b78e77f56715a59d5fe9b8524c159087fddc292df9ce9e18be267956d15b107070f51bd8c95f317af5eb754ebcbf9dbc3b2befaa96c55fa66ac22f5ae961633feef0375f0d4b7669ce3b30eadc09028ea1cb9e3ef1607c3a04e95e36aa201930cd026f01bfb66e5e34e5990524be9676a93524aa2d4a474a30631b42c35eb0a8532b6a1276ff69721f026b4ddb6f4adbb8977c8bfa59b4356fd766b3ecdef173bd7413a3f5beeabf4cd2e3039362607c9b13156d6f8d61559b37e5357d5679c2fad4cb56e063dd735a5e6645de553b52ab7963c39c795779ccfca571d5f7c5681833c0e264fe63f9054c69dff9054c6f65bf86b96ff17cfcbdf7fe368f3da1fc32c7a9ed79f7b1f66dbb9364b6b722fc7965e3fb5f725eede0af474e879fdb9a7d223f774f6faf3b15facf27e0cbdb1ebfd49acc73d4d9e57979eb8713caf3fcfb1a56796a7e7e558b277cffb249873ed9567f6b697634bcf2c71c6f94dfd5c93dbcb6f6a0f0793d633ff6f48d27afbc57c723044e842035d7c79a676df57439dc5cffd38335f0d5967edbe9cbf42ac952d79d5ffe92e48335883d6197c610618a0945a38f6bbedb685cfe046cd2e6558d5e78e0cb6183283aa3240511e033528a531e08252ab9f668f0189c2e00c5a9edc96ab6c61e0050c50940b06c040955fe0c50b50945a59e3fdf58b79a119f2e917544aa9555d4006a5d905a30b6e6033e76b0bead002252dc8cf5b6004b5b81232b20d9570516b55f229b9c1412c2883d6ceb5c9821c169028b55650432b58f27b05e60a6c84a10abca0d41235574191d3ac2aa8670accd0610a72680a48d4e229a0a5357945411939b644c1161505d7d6e209ea70023128a59f04f34f823966cab45377cf3c49500212b08c400ed4ba0fe69393a41d7b68eb8a04f1679cca5f4fce6152bcecd6ebf979d7858fd3757704395b8fe0c7cb087a15f58f362228e324022d3abe2f021e2150a38b4f56d00d8117d96ab292a4a9cb2f4f21b828a546be6a81408d7c8a20580282916e5d7380c0d3f9801a94d2179a215ae6035a6854b53e50a4f3818b5a5aebf2cb0f64bcc5124aad2d946c81d23c5007cd0366506aa93429eec7d11e50e2012c3c50c4a603df012f28a596edc0f755904d07aefc1c73e00c4aa9d57f853baf1c73600556105d7e69e2c0129d0d8c81524b63d2ea9ab1d800289fba3f6979b51a7083064ea0011f94760b3af5aaeaaec914b666693310077c5d3a19c8c9c085813a506af1fd7192b4e7ca825aacfb579f24694f18f068a1868e1664d022035a40a1c50d2d7cc8c28b2c30900590ce05cef0e20258506ae91eb238cf01637d3cc7cda7b875e5f1ddfc1f8fdfa2075e51877884ba9425451d19eb0061ebb3de5a652fa084dd168042c7025e58f9146bbeef6f34cab4f7e3fb1cdb6dda706b93cae3dd2b60c687a45a2479aa15284105682a00b2e6b9af3dabd0a813056e409f025650a052fa21f18c7c96694b22a62d276086091c81528a84762670a9263156f59a093421013528a51f920aaa20d067a94e1270810450d4c857ad6a5d0caaf6ab5e24e0b13ab7269600a55894e105a55870412d192c8a508e2f16224a29cdf91b811d810f04ae008125d6fd7deaeffb6a7db0665c7364085c0002a31962b9e20757845718e001537840041ef00f40b1620e56b4a063054d92353a49dea0845aaa7a31f8e35743b6660bea27a939687fec9d6ffc5191b5ee5f0d7dc49bade7cd5287a01698107872f0e45f0d59f737bf78a55a9fc7c9f9b3acbfadc92fb676ffbd18bcf8b3ede45962ae49d3533198a45b483c235f92931516561658913e24a00adaa08b3d239fc573d86d4d53dbd50bb7aa958d9c8305ba7354a8c54f1166db2759546874545a506a755c3b89f39ba6b6aaaf9fdafb6a0f3f671d56ab4a424571788063718ca0d4faac57f9f78fe593d9862b7eaa16798a96ad7cdbe050eb04e36cc1f983e668393df4a49679763368ef234fed93dd16652ac3225da75572f44a1b28a50ca01d4e026e526a7d56ea93fc36bbce312c45b80f7e8352ba97ec2bb6a78a3428b53ef17bd26e6b3bff2ab8a822c7aae206a5d6f3336b8cb32d4d3528b5db9ae6126a5d986e724129358b504ae9bd4c1b54674d460b4c477741ad4f82f5a85528fdd1c633d9a8883330769b9d1c2ac9e000da29b3e894394832c8934459cf5b6044dd92f2a50e7fa5a640508d906a55d5679a9b2adc40e026850a333a544c800a1d180dd80796ada0cfceb1fab1ffa856134d54d2665deeefa154d664cd36ac9a9ba62d37c8b465e5a655f1073bc8b42ad3aa6a0d26f112631728ddda565177c61f9db02c917cdef1fe408b04d920f5a9518a6fdb0253afebc242e009fa1bdb2d94c800112522d1f91f7c0cfec82b412905423b770ab70577049708a596a8ffab3fda541c38acba22ad0dff7f49e138707c3564a5d4af86ac94961b3a551c38ac0b536dd6f8bbc61102f41b55419d49a6827ea89826134dcb0f1595f087d0b4fcd87fed975b8b1ebfa6bf9a45f5d964ba302a2ae10ff148dbb34e82b71eb9edb6e5daff611ab91d2ff62e0c8e36edb6a6de76bfe987ca3579ab8e4d3f544ca4b3822e9007e9baae53097f48c72bfcc3aec9fd5fa534c78c5746f7bae067a97bb623ca1bb5cac6ab0e38c3d2ffbcf2b0e938800c4aa925e3802eeeb50ef8205903922f745ffd0d121c244528a5f79e9014e0881c8e28e9cf43bfcdf2ab9cb31cf98e2ca18635420123468c8028b57ab63de7bf7b51a655d57cf7daaf9f350d304303c6a0945a5fd7d97cffe951f535a0020de01ab0000658815224473e9e7a9f010fe830608a226b50139f8a98510406459214f11839626dbdf7f3c89a481988b480c887e488ce15c47f554117647db8fd95a757fb6405adc08f4797f544a40e39a30ef982891b33640b3ae4876533c443690ad7213684a441859421e40294d28f8bda866f329960546c6cd468a146063565cda826089a25d0a880c6d26c53c8618a2fa6c8628a23534481a2030a0b1d141774459ce951696656208dcb0f1b1897eeb1d5df785dc7f1f765b58729e3e0c73cb7fe7c5955a99ecabfcfc2b7de073b3359cca0665c64da207303190ac84c2183440c1a3149e8c4e4c4d498228c10640c72a3036409404e202f52c4410a1674a40842b916fa7c18eaf3d42f95c9acef2adb0ce599f96a5d1167b41afa2aa8769ecab31aca509fb225fe6d7e18eac590a7ae64a8baa36275475dd9e7b7d51e3deac7d375a2f676d77d16e3b07c758775bd1dd69ea9d68348cb49dbb90d79d659835684b1ea2a576e4790adcf35c902e3031817c07001636190f8510700d0ce8f37fc48011567403ab80e9e634b14ca3363ddd76159df6de7a206755c41a028ae8802f4e2869732bc80e0857cd95cd648c345894b1097910b8e1628b48ca0a5a5d3e2c4675d559f2fa9b1ae71445ebf0faad6ef787b66be0afa50aacff593095d52d72f46a6eea8a818cc736ccc57f7254b8c6b8873fd956a65138f3958ac6041514a81a01d16202c3fd00e0b102b3be8ac782b2a2b94523ae4fb788d8979d1d64f6d3b8635d55a696d551669b95ed9bcb2f7c482131527079c8238d18e0f2cf838c14a4bdd513fdf27a65b69a9a1afa632467da110ff62ea8e1a830387f5556bf9afacc9e69bdfc74529edf8b041a9d581e20c28bea0180a251d287264287e504ac9d026fc21aacf50084129b728534cd7d9a87436954c9f1e53e861811ea81e3e54d45021828aa83205a5965533eebaaf8ada533f0f7efd6b66be2a6a4ffdbe2fe65b8135eb07cdd2f6073db7a319debfd138199b4c362a4f9aa78d4af8437894f1468e64cd630b9d2be8c4e3079223177f1f0f0fa59487898c4a4dd79942d33cc1749d8d4af7d25d25344a41288da0e49502f0d50afa38e8fbf8d6b573497101f275df078867e6f372de72b13c402a1097baa302f1cc7c397fc77e9ef2931ef72eccfed454d0104fd79a26a66bbdbfdb1de62749b58e9ea0fb0803a39a11f774afa0526fd1c89117dde07a6a8d28d511194129e79aeca706f513b42a8e0c24473c9075e2722892231ce97f8b468ed47ee2b62f362de8cab619a175d7d248d1baa0299c7ad2224029a555ebfebf458f779d8da7faac1991a9815a36333334d9b2581f8242b251b6440600ac0e1d4c0c580f3011606307fb5c63b85e701db9489f1e551f08c32c4eab1d06c27f20461571d628e362c8fabad6fbab1c7fbe0fb3a782eed6aacf9feff358567752d218418a065248d4ea640f6d8e8b65804ec80b210e84c810f7055016209b0e48881d41e8ec88416747097600d9b1001d51e8e8c0404707121d477ca8f0f940e773845ae54a4bd579b575f965cd78a6863e204fd578dbfc21ef7c6b5505892c6d546b5d5915bfd95a55bdefe693b49d9f2d5d67f37d9eeab39775d7e5995a6ba856cbd613bc5eb6a1f7d550ad1d8d557372bdd9e6fb16a686acff9abadfd420d286b8e31df2961ab2b606a93499c3fafe5f3edc61fef7cb577ff4dcc1e3038f0a3cd7b37900d0c941871c30f8ecc7d135634fed1cdb2c8c33ed8f2c3564e120cb3e5a5677ead513a5d20d92cf88adc95180051c61011e5840e989323cb1c513e313a4ce131e27b2e004164e787050a183e3031447ad56e71bf31cbbf3538afaf973778fad55f79af3794e5ad163c30ae276ac2469bdaf66fba4d621cbb2c2fe15c4417cff2a5b6bfe364fbd02e19b6ac9fdf96ae6f8265bee3d095aaf67989b5007e17c871c97debf5804ede0e0c21fd2046fc2a6094a292d423b4c74d161824887094fad424d81f58127f7ee73fb595586e940a530ff30ef927ae41eb79f10789a26dff5d653af42dd6b0f4fbdca3a74ea5515616ab6d6ef55d6f77c6ed6fb4ba8b1840a96f841290d423b0a58430133e828400b6a7d5f25c9bfb604d5effbb1579cb3ad209b6af1f20c37be99f96a270159e82420060990e924802a41032534a0048b1236a8759fa5fe66f1ccbc70bbd2755fb5e60ae49e6a712cc2589f8a3df5fb6ad7b3edbceb0cae3289adde7a54953ff652770b7e4d125f506af1d5dfd4123f0e26fb0349020b99248afc4d12242b07ed246183b6c0542dd341e2060916246c748e88c3113838a2831eec7fb26a8c7883114de818e101233a2308d029620b9d226a50440efdba0bb6d4d007fabe0afac4990b134f8220ce3cb2fa44cd4f5eb50713353fa9d22c260f7f08c7e68963d3a6326996d8660a437d5c9df1eea1deda443a455ca655367f63c915bbdf6e178ee3388ee3b66ddbb66ddbb64dd3344dd3344dd3b22ccbb22ccbb20cc3300cc3300cc3aeeccaaeeccaaeeccaaeeccaaeecca4aa552a9542a954a25128944229148241269341a8d46a3d16834128944229148241289388ee3388ee3386edbb66ddbb66ddb344dd3344dd3342dcbb22ccbb22ccb300cc3300cc3aeebbaaeebbaae0b2b954aa552a9542a954824128944229148a4d168341a8d46a3d1482412894422914824e2388ee3388ee3b86ddbb66ddbb66dd3344dd3344dd3b42ccbb22ccbb22cc3300cc3300cc32eac441a89b84dcbb018d2f6adcb12863200258a6b7f4a88c3cd85e8fd0d58ad6899c72d973c351195267fe5250ba1f4c4012796d293275219d3a0b40ca5275ffe1b6d43e98977da6ff90d5d6a5c58ecca66e15bcbe4d309e3e016fbf88276fc9b71fd247a93bd62f1a3d21906d7b16f0cd6b0664b9edc3e68c993c59fc78903bed43548283d3942514e39464cb5f371034a298a0f11504ab7dedb85525aa9a5283e9818adecde369571df1a3c55ebabc9126a42bb80828815e8716ecd9e6dc625de21c7b79667feca4b6e555cffa0940ea15230a148b3c4a11543275040e9b1e493f99e08df56f8b7739c43e949031890caf87eb72fa812c671d9b5fc86afbbb9daa1e9c2ec7f14f6f6bf8964e3444834adf2209d4638f9384f9216c78be9badfbf79cd0bcd908c2d89aab9f9b4dab6c41b75df65e5b4d273fe9cc9302f34433e9be8aca04d747a42ee993ce7654cd39a9c946142eee7e0973228a599a27447f06d79dc6453814daca0333041169402219591f199c2601122fd2cef83231492137c5b974319f580666f7fc75ea9b798123e0e4962703faa0480144a694951463f50da759ec9f9b6b8b7df34f982a949197662913c3d94564151b82e847505561c7caba871f99b6fab639094611edf6f921fe2fee5d8f1b617c883f850052628103340b0a07039f2fedead99b23ba7d4240c4a57289b17a9cd071dbb3553561d0b6931e3ce4f9a3af6aea3f464888d13215338b1a9e1baf4baf568de5c756f7fa7f4640a4a4dc2c8b1e57e1c9c3a419dcc506a22064ed3ff26c49dd213991c5b526a52c6c52731416ecc509943e2c6a1f404083d5911c5608890125b9225c73cf5afd95f53f32ddb3ec9c292df9c51bd8c59ee1ff75b7ef40f735c5a2e1c92b42c3f64b6c5bd941794941d94d6ee667ca3c37a71c7a81329388ad213184ee9c90f4a4fa25889ff2194d01094d2bab5a873b5400ad028230b39b80129cdc00f28a5298a324548e9c98b8b8918363c941d3bd8233d09bffb55607547a5e2ab3c3e5c552a151f3d69c057834205a92a157f33dd86fcbea6283a463488208210e2c38dd452777eb268b2663f8ab37c2a5b9aaec91a2eea8aa347fd52eaf7554b77bdfbef0faba17a558e93e09a1a3074d51f3bcf61da0bfb84c0937b9ab8b909ac2b4f61104cd7325ae69cb9d484a4d4084a4d6ef8b652522cf8044f8916c50920504aad1abead0eb4200a8e3528ad9d695535b67f0ce7b6db16fe57cbf0c739376320ab9529b8f834dcc52cf70fd36e9bfe9cc52cf70f7eedffe0a5356bcc72ffe09f04d7d870ce39c9b2ff66219c2b8193169b54c6b078d61c83ec3e4f75eb976ad99bad55fbd40ca8163f4d5b75e8b0aa5fa91687a27fea76b183a228400725b569cbae4349801528a5abbff9db3ddf9669cb94adbb2de2084551820eb4d435294cc5efcae3aaa6cae3fec84f53891c4a519420d9bf496880527a5e9526c5dae1940e4263bb6dd162ee3acf537dbe18f43eeb167ed2f7acb9ab0772f13d6b28a55450142438408308220821ac20820842880f7f6ec194fc293cd43705e7af95d271b3f7d183c448fdd12688208210e2088a8244caaefe46df93a31cb1064aad15685a9fbe670d0ddf56ca0faeefc9bdd00538d037a01831004ae965dace4bdc2b4a114428f75219efaee456a5a2871e2af5e2f2a4e584e5e4091404a88082f067c4480521f95e2a1f3bce98e36ad96af9c6967f3cdf33b6253e552bb4e5d6bb5a8c5357e0ef3f41bce39a6db8f9b5219daab67edd7a5fed61b2b605c66e6b5e1cbedfac97b415a4baa689abddf8cb55b69ca3fa195e0cb248562b7f35cb6704e7c1d0b7c0d44c9296b4aa9505bdb123a52386d375184ed761d3863a4511e2094a29df168693429a25f6b0692dfea2ad9fbaffe4cd5ff843be6a4fd5fafa36156f8bc3393e3917bfec9ffac6aefbf38f97b89bfba5675b7e4d9223368045fe67b6dba2587ad632bbdc65890284a9b7defb9118e1dbdaef95610eca0f5fa0b59af65aef33264571e64b5d73b58e82244fa6ddb9caaa63def1f353b54c362af793e9bacfbeed9fa6b19c7ff8b9d60eb2aa6aff62f25e5caec84a92565489ba9e6e74e539fa45a11e0a8502858e3ed5536b5791d4ce484a68d5f1b6e61eee60ed6109bea9d9030af8b65429299ee7796598e3e97b7afa9e3ccc3a7bfdbdef3a7f98b50cb62f3536f96faccdf3c7ab6b8574de6f7ebebaf669ca30c7bbf9391e6e74fef753393ab6b9db07554ba5f3cdab2c51d7f2559573ce4f8db7c5b130cf3ae4a26ea9d68724317e7aeaed1b5bb35a1b5bb37ebefb222eabd9df581204522dfe427e9f24b62f377fcdfd27419b853c096298ae659ec6ae5cbb52a3656aca30279452863971f8010e48800318f4fb70eaf7cd54eba343471d435cab07be68839213a041433804a12abb330bc3ac2b94557a8323b723355962c78913386fd0029b36c50735b8218d37986aed96d8c31ef640e99050c72b37b09193551dd5b4a60d4f08e0861b67157fbdf07152b849a639283559838c8b529a047aa2063d51831a5fdf9aa770f46443990201949a5acb6038de7d01f5c1437d58e20b17cf9886e5f6e7bce30acad5ca9f04f3cfb8679b64057eaa177519eaa789419ae45567cd6d7869cd1aebe3d6ea6d62f27170a5266af8787c1cf74ff1b8f9373f5ef6acb7e87dd6a7f35769f2cb78ffee9ce7ffd86d4d8f085343d522c94f7d125c536bc6ffd9fa38fcbb301fb29ae43ac41ac7f2ae35f97df5bd5b6d8b499cc33f1e6e9efde33f8696a55abca65a332f302f35632b65b9542bc4294d5655e5d5c2c11b973aaf486dfecbf7d58a3643fb6f5ef44ceef2030d1e7c5be1e3781d833d54ceca2da543a089890902a594a49d2d4480526af1fd3827dfd6197738430e2bd0ad37a1ce9f44b75864d7325dcb3c179261b40cea3e3f2d0a0707f96e3bdf16182e300c51dfd421af1957efc6beeac63e919af071bcfb3fe4bee7c9ccc0d4d0b80cf15ca238d1ccd8d4785e97d3b7757fdb91a7a4749de79d292967d7853c2fc786c55a69a933f56fb61e9a98184d1313f357e7ff782a4d4c4c124c131313a4eeb2b4b0256a2ceaff2dea7bd6ec1f425a78cd8376a58254b626412b44d7799e97ff5e3c7ad8b49ec9bb4e249feb7beed12c4fcfa4a2b212ff41151518953c53c2a8807645e5410bae3851b955212345c68fbf4b80c312ae40a995d51df79e4c1706478b2518b1faf37b654c1766eb6e2f8c8b09066f8dc31fd2c1bf5beffd5ed65e27ede8f22478ea16934a8e5ee9bafb391aec3a93e9e33161178e4a1916e9ba0ce79a466ebba9044a6912c8b8095549d8827e482ae8ab4918a2514918438d8e4dfe770c255625abad637c635cd442c219b414f5ee39f2c517095bd4d409fe354b1d22014529b59040a965b33e89f105a51464418f185b586288e183528b8b416d8e50c6279475f6d423707184ef089e1f4bc800ebd675c59768b1645cb251eb6ebb04011d237841a9553f2374805a2bb2fc6db274bcb2b766f99d712ae39bd082dd7a41466e7f8411823068c2284011caa095c427b8a2a9387911425084efab5b17e106c8c8916a818106185dd00fc99123df098c7105563088a006eda7490432a845042c3211509508550d3a042594526b9fba0e6108234a2dd567d56721a4410839108269ed54d69ad7550e22d6891242a5d617667cb105a55ff05859d27add7a26938c8a4af8438290022ce887c40a024d106c58abbeadb9b2f84f645cec81562010b4a06fce00e1c70fd4f881179452fa8322e10f7c50860f94f860a4960f3c14877c5efe68d30332a8b5027ba0a407286af5c0432d1ed4c1ba78b0c4222da8c9140fb8a01c571b1e8c3c0882522b57acfb85b9d8db01153b4040c70b2a788185173abc5842074fa0b4dc3c7c2ac093dbe73fda581faa9f0e40a0831e39a0430e94508b6398ca75b71fe630073d3a392082521c2001072ac0c18fdfa7753fe71ff7578bf359bfc3dc408d1bf840db7a83ef060ab0411ca8f55c735c41960d8060031c1b5835488306df2f4bbc4fbde2fd04797ed3acd6e3d871f71a6c41c51a7894d2e00949a041121ab0d040a50b3974113e4c6660ade5429b914676fbec4b228ef74970d781983c99c840a491c20d0c31cd8efe72183876dd758930b1ebaa490c38d18691404bb223b0f49ab88d5d77c5155658d1757f4ff2b70903d28bb0d12612594c34b237ccc6ae533179014914418d146a18077257dcbe725bb98a357181e892380c1395c26cb35ba974f5d09a658e490b48766445d066a43bcab62c1b711325db480bb16b846522912b892f3eb7230a34618196592bba44e183d76adce85780dd6d048a254e0cefcd48224e0576848525f0962e91865da24b5b99a460f45cc95edba589e166c50c1c4d50c03d268e446e248e4456cbb4ec012627106da19881160bc327fdb571e33531819869dc3f068a300c1b914825930a9870c185a42d1b8dc02765e2959548392625b81a16922ecb8dc091086e18896b6c6342020cdcb61004ff825b38e24a181299cac3c6081193118457cb3071340ab3d7ae12b85d9894890848a27badf8a391764b97686447908dcafe0e53eafd12be59d3752aa14908b2bf48e10d398ebba5ececb6736102022c03c5ab9136cd5aec665b668285c907ae88611b27ba7ec3366b49d7aa834cb6c04677b495c04ce32ecb691713bfa5eb569dc5c4032247cab47b89b0ff2b1b95469be8b431e940089246961b71a3dfc00ddc342d66982b4c380072e015811c291369d696b81002261bf8bfb06b1b6d9cc861e2bd4663d775a6b15b54e7a08906489878ef93384cd3c22b6e57062e46d2421b5a910bb7fb23cb5716759a6020c4326d23bde88e349074afa882c4448bec455614721b2712dd2b8eaeb1eb788dcac9240b8cbbae486433ed1a71db8834ba00c79530d18589ac76c34db4656fae6c4e130b6456bbec55e2accdae28ccaec9462566c370bace04032615c830f112efc8964a97c89632130a68d9e8c1507b8b95481927b213c8c450a469d7287bce6a1b2993801d9540f049184954d244f7ba4cb0b8a38dcbc28c13319b655929f3baced47561e7ad3a46626344e54704366d0bafe73411b65d3024813adbb0a6eb360c04ec865da4511882a2268eb2ad712c297a294c92df753d638da2e93addfbefcef1be8264b3d293b00c248d4a1613695d77e4011aa934022f4bd2c22ffd5fa4b1ebb0e7f55d05878015af5d5aa895eec685a5ab647fecba9b4ca54d224930920862a5128974490f6e2236765d8e06bd9bd092a0132bf0b952a6914aa311560a452136769da77bd73520c76ae15fa4920814af76c59238765d15eff5b0eb4c18e772c9c72f5dd7753757e162bbeec90e9efce6497b1f679fa1090854a20c144352662da6612591b499704291148e4071a4bd08c32eeee26d335e89e20c37aeb461a0dd30bb6da30beb252dfb4b2b8917e32e5249bb63d7e99eb1b7894eeff9b626c6b54dfc0dbb22cb8d306b358e946152ecd208d3b0ac845dd80666a3d5eef9bbaeffa88aac64af10b4d8f657dbb27f131b91b80d2359b0440a416d7435c8659c36e2c00c0cbf341a5d63be440c03c30b725bf88f8d48a3558ac4eb669b0d492227e234d14d21b54dc36ca869244bb225d14854d3dd9036cc02b97b95b6d18b4a962391ae52ea043f868a9b65a31126621ae98a2ef6772ce107b18b1b61a5d16fdb5bd18f5dd775377ff9a36977aaeba218af18da11283e47d2b40de4ae4a96225d96e3441167efb68960e99a722e8c4ad771534b2186e26be205c11003b5ec6adc8f44cc72a24b126d97cd305178ba165573317b35d1936e692b6d9726d2426e54c22ef196b05269746d36fc01621b492b954461b88917a63dd87524f9a18b2d8199165ea3ac04721c2913bfc727fafb17db385229bb230cdb4e2a2d1e664957d3c290c4912ca87159e6800b924456148946a512186e2187c4de1747240c0bff6aa55bba63d779a323ff6156b225ed1fbca008bb63d7818c6c59a9f423d08a3714b58bc43d140d086d582a8924ce96b4f05e501cbb2e3fe975dd8901a4cd8ab68d23852296dd2b0ac7ae632972b92de35e0343510c4b250e1cbb8eb43b75fb0b47e42f86815ab689b80d0cb1edc7aebbab7ceaba55b62ad8909bb12a9f5e47c888bbc06b04625a288a5a28b263d76da2d3eba59862036aa026dab00de4384eb45c5473af4d1c8dbe54ca40d20daf68d45df7619ec92f5dd775bc444312ef5f5108da9074dd12c98e5dd775a52942522666e02561db8804daef3a1521a86dcb44a510d442f06ada5b70ec3a7e63dff4faa7baaeebbc8cade78137211433239b6de05b0e7b7b4191dd9dab60329896859825619715bde8cac2d4097ecb0254ae98ecff47a51769a4d03e775d414ae0350a4936ccc2f082e0360222126fc671f78222d145ba1aa9eba4d0445613ef757177341a6d5a9682c1b60b62e16b9b38ba594974fdb86e069238f002dfdabfe035769dea33aaebc6deb328464f2281237044b2d77665cf8de6aa9b2b9baef3bcaeb3e2e5122fed2f2cd44662e92a894aa2a8bd8e49939f5cece8b2236d2b61a1762f11bc2d23910db35176655909d430ab995842ae9489208903c54dbb2c8885564417c769d736da42d2768944a5d19469a7254d8e5b48b3c42a5d6796b8ebca33cb9c9e0b6d26e248dcf556247258dfcfe26334d242500c419b95ae9228dc4628c4179546220662a5d06a5c891bbb6edb31e461b22208722f2a91b88c0349371bbb6e77ee99de5622b59fe50254ba1ea58b7b4db46d97664b1c077263d779960ac7811a778557bbb2ed8a3878689cd544dcb68957b49138d28f5dd775bd14bbee896ebbe2152f89fb7bfd93366decbaff2dba94ec2dd9cb95c2307b9196dd51d975dceb5c8f5ede519048a39176dd9178b96c64452371ec3a95de296b34226977cbb45156b2253104efd875decdd6d3b7ebbace7402a92c8d8c28c3b63023594ca48db012a78563d7a532bef97099560a2fc86124d27685da76c7aef3ba6edb4aad6d68e0b65da57bb79115b5b0442a8d5dd7755a566aeda5b6e7d9c03c7e6ecf43e2baef89b82c05f3725847849000e9d881840e057c8ef0603c87670159134f24e184d6bb091c9e124d7c98c09e7b4d542796e01e05781270b3f5362534c79144a90024b6eef608ac0923c47e1681793f7a4a20601325e000395ad51540c48d0dc3bf318088cb504819e679a98c476ec7dac929cc99b881790ab09f204056ead0fb8ddd88b8cc0c9f8f06f0c4101e0e01e41022c7964b0481799af43479848d1a001c000001e1f901f3fab6dd87fea91c27d8be241ec39ef31f93cc5b89783f8ee7e1a004d88110763082c99736ff20841dc8e04398fc60080150269c41c989d21b441ca12846ea604300940967e0e24481f8c18713541200b8300e4894522ac40e446080901d82d8800d0480833c6011004a8138a1277c5b2928640b0a79515abbda755da7d63079b9d101e5db4aa126621012e426007c5bbc5bee9127569cd8d8dbe5d3f5fb784cbb55f9ecba4f0d142a7ea0540915c1177c631c5bc609a97fe03fec1fc81ff00fe30fde0f53fcc0fd90043d3139a1e06ee2fd7007d567207c5c918f80403d4c3dea27e7624f173f4847b367baf8416aad351fb1a2e65cec7deabef7851ce0008815e81e26f14920720f95baa3e6273def92da071664e087182028054013f8ad3d7a849bbf5cd5f48312745094db054a6bd71980a2dc25f4afce14880056433dac4fdddf1788ffdd4106d8c0b09c502796aa52732e8b145046d497719f244f194a4f72562661601903c9295cb39f9ffbcdb3a60c8bf06cc835041bf224f992f3949ea82e8989e088332479ba242642e9c949e949cfa748e909bf98d2934d823895cf97ac652ea527557cff1d66cdd2c3531642e9c90272fe9a9ba6a42cc26e326d65f70635b98215c98a6845b6225c115191511152912fa07828f02ecca35bd59b5abfa935c9ab4ca8de2fc957552b92cf3f4a4d967c3c192623c5322ce29285a0c499acb1cbee59c80c499e2f6f57c24b62226378c6689dca58c62c579e046dd73297d43f5c2ecd193e0da5270ee85b9b7a6721d7b4dbc6a40ceca424f776b99971b1a1d4248c939b4cbb9be8848a1b4a4ff095ad1ec88730397f330ca527bf7a20515c128f2c2b32cf507a326e6b527a92da27891251abab573ec47ac87ee9a752e7bfa5ce76b4f9ad632ecceaea958eb3104a4dc2c0c1a40d711ec3b7e138f541488b437c4f29a8b830ab7ca2f4e451b6b4fc04c2a5f8fd97d2932978cfbf4d5628a535323330362c3242a4f08a9c6274ae5b6313942268f06de14e9e650a8693c24f1b2720e52695f0876418ce85e17c4099767a2ae8e351e93a24228cb49954c21f42cab0937422b9b24d7422c9b44c3bc14021e2c2b735f6055ce0021da01da059d02c6a70027a2305a540508480c1b7f557635350ca011f3253356de8a93e03e1518a07141b1f882c2c143e0e49da92c70cb95ee80106cac587524a023a43a9101f3560502a434510820f50fa016ca2f46600947e3d50686610ae76a84413e8c64d0b191a1200d00400d310000030241a0cc76332c17040b30f14800161b45cac601f8ae434c929649021c600000000000000400282008ffd825304b54c84d8116f802f1f54cfc08fa489d45fc0eef7a97bfd5030ae8baa2b6c7f21da5491994f4e6530f21befa188f99e1bb50d136e14fd40321b8e2fa0e98859512769c340eff282a7bf7342648a6e64765bbfa84695ea82097a2597f3e56068a690b51bf4522ca3a7262405263a18c36db737d508c2485a8d1b33b9153b5dca175de94741f89096b55563074b985b6b60eed7e45440a4ec027ac1138c9ea9f9d6632a463c20cdc6f9352136e4c575b07c8d6955f6bd67adbb0e369aa004cad9dc65c3a5cf3ee98eee43b49f7332a460476d9e773751ff726a5b44b9fa9620d32dd55d616710f92d7424918514c11fe5596c34ef828d65b42b7807d4f449b8bde22a1d3d84176ecf424df15ba4f040351fdf412cd45d167aa8f8d20efe0f36a82b4a51a8472c9d9a6ba3aa5a32a7df5aa35155f8012ed0dbc76fbdc17671c2d343aa4c4c87067282ba90a725f6c768a7336ad0d4a85ffe4ef6f9b800e733499fcb9cf92856aecbfc37168e4a502cb4bb3dbb626728e94a7bd2b25f91c68da9b243f9a0b96b0177148a6920a3ee858b439e17d4d70195c8d187b68a331b32e5c6d6a71edd5943c8b4280aeed81380d5ce91e5364ecb930feb226c77f46f3df9be22ba7a1a5f34ad371e24376eacd44b6fa9d04b8fb695ae41c63a0813a7e489c551239357cfa52f647cd4ca1e40596d25029d86cddb1a77b959cf452756077adda3acbbffedc3ffe71d8125acb9ca127045ae5dabc19ef88ac717d2e42804b59c69a45f1644f9537df5c809345b13ab93f242cf6d720e127f76d77fe89b29a59b40340522af28561956d1a2d35bd3bae067a3261f6a991ca75c8c260c53baac6a7f926fa13da247ae2f14171c4f48128427eddd6f3fb2b69bfdb00663a02fe9f9ab109e81167c37c2f1e975c04f10d5a48ae3900c235a4002270070cc6bba72d26eae66088aa1a88d21ba31459b2c249265480cf6e9e7ce30040e5d34c26d749126a1fbb2de9690a04e0164f81e751067126c479d85dc25f473fc40ba0302193d884e0ebf591141bdf8226490bd364155312bf926921e4ae2eb2547a66190516135fe99e4f1dd4017206edf59f31b35c1fa9ac1a815ea7c060a5946946421c38b4ba1c6408826cb398c2928691e80abf4270ce9a0164417c54d1d6bba012f191c4b16f86e2b7a31ee4b46203a681c7212fc9303c593a2630811876ae522665da3ddcdbe5a3fd63c112026d933d2735511f74bbd20ffeec7ab551d6134f305067a9ea90774e73e71e03ff1fc4f778182059915ca9b544c0fe20f9c435235d73b62a2204dde6e5c1e25bf8ada8d5fcf758dcbc08f2c06960703d4d57abe75b689f8ca41e1986fcba470b1aa599a678b4cb8c507b3e18cb6173b750f6a8d597f4afc97b6ebb52c929f5eb2497d3339ef17befa6a99d93910bc962a4f5b2fb52c29da3411c137920f78edf145433dd2d981687fde19457e3ffb596f084cdbf4db772f53834d341d6f177f3a56cfa08dc4203a07996a4c3387b54298bcb41ccc0c1e8ff74b35418c9a840bb5199a033758cb4faea0fb559b8ad14d6b3ffa3dded374adf6349507b613079ed1d7df3f4bd73060267a09d95cb530d2a5bb57183f4839931706429188b23f524276d9d4a3d2382b31b69abe998b5e7a6df514688b2e519e4444c2f6c4ca49d2f55f4c4f175dc9c874a07db1942c8035406b9ed460b7130d88d36f0cf42a74fa90f80f9f8e77a34ce4ba796b291fc1936f07ce9e375b570f84025c73d802cc570b90cbd5df8763384ff5c29c02d5c300fb6bcc96152804f19010bebe6acd43634e7ae1317b8ba116c528e2987280c8855e59485396ecd50a61042006977ba0446bc81204e8800132e23b1f5a7b884e51e757e1076a0fc6d0f4744b1f335c1f04e4cb780058bbf4ed66308ca2e57afbf1bf1956812d4824084363d970a533948f2b66eee6000fa0e7f5091a9ddfaddad643a2391bdfad19d345d563a54206445b32c13628005c151752a1b1a446e7fb3ba420144f953d7028d3903ff0ca94469870717ab3aa58469c1b5e0f434bf49eb936f41b70acd288313014ff6b226025c7908da8b439d55e76ca6f1ea214aa46f947cdda15e68131f9fbb74a0e45a7d1326df5e015e4157190e969829cb4df3f74cfabca8123c30f505781b6e8e563e8762e5d28b9ce129376e1cb0be3800abc5ef93ec641206d8ffbc3805356b5a3ff0927f346d07aa8049d6c48b3355ba9c4a4856c1850ad74ab22bec3e0cdc4a9354e875cee2b8ddf1ca5e63eaf1a3f2368285a52e29edfad5ae99ea4692c491ba7a7fd1e93805c038f5162d4eabf9b9783f96bf4f5616c43ca72ffecb7f6464ea4347e6d5701af5fa700253783a249d975461d44ce1e4b9bc6bd637f61a657b1c794776042b99f23de9b0ec6084c17da655efb7a9f791df0c7aee81b2fd22acb360b9df15cc42af441b20c1b27da5ce69b6ce5e169af86ad4032a06e7df9c4c45912f6256f3df41f0577c2d6e4cbe3d7b7e41a8d3fa44a55729e2aec7d7e33b10bb64c04624e8da5344d5670d2f8fed546ccfb879d88b7e1315d11d478499c811fbc18d1a921e9285396f97042910f69ff4774511665bf8968a2eeb4661466fbed87bbbc17de85711a9956160296431ed6657e7ad4b84ae5fd144df8762fd788dbcf70fab5279b5678ff671509e8ec35eed3b8cf16b14b9eceb2db6bec5aa2c86be8959bef0a6418d723a760b1133b32e91e6e6ead497d1c8a7b24cf899fcbf91be71899f0a91bad2f84cc614faf691ffdcf0bc031d7755b61c42fa76dadcd102098ce5f2b39b584511ef1f4e23c667500b0d63fd6e8222c96506e0e5a28f7df87dc6f049135f5423e04c9fe9a5507fe0b1bf4d3f550c16c6107e48c85e2f157687ea84c898ebdb5171666332b9b00e865241111f9caf6431f0f5f3f2703de647df45c286fe6241a2c028ad8c19ecfc7b73c9240f0c97c348b57474029a3b86d9387e102caa7d0a1ea176204fcb0d6bb85e9f1a8e0d983b372e95963581516a5775e9e7b98dfe0c9687c19651593049e9517bac1ebf194cc3f51c01c307b0646b86c8ed44c2f0492ce92c08f724861b526c5714169d0dd47586f8bb4074af327c47460cb9f23d0929c39860bba862536a63159a06c6b0ea5139a40c195cd59a509e50c3d2aa0ee64801b993852e6f024cfd0171a1331c99d8ac9e5858d70a65c4d61c6c3a082fb2934d6d960e3bfc717fb027741da91b4c348a7343260f70265fd4e511650b5a72a3db17c1bf7fc48b742e6595234569ff344a718140b6ee44986835d2b0bd40fce3814e5a6717b17b833588b1f76b01ae7c2d8470fecd8da8ef03c7323d043dd7888bc30687ea5f7e917c3e3cc85bc6ee33d8f97d101d005172258eae885eeea42e2c4a67b8433b239adbc6ca0db58b75e8e9126afbe7a95f078734dddb2fc15d60a5eab8527a60df0f19d312167529560325d3ddfe5ab6af2d195768844c312293c261136be15a1aeb602176db2743b3248668fd9a795a58b72469e6a619305e9bac2bf163dc0568e3d1667c2f03902d0676038031daa21a3d75315720bcbefd63a288f31d5640110db0f0266fa72651530a2cdb8164925ee846af0872eaa76237539b433938aefdd679ab272f06b35d11fead0acf70a92616a0b13c11c9edd6bb4eb8eb4c0fc810d14ea8c9e846797ccc4099e20f2d58f33d9141fa5b642810f0b7b944b55db5877cad9c8d6a978deb096a7c7632134be5ba98a3b7f6f0dd1a10769f96f7aa225a58373c569f6a3057dd897a3eca33e0f91051a1b822c72674a9803574ceea939e1a6d91ffdfc4a0c30b016ddf30688e6b4f1efa0f8cd62786cc8476cb5721a958a02c7733b931b8e2eee12da61667c3b3cd14631368a65e00e70429edc34848816f3e6ed1b1bc5631672eb7194d9c1ff650bf2e02d55846d978d90ff4bf4243004c74a18ab18fe180e46caa590d0e5c4098f4b5e3e1e0cb91092bb412a3cfa18dbc01d38e0cc850f39954e26f4f79e5a9cafb7ba89429728384c62131bc6c67b0906990aa87154892812bf3ac21ac4abf153265cd308adc7999f68244c39f85ac47cbf4437526e38b6676d8e5ae5807913d1adb44f0f8be61d0cfec558cc2c7a5e924c056104b1234f4680b4130f837e0dd1c8a606aa4c2ed4b6f8c0ac9f8676d0d694f185c95e71ae4a3d0af0f66fb34b3311a79b8043f35a4d77cc4012dde6d73854f27561e0bb2503d8d578cfad3344996bb92b75797e8f9b43a56afd1e1b3fbf3ca052096322def075e566132d27199cc73e54d1c51ae3bf65a992c3f6553e55cbaf65d44906d86189897e6f432ef689c180b701dca4ca8975e4b33900df08e28c63b61f93aa8681f76c59107f3e44eabd81f8f3666fb0fd352a8e1fbc1794ed07fe193ca87b9750b9e7b67d2df80499131ab4c22c7f5d25003a9144897ccbb95b4c08db52fbbeee5d1b27dcfa89b7ce8cb1c84f672272594110677ca0a527a6e946bf1d2bad34a441c2beeba38afce8d927a02be6c2c89317ca79227ffc74b751394d18fdc26da4ebed22672fa990df1eaef588b50e590dc24a127031e0c621e9156e9d8bab4086e7efc703ef3ab3314c0d27a4b686aa4d0b8dcb5484d96eff5aeb8c861a86e1dbdf369a37e90f9dab1bc667ea88b1991d6130ab4618cda421e3b33490c84c0d25985d438964c3301119309a08ac0f3dbcfda3076ef9f0a11b1f7fe8d6c71e86f5471e46160d4bc46634a230591d7f6843c718dbd20123b63acad0ec8e339aa563c667e990a1191a676896c618cea241a2b36894d04c8d2792012309658241e2307df4d8cd8f3cb8f5238f6efaf0f15b1f78e4e6871edcfea147b77df8c88d8f3e72eb430f6fffe8815b3e7ce8c6c71fbaf5b187b77cf0e82d5d37972fb6ec945bcd6de3699334db85d82cbbe6d45a85d5a6519345804c3090101960480230f9c0436ef890076ef28187dcf0210fdce4030fb9e1431eb8c9071e72c3873c70930f3ce4860f79e0261f78c80d1ff2c04d3ef0901b3ee4819b7ce021377cc80337f9c0436ef890076ef28187dcf0210fdce4030fb9e1431eb8c9071e72c3873c70934f1d97541e1d0e31f993b8d3e58de2ccc917c68734468ed7fc80c31a3e74002a7f69e3eb2727bb776daaa65c81b3a94365e65490e11d613266d4931849926840fd9e69bacf57e62d9717f06a1d3388ecece38044a841206246482a22d7f47da933fb4f5bd2ca47b7081e32acc354f02e12d2df0b08948e81996cd01f34da1d0fa03fc9e7d81d33d933c587f18ae1c805586252a99ee132938cbb1799d4e7cea05fd4699bafb22a1eb6559dbf08d09d26828da6574a5883eca2af51aae3b85eaa3b8e2dbaa8ae5c38defbbcbd768913d09d1161544044bc2a274c9a493320daf535771105b813740a73239579537bc9b2528dc1ae05d679fd462722a7c078049cfc91af3d413374ee1a868e14b4f1d7d67bee405a91107208aa0545969d5e60d723bbf7a3ad2313fad24f7534249c87f49f420a57389d00abbd7c4f2404e6e3a2f054092d7fc04415960d9e025cd8f1a021d3ccc93c9f55bf6d20c806e886575918a1cd2abf60cc8222359d62f15d7641559d57cb23d21401186c1ad47789375ddccc0a64db6a19f1286389167abe9f85af92fe92e820bf17155ce56381e1d9deeed936d894e2ddc2d05baed72ffe5784766c84382d9466efc2bf336a9b54cf9150a7abca5200203803b22e1dadff767d96a4299e8e2b2dbaf80c14bbb09e7a9f3dbb2b908ca5cbb12f151d17b0ba3918c205fc16ac5c54346e3188a7f29639460822b6f6817e4f0f6a303a31b0e1451f04cbf3f147893791613ef90802acc6ec0a039bf81472719fc3910fe5a9205108673874ec8808d2f76acf52e8d3df0b96bd2ef0407c49491c74167d842046ae6f175edf35790838bcfb6a39e27e0a041178e57b270c0753485f553ae2e37f62291bb40ea13c149d9418011b2f341c0c2398efa08749a5a728875648a5127400577c9743f3fb4e0ad5d9e51b2b0217c61ac1b7c6d11d0e5a088c2504e3ed3d0b370ef40e5a169468f4695e29a6d1d163427f3847f20165d5042fea6a20cdf986205b09d24098d846e1f4059768e7ae55e7a74bb75f845373dd157bd740203266e5d0757c8d5e4991539c02ebd58722401f342d15ccd20c2c4ab4974b5215fb1034bef3d1131380912d3857f0de743031019a3f69780e61437d4e5aa1367f6cb855d637e5e5010a115bf656b33a7cba87d9437c382b1cdbe6cfb83ff6594986ce8e96c4c8ab0b636feaefff0ee7ec3a0a0cf7a2d30195d4e4980f217398e9edeedf12a96d2921db8b380d7b181896d3fcfe3755f93206efbb68b3e457f79f6bd1b09b78b31305f5f1a047be884704c5dda37f1211077f12fb3803e8bc039db96143672fdf4194c3393e2f364a1feed5f141f073b5ca4e268f34fea7bfcd55d25624ce12151a312ac6a646c55835c2deb8437c5f8ccf7f684d29855ed191b257a001ff47f88f41e08fc70eb4ea6af723883a7d338196b6c70c7ebff992c5604a0537b6fadfef554a9a04eca5c252a2be6bbb351155305970e6f2c974aa73af10b8c066e2a99d6c54dfa4fcf60351b805ca84dc72a73b77ed85ea6a29e9c5a11dba48f0a708fd364fa20de1ae29f4168c1039411f4161b08a6a9cd3b9b9079b62a8d0f4fb4189c5ed802048964f7f1b68b823ef9be2028c101b3e760125529c74c0fb52a9b4d73cf18bbb02964a0b5f8f730b6d8a6224dee5a505fd36382613c380ed1e9c400c77b641f99d34c64e163199eebb907ddd9a3f0a221c4db740fbf3e1e9ae7afa7ed6d72a44227f1c609f6d4f989e2464ff826306ac8f3766e0bf5ff1eaa519fefdd3964aab3965e4bb1e7720baf5832ebaaf0685f0bc516c5feb5e35c91c0aee24d14ccdfb939a53189a8821c829a8cc17bab7d99ca1b540b7df3c27f370790bc2424dafcda58e3d22253f38ce965054a143b700be65f090ee37ba7a66e48a97fe0a5bf0daaf331b5be8c7531b4d357691e3646b4da4d502476e46c5255403e060c20aee70d71de4789735c12cd31b377207d09a66557293f3be0b51518673b2a2662e0e42016c197db3058b0530a465d86699d258d2a0f9a09967d8074aeed9172a3bd6dda0657205e17158ffe1ac13860607b256ecd61e247ac635f622a8ab9b84d7cc4eb3d57c037181f056653baf0dd3ebb83e86e54ae6f527ba9732cbd1b680c4b3ab20093fd1dcbcd0601fea56a97aa5ddefefe89a6f626adbb8a6a790174cc1ff5d866580af804b04a08b9e9000f44dfda3e816ca7e4c421ab9b8a079cbd5bf6c94736774946e5fe8b60e801f0c84191094e5e9377e55e586f9bb9b4df5c5c22bf6b1765dc34ddbab600d10e32d681b42eab31c0a54442f4beb89493faec347dc1bd321b0dfd369219b868ea079a361758e94682b3437427af62c49bd1baeb06341c040c5e324f94814378118bdcad0d47b8b686f30426951cd0dbbd8351fb4c37a9deaf75ca664e6759f948b92c8b36836d5adec07ec41b87fd524754fcf26a6782cc8dcd6cfb2cec5be5eb19817af955eb7618806cf26021b03db64eea0ed414000279f958acaca39b1c7b25be38cdc9cbee87e5101a049158d6a9178c322419bf0de6eba4674490b6327db82de02f6b4ff05d3f69eef99e50c38d4dc2292b83d528eb23aa00ab070f0083326a40b0ae7b2f33a8f5485627001aecd0d53adf26e7428bcfac8fd286da26e69240f6fba2f28b7b0639134286182d13b76b22755d028611b41d93a6bf2fbe67f28a4e86410106cee565987b6417acb72f4696a114a00fdb8270095a275f02c9e7f8b58e9494b70501d8840c61b66cb4ee581c10c72364adb87d12ba60e5610888ad8de5d2192dbaf4b70c729349d964bf4bc76972f74fc963c31333197c8514728760f6c675d635d1e72013f9029c46be41a0e61c3f511901fb2af0bad46532f13a7f3ac3d18371812ea15012579736ab927d548897b565927184e624eb3bffe83b2ef01f61c1f868d1cbb1c5104aa3fdb6648f5afae7757428a49e1e23c9376c40c821a5905798fc492137d60592dbdf68330503eea185d8d183086fe7813a94b4662060ba83623bdca68133de4d5c890bf9f62f3677f2d25a7a6555673904268f0f20598951055ef80cca95f5979ac447cefa77f87933f00f4f3af3a42506624b66b8edd488dd28e860c89f7900f1abee4629c30285bc5cabf9435e3510f2161b32842cff9773d3de068ef15ffe64668fc51bdf7a0f19b43f4fd623f75994ae9822d8e88974e4bde74fb6a4f5b7f0115af4d789b97a245bffc566617377891000caceb440705f546e1c1f12e989a898d85e5ce5b17499b25d79ab8ab339b26e6309f261eaf24839d02c55b87dabe0bd6e80d102080816a23f53170351368dbd6499aef1ab162affffbc9dc0eeefa7dd321def96077a6a5e30c7749acf8635916e7ae77670c3ed8e2d013569d1ecb3cf544e6e1357433f9a51b5929abacf15a1db045b4110b28e2e46528d3ed3dcbdaab3a433957fbe68f38437b8cf9c5e43dd0b4a202842fa10314662d866ebdfde1860d2fcdfe175101fcf23ebafd080fb3db86580ff887ee5f083beca9fec33fca37356e4f87e967b48e8df1b4f72dfaa1a544d548bf026eab5e81afcecc763c181a6a3753666137b7aafac6d693f5d6199a972e746712027cc4c4a998e0843fe8cb47e8f7a44c2438afa007043e38e837cc8ffcd7d3d65512a942ac05b167e78763843e534afbbb31c8ace0f53e047c4610e6e069cbce16169bea6f0f661c3a2c4955bc0fc1b87e67f43df39e57e2a57f9817763b74ef9d42f9e0095e314e4c077f743010a0ab9c9486d1915b1f0f60171e190194db4c3495cf9ee2a080af2d1e383e56b13d39770d18c403944633f76637e5c32701d6d5fed209bad8a2911457a8038ad4600880acb08e4fa5ce5db75d3ab4ff3ad46f88dd17b12dcb7d54c0c26db78d8a32f26fe55b7adb0cda413bda7c08599adc774421f45f60cb9c0c3743cf28d3567083a8e146d01592b9793615883415d4da2ae5872c67d22764c779bee0861116a69e00cdff64c60acd1918e0d86c8f14c734825ec548f44decad2da7d22109daa01d96f725a1bf38253fbcc50b54142da05f618de76f12f09ab81107c829bc387d5e43bc49672d4e472b2513ae7f0aed79c5cdbeb9ff53b3f22cfdc665095c80c8c50d5e52ae0c3c52253bb1c04be8cc1fb91d904213943cfdea5fb9f33594b6d173cc090c28735fdc8a9866f84b9fcd9e2d28838292e69293aaa56c5b81ee4bd5d14feefa7f6e3311640ef43967677fd59fe4d39c25c5798f59990488b738ddeca67c523a29201a59f9b42654b4b09f2943f852b617571aa8b1f894bf6bcf5d45a3b15f79a6d079e9d509cca05afc45a84b776a146ede397f556e94ca9874259350147e486ad949b9361c1d6ba95288a093450744fc73928419d8ea393f4305e3ef8bab836cc522781f399bfd3876e7152b00decaa536752d78daf8f54aa148327a7c8b6e2dc4c9d842c0531c6bf2f0a75a69f1bda05f00e72cb3532f3c6b80d0ef6bae66ecf74682af77916d488b3a2bb69e5ac44bdebb69e2ffc22ff926ee88a593ff017caa6c162d033bbc504a2c05f16786ce2beaa74404a0c26abf3d7369bb2d9c97382c1176ca84629689983048293ca8ece0583bad0d499a606b503184b688f7d995a2bf8066563225f839f0d7341137ff96d3ac6632ca73a10dc142496c8f7b55dcb43daa49eea2be6f5dbeff0793050e87ad57e87abd1bbf3fbf9e4fca236b10df966dbd4eb2e137971e69dee64cfef2aa0e993a1bb94f06d75cc946d4d70530c65945f131b5163f93a5c82207b3720f371dacb9c82fbe76478b42c7dcebc9d631b929994f4be6caf8f709685237b0100d3d4d4661a26865358bc047024ea9e54f10a2d1b612ece4b7d93b41207d7042a8a52209c262fd210d11d4a4e93d76a5b013bc693cc68f6e6fb1a9d6e11118fcc136d4ad7b484d05f1d0cb372aa038ef7b55657875c6925c2cb0e003742f043948b4a44e24c67d4aef9e3feb49dac1c1028e05ffb768bef6eec8c90f77e1ad6ee9004a96bc6ceb92a29d3cc21bf675cdd54b3ace320a51dd31784bf490b0b6b26b9262a64f31fd00476d554dbd2bbbbedec0845dcbde1a4bb81fc5735919582b79660045f8476a6e7e3ac66889ecaed1b9caa1a9c01987fe156c3d3eb28a92c903d80c54f1a904cbc16805073da47be1de98662c4c76453352ea458e20cba26ab99e59d1c1c21e2a0280fe2c01e024c80785faa98e4e906cb1ec99a983e3b14ac47a5dc4899016010ae9195751978a2b5d4ce72c03e87ef62056b56a8a030a543242b85a9438fcdc180c33199a334f37639bdba4febcc1cde8beb90a68be0c7974eb8adb2876a0384b4f85f813434e1912bdcf55708cb832310a03a114405f00c96ea378255a5a4b37ad097232ccb31b807abe1e9d7dccbbd2674b705d59479b53eb0e10e41fe5c140fd8b3ae7d106842afad2a6b383942597c246d888f9188604ba9a88f060f897ef1a453054daf5b4360146a9a04ddab379afc2cd5060966ea45ef5b3ecfcc16b9f16b1fcbbe3bedb253b5267b623e29221ddf61c77ae040acc47cc3bea36a86572b2584e7904d1b6f379b315bf2ac2492a1876d90874bb45ce2d791ff043c6e4b1b00d563e9035df9a9c65884a024e466941ca710af469b7282f2c960075be24183f136df15c3d85d15b81f04c5ff9039cfd5cb1890ef8ed6e865bf39810378fe2aed1900b1bd2e110b33b7c5e34a14a18cc3f6cc79349bbae63177a1a56a929fea261b5e0d270ea10781ee3abcf7bbcc8bbb8665451a1c056bd987ff2cd22459809223dd73b64cb29fbe155d7f553aab424747db5501be10c10a228a51478e112de4e6954f1892a015386ad6b8497c0b8d7807dbf6feab93694237c64b09fae08b918226b6957df54baf97fc59848e212a804d6020c9d27601178f13ffc6e94a03dfe88004c6a9273c824620d4d796274856b2ad4ac476f6086f4c135e7a3d504971ab91a6b521b9dddda89cc2b9bd6c73f1269b143d4739ae948723b985cbba1789965ca5f6ad2524123607540be501e8c74b4a6a1536a251ee5c02aef1971a56a6581d784e5aece73d122e88dd79e93456407e5987c60b214d9f7abe265da417aa253b6d300dbf08e5b9295e26a323a60095f7d878aae3a3d57e38a3ff59dfde6fa8007daee464f99825be1d2451f200727f79396b3b1bb67bb867e2c4898520ac4c5225ba02b9756afcbd54071e06ff1a2a6d6b993181d2be1eef7c4e88a1e4ea3618d861a252df8a33cc35d2e8bdff834f6c33935bc66ef7e342e38b026f3f9f34abe94d7061aed2ae4286f4635009a9657d7bf3785dc5d06dce2202072914a8e9c31e3d01e17a5d1f8a537240d4fcbf028354fe2c142c3bca4be11c4a9b044f8232cc6224fe576284181c08bc586ab39a9e19f0b6820137d303f790d260d07bb7ee8022d651bd1395e14e1e68d10c9759fcf11c96b186fc3ef5997159082f175d584c9fda1f33965507243df9ef4e262f9077849ba776df83a0782db5f9649de5b0b3d05b7f4c3f4b3c9e82e9471ae3d9fed4df13f1d97a55d5c0678b9d66a6048d30f22b5a661079f36ed5e7fcd24d068a20ba35198d1fa97cdfbd6272e2d0773ee2581a56244591751e595b3fca0dd92129413ab1a314334cd4183c3d4d9bc7ec6edde35a6238516f8a217ea3a98132f3a2c253ffca05c08e1e9831ef1a8f0fbb0fe4611696410a30df5ad511870bd099860f8fb53639ffcb01fd467964c57f140b345018f8440b0a0dc4f356bd03db40ce8259e490f0df258b8d1b88e324c15d6b487440eb5e5210d23c64f1d886e0587a44e58e4415b0d7ca49d57222fe8ed7391ec001fa05608af1c87a79c353973b836b437862a004dd1d1116d88f4665a924985add02df27a7a6b1f8e79f9ac0b9a7bb0090bccb8983ea506f178301e035ca174425daa2e906fd2331bdf067687635481b8cc414e6f18941e3698c9b0189c0ed24351688a65d9a8a805ab5fb37c614ccb5592b03b0f3814e39d2e2327a4c067f9885200f77c827e13acc6428775587d27caa9ad6bb946cfb59ed8f1eca96022da2ef90c810ddc58bc0c777ccef8bba6ae3a10a19e6a27ed95d3ee2127fd4f9f0b14509ad2062578c8bff1bdb3f4ebd3068e21cdca392e897d0d9acdbaf2d2a88307f474c289839356adc8413411fd528b5031cd94c83572d33d890098079996ef445add38332f29d76cdb6463181b72daab94aa568221febe0029b266adf25fe176df939aa75b11b65fcfe4f716a399fb1ae81c5355b517180b030be231f11b1a74dc9f73308df70d8a379b08bece614363d7d1177dd8251f5c365ccbd0e128dd96aff40bcbed93c132ed144030c74da84683c8cad3f8bb98c3baf529f9b18b4d32148435a2e4a644d904cab98a20642512cb8e54276003894bfbf82a3719c6ac6a336db097c100722ac53cd9475e2a0060e27cd9b275b21f13b3eb777fba683f6eac3067944024565329664994de0eefeda6f6908d2e5fe25933756e1aa9777298e17b0587308429962b027c15cffbec359f67be8248ae097acda8876f9b7651f775d9838d975135859ee6f80cae45f65248f75bd742f59a1beee3509d7db8bad8472ab03388d8c86002291f739ffac6595f29706dbcc3367dc8436ebebbf0b6e9a51bc36544b1142ba0bade01f2334bbb1da5e1e5ccda9d7d0c3d352d9811f4833d2856525cf3e0813fa1dbc4a6a3e268f0aef1d11d8e86fd235d8fa07a77a2b75d6577916800c00872344659ad91cddac5389fedbe6fdf6a098cc434cfe204dec03bcddeac49490c51d4404716ffb5dee85da7cd6fe821b72bc61f574092ac3e92a6f2e7d49995e82a23cb51aa823d710075f99dad67fd9c41275cd97eba6301e7b919d9587a13e3b382c7cbf6b7c99475ecb27964716ed59adfb6814a0428613d6365bffd92a3db9ef941732f072df6972d4bd105f262ed15e1a58f32aa5d940614b103e8f22f44ae982e1838fb3426d56d36ecc3e65e5a2b722e2d75d9e3548784128202b25aaaefac7a8da085107c77458799b98a93dcd315b798f6adf41dd88a593293cfb8af327349714e7813998da84882b1c7627cc2e8b5002be1209682a807e0a64ed52d2b5b0a979e8241a9db02834d8a7bb9280a30ba6e7e8228beb5dec0ae58746ad3c6b30bf9701bc3a0fc747a4a3278cb3c89090ba3469b62575b3593b0db9620fba630da5a852190c34fe5b781a1bf409389fd5884bc36204e81d25782640516ebd5e79ca9692c424667cc4144d058ea86ad2a9dd97e2b1ce6da3dfc0bf451a0ff89dcf42d55a456d4934c31a470d39062eaa37f13a11a72e773db02ac861f878aba6333080adfaa1a3c22be25812e4ad60769bfb7da0f0fc6d961376074fa9f1193f05aa4172081dc20a7106df72fb6a536783ca338bc070f9dffe25bf33dcc9b0fb4c72e2077c18a73440b310926bde740cfb5fe19bb88dd7173a12749332cbc8885569301ca07c6636d94efcd991761371992442ea68625c345220869977a89f4b47b17380f86fb02b39607b856668ad771d5a1f20a5c9b362e7ead89b3c63004358cc77414d30c4dc351f579ae3e182524ccc9e84054a88532e63b0ef3c0578a1f4be901b0e65b25e81b6ae0b5c1c6258e2463cd0cac8e96e15347a433afc389c5c182c546949c061a330654cde0f947149aa89868d92b36be9422bd689ba0512a5e4ec43bd78a2b71e464b40eb1e19dfe2056803413eb4acc202c9d758443d4806b8bebd2da1438b7a931fb75d257990f81c5b76ccc8068cdec7c99c28d89be9bc8621dbe2ae4d5cd055a918a156ed575135a46f5a6c496d70a3c3711f2b6bc98536a03ac97db84fd03d3543772fc94fea7dc2a5658016bb6b09d08b18d39be359411a4fbf1912eaded031309b4eb1cc4c02e0b67a7a1fa098046eeb2a46aad05a06434866fac31ebe08f6c59bdf22430717789514dd9721910b775d03108efc9cd4f50af4fb25cad33dcd1152c0a0cf1aaf1ebcbde7a69ce97a571d7b1489202f6484dcc201576e24eabe42e49626e74984868f358112f7a69f020c35c5200b498eb898479f9492cab10b48d4ff2cd5e99770ca067df39d4af2c9f872f2ddf5a8534f6082c0c48491ccd7e5ea88fe2b48230f7f4fd7db504313ce504477be3460723f3f45966b49b263da3447dbad41c062cf21236b72fb964d1b4bf251ed27810371cf0609cbc565d5bcb2b42d770494df119c7c2e36b3eaf7198eae1d13a9ff1b3c27e220ea720c75992adc885406a0daec277e670e6f2aeae8e9622bd5f97c280b5da2342e82cb34bbd9383ba48f28affd15fe9394466a103fdd2b61d56d86637061f7e1c257bc1e258854d017dd6556282966a8611ff6363d3151e198c4d1e4aae1ade30e25fa9abd13414001d37d00d5b9424b061160592cbfd59aed1c95b9f1dea0552f9b133bb12e67c541465636ec4b4a40423ff58665491d92ca1e4fbeb301050a8a5d60151588e72e4fed026874109fd35b4cad7e6a6969c05789aa845c0fd8b053313adf87755076daf5632292a75260f6f1fd59e1aca539774075cc7bb0d13236d925952714486440b025daadc8ea34b91688573b229149ec65ccf268ef481d829a01ca638343305b443923a64629244f066d0f68d52c3978aa097537c2ee61908a7376b93777c1272c524b819f86ff5f93115d7b77aa7fa2ee0f71e866026ce7e50fd9f62c039a68f2f3d2e55b544f93c64287df0ffe4db1bdb9fefb163fd6de91cced0e823030188876dbf8901a94ae50fb7c322e0ebda6c1449c4c28846faea0b71e86b732c68e1fdda299260f8bba571045d071de08cd2a61e25b3f8ba1e6e4dce751b5a0f9f5fb580946d8de21bf33ffc05f07644c26f37a8d0a534b649e905b3ce3759e822ea1f9817cb7332e53fae3563cd2e27c93ef29bce44e6b199703a78f3f5c5f57c8c4967b38ad73c80149c5ac93bf61274b51f44fb4a56a572f176715b5d7a517daab59e09f99a3b6b3d2bf0ab44d68af4f7a726d8e855e0d6775eedb4a27547025e99885704abb25ac0dc9faafba088a975546b3508db7b85acea757259ec45ccd9c1033b2a5ad78ba1ef43856547758a43edea66decee67477889afa03b8c25ac0dd87cf0702d5b8900ebca99628f38090afc54aeb5901bf6d37f240bcad74df915ec4172284ad4ec1462fe89ab10cdb8425e6c8d74d7307b6fe4e89cdfda19d288dc32a5ffe5e496ca117d359e9d4b172a7d5b0caac19e39e5900643730513c105ee51fdf38a6611c22ca4b1150421109f8a4c682e69ec1d97241d426f06cb9d83c8ef295335849462b1ea5a09ed9452c3f1311f54c5d875a830f903126d8871f23754202b2a587c0524078f67a012135ea52c8eea887d6b39bed356003ac6f5677303dc146a84ad3aa0e6e53ae704c2b52323c49e4009ab338179f72d3e527fdd50e129779950332709476020432679d6cc96ec1624cd00bb68903a93b1cd90493e22308f17648e8fc27ad74c975bfa5a60e409d33b0c2dfae3e4c564e6d92af47ec02443bd02babbd6731c98214d2f20b2f92b6fd69c3fe3afc025c1a40d521e0ab08a12d817393dd24e1c9cff8e729f27491352cb554bcdee1e43fb4fb5f316b702145b0ddcfdc1213fd25188b64f730ad1ee210d165b714eb210e6f9bd83cb5345020f11b3788e5ff15b7c040cec4c9a142efce2e040095409f5f04e8828b28a06abff90b0e5fdab67d5c7105b0bfc561733be0c2d885dbb830185c9198e77673bb95c8e6c7428c0fdfd272dd81eb0b76cef36a6c67a3b8ace17fd4e8b384f9175983391b53730e0d4b92a3429720efe785789363de50de67471684501f584cec3fb962986da5614eedcf8083ee72e41799d209f894219e53ce58413121782f95fd13a4e2d8b3fb021e34871b785a4e4a4d999c4bf8f0bbc2a8b875440447adeb85fe816134db556df88beebd4b610c719c0973779246c684f7d3f397a6a3ac40a9c6f04c7283955ed8ead08bb78833d783159cbd9ad247f43cb131f2452a6d0bb3ff0926915206590c1d37aeda00006d6797f0e159e8dcf8f2889d891d16f72b427209e88e3558998e790125edc65941b370db17141aa43127011c8c2939ef0c65ecf992e2b1354510121f73a6a09e1a7ee2a5fc91948b297467be2ef21a85d7b6ea96052a9833f26cac1a7df1784667a658a4668abd9d3b0642a3a87a117f5b840bcc69643d1080a258424f85d2d7876b90ac0433411049a98670b7ea5f8295175dd03cde06edd7735169f1a9206de9855aaed1cc9e6e254de9a6f1e948f979c7ade6a5bd903c9e361873464d8712eb535e5ce7122128adb0de4574ed79cbffb6f3428bef367f56a1ab49f334ec7abaa3ab443fdcebfb21cf4fa26a19a5cc7b861177389ce139c8169c860e833daa2f9e2ceea536446497ee91106bc343aadf3b0b62f483e130291169ca228df2e0e1810fb79c3869872d0f4d79c7edce5ec3fa36faead575034057ee84efe8ae3b79778351740a42217eb4fc2b29305573268105198f4b4921ea76fde3adfa7d303ae97919b2197d48a458dc8f837a320cfc9c13536d949f18bc9b186630db3efdcdd54bf953366168f202d8d67b72acf9025e53cf14ed168cf5430eb7962253e754c44919543a64c79ad35a421b8724929a2b25ece4263cb9a0317e6b2c09b0d5bbdba5089b3d5d7ebe468904bbe20ae88c4d4907b0552811cce59002d6321ff6f2be2ffab10e679337b7f2aa8ccd47cb6626eba7be8df1d486f6f390461b6218ffec90517cda342db1d2ca2ad88d9792e892e3727c1da9b547ab2bf7dc11accb3c709035390a5f1ad073c4c2c88aba1e40408c3b2561ab511142777915df0584c5e1d4f35e86f724a4c36cdb1032e90b99f5146c2427d8fbc3036fa9031317e0faee51304722a1981d4df6b5e20b878e33b6312a483117456d792c56747e8ad46ac8b774b07ccc6fbf001cbd7d300e2f59ada91b6a388c43b36cdc032c42770397e997cdcb972cfd139dcedec335f2110063db6c519ccf0dfefacb99af7ac738f57bb51b43ef0fdaf906e7288d09844db963ff69320d120cf13fadffa8da2edea121ff243d1917d0c6f17b72ed4bc0ffba11e60abeb42e990dcd393c9e1bbf6a587c9de3f44ef14b64562e8505565d4f0a3e0647faec0996924dac111295a1bfde137885257b0d868f9f2a748723645dfc65ff93d266ee256f6544336e2a88a736b90c37c2353b5d83470c3212baabbfcc023a19db83dc6582b211c1cd7132baeb9f1ab3d418685b117a6dc514f605fb23b9ca84ad4127639444c11444e7fa32c2553e4b72be7937fdcf54780477ecc7bbe896dd668b83b4431a1be15ec9c0b433db7277ac647279c7f0907d127f0b95216fc13efa563d080839571b9c4f6a7768700a6cab0d7e9339e532db1d38c6d0ee746a96d3deeeea51a7f7478766dd381618929eda0df8ebb82aef3ef30d43b6825de933ebdb2cd2d4a96ba911d2eda12afb7bca933412ea1f47665b3cd136bdca63ac3970b980443056651995a9a42fd7963a8876a33e172303082c353e7f55e5513d02d36e51178a1ac971321799398b0b8133364172c5b16c3298ae607160a89dca49327c78e7a27530aff1e2cb622d6099210245898b8392ec88ffd621efa1077c44c2827cc66f9d12a4b31ebed2b02554d5d66bd337f949b625c35b16f3e5196f357519f6ad5c887d8a3ffe8917c47ddee06d60fe5eceacbb66a5f3eaa6695d8c42a7f412382518370a5dfa4cf947a0e045e3679f21a0874209436aa620538d3640a4a66162fc41d0eb50b1d2cb0591e79e13e51c781f063b88cea12b63e00cc2c82b8b8d038e8e348909fa7f5caee9167854f6583588b70d2629dc07b4624520fd60277a396335f08df7161b9d1dbae0509359d68f0e807f4b3f8ba3a3d982263aa562caa27f74728a48f6589c487297d982b62f80b394d76e5dc0d09f2690ac26c952728c6fc906c2819f36055ad8e49f17da79aba5251883fa681e88e0fc88ef810ed6a75b498254080d7dbe5811cbbfec3f8c78f7c0121cb1225bd0fa788a1d14c51b0c978fefbefcae9db6e435366ca0ac25b3f75e13a674e7c7e1d2a45dc8efa15b35ff3e0b60c6d0087497823eebe3db00ded6ac53f9c2e317f08ba294862971f6a6feb8f2f74a19f89a9c3019cd900842328ea88628235221738db57f205db926f25badced7b785beb8c2c951368d12c86616d446765289771e4eb490f41a58706b7e0cca963c680be6c78fffe4a2074268089b222e2414675dbd4d7f630f10da4824524483aca37d5e9da42a7af3fe7d5b3e9c62b24a6f3793bc8666b000de25ca79cec11e8415bce3a6408636f25ec96c936032688f902e3098824d45dc22ad051a4af779ec369e30c2c6ab8f69e2792135295756d030fc2936e02e9aa729da08672de6bce32dcc0175a3af5802843e00718d6d43a3bbd4348501241bcee1c2999372a06e50a650b39002a6e2915bcb794ddacbbf20de44a7c6e667946e41556410bc37639f398196698ec981e795ab15c81a952de3e27789957f1962c45e19c0a586c4e5764cea489459d8f2a1906516a433a68669e193caa40fb62a366b846de61ec264a14418e66c2287d8939849d0a20d691696c85cdb9a92530d897e33edb4be78dd985c7417083b0f50866a6dd68d3dcc48dd31b97d8ef403d22b654d9d2d84a9120ad5c99b3f488426d54fa3e5b5c83358474a4bb77e69b8f72d6855c829d7c4924bf0a4038a07a77aac898789414f16c5bee99eb4bcf67d032fae4af3d2e2c11602850db9b55875a72f7e1f31d96d4d6886863a2ce200142325b307f671647c25ac5f6640b0e1fa6b6927225fab021545790b58d225fac326ad213349da55646b66d374a37cc94deb9ed856f38d1a7f8587a11d9e08cbc70ab514f44c94af1d7e39d3b3b2c9b7f4d9fc6f5d7e68dfcc0e14030acff6cdffa8d7edc0e3559542812862b99961cb1f99fdc6bdc987eb0cd60aa8ccc075c3e0d62e3da6bcee3e36926bff727874d5d0f5a961178497ff01001c7f6a677f2b508e87f75fdb3ad4d4d31b942c4d86e5f4a9b765208e84bd89f2093517cd386f87f1fc5666597e7ed5d08706c9b6cd48c1f1f7c6cb273b179bb6e3785228ea0928e00cf1f90c4933ca570cde7a4d3ed743015d0d0c34cb8bccce4e9a8237e7bcbf453c3ac88e18be4dc00f6bd4408756a8cf89ed395685f5e27a5362cb4003622b6c195c3ce1d74d051f330391cc59015d65fd4039ce354e41df6ae06b22638ed62a0160e31b86f03663eae6acf57c4797537d6aa956660fb7d02d4925212080a03218341aa39cd46496d77d9a886b735662acd2a9912f29e384ba77e7dc44589c3a0528270f13e6da94a8eff3bbd6b740a03618ae04515483eac930306c987e2ba269e4a5e952a6d382ea284928e4105803d184bb69b13e937a9c7afc8b5a6e5cda3c7a9808b8c52f18efa1686df4fab261fea76d4a2ccf34b97eebffd0b366b37b4c05ccf9848600b386674d161077b1efbbb05d1bfda53261c3bfccaf6601b720aa99c491d28bd206620c70ecca53ad92433539831aa9608afc36e263d1f47ac9083b59d7d76b2139c93bd28c8fed52a3bf56864381fe12da884d0d20f9ccf0ca09284dbff8783dafd178899e2f730e3c98f6c51e37c389edae6cbf433521f93df6622ab576a6c3aba24f98618493ba68ef63e6454b2d51496bc10c66f2c3fa979b4d149e6c5ddd196c340df3573270006d1131820fd63b702b8124d0447d5726e7558dd3ca197f03231c833aa337e0ce6ca38af7aa597eaa9915361559382aaa117a66efd7aaf6d9e5ea88123b87b5783602fae46c71db4dd824aab86f90925a73764817eaf526afa8c7ad510b5cbd5696efc6e52744d859547af221107963073dc6f4fcbfdf39905a1f84d5610ccd3fa01b9a2dec1f6b0013cddef3ff265d5007adde12fcef4e87bfc8390263ae854784d0cfd94d482539b77fb11c62c5daf96ffc3d3d3d17ceb11ad513b832b05ef30d3a64adefe6095142c6b5bafc066d1e23e746ec5fa77fd3a17039e8c3a0da781e05a29cb28963a2e70bbb03d86986e2ec573c3f303e5f6e33be8f40da7ae0f78ff0f1bc6cdb7b5cb108fc4ecda25ea035f5d7cd789e8556b968b3741a603f9986bce7cdfaf96b60e84a67e85ea5869607e35a98ae68493caa483d850cb9222f5d51f6472b8398768565ca5c6e49376cb6def7954b73f912abe3f3184eeda4ea086f533e7229427f965b7ce953efe51afd2e27c9db979b1bc94bb46f92168aad8d58d941e3377b296ee54007057cff8f19a4f0e908e74d053ac34d30989dd717de5b6ce93b6da3825e44fcf064bda1f628a08935f165421d445b28fa1ca671258badd1fe8363f7654dabc4943a5ea040ddae83c6fec7bb49390a25c7617e73ac53cb834582f3ffee2931471e7de1a6e6f7c5392e77982ab29769a2274bf3912f9ce4ddf97478dc2e8f1c692fcd383f6d42120ac6c9fe255b9692ecd40ebc457cc6c402320148ceb367a9621b30eae53b4b7b980cc87c5fea5b45d0e40078dcc39492544a2c7fc033f47c4ae21fe7e4beda88bd86a261119e0ce2f29554948328607c5821118903a69de518dad1a1099cff85d90600169f73b803bb4257cb3845fffcdac03e171c20b263103a11c4a40c5a9e71729b1ae51c7ca48860de082373e159af8fce868ca68799e9a2d411460891ef6750803e40987d97cfdab4b78e359dda0532e9d6ddd061b1d2d70a4fb75d0bb7dcd117346dc25f2999b38ea3204e5d747087d65971ca38b729e6759731c6a4a4f4ad382b5c05f7e46fe044a815f6d98447454211fe09a4627e10361dd156ba3a71630bedf6f94283981f4f4d1302a870fef86e2153d111f588765caaedcb924ca42577d1f177edef355b448efe9572294caf19fe8e6e613c1650c04e9028ffd83bbd0531ad15e16837782accbc893d27d86809a5575d4ce54178c66254ff40bf1f104f22cf6d034d701dba7f8ebb5a4e1456fd7a9998bb08597dc13d63b2790c167b33400de3e32b49cec77f8e44d14c06db50015c373321e4bb2d076c2cc9aefffee01bea8847d902ff2668b14cb4ec34f165827e6c5c2e8591857d00b3ff2dfdfe7a4f86333ff366c52db60d6b8476c557322fbb10a963cec0875e4c5d00ec57198c5bf5d2ea2a4f00b76d163b3d185d4e63c47ab9d126ada6414c152851f32021e63fc6be3f19e5c396da015e32366a63c65b627f289dfcaf6656e59280b021705cca2b242fa844e8d14b8e2460f1f235824128a92c4cecd47c1fe3c6fde81d7bc949cf2b838a0271d72b82dff772377c0c28224e4ae0ddcb4fee85ed827f87e71b85f513beb5dd787f46828911cbd72bdb0afac1313e0db9858171539900990ff242f4d50bcbff283927768c93e2a2e10c185088db296f4b4aa80a4ffa18f4e0e637623bdc6b7d40d21242d15f466ffd9ba907c3fb6a933528577319155066cecb5efe88ac7b8d7462b549e0d7f2d492982cbd910e4b7a8b18c26df6e5604310e342c06f0850131ee8774e9a40818f95948ecc0100b8dd23cac95a8cc9a5edb8e09181347ce265aadf021268f0dcc9cc5789a0ab1eac1aa38e223b8fb725098db4b832b6733878f6df5c06be46541859093e27811ccaeca392b82d8562be70a9c9a2b1a9fdf485544a020a2e2918c3ce5e1b82c3ef9580715bf9c5a6dd90181d8031018ea7e4aa8b796ea8ad1f71e91c85f8f789dbe7b41f340860ce39d65aa74b43ec958195d409513340d4e6cd730cd3d7db3ca9f5d8badb7929882efd08980116a05d629ffdd42422926e2787be51bbd09e649179d1473bc6fa335658257d0f5bf6f5c96996c41af70ea7a35e89f6b110ca071269f8ff2d2623accb34bedcf90f29b82a2df80b8c3975ea34cad02fa6ed0ae93da7fcdc2f614bcddad80940ac98a8dce5c40e43f863ad90c48383c9244c647220dd8bd52f83dc334c782565196d68cc4d636bf23db3ff5700e441a4f4407e71f815a0388cd151b41951796f75438c7f6e4eaa2d14667494dfda0fc5d751a5c029c59eb2b0e824e0135106faaf19e8d69707b6d98e4fec531084e850ae7548f2e4d2c8f1fd05d548db2608c921550537d93167d4ca91f6e0d6e89f84d23c54f5387dfead71b0789276bc51107c3b3ee4f9f00866ac11a2fa1d90a790948cd5c247f18e0290b915ee4b0a3c9be97e36c9939ff7b308080189b22bc68c5e05d98de2afa36e9df7befeeb6ce7b8df98107a1ab24dd249d510658ff50a31b874a066df75dc92d9cf8442a4c7e7237f391ab629d06a81a780c53e4f55888a3bed3ae29378f67661a3c7d5d283e050944f53b6ff75c14689aa40c5ec6ee863de1c5360c8f81ca99f185a6fa8ed377aeb67af429e4686b1fdbb412a827f220ec4af2bedfac8be4f70b812382a85eed00953a204fa96a97f316a5b08d0185d383aead9b067a710516366b6e24538eca08fac617aa1ac1ae3509ebbac86f4cd982fa3adadcd05673448c6a3a03e7228e52fb0a3cedffcb5748118317824978a7094d8fb142d26961a6e0684fe510488423f5e891d6be3e6efd81754de0656e6b72886bf7fc472387bc64e79cd9f6541f6094012db175e04b55dd55f215249e6881f5e41d775eda162cc37e2fb76d1961b0dfb79b7c3f94d1038738342d46e1c2f2fe7a45f00cdbf29078309f2699bbe9a4ca6d93dc00813791b3c2e15fd32297b918174ef312ca0efc86180208a6e095c4835040e8c62988462b92e0311d7b244f9fb4070997c8c12db5afc6a2794a543a56b90a100b0268887a0c06a913f7e0ce00e79e18829652ff7cade3aa129226ca07a4dc1045246a80c6ff3de7e80c2d00ff2bf29e7b5253137bba8bf7c960110f2ccb1e4df2dee02dc51a8d2e67743f61f6157d505093f55e516d66150580110209be3ca3625f2c82e4e716909e7993ffa85844bd86d404c888a6b76d3191409613e3a84db4a7e9d3c60feb4378e4be5a201836c3302896b44106c6b81fc7944d264bc8d42d8c8aa51b292581a2944604f74c8db86ed9ae40c88de302a9634f06dcde724aef29e8ab9685e597c1f6d8aa30cc82c488055d354bf23122c9b7cdeb27343b54d233149b868c6bf5c7c211c5ed818956a0a9cd9eced25d42a17581b3dbe2d4a3c19698695a14ef989219ee52cffc29341b4fc26ed2f4dc8b83aa019465718f2bb15d933268a5fdaad7fbbc2c5247ce6f73c569e695eb745ca8064e30dcd407b1a11c2951538bf2863ec48a4dade3c19db9ccff2d09cb599b1f923064864ed46574b002f0b056df42d17035987d6cd1fc8314a2bf05b630d82fe505399d205c5c5026980db6574895c920f6dbf1a6fcb63dcb284756d851768bf600b166d055aa54b5ce4e38ac8b374fd4458b82b6271c6c6da595640c9f3232ab127ce019d63ccf2b7e4bf8982062d707777d3aedece14527d650ad7a3b45eec94e91732c5f2e56cc25b09d5875caeed8189c4c3c552b7aae169419f2fda5ba39cdca974053317cb425097b3241e9996e361392e5220a9a17f0184a9ef4cf4de8cdb6ef1c9325b3d2a60b0875c9bbb7a2e20595af3c8b829bf792736890d9215fa5ae27085028cc260951cc43f2d1e3f766771b9c01755b57943e14fd3de05b7b1247a2ce60dac72ac243e275373e6096e2abee3d168dd871bc71aec2c40055ebc8c222651004e50130c62f8c3fcacb6b39eac4785595e894f4b58eef3479414015414abb3ae7c37fd9bbc1cd0d442b561735514959f1a308c29985da8752bf1ac49d9a33923efc94a3566293b4cad2fb28c01855f1d8a171d50803dcc51775300d0af60e2b71e3b97654d3578841b7cdf99b1866992964b2c1388173e35a27df08e733f611ef44e287155e4b4edf5e4739aceef6556767ed0ce8723695f7633bf2c5dc1a9f03c324f0ed63199897087bb038350953f4be88b1120a42bdfdd3c41a8a2b4eece5160530f3704c8bcb2c1d3d638216d51b208bcd59f24432b4fcefc981e762126f18f072cead47aec7030c20ea28ea2dfff9783227718d94968dffffdb78677008a87a56fe03e4ae6eda1decf591b7837d8804c2e8706ec130f2ef7794ad80f4979f5c35697eb97f5092e4a9da331451f6e4e82ea0171545a2cd233acf90a5a4c8e0b75de74ac88525573b16c8a5ef68252e76a84da17526cb22ca21cdf789bb3f799528effd7f3b1081b96f271d85179cd02431c846e4a3ed775f2689840d03de1522f260854ee23d2bc4063e1ad4c1b1a1e824af99f1a877fb1855f7ed625434c0e4fe6030bfc5ec9d3a95ee846492786055cb3d28fb423687cc4e82f77cd7c02bf808da0031e365161f784cbf78b49efc8a5bc97161a605c2a47828b460f8ac84d5517d0086149702b931194cab88bb44147dd8b80539a380e0563dd3c01c0c21400cdba6341edcd645620f5937b3215e5a6e53d076660290f300e33b3f187cb182eb982887551085b2494789471c5af9477f507bcffca3c8e368af22c624512491ca09164e901a640916f404beaec1c3f0bff4e85137498fa7dad567ba069af6c168bb1ad062475408c2154b7118af1cb00459b37ce50fbef1a19b07d7353dc872e8923245500e74e5cd90d8fbe50bdd9d5405ad20da74dd48ef0c3799d58cd25b0e1f9924f6a63b8ecb65795716570072397364d8270dfc32da6a5d602e48ca150b30502e7fdb25fc1ba4ffea362b526ecff2a84324322f2fff48aafe2263d6a679393905630fb9207b3200552d77793ea653b6b914736cd2ae1ee4d9f35133f43d1de15cbb83117ba5342dc05212c82687fc358c66211070f9b6b34070edd76bfe1a37990fcba3d3a6760f6fd920f93eee34fae094b62ae263b5de557e2c00b05e1a966172f6159a44a4d57fc520a9d4cd0525c75a9af7a4a24992f1323b6174276e20ef9fc377ceb8a7a42d1c3b295c52c3ae2d4ad321912985c548bd54115897398bd1c15b823439db9f30cdf188e701f7b5c6129e9e66f2e7480a1fa2493a54c67d3fc394941e3f027c63ab0fe097a6b539c80bb20cc2ac0574a1ff3cdf1f8c9636bf3b6aafdab3a6560f0468b2102494da70b43801cd66b0235a2e9df04f89060a78af8f2d79587d1338538a9eb19bd591b2ee14b0d01e058ca58c3025a5d9dac465c0b4b3256919ab00bc2613671d562738dac50e5a471e81e90c818528c82ccba38f50878ac7e36f50bcc10eede91d410bd76d05ea955a1284471c5cd149771d7a46f1029657e09c7b74f14878c4b3f30fd54141fad5395dc8e5a1f98d9212e2c1a1278d56f621fe2a9991deec9334276c5123f78ee0b46afc414d549f1c28bf9fb4e522a2f0abc7224e2e552bba8d244d478b167597031f48c8bc28357a5b1c1aa32bf2d92fcc5946e13790a5b7514d6264451cd45553a119031bfda68cbc7092a8842b9c0981a75aef9c9008f4800dccb6720d9a534bbc0137a86507ad0125bc2d523cbdfcf4638791101a8bb289cd09a9d92b0f23d1b190f87ac4a4f770835c651c8c016ce151e0ec75a0177ec974429785853f4d199a7d0745ccd8325b77d19a4021fcc4a15345bea4b6bb63cfecbc1252bbdbe12f2006f863bba0a4ffc4b422f66cbad9e2aeebe56fd35fc575a5d7c0f19d1b6bd0b6ad4b34cd5823dc4e1eeb99945aa9173a53648d35e6a2506ae0779fd6f611e6d7f377bce63ef0d6a1d4a421d63284a4c2894c34478e7b9569efde71a7d4ee856587f1f1a04cd143347ae4144dfdebd14d8938ce42a41eb91c04aa8bf0e4564abf987b0ee3dbf59f3aea9d113c36c233f22c7019a8f030224e68e1c3fe2150324019baab6c404783cdf20830b86a7d71ba51d668151ecf70f7496b0732db0cc59215d50256d39fafef8aafb1cead6ba92c724877414e577ad85473ca340faa00778eb021ba575210a4390913ed554c34f58219f9f424643eae55e03885dfd4e3730360b095ce2a4b5d859b6b30c2362ba55f3ecc2a52165db607a9ff73fe6b8164f0fff25de0168338c47c3fc44931f0d0cd92afa698c729c0dbcf815fe4d23881cce618346d81ea18b787cece46099248391b9b056a1894fd5d87daff46d74e13aa21340364c51ed1fbf9d6eee6dab4617c1f308e574b9f8182b27be443787ce59fefc3a5266b28e668fecaabc4468212d9a7b94ece8767d64f3171f20d267191ba1ae66ac436b2c60a1a0ff8e8c98d21cb54440b8b015c29c2fa4d81861edb109f8d9dc09f3f0291b47891ca6ed9c496558b246e75910ac434ce3c0557f4788e39a16a1fbc629f6beb9a24b49b36d4441d887ac3d2a86160e70b7edbec25a64b1674d6960dd0fbc5e66686c671b805b72ed8cbe4f146775417dd2445fdd819debb14efbf6e884f39b428b8bfd6545863e9613361a44dfca3729fe731fb87654eaa1335b16bd71c09e5f98e34ea0cc287c59b05be937c196310f628b22c473506020d387652259a55f405ca8642eae3a98fadbae451a7c617e3faa73ce68e8a2472beeb3b8003ed2489301a75d20f52e18e681f47fc2bd50624000fc8b45ee1f75846c01049f606c3314f259bfbe362ac8afba4e5df2d0078b01a3afe169d1df160c7b3eff3a8690cb0818e43408a1e83f5e58198ba7ba0f8bb6c207fda3c2c3309562b69870d61769971f569ece4b9409015775e431a03942fa4ac0bf43735481bd08d93857cfbbc6d4035646d3d32c5dd582c5971c71c400b7394667af4fbbfa22bbca16b794afac0a18b4e964d3b65b4b47cdb5b57a79f5909a358874801e70355562e587111e614c12f1abe80d6a938e29de016b5dfa62a7db2cb2b4485a6ac8663eac1eb54c0ee316bd481703128b366dc173b1cbf6e30344ead2af9501f43fa44b4430aed44f8cfd7d82365932e6f4c18c4806cb53acd8f79363dbf353fec046e0fa0660e556dff6590def8bf99ed03cf60784c5975e0f2ea98bebd1e5f525d1ef39d34993137090df03ab61c8100eccaa62b89d8edd5b537f49f964d6824e92818deb9df54583cce6aab8475f0dab50c3c8426f1fe5780ddeea71968415426022a5751e63954ca89251e241f262b4ee2fd38761986af0d573ebc86b0970262593d321fa668ab251a65d01d3a6fcd2b20d9b2a0c068e09fb6472168e6f765a3c533057fda5e10f24c841a0ab8fa12d86beaf0348cd72005c840eb55d7486dabfbb35682e5eb3a622c87ab7121bce95b017c430e0f4ec7355e77c2e063c8c32c8b59e9b98351841bd873b65a4ebf65e36de6add942c07ab2aecb29bc53803732138d3e235dd396246a6f5a6f214084c50a97e06a9a8c1e504927a0007168e5f2a44b2fbe63c69b440420829f475f41c9d2bfe5403b182c6bf1ce5012b86745c7e8b91b2b14b1282c638eb9c093c72c5a3379e5e294834570a7e97d6723a00fecd7e83d427e8998087ca29a2e22d675fbc8f88b3fdf987ce7deccdba6342cf8b3156a01e39a695538fbc2eb6ec1722f0ece27a186633245e301a4caebc09a4f1ca142cae6ad9825fb824a564aa68a027e324e79b262a5e2f9879f55dac78f138f389ec5e0ae6d83cac6b67f08852cbc7bca1c5b2ff00c1489fdba7e41f5388d1b73365726366cf245a23ca07a1e5f37dccedd2a92926f74081b4c4167de66e88a63b0d660ed4be44978d8214c2d3bc4f6310189ff6fe90afc6aded42be862091c92ccc6351bd2647442e28f6857695dc6fdab69cf14896f78806b1f52ddadea9247889f636c7c00698b395e2ffe2bd4c9c10e5901226a29daed1e8b28a8d740104fe6614656bd2639781a4a3349ba9596e41fb67dc574a7bbdbe56fd9e1be31208ed35f4eaf87437e210a638d071a0052d9a2089a00b72f84f1cc42f26b42f2826292a6d4638014e2659893d27292f4871646fbf60d179dfe54346563f45d1a11672e6221eb46c84c5dc3ddbcf1d1181dd65d224842d82fdf698dd90ed048478287e11ba216c257a94cd3d2fa8decdb7aad7814127de7a153c81745e216d7f895ed4146c3fec7f07283f9a408fbf3e375d927d8e19305870f6692746e413811aa209eb20079770ecfe5034f79280674e1702db555c532b99647f2b1bb9e93f4469300c5da4a4321dc1eb660e99342ee452bc2b886609ec2914a6c17f1ad50c30d031a8c293b33b480ce91e611226bba761daa17d7371fec50920b759980a52ae68bbbc698320271a6e0867a1db911ab0f56254a7fb6efbfc0846a77d8d27ec823a24e724594db77907e87f70dba27edb04ee3b46f0483fe3408533d2accf1672cff17647390c2ebb6cb8448cf4c8d7cae3f68358c2b8234b7533b71ade4f6ec3d497c15b316508ba733cdd42c91fdf8381a1c1b2a48ca369c09debed56ecbcd1e60ae57d3fd3cee5974b376dcb8b11110c7bd9b7c5027cd8f6047e38368293af2f35234218023a102747b6cb222f3726b8a5acd377524af18d969bdee21ecd98e97389162771ae24c59cf2a48432e297d8712c3034ecab67323cbcb5d1c4bd9b9deff9cc789ed687387a0a65cb8f21b409d0b640d2971a5f5d2e83bfc10cf81fdec1d1e7a4998e9399e44798fa18027a951d3e4c8b0de5ead51b4a4d0faaecac5ecd1a7f4455c6ddf42a126aea2866da93a302a3d845aa3b9c302c821ddc529016b15e1888e09e4923854795accf8d0d9a4c57379db5b1d9235357f035e3d8ebb4afa5c3acca111df4250d6f2ee4030d48efbd3f4640dd8d11cf88f753df9e3668a1cbb2ffb0d9ae14b7f12cd69a8a470ba52f2fc1b3c15696050807351f2881b6084a9cc526b9c048c47699e2ee5587a771ad60b2a2209855581e527d8a750fa94323bebac88e7731d055c167cfdee989c6664e097a8c056cd2300013a51c87cf391f3f8402ffcfe3563b7a8256ab0fb54177e35991fb2fd17100f4e86919cd4c934d7ed27f791f8200b4e195abe33bfffd493771d2bf3cd88a69d3f9fca5cbf2d01d8f6286ecbf40750b19276224882f217254adcc44fda7d6e5827d8ffe34a0deb7e17a6dba672e548b707c4676a13a6484f79225478f139cc88797fc3510f4eed9bcb05cbb157cc8f4212fa738a336dd40f388c143427866f3cb255c731b0af14c2cc47aafcfdbd6f6abc3bd7cf4832c80c988f6e23d4d274fe1a275b407ed72572a872722f3c6be289431173f68dfc4d246c3ae6c894bbf65ff3064dc416025dc3525f3637247c84a726b180a7aca5db0a99f70f8bab3b0449549e33fd23ee62060ace995e291062071221dd1b43f36f98fd4fc9f1d926ba877a0a6c038b1b38950472e352be84ab703cae862ab5b39b3863675f6d91c533b9f82cb92a9f0dc2e6fd7dda2bd5843df943455d7f5b04b0d4ea84ef0ae888f411a0540bf5c7cffab675806d0c79ba67022aeed38cf2ef26ff7885d7b0cc5e3cf2166477ad1abba5d9510ad1f5fd1338f9e5bb9703fb95ec4cabd93c976e5c491369ba904934d1e4fbd97208809ae33c2821b71e71dce2740091e822ecc6b60e0b68bb556e460a0042cf3130a71e16f946f20eca30e804fe974f00565731066fbb4af1742ddeee63d621c40e045fe9c070f0628e15349de9431a625020f23be922e909be97bc98e9c94680c6c79b9297f827dbe86a238b8b1fb5fae4894415dc18351c4091935b3b2426298cf617f71f775a85cb57d3eacf4720c378cb2c5b7d62fa0c4e2da7bee9ff38dcf8e1edd81674bdc59d8ce7b59ce2a2a73cfbb88a10c7a9b0edd86f4055a0e4f62e96f3fa0d6c98e0317c3e710d647a6be40d4fd44ffbdb77b200aff6b9f036fd9833188cb301fa4a6752186c37287b445fcfaf076c3751cca9642b3265f7ff91e26369851bcec49a71843637169f699e10bf9b3499e03e088f630db9d13a17475cda92d611a6fad19200c7cf6ce768961079b8c76b5c357403330f472965b56cd0f253f061a6bf0cc954051376fb8c7de070ad5dcf18347189658e873c17ecdfa2b2c8ca34fbb6c816b0f8f2996ff9d9c8084be38eddcc427095eb788f56780d87f65d250c7c1adcf61cfaab539a3fe0e5f8f293b06007c062265068e7e16ec341b37b31cb7a2d74e488a2d26e0f3fbf7d863ccef0d38e27790f6dc3bc8ad2c3d16f871acd1d0c9dd688bc5de02a750e1bf23d5f748f4f4b3351edfaf176fac8789e5378d4c36fda9e6b0f33ba931cf1bc5d27d5519a05a6871aa8621c16c962f9a795498f40c3c4f59ae27a2041390bc10f1fa6835b550792648da9bfdc982c200124b9d4f8cb3de6798ee9b0baee1a1daf0fa7a79bbd04b115593c293329576e8abfca1119ae3af77ba9909b67e9e11be89c86b59d146baa83a4c036afcbdbb00be8597b4872783a51afe08734501e4025ca3e53aa8f09a20a28a736b032c009c5efb8d182ec07a0c77d691036ffeccbb9ec21969f595134b1e433fd6f5f42890a5301f396f0f58392bc588340ef88816a3b9f2bd907a10aff13af32ffb89b3cafa1b8790e5f33d6e259087126d5b14ec79fef793a19f2b59957b23de2359a197eb6b7c110f60b98123a229a40db32ddfbb89f4be37e0d28c42820fcb981dd453b8b240f01d2d084d7416f07411aaf46c8722f1913203e04c3d683463a6b0567772c9d025e0ca2c6a659d060b1c586d5b89735db754553d35e4be64665d3f96c5d368be5f1366b84577515cec88213727554d546d3780284ac2143932fa9877abc212c44703d8ca61d5a5b1649b8c0dae24b94b406b29df40a00b33b21034c90de299b8ffca478768bf8b285382f50d77e300f7f84d74076411ff4557a622b075627a51ffe2d8e71bd98f37501f0ae0292f7f0978a3c6bceb2ff2272c8b863958a6ce4d6fd07c0e93af68732256e2a1f58ac64008a4d68aa4c8ec9ae4e66c53b86fdc6bcc578557897a1b603a824f4056842cefd1244883812673d394d808310e91c97a18671548f321deba4c3c951f5ecc53a34252116ed44543248e705516e9bf39ab0aae1e99d45fb51da56ce3a4097a3653fdf1d03191637939ef15e467a8d0f328a4f82d524a829a22912fa0d98b93b03691eb021d04bad5450b0248efd0fcbb023d381ec0cd747e6e517141b8e0705e3f05a55c9867bdba3957001d194aa61550ad095dafc87905d81c2644112c5862bea5c6e18908ae35b43fe404b9b51ef6664673717735921a681ad55d2c50e198dc7a28e02f6da96fb1af855a2344ed2e88be678b8a84c58d2392aaa9250a3786285d037274151fb72bc46fc7ba72e250847678e64c8763e8f65211825b3de30f198cc8dfb74a3b2850ebdd20d909788f81e066e494f9831cf616066a6be0db15dfd35b3cf3b62c530c7df02fed2381eb10b9e260e6edcd7e225ea27487de8719a23cc14bd51ede34d9f000073118dcd8fbe630ea0b4567cd758924d2a67f772b2c7b988bd4762c967a32026fa9bfa8b2111d98e09ff6ef1768b04f4a97400022af7754b36b8488c0be7d6710be9273c28b8237b536f4b1ac00e8e45cf06be52371c267a6d02e6ea6b0fa631e92aa0eb0224cdbc724d4c981cba0fd0d6971247149b01f06ef7e69a0a7ddcab43784933ab7cb4c3e9a6c4c9453189ca60931566db95ab2e0740298ca067c1d9347b37672323162362112333962d2265ec3331634928d68710540585466c31f8217e2a0591dd5c443bf555bbf03c3f91f0fb44d7455cc0510ca3a9dfb0daa9df2d43cba7d3f8974d0f28b6c583f989bfad8c7e3cec50103e4837be9189d2eec40a2d6f3df39c61fa0bed3e3d2e6b88b416fb9d8dffcc06951161227bad6477f66afb083bc551c686e7d54668f757e36b8bac763d9b73f4fa68e6b5b7bd07e2386cceca96d9f92a338b371e30bc7bd03d2eedb11fe2a1101bcca0f14fdf0102ad3ebe3907bfd64984e6660fdb6f8447ea12ba88663feae5ca7818d8b6e32d0e41cc46dd3c88bb69bb2ea7975387515e1e671c806fab7ef01668c497f2e03e9766a03570d5959f52cd79d172cc6265b221c1c55ab81050577cc1752da50e85b6edba191015a9ce6689fef229311049407006b54b0f761b94d7cc702dab9528b710691f163bff07c98ed47b0bd93385f84dd54c1853e3686d976ccdcc19ca762e5ab6e706f89d9d3b6f8be40f988cc1d33c7f52f5f594ae7ff2e5c144af2bf3bf981521954338b450155d59318abba9c9502839f2cb95eedd6fc0541da74e46ccc8daf7875fdfc7f23e62895f4a2fcc5476b9e8c844cf8cb049bfa8293bbc09526a2461c20e5a4912601e5ba0460fe119032452376652d2818e7c21718993bd2e4d43af8bb36155e8f63700d4851853245bb72835f5d2f88692c14802fb807488122d25fa76ef8bb70a1ac598e62e83ddd1ec0133be6600fc16355fc2619dd5a512c436b7816ff31adc21ea75d5405dd3f4e7385931edebcf13594c5423de73e59975aa9107c462c0ecd00f1f9862725218728ae19b9196687b1bfbba5358e9134e24e2186b5462540b0b63dc4ede19e9819aeec9f5904c31d88bdfc3283f742104ad3d5c6bfc20af26f48cf6c7a48955d1ec49c8e8a6e8d69688954e1239ab4ad9262fc4b73b74b913cf7591c4f48e7f263a83dc4c6b0be89ee7de5ffae39d5329035d276fa1b6d608188c20f869846342ab784e29087cd2f0c4f1c061382fdb83e45220ccecac031a397825fd06717da3b2b20e364b0f9fc1431a0f16f48406ad4076eef0f5046dc5027e57c1e42cf51ec93ac4eee0586ce75d905222f8fcca754c65debdfd0c9bffeb908d94d838277adcc9363f1fee3eb664f4b8cb46e39ecee5079953dc1cc6ba8b784dbb3c040224365f53459c55075291c3011f6fc315c7a97ca422f19e3137cfe1f98ebab8adca1ab04277326fbefeebeae598d75a16c04458f9ec81f72392e2cb96401effe4540f6600f56cbd430859b64f84d974b7c21f7e100f254248368174ced5f8c64dda5c968d5abbbc2f00d5c369d138364f23abdaab859d030ccb7155ca28d92d5407212a6e415aabf28f8a11834810e7ca3fb7843a73298fe9a9d34df81845ecffa21efa9c3a20ee0eed86334b0a6b9e223b6f4dcb2400d27655f9228447c9b85acfbba878c39a9d05b91aa1559da5ab7f11dfef0ead4ce26a910c07f661c073a341518f2f2d85426cb6474f9c9ba32e985bbca51cef9fdf91e16900562c92fe91965e6768186adf2f3c4e5b6bebf6edf60b1bb3b2dee4af565fd453bc4d634c3603cff9b43bc262f1d0fc64a9415956325d692fca8898dc00fa685d72549635eb1c6f5443cd0be720b38175f9f8772fb0bb2244605e5fd6d561bc49ddc374151ab3b72664b425f0e5bdc1709593ece1d06ef0781d0bbe6d12210911e24f4b527621de8f1c1a363e12858c157f29b36dc0c3a1fbfe60a40351c2b1ef04fd0531a14ef68181fe095f05b19633e648c3a05585dfde51bbbfd9d9e9b3786447d0d00afd82ce643fe9c83a77d6db3a3bb16a1f7ddb857c2d068c1dbe43210ed9e1d5406f0383a062ad3cd434151a13d2725770cc419d90efe105f6dd2fd925486841d47041ba1ac9faf6d2de30dc78fef3f2fca98f05e04dc87ea0015a63e59e69ca606cac17c566f4ca686a060a6ed5e2ec7d9321ff98f71a4c3577e6bfd887c97ad59f754ca00da0bd1ac9558c8cc834e1efa95d0e80749f424806388b39ea12c0223da69782e8820df28b7f450fbd9e30ab8c97ac2cc0898f75144e7b7ba58942bd56abc11eeb10e3a03d9d8b44a00f2cebe52c520714281b75006b7a2069b61bf742baa8fadfafd67568aef355bf93f6f8bdd0b2727baf0af2248b9550c8615bf5c738e1c7c2f6a8e8d11eecac82dad5b9985298d4e76e9e2797a1245bb70dece0dfe9aa76add81a5c7d8958f76b24c41c725d23084963c5d892f217cfd703b7d347e788c325f5d18095111877f0cf430efc06e5771b8eb92b323954bbe96e6a0da6fe3c7a502cf51130418f14a6de51bd393be200122fd50745fe32edf350c57aa8637f28aad2406534bb14dcf8b2c993e3ad6ef4aace635f553eb8ec7332773a90fe7aeafda724dbdb062d624e9c723bbae16477f7b913528668fe44971af545f1a84f43fa0e67f71d2288f23d86f6c8815551ab022ed5f0e886aafa05ee06586f0db09120ad773e1c2896c3e06c4b0765048a3ca8493dc7029a6051ca0968e4cddb3cd92e97215918110b9644f2ed8354e7869ec9a83e098330b01dd162eea173f20c8698bcde1f902c95eee89f40fa07d3977e20998940d2b08e715ee1dceab5c0083e4fc05aaf612ae8c3d474b1b5560ae67e128ddde26f9f888cc17f06d55c3bc20c31adf5a13a79cc143364bbf8f4f2e4549134e838b02f180749a26989fe2df268fd584b0a9d47bb7d02435c1da35065f41664f339930882f7a030dd1004f9caf80474a4440941d720a75eaba685124d69e9471caa445a267c8ce8b8ef81919c9b4feb62b715314f8e8cfbd5d5f64bf0cc98d1024f8b44ec0b73a22b0479e2f9fd009c938d8747c6d17f76351fb0813f7f9e8b44865d22aa06130874f577f209bf8d4a439b136ccd75a8bf32e1b6a2417378806e36ccc637f0ee69b16459582d8e08cbbf8c4d89ef6c7dca0bbe08e1be2bb4b8933b2f57e2cb1deac73c7a37999397b755f13881624c7df62fcf7496093e80d456dec18c2ed8b86ba8c39b65ab1ab5b924e772d69ee344d5149201cb6bd6223c98a4a0c41ca6943a553f1deb2a92b787fe0a814ff95f9225d6a4eb4aebf427d52774e432b877ddccfb8c4d17c20822e4fad6432054c306ae7cd969ad7507d27f918fcb6915b71447dab6ee59d77404b8d93ddcef3d75fa96dce17ea8a875c205bb7231e78629995a87766037d866db80bac075c899e836f4ff3fd9a38bf166127daf83568c132750312a62ea5f48971bb36dae018c597e236ab3360975267faeeba1957471a9095845ccaea4cc63823db97e4772babd8a79245c500734b94d833ff1c8f22e3f235341d67e6fc1354bf25fe7d7b780b21e405e8a32922aebab162e6beac0f4bcdafb473cbc04d4ded06feb75a9864bdf18513b67254c0197cd4295b1e4664165435d3caa2d7227a1adc59a8d44ed148938ffd3dd593a136a9232649b66b33821aad9eaddd2640b83c93d0b64fc365de847e58863f586db9f95821e607e03f0fc0bcfe50575ff65a7c5676463564a14bd0ea74c580083bbd9f91459fc73fcd8c7107394189c2368436e864b35fd7b26bb2255cdbb01de752d9a265e01ef404233c44e85178dae091e658f051527b9aa56c78dd170a568a54c3da363fb28b0bbf2d92c448726cf5d18af78b9b261a6755012ea4b099eba51ca03b9f9d0f4bd20df041273e59db6906e412fb54f37a3fa8a360c5003bba71c803a73f49a64ccbe05ec1fc764f6cdbfc77e51740e903d0eee9cb8aea930f6f99e8d7c9e8ae1c6136d5ce25d5c16e6533c57bec3bf7c23aa94d64e0d3eede3fbf253d2b44ce94a39bffde06fe481cd82cfb9292669469b7465b93843fe0f714a90a6994c6135e6435ac75b8be3107eae58442a4116fe3abe9d06d2f46db9a4628f0774016c91cf71a10e3d41f77cb316c04442074d7d3bf683fedca1097c03508332c3f1bf2bf1439a0fe78e37ebc7ff4d80595f1cba7f9d169667a9c0d133e73999ec7e5db813128c9a385d403b5e33cc0331d0a7b619935bb890e57e2813caee75ecabc0ec1b8b4ec31dd48f466b62950e9d60cf570ffef7907b29044e884e3d2ccf962cdc999b338334807f3c7ec57b1258748a42764b3f6314e75078bd19c26bc49928fc5f975b91678ee3a70085e3e23cca33523f565b0da69dae474eb9ba7263dde4db9421bc40714edb36967d0e354f15037036afd0bca353e7af5724b164df93cc8b3602d1f37ff8ab5fb42f04d13407cd61649287d941782c67087ad56f9dca99eb65b180181938124953017e13236057f4062d08678ebfff7f0418f125ff3d32df19e0c405845ca35791ec8ac5ea6caf248efacad7a5fdf13a303518d454695f7b49981c74d3669df8000d18c4ca1bd4ca9d76932b94301e4194aa6ad1a0a88337867836c19709c0972d4babd6f4345f6c2707c7485b4a86ba2999e8bb3baadba886ea12300ba1aeda1155b99b41926eed0df725273ef33abf0b3c3b367e16e8bcea0f4e430c2a838f5260b0e20a02d923f8f1a58c9d4f56aaf4b3b38bde943aece8fbf10ac5b0eb31d796fa50a61e72025cc180a683971ffc42e27f6d25cad741f92be0e4bdbb19fd5a3747a72bdd203f450985581b4c4df42100bf0f006719c23bc6485f261bc2d711caab2eeb7815cb0ab36873632ed4487f016a861d49576f74e76511a71f5b41173fdf9e1b3fcf96c89f85216334059146546548667b97a8fa6eadf4b879ad22412fb3c0f1f513972ff9f59a049b7c635f8cd8d0d72d2fefc91de86022a5a31e334dabfa2d4be6e5bf87cfe15735ed1abd86688cba1cfbfbcf92cc1971f31d7ac78d2634059fe1abee28e01765cebde45912f73ee5bce91b81e06e92fed24c9aaa4677cd544997d32aa40fe4d4f842a14afbb2da44706fdf6bfdd13102974a683f93eaafebedc3c8744c2a14322d39c3b56f5c4966d34e0c9d4fd6c15d33a7396a4c5dbe6c5168f3afb0e8246f11e9035a37406af28b30e04ef00ac1728f5f0c4bac83d5ea8fe1c846f83726a044aea082fa7a50c9f67ff8e0390e3d56474306a5e541cb57249e9b341fc03740382f1ac358f38d9e1709bc43d9fdf5d19ba154afd7c7d2f42d7a8fccb3d2fb35a7f2df7e0744df2e603df3ce49c82a5b7c053e9cdd481582606488e4f0d4408f8035bbf7aa0400316601cd28ecb07917523547e0dcb236a9de7733a1e4dd6e92c325140bae1eed5d1004dffccffbb8af7d30bff50aea49ebf3a0bdb113adde193bc43d5b12a703541ef9c9fa4371c4696708193877d5c505cce119cbec0a337050043afdad746c28c1cb1a347ca964d3039e7a39c8968d78aea74e35a3073b9e715cfa9f8f15accc6557a59f361760f57eef9e7c59dcdbe8efce18ffffe63c5b858f66f698e6edf8f666715e9f9cd8cc28558bfec1ce709864154a6c41429adb24b5d14a8154690ad765b001a5aee9099c164db9170a8a8cc435297eb080e1ab3e3f127d6f123e413f88e5e30b681016c8c74926c9f6b2367c3692d31c7d8031afbfa178cd01739252c7e451b2e1d42f895eecacfb83452e73bbbdeb4a91c13111f6dcfc9e865ef62a7b9ace18276c4fc1a08fcdc7ee6c13f0f1f86055646264f242e0320ec3413ec843066196105f73a5eb87897e0b94dc0545443e8b36efd69c8044c225ef9fa61b97b20f4d2e8a12391850922f382d13e7635ca8fceca38711068313d76203c1ce34cd4cd9b0cff703b31599a60a44a5b0b4b10c8f5dcfa74c349c9c1388ffde022838da5916d31dca48dd8c21779bfb14c3c4a2cb04b65ed54c139e0f9abf6864960826d54b24ac497b641a76f51b70b1b6755f060dc5e1ec67378337d33179f2c5ee02f32f58e0169997aa53380e0fad57c464e7ac32f0bd8b0d15193d0dca274dab5bb53efe051b2dfff38a62fcf18d1e1efadda516093a544634099656c1c9313871e70937d5ff500ec5b476c111b54ba38d823b79a4024f84fc8ec138700178343bd4ad7090ab7c069329235917aefe9ba43961e4f4b82d269a549d5cddc606407816822dbf117c179fe3d700eeaadb8b8c22aa00a6205f7e0eada70cc6643e8c7f9ace97a250808935bdf1b5c5c3c8d0a5fb8419b914cab9d8a5418796c33e32a6ca78e92618ad5c78a21b7ad2ca8859e4935bf5aa729249e1ca9dad80ca4d16c54d4b59490bf7f4cf1bc2cc86cd04e5de31e207744982ddbac936e7a475c2f08e835aca7b9744f4707419215942fc43448625b2057c2fd65055d06c8519597a749540e914a08ab1a4c1719f230b07618f4b6b58d6c913dc6ec1f7f52ca0f54c782b01c9a1e56aa08453f2440826e9d5c1b5495d310064c87aac9d2d5008d9973052753e13c8aa1a221489cda7d8011f58d99bedbae7e45c4fad56b1374d7db944f6f4a716f8744a4420bec81c753d035b219f8fd0058bee9882b47ac17805c6313f59d01ecd9a2200bdaeae684265a394552ad0bafa7fd1622b7a3af718cc38e3c74e824bd2702167636bd7331a48726093405e0de2c6ebafea6994eef8322b6be91fc0145a632cbc7a79610f7ee60ffcd7a4eeb7e3bb4e0479e7cf478f82f550e6460756e4b9236f40ea8e94271b224a3e7782da21c5aec2917e4c4ceaa82ed543c865a2a90ae5af0ebf1c13dda25c49160ff7fbb3544408225783e1f7dc6a9b77d774f1696286ae3a362df7bdd97c79dfaca88f05ffbe541c68ffd48ae6379f37a2128b6a55dda338e2bcca1ae535fc7e058756be3920413c08ddc58f6f49a2418698e471fef853d3c9a64d815e04dd8f65e854ae9005e634767580f212b918a05288c7819413944d68578b0e99b854e4616018df7711025edfcbeb517f9d817507fd790123d1f3e461b03ac58b1cc8835cfa1f228d276680fb9dd6231c1a5d336df3fa4e71e7a0c7b540594165fe6fab15cacd8e7954572fc355dbec9aca401af209706916e6318c55b0d21c49f8e1daf30e0ea831bb5de70b908d8f6b16f7e9bf5734f38e0b8bf99856c734718923cac1494301f9160346fffe51fc72cb8dbb3d5094180b2fdcbcce311a2308a066f0fe10729d67e6179811d5e43db1f36307abe868e15046d2e9ca96db152b8b57b1e0c9ecbc0fa20d00316bd27ec6d3991ad7fe88eab3aad1f0167ed832a2f26c7a55be18241b2f9dcfde1d58b8c51783c51afdf94fa3322edd58c904b1fbb139cca5956689d3e65d07612ed9e8755c6c01413ad2c6123c1e8e6b1c01cd11a368b4e36de14695375c83fde7b5b3c17849a0972f54c33db9977ae7fc57f25a7e76f1966b90b6be9bf56c0eda88c2feb5f76f04afbf92c0710daa9a75b8ae7c1507aa6f787701989313a12418f2f4d12d48202cf889ad3bbd1afe67215f52da8b39d16ebac46623f24afa5367b7e1df8d5a2d796b7d73345e5745f0a9e7ec47e1eb9a3b1c0f6223f74d2ff653025552a003b598c434419ab1b7c6566af20ac5d0f7b28e76cccd141027ed32e772cff09503b1fa36fa12e5e236127907388b46e900f004a34440de97d799d3502bdd067806ffc796f48ced42a8abc4d1912c1f863c43252f8c9b9b80330c41f731cbf70ccb6f658d821743e3f5e9b253f3c89e336d5f030af8e73e01140f948cfac074b5522918d67f8ab538d00858e580b4057055afea32229e36414042e0610d57dc4ba0795748aafb6a00aebb2d8c7bc94b6ed4d594b483584d95011559be2c93cfa36b199334e5e035fd49e32995ecd05a2055aebdcb811c9400f648ee4fb11867d7890b23846e816c9b508f00f3a4dbb3868f01e6edb537914aee9189e069239a3f5e86e37be36abcbc3f7c5cc06d33988361366fe0a6442225eb062de221a970cc1ce250b199dc19791d908b2939d39ea0287ec7515d032ea1761e043ab4d3d63ecea613d7e7d43fb42887302bbbee0cde54e051bcc69f8bc4a64526011792992677d566a50ddbaa6828062fbb62900dd1cada18b05f069d7f389236f828d4c8e83214638fe2a79a28fdb4dc60ed27dc1fc29eefb7303429e2b168831d209d5f74b1fa9ac385633ae36dd8501e2c56457f026561191f2ae1d8f25498000236089c33061abd3d3908a67eecc8addb71a3ed85c50c7ee39030b9fc7e9137ecb067d1feaa52fda5172668ae6396b621ed60c27fab8116df785942506f01593c3c38d25cc625972118cbc3eeca4aec342d860d3882781235be1e240d7d78c74954841e1fc9a261aeaf75f6ff460fc6690f30e05c653bd8bff14518a456bb7a435f585167ada81e3d4e5f456234029cec08dc61515a644fab5905b16157b5a0c61af241b161f3bc480dae57a7039d8f34d9307848cb2b451b066ca8b1bfc9f442bbbf0621eefcbce4c99b4f83c38b6da68c36dae9db78dbc0d4df097306ed748c625af13067fb1dd1eecbf840e8cbc9f21e317e53d76982f2fd9d67600a58a934ec0353f638af064de641d234b581fd664c110a0e3c02ae010a4011379486f2804ef67f541f4e8502fc33b998049097e989b9d765f156228b38013ed4aef79c6b3795359c3b3049129cedd573c0024d30537a2ac35d961ab329273048cd57fd1b4b4dc578b8ea48879dbc84a827dbed25d5a22f04c1d3ff29c2a19c25c2eb37219760f42ecbd45d3c0b29b1a9c2d883c3a6dadfe686c0457f110be40a430757bbe0f583dbf2557f5449fcfda92530ee1d2f3b07c0f4ed43a5ca8d352e39a480b72e823c36c06b6b8b684bd977efeaaf380dca7e0bf2096990270e93951416f3b4e2fcddbccf277e181913e73524534ae03479e755f18861c774599433ee11460f199a5c555281dfd6ceb329561c6316871e479bd57426a4462baa0fbe524d24200aafd37370ba9020f6e0d04eb34b9f2404417f72c7021d37bd12c8820494ef68ee825c819f2d491e03d7261063d94f20eab46b2e7569453350782e2b6656b019d4d11787e10619838bcfb5b781f0073e6dcd735a76511f7f92109268e312889e51c8014707621580454360203fa7623aa5b346cb26897ab4981c0182eed174151bd7977a1e6319cf174f33e879084fdf2228d9502fe03d3a6eafda00e6cec1f9ed9de52d5d067321735a540cf994c0c34f4dc1b1d46a9aea4396d0181f2faa6e1ba62a5b7863b199ab9c4bcd0b9bc7ae0729befb0c9dd08c10d1aea4ecf7cbe1f26376d96e854e5a21546ab34598f789a43bfee2343a4952d3f14d7894902f59c4ca71bf181fa9e91ac931a73f143481f183759100d7d894716f9de40faa454305d96367a1ed18a36b66d540b958633e9250a93a3f6a1a53782ec018110e4367b3f88213007fb9156f4de7639115ed390ed4ad610f82bd1ccacf308c4333d2578ab2a5e5d3241713953257d40cab446684e2e801913d1d49ca3a609f08a14ec33dcc8c7414475d5cbaa621e8e0771bba2af5fa21a2b580333f89d8d2dc366de9471ac3c5ed31748f73f8ababd6df72d0ce6cf488db3b96dba881b39c7e5ac4e87dc37d2fa3f1ff1bcded858d475cc0b42687c2bc0d8a31f0266e7c980043e3d5cea0cb0171514962ad06f40db6fa8d028a3f46cd42d5d88c6c1b8cf3498a1d4d39ccd063629d4632d76b38f24966cb16dad053daf2ca999936779cfb6fe1e34500bce70f9e216e968740b2ea88d94e14cff3d6f65f90bbbc7a5b1bbaea8e975cef66489f041690ae80a01001eafd5f1cb09543ca34b8e289bf409038078c46669345022ff94256be4aceb92bf0e45fdc3373fc42855284e7caca42d87fa81bb319687d8df9fbff0214cbfe8917a25f6645b0b3845e6d23e05236ab47224ecea100ec6fc5028be725c1035ff5723122b570a68720c3c0930b2648d0450d0bc7c595087f30a385f5e7e5011a9c15365e714371ac6bf2aaa3b443864d43c6f3f866ca86189e595b826175accf7cf6bffbe3e881546fb47167be37c91d2666a6a29c6e8a7726c648e0a9daee37503ce20e9bcf2390fab94a58d92c261b88865675f1a185b0fe65758f24f2c44c30f56a8d987487a5a3121410cd5842ca92f07f6727f32c2983c0505ce4c1027777c1b783038b3bd85d2cd2829c754ee85b813ba7436389ad7c4c5430626fdbb4db344d9f304921d0390ce5692cca105ba84e1b008fea29053ed8554931cc6cda66632462978c9944a1018d86ac2bee5f1d84d22bfb8e60f0a523bf19a0397780f432b158bd136fe754b393aa3dab63f4d3c2645d82737d2f8963410e9000537b5d55fa852340146441e370f7215e87615ead5b512a62b6e8e6849edf3c41e78ee0d34c989060aeda1da97d296f2216a065acf86e3f4227493b028ba0c7d2b695e7f2d21e0df9fd7c0716163004ac2ef6edcdf47c755a81689e352a82d69e56534b054e0fd3a304021502731075feb341e2ec61d28030d83f1bbe26825c51e4a861a36c46e67d5f5c48b58d0107e6680a8482fb641ce1bc4722c4adce17c9e268421d6443a028b512ccc0564dc319e955fe6d32ca1346ede04616132504db999da6daa0516e1b3399de43f713da97f3bdc0183e5ba9a198ffa2d49c0af802c11835f84bc2b88f6be2e8b2010f4672e5bbc6b57a3d58f97cda167609113015f4871c8cb6cba4e16d21edbf1ceea6bff07610c1228187cc6526b352eafa1b09a03ba7f69d8f91b7d568503fa34cce7da17cfa63dd29aabae0046e21f7d3731f51b96cd5e1ea9bb057572dba231526a0ef6f87032990de503831ebd39b895eb258dc9bbc81027f0e3d2700ac37a02e63752168fe6550e108a0570b1365df0734a1b0d26b60d736d46b6f42fef90ce47f6085b36ab96aefdba0b74e0f1d724207772d43cae5161c5ba7ea34d5aa813a714f9f0cf8e19377c7344d9938d2e6d352deb3331c3e34448746882ce408ec5654072cf85092ab90d98aaf34c354c516ce0571bb5244bac6debe78162102052e52bfe00f690242d20c20f5c974d14327b39ede0716ec9d00b92bb2aa8b0f1dc962dc769194c610331ad0b9f8e9e130c6038619396987617ff418fddf40879015cba98e84eceed399eb372d53bf615860885db6bc0fe05969f2ca20076cf2247000c048d0d7e79c9c47284e19eb47364934af2869982785998d574eb14a083f382df46f14c58500ade9b473c4a4e83e675533195b29865ccdd83662620c0ccbf4f0b8b5c7bccdeeb0a5e574509d4cb93227ba26449d926c98400e3289f1aa06b1d01ef382315c2b359ef24b1fc65b2339a454c1e8004447349d0fa3c100ba9c11cc8abfeb8c2975ac17f106ac57af0f642a744da795a0d1442a7d667b9a192dd0ddda1f0cdab2336a5617ca7745f5601fdf954c88fa92408293ab80d8d0ebb0178c196c9f633025c5d03aea905120f3520b026e9ffffffffffffffff5f1c68bea1b5c83e413ba5945d299c6a1bfb944899a44c29a5f47b8fdfc03d008043ddd6fa5bfb0d04d90e8d0e010f75d4cd26562e57a1504c40c2895e8eb9f5cea7650fc9260e16a35f9b23bc6cad5028148a10124de0a3cfea5b3455625d854221c9c4c2cb16733247bc1cbc8a07483071eebad27a1ba24274150a050324974035e8d20ff5dbf28b102143769058e2241be3871cfb4ef65728141f3d1e086f90160081a412c68f2a53b233ee4fad5028457ea0f1a307193b3eb0c30c1e144a19249430d96b78c8d7d4546225904ca28e4bcbb1fb24bc7f324824b118abb4934c3a7e50b742a1ac31a4081a428688608d1128904422193f395aca573de1557a7c1021403e40a17c1021409a87094820e167b28f79a4870f771f917a5950252ac347cda6c88f60217184d1b5d3c7537bd3ec57bac89ef1233883a411d7893299d1dcabd6644472dbc5522d1fed63ae502845b288c5eaf849e69afc781135d028a206194aa208b3cdefe8cba77c949708546e102ec66de94ee72042f9cd562fc8f4536b8100590a65a417248740746f6e54f19c2b63150a85c4105a79d0b992b12fda5da150821004347e548814d9c10f7e30064921126b3134a6580da5c52b3d7af8705f0aa547911f3bc40c0710e131520b1242d439e7a4b221baee4a3c201984f22deac2d8ebee8a404804816c884e6732d3d6a802a1a9ef50135a9031db76400208fb43a580c40fd6070d90f0a103247b58849899cccae64d1b3d20cb37661673f8fc3fca83a7a3e38cf0514ab5bc63e4092478d84588c6cb52064d1dbb43257418400813b1d9256374f82a144a0f1990d8e1b792d7ed4d7381a40e88922d48b1ee93e94a3af4354a5cb43a7c1e6f0e082de5c84b211f64cecae132213cbd6d5b12af89831e5469fa36f3b05b51c0030ebf9d50a2c59ce772cd37fca132dc4388ecf00781c40d66f1c3538dcca9f9b2e880a40db6a9103d5ade16b3da6c283b66973736c7cdbf246b4028958d80440d89afd898d135ed3e3d03491a6cd9faec53335d8e612790a0011372748c5bca3363f00ce7e9ecdff98216d748cc60c9202b4325838a840c66ce3a5a0cdd4e1aaf3348c68012caf44a64cb3d273198d4252ddfae49b5bbc3b09cb7ecb22cbe59d4cd0748c0a08b5184901e4e3ca9cf49b083c72244c8c81448bed0b99cd37ee68bed7c9178016d52b45684d866bb245da8b6674f6ba7ac8de1189070c1a4ad3ba6da704a3f5484640be665cfefc624d76cd3023268d08e97f7f6b33049166a69b4f0662faa7521332c282ef9c7bb2c4813fe0f922ba4d74cfbd3fa83522533239058e1705af89061e131775d4820a9829f9b5d8490c963d0952d81840a9bb8aa5f8b2784ab1705922928666bedde17d2ba94426a3bcaaada6b16931b0583cc41959516e3fa8647884002856b947b109e325e1a2779026aa3c8f969f94f3a86051227f897f9e4a78c7fc89bc0b9a84dda7254b428bf09d62061c27133b4acb37bfaa468078f21effb637c816409a97ae7cfee82b91883244a583fedc68bfb6269e9ddc163440d2449f0673eb4f9698ff09c0409cb3ad27368d0d9e553931c01df3df978d5b9c5faf0a00189117c41b77fcaf8c17deb212445d0b396e8d3c15a0c5b572814226bbc094888708dcb3106371152f3c3c843630c17c73e35bb08231dfc44cb65cdbd3818e7a0c963653fbf187a60d829ccc5fca3dd6ef48b46aeaaad5b871f61fb62392939baa4c7d1d9732f52eebe676a346cec9717a7966fce598eea5229ed02ed3899753a66fe423cc6b0a10b3c56c974c236f8d79e8be267b3cf3c4bb24d8b8b544c8b89bc4837d1de6231959af4d3cf728ead2d12fa43e7bc06d9a65c42b0011bb5b05eec51f1f3ff2e4f0be33a9eebf6cb82d4cf2c3acfe2899bb3fb68a32c2ecdf22fc9b04c77b958fca22e95bcf41bed623e60031629657de99a454ba735214182fc2b362db6d421e7f469e97785ef697ef75aeae0b29caa566c2dffc78c3ae1a5b34275316eb6ecfa2f6957614b2d79c728194f67d24c15589e503ac6e8bbdc5c552aceee1f3d3a6c16e39c0c15a66f0df95f5dbac33ac5f9ddafa64cc67c9529da4ed519c2f65298ad4ebcac194c9e1029fc9cd1a3426d5b746d368ae6846c2e53b52818b5fdd1dd7270dd7c28763176a6966aa3cb710685aab9457a4b3a28dba0fa84152a74b635bb93e59e709398f372df642df59dc85e2a0dd38d0bd32d27d6206e4ea91dd7b87813c918a5223ee5baca491328213a6c749c71599499b0adabbad4dcb6e8d3033630914bf722cca52dddec5e62abcb7cad1dc3dbe996e8fc47aae64f765f77258ee95d18bd6a9d9f8b12e7f86b57e6a2f4ef9a846d765b32aaaf79924a22b51003087571b4a9ccb95a88063622914ea374260f275347838425634e7ecb517bf48f58d0bbd331a35a079976041a546ad0dc9b51a3de08fe64741232e6959e9911e6965c12f797ffa55b16b1b6b095a2d153b5328ad073aecab2de2a994589305a8881c3cee59ba9d1829aaa10c18a9237279b54478b561d6217397f2edaa67a3b0d719cddf8b29cc50bada74264de591643e353ce7542b0d9456de9cfccd8598542e901031b83b85ff64e5dc99051474178b532a3f22ff4f4814049d3dca921645073550061aa385dea82146f8fff70a6fffb244be78a1809b1e107fd4bc80b2aec84d0b93ea03b6c9f54d5ce54994211810d3e18b3bc9805b57699f53da4f4646eb7f0cc3d69850c1b7a683db7986bcb4b7b4a79d0c33574b08d2d0825ae22d8c043a536bee9d8a53b78b51a1a4a93965ddc54cab06107f378b7701b4475402dc4c02ed967ee9c2de697518542e9c1021b743087e7341736e4898f1971828d396c42755dc329196d747258d075edfc8fa9db5d1cce29c4804164cc0fd7efb225ae502866d880c3721b4d874c2fe98aef0d4b9d65d93199e5e0622f36dc90e8111e2f7a9b4a8bb5a1b410038e4e2b8f2f68feafa642a1502857021b6c5812bdfa1e83d42896ad2171f9ad1e62476f988760430dbb2ca9daf53519174649b09186a3894c8b4d42b4348b86c459c924372757ab3e3c43bbb15394b85e8ed948b06106346630b15a19c43a53a1507a10e1918690214ea10c2992868d32a82ecae4b5c8bfe8997b1b64b8b4184dd37e4b324dcd818d319c3a6570590efa5c4cdf5760430c29b139c8f0c266db3e2b144a0f109861230c754e9da5dfa2e79eca47ff0e7c74c006189643bd1c6329d920d5f385378a564d6da667d2b5e185af3a4b6242980b2eea636e0c1e1fb0d1859396ab422651df305a2e70f15992d7f7b2cb7ab670106af368b0f4bc1f75600c36b4907df86a9211a3bfbf34d8c882a15a849b6634d96859c10616169dc96566b4b49a3f57d85cd8741f75fae6c430d8b08262626af25ea3ff9c7060a30ae8a0333667667549b378c106158ce9e4b75422e4e5fe60b031854f5b9e0859fdd0e389c186148cb183c9dedbd1f5980a8542840436a2a0f66aaa26cb51b77148196c40c1561539e141a6c808b58d271c9f6dba1f7eb3e618102142b805369cd056877ce9b4a511ea63a30969a97a88ab90166c30c16c49e95ac709d32d6b63095e657d0b5ad059f3656eb0a184cb67465c678ea790b191845f30973d664d1b48585bd0977fdab9c63f1b47581c1d5aaafe51a7fe54a150823c100aa5881020446c18c1f091a653cbb5c84c19368a60ecf5ca51f1e2697ed0b04184b62bdfc52cd22cb359358cf664cab6ff1ca3789622634418facbc6b350374fff17f9329430120c66d5dc93f2f994bf0103a13e7e8cd2b73a9da130f20b64edb61ce694cce78bf9a2cfeecc902d9e938e9230d20b5dd2ea3a2daf09918b17e89459b8d498fd39096164178c4c73ffe11d6b453a84115d5c9f33e4c663a37d2e1749dd6c9b427a4ca736b8409cb9a4fa3fc8d6ce4118b9c522c64ab898ccf12519208cd862d9b76d6e74b62054b7230543466ab10bfbd1fd5bce7bb32d6184160bd6b2a8fd1de9e147150ac5c719417eb4606416460dfa3d075d6e5af02b140a09466481b7fccf8d9646e8dc2a148a8960241657bf28cd829c2d19afc16233e9a34fa585b2f2033b3cb0a3031480c1c82b7491517410faa374daae30747251ac737cb30f7761a415dfe8cc39896dd78659616552d2da4b6bac50166164150bf2bdca5234bbe5d24811465491fa370daf2e271d643215987df00a1bcf413d8a0a6fc43ec4e5d2db629d0293a6a9a747269953ef8511532cedcb08d1ec92b06bd9c248295275dd6f773975fbc78511522c6aaba73d9df2e61e851beb73b2bf4c164644b1e6bc474f675a78513783079091502c469b8d1e75539ecc486104147aec8efdb2ea973ce808239f60c545e81caf2dbb705d61c41369f94333d90b62b2fd91298c74825fd590a673da1bd9d284114eb8596c94fc1ca369c9d3831f63c8f340c8097064134be22557d625f574611e3ca2895b34fd24df5c52edee3137c61923994888b51837c7fbcd9249a18c18610413693ca52c5e7378397d2818b9c439e77e7a9641afe754306289c3ccbd5fecee6ec7d0d990914a9c937a77cdb76dca4f8f3c6af0589e053c743042897a3567c933e62c4bca349bc4a287854ea7ba463739f2841149205e1653669b7f74508a44b939296b59cc7f17339038795fcb2ae2925af1117ca83f0f4a35c6b71c61d8d479947adef9ed8430d288decf4cf8e88810751719b22a00c20823f410a7b4a0638a75310b0c78886064116d2c8f1d8f5a523def8311453857ff23c7c59c19da652411cba2889316f2742ee522028b139935f3b1ebcf228c1c42b918699dd92f9a90971143b0236efd82101f4bbe42f0a2b2b63b83c60e0d21966cf44b31328f69b91e8c0ce2b42e8c96a56ec93e8c3c4a302208838c2ab1b6eefb3bc84820f2d0b310f9e24957ed851140a4352fc8eda66eaf3f07237f5854b7a5d254d712ca912d8cf8c11475ca644cb4c6443f18e94315ffa11ab470ea563e14d66f2f473b1dcf9e1d8cec218f7da576c5af25cf52010fece800055c30a2874f66d1b39af2d3464f0f214582908042115224c88f11248ce46169347dee98d634784c8fe04117a44b1fb5356816533918b9c3e28d2ce195f5bfbfc1c1881d0c6be22ae7bf7a4a385287b42ce665a909f131df9f11e48100d94a7b60840e66bdf09299e7cf7d9a8a0646e6907079e9f3e5e898a92a144a0746e480779d6e798cbafe9f0a85622371489f7bf86e93de393e66502841ce081c7031858ba94428ede35528940a1135802c67e40dce9cfe1e939e25752d951c710332565ec9649e6f7b20bc670839018572869013a421040514ca194280f040236d58ce49ee858f27d4279d213a20c28605cdfc49943c93978f203f7c0051030d4a99d8378de950620536cdc2ddc576416c388d922a244f6470cf61e572de50410ff6415fcecf312feba0640a670e3f4a73b8e4d29d8a9448c11f535eebd20897c71305b3d3e53c95aa510285b39cbfff739ab172f91e943cc19e0ffe495c56d856254ea85e16ce8468db91df3461e964c63f2d4a65061113ee9126c746cf7d66be0484cbb2a0562f4bd7b610a14409eee9cbeadb59e4334bc25ff51f56cf54466d2548f036d43a0b72e32ebd52283982266465ce3254f5dace030c254628f356ea5767edd5fcc8144a8a908e6fb2af21e5eb472544383fbc4bb2ecea93fa87910ca165f1dcaf1a2c230c6d93b56c1e7392f9f3c168a3858c3efdfb72ac81d198c6ec52e917e76ee7028e5f187473ceef7d99a3dbbe489c0b32b5880bcd21ed028e5e2cf3a96fd39d0759252f9c3bd9a37b5b84e5be0b840e1f36c8df507fb22e3e6957295a6cb7794d2e4eb3398d8d352e74d944bcefc813e1a2b7d0645b5cde1cbd1df3b6e0ca4bbbc46739c4aab548a7768a10399feac938e0a0853148f3b8bd4dca679f853a1e4c6daad51673d01a70c8e22c9a5dd239bbd89b2a061cb1487bd81c5c8a5d59bf61d1478fb134d49ae9cec680e31577bd6f3ad54d1fa3490d355c91a88ace343d4f371b35d4c0d18ab3bc68317bea586126118f1ffaf9432f38e05845329338d552c9977d890c3854f1aaefe6e0e3952d7965c0918a66f43cc3b32c66fa898a5e3af5de25d46841fc3be038456e23b64967b88e79c4061ca6e8aeeabbe547f785b214bd6d493b25746866511b7090c250e293e88aae2d1d33e018052abe2ee8b89f6376313ae010054ac84f2e9cdbb5f4c13ae008c57fa5e553595377570205b396ff26f2257af49f30e7942fd26b74ccdd3cd18e963c83c978e96feec451d4bfa46ffcea53ce894ae4748e9717c3f95dc1b1096367d83fd7cbd236fa81431378ce929ed9678c97094726964fbda4f2b21c020e4c785e2efb961efdedd225cee0ea923ea17bfd634bfc31bfe54b293294e88280a3120b2a64db0be2791f3c382861ec92235aa7acdb3d9330b9eee8760a93e7f11a3824b154d2b4b31c36aebe0c041c91b8ac94c877907299d338209116ff4ee7b49de44a2382e3118bd058a2533569ce6a111c8e68f3b3d3ea8b5b52e34582fc0e1a611e3d67726ab46c310e4674d2f3486d3173877f11c9facacae527ff1ca308b36941cb5f32e92c6e124722963ca89159134244de9b547412db76328de3108659b8a6dbcf499754a1507aac0087214e2dc95c2ef9c60ed316822bb5ce97b9c5969f0981ac0d6247278fb146cb2012b7937566ee51d614c4a74e4b77afd6393f27c10e8e80231086689029f3e85afdd0e300442734c3279dc48bb0ed0faf4b7fba697f63e893c7081570f8e12e353a28a55bd0ce791f7e4f2a37669b92a93a7c6837e5cabafbbe0bca3d98633a57b3705b6f3240e0d003defa2ea6311d2ed2c591074d06a5e307d5c1839ec13b6752cfb27a66c71dd2e922bf838d0cb5100e3be8b3417fdd69f9d2be0ee7a79211a183163e6370d0214f6e6ab2e5dba0dacec1723d61a61be7dd73397c2a3f4fe897e52077c7c14e1e5e38dfcf57adc3a1bdf8f3ffb737d5fc1bb091adbf254369c9eb862ee45e6d50ff0f236a039ed5d74e5a0737311b2e4d391bdafb3cb8ac21b5c993be8af33c32480dfa865bd1e349650a350d27599ec55861a6625e3430571b94f224739e0de1388319a3668fb1c48beeb5197e69de34fe67e7ea5a06a49e2a0d7f6fa9274386b76646e995935af2312c8b6897e284d87fa912c3eb79fddcdf5d740fc390966541bb78a32b365a38c0b024736631ef5ce7cbeb171293b1d5250fa5e352010ae0f0421d5ef6e431f87678d20938baf0a851224e6dfdcd4f3be0e0429e74aceee8e261c428071c5bd8c2b39cc2635e870b6b01cdb2e039ae2b3ea8cb1e7064414fa183aaf354b27ac3031138b080ba3cfeed63215eee153619b6323ce89569d00abdc60ffd8ccb360f8e2aa494d2cece2e627d5a2138a8d059b767dfcfcbb0d714fa734f173e6aa470343da2bc7256d36951584c22eef733b61b475070d4f4a66ffad37eef13ce39f3ee59f27821762768319a3bb5790eb711471336d31d21637a69d67d1c4c58162dcb39bac98dd9b4845283ad854e5a1c0b991d14ca08147028a135cd497a7d3ef3bc712481cbdcf4b2e9300dfa47427fa5b37d9c16ab7ec471043f95c67cb285b9ed7ec408388cd06c97bf24fb71fb597014e1b4defd292377379b65ec3083071b7010210d4ac81cb42c4a4c334e8220378661ffefdbe9b49b1a2e1e3cb8210cbcf25b18d923faef85c18d60f8979a734e89f8b938083780a1e8abe98a0dd7fff42f9a4d253fb77996e3a6377cd1470bdb10db8d5e205ad01de48ba35faa122f8e494b5a374407d1a71b89c28d5d98f7473c6bbe77695dd0b8a10bbf5ecce2b9eeb3e48d5c546ea13f68102b323f5cbc5174bad32dbe28371fbb718b3a4993a3456bd11afa19376cd1befcc29bf4962f6fd482ff71f78af130ca0569c168916636a7172fa6417063165eeee896728359e54b256fc8c2eed29b4328f3749d89855b3addc9ccb259e91c168ea507d18e2636ae375e518e6cccae08a5ba4e3ed61852648d2166f8e0862bcaed8ca31f7c5c96cd8d56bc23e6b44e4d5dddce8a723b0b2335c4dda7f583881015acc278c1753e4b666fc926010ad0f871c60d555c7a3b7738eba035762a14ca206ea402991eb488d9ac0f4a77676bbc097698176ea0226d91652f6edc7a48a1f4b8710a3b67f320c73ebf7f10de30059b64ccd222747f964d374ac19e509a4fc789da17448a7efc65d162927b35fd28ccc2293d2ee5bf203f14c5aff25e1ffaeb5f344381ab66a674ddbc7107859d9438951e5d64c554a150d0d98d4fd85b5baa715b3470c3130897f34be29b5c9a17d4094c6872154dcdaa38e1cb9296e518745ce42b040885d2c30c1e7a6313a76dc63e1b7797daa48993dcf49a52643df5ac50283f2a446270231369f54ba9979dc5b996be8189f25ddce4a5638c417d38b871893634feceb7b618d6ac50286b7c0e7cf84863c900411a372c910921a3c5bcc59bcc520972a312bba42fcf6bc6370b9912cb9de4567d5a0b2fd24998e474c5075d4acc28894bd32c73468ec41e63eaae4abc5a6e2061d0c2ca7ff99db4b91e818c7625f692bed9543b62cd789943456e04fa3cc8bc986e4c6c0c23aa1ff1f41dfa49445bc427538a1663d6d42fc82822b9c963a9e83771f32622bda95a3fbd05116b9ba6b8d4a45773f010f7cb1ab2b6b3eb976a88c3568b4c5e1ba27d218ed549defd5f1c194384a83737094da20e6241bbe8a36563e3e122887af7c445e4546d7b02a1b96a6e8797a5b69602c45e96771677f299cb3f94293bf4cb1532c55cfc703cd9bbd9da653355f761318b16f499c7aed21d1f7c51449b667f8fd2e11ebc916f6974e7c57c1a3da0fa6236bd59a367799407eb33bab5a0257149b77848e3d48e70595bb4d37207f7cb37e90d11cd496c87c4b608e12e57d98b771dfa1eeddaf624bf43890e9f0e8fe9a96ad47f9bc352d728194beeb624be1cfeedda4dcb50a3b5c7c1ab8e692ee6de6e150e076d97b2ebaf45cfd11bd2820a73111e37e4886e30a61b1f2d4b6b19a4507a74e1461b96ce4c3c28eb7c3143de070c6eb0c1144a93685c8be3a2b60683f8cdd794b15c45a5066b6355b674e67cb3a501599a6466ce92bc946d8542b98186b324b3b4a9e5d1bbfd9f21793a866dc6bea69868dc308351839dd2a74e575856863ecf8f0c32ea28fd20192e9db3f0d278380643a5f7ed79c7cb825c0c089d74ebf3c89918330c9d6cf6bb0b1d3ee9b2470b780829128404e70618b24d214735a8d5f760854249038d167c60071a0d031e3908f2a30c341a06144a1a68a861851b5fd0427b5c753de1f6a2150ac50bc8fcb751c6f647c9ee46173479a1f39fc7179dc70a8532c60d2e6cdd39095f3ff1597a1f49b8b105bb94ddcc9cdc95d8b5c0badf2659b52f66f12c54762f664136df4a9a2a14ca0d2c9c95d651338dd41e9d2b1cfc64286d9a1dc65a2be4620b5f6f76f23a73a30abd68b247e39450ba57854229a286101f43bec8b23e6e50e1d5a4f47bf02cbc6cd21937a6d0f95f08d31a4ecec72a144a096e48e1a4337d12225406e5e98d282c3a42ffbd2511669d0a8572030a889810f7ecc93c5f76e30998fd75bbf0f2b96c31266e384113b3fae25ee6b02e4b8542b9d10436ba782f6d3c31e18e254d66cfd2fbc6d012f690ad27741ed7af5809575e6ee6bcc9ec68efd8d1881b49d0aa4a6eb5b588ce1824e0699d339c8a7ae14442b8710473668dba58a931a9df30c239fd958b669cc73289e04611baced26cd58b9e7ac20a85e26388101f3788601ed3973cf8f76b8c15223fce201986aaf126b6358bb174148635c2cab36e859f9e4036480a7698c183470f4882b1ecf6ad7afa51346324c040b828a25f74b7ac79aa5028fe837d90fc82974b58c826f5986bf285414b8b39c86c39bab9235f20e9c5f929ed3795f87c59e3c5b1abc3e77e395c6d5ed94532965de69ccf35eaaa50283dbc078f35fa81f06a8244178728e1af295bc47a57e99186902120a050d21032c4972417b8695c898c2d8b5fa4071f8442e931440809289421428690e02217b477d27ecf1dabba6087097e88191e1883e4168f66a9cd31af45cb1a5b18e3a9bcc71a51174f1f6b0c296204925a9854b5cf7a6796fe57a1504868f1e6ab7fa936d85d6c150a050924b3b85ecb3eb5f4a2d8c724b2e0bd3d73b47fdff0b158186e166b5a34bfe051335828ba32f95ea5d67f55f50afbb4a063cb6a1a74ee0aae3a5fcc34b9b0a1a9a881462b12cab468a7fe3ac968ac4086eb0bb247e3bf7c568440b28ae53fd5a5ead59d2edf83480f968c1d3b3cc80f13ecd8b1c69b60c79057018f34968c34160d0ae50724aa584c876ca93666411b832415a832994b9ded89bc2035d240c531add8b9d6cfeee7f857886c25881a88e414c8f4d87541aee68fb2299a9b4f117e363a8a0e059252986d3545acf8896bb9041252a0d64a78966ff5353d0924a3e8b7c74b84524286dff41839028928f04a578d5dbf310b3a150a45c8730d4842d1be1c74de4d723fcb493e6c40028a6d655ed2e575c247fbc462688f9f3e5a5c8cf7813408483c7136d11ce63eb46a8d150ae5cba80005786880a4137dbc04a6e3117a8b97902e88b0b5d9119fe58e8ba23ba6aebf11eace8de8fc72c7a42646b8396a89cfd5145a7e17715abcdcbd24b64d981481169312ff9149fcff9308ecaea5f11d1dabea2162f13de6a4a54fad7dfe21b46c6d378ffb2eba980e439c5daa50ea41a8a310093353a2ff628ea5474264a774101dda61358c740c0225f2dfa1ab6de219415c9e7342544b29994c3b7aec385443123a02a17b67fa19cf498d782aa60310698d25de3dcb9b6969227fb863c7779d72cb4adb0f29530d0365e8e8c3e7513c68c6ebbf7df9a0a8918f715aced1ceb48734dbcbb9a7b76c4646871e165dca164faf9d77b63ca0230fbc494de7c2bf201a204244b083043cd2583280e8c0835ef2711acc53ea7e8733a39c676cebe0f5d06187d3e7afd02c682b29ba0e74d4a190a2a53b9636d5f1d3c10bf75a936ea65d2c12f02812448d4a194472a0630e6ecba64e86bb6c2bbd1cceee71693c6b082dfc5671307a7e55cb30974de570b0374ccde6d6af53f61bf0f0f2b796d966c7ac1b346bb1bbdb35cba2aa3e74b4c164ab73a7557d5a302b14cae760c8a2e163a4093ad880f88d1ef38fc9870874ac21976485cd6554fb0d8ea1430d5707516ee2a74563bcc690226b0c3183870674a4c1bfda0ff662e9d0361a96adddcfadf48671171d6758ce49e9dbf20c992e478719f03ed992085ff3245a7494a1dd983b1bdb21d205e920c32e6975495d7addb9fc1874ef1cfaa9d53fb62a051d62406a96acc33a640bdac6828e30f4312eb68b2630a4a153cccbc9aa2fdc262fb69eb08c33dd0bc99ca1772db2470b1b8f26e8e842ab59d2ad6d0dbe3217ac8ff139e924e6a0859c40c716ec5c5a3ed526a4054b28395a2dd8c5899d053b2e93e753e271f43ed78185fc54559a32f5b1a22b38dac23ba9cd0ae74d152fe8c8ae1ab70a76cc41ae892e95fe4285f46b84cf8a5cc7141cfbdca6c3248564fe6472cb45e6aeef021d5170b43369c9574c5f282b44768c24e880022fd2ecbb4bf404a4a8cfb866e9fbb3dac1a3053a9c90ee9bee1e93cdf24dd873a876b9f81d539a28e86042f2d39dfe2cc6c60a7509eafddcaac5a911b312baecf7bc29cd6499ce2c09479d5339a72eb59c749070988b716f5d8c2f9894063a8ee0e8fa58f66dba7a1e23e8e28e962579f210f0d05184efd7e517d5d64184ad6ab4143a439e6318791493565e2f9c0c1a612cc598271519291fb3603c1afc93eeb94b752e398081a7cb998ee642851cbfa8fce5f11c6bd53dd852c8e10be7e56a69bcc6936eb017a64eefdefaf2dd265325072fd0d7526cce889aceb2ecc26c9e6b427390390b3a5d2cc69fab3f1551f2ce452e6a0bb245e6ec713c5c14be1d17226a3b654c8e5ba493b86ee8d4eb828b2dac163d9ed0b9dc3a7db5b0de93a674f185b99416e6b96f79fef45384c66c16069155e235faf46a4c16679bbaec2dc23a6b0b901cb140a98e897cf753de162cf6f19edbeb3d21427e85bdb2befd1984fe6e73b8021d7adc63964e3f72b4c29c4e58566dc8a688a1908315c69c29c3dbad4a73b38a5644092de8daede45944c002175028403e0743860809b20cd9018f4a0e55d4bb9b7369fbbf8c752a502d26cfa432e37c6ca838ec6953f72c27db5cc120c729f25327cd74d30a85f26359cc7001094420020ac5070f729822914177480d2a428b7129b8dd4d7a936b69973a52d4c1ac4dbcb83b2e32951ca3785435b674c2e5369953a150d0103264f1e13f28941e3944b16bd21c75af0d2147289664d23be27fbd3b64d628f2a3370d1e2ac8018a73163385ee4c6722ea4fe49ba2e4c7e6b54587c708727802194ec7f4e26916637ad4600663e4e884ebe57267770ce2dc1ecbfe09800051430463e4e0846342595aec8891e5b289e46ee7ce057b2d936aa2901e069acd7fd32e8fb860b2ca08726422199363223288efce31d1821c97384ecd8912d16214db2c71defc1d7bf368ad5695685485bf24ca5b4cc6214342d0011e6ae4a044ba9312b2b55e2d7e38894de964adbee132264ac2ec577e1bcf9465b22b148a193cd0c811890531325bf369b1ed7413e480444a7790d3f3e5a2259d47382fe8ec6b41783ed17e1a3f8442c11c8e405c56d66fc84f11cad18893b4efb950f1e111f920427c50283dccd891820ce4604462f7cd53839a49ddfe906311c69a6ac9ded7bcb34b911f1ef8fe01a48c223f3c70460e45e4f94ab7a471a4a78b3e47221837657da644798787c8fe00d201212828a2061943be0809d0c88188caa5963b77a97c11a3436c1a64eafc2acbd3cb10bf68139d4dea85e8b5c517b4769637ade6063908b18a74714366730fe618c4d2c6f61c847e8aa4a1841c82e8f4934e22c3ba98758e40b0f32d6d88ebfcaf690e401416762d9918792ec8fcc19262d2c38ffccb59ca0fe96931690e6da1b6357d303db6a64d9b731835f2a11f7d5e1a5b0a0d6afd418e3d9844b908137fdafa3e7a3079d6f960a2c469c7f2d069b79c635f9664b38b87c375d6733755523f78079368590c756a5d633f3b1c22f47ac8c9f6a043150ac5478e3a2c479725b1594c7df5243afca6344f68c9734b9e1c6c911c7368ef5d52316b211b26e49043d23473df650de2459f230ec771d366b695ad978183394813e24e874dfe826fb8c54fa741630c67297e0e863ce67043755a96378509eda3ac0a8592a30da9f2785d9b62d46628071b728bbbcd697436cbe90a85e2fb951c6bd07693bedddd50e2b31c6ae863fed841bd7c6b144a1939d2f0c776d192cc7ad1b1a121a17c5f6c39e796ad4d65d907b2ec9f804251428e33ec9de7c554ac44ffdab1ec9f60081a64842187190e328b992c337f1e99ca5186b336ddc6349de3aea9b2831dfc000185c2e37390a13cb7d20ea90a21c718707937bc18ae65173f2b864b6fece54d9e592c5918ee1867324c99c7b8be42a1f858837dac01240d11e400c3f5ffb2312f7ac816fec292b0d3b95f428be91c5e48e6b02f679caefd0e12418e2e547e4a86767707fd6785071fc40a39b86075ae97e24369f1650b27a5b43c2ea6726821119131a64d6c102a21422a3e80f80f27e4c8023a440c24645d1683bad0a5b53f410e2cfcf2a796cabfbcb1ea0ace7a6731f784788bc86105334646d5943dadf15701659f54d7de9e830a9d57bcefc797b27d9c0216d21c5238dde78b51d3980bfa1e447244816b7b75df74325baa3a90030abeb70b6af12d9b2bc4870f223f28941c4f50e4f3bf18bfeb5cd052a1507238217d215bce6ca163f6a642a1f060877ce76842a6cc3ac79dedfdaf2a14cacb2007131c2d233f57ac3ab89e6309c7f839cb1dff4709d35528941e3d783c10de31e450826ec2456df7ffa42906438e242c9a28bd9e9fd4992c2b14ca117220e1a0c4bd2ce6dc3174d8731cc131ed632d89b5f479ad50283d2a398ce06a8ebdb74c3addb4150a0508398ab0389f34785ba942a1502863e4208259fdbf2a5f7218e91462a0441829974fcba3267f470b0603999a5f3379d2596b02c6924bc285f9f862de722b148a07f9327878c92f7e41abc65a73bf0efbc27aab92997d65938c25bd4066f945bdd331beea8146c3c0837c192628e1452e95fcfd79527daabda064170b1b83dabc8f28b5595da0452613a563e870319a0b4d67d9e6eea6cfade1e22cbce0f6e1d4e6e09f1e2370c18e33c10e33c103e12c94dca25c1dffd05bf25b934a6cd1a58cb5974ecf3a69492db46febf6d861d45e0cf2638738194a686108352f1556a5f7324a6691ccd8ec7e9efeac20427a50228b849810b757b2478ba39258fc33fa7b713dfaa52981c582e9a74f6ad5e55b4c85422979455a4eaafdbd7e3bbcaf50284384f8f840892beeebbd4ea3d49256b023a2f694769f4b518542e91124051fd8410408900eecd851a4073b289412569cce7eb67bab37865fb28a3b7932f753d7b142ac8a64e6ca5472a30a85d22a1041492aae1ff1a536cb331b9e12542c5a3abfb2cd37fbda2121a05076c8b7a0e41468c963a90dedb9315d649498629396a254aadde95caa502865949422299bf7d957b7776d854259410929ce9dd9cb259daa50282a2819455a501719f333a3b436468928fa17932a556b3a66391c0ab63f644da9f5f79940514911274fe954de2fe613576a85b5ee996ba59e308b3fff6945844eab75628f6677595a7acb379c48ddceff4ef733e6c681924dd4c2ea69cf77b1c50f6982fb8bcf579e25d51820fec34710210fc449102405140a911c081152b11d45011e699464a25cffd0513a33bb674a3061cee5a74ca24cd565965072892c4d379b6cef9876c7428925fe797147e6e45b7452154a2af1a967ce9f846bbcc95082ddfa9857b48ef82c9340ab28533a6b72dcaa0a85b208f15121b263648924124a5a697bbe561f2f043bcce081839248984f9d6610dea739942071da12ee19224b2faf92472c59efaa6b109e257dc3a0c41106a5eab9058f318ba96fc4bfe5a23e6e65c49b426453763de56e404a16c1aa9df674f3ad1f2b22973f8b62eaf499d0599607419624e20f6b772b669620c2dc55ef727e8ca67b39c4a1a5f6dfcde47d5f32238d124384a0a4107ae74a0871ee5cc920eece9508e2052581489487fb688ba7b1861938280184621f7ee3a1949ede39e8afd4a0e40fec7be77c69bf4dcab785123fe4a9e51472cac55c7829e9436759f3929aeceb3af9807ff6ec8c4996dcc902108cc1a3640fb5d6886c41754e7b5af4d0bb947a7243559287badd4dc6d37f359b2cc183dd753eeadd2aaeae923b986fa23b7bdea0e952620753a74ecf4128ef8d621d96edb47327752eeabe0f94d0e1cd182584164cd6db3407f745e37bd011cab22c91039e5de5fe529b49ef2c2571b0a3072966b14133642570405d34ff32791a458b63f02879c37123427e9cba4ad74bdcc06a0ed26deedfdeb221256d60de34cd3a6c304da31e94b061499a5a330deda2b99c46c91a2cad71597a8f49a3440d9ef4f498779d94d05d8d92343c2ae3a588690e427d951234a0657563a6cc8fa7391e949c61519492e12c63cb929a8994982197d3fbfcc79c725d92484919b4ce372eb869cd1d0f198ed38fa9259d319a9d7a88c00145d44043021de0818392317427dbb468e5a174ba04291143a2c3f4fa06e5e159bcc70e29d28310ecd80104c87e60070f0a65c40a256140e967cbe81fdae28a2560a894ccde69cffa3b5e85421922240d1f692c1a2028f942a697a93c9eecaa8e2b14caa7b146111f437e8d21140a074abc701855236be35f65b6544aba90bad417ab3fbfb3cf5828e182268390e974164fa1396328d942dde1f7424b0386122d245fb838f5be5aeb2f1b4ab2a06fde2eeb91f23f4a6798a1040b9e16469e1c97f342c9b8a1e40a6fbd7c320c3f10830cc8999764be932f7bae1863785b10593aa368febfc41003275f943aa16531271586e10a530c30acf3b22c95cda7a9c6545620c617ae2b93b9cf94786163150ff26329430c2f2c28f3175e9309d91feb8299e5cb0db715c2df27c285f48be567bdcc12912b626cc1dc16751dc39810b395400c2d9c1de3dbc9ac2f9e64889185f3645bb2510dc4c082d95662f4bea0e62312e30a67fbb4e7b9a7b4ef5f21220331acb05c52f3537d16e494b80a761453f1a1c2e7e52431a89067534a67efded4fe624ca1d4b2f3df36ad218614da0c32ad7aa569dbbcc70fc488429523b386307d49b61828547bfdf973d23fe7121a623ca18f9d2fe64f9ea965599cb0341f73febc3b8c56c568c21d23637db290eac25f61422765d4a38687e78697c0c7b664ed5910dffec450024abd4cc659791ef1567af4f0000f3288908042597c10f92a889184e58dba9d620ac5070f341a06df83c70818c44082ad334a06a1d263e81c318e60ce3bf91da63dde311c10c3086771a45c9faab64673046214a14fd35d1915a13e4e42c42042d53096655d8d274a534953aa9c086333a5646b8a70173b271896de0cf5a637fe831e187c6dd2f2985970f9f65fa46d74d89c624cae69be4076369d1fbb437bb87ab1c6fea69ae7b8929f178fd42cae86df8d5a6b17983e6d5aae7ac8aaa10322148a2e98cfa9bb65d5b945988bf542c80925e26229ff47f76bd4ac07dde2cc628baae7c2b67bfac4166a1ed5f5c29d6bd05c2d0c4228f5f6abfafc1c2dd6b59197d720d3a656a15072d05f69139cccc22453bca7d4551675679122bd851db91f08ef0301b2e7241659a7eccce3b2150aa5524488078884e00416d7f98567ac31df789ebc02f1318826d9c2c69ae787a8000a27aee05ad0c936ab6978d842dc8c9356289feb2f3528f5092b8cad0211a1084e5471884e52c1a992532de68f4abd5f70820a453f8716b4dae559700a65e3a557695d793a6970628aa47b0693a2ee4ec45e59221d80c14929929fe13308d9a69971428ab3946fb8586bd0563a19c592beccf1393bb8549f88c2a8a39467c1a5cc5bdf064e42f1a6672ff5f2a6321d42e3cb3801855e397b5a9a6fd7cdbe080978fcc927b4f3d98ced9c59b20504279eb03b69f5d82f697e85c88e814e3ab1bfa767509af478f079a4e08413fd08352db92659974f9bd06ec7455378925ea626eace5726f6e268b6341386868646c3a00527984856ffcd869195b3cc25aed1496595529924824e2ce1975cbb4dff159bde4925fcf7dce2e229fd2f6a4e28617a8b9aa936932c1744c1c924ce2296a1557e846ab222895d52fb1c3bc84e22a1e66c4dbe516ecb3e810442996fcea2a61e911683e68de143cb319dd638718417bb5e372736e29ce5d69ec598134630db25378e8e6be9257d70b2886364f406910d85f283134530abd6f1aa938ccf9daa1a9c2442f16c6936f6bb25f122841344d4f95a2a35a6ab8c4e0e816f7a0edaafb3868889ece0c4105e588e76e90a810791aa4137b73644ce58202278c10921b6ee50faf35975fc0753283d7a10a9b080c7901414f9e1010aa5c80f0ec2c920d24eeb9a19b36432f41341e8b9a5f6a437d7098d05c239bdceb811fa74502b2780684d7f8c79efbc5bab3f9cfd3bddcb78ec28f2133fa0e4577e5437ffc710331cc88fca077870d287aed56496cd3c3ef4d94467b5b4a8e94d7b40b46e5299ee753a772a1522fb2738d1c37a19eb49c7bf976456a150580d224e021e2f38c9831a740e31627452b3eb091e0e1d63637ee9c4ea8777b82fced44b67274be7ed604cd263eeeb0875e3d6c1d18b9764a991e1ea9fd021a5f64f8e16f5a0a19e8317d25eb69753687f8d8f2142cc3891c3a5a283cc61e394fc70650427715852dfdddd77fbe6de091c2e999a7fd931ad87e90d7679f2972fd3f2a2ae5028686c1a44c6387103a21dd74b854e1b586d415743c5796c29363827d7321a36276bc0c4cbe8f84de927ca13359832746eeac91132ed2769309a8eda25ade5cc926c068f1d9ca0e12c9a54f58e67e92d9ee16c4987c73a5997ba3d31c3e2a6a7596ff329744216224262705286c5b897479d5f276458f3c3bcbe60adbd2d2763d0934bb1ef71bbed39150a450cbb98426c0ca24fb43ffa240ce611333bd6f1693af645860849030d129c8001af1006d0c9179c31d9776d0d5af6d00b95c70e7ea525a457c98c932ef01df32d77a74567a642a158e0840b4b6a2e5b5cf513da01244eb660271d6deca4579af8275a48a60efae4c2640c1acd02723dc7173f35168c7da6e5e0513b970e9d5c415375cfa2c6dd0abcde6957f3502f9eb80adfeb8bddaa71a4ed7a42055475277d517ab69a3b99c2044ea4b098639fd0ecfc49147cfc48a3032a70c009143a8890059c3cc132f5c13eb9ac29456666c68e323328c0434f9c90f616d15996734794961b9c3481f7a8a6555458bb2c8609cba9fa936d66affef06409b647d3d64926ddffd2274a58c04912d2f9d277d0b54f909069514484165b4e49f3e408cf769a8e41e990aad58911cc2e7f4a4f2fc9e82e5fc60e327698c16304274518c009111631e392de3f557afc19439e0c0ae5cf18f263f06893619c5d2aa5bc85591875a5f9ecbaf9f5e883916b9683767f08910b9800e320eeb7d7ee3466fd542814341ec8f738c18e3178a4608b2c0858400619148a8f2168a0b183043bccd8b10b935fa04106014c7c51e489f8f89146070a60d28b0698f0e2fed19de65e5697fcad5028bb60538338d3b14cbb9bbac8e594a11fa33cf42830c90591353e070f30c1c531a9671ed3b2c74df72d7ea4d1810798d8c298d4020226b41080c92cce6254777b1d75931959fc79bec4081719b49c58c0220126afa8aa5b1a97434bb7fa714532a65a7fe9fbb4bca756f8f89146079ed7030430610556d7fb2bea6539b4ba8a0998a8824fad69343bc89869f908b2f84083c8f2c0870f21453460920a36bc37c8bd5926a878ce639d5adb8ecb58a1505860720a64628a039894c2c78f341860428a518822147b487ba92b8426a010b220c0e4130bfa5e965f633e796e7be27d119742cb2fcbfe6d2788706287c926d4a0693ce9cda2686aa289059864220226989080c92526606289a376900dd7a7949f68520947c4e764f5e37f524309223f44483bc06412441860220922438410113286014c22a18b2b4a645b347bc104031348dc9e4be4cbd26652a73479441b77721e9a3842db0eaa2ee9e7f7a0993462bb112d5af708e9993082f1a0498b741b1db1c06411b520b3ac263152ac139828229df42a6cc4f99b7689f89146075ef0001344a4636a1783980bbab9c0e4109c4bed398616f4dca83ec80f46434853286598182291418538e38c35c3022684687494acb5172f12647b5dc002934120d39c89f06c04268208049be46b12f5f3e976569e42e9f1fe630754300184e97673aff29999fcc1e0b2ac96b210133f107180491f1260c287d6e48f6b5ce506530711f2c30d267bf0a100133d04c0240f6a8712b1f127459b5cf10104c8fa48e3bd4df04000933b1c93940b4fa7c553f8765850aa1a83750c16f6e02b26751080091d163dc90bb2d74643a92b14ca1826730080891c8e31290f7ddbb51dbe1f0284d70c1e2c0b386012075cb6e5f62db11e7f56406002075b741735982e95e3592a140a1a3d3ac0838707f9223d080185c2a3df0540802c1a6550283c7860f2862a6e2d83bc4fba31f21752e44ddcc08b1b3cf7749653c23344888f0ff20348901f6db842b55f68106a21b464c286748c86d1122d65ec308347912fa34264c748266b50846b6cad12211e2f35f82526c5f77cf5b613e447084cd2e0de85bdc9662fb5a6c0040d8adac8bdfc9d93d0ca470f9333a8495d16afe3338edb26666034f8a9b4cf9521edf29e6d86965a1c71c5840cc76ddce0a65db6eefc180ed2aee45adc742f6711439d7dfcd6c6cc3d652a148a49187ad1c476292dcb1ace0643276d638e23ae65b1c42f20af6c554ec7dca03a5e5836ab0cb7b83829aa49179efb58e21ba61aaf572814132ea4b365389d84deccc8150aa547fff01f92860f0aa507274cb6604cb6f59f5a3071c2aa0829e2c387891670bf5dd51ea16cad8249160e9997634b2f29b7d39960216f69dd53dbc6a02a13e2c3471a6a50c1e40a988c375a901b639684cac40a99104daa8009d1840a7f27175f9a2b9d6416af5028144a8f35961f43de640a95104da4c05ae62043bdbc647d9944418df72fcb59d0e51f54ef4250600205b4fa565b68f163d6f8bb10143c2121db23aea1350635be8913167f3be7cf7bffb2e62b264d48ab96796f59a150881421b2407ca4216488d3c084096bb4efcdd2a976dab142a1f43841074c9670d8985e2df11ae7ce8a0f0fb23e7af4bb0005418698282195f31cff337d6d6c9521144a8f325070039324a0c3944a77b1dc638c0b0932068f762128a050da0409c60caae141cfe7cbfb8c5743070f8210981c01b961dfe77a62572d150ae5043cc83031827d7d2f6f0b52e3bc1d081992864911d07d2eca426929a2869035f604144a1a448060428405a563d262daff5c4aff3f869871021e45d420c30320f81f43cc601e66e81806efba693bd9ba6f8608594ca043187bf9a77ca86670f520357aacf126a810d93176b44147304c2f69da07b9594bb6665028ec11d0010c64163cb6b7ac6dccee2fee205b9d9e36c8d1528542f931c48c33828040872fb0393f1d642c6f4f5b21b26354886c858c1d66ec108109768cc1c3032020834261f7c183053a7aa1c5b8f02e3a7bb2d479d155658c5d97592eed8ae8d8852d6c586859e4e5918f0a80600705789441872e7c294d66dbab7df4b102c5821db5821da5821d95821d85821d45c68e3a01051e481a6a14f1918bea33bcf3c72c25b3bb687441072eee342fbb689be69fa1e316c6700bf775c1db5a1dc10e11ec08c10e10ecb8810e5b186d5bde176316e9725e0b5f2cb13b2e462b6d323a6881ce2fbafbc44597057116ba18b3b341377c5f9705a3b2419d95bee8188e05671ecd5f7c4975163558bc41f7a7472ba9a34a5bd0f18ad593ab9b2c2163fe912b7c39e9923145afa87c5ac16c4bba85bb0c2bec6ce2ce434d86c6bf0a3d88cdc20be2ef36c654a1c8a772a9dbe4bd64d2918a63ead2694ba46951721da87846e37487d34d2e763a4ea1c73c21df4969cdd228041da6b84db6477dc135853e7594828d1be6a54df310b204d1418ac4858c3fbe41150a45c728da73f142dcccbe931fd0218aa52a17847c0cfa1f438ae808c5f9b65ebe66946a9f416190bd9e5af013612dafe31398d8dc1f935f7c2751854259810e4face7c174b6ee359da61e5b6441b0238d25c3df87ff10214588c04247270c9d94c9d4a173026f91e71b537f991a6dc2381dd633bd70caf4a48963748e2e7b2c7564a217f3cb726c5ad5c995480e82a851f980101d9870839e922f4b9a5b2fe983a440c7252cfbd0efecb238a7639640b8fd4791ebe29ab62bb1b7c78a6798ebf952072596d6b3cbb69e3b993a44c724509a6c776478d1ddf41ed8d1011e417e6ce50392e0b4cb2f96d59d47bc4858aaa4858bdf1b4cab90f032de5e6a5dcfa00f908ca88412c368280e0743813018080400014eb7365311082050402495c703f2b860a1d60314000141362a604a222c2c1c1822908502a13824108503814018140a446124049124c6d3b4c907914f61cc92158f6f9254d3885cf022e64fc7b179e5fdb6785ffefdca8acf3277914a11fae578a91adbadb6602c28d97af3c06ce114da2a78b4ec743d2da920f823c90ff4fc0bd48cbf7295d7d55b48588728bdcd3143c80d523e3710404452979f2a2ceff34f0dd61091bf2114b57aea0ca1aeba1d005d06316ab3af967bc773969a9099b6f2c541596d73f9fc52aa85987fe69c75298938bc824d0581e80ae21e6339ffc11f073e4ae57ee3e19bdbdc66f891c622bb8221f65073d09a6a2df6512a1cb3e35a765b6a9123181366255be8b8889206634507f50c97b2e2217e26e02f9d6617a8de0ff01956a88a1ac3e52e108843aa401951f9f145c5b6000b080540517e0fe2c29f5735c6af8dadc6a72f43bd42465fc900455482774fdc2062420d61e5f4b951cc264342eae645b5a6e7202ea23f6cb37733e00def27acb0bf9ef618608f11e061f3eae59fe3cd4856fdfa95519252719947f57512fc93ad04b8233d8b5c8db9efe33a5ecf14e2c428ab35a48ba1846c32cd89817fbcf409741e9fb83c58ae9f6f0b5f3e809c40abb4fa6c47687a9be8a3b0b4bc2afd479a804efe9b98f0b55debb7d38a9dd6816e9c2c46c2e5e7469b984b07b5d994506ff51536841e933fe5b3a1ea9b6053a3ab35a5b374b70f0e7158bee86ff98a31e122998226ca7ba360f837fca19ec86fc42d4a254115b24245228f8abbd42e88f8bfa0306347fb2b077848e595de68980397e0d346e5b80b40c73eadc94b8e23aa5f0ac5f67fcba699e0e98573b66059042b1eae675fa4c6824cd1f648e33eb3fb2e13afd821a9eb3f27f377a9896f83a66148a340072b9bf48ceebff087df473a807dabf16477ab5fd81e4a416018bd38a787fed135272b9517d8ef1262fba5a67786937c29413f5bed3ae0b3270262c9768e181e562c531e8a507bf024b93130c02c90c3b4abf68ef873566c5545ee2aec21b7428afdce8d00e5acf6f55ebf8fa7bd5080d0c98093614c9400e383d9dd9cdfc6dae9fe6ab2b9f088d751659877e085b1e1cabe544675017e09f731e543b8ef4a60c2c88d7e081f398b8979680bb28d4deba8d7e02d5f6d0b7544b658204fab905657d2ae517f81e26524b2559f5eacde8fd920db744a92063d12e3e3d19d84cb447447c48e74b5d173ac63efaf21c46d024a9b3e9c2505dce98a34f846f65c000c0c29366005b00cc0907ec0a23e1a19f446c5ce1e51bd789f9b1f4dad06f4c9ed513c16211c66d21f90581ddcb95e837d3f973afe2756b327841d8c6a250c51dfb84338bd81d55989b6ceb0488558dbd8467e773df7eb4ff84e2d0d11f2ca8c8016916d1802e543f001392dbc79aed70b7f2fad31e397c803028f4ac43a8899499037b0df4b683d5488868bed2aa7c5a31dba38cb5146dd5f125554b816f2c92ecbdef8370ae4cf67260338035f912a2bb2bf32f0dc8d65b43d209cba369d4a3fd1c8544aa305ba237b342a307ab6f4597ab3d29dce7d88fa00f7fe0be2622b269453199f669920948d50166a089b442f40050692e1ee87c1f0464b8920c2d4997b0ac1a25aa459343fce334b037a961cf64241bda729eb314e260ae08d455bc6d07476ba421af5d6889bb5d9b3b0f53788902c2f4c0586da53df04ebba8298a49fd556462007a88e132d786af822f000a60c3c1084e6106dbfa230207c990eb6876fae7554c089e5ae3743be7ac27a831d292e7fb786967f733367e3b7c27dab5e42903fc605a804540331a528f1d7a77c4c208f67eb4c6d70908dec0babc9083063d6ff5659c26c1234511d4a59f73183ee046072a71011e02cc0bfe1495f10056eae8293e7d929818225134350a8824f95a169d201636d3a7d812d131882e31e49ded7cc83a412ae38f13809741dd53743a26e484b7e30e7a9982a7489db334df32f82ce8191e0aebd5d40499e467e1bd482c3ec0e793bacaf27fe3c3ea7300ecc6acd43f2a6b67371a5738c45a0268c7151e39b2a7583c376efb943d04a7b2f4a25ab51a78043a05b0cc1f165053cb38693c4007999fceb2a61c36cf0b4834559c9e0a2dedb205608783b0fa8948dc74cd31b1db457ae29112b56322002e3d3d36896c42b572abdee31340eb4ec8ab4b8a693a1961496699073f0187e8c093b0e6a5e744bae9419ae4955cf071ae0ae8b953e9c7dc0a5569ea221ce916e073d56ac5f821d852ed40ed54f92146bda843e4f6024884325e1f699c634d7e41f9f8d5533b73a801375ab9191f6531d142a88cdc91cb706933035c14fe0ce3be84c35f1222b4baebe67a05c9a7d80ccb50302032a2d30967dd7dfd66b038614065e44fd2635b86e14e3e091d70f65e1241acd042a52b204955caf85e32df6a65e1bd120676564ecb908bbaa8bdea60be441640ae8b8e50ac26a731f3ad1107f5eb3fc3c813e8f2845fbd4f7e096cb8711f7939510a0d74400fc9280166cc2f6b6176783f3b5af67ca7f9db85f95c222700fb1c6e42c15ac9cc1e4cd964e8d20f5475efd135fdc443204ba6679ce01f6dd2eb97b27a277f9825d31dc93ab81a041b7560828a2273a27ea63f9844027637a602304ba782e32fe757bb92f82bf786131dc08a44b99c21da14631d474291218b159290e68012bc507ca0e1b34cad74b13c2351285e8eb881951daed72127e6e5abd1cdb9b013a1c88080d2c76df3233a007db2277a06fa7b546814a981da4dcbe2a81fe6219a1bb64930bac39671992f6cbd7fca3e30df8e2c6399be6823bbc7e9d5a5c1786a80e9629bce8391e79729cd110d4c12d64832f0b6a2653012a02a4bc73fc53ea708b833d2fa94d0368143b1f9f1fca8f150561d09bdd647c7b657b8c878ba4fbbfbd00254846b7533d2e805efcb5e7785b8b4113f653440ec1f628f4f1cb81285c2a5daf1277a347935bc82b6617852ad4dc621546517c0025e74e26d670ce35a409e2bf1c3d192c836be7955ef015406b1a5c89c16ea40ce36b46b3090aa09deca9dbae8d7b0633bb1ff082be0330a7d04c2d1097c3e526e53007930c92cfcfea7d6b4b18d998858786ba2eac61812ad5bb9da21ce6e99ef19f91088efbe51ce7a17188c97e06733808a04d1913c510ca5b690735888e793ff6be4ded66eb8a5ed47f20dc8b7ec018cab3a3a5c9e7b333ca7ded9b146080879d49d8eaa9d0111cdcec4ec44efc97422a66de0343e5e3259ba78c015bf7676b02ce6d13f732331ca910e3a1cb12607ec3233a2e96b43af39374bc07be0e945bfb086d6a6b9b1d2c3f5547cdd2f10c4c05f509f6f0b24c791e515ed381ab9bb5608c57ec5bbfa3a64d1fabd6420b050b1fca688d748a53b18394494449868dd6a2ccfd35436776d4296acef5db6c8e1202095446f5ee71a73bf3014ac43817ecca04daadf671fd023160366d9033b4fcde52539bc016dd1b31fb0dc367a021db3c061b0cb2d9f1bf0b04cc18b6a1beebea7a1c00dd3e0c0b6d02789e5b06a6e49c8d8484f794282649710c699752cb14034812fcfed6612c0b01e39d1bfe31ceac89d666bcb46e32b4b88857f4ffda2f1a2303d3a0daf8c39bd1190332020fdfd74006fe2226e614357c317a9a3a69c50c270408aa3f796f78f2f144ec3ea47ad676a57dfc4ad7e7f4591604821593a46a80653ca5c58d2413805c15e07d60c2ef834d27ce044ee35284a55f95b4894ab7878a9e32c9ae572cacb0459c59fb05b9e315e4dc5ce814b897c05194668878af6780531a1776bc6017de10ccb91bf517d9fa48a0434bd3501180c34a63b02b365e720d5e094698c7ebc90599ded25d909e277264ba33889ef314b279bf238a6dbeb5426bd7325460ac48d4361a4c754b496c7d37c14a7c25b7ec5a271c61d00481a239e95af2072b821e3e95e3797c63a28801ed2bdc3b85b9da11a3d8df67590815f24431bfea047b4df0e177c5b691572da493b8ab00ab723728e29b38969ff14af369b8e44ba3bce30d806ce5e19b5eac9f24d21c69715889d8772ecb935861198a131f21096cff2505518ecfd50cc03a585cca44188dd9899f884408db910dd869ed54f57cc8b2dd1a68ed0ffbde828517dcfd349c57b3642b1fee46f2ed837ab1764afad0e5d58517d7d5aa1c19085b9b69fa52cb0cdb0a91e6302f6e16068a28712a8e72c52b10277d4bfe46fd3694e4e76230774b2e79bd4d8c7b497fd4e072b8288fcfaefe8d8576b1332c9d40ff4a45da456f6228fb39807cfa3a4833b25c06d98bd339a87d7e74600f6f66097b7d5907b6d17471f30283c21ea15d5ec4d21eb92485cc06efe1c9d26013627e0600cf17f69bedf1253ff37380d9fa1dc4a848f7c0bd0a09fc6c5ab2be157b30036bf33c06f4d715a1dd92402ca57547be5f04e32d295600317c64efaf7b4de2d90c1132944138670b143d8cc68fa80afdc03013a3f127eed83234bbcbefbbffb1c33f8356c914656da93f4f40959d228583757ea75903b230fac580213e5d7e560676dd68d1c9affd658dfcdb670e981e07259ac92915b0b0826a869194f4d415165a0d4347d04387f73ca1d7fb07f218013c43028e2f1c2a18dc7603a39bb4baf19a1adb141c6eacbd91fc61a68f4460bb97ad2e993678b2e486dcbdedbfa7c2061926c7168280aae5628845b467568f453a3456bae2151d7d82f05d3094c882be900fae124082a54ec53004ed6ccfcc204c7a5ca4f267eb17c3de46c7fd8507ce6f161b09bcb32ddc798dd9712978b62c865ca6249a18c42d9aa89758c1fb41a7081ae29c765e17320801f2ce4a118a8940f7ae0ab72dba27dbdf9d0886c95774b2a8fc40d8b36e2b3032478bff87b379971236bb042dccecae676b2510df813e49bd3bbf2ff58418d609f3ef93b583c3c38b07c1171c3f792056b56420fa021715d59714caa105c946874481b720b258592fc14cd453546c3b657086f03538267025f7dc42108dcb9c61d697b566e28a52fcbb5604bd15b6aa2bd4ae302cc3daa8e7158d673ab4bb8699d281180907afdbf2755c23f54755f77871769f1eb3e986030ba9b766bd8c11aca31ef87747bb09ab26f5c2e69bef25edbfc1de336de6c665e2e514041ef2ad3f038bd93087e6f278da90c3e79778c455b567cdbc0dfda2ce7236dd086aeb69862ff1be0eb288fcbbfb39a9308e4cca01ff3c0fd47a7dc3023285004f77cd3735c5e46dfb37981542250d5fcc1e2078cf743efe0ab9cc9b50fdd6d65ac17bea65d53dbdf88f048de4bc9d347033855a8f305bc221d354941d8863c23d94c9eea54090a81d574aa2ec3ee160affa0bcd4f1c71369b9a417c3985a88c268b7b097fbca4be1721291a683007354b0cf2a8fb33543ba02fb4b473fe2876c90a769c704c1b9136b5e182c82cf80badd28c97efa100b610c210ed322cd998facc902caded72ac8452e7a5141b4d29a63948daba29c66c19698c07d9d168529fac9d5b9014437bf2d2e142f2ea4170a7c462db56ee58a730c8d130839685223452b860cf725b5b1f96748045042d35e05fdee602207e8cec64097dbf855b8679a531b6b25e6ad4c82493231563e8d7c9ae015bcfef013f92308b8f70d2e79d2b6271fc20928accb3c279b4bbe5c9fc6c43a98b610f3c24f39376a091fbc59746f2a3a4ecb960c370b82b3935c07bc56f45b2e1d24c82e9b03be56e8cb7b776545275add941fd54b5efe6f32b5902b53c9489345be3905d14165e3e70b2f49ad4a759b022efcf12822bec721539fc701bafdf4b338187679d6722d58c5d9e27d93679b27aac335b67d27f3b884b659be053f332fbb4b42f70a6009884277de59d44baebf6000b3bdd789673c663fc976f4bf8c5e48e37186eb270a26e35f583212dfab266a479fd484b54dd85c3c9f6dacf10a490637877a760afe611ef21f770b8cad4246a08064f6bc77ecb86e15db1dc4bcb5a1c3b9c5e004f168e876d67cb9d84e015cd169e68e4f17dbfba9d7715a375a85f6a6dd402c191bf0af04daf056f37d8d7935eb6d96021682bdd165fb34729dffc7a1ef93826dd167755995ce8b2bdb517fbf15317ef4d720841dbe52cb29057c88e894e67b4af3d1582804f3142f07c8e4ce0740515cb79b90479404c3302a10e51a40f91fc716d87c062ed0c94cfe65e9ec7b3faae25dc1068ddc3d0c2fe4d8319bc15798a617a6a8579feaabe6fea5e2b8b0b50368f30170e53d330531e1ae4354edd8c4e98ed0740058aac25da09138b0f98eb4db8f826352d1627a586602551013be13872eb56a426459eb241c158ed2364f53a32bc29d179357116c931ac46de56c765b9d49ed855417ac28155b89527bd097481f4b82822cd0606e3b6ecd84fe30d5168bd328e96d8b5750257baee2337ae86b80c410d9ce3880a315c6cd469d16988f5314351a093fa82410684238c0ef3a8c4ffa7432418e460859a88619d361ced20e2f1e06403005ef10f518a8a9d1a3fdbc9ca81030c323f6f18c62df33f4489044b4263e5bcd9c0f121ee573d69f07fe097714810f93351cdde3956808977406ff37fd6e1c48a8acd354c86faa268c7e5e2dbab763035d6362bafd2626edf3302fb88998ee1ec32b77ae5985351abd12fb201cbe89afacb95274fba834af289db09ece544cb4b6e26dedb3b7e4ef31a6b26d379a3444932d824c58df90d0e1fa34ce2931f0e76d48fdf20f1976a6caa859eea54332da6a7dcb6099e90ca77e72bbf4c14d50137b19a12968723834292ce5f0eab2dc1f7dc2a14507d2bdfd898995209bf5f2619cf31c687bf093752bccfae5e8099e6e09df26764ff2e80d0d03d6e2746a1fb881edf551a2480f0433ddf68ec0be902ebb1a425c0a156b4da8772ce49c60c448b2b6404435414529fcb62731c4f7dbbb17d7d1697ab99414edccad59a8937789c977d6fa990df11b695543e8070311b3b1096a2e81b9197cd4c9559f0881a27c3583e81d0124a59f7bcd870ea98a3988b2811556e1a0266e15e525c0085d6236bc1bc13a24f436068bdd782ab7773e0ec0cfd3a87b63edcc4b465e2d1064ca9cefabf9a47310d8ca142765517f08ef3365db66255bd077720402876b7a7da307f8c30fd7875a645a19d6caf4c62868617acf0017f0c585132114d5da6dc51a68399aa2245a9e4e8fe52c083e42ba31e5fee28eaf34ab2b77f76c4727157a8f8f89b569d3c65eb8e92b852ec76e88b204ed0f966e2297078c70b0ad677f94b372174e4288f94d169a4f392dd2f6eafaeb36dc5db35d598963994cf769ab318b95bac201facdc6da4153594786c6e24743a2c532d12769843605de9017bf99fa43068fe26ceb4bf278e67cc9310638452cd17636b3d74100e3167143fc1fad3a5512b4a4671ea92f2a62d0e2e2e26ea6e306b86f6768cccac7f1d7dd0f7a35634dd6615aab895cd87d586dbd8a841ccc776fdecf414aac899687867345ca06977c3e7f90c0c5aeeec4c394a51445ae14e9cdf73dc37cb2375e7bf235cc75fa324fe4565bf98cf28013af8b72c17f8cef6ac84d1b6479333d28a99b8b830dda584aa85d850bee164c5278d2c2488e899f49d7d5a7f884e7def89ec984e17abc1c5793a9e300728a0327c8b3d92dd638c8c60fb850c583a495642f56628b4b7b75bbcc3e0af7fc23bf0e3b409c7be1882fb111a4794caee6a4d22f5c2d8321070f018d32635ef6875787c8288d9dba390fb301ee51ab9a5c7a9f26e023997d6c25a903b40b325d61c3399b77d50a1e88f9c1b5280427a14b2cf3d34a9f04e3d42b2e85dab708a5a164f76a04134f2a34eeb6df5ece060023c602c046ec66b206844cc0db3b76219f9d539f1a7bbf9a67a56d89f6b67abf1885a37106426ab228296eaacac5a79e921a7b39071f85b981d94c1421dac93681031d37892ef31a88bf65a58cf3a74c72a2466060a3a4e8741c25bf922d27a62d88602c8d379492af56cc2ed7f3ae6d1861e9f6e6c660bec7086f6ab6e1a98f1af66753a7f98e50c88ce66767dc4a009d96e63e485c6cc6682ecefd4cb52f655acbda44d163ca21276d0dceb0e873c8ed62c74498aa09c50426119b98c0f04c56f11838e52c06323669e935c33b9a498ffe95a702a25bd350bd790073e978a1ada39d1e25fc1a57caf17909ee19f6ba37d53fed8fe9bf1dbdff7597af809e40c72fcd82ba53b795b8134acc202d071fed795274ac05486f1e714bc69771652ef4e28e8181d033e0a2322fd416818b8a58d9b6b99351d999c497b8c611843993bbcb29fd491e1bd580017e5e2325f2e745f4e4f8d165c3ad010aed42ea8dd0bd0e2da95bce57c94cba3f0fc96d7bafc56bc8af2b512f876b3a2c5b1803d343cd7925d9f5f0d1c0291bd354ed66d83b24f96e836410229d2af3e7e22e82c26063a8e40cbfd0c187d0ce2f3db5357169a549a6773b01a51eb198ce13dcabd0b31b58757fbccadfbe05c8b8ae82881b7fc2078f812cbe9e0aa9ccf1af3d046a4d12b11d677046c38d0aac96c70be69f3167ed3cf9be6e54f2c4713967e38500f1143a68696006c1fbda5089fa7325a0ace58130b7ad2cea1b2d668892bdec043993f804888a2498393c0d11ecf1aeb51a255ea7d6b99487c35a3e0725ddbedc9ad0531448f34b80ef8112305b592f7e76a9dc0685c64cf01f3b860dde56ac0a4aa22f52fb2bdf37a28317c7036c68769d8610c49755f9a3b02be455b6ce50c12f7817a0e8a0ac295b0e19ae0f65983bce29ee1db4937fd9e4eeb2320ec7b714e3355da4026a181ff2cc3787a39e080f001775ce65267f1d3b1e902c3c419301fca08b5ed6e54e8659b4f841461ad45b9b1f7397cdeea509cf8cce598f7cba568732c80c267ced37eefb8d4cf7bc6c127b198b3e2a3557f8720c2491c3a88dcd86e912db53f5e44e7d08100f1628c4b215e109530173441741e233dd9b1f999228a0c2ad643ae864e31561ea73ccf27e29aff38d8bf0c0642d6c09d92457b9a059178534b826466061efce3c8d82b6e955ca965aca3625038e121ebd4633b644673bebd113092fab5c50117699a60d1a5e7690ed63468f14149ce346f18e4dae6cd93221e1ab36aa384c427fec7a3e937596d99d76295308a3deadbe925dd56e0f01083b1b29808b0693ae7d4b78bd82567ab0043ad373263dbc3313d56d1972357aa9d87b8e34fea0cb2bd8522a17ac7f8433bbd8cd1afbb6824f6afc9d5de2c7aa6dd5e9bab03e9d4aabd4a85f53dbc9851aa379d66f382a66a56d1a8a9a120bc11d0b2137c9fffee6b4bbbfda0871ef14b6bc2234c0bb0b9cbadb7e2e35e3159dd394f2736e4631a317f07207f602f84b2d50f0576b2fbe2104f3dd2a0004fdde3160d9781d5991d941b22d38ffd89272276c2de1380cd08f322d0d14948a90e39b435232cbdda9e015b4d5c0863216b2ce4063e16b2ff4327bceb01c56c6147b63cabde1acf60c2b591ba0f149f8fc87916c06b6ab329c4dab8d2f968704151ab317aa27a24ed6a8dc0cef3f4a6c52de64510868a66b94630381b52e3c0fc371c0d4ed0a3a50fde4407ed9d2a1fb0fa94f14a21421486b0d81f24f4d61dc0df9ff24635b77dd90843c06efe20949780ce8af9d9409264ab9e2ad564e3f2ce4783d9f468072206cd1d1c988aa1e5b3cb212ccb5757e64f9a912b038d1e68e7fa529f0b03703916dd2fa302fb9bf60197b8f3eda3d4a091202c31a3b26064691a939806e4994d6653a01b318612c622d7a774e71300b4b9f17294c830985c792a8e2cf0b2b9819dc711b780d4e91c69ffa4d12b2285039752bf0161666c5e12fa1f080e25df43c60ce1934c7815ea0f740b2fbfe8ac29934b42c31fee3bd259ddc8819f14ea99407bcd08bea55ba7350dea9948804b0130475fff9d0e6015abc07095d4e4a0a20f68ba4c920a5fb22983a6ebdf7a18ac9e3106db503c0207f72d3fc8324ea783a6a45e3738502fc8940ca83aa4e414f63957fdff3700ee7d50e01431f1b3ec5f4fbed9f4bf851d73bd3aa241ada0cd29a2a3e6ba6f49b305fffb532c4bfbddbf9efd42ce005ebbd258ce1f706a691c15ba2b202703b521815694c1031974f9ddf7ba0a559b84b4a40105af4988c3d8c429d3d693af3fdf45a74173b07723c4da78f5e265f0d39720fe3883c4c3db99febedd41aff6bce3cfed13caaf803980bbc700d2c4914c75d88208fe5f612ec571edfcefe5a691e46a18fba904adee6921a6cd450ad2a1792053c140ef0032bbf69fa993ef72e07e511c58755b0060120aaaece9a5844f321a9b496519de19d1852aefb032381a9897dfabc6a064afeba1a768679e36353be66a79a43998593cb95bd148e8eef613528f9e2ab77831c32d10ded2b8b6e4312e15dfc7215d1063aa3acaa0bd7ac60964937cbc4f83358c614a02af128fcb2bab69b4fcdca540ad54a421f69290b94289b8d9bb94129535775e2cc88525d1db4ddfde0c963baafa6ea15c5066826e2dfbb992ec8518f893cfaf880631aa8a67cbd5abecf5caeb28db6c32a0330f49c2011f1d8da2c50ba62f8838d0c9745b4daf0cf5f4faf5a151ddd4d0d07cedff0d3beea7c11ef9fefa7bc0a64a49c55dccd5ab82b0b232e536061468cd3a9d7b572399a5a4782fab0e167eba86cf056a552fa4883694f5960de9e1ff7678740b53f4905400ce6b544b75152ab20543dc5dd1c83579cfd943938ad6a37db0999bcd727da6b83eb7b4adc59cd6588b3c59613113a002b4e485356df6a411f639ecba36d3006b00a5c8506d7cd857020c584165facbc47c535399473c7e175ab0e796c78205e5650b02457761adf112870f651f8193951d3ab6ae6eb56b1c99b2fbbe4bc7f38e69adcbe5f605be27440e75e9482c6511eaea35d1a2b5b4f1fb8cdaaebc00418fa581cb4b5e4b2ac0c509d42aa9ba211abe3c9ae939336c921128072748c210b31712d74f481999efd70e325f1b3c1a7dc4545e9baa3484a995d4bc22cd7da7650656cea060b1985e74d32a530ab16d33d453f927aa34f9c2634262d4c741727b2eacd6a3897da3d2316e92507d0069c93be763b523652bb3e8da6749b02f2a68e5c00316230556278104afd64bdc9cf5708ac84e45d94f64f7686da2a6e68f2aff84f7f2f1090df8580dadab681c94a6ee456d418aaeea929f834a9567f1ac649e814e26d0554013518524160cba63fa11e998d30a8cede5ec7b3b16a4a498ee86b81b4380e205a7a173444f6dc230d4370814098fa422c4857ce506a7481afa038736841c095cc94f300c5419315330af6449154f3c4994ac04cecdac53a6dffd31beb13af35b81542a238d8b93c0d5745fdb28fb6e4d82aa9548d2319194fbd37b006aa1bdbd8fcd78edb06493bf36904172149a0112dab7ec815e356b2a0d8e5022e03825f8291704ff63eb74d1e0f18d315e2b4329bd15fdc5b65941750bc6162de1054a609cb0cb13025abe620b823c564de840cb3cf3064f017692a93d0e6937778b9b237927430625fb40a427ab9ad7cf7b60e8ded13e8cb34e1bf4b860a224b991af0c96f126d10f41e62065d6e8aaca3cbebc2e9396f10b5a60b4b26741f4ebefef8eb0cea99b7cd8c18abf578d50d4e9331c245f3617efa0a02540269bc81270137a90663e6993a97cbdeba39bfadd65d2306e5bf63ba293e0d0afed6a41e2e52761a00f83379a69a058e7108c81ba4fd39ac4321561df4da92cbee026d05762f5bce24e3c4527d23931fd4e987e137047098aeeb82413e01317fb04dc4e344d131fdb13146d2276a131269cce44629068b7154f5389c026cb745bd0380177279adec4639918f713457722b199583713476702b14fb4cb13a73731314d949b89d09ed8584d9cbb09d099e81824eeb662689aa8d88e044836bbf310f2f8fb1c73db248e1040845bb1d3b83fe88f41c98bcb21fb4ef542d3a958a74b9c2f499c8224f6fc576d6e7149e491ada983bf3f24f30b865dee50ff15531776e0a939947a7d821de30426be4680721278faf8f033d780624167cf014ad02f05fb24bdd92c704308a17d835b5fa91a226b22ba99f0cd3e01a8ab90253b817fd18bf9872f1b397e61975672410e91310de05f49329a2968e93e06aa9de83b78ec265c2aae5dbc6319a3b0abe191c424b83aff43c1eb5379d27fc39e5a23dbbe6ab5daa46efb810adeae2d2a34adc0cb6dced4c5f582242c4b787c2b763a9092a1d86749d63196e3e7da309072a53e3a6e02a4d13511ac1a73ef6af557b7c5ca87d0adf4c8bcdd621b930795f124ce134170ac0b070912ad424edd67ea5aec5cd3b1ac0a4e42388583e5b7ce6d0bf41a0a23170e3622352b0c6ebbd04f0aee0bd5b8626cdbec2492b89b94ec6fd35ef9f617ed0527415527691450830f4cdc0e0aac4b75460f8aa905ac340834baf2dd01405d5d1f2f30e1e17f3a03f0dfe503e55009307e4f3082daa928b1dc14229d10da6d85deed190c0503a3544c861ff5bb7fd247ce9608e505b97509597bc6b5ef49dcf92adb1916dab2816a6fc475eea402e6f2f804d5ed5760070bf6886689fd838f468db62d5425970f1b0814e6fd64e329c31e022c98cf915a14a108fd36876eeff6ec17cc8e9296bc210ef312588746086f46696111d2734a08e84c56b84804082d6437275eb28d3df07b45cf196e2246fc09b3e55711bfa11e2677d689cbf3410cd810974ac18a0cd84bf02583080d9f0092d8666b162ff057a231f1f99c8edb449964c24e00e8df1999022a0050f42c9ce2a2fa843eed6d67e6563ee63c6ad433651845921ec6aa9f3c5bc2bb571eb6ed9554a232c8fff0357c5ae840dc0edb8e015509213f08d0e23c3232a5ff1caef191eed8fef74016a1111c910c48ce5467eb0bca22e9706507488668cf7501154963987b3da1c6843fdcbcaf37f28a26ac1c4430c12f2abc2aec74f2e6471822023e3cfc680029d04e0f0cb0396705e1c62b21b3e71ddf495892710b8bc44d3645fa5901fa7f4292a6afd05ea11bf2253736b7d57c7c20e68457a07bdc9f2c31aab7e7fa1a45700013b3f364633ab523a0c43cd0852722c7b28ea6d99238e75b469c0bec42c58b7181e812b0e1cd0a9a59e7e29206e65232a7abc396171f23c61a470fb7b94d2dc6ba45628259bf534fbe05d2e6a21e3d5e3fe23082029139915094020277b158e198df99493b04f10d47b525990c0298837bf73c79e43f96e32c51cd9398cae5b6997a667951df360610e85cf34c5d525d0b0d6ee49f204c7c6487a499c20db31592a7dc5deb4901388db473995f5e795102826303b6a259f708f02f6400ee5c1098d5e312d9e637bd7e7d59fc5347b5052157c21e507d7f74ddd5cc3848c912ab0c435ff9a3a5e2425e3f30756d1c31b63212e246d778043f58a3d1cf9e5362740f6f99f8913daecf31f4ab6d8f95c2db5acf6bffe1af4bd32d31bd1450a2e199d6172ec1732909433283e0dfa1cb53ff925a110e4576dfba1d19499630d14e6215d5ab966dbe60d4645c0e24582cef8189c6c64699a9c3e1f9e008c978f2a62a639d280a7c3246e5acaf8088fc03f33af9e6f130352df6eee0cf9241941b6982841cfbc0cab751b8261158f5eb1dbfae2129eaa4451393aeb4a0c0db00af0f05367e1f5286079bb4f727078f545a580c69adcf2238f4833d17b51348a0fe6a624284d7b72d04c6189d64cc48b206cfc2e72b223c2e89948c87bc93766bfb1a0b0ec857c342b148ab67f3f8c17d9553bb3cddd31832bc780090ccc6d7aeeebf7450da0351782e8dc9ab2015951ad97429f6043a92cb721b18394aa088a8868ace569a4df5856d400694f0ffcbb2bc0f095e097015d5fcad111d39b0763d28f3da0069019fb85726b4f3f8c7c0c21ad7e7e643ee44e91945781b627c3ff75590447a9097c693ca5fa41cc99b7c29b5ef71a699f2e512871ad5bc1953c01933aa1d479b0f7360f3d57bb1c5c1314c8beabb924bf9b9651f819c1563ac542b1cb5a5efa11583fa1ced8021ebca88f23e6afba004c656747c168f4a7ab0457119332ab9916d443fae9aff03004227c7a4666d4a5b68ee7fa6986a0983cadef24f30f057274af4defaaac08c6dd353c3c7f4307451f1d9b03b234006abf03204e6243e09b5c57fa150934505dd42f85b9665cb32599c72b5d1fe8411580691bc9f447f1eb63503fbeb4970150ed6c4f2e7e71540255826f4841b0812a54238e720831dec20d208acb5e0ede1683ff46483209e26c966cc831907eae0d140323bec59e69a9f075c5c83de7d2096f030c0ac8b164cb1299b28c41ff293de6deb152d25f60e9429c44312e675ad7c9e224f3940228e3b7ad176c23f751c511960a6c974f78e44c8c6558508dacf4912e4c1a7516dbc0a0065565fc8d3767fbf17a3f8d8f2312397ea89c29d2da54ec80d7903cab31f83cc87c205cad849e894b398125bd08a7de7275534342dc99065ecaa97296da41562e3897ff4863c316bcc01d3d993d647e824b396906aa8bfa1cd527bbe22dffe1e86bb66e8199ea72ae953d9c56a9a246e11eb00274767ebac7a699b856def1828e1b1a2a43a60f27fdab85aa86a43d2b646670146df6750271227d0799324802d8c5e64f6e81573835109e69bd80aa039e1385f783d6f1c55551884a76fec1ebf24819aeff57fe49fbb77589fd8bb541eb17514a01c39149610b12a501b3402952cbab9c880ab38d86f74fafbad067acf497459cf7fe0e5a78671c2025b9779b69cf24beee816c548fce2a2d1cf478e5e98e3893b58734d5967f855260e8a75954a0674e6571f842b1c684839b6692486211c9f7860e9dae0e1ee5e3c024fe931476af4f7054e40c134fee0c54e862f77f046f32a17c8b29886471b6d5b9c4d5e1c528f3c8db4d68f480ad5636c9172ae69b7df0f4f4f02621f6a4690df330b58b8e4389cdc2255d6c231b4d2e14e9444610d70f630de28cfc8d388eaa5c5701518298033d37a0f4288e90d007c0fb3f38468eed40312dd88b723b7183100974c4960635b1840acffaebe5343e7cd1aa12cc8110558e66d4a3262f802f7de7596c39af5b1c3eaf8376c9fc1c7906f3c70fe7cf0e3f6573739b2f14318f4fc342381137a18d9e1c887046086864c59a3ef3634cb63d527bffc5f1176b99dc59f0efcd405c4e23b81e742cc5137e16d8d8f97956103165b7409820d7a756b231169cfebdde334880ef156c729ffac6b544808d00c0147a89a28fab023b78c8072015683052c2432f4d17514767ba02c208f04c1bcc001c76a40b755ab64b87845253bc90099019486eef1aa041d1bc5c3a5bda391d0468529353d2642a94f0b14af3bff03a90217a94b4b2d8b5c948447d28554d555542ca0e9dfc2f5ab82c80d29b1b48ba83ed59c6c19f412947556bbb23c749bf13923348e4dbbe9822e2dea5290ce7385aad0f2f6058d01168641803b0318770158d325350609a86860dba33d9cb2643a976d38b7505db8d2545f3eae5c9665bfc288ac86df4031ff041b215e3ec810407486c178174556d0ccaf199e32903cee43c380f294c4ce9c0a40905c0cd85a08e8669f382063bbf56863f530e4b5ae086c455b8fb0467aadbed5e16c8e32168767ba969c8b9be0ccd002b386ebee80643644df787603f89d93927b97aa3440740e32251565b81152de07b8db7075ef295171ba3c8d64e0cfe9b6453cfafdcf50892a4dbd93391a6fb3bd4cca48834a8ab2b15452e294c157270e55d37c40f1002e82e08b6d295dd88f4a1f572b044eac94f26c54e2b1fb28cbdbde34d8e9532aabafb49c3951a958276738f7b72b04f68d4c0668a3fbe6dba450696ef9f38381f3fc26608a322e0ef017b13f6fbbdaabc81e07d0e1611f7abb610d9ca62ccb80af66206428781bd4cf6c95824fa5cca34e317291f9e4a327cebce05441179c88563d4d15ce60ab27a3f642b0dc9c4048df153c1f468c84dc5c20cf84ef31d428b8726b63633978b52980e4b93b9d4494d568d57f9629edba2cde58ee36da83a1fbff311ad9822aabbfb660e7f0dd82bcf380e5d52e14585f03430446089df0da9274bb5cee0171b5617e2677646eebd579924804eb3f4ba0ce4a8229dc041a8be037471263c27a3d65fa2a56ed1900737626f4a50c3a416f0a552d45a97ae5aa40010532de1b8e3c1db71800ee22394e6cf7af3bb693ac3654994eb60e4bb1a2797f1fe9b6fc731314d6208ec51c0bd23fa67f8fc7c78585954afa1b655acdc2d3c7a187d069cf6db68a36f0522f32fef0c7c8e5805b32f464fe9273997371f677c4607f5e0b229de91cf53557026597e2daf47ad9fc2bb1a8901a1aa058a0e009f88e3b688150bfeed3ad6039505bcf4388b5496c65e33eb0bc783994e5f74ca6e30feac1a8c607ab436ac6b9e898b121f616c7595b62d02ec0b9e6029a632a6f3f4e9f9d52f6863d8df7e1ade150dd9abe00cb54503875b332a72f3880ac151476d91308adb342da58a41856c473b9628e409883297d11b9c275f5b74a627c5fcc2392a4e00ba0e9a5de0dcbbcda65f1677283bd2a13240556084f84dfb038369b9526e4ee16024859908d1a592da6864c32ec4249b5814912c67cc3e3b55f299bdd1a3045f11bbc7d49c52467f6c36c3e669b8e54e2ed0ed9bcd8facabd7fcd114b3f99f1bb963f1e21a33217c7119b1974896a80379b5d5460fcfde28c1475d17a76ff827cef2096f2189ea6f3afd6ea032db03cae96b27e9fa1e7bd3910a42bccb9296bbf2d64e7c85be4197bd2d8e1da692499d43ae7ba871249cfe60180dee298472340584d4386fbc454b8d43bfc504e69f9609a671036020e1964a7a375469cd4328951a27f7d3f3b02b8a79d752c1ccc1bd405b4dc8fe6d70a192723cb057dc8704fe1f166d77a7ab2d79b42e63a49ffe6f3da35f9fd32bc904d1b724f7ea99740da7e735efb08043f86fd11fbbdcf7e2762ab6cd466d095948b69e34acf9ef6ddd1e0a281e1058d07c5b19eaa553469883805afc7f374cd98a00affdf542de913212ffeb11795994e476ef2a95e327d4ec54562bc3109fe483ffa7edfd7560c182445e47491c7bb0a83379df600bab2d5463b50b026c301f3ffffffffffffffff63c711bc99b537335435f2654a3245b9832accd41affeb2d654a49a694f4716a7ca787510000000040f632230f62044004430405f5d100a5b9f2b6a3725dbf9119945312a5c792894dab874c2635f879ec98b1821a3d7a32d9e20b191900e3068d771c37223240759e09b1956cc1472c76d18c9a5d9d9019393e60c1c771f79c9277bccb87f1f18aef3f43c5e8a9fec73383041faec0ab6c055a9ae39ff8578b3373f1c18a935c4db5a43c936a43d08df3b10a3b98e68b9762ba985585a5ae37db612a4eb73b96f3c457e71b1ff84005a7394a673fe6998febe1e314faeffb6d7b6d269963810f53bcde1bf5d42a05f252147927455d8b10170b98c002b4f82045fe2533a7ecc728bcf439fb37c4067f4f261ff810c5e5bdc1adf46328e5864c263a5e0c2eb4d0f15e20e1231477490ba1ae2af4e5b6d062c7ef601a35b8384433eaf0010aeb43ce9be9bafb4e27132e3e3eb1aabe7e48338fb57cc8642283870e195ae4e1c313a885572c93367652133299ecd801818f4e1c5d4487ed901a54cc061f9ce8b484798e2364e71cdbc4f571b23c5547135658e7789babca1de38f4c9474d60a1b9365e870f9c04467a662f20b2ae5fcd3c725b61cdc2c5b5e7c58c2b03995e4e9121be40fd922870d0c7c54e2ae328b0f4aec514cbfe8bea449d6101a5e7c4ca2eb3453327f0cab1c53810f49d4b9f7a23de5062f33128fe7b8334a9ea6300d2470ed51f649542e5bef11fc9cb814a5843619f290c9248c9f4cb608a3021e984c72d8405f7c3882d141f5d99bb01e191b61ae53a14a5376cc0f3f18d15f30b973c2e06311678e3532a74aae9e234594b4e61269a54a04d2cd3205112ac6841c110525975214d92a99930e91984c264388ace64e19a29891ef1e3fffa25b0a71851c0f7ad6b2091d2344a952a8bd76c56852c7fbc72012428b2555cdec8ca520da5c4a7512f5bafb74200c3297e55c6b5a612d209a9311afa9c5cc4cfb87c4f9d85858d40fc79c153c59796cbc8c858f3e2cbf217488e8f980b0ffef921b3c9607ed01eb8d97b346eccfd37a5864b2ce7879d95da63c30526468e9a4767ef378f873a4eeee7aa965d3c71d501ff223dc538c51b5c3a63168ed0a0b3a89a70efadf2515c3c52d15111df0ccf4e1594e7ed6ce1c92ab172b9a3457e82439587e231f546cdccf751c8c29ade7d2ef51eb3270f08245fd5c2dda496bdec0e66c1b297ae4a49d6e48e7532a638ab11c94df0637a891d167ea4f5cd8c0bdd9ff758c2aa1d51a7411164f53473d588a1ab24da754a5af5518611aac3b0b16d52fa8fe6ed00899f12ea0b1c3c6071a0acb8a6d5d7bc162211f67e8727814d57ef942da66f0f225fd31a9d4a28417c285160dd02c78320210868f32649982ee114bc1e5e5ff2083633b9b7f37848fce8ec14bbe31c99361b92486b4e267c4b8c9a5b00943953da9f84c4bdb2a7d80214f27635edbcaf9aa4326931938fce30b263d17ff963dab7ce3c30bc720af73679aad5dae0bd65a6f569f850b88454b597a844eab978f2d5caafc6d7f53ebf2aa852e7a58129652f292a68f2cd8b5265653ace3f6393eb0600a8b5d610bcb8715cc98feb26375baafb60a689ccc59b2262ce81115eeb5ca21b38ef6f49a291cdef24f34cf49580e0d9ea5b56302eb4ea1b183925175bfc439abefb7cfedfd3f4b94c4776cfcfc58ff1f3299a4d73183870c2ec28854a2ce9923afd976bb6c8e50c28aa7a133e8adca6512d7081f33bd2653cc2749b82b622b3d6fce2ca64870c142799b2eddb039134420c17a864ab153e611a9b1d0bd95b995921806114798aaf6a6f733e5d1da8c4823becb0a7e7e524da69611489755cfe9f736cc5cc4155f3f87c6fba4fe53847669234fe5de0c4a8b2442d9ca529977e3e72d7921238208774fbeb8c854c1e45291439c35275ec7d46e38051143f029984c8d7f16e2d91d5d27de64f4424218f4e4f582c7aaab6510899239c9dbd805b1595df88bf00422d78a1be764e5f07f7f04108cab5bcc23cf45e42b83c81fb02c9a32d799eeff5009227e7835cea818d36792ab46fac0a66f775f3e53d263227ce0fa6cd4ec6d2ab2073fb6e26288b6efa0ced08123dda011d1033264fdaec946868daf51012d4610c943a1520a1bdb2d99328ae06113dd17e6b52154dcc81ddabb11d9992b4bc7b88b881d56d9d1dab7ef2c538ad4610d2da5de924a5177072142872a66e557b1e41cd6b89b7a543a15d3c22f64b8175a8c11910332e7fba443ef71783e89d19429b33a5f040ef955367d9753d47f1a79c3d57632eda5fe687b45dca065d9d0967dcb74e13674425538ef9c299c8c61c35f420715f4e77042ac6b3077e518a273ec6cbca8614b17a36ecca5ec6f4fc3d5395b8aa9793bbc194143d9be3e2ce9f3acef2267583e85271d9ab744ce30226660d4be5d4a9b7fb69e32986663f25c99ef8890c10aaa9dffd9a36352631019036e59163cea262206342fc54bd4284bba0fc37e41cc9578336da282c12f7de92dcd27b15b46bee0c9341e9bcd3758f65e483d064b6de68d4817eaa46249753439225ce064fb66d9be5b940b225b388a922fafe9792b83225a286afa50fec1f4aa3d59502da6d3a965feb52f16fa53e7ed2ea3d3fed981c815cc9dda466707f5d182112b2c261a83e6faee2721b32a9c2fda7e5b88071d836654b8633ab1c9934e69b43c8536a918f3e651bfcf272970c94eb763cc1c19fd285c2a6bec9ebb2cdd27144c0fe6732aa3872cd313ce63df4194fe4dd284c68838a1cdd0b6a7a26cf498479a80c7e7512aff52e674b120c2842ec77468ad48cb1cbc41640927cd59f3a624bc4fe52801a9f12fa8fa6c56e52249388385c5142c8a708bc220820434799645d272dcb03176fa1a59e4086f36cfb25ec1abf205821c3dfcbbd841c408777ea83c6271a408e8d0b76b51f244473f428492ccdb980cbf1a371719c2154c344b2f9c9e7e224230f4a64eab37aff6728c9eb1c5094250824810cc554680b05719f9815ea5457cb08d90b5fdb7584988233d6043f65bd63d5f35bd04223c30b7c3fae73d99f5ef1a911ddc9f39dbdcd38390554407495f8fa67e71f5d42507aae7cc326776488f1d336e4470b0a8790ed6496fda140de9227203a3ba9645082236b8535d52d1e99f711a2d446a50f22484fb77ec02f697bc65ca46b91c95fce1f0112ac5bda8a0da1c3bb4e042e20746ec5cdfdda7c6a4ec4351f4f77697dade8f0f7726a51f937e923d94e5b4f74675f852b1440f6e7ba9f1cb380f9191e4c1d9f08c0d65aa40828774b6bc7faade597b13437207362b9a7d2cd3396729b1c3b33e567372d7c159b78e65e367591d3adceba7d62f862390ccc12e197ac4c77800722091831e2b648ba7febe9d5fc70c491c3af35e91f9382d32b6430287375f9d4cb10fa6b22279037bd2b259584fa9aa1bb4a43193a6f8aa974bc864e2ce6d40943c212a796c52a2d285840de64e2b329b9a91bf460f1b220083c604269395ac610d1a4ae7d6832933757c08d2c10f8231780438581082c9e401123538b2f2ed68f617b58e240de68ae7c713fdf16e4643372add58d21f34b57a86327c338eff0975bd49ccc0a71a9d2ef48b78d8372029c3b1c12f34c89307b4e041a3460e10e8e081020919eadcf66fdf41c9df7c0ccd7b69321544625893ccf9fd663cdf52613834340918f47cbdd0e673755bf94215c4e9784258d2f7d10bcf688d49ffa90b68d15be7ae7a61bee2c2e6a24c0861f9b9440705922d14f734a3aa5feb98122da043768f8b106dfa3259a83b54b88b8fd6a72d30d804122c74a92ba69e0f428d90864c262cf81b1c905c81eb8cc973de0ed199ad8056853ba7ac245448ef091954535432853e6fb3ee575e0abae8da59ea1433eb1e854c9e5c11efa2622385c2ad3632a8ca4553ae3ee1349999c23e9ad89f244ed0bc2a9d7e97ad98a909b7e9d99425db3fc8cc8433de4468d937b53897d0f657163d5b134a5c12259c74664fd93194044bfcefc6f45176794742bae374f6752b68cb2447e0f2c8becff92aa9e718e1cea6cdf306ed752a2b42bd15b7dba2498880e6964f1fc784520b920ca1942b8ceeccfe5fba2304a46fa65231ad92205c6245b4b4893c55490910bebcd26aed9c67fe1fe8613e9b1ce11a437c3eb8848c2bcf94dc3dc87a70472b2f311645064dbf40c2033b7fb85d132f5d4186816407e9a01dbf261652fba3036c4ec6c6cc550e36999b37ee6e680b1e090ecce95e4674643dbd758392eae0b1465c890dce31e6bf94115f88a406bc968d585ea60ebe9640428363dc93fc1cf1b575496680e6517bd3294d546c2690c8e08f31fd547bda541b8dc59e2b2d9c9e9295db4760815d926a27efbb356321afa3c78e1b15984c3a1079c5a2ae92d08da25aeea481882bbe4ab92be3272d4274ad502e5d1ad9282b3025369798b8b6b4ce2af0f4b84f176b257f2d22aab0d2690c427f304fe68c15f0ebe8124985f149291ba15472f0874450c157980ffe494b6af814954ca2f516564f8a6c8ab5de4bf5072d32eba514089bef7b4bbe0e22a47043c5f4bdf788a7bc476414a867fb20a47905cbed0511516c99b55068992d5094329b457d2295675736724b458d239ee8eb3cbfebe4da732cd2895c4cdc3a25939d326d428413c8a42986e5ca25a6f14d74e1bcb2f2a279e536a28933aaabb7e8f49ae417c9c461710d28e680530eb0ab4b00031230460d1e2160d0b8e180ca62330b5300010230463b2002001e3b7a7c6000017830b8071837b8c60104b043c7a31e8e43470e0488000038e3002062401a3c7484eca83163060240c290c30602038fdff1851703870d1b6fc300205e182307b2f1360a00d205a4c1a346c80ee602d2e021060ddf02d2e0e1386cf498310301205a50a3063f751ed6cdd51073d66332b1f13a668841c367f8bb80460da6c183870e0d806401b11dcb332b650a69c1025a64ad9bd059c8af80433099ecd000c8154cd9b52c3a00628553cf44c5fc9a31a83c04a40a7e4c29a6a197dff7a2c239ec57a650865d5131af94b54529386a3525f53e470151337a538eecb44a43814b1e948efdb9ed43e875708e14803cc1f8509ab473b8d0310f994c1cc409c6768f95d2db90c9a404204d489c99380f63d722315630638b2dbec8c01732322083478f0da4ffc03b0e0e4c26ef386e08800b204cd025346a41a46aba9550e7caf63b4f52fcb424b0f1478ef5b89a9b2c44c6610f06c86800031680409090c8502664b0ee17d1500072046f34b6ee74108811cc9f969793bc93a51990229474ce9b41554e336f01214262bc476d84167549053284c3664cf9a9e1fa520844088ea5c76c2aeb86ce2d4810524b2e5b715996e2a80304087b58f99dcf740b407ec0ee5f984fff5a6ae117203ec8e594e7ac1473b5e802203dd86c574ca60f32a7f33200c2036d64fcd8a33aaa560a6407798b5269d374eb4851078f1ca147fbf71cb8af2d2fa79acc4e0807be99bcb8289a7232e606c54c0f8fde49ed5db6815b3b6b31f4840c425e83828ff20aa66fa4858d06c9b496494e33aea70b32039456caa372264da7462032288cd6923d7ab2d9c3b1c0465a105aabea54b6b02847598f8eb6f1ae62ba90bce2cad8b832a22e3c6657a4c2452ffd315b5aa6ada872654c7a129f9594ac30ad58470b21a33b79ab6077bc4d54b83379abe23c9b649221e2c36a8e2415a6e8fc5e41f7a840b7f78cf24ad36af914e5ea95941153b2262331852376cf7cbcd347cd7a21294527478a522763a47083e7e9866a478192dbcefb59734e951445d66ed24ec3ee4fc642818e46cbda9aa9e4e3a0f8dd4bc526bf259f30f33f2e79a86829ff9ec8346e989d585a27994eb0eb223f05b1f76c6f152734191795992526f36543b289826a6a7c5e0cb339570e89260ae671633f08591b4d99489ff5ce76dd09a53d98f0def4aaf69297f052c6d4222a6394aa382496584d85ccc83ca9716208482ad16b06334b4d9a2a6d169050a2eb60c96c473bbefe2193c91618904ca21c3fb95816b5ba0d874c263b222091c426f29bb694dcf7ca47a24a774a49cbf6ce1766010e0ae84812487c6ee2540a619a4e263d22913d79b2a1491ca186f14f9a94f01b1536624d31f7bcd69b3d6b8cd0bec34eb7da2799fe10c922ced9df33e78fa9744e421245207ca35f5edc2402cbaa3169954bf88911715c129bd962befe880fc1c994d3a47b8712313b2031c4699f4a64eb66e691e97830c0c051030492423432681cab507ba1cf1009214e527b430795b2622c07911eab0cd273aea0fd9608029fb37072dbcd65e43878dcf0421208f374fa3d91f76f694b00118477a823f8308ca2300a82188641108431df1cb31148305044188d464332a18cb2ab0f138080470351912c0e8e844181300863208641200482108441209c6288528629e9b5030deee9471eca9a3da736fd5fef3fa01b998e526de4a86340d63bb23b48387ea6ddc2a0a68ad48d552f6f4b27ad08fa6b0fa9b5a59f77cd03640d5f9a94dfc96d3a412ab4bc6e0a5781f73c4dc63d8f69fa0ef631715a67e7e22aa7c459f10f18274bbb20c8c7f1eb55ac46166d9451c8eb402ab5c5d839ede9ebbcaed358fb9b4137340ba28676921a62fdec0b0f445eba0354ff10f99071f12b736b3086505beaceb3c92ecee901e7cb2eb372931a753350d749e883e2c7f356141269ec08fba0a35bcc814f0690cd018f719a3a6a06dabc688d69a69db4f654dbbf988a305cba3710a176ec83810e7832fd1b02d7e09286bf10c6377e3712ce2c904c158bfedffa5fa3e7b145e79343182a65ad72ca0c69d131257534506e8663fc82f315de518e02aec8ba90338a199b09e551ade4f14802f4fe45393f91b240510e3244f4fcb04fa6b9f46e9160127bbb784f183669b0cde2588f406ca4de29eb0cb1347af2a6ad51cc862d8271714fdf725a2dda0048e99deab13028486b48a0c75f99b65fb6c9c67b5b6f4162a0af99ef002b64610eb6203885dae21b7a1c26631efa8d449b3d00f93fbab16c2bf2ebf225b3b2a02fcfe33b6bfbc06764c9da6c891865d372fea623c63a2fa46effd63a7e6939f492c6e18437834059607ca63d76ca8db1d757abf69c5438600326eae327f3cf52683274d9ff79305a10766cb9b503fd3b212332a7e59c7ae2b8f77ddd764b4992c71059cfd1b732191126723b5d33204174d45a2dde115880d0728091624ac18ef6fad56b7ab9bd664738be9fe7e45e5eed5a1b927926fd51d731d9126b3d07a252c8fac148437c6ccc9bd104aedc75284153e303bb13b66961d1d4f9a7b9a6133c039aecb90a91d0073be04232b9f95051d376cce5122b8f48dc9dd54a729d65487b29be46d40dec4938fcfa4b804e58b0f16320994931f7414753f28cae4d5137e4467d00f19c6a3a1276242e390b3bb0f928d3f1a18e8c086e558dce10d3105c3c6d418cf2c427f62354eadafb9c4692e9438b0c405fb3fa12338fbec645aee3c34ff98ac1bb815de6f3c7bae8d2516b1dcfcafe5949ad98034855a279652f78d8a56dca5ae7815623a864e60e759d2b121cff063a84a02bf419435775d043b1ccae7f869f70e84287e7e792cc70ef204c0dcbc142a479be4afd91bdd026d417abd5d1c0b49b61b62ff6a29a015e4a9b35e4d7e9ca0b8f506c940972de511d2a2e052df225bfd34c1ed26f5549a63a65d5be012105c555b40ae74398218700cbac039da4ace7312f25e56b344a470a1396420bfbe6164456712817b7246e4e3a82b14935f5a81489bf37fadac0db335c2bd8f870c6ac85c80874c99235482d0ba1b1478e60c0b373b672fad7d7c84e2f70140bf85f8b72636fd68f2b38aba3611daea372c36a5217baed64306700d953568ca6567a36b5e94510300ec194e7c7a66871c80e9ccf7804e6c49d6b78219001aad84c3eeb90e6fc0982424b26558f16858181ff4b36dfbdbb94bfbf8dc04505218976b96e51a2d1d1f2d2b0c3c5bcaacab9c5bad9fdd4daaf57ceb3f790ec80e685d11ef493a01a59be7b09e6c9d93ec3827d04db2d5a30ec54f706263b0802310876e22fa484d1a85db582ab3a6c01f88389afa8eb43e1b6222d38e938a7dd8d4a10ab1382fa09b0fe49a0cefa428062e865881d1444688d408568122fb3111a89b2071a93ed51f4f6f92c6e85af0707e3c0f8bd2b5965f29ac87549692c4285b71d55ce7125a0ce651d7506117f3fe13f3c260dfefb7167cd33d5c6ed0b1e38138fc5c9778d49298f53efd826339d26a364ffd41dbe700a7b50aa941a6fb2beb8ea7734934921c1b30e0bfd11dd0f5729918fedf5ed192abe8684e7dbd5a3972657043a4cdc679be381e9991c1e1105e145b663fd808d48dd2804dfb511d792b43537c9d6eadd3e789d29f041bdeaa7681802e7b45f37bd68679827506a65b12a4fe45be0c8ff8210955239e4b93985f0711b9eae64586eded38c9a7e6177c90f9004e8d9f918e02eef1223a614792eb5ff53798b7b629f2e74400393de7220d1ad38ed66b9c3083c1e2c6ba793b826b0ce4f00140b5d761b1fe722e3f92fe48f35f748645cceb60a19a547c6bd7db0fa2ef3aad4e30c4b4fc12be6d5ba894624816881fcb65152b692c47c89d5e6b478c35edce81631b00f1313fbc144d65c06941e004c03593a02de302f18d8b776f794afca3d7588a4f5841321e09f8a10eace27146bca0451c07477167be76409112d2260f291dbff8ce49b738221629b2fc700552e1872b7672f375420bd86e49095cb98dab303c09e168a7e8ddac4c11a5d38fc98a4a475738c933bc8655bc4e03e0023fcdfb59c689866e8a7b6e42829e111826474401eb4e89ef83e0a3b4de8d58b212dff48604b0d64a4d520bebfec618168de6c351462bdeaf943cee9172174eaaf41f0ccd30bc14f635014c4b8d2f38ff533ee6e911dbe1a2303e9903cf3f103114d6ffcb90985e9b3ac6419a8a5a1db697c38a2f92a3f23fafde513c4eb98fb9ba08b3d5ae0c70e99bbb6c3b3cb6ac82916d22a670cdfa83969a92d06ee5dfcb52d490f988b2e3dc8de703e141f820f64d2bbeded8e2cbe004c6067c41cbf38fe85e7e3719e74c24ee0dba12f602ba23fe96866afff940e426d4a0b7eb05539de16bf4c72f9581c5d596531b15663a4e3b8ff727e221f3ebf3bdf0e874b902b15e183368fb07bfc948a183df58b9a9a5339ab5cdbb97d92accbe7ae0ac10ed2bca05350935bdc379f1033f4ca7a17f6441d5059705be95cb02edd0a2010638a9537354e44ce49cd13ff5ce1e8b877ecfa6aec333369239996670a077c7d54a4a90ef69934c3ee2eca4b2a77ab03b6e86d5fad0dbc1b3e24bf683dd25638a4cd9f8165de58c93607e68d4db30eb5c31ca149690432959999830dc0fcd050d4bf31c94c912257a17152ad635390dee3258178fee8fbbdb335b3d88b4f7f982a82035704ec26db8bfe297ca8d148a8b0f52dcf1a1145b12440c7fe746f48d057e052f9602f58d56ae92b43376b411e0949d29e3894094667c283983628ceb0896209e0207ae4eb322e61875989a85701bb0049b1d0b316a5b3c58e27b8fe8d6c05503daf1e9f438e0f447d85853f4b04da28fcfab438d2f29d2ebab52d312ae467be01de2b10e4ac44be1da11cbce7f02ea6b72add66a693140dfec0b8512288da7d1ec8257d8ae39be6dcd3a3b79754e78de0038ea8467b1048b8fc2d828eec665bad799db4966d7a7436e6705b77493fb2d2db042051e63717fa350bd39a697ea48dc65761be624fc12df8c842984441744cb9be9d1a920cc40ada3bb630f5666a376cf31355f2a5f67d906a928cb8e7804f922cd777de0336db0b0beab249714cc5b7e6023a96facd3169d79ce579c2a9dd8f8c58f97b8d1f05af7714b139f8a4e01d98db44235fa82f59a79a5f9ea425984dad7d21e2f23c77730bf42577121b297c744e1f05403c74f684f64a479c3f1ac80458c2b60822fae4218f12438821d9dc124fd79057511d5943e3b4d29c10602d92a79638fa9c38261ed2f274d067ffe66211b527fb0a67078b79d60901101286a484855beb8c414466c81c62914ce5c766116a60af350f1d3c9ac260dc48bf97d1ac83b2a0aae73f84b6458c6b7840e396d40372388e017a722267ee66b5de17290f14ef4342dfee1afc68e4c96347730d1e6da9f18fcad61e854ce931b423af8773a1af598c8d6b672ddaf1f0ab354e749d7c2ef4a96e318df8bb12467008080204159fac8b3dc0bc019483968bf98da2cb7b554f574ca8fa1126333d4dc3f31d44bb30bc065b80622c76f32420ae8fd92d27220c1af653b550f76e91922febeb791904b3a2707aaa50a45762c14fb737fef838f711864e982d3621904ca778544fa75b6638d98781c02d9c5380945079bf8a8cc3588ef0223943ea68b041e551c92fc4ea76a3072f8922c39e5cbd91c4b39df1d0865aa07b78c28738bdfd45f0720092b59e469c6f1b7ee9bf6b5dc1ead44e81716e6544b4cec181cf65e3f3fa37eec5f6f2731ce375a191528108ed8a71917ffc1745a9305df838d5cc00bbed5417ee04da8a2b92d91f8c8335317a923086442f710d915af10db3cc737523076e3f7fa53e7c7c5b1a9f3398f15c0ab8aafa800fdf9e6c85a3e2821a4dde4af2fdf09dd79c7ade3f7758f5d602942a2cf7a821e831604c139a4814e1409d11ae759cb2000f2cf0e341b30aac15f649ba09d809f3acfd8411888054fb0e34723c6cbd3b4a79b57f106a533dbc06f1546c61292804f78be872e0a5c27bc8cb7f311439af2c6d16bde4ae4409fffe7b853b3f85777eecaa1529c24bca8a5aef037a13f83ab00e6ff4a0fee3b3492fad9eecaec912aca8aff98062606467a99d4c3c02fde55df896a3df1f37bbcaffa482b5115a0bdbeae1f86f01e7144fd04dfbdb177b6c7463b52d03a8e1a02a0595ada0331f88e43cc8d065f88eb53314cea708aafaf8087d905c64420f4d8c5af4c8a1f0f779312491b796fe6d657bff9d60d7aa4d2392fd367cf9f66eb3a7e73d4dd1719c132cf7d31590f87b83e9198d3be40238786078a7f01a09", + "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00" + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864" }, "childrenDefault": {} } } -} \ No newline at end of file +} diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index cf0a83bfbb41..cbedecf056ee 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -102,9 +102,9 @@ include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); /// Runtime version (Rococo). pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("rococo"), - impl_name: create_runtime_str!("parity-rococo-v1.7"), + impl_name: create_runtime_str!("parity-rococo-v1.8"), authoring_version: 0, - spec_version: 9102, + spec_version: 9103, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, From 00c478aab49f6631833cb8b1467725a6a0356635 Mon Sep 17 00:00:00 2001 From: Lldenaurois Date: Thu, 16 Sep 2021 22:34:10 +0200 Subject: [PATCH 041/138] Add info logging to dispute activation (#3870) * Add info logging to dispute activation * Update node/core/dispute-coordinator/src/real/mod.rs Co-authored-by: Andronik Ordian Co-authored-by: Andronik Ordian --- node/core/dispute-coordinator/src/real/mod.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index e18501b64404..b321d67022ff 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -737,9 +737,15 @@ async fn handle_import_statements( let prev_status = recent_disputes.get(&(session, candidate_hash)).map(|x| x.clone()); let status = if is_disputed { - let status = recent_disputes - .entry((session, candidate_hash)) - .or_insert(DisputeStatus::active()); + let status = recent_disputes.entry((session, candidate_hash)).or_insert_with(|| { + tracing::info!( + target: LOG_TARGET, + ?candidate_hash, + session, + "New dispute initiated for candidate.", + ); + DisputeStatus::active() + }); // Note: concluded-invalid overwrites concluded-valid, // so we do this check first. Dispute state machine is From 6e32f5868a628a64519ac0d8e8af79eb1c3d5bc3 Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Fri, 17 Sep 2021 05:24:59 +0200 Subject: [PATCH 042/138] Companion for Store voters in unsorted bags to get good stake iteration properties (#3413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add voter bags generation script and generated values for all runtimes * VoterBagThresholds for test-runtime * semicolon * turns out the header is called file_header.txt * perform benchmarks to get real numbers * add note about when to re-run this script * Suggestions for #3413 (Store voters in unsorted bags companion) (#3488) Co-authored-by: Andronik Ordian Co-authored-by: parity-processbot <> Co-authored-by: Shawn Tabrizi Co-authored-by: radupopa2010 Co-authored-by: CI system <> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> Co-authored-by: thiolliere Co-authored-by: André Silva Co-authored-by: Keith Yeung Co-authored-by: Bernhard Schuster Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Robert Habermeier Co-authored-by: Robert Klotzner Co-authored-by: Alexander Theißen Co-authored-by: Lldenaurois Co-authored-by: Qinxuan Chen Co-authored-by: Seun Lanlege Co-authored-by: Denis Pisarev Co-authored-by: Andreas Doerr Co-authored-by: Chevdor Co-authored-by: Tomasz Drwięga Co-authored-by: Denis Tsai Co-authored-by: Pierre Besson Co-authored-by: kianenigma Co-authored-by: Bastian Köcher Co-authored-by: Xiliang Chen Co-authored-by: Hernando Castano Co-authored-by: ferrell-code Co-authored-by: Shaun W * Try resolve Cargo.lock conflicts * Add temp VoterSnapshotPerBlock value to compile * Improve voter_bags test with nominator/validator breakdown * Remove miner.log * Update README * Module doc comments * Build working * remote-ext-tests very WIP * Remove system module query * formatting and log target * clean up * Save * Fix issues with polkadot runtime after mergin * Save * Some updates to runtimes to make sure things compile * save * udpate weights * Use UseNominatorsAndUpdateBagsList * make remote-ext tests a bin * Adjust remote-ext test to use pub; update some comments * Use list_bags_get * Try fix cargo.lock * Gate kusama feat code * Carg.lock .. again * point bags-list deps to master * Update voter-bags CLI to take total issuance and min balance as args * Switch polkadot runtime to UseNominatorMap * Some tweaks to the remote-test * Delete some stuff for polkadot; comments * Various fixes * Add comment for VoterSnapshotPerBlock * Remove bags-list import from polakdot cargo * use benchmarking feature for pallet-bags-list * Add custom migration for westend and kusama for bags-list * :facepalm * Fix kusama runtime * Small clean up * Be more alphabetical ordered * Use 22_500 for VoterSnapshotPerBlock * point back to master * remove unused type * SortedListProvider for staking runtime * Remove polkadot for remote-ext bags test * Revert "Remove polkadot for remote-ext bags test" This reverts commit 3608c466002063761cd669880a00b2e05c1ff7d1. * Remove polkadot for remote-ext bags test * update Substrate Co-authored-by: Zeke Mostov <32168567+emostov@users.noreply.github.com> Co-authored-by: Andronik Ordian Co-authored-by: Shawn Tabrizi Co-authored-by: radupopa2010 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: André Silva <123550+andresilva@users.noreply.github.com> Co-authored-by: thiolliere Co-authored-by: André Silva Co-authored-by: Keith Yeung Co-authored-by: Bernhard Schuster Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Robert Habermeier Co-authored-by: Robert Klotzner Co-authored-by: Alexander Theißen Co-authored-by: Lldenaurois Co-authored-by: Qinxuan Chen Co-authored-by: Seun Lanlege Co-authored-by: Denis Pisarev Co-authored-by: Andreas Doerr Co-authored-by: Chevdor Co-authored-by: Tomasz Drwięga Co-authored-by: Denis Tsai Co-authored-by: Pierre Besson Co-authored-by: kianenigma Co-authored-by: Bastian Köcher Co-authored-by: Xiliang Chen Co-authored-by: Hernando Castano Co-authored-by: ferrell-code Co-authored-by: Shaun W Co-authored-by: parity-processbot <> --- Cargo.lock | 416 +++++++++++------- Cargo.toml | 2 + runtime/common/Cargo.toml | 2 + runtime/common/src/elections.rs | 58 +++ runtime/kusama/Cargo.toml | 3 + runtime/kusama/src/lib.rs | 48 ++ runtime/kusama/src/voter_bags.rs | 234 ++++++++++ runtime/kusama/src/weights/mod.rs | 1 + .../kusama/src/weights/pallet_bags_list.rs | 66 +++ runtime/kusama/src/weights/pallet_staking.rs | 60 +-- runtime/polkadot/src/lib.rs | 10 +- .../polkadot/src/weights/pallet_staking.rs | 82 ++-- runtime/test-runtime/src/lib.rs | 3 + runtime/westend/Cargo.toml | 3 + runtime/westend/src/lib.rs | 50 ++- runtime/westend/src/voter_bags.rs | 234 ++++++++++ runtime/westend/src/weights/mod.rs | 1 + .../westend/src/weights/pallet_bags_list.rs | 66 +++ runtime/westend/src/weights/pallet_staking.rs | 78 ++-- utils/remote-ext-tests/bags-list/Cargo.toml | 24 + utils/remote-ext-tests/bags-list/README.md | 3 + utils/remote-ext-tests/bags-list/src/main.rs | 59 +++ .../bags-list/src/voter_bags.rs | 148 +++++++ utils/voter-bags/Cargo.toml | 14 + utils/voter-bags/src/main.rs | 82 ++++ 25 files changed, 1479 insertions(+), 268 deletions(-) create mode 100644 runtime/kusama/src/voter_bags.rs create mode 100644 runtime/kusama/src/weights/pallet_bags_list.rs create mode 100644 runtime/westend/src/voter_bags.rs create mode 100644 runtime/westend/src/weights/pallet_bags_list.rs create mode 100644 utils/remote-ext-tests/bags-list/Cargo.toml create mode 100644 utils/remote-ext-tests/bags-list/README.md create mode 100644 utils/remote-ext-tests/bags-list/src/main.rs create mode 100644 utils/remote-ext-tests/bags-list/src/voter_bags.rs create mode 100644 utils/voter-bags/Cargo.toml create mode 100644 utils/voter-bags/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 3512b6caa419..8d6986a73574 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "sp-api", @@ -2380,6 +2380,22 @@ version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +[[package]] +name = "generate-bags" +version = "3.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +dependencies = [ + "chrono", + "frame-election-provider-support", + "frame-support", + "frame-system", + "git2", + "num-format", + "pallet-staking", + "sp-io", + "structopt", +] + [[package]] name = "generator" version = "0.6.23" @@ -2461,6 +2477,19 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "git2" +version = "0.13.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c1cbbfc9a1996c6af82c2b4caf828d2c653af4fcdbb0e5674cc966eee5a4197" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url 2.2.0", +] + [[package]] name = "glob" version = "0.3.0" @@ -3161,6 +3190,7 @@ dependencies = [ "pallet-authority-discovery", "pallet-authorship", "pallet-babe", + "pallet-bags-list", "pallet-balances", "pallet-bounties", "pallet-collective", @@ -3297,6 +3327,18 @@ version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" +[[package]] +name = "libgit2-sys" +version = "0.12.23+1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29730a445bae719db3107078b46808cc45a5b7a6bae3f31272923af969453356" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + [[package]] name = "libloading" version = "0.5.2" @@ -3838,9 +3880,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.0.25" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" +checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" dependencies = [ "cc", "libc", @@ -4411,6 +4453,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-format" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +dependencies = [ + "arrayvec 0.4.12", + "itoa", +] + [[package]] name = "num-integer" version = "0.1.43" @@ -4543,7 +4595,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -4559,7 +4611,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -4574,7 +4626,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4595,10 +4647,30 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-bags-list" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +dependencies = [ + "frame-benchmarking", + "frame-election-provider-support", + "frame-support", + "frame-system", + "log", + "pallet-balances", + "parity-scale-codec", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", +] + [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4654,7 +4726,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4736,7 +4808,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4753,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4769,7 +4841,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4793,7 +4865,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4811,7 +4883,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4826,7 +4898,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4849,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4865,7 +4937,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4885,7 +4957,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4902,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4919,7 +4991,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4937,7 +5009,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -4953,7 +5025,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4970,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -4985,7 +5057,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -4999,7 +5071,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -5016,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5039,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5054,7 +5126,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -5068,7 +5140,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5084,7 +5156,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -5105,7 +5177,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5121,7 +5193,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -5135,7 +5207,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5158,7 +5230,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5169,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "sp-arithmetic", @@ -5178,7 +5250,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -5192,7 +5264,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5210,7 +5282,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5229,7 +5301,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-support", "frame-system", @@ -5246,7 +5318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5263,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5274,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5291,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -5307,7 +5379,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-benchmarking", "frame-support", @@ -6677,6 +6749,7 @@ dependencies = [ "log", "pallet-authorship", "pallet-babe", + "pallet-bags-list", "pallet-balances", "pallet-beefy-mmr", "pallet-election-provider-multi-phase", @@ -7108,6 +7181,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "polkadot-voter-bags" +version = "0.9.0" +dependencies = [ + "generate-bags", + "kusama-runtime", + "polkadot-runtime", + "sp-io", + "structopt", + "westend-runtime", +] + [[package]] name = "polling" version = "2.0.2" @@ -7663,10 +7748,32 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "remote-ext-tests-bags-list" +version = "0.9.9" +dependencies = [ + "frame-election-provider-support", + "frame-support", + "kusama-runtime", + "log", + "pallet-bags-list", + "pallet-election-provider-multi-phase", + "pallet-staking", + "polkadot-runtime", + "remote-externalities", + "sp-core", + "sp-runtime", + "sp-std", + "sp-storage", + "sp-tracing", + "structopt", + "tokio", +] + [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7926,7 +8033,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "sp-core", @@ -7937,7 +8044,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "derive_more", @@ -7964,7 +8071,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -7987,7 +8094,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8003,7 +8110,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8019,7 +8126,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8030,7 +8137,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "chrono", "fdlimit", @@ -8068,7 +8175,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "fnv", "futures 0.3.17", @@ -8096,7 +8203,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "hash-db", "kvdb", @@ -8121,7 +8228,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -8145,7 +8252,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "derive_more", @@ -8188,7 +8295,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "derive_more", "futures 0.3.17", @@ -8212,7 +8319,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8225,7 +8332,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "assert_matches", "async-trait", @@ -8259,7 +8366,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -8285,7 +8392,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "sc-client-api", "sp-authorship", @@ -8296,7 +8403,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8322,7 +8429,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "derive_more", "environmental", @@ -8340,7 +8447,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "parity-scale-codec", @@ -8356,7 +8463,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8375,7 +8482,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "derive_more", @@ -8412,7 +8519,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "derive_more", "finality-grandpa", @@ -8436,7 +8543,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8453,7 +8560,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "derive_more", @@ -8468,7 +8575,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "hash-db", "parity-scale-codec", @@ -8486,7 +8593,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-std", "async-trait", @@ -8537,7 +8644,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8553,7 +8660,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "bytes 1.0.1", "fnv", @@ -8580,7 +8687,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "libp2p", @@ -8593,7 +8700,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8602,7 +8709,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "hash-db", @@ -8633,7 +8740,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8658,7 +8765,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8675,7 +8782,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "directories", @@ -8740,7 +8847,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "parity-scale-codec", @@ -8754,7 +8861,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8776,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "chrono", "futures 0.3.17", @@ -8794,7 +8901,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8823,7 +8930,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8834,7 +8941,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "intervalier", @@ -8861,7 +8968,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "derive_more", "futures 0.3.17", @@ -8875,7 +8982,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9307,7 +9414,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "hash-db", "log", @@ -9324,7 +9431,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9336,7 +9443,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9349,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "integer-sqrt", "num-traits", @@ -9364,7 +9471,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9377,7 +9484,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "parity-scale-codec", @@ -9389,7 +9496,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "sp-api", @@ -9401,7 +9508,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "log", @@ -9419,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -9438,7 +9545,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "merlin", @@ -9461,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9472,7 +9579,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9484,7 +9591,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "base58", "blake2-rfc", @@ -9529,7 +9636,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9538,7 +9645,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro2", "quote", @@ -9548,7 +9655,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "environmental", "parity-scale-codec", @@ -9559,7 +9666,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "finality-grandpa", "log", @@ -9577,7 +9684,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9591,7 +9698,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "hash-db", @@ -9616,7 +9723,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "lazy_static", "sp-core", @@ -9627,7 +9734,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "derive_more", @@ -9644,7 +9751,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "zstd", ] @@ -9652,7 +9759,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9667,7 +9774,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9678,7 +9785,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "sp-api", "sp-core", @@ -9688,7 +9795,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "backtrace", ] @@ -9696,7 +9803,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "rustc-hash", "serde", @@ -9706,7 +9813,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "either", "hash256-std-hasher", @@ -9728,7 +9835,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9745,7 +9852,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9757,7 +9864,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "serde", "serde_json", @@ -9766,7 +9873,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9780,7 +9887,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "scale-info", @@ -9791,7 +9898,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "hash-db", "log", @@ -9814,12 +9921,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9832,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "sp-core", @@ -9845,7 +9952,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9861,7 +9968,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "erased-serde", "log", @@ -9879,7 +9986,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "sp-api", "sp-runtime", @@ -9888,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "log", @@ -9904,7 +10011,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "hash-db", "memory-db", @@ -9919,7 +10026,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9935,7 +10042,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -9946,7 +10053,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10142,7 +10249,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "platforms", ] @@ -10150,7 +10257,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10172,7 +10279,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-std", "derive_more", @@ -10186,7 +10293,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "async-trait", "futures 0.3.17", @@ -10213,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10223,7 +10330,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10234,7 +10341,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10387,7 +10494,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "frame-system", "futures 0.3.17", @@ -10794,7 +10901,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#95a5337c33ff6123918720ef3c11493628bca5b9" +source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" dependencies = [ "log", "parity-scale-codec", @@ -11431,6 +11538,7 @@ dependencies = [ "pallet-authority-discovery", "pallet-authorship", "pallet-babe", + "pallet-bags-list", "pallet-balances", "pallet-collective", "pallet-democracy", diff --git a/Cargo.toml b/Cargo.toml index 2b5cc259d429..5ea0f98eef6d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -92,6 +92,8 @@ members = [ "parachain/test-parachains/adder", "parachain/test-parachains/adder/collator", "utils/staking-miner", + "utils/remote-ext-tests/bags-list", + "utils/voter-bags", ] # We want to be able to build the bridge relayer without pulling it (and all of its diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 41e8d8fea71d..8388f2cc2016 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -39,6 +39,7 @@ pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "m 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 } 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 } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } @@ -96,6 +97,7 @@ std = [ "runtime-parachains/std", "xcm/std", "sp-npos-elections/std", + "pallet-bags-list/std" ] runtime-benchmarks = [ "libsecp256k1/hmac", diff --git a/runtime/common/src/elections.rs b/runtime/common/src/elections.rs index 4741898f061c..f26b2f014451 100644 --- a/runtime/common/src/elections.rs +++ b/runtime/common/src/elections.rs @@ -17,11 +17,13 @@ //! Code for elections. use super::{BlockExecutionWeight, BlockLength, BlockWeights}; +use frame_election_provider_support::{SortedListProvider, VoteWeight}; use frame_support::{ parameter_types, weights::{DispatchClass, Weight}, }; use sp_runtime::Perbill; +use sp_std::{boxed::Box, convert::From, marker::PhantomData}; parameter_types! { /// A limit for off-chain phragmen unsigned solution submission. @@ -89,3 +91,59 @@ impl frame_support::pallet_prelude::Get(PhantomData); +impl SortedListProvider + for UseNominatorsAndUpdateBagsList +{ + type Error = pallet_bags_list::Error; + + fn iter() -> Box> { + Box::new(pallet_staking::Nominators::::iter().map(|(n, _)| n)) + } + + fn count() -> u32 { + pallet_bags_list::Pallet::::count() + } + + fn contains(id: &T::AccountId) -> bool { + pallet_bags_list::Pallet::::contains(id) + } + + fn on_insert(id: T::AccountId, weight: VoteWeight) -> Result<(), Self::Error> { + pallet_bags_list::Pallet::::on_insert(id, weight) + } + + fn on_update(id: &T::AccountId, new_weight: VoteWeight) { + pallet_bags_list::Pallet::::on_update(id, new_weight); + } + + fn on_remove(id: &T::AccountId) { + pallet_bags_list::Pallet::::on_remove(id); + } + + fn regenerate( + all: impl IntoIterator, + weight_of: Box VoteWeight>, + ) -> u32 { + pallet_bags_list::Pallet::::regenerate(all, weight_of) + } + + fn sanity_check() -> Result<(), &'static str> { + pallet_bags_list::Pallet::::sanity_check() + } + + fn clear(count: Option) -> u32 { + pallet_bags_list::Pallet::::clear(count) + } + + #[cfg(feature = "runtime-benchmarks")] + fn weight_update_worst_case(who: &T::AccountId, is_increase: bool) -> VoteWeight { + pallet_bags_list::Pallet::::weight_update_worst_case(who, is_increase) + } +} diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 26858f68d4ee..4c2fa8743903 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -72,6 +72,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 } frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } @@ -174,6 +175,7 @@ std = [ "xcm-executor/std", "xcm-builder/std", "frame-election-provider-support/std", + "pallet-bags-list/std", ] runtime-benchmarks = [ "runtime-common/runtime-benchmarks", @@ -211,6 +213,7 @@ runtime-benchmarks = [ "hex-literal", "xcm-builder/runtime-benchmarks", "frame-election-provider-support/runtime-benchmarks", + "pallet-bags-list/runtime-benchmarks", ] try-runtime = [ "frame-executive/try-runtime", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index fcb92a44f894..cd6f3fc2e277 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -103,6 +103,9 @@ use constants::{currency::*, fee::*, time::*}; // Weights used in the runtime. mod weights; +// Voter bag threshold definitions. +mod voter_bags; + #[cfg(test)] mod tests; @@ -354,6 +357,11 @@ parameter_types! { // miner configs pub OffchainRepeat: BlockNumber = 5; + + /// Whilst `UseNominatorsAndUpdateBagsList` or `UseNominatorsMap` is in use, this can still be a + /// very large value. Once the `BagsList` is in full motion, staking might open its door to many + /// more nominators, and this value should instead be what is a "safe" number (e.g. 22500). + pub const VoterSnapshotPerBlock: u32 = 22_500; } sp_npos_elections::generate_solution_type!( @@ -399,6 +407,18 @@ impl pallet_election_provider_multi_phase::Config for Runtime { pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, >; type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; + type VoterSnapshotPerBlock = VoterSnapshotPerBlock; +} + +parameter_types! { + pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS; +} + +impl pallet_bags_list::Config for Runtime { + type Event = Event; + type VoteWeightProvider = Staking; + type WeightInfo = weights::pallet_bags_list::WeightInfo; + type BagThresholds = BagThresholds; } fn era_payout( @@ -505,6 +525,9 @@ impl pallet_staking::Config for Runtime { type EraPayout = EraPayout; type NextNewSession = Session; type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator; + // Use the nominators map to iter voters, but also perform the bags-list migration and keep + // it up-to-date. + type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } @@ -1462,6 +1485,9 @@ construct_runtime! { // Gilts pallet. Gilt: pallet_gilt::{Pallet, Call, Storage, Event, Config} = 38, + // Provides a semi-sorted list of nominators for staking. + BagsList: pallet_bags_list::{Pallet, Call, Storage, Event} = 39, + // Parachains pallets. Start indices at 50 to leave room. ParachainsOrigin: parachains_origin::{Pallet, Origin} = 50, Configuration: parachains_configuration::{Pallet, Call, Storage, Config} = 51, @@ -1521,6 +1547,7 @@ pub type Executive = frame_executive::Executive< TechnicalCommitteeStoragePrefixMigration, TechnicalMembershipStoragePrefixMigration, MigrateTipsPalletPrefix, + StakingBagsListMigrationV8, ), >; /// The payload being signed in the transactions. @@ -1638,6 +1665,25 @@ impl OnRuntimeUpgrade for MigrateTipsPalletPrefix { } } +// Migration to generate pallet staking's `SortedListProvider` from pre-existing nominators. +pub struct StakingBagsListMigrationV8; + +impl OnRuntimeUpgrade for StakingBagsListMigrationV8 { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_staking::migrations::v8::migrate::() + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_staking::migrations::v8::pre_migrate::() + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_staking::migrations::v8::post_migrate::() + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { @@ -1955,6 +2001,7 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_common::slots, Slots); list_benchmark!(list, extra, runtime_common::paras_registrar, Registrar); // Substrate + list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); list_benchmark!(list, extra, pallet_bounties, Bounties); list_benchmark!(list, extra, pallet_collective, Council); @@ -2029,6 +2076,7 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); // Substrate add_benchmark!(params, batches, pallet_balances, Balances); + add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_bounties, Bounties); add_benchmark!(params, batches, pallet_collective, Council); add_benchmark!(params, batches, pallet_collective, TechnicalCommittee); diff --git a/runtime/kusama/src/voter_bags.rs b/runtime/kusama/src/voter_bags.rs new file mode 100644 index 000000000000..52f4a9d5c33a --- /dev/null +++ b/runtime/kusama/src/voter_bags.rs @@ -0,0 +1,234 @@ +// 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 . + +//! Autogenerated voter bag thresholds. +//! +//! Generated on 2021-07-05T14:34:44.453491278+00:00 +//! for the kusama runtime. + +/// Existential weight for this runtime. +#[cfg(any(test, feature = "std"))] +#[allow(unused)] +pub const EXISTENTIAL_WEIGHT: u64 = 33_333_333; + +/// Constant ratio between bags for this runtime. +#[cfg(any(test, feature = "std"))] +#[allow(unused)] +pub const CONSTANT_RATIO: f64 = 1.1455399939091000; + +/// Upper thresholds delimiting the bag list. +pub const THRESHOLDS: [u64; 200] = [ + 33_333_333, + 38_184_666, + 43_742_062, + 50_108_281, + 57_401_040, + 65_755_187, + 75_325_197, + 86_288_026, + 98_846_385, + 113_232_487, + 129_712_342, + 148_590_675, + 170_216_561, + 194_989_878, + 223_368_704, + 255_877_784, + 293_118_235, + 335_778_661, + 384_647_885, + 440_629_536, + 504_758_756, + 578_221_342, + 662_375_673, + 758_777_824, + 869_210_344, + 995_715_212, + 1_140_631_598, + 1_306_639_114, + 1_496_807_363, + 1_714_652_697, + 1_964_203_240, + 2_250_073_368, + 2_577_549_032, + 2_952_685_502, + 3_382_419_332, + 3_874_696_621, + 4_438_619_944, + 5_084_616_664, + 5_824_631_742, + 6_672_348_610, + 7_643_442_186, + 8_755_868_715, + 10_030_197_794, + 11_489_992_720, + 13_162_246_190, + 15_077_879_420, + 17_272_313_899, + 19_786_126_359, + 22_665_799_069, + 25_964_579_327, + 29_743_464_044, + 34_072_327_620, + 39_031_213_974, + 44_711_816_618, + 51_219_174_136, + 58_673_612_428, + 67_212_969_623, + 76_995_144_813, + 88_201_017_720, + 101_037_793_302, + 115_742_833_124, + 132_588_044_352, + 151_884_907_519, + 173_990_236_034, + 199_312_773_927, + 228_320_753_830, + 261_550_554_952, + 299_616_621_127, + 343_222_822_341, + 393_175_469_814, + 450_398_225_296, + 515_949_180_262, + 591_040_420_815, + 677_060_440_060, + 775_599_812_382, + 888_480_604_352, + 1_017_790_066_098, + 1_165_919_226_119, + 1_335_607_103_187, + 1_529_991_352_850, + 1_752_666_285_025, + 2_007_749_325_472, + 2_299_957_150_072, + 2_634_692_899_685, + 3_018_146_088_258, + 3_457_407_051_560, + 3_960_598_052_785, + 4_537_023_469_264, + 5_197_341_837_346, + 5_953_762_936_697, + 6_820_273_558_240, + 7_812_896_130_365, + 8_949_984_985_591, + 10_252_565_745_880, + 11_744_724_102_088, + 13_454_051_176_370, + 15_412_153_702_632, + 17_655_238_458_639, + 20_224_781_756_373, + 23_168_296_370_008, + 26_540_210_082_583, + 30_402_872_096_348, + 34_827_705_916_070, + 39_896_530_022_963, + 45_703_070_759_499, + 52_354_695_399_464, + 59_974_397_449_015, + 68_703_070_888_447, + 78_702_115_407_088, + 90_156_420_804_069, + 103_277_785_738_759, + 118_308_834_046_123, + 135_527_501_032_588, + 155_252_172_707_386, + 177_847_572_977_594, + 203_731_507_665_501, + 233_382_590_050_230, + 267_349_090_784_630, + 306_259_075_829_029, + 350_832_019_859_793, + 401_892_109_893_305, + 460_383_485_119_292, + 527_387_694_739_404, + 604_143_696_619_511, + 692_070_766_545_736, + 792_794_741_693_469, + 908_178_083_570_703, + 1_040_354_316_321_961, + 1_191_767_477_182_765, + 1_365_217_308_553_008, + 1_563_911_027_324_411, + 1_791_522_628_715_580, + 2_052_260_821_186_860, + 2_350_946_848_602_280, + 2_693_103_638_628_474, + 3_085_057_925_791_037, + 3_534_057_237_519_885, + 4_048_403_906_342_940, + 4_637_608_586_213_668, + 5_312_566_111_603_995, + 6_085_756_951_128_531, + 6_971_477_980_728_040, + 7_986_106_843_580_624, + 9_148_404_784_952_770, + 10_479_863_561_632_778, + 12_005_102_840_561_012, + 13_752_325_434_854_380, + 15_753_838_794_879_048, + 18_046_652_397_130_688, + 20_673_162_077_088_732, + 23_681_933_959_870_064, + 27_128_602_484_145_260, + 31_076_899_124_450_156, + 35_599_830_833_736_348, + 40_781_029_996_443_328, + 46_716_300_853_732_512, + 53_515_390_995_440_424, + 61_304_020_674_959_928, + 70_226_207_470_596_936, + 80_446_929_278_126_800, + 92_155_174_875_271_168, + 105_567_438_465_310_176, + 120_931_722_816_550_704, + 138_532_125_018_688_464, + 158_694_089_650_123_072, + 181_790_426_491_212_160, + 208_248_204_055_475_872, + 238_556_646_405_290_848, + 273_276_179_270_092_192, + 313_048_792_736_563_520, + 358_609_912_124_694_080, + 410_801_996_551_064_960, + 470_590_116_626_953_088, + 539_079_799_334_522_496, + 617_537_470_046_187_776, + 707_413_869_675_350_912, + 810_370_879_959_114_368, + 928_312_252_892_475_904, + 1_063_418_812_524_189_696, + 1_218_188_780_021_782_528, + 1_395_483_967_646_286_592, + 1_598_582_695_797_773_824, + 1_831_240_411_607_374_592, + 2_097_759_129_958_809_600, + 2_403_066_980_955_773_440, + 2_752_809_334_727_236_096, + 3_153_453_188_536_351_744, + 3_612_406_746_388_564_480, + 4_138_156_402_255_148_032, + 4_740_423_659_834_265_600, + 5_430_344_890_413_097_984, + 6_220_677_252_688_132_096, + 7_126_034_582_154_840_064, + 8_163_157_611_837_691_904, + 9_351_223_520_943_572_992, + 10_712_200_535_224_332_288, + 12_271_254_135_873_939_456, + 14_057_212_388_066_050_048, + 16_103_098_993_404_108_800, + 18_446_744_073_709_551_615, +]; diff --git a/runtime/kusama/src/weights/mod.rs b/runtime/kusama/src/weights/mod.rs index 680fb6aaed90..35273e1c98a0 100644 --- a/runtime/kusama/src/weights/mod.rs +++ b/runtime/kusama/src/weights/mod.rs @@ -16,6 +16,7 @@ //! A list of the different weight modules for our runtime. pub mod frame_system; +pub mod pallet_bags_list; pub mod pallet_balances; pub mod pallet_bounties; pub mod pallet_collective_council; diff --git a/runtime/kusama/src/weights/pallet_bags_list.rs b/runtime/kusama/src/weights/pallet_bags_list.rs new file mode 100644 index 000000000000..6792d0d5d689 --- /dev/null +++ b/runtime/kusama/src/weights/pallet_bags_list.rs @@ -0,0 +1,66 @@ +// This file is part of Substrate. + +// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// 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. + +//! 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 + +// Executed Command: +// target/release/substrate +// benchmark +// --chain=dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_bags_list +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --output=./frame/bags-list/src/weights.rs +// --template=./.maintain/frame-weight-template.hbs + +// 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 sp_std::marker::PhantomData; + +/// Weight functions needed for pallet_bags_list. + +/// Weights for pallet_bags_list using the Substrate node and recommended hardware. +pub struct WeightInfo(PhantomData); +impl pallet_bags_list::WeightInfo for WeightInfo { + fn rebag_non_terminal() -> Weight { + (75_718_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) + fn rebag_terminal() -> Weight { + (75_718_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_staking.rs b/runtime/kusama/src/weights/pallet_staking.rs index 2df8f525cc54..ff7f8b9fb837 100644 --- a/runtime/kusama/src/weights/pallet_staking.rs +++ b/runtime/kusama/src/weights/pallet_staking.rs @@ -16,7 +16,7 @@ //! Autogenerated weights for `pallet_staking` //! //! 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: `[]` +//! DATE: 2021-07-07, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 // Executed Command: @@ -31,7 +31,7 @@ // --wasm-execution=compiled // --heap-pages=4096 // --header=./file_header.txt -// --output=./runtime/kusama/src/weights/ +// --output=runtime/kusama/src/weights/ #![allow(unused_parens)] #![allow(unused_imports)] @@ -43,17 +43,17 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_staking::WeightInfo for WeightInfo { fn bond() -> Weight { - (70_648_000 as Weight) + (68_673_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } fn bond_extra() -> Weight { - (54_235_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) + (57_515_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } fn unbond() -> Weight { - (57_950_000 as Weight) + (56_018_000 as Weight) .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -73,9 +73,9 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } fn validate() -> Weight { - (31_838_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (64_915_000 as Weight) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } fn kick(k: u32) -> Weight { (10_120_000 as Weight) @@ -91,18 +91,18 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add((5_240_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(7 as Weight)) } fn chill() -> Weight { (16_594_000 as Weight).saturating_add(T::DbWeight::get().reads(3 as Weight)) } fn set_payee() -> Weight { - (11_260_000 as Weight) + (10_848_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn set_controller() -> Weight { - (24_156_000 as Weight) + (23_658_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -121,7 +121,7 @@ impl pallet_staking::WeightInfo for WeightInfo { fn set_invulnerables(v: u32) -> Weight { (2_524_000 as Weight) // Standard Error: 0 - .saturating_add((23_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((5_000 as Weight).saturating_mul(v as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn force_unstake(s: u32) -> Weight { @@ -142,7 +142,7 @@ impl pallet_staking::WeightInfo for WeightInfo { fn payout_stakers_dead_controller(n: u32) -> Weight { (108_055_000 as Weight) // Standard Error: 15_000 - .saturating_add((47_913_000 as Weight).saturating_mul(n as Weight)) + .saturating_add((49_008_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)) @@ -160,14 +160,14 @@ impl pallet_staking::WeightInfo for WeightInfo { fn rebond(l: u32) -> Weight { (46_725_000 as Weight) // Standard Error: 1_000 - .saturating_add((62_000 as Weight).saturating_mul(l as Weight)) + .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)) } fn set_history_depth(e: u32) -> Weight { (0 as Weight) - // Standard Error: 68_000 - .saturating_add((32_190_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 70_000 + .saturating_add((33_332_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))) @@ -182,13 +182,13 @@ impl pallet_staking::WeightInfo for WeightInfo { } fn new_era(v: u32, n: u32) -> Weight { (0 as Weight) - // Standard Error: 734_000 - .saturating_add((296_342_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 36_000 - .saturating_add((46_481_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))) + // 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))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) } @@ -202,13 +202,13 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add((40_493_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(3 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().reads((4 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) } fn get_npos_targets(v: u32) -> Weight { (0 as Weight) - // Standard Error: 27_000 - .saturating_add((10_233_000 as Weight).saturating_mul(v 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)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) } @@ -216,8 +216,8 @@ impl pallet_staking::WeightInfo for WeightInfo { (5_708_000 as Weight).saturating_add(T::DbWeight::get().writes(5 as Weight)) } fn chill_other() -> Weight { - (39_559_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (84_065_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/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 2d4e35c630a2..8b0230dffab9 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -360,6 +360,11 @@ parameter_types! { // miner configs pub OffchainRepeat: BlockNumber = 5; + + /// Whilst `UseNominatorsAndUpdateBagsList` or `UseNominatorsMap` is in use, this can still be a + /// very large value. Once the `BagsList` is in full motion, staking might open its door to many + /// more nominators, and this value should instead be what is a "safe" number (e.g. 22500). + pub const VoterSnapshotPerBlock: u32 = 22_500; } sp_npos_elections::generate_solution_type!( @@ -405,6 +410,7 @@ impl pallet_election_provider_multi_phase::Config for Runtime { pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, >; type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; + type VoterSnapshotPerBlock = VoterSnapshotPerBlock; } // TODO #6469: This shouldn't be static, but a lazily cached value, not built unless needed, and @@ -465,6 +471,9 @@ impl pallet_staking::Config for Runtime { type NextNewSession = Session; type ElectionProvider = ElectionProviderMultiPhase; type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; + // Use the nominator map to iter voter AND no-ops for all SortedListProvider hooks. The migration + // to bags-list is a no-op, but the storage version will be updated. + type SortedListProvider = pallet_staking::UseNominatorsMap; type WeightInfo = weights::pallet_staking::WeightInfo; } @@ -1107,7 +1116,6 @@ 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, - } } diff --git a/runtime/polkadot/src/weights/pallet_staking.rs b/runtime/polkadot/src/weights/pallet_staking.rs index 81b65921bbf1..66b10f9758c6 100644 --- a/runtime/polkadot/src/weights/pallet_staking.rs +++ b/runtime/polkadot/src/weights/pallet_staking.rs @@ -16,7 +16,7 @@ //! Autogenerated weights for `pallet_staking` //! //! 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: `[]` +//! DATE: 2021-07-07, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 // Executed Command: @@ -31,7 +31,7 @@ // --wasm-execution=compiled // --heap-pages=4096 // --header=./file_header.txt -// --output=./runtime/polkadot/src/weights/ +// --output=runtime/polkadot/src/weights/ #![allow(unused_parens)] #![allow(unused_imports)] @@ -43,39 +43,39 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_staking::WeightInfo for WeightInfo { fn bond() -> Weight { - (70_259_000 as Weight) + (70_233_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } fn bond_extra() -> Weight { - (53_621_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) + (58_956_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } fn unbond() -> Weight { - (57_038_000 as Weight) + (56_669_000 as Weight) .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } fn withdraw_unbonded_update(s: u32) -> Weight { (49_182_000 as Weight) // Standard Error: 0 - .saturating_add((31_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((28_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_333_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((2_258_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(10 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))) } fn validate() -> Weight { - (31_525_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (65_617_000 as Weight) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } fn kick(k: u32) -> Weight { (10_487_000 as Weight) @@ -91,18 +91,18 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add((5_185_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(7 as Weight)) } fn chill() -> Weight { (16_783_000 as Weight).saturating_add(T::DbWeight::get().reads(3 as Weight)) } fn set_payee() -> Weight { - (11_391_000 as Weight) + (11_087_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn set_controller() -> Weight { - (24_470_000 as Weight) + (24_640_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -121,15 +121,15 @@ impl pallet_staking::WeightInfo for WeightInfo { fn set_invulnerables(v: u32) -> Weight { (2_143_000 as Weight) // Standard Error: 0 - .saturating_add((23_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((6_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_309_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_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)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } fn cancel_deferred_slash(s: u32) -> Weight { @@ -166,8 +166,8 @@ impl pallet_staking::WeightInfo for WeightInfo { } fn set_history_depth(e: u32) -> Weight { (0 as Weight) - // Standard Error: 67_000 - .saturating_add((32_486_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 75_000 + .saturating_add((32_680_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))) @@ -182,33 +182,31 @@ impl pallet_staking::WeightInfo for WeightInfo { } fn new_era(v: u32, n: u32) -> Weight { (0 as Weight) - // Standard Error: 666_000 - .saturating_add((306_698_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 33_000 - .saturating_add((47_483_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))) + // 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))) .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 { (0 as Weight) - // Standard Error: 97_000 - .saturating_add((25_109_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 97_000 - .saturating_add((27_162_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 3_332_000 - .saturating_add((50_488_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 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)) .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().reads((4 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) } fn get_npos_targets(v: u32) -> Weight { (0 as Weight) - // Standard Error: 31_000 - .saturating_add((10_220_000 as Weight).saturating_mul(v 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)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) } @@ -216,8 +214,8 @@ impl pallet_staking::WeightInfo for WeightInfo { (5_584_000 as Weight).saturating_add(T::DbWeight::get().writes(5 as Weight)) } fn chill_other() -> Weight { - (39_524_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (80_902_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/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 6e2bf146a620..a1fe03cb37f6 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -340,6 +340,9 @@ impl pallet_staking::Config for Runtime { frame_election_provider_support::onchain::OnChainSequentialPhragmen; type GenesisElectionProvider = frame_election_provider_support::onchain::OnChainSequentialPhragmen; + // Use the nominator map to iter voter AND no-ops for all SortedListProvider hooks. The migration + // to bags-list is a no-op, but the storage version will be updated. + type SortedListProvider = pallet_staking::UseNominatorsMap; type WeightInfo = (); } diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index 0568852200d4..ab1375138dd4 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -69,6 +69,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 } 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 } @@ -149,6 +150,7 @@ std = [ "pallet-vesting/std", "pallet-xcm/std", "pallet-babe/std", + "pallet-bags-list/std", "frame-executive/std", "sp-runtime/std", "sp-staking/std", @@ -201,6 +203,7 @@ runtime-benchmarks = [ "hex-literal", "xcm-builder/runtime-benchmarks", "frame-election-provider-support/runtime-benchmarks", + "pallet-bags-list/runtime-benchmarks", ] try-runtime = [ "frame-executive/try-runtime", diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 372267d180ab..09baa14a691b 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -20,6 +20,7 @@ // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] +use frame_support::traits::OnRuntimeUpgrade; use pallet_transaction_payment::CurrencyAdapter; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::v1::{ @@ -100,6 +101,9 @@ use constants::{currency::*, fee::*, time::*}; // Weights used in the runtime mod weights; +// Voter bag threshold definitions. +mod voter_bags; + #[cfg(test)] mod tests; @@ -339,6 +343,11 @@ parameter_types! { // miner configs pub OffchainRepeat: BlockNumber = 5; + + /// Whilst `UseNominatorsAndUpdateBagsList` or `UseNominatorsMap` is in use, this can still be a + /// very large value. Once the `BagsList` is in full motion, staking might open its door to many + /// more nominators, and this value should instead be what is a "safe" number (e.g. 22500). + pub const VoterSnapshotPerBlock: u32 = 22_500; } sp_npos_elections::generate_solution_type!( @@ -380,6 +389,18 @@ impl pallet_election_provider_multi_phase::Config for Runtime { type BenchmarkingConfig = runtime_common::elections::BenchmarkConfig; type ForceOrigin = EnsureRoot; type WeightInfo = weights::pallet_election_provider_multi_phase::WeightInfo; + type VoterSnapshotPerBlock = VoterSnapshotPerBlock; +} + +parameter_types! { + pub const BagThresholds: &'static [u64] = &voter_bags::THRESHOLDS; +} + +impl pallet_bags_list::Config for Runtime { + type Event = Event; + type VoteWeightProvider = Staking; + type WeightInfo = weights::pallet_bags_list::WeightInfo; + type BagThresholds = BagThresholds; } pallet_staking_reward_curve::build! { @@ -430,6 +451,9 @@ impl pallet_staking::Config for Runtime { type NextNewSession = Session; type ElectionProvider = ElectionProviderMultiPhase; type GenesisElectionProvider = runtime_common::elections::GenesisElectionOf; + // Use the nominators map to iter voters, but also perform the bags-list migration and keep + // it up-to-date. + type SortedListProvider = runtime_common::elections::UseNominatorsAndUpdateBagsList; type WeightInfo = weights::pallet_staking::WeightInfo; } @@ -1041,6 +1065,9 @@ 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} = 24, + // Provides a semi-sorted list of nominators for staking. + BagsList: pallet_bags_list::{Pallet, Call, Storage, Event} = 25, + // Parachains pallets. Start indices at 40 to leave room. ParachainsOrigin: parachains_origin::{Pallet, Origin} = 41, Configuration: parachains_configuration::{Pallet, Call, Storage, Config} = 42, @@ -1096,11 +1123,30 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - (), + (StakingBagsListMigrationV8,), >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +// Migration to generate pallet staking's `SortedListProvider` from pre-existing nominators. +pub struct StakingBagsListMigrationV8; + +impl OnRuntimeUpgrade for StakingBagsListMigrationV8 { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + pallet_staking::migrations::v8::migrate::() + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + pallet_staking::migrations::v8::pre_migrate::() + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + pallet_staking::migrations::v8::post_migrate::() + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { @@ -1417,6 +1463,7 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_common::paras_registrar, Registrar); list_benchmark!(list, extra, runtime_common::slots, Slots); // Substrate + list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); list_benchmark!(list, extra, pallet_election_provider_multi_phase, ElectionProviderMultiPhase); list_benchmark!(list, extra, pallet_identity, Identity); @@ -1481,6 +1528,7 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); add_benchmark!(params, batches, runtime_common::slots, Slots); // Substrate + add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_balances, Balances); add_benchmark!(params, batches, pallet_election_provider_multi_phase, ElectionProviderMultiPhase); add_benchmark!(params, batches, pallet_identity, Identity); diff --git a/runtime/westend/src/voter_bags.rs b/runtime/westend/src/voter_bags.rs new file mode 100644 index 000000000000..d88f469f6b1c --- /dev/null +++ b/runtime/westend/src/voter_bags.rs @@ -0,0 +1,234 @@ +// 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 . + +//! Autogenerated voter bag thresholds. +//! +//! Generated on 2021-07-05T14:35:50.538338181+00:00 +//! for the westend runtime. + +/// Existential weight for this runtime. +#[cfg(any(test, feature = "std"))] +#[allow(unused)] +pub const EXISTENTIAL_WEIGHT: u64 = 10_000_000_000; + +/// Constant ratio between bags for this runtime. +#[cfg(any(test, feature = "std"))] +#[allow(unused)] +pub const CONSTANT_RATIO: f64 = 1.1131723507077667; + +/// Upper thresholds delimiting the bag list. +pub const THRESHOLDS: [u64; 200] = [ + 10_000_000_000, + 11_131_723_507, + 12_391_526_824, + 13_793_905_044, + 15_354_993_703, + 17_092_754_435, + 19_027_181_634, + 21_180_532_507, + 23_577_583_160, + 26_245_913_670, + 29_216_225_417, + 32_522_694_326, + 36_203_364_094, + 40_300_583_912, + 44_861_495_728, + 49_938_576_656, + 55_590_242_767, + 61_881_521_217, + 68_884_798_439, + 76_680_653_006, + 85_358_782_760, + 95_019_036_859, + 105_772_564_622, + 117_743_094_401, + 131_068_357_174, + 145_901_671_259, + 162_413_706_368, + 180_794_447_305, + 201_255_379_901, + 224_031_924_337, + 249_386_143_848, + 277_609_759_981, + 309_027_509_097, + 344_000_878_735, + 382_932_266_827, + 426_269_611_626, + 474_511_545_609, + 528_213_132_664, + 587_992_254_562, + 654_536_720_209, + 728_612_179_460, + 811_070_932_564, + 902_861_736_593, + 1_005_040_721_687, + 1_118_783_542_717, + 1_245_398_906_179, + 1_386_343_627_960, + 1_543_239_395_225, + 1_717_891_425_287, + 1_912_309_236_147, + 2_128_729_767_682, + 2_369_643_119_512, + 2_637_821_201_686, + 2_936_349_627_828, + 3_268_663_217_709, + 3_638_585_517_729, + 4_050_372_794_022, + 4_508_763_004_364, + 5_019_030_312_352, + 5_587_045_771_074, + 6_219_344_874_498, + 6_923_202_753_807, + 7_706_717_883_882, + 8_578_905_263_043, + 9_549_800_138_161, + 10_630_573_468_586, + 11_833_660_457_397, + 13_172_903_628_838, + 14_663_712_098_160, + 16_323_238_866_411, + 18_170_578_180_087, + 20_226_985_226_447, + 22_516_120_692_255, + 25_064_322_999_817, + 27_900_911_352_605, + 31_058_523_077_268, + 34_573_489_143_434, + 38_486_252_181_966, + 42_841_831_811_331, + 47_690_342_626_046, + 53_087_570_807_094, + 59_095_615_988_698, + 65_783_605_766_662, + 73_228_491_069_308, + 81_515_931_542_404, + 90_741_281_135_191, + 101_010_685_227_495, + 112_442_301_921_293, + 125_167_661_548_718, + 139_333_180_038_781, + 155_101_843_555_358, + 172_655_083_789_626, + 192_194_865_483_744, + 213_946_010_204_502, + 238_158_783_103_893, + 265_111_772_429_462, + 295_115_094_915_607, + 328_513_963_936_552, + 365_692_661_475_578, + 407_078_959_611_349, + 453_149_042_394_237, + 504_432_984_742_966, + 561_520_851_400_862, + 625_069_486_125_324, + 695_810_069_225_823, + 774_556_530_406_243, + 862_214_913_708_369, + 959_793_802_308_039, + 1_068_415_923_109_985, + 1_189_331_064_661_951, + 1_323_930_457_019_515, + 1_473_762_779_014_021, + 1_640_551_977_100_649, + 1_826_217_100_807_404, + 2_032_894_383_008_501, + 2_262_961_819_074_188, + 2_519_066_527_700_738, + 2_804_155_208_229_882, + 3_121_508_044_894_685, + 3_474_776_448_088_622, + 3_868_025_066_902_796, + 4_305_778_556_320_752, + 4_793_073_637_166_665, + 5_335_517_047_800_242, + 5_939_350_054_341_159, + 6_611_520_261_667_250, + 7_359_761_551_432_161, + 8_192_683_066_856_378, + 9_119_868_268_136_230, + 10_151_985_198_186_376, + 11_300_909_227_415_580, + 12_579_859_689_817_292, + 14_003_551_982_487_792, + 15_588_366_878_604_342, + 17_352_539_001_951_086, + 19_316_366_631_550_092, + 21_502_445_250_375_680, + 23_935_927_525_325_748, + 26_644_812_709_737_600, + 29_660_268_798_266_784, + 33_016_991_140_790_860, + 36_753_601_641_491_664, + 40_913_093_136_236_104, + 45_543_324_061_189_736, + 50_697_569_104_240_168, + 56_435_132_174_936_472, + 62_822_028_745_677_552, + 69_931_745_415_056_768, + 77_846_085_432_775_824, + 86_656_109_914_600_688, + 96_463_185_576_826_656, + 107_380_151_045_315_664, + 119_532_615_158_469_088, + 133_060_402_202_199_856, + 148_119_160_705_543_712, + 164_882_154_307_451_552, + 183_542_255_300_186_560, + 204_314_163_786_713_728, + 227_436_877_985_347_776, + 253_176_444_104_585_088, + 281_829_017_427_734_464, + 313_724_269_827_691_328, + 349_229_182_918_168_832, + 388_752_270_484_770_624, + 432_748_278_778_513_664, + 481_723_418_752_617_984, + 536_241_190_443_833_600, + 596_928_866_512_693_376, + 664_484_709_541_257_600, + 739_686_006_129_409_280, + 823_398_010_228_713_984, + 916_583_898_614_395_264, + 1_020_315_853_041_475_584, + 1_135_787_396_594_579_584, + 1_264_327_126_171_442_688, + 1_407_413_999_103_859_968, + 1_566_694_349_801_462_272, + 1_744_000_832_209_069_824, + 1_941_373_506_026_471_680, + 2_161_083_309_305_266_176, + 2_405_658_187_494_662_656, + 2_677_912_179_572_818_944, + 2_980_977_795_924_034_048, + 3_318_342_060_496_414_208, + 3_693_886_631_935_247_360, + 4_111_932_465_319_354_368, + 4_577_289_528_371_127_808, + 5_095_312_144_166_932_480, + 5_671_960_597_112_134_656, + 6_313_869_711_009_142_784, + 7_028_425_188_266_614_784, + 7_823_848_588_596_424_704, + 8_709_291_924_949_524_480, + 9_694_942_965_096_232_960, + 10_792_142_450_433_898_496, + 12_013_514_580_722_579_456, + 13_373_112_266_084_982_784, + 14_886_578_817_516_689_408, + 16_571_327_936_291_497_984, + 18_446_744_073_709_551_615, +]; diff --git a/runtime/westend/src/weights/mod.rs b/runtime/westend/src/weights/mod.rs index 0dc5bddb0cea..05fefbef7d71 100644 --- a/runtime/westend/src/weights/mod.rs +++ b/runtime/westend/src/weights/mod.rs @@ -16,6 +16,7 @@ //! A list of the different weight modules for our runtime. pub mod frame_system; +pub mod pallet_bags_list; pub mod pallet_balances; pub mod pallet_election_provider_multi_phase; pub mod pallet_identity; diff --git a/runtime/westend/src/weights/pallet_bags_list.rs b/runtime/westend/src/weights/pallet_bags_list.rs new file mode 100644 index 000000000000..6792d0d5d689 --- /dev/null +++ b/runtime/westend/src/weights/pallet_bags_list.rs @@ -0,0 +1,66 @@ +// This file is part of Substrate. + +// Copyright (C) 2021 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// 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. + +//! 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 + +// Executed Command: +// target/release/substrate +// benchmark +// --chain=dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_bags_list +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --output=./frame/bags-list/src/weights.rs +// --template=./.maintain/frame-weight-template.hbs + +// 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 sp_std::marker::PhantomData; + +/// Weight functions needed for pallet_bags_list. + +/// Weights for pallet_bags_list using the Substrate node and recommended hardware. +pub struct WeightInfo(PhantomData); +impl pallet_bags_list::WeightInfo for WeightInfo { + fn rebag_non_terminal() -> Weight { + (75_718_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) + fn rebag_terminal() -> Weight { + (75_718_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_staking.rs b/runtime/westend/src/weights/pallet_staking.rs index 45b2f6646c34..c80ec0799ab1 100644 --- a/runtime/westend/src/weights/pallet_staking.rs +++ b/runtime/westend/src/weights/pallet_staking.rs @@ -16,7 +16,7 @@ //! Autogenerated weights for `pallet_staking` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-07-02, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2021-07-07, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 // Executed Command: @@ -31,7 +31,7 @@ // --wasm-execution=compiled // --heap-pages=4096 // --header=./file_header.txt -// --output=./runtime/westend/src/weights/ +// --output=runtime/westend/src/weights/ #![allow(unused_parens)] #![allow(unused_imports)] @@ -43,24 +43,24 @@ use sp_std::marker::PhantomData; pub struct WeightInfo(PhantomData); impl pallet_staking::WeightInfo for WeightInfo { fn bond() -> Weight { - (71_835_000 as Weight) + (70_644_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } fn bond_extra() -> Weight { - (54_894_000 as Weight) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) + (57_596_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } fn unbond() -> Weight { - (59_419_000 as Weight) + (57_410_000 as Weight) .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } fn withdraw_unbonded_update(s: u32) -> Weight { (50_384_000 as Weight) // Standard Error: 0 - .saturating_add((26_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((33_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)) } @@ -73,9 +73,9 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } fn validate() -> Weight { - (33_672_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (69_191_000 as Weight) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } fn kick(k: u32) -> Weight { (11_371_000 as Weight) @@ -91,18 +91,18 @@ impl pallet_staking::WeightInfo for WeightInfo { .saturating_add((5_341_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(7 as Weight)) } fn chill() -> Weight { (17_740_000 as Weight).saturating_add(T::DbWeight::get().reads(3 as Weight)) } fn set_payee() -> Weight { - (11_624_000 as Weight) + (11_867_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } fn set_controller() -> Weight { - (25_480_000 as Weight) + (26_102_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -121,15 +121,15 @@ impl pallet_staking::WeightInfo for WeightInfo { fn set_invulnerables(v: u32) -> Weight { (2_352_000 as Weight) // Standard Error: 0 - .saturating_add((27_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((5_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_282_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_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)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } fn cancel_deferred_slash(s: u32) -> Weight { @@ -166,8 +166,8 @@ impl pallet_staking::WeightInfo for WeightInfo { } fn set_history_depth(e: u32) -> Weight { (0 as Weight) - // Standard Error: 63_000 - .saturating_add((33_032_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 76_000 + .saturating_add((33_612_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))) @@ -175,40 +175,38 @@ impl pallet_staking::WeightInfo for WeightInfo { fn reap_stash(s: u32) -> Weight { (69_690_000 as Weight) // Standard Error: 1_000 - .saturating_add((2_271_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((2_214_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 { (0 as Weight) - // Standard Error: 787_000 - .saturating_add((310_720_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 39_000 - .saturating_add((48_687_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))) + // 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))) .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 { (0 as Weight) // Standard Error: 110_000 - .saturating_add((25_641_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((25_393_000 as Weight).saturating_mul(v as Weight)) // Standard Error: 110_000 - .saturating_add((27_889_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 3_749_000 - .saturating_add((15_769_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add((34_992_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(179 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().reads((4 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) } fn get_npos_targets(v: u32) -> Weight { (0 as Weight) - // Standard Error: 36_000 - .saturating_add((10_960_000 as Weight).saturating_mul(v 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)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) } @@ -216,8 +214,8 @@ impl pallet_staking::WeightInfo for WeightInfo { (5_696_000 as Weight).saturating_add(T::DbWeight::get().writes(5 as Weight)) } fn chill_other() -> Weight { - (41_216_000 as Weight) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (84_796_000 as Weight) + .saturating_add(T::DbWeight::get().reads(11 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } } diff --git a/utils/remote-ext-tests/bags-list/Cargo.toml b/utils/remote-ext-tests/bags-list/Cargo.toml new file mode 100644 index 000000000000..7201215e78cd --- /dev/null +++ b/utils/remote-ext-tests/bags-list/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "remote-ext-tests-bags-list" +version = "0.9.9" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +polkadot-runtime = { version = "0.9.8", path = "../../../runtime/polkadot" } +kusama-runtime = { version = "0.9.8", path = "../../../runtime/kusama" } + +pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master" } +pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" } +remote-externalities = { git = "https://github.com/paritytech/substrate", branch = "master" } +tokio = { version = "1", features = ["macros"] } +log = { version = "0.4.14" } +structopt = {version = "0.3.23" } diff --git a/utils/remote-ext-tests/bags-list/README.md b/utils/remote-ext-tests/bags-list/README.md new file mode 100644 index 000000000000..4955e29b3cb2 --- /dev/null +++ b/utils/remote-ext-tests/bags-list/README.md @@ -0,0 +1,3 @@ +# Remote Extension Tests For Pallet Bags List + +Integration tests that use state from live chains via remote externalities. diff --git a/utils/remote-ext-tests/bags-list/src/main.rs b/utils/remote-ext-tests/bags-list/src/main.rs new file mode 100644 index 000000000000..410cb1e80511 --- /dev/null +++ b/utils/remote-ext-tests/bags-list/src/main.rs @@ -0,0 +1,59 @@ +// 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 . + +//! Remote tests. + +use structopt::StructOpt; + +mod voter_bags; + +#[derive(StructOpt)] +enum Runtime { + Kusama, +} + +impl std::str::FromStr for Runtime { + type Err = &'static str; + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "kusama" => Ok(Runtime::Kusama), + _ => Err("wrong Runtime: can be 'polkadot' or 'kusama'."), + } + } +} + +#[derive(StructOpt)] +struct Cli { + #[structopt(long, default_value = "wss://rpc.kusama.io")] + uri: String, + #[structopt(long, short, default_value = "kusama")] + runtime: Runtime, +} + +#[tokio::main] +async fn main() { + let options = Cli::from_args(); + match options.runtime { + Runtime::Kusama => { + use kusama_runtime::{constants::currency::UNITS, Block, Runtime}; + voter_bags::test_voter_bags_migration::( + UNITS as u64, + options.uri.clone(), + ) + .await; + }, + } +} diff --git a/utils/remote-ext-tests/bags-list/src/voter_bags.rs b/utils/remote-ext-tests/bags-list/src/voter_bags.rs new file mode 100644 index 000000000000..94f7d605eae3 --- /dev/null +++ b/utils/remote-ext-tests/bags-list/src/voter_bags.rs @@ -0,0 +1,148 @@ +// 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 . + +//! Generic remote tests for the voter bags module. + +use frame_election_provider_support::SortedListProvider; +use frame_support::traits::Get; +use pallet_election_provider_multi_phase as EPM; +use pallet_staking::{BalanceOf, MinNominatorBond, Nominators}; +use remote_externalities::{Builder, Mode, OnlineConfig}; +use sp_runtime::traits::Block as BlockT; +use sp_std::convert::TryInto; +use sp_storage::well_known_keys; + +const LOG_TARGET: &'static str = "remote-ext-tests::bags-list"; + +/// Test voter bags migration. `currency_unit` is the number of planks per the +/// the runtimes `UNITS` (i.e. number of decimal places per DOT, KSM etc) +pub(crate) async fn test_voter_bags_migration< + Runtime: pallet_staking::Config + pallet_bags_list::Config + EPM::Config, + Block: BlockT, +>( + currency_unit: u64, + ws_url: String, +) { + sp_tracing::try_init_simple(); + + let mut ext = Builder::::new() + .mode(Mode::Online(OnlineConfig { + transport: ws_url.to_string().into(), + modules: vec!["Staking".to_string()], + at: None, + state_snapshot: None, + })) + .inject_hashed_key(well_known_keys::CODE) + .build() + .await + .unwrap(); + + ext.execute_with(|| { + // set the ss58 prefix so addresses printed below are human friendly. + sp_core::crypto::set_default_ss58_version(Runtime::SS58Prefix::get().try_into().unwrap()); + + // get the nominator & validator count prior to migrating; these should be invariant. + let pre_migrate_nominator_count = >::iter().count() as u32; + log::info!(target: LOG_TARGET, "Nominator count: {}", pre_migrate_nominator_count); + + // run the actual migration, + let moved = ::SortedListProvider::regenerate( + pallet_staking::Nominators::::iter().map(|(n, _)| n), + pallet_staking::Pallet::::weight_of_fn(), + ); + log::info!(target: LOG_TARGET, "Moved {} nominators", moved); + + let voter_list_len = + ::SortedListProvider::iter().count() as u32; + let voter_list_count = ::SortedListProvider::count(); + // and confirm it is equal to the length of the `VoterList`. + assert_eq!(pre_migrate_nominator_count, voter_list_len); + assert_eq!(pre_migrate_nominator_count, voter_list_count); + + let min_nominator_bond = >::get(); + log::info!(target: LOG_TARGET, "min nominator bond is {:?}", min_nominator_bond); + + // go through every bag to track the total number of voters within bags + // and log some info about how voters are distributed within the bags. + let mut seen_in_bags = 0; + for vote_weight_thresh in ::BagThresholds::get() { + // threshold in terms of UNITS (e.g. KSM, DOT etc) + let vote_weight_thresh_as_unit = *vote_weight_thresh as f64 / currency_unit as f64; + let pretty_thresh = format!("Threshold: {}.", vote_weight_thresh_as_unit); + + let bag = match pallet_bags_list::Pallet::::list_bags_get(*vote_weight_thresh) + { + Some(bag) => bag, + None => { + log::info!(target: LOG_TARGET, "{} NO VOTERS.", pretty_thresh); + continue + }, + }; + + let voters_in_bag = bag.std_iter().count() as u32; + + // if this bag is below the min nominator bond print out all the members + let vote_weight_as_balance: BalanceOf = + (*vote_weight_thresh).try_into().map_err(|_| "should not fail").unwrap(); + if vote_weight_as_balance <= min_nominator_bond { + for id in bag.std_iter().map(|node| node.std_id().clone()) { + log::trace!( + target: LOG_TARGET, + "{} Account found below min bond: {:?}.", + pretty_thresh, + id + ); + } + } + + // update our overall counter + seen_in_bags += voters_in_bag; + + // percentage of all nominators + let percent_of_voters = percent(voters_in_bag, voter_list_count); + + log::info!( + target: LOG_TARGET, + "{} Nominators: {} [%{:.3}]", + pretty_thresh, + voters_in_bag, + percent_of_voters, + ); + } + + if seen_in_bags != voter_list_count { + log::error!( + target: LOG_TARGET, + "bags list population ({}) not on par whoever is voter_list ({})", + seen_in_bags, + voter_list_count, + ) + } + + // now let's test the process of a snapshot being created.. + EPM::Pallet::::create_snapshot().unwrap(); + + log::info!( + target: LOG_TARGET, + "a snapshot has been created using the new runtime and data, with metadata {:?}", + EPM::Pallet::::snapshot_metadata(), + ); + }); +} + +fn percent(portion: u32, total: u32) -> f64 { + (portion as f64 / total as f64) * 100f64 +} diff --git a/utils/voter-bags/Cargo.toml b/utils/voter-bags/Cargo.toml new file mode 100644 index 000000000000..0c48442e6cf3 --- /dev/null +++ b/utils/voter-bags/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "polkadot-voter-bags" +version = "0.9.0" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +generate-bags = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" } +structopt = "0.3.21" + +westend-runtime = { path = "../../runtime/westend" } +kusama-runtime = { path = "../../runtime/kusama" } +polkadot-runtime = { path = "../../runtime/polkadot" } diff --git a/utils/voter-bags/src/main.rs b/utils/voter-bags/src/main.rs new file mode 100644 index 000000000000..3cbb06629f80 --- /dev/null +++ b/utils/voter-bags/src/main.rs @@ -0,0 +1,82 @@ +// 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 . + +//! Make the set of voting bag thresholds to be used in `voter_bags.rs`. +//! +//! Generally speaking this script can be run once per runtime and never +//! touched again. It can be reused to regenerate a wholly different +//! quantity of bags, or if the existential deposit changes, etc. + +use generate_bags::generate_thresholds; +use kusama_runtime::Runtime as KusamaRuntime; +use polkadot_runtime::Runtime as PolkadotRuntime; +use std::path::{Path, PathBuf}; +use structopt::{clap::arg_enum, StructOpt}; +use westend_runtime::Runtime as WestendRuntime; + +arg_enum! { + #[derive(Debug)] + enum Runtime { + Westend, + Kusama, + Polkadot, + } +} + +impl Runtime { + fn generate_thresholds_fn( + &self, + ) -> Box Result<(), std::io::Error>> { + match self { + Runtime::Westend => Box::new(generate_thresholds::), + Runtime::Kusama => Box::new(generate_thresholds::), + Runtime::Polkadot => Box::new(generate_thresholds::), + } + } +} + +#[derive(Debug, StructOpt)] +struct Opt { + /// How many bags to generate. + #[structopt(long, default_value = "200")] + n_bags: usize, + + /// Which runtime to generate. + #[structopt( + long, + case_insensitive = true, + default_value = "Polkadot", + possible_values = &Runtime::variants(), + )] + runtime: Runtime, + + /// Where to write the output. + output: PathBuf, + + /// The total issuance of the native currency. + #[structopt(short, long)] + total_issuance: u128, + + /// The minimum account balance (i.e. existential deposit) for the native currency. + #[structopt(short, long)] + minimum_balance: u128, +} + +fn main() -> Result<(), std::io::Error> { + let Opt { n_bags, output, runtime, total_issuance, minimum_balance } = Opt::from_args(); + + runtime.generate_thresholds_fn()(n_bags, &output, total_issuance, minimum_balance) +} From d26815243a2af9547568f13eadd226de3df07479 Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Fri, 17 Sep 2021 12:10:50 +0200 Subject: [PATCH 043/138] Dispute distribution improvements (#3853) * Better warning policy on dispute-distribution. Network errors happen, only warn on a minimum number of failed attempts. * Add metric to see how long it takes to get a dispute vote out. * Let's be alert. --- .../dispute-distribution/src/metrics.rs | 17 +++- .../dispute-distribution/src/sender/mod.rs | 16 +++- .../src/sender/send_task.rs | 95 ++++++++++++------- 3 files changed, 91 insertions(+), 37 deletions(-) diff --git a/node/network/dispute-distribution/src/metrics.rs b/node/network/dispute-distribution/src/metrics.rs index 9b891b47b79c..54a1bb9e6085 100644 --- a/node/network/dispute-distribution/src/metrics.rs +++ b/node/network/dispute-distribution/src/metrics.rs @@ -46,6 +46,9 @@ struct MetricsInner { /// /// We both have successful imports and failed imports here. imported_requests: CounterVec, + + /// The duration of issued dispute request to response. + time_dispute_request: prometheus::Histogram, } impl Metrics { @@ -61,7 +64,7 @@ impl Metrics { } } - /// Increment counter on served chunks. + /// Increment counter on served disputes. pub fn on_received_request(&self) { if let Some(metrics) = &self.0 { metrics.received_requests.inc() @@ -74,6 +77,11 @@ impl Metrics { metrics.imported_requests.with_label_values(&[label]).inc() } } + + /// Get a timer to time request/response duration. + pub fn time_dispute_request(&self) -> Option { + self.0.as_ref().map(|metrics| metrics.time_dispute_request.start_timer()) + } } impl metrics::Metrics for Metrics { @@ -106,6 +114,13 @@ impl metrics::Metrics for Metrics { )?, registry, )?, + time_dispute_request: prometheus::register( + prometheus::Histogram::with_opts(prometheus::HistogramOpts::new( + "parachain_dispute_distribution_time_dispute_request", + "Time needed for dispute votes to get confirmed/fail getting transmitted.", + ))?, + registry, + )?, }; Ok(Metrics(Some(metrics))) } diff --git a/node/network/dispute-distribution/src/sender/mod.rs b/node/network/dispute-distribution/src/sender/mod.rs index c640d5374245..b1243ec0ef32 100644 --- a/node/network/dispute-distribution/src/sender/mod.rs +++ b/node/network/dispute-distribution/src/sender/mod.rs @@ -97,9 +97,15 @@ impl DisputeSender { return Ok(()) }, Entry::Vacant(vacant) => { - let send_task = - SendTask::new(ctx, runtime, &self.active_sessions, self.tx.clone(), req) - .await?; + let send_task = SendTask::new( + ctx, + runtime, + &self.active_sessions, + self.tx.clone(), + req, + &self.metrics, + ) + .await?; vacant.insert(send_task); }, } @@ -140,7 +146,9 @@ impl DisputeSender { for dispute in self.disputes.values_mut() { if have_new_sessions || dispute.has_failed_sends() { - dispute.refresh_sends(ctx, runtime, &self.active_sessions).await?; + dispute + .refresh_sends(ctx, runtime, &self.active_sessions, &self.metrics) + .await?; } } diff --git a/node/network/dispute-distribution/src/sender/send_task.rs b/node/network/dispute-distribution/src/sender/send_task.rs index 0c3681a30a99..6b7958b06281 100644 --- a/node/network/dispute-distribution/src/sender/send_task.rs +++ b/node/network/dispute-distribution/src/sender/send_task.rs @@ -20,12 +20,13 @@ use futures::{channel::mpsc, future::RemoteHandle, Future, FutureExt, SinkExt}; use polkadot_node_network_protocol::{ request_response::{ + outgoing::RequestError, v1::{DisputeRequest, DisputeResponse}, OutgoingRequest, OutgoingResult, Recipient, Requests, }, IfDisconnected, }; -use polkadot_node_subsystem_util::runtime::RuntimeInfo; +use polkadot_node_subsystem_util::{metrics, runtime::RuntimeInfo}; use polkadot_primitives::v1::{ AuthorityDiscoveryId, CandidateHash, Hash, SessionIndex, ValidatorIndex, }; @@ -38,7 +39,7 @@ use super::error::{Fatal, Result}; use crate::{ metrics::{FAILED, SUCCEEDED}, - LOG_TARGET, + Metrics, LOG_TARGET, }; /// Delivery status for a particular dispute. @@ -57,6 +58,16 @@ pub struct SendTask { /// Whether we have any tasks failed since the last refresh. has_failed_sends: bool, + /// Total count of failed transmissions. + /// + /// Used for issuing a warning, if that number gets above a certain threshold. + failed_count: usize, + + /// Total number of initiated requests. + /// + /// Used together with `failed_count` for issuing a warning on too many failed attempts. + send_count: usize, + /// Sender to be cloned for tasks. tx: mpsc::Sender, } @@ -87,14 +98,14 @@ pub enum TaskResult { /// Task was not able to get the request out to its peer. /// /// It should be retried in that case. - Failed, + Failed(RequestError), } impl TaskResult { pub fn as_metrics_label(&self) -> &'static str { match self { Self::Succeeded => SUCCEEDED, - Self::Failed => FAILED, + Self::Failed(_) => FAILED, } } } @@ -107,10 +118,17 @@ impl SendTask { active_sessions: &HashMap, tx: mpsc::Sender, request: DisputeRequest, + metrics: &Metrics, ) -> Result { - let mut send_task = - Self { request, deliveries: HashMap::new(), has_failed_sends: false, tx }; - send_task.refresh_sends(ctx, runtime, active_sessions).await?; + let mut send_task = Self { + request, + deliveries: HashMap::new(), + has_failed_sends: false, + tx, + failed_count: 0, + send_count: 0, + }; + send_task.refresh_sends(ctx, runtime, active_sessions, metrics).await?; Ok(send_task) } @@ -123,6 +141,7 @@ impl SendTask { ctx: &mut Context, runtime: &mut RuntimeInfo, active_sessions: &HashMap, + metrics: &Metrics, ) -> Result<()> { let new_authorities = self.get_relevant_validators(ctx, runtime, active_sessions).await?; @@ -137,10 +156,12 @@ impl SendTask { // Start any new tasks that are needed: let new_statuses = - send_requests(ctx, self.tx.clone(), add_authorities, self.request.clone()).await?; + send_requests(ctx, self.tx.clone(), add_authorities, self.request.clone(), metrics) + .await?; - self.deliveries.extend(new_statuses.into_iter()); self.has_failed_sends = false; + self.send_count += new_statuses.len(); + self.deliveries.extend(new_statuses.into_iter()); Ok(()) } @@ -150,15 +171,38 @@ impl SendTask { } /// Handle a finished response waiting task. + /// + /// Called by `DisputeSender` upon reception of the corresponding message from our spawned `wait_response_task`. pub fn on_finished_send(&mut self, authority: &AuthorityDiscoveryId, result: TaskResult) { match result { - TaskResult::Failed => { - tracing::warn!( + TaskResult::Failed(err) => { + tracing::debug!( target: LOG_TARGET, - candidate = ?self.request.0.candidate_receipt.hash(), ?authority, - "Could not get our message out! If this keeps happening, then check chain whether the dispute made it there." + candidate_hash = %self.request.0.candidate_receipt.hash(), + %err, + "Error sending dispute statements to node." ); + + self.failed_count += 1; + let error_rate = (100 * self.failed_count).checked_div(self.send_count).expect( + "We cannot receive a failed request, without having sent one first. qed.", + ); + // 10% seems to be a sensible threshold to become alert - note that + // self.send_count gets increased in batches of the full validator set, so we don't + // need to account for a low send_count. + if error_rate > 10 { + tracing::warn!( + target: LOG_TARGET, + candidate_hash = %self.request.0.candidate_receipt.hash(), + last_authority = ?authority, + last_error = %err, + failed_count = ?self.failed_count, + total_attempts = ?self.send_count, + "Sending our dispute vote failed for more than 10% of total attempts!" + ); + } + self.has_failed_sends = true; // Remove state, so we know what to try again: self.deliveries.remove(authority); @@ -236,6 +280,7 @@ async fn send_requests( tx: mpsc::Sender, receivers: Vec, req: DisputeRequest, + metrics: &Metrics, ) -> Result> { let mut statuses = HashMap::with_capacity(receivers.len()); let mut reqs = Vec::with_capacity(receivers.len()); @@ -251,6 +296,7 @@ async fn send_requests( req.0.candidate_receipt.hash(), receiver.clone(), tx.clone(), + metrics.time_dispute_request(), ); let (remote, remote_handle) = fut.remote_handle(); @@ -273,28 +319,13 @@ async fn wait_response_task( candidate_hash: CandidateHash, receiver: AuthorityDiscoveryId, mut tx: mpsc::Sender, + _timer: Option, ) { let result = pending_response.await; let msg = match result { - Err(err) => { - tracing::warn!( - target: LOG_TARGET, - %candidate_hash, - %receiver, - %err, - "Error sending dispute statements to node." - ); - TaskFinish { candidate_hash, receiver, result: TaskResult::Failed } - }, - Ok(DisputeResponse::Confirmed) => { - tracing::trace!( - target: LOG_TARGET, - %candidate_hash, - %receiver, - "Sending dispute message succeeded" - ); - TaskFinish { candidate_hash, receiver, result: TaskResult::Succeeded } - }, + Err(err) => TaskFinish { candidate_hash, receiver, result: TaskResult::Failed(err) }, + Ok(DisputeResponse::Confirmed) => + TaskFinish { candidate_hash, receiver, result: TaskResult::Succeeded }, }; if let Err(err) = tx.feed(msg).await { tracing::debug!( From 7bc352628e65ec99f3393503a28c8a0c8e4202bd Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Fri, 17 Sep 2021 21:39:33 +0200 Subject: [PATCH 044/138] remove connected disconnected state only (#3868) * remove connected disconnected state from overseer * foo * split new partial * fix * refactor init code to not require a `OverseerHandle` when we don't have an overseer * intermediate * fixins * X * fixup * foo * fixup * docs * conditional * Update node/service/src/lib.rs * review by ladi --- Cargo.lock | 1 + doc/testing.md | 3 +- node/malus/src/variant-a.rs | 5 +- node/overseer/examples/minimal-example.rs | 14 +- .../proc-macro/src/impl_builder.rs | 2 +- node/overseer/src/dummy.rs | 54 ++++ node/overseer/src/lib.rs | 87 ++---- node/overseer/src/metrics.rs | 4 +- node/overseer/src/subsystems.rs | 42 +-- node/overseer/src/tests.rs | 74 +++-- node/service/Cargo.toml | 1 + node/service/src/lib.rs | 276 +++++++++++------- node/service/src/overseer.rs | 196 ++++++++++++- node/service/src/relay_chain_selection.rs | 79 +++-- node/service/src/tests.rs | 2 +- node/subsystem-test-helpers/src/lib.rs | 7 +- node/subsystem/src/lib.rs | 4 +- 17 files changed, 548 insertions(+), 303 deletions(-) create mode 100644 node/overseer/src/dummy.rs diff --git a/Cargo.lock b/Cargo.lock index 8d6986a73574..631c36009309 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6841,6 +6841,7 @@ dependencies = [ "kvdb", "kvdb-rocksdb", "log", + "lru", "pallet-babe", "pallet-im-online", "pallet-mmr-primitives", 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/node/malus/src/variant-a.rs b/node/malus/src/variant-a.rs index a545bd360faf..8abdf75198b3 100644 --- a/node/malus/src/variant-a.rs +++ b/node/malus/src/variant-a.rs @@ -37,7 +37,7 @@ use polkadot_cli::{ use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; use polkadot_node_subsystem::{ messages::{AllMessages, CandidateValidationMessage}, - overseer::{self, OverseerHandle}, + overseer::{self, OverseerConnector, OverseerHandle}, FromOverseer, }; @@ -86,6 +86,7 @@ struct BehaveMaleficient; impl OverseerGen for BehaveMaleficient { fn generate<'a, Spawner, RuntimeClient>( &self, + connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandle), Error> where @@ -113,7 +114,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()) } } diff --git a/node/overseer/examples/minimal-example.rs b/node/overseer/examples/minimal-example.rs index 6970054a3013..0c4a3bdc6ae6 100644 --- a/node/overseer/examples/minimal-example.rs +++ b/node/overseer/examples/minimal-example.rs @@ -29,7 +29,8 @@ use polkadot_node_subsystem_types::messages::{ use polkadot_overseer::{ self as overseer, gen::{FromOverseer, SpawnedSubsystem}, - AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerSignal, SubsystemError, + AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerConnector, + OverseerSignal, SubsystemError, }; use polkadot_primitives::v1::Hash; @@ -173,8 +174,15 @@ fn main() { .replace_candidate_validation(|_| Subsystem2) .replace_candidate_backing(|orig| orig); - let (overseer, _handle) = - Overseer::new(vec![], all_subsystems, None, AlwaysSupportsParachains, spawner).unwrap(); + let (overseer, _handle) = Overseer::new( + vec![], + all_subsystems, + None, + AlwaysSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); let overseer_fut = overseer.run().fuse(); let timer_stream = timer_stream; 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..b736de97d463 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs @@ -130,7 +130,7 @@ 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 } } diff --git a/node/overseer/src/dummy.rs b/node/overseer/src/dummy.rs new file mode 100644 index 000000000000..c3d3d4fcf3c8 --- /dev/null +++ b/node/overseer/src/dummy.rs @@ -0,0 +1,54 @@ +// 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::{AllMessages, OverseerSignal}; +use polkadot_node_subsystem_types::errors::SubsystemError; +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 } + } +} diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 935cf6ebbef8..9b1e591b44c2 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -70,7 +70,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,12 +90,17 @@ pub use polkadot_node_subsystem_types::{ jaeger, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, OverseerSignal, }; +/// Test helper supplements. +pub mod dummy; +pub use self::dummy::DummySubsystem; + // 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 use self::subsystems::AllSubsystems; -mod metrics; +/// Metrics re-exports of `polkadot-metrics`. +pub mod metrics; use self::metrics::Metrics; use polkadot_node_metrics::{ @@ -116,7 +120,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; @@ -142,18 +146,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(pub 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. @@ -202,58 +200,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"); } } } @@ -491,12 +439,13 @@ where /// # use polkadot_primitives::v1::Hash; /// # use polkadot_overseer::{ /// # self as overseer, + /// # Overseer, /// # OverseerSignal, + /// # OverseerConnector, /// # SubsystemSender as _, /// # AllMessages, /// # AllSubsystems, /// # HeadSupportsParachains, - /// # Overseer, /// # SubsystemError, /// # gen::{ /// # SubsystemContext, @@ -550,6 +499,7 @@ where /// None, /// AlwaysSupportsParachains, /// spawner, + /// OverseerConnector::default(), /// ).unwrap(); /// /// let timer = Delay::new(Duration::from_millis(50)).fuse(); @@ -616,6 +566,7 @@ where prometheus_registry: Option<&prometheus::Registry>, supports_parachains: SupportsParachains, s: S, + connector: OverseerConnector, ) -> SubsystemResult<(Self, OverseerHandle)> where CV: Subsystem, SubsystemError> + Send, @@ -680,7 +631,7 @@ where .supports_parachains(supports_parachains) .metrics(metrics.clone()) .spawner(s) - .build()?; + .build_with_connector(connector)?; // spawn the metrics metronome task { diff --git a/node/overseer/src/metrics.rs b/node/overseer/src/metrics.rs index e6a1ec4f4086..5b57f3336131 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}; #[cfg(feature = "memory-stats")] use polkadot_node_metrics::MemoryAllocationSnapshot; @@ -117,7 +117,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 index 648528730d67..695d368dc16c 100644 --- a/node/overseer/src/subsystems.rs +++ b/node/overseer/src/subsystems.rs @@ -19,47 +19,9 @@ //! 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 crate::dummy::DummySubsystem; 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 } - } -} +use polkadot_overseer_gen::MapSubsystem; /// This struct is passed as an argument to create a new instance of an [`Overseer`]. /// diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs index 7564116e7141..349b04d34be3 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -32,7 +32,7 @@ use polkadot_primitives::v1::{ ValidatorIndex, }; -use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer}; +use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer, OverseerConnector}; use metered_channel as metered; use assert_matches::assert_matches; @@ -164,9 +164,16 @@ fn overseer_works() { .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); + let (overseer, handle) = Overseer::new( + vec![], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -227,9 +234,10 @@ fn overseer_metrics_work() { Some(®istry), MockSupportsParachains, spawner, + OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -280,8 +288,15 @@ fn overseer_ends_on_subsystem_exit() { 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) = Overseer::new( + vec![], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); overseer.run().await.unwrap(); }) @@ -382,10 +397,16 @@ fn overseer_start_stop_works() { let all_subsystems = AllSubsystems::<()>::dummy() .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); + let (overseer, handle) = Overseer::new( + vec![first_block], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -486,9 +507,10 @@ fn overseer_finalize_works() { None, MockSupportsParachains, spawner, + OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -573,10 +595,16 @@ fn do_not_send_empty_leaves_update_on_block_finalization() { let all_subsystems = AllSubsystems::<()>::dummy().replace_candidate_backing(move |_| TestSubsystem6(tx_5)); - let (overseer, handle) = - Overseer::new(Vec::new(), all_subsystems, None, MockSupportsParachains, spawner) - .unwrap(); - let mut handle = Handle::Connected(handle); + let (overseer, handle) = Overseer::new( + Vec::new(), + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -849,9 +877,17 @@ fn overseer_all_subsystems_receive_signals_and_messages() { 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); + + let (overseer, handle) = Overseer::new( + vec![], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 213afe4edb1a..66c936e9a6c3 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -26,6 +26,7 @@ sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "maste sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } telemetry = { package = "sc-telemetry", git = "https://github.com/paritytech/substrate", branch = "master" } +lru = "0.6" # Substrate Primitives sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index bcb181fa04b8..ab9f732ec44f 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -54,7 +54,7 @@ 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, sc_client_api::AuxStore, sp_authority_discovery::AuthorityDiscoveryApi, @@ -68,6 +68,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 +304,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 +322,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 @@ -391,21 +387,62 @@ where )?; let client = Arc::new(client); - let telemetry = telemetry.map(|(worker, telemetry)| { + jaeger_launch_collector_with_agent(task_manager.spawn_handle(), &*config, jaeger_agent)?; + + let telemetry: Option<_> = telemetry.map(|(worker, telemetry)| { if let Some(worker) = worker { task_manager.spawn_handle().spawn("telemetry", worker.run()); } telemetry }); - 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 +711,50 @@ where let disable_grandpa = config.disable_grandpa; let name = config.network.node_name.clone(); - let service::PartialComponents { + let overseer_connector = OverseerConnector::default(); + + let handle = Handle(overseer_connector.as_handle().clone()); + + let basics = new_partial_basics::( + &mut config, + jaeger_agent, + telemetry_worker_handle, + )?; + + // we should remove this check before we deploy parachains on polkadot + // TODO: https://github.com/paritytech/polkadot/issues/3326 + let chain_spec = &config.chain_spec as &dyn IdentifyVariant; + + let is_relay_chain = chain_spec.is_kusama() || + chain_spec.is_westend() || + chain_spec.is_rococo() || + chain_spec.is_wococo(); + + let prometheus_registry = config.prometheus_registry().cloned(); + + use relay_chain_selection::SelectRelayChain; + + let select_chain = SelectRelayChain::new( + basics.backend.clone(), + is_relay_chain, + handle.clone(), + 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; @@ -850,8 +914,10 @@ where local_keystore.and_then(move |k| authority_discovery_service.map(|a| (a, k))); let overseer_handle = if let Some((authority_discovery_service, keystore)) = maybe_params { - let (overseer, overseer_handle) = overseer_gen + // already have access to the handle + let (overseer, _handle) = overseer_gen .generate::>( + overseer_connector, OverseerGenArgs { leaves: active_leaves, keystore, @@ -875,40 +941,29 @@ where dispute_coordinator_config, }, )?; - 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 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_clone); + let forward = polkadot_overseer::forward_events(overseer_client, handle); - let forward = forward.fuse(); - let overseer_fut = overseer.run().fuse(); + let forward = forward.fuse(); + let overseer_fut = overseer.run().fuse(); - pin_mut!(overseer_fut); - pin_mut!(forward); + 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"); + select! { + _ = forward => (), + _ = overseer_fut => (), + complete => (), + } + }), + ); } Some(handle) } else { @@ -1228,6 +1283,31 @@ where Ok((task_manager, rpc_handlers)) } +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( @@ -1244,50 +1324,28 @@ 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)) + 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..385bab190266 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,14 @@ 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::DummySubsystem; +pub use polkadot_overseer::{ + metrics::{Metrics, MetricsTrait}, + AllSubsystems, BlockInfo, HeadSupportsParachains, Overseer, OverseerBuilder, OverseerConnector, + OverseerHandle, +}; + use polkadot_primitives::v1::ParachainHost; use sc_authority_discovery::Service as AuthorityDiscoveryService; use sc_client_api::AuxStore; @@ -255,6 +263,176 @@ where Ok(all_subsystems) } +/// 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, + network_service, + authority_discovery_service, + pov_req_receiver, + chunk_req_receiver, + collation_req_receiver, + available_data_req_receiver, + statement_req_receiver, + dispute_req_receiver, + registry, + spawner, + is_collator, + approval_voting_config, + availability_config, + candidate_validation_config, + chain_selection_config, + dispute_coordinator_config, + }: OverseerGenArgs<'a, Spawner, RuntimeClient>, +) -> Result< + OverseerBuilder< + Spawner, + Arc, + CandidateValidationSubsystem, + CandidateBackingSubsystem, + StatementDistributionSubsystem, + AvailabilityDistributionSubsystem, + AvailabilityRecoverySubsystem, + BitfieldSigningSubsystem, + BitfieldDistributionSubsystem, + ProvisionerSubsystem, + RuntimeApiSubsystem, + AvailabilityStoreSubsystem, + NetworkBridgeSubsystem< + Arc>, + AuthorityDiscoveryService, + >, + ChainApiSubsystem, + CollationGenerationSubsystem, + CollatorProtocolSubsystem, + ApprovalDistributionSubsystem, + ApprovalVotingSubsystem, + GossipSupportSubsystem, + DisputeCoordinatorSubsystem, + DisputeParticipationSubsystem, + DisputeDistributionSubsystem, + ChainSelectionSubsystem, + >, + Error, +> +where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, +{ + use polkadot_node_subsystem_util::metrics::Metrics; + use std::iter::FromIterator; + + 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( + available_data_req_receiver, + Metrics::register(registry)?, + )) + .availability_store(AvailabilityStoreSubsystem::new( + parachains_db.clone(), + availability_config, + Metrics::register(registry)?, + )) + .bitfield_distribution(BitfieldDistributionSubsystem::new(Metrics::register(registry)?)) + .bitfield_signing(BitfieldSigningSubsystem::new( + spawner.clone(), + keystore.clone(), + Metrics::register(registry)?, + )) + .candidate_backing(CandidateBackingSubsystem::new( + spawner.clone(), + keystore.clone(), + Metrics::register(registry)?, + )) + .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({ + let side = match is_collator { + IsCollator::Yes(collator_pair) => ProtocolSide::Collator( + network_service.local_peer_id().clone(), + collator_pair, + collation_req_receiver, + Metrics::register(registry)?, + ), + IsCollator::No => ProtocolSide::Validator { + keystore: keystore.clone(), + eviction_policy: Default::default(), + metrics: Metrics::register(registry)?, + }, + }; + CollatorProtocolSubsystem::new(side) + }) + .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( + runtime_client.clone(), + Metrics::register(registry)?, + spawner.clone(), + )) + .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_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( + parachains_db.clone(), + dispute_coordinator_config, + keystore.clone(), + Metrics::register(registry)?, + )) + .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)) + .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. /// /// Default behavior is to create an unmodified overseer, as `RealOverseerGen` @@ -263,6 +441,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 +450,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 +473,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..cece25d3e547 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,57 @@ 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 { + is_relay_chain: self.is_relay_chain, + longest_chain: self.longest_chain.clone(), + 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, is_relay_chain: bool, overseer: Handle, metrics: Metrics) -> Self { + SelectRelayChain { + is_relay_chain, + longest_chain: sc_consensus::LongestChain::new(backend.clone()), + selection: SelectRelayChainInner::new(backend, overseer, metrics), } } } -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); - } -} - #[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 } @@ -179,34 +170,34 @@ where maybe_max_number: Option, ) -> Result, ConsensusError> { 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 +225,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 +264,7 @@ impl OverseerHandleT for Handle { } } -impl SelectRelayChain +impl SelectRelayChainInner where B: HeaderProviderProvider, OH: OverseerHandleT, @@ -317,7 +308,7 @@ 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, diff --git a/node/service/src/tests.rs b/node/service/src/tests.rs index 34ac69d78cc7..7dc5fe19ecbd 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(), diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index 80dae08825b0..c180c1d0ea88 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -372,7 +372,9 @@ 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::{ + AllSubsystems, Handle, HeadSupportsParachains, Overseer, OverseerConnector, + }; use polkadot_primitives::v1::Hash; struct AlwaysSupportsParachains; @@ -394,9 +396,10 @@ mod tests { None, AlwaysSupportsParachains, spawner.clone(), + OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle(handle); spawner.spawn("overseer", overseer.run().then(|_| async { () }).boxed()); diff --git a/node/subsystem/src/lib.rs b/node/subsystem/src/lib.rs index f0918ab1dc02..429120709a07 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, dummy::DummySubsystem, ActiveLeavesUpdate, OverseerConnector, OverseerSignal, +}; pub use polkadot_node_subsystem_types::{ errors::{self, *}, From e106953744e88abaaa16a7e109e6eb9596076460 Mon Sep 17 00:00:00 2001 From: Zeke Mostov <32168567+emostov@users.noreply.github.com> Date: Fri, 17 Sep 2021 15:41:12 -0700 Subject: [PATCH 045/138] Run fmt (#3887) --- node/service/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index ab9f732ec44f..66047854f3c2 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -1345,7 +1345,7 @@ pub fn new_chain_ops( { chain_ops!(config, jaeger_agent, telemetry_worker_handle; polkadot_runtime, PolkadotExecutorDispatch, Polkadot) } - + #[cfg(not(feature = "polkadot-native"))] Err(Error::NoRuntime) } From 4c547668ed38abee7b831e9f1cfd4af507418e1e Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Sat, 18 Sep 2021 02:57:50 -0700 Subject: [PATCH 046/138] Add benchmarking for parachain runtime configuration pallet (#3862) * Add benchmarking for parachain runtime configuration pallet * cargo fmt * Add WeightInfo trait * Specify missing WeightInfo associated type in mocks * Fix typo * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_configuration.rs * Fix compilation errors * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_configuration.rs * Condense the number of WeightInfo methods * Fixes * cargo run --quiet --release --features=runtime-benchmarks -- 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 * Make use of weights generated from kusama benchmarking * Use a better dispatch function for weighing set_config_with_block_number * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=runtime_parachains::configuration --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/runtime_parachains_configuration.rs Co-authored-by: Parity Bot --- runtime/common/src/integration_tests.rs | 4 +- runtime/common/src/paras_registrar.rs | 14 +-- runtime/kusama/src/lib.rs | 6 +- runtime/kusama/src/weights/mod.rs | 1 + .../runtime_parachains_configuration.rs | 91 ++++++++++++++++ runtime/parachains/Cargo.toml | 4 +- runtime/parachains/src/configuration.rs | 100 ++++++++++-------- .../src/configuration/benchmarking.rs | 44 ++++++++ .../parachains/src/configuration/weights.rs | 82 ++++++++++++++ runtime/parachains/src/lib.rs | 1 + runtime/parachains/src/mock.rs | 4 +- runtime/rococo/src/lib.rs | 4 +- runtime/test-runtime/src/lib.rs | 4 +- runtime/westend/src/lib.rs | 6 +- runtime/westend/src/weights/mod.rs | 1 + .../runtime_parachains_configuration.rs | 91 ++++++++++++++++ xcm/xcm-builder/tests/mock/mod.rs | 4 +- xcm/xcm-simulator/example/src/relay_chain.rs | 4 +- 18 files changed, 407 insertions(+), 58 deletions(-) create mode 100644 runtime/kusama/src/weights/runtime_parachains_configuration.rs create mode 100644 runtime/parachains/src/configuration/benchmarking.rs create mode 100644 runtime/parachains/src/configuration/weights.rs create mode 100644 runtime/westend/src/weights/runtime_parachains_configuration.rs diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index 50a1e9efaaac..c0e1615599e7 100644 --- a/runtime/common/src/integration_tests.rs +++ b/runtime/common/src/integration_tests.rs @@ -156,7 +156,9 @@ impl pallet_balances::Config for Test { type ReserveIdentifier = [u8; 8]; } -impl configuration::Config for Test {} +impl configuration::Config for Test { + type WeightInfo = configuration::weights::WeightInfo; +} impl shared::Config for Test {} diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index 5f444bcffc0f..ee595cd0df05 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -213,7 +213,7 @@ pub mod pallet { /// /// ## Events /// The `Registered` event is emitted in case of success. - #[pallet::weight(T::WeightInfo::register())] + #[pallet::weight(::WeightInfo::register())] pub fn register( origin: OriginFor, id: ParaId, @@ -231,7 +231,7 @@ pub mod pallet { /// /// The deposit taken can be specified for this registration. Any `ParaId` /// can be registered, including sub-1000 IDs which are System Parachains. - #[pallet::weight(T::WeightInfo::force_register())] + #[pallet::weight(::WeightInfo::force_register())] pub fn force_register( origin: OriginFor, who: T::AccountId, @@ -247,7 +247,7 @@ pub mod pallet { /// Deregister a Para Id, freeing all data and returning any deposit. /// /// The caller must be Root, the `para` owner, or the `para` itself. The para must be a parathread. - #[pallet::weight(T::WeightInfo::deregister())] + #[pallet::weight(::WeightInfo::deregister())] pub fn deregister(origin: OriginFor, id: ParaId) -> DispatchResult { Self::ensure_root_para_or_owner(origin, id)?; Self::do_deregister(id) @@ -264,7 +264,7 @@ pub mod pallet { /// `ParaId` to be a long-term identifier of a notional "parachain". However, their /// scheduling info (i.e. whether they're a parathread or parachain), auction information /// and the auction deposit are switched. - #[pallet::weight(T::WeightInfo::swap())] + #[pallet::weight(::WeightInfo::swap())] pub fn swap(origin: OriginFor, id: ParaId, other: ParaId) -> DispatchResult { Self::ensure_root_para_or_owner(origin, id)?; @@ -325,7 +325,7 @@ pub mod pallet { /// /// ## Events /// The `Reserved` event is emitted in case of success, which provides the ID reserved for use. - #[pallet::weight(T::WeightInfo::reserve())] + #[pallet::weight(::WeightInfo::reserve())] pub fn reserve(origin: OriginFor) -> DispatchResult { let who = ensure_signed(origin)?; let id = NextFreeParaId::::get().max(LOWEST_PUBLIC_ID); @@ -659,7 +659,9 @@ mod tests { type Event = Event; } - impl configuration::Config for Test {} + impl configuration::Config for Test { + type WeightInfo = configuration::weights::WeightInfo; + } parameter_types! { pub const ParaDeposit: Balance = 10; diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index cd6f3fc2e277..78e910f01f01 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1126,7 +1126,9 @@ impl pallet_proxy::Config for Runtime { impl parachains_origin::Config for Runtime {} -impl parachains_configuration::Config for Runtime {} +impl parachains_configuration::Config for Runtime { + type WeightInfo = weights::runtime_parachains_configuration::WeightInfo; +} impl parachains_shared::Config for Runtime {} @@ -2000,6 +2002,7 @@ sp_api::impl_runtime_apis! { 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); + list_benchmark!(list, extra, runtime_parachains::configuration, Configuration); // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -2074,6 +2077,7 @@ sp_api::impl_runtime_apis! { 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); + add_benchmark!(params, batches, runtime_parachains::configuration, Configuration); // 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 35273e1c98a0..adb103ad4eee 100644 --- a/runtime/kusama/src/weights/mod.rs +++ b/runtime/kusama/src/weights/mod.rs @@ -44,3 +44,4 @@ 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; diff --git a/runtime/kusama/src/weights/runtime_parachains_configuration.rs b/runtime/kusama/src/weights/runtime_parachains_configuration.rs new file mode 100644 index 000000000000..ae840f37752d --- /dev/null +++ b/runtime/kusama/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/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 8e3b41d95e6b..3b75b95619fe 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -28,12 +28,12 @@ pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", pallet-authorship = { 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-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } xcm = { package = "xcm", path = "../../xcm", default-features = false } xcm-executor = { package = "xcm-executor", path = "../../xcm/xcm-executor", default-features = false } diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index 64aaac6b3487..bcfc05e1a6c5 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -26,6 +26,10 @@ use primitives::v1::{Balance, SessionIndex, MAX_CODE_SIZE, MAX_POV_SIZE}; use sp_runtime::traits::Zero; use sp_std::prelude::*; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; +pub mod weights; + pub use pallet::*; pub mod migration; @@ -258,6 +262,15 @@ impl HostConfiguration { } } +pub trait WeightInfo { + fn set_config_with_block_number() -> Weight; + fn set_config_with_u32() -> Weight; + fn set_config_with_option_u32() -> Weight; + fn set_config_with_weight() -> Weight; + fn set_config_with_balance() -> Weight; + fn set_hrmp_open_request_ttl() -> Weight; +} + #[frame_support::pallet] pub mod pallet { use super::*; @@ -268,7 +281,10 @@ pub mod pallet { pub struct Pallet(_); #[pallet::config] - pub trait Config: frame_system::Config + shared::Config {} + pub trait Config: frame_system::Config + shared::Config { + /// Weight information for extrinsics in this pallet. + type WeightInfo: WeightInfo; + } #[pallet::error] pub enum Error { @@ -310,7 +326,7 @@ pub mod pallet { #[pallet::call] impl Pallet { /// Set the validation upgrade frequency. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_validation_upgrade_frequency( origin: OriginFor, new: T::BlockNumber, @@ -323,7 +339,7 @@ pub mod pallet { } /// Set the validation upgrade delay. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_validation_upgrade_delay( origin: OriginFor, new: T::BlockNumber, @@ -336,7 +352,7 @@ pub mod pallet { } /// Set the acceptance period for an included candidate. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_code_retention_period( origin: OriginFor, new: T::BlockNumber, @@ -349,7 +365,7 @@ pub mod pallet { } /// Set the max validation code size for incoming upgrades. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_code_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; ensure!(new <= MAX_CODE_SIZE, Error::::InvalidNewValue); @@ -360,7 +376,7 @@ pub mod pallet { } /// Set the max POV block size for incoming upgrades. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_pov_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; ensure!(new <= MAX_POV_SIZE, Error::::InvalidNewValue); @@ -371,7 +387,7 @@ pub mod pallet { } /// Set the max head data size for paras. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_head_data_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -381,7 +397,7 @@ pub mod pallet { } /// Set the number of parathread execution cores. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_parathread_cores(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -391,7 +407,7 @@ pub mod pallet { } /// Set the number of retries for a particular parathread. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_parathread_retries(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -401,7 +417,7 @@ pub mod pallet { } /// Set the parachain validator-group rotation frequency - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_group_rotation_frequency( origin: OriginFor, new: T::BlockNumber, @@ -417,7 +433,7 @@ pub mod pallet { } /// Set the availability period for parachains. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_chain_availability_period( origin: OriginFor, new: T::BlockNumber, @@ -433,7 +449,7 @@ pub mod pallet { } /// Set the availability period for parathreads. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_thread_availability_period( origin: OriginFor, new: T::BlockNumber, @@ -449,7 +465,7 @@ pub mod pallet { } /// Set the scheduling lookahead, in expected number of blocks at peak throughput. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_scheduling_lookahead(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -459,7 +475,7 @@ pub mod pallet { } /// Set the maximum number of validators to assign to any core. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_option_u32())] pub fn set_max_validators_per_core( origin: OriginFor, new: Option, @@ -472,7 +488,7 @@ pub mod pallet { } /// Set the maximum number of validators to use in parachain consensus. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_option_u32())] pub fn set_max_validators(origin: OriginFor, new: Option) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -482,7 +498,7 @@ pub mod pallet { } /// Set the dispute period, in number of sessions to keep for disputes. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_dispute_period(origin: OriginFor, new: SessionIndex) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -492,7 +508,7 @@ pub mod pallet { } /// Set the dispute post conclusion acceptance period. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_dispute_post_conclusion_acceptance_period( origin: OriginFor, new: T::BlockNumber, @@ -506,7 +522,7 @@ pub mod pallet { } /// Set the maximum number of dispute spam slots. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_dispute_max_spam_slots(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -516,7 +532,7 @@ pub mod pallet { } /// Set the dispute conclusion by time out period. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_block_number())] pub fn set_dispute_conclusion_by_time_out_period( origin: OriginFor, new: T::BlockNumber, @@ -530,7 +546,7 @@ pub mod pallet { /// Set the no show slots, in number of number of consensus slots. /// Must be at least 1. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_no_show_slots(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; @@ -543,7 +559,7 @@ pub mod pallet { } /// Set the total number of delay tranches. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_n_delay_tranches(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -553,7 +569,7 @@ pub mod pallet { } /// Set the zeroth delay tranche width. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_zeroth_delay_tranche_width(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -563,7 +579,7 @@ pub mod pallet { } /// Set the number of validators needed to approve a block. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_needed_approvals(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -573,7 +589,7 @@ pub mod pallet { } /// Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_relay_vrf_modulo_samples(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -583,7 +599,7 @@ pub mod pallet { } /// Sets the maximum items that can present in a upward dispatch queue at once. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_upward_queue_count(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -593,7 +609,7 @@ pub mod pallet { } /// Sets the maximum total size of items that can present in a upward dispatch queue at once. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_upward_queue_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -603,7 +619,7 @@ pub mod pallet { } /// Set the critical downward message size. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_downward_message_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -613,7 +629,7 @@ pub mod pallet { } /// Sets the soft limit for the phase of dispatching dispatchable upward messages. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_weight())] pub fn set_ump_service_total_weight(origin: OriginFor, new: Weight) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -623,7 +639,7 @@ pub mod pallet { } /// Sets the maximum size of an upward message that can be sent by a candidate. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_upward_message_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -633,7 +649,7 @@ pub mod pallet { } /// Sets the maximum number of messages that a candidate can contain. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_max_upward_message_num_per_candidate( origin: OriginFor, new: u32, @@ -646,7 +662,7 @@ pub mod pallet { } /// Sets the number of sessions after which an HRMP open channel request expires. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_hrmp_open_request_ttl())] // 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 { @@ -654,7 +670,7 @@ pub mod pallet { } /// Sets the amount of funds that the sender should provide for opening an HRMP channel. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_balance())] pub fn set_hrmp_sender_deposit(origin: OriginFor, new: Balance) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -665,7 +681,7 @@ pub mod pallet { /// Sets the amount of funds that the recipient should provide for accepting opening an HRMP /// channel. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_balance())] pub fn set_hrmp_recipient_deposit(origin: OriginFor, new: Balance) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -675,7 +691,7 @@ pub mod pallet { } /// Sets the maximum number of messages allowed in an HRMP channel at once. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_channel_max_capacity(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -685,7 +701,7 @@ pub mod pallet { } /// Sets the maximum total size of messages in bytes allowed in an HRMP channel at once. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_channel_max_total_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -695,7 +711,7 @@ pub mod pallet { } /// Sets the maximum number of inbound HRMP channels a parachain is allowed to accept. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_max_parachain_inbound_channels( origin: OriginFor, new: u32, @@ -708,7 +724,7 @@ pub mod pallet { } /// Sets the maximum number of inbound HRMP channels a parathread is allowed to accept. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_max_parathread_inbound_channels( origin: OriginFor, new: u32, @@ -721,7 +737,7 @@ pub mod pallet { } /// Sets the maximum size of a message that could ever be put into an HRMP channel. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_channel_max_message_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -731,7 +747,7 @@ pub mod pallet { } /// Sets the maximum number of outbound HRMP channels a parachain is allowed to open. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_max_parachain_outbound_channels( origin: OriginFor, new: u32, @@ -744,7 +760,7 @@ pub mod pallet { } /// Sets the maximum number of outbound HRMP channels a parathread is allowed to open. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_max_parathread_outbound_channels( origin: OriginFor, new: u32, @@ -757,7 +773,7 @@ pub mod pallet { } /// Sets the maximum number of outbound HRMP messages can be sent by a candidate. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_u32())] pub fn set_hrmp_max_message_num_per_candidate( origin: OriginFor, new: u32, @@ -770,7 +786,7 @@ pub mod pallet { } /// Sets the maximum amount of weight any individual upward message may consume. - #[pallet::weight((1_000, DispatchClass::Operational))] + #[pallet::weight(T::WeightInfo::set_config_with_weight())] 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/configuration/benchmarking.rs b/runtime/parachains/src/configuration/benchmarking.rs new file mode 100644 index 000000000000..8b319cb8fabb --- /dev/null +++ b/runtime/parachains/src/configuration/benchmarking.rs @@ -0,0 +1,44 @@ +// 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::configuration::*; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, BenchmarkError, BenchmarkResult}; +use frame_system::RawOrigin; +use sp_runtime::traits::One; + +benchmarks! { + set_config_with_block_number {}: set_code_retention_period(RawOrigin::Root, One::one()) + + set_config_with_u32 {}: set_max_code_size(RawOrigin::Root, 100) + + set_config_with_option_u32 {}: set_max_validators(RawOrigin::Root, Some(10)) + + set_config_with_weight {}: set_ump_service_total_weight(RawOrigin::Root, 3_000_000) + + set_hrmp_open_request_ttl {}: { + Err(BenchmarkError::Override( + BenchmarkResult::from_weight(T::BlockWeights::get().max_block) + ))?; + } + + set_config_with_balance {}: set_hrmp_sender_deposit(RawOrigin::Root, 100_000_000_000) +} + +impl_benchmark_test_suite!( + Pallet, + crate::mock::new_test_ext(Default::default()), + crate::mock::Test +); diff --git a/runtime/parachains/src/configuration/weights.rs b/runtime/parachains/src/configuration/weights.rs new file mode 100644 index 000000000000..da70d6cb29d1 --- /dev/null +++ b/runtime/parachains/src/configuration/weights.rs @@ -0,0 +1,82 @@ + +//! 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("westend-dev"), DB CACHE: 128 + +// Executed Command: +// ./target/release/polkadot +// benchmark +// --chain +// westend-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet +// runtime_parachains::configuration +// --steps +// 50 +// --repeat +// 20 +// --raw +// --extrinsic +// * +// --output +// runtime/parachains/src/configuration/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::configuration`. +pub struct WeightInfo(PhantomData); +impl super::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 { + (16_730_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 { + (16_592_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 { + (16_419_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 { + (16_732_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 { + (16_752_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/parachains/src/lib.rs b/runtime/parachains/src/lib.rs index 1ea90bb84e63..ab48d693d601 100644 --- a/runtime/parachains/src/lib.rs +++ b/runtime/parachains/src/lib.rs @@ -20,6 +20,7 @@ //! particular the `Initializer` module, as it is responsible for initializing the state //! of the other modules. +#![cfg_attr(feature = "runtime-benchmarks", recursion_limit = "256")] #![cfg_attr(not(feature = "std"), no_std)] pub mod configuration; diff --git a/runtime/parachains/src/mock.rs b/runtime/parachains/src/mock.rs index 5cf8d6237485..c4da0991de18 100644 --- a/runtime/parachains/src/mock.rs +++ b/runtime/parachains/src/mock.rs @@ -114,7 +114,9 @@ impl crate::initializer::Config for Test { type ForceOrigin = frame_system::EnsureRoot; } -impl crate::configuration::Config for Test {} +impl crate::configuration::Config for Test { + type WeightInfo = crate::configuration::weights::WeightInfo; +} impl crate::shared::Config for Test {} diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index cbedecf056ee..182c8f953cc0 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -560,7 +560,9 @@ impl pallet_authorship::Config for Runtime { impl parachains_origin::Config for Runtime {} -impl parachains_configuration::Config for Runtime {} +impl parachains_configuration::Config for Runtime { + type WeightInfo = parachains_configuration::weights::WeightInfo; +} impl parachains_shared::Config for Runtime {} diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index a1fe03cb37f6..58ccea45c249 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -454,7 +454,9 @@ impl pallet_sudo::Config for Runtime { type Call = Call; } -impl parachains_configuration::Config for Runtime {} +impl parachains_configuration::Config for Runtime { + type WeightInfo = parachains_configuration::weights::WeightInfo; +} impl parachains_shared::Config for Runtime {} diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 09baa14a691b..e7587856ecda 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -795,7 +795,9 @@ impl pallet_proxy::Config for Runtime { impl parachains_origin::Config for Runtime {} -impl parachains_configuration::Config for Runtime {} +impl parachains_configuration::Config for Runtime { + type WeightInfo = parachains_configuration::weights::WeightInfo; +} impl parachains_shared::Config for Runtime {} @@ -1462,6 +1464,7 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_common::crowdloan, Crowdloan); 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); // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -1527,6 +1530,7 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_common::crowdloan, Crowdloan); 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); // Substrate add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_balances, Balances); diff --git a/runtime/westend/src/weights/mod.rs b/runtime/westend/src/weights/mod.rs index 05fefbef7d71..76e23ae5fb49 100644 --- a/runtime/westend/src/weights/mod.rs +++ b/runtime/westend/src/weights/mod.rs @@ -34,3 +34,4 @@ pub mod runtime_common_auctions; pub mod runtime_common_crowdloan; pub mod runtime_common_paras_registrar; pub mod runtime_common_slots; +pub mod runtime_parachains_configuration; diff --git a/runtime/westend/src/weights/runtime_parachains_configuration.rs b/runtime/westend/src/weights/runtime_parachains_configuration.rs new file mode 100644 index 000000000000..6c1753e7c3b3 --- /dev/null +++ b/runtime/westend/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("westend-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=westend-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::configuration +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/westend/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_795_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_758_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_861_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_854_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_838_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/xcm/xcm-builder/tests/mock/mod.rs b/xcm/xcm-builder/tests/mock/mod.rs index ee5c77afe587..bcdac942a30a 100644 --- a/xcm/xcm-builder/tests/mock/mod.rs +++ b/xcm/xcm-builder/tests/mock/mod.rs @@ -107,7 +107,9 @@ impl pallet_balances::Config for Runtime { impl shared::Config for Runtime {} -impl configuration::Config for Runtime {} +impl configuration::Config for Runtime { + type WeightInfo = configuration::weights::WeightInfo; +} // aims to closely emulate the Kusama XcmConfig parameter_types! { diff --git a/xcm/xcm-simulator/example/src/relay_chain.rs b/xcm/xcm-simulator/example/src/relay_chain.rs index a6f6f1989174..cc50aec90d18 100644 --- a/xcm/xcm-simulator/example/src/relay_chain.rs +++ b/xcm/xcm-simulator/example/src/relay_chain.rs @@ -88,7 +88,9 @@ impl pallet_balances::Config for Runtime { impl shared::Config for Runtime {} -impl configuration::Config for Runtime {} +impl configuration::Config for Runtime { + type WeightInfo = configuration::weights::WeightInfo; +} parameter_types! { pub const KsmLocation: MultiLocation = Here.into(); From 07d183078b93a2309f80a80c52d8784acd410bd3 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Sat, 18 Sep 2021 12:02:30 +0200 Subject: [PATCH 047/138] ci: cache seed in fuzzer job (#3885) * ci: cache seed in fuzzer job * change id based on binary --- .github/workflows/honggfuzz.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/honggfuzz.yml b/.github/workflows/honggfuzz.yml index af0de3eb5017..ab1cdf0d2ef2 100644 --- a/.github/workflows/honggfuzz.yml +++ b/.github/workflows/honggfuzz.yml @@ -13,6 +13,13 @@ jobs: with: fetch-depth: 1 + - name: Cache Seed + id: cache-seed-round-trip + uses: actions/cache@v2 + with: + path: erasure-coding/fuzzer/hfuzz_workspace + key: ${{ runner.os }}-erasure-coding + - name: Install minimal stable Rust uses: actions-rs/toolchain@v1 with: @@ -52,6 +59,13 @@ jobs: with: fetch-depth: 1 + - name: Cache Seed + id: cache-seed-reconstruct + uses: actions/cache@v2 + with: + path: erasure-coding/fuzzer/hfuzz_workspace + key: ${{ runner.os }}-erasure-coding + - name: Install minimal stable Rust uses: actions-rs/toolchain@v1 with: From 9663d395884a9d94c5a563098ff7be0d1b6c9b41 Mon Sep 17 00:00:00 2001 From: Koute Date: Mon, 20 Sep 2021 17:51:34 +0900 Subject: [PATCH 048/138] Gather memory usage statistics through `parity-util-mem` (#3893) * Gather memory usage statistics through `parity-util-mem` * Update `Cargo.lock` --- Cargo.lock | 7 ++-- cli/Cargo.toml | 7 ---- node/metrics/Cargo.toml | 3 -- node/metrics/src/lib.rs | 7 ---- node/metrics/src/memory_stats.rs | 66 -------------------------------- node/overseer/Cargo.toml | 2 +- node/overseer/src/lib.rs | 48 ++++++++++++++--------- node/overseer/src/metrics.rs | 16 ++------ node/service/Cargo.toml | 1 - 9 files changed, 37 insertions(+), 120 deletions(-) delete mode 100644 node/metrics/src/memory_stats.rs diff --git a/Cargo.lock b/Cargo.lock index 631c36009309..eaa0d1a1fc66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5480,14 +5480,15 @@ dependencies = [ [[package]] name = "parity-util-mem" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad6f1acec69b95caf435bbd158d486e5a0a44fcf51531e84922c59ff09e8457" +checksum = "9f7adaf50e545c285006d384d50588e98c405c49b55c0aa05660aca081f6ee5e" dependencies = [ "cfg-if 1.0.0", "ethereum-types", "hashbrown", "impl-trait-for-tuples", + "jemalloc-ctl", "jemallocator", "lru", "parity-util-mem-derive", @@ -6395,7 +6396,6 @@ version = "0.9.9" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", - "jemalloc-ctl", "metered-channel", "substrate-prometheus-endpoint", ] @@ -6524,6 +6524,7 @@ dependencies = [ "futures-timer 3.0.2", "lru", "metered-channel", + "parity-util-mem", "parking_lot 0.11.1", "polkadot-node-metrics", "polkadot-node-network-protocol", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 7d56222f313e..371c8b285dde 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -46,13 +46,6 @@ cli = [ "frame-benchmarking-cli", "try-runtime-cli", "polkadot-node-core-pvf", -# memory stats require jemalloc, which we know is enabled for Linux -# but not present on wasm or windows -# https://github.com/paritytech/parity-common/blob/master/parity-util-mem/src/allocators.rs#L9-L34 -# Once -# https://github.com/rust-lang/cargo/issues/1197 -# is resolved. - "service/memory-stats", ] runtime-benchmarks = [ "service/runtime-benchmarks" ] trie-memory-tracker = [ "sp-trie/memory-tracker" ] diff --git a/node/metrics/Cargo.toml b/node/metrics/Cargo.toml index 72cf2f2f7491..2146b6525c0d 100644 --- a/node/metrics/Cargo.toml +++ b/node/metrics/Cargo.toml @@ -13,8 +13,5 @@ metered-channel = { path = "../metered-channel" } substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } -jemalloc-ctl = { version = "0.3.3", optional = true } - [features] default = [] -memory-stats = ["jemalloc-ctl"] diff --git a/node/metrics/src/lib.rs b/node/metrics/src/lib.rs index 50ee6827bf4b..af635f621d73 100644 --- a/node/metrics/src/lib.rs +++ b/node/metrics/src/lib.rs @@ -26,13 +26,6 @@ pub use metered_channel as metered; -/// Memory allocation stats tracking. -#[cfg(feature = "memory-stats")] -pub mod memory_stats; - -#[cfg(feature = "memory-stats")] -pub use self::memory_stats::{MemoryAllocationSnapshot, MemoryAllocationTracker}; - /// Cyclic metric collection support. pub mod metronome; pub use self::metronome::Metronome; diff --git a/node/metrics/src/memory_stats.rs b/node/metrics/src/memory_stats.rs deleted file mode 100644 index cc1a7213c787..000000000000 --- a/node/metrics/src/memory_stats.rs +++ /dev/null @@ -1,66 +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 . - -//! Memory tracking statistics. -//! -//! Many subsystems have common interests such as canceling a bunch of spawned jobs, -//! or determining what their validator ID is. These common interests are factored into -//! this module. -//! -//! This crate also reexports Prometheus metric types which are expected to be implemented by subsystems. - -// #[cfg(not(feature = "memory-stats"))] -// use std::convert::Infallible; - -use jemalloc_ctl::{epoch, stats, Result}; - -/// Accessor to the allocator internals. -#[derive(Clone)] -pub struct MemoryAllocationTracker { - epoch: jemalloc_ctl::epoch_mib, - allocated: stats::allocated_mib, - resident: stats::resident_mib, -} - -impl MemoryAllocationTracker { - /// Create an instance of an allocation tracker. - pub fn new() -> Result { - Ok(Self { - epoch: epoch::mib()?, - allocated: stats::allocated::mib()?, - resident: stats::resident::mib()?, - }) - } - - /// Create an allocation snapshot. - pub fn snapshot(&self) -> Result { - // update stats by advancing the allocation epoch - self.epoch.advance()?; - - let allocated: u64 = self.allocated.read()? as _; - let resident: u64 = self.resident.read()? as _; - Ok(MemoryAllocationSnapshot { allocated, resident }) - } -} - -/// Snapshot of collected memory metrics. -#[derive(Debug, Clone)] -pub struct MemoryAllocationSnapshot { - /// Total resident memory, in bytes. - pub resident: u64, - /// Total allocated memory, in bytes. - pub allocated: u64, -} diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml index b22d57975aa1..bef2d141415e 100644 --- a/node/overseer/Cargo.toml +++ b/node/overseer/Cargo.toml @@ -19,6 +19,7 @@ polkadot-overseer-gen = { path = "./overseer-gen" } polkadot-overseer-all-subsystems-gen = { path = "./all-subsystems-gen" } tracing = "0.1.27" lru = "0.6" +parity-util-mem = { version = ">= 0.10.1", default-features = false } [dev-dependencies] metered-channel = { path = "../metered-channel" } @@ -29,4 +30,3 @@ assert_matches = "1.4.0" [features] default = [] -memory-stats = ["polkadot-node-metrics/memory-stats"] diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 9b1e591b44c2..c226f2dfa0c1 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -108,8 +108,7 @@ use polkadot_node_metrics::{ Metronome, }; -#[cfg(feature = "memory-stats")] -use polkadot_node_metrics::memory_stats::MemoryAllocationTracker; +use parity_util_mem::MemoryAllocationTracker; pub use polkadot_overseer_gen as gen; pub use polkadot_overseer_gen::{ @@ -649,28 +648,39 @@ where } let subsystem_meters = overseer.map_subsystems(ExtractNameAndMeters); - #[cfg(feature = "memory-stats")] - let memory_stats = MemoryAllocationTracker::new().expect("Jemalloc is the default allocator. qed"); + 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 |_| { - #[cfg(feature = "memory-stats")] - match memory_stats.snapshot() { - Ok(memory_stats_snapshot) => { - tracing::trace!( + 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, - "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 - ), + "Failed to obtain memory stats: {:?}", + e + ), + } } // We combine the amount of messages from subsystems to the overseer diff --git a/node/overseer/src/metrics.rs b/node/overseer/src/metrics.rs index 5b57f3336131..fa883857e9be 100644 --- a/node/overseer/src/metrics.rs +++ b/node/overseer/src/metrics.rs @@ -19,8 +19,7 @@ use super::*; pub use polkadot_node_metrics::metrics::{self, prometheus, Metrics as MetricsTrait}; -#[cfg(feature = "memory-stats")] -use polkadot_node_metrics::MemoryAllocationSnapshot; +use parity_util_mem::MemoryAllocationSnapshot; /// Overseer Prometheus metrics. #[derive(Clone)] @@ -35,10 +34,7 @@ struct MetricsInner { signals_sent: prometheus::GaugeVec, signals_received: prometheus::GaugeVec, - #[cfg(feature = "memory-stats")] memory_stats_resident: prometheus::Gauge, - - #[cfg(feature = "memory-stats")] memory_stats_allocated: prometheus::Gauge, } @@ -65,13 +61,10 @@ impl Metrics { } } - #[cfg(feature = "memory-stats")] pub(crate) fn memory_stats_snapshot(&self, memory_stats: MemoryAllocationSnapshot) { if let Some(metrics) = &self.0 { - let MemoryAllocationSnapshot { resident, allocated } = memory_stats; - - metrics.memory_stats_allocated.set(allocated); - metrics.memory_stats_resident.set(resident); + metrics.memory_stats_allocated.set(memory_stats.allocated); + metrics.memory_stats_resident.set(memory_stats.resident); } } @@ -202,7 +195,6 @@ impl MetricsTrait for Metrics { registry, )?, - #[cfg(feature = "memory-stats")] memory_stats_allocated: prometheus::register( prometheus::Gauge::::new( "memory_allocated", @@ -210,8 +202,6 @@ impl MetricsTrait for Metrics { )?, registry, )?, - - #[cfg(feature = "memory-stats")] memory_stats_resident: prometheus::register( prometheus::Gauge::::new( "memory_resident", diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 66c936e9a6c3..632c83c94980 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -175,5 +175,4 @@ try-runtime = [ "rococo-runtime/try-runtime", ] malus = ["full-node"] -memory-stats = ["polkadot-overseer/memory-stats"] disputes = ["polkadot-node-core-dispute-coordinator/disputes"] From 3e92a342ba738d366aee5d44476e885daef73382 Mon Sep 17 00:00:00 2001 From: Georges Date: Mon, 20 Sep 2021 12:58:09 +0100 Subject: [PATCH 049/138] Companion for Generate storage info for pallet im_online #9654 (#3744) * Adding `MaxKeys` `MaxPeerInHeartbeats` and `MaxPeerDataEncodingSize` to paller `im_online` after substrate changes * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 308 ++++++++++++++++++------------------ runtime/kusama/src/lib.rs | 6 + runtime/polkadot/src/lib.rs | 6 + runtime/rococo/src/lib.rs | 6 + runtime/westend/src/lib.rs | 6 + 5 files changed, 178 insertions(+), 154 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eaa0d1a1fc66..e70b8e44a447 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "chrono", "frame-election-provider-support", @@ -4595,7 +4595,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -4611,7 +4611,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -4626,7 +4626,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4650,7 +4650,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4670,7 +4670,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4726,7 +4726,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4808,7 +4808,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4841,7 +4841,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4865,7 +4865,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4883,7 +4883,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4898,7 +4898,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4921,7 +4921,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4937,7 +4937,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4957,7 +4957,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4974,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -4991,7 +4991,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5009,7 +5009,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5025,7 +5025,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5057,7 +5057,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5071,7 +5071,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5126,7 +5126,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5140,7 +5140,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5156,7 +5156,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5177,7 +5177,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5193,7 +5193,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5207,7 +5207,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5230,7 +5230,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5241,7 +5241,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "sp-arithmetic", @@ -5250,7 +5250,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5264,7 +5264,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5282,7 +5282,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5301,7 +5301,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-support", "frame-system", @@ -5318,7 +5318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5346,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -5379,7 +5379,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-benchmarking", "frame-support", @@ -7775,7 +7775,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8035,7 +8035,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "sp-core", @@ -8046,7 +8046,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "derive_more", @@ -8073,7 +8073,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8096,7 +8096,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8112,7 +8112,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8128,7 +8128,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8139,7 +8139,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "chrono", "fdlimit", @@ -8177,7 +8177,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "fnv", "futures 0.3.17", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "hash-db", "kvdb", @@ -8230,7 +8230,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "futures 0.3.17", @@ -8254,7 +8254,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "derive_more", @@ -8297,7 +8297,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "derive_more", "futures 0.3.17", @@ -8321,7 +8321,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8334,7 +8334,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "assert_matches", "async-trait", @@ -8368,7 +8368,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "futures 0.3.17", @@ -8394,7 +8394,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "sc-client-api", "sp-authorship", @@ -8405,7 +8405,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8431,7 +8431,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "derive_more", "environmental", @@ -8449,7 +8449,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "parity-scale-codec", @@ -8465,7 +8465,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8484,7 +8484,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "derive_more", @@ -8521,7 +8521,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "derive_more", "finality-grandpa", @@ -8545,7 +8545,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8562,7 +8562,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "derive_more", @@ -8577,7 +8577,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "hash-db", "parity-scale-codec", @@ -8595,7 +8595,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-std", "async-trait", @@ -8646,7 +8646,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8662,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "bytes 1.0.1", "fnv", @@ -8689,7 +8689,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "libp2p", @@ -8702,7 +8702,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8711,7 +8711,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "hash-db", @@ -8742,7 +8742,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8767,7 +8767,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8784,7 +8784,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "directories", @@ -8849,7 +8849,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "parity-scale-codec", @@ -8863,7 +8863,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8885,7 +8885,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "chrono", "futures 0.3.17", @@ -8903,7 +8903,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8932,7 +8932,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8943,7 +8943,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "intervalier", @@ -8970,7 +8970,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "derive_more", "futures 0.3.17", @@ -8984,7 +8984,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9416,7 +9416,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "hash-db", "log", @@ -9433,7 +9433,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9445,7 +9445,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "scale-info", @@ -9458,7 +9458,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "integer-sqrt", "num-traits", @@ -9473,7 +9473,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "scale-info", @@ -9486,7 +9486,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "parity-scale-codec", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "sp-api", @@ -9510,7 +9510,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "log", @@ -9528,7 +9528,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "futures 0.3.17", @@ -9547,7 +9547,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "merlin", @@ -9570,7 +9570,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "scale-info", @@ -9581,7 +9581,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9593,7 +9593,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "base58", "blake2-rfc", @@ -9638,7 +9638,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9647,7 +9647,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro2", "quote", @@ -9657,7 +9657,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "environmental", "parity-scale-codec", @@ -9668,7 +9668,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "finality-grandpa", "log", @@ -9686,7 +9686,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9700,7 +9700,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "hash-db", @@ -9725,7 +9725,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "lazy_static", "sp-core", @@ -9736,7 +9736,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "derive_more", @@ -9753,7 +9753,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "zstd", ] @@ -9761,7 +9761,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "scale-info", @@ -9776,7 +9776,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9787,7 +9787,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "sp-api", "sp-core", @@ -9797,7 +9797,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "backtrace", ] @@ -9805,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "rustc-hash", "serde", @@ -9815,7 +9815,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "either", "hash256-std-hasher", @@ -9837,7 +9837,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9866,7 +9866,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "serde", "serde_json", @@ -9875,7 +9875,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "scale-info", @@ -9889,7 +9889,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "scale-info", @@ -9900,7 +9900,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "hash-db", "log", @@ -9923,12 +9923,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9941,7 +9941,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "sp-core", @@ -9954,7 +9954,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9970,7 +9970,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "erased-serde", "log", @@ -9988,7 +9988,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "sp-api", "sp-runtime", @@ -9997,7 +9997,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "log", @@ -10013,7 +10013,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "hash-db", "memory-db", @@ -10028,7 +10028,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10044,7 +10044,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10055,7 +10055,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10251,7 +10251,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "platforms", ] @@ -10259,7 +10259,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10281,7 +10281,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-std", "derive_more", @@ -10295,7 +10295,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "async-trait", "futures 0.3.17", @@ -10322,7 +10322,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10332,7 +10332,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10343,7 +10343,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10496,7 +10496,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "frame-system", "futures 0.3.17", @@ -10903,7 +10903,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" dependencies = [ "log", "parity-scale-codec", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 78e910f01f01..39a532b47512 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -702,6 +702,9 @@ parameter_types! { pub const BountyValueMinimum: Balance = 200 * CENTS; pub const MaxApprovals: u32 = 100; pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; } type ApproveOrigin = EnsureOneOf< @@ -774,6 +777,9 @@ impl pallet_im_online::Config for Runtime { type ReportUnresponsiveness = Offences; type UnsignedPriority = ImOnlineUnsignedPriority; type WeightInfo = weights::pallet_im_online::WeightInfo; + type MaxKeys = MaxKeys; + type MaxPeerInHeartbeats = MaxPeerInHeartbeats; + type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize; } impl pallet_grandpa::Config for Runtime { diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 8b0230dffab9..72a5c7488409 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -688,6 +688,9 @@ parameter_types! { pub const BountyValueMinimum: Balance = 10 * DOLLARS; pub const MaxApprovals: u32 = 100; pub const MaxAuthorities: u32 = 100_000; + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; } type ApproveOrigin = EnsureOneOf< @@ -760,6 +763,9 @@ impl pallet_im_online::Config for Runtime { type ReportUnresponsiveness = Offences; type UnsignedPriority = ImOnlineUnsignedPriority; type WeightInfo = weights::pallet_im_online::WeightInfo; + type MaxKeys = MaxKeys; + type MaxPeerInHeartbeats = MaxPeerInHeartbeats; + type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize; } impl pallet_grandpa::Config for Runtime { diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 182c8f953cc0..b86314c50b9f 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -377,6 +377,9 @@ parameter_types! { parameter_types! { pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; } impl pallet_im_online::Config for Runtime { @@ -387,6 +390,9 @@ impl pallet_im_online::Config for Runtime { type ReportUnresponsiveness = Offences; type UnsignedPriority = ImOnlineUnsignedPriority; type WeightInfo = (); + type MaxKeys = MaxKeys; + type MaxPeerInHeartbeats = MaxPeerInHeartbeats; + type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize; } parameter_types! { diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index e7587856ecda..3ce1ef1defc0 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -483,6 +483,9 @@ impl pallet_authority_discovery::Config for Runtime { parameter_types! { pub const NposSolutionPriority: TransactionPriority = TransactionPriority::max_value() / 2; pub const ImOnlineUnsignedPriority: TransactionPriority = TransactionPriority::max_value(); + pub const MaxKeys: u32 = 10_000; + pub const MaxPeerInHeartbeats: u32 = 10_000; + pub const MaxPeerDataEncodingSize: u32 = 1_000; } impl pallet_im_online::Config for Runtime { @@ -493,6 +496,9 @@ impl pallet_im_online::Config for Runtime { type ReportUnresponsiveness = Offences; type UnsignedPriority = ImOnlineUnsignedPriority; type WeightInfo = weights::pallet_im_online::WeightInfo; + type MaxKeys = MaxKeys; + type MaxPeerInHeartbeats = MaxPeerInHeartbeats; + type MaxPeerDataEncodingSize = MaxPeerDataEncodingSize; } impl pallet_grandpa::Config for Runtime { From eeb6cc61e15ce9c1edfe916b2152d7cccd19f8bc Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Mon, 20 Sep 2021 15:02:36 +0200 Subject: [PATCH 050/138] Revert "remove connected disconnected state only (#3868)" (#3896) This reverts commit 7bc352628e65ec99f3393503a28c8a0c8e4202bd. --- Cargo.lock | 1 - doc/testing.md | 3 +- node/malus/src/variant-a.rs | 5 +- node/overseer/examples/minimal-example.rs | 14 +- .../proc-macro/src/impl_builder.rs | 2 +- node/overseer/src/dummy.rs | 54 ---- node/overseer/src/lib.rs | 87 ++++-- node/overseer/src/metrics.rs | 4 +- node/overseer/src/subsystems.rs | 42 ++- node/overseer/src/tests.rs | 74 ++--- node/service/Cargo.toml | 1 - node/service/src/lib.rs | 274 +++++++----------- node/service/src/overseer.rs | 196 +------------ node/service/src/relay_chain_selection.rs | 79 ++--- node/service/src/tests.rs | 2 +- node/subsystem-test-helpers/src/lib.rs | 7 +- node/subsystem/src/lib.rs | 4 +- 17 files changed, 302 insertions(+), 547 deletions(-) delete mode 100644 node/overseer/src/dummy.rs diff --git a/Cargo.lock b/Cargo.lock index e70b8e44a447..c46974710b2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6842,7 +6842,6 @@ dependencies = [ "kvdb", "kvdb-rocksdb", "log", - "lru", "pallet-babe", "pallet-im-online", "pallet-mmr-primitives", diff --git a/doc/testing.md b/doc/testing.md index 6709d1b9bdeb..8230ea352c0f 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -185,7 +185,6 @@ struct BehaveMaleficient; impl OverseerGen for BehaveMaleficient { fn generate<'a, Spawner, RuntimeClient>( &self, - connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandler), Error> where @@ -214,7 +213,7 @@ impl OverseerGen for BehaveMaleficient { ), ); - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner, connector) + Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) .map_err(|e| e.into()) // A builder pattern will simplify this further diff --git a/node/malus/src/variant-a.rs b/node/malus/src/variant-a.rs index 8abdf75198b3..a545bd360faf 100644 --- a/node/malus/src/variant-a.rs +++ b/node/malus/src/variant-a.rs @@ -37,7 +37,7 @@ use polkadot_cli::{ use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; use polkadot_node_subsystem::{ messages::{AllMessages, CandidateValidationMessage}, - overseer::{self, OverseerConnector, OverseerHandle}, + overseer::{self, OverseerHandle}, FromOverseer, }; @@ -86,7 +86,6 @@ struct BehaveMaleficient; impl OverseerGen for BehaveMaleficient { fn generate<'a, Spawner, RuntimeClient>( &self, - connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandle), Error> where @@ -114,7 +113,7 @@ impl OverseerGen for BehaveMaleficient { }, ); - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner, connector) + Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) .map_err(|e| e.into()) } } diff --git a/node/overseer/examples/minimal-example.rs b/node/overseer/examples/minimal-example.rs index 0c4a3bdc6ae6..6970054a3013 100644 --- a/node/overseer/examples/minimal-example.rs +++ b/node/overseer/examples/minimal-example.rs @@ -29,8 +29,7 @@ use polkadot_node_subsystem_types::messages::{ use polkadot_overseer::{ self as overseer, gen::{FromOverseer, SpawnedSubsystem}, - AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerConnector, - OverseerSignal, SubsystemError, + AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerSignal, SubsystemError, }; use polkadot_primitives::v1::Hash; @@ -174,15 +173,8 @@ fn main() { .replace_candidate_validation(|_| Subsystem2) .replace_candidate_backing(|orig| orig); - let (overseer, _handle) = Overseer::new( - vec![], - all_subsystems, - None, - AlwaysSupportsParachains, - spawner, - OverseerConnector::default(), - ) - .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/proc-macro/src/impl_builder.rs b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs index b736de97d463..832e193fd4d1 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs @@ -130,7 +130,7 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { &mut self.handle } /// Obtain access to the overseer handle. - pub fn as_handle(&self) -> &#handle { + pub fn as_handle(&mut self) -> &#handle { &self.handle } } diff --git a/node/overseer/src/dummy.rs b/node/overseer/src/dummy.rs deleted file mode 100644 index c3d3d4fcf3c8..000000000000 --- a/node/overseer/src/dummy.rs +++ /dev/null @@ -1,54 +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 . - -use crate::{AllMessages, OverseerSignal}; -use polkadot_node_subsystem_types::errors::SubsystemError; -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 } - } -} diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index c226f2dfa0c1..2fb9ffd359b2 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -70,6 +70,7 @@ 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}; @@ -90,17 +91,12 @@ pub use polkadot_node_subsystem_types::{ jaeger, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, OverseerSignal, }; -/// Test helper supplements. -pub mod dummy; -pub use self::dummy::DummySubsystem; - // TODO legacy, to be deleted, left for easier integration // TODO https://github.com/paritytech/polkadot/issues/3427 mod subsystems; -pub use self::subsystems::AllSubsystems; +pub use self::subsystems::{AllSubsystems, DummySubsystem}; -/// Metrics re-exports of `polkadot-metrics`. -pub mod metrics; +mod metrics; use self::metrics::Metrics; use polkadot_node_metrics::{ @@ -119,7 +115,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. -pub const KNOWN_LEAVES_CACHE_SIZE: usize = 2 * 24 * 3600 / 6; +const KNOWN_LEAVES_CACHE_SIZE: usize = 2 * 24 * 3600 / 6; #[cfg(test)] mod tests; @@ -145,12 +141,18 @@ where /// /// [`Overseer`]: struct.Overseer.html #[derive(Clone)] -pub struct Handle(pub OverseerHandle); +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), +} impl Handle { - /// Create a new [`Handle`]. - pub fn new(raw: OverseerHandle) -> Self { - Self(raw) + /// Create a new disconnected [`Handle`]. + pub fn new_disconnected() -> Self { + Self::Disconnected(Arc::new(RwLock::new(None))) } /// Inform the `Overseer` that that some block was imported. @@ -199,8 +201,58 @@ impl Handle { /// Most basic operation, to stop a server. async fn send_and_log_error(&mut self, event: Event) { - if self.0.send(event).await.is_err() { - tracing::info!(target: LOG_TARGET, "Failed to send an event to Overseer"); + 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); + } } } } @@ -438,13 +490,12 @@ where /// # use polkadot_primitives::v1::Hash; /// # use polkadot_overseer::{ /// # self as overseer, - /// # Overseer, /// # OverseerSignal, - /// # OverseerConnector, /// # SubsystemSender as _, /// # AllMessages, /// # AllSubsystems, /// # HeadSupportsParachains, + /// # Overseer, /// # SubsystemError, /// # gen::{ /// # SubsystemContext, @@ -498,7 +549,6 @@ where /// None, /// AlwaysSupportsParachains, /// spawner, - /// OverseerConnector::default(), /// ).unwrap(); /// /// let timer = Delay::new(Duration::from_millis(50)).fuse(); @@ -565,7 +615,6 @@ where prometheus_registry: Option<&prometheus::Registry>, supports_parachains: SupportsParachains, s: S, - connector: OverseerConnector, ) -> SubsystemResult<(Self, OverseerHandle)> where CV: Subsystem, SubsystemError> + Send, @@ -630,7 +679,7 @@ where .supports_parachains(supports_parachains) .metrics(metrics.clone()) .spawner(s) - .build_with_connector(connector)?; + .build()?; // spawn the metrics metronome task { diff --git a/node/overseer/src/metrics.rs b/node/overseer/src/metrics.rs index fa883857e9be..ab3b2a3bc14b 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::*; -pub use polkadot_node_metrics::metrics::{self, prometheus, Metrics as MetricsTrait}; +use polkadot_node_metrics::metrics::{self, prometheus}; use parity_util_mem::MemoryAllocationSnapshot; @@ -110,7 +110,7 @@ impl Metrics { } } -impl MetricsTrait for Metrics { +impl metrics::Metrics 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 index 695d368dc16c..648528730d67 100644 --- a/node/overseer/src/subsystems.rs +++ b/node/overseer/src/subsystems.rs @@ -19,9 +19,47 @@ //! In the future, everything should be set up using the generated //! overseer builder pattern instead. -use crate::dummy::DummySubsystem; +use crate::{AllMessages, OverseerSignal}; +use polkadot_node_subsystem_types::errors::SubsystemError; use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; -use polkadot_overseer_gen::MapSubsystem; +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`]. /// diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs index 349b04d34be3..7564116e7141 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -32,7 +32,7 @@ use polkadot_primitives::v1::{ ValidatorIndex, }; -use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer, OverseerConnector}; +use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer}; use metered_channel as metered; use assert_matches::assert_matches; @@ -164,16 +164,9 @@ fn overseer_works() { .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, - OverseerConnector::default(), - ) - .unwrap(); - let mut handle = Handle(handle); + let (overseer, handle) = + Overseer::new(vec![], all_subsystems, None, MockSupportsParachains, spawner).unwrap(); + let mut handle = Handle::Connected(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -234,10 +227,9 @@ fn overseer_metrics_work() { Some(®istry), MockSupportsParachains, spawner, - OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle(handle); + let mut handle = Handle::Connected(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -288,15 +280,8 @@ fn overseer_ends_on_subsystem_exit() { 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, - OverseerConnector::default(), - ) - .unwrap(); + let (overseer, _handle) = + Overseer::new(vec![], all_subsystems, None, MockSupportsParachains, spawner).unwrap(); overseer.run().await.unwrap(); }) @@ -397,16 +382,10 @@ fn overseer_start_stop_works() { let all_subsystems = AllSubsystems::<()>::dummy() .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, - OverseerConnector::default(), - ) - .unwrap(); - let mut handle = Handle(handle); + let (overseer, handle) = + Overseer::new(vec![first_block], all_subsystems, None, MockSupportsParachains, spawner) + .unwrap(); + let mut handle = Handle::Connected(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -507,10 +486,9 @@ fn overseer_finalize_works() { None, MockSupportsParachains, spawner, - OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle(handle); + let mut handle = Handle::Connected(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -595,16 +573,10 @@ fn do_not_send_empty_leaves_update_on_block_finalization() { let all_subsystems = AllSubsystems::<()>::dummy().replace_candidate_backing(move |_| TestSubsystem6(tx_5)); - let (overseer, handle) = Overseer::new( - Vec::new(), - all_subsystems, - None, - MockSupportsParachains, - spawner, - OverseerConnector::default(), - ) - .unwrap(); - let mut handle = Handle(handle); + let (overseer, handle) = + Overseer::new(Vec::new(), all_subsystems, None, MockSupportsParachains, spawner) + .unwrap(); + let mut handle = Handle::Connected(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -877,17 +849,9 @@ fn overseer_all_subsystems_receive_signals_and_messages() { dispute_distribution: subsystem.clone(), chain_selection: subsystem.clone(), }; - - let (overseer, handle) = Overseer::new( - vec![], - all_subsystems, - None, - MockSupportsParachains, - spawner, - OverseerConnector::default(), - ) - .unwrap(); - let mut handle = Handle(handle); + let (overseer, handle) = + Overseer::new(vec![], all_subsystems, None, MockSupportsParachains, spawner).unwrap(); + let mut handle = Handle::Connected(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 632c83c94980..affd8b25b33b 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -26,7 +26,6 @@ sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "maste sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } telemetry = { package = "sc-telemetry", git = "https://github.com/paritytech/substrate", branch = "master" } -lru = "0.6" # Substrate Primitives sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 66047854f3c2..bcb181fa04b8 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -54,7 +54,7 @@ use { pub use sp_core::traits::SpawnNamed; #[cfg(feature = "full-node")] pub use { - polkadot_overseer::{Handle, Overseer, OverseerConnector, OverseerHandle}, + polkadot_overseer::{Handle, Overseer, OverseerHandle}, polkadot_primitives::v1::ParachainHost, sc_client_api::AuxStore, sp_authority_discovery::AuthorityDiscoveryApi, @@ -68,8 +68,6 @@ 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")] @@ -304,15 +302,14 @@ fn jaeger_launch_collector_with_agent( } #[cfg(feature = "full-node")] -type FullSelectChain = relay_chain_selection::SelectRelayChain; +type FullSelectChain = relay_chain_selection::SelectRelayChainWithFallback; #[cfg(feature = "full-node")] -type FullGrandpaBlockImport = - grandpa::GrandpaBlockImport< - FullBackend, - Block, - FullClient, - ChainSelection, - >; +type FullGrandpaBlockImport = grandpa::GrandpaBlockImport< + FullBackend, + Block, + FullClient, + FullSelectChain, +>; #[cfg(feature = "light-node")] type LightBackend = service::TLightBackendWithHash; @@ -322,29 +319,36 @@ type LightClient = service::TLightClientWithBackend; #[cfg(feature = "full-node")] -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( +fn new_partial( config: &mut Configuration, jaeger_agent: Option, telemetry_worker_handle: Option, -) -> Result, Error> +) -> 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, +> where RuntimeApi: ConstructRuntimeApi> + Send @@ -387,62 +391,21 @@ where )?; let client = Arc::new(client); - jaeger_launch_collector_with_agent(task_manager.spawn_handle(), &*config, jaeger_agent)?; - - let telemetry: Option<_> = telemetry.map(|(worker, telemetry)| { + let telemetry = telemetry.map(|(worker, telemetry)| { if let Some(worker) = worker { task_manager.spawn_handle().spawn("telemetry", worker.run()); } telemetry }); - Ok(Basics { task_manager, client, backend, keystore_container, telemetry }) -} + 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())?, + ); -#[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(), @@ -711,50 +674,23 @@ where let disable_grandpa = config.disable_grandpa; let name = config.network.node_name.clone(); - let overseer_connector = OverseerConnector::default(); - - let handle = Handle(overseer_connector.as_handle().clone()); - - let basics = new_partial_basics::( - &mut config, - jaeger_agent, - telemetry_worker_handle, - )?; - - // we should remove this check before we deploy parachains on polkadot - // TODO: https://github.com/paritytech/polkadot/issues/3326 - let chain_spec = &config.chain_spec as &dyn IdentifyVariant; - - let is_relay_chain = chain_spec.is_kusama() || - chain_spec.is_westend() || - chain_spec.is_rococo() || - chain_spec.is_wococo(); - - let prometheus_registry = config.prometheus_registry().cloned(); - - use relay_chain_selection::SelectRelayChain; - - let select_chain = SelectRelayChain::new( - basics.backend.clone(), - is_relay_chain, - handle.clone(), - polkadot_node_subsystem_util::metrics::Metrics::register(prometheus_registry.as_ref())?, - ); - let service::PartialComponents::<_, _, SelectRelayChain<_>, _, _, _> { + let service::PartialComponents { client, backend, mut task_manager, keystore_container, - select_chain, + mut select_chain, import_queue, transaction_pool, other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, mut telemetry), - } = new_partial::>( + } = new_partial::( &mut config, - basics, - select_chain, + jaeger_agent, + telemetry_worker_handle, )?; + 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; @@ -914,10 +850,8 @@ where local_keystore.and_then(move |k| authority_discovery_service.map(|a| (a, k))); let overseer_handle = if let Some((authority_discovery_service, keystore)) = maybe_params { - // already have access to the handle - let (overseer, _handle) = overseer_gen + let (overseer, overseer_handle) = overseer_gen .generate::>( - overseer_connector, OverseerGenArgs { leaves: active_leaves, keystore, @@ -941,29 +875,40 @@ where dispute_coordinator_config, }, )?; + let handle = Handle::Connected(overseer_handle.clone()); + let handle_clone = handle.clone(); - { - let handle = handle.clone(); - task_manager.spawn_essential_handle().spawn_blocking( - "overseer", - Box::pin(async move { - use futures::{pin_mut, select, FutureExt}; + 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 = polkadot_overseer::forward_events(overseer_client, handle_clone); - let forward = forward.fuse(); - let overseer_fut = overseer.run().fuse(); + let forward = forward.fuse(); + let overseer_fut = overseer.run().fuse(); - pin_mut!(overseer_fut); - pin_mut!(forward); + pin_mut!(overseer_fut); + pin_mut!(forward); - select! { - _ = forward => (), - _ = overseer_fut => (), - complete => (), - } - }), - ); + 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"); } Some(handle) } else { @@ -1283,31 +1228,6 @@ where Ok((task_manager, rpc_handlers)) } -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( @@ -1324,26 +1244,48 @@ 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() { - return chain_ops!(config, jaeger_agent, telemetry_worker_handle; rococo_runtime, RococoExecutorDispatch, Rococo) + 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)) } #[cfg(feature = "kusama-native")] if config.chain_spec.is_kusama() { - return chain_ops!(config, jaeger_agent, telemetry_worker_handle; kusama_runtime, KusamaExecutorDispatch, 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)) } #[cfg(feature = "westend-native")] if config.chain_spec.is_westend() { - return chain_ops!(config, jaeger_agent, telemetry_worker_handle; westend_runtime, WestendExecutorDispatch, 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)) } #[cfg(feature = "polkadot-native")] { - chain_ops!(config, jaeger_agent, telemetry_worker_handle; polkadot_runtime, PolkadotExecutorDispatch, Polkadot) + 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)) } #[cfg(not(feature = "polkadot-native"))] diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs index 385bab190266..66156fd18298 100644 --- a/node/service/src/overseer.rs +++ b/node/service/src/overseer.rs @@ -15,7 +15,6 @@ // 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; @@ -23,14 +22,7 @@ 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}; -#[cfg(any(feature = "malus", test))] -pub use polkadot_overseer::dummy::DummySubsystem; -pub use polkadot_overseer::{ - metrics::{Metrics, MetricsTrait}, - AllSubsystems, BlockInfo, HeadSupportsParachains, Overseer, OverseerBuilder, OverseerConnector, - OverseerHandle, -}; - +use polkadot_overseer::{AllSubsystems, BlockInfo, Overseer, OverseerHandle}; use polkadot_primitives::v1::ParachainHost; use sc_authority_discovery::Service as AuthorityDiscoveryService; use sc_client_api::AuxStore; @@ -263,176 +255,6 @@ where Ok(all_subsystems) } -/// 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, - network_service, - authority_discovery_service, - pov_req_receiver, - chunk_req_receiver, - collation_req_receiver, - available_data_req_receiver, - statement_req_receiver, - dispute_req_receiver, - registry, - spawner, - is_collator, - approval_voting_config, - availability_config, - candidate_validation_config, - chain_selection_config, - dispute_coordinator_config, - }: OverseerGenArgs<'a, Spawner, RuntimeClient>, -) -> Result< - OverseerBuilder< - Spawner, - Arc, - CandidateValidationSubsystem, - CandidateBackingSubsystem, - StatementDistributionSubsystem, - AvailabilityDistributionSubsystem, - AvailabilityRecoverySubsystem, - BitfieldSigningSubsystem, - BitfieldDistributionSubsystem, - ProvisionerSubsystem, - RuntimeApiSubsystem, - AvailabilityStoreSubsystem, - NetworkBridgeSubsystem< - Arc>, - AuthorityDiscoveryService, - >, - ChainApiSubsystem, - CollationGenerationSubsystem, - CollatorProtocolSubsystem, - ApprovalDistributionSubsystem, - ApprovalVotingSubsystem, - GossipSupportSubsystem, - DisputeCoordinatorSubsystem, - DisputeParticipationSubsystem, - DisputeDistributionSubsystem, - ChainSelectionSubsystem, - >, - Error, -> -where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin, -{ - use polkadot_node_subsystem_util::metrics::Metrics; - use std::iter::FromIterator; - - 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( - available_data_req_receiver, - Metrics::register(registry)?, - )) - .availability_store(AvailabilityStoreSubsystem::new( - parachains_db.clone(), - availability_config, - Metrics::register(registry)?, - )) - .bitfield_distribution(BitfieldDistributionSubsystem::new(Metrics::register(registry)?)) - .bitfield_signing(BitfieldSigningSubsystem::new( - spawner.clone(), - keystore.clone(), - Metrics::register(registry)?, - )) - .candidate_backing(CandidateBackingSubsystem::new( - spawner.clone(), - keystore.clone(), - Metrics::register(registry)?, - )) - .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({ - let side = match is_collator { - IsCollator::Yes(collator_pair) => ProtocolSide::Collator( - network_service.local_peer_id().clone(), - collator_pair, - collation_req_receiver, - Metrics::register(registry)?, - ), - IsCollator::No => ProtocolSide::Validator { - keystore: keystore.clone(), - eviction_policy: Default::default(), - metrics: Metrics::register(registry)?, - }, - }; - CollatorProtocolSubsystem::new(side) - }) - .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( - runtime_client.clone(), - Metrics::register(registry)?, - spawner.clone(), - )) - .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_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( - parachains_db.clone(), - dispute_coordinator_config, - keystore.clone(), - Metrics::register(registry)?, - )) - .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)) - .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. /// /// Default behavior is to create an unmodified overseer, as `RealOverseerGen` @@ -441,7 +263,6 @@ 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 @@ -450,22 +271,19 @@ pub trait OverseerGen { Spawner: 'static + SpawnNamed + Clone + Unpin, { let gen = RealOverseerGen; - RealOverseerGen::generate::(&gen, connector, args) + RealOverseerGen::generate::(&gen, 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 @@ -473,8 +291,14 @@ impl OverseerGen for RealOverseerGen { RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, Spawner: 'static + SpawnNamed + Clone + Unpin, { - prepared_overseer_builder(args)? - .build_with_connector(connector) + 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) .map_err(|e| e.into()) } } diff --git a/node/service/src/relay_chain_selection.rs b/node/service/src/relay_chain_selection.rs index cece25d3e547..184d526eac47 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}; +use polkadot_overseer::{AllMessages, Handle, OverseerHandle}; use polkadot_primitives::v1::{ Block as PolkadotBlock, BlockNumber, Hash, Header as PolkadotHeader, }; @@ -109,57 +109,66 @@ impl Metrics { } /// A chain-selection implementation which provides safety for relay chains. -pub struct SelectRelayChain> { - is_relay_chain: bool, - longest_chain: sc_consensus::LongestChain, - selection: SelectRelayChainInner, +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, } -impl Clone for SelectRelayChain +impl Clone for SelectRelayChainWithFallback where B: sc_client_api::Backend, - SelectRelayChainInner: Clone, + SelectRelayChain: Clone, { fn clone(&self) -> Self { - Self { - is_relay_chain: self.is_relay_chain, - longest_chain: self.longest_chain.clone(), - selection: self.selection.clone(), - } + Self { fallback: self.fallback.clone(), selection: self.selection.clone() } } } -impl SelectRelayChain +impl SelectRelayChainWithFallback where B: sc_client_api::Backend + 'static, { - /// Create a new [`SelectRelayChain`] wrapping the given chain backend + /// Create a new [`SelectRelayChainWithFallback`] wrapping the given chain backend /// and a handle to the overseer. - pub fn new(backend: Arc, is_relay_chain: bool, overseer: Handle, metrics: Metrics) -> Self { - SelectRelayChain { - is_relay_chain, - longest_chain: sc_consensus::LongestChain::new(backend.clone()), - selection: SelectRelayChainInner::new(backend, overseer, metrics), + pub fn new(backend: Arc, overseer: Handle, metrics: Metrics) -> Self { + SelectRelayChainWithFallback { + fallback: sc_consensus::LongestChain::new(backend.clone()), + selection: SelectRelayChain::new(backend, overseer, metrics), } } } +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); + } +} + #[async_trait::async_trait] -impl SelectChain for SelectRelayChain +impl SelectChain for SelectRelayChainWithFallback where B: sc_client_api::Backend + 'static, { async fn leaves(&self) -> Result, ConsensusError> { - if !self.is_relay_chain { - return self.longest_chain.leaves().await + if self.selection.overseer.is_disconnected() { + return self.fallback.leaves().await } self.selection.leaves().await } async fn best_chain(&self) -> Result { - if !self.is_relay_chain { - return self.longest_chain.best_chain().await + if self.selection.overseer.is_disconnected() { + return self.fallback.best_chain().await } self.selection.best_chain().await } @@ -170,34 +179,34 @@ where maybe_max_number: Option, ) -> Result, ConsensusError> { let longest_chain_best = - self.longest_chain.finality_target(target_hash, maybe_max_number).await?; + self.fallback.finality_target(target_hash, maybe_max_number).await?; - if !self.is_relay_chain { + if self.selection.overseer.is_disconnected() { return Ok(longest_chain_best) } self.selection - .finality_target_with_longest_chain(target_hash, longest_chain_best, maybe_max_number) + .finality_target_with_fallback(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 SelectRelayChainInner { +pub struct SelectRelayChain { backend: Arc, overseer: OH, metrics: Metrics, } -impl SelectRelayChainInner +impl SelectRelayChain where B: HeaderProviderProvider, OH: OverseerHandleT, { - /// Create a new [`SelectRelayChainInner`] 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: OH, metrics: Metrics) -> Self { - SelectRelayChainInner { backend, overseer, metrics } + SelectRelayChain { backend, overseer, metrics } } fn block_header(&self, hash: Hash) -> Result { @@ -225,13 +234,13 @@ where } } -impl Clone for SelectRelayChainInner +impl Clone for SelectRelayChain where B: HeaderProviderProvider + Send + Sync, OH: OverseerHandleT, { fn clone(&self) -> Self { - SelectRelayChainInner { + SelectRelayChain { backend: self.backend.clone(), overseer: self.overseer.clone(), metrics: self.metrics.clone(), @@ -264,7 +273,7 @@ impl OverseerHandleT for Handle { } } -impl SelectRelayChainInner +impl SelectRelayChain where B: HeaderProviderProvider, OH: OverseerHandleT, @@ -308,7 +317,7 @@ 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_longest_chain( + pub(crate) async fn finality_target_with_fallback( &self, target_hash: Hash, best_leaf: Option, diff --git a/node/service/src/tests.rs b/node/service/src/tests.rs index 7dc5fe19ecbd..34ac69d78cc7 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 = SelectRelayChainInner::::new( + let select_relay_chain = SelectRelayChain::::new( Arc::new(case_vars.chain.clone()), context.sender().clone(), Default::default(), diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index c180c1d0ea88..80dae08825b0 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -372,9 +372,7 @@ mod tests { use super::*; use futures::executor::block_on; use polkadot_node_subsystem::messages::CollatorProtocolMessage; - use polkadot_overseer::{ - AllSubsystems, Handle, HeadSupportsParachains, Overseer, OverseerConnector, - }; + use polkadot_overseer::{AllSubsystems, Handle, HeadSupportsParachains, Overseer}; use polkadot_primitives::v1::Hash; struct AlwaysSupportsParachains; @@ -396,10 +394,9 @@ mod tests { None, AlwaysSupportsParachains, spawner.clone(), - OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle(handle); + let mut handle = Handle::Connected(handle); spawner.spawn("overseer", overseer.run().then(|_| async { () }).boxed()); diff --git a/node/subsystem/src/lib.rs b/node/subsystem/src/lib.rs index 429120709a07..f0918ab1dc02 100644 --- a/node/subsystem/src/lib.rs +++ b/node/subsystem/src/lib.rs @@ -24,9 +24,7 @@ pub use jaeger::*; pub use polkadot_node_jaeger as jaeger; -pub use polkadot_overseer::{ - self as overseer, dummy::DummySubsystem, ActiveLeavesUpdate, OverseerConnector, OverseerSignal, -}; +pub use polkadot_overseer::{self as overseer, ActiveLeavesUpdate, DummySubsystem, OverseerSignal}; pub use polkadot_node_subsystem_types::{ errors::{self, *}, From 65313050a8416ea358005a0f0905a0db87f9290f Mon Sep 17 00:00:00 2001 From: Koute Date: Mon, 20 Sep 2021 22:21:40 +0900 Subject: [PATCH 051/138] Bump `parity-util-mem` to 0.10.2 (#3897) --- Cargo.lock | 107 ++++++++++++++++++++++------------------------------- 1 file changed, 44 insertions(+), 63 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c46974710b2d..2a08136e0382 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1953,7 +1953,7 @@ dependencies = [ "linregress", "log", "parity-scale-codec", - "paste 1.0.5", + "paste", "scale-info", "sp-api", "sp-io", @@ -2043,7 +2043,7 @@ dependencies = [ "log", "once_cell", "parity-scale-codec", - "paste 1.0.5", + "paste", "scale-info", "serde", "smallvec", @@ -2917,38 +2917,6 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" -[[package]] -name = "jemalloc-ctl" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7" -dependencies = [ - "jemalloc-sys", - "libc", - "paste 0.1.18", -] - -[[package]] -name = "jemalloc-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" -dependencies = [ - "cc", - "fs_extra", - "libc", -] - -[[package]] -name = "jemallocator" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" -dependencies = [ - "jemalloc-sys", - "libc", -] - [[package]] name = "jobserver" version = "0.1.21" @@ -5480,21 +5448,21 @@ dependencies = [ [[package]] name = "parity-util-mem" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7adaf50e545c285006d384d50588e98c405c49b55c0aa05660aca081f6ee5e" +checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770" dependencies = [ "cfg-if 1.0.0", "ethereum-types", "hashbrown", "impl-trait-for-tuples", - "jemalloc-ctl", - "jemallocator", "lru", "parity-util-mem-derive", "parking_lot 0.11.1", "primitive-types", "smallvec", + "tikv-jemalloc-ctl", + "tikv-jemallocator", "winapi 0.3.9", ] @@ -5598,31 +5566,12 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "paste" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" -dependencies = [ - "paste-impl", - "proc-macro-hack", -] - [[package]] name = "paste" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58" -[[package]] -name = "paste-impl" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" -dependencies = [ - "proc-macro-hack", -] - [[package]] name = "pbkdf2" version = "0.3.0" @@ -9291,7 +9240,7 @@ dependencies = [ "approx", "num-complex", "num-traits", - "paste 1.0.5", + "paste", ] [[package]] @@ -9315,7 +9264,7 @@ version = "0.9.9" dependencies = [ "enumn", "parity-scale-codec", - "paste 1.0.5", + "paste", "sp-runtime", "sp-std", ] @@ -9822,7 +9771,7 @@ dependencies = [ "log", "parity-scale-codec", "parity-util-mem", - "paste 1.0.5", + "paste", "rand 0.7.3", "scale-info", "serde", @@ -10090,7 +10039,7 @@ dependencies = [ "pallet-staking", "pallet-transaction-payment", "parity-scale-codec", - "paste 1.0.5", + "paste", "polkadot-core-primitives", "polkadot-runtime", "polkadot-runtime-common", @@ -10597,6 +10546,38 @@ dependencies = [ "threadpool", ] +[[package]] +name = "tikv-jemalloc-ctl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb833c46ecbf8b6daeccb347cefcabf9c1beb5c9b0f853e1cec45632d9963e69" +dependencies = [ + "libc", + "paste", + "tikv-jemalloc-sys", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.4.2+5.2.1-patched.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5844e429d797c62945a566f8da4e24c7fe3fbd5d6617fd8bf7a0b7dc1ee0f22e" +dependencies = [ + "cc", + "fs_extra", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c14a5a604eb8715bc5785018a37d00739b180bcf609916ddf4393d33d49ccdf" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" version = "0.1.43" @@ -11308,7 +11289,7 @@ dependencies = [ "lazy_static", "libc", "log", - "paste 1.0.5", + "paste", "psm", "region", "rustc-demangle", @@ -11787,7 +11768,7 @@ version = "0.9.9" dependencies = [ "frame-support", "parity-scale-codec", - "paste 1.0.5", + "paste", "polkadot-core-primitives", "polkadot-parachain", "polkadot-runtime-parachains", From e0a53cf5beb87dd21fd50ef1d9be3ac39a0d7488 Mon Sep 17 00:00:00 2001 From: Jaco Date: Mon, 20 Sep 2021 18:20:48 +0300 Subject: [PATCH 052/138] Re-enable metadata compare CI check (#3895) --- .gitlab-ci.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 928acf5decf5..aec817450708 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -113,13 +113,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 @@ -269,6 +269,22 @@ build-adder-collator: #### stage: build +check-transaction-versions: + image: node:15 + 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 From 25cb158283c4dc1ee93a35a5781257595d50f264 Mon Sep 17 00:00:00 2001 From: Zeke Mostov <32168567+emostov@users.noreply.github.com> Date: Mon, 20 Sep 2021 16:46:37 -0700 Subject: [PATCH 053/138] weights: pallet-staking & pallet-bags-list (#3872) * Get ready to weight staking & bags-list * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/ * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=pallet_bags_list --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/ * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/ * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_bags_list --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * cargo run --quiet --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * fmt Co-authored-by: Parity Bot --- .../kusama/src/weights/pallet_bags_list.rs | 59 ++- runtime/kusama/src/weights/pallet_staking.rs | 385 +++++++++++++----- .../polkadot/src/weights/pallet_staking.rs | 350 +++++++++++----- .../westend/src/weights/pallet_bags_list.rs | 59 ++- runtime/westend/src/weights/pallet_staking.rs | 381 ++++++++++++----- 5 files changed, 889 insertions(+), 345 deletions(-) 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_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/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/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_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)) } From c406f7b7193709a4aa6f1003d2e6c2c8aa7ce220 Mon Sep 17 00:00:00 2001 From: ferrell-code Date: Tue, 21 Sep 2021 09:52:46 -0400 Subject: [PATCH 054/138] Substrate Companion for #9566 (#3704) * runtime migrations * clean up * cargo fmt * companion * add _ to satisfy trait * fix try-runtime * update substrate Co-authored-by: thiolliere --- Cargo.lock | 311 ++++++++++++++++++------------------ runtime/kusama/src/lib.rs | 38 +++++ runtime/polkadot/src/lib.rs | 39 +++++ 3 files changed, 234 insertions(+), 154 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a08136e0382..50aeb299829b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "chrono", "frame-election-provider-support", @@ -4563,7 +4563,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -4579,7 +4579,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -4594,7 +4594,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4618,7 +4618,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4638,7 +4638,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,14 +4694,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-treasury", "parity-scale-codec", "scale-info", + "sp-core", + "sp-io", "sp-runtime", "sp-std", ] @@ -4776,7 +4779,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4793,7 +4796,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4809,7 +4812,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4833,7 +4836,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4851,7 +4854,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4866,7 +4869,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4889,7 +4892,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4905,7 +4908,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4925,7 +4928,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4942,7 +4945,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4959,7 +4962,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4977,7 +4980,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -4993,7 +4996,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5010,7 +5013,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5025,7 +5028,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5039,7 +5042,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5056,7 +5059,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5079,7 +5082,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5094,7 +5097,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5108,7 +5111,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5124,7 +5127,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5145,7 +5148,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5161,7 +5164,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5175,7 +5178,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5198,7 +5201,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5209,7 +5212,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "sp-arithmetic", @@ -5218,7 +5221,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5232,7 +5235,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5250,7 +5253,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5269,7 +5272,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-support", "frame-system", @@ -5286,7 +5289,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5303,7 +5306,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5314,7 +5317,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5331,7 +5334,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -5347,7 +5350,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-benchmarking", "frame-support", @@ -7723,7 +7726,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7983,7 +7986,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "sp-core", @@ -7994,7 +7997,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "derive_more", @@ -8021,7 +8024,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8044,7 +8047,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8060,7 +8063,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8076,7 +8079,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8087,7 +8090,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "chrono", "fdlimit", @@ -8125,7 +8128,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "fnv", "futures 0.3.17", @@ -8153,7 +8156,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "hash-db", "kvdb", @@ -8178,7 +8181,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "futures 0.3.17", @@ -8202,7 +8205,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "derive_more", @@ -8245,7 +8248,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "derive_more", "futures 0.3.17", @@ -8269,7 +8272,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8282,7 +8285,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "assert_matches", "async-trait", @@ -8316,7 +8319,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "futures 0.3.17", @@ -8342,7 +8345,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "sc-client-api", "sp-authorship", @@ -8353,7 +8356,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8379,7 +8382,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "derive_more", "environmental", @@ -8397,7 +8400,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "parity-scale-codec", @@ -8413,7 +8416,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8432,7 +8435,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "derive_more", @@ -8469,7 +8472,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "derive_more", "finality-grandpa", @@ -8493,7 +8496,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8510,7 +8513,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "derive_more", @@ -8525,7 +8528,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "hash-db", "parity-scale-codec", @@ -8543,7 +8546,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-std", "async-trait", @@ -8594,7 +8597,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8610,7 +8613,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "bytes 1.0.1", "fnv", @@ -8637,7 +8640,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "libp2p", @@ -8650,7 +8653,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8659,7 +8662,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "hash-db", @@ -8690,7 +8693,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8715,7 +8718,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8732,7 +8735,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "directories", @@ -8797,7 +8800,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "parity-scale-codec", @@ -8811,7 +8814,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8833,7 +8836,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "chrono", "futures 0.3.17", @@ -8851,7 +8854,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8880,7 +8883,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8891,7 +8894,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "intervalier", @@ -8918,7 +8921,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "derive_more", "futures 0.3.17", @@ -8932,7 +8935,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9364,7 +9367,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "hash-db", "log", @@ -9381,7 +9384,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9393,7 +9396,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "scale-info", @@ -9406,7 +9409,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "integer-sqrt", "num-traits", @@ -9421,7 +9424,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "scale-info", @@ -9434,7 +9437,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "parity-scale-codec", @@ -9446,7 +9449,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "sp-api", @@ -9458,7 +9461,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "log", @@ -9476,7 +9479,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "futures 0.3.17", @@ -9495,7 +9498,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "merlin", @@ -9518,7 +9521,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "scale-info", @@ -9529,7 +9532,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9541,7 +9544,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "base58", "blake2-rfc", @@ -9586,7 +9589,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9595,7 +9598,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro2", "quote", @@ -9605,7 +9608,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "environmental", "parity-scale-codec", @@ -9616,7 +9619,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "finality-grandpa", "log", @@ -9634,7 +9637,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9648,7 +9651,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "hash-db", @@ -9673,7 +9676,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "lazy_static", "sp-core", @@ -9684,7 +9687,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "derive_more", @@ -9701,7 +9704,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "zstd", ] @@ -9709,7 +9712,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "scale-info", @@ -9724,7 +9727,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9735,7 +9738,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "sp-api", "sp-core", @@ -9745,7 +9748,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "backtrace", ] @@ -9753,7 +9756,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "rustc-hash", "serde", @@ -9763,7 +9766,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "either", "hash256-std-hasher", @@ -9785,7 +9788,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9802,7 +9805,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9814,7 +9817,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "serde", "serde_json", @@ -9823,7 +9826,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "scale-info", @@ -9837,7 +9840,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "scale-info", @@ -9848,7 +9851,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "hash-db", "log", @@ -9871,12 +9874,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" [[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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9889,7 +9892,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "sp-core", @@ -9902,7 +9905,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9918,7 +9921,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "erased-serde", "log", @@ -9936,7 +9939,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "sp-api", "sp-runtime", @@ -9945,7 +9948,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "log", @@ -9961,7 +9964,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "hash-db", "memory-db", @@ -9976,7 +9979,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9992,7 +9995,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10003,7 +10006,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10199,7 +10202,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "platforms", ] @@ -10207,7 +10210,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10229,7 +10232,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-std", "derive_more", @@ -10243,7 +10246,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "async-trait", "futures 0.3.17", @@ -10270,7 +10273,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10280,7 +10283,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10291,7 +10294,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10444,7 +10447,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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "frame-system", "futures 0.3.17", @@ -10883,7 +10886,7 @@ 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#78ce06139243df5fbbf85356a754e6c97ec7cb9c" dependencies = [ "log", "parity-scale-codec", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 39a532b47512..0837d2caf15d 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1555,12 +1555,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; diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 72a5c7488409..a69e28554ebb 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1156,6 +1156,7 @@ pub type Executive = frame_executive::Executive< Runtime, AllPallets, ( + BountiesPrefixMigration, CouncilStoragePrefixMigration, TechnicalCommitteeStoragePrefixMigration, TechnicalMembershipStoragePrefixMigration, @@ -1165,6 +1166,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; From 481dd29079c089f464b7fbc0a6eb9830c97415f3 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Tue, 21 Sep 2021 19:08:21 +0100 Subject: [PATCH 055/138] companion for substrate#9788 (#3858) * companion for https://github.com/paritytech/substrate/pull/9788 * fmt * Some fixes * final fixes * fix a few small things * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 312 +++++++++--------- runtime/kusama/src/lib.rs | 9 +- runtime/parachains/src/hrmp.rs | 5 +- runtime/polkadot/src/lib.rs | 10 +- runtime/westend/src/lib.rs | 9 +- .../bags-list/src/voter_bags.rs | 2 +- utils/staking-miner/src/main.rs | 6 +- 7 files changed, 184 insertions(+), 169 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50aeb299829b..b0e9ea60c000 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "chrono", "frame-election-provider-support", @@ -4563,7 +4563,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -4579,7 +4579,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -4594,7 +4594,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4618,7 +4618,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4638,7 +4638,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4779,7 +4779,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4796,7 +4796,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4812,7 +4812,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4854,7 +4854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4928,7 +4928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4945,7 +4945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4980,7 +4980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -4996,7 +4996,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5028,7 +5028,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5097,7 +5097,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5148,7 +5148,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5164,7 +5164,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5201,7 +5201,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5212,7 +5212,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "log", "sp-arithmetic", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5272,7 +5272,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-support", "frame-system", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5306,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5334,7 +5334,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-benchmarking", "frame-support", @@ -7726,7 +7726,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "log", "sp-core", @@ -7997,7 +7997,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "derive_more", @@ -8024,7 +8024,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8047,7 +8047,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8063,7 +8063,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8079,7 +8079,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8090,7 +8090,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "chrono", "fdlimit", @@ -8128,7 +8128,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "fnv", "futures 0.3.17", @@ -8156,7 +8156,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "hash-db", "kvdb", @@ -8181,7 +8181,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "futures 0.3.17", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "derive_more", @@ -8248,7 +8248,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "derive_more", "futures 0.3.17", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "assert_matches", "async-trait", @@ -8319,7 +8319,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "futures 0.3.17", @@ -8345,7 +8345,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "sc-client-api", "sp-authorship", @@ -8356,7 +8356,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8382,7 +8382,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "derive_more", "environmental", @@ -8400,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "log", "parity-scale-codec", @@ -8416,7 +8416,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8435,7 +8435,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "derive_more", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "derive_more", "finality-grandpa", @@ -8496,7 +8496,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8513,7 +8513,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "derive_more", @@ -8528,7 +8528,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "hash-db", "parity-scale-codec", @@ -8546,7 +8546,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-std", "async-trait", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8613,7 +8613,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "bytes 1.0.1", "fnv", @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "libp2p", @@ -8653,7 +8653,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8662,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "hash-db", @@ -8693,7 +8693,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8718,7 +8718,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8735,7 +8735,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "directories", @@ -8800,7 +8800,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "log", "parity-scale-codec", @@ -8814,7 +8814,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8836,7 +8836,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "chrono", "futures 0.3.17", @@ -8854,7 +8854,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8894,7 +8894,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "intervalier", @@ -8921,7 +8921,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "derive_more", "futures 0.3.17", @@ -8935,7 +8935,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9367,7 +9367,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "hash-db", "log", @@ -9384,7 +9384,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9396,7 +9396,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "scale-info", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "integer-sqrt", "num-traits", @@ -9424,7 +9424,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "scale-info", @@ -9437,7 +9437,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "parity-scale-codec", @@ -9449,7 +9449,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "sp-api", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "log", @@ -9479,7 +9479,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "futures 0.3.17", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "merlin", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "scale-info", @@ -9532,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9544,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "base58", "blake2-rfc", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9598,7 +9598,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro2", "quote", @@ -9608,7 +9608,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "environmental", "parity-scale-codec", @@ -9619,7 +9619,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "finality-grandpa", "log", @@ -9637,7 +9637,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9651,7 +9651,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "hash-db", @@ -9676,7 +9676,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "lazy_static", "sp-core", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "derive_more", @@ -9704,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "zstd", ] @@ -9712,7 +9712,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "scale-info", @@ -9727,7 +9727,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "sp-api", "sp-core", @@ -9748,7 +9748,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "backtrace", ] @@ -9756,7 +9756,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "rustc-hash", "serde", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "either", "hash256-std-hasher", @@ -9788,7 +9788,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9805,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9817,7 +9817,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "serde", "serde_json", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "scale-info", @@ -9840,7 +9840,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "scale-info", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "hash-db", "log", @@ -9874,12 +9874,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9892,7 +9892,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "log", "sp-core", @@ -9905,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9921,7 +9921,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "erased-serde", "log", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "sp-api", "sp-runtime", @@ -9948,7 +9948,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "log", @@ -9964,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "hash-db", "memory-db", @@ -9979,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9995,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10006,7 +10006,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10202,7 +10202,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "platforms", ] @@ -10210,7 +10210,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10232,7 +10232,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-std", "derive_more", @@ -10246,7 +10246,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "async-trait", "futures 0.3.17", @@ -10273,7 +10273,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10283,7 +10283,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10294,7 +10294,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10447,7 +10447,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ "frame-system", "futures 0.3.17", @@ -10886,8 +10886,9 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#78ce06139243df5fbbf85356a754e6c97ec7cb9c" +source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" dependencies = [ + "jsonrpsee-ws-client", "log", "parity-scale-codec", "remote-externalities", @@ -10897,9 +10898,12 @@ dependencies = [ "sc-service", "serde", "sp-core", + "sp-externalities", + "sp-io", "sp-keystore", "sp-runtime", "sp-state-machine", + "sp-version", "structopt", ] diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 0837d2caf15d..86ef70dc9838 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -2016,10 +2016,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) } } diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index f087dfd3a405..373bb3d662dc 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 {:?}->{:?}", diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index a69e28554ebb..ca9747c957ee 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1593,10 +1593,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) } } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 3ce1ef1defc0..31b9342dc66b 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -1441,10 +1441,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) } } 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/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()) From e9c4bc1eb1908829322337def9bbe9f7d5c4beba Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Tue, 21 Sep 2021 18:14:12 -0700 Subject: [PATCH 056/138] Add benchmarking for parachain runtime paras pallet (#3888) * Crate basic barebones benchmarking infrastructure for paras * Fill in benchmarking contents * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- 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 * Use autogenerated WeightInfos for kusama and westend * cargo fmt * Use saturating_sub * Add missing import * Try and hit the worst possible time complexity as much as possible * cargo fmt * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- 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 * Add a MAX_HEAD_DATA_SIZE constant * Prefill vectors with sample data for worst case complexity * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- 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 * Improve comment on SAMPLE_SIZE constant Co-authored-by: Parity Bot --- primitives/src/v1/mod.rs | 7 + runtime/common/src/integration_tests.rs | 1 + runtime/common/src/paras_registrar.rs | 1 + runtime/kusama/src/lib.rs | 3 + runtime/kusama/src/weights/mod.rs | 1 + .../src/weights/runtime_parachains_paras.rs | 106 ++++++++++++++ runtime/parachains/src/configuration.rs | 10 +- runtime/parachains/src/mock.rs | 1 + runtime/parachains/src/paras.rs | 25 +++- runtime/parachains/src/paras/benchmarking.rs | 135 ++++++++++++++++++ runtime/parachains/src/paras/weights.rs | 97 +++++++++++++ runtime/rococo/src/lib.rs | 1 + runtime/test-runtime/src/lib.rs | 1 + runtime/westend/src/lib.rs | 3 + runtime/westend/src/weights/mod.rs | 1 + .../src/weights/runtime_parachains_paras.rs | 106 ++++++++++++++ 16 files changed, 493 insertions(+), 6 deletions(-) create mode 100644 runtime/kusama/src/weights/runtime_parachains_paras.rs create mode 100644 runtime/parachains/src/paras/benchmarking.rs create mode 100644 runtime/parachains/src/paras/weights.rs create mode 100644 runtime/westend/src/weights/runtime_parachains_paras.rs 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/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index c0e1615599e7..03d457b5c00b 100644 --- a/runtime/common/src/integration_tests.rs +++ b/runtime/common/src/integration_tests.rs @@ -165,6 +165,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/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 86ef70dc9838..8c7b8e094904 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1149,6 +1149,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! { @@ -2050,6 +2051,7 @@ 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::paras, Paras); // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -2125,6 +2127,7 @@ 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::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..0b944e458a90 100644 --- a/runtime/kusama/src/weights/mod.rs +++ b/runtime/kusama/src/weights/mod.rs @@ -45,3 +45,4 @@ 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_paras; 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/src/configuration.rs b/runtime/parachains/src/configuration.rs index bcfc05e1a6c5..f2c94ef91532 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") } @@ -390,6 +397,7 @@ pub mod pallet { #[pallet::weight(T::WeightInfo::set_config_with_u32())] 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 }); diff --git a/runtime/parachains/src/mock.rs b/runtime/parachains/src/mock.rs index c4da0991de18..387e0a7bf5e8 100644 --- a/runtime/parachains/src/mock.rs +++ b/runtime/parachains/src/mock.rs @@ -123,6 +123,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 {} 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/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index b86314c50b9f..d9e42a75ec16 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -588,6 +588,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! { diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 58ccea45c249..9ead46d3cf81 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -484,6 +484,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 {} diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 31b9342dc66b..a583d5618135 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -818,6 +818,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! { @@ -1474,6 +1475,7 @@ 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::paras, Paras); // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -1540,6 +1542,7 @@ 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::paras, Paras); // Substrate add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_balances, Balances); diff --git a/runtime/westend/src/weights/mod.rs b/runtime/westend/src/weights/mod.rs index 76e23ae5fb49..c7dba930ed49 100644 --- a/runtime/westend/src/weights/mod.rs +++ b/runtime/westend/src/weights/mod.rs @@ -35,3 +35,4 @@ 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_paras; 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)) + } +} From 90e892919b5105a001d85c5be4a0fcc3faa63262 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 22 Sep 2021 04:23:42 -0500 Subject: [PATCH 057/138] add tracing to assignment criteria (#3886) * add tracing to assignment criteria * fmt --- node/core/approval-voting/src/criteria.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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(); From 6ce805b311070b4cb3fdccbe1b61ab619d6c0777 Mon Sep 17 00:00:00 2001 From: Georges Date: Wed, 22 Sep 2021 11:28:59 +0100 Subject: [PATCH 058/138] Companion for Generate storage info for pallet grandpa #9817 (#3892) * Adding `MaxAuthorities` to pallet grandpa This is neede after changes to substrate * Adding `MaxAuthorities` to granda in test-runtime * Missed one `MaxAuthorities` * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 308 +++++++++++++------------- bridges/bin/rialto/runtime/src/lib.rs | 1 + runtime/kusama/src/lib.rs | 1 + runtime/polkadot/src/lib.rs | 1 + runtime/rococo/src/lib.rs | 1 + runtime/test-runtime/src/lib.rs | 1 + runtime/westend/src/lib.rs | 1 + 7 files changed, 160 insertions(+), 154 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b0e9ea60c000..d4747de22882 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "chrono", "frame-election-provider-support", @@ -4563,7 +4563,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -4579,7 +4579,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -4594,7 +4594,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4618,7 +4618,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4638,7 +4638,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4779,7 +4779,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4796,7 +4796,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4812,7 +4812,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4854,7 +4854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4928,7 +4928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4945,7 +4945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4980,7 +4980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -4996,7 +4996,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5028,7 +5028,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5097,7 +5097,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5148,7 +5148,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5164,7 +5164,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5201,7 +5201,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5212,7 +5212,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "log", "sp-arithmetic", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5272,7 +5272,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-support", "frame-system", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5306,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5334,7 +5334,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-benchmarking", "frame-support", @@ -7726,7 +7726,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "log", "sp-core", @@ -7997,7 +7997,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "derive_more", @@ -8024,7 +8024,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8047,7 +8047,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8063,7 +8063,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8079,7 +8079,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8090,7 +8090,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "chrono", "fdlimit", @@ -8128,7 +8128,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "fnv", "futures 0.3.17", @@ -8156,7 +8156,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "hash-db", "kvdb", @@ -8181,7 +8181,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "futures 0.3.17", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "derive_more", @@ -8248,7 +8248,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "derive_more", "futures 0.3.17", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "assert_matches", "async-trait", @@ -8319,7 +8319,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "futures 0.3.17", @@ -8345,7 +8345,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "sc-client-api", "sp-authorship", @@ -8356,7 +8356,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8382,7 +8382,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "derive_more", "environmental", @@ -8400,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "log", "parity-scale-codec", @@ -8416,7 +8416,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8435,7 +8435,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "derive_more", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "derive_more", "finality-grandpa", @@ -8496,7 +8496,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8513,7 +8513,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "derive_more", @@ -8528,7 +8528,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "hash-db", "parity-scale-codec", @@ -8546,7 +8546,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-std", "async-trait", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8613,7 +8613,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "bytes 1.0.1", "fnv", @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "libp2p", @@ -8653,7 +8653,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8662,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "hash-db", @@ -8693,7 +8693,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8718,7 +8718,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8735,7 +8735,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "directories", @@ -8800,7 +8800,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "log", "parity-scale-codec", @@ -8814,7 +8814,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8836,7 +8836,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "chrono", "futures 0.3.17", @@ -8854,7 +8854,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8894,7 +8894,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "intervalier", @@ -8921,7 +8921,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "derive_more", "futures 0.3.17", @@ -8935,7 +8935,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9367,7 +9367,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "hash-db", "log", @@ -9384,7 +9384,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9396,7 +9396,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "scale-info", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "integer-sqrt", "num-traits", @@ -9424,7 +9424,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "scale-info", @@ -9437,7 +9437,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "parity-scale-codec", @@ -9449,7 +9449,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "sp-api", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "log", @@ -9479,7 +9479,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "futures 0.3.17", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "merlin", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "scale-info", @@ -9532,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9544,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "base58", "blake2-rfc", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9598,7 +9598,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro2", "quote", @@ -9608,7 +9608,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "environmental", "parity-scale-codec", @@ -9619,7 +9619,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "finality-grandpa", "log", @@ -9637,7 +9637,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9651,7 +9651,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "hash-db", @@ -9676,7 +9676,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "lazy_static", "sp-core", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "derive_more", @@ -9704,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "zstd", ] @@ -9712,7 +9712,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "scale-info", @@ -9727,7 +9727,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "sp-api", "sp-core", @@ -9748,7 +9748,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "backtrace", ] @@ -9756,7 +9756,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "rustc-hash", "serde", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "either", "hash256-std-hasher", @@ -9788,7 +9788,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9805,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9817,7 +9817,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "serde", "serde_json", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "scale-info", @@ -9840,7 +9840,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "scale-info", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "hash-db", "log", @@ -9874,12 +9874,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9892,7 +9892,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "log", "sp-core", @@ -9905,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9921,7 +9921,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "erased-serde", "log", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "sp-api", "sp-runtime", @@ -9948,7 +9948,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "log", @@ -9964,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "hash-db", "memory-db", @@ -9979,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9995,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10006,7 +10006,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10202,7 +10202,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "platforms", ] @@ -10210,7 +10210,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10232,7 +10232,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-std", "derive_more", @@ -10246,7 +10246,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "async-trait", "futures 0.3.17", @@ -10273,7 +10273,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10283,7 +10283,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10294,7 +10294,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10447,7 +10447,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "frame-system", "futures 0.3.17", @@ -10886,7 +10886,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#04bb4e02137f7aba9c20be071bcf9ba6bceaf8da" +source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" dependencies = [ "jsonrpsee-ws-client", "log", 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/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 8c7b8e094904..43d49791588c 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -803,6 +803,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 diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index ca9747c957ee..0c22485e94b5 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -789,6 +789,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 diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index d9e42a75ec16..fc7c026c4dc5 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -551,6 +551,7 @@ impl pallet_grandpa::Config for Runtime { >; type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } parameter_types! { diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 9ead46d3cf81..5d23007ac8d6 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -363,6 +363,7 @@ impl pallet_grandpa::Config for Runtime { type HandleEquivocation = (); type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } impl frame_system::offchain::CreateSignedTransaction for Runtime diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index a583d5618135..82fde047ff84 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -522,6 +522,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 From a19b9ef8477b3696ec9ef5c0155f0be6db0e9d00 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Wed, 22 Sep 2021 16:21:42 +0100 Subject: [PATCH 059/138] Companion for substrate PR#9766 (#3900) * fix weights * reduce time * update Substrate Co-authored-by: parity-processbot <> --- Cargo.lock | 308 +++++++++--------- runtime/common/src/elections.rs | 19 +- .../pallet_election_provider_multi_phase.rs | 2 +- .../pallet_election_provider_multi_phase.rs | 2 +- .../pallet_election_provider_multi_phase.rs | 2 +- 5 files changed, 167 insertions(+), 166 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d4747de22882..3a79ce8ff74f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "chrono", "frame-election-provider-support", @@ -4563,7 +4563,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -4579,7 +4579,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -4594,7 +4594,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4618,7 +4618,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4638,7 +4638,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4779,7 +4779,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4796,7 +4796,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4812,7 +4812,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4854,7 +4854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4928,7 +4928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4945,7 +4945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4980,7 +4980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -4996,7 +4996,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5028,7 +5028,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5097,7 +5097,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5148,7 +5148,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5164,7 +5164,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5201,7 +5201,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5212,7 +5212,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "log", "sp-arithmetic", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5272,7 +5272,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-support", "frame-system", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5306,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5334,7 +5334,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-benchmarking", "frame-support", @@ -7726,7 +7726,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "log", "sp-core", @@ -7997,7 +7997,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "derive_more", @@ -8024,7 +8024,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8047,7 +8047,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8063,7 +8063,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8079,7 +8079,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8090,7 +8090,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "chrono", "fdlimit", @@ -8128,7 +8128,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "fnv", "futures 0.3.17", @@ -8156,7 +8156,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "hash-db", "kvdb", @@ -8181,7 +8181,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "futures 0.3.17", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "derive_more", @@ -8248,7 +8248,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "derive_more", "futures 0.3.17", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "assert_matches", "async-trait", @@ -8319,7 +8319,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "futures 0.3.17", @@ -8345,7 +8345,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "sc-client-api", "sp-authorship", @@ -8356,7 +8356,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8382,7 +8382,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "derive_more", "environmental", @@ -8400,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "log", "parity-scale-codec", @@ -8416,7 +8416,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8435,7 +8435,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "derive_more", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "derive_more", "finality-grandpa", @@ -8496,7 +8496,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8513,7 +8513,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "derive_more", @@ -8528,7 +8528,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "hash-db", "parity-scale-codec", @@ -8546,7 +8546,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-std", "async-trait", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8613,7 +8613,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "bytes 1.0.1", "fnv", @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "libp2p", @@ -8653,7 +8653,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8662,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "hash-db", @@ -8693,7 +8693,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8718,7 +8718,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8735,7 +8735,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "directories", @@ -8800,7 +8800,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "log", "parity-scale-codec", @@ -8814,7 +8814,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8836,7 +8836,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "chrono", "futures 0.3.17", @@ -8854,7 +8854,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8894,7 +8894,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "intervalier", @@ -8921,7 +8921,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "derive_more", "futures 0.3.17", @@ -8935,7 +8935,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9367,7 +9367,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "hash-db", "log", @@ -9384,7 +9384,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9396,7 +9396,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "scale-info", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "integer-sqrt", "num-traits", @@ -9424,7 +9424,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "scale-info", @@ -9437,7 +9437,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "parity-scale-codec", @@ -9449,7 +9449,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "sp-api", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "log", @@ -9479,7 +9479,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "futures 0.3.17", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "merlin", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "scale-info", @@ -9532,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9544,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "base58", "blake2-rfc", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9598,7 +9598,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro2", "quote", @@ -9608,7 +9608,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "environmental", "parity-scale-codec", @@ -9619,7 +9619,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "finality-grandpa", "log", @@ -9637,7 +9637,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9651,7 +9651,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "hash-db", @@ -9676,7 +9676,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "lazy_static", "sp-core", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "derive_more", @@ -9704,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "zstd", ] @@ -9712,7 +9712,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "scale-info", @@ -9727,7 +9727,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "sp-api", "sp-core", @@ -9748,7 +9748,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "backtrace", ] @@ -9756,7 +9756,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "rustc-hash", "serde", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "either", "hash256-std-hasher", @@ -9788,7 +9788,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9805,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9817,7 +9817,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "serde", "serde_json", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "scale-info", @@ -9840,7 +9840,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "scale-info", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "hash-db", "log", @@ -9874,12 +9874,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9892,7 +9892,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "log", "sp-core", @@ -9905,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9921,7 +9921,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "erased-serde", "log", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "sp-api", "sp-runtime", @@ -9948,7 +9948,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "log", @@ -9964,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "hash-db", "memory-db", @@ -9979,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9995,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10006,7 +10006,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10202,7 +10202,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "platforms", ] @@ -10210,7 +10210,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10232,7 +10232,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-std", "derive_more", @@ -10246,7 +10246,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "async-trait", "futures 0.3.17", @@ -10273,7 +10273,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10283,7 +10283,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10294,7 +10294,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10447,7 +10447,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "frame-system", "futures 0.3.17", @@ -10886,7 +10886,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#49e91e2f2390fda92e41726c2fb728cd778e7631" +source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" dependencies = [ "jsonrpsee-ws-client", "log", 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/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/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/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) From 9e43470febf6edf6147c35ea0c3828811239f83c Mon Sep 17 00:00:00 2001 From: Georges Date: Thu, 23 Sep 2021 00:33:44 +0100 Subject: [PATCH 060/138] Companion for Generate storage info for pallet babe #9760 (#3831) * Adding MaxSegmentLength and MaxAuthorities to pallet babe * Missed a few to_vec * Removing `MaxSegmentLength` as not needed anymore * Adding `MaxAuthorities` to couple of missing place * Adding missing definition of `MaxAuthorities` * Adding a missing to_vec * update Substrate Co-authored-by: thiolliere Co-authored-by: parity-processbot <> --- Cargo.lock | 308 ++++++++++++------------ runtime/common/src/integration_tests.rs | 2 + runtime/kusama/src/lib.rs | 4 +- runtime/polkadot/src/lib.rs | 4 +- runtime/rococo/src/lib.rs | 4 +- runtime/test-runtime/src/lib.rs | 3 +- runtime/westend/src/lib.rs | 4 +- 7 files changed, 170 insertions(+), 159 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a79ce8ff74f..47b43b86c43a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "chrono", "frame-election-provider-support", @@ -4563,7 +4563,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -4579,7 +4579,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -4594,7 +4594,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4618,7 +4618,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4638,7 +4638,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4779,7 +4779,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4796,7 +4796,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4812,7 +4812,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4854,7 +4854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4928,7 +4928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4945,7 +4945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4980,7 +4980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -4996,7 +4996,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5028,7 +5028,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5097,7 +5097,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5148,7 +5148,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5164,7 +5164,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5201,7 +5201,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -5212,7 +5212,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "log", "sp-arithmetic", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5272,7 +5272,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support", "frame-system", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5306,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5334,7 +5334,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-benchmarking", "frame-support", @@ -7726,7 +7726,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7986,7 +7986,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "log", "sp-core", @@ -7997,7 +7997,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "derive_more", @@ -8024,7 +8024,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8047,7 +8047,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8063,7 +8063,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8079,7 +8079,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8090,7 +8090,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "chrono", "fdlimit", @@ -8128,7 +8128,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "fnv", "futures 0.3.17", @@ -8156,7 +8156,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "hash-db", "kvdb", @@ -8181,7 +8181,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "futures 0.3.17", @@ -8205,7 +8205,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "derive_more", @@ -8248,7 +8248,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "derive_more", "futures 0.3.17", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8285,7 +8285,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "assert_matches", "async-trait", @@ -8319,7 +8319,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "futures 0.3.17", @@ -8345,7 +8345,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "sc-client-api", "sp-authorship", @@ -8356,7 +8356,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8382,7 +8382,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "derive_more", "environmental", @@ -8400,7 +8400,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "log", "parity-scale-codec", @@ -8416,7 +8416,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8435,7 +8435,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "derive_more", @@ -8472,7 +8472,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "derive_more", "finality-grandpa", @@ -8496,7 +8496,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8513,7 +8513,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "derive_more", @@ -8528,7 +8528,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "hash-db", "parity-scale-codec", @@ -8546,7 +8546,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-std", "async-trait", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8613,7 +8613,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "bytes 1.0.1", "fnv", @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "libp2p", @@ -8653,7 +8653,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8662,7 +8662,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "hash-db", @@ -8693,7 +8693,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8718,7 +8718,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8735,7 +8735,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "directories", @@ -8800,7 +8800,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "log", "parity-scale-codec", @@ -8814,7 +8814,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8836,7 +8836,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "chrono", "futures 0.3.17", @@ -8854,7 +8854,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8894,7 +8894,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "intervalier", @@ -8921,7 +8921,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "derive_more", "futures 0.3.17", @@ -8935,7 +8935,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9367,7 +9367,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "hash-db", "log", @@ -9384,7 +9384,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9396,7 +9396,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "scale-info", @@ -9409,7 +9409,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "integer-sqrt", "num-traits", @@ -9424,7 +9424,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "scale-info", @@ -9437,7 +9437,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "parity-scale-codec", @@ -9449,7 +9449,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "sp-api", @@ -9461,7 +9461,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "log", @@ -9479,7 +9479,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "futures 0.3.17", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "merlin", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "scale-info", @@ -9532,7 +9532,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9544,7 +9544,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "base58", "blake2-rfc", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9598,7 +9598,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro2", "quote", @@ -9608,7 +9608,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "environmental", "parity-scale-codec", @@ -9619,7 +9619,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "finality-grandpa", "log", @@ -9637,7 +9637,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9651,7 +9651,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "hash-db", @@ -9676,7 +9676,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "lazy_static", "sp-core", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "derive_more", @@ -9704,7 +9704,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "zstd", ] @@ -9712,7 +9712,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "scale-info", @@ -9727,7 +9727,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9738,7 +9738,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "sp-api", "sp-core", @@ -9748,7 +9748,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "backtrace", ] @@ -9756,7 +9756,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "rustc-hash", "serde", @@ -9766,7 +9766,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "either", "hash256-std-hasher", @@ -9788,7 +9788,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9805,7 +9805,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9817,7 +9817,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "serde", "serde_json", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "scale-info", @@ -9840,7 +9840,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "scale-info", @@ -9851,7 +9851,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "hash-db", "log", @@ -9874,12 +9874,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9892,7 +9892,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "log", "sp-core", @@ -9905,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9921,7 +9921,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "erased-serde", "log", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "sp-api", "sp-runtime", @@ -9948,7 +9948,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "log", @@ -9964,7 +9964,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "hash-db", "memory-db", @@ -9979,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9995,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10006,7 +10006,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10202,7 +10202,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "platforms", ] @@ -10210,7 +10210,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10232,7 +10232,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-std", "derive_more", @@ -10246,7 +10246,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "async-trait", "futures 0.3.17", @@ -10273,7 +10273,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10283,7 +10283,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -10294,7 +10294,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10447,7 +10447,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-system", "futures 0.3.17", @@ -10886,7 +10886,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#136120674703bf5541ee2368ebb330d803b61cce" +source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index 03d457b5c00b..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! { diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 43d49791588c..c2fa01f66f36 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -240,6 +240,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -1938,7 +1940,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/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 0c22485e94b5..997762515478 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -245,6 +245,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -1514,7 +1516,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/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index fc7c026c4dc5..9f03cc8253e8 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -512,6 +512,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -1309,7 +1311,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, } diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 5d23007ac8d6..722aab3e16af 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! { @@ -914,7 +915,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/westend/src/lib.rs b/runtime/westend/src/lib.rs index 82fde047ff84..179088dc1a57 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -226,6 +226,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -1363,7 +1365,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, } From a97bf523ddebd48ec63563b3b09c9e8e2abd4207 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Sep 2021 00:24:28 +0000 Subject: [PATCH 061/138] Bump proc-macro-crate from 1.0.0 to 1.1.0 (#3863) Bumps [proc-macro-crate](https://github.com/bkchr/proc-macro-crate) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/bkchr/proc-macro-crate/releases) - [Commits](https://github.com/bkchr/proc-macro-crate/commits) --- updated-dependencies: - dependency-name: proc-macro-crate dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 30 +++++++++---------- .../overseer-gen/proc-macro/Cargo.toml | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 47b43b86c43a..da9fc51114c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2076,7 +2076,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -3075,7 +3075,7 @@ checksum = "f37924e16300e249a52a22cabb5632f846dc9760b39355f5e8bc70cd23dc6300" dependencies = [ "Inflector", "bae", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -4269,7 +4269,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", @@ -5203,7 +5203,7 @@ name = "pallet-staking-reward-curve" version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5423,7 +5423,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40dbbfef7f0a1143c5b06e0d76a6278e25dac0bc1af4be51a0fbb73f07e7ad09" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -6523,7 +6523,7 @@ name = "polkadot-overseer-gen-proc-macro" version = "0.9.9" dependencies = [ "assert_matches", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -7251,9 +7251,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", @@ -8081,7 +8081,7 @@ name = "sc-chain-spec-derive" version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -8885,7 +8885,7 @@ name = "sc-tracing-proc-macro" version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -8963,7 +8963,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", @@ -9387,7 +9387,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "blake2-rfc", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9729,7 +9729,7 @@ name = "sp-npos-elections-solution-type" version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9808,7 +9808,7 @@ version = "4.0.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ "Inflector", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -10285,7 +10285,7 @@ name = "substrate-test-utils-derive" version = "0.10.0-dev" source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 2940499c011a..fd76912bce81 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -15,7 +15,7 @@ proc-macro = true syn = { version = "1.0.76", 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" From 524439e78f6df9c4dd5d821357d3e151ab4d95ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Sep 2021 00:29:41 +0000 Subject: [PATCH 062/138] Bump parity-scale-codec from 2.2.0 to 2.3.0 (#3833) Bumps [parity-scale-codec](https://github.com/paritytech/parity-scale-codec) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/paritytech/parity-scale-codec/releases) - [Changelog](https://github.com/paritytech/parity-scale-codec/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/parity-scale-codec/compare/v2.2...parity-scale-codec-v2.3.0) --- updated-dependencies: - dependency-name: parity-scale-codec dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- core-primitives/Cargo.toml | 2 +- erasure-coding/Cargo.toml | 2 +- node/collation-generation/Cargo.toml | 2 +- node/core/approval-voting/Cargo.toml | 2 +- node/core/av-store/Cargo.toml | 2 +- node/core/candidate-validation/Cargo.toml | 2 +- node/core/chain-api/Cargo.toml | 2 +- node/core/dispute-participation/Cargo.toml | 2 +- node/core/pvf/Cargo.toml | 2 +- node/jaeger/Cargo.toml | 2 +- node/network/availability-distribution/Cargo.toml | 2 +- node/network/availability-recovery/Cargo.toml | 2 +- node/network/bridge/Cargo.toml | 2 +- node/network/collator-protocol/Cargo.toml | 2 +- node/network/dispute-distribution/Cargo.toml | 2 +- node/network/protocol/Cargo.toml | 2 +- node/network/statement-distribution/Cargo.toml | 2 +- node/primitives/Cargo.toml | 2 +- node/subsystem-util/Cargo.toml | 2 +- node/test/client/Cargo.toml | 2 +- parachain/test-parachains/Cargo.toml | 2 +- parachain/test-parachains/adder/Cargo.toml | 2 +- parachain/test-parachains/adder/collator/Cargo.toml | 2 +- primitives/Cargo.toml | 2 +- runtime/common/Cargo.toml | 2 +- runtime/common/slot_range_helper/Cargo.toml | 2 +- runtime/kusama/Cargo.toml | 2 +- runtime/parachains/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/rococo/Cargo.toml | 2 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- statement-table/Cargo.toml | 2 +- xcm/Cargo.toml | 2 +- xcm/xcm-builder/Cargo.toml | 2 +- xcm/xcm-executor/Cargo.toml | 2 +- 37 files changed, 38 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da9fc51114c1..c887e6fd17d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5405,9 +5405,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8975095a2a03bbbdc70a74ab11a4f76a6d0b84680d87c68d722531b0ac28e8a9" +checksum = "e11263a97373b43da4b426edbb52ef99a7b51e2d9752ef56a7f8b356f48495a5" dependencies = [ "arrayvec 0.7.0", "bitvec 0.20.1", diff --git a/core-primitives/Cargo.toml b/core-primitives/Cargo.toml index 9b469657bde1..0e0322d2dd22 100644 --- a/core-primitives/Cargo.toml +++ b/core-primitives/Cargo.toml @@ -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.0", default-features = false, features = [ "derive" ] } parity-util-mem = { version = "0.10.0", default-features = false, optional = true } [features] diff --git a/erasure-coding/Cargo.toml b/erasure-coding/Cargo.toml index f2d9475cc5d1..b0db6c75f4d1 100644 --- a/erasure-coding/Cargo.toml +++ b/erasure-coding/Cargo.toml @@ -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.0", 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/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index 70d466ebd553..510f6222bf6f 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -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.0", 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..c071e583cf41 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -7,7 +7,7 @@ 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"] } +parity-scale-codec = { version = "2.3.0", default-features = false, features = ["bit-vec", "derive"] } tracing = "0.1.27" bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } lru = "0.6" diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index 9b72f74c09f0..69c37ad3b46f 100644 --- a/node/core/av-store/Cargo.toml +++ b/node/core/av-store/Cargo.toml @@ -12,7 +12,7 @@ thiserror = "1.0.26" tracing = "0.1.27" bitvec = "0.20.1" -parity-scale-codec = { version = "2.0.0", features = ["derive"] } +parity-scale-codec = { version = "2.3.0", 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/candidate-validation/Cargo.toml b/node/core/candidate-validation/Cargo.toml index e1a3e0fa4ec3..0c818fc62f51 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -10,7 +10,7 @@ futures = "0.3.17" tracing = "0.1.27" 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.0", 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..a0e4100d3454 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -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.0" 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/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index 65c56e2423f2..dff65a8fc260 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -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.0" polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers"} sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 78b8c51ac516..c4289f5bbfaa 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -20,7 +20,7 @@ slotmap = "1.0" tracing = "0.1.27" 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.0", 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/jaeger/Cargo.toml b/node/jaeger/Cargo.toml index 6e95dc170080..51858a654100 100644 --- a/node/jaeger/Cargo.toml +++ b/node/jaeger/Cargo.toml @@ -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.0", default-features = false } diff --git a/node/network/availability-distribution/Cargo.toml b/node/network/availability-distribution/Cargo.toml index f54f45b37d91..79cc95a418fe 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.17" tracing = "0.1.27" -parity-scale-codec = { version = "2.0.0", features = ["std"] } +parity-scale-codec = { version = "2.3.0", 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-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index a7eaf36d8cbf..e4d56f4c6841 100644 --- a/node/network/availability-recovery/Cargo.toml +++ b/node/network/availability-recovery/Cargo.toml @@ -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.0", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } [dev-dependencies] diff --git a/node/network/bridge/Cargo.toml b/node/network/bridge/Cargo.toml index ee39a12bc57f..983f03457c8b 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -9,7 +9,7 @@ async-trait = "0.1.51" futures = "0.3.17" tracing = "0.1.27" polkadot-primitives = { path = "../../../primitives" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.0", 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/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index d1cbeadc5a36..8c8bd3cb63bd 100644 --- a/node/network/collator-protocol/Cargo.toml +++ b/node/network/collator-protocol/Cargo.toml @@ -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.0", 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..accc229e86c3 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" futures = "0.3.17" tracing = "0.1.27" derive_more = "0.99.14" -parity-scale-codec = { version = "2.0.0", features = ["std"] } +parity-scale-codec = { version = "2.3.0", 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/protocol/Cargo.toml b/node/network/protocol/Cargo.toml index f3c82abd7f11..4b94db56e7c4 100644 --- a/node/network/protocol/Cargo.toml +++ b/node/network/protocol/Cargo.toml @@ -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.0", 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/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index 82cec326a5c5..b0e935c2cb8b 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -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.0", default-features = false, features = ["derive"] } derive_more = "0.99.11" thiserror = "1.0.26" diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index d8b15b808005..c425c97613ad 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -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.0", 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" } diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml index 5bcf8b4658a4..fb844d3ce8a7 100644 --- a/node/subsystem-util/Cargo.toml +++ b/node/subsystem-util/Cargo.toml @@ -9,7 +9,7 @@ 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.0", default-features = false, features = ["derive"] } pin-project = "1.0.8" rand = "0.8.3" thiserror = "1.0.26" diff --git a/node/test/client/Cargo.toml b/node/test/client/Cargo.toml index bae3ef3fb70e..8e0599e88a4d 100644 --- a/node/test/client/Cargo.toml +++ b/node/test/client/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.0", default-features = false, features = ["derive"] } # Polkadot dependencies polkadot-test-runtime = { path = "../../../runtime/test-runtime" } diff --git a/parachain/test-parachains/Cargo.toml b/parachain/test-parachains/Cargo.toml index 13b9febd2f1c..27f11923cd98 100644 --- a/parachain/test-parachains/Cargo.toml +++ b/parachain/test-parachains/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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..49c35c5cc85f 100644 --- a/parachain/test-parachains/adder/Cargo.toml +++ b/parachain/test-parachains/adder/Cargo.toml @@ -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.0", 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..20bc3a1c4bbb 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -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.0", default-features = false, features = ["derive"] } futures = "0.3.17" futures-timer = "3.0.2" log = "0.4.13" diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 4b2065d4cb6b..1c36fd0a807d 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 8388f2cc2016..5d4f30911d28 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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"] } diff --git a/runtime/common/slot_range_helper/Cargo.toml b/runtime/common/slot_range_helper/Cargo.toml index 54d1fe693d0b..7e3ec8a8b48e 100644 --- a/runtime/common/slot_range_helper/Cargo.toml +++ b/runtime/common/slot_range_helper/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 4c2fa8743903..6b177e1f3c82 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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 } diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 3b75b95619fe..359ad454dd48 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -6,7 +6,7 @@ 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.0", 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/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 0a4532100951..18121fdb415a 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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 } diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index d3fef706b679..527e66890819 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -6,7 +6,7 @@ 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.0", 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 } diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index 7a506849efc3..e918b0e1d475 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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/westend/Cargo.toml b/runtime/westend/Cargo.toml index ab1375138dd4..12edec1b017c 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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 } diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml index 4c94017dea6d..a31f84efac8d 100644 --- a/statement-table/Cargo.toml +++ b/statement-table/Cargo.toml @@ -5,6 +5,6 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.0", default-features = false, features = ["derive"] } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } primitives = { package = "polkadot-primitives", path = "../primitives" } diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index 21becd6cb140..8d60407ea8cc 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -7,7 +7,7 @@ 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.0", 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 } diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index b482c5799a4f..fea1c7cbf71e 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -6,7 +6,7 @@ description = "Tools & types for building with XCM and its executor." version = "0.9.9" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.0", 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-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml index d0b6d71d8fe7..b3e6b6eb9045 100644 --- a/xcm/xcm-executor/Cargo.toml +++ b/xcm/xcm-executor/Cargo.toml @@ -7,7 +7,7 @@ version = "0.9.9" [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.0", 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 } From ec29b1ac9a53cc7d20889e35fabb3202ac00efd5 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Wed, 22 Sep 2021 23:21:06 -0700 Subject: [PATCH 063/138] Ensure all parachain configuration extrinsics are operational (#3912) --- runtime/parachains/src/configuration.rs | 205 +++++++++++++++++++----- 1 file changed, 164 insertions(+), 41 deletions(-) diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index f2c94ef91532..69ff43615678 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -333,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, @@ -346,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, @@ -359,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, @@ -372,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); @@ -383,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); @@ -394,7 +409,10 @@ 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); @@ -405,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| { @@ -415,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| { @@ -425,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, @@ -441,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, @@ -457,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, @@ -473,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| { @@ -483,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, @@ -496,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| { @@ -506,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| { @@ -516,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, @@ -530,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| { @@ -540,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, @@ -554,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)?; @@ -567,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| { @@ -577,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| { @@ -587,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| { @@ -597,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| { @@ -607,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| { @@ -617,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| { @@ -627,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| { @@ -637,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| { @@ -647,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| { @@ -657,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, @@ -670,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 { @@ -678,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| { @@ -689,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| { @@ -699,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| { @@ -709,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| { @@ -719,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, @@ -732,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, @@ -745,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| { @@ -755,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, @@ -768,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, @@ -781,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, @@ -794,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| { From 257bd5c53677869e37742451e05c8fd1907f1e2a Mon Sep 17 00:00:00 2001 From: Pierre Besson Date: Thu, 23 Sep 2021 13:25:08 +0200 Subject: [PATCH 064/138] Add new rococo chainspec (#3905) --- node/service/res/rococo.json | 272 +++++++++++++++++------------------ 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/node/service/res/rococo.json b/node/service/res/rococo.json index b5c28f5289a2..31017161f205 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_11", "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", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", - "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", + "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", + "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", - "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "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", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00581cdc045e16c60814551058a98a3a7c037a036ab2e620e6db16f9338285d687896955fea4742a4267dc65a46c795cbd660ed6e779cbef538826fc839e1d23d37573ca31989fe75761bad91569b93cd7ff3cded45d4bf62e217b6f2953923271146813aa14fde68f67ef3b7cb159b387bfc761a4993e08523187fa16bf804a2a57388921775fcb4bdeef48d3f3fd26edf7f82569b6649754ccc1cb6ac319633449cb2007aa4115a8da9ee1723df983279ced53b19dac196cf2fb26ebf73d0dd2088cf49ce532f8df831d5612597a9034c34f42ea422aca402baafbefed83630d3f925221dbf0234df0fbc126656cb0305816df66cf54fc263b8bdfd31e7ee4e99ba419b4a19426e34b39bd82caf13fd2fc5ec68652feb093538ee26426ff746e6c65fcd3d31e649d0cdef0ec9aa0e3851f49a5905f4a9124ae5cb972a51c1fbc5da977b73339a957b295d897e337bdb5adc9f4357f2435233b59b389ecef71f054331565a01495e47bf0ed00825e00d6d0451aea8320f83d0db658434fa69487f93d9da1fef77ddfd355b4e17bf041f044e20cd6f044523332d8e189a449c8a08727922e2183373c91e237e97924a750db1550bc1ca5330f4f6a161ff44423a3f8542c328ae20cd48c2c3e48af7b3126b30259fcce2792b691c112193ee8611569a03180c1b2889ff43f7142733058fe61c9fe60890c7177a9c3902cbd483ef909b3bf296732fde9c113a539e19748b3e6b0447a7f7af2d3657fd353f1868a466edcd34e3ab1c9fda089741243ae34a7f42169762e3d58c390f4de4483f7e1d750249dd42b0308ca8d29e5510a49b3e6d2f7784f8324cd25923e89a4ffd5a75d9f56548769b370ee9a816a90d8df11c0028cf53fda3266168fdeb1d9ff8b180ab2ab9638d9ff0b21a0e31abd55ff71583cea11ee2a7d4fdd55c2efadfa1f3bf28515236011051b58f181ae76058b4ac21f7e9c956a7c1c168fc731655abb82c6eb5887c1129d6c5adb2c4f8055a2933f4b5ab9dfe48f6719acc4bebc1848a7bc42e6069bfb2d500deaae3f00bba70fc6989e70ebc32a27f10f9b557ba7a9b75a1895ac72fd7ac7fcbefbbe6fdf54b2cadd7b0f76a447d2a1f1fb7e2aca70bfa73fd28755eeef5cb4ecafa201a2d45cb1c53eacf2c549eccf60316d56f56a27514b821599d692d0848f4c6b6b1c21ebf87d90fa182b2edfa7666dc25597e8d67dfa559ca1e62a13c1a8e3aef7b76fed7fb3b059b3b524ab8a3438c6f977578579eb3e362bccfc7c1f04694822eb9466ddb7a459b37d273f326cd6fd2acae0e1af59f7bf7cbfc67ac7bef7e62b9348d8f4ef1eecc80a03c25861f93e156920bd19942d89acd9c9305bb2f347aa9a759f8a3278786cd67d73cc97da7295e5fb15d63bdddfaf53da35c260b021cafbb677fcbbee5b94a1c342c62f3b39d3acfb600dffbe9334e3b48b9677d5acfb3d2d4e319a3af9d67cbf480fbd436b6b18e5fb3fbd63ff3e10d5859aefd32f9b3a7ee6fbd45db53469cdf6261d235f9a46bea549d5c81597e94dd0add70a589fd22134d3efe91d1bc0a8358b664a6390bf376d26bd19666a02c9f4767f4d25abecfdfdfab45dfd268f4ce95b52d5acfa201dc048bf48811a29f041a6a27f4fd376d113068321519a33d93e6d172d4d9c6c8980c4099658e2881c194528ed7fbd73b37d5bc40bb2c5a6129d4cc2ab66d5ffb000c69a6936c7eca2657d8ffc9a55bf236db3ea5fd286b1fea8ea1d9aebaf7ac77efd99deb1d88633c66816cdf59d1c9b55bf4955b7ead730ae323da77c91bb4cbf80219171aa075483aabb94292198728414232936294b4c812e60eca7fd768cdcff8523105001637dda41e85310a40018e9494408be77fafb59bdd3dd441c91dbcbee6e26607db29fe2f41190668a638eb91faceff5cd3037e8f59378256d1673390acba9f399a37422e821a543ea9b66cdfe358bfece58b33f7d2ad2e0f86b968795f42c46e9425c8e129ae8902715969dc490ebf7b768000b83e5fa55b46184e5fa61efd0dc304ac74c6f82bcb611409a69ef98fdf46d7f7d933e6d166d96fd9db19f7e7f128a69b32c76dcd3415d0f0052008cf6cd55beafd33be627a477cc91d53ba64ebe7f1f48efd87cbf10b2e5fb33edeaf23eed1dcf264fbef7c7dee9bfafea1dfffbf7c3dea97f9fe25c9c849e40df3ba665f58ef938bdd3d94fa11864ffb05d5df2c89dcd99ec4f759480f4298ea993fd414a6db3287d6b80fbf47b1aa464e9412a82d80ccae053d2fc4cbf922dd28ab2cdfaf1ecfdaa77baf79f013b12099ba4f79ef4fac8b17748dffb87a4d924d3074964cd206d56f855a4a166dbac109be17b4f22690ec91fcfdf83b569751389a4b9fb48daaccf5d55bea4dd327f327d4a73cc30d3f707fdab5fb50f92a5a7241565287dff85600d29d93d48c58acda05c9f922ed28a7af363790f5a915254d82c9c66f9939e36ebfb6f16097fd8a46fbfa77bbc92ddd3b159fd5594a1c33237dcaf5f71ffb524152bfe9ad53fae2849f37feeb230180c062bfd597488d737717432bd092ad53b03a98f11a42f8cf41c6228d37388d88f4c4fd81819a43c233d6156649a69eeafa20be309db229b36f77ff5bf8fba8b76cb1c737d73cce697e9f7dbdef19e3eed1dfbf4bfdea1995a2c64bcef91f73bb464cd55bc7f3d9266b08a36747fb1d97df760db1b4eb9fb9eb664cd1e49738b32d8076b78c9eea9489b65aa40908a179b40e4fb1e697ed9fb8e34bba7cdf2bec73b92668f346d47d24cc58b7f3c5b6c9bd5acfa14a7bbda38f06535d2a71d487bc7dffc327d5ac99ac11a569266db3bfdf44127696eb2e66c7ba73e7db04327eb83d54519ea831db630fac7989c18ed8b32341632d6076fd8627d2a5a6ca9288363daacfe9ea6620d343b497350d76a05a44046f04471cc77d96ef9d307a98fb18a32d066991f0d35d366f9f7b46becf707c7dea1d91face1d83bb459f4fd55bd536b36bf6c8ed99f8a32d4efe99e6e52e6862ff77fb9b1cc0dfdf6fb2dfea9b962da2cd366fa54b4a17e63b3bf7e4f77ad5680140063bfb9cafefeabdea1ef3fd33bf5fd6dbb6ae93ff60efd828b26b23fed1d9a4d55f6a7388e937ca63741b5d200d220232ad32f4a60cb1405522abe60c4997e410503d9cbf40b2a5372cdf405a43a3f467a41da63a4577c4275011a69944c4d9898300d2116c174849813d9109520eac004331561a222ae21aa212641341291200641c499306092621212812096218e219221d640b481f885698a48035106620cc416885c20e9410cc167845008df1144108441107310e24225442642344025804900d9083510ba4094891ae86450c281d884f881921ae05178a5f3a29484900aa014c211845508ab0849506243a4e2c520ec226401f884b005e10bc02890a608b7e86050528208ebba2049515a43dc8224045210484020e9806423e14868906ea41e9078403201290b710662112014ba189472a21360ce44843825a4855c8427290a7109d2ac64f318b8170e03efc24f7f81bbc0b9f02dc424442fea15d58a4a82274e9a3059a284010400a22706184c46884410a7201e894f10d110cf107f209a218621e22089299e405481e8848f8baf07e295ef07612c2cc29b4288825007df0e3e22542084539478204641848248055108e012c026804e00db0099d042e119a017600a3c31c01080528051946a508ac101eae9e5a02482ea034f07750724267c5d7c39f8581086402c1259408282e4c45784ef0851e80bc267820ff79df199d1b06f88700ae2d077fb78f091113ef189f1f9e01342380ba1e8a4f86a103af1a140f4c017835a858a82520f3e17d4277c2d0891f8b40833f079111e1162e0432334e23bc1878478fb70f0d944297c18f88cf8aa7cb1af884fe893f211e1e5be2c422a3e30c49a678657863786074683c0bb228a9802510bafca7783100761181d1b5d123a24784ef09a5091f08af0a878647427090c920d3a30c227844e089b1032218c42481442213cfaa880647427e8c400cde87410b6413242b705a9894ea233403a827744758117fb640096f10181c404e9899a816f0a280393f092e0ade1a95137f0a5e05341a884308a3017aa202cfa68009e41320aa5f8685f18df184da563350a550a9f0e44291d0bea0fba88fec0b7452882ef8bd04a554217c66783af0c7103df0abe197c30f88abe34be217c2ff84e310b91f6d5445b95a24ee121c13b42f702cfc82b42a7812e892e031d12dd111d063a23ba2a5dac2ba2a3d20975533a291d11dd1075061dec5eb955b854b853b852b851b850b847f709d709b709b78dcb84bb84ab849bbb6cdc24dc35ae1a1709f708d708d7e816e112e10ee1a67185708370817071bdc445e39e717f70cde829b78c4bc6f5c1bddd1e5c1edc1ddc31ae0eae183707d77671505770c3b837a831b86054185c1bdc1adc2f6eedd2e0cee0cae0c6e07a716170bbb8e77dc17541bdc1e5e2b6e0b2e0aee0aae06a714f704d7069178b5b826b4535e292e08ee0567189ae954bc515413dba535c295a891b4545a365178afbc475e232713f70876e07da037789bb81abc4d5c04de222718fb818b846dc2ab7884bc5597085ee943bc485d92bb60a960a5506760a3505560a360a160af6c83ec13ac1b66199609760956073960dbb8655a372a07ea03e417a010805f804e8c40785ca039215e0146112ec123e051aea16de8266a2b6d14395096d442885ee406fa035d018e82ad58c5a461d42ed410f518b50a1508d50d3a84ea84da8b870057509950a750af508d5a8aa519150855089508350cfa8647413f5567150c3106f2082516950bda85d8828a82f680e542ec4155415d416d4a20ad410d4596da242519da8515410540d5425ea12d50315033c109980e802d1043748608732074b05b0665a494320b5fb40314201224d8cf8f4408408585d87253e44889468f5514201233f4b7ed881c8cf119f2748745882840811985218148a1224467e7c7420e2e3b3438e121894c90e4b901009e289cf0f4e882069927f96f8f81084111cbe6403ea7364099325448c1c59c2a4003f4b7e6072e448a629cd804281e2a384a674a64a2bf081002da522fae30365071f9fd2a5a4021d981cf1d1c1a674020a25089f245082f0b9210164290b244d721050900420884c9668414a58e0944a4081f059c25222011d01ede10893263e32252bf4c90f3c20d961099323449034c93e143052b694a8a03b3061f2a4099126487a80f2c4674905981009c227498e5208a80e3e4b78400265c90f3f468e308982e407273e447e9e3069e2f34448690aaa0312223f3e509efc7004a6240585e283e407c913263dfcfc6084080f449034c9469ae8b0c4c8131a6a4a51d020284064064589cf92263e3ce981880e4b7e6042812548a0f859c2e40811273ee8f00465b2434c89090ae567894f141f10501e9620d161894f13223e3f467440a2c3122347789486a88f0e4c8ed0943c409f30d9018a0f941ba50e50283f3f34f9f981098e1207a8911f233a1059c204890e3e3f50904079e2d324476903148acf1326478804f1834409120a185182c44814235f52824269f20393273c10a92969804279c2e4070a931a8c3c3182c3aa6404ad009226f9894f92274c186000b25404f5f1f9c1e78703e4a0830f0f3c18c96147690a8592e4884f0f474a4350283f4b7c9ef8f4b004c997604b90ec2043aa023d8204ca12244f7e80f021128492264d8c1079e2a38312243f94498e305152ce90a8407d2062e4c7880e467e7c0880224dc10248941841f2836409921692136892234c94508088cfcf0f477c80f06121b5419f300140b8423884f7c519b94c83407ac260b906394c67ab60ab509b54cf0a11d243480f2194525abbbb7ae75e7b5dabe75d698cadd555536bbdedd55addbbb76b7b75cfebcffae759ebf9bd37c6ab2cb8df7bdd5de5b5f78e7b5ef5ea5e3dafee5e0dd2b500a95ead77bbe7793fbc98f6bc5a6bf5516bf56e4fd56d49f7dc7b78dd676d0c8dcef5bc4e55bbef45792854edf6505f6d7794b7c7828d41a1509ee77d5e5128140ae52814cabda6430fb582877247b5a3501d0a85eadcc3142a44d5ea1eed6cd7ee39edbaab9dd759f7bc7ad6eb3c77dbedb953afb5ddddba3b8de779deeeb5b777e7b957636b6abcb6a7524ee35d77eed63daf7ad6ba7b6edd6bf75a3db7aa6a3ba75359af767b8ab6c7c3ddbbead53f776faff1947bbec3db3def5a6f6ad5d16279eeee2d5fb772cf53792a95f27befbdddeede9d7b9e7775efaebdbb732f87aa73efcedb6bf13c1c5ebdddbd54a93dcffda67ade1ecabb61dde2749ee735d8378e3d4b3d774fa552a96ae7ee75eeb9a7f23cafbdee545eb7ab542aef73cff33ccf3d6ff7dcf3bc76f7bc76cf73afdd73af3dafdbf3dcbdf6dceb5a696654ddedb9e75ebb6bf5eeda6e49eb795d7b75afbbbddbdbbbbbdbf3aedeedeeeeee79aaeab5d6b7a1b5d25a6768adf1bcaa52d55a2df56866be96a91dad1e43abd79edb7677af5e2bb51ef556799e974aa55229f10922143c95a304b38a4925396284024a943079a203c688cf9318971a171812941f284880f049f9c084e503c90e3e4f9ae0161917283e3c2c31d2c311bcc4a7491323333f478c405962e4c90f911f243e50e007283e5088f8c0448725469ee0d50f1422499e30a9c08fcf121c100aebb25e7458628488cf13234d7c60a2c4c811264a80843a205162240a11282eb4870f487e96fcf004b7ecf0f3034d0b103e3d10f95982e449132247a020f141e5434dfb3cd981c813263f468e3051a2c4c80c901d1a209854e0a726899123477c92ec04f1f124213e7af0b004490f508cf4f0a99f27467ea0e4f071c3b284072450c88ff68012844f1222479028a1c00f4d584fa0a0a80f1d7ca040f179d2c4072647883cf189c2e488cf931e497682f86872c4078a2bece1c88f110a10e9010a92254876608d3b2079e213e5a6851e4182f8d0e1c6c9e7c7c8139f253e3c1031024587233e4498fc3409e2c9911b538e207c9210f901c267090f91871ca527467c941c21e2c38391274c7ea010d14109921e8e10f951f283911d7c7468854a7ca2f828210284111f6c401e982821c2c312243cf0c044094cc9070a11207c74588284c81224467a38b2c30e4c88fc00e1f35196f83889f620b2840912284f7ca210f961c2e409111d7c9ef8e8f08409919d203e88f8f0496244090588f82079f243e407081f1d5196f8788a76104f98f8e0e3431765898ff738e19ade202f2828e8020501d922142828c86910588402057945a8170404140404041414442a42818082be22140808082828a82b4281685010901709a2415d91a01a54bb08050aea224035881609aa404040b50805aa45826a502d4269901701020af222414040405e04a8d2202f428180ba485005aa45806a50755b04a80205050505dd223428a88bd0a0da45826a5050901769c1355029a5d507284668b61b18865c0d064a95366fdae070300c4798e64d1bd90d8e0196a3e68c21c6f2268d91b79c66a6ca260ca751f687a1e62e969af787e174d7c7f291b23f596c722c240ed3fc61c0b9cbe6fb7290391b72f6367c3eec6ff08b94fd6993c3619ab7fce62e9aef06db308ca4b55ef6379f03bfc81c693b1f6673d70baef919bec1b29727cf1a12f6349cd341daf08c843d0de7481b9efd0ce3f0e7c8d35b8e6d1846beec71bc6993a391a4eccfb73d8cc427992367e4e35e46621b86611979cebcf9b9ef6724c69118061c6fe21c0c7806036d86b4c150c4c2240c434f2b65f3851c0c43472f391c9cd40decc636734376c30683cc5d38c01bb3bf91e1c8be1bb81b1c0e7ee1d86e6037b61bb21b361862ee92b97133c3c1e1dce47066376637329c1bb81b1c0cb0179c1bda0dda0d1c1a4eee05e7bc3971c06ec06e9c38e7cd8903760376e3c4b9a1ddc0a1e1e46edccc707037399c1b9bed862c85639381c9c86e6ee0be594a96c2c1e1cc626e6ee46e66df0d5a0a2797657068b01bda0bb6c740a9927c1307ec859bb7fce5cd1be70bb8376fc064f00b466fe29c2fd4bce537e7cde60bb3ec6fbe50cbfe2f10b96b855f2fccdc05942ac1b7653f71ab19ccff85d35d2406c1c761e148164cf6e1a0e5c8b16c670e1c8e1cb0178adcf5c2cac5b0643968608e198e1307bf582c580e190e5a8edc0b3477c1e087b166a91c278c0dc7a2b572d85e70c870b0682d590e1b0e198e1c8c95e3c461c38163b1643972cc7080ac33078ee5cd1cb098998c4d06f66fe6c82183c1418bc1c5c864683966384e1856eee54dd62c26c729830387c3967ab3057bc1c12f0cb1688f5f90e5b0ddbc10cb7df805180ed991cc7694fd796eee7addb0b92b4593fa5cf6d68cc79793e5523860d95bb41d3212c70396fac7af566bc66396e321334ac9b2b7ce6fc72cb5c3a603f78f03bf74b4683b64381e301e9cbb7e96bd652377d05e878edc0d5af6162efbef386fe8b0edd0d1c2ed3875d876e898b56c3b683a4e1d391db2d6b963b6c3a643e64d1eb397bde4585ab96ff6c9523c608f7b81b1d058661f2eb5c3f6b297a725f9e60edacd9b3a72e7ec5bb6c73c31d2dc71be601ed90d3677c05830cf100ece9b3a6c3c336f398da983c60303f103a54a58f69c198f33c783b89c0c2d3b0f1b0b30d6cbac205b61f682cbce826c055aeb5f724e1b0e0d8e9f9965ff154e9c8ec7e191cb81d1e0156c72723539b21d4fc3028d07c6af156caf9cdc2b47f6626107e6417bb18003bf563873703c72def2d78173603c5890ad40cb69e11cdb2b87c6c3e62d6701b6020baf305b019633e371ae9003af906be15870b0198f33b7c24c6605590e8d878d05d80a341b4ccec903275be1c4e5c0563c722ccc623050aa64c13c356ff90ab614064a953298e7f496e7c0609e226f798e6c857968de721e3410f310b140a35d1011f1c0ba20ba657f930796fd5dc0b9cb05bfdedf859bbb5a5cbe150bc8c20964d6e2c3d623b73a72976aa5d299c9b060eb41f3010342533d0b7ee9c8583881cc7cd87239779d54b4ec2ce07a9c2720270cd461c1d683e603068466e4ae10d43959c8813d6c2f3ab81eb2181d9b0e0c973d4627d7e3c32f1d9b0eac074e27d763a673b290eb61d3c1f590e9d058c0f500d203056446ea91eb6c3a3216ce1e34f04d2034920f5837bbb67b9a60aa37819c3a3416705d0fdbeacd1e32983775503a2789855c8b8bcb9b3d702b30e6cd1e3318ccf2a64eeec6d4b19d7008919dd973331fda76662eb0ecbf72d1401ccdbb9cb298ef59fecb6597f9d42cfbdb6a3e86b6036321ffe69f74e1de257b396d9e6596bbb9f1385c369cbfe182dd3cce0e0dff4d1059101cf8e5ba815f2e180e7eedd06ef02b08c64170247eb9708f5f2ed96be715c40607f9f0cb9573c9e0d78e2d480dde810981b968af1d5c101abc231322739d3bb920337867a6038b7913884de603777fcc4ca0e9076e8553f998e52e8cf623877a13488ee48316e25a7ec05c7e9ca63781c050416061986bc140a932e6f371ba60a054b91a65aaa7e5c5e68f1228559ede0422136139884d76eee4767664414e2130da0e6ec7b6030b42cbcd5ade74c976ce20b9203397375d381797ad05e722d70e2d08ce0c22335da06577a1c85d27fc82a1b92bc45766967d086ed6e15ab0b92be67e4a96fd636cd9652db6ec8fcbfe27fc726136043764260437abb96b854f1fbad03de95fb0ec9d2cfb3d6da74fe1970b325b0b3221369c0ba7bb54f804d3f22eb9ec7f667f152cfb9f84d05a3861625e2607f3314368ab87f9572efbbfaec8e1e55742662dd064f06b480c7e0d81c1af1656f825e405b7f01292f3967f0b7e0d395f43602f21b416ce970bb0163afc1a221372b630e2c45909e7cdec0c85136d2599676b418692996ca5d373c1b600433d2dc337879ca62130b085f3be2984767a53086ac47fc2999633897815e25c34840696f048c2f9cc61a054e9e1afec70ae79cbdf6c81967126f2963f2d2da6deea3785ccb2ff6bacb9dfa45d10d12e6c99de045da05650f5ba832c408a63d69ceb7befe98feeea9efeca5dee12bb2bfd25df921ef96af98f7cbd3c50aaf4c2f7fed581dffd4b66afe9edf989fffd8b7a6b76495f1a9f444f7f6da5d4b7fceb8a1c583e852ba1bef42f9a6bc1af2954c4f275450e2efff2af29b118ca96a752cbd71539a8bee55fe70b7e559ab7fc5d30955ab6a8708579cb3f855f15e72d7f164ca59625fcd2f1963f0a37f1963f09bf8a78cb7fc4546a79f1abdabce57fc2af7a622ab5fcf06bf496bf88ebcc5bfe1e7e516ff987984a2d3b0ce22af3d6b55959d78d77467ab39ed6d63dc53d2dbb37753c9abb4fcbd29b15d73d2d4b182855de37e949c240a9d23e2dbd372bec7b5a7e6f565af6eff18ff4c88ebce4ca5bf52df9deaab94c6f805441b53d1b78a239f54f7408fdda02d60b8cf473c5667542ff0263142f3ba9b00c25283f710c85d21c93e698355792e620c6fa418cf47402c2509e293116ca7e2ad686f2c478949ef251dea752cb8ea13c312b437962e10ce589a968284f6ca686f2c4704ac72fef633f42ca33259653daa7d295574579625e0be5899d5c284fece585f2c46c56942796a36cfcea3ef6a3a33c53a478654ca7eca7e2a5c522e589b589f2c44a27ca136319294f2c06457962b8f4a7cf4279623a4ac7affbb11f1ee589dd92272692284faca544796234a5e589dd282d7ef9c77e54ca13fb9af2c4c692f2c45625e5897dd93c3156d94f9f529ec62ffb40a9d2f3baeb3cbcbab7c3a3e357ec47e97ff1e7adfab11fe52b555afc92e257ae5c714cbd551f2855c67e944d1fa8abb67633fda28b33288d82895c7d88ecd8acb04c45c74ee8951c853483327deaa466a7df4e16417bd0a7e0cc9667323d675964f014049e4cff0a6443c9de34b2c54efcca95cf92f0920f9bdf2b09ca22972f5ef2caf6eb7fefa47d2a1a808621cb1fb6d28140d9ace6252d7961ca99ef121a862cdf372d903fd2c53810b980851ec0e00322fb377d4bfa53f1014d941ecce58c2ca4180166bf5a81d120218225664f6eccb0a8c17e9ad034b215180b3d80012cca0b534e202c90ef5b2182a6517a1846d328297ed1075af244143e18620a3058d961d81418acbe9b4db23700058433a8a882942b574afaaa06ea20f7ce0bb065d9bfc9068c49bacf91cd0ed7239a75840f1df244275ba11f4489f0f529c5164fa19253da8fa5ca237a4795fd634c508ca6925c8f6896bfce107098627f18cd7a44f637e910b2ff8bfee8ada09236a1091540a1021a0e062bed57d092b4ac24cc9220035310210517e5142a3965fd58aaa453a874793f064359df923118cad71539d47fe1e02dff6acbfef65f57e470dfe2578fb7fc2f7e5d9183fd8a5fef2d7f8b75a8b7cc2f9bf43ceb9bd4469d50c41756d62063044010c334c548cb200e80c1c5134f74713301134a5ad23775727818acac47f44e8e2a03eaa0eaf609b7d6fbee7dffefbe776f077624bd58e49505fb7e5ffb3ddd5d6bdd76f3e048144025f5c9998c161995d0176b0ee990fafd9509960ee99efea543ea7553c9f85df0eff7f7fbfbe0f7a5effefdfe92fede0b92485742bdf2dffb67fa85102ecf34ebfb5ec67bcf9d653cefe909851adf77244c9bf579e4a539f4a968694ecd14e77a16501c91fbbb27a690bba7b9bf42b1453e35aee4fdeeaba5b8dabf220ddd77df4fe910da4f0dd07dbf4726e9be69a81d363bd2a4b6f6342569fe48d3ec9ef4f53d3209e9bd6f71064fbcc17b12014a4fc2e697495f4527404c216208587e421f4a9013b30252a0c2950c85da88963022830f252883d824fd473281c89ef7f68a3278e20d256c0291bd273d366ba64ffa2bce50ca94a49944cadc407192ef9dbcb2e95ff6cceeebf778677a3ed1846c3fe75ef22349d54a0184c0685bc05a6dad1489e90a30d3f30929f26a06a44f564a69c5691d40abfa5ac9befdce7e671f00e37d21dfd843ef74cfd33b3677df00a2dc7d04da65cbce6fb9a331c89d90dc3d157bda8910e4ee677aa773d7bdaac3e96a6d353840ab924685e5a647467a5619235758a60fb6cb434ab35961624cc10075884cb1596122c551484a87c8d850caf64dda836cff894eb6d8c929d337e9956cfa53520163fd2be857d1c93b1973855151b148c28cfc0090ea30d2d3883672f75e1f04396044fd386084068ae0fe9e7843c52277dfc98a925023d340cf24ca80526ba099e2244e9afde4e7cb4ee8957cbf1367a0671265e4aec33facf2cf2a7b252b1254644a3af12b57400b52910627f54aa666ada41924436dd2a42706a664ff2bded052e4eead68839f463021dfefee5bbcc17e7f634a73daacb8d29c7eff4b9a9ddb46f9327d7a1a1145064f36089192cbe60f1ab001cee60f2690628652ee89ec845eb9520553367f8270c60a8a6cfe10410106219b3f180842a6dfa20d3bcad0229b507ca045a65f6df86030fa5dedc6680205f966913d976d72fd0ee0f2c949cdf7412ad2d0d8acb9ffbec526a539263d3d00cbfdf6ad3843bf7f8f9b413237dc2c92dc19cc9a1b4769f1bfa4137ae5ca1503d8e4fa159b41978cd26234434dee9b4576f2a7734deea7e20d9da4fd5d9ca1febdf807ccb459263d399046fee9ecd8ec8f52b34d76d226374973257fc04c3fe8d656036c192ae9630d6dd824ad28fb39ba8ed28aad747fad19b9bb4dd0e9a4903b2faca4674a522ae48eec1ebcded5d28eb6add6e47d4f93f76bfd1e073d83397267f076a1175ef28a321819e95bb1c8489ffea5976463322b9029ee7c49da46a6786c568eec38a802d520eb560b0a8cf56dcd32b8309a9fad52cbfd61ffaa2de9e40c05c6fa14064260b44f47900619edefc8f48b1f54911f8755a407dc2d495f1a6ae4cba3774c56d775df64cd38bdd361ef7f3ad2f774d7794f7b9af67f0f7e242591f53f9cde7152afe40e3b27f58a139bdc3dd8a4f794343b7b6fd6ec7d4f53b262b33eed30a53c3c6cfad3a662017afca938833b584519beb001454e5bdace35f48ec9c2a10177c7a4b501f44ee7fb3a44f93e90767949c7b0b49655d9d4c932dded7fd0fba94843b728437f156ff01bc40edf507f66d53bf747555ef50e3d6352e4fba30aec489a0510f482ae23eb579186eeeb53d186da910d1ba2fd69eecb023cd9d07de7df79dfefde7f7fddaf477651ea0776a5edbd47734f7f38c9f7f7045611043d34c0c5e18354f4bc77fff28395946952c6bfc907abf7f53fd29ba1dffb8fec771bfabdffbcefe9fb4fba4b227dae237fbadc3da92391f7bbee7bd0c99f30fb77a4d9f7ddacd93f4c290f9fe1be77d80ccadd7ba4e99fe47bef417f12fe939f2e83a4ff0973e9c1d0c33024f9fb7dd0868acba4074bdf3b6976fefe7ee9beff53510041998429e5f199357fdfe20cf73fecdfe35e7749b0821e3ad92c7f8bc752fdb22802d7bf3ad9076d3f58455a512359330daa3507b0f4e0e9824f9f7ea4ef75328944ae3efa7448cd947c9aa393e95f1bee971e2c9166502e7d8725b2f4b7a74b24cd552479dfa966706c16e9bff7be8a3294b019e4912b12095e324acd668d523389f497a4d976753739f12c3383e7ef3ffc34877ecd9724e124de7f5f2269b6a2938f00dec9b2e857d101ddd32fcd50f3d79132ddefc8a0479ade7f246c0665d297c88f3469a8b0eca49edff77889ac4f22fb4dfb1d7652f3c5415eb56d80029001195276e084145c9c250d8708e99d2a84a777bc5cffebe354204f4fff7e271b3026f1cf91cd5c1fa47488a9936fd0ada194efb56f3a3681b2bf49a242c8175bb1ff94b47fc905b0d0832eae94f49d345fd9cdee95043591bd3781f27d4a5da09405939e543a907f6af6f0129a4676e257aee40e5b79d1070aca22575a0c335ff962d3df24e5fe1e773247066b6849fa547c000d4356d21c99e2747b8b0182340cf2180ad2dea9dddfc2683fc6e4441565702c64b4a25b5186fa55bcd89ebe4ce9835d152d96a1bfd2809e99fe4787dca70f5e20cdf223b24e7d1d777defcf7217e9bd59ddfb0ba1439ee674ef4f22c76e75ff915fb7ba1f7bc77cc9beea56f7fe2ba727146d641348f67fa1436af6bf64cda047d266754ff3253bd3736685fd9ea6151536abbffbfab57b19fb357796b14fcf1909323da160a3fbeb61daacae664bda66519a43df813ae876af01d240f32ad353680455a889bc6a56256ba65d1c8500bb48bf667ace4a9057cd129dd84c698e937a2593684efbf7748bf42b5933259dd42b3238b6e44773fa631030d253e8886c863924d1213477ff478794323d856079d52c54a6e71436f2ca8695ac6fcaf49c0284bcb2de955e136d16f55847f1ee6efffaddaadee9cf56f2c77f3ccf50df49bd72e5ca159bebdb5cb1cc0dfef5fdab756cd6af6780204845bfdf3d783b1287f1de5f403f3683b23f50e94ec506d86ffc0a2a5ffe5db6475af21554ba2b5470660e9b85ac327c2a2b5b3dbd2b57aae0831ed480099a142f06a4049f4a98041e902104286a64947d7a627880072b28e2066b48f1eee9adee1214de139e135e131e131e08bc0f78de7b1ef83af071e05be2dbc0a7c4a781cf3ef5d6f7dfd3243280c4111830a20aedd15f9f52dae30a296f113ae5a5c22aafd097774af75456e595427b9ceeeaf0942952ea95b27b2a5f7987a03dfaa98ce52582f6e8ffbed3c3e6aaff42418738a157f28582e6f4f75f98bb3a4c69abfec5e637e691b6cc555eb50de551bf93657a033413d44035c8dad70148714c1e38202a11bdd5a33e62a1466d548b3a561bf0d5a33ea24ffbd643f4a8d67a58b5512dea589575ad89eaad765135aa1ea3b52eaa46d5633574ad89ea4d488db1fad64340d45a8dd5a34a446f5f1f75ac1651a3551bf550add12356df9aa8de6a4c48d76849eaa26a44ebd0dd5134b4e3f4187d1c6c911bf9d08d75313f72a27b646b77c816b9910fdd5817cb79d135ba4436666f7ee444f7c8d6ee90d1bddd226be4353b746bf6c8120df9edd6ec91251af2dbbddd226be4353be445d7e812d998bd79aba9cb8dd9a2dc6e945bf4a1dc5d0c7587586ab9fd28b71375479728656fd6af51ee5b64ed50edde50b4d479f3d2b2f5a63d0a2d9148bdc5c29b7ec33b8cbaa14c9fd5a9ba37ca0d16918c3c23d2adeb584022d21109bce57ea3dc5fc2af92115864d419916eb55c8a91bea3ae96fb8b729348dded33f256d3a7242252ac547be98ac0988a3454ba0de5460de57ed250e9067644a52112112956aa754560ac14237d475da928d31a2318231558542219a54837d2670473538144a5a314a9f61d958aba5a29962a22c56ab9c158574494bbe64943182855bae54695769cdeea8e28f77fee024a95a0eac8ab754724d5edbbd1ff192ff6d55c542daa23afd6a96edfcd5bded057d4723b79462d4333f8e5ddbcd867d44234b2c8ac3e221797984b4bcd23f28e4c2d319a96a32f26f30dbd5a62deeaa32ff60d799f4baca5e67947de57d4e219b50cd1dc72af8ebc5a77f4cd10ad5432b7dc5eac367333b50cc91879432e5fd14ccc54f3883ea21ccbbd6a393ac960fac55ebca2dc9887ec3372570af7ef98b98b65c790bb50188fe3eaa5e808d55294dba596bb7f4791bbc2706534f34264e4b26a311af16bf552f472d45254a3b98b8453b7dc2f432e43a415516e975bee9511d18bd1aaa8c588c85d20967171214add723fb81a72712932bdc45e6a32ab988b4bd14beca5b68ab9ac6a2e2fb7d5908b91b7faf632e432b42272b9ed38dd05942abb45a614d6c421d10824028f74b0496f35a599f0f6221289472ca5a3f051f815d6c421236f351178c40236690e2634128b4cb11ab0160efd0c7e853791482c1dad804d6aa4c2e19158330da1c05b48e422c660c49b89c805340a8bc498081a8545e19158330d81b79028148b4c31b016b6b04971428854c8c1c5a6cef7596c0af13cc7263d3b5cea3e079bb446835fafaae3554b1d391e3277d55207362bac62b3c67860b3cab2b963680736eb502e913b623b641eb903a6e388d491f356fd811859a051831c0a886a434660ac397042810950f862a8747423128f86bc094657b480821a4535a322b1661a0a89706be4c638030d314af0161e3d139cc86228033d30438cb586c4388209a124d44a5a76a5eec55b0d5c5083260c818123884a5a7edf9b262213cd8a1935887da003a80f8ba830c6141ba8610613252d3dd0fbd2293694fbc722d15494fb74cbcdc2f2a721145138d64253ed742242158d37d3ed74742a42d5462393d1183bd550b7f1c874340e9d6aa8db78643a1a874e45a8da6864321a63272254d17833dd4e47deea21d45833d54e46a7186a682c32159d6e204b0beae82bea8e5c6aa9162354d167d47946299721d5ed23ea6e2f432e4437976e35947b55cb4d5d8a50ff127ba9b9ac622f1e45a417f8f555fad2e7bcc4177760f3c18acd5529874791e8b8a8df235b36b275fbc8168e6c1991ad9cb77270022eb8b8010c8a624537235a5b82084ca0028b2a6a43b5dbe9a83261850551a8620944372294516c08e7161f00030c2d4a93d1a9080346882153e224828c79aae532303045067c200503252d458cba515903b7041352382a69f98d47b983c46a4f200216246043ca38c4831d84c08a16209895b40453452c462c43aad8489462396221520da162a95b2ac6a2224219a58c52432c35d451ea28c57253b1c4524729969b8a2596324a0db1d454a8a3d42d15635111a18c522c472c44aa21542c55c462c432a48a8d44a6235591d1d01813876a2c472c445e51ca888528bc81b1dca9a1144b0d75943b5415e54e1979aa1733759412532f4fcb2f45949b8525f5b444992cb7979094ee855862584ae76a94dd0bc1baa9f04b883755b55c5fc72cf524ac6316ea781da81dbf83c4f2244cbdc5e379a85a4f4b21d2ab70ceb7c80b8c15b75e070e95c24252c017024a95a94fbd100b0b8b50f852c0177aa13e861c16220c85482f05ac4f4ba114d651f3560b41224109ca418ca68e9a8e9bbb5870bf0e9cbb50fd3afa75d8dc45c2271d35a05419434482b9d56462323798a2dc2c314530463246304430473964626a304331b119992319a298a118a353cc508c914c114ccc06cfc46086626231379923169621928121823992198aa9c9c4646e3045314530463144314732356ff50d6606e616e372945ba6961ba60663b48a297289c9dc52452f3047b9636a3243b9658c60886231b7dc3244b9658e52303331433078156324337aabbe4c516ed54c2c378689e57e1d3377b1a0c61c6c7ee18a07364712de81cd1588a9b7cc1d67eed781cdef6f913b86684ebf10a3d9b2e57eb305cbfde68ea19bcde6f6436f64335453cbd9183d514d910d51cdcde6f6436f6433545333b239aaf9239ba21a231ba327aa29b221aab9e16a86be888cd9d41c7dec6be4504dcc26f6b1af914335319b58cdd01791319b9a239ba39a3fb229aa290dbddc72ff908b11a906de44a295910b516e12f8472f465f918bcd51ee1aa2dc6051ee58ee9aa3dc2f9b5aee9aa1dc2f1d1f10c1011e8451c51a2a98ff58ee178d81182ae8801525a40021e58285f8da0abf841c118518430851c100cbcb891c7a9dce4063064b98912ba2b47921664c9b58888528590f942a5d8872df8815e5fef046d1dfa8b04509942a85c039c2359228f7cb8d211ca29993e996fbc9229ca2dc333846b96f8e72e3d78d18b2d682531b63b9ff848d72dfdc72b36eb973e00ce5be31ca4ddef0110bbf706e39f00b6708077edddcc02f1207e3a317597be1d45e38b117bec137b717bebdc8229c221c8c6f708e708d24ba3144621ca21b44376245371effcd0b36ba376b62378a8862457f23ba317454232aba39c2b915e1d470623737a31a3d829094db0e7ec045494bb0f426ce0d0a6d50012b025645494b95f826ce90875144042760506841f9bd796354a3a2c6138c58e34a494b1b0c94c2473a58411420188212a6206fb9bf1573d70be62e107ca2dcb5dc44249aa3dc3343b967e0af8672df14e556d10ce53622cacd825f98e8a64673343414cb7d434413036fb9bf28f70abff0d04d110dcd0c514be6aea3dc37433347b959686a33b517a3dc3731a3dcff421addc4668c686af0cc8d3cba199a39a2a9cdd4f00d114d8ce636539a2d610c2b78e08223a21a11510c14c010a3073f40c368a86888265644736c4041a886c4941b8e11dd0ccd1ccdcc408b2db428e208073435f2a8c2400944c0c086041094b464c12f16ee4dd2c8c2a8d0a620a20948bce84d6cc485210523f8e0096094b40ced8bd89c31a25eace00952c87580093f286949ba5fc2e6cc2d771351f40129ae10e1849296207eb16e40a9b2247e5e37847a1258c271848308e5f22c2899191c371afcca31835f398ebcd5319855f3563f0c7eddb879ab6b2ff89563c805bf582d38870abf5844de6a2316fcc25184c2af1c376ff58f38472cc4af1c35127eb18640fcba51c22f1c47deea3f611c44deea17f10b8791b7fa3ffcca51e4ad7e0fbf58316ff577f88563c85bfd268c234653941bc7506e1c46b98b72b362b971c47213e5c67194bb969b3594fb287751ee58ee1cb7dc2ca2dc46b9c53771d472e718ca9dc32837ab28f78d5b6e31c43b8a70dc72efa011e526e11d44398e72ef98b16ab9770cdda8e5ae6fee18cafdac9bb370eea2e5c5e65b6cae4ac7e6984dd62df3c0657a13f401dd0459af4da0018eddeadbedf5ba373dfd0fcb29548494df934a6028aabee5e97f6e3a8da814cbcb94b1aa6a71f9295456e5cb4fa13296313f85ca57c2fc6a0a159d520677acf2d21ef5a750f9d2d21ef5290d529f7e0cd9427bd4872155b447fd1599a23deabf902eb4477d17f285f6a8df42ae688ffa2a1286f6a89f223fdaa33e0be9d11ef5512489f6a83f9225daa3fe8904698ffa2632a43dea8b640ced513f2465688ffa2039437bd42f9134b4477d1259437bd4ff481bdaa3be479a688ffa1d29d21ef52f79a23dea5b72a43dea3b89a23dea37c9427bd4078aa96e03298e49bbb0e59ed15c999f29eb02e313165ee7a990e73d50aaf47bffe575a9f4af6bfa1cd44bb12f843261214a2421d34bb117189dd4dc13a339feb4143291b01028214cf583184d7ade3c2c24c57ba1b76fdf2f16baf715fb5176f805942afb6cda1ddb84854c2613d8b69a3b99fa6c5ab58d4d5c282c847a29de0ba13ec4656f5805f1ab6daf9af396d75f41a8f4523c2c84947aa5bca2c7d352e8c37fc1a43ef6c3e55f1fe9f2a5d5b7e057f85ecb93f0cbf428d2e73cd1f91e4f221b4736cc5bb32ad3217b46ceb2c31c564b6411927e9df356e75ad6b2ea9138903d3064d3aa8de6ce9aabb80afbb6c16655a6d3b896551ab5d1cea148159bdfb36b5a019bab7a76d45b39d81c711e36bfdc737358f6ef415e60cca17996c88ad77661965672af75f62f4e96fded4972bff8756daf0b7b599ae35c7676d8e6b2df7fcdb2bfc9961df52f58f6a765bf57664fcff9acc85d5e0be95f30bffaf1635ee6633f4aaf05b7fcebfbd4b3fccbffc77e94227e81f8e5825f2df8d5f2debb3cf8e2abf0eb845f217e91f08bf4f6c33fbdea3bfcbaf865c22f147ea1bef4a6bfdfbdbf4e47de1c7967a4459116463a8dec642fcbfe2079cf9733fbbb9036c792cbfe2da49d79a4dbbe942dfbabc80e46c2b2ff89bcb4984bcbfe216971232efb93482b23fdb4b2ecbf22fdac25a012827303474ee06c309a6c060413908182213ef084e770a78d2605241861086d0ce1603737bb348bf333080ad048638b2c9c286969dfb4b2ee084fd002065150c34a494b93e9cd4e46031678a185191d408305252d51282148f7b4411630326450f06056d2b2845fb11f250a0bd1e59c700426da9082152b252d3d2cc4759b5349a30d1b0bbaa095b4b4f865c242a08052a5c9ceb213b9ebf540a9d296fe4b76b52a8d23156ca510d463c895e6c702798131a7710ee9246785a779050ca573c89a3b88f1a481d6c29c4eb8ecb9d3fb70dfccbe68cbeec13c9beacb7db33fe15787cb9d1f4e664b1f9ed9bf24cbfe1e2ebb25c13e9a885f9d07b37db9efd479332f1743fa4e8f96fd579df8c140d2ecb379b46ef6fa48b3cfe62defbc999723c9beae845f9eccc391609fed72de5992891f6ec48d30cfe6cd4a5f4eb489b211673f9a478275a73713bddcf89d96d4d15a3c1af8c1569f6d24cdbad979ebc1b9eb75735708966c245a58821d85200e61c2190c7896c0928c7486b4928d440b65b05c982acd421a680b6dd93f973d04cf5249463a8ddc95c2b11fa50c0957a2b984a70b0803713218949172a513cc853650e62d27e54a602eb49170255a788220ae340b6920c95622d14a3018590b2d8cc191ce92ac65169eb652ee44b29566212d04411809577af9d59ba533250386b637c15c4b8ea7a50abf09ca4ef8e5c7cc870c9c9d6cd91f97fdf391f33183094120b81f381c1fb410f7f283f601c9fdc8058185b91f301c20b01f3440643e4e11c6e3c70f1910998f5384fde0817fc882c0c2dc0f20b01fa78f10f70348ee47ce47ce470803f203f763e64306ce6c3e70def21c2b134dc489b613ec645b9d64a653cc9d70e2793a994493381b61279a4966c29966a26c949972a7d3341365a3cc943b9de26c849d68269909773a99449ae9243389b9134e3c4d3411279e60271b29279a6827d8c926dac49ce93cc94e38f134c14ca7d92927d24c32d38936c2c46c9a65533e9d799489b27e0141f05333161b0b6c35e25034100465d9594e542e35da503319fc4ab1d858461c2dc54243e170c61325fbc7af94ec448d36d48c25c73243d964461a0af6c28263419de36c64c1b1a0ce7136b2b0ccbce5a811054bc1586828dc78a264232e3563b1b1c05034d46cb4a5642c272a87c2a164e39982b1d05866281b0a36d2587299c682cb452cb27ca2ce5c1b73e38c7601cbb10c53d954b014ad65d692cbb3169a0aa792b9c052a7caa682a5682db3965c1e7291b59caa5ccaa69ab5d0543895cc05963ab32c857399b5d854b41698ea4ce55c682db2169cea4ce55c682db2165c0ae7326bb1a9682d301759cba9caa56caa598ad6926b99a96c2a984a963a5d602d34154e9553cd52361759cbd9626b81a968299ccbac07e742eb316ac1f5e45a643d47aab3e796cad134b2494fda2dfbf714f5d05e702f329773458381f5d856e74bee65e6628391bde05e642ee78a0603eba9c1cc56b615cc05f7425b9d2fb997998b0d46d673bae460682bdccbb992bdd85e6030e76ab6cabdd85e6030e76ab6cab9e460682bdccbb992c1cc56b615cc05f742733961602bda0bee45f63273b1c1c856e74b6e057ba1b9e060662bdb0ab792bd9c2e39185a8f0ce6ec195ae57a66ab590fd18bad27f602f391cd1870672cfbc76014036e462673c6e4606c31b31ed88c8c4d060613439b91c99c3139185bcc2c86a3199a0c4e46061373cec8d864603031b4187233a74c4e6616038bb1cdd8666032b418590c6ec6360393a1c5c8627033a74c4e6616038b99a1c9c8c0e46270d8666430e72a2607ce6268323898d9ca06c26264a9130626b7a2c9e062645232b39918db2a0696c199f3b4e1186a333331d86468aca7250b8ee186cb1f8ea1284616832cfb9b311465ff1886dc2573d7f7d5c068682f33b81c35369b590c3477e1b2d7c868ce1b1bda4c8ec4af1a180d6d0667b39911b98bb4395f6a7235b38f06466323bf06bf6a703534276d2617c3cc5d24cd0d1a998d0d46d2e06a683434399a990daee6b491d1e4686636b89ad3464623b3b1d9c0686a68674dae664603a3b179730677c366865363bb81d1684e9a376772376c683835b81bd94dcd8ca4b13d0dec86cd8953937b5ad6bc6903cb374f4bfc660d2dc79b3438994db477e88902364cb673b8b80127b0b993bc1e14a0317e4e3241cd4d60734722892933e0000dca38c1124ac05f68a088ffae77bddbddae6f0e1607db490607ae7f42e01736d880b78e101d203d3a26d882e49d84ea6332f5e208217c55d84e8fe1beb08192f5b298793d5910795e4706e0886ed417541cf504a08788d29c01a34b27c6184d997611461b1616da606075603098949e2c609ee75858d12d8a826e51c7628b6e51cf009dc2133e90042a4be0808922905834814303726896edf094eea01478a00828aea09d400b2294fdb94f2c861adb563db4a3974c6130abc2e6538cb125b0c8410e5450461b603861a302120994a04940c21544452c100208c4a829e20a120962475e28a10a613871051551d0983152c18b245ed0060d72a08411501c41682686048e4ccf122c810a50c462347592f8410952d0a850820a424042e68b22ce98f902b60111e8b8ebfcc026d34182d73a42748008c9e93801bc10a2756e3dcff35c3d579cdea2d95a77e974d7dd5d821fe46eeffbffc3b4593a3a3d2598795e4706a05915891c37e08107ce08630c32c288c9ed051751e01a7a5830ba4eef00f96facc107376fd12e706046be99d67c80836cd2f3abdd0e7eb03949bfbf1976f7decefdbfd15b78459a63ee3fc00d35a498c2461455a240a3b4fd60a5224cee692086c802045ec4e00461240126f78fe2e7dafd05855d11822f8cd08413252857d91c2b12b835ba22745fa6a70950e05d80f4572b53955b18c3665151060fb2b57e0064d1db0f7295c00bdcbb2d0e42b0de39b0d090801538f7be96c5a36a319ad4e6404c21b99e32f5a20829d9cbd48b2d5c904d16ce0a5bd77d2529cdf198004ff6641243f096487786efa6586ebd8da239f6d2976cdfea646b5fc73e106badb55627db7b479a63ef8bbdf75e6cdefbb909d775d76277ebddd54a736e479f75ff7ebe7f1fe7fe773fbc63be7defe7db3de8617bd8557cbdd6441a58b24787b0e4db755d87cdaec3de7d1db0e55a23c1994f0ecbd58acda2016aad569cecd11c7fb056183a647ad99f7a262b536cd61ae4d5ccaf78d0b2b9cafeb466062c9b5f76121065ff1993c5233be85ebfd6e0865dfb7b4573fc2b36bb7f4587d8f787a143eafbd72fe890fa05cda94fdfc5c64ebe5cfb3d3ae4f6a08a3472ad65fbe0a9bbad5bb2d6684e677a32d11c7f91e6f88734c7ffd6128cf424c150be5f8d7ac7ac6864ff8aab69f4ce4bf61f6bd95fd53b9d7d04b76cae705eb219b2644a73d0a04358b23f98bba4596b909990b3061b55b4a1d66648a3a6b3420f277c128ca0c6126ea8341882016a2db424cdd5ca48bf5aa143a0d429b95aa139f48740a95fd01cfa950a2af2c5353a040abd41a634c7bec5a67d4a836c71ad55da48334ba65f6bd5059ae9d71a60931363ad6573cc564697eaeaa98207b4457baab05116cdfeaaea424f15635016ea4e4f15675016cd664df68f314131d614649a4d16182540ea33fa9bdf59c599ad6d4bdfbea53876870669a6568c11c79538be88e2388eff926223e2584c293efdbfa3885f4062cb83e303913ef5f4675858bc2b7e6a3ebda80adf947a20d28ac5f39145e65f4024bf0f3e7d158c8ce7551996967f01a9de1f88f42618164f4c3dd0f832f88af61e88f41e63ef9b9e4aa97cc1af1813bee27ba0fb1e0c8b4ce981c437c5b8e01750cb9b42d57da0b1e55bf0152853487aa0f1552caaee81467c45c5332c28ac1af115276cc2a38871fa81c007f11525fc02227dd8e22b3aa08bafc0570085b69abc2380d6617849b18929ddfe8b4a57fa3bb19162e3e5a074fca2622afd632ef6da7f49b1711c8b29fde9ffb5588acdfd584c19e3dd570a4da38ae5e9cf78d7bbaf149a58c6a7bfba24cfbbaf148e0fd4a2ba1e48f2ee2b99c2a73fd25c8f243e90eac119efbef0815abe64854606e681ecfbaf56588a4de73230588a8d7f0fd442a3202b6762ae47024f0fa47af15f544aa50c966273e5ca95320666855fb198f205bf80ae47faef5f40e097fe05247ef82fa0d39b461697076a79d5bf80babf1e09144fa89607527dea5f40df5f8f048aa7d403a91ef52fa0d2df7f0101999ef42fa0f1c17f01b1bcf82f2097473d90ea4fff0242bdff0b28f5ddbf80ec971ea8e53f1712a783f4b790b683d45791df41fa53e4d741eab390331da41f45861da4fe48ae3a48ff891c3b487d13a9ea20fd22a9ea20f54372ec20fd20b9ea20f54b64d841fa49e44c07a941fa3df23b48fd8eb41da4ff92381d24487d276907e90792a92423f48ef7147c4a7fa6777a677cfa38bdc3830ea9d98959c7d164ba17044924cfebb63f5dee9ee59d74827a2acad0e1274e9ccc308393d33b11dfc90ddf49e99d7cefe47ef737d85cb9f282cc824d8b9dd84489c9286c7a39c88e9dd8984eea952831f9f43d3d9eb0f9e29b446cce84d85c951e2c6153f53d69ecdeebb019de6fd2890d36a3c4648bcd2831d9b1a9c4cb41ee377fbadc388a4bae1887a5da19f8eea279fa353471973ffd3ae42e9ba75f4f77d512e9e9f7e02e1c4fbfcadc25f3f46b91bb664ea6a75fc45de4d3af3177854fbfd2dc85a34a3dfd06b88be5e95798bb723cfd4ae4aef1e9eae6e903e12e97a75f67eec231d8fc72ccbf90375888c78e5fe15b488c856ef0df78149983f539bef52249e67ccbaff0208983856e908ff31f89030be5b43c8ff748192c9403c7ebf88e9cc1f99b27ff92345848e669be491bace35b8fe3614821219b9fa16715b21cf32a1e658dcdd3fc8914b2c155769442e2dbbccc9764701553f93f838560fef434b84a4b29e4bdccaf665ef5a54f914233aaa77913cd9b5e85ab7829f4f2a727914234b84a4e29847a1ad397de9242265ce58552087c9b12ae32530a955ee6677015552934f3f65948a11d2be02a30a5d0f7329f83ab7ca5d0ccf73b0f5ca59642aaa7f91db84a570a99dee65b70159652a8e54fef420ae9c055644aa199bf2d5c05a7145afde9591f92422c5ca5540ab1e4c0554ea550f8368f035711520a752ff32329244528a8bc81abe4288566de9fc4555aa590cb9f484f3efe4a0ae1e02a5d0a8d4ff3528482ca1b5c058652e8f4365888a442fdf8556a69f31857719542a497c142325fa596e47dfbfea4d00c16aa52cb99b7297d0d29947a1a2c3403f3ab7f79976ff92ab594c142424242a737bdf8e183dfe33124d0996148ea2dfa2b92e52dfa2f240edea2ef4202e12dfa2d649d798bbe8afcbc453f45ea788b3e0bd9006fd1479115e62dfa235989bc45ff448edea26f2285788bbe4816f116fd90ac316fd107c94af316fd12b9f2167d12d9e32dfa1fd983b7e87b6495798b7e47d6226fd1bfe47b8bbe256bf0167d279b788b7e9375c85bf42b594f6fd1075205552018ffaaa8b16146ae3f566a7365038c5cdfb6ab550200c116467ff0647ed4c3e187cda0fcdd403271c8e09791c1a720f8e08398d29cfa9195249136d032b20db48b5c3f34009542ae1fda40819067a068e48a9dd42bb954335822a92803e98a0308ca94f200bf922649aa24cd32509609fe6703f8b5fbcf0020ae58a67e0953cafa9e8a3790beda4cf23cffcec16a9db0389d0f0491a00a4790a008122c6185122e5f5061041b6e80cee004038a26d670c2951eb47c51051737c8a1011170c9f4b432826c7eb61d086713a6b6d6daefbbb250488f101e2bc45d2c9290db8d56883059128bc5d3ac2aa5ebbaae4bc195dce11e21cde2c1d3138030d3da163ac837532f64f084ed1aa13452f3436573cc804aa5a2623041092c8a500257823254a428a6b451850bb028e303687c91f2810882d0d11a29062511e020ccb48b299cb84580b45231521b0eeeeab985b9bf37c71819f7bb5935d837e9198066d5f772685665e5ee2e3fdc001c72f070874d1fdddd3afd45ad05b91b637fc7336f7ea28ebbc2ae2218ebd3fef218b923d56e03b8cf0b15a8c0f690705dd7759dbb2ec641cc4050094e2380b1032118b1022b5834f08405adb5f7ebfb3575532125b7f51c7a6ac8a1011110c199cdcf7aa7053de1e8d9e32ed2159e496b9e675f073c410c6e03a82d8766e1e0aeeeebdbef71578771e88640798182357068566d5b0e3d9fd7e038e4d03b35d76f40047aa79a6004549a38030a35c2e8a26c54ee1ad42077eea7abdcd363a6b520e4b2a983bb7ecd60e275dcd5e39903cd0328a618bab151460ca250f67fbd33e6fed18adc4f0516b9b1a94487454f172d75be7784989ff9657ae6fa3d01a86100aa4c4f115891c14cbb98a28a6c7e9d82959255765fe5a0f33136516bc211e0e97bb023cd247d67f84a9af57e3593dcef66b86f2b6976ef3de891b4561949a4af4dea3e89cb401f6c51060f0b19ab57451bbaafd84ce2dfdf7d12ef3a32c97dfbe089f60e2ee957d19f8a177f415ff53156f43af1acc7f9f1ed087e3c657a4e715a35408a535d08859e80ff3a3a4084f0d06f4aca8c1c145be0c430c3e87446210507c0d701dffc401004fffbf12231f3441537508209518871854905447ce0759a0562b36690440ad101d22c9d775709eb74d95465fb54829e103201194269b021051e885ff8c0e80b1524a1f3e9006135ab7e47e290df2c9d5c5f0788101e1d20dd0a339d010872d9d4c9b7fb008be52e21a68e0a482da447088f152015dd141fb046b2ee6cd21b28e12e99d68400cb36d3730a0e8401521c4a6bae55b7ead3ee4d9b69e8a1bfbffd7aa7b1bf477e24ed56ffadd53eb514c7bde2c06bf5ecb69201521c93da72fd2a1b4d21f985b88b65dfbca9f9400adf3f1d52f3b32ea973df64651e98b2dc25049b5fa61e36290e727df326771fe66e95bb27a90b04a02cd4efa6a892bbb71f3695e06456fd9ac448b3109eb05d2c6fd577acd3acfaa62ad7992c24d717c2533f00bdd3358c37999e521021fb20dbdc06a74cbdb0a28d76d16e7dcd7201298e39f2f084930c1b1036800432ca309b63a6abfefad47ebde3ef8d79e45a3d50843da2081794910311249102f08b2223c44c4f29c0c85fa65d70a183eea7b97a75991baa14a0b55ddf6ecfb33bd63defbbcebbfdd9aeebdaee5877efaeebaedf6e9dcc6a162d79fd75f7ed263589d42452933cfb9938b9f45fdb9defebbaaedfe7a5d277dd4f734a5fa98ca5ff9a557ada3b6dbbfb767ffd7dfd7dfd956cc9765de7b60bbfbfeeed76c7da76c1fd36eebec7ef4f67eb6edf7477777777ff42da3ba490f68ebb7b09b49d6d7777af5441d05a6b4153288aa1093c954612ea63f1529deab658177fe9158cbbc798c4102c91be930986e6d0bfd7bb6de7dd667ff7a2777756fc4c26daacce766dda299d42da3b5dd7752dda1deb2168aaf41482f64b3f8a32589f6916ad6358a98c1527d39fa1de675ad11cfa1dfebcbd6df6b69ddd5a6bad35c3dc5577dbb9fdb6b6adfd7ed05a6bdbda6bbbafbd7deded6b6fdfeeebf1eeb63bd6db05778f347f6cf6effa4d6b9b7af67e97644976c7bab5f65a6badeddab3d75a7badb5b7862780437a680e7d1e2138bf52855f6d176a1df2e1e000e1d12cfa2c77777777771cefaedbbbceddbfce348b7eef3df8dd953a5217865d187661d82cd2f4effff1eccf93bdb73bd6495d472a594b02c2a359ded721c6faac6679ffcdf21e0ceb8cbbbb775dcfd8079d34ed8e75d2aa599ebbbbbbbbaf9ae57de9c1aedeb6eeb66fedbeee7aa67eb3529ae366bf3fd85dd795da85ae2b755d49d52cefddddeeb877ed42d775d8f3196a1642733c92edde3ee824dbddaeb3dd75ef3adb5df7ae2b79ed91a0f79beeeeeeeeeedebde9eede757bf7a6bb7bd7a6129edcefbd776fbabb77dd2b73ccd45a8bed8ef576a17eeeb531f5f76f7f03f82731bf5cebdb5cadf7edbeba77f83ea543ec9bddd3ee763458770ad6120cb0b3d8fcb2f5af542a954a25fb4e22cdfa16f73425ebf766adb57edff7d55aeff7e119faa3577a6badb5d67adfacb5d67b6fadf7cd5a6bbdf7d67adfacb5d67b6f35eb5fbb73df1fac9edb1deb9defe7f7fbfee87b05eba5d9e9d36679e6079a3f37d7a75f555d013ff092e697af7f252dee205b0dc0c3c3b30447094ef6ef556eafe44fe39457d4b75f1da7bd6b18359780fefdfe2417a43bf5b363d3e6b63bd6dbaf5c69173adf9c845eb9922bed9d6b9fd221fee6fd4b5622c69aefdfee9f8e21d7f7ea4100298ed9c9e890184996fb4d948b7acbbc43b9df84c9f42b755d98b7ba5e60f4bea76b253f92d21c539cc126d7f74827def7347f1e59737d52fb3fd24af7774679ba283a29ba29ba107422e8a8189f8a2d5156284fcc12519e585805e589a9464079623324a03c311c2b284f8cc7bd82f29480f2c43e2c284f6ca4519ed82a0bca137b13509efe7b02ca3325a653b23c155ba650407962560bca130b534079622a15509ed84c11e589e1ac80f2c4785c16509e16509ed8b705e5898d5c509ed8ca059427f62f287d8fb83d29b624c5bb72e58a7971292cc5c3523cefa92785ea800b287c524aff8a0129e122622847fc7ac148f855440c65885f4156c0a088d44bf1a4783f854a5886a4ee5f56559642122a248dfd2166f9501465fe28d28ff8e5b8930a8fb2f44108b12096450d5070a57c151143d9e11750119a206388e8b681528ac782bb1193e0ccbf625efa67dd78f3383035dfaab26bd4bf70f06bfc1bacf3fa170e34e0cfe097c55918f5d9a80a6d32af6f2bd5e031e655263b13ffd54d835fe3cfe02645aa8c0a8fb2fb137ed99ccc692debd1c1c948630c4eb98cfd3418fc22fd0a579ab77ae6adb6d9d9d933589d852e98f4af1890d224f6776dc1afd2ab70cde1da666b5a3d69381d7001051b58c2afc64da11296260cf6c78094207e9170e71a96eba220832784a1850d86c0d5212188a0083db002d4344041164ae4600a4c94207658ce69f6c4595b4e6671b0596cccc968a78c3453923ea5aca8c4a7159926939239a50c8d08c960104001c3160030301c1a8e85a924c8b57a14000c639e8266581d09a324cf7230658c318400180000000100d2244c00142cf24abce15a9803189447569611411e5b1521c43bf29ac26cd9104517f3c3e9ede2bbc58b08146fd43af3de03e14f33bf357466b7fbb947c4cf0545ff9a81548d27138253ba43292dd522f420b9d0ffdf677e8a0d14ad57048680449dcfb89659f916930624298249b123195aa502d6e0df43268b3e8a0807f63005313d8bf95c50e65935c0f062a5e7c136094ad8108a688be005869c939a5addd0360684cc4e17546158767bf69ae3eb74267c303d5ad19777e6bbd36134b2c8997f48eac8710a42f38e939cbf82405d0178e3bc81dc283d629f8448068d814f67b7449c9575a1c8dfcc910f409d50bb9b7a2ed8f6dc84f4315ec0758ffab30f75a5461635a21bc760c988554799fc4c5e9d69da55d69d4f55569efc6b627e6cf0b19e3c190aafacf955ea0e990247c3e2c74f4ea24c5dd0efba999c07f6478cc3b6ae5e3e55d81f24c6717d06e8fbc14b9b17c7bd87a9135ea0e7b00f6b56e999b0f04c60922bc46ae085bf94413681092f0e233a2dbc0a71d4314f4ddaca94228847fda589ae6b14bd52b1be1c30a98b1c678c4da667dfc2b0c40904b2d21b4d926ef6c79152ad14f702cdd8e0cfc6d9da0e6eb35b89a3f1f2a5d560404f950cb4c2fd7abb82586c920cc782457d2abbcb6f2204a4699c63913753ea30b33b85136b666bfcf18add130a341899cdd9a5a1990cb28f7ed124f2376ac1a7e24740ae39dc5059510465cc90a11bfaafd6e35b153d6a9fba33a2f088e881a838faf9adc50e4f77c91cb533f44658536cc427e237f20fba9bffb2d0a84272620224dbec11ed9dd5a6b3fbde076ba2e8df46280d41bc08a3cdd7c2405129cf1c8e83cbd716904ef7aaf9cc811cdf85a31499d173a9ded47f716e629a42aa24c76b245f4883917ef28e00e4fcf35d6a17df7771e4fb5ba28b6b704b6ef38d0226b3b133602f011cc3c3d439ec71a5459a6274bfb42ba0ab6d484606023d120d2283d2408966e0de23f1a2c0c736d63842a6a190b4a2f48a1895ea4deaad0c22093345d53d18cbf41860c241ee8f489e0b162975039813f927e99d5f97e401f3818c278c97166ef70d6a7618a3dd0a9703ec22cf1bd2cf4878214b899037d63710abff93ebea8be41331488687b5276a809e50ae601dc0ab87597450c116022a2926ceedd6c940e1fc1fac9f31429c62db5e0cd8768c569a5e92c7b070c8bc85f333c588ab6763bd520caa792b0b1155ffdd15af0bf67325d700b4864f312493c64adb7dfca0cf0ce7c298f9416cd673029985ca60cc96ac97fc6c9af83c31c1053e85039c44b0582c75e7090c105914cc5bf860d2be25b9359cf27851b682265bee953f16a530bdd8f50e7bf5a6345ebde290d95473dd8aefe1bf318e973c81b98f8e5af737e32699150723b0cadb7e00d5683434f3237e10c87c18e171c9a856ae1493f657ab8cf092c7cbcb3491f17d09cb2a8c9711fc8297965c527df629523c310f6f4f9bbd78c73e83691cba99ea7a88c73b3c6526e6c79d3d183c58c622c4a0239ca0fda7de91859eab3b5be2275ccb743fab607c0a70416decb8efb4d1790053e85b66fc133396a4dc862aa3726b634ce71f6ecc385bc248122b06875486bcad06f07ecf1e0828ca9fbdf786b6fc2d6bf760946bfaabd15b951db28a3f4bf9ddfb72c439a24efff380ecd0a36fdf739ed61293b1c9ca4cd67dacde32619bc4afde04f07896ea35552f357cac5a396c46b6436e777b1c64b3441ad1252233bd541dc04ed90712cc38cb8fefb87a38ab60ced762e0d466c72eea0e679a943073e4a83aa71c38a1c0e42c435a401ccbba6dc0a441117c1f94e55deff255262a5e91765d64d467d72bf8e573001670e5bb93323d4a6f98567a59674bd9872a8fc07c7faba9755b21433f87d7521feaaa67bc3ffff3619f1cbb353e12faa6e118f129505d736a7c7452372916ebd1fdfd4af71d3fe4d76e75f58edc82ebe2eeaf6488b84e1a68e0b7c9396ee0ca1d09b9e1f041c8dca01fad5b206065b28fbae919852f57913b2b0fa58a7fe93d6612fbb819b14f80f6e7896016b24c9597166fd67c146f0b2da4b8a98293b002897fd7dc7615c9870f515add568e94bbcc24805919a9483ed73228b51a767462edd1debfe9bc2fc4b5933abbcf9094c09999b4570668f87af28d5ae6375aec76a3f26eb2deb4bd18251a39aa06afba471b848e51b84f10ba52b44601ee32185f3f69170bf997d471307e3556f9b859edef266fdda8c79ae8559edeb65e9b5e965eb6dec4cd1bb21f3201328b70c1ece6ee84066f7f13cde4fcd34279a0b5fe0352ebe6e82066f29b92cc8b62ac07cc39fc4dd77d2811ff5e3fe658ed5359dea1e75c7a710cf5a25db003eddbc555c31fd2a3a8b86805bd7400a67aa556eaea7502111dd1d4d277cf18bea66a324ebf78f4b004d07afd9e32f350de98e4cda642e4c525ca80fb161673366bd44485e6d5b3b3967ff40f84815bed0ced13ac3377f53c34df96a43bbb2ea8e4049b5c50dc8316e653680ae0286c73a4a433c83af5f8b9fd941c6c467081a29d79108e78c8b363e48eec14fddb6f907822bfc262236b8db209accabbee610fd2c9d0d9defde0fc6604f7a121b85f23196dea6c386c62f857338c6519029c8f94276e3e9cd4938475288d118151e1c4fad5b9afa66941fdd3bdeeff62bff0b90e4ef2980f25cd59cbdf102a0785d278cc08f1eb2b135c333fab45869c7796888d9a77597b5dfda5f5daeaa5ec0d62dab427d220ee2babaebe61489a5789d59d1568a5c1514bf73d9aa1b60f586aa6a8444bcfe6a41a64c8f685e07f7352e0a556d7731ad760f7d4225adb1fe013d639bd5d135fa6a499adbbdb89ed71582a930d91a12ceca5a378a265be121d6c485ab57c1f74f40d99fcfbe8aa8dda57696f17ca2a31875ec81a0562cd65d9a255260ac49a502bf1e5dbfd8993ce83f2b5c0906c0f58c616c67e6265a38a16d34722846789dc7eca833aff071b85a58f774ae8bcf231acfb9d9a814c88c6c96e2d91339b1fba4f52827a421022cdf4e9c2ab598f61bfa721e2a04280e77a43bcb3b348a228b31a9e3733881ffd743e1fd6728240595e946634b260e4479b1ed1f2224622c0c97c3d7d32c2c2599bbf712d740f95e02b6fa6ce2874259673bf98de9b296a81040e3312240ad9d27c9a3c005679602032c9d1543a0f15c995631f7288ca49e673b3cae900f1d08d0acf8ca747c479b89c9aa72237e103619c5f477c2151e8d6a76b7cdebeba9eff4ab99b697a5293fd01feff6eb4fd375e8444130c7717bcaeaaec815dee3684e5e91a46b2759db235f58f8e8aa3c7f02eabc643b887e2b7d2a3ea201e84815b51526bc5cc126db8d200020ab81e34388915a8ecf2813343bf3276148ed7d5c6b207867b0d823a84ac9631f09dc66f6bce11e1cba6b7d5979bec0c1408a8446169936e594ab5eb8f5bbf23ecba5bbc13a9067526b3dfdadf6d5c5d44746a2e82a2be62be5e09a314d9af9579e95c161002851c97b519e68280b102e92b42052e7221d2f9e2a5003113af3c7f115d0de6cf0d5f133d135999d7952f0ab1f497c6483014d48d0fadc37e5f377f3bcca2e4f1eced727c2ea13d236453a065f97d9da86f13a4453c8b3413b12c5a5e1ec21bfd8e2b2044bf4809f4f5f3e88a1a240bbee2a049b6c496682fe22dea9dc3bc6ba640f937c2d3194c6309d14e2354d57aff8d8b1dc4622faa3576e14c12f096c38717de64fa163a280b9e9cf82b148adb4ae00e9eb7abfe1afb8644dbcd7af0bde66687965b4f7062f4d944017b664e3b238225988d1f19a95c1c430cb3c50f2dbf868d78a32d1569c19845b7126d517ca8fe7d19c5965cb1c77548a5876bf64f9e321bb6274d7a0ca0b16632af8ea67c499cde33a0e903b1cf9ef52e9f442bc26359898e908a458456e7b3b02eb040b1b11e957114b6cb903526ac43282f0c81646ab1c4c6e4e059e9997672a30b59defaa286f10b3dc21bf60cf3e9dcf207e1134667bfeea08f2ec8f10f1c6552f215c973fc40a77478bef6b300e9eda699d9675c331a85c5d39830c6a0dd4f3b8dde63337c27a77a3ebd7a7c4d6fb2cf790e6858404a38747cd4a9c4496fbf38f1d63dcc984737923f1c6dfb02c2ced167f0524a662f0a21cfc408312e2049c5de5677a6c6e572c538d0679951e91a2a110f67ca87378210b0abc49334d9b23186486af3a04e5ecbacac9498503b7f6c5b605346bc747966163062bfabde5abdb1081b1bae8de7f742a150e19505668ee5c9119395e44a4872df9158b9b8e6c5834165e397dc015d9c424cb23950ddefc423abaf3ceee33634b631f694b11c279104a19633b3f54e372b0a1d91d98c310545dcfb40688778873f78bb62c9413aebca5f1e0e8bebda98dc312b09fb585779543c70dd646007838f93a6e0e9f1509eb6f493a3de9ffb16c9436c1f5aba8945513242bcb10c831006a741b45862a2e0098861d7563849cca5e5541b409f5f58d12ec8fcbd1e8c0eac8347c84d5b5422710cda87a51122aeee0aa53b9f1b1b5e99989c2525da6d7f5592f20a2b5270b62352ccaa3b06bbc47a549d8b546c09b09d0d68c11afe6f1093c338db7dee461a367a86c0d0700eb3422f6ce5d8827c07cd1e11d3be4c2b9bb373e7e48b492e52a38b67e871da9fd5cfc316447a43a5891542f382eeb89137f45dc9bf31367b215cc944f145316cd64e93ece69066994348e639dd352a67515490631b303ea86b5c5454769a456f6947ce7418a4439b0458672ea8d4c5205dc57bab2b84bde535f6166a352dfa1c5a001b6c89b03ed4c2d85ccdb4415705f55d5947f9106ff9b9f91d4cf85370ea8a1d1659bc5ddd84ddd66b74925ac7fd6dbd0fc4a4d617c737a17c21692406096c363ec2d6c4d9ee6003b899b8aaea84dcd3ab22d9e3ba0219e086a6a1514466d4e81bc9293ce7a47e0c22871b661c0cfa72ebececd618f429261e61f7888890e87fdc234b6882d7592dc69a354059609a97920f3623a79f40c640e7d73cdb02daff93cccc2f0b8a00674310a986b3ed5bcb39adf2f5305b2d579f97ff166290622ba87c45c38cc04cf4945d30282f3cda0a19dcb00520df6aa1ffa5bcccacf3b8146628c7ba91a921014d0aebdad970173ec2eceebce7ab6722685e07b97d2dd41d235e849d81b7b795ca04051a6fb67af37a891f697af87153d5c3bbd10addef0c02bc9e335992f1b89efb1adcc8d44cd42c5416b692b0e9a35de8d6f25a680e9351edba758e345bc411934e51425efd1299298af5b5be569d620f3800467f8523bf989f913273b359664e16e48f7361350646b594744d3891dec84e5eba9a14674d67fe9d58c343c35a6a48cf552e22015bdeb247bef4d7beb9ce3a75ab9fec39eb7bac563cbe3ad43255c7765e5d7f88d5847c977daf69bc1728bac6f017ca9c0a15e52b3bb40fdf0ebd0531ff8d9c4e87a24651d8222473684ae69aa798f3f7b5cb775399232f5ad3c8713eb02d168516979e15a2cc12aaab26b060a823ca539675e56bc5ff782d71f0cf44379f04ad51a84c1221ce2986e65031b4927121c7c5c187ea7e8edd203cbb58eaeb9a6a5d57cb25964fb4dfd92b44f72ef257e0201761bd60defaafacd9b52833ef6b15f5540834b5c4a9535c1e9d24476a1351d678e096d0c22624ac19e6de83715c6176f449d2ee9babf3c6a9634d159291c241687837b4156cd67bf628635437d9722571c09c91ae47df4e6df03d78982c129e68d4a9a64cf3d273820b19f67c567f1095eb62e2e16123d91b6d8fe7e9f4eed80c44423b409c4a61cf3627fbe9a467e884d8d70a713b9599c0de3c1cee4e9f5d3164ec8dca9c2c4297f9cd745088e00657429c18be844ccc1c1a1dd84548428aa9d683126235877d8f0c9a73b80463673166d6fb013a2c1c641f34321dfdb26737479fa195a968ddbf0dd64b7d20718ded21090e644a7c50d7521606b44c6ab927ac01a3aa2da3517e661a0002b8979fd0132327a12692230d3cd3dc00033dd4d4241fec9a868303b9d09300dff3df181dea39b9e87fdc053d37bd54bbed606214afe7e4ccf88c9eeed883e3113cdd16adcd3dd7ec0f52054eae3bc213c3aa947f68a9e41e4f68beb6d084cbc80013ddd0fb0b6aa13a5193bfe0b0e8fa2d8824ccaea624fb01486920cb8f5370665b3ce088621815c748ce8a22cf60303600516514f4f60432facf6b92728d2cd18fc3d583009e56e2393db4361df82d4c67b339299900b2bd36bcb6d68daef83542e31811969c949edf972319266e18051634f4813384fc58900e31484599b239eb8700fa26403f09d03701fa45607d09a85f02e94b40fd2050df04e82701fa660233acb24a7877118d2364bde3328933389cc327d7e72930b34ae59ada0a7b1238634a22bbb1529643d19301422cffa9a74dadd26dd4605808e4106f42603a58c8d077c7c1c3df4dc76917f6517926c9ea03d46e71b68ed9f1aec0e040c8f55cce10828a1e193ccea4ae5412d2173e061149891d2fa144d41a45e1387fa9f7de25a6a9d94b8906b84dbbba056612947d35741b5d0c03a6c0d540b17505410fdf3cf1e4a2661b0c243f7a26323d8c6c201003f33578879f64a5f3e182daebfe82595e61ec1a36cb6b911c9df48881ea7f587e492b257a1b11822060b9cd055461c80aedc1f36336601e45dbe1e633d119b9f80628772a37632ee04785cebaa042c783e3ac0b96a76d2d25638ba72cb28a762a2023cb738df16c537d4b0cb2d0344fa81c330ed410236c46883b6deafaf25bdd2f59ddd078305153fefd0ba904876a105081951d3ed666c52aa7c26c82af29dfcf3fc444d209d82dfa20f1130f41db7e5e3171194d3110ed31cd1d626aa0e0fe8ed8713eb92a124a4f82009c7ca18bcb6329c15d17ed7717c98a54b55d25d05a26a67736e66ead5584fe751a9c539e637343923c01af58ecf8889899625a7d05d8680b032a8d20bad13d96102d2c43e1818bec20d75e4599d8314d0764a27a10936676fa75aee5d4369ff5d9e0df463d5b478f8fbf63bf7b58003c90cd11ed106e26d0e5981d03006875f07b1a5ed960f4aba58f0a0ee4cb1a0e7f4b609b17d8971b5abb843225a65aed6e8c348d1d595cc5406518ebcc3fb8d7d1e6133b1dc6701a3c435f191bbb8a243af1a1a4fd966b7b6bf10cb4783efdb648a8a2c66a3e36cdaf92f4ca82ee2fe061ddb9a581cbb4aa95a6c958f602d2fe420b8a7ee9da7d66254866da76f1f700a2c2d8406644bfb096ad1f4c146f6b43f6692b8d6a810bd3b2dac9545a7a180170dd82fe3c35ec50f4da40c3bc0579fe47e943737453d3d578adc7110e86046d136ffd8c3f42fdca37f71d387f5575b16a2d7a9f7c483f77b2e9b10a46a34a8d73f450eada7fdaa2881fc98abc617843b0fe7bbb370aa47fb8cd1cbbe343cfad922f593667e06e6263bacb6068111f0bbf5e854965ab2bcbae3711bfa433dba507f02a4efd179784479c3828aca1cdd8063a64ef59c49198f53ffe88fa419bc99f4878ff8456cf15a030fd88bc6f4d5c613b665bdaaa852db5b195565b6959b604d3cfaa406a296cae7ab108efd7854293fb2dc2254768b5cebd219f31d0e5dcf4617c77bbac0d8a6073904fd1b51fc866c81d3e8d4aef139b9407aa98e07d931a61a8af0096b0e7d480204404be27d8d0d410838e82caa83a1a59c670e95942a52d21e0dff6430dabe51265e825457b8a9f44c871aaa0fb8d8f5c837feb380008e8f961e86370fb916d847040494a8568a080795ba6852a957520dc094d2b8713b756582a2341d299b4f28e93a3a1d384209b062a35c1c623e1aea7dfdfeb05049c6ebdaed40cdfd5c995c46fcddee43431a96f9124528db673c84520ce14c68ed75462fb70b71db2403f3013a07d4ed684d61efdf7d83908d2952a915ac3c8632b19185559008fa4049b03ea91ea937b7888e2f5cac055c1017458380fcb998cab3eed4cc50ed7a04ad13157ccb29688b34bf3472731fd77a24a6207f95b785500b43924024d19cb0cd0288e1896affee51bf2af3c10b3603341cabe260d11fa31dae9b3e608b643e33ee7fa5803d220a06798ec4429870692ec01d83aef7e28c2c2b933565df6b7c46e8a943dc4210f09262ea817f95068504860fee2e7cfd16e09a1061ef3f8b3e8959d9a302d571f77eaf2c2727d05bd321e6fb6f4417b84cdd69857eb95bd7b147f0c9b13a06f5e70b0a2b847efb658bcd0b25cbe0d3322fda94a11d236d62f28f94077191452522614e3f7162d48a5f62cedc5fac02deb273f7f757465189268f9b4739ff6df02f023da47fda1377f4b9da42e390ece5d197672fe997cc6f4aae5dcebbef9c1086f17d055b12e60abc8e7743bdcc32431c8a2dfd668d9cd7aa6272d9851d42fee6fcfa12b3f274fbfc2b211ba97ec645c5c1fb05f9cb87c11490b9f99459de10a160468a81cb0b830f3c659d3206c337985a65f25b8790fb9b0412148d3d0ba7f09f19d881d56265f75f55a1b95151d85f2ddc4648ed0e82a1afa38fa767056d932030a6c75edcc10b8cae1586a2626c71ddc67062f769d18a724913c2a52b85afea20309e1866e9111d2dc8a41ce8d7f35bb3f3f1aa5a555bd359026e1b609e27cd8bb45e59b8845c044cf71423fbf341add49323a49b3173da13dd02da340ef29886e7b33fad674617ca157d23febc7d40aa1d2e208082a5216ce7b508d00dd8c20a7d6d63b0427dc3f4102de64e56574d3cf091de76b8c7e6007099d9b588dd16f33444b624219221a32f4a9d06e20ebd91833afe211d9192efaa6d43f931298aabe684f6489046514b722468e8331699a621ea63e1c9c73f6ccd2ace6d6a1bca97975c37f51c1f922c8e462b10b7db843a507b4b6d1f31b425a0c780416a173a09bcd0a5988fc094d1dec0409cfe7e7b0634e3914d3e66652a197324217a1ece49aab8e9ba4dab94e896aef16ff5e716ba382a1e2a93410e9fecf035219f6a88ab364ee56220c93e6b0580bd6bd9d2063bc4d22410c4564f0fc1184139b1012beb26c987d3ced10a4f02cec4e7045000a9783e23a815fe70edda481fd25dc29dce906669cbb153895a0bf44cf10caea6b688a4007e2b6f541c563db7cad4a72c50c0fa23eeb9c9d8a8fca75f9e930285d11aaa5e7e047ffa3ca894b95a40f068b8327c07fb75f5612330757eaf038126e3132e60b2bf4a16d6a88e0ef02c7209bd089fc18b83c14ad116f67e4a4789a42e92d88511fed2da2df7dd7753d18724ee8d24d0a39924009545185d6801c307f8e2cfb3748e774a58187d0a72aacaac2d4e51c2cc41ffbc231fa00eec2ece996762cc6450a781e1087e09e87b9bb7efce5b04c158a02d954e7053ab132529b3265b0405436b87f73f4e1284b56d9ef7052bbe1db0954ff495d38a8fc524bbaf584bc00c5b33670b5451bda1b7b8c5dd2741ecd96385e269a464cc7ae0762e696afeb913b07d6b870f08e1c561992bfa2b820c9b285dbc03675849e72d2aac825f82a57957f6701098c15436df8d8cc7c4e72a37bc986e67b5d1d8a049e0a335ee276ce912c8992b8a53aed4d90f2605b589c723a284ec4351b38986a21301c995021474843e42cd0ea77e75eb717bfcd83d81668f91be098fcb4bc48cb78901b2dd5f7079df0560dd7fa467fa89fa5150d0d4bb8a5e19e91135532db63a0bfa09e7cc5757fa3cb78415e7dd3b0bb2a01c8f2f7a25057325a1391c6eeeb153dc989da62795fd7b5d1c34ad6700ce644569f8e1c64601f6ee95be5c524d45591199e89832e457fd336671b21d6644111c02e7b9477e2c4c682e7c6dd762c903d92cddb7a505d4f2dbcf37dc0026ce41f88cc980bf1cb183e05b0458796973571cb4ad3d02d5d6f04e2cb13c54ad3eba4715b20cdb53d45ad2b2b4d9aad13eeec28b9071340a35d73d445bf4831b3365b69d6d0aa99050bea3f91aaa69a89474023914e3ff6b3f826198e03e17b4eaeaa98c303eae12d30f26406c035d9313737eb38ef3d3bc3dab0f6a7cd11082591c0bdfc630640313eabd5fc779579d9e484f39673e73a0b81736874c691f97112fa8e792e1e96b354c9c45697cb5d2594e1d89656f1cdc2499505a7ca42e5208e7a859a6155d369f8807806c62aeb5a8bbb1f8cd465d74955b2cacfa1a8dba1d4a0553adc4adc381de7e5e83d0e28181d69f446b9f15bad2227b4525127a12d7acfa25bd5761c8b614ff45fe8c812d3c3e4c87135a012a05c11d4956329a877c97ea5702f1ba1f41a2c5af101b86b1d96ac23a552ed128b01fa56f5341a0bd05c9005eebc106c2171bbb1b83ef92b4e46e65d2ccfc0109e858866feb070a5b5f8ba1607586846c7dcc45ac3507b3b60c349da9e41959deab224bda9e4ca251cb0a4cb622cbd49548f285bb76311cd6e158b2b8b10b90c874221cd67e7abef3d9afcf2fc529ff0500c42037d88f7cc30bb4e2b28682552f479e014e36de390a4a90e8f7e350b254533d65cdcc9e99454df1aa5d26349f28b2578447fff129d3df61c30ba7a55eed81095603c2ccef8fe69f19ab060c9b15c33220414fc429f904ce0e66b4026341b61ffcaea59f2aaafc9d44f55f06ad6a803a4054a466b3c9d648f715e4a3b52d8f7a2bf6cfddb05c4c4a6b080cc68df2c5fd6dc7ee998be582f45f64c4dfc0d48e0eabb1db58176ec9dfcbe59ea15df7ec1d2c6557240bbcb8c35dbc82add083bc154d37fe781e91b41d3588d25e11ddecb71fd6f71b2708195d97c304086e15d5f5e682c56b93c1bc24dd9c2283db1623ff9eba3c1c38a59c86eedf049bd7a0cb69f2e655d3650feb9c46160280a06dc31058147e3540f32b52eb5758dc40b0b86cdc052ff31edd41de4377bd656af05e16820609ee2ae27a1facab13909d2548ad35d35a506f5654e96be194ce8e8a836e780784a225279db2f23dc759580160d3e894bafbea45501f9fc0e14b4a986a5135f1e7db31016fcbda47c2433e8d97c07b5a2a76d31f660868aa99ea7c0d3457972cb55ad2f526382a9a95d834c1d8bbac6c730d793ace52b3871d97da50da567497460d3661ed68f5b464d0cc92f87d1a27aca1736d045560e69815c845c7e5837050e784ab2e1c697708cb941f5e527f7ca77e3b0c21e4946fcf3ef8613d394a0a09c1a4b3e048b5af84132921d9accc848d38f4a0f8e3083f42499007d627a278b93890423605004967e5b62fcc28b0333742a1f88f2f96875f3aa5fa3b3c5b3c437ef8bb819ed07bc0d660099667bf32fb6c61706759fc954b843b56312668e926697776d42135ba4d610f1ae0b5bb559889cca6255cc4a3e352d735d9f08afbfc4c5b3a87a65bbb4fb1af897f16dc45ea883bf2cac1a706d7fc0c6980191fd6e41423531b734c13d75b4f78fbb77bcd075e10e6459d884e4db11723fb0c4e9e8bbfda06733548d8f60a53a356b148516208c6347d10f5362fa7fc2522cd085c997738c583af3336e62ef0eb25cd0b2f350d928da6a64676c22754fa9429ce71e9fd3255ce268582f6574ab9e8e50440e533639ac6970685f071057162ba89108ef5ca3c161947e1c664bacde144e66a91e7fe3fb97176e7b11efb6ce269a7c8dcb8bdc0ce5bd1cd3ff161573e7b728f3dc9fab583aca6426de01d496291ce6375ba71320331f47b52d5fa1698d8787257593d49c0584bf78a18970cb0b0ebe33f1236bdb4963c99b7d3576b335be9ce071be1cce6fc83d69029a8d3957f0e1afc870c674d1e80e4e2a8573539462ff66409f6cafeca270c2cbc8601304541fa249c337bed1433f3539ebf005a39ed260cfa6260f294f7297f4e3d76ba677434dfb30a4edceec1d0dd6d792019e18fd64301132f184d8cde42588498c7bac50a23d8e494ac29e940d6d629dc08aa9776413286230e814374af101e50361f754f9ce8c54c51da4b7eefa1f359670741351c61056a1d755051a8ab931e33c61aee265d240a3f29290ca8f40f6b151341c548de87f02989d0ed71c6208bbe5e1a0d5c80e0706a67689deecc2fc26f218b34966d0b22569a5e830c881441a031e309119685759207f1148b72d54a4750cdbc999a4eef4a24e02e3e2722c1f94e0a0cb1817a8b516a527aaae012495cb36bb9c55f731b4ad08d2870e3fdbaca38681e117814d8b77ed849b3bdf144129067c2e460f7e5b0b932b87740d0a71a2d21e5f9f84eafcbb2db634859843d7be4421ef8f8f10fae3e9e5455506e81418c0c833592a63614e20da60f2487a1a9d0933f3e55aad11b98e46b5ea2a9334e784a0cb4031cdefa2214fcbd55e4a0519bf0ce0ce2cad55ba35e57251cba6ec3c5e37059bbf00f3aee2538f57c03df12800c9a9f325cac4ab3648169e790563cc3a9ffcbd3e79053b6335611c7f95aa2c13fd498f93c9214626c5efbcda6c4e665b95193f39106792e2aa9d617b5c24c262e3a8e8d3c01915c5cd859c2cb3340163fc2a98b2ebc96fd66a95f32453eed2631830cb81eb49ad9c7ee8e819eb01b7918a2a79877c28bfba400f94e086e945bb92c34dd7f8580d25270e23407061b18baa0c938179791dd5525cd6e2e7201bc254d5888cb3797936b05fe04d8d5223448a47260d9f203bfee0fda48fa4f7c676ad91029e96063db51c93c1b4f1d84919388864361c1413455636b4de3d92d1c7e07213684611dc5629948c32194c96ff65d12d5920b1fa6e0e21856e2839ea5a5ad3b98057547a2abb0d5f72a4cca1bdf2e4f123251b143ff23596418e261ca2733f556c69d6d802af14527e12cf5cd6c37160ce1871e0494a0a95a2ab3ee0ece314c7cfe4099b1e64ea314875cc67fb32e0bd869f5e83e70e99be1f0426ce74e5675c0ffafcf4def60552d24e57ad48bec3f3d1a8ed2474f8d4642799931d5b101b1b5048ae456e04029744f7753118f2a1c3552f5c2590e0744e32bb6c85e5067baf657a643a0a08681e3c7faf8aad3550cbf92798484d0b003cbe7843a85e829a6949582cbcc479f8d62b318c00a28a24f0ddabc87729a6f90f4b388189d97cff220dd039a3268223a47d4f8824389cc97fa78a1ae892f289c1b788d2810f3f5a6633f2500b61e3a3f28a46c3c5406465df29b72c9881bb78088bb4185db45edc796a53a15cc1ee75f28e1c582703f81ce9dc7780d3912ad8be694baab21585aed38242f04db102aa7a38a148e2bcbe622ce2d08eb9de4051358730a33ab104493fa232904d10b97cb053b0a2a6d6fd64dbbce9d34933b1d43db6abfaa80cfa4207c5ac98a9fcf478f9cd3b1d9a0a6f4fd73e5fd1fdee7bd7d41f0c74bae661089e62a0d3a9d86e6af56a1b55ce6975082a16ce5a2e7299a8f87ca2aba5246a2d97c54dd426c121ead3536f31d711d8b08a6a4740a90a4484e360d9b6d3b44886bdab7ea8e9237f0bbfbe48d4f759fc18f11acc69517da41e20d1e3fb0649b25a22a0813fae250505745bed868f2172cadf00d633016605ef3333d2f8f22be9454a0277fedb5e747d83f54a35402a9392704c1111dff8fb3616e7a7864497eb003b4ad9a67b82a5f762114d36cdc2319fc6ab24dfcf6c88bcdb998c5c621e290c87ab3a43b951bfd84488ab6a8cb5bbe3a4b74a1b0f98d090255d9793ae8d38cd1e8ac318f688013eec11741d874ac5e571679ef41cfc0c00d206d776427ce0b1decb8aeb1adaa420a2c6d4572bc1ac0c57e0981e9e705c443f03901c4f16d3f8607b01d8868cbc2e531eec0e9b99d9eb1c2b360b0f29bb0e86be206402af401c22460cec755c604b7b05933ae19917a1ef8b26c1187b0f6ea11f16f4c2400d07e1dc441adcd9b8b4803811d6b5f20e476d0a62a6fa4d6fa914f10b9e80f47f68c2d48bed453e115e986cc2b5a3ab55ec3e65e2bdf07d361e5bb34fd644dbdeadf670ef84ee5e0de5bdf24be5e07382f3be5ab6cd3e9918cd17a2c28e52d77035449de9824d3d3d3f18eab6fe304681f394522443fd295b034f4218a5ffadd3154de8b95300460e0cb262dea41e8366b2f20430658c78c1c31f25695bf8a8f5bf38a14872e1295bd02525065c7e169d682aff10c3fa7bb18b7bcfa1eae88801658525c82e65168097ec48d9f472c5e5e70e52fa55af724b5d15ea2014594591e0ab41e1de176a59313c3d470927c00718d2c3185fc75b0a60b80d8111f80f818d5156c7b93c30323e7514066c97f4372163d898ad8bcf63fe1d4f1ff69b503d566f49c7c31aca818f210a248e53781446a43d48068229997d2d796550279fd5579b44c4ee44b893c922b093cb772e2c9b2743c2db4d4d4a043a497179a7700f4fde376af9b58485558f9043bc349815f9f4c14a41d765bf20fb5110bb4d73507f02a45ef8843695c754b2f1040c1a005f183d0fa55c53eb3dbbf0b7d0d7c9036d7f0411ed2703752f49842603716a0c87caf6ced309e2282d3e062972b28b76025835c3a46e73ff7eb79a56f4fa53e272042c2f388532a7187bd5d36d739c096bf0a45317d902d8560a5a71cd406dd12e0f0d51651043c2ec700422a8b1ead76192ede363650f8a720d9e810a3c78ff2e939589733a06cebf4ebff66387cf7d4ffb694bda3788dd692e9fbd5b5b3b853d27f5fc750e80e9156890c7dfdd0aab69b2a3c6d7054eeaefc9b4e8b788ef87a292a0ae4ecb64271fa62f89acf3e5f4dbdcd764c003e48c7c2d75fd55e5e5baba5723871ab73c0deeb4eb6ae8521507b07b1fe086c22b1e9d1132e88dde5ed7103207a9afa3a12c52ab07f1902ad2452fa47d8850c89e0cd493a40c8175b7c4f34de8f7385b5dcd5f0bc1351b3a9b48ee4da33407d31a16f3f3bc1696ff8b10d594ddc6670d0371ce51076fdf74f83f9de02b3b681b2bbbcbc3e1c32c252ab0e3b858d69d557e0d04252b911c17de13bec0b97ebd2992e01aa724f25693f91f1bf8722a6f90efc001545bddc1aeca6b158d41c478a64161c63208658312cafa7c926f9631a8432aef6b9e57afc17884b8f05a073c82ae334a95e688128cb9fa55e6ff74b356ecf5a3f2ae90141911e7eb6446e9fc83b43d35c6e955c2590bfcf1959e1c6c45f54c325158884cf5f11982bcd3e1881216033b5c0281d14ff5ac303dc5e69ca2aa04d9d0f85479a8b459ad7e74790cd9c61fc8f344533cf06152f2a8aaaa622d7d890989ed2e865a2c72cd41313a642872cda8ba7837824deb372a4bff09e542d0cdbbe5e8df5a39450ed8baca489914f5beca49c2730f31ede28451ddbd7402f74de42dd1bdf791372ef76e40790bb9f7c69f8edd07a2856d96b2f2a288ab14dbd9a25d35d4061fdd2e51c1cdfecf14732d24469c2343b6d46cdaa9e5fe3deee603eb2c51785eb7ea8929ee7ae9545f613ca6e46e291ac003bc844d6523bef359eb1b749b2d2f02f19bd4a3c11ed829f72a31ca8f5a5beb107998cf83adbfb954ab350f1e64fe58ba437b6225170e72e4b39b766b7adeaab50e36672149770f690d854c85f78f2729eff1dfd3f871829a9822d5a8c16ec8fa4969a2bdcd5ad1a6af093d9aec87cb1bebc7d1424f2808fc27aa21c07f24ba3b14b811471e251c4ca50b992a6c623aecae69c83acf9aa5d91a07446f44edc177ad2ea2b39b841bc38da7d119492802382f610ddf7620cdf5b569cfe6ce7f7716c9f010fb85aa11ebd635fc09fd64930b3a2d4f2bae4af5ba2b081e7270707e07e880611c1a9bfac38d00cf460dc0a6fa76df02c2d13792f7c06d486f7446a7d32fbcf21c6fac44d4a5237c1be2f2785fb98116d69037f89b806d046cdb5063252e5d15db384b1196d6a12aec262d7f814d2ea88da0e759405f52d99f247fc34866b88ebcb429993c5b9d655d3e8c4dce8dace8de8564e8e0e46da1f7867478294cc12009a50a88943c915283821c1a0b6abc418b54af39348c8027c5225df829b5e59633bd28838acd745ebf64b1bca5cad568d7d692ab3af58677c0f9d0e5bf1f0e8e7cfdbdc37cdf925dd32933b27c12e68e3713439db86e6c040ce1f415632a590533ad6be6928410fc35a32ce96bd6787e15fdde7eba74305c6a444a6469135aa00f7e1603376fd6cef6ae4fe2819a109b07bca9456b4f03073c2240fdfae3df79d0304651d6e1c7df59c317138eb40008868eba27c73fdb2ec1a8906674e9b58877cb6d67ad6474d5909c11d3f6219579ae5c80b45544b5a7ab716ff9c395f9b1a70c3e54989c6022cc2085a2c9fcaeb372b10675f3de31e2a4c1f6920d1ddd994269e944d5145615ae0453be4fd94178aee41b00d7af60d52d6e9f6eb3dbfdb8b4c08ec20f0299bcbb3c55bc289efccb15932ad944cb72e25722acecddbc6cf6c0d115aa815c3fd5c67a99c5d42bb10ac1a02b7a32abec832f119efbc5b01647879f036a0e8ca6a29401acb5d707dd0decd774ea090ec20a2c3e7590dccab20237852681f27b4ea5264f0f988d22f647e556d4e8d61aaf1e0861c00e7f1609b2e8a3036509a7177d826ba129f45f79096c4510722142695fa1b4f0aabd37ff6a95990f3f19ee0a5daff669282fa5dee6420322327d5326072d95d589508b67e18d72f725e827b8fe15dbb341ddc6a52d066d8da50056e110d1c32478ce1d30e4f0a736a1db018234d68607b5b9a7f18c2d61ee696b1319027aacb1980a6caea4ab4a2abcf0b26366c07bfd7d08d022d29549488444ed3d736f1111306f3f46d3b8942923d1b1b06e3af89caf7a6db3de5ec1361a96574903d448fb7cba31962e13a4405d36b0bf3b21d9c61e956b27f96362e9dccfba7a03bb387ec292c9e593781e19e887bc26407c14b4e7830473860724bb60c417241e4069cf584bc8053fa1d12e41dca1b707ba56cfc97f7347f310f133dc8fc3310ed592eed3514e4e5da6c54b08b110f62827b30e9fd35c3a20079133971ad5331ca450927042a37fb3fbc0f0bb20887a0f9a2aa0d3cf8533f5198698390e54cc9b0182a48e19c8f9beb9ee20c3ef5edf6748578721941e36fb0b871b6a02d926415669d79da6f35533c8bf8730d5d61482805d147b02ca87ab2c5862e479b9b88ce20b6536517a8d690ac844f2cd2ecbb5165885af0ff0a7c5d7638e1a954ebf7189c490c6a693bbd1062b4624bd1ecdeb5a2200ba58cbe69024918db2926e060d7b52c3a844c3e80ac4d5390d143c0886fa51380f4de3a8fb89b606a63fdb9559ca95b0b261d028c109b7afd49fac0fcdba54a57fac73014e25ce1cd7a4ae47a8c255bf609e5169227c0fad00fa4fdba8f206d35f6f9723cac713ea62d4846e2becdb77723fcd086628063edec61cbc31d578595d3cd6ab2959ac503f7838dd2f050063672c8e3303b4f42d57462ad7af4add957d47caa4ba3392c28a4e9460aed5b01c259772a1113a48be5a9987ad8c79f18f5dbe438b558e24df66c801ed907297a0d21858e3022e3355af4bf235744fbd65bacc545d2fc967d43df596713953a54c5482a15960b34cd9ac284b734364da0f8a9eab86a8ace88d01e6ae4e96315249af18a15b512fc6cda732458946deb035793fecead4fce26ae487ee5734a7dd1ad41dc4e888b2e72a921424692afc31c26566d575095e946ef87184cb4c9566a20282a4094904cba6a25a8a0934511c46b1bfde5eb96288aa456ab13f51ae0475a3622cf6e398269192741506ec0f15572eeb4670f8a132f647a57d28f64f35a5d226970a2963ffce4275e4964e14d10ada5bd5509326883b88571e830eb49948122a72e06384ae7190c0e8f38077a1e0c2023d506315699788ae11cb34cfcdd4b97ed8f3cccd2ecde4be2fae136f5693403d95d87aa5f71ca163c0ca3c11de58ba9c4fcdbac72da840da3b533fe55207d8f28bf52bc69e93f2fba25a3ff26ad99892f51c533912511998286fa0a451201139e0d40989fa543fbcabe31eb1a9e754db5986b4cc56225dc017805a434d75f7aaf2bda85154956e97f3c64d8552a92640a5aad4508aa119fcac303f2e9fa9522e85de038598a42f4940ca0404deb5e8378551335d4daa7b61aa486e925596f9cf5afffc13fa857c7e8fc05fa3891a464fab921cc54456a570fdd4db975587fd54e49995a1a5e47cb882e924f400660ebb1c82e75046d50a04492be347386523e1beb132c2920a73cc107371a073ffd74e028632b42750336942a4bb6d3e0a1a4b8ec5b8958a549018c58ab13f88fe42da97b3ad2c7dadbb5d138e85ca54a121a9ac747d2df6b8ca35232cc7bd960bfa6332a079331cd432ec7debb9536cd32185a03b1968dc1852e4745a541f54635c010b5d41c02ea529bec49592b09a0ae9c7531efb24aa91270c843780a69384fad562c0fbc79b08d35f5abd4ef1d86fd0a5bfef2e7f724315624c3ea43e9bfaff5219eab5519c74ba6d8d452f98251877f8e5ad2279a3bc31ac6f15eb36dfaa7aa4540af4fa70e6f5e50160d8cf6a23062e648d87c27f03226afcf007a5381111254546fbb3ba5bb9c939482cabc61dc4750230c07adad1595daf5d52a9f0575b4ed2892626e3b2fa4ace4a3ba1965fe4cb4afd0b70d8113636d87bb0b2ca4eb5edbf70fb5e9c8e348031d69cdf1b594903542b37bfa193a1823806890c840a0c45039289a6a9639bd5ef8f9096b7fe72bacf6a614bb53bef394d88756db2f3db768b695c106ba7b3322668b829562c116bf26f83c07e4ae23cbded8cc0050c025fb510d838c0a085b080a6e204542f9e3b69243e60cef556992376ff7ab58e1425cb3e57fd7b1738ddfe8d96d4f059077b5c2a39ce9df66d06c1a8b80d21c44d3a3a7f624442a39830e15baad2dc45c8191b5073cd73382f35922444e28030c88e0f65888d064910bfc375421b82c42537407317be88939ecbd43005f7de3a1da41c40143e366592d6b6e5264ff0e0c20909c58749c744e9a1481b284eb76b729fbc3e9d24bcddde08a5f3092b83b12b22e243db087397bcf2f96161892bd38d7364a555d3516e64dc8353cc1bb6f660d8688c16ddaf96e4c69741179a84c204acf42e0c5bd8e01cada5f53189c650567482fc59fb746218792ce8864cf17ac20fd147ee93d301d9bc363119a3d75a8c35f69217875518f08e7760482821ba9f62999b22fa231291ae6bad49f95a0b7313e7edea85991149bc05365c92e0bac2ae1322121ae2a9bada84b8e8a73ad3d7d0f6edfad00818a45a01698eddd523d31410404e4b684182ffe30ec9d8358b4e6ac335b2a7a8c9752fa77a860e8de5fa4f7aa62edffbf4e588c859288dbabd9e63b817bdb090a77cc1254232505615470cee39fd27f08b8f2474e4addc5dcf8d8efc417478e82bc7d38f577042a0f352b072065b1055f4eaa57367cce91a7ba861882d8ed7cc232a5140668d0996b06fa6bb32afbf86851401ffb0086c1cd2bda301aa6071a274dea45d6b05cc94e74690e36757c5d949d4dc6386effaf8c70ba42c71a719c5ddebc0428a177626eb25cd6ea7eb6173e2957422850b12b0c0f3507815f4b25cb6c0fa09972b5c929a250718b5782b0f2fe0103ca96f62862b7858bc60510b6ee653e69f8227ee02c2c92991256916a3eda9f3fc74de4b60948858d0d9fcf414455987afb81748232c4f29974984bd338b3332015b2ab0528c04c7471cf6a791fcbbce9de7f2c3486f6b18567a1f9a4225757d60e5eab1a6e2cacde3a7cc60a30e357021afa42c2a48d17d71a5015ae9ee81ee049ec2a08347a59a2a2520bbe09ca3c13716fc37eba8a6087ccc0f2790e87984ca92c3c2fd37708060dfa63329e0f80df86c783c5194884cce924dd4584c44f11e924af29a850e9df4157183cf7e070f9773dbb27a27103a4cde68aaeb429dcc8343e42e8485c09b1007a35073165b33e67337ce2de7c282b1a7a24ea653c1052e85bded9891ca8b01c109a6c157fe5160a0023557b4905167d8b9a5a2a840c27edb4b2b1b29dae6293f0897a4d49dc1623c614dd4c1dd112ea0281f73fa5a859d7fece1129b46fd077f2541952ce0ce75e1da534a8ea7ef25a89dc63ef40cb66ced31072aa3a5ab12d289f968f85f2c417fd10e0355f28d5116dfed22ea09798cdca80408f90220f906e57ff06eae05154146bf261e058c64b971ce3c8468f75fab48b791b18367908b8b72bd05a7c19cc3f2bc16f7f3fdc795a495fe388dbce050cfb36aaa88a440ae7bfbc725c2181c44e8d17e073c172ef908d06d914dcc68c27f14f58dc4138dcdeca0f79b4e2f2db65c1a631f534b4fac12dce0e2b4863a98db3f0a09a8d76cb45e89addc948762cf5f32d73a7cae3d7831789f21485d7053914e74fbfab5179c9d28f3c86acbae8c8f9a82f19ea691542a16403ed0829a02e03e71717c0e5ba6a5d569b3d5c67616761ac06cb06278cc483e4386a37f7bac3a9d41995f878e7d6ab6a462b0d20ea3df37a08cd434d13bd1050f93395b1f7ef168af80f750e9e62d158a360e0215d653e22f35454b04a00356fa3d91702a68305c217585bfce239a543d1826a808a0e7a449619635e1ca741beecd5651d6f563e20ab501869e801fe57287f752de54981ae1ba503b4209630626bc201928c910860dfc63866131857925b42244686a86b00eb3a7100be203b954b9310f08b432dc0518a73782e1b3ac96729fc6177aca49de61fd34e62858252822472ce6a0e0e376b193421cb1f1483b2599d090dcfe189af2833b6b04875790a2140712857b5fdffd67f0cd3b8dfce08d7df70bf9563a4fa761c2e7060f12847eec1296ea741ccf4c34207bd3a268135f457136472ac98ca413eeb1d60c38343eab3694168f75b7aac147e5e9320ba434460b82c0bdd67c1c460955fd014e17f0cc67973843bae460bb4c5309290db627699cf2bbccd8d6ea0598f9bf413912de31b9493d3f463cb23f630ff18bf830ed841d3ba71bd6ea849dc97668a69fda3e5676c8442a48964288d9d71f1375602cf23aacab94958548921fccc1d0d4cf5e23906382563487092d58392604d1b46dfbaea4c978fb12efdb0777169dd7e6a6203c2cb6c1e3e7ad31234d23bfde29687c21003c6a76d1e2ac8543a8a91f24dac66a37a05920f6862beea2211c0d979497b9f1439e3ee48198bbcbcdd89fd6d5c7ad3a483f9edeac61e2e63ee64f1e7334105509a0b69df0e5374dc6df08d2fec038bce939607053d1dafcd1980de9ce1a36b369f0345ace9c1271c0bbf37b80476c0ce18532538bc1977c7c5f12c62d32fe4bfefb13a538a6c1ebde421dc25028b43ea3c27cf1b2fa12862caa250f051042b3b4802ce37b96dec99b3ebf4947ed0d9c29c5911306419234e206c0061c1f6783b3de04b1736b2024b655d43bd45a2413b26a048de36dc8efa0b4a43034a2645c087f69000f09964fb2d8324079011a65e6e165d393040da6cbf819b31bccf8f97b8b0bb2c3701aa8bf1d5a9f4b210e2c41765b1669f97c868554e04621b5df973d459a62b5031d51d7fcba08ae8a5324da2d5281b5a4bff130791111d4726460511e4a930edc66dd14bfd1cc2893a25ebd126e1e47023034c18ea7433aa088681ac58de7fee48282e45ce034d290637c37606fc1c99a92b1de603ce9b4e2de1d43bfc1fbcc8cefa8e917e1e74de2a5574f4876df288d3f7aef08ff3775a142288ee53f972ad738377450d64ae56e8585774f8e6d38a07485f6ecd0ed78d8c6da678859fddbf3fc66e6de379cda1053fae47cc0f9f521d5012b63167b97b2e0eb095effbc32dafb8844820ff1e06484169cfca4580d80ef42f203f220844780d25f94fdeb611b8a73a5ce4a15a3eaeeba7141ac09187be29ed9afe6f138ff4e4922b1cc2636d70451833b089f605e9e0156e89f13c2b5a786d3e7200668a14f594a060fe8b53a68cf638fe374153480d1914e455708573f2ad84c9d12bc9780473fbbafba0af3065094a1f4c1682efe44cb31b8475a3f496ba4fffbb8408dd4b5769b2462816579faa50b279a54014ef6a5c8e419c2333645ef268ae1b0a9fc1797f78b96531cff659ff4963c732540f3f7c1ae783887f99a02eafcc1095eb0b98a5d949c5dae262e1dc6bf5a86d5bb59c2eca66aa57f27cd6881b39fb27a444c7e780de4ba236bcd0559f218566f08426d59844308d66e13d881b22d47ad958be34e54bcf3010910fd11fa7af0246be815219cacac249bbb70e4bb140c80a7c0e3bb75dd632a66c3dedf26d910183c2d72d21bee3ed248911aa2b11870cbea13cd36256f34fa5868fd2b857cb0ef83b25e2058354fcb3436637fda04e518cd5374bae9ce7f04620d206e4cdd2648a9eae52d80e16fb520704db6592f491b6be864a230d8b3be304e74df2012b5cf4f60da441f7390b1fa9b06c124ca49b2ace3632727a952507314c6ae55a8c8b2383b6d816d0c0c34ecb013e8287d4fa6c78df71958a16d5cc8a3f3006d904b21d10d31ee53010efafaaf6b5cac84314027fd8f446e2c1615539d7206bd42ad168a8a6a42de1c80909fd546e3695a021bc4d099431dab47f8e51fd8d5d998ec684c115b27ab98763f35919fc7266880e0109773257028a1d9e1c0551b4460b3dda3fb257aa2e07098a859f219143a992bf5bc4904760e72dd4b4f30172e0cd57154e3697b2d18a60b7f2171d11f073d9e09e1c5f25300e0c8f8962e3a68bb23b92546d3c73461018f42a174959923356a630f4755c38428028746b097565dc174d49915dbca20daf67e238132a9f0561dc0eb7d9dd063c9e565707fc897f27029680a8627827506837c7acc858ad40251979b1a5081a9b8422dcc57801af405eacbfe6add3a85868eb745df0e8fda7bc41955857f8a8131ad82bb0a84ae64aa432207642d6f49c29403100cb990bd91125af56ce203466eca1380704f7a1c5c84dc8446b04572a0bde02391e4db842cbec0b5f8b189750e5c9ebfbbe75b0440fe2cb92eec9e8c4cb3d10163a6e7da2b06c90182fb3e2f05e0b460cc8873c665ab6c70c6ef883fdc209d14beefd1a4cc18c6442fe070ab7e36970c1553c0b0a593991acf2d9efa61bde205cba1db7af5f3fa4ae2c78309daab020f02f78c2c804b3c2631d3e853a30ee8952949a897853e0c221397821653e3bcf6a47cebaa6261bfcd38883417af12a9621ecaff290270acb6bd1350b0f49901fe41b7370ac70f96bf1ffdc3147ec5e2bdd37797bada885fca374b04b8b3dc4e09fa580270154f502822125aabeabe640f8f183049085f2459d65e58650eb62a88cc4c190328884c04c73313c4dd241e2673dacc0b606f0f4f1eab38b2c01f37d5d997f3857aad0ada4dc219b87ed807695290dee8c6674bf3c4c030defb0fb34be9bb3c5cd6844afd644bb181b20357054adacde0787a93bc992c3a252e3a106c9ce77635f7fac82b5800580cc8adcf01e7369994242495bdaed2d2e388e03d662beb5b8deca806106b40d6eeed4667a6e8de64605c2b9fce7480b7f6c24ec31965c60185441178ea7f14632dc676ed6b81953f3cd301460db8b5b816e095a244e204d4c1e9e889a414c7e8f104c80afaaeb0dd338546c903550abbb7bb644ef35425fb17207818989a6395a63fea839748a4235f5b7bc506b280a0b3183101875c87ef83bc2f19cec71064218be0665bba671c2c1c0ac1e90eb09eeeb9f69ef1f0582d38fed5a24dfac8bd386d3825fb5ef9bcc19b82a6fdc2f1db834df2f4edc86f0eb94cc281e633ac735c4cc7a505407e3b0fbd0c872ba6f45a1268f9c5656aeacd27086c405a631108133b83fb878917e27113f487fdf71fce350b6e83d830699a48a6027b3167e4a3f8061cafa8484403fae7443e286baef2b52204bddd435990805c1e4438257e4f576908be0e387206bd20cd11b1e2c91a58009f37b0e220272ef8ad8870e4e6b92e8a5d8ec07132d92edb61139e56a3709101735a9ecc619a4db364d6e9dd329d284b045e9ce01ebbbaacd1342ff5fc8018acca944c745de6322211653e941995a6918a3bb799c3d939070e28f7abf24a18a48bcbfde48b45de72a94ff80a4910f2d4fb5b07d007e85d2dee133975ed15f0ef00c09714c107cd5bb56b5ede65870a0ee59723f0c9f2dd3ad4765afc9da7f233dd16277f99446752f63a8aafe9941004ed9880578fe8baa1a295b7ccb55c774a8a52b1d02122ff8c46344d1f2227e092115f03a8f21e3438f07e9b5c7b415b2ec61ceea7ef3be1350bb36d68b558f9c390de047c62f4a32d3e0f4700b6c213c507bd1c61eb719144d58ae3af32f5c6837bd882629b3bd5bf3660339fc551216b657d122c424963a492dc2d28a49f699e747f9a1d0c259e4c39626ca8cbc83c37d766d4b4912faad0c7d5ed72cd8d611a99e2c2a70ca7b6ea120f61abf108069dc48122392679ac24888509c15058a784dedd2831b0bebf24e899ef5802e178723d233da6c66c9ca28c3e9119d6e114c9c2cead7c07e530b534971e768ffb5712f4461d3b5c98486ac204d7467344fd49cb2f107c1fbe3957417b80e333ac5cf685101d0c6b1929b61c90a8fe0701af3f94f28d6c5037a85809cfe63fbf18fabd11bb1010b901ca466261276857eb80def240a02277ea9d75cd80d502a2cd42efd75c093896811b650b3befd1e8d1acbacc56ba80d19df68fb31d131d283087f365e8b6b0a3ec43090f87e9c07bf82964f2da73f570fed52136ee1ab2d6fc8bb7e4ccde9b76b9b8522818434cefe0f93f167f4af0f46055cce31b0358c4fb59c4fe8c3a940b862889061f4d8ea7fdaaa5c11b1bc487ca678827b5d43eb753ea8631e4dd3742eab0c367d06317d8c291cf4257be4a07369e738848bc84859a29f8e20461272019d42ec266bcc8342c8be09a676719e5bb6b823f001c300bdfe56e2b1b64b61c2577d2866999a3794a2baa129a6a0cbdb30d9dff8dd5c60fe3482124e36c6f6e02bbd1105ba49658dc44cc40e2431c43033ca417f48e08d82c648847ab5f36d6e6ea8adeeea7586c34679f3ee79bd1c7a47ac6f9bacc773f2c2280d1a92bce40e8e3a7a685d407a302bf2f28e821904ac9d6022315ef6c7e139c8333ebc0a0c504ef4280ef6aa557a0986cfed6fff16f4b6242d2af08bd09e355f7024177dba5944f007a93f1c622e32b23267bcff0384ccde5427a229ee7e5d4fc2a2d9f4e799e240efc2b4a444750e4af5f1bb5e6a8d2d81764a61ebb5fe8bd3958498efa645f0eccbf1f0d7ccce4435a315ae031f4548a50858741fe6170fe77430b7adf57f1509da44cbd4997efc5c066d76b190a36d80d104a1fc6762a192a54cc3622cb2069687a19d18d89d75f23fb287df02f3369677761f7df5a2ba33bbc57701c4270c40ca0ab9b04a6ee13093754ff6ecda301e4ad77a74d63d8c6c79edbe3333f32093ebee983392dcc4b79bdb81bc6b2fa53622bf2627217d33aa4bb30fd619a71ce12c450b419dcc9202dd3ea029e93d9ccfba5eeb0e208321fabfd1c2b886ba7ed91416f7e09f3d56a9061e263c19fa95da386fc2444e3230fb68bc2980dfea7442aa02f5e035aad4f01a5ff77518bc274d0d47c5cd68da74290a27bbefc14ffa7375662293a92fcaf77621924dc7c76e53162e269d4731c5b5c2910f7ae2a0df244be23af17b5d989b6251d10726aca603f6955d26fcd53f2838a8de9c666ddc004e6726ac001e641b60f673787ac955e02c970aa3b5fa7bedd54d97d72e4331d578aef2dd367c0dfd21fad33828b7297731a56908d4ff863a4d5da0cbd57a797e5cdc4bc4789016ada15e44bb1de1cae70de39f1d10321c5f585086521a528680a6d5e7444d6b7ac897b4558bfa91772c72cb54a103fd59ceff7b464a38df51a9a008144c0ed967b1b33ad3472378300e8277ebf8fa8f7c04df54d1f06a107adfe0970f79e41060e18bf9f3fabb1574321f33ad071f7ef57e5df61ab07a590818370d5d8ec6ff2ae4ec213d38c1b5c1ba67e89eb6f0de8796204b86e446d91fd32cc3883442517b8954e70b0e28fbc58d0f605911549eb9a2d158b589e6144d66c736adf76c72be5d3f2b5ee3e827ff5535cdb7a960b92d48d02a44f5452524a6e748ed5ab2529968b05e7617e77b8f3480406ff4566c1b64f6d604b46a79dc460951f1b2868220208c88fc9960922ba422a86010e2f8d6355b2029b237489d6f72aea3882fb2f1687f2a1e418faa63c1b815d7f2c8bcf4ea520819bf9b41661d06ce2a809a459ac86c507e6a287108e5c7b199acb73fb79068da40066cfa0336217806017a3e0ed43f0ee124715f21adfefc8521ff9b5af01d9cfecea49a8ab467c70ee1bd1689735f8aebb079c38df5f1406ef50e1512efb2ac0e8e075d7464f4ec5dfb221d4e1eb584c478e1a01820b77814807f565407cdde8380b25bac8b84ce6cdc50842f47125c78fafccec66a8dd43c03c7b0c82765a2fb41d6193de83a898aeadc45ca0a133e3cb15b7b90e52b7d762e0e1c056ef87c333d2fe4fbcb8530ee8ce501d3c86d585ab207428bb472c03033130b15d2680a0910894e8875ab37aee0afc22055520c64a284fc5907fffc5a8e89e30fae8ff91ca2620e9fd6d55e88738a9defa98e45bea7c991c98b72656ea8317527316eca2f38fe7453ae4da9ee15d73a297ff66096d9658f08dc813c89a95b247be394ddadb42c0bcc73f612e4278b58b281409a0be7e667dae0b2ba14cc2d0bdddb900f671e8b11172ece6bf525e0e96af066c27a59168d3de900a5eb5c5ceff0907372ad8fccbaa1195619f9307bd2e0645a65fa8953c7aaedf4dc22f433e0206a95d680345d97481c23e6588ff9018009761a2f6e8e4dabef3ce09229ff9945665ac7551499cb5163a41edce9e02fcc60488df1285bf64364034fe719483e750b90af656f0b14aa7669a8f25b5c19d45f3e06233887207a55e61a638a00924f6c1670997ae375199d0a49f5f413bf8d31c16dd5967dbe04a35ec73a74f21328e2bf0c45e69bce1278b232455c778dc27268fb0978597e5a67ac93d44e796070e9b8cfe6edeb85a8b9ae426432e77fc622eafccea59b331b54eb8dd96fc750be1d7feffd81262884c74efc90effaa1578926dd683a7428d52aa7b63653c705e334f895f614b7d7d92ff8b9392c54429a541d889474353177581b6804efe6ae29c5c4640484e2e9906fb8bd8b2c8ec77b0a8274647e5013683a5ff1f2240d10506fc18729fee635b29a6f3e3c3b1b105b4f2310a88e90544e1022ab6068f5b2014b2a20e8d5f8e2d557e7beb4b8362c74ebbe72abd3e472957b2fcbf5b455063cef7ec94f7169156f53dad6270a16630a1135081e7ae17df58d758a925b25310affb13d9e9727db6970769a8a9a0912e217b37d97b4b29539232e5080109850862f6bf1466124b58588e6079b260a6b2b6cf584b7bdfef7d7a6fbdf5deaf96eea054a766cb44131240b1c936f9a789d8225ddf9aa90920259668824995175871440a30600206527a7672ec8c3b468690eda907aac515128c6088299a6861040a493b4449a28754a634268c4ee0b532a5316184b6d324cbd86eadb57787f6930b7ba7672787edf08e2da8491628af3f3f683e82dc7befbdb66b4bdb61028b77830411c280987c7ade1248744d94dc53a6b4262a3005d0a4045d7b0f974c694d3ad04950e048072dac74208a134439e1bfc6ccf11e9ce285078a4f1c19a1b0b1987c40264a5215618c44364554d9228b2684a8028b1e4fa258fa02258226644259d8008b0f3a6cc163892a4b6cf1e6d79c4c40c128420f78200118444424ed18010c8430cd8a94c0034ee8a0882b96b045f18962850829385005cc949684045410b6294d087d565c31f9c044098410042174e0a683a41e9a13168499d29282606500763030f2bd0f504871c405462600421130286034a125edc0090b78d82206605421b3e2e8072d786a5c985f338e493ba8c29469942650be4ca35041a22b2284175710a18b2840a06205b193a5239f6f44102e2c5191bd2027847494230a1350a8328de26488efa3d567b4f84f56f7e7e87df6bb9976e539e2f264e5f2bcb9beb5b4611f88ddd2d21dfe36072a7e9092edd32fffb49396ead45e02fa8cb5c22c8d7579b252a3d092fa3b7c6c497f91ae35806e49ea6dcbb6ee5d7653ea947ad3f77e4f4115c2e84fdfb3ed750e27bdee76ac7d5cda3227d7bfdefd69bdf6b27adbae64b5e98dd9cbb0fbd33e6ddb79f63d04cb33cc6ebffbc67f764fed77f663e84aafcdc62e4398ed7b0dc2d86f3d5cb115e0cd16f432bceee704ddeddfe9e93f7772b48702182a49f4e049144a740185094c18c9b80b623b1c449b02c4b5414c80031e60912d41c11339e0a035a909096ab3792094c74c694d92f2e9ddae0f684c30914f9946794110ad4c6b494082054824f8410e073db0410f376a34ddc28b2738185c21d4031076fccd367bb461c3014ee0a00b2a4d7001021bb9c80bae5c3902072278828b1d62358a180191644869064b3710424c67c781b891022c80c082045e2439c951f9a0092634f8c11039a882c64d938c7bb0d626535ad2910f8bf9353f7e0e262849c8c114208e04918419b52e92a22891c54845097e603b0b974ca32801c42953289010c203e4124ccc644a5b6289ec651a658a13b4cdfb9966262bd5e48cac7ed727e5b663f39c61ee576e1efe355f21cbfd2ed3963b16089376c550b6994af1a289d012109c084309098e7e90c3a935d1010a110f59cc344a124b1cb1d382a12a4696cbcc111a1d76bfbf8f64c11f97971cf28476e889dd1ff262b6a3ddd3363da3ce9e338c0eebb724f5177d53f97d3198903b32065c5ac033fd3153b105ea834c4ba3167e1c282d8601fb18b896c77abfa54fa953faf82da56e9f8a2d5a06ddc725101a7b21052f77ba48fbb502a43a46fa44092df364fa44c9073248ab6dec274a6cb93f6c56903f481de60fe479240bf46d79d6212fe6d83ef891b8faff38b6e70dd9be97d4bbff955e8d21953119832d2de0f9be97a9d8024ebea511062c8ff5f630c2681ef7d29a691861c49cde4befa546fe547c210522b548752b046b7d8ada58ff7a5645a9a5d45a6cad0d6b95d0524aa9dfd0521d6bad5beb58e5d43cc751957279e75ed72ba654d014d62b466b2d2b535b3d6f1c4f5676faa2efe5674b9363f036bd2bb5a79a36e95bb7d6adb5d652cf145a6bada5a6d05a6b2d35d9ea02a50547f9f49630f2a4050f18e913254af9f4284d892cb96bd78ea203910cb7a006b80d72736e3cbfa6dbe80e1a60afdb9b1cb634dda42c30738282dc2a60ee66bb59c8f8b5d69af78e43a850753748882d08cef1ac0f17024f7e80c2c510c018ea40ecdae47b694b20c977878921d8669a4bdc2111b865188638ccbcb77bef0dba4a0491ef5bd56d080ca64ba6528021cb2f99d294e0219f66ae2302c1beb8f33eef234f4a5baa48b82e52f2595fdc799d479e94b654912aae8b5aa92fee70479e94b65491705d84ff9e94b65491707d2da52d55a47e5f6af2a4b46cc5589f5aea7d6eadf5225efd9e00690de8337a619b7dd63f6d49cb186c253d2a34b7bb17254192c59342a3b5d6ee76776bad8bd65abbdbddad0d7231c65dd7799e0d42ac04f170d7759ee77ddff7352eafeb3ccffbbeaf46450a087ab92fb0e096a4d4acdc946a54a4e0b05ca9519112c43bf987b5bbdddd5a7befc5822dc6de15635cbbbbb536c90993ce765d9625b7d6de7bbb2e8b673dcfbb7ade92bdf7628cbbaef33cefb3dfe75dbf8fd65abbdbddadb51763dc759de779dff799acc9e45d4d265a6bed6e77b716775de779def77d269309b420e85d4190d65abbdbddaded3ccffbbecf6432812018da30f4ae61f89d583ea327f1fce873f2d172ff9794fb4193c904d6402ab91f9412863ea31f85ae24f7879e44b4a2e85d45d18b723f969c0bf990cb7ce647dc48ee0b2cb8669244c55653b25225c9493369a42c2deb234dd4b32c5dd4491a49cb5a28cb92949a959b528d8a141c962b352a522aad1aa9b39aa41ed5a26e238ee44c72bf2ba9b37aa41aa94341a8920c3447711de4862c3608b15682d87c46579b3e638eda93fbfbc1eefe69534aeef71e36f4195f04a26d5a71859a5df4da7bbdebbddf894575fa3fefe42f02a131cf5ffd95ca486d99038dd558bbdf649001489bc7a95fbfd7efbd7eaf53bf4e29a5d7efedb63cb5dd7adbee76ebeeeed8f258bfee5de8eededeed5e777bb7dbca9ad14abf6ba57fbfd27a6fad95d24ae9b5f75aa7d4560f02589e1e88afa5b4296dcb63bd6fd33fbb9bd2a67f7677534a4beb67b7773baa4e19ebfb571045bf29a5b4eb760069dd0f36d3ed72631c04773e502a47284103255330a902053523a8a2fcf1d3410edb014d3f3f24dd0fe7b8a089e401630f6ca1848a27a28051845b0ccbc8184f198114197fe54f9bb63c29945c7f7e5802de9d1f90b4b4db9f1f341f3b343c068900873bf71c3ddf0fb2aefc217dd8d207cc0b729857fee01c709831935ac63f782768ca1321f8dafbe707cdc78f08ac84ed3f3876a618a5e0b67b90101f3f5c30653a45042bc8623ebdce515adc6c3f3b4a10fbe7c70f26b3a04bc3b1f301451d4e797aa20a36b3408764f9cb3f866834facbbf93b0c217d9333331e18bac343432e18ba439874c5569d39f0699526a734699b20d31ae8a56491ad652d22f11c896ada3158cf56562582b981755caa565449dc41034b55c279c7f91a66c9667111c92521d2b02e1d2fa0d79b688b2bf0d79fa941af21c6590a75992670f91e4b9ba65ff274f9923647f1af2f42733e439c6204fd3459e3dd4224f9f2243a65645674c51f65f91a73fc9e7aae8fc7cb68e4e966a75f6cc853c658690fd5bc8d3a78ce4b993cfd6d1d9b3132992270b24cf1845e74c16a799cfd6d1d9431d798ef96c1d3593e6914067cb489dd4d93a1b0d5257a48974914aa4e210a9451a1cc009409fb168a46dd69288f1f4409fb1d66f2246cf5d04aaa38bd6de8bf21947114886ce0654e90d486767cbf5bbc95865e86cb9bf8a40b67adedda70c4dbdae034f94ea844af0dc8dd2767b71277ae1670243eab0eecff106a319fca5c4588744a32a6b23c6903e05c516bdec193d976ba8b60c672a68c16b56696c093f0608518261c84d8608b4d98f6b7109ad1724c8e6920a69d7ae474f9bfd3d3e44f187e6c28f7e30a50a2bdd619f3ead3c1526d4fd0e1febca2575fc2f064cbe549100f5ef8397b46d3ecdf8bd8acb1c6df65371a793181bdf902fa52f7c49cf9dc10ec7aed4ed097f08a6c23662b44acd43596115570980b8b69cad129055ca69b3df04717407f85d898a1cd67d5b25ab549154a2b32a592b0df39278455ed1cbcb0bc6f4f19faed41d2d7b4505f8625d19ce9030f98324a53aa692b6f9619870153acc63e190ed53d3665b5a6ba55fd52bed13fe8e3c89462c7ff5b71263fd93b55aad62642a51abc691c562c9b46ae8c5c4884032d8a17c3f4604ba0f826725f10dae94fd91e48a4351ae448c270e4538109d8ecbf62979ca6087b2bf0d67600b748594f258af27701e9588dae8f01c81c259bf60a4495cd25ab9e5561a623cbda2dc5e9197a461e1917e75386bb3998cf5cf7096fbc1b10565fac4137eaa43bd947591eb335a8014c7d8e5b23fe833e2303bbb68b4f89b94c173d9d2daf9fb9f2dd9daf294017710b64d2164ef5d5441cc5d696554c7bf5530d6ff715b43ed163cdb3cefde83f6bd4c45fbb634ba4f45cfc596b45a2825e0b96cdba45dce67c0ca5f596d561aec4e07762811a592fbc3bac3c7c3121442487860890e4f1821832ba234811264288825381102c90e8ea668820656d8a0bbbb4684dcf6031d062d0969055634518329549644a18244106e352bc6204f07af6fdfeeba2b7f30c61877d0e7c3c70f17acb001f6ab841108b92f103994c062095684a056845a0ca2a8a0f48e0eaeedee6e8c31c6b8b31709a6ea7560ca101643304082116a49885929b2b5b62b7fdafce183e6c3744de5cf4fe9f908fa7ea63cf1c2bb36888f1f2e4c79b20514a1afbf16bc2c28a785100d7010214e546927acb41357da092ceeded871dbb063bdb8307a93c9643b38e172adb5160a122849a02881c282f250a4983bd65a3bc407318a2f866e183bc6186377df9961064630dd8f2790f81349dcbab5d6da16b7ee3ec39d61064428cfd1e304e72417b483886fc018bbbbbb3b761b767277063c9cbaa609599a116b3d80718d24a08872031e948cc0430c4731058ad077e50c37d890b3e1a76718e2b0af9cc15ff567701b2ccd8b19a858122285891427f6dabc98810af116032c31f8a2236df8400c2b37cc507f061b86c030e476830d33e4a064b9c1adca7e8683d362c5335263f4821a4841e5065910014592269498987c28006f600e4ea7a1f036da4e1ef086c8620547f440061f40819426926a5b28b14a4e909099d2a87822c3644aa3a2888f871374408899425163c1141ff0141e7af4f8f151e381098ea850f338fadfef61a4ef25ada1d73c277eb092f776fe1de999feb2721dbf5a9ea6d26bf33e76af2bdddea73f3c297ad260ad618c674f8f8655faf24f4a0b9598ecdf327ef91c5bf239c6e473f49a1bcf9e13eef7f4a03ba807c54845be35b0ded59e70c625a53a7eb500bbbb9590bbbbbbdbb61548ac304245071980200adc932ab6889d5ea63e5c1a3ea16e1e08c1a8a8053c00638818145a13514491820a018d91121081881e5079a2e8090fa040428870088c1e7a48c114445cf480835847f10416539c40650ac594233eb053850af7fcf43879b9b676a4b2f7de7b814839367b5c530d04a632d3da951b6431539a144bf86ee00d05a21129bcc88d9d90a0bbcd4c6952d8408a27a7dc6d87e2acb82e08dddd9f281969c15d39240230340cdfd7a7410efbca21feaa3fa4fdb613c510a14b59b27ea3f041d541426c41843c21fa71db102894e082b1bb3b4dc9fa85418b213428ba70b11e14481d09439b75078c67502182080c19024390ea3d7bba30be64046018e28daa19994a710415788d82027606518ef23288ea3288c21944dd0ca26c06519e4118981718d50b4ccae505a66544bdc09cc4107c81317d5e875f605e606a4e34a490e9d71a03909e30521a0b90644a1bc276cb9496c4497619dd51b12cfb0eb93e7dc1fbee83baef5f30fdf741df5311a8061a5e001f7f10fef0c37203e0e3507c2c964ab97e102ec1ba24abb85c3fac39b0ac367f7d0f3e586ec0f4df173e18ce40221352d277641aca958a2fb45ee8fefbafdc80f75dd9f2efbe488cc65a41a6ff9ec6a84803101a3395f52b6d41bc6f05e1727d1c8ac472b93e91181583b4bc0c52caf5bb5bae2f0ac1c16b5ac565fd695b03effdf32ae51abb64eb05fcf76f2dd7c7f8310edfea503e6ded12dda27b546f7f5a5caeb18eb44a65eb85fbdd77e506ec52ae4f633416a3225050ae00f6962b0e382c79a106418929643122568b25327a2586cb1c88582d96c86232b7d2c511590cbfb5e1eeed9218ff2d91e80dc4e40bf7f14e3e6d0d488d517f9d663e6d2d7bb524efb6e304531cd164955669a728ac9862268b9d748966939a87d2b8020c1d20c9624ef3d7ac46642baab4a37acbf54f8b94ebbbcc612eb6125c91c5eafb90fbcc61b6e6affab63ccd9d7cbacc9368b97acd6d375c2e9f4e972a4d96ed50ae0f66fb4e9e27a50dd143ce96d695b69f4e5bf34a7398cb2ccdb33587f1a022095aeca664ab352ccb540691af88ed93104ea63426bef09a892b36c80f3a516a48c8f8daf611440803aae081cfe87e4f0f97e7585afaea2f6fe997b4c93e63f56c32a530f0cf18d9ff7cc97f062a56cccbc621d6ec89cca27ab4f4e51be353e28f8f7ad787df7a8f94216b6abe6ccbaf2b63485a25f7b348daa64ba922699b6279ae48da66aa8421699ba8b285a46d8ee549696179f6e4fe139923f783f7cfcee7c7883113fa8ce2cf8840a89f091fa4a1a1f9d06774f9178152ffe20a358f0f92a1cf789f1481bc27c515cad296a5772dbd130da8ec5f0157b6c195fd3b36aa32fd9315fef9e29f35a83fcdf1cf1c973f77527fe678f913ccf43fcaa3a6da68ff93de5a547fd29c594120982f24f597aa4ce5b890b4cd96722451246df3548a2149db04cb93954f93faebbb644de5f1a2369a06d5b9c9eda53903d284e3c862fd9be6ced9934d93ea00a1f3bed3fdeab02f66895422b58889482de2b92620045ab9e5b2d4a848a9ddee496a54a4dcdb28776b3156b252c5dacac493acbd178571d7d97b3146759de7597b5118771dca83e1fb30aaeb3c0f9523c76472a2aca44d8ab442cddf7724a94dfa262799be89499bf489daa448323dd2269d65fa566e5f2ce55ce642596e57ac2875923e72424baa5191d247ada49314658aa54d5a73990ab549873295e5bec0d2b33ed246725f60c1552649546cb56e252b5592aa93caa422e1d02695d52395a871a84549327d475265550807ba94a98f362903daa44add1168936281e1479b9452c9d4479bb4a6d6efde6993e6c834a74d1ab6493daa43699b3447cd52d3d2dadd8da3b35428332ea91063fdc619c8fe5487f5ee97d9a33a0eebbe2355fdeaf1737f4dc36c537bffa7b17ffdebce05481db6043f7d2f07b13aae06727ff50f52bdb2d2d77781dcefd1e0616411400d23d350a94e13b1981432b484869e1c83998bc4bc07a9c8c2f734d4303229e4fd0e4b68e8c936f80da7d5ae5024f7d7ec913476499a2dd9e44924f77fa4155b48e5fb200eabd882d770df062fd760c3e8d97ea536ecdb2ea422013c872efae3102fb1406377efeea92b2dd0ded54f18973478bea5b54480a0cf689dbabb3b7677ecde5511a8519e578184211261f444156a18f907cd2001baff9e8a60792a1a5b2d1c3192fd2d901aebc806d231d3831e76a43b108f991eb461475a6b81d898e9c11b76e4bdf702b931d38338ec488c31c64070ccf460177664d7755dd701e962a607bdb023bb2227c2dd30521f2de5684977a8cabcae148b309e9628fb2702f162a6074db4b6db8b3bef7416c96ed455b12b5b2c7cdffd0a5fa744758a642a76a20a7608bf750d2c657f3b94bd94c17a0e2a01521c23e8f9785a99e94f96bfdabe2b39ecbe2dbbd11b1a6bb6619bcdc20f96a7672acff12b4f96579eaf94bdb75604b265d8663bc6d87bf73c201dbb6597f39792b1bedff26989724ba02dee70e3b6436e87b2f58af08d02a435270d129336bdd6ced6824acad0d91aa98d186dd8489dd43cde513a27d97ed784f234ada351188fb7dfd528ec84b7df25d11d3c6f4f5b84c29f564661f7e62f2250d3ff742b58509e9bb3330af379fb9688c276bc7dbf5198096fdf711496e3ed7b8ec2606fdf9728ace7edbb12dd61e3adfd1ea23c38de7e1ba1b01b6fbf8f509e9db7674fb6e69f66b66de2fc0e8551d837e4a23c35defe4861dfebed57ba43c7dbb79467c6dbf7284fcedb0f290f8dce96f137529b9eb464acd9997412ad79bea38e4279be23a8e9ef7f6f0e0b6bfeca354fa8d4e62502e50971404d14caf02e65ff6fc861a89c13396c94f9cbcd12a7f4075f642b83357c91323deb5977a251177551872f32a66c4f346a59cbbeef63d9f8be17b9cae00d5f240c98a52ef983387c912f39876c29419a21c458bf68d33f146bae76e18b54e59610506ba84dff534b1624b3e42f2023c6d38b4ce51eb2351bbaf91bb2c6769015271ad51bd8b4f6e9e543d2981d2a40c768644a4ea1cf78428d2814ca14be48171e644b26b34475fc9f5c29ad6caba415d2eaa8c85f31366f1353bed45ea8bc549191caa5acd4a46cfef29a13c85aabb4d38a88eeb0f1299bc3ae885242a144a36aabb6716c7169696909c317d9e22429696c697149b9b8b88c99073993c3511d1a9aaf463b6ac99672b8194c90902cf96af119572e22d00aa94d9f79b0aa2af5532a953aca4ada7c91a80c235bb2a51c8eeab45aae18a21824314962ac682b253333e39191a84d3ace52b65415ba82964b2aa57a51a96a2d4ff9041e3c3d4aa11d3ec6e37540f578ffef88ef08e6cf0f899604cb41cae47037aae31fd6562bd69fe12d6616732406490c0f7255d43a92929c4e964c29e594295b4d525434ce64fe1c67295bcaf652727494f219819056483095fae9e545047a396ad331264f195e2b25d9ffa75fe42ac98b14730eb225935992c9511d977797f7544c514c921825aa556dc5649524875c15bd9c5e4e67caf62165ffb04694c7df41b67cc8560fd942f2178c67065991b4e9950827aad0b97574c44beb286c69790f6fa7ae3381acb21b966cbce89075f6221ad5217f700c5f24883a52c264b4f9cb490b950bc5507c9896f0457e990609c3909b0c11c0d9b01267f0075dc217e9e519240358a2107f3015bec82ed3207dfce4902efcf09f410669d33f460c0255e18bc4398734ba4f83fc1ba4d08ddfe16337ca25f64759f3cc647ffafa6a1f7f7de178b015fa8c38f0ff34689f661c1f2302e1c041d6d5cb882cd832474634dbf4377b6444a31d1d3a74ccbc5e074933918c2bd5b12f2302990fb65aad3662bc390739939bb141cedca80ecc84f70f71e0d9f4fea152f3506a9adec13fc3dbec0892f0cf5392bffc4d205749fae5aba222c69a36fdbfcda3b1cee4e88ed7fbbbf8ad2387ddf7d39f29db2d5745aba257abe50a7dc619efca7997089483673ca6f1339e8a40345ea4cde3ec45b3fdf2ab34d2f17090318adaf4bf41c648d22fff1d32869236dd96bf3f5745ad9abfc6992d6705f8623a65ebc8a8dac02e578cd0677c7d0c11288608841f044f6badb5d55a5bad7d7dd7f8d75311a8c6ff740c71859aade71cd248e7699046431fd37954ce61aba251360a35cfebfdc7a1e6c138ef8946d45f495e644b09d9426ad3bf06d962d2a6ff2a78d666e36f0c7304c608cc50cd56b2f7276824fb9724cc256186fc65ca396c86c85f3e9a72b3fc3d49cad0649248991922379d664a99191231a8c5c145526a7632339821991992cccc3bb5deb6484a75bad21381ece939a63c634c59722af9048dc820c928c5e0428616a38aec8f82199a2192999d7032493233991acc91ec7f7bf4fc90b74aa459373c8020aad6dab6db6b4163c9eeb84cdf6fe397c378faed5e8bb167c3aefb72183dcf0bafb495b1be1cc6d31bdb0663fd50546126d3368d643a8ae215150a250255ea42892bd43c8e2d2dd6c54504aa65ca25d532a650a9542a15938a41673bd972dadc69b3fdbb6354c961e0d7f79bc34ca58d764ab25a8eac3113090e75b523b0287757eb3238b4c558ff04874092c64ce468848bb895b6f7f5b1f77e04ca63396085b2e4367384baeef3f077ef7722d0adf9d69456fc36fbfb3d3b04ceba1a38e4d59e6cd762232eb3dc55c01a6c3e1d67e4799f4cff9134d7faa6fa3fdd35a13cdd136af677272577bfe31c4b579e9ecbfd31af5ce2ffddd73206fffb1594390531fad36cdf735b33167fd0ec5f4516bc0c8fc69a3149f37702bdf254f3575ba73af6dbab6fa0a98e052bb58dc9ceb679ba6e0b3b51e9d7a976aa559863e957bfe3da6cc735edd3fd769961c749b92baa990e9e1d98093972746ee098f1f62e9da68c239b1a37264e521334255c17b030f711396cac9171646343ca14bd6cc898d7f77dacd70c1ccec6868429026743be64936c6169337753b67045e06ca4d468ada42bb8f06643a6320eb265abd19290c82213c81acb6163024963b4d30935a250a89b0de9a2836cd15a4954c75dae182c22d66cb5b4caad70377fbdfccb8c0a894635a3e1c1dd703825ba63c6ab66ab1b0e37e3358e2d2e2d2d2d616843b638494a1a5b5a5c522e2e2e63d641d2201db55ade904b86a325211dd95b914d8b4b4ee6c1aa4aa552371b12956f902d5a12d211d561b1625832199719ab8c4a6dde94a36aa63ad2b016161c0e77c3e1b0e4725770f994c7998b6d979149c9a45ffee5f3e8d8f99af892527f7e34596be9860ed9423a2a5252bdabfe65b5e42f1898a70d5bddde922aa22366a99a8db6d59fa34d3553cd6c6e70371c0e4b2e87b3c1d9d860b12157576e36a49875c816ad95d442a23a28d4c81a5a5d69d3df2457b796b0a54835a365ff50c961a3cd5feeae996b0807d9cad96c37ca160eb773a3c2e15ab8f0747a0f734539336eb7192f1b12145d337f61318145381bf2cb38e68d0de9e51b1bb2cb38e68d49e2bc0d89f358d43c364a1a88c8b28d7f3dce639cb7388f6f6e70de5a9ca7f9e6a6ec19716e707070ecab468d1a36356c6a1e6cb55a3837eb9034483433489a22aa03cbe9e2c37defa63fc3dc92bfaef4cb5bb3db8d0689eeb0517d0b17fea99add56379b1bd3bc797c836343daac9ae12387d1307a1565efcfd5cd3544b672aa57d9c2e166e0703636386f83e3d9248d5e8ff3fa71e6b0d56d2c4ad23c36ef3f1e8d4a9a07e7dd866c61c9b5beb8c9b8bd6cc8b6212b0e6743d26c92aa2338a48ae8a654cd6eaad9ed4ac35a587038193635324ab2069bcfb1a8a5e453685433d58cd56af2647533f3b9baf9941569f33932b9f993540b37d2b27fcbea8622cf1612d9ffd4c2e148563e5b381a21b2bf87c3e5701127e21f0b48400ad68aef65217765a5e6bd6d8166c1ca64f8decb82b7e8e00dad053ae30771e8a2003ce3ae2b69f0fbfdc407c2ac5ac0d3c78a5181a7ef0361562de0e963c5a8c0d3e7eec9cca042199727a646199767adbbb5f6de8b31eebace73f7646650a18ccb1353a38ccbb3969451c3c64bc60db9732347c60d792fc65dd7799ef77d9fc96402dd3d99195428e3f2c4d428e3f2ac2565d4b0f1927143eedcc8917143dedbe1e0c1a9c191a3b3a161e2c8d1b9b8984c20088661288ae2e97442a12c0ae55d511f08b36a014f1f2b46059e3e774f660615cab83c3135cab83c6b4919356cbc64dc903b377264dc90f7763878706a70e4e86c68983872742e2e3e3c545821f340c1e7070b3e78a0e0f34f45a0000ce06b0d800b7f02007e02e0c23f78a9d72a02c10ef02d0221e03bc883eeae80b722d00284c0fe8a403db107310dcdff745bec99c2183321759817b302fbb36f3d7ff615207f362ec89f9d3bc09ffd0502feec25217f761605fce9b205fce9420da0df5810e0cfc6417e170640f3672b71c162a954e31886417f3a5101fef42203fce9472ffce94809f8d39318f0a7d3ba580318b00005244008025e384010030029400f2c88002a7c99a6fc01b8f0ef72b1582ad53886a1f97d2250001e34853ea30b6f3281201886a118fa8c01785104fa17691e3c9dece9e45d4f336684a7d1a58b759200fcd947ada4853f1b29c9853fdb094d4a8d8a00e8b7103d44f6e181425661051f3f5898f1671771e172b1582ad538f6ad71b92597611a01900080fd09b1ff39e15300c0bb90c2f7f8f9167afcff0780e6cef001ea6101f623e6e3841500a0420af967470f149e07cdbfcbc562a954e388428940340f8ea1cf78c28f22500a3ff678b0a5a525f62e221000dee5e7c154e833d27c4a04fa4fcd7850a5b22a957755613c862e2a181cc342f367cdfd9ff58b1d7fd6a51e7fb6ec843f5b28853f7be8e7cf3612fbb36700f8b38f00fdd9445cc0feac5de42e074fc5fdbb582c95aae7cf3ef2f9b39178fcd9494dcb7f76cdc79f6dbb33807c0020967f5240e1841e3c76f83c4d4f0dac54e1cbb8ec7872fcbb5c2c964aa5528940383ec7bfbcc0c0c0ac562b168b851f8c89b13131de35c6c5e5255cc5dc18131c7fd6242726fc5969b51c7f562ab62a4a5674d0af48d4176452c6cdab868d9c9d1b2eef72b158b9a596f550cf9ac8621d248db779f3713e0759f326901d0eec2ea4cedfa0d99991636383460d9c9759d6dc7432f0bfcbc562b1582210b6f9181108e7636a1e949191a1f12d71859a4dfc2e11a87b97cb833162d81831bc6b8c7b63c2968dd12c555685ca3feb50cd9f7566f3673d82f3672532ffac48f28c3f6bd19f3589ce9ff588e64f9a844c1f03ff9e6b862eb9fecf9a44fe596932feacb5b3daaad2596feea2934363c6cbc4b9b1a99151921dfe1a9af296de8cebdfe56ab5442019d7bb5c31628840dea74699fbe0777d6b3d561325d3cf327fd21aa5d2fa93daa892eb4f6a85dee8158aa35832fdc0530bcc2a9cdca8b4aa5b4a821c64a848460000000023180000200c06045918255118ca3d1480115eac4c5c54341b89c224465118844108116300010000000821c62044432b088a590a1be880bb2923038096e8657a58b5417159d329ae1bc189779f63db04b68678155751099af60b4bb443374216f43782cd81b43af4cd1e5c374565eb55dceaf8490c759b6e7d56be747019a3dbc470c89d7e77192afeb0819e095e60a2b440a0ccb952c4368e0f2d337c9116837d05fabd513e0434845582e731f14a684a9870f6a8ab42cef508ab4a2b53f7634137bb32b3b4ae5469ededfb01d6a675e6d3bac5d24f30e34f5c317f080bf220d930a99583b4ef69a9f307e060e1217af5074849adb3959587febc7fe8297a6d1e723eadbc8fdefd603facea0716bb4983d03b62acfac1597456195cfdfa50a05c6f0b0a592c7a92dc81d1838de9cdf77e01765eba33216dce352eafcdcc35cea61e8015ee15a24de3f701670048cd0aa41e37cd4d01e0d24706a4f6b5a5e262e682bfa1cb8121eda3203a45c50065a7bf643e2c901fd2a2228423f34df81b8e152c3e18b1ba72eb419ba39cf954afff1940e9559b110adb6bb65642d3fdbccb8c35caedf366d2a10fd29a578ad6645946ae42f339d15ce573535b3f530f5d2fc07ba372e09236a56de3b652756c21a09bfccd86251196f42e64ff2727a54d29bcf517d4386b98fc6b5af15dfc32a57a6acaa72282c235033676fb9baffa1164cd3223a1e3ac143ba1127bcbab65378910131bc70511170d7c3e325c73df057713abe8173eedf77f48f7f94ed9c7b562d2b60e2311bbc2828e3301813a1c0a7ae2fbeb0c00cbd0a410ad0edf486cbe5a2786d71d013da9031102e35f292b5b91c3182700120abafb64286e75a3b103a91e03b2bc22dde6190c8ea1c5375712b25676e09e8c1213310842f60e151b04f2e870bb850588690bd8924184b3dd4e0630a0855feaa9b679597d17fb1b978e15c7abfcbbc78a42713150462ee760b27d0fd51fff6ca3ded6b03d499fd42f530a4f59132bd3a8d34a818c799f465b82e3b706efe839a6bac4c7d2ddd8bc079a0a9df4673f17a356b823bed9471469c886376baf050aa940a7b09cd7fec4444ddb50768434a859bbf58054c8192b414fba0c6610624cd62f34682f32ea0ea2dfc26af2f1ccfbccda4545ea3205d2dc1c70661fdbfd195adee5764c9f050f70d9db1286623abe280774457a2cd82dd23805c86e579165e427c09e96db6828d628e9b85a03ca0393ae27ebfde043e17fa332c5810b4dd2532710ca92f28d73d1d342fc8451a5b3ebc300aeab2f41a21ce64341e59eb52c2e39fde6be25a106fe309972b5d0c94290302577f2cbc0ec3fd64275331ffb24f80ecb88006f4254e7593378a4b2372f9bebf4bacfba28f7efe80b0a25d6131198a383746f8434a09a25dcc1cdbf117007123266052b5bec0520ccc49c8139e0b99186bdde8e20cc51b3c8aba5cd27e5163d5046a24609a589a49a223486ce898485aeda38b87f9a48304eab39644d24dcf7a8ab40d1fc6b85a8d61e5ead4a568893612e9051baa1a85f2640d32a13fa77cfe73221d3033dd26c9820fc500e41e180b2b04c10571738b503578c1a75531a70cf39c5915540912ea06e020a6bab808daa8ef509711263ae169f05647d02cc3b0141774f383738e6d720640c744c9f20d2117153dde1117d468c943e8f10615fdd89d43fe8bb93dd0e9cbd4e312361de7d778b1aa6368ef896b38f05a9f56d2557ffd4cdef287378562223b6af52ef1929858ab2a3af990bc3856ef0b1574c6be03efb51d5132433ec19ace804a533d020ca8fd852fc0f431beb944ec0754731c216f7d0badad00326b6450f05e4243a332c904a58a9644bb4887b8522fa57d92388f7aef863c439e0fe80577065c4719c5dcbc0137a059a6bf061d715b453c937eb8f9f8dd201884c78ab864d15c1b6a8d6d0ae4507b6a92dc77c8944812a936de917199b3549c4e05f3c2cd530ed2c202d7c4e2adf3ab4103158f535189e85a2c2c775d286a2deab90a8fcd195cbe8ae950559473ace3b3708e4ee6552c99160f76d80dfc03a8a105c60cbb10b12abde3b94edaec0851e8c731fdeaa04c25ec7558940ec331c547ade07f9fac7d880e2a223e3ead1b5d23019451baf3b74dcca69705e3db86774aa0929c45562075131a06ba634eb8528a3dc81d14b9de80e6816c626a2bb1e207b7b105c10b038b7a8c6a894342d2ea26a96d4930b113bfc69182c7a361815f5b8cb3c3e7c507cc397448957955cf84f0ab6a46236bf80c91683d2678a4d0fe076b1ab202255474437bae201bfc05b2658d00d26a0c0cf3830609361425152e224184f094a3ddbf10b130d87645de12b408d638b39309049a19aee95082708c2194be7faa1e80247e3ca52cfdff2a819a801aa632c377662e096007b298978ba0358808f06c039aba68841d1a75a10dd8b01de3ad2a8b1ccfb62901b1306ae186c122610eb0eda808180535ca1a7263e1579f4405c40b8e7bff7dcedd5056a30e5758fc350cfbe39ccb1f65606c9b63191bc66777d405919586bbe48c25cc8de99b6f6d0d33b5df75c3b2b837915a6992e4c858a98907aff944dbb518b7c9fdaa9aab74a521b79f4b6a24021e39ac80231dd4009c4640295ebe953b8a42d163050d683b88d55e1621a24996152654b04700947112bb884f8278c44009006de2e1271e4c0025adf489b210d3a2ebc49ded210d240f70d11f2246da52ccb789d60e40906ad8a7ce6ef9404016908c6b56ba0c24c7b555a609519d7f0c8ae21a75fc3ae4fc6a9fcccbf06a18df0302b888649943448c16b58214672cff01fbc8644e848e835d0bd0243efc78578d5d3100e6c18ffff14078262d7e4858fbd0628d535c490353cbaec88f81a08062a871d71a884220ce81b7b8b80202d7780a261950e84092a75c37f30b5151d067b92be0c30f63383ae8000b68f0d9224fb28ccef1d097c09825726724bf17b0a27798285c35d4bf612af2647057671dd285daa516d3f68c96e0ece084fe92c5f8276ca7df6286c59d60e6e0447f11e8a07e106ef53b3d1e1afb08d5d0dbb1369960acafa09b9cd9f957603505ee1c65726cc2dc9dac3a8285222da0f7c3da56174f1e46e9b89b9e209a4ae77fdb870ed35122904565e20e6d526823d4b71e3a818222dda0f6e79a57174f57269976f6780a5b5a03aad054bb1a81e3b7a36b86370275bfdf1823d503169c7c7b889e3b732dbb61778b65fb270786d40ef91522d657205a993c494f198b8feb116bdf8452b02151ee36545883f4cf62fb97a0ae764e57ca061ae9fa808a6e0410212aa5681113549778fa2f53d963ae1d9aa3c1f8dd2b19eb12eaaea63d01ce041db752e3abd772e21c89bccc1215ab2006c411f28e36d474ae3380c1e9824fd96a2be0456511f33c5c42053f46e29b45deb6033d4ba0282ee0d674b93e634e00787113f2d4550ae90035fecd0f6a1ff8c31d094ab7f57422ae8abf55edec9eaf439ebd038fe6430a68146dbb3759ae9ca3eae64c326834a495f15e7902c9ee666384bb40e5c5b9cb7e08e9f700ebd31970d4eb13f641e07bc105caa387894c89b5a3364e298e9fd29f054dd66343d55e9977f7b4e1aaf6ce25ba90f63ba9c21384080023570d961d8288aef0c03b8729921c2a67b291fa891061e0cf43720fb56d0a956a3f742f10b1ae86b7251c6dac690a1a0af8a1436a82256131563e814c835fd7910e27baa6f29196209c428418b71d6a523b075b4024dc44c115015abc5003a1664f866aa663ac341ec9cb384d6817b8bf3467015274010bf38420801bfcf45a7f74b462adc8a3f8a7cf588c32e7ca7eef70905161fcd577d97d373a0a2ef6a7df6db53235adf6756e047ecd269114471e0e311e13aeddf9966a87f14f6d5d83aa72588f47baaaf61f81fbb97a802723d6d1160ede71dd0f6333a9d1b766e0f6b06b8bea9db1cca9a87993967c996039736e76de1f8488078bc51a09200139a1fe0b1489e4d4f2c648df398086261887555ea721e6396a35646f73d5682f5b2d784d6ca78e3082590d1adbc54470050fd11a709a62012793dbd0af503a89a1d841838d2db755a403a04ff0889a50f50935d238d811d441dec3ae65689f5d05eadfcb1935c0d0d31085832bb18853d173848ea283f8cb785b9fd06def84c311029cc14234a355b18749beb80ce1a3883f103c6a1df66e4733af7c8a634f811b95d6121c07ce2b3ff854e5c5f56266ae3fcf79464e1ed9c1937a061cd8cd93b7cd384ce858ee6ded55e3f0b23bbdf0b5467561061670004704e275487f1232ed8e327e4eab451ec3f9954bf63152876eb9e12754bb60b873c27839a0b9acc341322391918d3a481ed6d9cf67c31fb40da90429d71923ab03cd8142c83857773334e296d733db00ede6d7c7050725043b33681120f3c143ac49e356c0dbe50d91b9eb1ee87511b1444afd2043293b0ae12b894c7adfe28a9c529d80f8feb0ec06dea7c25fc0e66df7e7abdfcf78eb8a0e3b61e720a64c18d1b1bb30be944c13dd7e51d00a96e0ee2a7afef248e89285bd3311be0265522649a8d88ec05c9f25a664b550214ea1fb0c8383049db3044f04c8da434aa207434407239bf2f07273e9fb1627121fa1a2700166f98de8239852bcf5a1d255da404bca3d84da6f972f8847b7b4543a9334e6e2a6681169b4ba67f1495292f84988399c4de476593be3f369d742c3a7c34d1de497384efb4c980c6b1d30abee50711bc236fa1ad7e82e5fafe18beff13c1dcb0fbc167fcf68bd8b03d4db24f02b8a2b52431dfe062b2545866186c6ad54efe45a0d20447c535e8fcd4cd07c34cde351fcbb0060868d5405bcba0d219e8742f5499ee0e1c61eaa0ca2486c43f173a410b34710f392b017c6f8f5f9e2f02ab02fe88a098a9d99f603edee8f503d36fc50cab64b46d2eef3207af21b4d143ea6e39eccfc7931195d65f293fe04648acc5d6d6fbb50411018ceb3c0cc81a2fb4a9603963df860b8c89f1a4b5ed601bd665e7ff6162fc14c5ffed2b820867fd74e436fd892e3fe8d19c7f8a3e7d40352bc825f68022b341a9fcd2006eec888a4bd0ed0caf033926784a506c1a27d2e27821d88881d6733b1b81d626ac55a013866f85159dbdce385cd42052f04c473ba527ec22a09edf041751f1f6a4be404e23de9393c26d3e3e831b913c7c5a89afcf860a02473aa594de8e5ebee70c5c62948350d4c8cdc31f271446c9572cb9f41552262c49bff1f346026421def063a83d6f0a630929edbb699c89918adb42e34f804489be2c3f6c503d823c5aa5ff12c0b2e892281cb157ff2e17dc7fc36a5c1231b6052d47e1ccd61b3b5a11103edaa2532960638a34f61c92bdf74b013cb296f437284a0956dec9ca47d6f6c9ab28c5ca5bf10efc9f9de77f4964ca2554428c8c8cc82239b28b1ebee5a4485a020139073486e0d0f039f3474f4d197cd0a75b140d53e241d154f910ccf3d494911b6839b225c088b359a27f414a68a392941ba78e74837fd6650ec340f950378e9d624d76ecf7dd8debea28afb5546f7c96769192506951c55d1cbc88d3d7446d79386e030fe0e72c72e1cb62baa7c01af5241db20c48757c2c439e5610876d630ed8eba49168209dd0f20d6b71b307eff6d2b2adcb7b1b0b83d610223dbdd3c74074ecf1a92a67f7390fb22fcefbb84acd8d730b9e2aac3daa42704c08d5d3fcdbb97c9e6b03950a0a9eb00f1662114d2098e9f51b4e84c8bfc6fe8158300b096c67215dcfb9232a09512a7f5c091f9135472005ceaf536a4338d70135b1bcb9fcb9520c6b3f45e85eafc93664c70c96a79ce202197112d2e65eaa147bfccdcb64ef8c2aa06e38013a8c01b02f0f5d1143428c1b0a404b8f2aeca58bc23443502e9bfbeae28319a61d17beeeab019b9deaeaab0e1dc42acb8f0eb68aa588576cfca010797050af8810d99e17f605a9d5133a4dcd70a5cb696cf2f4ce3aca477fb7ffa0191308f7775018c4275d15ccb8736559e98663beab06b6ec3e9f88a534a23ed2086939883eeec87459504249e66ea0a6baa1c86490f2bc99c890a6fc8c57d1f9889746082b96ae486e7f1837472b15847cb22c04d84c20fd87055bd90307f820fa03e35ecb79d0d71b91588ed1edef141285f6bc127c23807b4701221fe16d932b1e05fc51b32c8f0011eb180f470ff44bc68e29f51a807efdd1fa6e875d652922838250cf25906a7d9b039746ea1309f902a63e6f7d90a1a9771ec3fe3e4336f497f9f4530af12c2ca78cae8a23762c2e3748f4b22ae75f67cfc57f42014c80a7be7fdb20ad601e3057f58cbbc621baea27bdd528b57051b8690dd653688a121b6e25a789012f26d8065e08993fbff2a3a460651130b66702475fd2e761989e3ecacc3d59ef16bfd597c59b95dfc29173446f60fd06e79c8b6fee45e9dd40c83727e10321d97b3788f2cf81efe43ca969bb6d4e73e693239fcde58371a22e061e0958491506b318414bd69f1acb8388cf22909e95ec09c596740c0c65770311824a86b2837f9f4848c89951ff9677fbeff219d41215cdda64704e65df87d353852e98781b82f32bb311a2db6f4e9d905eaa91dcdb097168dd339303e69eac8cd9efd44bb448f7f3529e3de03fca96c552438e0c33956e7c46a8c256458a113a73c4dd495eb8a90aba6d6c8d225c987502b01d97816a28d6d70ac1c736e1b0670681a65dc85fd7f80dbf5442299dbebe6432302194931a661aa96cbea2b33b1b0acf4233a4503ea242c62e0c028c43f1abf0d904cdea846223c21c4a0902f78d91b02a2f344031636f876f70bbabd5fea06370ec61e4643e6c5e5f90bd225a918e5bd9f1cc47c7f3f315a506918a653cad2090036546b040d0c5e64d5883e2bc004d870e0f22504122f9547befdc5ef7c1282611c031ec1dccbb3dad5832138d5cd4784f9f2d8811bc4f6a642d20d222f720f1de6573e05d081e24b786b338d4603b7a478f7c2beb3aa1b205d371025de63c8e5affb29bed6023b6cb46f93ac265e1188a8076f916f26060c3418efde970521721e4a5d395840bad2367de892fcb9f28ec9d1f033b77245c98d3c84bb00e6c3fbbbf6371606c76b39c1db53116e88c9d4ec868c3dd71dcbb07240285d3d1f45e75fe125bc3e3101d1ecb12b38e510a62f12bf881c6928e3e7a12f9cd8f681456d392de24a9ca38f9861a64b137e0511388cd0301fb3d170ff7996b6a57be4f23e75185d48e7f4edf18c5971a32bd8bcb7b4d8aca29deef7b787549b3d9a3259b700031800512158b7a209e5872ad8abb6aef4503ddd1b6311879e415936a9e46e89b80b53e775a0bbcf59905e54ca09f8ad550407d470e99cc3d1aafc35068f2b2810d27ba9c2f33a38324106009b43902552749a0cf60569e2be91627b7a722dbcd2146f0df50ca93220632309848e850a0bf752d8172f3823e04617bbaa1a170b9072994178f0e0a5643079de072d472220b6795e35efc413c84b6ccdce05fdca8e02e0a46722b007a06e9767782cc78bbe4fdb15e89f1a22870dd938e237f50d5abaec618c22ed87033c448531c359bd2062cdbff5f042573fb9b72cffed5db699f388da1dbac50ba3c2e1b3fab19d4a84523641d8a2238388b4595680c6f1992dd85ea00f8ba41e0d8478d88466e0d0fe061e9811c1e21fc84eda818b787d6ca19f4ae93d867e871bbfa4a813161813f88ec4d9625a26148195741746c89c66898f90ec67468545630fde0d798711731629c60243da3d8bccd4106cc76983b99c5ae6be07f0824057780f5bb8080c7d0be6931167102f93730f43135c98913547fd462f90f42c34f8d62045f556a0f41b8548bf6ad51f4ea4d8bf77c28205725279bfc35e2c018508ce6600361a3bf5c3c6a77d38698fdfba8d2c245cd5a87f690946ccfd166477cc981ad3a36ef611a6fb577dfb68dbda44d91d99acb012c9f2130169217154a84ba32c7a650ef847c4b41f90860f0f283b61a8c0dafc9131f60b5d81a166df5088cd45c8263b77dc4fe6a9d0923efb73340c6575641299a5a72ac93d0b82c56cc32aaa6df735ae524d36f7ffd840bd5c36dc053e76027d361124b2a68496083264c93a06a3e405c27502b4205bf50a9122e7f164a868ec652f4d59a8a055fb2ba31cb0305d8866560b06d84d8f26f3b3076c66bc57fb28b3c0cd58c1510fbbf0c9960186743957dc4805b94bd93887c38899f2a5f0047aa043e2a81254f0791a17e4f40440a0622584e49de9d612b57e642e976652f0f0686940444adb367ec2efcba4e287747517fbc0e580cb7a7b715ed02e4ef6a4cebd80281fd963f0c6c0e07ba495618f9572d99b1bfd530963ad851abcebe87e6ac3ab4e9ae5299aa46271b9ed964a858b1cea84dfbc508ffc716861612e5ba94750347c4f6bf11f22111a264847ec6bb1ac57f58a01250170cc02b61828f3a81759cf318a6bce151f0acc4759bf146f6125a649586df61c54a0b97a12c384f0a457d61e968d289cc0eb711fc24eebfb431b0f2b633e0fe9ea80b4cc01cd31f04e8cceb7e166df5cc792330ab98df2c55fa521d58e2107c7a4bfa0c50029bd6ef4534f6d05d20a00f8d7dc49d0f5de24872ff5d5ce617325d05e853e008add7a8c14d67ee6a98d85ab1b62ba5c74577cce6f8eccc28e7844450de4d1ec57fe9c1c405c1a07de639b628787b03a4d5d00aea5070bd87680c3edca9b1a680ddf13650919c61da285dbb51837a4a64ffce6e4bc2d0bfac44aa1feca83bce0f5f97dd5a1d6ff3fa4e9b64d914e81054ff6859f4f3d725d871a132cae3bda9bf944f0510bdbffc681a64aaf3b05fd9f88ac32660bb451161e75ee0f1658b5e834b360b7f89854bebc78f5f8635269b5c129a3fbd37efdeff416f22fc3fa2d95fe4fe8e8b61be9b123415e457e3fe85ecb852675960f19e1f0ca6ec5f0013375316aece7e73afef01a6b8343203f4eccb1760bac7349f9f8358a836506e014c27cacd1a160b131b804193b958ba3ec13eac8da82b2261973bf10e27de589bdc2a5ecdcdaf9c0c115011696710241f3831827e87d1e17cb72b44d3441e628b2f4480ed19e8895a6f503682313a8b98bf4587e39a89f66eebb9470ae079da12c7c0d714525542add58782088a0f1a9a67a16d219f84c93d030d47b3158726b686ceae549bbdb7e9cf8c540b7a2fa99dba4e873e33b2eae61950cee90c42dee5124532c2864804d6bc5f22bb171653809cbcbb8011b49b38792bf3e1e4394f0a94aa6ff2e4c78d3864b8cd7525c0baa6678ee5cbe6bc18362886f54156ca76e2da23f6938b8994f0b61965f8feda791d828e9f7cb9fdd6b00068a4bf00c630eb2c8e2b0ad5d2696349916aa007cae1871eff0a77f5ce6d6e63679932ac6156b21f8b8c0265d5148fa77acfefe4198644fee66277b7ca0b77b496c87a122148ded5c2d31a630599c609b495a9984dfcbcd1433fad1bf5642da26e6e033d9c26d00861e21ef7917860bc25369446b3a25ac2df751cdb08ee86c65eefb08d443083378fa93993a9e863172f9b019a2b3baf2d69db66dc88189b2b262f7af779b4ac40e4376cf87c6f5b1e3666529481a5403edec0fd55d56e5e3e5defd35588010b6f806d0b97895c9ae2a5ed23b96da4dc3ceebbd3c5b98f0df68c09082bbecf9d29d97da1cb955fab496a899394425809fc380b0b8a00940d152b54984636b9ddc2c2549fc5e4728df3d806acb5a000ef1035f2f6b90efd009df94ce32b9f2af11bad4fb4de5c93c70ebda440999ff1d43c0985ad097728488b9097c842f7d7012e3fe04715001eaf13815105728276cd640aa60e4ca6a640a77898bc8879ca4340ca41a1f12766ac8861215298f9450128b4e45dfec141491f7fe356f43bde2fd0881d7debd6aec9f0c54d25f92833b106f2c11555ce7661d4a79d26ef9133625c35a853d59d03966be2ecab46073865a3bfd359532bc16724cf17b037117ddeca97ee908a7b91c56559321fc0e07d423dfa1ee79eb4db0d0807ce98661558d1f429b5cc3a6f2f127d0ee1f5445d443f137dcb2a116e6bb3d67da006dcb0363560616b0a2e3120301543edf9f85af92eb459bd19af28d527507902076057807790fed78b40a6295fd1f6c7f22ba9195e9dc4439225b78e6e06cd0cd2795e1f6f98d864eb30a733c8357467218ce33da975b75bf826cde732a986b82f454236e3f93c4aecb12cc2bf3917816fd216e28b47f7a49f9892c240c603f9b230517b41fb405becd00b28deaad32326df9e37a675b27eb9b3ec8a97810fb8457113553520ba6b8cc8b25dd398dd18902716bc0fbf315b645ddb601bfb206f653aca7e949b118f38707b32a98f158566f00bb792c8513148b03e9fb31ab5a25e768b6bebb976a38bd6316a86d86971fdcc59a1fed64519f56c3ffaefc70271d322354319d2cecf2536c13cb4febe3e026e21889629c5abf2bc88ec89619b8c152ae78345168e98cb41e8b7d47c8413ba4f16f34129c7baae017a10af6601a7c2b9dcf8bf09601ce0ea3972de0ca0b191cdc1ab6bd8ae95f7bec2dcafca77186b150f7d5a7c5be83d9d82054878d726455428e844e4fad728a2cb0e6b0fab043eed16d79fca6899380d0600ba5ddc8c723c364f0e115199636bdb9e6f83054dc74bbdba104fa14f3c3fda79d826efd5868676d3d6e1736b6b83b6ea26331ee490b82fab5b25cd904539eaea80f062b5828b5bcfb3fe0de812196237a11ddfe5f26e96b3bb6b654106110fe816352d77b842de66853bb1a7119fb371dd3ad9c60e8825d040036f867768a3022e2c5d2d129d8d04e1451159a3bdc6a3ce067fdae5321cba507cee4ead6a514a1e81c05f1a576226d68c4d2009e422440994d24ff786905ed76a9b8ce446efbf803e77ae2d0512a6970dfc80cef9a3d6fcaa06f496ad74e375d06717c0741d31ab75b2d27be7a1bcaf1b297407442aea2745ecae903301e6223145225841256cd1699d022e26e76ea52ca206d0a14f7086aa3b2d52a38df16c51322b77cecd1bfe7848b8e9a4820b001ab1c3bd99a3031d53f03c40dc39131aeeb969cb5100613fcedc27f2b13da9fe1a1bf8c4797d90e3ae79d821870f090bedf8b6d06e34a9bbe4306e86faa2ea59b460be1a9becc3fc0520d2869bc8f45aa8fdbf7e4ebdb27613c8a9cd6d3f6ecf7afea6218909883c3fd1c51f7b9492aa4c633d4271a8187a9b4a3b64f8a23949228c59cea50503913e1ee8b62464558896ac876487120452a0f551e6d66a8659522d9892583765add0263dd658353bed579da720c2ad2626cdb99c3617c806dcfa62c3b421c034046e6b5473f6e0446be6784ec8d9340b29aad3a2f47a0d7e97183e148848379a2610f94fb1d4e2ddda36754b0440703181cd86d32ab2044b3e16dc85a697dcf83349e3ec18fa183096494caf780db7cfe1018ffd6f70f895ce6f26523f5590520389ebe024694740a6451f53d7c41095fb48cfa47deef06ddeda4ab75e8da3eb9c2af90ff9693d358836429b916ccc205c4a0ee04be30b0de5d61f218d84f19ade435017ef18c0d146691ba88454a2e50f1c69a2892a6870a89aa5c938b226984c70fc6495b27eae33ffeb53e15386b2c29aab4ba8ef488d4a2fcc3bd0394b699080d6c5a036692d7995234a0fe8f3efd265f40c159a2a90a4c722284a52b4cdcea9c7dfb260a709716327c04eed37d6d0522aa9342702ab1da0549cd5683160d03f8aa273156b17b601c29f54093bfaf66b763216320644e9d6a5a2f6f4c4c13914be9f2af3fac8fd06f3ed1d63f339f41adf6280e4f4970f94d42bece88c7094bfff963ca92c7d7e5242ae47d00b925d85772f0180e84ece4321d254541eaa01749f9b56b613c56f86f0d8ec437b1e36d29951faf6f59194ad46ac92d074d5dfd7a9b7d626362f912e03277a558091022dee1588f10aca150f0aae90f81aa1bd023adb1ad4cb29189c8a37fd0e417f368c28cc555d56430591fa3b041b2f312db3fe912d10f15611e498f6f1e8b4f592dd535aa6a90f94ab3a0b09b3c814111457b2b874171f3af994f2a5abdae8611f192a96855326aae13b8c6cdd48b4cb50c608f661d6418ea9404e4ded827d2022c932d4f62331e9c182e6a5c00aeea6c321f0a43aa82c587409e8836a3dafcfeaad37b27ce2658f84c3b9dc9cb445e8f4b0fa1c5fc9f646c16b130ffdac5c4b8fc4b0b6bcb49b9c21f1e88a9263de8c99c642405e775aa3b0aef571c82b0ca7b80fb2fd3ea093023aedff03c3f4641f6a01a9bfb77e528324915c52e874ffc2f7bb6e88cb31bc1a314719461783151709fc384ba71e69df44e042e6113a5aa9bd5ac70862421e2a77a21ac7b59390614a1bcc669601cbb8133258b156954142c81dc3be3571d6887fe4feb5798dec8cbe2f10b40d8d403cc23ed7c4f829a9eb00f9a2a4a8e81210ca7c469cb61885f348b460d775349f7a05dbc057669d117ba66ca1982ccde39a4097651c08acc30981395a384d449b7d5870178ffa750a860e488e7bb358acf543708d05ccda0f6329c9a7791313a6bee4e89fff06788d63627c5d14935324a285e077a7e7c4f4b55790fa2333c447036ee0fec3aed4eeff70a5713e07616562a649f9f6568d5268504ba129cca7d594b757e9bf615e6a7867845027cbab2a9a6c07e93b3be997dbd501d22814ed681756a3ecc70507e611c97bc68ccc6701cf1160522a1012d0f82b5acbe402629ce628b6a03ea45b9c643f22e5f3637aa321a2fe4fa637f9c0ebd03e796fe19e7e64871bd4b84e5bf66b6d7f10b60a0fb83bfce86fe824070642075f06ed3205a586d0a41de01621c96e504c4041500eaab4752bf827626771afcf684212c8014d71cbbea9e4102bb4eeb411388995b50a5fa1180be6563c5d4f02b57d777cb1e33b5494ec379e648fe52eb8f6b85e1240ee1bf2a079ba030a4b0bd05dbe71b30561b8353204210e16f741a53643d364ff63407fd21cb1f5f217fbf8cfcfba2b1f4c16cb49c8ee383f3ac836c6c9a95ddf0ee6a2899619f26b2ab673088dfd8e5a59c0c7151619cac51f4b89d9f5214f4dc8c46a3dfb08f46d1935b23f977bd18e00e36fab8d71b87cf1c6628d559bcd1478af95f30fb83e8b902b7e62ad2a293d8e67237e74c229ae02a547c6e4fd15a56fdadcc0220996a43473b6bc1877d3ae5ed96c806538cb07e418e928b81d4b4b4840a0154669b19127136044f8d0f09a152bfe2d0091c2ea30db8de14a5dc161b28d7b8859f087f253345cc5bc66ef65b810ef70cc8d84c959f7076744ba742db7d6a43e5962b5d1d7a4baa79f017a0fa2fec6783ada2dc610812e188cc619aef6622c1bd5e887007c302b92ced128f8a9a024fd3478b20e47878884c844ef2da910fd7691b17b8a667a7be96531aa5a99d0c9226174e6279c878b33ed8d71b6b316e57e1fa811bbfd8836a23c2e22be95017706d77c2a38ea921adaf9a9ef4771814973e8b8a4563fea6b6db8b45d669136be4defe612ce3472618083ecbbfc1855a0f136b5058eb9a31c1473f7d589ed5168900b6e11b5729d450f441c94d1a90bf61f24a939289b22662fb7134b1ef807cebdf8d2e4a22dc0787c01466220c9388a4c639712ad5d55635671cb0b3b8af9ee2d51694483d924f4e163828d44613189d74e323dfbc1e1b3994718c1fa94042709ac5c8dbf5fcfb1282c02d3e6271aa71a9657913257b1e6c3d69a34076ff26109837b678e3e9f944c434eb6b6c5b81e74e5d89b4e0cca9e94d0c4f03c81b29e352d0c1349138e34279684665de234a917bb059d48db32955bf20d52ca790f97d811e9aabad25d1e73a43d9321cbd8e5e74a12398dbf8eef0bbd5d6357bc3c2218ad49856e54d3c1e2294e7f26b806246af8fe1763cc5521add02aeed0b00d2aa155e8cc5f201726dadd475bb06c5118da39938734297a7901de09de39c47141423259aa9a7c08b8d61888d98d098fdd616820d97104a9c2fdf509b4584ca48404b7431d11fc5d2fcea30eb723b8cf0d35820a88278a434b3aa661cf7c4d32d54c1a3b1c5354c63867e0396481f94ddb4aafb6646cd7b05a5923d531dbf658e92c4c12020a4b2f74c622598b4718aa9db1313be94d65be14be1c42635f0e01fa8f9ce28bf76594c10d78f5c7190793d1bf46382e081384ff0f1fa662447abc1092d51f86d93e442c0c4508738eb1cceb52789a22a110e1a91d7f5871ec33b30151014150417b3e7511c49b836c74d080767682ba80a0c7bf83205e08c8c95a46467d0a9555075b4b3eeb393b0d25d9ed579b30b230afd4c35f19da82793ecc41547f5532ff709575384fc19c89d800ba0f61b63b27b8dd5d617ba41eff7f64c7e03ae388b8e7196b4fc210724861c9f26613d8ebfdde1115e1efd6d1b2c9cc22aa7475777c7444525e092433602792be5504e817577aa7998789f955140c796adb6b8de59e41635c79f15b5c11afb80c63dd99d441650e2ce2440eb997eb0e0137c73a505512c4f2cbba01d2b6dc2fbc71124e73b610846db99238a0817109cf7d74fcf057256e3edac7871977ed6229daa11de1f78629df5ad3aa5c93e6af7758e75228401917dcb3b2d28c1ad8c2ef8e52799f880f92732c74ae2225a6f367f3883d4f8dba66df28e0a1814b505a670a85e1d4941814374a3414b39f0797b518b0c23bb9fad2e39303eb0a1681e2e1860f9334d6a9d482a55470085a87e1ccf820c89164f45722a10307f9c6c057b199c0010f47896c50db97fffeca6e633b9e59785a4307cfd3af2fe44b9a70380d67c72cb6d91d92339e0e15a15f23588605717605be050e63d6eb9ba412c9ad405ea76f3a51795dfe02e918898a10281fde603326c56976ac1c1661df82fc138b04065fcc187dda4ba589966fba864e40160e56dd60fe50056dce21a760048e2a88d55c53d95e3ffea65705ba88457b2f641a3d00bd8099b34ab72dddc3ae16f4b4930e5b973070a2e9df811b770d7b8961fa16a2052c6baf05c50266a4d7b72969c387f6f3bfa9eb4900b490becf900ca504a9f1b298ada4b8f0d888d7d60b8d9ca2303a9c7224711dec8709d382e53d43569722aa22e072c78ff089775308ea21c6812c6c12d1aa6115334154f65c8a891c0cd4f9ac9663ea1a40b97b6b171ca525d6d123565dcf5bc5c84f76fcc7dbf2736f7decc5f1fa599f548d91f94e1c211c66f1cd856004098abf21221e811415faa198deb1912c27c57dcbc9c0880b8ee47090762bdf7d1c71befc7c5094f81d8076893dc8cbb0c02c45bf8e06db85e55cb39d62f72e4a7ea05f77ba60f39b7fd1e28e45eaf1f0d74288a26f8a68e275433f50a008fc44f8b3085060d8dd49c1efc4461dc0e13007d55669af810f084a688ac49141f33f7c4a1a05e9aa5b080c457ca1e533c45dea57cc45eff1a03f52b219904dfa0a7032ba99845ee7465f932966d156795fe817fedb1e0396aa44f93b4ed47da85f3e0b09a46562f3aa3c380048edd6a0da12d9e5d284175a8df0b0ede93d16e88c3d74b74193c24a048843c333f7cf4de6b80a40a68c81d88963b8d408643be1146e598845fabccaa8955419be05cfc19e180753e79511ca5c1c2396c3955956db3707d1344ff4581f85de50083f9ee4e0e9016c7db64900b52a88bdb0bd3c9201c8f34d5e449bd0aaf418098fe0d0cacd0eb80287f9f02a7198006288ef5c421239854c642c0381e314e45b0f7fd08d5b3058e242eace1f06584c34baddf1757e8bdc3c06f194b89a6b2a2eb496e46ce67b6c1af422b1545fba0f5d2d9ffffccea2477564d9f6276056660837e3814ce83f20c91dc9fd14507e8fc9529854962234f23ecc336ffb072c4292e127ac63b2738554bc560086f5fd6782c958bb47a71a9bdb3b47a39fd7e0c0bf9a3c6ff39ae5faffacd3ab31181903a88d8e4275d6191932f762aaa8a71a954b5a213d921f760ec84e9ff1e1819e4b2f05a5b1fe8892be4798c77d766c1c980a93e482dcd797b00847479fb64115f0e27f8386c9e73306baefa11d13165bdfc52347206858ecdb99f5bac41cca6cf159294f1386a64017b1981d004fe5c25713ee88c54147f1892627dce59fffc5547863b8f2bce260316fc8bca237649ae8d5081d3dcfa4ef62047a95045cdfa7cd08e6573c04a4a93ffa4bdf74241f19218a490ea1563884e8eddd317385dfcc938c844c123f1bb7a856f55417f31ef88f2765f9dbc0fc4a89e2faae628de61fdae062954341ba9b5206d6549813a431eb99fd91e01040a0a2f9a3468913462572b74153d3ccfb2f2e0a25efdb5d6adfad4c141722d071de9a234848a623bd4b7104e3940517dc6a4f56360f28c6b525147c29c4cea8b7cc8ca723e68f0f618b508a1a0bae05fd1956fbb33d8ceb722da401402cedda925fa9417da9143c4e268594f90c661ee86d179c670b04eed67ba35f609874b144d5dfb67d56bdaf0d0b294b17831d7513fa56c2147932d0d320b68b80e1a2f14223ca86792aed49e9254c5a8f334b56a33717bfef06b9280cd2c6d6f6392cc94bba5d687194465d728a6cdacbe267e1c7d592ae140f477deb56561133375598bca199de915232cc837bc4a0ad0077c219f4194df6ce029c1b3111b1fc87bde6c4e2c16f6921c642c48ad96d1e18854c2f0f2fd6027a92453cc86e321affba4a975cf7c5a3eed68072a712708d08ba1ce28700329b41e8a2f7c7c3857331496e89ea5627ccac665937cef41506a766516d6aea4170d1cd72b531d6f83035efad864be0234aa30c44362761202f49c3ce024299796e1d25d1585e4794278ad60a1c7268a3d2b4dcdc1602b9e9b4f85dd864b1864a087314c9a7443f09b413a567e5dcad05541cbc7fc44002ce2070b1f4c94cf99e09cf798316d6e0c22be781775321354405c34fe6e268616a506ffe691f5ca841883dc7ca1f84b54156039051edb54ab9dcfea3ffbcc29dab45556a3472c9f3a157c0840a44a0e7dac8bb2323cd26877a92b2b0c973297f327695d773c92007e7438ec2a30cf70787bf8639642ecf6ef0860f232ebeff3cabfc275808afdad36967d2f9459f54f096ddf5cbcc8c4130e0d36bd9b84a9abcf0c688b46db6d34e3a6c1a67e40b053aaf598a5803ad243f2360e587d34112eb50ed059fc5be21beb32ebf25fda6a5629815afa2450c787ad8c5c7d3b059495cdaf58df5bf30cc80e0a78a38faf9a1bf468cf03ef544894d86e30ac320657d90c6989367bba8a444bfc5a2cf8ebf323a17782f78f67b470aaec7f5ddcbf78b6d29183a85f2d8c27404a8015d4c88e15898b8c99019b71a6a05a818549660e069cc4849e5d2e7c4c3379d5b25aac867d2202b4aa236700c3c0bbf1d65a1a8e14db14fd428673970c94dbb7042943e28c5615fb4f95a6e98c405c3dad56e56a4a165eaccb1777707f9f202f8f420c740a1a8062a42aae968a2ed5662c797937336534d8582eeec7a0c0731364e6eacd9099c2b5934f920e945653cf160047b8d1a9955ccb2f0de49aa1fa9c59eb1015e307e8ac16dccc3369e127a830e0b8d31cc98a0ff05906685f474302f30450ada617c149156bffa8f0a502e35ccf161b1aacbd47482e325178ae9f81bd610f65aaa82ab5d774c4134acc50d36f4a828a836904a7405b0e98c918db5f2c111a0988be5d6d0108d1e56f0d8ed8c808f9705cddd26dba362079c41d193533e87673cdba5836c687ac325ca21aab54155823887c2a8ad8d2ab293271b89b3a5ade18e0f147b1bee49210c22b897b402145b68ea1758a7d7abc7739b8eaa5df0af42d8284957729f67a880e08d0e0db0b9f861e9431801458455d93a327a6aad00d31e9152a1b91dcbd1d7418952f8d8c6cc15a7f79b0a2322997d07b2967e4f9009be3e618ebe639f46da634b9663a8736fe984aa06b85c4806614fcd63062a3deca39f7e2bf23712687a36ef8a773ef30a21abe0b2b25812af5bdafd32572bc82b89f48b8c561e1602e6ebab51404cc83aba2283becc4d51fa377872fd9e6668e494fb8d95a2ed956cab44bd0214f83511b025730fd838af8a5eca807264475eadbd1a58b41ab0198d7d25ad44aaa8252307142ef68a34b8d706efc3a819862ec3a32246b1e23d797c98c4f9156db6b7b1997c18a2e0869c7d2085527e70178fce0f4b009c8d14f35bf24abe5716ef8c626d1d7b4f4a407313a8c41d6f4224225fdbda66daa0242d894e915eacaead85896bc8b8f047f288ec22e4ac3d7e4e8665f149376b379de102ede615cb7aee488015d8e24a111acc068c581feb4cb738cedde0dca954a5c4666f710876bc197071ea46538982ae7d7621a1501e2e02e853d7bdbcc55993c0631397808c4313cf9540920d1939f7927472cda32561140e5547aafb8105e6fdd325e639e6bc7629c5c7931e16a24a0b38455ca38fa01aeb46543f44c4323325546f37bb21dc2c3a695d24269661e4671653e559f8316849c32e7a542686f95d9bdac80cdc9d17d833283309a5c4b8e0163230542ddcaa13a36fb9e4b55d13e7d60f444e7e343bc62396c43fa07d97aa2ad32a5469e55f851556288aa31fbdc186233a10d492faa5121e9f70220dbab623e2f6001bb7090b75921d9a4151050b87933b162a3e0bb588ef4674231cce7d4ccbd86c01731c5ea5ed50d92e75ef7c30dba232cc76041dd8d18eee464ae32ee1614ea24552aaa81c98e625f9d88e9dbe5c4ed481cfa1c47e65a9f635a87589bb4d6c406e027b0db48d4f0f74a6425e74c7921977010b7313dd72a605556896102491c1f8dbe4404f1f21eb77d575130c756022638c080dc6aa863213ad9d5f362309f2875ab74d1848015e752be93ec19a2a5404581f0ccd35788481c2891497dbbe2639a692216416977033e064e550a24ef58934a8fe1b8ee2893a97b85afadecaedf36cabac4bc464542d35b11f69462c51a2c8f1233ea856947d593a0d03ba3340a01b06d43d8ee30e198056b127a663d3a2c3d9218ad39095caf1a236bb797e5c7416f8c5d4331ed53f948188c0250ab38f5c0b2ba9f0795c0d451d605f94226129375e726fa67c0b602c73184b96482be2746fe98fb311e7b36f5364cd86325a0e7e41c7ad980a13fa114bdfbce6b6ad7a1bec698894777ced5ae898ce07280df79e73c15f99ee93c01d7a221be8fa7d1312f8216d00984e355b3bf99504c8b552f7f05f5d1ef744a1663a8bf7f4f9cb236374cd6a120fe753cda899aef755366ff97966d78ad1d77619b83570622ead3e6426d86d1c2954e4b5c16ea720cf7fa7a7ab0eddc97f30ae9902bfae41b50600d4dbc08fde770d8e36eca30bc219ad441d16010867ee2b207f11d8d0985872030308dffc6b339f2dc85f17a2db8326b4a1402f69ae9e7d539123a3be7bf849784d9f2853fc83131c420580a52dfe8c82ed3a20a2e50d50d01c70fb29b824b8945e4e91107fa5369a3e3af9dfa964d1da5471f13ad5fe8ee686fc50e469e7be820f942802809db62259f552dad136327205d404e6f78ef3d66c69b224188ed419472da6736e34180cf370de1f59691390383586b201c029ac36963a83f928f035748f8586c46f5f18fce2dc7b26bbbdd25230652fe386fe5fa2c34ee8cc2c75367b87aa0d62ae078b6a3afc209a74c5a27978005dba6ab380cc2c524f1b85736c17a44e2a2fe317e9e3c73a5a53251149920961557aff023465ff7cd500b3a633f53ff8220ac38bdca5d63e3e3f239c1690c27fdd683b40f3d4b3f05fe8a9b7f5851446fc075e4201c20ff8994b8a54fa68ac916a17551fb24ac2234d48f3206d7025b4c548d144e424b810a4116a7c36402f137d512e6bc1d6bfc0ea8d7710342863c580e0d1e47d3ce7fddb026bfc12f61d1b19db74f587a32916bb7d0610a59e8cbe15db091a9960746ffc62e731cdb8ecf1eec832d2a1140f97a9510175c133da19d3a121e74bb1716647f2feb834ee5963563816468c0f129179f512843ba043f004a48581738e7829692c69d44ccc3dc65576de69aa75cf6327eb4dfed60d426beb5d88025685764608d6d141c1a1a0abc87f269463bc42fbf579ac085faef5c9a1148ed1a234e52be6cad295335c50667b751760a4d416b484bafb778b200d744ae659ea23fbf2579bb50a0127c74bcf56309aa856dba4d5e0f259ce97dfebde66756003c80a018dc79769c2fd3d0d9bd848e9e97354bda8f4403d0e3f1b446ac6e117e53272d421625fae55fe0f5c4eba49cdf4f68cae2ac970c9f94d938a53d47b2cab3c27c8a3f43126fb4ebeb5aa355c811385f23940580a1c38c0a55367f26bf6cf1a34e010a681a60b08054ea54df152069c75023a67227e59209a556d0e0803b34240c73809d0893182f488ae28195ff85822f918738483553a09875dfac90dc8fce5ace4360e5e4ca80935751c0caaab5a58fe86cc144edbaac9d7f7f4ffdf8a72fddf6cbabbb6d664d7ae5cb9a5945206a907fc07960767d667d6db799e399ff9cc5a6f67d667d6db79e67ce6336bbd9d599f3967bd9d399ff9cc5a6f67d667ce596f673eb3d6db99f5a9b53eb7acf5b9657d6aadf376ea2d9fa7e6a3276f1bc6f7de5c83d7f3887d2c5964cb5926c47648b08f2da5b57e9f968355ab1394507cfc281cc74a95ca2627d407d6c8a9e2c33865da19e438eefb32d8653083a8ef4485ccc4f426a89e7fe8fba3adfc75c3be0d885c53563669d3583fcc75c7eb45362f83a3e908261e53c88ed0217549a7eec864fa5028d4f765508ad328052a4ff1795aa65147407d27294e1fa23edc3054113e4e7cf5f4f6fb327804d4779242347ddea69d67e4d4b875cb7983547498528dbd5aadbdd7e25814f56d7d7b939ca86feb193bada84e7c5a0a1ceb4ef609fb847dc2e88c9d569c5838998085ae6fe34d9ac24dba49e7791abd989d50b7df5d8eaf3c0f6b1ad672debceea8dba46e75cfe9d34fa2edc4f6898f5e1ceecd4b54aa51a4e75cd69d81c671f4a9a7574f52a2adef405b5d15344d2b693906be6fdab01e1ffeccf377dfc5a60dcbf9d21af2436d288a83b6f3bc2cbb9de0a751ac43d3d601b561da98f3ddbb71f0dc117726f6553d537eaf13ead4656301632fe71b359fe86d5b1118735ca954648494746494a468895192222436e8086956c40d8c679d08ab962bc1676abd79473afd0d49a7bf119540ebae66a14ba9509d895b9d889d89bbb55a6befbd18634dd3ae86c2f26514152d3c79282a9ae62e362e964b0c6fe1a2c62586e39cb76dd35a731c572a954e5c9752a13a13b73a113b13773514962fa3a868e1c94351d13477b171b15c62780b17352e311c832f5ee4f622064823f3f22206f832ca9d1a7a29830c1c3c374a1964ec991a2d34cc302387860d1b38346ce0d0a0610367a6a5c60c1a6680c9a1c18005282001083880010a40001c1b59c9cc0c34cca89143cb8c9619981c1c1b346898a1c68c96191825e00e4f9f97355c5232d3f29b9a60665a60c08d7ca191d9afe5cf0b4f589794ccb40060064649cbccbf8aca6a258a4ac01d9e3e2f6bf8fb4a303334669831d3026383861a332d30df511166a605dcc8171a99fd5afebcf084350cec060d367a8d1964a0d13283958032342fe46b7bd9c0fd2d33303432e4cb066e25e00e4f9f97355c52424f36b8b5fc79e109eb921210dc4a4025e00e4f9f97355c52b24170832bdc06b5fc79e109eb9292fde232f20dfc163c2a3985dec792bdac61ad04dce1e9f3322e29c9993e67e2c0299794e82de79212bde592929ce9c8993870ca9b2e2929292929e981899e8c4d11e78c820fa9eb3745af6f23f629c2571ffbdca49b74937ef4dc2e843846c48963513cf199ddd1bd1863faa2c6eacd7b74f2e64d424979fcd887e2882638f8e9579c5e96ca54e93bf581a8c7ffade82bc4b1be7dfe6ee346f86adf705c1cac55a3a9bfd3687ea6d15c755c34db1c775db7b906c56776479bdb6e9ece226eeb5888d6dfd7bdb9ba5e5277745975a8a678eda74f9998ea3689a6a41daf1761f34ca497ba234b9e4e6777743a3f4d5359ad34d4d6e2f76d300cc3cd6fd7f8e9bcacd369492284f689cfd4b2eea889eea83b92f1c0d9e8baa30ea94b12bba3ef2675f04d360cf4e935a9e3b74e7cf8fbca7bb849a83da4eb377151bf1f9ececb1a729af193c9867de3e924c257df3ca5b4e9f4dbb41fffc9b469f7baa353917ebfd41df5fbdce9f4ba793a71ace2188e85d864443dc2e6f00741dda9d66a6dc5d65a6babb5b65a5babed016f4443a8f81ec16c113f160b5f0ff7882375fa941e757a8aab55d6708e6161f6427bba494bda5afafbd7e89678b5c1d52a9438b5c1f5b833d05fc3669d6b6edd3adccfafd11fb457262aad41d088b8b9daad9475af8631f7f75e8e53eac23ca25fcc69bf57c3f8deab6918db6a843d225b0c845ab76dc3396fdbb66d9b071b848deacf629c31a63fc630841ae49cab766fbe959257cbf8deab699f33c6f847da1aa9919c73ce39e7acb5ce396badb72de7acb5de36bde5d96cb6cdb4de667a9b65bde599def24c6f7936db665a6f33bdcdb2def24c6f79b66d7acbb36da6f536d3db2ceb2dcff496679bdef4b6e93cdbb4de667a9b65bde599def26cdbf4a6379d677a9b65bde599def22ce73cd35bce33bde559ce79d3b3acb7d92ca7a0b3dec5f6f23bbb4796b44a7c5ac3f7355cb3a6b51cdba65fd3f0d5fe7ab7e38d097b69b5a66c3becde7b8168176f36e0463384e0b1464e4ecec51ac6f86466c97b7472ee706294aa3f1d6647d3061c2e312b8f29912ce54dfc23738d2eebfee3c7411487b3b43cbe4bfa06a382a3bdc61c4bd6c8e9336ae0b0af0d890df4b5458192f765ae51ca35eaf73b1d4bb8ed459d8e152497455404e5a41392199d9c283ff8353e7296ad9f1cad562b1420cbbaaf6d98ca88f223842f8625efb7f80143ab35a53c0c8ce3b0753dc4734a599b47f7d2e6c1da58398390f2c97de43d5ede483fb9f095a3330c45a22232942013136b6a941fba776c173a21a23a29a633e573715e5e344e6e58b77b7c10cfdba6bdb7a6b25a797b9b4e955e534a87c9da940e4b5edc5df80a9215be42b445e1fbfb1b92ef516f6e46428458f8c9593aa2a699e9b4e4bdff7d2c31f04d9698e9349d29db744ac5facd3f3da780faed2cfce4e4c3b2c3b254469698e9ecd7749a6616070508e5c792d7d4a1e4cd1203c2e7b1c42c795790509d14b008cacffd8e25c6124be9bacd83fb2905948aa1e8774d01da887e39ed1d0702f78cc9fcdbe6c15d7fa7f1bd9ff5cdb5e2e8783c7a358efc3c9e4ba7cf69999f5efae6aa3f4eaa651eb59fdad58ea7d27b4ddaeda00f28dababfb361a81f3ae6b40f74bcb373b59d0dc33550aafdd83e83034711b5165173c8f87a7859407fe954d76aada799cc233aa5adca3d11734126cec9b850b7affdd4926382baec5b0e082ee896872565a069de8e3d8df5e949ddfcbac969b26e7fc72e0ec7ed180c8f9c8f18f0dc0b805be935e58701805e5a79a9bbc193f1e9d0a2c1e1060e5d0e5edd98eb592333ae18e3ac611b8c6bf0e7b079f038236b39ec1cadc386c1806f3b6c98f65c1027e3649aa7f5b0e23827e3822ed0c7bdc905d5c0f1b0a4d57e7fd6bef4f93b6eaac1a7fdee7ee39af73cc8f8baaf5b07ed69ef3ec6867563cea7d5fe62e3a05d2be5efb0c7bbd2773c7832be52e95f6c58a9d462871d68ef76f030e78270d01c0ffbf261c5057132adc586ddcbb1cdf636bb87cfdbd8462356369648b141fffd3bfab0d23bf0dc37cef1b02cfb3cec1ddbefc80559d2fe7dc157dfe482bad5b4172d02a01280bd5a558e330c17021005b0bfdbf1d78a07b07974bfdcf68de7c79b07dfbf814180cd53478f005bffd095d75e80adc32dca02d008fafd026c1edc3b03944cf9795429d5ea448592a25251a9542b2c2dcf4795cae505264646e575254ea5d25b56a934d5044cf9594c7a3a7539a2c6887a048e11f60895119ac6592e3c817b2a35c2a7263da1de5b6f4dfab4133eaf22892c7d1badcf91affeb5f5de6b29adb6e21e269cf7acd5da7b31d6344bc4896351d85a6f9213d59eacd0ba44828ebe50aa69f6622d539d12c643b5d4d531e7bb6707a2f63b6a19114dd2dbd49d649eac939dba4ff675289927eb2c5839ed4d0cd3b45a1282859f72dcc91a513b94679ff8f0907d512dbb58a360f0004dd2b2a1a1a129481b00ce061ec2442c898b743c6449fb78280c43d16a19d5d1dac7c6ffb2acb77bac78989898a85678c88adf974aa55627d553a9364cb56198d2fb54d33a2d3be9502ed6b011f090966999964da17d58d20a752d9342d6715afbda793f555c42de362b888c607094e48c71e37a0183a6a6850bd6eb656bc1c8c4bc5e644124d975244b2606462606460932473063caa984934891a1142149ce6de482a71015191222347edfa8325225097ac1ab0d18312f624ea3a1737694729eb32446315c31e4ca0a0b8c172e5ad4d0a4384fb5fcdf04d942ac177f5446e7c922413014c3301c2244081886a2b546670cde2224a3adcbbdc90df9f49cf8e4048b3f31a19028a6e4163534ac931394941499181820a29089494a954aa5acddc2d0c5e56f62b84a2511c60b172d6a6858262629954af5988b31209951fc89f15631303534acef43c5c8801bdc2a3f2a3e4744442dc694f374c19c46e7499e4e9cd6342c232316699a755d508c0c0c4c4cca0f99941f30293f6478cc6f36364ffe8d89f9fc38060626e673c6314f3b0ccc98f3c5c0c4c4c4644cb65aad9856ccca4a4c0d0d8ba654ea6894f0e325e5147f8c8c5e605680b0b06c18cb86c9c0c0c46c332437239263ca79b260626264780ff263c82de625c8968264f4627492e729c345a0182ec660cef3e5657319f9b7b0aca8a4a09cac54291331045127d3f6ba161c9ca71d01d0035c04897138714579ffde82af97394b5fe95d56e9291de5a4779c97f9aaab7ad77999a7ba49efb697b9d83b939779d8bb939739d8bbcfcb1cd53bd0cbfc339940f44c59f8c3cda3bba636323ff52ef43237f54ef432dfbd33f132f77a97f232ef7aa7f2322ff56ee565cef5eea443f132df72ef54bcccb5dead7899e3deb17899dfdeb57899dbdebde7f22d2c2b2a29e368d29ee61068b4a5bd4604c72bcb7e1fcecbf7fcdac5176f34f8811582374c67c64d8e8c17305e38362e5ab86890ad2d068b6686464f2ca5a3d47041ec8fe5760f1b7452530ad275ddaaeb543dc532b27f98749611d38fedfbbe1d509278c84e411b0f3b0e4ff9f149e9493a9209431955908a474f0eaf366404217338b5f105616fd3c96432056d1cd4b999a9e17c949183f382f102252606c5c5450bd74b0b066646902d64f3f7513e2442820a0282a11886e1c65143840801c350341145d1daafebdcfc978664584505afb868e16269b5b4b080080991a190289ab47c5753262626396ffcd45f305ed8a8a8acb868e16269b5b4d0ccb0808842262629552a95b2d6d467e8dc943a65d7a964e4e0bc60bcb059ad4e5cb470a1e8b44ea7191a25fc204d292111e9e38789502aa55aa954aa9c7787f1c2260c45172d5c26ad199ad4297542c9c8c1d1fa35a6c86e583f521bf74a40748a4ccb7a6acfee31848dcaa686d71f55908d779f8b162e546b669bb66955c3c4c6b93e73f283e6e407ebe4c7c67567a1fc9849f94193f28395f28366a605cfd1a2c5f699fc4c8e2e5c6cdcc5af36cc858b94ca36624be691aafc50091223468c2763902a1bb6b2b232a375182f6c5e749de7a2856bbf50c293a613b9b2c2c2b2612c1b4633f3ac998de3ad470de7a285ab54c384cd8633a69961b100696969d95abfb5be866da1e13d6a7ea66623836c2dfde4d892849a96201bb79d6686f5406866f886b138908dd34e33336e186b04e2427ea9939b4c0ccc8bcbc8bf8565452505e564a54a99882188fa4ea6ed75254ee3cdc6743af4b082b5d6da6b9435adc277af15ba9ec79b445b27d579cbf9055ab6c211f2a6f5a6b72368cd695620d2364cd3740cac778b169eb761f7b7a7355f7d3dbedc036ec334ad6e78b3dbb499bc53a6a74fdb9aa7f5b699642830144da7adbde785218a6d0948d09bdef496f596f596b3decef33c733ef399b5de022efb19e5392554977d8dab9e730275d9c71c8820bedeb95c7b00df460509807a4aa7548c200cbd6e1d66e858d3b0c61eae35ae7635ad76cf66c3f60d3cda476e724b981c109323020b37392a4c8ec8e4a060e369be637b877de9d1074ad4bda57865c3ba2e25858823b236dbc66c767e9b0d9ba106bdb5dba82fee7296ad9cbc32f8f2188dc364feb25deea2b577f9c8f1d2e5bccbbfdb3cdfe52d7de394debb79be7eabe75dceb2b777f98a49850777937779ca573fef721414cabbfc0404bdcb57e1e52a51f42e4f999878979ba452dee5a24ae55d1eae56dee5200fee27dee5281414eff22f25c5bbfca4b2797057f12e37b1b4e07bf9ee264e6d6c7c097d5bbefbd2c8e25deeb5b4789777ffdee525cebdcbb971f42ed72e2edee5dbcb8b77798681f12ed76262bc2ac371ef64bccb2f497a975b16abce6c1edc6948991898179791b34cf96d78d4be3606d0524ce26fd22974fa08a0afd2d32f002dc525e30780ea40cb70565df653dea45674fa36d057f721527559953769159d12c1492b34e86bf5f47528cb8bbe546fdef41dab2efbae4e35256c6aa9c9c24f54e96ff2e68b9874d34d2e080add3e1f4d2b2eb10967538448ff43d4ed8f2315dd7eca68846e5f655c19451614d52a08c955d1ed97ace8f6b7191c92ba633c33ecd2681ed14bdade3ad0a1ae8d957b793a1bd683d7f1eb6c5810fd7ade5f4e374c87254e877a4d99e0707b49e35e2bbdf69b534a7230360fee30cfe35c10c783e334cee675fdde77dab3c1a7f52ebdf61ddf5d97e3c9f8bad2d7b09acb86751dc7d93c78ac494a46469ac3f1343cfae0796f9f93f10df3c69c0f7bb805b7789c5771763dcf52c8bf93e1c9f8b4d62d399be78e1509d7a39c1c1a601eb5afedabf85a0d5b0b732f17141bef9581e9efeb8fe939c29b076b631b39590db0662bbddabd373c6a5f52509c1dbbac24c89cb085a4d0e9167205d69bf5fcdeacb37f938a818ea0d3af26a03afae9d713d0d2e56162deac3a4c6fd61f4aeb8e97af3ba03af74bf2abace6cdea03f566156abd5985509cd39b754825d2e9878096a20e1d4bf89bf40b9d7e076829fefc78617c937201a8ba2cd0164a14a0a5188b61814a21e54d4a854e3f01b41477ec285a79933ea1d317002dc5a0eab21fe4049637e912785497e5a1844e61b41465d5657f8ad59b34546f5228ba39a3d3d7a1a5e803062d45a1eab26fde00a92efb668d6963ca74fa30b414855497fd93375fdd9b2e94d77e73a5533e4465c88448a745c23753266f9eba48a4baec2b85424b7148484b71a8ba6c2916a92efbe2d3ef445eff046fe31b97a85a7fdfeabba9c9cc1dd3514bd188111dddbef8534b91a8baecff00d5523c7204a8db1763b514915c415bb11db5148b8a7674fb62502d4523a3a06e5fe4514b3189ac96e2e9a396e24ca896e211905a8a484978742c684b26fa104202d2ed8b426a29260da9a5b864a896e18c482d43a422b514970c9911e9368b22ddda7c163fdb8cac6f7d5f033e79fa6866fef42810f527206d7cdfedb0c4efc4ccfa980d63b15e6a9158912031524b940e1d46886a89faf9213a524b1410d01124b544c5aea03aa8248a6af92d595264544b544f8f51925aa27224e9f6c5b396289feac282eaa090a0ad592dbfd96c7654cbefe8e8a8db17916af921212175fb62522dbfa4eaca82ea7c59d0d6925a7e45d5657f49b71fce6af9195597d1acdb2f09ce82ea7c58d0d67756977d0e079465df26e98166a2dbe78630a415e976877641d4c769288591c71366b1ccfc248b948971d1305c7b0125ed6b3ff6a581f48bfeccb5cef95db40b4a074a47b75f1af9b7fc002511fb01d23c6bfd255c32f397f41296159514540f2a070a09940faa0795235bfc5cd6f84b5ff7ce115dfb1a97334baf9f0bfa66b36e1fa53b59a98e90b2480272d49740cabc541a73ce997f4543e84428e27ad04a9adc0fbafd900bc20df98c6a49abcbe47e24a925a52e93f341c782ea703ca0adb3961c8feab20fc4a82fd193e4e782ec2b6b5fbaa32ed52b72db294cd37b078d0dd39aefd80eb2afbb83f2b8832c6969f0dd37776cefb0a43d7be94d4d56c3ab96c4981e75fcf7563cd6d7af71b307fd336cd87dcd774c1b9328f119db06bd77d8970ff677ccbef4dbdf412f1ba6c79cefea3bde911e617a84c77ac492f669ec4a649fc6ce4f63c7a3f5a5e137457aeaf4372df753aa539f7ab9f4668bbe84e6decca14338271cd49b14c9f721522df788933e925ed698142275fbb4e2ecd80a857a6ebb890f71ea6e78346cfc37760db6e3b98f9af7d8468edb40e7beceddb8b1f1c3b4d2575dd259086cc7836dfc3bbb06db715c8736214284ecc0601ba61fb66bb09ad7f1dbb5ec0b0a0ae28238be0d5dd68913d2edc3f68ed6f358430d1b3f8e5d8385f5d8c00caa4faf3ed507070e8f67c3f0f3ec1a6cd763fbcc7b989ee35f326932eda7baecdb07502407a048381eb28be3a3dbc701d5a30e76b41e038096fbd5df4ae585c43a65e9e9c3509dda69fd6e1e5c29b6a6f071085ae1839b09ef9dd29b44743c9a5af7f6e8617b637242e0a65d0d9f9ee33d7c5636505fe242e87edf845a82fb8de7f0c9b171dafe049f0d539781d2e3afa4597b379aa5cfafb9e603cad381237ae935997d5d8b831ae965f1b02485617250747b63724eb04c0e4814ddfec60de9f64b7f7969d4be7b6a5ff531eea5d1bc9f7fdb3bf70353f43b43e79ae54c46bf660cd4d18b7ecd16120d2a8b987effa59628196fdee4bc6983f3a60c8c3755fafd7ecd948e5a72f272618ab5047bc0166f9afa3577bf608eaebb402472bf8f6b09fa5497fd8b932ca9f5e8e0bbbf64d47a48dee37b1962702036f0417c9dfc9a181fc4d781f816174277197e931fc4d787788e03d12308dd6bbe031c0821be5ef3417c3dc6438003c1816d0c63180304be031fc4aacbf0a81db5047554977dd48e6e1f15544bf007c5a39620108f6e1f25ab2518ab2e25a80e98046df9a825b803e5a3db4709d5120cb28f02524b90070a48b78f12524b508612d2eda386d412f4811ad2eda3866a090ad94711a92508c4031f44915a8242aaab0aaa0336415b466a090e09e27f4019e9f65144b504877e781f46d3da471da92548c487bfe148b78f42524bb048755d4175c02a68aba896a0115451b78f32aa25488432eaf651496a091e49d2eda3ce5a8248aa0b0baa035e415bb35a8245a859b78f3aaa2568440375d4eda3906a092669a190ba7d54522dc1139505d501b1402da92538dba825dd3ed8534bf088b30fe6a82588545d20c8d1ed833eb5049390a03a601643f070465bf63fc0432d50d23ea8a396e09212bc103a7e6a19f6900004aa6598032856cbd02709aa1322b1a396a10e7047b70f06d532fc0183ba7d90472d43209047b70fca6a19c64059b70ffaa865b803f4d1ed8342b50c8340a16e1f0452cb9087078008a965286b82ea844ad0d6905a863e46f0410ce9f6c1a15a86423dffc3685afb20915a86408ad432145205d5099ba02d23b50c875417512dc3a123b50c8f781f887423fe062322f89dd1b4453cec48b70f22a96558e40aaa1356415b45b50c8d18d532244a52cbf0c859cb1009165427bc82b6ec13f1378a7a089e861108be95a4dba70167b50c8b8e6a191a21d5324c525d59509d104caa6538c4efd9079e1b4d2bc45fa46e3ffbf0413cfee13df0dd8c27e3237f66c37a98d9b03a86b39b910bbac1ccbe42244b9a98b561e48748f665fbcbdfd1c45808dd6f5a4fe3b5987ddd68b1db71a963ee4d54c7fbcd55c737de6ce918f6664cc73b6fb63abee1cd181daba0e67855133c7e90beea091eff097d5514bcaacfe397a1af9a82c76f435f1589c77f435f55c7e397417124506a657efc275a728f3f45cbfdf8576879e3f1bfd012f6f86968b9f3f85fd0f2060a45bf79f2bb1bae915cfbc9c177f3405fc3dec07bd07cd541f334b8593b8defaa0a78cdbaa6aa80d32e01be6f4059f677f0ef3c0cf637fc8d1b5f55f07b7fd5f11cf775059ff35716bc565bf01acddba794fed716708e07b4c502cef960059cfba1835715f01bf80eaf4870ce8a1470ae8aeac3b92850c0b92127a826a83938d78376930bbac1296dc13c8c53da8a91791ace3981b2ec7318efee89aefddd7b8742d1b5d1c49f877ad7aad49acc237a86651a9cf61bad456e1b3420fbf28142d1ef93b1960d23495e57687e8566348242d1a250b446ab83b5ad8f7d70492dc325250097f4d452eca924e8e9f6c31cb51473dc77408e6e3ff4a9a5e8535d48501d1109dad2514b518703421ddd7ef8534bf1a701e14fb71f02d55204624008d4ed87b15a8ab170472dc51de18e6e3f0caaa518643fe4514b91078f6e3f945525a88ea8046df9a8a5e8a38e20f4d1ed8742b514856acf685afb21905a8a408e00d2ed87426a1354476c82b686d4521c624438a4db0f876a290e896034adfd90482d45224510e9f6c322b50aaa2356415b466a2912318646bafd902804a369ed87476a291e01c1181ee9f6432457501df18aa25a8a45fb872832aaa568c4fd0746a324b5148548d2edc7f000e79a405df683e09c91eab2df01ce41415d3c5e9cf361c91ace09b1a47d203837445bf665e01c114bda7f00e78a58d23e0738b7044adadf00e79e505df67fe03e7008704a5b2e1f62119e331b3663e482703083c03b603c7ac037604472c033604c6ac02f605cb28057c018ce14f0091843a4047c0ea3f6a304d5d15c405b281d393c0e23ea0787bf614401ddf03b2310214d7c4b761e36a27a607f6344e5a82efb379ec648a44815dfec3bfa905c21c3df18a1f1ad71c69363916894443cc3d7eff1e639a3189f9330e0b525ddbe067ac880890111891e3187e883c59e9ba3db0b58a002149880044e4f33017002a84f02341138893395a314a4f1551e02b3947fc038be0346cd057c25c5bf01490c184ddb577e010a4800020e6080021060000208c0ccb679388ea3b1e1610794ed3f1d50defede6171502327bb2c144ec8ded83f710e88e5865017f63fce39416fec8b9c8b82b660b0a074e430fee0f00374c36843123100f0e0a861c9ce081b51396e8c34a090b0d16bcc30936176f4348e907ec6586691f4a28e8c1c9ca25abe8a8c5235a3697bea6fc693d668da7ef23146187cd38092f63f2cc8d1b4ddf33e896b339ab6ab5e1c4ddb57aa5ffde5dc102869ff05e75c702e480bd7bdef61ee718b66efdce78ee8976562f233d7c4e48c607254981c91c94501c56ac74c996e724136dde482ccae9b5c900976930b3a79d17e4c4e0a3b64e125f695af7d618c53522c526891c2d102d16cfbd3edd88ecabd57c26f82ab374f4edefcd49b32266fdae8376ff29b33ba105fd7ee0dff7e4851e82be6ef734ad2d7cbdf77d197cbdf7fd157cbdfa7415ffff76fd017fffb38e8574b5aaefe3e0b2d4ffe3e0c2d537fbf8696267f1f062df5dfd7a165a7255157ea82be124c0ce77e5049fb329c0b4249fb2f9c1b6249fb2e9c8b8292f65b38574525ed3fe7aca0a47dce3924962cb22cfb2bce07d465ff84fb515df653dc10a8cbbe09a7b9296897f5a87428f1687a246488860001000400b318000843511407721c09d3aca80f1480125782605a443a97cb42811448411c05511083300c8300a28041c428859042a604eb6a2c59cac2cd8950074e7c907e0f3c21f687a912951366841574e90197ba27fee44f358e2c5ff928dec18681253ecf132248d80913b78523d3ae8ea41cf3de33f823980f8c0e1d76b90f39217743b5e3b522be42c5404ef733e4a027302b00a3ec6ed0a4ccade9c8bd43422e3c884b1a1751663cdca3fcd4f41ea97ea7dd70e153f0f74105f174aeb0bdbaed3a93c28b44157a78dda0ff3d273a74792a75d2e953a11f131d44af4c776bc6184515f2146b087428046de8bd4f562f1da8a4073ae2ae41459e9a6b0d9bff3d4dd6524b0f98e9cde636200e833ee67fcf93b5cb1eb0d089c9aced3a1a948845afad45243ce2a6290d580751165cb7bb88ef3d4b16466ccd59e7347518060aa7795cae5ee3503ab0db42a7e8b1dc28f467d1730ea1344ff033cef8bc65116ffc50e7537b4054347176291714c90e1a6fd19b7f72f41c864849ee448d37dc6356293a5050d41aebdc7c1dd1e8039b685f5225d548d80057ede41b7bd1cd95c3f302f7da2522565cd702acb65487884e8f44c3d1eb6d02f86bdf72089874040f52d0a7634cf698e1d3bdeb2c7a16ba4988f71a4a8e35be62ce3801facf6926d0daf115c244907f4240d5f12ecac6d151e0eb1ed26674a9ca552117f43fa5dd2f6f1383e3a437b5394a63ed4b95ee7a5aee16cd2c552803e89d85b9698eebe6cdf9d6c74d1c868e8635c6a3ee5b97bd5eaa6be10414b0e1ec71e44bc80f29f4446ccd24206a4500b145dd1dd9101956602f5096b95691ba44a1bb729379adbea2eaacc09a56be8f141282196fedf1e68ed08691981c7b14c747b7606aacd68f6109d3bf035584323b1c8b964e720b10f37bac185a722e64b9ca25e2f5b428dc7153763edddcdf510f23c4a9abc2a7f2c87a9ce8951d907b872de3fd32f4b41865f01026770b720f858d9202e4534f85c8c3a0172433e350bfc4153307b011ace7b6470b5322b8f734f471ff7b9ee8e7f05c42f616d72b039d167c084a343bdf0498f5a0a80ee541b60d57850155bf5776ed22f8122296efde9703db28dd920cf6a9cfe46257e8f7965958e851e3ea05b91138ca096f759623ad9a2d8b58bd6788b565fc017a1039db681a23e893a2f70babb9cba8604fcabce43ecd70e99e58baaf412f1b9d5013463e45668fe34d8dccb48ed4430d5760c07ecb4d97845f7a6b05acb51360ada049a13bc9b270efcdb02dbb2e8e42356e57740ed111ef32e616d01dbc003042e98157449ce81b8a97214fc0f294171046ab111805ec76a55957afae68a7685a7e1930e64a7f8aa6d7970117aef4a7e623c2f3b96506f6a25708486b240017aff1a738f4433a30b24bffee1900b3d5bbe5d49af962d49dbdaa06cda4b1556964e2a469a4b1d14b9be89b5db69b591eb5376a050ec8652293d32891d2e12233cb244e8db5267a0e2107a1269cd16488023d2fd912f5509c87fcf89ec643ee10ab6525a617d96a4345c03906ede47eb726798cf25295a6952f39e96bbcb5d49fcc8f6dedc9162f94364e2203109de696b9ff550af53b97e6df80c58cc57a28a75de7b4d7c2704559b991e16d1381cd082f41a2f32ba67daccebf40749b9d898a2d70c2453edfb8735b72c714d3d42c48c1a3918c2806ae8e4d047f32dba50064c3c3ce3c8d5e31ea3435fcc354a126ae43fee5c8984d3845ea5cb373a0b674b6f403c614cb508e63cd67284c5e00189df8266840743ad1221ac8a335e972a55a95fb99f5594dbe3ae413d4f643adba409426e26d0a495a65a5b484397a97cc7567acdec7b0d98d789dee752c8f4e58cc5117e5c4e5d2ff2e5a58e1292e62c1f86ee9ced7e44b2260bb2060e76afdf91f3be98577973179fdbb9f46ef3fad43c9be0fa94a49dcdf131db3fa6148159a10a35b03b62036757d0756d68a71b42b36c229d0f7a2dc8f8ab182c1466140093780c63236185fecdfa57491e28bb824f1a0899c55026f4138d55b46771849004a2e1f3e893a4604551c39d5b0641e8ac95d0bb8b3c37540376518ad0d8cc35e57e65f4aeb1c1f8fadf9bb4e57e4d885e62c9286d5a2bc5ca9d458395ec26c22c4ab76366d4906ca113696e30ba22cc7e74f32514c25e278a92b8950a72c34c62c13286f9d1325b0fea4b97643a833030e4f91496bc1c2226b16eebd0bd0441c174bf4d57111ba88b7bb5b0c5bf37e7f49a0d1a6aa4d127d49b11b83e6903dc1bf5e7019649a5d3f9046af34abef176244cac1e43b96695b3aac642385bb193a14d200ac5e02487abfaabb7e219ba9dd73191842cee701a060127c4f639d6e3296d9c776d5b0da53e2cd7857c38257bbef2fcafa9d06f3c20d997ff45e06e4dadf1ff422b890592462683ee3662b4337c67071215608aa7c02214231362e4a0c4982b3a3b944f01285e01dcda8967cb0e3d99ca3f35356c426d46fbae0414393fc61f8b15dca85d5f2308931af418cc93fcdc2c85d306054bff975d1fe8ea8a99d63155dc3816a242bc8340ee3bb220f50b0925c440f6a980f30aa92ba80e0cfae60d0b1863b103a403c182a0cb71872e61a9c415be1856d80dbbf49f1c274118f4561293991dffd1a0add544ed7557527fef735a1658778a6c0b699dd44bd61e183f863f9beea70fed63c199aa6aabe52b9575a18cba157e4f3839f01b06b962b606701dc4c0d981d8273fdcb5e432d0ead11db608c0d961b5b4e86474ccda8b33d9f4ff753f8d2c9623dceb6f3ea130e6c376a4ab9a87be24443e066d630ff1b8f049323062503f5329b2a35c59c7130b30c7616c1cd34d88c80bb739c83991d783de32aa8555db49cf19843b03a9cb187f0ad38334ecf0d305f7dc7ff41f2178d14eab17e9fecf78db0e7446ca210688f82075859ebf84f07ac30ea40f163a380d65247e54faa04e79d794f7ba463cf9565287f0079f85381e88e5cdf115ee311951d70820e731b7b47cc99305f3ec63b4d3d778ddfdee75eb8270311e90b054bd1797010e4ff5ec5202160884f6581947442620a2ea7bbdacce9bb485d749306b3c840df2f47b16ef1f5b1fb88a94acc5e4fac070dce8a217050d22c2673da7b1cb618fef37028caeff7dfcba121c3004e38f3f6af6c8cb8b0beb0592f5b866eb5de1b85b185d878964db234ca1bbaa091e3c451fedae4d6b60cbe7baddf47b7ef000c06a9b3264c2c6db08ac9b81553e353134a2559b6ab3db290cf50bb233acc676b7533f5c4be03e5de6818e086da0ec2f8bc1145040ca2b37be5b1cdc6eaea64d1c61d0a01e463798231a7709584be6668d9f89078c38fddadcc25a18103bc24c6f83884bb8eef6ed083561f465c4bf0ce97334916ef3dfd931b13e47643a9b4651436b723d71821149b1eef861984d6b6748eb5dd9cd1d606b12a17f6c5b5aeafa70e012b426cdb835b6d335d2e2b44cc3ab260b8d1d151763a62da98b84cbfe2341de1fe2ecb1a0b6e0b42b75ee82903f6cfffe72f27624d5fe663ea2e5e3f35230e6bd7980ba332fbb51cc64e1aabb49ea54cd2a04de738ac384c23d3ab139ab5e9aca34f71c8545a72fba6569dfbbf518c5883e378e5afe86bbabaef4a1b35fbe067092ad11657f5efff806ec65cd63483569dee222a2d3a049860ac765e2fbe6660aea2d63f6a39f3e53401baba2acf35e179b7561bcb4fd4d46e5579467725faad9782f6d433fa20e679568f53b1a6e332c39448d8ddca59bbaa4a05ada5df2a312502538536ad5205ae1c9374e7450e2a900ebbe0ae642c18f558a11adce6708b0332f9aaf233258296cbc886eb90c7922d93a83109557a8f51d036233719dc3d7e2d9de85af96a3d988a8d1b88f88ac93849dab53b497d4e6a7e911f52909261ea33b09c77b1d7e51175da474aef60932001a63b701010e42d34318b9b810b64f54b5e0d09b741e8b8082a96839a8a22293874d2228f0bc3fbd2d87fef80ac69dd828cd73304161efac6ba3165064da37a814db64e668637b8690abe7a3f37aef15aa30ad4541e6be332dfedf91c5238931f737d101fa303cf6d473617a4168c1b49df00059a60decf043d7f213d17ce8de8bcb01a091c544e319b3b7a7f01294138b896955dd1d52abd37ebf0f055d9653a199e2e82554cd4796929a7d99405c49de207736fdcc9cbf75d86eba6a254e63a88112c865dc2ee4bdc8a8c769d22766d6e257d09d44205295f62b53c9c28392c40164e0169aea396da8374440e5e37a95fc98fa6dc6bf81d2735fef71a8080f273745e52f32c98fe7744f6f176c4c3bbe3fbe6164477a2731a9325a0a185ef99d1deff3dcc1d143048f55cda8159accc57fb7fff845d53f4c95bd930e360423c7af2629711d9f1a445ec855af0bff840f2c9e4c7fc0f25d556a3a62f850423c9d789ca24fabe9ef5b7230415021d568905a6c821d91100257f724dace656b05bb04c975663e65dc688f67f0d41bd3122df8de1a02770c3e2651623910593aa146e6e956b036fe0fd9640f2fa915a32e8b4c42267a9d079acb010c4263f7f029b0595b68db238c7824987eb5a871946d76457c2471592da324e602d662f30345462b99fd06b621e9d86d103f6e838e2757f857f7126c502256fade027f9e23a0a903a40a6130421b6cbaa9001535673e64089fcdaab6789e34e5652137e618208d1e1c06573e00210b76b057069cc064e4f481a3788f13600ed2c0cee090e28054900681d61cbfca0503ed53e286b461f9cbdfd3850e7e0c30802d2910bca31e5d76e1238f73ee891ed0f45225155a067d98ba1f67e02b4ec87a5f8058d3a483b965069a53649ede5a2a8ec23981e9a109e07b9497c45d5d09d0663df435d4bc297062decb7a7ed78a33b22606d516c955dca9fb6369b107519eac3a1ae7b2ec15b69c1684f233b0c904cbbb0be8cb9f242800200b5cf2cad59427c877d11c044cb9eca9bfa205d6b10e7b12f928374b947ee7a8ae9ae888fcd9b336adea19aa280b4d8866c41393c78268b5296a8ec4d4fc49d0d16ba440b82f36f23c8e334a791d637692c7e341a790f31ee22815e519de84d6475138b31844f60aa11ce7f00be20eac265f7f8a6205cea9a8917a94b392ae08cbf324bce1a6f23a30985e75514fde78cf17e5db15b99cae32356ae4ba4df1cbeca6fe891ef702730753a87c6eb30cc8f6f8e29795aeb7ff1e7ea719bfa61b41250dd331058842569ae3615826d09f6fff9f245331154387b5502b3ab2ce23e290461e838ce7b8096c3d6333a415388d572b2691a9be9bca0082cbfb4a330e0b778b79dd4fc55955a141ab7ebce5e904ae4939d37c0d14ff37162b548d128249652a6fa6c3cce606db00f26a29adf439941d1854d8ad1512006a6b06aea3b12e69aacbd6f96825b537ab068087386652e29db3a8de916abc051cc22b65192237a1a012d21421ee9001e6a422da89144acac2bfef7701ed9d0616b470433eee67ed865255342311d6c0b7df712978d29f8727e8656dcea5ca4a91c3b29e4d7e92bac37df411ba1944f3ff11b1ff01bb7b8db1392c00605d32ff404aa10cc40d729c4ec87ebe7d4217edecd6ee7517a27e68a3085f9e2641f2d842fee1605f41ce95687b9b341b03ce6c855ed6ee921a153a9aadd24bb2081f3aa2f0b755e0a3c5277f41b2880d1a182e486e36d6b2df0ca806c9178bb5880286f52bbf4c51c7d608e5ac2d64bc6a15554ef599c95eba82b0ca4513a5b04782d59fc3965e752fe6a2e0f8ac22b221958b433986b67235ae46c6218b582664c6f732abbede8d52126ec5570aa36cf8b84f784543cfe3e19cbd1c7e2541fc79ded5724709e826c23d1bb9bde252ee8bd6b9a4eed6c9acb4cd378b283f8891831168cca162c617c472847eca08e5b17bf21290a1025c4f0da4465c90488614c7ba84677b1b2ce2140c33d735ad6979e484e9447de8d6fa5d0d26ff13aaf5dfd69341d3584af7ca704e8613647aba7354272aac57c2142a01b3d9fd4ef997711a7d57d6fb2017396d2d121a40f328260432ac7efc8199231a1a8ce303225a0a50491f91699a665b7f563139fee34328aee52c78d9edb4507fe602ef2856ccd937c3e81c0d2fbfa4494dac141c990f28c3e7c9a97937ffe2a104b31cdbefd4e737d68c303c1261086a786c00b9940d4a2101d43bdb931c604ca7b6bd44a08f5166a477c07c034f8dca6995bfcd4d44f29d04e71528f585a88e57e200ad38b821a932089a89211b57293d68447390a7746042ffb962488f899d40a9b90bb05c780305ea846234bf435fff7f3b754115b905370c8c9447a4c029923474f1cc46ecc2eb84e84e193ca197dc4a722899f0747292788cbd1fdb6a5b47808a2151f00d1d8ed3ce7e4796a321644f63c7342dfe863616afa2e9d5b528b333cb38b9c5cb32615fa950eb0911beae0201d7436a062239ce2a4732b2815b5119651d690200fef67c30e11e230b268d4431b3b68846550992a8fc9bf125ca15dcdf53d49e9a87100173fd4652f0b9aed7129a11d1fa8ee5272510488d2d1698e06ad72b6340818fccd5870abeef5660e2f10236c81e4cf6602ea856e366b86ea5242e1cd67fd0da8bcf963d421688a739c81e2b55d6c7a1c53b1403f33690fb832b9fe1090cea28850519f03237c4da0a7ef3fbc78a247fd4236d9626491b8e2bbe0c40404671c55775276364faf3b7dd8819075ce7dd1f1dcab63af3cd086f435fbfe584d280308d03d3caab8b1aeb43147b7475e813743eb9aea239c1812ee36008496bf9cb546f2c7a631cd440850ad29503851d7438643a070ff4b41b7a6c555f0392db591fd811dcf2c234eb4d31f438d4dced2c1c96b84766270de513e80dc635359ac2c0a22d6fda2a22d8d062bbef16c1dce22c361f771167b77b9c619b982e1b28e7e14fe0d701b7d2a723ea480de8f19facaadf47e9b74ebf73141f5849f028ea2eb4442192f7a321a5f1ff1d39cc5af021ead9af4222d4237e2674599a440b1896f531447aeee23e72848addc2045410fe5bc932368631358e7891a66ec859c310e027c6ec2c8b748542cab9db72f88e805f7385292f381f2eb934507ae66c924cb1ea37549a31800b22916fb806d368e844a0e914bcc11450f0ee5d9cfc11b2d1cb87bcef39029049b8d647be6981416aba654b0714cd557c759341b36075f342002873a983f89bd3702682fbf502f6b96db4c75f453b5aa783a3a2ae190d117229bba5c3c0f5fee203d898b0974e96eaabc67287422a68e9c57b376bf71d8de968427dfec373352ed559dbd6de1f7f7066ea47999970022f04d48355b847d824914033e0d910ac83b72e1d38125135e0717ae24c33ce4c6c4788aa91679acc2812e3c763d915ae93a621c0db305059619c7b23af55c1dce392d16bf7c83cf15433784d6fe5cd2909af838d3f03cb7fed0d8603b22d195c5c7b11ed6342e2ea65190b33c111cddee22f369c821da386d0b57b588ad4eca66734e954c0790434190c7e50896894952942080f2d8d2409bf13845cf3e0ea3f870cc4e6ea94f91ae083919ae37c68a179de22953756cc68d0ac13ef2af4ba80e8534f5fa04e19fb54ead513e0774587c4fea874bc8e4b2097f994ae87d1bfc42974a72d4b18054af1d505f3c42897a490ee14561ddbb853dc61c02f24a71f233050c453dde2183ff10fe3bb11f237d9283edf4a4d026aaf853749d57ef1f6264b0cf38ff9739dc6ab8f07c28b01160d6709ae1713c98b4071b9d1f81c0d7d534bb156fee452bce0ea0a8f01caecc73667396b3db0c9b10626264ee15ac417f43dbd1daee6650c9c520a29634b55fe046642bbe1e9e603c60f8180ff10d5a733178030f562b01a766648cda0f05a19d096acfe1cabeb4341f9f50945ef76bca55dc0afc4ce1f367f587f64b0149649c6b1380dce6758415e3941556233df53a43d54f61a722d1abcc245960cf3183dab2317cff9e31f5fbc5b0c3bdd197fcf2c50e3b8b759acb419e257d12ec920abc36b732970ca7acec308a20abc667cf216b502c23bb2e4d089b4e20e6179533d794724216981dd921c1093a9d70b157d879430619df6fca6751441789231009ac37b455f171a0af0a659a3e83f406dfb0cb7579c1396d934ab5f2d4f0b2a55c2ab9b5918d4742655a9102261cb4b7a0868a4825bf44cc2df4e70c14a2c183950b8bb3b06ed0606885937438f79ab253b3c964cc7333094cbd42c216aed2943474c88d7fce9c73b3bf0ee8fe09de2d8b91fdcb7de564fa9016a3f9e96f7f33d8b402bd44ba75389fe354d3e90fbda2c74209d7a9a7efbaace7829a734b57f038bd0a4d27171b2dbc5bc50ab0a09a00882fffe96997f9e706da5486e361223d6ff4c76ccac1caae7013500ebbb8f2369566c1cd5deb491ab05b961e027f3c6483ffd4ab9a515ff027cce3761bfe03c5e0e3f35f26edf2dbc727977726fcdc8afce02977e4153e94d14f472bba74bf8bfdc3496288c86a4bb6d342404967cc4b76129145fcc8b1627a7f13ffe46dd124da41f647d8b799756efcf403c14294023998f05f3bdf520038ca1db2c3bcc02af38174cc9fd42f68796c1920688a45ba141b0aa5401d43376142daae6430892c3110cecdf9b2f38c3f2bfadaeffa53b7604e592a441697e16c2046aff229d7ebe9d521d843a00675ffbbaa8f1dac715187cd950c9135bd225493d58ee1b055ceb96366a1101293297d4bc214b068a2d6f7d4169fadb2cd243774a8ff2ab60aaf701d3046ad109900021841767c682db57077c4ee7db7aad9dfadb877b7e23004dd6ead6679824ee5a46cb40799f83f45af8949dc7b40767e751a7574d94bf8521f0bf1d3bae92d4ff4b3ec639d0b894e0a60c13fd6548b402f16b5ce6430131af1f60dba034f1672bac35bf06eefbc7fb1ba82cb942c6e8436275d2cb5d00741cb904c670e11b6d1961998958b5b3fc66423b64b33fbb155655471b0a61250b4bcb425ae633f0428f1d84627f077d33d5f02d226988d13b0953b769d4d80c06cfc311f388111b9f4b6fe1288519b9b6d6fbb62171d65d90712d512c491df036782403278b1bb1e64213cb05ab9fac5a54807f0683f96e7ebbb18dd906267d5839e88ea40e4dd330aa07b130d7b9b695543db74b668cfb36296a0c049e06d3a177cddd699082af54caa81940678a90a941cfa9a5e564b5a0a5c697b77060c2c046493d752c2379745b230906467009c040a7af2fc67f9da52a921bbc3572e3985ec0c90c65f5d4b4a8fd7334000e8381ef1eb426ad27cf33d5b7783647c0e6f2de9d25ada227c305c7181258538f0ba1bf83b4fbe98e90696b01a76beb2c11dc9cad4ca7302e1ab80fcd739fca30fd28cd59232a7b3e1d136a8cb7ea602cd06b3b95d92bcad2239f15931da06a1b8e980511b23789e6327b92442c93660b1e96ba16e7449ac1905ae00bc477445af9c3a65a4e1247acb0030b54d6623310fcd441d78afd706f115803afb31025667a22d94c4f1bc90752ae6f2dac0254495d1e8374ee7888bbe814c53c165d220f50c5386ac47f06d4f7090b476848b3898238217a9403525a9691046b5c1fdc317652075802876a794308b48ef43e4d702c1f37e3eee1559f9ef8cae732f3c124ce3fd2570b5ac551b7c9ce9b305b8ec94270a85cbadfcac9c5400819a2ea6b2f8e450ce8881c752601bc88d943690c6c9bd88b1b8622dad47fae726e2f7596637ee45921bb4c12f7a939509878671c19e9600150f710c7667fe6b590958eb5d903991f90004688cb20204212eb203338eb6528f2f414d24fceaefc50490bcf0fbc1ac92864cbe1cb6b6ea8c431b8a40b32c8bb76a9acc0cd86b253e373a2f0c22c25f9bdce5671f9d302df45f6e75e33d234d3efea1e11bd3eca11f2f2b5e17fd3fa6cb975fa8bf7a317e7e76999d361ba0c695cae6555b146a979f7d640ce63f209a3201812090527db4b5d47e54cc7e850b3d70580da6cc8c41fea339a5f70c11373d217954d6b281383d5621d38a6c703dac50df5388c012c8a425ef05ea51bc6068f930934e3135b3ea54e2814543064ad713f439dd8b430873c0c776839ba408563d7cdf43cbc5844f3d0272c8a59789393c22c7db5a61e9a58735a16fae367a60805e07717b035ac81dc3a43a39c6595709cc32935c9f64d51fd35689a67b5b99a9d920e1491b8005640324abd9c00e8d00130a0bd06cb0a88ccd300929461c6191b8b2812611f1fe39c3403628e15195619366a24cd0c015e100abc3d5d3086373ac852bf16402e1a7feb2f7aa424c96810d5879d8f5c34b3da2ab8be946d090268e0e0e241edc49a0f93038a0af00e6030fe6ba298783d184130803a0c75741f2f78e518ece10f109a4ee536d1d8dee4c03532920b2e9813eaf1717e2c99112cb3cf0dbadee980ad6141433a5be2e5f770d72cb672066138e522908956e6e0b5a52b4ba61cfb1c5c187af4136bf4ded5b7a48af27f064237d93e3bb06b9e4f6025bbb3105337c1ed3d0d2d147e464de96f6f5dfba619b9963173757a0e36bde5aa46bf06624b601486c0d726d07db60df7898c534c4caa11a58331afcfdf73978c93ce8bd0810312dc07b856a3980b21cbb87f949402951fab002d5875c72849145bf42a48ae2a1915dcb1df93555803c04a32d9bdeb456e179c888f01c16c6420a3e30698cb52c0f45c31afb97133c441065b23c4e7b503886ecaee4d8a3e5867e2799dc61886a922b5f970bb19b6f61d5b57895a4b9911fbe48587d6b16e5bcd798f53340fe10c6720f94b3be782c77c02157138bc94f6307dd582576048041e3376e4ca5c449bc0b14819f152830936f3fb08f9db60787803c33dd5cbac72fde65040a50b95ad2c2171c45dfeada41c32d0d2ccbd9029683bedc311314fb8da31f19e6605b2abe1ae5b7244af44741a95e01a12c6576d8b298941c656f322a7d9343d574bc85548615cf4153b248831127f8cde067b1f4af37be6513e077e0e6fa17b48b2bc1edf12a5062e23758b982eaf67a95e84d90dfd74b185d21f6a5cf16d94f67a3ad89cd14b815cde2eeff2ddf4341ac8efdbf6e61b4ad78de9475732efa9a5986c4adf82ceecdafa53b80c47df57ebd855195621f3a4fde9695b596bed9ce70efff96efa1f775b78253a35abd90665b4af74b8ee1d6c66ea9bde8b4eed42566fb1ef7934e8339c2a54a170fddea21b416cfeb4f5f62b5ef71bffdc4c3f7798b1432bb50684bcc6f062ddf20ca4abcc649be19bcd1fb075d919427f0eba47e1db0352423fb01ceb295ef73c2b574edaba30ea15e3f624569d1e652245cab77a6232ebe1c3fdf5a0fe0eadc05b97ee38d2f1f5c2b2d36576454a44a3c57981755770eea7a68d66b263f7c47ac96dc88daa3c61c013ceb1823b715ebef73951f5520f2d597a0a9825597ba5b5dbe7fa7bf132eace355ba6e0ef440695381d73d6624b452491eaf4fe22743179cc5d12267b3d9bb8413fa27dce455240fd0ed1cf02c243d4f22f88c629968fbbb9592d702dd01b9b815026db49ff6edb5b64ca2d6e111481e5f1f35fa4ae472ad8af14a333b2da75a27b6607bb957083d300e6e2ba7eff0e3afab5bc917c87a2e09ebfd9e3f5cd35828eb4abe988edb2e0df4ecc96bafca879ce3ea57f5ec40996ef19248f88382f735071bfa78557d1fa2ef6b44f2de5c3a39285366256c66f7c1d16552b5f8e6597b0db2adb038cc8bb6134eb421a978cb7deff8aa0db296f57178e8ef47e9801b39c7180ff6a9fdaaabb11671560db0b740e9f81b79db8dc6a6ceda5e29916821bf904e86cebbd76b64050fa96484d4a93a01eb15a25f640efe7e8d538cc8cde026d2f813304334bf46f9db463e83ab321738650564184e8339b9e8da576ae31730c3943511b586b816b016dd81e2725cfb858c964d650b77a5f4d9f2ae5d4b4d052ac1b759f448a8270df42f9c043895ec8cb5d9d8fa7f6432b62c2ca8731c4a940b720c23811c9f2d75f2d75703115f9e893ccbf7d8ccdb42d8c0fbe3a305a028d73214c1836b5cd0b87af674de0c60b2a51e40df37f479557db63fc0e08b3aea2dcdf6d528678f349b5a3ff6412799815ac7283f585ccaea2fe45a751705e0302e12fe2a6539b80ccd71898d69f0b21ba54f1c8c0b4c834b5a236d1863652c1ed7371ccd93cec642821693d805c25bbf015ac7c817daaef2bfc524e2dd7b3c16c5fee54ec79140eafd59d89401dbe4c596ac7332fb2d43d07e2d4c547bb194f29097467233c0ee953e7da7b03802c90716cbd4158ba85b6c48c74838fc8e0f77eb2f54715a24bcfccd2022055fb66610e19da02a52539a74d5af5192a06fec88d703dbda5746cd4478da90e44a0394f3862ef7dc272c223dffb088fde1a119b16178b680ead0d38aff1a62821878180dc39a58d52734caac7e4ea1adb14a7e5d5bb40f87d7f775f80262198beffb123a96215128916a3db503ccc1fce82ed9a6655e4faf0c7c753e1e3bfe19bd0105bb8a5e434bfeceac922dd7d37530fd9f37b968ba1d16832698b7dbddfd57bc02813eb6c688eaee10b463d83ad17d059398b6d6e237fa1b377af400dde3dfbdaa85a36ee318efed30ece54df3a42cccef5296524be9a157a92a28383456b5ca51a8021da23c63e1969f472d6e10dd46f5ae92b1b6d89919b60419ab351bc20caf86d07a24e9d8eabd84df83ebc6305696ed78ce24294c150aeb3581a13b13ee2617b26dd92e060bfcd263d6e69e52347cb148b3dca09d131789a0d6c544171b1a172a2f16a6ebeb04dc51ba581dad7c92193372b192dc310ace2c2e359a54428bdfe1164b1c4a95ba92cc5a4a2b455da577e5e82b7d749d1a825aacef002a7c5e252362aa68b172edc45284b358e9f205f22d8c2a700ddca12247a8ce2f2b46b44356fc4c387081c421f5eeac58540b24b61ae52eb1a58575c55d62888ba693670ef6aac3e38a6531436ea529b462b9121a0a59eaa7e996ce23c98ad53bd220f61066edf6e3c143c003e94e2312bb911ac1d64c1deb98afc78799432b622103698dcfc2de4ab8e8610af50edc07e22975d4c9ac3db0fe20c0c87e2fc837c6760dbd098dd5e073f5badcde21d4f96c26d47fb4136b5a26fa09833cbe072d8452e42195c678db25b495d7229dd63be75dafd85edcd950e72aae2b80ba52605a84ea9395c05b45709f195434ce3f68daf2b513f29d93ce91985dac6e63a7605a6dab62ef33b8f1dc7aa7bceb057b137bca48c9b7563b61add7d056ae74de5aef9cf355636bafcba8d29f0d2de594df0641cdaf394a4d8a486fc7b9ef9c39ae1b941922c7d50a59145b5a1a6b80a23c87774b1f62f91b10bb67502cadcbdf6f716f3016ea04ee002aca449d17a5c176887c031f04a56c55e6f961404a34bff7fed60f4e68cc00687333d0cfc19e17d1ed1b428a8d0d9662f5264e74866660dd1511191aad791581392642bc7c8319a40f26fd45bec1d0f083d27c836d1c80061fe0eeb144c4b5c2d333177fdca70f1db36e33f8bb365dad6fa5151ca4301c0ca55ade56fe49042d8dc19d1f603858e33962968d93e2e17b98a3efa2d9a7b00475ab08f9e237805764f4d21c6360ebaa396cc411a1b761b775787c02d13eac6fc77dc64c1c5e2f7f2db3484dcb45c4818f69bcd54c234074066f189baebf89833fc7579592c3a921a2fa71fe77f8550d0e689d21b0bb1b28f7d84a8bf8fe8da18586d990317ea7eda2c9a7b204dde6fef05bcf691e646a089838906e311064bfa1de08c4d5c2eb998bd616d77f305c1f8a0fa74e137c34b4d878d8eb44efb55d34fb14b6a09b3912beedfc9279927eacb8f5e3a01a42d7913c7e50745c2dbd9ea9686d69bc0718f1cac13831345a70a930008b809cf49a90feffc256885a69ebb742ddb5de4418d17436fc1edab32234b43dd819559732055a0e924da6bfcfbe23f3da2a6787425b628eff69dc2fe7720e64f27d3e28c4bec3514507a16ec24c324e4f05cba9beff843edaea4c287430b00d04a899c18b0c85c9a38134a52f51a85d1d3d5701b9242b2b0ca89c4afdbf0e09016794b212e42b2b6255fc9a44d9eb92c7c9140bc59a3a7e2d0991464723fbf61fac4473b1bac2b2c8e9d4b3503de3aae92cf90550842516cedbc79de07a3083af692f5f191a423d61be8ed33c534b15d59319b5ec582dd99525da1fff096da1412206605186bdb286a11b16d6916d78f56d2e18a4533c9cea14bdafbb8a0574b8aa5aac2316661168000aa9aa8424ee322fe7cade2107f5b026b8a3394173905f42e577cbd5845cf3511f39f907943d60cfc0fd1514112219b82de9f536032103b15d549abdd77f1810cf7e341bb6e7cec167ba4997e68e8a133661eec04a65bbd698c66309d50aad9011a06ae4e005a153bdb68d24748a33aa4bcbe627fa22abea7b3b80838d4e955c15d05b00866470585942c79028be5987dd9008399e02b0a04f59bd6470dcce9ed64ff25a41d07adfa736d70c01c37d2668c763dbeb0ab80533e1a2b76b9612ad2616580eadb896590edd40afaaaf234773887ea2c15bc04be5c2d1f599a9aa6f5be5df109485090292f025019f05dcf1a5085dadabc4f6b9666121676b3e52dffa7032964c6b705ced1f00256b3af1a9392834548302e2e4628d802104b4fe3e84e14e6582edaeee29ca840d3291bc9cc07c999a6a30131dd232eae872c30ecca7ee1ab97f7b7c87f9cbd20d60869cdb2f098f492041c3fa6775247e8fa0472fd02d8f8fd32a2ac3a6b348aed3711ccdee1183811c2224635d8b948c1c083f4c6a94410cd501afec74ac3309c01669c11a7eadb5e307ccfaa0decbbb20804fc784ba73986f2fa91a804f777ebbd16ee9d0a212350376fc1776f055bb65dbf2e61afab652e06ed0482c6554db0f4fbcdd2db3321c23749b8f483c3628877d3d1b5c269ee428d7a9f3df50b4265643ad2b545aeb4f6b7dd87c175e33ebeadd61f0a1706bdd82fbb852e5b2e8343e5ca284898f9c9d5d5a61ad49dbab7ab43c61367c7dfefccc536dde672534ffc124e3573cbd81e9013718d630bbaea104b602eb40fb154283021c22d6cb0c4fbe1ff529fd2ec55fcf3b9e9e45d5ab85774c865b5ce737288f25432fc82603d8ec17a12b25c3c2ec86ddd40c61cef1f7bdc2e1fe21198c5e072cf1e35e271900d78b5d29ce01a0f50180d3bf900c7afa6ff616d75943cc4d1ed899620dfce5477e09495461af36db91e1e76e82981698d41c8686f2f37d5cc05923dd91a0694fea067dbf08ea20e822e8f521b95ef0ab2cb726a55b6a8bc8e368a2544f91487e45221b3a2ad11389b4f05f6193229c8565d785841f51b457e2584344a3e88951c4595ef819249e16e90409ba7d1f11c73f1e233eb6a513687db0d2c3a50b2d6d65efd2f9d4f96844561faffe1974a4d8b8bfe1a4c275dd0da54c051baa0f87a8b47efb7693af69405f1e7a6e0f8f668bd30145ea036b78e0c64bfc52578408dfc95e2ffb3f5d3122f8d48f97fd9fae1cb1fcc5afbcc8fdb2bfd3952396bff8942c747f9d98731fd601d3e516d5733382efe1220ef531e93b49c7386e5b5b6513b886fd756ace8d5a3f6faa7a47197a8f1770b8af69cf9234c6d1b6b555a601cc1c02fed419f395876f5c145421de7e1187fb9af73c69e31c6d5b5b6519f0dcdc29378950cbf9bc41d5e9af8e2f5ec0a13ee2bd25e998e36d6ba30c036bcf3d7df3aa0db9b2f450df6f87a7c7229476d10985b6c4fe6e50f0133f0e7b6d24ef2d6a9874ed9065ad51fe4f9c95f21e277d3358e3f74ffaa2e8215fd3c7ff3704cf8a89f4411b1ac930665f74cba64592cd57b1638a5026475d3ab1d1cbc4c40e7f49e0b7cf51abfa1188f1e4884d61a034304464467ef0392c1b575b3cd57bdf6a78bb9f0dc2cc99f4471e4e6988f69bcef7e3858698de0cb3b24d3522b55da3ef3ccd7036c33b64f0cc9d51ab098fea0749bff484803818b3bd179af13f1f2e684d8ce29fec4b7f1006f5807d7dc27fbada459d082cac9f9e887bce910936f371e2d1d90539481976151b9b62e10fb388f5924b1980aa9aa73f7a2857975dfe182fddb7341b4c285cc05ab36790f30a5d409b684fb8da3d5db1aef2d7f4f169f5b014fb91a90217805d3c893d1918ae2fcc6a6d8470b3cc8dd1ca5046b0c2d796a84b7e1ad27d3f93bf2193019d69387dde897d09971ea460077aa86496d3db6d9f320445a921780a03ddcc2f17ad5087a04c61ea6baf0810cc6c1a0966f55e097ea2a5f83b4ccc02ee9ed223ac0b3ae19c41cca0f250db33988dc93f0c1a745e8474a78806cb479ea7e09364037638c5baf6f030067fa461a73d4585259f55deea26d16d49505d19540320561c92e0fa525230bc144cdef69cb2ee6fe171ae9972dd62ae9705efbf1a49def8f571301498b7b4cd9219df079198e8f8989b260f0a548ec56e05d69301c9af24e72d5bb0f056d2a0bd76f71969ab4f751f212c837ecf438ff7ae7266095de1fa285ee0fe5d0d0cc0898ea2b207f3fc9b1dda3af6a2c8e110b8e6f9d40b2894c5f354f290cf3eaa03d293a78d3eaf5ffbb3c5bc27334e2a412ba7b68290051ae7f4b69841ec99d51b58836deafeefc15220f35546334f335e615740d4cbe2c0fc3c34be6d4ce3b0e886446d1a4be04d870a4a947279fcf6c99295b47a641f326cec69467fc3c623531ac5cc6481229193181fea29013fb429acb136cd4a8e9d157c7250af9d5964816a710e1aed9fe1b5d50eb4f10ccefbceeea2bf23c2508e9091631d3433a9f5386c369c90e2bc2170bad6936fbde822e83a3fbf71b9513922c57ba153765b3c625a606a97aa80877239aa21315f9cf80944ea249bccc2d8f3aaa517d4d75ec7330abea6b6426372ab79c6f2d65490ee5f03bf0961af126babac8ca7b7e4bbeea0a787f219d49c97f01c5610f965b4055470ca0fc6165a8537c760876cd6b9498f7208f08f9e704efbf4d9a5c53c307ac667f5678699f5d59f6cc8026a304e6c52206019a503912eb18be47e35e14e06fb9fb9526ae32002654d8beb6f242853c0e838eb6702292ebbe1000018b84af9a0861a0ed6beb82854bb9be8a4dde256f0dffe67b3841042242152eebde59632a52465e2069106c906f2853476c2d22f496da491311de760eda82f715090232c85a52431648812449a4817e9e93142db8739cacf0f33656eccf69531633ab62124247f734eaae9be7c0a5e37ee6f3cd5d4a7774f33c3e9a864cfca6bdd5137743ab8435485619312e17c3ccdab687fc2117a919e1e37e2e33e9e64e52b5fe24c8eb812c702a4ee045eb7ae043b11f624a80ff1217d4bd663a13f8d42f29148edb05e6489460fad0bf120a151145d4a2ee82db032985171f9e7162e3f8b172ebf15062148d41dcef9b05d575cfe335cee23d4f78f43a8ef8b6a209214951fe99f9fdee2a21d14749dec1504772304770489e862c2bda280511eaec47692d5aa9f50a2a4a358b2a49d3c39d24c9a764399317970f9b719353835ae9cd574fd0d1ab7437bdc09733b358d3d985baac0a5978cef47a3178998e596bedf337069fc10bca5b7e82d3dbbd32d699bfc58c4a5df8fd52b1fbe244f3443c6c89f959ebd841bbc52dbdec7efeb0417a260f2671d5f5613a1ca754b440cf5f2eff27137fc99b4f1be7e988cd2e185541561c386b1db7ad232ec7fb21f66e1676f4ada9fb9c71ccafe61574aec65a67da43efab1977ffd89aaaeabe450a0b4fc868fbda43ee0cbcf4e5415638912e1036a1ee5a2fed3dd36ed446df8680fbe1f783838a917adc81ce8bfd5b621d22091a6e1af1512e11a3ffa7dd88b51f6d055775f46883c212d5fe83e82d23e52f468358d9be938070557921f5cc11b1e9c1aa99a9741bd54d3bc7c9886ffbabf8c708d1a99976a621b72deedf219a15022cd358d06571bc5c1b970d5447d38d395b470375c9ae241423829726eae8344dc166356d48bcc750fa363f62f8a9e37e4d2ea62a23485c9e587d8c983280f9e6002feb3f0ddf2f6fe0444f6a9347277f84e7900b951dbfa2f20f7827e5988a444b3f821cb8a49a2159ad0a23c2270df6b19290f2018908b59107894f22de9c30fd3bd1dff2d5a2ed7bdbf9df7cd535c8a947b4befc12ae0f74d6cea832f74f64275ea40dc3f00311de7bc5ce79c78762f1f6793a43e206a3c6e2378e6d94e9b60e495efba5eba7d2e753d467df89d9f65ce39947db4f14af91946559884b09d389dc844c63cb9d9e573046f247593b78d503709dd9bf0c721b747ac87d0e193d79f8b0eba20701e7d5dbb7c8a3025d6f2a25986a33a19639471720ae2a82fc61f1d74e3bf29b18ff253988b5405b55ea93cf43e134d86427def9ac6bedb47ea53b5d644a8efb36a85e29ba698a640229088d391cf7fd1e77731a9f52d38c5f2a83e99aab0f99a9cd46fb6b4c5dc6eb9bdb158b172bb840667235dbea7068750211c25311a298186534983726b402598865da64042c97552d460c8dde8755358a1874b7b9c4ee9b58ff1b0078b284e0d406080a2c516b82086fa9b2b43174a57304971b2f39b9bc29477a3f31b4f900e8edf82306d01c46dd784e7372184f82de766a7a445ea761d9c4dc368f90dde286745bdc8f4bbd39901baf05d34488453b0c74885b0c704f42e7800dd7f958b0f40a90e2f6456625efc8e26f33a8f03e76fd81842089e5389da8b0b0e8a8f1c77ced2e409c59d4f9fc6a03c5c933bb50dfe899e9e3e10d6b9546b31ecf66e8c9fa13efc9ea806ac011e0316013fb2a1cf80a5f1226b3d05ace92d605bb219fb6828fd19eb2ad837eb3963f95e60b3353c6c6666c3cf450fd1166b813780d5c023c062e04376f4346c06deb2a237590afc01ec057ec6ba3be1731ca2df530575b00e8ea1d234e81243552e2e2f2f0e4803d2b4b7c50bfa82e60fb3e1e7f810440c8eb6f18df91a35372ad039189b140d0cfa6de9cf494fbff5ab3c9c5f7af827caa3bff43aba81dc9245d9ed5dd4eb689475f70506096963f918348200815315cbbfa05a07706690e952df856a47e0b0e0b0682c0406e52033a8ca3d887d8bd29f1e06e19c2bc8f61b17d9001be11c9e27b192217e632684e03786c2047e632a48e037c6c2077e632fd4f88dc74082dff88a207e63a019bfb116a9dff8898d9770fdc650dce627d4fcc652d8b889cd6f3c85cd6f4cc56dee0287e1368b81fec666b8cd3ff03756c36dc6a2c80e6e6fdc83227e631cf8dce0f6c64afcf88d69608465707be31970e0377ec1ed67216f67b43202120990d1ffa2381d0bfcce057e7b6ad0c06f0f0b0c341c6e67e0b76787db79d0a1c06fdc8224efa6b7170605fcf6b8a0440bb7b7f76401bfbd2b3c6185dbdb9b228701bfbd296c4f0a0df8ed451145136e6f0f0a07fcf694c00409b7b7f7c4037e7b4d3479486e6f8f0908fcf68edcfe67e4ed8caef08830807e429c4ecb1fe0b7e782db06f8edbde036027e7b32b85d83db347e7b3ab8dd83dbbf3d2160e10eb73797071fbf393a3c91c3edcd4d21e237f7862ada707b736eb83dfa2df0764650de0dff18d670db59b1637364b0420c3f5db8bdb92a6e8fa250717b73596083abc2ed0fc0db1901dddfdc1774e4f8cd05a9e996230dcd74fb6e948103217d68592417b407e3a13edf8cb850fa7059820bdda5fc6b6801fa5eafe686aae86734cb2cf9d07afa9965ab0fd71e6bc67f7fcdcf7c9838ea05e10b78c10a7156d6b4b2d7c151ebc0a4948642339bf76645b2628c211c9c1586437d78641c1c3bd3275a30c6c8cc6dd9da337d6447224424f5e94c28df836ef420eb9f4718f1911ef511b567c55bbd2b6a4f2fe1bb331d4be8be05d3f0d7a02a874182581ab410cecc860d1b1142082184d647f896a51941de2da24319aa721fc91f49f8b0c6aa068d5f8327b6cc26859657d1c8ad783b53f39fa0ecc7adf02091e869dd993ab47f275e4b66eff688d49cbb30eb2773bfb09d1ddacf037f30cc52c223c4e4a1fd42b85cb26489103c3c54e5cf437b30fc19f5702d22eb92ca4379c06b69120d977f8821687f0e289239724c1db4075ff89935e911f9969c3e4de33f6f47fe583ff20145a64fdb903f6fa7eea03ee15aed81fce1012fd45617de1062882bb6c432b7320b2d9a65ce66be53157da79a7b43be2ffbf758dd81b3e1b76ce5c1bbe1bf6cad3e4aea92cb1fdfad3d45fcb2a40f91434a2339a6cca3ea0b69536ab526b9fc3cfad695b3e13f920d319de31cf355087fc85cd83af8dde9d336aaacd3e772114e11410755b5168750df67b7797444096750558ca81b80bbdab183aafabacffaf7ceaaa1aa185976f0c01d2b0900aa32620580aa2a567d60b76ccc569fdad3a316799a592a6dc6a37fa0aa2c739fd9ec331e1347b5da5a96a5aa5161b5087cfeda5369b88b7c17a91d81ba50370014678513afb4b508d3f08d5aed8942a83d100786c70b0f8a5aa1dc87981ea61eb4ae6a5fc88e063e11d0fa67692e0382aa627c1fd407d4a68f152680085d0abe00a80fbfd66703e01c54657d3613630686cccc0b6dc6ceccccfccccccccc8cb4e2cc0c9c8196b601b9312622ed513e2b1891d1b24c609031376a3c84536690d58a71076c045f676e2743859b117c21b4a242d5070ce0b75d42cb08be511b015726da39d7dd468cd009e5f5182a1dd139a224122dd159a2267ab22a4faa8a9dc50aeb25da39d7dd8d1db97a09f8e0126ea49d739dc56a8976ce7516ab25da39d759ac9608415a83300c1652a265c1410a11293e52e88d9a071983142952a4a45229999addcd4f35f82f2e67f4f0bf6dc4877f723ba691cb293d7ccce5981e7ebb9cd3c30fb91dd48ae5765ede4d3facbf5d577336fd1b5ff8eeedfcbbe9d495b6720a4a7d573e47237ad3db49a1de4ecdbb79793b389ad3c97136fdfdff766abc9b7e950f9942bfa2757db925b8f5df8bfe55ad88fafe290c7b156de37bb2395caadf6479bc547fc916c0a5fa497601239b53937d3fcefcfe1ad7671fd236a8757d68eb87ec06e486fe06e754d16ff02f5108521e3064815c68dda55647d3cd4dc15de1ba719b53b7b674da91f88e1e19f23ba276446a07132e03e00ea4ae6b3fa3e8244b5de7643be23e8d59723de281e1bd1bf7ccb4875f773615467eae5d7e20c71ef6b087cbe34108869e2855e69e94d241530feb3a67c3a37a71cff1856593aa68cd0f19d5d35ccd755ce385d9fec0b94fa63ee629ddce0c9dadd3b2ec65ce592935e1a821a7eea9b3711f0a3d6696d1deff70529c534e24aa75e47e8473dd676e9248a55255997af075ce26abb356d36884e24b48dde6733ca22a12c988592a31a34c279515aaaad051cda887ba421b902b8930b1484313d3f49cbd561f2e3877149f4c84ca2da8fcde45162bb401b9a5ac84954aa5d2254ba552a9c40f063e9929b85f10f7c9511a40ddf71ecaede5d3fea45c2538dd6167ee22f94efe704fae04a2e4c5ecddfe704f2e86394ff121de5195043ec3516bde51558d9c77f4002d703ad80335e7db1ae195e71dcf3c32e477905e07bb3d42fa0c479542094e39fdc1536e7c4855510549f094fbbe91509f4fb9d70f1ced0038f7391c188453419c725122269398c76bca4881f407cea51fa98a3eadf4198efac301cd77b7647fe0dc8e5435ff05f5e716b4a28870c9128bc28ef05d8cfe2f4209618450e3276454a244325fd6958457ab0bfa7befbda63e30aa729798118cb28f0f16e3c3988e7342d7bd47183d1363ba0f8d5cece8ed315213731673bc594fbf2084535a8631d2eb21b87d79c3173dfb4c42b7e0cdfcf54bd14ce774689b5e1e13f13071f284e4a5779f51cba3d189fee9f4f3455688e891f81d228d89f8992cf9d7fa24d2bb3592a885d79f53eb574287fd32495571be453fa3a7396715f4f4843ffe8c9fc59f9f45518c34468d338602e572bc3e3e262d19e5c7ef7aa507314346953252033c38a2aa2c13711366c204bb304d4af995aa023f4996a8c136819d7bfcde7bef3d78e3468b4b8b0b0b0abb329795959550144384215d60788c54553d60ad7434fe9116c0baf2692e935c2e2112a9643299e6e984442524e372fd635836b32c73b1f00585c29064d9a4734e1791a886b258cdd191e712332473d210a5d425b4c44432b3584d3a5de6a448422a444422178bcaebba9e1e81b1ee6c5c5cb42d052f2124a29677b1eeb64416d48acac954228daa284467865d5b8b93db6fd94d4589283305c2d74055c844331365b566a3998d3252566ad2a40917322c962c59427bd6c036fa2f1ec20636b0210b2cd61025ca935ca50b21cb1c15545091061f5c91896626ca6acd46331b65a4de6ab4f17ee324dad0863664efa4841fa01ea0340059315ed14140d1dd593f5870aebbfd0c518432d1cc4459add96866a38c54ca2e7777d84e404214b01d8a52a9db614701dba1804209a753b7c35651e976d84e40026c87c257a80a76b7c3760212603b14f14f493011691484d0fe40e9e0eeb64831d2cfba69682e11b3f9dc0ab584a23a4f177665a318a36559568c966559288c44a395cdab06cf119a34010b5254310517a26c35f1b3962b5a985f567a964d6a5d38270d5993c698cdcbc2b6dac98daa48295559482a66848abd48843d84cf4d54f83afad92352075fd6af658fc8c7a4e54198b6c91be30c42f52a38c5ef4f9e0055ca83f21adccfddaa4feda13c32a00e61d39a97ed2bcb26c5ae396928bb6a1d914434831042887d0621545d2f93f3b20c1d3a0cc36ed47ab3cb3a0f82366a110e2d7139115551a13ec7a18751ec2dcbb21ea32a4b8489a80aaba3e7386485b0d18854a22acb08f5b26f763314ea015cd3c81e1d9b78e274ac8f1f63fcaca1dc1ffb26e9483b1bf824aa0a59b7a3547b4cad021e912cabc5e5a5f6d41e252f30f149086d33aff8bda4aad7d0537003ad2f437567c230312821aeb48199bc30955b51c9bb4298cf855aefc0d1f007a108f508990533798530e816cce415c262118b635cd427b5a7f6d49eda537b6a11ae2173b7daf3d2b3f688a68f07d5e9e341d3c783e4f4f1a0e9e36c9c982efef97c3bf1646dff691b550b49297f7e7eda8607350d7fadf2a9deed6fe85aed24dcd06af2474a89f688fc8e3236f57e21aa825378c4dca7d51e3344eb7888d68535841ee46ef8e30d7924bd96e963519555a23cfa3661ea13ab5c1643a1a80ad27f2f7b4755f033f89ed566798285ba1225d8377661df5809b330877d0bf581691e056ca1bea4455a117acb0c187f96fda1360d5c6a7229d233e9df8f4bab4b91489c91b20b73ab21adb11165b14398f44949a73a5ab12e53c8ad16aaeab63c89afe0142914ae84047122a29e21438cf8ac7ca26d2d1a68d540d17694fef9912beb8a8db9a43cde2d22b22db0aa9d4c7034fcd44e246e0a611eb1d309277f9a2648fec9e55b34a57071b7e93302d47daf624750afa9ca9f50b81cf7525b05c3e51c315cfe2de66e73c53644cf3f7d38c7f4fcd308e7c0e79f4ad8868be3197263877c7e7985d3e9e79768783bf1f96514a7633dbf5483cb794ec79fdfefe06cd4e7774f8897df503ccef9b0d52f38a1baad3f70362f5eb8fccfc5b5626e2781069aea14ea91cb52b4ede19ca8591f4ba8cf5480f564d7a938e1f243282eff8cc2e5a753b8fc242b5cfe131597bf6e0188ad8681f2738df212ea31aa6a61b17d512dda06e496fe3d8b75ce06659bc98a93922fe92a9eac9e5cb6eec0ddf4a06d0542a80ae1f26315c9e597d589cbef950997df544596169968214128b69ad8aa7d44ab9e9e2794ac94583634605b2ea5e5270cc58993283f3fac0510d0142952b6789483822e73142b6ec264c58469942c2c2449a6d34865a58ae82c5978357ff18267c9f695810183aa4a96ef8a15b2b2a2f2232b6434527918aa5251c192ac56a7d3bf50d5e974c17802c6caf4e3c2ea52fd5504c303b3484f4682417dd40b61cc4c1cf5122225ec16188aa1aaccbe5bb2ef665c24724fecf8190c55611836636466657d1623966cbc7f83638d2c7677ebb731182d2b7421086e63d1a560b4e2c39be1f820314703a50f21074484b233cbc29b72179346099a950c196e3d86e960673d5684f56d596f41cb7a19d487a57112325632ba219c417db4c64266ac6660ad357c5754437db4f6b6a859c51a9b991a416cd387c80581c724f5450e2207dab8e151baa5619b6a1bc367208c18a75b19cb9a6e5fc8e956bbec35dd7e864db72e2eecc09c6e63289d6e61422fa2d074eb52a7db96d168ba652191a65b54a934ddae984cd3adcae934dd9e5454a65bd3caca745b42a1a65b120bcb743b6a69996eab8bcb742b7a79996e43312e6060a65b2a2d13fe59b4cf32c1edb6625ff84f053131d3ed74e162bacdfea75bccdae9f6d2b4e956be7831dd5a574666da7861c0986ee1cccc8c417db8ed5475c6f82eb4b6d7a5f66efca5dd52d741e677e3afc5e7a5367137aba4f83d6efbacb371acbb2586f54a24c3ddba637774518877f8c577f346d3d1eefa82aee3e77a0cee1edf7b2fca08e5287a955deaee767f1731c6b8d9db324a8eefbd17657cef3d18a50a171a763682513aadb9417a3ad23a1bda6db79a12e4697af546d6fd2e62d3cfbadb3d67436bd4a850f7a49bda4d9246af341d8dda26811bdfbbbbdb0878bfcae7f805eba1be2ecd6601730e643dd4f78ff5e05c944c75c28e417d7e92ad2279c51be532d2c51853734ebf1a9cf2f6c68150bbd134dd1a8c30c69ae8f8b98639795b91ce5008a2442c2cce326a697908bb0596321708217479ef1a08a38c11465639adac10e03d61f11c6f14ef784bfcaec960ac185b8555ba4f2beeeedd9353ee99507f1d6a360c1a06959f6b17777796da937938e5bea6766b5544847b72617c12959a4e4696167f990c2363bcddadc856992697e92f0de31df31c2cbdcc1612faecddf67477774b0774e367124a18374208a37b9d313f0c930f1dece7e1360d341f46bbe15c8710c35145d93f91b6c9ad52ad3a1affee90ddbc5bc65fe68b3eb3a2ef17d4f7ac05a7b267204e6554db8044e15229c5859fb18c31c618bbbba58c0e7f3829ae73144e6556702afb1e525ff638aa7fe83749b324a412377baa6df53a17b9990d16f224aaf2283793a9140ece8d1b399e9127244af68e73a4cccd9ee350b3972d2596b9f4cfdc2bf6e4fa4759519f62e2fd02c79e44378249c5c47031f330ac8cf6e285266361fc8c8b1855e4625230342f325c6648aba586c5064563e54605e7e483e9871210a41aa3206a8ec8c60cddc04171ccfadc9c3ad90ec673092187b072441df0fa8e06c07cee3c42318ec9854fca5a51a8bf9d4ae1e0dcb8c12447acb9aedba1672ee6db17549d48d4f75273ec3d2017b8771d5f99368908a9efdd3ed7519bced9b8acae220bbe988e732e67e3be59a0c9340c863203e3db264e8cd92d6837379ce86cfc85b7cb4cc7396f9d4d4328638c5146d9118637c39914a73c7a7b777c2e63783f6f7798c9cc5e417d1fff39f273a8a691feaf79e64168b3971aa43e97e2e7facd5c3124cd4c59998ca9fd40dd7e7f1aaaeae737d48ebc87fabee1f49a96d2aa4dc3a9d7f1f5d3ae86b301b9deee1d6366588c18978c09415e72079ff782f08fbfed6f06e71c9e30862ce6e083355c71f9dbfe8db447a4c2066cb8620e3e58c3cf65b7db63d2232601075740c365243090021aa20ca690821401442a6cc0869f4b878cc40283fd86aa2ad76d239348a2e44b4c7d3b7c4daf065fd4b3b9fc72002e864bfdf5202e7fd3b8fc314e67e6e5edc8bc9b01f010c139cea59eb6b1dc773105172e62a410130323050ccc8b63f2f2e292c3c5a56588961616215858503c28d4caceca8a8a8e8aca09c7e964ba6132956c944aa41c126914c468546bd42a0242240afd100a511f289d387366375986d1c0b0cbe6ba648d94d60ccb8a32628434175e78d953d763389dfe9f713aec6cfaf9f2cb381df792535bd438071744c1e2622ec8361cf0b71f72d0a031e3468c18323e5c276164b860798162196da44d44cadc8a9c03ac025cc358332e7ffc01c7e577806b7280b6b1057137c9e45a0f653f20f2ba1832f76efc37d155b9ee74f9372c13b9143b9bb9b95c7e2a726d6bf9c00cb18020a3a8106073c5882b531181c44e23b02e1309a22c95005a2413781cdd13a8220a985fe4fc2115487a84733a2ffe743af0f9652ce2af7b0104be8b07991026dc23217730c1ef2e1f819a6c1a117fa855406f6b6efabb2eb908a420d735b6e04b67237ba86dd6b3f5cf9ad635cd0dbfd6b365b1f5cffaf8f77a7e0bc3306dbbfaba3ece0b2deb253f163c8bfbf1e3deec110ce4e2fec2f59b7ceb5dca2bad5b847ce9524aebf97bda8fd47d4022bf3b2ca0e649f8608c5183fe2edc72d6a5f5efa3061db4b4e85c739f3779efac4b89b2dbcbd5c1a629816bfdb3dbdf175fd4e2bb7c470b208d8037c6a8c997067af2b9fc2bddfd2f09a5fca86dd775cfddfdb9c7e7fedcfdfda8e15538f932e91ab3e65a3f2b8870d4de24bfd336f7f133e75c84ae6dd5397e4e804471fb9ddd5c93ebac6859daf62ca9b94dbbceb2dcdbec8d43e58731c63819c6687b683fbc07191137aefb0cdaad5ef8f2a5b371fdab22cc360d7c59254abed436c86f836f69ce23e4e7de8f1bf7750edc73ce39e7dc7bcebdf79c7bef39f79c7bcf7a672de7729c76dd73b4007d8b70ce5a23f80dd569cfd9b9340288f57805aebb5d8c4a50826b71043aa2734449245aa2b3444d4e38e144142aae50039ce6a854cb1d4735ecd00c00000000c316000018100c874482d1344e24b1f514801162885068683a144562490cc32888821808214601028001061985904256e200a5f261a50a812a057998f14827a337c06b870c0744871e8582b2aeca4b5d64c78738aaedce2e9a7fae5cc50124d24bd05b28cbc94ce9505e4bf53efa1daa49d7512df9230c3c4b83cf373a1ff509f155d653e96eb82bdcf62244317ac16bf406a00e4ca3a3c4b6cf5d70311db793f47c9e07ad911cdb4d82a47d364b62eaebb6c76b8fd48962f11092092b6ac779640cdd71018f319927793815a41b2ec816102e601652980a00053566720a084f2dd677542d6f5465fc8a7e6654d8cdabababed6cfb38e59ad9c4dcc6ace6a3069689a6598612d5455d77bd382721cae84a85527b36f29c1de687178055ed14bc82f75ed89c42153f4c4ece1a79c8d5c999e71cd8c1c8352408e2d6f5d150f9b339d13e63ff02bace7df6c0b531f673d8f7829dded2d955a48544cc16a0ece25bb570281d3778312fb2ead47b52db6f5409cab4b7115ffecbde1bec39e401808124ac0a2540d91f3a8aa45d09ea205db2cbd69af162da4335e033fadf271cc43ddcb720700abbfa073f324592b04ed61c19eb036375579175f21fed87dba48a358aa816ff98f2516a4a007f262c0d5b18500e3c1c2635af2b89a22514d2975d6c6bc41b37452aac0e9c66487aa8ad909704ba834ae3e572bb626e65cb26267f65e3606713359844e6ce062ed0033329c214a2225e6c9bc8af99a0a131a7e35b1212e3ac919820c69b14c79150b754d1729f916a103b5e4a9995fd6005182b50c200876c2ef20d3e7eabd11cc9182e66815b9247f05eb62c10cd964bb847ca33058eb103fea922a5f62886b18da429b238b55350388414853774a31ca2613e6cbc3fb5f331607a0d6683739259af477285eac5d19fcf30873759f6e37bfd361f062b25d4e855c7b16b4fb2fafd9079266adca2e703338568beba7960246c6e98ab6172f9322346a15460e74a3e3951d13a7c2bfbe27cdc9f3cfada7b48842dd8f15535995a084e876db443dfc1aaceb870490a736a61392466354b822fdd46376b41e9e2ffd20f8d9d47bddf68acadeaa07c9ca2ca8f9ccf2b261a60c6efe34c81940be1c0d2858538b56a55071770e6ef84f8fd15e03b8d481f9d6dbc95094c117bbc3d1ee48d9ef96e44e9566086ca6b88c71398c11c1b820d3711d44ddde486b61f656241617e819173eff8fe109c2367ee62191dbed77beaf04652de8aaab243383eec7bf3225df2dc35b551b5a48013ba901fe47c3b84f673afb1430b910c508f999050f4124c6d2b4bb50007cad3e9dc0d62f77900d1f282c086a60ed4f8f9de5a65f361b9e67303934102f441a191a51884e3fb03d14e790dfd6b9a7ae184c53962b4f279012e100ec7cefb3ea279d52733431fda256ec6247f76abce1ebc078aa16acb33e3dbcf83a45dd0eb19c71854239b9f61bd89ebf26b9971af48ec5580aa214ca067bec2430f4b1e57945a91f82b0f3d96bcaba5298689f54ebe67ae719f82970e4015133bbd92266c6d73e09f0d8f3e37edc9c802026725fb7a5e8c2dfa9367b6c18f9bb27ba2e6745c87e576bed72264201fa749684bfa6a8814079ab8d7142d24533ab61abeca410f4bcda710b371e83623949a73cc4ecbe4aa8cc1110b781cf3c03daa554c95fdfdb794794563aaaf0893751221d341e0d7e5c980703635c09b87bf53c06e1dac5441140a2eb1119a1f24113e9d1b517c0cc722271d6b3a476b62a27a7f5f664927cbe1111caf2c500922abd2f74157c8e704396c360167ffb3fd79b9fc4dd60ca36698da4d248f6fb2033ff5d6d47c3510f62584d35bdec9a8ebe3ca53784f9b02257bce89a3696ca2d0a2edbb7e3cd6a001bb0c928755a80275809c04ea6706a1c306722b40d2a140dc0f2e9830c44f1f3d04b14c13cf16e590583313841b5af08e21e48dbaae1399335e6e2f73e775099b12630733efba05e524dcfbd01567ae0aa8f959309b7d17108ba58b37fc630245723ddced720b323185a46b87d2a2191ba78ce2c9629a2eba5e2556f5219063d7e5de787db445417180fcec4cc403f3cd59af15fccba8311dd2b6476232a96c1f1a6f6440a6fe89d264ff5ee9f5156df689bdbf7610a644de7c131f01c5e36b1016833ae39917c38a261c6b9b5e993f6032f532cb260b560f907c5c7ae6a00f02a5286ffdebc6801cbcd6ee974ada0bbc681ec38ee9bc8c73f60ae782f384ad4b6e37088946b003ed33cbadef2b5a80fa80d75e4b2c41f0535a56fa40dd1453e39127a513ad355789f6cb4cafdb4bfb13f07a7914b287a8cb9463851e8518787d95dd4b56fa36e3333fd170f3fde763447fda3f38579604d7581462096252e256b838e19b20e2626569138781d8b0470e05e2f14fc413fe400c128ae0125279cbfbf776f7da2e13994384b1718894da53a51625cc8176a0beec414e48ff36167a6f50e46219e4108856e83dc13c35a40812472cc7d543f227d5264aa058c2bd9d01070417a8f75b5b505a60c60668d94357a7d15dd6f47cdab9709ebaf8bfcd262b29de0b5028b08e1adc1eb789992a34fc5b23e5978c2181cf1d8d18dc562cb08686be0050b15acc5493c61c7ba24772ff0723b94fc09a63052c2be3cac3ef684586a6571a9ba21c9e76824d35e3692177c46d7936631581ed28c3e9c9c89967d7e52c26f66d1576927a5bc84b38b6bc1b3d590b05f9e2bafd4e94394b1bd9dbdbbbb355732a120ffb26c0a81f931a98ec150590853cd462fc475b8e467626f7385e0992325b50ca0796eb69a5e0c8c2d9a77c4ef72d266c3a9bda92b0e2ed7f454fb2d98392e03eb9b6f73c1a57e3fac0a8f460644d59da88d142fd8c76460691a2e40019c6acd01a25e92789a03bf0d1400d48a80334e5bfa710a1fe9f571d4300af7d30488f77b0ff12fb8626cfe7a1c1abccd9c493152e63aefe1bce5f03459dff26ef779c3a495820a33d75c38a9abfc3168c65888f606950753bf293d83057aedce5b648553a91aec4530d5875cd9eabba638df47f510f7c0cc441897cec03caa2f906d22692543d7d2cf113ec5c1f717e6e280432b6758c1012365d59b53bc1458574641172ed44cb47db6b26644b1e5bb40658a78fe2a54df1d347b1a50fb12c6d13378e75ba215eda2816a7e92c8db1ae698049aca9d083701db3e69ebd3ba2c354b45e7a0776d3a7586943bc4dbb9d6e842524cf6c4e39eaf5d066101356d3a7d8e9a758d386586943bc6943bcf421def443bcb421deb42156da106fa5df028fdeb82e14c692fb6979e622852b331876910bc712a0bf676037210ad790e6277f654358fcffa88ea105506d7c5a2d6d8a9d3ec492768a9d3ec59b36c44a1fe24d1b62a51de2adb42b4803da7de010b7d4d1584e45fdc91ffb5000a9f220c882e54c391314658d82cac517149a973e11865c9f7acd35d6a61cefc3b9fa1df2e557db084846339830acfd1466bd94452d03b66d5334320e17585b422c9d8665e988a994c9d4f42fdeea263b63eb559fc5019f52df8521eb2849e99aef07280c50d442feaa60994b0716adc067abab64343e3f1ef53aae9a40d3416888db47352363a5204491b3be810c9f3d413ddd171c076caf1d302ec1b8e790c1b98d2720d6855da01b5f3491dac79880d458cba5b9185b121890010c4596ee063b091c235c62ded32f040cc26faddf13961048cd1ecd879ee0e1a009aad0f20c6be0e426727d17b903ec036417681adf2135343fe37399c61d481cd57d3c004402d7a7c4f3b7300edb339d358a99cfa639e810eec469d589c929ded93465087566acd20d2fffbe60101eafc934481ce7b0e9faf952a45a8b5630bde83a1fe10d00b74cd9f53ec2efc984d8c6830b96cc3aded21890c95e4990b550164188c256458861426709d3d33ba030341d0be497727f9c2503bd1408062fbaab0a73c7aca714a970ca2a0c1bd4cc12021611b800b53b8582ee586b8b814a12e584a9ede2b80e0c87c26276101c7c9c571be3a748c9ea58623de8c87830299848daaffe61e8aeffcbaaa4e9299541bb90695ff8bf7487b336f927ba360021f9370aecbf49bcc6ba5e68d80bf97108a7024a5b477b57ddd42a9f1c77827692e521d0e35a97d73d3af4a2cee1cc654d5240309ed4c91214bb007478ff64002783d730cead2d1af9dc9f544df17006c5084ad495bd0a29544d9753baef3160f30f221740b6ce14392872f4d5e09ba1df8c2d7ee330407311c194b8f8184ea3a5cd254feed9cac5180f8b8a73fa29ec0cf47413f2acd4d3849acf9d8191668a25942871b75ae0baaf4b7aef94383442ef60dffeffb9ad00c33889d8c118eb83db959823181a9f7b09fd413496e9f4d4c4a8175d46d9b3b480d4519ee4311707a70c0a6f7de16092fac8c3db2870d287bf0cee029e04317d1aff18ebc13fdc2787b31bdc81ed0b554bf86279ddce386fd9fbbaece40e25a36e988e078fb5dcf83ad2c02a14458ea105109ac47706d5d75628da0fc419fa5a0527541c66515706edcb66988075dc20195969b6d2c9c0428e48c5bab4f1591bd79557618ae8d7983f9b4c17d41602817edba9d7a4231e132668190963e5ee9ec43de007b178e065f0dc8ba4330cf74866e888862209cfcac81ea44b27d688f79e8dd97114191e91e6101a5f885cfadc5ccbc86e567f0554be603eb9ff028b05448712ed6a0a304ed014534373da87b3988410dd59e4fc8f0a26862543effd4e2727ba136c0894d98c9539eb8d0d794dee8089d4e5398ca13207b9f0f7573e79384296f981738868ee4367823a1d2cd7638bf0fec6b62a720a51a734b82412c842b5f3730dc17468da7e4793f8024941e12629d6ece536e8dce43ffb5c900f28a23e67da910a72ff8a0a10910e7f703e09d1a4a62922f4e9870755ce1c94cb2ce32eea1f3eb2298d01684589fd6adec25f1fa5cee3b99056c828addba837055561a9959fb2d824e324126f1f22159e0794fb46ad541195844b8188de43ca3da756ae884ac2a44865ef0061be132b55446565522492779072cfa9290b2692722190d27b0cde83e14cdc53bdb4d1976310c2aff2d9603600be9f22215310e2dc935b2243b45a5aee8d94d9b81523e6b87083c8de50aa8e093985a86d46c6606a6cc08e0fb65dd83e49ba8999697e12d125bc7aeb34759244e80ddeb687b2455a627bf0216197818630918c08b7d2b613eac0ed653eb3131e016a9c9695a0e8899368f222b72aafb14f73702e2f1326f7baf71e87e763571768a41ca6801562137267cd6c09ebfa46ad0d8c56a797a273161e2a8f02f9b9ee8e68e29a1cf7445f5c0491f56828307e37cba463859c58ec164af1b345efeee0cc9f7a2897ad9d4240e94793f1e0c41dd1fa0ca85b91455f1983b16dde5419e33c044fef2b01137605ac51de14a2bd65e88d7a1d2eaf7fd555fc13ceed13aa1e1003a97926860a0bd947db7eea10d28be5073a0c5630820e780fd04550fb3d08d5dca65356ed04cae157285f5a7f646dd5f1a007a0d9f73742597a189d716750cba203d059f706b51c0d049d716f51cbd04106ec36630578a6887b24bffe50c56c0877867195c98322d66583f52f1d5d14682fd02066511f290a3014c8d9fb517c766841ed9685df079d7013bd8d45dabd8fa88b8a6942d37d82780a9dcf18f70941f6d8c312eaecfeb4ebdb604c626ae1d136362e4fac9b5ff9c93a7d095dfda6438db5d65e57b3c430baa45292f5889e2cd5d321a6485bdb6cd9d0a4a124e18e04f730a10da746dc9cd45ce3082e260f0c0cd31201654da044b67e1d6e7f85a39d7164ab3f99f7418770a8a3684f2fa54dd4376e96683fc9f5911c6133ad052d738e59ea4129fe3056108280ac9df6a620138e4c79a28e49ff2b8c5af274a3b2b8f3140e69a64bdcd20d858a794e1e36b8ffb19652897cd8bcb23b91e5328e1de119b9e37063cfbe9e73dd8de16750774ceac9bf2e8449501fc95b205e92093b976ed92c3016efc61e0b88e60933d255f3cb885e43a82724c7c277bdc720aae386f88541e73090ce40d761b57ae40d169e9e294df41072a0bd035a7900c0f53f462e2f62c1249dbd0124dea5930ae4f4b04080c5dc4896b954a2ebb26a048155d5dad8b1f017ffb88e8761e1d8f4e04e5f373d62e82947c959e591053d98eb1a8ea865f0dd80405a066bc2bae8370896b3221c38e0e8eadfb84c4d062fed229d5e69c2bba0dfa546eee1e515af046301f57698989431723be4771323fbf5100da33b844b3a051f6e7748b7aeadafba04dd0b48871abc40c540906d8555ebf625084b6c58667d1ebb54fff334e776187b8f4862a772993ed35bb8ad078d9e7a10a5c716e8e483a0acff53c3d8ba1159f4e15a363f313da4961d3a09f29065955fb25fcbc638ffceada98ac51b7f59d4e83777c8d05c0848499fe6b2810a1194e2a7b31a0442e2780e52354c56e4cfa60cbbb8fc2122986f2d1e4b55ff8f6e04310af7dccfd6eef64d1512408a6310b54bee0172d0b4352b0bc78a72820b2b7381211de773061528dc20e0a832da867d68e00c11cc4d7583ef8d885e7698ef9d8adbea1cedd0be09af65e941d680b295461665775a91a57d348ee82529f39e4ac281b7931c1c6c8f88a9726ec4ba5c6491db06f1ed889670b300a44dced77976af81dc45879c8243a8c877b083d830c6dcd3b1f0032c0be43f688b222617c98d7f9010e2fd65d37a06388820de9556dd298fd45c23424c263459d7082ba68dc4bb46d6d0d4c4a2c3d49c0d0e016f6f374445eda0dd6240f537220a9f0100258134b218e9985c12789976c6279b4b64c38c2ad2d4c992630a73cfe4d755c93b5b698e390958d882094f532d0363be50591421b2475524407e19d7e42461c3db13ac5d6b3a511d4b09c78c94e1ee565330ef257084151b430f5fa95f2e7c3f9eff202c3d4a42222e328054081d59d93965ab93ef71ca2d521b6214e49721410ebd505098deb9998140c2c55756b030853365bce9678517f366194875b30d31aafd816f0bc1a52ba2dc01863ffabcde6692545e90d00c9382c0ba0e7278924a1b7b5d56b21818248aa8d69952666be17dec0e124592d0809dbff7532254617a9fa5fc8bee992d3046faec681789b5fb5909e25f697c896f5b23b26b3d997bea88c02a4159813669cd117769439b739098b99908ce2387c24e6811fdea5059cd0140b060bc812e2a723680dd2f31b4bf33ab14e945ca91e6488a078e8f0900cd9f8843986d0c51e5cebccaf4d4dc89e4b26f21180c84bb4eefa22109a5f16164ffe10e8a9b662564b0a0ec08d326b41cabe21e93ecb8389c9f55ba7aecf5d6ac7e0a29f99f2faf56914f21840f9f13a9a554c8f5b1d6cb0af42ed80f514f5363e7b667dbab3fea35b5f76cf526b0345cbfe7e609a96ad863415e719132551053e89dc4d5295222ee8656f95e159cc0e5ed5f6d4fcee7e04bf5f1e00dfd8e948c15ab3712200472cf89ddad2e5adb5ccd1e37f3246a25119b95fb7f068845d9651c868b586981c743673a1f6fe7efecc962f1d874f7dcc7bc0fbce6ca5d5cacffdefebd0a64928a15b8276749dc96ee311837537656534b86003b95ac840281c71f227e8b20629b3d4394db9053bfafd13eed4a6d13030e98b648ba9912b08a11a2f23daa44b1f7095cbbd2381a12010a2c0b9f542cc9b764907f081a15a8206b3043d5df25c413030514f7554d72b0eb0952561d9f3cb77f9dfccde83fc749fcbe8ffcb24f6ef58b94ac472538af6159b575be74e6ec2eb4e13f964fe2350fde47b2605dbaecb0b8d92423dab11de5938cf9a7ef752a0160d37d728ef7530208f3beae221f56467efbea6426a1fcf36e5621cd2192ac163f491f291cbe6aa47eb2882b48d20a6427fef642920d5b81d82aedc4534a57a72dee739d5c5adaa7deebd897110d552e56e9f38119d7a16a7d08f17d5ea1aa4e3e0c217d5fc070091c1acd827e0cf562bcde50df297dd3578ad2825b75db3e03933605deb767ff06bd369e1e760a7d7d00565492bb9b94547db79ef556df6c6794329253e71771036dcc4b72ea88abd8fa59d3cb5a6f047a8d6e668793d84ef401f45ead70786970c5a41554aef4181368626b822d37afd419ae634a44b2fef40caa2ab9879ad4390e135cc91a4452b39180bba4ad6726d6ec4da2d1eb5ba68bde702a8e8faa15d860dca9bd8c6f8c223d0891d7966dfd1852fa3d4d28ad269f42493f3e66ade3ae0cf3ded6379b8bc595de353236e909fd18e9c548bd3424f159b48a76642b96421d3c5a5e85fd6348ed3e2450e57076d3744f14442eae22e3eea1683192dacbb3121085c8ee0132faef4a5f60c567b5c7bf5dd6d02b2c9b19b318477973a27d2b61918c2a79eb2ccf32bb31585aa5ae3a9050e1e674b4b5dd6fda225686905e4f0a1da4aa48e9a2bc1c8faa3cfa88804549fe82daa291d95f97e1485871e566443eddd80a0a4b5eecf5b8ea38ad7fffb1028b068f8f5ad8bc7fa5c62fd5413cfff425e60720df9020e5f2582479ffe0365da4499d66eac1948942e7477fffc5141d51ac92852be828edaf4cd916806f864f9052f8e63a0a3fa214b8a8f80cdcfe8ac7587c73c199f1af9241763252a1f357aab275f2d8a7df751142cf047cd8c784d5e5b5857c4ab450ba9caf56163326368de14a58aa8be8f3203e0a38476319fb377780552e5bb61568f4229d2810063e0b0987aca716a1db5a9c5c7166585bacb52e4a054bb11afedf695065a772349679e776688969e3583eb724c562f7e4d503465db944cf4ef0a985ffddf594e915cc685a88033e7875ad209f2ca96a7c2a8b0a994f71670b0093580a70bc61315943e2997fb77b68aaa35c81bff88ea51fb36f01934c0a8d59e96889f4af43325d9d081c3219d533fd30a1b36d8b113fde3f027bc5b5ba7b63192b1d136985a283183a2bc8db10ed3de402518e2b7f2392a40ee570aeacfc32a15052738af6d41741c98180f46bd2f4e13a8f1d5cbfd1fd30cff1435cdbaa773041f788e26d1523b0a67711ddd32b54d0c5ad7717af35eb3dbdc5d438da9c750511a5b913ddfba12ce996af0d09f4cd68392f5b9b910984d84de1d92ccf2bf5367557bf1020a86576f6d89f0fc290e9149d9b3bced9fe99a7c37ab9254ee55fdae0a2d9fb60253f637b02d2cc6a97a5768c9bcb30536ee83da28b66464ddeaf714565682dc9bc3a09947c32552399b74e02953c270e5a7265f29df694f620bee7f68e8791b1a39a51924cf058109c3fc6da2b9798bd05604d5cbb9ad754791704e08e3050de41c67d5ff167103edf259ad59cbcab91e28bbc52b35cc77041e6c6781d007738b52c2c53d4261d00a56133156c86a2ef3620184c3bf1fb2af4083c85d9582842608f17d31be163a10ef5ed247d054cd097b02b284d8868be93dcb755e26c36154e89913df1733dd0a21414c2bf58a4e9a9d5ec53c02493a8c14f2840a8b2142f4c3ebb4d5834f70df131a5b70598dfb4fd44bd99463b6e43c02d1e2d94d91127a37f6bc7a003ec7270e40a736739ca9a1efe98d2784696475488039adbf0bcdb50d93cc26f20bef6d07beefe17cb5f17b020055911ba4d3efa51d1daa0b2f944930984b2b8a0bdb9b2f82fb87e5db0ad029e52c9ae867f9dda9323e8589be4ace8385a376cedd0408dccdc8c498c04c67e19e35bdb5a3867119f75405be8ce6007c40fad61ed1de87c112a1109f6aa9104d1062d03b9cca05db67a1e960a50bcdf858c2a51e9b1435285348d976c64ac319a60431769571bc7c80f08255918b0f8bda1381a6f1f57d641e31c7bcaff8d486cbdb6900287cb3adf8ba3ba1d9a73bc19299201bc04c51869571dfa1b3d925011cfd0780aa9d2f741d84a91489a8ed07f24734730d322c6f062c139c27127e87753784a8bea4600608d5fd115495f9edf941ef86fbe4bec2e61e55584834af74f7ebbbaa31ce7e2113e82e3f6244a30c41eb4dd5bae05a3e5867aa2fa8c3d09fb04db37a59d700d3713941285eb55d283249cc9ed1658d2d3dc71e54ac635ebfa9dcd1d847ad2682730ffed7cc03242f0a9b3e0e8d6ab5753deda14b048b6204dadda8c53f1e64ea8f7614b420ec9de01875216c090b339e0b80839dd5a757580b7c09a2bbf5a823e2961a4256743dc935a634fd0fbb0f1474d9e485ae689c9ea651408d2a1c3e495bed4036f324187f86c3dd68951b8d118a11e79e3c94727465fbdc4c23001dd822138423cf0f4d701bd433913d2825ed2b0e67c92df03c064c993669cd4b93925b09649b202a4329e0a79f06fba34a25c7641ed4daa40226905972b4e674c436700bfe96bb69f29be45362d4107bfb79ce6f526dadad3e3001e5c13ffde5a7280cd2a4315216f661e50b1d954cfb3c988ff9f0e771dedfef6e41918c1ded22de6b201c4e22394cb56e12dcbdd796c577e8b84c1145cd7077607e341d8859c57504ccae417b6c8fdbaf7497f32f11c575700f6cf5b9f294087b0713a23bacd9bd085c97f21781a124cea7f05e4453ac3af1231bbd5b91a94cd412977ae8411296ad873edc194bd40fb3ce2bb1dd70e01673410a16b894d305d666d33cb3a2c2c44d1cde47bfabc1d7edc49a722f9be18a47be90d4e08a8b3910b70274b4da9cf8f61dd7ca3b02ada90826c0b097b0e0f5ae209dc99258046caf016a9c3f112a549571cc97ed351b3f62a8aa90653b49a0b58f507090e15871c22f4c5b8406e24154926486a9b58bd4dadb1b245587d15c5522ff1bfdef720d16d1863bd7c7f6bb296756fc2cfdfff8ea20a3d2ca2682c095ad6376f6151f3628dd4c021ff11ec0273f6f9d32bdfe2704002e21ad62b1fea9f8f8e8995cf17913a4396310b28bb0dcbab8ece5a123d28a7e5a1ebfc710b201dfb2fa83a68558f8a01aed0164529420fe5ffca519215fa7b05cdba20508d29ff972933aefcafdcc9a2c1fc166b60661e539d67459ecc050f7094932d662e63aa1917c5a072166a26667433085d1d7fbec658c94e77986f970d22f6070c185ad9a14ceac40883e4253049367c2fee3b077dff2bc9fc402ea77b7885297bd260d0a7057831d06439604ef614cfb3ec5f1e60d1721584fa2cdfb28aba9b8dde21fad8d79a500fc8e4cb670fa60438f29933f0e77fd9d8abbe60ac41b6f6e0cca37687e12773286ca19895a1e650332ce1c3db239519b848309f20fe0ec587455a2e9f5dd6ba2ad7f8883ee34aa6edfa37b06a8057630c6ebf36418bbeb018f313e235dab21e312228156ae219eafb8c02d46ef5db245e77cb3d9b050856eb9b251a7264f5a18c57ef87a16c615a395da9ebd51f73ca98964af11307e86f055e92f011585cafdec350f3fa0fa6dbd63dd3da26ff7a7b5ccac02061cb008c5c22c8abdf1f5b97b998d2f5ea5372678fd8f3aa97081ce3a2bcca37132a665a4e83b479b3cf199ec847310598efc37227a93bc3014c0098d3229543cbe8a233ebe7343a13eaf4f008b7009a35331d454891f392ef3a3380ba8d887b1a88e115b7da1b10c1ee3866db05f9d8b9f2fbd48061d33873e1cbb24dbf2cda064916e93b4eb7d95f9c841ceccf1b248fa3ad581d685a2d9d531d746072da96c536e3f483a4cf299c1226a2624d7fa9b15ed71b79f7845f757c2aae0bef1628c546bed99c6d90119dbc2c6d175acae454ab8f7cc6c526df3e4c923de62ea6d03cca89a83b5c4c3db6209843dd97a7ee9fd08511ac9601cccee41a155ed4a39c577a09da4a5d5f0ff2541bd94e850619509bf644ebff1f387dc79f063b4260539b466d45e1075a7f9a0b589e5eee8ada84a0c0d073ca7805ccecc8a293e6208ff28579466df646154c97ad89be9fa3dc6871d23784c39ac2a7d9dee0a0063ab5795c7b598e418ed0b6a633fee39d48d9bf9c5f4d0678cb91295b8104911561d995327614e8fd4dfa10942c5a641c463cad48240dd0f8f818131d92379400f3c2c47f3ec608c2d9951a9576d062887543cad8828a53af98dab6e09b1762a0a57cc35200f2cc36d026410aee09ef6c9808fca378826bebb3d2594d67222d51ce86d2c05ca20437aa3c01947db5ac66586c5238a67f67fff9493d6aa47bc6ab4d1007a4e9a249f03b259eda87ddf9381a85596b33a4e5967b0218a13fda367140ace13bfffc3256e340203d359f155eeb28f4e7ec33627b9faa707da7c90ae5b8ae3660b8188610c3d9482c72a0433035a7aef3f8dedbac420ac053586d2337728f48b3989ef0cb7c9393a63b12bddb4847320be73e04feff5d6fa6bf1efcc141b5282d6abd8f67ad04923df700dd862629b66d482e22c688ab91c5de3fac5448b4018609010c8e91b47c9fb416da5012483524323a3ce4f0547a27c8f774c24f4ce654f24eadf45027e6737ac24e24736af24e557ad1279ea78355583e30c11890ad111c6d543f4d74d2956cc31ad174338ef325074fa57f623ea724fca44996b54ea4de66b05313357783095b7f7e5470a02ac144aba29b379ff4ba73c212c4e14d9512456d6f02e3035206a2fcdc9bfe672fc857eeb5a8f76dfabc7ceb285bd76e735449590cb4de162a58e6fd3ca0d6299e6691e435599b04426145f98bc40c98c138aa234114e6c973cdd762e656fb1eb2a4a5827221f99b15e96e661f8921aabb19ca34957643b0ca7c90b006d5da3c72a466649509a30127b914dd9a926e795248a37873fb01e0107dde2c8d5a5ec1027d006abc42e3c904677c77b56609effab27469e8bc323827db1e839133f0620e043dc3f1701b718ebf8188328a130dc599f1e6cb6c758bd4fea0fa4305fa5c6e30fc5869ff8dc8196fc9ac607e8fdb1a725b164979ffd6496d5cd9c778fc9c5b703bd7d43972c22a293457d3468d8f5dde6876a1a69b03d487930b5e3997ecd3952447f1eac0957de898a67a38ade9760ac43fcab804ad0eb4f1b85c116dc264e1b6790cf197509d7a5f331c53f0f4b928166deaef8115cb3db319d0b19a91b3fa6ffeba86818d0e8ce05ba7098daa6434205d6ffd9c8167edf16487d5e1f7a465d80abc0cf0952056f8eafd5978ed73e94e7382080e476e027ce5755289f50ce00b7389be4d5e15df7a4c17d281069bb7390724ddc6e15a36160c6defd62f3407fe6112fe50db12c7300f0c04f415659d25fb9f5264f3de40973186069450e6cb3645462a9358b3287aeceff5fc3ff711691bf0dd2a7e10e8d9300b140f81289669ae2e4f5706f3b9ba5058ca258c26ad20be4f2351d5f65b1e8231baf0283109e21b9821e8e4d85cf4adf301f145e96802247e25ae8f621d6e02e2bb6e2205aab40a8840cc86353b8341eac437577c79b6671d4ae820202b1aa9b8c6541ce8d49b6fd2fb2d7f4874a0f2ab36306a9ae7f5a141c0b09d33b21a44e39b9abccac751f8bcfe38550b34c17e4936c7e1bc466e34a13875221959e56ba95885726ca74e369a40d69aec152c0212a6bfc6b741e68c0b2086420d208836fa0006bfcd34bebfe5c011c121bed15a1bb5168029fdfeb3436b4700523114d5fd905d77502ba4a6e435b9fad3f8ce116d190d5f74620cb9526b0658d6dd8bff619036c8906d8579340a564d6e999244615f3fcdcf80af8e208d6f9fadde8b65214a1fd748ddbc34470a31259d39fd4335be2ba621035f15f7bf27e20bb4a7a09c903dcd4c040b32fe9f35e87e83e53b03dc04887243e96c86ee90f528e5dbfcc7db567335e5dbb4c9aff9b91d49ca9ff0cdf321aae839b2366391b83c1bc476948c7f5356c5d29c35de56842519a850fc9e07ce2b038867fbed0e65b18fd81825ea1eb6a7fcb3508fdbe419b0616e670ee1e72c1de83f84eec846d1ea51c18d3fd2f01e0d596d408f0de92ea3d7d50467487c460b28c3960f376a6d21d5b31da34bc4045c51ceaa67133176483b901925bf5297bd8c6950a8c3feeb930b2941f68eaeadfead689510ab1724c50066d2c06b8094016838f38344dde30e2042c02c0167d4434cbd1417933bde07f9864970149ee6a51fd30fbd73d1e794f97b7c353d115853fba4b427ee27d7a5d86f69d9684034c47205aa46278804d6480ee90862078655a21eb81331bb469c8dc4b986a9478521e4969d7c34848967f980c80f15b11b02e3157670484a7308f279d02ffe7ea080925424e5bb4bfb9391075e55f7f5566da5859e85099927560239d239e81f2ef3fe1aa1a73e7eea021da8093075487eae604130b2d9aaca9266885614c76260578a22e5d215c523da8431b7c08c5330b52f522d8f56a41129e42291c66df5fd71afb2a4eed9bc14c5e255e4dc2b05227cdb4a4b5b47923a2a232c02ec0d0c813ac21331873a2f71caa91be6b4ff725cd2082cd972bf1fd633da5a960bb0a742312d5e9610b56299e1ef5e632160f1cdf71b1a5ab4af8ce80bb08c53b4e960cd004f341474a1cb3d2ec01883121e92290d9925d921ce2b95f2a19ff2c54cc85d8961468bdfb32ecafb6ca198f36bd40285a377551d1333b4a48fb27db48b659f553663b853b596eb1d5fbba44b1ec65bb8dd44f620903a821d8f71da888f187b5d044300e76ce8e7038d0e7c98bd43228dd4fb27f0659cd54aedddbcf07d5fc3b0e7bec5eb954a66c43e34a788aa05b16dd3822b0c1acb3d606386a51959cfe16d6f645ac08e33ca5d4d7266c55b20d4861a4fedf147b1c31ac3b05ce36414db78a7d479b7d4b3a6bee16e1c027ae3f80525e4924d9014ab5c07980f6ae40445e3b53d9812b29b3586a0e24b3812d11b79770c995663c14180df9f62684bb3405afe98e19194663cb4c47df4ac57170d028bafcee05639454fefacd604a66e36515d85786e5890e85423398940b5b89052a12a2c36aa49931ae795bc2906df23a628cd4da7e4ae1f6c33658e0c440a0f2af3253b296f6eb35b57af0a3e205adaed22885e397514e1b76857558cc0ab447ae55872fd5fdbb578e42d564349fee7978bd5e44308e1f7a1f033ddece84658aece77352e9a6c425e94d808f7d283d9dbab634ef6410e301cdc2359b5bd824f643c69a7b0c523deabd3a1a31e696ef59d83b37a673e3120ced7cfbc0383afeabe9b240ecb24e83a1f84beba702e039246a492fa8d358588b5b38fd6009fca7cbcf196345a996b0281c22201c65bd26805d724040e8b84186f49975a397db556f08a80289a2ae8a3b128556779c3fd9bd5f91661a5e447062601f03cb987751c930b30e68cbfda5076fc267574de70d8a713bd8065a0e178eb1ccd3bc9c5b352ad35abc245f80effdc27c592f17c8883b88871f6d6e8888440901b70c92ef751356801d2f0c8cf51750f3dd05398a3cd1fc79f493984d0a41aa76c1a623d9c2121057c48088d7afe0162e50246c79322ffe6ab885ec33c2275549cd5570522703305f248b9b3983337484f677dc8901cb4a48af86fedeb7aed8b5a7036b5ef1c49b742e4d27b1e1020f7dbd79ad967643f12e8eb74418fb40e8f2f4e64a65927d038ac8abe60a11dff358ded1390025080a63e1235293bd4a517df24de14375b28c527b98c5d3f46aadd1318c96a790de191a095f4b393aa0915eb3a91e3d34a3fc3729667de02d39f638cbb72a6103b5a8a30123d7b6f40dc48ca9889793680b75bf82c6bcd361352f75dc45589088846718909b08f4b477c1015022090b21418e21ad35435f38f35aa83d03c6dad83bbd217ec16277489e98e4135d6c2de3e159ed7a2ccf6b4acf858d75c22ff4fca23bac90b6feedc64e77126baf50e9024710d823ff04ac466dbbf6d9e586eabf228aca4b38315dcbcd5f76667bf8edf09bb8840e266e19b1adfed9a74f08019b8ee3217836a1d90697907782cac3205e70208b3e52146fb496559ba111bfcbf21bdd2f059b002d10b3bcccb9c1c57ad9ed2b27dc9b3dea312234bee0f8730597be021326efae5c3f0b8f31c0e39d0c6932a00023fffcf8dff5977af48d88f7640eb0c4bd7a5f53be24828fe4e545926424632dd2577891a90698a35e84efff2405e042e1e644e88d3e878fda5064ce19f3c7073d8a7caf07248b425ee6225787226a9ac13489253e7a96ce1a601117913f212866372da5016acfc49a8687b8d41b88bfe5ee327ac7dea79055ac17d52db2a8be5085f5939327272460a825bb17e8c59916e4037fc0796905c7bc8092bd075f2c1eb4c37f1261444a1fd7a1572870e7278b12135a064b82917ba801b4208738e467cb9b92d907c8b2d989fd67c86b14dc8df618633e3f1cac9efe0afd6e23c02f2a917ad140cb221247f10ef36afe876d658abd0850291552d9cd6b85fbcd02a10920e6ed3140dd52493fee2596a9f6d899609f11a0fcb00762ae038172b2134d25f0b14174536ad562a4092bc8c1769259afe5e17711d6d8ad078c3109725c636ebef81179764bbfc3bc40f78b1bc6514894b881e9c68bc5c19130f1c714461fac0bcd6c21cd85cbe6905340507f1887ce9ce90110ded1d1e5de20aaf1fc754708f937234589454da99b923b9cae97ce1665878fb8a99dfacb1a0bfe7ac412deb64efa5c4fb701910dedead3e9319a4920b77363990c0fe90daf905cc918176df23bfe6f17edfe0ea11a5d62467119f7b47189e1bfc6f8041d4037a9605095c030c27d59cea5e07e6a9eb501992596e52f8927c37c51459a35f42272dd189434ce936360f6e26bfee032c3ff82020f13cf87a9a193ef4f8b166c0ab618888a9f25bb0ccdf9ab328852b86f8e14f869eb2876aa201013ccf2f26fcc2727e0feabf7e172faaf59a7ec1b9ffee0e71a7c5ce92199cbf2329cf9ae2e522a8a6d08540140d2d28cc1d3f67423cf9e10d015c8a2bc9def21d095c6b9e5d7e83b44f23b371bd271e26582914093ab57c94d148c308bf623eb005893458aacbf8b0e5fd217b8be861bcbf8e5480f7b1446ae04a1a3b042769937cf277b8fe2d5392c9d60acfca251d7e7be22a255c6f95acde9f31f05b3594d2d3a9ea3d3c6a9b6ec3082a9ba4fe650095377a46efabc964908287fc8a02902be785622afdb1f34b1b49bcb7444b29ce49bffa03e42dc238042542e75be7c3bf9dab872fa3776646a4387ce113f9a25e49404926019b4141a1b080f012f54b99cc6d2de84e2dd4d336f3fd3a403ddba197387da445d0d7a12736457c7f633775948b0a26dbcafa1b03cabe15b49b7d30252416f6209ae03b96a66652d1f1401f0ed9a1bc7973f9f09ceebce7198c30373493cb3e2589eab122f9ba385d27c8362c1fd7530f2e8853a8b6852bb2c772937da1c22109713274bff1dbebbcffd1ab2837c35b75bebc32ce82a82f9c96ca18d8794ac4470d5140cf84ab1f96ec0c35dbe3ce9855eba2adbaa585adfa57b00c4a18f431cac8fc1b8590c63e3b2962126276ecfe733d3e57cb6d0f50ffda179d739d1b2cd21f9e1f8dbd913fe92dac875bd74a38e4a00c688828821f8041f5a75cb9f988e83d108e53eef0d27b82e94cd03b78c37cadd2736d68f77facd3864c0bdc8fa5d30d21b1c9835abd95b7ba881078326d9a091334fc4e0a9add5e4c852e524803beb612140dfb71bdadc1022e59bdeefe6660af52a5168e629bae848a2351e986fc1bbc66b8c1fe03053a582824fc2310f42086742a39dea81b0da295e50f3674d8db041e388da84090afe88df62921c761c7c7fdc90cef27a92f2707ea0db6b015ad17b961ec475c2d2546ee9c27a5541554a4b1db4a10e5439dc598d9b55c1575667a607507c7e1e64c7e2c877c330d86edb3ec8f02ccf6666151d18532471a129922a389237bd769af3c854be2aa59d92cd50652a463b56351067a62125230a5ee6c5258b7c2e4fdeffb18b200c21d546ef1ae3ac7b4cc9d20ae156995295120346ebbf73d32abb48122011f2705fdab786ff4608bde689455c9f66584a5a044fb5f1c287469e13b069968516a79e24042b431bccbdbae43238ba13c1ddbae80418bd33c87060f8562bb944eb397e30fbd9c5fd0d8222e414eda216ac1beb77316a0abe9120d028e884cefb44d94430e607dc8d790fbeda89730e6233feaecc32a5abc86d2e3829d804a891f00c89eccd309802216948f2fe9412327e0bcdaff317cb783f385bf6cd1e45e1d779eaba08d56a65a08110689f9ef9f9ebca0e29c6c873a2b1943ebb55921571a310da94c2cddf40b227193cf8de2749c21dc6ff202ff6d64cf05604a81f370435bc900cb0360577e2cf95dfd4fa150d78ef02e9161ce175c183fb98bc124e452490d9f2efcaffb985cc882b7a1e5124bbd52419e4ea74e0c3b5ee9a4361779160b2e958b3cf242211a1de4bd97f14ed1804ed07140e2af2424a94614d91e012b6d6329b6b1e95a52be33c216437fad89ac89e07086e90b31eaeb8895310ac14b8ec10fd3e57433598f66abe79b0bd6688811d8c8762674978800cbf5ab3ca3d97f2102d9886f77c0966d8eca6df49239500311a9a7e655f01fa56334d9d39b88b80ae650a3417611afe6be5e2106bb91395ea36421d1afebcc9502e9a5f2e6fb96ce60aa80694305810c8cc307316730449ae8cda0883f6b9e21a39fc59d86d70b8f6792dc95e7193cb115b06f9c0288c880da2c5f51dffd5d8641c8849108fc732c06760f195cb9803d8fa7febbab5f00b455a2e397c806259b41f7031ebf065578b4a99029a2448052b8a965ac9c27113746d32b1b36e7664c998a74044404cbfb0d2889ad6b5aa189a082314223a58bb2dd0b31217e217a57bb312fb7aac5825f98eb1e5f37a18eb7d86c60aa6b7645ee92df9a434d26a90fcb760590d07c557e35de29d73eef7c43e2c1b8bc5875d0ce81b14f24e444d48aca1928e5a7d457cab00db1cc224297c7765ba446c725e01d39966afa60af2a54e7eb2a03b4f79e047f218d5a171eb8bc653bfc73e07a6cc8816ce6a071393860ac18d9dc8dcfa5285e52a6552c19386f74b6e524c7a3dd5719949be1a0a723909803681a0396c48b21e5fc3c64e87d5298102d54dfeaae0fce5516ace157c970a6b535f5bfa55036e4d80dbdc8476ff71b84c9ad33b708cfd128b421eb82ab8f8aacf1d88eb81c94d2953ffa2000f34c0a226eb04a5e3a1cbd57d67d0dd8e5c14322f5d5b51e02e8906c6058c08ecb3319dcfeac8b7c1d949a3f723f281e8a365924e4ff1d63c17279e3b761584d475c5755ce7927daf8a34e2c14ca6e94896e008cf48a8b8c26b1dd0634463875ff6076d72d9cfd38abba78fe96493157494666e92d4c7af53f0e1ab4003717981e3be6ff3dcdcb8d996187264aacd6cafa102991cd271064e98f161a3d6a02f11525e2a6725a3f80b94a7062228940543506e427047a16db03704317c242ec1f6b08e664f7d0b91e9b89bec6d5f55690ad64f8f20d05f305e83e414e3eb5050c9ffe8edc82af12c402cea23525083944595f932414301fa59933c342b75fdd56eae62c49746d6258ec7722724ade37966b76abf3b952e2edd504bd375fed51fdf642b45ad2fc961dd6e302146723f8fcefd48eaaa4065454f8ba983f20a7e99a7b2f8074132c07e3aa2150f4ad5e284a6822b7991f4d8919971da990c9fe23b57e5b1923b10f1056d44a40f2cee3450b53bcd49d3fd73be83bae01b7c4694eb4fb647aa5452cfa864e10be5854ded2623426913421857b2366bfa0f83e348b199a880cdafc4b5fd5089e9eca7d6f1007f3db45108239d30c63017367b40003290ffde2c1528db818383bc606c6fc77972816cc422a561e5ee69133bc4ff1bc1df6a2bf93a552fd2139968b0bb0fef6f62499020be6674830b7792a01f8350149c357b06cd0a74716d605c58b3db1c7c5cc63fb848c168a7ea0a4af71f4daafa1184d8f8ac8fc838a9453d5b40b962042f18b93302628d1bf13876c5898100547df19bac16db6a4b9a4d64719fc4028a00243f0868a1dc3466c5c608660b53b09e515e6bc637ffc02543a61bcf0b91b2accd98f955610bdde202557878c415ea3ffa3d4f9f4762eaa923fa9d40f93e4ce36925b9e9193808bda7a687c78a9277df5217a35adbfd6a37a3adf36656fccbc1f88935f6918a8d0f33bc989a4b04655b0a770ef207b1a971dd6c372c5e435c9db931c8e1e2bd44b278030b39617b4376f47c268f7f4f3316eff771dd9bd09a0894619027f60c80f7050fbe09d6148c876fa704986c2343b7178a5f413f93881642db8cb5aaa0598e1ab0a4821fd1140b85d06f8916f1e6ea088df98dec122e9d62bb7542349aa32c1058a6f00063cca78a839f05395fe47b0351cfd8945b29cbd2e8cb2e0e54211f86aa878959993ba08ff8c12eb5aa9a458198e922142ed09916e112773b0a86a63afdfc39be068ea048d250fdf511e7240f2e4775ecacfd7aa8687eacbe494ee537d038f6d539e807ffafd3c7bef8948aa7c2d26f51ec8aedf8151d158eff048ef1d5592e43e6d3b4a10a0f1b0d8b7fb64881650208fa6541467328ab83414b6fc81abd87b43e6b90b1a8a79e4699000e3f944e2f441858798b2c666e0afead0708c6e4a0addcba13d336704b624d87d76da3d39f802b9fce4b30f90b6b8b96062b02cf541e7af4a606a86fdc0516ba1fb88060c6e199044dde2eee64061b16bdb0dbeca5cb4ce07158b19228c26257db9af56fdc5c5c7df3caa28b95a66f4c91f94d53aa61630cbbd7233dca7d5106c93f4abd62d307da01498cab0121ced9ac6ea7ecbb03aeb87cbb70399407575b1c57b6ca3a5451505298d1100cd1ef73f585de76c75ffb307bcdc23c3e31b9a9e97fdd013ac15706382c7a40e8e81f1e7aae8c487c955ac053cf8540e8acfacdcc718fae690349e9ed3445f419c863324fe109657979374ef12e8338880af14ba761989832be9cf9a0c62fd43f5e5ed61dd28f240cbf3240903360fa5aa62b7cf613e76afc60d2d50ff0c9652882f879f849fb4ceb0baa4dd7c872d99435ccc75130f15bf5401cd572b547f645d5d9ab4c632564d3b5bfa564d45b1105fd37eb22a508b7f549fd09ccad50c73c551b7c73bc0d5f30ad93d36b6a3397fcf6e5ac74074ff21a1ad79f1b3cd0508f90bbefaa8a4b2cb2693af3a0af1fa2d8a1bdd4afdef5d978df4535eb1254d829997e4bc78845b695f05922e803a262d9ef55b9257c7a5c6b622d658c377264f98a105a15b54724297cde290af9ce91cb3a669e73f4ea07645ab6d4a853701e9d4e00fd10ea367b34792e098bb7909e4fd6bc3635e2e8824a756692ae900f0a8002b85e48396c4591c4e78bdb65bdbb416e8b47920a09da07eb06c98d62ced184f18f5a5aca15e0e1afb6a9c48d7eefdd94fe7b45d417e704106f0a78e7b4a81e7a078faca73f13c41d193a89e28dab3bb71b6e60303cc7e387ee7cd4d84a658257208fba0c245d99f547a875d9478c7b525c2697d8a78206ae127ba16b3955454e6375d25a3e767f29c0361f07ac8be3554521c2a694455e644bc12e79b4f208340dfcebe52deeb9cf739db9a4a10c8dedcc284aed18ee9c971439f61aa705065d93bb09e084d34b7cbe1c11272fe292771789f580054135c1716853bd1e1d1bf218063f7398322e28f84edaadc8594373e444d8f27e0f6285ce4fa10cc8112c1b2620e77cbe1feaae220b7c6f0716ce3624d5e2f7b2e814f601b33eeda190c7664e920b7c8a6f3c161178d310d57991903c25db8b92e076e551127ab5ba9d930654c7b40bc2d7019b85bf21fe73b58cd73a8286e63cd9166d36a9ef9c3e24106838c18c5be0f48642638bc2f0e8f7c78b95d05a53d88a952175a3eddd6f7d0f43f86fe8fdc82bae20e86676939fc91ae54454e73ca51d3092def056daf616bfec55f315e1e14c75cd27a0b0bb0c5682e2a462cf25bf2e47af9436cb8125f62c49b98f9f4cc2ac6359e77bb252e897c40429dca4c29a5c95551594c99207e13a6393a044f852aa7505e79a3d1d7de685e28c0710cf370916de297692dab81dd789851c41cdbebc06fb7e7f9a33bf0a1d3efdedcd6ae31707255dee3a69b63d543d58293e1379652583413b195a9a8b7caa8664ca2a786823a8103f6aa83bb3231bf6883cbace68d6bdafe91d6d2ac575bf262f9949eea8ee5e0eba1711e1655c3ca43a84c37bc1e7e1a8d24d4fe9c443cedd05767f5e6fde192ca6e3dce3349fcb27b7d854b37dfeb4b847d4cb6c2bc6ac32b45f7ea579dd214abd4d7db3bea5aba05892771fc7c69034701cd45b1bf065b6ca5c3456232851f2e86cfb8ed3732ff6e5f7310eb407d749074b715708303bbec777b4e006f72c5fda59a39093e270840aefed2c093045ec4df32d2b96751f8bf7e53757c78743f27344167beaa9af1627d38c2e4ef0c12a0f6ef81268b27e97b0c339cf129a1fee292dcffa305221c4e5c6137b089b00a346a036ad95a93562056b24a07cf01daa3f6c0112aa69e6cb89cf19f93fc891ca729554418247151b05ed6fd030324457b61609bd50b6b2ea31c0c91ed2b3b3f0a6e0574e9df0b15d725b1762bdc80b121336c77237b6fb2e5de5ba694649a086b09360935cb62ba98fb627f985dbd3087f12aabd2c1cae055665486edf7255e655658a7dfcde055f67233aa7c6ad8feae8aedcf8c266c4b6684c6ecc184a561fb533308b63fb33281307930cb601d34e61a1e6b1e298d60fb9bc96656bcdfaaf7f427ac79bcedbbf7dee9fb7f2fd613fd0bbadba3e66f13f6c3fc17fb7201ae72991076fe1038343bb211628df583ee59a77b70747a300c3ecde1e382d34c5bd97e0f64aedbc6fc9e654396399e53a4534b27f66e25e9b1331f90f4c879ada2f9261c1290ab1b1ed000b93252468c27c7cb47805c1df181953ae881610d90392f3c201011b99241255733b04eff1d62802036ecf0c0f0c4bccc5f174620560ac961537f6360601d22303b55f2782b213a24cff7f267e4aa87a626e1bea0ecc6fbd03556f3f1d7adf63252a5e435eda9e4a1afbd275534af3dcb958fcf44243dfad0013089e8034d9582655be1712a9325dc86b5f926d4debc1257716b14bb9b6969e5293dba6c442e427df437baa1d843d1ae26ccbaaeebdabf8ef364bccdf33c6f85babd58dbfaa86f53af10f5b0685e6e1ba59bf705518afa3e1ab62b34221739ce07a40f7d29bc8828a40ffd6e2b943d4fe1a2e6e121ba7d5f906489577efc0a3f9eda30926b40aaf80512c9556c06bfe0b219369595c0509038fd6c068fefe7359ac7c7f7b353ab6876fc4b9e96c7df692f9b61ebf7784953d955798a0da4aa7e3f2bd5af71f98a689f3d90d3176b666fea136a334a6dde86bea64dfad2dad8883d20b5a1f45d3e1aa8385d3e1064507229eec5aad98ccbb85a8b180b3ff10d7808b6bfe6ab8126699e206e90f8b06593e6258d287413c48d9de2cdf75adca023473883e3c8f61b39d2801eca58e26a91df680c0c592a5eedb36dc8de009231302fa00c3318c0062b5aa41217d14933cd9b1c07a4c79d12d87e13d8def9c0c755d87e6f04b6bfcb4288153d5488481f9602065ef1142b42988a1e2e9a5cd4ad1cd94fe95c85657bf917e458b2baf63af7b8ca9d2825cee5ec7c7f9edc6ab55a9c1038d3c86cb55a2d16974d1a1cbceffe8827767f443a4e3ff7292b7e68d264875843acd6b82a85fbae4ae97ea6ac804be413cbfb0bcee992c555c942d51b5aaf5acdbe1a5cb01996275d8069358fcbb49e1be799bbcf2f45c5276d336db2f336b332329594aea3537bd760349d7bc3de30bcf1834c4c0064808881c989b100cc0b1098205e40165e2e00ba000054e292c2715992fac61493cf5be1c380d7fdf09a74281f9d131477837ac2511b4e08ba8974884dab3eb5d067d66312914d1e1e65fa8e2ea2269cef3cb7efb46c738e6e9ea33c182b3f870c8e1e72c4e19c1fb61f87f4e151135a174220a10fc9f9a338f17adef64296c3cc5f5230bba5f46c2679dc5fdbb22834304b276f2ec73cf69ebf20ef354dd3344df36efad450af799eabba97a08cf7a86eb514db0615e44a4641f2642f9f9f205793992079b8974bb0f25909724559a79fd5e02348a7a02653c898bddc52d243b4d8640aad43695393ac845d420839f673b20aac016662321f41594ac1f6138f574da4d8a682eddfaa92e6a1be7df6d31bb29a7462ceb726bacd93e9b19b74db7305c2f39a6e5e18a2549ee57efb8eab618f1a00d9caccf9a8d7aa2662c950b4ce2f0885ea4d665f90d397699e203c9bfdf674326b3edb3f9b3e08c3d0458e9ec9f92ecdacd475b279b2fffa9d65df83794e2d9353ce6c7e53f7e95aaba3d174301b91c3436666ce704c7f42d3344ddb64dc087631cf22c7712286f3dc0854d7c1a0629b12ea657249328737f0e9f3361710a4a84dd3b64d89725b875dcadb90640e7b2800fbe9c79d8bc7699a1be17195bfd3348d89eec543c1703154c673255c0925b61b1e1b01f677119111a07337f36f383c4702d8bf699aa67993cc794dd334cd9900fb3566665e9239a0e56d0362126dd308cd05f66fef4680fd949999c11d1d399a4607cf1a4f7eec4e80fd1acd17c4df490059ecd79e4539c4f1c3ba4e4a97d28d7023bc736742e39ca0eed37dce6c4e2696ac9ceed2e7f4e427e52472a202318982a474e99dd7f5e7a58638da60d69f76e0db6073ba13f2f352fe1e0384ae939e7477cf3a8e4e255c89962ea57bf255dabb53e76e662debc09c534a29e5dca4e64fee3e3bba3547dda7fb4479f293e225a2691681fc5f901481982e2bbf93004a8f4264af3731dd1de5efa29439d2e52993999459aca52f39ceccb24ccb7c6a33cb667b0d66b784a3dcb780fc19e74850f7e93ec1b92da14dcddda7fb9ceed37d52e7a494d27376f764879214065dc7c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c434336da31c8aa266a66d94dbb8a6365a9a99b6518d72531bcd4cdbb2ed898f9a326d6a9d1a52ca27357a766a80fcdeddde52b694cd71aeae7324b8b77bfb1a2ea56c57c3a5cb76a29b3cf3fbe79c3cd365cb9625e864f308e931db766ebabb65d8deb56844e69ecdeeeaf5d8ddddf4359eda112dde0148fbc437cbefff833679322debd67ad55ad6adb5d186966959b7db276ef987326e28745926a59452ca2ccba69c538bd26336b399cd6c66339b3dee314c4dcbb65e829d9a9679cc356d9b5996bde3c02cea3812ccb2e93d9409717f25a836fba9446156f2d27d4e9238f259bcd9f7775d6df6f687ecfdb56f713a1b699e6559e6dc9ab1d92d9336d1ddfd5dd3b44cdcaa685e80fc43c0e66d29d674c31030a3dabb285f734d730ace1d5762dbb6bb6ddbb6853f826670537453823231d3a59c52ce396596a5c18140d3b68de336f139099d4be96edadd2e5eed37519ba2d3e44d13b3d9de431af70a50def9e75fbbbbe6d7e51732c9fe30a77796b1e6d3a74f9f3e7dcea96559db8cce39e79cd99c734e2a6ad5064d03e29be71ee75996790e454f8f72f2b826a4d3b43927a573aee89cf4e90efd46a12a901ea5e6deb7a5344fb1cc5c28135a264eb0f327c0d963d645dc01903ff39739e7f4c9338978b2eec424b2dc51dc9b607fb2ee32936142f36c8a734e770e74ce44b604c8af4d51ca6c5a36291af6ce99cd997d3358ab518d6ad4bd47f7b9bb463f4abb2f455db64a5450929916173002510d9a46c05405336e004616618091821818b4500314d4000c972e7e6250051934914262e18b0d84f14514dc3fa7821f5ac4208d32a2c8d2c409c848a2228c2412ecfc4c0115a6684ac20a25d4e00969032e8010061742d8d9b2e408230861a491b232a90c0ed8ceca241db461ef4e5287d4f1f48c529f9c854b703bcf6d763b6e580832c4e5861443e6c00756326d916a4826442187145e82a16010f0f8cb54d8fc652b6c02d6e2e62fb3805fc05c3012a3c04a4ec191d78fbf8c8564115cbe02488a24970c1dd0f2c40c444a1c188391d879c2ce9310250859424f53cf1160380306349e07bf246f60712095640d80f080323a32e118d6d88451a081641f5859f98c25fc8595afc45900b3d9911f620f3e449fd249632a5288ea4927974e4032d8f03d78eca8c97684f4c000038d8e1ce1ccfc9b1108101c376462601caca979015d525f3399bc42e225993e644004a1795ba80821371f82903e4f644e13d6a122799870358f6c52f293e790919536433e7847172bd8620b2e5c0558608145962db6d8628b2db6d8628b1570d14dcde3d43cfcddd4a3fc8e8dd1c5518f328b12f0c84aa4ee97e7b5951ed1904270407b2fc0904a5a25f10108254d86e028dce223523a8021c90b3122104a9ae41802c6a337887284f4c12173780a32893db079b4bfe001e4175613c11edbb906793af72b04e085214882c0fc1592e465e503ebf40a08d6e91e29255f136f882842486660fb61c400bc88436c03e122deee57928305db4d18946cd8fe21763cf10624233123bff071a13ff3c1c3f60b491f1c517825c33a1b18c3b618e45eab1ca869acb9a68177c87af645f48616af55972e1dfdb1fd547ec153f2589dda9ee5af08dbafc23261cd26431199d32f43397e8185223250f10ea971c92bb0655021ad691958a7b9202816341978a5bd0d3f04d0be63586132b76d4570df2c5b887d647f5d139da30004bbbbbbbbbb5f5e5a4aa0eeeeeeee6e2cdc048e85abc0b360d15eb0d044276f96c4307d66dab6d16caa62fee6c81a67fa128e26846bbc2cb9a4814a719f4231731c2ae3feeec4d41ebfb2a3022e5bea525b2ad52d793739761cc1d14387243501e7ee94f75ca5edbc8e535ab6d4a5be2d95f2bee999cb80720bea0bd296b41a5413e83ff9f3a529f6d2926f1bb8fdbda1cc83d2c1c3fb9b638699182b616c00bdee066e65e405e68567e0d511d6e1151223bc4ac23a9e189bc09125d8fe6e420b417e48b0fd2e44b0fd3d1c01091a13903e1d0499d36f06ebf4af61fbd3b0bdd43c59eaafffa77d2a13af17f1f71ec86715fa2a9369fdb52147d5e634ba898e25d3b6979e614227f9bb2ef57ddf2f2e376062646a58a7c1679dd67ec89c2c136f93cc7e9ffb0064fb3d50877d43d4e1e11f197ed4f4ff4df7e665b5bf2263f3802fa0cbcf7f015d1ec887ac4b4dd5cb3625ad0bfddce8e256d96a6293cc66224d0d9e590993e16c0a93436919f263650f4f0b3a0018ad4d0dc242879291f1c2f0aba971115fd680a29c07cd1730c8ce088466746e322e9fd7a1c21af1c31a148af3bc8e7e41764620df86da4617980e456710c9429095906a273b8f901c3c56b60000afd9cf9951ee4e9ab13635e63eaf436dfdda22c8ce0824f5a534efafe81cdd418d40bc769a86cab44ccb3ad4c65197944bd619eb644d3bede97c7118987aa38538605e5cba1de641a1787add03f54475286ee4a89601d9e1110264270686eb4d0e7a0333761608eb7410219d0c0e8fbf29f680fcd499d8af1e7bcece59b64bd6329f7ed35fd8306c571b05726c2e6cbfa0b58cdd0220fd0a227dfa043bbcea2e6c7fabc002b1fdda2ef7424d235735e126c0c2518005169da3a0bd682fc410430cc7c20b2a3a7973bb98edefe81820b7b3c14e4edf1abe86bd74b63627279973c6e6e41e4b62a7b73a595ec1cfcf59fea6715a7c1780f2efef38d1c1407fdab6340e8b5b8c0caa05d8d45f91af8a8e6d31c7e198cce16f2180f2ef16eb6056da7414fce5cd4d1559fece614c7923e2e71474265928984529390e7f77014aee6e3b5345cd849d9d1fc826d9249b9a8d66a3d9f8c2bfe020af573251487e41a9cb9b1e9be3ea12c929e9286d32afa45ca827e5acb91919cc689d72fcf88b027e1fa5efe275f37bfe0eb0f1e4cf45dfbeadfbaefbbefb36d4d66d346ca227a577ea93966eb4a3de17f4f5a6678f3c36cfc871df73e26d32c7af02886aee5d9e725f4d510172eff27daa4a497d12cf4a8958b8afa3dc4bfb3df7057d620fc87d1cf7de470327ca744fbd2ae5d889de5bae7ea7f170df3f6e28b1c9b49cf864dad9624d8ffdd36ef5a6c7f1a3f0bcb30283c1c0a03205ab632518546c603b1904946128516475ac0c832808ad9282a58966f99bb8f5254ffc1d60fbebc4e956354f6edfac31ff13b753bc43feb3060635e0795ee6aa66b94afb9c879982642740610992c7250972458f2079522f9f8b600446038cc10cc1868e63445fe05188f449a3927455913c330ab9ea413e3fc14ec81512d6e9670ef006e42ac916252c23e143eb1e31851e3676d618b7bc196119e0182a2542240f8e9e2c2e5c20f6fab0120c1e2dc81567c901805c31d20f1bb9e22e7a489e1b2fbf86579cc43a3995999b797ed98663de40b5ab8a911512642f57155415a3ed45022bbe650832a7ff136f7bcc8960fb5f522ecd923579c55a9a95fe790c86c1481fce41e82a5e729c7e9abf14bc61f8f7c72cb4feb7a7075e75956e8b84576dd49d8457bdc5f6fbc0ab7e5de9d35828715587f64aa7fba3bdd2493af5d82b9db2f0aa9d6cb220f1aad910bbe0557761fb3989573d05d60143fa741564ce91ab1c00e2a538e20547f1862b88f77f8877f421de1d7bd3474ebcf2a49bb771628357aec5e68957ae243e9029f0cac7e82a481f27c3638ed34f29088638e20dffc715c43beefc10ef8eca87b79278358d6e92b4f06a5ab1d162fb5d8957f3e54ab6dfc7e0d5cc820ce9334f2073b4f0ca61ac03632db6bd8c17c7e0952ff5106f5b86f1cacdc84195366a2b3caaec106fd73416fde2257a86edd7215ed008a1bdbc148abc34dacb4b192ff5d8cb4b21cd4823ca167fc8a6e870e5a892e36b8cac08a7844f33c5e5aa9263dbac30ca0209b6bfc34d0927983d90e3e7cdad663f67b6fde715d9689dd38857f3c80aaf669617afe69151162bb691e609a4cff442e664c1abd9c5c481c4e9f7c18bbd13e674fd69091e9b5120ca8c984599122eb613c6e4c511af6652165e4d2d48bc9a4ab30b5ecd31367a5fec265eefbbec68cb62fb02968a3f784f7f26f12a7365495a789555d9c4a9c5f64fa56d8ec1abccca14e718aef9b9aacc216499096ec854a71b4624c84c308d66fd646fd8443ec276d91bb292bd21c3ec0d79c9de90c8deb0c8ded0656f58536f4f918e1bde46bae1e5231c37bc72e9caa7cb48aeeb31dbef75444c427b3b2226a0bd5f12136aef96c404b477285c82c4fe903212a5cd1027c4431b0fa121433f9cf6031174f2e67a926d967495448ad126d0e95b23d1d24ecfef8c345482b96b8b69fdca9c26124b1303bcdc626962304b13838845ddc85f7e8494a4d4a2446051e87aa3f175b4f3343a7d5318933deeeae92dd6e4f4e42d222f7abd5eafd7eba5a4a7a7a7a7a727f6ea71ad8f909294604b2e97cbe572b95eafd7ebf57a29e9d74b3acdcce9a94554e46a2397cbe572b95cafd7ebf57abd9c5cfcca260b89262985b05f1a633b4d2d4a041685ae371a5f2e97cbe572b938c6318e718c631ce318924b6b5122b02874bd11cbe572b95c2e17b75cdbced3e8f44d610c6c58c31ad6b08635ac61522945d430222f0ac10f9dc889a8a788c00b5ada49ea49ec3e23e852005ea934830dadd23efb6eedbb4c0bda644edf344effb705bc3bb6bddef4c89699681259ae6de587c3ce8eef70cd9e279195ac6f0b78e99743b3a60fc04bed66fb1bbc40f853ff267d64d644cdd7d0c006304b9ffec73952a2e7c51c27e8ef6c69de2480f725a2c681e525bc8caee562b1bf803886bf8e64d9956078271f6627ba5ed42f9ebf7df4c2df4612f2b7935cf8db4a41fe36ac8597fca4c35d0484f92533c700c0cc452233bfbc7c6499198663572ec53027f18ee5fb967d4ac1f2fdfc4b695e8bb90a15a4c56cbfe6e42a54930ce2a502d09c6cff46d43cdb1372ecefdf9690fd5dcb551b6589978256bc600824def06310ef1311eff823de1dbbc11ca79fc2205e0aaec40b863ee20d7f88787fec11efa812ef0e25729c97ab6892e3f4531ef152f005f182a110f186ef82787f0c22deb185ce89ee8897826018fe8fa31773157d729cfe9d9d710c4310f421520a8261f81f77b4c335b9cb55a89d9d71fc0f65c41b8238444ac119f182e1ff388a77125997ef6e5466a19c5c2505cba3d6681e2633df8f52c30872d57d3f6ac955deab49fac4dc4035d9d6663494a6651d1a673ccd96736b58fe1b4eae75689ce133a82d96bf43e38c992a2dc7c335f10a0f714bc5805ada992aad64a19a5cd5fd2e0fd4493c0bcbf7dff3bf7ca77d412f620ff8bdfc82be07ea97ca36ab6ce727599bcb555dabe56ab95aae96abe56ac15cd521216d30a40d86b4c1903618d20643a24494826018fe8fe30e4d7295f77a25bd925e49afa457d2ebc9555e8c3ba2943e7931fae4c5e89317a34f5e8c3e7ddcd1c71d7ddcd1c71d7ddcd1e7e29a5c2551463b3be3f81f8620c835510a8261f83f8e28a34addd5b2fd9ba56d80b743b2fdfdb2fc5fcd9c2cfff55eb61fc9f2d336c0964ab40df082944b6da04b504a47cdbb547047bddb94496475d0d488414c22abe30ba2117b401dd48275ea10afcce799437a1e92e37831c781d1252f1673754ee0832e2f7f3dcbdb77a9da590f0d7eef0cb94a3d7f87e42aefe5c5a40f8ee7f7b6344fcc87320f33c3cf2ccad499c751351bce3c7fccc3cc7c47bfa018b1079c89999941da19310b63caf05eeebd70d46967aa191ee387915972b73255ca9c3046943db68da965b80e1c07382adb99988c78e5860853a5c551a50dabb4a98ab25ecc55f3f9bd2657dd7816f92737673f235749c182e3655e78661ee6fb3f2aa9efff402057a97757f71d8efaf23155b330292ac097e79f79999719b1077c997961991731a666303332eee297f9323842b738aa94393033a2ec51a64a2b654eaac6e8dc17cb6c5f6ec8d425422d8b43bc7243ecb42dc53255da982a2d4c95292eb539b59f8b53a814f552754b55cdba5477b55771eabe3ba584675fb7792fd5e55375ba3c3ff85dea0b02c51ed005747111bd5475db715e0ae5a5501cf552de6b9ffa9ebf22dedbcedde5a2c19f6cb605e14f75ceef290af9130b8b8bdf0a420c0af1506f3faf39a7a54d9ab82dc22ce6a048150509177f1a1e5c143a6265032d60d08650f699b76ddbdd6016a4b43798f479b1fc5b19725b925b6c6b6a9ee6d7a164791c3317232be5f643408d9b73d2e72850d3cc1f027a280678a76bbaba4a976137c052455b12a765f8b3b0fd1409a9ea59c2760fb8c1ac04ea2ed3369d1e80d19aaf651f15aff8677506c7e9ef71958bb4d5e9485501ba2635af455bb435b96d6e2a9fc136b919ea108b7e9bd8d33304e4efe6dff9aa01787b6ce3c03d340099eb10707e372a81dc6cf1523b0390fbb8da793c0498144e5e8405693ef101235a198fe0084a20d26e70c512963621b852a044c91081075edc13aac4e40dd0d841ac2be3096c288d1cdd50de5293520b9490b439c33881139d5970dda612cb71aa0561b85851fc85bc8a96251616ed8758db36c46a322dc7d16d63e92aeef11880f36f8fe59e8af3d5734e9701a87d16cdc3e29369b979364e6b32ad66b56f00da2f916df067da46b91935ce686d598f47c9e1e28b2696d00c1228d32f788dd22060c2124d2c2122492c997e81d905543cc11cc7c5288d44151bb858423c4b3b96ab70c512732e46a1f1c0118c584233482cffec877a1ca75fe0d14108d630624511d2807003a31ecb2fc419a14988e59fde194bad09a36d45460bb64339494611cb7f88259f02d59e1880b76772a8cee3ad8925350ed54954e77d2917f065d3a8f7b19772015fbe94dc5246a2fc48491a922e0cbec0c4c817098529d268b184b4268c58b25f689818991b38664220ac808c2496e4d1e3b9d0c2a88a36373e7eac30e2008005203901b8c2ca93ce4e0b415c10f2028f0acb1a493d437c80c08515b0185ea20940486245119261818b25fb05219a466b74550b4edc208975a306c71862c820a986a64897b183294fac9e220c289a70f48cd21a4c1c0181043f40923b90c10bc620580113b4e88113d30aa4d0e2d0062a8881530e0e6cd1021d5a5a46dc442c8a229624c3892c4e2c57c9315ee0c512ab5d45d3472e6842095a2c21540f5c2c2c3435c82d965f6eb12c4aef685c60b2c6616bb474d270b15cc44243033fdb21bb03860846ac28423a3d00a3c5f217123be062b928b4b3c4152d26421060acea495779053a02bc3d9e74d54e0da080c492ae8a6223e58825b435b164bf206d501dcbcfeba4e491a24553888758a5065b39bb7e96a21b80dbc93a345232c7d0dff5e75d8b703ebfcb24679ef2e976c8999f3ab69d4bcb4f7ee752846b171aa6bd41489e9e92dfc996cd9ca5ae909d32a7c6baccf17af47a94a2eb8680e28becd1e3972233121c56065cafc4b0e3fd0b6a1f3fbf20999f3cbecbb24cd3be20f1b5feed0b9ad931616adb24b5730fa6529ba44a41c20509254936db651e4cd56c922a599de6c1d4cc769b0753a7eda80753dd2649f25d9f502b4339142a351fa88f5429583a480bf5ca91ef3a9ada4ee866b5e9d1d4acdb3c9aea4e9c7c56af3079224c7e89132de1366cf81d8a43a152343f3e3151a4d496d24ca45ca86da5b340a27617495ac6c019ab432175f877544952ddc871f87df410ab771143f524c7f181ccf9419bf1379549ed98e370117505858d681e3236a1937a030e38e490830e3a1831521f872fc8865b9fc31704c3e7e0a3c317b4c2eb50a3bc912f28036fe41b005b176c7e872f6885df41f23079e0c19b79e0814b117971080a8ef8e389880922fef81e3742e38d8f1e45bcb470e3a387542d91b1d79592fc11f9cf63c7cbf7244fcdcb072279667e5864d204b461d7b5ed918a844ba5b66bafeb66357ba44a5637bdae99ed32afebb49de675757ba422d1a38d23df6d1ea749caa152446ae535988d56cb850c64ff63084a90189a1eb5cd886d61a385da53f096147f42e6f0efa80e05ebf0d7549fe259a4772147fe54f52439f2dbc01045c421625ccd232993b88c3c0552873fac5b5829736864fe862fe847e871f8825a781c56c8e10beaf139c840791dbe20185e876f006c7f0c017fdec817d4e38dc81de60e3b78f30e3b70a9ec615245acc4140f98181f1f291e3034e14c149c3ab32324c2859b991d613f50139919187f127909623389f003b55256652aafd1a3f20ab55b42b5a5fca8cd040cb5696a1bc91c7e98da5678d4cea288daabda493df2fba8ada5477e9fda63d4907fa676ac47fe1db5b7f4c81fa5361bb5a7d0233f11d55b3df2bb505d4a8ffc44aa4fe1cf40f52c7ae4b7a99ea57a173d720b55f608a5f2282259fe18fe8a33ff65f905c98b64ce92e42699c343c81cee971f95395c81640ebb92952fb994272519bd8e90908e5e46de72222f7297bbbcc889bc156b727a7a726a8ac1c8cc549212cc495d82292519bd8e90908e5e6d14c2c8cc6e654dd44532efa4b6ab8b9aa85b1c23d294393d3d3935c59294604b4b30a524a3d71112d2d1cb885b4cc445ec6217173111b788843032b1a610e69dd427a7a68c8f7c46248491491991f09d54b964f997d424f548e8aa239f9a323019913025de57c04ff18e091865c4bb13c30e8c787b98f484e20d9d8444c40b2e012d8b3434cc5f0f4022cf445e8bcb4a1a682152c34a1a8041c5827f43dbfdf100ec88a40f94efef94903eecfafe8e03bce228bebf63a279188aefef988a29bebf7bb90a0b57f924288b41c01f78179797ce5250e1e10802be7fdb62b4458d6812e538232e898ba15aaeba0187ef4725b92a87ef47c55c65814ff2375cf27774f27787c9df9e18fe4aa52b61572e5dd974a5d3954f978980fe729191bfeceae12fbf90fce5a3277f19e9b2d265d8e5a5cb4dec74f9e936d1eda276dd7edd46baad741b767b6987bfddf480bfede4c3df7eaac05f27ba7fbde887bfee02e2afbf74f8eb478e9443751c6adf505b88da48ed7a62468a00041c508f34800108a8cf830e40fc702be0c303763880010a60430d04a061860114099241002cfba40723401498800416a08004c4c0c4c9922a1d27493d52432895b3565c61c5774ca54e2ad5a9d4a652d976736629991ea7d06c06c5f4188ada96afa834b3e27f9eafe02bacb0e20a6a8508f638994a959be50fcc6728180ab107fc81e2e7fd074ad5ac08a566768aca4655ea1516014351a765292c1165b1089ea9542652e62c116a59a6f21d5341058ba04a39f2493ceb8888e5e7e7a13c1bb191d803febcfc827e1ea8d9a8b2652a2a5b287506697fc490a9a8d2769907a5ba95a262e12aa460e1107c12cfc2c2557cc7505487a28aff790ec177a82f884320f6805c45150fd41c02b63f95a2aa10c1c9503015f5ca91e72af5a9b014cf53882108aa142c3fcf20f854ab7978caf7a7a4340f7ba079d803fc814a1d673e4b51398a2a59074aed9f1ab2f753c156ab65bbf67e2a6db55a1ef89fe729df755f104f117b40f6c077ecf114f6c08f1e10777a9ca9f953a5ed360f4a65cb50c8ede7a1546a3bf6a054698778829d68e2b70e7c4729e5259efb829803cf7d87f28680fcc4a3be202e1ae23bd9a59c5c75e4fbfbc955407c6f4afca5447fc10dfc0d93f8fb1af83b5a1a297f772c4d12122f47fca516c688bfa08559e1a5ab0cf0e34b571de071be1bc9554bf8c9554c86fe82366cfda5360c6784fe523bf3c3c7cd4b5725e05b78e92a057c9097ae5ac0bb6023d62440df15f8fe9e23ae7252444c4c94bfa025e22fb532321980f2d94b5715f9efc1e367874a02eff3d25513f8d54b5751e061f8f6027ca2764445b563a276ae1ebb2a3d76463d76567aec5e1ca85d163d3af8ac84782948245e30dc8078c34f42bc3f6a604b6229220c0931c976f408f1d2ce08f182dd534bbc7448bc5e9190f8b58a68590f8c225e9008f1522f03a996859202aa9b1123dfc12c10c40e30db200ecfddf01d50d58e1cf92e06c4010cf0de17e3806ab664c97744dd937fdf8742794fb681eaeca187ef88fa876f6ac3d7f0047897f78abeafc836507524481e70e42a26f707f0dd0ccf7d3400d54e9224a82b725591eff78eba02323cf7357545607f409559b35e71e2e43b224f0904b754a75ec97691e310a55a579efc104fbe2372557fe772950f6fdf85f5dd4b5709e0b92b31fc05be75f87ecfc95546bedf7b72d50edfffb55ca5e4fb3f2257f1f0fd5f91ab107064c9f77f2f5725e0fbbf235729e0fb3f24572de0fbbf245731f9fe4fc9553d7cff07731503beff5b725503beff8bb90a03dfff35b9ca01dfff39b90ac9f77f4fae7ac0f7a75aae6af2fd29225741e0fb5345ae8ac0f7a75cae4af2fd5b92ab9c7cffa6e42a09fc04be7f5b72150562f87e6f72d593ef77275709f1fdfe24447de2a41e719cfe2675080c54466252f969496d25b5972e503d88ea16a88ee438fd40d4fea1b6ab72052afb502950275025509354e93811a810a80fa848aa741c07d4065406d41eaa749c055405d404d423553a0e0f75876aa44ac7d1a1e65071a837d4035403d402541b6a0d950095863a431d402d5283aa0c5500553ace8f784756958eb3e36d958e53f34055b262a8a1e3b4cca1d191e3c3191c37bea3944b853df6ff10a93f6c61a8572eadea95309f7aa592bde1954e3d37bc8cc4532fbf5eb8e165277bc3db4841eaed237bc3db2f7bc3db309d7a5b290037bc4e04a45e7fd91b5e3fb237bc8e84536f37d91bde76b2370ca0c3a8c40b1a6a921c229a1100000080026316000028140c0985625196a5599eca0f14800f65aa52605e3a9347e33487611843c000020001000080c8ccc8cc4c0400d289492b76ef421b1e1371a11537dadf5190ff0cfb6f7c92a0bcf94cfbd26523c3f17ff0ce2e2b7e88a9707d92a3db017514e9fad5caa95905b610280b8d7c752a6637d84b896c46d6e8af02f0b4444c9aac0edf201c0dcabaf6ccb2cb07299c1dd93545a2a9302389ddcfa62cbbd9f51d90049732685523d660def18bc9c2cc476db17e504cad58d474fbd8f87906a49810a49c6584f0d850c1110222420c249625189c7ff13da43a08bcdaeb45680be293ffa9ada634f5865d82447220c45058db8cd00671d476dbd9d19dec0303f344440d61e0209192ec208fdb5caf6b9b2219a97642b38063bc8ac4df7cec7f7dede6195d71803f534430c80a960a1c14c8d492f793de51b178c41863903873bb7a2df7528a2268f9a20d27fdd337fc65eb28d23a0a71364a6e0fceb2551780e91cea10ba48ea09e68b17ce6309151f69be10945a29640ebae83e068af3ec0692108c1a53fd9a1c317687a993e84e43d4cf1bc2ac159d50d5f2cadf2ff858f6c072d1838b9eee277440b9d3e6955ecca85a1b3591add1e51572b23aabffddd420fd9646880690599a31bc4c0b6f24fde6929dfbf88b3483dbffcef9ec8bf05d0c1631a90a34d4e07a04f433b391e4cf9b358294f03ffaae77d04973afd9679179fc281a80b53125c40a1235d88b04f3002c1f3a5ec20958ed49a964e8578c6ad2bcbce406df71eb89bf505331b6309d19a69db26130c223d3d3b53e097c801a2c41940eee087e02f619fea3027223dcc2cb3af804fd14626faa629eb985ec7a354430dd4eede4259c1c317e44e103e3061d2b73d448ec2892b42acb285f70e2acf236963dba9fbd2e31b0da89952a15c5c2b0a6520ca7032162cba8ad9cf8004b23ed060bb03f3529814756d4a86ea56df9d1af4d8f761be2f7a7d2479f5850d8a0c02f417810376688d2f1093ef816c053f2a8482305bf04c143c0edc3800bee4e290301673ba912cb12b18fe2298cb7512ae7e234e162d227e90fa00ab0ac08cc291f27f05f703dc42e221d0bce227122c11abf1f070d0258ed70ce66e98d2057f421d3dc356c2f6da6f0c981a9503e978d16fc10080775c72c500458a20086c2480b724caef1017c08538407232ceecf55d5589259ffbfbd6a0dda8502bf010720a1952241f6415f9e1cba2887feee57dea2a8cbcf67606d416930b06959e5a2402f6bea408be675f57d7e48c1b12459aa895a679a8b0c83db4b0627dfb23d9a98a13c45c5775e56802e2dfbb24082c51b03490361dc428cde4f9e45fc4d1cf4b1911b172d6a4604893145eae341bf5440664f29c6d4759b788587a7161c4b5f1d4091450cf1a5c9871e8b561c55d0f44a90935e61526e5e2e2537c56274a3752e8dd30a44b124beb20d3da7af253e437b49e02c7e5c899158ca7424ae8198abdc8dbc7a6229fc24aa6173562b680bb7f86bc438fe4aeb034880517d06b840c2c9390615184712a76f8acbe213be563add54c4263b091c309e7599c75d7f1a17bf769c734687b1adddcc440525254b9dc754d894874c740986f5a16043bece26a0ed11511678d504e0aa2bbc2e7a963f0e41f7530e293bbb5ea30c6634828f048a89735058ddae83282682f814a83f3e52c37306c7bce0f027931cf057ba030f1fb2d3a0ac83fb6326487036a34c51b788887dce22645644803734580a7dddbbea3955947430a5a05103eac01f4cf396d718e30f70f519e19efcae22a6937b7039cf20e0c981e7c432e3a049c1323b63b5743a1c393819cf6ea146941cfc3bb16835237d1a0f2c2317fab9db54076c8a815f511654a541c622a91059302c5867553585ea9f4f1983104031e5a052c2c00acc5bc8c12ee4a28a005b1c75c076a4c9485abe2d84091d0324ac845f01ee29900d96e562da34d168d6bbeaf17832767f49b4752bc1aee25bf9025193c1df00ab2f808fe3404a2fc5bf34074491682dfc5b896b45e8a5ff796b2c9138e364bd3027c828ad8a6ef57372721267582bfa96691ae1c7724035a0e8212b0aebf3f378dac90844ff81b43a93eb6486b4ce27fa3c1108eb075d620dde127b76b3febd2b778be98fd59456144746bdf5633b36dc0628ea2f2ac4949a160ea79887ad831fa2d2e019f8d5f5560c5bf6ef49145e5c31fa9c8ac8c0f9ba923a9f48092b74f8cf2a55d960efd6e300d2c81bed9d6b5d12504da07492c22c39e09a8256345aa4bccd5087f569ef5d54c4558207b221b0303f54d78fab95d88d87d6a4e6f63e387bfa23721c1f168f655c09d9829ef9d88ac3d0865754a62b0d2a0a20a743d20ea154ac9903951193e31b66c878b024b8fb1ddd03702a03f0d80364f82bdb99c40865af5649cfc6f6aa065dac893dd650cea204c5770a8d8ee335480bfa2ac1193fc8db026014963bdac91f78a76e7aaa88dba6a52444f42fe40673438e3b59d4cfbe1e59dbefa6d968bd490af90b0ab1876fbaad1f384f9078090fbb3f73bcbc49130bbbfbeff55a1c289042aa15fef1dddb4bcb386dee4237c4151280eafb53147bfaae80dea32d6a72c9442a3386d97588074cb5be8b6abca6108e2033a0e85550a8bf122c309ba95c467eab691b3d71cf131a6bd685edd222dcf7810d196d12357fa0dc0f76f98b60c33c033ca6a37ac3f74a546f72640dcddd29458141334439b20ddee5f4b8438edd63e2b60d1a84a3832e210087d05c5f82880d295b4efb2059959a12197174e364762a434ee0e04f1a7a4f616eebb861fd7f33faa1f06eb90077b39e4979b085f304282c9c627ddad3c34afe7a4cf31ff42f3ce3bcd2c1850967a0753aa0ecfbcb828b0e75de0d61a2cc912b9918372117021a5aa0505962bb0c41a1bba60c06fcf570f848ac95072f7751ae09232ba0e5744dcd620c40141039032ed43dc988cc52a8f540548ef7194960d048c6d180654504da400f5da6dc55f2a4569d6c2e88aade1290f96624ac91d9ca2674e61d4085d61d668a4e202e39982a53ef6a1d616b9452b0bcb07d4217ddbf17774d2337c5f95250f6efea221eaf2173e10fb0642ade28248267de43868a2d1446054e7f0ae9667e9f14ecfa1ceb76c7bec0d2a363c98c7d3f5bcdcc09453a48f5ffa707714a5e5f8580cc8a7fdb4a20527d7ab3625b5b0158ba32d92643cd57fc3158c24bb1100ebe240d968b148be24696468409115fe2fcb8b8d02368b18bd3024094aa022d243f2d6e742de1291802ae2f3e8297402c1702da16cf424b10fb0b89088cef0b268c12867819c6631013a1545b7a1efbc6ad9f1f5eddc1682894c06c0f6214814cc893b4c313d4ee85717df2842f10f4704e7f4de5e981cb51d7c4bda60f06d9126686787f91968c3d37ef237ad9a50f07f095167e6f75ec7b8ee6d83bc3f7adb83d2e4c7b56d226916cdae40a306ebfc41865920db9749770390e287908037be823293176d07d4670ee87c8f72254cbb114397bbedca355d07d6cc022670e1341b90811e4ae1b820865e17b742521c88c41b4587b965a518d4b9aa3b0c62a028042d65ffb81498b1b10951c5b197437ffd59b29d9a1688ea7f2529c4a4f4c0f1548af10e3e6fe096feed937e90d5286e891fe435e358e6f69bf114d8ae3912643596cdce2317641998c71d9e41c0bcb625cb398f911c5cd03a4efc8f1b0bde336f62844af4c74f403c7bf66a87e935bb5bdd5820b633a14b9cd210d02741500c0403e288257f14b25a0b79145d059cac6fe61889c7df0859766aa5c2ddebcd4be4444e1b6451b3da6bc5ad34a2e40599422bf8d6427b04728b2882016c4850889b1c44f7122002000280802404044be79b0460c84dd58db1992d1c07e5e2e5bce2ae13a3aecad1013362fc95859840993f3dc00f5e4450a86198626182d4dc7a9537da768c8f35a57363e345e546554232d1655e6a0475ff6251833260d190874863a6a1c306bdd42814c8b7909330ccc122c174ecb16251375274d37525f7035448330a2575e9605b34fa042fafe99750906cfc738c6ce2b9af9a051aea3a2ef02bd32be853131468d152361ccf38663a29327e3e978124f0753c8d4514079cc044d42d3c0249a2954481e9b80a6980982496288ecff5928a7df0308944d75f224b620a23a114d5ee84c1c61e2e48a920c3db0b90d93c9610f4d5d0e3cfacd6dc307014f8998db47f42b01650757d20495d803d5b6da5a44e409c50c04d19a5724b4fb7b6533e398a41bcd278c45f49fe03a7e3d0c054041100080253d6ea70b420350100a0650529fc3eb42d0001244741163ec94a11388314c05b0db020dd2086c10320083ee00195402d020e925867b77e666c924cad1776b42a58b854d43751f066fa2ea2c0d8945a510877d8cea5464a94fcb950863fe5d2dd83b53df3eab136710f7d615ac4d11b3b4dd4059065f61448d28e36a94e248ec6aa9de19db34bd6e08fe05b6c879e1869f6f1f64cb213f16cf74ce34d37706699cb934df480e6a8fb6231ecfbb54ae1cd74268089015d523bd42043db242041a5dee4db71e25f7445d964950eb79c50800209df1b00330546946495247e848024a819200b148ba562ccdd3eb0e72af153112e8af2a40dba40bd5b034945c05d05de8404ccab918d7212a4a9ca2311a2e5125eb99d920323345ee55109866d7238d55e085b05b1dd01547ec9724f5c337f4580099bc296fb60faceb4ff07298510d6398a6ef085cc2d7a6b422fe96802d5149a4c0698fad37d8cb9d7e8e75c707b354e361c0802dc48e15f95e2027539469c95d74b67d4343710b3d1135d41fd668b5d850d6104006634160f172484bd159b4941ddc8cd2b7830a11930a45264e47541f1c8a883dbc16252ddf119d2e48e2b42b2f66cfd226cb26ae706d061438db02ff84c02d11f40ad564c8198303a872acfbdca4fe6932241f7daf0bea3d2172c97f2b59b8008584fe19d65ff8cf4176b10aede660c637ea57be4d687734704ba4784e0cb919f2fde6235270796f0c610e5f08eb4663c2159bccf0e3ccb8ca131b976059113f646530dcc9dc91016b16e0b23011c8d2eb195cfc38e4da9aec8bfe959b1d200711fc3e38d55791204532e525794e9bfa9c956d293afda852bdfa068a5fd742a3f84ac7f83a1b0c896472929635ef2dc9a21802f84132586cccc30526c06142157094d5a5e93fa2d5757aa09588c17150cf92a6d601c6f9f4774dacb420c0320d4c11c992377d54343704fcfda5d32431374919198417a8b95ff60e1c46542c92763bd1bc4e3a59cc0fce745abd3a3ae2eef00cd94fbe20176254a4b272c6165ff988229ec2a50b6071e0408cf1422ea51ea57f01d1c8408ed81ed4949421959ccea89547e581f8b1e851b86c11437b147306ddb18db8bf0c61aede2a46e4867fa7f373618fdd2272c67a97777ea7e0fc709e0435b4008f77b52e69962216e99f80fb91b389d805e0572f28118f1eb08e5fa1f8d571e8734e5750c77f50ae1d2db3ba70f5578a45714c4991495c3ad0323070bb930ddd87bab964906c5ccd0508019f3c13d86f5b401cca14a0155a5b032024d4a5e718604fedc64c4fc09393510f2ac03b70372cc32d16c21d4a60cc222f9019f5c67d2bc0dbf688cfadc5f6b5c0b48399a8c515e3db50282d561de0d8d18260007c682936eff1ebfd1fb0401959316d34e21f540106eec7cf5662af1fe1248e5ea0b1552ae8dd99cd84d258917427a1df76e0d3957770c7fb63251d46a55db8fa292391bb06b615055037fb7db7fdeba171ed558b0f837d738c30c7c1c2d8193d5fd485f257f59ef629f6a71b502b1ed0959e060b81274f0a2c32706546a40908c4fc5fde40700ec10f94139e5d7595f09b40a7e6bc651ccc659784797795e0c5a0d50345038dd7bb3e0e5832d47f52b7108cfee309e190c8b62784e284f9e8c2324a18902ef4741554520768a6902e4e0dfa1f273c004a227f1c246ffa93638937fdb879169b8f236dfa9547419bfeb1d0f242f18c09e171576d9efa2d360bb3fe564de3e4756aa991fa9b475c076901013830f16fbdfbb3044c3850f7fd286807b8c0b41e6bf44ede3b00fb3d5cd1c4ffc85f75c45fa75d64e1c4276677a25a1aa1c77d9742c55eb92a20d2c1e57e952f5e945603661bb14a8d6ed9bbcff29e8c1a0136684c19968d3f487ee8b9cf2a1405feb2dd95c0e57c7d9bd9b19f5e8d6e224768aa38f5902ddacabafdcfee25d6bc116de40d27c558ed611263a20ba9094b0b37487ee9fba3943aa26df341eac2574c14bd7ae300266a92135ca122dcc54363e422e98d7a15d48b155230fe8abc7505560d1f1132e9e015b29128d646af8210ba7e38c505f39b063038cd361857f1fd5db0b97b0e3ba69d7e0f729a4bec38ca7a15cf771364193602a753c43bc22ba9ffd21fb4942e048fad035e3e6795b8413f10a0b4b6310beb896b162194ec349691092300430046008c00c01f6c2ea0aecf79822b54ae96446de461b1125ba2f2f1b066c4d9deeff462f0d508955c5676186fadc63abaae289b7cec9b6e76d088a59c53cc56728d3b634223d84348c69002a20d388ac405a55416c44cdc9af6db477d4116930f8bba99874a8b9b41f2e8dedfa0be32fadc8813add96f6b1681d5a3a486715cb88f4f3712f6ade9c0854422b382ffac6d237fd32c5b3c0b4d95c57d2bcc406c7c912c1064d3192368b8bd03a5ccdd23721f011ce2d26318836ee4b66a92147890cf1a33d61f0e1d1640ec8399dc9f2ffdfb820a5ca6845044a9ac51366475175372d69b3a0c3d051619b136795ce882d1c5fda1546250208d3afd723d902b4051b388fb30292c44641510aaa815306664fb381c256d90963277dc02d115ec2e2db66d3c779c4929402ea22c1572efcaf3e9970a5789a33a0a99cf5036067622ec3036ae71276765bd3c789ff72d6cee5f4359ec5745c07908758981fed86ee7f7df5e3af96c25e3dabf756b02a86973580e2474df0410b715d7c79438ce7142d00955e917cba70079944a929684855b200640757a70423aeb6ee89fa20fd9259de14230c25d479b2b35bf807ded2b77c3b49f54a79d1c162e3a9923340b706d69e8eae8094189c8572c38e940e609f43e6040a6354b70895703e9f25fc289a32f4be1d15c7e6c8e00da16821b9d12e09745772b1f42479c8965605e2d47be90f74249da5403f6d623a17ebfb082e7af52a4c1dcd9b94378eb2fcdcea628a96bd7618bd40edfc87371ae257ab8a50fa8a20ba20bd62720fe3df4b68de28a5b6502778abf0162ae22f1a1070f17d4e4ccbc5574913dbcff7ec4f30c1980d65ba5f52ed8998c5cc2dc9341d2a8cce3b6aa79f46cbd9c08aa80e1e6c91900f88b5d4712b74768a7e0203d479f1925195875d1c58e80b2b3b2fd225bf5d1fc05b5b07856259ca41c7fe0500b21c747b1f5690102a09c31fb3403349321770a885717371a96a8393793ccd5da6b34ebe8463cf5664bdcdba8e7f966ebf345bd42282d862184fd6e52747a17c41c610e6717c7d0b4255a411f309da0107a22400133e6009dd5a79d7c54edf1b2a2b8cf3b8e27e451fcef745b8d371f51fd665a65551a12ef8c6fa357d2669a8b09561e00299d2a916f23a7d82cd5e24026d5c10f47420ef7a05a31da78d8203baa7489cb3578831650d6dcd2fd5a0d99a6adc4bc52b4fd136c56cce97361175788499c01bae03723e8f02c654e2bf3eb621d3145b68b94b8fad8be24ef304415ecacc3dc1087b0c9b4b3e103925f0c43a9e3ea6cf3c7e7211560bd1bdb058845b9f20215af041c8397e2895fb8b4c3922385be94cdeec10e025f4a66f717bea0d144eb7858fbac4a42f62a6b34c10b126a306918f18e7079fc614399bc56690c8b01784c5ce0632cf8a3a3d360566220b5451d3538b4f4644bca883795ca137404d7b08435c48e4946e5576bb3817f2d029946b3990702477a4acde1040708bd662d4637882faa2ef601d8ce306b4b875fec4704ebd798f82992e58678686474f8df9d693acff58e41c298d8f04ceabe61d55f7468a12d355e5e8366445568317633dd2c1bf27866bfc87855e74b749855f92e3324635cbc1dc3ecff8ad952f668248143becf90b02cb362e02c97793630f0cb450bac099976f1159c03a9c4712adc05168fd8ab7185050743bec6308dbac376e6091572e909d5c67ceca03c6b34fff6e67c36803c3f528412f94fbb1a7b32ce57f99dc9c596b54434904d9b62f57a497cad5d5a03066ad9f5cb2c628b1d151c0584f68ce3f09599170bd67b30f496c3314ab729b5615a530a3d9725e6fa3cc9418afbcb9f50884fa692c666956fac088571f21fbafad450ec2b2c5365c96709bb7cd008148d7bdc066e227f1155cf28c94001010e286682d89d815058240ccb4278600b799cf294a9d25fd8b7e39f68e9800c71fd6e1f85fa2f1cc43598333c202d5490120f0b614f05abe75fcf1fc188a1cf67fdbb21d6236268d2c161180efb6c4693e945884181f9e98d9ca8e074e6321a39509510a86240b62985397af01dd6758625999040b1da87c23d1c153e6ab9c5e452c9b7687a7aeaeae5a702dd946534b5088b83f09fde0490a5f26f6d63d2ecb38c25adb80cd8c0852db9a296ca0828f257dc0dae3366c37140d87ad9cba84ee0c32e6486feea59d367f0339a1d51436b7c9ec0b9e811196f6ed4dd256b9c1d46a3dcd187ab4d269a026529838b21559ae99a16b543d575e8d23ac53c12840b4afe64a04b6d34faa9c196e8086bd2aa0a9808c0e986bc69f9fc7f05ca05d5f2ddc1f8e48e91fe43a4ed4fddabef7b173e2eff45350ff93fa01d39b68a938637dca53e555bc20f4a446b414f7c1900c9b608f6779ef6bb406f921e60774e4798268dc8102ad5bd13f33e3723e5d03915231898b4062966d50edc7e64963eaf1345ea7a497cf0f22f2c6346791a85528a7d347509aaf0d7953441f3ddb25f85975ba76f3ef14dd8115ae48a1db910e82664a972513c7f494808dfebbdeaabaaff15e89c9ec58f91309e6bc0a4bfeddc53289dc39262ea526855a605d9c9be1466c976d9cd65f2b77420262916497539a1471da9d0a43dd2fbd6e8e4b3b72453f3ce2ca8ed1d380e5f0b4ca2c24d4a3a9da0c7e7f8a0c7c63231497361edda7ed48d09d9ee76b502693d8f8ef2dc09843126721e280222cccd43d27aa4267c0a118942e325903000b7e0c0d4248d4e505fc218402e7967f21ba7db570fe489e391d35f9d34348983709335d7999d2a8ef40224a45338e9a4d5fe1108d4edc7db88118ec1aa6b18247115b49f482978b11520464207199c499b4cc18da4e7291d49b72ad3bea784bb67f31f20562734be98d4ca09d9404a34f87e0cfaacea15135673ff1c9ed58846430070e7f46a86b12ca16cccfe8a4c033b8820510e3e0840ebf7f79ac275da787b1247fe283e40b5c5a5169a6d2aee74626118e6be52e5fadf1ca25ea0582cbc6c84644c6e35424f6b31f737a10a96fd280626645bcea4dc7a226a79c0f6fcb12104a4a348c359297c1e091b21b340508b51f6661813d1fe4738699264f54af010e03d0eb337b68a800aa1fb52e514355ecd7925f5dacaeeba72faf6c06d39096cc533b8490eab9168fe1b7bf8e8f8644b80d3e44da512cca4259a4b4037e7daf918553e201d6e7ff6a4d53073849b582c9fe8f8421ffd42b6b8a76de4469e2db8c331c97912162e77396aba8c77c7ec4e0e3809414d2ebbbb62fc9ec0d1cd382903e3193b7e80a3fbfdc4c222aa70d51b9cdd84caa137c32fefa6d577312bdd6b52bbbe5c9cb67a025d7ec59d23d4dfcaeb684f1fe36afd558a8c99c75f689c26f72f4f1767276a8cb3e80c4e842d3695427590574a946508d75ae7e6e4b2d1ab94945934ac6fdf2410faf68f41d9cf5cd930b3a71fc38f5036b6116f8aad3267363e957367c9c168b86c4434b5a8dc5699fa8864d02636dbce56eaf669e46f97527561d5481bcf45c5d6d0b1478d028f8d8d6051fe49e1e69ee245fe47e250c43cc607a1656e38857ad8c34aa896e208e95add57a12ababee3314c7fd817c06e7639a423c265b16d502aa4b149bf28409383d7c21abc0fa554c6a3e84f4a3e6de0ee50139aa2ee2df74827e03c82127b23b37206a7706f67caaf1a55316fd0518d80f608bb7aa6fefe73458a804e4fd07335d13d2162e5dc1ccce7859fa833bfe8b3a2434185c818f4e2804105b870d14706fc9a11cdffb2a5d070f1fbdbaf1aae19bdf53204ac9cdf649dfb6680be6aff7c15a9728b9c920440c144a0e0b5908c25ed9b4d3e8f5646da75a939fc9790969a629cc1bcf03c2220c353572c73b6caf6fc64b5915c56b5bc8643d96ef0a5067d80ecae01d75a0f82181a9468f12036b0b96c28062bb850428c19331da20d6d701f3f6322e003afc5eced5e5c560a58a6c486c71de1e5a10e9228f57448d86397bf61caeceafafc47763bcad05d72bfb5f29672aa949fa4ea965e84ff8626b9c03f4d022f70cbedafb22f0fcc4e2c8d5be5b2acd0f04f81008601db1f34b300171919f55396f195bd2f4cbbbbcbecf7427ec934d0edf8caa224241be96c56894c6d2daa679cbe12f717b53da634d76019bd3a6bbbe548aa95283de1c0d291bdae4d327989f3647a35ab760b082a2b11d77b7971642f86bd2b99433b1b0323fcf2011ad1b66558ecc0c280ab8832fe32541aaf688c25d5852f8c144703bb6dfce83bd78e9fe5bb8038aeb03ebc9513d7c4cf7018d838b4f69616021c2f8c094e0a3be21e6f1707d3ae00a0ba5b6fd23b0b2d0f04bba2a37fc32a2ca30675534aee32a444c58e944a68393ccfe424a1cbe55873d2fe7b80c49d1ae689a1ce5322f5a91078c37757b4612ee24b5bf3abee2e97bd0e3ccda79dd327439e00ad482f3ae5e88da33313cf3f6e58ef2ee825fa65404630f9c82ec703d66fc5807ab3acd283a5f73e8c8c38bc453a6736219f8c4b40c09ef1bd74f8b35427531e1d908086d3b0eaf7d8fffcdf7db918be3afd0b9ade8a6dd7f77c3f651ef25fd62320604cc5c952bbdc6698f7c9947f43929e9e3d369db9214b6a8707b5d683e7c88025b94260695a9ef54ff609b24e1a073cea232dd7f1a6c4640d8a2812a73b87bdc8abb08313ce62bad4fddd64c76d6147551b47dbaa17a6970433cd36a3252d7061349372dffbbecf88b969ae8159f5974f706f3f511de7f5aee8d2fa22a8584b6fa3f6e7691ccb0774f21f7d4c767e65e4369af153e9a83c0fc98c5df22b1b95e0922a46fe60537dada4c5e7479aa938a3a4dbf9ed9c4a585655224e609f39174b4b7f894355ab2985a75f08558981e428fb45c10d7ecfafab65fb2e1988f1d83c652a800d20e05e24cb5b4aeddcbb83ece3a2c34dad9d0b2ed7e751a36e19087116f843f2829cbe3fe51e48d2651e4acc1c0ee18dfcd188a1c4034aafbabbfaa676f7e8beebc0ee1fab9154a6968df11650bad976640554d0a70207641075609c6101649a03a86aa625fa85852206004f4f1782204cdaacbfdde6a69f106be0995fb57bc2a2621924660aba760c3ea80a7de411a560f11751a666e914bc793a8bc280d4114fcde17711fc6aa8efb8a9cc182821ab3914280532f9fac638716055b713f720aff52f4e1fa7b2e889d3907b572c12695f1937dcbde322090e4ef78bfeb5fb1917879ed7c111c51d199520bd39e9452c8e08b8b231c8ed51530d23a8ee5eb68a5e2f07673158852b65e609d59b2aaf38d6c8fdc3b55971cbf7a2127de441eeab65f79faae20edcaf857a24961298bd34b1dcf194bd91fc1fb6aa18bc6d585d5f753d713893f5afa9836c9a452aa50d109f74c4deeb14ee0ef5497d9893926bcb90c8df0a5bf9198c791998aa26ef7bba18dd07cc46a761830747b3f84e92d1392a7a789288ef46ac5bbc8309be118dd1c2ad73cfffebe50fc0ff7b4f8ea5b6498769f90681a5e29da6d8f364f7ab758b20104c1450f7bb9b6016150cd463df7fe7798b9d2d8cf7a3f1430f0c18cba919cad11d0d76ff8a8061bc1407da618a6f3635758ab44df102444507438ad3696cab38393dd4627102611ea70b369bdae9f646384ac26147c016334eafeed7507cb5fb9107fbb8c7d05028094e43fe9b5c075206691f1a362a408326f624126a8e09163342087fc3899a33557fdf9acb6e03e70c750d2cfe33dc1a208b7f4bf25878722981e6eb1de70360508e614d18fc5528a6f62e895f4c888fcd7621675b7e25c16a7e0536ee742d56236bc6d16e9c88c66476ab9131cbd6fe95ebd4c040338549041500a77742cc480e783f1d932a5a341597f9cdb2e0e017464d224052d47f5251e9db0650ab8e49a6c903bebe48458ead156fb016d176bf957f2d7d1d84836f882fb474dd6bd520e4609a4ca432eaf52008be910007b65517a4bb8a24f5c14fb261cb3dd87a4d4e41f02d78667d09843dca73e6574d517c8bd77b310aebfac5a8ed0429b754ad98ef9779226c58473ebd60538ffd5a68209d45f87af8beb1e706d3d2068d04ee8288eea95f1a5bd8d7a3241417c8786cb14bb1c4035e34de51af7b7968b20e0954712169dbe6ca262aab710d23e9745fdda96eb9750dd3b85bf9d175694e439b671c3039f5aae69ad9ef219f07161a93b902021bf8effe4ad7add4dfc73d0b02fc8cb3b825e967286fa0b58144d6a13686d015241461655290fe465a8e78777537fe14653e3205c870e924962946b923c314c7d3d92ecd6e141f9b98b3745821ff9c5d5003c245665b47e784f3ac97ec9492a0f7a9c66eabb972c6a5e1f01af1986925185863803e0fc8e4b5212c5ef92a487042e7c86b655893edb20b22cedc35e4ab2c68b7abb607c1eb3436874b1f95322c00a87ec7d24d5ab25afc3f8a7999a040639a4d17a85a1996a0c807f4913b385b08103fff55eb01ea5ab0273a5e7eb8f057d0d0f397c5fd43e7e7b5f9de243d7a7a2b2b4be9164685b45cb5047e8a5a4707e7889e3456c79001af6fabf803234d5542613e979987b1f1b1e9b4f1bd0e7cdfe952d87b03cc70dc472c0116dc1dafb72fd0ab4e4a57ef79d29f6520f3c5e013d1ce4536a9d505cf57a2666f60939e7c35540a0563b144f35ed005b3d35caa6e79513e44deb921f6850ba60c4a8afe664fed5b4799cc1293f05176461c02e56550da8a27e542b99bfda1a8e83b8ae52cf32a5d595a6ddbdfe9c6bf8abb0d676798fa22b1182c16c2a4f40a35ad48ba47693f1d47e11544dd83c7473f7b8e106d5b44ec32f5ad8707c34740e498772902388263ebb43dbd0b48c0f1216d79397a2370b550ade08992944a9c357366920711e7afa7a9fc0d081c9b1d1e3d9b16fef1232be06bc502d840e338db212521c60c1ede2137fa2679ef6c8e94a22723edc0b113b20813a4269c1f98777b7f5432a5e9fbf98a36f4951d2744f53293343b9684aab644db15ee7769a11eeebbbd7b9402f151695b88275f347ef9e7f4819e7d0a0b956296529f8d9743220e95c498fcc4296a052fae1bf529f9be596eda1aca494c679d120a3ea5680fa27c6c9c2489432a2a0370a3a9f39921f429c56aff32c8df9214c93ca39aa2b1c6ea2f4e18f9bcebc315f83b0162efeec6097e6c1c5822e7230f18067f48851d4a9b1c3aa56bf6ee2bde3c66e7986b4f34e3c70cf82630eda6172c15ec69442a80b818734ea410d5035e9e0675ce686f7e81ba7d332abb3451078b820590dbcd6c1b6086e0d5d17b9f7c2b794dbee80a3e7076b2f766b8368c767373aa6d79c6aa547b12586ea2f41bb8f045dfa18169a275756a02d16cf5bf05c7f63f359020c5caec0fa99fc6e5e887b92abb4e5804c8a9af457de417441eeb7daa7eb492e8a3c11e7a6668d3e9fa85b52844ccd750ebfdb08ea976d7db3449f7147bc1942e26d34264e4fb369aeaa6ef8e1bd8fb15bfb35898fa479aff60c48e65377ce85a8dba08c45c7f764114f004dd064a545d146a142607de2c6def5757f9289616bbe97de5758ec4dee750dd05241026296d9f8aa7af389d2b7ee83d5ad3234c5aec53900391e61b5acc6986cc5b50e13ea992e7bb6cf8b164fa68bcd0030283a84642468c172f2cf88a5c31c4f91fc7cc68cdf222d855f3c4dd42cc63e01a3956cc6e0af9db918bae2c9a7d46e906d0bcb98f3818b688b04e9a78e71c72a430d2611a4500bf506fe296e50cf661f2abd11a707fec2e865f85c88a34f74ad9135c517a0c5c8e83812234f1f435a078ff35a023304a492e8f4b1f863087eb4b000e68b4c14f044e28c09879fca50296bd7ce4424208bdbc4581bd1792a16d8058856f34f045f853c2e427f23984d734a555cfa2ce3eee83b74ea9611d8b1ffe85b450220e650b46c8dc2e67a51e65483f8dcbd1c3c549934a5371cd578d4c2a803e45cc44016b543b745659e568e158554b4cd7a409b1e88d2002e0a0b7c0a57b463e10800477d088e86aa6c082319b2bd9f850a32ccfac29ccc5a8b516db5ae7affda54d1ec6ec6b7e06083c9ef8e82193ad59d7523d3e6905022ecf84802c95e4082a623a39a52554c1c078a2e9329eac51519f33c7d48687db1100fe043dc464eedbae538d15f75241f6f80047d4aa0ebbddca4872896f69e20bab938ad733c0b83a3830753c1d5cf121bf724ef92f7ebec16f9ab43941ddfa19cb5ccb3527312aa5365abc694c9ac487d91d36de1f73a45f546375aaacf25f70875ec3f3955834e677133cc9299ff84abe8717f91ee855ce0dd01117f0cf033c970958b123a073af67e676b677200d4cd56be5e2277c80528609d0dc7f1c1b0eba358238528af78bdaf1f8c1dff82ecca817019ae372dbeca9469a6b18458f6410a30932171e3f23bf44a171404aac3737fc0877d8a129af388da4478ecdc10667d0835a3c253459511900e10d003138aacf47cfabe40910caf3f7ffb1ca34810d1ce52c6b4da11956234fb1931ba7f0ec07166a1fd7c9ddd48d92997f249e3400fb84755dc2cf00733bbada94143e761a4afb83885e6bc0557a715f21ac9cbd91d41c035ee8ab7487b98808fc059d4452a209328c280f81076916bded31cd0d12c0f7c7c41d6fa622f4b98ffc7ec702071ef873d5e21dd5cd5a6abfa41b5650b943f206575b986236229c19416330e7466900754664922285981882727b3798a902ef922f902e331a858dfce94951abb884dcd2b06c1c89e99dba1a5c0381db4651df7635f7081e33d0faf22ba3480bd3ecbeda08bbda2e65795fbe222f656719d18a1231fbe71673dbaa7d0392e5c6eab7519732fc3762fb80c6626281bfcd580ca0996c62d927bf4eb9f2ab39cd969a356751d67d687a9694c7f46b28d4856e7dabe929a224fa5932818384e14a9bac29a5b78e31718feb023c871f2891e9ec2d3da0982eb22d70a1f1043e23ca13768b3114be8562c79f492c8f11f7aec6aaba1d3d893d27189cf2b5691f5303b3d2bd26549d6850eaa473b6d84587dd48fea02e09cfa9225a13cd90f79230d6744813ff2951bf9e20ba9d52f10a19956105a35bcd41afea5325526526e268bc5f7fcfa68a0bae222af12df5a3bdc3aba9c93be0b88df494919c0039ab2c5ec91805ae7616823a6cd76d1bf2a23f56f2f1afe58542970f9778680481e8e84a961eff64f06517d24786802f025508ebc82967942c5bb13734d997ad99fe775c62d0e7073f15083cf724ca29aad65901b03527a91e68ab5007e27ee488b34b81b908073731b23420c29741381a62c47e0440d4ab4024e1c8f2d3a6592c75afacf057313f3744b9dd3c913880900dd9e80e4053f78e3f42e0a34411115fac732d0c14d1a445475558f0ac7253081eaf44a6ac572e5348ec4bd9167b39491d7ac55d94debc6931a8be5c795ecb8de996d27af6a13952c03a1a9841816d15fa9a7a585a52598c64f1ccf696bfd8d40a91b8c0b17eeea600aa6f92592981490361f691bbc5ad192bbe9236975602aa02374c146c564f23986a16b7691a8a5839ac32735251e8441cc44f1962d56200ec6dc343408d6c0862877fbb720584a34acb8c5678a71d9ffe9354d2331006716891e0c2d64f77914011764163c876857f001398e8abcc0c3d26a8358f062f75cfe39d4df0713dc1593c7e148af17d5a3f417cf27aaacb4cf1c8c0ff29f68166639849a27091b558bf1ec50868a088c6179df42a867e12c43123f0594c20722842020d915ac7bd10d2cda81881964bb8782d24e78922ed1567166e3bbac5d36934774c1813ef4c45f2e9eac58ef6406274eb344a1c65df893e923261dc5a55ad7d7a8363acbaf688a545251aa7b151d943ac789163013b0832234b006b8f43e99b0b19c04d2a2841705afa4c1ab06c15ff5889499eee12f1790cec0e270a91ef8fdd18a1efddb8c58f79b11beea2698103651884b546c4e1eb391607340a5485eafac498042db0d4d5ec47741395e781bec1b4fa67d61b7d5b9bdd2301e304ba01adfcece3bd4439c4402e81c43a0261464529f8dc65343c8e1199f22836159b8ffbc01f70d7d428291d19638d2902f91a29263c303e49d930cd055826673949453c05a811d818b17547b4c893d09d86fb69e8f6a5a3e5c8edd038b6ab6d7adcafd15a54bab8d4062402b4e8c7f1b6b0446006bed53f9d7bc4e8a7e4b42fbb4fe53b9e654a3256ca1e1a1969f40b8136841572f6217e3ab689c7d29a0e41e1da10aa8e6fc56db29c6635f7e68331757ca3bf11e1f50682034daabc820cd40c6d87542e40e37075462d948a25229760de36009a06b4d1410b2ffab1d72018dce269635375b005c3949b14fc1f26f97de416a45f5a6f90b3d723c33a665cc795e4396dc68d4c39bf5fd61af61ead44d234ff051eace3d7017a233aa7fb4578700b77114479c5fc4c9e70da10bd59f84f60ac4d3d1b2d23b9bb1b1813b93b5758b4419f25e90abf8607d725847eaf563cb418cf912f15687e139c0828d6489b82f81e5202ffb537b8a3dfe71adb724f27ce628191b0c13d6da81483ad0cb370db31855b06f8834b66351520dafb4da206103d6afcccf9b13c26a5bf9adf6e00fdb003cea43dc06f2c016cbc9fb7eb67a658faa7806dc541e6ffe52edd35f39aaac0b64a4cfad5dc5f20c6a7009e386e92d33afd96ebf73c3ed3bd9d2cc07d3f7cadcde6c6b6723cd814220f4e3f35ad01ad5d07d919a464afbc8c2ccc6907921a7aec4e7dc8d74fbad224495777073b2b9e50a399afd677747ab023cacef1cc400b30bf0e32b3f9bd1a70cdf2670fb0c91bd4eaec76312e47020a91248d675a917dd7470949a5c3a4fc1f8247632c6c36289b10b6953311f07c385b3b7828c86cd016c94608b55565114ab57833da44c1d99f92a08b4460f14a6dc26bd4a810ab5e281f79c760c262412ac7fdfc813286ff55a593c05388b7e36f49d8285e462eb9f6b646733a1f6e3b6089aef7d9335369db7042a7a49d31833ecdfb4cdfdfd46e9d13fecda4478931414a7af40cdd856a7f0499f38165298fe68115142185f658822c0e6369b81e4653dd6b65bcb717029a8310a9b0cb47ee7bf60da62d98402670bddfc078c38644ba8e520439d00600e4417c68fafafb1e7b1dfe098f3ddf9782e101919c29db06f37167e749c494f41c50a0e6e481de33802197000069e0038c7465de9bac0309d3624577b83ecfae7ce8d62529881d2d99054982acacec5f266fa5f3f526d5e02df08aded539ee9601efc229cbd62505c9042034e452d1230fb291a40d613fdac16fe78c28e8b329db9456a2741bf155b2b557d546bfd2fdf60e1cd189429cff4969d7476f2f86750556acb60f7f5e16005c5f7cd9cf320d422b2010e40d034d30cb312519fb982e71c83509251e0bead36ffd4f99ffd37fbb316fb335e73d91117e3a33d6336f3c5cdd40289293f3da0df1bb8d5b7d21895a52e8c6e7f73c80341927282623df029af91c0655c8617112b9111409802b569a2eccbe065b1a3e7e0db88f6c854dcf862a1944d4180bd70c027e9b4c30426804083aff087608d7fed6f01a852bad05aa17b6ad309cc7e209b96cb2bf7a1f4312286d86fb4fce43bdb1c309774cf9608987159790bf023a260482048b28c227ba5e4a8daf8ee19e445414b192d9b2a84173e8e66f3191b14ac437c0ad666e8d269b765d90d766e15a9b15c740907ec4bc47cb50bc3cff9473f2b6bc925a0ad01bd19bc630489d1ed1e6341275222b048e943817a73d1aff40dac809f575e91199b66b48c887fa43720c485c1a327b57cb0ba88bef72e82b436f614ea26bffa5f0de0149987b25f6291c4cffaed04caef3ef53786c773c8f45797ce470307339cab550c656fd4ced3fcf123ea84fbedce6876d8052f8d22da43bbebed1eb87a3791b7b1227dc32cda01b757aec2cfb9013e240e903148fa8b47d2053b9d987b781dc01056e902b9537bef329781cdc7ed761cc3f543dcbf991731b82a7f8daceff92da116b9b8d9deb7ced051ef74f6a62c9bf9a845e8b2bb20e594c5ba5435a7327945cb4737151b507d3c61efb886c29170d055e6f7c71aa27e264f2c1f0031415474afad116665bc518eefb617dbc73d3dcc22f46b0e449b0ed7c9c52b1c3ed7e5cfcf43401b05f1e6ee8388b844ceca394f205fa966369d8d690e716dd5c05e0ad1b113bc3ff1f480279b3243b8d7c2fc17fc3ca9a8ab75e2055649d859d4da20e1d90c40c92ebe7ce3a2deef3d1364a0221b71e02c7a4cb725974476fd1e05a885796e73184a1b9d2c189386cfb3a415ec9b51eda35ef451a61b51f23efce3edde658c8ca6a10cdd7a27b12d5e8a337ab297223b201a8ef360baa51b17ad19b1297175cf1e826ba90d68b9476cf96bca6e21e8d799f552fadf510640c9385b88767993c6eb0e597bd034f718fbd87885079990eb53faacb42a415fcdcf116d3758c5ed9b90ffcf53d703011f1b0e23e521a42547b18ca21ad560de2ba563c84fddda1d08c0e31f65eab32e23de443bd9567cbbd86ed034d9a24321858924c640f544e8012f199aa00db9fc8fe6aca9c41266e45a5547ee7242b3e661ca54be8b4c5006927a993e4d598cda25b9b7f1c8e31b3e4097b2b77a5c85215b70526ddbadca4ab502886ea5f2bfad6a5ab18fba7f3b496a2bd20645e2b5d01409c82a4a1b819609ea141f7e89e9e91464c75eff3332a306c055dca2241c967acb19a21213bf5f27ff5c927d18558395155f1292bbefa5123fdeb1d9be9da02e30c71469146ffc202b0427efcc7be12d4cb858d8b8bb860455981ffcd5d52af0a38e84958bb30077c329a3a4a576cc84e8ab2787a2411c3b37d0702c0c73af6df76c7840a3ae24a3789a5048fdb77c2a75f42b4c91b38db702d5a5a2321338fd0914dae2c6b4dc04455a20ae9f496b46e3d33efcb3d0df27bf68c897bcbbeca083f43c5203d7752cb94bf98328f2a79ae2f9f04bb384d89ae1dcdc763d5ea0e3026e75d3171ac561909cf5cf6ae7ea214c08bc932e993bb378f3bb85126a7515bc144cfc845b844d74d10d0238d26269d433129ae1fbfad8107cc17e40ad9222a565d5f160b4d918fc2e55413a1e9105e4757533bac857b14679ba58dd76ef8ac543ea1920bdfb51a6d9a73a1fecd8ae55dc5cdf964b6af10850717c79bc998f40f2abd9d3d6b7ab9e85b728474557619ccfca58676487a359a5107f37b3c0f09a16509149366a07875c55887f1381e9f94a06405144b6724de74654083f95c9e879450e4242aa337221e60b35a5e80acc6416148671b530906802da786d4023c19996bb7303c7b2fb766186e4237d260be93e07ceb4e7900be7c2a37ed05955254d0856570336a0c648a04b6a6a44cc1528f940a84de6c5cc1dcdae5d697db61ed00f40b1296fff5e086545a96801f59773ba3fc150e3886320a09d440217c20998810576fbf2dfb0ff48e2407566281823f2083cca5f03d7dfd618937f50f5934f99b798a7d7708e0fbf4279b918c6482bc429005f11a024aa7125e79d1c9f55356b53441b35950f022cb179cc07c0c834321a44d20e3126c857a93aea8cc2b2288076521869194ee0e0c4fb0b633d88e43096f1801cc236a24151a01fec83e1ae896cabf78033facc57483809efee8c0b096d77cf4b04e552070490388f55656fbacfa4cdbb75a741f8b06508857daeab77feda33896899d2cb34949682c468d176022613ac62e5fdd26a8a02c44b420a44e3604bbac52944f1f83c3e4e0c73e4506f5de0bef737f9678035357f01f26792792acf84088bf0d51e88e61ab3982677d5223a4abb8796a29fd717658654916fa6d386a063c6df97ee6d455dd39c098db62194a91d0c9a8e707b15e8f1ffa10300214c4bc9ee967b73a6a561ecbeb53ab9c474fafd39f6201b7d3ddc995136aa5b99a1e1cadfc2851a07dc2f8187702083ef1186c293b140717f05361ea177e1f69c578e906a4718070c5adfafa57923b0e40f28265714b68ad74f63d480fa42cfa121f7f8bb39725af184fd0ad89d275fd44f518bca9174e0359a663891054e94b80bd31c710fd18182f71ea9778be0aadd8baf438ef0c11234617ff99bb22d3e0b5fcecab642cd6354d24ac36b8f6d6816a4c331d7cd00d20a932c5344746a24970e6c1a5545dd0819f5154b2ffaabf04ddd63f90b463a07d6f71f2dc9602ee13e8911aec40ab1e267affe0f2c42560a42eecf2466217b2d720d8f2b8763e4ae84dda4e7d4987a01f41639ff54ca33a14d29e2f17618df90ce40681cb8926e35fb47e0508f9fc07bbb86d8f17a373d03617f5def6b4c3bbaf084cd0eae165d1d60cf0799b5a826ec74ebcb71728f37f8f7d5ccd4fcff8256d3d8377b34b0c3031182ba573b40d911bc62cc456f99417d1323e0ef564c26d0f57389d366df79626eb3e9aeef746fb546ee8bf08941aebeb794c1f77eb80fc1f637768d746b76205c622576839db3f02dde1319bfe5b38a95df48aa819c1fa0edc268f4385e6489f39f38af07d60cf9d6e013511950972e3a10a5997912c38cb404b04405d9b54eee1b8cc4369122462bad92509d99cd8dc521a964e70d76fe062abbb7ddf005151a2ca26dabcf001d03a5495965ebe4eef0b3509c9e67615fb42110033f725df616820d0412b7014845aad6d45658ebfbb715b96568bf5b0d946fe3b0985d91ee2484aeafa2cd53a6911629096d067ecc110dac9ce00bbba46df520738c5e87bfd5655ade01dc666c6a3473c819ce501982a9e922f0c10f322d0bfca031fa989ace703f421f04fbbc5c8d677bd52d13b32b6a9dda9d18d01d58272eaf173e1a8645ed5c49afd53ce0bbe4d9fae670c610cb25166c1a2998dc59aefc3e0c7eae7f2f8c1ca2202cab5664e7d693da03b7de7560b06648771b49de3c19eb07f758ad417461f346b0c1e72f9ce032ca281e94f9ae9a36e6b54a8fb3112f0a99162f882efcc406896e1d5051b59ac2941d3341a2c5bc9e206c275083aacd0154c56b0c06aa935332eff3587bd6103a58227aa6e28c22098063dc838122ec56eadb121b21f9ea6cf3afd37eb290ed1b279904fc0b35120a0c782441f7c0ad0d2d8b695d08261c86e661677085e1660f8989977ad91e0f738976a394622cef966a461826d2b32482a52cb6a01136e75f2f6b42d28ed1b7d4d6c7f8be226b22a27fdab0c6143ef67dd254538ab39d7c4bd83e16f1e8a49d07f15f3f63318257fc06da3f2f918c79b6bbcc51ac61603cad842ffec7188ec5a014a2e392e2aea448fbd9a84c80039f1600175142cd6b2375a39ed4975cf553bdf56567dcb4ff0351c9cd01f570e6efe58264fc311092fb43f0ca33d18065d6492c263a218314e36949b0d30f01c4fd37878fa49be3027868ae845ad4ac05ee2dc2c936041110247f7b4580e5cfcf64d872fd56429ed2742e34ae7d8fd400f5d323bd0178a507472a8f54b53543fe2a476105361081888d62804a18a5d9d96b081176941827d7db4556959bd00e6661ae38fbd737a717a2e88ae29cbb04d70db6feb33ec5880a611e14a3407eb3d5c90a398a0520a5012739e6aff9d5389f2caa34a30a957553f58bf14f5c9f4c513904f9fe89550fd241d4efa9538aedd993ea823660c7f2673d1000d00082b2e894c319c2ac5a142bc56d4812c89a1130b6f9c8e3429b0c5f739f325f8a0d9d6853b04ae955723f416e0bb2b01bc8312a720cd4468dbcc813ccb5580010fffb04206fbfd966f641ff0943ad9430fa8aac3e95faddecf26ea2727105fe36adedcdf00022acf32a6384b26bfbeeb2386befa00fb54c62b54e86aa7f62c314031e4f279c5e140045bd070f9780dc9fc25c0d22a97d6643f84e779c49d64c2f0f61f0390a5849f795fffecdb98e43361758e02a644e25f7c4b54c39367e055ed95a040d4ef410eb9013f2b7536a3ddfd0a25fd5c9464115c4ca6fd4f587abc1a1a55b1424b509722a47d771ff498e3854b4b13b1fc9ae0105f89924f6b2987f7d1a400328992ada6eb0bb8eb7b8f7ba60febf0777af018c70878ca78b220b5e362442585bb8d5dd57e886209c47512e702e56f107e7da09c3c2104ce8b2f86efd681c2477089a3e11066e83665b83f267db57f55a952a527178f4e1549d2e0cbe1e30d17948b3b2d29cd570e39d64ad013472e6333c1c70a3df921f68121a6e4769a503c1f28cd37c565df95fc463d4d4e5aba0ccb0697993be0f100469ab7bef95edae00d888e5c14935b6e50d7bb27819d3e468bca107672f9ac9d1ab233eac3538f3c06a648a5f6dec9e084c495f5994b9be44500abc9dc2607e20cbac1ccfaaea2e63261f697fd91a53717d614e9c1983e7cc61176ce2b45833646d16c5c9ab27ae7c10ede6838bca47879d6b74a16f20203cbd562a17dfae41be4f2c3dd0bea0956a195b9f12d6c51d90ae26701e51d5dd562e6fe2e6abfa15f51e49c8fb6c07fa38bbe5b37ea068099f067dc4419dcfea9d1aaa9490141e058dedb231f7be4b8f9e437c8bf732512cab9cfe155e34b5067450a77d13355db99790d379ed1fdb7d18b5728a28deb73f973c6a77b8ba942235bc07ba8dce7828c6e420ab3b7972d32ee23085dd9d54493f384eaece9b44ef5f9961f53a9809b618f7db5aa0bfb37575020ec1044bcc04e851166b2d710c01e59604046939a1570afeb84b49e055a1106b9b9a86d5e8c70f6d8ed3dda7139170d44bd1cc527153847ed3d7cff9bd89f37e3812491430c071867f61e7ace3afbac0780f65a3e41ad43ecbde83727f40147878129c52ed83e8c5eefcd1d97d59f74d79ada78b6904d3b8685ca15dd276c08ff389b41510fd5002a0476cae83ec366f59e41d378451a2f80ee6e27a4e8b1f9911aa6172f4978f6c3dab60fcf58a5d8c897ba08cdac6c96e7e7f69b013533bc74e443c122c211a5d1c73d60872e8712b6757d331f59982888ba454eceb2005d362503c64c5c1aabe0a853e650d53d6a8ea3eb9149344e945f460cc04cc2ff7c0d010ae7bf8c0105ee6f1cd7b382b067c05e4cf28a0c8c606ea29a229e51038145bb05b72856a7ac6dea59f722804ae391010d09234256b35d8df92dadf3a116c423ace42e5d8b5aa03235013e4a71d66f00a203448d5e0a8793125f5ced398ce2a634754dab6e95cb9351149ced4245c0d5e89ca9840eec9590f8e29de8fc1addbbc883b1b60a4ec2eb1e949ef84f70e6a09eb67304da0642a08ffdcbac56b9f380b5732f648ce11a59ad3be59f5078e5a5124b2d0c22e9cfc61b9b2547bba7775db532d7e38f590eeb77716ddea8c1e75e9c6a947cf94c7f3a731c9bed972eb03dbf9c40514b3478c4f55ae5543650654fd3bc309aae43c4f53cbb4526f302bec86628e69d9a6e827d09688dbb54b72bd75abbc995590e31cd721b0a0ca6e92cbc0cee9eab5bcd33a6033e4fa3ab70191385960dbe047b1f1f3621da00939ae409d86fa5eade66c34a7ac4b0b7bf962d3a7487631da1a42f512ec0c68a3861284aaa27fe3a2f14124c7793a520a8243088e3710044931592885519bcb62a048d70b38644bd139306ea3192d47839320dda1f987ce2ab558e24ded45b7064da0f750678aa6e44a6b0335c083818e8a45f82fe98a54e61add772f333714b3b85f36a3c913305bfdeb4d095ddc34d79ee2d44dcdbc926cef33dadbedf8f9267c468a4480d7178a346a815808616987fe3f2b658a48e39a55808a2111c67ed42caa84571607b8c764d61b4f93a6d70f375c3f7e68bfcd27bdd465d5ff32d18a5244e228ef8feca59145dce8ac1b1276a241ba08e0ca2a0a098003438c63f94fc406004da252640016d51203c24d5abe78601a3a741072f1f35995803fa23248a9212757061fecf622c93da3cf08ca2920691a88a02f996b682784db8dfd98de08f285e79578f34c592acb5677cad5cfa4c8b5e8e69289894c09feb82dbd0207a4dd289cb83f9e31b745cae53b0cb2bfa93f28c0248bfcb6d8d41f55d1f96bf4c3b26a4a3fa4739bde0d3502da05af8d8cfa5b598f56acd0ab32d7daab920b4c75516775e696b33b14c87e3e19a50b3fbe5e4f5f73911876a68a4797fb6d6822bae0b778297d265161aef5e271e40c46cecfb1f9ae80037bee56c634705120a00a92213e3b116860d312a093ab87afc81a5e0a80d304bd1ea3665ee007ec3133596a5d3e3cefa5a9c6a9e06b07187e7c0aa1e572e4ce0466eb38590c2dfa5fca851b4b27014b1a2fe4ea5a867f0ef8309c19fd037cc60d1b783ef2a6860abfad2beb1e68e9c244506f10ab00a7de36a765f7816d04da395122faf426750c6d594931d9358bdaaac1b216afcf54c12758937b99494fdba378366a86455d1b993719756f25edd0f775949c4756dc8cea0e32773d399fb2d8b899d69e6ae9f267bb82359239e38448aa96bde706c98ffaee2a6a567e8bc0c20145054ebdd82916255d1b97fb81b5437c033aa278d73e4b2e29e7baa7ecacc0d4a672ecb047cd62b4a0a7166f0e8f6a0ef049b166f30ba94f1a6c2e39e76a80480f09500a66c0b34abd6ca36ad45026df70d68ca0618057a29b7f0b8d99d5329f0ef82eda010f6ea0a2ae2839180526210df8a8af0012307f125a877232272c9c19077f9f6ee9ac94333d88f477f97e760100a2908704f0e448574189947562be9f3a3ad52f68b9afe877e6ba9ce713cca2ea76afca01b23af3b701fa4901101e311402c1d1b337370bce541466733cf5d765d9513dc854b854e846e245e220b3711cae11c1fc5d9092c858c35bbba385b1356acac9ca9b73744943e9a49b52630f6c159f9c0c394315768373c64289cbfa738b9e26d02642c91e7cd46dec68864937b14e1619930136b64aedc5e88ed0bcd61d345ab4145f90988b5cc9f914ee02fd581887cf97543c950253554b70d530e62a07c861ab06ef869bad658b1e1ac74cc57cb9cf94a60358794bcec8a29d243d8ab8d55ebbdf884b101bad9feee33315bea54d19e7549de0f1b15568f530da4da5f5086aaccc71345a41a297018f8e62ca17b9771aaf4859438ed181745f685ee2d2f773773d1ad60c12d2b75ed377aaed297b711024d88829a45f39d4d938a5c3edbf1ecfb1a4c2e29d2feabee6cf2a9505845b985335fdf6a9335799885478ff6662d9ff275af6708729da1e1d8dccf584c92d123ff1a1b341fb176845b0806edde877d07dd0c7e2d196c5908acb64c713ae3ef682f7510af314d2d20a1c206550e6b54298fcab9eeff9975ba5d532349076f6ae13538173e2adfb8fccf95830e8bd726bbeab01b4110f3547868dea08450ce97d27f85e3ed01e9c70cc7a8c72542fe554b5e3d22544c6c5a1a6253bb75ded15d388b5e7f032bf32bfe14684874118b820e35878e33604d32dad06a67c1909a03eaa65359a90f4a6def10657c4bbeb96ad132d60849446d8ba18c230c5fa6bf5b4cdad5ac5c6674315e51a082993f34982cdfe5843fad62d55f5a9ebb50bd268187c53d0c07a47bec2ae38f0c50f1bde6a4edaac6a4914987b2d6ec692e4748e58f5348a33cac1f497a96d5cc49af075eb32fb5a0ecd5cb471287979fd608deba591d80fa1d6ef242cb3713ebe14bd9c017254bc39c009aa4c547ff019c303901af96c354dd693c0151203cd6737b960ea161efe10692f9f16f109979616b344703cadf629c5e30529d710ec9aa96559d53c98c91b97655cb8ace7bca0c55846956d5630cb6667ebe9e0819f4c28e3cf2ab99893c2846308bc7ad011c60d152cd1b47a98002668f803ffb9983bb894fa0ffedffade0bfdcd799c82daeec7669881029a50cc309c609b7093c16270c040799e9014c6b568a9874581e392ca927537938c3ec07f621237b617eca43320e3af49b8b642331bc30f390a1f211185e9891e06425321c80c40811214a7295f22a264a64853779bc5eaff7fb1ddfe9f399bef3f7438142448142678c425c29aa49d31ed10c33155152cfc7ebddcabcfe4194d4fb0f0683c1e007f9f5515b7c680df7a6cce4e1e9e9e9c1fdecd9bfefd8c7c707fb9c2698b06285b86285ce7805e6b1d874d895a29cd7bb65f15829aa495319cfbd460d994c2693c9b8ee356af0e7b8cf12f06689126dbbdbf55b1a7e6fe2c409d78913058a134e104f3841677c826bc7518ee672d97834b0218fc5369383c762c3f879ee3d3dffff8f13f0cf75efe9797ebb8cdfce067933c5e9babda9e2748d6fb2c0383d59ecdfe794e3ae752a8ab78efba5bd8846b91d9acb8ea3dc0eedc60d96e3209fbe6035bc79c2a9c3bafd092e4e1d16b6e15dec767d1734bc385decdfbfd8393d8ca5bf1c7713c639a344f3a7b88b3f3f308e6b788ca6f8067c83fa36601a848080808080807e42404077aa07c7084e648487188890a721b848081bcb0f0dc74996007fc0403cc150f26db8e46395d24b9a21431dc949986c9e7d6812e52486181870cc53887e52c2b1820c3e7806ff6de52be49b8d7c7381c7e886201e1ed630b37223480e0b443d2a1f2dd48069cda8e968b1d9015d24570910901647724d295721210c01de9fb84f091635300e7c051cdc051c0de0430fe044170f3110fc34840108d821c8b1c971927c5bc2c24b48027674c0a4bce07c901a86781e4212b1e1f9080cec0d363489e2d9894eb97d3490d0f16e68bd431fc1553706bf08bec233f871fc84b1798dc39fe33cf86fae14f0e61b96c0cf8a0a47e02ceac143545a40aa41b39af1424ecb0a41780c58061a968a33e5b8abb67f613e8cddae0fe38cb1dbdfc7b0c99091f4b3e5e7add030bd99f36ef19037f37ab72f4d2b431ee747ac9fbd303ff170fe7e7ec0ededfe7e1e7277b7bf3ba417e623385e9891ec78614ee27b615692330ec00f41bf22e8b61fd00d06e68534325c0dcb8f17de2637ea3ab952b8a6db31726915392da9b91e5112ac24a6077f21c64fa2e4615eca4dd9470e726323c3016280e167f0f13a397fdf9c1199f1e689132850a030539c28f6ef53a850a1c25471ae58214386284386ce5846aef78f7b44b9981eaf957a4439559df1dc81c0192f3b10089ccd38d981b3d98ceb0e04be08634dce7147d13759b068d1a2053ee16cb17f7f0276e1c2057671be788153165c8d4c956308572373b96a3a9796916ea7e6b454a4dba961cc79ee3d3d9c73ce39d7bda787f3db67fcf64fb199e7ef65b866cc988102102802813a63608abb2ac3fdc839e31c43b81a99ca73bf71435555557d9ef22ad7fdc68d96ca9b29a4a0820abb5d5f8593c6a9c2fe3d0d9b0e0be681bbc53c1ea8feecf6f73f356a88356ae88c6be06010ab3cf6a9e9dee6c9890009090909090901010909611c7011190ec031062ec6501a97042fc9b726382adfe0c731c050db7199c1478e4806aa874e0e2fca090dcf508298e17af8c2f5d20b6777a301595ceba077d831e3860fdd18fc369c08cfe0b771232c84e3273c040f350e3b75fc38bc55baa08ad34fef460c0b3d680bec110cc7093f183432769b4289e6bffddd6dee45a45cefd6432929d7bba1e8ce8e6fbd104bf158dfc34e7f1f3fb9bbd9e7a6ec63e985d92903c941f494d00b7194dc231f40a6ae3fbbc1f038b2e1626b381dd7498ea21fcda60b0e35bd8830d30bf1d34f911db0111efac55018094e82952cc14c9470148e1f33323130ffe2f2f7cd16c73dc689b4f0260c18bb1d6d529a37659c31f62ac33c8e58de9c71a2b0dbf55190e1a29a1a8ea5d99a5e361d8de9f56ef190c8a6a3fdfef73db9c57317126af1b20b0909bd299e2d9ed2c92ed46ab5b8eed8076b3d7f133551385dfca670baf8c52a9c2e7e699c2e7e31f074f18b5dfc064f17bfc1e0180c8a19075dfcfed89a0e9557c3b14535351cebba7103455114e562bf71a3e57f1cf7d7ee4d1ab23781273681366ffea4df93cd1f9a9f13731c3c31c7660d590d1300273efa9e6c0280e54d00e4bdbe198013732c0b4000c6000440cc3800b8e3eefaf1dc83c1dfeff7fbbdf8ee7f5cf76030f63df976f4e6c68686130102028140c01f2e3223c33110b825203130345dd32e49cb8bcb8de726514e3294207a2cc1584e332ea475d841b7c0350e8e2f70633006f00c7e19c73be025b809cf4d8e205b90e9e70692c8c2eff8f052ca030804d5ff5fec5656f43060dc62c4207a19bbe5e164b46f9930768b3fedd56cb3a4a19d9a6d06fb18a7ebd9d8119a8bb5b0462bba580bfb7271dc63ec76942163c60c1476cb5293420a2a9468fe596d98f66ab659d2d04ecd36cb1dbd8fef85b8080f2ffd7d8c81dbc34a7f1fef7077ec5fac44f742bcc4e88598096e1225d2c0503dfc42bc02dc028e7ba8d61a24161bae97d16e453822de8d7283c043dc849df030dd49fa211d38c7e326ccf49807def1f74d1f0b6f8a7c245712f748294b1d16d29baa13b3d47c4f365579ffde5cf1d5b85a8919af4ab49b3aac9715a93719ed89783819ed730702f2f1b2030101f97c9cec403e9f8feb0e04f4187db5f0f5cb1eef52edf6f72ad76ab72cbf7271dc77fb7bf3ccf973fff929bb2992dd244f5114b9ee3f3fb077e11fd91c558e7fbc4b55aa5668eb7b7022345e9583c11c0ce61c0ce66030e7603007ff177c1beb8aa55cfcf616cf4f4d3c3b8089e707dc99213af0f003078bc18e26514ea0e45b107aa8975efa8712db0274a45b6101ff7063301078c647a6c1b30c875b260afae9a5c0580e35420a7217a78b172f5ec0800123468cdde23e860c19bbe52fe3ce1067ccd019cf98a142f3a33a91455fb9db0c7db55e9c2f60c0801123468c9e6dc68cddae3f0385d8f354d9f3580d8ef63c368edf9363ec3689c7cbd82d567a193a66ec160f91762c3d0a39923e85dde22112abf3e10dfd7d22a3bb6b79fc74875c2478889bf0026c80fd56a3a3b4d6b38db1e73c329e4aabc105adec7c1111919f3765c8d82dfae68c19bb157f060a28a090c2a9c3ca7d0abbbd7d0a2aa8b0dbd7ab7069883468e88c69d050a1ad87fd8e52a3df0aebd96abf158631c61863b1f534f85205d057ee3c3cddd4e7c853c86e8ae7c8c76e92e73872dd7978de2c55f5c808080402813f4e04f82b302be9f8d37444e2f80986c283e7a57ccb3e8014f97067f0c7a2b21328410c715c2fb586585a5ebad9edc70137e6017866485a4b926f495869078f1a84b262ae07c4a148c72f60c0881143868c19335ea36ecd8dbfd78cfff87bbd3996a8cbf5bca597b1dba397613463b72c3f43c7a3b05b3c2cdaf91476cbf2295c15441554d019aba0820af5d5283dde6dd2e3a13773ce380712516fa5065daa408cf6c2cbe4425d2757eac93d7f2f54fb5d5fb7fe8ce75c1bf4cbc3fd7d9f1277077b97adf6f7cd94e31e35166dc55e3fa3b4e8b7be7837da6f7dc15a6a5459cbc374b659cbc3788e6525c6e26af8556444e3dd602d5f33d3d9767a444331342772b415c3d558b4157bfd8cd2a2dffae2dd68bff58531c6186311a32d552d124720304d33d110ace56b663a1fcb4aac956449939dde2ba5dd78642817713c604e2fd0426d2469e119223212f214945f2a17faad3a8fb80806f00e4b9ae0a8f1678386d8773bfaec767d9f9bafc46eff4bc4daddfebe356142346142676ca2445dae179baa30de827de3ef865b63b2b7d55a2eda2ccdacfaca286f8165f4a6401f77cb7a5489b65a2ba32cec29df86cc7cbcc4fa52796442e99a710c1119e59b10fc6463a471f5f764eca241c355baba8f0d17f26dbd5334f2768d303436bfbbe232f6a198068d9186eac4d934cb95e9c2aa1b836780540e63b3fe6cd0604becf6d7ee36fdf6b7b6662d2850b46032558cb17f5bbf15974b5b6eb6d78f359acaf3fa13bb4565220cf5bdfe55a0bf62b7be5f7159882c58e88c59b050a1ae5755555555d5f5bec77122343e37ae6350d01814348e41416350d03806fd1a94ff667bf964365ca8d15a2d1cb50163a566416d76c5beddad09132776cbff440c058a142954882a54e88c55a868a12d9bace583bd89ddae2776abfe092314287a9f62b7b84fb1ae106737daf3d80f95d9f05d531537136f3f223f2976dbd2bd8adda2af825db1dbd7af68c93d8bddda9e45eb5bb4384185fa56754d716bfafbfd7ebfdf0ff5fd5a26ce5a1ccd95b942f31b1dad2990aaaea990d09aaee99aaea99010904aff15f1ee5382458d156c0c11190df19290a7212a580df7b39a201b2caaf6807ab73fb6e54decf6c46e557f62f6285a52a450b1dbd9ab58a142f39fd8ad8c96a4f2683519124b8f5693a1d82de6302314078bf1a29d1c2cc647143dfe6845f72de3284b5279b49a0c89a547abc970464a3a78ae68e78557805bf0bff575472b2dec8cc746846f433541a28c56fbe125a93d2416578e21138f1d4bafffe11e69d36ffda315ddfa2ed7d8c212611b3b6b19aab9b1b3967104425bb0d89b624a4a59ee36fd7254a9c6d56e577e35fed677b9c61756f1f0a878789a7a048342c16030180cae424cbcdf189f122c6aac60c3051c3766e8c61019e1e11290a796920e1e034ab244e354c3d7adb03cb6a1a01f9e0a84e150254741a171e4987d14bbfdd17c8adda69f6246858a152b5ab4105bb4d019b72851d7d772338c8f703c5b930e241ccfb61473c221eb2915c16eceec6f86666587d1c869b7205d0ea2592d1764611ae291f483da70bc255887eb874c0ccc8b0b2bc671879de76e7f34bf779bfede27709f79133df75e1f553955766bf42afb04ee2b6faa9cacddaecf4a53314d75c66989ba9ea88676e34c2d969cde6dd2502d37c338168bc562b1587ec55a9e758efc8efce2f41cf96539477eb17a8efce2915f11e7c8af0811a3081162c622467e696f625547bbe9dd12bda6ddf838deb8c1c2bea9fe549a37438498f99eac86f8bd29a2a5b6ccd5685df99eacae23d811e3881162c623c660f0261884a1363633344020100804028140201028c3bbcf9dc1cf7909163556b0e1028e2122233c5c0222e4e90236de8d1e483a587839e190fdce524f7563f009430bd205596e7e704762538b904f29081068a5729c62b73f15bb4d5fc58addaebfe2e559b070b98c44b10986c9857573fead66d20b8f7be42249a284893aa4cac153d3ed38b58c7004c5262618d7ca4a9aee36fd94e54cf7fa2caaaaaa678810b0d165248a59848856abd5daebaf78c4881178c44982c48f2e51c5d5c8c651e754a4dbc16124ba5cafd76b849dafbd3e6c8cc56263ec6cd9edfa2d32992893e98c6525ea7a5554c75114455114c57fce779b3e3fd993eff55951261367bb5d7f56ab89b59aceb8a6fefcfcf8c61d14348ee338eea0a053480848484848484868052ac122df6aac60c3051c3766a8a6c340b010fc8487cce02347744346094be11f3010c3251f40f25376c08d07a41daa153e79e08258543c452ac19e8e94981e7486051eb1b2921721a0105cc56e7f2b769bfe0a16bb5d9f458b1627ec76fd135cb8105db8d019bb285197eb85de9c7f6b3aaa3c98f270a672bd38eee8eb0583ed367d58ec84edf5632d2d2d2de7ef76fd7771115d5c74c62e25ea728d230f265555bd5eafd7ebf5ca2fce5996c5b293ddebcbf06c36c3b393468b8911636274c63125ea7ad1358e3c9854b556b3d9769bbe6dbc9db6bdfe6dc4e17023ee74d9edfa2e3434220d8dce98a6445daa6b1cc7977384394799734c5599bd8e2acd7a7323dedce88c6f4ad435bad471545555555595862697db6dfa39dd99dbebeb6a6a6a6a4e9bddae6fb3db89bb9dce7857a2aefff9b9e1061a6cc027105006021a818056a19204ef3e2558d4c8b7156c0cf1588008791a926f452e507443878985a5f00f4fa00c977c007972800e3c401dc94932931c83ec430d97a1d8e050ad4e182723979f610dc0151e41728812e0a305a41a3030cc08ea68dab1bbcd9d97e38efb15bbfdb1d86dfa2c80b46871c209bf172fc4172f74c62f4ad4f543b399915288c7bb6d799cf366cebb6519edd722cbc8c989e900f773b8af7f5c1ea6e1ef6b1a6e8fc4dfd740ee4ef7bac8d53b5c6d44f3a0a1ae0e72e385fa495f406700f75b814c400699b1c67299dc26513738864b4dd80903c141b010971ff528a832653fce192c859f4cc1a4d05e5470663c8c641e32543e9291ccc04e2fcc4c72931c959df49ba5a632941e2507a1877aa95fdde41a2102024f0d78000310f05848021e07c1353cbe01db90437f138773395d5ccc97d365afff0203b35b998781396362783c91c7d319f3f00e0c4626d1f0185ac16083c4636836cb81e77ee3460ebcec376edcf81c72e064bfc1af4f0e39e490b9efc67b133b71dc5b5ade9491999999c134e7cc5e9f06e772399c3b753a9f4ff4f974c63efc63e5a8a68856a46347e5a548c70e0ce6c4737fe10527ece4e4e4849db8ee2fbcc0be13bf1de7c06f4f22f2664d8d8d8dcd7873daecf56fc6dd6e37ee4e1c9c9e1eb1a74767dca3f23beee81199b29cf56e677eac1cd5d4a8319bcd66b3248e89fc8ceb5ea3c6c338eeb4216fe6e4e89c3a3a2aefd4d9ebf37a3db577eeec9860826882093a63136e57733b719863a9dde0c89163a98da3ad177bdc23b2b9ece811d93086f1dc7b7a6030180c46e378c8c35e305904def4fd4ef5f7660fc662cf5e3fab1c77ad4571b7eb8b387ebb0b56cbedc41ccbcdebdde2c8b1d4c6311854555555710482c1564c026f9a604289097c89dda65f02c8c338eeebb726762bf326602776bbfe891429c4142974c6294ad4f5a3e88271dc2f1018e3580240a03ae2308ee3388e38fc981fc804569e53e4f8c58b5b0c991f4449bdff21a41860909a8660c089416a1a92c9b08e9bbf9f63907dc84dee4ef751945e9883e8570fb56ec2392af8c22ca5be301b417d6146c20ddb4043cb5d26e291cb0e6c0b50edf823d4e5ddaebf478710964228835002818492770338bbf9fac9a9bc63bd7e32ca089365b6ccd61ec0d9377bda76599a4203a870f1de4c56b8fafdb66da2ece6dbb609b19b2c90511fdf86eed56ab5fadb4eb16255161409956ffacd374dd3c4ed1422fb62c9232b0e2c2109d5f59350e491bc83eafaf567fd2e46f24dbf5e014bf5a47e33e66c6566b412b2bf5601abecf857fd86c08908fd5e9cb2cf9045e8fa85b7ce2f0e397571fa31c6f954926f7a95ba3caca4eb255d4543ff61840e74fdc2571f7177dac8bde92fbf27ff7063b4699aa66902611afcd7a7d42960094ba98e24efccd77f26c9bbd5eb0f74f1856c17963f485d5e7efd3d56550e9611ba0642d76f5e96eb28ae9de45b2e39911416b3a6796e54e5b256d27b59d410225a2b2cd6f29491c6249591071a9877261c75065837e77c2faba37260e97e6f4cfe9efcab46012b3f8bdec0d222aba3f22dff18857114f3ce84dff38fea4bd6a87c15de33565faede5cf152e3c6152f5fe433565fb246e6af84388acc28df648dc8189e7c58bb0c82257c756e668c2f2e5b7d7d307eccbef2bd19afa042a2eb93b789f2fabc760b0168764c1ab37632ef4c5f8c73d61a09e7ccd35a146bc6310f11e9df4f1c47924c4929cb51a588d4a1f4c2c2b151544585c55a594955a88aaa30f14889927a32a9cb35baf0998a23768b71f8114312246edeb55b1cef62a9e51fb1db6beb4960478f08ef0bab59312350d382893b452943765e98c8d01bb1b7373167baf1626e3c9defaa22bfaaf39a67cd66bbdd7038179717f1e54567fcf262231a3af1464ac2b9b8bcbcc0c0c4c4c88832323a631919152abaec3635d2edd4f04e55251daa8ba9c9e51ad3d1959635e7cdcd6e9753a239a72e97920e55656ac2a238fe56174f1a14fc519574b4c0d4d493c7b22c552b2be2ca8ace78c54849c76a659aa6b97f7feebd51b465d4420b2db4a0a2c262b158fbf72b699ab2b0b45a62aba5336ea96a881021449c21f6ef45b45aadd6b9ae2448882448e88c4900090909090909fd8084846438800c57f3634895c317030cb51d27a3a59fd80c3e7250863a7ab4e8e40ca139f2c2d945398112c48e6eb3c1b275452a387a3752625858698169a60778049bf1f202b3dbf56168626264647e3f434334849494898690924832252565ffbe54a954aa73b5221a5a99e6799e1b45555454582cd6c8628919b3368aaaa8a8b05656d234656161195958c48c59808040201008fc01018133322c8e4707af48ea072074444d432d2f2e3d9598a4c4729a395919ea2522cc7204acd5dce4b005774c3fb91b483d5810daf1b500f40203838b899191b9cdccc0a878c7c8ec367d9971e548b9ddae9fd3fd7037b5b7a3d714f7bbf5d49d745d7fb89baaa6ebfafb090583c16030b80a0583523f0041c315f9d8611b1e49c224063ec45a8e744639780d8b8ce70751eda7970404caa12c20055f606062626466667439b41583d9ed2f66b7e9c714c9c8ccecf6f633349addae4f93c3e972226e66b728cd6ec5a7e1b9ddb63e97d3b135bb6d7d8d8d6863a333b6b151a1be9751d18b77a3bd7cad22a3354da58886605fa3ce7c2c2b684b2fedf45eb45b0b8f0cc7c59f9407d4d510adecd4f074432cbd1a9e0efd560ed76a89d96d0dd1ca0eef677434bb65799a5e6eb7bccf5d9da8d3e98c753a158a3e4c16637f6ce1722d37dbab467bc960be17fbb1941c2e685d531d6f67a9c724c720fb907db2a15ea2b5d6165eb3326403a6f2cc845e60606262646466666076fb31bbb57d4c4d66b7eccbc46a7e66b7b99fa1d92dfb34393197d319e7722a7485b5e0642d30ddac85c35031255f2ddf1a636b3d5aee07e3e166497cc0334d8218eaa51c65ab6991e9c694c6cb6e5598ddca1e86c7ecb6f531abed656676dbfa994ba3425dff4b6b6ab0d4f7bbd15a52df6f1475ec4b44c7dc2c26a2630a132cd5e2bc07f2e379880e3c1c49223a09420ff5922ac3a5b0db8bb5ed3677db2dbee16f46b8ddee3c8ee6f22ebbc53bdee5e865b73bff0223c2c0e88c61605468fe9b8d876b18f2586c3339782c361477e22d7e101e4c35afdb23c209204aeaa931484d435c57bb69c959ebdde2a8e174aa38e253157fbaddd66a767bf3353536bbc5bdcdcd6e8bfe8657fbdd6e71bfbb38220e8ece1807c7acd9adeb7743229b8e16b3d9adeb4dbcd34fcaf56e3d9472bd5b4b3afb1dcf674b462bcf6730574e773a3abcddfe9ed7eb89bd9eceb857c34bd32424fc5b6b786912d23892e46ed727534e72ff3ea53ccbdd1e7d599e665ac34b53d56a659ae6b937ea525151195554c48c55d21a5e7aee8dae688aaa98ac94b5b292aea4693aa6a998719aa6699aa6699a020181402010f80302026764d82520429ef00568ba24c39f9617975b2f498504e4c969c677f85692fc90b11cd504d986764cb91b3d58f81d234b489400816a6c6c6e6e763b1c1c9b9dde4d4e77b3dbe1e0e4e4e8e8ecf472babcd3130a0683c160f027140c36313dad08c70b82f1d831b30d87b203f203f2902334c910af416209ca6e3f886a3f69123006943362c1e6e686b6dbe1e0cc72726e763b1c9c9cdde23ea7c68b3d4fa43d8fd5dc9ec75099eda7d754c5d1c4d9ed2767b72d1dcbdbedeb79bddddabeb7b3e353a1be555d53dc9aa2be96281a6171054a55b58868b874f30db10cd1810754b6b203abe19ea7a6c5e67ed41ed0e6e666b7c3c1c9c9d111717272747478bc5e6f47dcd9d119efecb8c83207c94fd901f90128d4911f7cb1cf365e4690ac422fd88c3f2cf692b12db0d8ebf737bb85ed76cb7ff738bb8d3d4ece6ed9cfd1d96dec75782af427a6ead8f2a12e28431f407c28cf434651857159ba2aa171b3dbd7dfb4763b9cddb63c8e2f67b7eae7e8883a3a3a631d1d159adff56363e22f753d0cfda52e323fe5516dc97c2d3af0104393bc7ef9918c35bbb5d9ed7e9b9bddd6fccd6e3784837373c49c1c9d714e8e69b35bf5558c743b35dfcd6ed537f1163fa5479433f11ebf098689d732fedd9875811db1b41b0b89a5dd5ef924cf1d9feff7e3e1e9e9e962ef3ae3de7d433bb6df6e75b91f0f4f4f4fef3e3eba1c56f5c8e3ba3631bd8c568423e2c178ec98d9922c01be9694f230b7a223075f6b586e3f6abd342906841ab18024e4fbfd78787a7a7a67f9af7796e7ce9a60428912bc6d71e022f802b04fb244ea0720a0e43890de8bc6bb015b64aa0ec5fdfc78769b3ecfafa7a7771f1f570ca6c71fcee5b35bf17d62be17ebbb265428aaaaaaaaaaaa88fa7eeb9af5ba8eab0ac885de6c4f623218100ce0254df22d0acb330b125a7fa2d40f403cc9c3eca389c6ff76eb5ada2dcfb0a7a7efd6359aa042f113d7e8db2dedb75b9bffe978767b7b9e9e1edaf7dddebefb883e3e3a631f1f159a7fb7e3df240dd57233180fdeea23e178b6d8b76acb926fa7e58b5afed7b3dbde7d76fbefa3b3cd5a6e2bb6adceb86d63684ee4682b860b2cfd81beb29d989350f9b6f222be27935097972180f789b2937a09acab621511e90aab04e2f26a28797077e29742b86511ee2ec4eb2f9170774b50295d15d3e5e1d741f08c7e7285d515164e5b293732043d989c14c1910b756396c0c2fd53fefaa0af55fb4b0d9577217ec4da4a19b1b69e9e481293ab6de292e519027dedd94a07b9425d03ebc2bab7527805465a4d041deadef42b211b41c281208e208141e25d235ee3968bab82e411df2a3317aa9e4a298d4b024bf3a08f682579a7975c1ecebf722fcb8aa2579074204a50fed134458ebbc8aec491d7542b110864104821dc18281a09ac946f915fbe8b7d12b36aeb23b030eb4a81cbc7acebfcdb559fd4c97fb3052716bbb0945ab12edc553827c948f24d3f1211a34d2bc877e5db0770a7a07a5e40d746c819899124b820c745b2821cba8e62f6dbc3065a50f60bf5822074616652922cd9a98bc07a265d589a3322b058347a08ac946fbd6bed2e9644598e60b1d8dfabf1f3e3711c4712bdc5f39b2e394ff20d0a8bf598aba430275953f906eb410441e83a082c16c65cf5ad14119b63ce19e3fc26373f73535cbd29ae4671c5433c1925ef485d8e78218bc40bd7d60b6f2923504caa60b9529449dd7cf349299455b1ad9495f8483dc49b63ce19bf01f229ae5638932ff215c9f6e8ccf18f3cef967c124ade99ec00687afefd1af75e967bffd5fb5fe3b47e3fcb6e379bc3ca9f1249c13ca9e722f9c4bba5f1a9802b05f9f9339bd4339228b96500b19b9f2406118574617e03e46e8a26de2ecc175de38b41ba88a4f76433f3d59b1cef8067f0af585c24dff0e30de0195398d443fcdd6d8813733108de80110d956f630a1a2cc92ee490ace982b17ecad358591a2d21b04aa9ff205d286e9325c41d1be942fc274eeaa301c67eb278037846d446340f22586159866085ac5e6e56b8f6927cf3ea9b51222929609f143608f9bf0629852ae513155e4a0581c5fa14982bf1f67444a90b67fd0620b0c8962a77732516c1ec587567b010ee8e75eb985c42d7f84b1a1b4cabd948219053f7a6ff867379c1acacfca104a2e4c18d21b789b263768a65fef865c7acfe016bf5e28f6f3e8651d2b9042050404fe12ef3af4f56e232bfecba8fbb355ffb40f780959f64cd0396b02ca7f20eeac6e817669789dccba911fbe8cf5c1544be4101c1faaecf7e7b70800d2e3842176626b7085d87358ee338e6bd02776111beb844312b8a31532910f88165428d20c832bc58e62406a458a678821db0ccefc9333392013d4af716131db04c9abc94f2ad17ce18c0af8fa9c322af4fe6393be99ec22b709108d1413f77ab73c07a325542217310292071c2ef989f66cd762d20c2e02c9a6336c72c8ae2f8da34cd71449273cedfda6dce432030be9884909c7a7a000488502003f8c711ef715ce5bcc2583846691b8841a0a0a0a058c012965218877cd238fdac240ca16bd58ea727b2484bbf0708a29b5ddb706fda8611075d8f51e45311dc7ba1ece1f25e58bb08eeee7cfd2409ee4ef5fac9135c1c7258922db8640c50f834f1c559a353f81ac1c3d5eb9c436411ebb044d63583d0752984ae5b9ff2c2124ad731b831fa33d73edc1819dc18fd2d9ec29508c0ea26191723d44cb28f86e2658f817dcaae519077186a4954c72f62b7b894c2bddbb5909c22a7a6a6c892d4a74f594add18ddef0878f002b15f281804e9c2cc2408a259aa481b56d320b7db4abfaaf37bb2b942375f3b617d7e1c71381c0e9f7cf4df5bbe90d5f3673687f53d4751e9b7071f39acf4db830f2691fd9225595658ae1dab7ee40618cb29153f79f904072c2923e36b3cf2dba96fc02a57d6afb717de30398513b38b8863321272947bd3af85e49b16114022a06bed032b47111fa7f5aa56698ee398a7c63c9577da0814a8204c1a25952528e129e18cc75e5ebe3e2999eb9ec7a7224f4f4f5809364b6dc48812a8b25c6f09d6eaf19bbc5e0766c092cae4a9ea9d5353535353abd50e0fe6ba8fe2383e169245307761bc84a91d1bba0e724b04f495136d0396b09422a17207ba30338962b1e7c93e0505e18e3b397563f4159640b8aa1ce2893bc98ae759f2516ac5c7a8b2fc9ebce2913a6ecce55dde7efce3e5a12bf25724b92a4b531b599d1ce52fb0dab254adca956af5da081018a77fd585a554591ea1eb57e9e8fa4d933c55e789b70992244992246718ead85050180a6a354e9965596e2d5c718652025503962bfff551b1aefc296470ca5174538e424aad6c8e420356f9e29b3f11d52f204fd58a355920a8a854a44992795419f3ea4d1539468d5163d418a583ac4c956accfa49072169c02263b18e314e28a20bc961c78f5e1c5286219eb93b5207bee9c74f5e1c9207c6e9c7ec8b6fdebd42b55ab1ec16798c22c957ad38b5b849965a4810324829449346585a438d43bb38fc3137435fc73ffe60bcc188837107230fc6258c45d033607d179246ba1e5579ccac2be7dc4e691c6de443ecb694ba31fab5118d53fe7071fa4d56b88eda08107ad97513d67721f9544aad7e1cfbed41031cc82f3e1e0e876314c996e5f531d935f351e463d4388e79ccdac8d45496cabbac850548eae3af30fba2530f40886473345997690ec792e444527e7432468d51a39317cc30d4a1c47400b201a4027ab0921d94d085b3ce6fefaea0df377558a20fa9d433eeb174fd5a062cfc99155ffbc0126a233d8f507a85956f2ef22fd40470e8f85d246b2277f26f093c20a4afbe94ca3b6ca4eb5705510dc938b822fa4b2879774350e4a9ab96ba16aa9abace4e454ed0852aa7ae4d2515b821a0800e5da812d2b5b08c9282064ff2edf6154f4183263c050da2f2edf6a88e24ef84e453cfbbeba4e72e2493b429682095e2e64043e1be7a5db2586c96d238cd009601c62e00fcabcf2ffc9eb9902cb2fa9e5cee14f8575f4a691c728500ccd1fccbbac6bfdd853eb1be0b0d30769315e27f01f7a4befa152792f22bcd437e7dbb369277229b4206a77cbb5df39071ae8f2ea5341356118d93a52eee49e3642617a75f6a2d9f52fa2d41077aa05fc380b5ea170a0623d02f204fd5ca2297400661d54921dc5d11ee0e7dfd2412eeae64cd90c2d4f59b37853cd153387655e5726a17e833cacba997881d9b30a76e014b6352e3904a2f72986ffa49251202e430efc827cd82dbcba9aeb50ac67e43f0c304ddbc1ba59d262741030f7a767149e064d2ceda6ec5376ba7c955fac86f0810b0a3e7167d6291fd4231c1a19f5d7cf376dbad0b67df7fdbed264242c938fdb6ddb2de24a3e45d0856883b19c5fc32ef44bc19e2596f86e0248b93530c608580f23d79c4f7667e0a2f9f645cd9818cfaa8a6b090e9dfb689b1af883fd03ec83d30817bf9e4f2443c164106a27ea894c834f72cb488482000000823180000201006a2301648929c42c80714001856a4724c3c2e0bb3244a62146594318400438821c6002103033333ab00cf2b508e0caa18cebdac9066c87002036f7283195aacccaf00d89c56df7760628c965863bb0fadadd39a8772dcf00a55401fae046900df1e4640ac68f0a0a2ebc02e72d9fea78349c2de48bfc1f65f90f362cf9137622ff13a7864b0e6c27e6b3fcb3a238b00dcc84bc37c8747ff0813e00f68a8327eed8b01e66f854b6a5eb3d4ec5cebedd38afb5f3bc25c43d5573030205bee49bf88c55d134cf294d0b6062d2684be3d7616af5e95f3a68cc9e07c6193c1f042d29d9eb6a0e421c3c8bcfe5eb5f9e0441d032a6ec7bc34bbb94969ab49047b567628d131fbd99ba5fc2c64322f81fdf5faab6a13524325906a0c31eb029690edfb626822c79d16424cf422ae17b9a44087c1b0b66fd1f86d81e234abef9d3f3fbf4d75915c1013fc714f6e01809f5f32ce4c96bd8388c1d9b311772466c685fe82762b10ae0266251eb046515778487c4b6e334aacf0fa2ee1bd4e6003de8a171ee5801d449f5edcc07837556b100090e775ffeecba81156182124c626c00ba35e54c77ba5f70538cdf74628f3ec4c53b72876a5fb4941bc8132e53f3a0e48738a9954ca4fe01c542917e6ef4fc9ad9d615851690eb90f2595621db16fd7ec2cc835112f4973b0c196f8938b865d5fa4c2aedd724fc05ee5336ba2ccf120b035c4b94994b35457dc046cb4a028de2c80d11e056303da6f65fea0d358f0fccd74e510baaf51f5e74eb1b28e7004d7894e2f5ef8c3b136c169f5b968dbc8c328d1689036dd0aa7e5cad900160bacc5af5593493c5826641825842bfa439db0c1e1f9e0bae16acd2600053cf09a39838cf0ad82d6fe5aa9f408d064d0ca893129eb4018efa60129ad552536d69ceb133a135089e236d563687c3d25f9a0f3bc459e29254db52208180303ae1c1915093b4abb1739637eb32813f7f8e69eb43fffb3e4ed4b1338d1053ce4ccf80c3671582e3e0539c8c5f2da07168d68113d295ebf6e6cd2b92d1b0c53bffa6e6b41b2f61a729296e6deb169c5ca67675ee432a16a3aa046b658c73367311b1da5d83c86b80d4adb63c17ff8a83f3603ae04b2f3c3997cb6d5c470a3dd69eda044758e6b002394ba02c97c0f2eec755ea0cb6d57ad1fe337839626099483ee853f812dab85cebfaa94f4193275ce30ceec797c580fb34e25cb776ddaa49694dbf32458239a11baf3298d05d348e01b95f2091538f22544f685f23cfb237857529ecfc12dcc57720397f72728c01d7cf757cf43d070b5fd414d45cf8a76b1887d1db7fb1e6d94ed9f47320a29dc9f54c802126d1332326ed37a9555e4ece173340728989e802409c8e3cfd2f9af70556b4d5ce1ca1dc931485ff0f35272ac09fcd98d158b6b80a55136138b40468d4b7334e5cc8a371306209f90fc3dd5df5756a2b24e5a705e573393949ebf4c122d12cb5e3c4b3c3d916d9fd08b0fde38bbc18426a6eb6cc13e492b14f3a6ed48234ce068201b24cd76b58351e0c0886bad882f1d27d647772420d99bac036ba93e06c876214cabcff3dcf72918cf94e9462b4ef1fb843ee5851a1ce34a43a3df3a65b340a1499243a900d82c74fa0d7d80671fd6e2c707bf39e57999210e7c53264a41cc6ad1e280c6c0acba5add61690c0e28d9745d8c0472ae6b81be8f337e34e9a4751b8ffc9bd9d57576b774c13d31ca92637d1aee1cf649f634680686beb1bfa0da57b46693b79379a98e2e8822a7919ae559365e5fff7fdc129de806737ec435e38a47161e59d5c19d86c127de917496c3e9ad8028c7ccc40c02c5f1819a191845b709f8a7faa3814077568dd19ddc04cc31ea2e2c8d9998162526a55ac8ab6ba78382dacd8307a859797e0d55e6ff1ea68e188d064f045b4d303b428c9630b3a67d6a8595dfa1129bed721f774352c0e01ca376060c8ed7f7953e5975b066496a72da757f9d14f44d9aa5baee9b915ceb8f268da70acb794df7589efd5643890fc1ca4ff2e02a0bf45e591e9e70893a31acc8d156c9bafa614aad74298c024aca74bf4cd6150de01594eccc0ff6f8d2e68106296e70d55ff17a9e3fdc627780c4e6b74cc3c0b3788686492b6254d754fce2453be17f3b3b5a21118c23e9c39ee02f8db7a6f54cdaa205f5061f45b3cf1194bf3c6c1dd01141ccbfaecd3bb2517d51ce06f14ae4c221e20270b0d9ea3d0d35129750a39d1d0314ee6fee5b4497234d353e2b3226911cea72e42096da0bbcfb4134c52177d9a0727c034fc80ebc44db52b1189cc5ba162a9ae2cd85645b2f4ad09d0552b96f2c217523d9c11b31497a3f385202ea25d501309da28ab6fc9e6acbf02e5c1d714ec7fff12b8d7cddbd13ddafc8a8dca07d505b034308749b293435b77097860bb662d5e1d104bd9b9b4b618b9df9dadbdc42fb39ecddf256bc99e229c04215111eef423b43cebd4062df973c18b344873f8749d24972fdeff191d3a091eb7a31ee13a6f51a758cc40968492728856fb75b0577479671c610072db161ae47cdce0714237d447c68322c9346df2c85ecb93dcb5784d1ffa74e933b73c0b33186f797c99933aca8ff51623a358b28d2112ce0766cfefc47567ae2fe6dc7799f8396de70d4c2a110dbc1c0ef3251eee674cd017b10b508d70f0e2a5a93177a4b036239deace0c6b0a8fff98cd2409864600cc2af2f0b46e8364bba2f25daffe13fb7af18d115206cff79fe9bcc8861c2aeff29d6ab9fcffe15abe61f5d1f1f140265865f6c6b0044a03f71b850e636624af33b395c6b89d71c8db13649abf7b0438181af00b3e9f2910c555dbe10e1f37fce7e2fa3c886c7a81106bfe8454b71c93a65fe32a181ef9d2d0f74cbc568b604080c7cf1e60efe032e0730cb9638b80ee75a052237ba4ed189dff409c18d144afc4967a71d95cb101b1b214e0480bc29c809520d776ad552e106d953a496ff8222c9349cee6c0288e9ff2a42a92d1fac51043895bd8201dec611284162cb9d878beec88e5ee540f51053b1d419876c5b998bc27f1277fd879a06909b96634ed9f9645098911d7f90024d163a3257beeb227e9114f0b85a816cdf43a6c272220537abad632e713dde536ca95264acd58352809fa6976b660d6c50b6312f43f572f8be9ccb2ffafa1d6301e0faf80a8fb044cd6f6549ed543b4bf3950334bbd5de6046b83b0dbb1c9138e2270a6f26e84fea06d897e422f88c2f06cfef234f711fda2b7c9016442523ffe79f8b20145257ea4908afe4c2e31b29cfdfc5406034f2ce5356ac33a0442020334cd682f3670135311c4fa42b5cd33e8562dccb84e103fabd71f62f3b60a8b9719016920f62c547123af15d2d850431490afa2840bf369173c08868308689a01e52fd6d2ed4c785c038b22c9128c4640bfbf8684ae274accd51d1968b386589a9d91c95a0f93113c217c8799987c617b3183830fa9e02b7697839bac95b3a472dd0e3b1f45e371532a2e17eb5844db99f7fd221d064988c47833b9613fb00a4d1162520139738fd677e6b2509b8f4a60423f49f978c2fc2090a4e0c1075fba9ad998212222d64947e535f81203cae51e334d55505a4290cfb01391cd357887345f873218c2c97863f787bf6b4acd35e0cdbd3f83fd738a09b3b4d80b482c374f89a682f57605eb471410104492bf6cd539b9b9ba42f82284a617ce06fcfed9e75c478dd3af5580957a8d0cd1a4f21f5e870cfabc84277a37d8512466fb40cfd406aabdc1e8391a4a51fd3c8bf8eeaf5c58a2efa7eee49744ec411163c9dde276800a16842fab0e276aeae04b8523476166115bb9dccedd038b85cb2f8805e1c314f971682cea809b80322739bcd19fddb35191a0bd7a579b1c190914082a80478d60ea6a7b58e7a37a13e3ba24983b487e7ea418720aed201baca431d97652273d73d19d52c7fc3a6d01605b91a05329abab76f603f778a880f60fa8ba0a417acc0b8f95728bec75b522cb60c201b403e3e43df7bd91609960dbd6c22131e94fddc1c90e3b39d344104e0a77dc971c7331c7d87882e7ace3831b30b8a0d1dee35e172183836dca497d94ba3b60260f71827850d8de9a7bd8fdd0c001fc3b2bb376384aeffff909f1ec1ca69987449122a0d0dbd7d1cd059ba6b6ac61e7d6b0490afdfa0e313afd2452cd675a2656cab9af2df3030f97dc8ae50fa0dd081731582585aa6c91e200cc9c66533fc3b06d242989a80db1760524ec776d31eefa13d94ab214db5a7154275740c7d7222ad14cb4d7a55a6661034d10ecffc402845073d5b9b0cc1ebcb9dc48e28713000ed6b2d0991536bb84f47c440ea6a14318b82b37a0f803a30e7a8378ed05baf4aadd3fb2cb1471adadcd3cd3c982e21a798b006729272516425998392c835c119efb9e4c4b501897e2f7e3a01f24ccd1ce4a3dde7ff9b1035b368079e07cdb0d5134c8fd4d64485b35557c200281a604205553f50ca3216da0377b082b9b3695b188cb35d42ed2e3df6e24344975103ddc32678a59fa897130ee35bfbd2bc35ec55abe1a50d0b88667a60cd0b03c57bb63b4e1d851c7bc93018f0d7cef5482df98e0a937274ed039c643705915a317f016178ce557e9fe8335a89d2550e865bef80dd69a76f5a52a833d6652f3913e63491de7eac2d34f5d0aaaa2ddc103ef8baff58cedde5f7d6f76ee094176acd84206c371370b41591e1e1e429f1178c6708ac6a312b360e5d0160a68e0b1dba114d9b38fa2af686da9643ba57b50813fbb89ad53df4f0c0ce7258d235077bdde73ee7737bf30437b69810fbd48631b26f5689b0cbb25b2d559bfbd2bccc8c6bbdd3b112ae0302ac9c2ca9392a16527095f7f42f85759bc892cb04e45d2e4c0094ea23f4d2861437bdcfd2f31ca00c899a24c7e58b100f82d31c753d8fc9dd017aab3c4930e51e93a5cac936a618b728a3f7782371446e3d9bfa85efa58867651a493c22545fd349649f44c36f6ad6089ef4c75e0bf39b6a0aa3f5021fa5022ce111ec0ca1d0452340e38166cd749d673450bab03b04dee01518bf3c34f42bdbe219408e968fbd80e3f968037b96e53c23d0573d5e4467c1c56786eaf0c2c57fa784babdb60208e8476264e31cf5da875b576fe280335602ba750a36fd2513a84d0b1819ab916a9d8dc99d0556e7037e58b4e7dd5bb9d782613844f84472948ff3595412586874c8a4339a6862347c0373bb7adaa2502b5b8124e03052168b022352b4d5140de2a8f8258eefbd4c8b0bce8d95d8d381204f5f90b5e99d6b91e247ca417596ef5fb8b6eb82f59c7e075a750c5531dcb717a2e6d09b26b0795e4a078eb5cc43c80247f721947fa331b34761a41f32a6530630dbe76fd2e1b13f5fa75d3185fa8f46824061c2122a827c2430a038739e0833df5eeffd84b370b889d7e08fdf1440bba0e588be688d50e20a427617d56ba32389d4c8c034ec0b5942a1c7c773e48fa3998f782a7589553ca88e0dcca911eeee738ddf4f7373ed8cd8c44734433ee135952b104a324dd1c2086245ca2a84b95cbb03b03833549e9615c1149c151f7638d89d3990c47426ce54dee3635b1b53e7b020096eb7041e51054fd0c015ed69aa72316f2675a567874a395958616883f00ee0eb5d194e0fbc3fc4b68e08d5cb4beef7a3ef9cf6b0fa0e6602b2769560645ca37ba21ba933f3f10f47b03100f6365e583b4d967eb178eb24a52e45be02e317ce5b4b3edbf881ad439362521922ee6064541eba6bed3b3e77e8be7565b7303cf6adfb0f76be0955a0ee6557b4b72025acacd8212006213432971cad9930a452e8e1a081c7df556885408129684e6fb2d5e48a0ef8d38f75e94d05df3db864e34fabfe5b81fae8176c88fab3ed934c23b817a7deb96e4296d437860090e3f9100aef23e228a10535f9071e9bbf26267b992d43f7ba21551660a3f3c156d1ef5fd1c7b91337e96f607627ef6a90d9d899e4602776cf6d1ef584e1b6f46be7fc0c84930f5e447a23db02b9c7dc5f67db8c29ea9aa2323dca5976fa0da901ea8e6093692d611ced8215b13f44d6b2a09f5be3acd55b0ba400cb504d5e113334851fbabd41c3d82f51404e3b2713db633b6bbdf564d789bfe94617baab12d053e3225d938c21cb71ace80b64a19d7d0ab70b1f5289c26ff4d73ac9f0cb42e3ccc01d9a59243bd68c786cbfe0a843e1e9ec539394dae7bdde1315d22c28f394576a8dc95e23d52519694d5d36045bbd7083b1baf03bba68e53a7b569f95e46ec80b313f32a4a61c11e192ea4a9aea63e7dcef7ae57b87146c7e9be4669afb597533f53cf0ae64b1ba3487b8a52d51168b91d8d28f9d15388c3e62f0093b46ab6303f8c774d001d6fe6f3a91792d440b1811d6d09b910f01e6a0dfc6dd62f1db58542654e7449dbcc46b605b15ff798878aa313bdc6f3f92bdaa2b724e4d862f395bc405a2b6a3b58e032d2e6b9f789fcb4ed23b6581e0d1bf8e12bb6acc0a2c83d7dc0cf487b74649ac0e491db0ec9e3085cbafe9beb2a32e027af688db8dd6d994a219f3b3b56e10df65d9126497d3df1f76aaa048e577bb1ea62e55d7f0780ad5ba798198def136ec5fcbfb8814b3b145e016910c20ad8b7f17e21ae4714d123b3e816ea65ce6c2b5a5559c775e749ff863390a4538f76071e5689459f1f8967b6da172cfd2f69171b2b5d11a188dd26d1c0ff5a38e790127d46c902c21bfbbe05911be82b63d54001d74e9d7d4458652c4e4409d91134287fd9fa4c8f68107b5e40c436f7cbe101d34b19a1a951eac5552e3a8099d9c46b5e057020bf0b4e5a79ce550c2d42dfb182585bb97a928cfbf2c551b46a90fa1f4757001c8f31a888b7d47dbdb363c2b5292bb5ffcdfba8ad66cc1763c2d2c4455c01567dcc9bbdeb8e505ef065aecc177c47717172509ffd67df7787fe3dce82b6c2671da18b026e44f215ca70ca2623deaf6f85f39abce23cdf737afe735bb11c0b6618191ce8daf42e4324b851f98d2bac5efa0358642394b310958f89449a974184ddab38604294bbb28e10ddc19780f38c65ce071f6f4c084455014dae8a4e5d94de4a20f8450716f92b2f5d9c9945269e8aa865d7cc850e901d033af2259f5d93b6379ea8a55523f33cb55980249afb9d0e6e974dfe44013c5cc94f68d117697dc12abcfdc31f314cb31376e2d96d7d834f5f64bff4bae7576666f34d7043317eba62bc19385e3838eb0f6963da9dafc455d678c07a7800867bbf1be564b9d293307d9debddd820ff413de6ea2aac9d769d004525a14662ad0d5a302df572502e8ad930b7b658eebfd3c6aa83957715369f993f04c97fed967a90afa458e189baf29e1c86ba5022ccd9cd9ee3c9f05bedd9ded3867acbb903e15ba171dce5606194574ce53a643961e8319087fb43410e70f1b57d871a99dace99f09f8f74adb0610bd31fb1cd8843b6ebb0b92a95be8aa107c1669a524397c7d74670c9bfe0ae55c73a4eeb7545ead690abf58c63074b6ad1b97d7ff6c1a62e8c70e157d174d37b4234d1897c1d6fc6137993c980568ed371ac6f10fa9d95650bc9691596e46669a45d6c4dbf4493634b3d71f4b0c6e053eaa689c8fbbe0293bd5ef5114d95385933985fbf6cc50890dbc1696df68f988fd21b4a979a41b50bb24a2cf8f2621f372b9f09f51e38403750516f0c756df657934d244e007e4ec74b0cc1887e7455bd68dc8c5ae3f050499d9b2993c7a0762c6cc220615db2c3d1d23880e860868d192b4155f00870f149006317876386e4cd338931c8122b4176ff7cc26efb69e989e167a32a0e230b8a785d4689da879548c35f9396f78da26a541990bcae0b0f434a803a81cb7fe05cfaa9f8ca69987382447896482c874ed7a3c06b9bd54551303616666444579eebc0a8d4e74a08271274b0a90762ad10a82a3a73c2479ae0a0771ad9c950654300613538b197cd4d340acdd02cbfb4f4c141d5e54c36e6a6c6a027edea221aeeb50c2f85248556a382fa287105b57829c14eb3cd24aae711139460701745e3a072789f61d579ceecb1d40a120c417b0f539531f56b5e000839ad95ff70a2c14ae7ed4e241ae1126bbb8d7e06c6eebc972d9445a908112438b0584011b83368018d602ae097fb8aab4cb0a6ba026652ee5af50753a5e82aaeb31b35af701d4d4e07916797b377d1e7605e6abf193273f6313bfbb0ce6122c99ce60eb30446b6890cbb85a45f43e8f25d8e5e5412320c157b8bca6141128607ae0c98e0817533653642d77966cdc160848a26247d5522a9e845d8347bbf9da0f2cb596efc51108e68abd9123c7599761865b278e491af2b25c508c7febbc7a2f5c6ac6b654dae6457ffab90bf39f9dd3762ebca04ac3fcb424ed6ed91476887a9edbee268086fe3073f0434e8056576becda7e79b2bc0ccce5f1129e75227dda520f138703e37dabd86ca888f0bde75308eb28aa69fbe2131fc640beac843892a152e5c0ee950a9d1898f97433b3410ff8292f59b8637f1b24bec8967f3e1eacdcf2521ae804a3ef97b122055becfde46043b04cabb5f3bd0225fbbcb70289339fc929b84c5da5a18e4b5171512dc96c9501a8d82e802d489c91519f6553086bae890a0995f624557c71f90f1f88d1e85e9bd62ddd8f652838f306eb98c53e4946fd8951a86ed48aff4fc978bbac913755bc998607ad8268fa6b5e306b4e1e5d83ede2271277fbb4d6f2bf2204975022216d4c3007fc0449c87bdb511918a7b7a8887b010a8829d328f65f6f2f285d55d1350a8d03314a267747fd3d8e0e46f995c72133e4c86f53a540f911a8008cf2472b8a77c3268a43bc76caa89bcedfb8f92734149002a9e1296c18aaceb2e0b06c654a4a7250d66f13c3c5fc0ba5b907c5d671cd590f8f76c712ef73474fd446660b13f09bd6bc14da5f0aa75ba06abc8362493e9e83b12e5ceeafcc9e8d629ac803653ec9206b80034fa3a3c8c877f285f447fb063a38a0b8851a8917e5beb5a5df972738b3822b63c5b525373c484e08fba9f4d1fbf505bb4b0e8c3fa1c11d683b610b3464751d5b925897f063b79240aaf54f0c0112a78369c118e6c478417f68dee10d97eb458a5ea52f651a62063842f2a84ee17f7f7211c94adc20bde427b75c8487ba2a6425f96898a99bd176a812c111ab2263be6684a11dc23559da2982b879f2254c4e534abd241b64fa67f245670db2d37958c17821925a5f3435afc9c04e0cbc1ea837d667d3bfb59f4c812fa937057101944a7c9d1e01df1550155e0b61bfef220732894073394e8ea9df7be65eb0944d9d9f5b6bf417148a89c56188e3dc24c181383ff2c36b1c343f2c75ee593c7f16d5d6343d1b06362569209f7b4e24a8b781065f46f64e5878c37596664cd803bffe700a943ae1ef67ef99198e92cf8104581c7bf1a98b9f66730a9172e04c2d32843966afb20906c2da3c7c6ab608c343739886488f8a03fe4d43efc267216663a364a053f9a3b7d85eeb046ecba4e60d9a77361500f4199f1cd9c47c40927f6e381c3f149245a8f7a09aaad6d250cc06a244c33424ab9a9a24e05781e5afdff8545d38c84ee76105e38548ea1eabcc4b32a838833a10514d6ceb3349b2e6ea6f08ebc12d17541d56ee198b98fa0c9ac8df262c8ac03edb397dc761242f2191cb135415c850551bc01d224780aae6372c5646226518f2c8785c5fa7e0e5a73d5895ceb527f24499a222decad0db0efb30aa04d48ab7837a06181643c487bef1c6769d0ce2a039ee376a4d716d6fbe10c9fdec0b661c12c58c4eddf6549bca340e0d1e566870279f3d2553567f078f394047e8d35e2bbe3e37f4c70f0a3795e5470f034ad0ebc0738fed02b135d5c981433558e937b95f9dfa177ab3f9fd6e9caa2bed26a3e9912265045219711d35677b6a53242727a37cf07fcf364e30252daaddb95260924b5fc807fae2d6eaa7a846262152b9dec5022d5a4241e1bca86c306cf18c6938f627f8d5b080aed2404b46b0b349c4846e0425bb4eadda0646b1a33ea9b823c455870a2f368e06229e321f5ecf5d260bad83d58e1428890fc3de970418fec0b6f17367077cffe50a4d2c434fc47eefc0f76688e77cfadbd9f4ad71ddf631009d40bd1239df197cced0ff5609163cdd6eb44ea2b117e313fb970ab7fb19ecc5824d93d10ffb972408f0150b89fba1bb3aa9e6721a23c3eaad7e415a6dfd65c3a3068753f79744ce1c4e8414d1d65c000a329a1241bd2eb170028970228a699fb7d87956cce109fe3f9df539072b0c758cd0e9241aa6490b40099268aa10368104bed41fa3c2b8a421c04215e2612729f7aadcd07cf9272abc521924d7484bddc3103d13fc31f608a246d0554eaf3845878696a3983938f0a03ac5c60cbea9f7a16e1684d04f59db6130a4a46ab90c67a7d49011da9ae309c69c7faf5ab25fee101e894554ba9f4a1e031f8438d99841e3afa0e97a1231136b62f33102a2b85feddc135f9070b496fb70d39bc65bad2e16ed9b279255abbd0036c6f53a42c8ec03f2b83773d9dc7bdbf4320276ae562da14c03fea02d034fe0b44998c72767c116c488019d794ae19257269dac3cfa276ba48008dba9fa492ac19d071e8884a6a0c511cdb2f930e38f941a0aa48b318b65b2145576cf78814a6902fb266b913d3a9be0a24793bc81961fd02fc15c8a42de1c7f729cba56c9715dfb091d95d9e03a23c1469ce1dcf688e202232e129aaa6c66b866ae38955747cb12727c47764d13e6b77a66ab11730747f4d01a8f2f699cfe0978e6fa48d228cc830478d8ddec67c87a1ac0c0a3b06de6080306a29435b40f0132213c47c0fde97e0c4fe2194422b46d0ec933357777144217a2cf04d1182f48425cfdd015d2a24ddaa739700ebc48ba30fcdaa0d4e1050adb1b8b4b8f4a455df6c3423e81b430410c5d1ad9d80545e10219839ab472b2111e74277d34e68f86c9844015091f69ea0c55dc239b60fa2678e38c31070254f19460767e3d19ed0a98e3f2c88aed7704e81f82f469702afc546a1c784019f6bc145f4d6d42afa518fc8bfcec2b08ee9bd86a7ffdeed4a3e7164986803c59e86c9716194728b2d12f007468ae803f6cf8fd8140d7348dfa1a0668ee19eef3992f2895d9de882dc2008438d2d8154d9e3a8e1397995d4c51562e2257e28a4fbca2d4e61052fa4113f6edbc5c5c09ca1f3d5a2c4a8c157117aa13cb3b7a9fcf4166947ef09bb7839cb9bb748f3fb12046741efc1e5393ec8bf5c08eb8482d9d81e053181c0aadf27861085a6f94fe09c7a3ea1b2c99aef581f54093f8d0cafa704613517a6004da5f89c2ff127b4e310a96f5a2d71eab1ef71b5aa072a2f463ab07dba7c3b54cbf9bb9057bfde2cece628c9a3b62fb625d9c50ab4ef8be39066ee72fa8b153ed9214d4846f60ec909e547a35c5cecf57a39885c845dde0d96164680ebc4a628537dbd404d82fa7b09675958bfade2d505fc68cbdca6232f3e9f9c1dc05c03fdff76fc7ec77b9835a3e33196f1c544662cb1113c1fddb674c97323f722303314652d24d94d9701fbd5d6623031fcfaf527c9a6f62ab1dc5de7df15c0d6c0c3d8195182a06d0c1f6d63afa8f05762027abcc03805b35e5eebfd8d8e0175bc6be3795a005b08140a81da86c09f24b602203414b35ce06f27658dee02665581a8c8f4d20589f890b484a1a89de9184c691cd2d1ec104139c610a403cd004a51fe2001059494b20663a71c0ad94fdd1420d37b65fc6ee964f0010f0ce1b576cd1623257fe3be732b8879acdbcec8dc0242be103741e077c5e3cc0f8f3b1599040ecd6eb59ec4f17ad0ebfdfe575d7f17175c5e83837e00099182f5126fc5ecb08b23255fd23798f0c3a511dcaa89e9df5e0ca76919771f746ebfb8c156233c14beba56cbf7b05c9bbfe0f1cb298833ff6691ff6799f90127230cb7f192fd8bdeb0c500867aa3fedb3084fcb8895c7591eec19abd8e53fdeb7cb4c3bf37059314b88639bc902c1b2ec1ad753fbf27b77f37bb21f2c302c39292f1e5d63e16f2caa346607f167800799d891bc1006b687debb9b04b342781549de9e3ea9385524bef45582590d3633140c7a928b7ee72b68cb1a9dc0e653d6202aca70584e0e6e010767b760a67091f87aefd930852bfaf3747ecf25b48aebc20e93f1733bb7fd0e589fd813b2125a6126b4980d369262a203aecd4a8f50168663f46b012e75aaeac42f9a3c4cb2c9a360cc3cefcf01d9d1844f1eb5a16628c971f25ee5ffe306327716e3fcc49c0be175ef1e3aba3e3397b918159fbe5b1d3d0c9e70e6fdf24005eae7e14247f8fb84bee6f31235ad3c6e21ff100e1c08587840984e1ce7457aa9b46576ab53944bd6707a2a9696802a9c781bd2b84113257e0d220e1ac86966e257723d95147932f0c4872daea738fe803fe71c9c2b2ce5f707325aaf22315079c5a9b517aa146d3e6718c095b922ac70ab2f860547eba857a7ff7ead23f0231811af6836706adaa058c698b35fc2c274864f25e54c66dd1f0068649d2f793c934d07ba3f1cc4a6b92d376c35e4c33a17f2d020344b4c6d260b326ac39944b6c8c297427c349ad9f1616f03c298bf5e3f98c81eb75934250bab8a9b98c0f830dfc4a63aaaddb1f6625a584bf4261f8046e7649b35fa03359f71ebd14404bc3aad4d31f70ff440d4706d6d76e95ccad366ee1de6ef69265b280a79a91db557866743d0d3490f4e3c3121226585ca2732ecf7eea4c904e3b51cc6e8c9edaca9d2fc83c89181203eee0099a850d9699c2eeb304b345f7ec308f08427409e32bbe7c440027dab4ca79a6f86930d8233a37dd7bb887ef82cae43d298a876638e64a54b9cdc3c6e6c944bdf51b670e13e5d6420bea3c24fe17db875d1ae716fa0c21b21760336a987acc96e6e68a3bc6a27591377b2e6867bcaa80e90b0c6c1d089d90ec3a4e99499a072499f3640d5211e4a7ec8f38a2588660a12c43806084b707ab0ea7abf14184b0e2c3e10bce07181008d7de79901ea9d20f02d056bff145d9bd68cba094b87c7e221265e8ad40a1e53c0290a79d9bc3140089b877b0571b5219dd319b7dfeaf7e75d28ed91207e3c9b3932a7f80b0481fe10d7c17e9242cb04188793a7c3e7f2939901860a956db92039c109bac0397b30974e7708d9f8746fa550832f088716111b3c10331ac8d2b6899910d66eec8ebf339497b9348fb923f10223db46c0eeff98f74670adb26ec451dc49ae7612443f92075b190fd9ef1b2be957e7ca3ee7c410e45cb92ccff0a74081bd977a7293545e73d85cae9a5bb3ede1f66384d45382802df221b375aa93dca8a26e4145080d5980d2926fb706c7b4fba3fd31de96ef18507275b8eabc5582a31df4fadb5efc2b5cb0e1b339ee7c6b1d050bdc31c741929c6cda13a7e8421adc79ebfb83e70a7759bf6ccb06a13bb30169444b7d52d848f82186d08cdce28b9cb6272df5a9e818b7af27e421d35f53c70e12b23737f5d5f86131cee75a3d3a6c899d6b1559f799d09f59b2ea740472dedc983977c988c2019bab539bd323d50704cae99120b0077c50d02f9ba80e01e14f763c235932e417586c342052cc255bfcbeee4a73b08af8528462acc1fcaa8cb0d4d8f193deca83d0f633b7b4af5c564e6332f8210a576e666eb6a19d5cc0aeab126d0bc55d0d17ef6b94e9c84026c36aa4d51a8ff45a1ece814a8b32db1585f6ff653c2b82f64891178caedc46ce3e1c693d3b80093d5668056e7a01a50baba3ab946a0c1726238a67a92efb74b697a87a4e7c3845d23ed58f079171bb07b56b4831a762ed01ceec681f51e91fe594cc8d1c463b216443e6bcca6c986c11c48a497a26bb32a33c091f0820d1724417f22f68752f8cd7506b5b68dc09b38b10620da3982b888e2d7def7b7ea02ecfbb9aa5ef254e71dedc339fb2cdb2f6793c5d7861ea5a4fc1ce127b9894167928d4b9a51de6523ddf7027fbd29639b115a7f2fd3accc1b04cf77a1bc00cb946f6a7842c5a210e47a73a049f180d364afb126525c0421522db666ebfbe425c33af61501bdcebcf0e0d31a939e5c1a96406540a94c40a02fe1dc64fcc0a4c4f8ab01d406606385b558ec2a838a343af012bc36a4f4bad924caa3b00874ebdf032c118dc6206b418f79818a765982b94f5173301e5b897ab7b0fca62126406db9789433737c55dc402c48a1f18d3e0c525391748783b6b7aca4d189a40e8c5333302b557b581e56097c090702fa17a001e87ca0f71f78c0cc7b29ffcec8962eeed104996041b39ab1bc6eaeb2232e594b5ab4016bea12789a8e74266ca2aa7e6c20ffd10198cfecf186b761468285329f6a69e194904f96dbfb531444e4d8fe0216a8cc74589533cfcb4ffb9a067a88202fc649653fa1dd053c00d2945ac7177a938189f1100b17ca163d9b0d860170ebc570166248b3fd7b5b92a4b307931d39b659c215b560891af472792ddbdc58f07f8c29cecab6e5df7de713ab45b037d3620556a5dcba404fff99aeaa11d23e4d8c49a18f1bb81bdd13bf726a99d54b89aec094ec5c9cc1cbac988e9489e5d97d3fcd1f4097e45d00ff46609a6acd276bf4fed1f8cfdb1d0b4fdac5cbb00e0f84e03478f099f35890178155ffac8992aad4d6396a4757eab0503fd64ccf1ac1debbf161332d2ebb9818fe5914915f42bc963a1f633d10bfacfb58a85451273ebf84257c77bf301d5c85e2e20de09e7905589a8595020343264d5e74d8f446e82f100e1b21064aae3e2dcdf5f051270953eee7c166932a6b482913a93b85520e3771ffa9553db73b62e5f2f01fa78b97afa9d89cc4646729eccfa510594a394cf52bb3babd2d834a79c5ad6af160a909f3e2c3d8c72f66f8af02122f378386d36f8e605db588d49ffd5b164cce0aa4fb87a9820d0de26e060d6936fcfb257266caad6e4ea22e50a2a6289820b09967d6dcf048f0ddc7696e19cabe3be8d8457e3e56ac865dc91365d1ed79052738e37dcb063cf4c3818425130385390e925b84ad52daf0883970cdb1847b82a6391ca012bddf464242b29cc744c7d318ad441d875de0ab72f3a7419d05d36069d56d5b08064b53dfbe23a82de3211e9fdebba5232a792e96750ca2e9d8b559371e92544848ac4ff2e1d0ad95b067ce9d82688dbc0d7d0a152be98ec485f81c78a127fa4f2bf067e04481f65852dbe870371bd6dfbb5760d369354b3f14e26b88c52e43022cc7005c321ae1318d08433e01c5738e280ae66f0c3c8b92e1e12b6288183f6603cf152a44db9f1f8fd34a57eca6b11c269a4ee045baec88775e623e6545a0cab1093df86511f23177b78d0442c5e36b203b6980c0ac8638b9fe2b0b5705e682b005b9898a9e3d345d6316c38df258dab1869879e055cb27e5d04caf4c79bd34f4dcc583ec498a7df2340c9fa350b1bbaa206c90f412c50106b7d3bb52b78ca6dcdaecff9576d06bf4bd42e8276fe07a858b77b90552274031c1a2bf851e758e72713ea353af42764a2e0cdf29535c39344ea9d231d6a7569c27b94438a17a8400597071577abee31a3df968d306839668b456588ccb8f463a37c7a9393e84a1b251de83785ccf29077c20d685542fa23069c29f88602a89047073a54bd39b7fb022f5236327ad99277c3c01db382bb9071c93032d38ff8fba53edaeb8bd87998511163b505265791a437febf507c60ee6849a700e5f2cfad3083c6b10432a8a0b0007e626254ab0b6c6f3cd2892f55e81fb7a95c3a6370ee11c56f6b9e7fd3ee39f27de3ff9f0b299516b521d1c48639651c98fccd15a0f1c7453baae2a39d50c2a3ac61cb4a25dd78239fda3cb353e1d55ddb7d2b9c485313b5792b9742f1e6856e5a85e393d643e3375b21464e90d1667cc54d1d2e93fa4712949fbbd1cb1b25c712362e5ffaa7fc58ab8fa27f9b69a0ec3915e8be051dd1277bcb55c520439ec344a83717e89f6ea06f6082f81414b46443b905f3ddab39cbd8f5f040279bd3531e27b57cdce3ba1ab9d270bc73144fd75b94abe7eec901b5087ac5a041b5d1157d9639c518eed042fd2474abbf9ec08c08568aa1e05e718b636b97ff649664340c3f57426985b97a5820c54891ff16f31c42fa1d29a4fc220b400bfa25b516e6bab378026673013863651cf3cf1e41c12b10dfb378bc641ba02ff7aa48836553b21b5ced19a7f609168fb9cbe150cb8a1b5524c2e1ffea3c7c63ff37a8e8e6bf34f38df17fe650873ee8e6e0e64422cb77e97e8d98bf10dd8b630b409636b42a83c3e99b1fce331083d022dba4d5c6bbdc19cc5a1c1fe9a45f80fe330701fd8a8dcbcb8bd65a03271a5c2416ac0455969e76dd5cfb64a6e28bb8993a4b8cc592d0709b7525624c9d4022a0c0a9f086aeb2c5b10452ad153850003a65091cd953a250405e7a758ba0c83670abbba4cfab8906ce29c357cca1c8062e45860b06de070265952c3cdf70d5d5eabc5c485db1064e96826b904c045db19827efb74af4ec1e145c94424ee53594f21bb8455dd047b7f2167552f6606bb39354e89a5803a7ec6bf3316c0b454e7754ac7c19f907052da5f501d709ce93d25534702efe34d2639e4c538b3e2d4d38ed45aabfca3d4c12e7c3a348ffddb0acc485651f6e4d7432094f3e55c8062ebbcb8c7181d19a8c337e2dac8e307236f74a005f584351a75fa68cf5bebba18b0722c5d7b0fd92f56b2540a6be5bf9ea6ffb093b9d59f1cd1b0537b8f5c2e1c027ac136085f8e0523992af9555f8f618eb2b9ce5f17513d6d6be39d15da7287a602e9070e2c20d11ea3a7d46a3afb489b18219e66e60901c9c50727fac6e45d106b715998058485cfa758d700d3d54b63cd18607522d3a9f240442801f6f2bdcc27f00785d9b8ef1e14e99d6fed79abf396e5bf395e56115f2b876e539d8b9869eae5d16d996f2e0dc8628bf42191975eb654b913a8bbae83533b1ca2d31f19bb41e393d7eeb91933327467f9c18416fb21a7572d66959c3854066e007774b61f5fa56987541c838e029708301f9a18f14e39379f3bb2e64721bf1b2099b75cb04575eb29dc4c527168a0943961ff6cd3a939ca798f16f7da2c383dabcbc899a641f9956844c6f222e6b21c3acfba99c5fbcf7822c0d4bd15dd94b5acf4e77e10354cd8fa959c792999726a599201ae8584c49b7fb261c4e7761d137b4cb3ca473d699025d4dcb2530d4b19d758f95f5045f1b15de28cdac83019d30319fa97ae3c29154b6bd3bb0ce1ab4a8bc8ba5d8869abc9538e3d6d78aa2220459f12b6395af4319bb20f09df0bb10f25ce14e76f682a5d1b23367761a03fdb0bc4267878231a3a1b12357ce4ee9a10274c80f405363c910b8f3d8894696621429706564cd76917c1d4c8a82fcb24176ff4996d20bdac1d5d071911d7780bd3834fc493cbf62b482460f575b8d76fcd8ae46dffc271cf39a89b563665f768fd495ad43498ea948e3e4a526e21a75b5138c52848719f381595be368fa2ea4798ab2b179b89e093e941729c9b62713955c8a69b0943269b7e2aa8c882fb3db6704c349bb0bc54232cf6b7043b6a11dbc240ed69804c507ad5e7ee051c33feefa4b59699c998461b5e8850adcaed519a002fac7cdfcffa5d2e94f1d56f153c0f41759da57735ec94dc0bd9ef4ffa59dfa60e154479119054043da94bb9397328f69a999b7461705a5438e3234473abc29baeb46d9fe8dae31c70843476ed3ed71472edf1c4974545fd10d0947c8423631f8978950142e90cb8e88d4066914421e3a9f802af344a74685bcfe52744320fbdc7072952b9bf7b511c789e86efba2c36174e19840e01d5da2d638221ddbe986931664ec813cbcfe2962cf552443c458b13c4d2c6c0d0f8700737b5b6f213db1681c39d6d6783b5b6d9df549ca01f7a02c64a28ee8cd8e998ae75b90231afbf34dc0e71b1c6cb3d2d766e05df187ae5c9e6daf69b6e9b8f6a5834c3cec4c06dba9adfa079acc80ec1095f36adc522ccc0389f33e2b5710fe69d17520e8ecf548e6f547b020d0bb902345c995ba8539c4e4c76b4d61648b39a4e55c7b659dfc69996c77d327a1c1d30dbbc2633e87746d07bf2a6ceadffb8352ff4842ca7c9302f6dbe1046e3e1d6c397a0b068652f1bd20b7f68d66bbe34505c04a1dff155edd99a2bbd86f17cb75d1affd8564151100c44044283354ab8b59da38d60f19ce319a5945235b800c761a330192d10baab006da42ae7a54a80e804e46e5cd3f1da6263986ec2de776ecf8b9b2a3998a46b40d7bc603d7934a2c74a423ebea53313bef4a0bfb5e1f84f1f6cdb2900a9f73fb5522e536ecc09f83ac23d48a182b13f66b79d837da524cec4ded7144094512d61eb90e2ab180a84d5d5a277f1cd554cfd5e55af3350fc017bc68a3803078435dd795c929ee19b0213c9c9a2573a91c80ff1250ea65b8902c507f45714a167a4fb4ad7876ad3f0e704f9f7b7f2d9731c589a17ee3a12dc0350eea98e7a22905fc3b30d8543cda9485be38de7dcb2cddafb779161e042a549be088d4ecd8b4cb9aee1594e170291cef7e0fdb6fcb2ca24e81907756b5ca4631fcd4cbb0dd3015b3a75bf23774c006e8cd9a405583f725b8b3cdb0d220959c8d21bfe6c1b668fd0d4db52d9bb4b681d236de024f272b87b1009d739da4909d162411329e7b2ec273e564a5e91b9648f5b8ab3cffee346f959f109fd0ad2c1edd6698ac04387e6d12464c08682bdf67cb0eda7412f6ee4448c1de68aaae77b393a7a20161b0e40a9200c308ae2466b5c4baf0157102ade80963819fb69f4a59ef026f7225b9319c32f59e6c7b57b9fcd2aaee627a3a8516577dd87fc263302c3ecf711d1f31e66789b683004d691ee47097eb7cfbe50c19b226b25cf7bfe4ba3dfa4c858e91d362b77c214bad2049b380e770b9a1d0d62915bdf09473a7b8573fda9a37a934e6587db4abdb88d253eb9255988ae67be38f614da226cf534ce49936a76e8aefd97afe1cbaff7f03d1cec48a4eda0e3a57014c1f8e8684aeb839f5d18b54514d0e02290100462aeeadfcc246b65bf1b068f054d421d209b3a323cc4e4687e35c8e2a2a2c3fe795592363b3a6afebc92ecd76413cbf68ddfe89fb480af23869e6d111164eca03e21a16b4853f860d0a86fed544f6ed33f1487351488a672bc9f875b673514b2701b1982c1ecc44b2de5ac39e272ba731f70cbfcdb2f1250b872032801f5da54e42c6cfd3eed3605adea71565ff688ceda0468ca2c450734635c003dcd02a6269581ae175522c2c951d09d3d1a1a4fed536976c3efe6e911c74ea6753db31ee24dfd48b363e932a0a9a2e0fd68b97e102309e5dd3a54ff1b69e43c3353125549318e757229b6a96280d8d63b822fd4674bd0b778d7bddb0463ec9b1c52d140fb6729c5a52ba4d20ab7a7546e36de2089dbee6109c125e0b59111ca507c50f5cce3a3976b0a28d92c0912b1f1d36065c21abfb6b24e2d7b76d109efd6b5540a6be9ba9d5d17fecfbe03eae9b6f487315031e8602225dc7b83423e1b574a2a38f2e8650a1c2910e71a77fd2ed5c99886cdc114d50ba358bb051a34cc47f2adede1344e4e1e7aafbc111b28dbf467f776800c4a39968bcda0c27563db15a99843cb066e5c4b3d045bd69f42dac996f7b3b371c0af40488458462c1b60cca21bc5410a84fdc9b8642e44d1bddc409d0666f1406cafa22a1339f2084983195a1f82e4e414c3db80c7d7b60042d3e7c553423a83b69de1e609f2dc676c2652a11490d617afcdf43a041836bfb9e0130d45cbde5bdb877fd939fffb78495139d750bf846e50ff3848f0c9e64899978830dff7f1a9e8f7124241cb4399866f1bd5b38e077fecdef0c3aaf4334894146400d74a825d4adcb18de1f3b3c09efa064dcaf242c35f126cb1f99f8d8e4c6a31876bb8975b944db69dcd265499950b9b4966756321113ee6e6562ee65c79b98a6f68c494426629760da6f31b9c41c6f30521629abb1737a0c4aad8d61da0ec8608989a3415c450a84c79a447c7f19264d41e3fe17260e82102c8236083f36033af55552cbd6c71e84703401c9f3336eb60fb78f22768eb19600a0b92364588510f9e57540f24194a99010b24c2d113216475ef5a6b4af0b1835e5b17de6ad033e7ee92cd9083f8200c11a0b60e19a66f307a3319c118c1e289e982bf10b20f64b8ca146f052d4e43ed5e4b7164bba92dab46cbf551073e9ea632d7e6b9bd61653dbed08b31dd9bfb0fc15dde7205b045baacfbe710bbd54b4a42cf02f726787d864bb38dc82a3bbf58061dc0ab7d211e518dede1d16157ea55c5a557856f07c985a99b88b4d189319950786b10084c1561ee6cc2656da058b8d8152128101b3cc9aa7197489606c0e0874123f15a55c19dcd8f4c360067cc898bd52080c3492eb7150fc50227f5ee42cdd1c063bc06dadd5606a080a2bdfd8c3e7e25cddc3059111bbdac9bf0633c2be2614ef32a0d707c98983cc1f8c096b17c66a628a708d92385998ef45043be89063310628054926deb4e6f7944e4388cdd4718da303b554b0f5a906266f5797d0e7305d80bc92a4ac301a2a1474e65e51294affd09c8bbfa522efa734b7985752c7e5ae07b3454cf887588a7940090a39bbd7b70374f2c69b785b429300ab8c7bb11b6b71d2ca7c3131b3206fec376d2119fa22fc80157b12a2106cd08d84bd2b3c277a8243b812f58471be9a48029c68ee6667d0888ccc0bfaa0d13ae8d05607a46b5ec17a379c364aaa590fdaf3c6dacc0609e153202867705c8d0d5d1e02b8b5578577ccedee2451ff85d09e8357c594f522035fc30e0b063a57dcd6baeb5f507d11a911e4cde441388f805322f99627c13ead5cba2d1dbb564229255514231e0a666d08f8720c88a6917edfbd819285ee420cc50bb1381de77a120228d9b65ebbb56fded6258044ed5d22886e02050fdf6b53762e000fa9bc67256c295e16908f08c000bf889a19e5752902bb72cb21398b3a17412b3a509f1981992ad218b3775c6d4e8105b5872e55b691cc6fcea25891890290d345e45f3d4b6b35f839de4c2a1086dabe9b556a163ce61d8511034aaea08ee29ce85136dccf2d8fee8674e3897ee21cd17c8aaee6a8b44b01ae0dd1463e46e3cc8d6030774fc91b4297bd6cf17f2e52e31f205ac03422e60f61cc8efd6f4c91660282cf62281b400955e2f91d0a748c77d8c84a211d4dee10d5fd466eadb84f57d77a42187be4ffeac23ed512efce40df4a4176a54aed53e196ecd8d0a80287cfaa3df573e0f8be7778a83adb3b891dd0fcbc97781fde1df8b16f480dfafbc32319ce4f69677b2a940f78325ea6e4e55d4a7ab502567a5bc37fdc11a2ef39f45789fd845bdb5b8612154511b05c26f669c1ba3f3c3ae732f7ab14db5db3536a9a102f8be0f32dd8a658e1ddc25e39d3df7192be1f015c93b46dd8a9cf4eb5b2db1deadded7eb71bdeae89b73f2efd71e5d2ddb1efc657fa03c7cb76faca8c6f0f2eebe7f2ebcd4930c8a3a839084f2579610356c15dd362d21553fa3cd7cb08506c5d21c390a3a46eaab0a00fe30338fdf211f181f542be32f70d88eb353240423c4dc73e62503c08a879f5ead46103ff667847ba5ce47a5e263c223a23cb8f26c70b016ebbad42b922f26f2da0327780a4d1f025f5622212b78538dae4bcb05a568e76cb317b17e1fe5d9486e3198053fbff20bb5b89cb911837b98dc927e95ff3eea9b7c6c44dcb70554d7540a9bf87a416511bd5cd68c1381b4c5936e00ad653d6670d8df9987f2cd35298c7bdd8238447bd232e7527b38d3b7673e0d133cba30f6efba01ab5a6e8806fc58aab81bc13c8e445c39baa5420d417aec30a1d9df9e8934459845e8fa1c7a3698589b15ed5e8a967a8d07cacb0977a1963b727a31fc32e197a9b21a20ad28046dec670cea787aaf84b21b4bdc84df08206967f961e38ccb889b3cf9533a4e1060fd3ca1906deed8e5845b02433f1624e92b5b351db3a9a876ee907d534ecdef7d6f46d4b12dbd61400cb5353097e53c970fe4cadc9f70423d8c45f3405cf2b340b6a0124c67a931dc699e5b66c456c4d683f60d97f4f41923a81df65bc3f86711e331f5445c7dbb3504bcac74d4d1f78940d94b6eff1911d834d84dac2fc9f53bd6f546d57e5736151fcd9bef2c1443c71bff59ad2212e08a39b54efe330073d76da089d85c6be7e015e9f66e388555d559fc2263ad9581c81c63a6d6107fb8df49cbf24b0499ba54d5b6ac3e404b5a7579745056e7ae3667fa720fedae869cb360dc77ec19ee6cb4af9e1d5a5fc271c29dc88d22298d9aeaaed12e85a86b95df66b4ea05ee39f8804b233e19866c5e269786d0dd428eadaa4bae97bb1b77d25e29cfa99e2ee81cf7774d149b8c86eab766f4600914eae07031519ebabc7e85e62bd3f4a6cda495a65631fb78aef9e1d517babcf000872528fbf4928e10248882c30c8d5f1676002b06f6a7aad99d47937a6b177b17ce9808c9d355078df3981ccb3a55a8ce6fb223cb1c299ff65fff39871a2e0c9e92aa65313b4a5bc5e73bd5f78ca3624580e10b19b0531c095c7851dcf10d7e4ebd4f367a79b6d788feacc82a81b881d7252e1da89ec63baf6fd294c362b83ace8f9555ad694c283f2c6fd6550ed0520849a432001a0c3a3abc724c0d40792500d35e1c54c1ebcfedc1ea6480105903007767663c012d6f81fe464d3ab13403cc714161a9de45f3c2ccf4a96b23d0ac196de667ac2584a581f459f64fe805e83bbe7284c70080dc76223c66490ec465efefa18d0723507552ec28281a0c246433206fe69c58424d41f8f6df03f22686531ff3769b90b481c23434a7fb1187e40f11198a5e96d1a1936678e00432cbc6918cc00aa88f05fa76f39e985f0266aa3d693b073f1bf10708e0bd522228b2896b9c15b51f86114be582b4d8f05ad17555a34ce214b337e51b9c6f74cb1015e62de2075a33d8ecea8a089b7782c85a504fd71827f675b51fc7e23127b921e874671b89f474ac74f475dd38bab9abc0ef62036ff7176fcd413589313679383b009d6fe9bfe057526cc6d5d2537130132e7252851c8964b677639095ff3170dde08ffc4fd7bb54983f227572a09accc0526adf88aaea15e052ee15942bdd483189c906fc997e0cdfa0071c533804a60afbc2bbb6546e22fc098004092fe72e3172008b5a30584e7b38c21d48f0b670a1b5c2de43a7afbf738d1a2711a39d20027f0e93186a0f89b9005e865c8b2603dec499bf5c7b48d573531e7e6d20f8526bbf7d7fcfb2fb3c46b110e41f0f1696b36d2f46da7b9b8947cfc3878f27f4775f50974d485b020712da8b3f5e3edc46c68c43d6a66ec86ff5ab79ebb37b4f297824712d4ad7bf724663fe8db6d9e47cff30956dc5b8090d82d6dcac1c1b67b93fbec1fb50180cfe58348cdb1e1c28ee79100a1b782630b6c7529827f7624181719021ee3ce93c3e83a7b6d8585da3e864fe2ad3365d1c55167b9691e6c172947b45dc1565dc5715dcee5557ab7881307fb5a5317d23deb4a99b2dca7bd2cb12b3a0ae0040bc3f4a5d35f9ad8bc8e750d64c55451229cdd4621478bbd1258dfb21b8543aef0252b4c320ea7059494e8d36775c6d2e9ecae71c231df71f95c40ea9a5f2baa0873b4893b6770140f4b144e8588031a1760b693a0c23e1987a64368ae7645985af85cbd5752314f7756b5d0a6cabe571c1bb5fbbf793b02138b08bc930ab90ae1a0e37570b253ecf791e08d0448048a6afbab5b30d819a7037d376b45e648d603f262904331ca890b7985939b4aab5dd55946656d3945514a27b5b7d814984f6e28a75e0d08153f00400844ad07f19b188ac61118b99c9d881dff2c25788a68ac3df0bfecb6f7de5bee2da54c5206d40ac10a880af1e4d3fa9f9fbe790e88a79ce9d3356d664a621f3939a46c933393a7cfcfb499c1d3c7478e4c8e91e76adab408933a937c0ce1f93172191f22f2188fff43260fc9e2a9260109a1ce5459958aea046b8b9fa118da344b45655131f290e647188bf2821557bec833af490875a6b99232542009c354e2a767a1ebfead76a533847986b36ddbb66d9bac40534abac9518c3712f1d0bc639d47e73859bb6bad190ba0eed70dadb73714aee7554a8f077d4ce5e2f21205cb797138ba72ce71b9464f47953b3487e986f1c63bd0e84ccec3c8ba8979a9bdf41a126792f35e3ccc1b8d6c46c2c55e5b0e2d9779d8e0e32cfe51717374b82e798b5d5ee22a6efc2731ca0e29f18b474f47d89ebf602d788bed47af0132bede62968f5e0e1855dcd008edc147ef069949d2e3f75ca27b4ac50f1fad96cc72ef4a7e71fd0b8781c93453bf987af4b4cda9633a5df272283fb26adc80351c460eaf7c916d9bacab6da20cd82bc2305d6253f81da20ece116ef526691e3ba74d99c51e14dfe17e0d4f2fc7e616df0fe1880414a0effa35ab59fa39677a46c06cf0800834283fac2ce9e292eba6033c9f4e71434c2597bc200a1d78356cbfbded46ad653e4faa4faa138da33f7773d724f5e08cbcf664cba17d61ad89f664c5f2f161b1b0978f0f2b0a8b15c5c7621528eb105bdf388ea33dd4a25eadacc7da7b47230e63ce396fcc877bd9179765ee999a49264e972cd74175a6260e4e5073d1411dd45c4c9cacd6a99aa90e92122f86336da287b13aa8b968afbe79586b88b1da8354971d5443b5564e02f976ce375697a48c9f274e83539ae07a52ba147665b5cb3c535d4da9b8245b9ef36989ce9621487bcd33d5e0543538934c55979ae37c738ec353355333e5f518f2d237ffcdcbb1cd5497641255167f6c284381a288282ee79d65924ef9cb74a952c2c5ad990545174f5dc5bdc09434f8733997de5a136da5c2d80ec771edc39a2257d00202952f4ad6132838140b0bc97547b10eff827d90b8b298ecec34e9e979b25a4561b12885e24a293e3e3311e80812437cac51b4260d4ecfb4553c45f9f845b8d23b632a6ca74b1253613bd80ea6c29460aa8aed785cfffc5029aeff14617457baaa72b99ca43eac2a970e4072508220240168870a344144135c4278d862054bb8e235a4c1e919f8001348bc62500e0ece111d9d28ae448242857305f43eb473994ea940390d4e598170aa4b85a9aaab02d52c2a5075d16ed369509ae0e2487f395a79a961ac6933fda7aa7e9068327db34e2842167eb6bef346a597434e69b53ea4baaeb2f65e56a4e18384e24a2a7e1a9c2e8970430c67aefa374abf7144e288936f4feb79e2e2c419443e1d03229aea15d1663a86135620a069124dc1555ff525885179496364b070438e39122b1db0a27842b332dddd9a85a15229e9c17698d0d6f5414a991807656246ee73d551da4d533c65a82c46cdc61879644dd32863d30607791ac20da1bae43976e4a737ce632c0c4a34c5604c604f3c3645cc48946581d12dcc5ea872dc4ae72f7d33d7a07db5db57973a7f1e765756a4212b2bde983ffdc3f363c987feb0fff3186560f1f073ebdc87edcb62ebea761cfde1f82c32deb0d6e69bdbf2eda53bba9712881b62af95d564bd582e26602104229e3a1654335db19f5fd772f06d90f4651dfd9f85d15049fa34fdbb76092a68f1f10ad239b75e0ece6238660d77e8bacdb1202a84bb6d2e65b640f7d28328265b524937e76aaddd3e544809a17cac9802232b8e8f1559782f1fa0235d3bb2b4d8a20a4f7f664c781818f77cc56156603c1ef161465410691c18f91d6111c61c89fb6ead0b91aa673e7211265597aa1e1bb747462041eba5d7c38ef832937a603ef14321f55fbc33469db821c612e25a2ae5be384b2649a02c902062082850d0209e38dc2fa594d2ca2cc3fc6da5a7a371c3bcc448a3dd0b69d8f6822335f122083098b8d5b9183eb73a37e34bdccc31106ec55989ec4214176892a0790189176aa0d4c8608147dcea363ff041d03489b2c97a92c58734ee63830010802701a0d1835b6908c0889b0900062730d458d518000f0640801d10a0003a28400c4d6230400e0c205332e1c07453c48d8d1e1b376e7043061bc83003cf4540e6d3b9190ec0e400084800f6aae3f81afc89062705cce05605d0b0d334bc9ad8c0873e3a9763490d928583f335870e19e8d811835b7d070f25b75eee851cbd831b6d5961c42b7108290c2ec55c4afa82cbcdb85081a40c9d319c08c3f49981a8b4545c7043eb92ab2c6356d6fecebebd34c7b81a688e0d8642ba3a8739adca26c54775a54b4a9b52e728a5947673cd75dcc6a9ac2b73ce91308fbfb9919f9c8f12507cd82e2c5d0d5291ae4927aae523124ea66049d101c7b30597d41e5f7aa55c50835cc8200c089c599405aaea76c3d151a976767a7a562cc9fa107b21f9d434c520b0ac40e19ca66755da74332eda1ee912923675d36d9236c5e04cb74abab4d3f3334ef9f861a67aec95e1648d0b2e73395ca0b12bb8a175d1242a9575aa822b5d7a25c997f40fdbe3a429b8a1d5b2cde10805ac99b2b4c30eda514d533ceda42ee57cab95723166e80928dd483f449e7926722327eb8a37b49f99a8310cc3308cd32ce730357c51595d9360756379c473f87be939809ae08a7c898e9f464e978c9c935d278184c973b8e5a3474b70b1201919a0e0a027282691b37a790a2d17218653b3e8527c02abd2a6781ae19c910be1a751e6d91c53a9e8f572501a8a5e8f2d774e8320ce6cc7544aba9457ed3207f3e952632ccc07f3c15858148c55dde35836731f253ec0920208526458e441f048e7b248e6f0d074adf20217dbc8634830825b3b299d6aceb59c345b17952d639d4b6c5f61675f945e1fe80b992ff3125108cb708e107e12659ef6f9edd2d3c179f7c3fc30032f64e625a2dc49f1a144dc50267d4402075da062b0754d9bd74a13419fdd137c86a74a47049f94223ec314657558ac8ac5ada4415583d365d0105cd0060497243d4e9bd04f249975f46b5ce09c66132e3d7243ec3503c3991bad9c0ca9b1dce45a1d5c6ba9ecf0dab66d738aed132e9597941f3b69b1cd318fffe2e5a018d6581a175d9c26eb72399643ba514ab12e6b39b42f3e2281032c8670a96f16db9cd3360cdb30f918d5094921c22b07dde8072ef52dcb681e5ac7825e6e3d88d5ac66add51c734ec358d00bab826d9383f17260984b9e946e4e9ddb301684bd308c55d93cc8e658deb62d63411f622f798a3ffae893c40ba460e2c3fef1a448a1474be201dcbdc41109278ebc084f56f47448cf3a64ee24a906a7a70080049545e152e7bc7ae73e225b870e412db65dc885e6b89a2070baa9ce0d9a6e35540e331c19116e148f1324edc08d274904124e94a0c239654d85b8d23bcbb95af9264bf3aff5a41abed64b77ec32d9d9b11b75814a856d342f540e5471a5d7f654bc2144be8efef609f3e2719a421a46bd3196044c7ec95d1ee52d831bb852524a29a52bdf0bb28a14220cd3b99a245834886b9da3395666ba2e7599c9846bbdbd1c3dc4292f44bafcf66ac05e4eaf86ea5c7b3dccf8e8d550bf33f576643dc4295f7b98f1350b69975f43f69d739e5a5cdb94524aa90bcbd4714ba57bbac915aef49aadab7b42e99c75d9977d5997a5d22c57a5b23e4ac84063c20e0edbb41a9177c5a430852db28c550161a0ea82b8d4b949050d05b184b11a4cc51bd245f98e46ae2422381d4b424ba2a12082d3da7b41705621b3968a343670dbebcbb990e39c736ee372e8bff9b496e3aa735bec01a4f6d6ed5ee82f331664824b81b8f4595da2eec3da80c604116e1c561388f848bd87eca71697cee764ab31f6d1dbf1a23897622b089e13b11e2249cf4173cf73b01ef2e89164c6c173cd73d0ace710cacd1ab29db4ed144f3cb2575deabcbb47e00791deb9f4ee49c2ed30af87f4cee76a5a7bafbbd061381ee12bce5e7a37cc7c8771351d86290fbe62eda5a76365c7e6d4dbebb17996492bb9c775ea3bae5337f2d1d3719d669a4823c33e0fe967587c0c777e71ab4abcc1f9f49ed2a6907bd33b0b3b53d314ca8dd21a95caa8aea79bb4693e79f1c2c5a5eb7aba54bb49b7cf76c5952e510dca5448a944a5642a6bb5ba356da663cea124128992288944a632ece5c0b09eabd0ce283dad564bb6bc81a669eab4a6a9835a412d9f23703e9c3aac2248d163bb62ee331ca168a1048fe1ec5bbea649f6c8966cc9564d4d0dcd682683ca1ed923b70cff607fd0ac73333a0dcb1eec331c8ff012cfb7982742d182ea352f8774f9b23ff73557f3499c361bd0ad1e760fca0869331d091b849f3d93083d36365e7ba69aadcc71f45c654a6612e615237c63ac96799d319d441ad389d5e60a67986cd434c968235db32b37a6e2b871db4b2bd299e4c11202d0326eabd6868d4b697716d2cb216750de6b1bb62f3b1ad268cec9e839403b61d6b90dcf8f5c8cdcb66da15095d730f61c4b17db94f335163c1f06837910f3c3826e8f611e1b5762f254310f693e62f1d46b9c50e38ae0742c731bf773259ee2ed6d5c7c9ade139b58ede81733ac43a104de3a8e6e6c1fe3bee2b844173cf80f4b201c1c1c1c8b290bca0d6bbc86661fe83fb9df7726a1502424edbd04f31928967dda4c7009b7bd458a2849a9b37cd3208eea5d7390f61944a976eb61ad99d720d55b7c1aacd6656b5c23c77133c30de5ba45aa96569390b070542ac5ad999422a11a944ddcf00bba29cdd0a5a6517e3a25a148a82ef5df8f506240822fa84b39bb68c86d5c4931a9dd7ef71f26b5a330a9b30efcd579e2125d18e179e2125dc8e0b98f06b79dbbfd83db1f963db3e3a9bd1df96bbe89424bafa9c94ec8ae215c7a5313346f64e0bc111bf890b2a6044919527ad9162e7529b14659b3062e1f8e271b17c6cbb143d6c26c402985e9302c71a20f4e113f63d5e09cf1a4411bcc58cd60cd587549fa8c2733b4cdbc49425994e5b2a9b9c208460c188e71e8ce1a57b7d3d8a23293fa69f172b4638c31cc7df9720c3f007b13a5f0b3c67581f819dec8182201d144ed1277083f732cc24fe7541773cc6fa629bba6cdbca17981c6cbc1b98d5b6ba5b4d65a392ce7773bf6a76970c32fe8b7a71ad69e93d273e9e5f0bcb1f714c725bad0e2359c3dedeecd3bef7cd481d730fd50639616d8b8a10d6ebbf5723471c3eccaae4c65b68c1950e6ca64345156b489df241d9d11c5b941ae49bd979e4de9d2e6409f4b2b5a5a1ceba5ff64efd2edd024a26906459bf8e92e5e8ee68ab85d43a5e6d5a56d9a686adacc3b9271fdd0d434599a4a85682ac43ec6d5b2cab9ac9a41f5e9cb33582eff30868bc670c59841bd8d3b430a38a3f5d341af07f63340cfc78c1777c40d45a919ac695a7197f5993693c5c3193f3f5de67086cf4f0f67b4b26b05cb130baeb9b8a6356da6f599a61a960f155dc27eba24922bac19547ffad4b4da24a30ded9a5657f30345bc31a54b338b083e11659857441866cd13b12423d8fd353f35ad1aa09ad60a8ea78b63765571ce35cf54baa47986e9c78270b3f40ee794d3e19c42f5298e3e381bf8c6f5a32733a906ea9bc70f45a91fdcefb5336d7ecb1e9e81bbb9f1915eabb5dd0e975d99e368fb637f325b01608f607faadbb8b4c6156fc0fcf4b0a64a0d1779466b06d583bb9d6933bcbd86e3125db47ec3da5b91e59e064c1aef90b5ba9e6e67c3d2c973b2dba20f4e941d62cdab864a83b3a6cacf9aa01ad78d8efa372414c7ba618b8fabc5679abea02f4886b3249b75f45bcfbcc6d5a5fad36ba874292ed185ce4f979192a1a44d510aad9a2a5d8a4b6c21e8a7cf4f0f65e4fc0c6b5e325a15cac0504b5861041fcaa809fae936eb18ae2e855f904f974299965697c2182e19579742ca6a91d2a508c54f227cd832a5477d1ccd5d9c21fcef90b5f217c473bfa08f8b7c71c29a28fce48cb871892cf47c48427d166ed8ed7c41d9e5d3ed744cda3443db34f804ea322c2cbb70d04e9425492812eaa757516aba0cafa1ac1ad7b4b133e8c18270c319d40c6a9a30ff192cdf6043b8618dabc64563480074d2094c818b34a1655971a37352ce2cee34591d202d852ba466400d529cfd94e0b69416d5a5a8d3a03dd2a0cca6a068b6289d98b51a943ad3a2ba1423136cd398fd64545871c3d1db4cfaaea6a837123c1022fb697589a463be75ebfd329b42c5cbd5476b933428ad4dc9609fbcedf927a99e2e8576a789749bea92db242d2398b9f47ad0e75ad2384331d2c8e4c723f3a39765ab433f6077ba24dd32e9927fcda1a539cc82beb30e8e70695066ae2c689a6c2a734d93d58936d2ad8e4d591dcb494e08ce635dd2cde1912d5ca409e3ebba5c97eb92c57520d3e463624d6e68df04a4c634f98836d2670e6d8d8f355eea208994f7be8cb6afc009e0e6f0740e4f1c713be2d370be7e4ee90a67bc9437c66a597473ce395bc6183ca3c7f99a56e0224d7863e316c27318c6d38c5569b0561b37b469dbc6b528e6557c0ee1b6db9775d59a6553ef231422709eebe468d42def68f4a3ce7bc91dbab78ecd2a2ea639c66dd40bbd42f388b98a36d36f122ccc6a33d05cf0130544fcd4867875d07c851d5455327fb75d725dab5b2a99cd700ecf86b9275d3693a315d00ed04ebbb4d35a3c1bda56388ee3388ee338bb6d96769a0b757936b4613acf514a29a5d4b32ffcbaf073156198eea4f5353efa3869c1732c5bbc7c8ce8f928848f3e4e80be0a2e5ec64728554c79e9e1802380d72973523cd5d0e2861d6402da01ed03d6650e990f11ad4e228f9e0f51c6316d6e1a5cc2fc88c4ea0a548896483831228a0f486995e082f38286a5ab4e86e03455cf53a7d9670cd77464d31c6a5c0eb554f68a831b6746e2587b6f8c1c3e669c08f60a2f20ea1052c01e6a29f75053c57091639ccde04c077be1ac07673238c3180b9a36d3719c369566da2a68da68a9bf89a13393ad8b9439560c3c72eb8ac1f1747a450d27a8e783264e55b1a2d41d5a55bd514a69dda92a252a559738253b1bc7451f96cbe592fd5355a2ce4d321ed2e4a02707b5a74bd50905c2dc25b65474502c6e88b1927043ebaa409e0f5e0fa4ead4a3d74367527507c413c9737841758325ba38c93817c3a7673ad334e3996a9a32c77298a1481e66a96ce7b39e6c65318f03e269c637ec6326e7e4c4b8c873469ecde078b2ae696dcd3e4899d44e7223275267120e2227f90f9193f2109ef621312ef2ce3f329771993c64c4c3391192c7ccf868e4334e24c649239f21798cff98f111c9633c87191ff91544645c14c3339f40d7bafe354d44787e641ec389885cc62791cc63f874f943c645fe2306a9330e322ef21c62788649eda376ee3116cda17dfd4c1b99cad18c7b219d269ab21854b8ae6904f69a2b09c3742d6041337406065d65c65856dc1c312ec23680e1749e0eceb69d338471a318cf3c07918b3ccb44787e8c3249ba8fcc1d104f998f3ccb4486f0e430ca44449e39119e1f22cfb2911391181ff98f6c9487f0c8fc63e4327908c9473e44269e623c9e38e9f95083fc1c1a93063d1b144f313893c944627ce4a24c84e7474c264997f1181f654b8424330987918b3c0799ace968a21ca74d962d7de286d80bc3d13c478e6659c649dd2fde121d3f896688611ab9ede2e78b73365a3943d814425d1644c831cf870bc87ff1b850376708f39a1b2fc9fcc5c34b441e8324834f33389e64703cc5604d539186faf85182ebc37f52f9e935803c869fbe4397c2d802d2a5d0ead0251f3fda144f9ab6121363c2de61f4e161c38c376c976826d5aab89ed9d0208d9eb90379ffa6ddd1b31c638c3c1aa44edd078df10bdd156f711b57c449497218ac17651ba867f9c58b477f717ff1e23ea070b14b0e81bc8b47eca34b58966539c49c47833e301b1aa478e4980b16527f871fea9316e0824777c1630e02e32327f1901f7d0146de0537f22eb8e098638c81fa2fce45ec83c707896e834b9017ee0888e161cc3e78f8e852c4407d1764dc673c3b769fc9d8f10b7fc12f5ce6858ce368c72fdc051c64e43033fee21c0c0e3d7b68b187d73d1c3d0c4c74cc331c243ae65c74c95cb24ccab25c5d721833d75e70e8ff52730eed57c739bc5f3d83f3e5fe8b7fa37f81c1237fc1239f193d00068f3c0686817fe00834489d848134485d06ebd020f5185c810669f6c1a1e046d68b3cdebc28acf1a2107c91bb8845e4319a784c1bea226fc1a17f8bcfc87a1b37beb84b0ead0b0693c3d16318f6e292b31c8e1e9c36d479d867f11859381f200001ceadc5bf96161c72161c5efb2b388c1eca42eacda4e8f16443db50c7d11f488a31f320e286e0d39b691a81d364a30d756a37f069932448b8d235e7220e1dc8635e71e85f63f46abd62cd33fc43d5b49885d4cfaa93b20c731e36ac9e7a06644e9be2eb45fd479722142be83cf54869743db54213f409253e8c5c3c8d3f4f3dc36a8d2e511f510f4097faa9531a9a83489457441ae9aa084af774ccfd2390af3353ea58f619db42eaf46e8923ad3f5b063f5429a43ef549ab0ee93d24407abba445689f362ed860001aec1a0db6cbc8706394ef1b796a1aba148237eda0299e78a86ee83e60df06bb4bfe40467036ae6cfb82802feb895dfabe2fdb89d94e973e979e31f1ad09bfe2d2a710e401a4cf204804647532116f5c97ad2ee639457b388d60ca3c9c4940c0f47012e1003a7e9a538acf919e0efa2b1e71fcc1a679e39c76eb2b2b2bbeb2b2f27d9f67388804684b746a9c3217e2e6c4b3a4711009b03847881a27cd85b839d91863beb917c7bfdff77ddff779f45664a411fdc31328761fb7e8dae8e300c2988f36a1cc47c7b08f0608b78f0508431fbda32c4008638090e563d6f3d10523b68835226786022ed2842fad9fce755206d924880f3d96421a70c62c0b59100ef1d4d5dae128b32408e01ca5e3de511ddaf3d3ad0fcd26959281378ba6ac8b9805c5c86df186c6b2d2e23460003e7a8ca5900a4229ce43a9900ab22ccbb213c6c4c5dc4ecce79262c9f6208276b5b23d88a519a33c596ce50eae0c7db333b0348834a6b7605b834863fac59649834d767ef60cb14aac0b22389de3b04e6659b4ab5497da354dd3b49e6fd734d7fa06f99dc32ed5a08cf112c7cc38c96155865cce67c1d108bf82e35f1c595724f11477dfdcb6b99438c8531664b3208b7222c47082be3da43a3a623cc5d1935e319c6ffb305fe27e21ac258277d4e0244570e2204f9ec5a4f6ce8d9c3889593f3deb22763eb1f4240b9aa60e8a973b953c35fe61bdb3ce59520ed639e7ba9e9f6ebb1d29beca6ce33c123e0ca528a5dddd1d4acdc99d741e95fa89334d2114449be92ed09901ea4345a442a94ed5ad7e96fc6514ba6ea75349253b5d9232949a3635773bb953dd4ed5296953e3e0e0e08ce0348f449bf838acc88936f1259739b6839b39c5a9e12c38a154184ab1e4fcb44640e2279491933b030d77491a64f950aae37c0ba56828354d5e0ea540da4cef5ea0c3b17c184a519d100ea84e0805dddddd2808b920348350112127dfa5ecca571206e919a7ed2083a257fdd46179e238db456f47e69d271142a978c3e5a78754f186a6336d26e9871dc2b97523278ec3a41c38efbccb3435adceb49914359db861283595b861a7fa39b5ad4a2883beb7ec49d73a15c6dc869d7790404c9e4e215c20dcd0ae5295ae240cd25f5ad3480360082ed2849bd53209856cb92e3d6934abb2312ab123434814929e2f7793492be614ab18569b6058265132d553b6b4508555228ace3287a36ea5f390c6e587fbb9d0e79c8debd22db11fb6dfe22e1ea32926e43487f3c964d5262d9955cf11c24f230fe29bde402e0e4ae75c60b09a8d645e748dc5c8e1c9dc7af474dc29a2d9a846056520a8676a7e59966559268a8d82a994d66cedcd368be309f3cd7531e7fee20c636de36258e9b65aad164c13eaedc5b771b9951687e93a6e656546bee8ace2b6388c8852ce5aceb9e83560c5b91c84c5579e525f7116a72e62616161711919164a579c526e7a0d7871520d9dbbb84b0e123d7ef4381989a98b68bb0f42ec57f741c8fdcc858c7ef30e935c3c3e0bcb8aa8c561b2ec59595959e956ba959595b073ceb90ecb55833d0d4ed9237b64932e512f7130284731da237b5e4c495df0a85fac488ece69e7643508f6166e3857f2145b4f220d1fcc1f1c1169cc28a89632a3b5e9ebf57a619b16d77a955753d179f4e2639f5fcfa9e6b4b19e527740f2bc713f11691021d280a2a708e1a7d806e896e7f62d8ea759c5fdfcc6f8dca473de4c696e3d07cdbae63958cfe5552046cb3cd283f8b8ad07759983644e9768edd48364debee1c901e17a484cd2bcc4c2cd71b8438c1237aae5f98de3111ec3f233fbf9fdb22ccbb28c4465525ed779dd7d6488084e6f89a225a020e0c0cf18be7c38579fce91de111fcb3e796f0ea967f4a3f4db01f570b44e9e76a5f94c7d7926a919d6d2731bca97cf0f509f808f3e3e78e2dbc39cb3eee1603dc7d19e5bcfc1739b35cf43b693cd3ea6cd74cc310fe1b9334f1e8ed306eb19c218fef330002f9da64dddea5cfac5cb996a8db61c8e6e0e6f1edd4bda3cfe6d9cbdc433bb61e63bc94ccdd44c3277668f5cc2953e75266aea4cd4444d9d7964ea4c9d7964a25ed4a9f37abde48bf4653e3e88d283ea418d80e8202d0a659bf80cf7d78c3ea0a577b77b3a26cdfb407f07b07f32dc2d25dc50a2beefa399cd877385df660036240a8542c9d88ef091cb91ac2d64cfaad5ad160a85a4a7661fcd6af034dee8e9e9c1befcd26bc6b5d4cc46e640f6ccd5f481f5f065156fbc8ca8f0f3093f9560951845f1d3b52043e6e1dcc2cf2a7e7a23c1e8fdf6cf6d3459fff24f4f092273fff494599bc87b9a1ee37ee34635d8a94675aa538d4282427509eb19db2854ab91b43ad5495a31bee9334d2e2ea7b07bbeeef99af57d4e136f48ff9cc6e99fc3f0727cf9e6822fb144451a8db5c7324cbf36aa91d06fb2e66aae1af57d8e39f761d81723ebd4eb255fa9998211a7ce4c4d533cd9699a4ea2cd74289689f944a4311d4bd2a592fff42d8bebd3a550a2a044c1c547e912897a9c52a40c190e1a8800c1879115a74e904b4b8b0e54bc21230de953c2c0d9a45231d26c34c5134cd00c00d6355fcd27d367da8cb0b861b77e26949f9389f9c41494838971cf89845c732231ee79d8a48ec3520a91c614228d2d228d2adde8cbf2e5798c13d13ce4443c8ff1b07ba447c221e49ae710e31e0e9a873c07cd437908cf8f90c7780e9ec7e421db29946b4c9be9a31839c23c30e1058c3ce630ee95e4dd40452c2ca2dc63dbb60b03e3dbc53ed0182f07ccfcd826293fa55ff0129b7b0aeeb0fd151ca168018a97f108ff558fdfdaaeb82dee9265ab255fb24a0b0ea5d3fad36abd7e6a75eca735a5d59af2535d93412fd9ea9e99b616cb3060c08891b1d0349e4e303c8d983d984f66e68a08cf8f905b27e2b9e644426e3d94ad49854b84e787f59013d13c5b7091c6a37375d4e00b1fddfcbc99617a0c60005eb4299e5604e0a1643d91ab263d92c9ce4b25a04c75a9c6a30b475aea74097b7499d325f738e3d18774298647cf4097607874215d7ae1d179e812c9a3efd025198f5e812ec5f8c8a303e9528b478f403fa04bd7a3fff0d136348fa60147cfd03731d400a709068f3e9a2691470ffd5f5c1c064c136d64b800f08b6823c369e05104657800b04b04653800f08da00c9f81bb08caf017b08d3482326444e0290d0d0d0d0d0d0d0d88e5db6019c1175c060eab069e86c648e30510c7978143f92f38c5a191a7a9c1120411944e44149ed2c8239186f417702841f0d2697058648ba7ee02963a3127e2c42131035148e42182d25fe01d22289d842b1041e9325887084a8fc14022287d84231041e9226c03cc9419a28d74171ce526c610a38df48bc1084aff308d4750ba875f44507a8747d125ded8451b2308ca234f7572240e1741555e545c5900452abe1a69f2d4230d4f6f62f8ea3f9e8234fe62e472bf56fa35f730e4e944d2a5b691b660a49110b63da1ad652e77731e0dcaab691ad534a758d336d7b6cd45bb386e8d1878f0c011593578dc7b2f0f1c12070d3cfaa64664e130f2d64727e5ce8f3ba4d39612c8c6e0f5b271f6386ec2e8a34397e2133370926bdafda341e9998f0665c4b6411f3fa257a773c648b10f1a638c74769c4da59763ce7883036806a02840d1a583d1278a163ebc19614464deb1bb06257d415de0edd37b89e638ba412dfb90b3312aaef5ccaba183d0ea13d34a73d8fe837c9ae1259a67d87fb44973ec45dbc80c93a30665df34286fb7631ed62ae74d83555a7b65a5b3ebd29cb37d7449869db5a14ba41e1df67726651e3b2864868d1ebc8936d26bbc6c29b94ecac5be93722b9d73ce48236ddb285ca4e17e2e5d62c9491a1aeceae282abb974cd250e1e0dceec837b40973abaf6b9a6351597fae7f590feb9a6793ba25bd770755b3faff8fbbe1f6d9abed9b48f2e6d3f361c0df2b0368c2cbbf1e892ddacb596070e1a583868e0b14d2f47ad9a771fc696f46a7450682eddc873366ed64373d9af85e4cbcdbf7cbf734ee25108bb8cb24b8373091017fb1a313ca04b3787210fbfeffb42f8015dfa72e81ff2febe3b6d42be3917c20ff0f1a3c1f6d1a5cddb7f3c20a46d9a76135b51ca7729b41da5982810977e8cd26711aecb471f258e9072b3e81deeb8ebed35a24d7b6f359a62db3528bdd00838cec68d2edc1c9ed806681f40744ae59cb3d4720aa9df9e6d916984b664021769c28e023a50a089f812d06273ddaccad6d3801488f2bb2cde8b023a603c6a9c822715742ae2092175da5c4a6dc58ecd43e4386bef95545082131e562d7c63393c74b26616f36ae011b7f8c983e78078f2bcff4aa79a47e7342c4f3b3a34409d8a8ca2b44e3cd2c31b5696a6445c7999755aa4f87bce7236ee4ae74aa0e284d4694891d116ac1338058ef4c6322a2b96d1965260f10a72a225abcca1f5eb24997bd8d12f5d7ae720e175cb49bc237ea5211590af2da4be95a8aeb4ae228d9aa1d821d2a789293da721455ea8bc4e3c5caac8d6833ab93877826b823a5faa7cc95307db72b458ac4efc288aafb5fe20d2986e713d228a86e586493f34df7ccb43b43c4416210b13b84e438ac48c00e884a30d307d48918e899e938b1729fd9c363772e24a703f0f6fe6ce6a9ab40ceb2c94f839fa28b66cf5d339247773cca5f8f61ad0e2a41af163a8010393ffa5d783c549357c41be318b5ba72ffee1252e59c74f2ff15d68aeabd5945a6b9d2f3d1d99d7d5fc8a634b9e42b846e1726591e0ae76dc95519d62eae86060966534cb28a5dda9cc3b337179714a73d8f90bbed126cb6ca412ef06ea324b260d7a2d2e997449aef8ec24951f9306955c0fa592eb2b1ded0f59c944ba5475a9552b9d4aa658248a65aee416c7d1b81d4729ffa32b5886db5b5a7648ffa17e08e485d40fc5cf425f073e6bbc69e1331d984b974abaf465293d55e6faa4c1ce43f7de1c1bacab5cbb5c591c09ee4ae7cba6cef77db5456b56afa8b5d65a6badb556afb5d65a7978619683914004bc4d025a78589eb88d26e8033ba721453628b468771e955774cbb7cfa44bb225cef549dbd4d5050267e362960837acab210dc40eb6e0731a526484c5ebc413f22145b024824e9b174100ebc443230e9633a2427c8255c24f8f61ade2957062049dedacdb5565f1e9554a9758f24f97482c5e3fac517e7a67ed8aad455c1b7732993d0d82d37b0bb30793aec7fffcb3f9fb564e5a71f92cd8e55eec7eb9cb48f40009969228202f852ba4be0c79285132e575d5379467774becc3061ed6a5472c5e7a6ef112cf6d6893e7d37974099348da66679aa68ece0e0f1b24115ce315133c8625a6425c1bb7658d97ed3bd272564787ebba235cd1bbc1d216d9d2d2e2c2755644011d36f73cbcaf43977850604679f230c9cb437686c0246189ea34a4481502d069f322a2d5894776dbec59c51b2cd507d134754e10c17805aa2a519d88a2aea6cd0962a91e518f783a99789f9ebad2a8eccc209a6c11d7c984324d73675afbf74e9dca5aedbc48d44202d5633758af95b5855565854d714402c912a71593a4532ca4bedce1619aaa1141a8110646ab75156f4895569370c5cffb84954ea4f4eac4562895899ff5899f750a0f03a29b3d691bb6f1d49dbab39269c0740944a01b600509c492163ca6898718812ee930afb8a144559fba5a4dd49c5654cf7c22e176b4ebb8aed1a3ea381aa9b437a0f3922debf8299eea93b699b9ae7e6edd8936d36b2ada4c9f73d6545d75e989ab4a9b6040d52853d6293febcfcf8962f2954af5f9e996b6447529ac3b32b5b32391d49d2e5599e46f8859d4555d511d99979305ab3462ddeba30b58116924fba108cec6ed76ffd836eef43984eb4f801bbd89a38f70a5c7c62e948bddb7bf0e75df2f94797b7c0d93b2ac63eb3aad73cfb90e5b0fc7ce69976599863597ae6152bb160a6daeb9e621d5eca69763863e39b76e7df465a1cca70df52c8742eaa841eab452ea354e0f65ea99e6988c1d923f33696a98e4a449921e31a7ee120214f54a3dd2504f6659709126ac21bf2ca4be942d1b8c3a6c3e7370be61ce398e8b710dcb9709b1e0863cbc90f941641c86c320797ce1333d00f9209f7bfee1cf27eea47f4ea8fef3188e7acd65705ef319bd1a58dcf38b43207f9dcb7a88bc2385dcc5bdef7e1edebfe1e8ef9743204f0a6551f6dcf3e9d771cc8bc3eb9977ce45af87e71f8bcf4c0a39fe3029e4dfbd1edeef3abf9914ca9f4fef3e8f5e3d1b360f79f578c8dffcf3ceab7399f418f061168f1e03e46f9eb3e4d00aae97bd7e39c8e6a11c24867f2ea47a594885e15d0e85d48fe1d16770489ff4797b3d62e4d8208c1c0a991fc95f64da20293be6d2bb41c6655cc36191d7be0f53ae7660a8c37b5e5d7a37849d7f1e0a992f934322d5eb71c397a990f77288798cc931311f139343f996eb7ce650c8e4349cab39f550bef7aa5e8f09011d6e64420ad06fee6ddf7d3804f29f53af01d3bddc39e1769f6b994f7c83f69d73d8f3e879378746fefa8743ff0fc66788c565c545de625b5ce42ff7c545a21c8e62b4f95c72388ad1862587f7c359fe417e978378be797b3548df5c7a3d3cdf9ce3e2c775e7e1e879b8f9058cfce75de713874042aaebf23fe76cd7e1cdbd0fc7e7426191df707c183d9485d4df3c87b7616944d5438a0fbda15948fd997f902fbdc74b8dfeb4900ef7c20d7101a614a8a46d3476492d19a281000000004314002028100c8783a20189542ecc31fc14800c809a5078561e88931cc74110851042c620400001038040600486b602defe9a6d8edc7026e1d6b6aac0b5f8e47205fd21fd0c98fd9113654645c849bddd56cba9fa470f5686081ce3ed6620b804d11e907dec1379901cafe7c631e5c9d739a0a67c6febd1cd9323419831305fdf408afc134570ad7ab4aee27abe822838e94f9ea81ee13024e953fcc9545d853e9ff2fbe79cb5aa7859a3eb0315ca46289003a1fc2e2bc403328722820bc67ceff969209fe2e605ae86f083719b757d02dcdc94ed87d6eca9bf149dce1d09ba29ef0b74b6aa56b8ced69787922f1b096c142dca68bc2e40b09aed68f58b76eb5338fc128281d08885212a97232f2b44f10335b5ac69cca30ccff625a1be325f7d84afeaf54445037eceadf947197d6449ce6b59607f5604c01bb68f1fdb29da8d270a386088c9abaf27d630d7b127a22d5f0cb0163f477229e8f1a0dcc904581eb0cbf5bed8a6399ea57bb3743f84bc769fb93f7e1e2b62f05769fcaa786fab76cbdbbea5e1f96de7b247eac80469404a7830894099c5d463de8de1e251a1ae5cbde76f015fec0669abe5616939669e0d7a41bb427b433e6329d0c3fff0c0b278768f8038f57b72ae030729f1edc205bd3f7169081b86c125c3bd81b082d20758c777365d1d8cb9a2133e1cd2494700d27e270536f09271b40c49bcb6ccc2cb80c833fdc2fa1c0e6c2efdf919b541be3b62cd207a788c92d9b6455664545510457cac1ddbc76209598facba3d0e09476c868fe5eda84859707471007984311f89abec0c5c29403d370eb3484b762166aa51a0d93a0be9412f045b98b5c76a982a826bef1d5510edce833e5a1d4713fffcff0f8f9afe0e37c021c61d28e0131e7bd67e9339dce75b30c86b1d09f364c6bcf66d32ce4ebc3869c7751ab8f0206de3c2447033b13542477c8bf4dd085bd056e28b23f4a45638136c87a77a5858ff8e6d086c4b5c8166b7c40df1fdebca39e5bf3b54820320564ed4d2ad53c1650d28b32d5b0695b94817d361bcc6268ee421eda1743666ee60c42cda70498949c81ed3d34c5c189d2552dc33dc122f5073af4e0a03c193fcf501869c7ac783b0cc5a96da8da340fe18448ea9afe5e1e8f1c21b0dac039c0f6de7e57a391a606f595fb73020b664ccbf86b2bcd0d891f020a73af263495edbcd572f046da7dae1078178b2335e5b704cde7b60861c7d1c79be9a3994a59aec3e1067f815840ccdb4f5c279aa704108037e9457f8412109fec392d6ff4fb41d587846aaa76c802a93b6f8082a37c4f0a117db5e38c0183c1aca2b8bc088786f0cb1bedaaafcd86cdb07441d1afc2e8c7b306916cd3ef3ba970d50a5ee308403b496c7a9bcf7411ae304f53281d715698671ffed67c1befb49f99b0d7fa685c1c517f25ddf6612b7f0fa28d3d1981d1f5d0302d986bc01045619146cfdc79102433ccb983fffe2c70d6f571acaec2000c6770b79f27746fb313cfd43e01b43c66e0c05003a1841aee3a4551331af9664140378d38ebd89b3f5151ef19633dddba9e3b18ea3e17880edbd3a9b600a1e3f5f473747daa2571d3181270144334d9520d05b48bf69d714f876bb1af03b831be1c33ba3870c77c43203b90a65afe6748401c2e437e680c5e6efe11d0cc2c20ffe7a223cabe11eecd542243d443e53b82fed0a1c86f62a729970c2b4b46615047ddc75f0eee5fe68cefc6cd54673b84ac681af0aec04895f85f47039f9daea6568be20b8010d0f8ce26a1b72740310b5c5a857e3338673386a7f3280ffea12a919e7cc0cefdf2ab50c7c45aff845be7359ab8fa0cb7abb0bd912737c1568b1caab841cbed37f534372caa8a108154aac01dc6aeed198ae5e93c7fec125a4a0cd66637311188c3b489cc4e7a26b49ed82fc5dbf052b4755f2beb471739ac87f02808ea3adcd639581005365a779d832907af840e167afef2f20ad0f0f0f44d5ca78805f23dc7b0cf9428a63ba33e2ad58de84870af37db3bc4f860694e0f35930b0f6686c48a6a3d6142f48eeeb7e1863be6780c9b7741e70ce4e3aece5180d4b8163e4ea304e39108201d69ffc851135b482edfe950859124117b4730ff59816c0d34115cc1057545873e99424809469c83688712530edcec06f8c4406460742e07dbc14b9553976b77ca98e5565953a0ddd26f9338a55ad7afabff6cd1f67a5eccc240a915887b74b190cb2dc14d8c82f1b06466083101df7fd6df0230311bb6aa53048f628d5c4133ce387737bfe4f7aeda746b4d61e1b68d8aa43a7390c2c9ecccd4045968e0bcf07e67e9abcee601fdb7a12f4e13ed6b21700dae701164688a862a21a0fae51226e383a427092aab0a02b8f686506afa2de9e93a686d1a0fdef3fe395eabdb3931c7da2b3bb4a9991cc207540784aa528ea4137409509fc733f6e70f0790a97370718a87ecbcc0be2f530a6ba6f4818a9737e4f2a7a1895fcdd5e4b9966176c093dc9c7509d7ee56578d0767a73a656d88f792c5488cf5f406c880287f7f6cb1c8c4a9d796025e73b76985010967247ffdd1f5b6a0b5ecfce9dd9f64d98085b6a0f1929c00268e5b9fab10a97508507407996c59729d6fdc10f97054f182027f97ed72d5398cb981707a46f7a595f4f93cc95dbfc988c3b61a92c830768ec04dcbb5b9876011e542c4d615cc3a7b76d97e9000c38aa8f20916956f93c8cc9a643e011a99c76fae82e17da5edb2f6f6acf2086b1c54546e80f89ce370137009ae42fdc427d433a553d1b538b53fed5b9bb8b97ad60ac88c201bbef520d441e30570ef0671214a0a48a93fb0f388a37dba6985cc253fe068e196834fe15a9b49ab24e2f0475dbda8f4d4542ee3c379580fc3bc7e4e8128162c8d34115d296f2aac93820850f85cbef544836f58231378008834d6b84a9b76c44a9ec9a8c33ce5570ed374c1a546b3ad2513bcc18b1c633ff5cc6019205108fcfa5afdecd96af98ffca3e880e9b6e6303d8a9b08efd40602e54083cab186c9c54d0597c717204f1e10a1b0c839fc005bb0d6e9cdb0c78df4a340d94e6324d0478b318fa94902597599c0893bbb2a56094f6ff6e7ddce7cf28478a5fb32b5c761e490d7214daf0729fdcc2751a1c86565f474cec7065d2d08cf6bb394157e5c16ae1cfd422d31ef41e45d6bb6d8cb010dfa45ee898df95e54eb8e4f82c71dbaf4541a331233d7a4052b72ac2433b86103fe9d750282f76f69762d293c711625d446db491189a64799ae8459a7dfe28517b85a70b5e679f25ead1c4495842ecd1076447394c6672ecb2352642a54007dec03565f9a259fae93966d8591ddd45abd5498078e47f77ce91cd34d1e2bf6fdc066e7b1c0c5f8dd75bdb46e631838ee335dae2fa887e3569d85c5d4322b62f8cd20b6c77251320089d80183458a55eda305361bc46fe9f17ed288ba854f75cabd9410e25e60acbb6550fe875c23b90b004c8631712f90b480fb939ac13f30b60b4bb260a997ffb75f46c6804f02e816b30da3ceed81adf30ac002c23b315b31b8f0cfe0bd87287307eee7056c7528b4e83609b12b153f254595e36b11a3b2c45f9f14b28b5d061579767ee0b34f0ec0c5b56c934e1689f9bbe45c40f4051c79fdde5e669614df2970163e72b768aeb64fd6f1c00f402c3c21333851e8213840656f7110d5db6eed4ac3d2673b99c974b037df3f3a6f8cf6cb1d7f452a50e387c2a2dbe3e1f0867ce95cacdb24cdb416709ce271f903a44b0ed3b28002db9184a73f4bd04d82745fef27670ab1bbd59c519fff186015980ea2c42b3c0021423b25fd7e33f087434ad5e81184c00733c87645809c11cd6a42823dae26252c90934afc22ea0f9028d6334184d875694e3d9c0b2852a1226b08bd3a10667cfc4e3495ecd28fe212a856b19320d018f45da516f15a9344875097bce7fe7b3428b82a7d95bd119e5ae7398c847903d9af268fdf1e75adc402eb771ba7fde8c370255149fb1a6b99cbf8e4581c39951cb438cb37b6648ae911a2764e90fc728a0180319a53f984a04af5a84c05988b201f799f81618129488f49cfdac3e03cf9821d21023b6da3e24bf7d91a611613f49e896c8c203d84cb8a0eadc923f458a42e9faa9f41e55cf627e0f9947f2850cdc708e094d955c5cf3a9273e9540bf3472c7a524ff4d1a197dd4350f5f5fe20c28247dc46b1b58df6506f73fe4cca197740d560b5c38a6d604eb094e7b0c0ae5742a498fbcfec73c0cc286c5f3ba6e5302113f221f50bd696aff126d316d0792324ae8211b860a9b2ab75d01d3b0f688fc508174a2b531c65f5b07df895cec1580c56cfc92f883cf2d53e624c5dd92e9c6db3c888deca75a74f94fe483353a74719114dc4601b925fce38bf58bddf98f25a09ec34fc67d3f20b2308b1999ed1d90316f07860607aa6a09cec703c54b6081e80175883c0f12e399e610bc9b5534fd2231611311f67d305b2719222f70ace13e2278c288c840e125d58f20e27fba5fce2132a0c43e73c4108508a5c78e16d122ff999f4968feafa9e5f699cbb989cfc4a7eba14f9723070e9120a6b09bf67bac050934ec334e2eda01fe4aa4a832adcd19a13beb3802e8f28d7fc5db81b62120c8223535a8bb8992af829f2c33e8bf37999715073b6c8a35261108b8d7a94c0a96b13f74f0f7646c044daef8f9b28a13cffe7a2afef345a2ee5ec4fd34f12096f08621964e39918be5f112c12bebfa1ef145a2547ae610ce69dee31dce4c2254f208e0e9f5cfe76578f4be7de7effe1ba614bfcfd80134a5ae6956a4ba6ee149a397790e92df584562f3e12b179f28a978343f4f31e240c861e257dc9ac837288f95bc42146594d25273498a42e3b66e91c8d5002e990472204e25ca5289f296034956dd7663904727a0fdeb966119b53c1e7b1a4f04dedc39f9d601b99ce148882f86802442e7c7300aa8c71df03825d210999b062eacaf832e85617ec1eb5cd3379c64fa7c2d21bd2e37bfef8ae0789f36b9b78554f22e85dbb8d3ccdb911364fc7340561c83a6811b7812177e21fd71a902f5f27df13ffc9d1f335c8a0904de5e7d7da850cf2387530acd8bed510ace5cb49acb07e1bb41d39f5797937de197014d1b0ddb91fefc679df59535d994769c6531f5d171d0dd627217ae6669a17e148eaa29bc2dfe3200f88de927e6327b7d83866aba64546c576c9e8b17c7fb65a379fef19f8e44fb633193663f0ac10de0ab8e1d40d995b84d77340395405aae770ca80dd6631c6294c1be79fcd482f11a37d622d39fb550eb16761b32beef44c2fb4eb4d59fb5ecdfab2f498beeff9af7bd7eba3273a102d89c18b51a6b6bf0f87c6bc9825571244b744c81772c3e67933139ba1ae851a20bf5ddca6fd08d12b56bc04064e0f6e4a2ab6a3fd865be532443c4d353ee44d6f889f83d9b2249cff1a2594a9b4cd6c5d05bac2ec377c4785e14f2a36bd549c24048b16647ae07c298801884ab7bdd717848154f00a0ab840d7204e7800690025c1e141c7399cfebb133d2c3f438b6f1ec66346f6aaa552248e133186ef0aa9500cab36bf930fa22bc1b2cc107e6f87419b2dfe69ad1ff2a65ead796773e683748063c1eff6df6859a9ada8d4dfed8bcf4372e44cc20c8b9efc4e93f83da26b23305525e9ed391de5d1a98442fd332dbac82611c08015f1464195277962a03e7492a5aa7166691c63372232e6bcf73b045c41e50c90a1fe233838fbf3ee019831c5541fe507f564ce11a1c1c0142cf27be680c84beaffea9db7b1e00a26472e4f281df01134fc438cc55943fd13d26d0d235e315ea5aa674abcf7fcaca742a0127ce79849e8423c5401d0704768ed7fce270e5195764ec429eee0389aae567d5255b037723003af692e84e897174d8dd4ec801f7b302f6f7ffe439b96c2f76d44ca20b62992ecf9496383ac5dfcb14bcf49ab6bfe58692947eb2a4678134ad20f7ce40ea0053fb243f669fd8bf14213951618a1768e54a5ee47b380f47ae5f667dbfc4a926df84c9db2486336ed123539459382f10d87ab28500e4608058d5582bb9af0509065b008a8e6efc97dface3c342f1e7a4a0aa698948804d0c2f6553832f6528b24bda245bc8d80d36e64d920a2e213e43380dc30f70b35dd9909f54757ea714d1bf6e1171a1235e055091a0c874e2567c497ae0d54f18ce36af910f861f234a393a06829242977f93df0181d341204331802890f9757b2ee83ff80694a760911e596b7ddd442beed7fa06e29491fd6fc9c0f145f6a1eff4b9c51871ff1564f93827be13aee1fcdd4e4ca7d19077e5f4748a1ecf8bf58b9b86418ba3394786e597469e4a12cdaf7e3af54a6eb88acc5a3c75da850ba4712028df293a0d18c0e563251689953d000383cf1733e73c6387424f3cd64345b29f97730ce2b945b3776acb191113babacd1bd99ec9832448fd149d29f5a6095929b3643979de0394d90b5423cd131b9d9f26f7db39b444c5f93f3f319bc50e0308a7060ec5ce07101696b8bdd52154df866ad3ae4a2257f0fa3a2462d5f6d5d56da290a8e2475d3f117634f2b1af5167f3eecf42b08cf2210c7e8827cfc45a0c5efdbfdb2b033a7ab0480ce103c0b1bc830e64608972f945abf6cb62f7cb4f092f256f0d147c7514c73cb463e7cbf59d5b460904a1c1a7c9a414eb65b8e02a47167015c31cd8fdeb3d49c9b8965a93f10d967fa688f88ede6f3555eecdad0d6290798e7274c49745ea16c8728aff1861a23dbb682d66f6df431a4c0b876124038d2d657d5d9501e72fbfee4bfd18f634e25abe95785cbbc0de0b47de42fa4a65890023b17a736bb2f9965c4be42c65b290c929ba643d42259f6c8fe32fa1db14b771a15654215b8e501d7b453c63122ba0d0ae3a20c104bd01fd3745d669bc50b58644d0ae2a5bf8da19aafe9ba734971ed9a8e1cae2bb6e702f1112ad3a860ef5f3c1c30651edd0549543aacd892606459ab0d907ce17d9e4678370e4304760e3830e4600b1c6fc286e2a5b8643cc277d1fd4ef3075ebf8a13d1a75ab68a92e035a3c85d2966f8bc3d3875b90bfe120f4790d24c0cc9f212155175e62a5c5c429b922c962a96b8828b11599ba7a280d2249de1701b184fbbd191b4bbc1dbf0a268de34c71c26046be8162f796da2bbc87e70841b7f1306cc1b3e0fbca53a4d39b6d9fa97ea2974585afdb891ed46d2d3dd62fa78d1c554043ef418a0a88fa6cfdd52436fe5db8c89af9ae6e01ef0132b30c3241d3bb00b0023226021751d3e2075a3043ef4d6b0ba3d01fc66e4a7aa78a5c74c812ffad3fb3d3926c87c82902ea4711a001b2b222ac56bde722c0bb0af20eeb3d28eb32aeda6014e3d9cb87e6729212494048f4559b69cfef4bd67cd26026c88083dfe3f0762c50f22fdc6b3d46260774ee72bb5f1cc19da53dcc3f6e3b23994f4101a184fdbd987a6c0183fc105f5a5610a750a9bcbc7f57dfcc12f1e32bdd554d923f467cf73f23aece7f1ecda71f0d5212139862d0a862e85dff6eadf39078669820fb0e654fa33a039ed82c4deeec0b4816deebb8c0370236e25a488f00b83ab8b3eb2e5197c1a2f2c2845fef5115af06167a615aab58bda96c98120f3a2a609a7e24252388de76bacbddf623dfc0d387b5cb21695053a321feada6009b16301bb06d0b460d247f542b5b3578b49fe2c1cc5fe31cc9f90acbc9533746a0feb53d4fbbe3f33c58933a2cef2ed1e3967b9dfb04f4136665876593e21667309fc59bf06471a3900a567fa79875bccd37062089e63c32e3e699f6a96a42683aab81497bed91631e682910ef0c8fa3ff1bde8fa68866d4b7b43669e959844f39328b8fb9329f63ae8127e8991b0a700b04ee1780cd702c7a793eb66f241aaf0ffc0d1bd7274d82262033314e5940962456a50026a75aa713b7370b670e6c4836398356adaa22c32a98709bfbce0b8e8110357f4127b55e518d2d35edba194142d3c4751a6a82b21c3b9cb47539d4d61520a4511192016328180b56a5ba24c08db279dccf16309a7e3feb848e4920e37590884066de4ca54f4996e80714b610736c504a8d2c453f379c0272df3983383a4b907ef9405991fb2c963897b942f7b99b5890d6a98e9130665fe868136403e9260358e047a6b4e680729a93a7e8049d0245fdcc448b5f302a5e5b34c5965d2812200bbd11052c1d48c6f651b448ffc325950206624ca31a98d2bd600c273d2d640dc08ce44e43a8442f6278877b3fffd9ebbb3381eeabf0ff191ece0b2746e35e747f978df45a1dcf94348924ec1ad079f23d73517c7b0c5718cabe28af12f7337938a4f0d682a4c92a64f9c9b94908661c4dc41f988460eac534b030fd97fd6142986785948078e8ef7885b3ae3804b13560fb8f2cc5902e39d4c411dbeb9bf80219e07263963133337b9a14253d22d97da13ce5b596b4322b986385f3e61f4130a8bd079b1b28f3d430b15442c20f6fbfe1c2be8c0dee02ef9547f0627c2092f13b8989facf5ffc032833a4e6645179761fa2ab5e53620895e60f71d22df2ba13307e988157e9d734481d28725b6673bc73235ae9fc727aee7c94200b968038e89f1c7d31269cadd375dc489d0b89df6076097a9d3074020397e71e12e8993015a92b130125a161df8a717c24ac6a5d7bb29461d98411c14eb05bd4fd085d2fb02832adc8b1832aa24625506de79532f3783b65ecf4e33cf5721dc7145dc5b2e25d34d802243f381198e01e809f7c0034dc31d81570493c606503761c46a72f06248af100067c948b55c5b3bb382941b72e352c1727aac01f8b5e85e7bb2d62869b8536f7695fae77890cc3bad627b10700a6f9ff79ce7030a16c4af600ac7ccb71fa80b7f6e1a6a3d4bb8e0f0036df2cd7842f808551a2e477bf08d7e406fe45c4c0ef230a7886a11b6241f9c02d55765acb8c352b4eebe801ced1a135204be007d133b9b1aeb1025b84d7b3e2d07cb8bfed577c177c570504c75cc24144a8ff33e484b96ddd8c4f7d55e38036832c804518ecae439c2ce2d027d3d7cdb237b547d9a4fd5488d1850dff13847278d05f0d95b160b5fcffc2592e8cdc8a178a3eff21af488d4728c796c6d4ec1cee48c5a14f8959693a4d9122f52365564fc845dd8b0c9060005fa32f7007b50c699cf0480a7d735b5b5b067e40fabc59c9715626e8bb314d8c7e8aa4d4b9e63eb9fb6d5ef3ffaeeac9d18904aba64a3bd333dd311e3e00753444e80a58ccd02743088b89292bc88cefa2a878271f22f42a09d84b6e2e703783c657b4d1f1756bba9864008b52aabe72b6fe2a1a9f1bedd601f765fdbc698f45dc40acc89a4158a2f0a2dd299de4f74be95ed1692d05e4464b4169ccec291d12a58b21f52270da93eeb3b5d955d6fc9748db5d51b791efc4a12b55c4fb51fa3e22766c04f4d44feb97ff2935fa52ec6b967fc29310b4f1bebeef6232008a3d29830661ad6ee7c330e0c79953dadfe43e491d2e0f82f867e0434c0ddd69cc925e0267c39e6290dc45daca50b12abfe5af7ba981a21e0681a846aa676f01b8b3e67e3e91c5fd965955492f0f6010d8d0c4301e2aae90a94672743c7ca81cdcb23ab9c966751b0d608c9779aa77be75b16328a119fc3e12a1f16f5376d02cb2bc070b45d8d30b8c04ac22179c72aa3af2dcd5453e418ce81e1b971d6480a60614c84b33cb9fc487c79fcda23a3af74a51d54d496237f24eb58e09dfc8c5163800e45f7dacb7a63172fe10f12b003a847850fe240802b20100c7fba88ce9b61801e9eebeb72d8c6ecde8053a028b2523c032c1ce03c484e0d9a666cfa27c6f4cd26b25897086a819c64b2f75072d81002b60dc7d91040b2fd36b3e1bed10193cfca96b7303216f5b61a91ffe02685bacb36866a0cc4ae815383a3eb4d14f03ee6f8605f7bda56605ed1fb5f489276d134457c64003a5b2cdbaa0427183e5d15eb690c94c0f89b0f1c84f905d5f5695e0d2ef0920a42203ccb70fc52ce3a79a710aceb8f01becefbaae59afc38ef9e919119dc1390c3f4cdd710a35926e995e27c5a3b849ccfe344267d27149492080470001a5e090eeb6b16bba83476b3d8762fc8164a8f3c7b038291eeba873542ae0f5628c7443e71f78800aedd38243d6e1096188f7546d1b4e242d6051c53630fa81534008fbd1be9a015a445c92f7bb9025e43dc3d2becf6439f8a4ee00d6e2b7b1bcb1a600a2294e998f857e4efd39f75c89c94b5102be43c12651a9885893d14340c64e818dc7c74f2dd46f6fb180da72808eaad52558f1caab3642270f3ab5eda65b0e792eb8193943824087d84bf2913b0dc9836041b337cac91ea22c19ed824cf14f118782efad0e89e05a5cdab273c307766f759c13a2ee744412118b5facbb802e7dfd59d4bffdf2ffc29c0c8870fe11663b1a7e2101c4580c2c3b0276680b1239f469b3c50491f35d74f89c4a50139a3674abae66b7ddcec50e95a3c015711f708d7efc3ed117f53242ed32173f21180c56a3fdfc32dc29fa24307b4b0741c14cf408fe056db97e7a5eb2d390c90a7e18d45ee62bb6564e27224191d4558dffd38ac49c5701ba649771a0650ffdd3d9331d5874151dc893d5c723c5a130dd93b00784d3ba373ae474878be63e20ba33748aa6b3022f88f18efb5cef1e45949a2ba7c04ab36da7afa95aae945a702be906162616d155e7d341281ae75dc1c5f67252a71a961c744668d992002090d60b6f55a14114f1b4bef4743a06b406ccc7f55113d72813e7956c809567fe7eff0902302aa2c451846bb0277b07d37f0a16d8ecea1e91ce6cb62f12e00cf91d4b6751926d1ff80161438e0158d36d552936029650639936d86d3b849007858a4cfac897ecdb3028ec99d65ae5fcdb91aad2a312917c9e1551103eb08c1668132feeec7041d4baa94e1e49e8ef4d6367af273a5d7ea0d33844f7654636fdbe55fdeb4b2920c7b303e8c69c41a6e47d1639cc9e17c975d9b8c335517751d3f7e0c7ad4c70868373695217821e69dc0aedc3b482f17e986b8a75a88091014be7ab3e1a4c5f5062df08916ec628261d88cd1cef5f5c7874f7cfcb455c399ed9eb2b752dab71e7f53315c33c84bdaa38f5a06284f5cc1d47ceb80c0da297e389304223d3a5af835dbe63c644f55fb4f0dfc27d9c58a1f9d04a78edd132b25c22999405be97d61517297b9ac2e689cf2e3ef8cfd3595bdff9fb95162efd2eeaec1fc4b4048a909ccada78c024758e8223dcbf1ab3661179290e106540d127f42f83469b9d4d5eb46eef476b5712185507d7cfa0e62b29d5941545852d754052888ceaed9bbe66f1c4b8adb9fc82ebd39af39ec412fc74176723e57ca15d1f3e14435880e9bc3b7f4b659991ba1b57a1d04480ade740443032eb6d0a637c05e3a488bc55436f80d61bab8d3c695e637b48443b071a94a118128a89a92f8bcf6c9619149c4d5ebb9de3fad7f5c9b7ac7718b9ed6465f2ff58330aed448cee214606cfba3ba02e61c00ce511f5e70160d132e448b88a5b5da624f45bfb80db03f0624ea6974049e85fde0f4baf2c0afc82ea923825535a1610b6cd370e90bdb068f6a766182bdb249f45df7a4d5fb367a1c2d26da17bfe6abd8352e008bdb135fb18b89bb2ba166efd98c88af80ab99aea5cc1224f40f7285f743a5526a7fd76b9e0924a214d21d0804099884e494f9cd25149100807d260ea46cd472da5823fc5b7dc846727834d022a450414716ca1bad4d58c316068df6bc811cc807cbec5712ac999da9bff71a121855042c43118fd9c7c3b91021efbcbe90c95443d6d9a1cf9b5997cb717fd9d879fc868d8def26eaa7209614cf7e7c6e67f0f44b312ba942e63ef6452025631bc93e3b2b69bafbe2d8bebf5672fe08b6cb0705304a45a59baca85567855f1257aaae47ea96e370b9ce52793662a4917482a616e62d0fbe2025f5d82e94c6fc4510c8b880d0e141aeeae800a09f690d757c6a0e7810cd2990154de7cae7d9391bbca4a05115c53f43f7f1a40e07f90b68e5df91e3f43bfd734dbf2b6ad5183387d822cee004d5e38bff690b21b34e82ac58507c9a3a03ec7099d74933982350cc73e9c18f88ff5546e39d03b697dcab0da10c53f6f4dac6c7d6a799417598061d21cd4f40d64dabbada26eb842a68bf044ec221f8258d80740b5131c2c166b0a9f61578aa2034c53bc46c45df93fd6ef3f40f7b1e8b5f01bc20cc00e743d4d1b244198add2eeea8b4e4d66dd4a0422aad5b36ac3f2a6be276db9dae1ef3eb88ce3b6ec43bb2e605eb32d0b300157d430d53a1c37fd42c02cb0afac76aee32b22683c18a8156b9b2bb61099573687a95a68e8a3ec9dd3a56e8233b454cb1223e588b20b43f3cd975d2ae361bbce6f6635dc922d3e1f7fd3cf1c99d5150883831a066cb96e3a93245612970d849059da6cad204fc8922ac95bef6ca46797124896cb50e84cba84b1ad44bbec791ba8bf9f035090bb017e26d0bb176adf7b2a4132b03c3bc898e974b39540daf3eabd616880ace12f4b1d8fdbc83510af720b34b5f14e8aa1f2aed3e02b5d34057150b6a6a2156b00544ed70892cd68a3371c479cd39e32387dd36bdc2c2e9e96c5277adf721e6513a31ca31f9970d7356503c987ec64ffc080473a34f066b4d2e672f2725a7d5cad55ce5894935fae6af6818f502de1db5eea69e2a9963f285497c07ad39d9f18bba0d37ec88d38fac8b43b87edf94b8930063c460ae438d2b3c88ca1bb31ef0553bc16353f8bb00af15eee2cfa6bb90e7ead9a084f3c6149eace7c69d38c17b418c16fe9d2704c7baee132a9abe7800353d6abe3dd1fae4ff70c02cb21d83a42d54aad31aea119a05f26efee89f6dc42310587f0ccb94e71f2de770a232ce1f77be10e2b79cb1c9614eba55d629144694c6a4c1c77e7c5af2d2f28f52689124980a52dd08cc8cbe7a9640a4c7fb36019408d5e605a075098800148fe0815438814459ee36e6d6c2ef1520a72a504ce2f67fa7c10991a65eb5445d8a849d6cfced4a8ebed37b528a8f4dd11988a8adb091a7aa10b8cc832c73722740010899b3f3acae9c871ae4943fc637ab52f40cd940a64c16423ac8aac261c8d1b70616a4891400da1db2e752dd80592dcbde1c05a0456119f4740c20f104e10494a3658d7f4ad19918d420d241e354219e5c12e18da32da504eac402f806f79f07f35b295dad7a3521120d78b9c27551f8ec792d8cd2b3fe57661426f075e44e1ec13addb30c5b24049d00b56677613476f4040343028c05d87bc139ca91898dc05a059fc387e068b848482552878131a6333a7a4c40daa1ed76f783fcc111bb8264a24385542f95aed47523777e52250332978894b93866500f34ba2b0d3bf7a8fabe5631092c772f370e312b7f20aa854b25cdcfc90eb24b00c0e07214a1442103632f1b05346743eddb6474eea94305908e4c779e76325d5b332e861db41354513ad438a933b4774e157240180d3bd1b4469b7ea5fb63b5ef7f945bc9a75c8133443ab94593ec3f8a252c3dda4c005ff5257b0448069cfe18b0cbdb688a3194453fac11891ea6c98b54c7834e395c1c710d979b12a659c7bb87e3d51ba9ee43365896b447613b55c9e2d4fd9a2bd929fda928d4abfaf4d7f7df6d0576eec795938c9db74adf05431ea53498a26e35ccf33efc07f1fc43e29a2f9e4f19a346940296dd60efa6ab0a1286b0ba5d2bc2510018bc4e860f8c1e24a95e7c5b39092fd01ceb8573393fb83a4a370128a6541dda3dc424d3dc5565d14749f269a1948e4cda36e35010dd410308a830c7100ad21e51d700009120061b03a2323a8f1c4c99f4310da685790bf7f3848b56f89489c32a0f44728d818430daa879b74cba58b1a921ec49d9333fa0ec9819908ccb82e9b310949299d1dc1bb75d9c6707aef6810583c59f518aeae77d0401f7801d8adc55b118017c345514daa2784abc6b1b38c9266eadb82806c42182d4c6aa3789b5b0f3861891d499e054b684c362586f4c5ef2a42723f8494c909d091679537d80f51e57a6ef19fa2f08876d82122a86c00cbdef208cd3945fe9c71939938bfd143f22083df2b30524b9b1ca265b491690b8b142305b52167647f93b172118d23fda0d832736e594e5839099d9083eda12a311deb36b762606c90087dde78b2b93eab95935c6625bcafaf2a153cf1f7b8d85a1b0392218fd9914a56806b1347743dbb5de6e3121286015a541b1a5406564acba2f01c6eda8c23f055eafddddf3b9e90c4919b8636ef0220a2026f08501d864a8882119b8ad1c367f4361a58daf3386df009772311bf5878a6117952c91d66e6b55ec78b5865b4c8a58668698f58400163b7601c1fc5f3edfb84c06839ea8294824c497a393d89062e373cec2868525105adc97ce42d3441d685d7a191f12c68b6ed021efaa37d61dad5a815082325c4fb97f9a57fe23a053efe5fd6d4c3fced4113732c0677627280b3063da3a97b035f8f62eb6175f53e5fe70942e189c60c0366e11ffe3be2583cdfcff9cf7c3518e144c0fe54bbef44786fab8bb75dcccbc560a7908f2245cf03d42c048f1832bbb89047be6face2b66779ea79996f7f13c2b8f8cc18c1cd22bf78e588c887fc39c5036be49b0ed20596a3a152d1a5f7e8acf0283cd8fc361e7fabdca263495014fd8c8e09148f07ad98fc8c4924b9d9c66f5a5c798d1478f4c22cb2eb828be4198d2a6f073929cb89478d0d1d000f3ba868c331e1a3afadb5c8e8940a8c35809ecad188522150bb57f30d24c1f3b4d6e0e03eed606123f4934ed335afa63c3960872e93b4a3b90b3c2be5202db37dda906fcb0bce2475f70337044374bfc297f8ba9a080942841129af4c8a6bc82428621d82d23641f46fda3629c779a5e8ff6a4544fa1c114b98090e6fd6fb502c7b3ee2a7806c6d2f6dcabbaa3bcb5b0b77f442ad266e33e5f4d02a45c921980c24c1c78c75aa97eedc515f0cf6133efd92fbaef087722e06cc2269ae825d08320554131e3311dc1e8c889a516b9345311dfbb415552891889180a3d31f5a5b398a49b1f85910b5c58eaab1ed2abc8aa64649f2085f44dbf843290bbe8160f41b0d9e5fcf64d4d7745dff3055698f37f1d2b97c5da57169cd8c3e7c11ddd3154eb072da9361e3334a1d784ef5c8741308bf5827573c0c9b578bea179637cc98750a3d073e96334ce252fd60bd55c4b7b444eea2d8e94da47f8eea4cc28dc4152b24f951e0591da870fb0620f49151a8b50406d1d9c84bacb6286049c5efdcc3512fd738b51ca57be2448a0a67b32fd75e1b24641114d9afce594c27c70ed444ac88e2dbf2509366f8db1a4669dbf162149d4a7df4c6e1dd524743f78a9a70f3d3b7b0708f70c06b9a384620e50b31007bdf2782527ec95e8e5985ba9831002b8e3ce53c5277f1c6bfb6ab1afda1b7905e99fa7674096755042eb863b2d15a550de658780c6493d5094c8b20003871126ff452b04f1a79da58d18b9b908cea6cdc0cacd5de62fb78f5eda22782421a9e8b44c9bf8c8456ab644965abc3e4168fa79e19725b66b7d68e7b00c6758cbba3cbf3a4f0119dcfdfa0cf252b074af74a5e6d289e80a2ae28d6f8733ac741b88b942e036f97539e15f615227a24712468262a90fed2e848a2f74c37168db20a8826b766a356dad125524f834f8d11b2408e4ff572fd8c524eadc94b26c774cd0371fdc4c50db55cff412df7c081575bb981847a5569e16e7e193686cdd430b4ce284aede90536834d3b75879cb286d141002474e4d6acc7a76eeda6c51d4bcc9b7290efaab639b517ec0a70b1b17c16bcb775b21178f067a479958e402b986a15b8d96f0e2a6b498251a4bfdef06c6a7958f720950e9219e4fb234ff3819e9b2717874628f243c304c5fa04b0b99a26e20a4441e69a1abac70f094c7f6798d5a4491aeda1f09a998e5a9ed6ce9a9eb301245f478525a80b9d3a1a0fbcd9728efa9903b74910000b2afde2fa0f0182735913b95613d3448df5844f3804d2f46854472ab2a26d40f275c771ddc17c3e37368a265ef98799bed52b8516faca7b850a4448bca71338a2e849aa2a78d223a1960e9950dd418914ba7bb3a73a2dfcbb462a189e4f1897b82c382e540ab0f8081bfba8c0d6445d20ed2d4dca77ac034c7a97b57b47fa66adce43e061ec98b9cb529897c9d8bdacf0f94ef4afbaaba8cb344ab1c4cd1fc3a56089a5e5bf9c3215bfa25f4b0741ca807f4266e878e7fbc41f2a9188ab35e23a75d09d9d33a92e27e9120bc5527d0a4c5856b049c0978381cfa7379189758c18a00aa94fdd440d40935de68e095d0b3f249d44e82424868644f650c464a6bcddeb629f04942425adcca894b43e70a5a4f54c4510081ddeb2dd72bcb6205a224d2669377999c3ead9f9a2b3665b865e34b797d0e3793e0d5df389a251fbf14e9475e1d41aedcb543abb1d97d6401383403bb43d70a744e34e6bcf1e5c709409ba3177033c0e7ea2101f7941a1999b868ef7d7c86aa31ebd2deb40def7f9f660a7668eab70c1a70089fb889467b37f0ed6949e3285624005e3b11d76e23fd1b0c9dbe0764f086325e4411e3fc2e89397b392e5669f81a5a16031b10caf367100260db4540e502f70a02369f6c00a3b52b78f948d89152eecd6910461863a2ea59560fc7c1a8108b34e6a0a3320e7163c9443f9b891665fac758b47721ce168be4a2cebfac7c95a92afebc39a1cd8654bacab85f70621d29fd49af74853e5fa7097f7a831f5e9d6456908eedbeef67945efe690fa91c54c58465f8fe9f2228f7f9ddfe50739d8364e61a464587607660f79fe6a01838bfda2f8e0e428a447c3f136a0fa9d1620eb2d75fa8913f591abbe8e9d7f54bedc3d491a0eed874aff783ef3ca841446c1b0cd95c3402cb6041374e07cb1522843aa36dd1c3162d548833662178bf656f7dbfce555347e7de0f34c05acc05289119ebb027251b0b2eaf1c7ace78716e6eaf3dcb9accf7ae8dcd4fc11eed7da978347158a43f8a4d3bc6eb8020ce29a4b590627b2a5c401424c5ba5dbe54f6e705e8eee2547e92e22e4e38c72d6ca0ac6127f62fcc44d52699d9c1bf65be7a83bcecb3e1920e26254eb606aad71b0ad65abe6fcb699b112f9a878f7770778a19272837eb1cf99e82a1e5a6c86a3edbcbdf15bfb147f995d6d62ea549ecb7459b21484a9359bd8973cf6390499417628cd17372922d8afb9d66775ddadbd66508c471f43b33fe90d9f47b2b620a2d068d095f893ecbef282f5c69a0404a18f47a22bed2c15bf12994311aed87a4c37953d6683a69e88ee421bab2c8b3defb74e128fdd784293910f1a794cc5f5e33e028180d0a01eb6829731c0f69ebcb699896e075313b9edd49b4d6c920fdad16dd26f17f73c9d9e3128c9860193524723f84793582dbdb0e2e0828556d3a082195321a2735ea29a0ff51d882216e5866f8db85a1fd2be57289dd04dd1debd02cf81fad0edcd7921772ec1f346b58d7dd1b54c911597f3c5ff8a5c93f043d62db1520d3f1c96545f171a2c11904968e71b72a0a800e58f81b954009b9500bc98a11af25fa5ee0bb438564ca4aa0056fd774f4f9e2bb31204edf8dbc6be09820b5efc4d85cce63c5aaca09c041966fb13dd6df97cef1810e38225c2a1e416309617373d8c48536f21cab184e5720155fce4f387f6de80b6d03b54dc647c749049ae03d80852715839912b844917fc09b4f328b4cf5cbd60dc83a376283405617ef80f485a9bca92ed4d5d962a81987fb50027dc12247cf8ca7ad02ce926a6095863943f4c9c3c38d73cbccb81abf4179b248fe784ea8360e4df735c1b08d60f990df0623a561a210b6a3a9bb75aa593fd2eb6938d2f9079429fb5a0780ded118fd83b4a7b7b5205cd2bdf2042d8e8220275348008e90a6b69263bfb47feeb59c896f1ad592e41fe868ddf2cb38fdf991e5decfa974292ab9fa5e112f26b4e7ca33c6195b115daaa9b3dc42cc821709c354c57bfe739cff95de0f3ffbc4fb3106e1cdd96e6773872c6ca5d0216493d2cafee209372025e4203fd1dbd27ce0d8e6d40cb6bf5316572127c0b00be3faf127329bc5a8b4679e75df4f95fbf170a609575f7a9be1fb717e77656a707cdb4412bab5befd77a53965ca5fac062df55581f8723907835653971bb506bc3f14d38e4a3c989a35eac7fa870fed68ea3ac9c75d9ac48fb403f02dc5a3fea36a672bad508462fb4c22ebb23eb9e1f5bf6dfb38def0f7fa3de679f7662497a2cdaf88dabb696c5aa8acf8fac08636cf189edc8309d25ec92f50756aefb6a323b9ee32e5a40f5d20caaf17dac9b09b8b68ec3e93e26470fbb9a3d32902b0fd47ed456809a960322c2df1aa4c98cac91b2e24cf10348a467944393c302c41e4ce9a09e3aae178aed3216132fef9d1ad8d8b83c2db9fe9d28077a4a35bf9e6e61154645e5c1b25d4341428ef2815174b32f0d4143a69443cdbdda6d0995f67f47539d8620b848780b45fc52470f798ee519a0c06632d6119f2daf04f92ee4b49f32fe8a890f4c07f91111166bee6a2d276fb6abd267eb95ee672ba943826edbb353b68afc63c7c863a4506f245e22e4ec93b8357c491cc9dcb3f9ac1ebc7610d10eef238ad164114aac9f145a6410e8ebd27a7918f5f390b396d50f17e15f3e2efd345f0498e9e664e33934275e14535009e9dac4ace3ec6463d82abc19f2b15411ed50a212280e6eb6d2dbf51a37c8810cef9ef1638a8da934546399441aebb58fbd22c64d4a3f9f292e631cd1c2a437a6505dafe0290bc20b61b2f7e2906121deb29aa8e5b7d6769755353b151e9067bfb834da0fc596d228dab59e4c095af663e682e308fb9935fe2543e5bb8996d01c37a5769c75eff83a61514b5d7849003f044ed765dd1f540983989d5a1d0f6c0da8cfe8737b2aad5b3be30c64d83fab1cc788ca63d2f5546b196749ba55fb41b3de71b56a3da87d272ae15e874851c2511784b656de16b955d9e2449a29c7f2ede3824b7063bf46e63ff9c4bd7a36342e498a4eee0fec33624ff67b2a7cf0fe7c450d1004beeb0db46429214dd2af33a4cfecdf3427045d59610c437322209269452c6f2a389a5498443b0ef5d2efb28a1fe89b62859ee2342d450320d4faec979a137b2aeb7bd55ca7673824d8451488604b530471eddb070ec07dbd504e25d3c24cc8facbe556a5f4710602dae5f1594100d492a49a69d7f53db5891d284c7d899a80e59c2c463849d1f08a3b8aaab242e796515446502aa3690c7473ec5f665d0b81a068ff6da7e6dfbcaa31002e0659803abfe3fb592f970eeb53c2b7e14a6a2339d0a9c35e60b6772971a862a3d68d86df75f2d28d9094b662744c05dcc406e5aec8eadb6d3e89d6a3337cfc71aee1a8c196f631295b2a852789d16efd351d6bfc2be32c31785bf43083a8fac04804310e812b815a52ae662a0b8025117e72ce7e47201ecc00d1d81ddca0ea866cda914af46bd3f1c5f2b1044eacf69a0697482be69978c4eb8bcd25126b125b2b00bcb1451134e3dd2f555a7c90c06614d448c77dcb2817634e35b0a153cd650f9b40fb36b51b5aae401d4c9ffe0f69d0151271bcd835003dff4f71a52b81d186331ca282bbaf427a91ced97d1fa14720a17edbde3c6834d579eded6d11e2f4a0272b8bed5c33cf325798ffcf416ecc3f30fd316d36b2d79b6e6d8d934a1dcbeac6a04e01e441eda054433f8b5aeb2730aabd7295fbc49f00c59d0d83ded0c68853eb20a1c115b99527496ab81714fccb072d0000a70dfaebf8aeef89184ba5179f6040b354236b8d984941447782bb667b547529d8a21d25824e699f26b0a9cc66f3a538547e9518f688b5b24983fe9c75a41db2f359852722856ec6ffe1089a9f5e5055ddebb8424b345b229e7b883f156b4e0e0b5c3c9ca4ce47ebd099c6cd37de5c2f4d0050ebb6557865691536cbf559910cee956bc16c4d9055835b2f71694f22c0eee403e5d973f447b9d500afe02e346244951c9ec5c8b3b99b3a91c1cdab3873ee2684124b7a874da078ef6f885a49a964afd9bdae550c3b9d712943fbd16e676af380ea26b4b111ed38df70ca66c4b38f4f66555edf168a1cca85a753463ace7977b394886bbc9f16c26b06e2eb77e17d5ba361164d2412d20ff7ec7642c27b9563cc3f77b03af23448e221541e41c0fbb918979e0c58bc38e516cc182a7b3943ea1c52ab3ee4747f42098c8d93c141a801342178157f4ec82547e5cdb950b9b6d67b45c00c41a4166892c813632f03b1e7b3aebcbc97a6d3607c5932ddfa2fc137c3e78d596a4092e41f1db280714c98d2fc745af40fb4d3127bfd90061f3a30a7b088f5b0d4f4545645779bb7942ff39632bb5ef0f2a6ea40afd8b125a8e5a57230630709ecb778edd4f21180f082254f1f7768f3ec0cf4a155d509c4620058ceb32a33c429925dd5fed033f3660c6cda64cafea0018948b0a7c2f300e9d96536d2145858951a3a88c972a5f7870d15b9e1b2c73def13b2f0439d12991d8a0131b0aca7406d59357afaafd7b0a43c694c74b788bf564f485ddd9656017028fb4c4f1e168cff90731d8175c6bc9454c02abe0f4c40747023787c6374d159053d8866db1d9fa10988e4b744bea2e3b8a424c99d08341f1dcc07147ebb408a12541ccf56c0d71e617270deadcfac2ca906eb34b007f58c8a9afdf5307ece5cf8f560b62e691f4c5c1e7145d32296686a5b505213bf21078076582753eb89169b6a2b71a7ea9e7de187a1bfc810d22214ff0656390b4b77530ccd3f2c5658e90e33f39c337477bc888e0ff2e4b012a33be06f9e09146b027b9d0b5002cdd0128cbd02632ea0977b6283dce34aec80221e61147bf294134bc0ece86e3c30535199b3cbfec1696abab4fc689d5d3e207bb33ed92fa3fbe7d8522e1c1f6637323e47c56d7e87ebce276550ef44a3d64023e1a1e6fbc04b31db563f6c2cb9a6af870df1b83585880db7866879c12d281926e868a9438013846a6d43baaef608378f41e7736bc1504ef27910332ff08a16eccd5f772814777c91b035712a8e8ccace23624d7dc9051bb66f430187a34d40ecc5d40ce4cb77932ba4f09324c5cc9da90a5b099bd261ea997d154951a1b5ce39c5ba34acc9ef6a795daad4b0934a6c7b488ea0cdac2549ceba731512fcb19e774c1280edc57a4b6834979833f2551b057f55ae7d165833495dc99c9755a7e5622587623f27655e9e08df498cbb02a54f12a52bd09319c3ea3e731058d902832dcddbe7a88e24067800032c306e71f4dac5d26fb879ecc0425de48d75ae3651ef1d3f04ee51134ed75e69c194bec52c18d2bf0e55e9be3fc8d48fe9f86d9ab78e793361d44e72fac0dc80f6e3e4ca6841d20b9e3e8ab6915a6a298071d0c0205d8e406f59ab333cbb64d88b9a12b851f9c1d1215a78c9a8f50e3a7e2a367caee0182c828bf163f14bcfa8a2c5a3606e8d63bd92be1a8df20d6d04f534ad197713e09e2b1f1aafd470657b2b38f6361de58bbc9dd235136f809872564e03ec956709409820a9ffb3286fced55c77434c31d0627b9100c699d79860e66e49ae86a1e3d22ad2508d7f4e5fbea91c97ba45a7a112f1a80e94ea1b1915bb91e3610711725473bd52e3891113b5aa0c20442445037d17184bd85474c1d315825872d3d9eb144bc1d93d942e394c5c21508e19166065c1978d587b947fc81f0bb3cf1622e4db76e70531a4482c6ece82f6f2424445ff4cbb27ee4a2832279768bfa7b53ad54b5049bb785fd0daeb50d77a78dfc259deffe4c4c1f18ef7540f262a011664fba72af3d378f498a3af148aadecc97027c51ddd52bad3ac639f9b574f76e54da49559d54fb36365decaadfad0bb911c74ec2f1d18011cbd94e186784d1a793c7d1591643ede8c71a7d32fa8b7bc6699de0276370b38e5efd6e4c8ab028b7adad756499d7b144e70b20f2910b172fffde4af1b6fa26933a3cc02c5d5ab297f192373f8744330a009fc9dc0cc3daa464b42e79dfed948a92fac4def7f87f2b3ff637b61b35298d504f74739ed2b603cddb493663400e256db8518de5297203e537787ca84067cd1933564e118cf2c0fc088e7f8143eaea3603a779e59c885ce2d463607b325db0dea4d38b13424e8240d176bacef6157ae99b2093edf4aea397ec029f44365140494088110bc1e3984cfaa359eb44b6f4a2f73e5cbf70444d20c37473cb2c56cd62a01b3994f6fbece27d2419fed29f7b8b41d364888fbdc87285a303f11877e76628836dd1b1698fc92196b418b3803c037c249c7bebfef0a8331f3432ee3b3efb8077390b053c673e72b49302e56d0110f68d3627d5c315db8d6a69806138f6cea500fa8088b553600d8a88a2c0b38064c3915fba16136d3496e1872e282afa4f65568ac2005d53bd2bc220842877fa1b48bac4adafba635208c0688cb236249d978b46ba0ebe5e8e1db23b887f0917d7fb25452093b443d5a94ab9caa1ec8acb5f46cf81484b5c2ae682703e884e11463076d23089d69e1d4cd3ca824d39a15f4e9f7659f6ed17759f8e0fbb0be103e56943937f57b5e624fe314b525b4a2dc090f23b7fbbcbfd3105c15655bf2c14805f44bd82c9ea58c677214d84fd352b984a283fde896134a0d1600e90e1c29bfbaa1467b332af4990e922da96b7aa928cbd4758159279d987a01cd86131ec0f22c45453264658d3ed261b9e0ca2d49c5bebe504a5dbb07f5ac0b948e250bbabf38784c52caae451492a4bdff316b868f420b28753caac156f453e4b63e1a620e887caac125cf62f3b6ae680ffd8e51cfb388236e15df28e5a6f0b4273c1de77f26cd7063751cac464b968593488283982cd99473296806398834de95be8b7993ef35cceb8581e1873688b31e44e419a0bb61f61c79cc7996acdc99ec18ba13df76e5db3940965e7d08e81f7b2621c8bfbbf2a79027b0ab2471852563ab6aecbdc2abb16c0587dbc6a668fee683cc11f07d9bcc63a20d712078c3a363b246a2a3afce1f7fadcb1013431025eba47e8f1705051d61c53b23d384a2a97bd579715cfc99cb4b637c422ddc71d12b3a4e4626c4e77e8ff3846b026e9e040148b3de2cfbd7137cb280661d5eada7db7dc1da3a52ec9371037bb685c4e7d9bc972ec25cbd981451987274a7e5a34e9d8b7a5c05131b9cc8729794099e6b2ae7d889d4e0f47dd05e0c84c754a5ec2399a004ba84ff107cf3f8cdff2f7b91bb0cc908871b5b85fe6edc0e22869d2eb2de71b2a23e67610258783dc88d2a8d974ac7c6f5d8deef71f245528c824c56eccac6b2b1ee2817c12b2c7dd4e6d25e2213d29d19e509535e9a6002c2d2f6a4e0020e74219d9a6cabc30ba37b0cec0a44db03d7571f88a7e45c64a25404006a9006b1865badd90257c34505adca58a5f78040297e587160227d6053d17372a7a18b6d602d1df3831fdea293e3e5fa336b5816b96c40c1a8120e204c28d67f87fa5369cce4df2ea991897c7b46fe94ee640d5bddb68d37526476fea72574a2994f5095b4ff8cd21d71f5035b2698f2f11e919dfe3bf4347c22df4350c8671ef074fa0a772cfcf4d030595ee45e21052534ef56460ed0482396bd28533cf1b81dadcebd51c9e918a3b1cb1598c8d7e28c8bce952f01fe0050fc6f32286756f3273c126c6781bbdb03b6a9dc0ba79b423812fb119eef6dec4123689bafb9f8aab3b7b797346b42dad8cd540b804d9d609ccec5bf5bc14216f722b12f64b3d6302a46bad78f245b2b9261152d67c9f5637878893595b0c574ad972628d6316abb9712aa27992ce46035792ba0c9604a733fcbb23f1305ef8922510e5927af2d530d9b110e6b50c50c110f3baa057ad00ad4d94dc7242fb0f7a1a4f793e73847aae21f0663da776247422a104ee2fc61f4f11f1e41f757360cd19444e291837ab958cf290d9773157b5bf75b99cd5d59880743f4b3feef400b76d60dae898594d0dbaa8f1ad540337b2f268ebd3ed90daa62bf898da4a4f8823e19f3b69bc0457b383688f7c39b2e99d2554b88a604ac7e0824ccda989ca516f3b8150f38a58e4a4c592ed77d116c6793e24c0408e760f611ee8ad12ec7ee180527dd9216c212cbdecfc6e7b3789ad519c0f50ee7309e0ff211156241b10f0ab262ba6383b1152b90418b649be9bcc5a96676bbe9ccc4d3f3d2d287d5871ca88bbc902312b74134441ad25f18b95b8e1798ae037be6d8e43fcbc53ddf0c33546fe3a2323436910228b24464e61b0997a3903227057b1c7e1a1b0303bb335d1c3f20691c19fb6661a97ecb02dcb05557d040153586745d8895d13633318e93e979cc8afa7225f3795cfb22e3a619a22179807dda76018af8cb317f68560d3e72bced12432b819b5b3604d7cece0ad76121a90866b135df40671571dcb1df5103f617a1a0be35ebadb62dea1c7b33517751fd62d96188c728c8a0c46e68da9ba064757cec00e4b8fc2864b0190cdfc8e582595633ce8a5088990ef6ea8963b6731d595e9d87ff5c87106528a99182705967c55ef129176f0490d640a8c5cffe5167004e6d6e252daf3da288f1bc8c2db5744e3e3401e3bf2250e55091072b4c40f3ae183036651c7a863d280e921790d4411f2bf180aee6375bc14cdc5b6354b6fd794ebb61f983b4d636d9a24c125ab03e722d7c53b70ae573569acddb459f675a3f4b493c8d53880e3cb6c2e2105b8e9aa33dec09ecffb2cb019f96906db472d66a4f21c40408730d8eab3e04d1fe7461c2a36c64f82c29217a77b9a13731db1060ac1771267108bdcb624bcc9388d5b0b29e677bb1bc4deeea3dbbb5f9e49046483b0be55663be718d04a603f5aadd5221e424373a431c798882e71cd720a3f7d08d9bdde76625b0f6432b69481c2c87c896f0072c77c60c72c16201dc9845a9b44a27e20aa3180c5e3fc5a533aaa778249b9f93978b4fdba3531276095380a594e463813e1644365d85bbe9b519a98a12f51fe1bf0c7b3cc9311a002705613234953ff5840cc066e0f0bc82054174494becf3a235f0281932f6385d81bc1031bc09da3cd3693ed6d8164d284f191bf078c2f140ccdf3819ea9a341bf6230908f4a5f3c46f1c917b27b8554e6835cd047328c54e0b707142da69d6fdb9580cf4c380b3c66a64343684a9ba9931570d7cbb00d3bcf233a3da3455bb0c5dfe69d4882021029d3e7fb2227aacb1d635edd6844ba375fe8ecd443abb4dc1a12f203c06ee5ac35190f55fd1388c49b1d08edd9a5f614e7888889cde7097cf1a8139890b5af164c388e1e46cc7fb20817363ec8436ecf0696cc5ffe08a6627a27fd9b81d518dad51363f4463b3788f725c6bb08f720632538a79dc301ce952f46c677d442ade98383be1c0c47417d35d60ad3a762f7b70e3d640235b6cdb2a26c7ff4e7f87667335cab05b8084ec24e405bd1b9da46c589f26c705fa403ef4128e1e1c87787b06081891a311b711dddd209eb5d82051a8da7c6312c6a0ddd015f524ba5c1ff318459fe10b04ecf4d3afadf246f6952c91f42e3557dc916f20e289cbbb39c9e9540e417894d3a33b16a24c681cad7067453c31b2b8cd10d3ad7697a72c344eea13fc7c5bab907f5556d15cb7fbba4f437802df4e20c991eb4ceb17c0dd1e8373d4fe21c1b82a70099d6b9561a1eb839d484fc59aacd842d4a97a95014ad3f092df51a51e191b8032b10b677c36d5823e3593a462b59508810b7c9b968d953ee4b836c0531701ff3c2e02f819b7666311bc21507b0c24ac3e637e3f9bcd239c210e4e94c7ba050fdf51a0e7e403def9a56d581ede41404c403fbdee9fb91617395dd7aa891bfc44eddc9e3767a0a60f9e4f7807ddc240881202523ae9605d2a400e5535d7a0ed2395a4135f7874c9c12f400f1964bbcac6747bd4f079860a6095ea9023ce9da7bd414046e9db702195c3736fde609d38aa9132ff6fc0c94fa2fd47ad0435166d6b017094bdadc1935474389e5316a9f28ea4f23783b04f932898c1c289d75be2edad3517806d1aaabff29f9e47ab3720b798d57f6e67b8c208ec4ca38e82fb6c1880d2584ba1e712fbf454c7c6506754707747294e6d70e3df42c419b7b657aad12dffbbc93f44c9c7d3303eb2e6a84a72b958c0c6a050be95ca532f3b434a7d05ee98effc29259c286dd8f0e1123ed8e7fefa122c01ad4f4d97de8d00c31d09ebb835230066a55091d7ffa77ffc00296e4da18d8042535bbb96008e4eeb73d13f4da8f6008381b39a38fb32649a62f3278b0c2292e88429a23fa6abfa5ffe6bfe5cd83d38245a3fb05aa737b0f500429293784105c4ee87cb336f9c348893bb52ccc385eb5190e2b5298a70467ea1a8e0f4c4ca258df8dbf7e289159eaf7d9a349b99fb80dff3db4ca20421588175ec159cd3d96dabc26c3d11e6e1f9c486fb0bac740516adfaad78dcc4198fa431fa30d54f41c56c105ccade13e905a341c8d3f8aaab538db1c90d0ca1377826c6feee5855aeb23829a6c4164a6e8683284e61f4c206f2e290863d82b2a3ee3ea4ca6ce6ba2f8cba0f6d31c301dca022d49f75042b0b0f897339e811986d45a6434f51fea84db2dc5c80d46b403158945b3e0802cbd8b0024c405d2f7eba33c21b568854fa2a04a4044672c304142b554d683c17da1089f9ca361828072a9c7994411e1baa4c09d7750d15dea69a3ffb5c4475c2ccec240128e877e5dba024d965c7b9a080b48bd0a687facf761cb119f258413e3fcd63417e8287ed847666dcca99edc01c14ca2e8cdbe1d5256962156ef9fc6b821dc839c41ace4cad18fc24091cc4ad874b8282c36a15f3222b5728e02ba305e1d9b24b1e83db60e21b97b0c1d081ddfd86c805c0ec17ea6bb482db2536e6db3bbe46d8cdd7de5b689d649cd33f8329db6ef0f158184673096a06081a516ca2d1354ff89561fb76e5b50b215cf717d6adadc978879f7e46ef9eb73b83dc3cfe79235deb0d44121202852b1166591b3b896d48a744379c6368c5aa736a7d3fb5f0ae12cd3dc04bfca0638ae4af66b29d23c9cec73c285f70b7bc195565108c0122aa5555bf8e2553c4b58374fb82a9f5fd52e0a9f17f7ec5dd976cb13a5c58ea3bd1f2c9b1d0a1bfd532cbc04325f0e622e9101db6790bbcdc307398810b88a1d16bcb3ce37463e9d3299bd1bcd129a8003a8a4f9d9836741cd176f16ab1a06052817a087c8056c0f1df9109af5020dbaedea4829d20dc2ebe933c3dba1cfc6b6247fbd6b932075d4a91d918d875fcc3e40b53843aba11be6e1a2f47c6925f8ee7cc1a1ea781d1fe612cb981e9b94c889c0da0c8a15b75219e669690990fdf7f92fb4b01b34a07885dc626d0e777d6226e5915875bba06ddca34eca273e87ddeb9b9bf9c9ab1d4386a0a0dab32e7c39111467e46fc6ef6618a81d47437def3a3a4b32bb23db72a23aaa716d14ceb2bf02d775b9a6c52d763905b6196ccc1bbaf84297ea75033a709516d23787ef711f43806f9ff9dc46bb9b4e035f0eed4dbc81e31ca321b79a79c921bea227dd9903cb6d212ff2d7adcf8489e2e406356c53cc5c8a0347131ebbc78eadb2e6bbb2fd6018b9dceeb2b6586f3633accf803a5ed3c24e60b5685ba55a3c2dfe39d322caa0894242e27ec3f3e186439c8611149c84ea12d8a42817d5b21a1191c00dd3c06c15906c129398f7b5bef5afe8ec3b44480c267287e34db36279e14f1820e312e364fc8c4d6d0c44195af9bcbf7ac72370cb61ea04b51b86800f30c9f5d9d68d5e1fb1cdf5d6401494f32af52365bbd8290f00b34aeece06dc24d45165203798665d2ba52f5d317b6e9616c3af068c845a3a6407a7f6d560ec9cfdbad6e86ec37e47312c7dcb5483ee99998f6463b38f27656cc3513aac3b1d5a794cb37da65cdc286a3325f8d134bbdf862e299fb09b05ab649ad365e561c5955846424884c4b8acccca44203f243da11a388c3e2ba7ec679deaf016164533718a6120e2d891ce8168681fb8f101a421b4060c5a56e47b0ce0096cdc73c645ae81e2ca2d45622c283107dc3df73e3c371c0075f5de84867f8bc7a77a41d7363abf930418a912eab33aafdcdd5ac08969af38584a2ea4fd8fed36ee4e56ccfe7c0dbea6c6d2cd4a2bf14077635e0d0f937bafeca16ddd5966e63d4d9cb14a078dd7d1dc4f7bef894884bec842c489474530f195d1f62e86ee46169da998090b8d11a7aaf7ba401b5fcf3f0b025dec8bf460eb72ac6fd67a447ec23e43a3221250eb5be3c00ff7f4e4a820036745dce815972fdcddd90ae0a563a99191796a6e3e9f7b4654aa29d9fd9b155039182e89e108997648c5102a7da99ba99003bb81306e7446513d57949e4a929c2cbe3103d5f2eb1a750f1ea13019c39b4da8221b1f0f713057bba578f15ea7566feae838b4e751b2d1cf02c11989b2eb4b8f5d9ff8d6212eb529562ff984758207a04b2ed82f524e3d1314aa5a2bee5213280cf6002f0a07ffdcbfa89918e25e2fa595e5bcfe607e1f3ac7a4d8e2b7990d54578ed5b462d433e683990b5555a9b668197a6b67bd610a816b47095a98150f3864286602ebb01bd10727702f84e89957396a1a01b6f0e182b3bbee65f138a387ade4f3ac4e994077148e4ceb22ece169575cb67c8bd0750474c19b408e1c8b2efc5f279b49eaca9a24eef8fd96bf796473e01bfdebf73c0b9239e2cfd171120f00f7fba3f5f88111145d4ae9e3d4765e72317b29095bd83c34ea1d4767ef7bdb45adcdaebb49fb73e60e4513c2ca7e37fa309bcf83fb8febc3c2383790cae747852b75c31c01fb40b2b048ce7b8b048a71f9541f2512552c9eaf54f1e356e1870660aec6fd651253e02382d14e8946a6c4999dffbad4c70303b2613598ad1ab36221a78f22459e188168b7cab32ac6a1e2e078f3c703d808a4c393832c3d71a28eefb6e83b81cf80f90c1407fb00c04eec13219a88797f140396832754985dc32a479383a3899e1d6bedf50e32e6e66f0928cbf5a995606fc1ad42b81d591158f5443e3fe54745e258efa2f2cc6ca4e938878740f3dba1ca21f5aa603e79094699f3688b8efeb8dc06de03fb80c02edc1320cbc8797796039ac8c03f9412843564dda94b4f52758a9102e6682507038563db0b2e35c59da4a5b472257fa3a10a9925fa73e88546953c7e0e1571ec02d7d325473fafeeb2858988617d7c0db1f392396b996d2f15f0863fec569cbb610544a23b817580f3f1972159396d64b8922aa7e2e515281f940c75327d3bf2d11cf00284993723e45a5d72c2e7a35acc76dbb44c9a87fbcc3ca3870f58048649abf71907e4e32e94ef71553d9473525f8ed8d7969c69d8f9ce68cbc0f4e27da5ee870679f53788220593bdd46bf39449d037ee38faaceb602d73568d95f55b9da3903c5e69a4ab9d2807c5179b5c76dbedbd14a1466c5995304c618f5660e41baf27e66126bccebe3df29698f367c3d7f6aa4b98c1b1c012df572184e3ab590de3655f2c3c18a59d9906aa013db3b272b30d89c28bb55458dbc2f39326e5d3b5267115a8089b79d720be2e792bab516cada435a475f0297bc3af787dc2ce343d16d6ced000fe8f5a6a15407c1928775784428097451e4caeaffa2b12927764a2962459ccc888992c7089efb95b0290c21dd9632c79c428f9b40a438cc2aeb4ef3aafd09635813d1d1e544aa868a7d24e3f614499cc0f0461a1412f5ef2b0e88ac9454ca214b001f25f4da55023529ca61efc1cb0a190d8b1367ba3f903d935c5621389bd158ebe537ff4474eeb379f8926aebcda211dd00fe90adb0eaa572b7b3b6d07b9c5639e649131f2bd7368be1acdaea0245d98527ef4304c3f6803eba174bcb43ef5d469a34ceb6de0f7df5b98086bf0120d4587e1eb82264a60780fb5d3725b2fc365ba08c88b613c9602c8125881bab49fed2804b955a74b61b464605a70af41699c0ff64c717d7dee2555354dcb7fa6d41164833de0332bacf489534d66c665ba2afc567c6a9422ca3584689939db7265e8ca18a7ce9cfd3dc32dc86c4ff20baae50e179e855765ebc5a9882f0cc76dceb5be798f873777f6a148d73d340d0f2dd86425b8955b599d60d9cc9bb3bdc946ecbd83f88f267347a1f889c87d77b586cf89116dbcf58b2fe793ac02a5f6c7f0ec2794211315f6e901adfc4d82862efbbfa0c6a63c18528af1721b1cf9fd9d9ae358d5f6c303514f23efe6c2e92aafcffa9dc744c12900f55312d1c9744d8372f0519a91699e4081ac426c39b9a22c268a104f968ea501cc21d9986088e1f5ba78d23111563af8a136861bc8686d383f6cde3711c063f049bca1286c5113882e57d5c6d368cad45f97cc22b3283e20a4bb78fd18cbbeb935609a43ba74fb68fe4d3120fa9109ebe5680a56c1ae440e3884f17afe2002614c5c65b1b168db7e32c06da0ab80682790e3541d1b8085fb096fc1c21e3216cded5f5059ec5a7325f47cf7e223cc55ae721bf0fd904857c031daa3d078b378d7c4f66a147d9532f745e28f98ed6ec4750c0ae5cce3c8ecebf22b05c9b745c70afe1e9773664ba5f6a57f8752904ecf75f1d170dc94f7a22edd02df571e076f4bea186049c0fca6bbb2c8058adbd877a37de8ef3bbac1903e2a3efbe18a03fb8a722c6c2835d5822a462057ccfadf4d4aa0e4d906ac44d24049fb1d7c039b84cc205b5b472870754063771e4192636f2287a96e3304190de7c22e1df3d1c693870051903c1b81f4859fee0675109604ce7b35c3b9ffd56baf72e4bd433bc69e09a3e28b9bb5360e26b67da4bd3163de79a2944064d84c9ac187f91a69d2cbc3a85dd3c224701a0c550bd6cedd75a117e71e615b44a27d81e8408044c34c46789bfd0240a11f4c190db671d95252591d8d3c73d148dfc97d0252ae743f28451a87126084b5caacf035f079ad7285a481f7c2d193da59c4a29c579a536a985c02b8bd4bb8c672c990975db906c527286c928a2df303e09f264e855ddaf9fd2a0694f48110467cc4e37f731a1c0356ce750e3a00de8eec5d9819292bc9526c149d20ff158093ce6830df4cd7c4ebc87e0926c980ce669c7d02c00a298d07db5250dfd9e4e33f2e99455fcef83bf5535e3f3a2c1a9c35f36362e194c34a5fd3a26f18d5349198c8f6094a68dda6461e3663c903a8462c966d0a9c0f89d756c1721b558c7df3410f1db468c2c92d2726a6c232a8220d12bcf3c8a4dda8df027ad09a8ad2217aa8e948037ee6027aa1433716225c95092bc14b200602ef87687bc4bb09c14697316c61a48ef348f56edeb85e896a13901b13f35042c3300ed7ab123952679f904ee7dbd9a89e486fcda2896ac625c042a1082d399122e5127a347a802c06c72c0388a6f5c29a584bf54a8deab540d7560cf3fe18fad93066c1790aefb8caa51ad1383db1e697624bea54b8b67abf283729d5f3b1bb783e2646e850df4e409ba5e1edcfe3dabc9e59a5487e28290e2e47761b76cc1d341b94c65379ca9c9fb8ce4b86150201543c82362fd77eddf8a43c4678285b81491be54e10fbf3cd325668d0dd13ec2e0a8c24b0426bbb36866b3be22a964ed43f1f85576601cac8e7e49651e7f34cbfcdf1cc4005037c7037853a260aa49c8d897154fe34e96dd8da477a9ebfedd4b6ad71f8d60c1b42dacf81a9bc21ac6688733fadc0f1a56441b1f0d6cac145fb10e2aa04af34cbc0a170bdfd48a55043a38e0cd8a193362eedf8bd49e8e350ea3188e515b41713aa07247636c3958122456bf95d9dd415b6cac22bbc945c33a1d30c93cdd664409501b4f3ba936647605983e1842e9e0560bab3005450c5467c30e9807feba5606e4b22bf8d082d4ccc54ba2adb47980d3045e5eb8e7695aed40a438a002b50275554e05c1ac9d8a4b3e0f8c6b05e446c815b224e3394fbca124f745f8dc106abc5203dcf2a5d69bed847004616bb214daab016a25bc7d08ef36de6046e7386eecffe09628426ef3f5f76c4de8616b7e3fff32bb1a531d16ec86bb8ab5ace797da384f6d77f240899d4a51aad2b43604bfb652178a3424598a52c72021b83057e8fa390cbe136e7d1b23699645a1cfa9db8466a19b8b6e66779d57d82c8feac9d498cb8adbe768dfb4f4d35344e7cbc342134d30b76e401339d7c471de25422200dcd103f81bae4a592d59ead8c457b96cce09134b6589184e72b4a0a9df990e13dad29ae71a509f9e5235d5d32873692ca67fbe2a0da41d9e30ad2a238e8bb9222cf089f7b8713c314292a9c657205dd008eda7df6a06275e0aee40114f7eeac838a15cefab8200dffa5403e4f4be9547078c197ac5193a4ce54d46a0cfcb764e148fc9dc6bb891c1792f0365e596ca9cbd214a634a576b28809803a8ade77e0435b8310e228ae4a468765b11c1ae3c42834ea63725b0798b104ffe35087d4bc2ec36273a8829a7a0732c277725e2a37d5f7282a5b3aadc914342119bf305364202a7f2bd96a742949ca7f45de20afe30652ca81e78dfa574751d84c3e15460a58775af6ea44d81b2d0f0a3e54feb2341e2483a3d93d18384dc69169fa61bed0b2f7ca2753594113b849ec534e81acd0b37192503acdef910b3d61c40ed4dc935603877bb892226823960048aa00c5987b013cebac9dd9a5c3112508d4e80edfbee158967fd5f4a21498564ed25432dcbea40beec43ccafa979893cd099ae1a0c377b1b37bd759d8215c76419b1c57c372d22fa6f404857bc9aa11e8d02c48f75d57ca6b8ef99244d1c745d5f447227a29c012d07b2d461d704671f267b049490af1987c43ac24285a186f56af83b613430233c1b5546b757503cd6191a0a42eb29bf74aff3f6198fa1546d976be4037ec8fd58be6b8d0f8c75cfd08d2e4e28ac7e880cb14124132c97890b3e17b0bf41c8e7f602e0fed79d74b2f148825cbdaab62fcd7bdb821027eea0130d6a21080a10b63e811d706ff188081e5e6d767516567d205e33a5d1c40068d35d183ddc34f7252a185dd28dd5fc5bc38483a839789618b758bd410b4eb8b4d71340277c0c118141a69b453292139903517cf9948af660996efa226645ff1898c6d565f41c9863327d1c451361a294cf5b3c2d9d07f3552389e0981eab46bca98cf9bf84f17e8c4ce8ac1119da8c221b90911828a8decbf24dfbb960ab18a381348ab3e99aaaf31fb325c64071fc5e22349d8c8c54b872bc80c7086b8254040f429569994f6cb299bc2f7988242331286477fe4f13261b96897e6aae21b08f8a1746cd33af91509d1b3ba2018870d01d6948f8545fa8ea4d47f2d9c5bb236da3b9f96670038a6e4046606841791fdf65bb7253259cabf77664ad0edac8b3cae059387d85a8e5fecbdcbe175f2fa87710436a1b431fadff28bb2ea906af037eed8cf15dbe51528066d951909ae730faaa70230eda66f6bd8151c99d800595d5f04b951aa851d545f11d540c06af94de05e49cfadcb56427741386dd1bdf1747c6ce415bf35ebccee22a11b991104e0584a41e2afa7bb803a2476212e19783dd07cf8dfe6bb7d775ffa735b2f59a558d63e825c01d8161ed5cef09040fbb02f01904dbe92d7a069c59069648e4d5444a3d18f76dafa2b22f668714100b45a4fd5d82282bd042454618dd669f258478cc0f761989866adffebd9aaccb9d4d6d838be4aaa2a37f449b34385f011e0be6677f9454c927819bf33434ab15eaba712e9c25c16880d8db95011c390441036b20fe379607887794023f137c559babb957b6dc3ac009feb2a3828f5328ba1719fc07738f17dac7dfdf18f32ce5db73122098b683f631f1ec52eea775ccea2b7ae9b23cba052c27c2c750de5abc64d20dfe7c926ee3fcb70e848e96a4fe169a704584ace2840f10b129ebe99d5a9b0a2b9a8d4de36d864322fd3df054e45d1754f279e77d47142c4f2b3649780936da0a08597d8831c68b436304e5235ccb161ebbc90194f1043e3a040b0d58301a594d3a6d81bf22d73378ba6d901eb6a86253e11aebb6284b4e2245bc1ec12969db991cb0f2f93e6a3808e82a003bb43d00da6e607b8411c069ea8ecb004ad3d365c0a2d81b0de0d8fef1f86b2d2164136964ef2df70ee60cd90cdc0caf918afbb599de48344fe96cc9d5c41133a113abf1ae647a231012e844108a64d8ddb87988a848d32a874d6ecb7488f4f31f8c5d22c36ff422a15d0d991bd7633bf155b96da53be5b62dc6a12cbb184fdcb2f99a3ed3a7e14e694be1e2a91e6ef8934345fc78092952515969e1eaedf2868a50400f681e42a1eaa20ba50b7d22061a0630401aef461c8c47892823d1d014ed5d622a8738f39ee2e9b15102e6e98798a72a1a134d5f9046beaab83ce4b6f8d1c594603e990adce2c382edf860ac95d39091d8a1d7932222ad824da20fad13a16419b11d8c27075653b15558a462ab3c6aed21c4d526020243dc56fbdff431ad58c16db1d65a2b174db57ed80c6a4fae7237db62b01d288394e5b1244264ea0412fbc952c3813dc5b31ce2ccab7c087a167c44777a154c7fc4cae7210e1396cbb8ad02b1b3f2ee8d83cc5d9bb3fb92a30e222befba8bad603c8da593f648b9f6b579befb8ef90eefa0c776644a0acbdd52ae7db97cb2711a1d52001201e5205c5b4b976cd29ef4e9e1e2d0284836e6fe4d9f1c5e5e72d8aa902258c4e9c0d5d80191e5c6d80ea4919fa787a206ae1caf4aee2a75d29ee663b19d975c4d9fe9337d7c5e770e0dcda075e28b0359be052708c1d4a1dfe6b7ca3d83abee9c9093fa8f0ad56f983a31992c904c6d980e51a199a9935e41202af4fe86ed40191816822c75208dc47a2eb62353d812595e3b62a593f6a40a10c090e36dc9b013625221c7c30e07e9b14691a65924e47849d99329f9926f60bfbe66033b7a17c9159c22083068c20b2d28c2198870e47187439e6c66b427afe5902e7cbaf941c5508eb766c906abbd3635e4215630d01052e537cda97c8b37db60b8ed663976344e095879f71d2beff01024db87ccafc8d68eee2a78087d87eb7dc92edff4c13274d29ecc9a113bfa3777e0b6cb52821cef28d7fb92fba4631ee61d3990c0064ab074708030dee1818909db821db0136489b5204b6c064c7c9d239d5808208d08b01170172bb27540649fec89a2084de47ab15cf129e35e424082223d66548703cba4d8d5aaa13890ebcd368fe3b63c7da60f9481f5401a26e00a6b013121843c031e603f4db0dab9200821d75bc28af42bc6767cfa9cfdc771dc3f6c877bf5698f933fdc0fc643bad84e116ca755241ebb55529d75b62456a45592be94c8f242b4db7347e0c214da2084129c6c7b92a53d0931b6435d9906b95e9a4f473a8c042402c24172ba91bdbee6f44dc9251fe47a03fbc9f4d29e3cb6139425b6f3baa627729f451a72bd3137fe46397bdf53e62e74e2c70ab9dece2fb247ae3011c4943c0a582ec8180d5a321a11c6daa08c9835220d0ad6038c07595a1619268385000b01b683ed603bd8ce56874c575ecb4618d5b2ac03ca7007244639b3732266c40ce20f2f3e786ae3c6b361e326fe604376c318638c31c688314a30549d2ccf6db3d4aea094674dd472d58db28ce27649993282323aab82d542960d86afa5a0fdd892a91e195d32f523532cf9c51b7b64aac628a567af6fda3f3235dbd5452eae5f72357109ef603b18ca148777ecdb255731cba4500a4e5016ca433ff247ae200e5096edca5e71fb74133ad94ba5522ccaeea3d43eadd3aa127495a0ab045d25174c69b775a2146545515a67dbea21ee6cc7a748ab7ee4e714befec9321382abde81edda8942591685b2289409e521ebeaae1445bb7a670bf6ed6a157c67c4768dbb05367ce2b0f8fa1eb9eaa85c917e15299f65a676c9d4e8225100d431c24488a4bc4fc49e3eb64bb66b6bd789c33ab0b8a38fa58c7e043e71efe7e094f00e6af111a48f4ee9fb3be81b0f4152fa90894fdcb112de318790f089c3a704f4b10f113f9acfc1c9c14152bfc5dc3bf2b3b97732216b03e2cc0b719aa7277fb008c34446d8864c491b208a3dcfcb44880c6579222de49229f9298585ffdad58faf3a14899913472d56d8600ff1125e0a81324e31778ed70054459db62157a66e1b51214990f007a3e4f8a801e8c5dbc8ace9dfbddc010b2f317411815127a314ba6cc41d532cf25224c7c7c7223ce0ca641a822e52c492f0e467188513a008d2c9351946f18427642c34c92e328c020b4c6429a6c85c6eb14951247b19461134450e6a92b7cc7d7e3b9737ecb562e71e8f551ca4831c07e94c5ff1f6aff3cab1677285837e658b35c6185756ce09418f7dc3597df62cabf12602d9d27608571bf74cae52cee1afe22f761d8e9a37cc75355c0e23cc5b8c3dadda68c47ae1f665190862af3ce42aeeb49ca59b99fb46f1172f7720441fb4733dfab692838457f0d71ba74d7a6eb4a2e5f042e9231dad601cf123ca43233dde08840883c3a7d1b157202d2b84b8b13de6d81e1f5bad4a127d88e770e7f87a97cb75355a3c621ff12bdf5a54930aec75c3b616b562b5be7635b6fbe0b6fa5a5b60d7b61286b9f2162fa594e6d18d2daf60389ede9824c2a0bf91395cfb975bfae9aedc25e57d55be492e463c3ffa19631c6dcf4639b2ad399748cf43ae587cb2d8c9020391d8aec09fc550a654e016fc6dcfe44a7ec3b33e762cbfe9edd9760855d8b74fa8d2bee1ad9efbc6827170bf72443a77f1a93bfdca81c8d5ad9df1f42b9704031b6466eef4d928bbca4db924fc05b9d6d5e0ee63c35fccba1c5ce6feed9fdd461cfe2e9093e34959967dd4d1c8b0dcdd98ebfd3490b77f1ba0797bbc33c32e07cddbe38d2d67bf3072ce1c694ec6eab72b3b1adcccaee564f4231a81107d8099f648168644e77494c50760b84ef5e325cebc171886fd834018c559866553cecbf76d440974f3c5c836316298e0eaa6617afa6cf56f0f1b80b5d11e16447b182bd773ae23f0e47aae723d88ec07852af77aa42fc743ae1adb9029ec18770905cb03ca28650cc3201b32760e633b193bec2219c3fed9903028f665e376e29e728843ba27eea4439c6d7635b2cc03d26020b0a4a73cfe83421c3e25409ef421e449b87fc487e8a7e0234858bb41763f9b9c9dbbdf979d6e23ae26c0467b9d10dcb19ba4fde7e5d1579347cfe4e823bcc55c5f23088bbfac843b1cbb1a1507479f5d1f3f6cf2f61f36f9a3e7aea355f5cbc95f7de95b76b577f74676eda3fbd9e4d1e837329bffb26fa3fad137ecd8b512d8d24bd847762ecbce1d213d0ba257a463b7d1aa518f4e651bad1a613cdac3ca60eb31af5e3b76977f9a56aff9d03eaa694fc3300dd3300dbb86bfeed9b7ee7aed61cfee61dac39eb19a1d3b8cd765a3436cd31ef6af265f47ab82c0b01f3bf61f5a056de0d1114090c439ec63c327537bd84b7bd86767c9067bac08b9b2c1033b8609650cabc9d8210c867d643c1966b3d4810dc26c4df069519b9084db842fd0c8ca42644a469ff6e49cd3888c3a31ae204e9c43be7852d43eb518394de3a2c6711c17a3f6060b04653801555e8dca05f4640dab46d3004c490d0bc14eff45164c0e6dc829e3e6392ca4bdd261b627a5a4a4a4a4a4c0b4273b1d327401816048e9d2b02cda69d6f08ba93d0983e67534c9f22521ede9d8314fbabccb3f1289f40f1691aee9688fc422b1482c124ba6baee461d214360919056719a4e67354e9b9a90560d69d5bc94a73d4de4265a155945108136677cf3c86f3ff73899c2a2b823573aa01013ede66be42afbac29ae321c592e964427a0271f1434ca601630fcc1228a5be068021baf8a33a7a50a283608f3cda14c63e684245e7ae40419e8e022c990fdf43dd36b8f5eca51104c7bf4457b6f8fc2c48827ab274218fcbdc874e2cfcbf45cab542f720a7b578df706b5aae219345d7215713086bdc17ecfa7b769953cfd8c5671a7bf813260a6afd14ebb777fabb6f77cf6eb4eba8b3da9762775f741b2244b229148f8b3afdf6cddbabad9b86d5bd7d90eb600a6e86187670fa4a1da473305f67be92e47fd87bdeb307ee94ebaa794c3ac429a920d163b09db95959595951552f7d21e2c01dde0abc9f41b0d95cbf9d8ec9b2e98569d6ed0dc9de60eb3d4125898e97431c9f429b3a73d26edb15a654f4bffacc56eefc3be9baef62ca6d4d25bfc954efa56ba93d51e3de9ce9e3b97688ff6b48ad49548d8c676df30cc082f23ea042bc46453a7852663b0436d274ea4ee15cfa0f6e8e30aececf961b56a89cf48a69f3fd3497652739b4c5764e82a020db21d22e87c0369e8a7096c7fbe7bd37337ee6c37eab4475fef90f6e8b32ba43dfad1f5648a5e3b076b96a43d3a7de46aba668f5ccd1f98a2ff662bd3d993299d3fd1890e5c67f8c413dc90bf99bf2cf39044c7ce4818ee78188a7dccdad44505f41006f6684f1ec22033370aec078522f658f13ce421534166ee1b1b38d84cae4ca69ed1ab7a799b7a7b74caa65510df60e29a01318f1358ec114756f4c1b0c8f262f489ac68c448f489f04d3411594dc0960c5d4ad290bd0cd9cf33222e00422d80214bf9d10bec07857af4ca46b66a9465e8824f32fcc12028597ee4026bc4cc5f1605cad502604a5e0b40608066b0912b8803e4ca32880716c5f6317cecc3301376e8b50ac318068530ecf7a53d697a39062194a62fb23e538c13b2c8d0a58427f26703451ee1139c45c8950d0fb9f2a0900dd79f599638268ead51974e30863198a4d88a984a5082124c61643281094c100352080c070922737f39b92fdffd89af63fb2a88b0eec6c42da5b7b49c629f977639e63738580cc3d7eec67ccb6f24c4545c2a24d3e4cae7cd40cc18f641dff2ee7094def2d8dda06f012287b66017763572f269f413e9dd73f2089fb26fcfc9739ec277b7c6bc316b8c6e8cf0fc9671d86db909de6fc5596eba1f1239279fe04f37b067af81e10c43f81af803923ffb153888cc2d8718bd7d4b56d1724b67b95f11d97ee57e42b26d156c63539e82331073e9b4bbd1924bb7f7a6bd8dfb4ddb9813935ba661747e43ba4b37a56b63d382edc3fc43ab309c0199b1d3928c8d3f0c749e38486712770c63a073878374963f1ca9dfb80b7136aeb7ae77e7385a4f297bd3b40b258649faf9f668cc326b2136253647d89c12c2547ceb008239f14d8cef631d63c77e7b316699b571ca9b1f6cd029a1f4da3bbc8197f12524624677582225472db0f311ebf05e743f7aedb5942d9b479452c70e1e3146d794b72157930336e26fe638a33d6933a33d8a6fb00d8e09ae74b820cb4371beb6ae11333d6cd94f72671af4214218b93339458411a6574004049e7df4cf83c77aca6bf883aff15ec063f80594309318ae89d88b38368228a2555996451b458ca0073de8797054c4250202434440a08811c48688102aa20904847834d961035744783590267e5e79ad4cc5774644b12e10f58a66e050fb2733a42d8de86e0477edf4ce21ebb5aad331852d7dbe7f26d586b212096718b676fed81fa90265749e1d459e73b613249aa2329f72638f8ca4f98c72f1497b937bff34d0277d646ade2bcd0d9b2ab884b32ce596ee72b95cf4421cd29c7376d928c54727cfcf9d3cef335b79fec8d4d4cee1f8ea9f25da236a9536ef62ffd5aabdde473dd73ded55fb596bfd81a9f9ed9bbd91a8bd1777e393a9719f8f44b6398ed370b3da9bdae30a6cf7c42853fbd4a636b34cd35c70158b5c999d4376e5f3b3b3d76e2bb953089066fe409a198b7efa877bed46af1c3e75d928e5f3b125572a9f8fac49e7ca9c534a958b44011047e5f6ea50c1448860a727523a49e5429cfe91ab582453f359d6611d5936cabe833ec34390701f8277904a273d07e722d91e345d40e78720bd85646abebba3ccddd6c9da85a363df313a868720b11f223fbac53bb297f090eed6cd747432bd48e0135ed80176fa21b053fa23e4b10f414fc247f4e965e66ea693b738b9a9751aa77d6baeb30b71b01ba3ce4e9ef3719e8736479848866dc8d4b491a9394fb10e22f21a910a2d6c40c4ecd9944d5ed21a488369cfe06a74eda30cf32ca4386b4f4a994dd94020a22f53ca9e29f7340f7166b0113e92f29b961a915da5bcfb73260ec597093bf6149c946fa3cb97c9747a786f64a189e9c6571c6a6f8af6baa5494e2ff3322f8b36333ad5d7ca60e54df226d36f7a31995e1e5d921b4df11ae1382487865e72c6b6d7438c000020e60d83bc47a0997ff0b5c3a38fe9c53f38847a7c10d6c8605d917e946223572baea285e57d2112c2c0685ca46460f05bbcdce526015cde46ae04f0be4900d72453358f11801e005073a14cc1c05f06658a067f3008ca940bfcc10b652a85bd0b654a06c7c8140cfea20e94298c6f8432d502e7805d308b081487e847d8ab6915c54cff30ecf3b0d3e8aa31491b69236d6ca4e9a36fa65be3bdf0467944a9378513cf8993564598cd1557c5bd69b936585654525eb96f6151d4c9fdaecff5b71e99d26e6c65285b1b836d26edb5c4dfe8f4f36ea32cc7b49d65a311cdbae5e93c8d4171a8559fe915a730993ccf865cc52198ea47178cae8eaed848d81cccc5a5033550464b29a594d23b8cf722fbe7d990ab0dd72cd33ccf65210dfd9792e95781dcd4d49e6cfc225737aa90e56d984c2f3550464f24b01cd973c9d61f8085298855582462cc6183309fc693e79c734e39f4d91c37ca8a7d2e0b81fd288b526d87c58232a256244bb8842544e184109860cd22ed499edc4148d3f11053f2a37fd766ab26f31057f3c5e14f55afe18f87fc791fe12f267f5ec41f4c822dc07c7daaed31d5e341457b9a605b7eca00aeec377790e71138590057d9e5270f0aa00c6a03c84496b7234c6920036560981a8134f2d409216449670069e89c33c898b03cc8920a617a9046fef372bcc6d348744ed4d4b069df6067308bd8683401580494c165ed3f601ab2a6450f64cdde4576c196aefd47ab48d70ea455ddb507b1bd4ad13e772cbd10b9d20e44aee4b5c71e280366ed45c8555f33459e3cd2e6571e6bed6f3f42be7e88ed2bf888fe9661128029ed10c345401a6dcacf0f213ff11148766cef1f512ff109fb10243b56ce323f44bf051fb1bdf109c347fa2c78c80a1ea282ad4c699729180976ed3848ba2d46242936491279746dc62e746541891c3b214ef67189f6b8244964ec42a030cc20c34e8893c540748e51dad31e7bdad36ae4aa0898d2aec194f6d940a1d1e5b276ec66ed8d5ebaa43bdbc3dedd6cb637a26f283c5086ac6b18405081c010658b914486af106793dc768b9029ed35f6401aeddd9158f645c8d5654a7b965993e9f7bcef9a0e48a3fda69b60e9218c867d642c9a4391e89c48ab103cd0ca300a0fb0f267caf43c6418051133643ac222f46eccdc3864ee8f223e92c55822486476ecda085573747a9bdd113e61188848f34dd36e810e2a3cc04227849464eda314a98da4a6c9380696136d24239429a353d5fee35431109debe84286764c91fb3a5a15b38adc0742a45744389613536843eec722bd8265e0e9d12ae8c41498e43e1172d538fdaa8dbed893fb7d38852c85dcd25a93e96f08678aa9bde86374aebdee868659da8b2f9026ceaa9d9bf048f66d74798843c33b628c3a302ad888c9510d36facdfeb38169d5f6946befa743fe5236fa1ce8ab0f532596281761d0434b65b4a030b68032e86df4a10896e8c30f53f401c84bf42108892597ded8024372bf88e883900883663fa20f4346f440a20f5127c218e520d18748e40390861ea317829d52fa2119fe9a3eead0a893e9bb1b47006560a5f10350460ca421127d808930463023ee6098d2489b46da34d2a691368db469a44d236d1a69d3489b46da34d2a691368db469a44d236d1a69d3489b46da34d2a691368db469a44d236d1a69d3489b46da34d2a691366d1a1b050365d00d1bfd3a7af48ac4f3a29569ffd0c3fc64da029a0113f2079bd4643a23d36723ac61d79f902c77e4d9ba94c4067bb0dbca0998cabe5a2d69b87a92b36f0505b3d191db1a2c50ab96f44a450727bb54d1c9b2c2bc2494a25505b8fad1824a8a4c834db9ca91d592f6322cd8ba824d32953d65cb81ad589a605ea81d98975cad58328379c1bc562c293f2e57794465b54ad22b08b1115cfe563aaf979cf29b560dc9d58a5cb1bc45c5b3bab15015b1b82a2299ca6ebaaa974c655f71554332955dc5b561f1b25cedc8958a8ee4912b96675ff5c8d5cab3c3940b656ab52353d9e56ac52359ae95a9558f4c65dfbe72573a721571b2ab88e40a7b7655d155af5665570dc9d5aa492fd12a08bdedd9574af4aa48af549ee1d54eabfad90a68050405bb028232ba9cada2c8d94a8a9cadaa90b3951672b622cad9aa2867363a39dbc9d9619eb497d9fcad80549e7de5ba302f18a2f6645723cb1b9e20b02b6f79fcb7023a2520e52b1f22e52bf808243b58aef2234e4ff9102a6fc147b0e0d3868fb41ce2b05ce537dd726b642a3bcbb591a9ec2bf7b47de51027e59e367c4ac068847d051f91722ce5d88f50d97260f15793b37745eca74294558864f6159e56f5215421b22153d9556e671f3de50c183d0543996200767989bf2058aed981c855cab36f302f920cac8a4e865baf8ca810ad7c562cf96fc5ca99c45f4e8a0a94f6b294a2fcad5c397bca5d01c95476ae0a56a508ab10b597753b96f44f8568e504a4c9564090a60b81a55f014929d790d252eca46052d80caf960871a35e7639eaf7c326cbedf277e5ba2ba0f6b27777637bc59fc43ee471501f159f6ecc53fdfc196cbfde1e97071b84a816b839860a6134579016385512190ae57ad2adefae84716cafd8c78623e99bbd44942e046025616eeb6e90f63220ed6544197faba09c6d51a8217f2aa2bdec30ff682fcbbe0a922b202b20b98279c154f6ec5b09e5ace21550ce80b093c1bc628703cbb00588c83e60144019863b20a1e568ed62e9cce0fc842a799ae59bb60dd820dc624f11f4cb6c388350b04198afebb855c9c1748d5b7747a3f46d04a158c0c65190096302a84924c98449aba20c1ac5074926a7c36c4a641039ae0802c5a1e9339db477eaab3c47ae4e8d4f09e8bef21ddd57de5fc1439034deb1b2f221f3dd7370e4b7ac661c977d87cdcb5b66939048fadbbccd0a424f8e37256f2ca388f3c1bce4898d00db9917e26839d35a36c32929519b5b3906d46a5971d3b7d661b9241d8eb09bee0a152df7b2602853d8cb071b9a98d0296a128ad5b86b3bb01fb683f9c815ad1f614a5af5238ff1480c6bed0cc954905cf198766c512664875e593e5e964c6ff300c10d597634b611cefc4d6f594763c3237c8a0fd2f90471b0222c2038814199c27a362cfb87ed504ab1ac05149264842919221ad274f04303d104d6fe6b9691f6698f25579aeb04730f3b1a26172fa2964316871d0d1641b27db4f707977938ec68f0f01d562f2915bfe90d4e0100264d805c45b0286b238833684a2c11d65eed450bcc1c63e788a5129046be9200cab840cc2f2863cb327c0831a6c15ced614d2461f96844b0323006e05d7ea73dc94399c831b7cb51a44e13b5279b4993264c805a15db05630036327ed31b0a7f42322ac6de130efb9ad7c0fcc56cdf5d8e15b749b0d8c3381422789253194221022732ec70587c84057b3647dd20d2e6b68cdb2f18d73a1a30b08d8d37039de36104e9ecbd7635bc5b407a871d0cacbdb42158190e754fa8779e39e69e50679155b2cc3da10ea1a80110f286c242b03566463de61fc68ab9d0de2fa727db6f92435d99656047a38bd80f9523ea980e0e110c2525d43a9bbb7fa6ee6800206a4f0070e707ac46a4bdcea0bdac863f93e9f7b417eab6508eb92c72ec50f874c33b0a85a18bdb0b2508daab553197d79eb4ea5e5e236a0d4aab605c5e2b6a15002eaf45a93aadaab97c2552775a0573f9ade6c6005c0382f5ba3b1af6a81c271cf136b7c13e7a783ccc303f9d2e0d8d0903d199e67498a36949ccd55e281800b85a9116a5e6569d4aa46a3fb0ed1aadc17697f9d740da138d687535285ad1ad3bdc4aa416a93cb72ad15eac811972cc5d916197c2da4b4b62657e4aa14f5ae5e2d2fe3bea9f29e69ff5fe6579e6b067aeb95c5a853597cb05803597cb63e056c42e31f8335914fe6eb2f8f3642e7441bacb9da101d05ef81a4175d864d27b9822afb8a7c6407456f115ef0cbb17d25fdc2fe266b591b74ff78f9accf5ed21891c7373c83217426164e7a53bea1bec4a5b576b8bcb7281883df20f98dcbd1fb3c518abbd9c8c4261ccc7a5d69af3933f1677f916630744fff9ef0b0426bf766b8bdcec68c0f4db25654ef3fad90931f34e7dde5f3ce2cf85cc1bfb00827d94de6da51bf32e7e6bceded8b7f46d72f6a26e3b76ec08936b7de95604d43eea7ea520bcdbc3c67746a69f7279c30e47ccbb976eccebb5477d3d72c73cd68abf1e19757beb51df6297a31e55eaf0d723a3fe958efbb4b311b37754cc0f98fbd9e5f0ded887778b7da47ec074f8074cf6704c9dc56187c3e55df1478383c83cf3fac6df0b3c5de02032cbbcc24e8819fcc52cd3dd2e467b5a7af72883bf236887a7c55f8df546bb5ad52a98ee117f41e492dbaee8f2d26777a371c9e52598ee7de3ec72683eb0f55977a35ffa8dacf8dd5d1c5aee1eef07f39229f9eae20048bde6b0573050a789f1665e1c760400feb21afc591898870bdba3c1da0bec027fd90c4e692f0fcbe0188cc2dfb38c306771dc611f302fbd3b1c2e2f3d7637605e8adf62771dcc85b93eba77b77498aef47abf1edd0dd8ded723d72300e628c9f51f11b976b7732d7d876f230ee6c2dcc5bf3dfbb7d71d2027d71af187442e9dc53bfcfd80c9f52c0e53c23087b92e3bdc8f4766717cbf1e99c51ba897601bfbcf2e889cfc9981985d0ebb1b2d2e97df2afe6afa7e3099e539bcc53fabc33f53ae3a78b9bec5859dcae1c266b9b049effbfd80c92e67f17849dfb20158d27fd4648debb8986b7d77d7fba3266fd1087058d936c9b95ccce7622f97c6f698843dfda63123ad3a610ac0e496b3901bed68b0c036b6e55be458b49c27cbafd894c8f22a6e8dd2d980b9051f6139ed8eec1c87052301838364bb0cc363c643e5f6805dc431c889fde0901624579a19d8906590501c8a2fed957208b59f2c2b10a2c89fb6d3f637adbda08cd8f8eb82ba265f45413d41082c1b348bb557962f4513c64e1ce1042cf2e77547637ec03e7f9acf8f5c693b307bc1947cd47c5e9a8f10a4c89fb603340519e408064823bbaeebbaae7b770d0c9a19b2d4d850395043d0d82487ba89862697724242e66448c49c142c4af1818ddeb4d71c3cf6ec1647f92f3ee3628cb1db07ed59169f35292367e18df45e601910f44659966518fca12384300959d0a835a21f61b8c9d99e0cd2f35262585f98edc85e62f3c30c1bad8252dab8829d6789b1a93061d022b21375a29c2fb034bae6293e655cc62306f19059d4893a5107ca8010cac71064d9a33d39caac8c11bb3cda1b8d3e28347a6c11916576342282477b423c7a1021298d3f42aeb8e4732d59d22a28e52ab6624fcb06fe8b3a7215390053f221f809726c41962b8873af26ea28c1c27348b0f0dc120b3fb1c581859f34b03a413f1b8c618172432d837048898c878e7ada4854e263c44845020fb216d80f0e1101019e960d4f4b06599b4f163800120165c4dcbdc30695957f100c26b962c144c8ac218e65b0191caa36ab2929afb466a7d929563fba5bc52a9682d928c9814d0221003f7ac445b4d74330b6da8b3fad1a6559165ba3ce68966519fc89adee24f187cad1888e4a2525e02072442c1ce281ad2c77ad888f9048d82453fdc6a076881de22f88ec6ed78d7c8c46971d10dab3675fa497d847f1db0ebf75d84baf48ef9b4877067da11008114536c32786408520faea682f6208715bedad69daa149cb344dfbe85b36827104b3d128b6224fe4e1e169f1b4785c500c21471ec9cdd31936f883c50e1f89d8a869d0c298b1b865af32d7af863e628d69dfb6e6eab5eb03beca0e88eddb1744662dfb4d63d72e7608632ac2564d0abbc92561bfd75c42498419e40f06d10ef4a45fd0c9526220ed49499bb6f484009140820889f144405e415a25842ba27bb42731113c728f6e1bb802e22de14296907e407235319cd83967986c8da93d39c2d7b1d83f13fc4dc3b46a74136cafa63dc9c4351ae1199c15ecfcbc84524209a5cc320b6b604a4a69e99c3cda93d98b93cc498f1bb83225a1096c051bec01d611d82fcb3682a09242092150c494120e7910424934042d6bd77469b0b4a7a3bddea16987401906c314ff7a301ebdf68dc6b0b461c4d930ecda370c62411a078c431c28bc06354a43c3597bda0e1d261b4a318a2f5737714915e08590064baf321d1d1d1d209cbec562ecd8d72e8410d6c8d58d340191ae903f1834b7146051302898643144a89222e0410c82e248c239259c5966328db09432aed021c7d1e3218c71421921be0e2db352962b4c32e291842a38619e349a5e24f6c106613eab93e9b70821cd32b91abd5594e93f0dcad032cd9cc8348b22532932a5947e1bdd4c928eccdf34ed0e089b6ddaa3c73532455916e2cc7f25a2d185382522b99a3e4499fe945e3245fbf1592b4bd22ae844942a64fa6ca8554f7ad5d252d22ae844d12bd31a269906651a89a270820bf9cb8432a54051c090bf6c8a4c6dc662d7d0d20b5641287f1ca4022dbde46a9ec21f20284307ca8099ce9f256c632366bfc0bac04e25edfd180165fabe324f254b32edbbb4f7f9d3aa3662662366fee64fc659ab3dca042d1195885a05a555721575de56a77b4b6273996f65537bf04e48139f73010b5d497c32bc5fccf0461ed9b98442e70519e2d8db2836d883ed6f99cd584488f5c0c6fba2bd58e3bd902a3973cb27d8f92db2c10772761011763ab04f4c488ed9b5b16961f4b7aabd117e7b1d447b7d982179e66f488e3682d03147d82386813e569aa69c42c38658477b31c67818638c714239219d10ca96b31b5eda80f89b3633da6b1c13cf5041dcf8a6bbbbb9c00541274ff4a00b1b8c37dd5cece616070b3f8210d66fdbb67dbbb4690f9e47ab36b8c18dc79577477b5047abb8c3d6d1aa98e177f0889d9437f03b78f480b77159f127ef3db765b705c8fe496cdb838710d370a74687b1214edcd1295386bf690f1ede040f21c43ee0101dade007fbd2837d22c94e8656c8f0091f34919ff0c112793ba5a12389c871c07e90289b56f37d20db362f91244a93c792de95f09793374ec7923e5160bb156b572c49858a4a22a9509175345ab08d2d95deddb4820641da6b166e062b2fadbc742405088e3a32d52c6ebfc59d97f74ae92f5f5929dde59bcb8d3aa77f51e7f497aebb51fa4be92b67b93e4a5ff956626979f795cb72d8e16861c15fe9198899e52eef56eecb59eecb6147e3e548ca5f6e24d25127e5729d7ab930bbdceca70b73d46955f67e24e2523a9012fe56cef25eb9cb3f169695b3fc83442bf7c1e222a4552cf87b7679b31c4253667179cb37972b04487bfdd20dd25eaf1c48ab5ace75345a80046955e97d21375dc245742c02a455241618aec076b48425bdbb95ab1496951695bfab0a5c4f7a974add4b7b7d96bb62710988ce25ec99c09230f70ec320f2cb726c5f8c39270ed2a9067202fb65b97560aa8980a9be4e0687783a874322e6345df1c03692dfe260e3e8071b9bec80680fc3dfe8434652bef4be1b1cac0c2273a9a4921263cbe755bce5aaf80669d8fe8a56ee7773ded4ef7ac475f7fec4dfe9f25827c48af76c398be3acbd680121d987c46e9ce0fb5f768297108f4e5f638469d3c3d7780ebdfd015a3e4200c42418a8fcf292be6d42727cded3e8f0f3f034c240dcd89ebdc6866f641fbd468625a6f42b36626e912761120cacc441a4ca6197a3e510fb68f908fb307d06919fc4d374fbd9e128dd306178c241645e71f8b1c04164ee84e8be027f3177fd0d9b93be363cf6d9e1ef88dc370293ca1efd7450d68deba8ac1bd7d18e4221a2875d8d239d2d9146b26e1c6ec25a6bb3ee513a0905a7278e246a4f22d139235ab300bb9675e384e6618a2d91ba9675e348259b22d4126a09b5845a3d5b422ca116ab15a5d09a2c5b22c19675e3583d44452da196504ba825644b24dab2b29a682d6bad9d2cf96a6f8a212755b6504ba825d4126ac559e5c5b2c66235713d212a126ab184845a932534592da1c9126a4dd6a8fec0145b22754129b644ea828aa42b684957372e066944e24e8a2d916cb22ccb322641d2d5de126eab92b2b4fa4425c5964875e33a265247465149b12552ddb86e0693fc499d924d5189d2455aa5958964b9a68b35b52a062025ad82cface9c5d3f3d3d3d3038122787a86ded303d4e30a121a7af1b07a7c7a5a3d4a7a847a7a7a7a7a7a7a5e40ddd3b22948b1255257372e0645296a156475467ceac6299961d35e9665591694bf8e1224d4248849173551d58282828682828296803363b9a68b35eb13582e1db99a3c322581e4925e3169954a5013a1569526a9e5c6751f7a11c95565b9582e968be58a3bb148a7e255526c89b471dde4690854adb52ccbb2acc9a393859a04b5c76449a7809a48a6e23b6e9344a476b9582e968be56235cc93dbeae4892ea1f89323c47132f4127209c9d51412624d2319675dacc9724d176b764e262b114b8847ae6250504f13bd8a434e86a678b58a343b9d56c9bad3aa8d6b157c96c42a312de99d2639f2683c2c9e1e1e9e96504ba825d4120a02720515e151a287c5c3884f13ad243f4a7a349c023e8150609448a446a66c321e170f5096b5b256d60ae2c9b2894ec5cb1d998a4f9229b14b4c4c72bc6cb2c3c3d3c3c3f39a62c8898f4e911d223a328a8422d4126a09b5845a34280ef1c8a09da1a1211e9e56abd57a228964d19010915c75ab7986865a3c4bc099b584e4aa795a423c422d1e56098a0dc27cb395e337ee03f6ebd764c5d7935611b5ca3e5e42914532ca24f259a455ddaa7899a455f01990759982a4506e9ea11dc923571a90a99501bdde01014f85e42aa5a7d49e4f8f2672fca89524c7cb1895e4b884881751914edc893c3732156f592621569e3e393e3e1e2873bd82727c0f2bf3b1a42b8bae847225917cd25e92963c3215cfc56ff155891c2f79722c3289e4f892a9f8df64b22937667b632edd984917e6195df9c229b428145f2ca1eec9f1f165b23840324a7b71eab4177772bc0c43ec98c589a3110f588ccefcd91c81fa2557cd82a978d6ab819a355b9905c10661be145696b0a391b5baaede1f30284f084b3177ccbb6377c786407b34d2877332e89b932b2a867dbcb8ebb608b71b9be460f7c1255fec77b7f4ad74bbf7104e0365b95cabcce3dda2573ff378cf73f9e73df57a4fdc5d1ce6cdf3fe692fcfc5f3f0e7f2d4b98b83bb0bec639efbe6f2e4f584c825f57a425463cd61f0f0172a32743d0186d4935a53dfaacc63771932d819179176345cb8782d214add2575007c2675977ff495ba0f97c70672917f3183b1666666f0e77217df5c2e75f1e495ba8b13b9b8c036565b82f5ae4561bd08e3b598c2ed7abd3c580303f3805fe0254970e1722a44c5b0bd99a76eefbd66ee0781be199f4d8e91270d196c426dad047634e24d3750feea837469eb4add4b6f25b99fe49bde6aff4418fd92adf1c23c840843763450b7950c21c2a8af8f9a4b0ba251b1c6a4e4b2f52589858e393223be595072ac418650c8e00979bb11dff874a38374df0ad18f0712ff45db5ec59a126cd588aa12b54756965c19e0323232de111d7ed39dcb5f682f17d788509744af19544a7b752f669ed1c1057fa8a75077f997faccb7d40ceaa97fb4e523f58ebe52f87b7e015d5c5c30960bfe5e7ce6db8b990ef599e751476306dbd8aec350986a3e2c484818410b7c7239c469818a49ddcc1ece643926a64b0da14826c1850bd475b8b353280905966b32323232ff6a08beda9365650d41801b00f74ba664eaa87777b60a66d45377b6877aea2cadfa607b28fcfde058daebbaa76e1cc2f216d79260ebdb25534032b502db029f74b0fc0896e7f002fc079751af3950d8b6d7614d095a126cc5b03d8b5d3c589ec36f240ec7e27e5a2ec0d58153e02001a7c0c9019fea5b1ce210e0ca3c87c32e478ca9efded7477df70d758bfa6ae9f665c68cc3ced4c3fb332e8b4b864f04610832097d27ebddeb0f9a903f6d2709b74669ef25539ab6934161535fb5b88c918346a4351aaccc9b0cb6fed362773462ec1f31728d917dc4db7f3f62641fdee365bcdfb4133eadcce2ddbdfbc5ec7de67e392a52bfe8eec6df8f17b97bea2c9748e3240104763958bc9b9ef66a1787d2258334bd95ee0908d44b47fd08cb566b576fcc5dad4758628c18b96bed567d351d101d8e99e5c67c2bdd0eb65742bd43bdd4e1232cff661e2ff3bedf8f18395ec66b9cd2a5f98bfb599859a0686e73c01acc32b7875b19acbd4ef53dbcbe050ecb73b810e7a56a4b78d4d9c8b079bdaafe42ce9f97badf1145722a762e343966ee72170cf30cce80cc2f3e3a625fdcc5979367eee2c2116950b4222d4a2582f9b8608c85b19a95cdb8f8a8653fed255332c66757d967b2a9f1bee7cf945dfa3365ebe3c22f4c16768cc9c296a1f9676aaf8de4be009a48a7fa53c054bf48d60f00eeaf5e2bf8cba0e4be0afe6c94dcff8e5c452330d591084c350460aaefc4a6490d93dc57813fef057f77813f5392dc77c19f6d22f7671a6889dcdf017f26256c8b0f147b7f80a93e4ca7fa2c7762c230f08c182f729f44274cf5a1dcb0a4797161d36c0dd4de92f6e95ed229f91e204e0329b19fe6030432d85cca5015559d94cd7db8485417c0fddac83562deaf16f96a135f65529f7c5b918d49de9e64f994ea9bcdede1322ea4aa0b73adf5faf8d15032ea3f1a0a0d95cdc52e63081dce824f3b589ec373c04372380b3e354e40c46139c469a1ba3e509fef0e581d6e8babe570b55718bccbd8e049fdbc0fd4eb3114ea37bda1ee1733ea31f7cbc931973db00df3d66dddc5771d8e5aedbbfb3594afa1e46e28b9df7d935dbcbd31c7af95e4eebe98d763ef7a0ce6383a82fd4cca931911c16a48b03e2250afbd806eba7b86cc887a776147230677b55a7bf13bd8d1a88942726781980bd0dd0d22738cf5f69bede1e97ed3ad44ab3a9c0199bbeeb153e6c608a58bb1cb11f3471c8b50b7759a88fd4808d6eec0e2291a172fb617dd4cc70e25f36d001675d3184629a574c401b5aa0fe33c1cc2f897651e9664003c8ec1c218c9f71fc6922bda9229f94cd2166d51daa2b4753b149eaf4934a1cc282d9a84fe28a140740975b5c78436a14226b0dd402723b781b0223cb03805ed703526570bc242943c800c81b2c0cadd3bad8af1643ef34de6cedcd689f9d73a32b877b6c8c9dc1822282d28f50d75b5a0d4d55ca87f9a4b633204cbb5b0ccd55edc121ccb0775614edd1e3e737ba8cda485da494c17651765ab7a68221a931eee5d985ba7553de026628fb0bcec6374b52a75fbc8a4572cb78f4d5a2573fb28d4aaeeb66febed639156c5dbed36e6f6b1a7553457f170fbe296c5eda34fab48b7a85b0be3b6816aac275739dc1edad338946195c140fa271cdd652e837d9c5c1c669777f8e41d6699c3d43d75efce724f1dd65ea9772eaef7c29b49d91f0ed097fcd6247ff5d6a20a85a83eb99567892ccff5647914a93d1e88e4df64827163e6e1c21c7361ed1b338b293277a32bd3178b0514836b149abbe9ec74f66e4d8c9a18a1b4274b18d52f8de8860f0ac87cc2511f1f61ae380332d78f8ed88ab5220d0a131b736d49cc2bd5a0b09ff6aa7f7229d11336de62cd455b49b4a02ee65fd7b9bad7775dd769419a4b63a2b9ec3597c6440ba23ff4d5cad4b5d3aad2351797712d0141feb49d4a73792df5e29526a1b975a7be70873f93a9defed35eaf27af97f516ff60cc87c7ea1e2fef12f32fc61813738963cced0f6d25c1a143ae1666acb65a15b3aad20ff35981e5a1d657a01957603fede5b15aa56b2f98922e700a6b323670227fd9cb49ae31af3157236aaff44f03f22e8bfbcdccc3fd2c002e8cfb4dd2fd72f20c3ed9ccc047dd1f30b9e6b1a35163a33da98112f32806b647fff1a2aff6a453f2156baf19d84ff349122507b0a3e12246e6b168086cafc6bc6fcd2854246aafc8098bca817a436955e30cc848148be2cc3197b69234eaddd540a1686e819c8a792c522b115c753aad0848ae5d6f90492348aeddbdde1f9c46d48d4c609beba15131c75302db58e631578612a52e7d425f588b65845b8233c2f1fcb40a859bb6daa33f3eb031a34e7f50497ed3aff662886462fee25bcca544f4e5c4c63c26bede78bb571a7def7d535f033dc933ff1a487bc55c985f5c97996bc4e49264f9d40d4273e49400b2d508d644ab1a5a21cb634a501766286bad9945e1cf66cd47a632d713534081cb5d307d4293d0dc5ed27799f997a5fe59997fa68c42799b771b0883818db0cea4644a8f8979e6a6aeccfd4cb97e3d72f798fbc164985c7b09ca43fdb3d9f30e51d88898bd77343c6c639f353070666061035184d22b8853b2ff01935d945cfca65dd0051d9ccf669a6d83ddec8028d9d76bbb1aa5be7d7740f43b988cba7de99e560eb3ca4d7b3266cd08f68340cd6a2313f76f64d7acf6461d8d8adb88113d2491fb1be482d88cfaa623975e745df7a226d7d2b7f66995bcff5e60b88cb15432f6cdb2b77d02ab98a8a40c96755d4e3a4533230000005314002028100c88c4a2d1804024cb82ee0114800e8eb25c6c569d87410e43c8184308010000000000000022c0800100b8270de20ff0272478ec8213a1d1ef774fc9d82953d35bf388826188b1e8e57f8fc661a32a27b3eea5a7bcf41ff6c77afea131f368d9ea9024e95f8c9530db1e7be368c82e60f51c6a152b4de9298bbde6849563b1dc117a3706a7bcbcc947a397e878282e24dc8ce089ab50091413cb4a3d08c0b7df55b678eac5e648b949490a618ab0d9a892866a772849bc620e810a1f0aad98ffba6de98037507f9d1497482c65a95a29435715fa9cb7181bc8cfc5e331bcefd38e7244207ba4d93f4135b760ec705b35f2ee8003acde49b32b89f305ef0d4ae9559d9de92962a18c2ec7761ce587a078af5201c06a7182d83b7a8abd13d053baab87fba613295208c183b3537c898a41fe1c43c103916bc1c51d8fe359e282a708dc5ac42132d6ad424067926d1e7638ca6f16ee57c55b6ee88e6e032f50edb57da17f3472dfa309391c3d0e35791c253d504322665220596f69b874bf8aecb1dc2ac50132f6b5625067922dc020984aae63baba64ea50a1a3a704e3c4aa62c1a4147eac62a13106ece58bbfa6506a74f721f7db4718ea02f781dc33e8cc0bb436abaca44973b94b9f6631ff428bf0f4a857ebb4e503ba7b89aed02d62db38ebbcbe2d6b9a2cf432bb01d4eb13b2d2588d4c89bd7c6d361b48cf419908710f8eb25901c004927d4bed46f3b705262ec77e43948f455ff477884105e8192d4578ea0c634474a87a15792a6508ff38b8e6be80f4a9e96caf153fe95e8cca08e457850d2b02999ef0bb7b1f7323962958fb2a08b989bc531df3f37553124f142c364882c5725dfd6cce76efc9298f842da407b57c601b213d23adb1a708813c379c75c2858a06df0050adef3f3ee45fabf4f8000afbbc15e82a7a59657ac706841f9547e86fcf74dff7af56c42e962ff5924ed515cccb2ef41fd15f5609395b85aa18ef55ef1bfc2bca0411f3916a4eadf8f19fa66e2b054f6b0d33565ded144e59c54a5a3e34f433dff25a07c59a654d8ffefc02cf7aa9cfe56b340e10d5bcbe86d9ae15476931aa626968cc692fa017cbbd522a8ed5fdc8bc883b526562b8ae2926d34b5c4aacbe4b0c278b1bced95868b9faf629c7fe808692acfa2f72895cf3b7b105625f653848bf488f6a54c2af5e4eed6a3dee8121cec7a12f7ab906b3a242a02b7241fbb74caff0d40a23fcf6f3a5a9e10432a4c3e756ef258ef6a6afe881ec46790f8b7239ab75cddd433fa427fd65b59b95de759a551d9772546a988f8a2f6ba8ae9915d9ad2bf9f679a3a06c96c62c5bdb39ad83703272de77c15fdf732c7d1725e433b86f160d1bef4de3758fcf08dd8b861300910ad6e08fd91613701f0c8223635109dea3d29a8f34a452b8dc354980a5d9cdc942737e2bb6b54d2022ad0f081335ad7f6ce7c571d6b84d8b2d1bfb2a145d1d18bbdbd4852c2aa651c2b33d92bb79ab1637273609b94be2295012498d54710433ba1cdb71947ceaa1c220c714e5d377896cd671863935f1a72e9f1258757b711469cea1708fa6f32ef8d925011ccc26505a3e792c8f5a0a421f05b3dadb7ef04d1813cb8332371128de4d75f9383abe533f08a1608cbe0421217fdcba721234d8a2378ef85fb34522af0bf58bb0f3c53dcdc85b0976aceca00e00f7bbb9b413e96678885222c5cf292fd880a09ded70790171de8a5c0d9d717c6aac8510c7c75dae380e1b31c2ce67cc79e6783eb8bb9dba53047f1eb721f7c83c1b8b3ce5f5a06cb587693915b7abbd7229c2f1539d7967c64cfb21e52a4c54bb5906a0f1456005a0cbebb13216eb23e0b187616525b03f7b0df00a295f81417607c6822fcc15bee6245fff0d25ba25e01d4b0f12d766fd6f5fea13b11f7c855e42ae98c4a3c522951c50b37b9d37cc097f33df0ef55ff34bff1948b7310d499d6916109af12867caa129801889d4c04fb827214d3051aee31c558d97bfd96c3bad5b7df60dc33dd07bf9da24a2b39e00975ebf8df91ce76450f9baac8de2e7c000844303001c5b8e10fe81c78ecd912483d1f7b3e9c78c960ada65b4ecc0309090b2ddda6452b03a99a9fd291e9a20a6a9fc14e192b6db6028abdaa77e15b46a3d53961c62b001a1aa9f3e6af757a35122c56363c5035d9eae921fd83515dfb020eeee8996187a61a00ceddd1eeca5ecf60caa5c87dec61028b6e06e976000748c2acd84c6f0d2cef27e3aece913179218d7741c6fc420828acda2628a057abd6d0270d51b730bb77072ad5e6048d07109c170ba89fc4714baa2d70a3f108057603538030db67f72230232641bf7a59de52d18e806b791b6e48dda2495ed01c910977192009f2d29128c3d4bee09833194b43747307635744784231e38fb798f7b9a3e43c236e812c3585e79fa38bdeef18559c20c5bc3f82ad727da85a9707e63f14ff8fcccf5f57f7e612f821813d09f12bfe1756a2e44b013945072d719131bd9c12e8d4b0f0461faf299c8de3852911b0d277a8b27dff407415e77c0b76e2af01b4e078a950c65819b9434d4b9a18bcd866247b8dc7dcc47d4d29ce045f81d43de50f6b7ae847bfbb96aafc00895e3e37fe991fe8be0ab7315a2f32509db207df4c4ea5428439ee169f05f578807a55a792aeacd9c449ff374dca820f5b1c0102724a5d78147c724816087d4daea6aad8e452428848f88e724fc6354b674ad1a6107030f11462301d05aa5b00a1698df57c6978adca801ab1e1b46f146562fde1ef57ed05b09cf068db5e576699bb7ca822fc457626f2cc934177f20810eabf42eaa50d2f37810b1aed7def94f0b5ac14f01a0aedbc073c82a423b89ab6f0f7bac63419c941b392a5908c6f26aa562cdd95814c93c47513b52c298079b9fa28d6a9ee8c3dbd9c122ba8c46c40988d85ecce94b908641a82fe9438289a7de85d42d30814ec71b5b2c71dc8480482be4fd15ac8afc15063eacbbbed448e5dac01397695fd050868595693dad8e284536694d3023aab7cb3e45e9b25c098e24535d71f77bb136fa6ecfc0c7ede435773ab403e4f245bcf02f905d3b83cdea18abc0629d4b74d7d031a05f268c313bdb4ee84664062c7ab309bbd7f729a7916ce08865ee57e90ba476f60121dc4ca71bfac9fcbcce4f109b61546e5f6159e945db442586e215224525713435a036cba934e63988b3c863140d6e2cd2c7584e3ce2894756e8b180e5b27f9ba78a3e75e08428b8d2912391c1cba3e6c0e244e4f9d284e6375e11ae94a113bd22e8b4f97ca7b6cf35b4cfddb72c54e8efa4caf7dc713e2b523b14a4219210265ea20edc57c85640859d0858d4b7db8c800cb97486a9645de01f06befdd5db4318ecf9a1c8af5d440b79ab049ea396ee89a5837dcdd39b1628df4b071790ea8e8e15c780658cb9cff961ca3986b063174eadd7121bf76ad644d009e2ee51710f1442156dfd68f87e858080c2791db06017deedbf8616c2b752325be5aab8b08166c2da1363849f518bd5a45ac9a6bdddda6524e7acb3332ed511e1fdf345866eca2a2a9deab636884f5373db2411f2d2081367b3070c34d8b6e2efc191c9f51132c9e9a6a32d194d3b3aefb24c388fe9cba268540dba5438a88b09b0efda67f538ada30ee8ae10022b33e72518ea3d2d8f0224c54ab8af905644ceb240359ae40c3725641f6d1dc3fe0bbe5c2c74b15a143e837120f31d7f8bd1549c894e33dbfcba6d11dff7d4c30792c423fd335d4c9285f518cd80fb898146cdf8475ce30837a1a1ca9158f5bcc91c43887bb3573a2a303e07fe3c9e0ca1491b76b8ab67279e73b8f0d1915566fbdbfc6175b1293a60b1df585ae2be1d9cb097fb6553c43e72fe5b1f7af46d004d530a71b233720cef231d33c77c5b4d911397b98dd111b4c0e2fb097c177b4ae485d6e3ae82c637edcbf03e2f749625623684916120805fa1d20420dbf9a761f6e925017de5e5680f90bb3502288814a301dcde04f27956172446a69f3e590b76d1b887b978cc56153c4fc533ad4fd07379476e5e8b8573e35eb1f100fde6259876c2dd403077d50de94ed18e61daa8a340e16f59d0ad9f4dd1aa56d0e3a6f26f27ed62069294c29f9f974bdc5b95bac203e8fca3187a9bd1fc603e17a8b46acdb7118dd43d14ae182b49cc60587dd1f562569f19fc047ff5e4accc2421c154b35947c0b1b4d740d17ae03246f23512b105c772043f594572cd1c8f8157e1cd02526357de25a5ab8891d58b5443009510e629754acefd733b73feb19edfd0a6dd56e53c1095ebb4f9780481d417619b627bdc828cec3c587785c0b841296afc930af7b709e1544a8b2a2452e5984882033c26daeddd7313265b4459a618a48e98d88f38ff645c93e89206acc4800994173e2012cec44f716fa64b511864469ec349ff7e6e62c32979740e6ce1233d4fdd84d23c04d4ee609a51db8ab02274b0e274be9e3321a508fff8d85aa852883a7b28aa272181933a2fe9f17d9c318d964652aa783132cd4f71f4ec51e2f04c7ee15c94ec7e2210d292f466c8bb8ab484ede6be01e966414df36aa61238783074d3d9b2f1b357471498f67a9277acfdfee84bccde295ba9e6d7be1bb5bf578d49afe47958ee0c91f8ba2fa4994253fbd211ac70ab14dbf61e8129205af6fa0a27ec078e450469f5f84d8b97206cbb3409f2bc57cba184e379f912d0f8c6d2f6c3ddd51e1d5467173aa43b380ef7524fc18afbe9da4c06d30af0d5539238d7c46793ebf965a22cec6d535d4aeda978b2657599933ba918f7e43c26b693a92fb8375734b5ac7a6528535a1612ecfb24f2f0361bcca86d517eedae7597f6e1fd87b823c001295fc3943b4771f86ac52557dfdcab620921bba10710ede1d340843da259a278b3be3e5e6168d6fb39abf1636f1788533e1d1194390deea0e61b8e26ce5b534cbd08668b0258fd38be8112b5b7aebfd413db77edca832e6eaafdf99c3e0c0258a58077f03cd045b7c8d28d89c690bd304ca7a50519354d204bcec00f82bb391b6d08768b224083983b0dbdcd5cabf334fc5c0094cc86f1b32aae8211a7c235c4b9fce84c32d5e91a0e1f1f322d4ceb0b7514f3ea55afce2d1a32f0d48a4d72267bdadc609366500509f8647622b0aedfd749847e5c20a162e688a1a100dfe50a0d4435b1477b4d44aeb72cf001dc8fb66643521c8b6d51810001400b4960bf24807b88fbc1f652b10535149116ad26d079504c95d270bf527a466849ce7e50e0089ca040655633c706cf5c58bf661755dc9b7b64d928e5266b0052e40dafc697a311d4a15ecdc9bd204690637c3232a04db4862be58fea44982cf4206ad6434d9cef85d45b8c32cb42a5862c2d0b7444850bbe3cb126890faff22910e7f767f5af32505a426b0317c1cd21e8d15f08f16d99ff57d0be2c0b80a9646d4defb3a48c51c90c91969db1a641582e35b846df481ea8dc03ac6279129202ff82fef89956dc39ba4e28174d2aac3c87788177b1d77de5101832487090cd3722bbc85e377fd4636faf60a4e8a9bc2b211b1b57fcd54001d7d83e10bb984f99bd6aa15a6cbc2bd772c404cc787334ee02cd99995c532fcc1cee4533217469dd8263d67867769f3990e82b9ca7177fdea7370fa489b0f93ff88948f7a76dbf021b601357dd3080a93404d3f12051650637c0af7bb93841629c03336d288f8916e9d8c922c8ba4a369d54ad5564ed290bc54f61f64d4e145b135609cc3e058f329ef3ade827e8a158e0ba976bd22231df9d1b16e887a8f22a799b00cb62d8d4f7424dc8047cacdd9e2fa64601f0e1c6971e48241feb6a15c9e24847e0983133840a92b4e0f6ff9d501fc8b547d66ca9e2f00b8933cbef141444adf6009ba78579d753508a294104e3f16954733741492ab6245dca5ae3f5949489fd69b78790603777a9b429048ff1cf1b21141448334b0a37c6a2de5b564650f0be73e22c72b80591e7dc97bc9de2bced500db5be2151b78d241099398877a164917a662f3324e590f5c00711d3277de809491bcf027fab03e6c4bbfc37d0e2833ca6e54b98981f54f35ce0ef5ccf3ae791944214ca9a4f17cad42c3f81b23040f1504bb038a6d192c07e18f7b1be6b9fce31593dd0acab88ac9e99e8019228d88e659ff701954cce19e3bc21e9b10439163e41353984996bc3a789fa354953f31b4671f2ee8ad4395c255579ac2bdc079c8feed338241d844bf4ea2ccff87fcaecde7841cfad3e5c4b95e92ec02476ccf430050ae091ee6dd02dd5c0b02628aa8b29bf848e3c6e8e6191f8b45c19ed42241946a5f65c53f4df42a635853acb478af61d940a4aa661a1cda0becb570411274dc252a46960a0b81c54a23251ead56fa851c6e1d51489b8c9ae517449658fddd3c6dcb52ea88ac7c5fcb668b7174954ac8915f80dc3c2bfd46f0a92211332e397beddcbe23388fa8b28a38386dbe64348aae6aff112ebda62d06631f3faebea1380f50bf6c0bab4aab82e09747066bc56185519607becb7263953acf30d5e78088e6d0af032ae7798466135de6723875662c552e44105e4901031df4e93d30cf07183ef5a391a2ae930b67624acf592c5be55584b3c9e4f9a0b9e4d0c8b39187d238cf5c8c0f4aaf858bba4af82e7f42facd99750536150922c2e6c69200a967e6d58b9c05bebe4fbddcb8c551fc75d2b6423fe5a1c1dbea9e71af80f4bf5daa68d80fbdacf9a3bc7fd3a1625168178246da0ec0d66e821ba247ca56d97c29a15fa7d1a7905d3b16d1325686e2d520c5345b389be8191d175f1d7d49407a80b4f3259b05c52e2ef7f1b96a83a80e23bb183d91a6509533238b8320b93b8f594c3b801ea559046dd092907766bae4836ea281542539b2ede456949b51b58ffde7c2f74a6eacfd660001e02c6882dcad00849a8892cc68bd5059b1189a884db8016a684b080ce0d904102f3be0e4663451be18d34eec048f69e8fa552443b7718d18aea25dad8dd1204a6c8b924ec0b6143ecbff54cd1b9d7da9b4f129bd408e353e43540b26d49921482299d12c8729094871304b6915dc4a48737fc895381d65d7ebdd28d5f4722db99c9113234f2dba097e9474c9668150bc7c830f09a815ebbd2743279347ce21731e67fc68185fe4a1ff48a92eaad4e6503b0dc104a1254d45fe9647bbaa2e9820ba151dff2579253b0473f6d4723b7177439f7f96f5ce5bf840b053e3b4e00e83da1cb91949bfaeeb01f168d19f2a8886dc4e3658f9d0328d5134970af8eac658687f0ea9b02c7be2a799dc76cb95ebfd68b13217eee17bc0b9d4170b21ef35d897f7b1745589af6ae073b5231ca7bf83f248abab65463d7d21256b0fc2d2f01b8c81e7a66f40d0864f948b3840a4b666b94d4866643cd3da7e1c10897058b298221a761d08fe11ee43f6acaa146ed4337c408a686fe6b150e80b466f7f7fae5c8448fb8dc1a2327d46fa7d667dcc2922594851c0a071ececc62c0ee76bd6c101e78a97544441e4ddbac6d08cd15d0e5704c4017293f8ddfddc4259e7253d829472a3df29713f09d3143e548f904693ae384fa3d230e04140f9cf47a01995dcc2287a627bd57c7ce9a56ae9400354d4f638a7d9b5675c8befb68e07cf01b4abec53f9693d01ec57b093d584dd59fbfa6e77b37427469a1aa5ab0e0537275b91adcba26d6b2827c3841a04214f204bac1027f6e8188d41955510119357c7e77823409070788dc17552ce0c32ba101a85ebdd22791a1d276bad4eead9d9f87668c20ced7927e4868c8a6a5a881deedef3140137f7efba6b486e51ed1384bd2b14bf968e6931e1be75c05f62cf001b88260cc33d1270aa0ffd06b993490bab4917a0b0b2e34bc007cc0d09b2fc940685462287895226f35990be134607b4df1227d34298a4482ddd7d999d5684cf659c7f990f0349396d6fe6a3d10e88f85e85a135c659349c797744f8364dd5b944edefa2466f00a74140aa00b69b6aaff1413361b1fb1c92792da85ebb90bbbc1086affa2ab386b2bde3fb71cb7c54697b246a23514ea729f28e794266e7f19f9fc5c556920a6b42cc58efbf8da6f9daa2f08a5153bdb68f4b15be76138c1aee37459fb579f3ba3a1eab9fdc61d2d9c72d4934e6aab389a1f03b3d6bc968673743e966f88b679947bb996b5aaf31eb5c77a171198afcccb09c027befad1ab70111ee95a0ea5a4db40268bf19f3e44417cad1cb150c1f4af6a097e3a9a11da766994ec2c4a89930e2d6072980bc972e298fc121ca2a5690110a784f63cc7872cbcccb50e7585edea2301a22724a5ea10d7e830919b0213ecc00d4c0e4bc172f8e6218edaa1e454bf5a01eb93af748cfdf4baaa9831be3a0eed50f40dca5f89908a875d8f1bb6808c1b7d4ec5f73db91418be3dd1de36b2f09b3918b1fc1f51f13c4734db23395730474ae9c7a69724d84c05a44c4ce85ea0d013c5adc147a6ec14939e8117b9964118d3e34b1de5b32c786c27a9a89a42ec2bc64e6aeb6157260e3e96a9ef2ae291a40809ddd05f9b767386646e8a5413236bd55114350e60ffcdf38a77314bf49f104209404651836cc8e4a1f43ad9a08dcdd8e19f33c08e69798312e9d98d3276f2f37a5794408d6d25d403e24761060aed78ca4b6d3f59b90ad746ab502f6d9642884cc6f18d3f2f7ea612656f1ec2ebabe0cb020b85976554ad030cecf786177e5390641a7926d8f2920f46b7be332e65ce9e014702edb1769a48d3ff03902eebf3743cbd921431013aee4200ac3d6c95d4dd52b8b60cbc2a50a9cd4da55091463dcade2ccfcc1eda1d9290fb8926891e8c72f640c33cd600e29dab28a5450c4c047fb2b6730a41778d12e44d04cdd824b0ab1793c90f54dd9185c1cd914e46c735901edfd9479e80bf19289ed91d218019b5fadcae32de4a7fff98a7bbbbf14e3eb48437ce2002017b9bef580bd851ccb5d6c125b6cbfd1b5e311609eac517254d9d5038e704e897ed91c1b5be470c30baf7b5a3ca3ba4746c85c3df13162e19e656c45253d071dda80e68ccad10c00fede0a6994972d655cf7f823651e00e3402c1023002037dfea20bd3066928a952666670d56900c137e1d295c0c1dbc8b4a1f572f0a50636af29ba4a47ce75292fd526033714f29199f8719df407ea1b59d4b3a3ecde2044570b9e7ad80273a52d5e8ca373e3c34be29e285dcdd6667ba5056a6abcbc5a212dcb93045834afd95cafc1e3797d85a297052c164a885cc69142cc1936435d6252b273c781c91213a10867116a9eaa1fe53361ff17029061f537ee97fdf06380f78e7ed1f57d2743a667d4aea168edab2438afe1f644f9ee23ec637bc22a72884cc6645384122ad260327721c4a96e6ee1e7327d2883934f7eea6ba1fb61e538b774b1f25e5b043d1da9f6b6453d9ebb8ca97cf240f9e97c10598823d2c7276326433d677e12e8548c4f1ab3fca9efe5e642a6908615d202c15a7eec88ab3cb71c7f5437b4fb88bc230f59f9309f72536b02c62f7ae6558a05eedab9b0f6b7eb22752e04bbcc9f6d361521f44bc7fc1b65a1141042e05e57f80e5427d5a8619071ed8ec0d4fec35124ab153be45bd2b63795e2a284b41b47ce60b3fcc21da44fb445fbd238dfa41eefce781f7c5a3c48f590db51a327bcf1034e09f0992855723c8a5342800320ed423c0016b1a6a4bf5a8ae728229105b1d8e4177f112cb525d8d4089c354843f82606856f763d866f9cb86f83f44768f5d140143dbaf6dacb9881587827f659ad8cfd17b749089b663fe977493e394724a2012e69d44d8ca545994dcd5fc91beec550cc3bb09691a8ada384a54620e55d39994966efb1d54e828c7417a4d547f43c090bfeb8e03f84949440fff0ca7f932d463a8d06c24fb23f2bddd12480be0db07ef0a9d353eeca8c368cf181814a4a7012857bda1a6455abe270e48eb1220756c2bcc49bcad5e74b5a7aee26b3ede5017855bff72a38e9f18d64d89350515e0a6c02d6b0329903c20a660a4294e63cedc8376617b66a385ebbbd545d5ce8a4e9b69815114001901382a0a3bc5500b96abc0a9f579a590bb17f814e255899a6f680de921e51e8cf7b6d2cb0c309caf70928cd430e0f217823faf47121ae64b675230c5351e5cddfbf23ae44e112fae4e16ed86fc6809ea4e35210b63a0b6a712b5e9c1ee2e704e4e68e23876f4e407b8e8e27a4659e39f0faf526f39cf577fa3686fb8862c46102f0886793eb67503b3b124ac2f9d8f49c9d9c03bd95862acc6763c669a8672ccaf5d945c1465a6f1ff6ee81f7658791ca4d6742969b43327cc4ccdb8b07e0cae5441f4005c34b90fa2b1cea735e0bb7b63a93069ad2a5abe1266c360dd9d0226fc377d75432ca5f390a6b23dd34eeab07764fc610099fe46766ac39db214a85ab3a46ba99b9ac5dd3a05de5d711fe800743f31712332bcd978e5fe23bbc8f28e2ff06894bdc210f4a966bf0b04380c71c9cb9023d1acb6b561d3afc59d84c08641ec896af1abfc5d8d05afea90ccf44e25dd3a2a23349300be7c1719f2d96acb611bf59cc919e365d230d0faf0fd33c527f4eb6a1db8ca8dc220bd0c25041961c4524294087b349584b209d426d9eb97a7dd385dc5fd0fbe67e10fe9cb6b7a3e342db3a37c8cfbac67765a4106734637a5d602ebc5255da098029808c6c49229f779063280856660691c9e30edc9cb08d67a01b4bb9be64d3d0b52f762bc869d5943281861d81c18374ded0f970d6fc3d8df6c650a253c3f4a27c555417bfa05a71257af1509eaf408cf5ad4be2306ec5ab4b3e7be55a4a1586e73c6fab2961302b3ddbe5460c8dba2c7a973028795732519ab484098d547b9a22a6991317dd22a7a65ac50e2f09edf615a9e9835a35fad27348d29ed367d00985c739a0c6ff3061bf8818220f8b59d4b8d96514d3d6e92e1c73e74175b71b6bf82747735e3612fa56804b648032f2718b5bd4cbf27051a82aec8b8fe3151d0f7249b86ba92e70cb277cfc87b0158a7eee3be9e2d0f285a4f84a4d959f0b2ad7b3be7c88d8b6ceeb220fd446dc661d85b5b433d99c659c97538b68d3b92057938bb82fd4b55e280b6a5359e55fa11e4c21fa562f627fa138cf45960233612a664915cede196b417e0f622c12ea587982bb824a2cc9599ea82fd1f72ffe4ad876ba48c1e5761673a76ab29db4d6c5c525bfce8ba7b43376d1941b09741d387ca55bb06480b2a9c11bb41f50e60a5c98e65ae26c9f07d28b7102c896f1cfedc33a592128ca984b769e432c585d96c673e13145466c2b3ec1b284ca25c5c4f53514722cbebd021f8a88152791d0c94c15c152e8f99280d938af2d647a0f2903d40d68cf06f436bb62fa240b422440ef09ae6f5e67832101007a84672705e8ddfe22c228b304f488f3d664389047ad6fac2e10c049d888f4e7e2c208dad84938d2938882f6712e8aa9c175f98a37abc801f280d00b3dc1180ae8ce3342841e407b1842910d8f00fad7a77b547d6ac165a426d85205e878cb8591a7192a3dbe95822b477c5c6165cbaaee9d8e16d840875919852c836ed0b36de764332ccd00b7968fa8e9f17d8f35e21cb275a8312e3228d34b4132d2c057a78e0ee175e440db6e7292b25467c5412057e1453dec32a08c30fbc4a1b77843e7effa2de43d45278d80049a2ee5aac190155dfcc526ef23d47981a9958979ffde2aa33f12d160df8ad08e83c3d4e9d9df6d5f9e8f5a10272b2a1d971ad36761dd8105926ed4d799ef9dafb12861288e6ce9c391e6152c229555ad31090631c0938de68d070782a3362190956282ca0508a8a37dde065cc8849700df95455d34d583e98e741db647c9fe937a162a33da23a13887702c0e8c94d85265f84fba810f051fcc117854d14c35a382d3c519ff0778d1d960deff3aac74e14cabc34abe48a1fd3f28b183d16dbf57b7cafab38849c2fdbeaa3c9cf619cd0807144304e68a01b5c5366061b6785bb4855176c2295b3f4c52d6a8626282e6553ed205be54d80c59d247f373e959610db2a03e0cc86e01459c173e335f1e2043da2810f1a369e17391fa84a14b8b8c0b8523e2fd8be28213d1fcab1506d35d89d0d0cd4a1cc08c709f0c5d1a4920cb84e648853cbec08e8292286017b101c8ee4b0a5175947f377d04940adb4bfa1ad329cedeeacf5a4d072e9c038d9ccd1a2207e65027fb2983f26ae25a654af79ec78cc61e0acc81a21397b5e87e3f9a20bf42ede9e60bafdd95e0a5ceae4dadbde9660a90f759c39af2cf78c1125433240d845c07d575f8a8ae0fd6ac0e30fa95e76ad306bb1ee02edf15c0ba8f63380aa32445f0b321ef69cc188e13ff8fd3683ab03aa8891a492e7225030cf79143dab7cc1ee0504e6136264eee9084064661927f06cc53caad2b0c0521fd349303d14449dff6384a76139a617db987ce8cd82a7cb7d6537f9f3daceed9f768b0fe0e7d533e27e635f427eabae5f0afab01fdddd001b9d18bbb482d54de13eca6bae5d2d7d0be7d2f1e6051888236492ee12a2b3ffef32000a82731b8b55b76c747638867e2d224fca1abaf0b7d3138393f4961a1afc94b8a65cacd6b4ee91a10983e43854dba0343e68c84f56b2b286bf2c6eac9f3126229caa5c71b4a672255e4253c916cb0c781a00ccb4bd67d26974a66c0a3ea66f9ce3aec0f4789f939ebbb81c5218fec3c44cc55d31c2576a3806236a12785ad61a9cdebd1a505b0ca97006908ab539a586ac4a1574710846a0f0ef989903de5b87b8b2a2b2ce866dc0bb7b3df8b93035f7046caf7b984ab353de5957718d5fdf7b70ad2a1758ea64d1e7f15ac2aade0fc0f8debc59d6668af16ba258f19925c5f4a2fb1e6af8b0625305e7e49fadbce31c37289536a44233e0ac80779a9d6fe77bf4638768d6833ea77cd13b18e42eaab251529d9c78e8924d4ffb799b5d3e477f5e9edbb8bcadad71170dc8c34e031c57e84ae2eb1d4d61ef062f26f506adbbb296b73305536b05937fe74785d7476d693802578c4cc99ec66c8660882f45b1c11f26b90ddc9056b48c88bbb8d477bbada848be541c260ae67cfe2b4be96b3fe2cf0ee237c76a88b269a02e3c840f947b4075be6377ebc8d22149767ddf927f91ac83f1567f2b727431bf1840020274ebde331f4c43408c8074fd3105fad5d038306f541b1cc7ec1617774ffa2cfceaa6b847dfc3a94056d2040128ffbeeb1446971135c5c8a783a8d8f7854cdab1d2dbdf0fb84f024963712a621a33d560b5a91c6575751337423f4bf0d9ff852ff323983aa2bbed116db869f68fa3a465b738d6fcd075c82b8241c687ffdb40b86ccda1ef38640dbf10e60c590f220235e943480d5ba226f7c042894aa957f761284c426f395dd4657b9ae2c90b949c625540f3ae87c1b664a5df5b32d183fd6ac5a736dd5ebd69d6fe9d98324d309d564eb3bb8e523e42feb177455064f7f86790a0d71d59c6bc2a080c024b1da103102d5bd234404e6c7f5617ee5fd4da1861a54e0523271121ab00ae54d45ba5e280df75723d839a0f3638cb245ef069dd2f552f9aa89c85667607c7afa7a844465c8a236a68e6e2e3941046d482aca179089ac451630889901aba083c32583dd20f3bb8aa75e48148ac433176c9250bac44478939cdd6275588ccbd12322e819a5417f8aadae92d4d0fe857b5d1569da05ee6142b7cc9652021ab4838e4fdae3fa83d9a083a032f2bc13c0d4fb3a284c518f44bdff8bceff46d1bbf38a974889f1f425e7ed1bd3aab882c2e0e71bde5124f2d94c36650ba1d9d3527337266c59f06327ec929c1108b53d37c63d984e1322502757adbdc1418e7253193fa5eac625ea01990304c6e57b05812fc385bd1e446e23328bdc8f2e64eeb3ae9d168269a05117302e7525637ae80c8ad65a40a46a1edf0e08de00962581d032a35ce485e4b70856cb5a01d215910b73bef1f7597a5bbd9d851ef856ba7eaa78decc4d9ec43a2b47c08d3a0cad7c825a0d42974b7d2ec0fdb5fe59f1e7c1b923940d86ceb778309e8f9ea0382319ddef0b744b423171585993721a741cad71f8cb7df4ed40fe5113950025bad0b30dc18950ef866026be6d445e89e5adeefc186f20542bd684376fd322f3b808b871136c74ac18ed1aef8031f3a1af20bc075772502b19592d1bafd0dbccc32d90f938c22ea020f9b74f0eb3d1b5dd2bb91d4221c4513f5813d2ff1781ccaa1d464132790430751c6fc986a8a0a09abf5bd68087a7d945f9e9f7e27b8a534e6340a5d8921c5b0846c41d9ad58f1a3216a55b7c3c6879b4225a05b36432c70a53ac466945f9e32b10eed513514065ef99b01a8e3cb013b88a070df8623e941569990760d4873a32b5f5d2cdbcbc9ad91648b13bcedb1bb01fd396860f4df0c82b33f08cda9e3f13e52a26ead60b0e1c6e700fa8d32b4e27b11da4949d50ec9cf3c2f5bea602f2cd4a98ff41e5b7da7bcb0a53cbb2f91a2cabdc855e4b86fdea65ed24125461e6b0f686164b1ab1d0eb2df05181c43c51d36e46f78bfcd43377b579b6173c98a0a744b85b0d70fd95e85974bf64aec91994eeb47873a5390928bdf948ea5fcbc969fb521405e8c90183201b6dcfa3e7f974a9f4d38f32bcd63d50b1a96722d6252b99c2896f2329704af0b70c63e1f5c779518e6e5f82259c749bb8972ff69e1b94c1c0a59d788154e851fa0dfe49a93735d71f2284190709769fd7f183a08a1e3a31c9b31bed68201e131419cebfdace7b3cf1d8911f17abd0e50829d7cc400f73f1e93182af087bb0c21112aecd59fd1dde39efacdb3721cf7aff79111344203fe93b21ff14b3b7eaf42649cfaa405265a0e158887f6e84f5bccf2448a672a5820f1228b33e1eb7257b1e812e98e95414a0d836b405d9c36511a6ad32e24c4417ac4455eb0c94581dd7fa1ae01de13381bba9feb4271c7d6a3e8fbc0f707609befa6181699724a3c3581fedb06e416a30fed8656d18e402d605dd531b479311bff3d557fe5c27f6c359d3b7e2dcbbf813beb6b9ea68aad0ebc048b90ba4f7268fbce0f3eb60ff7cbac1a3053860687314446ed6f8545e236a11582fe7d535aeabaddc2120910869a9cc46226007c0d091b7310180aaea06827a870bf902b9f192e424401941d15b48e6cbae09a4f38c6d026356b45f073518727d15d142fb9e09e77308d6797be9bb85ee87928475a4f3966e36c3bbd1587f7be16c0e77434387efa5076bdcb76268badd3789aaf05e8f1a5a1591d0e1b859499761902fe1e510b4e46725054a91172d00364cfa3383d9d2a7eff4e76bf91f673224a1e31bbd7a1205bbdadba9dea41f887f0efc3438d4522efa0d1082930474755b95140fe06b60d03ac4f23bc964ea72f8d90e88bd3a9626258ad82b0d13aa8585d97bd4aa6c4ab3e7f9b5bc3141cdde40adfbd4fc6cf65e62587faf1a808447ef9d5418eac8398031fff7619abdc88ee44b273222be14a9c09521d7173d10f184f4fb3bf4ded963212077b43c5224fe6ec31f2676b808f77e783d322297ec07fb77b0603223df75804042849b17210c632984ae4e9424547a69398ae81b6abc38a671e49f89ee39d64a816a5b2f0ca259d4c94072461b2763cf549ac6bc23c36dc12e45f6c7606dc8ffcec30090202e4f2e60e6551e412aeb5233a7708ea2f60e3cf5de083106a8df8627d040347eb591f7a6f6de58c00757eac371e3e925278153761d644147a90d4be87fe671001ee31bdf8de788366f7ac3803b1048edd70a62146c9958884626baa93517cdb7abb6b4c2c1bf6d08ac430565e40fe33b2f32c6dac9d4a44f3f0620b2d0370290575f409c347b6300c889db32b7132a4c05a1d745e8d7d02b1d6d5aaa10535a1f961f4bf48689365958115e0c424c9956b849df7b4e2d9852e3aec0db7e393d442e8fc421db126669d897671615b1f868e6f83a9633241a390e76be17e9ea6d6febaa4c8f22f865a06d718be0b48d15f8b37ad028b69fde63cfc7eca1ed88cdc815e61df3813541483a801f5eb0d7565da022f54c85445c35e204cf070477d69513a2aed834f202c2332469dac58e8d595bc42db3c41dd9af4e15559869b1a6b17ddcfaa5a82895e856aa907c0e274a52d046e34224d7444001c323c94880c60c3b0bf4839e8947d76013c531198948a913ebc928193bd1fddfb1b8c5a2a932e403c926d2cd610383ed35382b6fd1c38c83d5290e7aaed7d7e357140f6162533eeea6580678ebd7e0e0b5923134d86b2e3b2b668593dd684dd4a518412b2187454cef0209db1d93d9f3779fdd82d14703861bfb68d64cb2bf5ba2933cfd41ee60e6f74b71030b7cded91e8b7c4beee2ffb235c06f700c8cb13c0456d145b7cec8e62a1e04c2ad13ec3123e5043fb3e6d786d8e06ecb5e1b3ac50ef4805ebc21787bf7197e6f484b9d65983fc23731eb5332b38538826f4081d3ec5edff6edfd8cddebd451d0f62ab593e7b8e3319240f9da8dfff256faa6daa3c066ce78d74c2df2e33b9f8c8c7f994d93ee63e1835a81a5be6c8eb9d5c31cde8c7dfac20618d91495d03fcca88a8486764e3db4cf4cd0ebbeb5549e0a35d66f75395aed2d739b79c2f95aadc5d203a4cd8884bcec040dc99f99f300a84e83001dfd96b48a6396b64e97047ae15d8d3b5fe9c6a3671917f47b7be3d42d81ce069b11bc13312df2c3b6bf704a2cf1849ae9f9e547032aacda601b7990ed13f3000d956d2e985dadd23832bd53bee88689c1a631b527580aa79fe5c4b262d0aef730ecf342e7bd94b3628feecba5c6c8dd0d5788861e53d57ba452bbb1c9a4265750b87e81ac847e8ef78bcb31c25391a99fe441c2f59806dae901085b1476ecf033465fc3537797243add06060051230300aba0d06a19fa2f26d2748754002eebe0db07dd4c094c9553ea5f69c47bfe20aee722d8621b4fc57ee0fb3dd0ac830c36a1ae4df08911d7e484546ce14456040c08c631c3830208c625999bf3e58fe08acc474b1985b423704d63383c3877c438d97fc3726e7517dc226b9507afdd5918da8b2ced1d9194184b86ac28eded3aa3c211badb01b0b22a3b69cff4ac517e18ec775c1fa053f9e7b25c2fce1fd946fe2010ce12d2b5fccc076f4197dee28f824c335decdfc4c9a078caa14dc2b05a6bddd0a5979ee7964e3fc868f934a1513105e3d6d85da8973d5ff617e8ad11ebd597088de0d488478e0fcf34e2a7516ec03baeef14a5d01c8aa642bdc145d566a9e7aaa5948e1492c4c41652ca49c93a1d96630dfb59469931a04884bef5b9d1d4a28b891efe440d69f9629ba9b6cb2a88aed98304e719b23e9e5118b857f606ee154c6971641f8831485006349e8004da9437d0fa6a6bb65b93a20051b6e67cad485376fc6dd2e0728c6af4a250ac67346cfa2565dae4c5270b90a44d23a35586c789a3a5555fc52a28fcd46713dd74ebe1d26e8a1a5d9cbe6d7f8e2dc624cb1a8112b5f10cc23f2fb3f530f72f316b0a9734306aabaa99439ef88b1bf0e18f3630b8eaa52f698670ed64b4d59882aa4bdb95cb0871b48eef2343e81a000381128805d1ed2c7bedabd2bf28950c4aa91f5a585d9c061f9b4c6c7b6ad6a242362b77f9bc06265b9ab59d65d247199c45481992e25edafec1c1930537f2647adc6f24195a03b494e36e60180fd6a3934b497c7ed7b39023f16554ad9458ad24055f9a7ef80bee15722bb6ac70a2f893dbf52873b80f263d3f427e8ff4136a9f1ff8ae640dff288dcbca613766a00a1041addeeace9b8985ef32e2d4b89bbbb0c36389b32b7a066bc0fdd65ca233670a153699156c0a451bb3b80bb86820818ec90eddd427ef545cdeb0dbc07ce6b00172190a83099d60dca0403fef0758a4aa8cea1f1369982a5ace856901dd1d7bb37d0adf98a20d38dcccb46af74d56af255e151dde3641bbdcc45c8b0ed3f029dfa577e192685f9237c4a4401303248e5e33d8f7270dc1905724bc7aa4aa554cc6245688e36e90d72a2d54f0c94cbbae6c62026a4eb8ab5f6c3b61764a5cbf7e3cb03ea129dbbd84a1c729343a50c9f12ad5e804c7393188c73412e852cf087906ba384bbb962179a19a49e448660aba562247eb005628ff871cf39cde8c3e2c9bba18959338e0217e8d688baaaaadae4423b761710a15c6f3c79443af03e6724c39f6fc8139460e25c845b46424a7be0b433e5822c83115a74c0b62b334ad85d9e01d1173d0ab69d1280926fa640f986db8b8e1b313baeb7a177f7b7e5f39a6747bdee9982b141970868ae7a4db65b059be061fbedb2a90610baabdadcd85e4698e759299fac69742b37f40ca432d64ebbff75bb5b53594bd63e5cd5609c091ff599c6aab0c094ae8bbe984daf29c54a9a48cbc4069fabe5c106573a1f4a18d98573288d03bccfaa192c694f0938c75db7702ef20049157d1a18bafd63881f1790026dddf2cd7a65653163b585e9e15a319f33121b98ea5a614f0f78fb158a8fd63fca2ee5fed04727df5aa6381ca5e20ac1ab1a71f10a2b16f6cdc94d04601e8d74549ef8c401c0e88912f2d2d4dab28b07fbe3d38c51767265794e3c2b6d3bcddda7d9c6e3e0a99ccf34ffff47f75236350092edd59c2262d28de6e329663cdd78cf221bdd31c1f844a18f0c452016f0e3a0f4fdc2936335a8fa2e4b496884639cd45749a358ee57382b944d62b9529dd1ad058bce9ce24f329264a251d1f784e1f309521b8a14fe1e84d506419dfbd1c0930edd4049b64c80f0f1cc18a101d3b2995b164dd18e69e2267eb164062267d9d23d79f729d4dd01a8a8fe2c91e35fb60a0072cfb0f7a4b00a766df6428a26ac864e155470828f380e7aa68054e8fc038a75cce4450e5462b3886e544896b048a405407e75eceae6cc4b8b34fa21fda47a7fda4855ceda30171ddf85481720ebf3fe3959ce86ba5c0df3a6cd5ab04f01aa0bf53914d5c3e0af356a4759b7cdccf753fef3825e77e71a074b49f68e4824d79b9701636b70349128ed6c24b073d423beb3851d751cc920c998a011d9e2c4ac27dac35b647d7893485cadc637af1512c18e041ad7b93712ef2639c4d9d17f1ed165449d58fe18c87c60687e4ff6e9ba0b8a0d9a9099ea4392100f330750a0d50491d5221cc23ac10179bd54044729583cbd0647c5b139810ed52a8c5c5d324d526577e108a64098f5e460ab36d0db01cc35e6e81687495cad66da6bab7548b4b23b8a6750185f204980196b334a2b8202abf9d37b0c01771baa1e171f1a701526d2ec41b0ae0eb143dc216cc0cefe2ce7bf292823e63d5124506dc02af032ead5c76665a0c9eca65d2cebcb02836ff4d05fc8b5eeae46210d435db6f0e049c88b3fa93427cd898f9250e5d9c9e7b84f55abb65ac58d167daff2ef4fab51a95d9325c4b2f946c29d5a866faa55796b1948cace891a6969af016b7ec2eab79e04ef87921584fc9a7a7f24b5abd169cf001407cca9bcf3da4229fe501818de8f5bfe87b855b6ab87ba1ae8e2c5213abfec3c9867a9aaca9ddbebf4f198a332f69e18278a367e59518312cfc9fb2129da8b6d8fa779a7dd846cbc4f42e6b6e6dc696a48d8eba37c9854d047168690d806fee80b62614d8a032ce45519885c06dd1f846d0732a0c4ef26fe8949d4f776eb32f61c8f5e3584082f126f60a7343ebd660bcbb6d5360f52d120cf377f1e70ab69f92285d4485b0b5e85b5325fa4b2c0b7c135b6b75257fa33b16b4accedeb0343061002493e2f33a4db6042b9b73d142f92f5644671a5c7e5560baaadab9024c684c8655e234b97c9896fec09a43d958ab05ddbf61db31b04a6aeb8cdf4f4e841462756b91613229905794ae751e8379e3f70404d2ebaa0e56b7167848b2299023264a0f6d05fc6ced14d7857953f16a30ecd921edf56c572bd1e5c534a8044cfd51d6c9f7af38b2b8b1a526eee72cc84c6388a7ee0df58c087be4e528dbddc1a18e293d52c596d91d21ecb594d5a7083bc5b4b8b04046a0ffa642e7b345f8f44298e1ff4ded68d4b1b305b901d0513eb7fa34413457cab931c74799173c71bcb444869fd512d74c8c09b00ab5cb6e2aff5ab6d5aabe93156e4473ac8aca1ffc355fd5c7d3bb62b6a93290cd0dfa4a650e328415585b822dc94739056b5d00fd647278a5f138306fac42536de3ee2b73d884d9ebab5db533cdf0615ce031138f0e17f1224b249365e897f1420441398d702ad15b67fb1ed39bd0c034cd0d215d0c8276ccf1fd72ec01688233e3eb1dff91ee93d8296a2bc14e7cab8dde2abc2590989b90620476bff620d9c2e0821b2c74b6592e3e150b74e6919657ec7fc997c0ca3af730f804505b738f4158d08e2940409c97428f69874b3400beaf6d39b7d762c702fffad0421f91b913d01e961cbb13a02cf1c4869c0c1bc51b6203ca5714fd951cbbbae3c793fb00e7a8ea6e724e41997adcdfeebfe73e187a335fe2c216d713cfea38a47803e04dab161596f6a4d352b1e251cba8795b545fc9bff62893bf5f5cd34831ab013565f3f111a58fb88f0367e26a2ef505287cb4ef7506808c78548e8055c938c0e9033fdbfa9582cfdb4086e160819c7676407eda25e8e4cf73e61b464d2439df60b0f5a5bb2d940f27d80d44b92fc9884074dc73e7405a385a059adb4bfffa824cc12e0e6cfa0d535b1c907c3919f0a93dad2d8456fb0cc95a4616c013f21cf82b07065057b55f1bc5a5e6f69aea95817075cabcb83c3a1f1cd44eda87cadf76baf9078be857d91e624a32e850b0b0a4881527b00bf0cf928b4886b74399c2c961f4e706cf267c6a2b0284753b2d632fd2d5967932288190bc4f5d874382d65e6d751ef1a143097892f0b0ceb53ac3f8c4ecf73a1fbb382a7aa58012228bf9bfa7a7042f4387069887f13b242b4ae86750dc8c171c8119a8715eeccde62e17c1257c38727e42c1825078c40c2dfdd6921f23b31424e96a5961c02146a66a29d7d46c0764a06e3f57a1ce7e9223f36f28bae0325c80940d60447aeb5f6d9c1675d17d0c47f8c959e7c35952ff497646b000df3d64523fd6e06b57418ed71ed3ad04bc75351b8483b613de23861b2e2977d32684c6793779b695d39f434562ffa9ae8eadabba4af7441f1f23754fb73f95611b03821f1df2381fb58816c289e85ee7e1d6f9394d033080dd8baadfe43124f9e5be2822e8ef5743d2daab378c7ee6e88f13d43794c2e847373b55ff22236c89283f40e04c2de5ae9e33fabff81d4af7ec85846479bb0546bfad0d93a7097102d02557db656465bc51b081ccecf4e4afeae47857d63a27eb1229b82740c98061a313bec14c1b5d8de6cd64042e0c24dc6e47f543be02c4a99487fb1b99e5cd0740a791d42bda3944c1400e4f2f98189226fa7de23a0ef670971c1ece24775d8abe1a702a128e357d0bec4b50faf94888be90e2fcce15bd22dfd037c65de8aad96e0ec64bc51b0af0500da22b894b9a523fe135325b61be1f25f622b0a70124c5de53e0fb43451d70fcdebf975517bbe083ec5f63c47659ee3678c8714795143be1565750c5e3573703e30ef1c887280376e90849aefdaf6cd11ebff59de805415ff0f597afde0e7edfdae3873437ef5cd7bc46d3659731cbe39f5affff916598fcbd19a25ca54bbebc3e33acd8bcac2797a1a9ea3d61687eb8358e288c89e35967859bd3a2c267a41a05d63e4a79fc3749f9a4a764693d085cbb1ddb81c82339d48b2568f6d94725652db6eabe2f4642c7b1f952f210bd2d625716711b80087aaf3c762da161d453347f61a07f1604839308f9953879ab4157f59b9f553a8e56d4f86c6f7ea821147d4cd1a9a5f5b8eac9169c5a120a33108b87984fe5a80ad9c204898780674b13bb39bfcff3cdbadc60c0a44c49e2ddfc291c7bc19d221eb8e035c2effe6d876bd105d0e654d7877ba0e499375a3235aa75c3e5dcfcfe5a2aceac5745f6e61f04721a8dffbaf9f12baf42b9f9cff37d80c08ac38992c98ff1b8557401bae4fdc4f5e6671490d1ccebe84d629cada62e609a9059fea14c237d28409f70c9bd1413850bbc0711a995087af06c9bdbaed8a8e37f566a7e0cea93fc0f5910db1d392b21f9cdcb12d6ecbba4896f8beda521c97f2d37b61417f9955f4aa8fc3c911478bf1d68ea7f2924357407e6f883ec41e0c255cd48cfe7eace2461d55fcd5474c2b6ad5c7924abfc608cc30fb9794d8a61e49246f9833565bfe29c821202d7abfa614a09e477e487ac08296b06e9bf8a6d903afdd609cff4db27dcd2a777e1550b879dfc95bc2f6a89fea6f3738bad32f48b41d1ca20168b99bbad3cb8be1e9edc8fb99295c36571ae656361512c3463d22a2fc6e3fa267b617b53fee62553abea3f3948719928efba33a4796c3e05f5cfb5b63e20885e40ce19a4ffb6fe53dd12ea14d2a1144ce85bb3ce6f48144e463718746b3ceaf56bbd2f16f6efb51168f71c6f45e1d9eef774a01dcfceb6c3c1cc86d59a3da3b26daac628bdc5711a5576ca2fe9a636b4e922b2cd784453be3c3a43df40a70acb0cf1f0174feb0c21faa4d1a549e0a555001bc726161524d635391df9d818f3502d2b7aeddb23ea88364d5773391f22d7bb2d27be8209164757778519c30aae7379b467f1538eaf9b49c723f93cca4a58db01e9fbce760b33947243f8eb6d1edc806af03d54c2f5c78e2a4983a38dde5f92cc8f36bba1350990765ae041384168018643890404d1d3c99c4e9ceeac09c7044aa43e12ac1d40898444cf73bd4d8d15e9272e0bd63dd03c692f811e7dbdcb911d91f216a1d184f76665064da1a8354ed4f2fa35e17ffa3225563e81fc61a4915c1f059080a03451224a2b4c9237bd9eb7f8ca4637c85a4de20b24f194f0d3fed6bd805217fe0fc603469ff5e5634688b07e6dfa305a5e18c4b3dad5848b166aae4eb606825dca49e3cea829899988c8726628e4e307bde4e520ac4d0cd2347e53c68ba26d3754ceb58e0f52656c36b3204d791b7088d05c3dfb96e2a29c6694104f4ba9e18333d2fd4218f582c87552faf42ab374a0f3c2793e9e788c791bb8766bf6924062edb3f191143b7afa556827ef0481c64749d3fc427d38c18df3ce8e15b8bcff654c10785c7a60036e0dfb6f8bcb8fbd021f0bfa9cd7543868d97498f68096c55b10c37cf50db5559052fce8a1ed8bf9036ab8028146c82e45e8f72e89f05c29eca649e74c1188875a892c9e76c799c3e31a6b3816400d645ab82183b6560928e214af0a927af68d4758f21f5a6547eb1e4ad672151afe54c8d8e3ad6b88f23c3eff4078d29718f7e76d66e10b04a805e36f7d5d75301720bcbfd572c389927ab58b1aa0f0fc255a5d834e3dd04cf4853d765652b34e91583a012b766e8f734324ae6cb201fe354f9f7297f71763fd26315084920e0555a908ab2e848476cc880519bf033e3fba1fe0ea23c7590147e1e129141233040ec97fc5926480ec87f4197800a7d4758cca122d8ce52948241f2f5022c032cfa04f19ba0757be7c7da17c6bfb29435f103e03bbbf3f3ae90b52ae55bda0c333c7115a29094ff614c137352c3c2ad4259bdd95522c6301826d3193cf8173fbc0c96cb22996e04dc93e3055d5c4d527e8b41a34bd12ae8bee50df3afef1bc5e7f0b1e9f7c4bcecf41e28265e7d4121b2a37cce04c205ca6b7e00d937948cadd025ff7620403a76fdc2455a893b42014c62545a905cf078cb1144a641e49850df6af3537d0c9e84fa63b1fcf0bcc2acde62a6b212c32fff4b8e0c21e5dfa2f2e85324383ac01f07b5a9eb848da815666ca50aa1e29f90a9da0aabed14519f1caa59b6729dbe26c930225547fcff43d41dfe61a2663d717e7cff2919a13a8d14042989adcce47fce563cc0783f794a2838be7e1018c648a3bf6765de7385666ede5b01d3e6913c820a1b46b992c3160726190165993bdafdf46dd9f9bf4278d12c21c9909fbb4e971823e1fa629eb39b98609616816e3c5816a81dd249426f0c11f273a769d2f137c580b8064915a758f87564ee828f5a4b6096769d95621a4891cd120615f2fde9157a54fe6d9e003a97014b300454c042bc2eaa88046d3cd8e1660ec643b7c8411f1ee16ee33f3b80d12f3c2cb1db849c38446c9691211b98817a771ca30351fda2de2e276cf5f33413f5ea90e43dc4cf9e524def371274aa897d248971c723485caed0eede667e0b9ec2b84ff7c8b85a3f00551cfe405bae20458fb612710306ff4ac84b3296d4c85cba314ac0a8617b5ac88cae57017e8475940fdff7da20ba1cbf7377c40c067c15d2a14bde98f9e8f55f4831e06bbc13b7e4bd2e52ab930cadc70163220a2510b9a6b3903af1c7402778534f114d4b43dc29ea84668b3c206738150b9c406a549cc4b54c041f7eb55f849e51c4179f2da54b0f1e9b27c1f68122892fb538d903e6bb22166526e3420aa6c92687758cbd9aadb09e513fae5b6441ef4715a2ea882f02444c2dd459e19ad38c40435a9395bf7c6c4b77e9ed7853b1b54b4d699106399a97981844109f1d4083fb4a6cb0b7ab30c552f18b642a6e334fbd723c375d965493b728ca2b177d0a6f2b5052720893b93f3e688842c88bcadd10aae4aed7ad0adce0bbbad7ae6d3f03f9570c7011dc0b389216c36c72a876d6f3f662d29847ea8275947398b116fc91e07d09cd79544829c6a97ab42b2ddec0615056fc3e1e784ebb54fc00df15985985522abf913b40190ccfa6b173aabdb06749af6a7180e694c9858e0a5a21a922dcca2a6a211b28ce35959dafbf26061175d260f5a084e0aa48f0f76647b57901918525a6e9a4fbd68994a7c42d692b8a46aa378fedc94cc989f04f4f10da8189d573f9b461316ca003057ec01c73abfd801f585f41eb685f4a9bc32cfeed81a16bcd69db98cc294228a0b735156e435dcb305329cf2204394bb21d10addc0e5b220e83b98fa84e8b03c99ae01e5d3d5ca4357d84d44113a900d5c82ffbefa9026530ee783937d3a52b26ec93a76df0a89ab7025891380369bb3e0d97f56d6108fc9b5c4833f49ea00290600f0552c486d585e3fbf16518853ab0cfd84e8986db4521d0a506d60311f448f4f49f7e5e172db42b68c18db4e0795971755e1bb326f814fc70bde815dcb46322e0d0c03012fb8fae35242aa4c6834cc3b570eb70c75e6a3a7540ebd9b067cbfb7329fe36e06ae97129e1fc796b602cbac6b2eab80cbdfa81a325b4b726ce3055d6e52d7dfa7d67f438c703a8a1642c1c0ae69013811d009c03d95fd53e22dd70c799c415b32b0c1261b028d9ed9ba33fb3be3484896367b170aa689983dfadedbd42a3b3c231a29df0799ccb2c4ff19ff3a23e91f6a5121e0a6ad266ec7719e69c9b5f9a6d5e57fb4170da4d2fce887cd6f646164441ca60532a0626dbabd9c9d2199566859d676401ff2ae1a62dd49cacb694f32076211fc984f1a2805be023d3199a768e4980ab79b585b574402cf59bd761f4b3472dfb77974d8026c3cdf2f57af9af4547956f7b32503537a118957e3796a9eca11e06fe35c212e8fc7b5d826b21a50d090d6a368caaad72cf4c1a7603386a67e13655e5fd8cceaa2c2500b6d3299d9bd4c399d9956297cb7d7423b2cce683f53d39741d287afaa5e5295ad6dd5dc1e7a5a07550567aaddbd2dbe1468f96055684354df0112cd58b82dc74457ecdc4407a5d26184c8e77b856625c7bc556a0db35e2365138fad94fa99f9ff78d08fc6103bf826b34d1b381f77d264739b146385c3ec8a5cd880b1f6ea5038a81066a3c94b92ae219c1b330999575198a92bdefa0a3fb29a01ae7f3929bc63c0f5186fca5bf10d83fea544b5749d50efbad57be1f288cae6393aa6187b3e30360b1b55334de17f768ffa666baa7e4552bfc5b9b9a0a398944bfa149e8f79bf58741f18b41da9445fcd0775e7495d7597572ed85c3353259be33a7d8500d3ef8d0fc69917b931f9de09149d801501fc56360ab461b08990750f48199c0805eafc8a83977317e04002e28246b0a1ec3bf17dec9e5152268256300fc0359ae19d83483772344d84251023d1ae21e9c6b0ac1be46f26b2a63fe2113f28989b8c7136674192378500125904cfad79182589b6c27fc29838f6db7336b937dc39854c316c48f3a4f4a14509f885d8e00cd0f05b0bcfa0bd938996bc33e63f90caa0e10cb8c7b49489004021e5898cc5379fe7a4c49753035ded6ecb928ab820a4c10b8e3dad5f3b73ff1ecc8767f0b831200c55d65fd36260678d67643a2be18d0d757199a1048e8010527c9f49c4bb3803b5e188d49d344c25b4330e81448b526412ed8e3b466b5331e440b800bf0f334e826436d5d282076431bfc93a43b316a66b0fa2091fa38ed48f885aa5202b81b60c0ad9b87fbc61e1764b8bf58c1118294a7d06b03b51c78205c2cebdcc1de0a03497f4cb087f4aadfe445349f61d0481bc01fc8c1afb64c47e8f36b173475ad1bbc8b3c5714d3b57bb953941384ef6a902a7a1c5baafaae4f5ea7bb9503dd4226cc7072600f6ad98144be59ce015a9c820be5853e8a4b8d4372044ef80b9afb62381064ac024d021a8060100afbf03fa4d3f00804ee44145a7d67797993e8197f7c8273dc5d0a04ffc60bc74da3c9c3fbe677439a662f769d5c6b16a650386641f02000e3f97f70ff3f61a7170d692112b40a3a1dd0d440dfbfb3531bdf64b9d42cc2cda6873439c9ce786ae5ad42a959f826bda7b2cca3b3d5107d80b9ba4f6897a1f01012727b4498d06df270d87a2a468a4e7ea1d5aabf2ce024590dcfe65d45fda63c86068d5df13df5db9c12d00e87d63460670b0944c6c05be85d552613de795ec229dab78f52968b9923c47ad0c0b94da77f4998e593668f3b44b82f05237c3757271abebf983556645d585518f810807d6745f52d757d32ef41fabc76e7b40018debed4ceaa753aaf0c2d0da138897034f05ef6a0d4ec0da203821b22aefb45e012ec8821eb57b3b669cc3ebfa6274bb1ccf2d561fafe9651620c51e5ed1102be34ed3a4504b6bc18abeb6a415df0a09fd2d93c5b85cb20d8937c094edf85babf9eb0e881c5f2eea9f5d0e040c583f13f580fd0bbe105921a88a01410b6da2786cdd5dd052650cacc815c4777ec3d33572cc9099c31284c781314df183baa8c52888114e06202c03608863a06a267d9b3ada31a67d702695401cf3d7f21a6b952d339eb370b6a84d67516a60744f3537e8cbb24c4831bd17dcef39bda27b663a4646a454626318c93fb2032b9ec3090b520d90e56bbc9badc8eb18ecba32e7a01a7ca952846d69cb0bf1a748d559a42d53d270746553ef200eef0540b6bf5ed015c1d6aca7dba26fba2c6f490817649bc439f844893d22e8d741e394a0a856af4a7b2714c1158393ae317b5cd85e17bf28b3b5334d50e2a6897373455ec1694af35add660328c74c81b1a26d33eed50e10cdf5e97bf9f3e3607e84459aa6ce3cb6a145c37e24b02d2338c04acc2e8d57b4b6718d2b7d589c71780c05f2020841c9d0ee63552940b550751707ef9eae67129bfa84607c9aa4565ec28576283b340cb219e90c8b14b310dae1e4699f8d4a1f88bc43843b0a1630e95c1afcf7a3761bca5059b75aaa260399333300bef083e3d263ffe30c54a3aee07b1d20b3409006fca33ef6417c30fd798e2e0de14b7544ec0a79ceecdf7b128d938ce2c41ac544e3ac34c358febfa41cd29c188573b68f00c584a428a4073440653e3466e1e506d476ea862e86f11098f4f5895079684c11cdfde46e8c5be63657c86c4a430d1438adb3561e43c553dbb2d6a505ff794cfea704bc56ea5ed915861410031fd5aaf56b490138290a5636710d173acad868324758cb99f3e6a99b58719a78cc04f7d066ba0e42e95c429543a440755d92922ac8cd7c3b2d4612db7f1c44af19bfc89c3d106bb66e319234e12cc144631cdda37280128b5f9e9424c15718623c3e40597e0631ae11473e38ba4209a275a4240f1f95c101dfbaa299a8e39a0b9fcde2cd14dadeda21bf6203cbfca89d9ad8d845587d08ebff3a3e91848d51da4cfd23898e3bb955246d64d1513211e68fa8188269979d4685c0a94514a8f2087103be2d5347147a2ba8ffb27b416cf0fb20ef3d0c107265a01061e08682300efea59f57102599525a90e5e539c30dd8375b56f61d60d2897b1527dc877f12d588e254fee72dce0f1eec9445beef5b6bc1c0be6f988175c1dff92967165a8eb3a1f9f977aca0e9f8b083d8b47758270bca6d303b6c16eef80151ca8cc8616c7950a4d49eeb4754a425d039487de901acc09c54ee6685e2d3b742d060c2e4ffda627be2844a798d358014b464d9a65e3fcdc88bef125defab03a2b71352eda0a1abaf06e10e6b608a4be0a14cf81ed4f1e726d1a9fc0868d0cdfce5b845dedb389909320511f2341b2ed166c25ba382579ed61f243ca6b24832516a088008c3c4954abda4747a1313862229c69f159d63ff9dd6de893a3a0d672eb5788e849ca366c0b07f29fd3c7fcd2d037b6abc6d47f41a0786e4860e3f1fc7b62e08f62cf112209ab771c7db65d1293cbf7f3d0def124bcfebe4a46eb0bc74fdc80fa363616eed243c64554567b930aedfc27094e2cc9f98f92ef2c02500eeb8975c5c965de31a6447cb501e798459ba2a47f0cee890f655d9cdfc992a71115309d9621b0e859583a64cfcf211ce6c48be4ada2e54260fa98247cfe89935fb408386a53a9fec8e5a47660ec8e4fb20b3811905b64f9a8b66ab21e3f35aca60ffc5dc53c3521e06e237795db9e4cb2c5c81deae6c048d20ac4f4cfe68e208127c880ae0ff123278da3ad0a636b2b0d6a8fdfbaa556200ca0bd997de0594a4a2f965abd9ac01417fd078db71ef061e4c59a3969f7ee5f94d1604ebe3b782228e739cc4e5ea720e9f42ebd2bbe25e26001a63c9dc3d3d4ab517ee544f97ca17d32ec9c7f789e905d6a62701abc5cff0d2579e80789d12182ce1f037eb9d46697ada85100cb66a5b31a5da8162134fc14fe4f3b55735811c018543bb02e26a2df9a05e976ffa8f4c99e5ffd118673d7a31ea53fd086d64d5890dbc363735e3568e161c9c389504ac198064eaa6ecff28f345385db118504d135e73ef1861cd5382f7d907b635982dc536e5551b355858d5c4e79359609f81479555c555c77f2824f42ab78931650386de0e433c77212881603511c2428ee13a00c7cb127074681ba8bb1a3c6288c74b930d62c857b6484f0d220753b9422eb3d42b4f53270debdf26d5b3a860f14927bd1eb7bf393910415ccf91d5d6bcd68344dad9ad025d4320e057b430fff0b18eb78e317968e5ae78cb7c3adfd8e7c7d2e622815ce4b3d83afb558621a352d290e20fdd80e74947a6a115e7de5a5bd720d748a26a2e7af7f7afa61cf9ac5a182a2f0415f4ed36da2096cc3a0d63f3908251782f71e989d2fa1e9c9840fc4ba22ea96e3b60cef0e567f7587c0829bf56d9632b36ad64ea29ae452d3a9bac18011cca1b3008986a307d318e8bf14ae455a6f993e248802d85f29faa6a976a73357c66fd392a6859a9e75e995fcf196f196b9173d0c9acd4f2c58dc1b4c3e9eb6416c9478dfe3cde5cc74b66d5cdff04d6bfc5c2cf1c1c63001ec60bc32ff286996faa34afaf6f385fff733806296cd5fb2a71551497228e461bd6445b6497ff6f9310827f1053fd6741001c63830114422fa8c255fa564431aca38fb06a9e58b866630a1f572f74699971873b56207e868426372d1aa56cee3ae18a710cb600552a57d8cbf7adfaa0a520665bed1f7c9f7e46e855ef06c63287a8e69af5bfb2732c20ba49b3cdbf13c3abbf41da094ef8bdda67482296a426a6201f4f22aca4c5fcfbc871f0c7cbec5e20f7a4e568bd0a53755328ad6034fcd7d4a3e082098c7545c3a0f216a199bd694d44761aa14f9b5b458fafbf25d32e37b8cdc043252675f33d608c055915f8b7b6a3eab7a24e7dd708bf05686d0723168b2987e811dbc397b989fb40b23a2ee65d1aabd87f62ad7303c6e6aa85076174907307de1fb3262986a82e8e9e1563a112d2b510bd07fa223e049eb157331d5b6d8340ff12080cd46145a209f4ac81b9adc8bedd6ebbdf249db4992e7790d8d200f960583597cbfe407a365c0865308fd213e8026157de4fb0beaac19fb3729d8a8fde35efb0f0f2fff7fc0739a4d13468bd009108cd993e29e3ab349889395a5af9f4ccfbebab36f524d7fb573c37dc3c44bc83e1f440d14e8a6c042cceba3877e6cb6243a5b4af02d7cd199366c090e5e072735f09d10d7e726f0a76b783def85ca0ef5366c0d3dc3472289ea4dae0ac4f222452d47b51a0ba81abb46e4d74ae0f0e7e9b9cd968746e30035c164010863be11047c6064a61c82c4ea16ea6d1d8a42ba62854192f3171e862a7a27bff0d42a777d8ed11a7bf452e0329003ea624feada32723a780ce1e4272f18996b2960718eb624c2b7fdd1aee86c17ef26095e3de6787af89c0849f0f3fb92e4dd841f8ca3e0ea83ba4019ff864125db77072fbc319f2d087822ce76f3b984e78b9259e3c6f28bad063d2a7e82fe057ed3afed23bf7e13f28e071cac7ff24a25e40c233a0ba6780538c0865eed8fb6f404b3a478a310d0623f205ddd7f5e6b620a166cdc3a74968ec4f0182f7d32240ec745201945843caf6804cd8e4292a6b38ce083e56c225c038991b56c60178adfd3c1d5fdcfadd9c9da994dd70b58580cfffa2e47061483409dbe8e019074ea471d9f805af2655482329bcf7cc2371a13a7d63ac7a1acb16b9e963c8b1cc353708e47a559eb24cbf254f15fd3c9a695eaa72ab72ac1884b195f46808b39695cc49976c298422bd9a9715c9eea93be176a50298d9d52c184cba31e28dd8b39315acb64cca2db751ab611180e0687996ea55b3e8eaffaa72e32bb76a5bc0b96e2aaf2ee8f84455771bc354f6887847b71388f7fac77055192db8caff357124c61c08ccd94cf0c84c3d31ed6660405fd5c1a57c28cd99c324c51b48690986092e6734c639002ac310398e4a48a4d42d6f8d224759c07b2b8b7dc4d5b22cf51594710e3e06c3508ff81e7c556b6621225728901316622625cc8c0c983e8edfffb11960656ca635917a55c2215619858b7a808bae74e570f7fc709a3cebf5d6b274a4d21aaadf0068d63a6c661350a75e4e545fec93cc9908141bdfb548a2623a7cb8789eba3ac6a886a8622aeb7f2fc6ed2962a5fa8b1487b0eeafe3d9fab3a4627e409ce13bc95bafcb362e20555778d9f050310ddf3f11263636485ac61753380f63a524496ec3ebea5d739210282adde306e9120dc5299a4edc435ed94626bcbb358a63a86a860e4d0b206e140d58f3274ea2c23fc9f3c26ab671d1394fd833a09e3a84b8e8863a0915e37eff3f13ca441d4839608308aa639d50614d86a014f99c79159ab253038444f94e2cebcb713090e9133653897b5ff26ce5a8b4a10aa4759a3dad6f3100a59f26e443e4fc93f43c08ce6da2f2f6aac1b6b19bfee46a847705ffebdb2250d95c435582d9c2dec0c698956f93f59ed6283d57f0ed48e7a2bdb53d0c10a0159a3b4915cffd76f01cb3fff51d8a97dd783aaeb9c2fe7ecce631a7072af2e296be5d6ef0d8144f8294088587f35580fda9b6dc4e3c73954b1a81e82224972390998e9884ec6fc8451384948ee51f3211abb41889407d9a558cbd89b963b71763502ae6b3ee0256b86277fe051774982b4a79d26d0b04803c63d99a5ee5873649be56688b3139d8b0bb2796eaaa506429e1b7bc3fc946002ab0e24487c7b373085d0d95d3fd378e8faee93ee666911a6fe145e0b273573274e98b225d386ef7e5673fee5e92d9be9b7724951c2278c8d09d602f2c2501739411896af3140e3378691be87b35ff35e8fba9970fa96ec5b074701d763c8f1264837c615f324018a4773225c9378e87a4c2dfab7ca6a406af8111279497ec716d40282106647bfcefb792a5241101b0ae84c9e7d4747a227e78bc5b507077cd84c3456d8b483b05fb42b43782cabade153cf268b5ef36a5cd181e629d49841377c350baddfaff5434c9e81339fe296e4235ca6ba77b29693eb3e31836a2d948eba8333fc022f3812a42bf42f388fefde34d0579f19e73a314f517d16076f0722bb86727bfc33966b71c7502b0881c2929dd5fc3c4b0569df8294eba85ec538e309144085b6d0d689402e91ea1921e66212846bcb4b728bbcb77bbcf2c3cc9c94322b6c6eb5b92c57efd5f28b04eadaf7378d2a7c55ed26897a5444d4daca559b1df911ae57151904c84d1e2f9b192504e05dfdf804bb4ce9c200a4dddf4a9277064754a48539283a083e594a8a22db949e82299ffb91af6265ce1cf95fb60ad769fc51bee3cef840e07b10cc283421b098ad8bb63a4e930d027929a05ce163047bd9c20a9704db0a0c03d65f4c835a762f0aea131297438084490450452296b417d4ac2a9d8adac425ff51c509f0233d3a0d138ea8d7afda0ad9b2a5ca90bee0c6105fb6025f8fcfd9abdea660b71beab35412537207cab60b27e4cfee1a25ea7c901a6564948149858dfe4c04c3471377952b1b70247b86d82c73a0b621cba628a3c8d981d4230fa90c6ea941d0dd6849678383c64cbc5dd192b90e54eedc7c486d06a8e711751cefdb86b1954f0cdf209c4d5710e5b6542f1b155959bc631a9aef97067b7699e9a80a0896361c701bad310287b78bb66f735c8f18c091e9e613b07e683afd40c2b14f240b88e44fe2540cbff125c546deb68eef5b2e7955bc703331c03bce94934fc97f053441cec319d8a83407a5e5b0676733910d55310f5d141bdf91309f35832691101936438b31eba683c17b1688b70d5cb3660a2dfc74536656d4bb4b168b1ed7604905e925efe70cd1dedf776b431eb85aa5adf08b67e21c42dd73faf82477594dbd32cc89afd8d4d83a3ad5c3657286a1aa05893adaa46226036abe6a7a3f89112b82dab26fca3bf4747f99a11606c3cb160cddff030367324579afaad317ac15e2a3f3dd0dc705cd2c1f581793c2aeaaac6866f274ec69f5d6f1f3ac0ab7a53483f032e3983a597cfe9398b9138c2f51d8ba21c1eb8f33a5554c6b7f9a76043942fa91ebe15a09fb97942a5812e73b4519552dd3b71fc0922303ed76b2115bbf1925c8570e9ba44e13204f61bbe2d354e9406ba78362f1072577bebb92d2d9e542c1f5a29ed3c1018a7e2a5438ed26163aa9012736c0b27e4414dba98306094e8dbdd249b96fb5732e6b4ddae67d8cb59b824da2a2a0bc24612503cf731ef79a16d082334994349b3da9c8c5f9bc27c7ec38270f8046a64e261ce8e5546702f02c3491914e46388c7834ae9df3a19c01562491ce17a4035761b10f2848c4a8ea2654bfa21bca21385c0b08454299d98f1ba9280b277a358bab863b90fb50414ae6ea8013d72f3c17228a471d9731b3e02c0c8eef184ba0fd58352a85ceda556ee08e5e5201721f605e553ef056c62c6bccf7fafbe117d59eff51309f1355115a159fa19030ba2d24b5f0991412c934446c550d19680da61e4ae4ddffe5441f514e2e2aeaa45719e0e51e9590cc30f7137f0cd56b22e05ecf1a3cc21cfd406fed4e5c1651de016fe7b5fc744f81d30e0a1dfa59f8ee78df0fbfb123a32d266a4c1d373120ed121407e15f0d5ab75b0cb670f8d8c2224ebf2fca2e6a13a9852d58f25076a58f4588b644fb9b4f03cf258e1e483f8f169bffc9357ca7a33ca007993978328643fbd51c3302e77d55f9e1c996b05cf5d4c5cb10986e8aa9e74a21988abdcbe909680c5b8497e850566d6a32d72f527526ebd815142f7a29a45a6bcf7d9c4b8cf07371a50401a126115df36f9458bba481601c10b1ff7b44daf162fa5b7d2bd7c97946db69258ae09aaaa633bf067952642363277ad001e1a77e9ab0c08110851589fd3b5585bb2696c1cf563b70dc89327b817a79d38f72b01365e8129bd2c556176e65270cd195344e48c2f8e4e8a5439e5446b548dd5e08b9ab98c8f801db5a23363498f4721fbc9a98e72b3a0db9f4e624674432d9a3a8a011b7252d478c7d6f7eb15123326988cf5116196056f2699e514591468b1e4d51f8a84115a7b05cd36d9fda47e876d2bb3b4e0fcdaa04d36491a46327e63223df9343b733096c0483883a158ca9cc1a1caa20bcf063d74e1d648ae9549e72b7f6f0a6b0fbf72c3a4404df01d6b89e1fd765b43da1ef8dd9a45f5dc445d33c1160d8d372426fcdb1ac5303e8409496be985096ab4666332c993ed6fd41e0c4ccd37950420bdc5060dd5af0189fd2d428f015086c6ffdd1edaab39313da99fe5ff12308fe6024cf154069d172603f2c64731a7c505a1416f186a72b92a031aa31ef6f2ce83c0cf7bf18db2b80514947ec8406620f14344cd1483d9b498929f9aa7282b4b6ef7839de034d6b10cd70a3869eba5c30941953525f191265257fb9409a21f2a5b86cff5f3edd1516d67f717acb5def89814a4cd10248c8617da7bbbb16407157bd869ff6022afe6784a2d7523a11f3e9d4012cb667aa9e8ff2adbd0fd97d24451e09039c7c42e736b4452cca885898bf8ef9c208bf29c003bef5a3610d3d1cbfee3f76071f20bd2a5a0d57541c94d7dc5c8aa33b295e43a6ce7b9a53998a5e3bc17d186a48bf4225232836fcae3f0cb8843fa1974fa499700595b10a8da41f51185c2fcc82845c042cc65c2518fa564907e3aa323e02f4a92c1313ae3d0efaead64cfbaf9f785356377fe869e0b528e0eafb69c26cd19a4dacca004537cb980cc417e58c29d826f954670752692e4efa796c6700ee6ffcfdf98304ccb546bdbf14feedbecc5199d52845e273f6e070d13e2ec217a6980d7f8fa8b07a777c29c92f835a23f622d8fc8b6953309de8a95776d5f63ecf0e3db9f6a300d344ed494dbc9c8f562dfee029b093bc5d1d1267f87f5be8d3b7d79b758757a2b0553ace1c345cdcee1ed3b9e46fa527dd1e8e298b213103840f7033fd644b3d45e4fac51c6b4f7aa1ae6b5e6d605d043d011fddbf4d3d70f075239664e184308a5ee7c4c554a541f5c6b5b3ee3ce0cb0f92e280221d77c35c8f171687c6ffac84781086d4bfd7cf6003b751a61482c22f52f871eaef1a8188fec0d79c7fe14342f49b3a7bcd30ef57f6e6b4be8aa1fbb033237867c05644643c3e419028e703da03db2f7b26b1df5a741581f299b4030e513917c2fae669a8c7dbf0fbc4a76cfd8aed0bb872918ee7341da6c20c23bf06c942195d22326aea4e28082c97fd1f5ba80516b433e096f321d002520460f4f4977967f060774862bafdfdd81ab390c47e3a0cee9595c98019b4647c349330888450183dac0adbf2b4da0d15ec503aaf11c3f5e38441a62902a42ca19edeb2981c640ae8ec4e935031c83cf921a72151fc05e53dbc61c73af3536a5de1653c6deaf1903c65cf22bca321250ab9988169bb7651c564cff7d85621bd4dce19b3e0443acffcd0cd908b605b16cbdb268aea5e06ac9e04ce0a73e529833f10080e5735ccb5741501a6b617055796bffa6ce7907ad325dc7ed64293521a1e41f6195aefe5fc427ff7a8d21ce3d32499ff589b6507db6cd5083a8eafcd81ebdf7a945f60d93e47da6c87af1172e7e91d8d857c64dfc9d087d48314af1803e5a711b7970985e7a5576be810892594154dd6e6b81e119890f4ce8d7ac5407eee9814177fd03e17372cd03459ac13dda564aee1061c35971a4dfc5a5a860f29f45b8efca606c5b2614f0f259789dcb31ec83ee7f707adf1ed06b88024b7be28966a7b49e0ae441f909ca22373afe67d5fe82ba4284a3bcbff4bca5359db37cf860a09a47847f58f0cd1afa24ffc3c1e3b19b47409afa4601cccf35a19729c66b14a3b84e8338b2f28610e28c9ede588e87379acaf8730df5e8e125fe55ff2d609d71c0e2bfced2f6599cdb8d912fb70147332d2c52649285971d53b8dec44f7c3c045a3be9f904f611516bbce015521d8bd77c2045174adc20fd700926fe3dcdf00cbad5e83cf1c2e1ce05676a38bc0548c2d064e4bf3125630f60cc1a451e9f193be04d8cb89e4361cbecbc3d411488931dfffd865a91ce91d3cc131aa93e0aedd6cb1d3c16b4725d0072bc1f1df999bafeab0f14aaccca63856cc2b7f3ccdd78d3275c05774cbcdcfcbbd14731210f8facda0dbda66338caf496de62ab04c0f1420d70c7417bd288651ac5f67e4b3f11e83cd68942c1326cfa1018f290009cab0c67ce3afc6a5d56e0e99c393c1b6d46369c2b8b66c2f30269986f5066464857aab4348a94ee89efc9581ab18d9420e2f26c68883bac05b37fad4908fbd2801388eaec3b4c8c9ecc5cf084dc42c6fe04a097648ccb62948616394e312b6ca7b92078058567b333b390907ef05896cebc9f109a11e6bfebc835bfb757f5b74f444c69cc34c4391775616ac8d6c5eeb3316700d79ca64313307ac1e052a68a95b135795c79016b49c1ddef2ab80b36e81a615288ce67c83426eccc0f62438b2ad75b7f384b1de898dfb391cf2592acad595170bedb0fb34fffabb272808d8b9ac8b0e108d9f885fd61886e29d54c07d59c7619b737afe92fa808bbad5fee68d2a20b4853447481fa0e991fe5e448e08f90023e04d858492105604495b4b49a795c1126d8955395802e711924db503f6e25de2aa7fe926ff4a24a8c2aac308b4275f6d07fecb23a7e6cf8f2ea9338b578c5c926f32f2862291861f48cde439677fb7e547b7a90d62e1d552906f0756d2d5a034e9a584ed9484cd69376a917cea202cee3b1045cb64d884a0c54bffc83912a611be690581f449dfe907a1742a2b130dcbf73149174952d1bc0555219fe133177278bec75f474a798d68192634cebce8acb8180a69f9d0fece5dc16748958bc2acaabdabdd9f94c44bab4214ec8f8893892f8a300cc30069cb2bd2be1c6dc3c7bf1abd63a9a4457d95564931d4ff2ffbee328149fb3978cec741597933926174c0033c08e3abd3705a581fde4a4dd0d868e1023b11f5e3656504bdc74cd01b78d09cb7ff20c210fa66450474bdfd9bfd1235a7a95cfd00f7bfe92c7259388c9eb36152a74bed7a9b2ef12dae91e4a034d55b7ff8a549b9d0a5ba4c60a0d079467b60ba715f82d58e1172f522fcb2c7a78e0637483d1a3b72c8c308c42c8077d851db5545120a907f1f1ec94318c331d8d5097db185b4c0e20a6faeea201698bfb96d4ae50c6a6debd8a57f1c27508b00ad4f89d8af7b69166fd105e8e2906db6e2e4244970bacea3a2fb5d18ab69dd0326770946c44ef00f6e864969e5818949d179751cc39051bdfdaf3531456f29179f9222770f8efe53b0d44aae809ec43c1e7cf536f1078d4e1d6ccbbb3297c1281d504a78d81ecd25f42e7efd706e81f2c6e2b7db0b76f92f6acd2c43a26c9723f07ed742c0f95c88e603ff1384e8e3050bdb0a4bef4b69149d00ec217d7c7142839969e9f96a36fd7b6527a41d89b6639cb4e83a181f2d03ac10f467586cf2e9eef2640145fc52cb33ecfb24599e6761cdb85c2cf0c7a5a6d1e6c26fbdfec6d4ee05d08318cd15999335bd1060c165c37ad8395e557e3bf486493359641b11f04346dd2c8ed44349b2e99fbd5d0df0ccb9c4b49f39857098d6c8d5b8addb1c379f41923a2157b120e2b20c500537aed95311870d0210a9793a5a85647e141bce45f518de6c164de01243a785e1fd96a7e7cfa6061c32e4d745dca14becaeabf359fbe80fe1f064782a865d1aba2739602225b6140ffb702b6c18179ece13b52dbe5644359bc8d137eb8af046a714d92672db1285ae32f206e613eac55f52849b6a66e7441f965eae53accd1ec459ead3379e41009cdc9c3d9ada7bf5843d9aeb6b3e4bebc9d92c50293c74f97423c216caad7f61315a42091b054c84ef0d9ff1b6360e54d2d106fafff2a8a77fc7e016802a498e50cf4aef02a42823183408dad1631bc5bdb68c73ca23af0ae38a424e81e04ccecd9bbbd592a1474234eaf0ea86772810380c5cef30af492eadbbe0148c1632e0813081aaa41e6d462a5d4532635280ff1eb685422297edd297da2760ab452787b60a6b1fabf5cefe562e6b1c9b192d25edc5909bfca63f51b71875f5a4d625f5cba7ef11a7003cf9c071c6d1fba5cd2c28fdcb0bff0eb81c66e7b311dbbbc3ec65270bd00dcb701f96b4d5758fc0766f6b5c1ea77fcb563193a14d198e46b49923478a8e04d54a86ed62e43b45a488fdcea061c9dc82ea45737a9ffa9c74fbde4af7705fa6bb3b7f59fca6b81eee3360389f4a076fd5e7a7be97dd05bb72804df038a1393a05c30902ae21c4b51c0e79e145bacf3b4ff11ec9583958a1a0eefbf3cdcb28bd5b756a99335c5f4d3edd3e58e274020856759ea0008241504027889a2cc4fbc07266c5292d6430d8cbe482aedcd9232b901aa4065edbb7f4b915bca2465c509630995093e6faaa1a1a7ef2b241367dfd0f88d3a63eedb9784e1857dad0f2c06b8244ea983e36ee9a5b59ce52c87afe34b2bbe97d6dcc98b6dec7b18e39bbade039b75636ce3e3c6dfc653dc631f37f7ba1581cbdc8d04f1f9cbe5491ce6495c307a851bd976f655e4b2283c2a80ef72f7be8963d3aff7af85722fc696bb0fe4de8b49b38e407072707276ce355e5e0ee7ccf1d47d20f6b9fb3f7c787931e9e3c6cb96b3b9a9fb86f770a192365ede7d7d7879ef1db2eddb5ccec687bd7fb519eedaaee3a5ef4dadff50c1eeee2deaeeeeee15c8753c15e435c8aa2e0d1f55398ba2fc59dbbd8b12b55fc9caf2dab2b8b230c6fed559b7b6ee0df26debf6ad89aa2aeb52a93348f2bdf7de7befbddc286466538edadb67d29f5207b1dab3fabed6560122db83cbda6c4d6c5f50bb0a82c5e7792ebaa33973c2fd900970a861a7d431d6110a97e4ee638eec7e2e2964663b4982f7e94a87df3f40cf496631660862553f6ce7a5d41484eea81368e383f283964bb6496dbbd2b3def00d2dd199aa54d938363dc7a06130aac098a88e1c1d94f47614a263e74c79d87dbf864155dd8ba2ee6b29fba660dfef88a02a16ec08f63dc136754aecfb429c5609c202bdb5e0e5f5202cb01044e675a399bfcbef9d125f7eba6d124f591203be639ef2ed3e4221e7e7c610181f1296920ad8f7d780920ad8070fc0bd3f470ab13bfb5bfb28d0fdc257c04231c308ab6efc75639c1c12be19bcbc354348425ea8412313aa1b37bff199954ae88bcfec5e35f63bd8f5ded4d5c471dc5bd23451cb59fbb97b75af911d752f2f3b5877a423bb231dcc14528364d4bdac909a6d59b0a8fb2e634de2317fd25759a963e95aba95aefbcefb1c7be2f33e49f7ba2bf7234bb66e12697af76b127fea333b873bbbec9c5f4f3d35322193369f8eddbdacaa4671d47d11cc85449a5d6c5fd99e21cdb79623eb2d069fbf470af1f27e277a123ed2cbe0a9eb9413624719a8bc208397b7236f99bcb13c655fdb8faa42b203b5c9e5fb5db35df0f7de67a041434af8bc77fbde7bf6b9d105b35a12cce4097583dd832b8c5eff0246a4fe22bb23c115461ffa058c8a38377aef1e5959759c018a1de333694deb588d85bcf8cceeb5f5cf575f1445f7ea091745d1ed9ebd51ec67b246b1b7db4f8d5955f857bbc462217929ca296a44528a324db1242ccce0a915afac7d3fb7f11de00b9fee5573a4054ff9b7e0291a32895cb89b1126977bcb619bf668e53d1fbb235e7e2ff22ecc9be5cb9b3a7a7274f026cdf6717b071bc79b2d3571773e5504c761ab22dc2ee88efb26cb767f4daebc1d5df0c60eb632762f273eef8f78796b4fa967dfc731d6326879df3456346a793f66ac6bd0f23ecc58ddf0f2fecbe8ac2e6a3e2d7fbfda6a0f96ef48d32fe7b3efb36039d2f4efde3cc1baa6a8eef368bec082973793e60cdb8acc6a064b6934716cb38e31dc3fe2295ff9fb1dcc5bd13b8464f4a1d108015f056ab625bfd87d163c5563b2d0938fee3ce1bab7eee0f29493d7c9ea226b8bd65675e158d5bee6ca26759bf49544faeef70fcf4da64dffc6cbfbe3c9e73dbdf56649b396e0a9eefecd8f90cd769481db1e7942dd99a4770443dd9e00efbbf77de3768400fbddbb8f9f4be8cd2ff4f20e29b20abd69d263a8ca7771423f32a176248f24aa2318fc4b0ef447ba23f65579f9de901a1fe97e102fefb3e0e5bd1fa241e847cf82a76c0b3ebadfbd3c75c4bf2ec9bedd125367d2ec98ecdbb3ef7ba5d109dee3e5fd1b07ba698bf2bf7121e88efb6f55dd101575ef9b2a13ec6bc4be7fbb17dd711f06dfa5b446f9a102e4416eecfb21daa61edc90007010894433a61e5cf706f1953304116296401e50bfd4a13f88905a5f069f5a8ff84a67209eead978d77f80a7dc34ea70547dcf8ea5972ee8277d8da73ad244532d9f3fa42996cfff427bb010b3f3afd094cbe70fd1d4cbe7b73405f3f949b4470b99f6a8491c4077d407d2bdfed27bdd58533e2975b0506348d337cc68018a814a84ea38a005d1d7af49ea0309bde857eae8750de2298d499cac23e74b7fe3a511ff8d2599540d93da60d74ac3aea50eafe93406b88dc91c2f6badb48693f3772cc1cb6a6f7ed737d52f7796bc7619e321267450af6f3abdd7866292669afd668ebba4b5e129c106c8996373da9cf59b9080866dd2daa94315dbd45c1094e338ca71dc473f8efb3637a35f89e421994d6693d96436b7214f348232127921eb36994d6693d9649cf53ce3465dc813654c471977214fa4475ae485ba51a77d32b6fdd86c362edbd0ec8824fe2d7126cee382798afe0bc7f53a6947789225a687bdfef5badd6e36d7abdef46772561021a658eb337d329bcc26b3c96cb29bccc9495f7fa677b9b490172caafebb66a77d7da677b9683c2e9bcbe572b9602e97cbc6d269ed60fb91d96436994d66ab2d8be2f9b1d9787e7aaa8df35e705df57693b566f0b2fe1047b9abf5c1603056cb32f1d9093b6127ec84dd606ffa6037d8ed768361180cc6c4465f7fac5a8cc562b18654ff583408e85936d6cfc762b158b1b3c6f261c5582c168be562b1583cf0e8af06b16233982c2828e805191c55ffab4131994ce67af1b87605bd82828260349bcc26b3c96cb21a248bc1828282826a90cb6a500daa4132994cb6821a7d6d7f4cad5346fb9949b63f980cf54d2d0a74b3d56a2ddbad75ce7a5ab69f59eb557f5aadfa537f7eea0fcbca57b269d2dbd0a25956be52c6aef25b61b9fdc864b295cba53396c938994c06ab1d908bbb2f2e2d5fdfce3cc57253b627e46383c2fa396bfa6b07f31547c786d2db00437a716961c916873cd1e8b2ec67dfa24c2cdb6c89cb686536498de63291677daced5939672f2b235d7d235d9542dd6df930a1e133765916a856bb2c0bc4d5cba240310b14bb2c0be4ba1ab845ae06bc48c67a0dd98c76d652f463b19f1c20315a2df6d9979d99fef5f3134b1283c562b1582cb6c3c95af94aa491ddc155297adaf0b8987c12d311df116da4d67ea46063e3d4476b180cc66aede0a8ea41d61ab147ec1136c9cdb64ed8093b6127ecba6030d80de876bbc14ed70973c14a4cb895af44721bf244a38c7d62967ecca4027dfd9548d9b10d79a2914f2c488f7e86acc7eaffc462b11a9bd1328ec5b8582c966dc786aadebed56ab55868c151f5bd6597b498f0f4f8b85aaf56ab256b9974abd56a39adde5af5d6aab7560b56b262e52b91466e439ea8da2c0c26b3c96c329bccb6f29548a3902782d15a0a5e7ef47419b1ce03d3daabc2ea749ea20e839db01376c2ce9e1fa1d1e6fbbeefb33aa56f8525c8a2d0a02f9fdaeb48172d2c2b5fc93b4ab2ee8946351f1237724b72cbd1ce9acc06b3c960b26e04b2169695afe4895aa4fbb2aaee432d2c2b5fc93dd188c473d69ed0b7c2d212e2482391e7a596d24849a7676967cd4760c457be1269e4227a64e52b91b8fa3ed7884d6693d964369973ba0b8f7a1ce7715e8886382ec48dbe43965a8eb3356fa22bae56bb244e4c9115e9633e87f431e41025f7878424112539a28f7922a38779d25f32c7f4e083e4900e4822a28f79d317592911bdf72f231125392212bc1ff3de7b4f644482970455083dccafe0853ef45ead9bab7135aef6317d490c33d2558c69a4ab3a56ce76e37eb6766dfb3a30cfdaf675623e07914813996d3163feb128fb30a38e8e9ec55e46ba7219e9cabaf0a9ffb42acee5f8c467c6a7ae4a70aeccb938576e6597a73cb7b22dbbb22bb7f20eb9955b79074fb9f2bd256c5dd6655dae5afdde5bd56fb33467414bfba5f75a566e0b974589e46a2c2b9fad55f73a1dcb363cea28c9dd7b2bf762cb8db51be9caae912b8bc562b1b2cdc7bb7375b1582cd6f73a665576257f685c21f3676b255bd3f7b9eb75beadbd59241a411f8da093a00aa117fd0ade934822a3f75e441251923322bd2742dbf643e5c66e5a97db74bc6651a82b4c108d46bad209bd475777ec46bda2a5eb6eb1bbb15bb9acea85ea8d3a66f168d9d8dde8ad30a96d74877d1782bc60557a6651f66bdb5e9214ed7cfe40b2cd4b0bc54b7bdffebdf766dbbdf75ecc85f22ddbb89a26cf1a57e36a9eca3f689ee5193dbd12ae32eac40630761dedd6241289c65d5c3f1c9ac3a57befbd5723a1633aa6637a8aab330bae029f3aa69328a17a89fdf38414dbaef8c85dc1614177644177f8386a8b9c7c36cae3094dddd34b6b6b5686071218396ba95b0585e2245733b32debdabe82f6b81bd8f6391f4f5127364cd996b3f9d6b62aa0dcd353fa091565d2693a56f3f1f274ce695ccd4b8ec6742c16b3f9efe571daadf95e8fb3d99a9963b6988572b7e9b4d8ccaaf20f2882b69963342d8c6c93daac4a9ba0a2ecab403bb16db6ed9d6df38a8884cf7f656554452e1dd331caa38a5cdb1ad1585c619ae26ba28e4ea85b234177b8bb6b247412ba09fb1873b77ee9562ac2690017c15c15e2088fce98f96efbdfaebba2f6b7ab5e79b3c669a6797da3635ddb774df6a3b507dd67bd62dbfa645b6bbf9a5a08e2a917e2a9dac3599bd6510cf573c7751dee81d6d3618ed61eb99e39735fcfda537fb8551f1a4fad55a0ea468db2ed67ae522771776c6114f2af479345d9bf5c7cf74d2fc870afbe2f7cf4a4273d4f2fad167d337869ef0355d6fd99fbf7de7bab8daa4cd69ab6ad67c70a61e140a86f8bc50784f2a0db2d78005bb7352106fbf74ce20ec4a29c3e26b58bda7ea4a05f9ea2d8fe7851a74e9dbeb4cb8897ee7269239e7ae1f86bd77697751735d12054454d6edb188aee8be4cfc1991ca2449339f93b72c890ee8b8ce17da0fed0d3557d2056056a1254017ff72be40f9144429fbf238928c9097dce4fa47b4c82fae90a3f5d75a31eb57f1655bd137cbfcdb7d91cd85a10b19dbb1e8524db38db37ef1843e863e83ebf1d75ee5b4b7313342791912822289f1bbf996bde0da5591416a94aef9126fdf9ac6a068bc25fda648ab5d6b5cf66a2b78d9f9e2577f75207eeee5f493476307acda2f093469fb9cda2f00c56559626d385926fabd56ae5efc86be37a6e9ecafaf1e84dadb51e69ad47cfbd371aefedda2e946bcb17cacd33c9d53277e69c73cef9efc8847c5bf9b6f26de5dbcab795f308c77f2c0aff6cfc1ee6dcdd7f061a448368107e1fc500865a605e7f1dc160420cfa3b120cfdccaa488f3b788c458fbf16185b8c756d6c61e44c9bb6b5f1bfa98423ff6755a6cfef75d0c173234e07a5d731fdd7c1485738c8aaec0dff880343244e0b097adf0243825ecbe794bea54492399f89b435d2d22c0a7f919512ef2d4c7fa4856dfc9e68ac2b1c8445303f5ea0521ebe71c661e3fcc3c659884cc3c63996651b971f3ee2a5adab2bfca11107c562b1582c8683ac8ad3fafb4ca6ffb2aca90962b55c2f586c63d90fd0c6de77a48983b0f7a3c7deb3bc391a793f7a1746dfe19697984553aac24116c5f2a1f758460cc32f2f8f78895f2f7c04c3f0b3e09109a150f548ecf2123f099f8771cbfc649ef21e3ff5f0df2d3ccfe3462678b965553846719055e11745e18f99287ee1d7c6cf9ddee971a7c79d1e777adce971a7c79d1bdf3efc7a14fa3c6237bcc46f47d6c61cccc8c92c0a7fcbc8c12c0abfcbc8cd2c0aff17dbf86346dac68fdba03b300ea23b308e89f1d5c73174bff2750403f72b4f473074e405eae69ee5b99755951e3f879f835955cb63d2e4661b7fdeff7b9ef79f5589de7b0f06e643230e0ca9a343faef7544dfb2ea1ea68381218728e93a9887298d4a584613079546252c5f5d9fcf0671624890fb920b097224a8c2f7713f84f4df73644ecb97bee58bac32cd4bccc44bfc37dbaf94611bff0a2d9f5f16851f3f4cb4b3e9c80410071c3d0c382241154a0ff339a5877921735c1ee661c8219f458ddee58bac4a3f1ad991ae4263dedde8ac9d470af3a5cf81f9123944c9cb0fb90f43528b7a21734aef420eb15f22a9458dc8abe325bed996fefb154aff914494e4d8ff9ec8fdd2aff07d0b49c4fed79546bafae8c63196918a466a51a1118e5993e9fb621beb1169eaef3399fecbb2a6667b36de53abba2d8bc2efbd675381b6f1df9945adcc6bdbf8c7bcf8efebc6f0df16a659fcfa337d59932d6de3b366bbfd006d1cb4f158b7d6df6732fdef5c63b9c67074f0579b45e17751c6f8f1ebd4d9695158077f8df97d4b92b9062cd629312af5d2af6de3a35f5fc7f541e95712878e405ca09f63e3a55b6bade5acb5960482e3f42ba537640d7d1bfa3f28cdb14ebf090994d858479b4e70ec987e547513451b5a785400f5a6f1698aa1f8fccdbbb5fe3e93896a7dfbc1d124bdcfdd7b494d693555e7779d49eddc4773bd403c3c3c33269536ab369b1f5b8552672fc8e05f6795098f8e194fd1cde9b8335e7a8d971f6c01f0d8f549aab2b1323465fafa23e5d1c1d787f18f008e5dbf449f85a66252305fff52cdf2b55a1e2e946777af4b2f3e1d2f4480a62a10b4f4af2e2f6b8ffaaa22d41ef58890daa3c2aa08fe5abfd8e09510d01dbef7115e3a10345591d0f2557b541c217879ff7aa4f6a8b22a02acf6a84baa084cd01dfeb0590763dd756629cd36bac31f1ff93c4d2bdd95345d5e03db05173c3ac1e557be22a1a9ca0212e971d498b19e414b7f98b192516b95f957262a5967404b7f7f214da7a22dc27f8122dbe5dde5ebe8f2ef2977a9bb8534ebb3bc593ff4787442fd9577a125cb3f8b99813c3ac0dd2befe94a59c85f21fdb9cfac636c9fb2fd47a359d798c5505d87a72ae05fd678adb4529e95920a509e8daf6569a016e1ec888947ff3d5a6badb5fe8f5a53a6498729a4d49d56d794fe0d9f7b8d8d63ee725c0a5efa2529376a8ed3f4de12bcbc94d424b57f3911d8ae7cb366d393c3015f23c4067f8426637cb1c1f701fecd0836d864834da244d9e0a700d21a131e08a3e7250d6f2c6244932f987002871f1dd208638a0176f83a8cd80e5fe4a9990f7c1b710909363882e8a30d2f70b0451a35b8c5e8cd6bf08ec6a7755c7557f55a01ba64be52d9157c15682a4b79ea3e3608bea9837b7326bf196ed065835fe329bab38411a16d8eb0c1b729c153e1838f4379d40d7e37e29ba3eae7913a0a75c341bb3e35f506bf0d3e254d21d4b6653eb764c68bc627f3666ec990d97573e225b73cf5e40eaea2ab3afe5032aa68a520882f9cace0032b30b67d6751b16d880455b46635eb551fcdaa7c2c3981112bc40843892e56967e5165dbbc2dcef154f8f681b0b0b2edbfb064db97c153a4212d9ac61b4f10018225580ca1c3cac660675bbdeb8ca764de7e5963552ad8e00c364210658b19d85637486c8b6bb6012a08024889126ce1851b2bebc5b6ff81608bb62de2890d82af3d05bec8537483ff95b1c17701dfe429dac4882536f8a1a768cf069b8c80860dfe8ca7c20dda7ce5a6b4c7079b246d3edf9ac52ae2c81eff7a6adce378cdf84ccda2fd54208ba21be422c8c57ab560aed84b7663835914dd1a246f5decdfd9ffda04ff7fd42c6f0d20daea35cc862dfe15454a532cb77d3ae596556916cb8b1d7eb0c350b73ce5b40fdf03c751b3b40ef8a666812f925a47b7ee06bf02b158db0449dd2235cbcbaa59ad9a55e52a02245be6afa746d8324f4726c85c0e67dd853cd18854fa56585a5c5eded41b84a9d5ac1bac313f9a4cd003c77c820f7ee6f1f2f414f8f54d90cc27cdcb9a69565557f5f3d9c1a859da346a9745d58f79edfa30b05dff25b6ebbbd46f99ed4ad367fd926dd727dd76fdd14ffd106bd7ef5abbbe76edfaf9b5eb635817dbf5ef58c3e7b07da77c6686ed2adef68d7bb79822d6de304e4fa4357d3d0a115da74658ea43b5d6ba73986ba259a4757e3d0ad1b1312ec14fcac3ee949b7af504cc76ab3f2efeaa357e1fcd1f371863c0b5be2e83a3801f06abf58307c022adbf6e1dfaba433326d5a7daee2d3d8afbb8cd4fef711f18a5c1caed94f643ff8d973f345982e7188dcf4bf09446e2bddb18ee16526e3fcff33cfd45a31b7177f96bd4f2addce4eef1975cdd1bf1f27e0bf9a5bfb19d25cdcee5467009abaeab6eb07d8c6facca7b1c759f9e7ed29acdcf55d6da927e92d587db99ac50bcbca527e1ab5fa164b767f5f1128a7eb3fad83459a1f899c98fec3890d424b522925a9447d3feddeb37cbadfdf3ad7bb3de6a94aeab9d7e8bdfacdb8298cca116650a29b7fd6c6df776eceacfadce44dbf4b34486bcf0d73f9fe91ec57d5cb57a024651a7f7c41ccaa6eeb22af0afa9bf0b92a4c965e4b4aa0a645197f47eeb8f887453d61e4f694f44475a97bce6804579447a8f34de782dffc35325f2fef6992532fbb41d078be733189333296d73653bcd77e88efb66687bb94b4f7a3dbaa0ffc74d175fe95128c1cbeb4bbeef712cd96e05f52d6a791f66f418d0f2fecb7d97d17f767c567b502ac2cadf77264ecb2bd699eceba3fe7a5aadb71d9de0f53467d8fa5bf08d6d31bd95d164317194467fe34e2a75231348baf3bef3480d94a3726bb2f68cb0bbbcbcfe82edd6cabfce3ce54cf4d75ab5a769e7b578cda1891654368e4d9b6851db9e15b98f7bf5846241a940a1ee1bbae37e0783cface7e9dee3d71485ba0f0a48c09c2f79244b897e70050e44c23d5d8151b6880b3676d826a57da3a98cefa69e14759fde25d2a8e747caa3910921dbe7b22bdbf72f168d50c0118d16f043345a80c7f3c3a2ee87ee8d45dd7ad6b3c75394962e64666b1f28fb3ea565d2b4b47dff42f930796bd7c75337c4dad4032fc261108470ebb9bbbbff0f1b1f23784a8729b456a4b55f07c2e3aa5f6ea414e53e7874c62cddb67dcfb95bfd7ef7e6cc765cb9bb9778825e5137def0abee7d7402102fad2772f2993a562a01195990799017acf7d6be7561f474151a81fe2222a11ffd0ade8bc8d1877ef58266651bb63593942f8c6d9fcc20a86325a19bf89ad02ab3a4c7a459565badd5d494e5bfe9fb6a957d3292d65a9362f46b1752cc687f6a2f2e265acdcc9ab6867bee1db34debef3399fecbb2a6266653d3b15aad86abd99cbb66bb71a6172dcb36fdd2307cdeb3a776efc5e7e9e5bdb8864fdc834fdce3a98af1bdb56cb341b9e528d65a2ec652e26ab55a59636391881e8f18d018f830307a231c1ac545d73db6ad7d4fc10072ff1726c6c503d2fcd3d66cb6d76cf2bd921fc98b117dcb8823227574c027bdcee85d381f5bcc4c461b811c89237a21c12afa1cd28bc8214aea0f217d25735c5ef42272c8086654c2bdbe9c8bab798ac260d74b7341b62c452f4dd8d0ca91c8f4371e33e2a0d1886bf84c61e5ebe3512cc780624c2e3f5f499f5615f3cdf20cfc562bb760682b2fc7722c86c91fb1245e56d2aeacd013e798972b2c2b2b2b2cffbdc732e2e01f29e0b07ca4cd873fece12ccbb39c99784abffd4ccb3cf42ccbdad2ad9aa7eafeea615d0307b6c983962fc94c233ef1cda2ec68c435ec8281f6bd637c669ecd4a1c649f1bc5f03dcbd7110c60e961f848b0e4427a7ce29b55bdbc5d79fbd88dccb2aa180f4813036dabb58ebdbc7ccb88f342eae8c0bce875c01f7ddd2f235dcd4a248e0b0996de85247a97cf11bd0b0c494449cecbbb3c919827bde84b64cee86148222f4556485ede342ac1ffbd3c075b81f91cd3c3c49060e9491f7a13c991435e48b044822a849ef42b78eff22eefbd89e4601645f36cc6aa2dec537be82dc8a8b2b7c94181c564b34d3bdd65c432d29d679996cf6ae218892c755cc8fc937f44a392736dadbfcf64fa2f4b775da0eefb5a7f9fc9f45f96353492f56a452788d1d2bebfa4a8e5eccadaa69fd054957939faaa84d75cf83c5da76b2472f2650cbdcbe8fd88ae2c4e1430f4faf47a4953eb33a649e4779edb7e5f08f426604da648c244b238fec63d1ca3adbd8c235babd56af5a9d5d4d241ad58cc66da84b8f04d7dea98d51e59f39c168e7425db7ad641fe9655e92057cba563b5d6daa1da3ce5bad6bc556dbada6aed56fd91dce5658d83e2d6559ac566669e61ad69fb8ae15dd1e9ed05fcf39ffe131f66241f1cebea8e5447e6ff75c63f3d38d295cc77308e4f1aff4de3094714c97ff173fe4519f1898c5ee6ff2f99737af24972c8481211bdf8a72fb2ba7117df45f432bf820b09def77ef4e2cbbc48f4a15f614482f73ff422d1af307a975f41f42fe4100780519bb156a27721892811e5882f22879c5efc21ff324f57a1cf23f53c73377357e65d46fc1cf4e4491cf30f50bd7db6665ed6c631da9afdb1362b1a2fcba25ca38ed11d363ff774040378ff3309de985ab32a1c6fdf9adefe655995e8ed5fab6331f62d9055c1dc977d8d41f0f58803923a3ae1935ea78326249992441b35100268c9cafcd60b93354a1df8461ec1b71d35c8d8a2c6351b3b8922108bc5e28048d3648b344b9c000917dc40882a33c0411469b08d66c4355cc33ea756abca67e656eb879f2d3a00051740043102c2882e8070a3c666635b299e3e1045d109d7163fa8a124b1add63a89a2d8036c87e7cf0edfc5890f49ecb00b1d76088613d7941dfe082175f2c3b9435cf3e186f8ccdca2a9a7f0549ec23064028d1d76a10478ac180376c4112d92b8a12433ed7280894d130e54c9a249cb056f34c1a105a630fc6046c34af91facd0d0d0d094e506d8d8a2149ddb16dfc564c3125bfc50bc81872dde30c6931a16c85c2c5043810b8cf8a2e78b296c788fe64443133ef7810fa2490d66ec68b28117184f238aa5288a6e6c512cc924726842841120b88042d411459a31bb6868d6185fcc41163b2cc30901d0dea0526331c1b1c3ff262c2d523a90d084069e2b6834250d136c549a1a4ca9010e44a0434b42041ba0a12949539be167da99695c10dfa877f014a56a6cf1af28e2a0892dd27090032d4ea14f9903099f31c2604111573cf1915d631b697841b301155e908044693750e2467303881b10d029bc42fc1903768b010d5e78408786a45e9ec8318cc2045b145f8b9a4421832d761185085bfc9f694243638b58d4d86c1d28638a2ea818010ad2a8d1209e9c48c137fc43733addf6289ec61327e5e6830d0430171851592d539c4e220d0dad8a123b6aab0a24388ce146134f8208e18d1791460a2af807dff0cf8d579a1a5d3cc9ad700cc3303c391182f04402e7e2e1e6c488337cd426a8c09c6a469a50043b61e818c3300cc3b089273b6c09c3d3781a9d14a10386e197e369070acd7b228d28866158ab70b2c77114476e1c21a0434f103ab060081fd8c8c136bf2288d8e189c43f3424bef5f0b1beeb76f0cec89123ea77495c858355bf5be2a9ba2b1d3b9a7eed54f18300b628ca3c0820fc07b4410001842f41000184a73b3e724084931deed8615864258a20782b7c329683273e50451b2cd0618a95f9e1807452621cff7412a20a2986700960fc4c1200e287315e6b9c6aa8e1060b0d250d4dcd8a530811e8f84a9a5a8e4b5e97863a79a2862931787282316ab8c1783a857fbe8e6c51144fa2e843a583288aa2b8840db6481245512cf51645713c8d271a9a1388335cb0849e469e98e286179c4164b1c3d75123c40e7f041b1fa7079cecf04b08ffc70f3bfc14ce0f40d9218dda3eb74e742cc3cfb4c3dfe14a280a439a0f5bb043198634343948d94287283ad8a2b8c537e9f0648b1f7a2a843f9166dda7b0646213d1fce8740a638b7fc5d739ccb6f8a2ef445386a50cde3b8da7130e4fcc9c66507678fa913c9d4e38f420024d189e685630c4e81486a0c60b9010310b8216850d461a320cc3560c02b045710c431a243b1c618b279a07684e6ae881d2046de34fef8de338beccd3d109636ba7d5c41665ca07ffda6e9407dd22bc796b1bfc7b82b866da16e54137f8f7c5ba3c97e629f0efecca6ecc533468837f615695801670b1c59412081133b2024378f0af8be6c1f71eafd9288f7a2b72430e42407b1da10310112bf01dc853948d0dbe7519b141960dea78f0ed11577df6081b03dfcaec6cc7836f69f604dfd6c09a0f74e08c1a8678e38d3256600d3608ea0d82efad2251a88003593c5943082a45acc0f797a7e81a1b7c9ff96cf09d89d3e03ab7203638da200854aad420f09d4579f0b84af78026281bfc2aab33f02b0dfc8a044d611a2dc906777ec06183a20d7ef0e05723e0e9c1afb01a13e22acd7254fd9a3769950dba013e1010c4300c031a1ffc1fb62f421bcc343354659aef22477a7aa0810742c0c64b8b155865839f5b35a408a40b76f9b72ccbb20c21045c73c1360dcda6a1a1a1a1d9b1c307257ec7872c5ea043473dad4ab37a48b2452bb678832dbec853363b0c795862cbfc95e961035be6459e426d1040e0e103fba43ff8002803edec1074e23670a23fbbcaac0adfcc1f7f64d9e608224f115b4686abc1532752a767873c51b844d8e19bc29d28a2d8e1cf943fecb00bfc23ca9c8a0071c612b41754714a0163a5c6364d47b4c17a6551c492294856e6d300669b233421c11461886f384a78a23d42363814356c192a36fef1542873c6136f24f1406c0a100568f0c2034cb8e106074c4033031a050d646446fc836f228e827fbcac95db7942b6432c00f0a8d79e5ad9a8ffc4d8a86fa35028d487a8dfb962004e7448d871f2448e1d5e547dbd461f488c108da1b86384082e197109fda4802fbe078aa08c8c8ccc0e0e38ea586ae326850b368e4c1963656aa06d7e982241818c48b3534306c0e7c8f1df06768e1ce2e7c8f1339e1a3fc797355645c5c8011334d8a20c259634b1ca91c6cee1a48720768e1c391e488effe1399ee6e081b641123e9937c30f65c697ca43c685eeb83bfc1afee9bdf0241386e5972569867fd22dad1392baa575b811dca66685e1aa86db23e1d33a5e0a3125e0ee90d43f2e94070a7453ba43e6c1ff4e0fbeb6e0bf501e1a047407086ad689344dac2d439afac82a244deddad5c90e38d8a398a3b6c25286442383c40537143103308c8c71031a32ef853261588aa2e83a9127ea2e1a325c71a28c13696236bc48011741e4d00228bc38430648c9164eb0c0c5fa00f0afff3f4ffdbb788a65ff7ff8ff658dcd4dd0fefdffc353e3ffa7f00fe4ff77ce60edf7f6ffffd7d63f9525b6f8f7746a52801ca8364d0960c78c1db60c01b68c4ce8da41ac2ab7386e7409696e642d2a61c5156a984049951e255444717cd2acfb1f24336d8a14a729514a53c8e425a342c4088ab82d3143cba0407c2f1cb32bb7c27067ca1154f8d271c28c2aac294690649cc2fd0b9010c91f1d8def5f0a0942d89192c5141f03c0e0e189266c6a1891b2801e7eb84181040e7c5c2bf3b7f826a549f9c9db1c618f4dbc4eb9f537ae59569569220982608e1ca4293ef89e38e633d3328f28fe9322697e5bfc7fd214c97c92df383a016a51cb2e4fc93c357d8cb0c1e7c9ae13995b547f3b3f460020fecceb99ffacd833efe2a9bc677e66e6cb9937790afc990f5dab993f02844d55e06baaa2ab6f06c7aaf06dfc930d94b881808c0d102165657e195a068aa091c4b727334f7572430de4c6374f89e401bef0f1328a07afbf737be0c17bf0a5076ff254f81e7ce8c1531164715241032ece2aa6e0e2ec81951b8c99ade8c8040f489baf66db589566d97c134e74e2ef84ffef85e318bea9595aa7d260c7969109c9b1049b6d8ed0862823734e018399a7fadbd9e4bb983c25f3e4874f7e497e0df9369e1a6df26facd8e497e0a9954d7e8ea7c0271f08f93f3c253ef92938f9b44a0736f8b749952c36c8b3c6079aac61dba9c110a52a04201a4cd1430d35a8387718529512307c1a65831f8ebad2db7eabca2d4d8a20087631039e2a68e0038f4ca34b9e78458e1c41eb8012358050100419770d17e561777da03166c082eecb52683337340882201a413b4ced90a6810229d250830768053a56e0daa05884091d806a3b4861431055c840535ad55442c005953576c8ed908a0d76f82ee19bcee8d9e1876818b1c32d4a10ac64b44c89420a33745ab0c3ffc27731838a1dfa3c9d75409c9951c6193aac80043a081145ca6c877fc326528276e882efdbe08c8a2d6c2086cb8664cacafc0d82aacff4b14d1b1c639be50af8f774f2c34879705b147fd49042068725325118ae84618aee4b060a4e64bca00065e4402b838a1cb48c347afc9860e787cacee7123c94c8f08049bcb0152421c93c08822018866118cae08d183a038149a454bca2d0a932048c0c1f316add3240b2439b16c3f0a9fbd8218cc562e510866118cea8d86128f321f8616832f50e9f7a4a260c4551146564643e8c304210c3076f836f0a5f8c2136f8334dc4f06283afc35306d860a42fa8740cb85545eb14aa01010000000083150020200c0a0645c201892046b16e1a14000e718c5a6e5a2449845912c428a58c31860002000808c80c8890cc56010ec6f301688a71f3985cc6a5aa2a5517b4de38b917ba0b4124b5709cd68d5bbee7ea1d3598d8534967c743a80e7f07abc6b4770098c295492e3850138b5ae4910b00e1af20b7dfd617ab58c11ca1cd554bcb1ba69aaaaa84899d7379266054abe79d81130aa24c6d936146f6cd57523ab55d938352f6d334b0606376a908712421a6ca5ac88bbb876513b4a51d13357d792ab6b9052f1177302d6874260f9415fe11b6517f58ff52eaff135419127e65efd5f040ae2e3e0f9727d220499f9e1960d947ec86268e4d57e9ed13db74f842502fd0008f20ab9cd2d9d1747ad66e1b1e8fb9214645643c820612758590f6e3ba43826bbac69d60bb1ca1a22c5ba407abd25e78d883e2a8fc394d4d4b4dc3332c59dac38792ce1ca650dc2d0fc33477ec24b67370d908904be27aa6b8d8562866cd93d97a8da32add23c749568370b96cb8ecf62ce3a01d01a6dda23b3cf13d59549d7f3bec5569211e276b1ccd9782b5947f87533e610000434f5507d326441955a728649e041312b65bef576d5c9c4e9e1058e4b9f69083c11e0d1107e80d86f46c18f5c658c4a28287c951c84ee2bcea530f538b55d412909c8aa56b27ab00619039ad32bb5705b92cada0d10ce63ee4f472073776763bfc99573255f7d8ecacb62b1d69fabca74303fcdd2f1f90b47c66e2ec87ad480d6d7d4d96dac378f69c8b717b47d89dc5f20bbf7822bac8a203810eeda4a85184b6bccb932e884b6f075b3bc1c75341f82293d18a10c6780e88f73741b016841c81b20da902803d184b9a5c87b45b09439d595c1f299e97f9c84500fed0557e770e87a099980900d795260d3b1245b08fb4a7554c261c1670ea66b5033310882be51a58a461d026f96b2120c9fa8fc8c52a3e3d20ed32804ec63f7686c4b6f7f775f600f0face3f5e5f1c8bc2350fc0b318dc3b28c2edb24e8e2e4512ea658e59e8a03f8b77149c8def7ae5d781d06f06b14eeb208234a28de6388976faeac6acea02f16d39409ecc023f5c3b31ead43aeb1f4a8de7047742fa27245c51d79c6641fe0ac6dfc36e9a4d6bd8152d19a7f8c09ad30846e41a70a93bf54c75c2120d877554595d2a65585a6aa123764e47d51202cea65f1e7bafd1c3f22d81f6b419ba4086c0a6959674999b0f7502ba105b15118a612995e31574eadf197b3bf5039ba3170ec0c1908465e54c7b3809fa43097a71d705c4779a704085a0716ed2a823a573cd7dc280ce21722b2ab68cc7d7b7694f375f01b29f0c8a0e0c1479de6b8ff5e737a0ea49b738c8cde791b3fdb9d90d41ec32d796118ba7ad2da198a5c1bb90cf45f779676de5b7adec22d1f7116a3aaa2c661f2507e78fb01539cbf7ac23582192874b789d63f4ced942c799b93383b0938867e6ad298e66feb8a0344201e783fc619ee50e5c23de78a6ca1cf3fe75c17e6f74c84e786301a9ed0a23f2977af13f6776daa4dfd9745721ad751b5bf5eeeebaa11567e9dfc3b83ec6862d08efb00edaaf6ae846b1301ace82bb191384e0e53cd726eb7d24e488a8d809af48d6d90113854d04109040e3f5d303072ea571f030c18dfe89e37c8822cc7489db58838f0876231010acb405aa37253351feff853ffd96c59909404b40a68742370611e0c4715595224444f094995ec61dfb1e0559f1fab33852d283eb9ebe21a698e738c8be00a5c5c420031c020b4ccc11337dced34878bc5e3c3bcfac8808391b68c253ae9b5697dccc144f4f3553ec2ebe58925c0c5994719243a91a91db134d571ef291ba11a9d64aa2834f1e978b0f82183d266930436dd4af582b11bf98b8da55bfe2276988b894a4e40c4af1c56c9382a92728d2097f2f7069409c65ccba318df9108954df86fbd31e4bcda01acc6023173ae46be3259c5723cba842c5167ad59241cf32e0bba3a018a5ab0aeee09c66d1fda7dc5608665c6f342ef8e2b539252256d888711cb97264dbc77ddcb18f1a51a5f40e8208305de77b2a339b130d71f2be9ec6400cc3034fe32f6700f2ab498ec2ade1374a2fa745f37709d54e22ca5d5d3802670db2622342c1fc76ce1d05826a565096012af7d977538331161a68a47c14555615e18c865c30b4cbe3879cb0ed0646d8244a2dda5a74a9b09a40987d462d6e9db3ff248c77c58812bb909e803f8d83dd09e428dcc7e4cdc9243026e7fe008e32b0427190ce6aca92cc28de64eb452dc5e76ec26a90ab41851a7b83b21e7b7d43361c81d6421ff059d876123fae9f150558562279fe96043c24d804441ce04a299d2dcb4ce180a10ba8ab3faebf1215f40173a80668c314c5909b6865801cb8343f87bcba494f9d628068e9e427246a22e6c348218d65941095c33cac643b0a5ca08254e72e87ebd15d9030dd15ba1fc78aef8096bb320366fa631ba643497cf15332ed43d9e14c0a870cbeaf2d647cdeaf283142f0b3b3901f589d2e15124bd556d9b360a080bc0b6250327084683432a9711a3c7d858b42c4915e8e11e6e6a1cdf6179eec372a6c8f8fd1cba27b77deb731ee5d136040e40071b3931b20bbee7fde7c5bde5c3f824b8c490ef2490259df5e7b923683813ab13e56b736ffd0582ae419cbc94d1e24277e43cd739ff3ab5d965d5739240752f8900e7e74140be467da4d34921bfc5b78d13385ca14a4678ec1dd48e8fa9a53454fd8b05aad5dcd0477938b723e3a58c30dfa1cbce8f992970ade136d2088a67e6120a6c056b12aeb23c5b529079279d9b063c299cff106dd4513a6ecbea31ec40cd026f8335664418ed6efb44495efcc012231ebc10b812982c2b4fb2fd57e0aeaec89d67c57d13fc00ec2f9be2b2121e50ce70a18ff1abe8883fb46a9d33b942547d78308ada299814222e5093eb2fae4b8d29212f8f813b49e3a606960a68a905aa9544e76465afe042f53e709aecaf566244f40b6d4719cf1c3de39e57fe9b59528617dd84031a8dd0b889640da3b2cda7bc5869a3cd30e637288aa677ab2ef22b252126066282e42b339203a633b360c2b40c1a2f384079f989806895f203aa6cfbac8e42b18370dc6c55494005a86091886e0ab16250dea1bbb2c0ad95800e3bb783b2d1c40ef40bfd2c9a3b3522de2a0ba6c07ac2548d65c76eeaaa5764e29e4a851227236dccfe1b7fd622ac71dca8a3a20b31b64d2c49fc55263cbe764a53f8da3c83dbf7a0d165475d08703cdc0ee6003e0c6e239b23eaa9d706c0d3d380c5eb1148e39c9611e875414b1861339e2d54a91a70db7bcdcb480c4bc6c6a14fb1b308642b7cc8cb2728f88ed023471e804699ddcc9a9350147d876929070fea9411964ffdd00cbb2eda2e8e21e39594302012b3db21dfa7ed451a21dd3db185c1bb2f90ef182085c899c4efe3778de67a8c38c9bf0247de200b5a9668d7e1f978548cda2ea8fb3cb230b349fe54ce96ba9981beeca3f5abf42781399326ff447a4641121c4f5427c1ab90dbaa3f4d38ffd9e63b5740f5452e22ad35abb475c5e12be14b4b9b297dc4aa1f8fbf97210ab41ae6d21f0600c922c88616d3a8cebf2e14e42f30b49f41fd9fe3a7980a2a03beb0001e27e7c3858fd2cf0de495ac0cab5070df348aca80e94e260841e892f9c08220a8b447a4342740f325ddd756769ee8a67583139f1fdbb7c4592c6c449e83380ff79929720010a5cc623ea01a20de5cf0f25dcb09bcbf3afd8f89a1e3eb6a65763890d5cb9c672f71a8f57037939b066adbc6675d86cf6d4a77ea7805b326c4af66816dd0464b1d621764d1cad17b7c6065a4af5eb4d15122d668e929052c3c0033a54bf02ddb98a2f1074925c9429f607ae2d7dbaec580a9ff6d8d911eab66d7c7a357ba1faa6a9fb92461f7d0476ce2e5d988d1a2159a7e5f9054738c5e2808e006425fb4f8abc586a41653787d08adbc5b884165a95e1b98c633c715758436c2de432b8bac780e55ac41897645822b8f4ed7271508e0c933f901b824dc44ffae323aee8c65e2f30d69e619f1b885a4785e9da47bf1bbef98691e410161044eeddca5179bccd755ad8e684fd44260dc9c8c526b7837b8826d00e81c400dcfe6f738947344d65102e537bad4eb7fd81da0d37f986ed127373ccf3c0ecb832f91064846d276cbdc8f6c872f69e864bddb047b88f8a52c21bd43e59762214cafa17fa0d954aba3ec7b525550a44e9d177244acb0fa3b7f78b146d2c9ee05c680b6fd9205c2b766523217680d133a0426528f191c0381ec5d53fc2a30064997d850cd8f9e8816dc073a2657809daa5cfcf11a2276743f399d60c8421f4615f513170990fcd897b140a84ba3748a6908ef418dfea6685c33792bde8828f69574f876acda44f1f9363674175f4276e05fb3853dfd957c2b4ba3badd8287595996b0f7dea5dd2633f23402a4b8ae92d2a194b4d94f7a589feb5681e5064cdfe8f116904961e78722c43c23222942d1e39ba6eec26b31f5b64b1b687b0bdbc82f141697608b410a34d5f3e8c21156ade4a9d74d0c07b1f166d48e38967e72a22524dc1c07e0d79f99cda13020e87d646d0c0415fc0381e4dc7ee0cc03d9d60f53bf1799a27304521927c72c21d02a3f54dc9678aff06e2effa9830bafd049b4c74d6d4569f28d45495eebdae19ccae4c4c17743d02682ce897a3d13640c9bed0eeb3cf51c06b27ce4ab2bd3cd2c0c77d0ca549cbf5e272c0a1461f1990439c8bb12f426495aba23759f1524fec01f2e8c5d26ccb1fef58728d2a4bf3e6a1e63f8e4979793b7c275744bb9617ef44d5da7ff11d98a876b326507ba9d920694fb3ba01f3f7499d1bce07ff170066b1d5611062741b136567ca42136695553300cc6f68a289b5d44d34dbf58d28a4f04b2a277932c6774972824f34ce127caeb74cd288e0f21f28068478cbb6c9ae7c3f70b58222584d64f5ffc56e4d8ac03e89c354715b96f5d6ee3c10768f968e8205c1d398a74387cfdca60fe8a60c28e87cf2d8c95e8bfc28d059455570f74ea6e68c488c538400cdbd12a0f4f80d3a5b9fc78576f56de9f28bdc8b7f11619ef6839194bcc80e470c0ac30cbb57d70ea8217e6f774929fed1809d1095ff3c1fa3e7ada77276647338ac500c3ab345016cbf7d38fcdb79947855a66c140de6926a7d440e4102c3f57d2904eb20850cef56ea290d588deeebdebbc68acf7d50f030e4815dddd2850d6c73fe44038b6ed4c0a275b28fd0b6e60fbdc2e53286f7f02e7f29a86ef98d5efcbe94f59f1b511e787ff806904a541525f341056c6a452ab77323070fdf511b7be3df7f501d47a56f7351ea8da514a22bcee9b63a7d40bc0fdd8f7c7715af154d086da77a694e2c3bb71d8ccc9280477f101ca9788ecdb575386e6f56a745d39614f5b5becb06840a575674c4cea34a5c007408accf8c61d8058dc20c1a05eeb18498ef0b4d210de60cee1c13a1a1347fcdb770a0137573500c1fb29b237db898bd1ea339a7de47db98aaf344c619a01b643ee5c73614b0c0181efb1636df91e246414aff6dba7ee6a542fe50335ae225a23ff9c92151d0532b4e4bbc4e85f74c4b41a32ca69337d6102df6ca3f83c7d39b55d4f7d0a50d24542ed3cf70cbc93556b78cebbe909a786b79aea84a0515da9869f28e9987b5657fe410900af7597a4d8cf089fb459b78e1ca24cfeba7bcc891c072d90cb6902a1d51f2b79f7781ed687c70e5458b6450f5e4824b389e2cdd219f3699a61b7c0ad16d1db74e5285a7f11c4c5ac9e2957b88c8fb89dabb7c7e5c205a28a64c3037d5c07b775b20f7f129bb26af215e0882875743329dc312a54b11961b9fe08042158e1aff587b3121cf039b72bb3ce4f6e57070d456897795a15cb32b66c920ea1370a9c09b1769adcca0bafbfa01afecaf0a750da9dfae6401f62a507973b060681db47921d418457f1ba1da525726c2fc0e146a4aa201737d48a9419cea33bda48127e271601e9d689ca66b8e2fcadf007567ea8944a5d99d94a0143e29e18ae303019f47bcbb65d52612e530625cac49ec8661112f9c94a6eb7e93085f39cae0406c0a0efeae21790f76471bfdb06334383cc9861430f0369183075be84af207c9f20a58a76d598522f41f1ffa980544bc85bca2b03a517ec27bf571bb4b522a1a22df1eae73f3ea3226770143242d420bbe6533c4e0f138a703154b09cb9a55971d26843a9f987e4fda8d5ed90e780929e635c4d36ce60976b9eed95b492842d460342b766d54f7deb49a2523aa96b3196a82d24534a1cbd36834e46633d01599e04e54701d11552e43b5cbdda7b45090c3a37eb9d517b8dcd65f6254d2156cfd5f530100436833f8710c171b933aa6bdefafaf792914076f685c990a225734cfe4684632cc335e6c8e0d8f43c944482ed91d4521f6504c3fe8e3da0ec86fcaa40e90645ed5786390566a4b366fdb864dcd6cfa764459756605c33da4e30be17e72fbf9924bfe54107546da0e5314863eb8321c069e8fb1d125c8b565e80815dda5445bf8c03911e59f044a5dfa3ee44d0ff1d04dca6ff6c325cb792283fa7bcb4b2a369f5ac2d7bbe3e51d17130383762bb5ee309bee01568d53493af9931547220114efb9d01677981d7376ed9f6947b63473f7ced280abe9c1f2081adf5960d84f20169e8f7edbcaa821648f162f92f46625a3069bcd1a9b695c4f3957736d6af25dd531e8318132139db2c29488920ce776f95b027eb74cc7062cda0ad73a45ade22514bb567e305de23c06eadfe4dc6e8e7ce65e17f06a3a7a2a8ff23d0b06b81d3129377e404a6afeae9020a099f62c63c0de2d950b42af5c2045d8c7c088a5f543ee80e49a569a4313a2fe1643342db5501939c6e014b16f1422e4d6fd818f93e0ae5fd3e3dabd0fd28a6e439b0aced4dabaa71f342fafcf265ce442f6beb30c3abafe1880295ee5c7d681e35b7175a67205fcb5d02c0926941ae4dcd96390c0c49fae0e637f3b2dc7008ea28e6e9c90a1ff6e0b990c229e21c20d4c40a2b47ef8b7842e20bf3b636084e4086eb0f0d91cfb238ab1e1ecd07c7cfc4f03a2ba4d209cb12eea0ba1d64305872b14df71f91fc6601e2adf8efa0e660242a2b236093e337ec3f89439c2ae478c5e65f093c146dc325d8de3117adf3f72a3f68ddce8f61f27265d3a02dde4d33b8ea2a77d4771530fd54eab9b89978cd2ebbea3fb5e269b76e0a3ba232f414e3c3b4e5ed3320ea85dcde7768eac3741454cb202a23af4a7e888b41273f0be6f1ae2be1916b81729cee5838efc6e63d34d2c8b130362173739403560183900296e297609a38c0d90ce065c23bcee2af6d70589f2081a8937c69628c235db3f9bc36dccb4aa54ac5c133cb507da32be530391bb4ca275bc92afd525c1cc8c3401ccf8445cabce144538da5589f5f7e0ea006578f15f767db431f61b65cb1efe32df28e47622302007eddbb95d3808bed7ecd521d27cd3b3a9448424e3e2f3ede41af633476ce1cdfe14db2f104d53a48701d931c0dc9f8f8a134524eb409802948a993cea6bc372999a9a200be794675222145d26b79f663c6bcee1b682f334bb9cca6c3638e54f9031370f679947a5cf3c271ac39aa699967a5b8cad39cdc0c7d38c88583858a206eb69685c3f0a8861e74c565c420a6ccad162609140c8d0faf6a49e2e726937206578d4204b79ef6d942634b4346f24e6b2dd56a8ba4b440221dcd78febd63b9af5dab4ff1f9a1c589fa18d39e27fe0266fd079676806e5e15d1872025ce7d2d26e027bbed212933fa5563f3b51c53b07eb0a2bb2821392bb855acfb8c117da9590c20375f0429bd995fe9b88bf791d96e6fec59dd8dd8f62f31faca43c357d03daa82988800dd8079d9a4e9c90452f39a06a3c917df48d49f727432c34a236ccac239a892290668234bb73a7de3679da51ce9f66663ad5fbd4da3709f2ede15affd276cea706a44a295131340e8b68bb4fb4017290f18131649200f8a7068a1e4651209c98ea4242a44a4440b5f0399aabaa04544ba82a8f08fd399a69ab3e2c40350bcb2cb6f3318a2303aa5dda44297a0f03d5d09df641b25254a10dc74040352c4c4cb8eedf32e5f4e3def4e44012543342437b22dc33df9d96c26996504d37a7be217b4108846a4cfc54b3f49c6befb2bb09d5f4cb19f66678defb56489b8011ca87d9503725fed115af98b5a9335c637474188f42bf26c880bc303d8edd08b777115cd186c161606412405c4ac7e5516f138251dec02a69a0ef07462c42f184b2970c8012a111ec0408a9cf60e4ad9bf6cb8cb154a6b164d5652a9c8e7b7ebebcd68ce92f0bc14ba71a6c50ed72e04289868c12965aad179263f6957ffcc7bda4f7cac6a2aaef084aab65969b46f5eaaad414e54218c98a288f78241207f92ac42240856acd986c86d3ff64a27e3a45c7e3855d205490d26cefe925fb4c2a51f2a8fcb67229859a4c5cd8eca108f81bc50a29da964621e7acadbc88270e7c17b442ea83f3692be71dba24c07e22cf1dfa41ce6d9012b6ea5b670e9772af9e95abec10771683206cdc3c37c19e94d8e3ba06c69805e663e8abdc4286c5f3758d80982b4426ecda60e87ad4652dc99fb12754704ba99aa26c6c31559dd69fd8d2c31af3f05195da1e9cef4ea1e5ea432414b764b3091a47dae23a87366de25402daf483b682a30a8d3f47814d1bbc1931d86eae872d49ee7ef9d015f72f80c8870eb47944c05a600110d65f6350ab0df2e11b40e74a754a8cbe70d4b0764d5bf9e42fb5194050a2f1d1b6927eb11b1a335d8d0e1e717c39a98d4b9b5ae847c57c02616cc8dafa507b995f128e54f1db187a0b8387aa189e246da1cb9a7389abaf2ea30941b409f26137d1c56fe4c4c84c2b2fd4553f18a38591c9aeedfd00a96b1bb34c0aa331b46a24395cdbff68e91272403c0f41eede9094d131f0b393f164357cdc92567b2435463c8d8f077233d899f80a8460d12ca225211c132afad2bfe07ff66c0d36fc2fabbee6afe4e7cb5b5ec56f26b5920cf4a98eb0d4d80c00da811ded101be3c7b567db19254081ec3808176d3b331e814aec78d4a014ea0f1c211d1b3fd4df2940248241427f21738bde8dc8019fb4ef1b17317e90ed165a8f4dfe6c94c7592ec93599be1ef2895856ed00c7d0b9a3d5fa7eea857a484b3d21ddc29dd59e7d994ba38473a0eb1752daf7532a9d671b5112759139051aabada89dfe32303b335958d3b24763312144e779cb08dbfa42ea3adf1bb21296e250b27feacc9cebfad475d4a2f877f14a0512354be9553cc1403c0f9a2622863ddeeced51d34c221b3695e1ed379266150227219f128cec5d64727cd6f0d842c826c5ea7974b162cb443e2f7a75f1967e50e25979793acf65d16de6b70d772fd21447f5da956c2343ec975f053ddc12172e178f2bc9177f3dd18e0d52e8a0ec5667d11de98de2febf7a198942efa4d88f02ddbd965c2d64d75d48da6cf390ccb04b1d81e14322510fcfccf05d845f3041e613d7d04f01a2ff0cebd8655b004767a55407e92f74d28f4de947ea3c0c55f2463db2079671dcc91949fd9d683dd584cffc02ab9c21d449e5538f76020bde323d33b39a2de4c788ea6c2822625834eea4512eb2385190894cf440fca2aca74c24505b6d684fb9621a77e6291c2764809aed7faab7fb23d30be8a9f2ead1e8f92132a388711b52b3df99cf0826838bff4c55c4f98752c343eac6251df354461b7ed98bbad66fae7cecd4082354122137e2a6fc236db022e6af4f292762f40e27f3cc4746771de7b4767bd99c37cb397d117ea463711ae4ed105e3c0896a0b802d93e47b5292cf1305dffb15c2c2d6815ace6069f9fd18cd7675e9501354145d9a4044a545a743aa304e4cabcbb9c7e118a5d655f66c907b6c70d3e878d7f9835b1136febada34909302099fcae2fb61d69b9d21c6c44c1e1528d40ae47026e4c61814aaaabf0323abb27615196a6b9f96d093e5348582661448af4b0b43e236e5252ee2343c426393e290d2dfc94cf1f041d815d984baa164c5df3642bf48a78773f592427d9394ec5b1f9baf81177799afd3a3a839799db5515f9cc42e45864239c350badd6bb58bcfe46d356cfa2906824edf56cf633adb2a903e3b2249710bb83449bafc25c810ec4e5ae1c1d83f2606a52d3c307add66498d4346bb5735135abbba389ba1e284bff15033caac62bf13fc38fb5f609a3a191f71fe5371b292509b53842d495202c6ccdee503c17046af1c004008b2c05d5f1f33f854774eef96fd7906173cdde7685046ee0d9e2483780a28f9339496c7ed1cc87d8151b8dcb28cc0f5875f98ee9d98b294e74b7f4cc8fad1008dadd50e433c77088cbbb519a53bd3270c71acc1c037f108fe29be2c3a990d26bf5a63ec45022e93c9892de9d47f5390c2bb2d945d4306add9ba53845d92d067002d220fd9b21c75091f2279f3539c51b57b3341a76a7bf11d795424aaf458e07c1ce261ca943caf0f95ffdfb24c79b7ca67c3a37f0fd533c11a5bd39957ffac1d1c754593dfc2b8293fc59b7b172a5cc91fdae8be606cb90dc7935af564cf3637e83f18ce281808c3386e345f4a65430821ea962d0f4a960a82b4452fbb265fff1c1c93a8e8074ee3b2be05e46066c76154bc7becbda87a5f3c94c92c1bdd0e22d0b0c73d24072dfd26dd715788a2e4916fbc84f344d02d8cf563ebb5261a7791a391404da9efeb75684f651522df598542d22c194916396cd5ca16d922d9d9f5e7efa69036a86a0ce32f491c76b06b07aaf6bc215fb44c122a0b5003b303654a5ccf96e266fd3b34e88711ed3f1a0db1a1d6e8887e25a185a88e5b4aead8e6ee3959674e3b4575ef1f2f0960561089f64fa37cba6907c6c17080b9a025d8eda4b83193618ea4c6bd342db5f012002912f1b2e5bf1d6ba8e02e0c0b657e5ecaaaf972d1f5e14322a22c32a0cd3580ff5225ce2530bd6a63fbe75a93aa28816993a6214e14867150bf1f464d3e90949c377f17592561b899b93634949e1e39a43e861bae5a40ec4620eef9f0180427c87793db514b73b7285a7b4832da2202b4794e229705445d6aeeb41a837cd02ef4e8df36c2ab333ce5f1bbb45cdc6047a7caa8687a1a7699a4741ab9c8b7a2ea9e8e9cf1cfa76298ecaff823dbe42b162fb72ad34c6bb17df4a818fdf1b47c429b6bdbf26c9c1d190bce129cebf95de9d54414b82bbe663c746d578b5cc67820dd364cd12d3e79a82021a23af6d0e93f96f8efe87c9ca26e8f6d46bb1d64639faab5f59f1dc525d080b5444c55fdb66b04fa0939ddbf94412f24601a0bdafe051405e1db7e9582e697a605febde06ed812f140d49c398d79ca5c705055dbb81f8ff7ec0346074a3e0b97fed373a375be5056ca991a09102c379ac9733625e4c925851c6135917013703fe22fffdaf2e3b5dd299572ea5cb6fbb283afb690425b02c41634f4258dff86bb4d0d353bd74693935680c2aeabd074fa68574eb6340c5d8da996db32c15aac655d20d914212b4172eac06c9e9df50f5bfb3eb5be35db38d9ee0c5514b0fa189434edfe8770a15500ab2bdd25a6bfb29a14a48bb11c8b62615caa42e51535d0caab98357d16f711f10d9157290af795aa45ba7f7bb1382912e8cb0732d5ebfccfd100e74d7f71b96efaae75f35aee92f3d2a157a6bc0d313a447f999041732dc1dc923d6083df3f09618b862f6b5648a00a739d1d8caa0c4f7e77a48f596498c9e8ef298201beb709975625d1945066c71f98af38782a712e168908c515457132ef8b900e12522fd189c224e5d68b4dbcc48c301c6cf6921b221e0e53cd0826c1eefdb7017fad61ec339c239463689927bca86301d639c7d90751437c851935ea1e0c0fe5127a1982ae7a449228b349f4438fb0910a04e7bd0a5a011a40b64f416b94bc865ab874cbd9d04afa0a9e0121fae4e3ad67bf55703350f0acc5befb61e491e8a8c2b627b62608d6a1888400df0151a512d3457dc748b6a1e76611112bc1440bc97659a0d7d08e115b5414862b0f7c68fec9603774ead6677daa7e0ed0864dd1f4a2ee4474268dae30194e654d10a2ca0b87144f7d51e64bbab7e5eac2a4ef06a3fed9d7328aec330f007e88955ad8ffe8a60545194ba3b30c6d864117e20561a54cc2b984bf83c73aca99dbb3c287595593c717fbe78702b3977d550b2eee08fa47cdaa6fe43abd623c3e9edcfe822e144b930652e5298c0eb16a37a2b5428587184994281247ec715cfe8a3f8914ad6763a3f9226a244d5f6db16ec481dce39498e2c640cba0084dc196698b3643e930995229c6b3097633a2b0c0aaba599e7b1aaaae1fdbf377bf34cb0c4e203f2b0c8b6e21267635861806008b56c2be0a076579f9bc652ac1690957a782582fe5b25d1ce0f48a169bb3c91893810a2d65dc29e1c71f2222ca67d1583084ed0ca1e5aafb4a22e82d12dbb9684e2748e86537736fc7834ed8ebbf116d062caa553f3323fe5b24254e951959911f91222c9a466d5b618683cb9cead099170a3484f41a64116cec16be937011e9ddb1691e8c1e4c99215af2478a7e919f8c5d201a9c8fa71dfd5ed2b979d93bfaa78b9b7d05ecb4e1b265b2469879d37e58f6f0d1721871f8f8390d864dec3f20d7193581f6b31b2277431dcbe3667718e12b2d1bc99bd19503982e1268b77bd55b56daaeec65168dda90ab16d6c19ac8d9c4870322560c7a79e7780e41c726908946dbc48ee6a262fddde927b0bb752da4c71a044c55968425cd1b2dca8b77957dc2d17595f72920d7f0de1e9c9c6c7b2f6d4815fd0ba78db16854cf04758f2c5692c350d3b5f6c240e890cc8ab55067a1279d1d50cc5863b6f8c9a350b549a7fa3e2c7f47d4d0fee9124f3a8d2f28d842b6187c86f24119ec1d533ed16ef93a0d38c82112088922a8397486442004aea638a12980c1b8d395c459ce4cda708b8e7a0f43ae46392453b59ff76cc48ffe41f807085b61b1488a88822e297bf18a42414841808e0cda22a02c53fa2ecbb790c9e8bd04a17a4f469780505a0d911612ee1b7ab93096e411d4809e2cbfca4a0c44fd2432b9404c3047fbeb344550bdcbb60455e35de24b8f20bb7ac909cbc936e86573c11ba87ef6f7a9097afddbc127d5260518794968614ab895acd2aaa1654a2fbfafa641f7cd1871a07a9639f897a64175bc3a682eb084c70a8b5b9009998facba28a9a50a3f58a017074d5a4c24b9af84152607206ed04bb8c52b95f8cbe37b633d2d297bbd5c5f67c0020e93a8d2ecd2b2c7577283bf8457b2511e9a498f020f984f5998f715fa336100cd789c62a162ce71ee59e4cddd24462ecb39e8be8da43b83f1c9dc8b74d826abf36eb6c84dbd69e2480e6d6c793f1f065ea433ea1d830dc8ed266ddf05f8da1d42f6877242e86002380910bc0a2ccf60a3830ad713bea0c3b5137cc3fc50cb8cfe29cc9412009f013981372bd27c58d75e67b7761af084a4d39a6b904e7693fac8f9fb0c66698822a68344b19b62f68e283d3bc2096274d4c33ba700457d61811599f3aa2f2cd4b61a9fd451d02198ac4a048e8de22245bae7b7e01ed0d3ce460c15e3521a43a67b69e356719c4f3aae866805b48bf12026b8cba0a5b062cd6926eb2d150e2eda2c5c4b1cd2f3e8044172eadf67332406177c6617236fc95d3eeba1438b3c723c636f98b001fd514df3e0caff59a6d10c6f84c54ba1d000ab2a5d816f141a6c2157300a1191ae99d4abc453d61d870970b16edbc309f4e89bd4b3c83f133bc6c23168615371a946cd74acd86e6ae59959bece10deb84e068b970ff77b9c57034ed389e7e9eeed9c94dccbd87dd046ba38be1a1df03c9384fa9c0f22290df58140315ff09a4028f5d34afae48f6e1747acd6a5a19a1544411024aa98da8485ea8e00cda6a393d778f2dc079aa776c3463c818725b60d6a9424773f983aec61029d52c40161c11678111dab8df8e96b543d7a7e12594ad028aeb27daef3e09a56ae74bcaaaa5266360f75506145ba4b30c3b95eef130f5f0517f45a855df3d15523a782ad3b10a9f4516c5c43a5166b7541030c65f7661874456cbfa35a3d39c3d097016dc6799503589b48800f0ec3799426022697a2eed1e49b542c1b970e1d227f1e83d6b516b43695ca2ac44499ec585b52ac50dc45a33e851c61627211fa4a4a182d59b5613715c0e545a621d3a0b9661a2b3c273edada1eccdda7176678cd73a9f7f1891edcbf99b78892856b0d5aa69e820627cac8a978ac8a86bd6106f742973e8a09d20689d7c87283b7b4faa86886bb8238949582516413a1140293b7751d2781718a848ac91aba2582b96309b8dc73c66a9ef9b2956288617c67ff9863b5a19a44ae23a5e41275c533aebecf5fa4be53ea1eea92278c927c9dab56353b9910b83ebc79f3e096dd1a9e29e41b5b8a87c19ac7bc7816939ced541a49ba2947ecf9d2ec26d90c32fe0cbcf38082bdd55065473a52ae221cd3c7f1ba5e79763735f52910d8c2fe18a51996b891f2faaebead87d0f1c2c29e963574d52b081d9a30fc73a5faff5f0b9831c2f64bdd0953ab4a0d4f0203c16dd7ca056db95bc03a978dbbfe4b7c854f36809a0cc1d15b1457bd5c623aa642df85e158067321552097bbc7500f8897ac4b4e02883b4b1e1317895f269dc9ab667a2a8fab0df965920d605b5bc7c3bfb6def1da0c035ac67c4cffe3eb26d1b0b339b9e7cb13bb742fb2259678a5e1b4da8d70b0439c15208585a9a75d886d61fe6ff5d3625a0956360e020a7de04eefbaaa83868cf65e344164e843a961e5f5e31efaf1e9b9af4ff0acd6ca175f46817b8e0df6763cd95c5ad66cd9893bc778653f655819cad76d68e20a8eb779e99681882ad6606366f16385741490f1c199cfbd421bd09038b88a128b6039c130f072b88f4d10e6f35b87ab12c7cdefd8003dc6212a3df806ac76853ea1b20626f40abada2fd093ce9855c197154bd6c80e866fec9e0aa4c45da55bc80d6e7e87343f7819fa4431945f7c2476ab85e50383927ade9dcb4a6d68fe22567cd62a97af41590ea317b41557f32689f7974d082833d558063e5864d700650811282b4f8716407540bd97009802b2f1ca7e189f110a58076797bc3b2755cf3a8b18a4f2736a64e90795e6c1f8c5810455bd946167f0b7b9345b73b0d80676aac76e9708b2a66e46d72a0384dd4e11af3df9bc4f8fe78ce6cc679ce72b002e1904e4c7888e5ecf0c2d46e4b20f5a85d4b624bb91403944a23c8897a14242508cf050929f3c3fb7d6c469814a24d22f595b25aae890b65bc88182bca8f83bf228e605424283dac43a81b33ebdf03c48b43371cc8b78870c403c422d4c11c1dc92287b705dbd6b28eaed91c2311d12c9bad45aae6fd46c22e878a443ba0bb8248e3da07475e83a37ef1671220ec1b97bb4bbd3494e58e2b33c14f8c5b81341ec403200eed76b524d110e70c6c1e2abb1b6982c52986685e94164adb2576ebdd49b6e335883be238cfe642855cb315f06fe049f13f3d31f7dfbd4faed6229404869da587da86817fde773454856ae914c2e26c1f209d7f1dfa37e9a51afc044f5447d4e12bddfb9154839fd8984756485497063f69b5060256430658f4a0e97c3fa4286f9b97269624925840a1eeb8f962dd58354587d9c31a59772067adba9f047399b4695e4d2093575f539397fcc9d8d9d004715a5c51fb1749e831b7883b16f5e480b157cd7f0be237adf31cf33264b1803913c2abbc17bb1e8dddcf81746e4bd07a23e55761f2163d1a3d68433a2a54e82de33995996e3673d3afd21847078e87d7a597d9e3d7f02d3eef9a0486b7432a6fae15f6ee01ea9c964f2e9e3f7a9b19355df32c981183ab5bffe82d6c1dabd392e8deeda6b071496706eb3457a0d87f729a11426c0c6c9a1634ec252a5dad60ba07b2e29310ddd0fe2a2a06fbe841941cf2eb89fcdf1f713dc5594ae623146cac9d2a5ec85704140348a068c38f0c45eebb9f4450f8168cccbc0d18a03c787047967d6fa1d2ddeb5171eb713594c5c56bb214d1a98c72b5197c644972058bf4cb7f1f61a21c8f3b0000061cb6023051eec70776a302a5a6971b667695d3860fa26d70b4f251aafd443647125f54bca2af32159abe1ad200acfa67e52ae1629c654255f642ee9766a2353f7f1922051c97ee30c25ad579857632aee4093bb8b2461b5ad3563790b6cdbcb8d4ef800a0ca1a6b9efdebabe703f9409bf97de8b608d6232a9a3ea596414b4e6c75ec8af57989328ad841eee5a4f9aa981814788ae0d5cf6196052bda5c66767e0d36a1f98c7bc4b12a24a7860711860134dd1c8a607fe23d6d7bedfe5ce4ba51f0c221ff5743db8c4a4b8e2cfe099208c1a76485f2f8af98b87266e5f9880a7fd5aa1a45dfe28458d90b193ef14a3348a66bf9da9cdaf9a60c5f87e04c757b1b67c159b41b9a8579e704ffae25a2c7606c9668a8284940bfba0c7be18909b90c120f07b21b5c144cbbf6ae138285546b8b3180f2426c853e95ec9eb5fdf9e49b73ed1f9e5ca3e37e5a5b3811187ca6482ac6714554f99a25078bc5e7f003f6bc1ceffd1121e0ee24363b1766b083ddcb0555ff77a44c0cd52676427b7a43f6d26a9f08950fe6bb82fa8d51131b57e0d5f5c34b206d3c3235fe58198dfe12cb2fb25c61c6585c3ebe321a69abf2233fadf4c078dff00b21d0f1e5a2ef1bf4309c065fc63dc0e59c2603d37bd9ed6d5e1bc873080690fd255e74b83768d4c7aa8d56f7430abd17b027ecda63196a95e0ef935edf3985e19e9a106ea684492a5ee0b8f1ac69862f47868bc160c75894dae3895eb064f94c101cd977584175071c7cfab8746f170c431fd30119290b9c70385c6cfab71da8dade1680127b0b4aa2c04ec873c9e8ce7425e23eeacdef9401f1da13461685c099475fa19b3cbbcf39a247c7b38530ce29efbbdb9e2c18262e24d197a04ee01fb823da60ecbdbd9774218f0eef5e91245a9e7766b582822c0b8084681e0efcb21123b6f276065a5d7c9490ef22b082947b45fab16c722090e45f203f4efd1c04fe12a69e150f2f432385851e0589ef0493798206cfe05999274b7821629021f8644f4a6a15aaf74962970b5557b861202a9dbc6e2b650bf82fea26a90d2fba3409d7b4748d6c01daede7ad12c7f87943a1669a504630b04c85071cafd8ada34e761ba8ca9a2650c2b870014738fd3b9cbd7c31bf5f9573490cd563c2a73115f219b5dc022c1e5c060ab1be3d5726ec36d476b7aeb454d7e8f080274596cc07b97475e9aead87111b3be0d0bf794993bef88075bd227ba07d3e358c2165f1a72160aa769b4146faadcee0c5ce7184c652f7c691245e0974613502d775e3089bb741365d884e70b4d4bed92e3ae20ee2d18e84be508cc2c80ed67dabf4923849026ce5b5568704f39616b8fccc3cc204877cf6578c75f2ef232374050b00e5b3ea35c303e9e82b85650bbaa5897349ef03b596a3719de284b2c7899361a401b7ecee0dc91ba0df292dd30450f59ead2e6de3e784173e5c6307ec6807715cef8600882c8c4d0ac235f95b97e7dd07691e7be1c19f0819acb1e00023b8028003960544af4fe566fb68e6566dc33dfa7fdcb8cecfe59f288d6985f7141cc7f0318915478de2b7c4b75f409a82dc29a8087b15c5f6d685d0424b8bff5d2a01264a81b14ef2eb697228822738eec435d9a7c4e9a2f51a7c2c6f635c32f464cde58eeb6ba7f46e07a7ad02b156d298b528bdc0cfb57225611c2a2f8f83709134fe62d6188a0a29ca1c36c91055ce42d4c2dc8f40edd4fc59942e3ddab0ff48ee0cabe025ecfd84c042e42a0868882427be8c9290a6ae67461f35db1bda895e0b181879ac8aa812957668215d0f511bcbfda4230fe89c4a69893bf290afb9640e0255f8b84aa4107a27da63543ff401da774027f3d946ac86705da895480f41f620a28a2426bff2f3c5071037392493b94be1aab0d9bd56a19dc659d7bffaa971f649f10038751ecf140445b97f4c0200f2af8b7de2861ba9c72823f19eabc0257cd74551e9d07d484514502659d848a0c2527ebfbb08291474c95105ac1c48df2e65bcaa386e19cf1f675f85c8d72f92e9a82fc86bb97a03317df4946634dc730fb918f4b9b97d51ecd215aaa06338c9e12718a2a3eab4315031bf96041984b7f681848bd06fa556106b743634f27f130702a850a19d3bd4953b77223fa3e7f9826492e0b7cddc1c173263d73a188c1bc1257153e1aa0976eef6b57681f36752e886cba0e6fbdb95bb02279053bec9d4e3ea270d0b63ae904659af98a369d41ffa42bc1a562558737e9f7a1c1725702f7d8a9d769fc8ca34fb8a61097d16f83f226153e1f95ce2c835a91521012398f4f74c05b11063443b859441512b911d76ca030a36eadcca0f9ac868bbdfc0232161912a8e9fca31c80668daf3e095eede926a5d698e18a38176950550fbc1dbeee974fa20b3d08a19ea02048b67072f5fc98c621874d4579b2724773c25d6521c1cd6058d1c10eb2a243cd3bc955488b3e27532c53ef28887756058f7ebc1c5e6ab942521c2a425e3994de49be33bed994603f02118d80b488299cad1ca1e47720773c9f8fedfe5b21eb5c47e6dd3dd2b719564e9248c756cf93c120f711a39d5e216ca502c0f2bb93cadf875940525d05920fc5df70f97de07a9eb395939e430d1540b6684f8f616459e594f25726b76cc02977a3b46c197815106eef0af6e5b0c373add1785331e0576b25380ed8a986bfa8ea9b42835efed2b261c889d35d4a3c6f2841faaf784e7fd4ba15f286d5bbc843eec14210cd99340b2b9804d74d3443854e311876a9a196da20e10807d0cfd30dbbed41c058ab4a720c093e0b32d58805aca6191fea9d2af8794844ada450297b1a084400085b81bb9423da1c74d8bc549ed3e32b29fbb06766da508f9d11e20ad51c209d4621ed8b2834029b468643ae51e60003927980f77af08847b18f28df744b48236433cd1054c969994decd07a46e911965ed07f4fb82e59393a34ca9cc2c50ced6a7bf26c40918d1333b0ef5d0a79c9c08203e845a91303fb531858bdc0424f477de90d069685d760c32fb0511fb4e5369c3642541f712dab4c3f0b853d5bab556d33bed0b331aea73f56e26d05bde2374c28d5da8daff8762a105751ca4a582644a0ad7a63db41268ef80949f784731efacc09b278c16c9c5b8010c9e2b33ea7e6a41b43de7b81b84734f41133e4b3e36b25dc8a93c22ea0d4643f4e76b64c290c949d9f9298f6e966f1b8f3d549c1601cc6035604bd08f4fc8610c2a5a32bae3c39a37dec9f5f81358f2a2b8fd5a3185966b111d583256c1f86c08dc6596768e886949355dfdb183a94848e592478cd1f33fc02ff52c373400b236bf370bf9a8338bfe7626f643588d81f5c53106c65e5b2438ee6fb750e3c8fda8442a88a61ee146413a2902966634503528495ebb9845ec891b29c55433bdf528b37b6a8d5b586f7387d8a86c940ed971b4ef6539b9ba803c4fe927052d4c54561fa1d3d79cd4b6aa46d6694a8ca68ce08b2c0ed63749b4d5ef353fa8206bcb28fc64153d4f3722c1e7f44c51933570f4bd7e9567c817ff9e13fae68ff5685ae5ff8acd71f87ec9b85c8ea5f98b3fa32f2991d638bb69a09cbd15be01a0b58fc4555c84b27b97174774cd674f37595d49036017555f8cbaae62b901d8ea1c24e4b7f990259c462d6e5c1e7ada6bde2ecb32fb377b8ee7466d16665c7e05a7c5b4d6c347ca86b6d5b11736818fc5e53a2bdd0189bcedd35176f1e9a9ba99fdb8bcca1b941aeacef1bd7f4c63534a187993901820db89283dc87e395605c58a5ffdc9927fe444a0a1b7713162cc97ba644f7ea1b2e802121260b5a0784586e5916b07cb6c05c87d6d3cdf73747def888cba25530448178c768e5c5a495c852d00fa640369223a8ce5270a3772e16d0ba0978870fa6cdb444dc6783e6d74f7048423b7071989dcb9999453b2377e5b5305a1130a05fe84c35bfd9d9798fb975fa70838ed903ed5c0ecff426b8fd2f20546ffa12dcfa21151cb8b82a0e59bdd741e0d0f67134f4c7694aabbe27ad1d0b08bdfa4b3a2a272b617ce09fff1250c9c250553b284e55c8c09ac4f1004ef5e7d1787a8201f974169d4ca8d7a2e42d496bf83670d5f2f0a196d727a17233a2fce57ab332f11e56628787f27163aa1fab3859aaf65925002e637a353fcc21ba2d1f24ed6b12bf3bd8b21b62d1befe6e365d2aafa83b538f3799d9cd15f72bed694fa7f32ce57ebfafe72db59bee56cd59d6bcff9dd1bb6ada5ebb70591861f3877b721a4364912696b3f9bbf8fbe0fcb6b61a219b27c2bdad90f8b68a64f365ab3d89397f20bfc498df5dea5af9e02aeee83d1043af5703aef55ea7a9315960f42af2319fdd29ad39b68665b9dc67849b1e01dc55e4039c5180654d7ac149f2b52cad9cf402ad5f9d796f32bfd0f2776da7fae686a2eb90ab261abedc0083b4feda41398f69f9363543518dc7e3e7c461edd2362972f9e5854d1ec2799ce60a1faeb83ddaa88500390bd7b76223869c9d01251f37ad14f83ce8ed550c3247ca3f06940d30d389805e214ad277e0f44cf45f400ff2024a7ea5cb1401071b8132c4f58035ae673bd7d3387311a8f6756a05e7a8433bed297c7a26ce38a4800040e7ce02a6226f33b1d1e348a46109a0b466fa2ea0eb4ba4955ca2c3c8ea3b366188a053c4bf4c594d9ab284abf39fa04e4b0c5c33a0d5dcb1c71da23644bcc685d2fcb9fc448413849dfbf03de278a69c2fad08ce698514a8c2093eabace58bdb6c9fa407b3cbb890047db5700d0d85b22d173bc48a59169c219ef2b4f6738b64956709a47a2c781f00f85211d2eba74b1af8b6ba1bfd60f0fa6d2d0aca8fa0e5d406f30bbc0e45e868fdbb00c59df444d436df32db09e348ffb91ca5d1bd089fe88a6f14247a5ae04e157796775e3510cb2d5855a394fb0b38a29322bc38cbadd8d1f81a467e91a6feade985eaa8c798cb6e6a82ba4b83d8cf6567e5a10a286938c83887b159d224ffc8f69ee406f61d1d04f9cf191f710c31e9b403b566540c9c860b8f84e376d4a240911b7b1d14742687f2eb0ee60b6b5c6f84d657a19239c2f6fd0549ab567e8290f72cb2d0790ce72eb94a86782c95a9e11683bd318f7d320daef417acf1effc8bbc19de87d996be8f60c3dbe7e2f2ae49a714f82a3662624d7ed330806719572f158ac3f563bead8124576adcffee4ffd99f6eaa635addad00244ec849ba4800cb3a6a2868f23f0240cbb2f57fce88901e2a704f68d2d154e3e293ad06ee3fda55cbe152a3a51fa26446a540557c3bc778a08db428951fd304083c380d6396102a95485f8c99aab8fbb53a9868f13932f46095eb7e0d469a0ea39da7c6a971f0617d05589898526599e5626ed455cbb3923b12ff12722f171df3666285a57b5c50234d15854c362d8b3b5308a58e6656d0095b101c33a5b6b714e993bb627d216a54a3db6611d24304c037be40ad63fcaca1fec6edce5739c288b7eb5559b601a3b9344393caaa0e8503e2e20d8fde4c347405bb3671251c6e8ac764837937f57986d7441bf98afc9da7508265b17018de7896cf176ddb823f857747b448e1f7fa61dc3a6d2252682ce7e6eb3a6f02b3be30a918870f0c275210bc844387b9dc4dcfea2219206e1fcab9b24c0b15ad22c107fdbe892c1803b5024131cb3e5097b8d5f2347c5fc1fd8c039d31f5b790c061ba68a333315603dce723c119749453ced133bb16c390fcb4fc4bdf649b3afca80cc28c69b7019e13b73ae9116e0206830a2520cccc9575f18cf1141eabfe7c1c92552b1b86eff701791a1b867cab213fdb3f34d75ad37702956a21fffe69d477a712b2967546178ffad7412b31b59026cbb99decf48fd78472783ea263eda04c092961cbe67c57051fbbb223d10ca09ebfd955774552a764fb3727de2d739ba0bd3dfc404c6cd799b99d366ba3ca1b252b78b19f722c632f9c074ee592615af26eaee0a0757df41e3c9b4854904c79a5c8289ff4ac4fdf7070640c2b52f4b734b82bedffd9035e2556f84011bb47fb64d75b905733add17bfe7e1f305504ac0defe9a55c17b5cbf580a0a70214c95bef16dd8b6207bc563938fc0a4d29d445e8d07c97d918ac4c76ef60d44f4b79c89d4c89f70f196acbaeb09f3153399f37200b752e27e231ea83af10360260940c154baac3c966e4607d03f8f9371b5c65f797c3d2c72e4336c8abfd33e7008bd9df92dd2cb6bfe5afdc8601a4161332ba60958f7db0aad303fb65f02a6bfee31d9e2be3e4d409f948c193192fbbbf0db6eaa3a2159a266aeebe20b547753b5ddc9ca8c72889b498b42bdefb07275eeb30492e1ec67b27369c3b96ce359a7071df327b5fc98655a0159c1654d6904c6c372ec306d052f91671f5b334deb01c6a0f4bbe200dce4810d5333a9e88befcf7ae739c17281a7b2248f7bbeaf2077c9c4dfd77e90dbd4ee581c8ee3528d4cea8a4ecc66154c1d962c0103ecc4413e0f0a09cc6dcad981f6149852f759cec7e43209cf678310def0866032c6fd305e07bdfd8813a2782a8e3941a6a75f5af6ddd578c6939c5bf854d6f55b56a24ef1760bd95eca14e66498843e1df6a185b8d56d34b4660126d15134b8029344b4e59cd3279be8ebd333cfbc72c32344d7a67eb538650d06da2ee2a3b11a4ec6fc294bd2b2e9fcc4132eb0ffebcf83f4069bef3b2f1d41808175a2ee79d8489d4ac0db8df311b97844c9148b009dc68ec54b8a3dec3016e82f92716308b337b2a97e2d29fb9012c43665329d07d6744764664d69e89c44276a06f7124734d240a89a9e383734110513b305adc49407600e4d9742f2aaf059e5eeae946901aa834e56a65f9bbb89ed48df444fb2e76f60ef2c34daa027e5853eac845e6c2142445e5d727c0a2f9972d94552c257be65d4531aa000c953228c919a53f9c53c70b32b1a64042ce5403bf44ae5653e8a2036957b3fb3a5deac0c414b60ce754a0b303e9cba078ba53f02f49baa40eb89b0f37790391ef943f1a92ab80327e88ce42f2c4db03da3fc88cb7f37a998ffdf001fad71624788ff8a11e39d5109d44e1c4973c6436b3eec8a782e6001f9f622bc0215fa2fce7df3bf8e1b76a6535a187c581324531202c097fa53921300dcb493f822ad942ea59759e91381415325971ab23b811800370dd020f6df0010dd9bfc233cdc199c3fc9b26f2f2894da146edfb48ff099bfc27d8dd45d96975b79073216ec20abd19837688521f8a2fedfc36e8a3a3a7b28383289a19efcebca29418c5b3ce1782de4d2f4b9853d2249d4097fed094ff5c46f7007042d2a8834a9e8efb879f0b0ac50076b4a0fc375ef31893a000aae961abaeaa36a6d019ae9abb82e51671109f4196ef1eb40192aa75db34f3a00f5067d1ca37554e6b69332669e08d42f6ccb949f43be5da85dcd80a337bb100b69fa605660d6b9e9981b4a258462c4f22ba841f537516d76acb1900c81d9f573f093e38a291cebdf0bbd4935bacb98330f99a99393b247a53065aa250c43ed2db7775df52569923270698a5eb9654c8ce326eaa25f2f59e8675e693fa59396fce84f6f025c277d117ce3d586e989c3895b11ecd00cc0cb5eef9c715a6419eb2506feb73f08d4a4ca39f2def49f1424785ea05a585ddc0ff3f835108004da41413052e4e7a179541f3972285f2275f01a46905a76cf99d8a6fb6aef0cda0486949be91ee013bae17479b655edf2a2f774ac4c3a85d2100b273a2842a72965a81b53d35f9187ad5ef3520840c4ba12e7a23532d93f7bdef6417be02b444350e65c3bfa36723e8e0eef3d057079cb6d3cad21744ca88844c64285bb0e1bc88595bd3c117967b44f5e48520e76c0b34630e9c2cbfbcb1795e64d6fcdd1abaa1d894bc968b8c629a694dc0de1f93c522d205477351a28682868d6185ee2b657187223107247af4a4436356060b8ef0b72e7ab89c438fbda39cd2ed10b61c4947d72a30319192385deb96a5afc5d579697f72799f203a1b4244e7c18497e78cf5a490428e017bf85f5a962cb35756835c750120d6ee325bd0c910413de13887d45e5a44054f1e9df497a6940b58993bf449fa65a523cca759dff5f1d50189e8d0836ea466e231c4316af5f1557122de8da8034dba07ad61f11f458a85533c1176bd6799ee55dad5d2dbb82b3f6690c45a24e7859cc9405f4c47efa506d58cf3a743c2f7e7f7667254d4966e0beba3feccf5b342944589706fd8c1590871d5e093c3c49ca5fff7d3412624077955842cb2ddc072a85ef15bb62b5c20a229b4799863f2dfb611b1389f81e835a0a04b516f061447362e946d4b2137ecdf2367e18366b3308e37708eae2b8949104028e120308d4c22f07f48adafba68338d2b3b390e313976908c3343eef4046391f0d3f912de897c8835cda44648eacb09ae03d506f5263ded1c655fed9f60a499118e1cdd599a755dcdc3912c947090b3ae0eb02f4ecd666cc397e88b0618eef93448c95ef9ea3ee42f02e5b052fe69cdeaf7954b8b7ba0e8af6692c6ca5d3247c7e215d6c6718631f3a686fad5385ba5d1704d1a8188ea9f5a77e93978f819bd0f994b4131e665ae0f7a2e575b89b5be10565d9771c929db215fe0b35e92f246fb973d390b9427f934f137c3fdf5272cd91839913126fce200bbf895bff8f0ca1122887e5060acb44f46d865c5f5969e6d9b7ac058c0589e88626914bac2efb5849ee4092b51b08f5664c66be6ea88b0197b33e52a9da7e23c5d1d9fb12f9866f06b158b85fa1b56bd89d0e54f9ef1c6230c8c9e98260bd17f064de40577b0f01e8cf60258a54160b6ef402fa942529dbe6974a205d399a122cb251565a03d8cbaa265691ab5e10c980d166dbbbf482dbd0050c907eba0f9475ddf4c5f1286b26d1bbeb801a970cfd6b421cea90caa4ae369f086f0f6415f39dcc8581f646d716a7b44c8c7b8978c5c9b768e199e12e8266d9a40eee3af2d0313a831f86c90ff9a93c744e97a38a914e4060b494b96c8389c06b4f7e6dfe44e4ed6a3391fb2a458dcb06abbeaf56dea006aa2e6f1a846d5e390227623f9685e1c12270a7232c47f4d1eaacdbbe87f9727d75ff9e65370bdd1a4a70b7993b413d6b6ade64257d78899d6bcd436eec9539f638739a4569b629a1d38ae891b2bedc681270ca7f3a3d59f46f1560dd0ebf24605ddb8e9ece72cbe67162e738a832bb4ca294c31cb8be72c7753f5e6a876826ec0dd34523a9187168dfe1320bbbe7e8bd53a1246d16a7c99577565eb8485952fd69d632a1df8667963db3bb60259178ff8c8e677c59bcf322aa77bb800de753e59090d9b6b011f2c7be1810b6c09e1d2dd7bdb0e20d07cd1c14021f770e43b7de702117c3bf48e5637e2dc0aaf42b89473cef5e5f525319b55e8de51fc5987d8fea07c32a0018da66fa0a9610cc2d1ccd3340eb47b80e03ff377cf78d061808b8a66127c09c91a291ebf5aa444573457c41f31c50abeddfda38cccbadff805b122a1c634eadfff2a375d6bb1e01a3f62ebeb364ddcb0cabff5cfef3dc20d77f3eb68a9b5efd5cb1e287497aee437d33eb247105677b3d3c7adaefba79e6c6e857736f6efca7a19fa01efd4a6bfa71feaa825c92d93dd10949a4f82da90ebc010c087d2fdef51041b731da8104ce082cd7cbf8bc52abbbe4a1ec5d5422945c9dfa9dbd804ab8b8d5394b7faf21b2a9b6389b2ab5bb90e224bf0c4979119cbb4e24b82fa008e6ff76344611b3eafc271da1b6b4e8425f6030aaf8e632eb7443eb5e5a2d8179b51197f6c602caebd0a08a62618a06ae0b789bda3bd51aa6aca5a702295659a6cdb57560182f35d35ae4ccdd45b7976c8f14f139225d0bdc60c95274832f6b09000ae7409fea11997648ccd57a77871d2eb1e352ace9442a33e7804f6072a83ff90801cb8a43fe9ba86fe524f1651a8e68387013c840a66128c1a208b6320d9ea8e15df6fb94239089c74f7263640e30e05e157f750d3bbf11c9873e4f3012681c4bfd1ce1d34ec96f1b893b848c80e4fdd4a96b94b8db2cd332c5a1f830ace5b817f27b652dbfddd10d5014d7e14ac98acf845c88584859ac9bafe9fad253186d570e638b8981565cad485e62b3d63d1356fea8162b0d5fedff6a4569e6ca0c31b793fc6aa875a2ec02ae96a902e58d43af5254151b2b3f7a482f722d192b1efe6a0d62e10f55f27b8b802b5759e98ec99924da5cd86e95b6943e56ab66895ef203c41c54422f703a1888ed25da6c2be8051ac70a97562e2fe481148bdbee4a8a1a3ea5609503ff15ad02eddb250fecca0a57c0afe62153bb9fe35e4f4969119664743434902597d9244cacc11abbd4297462c2574aa991041aad65fc7493da6ddf766d9616a6008ee9dfdb6e8fb63b20e31935f25e8d1f330a6b8077a9523fce55df43775560532e50523a47a013d08eac9cfad48fd2a3034571c0f996469f588e29a5568a869d682a634708d0cff29bbaa86142a7e56b5baf954ace728eb7beabade5add9ed9196a9ce258796c88d75b384aa58285a6b8dc596624f48a5e59b135b195d52acc5edec12a37cffc8b40850fe5e59e4341e21f3b2dea31a8768b2813aeb965a76d47bc5a978802acb0a821375b90fa8b77969f56f1530ef3e81f234212d198dbf31c1a72ae2f616a44133b6a7e210fab4455fd528211e7f587443658a2e3f1e48141d7e573ef6bd4650da7fe2370f0ef17e971eeafc8a0e0853ce51c9fb51e37bd903faa1c776ebee7a3081f951da0912627bc696e6e9dc5081d84c47740961625b2c07f18299c4f69fc1c39cdc87e10f00d7b6b39fa6b6fe67cb90e657d80622ca22f1391ba8f19b66ed7e6d8d2a39a1dcf8272912ae66c6af04461ac7178ea15a455aebcebeb2d3f614dbb9ff1d0fdb3889474264b52dfd38cd95a6ce85ab880855d81af2296fd1b6e33ee45f9cb2c74086e2cc70a276f832a7aa2e2c2cd2c6e3b2237c20182e6b5bf3c448edcd38554a013b185af6754c80d96941e75ae1e5cfeeda89d41b652883bfe3e9dbdebbbfbbcfecf6f26f345f43b05e858cb0727a77e942b3427ac2c0707483205ffea384cfbad218963cf466c27d691f2e6f0bb27f882ffd4e2cbce7417c39985c3b628602cb65cfffc707afad01699fffeaf1732f9f41c4620a342efaf59d08b3f8d115fc451f50407a153ef80c7d7f0b79da21206527c816f28baa9cdd42408bdf37f1045d74ee3cdfe46a7fd1489d28eb70ebf23bcf84d0a940cda347824aace8df9e2a34eb73e4190f3375c97da527487e2bfc1bda87d765a2c1eb232e1fdaf1dfdcdbe6fd87a48283e64a0070c0ee9d6bb456f1031da779568f1e14f670b3094c6fa4418aabd00b645df2c399846cdf4be85f1afce318fd9a9bb152efe938def17f86dee4db75107f4eb14fb1a4f173f1bb2d1105502730f46158dc416f03964310180252813db0c6f41906cb56b2cf37b9e0f0e9a01054b615ae8bb1db043949b378eebe522d566521ef8696be87a3c40750f29ea30c5f4c51083fe44a4676a300b316343a5790fdc5d10d8017dc09181e650e14f0c11a74507aadb7cdd09b837b79026c68c96e12084136c4701d570e5363cdf7298807f18f71162caa0d39845a0dd670357d5bdf60b8e064ddd896088a1fe212ada6ff7a41cb876527a600eeb30613ee6851448407a0d6a9e8f235b8d6398637657eed1d4305461668a3a83a7ab20d326ccc428101abe28f83bef609982bca376eef6882ceab76c834062725bf97a04f3a4695423662d6d3c0acc0c07ce225b72479b935b5c850031a78eb15c4047efbd0f452dc95b969ea725848b611aef82242efb6af2604fb53de9a808fdc24efe2d084ace09c1d6b6259d986edeffb50011c667928a7c57c3ff5416fb499840325dec73d65a2e716123dc86479881ef073b4f0899e927f5a16089bd4e45b1108575b34370770227bed8a6ac63c7f7980179ab89d1dfd7c70113864c96f2253cb1da4238a7c40f01083ea1b71de28a226895e35a77443a3c8b54048208031d3f66bf904a9b20942c22f6d8964890aa6562ffa242b2ebb222f631f281c646864b49ad560bfbc160fc524af99c9cce2b5910f70f35c9cf79f0040bc129912c041489df0cb39e7c5e52c914d22b454768ea4c748a95e310c22cc493a2a5143e84dacd6edba6989a1ce1989834de91b7ed79728371057a00d91dfe101c730eecdef4cbdee2965763de6d4ba8262ff08d3eed25a540d276a8cd658cce84c3a1dff752728fdb9bd8845a27298580d64b0039f4f7d3420f4d0882c22c7c34696c3b1be17458ad52788e353aacc788f219aab5fbd1ef7418621bf31828679f822e9db3e2dacce793f166e8c6bf43a00284e3346d7df5fc13dc6d8579d03ff21e1d64df18e1da28a759b2ee0f2a3c4213fc618b2c5309b310634e38330fbb6431ead0cc8c1aef0811de3651f4b152f65eaa4c31840562c48c3cc94da58c43b353b19239bbb315b84f381e9f847b02ac728767580c0efb5eff8e3f2c002a131eeb455eaf9a6f2a0706ec5a5d04a0d5a53521e0bf28184ca17f8383b8eeebd01c5bfae5cf0ad254357dacb7df42fed72d25e9df619fc08a1a417cbdf947df2229c78393ebcdaa2e9f11cbeb885268ba12ef046f78e7b278e6be30b7ee3a346b19887f0e2b39d70a18f2e1d631364b22bdf5de87448acc3ee77c680750ebc878f77379bf360d937e806b04b211aeaa711133567c651a4f2bfdb1b8e8c3d1116a15163aaf8f2b5765c6f71a5105dc92dde70425b8207c494da13736a4cef4ffacbce39f049f8fa804855dfb45a4c2615ad3d92f72a96891908bc9f4009274cf219b347c99968bac4d869a45ddc7dfc57e89d5a698dee5808bacda6cf9b95108b096d914f904ef8bcca98a6e4c63e4dd92b933f4a7423abe7747455a67c23975867fadbec3f8415d4a46395a103d08d02db2ca12089fe90616f5036c61ab40bad76c5dd3c84ad1f02ff432fd4df4771eeb2089f7a5eb0be895ed9ec01b54c224ba5c72a5e17f21fb94bfcfabdaa782c68dd81d16450bfbc8fe3174a55a8c7232ece2c7efcc558227463cd7bdb49a37967197f4bbb58b3f17d094b3e3279bff5516fc43f353434f779136beb4ffc2b4c1ab8a3d2d96b1dea18995bc6145a770ce0a848d3f4e631f000eca57ab5e1fbddfc9d9469e8eb9b43dc5fb11a805d32e168870a703497c3717600a7945757eda78c2a8ff22f12155528a4a6d1d1b5fb215a3aaefbebf29573545129acbfda64c9c3a7ae44df53c7ad920eaba78e1a1f68f07b8dfe7e35ff5eedccf591f034e18f9d1c3fb5e1e2245ef9bb28644260ee60fa55838091ce9941c84195bf7c33fcd135aba557df5ce594cb5cb31637e1ecf3131ce7a49b5e0e9186ff0d7d3a7c341af8abea3f94aec29a7fad976ee95474d77b1f3b57d776930175abfea010a42cffab4f3bb58be4db10e21e0eea9012e0e5d91c2e237f78b3c00c878eb79c3dbe61015552daa0ad9fd8dd2ab66e6a0fa834b9b8a86e233a2f5a8e82343545bec81f03cbbbe93b76faf24f242f9e136a1c7685ad18651121811b0bfc49ad9d0b624439444c3c5777a9166d5d31655ad7f7434b785c26bc795c21ae25cd1bfffc13fc0791ab126a9c035348b4a76277737415fa57456d8476a7127aae100035c68b956da7d496520f4648518281a339cab075533d1531922d87f490847ddd2c3b8ef38defa5fc58822cbb8beb6928a9897efa86df24c2d28e771d365acf0c4a77c7fb139cf9b8508a610caf4b8f47d4db983247e40929a76b372c26851a1b61f7b4f751325d8047a3559d2dea6030c11e8009d4a4d78d47633bca5a33af21e823088734e44c34cf252506a8dd7940ed3621eb12b290df1929f78453d0b5f73f80007645554f005c118e93423a0af8a11eaac02a02c30c491aaa234a45e61cc5dc5453b82ac3f4342744348d4f296a0f53b86ad639af7443f9ed1ca8d03a19f9fcc99eac627844e3c7c234bd32194e526ad92454b493283b5f34200b0302ebc439c6ce921109c58757da83d8bfb07fa09075a1a1337de20c2997c94c320e736ab902779deab744fee5c54e26416b2162c3370cfb372d6cbfbd24ce25421c1d15b66f66b17fe729e9b1108b2e89cd3709edbe7370c0207c5603fa04afa85520ccb89b0ea9a0d689554ac166d0775935d0ee18200d33412b48b8cb2e71f48305b136e5f8c5e9b72bc624c271179f0b90f70e7b76ceb6fda510871954d3d9630a6aeff733956c46fe22ad870fa86d7bef2d939401a60a330a0c0ac3c646be3d5f65e18d5347cb0a122a3888600d1b6f6de1be1b57e7b60ab8666f6bba2d6a73bb4bf9bbe922db821655b8744561f9611cb67756b7b8c8370657616a4caa5c31336cefae6e31916fa7122c8c54d674c831e2356cf7007996ecb6bdd1ba45bfbd6bdc3629a935787b4f75d55dea6f25a5be53a6a0b4502326cb9b8a61e3e46d5b21a7db1eb7156fddf67c3bf6ba2d86bb62c7f0f5edc35df82a0bbd3d0b0168d4bc6e28b102060c0ff90fc478b1648c941352538658c81415ae8afa2ebf273c760adc76c25db1377a75d5571a747b36840e128c1534c30ef21bb8a1e1e4065491629e61fb50b738ebc629a29665eb787582cdb0817c1bb7409ddf8e72f021f9585fd0c7025936c8b26c185d50ac8b470832b4ea34f911e5e4816c12f632512109b7b11363cc0e31438e0c89381f41dfd7d305f884192f289ea045d9d03054813464c8c8d85c8881822584c5c6841ada09a3053aa0187d34d1e38142ac396a5c8859016163599665d92496eda1eb818494c4b26c305842cd03716c30d82d1b94808454648f24c692c7125774ac910496465252d20985e281570f7421e0110acf03cb9cad525401951c12459583655996655996c713d767d172aa2b3feee9fe5896bd4b39187c7af3409665599665d9af26cffeb02ccb26b1ecb3b8e3d395070281178ca130a34bf2d4d3a235453167c2059eba0621d234ca47009eba0a3814d3ab179ffa7c8a81a78eb55a4f8d478cbcf1e9854f859e3a4643f2d4f11a6e4b1dbba56151473ef536a1e4a9b754ea4dd555a99f58f2c16030e8ba351f0ca208fba0860f069594944cbc782424242413601ec985904e1479244fbbc53d129250282c61fcb66d31c020ac8489e7c08183bf0004e053d2954f719e6575503c9e7521d687a0dc3ceb294ba2ec592fea9600eb05175c90e7c703bd04028179d23cd085803ef424e4819e02813ec3a4a4a4f43426b144e08cb913c62becca0e2020d258d073ac8a4ea1c5a4a424258e8414c29d0702811738929baf38556631b210f93124fa0f5da1c027f68220928f88c3a57ea69d6b439c3495857708c443e6592fd910903ceb3f2cbbfe7eaeabf33f0afffbfd58fffdaeb09da6f52cfbbb6281e6ef02819e63812c8be44be2e47fbf5fd0f105bf24bf20e8034bb2e27fbfdf59049e4524df0fe9fe82bf244c4cf5f67a818f78ba25f9d8804020d083be19548fe4251212d09764d6840d1a94534206d903ad2435a1020a3a304902927a264f241252c93501c9711e311f5fa220a1ba10494a8d521d69100ac97f3e2424a4a08ca8070281484024f5f69a6474c77071998123068a245f7204d77ebfdfcf993a29671ad1e19e7a5deb16a78f8341aab30702813f60d0aae717bc5480c88011f54609902238808ee43920121009582c16c3a8b68a5627e2aaef399ec25977e9eae7205cc4880da4847c2fc2f77abd5eafe71cba9df0bd609afffd7e68d147c4f972e0f8d4cb3465b7de5c5bfb01bd6a0801df4c646151468a91315a56fffba967f2d76f7452fffba968b1e8a8144e7de8145a2c9ed16181f1cc18972124b207fc01fdc7007a5d5f483f24a4239914ff23fadf2f45f21a7363c408d6548e2c377ebf9f03d5f54c7ac01ec7b049bbb2f04476a5c074fdc9e89dc833c9b2ced4c0f3a9cdf77a3dff715d8befb9504f0ccacbf79c251e25d10afab140a0e77ac05eeff77b0a7b96657bbfb3374ad31f3005b2486c904df25feaac8f98f44b759f4e893d697dcfc2f77aeb19ee0903fd87e4a1e7698ac406f4dd5e7bbd9edfde512aea59963d3a127bd2e38f8e8e7c3df2a16e7b7ee4e9914b59f2a9f0d3b4cd78813e1c994facf9d4ebf9edfd7abdde912942743c59539c3224faf77a369eb87eafe73d0f76dbebf55896657de8d4cfcddaeb1d1db148d3b0b12c9f9e89d2d5618d22e7533f22a3721446e6962c43fe6e199eb323964f5d03699859904f9d83d443d0419894a74f5d05dd0a9f9c68e8d8d183078c255f2786b8c6abaed3f2aa0b758b7bd587ba3d72d55355f535a8ba92ea4c5f5e750f20ba5d5d750d540fa1ba0855553d04695e7d9575d57151f51374fb73d555a0ba131bcf7ad96d06cfb259ceff7e5f3dbe807d8590ea565d191a4e2dd7d6582f0f8056564dae6b131cdf53d5f54bc74f6ff59cbaaa2acb329192b2603896752faf57bd54c198b478358aeec8b1024ca089e282a222868d21d13f65ab4cf542297304e6a523c389ecf68c97bcf1bcd5799ef69ce72bcf834a4c40fee7790e42831022783e62831020791ecf4fd0ed91f35c05268a788a27e179c724d8f3283cefe73cc75a3cc75cddaace73dcd5c23be4f9bd2dee7fbfb6a88b90343d7639f3699ae267592e65be57267f5d8d5f224ba404a71f707ad8014bfaa04382c61357266f47472c0be779c72d52b21cb9589589dd372d52d854ac50e1c1133c83e86311d6266ea7d1b79e5551399ea905e9d895659568c9adb8754d532c610a60f53c17cac2e6799e1eb5803dafcb7a5464fd685d5796c5d24403eee2742cdec8c88752235f8d3c68e44a46c636556fe41eba9df0461ea2dbd58d5c849183e8b6e746ae81915fb45fd7b5a71b73c486c5a7fe93a642a3b22b0bd162d9a56447500fb346c63566dfebf5d809a47833068e112a88980c7325b1ae69ba80a9a97a9e9a51cd1bcbe6d61f68112daec6344f9e87bbba323232328ba1e434721a0284079d2b309448c1a04a83c4180bd2a58a10ac303121670ae0974e4f148b7f903903a2044c568ca49b3576858d81f3f968f23cb11f525c74466c92206f27767c997a8263a0275888199538d9f2644874186bca0ea03cd1587670eb57d9a7696a94a6583e9e278665a682ae2c66e18974d2660b0f54087240903324ba84174f5c85ac58ba134e0c385fcfab1227c5502f5db9be2a18f5d6d573bc95c72bdf68f99e916794a6695ae6d901a4a9d1da4bdbb09ed756e54d560086dada748cf13851a7cb933a43a24ff1f2b0d111cf341e2f8c914f09f06998369f4af911d3c58a21939696f6a6fb40268c12341e74542449d3d405055e9a8e21f97405e3c1f3c024bda4699a9ec0bcf444f67caa89914f4f4f2cd813433c1eafd7ebad349272b87891920bf3b2e5d3e307383ef5a2fb81da4fd8076d9f7a87d499b44408fb4286cca7de34f6e9a761685a3e750b848189f1a96ba0db0c6b77ca17ac156eded888516bf1636403d9eb92e697a40126284dd331379fa6696ac425ccf372615da4caa43c1e8fc7e3611e8fc713e3f13cde35320adbc2e453352e393ebdc1dc955e94162268672ac2ceb60c19197fac4646589e78c942e37962c2b280a0742679697a24cf8e574664c58aa91b45deb0786432e5f9ce647a7675265960a1913ab2a5815171e71469b3a3071d63f2294da5f08a0b3ca32327b257dceb191921a790a0049fe743a9178521dd3cefca8964e21601685dd97c20a6a30c7726bb35f2ad3c166805669c1cb3a6a8419246c513d77545cfc888f5a538e880e5e8c260286599647822879445168b4529ab3131387a48c889e1e0124bd162baa6699aa627d2f4449e49232393065ab471878cc7bb01f6bc2a62562dda3369c1288c6d5d79f869c6152c34ae3ad04053aaa20a530547ac06f28a8e9c980d2158ce24eb98ab8c1a3074be80347991a64f5cc7c858df995c7d27f2449e6a658fcacaf3d0c46408095324129be18335f2783c9e3f8ff7c415038f755e59d8113a75a4a245d3c8f4e19e3c031def47d42105dd88e7ab8f18f4dd5e8d1cc947c4017d44ddcf471c7a9eb3ac1c1b6672ca1445f1e6f8580a9b23e6180602100cd0a91b6bba4dbd9da88dc8ed2edd2fdf4e949685a79168eddb89aeb2f09ead39b296a78616180f86ed4459dde238df4eb4958519acb0d494e05185e6c9b09da8ab5b0ce7db898c596841163332c49068e30167d84e74ec16bf419e25bb6d274223aa71dbf3c87984c8eadb89a4bafd793bd11451557bfad642dc13d0894426be3d3566e10dd305c32b460b31697386ede9b15bdcf6ed29320baf99aeb21e77bea0d292c3f634d92d76f3ed695a165e2f765ae039e1c48d1a2dc3f674ad5bdca6ed8a9c16a2c3f6d4ebb6678d1ae9d7b7a75ae956da7597d2ab2c3cafd2ac6fdfa565610370b0cd9902d656e7ccb07db7d62d66f3edbbb62c04c09a2048c0c2c4da7019b6efdcba4d9fb2d082363bacf8700b41899c617b5aec16ab99a24aaba27c7b6ae5e5b627d409b543fbf61d951d7297bc4bc62c3ccfddf1db774f59e8540c83b216c5460e9b9261fbaed8ed6e2a0bef9a1266b4b479faaa2a336cdf55758bd9be7d77958544155c8c65505c61ba0cdb7759dde2b52dae5d57936fdf7d75eb53e7b6a61d3b6f575978c500f17afa8ae3440bd6b03d4356b718cdb767d8ca42232827c0cee8cc60b3366ccfd0d52d3ef3ed198c5978812c78b2e0803971a41ab66738768bcd7c7b06e4906fcf70962119f5ed19d032b46750cbb0a6cded2e69f8f60c356e6b8e1993c1eadb33486598ca5075977cdf9ee1290bcdb50cc563b2dbbbd6ed6dc3d005ebdb3160f0baad696686e1ebdb316861d8c2d07597d46fc7709585669b18dcbabdc56eef1415862a1ddf8ec16ac8cb6d4d234686d0be7d88ca1072287997fcdb878c596876751dbf7da858d5edcdeaf66e710d75597dfbd057b7b9ce6dcd1a35ded6b4b9dda5deb75f48cb42f3ea6aeddb2f5c65210954a4f860890a336e4186ed17b2bac56adf7e612b0bef1ab01e5e82c8788104ccb0fd4257b7178c59e834f562c79230382ce4e419b65f38768bc920cf925daabefd02da851ab7356198301e3bf182d5b75f90ba3075a1ea2ef1beddc25b3bf182896fb760cc4227acac2241aaaa42107365d86ee1d82d1ef3ed169216d2b2504494ae1d6a34427863366cb7b0d62d4efb760b6d5d8adf6e418e05afdb9675ca3a16bebedd8256b747de6e61cb42d75d22fa760b5759689a16b2bebd425a16de0f66bc21a26525850c24c3f60a6bdd6231df5ea12d0b6f9b09a82741c66c90d01ab65770eb1687f9760b4f59a8214d9b580f1638be7a0cdb2d14bbc560a6a82c7429f1ed16ac2a78b96d39a6ac50814ab7aab757a890bc4be9b757306661b9963760aff0948517f96586e6ad6a0714d6b0bd42b15b8cf6ed15a6b210288cc90a216b5924b886ed15aabac55fbebdc255163acdc05366c81210a6c8400edb2b64758b3fd8e2aad055e1abdb9e3ab72dcdcc1ebbd09a6e79de2ed4e676977669595822915759e85495656685da96195c4d86ed4259dd622f5938828ed90b1d437e8410366c17eaea56c898854e37d8503991a2a3890f2dc376a163b7b80bf22cd96dbb90508ddb96464a234256df2e24d5ad91b70b4d0955dda50cdf2ef49485659750f1db2918b3f004554f7490dd5801a4cab031976fa780cc42a71d5fc2b03cc19192e769d84e21d92ddef2ed14d2b2f0823047cd8f1a59ae0c89336ca7b0d62d3e6b93e3d66d3b85370a5eb72d6bd4a0f0f5ed14b4286c51e8ba4b18b2b0bcbaa290b5d69685370ada54d81b91322bc3f6096edd622ddf4ee1290b3d10a54c12a93434b8a40ddb2914bbc559a6a82854a17d3b05ab095e6e5b42955013d0be7d029509c809c9bb3494856539e158aceaf666757bb7b8ba8d50e5db277c751ba1ce6d331bdbdb9a36b7bb74212d0b735bdbdab74bb8ca42270fb69ee2b8f001828ae4b05d4256b718cbb74bd8ca420b47a0803d6dc1d1e5ceb05d4257b718f9ed128c59a81eef644561d5e8b21ab64b38768baf20cf92ddb64b40ebb6c66d739660f5ed12a4244c49a8ba4b16be5dc25316e62ca1f8ed3a63163a9900b20348151227616cc376ddb15b6ce5db75c82c8c6004c8549d2f2049f20cdb75c96e71956fd7a565610a3c70c32589591a1c4386edbab56e31953632396e646f3aafdb662f2fddd7b7ebb4745bbaaebb54e1db755759988dc6ac6f8f909685168042c304859b216f9e0cdb23ac758ba77c7b04b76e6fb1db3b45a5ab12fb769d55b7f9db2378b96dce11d0be3d029508c808c9bb24f4ed118c59987384e3b74778ca42a71b517aa8888a2a02c28d617b8462b758cab747a8eaf666757bb7b82274757d7b84af6e73756e9b6dd8785bd3e67697287c7b5032ed5b17b4f6ed415759e814848d080e2a2bc48ea80ddb83b2bac566df1eb49585370e0ead1f46c484d1ba336c0feaea161fbf3dc89885381d79ee24972461831ab6071dbbc565df1e846c0f3aebd6fc36436528ab6f0f92ea9668c2b707e5a0e2b7031d93dddeb56e6f9b1cb721df0ef406e475db666303fafa76202da02da0aebb24a1db80b240d4b822e3234d96b5e3b0fd67ad5b4cf6ed3f6e404f5918014d9e30723e0003c76bd80e54ec164799a2eaf6a71dc8aa5b2fb76d2c587ed0befd87ca0ff227799774dffe63ccc24efe3c65e19d03e6a5cad91121567e0cdb7f8addfe4c65e102c8dc6063fc1245099661fb4f55b758cca90998b217532ee68cf518b6876d71fd7475dbfef395ab73dbf66aafdcdbb7e7d6e4da726e7729c2b7e7d2b2b08d6d5cfbf6dc551642200ced49913a506ed60cdb7359dd62b06fcf75757b8fdd5ee499914bd4b7e7d0bacd7d7baec66d7b47efc8e572b9aabb14f4edb9a72cec2c1f63162640889b1f79d6a6a8c0326cf739768b8ddfee934ccb42a72a2c4ec8bab2b27eb419b6fbac758ba1b4c9e916c8cdceb7fbbc75eb75dbb661c3e7ebdb7db47cb67cbaee12d0b7fb58b5102dfa60adb9f9147da6d27cbb0f550b75c3f61e2fb7ed181de3b1137bd0bebd874a4f4ff22efd7c7bcf570b4f24ebc49eb1625556cf56f2db7bb85a3861d88eab735b5ca7cedbb701f0765c9bdb5dca7d3b2e2d0bfba91d77958519a83355040f8937327c0cfbc9b7d30d316f6e703041f2c1dbb01dd7d52d7672e770d971abe35587cd9d613beed82dfe429e25bb6dc7a1755be3b678cc18ab6fc749e1a6705577c9e71baf3502c456704971c2861b30c376f4d82d6ea27205790333a50cda92616326df8ea665a19311e38a156a59a0b47019b6a36bdd62af3639dda258def0071f3c76c2d1a3ce8e3b5037d2b00ddbcfb56ecfb62cfc60654b11146035e24c19f692efa03342d2ae9450e3f66588954c51550941afbadd793b8ad58e6a754be4ede816da75977abefdf4725b0c0676a27dfb49e5449ec9bb84fbf6f3ab85f8788e15abceadb26f3fb95ae8336c37ebdc160709f2f60d006f37db5a78ddee129a968578abddcc72fa41d626e6c54e1eb3e2b0931cbbbdc8b324946f37d1cc1ab7c52ff00bd394ea7683b79b66d55d3a1f5711cde2b701ca749173a626e488d8b0cb645a16de3828d2c2ccb06151a2c6b0bd5ceb16236993e3d66dfb7c7be9755b14d479ecc4f2ebdb4badb2ecba4be6f7d3d35a769ba2ea76428fef09df9ebddc3603631eb7672add7a7b4edea5f27b83b5e6ed9813230ac9b585cab03d17bbc547be3d4f65e12d43e2adaa4b0a2c794a04d99793ae1af5b09063262566260357ec174c54e8d848807de914e3c48c393a8c2801e3362cddbbed17625372e08214fe8a9120f2417fc5485c9958a05e1ca5a89032052ace54558e136f566c26c8a87051045484c944772fc16107cff7fc3ddec9fa81c20470dee6a465b1e3a4d8c2a96b875671ca973c6546166226d44c7c80a24497588ab136364280233526e6389f7750c295a9371d662850ec18962ba448f9d2857c25e3e64b3fea1607d70ffa7b2433a69c51245a8276cc53f6b9bf664d34d05d33256b947879f7a2f5a87df519ab81ebe9f19c2ed7448deb562fc22d29a3c49620cb68e1d271a5ebcab264ea087fc5a24a7ceeeff14b0c1a47d73ed4ee1d16acd2b917ad47655996655996655996a5e37c3a2105e8bc683df222097f8f6f60dec2df239e234ff460d926d7b8ec76eceb6e54c5e50db84f629ff86fc63e22ee73116ee9d3651fb1f4db4cbd02ec647636cbe10b8fb1f0dec7ae005d77f61dfdf5b3890ebb4e08fbc5b53f1111358560f270eaee6de14c5918ecd1f0a8137fccdb6426c5ad7119f70049cd78e15525e6cc102f192aeed8c1b200dd35fa3cf42a3c1d3765e1e963c22aee58296b93628b1b8f61a7f8765dd4f7f1adf8dd1de4907d223438de497ba1bfc73b549e88339f4a002979c343e6cbbf473c619c5a64b50062254d9517635dbcc99bbc491cd31df3bce106831c943a042f85326594ea86891b1453d2b6d83a6a2a08d5cf8d1f272ea184842c4af2e47a729ecbe574407a58842035246a0895160c0b665b3e7fcd8498f8a0bf6641406892bbdd763e7399cf7c5195e8e3e0e7b33375ae2c4bdf59b6b907f0a6df0ebce94b658900fc440eabe9e6bd6d76e9bd9e5bae8f88bbf7afe3fae624506ebe49352c346f27c26074a1d07102c7a536542ee11c566f82e58833411706a6a242ce38ccb4e4f22a2932a10c2226aa4c45181c4cdc4e34652113ee7a38ade4bcb945f71ba8608911e3c58ab42243a2bf699aa6699a78e2faa6699a5e6fba9207b32c73ae0afbd3cbd3712bfe3ccfb3c6d69f9e76eb26fef4a213ccc6963ffda8db0c3828b5f8d33b30dd18f3a77b381d8415d79faec1792e41e15345053c93b09d42afab2d3ededa9c7c2981b2e94e2f6ae11de279b3fdf1f1a649e3ce9b8e93589d46d01459bca93145e29c01f6a612339f21231445d10c74a78bf8b9e88f4f44af1857e6193ed2b30ce2f9f32ccb326168a90299398a181445d126ffb62867195457ccb307855227e79ccddbabe9272eff64a01ce46690cf817c44dc8f8fa8c39d6549d5e651003c8afa40d38151e57813897dacc9a1e038a54c101064a86535545388d3b32fc4799e3e114d4d22de7cc4a33f8b7c9c98b630e744a13fdd4353989758504ef5de8037f4b8d289a228ead3f58af187384f2b6feace306d9698498120058421d1ff4c1f43e0b618cef3444f57ca423fcf7e3acfece779967e9e3ed371bdea4cac735c8fcfcff34471381f11454f1475f4548b5014bf8a8b7a3d7dabcfbd2c6350fdd267dc33354e7887d90997391873b788984b7b7c660516296c861a56dc8f4ee82f06455df654cdbbace6dd05e7cf05526f12a3a92ad1e955cf65a0eb39deed84709ea19d080cf083eb55d7739e4ae4a0e877deeb75138df0a10ecc4ba573c6d7bcc727722222676a22221f91030edfeebb34cd69a7449e6b4fd59d6795c8cd347bd9f6e615cf3b75a2ccf3dd5ed3acde4fbd554fdd9da95dbd6f027d507b3ea2d3f73c4d7bced427d087d47319e88a58f79d4a74fa9d889dcf47747a9fe788d4fbb912e8c3ae993a63aa27ee88b2ba730cc4538191764ee459dd79ab3c47813eecf0d463e333756ea7ba13a9b88891b2f344f4aeb10a8c949dc889724eef9e55c7547ad7be1d46ee76bbdd6eb7f31139507a235f8f54baa49113f11153c159dd5fbb51abc6e4ce316acc42f4ca6881ef034af871b8755d9f30d087b58134706aa5a1073b05ecbc773eb46b3552ef5b3df633868e187c22071c883b770b2cf0b2db760b3c47d46ad9464454ca79e2ce3be8e7ed9c48256222a007f0bcd59df3d4720d466a275273fdb3dbf9ba0d466a1fcf87ebd502dfb5df2ede07de55b717abdbce3b8c729d69a79a5aa49e6bd4b34d2ddb7a6ddf11b9d3672752cb361869977a567bbe5353cfe11f5eea3bdf7aeae9a6e14416d1aabb54fed2fa19f805fa908133354a0500dfa944be568958f7f99cd2f188705779832994eedcfd764ae45b725789439ffa9e3a28bf078052a152270c5d071f41f944b4d8c151a96eb397009d42a91e7b978f3b28bf8363a004747011dc0e6e44bb4b60ee00d0b68b841d3bb9f800cc0b90ad2744c80c719e5f728cc2119341db011339d07319e834e835dded90a90a42d0c1ef762a717d0d7a4d3dab1c04d3dd2eef7ca90f48a41239b8699f1de817e883076edaef7c1d007a013c07540be018a81b3e778112500007fa4e05faba3a062a113f064cabff1d007a7591b0af1c7ef5a316a24657ea76e72bb1c3afce74970ee0aba7dd0a5d8313fd572fea7683af0170e2faebfaf3ebea65b7435f1dd72debaba33ef48a77853fff28ed949ca993b2f37ca7e6a235ab43e91779920731b25b9efb884defbe5389c1a2cfce5389f879ddc61e6a448daa1bf91c2d669f639fbb05a9baf3a5c415f749ee6a51d1f33c077da726394fbd7fc425744127e2631017fdce7191ca41f0839ecbbbbcf3bb3b8b861e043db741c51f801e0e8e377010aaf835e09e7c1cb78e59d583a35706706c00bf6a11e0f826ff835fa00f1f9ca973b90c744a1d76bb9df33cd73f28b25b77ccf39d8f98556287cb0e117d5d7156ddfe5cf50d6d9163ddd1920637c23de990da883c170015ffefa8881e1551fc538fce291d11bdcaea36008ed50deace8b34a8f7fed0b6317cdc115923dfabbedbeb4e1540877757dd77aa00dcd5fbe811694297512a1dde1dab7eb30bc073a8ea0810c0ce3fecdc07c47414a8834fa95756bd2f6c555caf3bef517579c3ce7f54cf1b769ea46ad0ebce0fa08ab8bf9d73506faf4aeaed75a8ee90bfc3401fde17ec75e7409578d37e87817a7f5509e03bb59d4925f613d12ba2ab449cd66337803a8252250e59a0127f7c2ab1e889b8a702a8445eda0702f8947415d4be83ea81f507e0ebc09203e05cd3adcfcfb47b078b0cb62e3b48be96e0101e7b0e002a71e74b3b1f71fd9df7fc5e2200008008003ee2ce979c29efd4fb3d958375c9871323511c72401d1e693cf0ba4a3382e771389d6e68c8fda95bfcf63bf791f53b2f5a33c50d152b73da241912f930896357169f1400c972e6d864cb548e3bc6302a82a4f26059e10943a4c8d18e11949f227686a8a043d6860a4b9d1541bf9b0a018463d4158e1273dc32d0ed1c87dd878688baf7dc491dfed4a793701c6344b7c11c2839aa981803e6ca7047c7e7534098339e9776220feddb7954babdc0db79485ef22edd32dfce336621dac6c189bce3b7f39eb2300564b0a2a89043a30b99613bafd82d06e1db795359e89443abebaccd0a963753c3765e55b778ceb7f3aeb2d02947191e74dafcd001a3c9b09d97d52d96b3c5c5eb3a73fb76de57b73d756e7b7a79bd7d3b5120a824d1d3f43969ba470bdd2402194204084d59c89491c1a1121fe04c56de707143a69aaabce1e2864024c140483bbdb4a58d580b631af3ed65779765590631918348e520543988550e8295836805cfa0e9024eeee4a014454d5adf6ed1f6f2dd67699666d9d373aa6a90a5197481e707650261f40042cb94962a2d575ab2b46c69e9d262d4722cbbd8dd5a4c9469299e655996658a2fbdc4097993086408116c4fbde1167153baaaa12bcf5ab77ac365ebea0df78d2c4a80a644182c265c5ce158b2c6a66c0dce4975c12c43f649e1ea5e8902478b8c8bd49c144aca905ca2d80cb95096d93a3221c370990984d10388b4bf6327d6f4598e9d40539a5937624a4a9089eb201cba7bfc1be503b5b24fb344940fd0becbdcdd23ceb3c4a6699a30a87ac3b5c261e9b47ac385c1d51b2e6e3d55182dcc943031336e2ae95326a0ab2ccd28262d82489921b1702529eba2719c63223381a0924c6b7327a5ae09cb0c872a4dd98aeab12941ca115f40251308a3071025a68c64d011477ccedc24021942848aa42925b606c3b7c1885ef1082620b9b2476c90a6810d3cccc81a91854c392dcb89558541d829e60df74dc7a1be111b68c0a7811159e8e3e31bf1226a840fe74d6450dd082c04dc78ca1b2e2ac5c6c606131658480071e3fa6e321b6ddf27130eeb69030d8cc8c2a6b4a3972b4fbcc8b6096ac67bd48a5036894086108100315765130a7ea32b6fb866d00a51378940861091ec0d372d0124d6744830186a32e412637d70a3d51bee3365615369bce071f044be3e17681eb2d4725308a1f471d1f748e60da72a224453f6e1703f3a211c16fa0b3645e6cdbf6660619e788d3e2850a0e5e1b2028f581592314eb0644181d646ec088dbef74c4ae9b0e98dcbbce2de6b9639edafb7897b0d904b08d2e8226df7983662ca3c7b7a7a7a7c4a1dc21bd3c4bd08c09118646353c46afc30724c533545469ad964ec613a16a122e02611c810684f7737dbf7e963f2d0e3eb39c95c94417bd2cc2664331da3eca019edee36f3dde3674fcf39458238623cc840982366cbecdb87b67ca3ce94517444cf0c10587933e48cc9539b1845c6b418a5d841d39ec388a60dd27213fe96d1798a527be245b6058de5725815a2c39e8bd04f227087ba6ea19f2b2454163f77372e75f7feae97694e20248a0b3c61c242c843a4c528318796e81b5ddf7b6f79c79a05d199a9217672c03983d31e88f8ecd7d76f6ce670eedea5c6f8deb2f1cd45288aa23ee2cdddf2de5b72b0fe3d7166b28448b06c61c44790a02b05390475c11512bcc272260b332f5c5d6312a272410ee65f30ae3a3d578c268ea9a73ccff334dbe0dac8956f5c7922b9985fd034718830b9827ed0b3a68d6cc99c1e348a89056543a62284263e17d9e326cd8ea8211ad03968c4acd8a8eaf5b0a9594153d4f1d03963cab85475296112a511238605869d9eb40d1a19183538b81d1b2f6434ced87a32b4e112250436b3f2420f1b1632123fc8b205d4cad89716b15c616d4a9992345d3921b44d8a8d2793421ab3312f293a7e24bc21834ac205c679eafee4e0d303678ccc2a452e421b18d909a41da0203846b12b2e8e2ba6e072289b276374be60417dd634c183f6a06bbacaace048e273bae12ab6b8596ee04a94cd91273170546836cb3545ca926c4a1fb17bd0153de6599665d953b6d18a82e74e69e234f89c7f3a4ec8cbb22c7dd410bdb20df131d683face262135e7798e89c91282c9031388f2eff14cd91371ef833fb0e54c23b91b391b994b483f09008b0bc7dd83410e4a1d82a50a2a644a410ec14c66960bb60cb3284f49f0905a099fa1365fe1efb18c972df7ca0518501fe39c73f611b3fa39fb77a039503950fb0607980459828446093861b4dc8bd6239f1451b6a230c981b1f959f18486041c67b8506901a348d1078f1e02a50c1439194a5a9ed2e24ca2c55db77a912f069518b01d4f54a6c0201392060eae27059b121de54dcbeaf1a3a012937b00d124a2740b749bfbb2f4fd0da3e1f5b8bf6134dce8c464285492265a24bfec500579a2eeef500dd6d760908352871ebfa78930386e389c120ee74c1dec41b7b2e08268d496aa60d083fd9818641b1a438d6c678ffb6b64a372e29120a1003f6366e6922913cc7804e95812e5e76f98190fe0e4b10e4a17bb37ae8dee3ab1c887ae505689fed9cb8cb677f9bef25edc91098f92346a57505424c972baf1561433458b8e1c6340a4cab6c773383397b87b661f56891de46f2f312e330e378cc679d430645d906296aca5c8d23f5c601f94ee3a2e7d1d98657996450ed45bd9121d543e8c244ca2e720aea5979c733ecbf24895a2236fbea9207132c14db3fcf2e67996e59112f9d836450acf918d579db3b184ca285072cef92c4b235fda344dd3344fd3d4f266ce399f3472591e8dccf8c631e9b285e2dbcb3e6ea17db7eb84865cf735c42ce2e2bb48190d1ce03184c5963536343a7a0c9509396a79f0a6e9b8a837fdc7831f5c3c78fb42a48b52c70153b3718cd3c24c777777378f16eaee6eb2aaefeece9a7ad334cd2cb737cd205bdef4d47417c2f5a617ad2cdef4a32007571ad2e34def601e87bcbd99f4a61914c5081036a3210913c498fc7892f2438a17203dbec9ce0db069b3ba1a03a70c4eef30cdb22ccbd3d770da78d80167edc8e383b41e4cbe07f07dec31e75beddb1dcbcbb717f918f2bd250815848bdb8c1232c8745cfd6032ada65e45b0d1e5f3dcf1ede5559cef1d517e43177c51435123cdcc982e1d397eca9c3ababefb6aeadb7f8486527772e12565eaab0b079456e7882046254b8e3c190c992659540e21ab04c05449f2e62acfd499699aa6899a2c8e313c6f966559766b8630cdf3c471e7fb1b579aa60753c9347b83699a74de34cbb22c9b90348a7010f9f6b21b03374a54d47873e60d1a396a56ec052af8b2cc8d3be81363304f451e48192bd4bc4973e3e85e7cf18feecff4f46137317afa8efede8be23ce344101225bb2567462e2739dc0c3730a0d6e6a838b1c6898d23688ed8a16075cbbc8cbce82a51840c961a537e784580815348212126e5054e2734d48488cf1850599665922f71391d58150a5f45344a0f31b909551caa88f19981821a59548869e15833d5555b2114cb021c492176844559966549c588ee7806c990af47c1f4eff10c0d20ae1f2727a87a55299ae4b051855cd334be6e7cf51802c0dfa399379fe1efd14c971f18d470b9a11466703260d14541025159c0048605291b9a8405d5f932c8c8da8515b80b87111084a0ecc830d603c3969721b32813c6d07460602a18211a7b2b2a3ba1614a9d1d591a0c655e2c7045a140d6c582af284549ca0ca100f2a2b2c405062ead1fe38b212551e90ab1301f922b4553b65c7852a68212b21cce82133a13b8bee47a7a7a7a80a6bc8872f3e510fb17cc47db4bf80be6434c2b2677bbcd1bc68c5f5d5c5b5a5958bec6185f65ab5eaf59e2f2628c4dd39c922a6213bde227159ca0831070b081067465e91bca1baefbd0d3b3cf74f38ee8d50238e18943f30611219a3400e181a983630ebd5eb3ecb2ccbd82762a7b280c1bd40c3c0481b2145af0d0899ad2326368f7d72826cf03fd358a8193f190689247098a28594ec0649c2930955a1a5d53397921e66447599665599625a6f057ec84981c6ce6262540670e06392869d83ad16602e1e1e2906663fd9c65ce399b5d5cd9cf6c6633e31cfb6dca429c8fa9a1c48ca065f466f9b9faf6d2854ed343b064f2004283a3da5bd05fb113303ef757ec44d4138339972697bbf3ed6b9618e3ce1297b72c4b2c370e941230329255a0d4861d43f586525202eceb8e1b0f943c81c136a23b77607efbca128fa0fc0ecc3bb99c73ce18e7d8ec6b5ed37422ce54ef0331e0e6c963fa300e9d4fa8942b5aca7a52226348600402000003170000180c060785c2e134ccf334757714801052984e565846920683a2200b511cc53008c3186308210420620832ca395507012e4f39e80144176f2442c2ddec55acf49fa334cebb9b81563dc08c0c323ab7c4f9b62cc6fb270b47447fef06aa98e57b14e8ac24ade344023ce5adc64cf3fc59b5ad904ca5fbeecbc4c73dc779e7e9e50e7eabf771ed5252264d48cc0febee607c8ea8499c3760eeae9192f03fb3928cbaac02b5548f2cb1a414992aec848f0bfb69f13c302a876c037553a1d3a32e2a02fc26d710c022bcf342cf90e25cc5f7d117cc912a7fbadfda85b52dab75d7d3f3437b258085d055621f8257f805a396ebb9e967725e3a4da9f92d1b89fa77c1b00a9c6463809487343f3bbf4b95192e4b67f92662ba73bd60f250ff524613f8430677b931603391fbd87c462fb50d0517b512da349abcdb805140d7ca69d5775b5830e60bdd7fb492f81c4b249fd6c477ca0d27fceac3c023fa2ea5a531d0b1afc85bb3c09f0e61eeaab4d9d8e9e82229cf2784d0ff2f865371d1fff21be6165d446ed6ed1a2b90c4fb6428f2ed72623192aa5875d53f3fe1f6a4112c24cb84c13cf749283eb266dc804ec9d8d838325469a5ebc8dd577ea017f62029a5b6b9d51b88dcbcd6240d49d2ee4024746fb99f5fd9d306a3d32f7b8d4141a73967eba466c6c1cad0ef94371db890123d3bbc05ed0d2c09560dc705a90515f24d705f7d8d47f7c8441236244a9c7c989b4f40c6252637c109fee9aa422c7599d2b148eb0a2bad841195209de173d9bc10fa8267d8d249d46243b09eec89ea9156fc0821e717c25da6487a0faf41356cc9cb37fc0b1677b5a1546c58887a93100e92be25a2b7804a457ec996b56c45e8d904ba1df0f981a48526b975cefda794eff9e0dd631d40ceb32e20e1270f9e88f139a4a022e6180fd2ee05472994df5c8bf5c4aaf04ed2eaf140350b17506434296b892b7a467d6e13a059d78999f161a6b1e7b32952fb76601658832c03ba2b5997e39fb65b7fe144beb62ec72ed3dd1792392ec35262b1051c810725b1bebb901e772b13a5058033e39a711119a0892ac38c08b9331f228c62b184e9e89bf0146fe3ec258900f5af543e8498a3462e5d2cc1da50060ef9d275d0da3820ca83cb09e4ca04e4a9c5cc0381684488b2be6cd9ea2a9987d645e0390ed8687794c1e21aac96313c279a1d4a1f3ff74d512e9145e9c849009245db10339bfeca5a2aaaf0c1e580d9183348aecaaf5570624c41fd8cb86eba2ad9a0f11d24dee153e76423ce0f06111f3259cd2e21629037c846646b028a48d4effc4124d300ca85435016f1b638b9a56e5829311a5f65386f0862f805eccd6955fca8fa6d8167a82c14ef10a5dfcd7740e8782aba78cda333ba25532b113ff19e51715e4c874e64cf59152b60ce87aae74fc6ec3a10e014dc0da78e4d41d86299f70b69c324bb6f72079bf9e59a5f2cd902ec6914e5ae6cefd86c7cbf3b14d5e1cabead1304ab52372df0cdf62a1add3dea1318783289125c318982f151ad9564c3c111d54514fe943df493743ce78bec209e73a8ddfa28e8fc8be5e95d0a7d2e5d2fa8ec9b3ef845266804418936db6c8708ce91b67ac4e3ca07261a1ace40d7f717b9762356dd0ef774ef798d5fc5840bc84cbed84fbe8920482a00cef8a8e3a5382b6712cfe93f6a2fa9469915871914751700b17098b46abfb6248b62a241506d8cda9aa9d73b51290561b1a76c35262bbd29c59ab36262ae2335368eacd164619a1c55db54842d37b3f4c438abff1f8ac910f53fa105dd1bec5a1f8c2f6004083dddf2229ebf4505a9e4ca3c8ee5a2e0a483323879065212474fa820a1295850c30bda34d5b9f6bb6ecdc8a6fa1ee7b5416d5786cba5536e369ab887c7e0a60aefc0dfad260552667236dcaf698854777f50ea2830d3c37a20da5b94fffe45da6bd5962b214a5403df618e5985b3752fd64a07e1693fde3627a2117a57e0de42ce53d069a13f47154c322a8ef046f3f1507380639aa3f350a0f61683f7872039e6204254d8f000a0b9a0af3df4e9e356e7e4441a459b5075ad645307a781e0b862e6ece827468689ccbf4afd496e129b902c3f0d8d952c5c2c6defcb2c5bb03c49e94ab0f71ec7fd121cb853d087d12a5c3d3c1cdffbf8c2014fefca3569c2e0137ef3926922e4c064163c3b8171398fdbd318b1e67127eb7ac3e2407314bc20d78c939f6ea4c2a99a61df7073140850a04fd11fb46c3d6200fd2d999fc344cfb481aa42994a7a2dbf67d2bf3bfc88bfc6576e0bd74aa6a403e2488d2e8194f433f3998371318ec968ae1a4d99c523264ff0c9af4d9e2f67b8b1d259925ccb25e19256111607ba929a39323df6416173d9ef5e7430936cf937ab70aea6f7ca6b6ca770826477de432f911456907c889026b5dfc02baf8b8746662f5b8e845edd8e84055644012e5e16dcace23706c54d8e21189a2d793519a2b0ccb8af678ec2fe5c645cf93f664b527e428b812085e432c4e4990ab3c40c64e93c757619b274c6556b9a20efd4d172d690dd4903f2cae430f724835ce313165bd0b2850556190c4f86a02d8582b9acd248c29055a6c6b30fef429f88e002517fcda4f9ab2f5aa51152f0bbc88eefe638fd1472ec429f7932b528fc0dc6adea4e360f144a0b7825243b7915000d47d5d21997e3324b0746ee17c1c93ec8abbc0e90e0ce47f94427fac09c85fbc4ed0d8670a56286900a9162bd0681c6ccbe086195a043d160e86584e8ff291a987a955e664a5f949411e8e485160faa40408b26d5fe480e2a80169c8ab66366909f95b81513e03d286d2cd63a08ebe49213d9025f432cd30039bc9e34d5286069a3572822a947919b68582a11cf608984c5347941ed09035015cba0edf2bf28dc5293fe5f106eb89740d3911bfe23f9854ef9a59f44fc2fb7e9dbb84cffa5d6963aefc1788271b66dd221732fc3419d1218e4376627410e63b00ca9f1e211fb48564a4a447bf37131a19e683230764b0ca7d525d4787a129c3823716df1da9b1cdc29afd0e32b1778cc0a12dd3879304913ec5d32ca700b1ea3c391504a4abe49d6df5e6e93a9f423ec25fd582d899462922fa938809bf86b5302a0005ee4617e1f8855a611e26d155db4d0984fb0d762150421665ce643c09f60c9a03a8d24e066bca51d85f9047b2d562009c2d8a247d13ca1b9be787f7bb99bbcd20f145dc271562738a45f0326795357427917173598099128554aac3c8e421586dd528f6e6eb2e8bfcd4b220edeca7bbc2d1948ad16c9709d7a089a8dd02f4e211c7acf323dda7f4254452f04690f691177ef6283384c0cddf87326052090ac6f38ad94495a499c2e8b42091e048f172dab9a3be5bcf38b25f25bea0485132a72de79be92e61df51d14ae88822512636524a021c862f72194802ebe47ce3bb8b0483c801130ea585435e01e4c44a6cf4bb44173e5410f4602771943430242cab2c5502f164b7c1c9212d6c2094fbd37892ad52c8f71b4409fd40f53ed4ae7e664a3c3525e93069e8de7204bf297b44d1c5ddff5a0c748f09ed51d9b93d91c0f688ed471875441aa9ed1590e7cfb7c90f9d1ec1483928445ce1881dfda6e48b20221c3daed5ca738f735ceccf32b09d226891e8b71d902e9f927f52520371e6a0803cd87abb8ebe167e8243f881eb0f4b824ed0ab90a5847fc1fe71f42240ce3a84e46d1405f4e8adfc87ed62769debea22a7d705cfb39e3ab3602aa186ea5b4459153171c8ecd3caf49ae18ea30e1e2eca121c8c656520a0f2fd4e10683b057b12d7585e34a3df928a52f2d764045d74c383b1389e774ce51a4d0274c924eb04f95929c790acdefdf77a047967058bd9e17eeda3d8cf1ca3b9be250db90bf8115ae691695d5c3d253ba95f5b93e865ba6ae73585fb317df09b56a074526c35d1a4df6e633950e10ef9477fae2f81ce01dc8b4ec94b0e19de2c2210e159f83b6b669e4fba96196c125de280a39eb120c196cf3f9a69400eff5c7a13c170ed5f3f03206b640e6316941f91752ddc088f2baf813303a30c89087cc7bdd22ef67a88b2a48b095d8c362ac825d18c1b854ea908f16fa98b945038790180ab005b680af42ff2d0b4300363bd4d4b8e1ad73a35df02e5d6b0e0e14289029a47a508bb3e26a058a2c390cc26958e29ffea87ca0065554725ee5d9869467d4560567bf141becf9aa78ebacaa7af678c68c790265c6a462f89f7cfcdb7a7a83521048e6fd09445351103c50f2ff23c2a4156c1981b6b7677848b8ca235859307704204e31694bec8d1a094f35708b1c1ee6740a11b79b16722caaa4ea4f8d88c86c529e6b813059118c85103dfe9cf349b8d5c7f93d1ab5a5fcb264df669ceb6a3da01df9fc6ca3a3aa970eed88de76d840993def51a5863f20d09f5cf4eca4fcc9c099b85276efe38d8d0a221e0ece739eb3792510d25020038b154d1f72383a49a250fe02247531e9545485e7a88b3860685d505d8e181b5d72278ffed95b15cdbf337767ad03984634e81fc1f636860a5ad48129e7d334be0c43485ce985b6dd252743ae10841690400eb1241343f80500441e37258d74c019a62cc66447f50feb67ead01b9c490c911927e4b463aba3caa58a247c142757acf2c783d6c001606d53f7ebbb73ecbd1ed17b4b92b7f0584d4a33dd3a4cc704fcb729cdb9437744af55558ac28b639d07ac1ab662b07ecf0c43cf7c54fa2cc69d30d8597f33aaf945993d5e1da8d30b57d9b5aa8ff8a6186d2d4d99c5034279e59a998f74fb45b68534dc3193b1ac04c85388c3ffdd0cfd32359b686ac93c38be98dad84e4dd84451e1b4ec1d67a799c7bf82acfa1e2bee4e03d3ce410e3a20ec9691bdc50455e1a386b59f5e8bdf925d9e214caf2b96c1f2f17327e931b4b6cc842e49503d3f8791c1882c225aa5d234c346d5683965ab8a44fadb12d9df8c77ae1338681443f191cebde3dccb78074198376fd28d09981c7742b242aa8f106a518efd8d0b519989a3101a281554ce798b2d4cb62cfea33c56a07cb8b9d21029fd3fe664898759171c11151f7c82f56d83e83235ca4be5ba718ad5cccb1327774b2d07240cab61a7eb652a48ca86aaffdbbbec74a556f1eaa6f722a239834ed393c88e3b6c0d2f067820127bcfcee1b87debf0eb10ff27db801c2be1eb8ed7ba57949a2f08cdafb8afa16a21eaf2ea3fd21c0ddb0baf29fbf8d3db54a1e0c9e8850ecc19503b5ace35cb373833fcb4e7f7f5b759235f19566c8b6d27d303244e152c99c43e1dab913a854be86ce48769839d8b4840fe246a47f1756bdfe88c4d3d5ac423743617c40942e791f60da53c5bfcc26069942e3337cce5d0d6910d47ea6bc0f53ae559141669a909ad8068c8c5134ee692c43100832abf328406bdaeb192443e7f1876c0267dccf536ddde0a0a7a1ce05092d4382638c344d9c75051b5f6d4d5c5d8011fc0e9aea90185399e3a045ab7b1526cc9d3da2109b4614b3bb64798e8c0ae3417591f4270b9bb854e925b29f9725fffce4502606a6ee85c55a9676663a1726178b5611cc6f76a16a62f8484a1f738378ce8843f7e8d27f199da51fd3e91504b2741f10a15bd9230ecebf316aad503582e47b9eb3f6b8100c361280d00c13328905810d4a50ea470882bfd85b02d7d1e1447533119f94ee72c1ba092979fd0cdc3891ecc7b1e1bdd4d663365ee14297c964e109a8f5174bc76c435297dc8d05d7c91539de9986f8fc4debbd6e159515772982334cad04d21e0673966bfe6b83c49f974b0916c76ff600322004d276e723d1110e92be7c87315d5b5e02cf32446e1654ac1cd044f846ce87b38bebfa3aeeb2adc8cd309755c2c422fb0afea41211f6055980346c32c21612291a300a9c379e7bdf83cca7e65208b308ead22f2ec08f788407909c10b00888c1258b3710292c20c472982b480f21cb2c4c5feee95e4b08d9a51816b53c554c4ce4b619f623fa959f247e3846d0339a3400b0627a14493ba3012d39d325007336cc413f0c61034ffa8c45fb2f55ee55ff696e04b04ed4f511e93104c73591141ae742cba3a17451b24e9a2e29c6c0da5bf03559f419cbc0bf349d4514338945c6ea06d93e9008ff0c3eaf46aec18e0e63e5a9a7109bd099209a30df8a300e961693172a4fd587a63be3536dc327281572f75fdb17c760dc147ddea54058742ea6187fde615b4711068a26839f3e6c9ca724c569565151cc1101bd3de4bc9380c594d94097f91c8a23131b9bc9ab08049a25da5c53be9111110cc04d098aebddb2f3508aa79dd12d7e14b117c326f08238156ee0aeab541935498f9e2925c698b89ad4a48d07c373c8550361101038ed50e9a949a810ff8ef6831ffaf90f42f8880c4e5248d4a3ddaf7b81e06cec52628c13ba8f08d645f616636db3a073a6b00c361a2ce401f30c9b09c7d6d7a13f0207b8e648f01aa1e144c287cd47cb23384cc36c69cf7233ed56b529b811033a6173638aefd185af88f68512c034769a4b6fc4562787704404655882186dba6c64f387c3d27a4ee266457ebbb9845973e96b20faa94515036af0e50972ae4d2d1dc4f519dfd166642ff076ceed2df207c309dd67583862cd7cf41760ca270cacfdce066cc961bc363faf9c3003287145aa77bc17e08c1da5e14f19757478f182f4d1f0b05189c4f4c3130510900545f173ac5d450d23d2b91da5b05f25047611677d40a0918c8ad46972c2af8138cb66227979ac026584383cbd6606214240fcc2c001e6702509cc526c051d41c7d90642b617425b4a42b72a34891ba7361af1a7bb1c6142a2bb5a4dcbc852ce66b043ec620d5ca38232a5586854741df7183d60963c0b1b23360f18f60cc4554b99376b4a1f53d8abb791e2bc4d059357a81c085d2abc317e0f5bea394451d661211d9ae3fe719157c8eadc2912d570d31f392fcf4a752570061914a25439d3903fd284c30a89d25a36c2754e053dcc30be5afd58fe0d4438c6e0205ca0ed9eb45e5ac84770bc20a9c42471176592655b6f07c4efc44588201090fa848ce019c046f0488b0f8e3858f8e79aacf0cfb07701003bb3d5c26060be706adce2fc319d759865b8d685d3a69d5aa3fe137a4896af8c619f1113a9274ae1ae6dc093037dc7fcb4c4c935ad0f1d601f9bafe8620d50f71419f7533b18da2d78e28be3b265009e2f89efa8f5ba40484e4b4bd647e43c2f309f8cc583794040154f697810dc5820bb5a50ee48e14174154636b8b7c5d6d7fc199a0df372770364cf62df4083c7d99f8af6c310a19b565c6ca16503ce0728a4050094c19615dfd3118aad233cadfc03d64a5e0bbbc8c19851e1ab96f70af1ae78050b018812f635035a8c6d217dc83ae04beca9721c085c508f8320a55f474e3ec23c0dec9626701ca8ea25099d288a3a61f8eb31cc90c62c1f5ea3d841fe3f1d453a3f460445b319aba759940dd58260a40d0885bbfa0fe8cc7adac0c35f6cd7808a873dac7ca1552386025e91028829c55071d0de9f12aa15dd114549e23494d922b12d9828c340da07b879c4805cc783ec8bd3666c11d4c2e8f92580e4d42688343c09b4528553a08b280f9016030e971b2ade07752d0f83f992e92191656d6097cb838d0158da528a17b94e9d4edc305600811cfb088246b10af699fce14fe21d32edded2b5dbd1414f930e20d5876513d6a34d8a280319eec44084addbef7b018fb72c8615dd52f57babc63499e48434704adacd3182891632410a8b14994a38791005a2166dcc37e4c768bb3ddbfcb67744086e6d28b71bc563258684bba5530285d1bd58b1422d20124e8e2f3d18aed9f712651297de7cd4f8ae7ab26e95eb800ba1195d2632052a8d04ca9d2105101cad5e6afd694e8bb45979cdb19d2ea778cf595e37cfbc0f95df17755310877e7088b82136c21f7cc0b363537534e98557cadf3a6124387b7a16b547f8bcb2c9799c0fe045f30af2d0139b7d8eb69d7e07c831371a7c5620cbaaaa0de004850ba58cfb88e11616255412154edbc9f5c1e87166b471bee6616c4e42015b780d910f16123566131c014cd1b640e23da52d0d949f321b98d2e0def8d431dbf20499721f716b8fb6d010b25349be41bf9e6ad18893984eeb3d2593cfb75d36627a3f524e2f618e03e2d6c073341b8b788e86a1d226e740c9a9bcaf0a2c287f974901f64514e78865e42b147e7e2301c9c39e1ecdb9b2d5b4de1ccb4922b311ff0f4290e92f30af55e2e9c7cb6b7c6578c13a8cf1301532be6d92743addf0745c0d182b1303144107606811833acca15b4ccb9436038113cdc23cf3f1520a3a2938d57e50b693186c0ca13093d3c14341df741c36839320a40d2323a3247e67094269efa8074bbc8264b7c7233c3618090984ff11ebda535ffe8fb1a0c5c32f91d26ca51307ec94286eca9f6ca1e9352bb888945d76130cb1e1c448ac8b0070b2d550bbfe2f44e4b70b22e32121b5ffc3530e71c860dd3ae6cc6d0c5424762c888c506b0571fde13cafde4c68a81779ae1c499e0fd54723f553fe07624913858f1d45e828300f55e13f1404babb346caed9a198f582a12aafa0a14736ccf77385a1adf260ca3c3dfa0c66676f7966274d925ba3885f63a24d0a945e6386030343676609e626c5af7d071d868c52a04b3230c002bc487aab408035969525f71b240a569803d4d272c98308759dbfc2f9e8eb26f846420c7e1dac6ed6989e3acad7b08857195bb4978692a7d90a2d6623e7d2467c61f5b7b8e181d786db1fd7f48e16bc776add7f78f5bf69c6115dc94e9416e015489e6b3c5b5ba44ccf41b1a0c38194735f807bbab5e64da1687151639457f987be21fd9bcc562e66444c0991d52358597b1cb9cc8623c8ec983d983739c430b9770a0cb512b7793793d68e91de750aa1227168e2a2435a1d32c5b2a95afb6aee45607cf1bfdef69f8c6588d70b121aca65a6267651d08e3b65a1e194e602dd27506a303b142ab7a25759551af5316b4255b2819295249041f7fbe34482bb4b1b6f6f848ce0e2d8b4560342cfbb66933be662b34e72acf3e0689c574c5ecb83b2ff13182498cd439ae96ca552413cb79823f0ce3ea9edfed0e068284bef4b46ea3d85b9592966efd14e07832a4cc1976e0a20c73ec0a5b43059cf6f5da3f11306540f7371c2a78d28c4329567d3e9b52532988ca977dccbfc74cc65fdfa87353d64361780b880edd10aad0de656776aa4bf7fabf3b3159991bbe09a67ada9746cdc2c18895bdc13402d52d16dd04be0a34820dc11bf092006dc4898058a693ddeb0726850fa7d5b6e98e2ad8126152c0ec873406752bc36f59a7cb261b4083c535a8aa4066e9a66541d8dd166f51a42d641d125520af46f728ed4043989703ef76d8971c99305fe202327b95dc5f64fa5910b01a16d50e96141f5901000f73e400cbb319045473811658e8208a0a4d5af7ce180c3e3d9c3c9db65e6532a1cf0f34d3086b5a3dbc7ff228f8176fd74ae4336665262adbe0b6f6c19e547cc04e264808820ce4eeb035c4b8c430fc09fa3ca1cf02b770c5ae3cc6373db81e20c100ee3622200091e3bfe3998d87454824c5419e1d79630e25c26a7e2288a3b41df43cb70e49507666b0ab887883fcb9a0a4fa957107aaa11ba11235e2b45d742d0219252b2e90b5755a2ea17d979dc6c9dae80916581beb20d062c3e1ee3e23d8a425f7496dab1a49154a7fcdad616232c5a5440328d76e75ad740cbdbc7c9f7f1c1af8c6334321b8b682b805a0249e8c66c8faf5b2b2b794cafc2b4323f7dea35a1c304dce22c14598d1ffbc9b466dcaa6699dced4da9906b67d8b53615439ceb70cd6a01c3a9ce7484f91b4a5e1f1730770b82706838e719b2b0288576e79615f018d57c649f82ec01b91655f8b74f2cfe5e460b1197b4f80eb4788a5e348fced17751a4e740b0422eca03afe5de1f3f93ba47ae118afff8158a007d8a9c9a3c47c22404e3cbd4fe6ba797af6afbd49d93e3502cbc054bef1a6152aa60a64f5c7611f9246e6de70477d8d39218aab97b94e72d9a1429e49bbf741660ca64be8c238651cea9befbb4076eaa3dc3aa71f575c2cfa5f17a99a30b7e2443f3d6495ed56201b843eccb81707a7636c287aa9582f98d904b66e32db4bef2f9ef7914c391c84e372f8bc6844cd49382f7757d5a4f6a5fdd445a7f97cfa0665fc1dac4ddb838d4651b4d47bdcd0ef65bec1b6394494eb59185ad4364c7a9e05e1893b0452f142ee86d1a7d9b24251a2e122088bae3e0bd156f9690d9ab6b09770a8fae8144d55e82f2106a06dbb31ccd1a1453a0c80be4e72eafbb51b91320eba001eded06d7fe306a8505e4ad3393bde6b6dd2261f6905851851b0d2961876388701a014acd4f8a458c37ae2eb0103b225a0b8d5ab8461c68ce906466eacc4fc7e978578f16649c0d987ccde16e81ffe4403742ffae0f30207258b70ca388f92db514901f068610c4b49816acacc2f1f7b210116470b5aa6f479917a0281494a3886a1dccb0e7511ee648ea0841970124337b5273674810c5a96f20f4629db01bcba9d367d4458f5e2c4dee16871aabe112bfac7a9fc86c1cd440fd77fd2e246d00f4d8678b2c21d8b724730a56579e094cbcedfa5df5e9c57d04182f20b09ce387026f51fb31157364d35910b09eb520369c4cfe39fca198deb88dbc7d2ee5b3f7ac6c343fcb2d0d8be13a6c9dde519c0f4d6d469399d96a78249d1d1ea744127f65aa6c202e53ee1a24f9cd95a2b1d2787d6fe52b1e21f653714a6cff9fca767c02b7e5472fcff39d954fe9325a75610258d79cfbfc88220cd0d222cb7a201a17dde07c7d35b2af60f6b0a40d7f4814f5ab735b3b56560a69726eeca6f7d7d2ca5bd79fd0294fe9a42f6b9d88df0e794fbe76e847d58dab3c3f43002f8998b4aee5f2f454168a613de7df8a0b4bf40189ac25ba2fcf2a7e39f2400291e93b3022a154d1a00b30347bbcdede06286d1104c5bf182565455465142bd6954f2a5fcdc12daea26916f783e1372f4365be1d442bbc65c54df55a31b06f1ecc1fd7c3118cb10a59786ccbbc6901230e60a0df43fd26d7dba9601e1ea296a97d1394411ed49f1f467ec861a611c716f1163eb7a87f05e28f592ba14eeb26245918dfbb9ad5fcefaf11579f2267bac4b5c430590c571656bd9aaa579605a89f66b268ee22e092fafe2cdd14983ae3c79e0bd1b5add042a3a9253cc0d329765160f958a7cc121d446fd1d69055bf9b50791750359b69caab7c18b8970525962232f996e85c502067c1e2ffa18c23270246b0d83473ff31ace04073403a48ae7c6f69660da5bc01ba9d57fa53d57f9878394ecae539d64e55c4c563f2d96197db1c6568e90a866268484ab2c488db78176e5cea68d81ab1be553d88fe34762f344f8b71326555dc4e2ea7c05637bdd2337532262ef01cb5d1c90937711e0443bde0daadcb6ac3632122e024fa486596342193a1373aa6db28981941b207ab5e5fe9ea44eac31073ca9e8de8f4c0ef9f97d19d7153e7824f7f18143367e7fc4d34e063d33e159ea92f24ed21258f42d6521e6688f448107fbecd0fed10ba34d5cc62af28f3c4a47432cff4de4a2062baf3eaa2ae45048178e9e7523ec306f18576f21f75738a59e025499e1f2d4bf8311accbd5281def8829cb44c705fff155910f0c83fc9e354d574454bb3104cbc7d2476e73c4e7da135b514e881fa823888e35ba7f2609ee0582e9fb979212231eca8dd5703e44c0cc3423ee76f53bc5a65d88bc2a25aa3fc79f4b648ef565a842feec6c6446d68f59cbd749e2bf28c8b580e4429aa4e9dd37e14cb91a80e96d8eca5caad2009e83ef9caab94994e9aa34c377930723fd77bebf4fd7b82b9211130241f8319952f83888f49c957ff9c6f7389c1348fcd4bf6e38b42630b6012d80cd1daf388a02776e7ce2c074fe10bb8b9ae86839d57fa0ee572040a57b6e7b35c30d0a06975a30d6041d61837477c381c0adb94b60e976cf68af18d5525552b3dd9c8f853fe63827e048a5ac475167c6326c13e8993e8a0f818bd214571cc16050a33e2ec9ded02664e3b84311e5bdeb7aa62d53705122919e7bf5c6c882ba6a82b128d006e5280550f6bf18a2ae46f4b3733117892bd2fba131e9022dfb0154bc7371f7543fe31d2f8572f5dacd395e430fe2c459a3b5e0ed9ec5d213ad8d263c50064a8cf594330d8dd8ec60a3b193779b7d69ebe7c77e33b110354fb83e6ca03faddaa00c4309cefe291a9abc50581a582c5c74b90b9d4e1f0b642f9960850606e5ee37bf23f5db59a01f380b67177fed5347fb42d5589569e08fa43654396cb81746f4a9ebc9757cdd8e5edebb22390f979c0ae9d228cce9922160b185e6c126190d8c02b0dd17270e1907ee2dd652bf963163306dc9b3038dfde615b36e710100bddfd6e2e3c6318d32aba65f506dbd2f35293c6bd403545d04a5bc511a06ef108997633f5a7379861ccb6dc6e9ca4ee9efd42c52d31c249c190aa8a500950b36fa742f3806f986773e4720d7a6e4a6575d5c8b49d14d1383ca0cd1a70a5cb63d0ab9960f95c63969668a19ca45d2bc841194fef8c4a16238504197b153b543d87dd0c8d3b9d6c179e24373b5aad1b57379d1eed34e9a51e37d8afdc171abb09493d35ff171d6b46af1d634929d33f09624b184da1ec542ebb139b04ce88b91b5abc53be9309ffd19a6804cd5e59b6180c47c9efb6128d3c2a270522e95bf81c986878322bf867461f63291a4538e3202383f2cc2062bdee0aca5c549b3a1b3a55328aa3690f6506e013fb73996a32b52ec6c4059448958a4a80b8c4add575778fa99b7e1fb326596f3a38ee6d5d727a6764fb96e8e7be77fda16dfb3ecdf07ff79527c0b3799658e3b9151bf0817ef161c7a4cfeedbccb0f826d8f9501007dd5faf75428c7a9a32b363663fc08c312ab9152e117294d74b03893f32bc582daa6c5b0af9db0686ad368002567c71e56256208067b45b4c12c094aff04b94a988179b2e5341221e37227b9dfc43a19db3c3d5aaec7615e790f636707ece99cd6d568c6f0f8bd8ae5de9fcc7a68d9a8051918c6c2e30370ece35e920c98724d5327757fc9f471dcb470b061401116a2970cfb3805d39ec020c54e56d71d41a13e9f74a52903f1a23470838a5077f82947bb50432e638c0d7e4432acda6500dd02ca55e6fcb862b25fa1e64d75ac4c96d2739c7221cd7a9ee16af826abd4aa1094f4aeea4bc0aa6f7b0ce571dcf67540fe8ca5e831a7d8c1704419a82c72f4b98e7a72187d3f77b66e58c261df2de1a926977d2dbb5f6565b3dbed6d9e69187b10008b52dd2d578b8f8556671a09252da36f6988608baec908996b518a37adadf3b1ec5db4230a947de7f08be2b8fe596a9430076044a35ff053e5a8c7023e5973d8efab7059e1432bd3bf06979ac72306fa3e810f3cf87714d6b1f61a63f29816f83e5ce63e11d3e917f8f99614a64c99c3af10d5ec0cbdd6169d67a7223b24768a906ed524a3eeeb3a92e9dddf4989898913d9e41f8570fa705dcc109a897dfdc0ff67b04b0d85aeb103026e0a44212fcf6e1cab245d6f1653f817f3a83ec038ec0d1c949abffafbe49a195ba18f5119a6579afb5b6e8e65a4c631b1b9698bc3bd35a849852ca3e9df8a58d08a32139216ed75df01aba014a38438a5089204aa805422a4dfb35302742406d78b152029225d0bee83ed7103538677ff0be3a3c050de0866ed680c683b6e63782c46193085ea2150269e8c2ab92d6319b58f485a2bf8260c21367a129d8f00a402a7557db78116406f4934cc7c72d2568e84822bc3e9bc85653b8c1e6306bab7f2c071ec6f89cd91af00d5307802e65520a9529b3bf6161986a47758aa5f96546ac8b331d859c7f4bab0312fea6776b88ec104a5341a2a7f203a75ecd91c69d0ee26b1e8e9e4b11f53be8c05bd0a0e1e56137049658f3fc0158060586a2833b23f37f843960067aa9ddd029df665bacb86dbc1b010fa70437038ced8dc0d19adac171818e185e9e6b195329c7897c777218075a6dc0e2ea5c6533c37af8cf4754577cdc579b26de792647c5572ec6e7471a159df21d67b21242eb17667bab0cf73701b9d1e90e50c224cc2c60dde8dc513968ffc9565a0d356e83cdf0c286df8a5e49cf34c7d6a7d0c330a95f571178a80c510737c5c9951f7579bbcf030cdb3062052e1ce5204324374ca17a4313ea2d3ecd68659306c29c03aa884df88c752fac6c15446c2c93fead77bf03649c30745443e91ea596f36d2381e52dd26833dc0edf636e5d4a7ef0a9f72c38edea09979d1d4c2925d225ec6df995148223c39a85264f23da06ce1663e0d01da1ebe66fa3808a0fe952b6796f98ad490a861d8babb5ffd5e5d592fe8252d29c13c3ec75add6c840c61392bc5033c3ac75885a878890f0de620d699790abd5f15f89e9d7a65b3eacaba2343d677501b5ddab4c23c6effa60fc04f848264fe5d8aff111d9ad229c536057017a464d1c0faa8a81717794d1ef6e6bd9c77e22251a99204cf49e07619b608e46c33512664d283b20fd84ed85124a713c044d00d8e7878883e6f31fe1799a49253208a07168928ce67f8b8a319885a5c7059568ac613c81d2e7988f6f04a229c1903de4556de0e202b089b059a4789b378a8b8818fa251c52c87d403368110bf8053026e12edaf2d5abbd1d0d8a2ddde04488614333cbb5a4548ada4010c6072ae8df93e96b23e369f8bc2e2968e018323fd6a2e5bbfce765d94d9e86905635c271581812e2c3960863a6957a0b2e41aa067cb788b2c8744d7310f13c35812890e46315b896e353197743a5efda1da376ab0aae0fbaa9609550ef79f6561cdcb70d5dc1b636937e778ba59d40209ea564059fb0dccd847bdaab0e25f7ab21469cbba765c315245f7b89046ef016f6f626a9893515c3d0c5b0d9e658095a36408eb61eff025e1bf9879caad895369b3f1ebf3298de1729f05b075c918cdccd8102c22a17daba4e046b59616ad06ddf7adcccc5ea3088afa525abd875f52623cf4c3496a356853d64a1b84cc85a790df6a58d65a010cb7d8ead7dcc82a5abf02e50ba3d3ef2b6998ebbd9a69218068374e97fe353801cfa6a99136e34345a222f2061877320180fcc9c2df538ae7cc9a48773be445355033729bc7b1d9aa6f1d51017683089b734c0eb7ed5a0863286272292583c0250100a025abbbac592e1bfb654be7517b2c6fae354b559bbaf4e40fd7e46a617aa91c1f6a7bf37d08fc4392f5eb868bbb7bd823fccde0ad42f34312b447726bd68c196e069f0913e91137ee3051b1fddd1420982b8d7c4133342813f6fefce742ab9eae16c02d35b344623074fb9f0df5f35258a29c7294f72bed6464fffda0f17cc2d6da9872029b5bbe1c6991d6fa87b5cf2a769db1a54299bfd985e644c25c0dc2de7df72857202cfa0cde570fa1e730c90f6d3b9804f7d2056150a329f8ed743e6db89f88cdb20d3a92cf39556c31934e6f8bb18ec1f2dfc81e776640e6708358718bcfaf708da5097ca21a2c733db7ed3f2e430a07d527103dd0728620bbbca8e546b8c2f8b611189c2c6908b140309cbe87d8a6489bc1ca3409ca23b448c48cc3f38836980809f8f1401f8d21946252dfbc4fe95d1fe6c52c29c99b42fd0e8599190fe52d6e1653b975f9b070aa6a94bbf723a0d09fa5aab2c40dc3441b6d2cf8888186eb1e71d7ea60d66ac48cb70c6e0aa7551c678c8a0acd0b9d82b69f6279afcf604cda63f4dd004d29b898918398536551ca9a67ec2f6506f5cb29e8f93b7047621f0e7f111a14d2d2c2446b13fa11a530d5b89c08405cc44c77d68d4c3388f3efd332194480497fef869c24262dee38c79980faf925a8ead70a16bc291d5753422c6e71c9291cb08b88897039016c4270b3503b0b2ca7df9b5f29a2993aba371969c0e7edd51e7980025dd4050064d95b61134be32d40b60f57f1a347eb61c1097847f9e12bd49701a97fbf6fa8363d658318eac5579fe0af027beea035db76b15b013605c300b8bedb9d716a39ec11e93fd90d676c8e434cd87bd6ae1f6b6131109d4938afe92225243f1aa969f73dd58b7c12e8dfff58716c1510383f0de4a377836167a1bfc877555701b15213ddeb3fbf1085a062a210850ac3539bfe20a0da12ab49677e641c47404d2d74805b5c40eb32bf79401913c092e57ad067ed291f27d27e9d1708cc90be0f51c3bdef67d8c4573037ed29778f2415614527833e16d1ad94c672b5f8a8b25e41ee9c9a05cea28e63f0acb5e4e39edd939e8e547df0945f5d5035f838d65d28689235a8d0cb379de67d92f78a6d74d3cdd60af01dae58fa436b602140485d37de59ec78ee2c91aa3ff7d73d1ea462f33e94b0f7b3d609fe432a352fd35a6bb289db275941f787e6be8eea1e1a11da4d5a63bd3cd1d49920f93c1d502321c34e5e0195ff787087fe0fc8c8e5eab80644347005aaa327b025129e5062b91706b68937faccd89befa72d01c3ead05e1474e92768c52086814eed30a7e2bbbe30459d2f236d5f2eac9f6b60ac6154ce46830e26f0f5e63419298ae9ae4c293d6cbc2be5a8e789197643c4c83025ec210d5c8c9ac1b5a44bcd8c3f0c3205a44811f6764006c1f388f0b36e08c22bc50bba982237496d44e216aaff14986e317646ab5d8ae4709311d15e6b4f853f20b22f02a50cbc023486a960b0679efc2dddc6caa045d869cc0f31ce9517347a526887949fe14459fefbc3e608902a02025e21948a8b75e40e99797f703101bca685383385eb85b820ba8b3d6ca5129266218dc95f3240a6c1f3ae447ed490eb41961a5222b21a9d71895cbf5f0b32bf8798a45a3422f9512f109fcbcd8242e0865a9a6b4c7bdfe5409e396e247c51efbc230c614a2dbb904f36d43ae794d10e43ce88b9881843f01faa9b7372e51204a1eefc66ffad9405c18c0e186b9bad112fe21a113013831affbfb49942ac8ece43856f31cf08e995a0417fc10f8385bd5c09a93f014a1195e9dacbba7412a78734558f9503c34e4983b6e8c79e6c881f3794405956e683bc270443705206e6e003a5c2ff0338d07cc9b7419c631f4320848a0778961c15dd5cd80db716db8cd213cc2f4dfc1775d87ee7754a11feb4884630df467798a1669b261278a38201cc495f620c48563d56203d428356512e24986803bfde4e61fd05e0a9eb329b3b7c48916cff67e20990fb7adaeddfab1f7cbc1fa63b157803b8611c2230277bef2e97206732ba508dfbd9101d8afb551d07b52f26456d62471ebd54e3f87417a01c1968e72e3f66c142e49a5536b1093801013e9a7ed51072cca0f579ddd8f30df1245716dbc3de91a6b2fa5951d4f2bb257aa766453c447d3b834641dae8ea5cf9f0d44e14b88740c3c8778ccfd5954a58d54508ef921bf7358f70fe53513e0c0d5eb570851af669852add02972c738b57a884fc17ea1e848c706196da3739414a8f26ac5a912267e68ec138b2c3a95058d59a57362fb721f00a30d2ddee1c7533f9494686491e4ba5d9e0e0193f81a5c1b3ec90be2c191be33687254f22d8c60a2457403b520405924dcc459ba4a468180d92d5dc135c11867c04c0ae61d9aea359e13f473befea616f95c8af002ba14174942b22b9d831990494953749622e19954036f6c24fd723e3c654a2584a0811c332046579849018cf6cdb6627e711fdcde3019b8bc2ce71dfac1cf109f2d54ae5182e1766eb18202f4666c7f7179d9806d574f9e304dc03640c94f15589e71c6c4e9c0bf323851243414711d4510e85602a131622c7e99f5b25160371c65dfa189600c090cc5d2394b1343d1f94f535128837cde210e86b6a37d50bf675b7664c6223a11ace31639bc12b3d9c591625b032ff70bec7f0fce0173e090007859510a11ce29f303b9f312033d59170c2005fb27cc978555deb4026f37672a2a0baf396ce8641171704d5056cc5583faa5a8b5112b8291c476a4664041c149983be9f214d6577442c1784ac7feda8f9de7aa02324a69cc779be44fb24c1543991eec7ba9b9f7b3571af8c17ac70a4560dac3ea0a23ceb7c15220e7fb8c5fe819480a1576593b498180e2940c3b624ac748a09f3103761a977a2efae9732207cf109c608cc8fe76750702dd024fdac9c1e8e6a6148b67c43f108276e88b468843a48a814063cef2ee8374b4b05767c6f2338141b4695177c8af100c756b75f60e0c68fd0c68feab9c4796b78247e94575820f00da5e75bb45201e61af84371856758daeccf456fe14a9a05b52ec450e4b7c12410abe51398c7e1e0a0931e7b9e7c42f77d2c0d9fcacac2b8ef3cd9999725ba10dab5b838e5b26726106066b0174f4472139184ddfd7eff0e7561af4250a6a1e977a3584349a8c87c9f07f43c04160e8c9b457fc03588a468c068c8d3d19da5f26e84a78d4ee7e307a9f21f78a4ea34e8d4d2efec5c1e7236f0c2e925c79f2827bacf0dc1b9b2de32177dfb7b993e8a68f3bd32c3d4ee57effca541bf54c2e11e0535347a73daae45ba01976cfb6a2856634e091271c092a2dd0d70f8b23023f57a8bfc2616b741d77527976c739091c4019386946f72f6f374383b40a60e09cd657b61d30ce2c88238faf707feb22a6fd8971ad04800a434d2b303a8cf5ec9692fab1ec3db4458fbde87da70e2d98154e1cd199d3015ea05f7de79c151db8125482ee6edc95c99d1ef5d082c515c1141a94d01d239a9fc4270711cc78f885dea8444476b5d57f86a4fe9bf0e7a84702e4678b830bdb9a5f0fc0a9b6cab1f1ed55c633c87944b2291112756cbf7325dc2b0b413a08e3308b1fa50757dfd23b401a3beb23e206db2d41c045763287d1b7c2dff0c700e8def0d663a0a0bdb3bf071a00b692f8ac11017151f68d5872a31afa5f670ec132e127dc94f974bcb67567ea0f187471820a8b3c7d5dcfecbaf895ee4a65a727d027567b09ec7913638199d530e1b4ba5d99ab5a6243294da8c4b5445991db50bb54cf5bf69ef5cd9a4a87d2e7d1ecb743e29df4dec070432b54f129ff2578e292f807a1c31b6481eae63063e388746b423c25be61990b534631e1949bdcae27386182703238cddf24a6828a09a6e87cc97bdbf9d24e529b11fc8c0daa4452f47316dd3f4b4db1bf3c8c0f3109232cbbc79bcfb8961084e18823c20bbf2a2f91f96f3ee27c90cf242751fc12ae497e43e3a094cf1222fddfd56c5412eef736b39acc4757b1ab2bab79e7bf8685e49ff756f77f585fda2fd49dc14871db08a4ada8c7de1f9691c13ac17686b7f6362c6039bf902501d6ca691c42cc4249df6e4c893761ef5547a95608f1454863660c418f8ad92193d590b6b145c04f58022f95548066039b58e2d41720a17566d054c7868c04991347512ed2fbc70a9805b8ea2b34775c96a7022e480f8551f738ce44a623cd4d8470e3cd700027002ca79f2f4a4f1f9a139fbe765fbdde3e88e3e746b1ff1046f4d11871c471714dfe058c12d9853d66e59bdf6e5340d04a58c33a194c6a5c8ba1956f748a2e6ad86752b090cd72eb0f71a374ad9891d3e8c49f98050d6529a47c84e6847a883850c67feb6236cfa019c9e0843f7105f0c70eba4a2c173155f12f5d4601755fc3e48092f71796e5617806028bc3cb3ef1a63e8430051c3c3eb88e7945e40fc65c42a31f475cc26cc6bf95ea1882fba4f0921c4b3eff18462c02916547a1ad638d809c2ad41fc6c530f038d37d032a4a8a0df8753ba620ddb9efe88799b0bbce354487d01d342cb580bb7ea5e5d65e39115620cbdb780ab1a65a61b4cdb4208a03b6a3a86893bec973d2d29ef1fca0f0320356b3ad870c16c7bfb0414e101b6bd964532a3e4e753315c85c42fac501fd6a7f8a2f85e9e153532d86ab36f91827bc185691fd1276eca8e583110bd4abb3fe52da53cd6e364c2a5a2b68fa4614fd7380f66aca8945a9ec566106891e6fbb9d1b0d9a65f98c0bd00fc5915251117ed779f27d5f106bd21127b26eca7891a5a0bfa0c5052f38b388a670a769e9ad5bb59b02254d4692a7626d602376a43ab098bacdb5e75bfbdbe2ac2ba55b9356b0003416c2af87b5e080cc6bf9d0b5832347dddcbc16390533545251afd7e788c0611a6781ea05a7b47da0c7e9a346c2011922a85e96c92df07f17f07e1b3b1cfd73d0a65dcc2f7661247042859c82c1aebaa847d7205ca45a20cd69d8af7695b8a8b84ee85a2adea2dc6a76aa8e2e02607400aa44e9f98b769d12de1eb8b6131ca2e9ee7d99c1135ac25b044cf2be7eebe9212ceee95b6620e3730daf82d156d63269618c38cd29d2c4f7365630623910d25b79bd2419671a871da7c3cd6760e8ae647e78162ca86e0f2a8660418ce25782a2b827a0e9a12271ea3f86f903bad22a71e84542d7ea78b212f9ac046ae8591765cd01e1d6e85f71a97ed4f6f1dd0a2724ae89c2a606a464397eab0036b86ae4608c9ac2beec79688f258cb481488f6aeb5c1a67f00915f1ca98a09e771ec39a488c32c251c94ea824831d0c6675b114adb75a5be6e5c883ad587ff5711938a5581f626d19a86be7103fba8288273ac3185197de0828ea5f0dcac02e27df4eb2825e63991fb6323f98d22c35a24dcd0de3f2febd1233f1d9e0fc9401c2425fd8b416d1f723588d3ec45e6059ffa65320e9478ac2b106369e39ab77167c3c733698b1052af797136c4194d420d154d30bf603a17e9b17b541732e8aaccec35efeecb3507b0017a53297bcc78cd7736ac75790b59964b490a3d5535a0cf4ec5dc7e4adef41bafae162fd26f5cb310f35b748115eaad23ac93283d0bd03b20ad77cd2e0d4543c83b205ba05bd0eedbce294bf1af838a584bbe6f078ba4bb054b6d948812aefb54945fce4cc41bf1b26aa912237dcd9f8ab763041413488378827e0d0a5301c1844dead0494412d4e583055dc037034b0f441f69bfcd8ec5f828a5667a9441cfd542b0acd4bef20e6f0c572cd5926c5bead6c123205047ba90ade8372d6891adbaa1c405d5df910a16df8fd568e99debf65785e02f057c0d4e12843ef730214085bb5338d3c81b300f24ae70d16293a379aac8a196b3c36b6a27f7afe4193e0f8dbc48088d36b1a8319ad6c89381a2b217a57bc24b8d21b036d37c13a089afd8bd4cd4175b0f7fb03ea6e37ede09093c0537edc712ad1fdcab42a03079847dbb27a4372fa31553e3056a6725552c3e44807edc2fe565c2476b9a4b4e0974150bd03ecd1252f15d960ad872317e6219ff3bba1320608d955cd20fbc8d099a61729bfe084a1c7687ce2d89048907bef2208ed1a8e51e2e1f48cf03b8b18a481ca072a67be8472bd71ee4dcdd5cd5c9cfae2011cec270ce8eaaecbba38caabd9385c42db8ad19ea57ef5860ce98393d7171a9e34dbbaee13f6751cf731663b3179ac78e4e976144e4bed4fc5dd752ad02cc0b1c967d9684cc18b3db8caa7e90f7e2919130e7814a855d3ee9c8c3fbca14ac8ca3bedad3144e788be3f72ac12fd573182a662a6b730ff84f63ef36cad6330b6bbffaf27169fb6e8c06549166935748da61c0b8c7ac0c59aa9e26b86b00fbccea37e706d1251d437373b4b64ca9599257e06bd8445bac079b5dffac612e5b15c28bee676ec69e7d38bed80c440ca772cbd8385b4651b64804a4288e84299c09dda285fd6cd958ecc34a1d5a28ac2b3277f334c86238a8b4c65bf8f11d0ec16cfffc7adb22154180f969640247d972688c364dccc0dc1433bebd5e8fa5e7c0081d28be31913757cbaa245e9c8147d92977bc56bb57a5954af06ba46daaff88bef10fbbc92cb3c75b9261c5eae056098dc01aeb095428680ca81c0979e85baa91d2e387c92add2cfb0de01fb2baa6f0f53521c8636e59595257e88c5df316d9b10a444db05460ef549dee696a9117cca212d85f76500b366d60d6c630d189b9212160b54d6449255dff848ddcf220ee8cb4c828d0769b9262f2b59b3297d12b62c71e9306c5d26a7685a6e1e5bbf1c859f754b2ff2a550c9176045a132e613ffa710df69c70a45e1c74c984d404a67f919f32f3ccc9aad1894219103fcf364e4cb23398e275e5c32e72453566a1181bf341728df6837092ed9143b9c53fe1e53002ecdb06609e5171b5e4ac2287ec64591659270633802dc37c09142ad174b1c2a9eda2d3b4a89a4bdc72a8ad5704dac5563439eae96517d93aadc8f4502977ed41b0bf5effec60d32b9941082cbd11ecfa68cc041e0cc8e6d71d4facf5c134c929ea5c110690d3ea2ad8684c243b25a81b4e04dd55ccc2b0a3e0f97f181162c0f377d798ee4b1c902fe31ce1c0ce91ef64ef41d7f3a5a0fc91d7dd5d9f8f4e022e06e4b9f6dac48dc715140267f3169806c26b615be4bce3a03b2abbb19c142c215bdbe21a0bc040eebfac63f4a12d824b7e2295be8bc4f3a58adaa0a8d11c47c0e72ce062ac915fad7e11f8bcec0edc4d4628e590a8fe7f88a689d7b24e0b6e656a766291ba30d525512e796a925bdfc4a071129c80f7493d09503dacaab5a89f70e2bd3a5d2423d2e936cc48a3c3591aa1fb82bc5f11b8ee5a9c1d579f76999bb4659b53e9ff930f026385ae20734cdfd62342d5687b285772ee927bde266a0215d35ffdd7d72cf3514dc17996496f55cfbe4799695b33477d54fb2ac1151bf7c7af3c84127aa5e6ef6f70b5e1c3573748735b920772d2cd9afbfe7304a91af5fbdcadbee0aa5db5111702939f9d08b5a3045776fcad1e76b29de3501b97e422ffc257bec0f1429d10f23ac4a4839adf6c32958b8bd66d939b4934d5a3808117b8238ec030444333cec7f7f6edc23c5f2a415b61bda3e8e5ff16842401032eff95a2d491fd0fd490cfd74fe2a54623d8ff924749baa3a8df2538fb9ecb8daa94fe787bd055c43f8942a8ca4ffcd791841f3a80d0c5a35c36ed0270645fc90234e9f5f36793c182eedac4c438a2c4921793110738784bab114be766c70103845b1928d8a326c7eef1b6beaa00175c274fa35a95870039aa2ca655f2a844df9fca0a91ffaeaa1f47df3f7738a905b6661296f37f42acc59abbc790b161e4c3cc2c5f3ca99998a91a53be94597438d5b9cc3938df13e7acfc710a9955a352b885c8a1fb16005e19cfe9be334252e7819f46b1561932a536ab25f6dd6468544d3d7b8f9edbe3ff28662120ecc68e12bc6deb82a34f0b816fa063912c0c9fb8232018024d49a548f7ee1432472635879352a6d73b79efa9db03f5769c13d69506cfb8d9bda427271a27fa07fa0f7ae5962b20de8a6c5fa2e1d8ca48d1ced819e266627fe34484b501ca321d435e7008e15507cab59783f6e9c09c4f462ecf54e3d3d5dde119d2f9ddcec45846c6f26ee8cc9f4dfbd348cc4c7f937371440e40b83c488208836b92076e49734b94af69d9d8444fe23d049f8b85023b3d857dd4880f8f0abaedbd654ac9ba0311044b040204169c6c40b9bb0fc65857de3b31bf905396b4a982a2ceee3e737a6a85612656ed45568f4c0d21093809a1a2438a8ca824a12a3b6efbc2e498c084615bf3cefa7cce9a88a50f850bafb91697b3c9f0b97019f2b30d01f2d16849bab46495d2902922b19fa896b338cbcef0da1a62696bf491197f92e89fa6539221f34dc2e2dd3f8439c52949f063389fcf230c339170043fc71a94c40ef5cad0986931aa902e1a0ce006146857943f2b97da94320213c8b38dc158d1f23e595558955b3e0d78726940a1e8d182821fc220c2a8f79e120b54e551548a41431ba1d4c3a5e6032a39b9d4ae844a1ab846bc4aee8b3654547a656a34802c35351566a691c50d97e2fa3a249827be6e232edd66d4d3413c73f6f347884b76f596fa666653cbceb0cdd9be56538bc35d023339edb4e948a8db7ff576f7d2477a1866fa804121edc830cd4c4644e0c9f2cea8a449cb99b2c86eac7a4b43e89918021729ebcec7d249f7d14691cebcd69577ef8cd0dc4add99d9a40468865d091860810ba4871fae5413ec23483bc3bb0dbc97b7dbf90b08a0c891a44615271e4d48534be4eee5adb835891790f252e9a0c89c54480c33dbaf51296b4060dc80a4a520234c8130051501c63d66b8898add6de0bdbc9daedd1b960dddddc8221e5a995604c4ffffff18638cffffff1f7f4e915255d0d3bf657743ced3fdff7f59d530f3f4dd1225ad34abb728cb6ce39e53decb7bff7f8c31c6183fcebcd83be5c4869928860d18e3ffffffc7cfbbc2380a3d9f7eea1350fadab50654b733b17bde7af5bb254fa7a7342a5782638ae39961f7f276baddeedfe6adb8556a03ef0dc007b22b30a70e082f8bd592753ca86a8d5078d98d556f36846c944a856894d181aa31b3e672350ec00924f4bbbbdb80ee7f07bf97b61d591cc3181b97ec98e15892202f3d554659f6d3bbbb8f338eef4a6f7bbd1e8a172f67c7726238394caf0f6726862033bd26dcdd65b19c77d6ec8ed75c8bcb35c1106aefd68dd0a661560b67eede5245beb36261afd73361a4b2e3fb3c8133d3490856c6b0836f70098c31f67e77c6a864654fcec73839c8aa7f132bd6334dd2ca2cb21babde960d73dc8adc8a6f70312810445ca79b55c4122bd61caec5a11ad00cebdae26238b10b52391cebba5ce0b24452af0d0127d0d2b21babde7ec426bfe67256bd0fd07e77771b0df79f4a4beb2c594e9899c61174a44e67fb1e2b0ee9ce676f661e9f08cd307e0c387cd322223094cc60c8091cca153c9e9098e127c019f6c6c9d458b26666227528ff83bb67964d9122d3eeee45805d24d845845d6498814caa22be2ac9f7b673a7dd8d81d1acdb066d1b9b165318662ab1c2525b64f5fc541740697bfba7544a183ccd9c6686210c338b8ed419488e218001b24a463c7a0469b2a467478f20199569b180263d60802004f8b4a3d8c2776c3141f6575f56736a08ffaf7bb7776238320a29646b934bbd05ed20b931e31827c7d6d3f1ecb8ee3b54c299eeeea7219da72212f81774e6acb34959aaac3322f9d19c9e1ed51fc9eed6e93ce8da751964ba76776238322997a647c8b201db304801a011061740a80658bcc664140b1c0c7f1768c32103543ee3531306f642cd455ef0155934a0a37c7f5c5051081f00f618403a6063622d08a71ad0c1420ea922a1ad143186cd4ce350d205133d324d58c119465a29713561f96a24c104f5808a6686daac2246aa274b3d295c3aaa30cc7c551dcb8c01a7832a36338d21f856e89618af1dc87ceb78dc1d9e18bf184031841a030fdf6cd8e19b95c472a6d75c8bcba91d88dded3dc202ae816031c618e3f6eece164c389d45bdf92c1b6636ee10c3fb1be98334c15323a2a34c462ace9c7720a27cf0f4937c27c47801530ba1b4e1f28178f9500472a9566c052d5c534b251b3f5fb301f416c31dc80c8a16d038da90d1640485038577dcdd6d03c2bacf7cb304098386153ed8301345c0cc541ab2d9c952a714d3ddad4e19b67737c618638c1b7fec8a1893661a8837a7e7e9b879be6341680173a652588c85e83006d2de6e77fbd8c6bcac22c7054d94397aae9088a0f1d2acfb284538ebc6fd32f59df10029f4c2356baec5e542fc42001555a060d3c1343381e654f52a6b24f428df57024d4ffbc166c608864ba6674381989a143119f3d221b234f202639b8ae264e645ed05a3588971b14096a0e01242d1020b2db50fc3224cabc5728826b55950853c02f4426b3da5d2ccf9f35d45b9f2d0f20a89cdb31c687c860fc5acb14e72195b7aa1ec6e675cc06eaf634032b4edc48bb1016626cbc187075cb4049899462a3f300fe3054916b899e1ee6e1ec386998e31c618e3fc44bd0704e0a1e74416c0fa8159130db909801aa425a2820100495c19c11b07d49ea20c56001954205686070d60c0c9a14d11168158c046bd7150c68a5e28d03839477c47805fe4830203b51fc22e8aaab0004d46b1e8c9cd85e33b0385050bc9e20ce2050574a0047b46b2824e94194c2ad4d86ab0343a284081e683a521746182ed8748a34823a1c6624923c9008dda14a4d1846646b5b2a46125a665662dd4b309f9d02f018b51b184358a0abc7a35a00a006303d1d6b822f3a2234524fec8b8707296c417165cd49bad03e2777737f1474d8b7ae4128930d0a2212189580ba4b524a39f0be8ac7b334e1b556f892627871298f0ea91357af2f29a15a5d108318d9343e3808cf954506fc4d7738cfc33dc77dcdd4bb3b67194a651d6386c1fb41b67483e00042ba443ed06f10033d3f8c28366d29eb2f4f3994360cd70eaf2c1491122ac048a3d8c3f44585a5524a162c412a2b4c1082fb05215184c218870319cd8896662b0e51d7777b7ac3b050a7061d461c7d5939324cc1e5b17b8f5e7f4a70511d133c79042bd986f94e6c4d730b37d30531329f97132352685b2a048dc565664a6a64379a26d7d705a123d0b5f619c6de36d9b8de58ddeeb86afe606d0e646f0e686309633333104019e665961988955cbcaaa8dd08331c618fffff376bbff260011ddfa4309f39e46bd0d333dbfecfc2734a3b60fc2ff7f7f77c7186719eb94cf254598bce65a5caea8cae78db1f4e4e94884153d18795cc1c4dddddd6ba4ff485fcfa1ec6baec5e56a55aa5c779e88691d8fbbc3a3c430d3455f1f7347a02d6f7dcbddddddfdaf32faa3d772bec7aa56cb5bdf72777777ec68ca9e79e72384f3ddb5352179ba1d5f3fe77707a2e4602223813683a894a34a0c4defe732539322946183323126864430af26ca1d2e304896e98586414fc7062d2e1d234817171b12d6e94a11978ae44ee8112ae998d2c27270057d688c148b50a08b9814ed0d18a4b186866259c4824edb2a1541a8d061e813d336aa3026b28101caab0bf1921bffff4bb1c230134b474a96ae35c4fc57147d362d61cdb0cdff746eda4497616d015d5dbfccf55bd240f7ad03612ef14044220989580107a79d1695bf0e29d872761186994748479b4fb2310432c0a07f5deb24f894e82c535f3bfccd3a22d799d75c8bcb3141c247f4d5dfbb222c5aceafed58d678f4feffffffffff1fffff3fc6f8fffffff1172121e3308a601cc178d5b4ce5e732d2ea732b1fffeddeed013cb6eac7af3e0c8e601d26aeeda0d2f0f63bcfbac634f28aecca2e371777868388adfb2d4dd97f353262c86994895497be60c8402e5fddbff2393239e4c5da55e079c3278e50e41242eaa70d8b239bdc8964a4c4d58f4d99a145b1544406406443133d86ea48e17c76eb50272feef36bcbc0d56edae35e8962b508c8bb0c23013cb2622eb6593a0a7c646e7c2f09ca6547afa99a664ed76ed6f7b5ed0ca788707890f09b08624f862d1b96b82b8f1d258593d3fa01a2be4eebbd6db5d77fcc318e36455e75de65db5efd80928a1f9145202b324376fd794248565aa052497a1f8ffffff5b5a472ea9068f406dc775a7cf4279af5088ce0c18638c73ce8ff3598a75bb45aaa56664d82aba3850c2f8007f5eb42757886b055228c9851684f812a1858b9a41102d3699114323aa727552116376ea831924c63234c8deffff470c33935153363ecf9e47988c7bc2ded073b754f9e8c5823ca221915e244cc0884225858b57d98484e129956e49c6d08b55312c11b4fcb0cc5aa18115a3083013930a20120990a9303b2e702d73c8388d490ff9c22fc615f00965c34c54f6220a857e77775a13e4ff906f81b611150b30338dcb1656aad661b2c63bffff63619839220bed79fd6a683f209b9bcc520d95d4f4afb91697eb11c4305338547b10d7d6a06b65c66116857e25450c3359a48e92d698ca4ebcf2b7bb7b1586992f0a64f9ead5d882f86c6e3cb7b72f64643756bd6130c4309388165f2a066c8d4deb88c18aa0f3021c359965cdb5b85c5149d1aa889582184091ea754f13f2999e4c4b5633dc56586a754b3dfe7902aa0f2518665aa93eb07e7967c5c9922e050a823fc5a54d2173fc5c5e2b2fb564af8de2ea7777574170ff7174d0d23e7a522d296418a78fbbbb75a27cee1863ac74646586f1e30ebeee56c6091d1907cdf8a9e37177784e260fc18c81876fde657e12bdcb6eac7a339986f4706fc78401136f77dd5d1e4474fe58b3bcbd5eaf440d4f1b27c75cce4ca71e3d4b1e5933fc243af328b87162d98d556f2cca997924029c611b771677efcebe2416a760d145c291484f773bca42c80646365892b6edc05eafa762031e2d270b72661e2568594630656f6ff7073a1103183501d2c50741385964b46b37bcbc961f098047092890a949960696c8a874412ff29935b0d2006bb781f7eeda0d2faf9f45f1f26b2ea9474bf2c93209f474d98d556f542c15d29d0dead0d26baec5e59451ca296f4f11501d8fbbc3836cdf75ef5e65101e27a7c6508da21a4719fe8d8f1f7f7a953fc513d405128699c79a8be48893b723f1667065420fca1b336fd3ab76444904097b4466f9ba80c61323b4de10303518bd14313ea01869ab375a8c634a1914bdae8c32162b243c4e8e911f8699403623421e835a8d2c46ccf411c3cca4ce5414eec494054b534497a9feb94618339e59f64e78e750e57ee68742d70aa668b2926d98d92810632c270e51337caa1d9bbd687ec5372e2f1a63053f2ac8317380c99e425adc36021607d46098994a6d32c6c224f632e499cf3e8dc11976f7ceeb4fe944d55b939455c7a0be48024b7737cac416e5ff566b4553a8bcfe86de678a1e91c819c60585b898e123c119fef624ebc22463247aad576fa88d7b7e190b754e69e51f7e679c6cfd45f96f34833a64d98e93a9b19c32616323b266147fad93083dde855a81382cf411869948c764f7ab7dffff4775ba77db9dac03b6144ef7eeee2b440c338bacd7ae2057fc884872e18183291c4184009baefcb8ae811e60689505b63e1b2cbbb1ea6dc86d76a84066e9eeae2236ccec9cb6b9753fc6054e4fd1b3c4109021262032ba5ba656d0f102e6ac9560591bae20c61863212bc4e56baec5e57a82ca970e3e90a420098d817e3420a00e6280ff4254605a15d13a8580745539330f9877775781a522abe70724449b6028e727ffc700f26a11be16016c11c16e4f5b2a8f21d5725e015d095d0d5d155d7d70771760083b3a29ae6bf763383c3baf25506b566e9c9c0f7a1866fa803a1f04753c3b6eebbdf5dedebacb4cf4af41a0bcd08255d9571ccf8eeb7a72f4d0a2b1c6a5ab981baf7148c5bf50abd1917b9f3b3c4e809c083919caee16cffcd67ecb1a899e87c0f06bf2ffde66d6bf77ec25a35e35bbf76fffffcf239addf7ba736794ccf9dbdd1d4711c34c16d9aa3894be3e148a9972f43e67d86de0bdef314f8d8ab47072825805c14a11001512ac8801c481cf122041367077fff42aef8c94e43395b3a804cc5f88890602531a040c4105821c89d2daca890114800815b86c7cb48c704818908621414034100743310cc4500883300c04610c4801395199030261bc0890efb4e16295ed91b6dc31becd6486ca33e107b16c738aedfc170ca585ac09cd2c8b49234567d74fa149a0189d89d71187e9a0ba819368b88aefeb499d1cfaa501833dabaa99d361406772b2427b53015db2e9c0b5fb413618456c43ad7a5bdf345e7603cec7378f4d96669bf068c4212784e54e8d31a7bb7f372042152500b8e1ebc561536a409636153884f7e81cd510e1ea56cad28901f3a30648017d7c7b5c0b8679621e751d4d82592a45ee3348181b3f2a8c81bc701bd4bfb6829cc5fa0eca84777f51f6a0861828d3079c809369238bcbb46a32bf2acd012fbefe23a341079a4bd1452245a253612755377c9dff2dac8edd101a068e715109c37aba9f7431a4e23df28e8b4fc837a7d6800387308156a52218cd5bf3072687faacf8efb7992f0cb921511b689c3d414dd72c19d52ae0cd3e942ab04854c35e54b829cdf33c40fde8b372541e7e663d2110a5ad20ac7190499f30d9d25d5fb13310d5a2808eea2ba9e39b5d61e061405463e339503855d5662525388a5eb37da40aa9b2500e85d722b9a2bb7ad385b76527f7be044d55d725e839b48ce71442a9b9b8aab5ab28c0c44e9e36faa5b67b7762f3d232d0f8a80b950aef03538b942844f2198ae17fd08b3241a0ebec2adc10e354142d5146c1cfaf2c90fd089108cce8296fa9037e335aa08e6bcbe0f2e1b420f66720dfef9ab5f5262ab923debf1aadc961ee017c909d0662705d68303f6c66f6f37326b4aa6eafcc97c590713090d0bf9cbbdb623e003874b7f74657dc766b762846d04e485a3440cbb6593525b5c310d94c28d9f49c1b0dc08b788c5cdeffd7071b9995ce795b5e8c1cc16b318500afcd826b2dfdc4ff76d0747b7ae8bbad7279ea012a1a1b5c681565a17cb1443d5e60e84d0395ab1dd4ae2013fdd9ea698c5bfdac0a6748e122b352dc7c318d115d6e5b5a1b9ecd7616b3a7a6d78288d0d2f1f1abe4702791191ef92d6ed370abdc456b1d590e18e14549d65da6057e9255f07a628737c5ab83509ec95af01f9ac41632d8c5d713e16bf1c9f9c97cb9d19cf95643564e609edc4919461fe0b6c061e032a49dbea5c4b6cb23cd704b94d3986908dda91b26fa0cd7b3038791aee6e5ddaf5c7d064222e4fd1a05ff37ab36e1f437420a718f3f54f10941df291f854d963d9f826edb299d7f072ecb69b68089f06a26d8830ec5f33c8ccbd8620f2cd35b3b41aeec4492ba0313309fc89176846ead75c0a09255e4237463f56a74abd0cdf8b22a053a61eda1d3faceb42a74d2ea5167e2276d5cebbe5a2f20558fe958dd478941406799364c83350c4bfc62d8f49f001b5baf1dde002820e4fa6b745685a28c8177cae8467ff3991d68440418d1890a62ca43518eec6c1485d6d2b7d63f9f48456e021369ebb7af4b4af8cc63cae3b8dde12f8168fecf0880eb6366e33f8b1825d0985b97b74cc3bdc8e80e01ef1950949d3ae7d6b97619faaf1c1218debd00d774229988da5c7b8dd34e7a0740bbc760ea88a4b8e9c812c3cd1e2c648a5894d882ffaafa31808d769a6de48e6cde4356d7875c9e842da2061da3697fef244a4fc27e84e2a3c087aa11ed3987e0dc726d2328c77bce6e7ce6966d328fb444d22947cef620758a196296a7cfedb722b96904ff7b6e88023fa3d031c5a2818fdbddbf26dddc202f1c39cd40a4f4ce735d657a74fe7b43639c9044414d086524c578f9ec7ac58f2a10113d890dba377e35ce724b4940049d49eca0d6b0d1d91f14aba759cb7b089a55aa94cb12c7b9dd1f721976ba975b40a2df805e97025b6c92d24d86396c36986e16bc87ae607f64f917e75859ddec24a0b89a80029befeb323454080947c3fd4fb9e93534ea2c167f959a306f69d220a527af293de32b39d3b8aea3bef039793ace0a811b4e3132e0f2071b4077b33fcc1c1dd8d300cddf0fde757afa5778f8297c99dbe989946190b37dd06a179fac100dc51380fa0cc24eea5a41efb492edec6f205e71b1c70e3c852f9d29d809489f0266b280b4b7741b9a905cd8456db7bcf377d9e81f3a563c729211215e0f817524ee169ec34e347a21566418e549304b4ef581549bd813cfbae2feadce34e939b0cd7a4d093fd54f0e11240d527d29c461a416fde6dc6f47d2a694261f062ebee719e37e4ecca58ac1b701fc040e67ff886610071286f89bf12cc8456061724a1a817338c15afe0f791d0a05e01c9631397b1e025fe98f73230f3a2a146ab197659e8d05908039ac3e07b0d745aeac92044e4534ff454c27aebdf11fb2c8403808d446026c7e6e571bcd4d2fbb23fa28311b96132236b2fc2b70429f18060fb652c722b2ffa16d56995390cc24cd67e94b1906e4ef4ba39e991447f575da60300c7aa1b16aeedd9926623ef8ced6bc9f36bc4f17e460ad4ab69c4a3333e698306e9a667cfaeb9d897925b59b0087b049106ee08e111c7c2671e82342fe31a7068aa61273e1e489f3371475e28f3e3eaacc00b8e5a8495bde8204b2b5e95c7eaf08b2d5cba677985544f06186d2cc59c5cea9c889589ec8ffdfcca75235efbcfa5c217815d0d1a4857c9fb3f75b1fc97a18de4372d45737fddb27d792208a3e1cbf91983f964a7ee52c388d236cc28524a1fe988072c2cbf21a2c6b4d8a0cf14e818ea4557a4ab0639db31b10c24080465d5eb03f4e3086915ec7e03036b5d568133b4523e1a8870b838271ed39894d7968b93a78c77388c771dc7f599d80baa88e4fc569cd31b80940987d896a23824903112b34f4130a4905c1156493b6500d2c7c2454a44244d209480bbaa6ba63a5c0442ca28291d99849ac1749b0213f37fc72d0d8102bfa710430090d92655bac4f518851eb3c3f982f3da3d59f189b253255a19b292d9a15a8a3186ea9d52974c740a8320e6990518c9943698fe6941f00b48c136146678baa92472a1b96d805dea118cb917e1d046c27e466f01fce2f81787f1cd16043af8bab8c3c2aeaa2d29b92e58e5b895167de2fe599180b06492fab2b536678d1a665a79e9d16272287b93340bd62cf26f4fcd25ed35f0c74523834b728c10a6570951107d6c5caaa45e0587816ff0e433ca955d1249a03c153279b5fceded141a4c002bd2e72ed439d0b99ead43117a3d9156ef7ca9e3a77dc2d7126b5d63ba7825b3622375be832cb67e4aa684cd26da03af0d82761c480233a8b63955d561cd41692faf984b884a3675177c13c0179421ebba5b35169be5c2d886b036753bac4d9aa95c1b5fa39d0e32c5902b7deccabb86179429765596c2456e137eb43bf25aaf45edacfc46aad6c4c350c65cdab37674b2588a17fa31f465f910e051fbd0cdf1d6e991cbfa91da7de30cca0a6722e620e37fa4d8131d5bd0eff3bd9b8e424a0178c3eafc8123b375ad3c97b58a7d959a0aa20eb98142b5c5fe8bbf10417b5e6ed73be0bbfaf83c3d2f59c0608d93ee6d890c1036d1863e6136ade2e36cc3d37cee336e49fd888b813834e6295afc5b008561ac3c8ad744df8128300153b7792b9c8874d550f23e258a3732a4f36e6e43e4c99045e98581fab8b045adfeea24a118d49809c57576fe86ee85aa6d4128db558aab7541c9b8cccb108d6981027e25d62574bd7dfb557df8fa8d8895a3dbf404bff4b05f893e2cb72597cca19864120875b747d4965510d26218f392080be5a06cf5fc3e3b4a146f13d84265efce6ca40a378ab6707b8520d523a4034e306ac3228ed077cd999542f1ecd2ef02c3f4b4dacf80cc97af4738ea25c9fae6f053a3a920357893c8b1dac2739468224404f66e70a9841e2f6adf1883ee18bc2f30b9fabfbc02a2e20112e305afd7b428192cd356200f4c9c1f963a015b5071b63b065f7a632e61109102bde0668f1a41fd8f67ad40973c4b65684051be185c6f75bb9b8080ca6fff72a20dca0959ab162bafc8aeae78eb98919ce731ece3095202777b508ff037d2ba66aa3609d0fedd8a02f542d749b6c2767374a89f40d200f0e69d357c3c98855bf844ba04e13d3c962a9e4a3bc4e297afef46d851ec20f529adf107099ee9105930f418219141cf1aa34d26ad42113bdd99425e15e0a9725075a9baca74016151c751a9b1f10d70a81b8fae426a6ed83ea480ad8f70a769c8e21522ce058727a34a9306fdc2b2efc44294fa5c56bd50f48f73852f870a04acd10820f5919b9500de6425c670c7486c99440fa53e4d26ba6133284156bb2e308c0f774b8cd3d872ea8debcb67ec6d964302bda8079b6b5e83c4e6517108415a2da66944ece74ce5c44541ea21ab5721b44e07f860a00fb19a9650051eb804395162c7883b5782b7f156aae8770c59277044b589b24cc3716b387be9d440b87a4c33151928af28fd13cc48d33ad915d068f9ff8e8890dfd9f2df2ec6e0e29240a984a272a8b29c51fe360eafbf8ea3fe5aa0274f4bb19db57d6ccb2e70b01aeeac93e70eb48d27203a113f1bed4c293a7036fc25a91c00da18656c548612ff00566fc4fe4dddf8ebac55eb78a106fc4c4e38a4eeb215abd6a3b752f1621a66ac631f1e5597e5a79d744de0cbc35a2dcfeb832db4400e87465956d41ceb3c3e7f54de88210c5367c04749ef979740849e88ee9134f859e066d9c513243e8ce04683280bb7b3662d00d11159808a1c2264d2469f872b2820a74f21aecb8edd78ceeab3bba03746316a11d62a4b068ba8f13c74876246d381c626262585e781009ddb340577808ba8faa7a82b4b04eeeea3d7a6fa57b23dda0efbaebb803d510745036ca3b08ed6c564fc3701f93e3f2887804a3df84b2d2264bf599996bfcb76fef8039f9eb250d1946c3dea799b553a246cbc55a43686cd62c63193e5af61a75b68327202652a1f9d1acd0a538c9a4344c45fe95675b98e4e26cbc076361601dd61454fa2b30c5d504d3b240acc4ca8ea50948c365c530ad785893c9be3a0a16961bbb2531254b02e0800bb3c1c89de8a5510b2a1633f55d36b1abc61a2e0944892859842a8c413aa4d8a90593bbdf15e231f2f5a5f07615867062a53911bb2f29817fa5cd10c6eea37987a50d52c9c2f4990a621ffe8f221b2ad81404e115370c83876a1e9cf6790c55014da6f6015fda45576d6a7e0a4ec42d0111cfc1523e525deb53920b111ec2d6a52973c43ec7b9b42a16e2a99a03ccdb95039f88212e5c9d64875de14bc118d244ef5ff26e3fb32e4bfde632bb6c78946d9ecd92f26c4d78a2ff73084c067661ac48dd7ba9f361daf2efbf11d4e831b2a1e03d31c2f5c0d50b2d1e02c44adb5c21ecfab699b140436e8f717bd38c17e84826d8d0d6c84d41319fb23268082dd3944c20ac894111ab8707c7e76259ea81121bb3a7f4b8a210ce7a25823cb1478805cdce3e6c6bfdf851d84400bbc6e7b3fd8663adcfa02342a6c9d178c29112131184efaec7da179d231c68407b6679acdb628ef43ef9e0e8577c94fd4c07a4589f12a97711a5b68956ed2dc88772f5d28bc6e28d723f82e7a49ed195102cbb11175f6b142d0d6326200c2b2a9244528fc728ea9aa5f5fbe29905603b5028626fc3baaa335a397a88639e87f11d166eb51c0e1dec603e2d7a27e4e17acd9387297b3e41cfa473d4a09877d1f9af7d432bc21a48803761d8bfb4ca530aa111bb3de4d55233b1d24d5ffa8db7b86d89867f9f829e31e7e20d47a859e7024db45848899d93a0ce92d854582a4941f5f1223ba3614b85b014092270b91ffeb8e17141516abe4f3ab83dddf5fe70a386f6f6e6be3354e1261c3acb904db3da4c77de3d12aa6a07388300530efd0fede2226305223949088608f66415e92c823d00759e0b04baaeee9f04a0dd6b8dc85bdea2eaf8ab3c71efafcaf2a54bf95cd22b90d475b350ded4ebc51d09ce3d54c3a8fdb1b52e4204a31d71c8654083250c3257dcdd4ad0ca71879502aa7472e21d03adf771a0321474f5c94f6093928b2959284f6c1be361bb155a282bd2534116c27a6d9849a0921aa9e5e94e1f2e5fcb3038dad9d588e44418572438a8033b878c603837827afaf8be02bae14a9e4b6a22023651483272b5ef0d397bf019c6f78036b7c8a19d38cfb714e9ed5b4e96bae61dfa93aabee011347c83f5f0eda9dd5b10a7fa76abb16c74a3656b1c7dbac6f34e16d0aab77f4bb873e5ea2f37316eb5ad7a0f14836e95833a909ac8efeea11c0c9ac2d97fd40e7449edf045ea4f3510e7aef078cd24ddc887a695adc298b0ba0d4495188bbc3bdd8ac44877ca9db807711990e80ef6f956a0d4bbdb63ab1edd1e124f4e280abb47b37e24146aab4bcf70492887ed29ffab6fe11dd8e7d090d8e2bb90f002dcc417475b18cbb68b18165b966e92ac5d2622efa11cd0a4f01bfcbab96848873d9be1fb771ed375355df744afc84018812382ae402a294b77cc45511d8cbc8f5398404f63cf33eb8053117bf90d225a671e497ef1df019fe17da0e900c8f5b4d228f0694145fbb57818fedea62b5b6448a6b4574b999b3cb2bde7d0139d35eda59703c4904a1e1c1c5389712828e0808a3957b3267db3c0ea6b3b7e1f453149b60635825dd7ffb7e2eec99254e88405d82135749db8a52a690cb4af7c0058d00574ebebdd2db35a209ce02dd649050605866f7377602c03a43294030f57e69eb04d0081088a9ef1d4f4060a73910d10eb401c550cf3d2d850825e542390c93ad7e1f1265a5284690a5b4d3281cd4e713297e2cfcb2f097edd011c65ac56a04f150aaff3d3c1604b594cdd3e2e56f538989c18e0a733b862a3854084ca4b90a970af6e979a177be89bb8ddf4df81231b5c846c67c2b01c5ada0d104b408dd3a78605ab77e562c3a96ea5907bfe6ddcc5f7023eecf8638dbfb88d3d0a10ad1e3d31d7bf34d0333f310ed4017b66175ed5baf5b0263100846c0811d7b792846fa035466d128a540be5ba93e7590f559a0accd3f13a66f14d39a11050981a611e1cc300f40bb7709a3ea93b04c1afb9752b9e0fb2c17812139246cd1da69fb885df4c70710b3707af6ace756cac2d3fd44fd7afadd773ac3732c2efc742000d84c42c12f44c05df114d3336a576034f8b7065da412f607b3abfb7a19f97152dfe126b6d92a62de8daf9ca4a417a9bb1ed6cf918f96afe60142caeadf7d427d18d2cb74c6f2edfa04c5f17a05d14800f86b220824c72a20d9e26ecfff15c03913f26f166a648a4f056d2fee61a053243f6f6671e280a26870f52f93f7e26626f3f4e280a4576dccf6722570c59e1e0f8d796229b9ffda7058387a216681a40d5a30659e7ec47d1d94f8b39f2710da8190c8b007f4e1352e70c39f7f8d60432474ac125c2daa7424447f646d9a43318ad018bba281f4c88d6a683aaf261eb48c1da70300912a1eac0565b4234384ab8858912c03d11e349e1a79c4defd1efc5b0f2b379ceb19262f238f79618f54d97a89a6bfc1b2a1b71bfd5505e501e3405b65ccf941400f50f7bf40cce0932dae5da83d4443c808648bb0e14c16aec2744a207ae588770657ca67221ba3aaf0d85241fe15f4c4f1b8b24391d3c1de6a233dccc5f7d5a868676a2647a5952856d0167ca7a41369a6002d88df70aacb02b42ccc68ae6eafacb09a810aab4d779df40b021cd9fe5b3621155f805fd47a6e0dd8aa705640d47aed95477bd6fb5230d3224560cf817c8aa40e245aeddd4f96ddcff51358939dbe5b1cc5a753b273bfaf312dd972c00afe944a2dfecee0e682cd5283298ab34ce9b5d0e0a13470dd0bf2b94ee7b19962dff3b5f20c2104ebd7a8bf3b7667a95508fc985148957706d6a5f846e0dbe6fc16fd1c57f7aa1228e50778cdcbc8c9c3b8cc43114821daae1724b936e784860c3259617f886e29efe6d5ebbbd0d023acfb0f1566d783109ddb3c7576e08ba8f0ab3a0d50d92012ad08df5b7f3dd802e08ac050b5323fd7f231217ebb0277a7235ad3cac28e0f2709d0b282a41816e2cb85d77137441f082f0663eff7570d85697996aec8815d36206a4aba07b88f6352d70d82be0877cbd2bb33e310b24123acfec5dc668d87a3d6570f741af515d578d06487fef8a3b26408fc2c30fff59bd70c7a255aaf789aac39d3f75f2dd967cd4720508088d79e807df1cb4c39e717b3ba65e2c869b1efd08dd5c86fbbc5de6bcc985a29c78d6cddf697ee0d6db2e120aff1d3bcd3a0467c73142281b4a689d6d44a04780d9c7c9957d06330b60992e82831835e63f9e28e42127a9fc61882b0578b4d7c30b01a234f6bda5366516f58250a00e91bbc3c369de9dcec6bf95f493e4e4374cf533d03454320f3134639323e7a045c44b30c3c28dd2ffc95537a0c3d1e2ba1e95aab427ca673036494305fb58d931f833c0746564f0a85e6b5c969ccbe63ec40a992b6ca3fbed4e808b25e934cd40ea27befed110a873f485ea02250f804f4ef41d3569f46ce29c23255cf4828b574a8d8b6fa6efd0c947c8077d924826b143a7871b87fa29e2b75a1a7938d33d25809aec50fa1a87fe33b200a42c813226754d5bc968fe6f15baef2761dbe28676646d744e56d635f4cc51e1b5c7b342332120bca097c0f6a0c3640ed4a6e82f997e830a1552444ba7135336e77533192474cfcabdfaf8982169c13d6afbb7d6e59834888d8218d3620210554bf4a59df242077f6d0674d661d7e220770edce906d1e7052e73627bb9be10e66e998cbce3153c45ed016057de6ee6cedb70d73d7ce47a9aa51da076f0d689b23ebff4ba63ca21277e426682df54896def8acf1251f4301c26f7d41d1e84bd2055d4f22c27a53a01cc2034e03240c2126d1ac64bd5b10edd523389c6824c48e054ca18365a1f50ab94b95328109c204f181412a317835d1a894546008ce4d88ce72930a935dc2a2a46eb92fa3d817f21cef7f4933141041007e7818c3eec68fa29ce059e48bc8d981ec7c2ac961b045f5d14bc4308a28c5407ca2929dd71296068d31a0586d8caedc1318edc24c39db1708228dbea646de93c09438efb6b6de37cd99a0e4411e5fbf558de3effe8435f2f962e2ff6010fbc167c50bf531513b2431d03b0d0f1bfe8cca82b13582c309deca0666fb39f3429c22df20dd30adee36356abaaf5858902804b54336c0d80e78944eaf9d8971c568e561f46ffe59a8d0124889b299e20e5ddb7bcf69ee65b09f860fd4df4f876cd4f8cb9fb164ebf1082eea1a68f570382e5879ca4de17f9e6032652a093d696028ca6b5ffd23d73671f467d7ecbd68bd759c3b5d51549f8b89c4d015d12a2deddccd339e3020b2a74688ce90f1d4314717eff0cc5d9eb03002de1fa2bdd0ac1823689e7cc9638746f4e72f0e3dc0bbc05029c949326432fb8b11b82238c0ec20fc7750764869aa66e1554b09ac8e4cfd4324f3fe6e4f263f2e3e8263aa5c4c3f4059bfeecafb302654b16a85e0fa11a2b9b23734c736a0b3709d8e142690b0e428c26079d873634495ae94dc5f930ceefed1332d956b8220634b6c4e3f43273440ce6acb7f1705c058f63591a223bbe4b935c889050982ea94e9b40d265568814d4c9add3312791771cc3a7760c9b5d18a5338600c26f45cc9e52f6f7bda68fc7504fc0d4dc004068d695706ba234d35182367e952876e8191e2e3abf07e82c277d9630a03cc22c5c59e06840fec397406cdb18c6f4443711372b880f287f294641ce19246660be7806878e85d24f1c1c564a6f70e858a8fdc4c361a5e89e8394d05215e61ff4882fac5ad2c0aa3d6fb48325117b15028229998a5d2a2d15d1dd9f658a2b8112579832efaa749133338418cca7de6e26abf4fdca5709676568df8cfb606cd4224d932f3f4a98da6af3d37036a29944c58d2fb1efb32d04c84db00056ad4e44f787e8099f9defe6259662252ab68457936a984efe2701ef16159d0205a74546e17d4631b600318877d72793e83d5ede9dff25eb56956cafe9186bddb7749a5098148130fd04f8017d97a01320c82271dd649fa6fba2987ac8e78f304df39cdd3cb5d727a6873fde44eac9b00b6909f54a19b81c263e43c68b69e38d448c14b9a32f41ec39a3884ef0d537278e10bd56334dc83646c3d98e390205c9032c4a046c51b16f27c3c6f6773c3da82db51a6840cbd1d7b92b193a19f17ba199305d95fc9c0b08b2acc30251d0a4a66f9452274e649be65eec14190939b2225dd7866b070ca3bf1612467e7e4d8a83396c0fc7dd5f1e397e833109c39d78d7c93122a50605dc99407562e1e5681650e1580d0904718c0e221895402afe220bf9b3c3fcd2eb12a1acd28ee50499e67956801284c2c7facb8a76cbcf3a1749ad043206ba4d67a58023b9f69d06cf6e1190bec910a2a7ad7b92707bc9021bc0a145c483c61249d27b093f0a13c925af0933ee763394d926025ae0d286168bacf7f3991d2a91a256dd6e6e6cca8198096e1448f0ace79e20cf711cb98fee69172f184c0e0537a7009ce22e7f8f87ee7ecb0be64bbf15c4a675b7665696389c24c9141990fa6a50d673a2d6c65127ac81f7229b1093e29c878f890de802c5a73e7c853c3d24d16f972d23fdf57a166653b5cb1b1cb6054581655404ae3c8fae2bca3a22054c4216cf34a9503661665c039861d3e48deae5027b225cbb52af7b49878e4100143edfcd08168dcd8dc98031a76b40bd240565614c8ab21120d182632ad8faf23974f55ea6ae53307804e1ecb45db07e9e8c7758350e8208a5f521782a19a194da09ff9782abb0a3ffc43396d657b7f320f560ce1910b84c631dccfab4f76517cfd035814ea89281aa7e49ff2ab9879abafa3adcd8832032d161d4f00d9309f05d3e8ed00006d523c3178472af55eaa1f0ed831383f83104786a05060cb09c9061953536928ce241562336532c9c2b3b28afdc56c94439a2845d9590db799edecbf02802329a30de7ce83f6d1734daad25f4f32f194a05e660ab8a4a20070b2f2ab1d568c983de579f5283a21777171dd8871572080c7948daa852d1b063f0571c1895f8e6a83df592b1d990ecdf890f52522f0e0d56011389d7f5f516e51e25e67edf1edd75a335d4ff5abc7d77768e51cf31c38474a041b58f85f3802480ae257fbbea5a8fd57c74193ae944cae7641ca0d3569d66e337f57f3841c3ac04f2e8f655a2618c19eca454659fedac95316b4f714a8026110c04645ae0c2a47e32a3877b2556ad4406944be46c5ce046b7c6e91157a01909995355ef8f0b2e32c725f7a52f796f276e1fdcb185f7827672697b227158205e4d687e5e23a4dc6622fa8efc9390f1f12d93748103c46aeb15fc12731742b0cdd90c6939f1dbeaa1d0b2d0d043f800a62042c71e7223f3f08380358f73140afe435b83aba5056953ca6a81bc1de942be35bbc430c50389750de08c64c2041a8c3c41408246dbbdaa2084d9c6c308afa8651343560c04421e963970c4354200334cf861458cdddf3e43ea97bef0bc12331c1bc4cffceb9c0c7a6782862ae2464b4db2f8cd956146c1120c3d55662a717f891e55ae254e483f5ade5089387beb69f6494ea8b1f7b67a1ccab86cc3b4716cec165bbfaab8fe912fa11567c411bc092d1bc62bbe9f98eb1f3021920dbeec13a847e71311880359fd564bfe72d7f5e39427da2ef784dee06e1718e3df766d9aa47cc36e3368f342f74549c5ad5603c9cc4fdf57408e0356e94290eddc67a01e0043dd5a49d62e05cb4687609a23c1c0c68e340a55e378690c538b840d89a7abddee008f3c591abd04cdcbd1890edabc4a4bf625ffa27513a8f02e359c0e8a46ba86d7d4caa5280a0bb39736849d7f774fdc9e5ff2bf59cc127f4c3b2e15267883730327b52d8d0fcff420c064adece35c30410d968af62d3a999a733602e367146e1e73974f9001c94a8c8a5c01d161d1d56cfa8688ccd30668c9aecc12fa3bbd5e71c1961633e9160d68fc27811c9a0f63f2f665f6d5ad6938ae5ad2f016317fd5f0ae7bbf30d7e40e85fd73209b036288f7f9226942122adad3121e255390fe290aa5f89d0d7726fa51eb83f4c44f56a9a4041c72534f42b1b0262d855f1a77d7152951a031ed31e1f083a10d9d304871054728add348eb302023287a0da10c38986b13697b8105ba0524206976af6342cfb92887a548e801aad903b803dc362f7bd8da01128f86a7e473c81a231d1dc2de848d5a7b66c713479c5533762722e9d26adb69d3ca36486813cc9b23c38555f871725d92ba3f13fdcdf02b9989f4361d263a5773e240df40a6de3ec13fbc45565a2fe23cf475898d61828f2b5b6f290816d14b96e202a9a297c44aa06f40528b33d41a03ae4a74eeda93a788ab1066f4b3c0c315711225cfa59f251f3571358d02e763a2611487eb263a01be3d9126cd608cb2cea3c11477e0c0f628a58961c4510ae04c7f2d84614575701b80fa03ba3951524d3c9de47b0d7a9a404a7529950606d6a9b23f26a31bd01d7ff1d35b96c25623f50a531ef6296a75f4a18809b64301fe08b6a4901e83eeeffc4ea4476197d43f42275f97dc91df19db30ff44f09d12c0fd953944f0bea55f163bb9827991a839b6c865b953b29c8e3e83c73cb17ec681ceacb74acb1efbc59696edb6b2aad8e16f3faf8108d56835efce56010e17f9853ca7149267a3cface46f3affb2416ff54cce96eab017baa66a4562fb36bd745470bf1d69e4154ee7d4fc70924c66224be6cfee3b0fcd8f142c3c3d67c6a5a87ee103a031fe9e1f3ffd77f0f4b9df2cf2f76fc5940928f377b0b47f070fec682702a467390f80ab79c7c6ddc0ec7675dda2d8d6e9ed8b8ef60b30f19c916aeba33e9e2849f89e56299c21a11656ad838e88d3ec8c2c89975f37f3609ff78f6a1e4ca13f04b97f12a108cb4cb8fb5da15e1e9545c4001684d81b9b7bc9c3a77d96570dd9174d23952cee6dcbd8130aa59997208c503fdcd1e2dec2bd542ba6e16724278b4bdab92b04f15a9747077d7ecef00a7d07481ebbc6cbd34335ee74a9943cc4b5ec91fca39fde7f584dae2f5226be18d25aaf9b139a8d174f765518b15319f27609a982ede82c24ca346ebc3d37b9ae284a0d1ed6882c0e8d58767e00d421cf30739c9e4e944653612b8f5b5bb59e590fe2b1a3ed52e9d45150d8ae911e130f34c82957e078c1ae3314db83b8d5685d9e698bd5f8d57b3c9dcd3a9a4f5334f0b6920d61da9987189076ed05dd6b7f4208e603bae4ef83bae3956c30a7a6200ec88b51cef103f87f24650a153f100fa95a3ad9593fa1194101f1b48ea5f9b9f0b702cd284e35dca8786f30a78bf05e8ceb6de95fca2a52c245454752cb0397a3c62a156eb612d10f69453ff6108e7d6699afba1e3eb1531ee265cc238f10d4fd93b54ffe30ff33966873f020621631d3b1f681cc57250aed66eec862c33cfda115385b28d3aac21dbf4ec7f1348de60a71564891c5f348472dd06ca8e18fba3cd12ad9a76c4b9ca8698adec872c8238390490a379d2de72c7f1e7c5d1b349c34f68034096218fd1bd64264f2d8a4a0515873d54f34395e04e64a01c36b8baeff9b988d957926c9973a9ce871cab6c73dedea8516aae396af8b719a3c8053cd1a8c1af15cc99dc109ed2ca45f0b6809ecbd7aeb412bfd4eab37924585f8ebea486ce88895907734241303fa4766745a30d65da503cd429d06d8114e3ec91fb28b84f4cc9239ec8ffe9dec4cec32f899ecc2b2363cafbf17287df209ccfcd5c0701000f34c2cf30a4493601b30a59ba2c7350b40b76b2fd4658d44881042b6ffde5beebda59449269902c507a00605073964049d8b78737df7857eafcf21ad6a869d8bb8c3f752baaa663187ac8b43f4611cb5bbdd4ca48c63c2c036fde1ca8584b88a71c819cc6651318e4632733ba3114a8d8a71c8a0973a27ec212e9d1302c1b94240cfe3afa509e09d8361dfdf439dc3954e1db6e90f51b78b2830bcc0d53efbb02fec2e86616f3ffa5124ecdf97bd2efbb67bec9baf7d405417c35093aea0c33ed4b0b7da0d7e2d67767e7ebb0f48b3fae3c783af0585f8c5de6e32601f4dd0d5205bfdcdade45d3a98f6f5e8ec87da0531cc47389f629f3d9d58f7e135edcb703f741a68c17082423abc406bc1a87d969a0e30bfcbbeb06bf69513da5e7bef9c8f455eba4d060f7bcbd762d84724bef560ecd8e9cb7e7ef44d1ff7dbf7837a22cff3723df6857eb1f70114c62437652a1277aed72ccc024c60d8d73e4c4472b56bbbb46bbefdebb5c7aef91a08e37afa19863d86bd0fa0b883bd06621896fa3022b9d97b1f6a93417b0cfc817df7292da3299066f551d9bf641426fb988c5aec9bf7ba30bf574741ece7bcdee330d047b3e6f7f3f2449e677baccbded2b798ed40fb5891b833434c037fd8af8f3d18c6380366edc72d011af614b4180883fefc0bd37e5e20e7a41322affd5088ac03b87efbbc07c07da19056ad2c1872a0be8f8f45e20edffa74eba9f452ec62f5231299716c2e8c5703613cc07ffb06f86fe0908bb9f685d8cfaf7f3dd2c53ebed7178bf8288292419757180293430fa939c41c625b03fc60bb0ea59aa9978baac0623ef12caacb4be800a404149f6b2f2b21832840ee9e64c48318dcecb21191144c280127618b1d98e8011629a070425bd104142235ac1aad262e77b9288b225cb020c5d57e103b94110aa460e4bd99bea3224a35e3352e1b112189dbddb07bd9504c2529ba7bec80827779d42d464acaa2b4443d4989a6878f231a7cc04009064b31f08901107655b19a5092a06481a2046549c8c7eb157437141d40a9e2d49328c64498f0aae7e051a48307966eb111b470e9f2c44fb718c3b145ac1cddee157437d2152198b0e2039f72d639e794e283cfcc880cddf61ac4cd16498854714203249a5421650915b77bb6cba32831d4860e133ad0a2e4d393dc6d9163e9d9547af5e185623a786881e4f6d7c97952b4d0614e9f3ea90f41d08114226c618b7c5299032b9a4a5c89134dacc004505c9973cec9848a2b36e8410393aec1c89215951f2a47a824a1d2a4bbbbdbdd65b7ec7164e407c5d9d019e24ab7188b11b4a81e88a95019c209e9d2991053371d3c88b4107121ea82c48facd26511524aebe1e388061f4e8cbac5473a9c20c9222ec5490fae4b29dddddd5dfa3ca255b6ea3a786c29ea161b5d3ab61c75aa24bd0328394062010b84f0c3952a507ea49452b620e1b4a8fa60a356bac528b872a1004bd7495b66953614118aa1d7c5022457baf48953a487ee4202d42d46722de982543b9044f9c95222650e8600c2142d384214240081474eb1c5dddddda5db6054c404d5eb9c7376e916ff1c4962802b9acc39e7166943270829dd622b575c4710587cfa9c734e9feeee2ea594524a975a74d34851b7d8e8084906234973ce398924653edddd5d4a29a5942e67dbb0c31557b5a17365a95bec033465a00289574a75b040148aae3822020b9670058fcc81d195eed2673f51655251b7d8e8484712d20554e443103f0c41491352e071299ab062c47529a5bbbbbb7bf798924ab9c30e4cd589bac545464748cf427242ca9e475be811574a29e59c7332216252c4c4689e40015564f164cb91d1148a00e14ab94412707065a5d4a7bb7be6190f4386868001152421a200c1048feca32b651352b05c295d522135605ba4943618ed40036cca242ddd622e3d4a744922a5fc4bca294a5071e5ec0440f1ba383a82cbc1a348078f27449953ac121f25404799114a3a8a584ac28665890ba7e307443a4c19ac483a81aa4b14204c522e092ae2923208691e2161a594828b145d8aa494b28a2606a8e2490f1a5235985ec31341bc542c078f221d3c6a97a0db52ba74296b987226cdd9634a2925d155c4924f8e5ae544eb14243ede638b571b9ec8e2c22846e50741b7bf4e8c072a5fcc39dd9f400237a734e112846d41533b8002e8d393dc6b132d5ac9c7c7a7071b9ee082b90e1e4b44c188e8da50a4450d4f5081932e411c7c08496edbb0048511ad62ad8307129020e16ca1de0356b139e7c4a40881e5f6bb674548b88e68029d5004cd293438b24493b4e084071d9070e0850f9ad05110718429443c61ce39e77425a208c9a1a3070e420480458b1abac89650e0d293dc3d9b59b08b760994dc79988204c9556b265d1e49e914a9ab1eab40d22dae62c955455027875029cd24c0454a1444243189820c1a8a2820e1d293dcbbbbbb5b369d27a8b2b95cf2a90453a4c43a61a928c8ee98c1121586d0968ec060b0840a45960b1215aa5c445498e21a9a930a58549982a2232892362d3845567881750e1e453a782cb1c58f9114b3041bbda20d9d2bcbe525b218ca32670986a064c8c7c787053d8aae4032655d72994a9227b7975cfad13097bc40544414443928fa91a29fc862842c5b24592b45384458c20449473988acd31a2e9044810b54e141b758ca8e2a5692945802a372ce39a70d926c90c5064add9195cc73f028d2c1a3094a4d5852f2e99480544a48be0641f6f07144838f2546dde2a30ba9dbb1244955995892c4f47944af2258d94104758ba35c431d91aa2788a2974c28c5303a2508255a70b15119a338ea1623ed8822c96930852bf16adf0ff7da5b8e4a4cd3aa865de9813b9f6de4fbd6439fbff5794a1e976ef5dc715d4f894917fb476b1f1efa1ff368a110db3c36da2b724b8e3e8fed00fd32b69937b4e64f4b5df6ec1b41193431666860c8d0ac686868543431dca6599a0ca3a1b968682a0d0d0d0d9d4e2369683ad2d0300538fa313375c825875c350ae1c8daef65d0c4988121b352c5c0a4502713733377774b7fe136cd66d855e974d9ccccb1b9991bfc5e064d8c1918322b15c8c93e69b1b65bb6eceeee97e0e56679cbeeeead873f19bb6373375bea83b3333bf5c1bdfdaa976c358ba544622d4b9674baec78af0dc42f2ed8b47bfa472979cad931b28cf2ea982549ce225bfcb6dd69e41cad7aa13e701b6b3e7deb993a1bffe5d4812e9631335f4858c7fdd2008c8765cbe955c18bb9d2975245e9ccd806631bfebe6ad74b243333cb24d942ea98d0c5d77ee8f2cb235dfc4b265d7e1573c715c1735cf268969411675c9e22a994b47ba7e38e78c332f6ccb8dca95fb41d8be8cd13c60c7dfbf96e207e71431c2eb3cd15d3653316d9861f0835a49494bd29f5d92db0586cc3b4bd65238047f7f7b04d6c4740b372a4f41997ed119db152f615ba5f46765ddd988cee85878d66b96c8f54c6c0fad26ac736fc325cb7a3944e972dbb7b89d855b319d9d46db8bb4ed1add1acd9bdb43b955df7d29aece81a77154647166f32cc3074cdccd479ebe6a2fb0c895dad72c7e445e78b33dbac24cb6e8fa8ce65377b0c9d57a5dd9877d3f64951cdf29c96d2bb761047b628954d7b689cc814865d6a94ba6c6676e9276666d9b5171b4bb3384adb4824e8e2f3b79566f50c2e3f0c9dc4ec91cb2ff93330bcfac9e5bf405377d1c566b170707474dcdd67108f68a1eedd45474d9d3bd3eea6d745f9bbad87c18edd7cb20d0529511d59725933765dceddd73803dbb4572aa54b4a7d7ab7e7e0aeff024329a5f7902dfee96077bcbabb396c5d7eeb973bf5ab29a5b1f906df98dd0b8e6c31a5dc955e3e2fb35aba94d2dd9d52ee2f9c2ab6e1ee2ebaf8f4bdbbdbdb67d86aefc050be6c2925f7f7b5055d7c669bcbafb14d7c911fae62cb2b4a299d7217dbf0c7182367d492450674fca594b26fcf15aa57bd0d69e346eac39a1bab385dcbb0eef4714ebad3739cb39ad5cf11a746ea310e5b3f6ebbb6add4ea67af75ad7ed9b553ab1f762dd5ea775d5bb5fad56b2fad7ef45a4cabdfbc36b356ab76d3ea17afe536cd66d8c5bd70cc36b593f5b93f3daa4fa04e77fafc72df0c75b0a659a8be31d32d89ea9ee91cd4cbef4c6038e49a9efbc29acb6d3937c87bfa5045290543ee637efbe86f5f3f6bb79e0dd4e94e7eedf76c539f7ea866d5c74ede639b0c9e07ce34ab5e76eb313dcce790a64ff55c0daa73625e8219a8b9301f5ed8d61303ea74303130331b0ffe9a428135cdea1847942e88df7eeee977faf0baa750bba73f81217ded8bd7f4dbbdba726fb3de7ab4aaf165d4e7ef977e42a43f78c52126cfaaa83a0affde85883f20818a03416192a4440e9c5c81a4b168c26708ecf40222224d20b9e00524e0f12b9230a2889984113a5cd3e5246ca0c485b5d1699a7d1974fb2de572e96bf6f4147b219d518febe2a59d32fbe95c57a7524556910b9f80f9d5b6066a893bf3b30cf39b348404741464844d50db0e905dad85d75ed5398ccdb073e14a9d631fd33ed5d663c119a0b0537dc80a716e2ceaffd6b39e051a3fe36bd8b5d8bce65cd4b0d5beb00017c0b06ffd17c0b095ae76557b69af633a795c176dc06a2ff000557bdb4334cf52c6b3fc02f0a0007e05762d364a37fb16beb07e96e908000060f8dee380a1eae605308b766303be60a3234da767cf3e67bfb3e00d18e25cfaf1050d7b1b3a6750059d8b58948279963056333ea6e6553fafcf216b7cd9bbf0c97c0bb155d85bcb799786d98fdf71df2d2072954e2dc369ad858f6fdce2520b0c2f1618762c80a18a0618fe0c3064a9be062ceaa115c0100707044316eb5fd57534605cb22630bcae1318769d4af51d166d00b101c4864e7fccd7d8c13ce799fea47d88a9c00368f629088366e998ee2c30c0bf6167497516139845e70486383860c862fdab54b1b5bf80d8b8f64320362ef699dfec2f0cfcaa83fd75759d4a153eeb628f691fc11047a67be742fb9a65d9d3ad27a3da472fb5d7bea6c5ebfafa854364be4d6fe3690352734f9f7d588665598ec6300cc330d36bab379d3efc8b61395a754d6f3f21d33df2e4ece76815ccc7a43e47b77fa8c37de3e5bde7be819a790efb18338ffa5eaafd986d3c3064a38b3d8c8f9b25f371b3387085fde9e8626fc21e067b15f629ec3130d4fe7a9daefc3a1727c4991a8c19b2972f4306627fbdfc2137d2ec03f405069592f9565fccfbd6d3e464f23a938f0427d87d41269d757e971c41f78b10e7306f3baeeb2013b691622cb9eb6e9dc61fe7db39a53629477fb6675ffa82e0de69b94c93d3a7f417fa05994f1ff509ad6c0c9d5452e9abcc6a2bcd66b5d6593d4d7ef2a23ea1d5db4c4b9d4cd5546badf5693d5d1f1dfb84ae10dc0bfc419b5957bec53836b7b50423dbf84a264625a38a59d1cda95f1b2a7532719acdaa268564fee5138ae175170e313e550d56a108ee047fd0f7558c4a4615b3aade741bac0bc19d1bccc7ccda50a99389b399d7afa6d34c39e1c5d87d42692ccc4a655c01ad80ba1a2e287e41e64b79dd0932b9b2b79e4a65ec6610f9f5ad90eb0611d2ddb9edb8ae04995cf95ded1395d26ae0d850b1111f9dbccaa9caec8b3da9b875fa988fb965fa42d63dbdf7853eaef7aaefe2d6e9653ed505aef7dd355d26307627af7272998d5e9ca62fa49d82a981a3b32ae2b553cd58eb1f263b6ff5fd10e13d91e7593df7f9fb9b7ef8779c93ce3d7fbedebf6c3d9e07dac0f1ba8fbf79956a31955ef46adf4fe72d11b9787e883ccf0f918ec78b0203a0df7b020ba0dfeb8207d09f6d0cb87832d0536200d48bc77ecc533f60331fdb7aea536c669a75aaf5b66d33f8b6ad381490ad761ce71f775a571a9d908d6a2871fb4317f8c232ab75a8549594d196d90f59dd2aa3d73ba7d2c83de99c54e79cbe63be6758266ee8f6ab2e70fa50cc327dcce7dc32fdeaeb80b4a99a6866b7cfb76d733969666595b76d70396966bd7a5faee356adabfa5cf5b8ea72d2cc6e5fbc946f96dd7069a5f592f11a730ed7dc19ad16695c904ab502aa5df04d2351794e483971bbc97fdaa475865dd5d84933ab7119a75939d9a34f4b7936b7c9d9719aad92ce6dc7f6610e576656e33ee488324e73ea5f38822b3fb0e3ba692639775306b8c905b932f309d25b3f216b333b61c2c805a11e41e095f6074c31c895596fd906760bc5fcf6f9eaeb3ea1d5cbd56a826176c3ad1f9ffbaec78439dc0afed85eae86562e24f3f5138af1abcf5b92ad7e55cc4765645ecac478df18207938900211e3e3846a705b26b3211724336b34175a7df70971af7ddc111f57036ef55bee07b77f5b819c10b7fa25f7937bca21c1dc1017724477c6e3d2e18cd785ced876fcdd9e7edbbb6fdde6dd56b71dd4e9ac2bd46857fdfc665436a5b446eb1a5cce014b69a3b6d2478d84e5724ee2d6257424617479c0430708300207976bd1c79568e6c88fcc1cd5682b6cd7616035356a36166b468d8eb833838547dca9439528def4135949dd130edde7cc3a7df6fd644fe479329088ee2d0d6dc6d6bd8d33d98c9a19dbffcc51bc999162064bdcf123f1a63b2cb7bf0efd0cddfe4a947dc12cf9fd3352785cac0f0f1d98a5e0f68756871d68a53163864663ebe9decaed00f2a6fe2482eb31b34ecfdb0c7ec11f9d0ce7a4ebdee4ddf3f58fe19ded9ec6364307ce78343655a812ba9d94b8937589374455e898b895e8f66f544e3f925521eb32b3751b0b1d48e30716c01a0d068efae1a4f5d2fc881fe19b7e7a5453947dab23ddeaa7b1f5786f4ddf9dc07eb9f32bdfe07e8632ee9c1f19878c9fdf8cc37fbee418beb1fa797aefebf7e3f4ad9034abdffb56404ebad3872b201956473e47ff2794fdeae38ef83821a679fbc9c8deb39759f6fd1c1783f618ea437953a84f3df7997ebac5007881d9bca3f9421937e4825e6ec805851c51683a127a5d4c3c841c12b77ffb1cbd02ea1ceffb57473a67feb533d2cba4a99a40d4e913b26fb2bf7d42401d8f7def130252f1d894916c7577292379437b09a68c82c2941104b8d5cf091179b8fd2624445c0d5ca5a087bcf172c315d08b5d01795d6ebfe9e748f7b9a7d4394ee97bb2befcf8dbe7ac6d07fd6e04d75362c5ce21d6d0d0bacb534629a3995996a7d4393c3fbe4ab2d5cf05f5784a557451ba962c391a2f4b6b564b63be91d91b3fda13791e0d2462fe0a48deb02017245bfd7dfd983f27cdd4361e1ca58bef75e149e1f6875c4ba1d582c6bcfa1f2217cf13e978623c170353cdecd53a55ab85cb1fba50e36fc470d1cc877c04e343464a7d8e8ef5b24903a9af631bd3c7ad27654a813146daa66f4ad3e71e9b983e7965beee1302ba78561fe303ea7856a0c7ef3a30b4e16e739ba6afef0c0c93e9f4f1bd6e73d517f3c97caba7276f690369acb5aabe98cfbd5239354fe9da66e8ae838cd1ef165cd0589097b502e29bfe70c6951fd27a69a8ecc31a2ed2486b771dc87256ce078801b035a1ef02e7ac80b889cb40b739cee18298d57f6197b3ee437bb74e756f68386a08e0328e29305cee0f03907521408f1bb528def44eca28def487adcb4eb04dbf7c1b885f5c21eeb32ea61dae91accbed87f9bc28988e30b34293096e3fcaabc2edef61d2e1167953b84e300e0f0a6cd3df9f328a5ea59ed2fc93fcba63ca6fc8e90be25cf41db189d705dbf47b9fb7856dfabbcf7302db34176fe9f65b9fdbaf99806effcbc76c23b71db1491ff60d63a8979f4c5ef752e75765a5d7c7f7e34e0fa7a1fa9813e83185db34f016e6c257a20598d56fbf27dc662e2e2fa10213883b1488374698a5c04c60a41a3aa7ce90bebf4d7ce961cee99206c7c0c80398d39dd23999871900e1903ba753df6690d7bf621f11b39dd2f9ef33091b6544c1d479d598bafe6382a89bdba71750404e269b13064c5e0d5306bcce054f03dd4b0b9d0d2f5ceb6503dcc6e2826c1a0b1b07344b431362b319b603195693dd805d2b601eb82a78e150e9573f402908a60cc631fdce10388d8b40c69023b8fd338c637ebf479f53d689556c7e97aa732e7bd9f9f3690e5755b19f525e735e13d4aeeb620cbba16ac52ad5e4fc6506b6631c52de98dfc5cb2d25d72d7fb9f5f4b377bdc150032dbfb08e7148d9d10b4a253ba5cd92a043b1fe5c13cea11bdbe7c7fdc5afd8c5752d66893b5dbc89ef6c13fd7affb825c625704ef61eddffd2ba06ba39dae34ed472c59da8a4c59dc825dec49db8e405832f910355514bdc91474a71475ee112772452bc895e300e99455c8a3b124bbc89bf6951e272a3b70f0c5d95ccefeeeeeeeeeef5f9035273e9e652fcc88bdcc8addce85284e8f8432fba9131fb456e51f047b5e262917d4e8559f13187e2c6bf9c8a1bbfb124ddf8f28a4b71a357b9f1e3cb2c188733c136f1a34b8937f1aff81337be449a5f38e4ceda74c8752f9a4399c482b09885a193aeddda49cdbbaefa7caf4fdf565a513f7366d7c7c7326c6e3d58f44e455d687edc32a069979380593732cb9f9fa373c7232c23e11481521d2eb8a6b87d390dc2c4a2c91626bcc01245bda22a6982942a5a32ac625aa42471015667dd820743742bbc0009548c3459e2329814414a0fa8cc1898922c9638228117d88c0f5864b1b4e582812d414202022603041553a2f810042cdb2a0653502141111e03c411132512067bc2063d28d2619e6a0f465392b0e89e2c31a507a0cbd6a01ea4e007253a98a203978a2939828a0a7cc8b0ab56ac053860620a56985c0e44114c9cc0882455fe40032b246812858aa0015861b9733ef065bcf0cfc09059a9626052a893c903d9fbf99ddb349b6157a5d365bf7c20e84bc8baaab24eb10b9caee9b04d932e06899d533aa78337cceb2eaf7e4117bf5bd3babc11277bcbf956d8d8d227ad170b1fb6cf8c0ffb272649f2c5ad8102efc4254bb67013b84917343e8c4bb81c146f5a093d642bca357439894855c44746ac231f8e4e78274704e2f2471f38b6807774c49bfe15704c4154819158e4328c11f00e0ece1737f08e0d1b415803bca3a3d3c51262886195133384cb1f017e00efd4348017c03bac78d3cf02421523278a584a5880cb0f03e77000f846e5420b2fcd1f0366c539dc7bd7c439db6b610371f9db09efc427f1a63f68490b782746f18173ecb30a2e7fa7a057c039dac72771272eb59ec49dd8e502a3cc20036740a4c8e5acc58a47b066631cca865ccd63f61c1872edf5d9e790da37e426893b71c993dc2e5a93264d64c9fa92c6c2d74668cca859c187c84f1bb197cff5d9ab46fbee3516c1ad7e2492b81d72162b7889083e376e1181e28d435e0cc52eedc303019766c1ef65d05c1986536dd818b4ea316660c850cd6a9ae521370e7ddc895dbe7d5871a77fecd7a8517da58a9198f5cfba47fabeedc0b22fd4de76712776c15433330e93429d4cae696ed25c03a5e9877ccb712776699f9fac81e24d7f17d1b42ab77da2123e0e60d611ccc529d707b7bf7f76708b00c59d780307e484b189d883db9ff58ffdecb336d33ecc1eb31f5f0bb3af8f0d85e0877c9fce8a334ad0dd2dbd0acb8c23f22ac66555b3f752b3eb921c5de8770c8cd9a996631c306c1377503b35742218ae6e8cebbb4e0ec1d678517ae7f52baf752d56cee72571c86f671b7fcf616e3df2ed4bbc986dfc19c7f5b28b19bff143447d22bf32d2a96ae0e8709191b60292285aaf3b83060b392f36d8c8ca4c8d6a1599b94ccbacb6d26c86cae1c26e4826c92c52e94918c3755a37f92c1c23ea100c51b376c0ac663f0243b7b2adf9a07bb9dc972a32f9a880e66aca243867e6680a293755744d3ede92bc3179845c0432fb98878b222d132e63734a2bf0d2175cdd7293d2351150779ffed91be35346abd492545094db4f74941aaa41292bb7eb266d8caf93f966ae74ab678e564047b73fdee09e740b06dc936ef5f714b99aabaa652acb711b7dd37b1be56baa9976e936c3d54274989cb55e5a0bd15d59948d0118cf4a880ba218dbd08f8d510f5c6c43290e5752795d5b4f57350cc338cd3f9a65d9cbd43e140a88a6599bd9ceafad9f699ee69f5452c9988eecf0eb29c920dbb619aedbbd35999a784b51bbb814111774d2be145125ea1c66d604c31412b7896e1619f3e4869c942e5c1429c3f1e0724457886e9360101de3a09e12af80267b591807fdfe1550d1edbc25559779f4bb8d7bd1f808467d451521301168bdb217980f695cfe9005164fd991f12133c14f44c153f09520a46a6ad88821e653469db3026a5615ce59196156cb4f5ee92c39dbe3c236fd323eef0934df1438de60fe95e0f6d7b832c2395c0c98d51f23b8c31328130c87d42143eef6b1942df946defa76568e43029efda8646c9ba85ae8d0cc0000000802a3160000200c080705a3c13c8e721424f50114800b608a5862663e92c762b11447511445410c83186308010420848c42083aa201ca4ee61b25fdc1ff2915b84ffbe5c371272d82ab9cdda15b40705842a72c097b85a01c8684c572f9c1a3d57452da939daae3c98ce15d0b8de19a473706032ef1ce66efbacb8e1590b25d8fce7fbfb94a6d0535e12c9c0638f64a85dd78c390823381a1e5b6cd31c2c6b24fdcf986be3e89e2320635dea3300ec2065242f2fdb5eb33ee9e2617bd6cf506a70a933728750882299b81e71a94a2232848e73379712978dc86efc214d8ca5424e48d4f1e62ea4e33efdc5d7c3def229396eb2d614d6f1171d06a87ab6481ca9d3bbf4552cb337e1c78eea115e9d51a119082e025780ae4e99c7aa63d068761f5413cf70d02db131dcefe68be244c70fdc45c66793cd789c0dfa58f399af808a00d63469ebb4bcbc456ac7e34262372a00b97bd6f27dd1e7a6891ca0939b282484417a1caa9d6f3b64689fd5ed803151ebc27f0250f41775ea69b85b19bf30f08117ddc732b79870c23bae55ff9df79d28d6c9e6aee2f47530bc5a3d96c25b924a8ffba7ddd9095aae6adef3635c1309a33ee9c8b08b52ff7ab8fa48549aadb98cdd6c7cae15ae0b6812dc38915f5f7135efe3431b4d60d5f1fb40c18104ee949f26de81554febe055e59e20280d06ae30864f423f1cfe0d95548e08cdbeb2e46ed1c76da2857ab81e813c4d3c15342509c027b7a39c413ba366827dbc70eb0db01f344588f6510b051075b06f20a29ef956a872fa2fa923eacaea17c01ed9320405584b285679055a157954ce9cca8caa85722a5f772026b16309357c0a60a307a0160c1ad6f12b843dae8a940d8a4c19ee0a0a02f6350ec373126663f28e9b3a468c87a9c02d61d0065d17cf38c647f8db6757c5a38d330b4c826caa0c2ed7fc26e408d1125355f8189593b9a74c50f23e41728aa333d8fa834d6cf50ad7f9144545d00db5992dc0c583bac7caff34b3242431424bfe982daf3d4c6911da2c814010cba5d1961a85600087bee47ce4d0d23757ca119a627bf232bbc7021608fb898ae78857beeebc1c3e71e1ebfb8e8c8bcf11768c1d08fbe8cf696ca7fa9cb7cee98277fc064fa4cb44a4f2a0577eadbd8eba04f062aac384209b9a7205a0ee99a8b13c13908622efbd1509568196296909f7cc99969869cee0f63f0835059bf80c51d12cf77c6fb3e84c766e5210fa20f537c6ef635fa07f71ec4f4814eb41d4a1186227ae3d83b68327b7bb3045898f2c1e62cd016bfce89196db9290e3dc055ee2d02f95fc512b2d0fcdfbd42bc28bf166448eb706325fb48a1460edb70c72b78b56340261a84013036a77773df90630a68b14afda933fa039d272da1d73ad90732baf0b1ff4448e6442c346c9374f786c2ba7c38a82a0ec80e8e7b71240c683c5793d9eaa8aeb770e8c89192492a182fb38b2c7792353c4b407901626b24d781a7361021f81fd44d8fa7151edb4c5c45323b88f42ab1a10e12790e769b1806f2633f9796c585e8136041882f6d8c173d333b5afee9cf6f58c61ead60da952c9915093a8270f42b0aac73a181d29ac01b3159b5216f1864979662c9959fd05d3e6a841215b5e6e8143532a5151006e7c3ed809f54a5ef20cc7b39cd09537fea233cd13d23955973276c500a128168c6022e946da62c034379f3267d09ce896c5c19f019cbb9dcf54e08342b4b9b83c7af8023d79ca3751d0a323d2e4632824392e41332f0e630341e96bfdc8948a61d7d758bc0c39d8994df89c1dc9d93d409f877135dae287d0064e297515de2930e5bfe5a423757eb0d7e190b6edad4fd2fc37fba0c37881ca38bf495d4026a5bcf3987b41770c86e0955c18b00f3cdf0998dd21bf726d816579d97cd77281b145a68961731965ade5908df20718f44f63c23d556a710e51a6d49a0ce3af19e81d66c4ebe8d449cb7d79280c7f47135f25152f55949d545ecdbe5f33ec9d384fb028d72ad5644d5f5410813737e8d0f274ebafd9960fd7c2a4141010996a4e8171aa35d12ccc82d49b39015fcfc4d45f20b08af2559f31da3774b82e984b76de6a492fb914c252f593efa4ad82d43a5d68d594ac511a3b6c4de224a6d31de852a89c7bfb0e05d829097be9e496b84b62b4efe5115debcbfc4779148cdfc0d852a59cf8d0875727d35251ad3b4a9049d3d55dd06ac80106305780975c9be8bf5b08253253d825003319f2f6a6118c7547d61689be2a65c1274b0cb6b43fa59534d41440d01377c4960c368f977db36203f045391fa276f2c822892ec5760a2b98db704f71154017489ff820a0ade10825a02ed53859bac1652cca980353d4a3cc5a0e9e0b1edc25561e8dc1618daad83b65639c7615b859c0a168ba8ab25f111ab7608e576b6cb0233248d5040a4c7558f52a413085672a608b282275841dccd2a344f40d8c8a960c9fc94e5aac6fb5d5751ec3f6fbbeb356abd2c08c4b023d0c455596cd339ebcbc24c2067066c6383d5a90fe312a419d7f6c3f0cbc20b3fb5c146278361d4cee1219c0e53b462fd6bf417e8e5a53eb1b046478a95e5549d8f55c57cd3a06b7bee9f4a08017b754bc441372b2d1f753487f38f69ab7ef2eda35a3e1dbd723018c66f476937934af9eab9ba7f978bc4c3c289365f496a3c5eb119916fe1a3eb9b702b99721d36816bfe42e86d4e6536641d8c62c1690ccdea787ad6b497702d3e6a83e185355eb482dab31344bf06dea177048c3a9185bdc83c398f214d99ceb271728898460c371daf76bf341ec505f98f4eacf4b98e35e9f4b0def2ee5c8225b5549d1173099148b30149c8d08f8bf249f9f0458763d28731bb68e3ad6f71be7ea47dedda01931780ba6d7a2eaaa72705be7cd318af5c8ba8440531c59a057d58cc6acae4da44c151ae5fed3bf7f090c46e5f38644b1d4d0a375612e5dd4a3fe6fd9af2dc3af56a379b1127825761dc0e430fee068d30033a62309740eebd9e6eae99413d58eca0a834281670404c81bd62d1e52f48a52355a076485eaeacffa858755ccf26d194046f26e7ed0f01f115deda3e89405aa3996ea69cab8ebb4cbf192c8051802bd3855a949ca509ddca7579daaa0162bcaf860aa336a59424752eaa3d716f5000fe5cdd56b9094900d68afabc0c3e161b50676c92b36268a72d78cb17de6685cf638703bbe6668a94bc384bb3cd37b77291a551f4dc7890d35e53c4cc4a29bcab1bc8693824268a9288d96c883326c2fc0fe489d846ff1623b6ae942f49b6e08a5cd353f3040bd7e3e00210bdc90a587ae48fb3f21b6db14e887f0a10318caa7931935ba9b7d547235bcdae503130665284de86b109ab13a7c828fd5e4c0131151885f708c1bc8354e4c5bc8cb3d24f86ef3e561f4d20505d02874b655c8472334ec52134745bccdb5e2403451987885acc6a6653cf1e4049ab9bc52ca67d6c046f524ced0a6e1605a94824e331589d149cf77dbf5a69cd0f611689cbcc48b74ead486d418321b60d28243837dd62c55c23c37d2c88ea74d858162d81727a6956db85c7bd05594e63e5a6102d3e849760e28d4fa2ba32be81653d0bcd0481a7f44737081724893aa2025325b02ec2855933ec6fb1b7cae3ffeab7229418e1eb845d355a05c46bec5ec91fe8af291ad7ba94e5f3ed10eb55002ac35df4df3073c23aad11f7216a882e8ccc9aa91e75adb89a039886e8cf4122a06b4d72c81661065a0b37409252021f1a4ad1b5970f3ed424430852fe4c122b02c88799dee11558575692c14952a19030a4b5334d3379a6e254c21a2a2105ce49f57effcdfadb70fa946b805b773e539d67ad5f876763f43db52de109724c4e151f3b10d1c6644a1833c2a902c0bb38e93db3e5b5b7c9c5c47f521aec4ce793eaaa7dba02664dbd2a609e1bbcac67dad0c2d104370dccb08583789365d156da91403abdd478bd6f62551fcbc69431bbf65a92558019eef823059821ca9ad7569a8840325d6afc8b5c8ca8419a1918e6ea719b585817a1bebdcba7f24ccaf8ae3c9d4596d24375e8254bce1da8209b87b8c888a28687d71dd61a202cd09b4e6994e5a4126a537c449f48bff1960c3003c08a88464e18e505cdf8de5f01eb52cfc6464a0a56e8f4f17efef2341f08c83e153001cb4ccecd2a1aeffb0889db87f420801dfcd4acdcc011a0fa006f35eee304b88e0136881ebbfb8a094047940d37f17517ef70bea808c8ba72ad5a44f67b01bb336db2503280cbf9136b1f1a403a37dc57934308618b9a7901a06d5ff295123eb029780b75d55ad0715a1147b4a7ca482fd3159de545936539d1dea5b0d9924ddb83008639dcfdef4580590014487f7f89309a9f88a1c08cfb34cea012760a140cbe67cb5a5d30742fed5a121f77eb3351604ef62c0d8ca7eb39fb2c03774f3bffc61ecd26b4bb6cbcc6188aadb31f19e7b42bc48501049289f3093d7b60441ebf283a91aff309f87f867716ddab1a35abbc0d34602235fed3ff1bb3494c3bde9b031d69948224d2660eb59277d5c89aab458640328c162b7d86dc29e7c99df330363fb46155f043a927c968711ee7922e57838170a37ab8f3b31bdb129ab31e1c58376f195d633369f22fea01df4087978205bc6f0fb1c3e0bdd413488b0d887305244fab151597cec9fbe7e8bbc95a6e0893f1a5be888850d85adba9c03a47a1ffc18493a5f8bb0ad46332ac688969be5c71a747f0365db41b23dca93ff50102326371363a7a55e4ee9226b9d806880b5a27b7bd0bf74864a0ad9fc8c4165e333e2621ac4ee0ffec4255c6c47261bdaeb0b902c858558a087c42580c0168825f6b68ea28db1ad574176a5fe126472657416e75790f24972f1fcfed1e385ed1b34e227e75ce94749b0ec188febae531d8281ea205fde012529d706459165eae128f8a9519195f63d2586842c5ce804d42cf6b5d76a09e7b4280101d371cb2ac29646844958790dd438d1a172fca52a71520234d6064cd238014e8a23f6374c3a897d047def4830ebba6992d8cea0f0949f31ccb6db4d62199753aa61c84d3b7b421ba641f8e20178bd025d2a6473e9eeb236cee2ee2fe69ec120a8c8c6aeaa418097602e3076896c662f251aea86fdd50ea8538aa8acce173548a924b00ee3f1bf2c9abdf0766e2e7797b5679e33b32cf916f156589d4c94917665294ca1b480dc79a49c63e3f9d38ff701a6150dece2f419752a6a7afd62e1c9125bd80c7a4a33456b2f0bf7019a056fbcdc422b4d1b5b3caf1273e6207a7bcd596a22031ed99df9d263b56409e953a1223723869f8352ce6747282ff7440b6879b0c72e47a0abacb58fe79a2aeaef7d370fd62cfc2118c37a1962ffc196174b21f2c575e4bf66acb3442058a7ec49e77a90440434d0f908124020f6268333a146a4bb5b30e81b93aa68cbfa5ad05974728978fb44866c19af3b718a39dc66d12dc0826f473d3e85c48722fbd67f97fe3c1d04692cc8ee63c3b8c9092171d563b45705845b97bd38ad258f5e68ad1078a052357b23029132e8f3029ad4c8e804a15ee4e40ccbd020a8419b1f2ef478882a875ffc3e5b47355103fd4abe1922856bca3c736b04e1e96d7bb7243273d7cd431b805ab16448140b8503d2f31373bc1b01f9b6466d5eaa8c368de23829c5aa73f691e3b78a951c84381aaff65d69dff9d8bb85d07e0ff02d468372a147998bd2af2d2d749d93285461a599c8d879a57c9221a064990e0021a24c4ac4950c4e7d913dd12d5c74b6bcbc367442691e5a508728781407c47f9fe58f90bf0b0a84c0e686b748bdadcd0968a78f1aa82a61fcabc3520b83146e5cff52e948cdac8ca1dfcfc83a981b003cdac767531668b1559f3d7780314b1bedf6990a132327d8395049faae45985dfa5fb5658dac712f62243fb9f29511182b4de61528da42729c6a284d6342d58830253c4eff985f661c67181c415206818e1edc84a84b44204866f1defbbc4b65893a5ead0b425324987eca025e86377bd01c1845cdecce9a253c0917a546c358391036edbb5dae3d6676490ec4e5d674983a2a5e16cb86a66585909d01f7954a2e914351acb40777298dd3a129e81b0cb0a9a2133ce25b79581a25bc10577ef3a070df5287744826d46a271c0ccdcfea1d422ed72434b4a2d78d24afed198d9f393cf6386f6fada7645754cf5e0fc06223b20d4e3311f4660f9f0d2feebb76fd9942270fe9e30cfaa41750bc8a22a9f0921ba18e4116d0f4c34d48733d47dc3d9c616c4426e64fdd33a750501d9435a606e62d6ac887a30f2ca2fd0bb3471b1e8d7d1b6d0796c49a4c9fc9e0a60e084c48043a260010d5d039b845d820d6a86c87ef6038de4afeb46f7ec5adfbfe2f15298abddc87f6fd8a728ee0b8ba6ccb0921ba2fe65d0e9ab3df0429f93bcf086891f81e974121b3dce43bd3946eb40113a29ddd32c5d6f6f138fb86c16c310642feeeda974727771487d0d1ba28268bc9831218ffae33b07a5995c472bae3515a398915b4bba0d07c79c63c1b47bc6a3a5e2333dc682e99430d5e7ad8910f45eb4b8dd4b9d73fe818c1b1c71fcb0469863f8cd5ebc9f37e3dabd4e42a94a6034b8623341c132f34287f9e7ce29972303850abc18d1b393fdb5cdaa88a4c5993fc480300fa62ed736b7149ad816affda510a6a944ad47a0e6f517bce438ede24cd102dd6fdf80bed8a39bd29ad2b7bf1f356a4305be1450676a13ffa9d94ae944cd8c433beed51517dd01eee0152b9e62925e06d1d10fb670522983d7c16566097c9167489c22bcbd49605cd0ac0c4623da21915c57425eff36e41299f76763e82f3d645e5afb3a2436f61e4abbbbacd2856531c4d1416234573f0f9abc99344be36358aa6d9ebe23dbd097a4ce85354557a78a8afbecb1a0a36187b97c5214d48bd0e62970112100c44df6c0c75856abff9405d4fc557040014a98856592dfad5eac4b9895bb125fd85245209461dcb846334f5dde55d54206dd51fcb24acfa99158ecc0ac15d7d9939da2de9ef12dcbc1ce2a0d70e652805860a7b4dc08a2e61212f1dea8ab400342029e72a47f5b0bb96acd4a3c237d5048dc1b2d5dc586b617b103dcf0f4876fbc20831f8eb9273ae990555650f4c57fb88d96c3c8cf4f92f2c517f278d9ee0b4c7a9641f300c7ab041e1f9d2e0473747a227f7334957881195de44613677373d65936f10b76b7408df0882f05173b3c401a9b9eb951b090891435f2286b7f8cedbac54e8697960c653e1c0295b3df6e81bd8b1558b190b962a001086cf8d14272d67e75a59229bdea1af70fee1317e5cff862f27208d9f08ccc0117f52f76b3d4bd22c39e8c141a053a0de5b3bb2cca08514299b15a689f74a61cc6af75bd06a0a4c0a9fd21f247be8a53119198106673f638a5f69e1d51b90be2aeb0c370015ffaab6ebb474321b60e77f0e87e4d1fdfc88e005762cf96113ce2911c1a77528487977bf8acfac693927d89e014cc921b552fcfe20d4310bb152b01709e74741e886e2aa1d74ad20c626181bc12f435c0dd6d489d9b29ae09e43c713e22c5d95f1292188cef18dd193f5ce4e32620db0c5d301e7432c9b6daf5ae7e813d0ef272e8f7352f37e18ff74cac2ab645445ad2a88afd02c47a30a546dea9590b86799bbc448140e00b3a25ffdf820a06ff1566ea8cb65e7342b7151d1f9d00bbc0a630fc70520ac349f4cb58920ec056a256906b410bad1d6a17fea421105c5936ef4231e1cc5a58701e6d8f3064cf3213dd3b842baaf33c981d475483689c5fefc578da66ed7948ed37978b577317a71433e6abbaaeb2516a1fdd4b26e9a25e7da9323de27cb8a59203aaa25780cb7f7cc00636718fd168edec98dfa235b0abdd0d0defc5514ceb1c24a93ba6e4062df7146d5645d430427479d1b9d88d623007fdca989e2cdf6edd05a8305eeed7e86d0b3a47bf446a15c0b33457b08940595a5a83596333dacdc44fcfcfe6732b9c14978f6bbc5a95ce5d09697dcc7ffd0e76f9943f3c91cbab640c1460d4b588386c6224157e966ee11366a85a4e4effd07cc155736a5fda8c538ae6a3325ce50515bfbe5cb00c3d32d18049112a02a103c5f099b599a25f5ec0ce04ab79870ad97752c75cccfa862babb42568c35e6083f72fc35c3b275fa7e76b53fbe11453b3437abf561ff5d7da9c8949d960975bd96ee992e78362b8b09d513423b1854ae90aede8c889459e731d48c182da4e50ba9b9748011a37df356fe85cb3511785e98ef5619af9cc32187102cae164027215414515898a820698b142b187c446880e6ed7856f140056811c2b72bcb0a4564df219e0385ae2d6afc81caac22614a5909221acb58d5ad591191fe459b7413fb9b6bb4cbfe2d66170a4631fdf1560fdcbba8c0964e610e845f05278756b68420d85e5772abcca03c6d8350ce23f1eb8dce1ae04a976054ceda4916f12b7f9acf055ff1a0432b483a1cff432df6727d1cae7633ad257f9c3fbb0cc28da9f7f8d5e293772d5ec02a9862ff12bba39e6b505546c1a0ba6c96239df859708878c001ffe071a36c659fe56e1524dd57641f30b9253033de8f056ca98bdcb911fd9808de2be4a605002bf4e7da400c1a15a55bdb113940e9e70039d77ed104dc0ce04a1a7567aaa84d2950220104b78b798a204e64cc9c43dcf71506cd4610cee0b6ae8009d38b9b65664b666ffad604778c44d35fd5faa02cc5d35181214e6bb11a30b8507316cc5a15658c064d0a60f302c42f1b1fd60d2407b390cf2f82b19e4ebfd01a22980d9bd30ba25980a8b25679d4bb0e4bd8c6cbe9c2014b0f1dcd2ba6a3b93909e6c7333f96d26475be671625d4fa4ca4db36f47926f4a2252b84700513a28527575059f086dc389d06245f5802213975df6c4e1c0cf263ffe2316780fe1f9c184235f124b8e852b260225c5354011c12833c9b7e1f4bd6427e2fd2b5fa2eed4caa87fc01faf42b0dce6f4c5b1c395a1ed55b6e020071d2e64022fb0e474e4a8af61fbf2548d0f3c92ae3741a6e2b8f6023d8c86dab6ffa93d202efe9f2a2464b2e46a023365d8dd4c4be967906104515bb5bb338b10e60ac1795e17e3f4a405fb54e44b5e88c7ca2b13b83ea2e89bb7fc831ad90c2a1fc2377ec6b084a8f268a59d9621bf6e8026c90a09fdc5589721a95207b85916dfc6c3f9e0ce7250f08eb8874e292e3a4adf39d88baf45472dbf427566d23a00ac211ada8c98926b971d3186c8b9a181e11ddb500decbfe43e637290bb5998bbe875ea235e10470e521fbd6aab67a01bd5306cd8ce82e1b010d02bc816e84f42154ec50d7e0ecf703497c2650a842c5eb0d956b842033c5dbe327cc3ad32c6c6a7c30535aeb5b216c6a919023a177815fc4c309b5ed32f687720ee3d4cbe31960154a1a5d680be9c7bd666e8987c1f2d1cebfbb08e8958f34db0069f59af273dfe01a8ba8443ef54382295335c3b57f80b1fc44e53997fcb002426ce1853da283c85ec26c2bdb8c65c586482032c85b4fe31e357c606afd5be85790d1404dc27814c106e76f09d72b3919b6ad32a19880b2d5a307eb35382bfcb5efbc050432cbab6ae57e395386f60f4133817c2dcbca75656ae7f418affb8f00b1650d29f2a0c01f915592b415c1911612fe1d7fa0fef13bad31305a910fdf6f601b5d19adfee4da7e3764d882bd8439d14d09487302b38485aaed006ba8d76fdfae10d77b63ea0e27af9e4f21a941000f702e9a0a61c7ce781454470ff0f6ae8ea2c278ab412c50f005cc63c69126cf1dd1315b957a6c08823aab5ef585dca5a215186d6392d1c818612264433f6f869942159a358310b5ced6674589c12d0bb913fb63b1f5727b0046052ad4e81e8dc4aca693b8147db359a5161eccc414971f9ae14276689a5c4fd79f3490fa6e9433ed8d9403a8f3422736ff7fa73d74ded7565e85c8ca90b7089b8d75d2aee013bca4665adb3e4543a90c7b3b563eb6377c84c2288ac8d15dda302869f22c05e2277c09f372ed77c7941dee0d43473cfeb00212c035c9daf700b2e2991af48fddde720d9b1ad87918fc3b83a65a3ed24d63109764c9b860e196a18002345ea0b434a612b3a2d2a86c0e0e96086dc0e5170e1d1c05eb555450c5c654728bf6dd17422156105fd474734030b0dfbf66763a9002b379b0728de54168f282d02a2f328ac8d724f23098a843b1d59ef45459088ba9f8c6e0d6723046e06596241080656808b465f144adfadc11c342758023443d677610fcea36221325c25f40d5e2fd42f1df8e4c861f7097cbcf3c23d50325cd37ed0a84deb571bad0d7a48b3ed668f89ee467b3df496b5b4e433d9636b6a9793f692e0045084e4bea4401bbb750ede1b7c2ff2bcde246e2ff7bb9109f30a85c8c7cb83d6e7efd82b014d1efd1385529922b458ae02cccf215d969b01aff692b4432962169969f8f4faa999c0386b372adf2373bddf057ac6e0267c66bb59526af6a27128e9d053921027921b2ed64e6bf009fe29ce10081cae4eec367d04e23d0c1aac7945c3db646a500a3cf2ff25ad038931de4736cc842c040c08cce14e7c1b1aeca302153fc405acdf67e5d91b35c12ec748e01b38e1f19ec62ae30baf60d6c63b0e36fd682d1f1b109b8b6ddfd1d869909578f0f0ebc34249fc7020b673af66df77efb9ccbb56c4aeb354b6c30ee306d571b2d0dcdfef67b7a09e2855394bbe44c0478900acee73ec88f3aadcfa3c9fc74dec605cd78850244413666fdd8c23d08f87490d0c34a7ef97190e08f14e7f4eb3609117d1cf5be8ec145003c83e9aa50e2b2b0d3ef4c7a1f8ac3087e42bb89653c5242259a09a70574667a76a53435646ebb417965ab665dcdf50cd75c9a378bbd90e5c1438aeecd99cfdfeaa8513b2ddd2670b54dd9f4dae90d63e30202209c270da56e86e43811b1bcc37d7ef56e37a974ea0114961e8e25fc575da5784d08fe89403f2aeb0c1fdb35dca7a858017ee2a94f0b67612407e2ff3c96aac83965845df6eeb4d3bd381a3dc863943f44ca5d58f8fc574f2ee870051317e2f195d4bec86f07d9cc2a6a7b525fe4e6ba3ee96c3e29c942e4734c1d689fe58429af2c098772da93dc72c0d695aa22dfe7526fc49db4dcb35f151e70059911a2048f0aa88e72a70d8178af39814b9de82c66b4768b35e8968715fa0c35722549cd700feadd525ec9e921fce26d7e49c5babcf95fbd378a3fe5817259b3ada40980addd000528a52e3a62415e879fe2c431d6afd1232e62302616b2aa7146fde5ad096806992649da6a84494d651f3b28612c600969e344bda9143a8a43024dc6680ea650149b8ad965f8166c20d28a38bdfb1923ea241a21556a4bef12c542b5953185310157b2de4ab42e36e1cd40fce524677f576a97a0f8ab050ebcacafbe9bbb06f344e296609473abe0eaba5cd8fdedd7a8cbb72700e39e3d59a6b7c42fa9b8d7331b70c6c8b23556fcf1141f8551792acc10bd0216cac3baa3401620bfb2dc1001b919f0a08493c898345303931860ef39e2aa45b37af0c4534c0c11d997045f98ebbcdab65658ca69a8cd1b53d052619dece444467a11fb152377b8ae0bf0b509798e9d44b1ac829bc581f63fd638051c0d1071926d08ed2315c0335748286fe8e8080239ccf6bad1f91a9ef6944e1e8c14f5280869ae37d0d3e3663d050259a98f1f45d84b70ca5eb5443d7fc32017b15ecf6ac10e7809443382b91e2b6d3a56548dc7f1bc36589dd61772ece6c15d27393973a82917da28d3cea089916c7aad0bc56d9f615a2f2370c4559489a2345e7ac9649c009f32c5c8b761293e3d80694b445c47c6c3cb1fb4b23e6ab53c32230d924ff9424716740205221a2877dedb80ac2374e9e9093d7485f1d89fd0bb5621ae3597e978b44d1d4dd0fa2474177dc880c53d042328c1980361bc3f08a4304816e28d827f7b6df1b22111db26e311aebf1a763ea44b2885b6d9f0fdb8b457390b376ae23608604678de5cb982dae666a0f4cb19afeb18223056d4a2f5aa325c2096f869c02067411bef8d9c7475661d6bb2b853abc9f8514fafdb94fd3c6214a54c809a5140950827e57ec73ae8155232cba6769ca7d6fd11b61014894bc7d7a072a727373b04dc4a13b6ed60887d2dd928e8ea669c25c15d324e9122eb61d73754767ae41b7051fe148011702fa6c1e3acb20fd86a4336ca2cc87d806cdb689e6e4d087960ac12ec3290029635af8d12f2bdc65c9d1d1a4c6089d63f995e00f98adf3303075e87f3052f263884fe0efc6a992c1fe49d4de687805dda28c050206e79cf837f4880aea761c741bfafb533eee1fbecff9cef7fee3ffbef3fd7cf2c50c55b4c91336133e32d2dd9e425dfe092a34595ca349759c60736e5fb06d0e788560c0d6dde3fce1f9dfe77deffbfef39ffffb8eeffdb7fd67809f300707e787c49f8cb215a37df56991f84f40b56988c4dbffcbbb823a409b0e4dc684d167bf5fd1598f25608ec3d4420fa909886b954ab12ff0702764276c4206b6f441972d098d22dc402e898d978b50b6711f1268223bca0e7c6e95f82cf3dbfa17d0537f144355c0134b517004179716939dfdf5f93653e4c878f605894aee0c9a4665f821f5953af00da968944845c2a973d17729ac0d3b091ad5f6479e040a0274b0e5eebc87adbb34f52917234b3718b11354255175d42228154b44525285748e58897c258dad25de9f96189e540e239c2eeb8c24a242ad193e83baa81fc4aba88b7726ef2341ea27cca5e9a20c7e88598887da27df0db592603ecad7b7533a9dd45bb1b873bcbe017d13d4fbd5d0be9d07285ae60e492eda62da660da9ff570d8567d5a0ad196a6f4d0c2af07163a07f9c55e4ea10fa31743e89d9092964229a475d0212d82b5e45d7829a056e1622ce17b90b6795c31a06bff764408afe388415bc2170f6b99d8d4024b7e722971eea42bab879624071e967250a3b06542608bf6e20f3a8e6cb408f9f0064067844e065c61b174329250ad12c736ab381363f27a65940a8810854edbb54f126e56a3cfedb7e3226c1d16e57439b22b729bd930657760395366f31f9363b86cd39c8a2e412482bd0c2392256d02cd0ce7e14b3ac04e9f76967a93e808cdc35ef4f513a410073dca1863f9bf8a5b747b3caa10e1babf5f3d6d61587d34c84433c53d99b49f9f17294bd8b5550340c17dd323cea6931f8268fe5a20693605202d4b4dd0e919f4e818607568e1d73dfe9e5519ef5c166818449862489333e860a96c1a6458ab611db580989be30542c71c68fe39efae7e5ade6a797a5d34e4c02009c2354125fabdd6cf746b66614b80540d9b750f433d5d571128cf919944764381421385c9f37ac10ba187052e8d731897e009029cdcde392d99dfdf27216b57cec0aa18b1bba1e7d647ac42907e0a5b074e48d3347e67b04ca7e5c0ef59786522f0ea0e0ade14de76eb6c03ed47698a508add8a9a724fbdc5a47571707c42f8cdd8c7e2ab11fc8767a057c250b883e8fd88bbdcc0120fe9e1da0ab4b6bac46f675012451217d1ec2a0e6a53fb2d49a9e7a843adafc5d16711afcb42e951ec3f0549014de9832f2df49ba099bc41a70f58d60c987043d4120c8ae70156beb82686f4137fceea1919b875f521c4ea739f4ab25182fdb9af48f2e0a838fc86a893b2e893cfbd7a9df9f136cfe39af941fb56460655420c11061971d70043e73fe22a615c5c69f0f4cdd9d9e21efbe042dbc802b66907e5023c2f45ab681e1c7c81592250f50350782bfe18c58c6156162630facd9bd5018260efe1dc103e727435803188f671761c74ea1c937c19a10c47de745ea1848f66a088f1459d69809a00cbf9d510d2e2830b4296446676c4c476c54415c07738bbaca2a1667f5c1094d5cacd56626fb0bc9799c89642ba0396053fbe19d1ed7c9154d39c86e6b1c791319247708b2bd2561f22a287584440528fcbde107f9453a94da079321ccc222222cd67c6c343d2bf4b27606608533f140ce0230cd0ad20fdd1ff1b45af521db3f0cda3f87bcf838944190c5e79374dba901f01e185d5ee44359302c7a599d7e50fe3a6f30fd141b81b28d7d6b14bbb0116d40699a8d828f5c3c3a5cd304919a5db888e079440a947a76ff33246f1aa087c0365934effce3c51198863576f4f1fb424a6ff3e9c8cfa8d3d45e70e26dbf1b7c943d493dc332ae2740f7cceecde3d86c514ab71c29c5d7d2d4a67b64fc9fa43c11b6f771c96d2016f7c12a60761c0ea8de2e92a79ad394d59af997c61d358e7c6e013d5527dc467178c2e8c785f529a4b7e980dcdcfdf675e4a018d9e011dd138fdfd2831208338e735af072b1b437d454ead230c491517e4d70183b05991083b9fd34ccdc3cecd9a0261074065df19496a969993577bc5e96fe3b8c400574ec561d5c2838ff7d4eba140989e2e0b3da8be027af978ce6e115953a62c175dcf8d1fde6067ed3db74cd7d48f51018dc720f2c3d07d2c2a92a281639553c4ff5dc5dd1b90379ebf4b62b6beb890bde21e83bf50201464f1754c84ef586e3f754849f96a409b659e3fe01c428893047742ba59ac507f9e2f9e20b7760dfe3b402175c5659add14087d7f02a6c25053daae1175516bf326b8f8f1ea1e56958ca01d30aaa0e8f91305bbfdc755c72336ebbc79e8099a2230a580c0ad0819326b8994154b4f28695f87533e3be436f0a698651a1fcc4ed9634cfcf4d72b8b7d65b60ef05f0d15a09a92e9e9ce4358a67d69337b82b5443c5ed580f5e611868324721294b0983234c4c05d52fd1082b05c6051efb2abde368df9e4108bafddb0d9611c641511882b50a256829f8122fbe4eab5b32e4ea8f6e43fcb75ad418d00ca1c375ef1e23a65700f9769e1c7717d187ef8a83640f25b229a8ac782db495b32dca810d446167d832650d34f710a751b29559cc36a3ccbb45c3f2f77c014282b1a2b84cc1d5ad0117757da04d403265af10184ad1b8fbc98d7a8a678090f7360014e78ce30122d60ab582d190ebc58f70c73656d204649ed603576e9b50b32774118a5f3890e346d6f492d5b0e5c4543e252f71846ad3169aea7f2805755bede7729ce8f4a8ef1c69f1e4d5df69ecbde6a7ce061908177bbd145320047b6e06409b48c81aa8ebe5935609c21691a69d89083547e61b0d8af441d249e22c43545e971613b440014153720b1ebaf004e16d13abd8d9b4610433bee9e3229ac35c8e92bce13cc7976541312d4ee8d1eede17cbac5cb217828852c4d0c5067e3715b309ba1a6717e011c195d069179c79cc49411fcfe5f5373ff43fe09e218b0481fa77f3e495e37385ae7ec4e4fc18ca591c8352d0211f08d7c5a5edb076b9a855d241be961c969080ebd5acffccfd3783fec515e7179be746518d56db010a1bcecf99aebb7763582796206d92d6930f582758af0c0f0fe5e9222d3f34a141caa081c87a23a97233c78d28c462287ec671870596d84d2c20a0146023145d94cc69c15128a72f5945cece428f35af775dae9cfb6b0ac2e4417286726582a757dcbd571358e0fa67b0cfd8ff49ae4cf916e7d65e1a2cc0924759f828f96638907730e1061dd86180a3f5de178be8b1fe25823baa48f6c9ddde511d37b8b9c46782848ce6ccdb2399e7ce3ed923496bba0aa7b031361cf0b841f0ec08a54eb053f6bfd862808eb24bb2e5e6f6a5ba27449424b3e122b9b2649b09716fa6d1d0d66f00bd04f40b40c5c40db80423a21923331590d2f6aa203461761e049472c58ec95b756d031fd6be4b8ebca01ebb7e4b8388c930188e51437423242a699a357c46916d31797eb153f62dff9e45a0a7e51ce4240647d5bbbb4db2ad3fdb318fda062bfee35afce464efe1e79ce35e02ea271916f2269bd66d431e6af5ebe093c1d2a4de46749886f69de6c814449dfc2e6ca59b05c8f8e856494aacb6f61774a214e1e2bf2173f80b26d1a895fbefd108e0e2a4b4313769d844c98288bf687a976290e4312ab7db2ac005a8c515fb6589d0296dcdbb129b46eb18e18e13f34a5b610b72ff53d03bcd3c2ec272fcadf4793796ee8a1e0196f08ab31aa68b3d0bc9dd71fee9f40df6fe6d099e0841fd28671e723c7bdb1911ccc26d6197c4ae2c703e2bf417d5a0f568343d46636534e0b2974a7cddccd816dcf0b65420dc3824b5ca2a946f8611575a2b4d7a056500c34db966f27106e111b9a6c1cc3ef61af863a179c8cb2622755664d503774e1359bdbe1e13a3980311ae355378253ec99b8d7aa96d5fbc4d4327c94cb6903502c463f49e23c9eddae5eff8d9d5e46ff44d82cd6ed9dceb7edc06410e4d27f3f125120a45f69a70ba661e9e7b2766037cc0bf2aaf76dc075d1a54856ae2300b2d52fef3402798feab98d7cd2f562b3dbb54c641240587c43fa9ab3221e91fde81107deead8995042a23e29d4221c014f04fb5f0852604d0b489707defd046632fa3446ac4c147837e69c3c5792447a998bd6495d5dbfc364a8d76e0f7a9aacc1d6187e0fdfb9a9a99740661098724f7e52be75f3ebafcde444faf9aa8c326149cd515921f5eb09b404e6e35fa0fbae01324a3a4036862faa94ffa38f2fda198dab9fc68de6e46857434d916ebe0d0fdba0057589951c6df742ba1b206468fd86276f1402f0d46230ced404cd6519238af2685da32328096d7726ac193b4ac847846365416ebe435b53416a0e886b637052e6e81fb021530c2b93aa0872971e91883aadaf94b75d77dd2f4667c4c781565d91cd627e4aba818c12fbd16d447f01d069f1425e0ad6689f088a6f30fe0047bec1be3a50869b61f23d5ca401021e9feebfb204ff8e407f37e4a901450d8f5135f3391772840b37c9e5b89dd13a1ae56c16178c8c08a3726e3cdca94b589ec91c731f6d5b91b4e1c2e3404d7b4cfbafa0046bba8790cc0ca451fd75b770f02410f3dd5f1ad5ee8f3bd139bce270124dc543690b5345a1844e52d2cfb813b173ec859549ce5a0978e6191324ff85236d9c92314979d112d55d4fbc2e7a4029dd40614d8c7d25431f8ac82c46a99841c0c8cd868b32e9b5d366848edc6f54fc025b35bd6af1e2ab4b34d4e940b68c6a3ba18e9955f15505a4cff79098c49bdcd1a023127dac736e4903fd962cc5080daf8b300d5fb0139e69a8c98b0099b8ffe115f9c8212f21c024299335b099c07e56edd5fa9859df726a9dcebe2be1b5f97e50d4bc7052c5bf58eb8ccca4b363bc34cc91067e5ed91dfbd9b613f82fe63eba2bafc30611827afe94e048ea29de06a39da441b9a4a9bf82becd3ce91ae19d3ad3e750b3ad2331f2d9d50251eb2b4a176ed632549b0249fe8d63b24f66c67c49c0a8a7f0a3a733d2cfbb13b9167dfae859cbcd7beb8609c8621fbfb9cd95c65f4f69c3931b60ebb7c883d675e2738e2e284a8fa508bc30daf339c143bc1bc82b2f95c61d8785c8177e96f854a94294f55dd0a78742af086ad882d6fe4f2d2946a33ac6790007609b35e7d2b88023580dd4d7f5e865b0af98bc1e701242f7ebaf71b4b297c479f8662c58a02c8e5ef5b15051b1c1f9ba0d5fcb74d6d81c3ee878d427b2b5cc18068da4208b04cd535c565ff7cf1788e88513c00b5e20de3a4af02d93e6032041a40fc10900aa601a5b0ad75e1c2d2539d626e84ff223659b3b1135bde1179ac0d307c11d598a143500fd32a09364af559fc762f49882e6629a7a3eec3b587936b5a57e9de31d2b59b48754281d2343b272814bd766e2e4bd254a6255568229e4730204b451abe967f7319eed1b19b91dab7d0c51e188f70481fdc7bc16f36077d392cfe53eecef64fc9d6e4699c1c7c1d9bd9f5656b34039992b9c739186b78a0a1c386a1f0be2d263fc8d18f822470f957d361ccd6c4b4f393393e248095f91b71fbca64ef0c95e3e61c2500fc25f675fa4bad66d9eb6c5e28e794d7136e8fc2ee53ed37bfc933ca50d3440f237db7dd0e6c44b1134cc6ce59ded23ab9a665b50298700c93b8b8ba2d856b1915fd92c5fc5ce0b8128b864a1c18c8fac8cf3079852287aeec1a263d45cd50dbacd21743fc0cfd3580a38274b3c5583532fdc7048fc58d5e2c3b1032db77278f00d43090a82ac064c5362f4596a2f76982f2a0027936a79e63ff3b4360eca3e666af5ea0c3ce2c34a23f0b59f812c0cc1d0488d12c23f44c2ef4286d6ebace5b5854d8069256391c7953abde303f51cdaa04f837685b36c20deb92fc16ce6c8c78b6ca63ac9fca4cd803d4ad2d40136868a8905ca58cf693ad8e374dd337358822052db85108eeb72b12fce36dbfea75bfb5f02907d19d12628a6e26d07f722e96ae46deccf50892e195eb09ad95c81ed42416c401f2575b361ce80de5c8999f02a748498023e8c9c7700fe131deb54b17d1b91c0713395edcc90788cadd8e19998e1586e62bc810428c48c0cdb4e71669564eb89e563a5be889b87273e78eba9c1b697d32e72d7598548b6fdce915963f5feeb1e06643ab8c9ea5b8b8941b130169d770ebfa7efd9e17539af52dd28de6d889c0941d1e1fdd365c467c6739d8aeca886d1870b0d423ae08b497deb80b343b132c47968201b188bdd76838cba32b1dbb266ced0b829b01e7f2ba6d6802d452cfc20476e18eb45b6af0dddb01b36a86eaf968099d6510b1b76704763d884c354925bb0b42bcc10f18a123dbb80c46d2b34cca7691f5a6c8704d2f2c0a14575420f6d412ea846200f5b6516fde3a0d012ec75170d88c3aa40418885d0661013915e8355fb9fa3e4368fbba2dc0d662f7637fbdb659fa36050c91f1dd04e1c38f97eaa5255e8db0df1b3bf9666c13161dd4ee12e1fee77a755d0df77e3664f493dec4bf6a1c3513959adef1be894635a02d827367fe219b40777660cc5e4fbf51e263c59d9b5e72a3fd448cc1d3f6d2954aebf6d3c6b2170dfa829075cc1e22c0aaa37a378e7f0f9d6c3490cad60f14dcece5bf70972ddc92a9c0bb70fda30d3bd111f4d665696ef659aa7ad93f4b423d7ba3bfe30affb7082def19b3b4bdfdbf35df565a2e738a63961fa998f69d15ed6d6ea33daf04da4f9da0b417b6c287dad3cf8ce836af4e48c12c8329fe54836b0c439a327c136c78e567f28f2bb21092d814314e8fcf68441241db59f9678bf7730f47ad0148423e914caf16c21e84f05e182db71fd33b2e7f05b14b8bbe82463786dd4f57db34e5e8f3e869d0a79aa6c288892d189aa6026b628b67a6fe9733c310c7b0c934553694413011294897a1a5075efa99c7a2430ad863d5df4247009604d28afa819937fef121d4dcc7bca377e206ee3e30e7af4e58ccdc0273b5fdd618f560410c47d5042c088a099a5f12962b4f38c1a42bc5bec2ffff7bc05e0028af878580412034bd8b18714da314ebadbafce18a62ae15df43a0f4032e8dc3df3e8b5f6618e317467ddbb094685f3d50862eea23cff8d2d0d365a65fbf60de5bc2f25988137ada2705d69de60a52c1737dfda3bb170234cc180e6b908177dc96e2af0fe27be280430677bfb6e6032a607be0374b6c387afce2fa0d48ef057cdbef92778e80515fc04080c71bcc24ce883ef181608326bfdcd5da564f61ab809d3c61d96c28ec83a684119788f42999181b3c263474495414d9131bdc35829a6bab27df274656434d228ade40137acc3a3a2c144dee60ec518026f8dd7fcb9b947223d23d32c679285dcda4f90819baf0395f9a6a70b08393a794efd048c71670d02267403b142541e8b75b69d2b8d4e57abffe12c3ee9134a92067c2c00c53d513b38db9b5504a07ecb4d298ca07988a4a271e7704b3be4c5a4bbe6b78c72d4db42c6211ec191990ecc72d9134c64b9214f8c66272fcb3e9832627a46524e278c5e903d61456a09ce3f4014e6b908afa4004b822461b140bcc7121d4187aea2cb94ca3baa8de64aecdd1cfdad80936d279c58551b939a422d6004422d4823db6ae11b6da3561ab2c4488c98e693dd7833a23d7f9f8bb161da0c1eff715cf49f8f2549ecbdbcb4e6c99f2d8866dd53969cf9c305ad20fe261ab4b14e15c63922d2804a652639a32c5e223cb10bf021a4c93b36b6f7c42257ee60f48a69a3f98d35ee80ab933d2f0f36cda81107ee257180ce80f5a20a145353434e74dfbbdd9d822c3123a2e83af13e5373f10eb2c5bb8beecae0d4c5081b32a6a2514c4881e5c744a6ba362386e33d60405272368000c7707a3b917e20820885e4b0061e1e3f2da9100c2a2bf71f71a2a0644b7a4a8ebb697d871f0b1a513a658dbfe4042d47e043e7611b29ccccdde860348c442092119bc56f0cfcb5a7540289f2dfafcc6e734e2a349c347cc7759d020f2c8a74d98a25ff5d0abeeecf96ea07a2ccf2e875084827da4db6ff611759f31a5acbd4041807d5f00028f246e94340f85574097af72a98405ea0eb3266b8d76129cfb232e991653a427fb10e9bce3f2bb55493f021b1281de47dd658ae00a355c09d806b786401c0bcde9500cd2ca7e30bceac600275737bb38e49998bcff00398fae99d90e88ff3de02e07872d24ec3a1c5a91bdf1d61733f18ab49e423b9f598cc2408a42085c21684dea961038f82ba760a060d6f15f59f719f21927bfb10c25e7cdf5c67c078791abe6dfc208615e0b17b033113fb52c39f3538b84d00de2abab3d7b60604a42b0191fefa298d09210425ddbefbb101bb62f447f5f7329106971b3fa875153174e60f4fc5a0353b6b770a0b7ff25ab6a87a0c0ccba178399ddef59c1cc90b56e775bd03a7ce4c2cc2f8fee7d7110a94d3dd3f7c379241da0d09b14c9cda839f52f16b4496782b072997195dd5615887cec34e709beb9c22f10e538bf5aa59f35bac64f88cf7de6fd84a6f38ad3e17c00c668310b0a544d6de4fa4a883d6f787e7b6385b223ab0760c6d4725305d1796967d3eb1519a734162ec2ec97653905a4acade8229a6b31df1afcebd4edf015223a4295308576b902d34a3ea147cf60ccdb91014b92e18b55e78cb591cf827a725635b688d8f71daa780cffb44de864d208a616125f7bd876d2132a7a6831032ae7cff788c047db404972e7666d9dafdd93256394ff6da826487880448fe4be65315293c71b2fa282cf06de4d8ac2e574bf31646e857278fe11c12ef602a5bd5427ca1fe38e59d717dce3e484914b228c4990616a6e36d0b0a9d6d46d91e98ba8e7d360571ca35f824d1ea758b5770d4deffc663d8730f7f52545cd4204fb70f2baeac48d32304edc9e5db598fbfa892d08485fb87448e6999c3b99019830a83b30769c8099e39c6191437cb58df564e36ffb2c6479d92927320d03c0a4fa0a80f4fb4b70ae64f3dffdab1bcced38a37535c1a3e9ff6ac05104f296e10399f89bdb15e36406566bebd0837c1af7703d8808dc0ef3ad219b9d25948c40ea61a1834ef5f8c6067d31723a6fd83b90482c0467407257d5c8521a377add94ce25a25282d7d947085b50f0ab79014df99dffde637bd25df72c397af5e5b97dafeb46ddf9a4786cca103ccb585b397c69606aa7e204807ea3f00f8ce8a63b932ef10acf6b53f3343f16f9f31d1ee0c8c94044392f1e8636f471c99bdc85cb044ff67a69b71279cd85d80df2ce62901f1abd0d088dc1245f96990e591c4aac229ca16dce0aaec75a175a85f40501d43ec3eeee85310db889dcc89a6cb8fa43b2b5f42d7236f99e9108585194c00a34c0fb4c8ca2395e0a8c1bd6022d09e8605d3ce6389a0932955f722759679f4b263ba1ba3cde0a88738e2a1b51c74062ee7d4ad99b7d85059bae38a093dea61ee6864c1039b7278dd37d2668f7e542ea7bad0e53b8a4f7926cf2ad604e1e8231b45f5bb3e9b4099d64166056822d7accab8b7b188598e07a62d620218cb2a71b116b9147797f4302885a3e1574455815b84ad80f0325c11e4306c67bd34d5bed015e3e95577b32ef21760ec0e035b4ad16bfb5980bb3327dc374713a800111aeb4c4d78aef7da5416d2a4a12b13ffa3bc15da7d4406399b85706e83562f17425ce89cc0ef7aab7d4b48837b509d6904a0ebca2fbd4b4983f17f258b1685da3ca70d7f60d87e212875e801bbbf45e609d121045e399d397f8589853a381f9aa18b625b394e37566d0d2351400155a89c7e6a0306ea2fa20e36dc7832bf54b5dc03a77b4fcba7f345ae39328ecc029878025afd62f3c8c1434651a7f32afae547eaca69a2a08445d69bb747eb92f0cb6c9a84b13a12f3b2b785b6ed5b3106664732c897a252735af9fec3e8af84146c13691c003e22159e80e78930a15f0b5ecf10555af5a1054da19221af112584ca435d9cb79801c1b0b1fe42ab5189b9b86948e93fe77d1464d43d0ecdb525b6b328822276a55324ac0276cee332a6092e35d599cddd8c45e9b36845bfb7ce55c62c94e9fd49baac6fbfbff7f124be02202b7307c55aad2707e660b959ecc1ecb46dc98b8d02adb309956c1b5fa48efd34caf2672f51df8405d0cb04c50b195b92add5b53858677d3e49e71bbaf3428cc2985d2e2f9f2adb6f119edd3a0b8cdbceb2b5d6d36780f6c0cc793d382904736af214c162b3d529b699c306318ad8ded88961a756a22ff848e4683f37f550ad4a7d45119a0158b4d673fa019d45d76086f0a48b8a57da6daf31f2b2cbb1a24d541e772e31602904349028a00360fd724e78d8407f74cdf81b451501184590c9848c2a129034932c176442780fece248cde27c17485e9f40c83bc7b098e039601a462c4ca409db6f374b85409d5a665c82881c7726d49fc22f3ecaa29c3445711bccfb87141457c41aa29e500e11d498eb254e4be666fafc4b5166ba6f72d1cec98576701cfa1f87f7e26da20e6522fd6b0b68bdbbd24a420182281b5d6aab8921d48d1cbb1da38e7db1e39df4bc6ec4bb46d1ff2bef94eb8127f3803576a25f2439a70453ef968e065e8e4437c845f67d826b7cd5431f2c18bab0f2809ee71cce63ff71337fd44ebf3952abe1a0d6af558f3aedf58495a8cda0a35a67e51eb40302819749229234bfa893a9093f83e895320e107fa3fcb2105b99bd27057d2fc2e20de2771261fa3a0429104451c2a86c82a7591ab32a5f4569c0574748ea256c002e9639a534e6b6f013a0a278f75fae48a004ac47776e6875825f3a661b5f5e8510cf14eebc2c79e153ae689667c5d84020f86039209de5d83c531ffc8d0582ba2064107cc81342b2ad79931c996acd9ef2ff507566562946ff1e0e2e4478378b27339af08280d382c6b8a3d3cdaa4ae94e7a1ae913ce1e9fca5deb4e1ef88846ccb9136e7a1bb39b9e321d966a925fff7b897aaa505f9036c6a3734ce546c04a16f58ee3a4004b0aa711f9a5be8219a88eeb8074801f1e8de6585324d7e0e4044a988918b8ddc5eabaad7ffa7615c5c2be77607b0f24fae784b4c4851e00c9a8c3583dd8eeb4f607d52ada056ab55af6698a7794307c00ff17759a5302b136183688fbe48cf05c4318e5eb0383ea31b5c6edc74a81ca846e54937c4f0740e2d3bc98fb570324a63c1da638d80fcfff176940d7d2c86a1b2f28ca5deb925ee765b8f52f3b45879a509f6b0422a63b57e8bb6c180cad7d88844fafa6cb496f3ceba306857fb0121fe0afcda9127e0cab0ad193d1ba7ac160b66818dcde5992cc73dbe63c61e188335fc9fc2dd3585e492acd607ef118a4348b82dd03031e4b260488ca64ac3a4e945e5f7aa58bbab0495a4927032901788a051d971a10f89aef5f816a14a61d603fee1075a5231e94059ae8f890f8e67c30f75b74df4d3e44f0b71182ea5a23cc8e977290db23f6139bd7181b403aeb475f218b16c76652a87d56e0864767df0748c9cfa4e642b1f7d55b9f29800a96661a43c46fc2825e72874aebcb97d178c2b8e762f67229ccb05c8ec39d1771091620692997cfcb65345446eeb53e35705f4af9ac19cb4b290597824e868d11bcc12dc697f39b77d06edaa234962cca400dd61c66ccb76d82f993b22845fc9e2eb0b8c8f73528d8a4cc0557c83982624d4a077a348dafe609c4d7e0f269d1e416b871b84a8401607c0cc8713483aaa00a1b989ad95fd27670a3a5fff754619083fa4d6d545dd618b820b35078ac49ab65d2d6a6e1cc5c62c05b75f6fd33de8ef37515ac590107cadec24f46a874d64b871be9e3b385f2829080192245ae3ed88e6224b7b028ad219d4b899aa770eec11465b555ffac85a69260f590a1d6ad264200ec362c638b9a64eec6144ba9746fb0f4d930de621f81f9204592cbf7353acd60bbed03e28ddab390ee998119367e89fa518d6e55040ef78b033b0ce6b53f8dbb94f3aed2f018053870ed2e16b9a4937d98cf0ac6a0a1dfac69805e2be6817beab632f217830c968858c8613baadd7c53391bcee6b9fd84485f6319440d264d5df15fb381b1b51b8e2236d1b2a8b846d0267928bde7446de12dc0839f019bf221ebdf62bf3bbd5ff8292dea080c3dd51f71849cef7e1e0862bbe91d8c2f70e938f0c51b71f384b1f6afc3f42ddcf6bdfd711ea62b944168b8fab9f67b219152a766fb47d2c1463baaaef825c04048d28f7a9988933fc72cc80d4677dc36580831f394a42d791506416cb7de22721b25c20074ca4a147e839f0fd1204cd5719d171c7f2789852f47aa6996b43a61c42d3f3b426f27e77428760ea9081b42f2c95d102e58c7fb2ccf288269e314e6847afac5ecd557deaa6634a56c02753cee23014747966f000227ddf6866c75b0a0afa02639df3afc85c011411097f7f0dd077b305992349336865fbbb925e608125a47dc54f54189b4437f7a2300a3f85046bd160a4f5f7bae13b4a7c8a0cd5ae2df9efc2d5a21700c1ab33331843b4dd741f414236ab8dda496bf32081a73e3a9373f2275881dc90d7120c57b34fc80f977008a4227af179722308f7268967c9cd7e606e18da0e33aac02ed40b69ad372e42dbbf82b033ed308b063ec0c8cdd723177055c1ae62f9f449824e372736d7e6e40dcacc43364b4c2031cc236952ab927ec81ba90fe1be54a78466f9f526ffc3960834f1016a89f5515d400abb4a07cd574ea3d88dac49a7bec1462c069d8f300086594aaad59847bc6f1e2fdded8fa5c99651f85859b7f6ea2dcdfe19f267e89c48978ce298f2dc0b20f7ac194531c9d664da8ff4fee06465c83cfafe7b13b9b7dc724b99920cb804d2048a0579f5f6a95802c923acdefb4ad4b0af46f4539e2336155cba4c1edff9d233b9f3e453115b29620ed1f887495271f518af68287e6f357e1f0ffa342840432c8164eff1e73d690557df93c77ef701e1c75e4f071b8f65106a813c1855fe62c0a465fa37ef6f374a29cd86663356fb4dc760f5d67bfc200b33de67fc0d16b2ff0522fe4100221ea2497f1bae1e114f197d44adf7078be0bc3f58f4b5bec6583a002c008b64a79eb7c241f20cb1c409a2a48980a4fde85c6227fe5a8d0c70650b45e9b4d335e3ca75ac325d6b69bd8cef99bf64462fbd564403bff4a96cad5365fb5ec1979e245bfba53bc9d6a1466bad0476fcbe1b7bea630a3fd732f6cc49af44352603d618f5b153dd68694f18af3208693cfe80489840e4d5e30f68f5f3c350de0744e3f1570e20d3c760fa345404d3677bd1df992f9aa7cf336dcc17ebe96f62274e276de8f7dc66375f324fff9b33f3f53d7d181367bebaa7988a1f8d86f8cde897dfeca3a23e5fad23a23bfed70686d82b3c45144fe8d00310424c124bc145602b35ec7db5dc11adbad53881bab13af951f96bd5bdff37f3178dc75b47a3a3dd88647bba59afec8868d9bf020a440cc5497f1d11cf10311527fd47114b3946c2f10422d6e2783685f38ef311d829a09c71c524c6971d118f1818aac454d91f57d1d2e22f90becfba6e6b8d5d47d41571d2bba2fa1bb84f17d11dfffa35ca1b99f5f575f80bc6cbe6eb6f6227a13b7e637f157efd568ebfc2affffe92f9fa3aa4bfbe29d5157947140beb971d51f6225d447d1aaaf14d123c058e023f3149ac03ee01038185c052262e6292fe9f88ad4cd2bfa1a87f47e1d1f37d0f04b7ce180aafb08779f01dffef03b223865a12f697182a973889ec5564ef8af8ebdaf7ef88fcc5bd7f5764396ba5a654069ff29c1164064807791b1fc0f3a74eb9c572cf8c7dd560fc05fe5c351758cc5767c5845d00f4eb5a30bfa1e8d9e492e7778cfab46674511ff98b25c384813062b15f16f82f7b853cbf87cc97cdcfefa08689304b21d97ec97352e53975b8cfbce138fc35f3f379e62bfcf964f2f49712e4ee974cd3f44f099e8331a1445191ba3279fa6b540058d002a1617e1442c33c56ce1cae64f2f4dfb0f5158ce593ad3c631cb588df5f82938679ad650d73314f660eff62f2f4df307c9ab559abd56e9c40e5eef6c64e9b621a99b0a646b94f91a990aa55b97fe5ed4f372c5b5f92aef66a5f1a46a174d31bc158de30672cc3d6c718cb27c956dfb4d7b4bb678eda01280da3524da56174aaaff851c3ead3d391377953ee77259ea4a7a67a6a6a2a064e8b5a7af331705adb8d0d0b7bac61f5e9c99b7277f77777777777777798707e75d23ecc1cb54a3feb4b6f27b93718624fd27b1f47a06fc7d2738582fb6b548dcafd35e266a448ad52a96c479b5191dcbf156d49b99fa63f947977dad8f3b73f9f7ad48a954a356c2bea9e7e292e998a89dcdf0414450ddbfa9b8bbfb6bf22f79714047589eefaef96dcde6fa2e775e7fdccde5832206f330de0c46eee503b21b0d1b9c58074101b201d847bc9707bf5d75cf98474c71fb461ed987483a98009e360629947cc2b3540796a9063be647ebe4f0617e87009e0c35fd6c84f81a8d33d793361e46bf5654d18529f10662150083d843eb8d1836dbc19a9cc990d0c16bd76ce6aad9bab613eae071eac218a80e9d32d0c519f5ed2c21296d83f4cd21f47ec2873e7d592b98f5d7db7eabc5f827f9634e3b7a20874014873eba2ef6b7e136bfe462c83e49b0fc15f35db5673f3d5fb786c3ff33be88d08246fa28d58f334e296618828dc1c8e50135656cdcfcc7aef0362f5fd3898b9e6bdaf839acdc3b8f1ec6c0e67a8ccf442a99b64ff7bc35f0cd071e1983a3ab98e644bd100e920b58243f06c0d84ae199cdd51856ef5c646ff7254dc5e6e1b77549d29e5c3830f406821ad31fb934464ff1aaee9505eb609befe7a40cd2394508694fb1dde4dbf45fa9b78421d817490cd9b86192a2a56ab15aec215eb2a31b25016078b83cdc1e260a16c0e586676b7d30e6ca6f998adc290d6daf6a4208d6adb6854b36dabd6debacaf96fb15aac9c7bef8a8a93ba354887243fe773745ab4d65a75874a2c0e4a94e08013dc80a7bf7afa98707e735b0d493ac99ed3e9acf3699d93c706316365002c59706e71ecc0917560a161293b5441bb3c8390d52a6d05d2b48d8ecc84d5bb85feba8fc33efdc9fd0818c736f698389e2ea193ce9e78b6b26823f7db264fb38189253900d18397da4f49c7eb64ff84e2852dd5abb4d3ba59ee769e378168953b2e310cc39f788557b87495aed0ad5cc712fa131e5e7dddea03afd4c735ed5c0230a273aaec4f9b502257a112f572287068b1e159b27fd9936712d9fd8828ee721bdde1550c92298865c43ceae4a98e86938452a0a7bef775e021c75997c1e1c6d51b819eeaf5bbaf038eb3375ccdd0d01a9a1aa7cd4c753e286b3aa573e56346abc12c1f17ddf1ef6451305637abfe3acaa370cb6e5fe9a40e6e3473d4a5cc1d7f2b58b23fe1ef51def63307964de034cbde4eeb66b9cb79d8d20da7841f54f42b84b2ffd6382d313332797ab4d507721fdd68555122541238b83f4a20491c74c7e5dac069a00ca61bad2a4a844a0207f7470933de777b1d7e11680a990ea1f91593f4b7be857b915d88040fe359fc9839dc8ac9d330175395b5c8fe515cc7dd8eebae4c58ef8ab2c270bb5c06e1f61e2ddcde5fdbec72d636a7d5b204998e4edb12f68733dcf6a50efd927c715fd658c5e8e6375ee112bc19d5aa53cc1d7fc7c243405370dad1add7bd8a6663b4ed6bd719769651f7069264916a8a690add6d5be96d5b69a743e7719df5b8db95eac819f0e4d0cee3acc7d97bbb7b690064dd57b17b75cfd5e751df522057afd50383a7ce9df78a1d91934ea754ae5f6bc5f67b6a029c41387ed6a1e0a978422561d5bdca5d01920a661f55e75f32489f3609a98cf7733af1ea93939646a3bf6d1fd0cadab1c42209ae1667c6e08ae45659a695f3ce837552f315ca5f76741ad97e62bae7cb1aae2f491b5f8ad90649906d8c6c71b215bae0cb9a6c894c1efbb361e050f7f866df7a4fc7fae46485720a3d2763fdc4340c6421a861209150c3c022430d038bba87c8cc011a4d1e7f9a4f4cf65550762c64ab3ea09bc737a2a5d93c8cb7357fb16a47ed438928e02931d09945e02f671234824cc54ccb9c588c4c6d72534da6303295c9f426e99e08966c99729986f5378f59a2adb9a53585acaadfe1e051c3ba68f6f8fb1cc51ad6495e63e90dd53dfe4dd91f4ce2118ca5677049c37aaa7b3cc692eca13896a1ce58b6c297602c9fcce1af3a221a3e1e4b57f85e47d419c6731f0f7cbfd5d388f5f6aa9334ac12750f54c3ec54f778c3be19d1d4c78546a419f70a23e12d1c0f4f308160c6d4443bc184446f6122a29b607ad25a98746826989e3a0b1392c6c294d4534c32f4124c2cb4124c433a89a530485c5a6badb552ce2e6171c412edca9213569694905a2ac288252855963e50c452132a4b1b20622936656906294b18885aaa40942362863892851047ba4039f2441047a69e1c3102882343c88ef4f0c311273e1ce1400f4796783842c3078e10ed70c4023ac4be80ea6e4c0b2e070fbacb713656d5350ead6fe558bb6ddbb66d96d6181437c4b2388959f1402caa49ec071b62383cc598d4106bea40cc0893180c4b622b702016a444898b0d28599144290a244a5a34a0748493d2942625209894a096946a38a2a48198129292529124a50b202909394a0a8191a49a5192144d43d2962e4a4aa26748a2d219480aa26548daa18b24d9d031242569189294fa85a40c3451520bed4292506300a98b6e01c94bb38034455f0069d6449096e81590aaf41092106d01241e5a05240f74059094b410d2911e8254d442905ce8149054e8a0232fc61c7df9e2888ace0b2e628eb0745d4885398ad285c007304737745c747709b785d71d3175578b8ed65a6badf4724746dd97a317ba2c8e863a2f46c6745818d9a2ab19a9a2bbc2085567851126ba2a8c5ce9aa8c48e9a83022ebba18c9a19bc248073a9a11a74e0a23471d088cc4d04561844847654408144661b8187979c2a8cbcc888b134659b6185d69e2724653ac965c5bdfcaf1eaeeee5ee976376edbb62779fb7afdb7add65a478edbb66ddb368ed61db234c1a2646a690923256048c288081246428e0873c58b952e525c8cc852e54a1153a83c216287294da428895a8a6234040c42d040048ad7d120e406d1dd30dc13aff37281e872b929e342802c1a5c19c0141d4f603be4689281121c4b3e462f1830282272a348c8056104e0c5461717979e2c01b8c233a5c61300ec6041931d25e4120da30a60a06006223a3308991166f42276792e136491e04a0453729ec8d82146131c25ada51b231b18606480082b03426ac2d07899e9127291c9025ef9a6ac9e5cbcc3f53cd02db94e5c929d6193b280a87a9d0c2b5cda517a5b52dd954108e7ad6fe5749752ae457d7cd816792bd905d7b97ac0d55a6b758de47d3a96971c6fadd587942259e4fad55ff55935dc67fed41a5ea0b472b666dc6e31c6eebe6d9ced6c872f57e977cf9f9969e5bc0ef53c9d96878e715871fc4b1db286ab7fbee7afbf3d5e7d405bad15c432d35f659d97b35bed6e1478ea1015c5923c41c9a666b49a83091a8a257982924549d16a414344454f50b228a9a0a126eaa28eb96a24ed67ada9508a0eb9c86f85376ae6a0954876eb94ecd698ec569aecd627d9ad138cec56d9ad77a80369d4e469d937856984b3e21ae1acb8279c154f9dfe7965dc9f707327eb3b69b62212efa17ce6bd87764a5886fde38430f7949b471085b7672a7a1e51b899a35377cab25f31f7d329da9aeac93d5d6a91c4887122c8092127849c081223068c982f5fc4800123460c982f5f6a5faaaabed46a5fbed4aaaa6855545455345a55158d8a6a93c1b958b60c6ea4fd01f96fa20c0fb609cc6d6626a0dfbe1d29f0337ffb203f3be88fcba8ef4f451975e4e18fa938bf1e53b685aa0c2283c7946da1caf44bd99659a62e96414c68d9162d99d216a334850d504366e852e54b13b90c5d708553060910c1450d4324714942c9b5e420430e34d421554a0b5cb2cdf3c90d4743701d4b1072e5b6fbdcdf9f7f476b9d84d4ce86c253e76f746e38e937e0cd0da7aeea247d99dfe138fc058e65671c3eace9b383eef86f9406d6faedeb7c85bffd9d2f9bdf7e357532880374212635371f8a3f4eb819068651b38db8005104273db346a6edc31afed6767e40375dadce5ba7dcc6e570745523deb4864c3066cc982f827eecb3864c306b6e6ebec6e6e667b6f9fb01d98c38c21b9b1b7bf3f7ebe066645d133a23b1a383091be76fde464432d4fab11fdde4afaeb3a8285555157cb2a828185a5151b45ca00f264f97aedcf7555f462743463f3df5f7504deef9c383fb086122c29a0cdcd55bfac8ae123227ce0f4008e1831e2a82ea39c54101bcef07a1cb993bf571c41a73a77e4bd4617323d787c1125773a77e8d38e70e8d78679d647dba81070bc8dd09b9e351331e4d9840eeba118793375cdc23097f8723593dfe3af8ccadc6ed4371f554b6ccab434b849fb7bf5beb863d0ed1a64684ddfffe1bf7adc4f973c78a252c7b686ce5f9c409d5c67d7d9afb9b052828ee53139b51b69835e54e925bc6e4a77a08df30ee674a84650f8d30f20c4288a9039a5f36f7ffa819c7510fb9dcc6d295fba7ed5876518ee28273bf122fe6440774e61e7336df9fb2a924797e3d6cee60467121d7b7198793dd2fc20720f4735000d78ded3ba829d99e242c3ba8835a68d3b1dcf8afb28736e8a2df9ee050c3d66acc729fe626ec3ef7d55fde737f575c2becee21eaf3018814daef1eff157f9c10e2cdda39793a71ce1e316f4fb72d6f2cf7993f2ecb73469006728338e676bc80b726e1fcc975128f779274b97af401e8bd61d8c359b9ec2f4747e7e9d783f2e8c9537d0855a0023db6da83f6b0d94de0517f7b1efd75e6f498fe61d81f8fe9d96f074e9eda160ba68fa908e432d9d3938dc5ac842525cacd7d40d64a983de6311aad9f321830d64a3841b1f39c797e3c68d4e4996f8b90a134cca5370365d9411d401bdc3f868bb263a25ae2a37cbd294aef4b762c941db380bff4b0c835b9f466b47693cb2b23f3251795c1ecf1af113df002f88eebf01d7f1ad1c6dcf19f115d0b006b7249f6f8c254f27c2a65be2e0806acb9c256ceaf26cd975f9e34359935bba901cdcf9f9930faf387d23a84c9c9e3e0cccccc0c2873d2bd9a3703452b1596de4f1e25d983466e1b9d4dc1eee151d500451e1e95930e04c6c2cf3ffc87e792ecd139d3af87f7c4b83379fc411368eef76693c79f0465578604f5660dab43fe9af157f8feb3a45f2816d94b5afb846adec1282763982ff0e2b10c7564c7ee79e71ad42f6d0ca0c440c790eba77ee943bfcc20a300cb37e8d21d077ba45f04fda8707f685e85f087f597fa704f7427ca5f9ccc4922e68b0be2868bf26652d4c79392cad75f95c8497fd51826e95f8bfce7c77d15fb474644529fd6c728dc6c9f86e687c8b0381a11dc62daf0af11412d4ece9cec628255504c18cd35b0a31013fa2ab47e986c99395008b534ec1b51b8a013f3b57a7f708bf611b2ef0f7e3173c854f50098a070ad983a98a0d002af9839be7713e89831193f8d48f343e6983163c6d0fc0e6fb1737fcfe29ea8cf05a59c0c62bec0232639da704ffe9e14f5016b9ed4d0fda1f92b053cc287bc59f6076bd4c76b3c78666666e6af93331f10fea111e7cfcd2b1109eb6b442442f6ebcccf7856a1f543f3551cba3f424364eaabf04034a30af7a73e4b1c6afdd471c81cf3536b4624347416b2f2caebae8e213de687c936ca5c507e18945deea73241140369f75a435c210d1173882a4292380d89814acc89a8312b3cb10273482c204235c4510e2f3069e15ba2bec8e2030f34ea4ae1815ceb3f3944aef571c8a4d092c15c6b9867540c4119274f99144652aa90d9b27fe3fba56860854c7349e6ca55272f7a8ced2ce7f4e50b272abc70e222c6094b174e52619ca284c0c907304e3770e1b4640b27262d9c8cbe38bd9085d39097a63158346d516baae28a262a2b9a98a8a2e94a5593142a9a645d9a7298a2a903b42627299a8e40d01443144d44a89a528082090c17a62b0291b9a8044b1a4f7a16aaa9012080007316002020100a8604e2901847c34c09a50f14800b7786425c60368f06226118c4501405310003c03c0088018000000c200001c213000ea1b7ea934ea7f7f290fba2a6279376e0254a4415e9c14e591dc27b047fa6b16c2a347467703123de8f4cd1b0062a860bb0112658d26475db2235ad71d03d581503c22ebad153a43c8da269905620a991ceb46dbd0c3dfe988987f54e2e0800d9888a3a4db30c20d10e884eb9b4ee9f218ff650a9a05d9500e27d06421dffbfbc4100f46af900a86ce6aaf7d24b4f5bb4465933ab0f93ef07d6bc9d9084dffacd30328c20faad08a65369f8087213abf1b0f0818a4fe5543848828b979f70a3577002c5d9dfc807b4c3afd8fe0ee00ef8196c17fb147c55846d6f8c95b5efd1a63779ba65ca5303479ecebc94163c117b8f199b9d0933aed4e166f1370ea8c630cede6534fff6d234bcbf41a63282cfa1a622e2e95a3967ebf74b08bcf630c2c21ec46c908771330d58765870f854c34efaa5a4b3573cc2e51ca2b57f3aea0da6d891f2e1f189518e4989bef869ff6b80e79945a4c9328bb0e2c78f6d815e39b2a157074971efad9edc1f16c2470ee14791bd0730c41177decac695574b66fb93c260c7f8f5c34925d616cc19e671cb1feade0d7da309ae9679a1551466e191b7f2cd2c23e52cbda60da408d5d74ea5a48c94f1a6caaec639b8f07790d66f8f9da638e8e28ba7f9010e67d0df91f79e919ddf648a75460a8710d3c923bc6aafa4ea3cc3b62e274a1c460ad17729920452384b8530ebd135ead5f3f9ccdbc0e059335346ef5f03c6e278f4c6a4c424906e6d040dd3df55c63b11b7d73eed40f7ae9ca720a335456cef0634d38480cda41e740246b27bebd5e8b3544f34c1a133e6554069ca9fc3eda047f958a421090140fa4350834f8a84dab2ffa7210e24f74ba7a380132d6ef3060b107a3baf4682fa073c120d0f1c0afa1c067ca3232304ff2223fab0b8d0026cbc55c8d806a0569791587315e2a2a6fcb89518b06f116182f502649564e65789a4514a8023860c912e19a1732d2248edb029505c06f8241fea81b4f3bce8a10ade19e569787a8865d604e18c0cc84db308aa42575f4a9058285b576736313be63d2d101168994a09f438693012d5cabc21854ac30051854c05fa9b3774c5298a0e751c08f34d84fd8c620d33f6c0524899a2a1d1e162b39c6f2f7139fa6746cabf274b3fc9e66252de38346d9fb749b04cb5048f7480b7e9e326835549c98559b06a1a69edc24a9c171004c2c7bc8d2fae29c0ac759b81d2760b4c046d9b346a9c9e6b321bf0726acf660296a802b78275830e7a583685b1a6263295dc0726822b216571e572e077c187b030640ef3e6ed1075462804a733faeab7237be48dfd826f02562ef9ff9241774893fd43f39ccd432f74b7d7ac41986f560aba1a4b4fa286cb2b2c913ff308cd4f6f48d16705f8c462c7a6869573a748e47eaad20058dc55bd32127f010388655e2bcbb7491fd9633eec04aa0253ec8af465a9c034a5126104281dc9e25fb63a442f2ecf5eda85453d46bc80de834b4739675c7376ad8d89efe365f1484082c5998c3de7258b40150c8e31ebcd37af8481ead905429be232d121a72052f9acc2cb1e2eaab4844d2b5f4f42b9f3133918665285e3ab18af0d5704d4defdab2eeeea8f06207e600a6d571b035f333393c626d884ee72f6c832b29f19ba728c15aeb560474669cbae3b1958e760454f85aa3fc960524792f8e06201aaa6ea4896b32fe840795e08debafc4b336a7e28d0525650011bdf4670835996b2ccad8ac86b70b3998f10b385ba1242ee2cd3298adb0c13bd122c9f31fd969ba4b9997d5e32bb9810306f91abf09edfb59d515c6c7982f627a2dd4516a498315d8c92f65771f6896a2c265249e985a98816eedacef8e61ddb9d94ec6dd5e4872dc19dc0c9be57f4c13946ceb857dceb20a1101ee9c1388d9d6b3b51e3b5a6db0f1d771f8bd9fc68896b7f3f50b63c9742568cd8bb6ec492eb1dbbc12923a85d8ac4744771543bc1ce1eb0a9606e6d565944d7c6ef46f0469bd874194ef0dda59a450c60d344a416d135b51dd7c4919d5e9eb0d0a1e97f4e4c1db19d99d92894abb0bb25a88bbfaf7bc0c426eff4acc9884012b58f4fdad6e5240dfb7182436f310d8c13772e8b3f2d8ecdc0d2e9aedd7ae5b802b89f1034921f8f021cec9f1ee3f39b7015739d1cb4db46d35cf6d4b0b6fb57fb385865ce9d1c35feca6f51f677329a06d93d3cc1be3a4f0d939292fff33c39cf34a5d7d0fa12b9b15d2056a4cc99ed192a1e4d93cf328b68d4c6b65d4579e783255c3268fbd7e022bd62eb561abb02d048a0602ce34940e147b17d2045c6600bf228d23f3896965b17b740a2c11277c7f4d4b1e75ac328bf49d4923125ecd8867148a07e92cd1a238f9b72082be90ab2f2170caefc17a5348f7c853f522b449652c1a39a1ce6e4e34603f465450f22e10a7959f90e0655cae6753c7b27882f74b095b13df2a3da28f970fa39ec0eaa422d8736af794354a3f0dc580921029cd46f171dfe0ac6be6defdfee201c6fbf02f6fe9eff985e5a4d25986d618f3d3f1cb6bf777ce5d87d5fe9960faa979db5b57f391ddc338bf7f55287515016856a5a82b40c3ea5d4c2ca25bea97b17963d36fa614ca54f9d8094d2c13239f4398b6a012614c45fbbf2002e3e4ea3c2164514b476446067113160dec20f9a56e5451cedd56594238e3d4616037e0a596da487db0ff902793e86deda31c7b8bf9c79258b9345d952d345543e4185723ea3cabc266abbd608baaba9f271a391918f306e66bfd5ee896a9da1926380cb7b6c9e632cc1b0f99374379dffd6e71424478db053701cee46ce20932a15c199544f347258d1225f2e9b7abe02c7a5ae2d3a3a3179990eb180c08285dbd34e871fc397c9f871d19a46923d614e2e49cc8dafd04352422ce19e18353f5ecf7cbd153090561a30ce03d662d62175ee109a2cc1038ef20025cc55589554d35079dc221987704198a19dbc3121d9ad2eb4fafa4261c106e848d77865b86c3158b33b00d67d47097dc55326988215ae13ea1abc08a1339bf650542f54244a42a329338425f66a60185913c13e340731bc8aef3c3ece6aeef3d502da83d90bdbcb2168d9386cb01ef726cf5ea4796d341df9f77c395dd2f9df670e5ebdef9342eabd4b48ac26dad987117c96841ab18caba74be081d8c1667029a54106b27f51e690c310a60ea90d9ca1bcf54f310273b92cbf924f0cf9a52c31179b40400ef4a4f3ca84e0ab7234e2f9fdc12b8e9769f09b458249dd92d630dac39094691b91f08368d5ca112dfe8fb31735f39d31a640cc49f4e58a202fb27dfbc76791dbe2d0b93eb9d8718cf52d17036a9cd5adf024c703433569df9fe6fe6c9a66f6ca2a0fbb6ad60706aefe0cf1b8b3795a808d2850ca66aefa0dbc7210a69facf47e5617d0d255edf220e4d3aa36bb7963b1cd5da3d772155df9d602af7fddbe0e6e7d8d46be14cda3f595fbe5e76586e534fce6ffb87298d13c5d7fb95f761e43acbcce37cf972bc71acfabf596fbe0cd6745e5687df37ef97299e13c0dbff23f6e1e66544ed73fef972dc7109baff395f3e5e6b1c6e56abdf33e78e5d998e5f92a915b9f90d7f5951c4494f9fb94e4784ce489cd25b7f2310f1a2af91d50c0c651d0871af87a9857a9cf64fe52d605fb281517370338b2bd418f49fe06211f6f3fdf3690b345e7c5d197b7cdf3f7e2e5e31a79ac63b91df8fcb8bebcdd79fe0e2127b69d67632ebfc3e7c7db97b70df26cd17271f4f36d73f9bdf8fcb8861ceb386f075e3eae9f6f77226f0f4a618753839587a811838cf03040b73f55c18dedd478b102ec70cbf622b0bedaa8a56b2348d320ad7c325b6180698736d8dea0cf247f839113dfccb31fc8dde3f3e2e9cbdb0679b668b9b8fdbcf6b9dc1e7c7e5c438e759cb78b971bdfcfb33397df21f2c4b6e56ce779f778b978faf9b6819c2d3a2f6e5fae7d9eb7072f1fd7c8631dcbedb596d76b464e048cfc5a573950d5e5ed5a91eb31912716ae7c2db73c906ae4762ce4f59d95130b5e7e958b1c0815797b57e5fa9acb130547bec2210fd45ab9bdd6f27acdc88980915feb2a07aababc5d2b72bdcb3c2e79f94046aabd12beceb4fc5a4cd25e19a27e5e6e5f30d35e09536f5e6e5828a9d18cdb9cfc17d57351de979fdf95ecf83cee23ba33d0525b0ba289f74af9a43a1156c21c53fbd9760c5bde798597ef5e67c9f52f38f3d8170c39fe2b46befb9a41ce78c9cab3bce6c8f91732f2cd0b7c79eb157ebe79992dd7bfe2e5f15ff0e5f8d778f9ee6b5e399f6d3e272b27683fcf3a96bbc5cd8bd395b7c0c968c7b783191720f0ddda590465688f1884bffd278b0f4c8b6ac1622c23fb99a23491b080cdc0a3c94a5d0b7810dca811c93f70190b28ba7af9579d96fecae1407f1c881212d42698cac64604f9ec9fd11783154939b67fbac3dc3dd68ba7cddb869e4d3c17dfcb6b3b93dbc1faf1da1cfba8b74573637b3d9b31bf83f4c4f639eba9778bcdc5e9fab671ce1ee9c5ed73edd3bc2d857f3244a45a5f8c700f498d798324eafba27a2fca57c31b5a0113cec6eb08aadaa32cbd44bfc043865234cc171af53e72ce4aaae73c73212abd3de5bc27e911e5e7ea472f5435b7a39aef959523caf56aef5c48adb74b9df7657ac4d95cfdd40bade7f6a8fa9e3c4734d7ab5f73a195de9e72de97c923ce94ab3f7aa195b93d55df97cc11e57a95772eb4d6dba1ccfb123de27cae7ee885d4733b547d5f9e23929157bfcb85aef5f6d479afac47949bab5fbdd0eadc9ea2ef93e76861a77e9af79acb32f589ca39fea42796cfade30583017a4a967440af2b54b5197ac3a0db524b01ccb9bcc470788c993fee58ea39ba7fd7427adb424f34ad50f40c93172e06e77fb0e4f06eb270a07ef389ff48eadbb1d0654b270c13e6bac0c94232ed901322a099a950eec4a551ef50fef733b27f052485e4fa370588cfaecdd92c1b6d388847ec74405c73d559aa59744f2152faff137361d96a99464d8368f9ebf94e04895b94483ddb9a953f66a8bc1c69a6fa3507303927e034a512b79c9a75ec4270bb3441816562857668c284cefbc44d70cd61a2af010db0beda74704a02f6aba368089523b90bca3c5e0f90b002371440e6fbf852afa6894a77587d944484e14160c6222af1b8108acefa712a3f32983ff6317d5d879216898f22ee03820816874201f523a4bc614ef669c2d5a3752ab6c53be7639f3ca08b234008c93acd7a62a7d18fda30089d608a3f2551e988164cf8cd20b6d008219735145316cebf6f5a3eaef11f2623e49f7f1931a62db948405a0eddef79c2ceb3a396242880ee7fae8d097fd2035162d91489bd4f1f38c526684c424db2702934eccaab0bd788a1f90b209b132eaf6b56e88cecac6bebae2797227e2d37cbe95ef931aab4a670807e88c1ee1d38cdad8715a59ef2f79118ec045893d46108f640247bfdbf48f2b2240096b4c18f3537c5185392fc08be1378ee4a1c8622908f1ce1e881cd471e3684da8f82901f3962f3a8238e1f91e1d72d6f235d3ba900eedd50ebe8900f9c2f3b2798895ff0cd065aff077751bee0a88f2665d2c29d20b4c2970843523ffed0ecbc8a38010813222cc45bde76b8385e3c1cf55fbd2795f5d4795471e6b8da3cd4671b0b03a36b5eca77c35b9de26439b0df4a615136326f11c46005e65df5e6371f94ab17022797b7299dfc7828bc0f9ec74c0df793374927f07b03185710190117602f2a6b21bc6696f1653912d490696c5e0ade66cb3b18705abe6935879097a0da636ba61307be33299c4b33f74fa14ce923b0ad9d711f3c8b52e6e1ad782e264720d849245ed740dfc031221d37227ac165f2f56742454d62c9b0c6bae6bdb02a8196b836931d5040832b4163df1324775f3215b692e45f38d6198e3e0102214b91e86cfe25d118ff77743dcfa1114391b906601950e9fbcbf0c07efa7e5fe3d954bfefbf1bdda8caf21feed746d346ad28f7b4a04781d7d742a36da53ac4c944c13544ddd452a7efc6b452a9c599f182bbbc41e85a6a4694c849d75fe34aa990009dda8c045d081cb70680d6975e79ea80e5c87d325371f6b955bbd2e786d382465cf3c55c7bb120c63076c0fb318b5df68a1aaecf9fe026368a251507b260556bf1c2afe22636cb259204ba628dd6f1e2b7ea26764a4a9602656d45ab18071ce75ee0b6681c5f9c5a7d696635222d75c2ac1a1f134b790ee208ad11d8f345ae357ada44ceb86db196d53a216424b2452f0c08392970826136ed875d1aa26c3d00a5e5e90a989c76a7b4ecdd3204ba402877477169214b6eaa11589371c613dae616c1b214a36408350e5c945b54bd818a9affddf774a83ce2d31eec1afce4286928558668965446df34cbd434a3a4a1c389fe9fcb97790214775293418e020d9015caf0c331d165a9d9b0620b4ee413a4e43b0741e438efacc1d971d83d227761871a5cdcfb4e6b007f50535b63d96136a883a99b77511a13e05d55ca74eaf8d62e87bb65162baa101866307589fb282ef6a087253daa8d2f42c523a3f26962d54d1459dee9aaa13172b300a612017a3ab3d07af85eb8b4d96679cfaf075328731f0d04eea238fd3f15061e561c9c2249214e20afeac20a7b47e4cf00d7ea7487482062015094bed2c558c6e3eebe55c336bbc8757036b95219472cd9fc9753d1020c98e9260442c1f3a8e2a67b36aa8da2cb616c7bab751928b939ae59e26537d5701cb22e5fc82e06f8401fdeabb846f8c61732877ca88c7938992b1a8deb3b688ab9fa5f8ef9ebb65e04c12ff469e1a8423ad5f25a6efc23f54ec8064903ad09a2268c5b4a95bc3fce808b7e6b39e92fc644f64a70447a9f5e018c55853fce003ac08fc556d6a8ff419e1ce4161546283b3610126c61089cabcbba4fe3a16084f87d0fae07bf0f7b4b059e5602bf9bcb8167140f352dfc4f1c478bf2758cb4466fad798ecdfbe00132263f0f52d65cf55bf3a303f95ae467c89cbfdfa08baf015076aaed34172dedc9e427bb6b70ec4de50a1cbf1ad462aa0ef88e1a42831e0e461f78ad543dad711665c50874b3311256fe1b2cd7f50150eb991cd904035a263838e1809b5a1c0e3b1e4d8501afab2ea34e46c8d9fabeb94ad55b54eed1d000059257a2a35fca8223afa5fcea94b4e3a7d88ecb0aa8923d30627de1d71027c9b6965fd09adc714b690ad30c1f4d6eb82d5bce1aa8c2474606726271769ac3bc646b3fff7fe6c619d0c0997a70c5453abdceb79d08b7b85d39f9a8b4348e4d81dc6565454f9ce09c14c5185deac2830bd298ff66ad4cccd9c6174254e2ee37700c22cbb83b85a10b6eb85c6d25a5d46ec8b81f6a751e554ca3717485c28974f5e7b917ec4a83bb7d42c3b5626c1c05466d341c38fad9d860c7b725535c59ad0aff1e49b80ec63759e15e4f9358d9a48b783df3e995de2c9fb7e51afd23b19ef9b1955e69ac069fc41893208ad5f46ab9ebfd6e61d0f093f9627fe0f59f7b644016e276922203d8cb61faa47efe4adfd528db92bf883840775abbec6f568d191d8b0741922b014866b296df9de52bfbe61fcecefdf529787e894772516177ff46be51a49f13577aca53f3f6b0b1d29a45e1e51489a67216b0060c16053110da11ea694591e124dd17a1321e15e589ade5712a7b26d8b499173122f800552a6b54cbbddc6be79222459a598acc7a5708484ae975ee7f7a0e575f274aa526aca1e0ec8f990cdb4fd05b15143a276e68902cc5370f9bc33106f23ba506b2a23190573911cd5120aab67d40bd6a0b8d2af749060a253c069845afeb6b110d09d2f5705eaa8babd7c62ea54cfb93af4406202269b3f84957d0e5a5e99e4a4daa7f18772ec7653fd79aacf044a43da1fab77cb38830f1f4f214dbad6e04777f9f3edecdba792246369d3e29ece1fcf233e79ae0cc6d0fbe63a30186095b31262ef5bd04bd47ff3233937670612de4b0519246d22f7c237d3081bc30d3e686fbfd43a44c70db9b728eb86e91d611193f108d4780de28e7aa9bba25cf0f235310264d15b1810d1815d28b5ab5bf04f5a26099bb9a964ba0c00173c495ad4cf774d3307dec736caa4ea64f54aeaca1663c49a5014e58ddffb1421d72377ee5693f268fe464cfe2aabdd3b1c29115fc2cfd3ba7accca9e544a684f90a79d07d6e58a986acef90eb57bb01682170a85ac36809f632243d5d74178b46f45f203bf2b0082fa593aa4db88957603066741fe648f99938c36e108eac1b63e38667fb1a69d6d567d77d4cbfbae11007124c7a9d5ed0f0ae70e9a9047c5f51a7db9cb64d84423b1d8ecde7ae81031d6049bdc0c0379d42a5296d6ab8755260f774f07f9975954ca0742e0ea8931fcf49c12827c43b27d3c9f46a77be18e8cb6184ce1aaff07d68343b2f2ecb3778e2e8b80dcefc036a376752a8458f7a133ed1c19608157b518d4efa7331a8005d66510898e59ab7c773cd0c20e37540dfc7979503032119c495c4246a5dfe461e124f07ce22e6e5506ee207e69d0b894ef8b6a75ca6f307665d47d7a1e88ffef1422ed96d2617076cf94b5b03b55517668ac5a9a308958bfb1845945e87369551d4bb5aefb13843a9ea5124af36d8be73655ecfc74adaac01c76e9cf16d11d9201e1a092a37134831a7e70bed9f70a934c54e2742bd2a3ed393e72bcbf277b32b0a64909c642a0fd824a55c0a6c006b67bf19d8e56acf0c5b5e75fd342185eedb6c91006bb105c7718931994d956b70d1dff28983d7a7cba6bf9a65652e137124309d26dc825c97f82eafe264501ec27191b5db58b43e210faad84dafc6cb32a840c3ea3d410044821c83f6f2df809c007cdee2718a3e9336ea2074b806187b9811c324d80dbe2489817cb4ab3d79b93f205b5ec7eeed419007279fb17903a2889256edb71f0aa988f82dbde13fda4fb891a797cdf632d5288f712204386ddba277a2bbcaf2604e9f7d4689ec81274e7dfbce01336633cd224660f1e19494da89aa715e3e008a9988c210174a283b73661ab31a5c0dfe077d77209ad2b1ae241d72e880d0dc00f8535829f7a9b71f0cfb59784cc66a587921134d7c4e6bcfafdd514e1cf1306374632cac370e43729b51225794d7a919d583ae55bccc5380d8574006b64cea23ad337b93fc7d8776069c1ba5075a81726254b08c981c87cc41e9be1bbef012967d2ea1a571b1e4040533ded01f75576b4fd21f0de0465802823968f3858cb21008098ebcae94ee9b86e16a6b8120fd1fe746deca9ff824d4809ea42014a13c1f29cca1fd111533cf2840870102ffc5ac522fad11a9d2b8fb875aa0622e7e6d261a3c6888760a3e3b042e1ce39a400d7d7c2c5a57b39eeacbbd376040331060e673dd47409d7d9683159b57a63be2878eebc49d3acd1751c5f5993d1633a7e71e22680d0d7b8c580360b294071fb6a9c3413f1e3622801fcdbfd50f1c29b11489c289c063c24a0548ca983a6091dab4e3add71ef39fe50466bd0069f0be563e40c718850f9787e0783287f38dfc7edade7d8a678133de50c8f155b90820430c2c7fe51bd77ca2172b0e8a5f9b343c2df377a190a8fd02071d3802b4f0a8f8e1c7a2fa2e24b02ccf5c855d74e985e01b286d8d8fe1b614373a14dd4767572b8a863996eb3bd08143d16bd421797516462546e25cb4616ffd93e30c0ae149c5bd930ef3fbb5154e41cca6e76eb52eed80088cc5ee36710c36a75d2d42b319556245cec127c09cecef0f1646f1a048d66adaf937e74e861ae401f443adca9af2411dd0086748316b29be711eae942992cf2dfdccdd5970f1a9ceb79a079e6b7243e586c432bcf16a87406edb1e134fcda0a20fcd540944fb7b9776d39444e1a7923c0d7f7dc57f706abc3b44ab3356f22b34225cca63e8dad81f3774c6970ce83adeaa0fb93c9157a1c302912e7ed617721453f795526c4516900ef110f36a3e8ca330d7b33ab5782dc5c88f67716ce3b928a1dfd3650cedc6f8653d861886e7a67488815e00f45b68a7b97296b3c05ea3ff1a8a75e3b0b652cac282a404f0b83e672cc9966946b249ea499af44b7210363a077f0727e3cfdc4dfcd7357a8211abf88c52fd5d387f77d7503ac60d3115c0ddb4e1f1190395382ea0d886f3967599f0d574ccd5017bbda5577a83c31a39fd44094a50434add8d472c19a43c5cf38ef7ac34a7e46c54f17831114c69f8d22b99ad8d681a515bbb819a1834f096f7127cf9ae83719a00bcd99f0d41bd11c85d178f27b28bdc28451734358ce6d40f5660385f978d54a39b7745f918793d2e639648db89aa7af357c6530d4eac5332574847c43c1222271fefce86ac03934f27c23739af5352ab16974aa3ca4c5eb21a8837a167b1fccb546480a238e39eeac7e38e9b9501d9a5df1d86e275d2fbb3540aa683e9cb3117aa1def19e4bc1244295ca5cdd954862b77625b6c66775f9ad1a6c4e6e73e034e8c62b0a53be2eda044c03c31cf4e7106113a14b773ffb58728bfa698240d04d51d3c2e8fda3cf796f058831895884213cb7da30a040f92127b686744e23b15543c2e0aebc7a9a44261d4e4390e4f7108f6a593c78ecc02804b340b2ef4fce7307e5e072a3b40c95b69925858ef0c38b5e298f09df72258a21a20dd2a43acd94b81436693026c2969021b2918b147b7f0c8801ac997a2f94d85c92032e750c13fe8361cda794b1895ae2d69981e948dce8c25e06f5524c6c9588de39d9e0f1a571e0614948cd475505396738f040a5348210ae46a0589b7f54913ee40418e7db1b8c2d546b9082e6c04eeee8a549f3118f035f8dcabe9a574d7fd93595388c675c9ddab5c58dfe3e85cba13f21e3e3644362ca22469cf1493b47d800756a6d3b4c230db25fc0d7334e515b1871f906881122560fde64f53c36a64e3899dc8fa626c3cbf427d3ba93d03db44b81bc58c1aa875113203153a6ddd418edfce9acfd2cd9788c80f50e0929997bfd22891e40ecc97384e26c5f0ee9d6fcd8b81e0a9bc8728c7fd16db0a2edd9c4c859fbd7051a0c4eadd720ed8a38856b40301d1ca876b885142b5998e48e30332056830e35c656ad8c7453bd05c2dadae9405f950d82a200d91c163de6de54f176391c39ba3f3717fac2d84d3d5529eb1e45ef54d774d2513dfb232422e1f1ca50e384afa3050c377dd8868656b1b4cb3c8862a0918399a548cc9b8647074fd767b934204b77cd464c2dec420ad9c2f3ab5b3e1a76cea210246dd4376a1015c1dec12d2bba1138a9aa22aec21ac2d9b053833efa3127bf5a589521491b722884de2bc5a17378f714be32fd9f52aa78de64716216cbf42b2002f366b474624aab26f1ac4d144bc62cb184d7e7477e005daf53ba6590ca74e638835206b06bcfcf8aa6b734f8b74d750cf7f5fb0c9d2b70613b47b5cc00b6a3666092d3230db9195afd73a5ec6edeec3c82c3e51eca045355a5068e7e09f66113ae370a0ce4c8666b93665d501e9eaca15ffed26888461cb46708f20eca201b9827869b236252416106ba0d1122d7c459d53f8d8efcd61051cb98451301a9899766a5999e3790ae027fb6b42b5066260b49df3653a66232946a6843b83847078101c204420e4d39f1ea637a41d098391c81f0805aa35e049dd0af533817d6d79bd14a2bab5b0d7889ddac56cfa381b1c17603ced5a0f1b8420af594e7755b85cbf368d2ad1ce65e19abe742dd5b03521ebf34ebb63f3d2988de25ecb420891f164de3803954cf25a4e717b0d6b2b685e2293789b349e1f9d7c7c4f7fc740dcf1d872447e0aae485cd43b4812fd2e797754f08e24bd58f4a1ec33c5544cad68130bf3535dac1a95bdd1b8276dd89a114a77360509ee3497d178bb05579445836b16bcf594c8bfb23a6cb912c43bc0d0e38fa8d02938adf9d40b9cb2c81705270600546ff7e2aee26a3d062d19fa0b518b95ecd76485c9780ae5c6d5cdc9589288d6fdbc2667284cf5f9c3fe41dbd7c023f61006913b1b2c7eec306adfe6883eab338dfc881caf714e565da52f6eae189659ba47de3993717cb28ec0efa53ea02e3e1666e317274a1c3513262874f014e99714ee218b9785944c17e1917ba800c162c53fc166c243831ebc45655f3793ea7449fcd5c6ee1e1ab7f598bb3f4d9d9bfff41cf58c6c17076bd771ba18e095b9baf7596f8a9be56b3398b5e67b2fa7337a87b6c51ae544647c90a5ee77d421b411824476252ee667d0cfc33b3554f2d39fac3b42eec31990c05ac4a147a6ddd45d1f77cfafd4dee65f262e3a4614de49bb7f03a9ed2384d1a2f4dc3d14da8931f5d0398021827b9c3a8c5c077c2f4aa59061ecd8d2cb6107e46cd53b4955e50e9a76626046d9149ad90f4acd28f55d3f58ea0eb34f9bc7a6b465f778a09279b79dd8f6045def6f2fa6a10837d9d1ff003c19f9bf5e65ed8b27001638ce828db144fc5f8e90fdfe4020a795aee41b47cb6f0359c579cfc0d8b803edfd6ad9141a98591d9eaa0012080b306aa9dc8119a15f73d7c144652a802a76c3ce8da5c070a7ff6388d9ed9f4b96314d7e4abda2596eb8c3d1f731f823577b360944deced1111c8f041e283424929385e27121e43539b924ba7b9aa561122e657c094d4b19914e2dd9dd60d223b131e8063658c8d2a55447311d5f0887441b46a3f6b3b6709b19b90d69da08ba6ebf5e7e33824c73a578ba12b6b200fd27a3c597f67d41a4bc39e54ce8e3ae575feafa87c1aea360b92a1fca553bc40468b4381bc80bb4ba3e9d5fe9a54323841c243a6d7b4dec6bca2dcd5ee01ca98d34a51f5633c8e4fe0a426e53483df65769c311a08e46008b5ea9c35a4d87b9a9ce50b72d92554efbe7526cf5707025e2ef3d89049cbd09e65f74ec080b517a59eede21d1bc9056caf4c3c14667be3808ca163742e117d50dd283834a6fbaecc7f80028aea84ea986360282776f63dc760e7cb588d03462d696b0eb58aa1a9f17457f2aa9884c8ebdf9c3a071534be1dc9f090bd5cb3f346ec13317fbff82b34ff23365ee466747cdd3f01b89bd1b6066f718f21a192004654b893d59753feb39f0c4949bdc5c5cd65b4186be2aef37ecb5c73c0a03b7d71428ba1bbb57c6149d01c2d779519e505682ab79ee020bfab2db54e906f5f59b0f2d29810d72a3ac14bb199344e514bb4e20e5ac60dcde7392db9242d817cc45a83fd4c75f292aea9ced611131db3b0947590381a5fd213a688941417fb9e3185801f4d7aeb86092055f018722c323ca2e3e3476e67d12a55e90ea6cc74366ba2c1314d557f554bf6158920697007dc002187b3635c6625ca7e76ccd123cccba5766b2c630c529d449b1b25ddb7fa6b43319794fba9fd68d766c10e2efe466b6a0742fac41d8e9b18c90dcb7b4244cc9fda51609acee6fbc47ae3b1b6fcc364de379480d8da27e8ca7c71977cda759305e94187704999af6f5d156b1de0ae82d767dff796d4c5db1edbf45cca6f9e16a392fde714fc4a5788f7b5313372ecd611ef7a1d2816fc014c2a03121b0f535210c66c0297faa931133d677ae5f77bbed699361863e5760151d839042387c13530664ee3735e691d139ef520060b2a620b62387bbf446ae988d3fe164a2d55e60f44ad00dae7d5ac579d49cbb2c478d62a279140bf540cb2e404e5bcf8e3f52fc858e07b50319d2c317355da01adb6321aec52e6442195999468436631486f533cbcb7d7f43a429cfd214ca4f736d87e63a1655ec40ebf8c86a4e703519599baaecbb465cbe5f7eb830df239b71ffc464b7de83351bb2b3e321970811d38c6ccd6cf6fcb40c920201849be254a0cd1ef2a1bb91ff661038489b9dc1b4224e19930981beee46cba0a2a20bb0011198428137ab05e1993e20096f7a968c27c0fc5a0064f627e03a2c00e5b13de1dc7d2962a3b4d913dacfa08ab335ed7bc691daec4eef0c846a97a570ddd6e80edc2b57896d76dd2eca9d0f48be05682c7975ddaa3fdf15b9b3732c3e54c7aff23910e8023e35cad7d3bad9d486b56d7a832e9d4d4bc1fa0d37cd04d2cc91a621c4cd198ed2033782295906ceffe697ec15b43e3b84d03a8852cc0dda6cc774ada581a45e44f35def33b7ce0e5f36654b2a81976a87ceae2b470d48e2143f599ab9b3cb287f2f0c4c5c2add744b1d3b474ef4691e6225e4dbd99d1d77e8ea9c2eb03f4115260f3cbb7f89c019343c76c2056d8a8642393191fd80477253edfeee97cdde4fc22b44787551ef8650ddc43a1674ee8d121b3da5fe42721536efecae339ce69931f85ea4baf2440588720913dc2dfca4fbe6cff98a51a41e9318fba3b841e6e2b45d9e19cc80b41681299f505e42f27179d0266d5b1f77099059b7b3a26732380f9a2d643aad0c02508e4c13442e9abbd277cd40f0b2960bd966dda864cddb3fb42d47d6a7fa93189a1acc14453668e28d28bbad575feacd937449900fb3591791e34867c64e1043179de9e893283d8749a009c82713f3d033b6387b8e0761ca49114cdeafd34bf9edf9c2d40a425eaa77f07de7ab5715fa5c72fb6f46f1ad19abb15f320c0f076c22a833c680d16a86fccd492e49c7ffc69064c3acac69fff9722a24cc8d1fc35494f5b5779922be61386c15b461d7e95d85362304dba1d72c26ffbf607bacaee45c1e6c97ef141360118e037953232c687786bc1ee97fefe9f6ba455f4be13efd9668e200d8a96b034f5c9d0a347ec8a55f67e302d8d1f3911213d6dc391fece157af9ccc175c471445f972aec7619791ae654a0e0cd9d56596c5769db600603b9b96090257ec21e552f2f6f36bb46867ddac8ec000d06c6572ab73a6fbf038808ccb5049278e85119896e13115282cabedfb1b0dbe104193b895a18fafd5f076f1c41bdac95234d245b797d79553d9757c42c39261a27ab100ca1237bd9cf6603176b20727a8d889788c42105e3f8d44cad54827c3be85325cdb2e6510cca941938c76055e15452b105410686635e940c10b4fe2be668906fea516e30d82cbbad2f19e1c33c780bea2bbcaa7422fb856d091391c06d8eab5fef1613f26bf5d093d115e9f519be6bc09a5f6bdb10e8d19325a9020dba4b7594208215bee1d4110ed0f37105f90363a8c339805ee2a8042b86db520100567206841a11fdc77010ea54c2067fa0a6106937e5cdda50ce661cb9fc39b8f514b191cc2dd6a8521a571f129e7970afa3ed0d5dd21e27575f5ba3af145be8b97674a771e17dfbb5b246c5d99046699375a03b85fffbd48fd7779a670e701afabfb7729abe76e11f0e1e569b9aeeebb11d5bfcbc49422a1ea46526f79cb65227c4d7b5bab9f3f841251993eca08f710eefbd020212ad3f55efa4365503fa18bc877d56fbeeb9aafef91a97e137e9fb748cbebebe549b5bc47967a4d8356ca3e508829035f5b3e5babd1f7fa22dfebc3cbf3dda0cf898e899be8982e2253f6bdde65a43e7c88fa99ff3ed4cf0feed75925aa5942d3d159a8146dbc7c317232fd74a52c834919b5b4d5c29c0a02c121e0a70d67b882b6a682faa92824cd6b28056509f714b8c117bc00e75415dcf3a7637d05d452c77235ea92524394c6e55dca522eef1299b254508a663a72b9b7ba8c5426c2d74bd906de84afdf5a767cd548ceb411a551f24152997c5aaa47d548daf8de324469404a731aa232fdfa43694c6f090db552f7ee732d3a1dd913522b3c1d85391574e479db6684b7ad65694b9940da38c1fc5810c600b70d6694e604b4f512ce9dd06988d280df378481280d6a89caf4bf2f0c514b27209c32a241a9238c9444bba2ba2d84b913e221945788600bec02cb2b4450c33585aa116e4f8136f4c6bc94829cb11c14640e6d5d3fe6b76f33dccd70a53f397544c1212923273b9fa51c9839cc4b3720676a84e33bd086090aafde8136ab8f2e2e2f2cd6b66d96098a0a511a85b2a243740adcf447ce74983b29af5a08733705eeb714dc53890f37f1d6a086199eb7cb42983b22dc9fa2f110ee6f263a4d2693c9243ba186f5534194a6828852335c3d146a89d2849426bc75d66a790e514be2f7b55c3029bc60126e592a25940ac24228b16b888fe9a7b7e0895df3e07b64e08ba80eb65cf579c1cb133ef51e59aeb3968b84fbaafb84377574abb245aef9f03d3223d74cbd88eaa9cfa72ecf94798ba41ea66eea4a2ad323eb91a582a4acc31276df21f157839f5ecf7d9bb7bb42783f212ad3b8bbdf901567b8d608371029cca9a0ed82440d43a13ccf03893c94451935cc43799ee7dd8ab26011480452018940a28e7560a3bacddb50470d6b90083748d4312a1d53021bb402f7372784579acd1995e9d3ac2ef5b74b8d94108244a4ac9a8eea12553229d5a56ed6017541b86fea68df1786dfe5966064111542d8a7a676221545c3ac1066fa7353410d6ba48675e73d775d2a08a9615d775d673aa232fd2e454b05a5a26858a7823ab6d11368b36d1c5723412aa863b9ce70a7a2e8d80c0a6a09b7c4354a739a4999a634262529d36fd3116e215001e7d30cb749093b4181605252846d849132fdc1cd5521cc290e092808f7b99a8c91ce26b69eae033284dab4fba99dd1b0ae4d37199d37bcd1903183c6a57165c8634e068d90d2c8781538004263a04a185d9670484d899499efd055e4f2c8d3f7c8320ccf29cb2117c22ca34637505d455efcfb7779bebf788f4cc2c8ae194a09a17cad31372a2e533617cce53c9e6ddb60b6bb64bbc4f585e5f93ec11d176f3330842e44d5850866b34b5c6c5c5ed3515c7f616362eed93caf5024262ede575439c22ee7b6d9b6d5ba79b5d195cd2fdb26846e5c737789b15d8639135ac32e67d91f13bbb8b8a85a3ec11e6d93a035dcf215056d5c7c655d74a3cbcbd8b5c6d4b9ee85751075ee86e3fbb6962471b77b3d382131efeb6abd5dad53eb6add1ebd1de63e58416c57d5dfeceaab731314d2d7bab6c79c7bcbbab6db43362c2f018be14efbadd6451e13b356372545c8ddb3bedd25acd3bbe4e5db2d135ae35877bb2f877179b9a9cb81a8f1dcd88da337b668ebdec8792d7a33c7b55cbcfb66aee5cd5aabbb587d73f98a03859cf0f8cdba388bf596e5401b17aff44acc3313d4378bb415e111bc675fbe594a6ff63c9b678c47b45956cb4b49117aef2cbdd230cfbb9098eb5d1787d9ee7897b8d8c01e2eeeea3514b4f9e5e259b6653b88098f2eecf67a2f958290d670eb9ed7b29975f19e5562e2f12ed9befa047fb87cf5d56b8f9e6de2ad6533ebee50cc04075e3dfcea10e8c15bcc3d4bdf6a3dc60aa1f7438d76f5f112bb78f8d1e626f0ea12ece1dd209c61fe7299d01a5e3d3381794ddbac5ed3a39dd8c5caba3cb47909220c73d1661e1a867958c5a865cb2708a407b7cc1f2b739d823d46ec526530b6c714acc06cb36d06533d8f09759d87466b2f0839d305420ee69b6542fb0ddac0dc653f9fb6dff7f3fd3c0c1d06099bcf5409f85985f4d15ac38015085ba5da60de0fc2cd6697223cbff5cb8fb4d1fa8459c231973206b32461f3312fd59bb2ada3845965d4ad0db4195d2ece854308b3ca68ca4ead5446e35da98c1a3655555ea812b04fc790a035bc1de60d7369841bccd66d1dad21416b5855655319619587c5137291d2b157b1039feea0107e3329337f84e70ca398684cdb28a66f364a3b01d430ca626db3b97d1c57afb7ae6fb56d53d55448e1b66d2fbefde41de5a8f0fc0b8d0a789b15e918ac5aa1178630d725d75fbc4ac754485466aa90422457907da1f50b9486b910bd3e5fdcf597a42f6ee8426445da004318f398fcd22e54e0f9d5481ba6eb76a2fba0c0f3759e608b1cb810491b2c3cef52246df44b10a579a98ca8cc54bdbe52b85231f3b078495ecdaba15ca41c852e43d7456816d2bc794f699bd5a2307b352c75c9f5cba03436bcdf8142b42c4c43c8711f8dca14f9ee7a7dc1238449f6e2bdcdb6990a697b5621d12bc2fcd15c54892e356c661723fc42c3f3611ac2fccde647695ec4b87841d571f51811d8d036b48501a23256f8be18172fa68f35ae624420fb9cf8809c68d804c260089b36962489b124a9901aa6ba42a473eabfeb2af27def91f55b7721da3617222af37d3e0d9b1f94a4d9ba5ead615e523f7bb5bba4ef61f968f499e3bc73ff660de3388ee3bc24afe66169d8ec7b2d9557f3b07849a94fe8fbc922fc685ecd4508f46a2e421d6b7cd6eae587d2bc48dd85c8a588f6c2becca8cca4996a0eb7590e894c99eb35bd3dc6be009dd01066151211ccd2cc615e759552c7ba0a785e95850a49754555eb58bf695c170fb3346f84526544695cd78588cacccf16cc129e2aa394141e779722cff3eebdbf0a6f6ed5d62bb52e45d685c8ba5099ada3409b960b51c7266e89bbd53017a2bccd8aa8b858d1b1f0b302a1cbcb3dd1c6bbba54b8a0052e5226daacc2a2b25945063c9f7221aae50d6717978efe9b9d642e45f45bb86a852e445e0dcffcd15c885ca8b854c1f35ead6339a44109573edf9dc25d857455481dd771573e15526db9756aca99562161d595c955da53725b4a6e3e0d9b7569cb75094fd40fa5f9687589d27c3314505dfa68dfccb5f5cc26a6f7216008540df7c10eb008b740b108bba2ee0ed9b87fffb87fcff248c6f66ddff66dff6e36993aae3375ddb93b64dbb66d03427a355e2dccd2487eb88798667037b585813b8ff3642ce13ea36143a608bbd7501a5646c336263066d0e898e49a090cec79dcbf6ddfbe6d93913f9a8470c32196543ce1011c765308b73796303632d4ee082c438d094a1ad8c0a221a422a31c5c310de9e008434053004101458b7685225ca10a28b061080d4b40a1218b26b4405415b1806a152aa882032e66eb6da3431c2d081aa0b55081020a8206a4d01bedae140b0ee486a6184148891a069352863c8c3ca3a512e4145d99c4e069659baf354254c3680c2631789eeba386d118b4bb437920f7b6d232b29e759aa8d90263634c1f354c22d59f707bee232b1bcbe68959e0bff11f6833be16c11da32d9318f874026d6028eda33e6de6c1b01b841355233c8c2a3208bdd2052866987273c9ce6134ac51287a5d3f36251acfdb552eea6ba10f7c1d6d63f9501e783ab55dabd255401ddc51a7a4b9c293cac867d44813039f0ebe9e6c27354c1eb45df341787aee1ac6f29a5e59182d23df4af22d7a730873c77b5a98db682ad131c8d854ea0ac858dffc9d61c6e871b48cfc7673cb1260c2e4dbf2606f9030f929064fb63c374ee5c6aadc386c794abcea528679feb78d1a269fe7bd6f93e2930d968e8d178918b58e81492710ec8ec1c5c0dbe5ee0a0c1b265f435903c0f2a2cd3b60f9161b5a271e5603964fd9dc1870b2b5958e21f13e6a248e9b324636c5f5e3221183bbca8d69354cb611966fa322936d2a4dd430f91eea293ad6b4066a211ed460882ac1608856349388948a8080e60d398512152ba61296efd954ea9f4c816692fccc729a5118dce0880a181ca1094438c9a2a289842c2c601a02ba52695424410c4043500c492f004a8f412d22c25215df76b4d15880aa51b1042b2437a405196667a099e1045898c96812c2fec4f7b66d0eb99855b1022179b4822198805680061c587ea34df19ca26112a861148a24843408a861f2dc07c22993a734abcbf3901fd2453a76a463a8cb2b6923fa888ea9c2cb27b1d34bf0746cec18eb12e6d2751973f9e2d286bf2e7ff949eb98bdbc979f12c665002e0770f96945c7662e097099c3a58c4b1d2e77b8fcbcd2311e2e675c7e62e958012e0fa3349d8b1315c938a558349616c6836d49180e9f6163240c8717c05ec270786db0493f8177b84f2cc11f1fe66e3e6207bb92301cae830d250c87cbb02809c3e139d84fc2703801ec2661387cc64a09c381e3388e8b61a784dd701c6ce6288005f0be610079e21b04706a23802724ac3f822e604e00af9b9c9d9a4072a69fc84d8001730f809d4ec8f923a78f9c331eb984dc91494858ff856572841112d687b14a86b4906aa44cffc588c68c1852a6ef6261301ed392ab10f54958ff643709eb06c29c133f3e73b6c552164a5992b0d4e4113e7d823a64113edd2649600e070d0e06e331ad5588c2a64fd3a769c268fc86c9d3a1a1ce09e1bc71041b14c9de77f6dce8a5014d4a6b8116945a20b46db48194823a961b08d3e68d09346ff4258582e59b160d511a0a2465e4251dc2f258663af4a39524b8d5867ee05561862d68a0a680a480811b8400ec68434554088d4105289156bb32d4032c32002d2d054a4658a071a699163f475a1011d5afc80a5eb8c20882b0aa71b32da2d01da5c102128a4981c6230e0a103a284957d0e9a2f41da3581e46152c3fe448d36c33f91819070ba80a6ac0352bd000676985f6a4431dcb14884e2129d011b03c85a2632a1ad304059b983d9d8700223a4f2bad40d8cf7356ca75dbed9ed3e689e7fd68077038ae315a313287ee0a6c599e9e93549e9edefaedf6659f36e5ba9e76c352c69c346a6b4ae9a5a41b0f8937ef0455c2c85d84e7caf3ce711cc7711cc7715c77cf3281817b0aa1c412775884a81b1e750b8479fe745742298570625711d4c322214f78bb28843d32d47b64ae99d1d10a3c5a154b3c8038e10a782a9a81c12bc242054ed882e908c848074a3523221388e11b691ccd069d121531b862f2946a55403141370484a10b50a56ec8e89b11410b34fc0cf5e0a44484332021c8a43491c0591567e082c7d119495170b3690594d19532a880038be84c0a5f0081ae64008a37db808eaa784a541c79215c0d29418a103c4ec68c9bf923db11059281088e64204508a78eeb3acf449bb511d08aa22083d9799cd71d0ac8e88a151309b5d90f68384f2a21ceb3f3646c32269eefa010e6600a9c126dd611c10c21b0b264c2f31565279005c21a61a36c78ce6edeb9d7971a966feb90c23c7fb82a1d6bb9f8f969a56312af3e5d0e73172f29f0a6f9633205e371acf81bbbbadc8f655dee65c7cb0159f17208b041dc8805f203581f2f6279dc0036880b61819c88f5f12196c785d8202e17c402b91cad61f43fac8fcb45d130fa1e96c7e576d813d6613b2854a00859601beb19e1270a36c040586a820a187d01ff60bb0e50a184052cb371dcc36b6e3c878d62e3f24c998dfb60a3f470795a66e3386c941b9787ca6c5c9f29352e27d4304ae372228dcd3d788701e3c7c76ceec1e38dc2832cc23cd82905f80c5b931a460bf0aad4b102dcccba0e1f75b868f3864551b4a352c7a40e55a926e97089734dd2e162968e895789c6e2e96b52556289a328de9dc63a5c823b9ae8701dcecde839ce094c9f392830e58230e5a270f1cc41d90126a5021dec9783dd6ab501c498214000709081dd2000184613cfe0015889016025c6c108c36ce31b04603b1c80598361256e234a8d00702d4d4278af36657283a2e83ddb84f2361bcfda6873895e06612870a55884e248b9108a67895f5dfceb79b512bf7af66a4b561f3fa186d1d5a5abd58a76f3ebacd7173d8b7ea4e26bdaab758c753a9ede4b7a8dacf1e3fd86661da33e1dcb1f55f26ab58ec9ff255671857509daac5ed374293cfe7d5df10454692f6c8552a5348cde65eb50c3e8616c9da261f42e6c25b2954ac3e8c50a86503cebb9d2c6d3564b1ccfba53a96174696567164ae35ddd998510a5a1159032f41bc0f44f604a4d80e985a8d04cce501884b9d266584ae97273a803299b06389ca712a69f59883f5c0048ce889732f6c3059c903089c54b0ed7741d52b4016d4e6c3f0da36fb19b0f3805a64749c1f45508d39fa060fa8ffead191191771a422711a591b22f6c6d410da3344cbfd9c6940be187288d47ab344ad3d5a40c3dad45c39476354c8f9ad568626e4dcc1e5513b3c7d5c4ece9502d031dd08d068e1a1a3268e0193470740cc77dcec924064fef848346c36a502b70ce6b6b9ac64f38bb41d86d9e7a0e0502691810d0c67322cc301c1d4322067bff62dee779374ad7713160b861315ae1aab6d18e09463cc8820780a5110f8a7095dd198680b00c2ca9a0410dcf136dc16911a2fe2d75cc855bfab268989214a17cfe948ea034df119599ff3e974b3b2dfaa8bfa3fe8e3609f6e8196e6aa36c6f1be5cba269b6cf336999f929758cbbf8cbe288a5b04fef0c6ad8a451cadd4c4a5b7606cd20ee534aaeaf9219449b4a3c9450d785e28c82f04473530c6d1ad836b9d154df2674069940caccafe0080678d600cf192467cc502b5108360d3499b84fb108bdbe1b14c223e40e7860ea4012c2e3eef39346693629b680f51eef45ee9dceba3c2fdb7b64f5c5eb29c2bab73aeb7d8bb462de7a8f2ccfa09eeedb8d98ee6d67ddc8e69d754f6782f5ed52563d9677ba4be6eaeb22c2ba7723ac7b9789294562de3a13abb36ea41593f37257dff4f19b75f5bbbb788d59f5c8625c8779cc57cf33c8c5d596952d6a8bb87877ce12717157efdeb6c8785ddcc79b6a529092451968b3992ce62e5cc4c4d81e990bd64f67fde4b23d3298d6b7b7beb55ab647b6b98c4cd97626a61471f1d6a58c0917d7d5f7fef2d675f535f272ef2f9787678a6bc8cb8590b2976ba45b224117a490c2683693b5ece54dccbc940b42296b51194aa50338400212b0bc5c0bd4136bf6c84e2e239b8bc8949db6771ea051d9e988760d29b2ddec919966500f3e453229e3c6959554e6883ac516a0fe4561c109071775bf130e664bda52723fa1c433888b324f1fc5f6dd28db6b9af6a4a9dc83bfcf6e3f3f547ea86f5279a4613c807c5c14d8776506491b1c961895a710edce202ca9407a01ee32847906d5f717427abf5ac3a6a5afaf6f271c6602c3b261b91e4165b050974538f174e9c610a24e3f242b1fd287e5bb82e7fc92407c64e5436ad8fc7714343f95f08c62e62fcf9f2ce6bfa38e59691a294b4d1ee2e7650f0e5fa7a4226e092f903b839e1002d1b0f91a69b44918ea3c80d44f54131e5ceb950d3b5251f726e9887abb75700225c8a41945db1934abd88112502aa8561a362f5340b41a11836bbdec5a6b0cae9d18c2234a73444d6a35ac5e8236dd32f5dfcd53084f5cfbd2e7af7e565a669e6211fe3beac2101ef1a882075410755884ae221d8fe45a5047dd6564db2e65b2b3926b41599404775c09ee4055ebd2218d3a7005d7e70dd74ba30e20e109daa05e435136f7349958dea80356f0665d464e4cc82478b35d5791cd552f65ddb7ebaa97c8f44e37c8b39366b7258e90494846a619960068c2d4636afac5c8405d3d4e522a21ed01c279d93ce420a64a18f93484b77f52beb658e90de9252c219d9d1ef44def664aa3424bdc527f4ba7a5ed94dae806f0469fc01b3501de2a80376e086f2e9f45748adbe976ae6b6ffc77efbd9dce288d6894448b3088326d9bcbeda58f6be96eba1906aba2e592a8ccf6ef0bc356ebef2529eba519de7ef00684b720bcd164b593b6a44d096fde45bad2b48e7de0b7d533081ebc90ef4bc07b476a1878f3f1eadbf7f592ccaba35e57b63ba8a368d8d641780bea283a46eb9887f2bc5ac3b6464a6a2949dfb77d734298f44d9bef47d2b49094d99628cdf78561abf567d85685ad36ae90b4586aa1165aea2527de41133de85d97a9a3477d224d976fdcb76ebcf92ddb434ad34bb3a5a58fd29cfe7dafa9d4577648eafaf89cdef7a9e726eea5ef5b7299ee90ae47466fb7e93ca7f775790fdfdd748b703cf5dc7579574d415df4ae8b48f7f045ba8797678a771efaeede2dd2272b6515e51a42c1eddbc9f416da6019066b213dc3308def7582437c6ea8ccf683b7d310c541fd8ee5bcedddb061de4765b8fbc93eed398629e795d3d19c419be44c87a02804445da75c118228b629d45816d16080a59c994de61a30a5769333f286c0090f035b08669836b50e08e5154f2841610adc47750c77585ef1449209cb2b80f0810e85e5154f5cf13ecfbbe2892af28a2852e056c3a6bcfd19a1ce4b599d284ecacc504e532a2f819b2c81b77f3fd8c216b6b0852d6c610b5b403901d504d9a82639a6b8b6ef809598984a0048583fcfd041c6b7d9bfc1c3dcfb974199c8b899090acfcba4617d2368f729a361a10c03a6619ab8a6a7356119339a66021dcf4f4923b1a083134c1982187c10852b64f37dd3b199c4123d3279e5b2fc6120ed81b0e331270cd36178f2f0dee72e0fbbc361ee75b343a451c778db96b75feff208a37062568123a05905b0e4ee77c0681d21cc218e9146373c288d0c29d3ff9ed800ce73865b864784f00d9b0f9a9d3f23e8101e40a677810ce9589e77088f86358f219fecb9a49444b9ed4a75223fffcdb0b4d276332c6de32ac19314c26c934223b25402d2425236a8e3584acc25316f78ef3b9934ddb9677906bcf594b132870b00c90d00770158180961964a73d6b1300935847903d23433e93c7a8625cb2bd20ad542953b84ddeb076ba37aa9e47d5434eac4aeebb6d04ac05d2f7ddddb4ea249a381bd39b7b905eab58fbaae3bac9740ae9328cde9b611edfad953d7755dd799baaeeb38afbfee5dd775db9d4b6dd4422da567a8d4330a857a9e4ba86f2dd430140a256552ddc1ee5bd755708b147869841bb86db5ab5dd740d5e8fbc2b0d6d742d6bb4b30f59aaeb6ab34ac3bedae7fac10ce77f374e4643bea136ce2e27ed425d864bb2eee424899d707ff8def3eab74ec88d2d042ccba349d511ba54c0fef335129d9f785e11de2892dbe4878f1a929e0471ba5bfd913e03edac27b37a2fa675ddbbfafee59d7765d44bcbbdcc8e7e2f2cfae5cae26136f12af6c277db69794e80c77df94104e2b7802853f17c0f274ef3cdf4d97c7730d112fcf94d42da27acb794c0f5b2ecfe92a9f29f6fbb9000e6fe47be89d09faef46bcab2e137defa9e72fec52377fdd513787e0e5d128d9c94ad9276513a3baaeeb3e6fbada993a9f53d79dba9bbaafbbd775dd5d72ea7ab626b69ec9bd340d7b343e4a83ba3cc9f88efa7714f5bc25a84cb52195f16eb23db2b63d3209ee98f88886795d194229fbde777197321777df30ef302ae3bd2343b804a5b9f1ee49cfe38116709648d82b6a420bbcb7a561ab50e82ad2ff92a0329e4cc2de532d08a54ccaa6ccc3f0ee92a6f506a56e4598e269fa6ec3d5bc8797ccf75db5be3c6f2b0c6b961089d26678a588bca45426b711a64816086b87259671e32a528fba944665e8eb7515f178be4b87289d51196a44529993e95e8f0cd56fb088e9dee5f16ebab2ed94c1a8cc6d55a3292910761591f7ee5d9e89d423ab92e69d7e26229cc313bdc97e7622d1775c08e5d0ac6609317d67eb94724ea5d90c77d6d5a3cbfdae07737446876894d219a62eb842a98441ef125ab475bd41edefdc374ec877b9ad696f6d27fdbe7f94c3dee6a1b86da39456019e66589ab084f49b6179b0f6cda84c5b4e687644336a15851cd1acd56a214ad4b0fa4602f7f90c029984c24c817a86b9fb154dfb75b3a00ea8fba911ce87aaf911157d541ad64b4ab89f4afa8a3a76a5e81f51c3be22a279bf222a1cd211c2fc1165aa86307f441f1195a6f964fd610e89d248228040d6e784b823dc9c51472bcadc101157c37d9dec8499b302eecb79633e7733dc5900f7614e44441d151aa5410d75b4aecfcdee02ca88bb025881a02d4420bb0ee0cedd05c0db4cd04ac33a03e13c77c12370089c42a50253161c42fabe3004815216443a02ad1c1d75ace336d0a6eb2678d4b10c1ae17e06ad00ad8046e015dc078d402bace81878a354091e9d546b58c31ad4203b5d262c407f3a8ff7d375193931e1fd74a7b8e426ab5605129132bac9a816e1c12329d3078f5a201078040ea1ba60515b9039f451469406950585056e5492112a8b0d8b50622713675412eea3867ebe093484fb2722dca721c0289034a84945206909648c5bb520092a339750262c619e4158ca2a706e24cc203c5b06d6a8c7aab2c1a4a4b8947476546e3149e77ccfb9c977765e76d6d5639bcd70119ead86f008f5eb589654604a05eedeb4a33d67d7c160b8ebba8ebe72dca494c29033f316983e4978d223a8cca4341448d614089fb450258c3cc6522a90b0a6995605b2861b0a52a65f040a3185905e629a84704b05758cdebe7cad851472a005f8d4e2907e640e27bbb5ccd6c275d6b08e76ddc64d2b80a87882c621a536ca21d53ae6fa30aab92b1d6b2ce0c68233a745f8d30ccf3a66fac97e1f91c97e432e2253f6dd65e4bbe9a62f4bcb340d51ab2cdbbb9b51ddb99b57dcbd9b63bca32eeaab9b636013ad694e47b01887d18a59e16c8ae27414c587374a293da58eaaf01bd3eb6f4eff323065535cf3464caf3772fa77faf7d3bf33617a7d06c12426a68c892945be9fce44bde9a6d7e7989e73fa77c3ce0ba1e9a7a782c29a0f135336f03e4ca85eaffac9745df37b11f0bae6bf9bfe7dbb455eab65027cea9f0daf7aa55b15829898b29d09d543265207dff346540f6f2475d0352f11d5c317513dfc36bb21a9202cfd9d686e4294a67551422d1b4aa84e9490fdbe30a4df90fa9a6e1804d520a776b082941108845aa2d16297b6bac5eaf31bf824d3d15ddce3ba9411a681732ac8c54d05ad2e9884baa1775baf17163e154469c0ef0bc356eb07895234a1a14eaca6a35412ee9b8eda84847bbb75a961209865e6d525300935b3a8595daa5bd4a5ba54b740cd3850094c8a2205e507f5b3519aef0bc356ebafdf05701f0c9fb245568f1d660ee3575fe1dc2e6946c3c6d7d0da470303961beb41093a66fdd29cd71cebdd3c7b37ffedc437c7a27532f18d9df8b4af6339a7f76af0ed20870a4c73602065e873de81363997467889734c4161f66a5972929ac475081badae8e22aa8e9598870f2b31ce38be9e503e6c85c2faf89ae3937c355eb4acf1888ece6b9ce36a1c75cee395c7385e47c74e3cdaf99ae368c571ac28940f3bb14e0e0f1e97328798070f1e0f411b1e93c57a92af842039eb628ecd3c38e727d02607c783b0ae1ca7f11cbf615d392e653d1c8875f9e0c36d58970f97b21befb01cf9cd6b9724ae9e67e0fcb3befa9f753e8e17675ed6c7679dfbfa78d6f3c413e7eef4869f2463de607db5e29167b0ae7810fc71c2230adca173d6bb9a388ea2f8191d036dc40ada4cfb978c79638e9906ce419cb5c3bcf1ba0f910821406e6e3c9e889b7b06665d760cc87310f785f3837511c7ba5eff5741c68b37f7182f0a192fb22e63de10cfba33700ee27f9e8157d7b179629da3c01d3817ef12f1ac579cbbc3cce141dc9dc6411c07e79e8230fd4562c155b4dccb4e3ce79cf32fd6dd61e6f02b7e5a193387f91aeac3ae0ec4f2b80ece67c5b9f8ac33ea8857ce1bacfafa5f1f9fc71d660ee2716e4d8fd7f5cf8b9fa38feb9c876d13b863fc121f37cf0f1482c2e377983746f1abd5ea2dd066753b6f277e8d2fcb61d17278c4e3377c2b7166dee9dbdc83ff2a5b76aaaeaeeb07ebabef607d7557efc12b9bc5e3bcde83452bf1ebee307398d7b179c3f3c676b58e61d961de90784aec32e306c767113f6273cedd695cc4eb5266e338aeeb751a7fbdab71f1148b1006165f231c7f199312365efcca04038f376d55c440c83c4be2234c595670154c5f64c514988aa629428941d6a775fd60c5a813d6307ad78f1a172fde257f8d4b4cb5804d41a586ed841a16e5c96dec27a5656c7ab0396810eac00a2803717cd97865401c5fe264550d8caff4a3e28395d8c372c37e527cb89f901361ee6a23fdcb7a501ae68347bb38572c1d5c417584f9e435ddd3c36ddc786e61d6cde293bc077bc3dab052ca6451bc92d75051090e2b7907da24b93442254994b8c4f7f800506f200f8995dc1d0e23f906ee407224f764837085649a85e273c55930bdec072c981e881aa6afb982e95f054b01c24afc8395586625c656e2db0ed7d8891bdcd1d84465756dee80be293e222867f88a3ad65ac0f49f15dcc809218b94a1f19eac988a6414c65b6bad272d429d9b9cf9c249028fa2288e7667c3abd5c7f1a2288aff6899a0bea10fc77e54bea22fc77e46df91fdacd09316e148d4b1ce02a6af54a48d89e738ca711cab1862b18545f1f4d8069c3d5a57c3aef98967c8d0225c9de55511de08ad58b77a593a9684f8f92249ac3e5ebc30ecd5963089815f8f8197b0febaf8cc24065e9273d6c59c9c1c9b27cef9119b7bf091571b9627091bf3489e378c739c699788cf93823afe0367de2c5e8989e76fbefa68917c5a241791d40dd5e327ee71d6caa124f8e3f5d1e618dfd8921d139f6178143f9e82364d70c03bf31353f00787e7eaca86896ff007978f9c759debbca625d6b1de91d70554341ec3c3c259d1307a97781a176fc3bac4fb0955d183210b84393f6d7ebcac4f282b3993d57f09fe487224dfd06a759ce3dcdcdc9c8247aec432c9f388ddb13aceea3776a7f16a89922351f29bd775845e1fbab1f536ff38af374fcc9a177bf02f7e5a2638bfc1b9fd863e219ce3fc88948e1d11ca1173724e411eafa13712e7d89dc638e76177e0fcc8c5b97962253709244ff29ad6b134beb248207992571a149405421a7782492e92af62609d4bd04647fca47c434d86d5fb0b21eb22056dc671328981573ab666511285bab26ceec199f5f92ac1f1e69e1c038bcf480e811e9c336b9212ea08e17cce73bd4b728ee44b72ae938304c9738e24061e933a469f5b7dd35fb3eed558d64bf241c8f2b0b02ecee58df88b7f5d82acd7b4b8c2b1f9bbcd8f817372746c141baf599ac6c64ac74a5c73acc435cb6a05ae1fe2c78b1f458b04ebb26197ab8d368b17c7fb0979589ae693d232289487e513ca81ca0c387bb44efc341985e26ddc9aa526ddd921358c4e511445918a0c70664da37c42a11fc9f1a17809ce5f378ef379d176483a6ef2875fafd78ed559acb13b8a62e3b7b265c61afab2381f2dce6f6c1e8fb3435d505a86e25cd778d405901cc9e990f0e591dfdcbce19b1c1f954e40c351f26f26a8b4baf4e3f41b0b44ef9546e9cacba261b01c3972d474a5608ff139727c6573e4a893882268d4f0b2f096a48df1d4e652def86833077a1bdabcf109c91ce869e3ea8305e2386ccd6b58d969d81f5e849d27c2e6588dd7f19aae40581f5e63715c666bfc074be3d316f11c96888f55a84681a944d1b15c691fedeb41236541ea864255091b8baf55e9ac25e37fd6f3865949ff8e9a0585aa124e2c22758c76471dd24891a4f8a4b0fef26a4a8e335fb62e75351484400ee4e22b105a870509922bb9f943f2df1c22f9f809c919dad5bcf1d2ae46eb923a2c5dadab75b5b10ae9d4a5ba843202aa08e11521cac8878fe3f8f8f4f1150d4584503c6a08a178941042f1282b4291359e752bad61acbf943cbf5eafe7fa52f252f29aafd54bc9ffaac456a15aeb95d8bcd65a95946425cf1bfeff5a9bcad5375007f8e357c9575689925b952410e13f7e03858cff78d678d6ebc89ae3959878f5d7c5b3ecbfb2ff06dafcbe6c15720fb4a9793da126ae53d621af69206ccd7fb0f3a395b8ab0db9b9e63fe41e3cde66bc4b6a84d4fc0759cd2596c92e8db0465653730fec51737178208d3c5fb36406b135b7cbf19a23c7a511ce1c735e206e8705ac117a79493aac870535beeeeaac676fa96ed12c4f88c55ab1682caf26a4e4fe7a1e6d641d8a50cb48eb989762e5f0f8931c67050489a2b4270a25bf9416c29be3fbb04e26fe61b39705d30761f3468fc43a993c6c0f1b9b3d2d30fd118b0fc4ba7860200da39d15aa454e922186d0c1b935a963e22b949a54b3348d94dd4afb2734c4106618c2e6d08695326cc37e525a861e5ff1e3ad3421d166f1ab59695ead0acd396d15aab40aa5d2a65769d9cb285a8d8a4ce86a36fca74665baa16e8a8ea8a3d2157556705530a59c154c29e5b058ca65c19453c294cb0253facc6db184e937234a6986b49c86de77aadb290afc935ab51009d323dad149d493ce886632775030a554c62bc728da7c2c8ead5618b26e1eab50a5bd4211edeba3ad423b1c1647511c698f220f5240bdda2cccade4d5fe4f70c805a88d0a45fc3ceb661ecc122f153f6fa555517c8572d156a19dc66315aab47164891b68c39a9d37bcd3f8236265b1616b9696a1bf2cf12e166bfc27f44931fab0344d9da208532c059cbfa3da17b6c0f9bbf25981e959a3687b4ca11664621df3622b751650e0027c0cc2141f5c80c794a86c98285ec671c495d8a08eb10a75ece6e6896faef3fce5b46efe7a7dd94a834238b1f89b1b96cdbfa89323e2b0ecc862bd709e3ffc7add3cb7f0eb75ee13c2b9f91bbfbae3cd3b1c5e5dc66fae101864751d3e5ad6cd1b1ec7df9ab4d3d8dadbcfc3a84a35761e2c4f8f8c87f1721c3fe3acaf6ede691cfb8c5330c878a314e00d0a29c063516cdc266c9c87d39c9be56963a7b1c8cdb6221a56185549729a6b0c81d4b1ace44ac77210b58e651c583a9691e423593a9675728efb9045c7329013b1d4b1ece3456cc103470e5b8f7cb01f120efb01d5b0de110deb01f9f0f122681c089013e1c375747ee4c8912079103f5c09930ff18027d9a1c3e6db0c88d36f3e38a7df7e724ebf3981a363b947aed982581dcbb28dd6b1fc6383d2b1ac6413ea581ee2cf497e13e4f4db141dcb453cc7e937a28e65225ee3f41b95206208b1b5e833fa665e51c3e881b0deac61f44458d930225ec3ca86d57811453c478e2749f22186b81225972571dce4354e8e0388061cc7d2a22256fc301a5245881fc04ac772cec7d38c73d6958e65037c559b583a9683fc95d4b12ce4cfd2b14ce4374a08383dcda263b9c765a7191fc7e9e9161dcbb26135af431f91d25087ad6c183e0e2b1b86e33dac6c580fd98958d93022176265c3843c88950d0b720358d930081cc7ca86e13cc7ca86e55c082b1bb6e443ac6c9803fec3ca8621f1638810a7d900a7cf452e9ee6037c3c3572d6e969141dcb08f8eaf494d6b19c8043e95836e2afd353a18e6505fca77901bf397d942767c069def911a7394a0f8fc069ae52a678046c15dab115ca11f693c2005b17603d0558cf08eb25c07a35cf88f50e60bd22d63380edb2348c5e08db0db11d96aed6301f7e2ed43ed8b83c9bccc6e98dd3275752991d6437af88668e9b6118b50f4f7cf0e1e6191f52fbf0e43ddc1d9e3f1c37b76adc0cbb711af7c67250381a170517d430283820ce09aed23a56e3f4154ac7689c1e21a5630c18ea588ed3d7a28ef970fa7ad4311c97bdc7cdab051cdfdc52c06b6e8e29a2d28c38119596800751693507526945dc47a511711e37e3e0e1e3404eef65e95810a7f7943ad6e374c869911f0f520b72213521275223722535213e44cd004f523bc091d48cfc480d01d7b9198792d3214e939c2239bd37d4b123a737a7f78e3ab6bace736e5ee51ce7e616ce217073ccefe46618af37b91996c4cd31587fc0cd33987834f13fdc8cc3c9e93b2c1d83c0e9bba48eed9cbecbd2b126a7499cde9b758cc9e90f7fc091b87985c41d7073cb015f7273cc92e79b6134e06658030ec4cd3180b8cdcd336caee3661a3877351ddf71338e1bd686e584a8cccd3d78c79358253ccfb14726f097bd59e2a35dd9271e1ec28eaf21ce8023af91c4c90881d7cd10370379922024502347021438129e21901c390d1e1f47f0f0d8b939c987e0698284070fcf2bc9cd3c3c1ff7c957e33ef968f8e0f124144872b39223a1401224f79902e46620a74181206e0ee23e28700403ee3385c7cd3b4fa2e4e62647f2218e3c470212c85122812124a06488fb4c3972338fe748c087046ad070722510f810d779f244e7399e1cc9b9cf94249e3ce0c9cd91273a370b79ce1305e4b8792281e34c4007e701974de0c70226d003899b73ae3301074c00e70137cbde6302e1045e3937f7f07edc279f02ee934f013f7a3c470239371f398e047270ee3325c8cd41ae000908b959c87f48e062c067ca0214709f293d6e46e239476e76c071ae23fb6efecaf13aa27344e73e536437f7788e1f7f3dc9214be2471e709ddf8eaf1bdf8d9bfb4c61b2e4c65f3edcb8b94fc2042cf9ebc9e712c74b103162897cf3eb5fa2014bcc25f01246dc67caeb6622def711f9ebc9ebe69bcffb04f5f29922c4cd42dc882706b8d9004fc0938b019f294624e03e5388dc9cffbab9b9019fff92fbe4c31f111f56bf19ff9bdf67ca909b879c08be99c87df001df67caea6626bf196f5ef29f6559466e56e24420e06623112002c759ac8f4adc8c8047c0c889202202f79982e33ef1f0cdab8f372eda271e8ed2c377809b717c35363de8107b106b7ac07173cd8be8a188fb4c196fb6f1a68cf79982809b0ff022ee93cfc8cd457c3aee13148e7263146f8ce27da61ce06623d771a3889b1170226e1441c47da6d8dc6cf351c7c5b3ee130f47012202f7c957f31d000710f7096a75331067dd27a815eb3e538adc5ce407b071f3018ee33e0931067ca6e0a8b9cf941f6efee12b206e066207024e9a24f100241cc064496ec011b68833c012f105d822ae004bc48db045dc28369e004bc4bd9c12bbfa1096f524763c122bfe885d5dc7b29e63033409dbb8d9c38d3473fb0a50c7ec670eb7655c1d6e67d9e1ca86a11e2bc0ed2c6a5cd930d3678cdb5b4c216d24491b300885a80f1212121212520b8197bbf414e97d336c2e9d755b2e0cc7206c2bf6e64fbc396c996e7ebd262cd2c6fce7d29d4b346efe686e0e6337b7f00b1e6e3e7e31e366187ef186226d4cdc37c37e647a27b2082b0183b3a7048cba0477bcd6b08635e02634dec4f426f54db83719c09b6c07d7b0863574141deb1ba3f94e8779f8a414a6bfd361fbb96d2d34f4e918e8c2dafe76a263dc75b2c3c24d5418bc939d14cee14e9468dc646e81b9ef7498009f6fa08ed5eb6467859be4c0f54e765058873b5162c34da61206bfb361199f6f283a66ba4e76443ce34e764eb80077a244879bcc225cbfd378874f548ba89b7e3a36006ee64e763e1ce303e8188deb64a7859b504c73e94e88373993ba934ecea4bef3614ecea43e1fb353cea4ce836d3993fa0cebc999d40b603f3993fa0ed6246752aff6246752d7c15639939a491db4a09c493d079b9233a913c0aae44c2af519db2267528f61453993fa00ac8b9c49cda4ceb2a39c495d65597226f5cdbec899d45b6c4bcea41e5a177226756a61e44cea30d6256752b73646cea4def6859c495db436c899d451f625675237d9cb99941a300e57ca99d45316c66526908908cfc36c46dde07209c0e67ad703f02530106e973b1deb8b042a89255c56e200d80c1ec675d1735e94d3bdd3761d60317899585c01705df47a3e210e3c40e4f47bd3f7d1219446ca906a3249ca5cb8b64f59ebb54668fa3139610232fd00794134212028a074cc482a8146ca6453f6c940c64c3e80c10e64acfeb3c18ca53e4d341900619640c2666abe4e17e0f92f0793053190362609e4cc149a3726148722050af0bc38801b0ce085830d70b041a606322f6043b0981b6870834b003310004c00a604c0050c29305a009001005e6e0c2ecbc2c08e17faea15e5e562c30b6c105fb8e0454b0c9498d0d502970a86053029172b7001b6682dd48b0a5e2a2b05acd328c5685a45b1fa5c50e0e2892710bb1613b46090c353478841d5a62281b491a2a911481b20063fa19036507286766c7e12467fc21f6ec2d3e3c3e0950df3b668980b7abda596e599b2d33d2324af4ac79e84b40313e06cfa790294d39685f093888a0a82a8ccbcc10905d1a862257e796992c3939e109e34941744e7137328688a808b019e3a28cd89fbec1ba5752ad432db2744650eb4e302a61f6a0aead8cb33ca0464faa942a00da5db37f4f239bd204ae32d09cd1b1c52509010184a555bfaaea19b0dbfa5725079b1a98fb6a3d2b0ef9b52f8a82063e31564acda60830daf1bca442945fa53afb75d51ca76449f1d9586cd0fc9f4217d481c922cc2790285400432f6f2f95902191b3f3f51206340ad5618c650cf2846c68036e06febbd254ae319510e69dee87e660ef31c129e9fe029376fea94689725a90261fe3aa4efca57a3b44d07bf1bc88f061236ff623f1918d1f9ee67def884660ef3335c3d7f33b76781f0abe54fe8bbf221791508b3e9e7fbe998e9f326274c40d4046ea275e2e1fc096555cc04ca2a9c3fa409f4ba790e11154d233cdf1175543aa604d71585293b718e1b810dd3bb53c11ee0b76e0d619f862defd52768e332ed8b6b68c2d810c4f5debebdf87673cce90d02f3be33a849127849fdf67af0f56dc1535bdfa090d4e941dbaf26537da5b55ed0f494cdf5e17ddcf44c6fba2929562d2f1857bf5af187f8eda0dd4e6d4e0253fa5a6dea5bea75823e7ab0351d654d471dc5d3077ba06e7ad581ba49e0bea9a63307f298f8076da6176f4a8af01b28e4dfee921fbc4b5edf5eedceb6e1dfedf5f014fcd1d2e36583ebf4c5dd622e0de2ba796298e6ced9ad61db56dff5d67120ed19f472f30e9d410d037a51a2600feed696d7fa17eea96e0de176c17b600f0e1ccf6df687e92575734f1221e64013ea2eac6c19d4cd1f78ee2d7bb2b2654c377fe35f1e2a31f17697bcbcbec11f2daf9f608f24f0964a6d4f6d5bea82df38bc647b7d4d7db379268139140abc09bc5ceae0959bad7fb112d7c69c65bd9ade23654a7d7b2af5ad619b10500798bab9095c1fdec43d7ceec1f8c5b6b06c1e82c38f362781c3090575b92d5b2ec11e236e31fd8036f76090e6b4b5dcf4a386b0e54ed8bce1a62ecabd9a80ba86b6f0987e3a967a6ca69efad734a737a16ba8e950652598aa9d795cdb4fbf13e8e0bb3484a0e9281b85de9d3edd0945cbcc9baeab7f2710cdf433bd16a5994fccb7be09246766d86d31813aececcaf4b334b79e3fde925213b4e7a589eef99ae81eb089d963324d2cc2808620fcc2d2e80c53c0b2e543d17397b67bd8df1786add631fd0b55c38dfb70fe308afbb47987c3db6548eb86a2f2c6766ea3971fdda494526e5786f4a4a81206f71932a4d10da5f48b2163c60ee10c7a79da3d751a1d33dd968c899f8f91a3bc51335b64cce5f327195b7d9eca94bc0184276f309939d04fd8cc81729e5dd2346448119a5e851841228d38a261f43800813a3d93490f3b9da2283d0fd5ada1b3864a266419054cab802995d1b1eff43368ccfee665cfebfad17d7ec2d81a46e96170db6a7a4f28c9eebe8c2e62d2b12c03081933bcd8e9f9c529ebcbaa5a6fc0e68c99376230a981cd1b328e6131aa80af8085dc09b8ff6181fb9ec422a3502399100410794536a1e85df8ebc585970d366cc186172f925ec4c46821c6e5ca820b06060b302e5c6071d16a5da1f5f262851716ab0aac71ac8dab1515562e2e537011452cc496962b2d61288550a58a822a9582420a04914014ea09a85a9d504fa7269c4c262ba6ef63c2e7794bf030875bced0c61c6e39c361ee42a48d4dced00df783a09462ee417a823a1a730782e50c95b329ee5ada68d0034ad8bbe7b9300ac316584a3c83b06b35dc12862c581a85e10ace014ba330486927ba6b3f4e4ce9eed3bfa6094f9f49492e22dbfb37dbfd9932d3fb86373e19c82133fd67cabe4b2a53d33f33005f2eee65e9980df7586f1db4e26b84e06bd8305dc85a236c015b5e6a05a1e9dfe96950196fc9e9122f4181259658957bb0a872015e147f025d6684462ad02606e94ac3bcbb5cffc020a7bbc403838877c9c99e6e0b8f1325c2efbcb8ea822eeee2283048eabeaa7a30e8fa0bdbe48597c45ce2d03679e198b7d825a7bb2eda977561e7518c04ffa1291ae6ddf09a2eb2523f5088f8d3cda77ba010d5c19bf3e942a007874f5df57a0a9fb2f34510979b4f1f182495baeaaaf02adb484736f32c11df229ec2133825ec242c3597eeaebdf05e5fbcd8583fb17e6a7961f38b17b517b6936a2f5e60a925bd52a9138d42df7a8342583f8137bc4121e26cf9e966f142a007bf38f83a413175f04b3eb8e5e26b87026dcf0d073750482a88eae6d333f896b780df40212f7a887f7133280a200020f8d04e5ca780aad10717789d1899ef1bb94cf4e765627e3b13f34e499d89fe76a78041c4b7bca66097a090fbf012fcf1e22f2e41173075015c8242ec533f5e9eba4b4e7f3908f39a0661b68764271e9c61fc86c3d81ff62fd7c5feb87fd1f2d1e61e1897f8865f1837c008806d28305ade02ee686901c02706c075fdb8b7bfb7893c2c341cb88cfe740bda9c903a06fe74d5c5b7958e1dd50bda88a2cab69c5a3c7befd55a7182424e17533fb5dc480b1f2c8d96b2c0b96bd87b0b4ba3a52b78a9cad210b636db87297c9a46ef40212d10e80992ba78d036cdda16525de2dc34ecbd9a50d6ca289cd850d64a4cc11eaa9f2e553d52174f57a812e0049e5e9c5e840f2fde9cba13cba5762a5119efb54ed0886a4665bcd7f40602994b14069412e6fe4972620908090a2b828c3a8a8ee589057b4b3da334debcf799344fdf4e776597ec900d1291b2beb279c813a98388a73b6b41c0bb04fce9a71b99210b09f6385d7533047a2ede6905968efdaec018787f59251ac3dc06ab44e397d7694469fa277f5e9525f14af1a79683177f3a3d358d1ae6bd672d76e76433f8d361522a08771aabc09e2dd9b9c50d42f042c0a7b6e858ea2ad138754fe5a554a914088277891844bcf3a861d38a8679483d7339f8b9c5e9debdd716d0063c6df8248aa7f7cf5c326a27bcd343d0e634bd4fef3deb98eadeebe9c541abc4c4e04f96c9e9a7bfb03f28069fb24c52e0273ebd86c6fc641bc75c06c886b9bca61ba7522a08612ef1e921cc2508a407c3b870e142fcc462eb2da04d6bdbe91d2cd6f889c7bb44bcead38a1418447c056d544f813653a861de53a08d6881066dde30b8026d720f4e5db60fb3fe767d64f3201e7c0aec91baf974d5552ddb14d78f89539f3875d0e6253b8d5517df58c07b6fef1e288260ef389daeebc7c4aa4fac12ef1c6a98f749d430efa19d541ae65d656751c3bc833108ab37b7006510e6fe21c2defb87d2cc9f254a3383a47721212926d3174bdd285f505014dddbf6d3291803eff3673ae15db60fa89ffed59f8e6a1faa9322f3f4f2f0b4e6954165bc3b1142ca4e65bc371142cafa5ba6e1bd56cb83ca784759a3d7676974336526efa9152075ff2cf70912c1475019ef29178449437c96a032a7d39fee82b0bb2e90bb2ef0ba867453c67dca4ebfaed37511e9ed464ebd9bac947d76ca9438021481eb3a2b6d1845c23ad5e10b49639a7721635b147600650878a2244d8bcacc576efb68b8cfe3285d85f4f68ce93284dbb7bbbd61b3af6cc922af053d9bcd3778fb9c9333d953198ee32668d35d823d6048c03e393f2ecacf65f43601934de9b97509aca8a20756700d2cab88a2846b95285391389eae9c4e490d839151334ca3e8681d50074567e503e1e6019ccbfae64488e34307c97c45cdc2550f7f92648b86514a86d0c66f3c7f42756975d1cef186fd845ef733923347a1f891066545fbff7a7dcd247ae27723e6b11b472fc9ab7958bc241f6c3c8bd74bba5e6dbb79ce9c56e749ac131d5405c22186a025511a1b3a486c85d2301bf713d2f986c471847d43e28e4fcad045f1e61d5a6fab100d0ab8635e878833ad785f3a3a365ce2732ee648598e0d2bda4a7b22dcae7862690ff6e273ac488700ea18776891f323b90e1dc2cd6f5614d4f1fabce23fa74b7489e771f17e42492e92233a57988a10d6d01c8b731e56bc0f6b239e656f8774bba386e55c96cd1b66fdab9baf56af8fe357e36fe6f8d597ac6e56375fad6ea6384ef146143b717ce19cf53a1532d020bc70441ccb7a87c4b2dd51a5dd0c31c4cdcdcdc5d71ae18af5158bf557d68bc53aebff5fafd7cb0a0d84a30b6baa61f5f9d761709e5faff9d797bcbef26a38a75f1224f7858363bfa14fe893f2e358894f7825bdd51c63394774726e2e5e978e897fc5e789610c418508387bb42eeb686cea704dfbb0138b49805c82432e90c3068e27df51c346cb04f5556918bd95222b60e09925094bed4ac3a8f85ba17c485f0873fd8c1a56d4301854f0140dbb5214e79cb3c6c573a08d6873fac3e9bf5ac7f063409cd6c84ee3d1684da232552e154c6b52ed7a54af54a15a548daa953a54a914f1afc808f7693938407e237eb4ac998333bd9a579bb3d2727026eb35bd4a9b07f29b3b278edfae6c11af35c29c9bfceb9c9ec37fce75acc7e3d711f22fd1b90f1d281f6d0f16459c9b7b30ceab94124b90c56265f13b8d57a3153fc1b9fa68c5b3ec74b13e034b2cb8a6ab685f5f5919338731ace2a8044cb4e6b19c664ed108000100089314002030140e8805c3d1783c0da340a81f14800f8ebe50724e1a87418c42c818838c21000000000000000406240000662421e8bb41e3844c621174d3fab92919265174fcb41565f0fda040b64f12753bc18124c6c0e76d44fd242c124b9648c45f3abc211101c1bac0721ad259fed6caa33a180dfd416ff3688832def1331e2987ae96c8d0b1a354b9d6478288bc4a3b1f64455baffcfa3079495f0b709f6489b475f03d848db3cc9ca1ff572f2517e0427a7bb84d7dcc654a16bb52b141b98b5e6490560065ffeb31e9433d530531f5250f03f5450710396c37a8bab0001e0f5d2f2f0ca457821c636c6e1674d0b1c583e5a20080b423a731b5574975c5e9a91c7d388882b210b1bb9b78eee16e25eec358dd8afab7f558e3fe7defff29fcf1f13fbc3bc7de2a6e03369bd4d8c6e18ebcd4dcfd0f658f43aec85f2f867fa30794b395855c5f33fd27dcab0a0a1cfb8889ca91a5e8dc869e7f8458fd2cce06fa650970d76f15fbe1ae9761d8a133259a0d045f3189c150627baaa122dba91cb6361567b75232c5ef13e1db02e1f1800c833528edc2222f72148792de4693a3a21410c117eb1aa8d0f7bf7b0f382f90e46b86aef46b1e138bcad72cd0bdf97ce907eff3909c371fc7cff62baf75c5558e9958ba84269a9ef31c46ef4b991c7ec50f1ce39c5864fc053ed1117f7c1f8014535389fd8b81e9a68fa18bd6864019af3547d78cb1f60e87057f172f1ff905ee7f3207c40fc79ab94c99924f8a2fb7514c90ed5829324093e8e414fe1a752a6c4fece1ac5bbb51b0a42419855444f74dc337d986d28e2afca14480d5ccb9c16bfa828b3434358c27111e796a837c82a3ecad744ed50f46fcdbb05c63ec0237e9b528d4353b13d8b4510166a522c4a2c6c0420b318b88a1161541565a406c640c19b428b228116a2311cca445c0468d90858a62861283362ac0ac548458d418586821661131d4a22268ec40c5f2e7f182a2427af58a898d5687d84c8d7fdbf555ab91518b15ed251c561859678afb997173b048cff66d1e1938823f255a1a2b3c302f50f2895f3607708b83090722d415ad9224ab3374f75d62cef5715df0073c982fd8eee03267054c06e60996cbf45ee5101bd045c9f71c4c9d7e1d7586cc0477154e830382ebfab54839a756ea65de90b5e041a4c6ffaed96d6060aa8a23f6cacd1e99c07615c1bb49508e0128382e0ff5138337a3ea320feb11608146a9be60864afc7ba337ce2210860d3ad1b87cbb3867812d359ce96c1fba0a534902109c1f139b427984d9fb014b897a1a77fb5eb080564358d9afa9aff1ad35128628caae041e40c5d9a3c5a3333988399f9394aac938ee5ab1ca32da6a69bd48d2661ce129102092d669cca5a111af9dad02069695255b3196e72619319935c4845071c12511732142a10cba625878607cc9c34148710cdb8af2d3aa2c8a103613aaee387400b9286183d9abd5cdfd26acce9f221e7dc559abb487d5800b8342f60735cfcb520d7059f85ce78f3b43c6de21d3ce2cf27498ab2a004f71f679afb579ef4c2da5af74241a15e779ec6dfcf598c8e2b33f2f8d0bd266f65d7651e4e11c118069624f64a553daa4f47b2bf34e0748be83fc39298f9142a635c90e1d7df2aa43af0c0574e99bb2f3806b280e51abc83d229c67d211097dcbb27ffd51f18713088406ef6f29f30673723fe5fa60e529a4cd0fb3047b06c98b3dd81245b3780ba1587b62b7e9ac93571fa369297628db0c36f5b566ee655ab24101a6d0f47b5692397f10cfe2f5f22bcc2f7f0cb6f40a9457cacf0fe10c1b4354b0fd06ac5b3c9a7831685c77b899ba4a6f9f43a7da6b3849b2c453ba0e9e02fd906c46f53a058615c5c2b33a1b6154026adcf8e08cb8774bb4ba8e70a100521fbbe34259f1fd3a38a26604e44bc00926e00e1ee26788d758a67cdde4081374876b9f3f420c15880b45ff2f5fcd7e51086501d53c8368180382adfdd326ecef8bfc3b3ae3992280450cd30481162abbc93f303db4189fc182d9074e46b3b7fc577388a88d8c0599f162f1734249ae3f7ce4f2554bbb762396b19987d1f83b9d994e26265caeae608c890a6ca7113436ccc8e85e8e4c2f22fa1c0b93bf48b02331e9cafdbc4469651230cf9ddeaf079d00abf309b8f03b0553fa26df443bd522623419de18b59bf221b5d00d3c996e4a9857bcff31629f9a2ee97495da84cddba3b4edc5897bb4a70ed8915e8a52a5bc03b86073fcd6e2e09d731d5227b070aa6e117e8703290d0e4ae6b51846a78fc3214b12ebcb25a1cb84de31598b62892351856b87dee792e9f913ecbfbeb91f5e6a3ad6db3b7e35295e9ddc030f0a17b0530c4088decba31efe0cebd04d54bc31be9d0f97c4a2657d43fe36571b09be6f82250633c899564ce2508a72e8fb4d92ba21e60c37484abd4c719b4fdfc78da408435d00b08bfbe5cdd35b1b2633ab54a498f26fc6f53a52f7617384b444bee59c60b4f2da6fc1494f4da2b1db4841f74e2788e6f26bba00b831cd6ff9f396c13dc4040785542257eb51ba50ff97de299107d10ee9c3ad17cc8a0cc836e39252d8e96551cad7e01461392532fe6c705f1105564bc72cb8b4528d42e8b3049e6cf634b76cf8ba17a0ed0c468db8277a46a5e8821b8103dd5bcd85f444e017e6915503d965cf6797d7e540a7d30172c0d04a3157fc86ea40f7966dda6b4776e1e72465098ad02ad6a92bd334998464cf23aed8cf5974fbd1e62a5130d1bc740a13f137b29031b980454962b0610dfaf5f87d7b946a91014de859803fdec6bff61a38a8a66775a881720021a431b49a4a4acf8c13b15c008d1ab5e4d68cc1db78d701dc1f3faa41684f222da4a98456b3a4fccbe098b1d17801d1634b63d2b3b5e45c3f5a4492e04cc335b65e6c474dc67c5c44115976173167449a4e93d50bf1f15fc5e680e5ed845b789c6956c471fb7e8cc071a6dc30ac6f5e6fe4d67f3f9e2e8b134df6c97e9dc17c4fa30abc8d05b42b5dc36f1a426a1333744ef02028964e3f33c67dfc8db39f58fbc99ae380b23575a934d94137a2a4ad4a2ed36e8918546c80d89aa0ce178c354fb2b712bab68c90ad501cf7c9c804bff420281c53007dee1d852a40a23984770f5b358a85fc5ee9477f48dfcf3014693dff3ab9a9a3b9b7d5bb8e45dfbae1b81c5870aa8fcef648a7101c35e01cc655562c4e9335ca63b73e38726365c8245f537e41505bd2f03eb2fd29f9361b1893443266909f781b04858e6c01ab8b6a09e6946d74993e1a22f8af03105292150ddd9cc357bd67e0fcd8e4a81b1a3d644b54bb8f952d85bc45a62a62dda1206044f02020e92a11448d688345f6532a8ef28cd8b528b5dce7350b72c72b24f0c82a2a124b94a97f3d667229cc38ae5810e401fa63b607f65e32bde47269a9af371c77e262b4a5b4ab9c5276787ddc5a2d35b7e437aecb6b72703fc17a74295eacc2f89e41c1725fcc17b2f06d6887730ed7086a5dd50ed15aaf46e9b8cc74697183f2d23c268000fc56d80ab4970d8318bf2d9a0c2c15e499becaf083492b5690fdedfde21baa6fe002cc66c917025e340152dadf12e95446b8f51d364aa07059c7517496188c334f9865a002691c740c4dd6957c56dceae71cd9c6e8a28c2e50e4a1a9b8ca03a178b380f55d30d990ea33f0a16e84dd117a2c024e0d26d07762b1341db66700586951fcc7a3af5e117f5454a598089ef83c76ca95e1fbc38393298a0e8a994117a5f93cb03a00befd0b2e02fc809a796ce2a750c8f290c9cd612f3fdc73a04a20cda96cb0cdab80e7a8bece0d7efb9cdf9f6f589b2cbf7654a5e9745d3d68e837a7c225f798a73251c88431205d5d30c0cc8dfbe3665df525138fd59a0ed5b8483a661ade4c089b11fd07ae335e3cd07eac43e7c9d833c5faae204f3beb4334c0cc6c4eee50b29b9b2cac39546da898ce9049231eba225317d99690fb81163570c15784cddc65437503cce46481d7141f18b94b04e0d10ae550e0a464c12a5c6881338d39f9c06f53abc32df2e08e3259d19c0ca81a9784bfeb1313c64f16acbb7a0d9e9bed6131b0a6ad892951574d268e799f89c1d5011e1f2eeba0bb7dcce68566b605ef3a9da5068c61af38fbd2d0bccd416154c77040520f947fb9aa6be2755384c8d49d53005dbce5616d723c6212318dc490cc8a005d88c3d295e3ef8e0560c3c6be675077de068318acf31eaf390c3d40c19414980ef77428fa8e31bcd3c1b803cb6ff9800934587142eba19fc519871bc7d80b457d56401c6b4230dff31f6c2092f704f38270cd1dccc18e5fea49a667eae42ac5aa2ae606e7d0673567b0bcd08b853d12b0c3791605ea052b8ec0a2dc51109763efe7807f35e18223f502b4e65361fb4a879ea230c33ec1a9df4e99ba30b5aa8e3f0987da3706e3ff5bfa0e039eba75ac8e5131e5708ccb2008aa27ed40e1a04de41d41883aab1b80e232534e1c42ca545f1880ea43bb40385213f54630a0cee58680b89a942b863031d50f0681faa42e288cb441bd030c9173752150ac66e28a8386ef262b0ca4b10057a49702b1e637c259f726bc60da022a44c9489524f568c35a45737995997eff0a5bf7d82d45d48b87c0c50753671453f677bf57fcc7b00955e48b53a268edd761c4ed48a3055d9e644b49ea6e42982c40c0a7bcc5c06aee964c9953822d6c1264501cf82f013de4d2f45c11892c2d9d31c4fe528c0723001180327cbcd9b8061cb70d7ed4d3992d30497555e5f636e56a68b9a94710702b51731c73098553ab55e36e99060a5cc9ed3de9d747a3113a86e3b92bd9d9333aca170720c22dd6dbc56eb57febc4b06eeb2b7e96c45fbee8fd31812a8ba97453615cb7ffe4b8b983d3d67e5cd601d97c168eb94f4689b023e3edc0afb474879d3d279c511cf280eba542db97c972b826bcf8b8de14d11d0adb59bc7a04431365a506eb76e8bd026b5bbd571f01c080d4671fafd41aa8244b28e02743681343430bfe127edef6bb8b8956964eabe18595edb59962ee16ae7e0bb9f3ca73de3912270d4a92d0080454540dc0cf0178e4a06b13e38294e2468cc46c67be31e8b752a86e48e37838987e69fceab0c7451a68915f8904d5243e3e1e1e65afcf4c7e9be208e60361ecc8daa4b7735b6e85b712ed502ba74ee6a608c9509c9476367774d8a60796127eb3c4756e3ec687fb02b0abf83e64a622849d311fef739c1e4dcc0c9af470f843062367a200f3364885b915220fb47d54ad2e56146ace31a5eb2cd829d1170925f01ef8e52f4d54ac98ec620aa370e00b91686cf9dd57ee01caead22f3c9ad6778aa3a2cc051657eb51602e06ebd8185e6ac749346eecdfa6e3eec573555ec21cc0c473e7e461b91086e18bfa75cb57a616e0342c37f1d568911b75a33010f24761733aa74ec19a9608f92fd4ed0101950958e3b4531acfc389f59dd32ee368aa00a26fe62e2d5fb87128ec9fff5d8bd1e853dfad2b6a104d97182c0f233d96a0260fc246511dbd55ad3013c5079969b3b42fa6baacd7ca6d9c8b49898948b5365272984343dc023e87449c918a3416c2599f90f1215ac35a82eaad67999ce018ee220a18f3477ad00310c35919c88aa98c20bfb650429bf6406b0618f39b2f07098ef14d5d67bafb1d3e149e6b13bf622e7a30223f90cb33e1b8cd3393c54b52d8b77eeb2af2261e37ad5ae865dfd77174c13fb44bd0a6159debe525d6cdb8852705b35acaae080870fbca7a5dba15d048e868c7c0c3ffe89f350af6f832a260eee11f1707d56cc8f68d6958177c3163330b8e925e434376a9b856d664fbb216f40d73ca1781e0cd6b58de5ffd32407cc442e76ae1133c2c2924934c6814fad8fafb4b709e00255d7b419bc848afd544902a4e01c8b86094957c1a2da4e91833e3f0919c5409d918bc68eec9dd8f4277c129b83685370520b858102a0d9c0d22f737278cdbdb1bd79fd308013ac4e3fde98bde873c0781815dbd64277e822f47a750cd1a941a3038fa488bcb3b8f7e1d5d121678a285809c70081e272560c450fe4f2629b05044144d2d6bc374293f9e9e19ee6b4729054b38cef40a48c321fb2dd1dfd901724763f25b7cb8fc6b401dcdfd884c9515ff9b6e69686dda43a4093cb4810624306e5f90e0d4cf166004e3ef8e7452e85f116b256a94ad067f56dc452fa5699abcd177228b6bdf1747db17fda646bf293a5d6b88b735f0a7230902aaed7c1bf67d51912b7a3d3ebc2dd83f4d72cbfc777341f261fba775536c9d86d9d1a58bb43e2208283196cd8f62273b25ca6f88515d95d588b62459b62d899cf99a1996d3c52bf08966d6161b88346a6b60e362a3242ab48f2b7068a800e2f1d384590aae7fdd5c958b162eaec01a21ddb2537ccbf3b69ed94e50a89a2161ecf75b8e8629df4a6011a88502d9d40b8710011949bcf488752353caa07f94bc4aec1a4d6975bc909bdc6cbd5a277397c892a77f8d337f39691bde10a67842e0affdb88603acfc1c0cbe84fcc3b39925d6784a181ec0f7bd8a043d2423d44deba405ead2673b1d86e5e3571874ff5c16eb3eb03fa43e437392782a6cc97b14f984f8119b8ac86e5db258705f333fd74b97b073c2bf1a15adfd331f29dd07bf1ef3739771f7b662bd62b7a978bf089953f79a2a83b38fefd8a9d43b06d030028a77ea59d49a9db948efe9092689a89780a00a0baa3882685ab6b2f2dbf1530f0d52c8f5362d8de3a73e687a88a02c495a221f4470897bf2fb34946ed063a7be603d57df6ae9c92058d707c933c7209bce87ae24ff2172fcf349a38cb7924cf4585d8e84a988d44a3afa9fc5b42c7d49028259d8ccaa45fda2a1e3f07231d932d2e68fe3896a133d68308013263439553af7bb9d7abe8463337230b4e408d53c17da1aeafe585fc3251b413f6d2a736281198eafd4d4be42c444a15223bda118c5f16ca5f2d3ec94f89c1ce48b3bfb4f3724f0bdb7e6385ac86321b6adc3e3c1bfe61c952e2e8f442ecdd0c691929b2810d9655821d6f2138ad571bb09c4c66a45baafe492fe42887873f85f1e9decaf54fd83d2e92a58bd518d38f7add1a83aeb63b199a8e26857cefbe935625a6d5e618c214402df7f93a6f7174a9f4bf2f537cf3af765f0bf3367c726e4bdc262b9d1c91b7fa665d93c7fb30ac6f3a073a6f4763e77a1e8675ac92aca97d918736c285836ac9dc3ac2acbfe92c750759be7630e05e4b842c439e0edc607323cfd12e79b54c2945247d161654be7f24a5ba136f3f5bed60473d5c79cb2b894faaf220e74e6bfddf815d486a4cbfe77838d4577337278dc6f0ac7a6c0226f9e683d5f826a20198d30660eb07741e5fa4246dc816069c8e2d9a60f517355305b6874d187ef7c9d5cd7bf41cd855da812b1d667c9e29cbb1fd4a12b52cc730c8924d65fe5f018233585483a60440a9276a35c80e5880ad85f5329bd7be051025a209880978182863ca13b77e7924658ba8cb700d7d0c92bca3063e1d24530cf53fe9ab60059112d19639baa5f6f8804c406a66bf75f1f339185627ce6657e3813ab3243a1cc6e79d7b9de3c5f09b675f2f02905de897af03ff02d36d25dde36ee0a36cdc884e5ea99203d7181301d412119607cce32cbef2b44d8b035cc41695b0eefc4b4a41fec622bf0260dca6f2858bf8212dede45148e893f01145eef9a4a1a9395500e5d841c19a7e4f8addc274a5a13cdad0f59306c82dbe573b1dbfbfb3bacbc24f5b05d392f7ad0898e6cf68de273fcb9e4a6014f86667dd0be05d85c2b0ef03890bc959a051690177ae64b879f781e3970b876c753d5f5e5764e6d11997404332a3d54073ee940ffbbf8868919f27b9a57ea1485c517dae728ea61e1e55bafdf09940a1235691814875c1901d8e2a43842ccc14e08c0e47dc014e4181e81a228b6e2cf70f341726fc1eca18362a2e65ae8cca62b39893268f9a7bcbe351a842f2c54305a843bda2ad49267fa9bf3e158bb55e4791bed5bf4f5214e77382aac46029ae93dd72053edf36902b9c837a8beac7512580465d96dfe4f0d68c982840e4e3e35cf969e68a31fff02b95522ef4d6af852bf5b228749ea5af1279623056a2f50b42953344a552c88b323a6fb686c0afcb597304629a8a286e5dafae6b1501a5ceee5caa929f3028153e2e4ee385fbe591a2aacfe80d76811ffed01b8903fc9a94d363aac3caefa8338df78bbec270060324a6bf8e5d2ae333af2c12f73e270cfd6b1c8ae82c4dbf8b86f56ad9a5f1cd825f22024f92b94a3dea55e1c3468cbcbf7a9bf49b821d12a6e236e3d2a5f417642c26a204fca688d7fbb035ada05f54a2a2f34d7d0eace1fe9bcd962456675d13933c41ea7d5e990bc4e4d9d6727de36a7fa2f9dd116cc71acdec9f7c6e7551583c8ecdea4677d6f09ba0e4b644f714ace34b449978283e41bf2e1afd742395932f4b21d7adf3c1eaf9e10dd8197ef09601acd1e85a2411125f0e6e3df197063cec7c1efc6661f6ff5c641517f702fd9d9f1e928aa5ac035976797f3962ac07a71f84c688efeaee8a2b72a48ec7f501dbfce7cbfb8637eb18d1293e3bb5a17dc053cd3c8c0fd0f43004818e9d40ed3ae0d1751000246d55362afa40c4fc1f6fa70eab6bf4b0613e82dfdf47e3c7a9ba7312fd92d2d22965995012f9649d2cd389f1a3ae048ad8c65d50d2fb0587d0295be2f407266b61f0fac73826f6ba28461fe6af3718fd06e265d3a8d85ea650dcd69759d05d64787411fd09a554a2b2b0730f340eb40a76f52a5eae9ac9f0fb8bb6a17ed8c708a383ec715b44c39f60693286814cad68c784f7b6be5692155b0432e1dba3d8b14ad35106e2b905602c896a85fda46f9511a1bfef22a73959acd6d5234fff4f26ae2d2b12f509371a2a001eb309cb5f45cc6ed3e2b15064445e14019373c3ec33d5eb274a3a4aff428726398027b29abc32517e29f9cbc62fa88d5259057ac3121c05d982352b9611b373a5e97948e0770ca4d09eda41f7a3f7d2fbc55c1563bd7ebd7ced6dd8de46dc7001c8123d1a18ccb65301c49a79e9792c0b31a05005aa3ba84e8d1a23840d084e2862407f8e6109ac7b13c47691a8fa2f4e3cb472790c59435afc806a757248dcc55ee6b087ebcccec591649173e66af370839cbb319a2670e94c266adf83998965d07c9b0c5c2bf8406eac397316a8985957740010ed340744d3056945d5da73b5b3ad07199635ff48140bd60bff6072606a919262fd9506046fd657f410b172a0a575c68f006418b3a45419c542d368b82f806c0570f196c545a1934ee8f3b0a37ec404741dce52d4873ef5d458bc82ee389dd2d285997e8218ffa0d598f68d95f86d6ebe998144d1b3e22e5de5f906e411ed95d9edc2389dd825e8c2e14d83ecf98ab45002799a33b5108dc2c9f7f56e61a5998253ed60c1e0315fbe2a165afa0bc6ac3d36bba8377b24bccd8ee843b4acd59246607d0e0431800730c7cdc67f9a27647709c94a1193827f42a529a2c2baab61060e40168aa3a8cb7831996430d7b531f0203467c4c01bcda4ec6493bc16ca2c7261cccde23d89f0294384a03843bac48874821969c5538da65732ef425e6058d682ce8ce04c8e2b363d7d29d7c3d6965a09eebacdb225d9fc07851e467eafbddf3654a07c8eaecefd0bb1fb70f18d9064dab0682243379ba69c922c448d5b6bdedea5bc259846bd7a47170dde67195a3a6642be379eaef02e1a598821071b6da0a13094322a1f9794d22fc26d7bbb325021f3dc68ae683c4e92d7e4b33cd3ef3b58dd3f94064ad0eef9c3a4621cb8f1f0c5f360a4741307d0c40f04a2c60485f70b6ce27c4682b5d1094e8d52589e538edaf0494760e6d096575359f621b67edf98410f7504edf1b43bd9083aedf05a144fc10783f4f54fb73c4c1e3741aeaea0ed31b4438e5b7dbcbded29b269f878627b3df75cf162e9314297a063bb503436583a29385292a2b019dc8280b90114646605316fd8fd90a380da78f81de9f7d7bdbe031feea50c83423bdc0abd141ce0893db48cda8b12db3d7397a0d2e503bd9e1b9e795a4b6218064056bef348503808019976d8afeab26a4d65955ae1a33b28deb112690a6ff961736425893fb898639761ddac258e6943d23f896d11581bb741e5d834853529f6ac304fdb0892d5dd0d9117a219efc13da6564f568e7a802cd44c0db6f1f119244a00ffa44a228b22e8cbacc65f4407e284f50fe022373084595fbad0d77602063097ce6246cb410eb08581feb87da17a12f027cb48df370a457fb7e4d97d3b1defe63ccc0e12ece9987d4222e48d493e5a71ba22886fc697084976a1d574041149c38c373a03f798283735c48192b14cb1ceec3ecf31c2ad53226d648a2bcd2769bc1811025831d358160b1b005ae1b1cabae4a0e6a003028d251a3ab4b40e938e5fdc9d061a423d3a4d8f6e917a1cd2ba0ace20a125bc9818fe339605ccb5694b86acc176e9dbbd8117c6227452f9b3c95daf169b3822204a430604e8135b053bba04d8e119642f11d509a82ce16256d2c0465caaeeb233d2d9b53755b3a56afda963295ee5f44cd9b589cf0eeac5048db8398951837d3c6ff55bd1800e2924112a48948392ea56d1cb9d61f49a926543553af0d9d620b9a9a3c460c0b5f1951790276d8e0a778060d97a8ffd201024cd63c2bf13f68a0bdf0dcf04ac78ac3a0375d558c42394dcae7ea05e49cf382476c2cdbc69c2dac78884a2e643850a472fd4876afc9b76fa5f18fc5395cdfbce6a72220f91753afff77baa1a8a7947e5b23b035754416196e4a6470fe2ba180bc998019f914a47c0ca2f8b1aa829f6f34269c7ac9d51e52b64a532db3af084abbc832badd593aa18a2ae589e6b67ecc769d3e87a4837b944aaa098c9d0cec967acec756b95f55b6496950bcbca92aec0ff9cb607c9dbd0afeab59e177abb53f970b29cf1ba7919f8a4e322aa9d773dea64fd8d270d18f950ec3b549a04acda87915f6b119b5a7a1b08a52ed44dd6bb4ac58e98794edde2ebea92c19c0a5b4233525e7a8f91323e38da96ad11c5d5e944cb39a6241319febcb8e44b6ccbe480ea09d8cd7e7b92be31426312501e7b5196c0621e8f80f54dcb88d8ca0880dbb51d1193eed58b9fd4d4000aefa0d0986cb2280a5e88a87325b7b07c5d30d99f3b8bc9024dafb8dad99004de2c7ee0d246abda59ab0a33fac4b85f1d5bd1b46d1a12fdeb11f1a4b09394c91a813d896024d2fe301e2d8eeb5cc0122923f5503c34349c3f79bc726eb3c5b3edfcd68823624fe0188c4eb90704258e871c89542aab394f887131c5455f073544eea4764eccc01606028e10bc4c7152519efeec01d3dba1469598f30053d06a19def8c8238cc215730239802b67a3fe5bec6f45149801c1319bab5a49f510f55a9227222f6a6d5330455523de32d15ce6780c7f4ccb5e177a84339d234a4000880d8eb1be66a1a25a416c926e017a24f2745a4bf5add86bb5926382ff996e34587b46987e12e8690e44447e2fbc85ede9ad0700501b3135bac233483b99d65c6dd7d6d4df3b095e2e81f89153c6d1cc1c20a87aa941ffb3a89a4222c6c3c27442aa082b66e0e2262898029f17157db850995b5023c4db398833903146dba6c8d66c4cac208bf226024d940f3360b4f4c1a4fa2866462a5025d41d456ce7bc4eb4f0ad854232659700e811f940fde44da874656e6cf3f14c9c9b01d444356afea1928966badc51191ead295ed4205abe9a64d1b7625354c9cec140225e1825a2ffd2b4260098efdcdc0f54c65c6c8cb85bc9d36bda70f15db9eef51aef2a0435d5bef20837ae0628a11e79a3ab333231dbfd22b1041d9f04c01664ab83187837e36ffd4085b36d08440e6e13d9bb91f587d3d6c1841949781f13844e2e2d9394fa4acd2367329f52066f7f3dfc394ee8fd685b73978c01b9568645ff774fb676e1c52a264abbd07170b73a04363a1511767afd3853ead98fdb368588b5e5c69076b8d017713a84f6d2658b5818a5ca098544c2c75f57730fa27ffd7f5d75ada285ab8155a1f0d05cf7b3031d4df05792af285cc75295b549bb4b6fee59158c9a8d9c018a4fb165304dd55b9eada050afae66255c75a9ba1fe38847526c8197f0127178601089eb515f8b9dbf0dc3ed659c391b53383e6edef7ef931d94c2648257ad15d0b4e1ecb12c8505c9b68c89a55ab8dccb6f5beeb740f019a296396c28dfafc3c6d93ff992a60e6474c6f47915f231fcc53fa155389b2d87982aa80c1ce8da4ebc6a46d8f0a9b9c03ab69ce6024ab4a3954505168a492625690fde85d6c62abed5d105b66332c2bf4b54a0076627920f2ee2978a30a429452d5a118d934afa37a9f01fb07828c46634fcc9fbb105540338160e3e903c1875b9253bd60bd7ae61983f03aaded4fd35413356c257a81abd4bb447f144bd1c692dd52a0d8a3d92ed8f6085b7c913cd9db0cb4fd26deaa8455ce8a2bb48130903633c5904b67dc501ff1940936fd74a7d006cf138363f30e30116536bba07c60c8cf7c1c021352eb80158614b8983dee0a8dbca0b809d0f2c1704c99e798225ff55f98da17c04dc1c13be901f08d951a44e571e9f647a445bcaa031709f5ae3c4e401e3109f9f8ced0bc9f65cbae0f240d828325d1841cf24181bee1dce9f35a1f6219eec1218cb8e7189baf1a9edb8547d30cfac06b0dcd66026aa0d509f526d22d8e816ddec060b4506dd247e11bec2ca16b8ec845b9ed3d1bea65fed9bb32f04e8fef048feddac9ebeffdebbcee7f010957d87502dc959cbcd3c2368689134dcf20a7c80b1d1e8055d7333bf813bf13aaef1f93b3c25a118168770b5b056e6135b4400a7c73100b682c6f0c7351849c28c8f4444136ef92bb04b14ebdaf3ca6117d5eae375184f4de00abb40139b911b4e5ffcc0cd1cb332486c438ddbbd717cb39d6116e04884bdc79b2a6abd47946bb1987db29daca2902b9926400a6b01ea7a83dab611473490c5c8196efcf64e6e851a62b94735376d8f7a1ffb03e56236390fc793914954aa9f0d4544d1d2f17271c2a95a02b16c4bdabe9afecb98c756dc45bed552e4ffbcd5944e0b53d807c1bc88f676047bb2a96f4058551f690a1f677237b0e322f8d6df820de048e37cb2197700a1f277168d812dbd923abd5437a52917c98e12359185a6318894cbe33c5ed2180dd3e2d93fc86bb05571ea286e1a57f41c0e981ddedbe6b1a395e21217144bb2bd9e03b463661d6bdb5ad5f91cc0a7f33831f546291a45ef7d6c1efbb68f0eae48216a73a08b79faf209074731786093482f8c4a4dc37c23d415a2d86b963d33b0aa41355f16a2d894c68d14dbd4bfe6547fe104616c03c79ce0e698315c28f5259aabe7a6770d4ea7f24150ac99d634b8ec97779396e0bc8cfe17663212375bcd28036b575ae143ad4628a69e5ef7a685d7cd22503ef35579b39bc653255cb994ac4d9a205c317cc9ca615c9b83d18ad9c6503943c3726b09377a39a742a66ac0077c203a08d1715efd9046fd1c666f40f1728daea1ed65e42ef188bcf924e81a7043135a0d9c85c98ea1563b03f9cd54e84a48a5eeecf275e19587e5b2186d8c8730c0508a60516b43785ffd4ec6051c7c50c0ad08827c6ae87f328a5aeef98da40119de3550cc6173ea334c5b57b71142d2588637b6e3e65740944875e0a1c5a734442bf0d05e66248cbf999f93a5f4277b8c80d64408a09826a5eec5b9c22ed1486ac4c0c0176dfdfc4e2010ca40d28792932315eb8c587867028e464e219a734d1ff5f501ff23515bc2d816100627203daff00f650d4b23ab247c76d98e454260c78c442440c6701fca99008bf73669ca08920131721c0cfac4e5a49e358d9436364052cf2d56d1f075cb80535abcbbd2550791609d0cda5e4fd823a46a20fee144f8344fa22dbd29e66d0ad3a88494ad0b187827c9ae0674975f1966baaf3a63147ca94eb7f101b128fa025ee88b82f1428f2d3702e41f1d8e94b65ad306dd7c412b53eb8d4355e5d16bf06066eb14d384046f14f7176f842660a854e9e01dee67e8161cc994463b5e5ef01d77c6269f024acbee4cba4f944187abdc16322845f69e9f1cc5291c0715826a6c7e1874b0eec604783d092201afdc01dc65565e99b5d148775b558662db7bd256a81d38c0fe1e4c73ec976fa167d49ce6670dc3a9d0771075e93e1bd83e41a5009432ce9024c96b68240843c75a5a0c1c30efc75e9f77a81d99465d9cc2705425cd5191315692ffe05c8c907f672ec49778f9ab40fca6fc6dc77ed202ecc29b20162b4869b3755565458bd32edf9a8af48ce3562cec2c4df95f103672b864fedd7bbe207bc2e409d000f2259ebb020d824b355b60cb4c2895788c1d6c0299e637f420cc28c3b6dec636ee9ae1448aaefdddcd4b6d89d39c30e2969ed766ad02fda06bfd8a11072cfc4672dd3e406b8343e2deba4847b32712f926c7bf4ff89c40a39e5f2c9cb9cfc271cf0cedf5efe1e6f163b25185bc610b1c082c16bbbe408946fcdb907943067554f1c97bcfa381951e36615a44052da9a314c35a549898bb1317d0912c2a798ac63bf67783f1d0f3c81c78a34dada4c9dba8ac3f29e984cac358d131b8d3d5269132df10acbae3c521b5bfaf2f9e9045592b1a4514c414b92ed5b2828f5aaddd22db04d0af7f679cd52aece620776e0b93055e1736a6fae072836607cac3bc55611c0d1c241c9cc911d66497dfb1496a4e6744662f81c4633a5036ca6ee7491081c9f720b0104d1d369da74b35473b69d50e3249b409340219290640d35ce1f08e915517a370397af2b47a7cb4b10795b21e0e3385e0636f13211ff92fc2af21446cf1cb95b080b2aa57187980a988c0100b111cea36df15e7d5e5f89197f371e0b276e7206598ec63317f0f2d17a9f1bf4a88145220a861ca261f80a966abae89d7294d4dcbc669362a81b846e57254fa3be8ad9157192978b4d861be99ea4700e7b0e6d70e54252d40799e015c8c41713612eefa73baa18802d6f102a024808d359ba64021ad6ae1d8e0e8ac13997f160c2d870be6c05b352d3296921600a15cbaf8a954906b646234c781d566de5a676d643855395aed6bdc61fec9e4b6b2737cc307728037e8314029ddc79f41fce0e7edce704bb85b3091236d394f83562060a74f2e4a1ac3fb84d227c6d327c18438d4fc7fb9ce17727c306731bba166456a5010a8444cf668454a7b9f41ec32017e411c052a17bbe919d85f43e94562b220d821144cf70fb39967435c1477705d48cccbd9db521bd3e6bef892c34e5ea36dd95c780c7a869c66ab511d6005d1e68340afad3287920f726d879dac9095db22f2bfa8d35a82da589dc505ebf525a3151dd3d1bb0b859dbbbbbf60ec5ea50bfeb553e112959bff20df13c3f5ac77052138b2d1779b631898a0dfa07822fd54f94f2a85f2842710c7d6bc8481f367cf5537aaa1965b03317064741046d713aa06788c12ba9781d903d30560d4096992d227520bd103016a187cfb79545ad9f6453fac55b504ff902a0b912a592d08db39e4489e7c654a1e7d25c63bdf77cca344a3ec592654f994594457d90226839a486a38a0995073da978ec473c706f7fd5bfe82b59e11370c26b8bd7e1beebc3532123c63efa27d6fe3686f8636317e4fcff30039e3ce95940c18083d7e185291cb49ee11c0942a3f71fdba9511fdbf9423a5e781be5355278c5f6b3baccab54ad6cda2a28124afaa83bec1b3a7d006354fb88fd46979e6d556f79d07bff5c3c8eb677423d03510ce9b42753e08970faa7304b271869cb78f97e5f0f230514c7b227996cc431c8888ed1e14da734aa5007438bae252a207083f5a50306d2c525ad611bc0536ea3fd27326c1b4680a79e562345b7dfeb83ac7aaa9ae89f0c2e56e961484f90eec4146300f4198430b20848c3d25c4d2810220cefbb03b98b1e2a470311728b788707994a05179f316e2a2d16cab67adde9e1ac49f9fa840da793eabf6adcb2f3a12325447a6fd85b11bbc65807ef07bc40d1db97ba2545019a8e920981263de946f4cbb42a4814b3e1665c743468302684fcb009a6fd1abbd2049c8ef0d73ca98182d1c54f304a63d2612a9c395f93bd5349354e388808882ec446a5ce986dd70cd8f38d0fee873267011d1c0cef567c616b012b6032d204bc210d0577f81ac6137f0f6de5c286c6a5bef3b42952e6997b79101f6f675f8707e49ba37c6a323fcbef9de738afc304d1889c6f57ebb9a2ef5bdc8927f3f7989104675f34909595a8768119e9f8113984d1b8744b28d6c42a6e7a8c3194e7da4cf0a6ca042909bdd117c22c266f11389ce3d7920a36fa975a92d5b43dc2a87926a862a22ed29bf114ac348337f27698102a58833cc58f7917cd76795d2e5c0d30b76dc31239bf7920418b4cc0b4eb21638c3320ff472afa5e49ac09c689a66bd583df87ccf75fe5f5a7141abfdd50c4c6ff4e1126c6a133a10e93a13ddae53949efe7f93bce6a9daa1e746de4b1e220b1770a44680deeee3f5c8dcdf62516058a38aa8954ad83535d9d391e2fbf36429947d5c8b50b771c0450fc7dae8a3f94347b0597feb897b472e8d3c56eede7fb93f9e911467154cd3245f844c55ec755269845aae675cf14b95aae9a6f0e68770e801047a718662fb4544bf1fec2c6d2e5d335876449928a72a6591d50c92010fe7a048ce81738830d157fafbbf40f2d0f59c1a53fee25ad7c58b539a810dd6778b6cd47fa269f3f4f08829064c351138858c48b4476e75583e48169144d4f8304f8b0a2b6f7c0f37788213e50458918d2e4a23527523d249f7314d62143576ba3e2e7b1a55690474e830c476a283236aa9814fb9901752840cf4929d9ebb9e2ffd7392aaa1ab43285cd7dbdd87533177448f134c3d626f157280c584b718d193c3d0d9fc806f8cfd490a6e61a4d647097b5c8ffe3edee462bc6a6e128095d8730603bf006e35b24f25464c5db8c60034625491e21be05bf1cbac4e74614e9c18069bdca919d8668b5d6f07714db9cd18c56b47241370e2a99bfbc1eedad2b3435a3de55a8e926f48dc7071a4654459e2aef51693d2e6e5c64da5c870327db06fe9fcb59b60c7003ee7604cd57b2ba4edb48cfa2168d3d60e776058aff631ed8315e0576df2f2b53fe7234ae52338c961c4e6bf7f8a8717e441b0886b8c1b5fbbfe0b6fb3fdcae217f7aa9399a032a3b4a86f805dc5312d20b2351993da7eef79bb2d85e6c673982e80def591303954e4c15d5351ae1c3448415045151f572febc3d87f29cc2920ec4af53c44f40b0e6c6d408cde9aceeac12bb524bc2eea351d8a860305a387a3956e995de30eb3c959c89a28df3b47b474ab8ce3d04c0f2285dc9154b066e01bb8d7d5de60258953985319517d6a305ca18071b3dcbb1e39d96b7a9c26fd676a2c657251acc2488af0ca7192001c2490d13313ac68e380b1cd9c87150f2bfd5587ef0ef1b062cfd585376124622280b105dbe9bab1d6e6af43eda49d70a950b0432a898114d81635fce83f1a261eccb0eb53d1517d58d8a52aaf549de9af585088635fe223858b24121e0e5e1fe4d5b45049978843c5befc7c3122c7fa7470cdb624398907396cfee12ae8fa7172bf8dabdb348e53d4918cbe008ec4d30f06f289179a1275f0eca9003c938c046c796a284643290c77f48865ece5f1c667daadbfd363c3167dcc5cb1259ec2dcadd16388e060bae15472159891c502d324990e23b106f02b92f2b7561aa7180bb63f98876e304c164289dfe8284bf039d8ccf3d0f7df38ce70e84b034154bf529a2ffcaeffd95bf22d8f475b4a464f72ae67ff0f7a5e554c34f9852825b2b5827222709ff43d70a457897d115337a106edbb7a67bd068fe8e97f37cc06aed9c8b1fcb48fe43dd7a1f1a66f79b5b8ac320c8cf912c8142e068e82db317a7ff3ad27cfc65f6240d3fec23abb3e477252fedbb34d6172ef277cacecc028984b05e400fad56cbae3547953f6059d59bf1bf808f6ec6f0a49bac827c4ab7d0fe2c118edf348f3bd57199583698ee049e02653375a4ecf68696372f52098337b99e7ae2bb7a1f8730cd2d22495e36ef7c3af5408c0aa3f52d76f02ccf6897fb87b87692ae7fbf14d26c8c7ecc9ac338cb6be693bb36ea474e182c603720cfebc6ba887f76cb718e89302aeb4489a09a3a1496c01a9cec8f03b6fa49b36324e9492d81e5f6337c8a339637b219c7f70524c7471aa19b36dbfc68978a8a7a3f261ad0da247531813c83053b7040af5c660a75d6a555355ce1e2d02aa4f61a2a728e732680208fb5e62a59a0108158315772c9ac9b327b1f436ab9f4614a8655c07b19cc3cbe395b46bf3c92add3c7bfe6120058210c62580e27b09087b735c3f71572bf0a1c4a56516cc7ec262adc26ed0ce67feb8e05002523c87d7146763be935cea9029a43588f5e25cb2422dfb34091d3e6f35dc40420357b05633b4dfe115cd8b89469924c5ce33c91ae965b8b66b868e222ab8bc754470da64792a11aaefd8e86f6b29640a4dafe8c5c36e393db399c7155f73b9118525e117d698882ffdb2100c3c71dee9a4bf60cd82a3c08e5713c27070a491a08516a30971125cec76dc5935e93ac4aa5450fe8a93c7a70bea893329e732dbc6c23bf5d41084f2f0256ca6153630ff8e0e151253fff64113a8c61f6a5a4f811452abb53ff15300867484c333947876bd7638b32a87451349b63b0be9fa9d0ca869c298a064aceeda54afec5f306964345579a95d66677bb1d6198a18e4a3e8d3d36f7c3c31f933bf51c5ec4caf1a1153e37dc777b995bd459777476a1d66a5843183aac982256d1ac6e61ab9193ae77e82e85e4f339abb70e37cc905ac84e23c756ff3074499f905244358119dfd5a63ef31a4f286bdac8a075538a6b4a5583c82840863cd18b6be14b865f3f52ab4a7c9a6fbf5180bb87755b35904ecc99e11f930b4050716c2ae0136a81febe7c398700e433e0c67be2fec7fd4d7c4a018217ec7906faa9f266fc1c933a55e74ace4c6a9c7e398e9084fbe59eaa84f1169281501273be2688501b868164ec32e4001a05bf20074650c4b4a0c4d5dea4c1ae07701446053d2c4661078df34ddc4c1b7b445df7499659ea1ceb4a9f2f1875fc87bdf47a69e5683106370e7fe2d9ca8cd90f23341e6b9f6d200dd38bc058508873b8c3f50a56e582965f93468f7a9884908875a92156c1bfd646ecf8c74651024ea85960a9faeb5a7b94412bb121cf61f02d413aeea963d3b1576974d1212d275bb80e537f99ae8acfa58ccbb13e7e3f5adfcf3dfd1456314a36a0eba097b16fd11dd9019b52f904f2422fdb9e0e0af9a80ac9fe9aa2ad7f2dbe5a0aa7fb81d8ca9521dbca8816b2ef62e88d8b1d6f45cad30d019cd556a44c87c0f7007f1d8f6cc529e873be9afc1cf9a488953b042efd150c158fd28c17098ee0a85b9c289e31ade896e37b3d235d115c8640b94b4d4785f2650457ee324b22e94f7b422d6c542a8ddb3029099c6a707c8830b5cf9fd229da76dc72c05f8e76b3436b0d6450a45bfea9c2338c0e5610ca2282710c4e81e3d8490bb701bcee8e81b208f94cf86316df1faac2387f18952d452d8c7a3baa63f308dffb99f8ed8c5e3e14863658f94e6716436bf1eb2acd75490d5b07cb287fc120f9139bc3860d4571c472aa640c30ef0e28e683cd37f9ff82bde30d34f12e8d8891b2ed31b555498b56f50a96327932fc4d64dbbe67b30e72c689870204a06d8a3fa179c8f237be42216dde40237e0f85ad2086cc883e8df8a5da8f755279cf084190fd53c9b4c03c9b28d2a46ffdacb79072c71bf06bf7839cf7641a21a4c49899210665ddb624ca4b972dcfe98d435adf4cec1e06b0021f3a8eb681ae46be7a9bb0f5b6b19db720c2bc02d9425405b8b5cb9fe126ac4b977a69f8dd85206bf3b48da26e20a71206aecfae6f584e557264701ba1d0eb867719d9b785007f52fd6841f144495c6bd727b2afac4a583e233d129f15444c3f2780b193de4ff2799f5a43796e69d024c7d398f2e4eb73179a382a548dcfd60e0569fa973c5fa23fbbbefc087af2e8391d65277281b09da1407f965b476c668da891fe2cbe27fc22e615cdac372986a6338392039694405ceadf16ea4a428ae940c61943012783df89ef2189fed0f539f0a02345fc10dd30ac030448dd3bd415cfbf8101e9b578b6677342bd842787773c8840f42c587c410309020daa8e33dbf99bcf70b61699a465209288003597486f6d32a78377239bbb10e78d9a7b10dc5a7b03160085c189ff340ae77a91971be2c93c87a188f91ca38d00b05ed54e620a5182d6b668014e035699d3590b4b037ef7d591730f0a2eb35781b2087a16eeac88d53cfb990c8abc04d53b8dd64b63c9249e3bb13c23a45675d36755b94111a2158946effbb786d1fbf55b4bb88b4dd843c37050c6b0e059c29de6b03863c88936732665e5ea2cb650abfef52405e5ae311043d9039185ab125727e5ed3a112d25fbf084b04edbd0e4aaf5bdb9d4bb2d53eb85ca1d058f88c3fbeaa70f50af39e127479b9d8540343e95dbfe9559b24a60305926812bfc83031bdd5a39b1ce1a66148c0046ccbda36b79159fe20fe5fd5ec0524169fac6b2bba2e354265695a1a74b83b4918493ec3246276b0a00ed8fc3631984fee2bc56609d4c6354064c521f1f7c2c809d868be329b00aa96c442348c318f073874fe1bf27441c9187a6d959b6eba7743c10160cfa148b839badf337635d8490fe8a4b77c1299d8fa4992f68c992962733b39bc04a81bede821f16f3f8362e9b5808a60ea4c16f8c1285343a3dd32616035ddf7a1ba8be204b0b96a1929095103ce8c488a16ec6d46c9723bf2ff123aedb1f1f364aa953f8433d886bf3ed4aaf51088d7b4fa34ed681a4d192562214cef7e1505088a51288a480758ea5f436263d57d7c86fffd24eaa5cecfffb902eaab6f3f7c4f882008410d31348030e763c8aa86910de8696e46fc408c2a21849188c1912820fcb1af3414db1df387743a6f173208231e160f505857dce3d7d5f833d66aebb4350c6d353fc4624a6651942313740e2cc0f5b0f30a816a32cb27f6f2e99169c52cf780fc41b15880d275f085aa4a8115ce32e35a296a7fadd298585404338665a2a199fc4128c28c675f0acc820a33864000f9d7682701014f24f166ef9b016816ad57bda2256567559999c52af476ae6f4523adb6152ab5e43894dbdcf0f0b5398a6f00249adda891536b58b0a6a9465506184cc209040adda896491631d5770d926f9be128f5be3034e638cab742c6062f11fdb276de8bef01062d914e13485773b0bded0a804709f62661dace63b6045955ce280d6b9b1245ad04d535510e6dea064df0667a7fa5bf1a71cef65a2f16a96878b911e7300603257cec64b8c060924db6fbc07bddd838fe1f5af284fa25d95284cb3a0cbdc803f1d9f865175c5756799675b2646954adb25126368b026fc211e5398c4bba43209941e38a9ac33863168ffd638422c2b99ece9f8bbeb6f1c536f5184c41b05931babb0da17648daae0f566a191113aa8b29038e35d27cc29404e879d9f04582a3c825dbde0b96ba5a7a685aaf7d89f454ed3e4a56df7b8d33ad4c70cac9cfa914dc1a44c06251a0e0108fcea8f49de8555653c07f1a1262c7a4b350be2ac411a72c26c6be45432c334d6afb4f0a71797884be19c9c7a903c85dbb10e2e1038b25a9021adddef4640dd3d92b95414f3366c822ca63602d827f2c8b6a1aa5cbec843eea324d51e43ea27be484c398d4a78c1f08bc35067f34f88dd2c38993aa792e05e8abaacad0c720833b8705a60c182b9318b65a9646a7f796d8cdb40c935c9281beabd40271f0c4ad1d233908f9516b5e5d170f93b2fa7851e43f0037d610d5af71a4bd0228ac3a75a6e472a54b2111565bb6773ccaab533ff925bf639bec5fa11297e27d3e5d0f302f5679ad4152cd67b10e94639476ba33eefef742c89871c8c8517b8cb870ec129a6ccc3e5cd0bcf53d24c705e88322e72b775352737a3ddbb8b052e0ec07a50f585a61b44bef6638478582c3217b3b1f78646d9cb4cfa724c76088298f5bf586701541711a334ec5981c9d5860d51d87914fda43985103399cdd4900525fec796700252a2113b3049994a26d578c4e4920b9514792b30057e9ad841b00dc7183b4be7c1778a625d19a07844061da3d8d8bbc27b5954b2a2599fac24d062434d07110a607eba6a05f0a866fc8cf57420d7fb7a9d7e8be98626b18a4854a400dfc1a887aa6d892498334406a415f54b85e7f8d3838ef02aa8055d26d1016e3513f72e0bcd82c05710b47c05edd9047916b7022c184481054f538e3ecd162e9f351408f0f21f4cf2b4da1d6f0172202777fe8ac36e83df05042a46f3bcbbbb1dcf216aa7a6f9f7a0438371f06495631c99f5bf5acc7398978e29d62b403bd5108a41313ab87a585b4094ed87579fd96f844ef6527475de2a9583998542ec09e99feb3128392b60c86bb5e985cfb84e1400d6ff07fa4e690705e7ab56a457ef39cb7c50ef0a893a0852159de6fcf682f46ed5aa0bf60da2a97d2f7e5fe7d3866a7de2bc866b87595d46c8114548d5373a14192c7a53a2a687577fef57f97053061d5f988fdd27f4eaad256a56af1ef78395fb4d66d4a22984fac11b9b8cd6e8a35abdb496a59e71f1dd8efd00115f8a7d63945382b48a77dfa517498fe8131f75559ce571a182ca7db2f0a9ddf665b77ec1f18fa9d205cc0a355481be8c02a4088a9f2f8cf859357b135538033b1d48aac69a4e1b62a7a1ac5eea44f0f3cb54a168e05e800eae5b0ba9d671e6b7b281db67e52af7b0eec47b78bdf6d4222a31b145bb01c77b466d6153fc229be7c8ed740a6796473c5d878d0751fefe96575d96852e43c1589300c40a62f66770581bc05df850401b55b24d7670b16fa2f77645ef1eb6623679fb9470a3c7fa2db26cd7a365e7b2d86ba463f01fccf9dd2fc87fd9d318431c4ef7f3cd76ca15da0fe4f0bb1da470f40907fc7bcfe5942bc558ebcb993c543a561a6ad3c7010561e94f0eafc7dcfcebb253f8775b80f83f61499fe0e16fde08c54c2a75018797b1156e5a1b16aa6899c7d4a56ba8fac37b64985225d1b6dc6712f15ad0e4b69b71fd710b1ecba1868c035da54f97925a9cdd50c67832bd95a0fbe9b4e63840ec14ec98f1889e38d168c548af659c273b55a89123c5da8a8c317a742bd6995ac69e1270eae0dd7ecb069d4d09fbe1e4d5e341aeb5afb8cf7659db80a08095402ddacd74f403a8b570393e3efae5da8e26bd8d94a8d9e42b182231bbb98cde663c2457eed51a8a2d68ae7add6b50242a726d6a47a6c2082fa3120e2a3c2bda1d0def033236f271cb29c81c269bf31118013860c2ca0cbfc7aeba57f69d7e1e58103f29f91350f897b6a15205ef06f04f6b6146a36ce3d629e8cf1bc44d9a21b3797dcd48b28f930b3f942a60fecf43696fef2ba0f896b63d0be31a060a76b2e3df6bfc198b114939d6a08690293d9a2679db6e241ac8685fad412c6d4766388ab6a810bb105825cecb5e473ab0ec1a75d8acd06057a108c2c92985a28848047e373b389e4eef32cffd470c013b4cfa64ed0dde49fc88673dd2fc0b275d1e8918b26136b89a85ef0bf2ece8571c8e46f2c363d6bb61583f2eeed8221c4def01d0e1563ad87bc209b22eb570071d469fc5890f453f01734755ebdc84c44d4b28424d8166b1c7ba193df6dedc3d55d213a3ac77c1590f8d59002e7d56edee266ec44d821a2198e42d0403b6b60fdf415720df61532cf1ff71cbd9e14825278b063216ab1c09f172c3e0b506c1b4915bb4d7f8bdb531773dea813fe44fd12171b5c0e352b195ef786d6b8b86021f7615609c3dfc62a6992353c7d04a90a55c3aee00647baba27576c61b8d9b471c198318baf177ad82e2655a565b72a7f985a026bda761bb65543394bc83385350ecbe803fcc6a3dbe45f1da8678e7dfe8a683d3f912b9123ffe8124fd7eb3fdb03918fa06031d9e548b7015d07ac957bebe857564ec55ab7c29cd967c01cfa15cb24693543cb1349aee6971545c8156f9469b15d758af40c349413f807438d0820a1af3c4a9dfaac23b4f9cd4b32a0bdba82323beda73d7bc16fef303d914859961e9f91b97ba5f322a671896172498497af145eb0febb63b5a6b7703d855be2752d3d9e669ebb699fcf4667209a0223530088c50d04268a1594f40e62b413351821545b060499db18e8c70fee70a0cd4e93a4f7128c6d2315993f314075d02b4638326c0026b233429f4abb449ad97256906a655242b4da92277198e58fde956d0741d1999c6882cc99cc78e59076a307db675bed0085702db36264362539c208aeac8d851612053c6122d80e0ed1b350e2adf586e4eda102493bb74a77f6b91cf427bb74a88bc803457b445acfe4113b0dd222393653a8f0e5f0921f2292d9ac2085204ad95bf07d935c8988d8ea706cce230a2c6da0e843ca02735e89bbe5002f2d20b46327028b07405fa6e24f46f40417a9c2e76f2a1f51b1c2a458c8a11c1c68c71ecc199ec9765d37148d435887adce1b1114a58984dcc991d6e46b06038039bf9ef399253ec82224b4549c6ff809a7c789af9e8412797cae04d14a8e410f36608002e11aeb91201a24ee60ece232c47253c0d7c71b82ab008833e9588bb66077f673c2500fe0039f360078641d8b6d01c293c9d06d1a00301336ed9660ca17be160b52cc346c0819b2dfda5692cd4a9103cb3c52e05710b1f8a8f3d449daffbe7ca6f3f3eb39cb645edd3d02b802dc6dc7438e849e4eb0bf6b7fc6049c2183d3352aa2a4ae5b4c12a05ead94dcd219a105a70792b5d154a01e6b9c6f969e128fa360e0e2cf576276d7cb1e4de15982364972fac34c867536d3ccd80ca42e7c58879011bee1c37642010c67dc0284f95202ec63333340ec87540e483435a56c5743639d3d0fcac79e1f2af7c224f17ed6d763a8775826c8d42ba73edb3b4ba2518d91a807a6de26e4dbfc5fc9a26d90c6d8dd2aac6863582b7403e41103771e3ed11505f83610b430904958e142ffdff15c2885f927baa1767bd61da7d7fa56b2260887fb7686abcd26be034b35120e8ffc4b018ef7668568b34e4f69015be478f587b5efa31f03918888acb956446eacc32bbc6ce270a038a98ab3998ac1a3e2c4a7d8736e97ca2de424a9dc7a58e241908f501d78bc6597e418dd06334a7eb9aa7ddc25adde4311331b487340d4c02d93e87fd0fc3d09292793ebe0c441b20bf5183a027495b3f8412d5fd6e39578411e370a7ac0e7a750fd18274a8f463c0db9c61db483b0026e267c7f6c2c45648b5aee0ac55f0d62f94da5307944bd430f01e10d957b478b46324d4bec3960910634f428c4cea2ced807de597bb2d0b911645b1fe2a68590e4b3bef01a4ce1e05d89ff662492c5d2740ccf7f3739d1864a855280510fb98f0a42747e51ccd43574b5e77755aeda57aca1701a2d18f24020d9b09ae31cd8896b53f00a2e2109a2cb3bfd0ae207590692ead461a509800911e9484f0b1e029ddc000f31f10a519f71827ae23526f1318b018a6c1a56790d1b823859b19f0088f6b3cfc138231f4e6618c4dcdc1d850367d840a1c52777a320de1df90e684a442f503efb60574ed67700c7574cce7433a8fbcf7f4c14dc7fc52f15b8f71c3743ee23226d29a7780ea9fdcadd967253d6983a5b9017c5c080c9c4db8b1aedb83126b59c671b3f80ba36840758650ac9865e99e9a6bedf7ea63d8e8b016d99f7f334717657ac2463cc4d520a614aa0fc09f6db68abaf2a8f79084a1b2ce9031022287ac8024ea9adb260f3192e0f1b32b31826fd149d79ce3b7c7ec5fe914d5279d085721f70468ce6dbb2dfe838935ffc47155aec998dc431eafe2380724ee92e4e68691a328275df5e255521a921e3500746e8122fc0087776478f61c289c32a869618274f80423b6db000450d0f93b45aea34a7103bd3c4903c5b58f986a291206458729d932a4c5e2a063c33189ef7d969eb123c207b088b9e4a8ab8cc0eb77ef4c1e8b5eed9297bb26c4d548c33213634d6d7f6eaef099f9a8edf12d55e8a937913a0e456ed99821f03c4eda3a4fc97ed6f8b2d655e2797d664c967d6c35cd44533a13edf6c3edd91c44721e8dc19b0904168a8a2db35dade667e3be52cc73398ed2c0fc4c43ef85505b67d993df07901fc2863788a2ffd3adede94071d8ebfb09c6b357e9e92c3882d5863fdeaf81b5017d89fbc8a9ad44e2d24a352d41364c6b79f5d22c7f56ddcd43e63b941318664ca26b323d030c727650ccf08ff2b5e5188205dc7fb39bda88d63c57835fc3ba6d6d55441a1ceec58c8d91b885dcc697b02f210d1a917e2b462bb33c30d75099f7d613d766ec7543579a965c8c374a1e4ae2ae2818822cd15883443a87813cf2900ab82d4a39bd90c5813fdd5056f13486c6792a8974f7e31ea0c61f38eecb90574870ec62227582c795864342d7bfe3c07a6cfed7f9e853193ad1e14689d550a4c774690326e80d68c2abb6d79b2a61edb825410f1e5a90bca3361c1e21b02fe8477b112ddb7a9596c7d5422aa04010ec54e015422f69f3422b1c35e922337c9b9526df448f790121871a7a831eb318ad88186236e579cc075f01ea6314e23554f80fe998a8d23c2660042c4d20072cf9b6b8d2f498b7bce5a2c82fc62cf29bd3898b0f9df550715c2e8640ba112b05cd8d2909de32fcf7da9497a5ea7af557014ceef2c91b2ea28dbe0836b9e7da8c8f699cdbbbf56b510115aa0135154cdc49dc143fb0d736bda81077454143a85bdb72bb381ee73e84e4c9cf42b1b0a5e8389681673ee5fef0a51619fd5b06c034cb9a394f4b97079ad93c56760ca3956373d3f0222629ab1daf8c26a574d369bbc874e84e5b49a1a1b98a333c8f64594bfe06c80eae252f5bfd59119ef266297b39963ece3e6ffe9bd8987d724bfac0cc38f8496551870d5c2c6feda418f23fe5f8cb3a21054da674eb4022fecd3cca2688c01eb744cbf5f7e1c499f151b31414999b4f6e3f8cd85d3ea585ae4258780cadab53bbabe47afdf03b64aeadebd3fa4f9d94582e3c784a03350dd10f52fbcc4bb177b7e170e33bbeb4f9ddc822438dd50a82092b49156650bfd40b2e448baac865320b7626b91d8e209cfea9a050c9c0dc83dd219c459aa8cc69e8818bdfa8a8b05303ad157e501527a17f80993fef8a12400c6623f1f68a3679eed270b54222d5d789460d867c5aebc18e520cc1aba74df961608e7e788ec194d4eb845c97eeaab4565d8bcb395b12fa068c54777bf9bb38b9fc767b2d261a8a782ea29c3e2e05e3749e9febc3b32b8b07ad38a7dbff219d3c511c44b457a0562644eeb3c7958603002ca020f43196865e58c842bf91de3c39e89496be362c0d3f674d3f46fb64c9d7e7f9e5756cf5ed7c0e1109fb8c8b22079d9c2487437fb1879b3f38ccf46195cd28303d98835827ab79f9b49929b470ff037503d26bc365770c4b1c9b0641886144b94c53725e5af313b77f98e3e97f1f0c37626c70c94c5a9e63883a9d3bff696d54e52a77d90c102fb34d349829dce857d0f3120d8d23b384fa4e110bbe091265a8afd8236273d416d0d1e53bec67f1ee0296e2ade99e07b9f2c3fc3a2b2b79321af413043de9a216c91300523e7ab985f6be9170d48e64df6ff5e7439710cc5e07187475449ea876423835d87f1750da9a7ea0e1ffcabde3282bcebff3fe33707d508165f61ded2aaf4c31d8fefda737818e864e3c66c0d35363c9a00801f4a89b238be336da2e5eae6e86987d6588f3217dd1b5cdf0761854bc458d9e1ca2a4cf86886ee9495f22f4f245322f135e888448d31dc07198f65886dc2a7aac636d184c7c36b86e7343e4288979d46d690aaf7f1331087c00c676ccf90a7a5ba170eaa32b6307dc532642ba3524bfa5c0ff0e504e8a991e2d77a2eec8756176f824800b36b100a53c8280756ca5655589bc9cacca983b9d14cacfd6ce14c34d80eee4b2634ab37092b43e80565bcb47ec4217453dd31e8340fa8e9b700046c6aaa0ea25ced8769066944839cd58c7067ed57d438521bc4b30284658fa08871a0e76fefa8d091934450b11cc6383c405b4b66db2d5b06f047e2b941883963830205ecd82a2e5e436938caac3550c0aee46b766834efe2f5d7e36f89dd42e7da3d40fee25e536bf9f49ed5a8f79c4f9149341ee84205788156e7d72d48184f72fa6c956e0fa5a6c83c33592ea154106957272893c8ee1eeb5c0619640613ea3de2cd409fd3f26169f01f0ef9384420a5f5b1809614362232ed24001392f4029ad0d7ad7ffc23d1901e8c6ac5b5ae01beff6ccac3c62442f2002d8f2d8a42e4f8fa08d3d31f42a579f2b33e22ae24237c1a3f52fca790402a2b1b8829fe367faa9f3b6af0bee3867ed8d53a04e1c399f8980e6deba6c83c140246b1c0361fd9d223a2bc7ecade2bdb2875e280e40c4cd02900edb3e8e36d84d16e228adc85d475002b238211465f0abc971d77cbe073948b83515a272d85fd6704009cc99632b8d0c3436b5be54c489e39de9c41c38d8e3f6fc003c8dcafa8f9ea89c16f5612f5b74a005607224e419bee123428d90919148637c5fd5a0902841200611a1854bf9112a998e34e6edb633284b2e8966e1830355141cbe9b2f53ef21abb489f338925a4bdd1c4951392b18670d90417fe0ae7c2ba7c024cef75a39dc050f8350fb36891cb672725a2d9e5aab21c4178603b9e3fbbd4762a45192c7abde074da99c3d4925677d462f6c9bde7f57c0c4669ecb8c76a3446dd2d1e8135ee5200ca480661e8371528b9f8974bf4adc67b9adb6721a52ee56b7aa2ea0436aded4bc739d0eb72e65ebd45eb5bd0dcce8b42b921a467ac2c99f2e7ab8dd30aa158e82b6cf761e66e5d8b3ac8136dcf5a0cb8aa4dc69529b331a23c1d0fe1801505f09060ad46f45cf563924f5438fb63163d74091ebb0d350401d3b14ee42749f39859d6580a3b388e347003a489263648723f6ad63dc259368209566d5069f8672891399c7faedd4e22660ef33f23f3821bb7a87468a2345e5547c0ed3080e583f74a97e5f4e4a4f9ed4f546cf922471acf1b87565c9c1dad89fe5bbcfaa3f3250da795c215b6aec886d5d2d2db04602a357c87fbafa65ab0ea2718a49d5dbef2c7338c77feb41557ad667e65559eb0d7128503636781b9bc985d287f364a49e8ff2f057205a27355878f7ff951dadf182ba2e30f0c678b7db3fd99a8cfb469ad278485e5013b36d6278b87f3336ae81473090176705ca3e6d7d37ac5d17284aba1ed17bf6648df801f80dd872742dd97fe01eb395d074349661748225ffc65e03e7c6f0eb8c19fa0be243554a154fc932f9f916b87ed31f74c9be5694eda30a7754260a45a084f2bbe86fe2eb8265e55186fdcde2da73595af2317367461b841d4b3b63d9df170a7309a4d4e05740134df2aff5e01febad20c8d7cd5736bf34337e820270c74f406ceb9c60426439b723fb12d61e0707f32289d792be22e1bb9727478b6d6a18524ab48718a3027a97e4e55245babf9dfafd593cd31c2d8ef9879595257a8cc2de51be16401dca0bfb131136b3830054886abc986c30e2edd81098c0a8a3c20ba8e7b0f2c7cb71c86599624f448bbb97220bad84e93a26d5151c571064ff127eb0d6c6266fcac0a64c86d1168ee4950ae0b14abc0071994bb2692cfb9aed7cf4ba2c3d04fa8bb4934e9d0e96b28a8398d1c1249ab6d4feb949ed41df629b0b4dc331ae86a9f746200387be47a60b2f486abc06bff3c46ae280da1f4d88ce1c625c3b86d3a860c8c52148d4ec353022d69f04abc3856d1b4da2990fe3d5f6e9ba10c53f5431cdfb169a718f7bb67a1f916113a8b198f1cda3880791482f3c7cf4b0a35debc79ef2bd78e3d79960a6a9b3c53c104f61e588968c4ab29246cea69813c209b72c918c3761e62e860ccab9db12b08345481377e19b235f2b5d47a655b94d5e238364a20f1f4626dca134434faee597895db44345747fb5239e26664f9a824faab34a89095dd9d8e23019c2abffa0b6dc7cda9b94ee14fc48b199eabaa337288c32524008d455b26349f993e8da12810ace0ba530a0c14afb71b552ea62e80cc90e5507280074cdb98fc5a0353d64edebce080b703b3b375c89bd72b73c601da68544fcd85be71353dcc17cd3b20b7f7be6fd000400bd3453d6cbf3d9024a189b5c96fee233fb72d8e066c6181b9de690e0ecc0db7665840382505d60691e67258fd1c314fa24b986976f19dbe8a4f888f21de859aa6d21424b58757728fb1b1377acdbccfdddae7fd28acc313020511fcd4c652538e80999b2ea6d68ae79cf4cca8c77b22453f35686f8fc36efe09bd227dfe50b6b116002c4896741209310976b20946240d402806f93316eb7a700df23b11e47a97e5c4909c4d02c8bd6c2f97e5bcbe4ea71411ca634e27ef2a3c00e0838afb1ceba540f4a653becc8922a3ca7efe47186d9ebc6fd6599ac74a87e2779bacab634d496291ddcbedfc3857ce9703b864f069c0b7b32edcd0c26d7b0005c02b543007c04213a45538152d3e4b7a4440e702ef906aab3f330a9666fb929f4b0a6ed7a2db98252137cd713aa184d1a82d6c6ee07757ad9d222c3e938cf86de0475460bf1a2d512a8044fecf0a9f90624c552126931a4351edfb21ef73b454bd75411ec512536212f4f15998deee08c763b69c64da2d39585ee198ede4297eacab27ff4b64d4f864b1e4a060c2739178f4644eaafa035a02c513b7c224fa009c94df37daa0bf02ae2eacb595a82441833477ce4b983c2a053a2411b001c8db10e67c27de196206848b406df84ba947618eb0c481a574bb46cc6e938a6367f357404d72b5cda18c402729b3def0a3567d0fe7c5f6b1436e563e615b8c1ca874e54829ed452c5c8e1982b68292c5ed4cfd5308d5104023ec54caa39b25aa14a40234cd96dc4335773ea52feeb8450d270bc0a7425dcd1ce707308d060fdefa4905c1c013f2b1d295370eec82fc5ac7d0f4c0930389aba1aa98c80a01553482e429036f8829a6a27b9d2090bc650ef530d92793cdfc544c3a98c5cea7d7e5b7defb5843d4bfaa86dfe37ab71a8a170129fe9d4d60ce605961a1fe85dacca46912b351ddb73d22282bbcd0812e032d13ebb4363e82ffde62813398b090709d14a2a05c9b3fffb6e26f40b7a6f4660afc6be2ba8d8325081550d24c8fa2a5cd695ee1f6a4526719acb4a2e4be6ffbf625b8baf5282afef9dab8fd0929e1683a58d8989c6becec43086c76f20766488b045098ecb14a6e43b95d3f31c148a51d2cc2d8005a7c716f09e7067913c97527bcbb2c5d9485f03463f5190a8805ef0a6aeabb4c4cf5c0827a708b8cff0bf0c84f007d7a898a6db5944dd8813655b97918097b3d5749fbe9ccd790f962f62abc85a80cb78b52fb9130ab68d38973817053f7aadcc04106bc4a3a11ce3a528d8d1a42caafdf4fd9a26056a8c19d95e0c8649b009196024ae0c2b4957c2e1d719e9fe66f43ce19d8e4c193a899712e0c63e704d5a9280e5af2163b23942c2382ec4ef4cf117c76933da35ee79473151616269b215113726b90923ea9d2cf6ae383f7aa2ca5187455733999db17435ac0273986bc674640e13058539e2b3efb55b26d858b8649e6d9bccb89d08869e5b13b696fccb1ab85605c06d1a6e0d386cc892481afa2543dfb603ebb90f80959bebdd15e25ce8e2c9cbaaee8cbeac5293b3ea56395714ee7cc945ea5b7aedb8b3e6da2f21d2e0e7a35684b9a3031e73d522f8f6dcec9ba1c347d500a9b4dcf8374fafae85f1ceb3adbf81c6df9cca9bd7d4d9c2d935251c15e3f1ca43632c4687835b798a6e76d56f42471d8b30898a6c8446da3a6556df1d726f4caa22d33c79032a7c01ce0ac839da4bb1a6e12ee7840c44f7e01b58a8b2710c59d33827b53894f0cd9340698c0d691ff7e6eee844135ef6be6cacccec0f7010ce1ad55a05a63809193eeefd660456bb721f126badd0f6c730daa95487b75298b1b1dc4be18e8644ccec1b16e21b30c3f4e48b5cf0c53e36153ad51a5fdefc0afc295f880791a150012b7d70e5f0e6f2e7560076274324feddecae740cdb2961e2cb1b1b653ffd896786a9aa07f0e6bebd533faf74a7ecb83fd4c607cd76ce7b17b7d6778ca03320831643b6ad31065c41397ccabbb4bc8dc05963c9af67c0780d97d89082e7c888753280a530676eb27924b46fea3697558bf60e3a618d59bc1dd5954d5ca9a77443995fed85ce926fcc43b7755e09edc456a5c3246743f2cbda0c88517d8a2f96016d2c724d9203c75f71859675bc39cdbbd6282abb190310d1322cd567434611376c02e62dfae61ad21973221c93b6306c4c43c1d5d72a92c75ab10cf9d60d06a1d08d896306652f078884a6e5588b3645403cb8a790f3c080ec4552a3c9c40d75f278035e507abb9402c0c79f0a5278e9bed8ff4487ad1fa9d48d8f481f01419303eb94973a0e3cb909cbab70e7f1c05aa78561b264444734e57e31e02ff3c1b49c84f4c3e382705fa9db5939ffe812d58e5f8bc43baf1f383280e96df8119ffe805321b2ee767f6074f68335cf84d7385bdc04e83604566c878a86e185bf42780695f29193fed075d73f29cdd027dd54818068251be8e69b00ec06b01ed6737dc5954895e143c80151e6947ab78faa34ac35579b06ccaefda85230ca9a17b6e4afaf0b2b0e0a7423fe3c4ad2f958a0ec2bc20e96f2c0285c7e8fb87c566e4c4c80cf573b82ba1d695e12d65f104408bcbc11850485618ecc0c97a8cd61a59b2859dd16b3679490138fd9c01d64b40005c911999ecdf6852b765a17a775220ae12e0451e11dd8de05d779603e0ae98c4af16423d2a583e7005a77684e40b2fc8a773a279afb61349a97f821ea397941e8e376aaa3d2ad5456a49f5f2419aaa163846bc1e00ac9790dbe7ce4a331b94edd9f7f062ab5e88de726816ccdad51214e823a4a47c6ba29abc02398f897b16eb97c78367c106a3b713b1706f23166d8220049caacd5d30e160d957528fa5be562368ee9133f36d1c39b632921bc91b2f23f5086346e1ab7adcf0142443308a1cb7792cce9acab4668425921627e46c60487371734059292badc01bfab804d1cd190f5d7d600dd8462b74708f76ce85b89d0f3913180f22d8810bb5c58b1ae21e60019641cffb1a6991c2ae3419503279746be519ec8a1abdd293a924c097cc7d935acfa5c61b19282258a5925337852aa27b033ba48a3b7c24fc22311d727baa9b53d0808d1df1fadc9af66100b9a7aa916bf131f4214a6266356d5b0751d60ea9a01479e46cab0c1108e39a93dea933b3a93f7b07cfea8e1b0f490cc35653990a0791fe6c9bc6aa5d0a698d05e9e40eaa02b3c9bd5227241b1a68c0f8a29a54acd2e2873c9d04bf91303f3640aaf0bc7563690d70f62f6315fa6d98e1e0604617a3c046b5fd9b322c3425ef9784f20b3b4ee4e059b4f8206bce9d8cae777ab885f3be288c20e974848877c7650d714c0f26c600dc0b3926151ea8df6456de32ce279b4aaef6a3fefab3681a39e736238f0ca6a343f1fae2733de8b33fa276590f261ce5724c33493defe709ac9e0f05dc3a075e5af4668e851b351340b73c9f1609a24adac50bd9ae1b53b2d08832b2d77b8323adbd25db7acf98df7a63d6cdebafbaaf15215d7138f52017c825da56e39b76732c2bbcdda489815adb91b13224146152858b668df98540e37d7b1c21c580ffa74f036f83c5709249d64c781daf50d5ae7926add22188460ea056f386e7530f31380d26ba928491ae391f0fb1864beaafaa84533eb4fd348b5a715f76301c360f6e0bb519a24d8bc01cf4c203382ed0b2cd15e910c6f268f91740f3a7c0ffbafbbfe4fa31988711097d28925c4ddfb477c430e700d8a877f3d0ebd78629167e61b846186f9e760ef8c7991cb53cfb3c075c692f3aba4b992ac45ecacd8ce5932ae4d2c77dddc5bf0e237a69355cf1eb248d6794bb2aa3f44d2e46fe3607a2ea86d41df6badfcfbcf53263d31ec4eee0fee9e8f5a093aba23cfad6c7a69c09496c04f907be77f7a4b9dcc19dfeb2b39afe4a478d40576f7ed17f6a683193369dc972b965b4e0e661f26bc6fc4810905b698e7361d666c4db0d9d8dccc08a43bda5a9e2f2485fb29e12270299741dd321ffd738321339625c2ed1da51e9baa26447b7b63318ffcd11ac902a7c3591031d0c77ad4f27b71fee0a8e0b374b26c4c6f1e8a52eb7e64cdf70fb04580e77c18127434529599e852b8883dba5e061749473a4fb96025d6b687f58c2988d8ce79491a2024233512150c5b80062003cb34500cfe9822b658930d059a69c8d1ade98a4320d3b6684513144eb13d59a99c51e952cdda3d2a5c6a54f417efdf54f00d9c4a7c5d344a73f62f106ce8b4bcd675697671022b889bc08c7b7592d8be86ced960bc39bf442347b34da450fb7c9089680bea094c4d4cc5514d1d090fb39996b0a5a2df496a65abcd5ba5865c6b554a27cd53de2a4a52849a284605a5c9f6428681795f5f5e0793243fc9faf67de291cc011acee7daf5f11bd29d7e8559e84dbe113c6d2e9c7b41a8c630b1f61223b5ac72b0bd3c39abee328bf0d91e2183cf0d25e248c2e353c3bc61658cbbbcd4305e2cc139dc04d5e03463c5c2906e17b81948f964d079b40bd42c9d119e4246ecf407e670039f4e702de9dd8e8b411b498d1901e6bd3a096d1e8f950de5a09776c0088d909b03ede54ef159144dde01b074202fb7fba81a6d29ce0412b4eb3534e630996b3aa17df54380eae37b4a41e098d36860e19a19bc3b94191096caead48b087b6bdf7931c9382fff9081d6cbea78e70e4c397fa463e320e2657a4c7a0dff772a69f500b2dcf601709ff05fa64b95e58b3574a552d27b46a5a6549eff36791bf7d90a7de02ed01ed732439f3326c63354ee3f42bbb658e137276341fac26df5823ecc480f672f2952eff19a0adb4b26193f33e570e4643a2c9cc2a477d9a0c266906002241642ae9d8df8a9fceae31b54fe38cb4f108c1982ae2c633a0e43401e2b1739522e587b074b8561cc2cd054074cf450113e40a713b1ba69a843ecc1110db407d1e38a0f91d525695859c6c200755e2e9695814b9439179da1892922d63fa839b9eda276c14a70f8ebc5765bfb0d628ad3f32d609c01afd65b5bd4747e2793a05cb2a6938b11983107cbde42917ad81813035d523b64ecbb1f042959245cf98112fa850a32265b570e24eaad05635c99f90ca195e6ec8450e547768976e5ab39329c09439d7cb3c100fc659b6ac6b279d30492e77bcca9b958ba609f47dccae6e263af212ee51e0ba21b4a0f1794adcb85aaf708706bc2242e5b88f0422c82118b040ff93bb4b8294e8cb85c40122ddb59667177b9e4587cca6ab7f1fd5a0ea8750f1b6886d45b7c44038d457235b8e82644213f2fdfd38c3737ef5e6eb612f0b5c98dd209d9d5cf4ec4da371a09405c4dde9ebe825cfca7fd6784859175a72b7d58b6a13c6fafcaa8f19d6a60b2ffb7942edd19d1a3840be727dac72b32ecea8c937ac0fc81741f8daf40d9ea335c2814eb3070b9505e6fac98e2a2dff6674cb01b1a1abfa40dd0b20599b43afe8379139e451c070483cb69e2cb22afcc627d9224cd5c6804dc8cfe1f854753bd14e59c3721690cba26a02940f95615f4ae4f52929162189af42863c63c2717ca6e42cee30a4fbd779a225d9d8722cc800191ad8cd5976883e9639552c3b46850d0626ace2278231856f21afa3da3be882edd503ba4177ce09d36d94bd5b2dbd4b3675407543d1feabd38f71e8d498ca070835f94c3fb9dc68b799700ee04b579805e7ca5984ea565c238955909b0271cbdef2b86c91ea3c2516b0d10f4410b5dab9163f92a85a71a2aa01397f7f868679627d089d27936d5022741240d5ec1662d30d7041d002549bf7ad9b4b558c0c73d1e853b0e0def1016f5d190706bce8c2183f1af2f7385302d9987c076c3d1d1662162dd74e861649a2a65ce5ee116b08f7f868ea64ad9b78b68e2dc16613826e5140e7a4bc5a3f2de816e6818647475271cdddaa70ae38ee21364c53292c901d56ada3994f1a3452f66e78eb1061af4869a2a006d5d47f3a1580dd66821fa2d4ad84866648dc6b176dc201568a00e05537985dca491129aaa71d028012802a8674d8a059016aee68b6e24d0667c2ec66e6e74e538dfc593450476fe7e3097e5c33e512858054f51f2f05d7f65b98b4ccf44a2abecbec4ca9f96ca41bbdd1883683dd0319d957b3aa8cb56cbe9aa3cd3ec5ba4ff62938ba9b53ece5461cb81913cf42384533b3a56ddcaa5ca0989ad8edcd653ee9218fac556acc3a8084e764a3f33aee235373de870fa7c0d1924b3d4e23ffc5166b8bd2881064f01b8a582966b155382af177c86bd4d387a2a57862f2d97e3db9ac8940e7c0b3dff3a64de1a8f94e15b2e2da062413233f3a42a0e217d3d092666e2178afb1d0d475a4cee4414d1aafedabc55a8a506cd1c283bba748b89e9a3bf33fdd8ed92a0d5d1447c3995417aa78c540d2ba0d693eb341c44f0323d9f3b8894ff022d1be2314f0485ca83cf031e98768e2013b2a234f589047b8621653fd9e3c0b153a1804a52de62b8df9ed072cdf7537415028fcd29f64344e44f4e3f2f54ef58e57e91b9f28626fe8728413710ad1b17cbccd462a1683d86057f0be9610956053aa3ac875ffb1e23fb41f9e59caa7957c14a83e700bf883f05402c766d22f418045e6556bb8ddf20861cb627f94e22a24c70738c8ad52077d5fbe822407718a2a0ac2d1c5168b6f8ad7b40c8c7e8d08d8314f940ef85d1987818538b765f767f227876a8d154687c25f35ec100834ef4192c0db87d34c4ae69e53bc91f95a45d5efcef4ae64a14c57c6062bbe04727b08d8436a7186e90c5aadf809e4317353bf883abeb7b943bff7c6706c1225ee5017812781ca0868bd9d2962803beeb234646c146c6d4e6b6f51d1afa21576ed7e8db9a80959c5aebb163a99b31b1add1584a5a6fa96b5c33cf63ec3701150cf9e276cd2a8bb40134a7fa3977aa315d72b8b97b62fd9f60392d6ca376106ed25bbc17f2b19b6bc0581db011801ef7295e6e26a83ee5405c31df81bc64451c28c0790022ca59250f4b81d2839c588b112c134ec98e12d8952ab765ddf0f62da7b0038cfe0dc09eb6d0945bea721b343d76726518f029e84d7f4f165e0770c2e5d28836d897348806c6d88b1e663a0641d068cdb4d6c79f57fa1e4630265611ce45f865ed36a155912e2911bc81fd7a91bceafaca1891a3b0f22e1ef3933e5c8bd3d3b8247667e184b3067fe8bf1238e2692e92a1e6451ab7bd3ac3b3b45f18e782b05a16cc479a1913a0e776404a45f370e9581356e001d4d3889cccbfb0ad4808e2d93410c407e1a3ca0fda59620fb6cef6e91d6bff2e28b384979307b31c01a4efc8136768c34c5084559de794159708eb624916506824ca8d82438ffd001b25e84342a82e84b8e54297c8c86dd26b4dc00f22f4a04fa2e8b4ac6302ec58d3ada9d8cffcdb028ff5962835d07e86839b5aae1328314443978e53d3d50c7cdb28607b1b1806fdcab12b1b010089273dcccedf8511bd82535dd40541e4fa2ea494e89eb5d90396feda144e7b606eed8198677b00d2353f2842e79f064150496711bc923b887b9baa4fa1b336fb144fa905da540b6c5e2d3099b540a49b308947fc2a6264b4c8d8d070bbee0e32e58054e1294f34ec08f76343b682f555fcbde7852a69bed39ab5e310c54f8b6ec3d402542bf7f7c133022e913970bbcd4d19fd6bc9e9b63075cd2430a305c05c2ce36bfc6cc09c5e760fb0351a072f71d8f4553f8205ec35f40d299afd3aef61c6246711664f5fd2c06c9980a6ec00bb75fcb0418438f72c9660e0f05cb463b0e2195660d1b15a43625ece4aeca8ed98548624c2ece40d5c905d166dc813c996539c9c6389c041b187d9566932be44cd86d3141d8c3667e2555b3eeae608730ea77d3027f4a110d1f323bf3d965e939ecac68d1732eccdeeb73965f198b585a65a417a79c0fd97a6c4da2ef6d60a4fdffdbaaebaf7a64e41c888ed1a42d0738074c4c4c2d0c4cb6fff6bc1a4e701c15f952b6372ee26c4498e9cc1373c6b0f572710d40db03680de2f7cbf15bc60cfb0deb4c819cdc9fa07e8a7be68c1d2440cfa9117ed298bf811f086eab3609e8ac4272001f8ae5d3cfaa728c3a44dc6c38422738a2b9627a23ccadd4cb42c0b3560edb1099913fd090ec6fac4f1d45099306dcd997638d213480bdc95001e0467f3611313cfc5dc2c1f561a1da362834c1f4e76929ed1444ad7454c377099c8acb68e73f0ebb766a476239fea938f45f0ae71a836bd7f8e61910a1ce79b7713dc814d4fc23b7c7301056164da290c4577523aa28713fe5e77b18261bf465bfc57a474a05d8878bfd8cdd0a3b46a773bbbbb8415435b6dc4eaeb7a857761a56e11ef3f479996a8eb69cf26338ebcc0b273834fa6f4539bd1758491a985784f71b9559895096f89329642475315f3874f9b30d6c15202b01389bdc6070fcb0482395cd798beb583d27654a04fa5c9f44c1f439555555abb1627eca89756ade4ebca0a0d11341d4d749a8df1cfb04a3ee24ed8ff882569110508e2e9bd467e3f531c3c5ff576b5bad258c4ebc0b6dcb0d50522a025596ad6c0a60f0139f7b80455050c34b312bd81af4ca3fe853729b9627cc7eb0687f5a880651e780b16e2f5e85bc3e1e5359ef3f35d67d80aea49d386cb58cc948e613306a50a26c2ad53ed388c2fc445abdb65575d4f58637b251914c2249b04f7bffb87bdba90f97d410003f0bdebd42b45a7cf37611ccf53eb2b62a68f18687a8fde177014006e8a8edc2ae487b1ce636c6652201281040e96231970faa8465386554a1404592d5db1eee2b4e0df298bd165a000670230c5380b2ad17456a4bb39f22bd6cc8e47b27a614b000a5c854317f5a8626da86add29a5cd5a2175462ba7c19308972af4ced0d1bb015e6880c38257384c0116f4341992a8a2ea7f835bd5e1e104519e1e509060dd39c559b55de78b891095a0829e42cf0a2bafa331a06fa404b05184fe47785cbdec78169e6f14b99ad730e93d00a59e715715476f50b84987a23cd6514ae080920a52cd6453935e12dc87a208ec5177bb2379117c7871e462503b58bc1faad01d7e5eaba09e57d267b84b18301b58cb59197caf72dfddc34313a8a43708e2037914df8f0342baee4d04286541874f3f8a6f93bf8012cb02095694185bafd805f41e9016b86b8035d7064496bc88dc23f86dc8137af3a46d2910e696d123b518023d14b8b2cab63840ab216aff7305ceb2828b4584bfe04173ed504415a403be93230def58296aaca169c14e0239403d8c578638a0ae044ea9537e856b091f2b3593b2087db14b657684461e9891247c5a12a948f1abea84e983c7213bd8475f36a04ec988c6b2741d597cdb5a14e85d7248a1be74ec41d03b3df9448e8e2fc8e13d7fa2f19b5a473b7d511d5712988f25731237645a163ba211ba017ac7e292c544e67041231dc5ec502057c0a6778c50bd6c968285c3e1494efc707519e520b7162087f350112fa7897ddbdacd4ff01502069d6244915d6403055e52c4700d55205c95493ac97090c41c2864198d74c389aa98e54445500c3949cb86035678b01047167c74765c95f69e0560482bdbc9c9b46d6dbc666c27a60008f41c398455b7bd783614a1d606f011698d10d2082164ef2df70e930d410d530da61498d2ac0f8a5b9787625387d425b939f556eadc73abd53af816a7b55aadd6cddc5dde9027645dc72a08623475c10ec907103c0dc1973a98ba197cca13020fbe43d221d83ad6baa9eb0975429e768bb0d92f774718d35a076d0ac499ad735c77f94a1c77daafd4b9eb29794926cc75bfd4d4ee21c9e0b5eb1d29f192fa753a764fe944f14c7d460f49065fea0863ef8e3a24fdf29e38cef4c1e6ea0496550cbeecf9784ff42b77473c203fd3c3ee05c11868653a049f65df6cfe81b7a76c0c0923036d6cb9c00982aea74093e956a0b7de6bf89a0d1f8899b836510ca65cd6c5c48226d8e41f3639ce4c9de55ca4f179077f4aa5ce715c27bd1b2c375999de3957973ace4c75ae9b1bb7ee7a674a9d7bd69e4add93296b97cb322ad35b2e9ba5cd270e743d46deb4ee3ac932b875c16ff6e4e930e194e7ddd0620efec464bb731c77b0654addd55baa83dc5bf9a452b9b965702baf2e677aeaf93a5ad8c4e2dedd3580d4c19b73a4a46744ea600b7ccb05822b19ecba76f26e9c0e5eef64b3ec5697a7f1ea278abb772bae03bd1a2ed05693c964329d6bdd18124677c19b6c8c8461725d654fbad34da99f0e3e6ba7a734d0d41d6ca53aeea9a71e3d1ddde966f0b2ba9bee32a5b4df485d07e59ebe79467438e572b99ee2d570811273a9d4711a83b6e214c5ddc9d4759dab75d76fb4eebaaeffc0a04db96c066f3a9dfb0f0cc690304cd76ca6d8d4655c967d32deca3fbb12043e7cd6706be52df01508b43508bbc3073e57a01a04433d756387606c17da2178936b729c99d988ed592eec65a552ad960b172e5c2e2b95c1c06432994ca99489a65a299aea8c9a90058d4277a45f58f8a2cd8631cc849db01406e6e0f3c03b24f484e64c783ba4e9829deb92fa85b50ede7beb99e2d6cd3c8dc1774849becc03efbd7597d571712ed7cde07ba4e9de5dd603bd2e4987d4afee76497a26e6602d5716e4f341b1eb7496f788bb636779d786c4de23e6de9215c8b66ed6963ef02e9073fd6439cec5716f711cc7712e57cbd5c25aae568beb3810ecd105e910f3cebd75f0ca107c2068bbb75cef5caeb7402e03418a7b74d8757376d03be709219d5cf79e7b741804ad37e4096524f8b283cf9e507631d061970e78971d121eb49e909e0943eb09f5ab85dd6523f684b4d7ba15287bc1071eecb2e7aeebbabb8ed359976599cb956112632ecd66a0c3ae0a64a244bcd6cd3cb875d0e60e834fd99cfa4cf1e0d6edd161ee602b73c1d73d7b0dd233e1b15720eeba528fa99bc1b77868688144a1b9768c20a65207411004b7a78ed35ccb9e6cf0b59efa665bd76c684d21c5d475eadd70b9ae8ee9ae287a2806cf55afc676693eb0f2d01b9a7687848f9e49872bbc2cf031a7066917ec261608de0ad482af7b76bba47e753783771d03df3dbb5ce05dd7713d25d4a10bd3b4cf75d76374b55ab64bd92e498718789cee90fad53af62e4997d4b55a56e2d4f5863ac4ee092161ef90c00a9422d42126a443ecf4061ff80ad4afecf9e40e29a85f992ea94ff4cbc3ee09f5ab3b764f48bf4c8edd1b0227860d511f21a1a121224488722b01619f55609f57f48ccc71023b0d829d3e21840d612c06b411b792065e4cc84cc3f70a145db05322d1056bb99ef21a0adc44e479e84cbe172d47b07c8b46d2483d4389d0a3e982ddf5dc4edce7ee27a46cf12cb10012d233748904d2339e8f4c2291c823d2882c22a59050c8276410e944ace20a9c8fb1a040cf7448347ac6136ae999567abfbcc7243922894764c8bcb0809d5cc3975b889006a27d96c89c914ae47fb37605967771f327dfe20863af4073460a892ef25068527c458ca8c8af2e26afc24e97c83b816590fcadb0e7336728d021cd191ad1451e8b559437c124920e292641c2d8bd9676519a3334bac8cbc052e6458865057e9db70447d70faf89fe7127088e667c871d13bf402383078f1d341816e9a43c703aecee96333be29119a65057c14d221d173ef9792790864587dd2f89f552d00c9a401d06e9b081fa45e79c40fd04eecf9f0964029940136802e1a644b8d8524d1887655b8c31c68c768d367738c6d8d10737161308a64e60790c2888f480befef6bc694bb06f3e1b907e69956a4bfd9a4f82f3240284e52b929e699f243f4a80aa08baa2e58160f916a27528853cc2f2458c60f926d2a17c2f75189f7b055f7cd638599bf00f480f532c1d610444eef0d38433acc007d3732cec1164c171ca76a1981d3e298f64d2d19c914ba20b3d5dc9234c354c97d0abd33e5170dca4d3de18b518a3365d20902db64da9c5f431cb6cb53d2c9e5fdf26e40face90db8bf257c893f09428348052438421d80a841066a30caa206db33279a80052e106189147558c31bd2708731dc0109f804e7c754ba864829a523c01475822258e1734a29a53406c4d405910c58084142144e2061481668700215467718ea88b801d3af6eeea15d266cb90c8d0ced03571b8e456748430f4ac023696804599460063050da4a909359300dd275dda4383470e028f597e8578eb1400fe904cecc3a72de74e961b1f64c059fc4dae53465af11e6085f0e956454aa164b29a5b559ad02175bb2e4564e37f8324fcd3c357668fa22bdd9747af4e89c1d173bcf9aced993c95cade6bd9b796ad85e9f9331893903a29ca4dc185d4ec74094d393326dbbd62f4e5e7a3662873e7306e7bb5933b9f9e36e5ecd635e0dfad3ea43ddac9d4cf73ccb1d67668abba9692bec4621546b29881d73e80afcd1d2078aabf9aa0cc117dfaf2ccb2ecd3771c4aedcc29c537228ed9af6ae5ff4da764ed3eef40810b1778e7ab4330570bf7bbc3c73b399e787cd2f5acc6cbcd82946dfef7aaba59d11f37deff7a393d3073d14cb6eda94a7b10df99d98c5177c3a468ae1d0c01176c774f799c8f18846f6123c27bb51540bd49873f698392a59e03d90e8b07974d8f3f2887e754f0cfb7874d817c3fedadfb7aa594ca2c32fc7259f123134b5312a2485a79931343290e8577e8ccc5b5ae2ae33989c8f134795541666c4701eab54c0f3fd043c7fa30d0022ccfcfce58d0c0963fe78d2a08e985c7cc1858b165e68d1a2d585568b05898585c505166b650b2b2b2a5a5051592159ad545950a9525848a552ae9092021e81208a1550504eaa70726242051393efc8f7a1a680429da4703a7951f0bccea8eb3828709ce90926d3e6846dd38c685a464596614dc093664e9a4967449b39279e0740b4691a222e3fa79c26245cecb022b92dc17146ca18ab80653c02e24d1112867c4c4a8284e7e363fac5d2d1a7efcbcae2aae563d1c0d5cc4a6666fb3922da440cf43357abfc39b101b5151f05fad97e3627e41378dee7be1bd0f6d3614e1cba676599042cb30482bce17a077288bce1eecd8cbadb766674d3adeb28edb25a297dd7dd08fb3132eaf0f7d54fdb73ceba524567577ee6cc8e78148f3cefd3f6a93d79663431a225a339e7f442b79dc8a516b8855783ce634b4ecdb5d795a3165b8229d1674ca90a7ae2bc6e3b215a5a5af2bcd77c5c7ba77358376d3f7a354e434cefa121a693ad5b225a5ab2cf44f0517cea7ea3bedfbab519438252bf56aa58525be7b65eb1127f2dab04eb997783f59d192d16f7a3eb38bd44bf583cbcf8e9668b4f67d9dc61d659a73d633aebdcb43d5c4281c509cb982389e60c90f6890205453326224f5c4167d77c1de60f879fef408c2710a61f3c1f3e14156ac5a4f5b9607c3881e962b69968e38307c3de7766e01ed026daf8d841e19e1411d1c6c7cec43dab06e27d5a5fdecfb4ed87f7b9ce87f74f2893133025b55231799fc5f2bddf22daf47c2ea24d8f662fccfb2d2fecfb3d449b9e9330daf4985ca24dff8797ee7d20600411837b5f26daf49c0c116d7a4cd8eb699a68d3d3d5449b1e8aebfb37d1a6e72423daf4600088363ddf8c68d3a3e1d9c7a2cdcbfb28d126f57e9f876863df1722da70efe374536020ec06c58bdd867eb09b904dc86e4fd82d2888dd80ece6048cdd906c47763bc2d9cdc86e463a2cb25b1139f4ad9c6cf04525d8e579fbb961bf73f29dee3bfd9d49edca49771d2dc876db75b420271b771d0da8e374342736af5e47fbe16a5f4703e2dd47678105d6d17cea7d74f6d1b3824dce83e1cfbbb181ec08f7dd7191bfdb93c22b37eb684fec487bf310d37b56f0c9cd9a910ee5909bed66ad0877f31015ef664d8a0ee57b5670bd79c88a3ef360785e27db71717386e7ed49e1beda1019322e2a856272e9836ffb913ff85ad784441b694fba4d29c2c8731b51bf7456c650a448113b14151931626474e4c8d111122448fdd2d990b248d22f9d2d4916596081e5b7a47e358e3626f6e13b12afdc8d68e86b4d22009c66c66770fec21f22e732e77eb03636d0c2c7c707d77c67e53b427c27c67782f84ecc77607c0788ef6c203bc22fdf402cc23e6a6ede09c07b56f0ca777cac08f15cb30911e35988eb68416204f11ca30b22e63988eb684ec4c0788e398101c4338ceb6840ee0308986720aeb3727bccf0f172989b7b56f0cbcd3db22be097679beb644b4bc280579e7930fc727b52380037eb684fcc2cb2b8035ef9cb33cc75b21e33b2b8c31df0cacd1213654bdf736e0ef1cdc7b97935e3e60f0097086b4343282994c99765599665599619654699516694196d581624711694056541595016a444a4a4a4149130a6a4a4a4a4a4b4624fba0dc38838a2157bd26d442f18235a21b24427441dd186fd603fd80ff683fd603fd80ff68384848484848454912a5245aa4375a80ed5a13a548796969696969696969696969696968ca8111197717bb376a3626444c4d59064dc7b6f100da24134880669f6a4dbb8399580441be9e19e3f34c8540a28e9d98818e5c4660f60ecd9494618d47313121ff5bdf167dfaf7338c7a5a5ac824d4bf5054b6dd362f698612d2b509e34217fd4d9b140cefa1a57f0a94af02ca1445884123c3d13739068171e9b1348321dcad99a7cf8a8445c62042eb6e4ae08cf73912666bacca778de7610a5ea50aad40539da718f2748b66347273f403a9cdbed7c96ae30c197b123a5969696160ca9fba4a1898909b1cbf57cbcb95caeadeb5458fe82b5b1be59f1656c6e181292cdc836ad0976842175cfd851d7ba79853794bd9dc59030241b52d75d0ca9c3706253a95fda9d9a364d3e4da3f37257748845f7d96d262c936ba3b1c9bb63552041822d99d852929119acf0013203238425e9572c8ac3916ea3e9d76c01e2adc3db69cf60472db87b0cd7591a167cdda431b15bd111ea13f516a86bcf80beeea7a823f28ec8e9132b8a284fb29d4f8773e8b153a910a762702afb4c7aeb9bab3fec6e0e637092eda692eddd9d4943b9bb49f7fb6c62d2dde43a26df8ed3d7e47e9adc6b727f72eedaa9d43349c94cea3eaf8d789bdbb6757712995574442c0fb7a53d1bf2715528f56bfb0cb14ab5c2aa0fab34ac7a6cd566830d470a8cbd08c6dee266cd08fe8eac90e0270995c45481697a0867cd5a8ccbbadc5770d3dbee8cd8769cb9d9942155d642506c6e2970ee4f16692c9b43fcc266d30f9e67b1d93484e7556c36196593129e5fb1991bc2f32d367346207002836f9b554fbdbd1ad8b7961b5e997e65a00563dfa2942d39f4299b81a9c4c4d8e591787559ac937716ebb60eebba9f74c76c278180aad4370cb39bd16604bb9bd19d26f8be7bdf92b6eda96710049fa5cf761df05892fc49a16047d8117694baea47fa7408a4c3e9a3ba4afa00f9c1b0b91519d98ef8985ca2cca1a23814c1710b3816c141092e8203129c922a954a45797632acba43568f5e0138bbb240a250dddcf2d44b707bce5ad55b6cc41c68b1d646cf060e939b1c47c4aa55f474985c954a62d55337ec70b3acd4cd91e1ab52bda66c9867805814bd1df58e6046928faada12843951ec48dca33a66332bf588bd83acd4b59161d56f9619bb9772150bd43ac46e62bb0eb1a75816f89d0c7fef99f8bbb443efc67bcd66cd65ef4f6cbee7645f8b156146360b6e1b87cdb76c3783c009bc1db35d449542dd26c235c0ee9bedd157841d0dead1ab41241ea9b0ab2e4e63a883d8c58c50ac788459360b6eaa9b35bc5d3b4e63481dce2950b08455c784b0a4bd3971a68d33c531894f00be48450a8e60ece8a85f193bc24830a47e452a508045a422053e9db321c1f3194b42450a8a60161ca9488110e634893335653df828ce94e34e9df46e68df8ed9ed2aebe28e19f5cbde79aad9af9cb31633c28a843e7bcc88f431825b4629bb19e9a468157ca86307df224575ec289bbba33a223ad83b2952ec84a2c339872611d5a7ea4e221d86730e7544aa63573df58c1dbc1d119e8a5de730db11a98e1dbc7927c3e055d7c16e47248564c3073e65b72222b023f2d5409dabf952de1d4ca530ab7acfc4aa94afb3190f3e1f29ef8efde45d9ed4cddfe95eeac7a9a3581f3b4b609deef24cdc1de53b1956dd9c72bbcbca71acfab1eaa81aa9db336ba82ecaca7bccf606505053a9c3f9e207eaa0ed7ed539d0faf0406f476210fc40db9893e0dd91b8672703dfd9cccade337187b2acece6c830ea3b19eededd2c31eaeec82cf0c93b6b72943d79f46e981cbcddf12ecf4e16238cea66560e0d63dd72ccee642cf03db3e5279605de1c5aeadecd48cfc428772a99494656c897633c235caf5e8d1d897de850dd75b1243d139f2e86a4c3f97b6fccf1e8a095d8da888f1df9a02d6cde8ef07ccb16e51f4430f6cdb2ce6269c66e8f7884c1b33023fdca403cc245fd5af93c66e4793556563c0fbc2f95cf73347a669b22bacc47e1c815f0ecad0b781ed98a302c626468542c2bf3aeb0495d75cca65429d539e9a5f048acb29995231671aa835b1146a98ed39b91cda85f2a1a8cbd07c3453e54e799b886eaee6438d5a5f44c8c1d674e257726f14cac7a7b3954c77e51df91aae3f44b751f3b1b8830de3795cd12ab2e6d1c3bb7591fa9c708b3b3811f38f5b823eb53966727c3971867aaacc49bddb911b1dbe8703b76b7231de2a4ee909f30a7de6c07df917ee599b4392102208acc4abd67e26d468cb7a3391373001005f82823ca888295ba3934bcdd1d99c57732bc4501cfa3ec6624053eabbe459c52712aabfad5517dbb8eea9b114e7a3a547733da2e45f06d8f38df887827c3d87b26de8a362346b44fbfb01e1bf6cea26c7ec1a86fdbb7ed1c68255eb215653af8543f61364b8ca55470f583f7d33342b5ba2c2af41dffe41f987fe01423ea86a5581678efe0dd8a72f065eca8089f98dc993487308a4f5b51eed15760ee9bb4e18fbda5afc058384d366349786e9d86c5be2287de28e4717a264597a3393387a2cbfcc494e64c9a43783ec3c197bfa2930214653088313e2924d229bf2434ed22f1d18b4487ddc7da8a4fe62170129732312f21121d764b87fd246e1297c73bec24e4121d3231d4af2aa5cc52882ed1a1d4b44fd6cb2129244428522bf1bcd2a72f83a4900472223ecb1fe90450bf22bd1248fee0befcb1409c9142425208f7ed13318921cb8faff9a694dbb31bb7eddb8b8c8c16ad5f5bc76ddb366cbb59bbda8d5865a1d185e6344e6b727e819ba7b4e9653795b2a9945947a5a4f928ad924ed954c8449b6e96af562f2b162ed0885ae8210594189d10462a2215be1867e09865cce0f821b46fa61430f5d83dafbee8d23dc5c6e8d21db49d8c843169248c150e89724f426e858d7694c01c7719794343c2a091373d240c19f226c491372b09635611f6103a703d8d69628d88e1c4813a7973657e7e353fe794893072ca4c21228c9c42cc181146ce183388082367103326c2c8193361441839614c20228c9c404c98082327cc7c893072be4c397f9872fa30e574997286b3870823670f534e1ee68b0823e78b2967cb94d335e5bc534e3b1f61e4fc9c2e668bd99a2c933557e65459cd956a62556a16d17d1e07186122ee6c4ec15907d7be3b4c4c9968d31a3569941792e211fd7877bc34a5f1385d6df8a2f5927ef2661e3b8e9073caef3842e29833f4156fc6a19132e8abe9c5a1c13438ab38b3430edcec90457a3c9048824788e73c4df822034fa4a8c40309aee6eb17294f299db4861d7af29e7db16187b3c6504a63c2fa1cbed4737d75a4cfa44d299540a8f4e970d6f025464a7a2a81805f8773ce4b20fd0ae55542be078e0ee7fbd59f5f5de278f59d9af675f8154b8773b56279dd11919258c94b3f9750a25a1e9e259650822a3197a089333c90422c814c4bb8d8af1b1177d6229699760b46b888bd7e6693d6f98c62d8a4c7ec9caf575bf55d2581561a193834319f4c2643cab63c14cb4c06cd4be26c7d315944bb6817c7173e1ac6b0c3bee14b378d0c1c29b5be2fdd0c5fceb2fac07a052ec6a0f3749ec6d7acc0ec39e79c1347119366ce39a7902fff2d48c0667ea4538b13b3b92bbdda47a5c48246064e8773ce39e7a4c9ab2268646852f6c49048c2a33727d13c3a9cc7eef0f50d248078370af918eef3eabcb3dc8dd1346d522f87bc9d8c271f23efbc8cf6797a1e482441b3cbcbdb43b176b30b7e31783e46266cf98ac5d4d808b828f3794b30d6dd3da71671f0c5bf6869f10c63af41b224492d9e33254a18cbaac0d8834e36f85afcc5c173b285c42dced57cef41e5a91f4ca6a752a9ace11516c7b19cb59272c1b960592f8962132542a5f094fac57233c7715e1267a2443c254fc94bf29478495e92c94bf29478d74bea8e56aa24d37fb01e120fa95fa8b3585cca7a482bd63b4a3d7b4748705a7691c5f2d861ec90f54ef2b1dcc523cbedb8b32cb7720f69c57a4736f84ccfde114e4d252be75e81a6771982d7538fdd637ca19e59ba2161929295b356eee299c55a39cb8895ebb05cb0b07bed65b16e767196732e2c8ba544a420b27296bb60b9341f4784fb0acb4bf24c388f3bb6b26229111196a552ac5c07eb52293a24a27865e55222ee52224488fa159fbd432942f6c417e34d7744c2c0fe0df15aa45f42c4903888c71803e3316a9e0f8779f9c13eab81e783d2b48c061fca4fce75483948539b1273316c7ec538459a42d82cb110a74714c911ece6c6df65ba2318bb10b61689616b91e7a305a1c5dcfc61edac0be3ae0001e3030f2f3f5ceb82bb3375141fd4e62a05c6ae7d36573360ec26366b78659332c52a362b81f38fb22c0d773cfc2d1e7eef66f7743b4ac4130251e05d35a80655a01aa402a5a43cb5016c712d1b31e7b211dff5d4532e57cb9a52ad180903bca9f59475b9acf7d321e605f9748801e910033bc4de4ab5aea7d4a248b869852f7fa9b75c2eced225422ef7aec599f0dea5577c18d481c23ae0bbeb6243cb81962e59f16572a95fe0c5bad3259da54bddbb7b577458d7755d47743a76b274c9e9992e399d5eb1d92a4587a7edf4bc5dbaa45dba842ea944e8125aa45fddd5619dde3de21f8ebd16f5cbbb3aacd3b5d118bcf7885f8ebd1a8936e03d21fbeb82f518551ee34c87c4a1b83eeda0ad46220cf6175b7fb0b508125681eecd2e70767bb30b1797e5e6156be5e64fe5ae2ee7ba79f5109f6e0e7136832ff5d6a547fd4a9de8d189229d4e274b91e81145428f5ca7f48822a1489306340aa7d6e9bb76eeab4129d7732a656b50eab902a56e0de2b2a77336b77e0a280fe5799e7733eadd3954473b8aea3acab5a7836b2f47111dcab374749f9f5767b69763bebbf24887b2e324977974c89d67e2aebb49f43b8fe33ee7f0cd7b371f731c873a3da350f3a8a3de851d72dfc1711c8fe9c21dc5ddb3383ae4ded9223ae470f4cbebce7dc7a93b77d2c5ee591713830f47bf6414d1afac71e7b8e3c890d1af3e770bcc191c3ce64c185db8731cc74deeea482229a519df17ecbc20a5943139a491a1118b9e00c5169a5a3a079c178c0a2498206a31c60784f3aa3fd339dd54f64c2c3f2fcfc4f3c6fc8e9c11b704fb15334d8e30d52611be7a9c59bbd6db036f55e34cb9c3de37db038cf54d294b5204310000a069f59a9d5d3d0b4c0bf74c8a8f93c352eda27783d36c3d35aa5274482b91a988a9c82485898869a843aa699aa6d54021a4c6f484c95473933509056935269fbb2d5dfbfcd16a4e55ced5b04caf315da746a546a5a6a646e5ac732a2c134b8565ba0fc04a3d9a2ef4374ec4eaf530c76024454635b7335229b284c5af9244b5db211d7548bf1929122246104160cd0037f9d49cde6837dacd7388b57cacdddc6837dacdb59a9a031c7104ac569a86358d889a67cd477bde96b46baaf9341a831504abe6db9235f9d4bce62c216204717bb3f61acbb21b16269f9a9abb2d99824c5b51cd59aff99f59ac9ab39e37225c731dd6b52da843168dcb62b16efe55cedd6e452a76232a425473955f85a84891acb91b51d65e3f9c7e33d22f1c22ed0600c6ca857134673ea47ea192f44b4b5a7d316efe82d890583cdc14a4d9063aba71b346538f56ff1ce248e6e6181f7cf0c1879797979794949494949494941e7ae8a107193264dc143463c68c1928282828cf2bcc030f3cf0a0804f2c7c19a6354a55744bfab572faee8a7ea99c9e089b80d758225e5373693e8989b055a348dcac690db8f9fb1870f30a88c79e31e2664d23c01dc03d29e2661a1a1d37c7c408e0e630cc71f38fe3e6d5aac6cddfb78a7da271f36aa5baf9fb6cd6b0cbc1d66f005aae1b95d2dcbc5acddcfc7daf9b356ca3c56d0c71f36a2573f3f70971b3865d3c27c6b5f97eb3866d5edce6720d5f9fc7331f7cb7bd42b1682415fb75a8fdb39a145f3605c1b8b4de6061d99b1ef3ae48bf6a4e4dafb92da44313ce3459986bb9852cc0e61e7ad1482e36cb4e623c6c6e1b9b698ecd2d366c8e466296a713201460730b419921a38794171f6c6e203cc4d8dc43389b6cee9460fa04d8d0e61001369b9230fd1136733e98fe00367342992bc2f406b0b9f3c1f4d8e64e08d3ff6071346cf3be5998164b612e8bcddeb5a41e18c45aadd59a6c0f10a752d790b4a4d4a396a45fdaed698ca425512d0500db4560d3b9b96d1b6775b4db43c60676d37398ba946da10eea70880866aad4b38173d5378bf398baf49fa6dddc03c4dbbddb411db61011beedb983ba22308d73a620209a1094040929c934d4afd884a023339d638262e9085ec1b1688908e638d9755d4725f66eb679ceb9ce7ab7b11173e036b6f3ba7b37d7bc3b8e886bbc017477f9b6d42f977746d838e7799ec671375af4767c77043392bae3863a17db33b1cb6bec4e865d6e43d1217579c49c4bd7ddbc3b273ded299bb5db336fec4ed6dd788f9e8ecee328bd71ee93a8f674d8388fc4358fde8d9a73995086c51043fa38d348d325da708f6f319884906a9cc0178b967e3076f23ccf9b02e76435364b5cb361b161d12af84c3e4b12e71ca739990dc154a45fb91e692b2d68b55a3d7a3672906c8e7f7801ec0e4bc4336f00deede1993780ee36ce655d8d95f1e8dd98f11c8ebbc6612d46186dbb31c0d7dd87e3cc1a22eccabb6633abe611a7deb16aae8d0c7bbf336cee11a7c0329ef31bcb612eda656939b69374b85d868d1dbe3cb5bdc646ec6259dccda161edee6419912f9b828230d58c78d608f0fc6195bcc22ada009eb5229e3fbc52f3bcc22b389e69723cc708e039d4f17c9be71566650db39a95c30283a585456369d1ccbc6e12e2e63243104d17fa1631382daff0f387ffcb357c01b8bd4624a365dc08a296710210b58ccf20c2f4da8c0168335e8436e335b7e635ffe166ade6f8e6afe63637af6aaee3e6d75c00378735cfd14835c771338da4db5bbeed3937aff0168489728e0f73f15d2efe49cec19cdfdcfce53c75f3cadb906ca88dcdb96b73edfe70220e809b1cf374d878ecf0e5e65682b763de0d1bef99b8abe8d087211fe79df3c146ecfd86ed69cc7de564031fcea178357cb8341fe703d771366cd8b89a6759daef33217c356e6602d338c7795d63317dfa8a0ee9920ee9bd56e2b86b9ae5a155744893744839ee9aa675e76c8fae9182f0a59e1b497be7d5e0967c4e6abeee4887f49d57a34362d415e9e04bc59c215ff7bc2de19b67eeddb55b12efba28f724ee7943e2ee96d46178ed1bd29c9139dacc77d4cd65d968ec72b93e6b7aa25de8b9ee9962154ee1149033610ea58b9d79da3505d98183c2544587f49dcd3302308d23300d9ce6525d96c1dab9ae5aee590f3eeed5bb597bca4d9e0ded37e76ced21834dbfb13d6430f6006ccfb1196f3856f37298ce812a29ab54dd4cd9695bda30576f0aea17c5f4a627e84d4626243d2323c924a45fb1682908532429303d31059988307dcca6224c4d4730ad42303da5795bc2448d692bc1740d3877159822cd89a421793632bc2141f13511112428c2ed8da48b84da539f71b35482b76d0988c7795f1ee7f5e1b20d5f1fe1ed6dd4e1f6bcc9b8b981e0ed4d146d4c33e0e159855ff0f08287670dbfe8241dd22d4987dab91bd4e1c6ddbb79f6bc1bbb056d4937a7739bdbb6346f9e72eec66e297643da927448537e9382b425895aa621617ada72fa2d6953d2afac2d7957db8a7448bdbb15dd8d886e45e837a27e69a96bd730ca4d82946426b3935b477bc664128aef82bed4b329c8d3717a2b7548afa443ca79d76cd6749c1e3bd46c2345ec01e14b3dfbc197aad12af86c6e6ec1db65cdcd524803892edbb76f9fb9f9c3adedaf6b22ea57d09cf94e1fe30c05a2cbf6ed43dcac6d97b9f9db2e448b1837afb60771f3b73de6668d4674d9eec2c5e540dcacc1dcfc6197bf98825ceec3cdaba84473b93ef87a782a3c8d38ecc1defae817d687c42d762983f85a6b730bb9f5415bd81c8db46c8e4a586c964058364b212b364b252a36379095f521b1aa7ebbb1eb68bf721c31c270aabe1ef58ba5610d443931a9487a46eb723dea0c80583bf54ecf6d9a36e4fb6e13604e14f50d843ad52c4764ba505334c24ad0cb231249cf28a19755d0cb2b7c70c4cb4181ba330d26cf7ee01cb61bc48573c63483e8429f03cd079f69083428c2d0cce60fc3e23bce9b2908d39b7ee6cc46b42d4da215dd88305d618a5d93a326fac78c26e48fae2a510597b15a394eda7c01191fbb68b35339cf4dfa230bcc61f987bc000f955787be76876531b3f1f3e62a292a471c7d48497f23e29e89ebcdf40726a70db8c6f1f2e623c0ab27545074476d6a891366476dca122470c912dc3605a3584182132b78904ddb76057f47b6694d1db5272bd4c075d47a56dca1eba8ed5880dbaa30e775d4723dc06d59983b75d49a88705b14de8cc220e4eba8d5f06cfbe10c4fdb16056348705b0f73281db5d50d63c06d8f3970dab620e6523a6a270cb85447ad0ae6541db5114fdbd604737115554ef9078d456f8802b765c13fa6a44ce0e8a9f5d12365ad3b19ae39308facd7307da4d6c725ce9471da88bf2e872f311ff8c98418b33df53b31c2c4b36c68183b4f953b31c2d0cb8c8b36cb26f0693c76acdad038e923cb64f430396fcf2401a6b4888b2d54f32e2d76ee74ee3b990ff9d3e599787ba7bd67dead7eaf376d26473d62eedc899672ccca7352b33d1ad6b814db1d3bf96633789473dd61dda307f660d730a623afe1131b31cf0966794eee4e86a58e7cc43fb0cc029fd89d0ccb474f7bf4b6a97ddbce73daaecee95dca370b9e4ea648c110ce31b89f5f5e14379014718a14fce0be4c15603e3976697d9cbed3844f96b9097c72ead990f804bc2816fba69d7c6cdbddc970dede9dd33accca9393ed5dffe0ed3eb8dff2d2afeef64ccde4bb3c13a3eed98ee6d0ac0f9d2dd37eacf9d8c1b4777767033f3076593634ec7d033f30cf4e86bdffc03f708c305d0df9036b2c1ddcb76fe76c36491f9a7677b2472cb9d971a76b967bcfc4dccda7bb93e11a318759baddfc036ff7cecd4e7a1b17b73a7cb1094f2cc1391a35e10925dc2f2222c5245b7bdb3deb03c3ee4e86b56f367b0f86b3773b19aec7aedd9e69c26ccfc47667095c6f33cbc432dd1c19d66eb4d9e9c04e86b53781dbb3d1fd9846dfd91d99056669dfc9a62dc266967673c4a288a94933d1e7ed5ac426ed793bbd387674d8db75b66bd7d95e04b538746c778756df83e18aa388ac67e213103820250873fa40b067f25cb43ea68cf3d18b8fe246c47167cecb6316c88f2b670471c9055282e73400a2c8acfa9e89e92396770876630f111febcd91e1f99d0cd3d33ba46f8c41c8cb9b29909ce8dd881186469818c3f8d844ff98549ec173410e9760423a11bebcc8b4605acce998fd685ab00c71248c9627524a9942e1286f8a204084e96793c90b65d370f70e09e30809a34f809322ec1a31e278c81b0b20f18068938108d34f3a42824d6cc42a1836f967730f96bfc9cd5f12f246090ac81b1e1f4209a3aff2dc4a4cded2aff8d9ec012c2f3d80e5d5f98e5d895659d91f31ecabac2c810cfb292b55e0439f473ed1dd4593fb654b60d8e466f9449f44a2514a242c89da877b59c2b4c277dcfd434a097031c69ea818638c3146548c32d2a0629452ca28638cf1c638a59432c618a59432ca1863d4ae8894f68b67627ad3e535ad5f3e7276ed3b2e70cfc4a67340c39809a3c7b8e8d530996eb600f66c7a35b6a9536f018c5a6d27b3808ff6c1dcdde9b63cd1ab61babdfdc0d8a61d3b6ded9bcd58cdb22828e18998591f94de9dacbe67e279698726594db055eedb2eb8bd5eeeb6b8dfcd65c01ea28e186658733cb0c89b161d3270fcd8e98f8fac500760872fbba18c0ee51b70872f2638464105579845e0624bfe6227831d38462a55c33de7dc91b42531c40635a3916145a6cd44a3190566d6011fa0e10b4b8cac010548dca0822be0e6b1a3c36b84d61dd8d11149d8322a43739b054330516c9aa0bbbb91b083c7114747ec98331c7777b4a0db0a555071063a04210c434b72da0adc542481c18eb91dc51d3a4061b44d9b06243b22090ae0b014b1e01c9f44a2bba909c729581084732c5a626a5089908c3f32f00b1c6170b4c97e1061fad93564717c668944a71fc91ba9052c441bc90589d4215112bd19c58568d3975a8837120b09a381867e403120a0cb9f2c0da47eb1740d8985bcc1b188368873bc19e5e18e30f20e3724c6f1f972fbc40cbbbcf9c3d1a51f05ad0bf96808adc831b8e780699a0e9f10125914332352eecce872cc0d4deb9e734eef46e3186128adf9b0257c79d5695b67ea6abe189349a66338192c29a5f42fb1a8ebbafec1d7efbc026c3971baf4f53c49a577e3d4f50f3e5457f3a1bc1a3d5052c9d7adf47d9b9661f5a3f3fbbeaf65449df20f9c6559866559cde8ec4c6659963285a0d65a6b77ed5aa5ecaeb3d65a6b955dbbd6d9b56badb5d6ae951ea1ce5a6badb576adb5d65a2bd6ddddcd8410ee1e7c990921dc9f8dd5aeb5d639cff0758faeb3d65a6badb5d69a1d9d5851061a44e569b792b2bbbff9ad7e9694b044fb034a34880a1a54575fc2d7632ee1be3f4b4a58aa4ab89908c2f5ddef2b7cdd632a7553641a84e7cd3d28066810eeab237f54b9f1e02dbba5b773fce1798b70f2b18583420ae927a60a82a800480daf78e92578e54415b8cff222a916648c498edcb857983846410a556829a770020aadf16a72818bfda22c1b15f727ae33ca9e271a61249546d0897f4c19014e4a3ae72725edd668ffe0a3736a92e55f812b9085d249e911289d74b684e159ced2b2aadd9c734e292ba5b407fde9b49ab9044b2680f05cf2c91e72d239e79c739565d9119e37e678528473115b1c7d6ca9f9aa3664ce7b3f2051f42dc173b41ee2932430e168f48227a0624bcd9779cf43d468313499ee870ee66bf978005bd9058e40f470955536c9a655aa3ea3b84aabac8f1a18c4d06de1b30258e3142cf2264a18d906d7237557f8a480eb73a402d7cb608111c3aa04d7ae0bb89ec302ae37d9faad5e2302d7cb17ae7f16828768034484a9af6f91372f12461d0273f3b5afbd3d1b53b33e280e333b04437d40a298f4fdb86466340002c72800b1a2e6cb4cfdfc61dc39d3dc664ce7a669dee09bdbb159e794afdf6a9ae490bef49ae832d0e18ec6a1964ff1d5e3b4d6d13ba4fbfec3e9188d3281b321711feb3ac43ac4dab6befa385d5836249657fb6e481cef35e19bcf9a4c01e7157d2d3e2051f40d89575cf5768c600657ed8d88b3a52ff3541c6ba525f856df11493599ad0008e9cb5fd13c9a2de0ea66b12a7ca66b2fdb42d2b6102139d42f7ae5d06d2121a10ce30c578c590cb757831e33c2972711ae423acc62fe4c179b51e1cb1249066149df24ea9786ebe7cf9ce99caa9467115c9b9ed542a0c0f57d14c15054df50f42b1ab92029b3f4501190f679814f6d8c4aa47ee596fca2d4af9a63949801675905ae6dc09945a616b1a3229130ea6b9529c0558ea00e6f9041d3a5d61cbdd0e515964137c380378728371fc5a4aad4af5412492291379d8308a3d6a76e86a94fb939acf52837afea4f6efe40936bd33b8830750bb8f6e86a78c7ecc41886d91e1dee5a28c2d4e37436853a3113db4037b90dd4610775900e6b077590d3b3eea7aebb0cc1873a573b08a881707d03755057730bd51692c2c7619857633b47ad4cf2f6ba539b6551f83235b5507d45a2b59eb33294bb321d564ae9a5b931f5317346e6d4d364376649b84aa40eabd167ba48b87eb32da4c3fa9a8ff65087f5da6da10e2b0b3b1552df42fda2385cd08518469c5558f8a4105d22c6e182264497885918a731287cd81bb7f4eb85bed24a2bc56c6ca92912650a1c1763fee2a5f6fe65691747c4da49e83b4f6dacbe2b8d2e3da50cb8df7c598bc28f14b8dfb1ac9a0db81f2718fa65de18f986c397639a46d64a57584a6969bbc4a29eb3045fbf7c9f17a7434ba34379715c1a30f8722cc2c109b194ed121f656c913b909191a1a1a1e923dcdccb762ee2b44c8dd571ba85f26ef18c0aeedbfb5913be1c97545a0769a48c97e0eabee1abcfde6cf8eaf39712535262fd991208b79176e92ea2a181a38d56cf313873b138433dab649b166db067cf3aacd7a79e3dcbe02c7b17651a1cb96c8aaf66d6535e7bb670cc2f70fc49fccaea2c171c554f913e58fe6409843b48e200f7533d6854262be3e41c4ebf585ebc786ef1f09c4279b02fae0dff18b3d7b9784683597e3ac7722afa585aae75f19b5de01c9752bed9d6a544893e59a74001128e61c0718a13cc014b4f23fae4b37c04d689eff18253525e97e894df94db94ff72b58b36bfe098536e8e57b9ca464cc14faf86ead9e95d58ecd19e64a9bbb0268f5e8a159f6530eba86336e533df409df594a72c2b5e1ba8b3ce7ac4299f361ea7571eedbc29e5d19edcfc82e353b2af8e333f13f7151bf164b111ab5636f778c1dc5136f790c12667fdb399098c72731c3162d5a7bcbe856d516388966571e599edd1e1142bfe2e218496ed2410954ec5085e441aa2ddc46a679d65539ec2ba4b74d8292b1b71b5319592c5a8744ab9ecb2cb44871d978668c7e925e68c76bb68b2e2cd5a55b1e0082e1133db465d94b59125e6cccd9aeae66325be6769d2478a405317b591f6e2f5bef8959bb5d5657ddfea92e6e03bce344b709a56aff295a8139f9d8bf5d3b3c17aead1d3b1526f8eef91b87ef55466555eadcaa355898f394cb44bb3e24d8f7709d5b5c0083ecd1b80c4591c40bc43b4ee204a9189f551e3bbf20a1b8d1b15df595676d3cdbe5956f698a3bd764462a25dfa995dc20234738647a5b911a98fc026fa078659296afd71acf41d0cbebebc095e5e5e88d0c8c0a1913f500441214323834646862643db5eb08cc10270f901cb1704905fc1065041c1b2c3320112c609033696166d4e64f0760d87660a1a19df05206f1cd052c07d13931726b07c9f0006480003e44d0f942a60142cb06c81e505b9440f79c38484d15f49425182ba4a98c4e0864f1e7a780358de481f7923a160025c7245073076754e8e5dfab020863190368852480fc59040a088319140a038b9b42737094193633f0151283d58760063e7b0930e6c18f5cfd23804ead4ab21e310a81b6258fec81f192c656430762591ae09f943f3505074852b14610e15e58b44b2840f2587a339b3dd069a2e5193d98ac83241f561bf4c5e415c69cf68b57b76aeb31d94d906eaba7879345de2a377f3a7c47c96d8e4f6131d46eebb353e4ed4ad373b00cb7b37f3c0f2c6089391c0d2478d791b36bf60ed6d7bc8b06c34aea7971b87441e7518b58d0d417a4622e906ea80fa95dd7e224876e511668df0adb418e54f8cb17d706ca1cd44046e9e4345278c88fd782512969e11f2ca9f0e6394464738fe9052ca80e3a23c82a57c3133ab4406b2eb60ef9acf3484a7c394d2f7e8307d0310ac82e3142748c2ed6597a55d52eeb2e8634ed72ef3945e4d9ba703e86397ce619bd7ec9cd89db37dea0ceae9a6839dd2d8e6a4368891a189b1400f274e62f80e5bd35edad33165daa5b1bbb1fc85823a8e0a96999572cab004394c311e7ca2844f763c8a285ab94a7f19e55f5e029f5c3af10024545690e09b752d2dfdc29e99c0276f26f0c9d54139f6249234d00302203f147002755b5a948a4f8e72f21d6582b227252525a59615f875284dc81f759aaec8e2290bd8d5382fb10fe9ced168833da6e088e3637cc52ea5f398ed773307f1851e3335ce4c50abe3d5e04c17a76ec7b4cbc21e7368b44b638f9958d1ec39e7fc9c73f6cc825e7e019c20967282f25ee0628cefb674285bb853b087fb35ce682f5ee01867b86bbaf5d62b1bf78cb5d61a55e2e6414ea63822e108316802eec71718a79ba03fb0a6416abe99c96b339b12a79560794a292d9a218548204ab449278db1d67ab5dca2551d6c24f8828cb1484744b694421e8e466200ead92d069fd39249e7340a43525f0547a3304081a288401c8dc220e4c3d1280c413a8cefec0a8e33c989d5fbba0496403ae428131dca9f0e39fa2a7deeab7422c270f33ae88e9c12f7509c95c0d54a1cb1bc383aac310a0d75fac58fea705927a59472625e0dd43f1b85364fdf596e725dcde79df36aecc439a7c64331eaf5d476af97e21e89bb7bc769d43b8bfa44dd24321ba04ebd1c9a6784f677b4abde73adb57ad5abb5d69b3dcfa3943ed2386f8e4af248776967f701d04ba3537f3a4fee3e6dee74a066c4a8acf5e87076ea5ef0f5b94afbd53df3610f4814757e7a46488f45bdc9d5f83ae4b8f7d0c721415f31bd2c5c38c317cc1d47873be6bd73debb735ee77901ab5ba8e4cb76b5b99e658c66240000087314003030140c088462b16834a2a9829a3e1400108fb2586a561d68390e33c618430c01000000000000000064060c0000bd1fc8ac5f84dc9daa1c72c28bc088466bb9acf2e033975bda129d34f00789f8bb4b0a40675e2e46774598e5f34abd03f5311908580c1b6018dff0260f64c213132c6ac173d6699b0de888cef975beacf146bd10324e0cd3185317a80d19427887216f1574651ee3286478a123697be4e980f8c9e6a090804a686d7c133c5603973d405c542004defc3981463646bde9b12a077b7364a48c4ae21263af6446a5a6796b6a1a259ba1352ab570f311f253e683aceac430476f6214a72af82d0de58800bf407175548a5b8c684554cda3ef93b4a46b0fd0c1bf8a565ab8d9bdfa96fd4f137a5482fc4d09631935586aa80afca1179d2512ea9f1fad2571551ed49e353cbe358fab689522e7633452ed9cd7d920ee6866fa49f18c4341cb2a64aa41e149512784dc260616033cfa21deac1bcac3badb78391db1a96f0495b702df78b7d033fe214445c2e242513b7b553d5f6910097c1277825de73a90b05ddae2906befc878e04272855d0048e9e27cd5a5fd96fca9a47cbfbeadf6547156cbf86f815e78199647ab6367c2a7cdeb9ece7ba8d7429fe634f796b612235bed15fcaea18a0533b65817c405720f85877e6c0b2f6a0f1448154bc388b37987b6f58c9c89414ee0ca9d0658c7f535ac9838cab2ed7db0f54c3c1e041e1319f505dda3f5c705b6894cf0cf3fd3b74736fdbd9a07b929ee855c8c3dccc7049027059db3e9d2e8c53e93285f3e4a4189f86854f5ab3d044fc6e7f2829cd2e5a7d980500c8f69309b722e60d44d86a88afb2290e44dc2a6981d749bec9ab5a2487e9c0d22a68b3d0b305eeb8294d003dd3af87ca7b58beaebb0a55d2cee5987ab7fc5e5544157dfd78d3ffb3e65c9bacc0c4c0f27d888989adfbb91b5107644b3d95b5009f4ab1afa69794de46bd74010c492e65ebc86f7930bac78cb140aa2ba0802812a14ff0120513d1100d959122d629d0609406f1483f5c02fe74e9cb68cb931b2488b828efe48116911e242f2ab98c11dd4b7bfbf07905d095bbdb5cc8d984b684a88965073838f51157570eb78baa364399996bb647b981714bf703b6e7fe2620aa640a75917fe2cf8a5c00553dcd0d37729751d4ec42099c4ba6fc433d39ee1d5a09550f954d9e535e61df2a200a8f8befe87b7668b220b0ed0a2e6688ab2daa8944f5a760f95b70afb0a7d05a6dc001fa6108cc3860833b6a3d92979dc34982cc7fd3facc79d1cc65750f338ff2b1b3fbd4b69bc51282f30445eee5d80f2150a150188e91f528f7bd8c1c41a7063a8d697941580078883429413bbdacb34a6c2d432491c44e507ac854e66053a28538703ac5443fa7361e0c400252be647bd468e0add3db18945ca1cd82c097a31a511ba1ee8c53d90f35fc6d0ddccf843862a3bebaae05d1d7a8d064d4f4798af1b20ee380254cad24dbdfb6b457be51e00be5b82759da17b9e7e3b02eeee5f96399e304d0304037d67ed4c61e5e00bcde2a93dde8acb326e64e0383bc80ce8b7225dae60cdefa4bbc6990a06423a8f67d202f18341de4bcba939835116102be4e5a46355f9993a16f1bc3beeed4ab3375efb94a16748de9a5f34e5acb522a0dcfd21a1a2563c2441493ad358ae50814b1d767800a2168e58652de7bd2d6fa4b5e2b696f4836c4553d1e7e6cfc5167fe7bd3743bb9bfc4caa19274bb9e4cb7763596d200fdde4d355490b963b52a65e6794d1ce143fac541c9ce684bdfda44e94fae9491544accadb4feefea4ef165e87bee604a7fa2d0ebab3d12086cf6c28d4a1eb36eb6746c8ca3fdcb12ba9a3561f0d42704cb9707753aaf28ac130c5824b145f84a8e5b615cd3dc13e00287ae67b35ff8a875f46c530f408e1da175e285b084d8424c6bff5ea2158cd723bb6cacfb746afa1681337e2ac095c0947861d897f3ceba77d8c4cc2888dfb09f80e1cc2b516aa2d5a56b60bacf0f96763e8332210344d88962347f858465e5814f91891807d8f502d66dd641e6b8060e9583d01046923e22493124a1804308d14c13522810cb53a92084c9530430af64a82ae8f3d6d86173d3754d0e4200d80c9513438481013d8ee7928a27a211f2b191b490998b7dc0875270a108174203be699323df2964ba62cd0d21c78033878d4e8625df38703db76c6527e148d9a8f86d3772a2d48ad43f1f5e00ac8b600fcfc4c47923d464e7c08b523c0603c8820330a0c6feccbf3b98a805226a426c73a66e5d6e8521919eec1c6bfe7ca6e105da758b82dcc796a9b646f904cff05ecf897f137b882e7082b0eb89892ff9abc6757a4ba29082107925da00de4161af2c05a26535851a57400d6b3ee7c62261643aaa6480326229d007bfb25f8aee27058ac1ae9a40a7cf386a65bf47e2520b69dffef731982b8ed830fd89a1374ffe6e477a6ed5229288de059543b1c3a158603fa424fcd609b21ee7a838cea50d244ca39e267bbeed60d3fddc52e27e08fe05c5ae462cac4b1fc1a933df8da5d67546d97a3b820ff32ba4f09187bedd54074ae18c56664b1151ec3cd66458e4e504979a36ac13625b0428650b87ebe055bc2009279d7e34c3e14b298be302a365703d1c0aa8351fe30eda6a4ef04225a3303e33cb8ad53bc888fc67ade489b1e4184b72ea92dd4d7dd2b2f845da641b9e888ec1f5c69c30e55a0a4b25933d56c909cd91dd51eaa823b23621ea7a5a37f976ecebac02869f7a5a48b9d4f2af709ba720db67a075540455af0918ecb5f43be356f8e031204e73fa4c39f964face6631d18a7dee18daaff07e6a7bd3a56395e0770cf0eb83b86e057553839980bc3dab065bc75cec00a78f820ed53df971c9e4e561266e28c0beba38d5ed26c30a4ea9bec5f3973b158da2cd7c8bbf836c07b81aebe09113d9c1e2de20905321ccd12bf2b843f04136c0f64deaeeea7ca0fc284ecbeefde2059eff8418ad0179c0ed5f9b9d0ef58dfb3e329611bf331eabcfb40fc335c1c7f665fdde0d529de98c0bf46cffd76e8f9336e20774abc2693de06cfef8f2b8c450802feec812f894313e7bb65def7a6cc4a7827363183f1eb28debd82b2834f7f90af017a88acd39213e16cdfc64a508661390f6715a80529e12d37feacbf3ebe08b52bef1a2d62381ad9c0a0df1480bed7a1a86b9b910b43359a58e8a1f3aff1cad6dde8ebc374f2498bd7a4154d3f5b69bc5909b7e80d466f2d628967c9dcf6cbf403747dea9c2aa22c6d8d50dda4242025b21f4579d851a1b5ed9817302b8a66fbf3150217017271dad0d97fff0e98715de6c50a62dbb44013719c7a1eaa32542cff7c75169e81013945ba6a65e7d0f71eb4440f52d65a04bdd5a1aa4a0f6a3b05592e0ce46ed133c02001a76d217524ce6444556b00e2b822f7e6babbb906afbe5298a481f729f1f0e937fb30656957c6d8452b2d1205e8edc4cbdb4fa700829188f357a7cab9adcd7274a45095a13cf4db66702326b24e535055302c243ffcd64ea80a1f072e825eaa46a754503d6ffc45082b65f038bae78061db07b5e90272efd5ec72566f0a77259e26cc18c82fc81a7f7bcd8abe41e06ebafedd7b82d9f89afa090c21e31a56b5def5a244dcdd95cafba9772cf33892da1d4cbda8bb114dfe1525bfb56a4863a3fd4dbb07be78d4a0063ee24a9958f68165cbbff042eeccfb4e5cfdc72d5a39ae107b0d50dae31ee879fc535ea41693faa6d102781db09c33011015f411e53eab8af96bbdbdf0055de733b25e048731e5c01a10b83d4d6fe3796ad9a8f370ab2020e44f371d60df1cd43df34af07274a1cc41d37856234953539e699b2f5b8cd5a743a94873cbeae362b3ab44e97220810cc2f4c2fd68fb709e364c71f9b18334c09835d24fa82772d604602de61ce603d5598244133a8992d47db647fac23817661ced3a948ce6f4ae2eca92a151b892d6a45b7027965b5bbc0524ed08ef587fb7fd495a059dd574983a42b5f01356e473d0efec92d6a2de28bb0df4cf81f6c1c17e07bf373771a1a63ffd6652afac0ab7c00a90c26c1c1c58b3da8b11dbe5fada7e80780e57e51b757dabf74dd044f84c302d7abc5517c1b45a27d8c077e8e408f9b701c758a0efd68473d43731f5524cee86ae7f944307e4a98208e16e579f791e984285ca6fd9f73fcced13c23a0ff912e370682c6ea098eed55e4c24fc01fa5d28ca14fcf987773d3c4a12c3fa1703a4740c2e0aeabd04ca4109c01d2815084a9d7f8648180b2bb7905c111860b353fcc68725ee72bab2b81edce0eefb0287d211720559f45064983692f496cf82f5e7441060ebe113c67c52892643bd884976a7ae677a84debc7cc721842fdfd3ec3ba77040509ce7b097020093da13a87d3d3bd6d01bb2ce66a969f5c005f5f3625704c44159efa0c2d9ca6669af83c082029e6d63046eca0a8558e21813190d504621b9b2af3bf5b2068aba706909eaafb4d738d3e9b74970e235217946b099a767b970d74b9b6168e3450d217a1e39be3bcc5c4dc6624b276b221490ee0c1594d13f9c0e9a375c926ea7a8f67d675b08da2a0a16633db9759aa9ea001ba0f8ec5b5d0be21d6d5d36b43ab48ca6163126bdf7834964937d9098347c7043a3b2e606392982cc5740b805912247ca11c0c64dd24acd4db89a50ed045150ad7c6737538f16ce7103660b87894418585e4c31e2bb411d1bee4f9d961b3b5f15ede1bd4961a4d2262e4d292fb622128867dac92a0e50f8c42c132bb0b6b183ce1098451c7a78b9bd5b3a80008ec661943004aebf324978626c50470b182c73070bd9f215b1c21b09d90221cf6e1d601c7b1d1cebf5a939f1f535d5c2d8df8beac7df028b06b7e0c9f336d272c77f9b7cbe42f3c637f61943c31a3f23b936fcc276f39384180008d3061a5f10e6f460eb0b2ea5b910f217a6414ea63d5de3a1c6fde4cb6f7411e0d675406894b2665f6a5d8100e80843360d90a5b00473e8f13cb57f5d43fd35075a478807705d022d9183d9313e8ea5f6324acc8fd732baf3449dfd7457f0881ac2dba88f5a4b6ee613fa027049dfc6174aaf015e962e61fd88c1041ecee16a27d4100674af30ba8f631f0b3c0bb2e12b0500f394108a379fb10d4305a5b262098613b01e6a946815ea4c7682736da36dabf459be9cd33dd62f747cdd8e5374626eac9fff65741eb8e5aeeb9a6a9b95df488902fb2efc57f6465db483775c182b02714684f4c8706014209cb13d6a7a4b195775477937fe5532271bf0b7e5e155ea170c82bc2acd6213d7f08000436c254530bfb73495afd817795b626b2b9237cf9bd615ab50970719da33f24442f165c74d1d00da186ec2b65b671aeaea46d74789236b846d2dc07dacb1f30a51bc434925533becbeb86168100465faa3cb864da8b465f467089a169ab70d5674c02e0e8e6a8fb424c64c8b4e34a5eb68cd6b93a4b542885f8db75e574dac6f64ecaa3c336d390b5b4cad3173fa36903b81221ef712237810213baed7656d993ffd6ab18a266d8284b4ad158095ecd43521353415928b9d92256a255b8fa287cccc93b4c6ea681db51ef1312f7b367a2f0a731bcd0f5ec8d164994a70b7acf39c85ea4617d7b3bd7ad34684a66d17fdc2a8593ca31cb38b2f6d771727c2a3b45c6196fdb84b9b2f94adc8600187147f612560cb3de6a4a664dca2bbb34720c1d41480f68458a49167f580c237a250ee13443eadfeb58b1aeb3f04c15b7527b6dbfbaa4d5830220d4501f14350b18f1eb910b173b7390bfe33343c5167d12aa00e2eed1aa5159adea9a59b2e9c464062625cbbc09031220453cabc968c5a4acd4d14b7c4a41c565b8589c9a0641946e74f0c6f9bfcde0627b20bd8890c782c0f5cbe0a69ebe597bcc3d2ee5c08a9e322bb64e76d008e614adb5b2cb526327ee7e4d16c26cdf5b35596eca03d5c63277e8c216517b232d033d93acab40e7925f49a68c40882657aa0b52ccf0781c8a5b200d73c988556b237d116ae2c25afb556754e5d0dd0e1a3b02663da161d33ad9a17c0edcd77e61a7700809ae24fa7753b023f3ed2cebedf492fa656ff4abadb94e289e8f23e491ea480745cf2ce592b265ffbfe8b26f7c888b80ea5241d7d55c9be30e7e3eee04b39c05941f9b1730cc54b6c1f46104cbd3d4aa88cae4897bd5b730f492d96d0605a51d2511e7eb5b8e9ff9dddaff15a5f8eddffceeeedf8261e129d381ff9041d873865ad650a1fccd119e90b52de74d779a996e667a1a9c4235dac1a38c11552c0101c85509757ba06ceaed2d4027b52e2327d5bf4e66641c89dd743a1b9465ab7ca9645c7202b3e8793b880a73733980630103d10dc7780c9de6ddb24b01e7b3a283a601387a65a6bad23f39c17a0e26faaa76155199368cd4a4c7b808bbfa2234902af449a6deb6b842ea33cf3e91716e659f9f62ea563657cc884ede2668f8b276c7b04c4549ca28067d7a1b637c2a528810e55a7559d3102a5dad2d6a7b45cdfc7cf0842dea35ff539f068785c80e74691ee25f4c4e152308ce3de661031d828063257caeb10a4bdb4de4397a5b15349ec754ca52d408d93991e01fd4daf6ed704a0917e20eaecc06bf7213092aee258f2948329171007c673075b3895e418f620da841b73a82b4bef2f65b39b2b3918952fe85145b428488819b8a48c8c0164b11571b3a5a17b1fc857b8e8324d92cce1dcb5805d4bac9e6f85c1cf1b6af9a41c76561969282de225839677103de2daf41209188f18fcba6cd9e4a197b242f0bc855b8a28adcda81c1a778739a3cc5dcd6a2dcde1ac540d9d5cd30ade11f1d345316d328a2809a9b0e755802f494a958c6629938b53a9951bcd50c9c57ad204b9b899b09a88354479a3fe96d520c4c146e2e8d4323db1784d22c0dd322ae359e656fab0541cae0c034604f8fc95ae91dbcfe2e4c113a4bd61e03c69f76e7bfeab343c94f6af06a1d3296d5b134480681f436051ca3797afdbad67e47aac36be0b48520d1854e5efe67d21f81be3fe25ef66897676d78f3801e6d4b1bde60a4e64c800e427245f316e511db032f29c16f8c2b1937eb45672627ab60328b1c27a9f93d8e38426195626b18cd8776b8369b4ab73614ee8b4935f65a3d7c2c5803d22844adf491452cc7f5195b1362716627b65b67291325a3abb73945fb5606e04ba1fa65351e68594d6dc1a7c2c2405f7075da531a485c42609b1ed3ce520b4b6e1e873279f6e46779d7fa24a7890f58d65da0dc4863a5587965522084eff6c5c5c9f01f250bb0283b802685f46b5794cc0e31d5bb4adef29a8499fc61cd45be98f1256bea03a566878be4aaa20dba4b81c9392a963d3a06130d12ce45b1566e9ff8a4285379e9eefc4a73fb33fa054a2c49d7e4670c08f1887645ac12e2d8cc50e965330af12102e9b96fc0e066688f435659a2e84e1c6a63e59eaf32e3cef236fc1dc2d1c26a5fb58639eaf03d64f46c31c4a9425874daa480ceed6517a46f0dd7c1caa895be02c144ed9eb2de3a0b1794f76d4c2d6e99f6fefc7d035dba17925e98c25f99806fc94239f90c93ee908608de36a8ba8584d8f58bb653649a4d95bea22b38b1602516b6007dcdfbdad8d358088a7815191cbab65672ec9d1c55a6d2d4212bb01e43b2bd276803c7d65233febb4a10f28095c077203c82e8fe8e2c7e7c9a9878296fcbc787138390001bd0c1e9c52bbceeeccad1ee4f1d5f35ec67bb53c18640064baca1cb89cff115d9c45f04ca406e0da24d5bc4407207067dd3b5b35589fd9b98167f280e7a305221733a6f3cbaffb5951690c8d97935559ce18e4b09dc4ab4ccd3171b1e24139ff0dfc2eafabd7bae16599c32d09b2a2700fb22ea879dac4b4484f37ed208fb60823fa37eb4003ace879baf2c0b2cfd3f613ee6f173d56ba30648ead07e53aa6e72830e9f3093630a42b16e8e2e901f466130f9643ad7acd236d7fd99dcb14468892aece3630b8708b922464f2c474f9b1c8c2ddbaabe95ab9c6ff26f7bef82cd1aad1f84b253ea8dc8270e081c1623492ef9962967277f2ac601214ea1808e95131a42d5896e1304e715ad3627a2818a2faffea4c6862a435fabb0550dd18b23ab4d04d8e3c8fc2e881c6c6564ade7d2e931658b1e21c5b910ebf25329e62b3bfa50b8adcf2c7274243b8166252a73ef5f589b19613c08408ea12750f6a3957bc99bb9dcb40570f191bea52820fe97f1f40ebef84aed401267c02190cac492ce380471d07d9d13a34083372840f4d517000544837328007b3bc1f2a0700df987c907da57d42665e5528995af6e0238595d3d6d23fbaa5a59c7f1eab96e323d2174d2c57075a9b86923fcf3a97eb3200061438d4bebf901411d1fce2b05ff1f8e4ca72766dc4e5dfafe3047c8d2f0e519942628b53de7994fda009c09d07793c7040097002b4cf800342da5cf207eb2ae4f992c02872e4b8b4f29386e47b374fd3a3dce3142b6cb64805f057aa6d4da0afe426ed607cf78335aeba705cdbdd53b32c5a6237de0fcc138c88ba6654594089c90426c3350ba376396ecd0fae1c93331ea5aeb91dc7b0722d38cbd88e13bb68a5832ce28e9d29379601db302e7ba6227f2d19d539680bcb3788ad9080664e58445d8124d7832905c16413735058dae448f050e25427e25c142f2a4436c862a5d344c097ba45b8cd5d1266a3e0c9473b32d9c09dfc0568d1cef33e40072c217bb078013275c82a5378c5e619e6c4b33b297a6e8de4e5a5923042f649bcff184dc5b35ffbd035fe2e4ee6de659bc479951c1cf08c5b83bc5fadfcb90432000033343100c161a078e2acfd33817cb436e97357d2f186362a0395932c5696b1d4010b8d02251e23c1fd052a5a729de558c63e1d03936be1ec8456e0e0731f8d47e5e1ec07c0cf5067642f582af067ef2cad2b0d470dd13bc6a6563edbdf84b3b17b7bad411305969b504b7d45f353d17dd2094109a5939e28a0fa040d7ca2300b252db0226a3e2a4d93310017bd93fc0405820c50e97820bc7281fdbeaee4297ab79ce4c551903f91562c74d16043983813be7f2474990b40a05e2593c831d87c5e116cc04053f9862623601f2e174eabba7e36b15c00f9394a5af88a53c5b32db9399b8c1a79c70fd7ee0b8b1894ca02a719bee0ec309047e6978eb297179e6ea1f8420947431dc4eba4dbb027b760935be22029e25177b2a83b15410a4f5fc86ebb80d361f41b86901caaad50dc9645ed13c1941b69c27ad566080a72a243a1bfb86454d44ee618b47ab72aa26b9aee4d1f3f2f18d94db1b1d15bad9f4341705c304305a6cd9d07857ac0c1998f2e74036445679fd18d4f00a7828329b52eecc99a502d5cabe6e464422abffaf6bdc99b8e4569cb0208978d8820eb42a35fee099dcd248d601105fc62ea095d11416f86c3e5cd020f61eccfb1ae7c96de879776088ac6f384b2c216b13ebaeca5c1b7e6c45cbf32d41670124a27d693ff7f44a771414e46ed205f85fdc985a6db97a0bb48e20b9b2e69f2f1b700846a638f7ad5dc6bc4c28f8f170978718e6e7d1cb58512eba8f6ef32176e97514f83f89968b627be7fec7bc5803733774be291c6820a3e0e0e8bbe9349e606bd2a54c0a872a8a9201643b0a7460b87882e1e1c69c9955431b4382db6381dee2d0ec048a3f404cb3a1256d962c31207e1b5d85ba70c77aab81843730dacc50500994a8838afb416cb8fe2167bd7c56e12ca2459b7f84b19b3062ed6a56426df576d461b90cae5e08ab7fd7268ac597c21e52f0d7e7e3dee065fe7b600cd543751243d8e8bad88b35d1d8850f570501c162c06915bfcc74f2cb0449c8e0298b9c07d4416bb07250558eb778bad2c7cb3b253486d1a418affe2e3897c7ce3fe1d6dae793e866c139fc8fee2ff843c85e23e5f9b347bf610cbc981e1594e4078cd92f9387a911a396b7616153166b33c6ad6093d2a7ba949848c3ed7d0a0762e07cd858f7c3d582dde54a20234a0e5e9a40e3fc476460eaa41241f56596847a7367100df514fb10047444b4e6853592a750badf9552f749beca00f55129a67e2d7497858b4a00d54d3307d9c677d2d1feebcc1dc148de124f9200f191da84338cbe4f916acbf85e9a7c4709d4d63dd0a321f5861c645c12eca35fe890d8d586c9b011425c87e9dfc35f63e51c9926ce77dc77d0db2561abf6a15cd27a059312a9c33cc2c68e1e854946e697d0a803ec3e302c678432b08642756c4f3cd986fed4262ec404ccc9ec8a209653d315eba6e7ccdf8258867d0cfafefa41894f354e46f50389b7a7ce235e51313b6d9d0da2ec3d83ca0ec9fe760e0af58b30df40d0cec9c15cc4f274bd0294d5f4f14662a29f1352580ce37bc0e3e463929e3817b0d8cf32c3b0efb8c8e3d4f54b92858ec5189625d932db8251d3b138a30b190651bda29bc374834f31241900761f8fcfb138022587dbda1f9eab65a08a42e5bffbdcb06c7bfea65cb6710485fd6e504439b7c0ec32dbea59bbaea321a218af496a1abbf80822a886c7a9c96fd05fa52378a1d091bea50f0df37c25ba99c2108f75a70c970c6131fc56a918b8237406dd6b4377124e02e5a71e2869750aad6a48e570e3e314d44ca628fbc1bb68f5ca9c7ea00e7390ae0c30035c509c02c2da33318f12401c84915c4bc9dd94a268a338e26e20c4a9521245f08d1d47e594f26d9a662db4dc2cf45b1c93cf85324dadde6440191fbe90c14f0530c16c1993ad48d40364a562dacfe25f4f84c07058a56d3d3944535d44ea9c21ce450c61cfe71a8d7f061b7d03c0efa2fb32488ff38db2029d2f8758ffcc5956599e421625b59da20d3d17a155dc950af3919fd852fdf76281a2f49c876a2b7ecea37826ad326c235cb5bccdea315895c426cefc7c414321f1079d9272be2c94b80ce2ae964c73fa1b4b1142e9bd4eb6911bff6ce0f6767ae756840bdb3398d8fb0b53d985abd107d1f2ea56db0f32cfa90de3e2aa5953d9a440fd2d947fb50d98bd19287e905e8b0cfce92690d7718d082e688b9709e6ba2e7f93f8f9260d31599f03d8c82cb1c9b11cb3942728b8644bc57c550d8704ae3bf7ee45208aaba45307c856bf5a7d4e83d6286ed6e4a214e64f97fae94155d76515c12f6a1edf204cce2d0d2c6d7f9404229b4a29f0c2dad2830e441576e00477a083f325234c0b271adae85f4635ee8d0e47079ede8d5313507b9918728c4f5067281620cda2102b449586e931de14e6711dc86be98ff6c378b869b1a1c09d993c367350a0ccb880b0d7ce05c1fa60cb40992cb0ec85e7f32b7a07c8fd47169c1e8430acfba879212eb0dbc78309b6d70511496cf2d2232a8ca572ce0928b23ea9af4c55b2f3f84bee9f28941c5f49fe0ed831e9ae643cc7b3c9cca29ec9b7dc5f7321aadebc9c766db690d6310cf218d0cb00b6d1435cc291183a147e435c9fcb895392997242e262c20506d039a74e11b44dc42afe244ecc18656c07690e1f21be5dc0b7c8b4b08e1a192b26c5f756b746ed4e4988f1ec8c145786d86fb53a25a7cbbea2e30aff44a7c9aed873db0e515483e2e3c2e54e31551ebd32bea72b396b04dae50a25cd08804af651fa189adf05619a62a5424e7fc9aeae20646e90429062a4245316dee8b28d7ac2bf923331c4cc77bce3ba55dc18dcfd8a9a227575b81eda5010ed8e893355a5704902c69726ea1df962c4b9abce442dec859b732bb9369cf034663e9baf459012f210db7fab638435d385106e4123fc60aaed0778d83d691844f19b858b890cd391e0a4df20ba64d7f9a5d8808cdc31b62efe9b4ccfbce4e481afe513ad15d5f07867947d1a4356c41829490f0f03dcf1fea5e4656ca5a0b07b18ec0e1e91a9fcbd5393dca41d2d150f0a5180e4488bc0cc3c5893109b51021622ab8d85ec09d84d38b899292e670781ccd81e044c1b21285c9c71c4324ba111aca6f0e4a36cabe772255361378c83de557950ac924450e98438bc45d0975a62720bc511de66d0fba34a37571fcbcad7905db6f30469e7cc2ebd6c2d53c6ca824aca12dc52b37c9f49e84b27e5084578763f685e1e9b5ea8f2d7ef593cb76ad2af2fa9ca9286d59762168da02499346ec43e077aa9da5aa53b0c6cffcee0c78554ad47009cc40e95927fe4f2304747b2a357789f974b0f324c497fbb79e0210a3872ad0a08b66b9df36cb7fa328908a95604cb37346e533b68fe0200923812cc6e6b139959701d2c3e34d72e71affd216f78c6e14e23bf38c5a10ec233b85f7195e7b906f2cd2c8c555492ba0d4b2565494b1fde628ecdad3b52df3c8488b3ff3d8917f4d56218fb05a73bc2a7514e57f7f2c3b95b526d8856dc8377dc801dac2d10ef89170f962ec8a191cc035d07c5da54b61d87077cd6ab71e72c351fa058073ace6b45e594684cf769a1e377d64b51cf7eb01feac151633177250050a57ebc6a29c9dcae161b4d3614c2e53ecc74c81011d9ad7dbd2a267a6f7a06e76444f27eecb92e137b1a02577ad1e30398f4705ddbc5cd1d1d5843e4b17477b2f2e081a7b8ecc13840a40f45ab22008577dec837a6710a642f090ceeccc70f3e49aba95b8916e9ba5cd102f97c3371c62bfa73c1a74a596457a3b59099dd3a999b5548d2de16b295e29aa13f4d501d1037229b925fde5434ce8054cda2f328c68466a6e2f12b44b326c9f98fff4e13e20c818e9f2551256dbffb8ae2dd18aae90d02390d85a1e40f72ec8c5e4274eff3ada81061547f88355c2a118ff11532d79e0d9f0d2e2169abf9be0c2bcb928890eb43bc5507be3e093a1bb86a50ce3d0597c5d32961d2c3efc853743a3631e1a2cb1e9891fc311190b978226120a98c0313b8ca1b3a1a055a08c166932202d39c85a4986e61e291311c75cbac15fdeefc8d8a22670b2d053f537d2e95f2e08cd463ad42657516b03c38df58782ccbc867c8f70d87839e0084af0a2281a0ceddbf085711e646380a20fb524fff104b8630d8a82b3e3aadde21fc6ca617ae1d5173635816f25e50e561174c465de17f630781c5d86d43e27f647107c29d0f69e2512c549ad046d05a4be157d28da5b7a363cf75f14ab560ee75a2f12d8c350501d590e6e7f4a4c2da263287ec477565e061b540fa3cfef61dcb7dbe59571d58842cd5eeb8b19cff307f6f54a9d335d3fdc4f412939d9dbe13831c128f6c1b1d7e0de8ab8582c541a113b1cf79ef01fce520b700c63c7c9a13545341af530118fad8475c9ea211a53e6e049782c6d60a987b1b27c5b9c4e560b45ea7c22640ba39a07a4c5590d52056f38b572b5a2071a2f33352161138918ddc4227207495c816349b12dc48a20d849f70a48247b3100fb483a5de0755859fe35bd92fc28bd3fbe87b3dfbf747572424e6e9405d6af34e0190100297a2c3fceb3c2dba3b01a67f84d8829339be980d46685608a36e3af1013cce895bd04efaa20e9a40be314dd57f4f5e19684d87adece45bc9705828e52aef45a84943688edcef3318eac2ecc1a4633dfc7a9779fd4914a517e49ae7cdded77e89e7d7c32f06912a60a25a002e12f2303f26e440fa6d50f528b22c15fe5ccadf9ec4f81027ff00fb0c740c74543bd66cb79a5e522461e9366616b236f41f7038e6931255788d309c68a35f1ea52997f9da5598697f301f731c3a7a109c8b5b9392d2769883b5f0ff86489079a3ed450f8c845b7672135f4342bd1e9d6b4f0c4a76e806f9054c3a854e797bb0a6f4a4273968b155c8c9c7a9945af8509337d0c288f998dfd09457317a02b17a0b68dcfe50e6e63eee170069215125dc4b88e8f434dcab0f7638e1e215f3ced959e5443c77de678783245376361851eee780eb9134ce54d493b3255d706c82df6e3985ec9fdbe28e09d9fc7ac0db63b4bb2d82c8685a59df0758ce4835e5418054ad331c9dbfa11c5592e656a0bef5e00cfa7f5301ef55c725e2867da8033dd41eed691a19bb1b920f9548798eefb2af89349841110e93dd2295ea10fa10d00957247475a75854d3797f8bd298f98697a16fcf961d6bbcc676a6fbaf1e5b371572d5c9d4b0038737d714a21f097e0b32da46c681abbaddab9e0994d63820f2d1df5d8686a0ee905795100fe4e942824cad8ee234db79d2dad2eba3a61b9732b673a38b20f1fe9a8a7f19a1ec3fc57b4f92291139c7cf6cc6ea521633e85fa11a5dcf95ae102e2f9ca622e0b04237d2625e8130d6be4f58f347acfdc730f8224f948abe6df0f58beac86d863ca15b9401f2c6dd76198616ec1c536b2d7940f28f289925be88c3e76fd640a8ae0dae531ec2a005cfcf78088ab94d75d3b58d796ef75d7c48ec5f54ad3233c74b73baf09f98e7b722097452ebaf508e966c7b2066e83341a4a0c78b0cb7994fc41bdf9be23f0946b85c622ab652e5a75a7b376b259c8b89650b8d6bd44b2c8d042ba806f5d52f4814bc10d92bfff4ab66e989b5faf6a68002c86c83b76803419e14044ad5abf5dc543d723099b27bf12649164e334d90c9c0597e5b4197a243ae6ffe8c40ededebc225899979d54d9bc49fe1f3ab2641675325247826e2ea8f5bcef8fa52ea60233779b18065a44462a6284004333f5125ec8b6aced9af3d6706dd9f50f1d696f71b16239e97281047594f049df809ab724b65b6b01da45ae570fa03865f8e6798ce8562a106442de800e835ecd17e0a86b4885b5237770e226cd9fe5ed4b0a4e927309e263b4801ce323460410cb717c89723a20a43b9e174ecce998dbc57ac174ca9cc276e94879d6589803ac1c13d548225360a84a2089a225df5d6c428c3448a021d6861f194ae9faae16d896676e23928b4d42b33d1696e1fa5ac892a5dfdf26825e9565f8d0ec0261bb98dcb42fd1b2943d2de9c3e234819aac351ac2f20302180a4db37de168b97d9d012aa4bcb3fe872aa58f02d9a9f117fcc19685d06ca3dec4f2f8105e42120f7cabb38f885b1cd45acfde0360708ba3c737920d0e6eb1c1e8e435cd72b7888764f87a5ddd7b5ed90b913b19cf55f73fe0c0b4b953fb09d5a7db21c75955fe06c301707ba552bf9bb6524b4d556da1874397cde0d7427707c3daf396e5658eb3922fdc1cff1b1f8f40deb8e1f557574e0c1a9a742698c4c0a79866fcf84d1d3bcee964c74772c8176de3fe27fbdae7148eff58485deb1f2b1d10bee29ba653f50b09ec3164802159114d7a665e0d702f5334acdd714902fe7484b744ea5d22bbc6a3905f773d150e4d9af37b54ef1df5c9bbe06705b4a79bb34428ee846af935dcc131da3607753b55b3ef6ea9c3dad56aca480a9bed07c01d54c79523fa92119d3a370c3ad96612ded595f20a63a12965b22bc023070d8be22e25141f5e7e7b52629dbe87471fcf29cf4d0e5491214c0e34c0ebacc981b0959beb527428ce23978f667b8e17a91c226272fee8e48efd194d52495f75724f1d480f9b45275925f84c09e2484c9bdd61d0585883ab356d927429143c7cd3ef362e21de7d60ebf35c884134bbe49e352e8f54ee68e2a41197250bb42ec29db782cdfdb023561861f074c2076b63871cfe3e9ffe4467dc9eb2d93fad0b731bc10a0d593c62c3d01707e6be7bc03e7e37cce4995dacb7be06400efcd0df3adbea655191375fc54a0bda94f05b6016238276070917e3ad1bb99718adadee5be5dfe2478067e11a2b93f421c2c4fc78ad60713d9642202f2f0ff8e3d7abae3f6ecbad4a6c8923940bb51b5e9a48b0f7cfe556b9bde8e49fc28940a6aaccbf456934258f60d77659b2a1a9e4b2c54cdf12dda64350d7e8ae1c271ad0f3e537281f3a80163ca249c46c56924829f6b040ffec2e4fc24d20c27e4c9575a8e8ec108b6b6b1da24b6894395f0280ecec5173a645350523ee0326ce84a5c2bb9d383df33498ba713cf2fafe72695654456c9a98f500021c1829c15e357df82e63402341e08e38e78bdcbc2800df2a167f0f1747f49185684386d18975e70f36185dc00c3e17e656ad1ca6420b6b1d531190aefe731dcbc9be251dee1051ba73ad03f3f8f1147539858ae090e721163d25993863f1bc85b46925b9a17a05266f069a8bc28cd3eed2702ad21bd081f6bb38d5ffd833364681d2a06582e80f1e970ffad848d621d1db615ee690342f7861193edc7820ce7cd6e07f34707cb9ad95225324b2b4b5f292cfba221c3a8cb8501de1047848799b4cfb3c8de0478df3390d74a6823882f36cf694d6e08556667b44655e9f6d759b4ea6bb821cbcf140a848c9b16aee5205736a8eee9d0886c8f94f7634cdf3d15889e9077830a3a2d13fe982c6f6957bb5b2387701ec98ffb96b110b7e7078d7ec8180e3683247904bf6670131a68be507bb4c0c7ddd43cd56078386f05f1ca3b41aef110e38a857f4fbddf324aa8c85cfb1da21dfabb1048d6941f0fe1e0fe2afc958f31941e50d215bee10a1665cc855d9d055d2d3a27aba39352de191a898ca8438b0e31febdb27146afc9d71887bc72083339d7204a7f14396f218944bc9d8d40dd5e965f8c149b3a135d2d5d1e10f7ae3cbe7e6c2c9e512379c9c30eb840a54d2ec9355a3a5ae7dcc12050999cebed2ae0cddb51d3321b7e2b529ba0277ed18ef94635342a33e0849fab46cf71d8b2bd078e461cc6769333cb5c784d1d4369b2d4fbb87a1c30f2ff855e740defc47670823918db22645bb80c9b3afe50791aca46d20d97eae468e2b63417b58d8317a353c0d80f552dfd1f3d0c6a2835a266096b21839537446b89509c92263b31a995ad1ca2314b9017dff218265907dbf9076f8422b73232132509ae611bade4736939ecb14d91814503df693780f55f899f201a7e1c707a69512ebafc50a3c0a7695d2e1c7c8960a156c43f45a417c553edb71ce2a03aff616772436b3caf9768548af637c2514791980822cc12d3a7d0bfb8c26cbca09ac16cb1b05405c2f71f03b383d0e9cd3e65a11f7adc66617eb539b5875f27660e538fc1bc232c98fe9c8fcd182938b79363a11352641fb1b2e5e193dc310d6e982524cc76b1f5d9cc81cb86db320310c1018cc986f55a6c34050fdf1624c24612d673c370de0f6af1a69fd9f4208660ddf59175840228d3109f9afd04cf514afbe8d2e2c86ebedda359886d1137ded51c1e2f8f76108ef34e11b0b841da0e8d590e9b4ff5f500074ffe0b15f82cba01789a9e709ed6f6f8d0b26104003b636721846460fffd1ddd1102831d66c35a10ce1448a7b7bb636a19772aa94073ca18b105a6c4209ea5ff47b3960d0592d32309b10a7d91757785486468d2bfc49d79053b81725bc84c6f1a14bbafb14b57ccc4dcb26bc2285b8fad044f64091cd736de3a29e23a1aacffb3ba67b848e284c939182ff18533822f1c7c13d4c5ff7577274a679d331c36c9ab7433ec5c06af4fcff0d4bcc13f211b20f23d0900f658e1484cfa2636d2591aeeb22bf09a6c2ca0de8b4d057ba13b75db6f0b29cea890da1c113397488093e2dc254aa4d91ff7c3ceb6f43a6c29a4ce48013faba1e3df39922afc04171935abbaed9d42c3a9fc7b040138a6fe84bbbb61831cc58d2c7ccf5ef8bb3cfb790300737762d691838bf4b5c77e755086643c8236674a3cb26e4b77e8e06874c05e9ff433d92253873ce1b49444ac821c37cbc5c4ea5d041b4133c844afdb11bb8820889699ee3193e35e5272ae3d45d95615ccf7a32bbe33fc651c9faa51af233a02dd7d17eebf50daf58e2373cd12c859d7fe8b01d5195f165da980229a6224f6a358ca274601a0d9866e99762b519e9cb2fed8575f4dd17fa04b870949b6f1bb47039c3a893fa631827f88ab7c8bcfa4c711564c891e93064e7db31deda7d9581ef8ab8f2d227803188db55e38a4ceff2a957407f5eb3d8afdd1c826c39a0fb7a717ba80607d75ec9e917594fb616965ecc821d1bdc3bf71977b5ed3286c02b0e0354fde30d6b0f91135ee18b152bebda8f83bd257bc3a8fa184e421b36773db03a0b79d1b1e424d79db5fc97e504b98fa10145fc222ea711b4959258821ab20c309da78bd5e1d014d53e6a74997d1076697c313eb1a8876864d3b366925bd7ff561c7c1270ee433b3e234e0635739e242056c0c984d0989c1c468547a18a649972a106d7207d8bec4b14b6b20e8019f3110e6f3801e356522ed472f588cfa0619fec6794262c528b9e3809f0173e702cd7fbd8f1526e8a23ccc82f2b71d3401f07812643740cabe294a41282b729c891064356f5ee408765d7fff217ccfe40c527b33ce7769a8f89cf4da310d02144a3bc329d42ef2c26360aebbc5ad351dfb6e19057fb5162a3fa69b18046ca612608d17cceb59c3c90ffa86aefdba650c9b362add2ba17f15b7c2f25a21992e888fcab428f141f7a64da6ec49532fe0071c5e6bd17745e196b3cf026fc2593f05fec3959309fa8c837dbbabc40527e9eafda0bf14b0a250716d5cd529be05df11e42011d415771a87c8c7d5d3b0b0f1384049930b894a3b96b5f334f94edd3540b615cda5e22a064a2d20b94b8130576cb8b9f2785d5cd24f927a537ce0ebd55a58c6708806345d2acb5b6055891a1826966cebd35024014ecfd322c4f034daf208c22693ee07fc494c7535f1c3f2fa04c4b26f34d38811a7cbc5be16045cffe244422a76dc2780ab30d0519e730312e6fe0f1c26e28c24f5dd2cdb8916db4584e8d3d879b6b8ccef1abe21671ef21bf975aa8098483f1a94bad565f545a64b8157a603938331ef5326eb268e351a59adf23c096cc94c27e86e65c2c5322a286fc8eeea5e176df5f9a4059f3f78d26e940fdba87f99cbebfea2796a6b5c50b9e694d7fee25c9633690233405294894ab8f06a6ff34e369937fdea1e5085338d49428789dc139db086a94903594e560ac5046cd428b16b034ea4dd15a8c57c72c40c3278a94649ae3ee7db52c9662bd0bb1ad75c3044bdac2a49a5a0a0769be17f956a378c5e0418c6a043640048c451210c548605a8ef878fedb72fbb47e875a69f6e6bf6b2023ec0ebee5899b9630e3142d3a191a39c8c79d734f10bd5ebd9b4c576ecec75a3d0b85f41bb6693aa7a81125f8ad1ba6fc080f37908e8dfc16aff5f258437b8bc455dd7d99fe4c0066e087090a110dce062295f90a4e65bb2b72c9866e8bb98f7bf300343aae3dde9c5e9c2ce14d787128585fe2d204ad4eae1f075388a922cb8b936e062775829107989b6c9504e690fc9df2515c0cd1316111c72919eb793c99bb52d48490879ee9b69b053aaebdb833cafb8056d3b3670c550873985324f3d38ad71cdf3badf9f07e5ac7779a2a8f25c1747355d6e320969cc658a02da43bf5a0b6fcbfa30b0e91719a90a0020d1669130255749cd098444acd90f6ad12f7fa9be9014303fa69222a5e56f26d93f27ea0087bcf86aef3a684d1f325c9b338421c676e93c6f46d7a0be951a939aaff261a6788e4f563721343dc0fa696ba6dd9d16910ed027b5abc1ac0eb5c2b782c785961e489565b958b8058bccb578433337a858e843e2479defef818912130f06a942ab5a3c5c56825419d6b97196dd0ec31438d8063ce29306b831b6e506cd9cfa4677e763d23a1ca5c54a9ead342d4ad789fbc32f317c433e33d19307ef5c51909ab365ae2c4251366d172f8378399c9a0ea9a4dc425c4c6808ce714c4d8f0b61f5495efcbed70231e58264c1a6729e2a03493afeeaa72b18abe3af08321575971265e663178c9ea8c62331712932b7dc67dcdbf5c65de3b036d276711ddd0264844493f14fdd72ee3b5dd3dfaa1dbaacb84fee49a0234af69eabe38c44111c3aefc31d850f1a008e04e558d327f25d309d46cbb4aa2fc0e213a6a9a60fda54be0cb66a8685b56c3db9b3184c8fb110ca10311066a665c275c13fce9a704e1ce66ad755df1f0c966d8c0d097e64d5388a1c6f45f341019a32095a4c8e921dcf9a07d4f07439370afce985f99ba4535b3b29b804127d596f3cf377c7e138000958bc929569ea5fd7569e696d4c48f82d0cdcb394ab7ccaa6ed0f261d640b797d628e649a938b628a094a1ca7e7773731080fcfd3e2710665b53590017dfa2c654b4f247f108e6bf9a9efca6c4b556eff56115b70c18e496c8516ac74ec1ab5a7b2a41399a1048de6539a6d56a59abb57d008ac9f46c90bfecac4bb368f695a97d1cc99261bd5380e0d94e9ca04ab5263fb48b4b33ddcdaf859605213c9bc58340937db52638a5d2da91b3052c8206ba8ac97c86bd47b6e87e11d4df1e481dd5863546740ab8f9392477eb8a642dc1fd2797df397515ff63507b8c13343edd9f3dd5ae606cb3041447c50de848cfd317709cb048ee290904e034b62b48ee99443d087314218720ea83a59db3e4ab394a4e292b05ab6ed1566cc913c106584bd563a83ef7fb9fcc80d8662f1eb08579137e8e446cd02eb651cd66357e3dd59463d5a84e2ce3b81f173826ff4e0aaf0b40bf590d073217fe3c557397fb590e4cbb4e28b506754679eabc4a194722348db902bf6a1849947d5268c70d7e2a49fcec6c3fedf737a51e16965cce8d5d84b7a63160cbdd0cba8261be6e6daddbc872a7ffa32fe598b3b5ad0287676643a3912cfe32bb279388f9990ce72cfe8a806d850d38da9022c27c6a7e68a82afa50fbfba311d1f22e67e5a0c59c76bc7c5c9fe8f93d90300fe4fb588248a08ca175389e29671c0220ed1874083a4c6f23e8b03cffd990026e4a12ae1c7adae29d95f385d0100d1aec215c1cd5c5a866b800a997eb8559271b8f7e68cc279b6b8af2e50ff8bae56312c9762597fec3ebfa7ed527cd166a22785fd51a20a4bf1ac5a0e770393132c5c05b1bfa4625a01e17a32e827691e841c245135263ef5faa07db362c44269883fb7fc342ee371f040ecce0a213e172fccca272cfaed3737388cec71c40e0217f465e3dac4999bc61bd4f07b9d159584316519f691042b9c8772287106eeb6f49ebfb62f8a89a75f0e9fb3b20fb86a8113d2dde9d029ec3dd0bebb3e2692728e1fc603cfb033c780392e6016fba7fd78ab7a5757d3c3462c3c84c87a58fdffd50b2483b5200d81cb423d6891ad5854c14af936b3be5aeabf375f68ab28f51bfcea246df790c40dfd77cdc06ea5368763e74bb698d3961671c53141c96b3312093cfbfa9de4eecd96ac87a9244adcb80ae9be9266e62f9abc76e7a4c437bd793f3df04b4878ecb6ebbde828fe5f9a1ce9928d96d444774003a6e308f0df4161f93c4550bd8f0473e2f3e3b30bf65f59a0bd7eaa0ed83bb93b9b1a0a2aa08e2a0a41dad1efb8ec1f8ae756979ed4fe69cbf0f58e1522c01ec2d625852fab723b118de6530e02b862c068c9103d0d49ae7402e168de06fe69b70d04aaeefc51a5e0345150b46126493e208c1e4c1727b83deb165261df180ba0f8bb24ad07b0fd2feb54715c29f2b8fac32a8e9c7ad77901e752071c7686dfc8e8c23639d0e37836948bb8f0746a490dd1d52eb12c1bef447e664bd232e9aa2ed07f147ce100e445da90884cece830c3c21611d974815971f46f428b0c70ef4be606fc865775e316172ca7fe92baf7c0a1e941a76c7f7c488e1f91bc91aa3423553e396c084f107727aa4949130aecd74cf76f05075b6380a4d4457fdc04cabf4958f5f6d40552f7ea884eabf46dabde79b5f2f724ff74c65459b66adc296de5b1b16a7be4cce3f671a5a7130c7405c5a95a29b342e815c06d4ba7a8f3ca3c5ba43ee014c4f2578a038ea116c26e0388f0761bfb248c1b8591cd792f5908eb06566f1d28484bfe94cca3f25e610ec37eafb601286c4fd383bfbbe3b57d38d97b0ee9d234b2cf0bb77168414839906c05c08d058215c95ea71d077467a67c7f8d2bf674d2de9654f62e3ca3dae23dcd3c5a90f4079eca116a9b974d2cd124827a8b3fa426bc82a999075d4b1f2b825b99eac82b3855be189c1061e8e7f9dcc16b0ea211a7abc8446ae50f6cb1b7f43aee9abb8970cf12e57a16f52c7c2f474d059c3d1718ea8eb553f0b83c22d5c55b19b52a04f125dabc6422fd1da6607479741a4a15630798f08800f481e352ba278017d41b017f0bc6ced8f8fe696ce4314b78ede7ebb2941c09f4c671b5330cab58a23b1e23f8a3a4554616e8c4d37c7d03715730a8f87a35a02c4d739bae0200f21f1e8a7f6c5e67eb6dc854a2dece4330a32432939f65c7213bc9e2f9909da94f8f383129b47ada4b1c5520875afbf906dc7ed4299ed99c63120a98571764e40bd9cbb04590c927d1c09bb97d817247fa134d02d5dc04e1e397b52726cb694ccec2a76f02a375714c3baa5d0f6cb8e937950e4abebda8301e82d21fac1300d04d117bdcf346a54116973320faf5c569f94a835ed75d2790d4a42b93c3ac38d6514ba65f68000a41f22a99a1564663c528e3904f04ea9d579534c626f135a95f750ec4432ef8c0ec5d5e02a0d9435f6e47140c961bc784a26774a2107297abd1c6bb49c64ced42ad985eb8a38cc960a390b4c4b8eda25319965b923bd05717dddea70154ecacf3903dfc425a062277953bf3828fed939b81329d1d18ad5c3960d078cdf7b5fdd76a5f60598fd4dd3f148b3b19db63866ae065349f42c562db73ce38b42d0ef5e0b7bb4284d219a28ed847b09eb8444356b265da987835e023215fe28d501c78c22436351bf649437f09dafcaba0a514a143ec903d3a324c9cb9d1ab721b802763333d32ab9a3f29fb60d34269fced4179c1175cbfa8035a897dd503b987be063eac38c849f455e3ea1db418e796f2b8e5f6a0c6b777d0fbbd8bc43472c059851f9ae310d55e4ce182e7a8aa67258ffa67b1d972ca97e62443b5c8442300cab84a4f65577ccb19a816636ec89c72f9c5b1b51004b49fed4b69fd00b1ec2fbe7f1d17423a416f833623b30c0af0e3d98dc9acbe72eb63099ff85f30a03a7b0204674e71203b380d70ef8a65485412172a30ff60dcfb924e4e62e70bc85bdde20fc33c7294c1097b7383aa015f5c47b41e3a2fe87d15632e6d038f6c24161821eb633d607e775ea52aa775577f5081ec0ea50d109cd8ce734b0d174a0eff33063534973540aa2cb7919bf4d3e550a07f61c6a6f65b79be265211469a8f5a70936706677f49fffe4c3eaa2abe18c7d156e9286fa7aeae3f5228d4fba67072160a09008f10a930351186fa2bc62f396aafcd0e1aec823a47958cbb6fb7e8bada1cdfaf7a54371b13e78c12e08f5a9afa19e7c5465c772aefc55c1ea5be16ace4f63648ce56415c307a544bf99ed50e19ce5001047699a9195307287679e67b53a71fd14a5a8acc81650fd297759807cbc4d916da82ddc957b1e094e5de4a6788cb7fba5e5b8342afd6e8c4cf5cf874dd2dc4378f77f2210051ac4e27c870dd1875521344825ee37c7b77d8049e2e39933b99b95395d1fd8ffc3124fa80cd158880a4a48ed2ded29bf38a436e3d1c41b154712788df6e8c8efc5a1bbf908a2524d03e2012a8f3117bc0f5557e1147073010757c881a6d46cbdc686d7e983ec2af6abf0da0659f254250853a4da2c9b7227f25f916ec3b0ff9c62a00eb9024b0aa1851569313e08317601e85be2fc6f28d19faac1ea577df377594a9295e703dcae1f89a70e79efc5389bef2a53cdd2c065905ce3ae488564391b128452ee65efda38a9782fa22804c8cf38a755efd8014c0bc004ebf3657c02d1485b2866aa1f75c79468c2848a106de73ce2effd3765d203b63aa9d589a7b6fb22b7cee5ae6c82d4cd5086c1b88ce38b6431f2707b338b02256b29d2e1f59b2c463a840e8905b0229aeb9b7fdca417e94b632bb05171a49ea32174a9347096bfdf04207c2a671b24596d4c2e58183270ddb0d7d0da9460a3361cb01668fa23a56c4f035144558d18d99016315720c7cca8c6fd2864977ce8c2dcf4137e5b81c111339f5889d8e016a1fcd48da3cc25efb282d48f737662922f57e52179a2bc5da684286c819ff42a09e609468d2eb3caaabcaeeb0eae3afbe2e629f9a8f6218c44d9bbaeab259922752714686b32e731a2fb8445fbe3fa459ccf4b9201f9236e5257404184ed598b018e6a21801f086385c9195c1f205743c70fbc6951e93a11566c4c2e3edcc6e1c79debf2c033aa05bcc6194280045a842026bc6f7fcfb88d45433b180bdab745e31d8a8590068368a4047cf56b49a9f30cab60e7b0fa01b8a02b9fd85c107a4082d44a096601395db77403cc7b138cd5f4139ea099e0904137c3603c81308bc92589b0c269a3bdda233fd450c0bc971e8f8fa01e3cb3ac76021c80f359b09ab071138d3fe238eeba705fe3ae6a78432e0a70b18a7443e81a57397842130c2aff0b2c1fc3b20f12a0177ae09676963d33e0f4a7a2a88839afc59244b588a4489d60489ea0d5ed5a9a749bb5b35490093626c6fddb07758a610cfe83b277427f288c8e31f61923e3a32ee3a78c5bc85393033ef4654cbbe0dd81c9814c121d82030a229d171d719ab5389b1e3abe9afadc42c38647f99a1cd1d703bf63d6394d4e4c538faef086ac804797e6ce54b40d355a694baf424f43a23d724ce6b16a4d527c7f9c8fb60b618a3aa8a6e28e87a837155f0d14c2b52391ffe539c6b0596d33df5d7074700d106556fa5006c00f6b260f82b949926f5f539584ac36832e1907f118c2e4b9b0c3b5bcfea61b43206931f5e1ba67dbdd3012a2fbbaa2165e5e1dea32932502a1d6bc57b7f1a522320e5d36f1fb3b3fd92277d5a22d664302e35fe2b38d69fa4a5c3d43fe04b80ef448f49bc0cf6faae12dabfe76366f82df57f2b15f90a4e80a362381b3c482bd0dca7cb71923df6471f8b0275dca8dc3ccaefb862809784c8f51428a9995e24c289ea9a5ddfb3568cbe94361337a926563f954d0a18817d549039bd8ce2b3c2c55dbf81f1f0600bdbef77f19dba350b3742f9bb201d6379253d8736b4c08de8d291a5b771998983b0c3cb3b7692b005b9eedcf8c64999e4d7f436bbaf2fe178f13e1c03818f8979ba5e7c14387d5715421423fcb3e24ea3e2ba46ed8deb93d03863adcaeddebabab316347eaffc9090e2e16d56d701416826d65bf8e547dc6250d0b721b1bb38e0e5b9aaca395763133661a7cf624b9b715fbb635e05e3df6f4b1b2ecadf4389465dc96655f83be1a639a58f6d9f555e97733cbded2be6a8af8e943ce52963d46fcaa25660f2c1c28967dcefa55ff79cfb2b762bfaa82c82cfb75fcd593a2ccb2c7a8bfea04f9e32a378a65dfc44c0a268ebae59979705c9310d322fbd4f1c337556896fd83d50a03a49c657f3ce33a963dba5a7009b3a7e9f9035af6cd08f917552a7ea0af25876d8132911da72ca15549150567178bf004db2bcc809e2f0ac9162ba363b5d6b075c893315dbd348baa05912b611ca340ef7253fe2d19e01695225a0ab34291459400b89da4f7bbf909b7af017e319fa124489be1aaca5643d5f0bb8e5f0ba6a8a3655f6687b5703e9090b6b52e9ce1b02440c639707745b71d87088a3103da5b8db500b44c3b2fd112ea116a2fa90b94a8427805cafa21060e1518e995a59fad8df2a0c93aabc5ece2449cf1ec3b8cb5b614034bb1f888d4654dff82313808ff28a0c241a4ec67bc1bfa65489a32a8b7fda187fe3114607a5146a8954b79df8fe1c884c1ad123e4feac53683cc0f4495999a7381b92e1ab6ce288f41ccbbfaf92c95d5d921e72ee9d04662d0a1305028b8446d64056e377a22d67ee327ec37d9391d899f7f6da58b6e5b49dacef94af8b9fcf7a10e9757cd5fea61d3adea03586205d14b6df479d9c9605f87b4575e82b156977ed061acff766bf506ef44b88ed4da779232fa9f478c0406999f8bedd01351d1b52a1dba3c4fbfc248403e0bf8eec298f74c396a728a0cd22621b7a3bb5e4518ac8b26277e00c32faa1ffaf2be28865e4b1f5c3ce2b7407ea7fca428ad849f7d1e9ae644551622d0570ba0ee0d1e99fbe9be1fc65b158943aa59aa37c0f3de9aa5f1c45df1b39d08c28abae5e0b3bab8873693a7d05f2f65f96757f9a8e9ffc0cd7dd7d5983c4042588dd22aa3240d26d15004da11b409802b112e0b82971c38982f6314e4bc45c7631dc0738b2ee80d146775d5471fd4d45cdb698feca6d177bba045073a77cd992f46a320cf489fe0c21588aa13f505604644390d7fd9025102409f848c674024a325e1185097d61692ae4350ce6395ac3feb2a191aea66a0073b0706aef2c47552b1dfd62d6d33c04f2288640b71d2687a3a305a72be7b65220d0e30c4f16a31b4b811d00d5fe0068b35ddb200fbb9ee0901274c2cc7a35d449ba351dedf191f5df5a33521fe8812738f6e517121c909bbc64f1df4406709809128e63ec10447c8e211304290c478532d284ad95ad1eba5a1cd1b3380601d0530f25d0330cfe6d0993a9d1ffe66d65aa27b0fd13a4c55cd33d6bc1c61d92fcfca50455571d0998aee8250db431487c105cbae6beeb627594fc1d38074ac70e5e60e48bc26336e87f5a01fdad37ef3b0da9764106b0534fbb56a2c6df1d023d491588b95642ae6ead6de960bcd27072eb4b7528b6593b687419aa4b7e0bc5fbbf531a451a120b006a509ed78bba4920c891878206cb26d3bd54eb63324a0c6903529bd1366e08d315704d440cff33bf313ef90a5ee1cc9813953872b9ee4e840643a1f67ac9a69c55cff10a04c17e2f50e441b489b5c806bc0807ea2e3f624f816a42f96c6b16cff43e52a988baefcd5bfdbc285c61a3feb911190aef47d30152c13d9812e35cb3222e4202e6c8128e380d9e5eb7ed4e4b9e60b7d6c12f80463e8cc6659b84caacd02bcd3d51bb4ab07a6c1357b39a2d80b44aaa32875d4e00ab9321d5e20549537ed4135f23c6483b8f2d5d0ac30f59a1060df3fcb5f9088bb4abe17680bd68664c87f6a261846938a07e6b1be23621ef3437bc7fc91838ada0c69aef63155ca02749a05618ad34f0eab188e8751f995930aba19f5e96ae56106d8519bc542d681f6334626b6a7f2748db94a4d46e7ce772e66b28e67b03e6d5ba7bca5aaaef38f5d3de1323deacbdf59c706a92ed717578b7b415ae0ef8cd9094f74ebe8df5934d7421bcd7d0d107a25a1c976ef381b51fe6487b460e22e7c020e4d6ae7d23ddb0dd1e9f412c0b12a1ee9f1ad699eb9442dc95b9d935a71bfa6f07dfce642355d15df8a770b13219574115a710dc8794b9b028f8d5ff27978649ca0eec62a23f58a81c37861823ec4ca3f19e84f68174e43506af63c2a99cc62f52eb63d1810293fa821e49777e8f97463cdb9ba9eb8f58ce0d2b0a62a286b338a9fb51344af305b45955637cda3bca804f3da489029399e567d51c190d72033bd9e1e914bb20c4ba8a116843c55741f5aa6e2842ab98761135cc9c8d983a314e879093b284f27f485f3d80ae7f339eca3833aa99f9855e28b2594682d73c6d5298176b1bc7a107b3f596c9183ba8f5aebda463b0525bdf152aa166664a2b15e54d78dc2bcb8f307f5d593559159d48f5d54e42789244fb08472134143e27bf093375b99b8cba6a71730f0b2c27dc7ecaaa8149ebdf379bcb54e21d8198e67be87737e9009b09a6c9db01fb5825ea7cbc1c66671596ceeec302d7184a8ec250ba32ef083021523943846f0ad378d834741efaa8d2777d693a752b11923fa98ef90ae19e99c14673009a0bbf358aafdd42abc6b18236f27e41db1f5570c8ad24bcd3f16ccc6a3bd86d08a2940ba638f3d611ae998f0217780e459d5a56b8deac18b77af49632cde9b4cde01255f229dc34bf93539eae5b3c4d70b50fb33e1288c279796cb4556dcc41024d3ce348d5ad24b4d4471c3e1fa1e2b4118f3adfa32525c64921be92af033c38156413ff8581d80a97849a7569ced3427b0a51442b60bfebc9696c5b828fa5bc55de2430775fd4eccd70d77d94607e6caa05fe50b0457bcda06fede87099dc0cd70282bc4317c02e7fa849b81a585f8fca25471b504cb7aa96802b7b3a7c02efcbce15001db22bac9a37aecb4028968847c3846b2278fd2521b8c2a3cc39afb3dc8747a828848b8e411ae403dc34cddc24fc0a0bdea2c4f41326cbd12c7552dd9fd345f8723347f0f9d7eeeaecfd4f86f6e8097863967958e554f85113809a5e1044731f21ef5855029e3637857fb416d5be62e22b94cc28914f4ba2a08c1f21112488d238116e58b366184413b3fc921bddc7083de771194265ba4739d65e17d113f702a09833b8a2ed40358b73b9e375142961b19ced9f01ad389ea0a53659c7f6f805722cf3f000201cc335328f258a2d65863c00b3dabb26f95435d40560a3d980193e0550c4347b6714f3c4923fadda5729b90f8e5bd501351da40aa8439640fbd78a9dcde3f5ce60382dc823b5a6671bb9266dcf9d09f562a4323e01ccb7014de6be5b304808e95f60113000a83b56925111bf8b538aed1dd7f770219a351c731b708dede384b44f767181783cd80031e39f8247238eee8eb70c3bec611afa495cb3014e933f6baba8b7403d54f1f0254e7b7caa78af59c5829bb2a8cc3b0ef413833227077b647ad22ccfd124bf3c6ebc64e2ddb1034c13ae8ad0aa409273500295e480ba866f1162906a12f5012ff26bc2f50f99519942f6b96a3c26f8c9be9619c44e773a1d163e7abf5054ec6784aeb05b23c6093fdcdc8ead372c86a6106f6671890a48375d5d6a3e0ab0f41974969b7255d305c15a82bbadbcbd10ff26549819a49b9c2f929e40cb2c3031d41c3489dde24d9c0be6c2a7c68666d437c361c5effbacc373d1cdfa1cb9bbef54d26c0da05362d4834ef7d89d795f8f397aa0b46b06baf89cd886f6a2ef1b243dae45d5672998697bd2b3d14c8d5033425ea4406e23c5b54d2a0a993a3d1c77f8417265a2f4bebbcccae4de81e0596345ef22fe6c7b3c7d0fe7d47d8f9a0ba2a136076514b5b42344f276ab98c01f582b0a2f7318a01eec8bd1f3d77bb2cdcc77f5771d5acfdc4dad80e269b273e418bc1d1599ef827d21c5b5dbb5acce66ecebb322b2190bef9eb15fb7755cf7bb1cb09719255b0501810ae4eef09b22b6378d4d38a079ab41f1e4bf9008eaf3894208f58dc78aa0584d6589ba482e078cadd6d246d79900fc2b386bff3630bfb63856fd06289efea2fc4c8692fb34fbc3ca32246ba70a91e715c1d3428d3653d2a9b2f2995d402146ec1e6c2649f60d5b3b686899586351b59d2051197ea09857202a8b92edbf4189cdecb67cf44f89039b4b1b700f5564c2a0c600a5d44ed3520a28299c6c31a28424ad0f1b4e78a1d644dab08786a0b0d656f618aa36b181156f87ae4661d348a6d657261c00c7cc7fa11d786578a2ef4bd4ae3a9cc777f7fbe098a7d669f39aa0c2e0635989b77121d4f2ea4e7aeabce028d315c4eaead2f9c242bba866c13a6e013fc5f54f3d563e24e1981e1e23c54c337797231d6dec1533d450b0662f2ce642e05e000377f906c7584750b638fd5ec772d77bde2274061a783a98cb8fdd3157c8e0072047fe156dd0c2a468534c7f82e4c3960e1b2bae39da7f296180c7b093f19dac765bd6eb22a784d4099249cef021bf5170693534749e4e863df1f842c58a654d7d293bdd079ed78cd0e96791a6dc5fe2103759ad6305813d2e0e8ee890145207b8ad4da7bd5c76aee4a31e0986f84e0f0a953d1e3faddfec3e9d5b0d66874ad343dd2207fbc7295534905ea5866268c75cf3ec516f031f00257d4908152490023e5d81217368cfeb00f197c85d417abd820238624c5a45d906bbf1b84772de1f394e6827068ce4453897390419751888e083c7eade8002d7ee12190e1effd7a7fbda706b682f4605576189fd29ebd081cb2b3a66a1a0f11e3e2b8300996b4fae06e3e811c9a617ca925683f3ee27884c7293c980bf3d50703b71c8621f85e2f83f607d453bed86c2b0ce10ea722ef033c11ac603dd65c481c6c1fe289833a061425c4444d035408f4e36484aeaeeeb5b6cce725c8b7c24c6870b591c86c44bc1e477549944760d4989d77f7da5ce742dcdb45a36ab3d9f0b7fac1932d1544fb05431363b61accd1d60e1cbc2f64fd2dd9618f11353001b3ce913eb79122fbd996448ed6a47f58eb212941954dc4b2ba44a3f2b6141edfc34835a3fa81d0c4424628c8a0dbccc74b080bc04b8049c70f98fd0cb5135329cfcbbbfa810e015bad3d9fc42b1d301c3fab1ff41518e9a97e207c811d0e4800f7709d3f48ede125ff1c387b4fafe9553fbce5cdf2f8de365e5d8d4cfe7a739833f878a9b47647d885b4422b4c12ffb8d55e5d05c8d9c982df4f3e651de63b0cb4e4f7f2024c76c8563fa40aa21d11970f245a1c1c99c3393e17bc3e70839adb1696472c5a72cbbdf9c3baea8778ff7c8aa192b99b98f83f0dc887ffbe28305f82128b1fc90a25d6843a8b66268f84e3f535a13651d4c2c18fe7daa8014a79f8bbe961d7cbcbc59f79edf05d87de6a30d6fb9ed8eaae322ed75d2f5ae3502239b73bf22fc93408c2d0fa8f1d4e63a235a162d8c031636959cbaa7b4a8a220d93edf43cd486006996a128f388a313ab63419fd61b3d111f0c8c3266ed3cf3d1dc6505346d2368a242d7ba7de5df65bd138151b952325e47c5169367a115b7608df03a2daa7365d9e5f30a200cafb8467487b4db66566853ed6133d9269c4d44f138b90d00040867d2969873d95a5c5740801c079ddd3972c21f49feb64643fb9b54bf930088c21ccc75a987f56360df1df689200fb4634c8e74e2a9534620b1d6c98ec961aed268cd4b2b6c974e71ec0beeeb4cd9747809a641e5015b45ecaf0967950048fd7b8747762bbb29ca5ed4e20f2861a3461c0414a54f4ac4f09fa2051648c1da2e0b793505cb9615378234539e06d35b3e5b630b48b842a19b1f8f9e03647036d1cfa16151a8dceca5ea3b409c1970a1a831cf8c09c9d62054812becabff2734705e45f3bd2df2550169995b8bd52dcdc9d7fd2e4ab2c08deb6ee16d729af89164f98d4c213cb797b8aebf7dd2d5b5ea4f55163760ab0d1a426598e0a347ccc4a8bd0711fee1ba181d93be0820e7252c214fe2bfb57d653b218b49273f0d32563bffd83db7793b4129910dfda1fff4d35ca933f1f5ebbe3d46189b262e05eb80d1a347f8e53cb1917936237a6e09221b1bd1da243ba3f825fbbde45dd750f44c82443c3e6ee27b7a0811fa1eb72c3acdd10a201b3218fae8401b7524c39c4eefb40b09bb42561bfe040b3d7c1d8959199a015d5be846dd587cd660a309e406d4c04e4ae3338c5142afc3de7f4286d09fda74d927940b71d17639bbb52dd2f887d6620230a2a561d03460427380eb9a179fce3df503d0a3e8263acb1c663b7ef45965c49d277ec7e2fdd9bf4f29afd05eba4f0742bd71cb93a2086b5d4c0e3af6d11c369662851a8dea838a7e5766f9840a37015306ad2b55709116a99fdcfe5f69650192058615aa395592bea6f1f16dc46e76a08c513edeeb0e8fa4470c936f62f335224e7f6004a31d59db4553f71f3317e095e27837a473003d11eb886da085481db87fdad5d36f0afffc6341c0b423d804bfb6197e13d015f8b55763eab376750c757fbb9b90d244b008f5134608ff9d2f766e5e1d234a5c4d6c4e6fad212fc2283e588b87d68c2e3ea3900a1c5d7e42b7d7d6a7973ee62c7448a0c5921172b53d072b22e5d9a6cbf0b61fac9c5f87aca5b2b0d4d675776e1f8c7acd212eb967ac8459d48d46f85b19a047acdd37741d7856fa2e5c5eed0c45c7158bbdd90ecc7085727b33d572d575fbc6e25d085fd4071c1724c4a5d600aeb58afe6adf0e3dbbb85fbd0487747b646ca214aa1661c8f55673b114cf8428a04c94726e5f384279b81cce5f12acce9d9d32104f4e4ea97fced0b001ad7a53aa8b3325bc4c500ec7d8a616eb95612ac084bbcdba89a75d38fb00133720af7fe377e48ff774fe0806000df290894de8afd4c1b8fd632d34676e5825db78c20807a3c4d4440bfc4974c6a8254a528ac565a36ea2a62305fea401420f80e278fe728b2fb65267976ce303e8cc46232c8485f90a7504c762c647c0e5c07647b8cc5a18d7cdc98badd99ceed841bee8c2151584496e8d2ffe32c19ab31507c5176fa1dd3014b5c52eb0439d74bead4e2bd8282d58b93f75c916490b4dcebbbf4c5d07b7ac929017987f0b44768929a409759de39c32dbaeea9ba1dd3c7ee604ae26616133f80e3a3778e9b340f342b13c9942c636361c0bd9d6f3105ab3e68416ffc5b0eac2ac393be7bf48a4048178717f813fca12dd758053069d5373e2adf9d2407d6a4e087c7b746ba80b308698ead6004386a15e436cc897d597111bf25d439d1f012fe416fba6ff969973f78b65fbfcc69c6bf56df07218ccb98c2845da1282af0492e7bf287e45731ec104c5280e32278eb3fe7c04a50b8da5a37cf35287c2da3b4ea56a74e69cef9ea71cc6dd9c0d0190a52989f2673ce7e65fe42b90d7dda0ae031a7633d1f273a6e374b4b91f2b030f5be289e640c2286cf980cc744c8261eba173e125a646e2587c5294a613b6d8d3eb9c2e90ef1133b830556de61d0fddf91502ff5f3682a3cf8db82d0974c4dd76bcf12a0f2a3908ab5e2ff9d838556a47a3c5bec7cb2ef20b667069b1c4d6be32a1eccc35bd8b17619d4c8c234d787a7268342ad877d95f7e94913d9ec56237f559b557c7cd55b87f5bf81acfd020a3bcf1e7b0a3cf68028169653830f252458dd8854b24a2709f1d8f346495507e0c388c03ad019ee5a4c4143d9e2590345e2f2a3bc6ae040ac078087e58113bf1182bb8cab10e0fa1d42a5f811513e35b18a1c043d0e544de966b49d506e6d0c6bc75fba8cd6d4bcca73bc462bbe1edefb882ab5d60d70fcebce9d33f3d2c502aa7a30ed658e90e64b849b9203377a5c89309c28357f16d828076f3a37dfddf6807cc4032935c99c73c0d34f53e5eb8f0d99f1593d71e2955d3dfafa4aacb191e2c1d2e2d6a8d9907bc65f40bb63c7d84f7e057ef20426b1acc0928af3d0ab70d9979905bdbdf68f2e497d35aa5e1276205ca1387e358d2269c00a3f303b01e9e552c0d6a04b364f93de4db985e5c7e05eb35be42746ff9578e55571d71cb9d01dd49eff19e8a134e5b877da4ed2b0a8812522cd23b68af2c18b34dd8a6a43e5e77087f031dd2ef2785bd97e3ff9ff28b00d0160905eb62fc5bcfdbfe99b0146833e82707addb32b5e1231320afa8b321a28f61970aa0a2d382b2703059ac97075748952fbdf6b91b31880964d20527e74bd8a181a3d92737439d269eca12a4c2c283efd58b4da01f4f3f84e4d95dfee384ff6a20079cc35031240a7f6203f3c0c17eec3cfbbe8aba3d885a006b884984c606b03c96b6198cab2fefb07acd83dd320f975b119868588843a72ba35de2234ff778d1f44d40ff229f0f6649f8fd0a83f56023797946aec0134194447c3a1944fd60ec8d081082da9b036c07d72d8acf238f607334ff8fb2ed27291ebf042366af0c61f5504fd2e8837067da8c85e13e0b57ec5b229b6be828d09d5ea411e830825867e3141010da52f5c8742c5c8502d231fb8bf9d0fe4ad39522654b7320e8cfb864e60676a386dfb931ffb07010552cb3c6a150d894982d8755f2463bf4c386cbbc00276b75b18d9144819b687a5080033a55dc172cd4ae6fb0541b3f62c1ce5c4eaec243a4535166225718f6f96a88b59e047abc8246a0c6a86856b1d5084eab8bc3297da32272b7456a4f21f06745d2b402f472a18c8ac05d566cf60c83644af2cbb655339d6d744057d237561bbaad2e2810d2cf2880474ed1af9d126584e72bcdcc3fd1fa73ea7774c038bfa4efd44f8662534c2a381736424fc00745c3d84c281e33a9b1c16fecd03fe1fad5d2133ebad4a9f5e370174e663d8b455c411079f1bb81f6a00a863e8106b3f05136907d4ca2dde92c492301d4e4ca299b48b13c0309706f832163f8bbb519294b0a4cd13edc6368977d0085dbaf99212519c48d09b7b5681c120daed7d9a0ffa196c1db83ced8ef2eb1024d8f4633eacb3687472080e50bb5377a831d64b035ba128342783d98b426f3334697769f31b6fefbffe1fe339ec74e9b28b5f805f55bdb107e7c39c42996531d346735f0d21392531c06e13a52c7861c7d3e24cd7525400ee17edeb098814f68e3373fe2910d6ffb9f3b8db57e48a09d834916af55f712ba621bde5ac77a7356764114fa2fb1b7b9c696c46d0ddca4195ff2ee6adafc691a276520eac5e04e42304e795f96c61b16752a1cbcd83ef70d0d0d110dc8fcf261e4e51a01710e68a569bda1751c630227db40dd246e62af7d2a75c7ba28ed7619653a6a444725d2b68394002937a25716f6924c06fc7adf38992a0f286a16214d43665f0337cc80e00465ba31d28576203ecc03d084ae00be75001c2aa533f7ed0a18d7676bdc692b00c25957a9e4157d64922ce22d0c6ed4249c1f9b09e729120445bbfd5f9c39b40cc26425d68b489b82b330406a4e52af37794cb6c639fb4f539c3d0b13e689eaf0faa6d7869135394b36a243c60431d2294241ab6a5188b98c6e7b256a63041d59ff2217b9da9b788c4c5cae0eebaa3aa80fe1728daad4f1ff299a8590a2b553066284f6ead55c25b707b661a4e6d2e4647b365217b2bcc8c14ef57e4c9a62ab2e20ca7b34d99b0ff1f30a212d72558926d50a2833d19c05941166895d605f7e5637dfd40bbd7913d37f7bb36995042e06e42f54e72ad1a72f8c58e7c6a82728b090827d3aad8839bcf3d1ee8f7446fe6520a2d073a365eb6eb15dd19aa83a3ac619fcfe5a14faa5c8412301b266b14cbd3851bdb8a8879f4c304579b3abc88b747ed1c46b7628616e9fb1b6c83cdc595df69fc30234bad61c7c75f8acbedb6c30f47ce3b30111e4499daa6b5df3029b9e099bec5ea58c34aabad77b40b040d43548bb879c059f5e1cd6f50171b9bd8624e0c67c9a6f554c2aae0da6e238f91b409a71bad36c5373e0298f54496ff9a8fb7f72af3c2c30b2e8d1033e647084a1da920985ead2135f6242aa47e5f672ea027889376106fc96e223cc74c341a46010191cf67840cf33a436b6ed8221bbec4b37786792246e9dd6798b71fcdd1a3a14e0783b23defa05cb80a22b23591a87e7c6afb1ec7ece9dc6f20dc5ae0374465d66d7399456fa4e507f8737e619741b96569fea2191f7434e62cf91f97f9a698d592620b004d179a1b849f4210dd9e7d02fb0b8e76ab6f427d8e23459a569a3dd266412d01c9239db9e699e278f398b85ec96234b89355dbd90e91482746c85da166aa98fe889f9558662c7a31dfd230717c31a3a1269e3b0f6b661724df6a30ad2b755028726e51b82af6ba47a64fbda2a6199d4373732015c369b53a34365c84eccb3ee16fb9a55c878a017e95f6a7fcce58ba59fff223d4deca300d9f1ba18aa395a003c121ddc32de32ae3e72c2266aecdc1c89b601db41170628401dd793d7085bf6f6577787e9c1c06c293174e0c6b94aa72f42c1c1c7d129234717f986c901db827a11949479d5d3ff137641d40fc48627673c6c15f22cfbad05575af15fec8d645a9b06f8e23cf806a88d60c94630e854475bdbdc747f4fbd338e517eb5f28a2e2b8c4c94a7959dcb579196b40c51e039306b19de79a570b5e0af53983f73832af4579e84dfd326aa60a9e381c43633adcd63e56a2287b2b7dc00498d6ea15a037063003d02bc5fce3415994dbf2240342a02388c348e6ea8b1e762795d39a19deafc44babda0f0bd2050b47a11b230aad544a18c45ad2c9cca305123e5e6bf95178f73c90b4d02ac8cbc3580ba601454426b48f970801efba182e63f77101a0a07d017cb342a386dd79ee34f37ff86beeaba05f81ae5ab83b766df21b3a76b0a911da97745cec83f736c6bfed53377b9970cda933455dc9c9ea3069fbc5c31b4e4796de8354a6f832fd9ffcbe4f32aacb632db2433dff983d7caac91ac771bf91df82f2bca524bd1b37aeefe06f833e2353ef67a07789be318052e2a8668c89907a49e7eec1018665030e82486fe8c9860bdc9973435cc7e838f62ce2cd82b914c476681b3b65e3d5fb91dc450d660ae6e30f82009a36d44cd530a91a9f322781daa1ddaa1bfd0671f79d4e060f356eb17f48758d004a5cb8c58a50968d9a3d03b03c2df2668a764f5a975eeaad252facd51dbb369c45390d5642eb434798c0fa322eae48ccb0ab99dbad8a9148419fe024e990bcddff3462f42049de30b72f26a35e6ea028ad347b010b1cc3a0c4254bb109cfda22fbe1c96856aadf8f9da518af6e3ecf7a8a4166769de161120693248ab7696a6a6d8fb8cb5c7b7e3e2acfd61ad37fb08022b053b02b2788adab25aa31402b5e51bf7f3532b797f9e7aa87d839a2c9d14b5a3c8cb53fde7a81e6355ffb81a8edec52aae6aab8457acb296bf202079ee4d9aad622ea267623dd0b79a8930d60d3e7243bcbf779d0cd7b121376b42e09d871311e8a9d0c482025bddc491d41cefef99db9a6ee978fe8b94160d527818eb2e62ad347f119dc7e69a83cd6c5f50d08e5ea12c315dbc5097fd6330eb62f9d4cc7c816262f84f39fb2941a985b2ee3bb55315dc424acf9b413b5f1016df0586c09b064d47a6fe91264aa841cde5090edd085eb26765ddaa2c5602289111bee0a0088cd77a12ff4176a02a1a9712661378be2d66c37efd96a7c43489663304a30f4c0c4b4ef8a8df8146830e55b9517ae608a1292b04c47c98b6737ef30ffd87aa38b58be0b92ba230536e66c5a07a55c189c5ed0299503baf4938025f9a2aacdcaa2e024325386a4bc417f2aaf1c2fa105a216f91e10e6d5e5de1ba18a8488c656db9890a64411c365cd3ff4cf2bd024a18e70b77453c2c0eaa989411cc4ea0f82f822a7cde89a26b5752f1708ce518cdaaff1474654e3658cdf2b5ed6453c525fe69d3f443bc50a7e0ee911680a42c6bf82dd0ea3c8a104e11f4d11dceac62049b63ff634ba098823f589bb800a7bc12bd56950558a620c6009f796d277aa029b505ca4205ba7a6b6cbe2130668dc6d7347a1ca30d71f20c4ba9a205c397c5ac456fea379ace0b9043fc165effb0c460d7d7ad56a7a11ae201e5899723c9df6782bf08876838748f6f4278288c8d167f9319c05b386ec929073254b0eaab0f4f5694a179d2422885b77899761463ccc78c29de448334ffdc4e666e0c0ddbb19990d3be6c1edf2ce000b70c1ec0d663da465980b63ee6bc30da28ee381ca9248dc495a03155c7aa2a464bd00cdf4c16ae593801b4222f94435bf0b5ea356e795c00adc8bb424f5825c99628dfacdd3c00370c4760815f32ad2b74d94b95bcfbd67446c84a204ee6b736914aef7e943e7402cbdd3f68ac93b43e8c0ec6aa41aac62b0621996b86ffdeebfad8c67a2627952669303a1ee8145dce9c0cb166bf65ad01511c2b3d1351830c5846d31773c49e10b2bd0e0e2444d02734b2181628127b94d722b7c785c8c325b73d0dfb29315b1869eea86f56ba3712ad979a17764a8438d04ff5951a094f90de691c017e4ea9f91bbbaed10f76ae022b68c1aa2784750ac7e8ba9ae1432f935d27bd20ba4fb7ac224dc5729ad8ae0761315613f669fc4b44047e37a6c3f6e9758d322e1880d0e78b93b646ab08298710c4e7376603336ea70ad677a7af4bac776d053c09c257b44a192c06bd49f12ea53f7d0c687516a3d58de4e760e8ea9174879213e7e0afabba849de435be3d8f479cf99a9567b1023295365fc70bc0d10ca47aa2d62cd5e4e0d3e3903f0f1c6d4fcb8d56ef1ccd8b1578e074a305326c0ae052826f62eb68db3215d2d65b264f66807e245242d8389d879b14a8fa41089ff293e7fd17ffef61111e4eab26b97e1f8a27f996817c7eb18b368b8336d85f50b765046e5ecc1a15df9cd35f015160e20390ba9909d64bee233d02641d544b8c7a48120c0c68e270558afd42c578b2625062b142e053feaa3402ef99e99b583a96a0d88b8fac6b31f4117bdce833883d6a6c428ce00bb57468a3032453c2b2b2f9e41e8eb0f9554a301a7d3eddcd8d225c5dc1d6d81d1fb114d5ccf2da85cd1c3c46be3e110b8336e712f40ddca4fae146637ccac0b5bea6076a93850f79294b1007a22ef10937df1d90e17c5b75a44038c9bdccc1fc5023ec9e07e0b27051b0de8ab06e4ecd8aed5326104c425f0d4c7f89f5182b948c09589df60c8601db9413a033092003ea75ac36b688d5c7568fd50e1474cf28c150ffdad505bce29f00da64df203dd7d89a17b298a2752f7c0ca7d3cbbc59953037e0aec4f2b1a9d826761ddbc5a2b186da3e3ecb568561b7d99e58965d95389f81c00eb85378014643fcfa8b7371e3e984a3679e0daedea4278dee2f21d0ea2550fa00814d904cb1dc0e3076808311f22c7f79553af10b0eaa9a42bf4e1d7a14d59201251e0d2aed0c69ef979426e5ea68043cdcd260dcc26fc03de496b014609b40d2850034159000d53ec61fa51e6356d1817f283ae2bbe76a0c88a2550bcdc216086964ebedee85c84c89e3dc5ff43e070a4c725d1187e9e1c128fc3b03ba9b76825b30d859a5035a53f52553b96f950cd3dc6d96a95928cc10c083a1d4eb5341846622b74617515dc45002fbe9d8fdd2137ff240c100fe80afea2903ddda5d88336b2976cfee2300c07ab9a4ae8769b899d84dc8de7b6f29a5942949198b08d60706083d289d744a97b400fbf8f1cae107a554524981cc39e79c735e0864be8e68467bc80008b642669d42252755a840010cae24010aed8313294fa7ed51af0f258ca40180ec9084fd67574ebc7a28f8c04bc749e5c0e8c412223cf7d0892552ac98f2090c74df277ec0a40a52e8380523953353bde2a9f78338a07407142856f0bc3c3c359e78c1670fa13ca104159291822274e0042ab060a2080904e182953f482999d0011340f0cfa61cc73baf12d854d0c44b9c1414269c3cf710ca932946acc088c136080a65052aa8d34281020694524abda35c830bb2fdcf4e2a2027c40cb238220a13100911d14460b0e05085e85013020a4a98588942054b78c28664a9e0092835a0a2062e21f448f24145104ebcbded01c4880a283aad2787ab861c2e55865c5668998f1faf1c7e20d13c60031cc48009187c0005366c96b733c0c100475403371c79421121b054200950d8b09cc5db191035a1f21584135685163dc14a9b51202e6d1ab958203b2409a10690581506d2ab9e7b82195b438eedd51d5198a2b7992ba35492d8b631783200e50926a8e4c0062d3892840d8bc55ba415c458251cd12a1034c415231640410996111796a42794c828950cbcf4a434882021747045164d8062c91459ae68e26dd38c6634731f728aa459e6a23201e9e3c72b871f9ab5d6427932450a5c5b2b64ed14980cc900092ca83284650a446f2595544a6b7db0d6b6e0ad5112586fa51162d8c78f570e3f2495544a6badb5d65a6993585a6badbdc15b98b799dbead64a29655b6badb536bb3d2495544ae9937de8a0d6ac562f7a354242135fbf7aad758808329882068a3002445211362a4be1eb510bbe3a210426be6a36b399c5a803e915767b54206a7dbd5e2081a40ac08015858d7ae56b855203d7d76a2b03f12177e054b4af24581f4269c2078f81ffe08b6314a14508690e362706ab9db5f2b473ce495da316bb9fb4b74e3ae71112341843275f50105621643e772fa808af9d42171d3a9277bc0323460d3bcc0b6487a41c4238c53d9ce2e9d43f2927952ca5dc81534238c54280ec40bbbf09218410421b685b4d0d9d2fa81ad7b209539a6b1efd6b7887237349421d6d42e0539a4bee46c6c35b79a5acd4db967091a7883dbcc33d35e0f00ad5aae930a7f4d5c0681efa0ca4614f90c606034b71a7faa6551a2f14d52b9e564d1eee7e287a0dc0292cbae936d288ac786391db451a5168bb2f91463c1204d499ce2ca6a1d36391275efee3991e8526f73d5df368a000606a3ac6533d18533108388306a87324d2a801a5a0f8ced973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cf39678d5963adb44bea4a6333e0e5fbe301de6f079e9f3c3f84f0aa3454430d2458254e1df5e3d0163b2820676dd7d170ece70a73da9f92b51d0e66bad44b3ebd52a98495364eb10cfad9b3eb90098fa62b494a29bd5a29256dd9b2562a25ad7c7b60f020c1173be370255ff73e9983537d03a73ac6d8835dab5e0f4e718c396ee8c197a78bd3c78f1cdd4b1faf114079ebda6ee0a9910056350e57741f8cae4ea1b39f64054d746800c929191dd688de32c69e555822b82507b40d7c9e62f69640d8e6247252d65a5badf03f691c4e75333333c79882618096d6c21e06e09d86d103a31b1eb5439c9e2f983162fb17638c4e7b20953576eec2de3a39074e7192901d76ee8feb8353118a2e6e00c60be19df8eae1c3ef07915247dd4727810671be52939fae31db80cede677b85f9d748fdb23f3b0b552a1e5e3ad00e2fa7f70fe04e1301a6a64f29a64cef7a85552555c94f8f49d8e3af87679f314ba23200cc0676332aad9ace34e8a67f19959fae7584f34e68e1aa4b7ae11de832a2c94f875b07bf1a289c39a57c2f3d5178e835b6a5d713657b7c18a589239620e58a1331431461812baebc80081c40410808524acc4ee98a0106142317f4c0e81cae21280122ca0e726084136cf01368067c98796864e589af0f8d9e50041e41085a810a7ca0092c8cb0011056384208218410420821841042b9c5383746a2c37ce862844840246016618442df0bba1861438804440222d1c578bb18a56c182144628b3136124840ac0718134d8927303a1ea744b82596c0c518d6770f8d8a902481a092021368454eb0a083810911218269640529601847982f1d25a9bcf49493285e7a0e0ceda19113231be048dee12491e3d5e9b8478331f0748a7554629ca1ba224caaf5acd36b33af175acf3c9b6ebdc9eccd54f6b5b202ed36e86522dde17439a59437b2752ce80b8e348101240f9bb80096cf79d8c40570f09a89a783d0618ac60ef185086598019b3095e027e38b01461869f0105f88fed1c08a2f441890462cd203ae70f0208d8805ce401bb853bbe53bfbee6f8f89346294533441bbd18848f185d836d4e8e15484b91f1fb5600849bb4291c656a93d1d19dac01047865490524a29a594524a29a594524a29a594524a299ba84ed17dfe96680afc50db67ed8daf1b91ec73b743a4d1ee1f3f0f91468c125f60c51869c4be557cf418630ba04ef46bc547c712a380294e4df1d15b9610ad24211ae15b0067c4a24823ce2847f8e87de4e28a8f5eb7c8e170e1e2660a37373652b0b1a9b952534313051a9a165068d162e6093333282b28948c153232314e888981a90206e625e9e5c5a5092e2e27269c4e2d4b6869e9aa749d490926532909a5124705c76d54b64d4382a66553641976040cb352585b8d502b2d02a593083fbfe747875246016774f710e00ce6280438237ae56c409ac23712c5d611ba2e72d2f9e65fd721755bb7755dd7dd6ff37e214d41429aafad6374c5a2a329f1284a14def91a0082970e4f45787969aac397a25739fa6a8efdb6b993299c6746e8d8e58d459c9227ffa43c7938704a9e3c9e7cba6291134ec538fd34635174125ddc484845af29510a49a4ebbce576473e410cb163cede2307e6304abf8177e475c096a3077bf2a184f01bc7c60227b429ac8acec33b356244aa45e89022d20f88404515481129d24a2ba5ab57d64a2bad94af5e592badb4f2f5b3be5eac17ebc56af5aaba5c2d57cbd5fae9d3d5ab6a6dd74d9faf5e5556aba65bdb75af9f4ea75bfba2ac17eba7d356afa88b51a8ae6bbdb3cbd9c52b6f2752cca767198bc68c9bb164f0dc8ca5a96ec6e24caa155c2eded19ef02ae3f8571efc1d8f1f7bbd5eaf19388fc1bde0366c0733612a578bca5d3ca098e55538a69209be8bc73f83073f86c78fb55a2dac0503e3329e0a2d1dc68a81b15c30960a63d1e45c97138d073fc7e387e1b734566573ac0c331ecc8b5b1aabb239ae6697896919f8adb53606185ccca066bc87adb5d6c6c50d4d0b9a77e1f1c7e0c187e1f57abd60bc606353e336dec335a776e5eaa950e3e2c6e387e1c17fc1e3afad56abb6008043e3b97bdec3959553595d595c592cbc68a1c255c17b98057e0078f0713c7efa7abd5e3a2dccbca0ae5e65ad564d57ddcfdaee7e28d74fd7521e500fac77e1662d47a13ad8fae928ce8628824efa97b17efa64c1a7674578b5824f67226b59f01e4e79f05df0f875f83516b61c8fdd054fb6e0c52b299477f385b7ab3cad054ee56875495670163c88fce99a6a93bcc31e9cd1ce902143d654cd5854cd92e4d4f494079f8515361c4f05ef7a90559e37ddbd79e34db7a199aa19d82a99e9311ee4f9e25df979f220ab5a8efc2c4524d3b5263fa7634e7ebaf5a6d14fa7de742d678b1cb717a14e08ba76ce503dc4a0761185b0586feb5d352baa8034b83db2fa877a6529c3cf466b44f771123b81230d764a5ff0d46dab6bc7fceb21202098dbcae9b0cd56c095bde269fbf0d446e8e9cbc8448d237e9454a64b5241621074d33bd22449939e7a8b8f123dad4184748fb9a534bbf2d9fd64842fb04ec5aacd34ad62b666506a307a6c05d67035f9ea9c44eb2bd1ccd7f23152ee4692cdd9b34454013909ce68224f692775125b49e21475fb812ebb4984dcc6e6d5e3955e45ec7ed65ea1be796d85553472f1f274303a09d2968d53997f9ca451e724b6629db2149eba96d9ea6c75d42bfd5a4e514a6165959ca0411c8e359a42ead071a8c129ea3cb688eeb3aca7310a45562c52ab177700c23becd485e8d8b9c107d288115fa04e3d079c519d422a1d0ad52aeaa8578c1f7cf42b309228151a848ffeed3c9d82838d43920888a521968fb1b1082189d09b64f44027e5b58df31de83ef950a7a543e97d2da76010124d33c9e8e2c629e83836c60d1ee82da3eba48cd1061ac7e07508623dcfa6924a4a29f5cffe4c67af1e8d0dd3d983feeb813a90c6878667a7e1e5f438e3842fbdaf07222f5dde90cd40f1a7f7d91f76c897c68786874ec367f94be3d30d2143c891614f2a45a60cf1a987507a20c5c3162dca47133831ed8071fe8c4ebd6f7e900e99c33b707b18f4c33e79f0bd40f1db87c4efcb3767c6d03979eb7609928f4e8f7ce6d44b10e5673c8452820b7c755aa377c6ddc83c73bad11297f946a9b665fc335d48fcaa7d9aa66d9b67db8538af799fc931d74c5ef34250256fe3148cf2d63b2ee2c85cbbd0835007ea68ae51aff3cdb39c822d4e3de89987f35974cc4fd65bbc6f9aee17f443e443a8835920209a7fd433afdc8e2c723ba26bd4bf0d4a13a2bf7908e504575ee39865f78b4eafcf8ba750929082e3ac43e842228d39399cb2de4fbc5ad07fd137a7dc8dedc6cd23e414844238eedbacb44057825ee2360fe773a00e9029bb7007f56abd1fead51b72754637c51213e9fdd32e39b8c119d3a1733bbd5ffc1ded9c4fbb1c1283668c2b88443ae8ed91fa07e78540a6b78e810e3a743d8d4f377521f1a5c71b23d489fd4a40214d28f22e3c940113909abb417fae0fbd128790f876087f2c40f7756fc374a0ce2224ca9f9c0f3bb3bcf01aa103dd97732313e2d40d2c5fab3c06c50453be2200e6d041a3294b3cfb8b6b10011d349a72c4fbd709654995a74ba63cf5269040a2711b86b5400caaa4f3c0836c79e194f58884775a7046ec5cc6a43762c7c6f97458f52e12f10ee743bdbad65ef5be99c3a9969810516cc5fb45252fa98c47c4cd4b348208b14ffd7bf128c4a9214e4704220ee6d5ad2724bef5199378785f2f3b49eaceb5b879474ea23951afb44b44148d88a2517f34823ad2ad063a99ea2efeb978da512a9dbaccf428837249a4c978f1086e07cea3648c514dea93c36e71d89d4317d77aa39d05eb31587b78f393f7d9ee43b9789f8b9f1ff65fa4d245a4fba250c743f285bd97db7926d7341839329153273b28858e409d38d4e23d6c89ba2f0abd8cef721a72b93cdde97efd43e2d74be3d359b2fc541712a9f7f3c56efab4dcd975d3042d073a0dda0d745603435dfb178d5e7a34d25c7e11498a1da2dd66a063e9fca442c83b703e2249a2790f5b0c305107e00c20d343a853ef179f89e08cf8d23124bcf33113451af025b79e9dd621d18b4a8e78f94523709ede241c125e71575697b1483aefc48f42f1c86b301bb37f33716e9cdafeb37293f67ef0c9cb7a2dd49112cbf3fd1800b1a4a205fae25321fcd4eb053aec07e8a7c647a7d045ebaca932046157819d345badb25612b50a7a07516985b089d0fab2cd533675d73f85734ed910da20bae85db79164711fe9e2843e612dfae9f0424e4979822ece382784944b4268f68896f9f8f1cae1474572032064c94011581459c0025d2448055752c001258250c41092aeb8e28a0f689648071d564d02914107b8b69d734e6666664a293333333333333333333333333333333307aa06e89c73ce39e94c9a3303f3c290c105b8d2183c3084e89e1cae1a724c4a29a574ce397d504a29a5015a1166d9e0e6bac909b80d26d6358b55eeeee8fd58c79c25f0d6eb2c59de87afd666097acbf1607fc9e110c0db0b24001cd0f518eb31d7631728badebaadd0861637e9b58d76f14ee4a1d9558991f9829a3c3bfc52c98130ff7878cef91fce531a7b253f6ddbb69d32c7ae730a26e9a05b078acf797748ff8f127721ccf958e3fcc605c29cf3d2c7ae794fb3a94f9e8bdbd0c267bcb91bd5ab8dd3f88ddbb84673f29b04fc89e606c66bbc181b4fc66bbc17a7f1be1e7f72c8b538fd00617e72f825ef190feaa03c1d382f739d539d8279f1ed43fa7f9cdcc5033ab9f3768130ffe433e79b3327243e6bce017d0fb8028b2c7f721d82fe747568b90cb0452440e4bb3b64e63337790f9b2e84a94ff3d2e6691728bb497e906e643ae60f210c38b4aaa30d8944afbc1d875ecde993cafb03ca8611e9f4fe606d183162a46b1e321018c14407341003285a367a80484ab03022450a1e64c1c406346204b6ca47afe6ed5a055d5e54aba07fa85b2aa2eb206e6d094c72dd5d35b62e6be69807bde27c06efe7584f3be6b17bf5ea4da7f035b9714fd6d32914a6e84af30fba4ca99ace302b5f831162792aa47bce0cd67899a65bcc6b86596f935580c9ab3379fd8b5b26492d6aa405128da48cdb1613267d92f549964be945a6490c23233ea25ce36b25a68baaf7ebac65666666666666e6199aae5738e0d0abd8c4485ea3695432dabceab1d79e7d92159b7c9205d3244669b65aad9cff5a09ce7fada46605e42506cf7fad44464a169022aca29ed17a8d6ac5584e62ee275da8fb5998cb9997acc9511c0f936715c3300cc3300cc3300cc3b01b18e4786c5e63359b3a82eee3bc5ef684ba5ec5262e72c6a9c726d4672e1fcdb8dc0b5b255d3e94743dad6cf2cc1be2a963d128ca1f21792aa774529638924bf8e8b220120e48fd94efed125077eb11d26825f105ead60e91ecda491691454e2452cba39646d2255df04916d88e25ab9afcc3bce45f2fc1eec752123bab24869999999999999967381e26e73bc4db6411c6d936b63ac4b72eb6c595c233501ae883247272dab96c755bcb299ccd2e69254cb85b492bd990e29528594d9a3c96ce4a95a75f4b41bd8500a911aba8d32898bfa7a4a478141435ea259e7a34b24631cebec226a36353c964ed0a5b7b26cfbc92639e8b57af1f932c9acd169c8fad5e9b4ab5629e8b5b1793bb58dbc2c6a6928b43e8cc658e658d61188645cc318b619086e381d960315357e4a9b3c0edc0f916c93bcc5258d84cdec95b5c5028cec7deec4ad5b679d5ad076d4c178b75e699297320d3675ee3bba412db615f2bf9309fad64de19ce07bb5f86e2785837dd8f1d93a554b7e9888efd07b39088ee93ac22bc231fcaa2a7d2c953e9924fde762ef743a14cf7e84bf1114e0e060c2d8114b1b49e3095234da4f4158904cee0af1ec3dda83016e323dea1d64dfe592f7910f92f9c4fd6c296a25eaaa74e4a9574936739d54a4a57898b664fddc94a16ab80e2bb385512a395438423859ed630f9c75ef24f1679ea362e6ef2e6ac144ef9e6d63be214755b442759ad84ba2402fd932cc9e2b7ccd0ed6739d53091f389711b3867379538e76214a323de71b9f14ab799a0ebab11234bf2e45b78d84412a26f0e878bb7b8d69ca914e3ec7c7f603ce6feb878cb1512e31130de8b275b5109efb85c2027cedb6052c9fba0144c570890c88a43918827a7034752af1c9f7cfaf46e945a5de7d67b9871c4f8e696c3b1b98c6b321e391c3440f1331f22ab979cc63a90e9ed7594731c0f93d73b84ddc5378ec78bdb3b841dc67b1ae5d1e8d87e60ae7db9f2feb8dc788553263f792d9d07395539224f23164ed1183c5f8d678f57285316aa19c22162ff58b5d92250b24a1e018a8f79aa95a052a91ff620927ac6f960afc196ed74f694052072f433c7bf1a7c64bd4b3d74c1bf8dbef0c027af564d78a555296e3969b558a66d5cc9d4b59c5c5e60626450332d686a6c6e5cc8e876e0bce65b2ac90a2d78d375bc9c4bb4c4494794b5b296dc5af028f5ea2eb886c3dd70c185179b8e97d3a2544497e33aceaea972723c47c77bb887539eecee9ee132bcbbbb39d7bcbbbb797ce5dddddde226ef6ed71118efeeee203332dedd1d646706efeeee20ecdd3d83c490c1bbbb83d8b877777777b7c7257827480cde413cefeeeeee0e02c383e078777777076921e51d44e51d001a4d430d6c868c980a00777da52100356860dd303cc3832fe325e3c5bd5e3c9aafbc170d93817198aba5ddd42efc2d1e7c1e0ffe6ad5d22e2e0ee37232954cab969e9169e19f810ff3da99a1b33276c6b68b5f985e78fc0c7f8656ab154386927d61dbb2b5a1e1665033fc36f0657811030c5badd5e5b9d0f83d0fb65eb45aadccc58d0bd60b168b8583a9e0f1e378f0e52da42c7d419bb24be5425541004cd7999ee3414e692b6c2d78d45da89ef2fa658b57ec722971357115bdca2512de09b2e32b2cbce2d74b1691473e39c4ab82989c73953712af9ac5ea17aba9a882c4f0195ce5bd04afbae5a4d54f5a515e15c4c55b5ce53dc4ab76b99ac8d52d979257059171982abcead7cb0a962e4225c7698c782559ac231612ebf564c6657055abb5a4b544cbc9ab9c5b2a6716afa4cbc5422e1e72311116183c0657799cc22bf97a49f1aaf2b282e4c26d5ce5b1885793d5aae9d6a5f23804af66ab551349eb0895c7255e7018aef238a4827bae28e48a2c9503e1d54449d14d51f90dbc9a2f06e038005ce5395e380b8eea78540eb9a5ea54dff62a4ff18ab2705a701d57a95cf094ab3cc5dd505d9e4eba9e59339887f9c5ea15f67ab15eacd7c45cae96abe56ab97a85b55aae96abe57a0c6bacb196ac5e592badb452b67a656dd65a5b6badb5d66aabb4b55a6badadb5d65aab95b6566badadb5d65a6badb5d65aadb536abb5d65aadb5b6d65a6badb5d65a6bb5d65a6b6badb5d65a6dcd329a81979e3d395c35e4a0b406918028a6ac80045388400344366a57e06badb55a6b33e9e3c72b871fb5d656125a4eb030c11113f0808dda3f7cad5c5ba10318210b206430031f9a0c61a3b6d0d75aadb5d6d65a6badb5da4aa53d9a82631f3f5e39fca8b64a5b6bad75075f5dbe566badb519a556721dea71822509081ea8420448680a08a1f1c0080b7c1802a20657f404243300b0c4a0034f7e20b2812b0b16186123ccb22728814da20425b049d813d825324d7a50bd1a4eb1531a67e4a9415fef47f90ba25ecdc14fafdb34e5d94d5378277abc353448293f1abef6a0e3e81507a697059ee335bda00edb26745fea33bdda659ac8244db349d825b27ea8a8f1746266d99c52cab6b6e79c73ce2ab1a694460f5a6b6badd18b1886b5b53d67d16432db4e6b27149149f4ea6559d6d6f69c4593c96c3b31dbd3bba722ef547472c2ab7a63679aa661d66215b3daa6cd2cb36d6dd7b633dbec924eca993df592602ea393b5b91bd60412c330193dec2d9dd1b36f65f4eadbad7a3736a2479f7a49da67bc42a9e84a469ce25e75ae56b11b19b110d489b1bab800ac3ce86a3e6fd1cca443e188f1a5578f3eda60bfd4775c8f3e6e95071dfb10a47c8f75025b19fb02318c3488f3c5b49e7967b3b18f1ac3e6d17f99d6dd95e8547472727255a2a6cd5e89e00ca45e59f9d24b92797ba5a356b1cf39a9076bad94d268ad955e5b568f49ec224c28b66158e4a8538f376e9c8aa00ebb974dc95eb60448bc631485775aface279dfd540467c0f982b2dbec6f2f49e6d613721bd99530e8be535196659ed10c6a59768342e8313a3bd1458718ec61092194d57bb872043815f55166b91bf36648465df6958e5efac8d28f5ef4b65ea26bae74f4dcd9cbe8bac9237df16792ea1977635e9eae93be091f247ebc2523a8c3dd772afa4e47bdaaceee62eea15b12744350874f4525a35e558fa5531166a3de9251abf889eecb90b26da31ec66dd4b33f4b1bf5eacff6b2e608e5a4d56299568a69c59b241ac4d1204d09bb43663e898d7fd3b312736972121f6cee0f366ee4c633efe19b9b9b7973bd553defc7c34fefd5cdcd0dcdcdcd0be6361706bb5fcf4fe768ee17d46448ff8fe9f0639cf37ef15ec178bb26d3fd24a9de79e56e50b7bc2ac2e447fae6a61881a67f413faf0e17bb9ffc169f5e8cf745c0f5310e391e276ff9620c52afc0228b2c8f39900e413fa43e76b5ba59eb71c667e6cc6c213393e55b9468687cba86f90d763f2037362ee39057ee9e5f87bc7af193435eb97093d796e92fb3f33a5537dd06f52e50f57e9da96bb9a539efd7e3b12ccb97bc257320ea1f0fdf7287cc7c75cc4bd3473e10751d7e5a7cc67f5a7cba36b37981a87f58c933ec0251c73c933d8d792d3e5b3c6bb940f526f9c1c68dbc783610861ab7b1f19714843a358e44f703ca869117b7f1f654af6c5e6c5e6cdc888bdfdc1b7f79b981f117948b1bb9711837a239e7465e9cf3761e18bd72f1f61b0f42558c8d07a14ae67e414d7afcf41aefe3e103f2f5fcbc330e3f633d843a2dee3773a76713553df3af7a56ab633e3d8c47f5c11c2b39e6c12ff1366574087ac8a9ce63bcce4b5e12cd61bc17cf85f350ad623f795f95df999860be790ca88f953c629e4dce07f3ec7ea58bdd249c4f8ec6e7e52f21c5d73c345ac2e8bff80ea81f34a72b499487dcbc343ab021f1ed6540fd21edea61720f1dd49683314283bd6ae849eb3deded5a15abb71ba9f70342af110855df0e3aba67d82b29dd485fd9b52aba9176ea46a4cf30c3c70384324018bea0ffa0b3bc10c2006de8601ea4b7cfc8a455cc3228ca39850663a0d3835067baf430a7994b3bb1f8313667038f9fe824285262f4b2e8ad3751f2d6bf206bbb0e8572182f659cdc8d49a3373d1df1e364c9ed883cdd5ab6913ffa8dc1a99e2e5d937046fc3e0195f787504e50838f8e49c7aebc742a6ffd8b9f02a4678f421a4480f43a8400e93609d65ba7d2a96993d1591a1dd167b7d5964d46673d460bebd479e00cf8ed2dda698b1c0e3ba94f4f4a9fe991c6877ffa90057c41d1e7fd220ef6a44b9c9f3706ce6b2f9bd6713b68dc81cd1b4309a2870f3f72d2b5e8c9803aed1c843a25ee460c4e75f65f74cd85c8f7ea2ddc8e28a977ae69764ad73cba23d690b2a7630f8f79b0e7eda2c3703ca2cf79e3959e42f2befb5bc677f7063bb823b91b54cacba35ed406e10cd9426bb141de01a22efd934fef90f8b32b1541dd56ee86209f171fef0f75eb3aa45b9f9c0f75ebcd01fd4c21f1bba302ce90fed5ef454ae9df941c8f8031344c5198a2eec2659e9a9ed2d44b4b44d791f9cb79e951c6d607ba961e591207ee50674fe5c09de9fcd4ebc9d35b13031ac4f9e6109c619dbd54e5e706a540b7dec7fd705ef2e674703e9c973688002adf39d639c6ce4d798800144479cd6b1092defa96713644d7dbc7ec0fe61da72336e932ce07eb3c0c72ca74bf9ac7ee67fd7bda7af0a16b99c79fcd394e073be793f3d9747075cd35a83543187b96a66f31be79be1a2bdff55f1f7d1bf1cec4e1dfe2f6ad5bd74e9b6db95b677acc4d260fa8b364f93e3a9a42a5adb08e101dd1c4899194571579657e1bf10ea7a39f7c2f1c77a3ebe103b36cd0c9f1e8e135dbd9fbf16baf67af3008d9d55c36c9ede8279caa69a3f82e1cea310e745fbb34b75ed4ee8779e578740fa10e0ff6eaf305c6294b45a84bf79e9ca8e44b5ae97a9c31442409008200e315000028140a86446291589226c228db0314800b87a450625898869240c86110c40c51c01082000008000080c08c890600e40709104bd8cdc4991c0cdf99468dcbff1eb2ea1996c3899d1e046570b30b7013baf5a6f011ae345e59f47151c72ef438e35f68aadf80f163b974f1b28f07df2d81b74a5d782c9dc9cd0aa01f6dcec9cdb9a195269f98f32f5f7d84f040ac6798c69803f0d8d62988931cf079df4a3d3cf829653691968a1c0df727787058bc38b7578867059e8bb66e4b68acbb31a15cc2507b92a0ab3646ea3abc099d56c0fd9ca1e6d4468e8a7fc3ce2aad0e1f14e637841c6edc4d4c7ae4a84c57c093e4f7302fa620d822ddc0f4166316de9022393a4f59942a7f0a1e5363875d5750418ef2995a13301ec716d12447802b9fa142f23f49bf8b1ed1e40bf45eae5191345c8f8eda7bbd5c2823b6f87ef800d1eb9ab0edd91edade6af1dbb3458433961cdd41b88912bb1870ba5b2736d81e2b473504eeb421428a5aba85ae1c6d95cebdd2e15cb839807d8d683f6bd604588ef879aff4f824c7f51bb402eb65fe9fbafdbd939b5000fcd33a903ef5ec41ccc928b396801fd5bc9403e9bec628d07ca85739eabda3e467a4e5394d4549739d8f82cd777daa02205bca69f49ee19b46f0b088ec4e4586f994d61dd37f276674767898f7440a592d904ef44cf0ce547cb10ef67d688b3df8a03aa4c10f3d7a1dbca0b7470822f9a7e8390963f26982f25a01e13f1e46a205fabaf35dca27bf6161dbd6a0b2046e0bf5dd3b598ffdd9b810e774210b03902c6ae9db71b1a68a4da9e0d5168c3c2869c734139396bc7d79cc0ed1c6565c59fcfd9e5d3f7d2fa5a2110d9a42a950966d472743aa49d358e44b64cff975fb33cc3cb7006d2334efb0bd4981e20202a95bae0914659e8c6ff8a585a45bccd6f5a2811acb7278a1f594866e75aa60923f420f9c776c50f1f855f3c381523aef04396642b79c1466880cf6a22444b702cc650677a15bf4557325c0c05e1f1037a05bf5a58a380df41e45ea197ed5342ed7dbc4f8ad856db8b303dd8a5709dbd68f43b76c5b28e57c4a3ab5397fecdce574e62453a2ff60ac42cf6a1807f56d02fcd6c0e2b98243b7b01235a3c6e59f35279b930d4f4acb87202e88885863ac96931fdc120cc9b9c147973f4e480bc3ecac16785854d1a59505fa51d804b8410c248d6d61ab155e66b5c0d409997bc84526139f0047646d90adb6b85ae8c23b19e428981bbac6822f37d568908b42d91d48d7831d1cba3d6124ff5b74495a64ee06f848599d7a2731822eefb4adb300ea472aadbe973db34ab8546a1778f87367c8c251fb16ce66d1ae11a44f01503b6201693cacb34d6c61ce37909862130eea50bbbc1e0d3786d3472159aba5f77efae84b600d1cba2868c9d4f07b7641eff139948f5402431beea21120db0367d8b2f2e0a2d851a7aed62b502c1b3eb2c1e18a3e66989395700d29d1f579d47cd90feba58c2a59eecc0201d5f4d4730775d11781628d8b45001f0b4c34a37b317daa8087febc557dfcc6caa011616b0fd94664f52f0c2c9c483f9898583062d2629c66a9b8af45658458930ac7defd0e99ccecb845ea6fee6fdc36695f33bb5d7beea1fa3b13cb243579b544c4f362c651524c509e86c6e1af47e381de354739d707b48b395a58a263053bf4a44c8adda0eb317937fe92b4f7cc50284492bb277fc495e79831399d558cbad93cb29f47af8a42fe022b5ee5f19e4068da67938a7f82305136c74aa8d4c8227007229a4c2a011c6f7d77b745ad16fd0d53a96f1147e42e8a24c39412d90118076fa8a8ac1d2b7d69820cf68dd7dcfdf9667f8bbb59cc74f7f752dd29c6d9396db55e035727c2739f829af7f4ada35cae2bf00e8b684402ca07774c2d390e4ac3515fb9e342e54f0f667bcd5cf240a1661eae4bb5baa30c88a30973235ae3a7def05554c6bbed98a4d7d21f0943b6e495efa094c44d81ac9d04bee14407a4c17f4623cb87565411942e041cd4156c0ceb065a08c19d9abd4b76761af3cbe6766bd3dff87e30543d54ee7df00570dd7b28cd9176b57d9723acde439ca8a1090004f03af226824760dc073545b7c6a54714752d29fcac45e42fc7fab7633135879dede5d669eddf6eefb94351ce3822819087e28d2f966e441219176b4b284b9f02675cc7e68424e6b96ef8b6694c15f641249873f6a9d065a0ebd1a97055b576925d443317f621afca04aabc935daaab4c2d82d41afee9d87859de8c14ecfd267452bbd44e4450440335a1a5c13a386a93751c66ff8c33bf1df517e5bc906b11499337b77e03636930d7b695dc59b556a672c816835c7bacebc1fce495099518baac748de895425783df9388fc2ce6225ce19500b8ccd4642fb8ef583be8c4554a6f5dc08c4a9edbde057abec11bdebf1bc8f6ec711b3fa43887519b03883020dd7029992ce57c69da4ed3ddb350049052db5d00c26090b2462845076d4e754543038f1d6dbd4e4fd2a45dc2db3a5534295a065963257a35a5ac1ea6998269dec17030685126ab1510b3c733dc9f542a0248517d3572afa01f7a9ddf40faa7b915d9416302b1de96d2783103e850172271b345010f02aca48951c53ae01c505154cfa64943102df51457bb0dd3bf317a5d14b7bce124952a6c0edef604509c065d2d66c03617c608538d6c9236cf853fdd6702e8975c6b05e8dbca000ef198b6359a91e867f83b8242006a5f8bb43a2ce1da775d3cef1fb441a8a533167cd0016065f539cb77076b8759d53d378b6efc524aabe0dbdb85b0fd976ef68f41ff4968978e21a56847372b2892dc49d7eb8f9ebcc57ef592152416038890bfe04fb4256dde0e0f233dd1843aa2785f61624b131bf0c243b0957e4f3544695615ac63801c729d904044d8f4c055fddc68b85320c3e47c224bd3bdd1bbf678db2b7e1e440f8dc211e77068448e1a9bedc9355f8c359d495fd0b910e201184fc06ea0c8f2be8ea0d780ef5ac00c01184ec7f8ae92c04fb93e038e54fb72a0a5742662098c55c666d04eb7fd7c44e66e5b2c456f8b63e1a115a09f1713bd2c78a7c21e66fde519b5f45c5a26478efcdf39f27148cdbae4cf38c96b0a6c4c5de18b7f295f29c1e615a66ac1f34a23573f385f21af9a1d0c9d469ee866a937457b1b5d7229ce2ea51c934ade0c0a1b3ee8e7e90f74f2e8b2c0faa53c7394bbea2d6b3991f169de014a1900a6d8bb4f9750c94be83513af9b8a8be4b380bd20a884e42624afe87e9ab377ac0f1878c09d34b6b77f92858b679cb5c389bc3f57afecf46a07db63e8667845af7b86a43e0e88f60da01c45ad6f559ca4d3a2a5618c3b3a1bdd84882b2a1eded8dc46abfe2349fa9565e7ec46962778ce2ea3355ecd76630a7d54bdb061b926185643a63771c7c7c086902860228b0df45b52819a9f943fd77bcc8c2c62fb82dfd184e4e10583a4ce8270f1b787b0f04087ebb0aa11e097a05426af25c1f798b6b57a58e84c3d9f03d8e2c8473f712ce7d122e6cb8f6e0a2bd5e26360de5fb38e1265fd4998d1841d9a06f052c3b6aae206091129153e331f710c38d24d85d4375dc3cd58de791ca8713fbb3e75cdddd29d8a7ef019c646de5a353208afef688807bd4a3dcab1969b5eb645064399938f7f6f758d2b840e7ea4a05108d70ed3092a8fd16ff11132deea744945400fbc5ac1d8fa1c55b0a9a6df2af7ab2b972cb9ebfed94e36f99a3c05ccd4043332df7551015094929840d3bf9a956f82d5933594101439e35f758f0c2ed73b922f1be7458feac3381131ba41ede7542ae1dbb35888e905607dbe5dd8d6981f76311fd54cb76ed17a89ece56d4272153d0ca601adc7084ad33313bf3bd63c06aa729836e2bef47eb5f008371cd368050f766200f46b837f461234d791fe89d2351d0f346cf5fe8f959dac707e471da2ab4ec80390ed809301d5eaf696177a5ccc8d97be0392b362003b6007c989e5a78bd6268027855cc98c2c2038e2fa87e8cfa6aa686ffe80f53b21e07c2ea0c41ca81c0ca6f73338597870a0c9bb40496841297626429c9017fb778a87986875c6bbcca2b43bc56e0b0004a88f4942483c26392adf1aa6640de5364444c56394ee21b52b407217ab2438ae6546b2416300154287f0bd9afd7e1ca3cd25611e8cca32ba56d069e621b5a426c1c5583cb056c1066944f08d924035d16e2ec356eec6128b08552f1bb434f10ba68e28dba8a289e0cd3f44df25aa1d18ffd77c7ee231cd9c4afdc189a4f752b1fcd3addfbe768c9e647149f5d6bbb00928f2d3b8402d4d26f3e228e6cf8a249a2828a2d2492024825415458ad20b26244724b3d5a8fd31a1983a8fff548806f5667bdff53af75fb2400ef59271236eb4620c84ee502f9d90b0a2dd6095eea6fc75e530233c5439a6f7b8624c4fa20524fb74a909836286fdf737a40a16107e68439706f324b3f0c411b123c42f0985c27d8a0a4c903b13dfba946c03c644809f5f32f595f2dc68a0f38f481a8697c1f3a9d9be7102da82b2badc03fcf634f93f0211fba05dc1c1a77609b104c1d58d3b8db155520850bff200106318e9abc2dc11fddf08bb98393111a0c2171b1cd0addab6dd970e464e5a2e9d4319d94a31e589c562f005966f414aadb7a6884e4e05a4be33ea3c6818f4c0a52391fa7387010d62ea5880cc0572aacd4f429d7da2670ad1aaf77b1ec730764f34a58d584ecaee75a0621a3e86d8caff68d450710206de59c3292bc18c1f799d8a609c742e87b7480be6d0945aa2095b3b6d474b741ee6e55e33e426e5ce99430f627ee2bc59d727180e3c897fbbf2df8593a1743dc427ad2aa0a9f5be8f3ff916007288bc994cb547291a72ae9ad4772af1c5c02699493e6cad3399f4a02cef158a09f8e6c61039c6cb004a53673ce81f30342a03c71a79022eb881867e9d12a220d0c51928bd7a1dc436763783b2942344c14f168c40164341e4db103d33d4f08884f68d601f2c57b97836a6789ce4d08552d8983c597bdd81d66b05a2202486766498128152e2fad9c5c48095bc71649003faab512da0cc1dcc7983f24d7050cc77068aeb589aa2a8bcb47d291637314233febfd7f6ca0018ecdbe11a15ad8bcc4e83f8531ceab6b9dfe7cd6a21085675b982778208a707975091e8c8bbfb3d4543c1ed460efcdd24f8c09b22300f665b31a9f7f42f6a0163dd5cb5ac636c710fae9564309c4caa20862b0fedacc4833bf9f944ed6476b80280d44aea97677797a92f588f6403bd0412d99a4828bc4431fa786605f1e8b014c8f82b169d371c602b6e407ec1085e2d5fde84c5f07bc5f90df71b6b516783ae29b6f06095b9c59840ac0634f50f31ed4bb13fcfd8cd02e266693de5312f680a1f4eb98723fca28c933b3be31e3488f1f5a32ac762a7c688706982ddf08afc4ce0626746b34b7da23659263faacdf8bcb1c8e42e47405b7380cd20700e17fcc29d68d311a72287d34794437058ed1ad583b4de34ad9293252019684f1f37e9e473afe68ffed9be9d2b652ee814e9ab0280c5bbcc4a797f1764328632c50cdd3c4955d76dfd49d4c2155116000a5584c3f44d6d633b72d55c4db4954c4cec4eee5b9e4387324d398018fa44c9821652e90ee9aecd5798b033290c78ba81fcb298362c757a33965144bd9697b16b3bd2c386037ede2049fd83c53fc3b2648f86032ec03357206888fad7eee3628f931ee5a2855624cdc4dd593b760aeb5730454cdc027528408936982eaa2352bb4ffa86000a641025b2186672a682dd100be7903c9a82c075625898b29dcc92d1224bcf41d0088bf0d84082922cd05283b325ccbcc30e3907e15d081902a4659e949eb0b435694885a392b5db39f7541924a131e119b11b280d4d6e5c30e411676bc17e8319aff85748f72c43d7bca5ee7c07ef79028452aae2d9af9839d733f8f82e2f49142f0cfc20166e78cdf4a9b0d1c7aa4b26148edb5f6f4f5ce5eb0bbcd053d4198a0e44e79612e541a0050f1c1427393e8209c3b22dc6915032cb97dc8dd245b71dcae15565ef2af6a47592fd881587e48f96c0130df02b0b3d428e62986deafcc91adb61e88dec2a8005ddf3b56c0375e35948abcfd93ecc125535c749c2d2710664d109c23e6183cf2f4318f81c72ddb068852c222c7dbcf30033c5389321371c5e864e1cc9faccd73698b9d7cf4463bc989c22c7ab6173a2a2b15ac2fde60c301612c88d21af468f35e1bd0ad80b5f44db23b63271f8f932cf5a2319351d3971460709a3a700a9e4fe7cc940896628308540aad9c13604ef3b6ebfa03c2407633a91c5c8805ab4109b937cc074b7e07574727cfbb7345a9719285a7bda3eb2b4db70f65280738bb4ef93a7a98a82876e0cf34a887b37e80ed6305bd97a560cf286c03ade07a42d7d89f138d1169bbff467253a6030a59ef3be9b3a1888ef446ef2e9c857b261918422b6eb839e1009b9a524e17e4a0e9de69f1c736e3d7a63de16d4c5a4f73b93b6d7cffc53433ce81eb97100104a63e0648051e38a2c621015c8528c3088051118abbda961718024f1da0e7279aaa17d722a32e383373c1b1fd3151d95c7efed08789b6069fc62d7543d294c42893b1b0c892b1e4f0ce802175d451b009d54db0e717a026700e823e2e74ec988d8c8cb64c81ef5ef7e42c405931c001de9746f1ebab008dfc1246031cd2bd009c817dbd0d24670b31864c8029655d04b00305e85b995f97e4fa48ae8c194574f9140e6508e619d15832a65a753ab3b2a64c15ea22e28c22d5ac67cf0a70be92e08342dd003aa00574e13d914fa148a5cf1bf9f4964e4c8a81963016cee30ef852c69e166566c5c6d40522690ec335b83d1711b1951447adab54189dcf73b89532417574e00653404476b9d00e21fe39869e89ef47cbbc00d5c12bafd95d79025d88ed35ea0bbf2a64aa962449b11e80968648098aaf9fc25089a293dcc604ed94e590d6a186d9599be76acc16afa0301ea5a69e21b6b1dc5340767ebf4df2afc1a25e6d177a87b449d782602d5d3f0ea71ef1f7147221520db2a1d672faf7451ce2a474dd45ab768ee6e619dd0f17f01921ad82a254c40d99a5ac33c6e1c6052b766a37503cd21db756b80b10ee514bdb29aa3de68abef62fecb64a53a1c59d3147e1a199b2582034500c46d0a848bf3613f847b5ed1577feb48fc45dbeebb2929fa904d9c8e3ce85d10a9107c29852c34170481034bc5229029a7b7dbfcc9dcb74f874bceab56cfdc86a20c624fc933c14de78770e0fbdb86dafff0ca24f489deb071f632827ef2912c110619b4013eebb728432aa9e963eff1fca810fc4d3429eebe93fcc35b19bfe952488962d010384a3b23e6a08dd4ef76c0d658247ab883ccf23df3f7f842f6ebd80002d4cdf42b7c1a88bdc019aeddd1d553a798ce1d3667edbffd83e470a2378c540c0e0381382417f6aa7595cdbc5d9c62c6e170235950a9de17e183a4547a61a1137fee97e876d81d7a1f85cabc951066b28379781fa5b9782886b57a107663419f8f1426b0d661cbadbeef3a017b89b1d04df44351ea73194b8374fc9293d3ece67e90585cb663cce772dbbc4faa12c019faf055314c3a92dd26e8a5d748e268d118025551fd0e32dad5317852af75d510f5431ee254b8e70ea6d2218fbfa49c705119ae0fa64a47c18a6211145b54609bfece504b2e5301ec8b143dd0b079ef88150f0250e912304be20b9b29819600eca4b528f17f1fe03e32efb7053af7aa4525e9c0d91d9dda2b8bf7b8b7a5718224b8442e33dd2f847be7ea3a955dea852bf9c66a43a066a80a5037950d66fec70c66fd4437153f1ffae2b8cef4c85e31d25b3bbe658b528daafda6c52100b899d3dec208c6cde1f870c58242ad81164559e4c3e5d02302209366f368d41f347a40affed94c45d46be9f1c707a48398b9a5bb90912a3860f24d15c924d4f33797b967179c37af76267758ec87bcac5021883b8860aba8f3d891cdad900a9b64973cc9a0d47652fd166b547159a4c43ec2bb80d17492ca1068f73b1c74a9c572808fb6c7ed19d1a618777c10e81d2fc66c87031ac1b4ca870e062c766eeb67004bf236c2915c8f692c64a33d24e6ef67e303cbe4adfadf602a6d29159e7262a5d3cb24b2581fbe3ab381c1abc3e46b4c1fcf9747743e9c827dca6e4f40c3771f378a4f8139dbdbaffebd0e54634057b1a3c591e28cbdcdafdc42dc09473ac04c54c75064306f6664e6868afb1d8f0f5e26a9a9487498656f26530f8a8c3b0100709321a3ee1dcd03ebd980d052e12e735d4aafb8e19b78384d0ea3ee2e562e5f61d9ba3fccbfd83dd60e418270ab22e369169b55919d701521fa3e13692a090e46c869fc23f0aa9e16232d12e35e8f21847a28b61cbd95c10b83c35600cdd11030e2d554b5a313eb13697346eb9f168b76629dd2fb1366096d349c6c7cfefa6905f6e99f92af40de13e9ce9c6a5d70a45f7b521e0bc11fea552c0f3f1b7914054272469defb851eced269052ab5614a05f512fb67c2464df49ebbdef9b5454a5462877d5c85e914bb31ce155e2a705b27f5de462841adb8029708e607d8e53c3c42366da9c698fc09c9db53f29b74f260ddc5213acb9f2ace32f5a5a093b972db14379af8309128709ae3282abcc0300a716c23f965a7ab3beedca5c1d2468f85ecb24e06a56117a9eb1f45475ea837fd430608b9250668ffac05e9f54f508ac5233c23ecd369b62fa2d3dfe495442c44810f8e626273fe7ead796ecb9e7ce6554ed2052d6b098807e25d720925c0a875ce105aea9fb213052420c06bab3e527f3f08c4fd2e967ce7d39f16cc2a61f7955a46977d1deb534d5e747168d547da3bd303166b474ea3d3b744acad540c5eca0a809878279e39c0c4e384a4bcc934057f8eb4af7e1b264bda5ef38b4597753200ae467e50746aea6f169551e269257544a82415e8f6f0c3be3482b9eb7836f30cd2736fed1f2cf1677b8fc7ddc8ad8d8f4e02db9bc5f380b1b8a5228dda7370283cbb6d0f2ec1cb773972511035ec4e2c53f360639080c6786bed2ad6b1836f8e6e7f0bc5a449b8d4e8683f0b27c46084e44e941918ece5bf4234e5a6434646031fde1be9bd3770e1d72a860ee30fc13822fd2c48e6ff67d24d8b2adda010d9a5a24c59dc1edf6181269df4d265908008d6f01667d9e36be927e8ad0391fbb5a378a5d6960be9b3b50fa108d69fb7b0bea6f8af8100b91f352301499212d04de751dca27fa484817b19faaa81ee4c4a8552df528ef11d946571b668e3866b303c01a615ed0acf0d7b9cea5b453ce0ebbd17877b064302b3ae9785c34179d3a4aed7ea825f3d23c0808ac47cef24284d425dcf4fd76aa9248b2b3b7faeeb853f4c64095a9177adb34f3ce54aafe998637253e9ebf1f19d8bb61a1ec99af2b0287d882bf284f9dcd6b6daf239a1fa241e289a3920ed605906856bc226b9cbaa6d185fe5a8f5fb48ecbfd967bd5e58ec7f28ba38511b912938fd3a1b9ac851f4502fd9fdd021a2d413a82063715642a99c127d9ecd72ef2f407772e856b2c5dd5df1d6901e390c3928205874299d55eec171346640b7034a96372f2cbf71f3dff81d1c1647fdef2d0ebd74393a5a27a4ef653af3c71febe162265df2c1b6bceaa5089f8c120878c19693b7eabc4a539657dc23bc0b8126a7d028a718b3c659ea792ce57ec535c612bda74254e03ac6274af7fa7bde7e7f2a7803e4ed178c34763747a931a46adf97f4c1b826a9bde050b7b81dad1f140926506e73e6a4bae5233acb4115e374f8e9fc2cba02f5742222f0f82772c65914397b4e75f28c45d0d5f9af49de2cb0cb4ca9d3c7753c553ed0f356be6c00418d3a878c4e9285325b11dca40a462934674e2da25a68942ae00a60f0395bab3b6b77b80990599978cea040d32520aad67f9c7ba5149770a6b83574fbe2fa59c521760e60cde69fc4e0f3a94cb86a5e18e2c82f6338be7dc0d40b6e83063258830f441d71c835c01684737a864293914d33f21d4d72646bea4ed3f0918c7284d04b431a0c6d203640269c050df9bf970e69e3f526e422c843b4de5be776f75cede74e9c550d2f7b72099a5c310d755169b398de8b89025cbacb1cc82d5ac59b2c01a4b2c58cd8a6596acb3c08255ac5866c17a962c59c16ab0ec65a99bff600200c6c066ef2c411c15a13279298372911e05c01859fc4dc520a50a383dc88ef179e2c04f804e6667019ef78f0f322bca528b37a7b16cb3548e4dba3c447ecbd97341b2a3c2b7d4fb47dbdd1de887be653dbdd1461c9bba1db966bb061670ee9702e1c18cd564a7c6cf9b10fd7c04b86f94c8e644a2a4aa7852b0ed7131edb6160fd5366529bb24464cecdb07ae0dfa629428dba7b91805658a68964741b92ecd05d128e5437ba951f21ac1b78ec8de3c8f4f8691e65393abd5c86bc44604206457d5658ae49cd739d90af43dc411862e5447cd4421af93a2f9253cfe07973d92d7cb2a32602fe6230c1d32902aa6038908ccf4cf91a3f35ab0ef54a0bbc888e6a00e073ad248693752671c15e4b5603c9ebbba4b36ccf6ed1415413f0a8e11e5f5aa30485888312f8fdfdce298411455114b20529cd7bc169e0e6788f285bcb6b306d8e9ae6d202f1d2ffdc796d36329d7c6f9c2b9d99d36af91d6ca3ee875bc7b6fa537db22f7a0767fad79d859886a97d2d685b713b50e1c19d57c1e605a9d66ca6e9c7416905964ed622ca63b3f8c1b8c2d2f447269a906eba295584bc3fda77ba91b77c5962cd0e6bb4f6d262666d065fcb26b9dbe43bb422d4b2d0f8b5c51f32dc3c25cebd571f11601447d8a3af4490f619818c83674f988b991f349dba9a7020cb889361f22f370515ef67dad05ea8541041025d39461905eb7f9c8479cee86c1ee93fa365b13f3bfe15f2ac64ab9d9634e17d6baf57869f1391f31ba94b2ac5464993edefbc3f230a321d07018baa1084526e6ae9fc1847f631b43064947d163e59579783dc6b2d6da0a5fbc58008157c5bdca2cd2e2e23fd46ff5918f38fd1b83ad5f45da538012d1b2f28187d1fc6f8d3cf89e4019ec63be7bc397ac114bd2028417ca2e89c5e90be5a60d92c9efa4692707b24a2c4c8a09f9ebece4fadcc57301379712b0c0d438e7fa7207b08738987885f497542827f66954c1a6c5efffec952d13870c8e4504868c504758b330d84429bf201d17bddd87da0b3bbda45de516252989e09a5f68ffbadba335dc5f9213e7667e88d13503732ab011c8268f24af2d7994a41984807af586846007f56b743024c314ca54f514c13e1b92b65404f0e144fc566c74e057347dc92a7eec408c63f35c213a94b633684d31bb7cc77b24ede6272f546679e5f9d8c4fd56598d6006f3c1deb8e46e4fa6a31c7e1710dc1c335eaf180f978a3b19c8538a275b39a4f3a4e8c0c56729e4af6b09f18bace4aae6c29da2a101d3933c8589c1e9bffba4b4cb3862d894acc08e8cdca74b802d77586f1acc85adf56be44fb02eb38ee13fa0b6a1fb2b38cf1dc661a7f0f907beb9f57c85e3b187f8d941614ab05c23936d7067a6c4383fb0c65cd33e7ce15838d3b629f8da2dcf1efcf66ce645d1920e1560c174d20801304a8541a8382adf5a587bb2f08207cca2c215788198371234989abac1c34f385a63b307ec86352033fb0f31d1a4229e4c3547f8d9801ca8d75d9b972890dc0fce4c654d27aa004ff241e094eed7030c7296890700568833236d34e248c3b84cba2f5cf62c99ed9a8239fa01484199891b6390655574b8b52bfeb757850e59c1a683f5573317094462bc14d957e6c40d0b5e78e52770853ec821a088986320c3fd704eb4957bc9ae644d75730a24b9e150df361562608158ff49db8cb5823a8d3f4ead3cd02ce881bca923ae352bcd2715b7b32ab2b4e9f98fa4a5faae240167b27d6899694f583b10520cd1896ece886b6a080c2cbdd8ff2631259426831edbfde7fd3338152a65928d4772ef6f3fea7e83cedcadbcc5b564fbc1fe3f3d8ea513e3c60dbb45ca36d3e1adff4ed77af1b000e2899b827e8a0d7ab1fa34f92db8ca9e54ef298cdff855f7129451252613bf4702b80c4bc6412eb5ee6f10b342ee578601e5fa918f66a0cda0050b42a93280198c66a0b62232d9be5b6b6e308b94f008aa38d614d0343b04b8681e38edeee3bbbe1e33b83fb39f4f56d340d9cb57a8bab3e49a19c6aea1f04c021b1bf42cd1fb76325167e3f8b04e94f792900e22263350e585c73c3ca403d8a106496b5069383d5015cd3dd6739649021a7a08ecd1a76172b0f15e8048ec5bfb77c6aa743ecc805015a7ce6d0da7cc7b05a7347312c067e9278730a09296a68e9a95d5a23264715d4b9670a69851397d8a6840a131600a48b8660afe08fec7d6fb940d153485593ea2637bd4bee79fa2486a84be908fd55d00223433c5aad391f3be8903c1c6dd203434f02a599fbe7e4083b94e5ce8f7427588908f96507b2b7ed4b500e61661cc4e1fc58760eeb902c554f3c0464a9d0a9350071c8319e9f92ecdc619d492f9efb8bb81fe708dff6f128e00b260d3fd4a1bfa3946a6fc71a4ee2fedbfe0d80eec231441547eb07ac55ff8d391b407651cb1a690006c0abdfea2f49ef831eba22a6c05842f5a24404dd7be33b07deb0001e8437bc998c580beb6befa3796d8fa350a8632b40c76fe7caa156a82c88b7724cba3bb0589b2473a3d8489635e4e45f2f3dac1176a111195f87c3aaaca191e4addb1b615f975230dcd2156d024b15fa8d123fc528e19abe9ba6dae1bf9869a6c7f83e02eda6e1661506446596ce6a1e671c14b25cf3d518f0b3dcf45da8d53cb6cad0e03c2b092930a925fe0276587f56314b68cfaa3e84b90ad1b2ab4a73c5ee81c0bda7c414ad73f914bd3e0861384acb5f9407530ccbad881dfb0eda1fdf0460a05f187e523934f814997233bad3880d34ab6d0dd0f0fbd2674617d4908a9a94ac5790e46c90094b45e99bc78a8549ccb7630b7c2dda8ff5d904ac508ee4285ae52e9afdd43acac18f972c2a9635e181dbc1391c1e20eba408f13583a7c0b8027404744d0088d2842e902a36970e8220565111d32da94134bddf7a246701fa34d72ef73aee5e85e6373d2984c77a068ba1c12fd6bfa43c328dd63b809b311a67587575d537a20f5fb34ff83720a92f4588103c7aa56e3bcf2438ffb5035d6a78e31019a6ec4555004014ba011ca21bff074b488f5a95161156cf83ef72a18ef0c3a10e459fc997a4647cf86c567fc6daa7b2e6090d83aa235d5a2f6a089d05ff6bb294174d821512009746ec8ab7fac56703eebbf130de3d83c671080f4a2f65928a6aab00f69ccc2f867cdf99149b625a70d458112327321ca06be88bc7c05211a63adbc3817976fb45f7eba3037402ec0690038f608573d349b4778408d2364705e7953d0f13f380fdf134cc506e58a7ceaa9bba5fb1a01416b22246b598394bf33cfdc26eca0aed6de10584d172d7a1eb75e40c6552e54156ede68b314cd3074d2d383b43848cb6b7db26cb2376a6bdb54b598f0c8e571d49c73534b2ac615a656a14f9d630cc132743641515b11ec4a660eacf50aea77a7f56407ca20f5535f27d35d229b6539769cbe84a8f6b92b23fedf5c76e1d6843e2cd1621c4c8f0272592dbbc6390f812d39ba53c748af1041ab0a9e1235be7cc88ffb330c6d634c304c70089de4278a40855b682083adca707fa710a6bb9eb5fbf3706ec891043f560f974bacf17254010401a87de90125a20047ff872f2bb9a16b04fab724807c3929a2bf7fc676f25707f353c4d5c3934912693eaf145e117bbc1f915e6af77c76539e67a36ead76f6e5f5bb94e4fb6d97bab3301da66e83a9704df7e7af8034ee0dcac65e7803586b00cdae07c4dfea164fb1771caeac2b3bccaa4c139dd0f5506107bff235551a2c01e42174e9ee6ae5f6ff627caaa2aea652b62f05e2b22278a5861d6022a45d32b926d1f6505ce8210434d3bcd062a363c93c8977f08939ab04fa5c98be0a10a43a94288249e1278cfe0eea200b17bce3e8a815ed67c409734988af20a5bb9548502be175dacf9c7d71c7ef718bc974bba4ee4691e228b8096e248e69e96be586616fb8e5c0247596a403eb477f222e8da63f297075c309026b70241d2f7d1528feb9d67536a0179bd377c92f6f5a90c61892c165555b0216de579e59fef7ea656205293fe400e718d8426f230ae3e8df96e80efe4bbab6e49edb2ad1c4d8994d29c981ffc409e8404ae55e516de70c823134d247fe7f462615f3f1fffcfa9ff0be67ea839a8cd99b080bfcd9e747ed77276c7fefa5e9104db8931ff6ef16fc716d1c6b0280748f440283f1c719a8dd341babf0e3d2d0ff3b09fba2d99f0bf95460086e0c3fe2206840b43c2ef1a51985091da92894e7d88322dc6de66ccc90a4a59be4fd6f3ed6db517bdc529cb29f25e47758a8df55b4c51da0d75878a5cade5c7f5a0522c3edcdc5560dddd2f3089af2ccdea9c108714ca0325282ad2948c4dd9011a1bf3c8e0d335a0b81a6bfb49b4b52ba08e8e9df91c9710663ebabdb8a430a514997624491032aa98b535d81aaae1d40ac18380834efe2cf0058f7070a25149e407ca93aa67d7eccb9acc74cb2d1d4c69f9f27d60804c5a2bb7ce7ac2914d5a56743dbaf810ce607b60dc3ce8d288eb058b4c9be7953767798a5ab2884074d3e082f548458883ff8b4aee261838b047f62114d16a413836d2c9bce38f487b72f83d4d911e5aa9c0f3ec2a0530c55a96723836ea2874eaa70166ebe714f2ee58b451592ed6eeedfb073a99fb5ce1c3f44206c803768b491a1e1b690d38e4a2db4319511612ff0d430c5ff04b54e9492752e31001ba54d5ff718148c42938d455776813fa2f29f94155f9afdc37658ed6461a42b27583f2060ba063b4d75b3ab9765b45eb5786116198049b2910488abf4673ab41967546499082eb0c1130e81cebbb3f1fe454143bdebd49d186c6c625e30ad86a08071653332489519f99ac070696640199ca1a6f7b41bb5cdad403f0ae8f74a10fbbe42a306d027558d80c65687df6b9df35642ef014c2137805848d3ad7a8ca5c777c1aec83ae53b8d89f00f6f6b540183afcd457abd4045e16a566366299068ea08caa7b77708b069f8ede57135516d46287b71235eab74918063111fa93a720eea940c6429a4cf7a184de2e588a52f58eaaf9ea46b787911058459ee9d91e59cbb4672fa2474a0147ac96b7d178c3df4b4743fa308e39f0b05986750ce16d1c9e6c5d4928a62fa7c1eb25dd5ecd9380725e1128a125ac527aa667a143b945a956860e419e6f7107944e8c48d1bf2add6e3036f3504552df75dd4aed3abd54ec39b2fc92927915dade0e450007f06ae26585bc18dc74b8323d44843aaf2b100392391f54db677db5beaa3efc10cf44304184f1c920e07c5e9b4c53d730da5abf5d7bd88269015a6cfbf26a69bd0804c5789f5ae48974e8c89a18c02fbe9280468f92be641db09ec63ebac341e3ac86306f6310206098314590bbe7c3c1a3e26edfdb19e57a0da0fd5223eeddc0e093bcbbaae07e4cf9c6f8211e8b4b5e0565457ceadad9198aab82b8899242d5db197b837f32c421b21b2758ff8bd8ce43f0f87f292299d5e66aa298243f87c983b8ce2d06d2d68293b88e3e1605bc3710312df4505dd3c9d454708fb913525adaac541075307f036fee1e215291316d3122a78e21df797f4e26c86decd529cce296cfbac80b77256a5f7c56a7598d1a7ff7dacbd4f9576df4bf26bee9eef6f03037d11904e22f562e869feb9a624515a7232dff2166a2132008e8747bc6fff5e1f7c3c76a2091d151450050831169566129740498204303b298a629e424ebd37ab6b4c895fda3c1a9f0069967d2b9969103f6f31b85187b227e87ba73b7b91daf93c078779c097ac5218fe400e2fc304373de86f1ff681f69dfa35f0321d7969c2c829a2b28d7a9e92bc711b88a7507826b5fdc4dac81f31f2ce23b4750bb0a96542902fad35f47f4192486380f54a0e579aebb2a8ac2cfba27ed3a6de94395dcbdbca0d53e1c619f19468f131ce4f12d6300562ba449bd4e9c66d0fec84bcdd64705375e52d6a591623f53b2e300a877dd20209d8aff7cdbcabbe2b228f696a63729cb3afeac98af407c214157c88e8826ebaa3c260a6e1c481de58c70b53588feda5294f6036bc710c9f9bd26e8aead909105a3d4c4634b0df602a7f4828e0399b3c35647963d2ff28aadb94cd5db87bf8e0ceb45760868957eaea028aaa94e42cb771df638ee77ffe203939327e0ba8c6758d521e1438b115a38fb0af226ca1583863efb708961979a07d2502001461fefbf15ee5ab65bdc7e3bfe6322fbd288683cdd993f7af07140c12a38352e45c9a43bc38666256f9ae4f7cd0742d533e82a85dbffef8315eb730cbcf6debeb0624a5a9bafbe52e0962018624b29220c29532569482adee9f326b8aa48a8874bb8fa903c7185aba96d8ec86f261c773dc21306062bd65cd428c0f24b92900f587c24686b6c15ecdfa6931c81152f06234d6d89eb3f1cd08b914cf1175664230859bca3ee75364039d1612361b26cb9ebb2987f5693c590a6bb25c3b3aeead08c34ff000334cab78751ce8ecc160a9d4e48199be109fbde39f13c9a3653e0d2f60105a4df560436935f86e1554e9ca14ebadf0fe1035ec532e6452e67eb1aa417df05da2894137ba942251da06b20badea0edc41c1a93705017ade4b1a2382d0fc52417c52068bc52f9bd8924dacd4475b2bfd07a8955784be75a9915a8d3783728729c012f188aa377fac872d13803c60de038e44fcf5580553311511692cbe337ac19431efcecfcd3694e771cd59506eec701766b179d98254361749757b6980a66d0b5f408b99c13f03354a5511b557fd63029849023ddaefbd835fac77897038649b74a211c7852fc5480bcf22f6e4b3e6ddf09f50a758947cc277c6169ece897c47ba6160a9fc05a951695728d1256ca7cd76618df039afb20cf038f1667611a93de5e874b134e3e57ca768598b43638021738c39f3ee8b35698cb2b0ab4fc1d8cbda2d6351c60f927f870ff873f857eb3b3d33ea82a6f981b918bb4678b9c6835beb36e78c1f63f3248ffd0b0e6fda94b16af91988a3f18adb1092f62e8347a65d9399ce9f814c0fd1bc8e0c7d120a9799fd778a87a3522f24ee205c452b6fd2954ff7aad44748661aeb7801bf418e70fbfd3bb7decf422f68dd53b8cd6f76a8b97d940aacd58fd07d009c8d03614d2eafba7a8ae3d5072258d04bc97397e61ba10e48ab120c2e15e1249a9a340b41cf65bd709a96418c6311258a02b230002517a17fac28baf03ff5e150992945ecc237a6f7148209cb0453078c8f277e3c9d97a37b99d39627677f0574f43c9fb309f0f4a120e5483bfafaed779d160ed7d42e5d16470724c5dad5d696075a019980c73d1b1a1e8477587fcdcfe4f862e0f0a82e707cd04fd585de64d4432338ffcf1799da19b60bacaba17da0e2845afafa21ec4b46b1c520f0ca602133ea5aec05ef47dafde9dde22bf54204b1d7d89cdff609bfbf173f0edc249a03dff487483a3c0f5aa1d5ebc4f9f8be55484dcf15f986302ec2e0bd0e21fd4eeb894960c16e813aeb4468f42dc0c09faaa1965432674d3ce6f50783f92b065ec92cb28da0859bb739cc142096720d78f6e88357ea09dbd8ca68ac7aa64aa9132ea9cf9954d60bbbb19df553d48cf259fc9c26fc7a0966a6933663e80cf5b947599f15f5b4c044fd45c039156fe21443c84bafaffe431ed8892944c12b83f48529d082650e794a90996fec4c73440fe1032b22017fcf697fe39401a37f67aa2005d12d1f09c664887b2dac3c8d228ca6f62c4786440aaadb22a2bb60859a4ddd55de10750ea77e97d8416e821d32fae869285119ae229ac23a941a0c7b030469140848b39a0b419dacefbc9499949265763230ec2985ba8a92252313f3d70ce68dd0ecdc428264b843c92e6beb872fa05eeed5e9ff3f3fc5908002ceb54a98cfd54aeb670f3c7723c7113d109921cef4385d21d80a4c2975f8b1127a6e797310e038ef9844a85b9498910d082817479154aab7c084cf146086778bc103d67ac9056d246109f92a6be3f8c7408f8fcaf10093ab31df12e53ee8176a89c6b95e336db951a8a1728c2ef1bef1de7e95c65735e046666972a3329d1b0a1eb8bb02da68da2f722a6c1459311ef1355b0a40d72cf09bffbb7c598a2f2bd90b3966237fbb2045104d93729bb32be384fea1373cbee0fb4f21e7773eb02dd2b1f47d269e07ee53290603bd7433fc36ac019121f43ce643f20ed0ce8931148a4edc4906a5a5355b3eb6c2a5b10f87355bcb62428f1c755451b16bb6e6e794fc4d96458aa3661372068eae61c1221d4698593f11a69222cfa4e89f7abd0570c7379fb0e49ff024ddd11fa82ee10a4c0445d00c10ba49e8d42f2738e490b787c84987840b1f27501adb553a6332c79a2a5319d3c26e4447b725d9b7f4e24e5a5d792b04ec2f1f4a1df923e6806e0658a1ea6eca982d31c0c1a54280f4dc71e15016c1717e25147e2c73a0fdc46e29da206328b4adc6de33f5c586ddfd7fbea3c8564fe1eb3798117385fdcacbbaf57f976c31162e3097c0d22be570180a9585fc361180e01a82847fc498d3ea2f028073d74512bd0efb88e89e8e5312754a141d461cf7df3814641ef7bf44512c1bc0bebaffa418e91edc5e4c6c00358cff2ec9c9f73277638270ea601417ec9a10693494f7092659a79f936628a468703b159ed9abbd1c08f674c91c7a8237de7c11e9f1676980a2c0a8e8c8209cb9ed9bc069c4f469e0134fc64e58ea7c585a8a3ec7b9119998ffe68126013b63ce6745da82c70ec71987d3bd28cfbcf1115db4c3e62f087af9a7e7498ac462149e87c2762db2f24b4c9622795d51141cd89e50f9a0722bcf4726d6897de97b2603c286f0dfcd32dc00b156cd021f1a38193053ba1b1ed86a3d4c717c8596ae2b46ff68b82f4dc0d854ccbee85a9da28ad0382e68fb460b9aa9506136025bb8707fecffed36311cdc0e5f55356278fb050f764b3f64331c94293f8714a7930fc57a3924868a67bc3b857d3eccbdbb12b47b2d5c6072b1d4be98247745f4ccef8ee3675138376d616f9b788d9d1b2dbb23abe2001a83f8874c951f44e548b9cd19b78e9829892bd3cbbca1002115e07b3a6a46dbf4551c55f6da00b3cf38692ef9e99e54c740a7d3b27075a10782c7d772a40f66ab485abc5733f602e784b0cfbaac3f9ab4311131385f9b43cc20071599daaa846422019f22fbef9be989f9f6d1818af90c37cbc20aa5d14b6de32b54982aa7fc880696a1bcacfa67f5990b26459376888022489dba70d2610c1130639a7d55d453da4ca4811842daebb1b6acbc0c8248ec4e128fc349b6a33240338be6376ef1bf7f2ffa8bb02e6156a7a8dfca3905d309974f2e1a1ad7337d9cf96c35f14f62b05894fef3aaa2f266d8b974ae9f98de7e3f3271aa0c29186af5504f5b50ae578af9a254a3ec250f15b9c9716dc7efb0456dab01595c57a3ebbafeb2e70b7079ac2321c1a7e96373c0fc6e22ddbdc9ee65a7781a0a822661c82f224b459e04b034a9649a309d16e64994c0bd23f2b65622d1302336c9cb76a882b2cf0c6733be0ce4611b5238c207769a50e317fc16b8cefd86c756695238aca20b56ea82f60ad0aea84d4d427ac994eb35b1c1eba8bd1ba24c8b1c96ee2a3233927953a4611a0bef9fe2cd2bf6bd4526ea3318b4c0118e3da33897e33257a8c22b98fc15317257d4b613ad8224ef1ce253019d1f3d851a19e18cc2c101da5e2c4240716b3de8b04a84ce95143287b905228157c07682110c0bbac955c2a21f95f9edf9225ecaba223954e1948945f1e4296de1930c6bbda6893b1bafdd0d913dd49fce970d1f0208d62f3e6603ab205436337afd0cbf473230663ab271e7783bfcf4ac32849c6c3a60f1d9c088ba0f0f2ddc2f73ed1416db061059e6cd24f5c38036a3845feeccef8babdd77d0d7279b82518deba855c8d5ea4ffb394332ae7af5c2c9279014c2926b4fac01612751554e520890fe85288825a58dba642383e6238258496caf17c976566a0ea64b8187059bb4e073da996c85b83db8e50990a08bda065ddaa7ac7912da76a9221e4d883e738ee92fc70dc1516b6c323a3479ab103175d426d2b27de7ad1a59af90c95446b59c52c3ea6402058ef1d99d67bb63a8b952b4f0357a1048693631ead70aac42ed7bfe53cd93baaedc50945b14baa7fd8310a2e53af7b479cddc3ca82fe2bb70d4c960c8ed1507e71d8cf8513955a11d15940c9cf1c8e48140352982750227bf42f01c7d012b8a8b75915361861b87c39ff25dc45fb7e3a263df0fdeb407984a4bc0a2e8346883dca69122eb4e73190d63a2fa09db5b40fc34915f193983846e1ee8a1d29a69af94b21e7278e491c0794143de0780277f50c1f00f3dceee1892b4bc51b1dfbc694c55db1ca9282445c5181bf49ee667555732af9c049ca91eb288013e6b6ca88f9a44515ded623ade32c84304b7ccb3a2b9b9043d746ea389e095a0076150b30c0ae55812ebd8a1894cc257325d0400953516d4474da0a18e76309d71c748461ebf5dc80908e706e8007a7ab983b3dba594c9cde22208fc7505976ed69f091210c35038122701d388f0a31e55d8138c637111a952bf89d2fe218c0a20420bd1fb2e812f2cf1137856167a0df84d526a0a36978a8a7f5fc8dbf927bd8bdf51e11425bd5cef210c7ecd8a486b973cbfb0779e46972f6ae316cd4283492ade709964bf24e488c52187992bc029010c56952eda2ad3e7acea79ad9d14b6d025c6b10397f3e6c1da93cab3ecb946afb4e25fb96d99f155d5b5bdc0d050c083cb421cce928cbc447bde71a4a4602afbfc494f57de01a77286286e8f1c09ad5200dc0ebb7fbdc82b9ae446c67a012e5855949d9f3292c059f3e1ad04d1c545080eff77f3ebf14718b2928d464b54f391b61537b3013553eb415c8afb4397b67a1df9deaae1592168449237222a6296894c2b5d86eb81188e308404ab901670501f9836bcfe1a9e15aee858d54287aa2207a2daed28a31e1d6535a2d0f5083071c0f516ff696d8b7db039e2d359e92a73c73b4586c689e54dcfc89e3b4bf234b263190cc9acfbc107d8ce398455e8db8e45c1f850d9db332bfa880b9b4526d35ea96424bd83d0d3297d05175faebd79d9ced51a442bd8816869d66532124ff416b9005da681cc63edebab077697a4a79e66e8441e918fed788eb10dd70777352ac9e4ee0a11120d58c9111ac9643129241d904883c07af4697e947651b82093292effa58554c28779de944c4a3e59e1283ab996c447ab48b98b54d1038ca96a2cf4ee04bec3573f9a8174f0aee9016ab156d12fa2075100e4e41e82f6b79b3e4961a74391d891b2012624b53ec812232e351861034c3a983f9adbb03a31568cfef2fccebe4bee69d32be719dfec2bcf704edd6cf1238c63f380cd4739e3e829b36cc1da02e1c246d386bdd1771dfba8988ca31f9efc486b32d004de225b977697a0a640b54ef16bdb5a64a39a7c93b1645bf00d674e0eb0dac305aae25ec57b4926c008625f72f4191ca962b6b679fd7f2a76f1c51cc35e3eeae38a58dcc1c9cde31b9e7908fe96efcdd5dacdb6107f6b0b972b52fb79c950db91bb9e11df6eb0374d1866a95d19457eb5370862d4202fa26cf36f4af042541e0c9caca5401bb2321a505d7e0909d00e8616952cbc6aa92b37bb8326104413d132fd7b2b02a09f69c80318a72039b1b059122222e5ac64f93b70acfbd94547e019fe48d2071e108d1495649fdd04b5715176dd3ed4a3ea152e7c13c20246a8f8b8174e4a42277fbe622d17517b054435d458dee9ada4cc09db6df170b3661e808193fc44ac3079ea8b6b40a0418f94a3a42e276cb9c19034e0f9e123a18bbe966dfb713b0fc1b4ebd55c191927649c863fc6a5b6f4b3df7e47f039364dd902ef9e3ac6013388738e8e5b20c31ac31dd56a1bc69de9993329ea575d2386a6f93656051e6d7127e4ce484b8aac4e9e7917c7377c3ea34a043b90fa10e3e92d49ad4e3389978efb218c0667b356e40d3b87d59360d8468edabe393a6cc1ee4639f7725f37a429382c6ed1a575fa9f939c692a7e580dc88a8b89e8cabda3c3eebd4d066bc5cfcffefd461a7408ecb000f60d5f9983e58d18343d304f5811a24b711e1d96ee206471fa7dce9b5813e8973359edbda4a112ce6d5c7689e520c3420cc3fe8cbf078cf76500e55852448e70909d8d402f77b8e54eb32cc10ee1926858af6f217adf79a78bfca6ca74499f459ff53d595372a5eddf9bf7c20f92507f3325f81d9ee3151886236c17ebfaa973be10d465b0a725a9db4d379b0b4f9fd43344199221e00ab570f979aac4447b69bedc185b6b780c93a05b0d4812d19ea94491a99e21197dfce5d9428f55ac8dc6149167a1091bc2f299f091f8205638db002d4861d20525712bed0c59d541161c2c14dd4b5830f77a5b66a04839368dc188396b3326182c344f6686cb7d7e9c55b36d4e92da27325aeee5dcb8e14d6364f20e7810fc6d5cd6cc5ab71a2afceec612f48b66725c6cb9adc1f709b61886be411f03922dfc5e075b125cd030d844a11961f89da5f537ad3db0031f1dff7d1e9ced83c8248a549dc5424246b747897242edca0b942b4548aa6da048b53f0a82cb965338114e2079db27d9c645f5c8727838af407d0698ba23bce2ea052193a2bb6f6959e20980696ee60eb5bf169277370af681298d07dcaa3e61d5377c4b21eba647c6483cd266202c6bb7224304a6e376563b3218d3d2203fe8125861efab78c0fd850f50d220e5d6b824ab139a58b5307554b9c75f3da0467db26d39815243ccdd74b2ee1363a318310df61ad991b140125b607222eb3e02df82bfab03cf4902c4619241a685b4892196cc9793767977476a5d661f0e0c7bcc68e92dc0190af00c952b031112f7a26026de36894035d2159590f2950413f9094b291f88e04624c6e334e5a2fe0276be8ee20a26864b44eddbb9501191d370884c7a0a183c6be18d1a222b5935c3aca77cb92ded43c8e8d20dd7c1b8829181a8e9a95a020ead4ff0215cd82452fd0689800a1b4f34b81590952d9145c3802b6cc13fa40193f54ccd0d5727f44338b4d377cc1a0a024f83d9c12e0642e1133bae70c29069b4f2c98734eaf88c60464c2610a6d61f34f1a158d3579ff22739f3046b76da3d9b263413947fbad9923124bf8d5aad7c1196fc69b4450744d729d7c98e976e1248ff9a8c6a620eb67a210c00e42dc542e2214b177bb79eff4c0f7b73684daa629fe984a9fa5fc5d6b60ebd354416a9ff5fefe9f3ec5cd17869ebfdd34a8917be84c8bc480b135bdbd5ada8d3815dcb2ac9291c5647835ad58fb486582369ebf4b25b1416d430d6d019150a21e8252538b2b52aa866462ea7e1cf15f7712fcb113936d6458ab5880570750018ed9f7bd991a9de622296d0fd860e26225edb277766d7b06d02b17560012bfde59614999f41a2570281181fab95b25a55d6d07f26d1109519c456dd1ae512469189b71c84c62203bdec33c29796ec45da25ce5e7c6c9fe21a9c7fc7ef1ef97353fb17ad23a7a45ae7ce49980c45bb0a171629e67993d085c61f575ec98bfc5a6a829223c552ef241a41da36e68f916b15372b996721e90e7c45114204ac02876511879c7a996a61f6e219899002bf8c201899116754fcdbb7c75865578a324839aef76e20038c1333a85afbcb569d7799cad08b70892b292d7a8daabcf22870c8e66aee2acbfb455c1bcf72222165f11f3720414a932ba79cc4c274477268660ac77d9f259dd61a3187aa5e9bd5fb589d0e33404754b3524c25337bc9842c9cb1230e1898f34d62c84566aff494b1131b27e28956ccabfa167a5096d8ba3fa40db4012d3b2e7de2a2d828b3e49e11da8328dfa70742b7e2e5be4c4359afa7b9eba7db6748cbc857bb96b0abbb660b5d044032694d396cc0355a130a39f2e0cc275df3d237346dc5f9e28892d5b4f67fb83c61e9ef5935f319cbc32b3eaa2dff8fb8dca18220935802617078a89d724abf5f55daac80e0ef92f480b1dd2333e24ac668f1aa5edb7a5d2c62c30f6aa18d0b57ea62723a10c2544a536bd32660ad7cc1942844f6acf0737cbad1c24ff31174afd343d379364244c3ba6cc2e4d7e0925c12205919cc0629fd8b73b94807cd71b3da8c8539ede2558b39106d6360d0c8e38d7f7984b91409a69dd7a186b8f04164e07c101d389f8904b24fe281f085b8407c4d24f03e890d842fa205e63b31755e27ea84ee4d4159840620f2cb4854e8651ca8e8d1e89d6675051b9b988625e8902153208ce88abb7603402a8fb2d4cb7c846d4131a6db484a2a1bc32e80838e0e53831efaa8aeb8902a8a78508d201d1524d1e05aa0fb7fd26b3ede820a545fceb690dbf63477fe8bd6882d3b4b637802b8df0a2666264bed651c6245ea97127df8bf8c41fc99feb57244e8fefff4dc29a8245f8fe0508484755071cc86493404e56aaa59a2aea55060c5c6d4907f67aa52f89908c1e6249dd61c9acca1bbdbff084baf29452890b57de1ccf911f66346c5e57da5d7fa42540c3f3e9b62945e7fe5320acbb76a309fbeb426990fdd6f014083dde6f51647abe232bbb341b36347f3f6c991cc2ce1781a64d4feeace32609b6b1778fc4e6a0dac81e474f1868c686fe32010a754365ffbe78411fbec0e299516526760cf2902dd1f7732518ea714bb028d2c0828e58cb66a5a850bdd119da573948fb61e3f543e99c2cf3751ad435282c0004bf91c793c5f23ad4e13491d4b74d7d40611ed82a842b227c0d3cf8855b59a4cf262630b37c73ac09b6a8c2caba3b8a8085c04d50f94bc9acf3783895e0b474fc337916ab68d9f81462bb1c25aed8326722db99ba492414069df1d309e9488b9ac86549800fc1ad0e85cadfda09ccf85544050195ae87b63d9006d0eeedbba236abb7a8b8aa2a1dd22df0a2d9c1d0ab1992ddffc58c9ea0251c78a58409c692dc0910e096b96204b4cd20099ef52dbfa89cf6b26956d3724d9633c05de8a1e931ad39cc8ee186b165c49d49d5421bb7be1c1f65e077f29b37544c957ea0c3e8c37bdfd1e68affe7c74a9ac99c4b943573365dd39bb8c4260d923c9336258ebdb315fcdde70e4bb0ab762b6614014cc7de0d00c3a2fe4af57b8db90d833c25c2f0f9e512b80f53c053b28117c0c3870962d221c871ea0acf7205a90d0ff48cba2ab72c43688903a5c692dfbd210e82ba93320cc1e88459722d07a171e847720db4759288ded448727dd31cbb95e32741d0c648b831601bdd1237a6716fcaa22c74e8da2d3c1646cd7d27b2319360f74d07311d0fc5f2ccf0936e4dd051db78a29e74645fdd70b9c46866620fce6f8a26b564081a38b22f50b16419cd27ea0d816f4bda04ce73698307fafe91cb1a29fd1158d18fd22d80d176fdbd0983326a45802caab99575d4014daa803d62fa695b329849a279edd618819a97d108601b7190305d73e2e27f6b59f63a22e1b2e6aaf4e81db014807a271485d7b0466fe099467f7ca0a969b5623e0812b0648a39a90da0a6d56df9e1e1f714bec4ab2a59452262965fe051b052705f25ae1749b4d380d79326cedafa66f8fb6fbeab8b36fd309cebb3d2cd0bd816ddf9e99cab028f3fab61ea3dca28f821ca0dd7c3ad1e789be2ddb7e637b7ec6d2e3c4f8de9007646bdd957b7a1eeb996daac9ce63b7e7f6dc9e3de3c424978d7d9a035c7c2dd991147338b0eeee9d47bf769476f844c3f42ec63ddda3a4de326ba0e544f1c5a694d229335014a902064272e8810e4e44ea639e7b1d8e1093ba7184914c90191553044a72e081d6c0e4052fd6476683b83029220f91a207af1e5e3b4db025f087202220024f0d50dcd0249b7eea868ccccc6b0708db0a8d8a0cb0a0b076e0818a123418827a7521401c81c488111f864421440c2ce0c510f00813ac08822c880b902047074b00e1459322201198ffe2b352b20229a418394204122a58470481c4942045a8020816f885c19960e011ab000f18625238b14361ee6d81dd21c5894fc91261a5d91d3e96f8bc5c58e8234926c1c0235681989423229710d4c4c007430022042ad0d981af8008292d500b0c1bcb0604882645502145117c80022c5c0551a0b8c0b3e77bef3dc1be57b35b5db1aeb9166adabdf4ded1be33359a666bcd35df7befbd2f9c6bee5e2bcf14d0bdeeeed6b57b35aa59961ab2eeeed935d7424ddb4099e7de7bef950282bcdd7bafdf4a7db86c06ca45eef5a2eeb8301061dffbf8de177c870fad6a55cb5af6aa390bf6f1813006cd352dac8e4e870bae695e5da6c6352de7ebb7d2aa8da0c5561d2ef028c0054df37befac62df24344dcb5abe57ab9ab5f7de7bef75cf5a76cdab7577ff4c71d95aebbd93065ace42eebd95f2608b05a94e1f1f0863c0d6bd5218b4fbb9f8de7b9fe27b3ffa054cb105551f219d272849b250627b3176011ca470440e3c2481081f84b0c053205397d010504a290e015d628b999a0228016efa2d25fa4f3f156efa37644679dbd10923b870e2881a2e120cd0a00630881f74a0928302cf2109244908415af283cc088a912c13faa498c088203a14998d60898e124050233323f332d408a529d4600958f4a8608a276637f4072396308267a6a600358480846847275192e0d2e4882e8650028a2345dc072236b85010844f064e2849c1111fb44a37221208c328b01d848425702332a85aadb556ad0130191742862882c8114ea06db6d2aa713eeb4c4da5557bf14915e082a655ad565a3507d1e915e071adb556ab9a4cd59c564bc45a6b2dd534ac554dd36cb5d7b509e3d1de358d5a1b96d4dad23c88011638d881a5640626780d5177d4209c04e104aa23da5f1c86b029a5796547275f0ae615f4084f30f1c4131a5a32150441a02801143ecc0001b2e0091436b87670434b30059553be885450ca03a57a0817e4a0bd5603b5f124891f4c27df0d9b6547273d28610551c6c4143444d1031d9260f1e53065b0e77320e7210113223a599c00882c7a28226ba061ea707d08b1d5e9444e3448f244ca0d35d0a2861b4b82295a59e8605b90b5d6da2c78b6ede8932c9adc10066ba5d081ecfabd97be8f1b6217259872c50b8818828b2245b480c5a0c8a559f8b059bbaa22930511ceda991aafd6d6f02ae1855e29a680fc3aa15a3461ddd2ebb14a73602da59688b5d65abb23022fc05e70eaeeb55eaa4db1b9bb5b6badb5d6a953c7d85a6badb596c617dcc7142d98b3240426425842430a215bd8800b2957f4dc30050f4eaceb3841a59208949c3a279e77ce110c11591cae5500c55eaab1e7a76a742cd9f335dad1c90e5decd08e4e7620c2f664620c8345f440073e30c28b227e0083115c213ab038c20a1f9ad460881cf80e4b342184d21a991999979944e810214df0a00a16e4a0c40dd561b5040933a9989fa929c013213bdc60e2b04169c1671a464c10516514a5ca2b4a1364c0e0073c78e2c4ac0916de5a61089d1a78e14ac209cb73d07640526405ac1e2a663bd80207135e4c101141018916123f5c214d10317b4862f6e084125764193b3aa1c40bb6684727947041d18485841c1c79a208112e3eda261ca69452fae4a5834d73ce1f4a29a54f9a10c1a6a0238ab81f43daf1850509b6f732974a11a37984086eb8e1862623f062ca153f10e1851443603b62cf1128a53e5a688e6b843a0e9b52fab9f6daebc329a594d24b31c5f7628cf1bdf7de7b039a4692a9ca1f928b0b8986cb057cd1ddbd9709ac7d344d1b695fe5ecf9a69293964cd524b94c2e268c7194a82552ca0eb5a4f3bb91462452cf9e2418e9b5e7bfe82aab3d61482e940be51262f46444fae931e17c64e3a341d23492d0709940d3cecce1d9f8f60493985cf34d4b6c7cd1269a40928906d8ed4c14cf9e2e9f711cb5b327c9dddddddde549daebe1825ae223b95f3ad69edfd20dd9f34d5d6b4f54933d512e574d536ccff930dae472d5ecd9f3574cb03db9d79ed3c4b3e7973a138872997e50ef4ce04c4d926be6c03f9fb484b4336980345c2eba4b3253f333226dee8ad1e6e55d3aaf87873b77e00f9cdc2eef75e07671d17293465a8ea0f932ca2fd947ae5b5c74dc1d38bb24dd8ecbd78f3a268d6e67cffb18844322b5c49677d151866f9348efda73590ba1edf2f21ecae5a2e57647d100f7dc2e9d09b4f199401b5f76d7f85f4ca027c3b77bb8c6efa2a3e7dd34b5f624b9a6fb672d5a0d87f2cbe9d3a74f9feeeeee3e7d3a3753d35158d16b733091638cb712dbf333f52abfd27d3512edadbea00ea554476b6dad55de7b2fb65889fcf7fb19639c573927b3e2c59ad5384dc320fc59cafbd6d2ef097eab7bd02fb445c431ff7ed7c84ccd248856338717da62cf904a683673549939bcd016d1264e21b87c3f83706e8c71565fc7f419133ed331bdbb9fabe66f3cc042e13572bffb85b33ddf5efc2bd7f106577aadd571635bbfab91f80a349be0bc5528f49f0ef32eaf5cc54328c45adbf45aacf1a658df4dafc548ea5b9d736897f30c382f14aef6fc5018b220f74669f529edc5f19337d08a85e921c7188f4567cfcf334729ada633e5d47ecd9f4f973fd2809372cffa9e0c2d3b9fb268da4797792c7b520f93e02a0bf50a1bd8cf2d6c5bfefd4116dbbb3f60c29e1f65978dc0792257f6442e9c5f7bfeed228bceed4225b7f8335e20d762adc4185de6a1cfa0b4b8bcc7d97c3e7e1e69bc9990524aaa735f378a48e7e5342bdef5cf235d29a5946e13cccc552b304e5b74b69bb5201ceeb51bed7394534a17974c477a6e4de728c1e0f64c3aa6cfd4dafedade8c170f30259899c3ccea36d277b768cda361b486b94af7e8d8f6d73d2bb0ed3142171d23d4f4276f39e791d459c1f627cd70d171a6beeda1c0183357f9b3e895afc55a8181d133186fb2b7f7b6adbbd5cce1f8f386473f4138a3cf4cb0d6335da55b99ac49f499fb0cc2e1b6193da0193d21100884d30304dbfe2eef514aa9a4944a4a5bde457b3d66d8606f23edbbe5dbfe269591ed4fd2d9fe302ad05b89025365aa1c66e62f98d976c9f7863e33603e20cd068e934f38fa52b7fcfc80ebc2985c58b7d25566441171f84bad6742e8d98c28449ca8ce8822dac490a667bc3ccafe41691723a4a450e87e088473f16fdb48dbeda291bcfca0db9bf18ab21d25d2d9fe261d83ca4ca15cdb7f05dcfe241d6384acedbff26a6d7f1d0ef5adbcf614828b11ce141e024c15d36ac6cb695ede6384fba58b01337be2077591f6807943eaf4cb55fe9b110e663603ca54c9972f6a791108a7e565686d170fb3a03d3c9c019ba1671187cf78cd382fc68cd7f647ad660e4fcfb6875462cc625491edd7b318b01ca367bbcb3c9899b7c1cc9c467bf76066d1e9afe8e8f433a85a100ee5e7441a89f6d9e5a1ce451f945d50f6d679d906db3feb8fa6a3abb08ed26e14471c4ebf4d69b4c1db69a7a240e60c13089e4102b117051d30f58d81fa5ead8e611681ab3db62ba514d93eb6548b91c61835102ce50eb2cf724bc96e39a7dbc079188473bd6701766b367018e7d044c2b5a504f5d8b4e03c1ca3c76519610a2d2b3129bcacd472d22119bdf272552a47661260b27c2d9edbf3c24e235ab5b47ce6e282e9ea350b800bcb8d00a4c23f9542db4983b8f76e28c2a1453aae9ab09e1b5a748216e109b2421ecabf3dd106f5f36f485733c7e9e7d39c994355e3e7d32119a55b881b850a1de16a3cea559fd2353e936a7c04e1d490fba4e546e916900b71d7e854dac69f74dc2b9fd2a29c999a5f63e5558aa150ddfcc8eda4b7fd1a498c3c9da2ab4e3a6f91cf5c87ae4aa1103e696d3b69bc65d093be5bc6a35ea3fea4eda63a47098d6e0333ac368db7c1c76a653abd8ccf30201c19bb3bbd742edb49d71da3ef8eabe603405f1e57753a47c49a04986f838f2e748355721a9f75c179dce9ff24236daf91c400bd9777443953355f6bfac9d0a2d54ccdcb136d50b8099cc7e110ade8ce2fdb493bd53e73d5fc4ed395ab5ecb4c2f5599be721afaf39457aea2a2d50dd6a97b9fcd1c72b76cb9f92c54da4e7ac26c272d4f3aeed74862bc0c8dd25ea50ae7d108433b9df4e76168ed4d3e4b797467cf278956de739cf664b6275acd682bb53d9fcde8901f74c3347061bb5ebc23a8c608a20eb33350203e839c2101e4a04a9f520a968207cbe4365332594fe642fc8387b74cd69365b20f6f30427ac39eefc1d85326b34bc864a12d967097406fc832518f4cd693b38c8587869ce3c729a5944ce664e24e299318e79c33ce18638c31c6285f7631e2582141b8a71537767b2ecc5538b3990c87ab1b52d268ef61cfde0d3af747e728f1d7f17215bbaf46427f50cac2d83a0e354dab9f9c7369737c1fe728911fe46fbcca24c0b6f90cbb57f1d94c4df199df9c73ce79038140dbb6b1664cccf007e48eefbd1a07af5c672ab324acf02adac44fe8ba5bcd6af8d36d5364176fac50b41e5a85567bde1ed4abcc4258c776399c82759c86d22e873091cc63aeefc64e83571e96a218a36c61db483e8f57af3d1fd623f16adb5e0e757218e61054c467b24c05a747088483effd2aaeeee1b23ccb54b04ec4317318729e48b627d6d9f3af16a188cacce1611d7c299d2ce10c13c8ac3acc31c6fbd69ef5ef0c38f972eb3c25701ee6d9f6314fb4c952bb30096a41db55d62aa5acf473f2a92016f0ae2f719512d78a3dccd3f201d70a0d624f8fd321881e74d8d3db5d0bc805e79578c03dbfc48379228e89795ac0fa2d5c448e319e286c2995b88ddb5a309672c35c4c2af5a73fc594e6c4d41da7526b67142ef688d24a29a5941284633fd77a65f49047b1d6653bb8ab65f6cd32e1e4f638007abe84e2baedbeab4983595cab6658e6c92f2877a7ee2b8bf57c2f5814bab1161971ac7394dcbfb1ab33692ecf9ef7e5dab1f156fffc6159db5d906bb985e0f297bf18638c36c66863f4cc431e32531a68c72be6b735e59456c88f0ed52286643b423157cd2133b732abeabb3d67ffa03bb334faeda0aced614aa9b3eebd2ed2712dfadc378a7dc665d156b56faf65bec5b8d6c984b3afc3ed857d4038a21eb4e81319112181f344a027ea614f3089c8255a42453d50eeeeec595ad9a896b15e1af238b0453c769ef00a77062e6cc7ff806be7bfdab34cb85b738781fb567adb96d1e6e4690e62e1dec7f8931fe7eec2228efc3a26a6c27917b6f39bf24b100ba71d3ac2cd8ffe21772585b38b1c633c14567b7ec47bf42005a98dcf55f3a5c5548221b96c7c4ed375363ebca98dcf043231bb1da7b93e279d3ea3c498c5a88262b90a357f827b4e2826d0dd1f306f4c1d6ab519e13cd40ce5224d4d8696873a1eba74609764aae6e748a9c3084d49664a162b69181ed37c41b99c068677309ea8b5d691ae9ab5d67a25914825f797f756a2a0b4ad562be4c10384e38079739f8737638487d35cd06fef4956688241f6f41c1980f933b273d64c4dce8a5941fcf33d47ae106300b4883baf0ee97ec8edd5d59e397bfe16d2f4e54f500b13848304c7fc111300fda79b010604e4cde7e5cda7636d37a067d19b9ccf07c137db5f2d6f24e8057a03ea82d820baf9fcbc99de0c9b9631050d67c7a756ad8b13a78246803567a6266b7b57bf158f7923410d00b23b50da319436dd1b885f6c09a4863b02a05a4b04ebda13075c2b46a79dbf8e695b9b62c9715e893e0f9f3dbc850347755cc7017e533baaddc0c9184e06e0d780b7366769eb468906bcb5e94c451a8fe0ac8bbe288bb258319ff9cc6702f818e6aef522c1c95d2ded24d732bf34ddbf3eed7240697d4aa90f1cad3a66aaa6a54f29b5dccf54107b29b5d74e3ba723c932f82ae66cd923860231114b39a9d31e31b38b3e440e11f156cfd49149d72c4484f3f09e61ce2a70222a25de6a0012b33509fa18e816bd273db025f759d71d3ac2712f1ff4b9827040202eee1148d39da7dfaae7e6f26f9ff148c46dd9725a24fa951ffda67fc4c0ed4d03e18c467283749c97cb9c8e31a43d80370fc08c57d3765310cee7ebebf08fc6af2d20262626e496096eb1c540b87f1f53edc56043473e5fb5fcc8fb11b4804d03dba6d656ed3e7d0ec1dedae10141100441d0874c98927dac2672de02c39adb0382200882a08fc8d5d4c8d4f48061cdb4139cae1d9e17ecfbbeeffb3e10044110047d805e6593d59adff77ddff77d320682200882a0ec932ebcc3f1945e0f4bf5c8c4beeffbbeef93b1584cba3e199be115c72ab562fcbeeffbbe6ff6c98429d9c74a3d1c0cc7d784c16018735c49c64ee1f2842af8f18d01d9db7f3e5c027a525ec50920aa437b6aabbeeccaee484fea80ae590ca547980d4b24981596970b8aee0ca7f3f0a658015d023a8f4b219ea0e33435dcee3caea4a3f34a8f80cefb037406e87a9cc647c9a6f34aaf42e77d4de7a5683ad0552fa79118735c69a6f34a3f80cefb94003a2f95428731874217b32ba7999fdd719a099b3f6385633a0f7300e83caef4baf3fe657436bca0d3b80caaf36452313a2ff5a7cefb12d7d2e197cec31c572a3d4ce77d2a55ea583b7f1e6979435b4e9313e46f94bcbc921f2c2b3f9fe2309f8620ae509a459b969f8dfe4593be453ecce70bc28181a9750526ca05572d9aee9791872c24198b6f925e893315f7c4518abb65a459481d12974ec7bca1ac186dcd1e57e5d731ab88935b76354e4331e66a746aa84e0dc61c572a3ded8921e834b5d5025b600b6c812db05531e6ea4bc6ea4bc6ea4bc6ea6bcfcf69eccaae3e8c39ae54fa4fedec39594e63c32b23934afd974a1c6743d6062f7841e7b9a0f35cd0792ee83ca21bebd9f3edc65f705e6dedf9225d459aee6c91f68dbfe0447a6efc05375f6efc05e771170ce50d7f66284b0394b5eba52c99795545c80006a3f3806c180feae0a05fcc7b1e3be13d9f01e03d97ddf847e9f764f67c4f6e195ee965e7e1bf9f4f1ac6ce723b69138539e9d23e9d34a90bedd2c549b7ec8c37ad737ca709f0284df327e802fc49b36c1c5a8903e40d0a394a50a71b863716a3e54d013465f9ec8661ceb47bd6bccdaba0c2cf9a1a156a6c4035358ab6e9a30d35b9114cab68d345b45121ae60f3f3bdcaccb1c20a3a461b97b2e5ab30842dbfc6971073d4682974e53472166f00a06f68943e9d1ef5349f43201c9aae86a3d172bf96db85b84f1d4a23a17fd23908a0e92a76d22b2fd445419fd1165d51564b4bc985948c0c0c8c4acffc4e4ad778d3cce711086766469477c21d8f1272db498f06b0c20de0a4b91b5335493a9fabe6ca55786565dbe84c0a806524809316bd60a29ca9027d01981aa8c40d38e534ebd0900000002008e316000020100807c482599225311ecbe90114000d639446705e3e0f0723d21405511cc420c410430c01c0104308418829466404005e4bb3dfa846327b7419700a75911989a67a46c557b607727af801e310989c33f133b2874e945405e5622e30792a75f00ac33f920014a32057a5a83d1b9ab697348a07b077d0603bdf374c9b62e9c4a895f363ac6afa9b1c6207c6f5d3bc6e1cf83f77479b48fbe4e119c4b4b04c338660b6d6a5ae5b79af837d161754886804cca22a5f2c00ddc4f6a838efd6d5bc0ba7bef4abb88191270fd79dc8792e87207f6cc7d118166f511c0b210c96bc740d1d0350837f7602dc2f5f32b5bde291a1f3390bd90f24d8f16472e0634db31c79e7df350ad03190da8e27ae5aa163a61d7e30750e215e468470f46a2464787e0000c0095de96a7c8414e698299ad18454ec24423022ee133afde6de85d000513a825c248d482bbce412ffcc6ea7b129072c634a4442f54d09b512b20052e44cd9d24c1011a9495a9a5aad134c40ff389351e560a344a068bbefba5ce8d806da429237aa4b9fec0a1fb36aa8744c8ad512fdc5a082fd20a143ee1dc2b8e0e4020688ea735ca8ae6e21aaa6dced89a3a4c8c3bb1194e5eaa90f26e7ef30de0f31cdc1fa61d91d532ecdcbfc03823e6f0d2e7210000e3dc169cc3812e17d422d58452d16368d3da2e246bdc984596afb3a22d872eab92e08e95cbe74172a37a32cd711430e82bd957270a0bfe7ed6373ff9a332fedb519216d222efd30fe34de2a6386fb3003fd86b828c2a9e131423b4149aac9eceb90770e6e8b8ff10dfac3d6552b7ed9c047fec9150708d07edcaaae0cb672d0e952f9014cf0c0c980f9d274700690cafded14d5923d0f244702921eb2fef0442157391162dde8fc91dd52452e7304baf323a5a3fbdb88e537c6245a1017406b4c690f0d108e3c05ea6c1c059edd832285acd2e85066c19a6c4ec93069966a5428aca67f9f574c6e45e44b7a713a01bc69824a0d42e9bc39bb35e2b7d6387428686f04068c5d4fed99c509c2b523e50206e7400f410ecbf25f585e04c98f9f9243448b7677d0339de9cf0461142e4802a9917882249b09b20c4bc71c2836c6239d2ce30e83dad93b1ba085cd24e53295b94993e8e230093a69efdab41d95b8cdc458d12bed6b15ada1f392c3388dbb7cd168aa2440c0c003d47cfb22b6a7db3c50341bf9a313a6d6b0e22dc224a4cbf0e81d9892e2e45f5d3ba9942286496d5e467dac7627b3a240415c4ed410c9ba388e10ae5c95403036b8bc7cc5a83fb3b5e4ca39548f8703e757ebb521c95ae97fa3af12f219388983958a359607f176eb0b6556ce574ca01399dc06882588184c84983390fa9f533de6e02e6f8eade0501d77d287f6cbd370a60ab6ff0fac2b64abec6a85258d38cc1dd06c4b8f2706bbb8467edb004c99706e75df9719adf6a3825f0c081fa1612368094554a6a30fe037582b739dd9266a33a649c128391976cb38b3b14c1334e53d0e26140a911a6fa44ecabc0b6973793732c4eb8b7a6b0c593ff2a6ec6e0eca48990e9e25ed8321a25aa63b2b6cb20012fb0db2ee4e3f834f08ca2df5490275d98e02c48d63df678df157b753c62d8ad0c12044b9ddfb6b9a08a1dd2219de0ad8081df0cf10c5b3392a00c1258178a4c42f816687de91c3b33df7e90a40f468480a92869033b7692805cb20860aa4a361e93c349ab256222626c954a9b3be851393acec3900fe8daa0b49890ba31c1aa304ffd703656448f309940956a69864b1eba9d40b98301f6e4397851b3e799cf84d69da3785fa57efd3e78e49961e8b75a9c4481765501ae832ac5cd832b07666ccfc9aeeb26dd6c92c25007f6071341d032fcb50f01ff82dc8466c55176eeff7cfa652ed1f7a0e5a9f2447c1c481a9341e3950c5ec1a3d29888d92d40094c53ae10c728a0ab1a585f5c0781adfc1d7b647834a14b09804612012c51eb2b8446140408226b9a84c0f44e9831623045e2678ac320183c01805f8c2921080726ecf61befac94bbf4101ba884118b49c8f2309b12c054b491a205362acb606eb1183d2e036f0f521aab0e673441e1a8a8ffd839df765424044808a221474a0134a1ddce66491f8a680aacc8b9883227468aecc331a74024710478f368c06d8a2c1f5c0ccd1068605026a33c470a84001fc392a0c1eace80376933d8a16ace84076931864d8c312d25427c410181310f42a0b31047904ca82800e0ca1d907f4adf0ce4eb0b10c47d8e589642339b2f3ae6fb6d809eb17bdaa0ac1314a15133b52501807134d5bcbc3791b43f34a789ff8a81d93b0fe23ea23c577fdc7c31f4d917fd9a1c314025b3524a446e0e1aa04188165804227eca38df18f36fd75b97cdf63eb07c7989b1ef678c0a3810f0871b4f87af30b6c7b1e86e4d5a39e1478224985c7f45be2dd8a151eb170a57b44584778dae092fae02775090dd08ee5903d10c5c76e86bc9eac38dfa030af20a287aae5b05f5e928d0e7b38c08bb42fe021d5baa02b41b305b686900db505169e4547e494065a3468a474a650a0484f0920967234ecc932a536097c87512ab3764008bbb079c00a4d8bc53e78758402c07372e0f1c217924622e1637d2dbc85b6c118080370592dabc0bf6bacdcdbbfc81373ffbe0302f6f4d9c1800a69d86d852a61f9455af76d5857d8cd496e8b7ed47c61a861233028d2d2b2e8a73ff76518c5737c391b5be653b6ae08a09243e689f3d80c9515828642cd852710c2b0080864a2e8a253271d5a6b2455ac48f756a7e365e5493fcb6ddad03e402a0116fede44c4f86841e5e733d89b743c0584296b85229296375ef0d84a762bbc369c51f7f739a352263114fee6046711204c2856b4c314e9f13fe24348f8394295794250899d08df80c4be35051001f65c393913b1399b50a0371859cbefc17bf359b2e421e2e49d8d38f9bc586113c9254595966a65c39b158fc5e16da9ef866067b0a9c2f186e0e55f6fc29334056b2b8833aacd934416762cb6833ed39d353cee5ce6fbb3c237046376a544f307c931d30ba42024b7a16a73e273d7a94ca6af53fb4f3a3305d8939faaa18d1179639a82f31d48069f8d5647650da50d83018c95c37b00a4652bc39999a4d4e80dc13e5e42c60c5d6cdb1af2de771a21e02e1b404903498fe7478e74da753d5cac362b73dd680595d4d99d9fec589823fef85547e652d3838a89487e7593543904876e5d941939ae38aca6a854662a03a46db91fc2795f9e7cc8891a202a26c15ec4a14350f74f6f11f340b7a972b0d0807e545bbb01d511f823a953f40f86b2b204af0c1fe804e29ddb6f13488391d23ce51b85b4ba253fb06201797a4d0a1b9933f56695b0d6e85f94a03f02b7e5d1cb9b4104de070ce65b219db80135d01f7800c402fe436a8469be9e8c82fe4eb51cb8eaa8c9a2830ec1c9ce924da2d4e689925678f017a141a92c94f731096857616dce3a410ea08ff3d70c9b37cbed587c3d3ed9c36b44e6ff673150d26edd9511dad34db83fcbf95365022674bf9294012091d545d2f9ab173438b08c6e17534adeb7bcbd7aa6a0c7f9bb37f29b99e7d89945e3738d11650339bff025a759dfc9e2daf8b4c04072a1834f890f6cc460343199c432a3ddf2813595f53bb17fdedeae2612ffeb034c8960ae526e1176f97f373bb6a670fbd9f767c744329889c073e2d0c5f306cc68e1f386fb91f1b39b7bd12298995285805962f06ab4a592cbab0d2c83a0de7e5a27f114bf05bbff504d0fbcf364035bfe9b9ad0919ef84c9b4c1fd93976188cb927f2e09fefaa8b071f1a78f9ffcd821553052656a08b67fa94415a5eb6c1691b8ff927aed5fbda85fa47137d9f5dba76a570c502228f2efb922c1f6f4ddbc824062bd336abeb6d5cc6349c4bec2cc4107667644b8d044b9beec77b3c01df38cdb74edb16a7c9023a12afc6684491c66964c519e24ce0c498cfe544fb29e87ad4f358f18fed43060c1b3d1f8291cf0751f389d52e63dc7ebe95ab95b168e33563635b3b349263928b346a9aa2bde2010150b0f231e42063466ecae213942f29659187d345f81e23154315c5b4129f19860c01fcbfe318562a3d3592750cf1aa2730b992ab0b2f42501de1d76fd479d0a6cd20c30708bd9d1bc18bc6d25e444d43f0fecb6c3a71671654363995991f51d798835e26240ef7ee1b1efadb31002df56b06645d2c61165625bd65150b6ee40cb330b3f6c801de4b85da3428cd6df1583c0e656ee84a01663b9d95d97e5494598c88bf02927e40ec744d1131fd10404d1df5d6f95e4defa800ad60155b4c8a2218b1a0303683bd1de2b8fe14e27fa52c27afbb55e05d9a6c28a2533e838f20be7d11fb6f3ccfd8c27062c41e283a7e40c1037353fdba2363423fc36990cf494c4136505be7a098bd8e915e9133e4d56f3a0d3a8443e1f9e0ad6253a0f69a4b1284f4badb7f03c8fec42b8c0ad169da6bd2796c76fffdfc0b34a1f08da7affa0e8e3a057d54ceacd65c7696763bf5cc0463767d147f2f3553fad6c5e3b0ae11ad04bfb5aaee7e5797bf7f4e47da422696ea3e26fc6691207a642353c8ec2392baf2cb3131ff9ec4f16abb38d72fef6a4658ad474ea764f6841a0b1b67161bfcb59b011c29be70575dd831b874ea3db9b03d292b8018707ce0b085ebcc7d36234c624094990c2f18b95b123cd028f4e9b49b8918d758c800e11e26691434aedfa4198e89e3f623ce2a15dc2d0e9470f2e09f1f00abf929e05ac0dd05957d1d007095fddc3538b5e990a922fe06b776178b787f4456525cd741581ca796a1340f0c517e4631f697b1f542a43d12314ead0ee81169a8d2b58b263ba955dc25ec6e6fdbe5afb9ef851546710326477a4721d54163c1686256866d95fcf65c03f5991212d37890d122326dba2c136c1eec82e0a0528bea01e30fb4a0bb3e838a42222a95748a4614830b47564033a97947f975224c151fdee398cae6ae6b124ef7f516a21a7dfbc86123e582d9696a70d8770af392482124cc82702d96c66ca0ca6a56c2ad41f8567df25a96b60e4a940cc4e78da5252ceaf4a3001c2c07247cbdbdafc6f879020121bd6db0da514016b0f40862d182612997c2cd355b61e990cfdd5e5b79ba22f37e1d0e7cade6ca5c9567721f192213565f50e818d123fc83599c76e09164761cfcd7f574c93409de81b7e7bc7163fd23f36cfe05f327b2ee57721d7ebf24be50d227d75a8001edc599d1ef3a273fc12f566900e7091f84a18d01f7fc5b181d227b4272057e083d2bfe74420843eb20a8a4477a081517004957161b7d6b3102447bc54f8b19305636edb3bd1bf39f52a856f39f6a1841ee08583866ab85d68beccae23d78e08d48acf9029d09202a71780b0982917d42413aaf88b034b69b67a031799069c0f453a07479ca5adcb043eaa33c83c0c0f164c3be1bb0fc0469b53c6904c8d2386ca1c7a22c1c84868bba4e5ea95c990dd1f0f3bdf5fd0a7df4b2ac38e67c9474c8429884ee973505fb358e99c00e12537108ac0413691813fe10a3fe2759d6ba8caf593f15e763692bb5b88cea29aadaf5ccfe2b9362e51550a05b03562b71dd0d04d761f1dca9579d748bf90637356919f72e0896f2318f0dcc53c0ac8a06c46adc33501b6b608d55e2b0061f5bbdd14e30dee541c96f11fd3d39785a8631101c86c8ab6f48cd7496715214d40fb2d7460d6260c2ba7bc8308d17458d8d792d172f80f5ac1d69f7457edd76d8fbe2589d8d7493ee45e04ad614b0cfa1cb914b3f8a56f69d83fa21742f17e2247850291b9878f48494ef5462b8fa221618c3ab4319654aef3985ff534bf48bbba76143450a80bc60df27437a1509d1ad0bda222baab24d86b82b76a15fa9790e5d133d6efeff6f79b9b00c881927ff237d0c7420e882e07146504b06741767377e40d8ae4b4f6c58e5228a7ae38815416518d75726ac8a33b49c8c3a061afec885cab66e6b2919c55e059ff662482d3f0e2a9519bcce368ab737f416d470abf00562cddfdfd8fc4c247df689caffbe85c7b407407d5855e382259b26134d4bd76f11fbad8a0314133eefea9378874c7e453c502c4134c60fc93905dbf6c4a7695168acac1ae50a5e38041753ebf7c703f01ba2e8e7abb63baccb2a130fa0185a63588dce9686738d29f23e470be03002127a2ac85f7800febb3d4bedc798965d62bf9a75ef4fa022d0744bbe2c3807c8160293c0c20541f3b524c54996e998cb7641b91894b79a93e0231ad670c3afbb72fcaf4c1fcdc01a722c8f04d60cb0bef605127a311991ff14217d5ee88356c5df957256b0008172efdcff8e59059bfc78c6867638b28e339682f68428f2e9b3764cff6629dc140215931e37ef290c2998281db72902a0ae2c02a8450ef8a5c1166c38706e00166a91d7944ff4c5e4d3ae30598414a53c507a6fe28138953716f3344a7685d6fa9f9bce384c67ade98c362da078c45203be83d5124331b2db9756fcd2035d81f00466690ea1158af073bc792eb1cdc10dbeced6a21ea47b5c2b847eac75c71f6761a6e8e00815379356a26ef6f4c86f1e373ba9cfc7f9ff57aea8a1c78a970c2e721a92a87867f321013bbf055eca825111379257e2260cc354c1328f0a42d8249133550b5a543b98c6696520b61ea772609abfc3806264f72ea2bc319018c366298335173c126aa2ea661219814720169422ffe65f4871e2996422e332fd1f896b1fba0b85d2986c79d80b6cb93307c728e2a334f664f67229e74e5327c83726effb7611bf318216cd70752c361c3b37101f90368a0dca88703f07e00d88377bcaedf17a7e92b1c2122e8df526e0bc525b04bd1bb1857f314bf4412d5996df3cffb24ba6a65fa29a83ebe1124c5e56f56a61ae85f5db368d523689ae9d5aa431854e8e54b149bb0cbf76793c67b97fd1ed8809323c77655966340adbac0c67b3cdbfded4bfc298e6e66085b78035ce0d6d198e24f608e8220d58637ab12c7a048b1e71888b0f71a9f2721b8cf42a3523e42a6389d0a13516f6502be2ef597aad0f5655692807904e6658702e76d16286227b73c842de69bcdce2e55bb9699df76e8f220c808edeb4e8ecf7f2f2449cb787b5afdd1299f47760c77215a6c468e5a8b3f82e1b57dcde9d63b39116882ce1f1a5e1f3047f1b9adf8bc1ff5fea6d312104fcbcf48c65fab3a4e351e0eceaa1f48f54afb72e8d9ca0f79815b147df55bef461f2d631bd627a519476ed4959ac4f8b8bf4b8807d52e5f951ad97423c83d96de92f935ea0c11f635c3a9b319129833a2611173203e61b2e4ec2b6fc713abd659e7ef5d8fbeaffbbcf8f11d2e6e8080b27ae0933539161ee4470133e0c5c528c662cd813ed05711466a09ac7099139c1bfa585b5c79cc0f2311741a2df1309b739fdf153df2da9491db8942e399be0b81e4e7e34b0bef976d14420cd0317a74cdba0e0856ea94d61bd0c2a9cf9b57db1b1cf4d49cdd986dfcb5461092ec65a888a1c964b502094acb12cddf77dfdda74c52d2b1f62297ab96129b751afb9f5dd8dc2764bafd2fe510dac7c2358fc6bb2321ee8cd7830a6e6a5f95af39a5fc707c68e6e5bf3db678a77569f370faada7f5d700e6e9e92b994773b80ce139387796b582c7b507e87425c555ae710d41ec2fb4d3ce6fba7b4b55b436f3da3db8006ffb1c7e4185cbeacb989768cf19faf8a608ec9862f43c1bd50a45caeb90e35489c397f412c169c536847596f8570b0004c906fae4fa9909463c1d9e11813977ff43506616f3ddeccc1788b191f8e0ebc839560d6f494c4f7e208cb91c2a2f9473f0cecd2090454f0654cf4000b8b0569528c76761d16fe0a22a23b04e7a46aa4444888d1e3173c1fa15798739f4fb991d3cf5e3d214982e47dad6e618d36125ebe5d33d9b7204a43cc5067155f0d4a61add6718790aecc12b666e3c36b7215207cef718f51594def81668c543ca61da0634120640db266e0da57b203f70d9b557c039e16b001157bb04de8cbc515672ea94854c8e0a77c94eab1c852e99ec424377daf367ab76e44b8e9c330e86da3965cf067bc5b816b426ade5c3c732bcae816e36684c36b55d24389831122e3b91637a04592b3ce590abe1efcbdb95b576e6f0bfd3437eacd17480b8c2d0aa356777a6b2f43d9c44c008b0f6a9a4c767b83faca48bbe53c87c95df632e16b2ed95854322c7470153650f3b23cca2b7fd095c1964d4ae1b570a837547d006bddb77b83cb63e0219729cbe5946cdd5516969dbccef305b8f962643866ec89c690ac099a29e2c90335782418e5f94dc6edf87b4d28d127f584ddf7c29df142f14cad692aa975bab633ac4428d5235003944665ae914d31b8d210ae0c35b7f25fe075cb4b07ab3b002da53317a0754b57ab2e2a05c431642832ccc4191c0fab17567ef1b20af59b6ebae3a89814752804c60ed5df41839a97822c6d4c675f6783b850b8053af2997d3aa5e01383978e364fcc6985f26c593b5a1f3a9b74324635e7fe74231a362c8268096831e3acea047bb98205514df97d0731e356521bb9458582e044d7504c312e1faa72eb17472b9680f783386b68be3b61f79faee2e38fd6a328e1d2f7821505b8dd14db0495fa5c02e6e86791ed3076579f126add3c6f02bc44c59af7664c953ee7169f7432c5cd56dd53132be59b63c97726cf1e3f501904e7745cbbf3a266a4e5ab523c63680d0daa15f0396997616745eb668667cc7f288528031fba3158ff71c52643b760027be9d1387ffc3dc7c8a20cb5c0bd94066c5ae69470096c0a0603ae372ff329238ced013ec6ae3c3b8549889f8ea9a471921eb3908c166275cff9c31738d986a6a09b416962ab290265d21af9cd0160e8b3f151eeb5c267b613f0ce8a950e2083aab224a7a4773f20c6e557a3efd5962bcf433ce13184a4ec0c4283846a32452d3a5b3de5a59cfb70a93f437b7c8f187f2744d5438584aff5414f3587b09ac629cade30585ec1ead6a45d6deb09a1c1b4456a5669e9b5b510debb9dce13956198795eb1f7e545ac2137213c12b737bba6a74dca1c2af421cdfa2ed380aa8df28ba0658c6d1bc1dbac18af214c84e76403a96deb0a9cc984a49ca9195262a876681abacdd6ed7fc8a9260a371fc6721293972ab77d061b686f1d456993a96f2e6dbc14d775f5b8654935eaaebfbe7e55b76c78c3da5f6b4ba7ab0f36b8ad4afac4ed9cdec48969f43552ca4c963397a3c8b0ab64c3027bd8f73ecd2da3cb6e1709263a0ab9436fe4bd9536a2cdde06e981b028ab1cab15c414784382e8c60ade79c8fbb0e00362e8bd412e9f31211302935f0881409f345a750493b01b9d8d0976f9a52d67477b67b4164b6909f0616c260aa2b41ee4c4190aea4785eff94198e692511acbe0e0eec5b9067987179c1b3aac07cd4f79fcc0863337f87dacbb118f8d2d5d472e0fd9b017c49d415bb127505219209ec2f0cc2be1ebb11f053faec2999059c87bf96f3d50db1e188b098ebf027cd9fd7a1268df3fe64bd5aea35620b7f233108c1c1e3fe77a400fcc0804a45278f1d452202694fd78dc46b01c140025975deee7cb2c5e4befb8cd3f306b3b5b5c7db290cd5063f5e982dec21fc6fba2cdfaeee7cdc99be5746b165285321652c10ade5442fb2601044b92a8d0752e8cca28a04b02a655b478126b88ec6b23444ec2c15daa8f00c4dd3ac438d5b8972b5e777a3b3be697700b02241dca34735ed4ed06dce1d3a62257c5a2ce5f6155daea9b09ac875929a321e0ac841858f584534979d4058ea385a094a9ce367d0e40479524a0e242485d7a5ed407d9f9080c124093b5529f3b542be05ff214fdefe28fde71829f677a1a01fb3d027dc331d1f98ea7b2995fbafa7f82df3d471e62c69932254003f057be4e6dc46561aeab43c40bade4860a91d0abc2aebf42787caeab1e65c4db11f97333909850bcbae5a56b5438c717660fb91678dee04cc50aedf85597a39504850792450c689eb0182d0138754eef66c087c17fa08b5b213a2444477eb0328e63f20e0ab9b81312b7dc1345e93281971d9c6d5dddd1cc6e00f5bc8720368e4df3b7cf4da76c479412d692ec522867c42df0011f17c34b12091f933f0008c2decbfca179a8bd7b1bd6445e91605c54289f6fb3d1534b9019233c9845815f133df220fd83f584fff8af4fe657e6bb00d1f5315ae95a13808dce1c9a237c5d72175cd6b0435a75179ede4a3379b22d973e389cb6ec0b506a0e8d6dcafd8dff1f29c008181f5d56cc6928081c396c5dd777c7fdd2a13b6505be656f2c42ea93e36d6798137c3496e39ee75c85de08280cd5b266df25893ab09d4bacaaef786a4b31db75592104cdfaf287af872f266653cf061744739ec8e1c8b8b2722e2499e7a32a416709f812110b96f9e5211041a0953f96109f6f249854715419b378a2463275d5a3240ffe8c766d0c7775e70edca3f2c23ff4e794ce13eb7fe31c847e7b5415968a87106967978c1d4850f2780fcf05e023711059626daa95f84d122e55267ccc0f39e38f9c8cdaa6e1a2b354f6512f062425f30e28d2aed774334e5de024880fe13ab359d2e0c13a93008ba3ec0c21754ce550ea5d3644b023dd3c12da7465df72ad4cc876dd55949d206bb32bbf8e7436721525a260c94342c1cf4af023bb4d21122037ddd2732c5c4ad7ac7e0a60456d77a19d1405b3f10c77cb6e052e82c0ba1b51dd6d937b11ecfca89cff352cfe2f134921dba1a9c4b315964fd4ca46c0b6e22cab27eb088a9356d7a0cd8afc665142914c22ba4f25245498ed532bd962860c4453cda5c0d89dd0850337b061f6645ecf61e081f0fb5c9fa2d73c13b79d33f7ccefe93fded277ff96fc17806be0afa3991a39332b887bd112a147e5ea6929da6b54d96f00fb586b7d24e583e6ea01ba510697d99ef1d897bc94b87a261f13901664edf1e3b97d1c9e34f8f134674ad91ec1161a91c3ea8c3d5e232b22ae1da81ea297932465f20486cf7a6cc1cae062058654affba6929e985a853cb007036c1540498fb55242b6e1b144ddb0bf16bb19ef01528b1d321c16ed3b245cf604d21c1a8e0be7d6a92a73bb710af9128096513d55984ff72ad98403e0f9766c72855f41742248e2c83c4e9f408108ede0cc89b2c2d489b9cd6fb1ccdf808c3df7bdb421af7615e12c2d0819ddeb629a218b3572d6ae1e9c1e86e7b7a3c5ce112cf5f12f1a0536b5246086d8a4e318a8959d7728672614c6fe29ecfdfb4d2a137e8f05e9da9c077fa00107dd18e2aa96210cb8b50aeaf73f536e0edf06a1543400ecb81b0ab54678038a473eb64b11fa27d08099a6951b955391ca6961f9a782873b6f79aa480d1cb7477316bf28b668ac6f1dd206a9ae6fbe56d421a39f36ae5d47130645f9fec4536f75a8b1af05b8e339a69cc95a6b9218eed3ba10c11473dbed329fdfdfc832e1cf6fc82846af1a3375d6a2282c78d6d45f9020abbf59bd899a6328626778a320fb5c82f3361a9fad2118892b49c570212eb7161645641f64908bb17cc83eff56ff568b4e21093426a57002fd326e7ab2cfebcdea9ac81baf63e4a2e9db0e8b415a277d1941361763539cdf57438dd8ba2626eb94387ee040b70e5ac9e95cb2a98e3987aa0ac8cd0e93f1b406c24b48c96acca4c586632af3232e4e25fff1be327ff2c970560ac0ffe6b6663262f22b16d3418095f986edb39e518bfe42b69b6a4305104a238980d4abba0aa4ee207337501249ea25079be430247711ccab6260bc6ca36eb6920fcdb37644717ebd698c678993a3488b7b2756d8326f131fc2d441e84b2c034be85750732c66c04f9629c5f3d910f67aa54e1d3cd2c96b0c6db1770de11f7d4df8c19301f24bdb5d40d5d7981b6262ac121e414a216899aa3800f8cd3434b840a85e77d3b5ecee19cd297c406d505fef087e30ec55fb0d2a0193220dd4ed6e7c30253677551c45e8dd80cc50ef617d6de0be651fa791deca47b8a123634cb8c9d455e6bb814b51a85fb3562272ab3a756a05a51649b0d8deb0f433d2075edca2fd09863845245f45597503ab73a68f300342793362ada8180fde5a9f9b899142db2c897ca4ad90e1793997774b4d26fa6b6404e72c42c74061707a78f60d07ee3a2649f574ea7ccd61962aacdd08756abf50c8885989c78859859a5bfc5de2dd6a61b8e185e727edbf689706a9fa8a12d662e6a6fd1ea3c7f899180cc3c47d32b82ece2292223b93684b5395b407872af7858da491dd729a17f51b8a88bebd3d7ca254adfabc196acd6ab8d9a2631fb4f46b6c4e05a07217d259580c59f8401620375d8298344f838040b6fdd523964bcf73c52a84fb170ac8007121aae587c447d0616e98044bbf8f7811ceeb571b15382f8cfbeb03d0611818a572c13c98433506ca04c3dfbaa1dbb13dbba05af10ce40e243394495d3a6a9bc479dbb68ebfb99a0e88cee2c8a5595ff32213616212aaca14acdafb70aa45a44e06386589666ac8c14ea32ddba3bbdba5b5e84b51339c9b8a3cb08df5c1dcb03990a8879889cb37d52aeb4b9d9d2dabe0959b99ea6a438c6a899dbf87a12514d6920118ecdc7bb81881038682aaef53ab15b294e084c88098c47208f58f345459c57cd0da4640b2d09c4a03b3ac2e80826a493280744f4ed008d17415d89598c46f18acd7afee01da0e694483d0d0f4143abbd3a626645d9cf5ff8a346711c460dfbd5bfdf3fc11906670b0ccdee776a3cc8830509d8a28b3592e379874cc7d477a320a074e761ac19aeb7103d99c39a6d1d6da41a2be528cddd0ce7b9da21431d0bac779516ab1db8cff0f0dc3900d62506f23aa9330c6fd8d661f88101b30787bbf883e8f189a4a9c29dadb9042b3a2bdda0c9a1957c4dcbef7162881de75db7a85c192d5caf3d22bb3dbcade1e1cf0e5f49bc469025d05a3ea77b43bba1c6015da9502157976dc6467ec51ed9e62886b5a4e4db80330b175bf6d0dbbf7dce7078eb8a8ca47612c55210f1c776009aa5fbb96862d2a4e6e6e849521221a991985315be963ba9cbdc79e7a064f30d13d562cf2be19c1370c458343fb9261e07b9615d698c56655bf38e43e304e2666d80914755ead1157a2b4191a92dceb56befb6a1806d042f9b4e5beeb951355fe8305f7c2d86268a61a27c0b8bb02be93f6ef45621df69cf007299ba6d60298d93228f90dbc81309eea329208fa2bdcdc0c08029f22269f1c57e482e2041a0887cb606f17fb4cedd5f5900cd1e9692d991201de6df0927970622b27e2d324e551f659e85248382ec2756018b1c4d09dd1835543623e026e0601e5763286646b5008afda720cd28a0b8e0f167009df0f942e1e77a097fc85363ddc28db3b8b6d56557ef99faa66351b20466547614aba9ae0df62e7c7dd1daef26bbcdcaaa56f00483312082af35da040c54e832944509538d94b0df15fba79088ea1155218dd976c2f1db6e4e474a1550ec77162e3f8a16b5149c73d02f590326ffe627e284dab29fabb06a72174b53d953a616dea52658aeb6a0ad9a252c1f88d6a7d9d4b5ad68516f727555ebd3582c25f69fa33d03f9f491cbc1a573e13d0a1f08b233a25ae58515697f42250c731b2d744e681a10cb49bcd2b4785e585802c94114ef17f2eba3ae5d1761f6b5edb0c955d12e1603f5bc36676c89dcb54f114c2ccbcc3de564142b5141a277c0c27a08e2ce4a30bc256f74bac99c6be11414f21cfd0779ee424ccf2975cc6cbe1747657b5eba906425038c21cd5fcc185adedd1abce2baa1d463c95382a5fe31fa5957492bb4bfd7307fa94e7231dcbc6c80ce2388765fd4d0bc87c1f80f9328a17a78124db33b7f4abcc82763cf72a0c8554a2496bdd8c4307b1ffa5aa50f74c7c3a638e01fa165ac5f1b920a5fb4b308e26e83667985b88f8ebd0dc8c702a01314fb837b834affc89d5f6f3cb50621285e6921cc9c89fb3717a8447268c9324a14a7c84c29933a9bd35bdde90b90f8381c827f10c6245869f42b1533df37fe295fa6cdd62689d82f08a63af877a6a4b326278612a6ccbbb151f6de8a76b1ea9d405ee94b99231a0634d0642ca976c15ad05811765f356a07e713832c06d9491eb18650ed6a92cf8eb0f9ddbef00b994f9b8682b9386e8187e841048960a1591d94006b57ab5cce9649460a4fc9666cfe74870a27fd62b91e62eaaaade8da30d66055d03461a23dc918cf515ff099516115f86f4afbf1a36409baa59c40e6b3711b0c7f26d7a1a03cefceeb422c7f054184e2c9941806c401e3ebe3e9254269c820892fb4373b430708bf6a1c3b1608e52c641739a60679b1b283a8a7b968e8a068f77a7aa299ee2e65ff755f4ba144baaac4e34603957433c3bca3a1c37633656266c0b7aa02910aaed97b5c432e777214120e3b14a6cb65efdd799b54c81a872b768ccb314c82d297a71638862d2ed7ae863257d8ffd0b29f96200d736d5913f9fdb583c926804acb4d79d6cd760f639dacfc0ee04b4e3c4d9ebb8086edd206609facfd5df637f482b7ae0a691c7748eb44ce71acb5e3838fb9a08f5d74032f2f982f320ab98260281205aebe6103df15c721ca62620768c974002a24176932b6ddd5c5f61d63c601c1cd6ebec9278b32cc476e6b2917d411343dee16634233fa2c1fdb4268d0c2e90476b2923b7daeaae8d3046caa0880eab7ca10f645fe44b454a3503f5687a8382e79609ba43953402246c35616891cd5bee94cbe372a1e410d7a1df11c3563e6480c0764219d0973b76c30ac35904bfaa1d65b92b97360c3f638cc4ad4879d57eb62c9c455a6c5ab1bfe0417a1a5f3f8e0d9eec567eb3cf7b3f20bb99031b5e73472ba652fd52bf828b0a7eec1d2ab6bc01ae8a43a048325944fe25a542a182151efca72fb75936da3dd6bbe204d7ff58503e76fedc34c90b16fd16cdc2b32fbcf498a561ef76cba72937d134e92909c9b03ec7b5234f4bfe623151e0dfbceae2007d6bfa45fa7513a9d9697ddf88449ba3516269b4f5a7936d5db4b7bd82575b2ff95d318fe49d7029bd43f2739ca06b47725e3a916ed25c110e09b6e4a0781f5548e4c5a3287622ef986b719da4dfc836423d27a81d5354a8e9de060693753b2547dc9b9f743b0091e9ed02f63cedfadff992d015f2195976981d962134ea6c7ace2570c284666d257bdfac5914d826448656eb980c9476c3161e99511930c51699dde257624889cb8729d60bc9abc8287b1540e9612cb8df6cfb6497966e1c4df6904fce9a1905baf7dff28f33cc04380f1a55948988898aa43e165f6e43e308ac13bad08e81b168e4613a470ebd4f96416978fd8b1d3d67512b8d6b3815cbe87bc1b631c5f6e98fd463659db2681d2e98ad8770556c2b0f93a19bd09482e74e1c1c52120163b54f3ab378c0bfd1b0f151bc20f65e90fd42abcc2d12132d95b88d033ee2143046af4465d67ce31151a6f4581451348c54524a005a4d612c0c2c9aca964c16e04c33fe98577381f6137b9f6cac4337f43dd10d98080eecf1c774d3eef95ec91807872115b703108786215ea80617d370574ab7afbd6df25bde51abb0a09c59405b02739565c261f2470f5baa63c422fa19ca4d6077ce289501d6fb94fe32210d080de851028311ef5cb0291cd82a469922eb3a78bfdc22dd2a26670db6aad139f285110beb1ff9ca8e8ad7c01264f4fcaaa25a4421ec59e6e3202b5a4ae0645c8ceda1fe11c10dc293c9f105f6859a63183af5ce0a3aca6b4c8376cd9acdf1d30a2ae4e0e8f88185f92be691881a777e11c5ace94e03002b6fefb102a3c691603023dd7aabf626c72e0660b93d869c8525365d14a9457bbd206ad773173d8fa75cbef4691b4e62d4c0451c9baebc5ec347de0875229204d97953012a690235c04c40aba0a092b02b118f9092b2ce57620dd41ecca24a7c01604bb5067819e90dcfe905d5efb3395740348f2290b81ad99040929a16d26a98888d84e61ec7328981126c4277e0e2d5761c511a3986606a45d5de65be7af00fb85c7cb93a044b3be7823ee3c0e159f970f28302bc20591a74a1d31df1c7ce8cb7f6ddb7f71188d2ae1c668f2bdb40ce5051fe93aa722efa724711d38f98a6ba774117ddde87e2b30a7f18592128202ad3c0eb3ab58dceeaafc557aa79b40bc20d04607048e8a0500e104f85b33c29a9323cb54601a233ad44d6676acb359e8e43101e69fbad9cd8825e201a6426938c30d4a8efd6e31d891fd9b59602f5de7cda2bfed105af555ead3f5d9217ce95413ab4373d21c22c1bf6bc4cba6fe61b40314680c45fc4e55c2cabd89933107c11a02bdfae9d6b04c967e12fe698f2ac03265c1cf92dc19f9320eac1e071fa60c06a4a25f4e553772d91ba3afc99303e5af223d1259ed2d9f3436055bb3a9310f15933856e9d917ddec7d470edb94130b86953e4013f264ae5bc3c53b6985408891a41106e15124577797c5764ac1211c91e7bbcfcad0d8a4a46e0c45434af9d72bf391149505e161fd2b02ad62219d582bbbba9e311b998612ad80aa663dd6e6ee945d2a60fa19812069f0b739ecbed8adad88b1d6c4b2d69bae4db2aa1c16183f0573108edd82fad82f66ad0a8dcef0071e269868ddae2beb7cfbdb28e16a5966aaf54f7d3f8b508bdd738a2629b2b29ea6cb45772a0ee1ecca3c7cef7384a161b20cd60d2543d9787103d4794eabd53c6aedd7f267c76c4e8046ac9ad007926aa6b611d69b3f2767c409fa224a19fc01813f5667ec6f225782650be3df61a510a3429f1756029fab58c1e6a4efe951c16574567327e792142a7bd5168528581732701ecf943e258e93bf82f6a31d21d2f2744b8c8dff04cd2eb21ce8b0ffbafb0a393580eecfa38a89f4c5fc963d616f0d32c83be5b2ee20e9b83089123c4f6841367b2e294b6132bec2e0d34baea986780a0166d260d5b02280041d74814cab23c175fa1561366ca1463b766325318f7ddd7e35734ee3a1e09e377814793e742027e0cc7ff74d01a98efd833696518937c9630d21dba0f5e25ee2258b4d62732788150aca1e70a2851432bf650f2da35b44ece5ac36fa55ec55873116a520e21ed2a8ac1a3cf9781a0b7566b24516c6f3971ec7d1baa5a83bc782b15138975a2cf1ef903840a345afc5f3db24a557b053dcf2c384a610635383b6049238c5ff7416ff6c6fc87c4b43f1f898c2081755c7051ac5358dad84aa554d16dad42e943a92b6b3dd4a53b9ff1d1a1e094fc865f539271eaebe5c54d29d35ee252b27c8ac26f23f97ee4963a2e875b6b942659c752cf98b9408cbc2b887579d96df521f85d310fdf6b1aeaeb4cada616a4d52d9db1f7c48ca3465b846a823e37f2e194152f310dc3ec46080901c149a555b1182781c2b085a3525ab3d1e222de8a821808c56b6b479fc0e60a852d6e51bef802d0b7db72e03598162b708eb95fcb722f3fc1738649bf6802171a369b23c3c4688a8ca01fcaade15393cf87ef42a0ce0b205c91c1ff968c282bffe675340dd156382b26f0e63c9ae65d4de303e89194537b1225d3fa74203d122387d68c43618d5efaed27150ef9b51682ab0ad978e86f741f2d59dff3826d7c74bfaf162b6538a9ec118f3379b31a360815755dbc22ad74d5f73e144df21e782e5af8d4380ba02ff642aa0af84d090cc1fc4cf16251382176f0e2ee512a38caa00c2d9af4f0457f9d8f18e3a623f3c03fda5b3e2932c73ad3377037363a9d4a158135886f0d1182d5677b63a2863292bcb8eb302ade12bac9772a29789ec03340d68d49f22130241927121cbe818a6f02f628aa383e2065e47bd3831211a0b2dc188ae78d2cbd7d1728a8a874e1e3778655461a5dadcaf3225f4399d97aa071ac9164ec502c0fab001e39865ac984dfa245c88a833c34122abf3dc028f099aa75e398d378592381139a3ff14d63c9d484a52dc4c87786e8903eefd6ad9f21046787185d368f0e57f92c5602ec5e2fa650b05adcce84c5c2ccfd640f61d81cbd22b3c5c40ee87f1d2d75455d6ba2752a800c6cd8db6fd5386856335624b59649906fd61b8896b10a5e87af71c68a682baf5a6170a4c07e96515a8234c6c5f696bc1db40d3ff3a4067053cc2a327120086f230814d2219eb027a7f6e959ebb259739a498a3dc495c527b045fe5d77ce5ef2299f2fff5f9bcecaf70ed232a604977e2e4cc80324bd3abe54b9e08f0d5b9cbc2c1c42e24189d4e525016d587054a167e4a4b0e9153129a7e8e3922b9041b2b4fdb512f9952531fc2a2ab1ef2cd4e66f2aaa591215a5d707c9487e9a4b234e6d63a9c89683306796c4aaec6ebc946dedf3c312ba57de8e54e599fdd5d332e3bd3fac08946d6f63d062cc7c1820f8ff78e6618d34aa6d2943fdd9cfe0112c216bcc3fd5d6a61df9241191c1e4b11612f37718cde34aff3875446ac7058110ae12a8142268daa82092ac920caaa4eb80b3e24d740f2edfa8a8ade43596bc2d3cb41c8005ac9d946bb2262acca68379a3273f63ec818f3c61a2968feed64f6861f29882e391c3934f1ec3ad1ff47112e4648230708e6a0a6c4d5507aa33f970be444b3b6c7ecc57534a67a72eaa48921c8c6235c8b0d0b2b1e1da45d144c988c4baece5134113fa8bab0e896d99da8dfdd82898227eeba714e78c0e044946fd4fff3b23c0a12d6446202d86a48d4938c4330220dcd23d153950c7b99aa2a6e04428672f6e795b315f020b20937fafef8e39f7fc5024ac59639d6014f15a1e3b0bd3dafb91e3fe0db1522e4aa82cce77a87cd3f6c9b1dbf8b34e9bcb5ba4414ef87dce3f396dcae90725578bdadc5cae8912f5a8d198bf47193ac0c6e849a4956c66523531d074beb5a72fa29685d8176543a86e2a132ef008341ee20e0adc73ef1ced9920957a24c4c790216325503f6ceaa6133b0cf8635bfff7ae4bbf7feb3f0a69b491ac3a58b380a209b68de1277bccd046bfa5508188010714d54dad514b0bc8dd4d0c759af0fb291fdff514dd046cf26b49f41271c36c679ec3af1d095c5aeaede2ebe21eb80ccbdf8265cbc17cde03224bc9e71e0d5ce7f04bd0546394a5c4ca51a673c20f836f0651c44c2dc3fd0c8d1c85c79cf1692251a2832450f1aa998706f0dd4193413db348838802982720be9562a02aa032793d54622fd7019f431757c40084728654b4bd36624ca301cc27056e0e44920c56205e55493ab96d31dc43291142ca0dc66f2f12c65c8725edabd7c470b6c2710afc442380e0b2e2d6690630550087920a9f3c07bddd34ff57b71da13826cfef7fc905e5bd28dfada9635bdb766b84904608217b4bb977570c870c830cb15b6d429d73a14f1eaaabfde3a13afdeb7068df91823ab8abfda9d453f6e3a1baf0d47e3827cd7e46005df8eed7c5558841ecbae6d531ef55e7d5e66a7227a0f1a6598f9d80ce6336f2bca669ffa290f64cd354b771280ad518c487883bb10b9b2d6eb58630da894290c547b8126e4744a06cba20d9600cca5195d6ec2a075f3b0e3ed0c5ea27b5fa616f0ce8620c8478d3dfe90d3210628dc853dc2d72918db6c901d13d55b7ef74ec80e8ec1015066e770cd57587f058aa62f5a72f172f0ac66f1beb58b9caafaa837bea5bacdbbb62d78ca069d78c40e5e6a35739b6534144c9c5e1422a88447161b7d91d315e03225359976bdf4e7547cb51df6003525fa182881377e52aa87aaa5f764fd8d61d853a779f9306380e437da7777c2cd7de7d7baa4b39aaae7cc09e3a0ae5a87775e5c376eedd77fcf4f5c5af080c045d2380eec942681351ab1ca71da9633fd91d9ce93ea76f9c066eb7d92f065dd376ee64bf784f4739ac5f7675d04398b2f327cccec30e050766aa3b50ac8f784f3f7d056f5ac19f8eb28ab608687db0a7eeb39dfbe91f50d03d591f9d6273d010dc93dd817ad7623f16fbd3283506dd14bc41b7ab3f3d7639525f39ec7c54bea2837e636ea572cf525779ea2a42a820123b1d2b37da1d9845c205fcf6459773d85d2a641666bb73d7c0d591c2ea87fab655ee5c8e8e6e9daaf1db109585ccca3470a1d28de7be494ea5a69e9a9d0efa935571b1a99fd6ae3af74c878e78aee3be40e3610feca694ead8b7ab2a64d6068fd54f03f7fb79aafa8837fe8b3ab6dbdde8ced5edb0f3417d853df51376da68c58eaaa7d3b98aa14e5fea1feaddb7ba4a591f96158a9e4edfced555cae9b963758572d4b16ddbb653fde297627d58be3a3df5947f7575b23ea9a71cbee5f4a8ba423de5a76f2d75e52c5545e55c5d794be5ceb2623f2015584444b13e285fa19e3afd87b23ea9d3d3e1bb6f29951ea5a250c72a7d4ac58e5253879d4f8ada0f0865217ba718dd4ff4c19cd2e5051adfe33a762d7ea77d566ee4a01456f9c0b47d7db295d9f5eb7acb2b932d39e5253328e5255966cd8c7df24efbc325d8a0cc4ed3aa7205fd70ae5ce580ef5f68bf1f86eca91a624328b4f258a01fce67f4a18cecf2382c0022f3f2e3e1329c13b4ff1d1a9961939c0384880fbef34a9ce7f76a1ad3a1d91fbe157b5fc64a8e3ae8ee689b80044537059aeaf3571af6174fc2e370cb0647b1ee14b6325dfb78a99f0012c42d216eb1147511205cd11129b0e13224c3103c22052b4c5a1f5d6ec24fb805a3f0abbbb13114ec359016ea20c92cfe141ae9a26283325f0741014511cee12998358fc4881546498e9620315182056ca27421bdad84424a777e785151e120794d073519e2bbf28d44b01763fca187241d1bf14444a023f418329f6ad8bb0cb7be0c26b509829098d218a50ae8bb07d2d86efc0f9046df786859655efe697c842d38ef109d43614fe7e84056bcce51152790628b1d10300e817e5916d44136797d728d56f2d5933fed65b739a52a04b4b90c10a9b3d8e9a1b16bb02d072967b1d267b225f9c247befdaf9b33f86519ec8e31fe308641c884568425fd2d3e5e980108277c84f0f13d3078790ce34fe61e584f0fbc3c255ff9b65fcf77cb96378cd09ead7c60db556706e6657be2a7fd6c0fec5ed78a81b2d86c889ce345216a64e840232438364cd9e9a6ad4a78c24ebf7e9d4c262ecb4cd89561a6cb44a9099aa4e4b4d4764d5eeca6faa2526d1858f96c9ba6c96bbaf16bd60773a9ee0617f9668f5dc31ea77d8b9de7691cb3e2cb0ba7f5e01edc7d6319383870fb66833d1df6f83af0a22ebb7bd8618f6f84d279cc8a1baae33ad369fda93ff468805ba6ec9a0eb9851df50d55319005baf231fd64b2d8101a8104511cf499103782b822a87388681653cbc7000a8575375057f703d0cdec4fdfec575cf964c78e61436804ae561dc0de1057502222a0812ca3c7bed15ac409a3278c52945657a9f7c04cf55ba5ac0f7653b4de3071318bcbbd7b8f93fde9815d3db0bbc2acb7c2341f7db1c03109ed10da4002e32182098088c96a3db08bd9b804067e9ca0f1b24794016d8628a7f8e0aaeeee7e8c3d3470e7052fe3c98034e421bc9956af67d7ec4f5f97955b128dc761267c4f26e35e6a2ee365dc4b8d8452c84b3706d8eb18b4d34392a5202018f8e11cc8d3874474965168e400cc0d3cbab9c54bb6d6b6970b2fe3d5e07c322efc74ae4acb65bc339f4a07042104f3ccb4edc475372a5555a097a2ba29147a29ff81c74d9dbd94af54083d95b3f840efca8a8da9f76437e57c941e20faa2fc871f37f51f58b2770395c4a9e3b62ad9bba149ccb28ecc8d3287ad18df10b2c42c898d9be33e7737409679ecc1232e3eeb9c7993b526abd98faafe3564968eb30761d703efa9885ee6c24c0712021bbc8734f81a5d1f5777bb24793beee4e3ba90461171e9fa40b990461131e8f618c08d0fa241371e32ff608332cd84ca88521cb9910c361883262561a24854c42d7891d86356c2ad799e33b2e56c429e9027647154c21e5292881491b8d5b1638c46ec311227597299cf302722411623110d25c92b60b27b01fde06fbcac0a955645455573c6983b60165c8377cc49557ef84295cc604ef6695594ceab5089a95c88030a2184506657093608010a8f48618a9b1dbbb22bcbae1882a5ec6ac86dd9b6c52590b66ca7076efdb0a12ed8dddd383225f3eb3bb067ffb0abe64d6af0a04d94354b03bdcef313e71816b3aa3a6b88f68d3913067308c11033a181b2a04dfc5e5417eb8c051b0e0e87332176288373806496884e8cd1275a8ebd791bb1cb747a4aca0364cd1fc9aad08136f36a82eaa8700b2671b3608331684329c940e5fbf3adf83933edca5f1ebc00dac07b799002c8821a07017276786d0c94074208218470061b8cc10335a981420b71402384108a608b43f546bd3df2525e5ebedeefdda18d3cacf0723ea0f25f943c826a3a03fd1e2fe310ab417e2a9166dddd1a408247785094c33c1f420827dc0f2eb9fd9d1eb60a64bb12e7d92c11ed3a2693d589da61d4ac0df69ec82a56756ad8eb693d531ae8f9dceaa87ae1d66f5fcb5acaa9c4a61df26c59853c3c747a74569c56579c5d1d00bbf60598b46fa6bae2c1ea8ae338fb1161aad8906d019167fb86b83b7dd5afe7f2d0814957d4ea2ada53515f3be4996fa8617508f61d863cd9103393b17b0d2808bb21ab0fa70ee3783538dc9216c763af6f8d57852606226c4163c39224254a92962c494a5aa24449122548484a922451a22409129215484747485658818464c5d1d1111d182139a283a3233a383aa20324477460a4723f950a7662608ce303ade59c7362426bf8420c966c6083201414f9010aaed6a0d05a8609e6074bb4ec880e6cd0173671300581a3832323881b96182283279810011b84b40e305e8299f92a2a1020114210b8233a28c1e52e3ca28324aa00c18584043978e27e99188e2440e1112894dc2f83476010bafc2c32a40209a2cb900684aa1b619675cf36d8904fdbc9ae72603f1d07f6d3e94097fbb8675d35715d05ba9cc9c6a8197b91af29b9725de42ae413416e1fe8daa0fac8cc42e8fd905d8e79db07fbc8a0208e56870772ccb7ddae1e9dc51320621637da22b0ff6417e8ca661f7cb1ce4736c73e65cf6c8fbe58033181b0d821c0c171c2e3af7f3c702e76ed7c7584d0267ea7a1c589e7e6eff0857363b671f7ba7ad9c631a580cae3dccb745d714a6b019cbba3f908d95232210ac5c81de72a87bcf1d71e85ae663a7629ade93bbc65d0e60827577edbb0cb1aed1785b22b6bbf6edbd7b17e512866713f0d421bf99de61185eef6283521741e62d88661a60a25c56014e22132ad05a2d0dd213b684a243618fb5ed8fb5f5f59f481dff7d157c68bed886cd8a0cc27f9c9fda406655623542354a3c4ec1aa15b63a406484d508d1253aa82dcb03d56082bcb496f3c500927108c91e56177c959e1b95e9167fcc5107ec6abd88350966183321f37c4a493ba20d8cbae12259d93b58018fca490149242414152281b621ead04f493194200b7954212f2f431256c4945b321daf6937c7201ed24f793b779b49223a42bedd7f391268826e8f6bc586f8837fdebb2f6679515aee669822e4d91cb7a126fe4b1b62c27ecc9ca7a43bc91bfe40bb73ea06e259dc33c7cc80d5d8c01e9bec20665743829eb29fbe7b9cca9325173d2d9325553ce9799ba9d9fd9318d042ab1864cbc51d53c064aa65eb6ab469e1651c7464d0c48c30768c3cc5feace0bdc1da9773ef47ef24600ddd47554f6e3fbe9e8801e9fd605c407c00850c0071b3b3da458a354ca7ef3a8c7d3e54f8fb8b342c9833ad90f687edbfde011cafde0d1113ce2e669c7197578885840e74a2b518e884052666778737e665e66cad46f71a572a9769543e62f7f91b13b5c54d5bebce0f0979797af70b097ea2f77a930d5eeb84ebfc3457598cfbf4c9539bfaad1498d4f5c2a07b9a81c330f5339c84a9df3990c36d5552dd529ab5457a90ed993df5435a301555d65b317fb6514e52eb5e52a95d5a135dec8b1277fa841b0372f95cbca9ccf5cec975195fd68b7d81ef6e6b7cf39e79c73b2b0a8c4a522308ab25f966d26ab5d33bb2676ad5a8a40082f55d89341dcf8996d3837b408edc7f110773eee74bc70eef6aedbacdb5593a0a6c30b2dc0d92b66a653535569b203c2c58db1ca2b7b18927dd61c7da7d73cd07919f6e4b52b68cf4e0f3b945bd80b9419f7ff6fd31bb60d7254e4407bf7a7a669efaa65d99b02fdad47b7a671daf6eecdf43e67ea2e47df143b1d9a0e9c2740aee9c9ede6019f988680344e878f479046e4160309928456016b44202aa109c4e27ef18899c478f4c5a3f88805e7fc0093347972630bccd969166c99dec7606b6b6939a8a7de379202eca1fec1325cf805f821208d7821bc8aa2ea8f1f5946691f09c19ee97188a993588192e254f69fec9afe4d1b8b7278e0ce772d22bbc67dab1fb7a4a35ecdf6144b1d4d9d34a1e06da2ce41d92ca3b4898ea04d7c8602aad2447ca43d9a6e32f1d2556a26846e8f5765e551c98a6d398234f8c6778e6c53a6f5b57833949f6a5dfa5cdc8f3fcdc482b2752c9ad3c6a2d4b70d468ea76c66916b2e1645ed912882a0092e1649a21b9b48399decd7d7874f6791c56687d01ddb7fa2a9eee8ca65dab5cea7a5cdb21ea21f547aa48f9ed2c79ce40aa1f1303b016d236e21e9ee68057b1185a2fc6b22a215401adc4d8ff68bb789208d0844f74db106bcf1da4d9d4f5fdbb66f5a8d4a505f74c28ddaad8847312add6874b4d3ac188f50b1885b31bbb121c523f6b0d40b7ba77fbcd49d97b8093b89481c17c40fecc1967f301a252b62de78c42dae89e2b34bd44433fd16fbc13042006e9fc5d2fe8a8d477dd4a6538007a401b1ac731ce0754e0f64f59ba8b0a04c522c5442331be8652855077afd54b50177a0d7a7d506ec017a7d54a59da38211883522bc695573b71b3201a26fb23adc0f5f1377ad6625a0998d0b39ab6df683470d878036bf3ebf79afc72ceee4da435c2e88cb5d135729c0df7af08dd820c7bdab66b996875dec3ebca6ad47779fa5aded6a329d3b1dd9b56f71eb1aef26313bfb53a66b1ae92469b4b019cda1cea100542aca4e28e6523add8d9a96d7ecc6aef8abd678ec2da136c67996d8accb5e465ea473224f57c41eb37ce2b6b85f16638c315e445713ec71d60495f7bba0b8cc2ef19791781591338a7845c11ecb96ec98451657912b8a1823668db0c7571446b033562f235711f658fe9a45b815851197689f509535824216b78bc0fd6da11696151bb3705198fe92f209547b465908b35fb67d5a1bb79a55955f35451621e2527b425599448828163d8981700bde68a41545d0fda29288e446a12814852684cc5f2cc3655984bbc3a640e7401e0995da6ed94637d5969db927a171d9b52dd3be6526ab659e4e8e2c2223e37e19928b5925bbafee880974758b252cd3c5c5c5a545d7d2b5e85aec122d57259172558b4a85a29e84cbb995732c2cdf30eed4b1a4beb2d26118b6f2d14fc592fae75d148cb2fc2c6756765926f754e772c839296fd1e2da535caea5ae1da59a2c948e79e5da3b3ef61ddc75fcd9f14d6c7bacd8214ba43c25e51cc7a5704f623b0af5941454cb534e9bcb5b9e0484aa279172d5af940a21ab05eb377597fa51ecf0a250fb6159a52d35886bea3a96954adfd5211b97751df7c9d92370323e8281322d0505cf8387b76647bc37df0383d93758b5ebf397a669da951db3674fabc287d323da6821acf9a0ed81fd8bda27f6f8697b6476481ffb3966410f5e5ca8564b423b36bc502b469ed92f66ee0a002f67b52454b66429b68d077af6e0bcec35e79c3d9965f3e35120533629bd0a694c8e658036b2a80145b618bb1b2ccf01b656de48cd92efba6e4945bae8251a4823b6f85dd84ff56297545f5978a33a5631c8527da536f454bfaaea2a55f558e352ac01ef8645211719e8c11ad86a89d766557537628c2db1c3d172d56fb8fcf328f54359b958f55dacbea538c82daaabeef2966f2bdd8d16ab43552d2a15ccffadbbaa4a96d56af59716ab556af5d212e7a985ca0a073190edc4a9aa644fe5f1f56be120b7fe717ffddff5c07b15abd88f0777573de255b90f79e37ba06eb4d647bc2af6537dde05878adb5477b98baae5ea321e751715b75a2e1f6b1bb1275f6b23614ffeb58f5ab8f3e130df620b1d2aa64e47cf558e7ff5d5ed0ec70be633e63ea48bf35f56ef81ba2bfb16d73a1d7d17d647bc31f68b9fcf3a1d2a5f591ff1bed82f7ee53b1d615a70c058170ec6b7919e82fe83472d6a74c29ebc0a036121f6e45b2a07d9e154954b32a041b0279ff22f2efd905ac1016feaf1312eb55c52b13d6d0f7bf271695b8313ee74f4e37ba909b79c401a30473fa2f8881705e51f77aa71a9084c7b86695665b34c0ea956866cabedf06ef60be2f6bf6c3bbcdc63dbb6ed4600ddcd1aa1f561fdb06ff070ab26784d18668dd0a0b53d309bc4fcb494da27a162a079440371cb0f6c50860a3488d839d8e5bd1a6ed1cb231eae94a1339f8d8dafe5caadb9ed4ad90f030688776eb00be2a67a70ffaefbe84b81d4618fd453367523806eca1a71e21e4d47d579234e3e5c2ef4becbf69876086697c09e44966559760dd3e093c0ba9b9e44a76d5a966516c218e771d89b524aa09e9817b0e061c3d34cd74bbce989025926def4a117ffc243e67a6119196b783d7e5c5edd0f1e6d26adf6311d1a6f76187ac0d0f3851ea51e2ff474a1870b3d4c7ab6d0a3859e2cf424f560a1e78a9e2bf42ce9b1424f157aa8d0a3a4670a3d52e889424f921e28f43ca1c7093d483d3a7a0cd00344cf0faac8d1608332b0e395c943f9af5d6ea0272f29df02d2d041156bd4c41b79790f65e3ca7fa90ba50b25b8701193849818982a60605e8e5e5e564858ad5a1ca1450b1723b8b8a890a8542d54b4b4b014818565e5c8ca8a0a3452514919404a0a8a005050520148a5a80d4a513550a8138dd3a9e3a1eb381d8edb72b6cdd43299b4199a96c9c8320c001876c5b8aeb9c395f19e94379046775f791d200d66bef2369046bc570369c06ec62850a99a989573466679ba9e1605fafd5e2ff0b2b72af6e48b133cf332e84e999b1de981922b4f5536a972494518b7d815005e8ebdcb6a4968ccb21b9f8d0b932052f3e90a24991536202b5e831fc53428d0ef43b46899038d209d1776c9e35c2717d0ebfa6c1fc0972b03aff6041adf7cf105a9ea480fb0b81f3432c2d2ed2ec68d0b620f878788761ea8fcd9a15d560ac46fef11ad111bd4b4c71a8f30badb65a7033e6edf860127d0229d19a11d61d2b51a129defb833c45477861cb1d775ce12f3495cf38246102234c5168e6054033528011ac20d564085330c7182088ba41d293021c5132594210657e099ef47a5ce59227b12d8b379ec1a40117c2085156ed0840954c033ed122a9e24b05f44e0911e18b9985d4235538268c108492d38d205243c3230a88213848804290114788868efc7256ec1a02156dc2f36b9d1c96d069209b9dd4ec40b8f96045d9f2b9870ebfb2092cf154c6ebc9c667a9b22e4c15deddcddd04c51899684f44dce736526cce224880359f40090d5cf42d2172b0d02dab49450a097f781e2744ef6cee6633f22754e66856056bf2d44ca2e26d4426605d1041a7d586597e3226cd43938909154cd48b4b96c490271a328692468fcc7ddefbd048dffb888950feacaa3aeb4ab1c433830ff23ef90a0d50222cff5c87359218e675ac85e430eb2310e860384299b99391b0212c11ac490e40d4d904248089a072e98b207710c6120f28411206c81054f88215202283013402b50b106a2378421092590610721b0a2879d1ea312c8e09e2eaca20442ee9705c5a80627977f5ec3e5e344365cfe0eb7c105164a2083154c40c3187cc0c34f2e9f083e05b815dd70e192933ec2257fbb352dfc6139a310762724b9332eacc2094d5ced2847e1a1bad865e1077427f7ec3f0caf2c5ed8c56dd73f1e2ad8c1599f19cded97062d10dab7adb98c5bdf85fdfa780a79e78773354db31f367fea72982eec3a1cdcb19ef0c23905b7e0e797715755d467cd4e1d0e4db33debc746f78339c6408835e23199d23e9ee2629b8d3cb6face19222561acf6f9ef875f6c8e891dda6857f15168dba6fd7ce0a78e79cdf9bd3cfbc753dcabeb70609f76c7fc760ed21518f3bd58987f1207fc0eccbedcd4e9e02efc3b65b1f9182b2d8cfde4cdec4b86c5dd669d97a6699f578b5b76adc3819dfb109db3b3b26c24de7ca75dea750c055b6e7ad762234b646a61875ddbae41adb33bb0a73a06020a0aca29e7401e14fbf1505dee1f0fd5072d67775cdf0f43cd7e919340a402a8a2a2cb51cc786e7d5750ffe0f2e115c434ffe8635425ce1323468d423c83cf526310109ec1c7a93148ac35bec658f4a2b22a646f465a8c48ce80126144da07e80bfb7990f91cc4cc0cd97e58243151b284f934187bf7c38ab8b53a7f8b0180c3c4d49aff363f754931ec975dd64e251a19f31730a2b004cf0801980167208b28bb6aa6f6e57796d1d0d86f7e877f2a79a2b93456ce987c98f7ea0e3eb55a002a5defaccabaa7c443a4c672ecb1de25750e6516ebcc3a0eeb96f51cacd6f9a0c37f99bfea7018f5d3b9f1631d763e3897885b36676b81ab091b19895ada7809e11601ce2dec07745bbc09cc7bb876a459c1ad1ce71d9270cb46c9921f98f0352cb815c4f9da92d644e67ced09b77cce87dc01d19978788a51560f590701ff7012f0cf1302860260a0c0d001060c5ad42cbecd700e19a7e77c80d44b4a4b6d49291c729891c396430e326a74d418a088956e3c8e778479570c3b8439f21f0f77ee10e31f0b00ff6a8d7f2e36fea502902380693fecac0ba006a0f6afda59778366e63b4d53658ec9540bc02377e672e61d7f593333f2080f111f5351e7703cd82ff3b98a53f82623d539fb6528a3ab8302eca712c27e4f80fd3c04d80fa7653f9dfb998a3aa70b324a52b9149d8a2e679b91d1e517fbd103d84f1544e524ac842b320d758e296986fde81624c37e2a19d76100aee8ea0084fdb21feac905f4c5265ffcc58fba1e785f5846622f7aefdb7c9bdd0d1bab436d6a9c8c84bd38057b71c6629fbc3434d863fee2347ff159b7abbbf1c2ead017dd036fdfcb617dc8eb1d8bb13ad4fbac5c84bd1c15de18cfa6c22bbd1d2e3b1c3bec60d9c81be8674a2a80fd321ffb511eb8244ee192ee934371e355a2a028d4c5cdea5d10b738029015dfc3139a1565da8bfd543d49dc824354c9b03216eb7cb87118dbf7e13075be45bd717aef7eff70ee771d1cf563a59a5a84cca17ed814d892cbc7a91ff6e4f26dfdb2266e36c5973db9fcd74f6b829df08100ef2641b8d5c36fc4abf4607568ec210689920016b277090115b9f334f58348978663af716eec56410873284684bdf84cfdb21b912e106ebdb0168048776e3c839865a39093eeeee9a4bb1f9928d6904197b989fef1653c7062d1b11adfb1766721dc22376117231046d48f1dcd3c46f3ee6eb490db48eecc2766773a5668827883cd4ec67e4057e6586d21ec6132a8d469aa023877c7e928df36082f9d81523f9c8be25d945f14d5c5509e71cbc58ca3a0a09cbb1b302d7ac6371e68cd8cfa01dd19ef7f30e9faa78af1ef00f8e7d5f88763e39f4e00fe412301fc834703f8079176fe41253787e7f1947328b35a89a766cc6a56b700ead165968d0a9955a3420640851ce32cee8088f3349f014474671ce646e75d6fea17efcd7da0b15fcd7ff8dedcd47863cdb748e37dbb39cd8ed8f603eaca7a1f46fbbc38cb7a30fe22d2bce66d6bce34bfa181d7abdf8f7b03746fbe3147a3eadc1b198fdd0d1ebef140b1263a9cc3a838fd1cfabff9ecbf9f03fffd693f1d1e7f7540e4603feb6d3eedb7c3b43d7ec4d3bc78dbd5ccfb34b1ae66fec9d58cf5617de62c3b6321eb352f40fd8befb001662ccd65c080f1193b1d6d57f17dd62afec567b43ef1de3dcb7a6ba61e8695316377d4bfb03bece7eb0f57fb9acb2ec7cdad853ad89fbe39dcc6ca1dec4fdf03f1039183fde2fd5fbf236ed37c7e9b9566b26eea99d37c5a790b048d959665bff89fbe454538ef9e8f44152b0aa27daca89b88008ce32c41189f3787f1cf8af35abf1fb77e763770be416e7967fd341fcdcc67657d349f6155ef2fe4ada7690bd9a3c1790dcbdeeec0919d0f8efd8076baced41d303ecfff0e6f93c3a9f3b063d90fe8b24e53bf1f97e63333343b3d5369ea57df3aec6eb076ccc378ec72dc1cc6617cf3f960fcdd8bd354d667eaf7e3cefc45d5c1a27985e1e17cf539f7ea77c48571d8f9d0d89a57fbc317c66b702a04ba300ea3de3c5696f7f7736bdeaadf8f5bc362ea6ec8b03a94876fdd0f409707fbc338fa768850e5d1f98d1d22741e9d19b586997983d9e124a5244a8ed8632b82403f8ce8ecc1c08a5cfc9efdb2ebc57c7bf1edddab1c2fde6f7ba98002091538c0e26e1bcdbb76e7c37c4d0e3e2a7ff1a242f6622c0c1c2cb9ac0ba960e2881d222d6496779657615e536572b0357d1823e6295a15c38a626badea836f1f4667ea70b0dea359871d0c8b110181c6fcc388780af67a44e6a29ada25d58e49944a50acc8624466d08c681fbdaeebecb113985c8ee6de074404952eccd629716bc67e8b11e634ffea99a85bbeb5c0e134f69317e6f3f3dbcce425746666da2e893d16cc7718de990a6fac3ca0d29df9018d676e9af399a8c5b7991a55d7a4a0ac7fa7a09a1dac8d7187c7ca83bb38326c66e8500f6fbc1c0ebb1b307e0ae2560edc6a9d7f12e2168cf34f41b8f593106e79e7558ef8f96977a43c1e5e9a6f51423eade6e17dd1440eadca4d70d12b3bf1446528b848146cc407142b52036d79cc6f58332aeb505946e52251ec50790a36aa4c14c37de395ac4bea98700ee48981b98bbffcfb5dda25c985e6c5a79d2f22cd5ffcfc87ef8c0eef17dddd6d6974d0a16f8198b90eb1760fcdd9427650dd88d94fe65a97c374633feb70d85c067b0fb51094ee46f3d6028799faa2a64587e7f08df5ae9f8c33d136d1a5b9f71d6e13c41aacd31c72ebc67b9ca14386fdf8e31672697090f1686fcfbc671ebd7bf68b9106c3e14d6357de5f7cfe14d439dd8c1cfb511d4e416d3f9ff8d611df347d1a7b597ff1af857cf1da5ceb70d0bced8ebe0ecf3a1ddc8da7b16d8224d373eca76ad98fceb02f685a588783e63b58337ed1fc0aca564c2dfbc9fb8266c60b152477eb3a6766666666eee9f0c2f631220dc6713e537b28decc7ca765d41d7e53efd69cf79978effd4fe6b6859d0ecf66e6ef1c009c5fd3f21c0e008b117d879d13c366cd82f19566e1dc74ca394cd42dfebd6b72785b99bb83e69146e6b2de2cfbc54bf3c9ce687bf1168f9e5ddd7ce6f318118efd54302c91d69f91b9de0fe35787c3fb8e68713e3b1ddcf5e25b300edf0186d7c7999f37e67653e3a58991a6cedb3435ca7b53e1f5ae43659bca4d54cea1b21346cd2d58d6e8f24c1572bf99bfa81fd07df102e6dcdde00195ae8b33ece67cccb9f389f90f4097e63456de997b67f190b99e6d13c49b99c3a89fbc332faacc672af60d72cb04b106bcd8652abcb3855cd8359f8d702b665bbdc5210ef65325f5ab294955e3a2c6b0c80fe776f77d553f793f53e554a7207a5956eaaa6f4a5db5f5816f33b9a7a7eae9d8096523117bf0a5c140afa12b686393fd5458d6b14624c12de2ba455c4dc49b5e4deb03df7926e2268e3809e77445b8084497efc7459799d90a8ee2f267ecc84450d00f23226a825b478a3074afa0a0a1e6eebe2e7fd9d57c8b119e1f2d4678ae37f334116633d64440a1aa595db7d4394c04bba4cec158c5445110c1fd30a2cb2cc85e1ffde0e87a171e49e1c4fd81910b8fa4006273e1910fa27073708c10e500092df0c1139af0f0639703bb99d5cc40e1910f9670e315494e499a3c828172e0ed8716644606da5c84bc3c746e0ca28d805bb007f6e077d8e3cb06cb187f1d4e8aba77c99692aaaeeb19ccc17ed98f7907cb0c3301955136d723186872f6026e351111a000115148c5d30d93767a2022024c4870e12313b14544f4fa7005c21444eab3605ab61d9e0e33e8a1ce527550ef9f2bd4bf8a529494ea5255c6689d01bdeb3a3cd8c071e7fbdc32a0cd3523c79d3f5519785ddfaa09bb1c70276dcd6b5a1becf589e89c2894d15f98242f227109c8ea97e0f6fb465108daf4756eebd8e056cf4b5beaa4eeee4e8291537901e2c84392528e3d66e66e567299638f3968c39eecb8c931aa549ae9e22185220b4187655c3eda6ea09aef3abe2084b1eb70c4bb9d1842be01bd1ccf4b6e11f2466b043332ea42870410ce109411d558c217ae10c2078e383122451184864e3d9882810742a064061c24e1046930f2810d900004ed9a136820c2134cc2a0440f926610c5d10ca0681c04751782d80a3d30c191134a10a168094c98420f9ab68d1fa0fdf100ea1895685dd098684c342e684cb42e685c788a4605213807f200dd96ef46bd7be3e1dba167b0eefed6dd94d253ed4129a53702e8526b44f768b36fdb691b82fd54bbedd16e7688b4d794371d7b12a6eb5a86f5d5f37dc579e140c639af1fcc961673ce795db3a585cbe77c6a9552a552aba99a38ccec73ae3e55c7e133e62fab9867317789391673554ccc9c73ce0b06665e308f818930309f73ce3961601ef31b2e647e9da57e2c2f38bce0a0fa0b06131373178781b13a34062626a6cac8d47861625e5edee2e525f5f296785194d5e774f97c7cc2413087a990bd982a65626464643e23232333e342a59a2afbc5fc8ab98b982de62eee22c6ee7051fdf3e573a6b8f88cf98479274b952e25fa9d9ac413c79de6e9743a49f995240ef54dd6152529bf22ed24b272e28ee0510f77f995ba5ad9b8938acae5c3e0e11162027a904708099e10b42183714f15c6ed51cada644f4e8a108236a8dc94ac52157a35a1a8051267d404288a34e108f302fd4e4f9c3449e212dc952d408fff6542b28e33a1152f406c25e9747e0f37a565b292d44bd86b269dd44cd8e3f9d1faf5178e30f174df665d51cab1f2c91d428eb35d25c27d3bd515a5bac264252975bf952478777845895ba9d45d49e2967ce1e1254e200bde4fbbf211e6dc254b9005afd19556acb84326775e7bb93f704e54822cf9a52b39e87ef0e8e59aece9097b522e519eaf8f326e232c0bb006bca6cb5c1b711c5f86474b58e2d613ce511559c12d786489d2e53e1a8ac2e5963086fb759346ba9cc4b6202fedd505faa19eb03771f0c98994524a989d3ea07b0a72332120d811a71c2525710d8f7a609395eef4c4772a82478e10c5959de404c5c5b2006ff8d81664913e152561598035fa08bcd902a4d154401b7e66538c8c34eb745a09c25682b4a09f30ada9d2c952258c2a695609d225ea24052435b462a912765d0c7b200d78b45a05b18a371d88075e0400f15c07e2b9ec2ada2284b86eb23fba5f4700e4311de8aa5893cb41873cf4a71950c8735dbf6cf7c8d3fdbac912b1405c0a0aba90e70804b48d9885a87358863a8736d2114b1ba51ce5a91b2fea140890d4af0351b9e92b8942a12e8fa2f6878a35fd47ca02f16ca6ba92575d49294d76058f3a10cf0fd82c685707b86eba10d74d8737d91f44a015c27494fd61b2fdc3a8597c133c0e78538e289d92b2a4a4a4a4a42496a195248a05e75ced1d754b69138ad94f459fa02c6c9666bd5490cbb65342324ce8f283a480b0479fa482a813f6aea06bbaa4a05bd6ddc88a5c7e149759a0600f722c4e48092f5972401a3ea80fac21cfef8134625371c4b404cd0edf419b62046d50822ecb50e7ac14e95e2952a408cb50119621a5221ac49a34a6b5d6524aae354dbb86d50fa8b7ee8656a7a61db2c77dbfa7cfa23e41c8399287b39f84377537345377035a1dca5919743a1551a5ce59c9324a55aa7f256825e8ae16603d60fa75c803ab074070bdfb8fceae16607af7ce7aa0fb71bd3b419ecb9e8e9a858068aa44563a36601b411612121212920a924a2629a79a2a452a45978fa914a52ca550ce264d9b94b274bd6b126aa33e6aa45ed24a9afd54eed746d002f1f0af0ac4832d31f6845b42904654b91f96f49351b38c4037fb9d968c502cb0246893056a84a48f3ed3921528ecae3db41155822c3e84dc46271937259d739d2a6554da8f46db45a6a5ad8fdae8a24a9d6597134c4b6db4925406d85a09829713600ecb907ca273aef32f2448639e57906892518166e10ba7a2cbc9c532d4393dcce267d947552c43972a15ddcb09029ae7fa0ee78008880c8044708ee999d23d6a16964406e85137d0345cfe03521fb85407a4058034684fac41534860e109bd140d4e809abc5661b70ee8976118961d654037ae2451a5cf846d1a13f45b49bafc399b67a5486c9e95246e7d2b452e9fbf5264258a1526b3b2185d40f18828b521c09022e5e5f528f44525542a1e2523938bfab21d2e721c27e545ed609db5dcf8ba2666a766b1731d0ed3a78c4cb8857dbebb1b53b31cea58357d56d461e79c8b421293a9ef072525dbe1388edbea4ee7d067dd7162973108ead7df3938544a198550578723654b39cda356544c98fda286c98b7aa6824a414d21a8671d0eeca65314aba1aafc4e63d7bb76df9abb4c524aa9a12496e3ba26639fdbe2348b519796da0cb31f0f8e07c783e3c1eda0b08cb3395056da55866323131f0feea27efaca7fdcbf18447e07cacaefa050f63b5908599cfd62903b1f998835a4fd8cb09189c884a95e575e794c7e5ed3b2e01111484b51c18c58c65139796acfb0f705676482c98550867989d7411dd4845763a38328719eed74e9761017557e8267d4b0c776e703343e11a3e5279c080223c771b2e37f380ac59bc89d5bc5c39dce813c1c9970979cbc84fc4411c75976a247006d24b4fc4407813691089ee3de15258510cf6375d010345a01692c01d24839dfa404fdb80895a5bec1c3b31316859fe0c87c3a92a00b8f50b174ed8547a850c2f5583709fa45131214ee302fa101a96f877601d4fe886028c243bf7d05d9e3ac0bf45c643b08b2d8d44114de4c0a2b6007bf588483088815f59dc67e8a4517cb1e916c968b90a09063bc94524a29a594928b8aa21351e6c422cde2ab89e60e8226101435900e92d7d5dd1d54d4412dd4411ac82fa3d24baccd166460082154ba1fff8739f8d85db0c247269785dc1dde380a3d1e1e6e6a8892bd5f694f56a57d335dcad44ddfeaf64e89162a7556d5e070cb748a5c472995b57edcdd3ef90e25e5a60a74b79fbe283632116f3a20a92b719e9425a23a3f32d175a7373aab43237d3999deed307dbb3caa9e5c404def2cfcd69cacf1aa62a7c364d2ba1b9cd5a126ce6432598e7970aa35ccfa34704dcfb00d5c1c80b303373f74f080cd1135900677eee426d9d33e007c31be1db21729bbaa50f69807cc4ded05408868998d6e089fbd31ecdd31c27ff19af5d8c3915655c31ed3ce0eb3aa83591e3d742fbb83042d03a5d37a9fce11822ebf460612ece9b0a7c22c7ef1a80904f4d3b181d47d216d300655bafc28a40922d9a594524a29a594ad42c433f8d710e2241aea565a724244bc2466e3107b4c14a390a30ce9dae9d84b50c9b11b1bcae43b0e51baba2d1f8762d0902a0ec5206e43c1c673ce39e79c73462d43cd438bcd39e79c73ce39e79c73ce39e79c73ce39e79c73ce3937edb12b10c7ecc90663509a215d3ea7b2249df00cfea6656104b4e117016df83da00d3f053ea00d3f03d086ff036df8f1d2803fd0c609b762944b4edaaea4f5215e0cdc782f2cd04f2ec199342f9794321e8d09fdd849544a82361c93b2a3ce9931492e4d251a13f4cb94482e0bbaaad8e223555179216c451a310ccbb0a67dc1179641e2c95c10c9bde40ff9726bd893b92e1b574a9c531e365497952a1fbdaa176cea4419f958e5b7a892919721e2f67f667784f37427cc42d29f1e244b29255fddb1bb5b76cbee777777777777777733d6ddd8b14d4a79bb63ecee186d774368d3382d654b29a594524ac910490c01e5f79cdd9387fcb43c1f85287f8b56b6fa8ad7bf18e3f52fc64ba7b72de31673c32336025591e1646b46ae31ff498e73d68f87ce8d8fd3d6d3d571f10394ef3177b5efe7b69536a3f20bb4460551e88b4131e889cb8f40b82523932631082331611293ae98146dd2a5404c8a4a118bc8c489067ef0c048b04109d0fe971d894189cc32282327b015b95d5d0469428f60e8768547ee1685de70bbc227dc8d9740ba5d6bdcad45206f70bbd2dc6d26b95d5fdced62820db7ab8bbb612bb85d5bee9615b95d61dc4de362855588600ab72b0f7733994ca72a820cddaebf71049b0b054204c2d3e643bc1b85d896a250b2123be1163c628421f9e489d6060a8db4a0743f56224aba7cc68273228f137ee24382219e012f94f9b222979b4427f1c994918f53087b4aae77a1d1168adc2057e642a32d28dd88b4742a5a03fd95d7d64051404f175621b474a5fd7070aed1168a2e8c0b8db4e0e46ae189fb72a19116825ca48c4866449d93696ca045fcd09bcd2006f0c688c91437e64223264d5ccd7e409fcc755d11c3b8b92ccb5aeb706837e23529a5c934afd9e18816da343c166ba0bcc44a51d0be440155b9d0880b4fdc1b6fc71b63e45f66ee370e0ba1d737fa2071c8d99d8a68bc373b1cf6ea70cc1bbf61a7f81d86368b4d3e3b1cf15a9c4244dcca02d59cd01dbe9628f6eb0aca8f9795a650ec1c56824aacd457d0a4a03146b6526a525e58a0df14ca8a3e973ac7f403348fa9ed0797b2c32984d5b8c4634949ab31293251035d1a8a465a30badf14e2d6c74a973f4e622653885bd0480b462e7f0661a5ed6a97b2e2e01eda7de02b6510575e26b1c74351695e817e405762803dbe92d00f2eb112fd81fc44a887a48c31c6182d3624c397ec51b8746710f618c618638c31c6282b0f19cc4e216d89493485e69090198405f4a3dc72825b31e741ab089fc110618baf02892617568104932be3c22a90d0c19db7ef36b9ebd4748765e00536204a9c67fe7a0fcfe0cf1a04cfe0cb30d02fcba6b044a7e0441574216fa859504951b320235912440f127904891546aecf154a5b73f23aa181eef00e5f81456f91e3253e5724710b5621d4c48577e308f9e4730516dc5ac9c72b6dff60a3028a2697c9fd7e18f5c9fbf1e01a48cec3c844bc0972f991053a5c87fa7ae337642ef3177f718a48454344425c6ce28b4f44286291280ee35f9ce276348a486e472be2b3186d262b90eb317e1e6810f6d803419a07b47970932042d86324ec10b287598814838290df6126aab056965b96c7803c4f5cdeb0886133acfea8e4cc75c5510c9daa1901004001e313002030100c084442b15838229224c17a14000b9cb25476501c87394c29648c0186100100000000000020491000ec832c0de614a017f6ca6831122ad3b95878372889cda6f3a8bee1bd3da258bbb0f04556664a536af61d37c142e32a98d3a8f54b623f02192ebc7f37c13983ccb92eb61af42cad4c2953a07f4ab3fc9c5d1fba25e9e38c2618d761171da960c436c6630b41308b98530e653623c8a4e5f71e0329d014f4895f67249299e0883adf00692895f6f44990ec464ad81d454b8cae391415c65448278d09797f89b9b03e695b003cc6c6963d6475826c0b7818339bea411d8d78072fb60e51345f11ac7cff989a1992cbfc97c9e2c31f50beed3afeffc803ce4ffc7dc38c9b7606d993d7f76eb834a933d1fb2c28f31c0c68121dc51a0f74d6490d427c67b595129e5302c3b1e42cf6f3b01374c1e4a78e7ebd6ac3270bdcd4bb34da5024dd7ce5cfff77f7a3a3493fb246bd52e39c9180b3d5eb97d06b3749181472911379f6dd4b458473c0ac642f433dfdf31a12b3e4ad934626e49490420dab5bdf2206843cb614b9cd2f4371c20c8e60b2e5399c322a1f2e5cc5c63e69f793f119662d110ee737829fd1563cc9de5dd6b5ea38a685b8cccb2425f073bc527b42a0ae56405de06cfc60abc51db5cec403ad2c0dd7c52a330e86365403337fbb240efd14a930310ce68f4904a20227b93cbf38f4ec10e3d326ea410c6133af18378b4dd76c1f8928c7a99556c9a897aafa22adf94687f8fde53025cab62fc94c8f2f149594bcef26e4dc8b20136dd528129c25423b4a7678c3971931bec891e7f73e8ca3ed97f82298f14f7cc5747c2d503b61fa703518ec264003b3c14312ef3e9324c427c2ddc31c5127206f8b6dbd82b40e40ff32f85e3a22eaa7b2a8f8bd2916719144e3959391def1804da5fb5e988b2213076389e9551cbf2b972441892278b10f18a4d3b162ad1b91ca002b51b6e280da70d3bbd884521ae18fa3e98260a2d29d4078ed039b520e56b0ea2df458850f80cf9e242744d56cc14e29ad94a31a9fb26663604160cc82b05642ca75592161a54c883551c6f2ea4a3f61f26a3f639b9f0622cd94f948f9b9c26d352aa58e534347b45bf28d6ed6b4d741c2fe02145bd9e1e76349fd804d68c27112bf51c8592fcde3067c4137f028853b8ea549e52890b287302fd65bd7ad8382f84ec094eef65eec4e0e764317987662b9c57570b11f74fc474762450d0687b646caf68d33a9b4622dfef843bc21ebb693ea63fb8049fcaffcbb1bd5fd055677d38605d6d930db9f4c08b50f6a4233001a052e70d815f96c4ad1874287bfb644f12a1fe91fb642fe2a5de41a9154436bb30eac06386d3522857fe1f9c8a50982c8496addd9bd04c0062e2d7e8722041c684a5bd500f24c3853a3c11a2137b93c69519fd8b8486ac878bfc06c566f8c6607b6109151e052d7a8bf64e8126587e95e0957d52dff600eed34be87f86d904104c721ec3d572668acfc84c6356db8e8e5502a50859c725938b7a7716445ebc9c257869494102beba436d214a56876084cf5534ca381f9df8b337e61e54f9cbab1ff6bad0c9c2f13ec2912108b175a26fe513bf8f91813534fa1f3e137b432bc1abd73f35247a27b24b7efac941efda3077a36e2b27a24339ee88f59b7093439f1bef5c27485e3cc2b6be0869fefdf28435e4124884409fb186ed52a3461bfa0876e835753e7f180c41faaeadac56f952c3c7196cb37ed83c7bd3e7f840150317c72a9a0095a5749de4291f5de4339159843c0af417b804bff5ceff6eef4ac6e5ab496b2cf6f513bb7fd8afdffac77a2dcd1378f3a410c94bc6b0a0482375fcbdf6e4a5de147ee5d54b6f8229a2a2333e56a00f6aaea020d84fea35b1f0c0060139324be9b33f8ce1d53ca1bd9d0765f64ba6990301f4e157c3421cad1364105c190b9fe418741fec203e9ed57caa68c8d2da70f6630114d5859e29bdcfe116d54fd7b92bc5f02d44004bcdd03e9b37f4e96c0e840aaebdd13b04aab5af1b4a727bc951c9e5e8e99a6c4860ca5532f3ec7c7de50fc3dc36d0afd19916ec3e705551f8214b6ce35491c47adab2865100fa130848d0a1cdade223fdab8c4d39fb1d0f41a321720e1c5b38838e3d540298e5ec3f12908ba355ab19756772d317a1532f2398982ef0a7c3d67f3461a81a6944ab66a99aa8b76f0aabf7d0178e020e50ec7443a52581cc02e87a2dd181ef04a403b6a24d2d960dcf244e14da8c6cc6d3821b2d7a313bbfee7ede81c7fb8823ba9946a28a4a10747a1cd6ab8c837f678091919145ddd1594df33f1416c6b5cc109b9a891bec2f6f47aa2d7648f1836fde292a2429c55a982d77134aa1286a6a770bb0eaedc9e48e4c211965af54a39935521c760d345e3699a9947f89785f71c146096bf9cc38998b82da65fa7783e15fea43811d29031ea3a3685953a5dc7a2f0cc88b9dc0447ca28c871d0423ac412004ade48119d60583249e5f2a700aad489c0fb544c3eec89140fbe86c81156152fe48db57d92cc3f734aaffd9e3243d7bd3c7552877d422089d5e13a9c134ef0dea1cc81a80ce96608445891213fcf48201009536262080b0044129cb134bbfd0dbf32ff89a9d6504c3ec982aff22898d852ea8b913a4995d04805da08be48892844442fc74bc5fee8332d4fd183b178962f158320d0d27ae4bd540743e537997b76b76819122deee81bfb2626a87b427a4c2ec111512cc6a48f7e0c524d1b48696e609d3f2cb43d96da0d2ea4976303235b2e49f0b92c24a02e2fc9a1fd422fa819032fb12318fa2900ff770e4f143b5a243995a95a1078fc9843859da1607184aede4f2265ed6aa3825ed2cf26618c252b919eabdb4743c578e0a6d46cc64a3eaca6e37685c1de748b4541e787bb76273816d4ab03c117588d8147cf88c07ba08229918aca38d2e8b77214b338a893ca9c3271e8fd974b93618aa6b369d15297e31e8ebd791d4da903c41ac2cc199972d7f38f804d6264456a74b8ae54a14c330127350d2a5da3bcb8433da4270a9c06e135edbf1ee61f4246b5c7ec88c3a7756083d647fe5d6318df7d758070603814aee474920fabff4cc04fd946894fd91c8da2fb9571015504762a6a13c0fe500ac0c84a63a72cb468b3772c6c1dabee1fddcc88b27acfdb00b714648b07a0ad479e3d8adc98f94f52f9816d28d4fea65c38ec4530bbac807d91d1d2e4ba28d7158ffa14704c5aa385eb9b950ab48920ffcc3ef71b9e676ee55201cea14af1f11111a061a8881c66afc5aba904881c08a19e4f5153ad160e54c5bb1e55594cb40b65b2ee5eb09d66bb14d44b1a257d94cc2ef87acdc1b344ba689d6bf204eb7256b34cb78cdb1c690088e28479282d43234c735141f0dd0b6e7542f293464d99973a4d189c7dc826af41183cd19fae6455bb27ccfb91e4e3c9037faa4782cc16a5d62adea08ab44f5508b6d13e15cc53e947bf9aa576f6a92028694705e64cc866df34054440a8a2248cb8719065bc620f7cd7931c1208bc7aa5b052a6a842cf134b8bd9fec2f65624e19927aa8e4433dd386c68aa743153bf96728f2a5afbbd468a0210c279e4541837aaca2e5377500c8c3272ec3037291ccf9a5e9209ff5d6cf1caf596fb6951ad5c8530a189123febea3b8cd0f6792a5d99f7ee137a4355bce0bbe07f0367da800c4c30e13c3641ad1bd01f6734e55036dec7422442b3619cb3e1a3aa211dad2e80595593c6da2a7b678d23c0da12b9f5a13ab750e196687fa89094e1488f031054b2c2f5550d0c93ec48372526d859c4f251223fa89162e0e31e0dc3340eb756f16cd5a87ddd9d5626d611442425ac12e00ce8b348c63e3f1f740e1e5de28a1c55a3b459d0b0f774b95e7235a8238724de1e5389d835a4afff2a24359ae27735426c20848b0322dd1c8c62c8038410ab4c344e7edd6df70bc65551c4340620aeaadda36197efc1cdd23df18bd1e0de773c1aa8c61ac721c384100a56d9d2ba6229a52606783760c6f046606ff02a1ef8a3ca31039ad804ab6246f416513c96e8d708c559eabb0ef88e22ba972f96e076bba9aba5984b8003ffd1e0c4e14871756589481b61cc37b264bd6bda24cceeaf82edfb771d40067212e095b860f8de7b356918a498e7e263bc606b3bc0bc32d4ce8633cfef90cf8a035fb97d57c312991a5e57c57b25788aa442e236035624f386535d582ca06bb81909c50b8c5be9226de933acfc2ea44a1fec546c71342e21529ae0356ece6089c81a5c6788d3cfbb0778dd285bee72786cfcc3e6a082d8ca43e35d40eec59f39394b6a36907aab2efae3bd22dcb10e6b67dd5a6c924b8330e0c967035299e4fb1de02a8bac7ebe03d133bca4fab41f51eed6547a7736b8d2386c6bfc98647cced9434f4e28f69caae892f518beb9478889dfa143579e1e790ceb766f285395a9ac4c26cc6b480193ab6ccfee5b6225b5ef8098392ec5607a56fd7f7f1a4270fc802809fa7342733ef8c4b3ad932136f219b149db2b703f8f1cdb3f74c51277ceb9107632b5fbced00a0a8ce58bc2a3c592fb08e0f9cad6fa59160e39c7d279800fa890a18804ce999f62d705032df8cea20d722ca622f7bcff25e4457d060a4f904dc8e020c5dfeaa9688c0dd9d00011f48bdbc190a998823f638a82059f50ca14345d17aab06fb48043c25f9b054493d8dfae5594b3baf7b2aeb1fa575ed795432160de9122f00624d5860f08c3c26ac446cea7473e06ad0b36c921cfbf38a8d23c647f7a25f50f7e3e56dc5a5fa182d7985bf6d44a84851e354813616bdb06668d3f0f662bfbe9b433fe720891700d61f823144f4ae82cd18bb2a210210b1c4a44a7f551935c6f3892acb9bdecd05e5383977d60a9d9f2d3ec39dc77a0c0c4ac7b9bdd24051d19bc1dfbb928d6839831ed9430dd2ddfb5590da130960f3d59988a5d752da3fc3d1c41ff21f00c7e39da0e6dccc69fefc77d7d56b7403df0ddcda2a797d5d16b4e7707b75d9edd416293b0a35fb51d73cfa67f09d76855ad0680130f73cc4a1c76e6b3eca17997a3445914aad04dab90284f557330f88bafef0f6d1f22ccc8df235eaf27fd43255d7b04c88371c00aa48417ab1f497ebcf6c2ab8554a84333529949b63a5970f7816357440c88e34d9cf81a2b5b0df912090ab79d014c4e60c5b2556569f9af99fb81c842cfeac1e77c7b8c84c6b8ac54262f7b7c4b33e6d1baab095ae01755fccbd2e9ae78e8a14f1c582ea50e026fbeeb1c61a21d3f0b1aa08c498c62384586820cf076fdee07204125aa19688a91d3f5fa34992e7b4d98bb8f16a1193812709fa2192044cf1df8472daa0698572e56afb8f0ac811c6277cb784da45dd4e12e17d8ad08227f384594203e103046c7982ddda23d6ae97c0a48b9a0058362b37d2db6412f162e1f27adc826773ab7d737c09ab52c7bfbb6789859f0de4adfffbc4989e234cdc4dd6e500b3669d9b040e44b5bbe59bd05b9af0decb724763210483111a1db5790f21d386e41e02fc50cc7f12c330188a0ee206d7b6e518bae5af85e4fb54e04cbe7843d56cca69046ff3e48e5527babae695c35f3fa1a5b437f595ecb0fcdc622cb8c93e5f31f061818fa26fac47dccfd2228d80fa463b20a7c86227464af6043ad1da70af8375c917ff96126143035a0100c827ca0f2485cf5cfc1b104ad9e05f542ae800f886a4b0f394e625e8bf2a55218cc0e682e2753317e37822067e8118a9900b5fb0c700c53c71a962c57195f42dd3ef7285ce47bfabb413fbe0667b2c0e737b7b9de2c992fdb9d04ba53871923c8db2c50c608856769d446cb0c975591862d938f583c9048ae7b1415c550469ed64bc09cc98c0443f2b7190802da01eeff831406b8314ba5344a5fcaa50ca5315d3db0ac5ef99b12b61a5cb3594a599939104c4bd19835aaaa0dc9ba93e094847106fa53ae437d50b71272d18b88f27d835d30a090c0ede0c74e7da6422124318865b4b5e1a167ede0c3fa553acd8be9ae48127ea19b83869ee691c2a065cbf957e2a84c868a531d4cd84b3417bb6ba8b47e60c87c916c9a0635a3253df0dd091060bc5d2e2210c911e8e180dac9222f79ae3a2c9a63c76ac231db36659b6f029b829898282884b7397c7bd9e70705a89020870f46f6ae50623800c23b93abc0e8a1a733a53c214a8bdfcccb8931c28fe44ce0a04d69a1bcee344b03588eeb295039919d699ad74da80e915900eeaf2b17840500d1bdbce2b5c6dbad9d799836f85b53b95c88baa04e7a05d8b2865e5d31a7f4730ca6c4016f775e65e1f07b0386cc5cd3d02d7ca1e95b0c50ddbe0188a1fc0e9c5ef6accbf786fc4daeb4113868c1c5e57ed921bb1f415d9ff84f34e55483b1a6840449771c69d5ca8f998ed3fa064add8a36c52cd1b44f596b360c8b1518048a477751f1150392cf018c3a4d79a6088c7024fd120907e664f8b50f7822fb7d9584d1eb01281f08abb63bdf4b11fd920e281f00b19e7a6ef36ac2bb343381c09a715351985b848c38d25824315474266d23cab69de13e4b5004b9f04ab09525994d75920270e2d2b761cc0acb579c0fa71dfb1dad00b8509ddf70b20585e0d8d0b7fb025899b62b0b18f399b3a68182a5ecb4008aeff4634c0af6642fb3adb3d07de2d9adfbe6c13b203ad1216d51954b04266c177c8aa0b7e57d05e9a94ea52912ff3857b383fd38b6282002971a2f18273a74289e024fcaa8aec9a2faee864083300ed79f171dded200c286045d053ea3f3ae3e3d67d0513d5c7ae7468a9b1b1ee3aee3bbb60ca6b5a7423c3e42ae9dbf895bb79d736878e308ec33444f6b6c700ae8f59d2632b8877494a53d08bccd13c0032e81cde57192af82574cf64ce69da777c70698f6ba82b34f774edfb13534ed7ac5b39f779cbfbb6530ad355529ee11162463137a64554a3fc01063f1878539a0e6714e96fb4f9ac6f1a73eec7fc141a4c76b1812ce4869018bb11fcbdf55ba92a5d457a023db1e564e7e96ffde30c9b37369d5e6224de18a91a4435593aa547b49dbfe8af387178c32f238b44b1935fa4f3ef4a56ab9f8b7155e2a488e3c60ac504e1a7eb379b3c10ea714f6358c6770502599d36c36c3d437e1fd157ae52e5925807fa21e2b54451d6215135bacb6be5f14ccaa82ab2f8124d648ccb18ae88af42a67ef796c9d24525b4cc120b1daeb4ceadf5fa978e5a11f31ff13e72d0c0e199bfd398f88878cad8045d3c3b6461e7447324eed56dcb93d5eb1fd4fea55331d0a53f50d030e73a6af9d78d1e1a197f3af5c8af69d6c6a3ca482084940e99c0c5daf449a36e3f4a4d6a454d06df635043cd7978ba7d60e21f157f1a6489713f48e6e81e50262009f12d5cbfc7988eb578f813d500c2addaa1f36b99aa9605d679916fe95f29d128424c1a2a1c560ec35cf62a4df839db75a2e271077c1b507c2476fa4e25eb96972dd1f4358f60fdd419b13bb9d0d8bb5ad0e5990ac79373fa045e4422989ba61c6e029e90f5ce02d66d1fa1f8e26342514e826251b6b4f0cea1257f6c8a82ba09a49a46d180d3485358edf15ca10a785efec57574f527aedaace579126179ef05d580fab8e6ad47c4680b958e245a5fd35970f8c957c2a9795418abe030e3701aa99dbbe3d6d2a5eafbdc04fdeb313d4f3a7cdf7740667cf556f7aaf185c1a32abbf05455447632a07edaa24de046f04bb3db1a8c18323e6a0efe322f78c4f4eda3d0add084e8149609e64b963226868d14a4a99e242c98a903a07fc65424bbe5c3313afc9fef61f361b0fd4b1193d9bc31703a8b7423477cdf4965a0a7cdaddd4e421ad8ecc53adc0545c4ea7e55954aadbd5ef4206f111744bd99b2026d8c5b102a8209f2883b3423a3ac30fcea3761e136e1474ec1b0f0e06fd4b8a5dae89ca433e6d454d1e47f823f5f0abafd6e9d753f48ee76ee342e14ac20af680083995bdaa93aae7882d39246f1cfb93740a09459f7b49ef460442967e79ab5d49920167488fcd8f5dbf21ce1bb639d1b3fd6913e1c6e777116603c6ba38ebd1085243e48057ad3fddc68e689fd28385c69d54d41bcc8cd9c3659d8c623a0045d1640e7cb48a84abb82a053a48517703f9cda62aee5f6ddd9c5d4f2d0abe5cbd9c1c5ffc8362ee03bd3dae59e2baf2a31507f7070d6935b3a89c2839fc25b26f87beba3d05058241b95333746abc0c74437af2f106cf4b69270cf5992ac6439b84438f4a445dbd5d2e86a53654549ac7be2a5cc9be43d99e1961ea8eab01aeee0acc71d16f564db8eab9deb5bc0f831e865b3356d15c0b2ff2eb40dfed52c815a935cc6d4316ce0159941fe8e2281fe871fd8a62c9d2f05c4036ad2325a949855c7cfbf96c693a1dd9fcb678465b9c3fa992d27d32c324f8a5560b98d67ed206a156884b3e69647371038888d6310308aafedfcc7a154890328f1d6e7f92d19f9131ea154f7cf226e260e284f91627d6e9f2436e9c8088653c33d78fc7145c853ec469952cc3e3a96c798f0d41b30370fe8a0c6cd87c22bfca7b8b6c0af843968e4a3c2469c0f66fbf70031747a0a785d4f46dc748ad494f3c218a0037494671c6addb4a46f682145303a4fea42c47e6739619071bb1ab63f3f66e57cc13b32c06aa2cdbd07b00a9c84e25196506944b833aa7c77399173086480b42ed0c161ba27a6adbb5c9e67b02329ffc74287c6018c898e82fc6a12fa5ddda68ad8963ba141b60cfa9ab9e7a07497a4824c985008ba0d3de11bf1e76d28f502c026c77c51cfd62202242d4c37f4488fdff032161759f7c05a36775315e76c4249bbb47365c8ee26413c0f929f8633cabb704684a341fc6cbeba66da5d5ad04c77d656a340493d0dc140a118be31500c45a3639e5b42ad8f88d13223fd877c41c0f84b7c8ce46d823c8efe9ae3b195a5212152d49d6a202458971fcf2835929ea1f699cfb755bb6b069fd8974508b550b3b8d5945b9e523a62dd3067b85c71abfdab60c9e86ceda6350b14b1a6136e4c0d32cd9e6cd1f0d22949f5decee3aa6436df9cc0f355d67965b6c6dc33d93720aa7607c4288fa3e9e9b597b534570ca95eda8da460577f6fe3a57567af8f596184908925ae41901e0b011f7fbda0bdd300339b2d768ac220f3565975e22a63052dbe59b6b4ae8af7ab21b779a82fdd00e6241c496df6b04da1f7d8c5bf18330e7d975092115a73b0dae38fb4da55bf5659f08e1205b43c1053792f9c2747dfdb81c50e0da2db5551ec0ad187ca092a47ebb49c76de378dd98ea489fbab9449d3b09c846684263711f4cb6d69912a4379984894f5556a4faff5f919c5f3abf49abf79588de8368c9ae5988d24771b3887746c4a7d35f8730ed0782e8079c1bf99068c8ba6223a60f3d115635e35ab81dacf2b9a9a75c2dc5836ffacb9a664e08e6dc0c06b659606c8f355ec04abead8dcf25288506270afc6366b128e8760b57617dfd8f140f06dcdd0e4f2779ab74fe4caa6b3a4f4f9de04b94ee4731e4a0322bdd07cf0d18114b5878f1b436b528909f733939b552ff1da4013acc7813327b1988c1bc049d149e0321f5559052650aee4d44fffe70cac878f650e2b05604e21bc16ea73c69a5f28f20ff541f902086f866c556b985b6a610611146780f699b0ff795e0411c60f22cbb863a36c8e52d93644bf078cf217964ebbbb05e6a9beb254fe8875100c155cdcfbf23488d72e2891d9481ac7539984a2e513d0c99ce42a472b86c4af0be141abe0f607529c9dfe89a2d6cf02a6a391e6279c70e80c8328cfc214b4231f3800289bf08e60427a5440203c82f06d9f3014be07ba03410a66c28113645b410f3b63ddc8439d51c736560c087b3ffe0d34cae27254c60162f32a5fe8426c873214a745e6a36d445d0ae384080200ea88592bfde1e8fe98ebf2168964676f19823f2830d13635b2916d5b84c3d9d9906b884ad3930b514e6a8fea91630fad3b0e6ef5dd43f3fc288e2cf585d5311635d0c49970e0c3359ca699640040b24357b330a46e2366b88a618c5621ad9694b2aa47b2251f0512030216fb274b4140a42ba8a9b4c73d08b85d061ce7b7d55fa80048281c88d3f71dbbbd61e247ffd8a6f2b289ad3cb0eb6c403c846f716f80c4242642d10300f4e8d013b119332c29e7d007081e07be8bd44ee691c4edf614f464b124750dd432424284aa13089efbd838ac9ed7a695a4640127bf954d456d8097e617258ec26deb481ee8740c596035a79205c1f17ea41835049c9c24ef5c883f3eae77e061b230a73ea775c8acc0868bf718c2058fe3a8970409968b7dc7086c9677d03deef1aaaaf95e36bb0220ab976d84b7f966d7bb2282e7ace2631af12820183c72e0493b57e2e26554051688b297fa926ad0df188006f19d16bde65fcf3cacc9d3ab3f23e53dd86cb8770e60f146ee6a4de6da7fe0350204f2956b158bf932abd3f3e290cfef5ccf83be87a685620db976f3280c7c4e1145c1bfc91faa487b06861db35475d8a99860a3e1f1a27218cd552563c5cb8c576c10e4407274cfce21ba2922f411686b52dad8ea8431d74a136f50d9a304662e083c3472c81b92d7882253a865b64e04386c3870f7c276486a13f34246d194d7f968c19c660916acd34d30e17d40242a23bd9eaa9018d98824d9af8f25381b60d7e9c5a1fa32cca1f87098de71deaa0993bcc2d5b5e8bb463fe06329c03242ccd37993c092e71257ff65fec8571a3be206713e979e03117a8c2a859c26d9a493437beb3f0cdc6e7b89cb41d3cb36f38c16910c6b2fbe410acb6d6aa5cfa22e08e7df2f2e5a4ecc6f0347f422e960f68f33148245ae7b180bd140a480eea8d2bada41114b4b58225dc6f71f415c4dcb8bd8148e0fee797e169d3e1c3157ee0e8994bdaa4a004279ca34daef2d6bec101f3037c913a06e25f32068bd91d533bd442c13a6460c0578fd8f39b2f06f9ac00ce6542f3f791412fe2d64d6f71947fd52d644b46c23d70014267264de600d4fee7b3c2971ced7f6048130d7804198d96d1ad88d6096be7171e0c6f879250a4492761852d23ad5d80fe64786f92439b3761d23a96900ab1903adf3247902e2e55c2508a16e3a156a74acec2af882647ad18c33a509908e6a3a8fcb6a5a9f22662ae4024066a84d9af5a11a4caaa1e0342cb0de7fec51d931f1b7a1e7a2160564f68c8edb9e3e0b1f5ee58ffa00ff6f47927f1b5695085f3f6d0872ee2ed230ab5e55b2680f2cd0b9428affc46408645874ccd8483392077f1c14b2eeba70dfe5ad42d609711f7602cea1d5ec5fa5816be67ef1fc321ff89020eb216f19946a28ea3b6a5460c0d055efe115b3b90f3b80e8208aaae275504509f6fdfe6afd1c05cffa015d8784149c6c050ee11d597be193e6c0b2a5268ba6fe930fb2abe5cc598937e2fcc9b697190807618b755a50c1020e3c7bb59a3007c0d41b581dab30f9d564a1681321cf23c1e196ddf479fdfdc1492114cc9513c37551381492793437da2a4372075cfa6a2933d26ed68d513c6e8b6ffeaa6173b60d368a1237f5c37b6c0505f6d91810b3a33d425e76f83722813b28c3396a6442d43758c80694a5b73be437f7f300c5173d68d690db72b81bbf92b0e5b1d7710282799411dd8fd4acd736557f97a52754f87b1cbdce0d8d614fe3a52996646cae4ff8da1983c666cfb988a66b21e66a064f680444aaabf9d09a250849edca04053845d686ec92794c385f187c8657fb04da7845cd46cd5b73f4f88976a529c389a0dcf9ddf5c57a6a3dd99132d73bb988adb701c0460541194ea33caf50e7376c0224dcf3c290fb5c010502de815a533138ba62a407272d546f8054835fb6ea47b754ab7504e1114c84e8c22d40cf7919305a5564b9055b1f59fbadde177b74e704338e4897c5f85b4c2b9433b74883c232273bccacb86cdd790e7e08f355435a133f42e61c3ea1832a3c676c1aece0339b5673e0c969549f534fef4d41cb3b336ba45495f6cb178547951e739121ea5f445ff4099f3989de0c2ddb639f4ffdf8294740311ba852805048300707e142a1adac46eced943a74ba05c47f3e281568fef8746be40ee78086f2d45198204fca3ea8e98bcc7cc83caa29fcc2db7775cfdf9dbfd0f59d387af5e8702c9af054dfa443e5d95bd3538d897894e02339c14d08ac53f0cffa5d146ae35b235ce837ebca1af21df37a23f3a4342b7076f309b64949d73e4d1ad883f70057e3b1cdde308fe602eebd71b285d0eb4bcfbcdfa833f051b405e29edb0de09c11733416f04fa3a6e293a6aefa4551fdacf125cf3737b8ca5b742131cb74d9bdc5006f9ea31ac6b5186e3ad8fe9ae527957ebce7e6b366c7692a6019be1a378db2c9a0ca036b4c7dc28a46492a3a3d87d33d16e979b1cbf86d0d6cd221b8a0995131eadb67168006659ffb38b2cc24385f79ca95559a1c794422530d17264ee3478ce0092b6b9aa6fc3620c01cd2b638d3cefaf33c60a7e7ff7a7c3037ba63a72f01a249ccc4415f7460120f136ecc03c82816d9fe67800c51f02ae0db678b2093583d138870c5bb0d05a1711c0f27c74cdade7d503aea6b26790ae2d391ce6de3f5f59faed961561a01f8cb46ce10de9859381ff3817101626c83d5104735e2ec0f59bfd31d9a52a6193d89f808ce794877fb5d9c89ee514db94573ab71b6b453262f8153ea01a7ab4e45783be412ba2b49ecd2370abb9c9bec58b1e5a68f2da9d77aa87c16737c1c4c9540e9810a00375a2bb5bd408e617629689ee66aaa2f36eec09a93c3f84c114497497628f608e54ba352b104ea66b2eb49f2b51722da74ed1ddb0a86c4720a4ecaf6e4a21cf9cd1dd40ee018646777d6de9ae2939dd75b496babbfb5f75374abdcec8da552b032a49bfa25db2fac71c6c7797d94eec78da21517df67bbcabe8482a3ca4647645c2b02a313504ea665d9e346242a3034d97155d8d8760d5dd5756a33d9c9fd28c9fccaabb8fd5f22fabee42f9ca95091ca88cca8b8afae6ee5705f2c71781f6307e1a8708bea6f1f0ec071c8fcc28a3e37d6a32586226e5dc3f0114494e915f04c397f16305fa1186597c9d70fff2b29f738b9da4230cccc42c5e4a3a6c898a9f09f925eae80099cadca4ac1fbe162f5a997826b8f603fc52a89a9bc984aa8f46c48777560cf329b9e4bf1be5a09b2e806875bf7bdd9ca71206957484f93e02fc0b2b7c59ca429151494a2ecb788f6f14c5484a909fb38e9c6dc9547b28c862a04fa01679608186e4717567344fc12d0f92b66f043eaf516b1a3a596667540dbd200a9203d1b1d761a9cac93dfff7999516502de6ce9342e098a29aa2008d09065cf983a555b6d541a8fc6154d72ee37d76f3f11560891fe3d638d6a0fcfe9a2da4202c3482c46aa9247173144827c9bbd1eec4cdf9a9da54ffa1a7ea8e0a892b660111e96d7de807ac10f33506fe4c8cc31e56d233db846d9c8b23ab1608f0d3b84e730d20dbdd9166f7d5af6450d4cbeb42dd5db6b0849f0bd4c791211dfa2e831b9f1248243cea3f5a34c6aa3502f79275c952fa8bd65ca85c1bfc630494427e00b0588b0b539a4dc39929315b9f237926fcc6d687c4d7161c855f1c1c1b44949c8c7cb0470992b5f4a97ac0b0e8e78afa58592eb977f1392ae4bc41582290fd9f56989ad86164c96a80a6bee6060712ba2f3f6530b9dee5b5bdaa89977ad9383969cbe66d0fe543bee44d4b1dcbbae03ce1150a0154b26bad07eda88c0042e6ec168aa17a2577e4a6a65d89a9ef78e8399e40d5146f9dc482a115adc73c02692789facb118caecec0fc1aae81b85ddd79a297f532bec60d88ed86f06fee68a21092cf078c9c05807addf5a2eb2b09aca7cbac73cafba968af02bba17bf920217f4115095edab8b2c8b555f346af386d668647a1214b4be5cf06fc3fef0d3b98af12560c312cf91cc6458e5ca9cfc274caff5ef5c99908865d0868b01986479a5d4a6aedf60a17c7e81c757e71907ec7fafc628e3ef6d0d61c7fb38553a78fce762e510ab452fdd372311f27200a9498857c59aaa7aed400142125990c4d448a2aa9857c5056b01546fa1a9d9c23bb2810c54c02013a43ee585f6b824f28db2afa3ad993b66ace7d6d1a65f821374bd0617724e1cb0b6a79aa5ddec4e355dd083c3472b2c0477f17b9cc33092b3a5b38033dffd204ba623abf3e39d4e9009f3407d8ad4152bf5f973eefe73697095a48a1f5d7a06a1a9f754f830e698ca82aa00dfc2e11550ece635e34138a3266bff2526feedcc647b2aca3ad98ba18d6a2fd588f19245d5cb0e5505037ab38ebe12b8ba1655e9422274c7d062ba38a107dd5551ae977a71dd7a677abbc5a93cf58c603f42923abe470cc781377c90bbc069e1685e95d33ec94bd37808612b593ba3d452c64fbd369fdf1722fc760464227b275ae2c65db245c0db40b04b238d38a1da929f9547e789a1f1230d324e6a97733e991f8061d0bc8ac8a3a571b2003c129dd469f7bcae8785005853207b9b63c961dd69364384d1b716bbec55080367b7201b118b11541e7ec719ddcc3eab9027d883c3a5dfd7589a72d94141dd07f2173c7ec16dd59f1728856a77f821497cb901bc0d17af8b4cde456950b699b01481b46123cbc76a3562702259b3727ab176a8bdde284a961ba38fb99e882a3f2c9e0303f9a6550f26d3f9f43bf5c9ab594e39f6844a4ca8594a54f0cac7571bb0dd640a1490b1240cf79ebf5672a5c7e92c06ede11665f252a4c448d8a0329d71286ad20a865758a08c19e9256ec6b2652f3fd596d986c71e50650e1f841eec45568d75bdb837bc43cad697b74bc6626ed3e96a958548badd4cd8d7f6d308be8aa9af026d30fb915819910e258972719186ce600ddb0231fcb08af48bd804da422434f6cf3d57d4c5512219a10d607275094fe9cbe4a1ba8240857b53155f1fa82df5529957daaa674336f8ea491016c2ec90cf8bea8902c03393226ac5d656817dd0e990c53525cc98abeadd17e6405bc43328d5c70c68dd19805c11e46fc04a086c475da9817d76cde2b641453ca8ac498aafcd689563491ddc287931f090ea2057991001c5b222f6003641e0b8893292fb5ede377b0f07989ebe4a297a1c2f51225285a202ba23212eacd971c85f8254214d269ce150f25840f8b7e8a6e309b4e4755d3fd785dbfaf4cac81d43fdb73ab03cb4c16d9a05fac6367da78adb16def56ac3fb171b9cfc5bd602b4310d62d3f104131738dd0b5b5a40f6418d8ca130b41c5e92ed045d83eb7ab41bb50fead730dab1457200bf6c52976f22aab628b1a0df558130fbe86ebf67f72120f9c298210a9bcdb58804913711c8968848cac9d5ccda242e5c8ba09371970b456147c4dd9745d5818a92a0a44fda38b417c94011e104017ac7b2c7d0aef4af9b522dc23dc0233609f3d967633c7caf149568487108332f1cb03cb8088c2208305c4a04b99207bc4c9015439c69dce1c3848cdc069b85cb550641668f4afb6bba33ec5fb7495ef57972e08d4c75bed34bea4f2c864315c3faeec0ba5d0b4ea68b1320a0474ace26b6d6564544cc14d9dfb78e52489e7565a4cd51751d6b134a6996a535026d92cd72ee9726859834533167017dc0623ffc08080f902c6bb0a08614f94ea92c6255e2c79b75f2898da947e34e6c089232989b09c48678992d6c079ffbee32f85202f45738a9b6c8ed73a0f860e756d3a46159f65fa0354b02cad0bc28a4242b06a04ded43bddf94bc3374603e0c37e480834f1cc7ed4aec72793215160eacbf222bfa1bc7765970914e826fa63d9d4cdb560ee76ea75c3257494e43c2c5e87c22ac29aed59837b1992603978dd305b94e283bef71b55162b4406c9e4e4c9ea0b00cba025d8c25aca00706703081ccd629176b24126c59b86e60551b2f8556d9ea8ad61020002405512dd701b1a242c9ad78bb078dc7df6e9609bf2cbe7a069b9538d8cf007c75e01633ee2e284f490e667ad3d2cde4725de10dd97f844908f268c3fbb8e0ed53dda145c03133204467f785ebd493473ae6c112de6acedbb36e0331808b1417d03ceb416c5ce8f707331946327bcb54dd75a9c7aa66f0d7cf2e9611c4edb4f4ca8d43f1cf7a86e141c091c6a932dd54afe3474304f1338a418b444ba591496aabe7b6bd65d00a23d8573c1b9864fc3be39ade1864363e4529ce4a1af660e31f386b086c551b0fefa720bad973a8fa5164ff21e4b6d828c4526163ab52224cfe5eb4e74da5437f10464d03ca7448436020abc53641227237fc02a155069d22769f1a072f1d68884df8a1e489717ff6077a9c888bb5189838b164505e06f3a071f03206427ecde82a58c40cea25e9023cda67ce7e13bc6b799f95fd0bc0f3cf3982296a16557afbc6ff7b23843a0aa9fbb651f45481434c9e3bc417479d4d9a5ec94fa197edc203b8f5c2426653696fe0f5f1dee3a2b41521c7f38cb44c1881fe7919b3132e51a49b730aa688a7a721435fab444e8037e1e8d8d3ed4dea5142a677bdc8f7deed3698a35027fb054adb5e01012d352f69998fb4dd65710532cfc26e0a8b6d4ccbbbf0cce4c04f101ceb92293699c94e1aea9ef17085c467ff4b9a5098dd7051d61c04ec4dadf0a1191d465362674087cef1a9a720f4852b33add35980ab2348a617e961f0f64ecb6d9711fd9d2b0ca3767946afa3ea10a48350d94d3c5263b7b2c9d650dc6fca3026c2f3b6ed96da0ce9b2e6349efdde90810dfbb79f991a41c6d6a761fcddc2fa09f056ddf0a211b236f5aafb27ca715066fd884c70add73d01993284f368474c9b16560f23911f01826c9bb2e37efc8f936d6f9a6349b9f26a8b6729522cd6eb4782f7c1768a4a8c517da8a0bd4c69516284aa23f0597e3029d957bdeca01501f3acc9319b896e0abc1da57c7eb6cbeaac21326f9234d79c4ba3642a0810bfa11e78633f8ef6710f2171173645c058ede0ebda67ac2ad91340023ff4edf00bff4487db1420f66366f13cee01ae0fe4371bd7e8646ce3e86e0ddc0da98e495697595e5758d1e6f14c851f2e18d82821fe1219c073f79ccbad1701eae873e610408c55359e84d9c092616f28679385253ef662f2b260236bf4afcb66d47e472941251f870499887620667005e36d173ba0f49d526800bdb2f0c3c7a85da915a42b7861c2ea01aa9f7406f44a903c7ee12730cab82f3117c6e4211b58f407466bad49baaa021504eaa4a3dbd1d4bd05a06152ce8361e723c5bd5778c608f7e5185021091e635a2761468a1d7513bb1fae815c3c0702b692737663557f92dd8928e6c3381a68eee80e05f9bd43516b848f436716f8e7abb573a0eb6cae4c5c0d9bffb718b37f4f83bf8ad2366207188bcdfc10000d6d62a4390fd369c406171beef6c64e50a7fc1d568e0c3a051a5e00ee7b14843c0a8f0edb7306679d35e99aa013d0f4616c172b4fe26fe10e3ba28fe933ff2513ccf9a5f2653035a74dcd4808ef7205310412f8986884b6003243e588fcb7c42dea095a96395be48903392a026b4a3623e365bcebe0b8dfa88ef48b66b335d851b6848bb580c35ced2f469450d42e62ce0dd47c2a71590517f15c482026e55a632376855641a913b51f3b15a5da1d6c7f512b0006cc0e8b3bf417c5b91505710130ace841df79eddce4d228fd78d561a3ea80ed04aaa761c7d0bdfb2ab1f81f3120ae0550018622352904bd8adbd49a2b1a88b2feaa0246e848a363da9dc1237c1b2137845c29263d6d9d8be074d82fc34ecd39c9af0d978c473e69011c0e48d63399b9d88386230ba700cb3001b80c3b773d1a46477d5a313a7669c17fd855f54c6f1e64b1b5b06e450216b37da119dd8b89bada09304736db9a32ee952d4292b7b0fdd80581f64ea20959bc0aa555609694475da3921cc298ee77d726266f20d9ed2841a51c91a40d79992f89caf100e9c6c720f6ae48023ac3389f8d11641fc013086483d56da7cc1b697ae2182c40a65d3162e3cf1ec4e628cb2058e631a502e816739fcabec46e130193862cd776fc12c859c5566d3fc3d3825b84640ae53d4b2c576cc737dc5a1f043bfebf1db78011ec0b064f364dc8880df05590f191d841eebd47932050d20b07d22235640988367bef083a3c51238ac1ee30326da44046095f02f2118e3edc1a89b0113159f1432b30fe40a9ad9d6c7ac84f736e784b3ab6380bdabe93920e8295918c3686beee6130885eba0873e88a6275509a8d3045a1ba3e01f8d4e56b71b65aa2abb254d564f39a1dcdef724732903d23f173034f7dc720b3893422091c8fb5dd41ccdd54ba57a8ed80892d1a9b01d183b4b3057da5f4720695f1b31b79a6bccb84400c0de29e0d2d2ac13476e6545b61dba9cb2f8b7a288375e0a781581a710e705773b0073262af390d89cec840c57d31a2f0b238bcbd108d15a8b8d530808114153f7f1b21ff9f270835ad7b6d948fecd0a29d40b348991bb6e036411111ea7aa2bdaf71809df1960a7b29604a98b417b810cac6a80245ea80c59e4d4ebeca5575925289d55c7744021de014598c1cfc3af6571255b4c2f8316761437793704fa8694f176689d93768ec785da93178794ea747891b14e69e2a5d67193df166fd10e3905f3df8f48e4b8d0b92ee1ab979aa5328d0b8ee86de0d877dc221a49d06a3f304b2a5484f00d3fd5b1dd93de73b180e9f426c4140ec8f196e4b1e1af499ef5b81079193c58ed1472db05bd96d48e3b0a8ee0a3794996b876559e6e1e252efa0f049a004e2dee5e30d74405db4420f966af63373ae1c441bf7685bf192ec86b3863c74d5c52d55a39e5d2c55d1f7596c0b09e116f32eb58ea3fbda46dd03620304c3f1d41cf2a3f8d182ee14ccf4b39b330ab9c5d9ebb51260b8e62778372492d298de42de184860b6647b159901c2b8f5f9ad7b25467b63a83b838f076075969d523d0c1cd662d880e01e0340866dd677c1218caffd6f4faab9465cb8571c7943f4492c67bd9eede7fd99096d0f0a750a90e9bbad492e64eff29ab1b4d04a8d922d48609db4b509050479082818318758739a4bd83d021dceb98f1b27e4a8ea6da7ad01c6c0470d7befb34200c1d9267679b97db3ae659d921590640c5f2b6eee9705bcaeeb4c5297b64cff6ef16aaa4d2c700915cb7f2150afcbd7ec942221b8733f532a71fb9c5c32e8b47155dd2c4d877fed450dde295e094d832864be59c172bae331bfcb13eb6d967dc6fa527ff324680d4840dd460d7a87a55e190e129ee3bc7efa3813181b8f4a44211320ebd391904a0694415da7cb6af2f439ae4c82a3b274c4025686875f63222201325ea6759c5889a4ba2d18216692ecb119309ef661014544300a7da652f23a6216fd818260a1b3276ac11917db0f98b4fc9711595f16f43440197d6ec56f5c547462ad687c1993fea91515ac0c11ed0c25453bafa0641f5c1f8a77e437c05f5403ddfed01b8dfb8c73d577786f743371a6df8b9bd9dbc9d4170dc7bec43f06410da21be64bcc79bc7b24bbb8fd18d154c02cbf55e00fb974d7f765d515c4ec9f90e7c186c83fd3ee3780c4221baa0fcca61e97ac78440667ede011984f69fb2dd7b9a4502dfe9530641a0dfd1dc996afef729b1b0e13c1c34f583eb9c66e438567d1a67101a622dc11ee910fe78b8bc8d4dab35dc1771b8b1ca8d6a8e0c100c5f4a79681806210527f5dbaa25a4d8e0575aee04f7c4a2d0bc7878deb2fbbc6f72860bb74b70549c6804839078c679f8fbf6f6e9ab6cd4d2d956181c55da806ed36f12470c42ba0462e56b0c02ae52ce20200b6450eec4e3e9320354cfe7806700141236480ec8a83c9458902bccc21683210c4c9c3108595f9ff8b29bc6ae2753b3188451a3e8a1a4d2f776108a5ac25c2aa394d6614ad976a769dd8a64644695c31f2c453999550c61959778ee2a8ebdbccad3e04bcbe1a7fca3aea8cbf8ef418fadb961dc9e646cb3ee36f34e5b0100fffe1909182574f3c4dea8c6e24a991607b8c0b9f2a0bbcb0369675c204977856298d9c946429087b6cbbdbb58d97dc87fde5775aad07e265727a0a9d7397d390ea74dd4695d655f4a144f0878ec7a397b6e7f3218292170a3843581c4c85f6a398b4a487bcdf79c101cacc0b4da22382ad920d5ca2a5ed03e119fa609ce4becc40e049382afcc01420762a58c4221d910923e3a100cb0687669c20ebced67a8a5184f88329b72220bfcef5b6de0c151bbf0a541e2ba65b1f15503f71ae4de52044779ef04b3309aaad6a90062b17fffb09aba9621cce4c9e6b4a9dbf205b5e773e0ce271a3774588b6e64b75f099a7b81f741f55bc90605acf8adb38a32dea145b972c56039c98661e79d38efd278a2ea81bb081f5befc1ca8feaac87a36fd9ea3a312cdb4fd58cb12f749820c18d763e50daf224ddbb7674b1cf67a763199213eb2a6e82fa7daa726907074ebc96399842946b451a7695d6e518ef8a11eac3af2022c054e90fd9ff64e262b55c689e76cebacbff03269454031b3088d7241538c754b0eadc464392d85a5f61b42f13a680d8617958918ee9247c32c4c35d4931679f04c2e3764f75395327d1134b353c3664dfa4284ff2e2e1f792d89c09b678a2dde288df3ea9a225f887409531818c32fa50f895872ed0d177d03fbef341689bdd242ed3c748fcff85c17a2d97acbe09b216da167b960f701b4a6651f7a99f4f94783add90b561da613ddaa5a1ad4a762a1cf1164c82e78affaeb0ad9dfbe8285059c25013090a00b293f33d96da7c825cc10444b4763df0e3f80964a1b98a35f4fc1519630d8039730a55a77c49707de0c8a221fc26dd569fce156733ef08457c242f82504d6fc2745daea6aec2c2376fa31c423a6e22ccab27cb91e2250360f41a00257200a86c92e1d4e059e90431a01882d832b0f1a4c79e0b47e46ea42ec884ea376a00091f8fbef27d0b16b80d414208d54c001e37ad2c609d9bbbcf2960c8f193d83a1e9d2b147894a7623ea9cbc337b1d7348a18c981c8d29cc9a907832a4e9338156b73ba90864fd2fa93a8835290c9cd19aee217a9f12589b0929ffe8b8807fcd1ce4a7948e08adf2fc20fa3e7aa8684df5a95a699f1e817b0a090b33662c51f9d59c679ba218242ff27d5724aa86b2ff1397ce78cc91060b3c78160d40f059c1cb138cb1658dcc24b7d8471a5f60d5c252143a22c951f3ff0e985afb800a2a5c0fc92ab5fb7ee1ec8bcdd51de657330669fc277d14c805e12d72db3133d7655bf5d22da6dcf41581605d2c85f964370126d7421c331d403c18e982bafd24e95588a9166cdc9e6cd548b0ab7200f750722a6b61487888a78330d583cfc2807ff9415597d9745b488e594e1dfee15c4f341570e816a961020117ba321ece58a7bad8430d69229df3163c2ddf6b015215115b3560aa02fba913183e2f1b9744360a2080119a9efa56e135529002561621ef8010b089d6f4cb934b402bce0d38328a0591bc08e486ee5b557d068337f6b8afbd180007143ece645f103ecdd4e0328bc60e771e45de14521100d175e7793f064cd8620fb87f3d82a2aeb68184d25fc7c61ddbe05917f1a6b640014e9e3e5d772030a4c9e3f772b43319a0d01e6b6d5f056c40e0d5666f8acb098922562fa2d24b3be1a05e16c2314fd28eb0f5bd6e095cab00609a4687ce14695e500fef4d4d0a47c82275f360414946dabc9ff962fa55ce58bf377e42601eb5fd4fee4586872c4ced955c3c30ced19f0ed2237765a72ca84338f4cc84a944f5823331901df6480eddc9b2e0e4953c32b7a3a3643a96c08769f3914e919035708aeef48203de665780e87cd86800f9d92a873146b874340e056240412beb9a8ae9a25cc7c4b806bfae534e75d9baaae62b114580812f553e53d3c04cd3ce0e8973c67a1f39a3700e982d66fd1bd90bed790e911e83475029e7fe7973ade516148febc8966186076312c824e7ed477681593ff5da55b0d2fbb981e082cff547f8646c96d0f5cc67408588ef7b5c9b249bf3e054b0096faaa325926e736f062dfa6e3f945394ee34563b4e7ea00a639b6a621d497590ffacad08c453a28ae612fc89a2149742c4cf9137601c5c205d451a553be56cbae83784d2b803e2d188b00462f291e736449c94cbf701f0614de997e02718a9bba099d2734d998b0581c6068646a123248ccf54c54aa68d71e8d16520fd7c9e2fdfbec9da0a4542b18a9663a9285670f7cb46722b765a016b74cfca1099de6f0ab910c85cd6567921cb17a1f58c63b487c6c01d0c1cbebe988c08a14e5cd334038a8f0b7ee879944d5a41e0c139e8d551ec193f792901b5a1dbc04b31df53b51ae23cfe753bebab570aece11f19148faa833d7d08749a1420c6a9058a212c3031eedd180cdc927d003a5af4cb29ca6c04879b51dd6b8e89d70d6bffa4c25535226365c91a6466b7eeea41991389d410992ae44eab4e28288c75dff8a8a5da01a660ad95c9861fcbf79c37adbbdc57b6b66e069e2d615d036ef7aa5fba5f06a8439130d16abb147a2412dd8c5b67f5ea68592309db8acb8a111e9bde0a68ca28baa58d6380381047f14fcc17ec0438316bdc9cab076ae30d646b3476f0d00ad5c352478c016b4a0fe4580edf1efcaf7840ef270784d34fba7b7f8b448abd383ef9e530ebdde1d518bde4a3a6abc5e6e1e2407d9bfdeb68893a74eb7b4ac162450b75c30ae6b8346b5d101000d7cda9796b92b4ecf867d2682253f880d291c49fe4f1f6e0895c6e65dcfbc9fab36a83f389595700674b2915ab2645ebfc21b1e7e3611ff524e24c6b82b46177cf4dfe097634e2b5d57d5e29df5e1c82cf14b9fd07a9d3a6bcf3e41557c5aa8258bd17a8ed9dcffd39dff6f9db2ff3df853dda6df72d62a7dd3d5884eaeae938a8915588b0fa07b831ba94ba20d34801882cc874cd62664e7642b53c5da5122d7c82f3e330e6eeeda06fc1e6016ae9ad3c4d1d36564c8fd971e26684552717027d732fcfcf0829e1a8e61622aa5c9a99a23d7296a6fd84f4788b3a0660c28c8a7b3f6d3978d32ccd0f24a3758bbe472c09802005664d78c4c1e98e86e166a6e8e847ce499065354046a4d45d47d3a10c7566505648c306a1044e81a6151cec082d1c1e883d281516f9acf1b7376603f560f14a9796385decbfb34e9b8d082069b7e40862d5c7dc9a217fb541fe945672e824c1a29d1e89edd4661aa0ad7ab49642462efe8975cc322bc0a9f5b20aeb50534c6223e54bd751476e5f77c6ec120739214f5105ee3726f717cf3702191897028b2bea60543f21bf36a237efb0942575c32ad0a9b266c99494701cd1ff15f4ec72f0082e3714ca0e85f5479fec58716e59e13ff120bd6b9a5eb6e8526e3c2c96d309a73c8a59682fd1f2e5f11426be020a9b63edb0b22598b42cc7afb0195495ab65f7ed8ee649a2df56ca95ea960b2f35110fdbba57eeccfbeb781d1ddf7cc5867ccaff8b81dd7357bdd0f1c9b11b15b478bcad16e6337b2f1d48b4a1be4e9b80c2657492fd52c59b60ecf2e0fad55fa6d6a49bd1a8ec76a3f622bcfec408f849c1be3069196d132ed9e05ae71f2607411764befd6616e5eb79f3301ba703400142040743ce05c1255f2cabdda0f40d9561caf7a211830cc580ec17b922fd6100b30a658c0cc9405f1ebed5c0327a1a1186870670f32e95824eea41a7f2d5ac69d8fb082b77455304b04ef20dc3270a0bed109d4ef0b84ba4e0b082c918b26e6da1714996263e2987bf0cf5817b27b31322b99d4d80d923913642e91e7e8324749a4d70e8c891c1eb5d764b8093122d7af0c334c83856347b452851305a34834ce1f71ad99242ab81f76b34bff02427987100268e798ea9b6e19cfd42a24214033e02b01c473de890faae75d0ab91f1f88507def92c77d7c602654992b807e715c2e514aa13a724929d9551ab9911908f5b899b0605eee497b7a09a30b350598129af0e518aa83caebd18f5214ca4946e8b6c9632a70522dbd382c3f1f3575aaa2048aeffc6dfe74de5b177ad27d7f2a48b68e148f97be338e06dfb63c4140d5df1aa09f8cd1840cd18fdfbcb1313a86a73a1bb234379870a454e3090a32070d18197a7aecb28e1cf27fdd184f2f0e5551c7bfa504c6b0cb94ad22c14f56f20dbed3105274d050682f0db6a9f4c442ab7559265b0fc1460573d54ccf9e6e3bef8ba59e3627a7231fc8977186d61401652ace6d868c5f3a5b6aced433ce1b7e108e622e15522a7ccd185f9535810360f8031ca594bb42294d424fe51e65a74c7cb6e57a5af2f966e185ea00e2637ac23e1c3d8373ef8f6b9e6f3b287a8e2c12e886bbdef861cab31e4080062770111422e9029986df3ca4acd6e53f106dcae8eca997fa87da09c9505aeb0534827a909733e8f8e3c1416bb6375f99f969ff987ad052769ddc3bd0220720704e9944750dacf6cde94de4ae82fa06f479198126550a83903ecf4346f819dbbbc2e6999fb161e8d5a19674793e238aac007d46ae022535557554b4a965f1ef72e5f9b4526ea14219d0ebeaf93c3dcf6b8dc0540ad759a087355108fc37178f24365bcceb380e2cd83e9f219ff1d3444154e00337278bbf081aecf001a433d1222aa389b588bdc4773086c4fcdc1e356ed6d44137ce80fb6eb6fc5c7f500bbe731cf19a08ac21c19ba8118e55bf6944d1e45b38dfdfd071ec27d3bbbd644c9b2dace07a91931e212fd21817b52c2d6d56327b8441e3549c59b04208410ddde4b323b94af841ad82e6632fca8a0ee7d51e7d7d1001a68cb714951a7e368e6916726984b6e22bd28dc9093dfcf5afe13faf6ea143a1d4ca3a6864ca3dbad976b5ebf8027b793be15723d4cdc1a31f1cc47c0a6d0748006cf5e6e78084c2e12c155ba61e1c5441364adac4dbe1af0915506826edb1451d51bc1293f98ad460a00ad0dac68793a53db040a2348246f249b0a0b64d6e3ca28d82995e3158bb3f6906317f4dd209e6fdd3c6cf473d8e97d8ac567223670ea6a12d3aebaa39b026ae538b9b2aaaae9ec7290b8b3fbef7dc7003ca568c0635e5210417cda1b4a50e8698f2280c498b698573a801ed1585f039fef6e4c4816e0590ea5aee1f9c88d2c9a3373915d077cbc9a319405cc25b9ed2688bf4fcad3443590201a3028819e3955d561948e94203a3442c7be311bd3594f17872564c0838686a9e492f7e7c11ec769a24c9d936008faab882540cedbf80b7a38dd5026528bfe9c9f35a742377efaa6992cc7036d8e346b245c9869201ff8825bb148d57348fbd8aa62cd48ab2e3715eaae4e9f7ad8447702b47e292925cc7ead81b594263b63894c35a58931d6c3a45e7c428b02cc5273fc7b223393fab46077106d7c46eb699e87d73a33819ea0edd55b0ae50b20ceb994c3e6becce0160fd70bdb107ffe1386d29e244a513f49369f900ab445599d41243812c580a8af7026bc3899fdf2e88006a74973986f6974466f12a3b461f90627a2fff2ec8fd6a391dafecaeff380175b0dba11d52d383e5c46f9cc55ff0c768eb294513492a3f8cac3bf80758957551ed329e15acdef27e2269cfd549ce2ebc3352849a0a2859224a835c2e3902d19b8c4d519bd1f863e681702329a11f06d79985a74244e7ecd63ee2b6ebf44d6f175598f17a6ba0bf05138c6aa44cca1c13529a801ebb1a1983574fe669ae941a12f77f0b0e9d4d48891f2c286a66765f022e1d014e52d36dc4f01e46fe3a938ed656b20270b51fa4f52601e534422b4e8d60fa935da75fa34dacc778b27c5e0ca35b109fab82c5a62096e7d262334ebdb2112c92e5ec2358e859b8bc9eef3e2556e9486c9d5939b400bdff98240a5f616c8b46df3753ffe62ed98015e8a9c1f05be665db803eef7fac52c5f4d28a3790ea90b52e9efe6e5095b0dc5d4ed754ecf23d68d5e61f0b3b85f21bc01ac98793302817aa21c3ed69b78ace6988a10c23bfa296fc780bebfc878097e5533b10b2c28cd9a23be1e9f2951af8879ea25d6d1bb113acabe2d43770205eb1e28e5fcf687a9a23548e99047ad84ee4603bd3a7e17ec3c923b30cbd38025351f0d2d86522883a74bb9341a60e01d8d0ba1af33818baf0555786749c8f06a5cc19e00052d941be01b30b9012711000809417887b8cea04eb747257709013f1075a88bb7bca2d072096021e7023bdc18a19b994614e9e037d01e38cb1a47fa749d19b364aaffca7b9a041b97b605f9e462986efadfba73be7ce2b77587f552509c8e594b5db1458d695afb4e228ad47eca66463d1662340cd003ec96207fc3e84c4dcab0712a6e808aefa31671d68e72ebe2a164706d8b1492071741959944c452378fc56d6c94271e05e55287f8eed24a365fa8b9e1389d141ec0e44db486d91eec31f72d088deeaac2fc98cd885c4d771a22326b961020188091ccb7faaa230e9ed9653b08af969c116c2baa2fe6647237878ca7d007ed6720ee9fed25939be9ec927b93b127fdd07ef464dee8fca245384adfb94ed6f5d00f4312998b44081032c8617dd7049972a5de0f30b0642392ab15c81435d142030326ea98ba66527bcb71d143c664019b38c1c3d9e3cc8d140b26302e5b77285c2f03264a3f84fd9545e66c646efba5f6d9e1b1d6d8b3591b9b7dd446fef4cd82b20fdda6306617f2ee8ddd9b7db536219b18768a18530abf90337a5888427d7085c01277d1044801043631890d2fd664949956c0f5aa86064b61f549e3e6c7eef2ef9c620b420b87b997a738f1911aaacdefd620011a553a078a7d85922024bcf9eb34c3683c9d229ced0f5cf8b85d5a7e305b85298fc2ce97f79765a5f53c8b894e164a93a44b4f2cdd9232a3098dc6de6c65deb49b26b577456dda6da296f6e9045d76a38e56ca8767960881298158cab6586adf65a350ef69edab1044fb19ff6623cb8c5b077259fa770e57a01192d69a70dbca95fb8728ffdddf7f7dfdf79fffee5bbb7efdebe7ff9cefb7bafefbebffff2dddbf7afdfbd7ff7f2bdd7f75fdf797feff5bd97efdebe7ffdfefdfb97fffacb34af51b66939b21cbe83ed5e285a9f5e44458f264717e5b26e02dbb23d38d10a3e426691233b86942e89ca3b200da0f07d2b4255d9359c6de05eb61463619de02ccd08b4537dab939f4a8730fe58ebfcb81cbd4e7c965582adec45c00eb69d751cd44425507f95b4fa45611e9c5ff25f9e1c744fcbfc4dd7e5adc6719fef637c3febf76677b2ccdfa037e97e8899d98cfedff01ceffd9cd73aede479a7779df3704df7b9f677f8a67b0dee77669bd9fdebdcc763df93351ddf38409739235a00001d4cc0e8eda70f39335d2cb592366074dbb690a5142a339116e10b4926fe629e098022853c4591b0adc76efee9e597f79a5e4f1ef856c4a25cce4809f63ba58bafb1ad40280914d60a50d42b51305f3025a378a24a7691399ea224bf67dfd9d13743272e665de3317d806406230e4afd6b0b2ec391df9808f7bf2aa41ab7444af5aba4830b63aab18cb56231c1f99036a2a32063a99ce99782bb5f52b6fff7608af558880f71bd9c11f34104f6b301c295853ba88e6cf62294a835cc3d483d2d795bad4d05213a86fca68b27018f69c5480eb6f90dc3f9e5963bbaef35425de209e4e3b1c1e3471e63abb011b2d17a4d3b116ddec976703cccaf31c53a5e784851a3e97d03d71134cc9f98542a91c3c87edbf7c2a9589562ef46e960e5369e51114a7a794f50ad012c58202691de998e84720905784dd4d588ab3e8c9df3391021880e836c9291d9a0f0295c0ecd7e4d8015310b9652cb6c29d6cfd2a839262e785aea4d2e0385e47f464ad8d099611e38a1cedde6caf8b91f932cabae2dcdf8840e9ac36d2e2af2d35717b4a723575614ef318f2e9649ac60e60b5f4a6c7447120baf7af5905649327435f493d28eb25e2da6460fb4b1adcbfcd202fbefb92cf48f2a7cab445020fe45458d037cb0456dcf84807f6847efaaf582563682d2564cf9551fa38efc2c9e5415da4fbc3c91e9e0ea4d0ac3b4162ac93a8dc5d4b4d1b7d38f2fd576af43001e9ef456b48ace8d27d0db509c1f81347e0aafdcceff551255103357c3081081a91688fe9b7018838ebc1d6a94274592edf4a07e2e0ad4e4ec05597e06cd6d24fb85b0c528be6279af614f5d298168d3d37405d4c19390930bdb9f81b350491c278e852f98f6d6a8a562ec711de93dd2f15f6d9a544af66367da6f8662c89fa01f6e1aa156249ec5414f4d2e122d7f0c922ae2e1d1aa36d18aa1b06ebbe64927715e463baa16bbae943283d35b8ca20825110341184de78ee2c4d1a7cdb46d6076193ca1a6d83c8d61a8d8073d120b5f3e609b1bd71a80551fa12ed77a5ebeddbea1f094511902ae8b933502eddb1cba68f5bd012ede8503249a8b6273ab2143299c1ae11359750cf07b2f6a05f79c5b0fe378971a9e9728a86a8d8467f5002d99d1070d1373d861e320d47160efb39d068b5dbb47d15f136d016893c780104ea6e28fe6721951881255d592bc68b25ae77191b459ac03186d5f074f40a51cc49252c3373e9ac502320fa014fb448ae290e0b4b2b41e78b61bffac5e54eb61ea5ee194a706becc9cf50dc96113ce11951a8e33b94ef80de09eaf787b95ce4976995a45305ab73774eaf337486d50dd41c6fd6e4768d6efeadeec971671747686c0de860e70fa4afffef1bb60a661b040bfba4abcfb285aea914965f21e00ee91504e58caf60f230a1d36be709c0a453198236973244fd17a3871f8adfeb7390a722fff8d38c2f6553075d311513a0417c4033e2916aa74e6a373ab1b67339f2122c74b2253197e0d69b9b78e55dc05c0281c67a5cc50a7b16edc48da26fe844437ca2a72560d53d3bcf50b1b48299435dad6ecbc3aab996d2cd29d16f34cdb2b2b55a6b7c521d50015300a3c16cbe4481502e7b6dfeb27feec3bbb6ae2b8976cf649c14ceeca71864e4b4c67aa16c72cceb73d4038e7a0a5b2e2563884d3bc2c39c0dd5d614b9566284fc941c4eb5cd9d13881ee7c041b831638b7e2dcd6451c10976f1f8a3057d903d1f2c86611e619639b526427f6a80b6a1d6e3ead2c647064d637d8154c33b9a1cdf873ffdbe215e80581f0f8de3e2646c19d62a988b9a522dd98a889469cda03a6660332ff47a23062b53c0010d83d0019faefdc2896f1591ea3fff89d11a02c71c47db480eef992c3a3a0bb69872132d2576b5b187acc0017d1ac3f42a49160a53f0c6dfdc13a7be7af5509386ac959fe33d4837bb3e0f1ef1afd5699e25b2137740a454405e06f53d216ffdcfc58e07375c4fb3ba7e40efd73cbb5ac133a0ae0d3eedc3fee9451285c8c92318353055a3048b84d7c0c565c4df71157156849a9f52925b14d5461a3d691dfdc33dda834aaedc9beda7bb2312bfab6217486d9b4bdaaf35b3b6ad1ff918585ba1bc177989ed2b34988eb7985fd9c77d9dc6b0a4b5a19c0d9efb9222c555d616302fb4fe09c3e6c1102b0d40c8c0318956099389510f830c1ef39765d9c20c5911f68b9ee1a9c4c2aa2b3c105c76691d27f59358c16d1d8da6c1afccad7f26f0bb4c7659af4d7b056c948b0184ce8d91502e0f3639d911bb999938ff4eb45655d2e395230a43e093472ea147a612b9489c35407e06093ad134994d1de85aecdf26c4d1a7478e298031ce10823d5de226ffa7709c2d44fe2f8a364a9a8549ae1e41df8a14ea785ea3b9c98e8657b243f2aacb3646a3f1b405763904c90b5198b2a420930a9f304192a5c17e781be169ad63996fa2f64fd627a07c65da820ab264db6382ddbc45f9362fa54306e469681ec4381c9786d4fff00f0e5799e0b3634d0c596d5450df818c7f94e116fb77263fc0355e5b094f9f4361811127fae458eb7147873b5d8adf7b686598be8865fbb1462980a5b6d18bfb95fae7a376bb537eb08066b361051c1a667f32503ee091732db943302a4c9ed83c11ffcc595a0a0b19b58578afb35979938dc270bc02c07be0ca96088d6286232f06ea39857be5998f33e36dd4ededd45b723a05fbb42478446b2fd3313f83fb162800f18109845f6f561c152fcc5014fefab30c8e72760f321cfc003910ec119d75c9b1730095d5cdfb261f3c2f6af4ae747bb45dc6b028e2f5ebd3613dca4a4bb972c32330788f5ec83ae1fd223720f70dc98d945ca1364722d0b3343cda92bc104c10162c1790660b9a8f5e2efde268e685b901dab0ad336b68839a2598b4c86ab30661b5721fc7538c9d674cb7e177c91b5ed1e3fef5091c96e51611285fcae62681e3a86779a25be9cde57f19bad8f873628e81e79d9d690f911284d39d16d29d0b8b91394d17205c8aa1902f5c3d14ce8b368d83a4dfa9d20a8f7b24fb1213b3ff4d5a1e1c27bfa22fba196d9674411cd1ed46b899ec528ad090fd20092ce86f8cda832385de3ac59474d06a6281572c1b6c5bde68c4207d095e9d0c7f9f856da383da48397f34b058e52237b5f1bb706444ab197aa49e66df8000502730a2917328b1940e041104810e0f1132a1130fdccb33c2517c8684a68420ae8ee258e7b550209f78fca597dd0f72a77a9486b6fae9e5464378b6d2d138b13c652f68a22bcdd20b9ed87b4da4829bc6ddbbcb48580f2823761e7e3d8b10795fd15ee61b5e6670e7d5fa2149674fa0023f8d19f5a1a95421bba5d3e3c1139f1c21b2802745cab2bc8a8e6302d58dca44a3b8adf7692cc84c9b8ebaf8914a36ddd61aca8b1d6c2f268df6c92f217e7b28a52e2119de2002f23b11d30cd01c65e6fb8571fa8e27c2e996da55ec0c9e3c417b85df99f79999c2a2f4b3edb57240effc4c83913469c69e7b82b17b1461615e9faebe2f0d6e12879db0339adb68d29aea9096b4aa86d2e8f1841b31419dce6cd7223e9db689276a7cc11eca88b7d2bf236601941ad80568a226cbeed8d6a9b0b06f76ed8be01f00531b480d7bac91ce7db9d4010db1885f02520582a52462ce214c14b9f864204d5df81b1d41387c3d0cddb6b2b8d05432e6218b677ef9a691b57efe4c0889596f8b1cd5ac0204b57874e742bdffd973c4a3d4ce6eb3c1597ccff5837f96a194604b6ada530f0a3172537694839c7facd359e015d6641a6045d57ca5d74e80381bf0306126955a2b20d6d0840427387c12bc7fcc160a72f850b882a8a650798ca030cff3caa3e5b8b9b3322164761d813d02e8633b65bf8be7eaec4aa03c868e8ab9843db7b4514c447071d2bae5a231e1a014bbb7c34541ad13cbc453795e28f48aa42354cd51c8c95d7ef94a5f01b855e0cdcc3cae3b679bd0d5f68cebd7e9512a6b18a8e93b2b7e6d4909a4ebcbdbb24acd8b6437212cb8f4354869ca62bfc72ad2726ba560cd1dc19ea50ed6e958b04d0f434ab6413e71e1d7014ed4143bd4db7a562e2adc749883c52814055cd7224ca747290db8c51a91de6d9a9d7dae036e29b64748b42ed148d7c4bcfb591eaf0474743bde0945472421b795d1d600ee81c423ab3db747431794c9f602bf1448bffd59ee6de6d6056ceb653e820325df22ecd6b4028ead4901812f046d4484372ff94d2c452e475594e4c629dacda93dc2e04da49b8339645ccf50df491f39614a32a1cfbc44f62d0478e70a7c357d87578c7e663463641a370cbdbf72be9c401eaf80e5286cdee4e6363085cadd13b1544a6c29460a15adc9d4f3fa5b6e837355494686b2d5eda959b91ae4bd9ebf5d42033d5b10d44d866a95ca5641480fae69896e74fbfaef51e8744068fa740747f9caf9666a158f75754fc65c458e8ae31d019fd77ee145648175231762066e0c2305588d9267d3fea5de6e54fd3238f22fc6e49bb41937b811e8755bb9bcdc3d0edb1c1714862a543477c0e96060ff0120b70e71b159029f73cc86545c577fb5dc7f0fd2098e1971e89c7e438a02281102a3fefe2e9f45750be279ef33c9f2989f0f5b205f59b98f63f1442faf9d9e67266686dfe2dc63b24ed0b4a074cd23a9f43d08190259713d75abdbfbe5df1cb1e871c75978981eed2db790ad59c25a6fe7cfd4c5d0f53f9e4f5de8dc6196e09a800d5ac46e09b78775b87186273a9fcba8bd7b4e2f4565607ba6138715b64202da087e944a23821732a7180e564799d0ade43bc42bde2fa8a436ab67be61a49477b04caae2220db6a8cbe3a6fa5fed7db5a2fdc6fc4eb3aefcd4f04552f94e03500c9e549d3b580c3b11fce13c0e50c97c1b69808ea201079ea7699d52b66800d4fed55c996d641f92ea47bd19fc16aef89f739efc30300db2b74f30999949acf835aa8da27ba0fb2d7cc15bba721ade7b5fa444e1ae13e1558d4aa61d382375278be9e8ab599354124fe4a56f208cae9e0c035bf50b592264d133c4f6ca3e5e6202c1b7c38e94b2d02b18ca2c867165bf81a98c89ccd074653b7a803af1624d8c33c8a376b82150adf9c75046031c1f7dcdfb279efa3d02dd9ba79fc583540cebfd35a481616c991119182898d9eb4c46360be7e143f735eb3754b07c854cc7d76b3a151b8caf359a308a5d5148d8a445ccd4fe5d869b0d70a66361a31c2aca0a422cf52b214c65473ef9fb0a5aa9694c210309be246bc682e68a6a185aff33460690d45d8433b1f4af191bdb924b47ab0a128f99de388b872a997d4d9d02e4fe1120f5dae74b7f7414da42e6b8e934a3d702baa53f58388f9334f9d2b052a3c36b9bd3c19564f9d57e0f0b358731be7090d267e7ae2df9447a4c2a8b3ea08bd92447bea780a13dfe4ee555dafa7ce6db9756689e0e7dc98266556d1a29e3add494f1dddf465d00ac4e1614e6eb7712b8003473d1943ed94bbb32447783b2e1f59002c8a2a62a4596cad7d859369eee59569505ef3e2c15e43c2a585a3d9d809b74c3a61d7339f2b72a655cf48756e9540b5a31fcc1143aa7310013da51f3faad303eb2bd44d634cd72d686a19955b5371a8dfd4d76f0eb94d38a296431bb47c02b021d571400ecdacf102de58548ff53df2e299e50b168cebb3ff8577e95dfab350b0e03e6dc75e0ee598cba23bab95601a739f3853b0f4adc57ab27c7b1d15980d18f7525e144027c8569dcc53098ef73cfda04a4029550261a22a8125aad21896b3ac1268a8dd089b8e45392e19faaf13b71b9eee5dcbf8902fe147f132e72812315ae9d5670c716a0bc90bf04fb4ed91d747fbdd60a58826ce4534e567d4fd1dd9ec8981e944fa18249a9f30cd482d64c774749da73f90758ac697da40a03242c5837aaac90c9cd14aa0941589cc3a021bf6c791d5604f58c76feca09dcbe182ca16bb9b405ba71c4ffd44fac3b33ac851383050e57dea28c4e7ff40b46b33796bdc676434fe701722d54e4205434b37575a712a96f97f8af4dcd317704e044739a2256bbe1f064667e14f60b6e753ca5be0579fd4c73b02522918f290e00c8b148364350bade90abc7f4cfe473c61038a13d3b12b050d4c9d941e1d43270885fb2347ab274460587edf560752ccbd21503e6ffa72c73a714c402df5d3d40b2558ec3c51f72f29ada372b9378ae74e079ffc135e7c536901fd7699af47e831bb86b8141066729e64e831353504473827cdc347215a466bf889c50e80097bfb99b4f6935c184754a7ce6312e943e7a0ccea6d98712a1816f1688b98f93340002d637e2fb4e01e0dcd93d80e5342fc2612c9f5282680228167e6b344094ef04209285b64bf8a82047d44423a2d7902f35334bbec3e0908e093191fc1ade4c27e12c0bc06682829a01e4bb323c2b263a5c177ba819cfa9916c1be91062150a802387aa2bad7ac56671701026607fd28e18b7603fcb1c2a1d2c2f355c0d44f260af2160cb7f9a364f8c2f23ea297f66ee93244239e96e053f3dccc0827b932b4d661a89458b964ebebcefe6893a093914a20cbf040d7eac3ee3dbd1638e9170a177784ce9d933fcfc0502bffb43941d232717fceb97c6d654a751a1529da6a77bc2580ea7f8ef2378330181d7612ce908c809795bc5034c8af57644a57da4241a66b9f68d52b34c43dcd3c61d2ec793d193d2e7218898d434c902ce1b8d7cf83f95b5450a76d7aacc730c2c09a8dc1b360067dcab3d3e572c1801e249f182a64b761f84fba218528bb8710da8f15462e57d0feba49ddfd6116f526e796654a8358ff07d1b1b534737ad5706563bc97315e823f939a6434115408cd7f2a2b2b35fdf68c3805a94c39a59613ea5638ca39e1b862d961c3753cf1282db43d67ce7fc5a3ed2592ce8afd4d2117f17b3727d9aa2868813f2747b25d66ecf4b7d09025b501bed1faa671c1ac01a66db1ceb7c5d01bfacdb729ada4ddd2cd98ca3414f5c093bc6fc274d3615100bba9c125c426cb58bc2c3f8fa3e9e70bba470508956e8610f4899b3388283268b32dac4fc8f6ac8dae72e76409d4c16d546696896c396efabbe90a2abfb74d9fba2302b67d1253b7400f0115b11ea8f560c7ca6c6d53187b0bc750ccbf26891b70b91dea44c2e024469756fb6fe5e53c1164db9f0d89fe4454f735b755bcc60d9399e23771391af386b484c6683c7085081950c4fb0ed2fa681806ce5d817be13cb398959682f274a3e5eab1508ffda5e65e1907ee408c8e0590c25a4a3545dd47f0813410abe34a1f9d4011d795655c2692d0f0dc5a81f09d521565ceefc325b76e0ff43c47e8fc1e78785c079861500d0435a67aab9ca661a1ed0029fa37d215e3e42bde19484fabec5659db4802dae0e0d3d2101cbf9ec94920e6f6ec97ae3e303aa13a52b25eda59df0006360d14ea1321f3dae008b2b78632ff0c4bff38a513a793dffbe960d802296badbb53cb26fc2226769a0a296226c9ece47ff58efb505ade878c317e32413267f890ba4b4cf3e204b17bb04d3693674cd1a422c6c6fd28e128a623cb8cec1888a6925e8a88a14123fbebf1b0b48ba88706fab543316ac5351fda498b5ff8c6924a7bc7483c6af5449d283a7a9005e009959acc8ffc3476a0313709036a5e1dbba519fe222f4a664e6df389dbc76ca0ebd390fb70e9f3c2f8a0a98e9c42a6d284cd0a18045a41f4fc88edf312b5220db80d661a9be8aff19432a7d4f36f3edc6e948c16ea22a81b915d3b1ff907ec4f800eaabaf8c3dd63abb7dccfd528314daa2d3980a9a6b4078005f085bdd44e12271ae8a50b6777389f44063b9023d3e221d10f0dacd50cd597cb58cbc81be84a8be70704a45b02a0428409e7383f2660dc2c2641bd74b3488f593cc9b301e35508aa9fa370cc34ff409d80b80abb8ef2d8386ed9866cd0456f112dc618f77d4708cc59fef40381d004107b964ec0a01295690a45263a44e86529e712521a00fd9db1caf0274c4793f202ee624990b342e0d4f9c72986ec5b599e1a09d752a5d0c2a1ea50d9bb57cbdbb11e10cb2fdb2957f26856288252ad8bc71fc9a189ae10847d9b752d098e4fff4fab106c5fa80720ae19d41fc991411068ab3b0b494445ee0e27d3d920d76412fc735912498afbfecdb286bd77dcd14382e736cf4812097eae982be3294b4052e9b64b0423798d7b30d6baa63454d212524bfa0814e3da2aef6ad2e2b7498b1d2de0ba80029d113837ab82720bde92beb02bcefd994e2077a50be017b4ac0191598321d3f5da36951ba1eba532c5a90a64cc3f7f7dcd99ef9ada8fceb8716d69451d1941487ffc6a55cc39e5ecbb56a1044d33ce42267eb58c7fb263397f5b04d3afc45800722a4005637b662893133a354a89f5d034394a7415173f13ba087bc2a88a2e35885bf061f1f12b3b978a29e303b5a4e88f491a95510b1d3840277647589fefda808f75ab525536a0be6db8ca789e530560958733b08b0f58bbc1720d794b358f6c8273a7cca421ad709379ce46b4b55a0de83978193dd60446a97d21bdba7ceb754acdf3ede6e90806ac25779f32632374bb58e6780a0c56869bf16039d1437ccfadb655f3dd213039764bab64c8b4d86368d2f690cc55c00456eefc3b349e2f5a5e9d6509eb07ffb48e5259aa92871c470a46c33440b88659594f8e4fb783d64e4124940309f1b8f5391ba264d4ae3aef12c03c419cede5896b2d99ea6388909b38f550499b78f4022308e56b4cdd09729b5cf40245a2c34cf447e4340252854e89abb2991aead3301467328dda72d180192d761dedea57ba977dca304dd044c2bee76c823ab48c4162a0beda54caed4872e7251e2be80dd761401abd5a7d3d0bf4765345a43ee76fe07c49071cce4063a03d5cd5244a73e0427f43d221cbe38f2ded43e635221e81c1a8721930f0305a22f5bf1488ba6abe93328e59c4748b986f379a3fbac4173c20e84db6fc440858a20a3d374b0c01c7c2961eb5738ad69eb2bdaac390597b424efba5f783eeae3dc3369794662762b64cdceb807eea74f75ff1e8100e0c321ec7314a52b349962cf9c27f74df2c2d7d96eb801967e7acc6a4f92cfe45922e8b5d0dfdc3b99f5f1b8e10f4248015f88e16b4a8be70b8fd0d71a223793c46434860939e9f244171100c5cce0b1c78b39e8679176ab7f0504b6d6614cf147bee24954a89d1009b9e07cd89b085c58be0d034c3b457f423659f6f19625dfdc1eeb7f7d186f73f6426015fe4b44b4560eb5bcf4e13e711cc32df6d3a71e3a7401c01dd61499c05e5b6729da1b288bf4b399401c27ea875ad1dae2811c28baa278d04f58a18e8e20e3e3a1038efee8f4d625aff94211612ccddcf630f8b6204936268a55c45780d380c9021a1926558e925cd994af6830b8e2f352622cbb3919cb6f0aa238188a62a14490cc5eae5c285a8f71cf7ce42478fa0a7aca0f1110481759ebe2819e67a8434a6939bddd4d9ed037e6b71e0c6267fce13a8cda3875912f50055bd76347507ead0e53c281cf378a852cb2bf45a011a02c5cfc9ebaddbbf38c2ea774a9eee25835c0ac10220e0c037ff480b829eae944b213ec53a4ff6683d46d86190805e5ff9f3e161a2503ebe5a05e156f353af8eda1bbd37625160c5e8943b508d99a439ee71096c947a21bd134a37a0a3c83e4458b36c64967539a6b7f0584ec9e643817b3334eea35c7e32151f8d4c54a565fdf830549a2ac553641c9aefba25a4a49ae2ab54a9300e7dec085d60c6f87e86dc881d4b12d56f3254de78735f5181958b37ad78fba628f4f8a1252e20ac0c09df7c6acd9324f2187a819992007fb75e2dfa93b61fdfe35ecc20ffd73d8d5073b624dbdf5ad7c0fe42ab5c9895afc5f9b01d06d0d2c57b2c41aa6524717c3aa8d605aadcf9bba14763f78f0809f9fb23d91e75eb2412f9643c37fafc18a2b9e92fefc9aaf13c7f7e4311dd547e13fa6d7fd628ce61e4e007cb077195d7ad09e8f202dd799900353e87849a9f64041e11e2eed617cd248bdb355c7a9dd6ad6e8b7082c030058c15014556b66e7f43e295a6289c020bd8731cafd62650c9b24595b819417f584ef7db844dcc6bf485c35634bd73bbf1f936f9de3eb5b6ea5a7b760ab1b788619b42c7a40de33a849d8226255e91ae1e4ffc47b988480901eb166b9b4ada8684e52a1219ae4f01fa10f11535b858f60f364983f5b1b14477bea3cb97684dd1262c1508e4b0160801d4277c9a9208107b8f15f630c7e2ac0cb72457f1bfb6937e1544bb115638a78f4fc60b840bf2d51a6c721cd92f3c9c75c1bcaa69b28a42faab0ec25e517a5be8f5c4496c9c07508c9b5f1ef96e93f9fc6d722c3d97ee34fdb112810403402ec5d144df12ebc8b1ee85a65d0292f15cb410449f9e93ed4d89a9631e0b9e76516151a938d3a49e4ee5d673e3989e8e1510ef6945bad864dcd7304459816073c1b95443167dff5d257b24815da0b6b3f05ce5dc16cb8f3e9dcc851461f46a5322f91e5ae9424863e1f34ad28539b9c725a58c19d9aedee5d438f45141fb19aa485b9d4178e311dda556300347600a22dcaa93ca79b0e8de534f0bcc6d1ec9ddd21c90707932eb994f68ccafa490b0b9f3f8eb1f7ee6e2a59fd5a3f2a7fdf056e26da0b60ac0c4bad4fe40a9207fd7f7e994c3febb095095c7d0c02993ba88e1a68c549e6cd5be1f7c136cd8946641df16a036eebb9088682989349f548e113fbfab09b36106b886e19ecf51204447d9d68338e1b3c5d494a529ba3df560a75ace92c97558bb879dde8c387e3c8499ae944685a8e67e06c5e48d83c744ff6510651c2e1147689a2169b31b367e0308f794acea59a8233bf280a1b6661598465c3f1e7321b12fb6fd7b353f906068f42f90a463098eed282e3577386f70eed9af98dc1fd98533f8d041eea1969f4fd8cde87cd610d5b352959ae206a864909f64c05ae10108fbc73cbde257e761b7a7638059cda7ad27e8b3632f37e37990a940aad6e7e675a1e84b15a484833045b11299a786105b975a7e324ffec4bcccb5d4396298c609348cf341b2ebd078396c5d01588a35bf3d259229196cee0a2f53279129b8f2a6c31876064748483f87f1710cedbd6dbbd5edd2deae664e6433b14c04a870bd26445b24f974516c92a9a757eb660a89394a4efe820f8d42625cc1ec9c06491c51740a518322ad1e71e4b5df37bdb0580c8f401d6c81c6159f4c371506582a56bb04ea848b5eb239de5ff431fba1944c463748bffd35e7d0a31126b501e0960bffc87d5973f15d3890ff228d32b9ebd8cdebfb8c637c2d0cd46791469bfc3aeee6faffe320be1707e25b64a326b7eb0cd80dfcc3352d80537123fafb9f876e4750472b03dd0be161eb703bf21842d82d9bf2770b4b862cd6278edf1ff711d62d946e937fd957ff729c1f59adec73ff7f30bbddb39a46f24312f568280dc6b3ee30a3ab7ee0c4317e0d3f9aa80fb004799f3f28d2c8d3f5ea2f241b37f313f22c47708c2cfe5b0b1fe71958affb20400a5ed42d47d6f9707b89d199ef8e75428bed3538452c784343561ed1f62e083fab8d9e9f1f6756406e5e90188048b27a8e56984a79eb040188166fdc0c476f333d6c749f4346b6257cccc023085df2132d2a5c2f8d8bfb8ee395c32b1edd8c3adbf8623f8f0ad6ea3e0fba203f91b7e91264f0486f43e497a45a7b5c0c41a2523c36b1b8e450c65b197a2e9f25a71ca59994ab4bd59a9f2d48a2f70180d0ae9eb4ce61a695ce8e97183cf8c02fec01f546680460e581509b1fdeb35e147874a27dbe96e2ba819209c60e3f12f7fd1e22dfe8c3966f5c468ff7812b3aee106af612ca7697a4b9d193b62e81610d0335fbe28f56088a39af51f3a4f9008c19d0d14702bc7d4ee8837cd5cd88e832b24ab84bc8eedeb675f30c4c84a0e5beec7cae05f660f92ae1562c95f5905602df68378fef288e898a5cb01afbcb0a05ce48ac71e40f8c084e61dea6ce84adf3fc69b4926c00562b6eaa57d7e06d8c7cabb06b3ef24b152a65aa3e77a394436bf21da757772672dd143978f8e2d069292198a7409023b34772449b3a969f37462ef58a4b63a1d55277a63201d0428fbd45d4628a8b042526fa7090e5b2eac73d4912d473ef1adb0ca9cc65b928ba344f6c6ad241a2b481741a3be9404ec4b698d42bd749adb72835f1e2095e20658c3343ae8c988b6d0bcd70bb2d0968849836465f709ca07d644114c1f3d2851e0f051ceb6eb1a44203dadffe2890c053aa65df1ff164d00776d95751ef90447cde06e093982d06142738a57a50de2f0416364e8104ee2746fdda385612cc627fa8e92e562609f0c1fac58af0edc960fcd6413450646065d795ac7916141eedd938abf1cf4a0fdea283bfda99461b9d8fbac6b11e02d592c67d61808a81de95cfb4de0f96d1b39acba2a960faf4bc9f1af7b3ff31e38f465571888fd5055156d107a1adf59fb7be8468a2d51c6fe531955a1b03cc75cceebded797abe069b89fc2187f616af8d804ca1170a3474b06a930391a4cc895ed19bb267ad701648719143d67e13803ecfd19d56706881f3c2015e287297940a1b4c171a863a09ea228a91e71341237484cdf6c1da66274dddf94062a72eb6f8ad73888f7b223977cd3f37f79746b6827a319d7000eeee789a842c4fd2946b2187a45358706c2b288222db36f3ae0eae9352d7fb1c57591990d9975d498ea0832404bd2ee8d4a524f8a6cbd0a5b80f076aefaf5e40c25c94408247d5910cc52bd59d379620f59a3d90574b89c036a4d971b9b11da7f4239a64c0ef891ddfdad8541cfb986ec10efb623eabba57b468f27d611474f05d1c61e5aee43eb29ad5294cd97c1e5b13d500d1106ba291e037d4dee76b1bb64eb301121ee50f96cfd67ef66acd43933c4085b2497e78f3ce067a1fb2f819a37a5f92e2dc98b04e4a41e2520aca28517234c479631ba6e91840664ba22b2f2b1508d6cc13ef34a3d251dd106b336b3e6308ef2e7589b5c2c041c9b573219ce555b668e10f94cd765e8ab2ceec43496d81c75fbaddc049ff2f7f21291fb47acfad49e352282962a621aa2bd624d0752800311eead4a292c649974acc063124d69154f3e8105301b01e98fef0c32d0bd40ada72328f44a870686a445675e8d4b9708a5177f5dbff4434297aa681539d65079c8fa71336d4c7e02092cd05cc9c3f564bec0c4fa3458df1f798f2f697ee483c14bf2b03af0a04ab57bb6eb0002ecc362d5d3a3984ddf8e4f2f23ea806c0eb4a59a0371f966db332f7f0a3de36328f0acee46ed3bbeacb2e990d044e45227810fb9105305e036c590270cd74a4d894b808db610a5d7f85f2f51754f66130b0c776d4e17aee7ccba18afce66c0a9267340aa5185ebd7fdd1ab8893bd17ac0a9a26d26adf34264a2fc0d5df3601fb9be5c78a9f85b733cfabd5d2e9990780bf241fe6e9272d6b49b9286e02b40727a349911234324881062087e1b9403921aee72971861de42ee77a2b670d46e30d59e1d4e6c150b9501c68376a37e5fbee98eed61ebd6cf30ca18f46067a9a7d90d4837dd28de77399a8ae145911e790bcb4f6d0930cf493cca495a70cee20263be28f7e27d5b9a5f29a3a64ef50295fca6a544d5658d215c6d6b2b5663f429d65b3be1d2ba95b981fb7e20b81e9c86aed08d69de7ef61a03f3c33505c3415ad0d42253d0199fc3e673f37eed69fbe4ca78f43ab5021b9f155c7dd4905f67736eb7cc6fe3b3f7ebcde96a8659019fe5ec3625c8824804be037c1cf50ed55572b5b6032aac05a364cf010954c1288cee8072b04f7830b79f7de44d293bd04ce3f24f5ec561e2540772109284912e147e30f2cd77ecb6183269797d880ae33e463a86eb9a31d03dce1c64c543c78ef32507a21635da1f352c6acc57a859740fd6e035ce4b24e7154af50989c74e877302d9d68dd2e4035cf938fdb15d8fcee3d9ea69337a9b5628977fd3973e5cc46ac61d412d6199133c669bfed2c5e708d1e62394663e72c4e002f66ec6222615e2b14b7970ead41b504003069c0468dc3e6c3f599434aa5ed4909c1c828cc63260a73c5d1743ba44fa8f8d9b2cb0e151257da8eee43a91db40078a325dee7f3b04a42c059af5dfc655205cd9380755e1e0465ab01c53a4c2054bfdaa98e870cb656872ff71230d491607b76356371b15e0094d6d350a8000a9a018c010e7cb2ca10b73a2dfc005f9332144432a9ca121befd8f2edf767777776f29534a017b0c370c610c229148d41f0ec330dcc2500be9f4b0c330247938991872cd8193f128dd908b6bf86f3318cb8fcb753f2e317c7003ffe3fa187155683faecf7e8c7c665cc504777327abc5cdee6a9a7722a27bfaf463a4b354745d7719715513275ddcec27e6a4ffe72616727d6ee68a93cd908bb9cfcdf5908b93ade870f3c613400ec008458b32975cff23acd5d038a95181e340f8cf5610638354caede894eb3354a34e6677770168112e9c683894cec7d170a0cc224f50aae168336da641f11c9cda77d4669a56c455fcdb6f5683e2adc16cb41ad71765f4b83075529ed3a66c335b91236cb519106634a66946b4232f6d76692c33496f4f710bccbce22d62137015cb88702385d640c0557e4bc6d9d974c45073cb2e327b22810bc3c8b1db54db36cd5a1a84573e58369335c9c22d59d6ac39758d5df304e400cc56d7c95ad73f34b5d0108526123ccc3b10a6f1b5aefd89c74c2d83a64f2de51afe343455724c471639d77f08271ca3a7a6df5dbb50470a09633f77f95b081d3d65280d1d57652143024814979293e32aaae2d81b9eb88ef88aab60138bc312bf999946c649fbc655a547b9307f02e5d674e3c8d66b928cfce117e1a4fbf8219c74f5835f059fe7caa3f0ef27509a8b96e2df53fc7dc65bce62cfcf2915fc6986f788725862ae3cc7617c93e3b0e79e9d8cec0f9b28b7bc7ddd1df2143dc76126271d88c8372047f1747a06091c8ca5e96ae590dba5d75c6a233a280758b02e5f5145cd0f97afb8e2e6ba942db3ed9c9339c78338d984902646531057f537683272a78b260763a36034f94bc1398ae800abbcf787a27320f144abbef7cf00e70012c3aaf0fd83740e254a275ddc702918e783bcb514d1397ecea86da73fb530b322b8fee0f31b980ed7bf5b82e53081365c2d300e26b8864fa18d82ebcf3933278a2c8e5cff96201e23068c13c080f1c2042f5eb4b45a5a4e25389d5848c0c2b232829515d38cc9541241a9440a01893402c168246a9648a4d2858a4aa80ea110880e20d038651c3f73f87c3c72f078c4388862b81386201c40f07bc3f7796ef0bc4e0afd204e3f88b3e1fa3bfd20eef48338cd00e3989309c6e14130c0389a6b0411c2384cf6c53096a6308a207335678cf237e598d88ab8067733f6872efac1b4e96973e76c1b8ff8ec52823ad7351b979b3bbbfe74bdd9dc174a29b51fa3f49abbde3e54a41e4a6db96d315897bef8719d97ed5df6124bc14877f76dd379996a4657a78218fb5f3ee266cbcfa7c04f7d497d6cd9d55cfaea49735f5cb5d19f251883e897cff6f9d07e71156fb67c79d94ca6cff62970ab2fdbdff036aa4abda46e34bde164dbfed44b99ba2f4e7a2a75e3656a4fd0db59244430bdd7e13790805e875f7145ec929e3ec9a20d4d2e8cdf1e0b32c4b26843921b80cb59b061a704735eaee22bb24892bae14dba255d386d796386fa7069bd74e5d2cfd347710e30c636fce97bbcea5e1305aa3cc7b0254751b1d4d20f9f138da04fd2bad72be58d84b39dc8c3ef66a7cb7fb51c53efa4901b97becb73e20e6a6f38cadf8509a5221a4840a4ed499d2d69d05a4e9bd96c56337bcd1d9d9d9dc9da99ad9b6e8643bb17cd58637a51875d9aa23298ce0e0be6add9cd6c86b33351361d6c8cc95c2f574dbb5c134563ea160cb6a3a3cd26ca29a59cf34f4c4e84781753cb28ea42d78d4b3d733561b039e7dc992badebe68e6baeb656cbd572b55213e5af8da3c9947aa5ec53d85c6daf17ec057bc136d9963351fedd4e0ed782cd15376bb9ba6e7ccd5c73c5cdfe4da6717475dd3882a6b033fde78947c0f8ed24034a1419f5878cdfe18318bf9bad1586adb015b65ea1d02bf40abd642a2a3215994aceecba718cb1e5dc97c6bd34980693b1e60a8c71b318378b71b318e8ea58a0ab6381ae8e05bab41cd05dcb01b59cae1b4793e97fa6525d9296c9348ecdb5ba0e26a3962b2fe377a844f030e34f3c581e7e79f81dbe885416527ab0a2c45ccd6c3452b0b813f0d54c77d38628d75f88afc02cdac084871d66b8b84be54b65b0fcf89e1ad3c4e95f7ccb73b0f1f35dfd52835d7fae08b1cfaf7c27ee383d678471fbf8a75e3ecbc1d85dd18afeaba5b7b57ca9ddeb93d275afaee450bfba97b76ed9bd682d854c9b4bfa3f11d11243ff644f3cfaf265a92722c6186a4f9e7fbedb89fef77d4df544c1ef3b3a75ffe9405225a918e7747115b54c4c9bab912adf913d6de047692ff16e42bb6903a3645a0cd0b86d85d0b8202e1503c151345a318ef6e4f9be65ea32cc874bc2e8a9a696389852ddab9bd486359369069aea5e371ca575af1b5b4d4dd884cd55f762947faa7b4d58aa7b81a4d63804cc98725c553a8983e3049d28a6161a5c2801c984736aa00a7ab0bbdb9eb60755249e09f4a653bfe7fb8e2df641f5fbae3c1ed4fd6fa2777ecbcb8417f4a509f43a26a87e7efc4c7aeabe7b239d24b4a7eef94e338cdf3a38a6db2667ddb0a3380a270863696ada38ce126d75349173d5388cf2779689368ed370f3eb02599a9c9073fd5b18c645890684bf4633a6fc0ae0f4eeb907915b76b6ec6dfb46406c7be6d567cb8ec77173160f4084ffe76c8560c9652d4270643ebfcfdae22837bd936dc369b40d57710dbfd1367cab31dc9b9cf416279d24910560d25f547934e9af528d60204aa868a46e7c3fdad2b91f5de54e43176dafc399c05bf0144c2defce71506877b3227f51a8029a693da3caf682edb3b57f23e17c18b5d7e1637b53010631b64feab66b1d89d00e02f2e8db3232f70050ab294253c49db5e3e48b27e8c4d4a6d9f2f0cb218d55c4190b168d52e4fad31c1bd812cac455f308d75dd57352c1f21d9fa21a71f349e9d9cbf1964aa51c277d3e992f6f7ad39bde147b7037f46eca8e942e4a1428344a148db9ce285044a6f7274eba4ff129e5c328c7a733264e7accc94e325f4e76b7ede88471de3801df3f068c17a06547b57c675bbec5b6b066da533ef10a6bd67fc25cc5b0256e0c9d35612ca98ddbb84a7bdf5626cc496fcb762eb171f24593846a3961338acd13b464cb39bb3e71aec8963367eaacf86c72bdda7232b93e974c5bce79aab39e46e611fad6ee386a36575dd98d27f61df1355b8ee28c821dc5557c43ef4fb97015e85d7c9893364b4e9fe7eb11bfeb4733525bf6a432da15c5df01c549ffd24ffabee353fce78b99403363c427cbc5f2c14c3269cffcd0ba8553d2199dddb48ab4111a45760594d965395cbe620b5188f2893b4c5faa2618367dfa7e5b5623607cb7fcffb4658ca7d6521cfafce233ff0b9adb7fe2a7d57b8de5e769fb9567aa697489cb62cb2596e8df7e34396cefdb9eb6f759eb697b3ae73c6d964eba15d1f25ecb73f5d440f420d7220268f55a9ebe673d3518a9ed235a5eb3312defd99817cf2fa3b558eae48b0ffd1489107fbcb05cadccbc309e3edbf22d8d61c4e961d8f24fcdcf736ebfb5f6fcf3644b2936f1c7d4eccbccdb94e2b8aa714cdf4d719c9c3514d0247ec996c42f957ed37ed6edb952f188f99bfd68c6ff883fe697469a69e35a7e8caf305a58b8abb634ddf9b61c2f2a86dde196153bf2341bb37d49fcd2f625e66ddbb6955003442e2fe1a9296d6f5a79d26fb59ce29674dc32f42b5646bba5ed435f12b9a5bfa65215bf89d4dcd08f6ab9c40d692a2a2ffe27fe185d31f4e20ed1ceea3b3e65052385c258bacd35f56bb7edfbcefc549206d9594aa98d584b2a1ad1c4006662b74f3f26134c6cafbdf7f389eca4406c0b4545f29d80fc8b14ec808a1a16cc67a7f8fe7b7012318099d8a5efaa01ccc4a84532c56795d057a2843efd3efdf001ccc4ee1489d07e2b7bf06de29918c04cec6ab7ed297523b5a5a0e652225265e8e2528b84c50afffb290630138361857f02d2fdf79d1dd230270658293c86f918f07d684f0c6898f01b26b4439424806142f0ac01ccc4603e7b6a18256d4f2f4238f902e47bd00e39e9f011eb22a801097107124a4c9492d3124e4e00e6449f613e9c1aa436c15d8bfbbb8c451172704b6f519b28586418e9cc6d68ac0d1655c0e09674e6e28eafc8e833ae72ea2818bde5a42f616ef1531b27ed8eefd0b4bc8893fe2d6fb96ad24ddc31278579abe5aa92b2685c55c455de2d27bdc5a8b9a236adcbd477ac88c35c79d78d2394d1a605826eedb48ab45a2d3a7392717c8735e374e66e73fd2985329a626a055002b20bc8233bf309480f216245175d74d1453f1118b0431a86accba02602e9e7899a5f96260fc1587697becfaad5d30fed7489dc1987f1fb26c694e29c01e4e6ea0444a3270688ef79cf8bcfb3c5f949c6d1f5604f155dc096d0c5e5c1dad272a7c9fbee1b3bef888faba393231d9dce2a7cf8d9a524c5ae9025428ae3836bf8cfd89475311271801f53c633c63bdb8c39e932279bccd89449b10d82b1bb7358b6cd26d747ac09b855318221378584b7db1d041a8954914d8f9babedc31fb990686cc9926cf90193a60663f8c22d5d07055a60a1734bbf2982cd5784b1ec9c8699f95b32965d17b2786a30f68eae7ca7cea46972fd2715dde2fc49336d0cfd69e7ac930aae2fb5745231fbf6a4992357ea5337de855906c509af3c344378e10973b179c1c9dd70708570949b54219db40821b844ca924ea6481a4ebae8674dc968374c35492325aa26da3fa7e941952e71a7fdd1e869fd68c629a319d177f4a49e6179faadee27d85cffa6dfd1f7883b3cea6931a2e358be6d7972dbadf91ad8238ebe877ea7f2dacfaaf2612d97b86148ab27d183afcd3943b65c628990d6d67eaa3cb527d1d33f89b8437b12591f7c3d35e3abd452f4e2f62adb87b6bff420d72202fa862adb7c15eba9c1188636667b151b23aa32da6629f7e24f9188d16bef2dd49627cf4fcfd3cef3d443b516bd46c3d7be3d761aa1592a9a3f9c7a2c56b77af42c9665f42c2cef513a9fe575cc697a5a4b225ad7f227d79db690ca33a89a3ed56355acc864a1e8abd918ef59de452246cfc2f220d82511ef4b96ee6e96f744bff2218bf8222ba35d96173deb7975b422bea9964b5cf19b55b22f23896465b41ef42d147d473fc51fa33b5251995c18128dc2d1681433f2541a37fc45c7104558d25b326edf2a7ce29eeff6f4c1177d29a381f5dd9485d1b401edce18b0bb5fa4f2e1eb98140aed86ef89429530140a35ab9b42f8812f5f2ef11951eda1557ccf63a1d04ce17332da059f137b800f5a7ba2b6594e7e43184bb20bbb6ed6b855113957cd62142b762d49034e318950185f48b98d949a234b6e703693b9a72816a394f68fc9d4c54c5dd408a54f7c3562d19a25b40646639452ee358f508d52aacd9a6e90ba34968dabfa6a5a4c6b72ddb59beb3fc49bd533a4a7eabe9f5b97b6e66ad67cb4d259f3a2fdea24ae9a5fc34ff6ab83189b39766171078b9c35b445b59a92dad0d6a4aef9eecf69cc2edffc6668c7ce5f9726d18e5c185017675302c19399ac0b532eabe1f2155d2822db7929a1a363448a8f22a04cd96a36d913989439e9482811850ee7c48c50718b68f634c12adc38d9b3ee09acea33748e9393c719729288f4725689aec2c7960ce5c6550d60d23b89e8755a78cdd50f46f94f210baf2fc45e73c53036af980f232429c2870e65194da769ade3c97ce8380dcb7c93c98068bfd9210da3c1bcf83b0da3fcbda523a3a9d13c29006794cc71da6eef2ec9cbaf994ca671e4a6e5ad76b4d32c15e2f2fb1bc6fe348cb373d5d8d1aefbbdf244718f3d3527dc8c8c83ce4bc3d442e9c835da3b46b50d47c631dfa7e08528976597aff042913b6b589027cc2801012eb4e97d4ac692670d9ba74fc929fc694ff39b70d9116f23d79e6617d9d902cf9041b8867f6f81555c5c80497f25be24b4e4192d41c3e6aa018cf22f030c361ba6c4770d81599568161ba74327679d08c4fbcf0e398d264a867104d5f064ea46ffcf52b317afea98056958674b53e3348c6c1c25584e648666003900e38c638cc33a4d6c9173fd65740cf164ca741108f79d1d72ea46ee2919c60e548369a29ea4c1b1d44b13ac83a325f149ddffe5fa70f71b4f9d52777777eaeeeeeed49dba5377ea4edda93b75a7eed49dba5377ea4edda93b75a7eed49dba5377ea4edda93b75a7eed49dba5377ea4edda93b7513e3e87ec24add7849cda6904aac7a0849532f22956f21422352490768881e0fd06414b77d36f665d4c7bb1f2043f808d9d2412eaeeaef6edb98110993950093fea45a81263120e351f40064c893f1b7d0250c6658c38cec48b259a08e0937a9d41637bab04588eb5ff6a59ac9e42385291b89d730e589fea6855d38825a45f2755cd976ec6e55a2fd575b0fe33d989a2b8f51feb3a666aabffb7ab0356c8bd051afb14c758cf2ce766ac90e6ed9b13672ee55f12a49728b24d79fc62b09137ed9d8ac1ac6f93e571a9a162209df23836be2ff54024a11936e73cec993528fbdf1e5a4c785b1243dd629817384a115acaa62081d04ce216a1b3f609567f28f10da7f247dc6b21ed6cb5994e5af2d8ce5b411ed06b41b33df662e6924ad8709a73df52309eda92d49633696fefaf9914df6eb45f6cba55f3e6d9cd5afb6e19d836c1b3e601c937e5bb10779fba70d13ae3f5b9b2030f92fce9570fd35afe2fa3bcb91705fed44b8fefe3d300e0702d7f0246dc39fc9f59fcef2225c7ff1f0041e62ecb0c50e30666831e3858bcca5454616324ed60996a536a1ae7c9337c560428c120c2c60905e5cf162d4126b119dac38a9b02c8125b4a28415908989692c25a1f4212181e4191d61248a60a250c5082a60a88ad0072a02c81b978cdd87081fce3304cf260ac15f6e1306817180140402e3f8a62b611c1ed7a0ee491847c735a8ed19fb66a90ce00346bfacc51652b4903247375270f164e6d9241a58e7350ef3986cb6069b49d831eb56c5584e1b37e235ee9a507869ee7ab1e6ea592c560960a68f5d7bcbb9bacb49af795da746783096da6bbaeb41134cebb826aaec676a63fa295bed359f6a499c9c6da996c47acd44d5602c3beda5bdb4245a0cd4420b28cd5a9d906ccf30da53ae4c66a91b24506eb26cd3fabb7f74e14987847b5a4725b4f051049420c62e1c59a684fb1dc255656712a20b49ce89eea2081fd4494ea5dc85a26014ddf2af98f140a4cd2d06a316354c45cd4e7e37fd831853b73fc78965c554228d442a21d0a8519a23fc7e671ca2e7e9f77b8c6332e3d8be1fc423ced17d7fe9034f95a5f6c035fc57aa0f6c836df8972a0002d0aab6e12faadcacb10d7f50e5b84617324972bc710dda36bcd3751b5c6d1b65e8fab3e7fa53b0c7c79011038685f1a2be68f996538c130b0c9695172ba61653e95422b190462b239149a45252099142a01168148d1f958f27e41141623886e007fc3c9f277a5dd8712077fbd3bca63866ffc638dc6fbf46dfb2748803ce285111fdd7b476327332a5df9cdf227f27fa0dbb9d737538d8bd64ebff9e7947f7df277e2f52a93a9c0c79f44129a53e58878fd8104ea6b66d8331a9624915dbf63a7ceee0db723b188cb976156de3a3f5eb5ec7103ebaf33ad224dbe9c216feed451e3cb71f79fe682988fecb88466c0ff20b7a3a3ed39f203a52d053db5dcbde1ef4b567f972377acb4eddb89bb5447c977a628fd12fe92a1ae6aaefdb534795df9ac92d5f3c83be559ef41eba3decf20acb7bbe73d5e93d56a5f47c292404d998ed65bc4c5d5679168de0dfca17d6e3f9f16737fdee259da39f6d7709e3c7d1e83fb1077fdb987ed07b3cc717250cabe225bda38a8a8a2d8584a93b7ec72acf51aa3276ce05bb6a9eda77dbde031a6dff567b49dbf0bc8ed952e793aae94ff5f32c35f42bb5f4230f77dbf9fd1e7f10e888d0cf1e795a0868f43a9c37cb1b7d15d0c812a1d20fb265dfd17b9e24fb3d9bca9336d09b2ae84b3554a993e37f6a47b265ea7a9e137b6c1fa3326e9b1d67570112774c70b4d1a9ddaedabda3d07b6ac34a22d7099eb329fd29b2e4c6bf7d0ffe4d89bb3d91fbe387545ec576156dc3f3a05ad2ebf9b19634aec723bea77e5f45e7e0fbbdf8d997b161978bc1a83ddbe9751e779af4d4b60b6bc86ddb269d749bd4a9a68413502db46f8a26124ed144344dc6928e34c9a274618b12d664e8a59d91b124ef10db6b15c9f6347cb53dca4927321ad3761c0b46fa6d753033f33733fbd03104c754d3c79c265ee988755218653e6437d7bf08a6a227b39bbfab90904d2dee543b328e461c8a437128b327773371c4b9a2e350ae478a230ee5d207b99b3a94ab7df760a886524ae9a4de5a53fa211a72c942359f28daf2fbbe2fe4f95b8ef88ef3324bdd90333661d34614df29a5e2875c620dd5885f865c624943ae0f1909d5cc0fb94235a11a235ac855c371daab6a5cc50d7aea879b8de5e7f5a971510c45f1bdfa894d9428da528843b9dcf7cf8fab0623f7e5c76504f454efbe9f58f79f91afc6c9cd27272bbdc92d43aecf920f6b7e3eaf89a2bd1a65ed2aed9b36698772c159d93fafb912417194bf288acdf5f1667e46be9a9bfb04e5660d7e5adccd9d96939d61845dfa3ae60e8de65344fbcc38013c7bd29e613caa3d2773e22477e324e99f97abba3f3c05ce89836010e387c59f99328c2197abca959c1027731272858c849288da7bf5037e5aaefab49c74fa8a5dfa1c8c6372a9ad9fd6876564a43fc3c93eafb90a7d5e54d3b89b9d1d1bc7751d15d7dffb5c5de7846bb847df7bc2397132889173e2e40d0886a12f61a41c4e287ac2cfcee73385db0962e476c41d42467107b5adb9a384b9c3ed58295d6be466ee83913e484cc2830985418c5c941097737d6a9a3635cb45a11c1721b1475f953088917ba222eed0b42823a5f5c9750e0a6823eab84da3a2e90102e86c3a2230199bab0e06e33cd644d9b8caab719208acf274f0a69969f4a6d74f7f0cbd24decb49cf018a816d3815c3759ac32831746818dd40618e8a75b2f1a6e552ea5d1a5e4ad6f007fc72d2695ffa5e125739417a493c1b6f0913c6d27b75d80a7f004271948585adb01580cadd0ba0bec79a2b10067a81497f936904c2cdffbe417ef117f55cbf2cf8b38251fea01264bc3f68ff8339e905567d4960d25ff51eaa86459c54d990c6b3612b6c5d7f2a0b8b842d1e6c6932ed60cb71445918e20e568394ebc3652db8d0830bd2b087ca0f44a546907c2f80fa1d8cf44c823109c6245800eabcd101b34cefefd5b8ca8331e9ffa56e569a994ce368faedbded51bffd0edbef60cb0e65cbd1b37c8471788f9aab1aefcfd2f930572c7f597ef8b2b3f1a569fb9507407d99a8ed53757b1b75fb1feab63d8deac3b3af687cd9dd93e86e7ffa1a155569546654e76d4fc396a732c6e1bd3f7bb6e31a4c96423a128f007b187ff6187f7bd0c52478a278c869fe102230df4bf17dc338416aef30b312a17ddff7855f073e3bc461c29f6212dc873f638c83bfe5c142efe52ad03a518a3ce87b3b74eb925ab73eb0693c1b271d4563842571c7e7bddc4b22a469aef8a58de14709699aebb18df1405465a269ee1773d27e4c3ed8a3befc60b126ae1222ca9074cf5566de1d1d33a37ea09e51cc53fc71fac18f7a94c540b7aee6448c4764d60677784fabe5144b5cd59689a6f15e9e0d594b6a85ecf02be20e9187ca2de16c404d03a3a49fc8e55e263748c139c01cb6e1df604e7f0478e5c1268a71ccf82e79f6cd5a3c5f610a6204407381515e79b5eac00fb91aee75847bf50d51203e7bd87a7f0dc6ec317b1eec3a95511995511919e357959965a22f3fb7a4b3d97181ba8f46a3d1e8a3dc7e2ec662b84d87dbdedefe1e87d3d4962df7074c8ab6fc99e946d6ea5aadcb59ce86a77ba8e544fa846b895cb75c309654c6d970acebaf2a853475c2b52ad7727161cbb19c74970a7a19b5d4aeb5e5f784d52d678c8451cb794bef896ea132d12da9ec6585ca4435c65c28a917be26c84c5a3f1faa1c151ccd91e65e9f07559abbb923c6ef4b8e46448227aa3f6ea67beef96fa8759be566caee87c558b68bcaa81327fd5bfcd2fb6013e51f6c7eb05286f36ea8cc89abd842c15d19bd29e77b9af67d9f76cdd567a5f840f7246898eebbef2316c9f731483a704aa261ba1fd230ad0e844f04a66138765b74801d42040649f7c13ed95c51d9079babf9dd7c302a9b2cdbf6d3ca60578ce5f7c13e265f9d4d1ce5418c1edd1ac9f759eac451fea0b8c3b354a6642c1d069b6513973b463189e2c23a98abd8c6fcd6304abf8509cc6130264c441a8e080ccd8b91427777c7cc85fea9c369a5944df43f4b3ded3b6e0a71fbe77b37e7d434db39d9ec9e531d7f5aca50ede9644a3b2e70dca53fb9f9a1b3b9f02161f4a703bb010d979f021c05c73463d38d9186cbea27ca47cbca5531ac0a62c48ca1cd24fd39e98ba143831b2ad7f041e9749171ecc6a4755270efaf84ff1025d43e8b0cf0e7826cb60c72e96b9d93bdf980553de38f4090ab1c3e57c5072bf7613d027c171df0791d931b811c68cb2944077c2c4f90959963e949e297842f0922e93b50d798951f815f2a3d6954fbc33f1a759bde7b6651f423f1472a3f7a662e656cd997e7ca8e5ec7dcac0688dcb6fce38fe28fec89888e119ffbb631e183df772da3b840dac39ecad5d201a0e746cf55d16adfa28aa8624f9eff4e9eef5719ed131eb1db4231456d6346cfa3ba624b13e9fb55442e7d835f227dc9011f91f4a552e9f4037cd2834ffa8442952710d07f9eaba1288aef01f29962ede7393f9527a9820f3e5779a238eb8031882207aa3c450f90d0c75339ee3d9e2fc7171fac27cf691c7df85c3d897e7c8e0424f419d5936734fab19e46d287eae7f361259146220b24f4a771b44040404096274a0c51b829fcd354cc00b2cb4485e365d1e9daef4bf032cbf8658c11f41ee7f89eb7207c526de33aef0343d1f319412115d1885432adb09c5a5ec00863dc7015c7108bb06408d7996d809e6bd07acb0e5fa6bb4fc88c9707d7ffc8135098ee675ba6bba195c0e5de2b0c91c77f0c245cff17228f183160b4883c60c078711279bc78d16284ebcf22f2686939ad883c4e2796225c7f93c8838565a524f258f127893c4ca6d248e4512a9144220f126924f2188d4421918748a40284eb0f1279a8a884945cff51e4110a81441ea0fe018fb17dc0e3f3b9f4bb07d73f1479782ef7a97e896288e4fa7f228f3004790082df0e787c9f77c4f33a1ddcaee37270fd359107e78d83ed729ff2aed12ef77d03c641354a6dc038e6ec1a300ee71ab6ca086fb88ac31b29eab78dd8100c62e4c6fae3834041dc1a2741b58aebdf0921083e681b477a0849344cbbae184b7771a9d0a61ea4e20e109421fef86c2843ec6634bba7fb942d89749c8bbf6c34f50dab18fb411d6202c837460dd49afa9c4efbf62d67ce36754edf2b4fca5962d22af31ca9e3aab65a8e4e8ecee462ea74df60616149bd384987eb4f5958486dd395f45952373a92bde1a4d312c94412919ec53ee9753814921413171d85f465cf48f625959ac235fc532f24d3ed0e620a2fe9691562baa4541aaeffa9aed439c549d6a8f35931d2b923c3ddfe8de52a86429b4265b8dbbfc97412277be6343de2ab1d6aa6143a3375688bd250233b3a4bb8657877dc5e791f92d220bba0cb58a461490d1a68eebc8c051a507041e631f6fb93ee3e7d77534a670e3d3d4e94179481a07faa4cdfa30fa39b5eb82b20da394ee2e04461d1217d5667c5866064a1c2c915abb958ac46f3f7b342c75fa3f96c6932919cadeb849f15e344c354c32c036bdddddd5388be95f0005a1f04ffee0113c0b3a3efde631c6d13dec9dd596a978198cf9564a7a8be664e7b8eabfa2914dced32148b20c25df0c30fd8a13f711514dce5f7f71bbf11c51da44e94e1ee7cf163fd89933fc018f0dbde80ef4477e14e7c9eb4b8a3d4685c395ccc294bae8b3c3c2f7ab09e56be6c90865bb5a1f83adcab3322e82e6094fc93a083a9cf60ad607b388052bbed7dc9ddeef9ed7dabdca8a8bcbaf77ef42cf218d1d979cc641cfdd84f1fe43822fa298984451a8e6091062aae40f264138f207dbf9680d1b758b6e56727a53a4efab713fc52e894258c312c7ec12e8451adad76ae8181e06256d2bb0864f49e1d722abdf70dd3f220bfd399ab54a4bcf852bbad14cc8b2fb93be777ac82f1f39b09f082bba7dfacdf9caacf9430f63d7de9275bf6cb757c86040f33438211e6c5771fe3a5dccf973d4d75c2a800007d579905107acf6132763f26c11355cad0eb04e9f9bfef62484f9f890c39952c112c1f33bf0077081118efa5f02c0994385180cbf20ed3302df36745f281111081f19e2b92ce76c0b3431a6608094450001829ba2f000c1118ef754cb0451e48ba9f16c907a4687929605844c2fb0e787688c3b47c12a36ff99e649d28fbb23ce99d85c514c5655b9d20919e644b4b77ba7a7afa94253c893bba25a4535cd52c945e128b8d21fde93f9677f107c9c6b07c1f71aa50d0db364e7eb61540fad3cf1c5771e12affbe9b9707e94f55865ed237e93ba69ff4a4a7e28fd393ece9875fd243610122972f157f9c7e90fef424bb8179f989dc7e2762589e4ed3b354be74e5e9149d497748e28eaf241641e4b695e9d1bff25058e04484dfbe2b4fe4829eb863e541306c3101a39f555bb19acb54b552d5a820954d7f9094183d4faf05e39cff738a6af9b496515cb66e0356bea21abe8a1b261caeff58cb39e5fa7bc4b62ef3261ebbf127478cdd7f4908bdda30b4f2ed5e8de28ede49e9dc296572e1a48e8eabe8c5a28b12f07083451d70a8ce2cb243e3372eb8e57479b0e8e275cb7964521d2530b965781d877168da6dd9708d171246cf0e190111180f782fc507bc2741c3789d95e203dc93a06138ce9ef847179ecc1c9d9c2224b9e5ccb95ef60bd5ede0145fd6e084d55d5048bd74da5174dab80a4ac0546fbfd339fb45e0373581483886311942c7cc588ee3d5e68685d9c4d8ecad1967b13a6f752c574dedca50a661b1583890ddcc703e569fc00233bc6c6035b33569727476706437b3d8ab8379cd1c5d35e787ae9ab69419e768629413596932b1606339737226179dc9f48428d7bf853543c56ce16a4d3dbd859d755d559aa8cfd01edb702332cd8e7b6de3ba273bad1bc7310c6fb6f626a24bc931074727e77c6ee3ffd969b6ab3752db759d88c5e85a3b0d96682118cb698344e3774a69c9f5f2df18eeba6ddbb67e3133b7b66ddb38a7f33ccfb315ec6aed3aee26eab313d676dacc25d3063669a6eb4c942936c22e8d8da96674f9203b13ce38b3a179a1b9558c1b115eb00518eeb465cb2ec8d57eee092c30c3176e19b0b91a9fff47ec876cae42aff2654af4e5cbe84b8eb11635329bcbcf1205d9e527dd8c64229597500a448e9527ea6312c72763c953a0a1992b669eb63cc2634f3efd7f74e189571e539ce4ef9d0b2bdf98fea9bd0745df39c3eb61317e11b1226c64979dd85cc6820539e031c5559e7502cde5a74e801303b60f3fb4529cb46f98210d13b2d74d1962670ea1e364131df77a22117fde8c49bc805745d870123449b08055ecc408462e7f1144e05512349d93245cfeaf0aa31126320a3497b7c0113ffc03e08007c0992b23d6c0287e28c4210704973f0a26b8fc07c8d1b9bcc5cee550044d842fd6f0db42abdf6b4a617c2374e66afbd962021866476ba276b09ce4d19a287e4a8626b02ca806b036819dc0bafc3c5873f5bd0b92cd9dfbaf4e18f729d03481e672c953a0b9fc6c8dd09928fe8f0a63c95be01c00e700516aedee0a71b99c8531428aa34eddd6081d30700f16a3780aaccb6f840ed7e00d0e63c9373a50d0b9fc49b0e6aa070b099db95a004dc953685d9dcbb016dc92b3605db6020dcf741019a7f810995380dbe74cb000320c53f0bb19bd4d470928d05c7f8a339bbdcc49a67e5c69cf166706656627946ea2260aa71b67d6339e331c2838331adba28cdb4e1c74264a67d361d98cc6665c17407629bd2863d936773a394dafc39b3557f4a72947d59a17652e7172c29c9c365c6352d744cd23e8a5967b4dd47c1d3ebfdc62aaf9ec326d8c77e352caedb5c12e8c0953d1d64409fff6446026f36bde6b3fa47bee89c04c3b7ea8f0ee9e34544c979d2e9a6e2bc348a970d1700ddf74266adbb95cc539f5774f0426e7d4f69404f7da03e15efb7ecd0e51d2f6e6fa6b768bcdee26bbbec1b869371baee1df83ef26041886d9ecf62a3718cc6cc2486d495f9bf5d4602c27cddc9928288cfd94d3884cef5c3a4d44b9fe3249344c4b1023b7d4ae6261ece709b0b06d228a0f22e3e4124e5aaad384ab681493d220418ca15f61fcdb7de007142235e1c4063810050f61d259e7c39eb07391515fb4b090462a3ef4802279d861868b0c5b3f068c172d27961553893412a98440e3c723862c2e66d17507f2710bb19b8091655bb0293b5308621c7d6fc738f89a9c7471157c76707777d9316d85a42e7d21a9db74d239d98f0849954252a9542a85e332dd450b4dae3f9026647ae6d3cd243199287cde3c0da980649c74dea136b509277d6767ca6bc9a482274dbda46c9a7015b5dd8748ba6711c8c822b7c3bd0e5f754f70df73466b294ca70dfe76758d6d1d1d22fa4e167768aa76efe848a1dde6cd32758d3869ed4e6bc79bb1b542eb35a07597abbafc8c5a7adf998dd336fcc9aeb6b619deceb77ee7775adbbbb41197d7b1ccf084a0d73dfdc95265fc8c6adf9bf12c2c333c21e875483c2fc366ae70485b8e30de1b1945ab2dfd968d83447c974a99a45faa1d93f4b71a3249df7aaa73b84fb15246d1f7d49051f4c32a62923e584ddcc2cd36e8cfa874c761d46fcbfd94fb3b3dcfed3cd7f0256d9fa0774e8f5528bacbd92c79e22465175fe22ace3eb1bd4c77b9b213c097de36da12279fe89b86f510fdf63d7b67f9e894dbdbe87b9c1680c9a296e3b686f9bc6010e3e899647a96070550c30740fd3e555dde46b5de6c1973ce5907a37232aaf7316a8d7f51edb754973fd52f0cc3167df045f2798f8602a8e107a07e00f02e35f5b6da0040fde15375be8deaf2a01696aa280aa7904831d728a31092ea9cc6e1d58c92c9a55abadcd2ec66b394c9d27c51454c96bea59a982c7d8c1a32aaf4304e2d0c44693e58f9720f8240e28eede9f7dd6a5f2a7a25d1979ebf24020415451c09c3edd3622c5bc7b694d671d29fc5ad8767114543ea427f781a4e805ff6dd01d9f614d958b64e5f99fa9eb8a387f744d473edb02211bf467d16817866fc135cc8d1f870d208e7dc7ca0f1a3fa3468f8f044f8f67fa8333ffcf7a9026094bf5873b0016c4db50dffb0fef055112cf1c3732118b92f533786abf4095d54d35aa7f156adef527bc8b112806be5fd3dc9387a923bbfa28a784b8832c6a53f59e5c3d3e758153e7d90573b3c7d1556d9a75f6295cb53fa2726c0f7f449a00ff53fac3e5401f08a73b00198f477a93d02c00c8032c62d534084ff3cc21aa0a36a5fdf29750e1aef3ea09e466db651fa5a2993a59f3564b2f43dd48ec952c907942d55fa3dd4f9a8d2d70757c41dd5be8cb36fa9f4a352c925f499cee18348e367aed3a83ed45999c91e6a6546d98e6bd097f12d7abe54f42519affd90d38ceea5e8be614619df0f7aef30332a11dec7d02fc0252b121efe2b92cfd3ee674522da0e7462273e1dbbef40678738ccf83c54afd270d2f3b422d9c18a6c65265d2a33075eea5d5a6a32ac13a0d76a69a53cecdb1209274ab0ae94a03b69e0f0527767c6835d4da2f38db1755cb54949dd1933bf0a49fde02366542652d76b9cb46e64fe8cd40d570949a590883fc5167ff0730cf3cf193f67cc79fa317fc6cfb018485dee895c7e8ed9be7fface74b165376598c818f37fe36a89c4a5df535cc59689d4d59eda7f50141cb108229e6ece297adf33181f76f4614e5f3987ef3cfde61c309ece174fdfd4e204383db5a510977b33eb9b7ed237068c0a4537bf854524eee07aecde89ee822b374ee76c656fb624725954c2f394be602c7d67cef07353e873c3582acbcf5a227139dba5aaf22c75f45d80eb6f1a95aaca936a37f17e42b5bf22154debbab2efb42d73b2634e3bdb364bc497e203a2f83da51fbaca7bfaa3afb6a73f53b709277865e2383408da04bee353c010d494a39f9a9a2d3bd0e582de7726f80daaf3cb6264679fe22a6a9970b994e30b721c651718256c37a0ddb648ccd5f83eda4fd779ec38773c71dbe146ea24124e4e71df4939ca3f657d876f46d1a42257b1f51fe9f6737bb6a3687bbe9bb76dbfd9d045dd65157d7f1cad9aef2f005679174c4e12943305d777f064c13cc1f52902af830bb2283202ba43bf9fc8ddea13740432856f53f8d71f202198d19afa9c4ebb7f4eeb447741dbcb002260eca74ef2f3288472ef1cc731d134dc0e249b90a6e93c07a49921ed2221c771eeaaa695cb812ed7bc9a4718e5cf8162ab5bdf7bb89ae99a2ed734624b9369e438775117e3e09c13bfbf69b8f77c495d353c65bf0c07b68bab7ebb88afe6f78f9ffe74d145173033dc7eba9c34e228df6ec0ab7675a5466ec02aa7386014772e98b29b469ca4dc7b3c9ce635ae0ad9b26fe8398ee3382ef49fcbd597753808d2f0b27875382809f75bd5ee744d23f3c837eff73d65d5f8df77acfafcf7cd393c94c23408729e0fdff5e1806db88b1a71b2861e71f24571c036dc690dd7b82e271d0863495d25d58147b5ab556a84ce2fa98b7d4efb99a289f454c902043fec068e8373c952380dcc6dc327b317b812ab46cf0f83552195caf3d36015e95338509ce32de77039b1e807926a7c0ff327c13946fe03700e91116c00ce61e2c12f44e7682900ab3edf758e54c9d2ce7183da6ec50ad1e16d5389d326f8e1347dd1feab7382a00b96e06bdf3952a59f25d248a4129af6a3f4bb5ce882b6fc9e894bbffc7e3e414137663ef83a3cf16acf19b854b325f89a062efd2e3f70a98d0139fa03d7e0ec0dea725f3e1a3f300e02708deffd0615ee93981e4cfa5b817c79c225c010413eebb1171dae02ad76bd67d096f4b57ece03973ec1a4a6750ceb7ce678446643570e43a138d1a14267e6f33dbb9422cdd784911f6416629a3aa5bbddae4ef4c79932cf491d369b309b300efa59c1a4bf7633ad6095860526fdfb96ce05e68248348e09f0d88d103d9c5aa68f13c5c9493f18b8691e2c87c3c1f16073f5c1ece620f82294adb5e6066d8723da6ed641e9adb5e6ded11ff954b67d9c7bfdce5f7ab0f95c8eab9a7a24b55118871858b5dd6c5560d2abc0aa6d0b4cbaabb699935b68edd24dca7ceeb8463fdb72d3b9cdba33dcb0c0aacd0b4cde78a1dc76ee6caeb63530ca9f63b5b8991aeec8b6065675365cf0979bce0d6f89c7b19ce4669ea06bd8b8f01557335135628ff1f9bfefebb4d04537631bfe9ff64d7366a69b5166a231ba742d5e125e784565bc9a316695e8c1268b33369be025c183cd26c05e9899690ecf98f8f9cff3c4c99976d3cd0f36e707fb987c399f145fed50f335f160df936ff6e17c5c7c320fe6aab29b95da8dc7a49b693773e53d28825c1bc635fca76c4e99ab9cec6833f4c98cd128f486e6501d3a85ce66cc8a196b18e3a0d71d86e4aa5eae872beda1f22e0f6ee156c707999b5b3299b9ebbaaeebc6b18e4c6edfb5a6a84bc1573b466ddffd60dbba1430179b65f7e2a84d85d3b5dca54563d6b1451b7f7b2ab40ac40760a6fbefbb9793defd804907828ba13cb24b01a3bc35fa1e94dcf82faeeaa8b46c16864d0c95a21100000010002314000028100c874342b17040281846b93d14800c8eba547c529aa7595021631021000400000000000020902008008e97e3c4a890b06a0ccdcc5bb000c7744b1d5fa2ed3c945d40800c644051946158bc996f8a215eb82e7e37d7aac9a5eded3a4968af4c555eeba870471c1cc57898c263664a5d0aec9637428660722b6f6e2d280193ec467ec850e594eb08e8117297da037099af66f9fd682e506162744bf829e842cbb3d72cc72e6abcebee6b627282ac76fe50eadfa21e719d86d8a1c0c9f8c294880b7231dd640324e0910ec6f45549a6082aa38b5550b595fa80a173ac15007d7b6abd96d7463754c1c0fe0d14e0950fb889a4287a3c88599ceca173e476258a84e0636d0bc56814a5a9cf4111007e0126bf09e068e235627d123663a6182830931bc616441bf559245b098eae583013b6785cbe4b5fd664d37e2defe0c6b8344a92d1ed420539292712de7f5f5c6c4305218cde6b83dc4e526af464ce0f0e66d2a71bc633a8653e528ba416c9a72ffd1820cb3d8629b0a2295c241efc3c5b2c5cdd41c3e22f7fe6e74bf28c447425d198635ebf74075333d9573bc6443330f27cbcf705b17adf1908e153867324c2707415b0930b84611d8384417270d3c4461c4572107be44fbf8592d01870b26c1df71de19ad386b649fb176bd9ce4e1b186859e4706c209e78691e6310733ce069d9539ec0606cf197d8c3437a608e856b8869a3970b45fc64024cc0c9b2dc0d2527c8430c2f4718206c084c412274add0761c11fe8d78031d6f0d523604945b41a90df0e4aacea326209f7b9c951d251d63c6fc1a5d57aa2dceca22f8e370d5fba434b48f80e9e3c522e5aecda903f5794ddc51c08fd8186dd1473e8f65160bfaa7abd2d25081774592f4b79c52900783d73a7134c0b287e4489fce77e628074b4e3167e95732caabbce20b4c87cc3fbc4e18c53fd09afbbb1f90bded5ee7df720d318083c528dcb4d1fe65730c5a87f043f0c23b1a706055914316dd80f52866bf15d28140085c0a94f0325d5410f03dc24ba2912bb3cf54e74e050ec3e652698eb0d9a04a7beb8a152942c1a274f4039ed0c53f25fd3a7c37fa0b6b61132692041cb96493eab50da821f7576072ea5929382b3e5a597f972caddd501a064ff921135c5c1de58e243502cfe8479c2ceb93ad0e54e01c24a964ac1e0bf438ab372832bbbf90493cf26ee092b5cb0e1c589b6c6ba05838790f13c0282135106df50c4b3e63d094c8a0640466e3c4863ecb57e40b04ec920400b89d3633d83bb845becc21d722023d5969211ae41835bd5b0d4bcb3faf9d8e625003d04c7fa0fce1b3b74c4e29831752d8c8273bca1c633a04a80053f2b4342889b145227857a648a275fa6e98a15c64220f85a320518d92520fc05690de08ec1b0fc4cb3885feb5cc3c8822d510e14c94dc4120e47ee151aa9bafef481f5a2692983bbaea0520e503b8c5990356177425d4f780dfb0d302b352cf65cd96afe75da741c1596ac214183eea0868c48b59796fba00ac5d44f1ef5e5a047fb109ec01f54e6ccb49ab33737f483b990d82eba2f95340c992f7c19093c221b2199c4f4040d7862f617ed66bcd5ebf120dca52a890405c6741718b07a000f6c2700463b50348fb482093780728fc78999e77257a40a729a38d94083b6510dee794b262938cb7b1a3c01c88b38c25248d6fe17dc66bba8b9d42638b4766b7cfc1f8bd6098390bcaf024076dbaf779121783612944015de6a19ea3f0cca16f7d995760f300ef18be130b8cc954dc4293a0637406ee0e582c5bba7e4249e986e05fc02bd2648c07c12e6e445e76b0023f7f6bd110c39c4145df6eb3862239a81639239d2995cfa4548d14bb76c2246a665bf73ccbed1193aa6a6d5b9fd0e83f9b3439d99d66dfef06f7cb18647dc5f2e61ea672f631f1dfda5d2832f062232b46a9b13cb25866a823f8db24782f94c551d262585838102d2845da187856aa29b65e1033ee08b907b0b2c0162f8dd83f5d9a187c582ab17ebe04b1fea03462faa424b1ffa4d462ff5129c4fab912c5f893e22f34025a1b5532f3ff4d2816db564ab735e9f1b04b5e2b94cac5190ee835f612d0a58c4dd4b1a7feb8c32959b7f27808b7794ca978ecd4d7a5910464731979bcd0149b63290036c0579099697599187ee0e6cc5c4844a6f1de24dfcb5eec3d87c9de019789fa97c014df061c4f7b81d18a145e973b24f6669dd5867fb203113ca5f233f4a06ec0a7c888f982287a07ddc97c588365aa5bdef6e10c7069b7b6e0d206ae00095b2df1a966d89537f9c2a559c52d2c74e386f4e6b83d3d919ba19f929bed1937a543fb57f166edb5ffccc26bb08268a7e3f643db8cb3557f26541ee019ea05eae0f9f6d265b2b479deb059dcdfb2b68bb4bde9665e5c04ff17f04de7a0a98023b4ed2f3a66260322ff93fb15683e1420dade81007dff47fcb015fcdb201104c520311155b7e01d1ac533457a3d8f9aeb843d2acd44a4459568c6dbffc88fd50b3ded9e63e0c8ed6bc832402ec5388fdb8720b30d0b80a39fb7f4584b6100500bfaf7c98da3a251c2aa410bbe004df943888c0314faaab0f372b62f82eca5cd82659736e2a5c55f7241e1688d18a6e0a2ef560a9a8a09d14ff9b400af36999b213e2edb57822109c84517e6058fb0faa2c410fadb5f622fe7af9ad2c8ef1ff8d18b0b7413867d2629e36286ed05d5f6c0a602153125c0bca002a3ff5a1d6dd08910e37c0c593015e0c238ce403c2823b13b067a4ddd6dfd300da5672d81750baaf65c71760925d27833727c61ba4e5728b7a28405004945eb0246895722475b3a42d11c343fafba7a76bfa9327ded144cb220a84f4bf1153853a6e5a4b2338c0ae0265b6e36330404f6c3fe745b1f5058bffe458ae7565fb8caaa06f2c771492aa873faedf6393d685b310f6e4aafa2159f76353dec878be6af66237c8aa2bab8c6a446f3170b053a94639c811faafb7307b413165056ed16d441144cfc86ddfe8ccc29cecef0cd2f8481b109a024d2950497412ef53db1086380a585b5f7af26c00b002a00a8f100d9cb737940e12a140ffe7259816a422cd656f508186552b6fc10d23f8021e13bddc760a8c262071a065f5d45a9aeba722e4c37073fc788fe365e8a53af532aa34af801954c20496720d141a8a01390eab6e0b8cfafc452729877dd09af143ebaa1016840e7d406e7763afc8061c74df5e69de375c03d1bf98c7a5e028e53c179741a02ad01bc400ad8cdfcba6a9d5b28367cc7889912b446da4390fa32366f86ff3ef9bf61010fa0d85191a5f9c248b39e0072eac24eaa564f85e032056b11ce7f602e5753652c8743eaf0f6e5535d77aff2373a1a6ced4418c0ba84d02840a7a5bacffa2e81e4c3e8fbe0a8793c1f49c9aa020dc17e2c14bc755ae579665a533d11400a26041e5c9d68a180c433f61e35deb532f4a2c9238a5f461c380991fd89913e75da1228855d32e7d4b79a044b0f485d73d89d81305a0ca3829b86d1340481d3be6f14d82bf7f6dc2586c39c3c8f5a11803bb55eba0022a51c7fa5fc3f421225ed192b5bdf058cad38c9290eaa99162ef809a7144873963d07580c539361152e9c9c6ba6061ed87de484d567b80b8adaf2f7799e5f9c373ea856fddc7e8675d555c07676fb2bd9ff6711dea6f50f1206123161fe2c808844549168f0cbd213af1e5f1c53f6ebccab11ed85d62432213d61b61b9be1178be3431203eb50763e2dd6274824c9f6f35e135145eb012a3058209b5cd1dfb48630ed5fec591210ca9d3a95f508e20e7f9b55ad11a932945279a5a13aca4ad98c76aa26c01b0858bb87f67315efff270ecf6ef995710f34dbb1dc95e4353558a3cdb9e83d29ca398fa01dab4dc6cf6121b29d80266502e3980d018e4eea763fd4434c31a0a78b0a3ed16efffa9d5a954f34dd1d519cbe20b00b0f8be8d1a1d36651e3485820d993787ee8c1f83399be0ed0a6c4fb47e544e124853b8e4738c6e58f5f314d0498e11aee360f64329ba6edf04bb29b57d04c44c73d17d771a85a33588e8f8f0d5658ca9a161165119ade7c26505e3ec413f511e52e8ea4bb5631f583ece50e402c539852a86b6113a37ce4ff00448f92900e6b0361c613be264886f255dc17181a89fdf4052a3305365f53573d68480189f765953f83d667651b5bdf133ebad6dc38143b295ec7e2532b1f249e75f3bb71e33d5e26cda03bd1e83537656eb99aee8fa25068acaae26a225f8d48aebce8df787eeb17baf5f4aacce24ef715de2cd1ad008aeeb701d5acf219d6c377bd4c5d467e317da28a518f7943cdbce84eaaea4a5f06d175855ed67c0cd084b9bb56b5bf4d726d59558895b75afb3a730f6e5f27d159e0e2cf3746e2ad37e873400f8794a09d63e2c3bd0cd5f4e8e74804b4ec86fbabe3ca2b5c49cda3b398ce68b5203841e962bb62b1036656fe452822d66785993b976cdf2e8303d3bb16b5aebcfe3ddfb1d4bba3d0f51e1c9de36ec969f50085e17c77f212b0b3d66afcc128dc9d2f7678dea276a2225758f3eef6f468eda7dd31d0070b40cd34d6ff7d8be322a9d23f39daa03d36d3c54d237426402a4b6ce000b3981d924167afd9abdcd8cc50e99fec721c4d13a6729471d370a2288cda4bf6ba550fb6bc3ae52865717f2e618fc96d64b87e16a8ffb860142e9aa9388a41af8ccafd02d60e51149ecc55fad23de51f1c1cfe541a008a010c62d08b1b882375a0408a1d76c8fb4b1cda55917b1e3988620807f8498a0f129e64f37c1d3b3ba2837c7bc73a22f260fc424093e3c020d1a30b7a884e6c2ef745f974fdd9e50b144e71b965b6cc3fb30f5070d79eac6859db17405b325d37d12e752541710d8031ee9366304cad18f84ff9672d44d5674ea6adb4a5c1a93d4c5457d8d03317763856225e59617c05097367cf131c477b033cccb22fa0d21358e640c51eae6b6f54ee84f2992c86282216c00fb694d31d9313762bc17eb534ec869ebc232fe999e5145860026bce5676207f1b5c7a58c4fc5ada238a37f6314ad00f979a1f6b50f1f02b39a2d1ccdb463cba8a02f7d9155d71131f181221f497ddcd4134a3831e1f6a0936f537fa86f1185f9ba694e00bfd5ba22c470dc202fb4853d8cea197164b1e3ce8dc4d94b6683a0159accbadfd7213782971888ef39f0364ea05eea28f31ebc2fe1446424827c99c5e08472673baf493abdb58cfc70e5f06b785c78c959991caf8969519e914c28f5ceec1e4e860d7c2ac3ff91161358ad346e21d1bf68b3f9630b849967385858305321c2e456200ebd2380d4c935d7f7264a1c36d78e6ac70b2a5f3a6cdc9f2a8b93870c31bff8fe6893c0b630957a46f84a20a97081444e499e8dee496edfa909df95a0721c9c8905d99920ad56ab5828879f8f55ac49de34405fb1285a3589ec244f27b7c271f3c95a0bf84a8904d327c85e553735058481f6c573286a682571915fc584ffae104ee47935f67a002efc4047b5821ddb008fa7e1f1f1b70175e22a451050484bc553304e889d41dd5f754b0c2bf47a980bffd567e49203357641b2ba93270c7ed5d02af068d5ec94b46e7109b6fc8def98547654ea9a2d9fb13b6ddf4e0f112b17d6a793ffff24daa20a7ed5c7efd6766e48b653d3b053d28de2c3067f23152c7edf43e71fd8011a5673464bad4473b60713646e1be46f2b2d09f16d730055e411078983cffaf7793e5eef7b947761ce6521d297c6d3e9374749281d9daef442c486ced5a52cee15c2e7e7cf7aa25f01accb183a8d7690ff5efe2d67f0d54834b53d64681cdbb7321c3af236f4e5642d6a825c10585ebe2f820d8290cd11df42f712470c5d6c2b5a4b6e1d2d4b1a7b8c35816d39e760b34c861a075fcd73709130c4c2d2e93777afa8d827e0b37185df68635791a97f17e9da88774c1964f442d135c98a40712f63d8f11800aeeaa02c1d295cbe9e125096f2320a4523420496d5bb635db0ab5a5e8a296fcca5cbe3a9a74b4a7340d3969c6c8b117174fcd010f4aedb4ef593801d1c3e88af5297f91844b9fd58a3c7310d42dc833477febdcb11bbb7f33259367bacb16d0f5901fd662fa7dc5e8ebe2c6d71592940ce36217cb2516ebb43a33b825b6aec3463314f5778d9d09517ff9e923717cf004ee06fac0377d7c095680cee6914e92b5482ec2d9f476190ecf5dacf47e59c1a77fa655d2aecf63c9b43043a1d99428cb650e6d2859287626c32982f3ab0260c27ffcf66244064979a2b326f1d81c7a24035ee51d2ef4b724320a3f30d505b91f663e671c7c13732bee2b53af82ceeb1ed42c8f913972ae4a97084f2f20204ffc3ae391c399fbf952ae1d3fe715d268f96d4597b2799032739a859e6d49eaa2b4fa4e558876d8a1244c7371c1f8a01a963ad55ce8a22b5d75ac2bae570789a8c2517b139005a2a05f19bbc1026b4526a55aa6d5775ea5d15c3d2ed13ac4dce1ba6df73b228ede255269444e5366b5132d9d080d361d3f0a8645231b40689f4b57cd967f624fbe73e9ef9fbc26056e25f30cd5ba8c7ccd8567aa237349de3c45523873d6672eae624924b5ad6b58cece8cefd4e6d85e725c9406b67572c5b556b5c85ff2bd6a70cc9ddfcadf875c330ebe58b7d116ca8c59f1c5fe1e458f2dbce4d7fa9eb57c74771f66613b64748e322907edae318f295d73ec4d9a1cbc15f0a7a2ce948ab0162dd7e50e85a50629f10360cdde6a93719c07cee0e26949250452d10b5ea3f43921fe760c52ecefed5780364ea85dc91b0b0969c359e56b9a0e2714dfa63c52ef2f68aa9ba1b296bfb18039682c2ca369da4c071e021bf3dd1467838821a12edb1e70c2d3959055b754e98a55ba0caf90b1cc1e22b5b70fe0eaa3bb0dd1ca3e99abca469ef4a1ad4b6bb6f46bb71b897c690fb8ed16bb253aec46656e6d1306c5035ccfa4aa64dc812636a53c2ea33843363c7d28d99717d14c958ab081af3375dfebf8afa66a6cdfb5ac61b4d855bfc8b8f156ea574f1c37df4e4017ddb9abe207a9c19317bd7587cadd7c67e3e9aed734beffd2ded69d3a79d6aecd22d420cce73fb7af71c26d0c1678cb4a3a215c4d5a7813bdc19260610d98ae5aa0048730c92f52944b273ce85f76ffc09d98ef0d8a161ac1fcf63ce290df16ef4fbf9cfaae64463d5e65fb5fff20307d0ddcaa670246ea073c35a95ac450aaccb574872b5e6fb933cb04f0089384dd84bf887698bfb73d1a2b7e00f2b87a97db87b9cb783857a1c97ea956f4492d54fe8da5cf06b6d04e0aba55f08da43d99a810efa28f08768662a368feef7abb5649d1fb0441a607a3a3091d2f0ed4daf0d91fd8eb9767d07d9124c67b7c7da0f995834a43b5653ab1c306b76af8081f3108702b2abb4b3d042f4ac65b548fc63514a859fdca933a8ce1e67083d3140af94b3834094d1a3c9dbcd03c9c142b36e37ded080f9a4cd174b199f2c77d35f935643fc830bfb45d8373d9914182101e4acf8e0e18a59782378422b715fb5bd6028ca39798d5e7471bfdc6ac46f68ede211bb2fb105c1c3998c4f6cf05a05715a99314e83e5f7d3e3dd5cfd72d0fb0c05d533a61509d1530c502eec2ddb4459b00dd12903c4926291885fb9bf8535cec6f120ae9699563db5295e946ccdebf70a73716e2b539980d1923a1ba5eb9713722dc6d163d58e1c2e5460d3f5f3184cf9f908cf07222c0c48a29456175edd41561f0cd3ca4ede5f2069840eda45b5fb94bcbd39306c95783588e6a5c21e769f23683ec0f79191a4506815a3bf120a9be458942ec8a748e9616e46a5cc748510ae3158ea940b51ddecba25a016ca59f5fc7c7700a205f02a3f7eb8201eb12c5a7a2986e418f68631cd5a372553fd6503d11bf0512fa18597f0429126d149e0c84f5350a698e66a49d422e66f1c9ac7c7f5895aec079c03b6636cd1b993701ef185c35c9595c838e9c055d5f7bf7b931d3294b72b4a889799141417fd99c005ebe0385fffc4b166d9709885380a011fa55f7582b0fd1b60907825354251175b0ca1ff3f38bc0659a37895a322a04ad8d6ee7b3adc26f664f21ad0e682be2fb0fb74c5b8772d7f3df6310d69f1d691d2642682dba03edb7f7916a534ab80b207047dd29f1d736fea46f656cfd0755ee5658fd07cdef000404da3404acffd4de5afc87f7d2d623df031f64cf8b24b9f4676995cd33d42b134bc3c7ffd09f41944da7d21155ff7cdd64b6acd579de4297068c62284de83b820e5d47a475d2058bd9a45bdd9f1da0ded5c6ca49c09859b59a412b90a36db5e6c57f899dc3570f373d13970f5d5dc4a6c636b272fcfc193723529cdbe3c7ffa863e2b36091391002c9c70fc57c6ab825e46e9f6ad21d83664e68400a56c28968e5b47e8f2c2236d68cd8febdebd5631cfe3a00f1408ea4478452810582d7411313e351b7d9d85f290c2c3bf646709219b5109171d819dee90a54bc3903ec7c2bb054aa1873d5b2d6179a6acd2a2ebc1f88dd01915061a6b58d258b0b999489d3fb1101ba708ccfffc8056176fce7e423183b1df24336a56c9d0618bd372cbb43ee0f4d8dcc1e221a6794d4bf6ad20eed7fd17a134e6f08891024d1fd327a61b5f9c6661653ba0dab47012e5b8a4bbd33f1fefba90c0d1d900c57044e0163d4b48f44dca3d50e716f865b284b52c41693b90cf84fb00818bee9482d341543952d91f1a1f80175b2edbcc09791d7a1af1e85f9157b90f00efd7b08fc2d6d2c038f0f4891f131a3eaff74d854ee5fab6c87b00842f8055d072fad05f98e1a8a0f3ac93dafc8aa36e53f890c377c3b71cf90e56c0c5abb6720c24c0259655ad24fd8c92388840469b115e56674561823c08da114fd267fe5c2dc5e72f9526c97f3b6b73f02fe67c72019a76daaed0d69915335f37d913e649d58078f17400251864e07b978854d05d2942e5e410e343d0c7764edf29acbb74364546184058a43b9afb0597b209625757a51beee4a5736c705f9a52a398aee0911bf193ebd647008ca51e67c20f09ea8391a404ad6eecea5a57248ca1b2eee60daef99dfc1a35afd95a04bf3004a077c0f73eb50741959dadfd8b75a148b517e644ea98697ddd340239aed8c4346e488b149ee0dd8d66243ad5fa623d0539c236b81e20a684ee36ee28780516ebfcb0a02423110a0ef9247bad38016bc8bbbeefe5beea743e993c771ac4204d86063578c1016201b9e3283c0e7d607acb94dd0de971b2b873e46c7dd8e95674795dafe3a8472f70ef5457733d31e708c02fe8f056c28202846bf67bb7bfdd40703d4140cf05e22cc64d53437c09193864e8b2fbf1aa9281345e288b1e0726cdce0ed12fc51374279e17bd9b83c5fa5dafdd9b88803d7a41161a6906833ec9d50a73fb8e09514975654739b5380c48949228cc4e57144669463dc0fccd5ac989d5e50880a16c71eaac92142741761f95798ae7822fe2152698aa5cf4ac35210aef1caaac0952f1533719fb92d8c906437b2bdf25b92071606c29023749fa23e11b14f81c5bcd262da8a66dc1cd9437b093fbe7a9a2418f123810da74886ab53423e6130e079d11e50c4cd23ef67b966d8928495eeaef278af5664b5ca73b1ca2b1c91341d25d88a7bb536c713712012f63d236389a4e7e31de5fff89bb04664698111bc28ec0652b517639ce8c0db5ea50f2df85300939d36a19d5e4321ed69531611b03b76d92b765c09c6446b5bda463789b0ebd06586216f8c147b59db4adaea21d23c9e06dc4c075e430e6fb2b32855481f5b085647fbb2f3b3b9a7ed669e1c4abe0a1fcd932487f1cc394d40731516096bc1c659e646ed7a9572e367186bf897855665f4273cfbc18b8d221f6c8d6ff41805df3be3c968607e493030d9bb587922f6273352fb508cc655066c82702e7ebcfd7fdca26f43177d20bec55dd34c94f49825f56502e612e8b3adaa1b25715b48b631e0c2eba420f9d6033f78c7ff79a968739ce87189869d59841ee6d847e8c13da53c088f62b4fa844ff9db42145b8eb7edc783d4fa8b1334f48875bdc7de6a5d8fbf417f6f773e0f97e9b15c1844d42436f8389037efb6f2fe868426fb806faf4861180e23fea867a394bee14872ebbbd73fbe51c46203e23cf514ddc6f4193e8675690022ba86fb69a3da9b850098cde51971e39f87d03ab126cf24fd8599284e000d8641b4ee7f67135e2b6e7b72b152e3caa7d8a15550f521a7ef7f62fd1e4aad3feca9080bf3772cf89188c491bf43fdf50747ad9a9d37250629beca3c9e03b1f6bef65d84582da46e47c340489fc6d88dcff0b86c711db286313fa5977562a49329aa3797e1db8f485eefec4a1dd16fa9b7bc02231a4223765a742861b5dc7bd04def8374ab9530f77468ac3b78a4004937a12617a044ba4458a5b00d2340d7a1d32751149cf79980999d60e1e8b831ba7ad514150f8996f843ab36aaf7e5b61fa4968598c19525fd771ebd71b158f6de666463b0fb52cc9836b1c811b4a54a4b22a66291bb98d039e8da80b9c93ed2a0015d76cf2cf21991bcd1bc8612ba6738a122804053b44fb83b132a60f7ce574cba6607c05e5fd73970e7d7909f4e328c54aeaed518c5eba548619541f5cf5a1b5b4f40e37edd904fa9f53eb889334a460eb1bd5e4630e050becddbd7072b01980b0e77303ebc55c3546feea00fb0d4c4e4929ce3feeb77a17f782bc8a37bf219de6a2f5a66a43bc0a641dd337a3bdcedc6bc17a04238c57c78bfcd07e2d3e77b571d4fd94292effcc057b7ad05fa982d2c7142ab0ab1d35f9700a75e0824d1cbd1cd88950beed6ef7c971ddae40de27eb4a7d597bc6dfbcf9716ceee4a30a061e62f8fcefabcc25215384ba689a176388f560c63371a28fa1c58caa0b8f9de56abe37e3737f6a237df47c7918fb24e3fd07a99fbd5118fe530b226ebbe537eaac053ebe9e247c8cdd8b3b87605c455f5cb705fc4697eddccb13e354164ececef71080312202bbe55118cb97114152ad170be59896273134ba88de9a65f5bb9d43a84de1c663a5121b8fb906a8a5acba11125759351c7dc48190724a941903ff0133580bb67db44db6cf0715a68e099ef861de41e1e340fe137334e3da52db1c852ab3b8f8db152b5a4c1841a72fe0b81be714b0d519355862906a61930ed0e0330dbffc98c499c83ba2401a492c8e470be66f9150093ed1a778219dd1966f0f55b4326feaf21be60d1d9079f3b568c77753c0e92620dcbcfa9ecfa7c0904a0077290f77711fce26de371da1ad2b60860c83f41d0399a2436ff211ab6e59af55db7a2b10098520cdbdfa21674b71d6c8ca7d27b8508cf9d6798af6711a4333e21734dfbc3ecd92ac9c4a62f59adf7d82fe7d57e77c8560259b5e9aa3b2a2dc07e29c7cf650c47dfb3d78fdd6a7c409152875b7388c15a85a152774621f144d8eb9fa8c061e6385d235dbf44373dea356c2db27105a3560cc2e9eca5e90d8d0a83ec92b512bfb9e55c0429648aff35ecab22985b12cae7a4d07f60a39393b6ef7cf8abfe62057f8a99db3fff663fdc5406daec7328140f8d3a2e83dd4640b850f6f7b515f3009e8be28e1dbc66b3f134dc36bc9bce971956d4de490148a60b76fc4d9c4626a6259f22da427d468fe968886fd576432324ba9ad1ce053d4cb28c141702c27fdebfc828420976c433c90832491a0936d10920d302246f7ecda6ac12d8b8f8f697b042e088cc2e033a5ae71510912f31b8b5327044b8ba5e3272e591a1561fe4044ada0c88a08b47df7d24b8efa22496330563ae392fa889494fa0d492538b11a3a65eb773d1d8e4e037b66bb1cbb7a2ab783dece9c89e841f1a99998b32f6115309d77c76705b68b5a359c6db681015608fb57b8dea1b29eac72a5429234541357fb8010946d15fd8a658694dad2b8ec5f184efc421f803af6819bcca87317f968171b2c1bfbff762d58fe86d2418fe1c9675e64027615aa81765a449a2106b477a0eb1db04a61a157e887e42b340c85cfea245a233b737016b30a8a29a9a8583c1583bf4c1301ab515355e48a7bc87861d30dcccb81160deab298009078c7cada3715355234e52f578e9642c4ded7cf6c28dd676cf2b1dbfbf434254fd9621116399f0b151597c213e0d9cbaf06293709b2e04eb4d7088990ba0416907e9e044f1a54fa6e5377897c73bfaf5e0f5e22e49105fc4cc4be5b257770fc9b05d54096276c32e8df679d5846f20c4a570c300bea48d91e76e8dd5941f6de0b3fb80f071e26a0700341642e95180d2166494e4b8722ec951a5d32c477d1a4b718168d08aac5b6526fa8883052f8abf921d76a56da7dd32a7297b86b37a5dfd92c216b95ab7a451ee7101a8c96e38b5991ab4d363328ee56f675b7b3cc6617835278b7c839c4cc5322765c39f47b32066897a2f5e42ba57d6e8fd3041d3319891b655ab1309bc31e535c0a953276904dcccf9c6039681051e2f0c1e867ef7096687e8711156488080c5fb2b5f04b82f5adba4e7fdbec4d125fd8efb5583f901d0a0ed3622b543dd1e08d0e1e5b38e60a982fc529d8918a197e0c01aa94214992571af99df616300c8d2b41ac08f9876a98392a7a66c703e72d7502e5e17c14b6db3f7f216040f4efd9381c5ff562f84bb4a6c579e4d17bd05069e71a5e50799c0f68bb2891bacbffc006a722de47c71d5306c0fec37a4ee4784ee0c996a701f402eae66d2e52c60e7c5ea92dd593e36e096e280d12d54a51522242e3e20253dd94e64f778318d68cfe31a1255fcba3d3d3a93216642fb265d9385a97c68b8468498fb1f2e03ab6521d113e20d02f56e88c9f4ea4d548df11b71f2788158c382ccbac225ef57c52ebe6a2f2516b4083b643f1bb82ed0699b49278b91199329755a162ea68bde77c92b06f0afbbcbada433161e78c0f1fd936b6803dda2bd25ef24cc82dc96988d325f8cd226f65b653d91ed4f6f1f9bfe5ed60c7e0460d7c7c1cb52446356ba0a431451ccb4cd7eb615715c981bc30b96c6372dffe9b0ed876b48d0e87d7740b1ad0c7820cfb10651f6520d2ea9fab2b2486664ede774f85e65be635f96b6d395a597f8e4daa651b9320e976f142e3a6757c6856de4ae1a1bf6f41a4fa88489c67a766c6cac38dab9b866fe4b448de9970e8108a2573041ce2596723e68b9822aaea2fc094cee1d5df25f42a1ef9d10b6cb35a120fa8e6e686d4937ada2eb91bb6bbdefb8279090d85dd09a7fe122e977f4744ab9ec08dcd04993ff747b56f122b1cde487299ec94f8f46ae73539f88c29cde54c5e047bcca7908a16c1da7bab306e820b405f6e1a3d2f9bac8f81414e5accdeb07b281f1803ad5f89e3e9e690dc149cacc54cdc3b27490ef9c1d0ddf6b682af2fd61baef5ac4a11ce715a3f6724ff0872751d4600096adffdf98b478c6a7457b9f07049e9021e77a9bff79c961b3fafe5c925fc79b303d843d1178a71bfd4fac67a4b4bedb9c84e484b9dc3181eea8a12cebbbb5e9607dd1bfcfd9aebb3e55bfe5b6efc59a6e21c7c73db9fe99ce676a0575236c34d6a15f4e2cad0fc7ea793fc03eeca24e8e326261a9480865caa07725e913f9ce260ca6abf46641a1a831e64e74d0b3bfbf32e6548369b8ef0a876f464e9e9d225ebce4813e55df7d314be8513cd12f0e618f7c5065da1b5fee7bba8f6d5f10d620ea5131390389998518cb73d54bf29ba787265d341c20904a1851558cc9adb9053d7862aecd2b5156cfa8ca82eae884483d23f826289e4f109499645ec3c7d60e64b7aa5e349daddd1767143aa25a5319ba8d75edde2db695e43007654b5827ae6b17512873adedafa12265adaedd6af28eaf05422727a2200d625bdda894f0da28b26fae6bf764e81f2410d78f4cf116859d0bfc52f0f19b9fb282b55a54b15db16be79cd338dad9f5159e54570a77555568eeb93353179a7decf8106ce7972d4a944b4fba1d7582ac305993be85811214e1cc76ed9433bdd903fc262c1161b0f79dd20d33d624e8ea50f22cb66b97e684371e454ede7ca2f2cd2a7b90d0ab1e76ed0c9c90d94cb40a734800d4efb85060d72ec170012f3642f2c59c78f011c00e48d3a556bb76f87c5702fada95b7fa19293be443c15bdb7adf9d201dc625d8ce74c1160bb6db389f2f632410741954d88ea9065dc96f756ded434c3e71c47645b41c77d2c16991af57cab4a6a534d960a92a52d62410c835330d1269732fb6a357087bbe9bbdca6ed40ca3c47637e072007a6d848cee7fd26809707b8f27b61b6b912b1280d5087c6c25b6b3a14e2046693a2c89ede84fe4b4bc6d4bc0166e3f612beffc4f6c67ae40e693bc71f010ef800710faaf549dd86ee210e7281d91003bee4662a626fbcd7293c4765fb506abc5e05c6d1cb9001aeff38fc7cd3e74945c4391ad1e2c20602d8346fa1add5501ca482bbab5a668d94b1c8e72b1a43ab5d6cd5be7aeb8910fe2a082da5bbe4731ba03fc6a0e861e79cd2e23359cf1bb95fb8118ab07daf83ee0c7ee0361642fb0e377803da20fa8315de08fe90d7e8e8adb6287e058a2e1d30f0d03999a52bb06f2ce3a2fdec30394a42c75aed2ccb47046ede8a470e5c54dc2409587da85a72cf843ea6e91f41d2b864ed038c76308f163b75a58cbc88e2cf28dcf1551885e23f63ed8926f63be0eeeef80e5d880b91d52f7c64ec17d76425fef9db290dd14442541a43e9a86ac810641e81b9778d7504651f4dc67e39be5ab285bd9dcf9473b7e2b7b9a13f3bfb9297b51dd24569bce8194665a5b8e41e7d299f31b08bfcb121abff88b520dc45614ae1a7606222f164ccf5cd26b2f74852841786351941059c918b395442b7f9d628f4851934c88bbe848bcbfdb5c33479920ee46c55caf11d43a47501de95f5d4b5516b92dcc0a759ab79dca5a9a2efe92d5838fa5f95dde3c5087cda1ba220c4f8532a05f6d21583b0c10a81a3c9aecbceb6b0dbd87986c368f5f929e3a264233ccee0a12b7a9646549c850bdd391445d5710d1684292dbd04355f7e5a21fc7ddc70469928e1533ae7119f6cfb5d731dc4467e9d3a810134b78bb775048315e53afe45d04d2ad2f3904592b5ea564b2a487e92c29eb25b653de334af966f17dd511e639aabb92bb69ffd008b7a9b3d1f767254451c549fb0cf217f14cd44880b0d063dd63753ea1866c8dc914bfaa8e05234e65db4c8458828fd94c4f2f4b2069fae6dc6b1acd6b1afd3b1acc5ba75182b7f3623d68b0644c7f8001198f86240844e1a8e7dba786661b8d82ddf7004f4349390ffa1f95137b9bba130f6087c6bc3e8175b75e0feaba6cb7902059500d9ec693ecc6a59b419142004d36947c0d1e1db8230233459f1df044d18e0a72f18447c353ad1aa56adfef515278307b47df8b0dfb25ac4ab19973a862c8863aec88097258185edd8cd14c20feb1d7cee6db406c90687ffc403c641654ebf3ad5f7434f07abd4e7b9eb78a6921e5f6cab1e1891f4e1c11218b2d25927c774aec7b64836dc4c80157d4bdae13a1c92127d7982b11e5cea4d0370f26fca11895b73d124d2906e831e1e38dfde365c1760d173d6d09b15bb4cd81cafc3bc3075bcc67b6b7838ef1e4a3fe729a6a399bb5592e1e6731a78e0b87dad9f6935fe90ba1b7875812165762036c8242e3687e3c2c165aca4793334f895d3fa8d8d5bfe53aa694a58de04cf8fc799068b4841f8200d647b5120f44c9b0ae9bfc311f35f2f07d7e47097a26c24e1181f95aed89b8568ed90ee6d6bd605a7779a6821ce172e6195b45cbdaaf36b7b7ef41ebc053c5639531b1097a9c52e8ff1443468b1c3529e642cc3ffbd3d2bc315ed01dabc89b2e0ae12245341fbf822f2900ef5d62a1d1a625d2cdaccc623bb445a8ef80fc80e1a635ae7a41388903e46bc8fa3f8b6c080e45ca8472bad6b3f3f8082240089d0dbc167dfe6ba0f5b9a83fa62a58592d08b4b93995953e20b2b93a2645843e8eca96da4d1eabc431f5cc1c1e84e21cba14700e7a6a8a36d05a50d6b0bde007bd9f4c97f6be48998528552c1b51c6ed5a1f545fd6b305aae4c20b8bdd668f2a73da69f7fe934bc8ed585617a13cb78a8e9481323ef113641c4d068d606c26d422dd291e473426330cc1c9aa617fe5914a4cfc3418f0fe0a7b4e3be956e24015e2d9f624273ac955b596a6458b26c576a4b8a24fdd99a4dcdc525a56c67c904464b934a13f6ef9815684b226baee683d13318997e82ac2074e526cd8372f70e966fdf27150f7354b12ff1d0001d69998a2925fee896ad6b47898fe8c37c6b5e8e81185f2f35a368377bb3265aa84ad5ff313e4e47b89d40c8e7667c53bd208367b12ed4346bd95aaa58ef3548dc7f9ec130a6164f00c832c357934ed84f602da8c462147c720cb29e8fd775c1480dbcabe1bccf71bdb4a1f8fab45d9e2fa1521a8e450f9da542cdce78492d333b1eadc00281856f1717b13f9b2b78c63d57f4ef2b19be90d71e0de03ec04cb6443400493d2bb7e277e9c4202573249a4dc6ad14987d9f9251d0f72b7441b9b53ba14409d24554180e191500d9d001274829e99f36edef2f1b5b9e2ed999af4335dc02d5d3f931194cdb06eca7900ca559de11596ea84d7cea544fa8b69748249ffa817815a934344060fe121d307879b758b7d3fe5bcc97c7b2a1fd2dae246ce7db10408894d0e13178ef39114d5b000a82caafc6b083a839c51af89420ca96c2421ecaf12358dd2f6f65f37a7f70a417df458f6fe6826d8c555ef959d7f0e83c054da0a5c0de15afabfb2af4d380a80841ca8ab18a2bbc9fa1b06151272cca1b5f07a8bc5fe0d34d25535a1f50e6d96eb034b9d72915d85d8beb37d0490ae499500f179f23d28b8d31ca360db69840db51d1acaeb80af2cfc94a662644b5909074e172c48696a0881cd72b925f5d379cfa829a2dfc2fefb6caf8d93b1c1f8b71de7eb228ded25388b4f5c68c547adfe886cca3b2b8577aecb4a3470eabb1d6f36af646be4d40df572d0e7088537193ae7ccd039650b670d8249e66946fe2b3c8a401ea1854ce0d73ad33ed6359381914c1781fc001fd60ab89a33c6e4821f9b3548e1d777c0221f7078636e68f4eaf2a243c03c5dded4f154e6e137b3478a3e6fc3950241e2be5b57734c6b56621700ebe1d61644f962414b791c73b1fbf56caef4349e022e86c6a8c4b9a6194aa992178a67d3ff45259bedd7a6e9ca9ca9545d3620722020e1ee27302a9d7e6ca9c08fcd47b29033737e437fa774532c9390dda1d3a013b03124c0b793f41bf43d020292c5375df322ed6164dfbc72680f82bc49d5dc4d98c78bf19c1d157d6b687e4f336f94b805156bbd11f4025d3ca4ec9d491c0401d67c7bf5fb13dafac843641bd90e60820021d5034120c34714fe5e74cb56c83826ebf4126ba1d8af78c14032aff502b24dc7a289e06edccca3af9e82348aab8a493ba52c01f1a110d068bf1e7c674e0b8b7c742a78bbfa8fc732af6d4e6db211d264597452e20f112c643944c44cc356728b86a731d373e30802b3ed700b0892ec5014d4444b8cb0e7071dd7a881510b45b5959b735af296aba4ba6f2590c078ef4095d1dda20e0bcdd2f93d2d9a7b16b42c509962b3455684956973c75d2e32ceacd1178d906b506eec9105ac6d038326ba8db7289c0d538c0ab40c0dbc275ce1f3130287481dcee9812d835201c10ef97e5b16cb7ef068cf73d76ee8e64e601b322e7221f3e90877066898ee13cbba9b2db7949a53dfd3bc29a1442c7bde3ea24a1bd755c22a0bd8a99e70d497353ff0ab3411cc8ef625e52f7afb32991d72bf2f91d73149d079c254d9914afb988fd2348db465d10ebe5e39ff5c08a0e5a97412beaf879cf41060f3200c238edd394f74ab38a214cfca216d3a15ef4743a027d859cb0e60995cd0c409ae07e2d064da298de4e7f3545398b1384e168909cdb87c144a825b4e75e6c6e1b1bf3fe32cf135caa74f297ac944a120359634766b1adff3873859d20c37e613e8532395f49566daa7cc2e9229fce23dbb230676c625ebfe1fd9354971e3c9651b392456ae77912d146ea0a4022b76901f3fa4ee69d71e2802803f0f07ce93cec2a8d93e8894e357264b5023b1884c81d122c65891e3cfe2e0ed883a8e5b86ea51fb909c795b4c74fc524113d94cfb9087c3466abba7bde560969a78c6c8d3775dbc9703ebfd2efddc58f3bd878cdd8397d1ed5720b16e90269e99df0f9fb80f7b4a110443a3af871d1905f278b0978fbdf48f3fc130696628b08d191fc65a066cffb42e1fd7ea3dd82b2e903aa4cc93ba09f3279c636b7f8d9aadad81258256328ee76c051445956304f617b2d6aa8d42f60a9626228b3b46e4eef3cd5096ba376e6d7f296da468bc77b2982a7bee1e264bcab979d5e87115c4063f65dca164340b8a59c04b0b424e88f9ebb3c54bfc1e1ae296e10c96086554320f16ce8e635692efb5966593a8755f932ddf63f896c462c834238e38d859f429cd5243494f66fece39c797f2efe4e961cdab3d24459cfbdddbd1073d68aab2d654340889418925dfa30bba1be4f43ed7011c9dbead3b6482cfc377303bca839b3cc03afaa0d794d377c5180366e800ed06398d6f750b78477f78eb2839f31655fc0d420e8d2cd5a441a95c1833c6da56f209bb9a15167bb11bcd413f0734ee111973dde3097ebe480f20e633aadfd7d2e1c35058ca95e1684d949b88b56f8d987d63d989345db1d3a62370d8819f8c423ec94403a930b03f36707b11136b6512b5e0a9e3ae3629c3a228c3d1fdf93d32de89de3c56798b7a3a5bb17a55ab2cd70d39247702ecb744f7b00d660d4669ee683edfcc96a199ad363d27e5f35352ae146c9de0c1e7fc65fc2c2f7184a0b92be9b11b73a488ccf44dcc1e568eac5a876b8ff8e99b252ad66944fd31103ee8e7abf64c9cc256418e4aeeb31eed4dae033667d8d71c14a9ddf693433a1db85c5b90106a421e9257c75e312030bd1ee066dabef662dcaeb8e1e81b5cc0d112922610392e6c3fdec4f30f4c8e7f9a54d9b4b12cfd68e87bdb6a142ce943d1892eb464057e3c397785d75816daebe2a58b23def0b501378c28d825a5f54eaff70d5c02992eaeff56fa145fddcc6ffc4dba7bfa3da665a34579f1532565fa1576822832f5d885a68376b88582873a148f8f5eb99d801202edb7ead37cf748d1fadeae097ad481f63081882cf546aaa97e43c9c94e7c3ac2ea55169adf83eec3dd0e5c10aa0bf94b2ae6560082112844acdb5e250e3949ab56e78063dece6f54e6040e93720bc35fdb3bce36d793786a72b5b67b2381e1e656805d82a5cfc315d26a865f3763687a64c06385667902098f986574d76f0aedc4134ad89448a1499926be0212f4765c526c8cdba7ba2dd697477b105a03f918edc568ed8bb829f437cb5e10b6e447482a718187f06a67bfbe473f7ea256eb7aa7f7750c2d1763ea15306b6688659e30779d7231b12d77f9b476f56b2aa0a3aea5c31b8c53994f11fde5074d3dbb67fe2a3dee6939cc12efc62e21efcb1d95be17ba4a839d029ecb51534af27769d26b7df5d6852005dc1359674aa8db2b587100acfb6fa3a3240be2bd97951787063233c01165c6b68a5e9a8d0094d303929aefc9193bf9254645967fc572e1eb8d0e5ed918daa9a05edac3792734ca7ba9cff2b71f21ac76fcaf350c2f3c67bc343082f6f0154a7a0f4a9e6698f2d8800c9b83fe5020f6df9b6d2600b2280c948bb18e57a61cb7c66d0813dea0f1dc54d6e1948941bf758932bdfcb0b88c94f53ffd8ef765f4ff6e79895001d4bee84565f067f4526b14a3611053e335bd2d60aa54e0575ceebb4f72a73ab57232f4c7997a70a6c2f08b8e93643c4f740676b974bbd5ba742579f259c9e63c6da40b9fd70c51dabae006e1ce13345fa1883aa4de61588dd4ae3e13de1dbd84523b9f9e6ca9059267d45bea8ba3cd246b1ada22e648c4c9a11b50ae2fa026028ba160ecfcbbca03f960e40900abc8f369e621fbd319c3451b786c58c29cfafe7d6622e6d009615e2d7831529a2542e49283d14d35e53d2bb0fa0e5683144c3564375444f0c17327780ac8f24e8d24bf5fdf2a3a010a6a2204b6d894a29c4ee6762016df17f09e9a0f7b157a7bb2f6981b2113a4b18638c58986e75d17de6ad92181fc4062dd743cef2ca8fd8cc6a075963dded4d36587e5f8eb1c8a40076ee8c8b334c2c629d3e95a579ffd1f9b931a4402539d5755716005278186832c7114f798d85ccd48f3be9621c51232e63aec9807d369e39e77f9668da6f37c28f711ddd908c2351fb87e76d6908dbe6de201437c60eb9394adb7ec969a325598f8fb40e244b741f9e3a97cf6c248b9e5b7f5b7bc0e796dde8d9bb145b6884128b7f5df74b8a36e5bc88b62ec3203871031bc361bd7e5db1ecac7d95398bafcaefc70b9f7134cd2b6de70dc4747188e3f18136cca21c863347ed220facd1e8485ba88cc6551e97b017b085f453d356ada41581457f86e5b0fb52817543427826d34717a5b5f679178246912456a8f7a41ed5af1af4d8b7d38023446427dd28cfc0cd76d323b2f103bbad3ab8355ee54ba2348e1b36b5f6cebcbd037acad027f6e5d883c091f1bb172f5021fe888dbfa7ab15e3d031281a9d7fd656940aeed0b3b785c33c4574fce26a3d47a0e550deb8f64e23661e1dae77a14542fd7e98a88c493f71e5bccf8b80178729277e919ddc43682abe80dd74f5f26bce66ccc756e0fd783b9513ea9fc271aead57db8de0a9409d3f934c024b6fb032cbc4ab804ff9d888d890cbaba3ffcf9e6887e058f28b5c8c41aec9aa3242b35a232f1925b8380980d8e408a9233a01090e024d40853e4c1ee6d38acdc15eeb15bd422ecc05a78b1992213464f92e68812fd0cfcf2c6d166b83537097a3d532ce00662ace4587cf494f6c6f838b3aa8956af87f91f9401c59959c1a196ffb900e0d818957bfd3a9a4c9af2b712e8e13cb9d77fcac549bd20e4babcf402d2dd3e5344e724d92a07d06a205de05d2f1f1e043d704f5c2a7f9b7b3999ed617ed79aedb91893b42b9a3832bde2508ae3151a8379b09c559cccb9126a163ebc199bec07b3c3878eb4c7f1569af34e973b70c9bf4f7bb52d8f471336fe7ca878eb69159b9866de1a461d6960f914fcb744716060fce34926281f0b6fd750d61534bfe4f469bffc5b6a5fed25160a3db3c16c5a88e1290d295a7ef5219d79ee8d5b24a7f653667f89b4293e4d83a7f1ea5cbb8a253ba63303b50ac199089b79a098f11ff14f929076f1f82cc2ff74ae219afb8a4f75c12f5a96c588d4a0d866003a0d4fc8a60092b73b69412383e481ff5c418d7a324b0ae723a94fc8f9f12adfc16321bb40c66f0d258988c894b79b574d236a9eef0830d818638388cfffbb193d139532d050711360a8264647a0e70478f11401986eb64357ec116a533bb0e616dcf4b2da388325e8a4493097b0c204488fd4bd21231399348988c002afa07a9f29eca7bfc7040dac4cfb42ccc2e88f65518424a6c4cbaa42a7a306ea0533ddd502d38793df3e0b021fa546f651f7988298813f75321504100cd117ec7e2aa7dd4568c01f412420a1d07a47deb1c8beb3097592552c82aec3b7febbe62f22ae9a13aaf7677fe17bf2ef6e48dd2dd9bc2919964421523c9e5bdfd4b065d9627dd63ca677d7da9cb41cae1a96da92700dd3d6dc6cb7e4a0666ebcf1ca971c5c243d6a25a167d1e4f09921957a61a266abe4e2e36027897973a586a530f90f66e291848bd1c683a25d8e874fc2e3a22912caaf24c8cfc98df53a2dd0a975b424418cc1729b1e1bb9c90bc27917eeec19a9d3d2a35b2bcab3b2b206e69d91b38696b1ee719a079158c06c6d3aea7165f28339dd4e65a892be0591e0f3521b22620a281292afc1773601b06b73dc378218e23bf8e627e858e02bea99d18557ab5108171fb810e18a671c95e37c43446a4a08d1b83f67cfef4fb44fc614221f8d1ab377a35d22337a008cfe7679d5efebe651d0c5b0b8e19aa4a79edddf3de219fb95a08369728e10141db612c1a18edecc735409887e8a29b88fff6c3706632d078ee896c988d6773c7ba3899e3ddd3b2daa759a888202162b54d6ef89805c97e819efaacae3112f98cb18eb5d7d37a4287f2781248dbd9475fba4f16604b4721e6f985f6c858e9a8da9146f3ba34b4d6e5f514c1429040223d832fa0ca91a1cc964c67fe43c24f4a5ecb66a888bcad49aeabe77ee7879010718109ecfa64cb4ebe3a8b8c8437acb8ad3603cbd87e1c00e688ca7ae17126562f10b62e69a2fdabe71a4d0919dd2b2026f631d86652e082999dd1f3a48703740a811a8160eba46e2582e5dbcd63cb2040ff6721154d5c918eee95e33e9e53ea97485f9c5e46aa74f8aed10f5ea9acbeb72131701e1591d87b12f2bed6565af529acd0c32b36698c9fb6cb80497541e69b01038a20cda79033b28ca04f1064006dc757fc3a0c045a598a86d15c4c5ee875e870fdccea813a10aa471cccb10ac3914fef4a959d972c6c101e25115477466e860ba500a248baf3d67f17a68e9d50c63aaabfab9acbeb3bbe24a6f81ce8abd623fb55d50499151f42122a1ffd0a71ec0f9334937cd064125458ac1cdbd2074be2cd5697ad6dd5ac0d8368610f402d50f6a01217974271c175542be1cec2c6d1e2e639f1c7520eba02f38dc86c62dcf91ca7bbcff47bbe6d29861e2dd0c47ea2ad91082e4cca6205c58bf0342e01f8d2ba4a474772a631b2605f97b680577c1223f081c4c4fbe8fa4b6b557aea8fb829f243c623446b5c2b51405fb3357d8501abc6ffcb7182a724af139e0ce213d4f9b06bbe8e59ce49b0143fb77c5dab42c1c8cea569d28022c5e05e0cedbac56fd24fc6f32e1a79469acd83708d57da6618cdc1d633a31c3b8bf8de8f37a6bd8fc4af9222d660d328d02513c2ba4289c0fafaf83d66fce667caf40de87cf40b93d609b307e4760388ed810ba5c3ad7e0f21660daaf823268c4030e08b0a88af6c1863785120103f05946855a33419cc027dfa25c023d2e0d434b38cd1fc75e2edff5e6140d997dead7267571b2f1392fe82ff2eb5962e8750c34b96f9446cdfe12c1d784d832ad8193d3b93d69b4db1225719e6b1fb627c8a0172eccb693e3278503bcea31cdb98d554c22a8b0e744c1b0c6e5be9c0b14ecf11f2db760b13bd8af03f462aec9e7e61780bd8d34f9e704120d7952a2a1e4c82d3ccf934e381350d1ca98ae5b91a6fb21c779e3c782257efde9d41a333697b7c6d583ad597b7f96998a99854135511b9470650879907a33608d3d53011600cec93adfafec9d44547fbf30e1bf67f8b0bd1d7a33a9704e4c1033fec26022d163ca3317005a0cc61adbadbfb807a292f51454d0d858acbf6d0a8b02b078d85de27b8216ed9b2e92e8f28db2f08a492ec01454491b57e3a22e48d40958378bd2455e5f895b827ca6755ed8142543442c068b76da0ad70c6e7951057e5b8a16ed8f2ed5abc8f861e8b4ae7f7ff0e75dd8c4b56e087f54d53bd21bed76aafe1ce20dda291b00d1d4388a772e87188626e5d8184691669edfe1778f7f45e129599e9db3fa10d21917562e4d24938e88a0311f9a726e6a189eeb72682c8978b9e0cf99686b2d63528824630ac0b88cdac039de0b8ed44baadc5adfaf50d48e8491b0ea5edc9d44a924e12f251c4796c849cc1a287928250c35490a3ca6ab0ea304be3e2ae20ddb0977e3bf94d6a052c5b106c19c714276b5a276ae060651d05661c08590be693387b49fda59bb87130a4df0d2231d368805ba0185b45622b90985bfa7b2573d9857baab38a9c6cb5889d30bb504b7f4f29a2f0cb86a9954969438abd664ba0b9a76f250b24dc23ad92e86a6d60d7a8b94d58ec7c956c530a271ce5c25c6f392dbb64c0d19fac3e20940bb4506eedf95c2fce299d42069950e344a5c82c3683d926a14815623b8450f4edb4d1a11421b1fb28182d9d8ac16b9741d41b31da5119d99b1b2f0b214328faef84a213b337b60450aa964027dfcc90033a6ff62b50924290cfdf096c60526d7d6bad14b50305c2233e58d0598de1846d44dde4f1ba02fad754a24f690f946e1c0f58ff7f07f877cb3435afeafe348193d4a7f2da00a5a786ab802c73dc72b3a0aac2b5e5d38f95dc2ede76aa5b9a9e00045004dc4f5bbd386df49034bb229c2a040fd536358d45c499346aab09ea5ef8f0c62ad4a04620def34d48dba4feeb93bf9483a697ddcfd684492de1bcece38acef230ca8f22567c7915767262da309da32d7fef00a09f4c9f0de12852022a423659023b625a2d1e8d00e8754767e061ca9f3907c313b998620960f84d5c90daf045f23b574daa96b3fb049c9822aedc83f1db0bde589b7ebb60ca2ac4f70f2e060a22cc86022b28e6a95e0310b401b5576cc49a339319074d2ce0d6611633b945f51d9f4deeb7e4d2bcaa36c1b3576cc3b8bc158ad25850e4a74833aa7acdfc9da54b65e62baac07f85298c9ef047b088cf235f674f5806252996d9dd9c34b00f691e644c18a8e413f43676efecc49d89cf9da89955558279a322fedbccebc3d7b21e9176b9e75c5655a29a9615e6ae2263c60115c8edc80fc340866e59abc29cd03cfb5cf559d4960f3eeafdea0ea4c1d48a61c174ee6d371fc8684707b1b1c2bae1883c4875d5ae16699e1cc7322be469493404087532309a723a938cb1e2c7dd6fe7a16781037be5ad62b1da5180acd3b072a2341513cc1ee6d85f446c8166211d3707d134a9e43f21dabd3795e3e9565a76adf274a33e113e00f8391a62548abe51f000d8c887d9464431b2afab03dd1b1279a7df0aa4fd9daba22e90be294fd0510cd95d7378c7aba1139a8ce42160328ba3c69e7f1b76a2ad1edf8d5010a3bc516228d2618c187128f19adf8df94a349960313c5996125055c6bacb62bbc86df7f3e82be78c0cbf4ce38ea4fd4b36f68c9f55ea721685e5c0c9263be42d790b5900fcbbc8d6f3c4ee85e1c67bf09ef85543933eade5336ec6e58c07ddbe616cee3dea6318530ae94b94e68598961356940e753ec3789a68b15701f029fdec81f1cbd4f5fbc1ba24fea5b180fb6b9b75b8492bf89b409c830b0f29f0856f2354280989b5522c72e95414c3b435efc6ae74869b5cdcc59beed9cc40a2fb3a1e0b62e4278fba90c6a279a41d120d1f350f9fee591aa9e30763138e8adcbc8b6c1bce456e86e390ca3a8a6f643d0a70a1849adf0cd22a49ffa0aeadc2d0305b64acc92fe39c1d9f038b920b85da8749749340490c6ea8b614fee8475721276ae749a92461380767d50d6ec3ed43ea258afd641331c558a02171a15c0413b7f803191011dcadb5a42c35e252d7163b1331dccffea15b4a9343862889ec2ba30ed11515abe21a8746ed82f11bf48d7bb189380b891bad66544f94df4c853f17432a62699e57b58c1aa9715da6cb6a12dd440d236c51a5b48da0377c3c046baf491b42466dbcea196408aed19b85deb61b5200e03e9705824e7901e856a060431aa442f919ec21fd427553aac16592cbca5d2b9235715e3c30475e4faf601487a9765b10752323cd76be8bfefc291d41e24c1553ecdd4c2210a92df48b66b4a6e5679fddeb718369d81553fe1afdb49c466f944a8506723629f62805f9bc6ec46829b520ed8ed08714b297ad413cc6b32f068e7b8d18cb0bb11634e2b83ee260f4f4d103aeb043e3429b0f519fcee02e0d5e681bbc840a7ca23773f42dc5e083ee5006103525d0b545912e6b7c2f7d4e00a85fbeb89372814eb536ad4046015e98fc263a3080a32fbac469bd4b18c0808dd7be630f2862c472ed08d8d630396401082de9b03f4422bd0c48464e22376963eb0eb3000213b3d93f053f8eba664a7ae5f4f6c6980597b549b4073cdf00c03db9451a24c90a3e250e59ad3e487bffc48f39c62e1ca279190ad39c5a64831b705fe79f1bb6bc290661b054246111d4b69bc51407b7709039578cb305122b2812b402030a7a75217e604227ac078f831388a356c79244a0b428edfaf57eb0ae31711f22f0504aa4141b94c3349421031b10bd4f3afeec6870805010c4459ea41c34b7bfe3d4a58ee19896d2731ebb90902aebb35b8935ab318c7562c6049d578f85860e433d374febd42301fd48e5918ed98e1c455a78767ce936ecf385dc71ef709ab3ca182ba3ea129e1a05dd5370b4656a7fd75ffaa2cd1bc4ac580e2bc7f116935cbb0d4dfd1668d26febe65ee680155cc787c864d08df0b5f152b49a512fe76175297d1f937073c1a13d1615255e57f26e18f82887a07b3f60c17ef50c67e4acf6eae00ee0ce06344759fd527e89dee5aaeb89b4457f05584c664d531f96a239ae26d3b4d0bec9150f4fef6365bbd9073e4f249bd5bb3274c75e76ae883783c91acf1c4f2019fa3564da2a47ef558a7ebf59d01cd33fbd15486fbc1169864a4bd3fc9a9f4f4f2c22ad25fc7e8f3c4219598c805b83af6df6a8033ef1c031880d2a15a3126b8d68f0907331d63609a56505796df2ee069b7c9675d644140f50131779d42cb4e4c67cc09a8ace03b147e1a5ad3ccaea0985e4889f2ffc7caaa04acd7fc37b139662d81fba9d35e6b34fcbf5f25041bad3f2a0b0f6fa5fc6fc237481f5020abb894090a639f6b14836b27961763eccbfa5d6679e320cffaff7b39f45fde77e8b8bfa464176880da49ea62868e7a666256733f4f70253f6d68958937aaa138449c16fc0d94fdc2a812104bd09d22f848d00d0b45dfc6699b0052f2e9f6b603b91bf0277354ca8acc7e85ea5683d4b354e5f820fe0178215b4b5fcdb73fc55aaa2eb2abff01114af40621082644dbbc916195f07ea51a68947afcd8274303aabcf0860454ec13077b47fc1e6654d7fe7954e67c63f00ab885650aaff1beb1b7b6cb9a808dcb7c73903cbcc36a248c0c24a90b33cb405de6afa97de68702d2fc2b2a64fdb70293f75f68dc551dd1608cd1b441d775feb2d984ad3347ade819dee781caea075affe4e9c937f9c1e0896b03740f113251b9830f048a1467321b39e002f9926640c5380d78302a267663d93145c2a68354524f13db2dde2912ec5bced4e107b960f82ef7997ff30419fb4d21d57f407ff9dc3b8e8246125612bc08c586ba7070bea4810c999c9b243b8150884b06773672ec70a673e4457ab763a674e96b4abfe5744bc0f5fdbb7a5b10b4d3ad990ecfd4fab62e24725777c7e9fa9a64db51ca3048577e51d8e9de2fb7357a9c02abf194806bd52755f8872c47a34e47efc31fc410c22b2763b89936bcad7e6c7700e04deaae0a2f78b4dcfa374fc0703eae4321118792c10453f032a75cfb3f078acda70913ec124b213356a678870021c8fabbe4dba5406a0a10e532586d3a8de237ed1c655886d0583e0e2b3def20d282a35a2b6fc2520af59904b94b250c3202b1c19ca8bcda6f798f785524faef1f726b1c03e9bcc39bf8881ac9b36cb9ca3f4d2bd92485eda629f1c0414f69d4b38edd5f4ee0ad5a955facc3cb3e9e143baf6200536a8aa5f8710eceac0784679bd326a9d00d1a33f2cbe46eb8355c3a943a783fb9ebc6f0968dcb5264a5feb6a168fd15a8ccefedd33c653290abc0816839982aac20d84f9f08805dfbd4e3feb48e38b58c8703a778c2e27c8201a022dd5bcbcc646656dd0e35298c01398ffa7c4fb1c597f6516c38b3cf80e68749b1e06a05ec30db1af45527bd23c9e8587552c9da09bb0ea3e041176939ded70a019b0a902c05e11fb6acdd939829c95c32f2f7ed00d4dc7bb627ddbfdc8dc43a8a62b24301d266d15a9910d7d3d487e7e98362b7231c59e318792de5bf2e26732f8d103a8bd431d286722e0499c333c2b4ff00f69aec06a685b628996d454aa01b0670ecdeee0ce7abbc9d61135c6598e69906a0adb20b23ac8138fec086818f3108a1815629c221d9f7a3bc63604465491991729af7132a6089def1fa2f1f104d61359ea03b2abc417f690e4b75ceb4247e342b988a3ed8f7527458b66b61181252c17b57f219abf33ce78941cd5a8d1ca0176d8d8ed7b3680190f190ba94c09ff0406e52190db747f06e094c5968fd9b0901ee5cf79045e58c8ad3351a5dac87bd9b05921995bb4f24d7f79a4eab650ef6d62563c2e57acda9c59a46cd56778a54f2080b7ba59bec96eddb2be98a4d9caffba89ef4a9b88991b558cd224f354c458b6f8be47919cf5326fb709cd806744a5b6d0f67d924dad0da424fd66065f9573a71ba97d1928ad19948c873b34de2234b66d3911f43565ba9a1723189d989be8566c756b6a954a35f0738a9934ec266f7407df9f1f1c31dc41f74bb9c4a14101e4569b5f90281fa308aabd5ea3b0df14f1b8ff2acbcb3ec6745dacf7d894d76c07a46a0508597406e2b077c7a4f94700475951dd869daa45ef60ac35ebc394d44094b12363bac67742713db7c14240fb3aa4599e05b7a97fdbf3b959396e18b494ebfbce6511cc3177e06902a77d26881dca4230df37badaffc28436af86c9b6384ce5824d5bd8922594893c266f58eaa9ba5553ac32e3f41a0876a6cc533aa671ea7e6b2305132ae4025168040fa9013af20aa5c31eb5e4aa95717acc3313122a1236de2fcc9e144bf1758c55ca7958c167be9f1a0bdb9550194185c96fd235e0eceb555f6f6d0eeebe1b9aa96187ada548ce6d0f768b805d6231d2858871d3544a27e93b9f4e493d0664a4860faabdb326101f2841256ebc9fdd19cc8d93b7e32a3403064aa799cb084c336c343b5a3c03962d80fbc2b2905654741a2f15fbac7fe9a08ccf939a0d5121f6cbdf4b13b1d311cbdb412f1113104429d6a24b4e473c718df0b8dac9efc86d07c9e77bf51b5ff4894b8b29723690964761ff41a77db0cf58429ddb3ce5e9ad24d954b425acfe1c0a569c86c00d767586bb24cd86d284070e48f7368bf86eea763d6bbdbb47232f03f1460a81b4d3ef44a70bae3bb03260b21594ae63297502913af89103f09b239a25608349ec454c640046313d45ee8786b19c2ecccaf436730e5434d19b9985a5af118b4de4386c3f0d79a357b9ece13fca172c01ad1626499afd027d3c1cab1fcd93acce7b4b1fd8268732eeac75f5f05af71c8de73342e9ebaa88a3d723ca16986315affbc5b12560e4b951f294e6812448ac8a0b47400930aac38315e6a8eb54d530a2f6ecee8137403d89f0a3d1b728cdf62d4b8209baa308e6e14d02a8c1b9bf426c3d716af71e31f482eb6c7dd05e77ad9f763311fa7131f4ab816498ef512c236fa7b345081c4d43d1fead485e7c71abd24f9de545cd3abbaaf7df2efc64c20249d3f24834fc53c17c597f7f42bb465c4ff9f5f1de008fb3a9b4beb9332d3e0ce7825200abcad97edb197e90d087bed9b3d5baf2971cf8f159db3b2e3826eb6871b2f08694cc4c6d1c04f736759278bcc43050b52f0bb970dc9b8b3968f9302603053419cd1006b6657a2fa5486a0b1e10ec19b84b3911647fdafa45460ca2a007366bed8191aab8e3b0dfb8c1042b97fd885d5e1a5890e59f87703ae03685cf217cf2bb7aca005ba2d35f2727a610d0e668abc6ecbaf2f63ae5ba0893c4988bd73e513eea124a9aed120c6b25db38f1eb4982bc89d843d7cc58ee48723ed7d24e06a6f2a47e28c67167afc0b104d9c1eb566d5a0d8486bee68dfe4d7e309159cf12d9af61270aa09cc67c14ce96d66ca201fce3e569db789d841ea1bbed309a056ea7469604ec783d68521e3ac12dd39f1a62b4fe1bea807b739e9abb75888b2cc67d67837d6d252afab07e6d6d328533806b25261487c05ffe822e0aa824bb6dd0228acae98fc3137b082a72ca9c88a14d3934e4e9eff84a108b914c4659d92c0058bfb76a597e8cd1ed1aefaab40c90920a5a9f0a57cf7489826595355836688ba510e3ba11becdb247ea0f4455753f85475647b15527ed167a3cb5905d538c85f73de3741538cf93fd3ec52f74ed9c11346759ade1b243778e404946c2cf05681c87fc2a1b90073c12b17010e490ee6fd85e721e726892c9a4e63b57c3efd9364540369edcd39228b0850f399c659809b42824619d5768a40b2da509b4223acaadc5a469e9778f27466dda746d98c1e232c90cd7833d7fa97b3fcaadfba37cde8c427c9df3301b5f89052e64a87e3ed624d9b691acce67b1d74f4f893f7631b3940550cdbfff990f881ae369ee8571bdc513a7666a1a5dd3bc2af04c7c459983a1659bb367b7de48d28a9da9c79157b35cdc73f113000d98403a3a5c858d9c8f2f8c51f16f9b9aad76f6ba7fe3b998199c4116ba705b2ac9d5a9fd08ae3df67938b270f0392dc1547ebd2dcc43cf5c552a70ff72839b20f473f4ba222177f10e4a26029768e48ddc08b0588831842c52429d1e42777098ab80d845f6664b1f8e9cdc9520288c100b506a65640c1169c16f69b22c7e01d6cc8461c4b309d9da16b7d7c516486e45108163d761b520cf1f9a044a84e6ed8ec7e1ad44cdcdec48e7d5da5ee2731a89d92ec22f7dcc47aa7b838300ce298f2deff1dfc93a536f3bb19f71c3c533db29bc7ef1e397a6ac37ca2069020c19051141bf7fcded35459460b9d81dfbc3282fb86a5e8b11ed0cf01eda2ea25e456e4ac7bfd894961102e91371109bc8b96b3fe6af482a7244f8b7a4a2d610db46c05b6d482c61d5a2b127b583e0228e2ec8c2bd96a5504af5390c78f7a802a5119fa3addbbcd6f057924e07d16bab66921850896fe0df65d52b7f721b27281e98d586b7fe31026e2b4b108f6c45d2471a861dd4faa27fb1b8bd128c7bf199255903852a752075c36be25b91865fdace8761485ab4531bf7ad6fcc8833a2ba5494bf4872840458a0c3d7e06d86995441c74cfa2157cf495c2b94a1993173cf376c0d067263fb1bbdde972bad6ff7963d48c7439fdc336b080f09a3d8af0dfafbb1f86faf8441c5f45d3b0f733c990aeb96d7a6f4e6873d1400447c0e52714bd2111cd6c647c92e35aa3d6dd8eeb7563328fe4092618e043a1ea3324e787b5b16ee3808f94b3a8e10c46b3cff29676e03786162b8b36d8dcfd4097f24317ef7a6ce990bbcffbae55899c68d3238511c3691f87ab5c585346324eca8461849bdb0deff666f5b2b7cac6e879bc3965b7c3bc64d3631386f4529b26f62e55c84ec19ab1e050c66e426255276711b793c7883010d5173f6d2bdfd4c01619e8bb93adfa5ba0a7b53c554f60d5850f4dfb51aa7b4d3924086452da94ca5fa7aa49134d3671b8fff6cb348f60f207bde67137c94711528e9216ff42f3589a5407160f36817613fb8a95f2a873a98368021dcd29712f30ea1e599d9776d180fe1037f056b8dca5c263119f43445051946c884b853c3b7f35d9cc3c19b111b618d92b265d069e02d47783224d943b88b699eda593836a069aa28b4a742a40139550e8f1e983196064c64c1dffa2addcedc56e7e67b5b3899ce17a2e3b68692f4fc4a5016a208aa62df4ffbaf2c530c26d303b7a40a88cc22b8f53bf32207a63ed8f4863318eb3db163c39b5e2035e327379ec802c399c506ccea2073a39121afbd0fd44db05e8066a079a716276f5b0aad29e6f1940d6e37a615ee8d00517886f5fd9081c577399c8287604f411ba7d4fe389a700d21a76be008643dac89353e0514a145211ccb0941b319f4ed8bbfe5f48cecad9aef61bd48d574d5ba9f6f92e7c3b9cddb2223fd5443f1eeac450f37e1ecda7831dc1cefdc0c07fa7c07bb55be4ddb617ff85fcf035232a185a5deeced8ad4f343c528f2ac03830211c59fd83167fcc33ef1f5aa819333d85c56bfa479ccc64a6f72aab230cd21b79c13ea76f093d0b1d41d1f8a1eab736fcb3ffec39dbc504e4ae346a1d8610132206c5970aa4c6cad07836ec38cdd05e706ca2921cd6f5aefa834a2a0c20f36ca5bfe572c57cd106c656e0efc794c72d7e876c22a115e97895d4080d7618a9844cd313f17ee8080576317d0ec509d093859811142d389cab591f8304318ad6a7dd55125f31601e10e036bc36522d814ccbf60bf17c72e34feefc522bf5cf16b297f0e5652943204e2575cf6f7d5416d1dc163ca71df5663c71db86c63973d3a6e4753c186c3e0e9e7d10887726c5aaa10532ad7a91baac9184c919247d1b2b3696fea144b9e0710b08bfc1e03552188772c5951b27070e60348659b91144e6fd666fde838d92cd5ca788011ffbe0e710e763d813af717b6d190e14e7357b0736acd4e3ce69620724cd966bf77c00fc0a548a738f22d97e458e75170ad5b5553336941cfd2bbae2dea3f620daf4ee949552ee32a5ecae59ec876a219ea276c0fe29bdf2752c9aadf5060a25941b829a9138324088c796f421f0a344f3c578ad44edc7480c6a139f6da3ccde029264f85d5f11f6e7748a02a097dc155c21787e5b7f7f4ae98589f19dd42f27707139e1c1aa912033debb934afb3c46ab6414a5138938972e748f4efa3cc6075b3e4f179afcfef495fba457186d88a5312d004323020fa235244e08dbd91eaa5b461bce15036f56a5e541ed4de6dbb5a355e7c621f5018eab344e8d36248ef312feb3dee74b5f6e4135bf95ee962634e307709e25da2e43de61c31cb501df917d36d7cc11b24f021a2b185ec547a9a5b77b5b4b88d9abef3ef3fb53a9a583ed299483eb99e0f2556894f80657d8fd97f3d2d278e2125622d01f02e86c9e1e39ed3b0f3f8732527b6fbd55bc127cd9f22b92abf67f0fc52e7df586dc33293c800267b1657df947267b704c28f617f2ce14799fd5953ed342ce6a5b6bac6404809701057040101b328ce4cb9118f49437d430a9a3c0c892c4b10657aa473a82802d9b995bb900125238c2bab3605b8cc9e0066b779c8879e334dd49583e9e292e576f100f1c9fadc1dff2dc6c0ccbdc18b519e324f8ce002b3ff8a823b8d1345095526820a6a46a6a7c0413e2eb9a4e087c8d4adaf6d080cea1695c345b451582417143a1f68efeda7761d3694276357101bc1f47b2977dd98e79930cc959b8e5d89664b1fd684b7f1cd4454b06a56303f025b3ff6dd9f65211e568f20a311c9cf7ee7958d56a8d852ab68f7b222a7fe994dc63d8e164380215e040d66d946372227400d6f91fe7f26b23dc5602a37c22fcf0651461621ba27f745f837f9a4e30f2556a5c1c89ebe7d2427d907afd86c14790d005d3c0e0d5f69f58193c5e878205099e6b5d6c96b42d0e3d494dbf389952c93510665e65d89cb2f1ea0ab7ca353a0613784461867e801ce27b8085adb4483ab7942f77ce7f36a55f5f804d61b62678c7d07145e55e28c518f3b41ffcaaec0c02af14b0ed1690e4496db2273f1385d46ef89a7e072dbe05bc53f6796345569c2cdd8ea12b6ac4b4176d2f32ab6ad6bfa696f7715ae8a1aa22c19b716b99f05114b3d7cdd375788263b2d187668d7c7492301c4606574c5807d712d65de800a26347f070e0ae7e668dab7b734fbd4ab03a385c279475028bc7466439b7a0b99651af70f64bfa83aa3d7810a7cab9b876e5912d0ee662ad6ca8a09e9b85238c10553d8611a9dd48e5f78392ae8045fccf1d5224a3a110d50ed1982e01810bad91c905f8694cbe0027da03b4c4c624c5e4807622548de20374ee16d327dde53f802e483571f751632ee9e7fc872901d537728d7ad04ecd859e59aa50d9837c73cf29b530680745235e3bd4fda79cdc781b3d035aa1cbc5be7191407c2a14c2cc8642fa3c86f16197c6bc38b6a28e0994c866501b7ae43a2a180075696249b27681a90b3f455fc220f41a2c804053ac2c8e331a9017493940e923b5a877001071cf525c211f4c0e190c43ddfcc9949086be74814aa5b319608debb0d6299042bd98fdc42e70bde4936f6f774fbbe6546879a6dbef660d4cfe3768c3af690794abeb844cd7037524c623225b4189768e602ed9f9c70507960519d74d2d7c18c1a077cc58da07eeb825683f0311ec1a06a0120d7464c9692e190cfde909c0614cc7feea8b1dba53aae01f7a758259962aa78c7d2de736b97020a1b082efb62a506371ff5124827ed72872f789bc6cea2f387addcfa2ea4dcad93e9b25bfaa8cfcad3bbe9101286b080e1dc696e403092382d1a7a376c4d7182382141797d5d4ac62089fef8d04da51ec6003226073a90edeee8acf517e3d91466c30239763f3117a8d0553108d9db11867a30f5015ddd37b1b802d611589e2611c58d132f5d9b5e06760a014a8d7c71384c16bc49e9b63d2ae702d232fa5c164f874bb50d2481e8992e6a559feeda25541ae5bdb16aab27e02966fcd692c0ff9a164c54326c4d00f96302753596658967993d96d4da6843cd3c320fab05ddc81d1161b4582f59c4c677e94d2f95d9446d6974a461a7fead6846625648b8a7e2f22f862068a9be2d0f0ee566202ebf9c81ad7d4209e2d87fe23266f5e545e0697a23cb229250ee61dcabd6d7db01ec417b867680ac78b982f771a25890ecc3b85dd24ca17652bea03cb3cd7621b11a533093fae16db44a261b40643466f1367dc94513ae8c1e0049e72eae5eab1f16c10fcc30a48ee95b83b0fa126d868bd8be026224347e791991802f38d2c5ae194056f23fd336b59aa3314d5e5b255207e32a42206e5174a8ae6ea5a3886df3a35b2ae092723f706ce993127eca533bb8b188be179422a4981e682884ddc0df546051986a45fdb12b0c4d0a520a6571b7cf3ea2eb3448f329dd6b8ecec74258971c37901d26f6cc5da5830e46d82beca2113a1e459d7b4af5a12bb2dbaef700e2ff478c39c0d19f526382673965c75dfa1997386a6fbcca5cb7685d52af2beef79b0577f792790a980f5e0af59b2d73bbcafe38c720c3878ac9f3eb718a1e1001f01a949b856ab2c910b56bb2c638d87b714d72c460aa2abc36b27c139b3240eb67db5b476bab3311e1a1847ccbb80b5c781f18044a1461f9e8effb857c28a4ec7de19b7341d28af89ba7aa905e35faaf7b267dc205888c527015a74b11089acc5baf8647118047e59dc6ae09b825be5d20b1938558b09f2e1456cfe7450012b87b35242f6319ace8d3f01e873348c9d2db068b843daf189f7aed19f4adb4acb6d92933abfef29c25f5289140023b72a56f02c8025b153338684109120aea9232c36b8c11d99e682458f0c645e6b182e2818665335302ba3a1fd5412f5d4c43a2f0f8eb13e02eca07796450bdaf7d446e45c4c1af5bc3c62e4655f0cbc2856c264b30de68d9c49b6835db16f7aa4e8a2587195ff03a4d4fd44a1d5f4b0303d2fbac287a0546adf04619ae9937eb23f49b5806254168c223111f2298e220629d1a86402618205c85e63aaeb8034dc3319cfceec9a61002efa50c5b0077f45f0859c50b4462c73d5af6f6aa06656d1803ca09d948ba3a58f14f75f2fa2e857839ac6cec04ee0873afb6df99bea81b0aa4e1df7e32b8b52b583f91e8922cb4ccc5ed623d42c032e5695a8dd0a4ab905404deb184bfb057b64d257ff36655319dbc5439a57ad3974e6b95b6b7c432f7071b57a71a214e438180ac782c0c62f879ef009c711001ab4566f2144f1639912d39d867fd726fd6e3ad32b616b1c1be8437ccfc63e464dc5c1c513e91ccfc7c1b6ec12791939ca8e221567412b1c3d6ad0d604502f108802322102a8ecdd4798d746d3063ea5638efd4c2d0ec3f06be80596bddbc66b947b41c8bdd71903d53baddd0e14c6ccc584e1fc8030c10ce92dff1960a4bd01db57927f1ec536830d7a301dc15f092eb536bdb267124796a58c4527b326f92883951c79827c8c894a21c76a475ed43b7d55658b3960e37d131221dfe2caa611afc87d24328f2841a1ff978a148f8beec78b80c7c4e4eef9c31e2410e0c4cf36222de3ba18b102ba8e70425c382eb03feecb5f5a2877c554b7d54d4a5df52f36bae2505fdf1898cbd5e26c6833d75ac171a39f9645ad21198fc1ae577cb2cc708fc77eef3cc3974a7d999d33f93e0ea597ae530f71d863c8d6ac1a75c98256f4dfcee054fb41ccf0ad8187ab49c14c34aa5cc7e509968018ef0a5817f62bd30188637d512691880268c358ca5ef58b54cea699384250da8d8190ed93f5e801523d9b83d6235bdf40a94e199528e4834ea1f96965238b30520d819924ea56dd68669be2c2f844c7b05af504432a78035f5b8726a5690ec19d643fb2e12d97c487a10336bd2c010acfad88c5cd2bed132a2c2f5263a70ba13c4de28b4afd2588611df8967eefc6baa960ccbf8672faee97f295979ea03b4aeb1e79907cfa66b959298a9c9548e1135db034e47e263a7bd66434aceb96391e73f6d17c906248d2be547e441c8d13dc1785ac61e767ae8e51adf4832ecf77929d1473fd176f94ae21a41baaae02b3b7bb3c6686213d79abe92edf5e5af2544ab1060b158a61b9bd9dab7cb387839d3af401a9fef570c185a8f36fa2a440e1f0e3f8b643b4fc167f53ed44448c1c8793e747b3bb8d7ab1b19f69ad7eb93a2ed3e26abd3d663164e8d78316c22dd6a8ffe36d4d716a8c93c56d22b0dc9d4688772f1a307caf0435bf0c896a2e2fdb73ae181c8c5a6394069b16d66f88792d00cbd4653d9597d75fb6572155735fd0e5f2a1eee959962065c628a4e294906685bd21688cf96467426a48894845b135d3dee786c68e8358b26d32847af9f65a05250749c8d03c0a1552aeb1e762dfbf15e39a4fe934534be7356d4dc293b6fcb2033ecdc659e3e18015c78b699fadf1375d887726d7405b7a91446f9834e597d431c22bec2a6a0b39875ad22c2b4cfb80c89148e581a3721c543c6600a824cd71102e80e7eeefdff60a7735986110a370c6522131b3d286e3cc20c2e75c612626872400b4b9becc557e63cd12c742207a5bc9253293ce11441c50aeb0021844127fbf7f60e70227452f787a4bad860dadd5c61c71b455ad037af0038c17ee02e6148c92a76f76dfc095e94bfce45943b9b55e351c7c3dbb798915955ceb7e90f0702b7bec42c51cbdd405effcbce0b97f7e9f73a1445258c280f60506fa2ac1c7ea3c8231393088ad816f7ec3aba6f6dd89389ca4276821daa9e4da36daab99e6e2a4bfa972c26079d6a1fc23feaa1f80cfbb1890033b45639aa4bffe15aaf14720542ed9cdb76e4787bcee188c064175e114911ce18db13d3ccccc3077c4380379160e5bbc3c74f2f1888bea9a544744a66a2086bb545a555784edb981fdab3a2cb79988b72cf566836336fceb3123b1c8c5a2ceb261064285bbd05518ac08ab42d842dc4b7e26f05b5c6e3ccb6cca3e0a0bc94500795829ab2117714083855911cf0e4e20321813352552a0da928b55cf462e23735ba131edba811737fcca418ecfb675962816ee4719b16cf43aca18cde3aba9c8a48a4cf5c3da27004c58e51e0b7dbe83dda1dcfad3ba4130d1aca47dd86e923c2ee281d92a6783de34ceabec4e7d483dcfc272e2a136562abbd5f0fd850c20c3de1e64f6c703153f214eec9cba0ea9827924a5d7b69b9a8754c1463b7db1c82a918e0fb94e76147d99fb15d92f380bbb6aa14422123f5d09ed5d088b9f963341ff02dbdef131e1be305205ee47277d21a4cd5fc78b3a33dcd9490048aa502a6d5664674a5ac2da271ae53772562aac50b9eb7e5efc5428ff978cd1e446646ec4f26ce39943a10d30c92ac14b37b1faa9d09a792a91e7e400777f6e4d2f017e2f65f8693311d98f80565a885e7079f77b0be68f3c6987ab64c1b5f387e318fe8ddc498488601edd3c66a92c14211f06a6eaea52ad4668b2ab5ebed1e870937e4d0740441d503e089ffab100156ff9dd6618c5a7643185077abbc00b9ab351953b224975e8655d418021980c04a066eddf817675cf9fc3058a411822caac062db2d2ca37f3e1f81b51438e764ee8159392f51322d993ff4ba9692b697b180fcc501e3c11ac9dcbe2dacfc1343408ee77b3f5629dc9efbc71acf874484781405ab60972f38b72da3cbf9840d8bd92100e7d5498faa8acd1075e677be572e6253f9f9aad8f7ca333b41c96e1bca91a96c228621c2ff0a35c3cf44daeab5e6364e7f2d9a2699a4ca433a890b09ebc6b13542920ef5c37c9a044cb299bf8e649301d0be065e7c58d622f693512c2ba2ea40c1d320346244207e9795a1e483c81f5087f9d4e3eb41219403d84c1f6dc3a2be50268d25a4d659b3a9273d56099f1c316c4ea695fc85b033ac7778062880ad0869b56d645430ac6c26055586cfbd88265fe8fba6c64888db490f7acadacc0c6286aa3f096024606ca673254d89a16357869d823cd3dbd35a561a6382eb46a6dbb936fe31f960560ef6228b43c70ebb37902482b864e2f7f71d478f7800d0c5adf4d8eab585d3ef14f46e2fbbea37bdaa824c58f914d342acc84e412333be572cf02ee9c3549e9661517d2693845e1ee1694736880865d8967c2e39cb2fe510ac1d40d5c50d22eb2b91b92426257e7929b0757c06e9eba5542503a3a95254003b2b8ae42cd6c9d5d55b336597ca553477db2441e6761ee0d2c4237e847e86cd54c48a675079e5a5e547f937184258898fca428e3ee18007cffe6f347e8e2ad930d50c64bbdac591839fe86b872e039c7d33ad74cb1578ac49c2c0df0e1c7c315cdacf59f9dcb7e2b7869d81123d5448cba2e59df4a0af7e89b0509587fed0c673b6599d9df760e7d70a50d5339b30e3e5013fe9191eca00b3c6eeccb726c02d24e300da25c6fc57bab8890e10d72854a18412e69caabfc9a3a8d644a725baee93246c9dbdf92c73b341cefa96f8d2f94440d05b56ac262a1cde99712a7eed816283cac6d7d36bda01d7f949e715c2b364da4a9b962c066c4faff7aa4d239b59585246d6f547172175a975491e1a9db62b5899b80d74b0b75d65a8a0c59b2cf4d5980240a468fd561681ccded06aaeedd3f5f11e74e199987d7fc4be10cebb3020c2190e7a9180c0118c8e0cf68504e54389a2aad764b10ace51a8812a81a307df0054265d3b7a4887a77b08c00abf97b906ec39b89eca79aa1356191d1aeda59c5c36ac6b827f67c8917352fd70deb0dabc9fe332f56a9595d159a9978911662be6c5ccd4b086b06b7242b5b0da7404e4029b135bcb53ad220c380c11ede594aab634e3a53534ec4315ca0ca93e30c70c5a6dc2b49cf6f2fc41c552a506a9a0e0e30a4d52aa4c20dbc6a5a24c1ec037c19918218c03ee316c187e492a6b356f59de95e74c39417b7b2696b07e8d2938e853a6f9c035b09b8166d1fe9538d66df0c58bfc99c5f4c39b6e02e3a7419c9fb185546ada7a32b51a5201f40103082a1b4adf71c20066119419fd09984c2432873121c2d662d62d84688d24fdf7af0fbf7ad48e35b7cded5fb88d5640e8398753908f1db35831575fdd26dc94d6e58e4e7571c5b97cb35393dadc53c882e54a44c218ee726ffcbb589d6fa2f409002947b4b17b67e3a05c04dc31933f0d13a7e1f6ae6a229497afc67375f39ed44f3e82350d830a7ddb2f5c71935815af1b13aed2abbf7bd39e6cc429df0e4a6f1cd1ada498ca21278ab64d1aba4274d3a545e6c3dd7c188a2e1192298192b9d9988eeb606cb64c73788af7680cdc8716bc880e7c76ecf44df74bbf20d189933b9bb397ba799c1229ed70de6b05d2e639b702d03b5b30b0026500ec964da41010f6dafa031888274838507013e23221cfc08be1acb6265f6f3ae534657d56d419331f8895be10051c020e28713ac94ea5b3bb68b469e6e9691b544f19890a3b902b5833eef189e10605e888092825d9241139f5a474233c30cbe135fffe602daf183eca9ed32bd331d9d33d8f65b65e8964f0def1274516364f9448e3e2d6915e101b9cf1bedfe543f6a9fe791cc7dea1c6659a530e216be9b06c3b587feb9ee1924161ca487392674829a992ad88a8438484a90d1b5ecda2b9447f1819b95c9345d1336b1e12c004bbce405a00ab7cc5caf6a286bd0440e96afb92e63261e73995066308a8c25d81b2c5d20f0cb4351168a0ad1b05c9077ac48929d3300e11a7bc75ac55cc00593c9e0b97c89e93644ffd2e522dcd6a83ae6b9623d08c5ab08bb63269ec9347dee9576d70153e2e5cc499eb597d7da733452e4201cb6aa3b7ff97d93ff40f5757c400630554471e9f112382d864c053954ce453424e006a51cdf6e4065ead9c2994b869db83086740af0e79993ecc46353d2bbdf9a74cd767bcd62e35c052c0fce687a2593b7ced06a14f857f80bbec0254a66756f08ef8f21931feee49aa86f414318868285fa78416dff7e4fcc95f7c9f4106e0a02d7a72a6aa50ee27c79dd5594b47c6ec2431edcc90ed57e165f8c0cc954f2f422f0bb1c52b72064e42098155e55113336501ec6becc4cf28de208070814ee16745c65e9d20772d1a4271ea4071023c3b0c43ab30e4d63c652d25a009859036bb30f0bdd3cef38a0c72881cc6c674168a1a716cd488c88afedc9c745719c686ce2dcfb6af8df264a941c94e056d0c997b373f0b9600d1c06d255743d527a31142c8b32ca09de80fd5d82581f2c89cb7ae64292166e50821cee3c5c144159ecf87ecb802e1badff738f15aa934b18a33620122bba61124a46dae1ca630c25e0253a7aec56eb3fb84d6c6401bc0973c83bb8fbc3ebdd87f634e451d9958067f55521af8bacee334681e83df3851eb7ef7e165c75a1cbcc30ca08afa9a9ce8bc04d3ee3c2b2566ed44d061d8ff34ba911fc8a3d718173cabf83a8a57d18c8377b48cb23906460ef0281cbe491699b89ad6c92bcb6c071b7ddd15c5c8a167d7849b010b15ba07c0f64473a49ecdfe4e727681f0b751b219680acf0c49f939cbae0d065a4e4705d3984d17b0826a2b7b85050cba04e75a093b69b2497038a1b5aef0bd83d9e5a91a9bb440ac3942da4df66e4807a2510c054656005206e9d62f2d2361349bd6f614d954904f4019e894a0061981a33678d3f8c99b550699c53a6b39747eda3b1be4e54347a6da1c037f1cb3fb5990e878da3509b0bfeac3ba8ff78f1924c3a151772712a36c3799bed6b7a4f4524e044addd6d538a46c6f5fbd356c6785aa4a14fc8356c4363e265756e052d0afb111d1472a0d3a0c2cd03b9cdaeed1332f6071286da90692b98c5a6b1bc993ac2ec4db6f6ee66addb60f686640d4bb03c43f146c9f603f92e1ddf565304659de21a692b72628c6bdf9a86f9a319e361b2c60a38564e5671b58c11e2078cf58e22c8180e6ddc56d5d95bd4077c247ac5ba48ab3b9efdd57bd400f26fdf3994e7d84483b71dfcdea108465001b40ca6dc43a9b9627c3ca0c57aa1930b387398652d277ca7e654aac4fe7bad5e412e627752c9619b7402591e4ef20a38000e94198ffe1998131094ce80502d40a21c546550a418186ca8dc2198dde856f9bcd19e90c32e756e9e571d0561ddccdc8a921e77bfb99937759a70660fdf167e0b238f01f775d1bc3c106871aabd17782c64bab4c19f28883118e0c7ddefde14db7f2f605d5f54c53f8f953ff59284f1798b93ee64f80ba6ec654d64a40165076c12438a5a06d8e71e951897c8957cda70f5c96a7ffe4c22982414f7ccd5e502849a47ecf7dedd594f1dfca603005ea49422b7013cedcc9b578b542dbb497f99210f30a67e93559d150b2cd2c309897ffcf4f3c43010ef901ec534e9594085e250cd814cb301e74613c4e66d837c71469877dcbe40224573917b3cb1ea294339c40bb4d9a12ff97c509e82e86105cfd400503f96c6ce530ec9070139fa4c313965442462b71b1ff5da2b9e27e3607948ab58425447d6cde661883b95801afcac2dc0beedbce160636011d51e08aa5cd0afc640fcb4e462c53e9d8dc5bd4ae56949303215998b77a99b6572783fce3406846504dab803c454107065b43a08869379384ee72c95202c289248d2811a85ff9c49149e8a2a7ce6594fdb621f4d57cc74188e84e42ac4b0426edb2114e4e90aa8fee496bccd6c3b42436ea0fafff8f64f644664f6ff64bbb7945206710c4f0cf00b6229badc96d7854d532051fc99b76397ab2fa8e8b6bc2eaef42575b7ac056d694717555c3bfeb7e39fe1a7eb755d56d70b5ac4ca96b5a4302d2c7749596cc7ef762cd3a2be5ad619171957ebd2def0b3e56c594f1757ebd2b6a42d2ea98b75715b5a5c5cab4b4cca72512defe8c2bea4a91794a5a25cefe8b2a654febad616b4a54db5b0dc05c6c51d5d2d690c9fd528536fb6f01ca6b472de6c59614c1774e42e6daad4e19588e5588037c01fe07f78048cfc4f017c0f3f8027c0fb9083f3e7cd9faf3f67fe3cf2467e870fc0f39023e44f7f2ad103e485e83c903f75feccf9b3c7fbf81f7fc307f9598df2d4f33af07ccfcef3fcb9f3e790c7e1897c91cfe167354a1df8d9c34f1e7eeef073e74fcff33dafc30be127107eeaf033879f39cfbdce0379218fc3cf1b7ebef839c3cf991ffff5378ff332fc8ce1270c3f393ff9a31ee6635ee69f9f2efc6cf193c54f96cb7f0ea9abedf8cf302320edf87f503bfe03ac1dbf015ede8ebf006ec7ff24e942922af92bf9f2922f3ea01d3f01d88e7f0068c72f8097b6e3ef41ed24faeca3e44b4b721eda8e3f0069c7bf034f3bfe236cc76fe4edf871c86fc94f499e922fec48923a90fffedbf1f790645b846c3b7e1e926489b0bf43bee0e076fc4384901f84543b7e2024e9dee076fc3a24ff41a21d3f47922bf9e2835c3bfe1e2f6bc77f04dd3217256239be1dbfdcf5d4cea03edcff9f68c72d4bedf8536ec7ff76fcbedc162b4c3b83a6a34cca9e5aa41cccdbf1bb1dfff353067db52d541857e63d32db32b5e37fb5405131a84cebb276fc52675c62521956667da9336f8c0c2ba3bed616680c2ad3caa42fb605cc2bd302a62563de9797dbd2629d41b997745fd096d6a572e9c97d81795b52570b5494695b625c32aa49663d992ff5e57109cebc2d6fcab09c0c37460b8375a1ceb832da18ec2b7591be5865b03016c6ea027d016b63c05061ef8b54c61a438591c2dc17a88c35860a2385b92f50581b03860a7b5fa43258180b637581be90d1c6605fa98bf4c52ac38dd1c2605da833aeebcd98b4bfb8644aaabfbebc5c7d6949f4d94739f9beb0df7e4aba1c25d79757bfe5fb9bffa650a7912721df06009c2f5fc39b646b4af2f23c6a38c9070027d9d3c493b47cd9617e56a3045b3c8e37df75bd8e3389eb77e8e06039f34ac4d2469bb6af1a94bf4ac432498bcf81c355b97b4353237d79eb8eaedae20fc3d98eff6dac2e35de9c6fd1b42bcccc0d54c6468c0d9d87e16b0d76869f37d0d3067bda404faec36bb09c9f9cb5b1d6a06973788dd5c6cbdb1a346e0dd5866b43e52ecd5b23b5d1da486bb435287f5fd48edfc8ba652dfc5dbc26ad6969a434280d6be467cb5af01ab5c6a559df8ebf26ad6969a434280dcb6e19c96b561a95863a83865ba3d6b834eb8c97869125b6ec8526ad7969ac335a1a6f0d4b03a5c1ce606ba0352c0d94063b83ad4193d6bc34d6192d8db766a55169a8335c1affbacc585b32d4548c74848172af8bdb9aa1a664a4630c947b476eab4dcd48471928f78e5cb14db960c71928572296ff2a114b17576c5fb02417313528b7d1bad2518d96e36f4bfaba2a776154d7c6cbdb1aafcc2abe49d372d49b3750d69b36d897376da0afc725f9660d96af240dfa92b25a542ad2b033edcbcb42b922cd3aa3b670592eaa661569d499c765ebcd9a168f4b973769ac378fcb7f93c66bce68536fd2a4335c8958921c9729b3866df1d23269a0372c1793068b7ab306da634a29f21eed0c3646e5aeab1db1dc8cdbb2f2d4d58ed88ed396154675b94047325818db12638581a1cabc4847b017d6b670256219d363266385e14ac492f74863a8325c8958ba7af8c0485f5c89588e1e9720efa1be4049bc07ba6118e676fc3d82b68ce32eceb999d318eec248f631921a9919093282c28ca83ea2546564751ae9d1f668b7cc48d08a9bd88a8a9bd875f1226e62a08e9bf80d32fd8cf7f432803ec6e32d3b7570619c33b8897f647013b3dcb481c14d9a1ee8969da819cc8fbec7942d1bf1514a8a798e8f5c769dd191ea407bf88c322f72fc3dd417a543109be6785be87875a839dcb5e3d78f680e1deccdb75c1dad8af32f4db03ada1dea8e37078bc33b9b4307bb23edeb0ddfe1763587ab63ddf1e23bd01d6c4f73bc3a5e1daa0e77c7da75a43a64481d80481d5c52072b1b86df48d0969da427fde94fff829b3ffad1bbe0e6caf4a6877133e49e7b16be84a08edfc8942d23718e935a69c76dc729a94d4defc4a11db31dc7d0d38d58dbe2a74d2a6bd3367dd97b4386b66eac3136c54f1b74c3b02c86de60dbd50dd91a7b6fa8b155e6cad4987b238dc95c991a736fa4b11bae6c8dbd37d498ecbdf1cad01b6b8c5dc2947ea34d65ad2c8dc5da1b2c2a6363a80c8db13756d97be395adb1d87ae386eb42f642a6c288b93162aa0f7b23edf88da046662f257f25626963f3deb030cffdf976fc297e23e99695adc76fc467cbf01b516dd61bb48df9105547d6b7de86bd495d991fd3b5e5f22f2e6d8beaba7967be95a3b22fe4731bf79fbc595ffe715afc0b8e8bd3727edab8243f6fd6e7270efac24f9c161ca775e1a7cd79a39e37ef9933c37158fcb4616fd21b3795e138abcd7a83deb439680cc7b1b1796f589c1786e3a42d9cd746b5796f589c1447cd416dd61bf4a6bd7171d69cd486bd496f6e5e160e9ba3dab4638be67179426d5c5c9a66372b2ec314ad795c924c9cb687dd300c84e376fc3ab85b765ad932b4631c2cca76fc6b50db718e944d3b7e14078a83cd81b239ebabb66ec7dfe26873a4392c8e5407d501c855dd1c6bc7afae3aef9af3e27875569d17c79af3e278735c1d55c7cdb1e25073a839ad0e0e5787a5c3a25011070be640b99c754451a988a30573a45c0e3ba6299d56c4e18239542ea735bda9a3eab82d1c2ab89edecc7159bc3cf17356a364bda9b396a6d3e94d3a6f0b97a1f8e10a725c92f8093ee94d1cefa8c8bb6178c425c787f8e4bc455cb28815b248bb61366236add425ad208aea50513ade114b4a73bc3ad610151f975c3b5273b83ad8c72598b2eee957538e76e44ac4b2a5a34da1f2e392a4b2b812b114d95789589e78136cc7262ee4cdc1767c16e9ce22eed7388b58f91b679176f4b2b3c8cf86611dd62de37891910d376964dcf448dce6063743ccd6e0e68a468795b076fc4380b66c7cd62b114b264e4825f7e83a4add1a6e66947b14dbf113afdaf19b9c40db1a5a742d5397869bd987033f243db88e9ee4723f4a5bcfbd6cf8287ed6c002e0554bb49cc1cd9c86e28f7f2ad1737a5135fda90ddff404eafad05d477e3271422a4f257a52cf8222457dea09767cd4a9444fcb8f7fce6a942c7ed6909e006051fc2cdf919fbd8597223f6b38f11300267e0200e567775dbc5cf959c3ca4f00b8fc0440cacfdee225bb61f8657033cf72ca012bba804413b2485b1025ad6ebba37c218a1d2c01031950f625a9291b06a028d00ea0487857173fd192d0d19aabd040066810831d98a1c4a51baaa81a3089811251a8e04289cb108522c5914417a81c21890c24a1c425387b828df17922090c68e089084a5c92d2f7a5073f78f2021db81d287139e24ea81d6f1780c1891b14610a56e830c34db41dff1076cb72b012839bd88a0b839bd8057ac14d0ce4829bf81de2b365a712b19cd5284f8f86b64c427a907b183769b8f0b95771d36664fa91f8e7ac46299ef8a9e32d93b07013ff84244892c811c9b26e18fe7de690c31253d40dc3cffd9683cf86e1a7f1f0cf63b6e3a6cdc6ab00eaf87b82482f8ecfc4c98728562a8759eb5d2d2e2fff4cc077e295a3c7dff36e8ee43046e42c4a534c0e6806b911398b12949979b5e8013af19d31ec8861c708f0f4f85f2491262d48224c881841c409910c103962870c3b65d831c3ce1976ae10d100910d1079428403443a40c4033b69d841c34e16449610c100ae3971130f7911a189a950a9f8e9f88bac1cf827311c53a81fb1a39289139b92f52d578bcb0be9b9297bf42437c1fcebf1175962cbca59267131cfc4c9aa9479264ec2b2c53371e295330f3efe22ea9619b19938a1295f9ce70aaf92c70ab8063f13275ff25401d7e0e771f50dfcf85b903c62c035f867481e2c700d7e90e40903aec12f43f28c01d7e08f2179c8806bf093489e32e01afc30240f16700d7e4ef26401d7e027491e2de01afc4ff26c01d7e01f913c57e01afc2f248f19700d7e1792e70cb8067f0bc97305d7e077913c68c035f85b244f1a700d7e16c99305aec19f2279ba806bf0a3481e2ee01afc23c9e3055c835f2479be806bf09f481e30e01afc1c89718daa86a566f5d9062166bb8e9b4802107858b8e9adb819aab8b91271f35f341b23c1cdead7f1cf13de96066113ad4daa5283907bd10bf20c42ade39f2b2da8c1d52fa00dc350b85a14648d820db26e192ebd28d8287e7ed6f687fa63ca8f75cbc0c7ff23daa4862ce89ed44f9bd6167c4f6bfb694f872878624dee9bd00fd5ae3d7d6a5d42dd1a3d2e4b2bed4285f877ed623f0eba928466cb8fcb8f4bbb65b8fc95cb125b76aa5697a7db6f555bef597ad420bb7a4fe2e7c91d5b71557fb64c8fde7fafd7b2a467f1f3f48ee9e88a2c6add2dec96f153f5a83f35c96d55a3ea4f173f45756451e28b72c5745c51a8e8a25a111dd5f1dda7d8a240b755d7d2e975539a0db51fdab5a7491a85aa1e972c6fa2dacff51ea7e0e3b23345f5547a5c8eddf7ddc8aa1e97295288bbf4c75d402ca112779dde776928c9d0973ea4bbfff477faf59748bca534fe49ebd2934afa47d5b35ea5b57eed7a1797d62ccfd2ab67d1af49ad5feb9fd528497eaa9e9faa56bf0b3f512d7ce5e2670a6df133c5e2a78a859f2b97af54fc5ca5f89942f13335f2732572d57ae2a7ea05f9b922f133a59e2a95a742fc54a5fc54b9e76ad51ff2d4ea7197f8a6d8d45ddbd09b2a55f5b2aabb7a6faeda34f596de54b1abd44da11b09335c910283153851e2f2e32d412ad4c906acc822280b2594b82c8578cbab6a6b8440822964e1040a2562e9f1162035e7a00c219889010468d9f11677c3b4d6548200052b94a0034468b1827a5bac74fd679835fa2e76cb96f836d712ae916b095cbad22d0b713e219ee4e32d20344cf1a91f4fe2f1d6eb4df178928eb782f4bbd68e2771a1495cb30dd31aa8ebc72e9bbc40a89142687f8150025d17220fc180ed71df38042a109a2df5a7eb571266fd2eaf4b1159095784b61d600c2291ce58c7b45ee1181a6f58d65dde7c638cb5d6ffa2c710e2d77ee71688704cd6d9dbb20dc3368cafe8183b0157d1318ea26f36b4acc32e990f1f5bd6f1cd81d8b2dcfdc7315048e3ad97f8105e53d0586123052bf20b304cbffe721379d6a7e018fabb27841b866ddf21d077f6ba7681be33de9b96377fbd9108a870bb8e993808573a86825f0815ad4c97f8084c3a7e91f79b78851bdcfc78f58592e0f16e13f2058ce3fdea3b42f327927a5e18f2d80995fa0dee96ad5661687ad906e12fd1b61dff4fc752a41d3fd771135438d1c58e7fae80a07f1d3741850eba89a7485bb4e3c7e1cdfc83a5603bc652fc48d19a580a2b52b8580a202cc56b6229828c4002752c2721a5d2cd3108ab5f4182ac1b867be40b844358c002bce54d3fab519ace16d387fc3471d48f2ff640c32d17697f94882550ca0d1f64859c891352a9440ff8a407f9ac46394a479e2b6cad589ff2e9f839b5e3474de9f8c7b5e31797e8f84f47609390830ef54fcffc83ac5b367afc4196d832d3878f3fc84f903688952d733d7e21e896e978fc42a66cd9e95bdea47979d3a6c59bf8a7bf89ad6017006f62201c6fe237a379e6f2664eb34f059aa0601ed52485fad437e129dea4c55b4d58495a303c098bf59cb7583cc585a0b89eac726cc72bc76eeb4f0f3f8b5f993ff1ebe416c7cde90d58afd9cd1bdda1d59cf54ba3d3cc3e40bbafd1ec836ec3fc667547cfb032f97da91c15cab43cafd845e1f7e65f2e4f338bcaed4d46755ebf5a45cda0723499c1f99937f52ac3933421e2733ee76d682223f36676b912b17c719d2631379f2426864793988f7933a77cc7ebf0244d384fc2393752368181791337e16f04f7383bb45ea7f5e279f91832e44f1e3e000368b5582f9ebfd9e1a7cee3ec3c3f777c9313029fe246a6e4e0499aa4de08d439ab5112c193e47023ec866108f024a94f71233986403bfe07a81dbf03dc8e3f08b6e3df214bab785249aea9249ed68edf24bd1dff024c25564c4f2b497a4d6ddbf12b40edf813c0e2ffc1e4965af1c4965093bb61a5f71559913db927b774424b0438a12577006ec74f8414d78e1f07f2d4f6706a4ba9e9e5017f004caf12b144bd3614ff7679f0a3500f24ed3847dbef8dabbef8b9a1da76b7361da276acb5a8ed5d5f0f849f5baaed7773f76bed584b5f7fe2d7613b7e75b874b79bf66a2a97ee765b35574bb9bda95aab6defe669d1d54dd51b3765f78baeaded555b206f6aae966e0e15f2e6b60ae14d4c6f7a736381f026e1abc39b80e09b9afab8cce14d48a43777cb9b8c7a7610d262592f0b870565697db47468a13dac95079694c56db937a41d3fdbf1fbf853edf8df8e87b45a6a2b801fb276fc68c72ef4486bedf8592e013e07169695eec04f177ab6d693e5f29385009c959ead96ca6a5956017016da6aa52c961e38cbdb6a5b286b654959dc0dc32d96f5b2541694a57dee47e787c5e146d826388fd344c81bc17d93530837b26e186e42813782e3498cc859944d800840e78978087c045e023f019d1c1f7f3ae083f807bc103f444e0e3fe44ff317f00c7824df009c1dfe3c92c31bf933873f7d78027c0f2f803f7bf893873f03f02702fe874fc02be081f8598d5200fcec819f3cf03300fc0cc0e33c0fdfc30be077e0e7117e1ae1670efccce1b937f2477e872fc24f22fcc4819f43f839e47382f0f3067efee0a70f7efa789d1efc14c24f210fa4c753e002a110b9ef54209c80daf14b60edf823f0423b7e22d08e1f02336d8c0a5b7bc8172a848441819033ed106bc72f84daf13fe0edf81d9076fc4190f88390312b4c6df1c2a43ae40cdb00b6e3479276fc0c503bfe05ccac1d7f11320696b6704918754600640c1031ee4b01e4dbf1f340b66013d082856171c8991401306cc7ffc34ccc01625a980160688bb6002dda8e3f071266e5c8191f60d68e9f0033415b7603fed81507753b4eb9f7b176cc0af13815083f3df763570fe5dc59d77638dc8a5f05b2b22fa70e41b70c4897f670ac106f05f2e78772de97e2a0762fe77d69a7766f9772acb776ee87766d8772eba7f278e88de7b63eb65b512e8bbbf1dad6b7a658ee65712f4f6d7d6aaaed508ef5d60f4d755dcac3b5371edbfad20170256299e23a1487331ab521147f8a336243a9f7aa21b55dd7d0eb8ad0d01a6a45a234849f1589d2d0f786d8cf15b12234b486da90fab5a2750dbd2336947a2f2a5247a33684ba5edaa952b0e2080c84410cee8aaa6c0b45053838820c1fc8a2c42f9baeac7b451a02240459415b756d4def0eb280013044c1053a48d92831c841099ae042597ad13318c1c41292c08552649dd4400c52c4302b4fee138a9003262060020fca13aae30653302086255a284b2acb7a55b7455796e555dd34e7cd968af326abbd799385bede645975de6cbd3adcc88ae670234bb4561c6e84756fb8911fd68b1b99c2c2cac049126c088250f585b6ac146ac0842a4b48808274555f773dc316b260052c7c5c3685a1ad7aa34a14aac0040d4eb0b62c5a20c30d9c30c315524a57083b78e2064e1041147650beb80834409990a640096ac97663d08209b03883142965eaa40a58b43b68622d591d919b8eda10eaa52215083a6243a9f7ae2fce68555f5f8e8815224277426d687d7d6e0e5722963afc1cf2b31a25cf9ba256085722964070c9f2f1a628dde14ac41267c70cddf0b3c7cf6a94393c2e51219e22add5aa4a5f23cf9dda169015ab526f5247be757a4757888f55dbb3f2a43bbc90767c7d0c09e276fc2a36a506e07d882e0a1d5264f51251b538ac3cfc903f5f545a849fab53d59ea9f5145f8e4acf957baad8942aba01e0a855ab5a53a9d8eec0c79755a5d0d37b848fee6a55a5a8f794f2b17df11cf879c32b114b1d920945852af7e7dbb18e7a13bec274c8b7f0af1def905620a1ab13a2387c8eabeee8f03d9eedf8c3167c89fccee805d31e3790da1f21eb03748b7c0f12daf1a337f093d49e217b82ee49423988eac04f127b862df88e5e0ea6a435744374e4725025a9e11ba6a3211c5c49a650f482ecf7bee8754947132a86ea89e556177554c5f79472219a5247575c4faecc9b61fbc2bc09a6fccdd13bf32689e58fcb1921a436e52283f366c8c6c4bc09ba8f4b186e8268d9f34ac432a57253224aedf1dc88b26254efb71dbf8f6785eb98c6e0cca45cf6c7c3a42a4edaf1a750ed0d8f6352c755c84ae551edfc19e48598d691ede1e74a3d55e8893a4d2b1f5920fc5ca5670ad59a543eae2b34e5a25853fa838faaea4db5a835e4a3ca4db128b0e523aa43a9f34ac472c62a434d3be65e18e80c1929daf1a3dcd745e667a432d0b7e37771d1be403bfe18afdbf1c7b8605fc878735c9cb6e3bf71b1be6075f829e33d63b8278cf674d1c35fb033d0182f0cd7050f7fd1ce4865a0305cb43bfc853b434d63b810c25fbcab9a02e13050121a03b6af7253ac8abaa41faeaa37d5a256175635a568ca7549bda8765c4daacb119f0dc32a3f926e1846618ecc360cbbfc08ba61981b0932ad9fbaacadf4847ab996bb2ea7b7c59ed414ca5398f16db5a7965bb98a8549a93128f424ba2b97b3f8eba26a3b5722a2786a7d5c8e1c95722141e2dbf12709b110d05ce2f25745da2d93f9b97925013a867a2eca98bf2b43c88d3fa2f8c17d5f61a263db6726567ebad14d08b2fa95bf8362d491502ffac87dc5f41aaa6323ff8d054bcb9badfea1fa578ab9deecc0284efd1bfbe7e619f94d51fff0f75afeaf0638c6f78d8ffa8d64c0f6dc8b465243913bc803e1b8afe857de5888e2b760e17900bff2b7484f04f9959f457a27c0affc2ca497847ee55f915e0df283519cc0ae0446d133b8fd476e5adf9e4337ce916cf89efb4d068d73a879f68dc37d14992716bcafe8d817a4a1281408c6944ab480a48288e91be7523c5321e5291cda75ac03e298e858f786ac08b1133d40bbd955b1dbef4f3b85a265b8f436fab36520ab635e7e0d85c639bf8adc53f48bebf9bd2718477300ef2c3c2867c0326fa619d1f37b66084d90057fd6920d96606209efc94e4398b937d32ff3fbaeebbadf7650f6bc30ec7be5a6f75eaa5ff939d29be9d7931d9adbf289c483e3beb469a87e991caa79cf7d2d58f243e628f4eb27dd22b0f5fc200b42a163e07393c823cdef9ebb61f93defb59b51fcf4f1a0ec85a2b883baa0707bd463d2375ed19c84dac87710f728deca6d15fad5e2307ceccdbc275ebaa1c6dda6b8e97133ecdf7fdcec5e7b8ec49b371b42eb2622b6fe69bcf5bd1982a414cd5b1ff766de130dcb7bd58c10964864764219c2dfec5e791e1d3122352b4253b3b22d7a8e848448d3bcf7663ab675dc441394f0a0d0323c8435bf0745c7701356a2e83928899e3f1f018b2c0506bae931d1b3e6e5df57326986adecf6acd996dd38df688f12ad0c94afd0affc2d1df6e62ded4b4de2b247e737076d1816c2fc76222fa01b96f56cc3f2ebb40a5d432975dea9f621b5ba61d99be51d84b959cf3b8843f51452af1b96b5fb6ed94e378a61f977bacab90c4d11e298cc1900b662ee340d62d0be2f161a1ae59d826a3375adc284f6240dfa79b1b8f26a4cb49986b6eb0e1dd35e0ccdc80b5f363a358cab6e6317b779f6830f40643485120549e8eb8eecf4f4807f7cfc00840f23cf5b3516bb5e1af69ec686cea8dbfbd59ee898b95dcd67cb9868178b1da4a59aaa51b912c5d701e998a92d51857d051641efabb134345f77c4068dcd8e0f3f20d1d9f131344174ccfc2336740c37a1842aa47489446747d0c7c0c0a3d0f36cd0d064940999490f3ef8d8514310adb5d636369a877b76d40e06daebe8d8febe9d617cddd63eec42a1ee7dc4bc2e7bbc90c2a0f9bad5e8c223b90ac3987f1f88b4d54662432e6ce9d9fb37be63765df75aa7bbaec326f7db8bb84ddbdba6693447d8918f2dcbb29df6f5a49bb80d4120b221f750b81f25c23aa67f87de9bce59e3bc695f0837f798db7bef9216062696a8c2449525986062892a55aaac54aa5059ab5459a950a13225092a494ca142654a124924a14649228a9a44126a9428517ca04481e213258a0f1428db8bc0568f6ef1d6de48bc99b07eb536274d4d9398d463872ea265036e4209509490f64ce2b17fc7de4a78d27316b610020a0185b4908550f33ace79f58210f45e107a1d6bdab6e590e3461d60ece5ceeb3a516984065108280bde0b425b0869219405ef0598848410e3a0fa7eee09c6c13be53ed0f708f06bbf966e1937dbb011e018e701fcda1ec0dd4c5ba2a17d036dd8deee86ed1d45686ae907a463f83714fafe217437b959dfcfcd728e4683fad632d61efb748c3136310c21b96bdccc9aa6699a86356d6f12bb25810502c90380f0794df9f1894205c847102090602862364742d2bdc0a7d1e9d9ccb1b9b9d1b369a3671d1a3dc7d8e29b327a8b9e5d2d2e9f3f26db30e3a3a5f5ae9369f4685e5a135e306c724e9ee527a9d4a3f84866fc1a3f26ffde76e49c9cda8071b2086ac839194a9eb17f6fd487fcc45b7c26facdb2227395ac047eed17c9ec82fcdaafc99c02fcca9c01fac5df9f45f064f4fb739af76728a9fc0495d3eca3639a6f918cd1af0d44e90464022a7dc8cddcc1e77cb20f48e25eda2ce8fb47a49961d0f78b4833d3a06f6eef8da1604751151b95ec8550e7e41ff38cfc229df3d6f4d65aa8f1914893dee6ab55187a580bbb0ebbdefb59a57ecceafa0a2d0eb70c97ae713f21dc9f4352d83aefbc575b6b54095b15cd04d1defab567143837b6e2e91cc1e5d623cc5ff4da2420608f212179fd203b0c0ddb221a9aee4d97e92483736ee0195b267efe188c43da6cd8fed39bc88ed431ef45d90b4d21cc2432e31708fefe181d332fd049bf45dc5c7dc877a9e49548fcc896e1d10e37920db95300c7d8cf45094d5950df30742c88d76b3fcdd65a7331fab5b54ddb9ad67141cb39190746701da3a108ddf446fdc548cbb2538669ffbd39ca708685de74c5707e79a72cf36194737ac833b48fe5f7b8c9451fe226ab9be17fdc3c753364754d8f46fcc4cabc9bb1aef5907332954ca56b4ef03e6e7ae14a4445a6af2d7a5ed75523f1d85b24d28ef48f6483f7a16cc5f3acd8b07b88631cc38ce999fb8f44f2ea3967a1691b9943569875fafb80480a5ab67a3e7325f9335702bf929c65b83ddc1476f4cb46276fb8c5fa8fe8d8b671cf918d71e63b6c7a72f6f20bcb765a9ad6d37020c2343ad28479751cd3314675fc2d988573bc148e698f5fc439a3d2e753a963ef0583e605949fbc6cf0141d86eed1315c22913cf1e114669226f23a10266e7bc83924273800cf36cd879e971643fe4de6df01e2db3b35e8d78efddddbe8eca8e1b9d5ce3bdef380f8956bb572bd8f170cfdabdf14c0b21786e9573ad2a12588b08df0eddb0f3070e743f73e9326c7e5170d7e18faa56934111b0df97a851bf6e5ecc30f401cc9af73cef93196f98061daf5f2bbc6b753420d9a931ddbb66176d3b46ddbb49cb3ae41fbd0f0c658679d73ce5a6bad7764306429fab55fafbc3115c2bdb7b69fe3388ee3384ddb51838f6d739afd3636fbf5de3f50a8e007a29d31c640396b8d457befbdf7de7bef8cf36b4e08f1ff0044d61a08fdd2bf493c7cd835386787aed1f5c7c02e724e0d7a26c3e01c1f5aa6eb7fc1b1ee83b874fd2b14ced9c9334a6faa62a1d75fca393d1dce3982734e0f3a94378e7d3fe8fa4f35e41c1f3308a282ae4bd0f543f10346c182aebf146544660f88209fa0ebff3a6ecb3ac86c0fc1007446e2b937f777bff5c0af2172c7a41edb078ca3bdfe02ecff3e93a99bd87d4dc732b7473f588dc0d3b151cf69b809f7939d85a5ef9d3396e5bd714bf3dcc9be4317a1737e22c231a6cb9b57cc06bd401dbb1b035db3a66c18eacdc294f59304d18b44642e5bd6942d73614d614d71f9614d697975e513a65dcf3c2f0c5b662dbb65d6f56b2397293bf60e9d575cba402d6fd7eff2e3d26ed9f9c37da781c6b1a443fcd4ea4e73aad71d2ef7279a77b4952d03710efd79d2277ed26854bb19cded033ebf99d579f541bf39a557adee9494723a05379a55dc8e6176f5bb62f7f3ab5b52664bf81d3f8d6a97d47a192571165289934a2e23a92da54a2cad4a6d2efcdc5a6e7d777be225f6b44bfa35a76a56b32057a1c0978545dbecb672a8a669e85e55addd5e8dddefe6d26d6b55dc49534bbbd5ac56716ad7da5a7259b62b5571a9c6965e96bdba36d5657bb5b6c4e2f2d93057cbe5a2724d41cf75c3b476a51ba6958825aba4d19145732cda73e942d6e4e2c3153f3dd6eb5ace05ef56aef5ba4eedd82ee5584ff5da17ef5ccfedd0ed43bd2ff55eeefdd40ddd30adbfa549e954fa78930ffc3ede926e98f67813ef8d08813c89f7bdc75b661ba69b746f44e89b24297dd7847b23424d9e27e19efb96598bcf969578c7f5b74cd9328eeb6f495ddc8c7bef4fcdb16c48b321fd2755abffc4a21abdae55bb9e9fa235e486d2111a4245a1903a4abf57d48ad0d048fd4469881dad5f2b12a9a1f663b12a91da7e6ca955ad28579486d82fa4476a2b4249213d4a4ba2551572bb4685d210daf5e8d4ceedf47e74762f43b758d9328eb7ba19dcf464702be188b75aace0189efed2977bd19497b63cb743b794a7765edba51cbbb29e66e12c1edbf2d0aeedba95eb5cb08c2bca6996958545bf4a2aa19a25ad2497f49658d2b7924a68a925a1604a624b69c91dbd20692da9a577e4822b492dad203a6a419673595a755c3b906dad29775c3b957b5bae4b1d476f574a4b2a107c96166f92dcae5d6f92deae55dc2cb1dde392f5addcc52b114b55839aa55f3f4bff4ba85fbfe8162d7faefe14b5296c017b17b0570b17fc34c1f4da829fa7190eb6e7a93d4dee6942cf508687ea19a2fc3cb1a63086876fd882ef6935addcc49ad490054f9c9f544e7b0145f88016c270822b48c1e5726d60084ebcae0beb0d7b5ecec11877ed8dc2aec79cb3721d19d1709f67e8108ff9b8796444a3b9178572ba7e8da3ebff38c9039661afcbd1633846ceb1c103c7f5bf50f1f2e28204179796295a5a5cadcbd592a2d5621d81c56231020bcb2a8ad54a5504952a4584540a3504146afc19475108a2780ac2e9640282c914421186e013205872a254eab80912a963763412e91089423942a10fc7f7793a9ed7e5745dc7e91cd7f50d8d0d8d8c26a6ddc0a4be128af2280da24de37e7b9d33479a59e338aebdc9f14dc34f40430c97bfe71761bdb79733fecd69481bfc268db7d9d02f9afe363a96696ce857c6fce3369c66db649a8ee4488f1cf797b518883003304c146a58e46d19aca66bfdd267084dbd248bbd442fe9f9370f29b3dfb812bd24ab5ef555ac80a2e32174dc8415a02ec20708b1135398e8dd6fad1e7d6a2945082a35d8f6fca129420d0ae1f6b87fabafc5df266505a11b78fba5dfd7384debbbddae06a47b112671dc2c8289ce61284838e0ff482fec9060287ad7fab6d6f71a13b8e96d208f4b9141e806deace4f23bf4ea263cbde833ea33d69ac40309c983eb8042d39b1d81635a0d90d08013dd47bff218a59f01cb3854a48110c563e8e95707b4eb7521d9912649f6ed3db2a47623c943f45bee2d20df77dffdc783203b12b2778f493d5a1fef1d13510b52f022d49fb8713c795e98323df822107cd293c09378e2400f044110044fe0e984229f84e2f8220e885e841251641064f7df917888348d2c95103d2a2ae82294f824144fa7d34d684a71ef4d9162420f5e53ea45a954ca944aa552a9548ad380b88150ecdef33caf092baac8428ad340981a51a12876216ad4b49498d24098e2c162329952a954e6f6d77d5f0ea8201e7144a769479c4e2793c9c4fd20840e5747e2eadeb76d5884a637e35e77211cc751bbc87de5e31af7bda663a8ffbe1fe998e8bf5fe9d8e6eae37f41b3300cb914fd23ff426fc67d61896e6e3084dd9be998c83b5de936de523deea078852803a1e87961ca348a9ef52c11277aa6543872224f2412894422f9a303a928be089581f1f4a2d3e94f28d49801d4e9743a9d4ea70cac40d2b51245f1347adecc4bbdd9467aa9977ab32e97dcc7719b2ea5a8c744c96ddfcf07a2d033157afecd24e3237ca0777f139a823a8e5bbd08d4fac1bdf822c7bdd938a6c26d0785df3f0e1d4293c02676511c226f241ea22662ebf1fdc7bd99e997606f960409a27cc08372c4ef2027a1e9cd1dd44285af5dad3533c4bc7efd0bc6eb743a994ca6fcf8db54e89edf53018eedd506f8955fbf8e79336d031cf336805ff97707a300a3d0ecbeb27d368063e013f805b21fd93df8844702fccadecceb3a2725dcf62f718226fa492f253feef9e018544026885e68c0b2dd628ca397d0f30ea202cb76d06e42cf1fa22214ad661c4a020ee54a545ab78db56cc8bd45d36dd0a478c8b925de6c6fac17b158da0d38801a5b146f6fc2efb7141f6a5cebc1ffde23a5e8ef48f3bf0d85e4986ce2eb8f73e8f61defc637bb6ea723d9f13cbef7a291dc3e3b85927a3ff2f0b6cfb7f16d65b729f744c74c5cf8f3c4073ef53bf41e813fad1fc3b1651cb9d97a10fc214116645b0f42a15ff9b9e9852da1141f79c84324a9c9bd6edb1a6e6b26791b10d573af7a8e336df047c75eaf0e76f01fcb3608be3a11a4defaa1faef55bc3516d13b20a00e48b3d1b1a9b276405be61de17d0088043dbf0a7afe0e2877413d7b331c23937af46f7ee6721c43a87ad3eb2e84aafca95252cf7ecdcf5c6e9e59d1897502c5174fe089059e44229148241281221608bec989a36afb714b85a8ed4d6fda46714c85a871d35a1c552293507cf041501485e273fffd0efab88d6ca11ef7d1ddb2e7e9d776c81e3c0bd2d21d92b98bb614a1c75b9efe079040e81750f8f9e47e4f44eee16bb275c4072ba29c45468451740ca3def47cf2ec49e696e8ed451a49c8f727890705bedf65f0b89013c88c6626e8e8751cb7e41bbffb7250821339238ddcebb814aaebaed0af57f746bec737bdc844764056c2d60fd39ffe64da426ee45fd8bd3ad75df1ea5bd73dcf642a4dcf917898362948117de352f46ffde3fbedf90eea220c84a974cbf6150eca3fd198fc4d987a4ce2d02561ea71d7642ba73e39d55ad39cb85a7362891bb0fc0ebd7a91af5e1453afe918e953af9178a4b84de8758df5b99b9b0c3dff9301e3989e84c44895f2dd2434bdd9f771efcdbc347d321a6d5f36b57ee21f69722cee47ee06b4bd5b50ffd0befd78dfe78de3f718cbb2ead3bf6fd63fd4f740de1b06f5cf9b7d6faebe4f14bf1d18f67deaf1f7e287483c4eaaffc8d573effdf40c647eb3fe4df97e7a06faa12283d04b3af81b08bac85d8514fd2a12f70ef4be7b6fb64d64ee22b2ff9bd96d7933b35955fdea47d26fdb7352e8b89bdc0ed29010f485a811fc912cfd8a34dfc4ac895d33a32d26879a99ed2687e6eeb70f7b9026ea4b56bcd6db55e8d8f76367760f3e6a1c73f67804b6de7111488e4422ee47a486227c14c9fd384a60f7f131f72309c4f72221be8fe3b810146082812568c7391607ef43fd877a8f34438efaceccabacabd001756ff776401d501892dd15dd4b0a4590c4bbb703ea804031e4d0ad03d2b16fd3ae06daad06d240dad555d0ae7675153410a7b96da503ea803a2cd0fcda94ccf9fc98a0b079a1aaf4bc5b261cfadeb78d6f6ee446911c13fdda4c2b6e9a38c7710ef5c290c7c7a15ce791bbd5af6d45c73abe6ddcb6711bb769dc6e39f077152349a5e78fd2f3f72121fc7ee3bbd5afdd7640dbca6e7715bbd531ee635bb7bb378ba003d22e37e39eb48080ff3df8b8ab4636b8026b4884df6faf2111ca3a6ea28a137d23bd274d086729fdf35ee749d12f42919ad53fe3631c46cd72241e28d4d6637c2174f0086c5d8749fb8a86e5ce7b91868edcd6a2503d508f6ab7cc9b8d9ce31bdf3e8f34df9b99f8cc6bbda8b50661d07a49bd687b0fcbf66f1f6259e8b71019921e867daf498c61283d1abdffbadfc8ee393377096cddf4a113b175142ac553add6cbefd0a21712972dd29bb5a2f8240328997e1847757c5b09676e4b0292a47f2bce64f7eff5672540ef89be9175ff7e07ed35646bf0022942d6f73de17382f544dd6642686e55b32cf7f886422149167ac9f77d1f6912b1752412bda49f4e5bdd534eeae9b72436750ad7eafe470752165288d19689d85c78ab433d12a186ee206fc6a15e949ca7b8a2457a0916ddef2a36a4c42548f4922e8a64f7a27a49d7ee76b314501c23ffcaa154c0312de4d817708cfbcc45d1b0cc2181b90e642e03f8955f4fc1f372e931c6317507556fea4e2afde9f1eac1c7aa2771a8f77bddab7e6da35de513b90d981c084c8e043d6bd7d45dd062e8f959e41099851c42ebaed0b120f49297e3f412bda4737c574922abaa8e8d55e8571ef9cecf625115a30e65116eefbdaa7faa32bf88631c0a34832618610c4530c215ac507eff611996020d982003179c618a2b64a1fcde84733014aee8dfe3ef3f55e7d0aedbf2876edb6f446c1d8904b6deba61fbefb7f15b3e5a3714d1b72f628bc0d6b78eebb821b4be71068cfffdb875deda46dedab4ab5d14a926a15f1986941e18fd7bd1a72181d1bbddbf9fa9a6e7e3a55dfbdcbdf675ff919b466a280edd17a47d5aefbeee3b528fae7b11472a21571ea0a51120aa4410dc7faf448920b86ffdd890ecbefdf79a04e47b8efbdc396ef6c0fd011f44ff549fbbea376e76fc2150440f22d455488460c74390b282ae21118e3a1e82141ae81f53aa5f50b82826ee0987ea576692840745bfb24fcf5d16a1e941094121347790e8e337e1f6b92377d06fdfa3b8e9f5eddb5ce0770dd531aee328f789cf89df739b94fda2129298fea1b3d5f7d764778586e53799505cd44e1aa891348d9b486074d4779f22451dd901f52044fd15e3934691f7f838f799b4a57ec74691b9731cf5233984469aff1d908e7557c4f4ce35f66ed4bba0128947b783b66c848edcd4bc99e9cd4cdbc6716ff684f07bce416179cc32fdc8cd87a263664e91b963fc7d1f115bdf9e7ba25f1c142b4629e7a0ac5ba65d8de39caa637984bf4ffdf6664cdf3492f38992fa2ff531e0e3adeecdbcf156c77f60fd32b5f7fe7b09e4cea59e2353fff148e5e77cf42bc82371908b212750213477aa712814d086e55013427307dd84df7b40497c330dc35de35a56f600d530dc51a570e5c2f3c8c714cba34c969966919b2503e9d715fa856e9fa88aa8c40a16358bdca91a110000404001931500003014128983c221911e2731983d14800b5ea2728668a18a84180b2a868821068800000000080008840102004f41fb1db47cab23682fbf2e3fff1df1ddf4f5c100f95dc7d91e07ad49ea2c3377a84a5d02ec6bb49952651dc4cac76da1b45a87044b691961a10f124fb550f9831e08bbb34c51f588fc3c818bb30cc19e1181e5dc072ff0af720baf4f9c5276f22cb4cac8e8525d0a6e099389e3af9ab10ed03389c82389b35c00c4c307c3e56b583ce823234c2ab29cf311f91eb1c0ffa7faff1f631eb9dbc4f77a4d468e825d085a05924758ed10bda3e485a47b89476a7e01938b24ce691c94f88f5841e091e15e06a8d5b9a8a432cc83421dd77eba43f9156fd8c2fa1b78285f990302ab8e0c032fa1509541c4820e4d3fc90191ed00760e11c5378c27c950d18da573c3d682434c46170e321845b8c8682bc9a586a125879a96269c64369a7493d92ac2c10c5b090e310c25f9e3bbc93ea971ceb4c5f7497d2ea663d96e7c9f7b3cdf55cfb3b77b75440c2831290b24caa8a4a9ecdba13045b6001c200e10e490e6f2cb410b40e0057748ca436939b4147f112b72fed5a1253aa9a05409112d30ff1f95282b0ec32d71c02a5d60e0c659de6de98207701003c3ee404891cd22d548423b0d6231dbf6356d54862a21b1064b0d3dd46ee3854f8da8bebced8b0676afdcf53e9f03b9abf94ee55900fb2640c92d31c7d53709898b80ab69c0089a41f13ee5016b2c8797a46d33bbe797f682af2f0c77d20f24dc3406dfbd5eb1b55ca9b9206103e765973463e4f0ff4058e08b840c21de421ca61c593c898d32c088cee19fac9f7fd68adec21896c32fc26f0599e3dba2125d9a61f4c75bb8e8500efa04f1ea8d982e9352a03aad12ea1c73e8b8801584382082a8ae89997aa584960aec0cbe372242cf840a4c81bb9b51a403eae7d0deefd88232a050c591a4a9cbe42b2acec2dd5c4a4a6ff3b8bb9649f60bc08e7ad28f1af26053cb2c13331e8a4d9ef405be444b5401112d6d130abd24abf1d244d237b057645ae9036e5d64ec8019c4104160f577a7e6d5c049501a6c7219958704976467896dba9a6b103167b669fc116888985e85115e2a593956eb3b505684d0d871383693489bc8e94cf4ef64f887a9fa490ed4986a5a4c70d25a7a30dfc9f7b6024499bf7a0bce23efc1b846c59a883bf0b10298e2bf6d335a16882a56398a8c626142d01936c59b7ff19fcb17ce2242b4c518bf48a8e63e1b06b88afedf9c95be2df54856c19e43f1261a5b72666960649abf18b3efcaca49c3b6ccd29f85c5cbe58008e595a1f7a72beb0552895c03960d3d2f0f8e40aa630a89d03e1c688e4b32e9978193b0ffa1e03089bae5f42d7925d1f8f9f05789e72cb989dfbfb93c8a29d416b1096ddf5f9e18b096a244bdf7452c2a44da79cea22399aca9c43344ff427a708e93d51c0d07c1c9a423c410bf535263682cd38a9c4cb33ac67d957d668c68d7d0da02c9c533dbe8cee75c4b4042232f1b7c33b237eadad52f1a9558f7f153eb3572568de140c6fec09fb0bd6c2255f460797888c33802049969cc45c51d9113c4c12b0af37dfcf0090d05c3e072bbd170b4b7d3a0a160a42e294c54b5d53d31b2a47715a1d4fb4d70b70de8def25c5046e8ff3b1c0262a1717864825c0c8b9bff5bde07479993e4492397d97c6f01fa2709f7278da98541e3846365ce3665d62b4df8e461f7ad71b1790e660224315852b7c57a67d229c0ec3c25b34dc08907d16b514c5efb947d230c3b14fa22af7f5094728e5639248a773e8b8c91326b3a39bf9baa0c19dfb90abbe1930272fbec8a07ba29f1a81c19ab18de6a5dbed968bcceaf68c3aa57f9a4afeb290a5297087f91ca92e2e3d440d105ef52dfe2c27355f0eeae2b79a3739fb46289e689f6f9307b3fa290eaa2575b65aa57badd68c4e748f3d7bd5a9009ab1c3777f1f0f4c6e6d269528671b0f5144972663d8c6c2ed7def9cec1371641cfaa58f9a32b5f0acc37d8d0287a78da7cd5d89d43e79258b4b6f1a903472867ac10c9b2d26627daeeff26efd5865dba58af9d017b8248a9777524c8503b7a913d962bc1593a23e690539e99cbca4feff0b676557d72366ec567a57fa817b880f5c1c2c49e3b919b756a4a68471b1a9f3c93f7b6d9d00566aa01770e36eb901ec911d5c84dd8dba3d65d6dfe693a0cfd6caff60ee6bcbf5054f30bce1fde102c7a73bbacb00a8a4ce76ae6a0d9fec8e543fbdd00810a07dd6b4e299d810980a8b39004a0d5571f3f5df14b66d9eb52c8bcb05eaca3d5b43af06aeae2f14df926ffe9f6c7d5ddf73e7621d4ed76e31bce5f3c805401320ecf4dee8ddba9c1855a5a2e0a98caed938b80575fcde8c76b0f9d5d088b27bd2b67274cd8c572f5b0be116f4f3506ebeab5e314122a73869b7dc85507792580fa55dce565fca9fe49d2d35f12eba21e527ddd9776d59f17ef2bd083c1e1205ff81e2b37b6ba02cac33a49d51a06ff68be253255e8c2dbdaef57c4957b61a624f2e5c6f8e3c08180a6297083179325c8c761cdc55fcce1db2fb46cc98a22bfb123d1561f9f733723bb03188cfc0f529d15f87ec54ba851b470662cbe04e2e1fb35aa48a3917777f49848193810ed8bce339ea0d0718b36c7c134d75155b354d17114503fd15b1839d0e7c93b7d01342d01fd21aa6516042a701bb8010885af00c18ea99852e12bedf42c593cf9ef43f46ae21795bd08e6a0fff232ba0dbdf892c7efce53ca4ed11e827f69cf363d189c86cf57330d4487811f4b22e24494674a879347a04ea6fb47a22b76dcec074c01b013828a59eb97c713af783bd3bdfbce1bddde8aa3f50ce59c65f85186e715b2008ee911634a2b75cdc62657546f2645d199db61cf7580fe43634d9d2d7023d25bd26720a1f209c9271043521f0bdbf0c5152061e58e492f813c1d2d5d06b59a4683d6b2bfece20e2e4025157a74622dc04a3c1102bcf13eea368b85d1db5d8bbeaf36c476b5517249cbc4fde33f3602d8536ac741e4fdd3ed250a92fe7a3005c8aac55090548f1a24159af3c430dd0e92b194788f8ef3ce772b843b4e82da180a70ed55a1cd089057c14118c343e504300356bb5929a7e8a7c0ba0c124693810cdb78088ab032c3a49c84ff5a81d004afbdd39809e0ecadd9d277761b3d639e9c94acc55542ecb2b060d7b25cf52c71de6f13aa49a609f94ba50c3af7377f2ba4ac6d2639f6d2179f4880a6fc5c990daef694509054a7df2d9af5740e324c25ed3241ae74f4cba058666fa74009a0e6b745d64d45c3575a94a2acd8006643596bc0dbb91c4066f351ec3790b7a0a1436d90674f8c04cea19fd92cea332098cdc7f8bace6bcf218ed3862e592b31bb103097d066faa8a25c790ac7e29560a3d65604e69aa9deabc7659b64a813bc26d84569ec45c0d8fbb2066fc30f30832d513d957959188b14045a80906ffe4430a1c29b8e161f239b61ea3af201ab8e43f136f1de29a3cd91b229cfc06fd0c318e405c617c7f99238fe624eb41d8b280f6175f1eb6e1c5caed16e53020146e999ecbf0b496e66021a4bc3a7e05ae56fc8defe8300ffc163524dd9661c932c2ed170ade62407ee016f9eb1ca12d418ae5968b911d360c156572fdda591f01105a0507ea59bd8be4bc0fb4657b600cb502d8c0cf7a748606b3f2cce96840cb667b08556bcaba2c9590a10adf959e1292e31a9efbbfde9df459375639eab87987c4c6a28aaedcb7ad2e0b662e47b36fc4d07c0bd9f2c16b5d0013c405c4108da0cd21ce1287439b6421fc972f3ea460368ee62974fb09f9a29dbd2665581c0d2c32c33600c0a30cedc5ebe48880f16bf76d4798cb1bbe6e054a9c0bb024dcdbbcdbf1db7218ee42b10659ec19b1946e2ec1ace7e51d453949ef5679d3abeb90d4bec59172e3678a607ab0b4041103f7cc0a058eb23bf2b002171192a991b5f769eb315681d4a37085ce21d6bd2f74d1f4c7b036b48d97a8b53be44f21e8bdf6077323b28441875630d606618c65a8eefed0b2480134b43d20198531283fa47b7ffda650c5ef5a388d06900de2000bf639897bc6dd4da9ed468ee315ca92d4d285f5ebf03b8867889373e252e895c6bdbda3b3d760e69f1cb9e36a248d4bed03a3acf3a7d5234309d1e5f158c64491386f0b1a54fbf8cfc3122d22db8b394fc24d5966f845ecb820edc5d5edf3a93c8815961af8de2387fe11b369b72c2387041907b9143d3330ab8e9aa54e04d13638715162d9af0816d0fd2fe1efc59df13e64b2a45588dec40699d39a4c110d98c6fa86bab16d5d3b85ab9e57304e9d57a4269bfc360d51ee922ac6e46939eeae6ee92e039a8b0649b07d2b64354f52fe8edcc5dc8d5a27280eae196c477faf152bc3449d2c2814ac6de4cf31afe1524510119a0f6cd6f504d65542ab0247df041c88953a37aefb6f85a8a561e89920f0dfdaf26a1ba7bb17bf29a5c024992d914c05ac41e09175872798796764fc44064df501a62e3ccc89fa688b6bea021ee4997180228f37054d942492329f045e4c3af691255fc4920f4c32c4db54c848548cd2ef6636216e8b8984cf483e71d5d5ac63ae0c3d604b164387ba785b1a97ef2b2cdb5a8353e7125efc2f90fa6fc8cb0cb1154a4653aaf4092d209eee4cd470b8b624235d4778991e4516e3d54f044ba95603f96e12ea600ab448e65ad2fb0fa57a15c91c351644c108c3a2c1d2cf502b4d2e55c94825086e5ac3175268904825ba17b61ffd58f410d91b7bbb6b9af24a7ac56118564e087143508d51ebb9b56d05a30d8092e87f8cbbb4958262d9070117d05187e4f5159a05f56584efe1df1de541be845c6c4e818290dc48b0b8c465ad6db7c15b58d729470f1f367028a726eb1089141dbdffe7446c78a44ea7290ef4ce1a594f2775f43c57ac4a70f4cfab31ed1803ccd0a5753f28b93ff18b90e28fd570a55b2485a11cfd9edc7a80b0c2f8b9e0ad5f618b8d4f621d980a2c442ccf0807de594be6eb3e120d73b7cbc036a49a72ce6a352ac33656c2c692c2c8040982d2dbbf1eb4415472d6efcac5aa78935100f7df39b3e10eefbab95fbdfc966adf9b64da2f53a84c44b344279856600407ae96c1bd2d0d4b19f59034e8a5898c46570efcb84e2b0c79bf5ba5d1d645cc51d72382b44f9e30c0e24f178f83bfc8d7fae20c8906ef2e954738cc195668bf2714733d20c902a4a2321671324aa8307690d9b4d3ebf7b2daba826f44957124e802c5e9a457b158b9e6cc6ca0e351aa94dc44f6ca4b7042331f2ebd315544d835b5e59af3aa0f24276212b6df498c62d6552790c968ced248bd79de4632e66f8f1d94a52ccb4f418f8009fbeb6c2e62b140a6c1b7307448d6433e9680dd5654a3f51ccd080a427627f61d15fa408902031220289431f28fb4017feabacb614a3252e97ab463d5926e3b158e60f92aaa3b7f4249c6c5bdcaa059bf38e6e686ba3b057faf36c4b7883667d2b434fec8b007133e4a320730e2f4214d41444ddf6a2ea51a15420cda43cd9dc1cfc73a458100d1c2eeee6f138a711cb51bbb7078971145ed40b017ef6f3811749448265136f58d581f7e6ab48bfa4e48396fac150f6b5b0317c54b5879db46108ed08d26c19a38baab982d42c66a2a8981ccefa0c1127d76ba762e58c441a08fc76e0592fc5c479e06064c1898778ec8a5f18e5478fcfc8d79a321ad59fc123b0c6c873338cb0580e42c245980cf9a710d65c1a289130f989c37fb42c7b9f809cd3e51b110ae8a930022d2ad587fb0465556c6c2886e0a5779157b1089e8e02ed9fb65e198165accd215c41e75aee47ccb43c7566a0a4c60162c0a56212730f3654cbcbd25645936be23372e014b3e1d16c71c19573975cbf9302fb6713fcfd939acb4fd01fa4725a1e007e5abccc321c690c4f66f29bb0ab5213f9b7f08bf59c368f5fa0f283dc70f06b0b1ef9d3f9b45ae49da8fa74eea463f6446cffff30e2e733284cf10750ec6a9da3605fe2caa18486461a08e97b8b4b64059196593096f0895e0f8dde4509b3497e984addc0d45b551e9dca2d089f09668c582ce1c20001c16a381d130b1181a417848a6bc29adf0fead516445d8b872da33070aaeb21f59dbdcede070459267afe059bcd281724ce5fbbc94d4d41815d39f36659254aad82d09ee38d76b64ad7c451cc25267f1ef31259641c9655b93640eee2c781c00b18312faff8a6d0c087ea001df0fe98af449b5e0c530e5380ea56ef73c83ce5dcca8c6ea585dd0b76efe40235df1ae2b1e6d08329fa8a9d4f1aad00e5cfee44c861b4024591745d5d089e92abf3d023af21ad2780634c2f96beb40533937cb226e920a58bd22b0ab01bc4c2d9296ecf6510903565163c13a2ca3976c874c9b082a44a534ad31334e21e7c0e2fa5dd98736c66c524258da5658b8f0d089b40894f2b7bd1711326a1f4637cac457e0c08c7235234070bbbabcb81ff72ca45f842ba5df5ccbb19d96837d5f65220422627ff5febec2fa277bb5bb47618cee250918aba873cc1e21c136906b9335c09cee1506c50128fe63bfce1d3d64f1ed7b3ace9abe51375cd19f1a34ccda2bb631a9a732174ecc999483b298f76777ec865c5999f5451927e03de46934729c9d519da1443636576193a4a44a8bd04d8863959af30c44038b5e646509ecc9111d0c07aea4637bfa6e2d04b98861a354875adab9a0ba890adf0cbc87d69043dd8535dfe04c046729c8b340765da55362e0d7d8d9da5d56140ec3041f9708e0d699b39010e31e381cf1282c7b318059baf1779f3bc73f842b4961f0b3f49415e6c8b67e1030f6dbcd1a2961a2f1bfafc9dc49b38972d1c3fe250bf5727dd21535f289122c56e9eb4bbb8af6d01cc10d1e371b2c78392b8fe7f8817edbf2f9df2ae6351b8b303639fbc4fcbaab35ef67c233e99fc6a3fa9ea9bc07f9f409763c6079d300f8ba0a8ec87a5a721a399200a53775322fe84e5cb2f61c1875d0bc35c5455599cb0429cdc8ff1bbedc31affc4531db42fc4106634da1986242957f64af7706ab344745d424196e3df46dad234bd45f369d7e2462d3d293ab9e4e0425af181767df7fa0f6622c49e8218986086b78957898ad9b201531adc100534800a646abb952d97fbdeb49850c356941e2d3936744bf077d8a0ed70a4fb19ce3d5f776ec872e8394780a350fe5a3e2c12b721492b00322213311160f983ee2cfbaee3ce9e23feda4b370e96fe15378918f42f7327895633c4cc8f042b07d10c0d4723aa25fbc6c937afced1cedd49ff1c0021eb3f574bec72a781a9ec01b35959d6fdd1dfdfbbc8896d366dd6718ddbdb41431dc8c746a349b68e58dbaed53b0ce570e367da02b6fd001da98365cf95d550da0cb13a9a90ca87a4a1df976555602b1f298d25555a09ed71e2733a7d360d463dfca969981dcd133e1a99f08614ff83b5fb819d51ab486c3e5279d737d00a1ebf5fc1750e57269d54fda28320469a6c973857ad6939f4046755fbf0bf3dd8f100cb6e1b7874b93717f67217d52b01c7a07f189f9a522185b766a94d6060c547f4ead4d341310c43d8394f67345d6340eaff8d6cae0095e98555e631d153572fb4ce65970d9b5c738c5aa88385781648d84b4dd1f69a5b70c5cd4530a0e369369e16549db56d8b5d88a8dba0dcb1d66449e67893542693f938348becfc6618fd56a4b25128d53aebd007c6ea18d05b55386f8a9bfdd5f4b249ede7d0a956441edd815ef40eb04fdaa8f17125bff0ced02e6a47cdacee7a8a402c792abe32f0b768d4e030810ca8aca5d8601186accc0b326a40e1bbfb722f5303b763392beb195697f09ee8a196fdd989d1d32c60129e200bb6d03181f933f25165b5e1b9a90bc4c9ad947400a013108e6d3b661102248b4a71f3f4fc7a86efdec0baf675b17237375332e8e5a5e86fa1db296a3945838d7cdcb1893980a0335375ba8a17ea9b72f1235000c761ea13839ed2cd80de3120434e257ff11ec3fc4628b91301647b1f68303586379ee4e7c810e41bf149b1235915e0788105e84541f1c8da92a8656d30b096e741a00681c1e706f21a3e25922617e921d1c1f184a6df6408a03c64d16e5971f6cbe41002533aa56b987d23964866c653a0c5811e76ac16bbf1420fa073baed347ba8de4cfedd3eb98cea136f3135badbdd4792430eb1eb61c057a9008650f101162ca69290018a5b2c74ab235772638aae9eafb93130266af558385808c7fe67d0b43c4e9ed9476dbc1f48996180d43d077dab506c921a0b2655593b832d9fa0f398a994fd6dc4b0bdc04b5be23481867c36aecfbce64ef8d29614f726bade2b55a50171b0370f99b4ec679b4acbd5c42e34e6526c0749545fe8e7a9dd79ad2d9cf50a69cfcd44fa74914e2878a9e4f2d47a9c005b7accdfbb252a372962c7f440873a20378a671df9e2329daca75a7708e90c6312c8362316ba1b6104f615ff0ae4720dc55a2736c724003dc403da4c2d141b24e50de22255e7f38e8819300b6e00b9af967ffef28843ae91495109dea0b6934ab9bb681df8030b774bfb89ef463dbac7b728361df295a0de8f0f152433a0ea213914b1db9368900e903a9d921c4f4d704fbdc302938208f4c081b97d8505b1e88eb13ff9eabedd2fc339401088f783a0c1d7b65108e09a61d70f487969f288fb5620629943f39bca97d31bb13fd7dd96e0ef2e785190a12a724d09ac8c4bbc8978a65cd9e2ea6d370c41148af6741475239c65d706a03a024a4789cee50e52173692cd8530a24c96cc57d9b9eacbfd1c32ba36983028a5a01419d6452bfe9770de7cd5d7b158c0a5a242d83eee7190b767e1b95de18eef09cf0a66e12eea91e2dab8a2b390de189b990714945b055d8cda7d1a8766796d1981fee45fabf09e07286d404ce91e8446ca0a35a14fb968cfe5514896963248448973cbb8542498870b4d3ce2c5af366f8a7c4de7c1e829f75245b2eabf836dd688f8ccbbbc85581d74ad81d872c21172bd56fc660aa08a5f9f65b100a93ad5e669d4bc6e6c66706a3b135942acbc51373f5c33873f0630c4984bb8a39a8c13e219a72c4c7f2383a5b3181463e562875940851bdb0b9abbc4932afa881789a57e2cbcc219e166315d6b6657f3ba7101b917edfe22016421597e1e4bba707ad3e46f517195c7f1de32fcf4cfe5ad5f2c54cc648c85d220890d651e01958f2df9e2dadf7219f416e46e010bee9053bb45619b2d7613a3cd0f73dc3acc80874f22a46513ed97330684f1a4dc52b30c688b80d7e41a1311e902dba3627e2708aba04d0c4da1ff9cb3889e4808eafa04b3df628c84c584fcac765312b44253909a257af68c736fb80d17c241dce29158b0f31d285776855e44943b86292b8fdeb5857d5c09ad4e5318479bef980a6310fbd04d42aedc549514a0df992b8f1c3855b5f74b89d15ee70bdd57a08ab3c0f5d1c9ed6c004d376931bcd9b4c82d9e036660ba08a06b1520abb90f3fde617629ecda15a0ca72787e65e93ec835cb0ccdf7717294971dcb06af30f916e34cd580551eb995f7d331dfea25c7d8d681495269f8a628e7cf3d869bb4d32a71f4c7ff9074f51298986bd1a19d9c22159cb051479f78076c52209e3d7e3ac9fb4600b2a6a403a8b8efa7a27ae9e7733e207e423abe1620e6a1a025e7928a6fef6ff9371944b14f14454e5493f0df19c9611233686e10a0057cbd8c6f303565d74a924a015137039ad68c14476667ddd542d02b51b72641ba2439101b57542fea58699a742e81db4dce01dbde71c7ad2e34f1d8dcde8bedbcb6ffa1cdd2dfce0eb5b252776fb363a05152e6b537072e2422a39a245346e38034734de230dac25710354ccf8daf27358d630b149969e1fb59356fa7ae82b3840b3fa4d00e0c64955082b0bf218089aebfc989b9e741415b6ca0b1d545e0a9fd032d8a00849cbafa0d3053dcd4ca57a0930b0a48c7b687fe06fb8a9a68f2140cd36a75785f1413fa4c0b679ec998cf5c0294e8766cc8e378470a00e95e523ac3f3148eec3cd552d2a68825508b8980a7512099d260cc47464a4cfef66b6ecf63628b6022534b13b5b6d3a3b484b564b719c6661e4410c4100e39a6f0724e0d8399a8b966e75128b66a26015bcea4dffc0e3dcb02a63e02398069acd9f1b734508337fd17ab420e464b28c4aa6bd28ef8e6745accb34551eccec073b3faf626cf9213ca09dc226f4d4cdd5b20f9b3494eb50f31f1af00de53d48d6a3f1087696ee254c1dcaa1f4f439126e4cd143e6054aa4ff41243a40da72f5256b0fbcc20f022d72a09262404816c42e1939bcc3d92b7a60627047fede7dbcf85b1ae9669e6f81949600910afa13ae0b5f86e20122dfbfe0a31ab07da0eb389991ee2bd3746b300a6b55602c7beb46048ce684e0d40f6101706a7d1324992806badc905acc3652ea31887900b0c16f90bed422cce2f6a3ffe0d85803321802c6418e90f126204dad378632f6e43fc183a07db372af0d7a7001ea23a7089ee3fbd550ebc3664a71910e0c40b695a15b23628993163c517cb56d1585867dcc7ba3d28074b1b35844eade7004abecab458e30061f3371b5efb732581c1047b75b93574292b89eaad0bfa18a773b45463e2fb4acbb75f3ba243002316d3cd0ab77706f3927f58082906da0a40f4f79fdd44f7ac96a47024b0770960c03af98923f333e86db9259a6fcb0adf8ce75a9ba0d43ec9b1d7c9fffad95693a377c0999fc3596b1dbfd7b700caadb253e4ef65fc3442d71b21772d817643e834817a3fc10c1a7c606189fc69b0fcb71b03b3468f28ebf32e1f2e68e64243ff337bd0200a61a79257ca97bcf9510f561cf85c6ddc7b471277cd1aef5024e4c006fac74ed3c5444e6d176c8c39f7280a223c5ed2b4630d2423e5be4ca8e98c21384d809e95cdf2835debe6ed3c7fe479488c04323d1b615e5cddd8e02768082d9b96f16b1819dd9309f63c02b08aac18aa6e83520470b06e79de8a5b4212c8c7e745548bad2b043f0a201c67a1ff1d66c1883cf4ed3983632801cad64409a91653bf9227557882a8185a23f830a3b470ac39010d53e669087ed809a96bb8f46fa9da5acb0713da553b513c54aeeab0458e1a94a623313384f920c257af5f5a4c2ada888f702ac14aa85e997660a4150c680d5e5c447eedcdea3bbca5fa14c26d0dab87f1521f691889396cfc0ed1e08d38eae2f6c2fd2fc22db53277130873906444c0763f570dc1d8569173563a02581481b6ceddda5f750c2acd36b6816821b5071618a3e64023001ba324c768cf4ae239c1d169ae03a0d1463d554bcf2064bb18587581edeca991406a29c96a12ada2452037520cb22a0ecb9c646599f35572b508fc33344b866ef4aa979d648cc594b63f1317cea13da51a4171afd2910ac45b0039a07611af5376f0887a3a9c75e1ca5f119e445feb9ad28aab4c1d2536a664be892aa3d5c2b3188737faf5a80aeb2f8468a78957b2a44cbd6670d698a1f6308bdcdd8a6d26981a6bd455e506605ed56836bab8519302b8e38474a003ea0067770039d0781842927a0ec758f5966508180050b02320a30a48766e8140d62e5591267847d9674f0b4296cd9e8bb7f50282e1597cca1edf234f3a81983d59508d46829952d763e04cbb3446a287653463f9b16bb3d8f771338a9ddb25219754c9224f839ebfe6c19ee2c3e8c0d95b306d58aa283fd175e460a5607f16d75dfb478e79b14b4e5ebeaf52f3501cfda32abb60686de1e542634c4fcdc8c7fe5db45f4702fe117f29c2ccecc9d0363d42ed2d37324e5adfbc8cc405286e9c49852eced89a43042acf9cedb71f1d159be9f171802baed69df874bac26d4a84a40b206456749791f538cff0b088681ece371dc08ea90b2cf8ca5c0c7087f8e5ccc6e0a119783c17fd4f1cc7a4bc72274de6e70848506e8eb69a66c454b13d2815ca12649d9983404fefb1b213d09f576108d4d121998bdd978b053fb68f3f7c4ea970a93c1b338d9344f025c1b94925f4d6b11b548d2d9e70ccaccd9e083f58ad15c4a097a0acf6dcec86a2d5ccd538668195a1d92fb130d463da63f0a63fb1870976faa3c12f81ce257ed54addd2aaef0a7a80d9c9f07cafe8660ea002f79ccc62a0fa50e5e582b48ce04c3db2f9730410c605c9b0b238ade0c674a85d630437184875059f93dcea599dafdb6eccade5f37067aa46a93ab9977194b600afaa9235addf2254341de4eac4232d0b83119af598d5dd1551c47c3011711e9b33e8c058a903bf6df5d6f05b62bf2fe57ec4c134f1a5860eedeadfbda9f8ff04b9fba6026d0bc7004109af7874744651ceaea492a4da5d56998b5bf8a9a85d823955fe66d20874945f3420b7330341292eedd14a27c7b6b2b64164589e0afd4fc2b1e58aaa5f7e456d683e90a95f3a20d964e6b3592ee7e125d9292b7d776dcb76b3f51df053800dfe340d467995d065bcbeaa90286260140e623210b4ce8cd44869e1f00c725c8fe9626f2a97fd402e7b346ab440f4fec702cf54d8db20088a51b36d2220ffc2cadbb98c638e27852400ee7e8c1c19390b38fbbc730aa0ee5290a8950b0fa308c95a481fd4e2a3c4bc51b19030494800761639463f91c24fe871dacf3ae1a02d23cfc1258dee01427adbff1268bbba3d2315837bed3ffa5689e231f8d870b5c0e880618450c3c5f4871092ac4612b990bc99b01b39aa0e934b08ffd1a8ac45674620675c3e837a67a03d705f857b5342689f725332608de6ea7c00abac7c8f46dd3dc6bfb2878570768a1ef343f442d117af66f491728bf1da8fe63ea12109e8f98cfc321a2ed13ed328ba51140dfd9863b91edd066910e32f7b0ea2d87849af8f8d0841ea0597098084a9206b1a879453359fc580a0d47d61a9dda724576b4af6afda1587f4e6d81422355a3813b2a7571222f57da694a5958428ebe13f304207801a0e9b94ac16a9c1d16d5541be3d2c50284df7ad546ffa205d74a0422cf691a6a450f17938a3ec5400daeb577dd0c9225dc2ae8f912fb28c4c892119b8ed2cb29572cfa0de693a196a0089331d2a6cc34e87a695c8877b2bfc52e73f3194dbafd1064612a929d546a085578617705dfb03237610a8f160bc027064b9d46f126186a63e586319231f3b95eebfb35d2e95fef786d24aa08ccdd0df62379a7d562d7e54b703fee724947a1270070ae55af608446d8d24b958cc69440cbd31621761e0bb805a62b595f5efe8fab0bfa375a5e8a543d50f86f4878e501ea64dafd7a7d0e2118077a1d0f2ba06d49b3fe642352d201f2de8b85ebd91b18d99468fc325a4b9183c0ebd9c024c16fa4d7fc61c81b487f9332758a3459ce3cfbc9999fbaa28f381edf55e741ef602a863aa60fb7358ad0316a73fd31cf567fa52fc73e233b0fc350acf80bfc1e8a426c921c8d716e831f6e69f39c94d00b1b92a6dfd3307ec9f19154820af62ff756a40486401c437ff191e45fd67ac17bb30c4e6893ad316005293fd191e4a743cdd9f3932de9f99387c23300affcce5a8aa9bed0f2cb35612d2fe4cf378fce26926d218c5300f3af7087bba16458957d26ea5a843c837b4acc3f7c37f4fcf3de3b9e538a46ab7964dca475c1f82c012c8aa7f1b40d1812a9a5529c8815045f00b3d576e2c3914ca7b3f080e93a34a268a59d65404b1dbd53857860dc986052fc90a30fa440880d9914429939e63ef9cae501b86b702098be42ec35fdcd9ef1c83ed1916bf240c43b471f2fd24cf3ae4974c070c158b404a93ffe38e59c40fc12e1e8582590f35437313f201537c5997d67edce54fa1e477563c7cacbd9b0dffe31f7a030fff3c8d43fc89cbc4ac2beaaa2fb7c512a1788185f9c5c23024cc675579405fba4a7c77fbe970502d9a8144330af1f7b353fc0095c51c080787ce17a5dff9700086623dce72e75e5b414d4707c65067e7195cce1f95e86939ad498a773699c1c2dca88c9ecadb24e9b8b3b30c2fe68e4af4b5bc6692c69d9bcd60716ed4474fe56d937ce8fc3903173947ada0e55656f5c793483dee2cef5fa6bbfb549b2ddc8d17064ae856fc7ece556a29b0671af254097d65cc01d112a67f77d8a8d01c3410db6e1a1d1034b78d7060904136d46ed69fc8abdd8ee0d8af84caf77974fb6507eedd7501a682d18f6f1693aa3fde4d41c75ee985f2d57936a706521ccd8476463f3b3c2cdc07284441bbcae1aa4d885903818765d7c1f226a089d524d4ea9eb663173219fc6a48b4fbd1fcd3249c045cb9880ebef8933292fd1b3eb5ab118f4df22152bce56105dd14da876be99e1457551424cdce9b671d916bfd4efb9c9f5f56b27f0e2be92412d0ad4a151af52930e14e9fd80a91cdc291bd9ad98f560e077435cbae831392fa363fd270b815fe6d9bbfc7257eb50cfb626c7b37bf80ef6fb0fc99dff3d6c26bc36d8bb21aab9e4eb9f05d52fe789a2f26f4b9769723da05d16b73be155a732a805fd68e9770a0c9a9f5dadd40ec5cb880536ba1419020f46114c01d0ab19b340f67499737bf1a724a1577433d46dea861f8bf26b56135ff5cd2a6a634d7d866e639db2ba666dac65ed3abef1bcadb1257ee2da1d2679b04b5bfcc7a826d64c965cada520b92b385ce79e100b540f49c925d998bd6e40cca39bfc44956b5e1bdfa0962a2fc33a27a9a393f92a0e6f46b778b45dd31fb5cff0b135d3a5439deddc2315f67318581e6913ac3683d9aae9d325e68fb7bd1b9b5f8d988fafcab2f86028e3a9ffc29fd25a4ade43e81bed3f9247ecfb098820133cef9bcd7c1514320574b467bb35898183f21da07310b248c9cd3bfe26da181b1fe04d39845a488a4a95bf0119decda2274753512e9d77d9d7b616c969ca628729b2541a501ae7c64ec844afdabcc003aec659af05eeaa04a76bdbb16dd8ec99365cb4180d587d9aa40a02d5a20d9858c461c09fb8c6595e12264a74c186e50979289c20a2e01e95de59651c8f331456425e1d68d07252bcb9b205725667a36301e4c0eba0b28d79165b7e77e665720790395f2cb93b3cc7b92a9e4ed5fc852ffc89a130e18ed19c9ae786286ee3a11fc583dc73633d747ee16c240730574fdde9873a46a0632904a26ee601f13d918e506e174e1598a2edeed2f277793b8ef1a3e599df3fba6f73865171338254ca93b091b4e82388b996a128a2023de17406d7d8c027e626612fd4936f206217508557938b2b96917824953317a0ca6e17d1fb9738d59af82838616641d589b52475120db1b902e5afafb87b9723f346a9816873473d02650f8823b89dc257cb25914958df558ab9a0cbc16e31b0fa09fc8833911c7635067f5788d5542ff6aa1d56d03b45e9e45a068615fe2cf811123d2a9a85a572ca60ba53eb4e967435736e5698f359628e662957b6185388ed7203a8c1c5bdecb2632d7887ac2a69234126c0d1d79f8fc4a3e62b0d69e3287b71c0d5a1ada1644b79245a09bc8e81394ed9a4f2fbd4d1b69923905c2fe33bccad4d779ad6c07777943bfdf3ab048315a0c43dc62354091037ce7dfd87b5c41a9c844910b6803a2e368d52bb9f0b2396b40f46217b0ea2fbdcb3a9e37e5053432ad38e9862a46e6820646c8af6f17837d7bde6f9cadf7701db58a46b2750f63b2748de94519fb7c29826f693d2080349b40538fd54e66c2b57c26e5a7dd0f365c8eb98961b0ef10c287cf355cd0f3ce8a506c04ac5cc0e6b993a20de32467e2453b8a228d447062e78102971d05fe89b7e3e8ea6f5a9648ae4ea3e15ba27d0a49c4d65a3dc6f328881dc7321e1b0dd336c8974b6ce4762087a61b29f203c4057b4ab5e52274762b828f1f594b8b612c84cfcca36f72062804b8b763a93326d96d1b6d20ad8de298282929cbb0be371cdc1d58e35d0fa68a42190117641b1680cd1f0afdaa995c8021865c2251058c28196f524c753e5f19aac25543dc447d15b08bf5e4df60ef4b422d16d44b2239fd930c3d26a90545992e061f50b90ab9d9a577d4925bb29f298a8fdd4fc5d1314cb73e8987238a6cd6212c33ed232164f78169ee07537797470c09a011280e13c2386fe817f5fb78a1a5fc26f6548ae0ba7aa323eabf0b652b9db91c10c5629fc5640d7df647ec9c5eb1ccf4811983157d31b77a0704cf4cb0a1aa7dae98f04c66756cf4a5ad049f232006b63bbc490e426e2d22b801b2a44598b7dface3e0648340cf068bda84dba93cb106cfa4d7dbb2c888051c48d99277e6ac7244830c5760652c4de96e44416f1b84d84044ba753748e172409dbab5211454e3d18d92bbe6d6b80a6c8619c9c55cf7d8ba37f78612bc71ebc2e955fa80e9a49402d014a91f485477b6f67d8f27658826383cfeb7b9147c4dd37c3e60f7ec52788201acebdb2f198e07a18e77a841333869a7a02754d5c53d0e15aa4af4f27d56fac11ec230a760dfd646a2b6c4416f2d1def6953077e22ebbcaca98331403f31390a78ec016bb1a0c4e8647fdd234aff185ea9593352f30585371577234ca74047afacb5e1a9bd009c969dc60e3656d65c57f6c55a3c71c7293e5995bc4106d12510914e9bd2c3d796a0db17d3b48db28b6c988cbea8927fedb44f138fc51bf0914aaf25e22129959c3290460c0fa74c051f3a69ad92ab4b2a9c3123257ff0f5e8575d972168653521a60b792df294cc1e52a825f04468d42755510650223976964079122b5570abef7239170155555cb3a82c783f3eac3ea5506502d5d97fb578b2fad72f632d51472759a6a7da5a189182829537503fea88249d699ef6911c07123177a093c6ca16ae90668a0f9f509eb87a5009a251d371133518f87fe07217403aa9c1e31c5b594649f17d0f369a7a88b101b40e024888093240bf5d038804c8085ce81ecc0248425a0001c6e4881ad94c0ce3538ceb3b963a885356903c84db69ff048a5848e20b480338e8761db29114c8cab2f5a4aa70bf22581f34b554959eaeb0c6a698e722ccd32ff8692f6a210d83dc4b44bcfde7571ad0488af93088831c5e695020a1371663161d01debbdff240465a167d0b4355ea2c9d02317c1d450a1a87cdcd21459959531e128f03b640762c77e93b522e10bf36f5566c2029999d40be2ab12b690d39199adf525d71e6fecf2e8e2cc95178610db777e8754294ede3f72e2b3b2c3f129c69c5b61aa99180534c0aa9054c5d5b2066e5cb89001b0a942f338006d52ba4d72af0a3094954105d99cf89085a0ea91a93452c92893d95bac84a7cf885a168e7767dc67ddd4057bed172a2f0855c58b4b6a306435ab558515076be4f53f5fd6aeb61d9d03b79b29bafd2e5400a664423a941f26ff70a5a829c08115ffbd34228bce0b3207b14caf05fc8f99c14d2067111ceaf4786d64d44625511a250a720654ca63582049d48482b4903d407b2be1e29cde2db40730c0f1a7443b33ee3b4dd11daf33d12da6f2c81939f1c3e573f3beafd333133eb17679286cfe2902554983b6a1439a2f1291fcbb0538c4816ecb05810222680b20a5419b284a844e270b5556169e015e65192d883e82f4f096a9afcc7698f30b61e879775e4bf084036da557b44a76540a3ae1cf63a378a1dca2a044e5756ceb64b1f1708c17a17f5e0cd3dad8765aef88a14ace3cdf963a8b13c2547a20e8a1f0fc63d2108e141d9b498de4f8520143ba70029276e5876f9433a315db1c75063231d589120a8b46ad6031326a56cfb5e809cc98768127d9a24c318e9404ee41b38e9258eb6c1e3b5107137ffcf9778870bbbffcb5088a53bd403657caf3d1faadbbb38968f7047433c09b4bde3ff4c19e93d588b0ec918a085e4a302b47c04ad80ed1eae2493468984983c2728a9dfde861ec1515237d5487c8e63a97d66e4247eab51924d945984bc10d6329dd248a939b7779bffc848a63c979162ad48a9896983f4c157c9d309f71ee65ddf51610fb917f4d87f3ac72c39902e3cf09276c1cc6be898e01920fd57ff11cf7e025f9bce68a73be94551d2e09a2ae9abfe0d20706f58e7f6092a94ff8da3cf14b8ff53494984903af7cbd39966f19a11d8c5cc8ffb0950170cfbefc63167baf7389685b631522ebfd57d3979356695dbf3bb195fcb37f7f745c8c48bd168cafa23ec2a1847a14089b89f4375c0c4dd479cf0f3acbfba3c38e58008fc79757dafa7c41210c3b1ac040c60604a4021d145919eb0caed1eede18e2703dd90f6eae3dc01963b3fd4a60201be0408d3daa1f1558af65a8ece4e7e6e2e93ff89192d07c2e843299c9b6db6bf28a6f4be9061e565138cce8c08a331884de42d651d91e241c352b82f59a36988afc174a5aaee98614faa4b924081e67ed1c77a9e540232decb94a9e965949226609f59ee3097e89f80d0e0b781c8d28fb34c317c6aa8c158b5f58805d6ce29225d83410f054eaca3a7f56a18ac21bbbae1a8bfffe47028f8db9816cc7b9e9ec506f6fd02851a8b2637508a84275b52f8c94683d1c531388ae2581228093c740d3e6f01eadff717160f91ea07a569fb5f4835633ba87d6271cb07a0dccc95d233dde1e4e7e5a5cd17d14dfcc079ab4c37da02e5478e0ba09a260fc038c3bc11e1b7c720b8f60f24fd7cda9d91bbb1b3be84ef6cb07e969e9989ffe28e9feb21e591074c0fca85cefec4685dea6ba9768023811710de0dee0c4780d89d70086e465d4b91bba6453f23a6858d5179b96792c5805a372a62919af8849af938d4059bc62013d59b1d0ce0e0d67145e9a8dfb0efe2c2c8dd99aabceeea23beebb9ec4ef729234cc829545bb01bac27f8d1bb99b2315d471420731f77a0bba7afe70eb323cf1a2d6d4707deac4768b2cc5e1da6389cc723a5fda071c6db53c02b9fe6cd8ec04bc52040c71a077353f78fc6098add236780514068724237dba287be7b687f59083ea75c3de774b0a3e7f027999b71035deac90df15a0115e9a204765b167bf212ce65c0a6af0855c142560a733bc231a2848fc10472511154d92682e13a7f98858226c9fd8abc73e90723af8ec4411f5d9191f33598da255f34a28fc6ea0b80843c3e1708736c5f4a3f66f0f3bf6723037f82476c5a5cee18a025c7b2677f07128c8be567829a432092a87bd2fcdf5dd807fdcd8ad2216f3b0d8493821962eb1f885e456ce46716d94b69ae0601a15aea8b54b3721145886e7730ed1d477c39ff205864bf99d92df4a153bfc5e10f90149fc8c4ed726bb78baf0c2e711492f15edb4d42673cbc083f4234d84cdbe3e3acc69a1d623d68cebd05f1d81116bd63588f0002b4010a4c827d1fdef0d5973c23d0f77bd8709d3128c00f58da85375f695e22e27d271810d1616b1bfbdfbafd1b117df50a73ea54ca5c4fb84f81ef8ab46976e4e850976005e6c97b0049003e8758543698cf83af7a04ff62befc03ed108ca84d7330de31fd0afb561c16ba3aaf5844db56031354a12843c8a49ac37ac3c88004245f4b45df78d747bdc151671e1c0910a5a66c403eb5f8966fd928b05dfcbeba010fbca5480e00f275c174588aef820a97e0d8fa1ca74554b85c6608ef85f78ea81573763ae0fdfb4aa63459083c8e5605dd3063092b7df9e368ee80b6d5e06524e477cdd051cd2b3b450ebd368510efbc476629920daea9e55670ba32017a2882cf895ed9a167104ccda5a095d686f19d34171fefe3c05ea7220640f315bb5d587f258bc011afc278881186233f0a90eb3658bd5625665e5b69080d19728c84ada117e42af4aba51c49968632061c062a61619c3fe51c0ee59946c042513149ce94decfab11af5d039ccd6403a10ecc80382d4299987890947716c470f6c8794b3a4182453a9f7c1e824d28d4cdc759415ad007c74c0ed3f37367359c27789c53054dfe2bbd6e7aee113727f688eb310d77378232e06a79908e4acc710a52922289163d659b2e5c81a276a3fdd712a2758a4e96c0fe2d3a43b2c1a94b0d303521b02796839e4a35014f89955931724f98de3b07f841d320164471adc40177c3d30d2eb52c5a4d18b806abd0418624a77f135f1443e6e0663e2c2c3030073041a4f14763ca97ca017ef3de44cef58f799da5ce525d3ec01dcd4ab03f50047a4fe3a7df6e9e32fb1896f1811ffffee222c17bb714d2c52f3e8b8c735787f0c7088251415873a420d7f8e9fa192bdffe58a13cf39d542ee2b568641bb7d20dae43bbe6e098f643a46d29ca9518e63c9f875a573c3ca86e2248d2d0a7902f7412dc6a01d43623b452ea806384e04693a73576bb533a3050cf0a864eee76b97d402705d07be9c79ebf8cb17bd44371d9b9f8356acfe5e69ace4c02a8ee0f28098599df3a0c88279820730a6f5ac4c74134090e1567aaf2ea44d6788450276a775f5638bf527b78ea73888992cba3fe3fe2a33dfcf20e29a9801b8651003ccba40629d170c1b75cc2a861362114876942a8f41e2c35ffd54473c0ca8b4a73abd2e35de1bf61bfc684fd72af2e83f2ee89f9bdc01294c312cddb5cda697093d6e6549a27f2b0f21053e00ef0cab8a833abdb2ac5301355e419defdd2d48fa9ac4852dea0b18cc9bbb737b354f5bd310b623e3be763e8d544508bbc7a98cc4da82e02083da128451e0340a93f43f86067851b84c2d93e35702c7c98a3f2d37feaeb53cbf4e99f1afd4e70484702375086c92cc8cd40be5c49d2fa9da02107f7e44af108c399d6e953f6d2279c080c570c0c82be99be8abd9ae0ec684bd3f8dacef041a4a3ba3228277605691737b8f210a701c0188ee94bc0fa1363737faeef1892a85759280805f18af524f4702f117be2164a881aeb243682720921d028a5e3e1d9133f4865bc75a5eb6886ad7502f02865ed04b311ff705543cecabf22e63bd86d10f0efcc4a0fdca46cffa94db6274d34ff52055a9b61886cf4a9e7584e8ae89ff49a614c175052b86bbab33473ff87842fecfffc0b27996e49f131b51278972015c941da17d80decc37f6b0c1cd689a7c272e33f8130c00d050a78ec007cff43b609587a01b7d13ad0f19fda48acc57a3689b1be8b62c16e705bea1378c16234dbbf61144e421aed9f9ede6c26a069538a4984541fd3bf6e9aa2ee8114bd18cd9b930e42f1bbe44d017d3a2a057f3d30f1005158e2101f7b8211f3840cbb7ee53c60e287eace95b64cfa0f5bff4e80201709e94914a32f98cece96685ea769e34a608a746363c8b21ad0a2d08054a96413fb42f7a8ad206c5d380b71924c98d849eb53c48af509c8a703ba76f4b06db27ccbb094b930039c8a4d64f69164d64b26b431bb0b3f0e9b1b3a14f3f0296c34aaf05c526503c8072f82508596d6cef9f0e12ccd5c6e3a8cb3f22f1a9de36213ebee96915c6912c1d8fda28c5582b77416c610371be03d44db7a18c21c3f247830ccceaaeb6770fab8938959054eb24fdadfb9e3560e94f37dbb8bb4f7ecc09dab7ec144bdf39881316e613307625731f6a805cb8209538f3e8ed91758c918b43bdc617f6f4cc35398c0f1169dc0a0f1cc334d72996aa101aba6a5273a9c61c8128f77129d4659a5b220f42b4ba911983963894d7703b5316155fe127b3808466b288f758077c2e20bf63782c4ca8b8e05930c97ae5c4e401985515dbd61ac1863d580d879f0a0e5c95ccb445dc186b113759a5d818662e63cd9cdca24baccb33bbdd8ea6074031b3531970c881550be77f57405a1dd0bcf53fe2e0d3b8adfef9be3f6b7c13fc5021b2763cb973ca3b80c5d1c918212b27b04d446259f799d15289c9e0c98c42d28104804c5987535cace482ef5aca0329def8a3863a6647204187608c8b517b53388ae82e676c54233f71befb232f8c88c34c89e2038d99304106d658564dd749d5df32b4cdb2775ef0efad1cb45fcce481683c7fcfb03b33924415e2383e1325d0398d44482bde8ff69759e81c5d3155c19ec606ba5d9ef7a3fb824dfa311af70fe7e61c12df3af4fe35f1642d88a9ac91b8d0c5a94c4a2b6eb5039dae293e2689a30d948a53f412bd082b4e9150c1428fecf9570fb06c096aafb1c726aec3dda9584b768f1b3f4245faa161fa05515f86ce97013e438feeac6c9e9ba5a46874b21d803fac87cf27d12a32a26f609d9b815d2b19b96815990e5a42d6c31afa651daa189eb9f9f0297caa498c8d1ef0786ac26b72d067888c6570b3b65898d401e38ef6805350f57701bd9a26cf0956823cd991903a48f06cf11120194d9c365f0a11875c5096197667581c01a9ee8463aca6b4dce3d144f019acb8c3a6d07091811d5d3707d137cb095c5cae89808c4854c411b6014d6bfdd748483a82846e50c5d9a53cac0bb5d5adac76c034400f95e1a3d51a658080fbd54cb82e732754e108ce0bebd70083de31880f24e63a6b637cd0ca027df6c74c4fe6905c24532407315c2322bb4080582e02a52b18d5ef0331e4f9971d53ce9b786ddac4c69548bfac0a58967f3e2412e1972565ec715632b8234fe15c52e14932a7f13940cb3a0ead27d4fd9d11a1ea74caf429ae01a34dc1635e9420ea0339555c72749303b56de5875ff62e7fadc4d75e5c63172686e0214117d22d75d64d87af20112d558a5564f1d3505f534a9a3c1b08ba81dcafb66578437bfe1791c124ce77617f6d4e14bca662da784a72062cfd59294eb0795a23e01506cc9a2e84edb5d0aa9340bb294f9c7853367256c22f30aa971a5265122337f2ce48d8d64672fe97b73e465ab6f3d9d1498d0f16c1760f585d70d42436aff4a4e8e133ec1b2a3eb678fa08f2f8afc1ad85fc058fe839774e2babb78279422f59e371787eb017a9c8d1fa72037e10f1efef65bb271c504dc43c6e4c4476d7b3806ddb0b4171b3acef7cfa1ed156c3004c828c1cc8432dc7f0e4cbb1f83ab3e4ccc9860517e016fbf045aacfd4e48eae852618d6bfdee6770dbe34a133efeb893493a4852c6f63362d8fa834dcca15354478bbd52bde1e1f4714f73588ba380107de64ef13519b075f2a06603250d775add3a33497b7108ce77602b70a46efb57e3b08a4554b341622ad8957374e58cdfd5d6dd01443f5b9adc975cdc02828c77e9ec8a0aa90c65bb7d67c574265ce5f589f20f86c558c4cfd75c62b8e9d737f36f928194addd5b6c72c97fadb3851f755ba08c27f42cdc223120bbb8037194033e4e6fda2ef7ddd6d82c4a2af2d099bd7ebd88def36a2561b2b34b4da8d0754c140983b8bb6ab33b72f18c940e38565502933e91ec54368d2d3cc564cdd5974fad49de1f307bb9d492b50e2b49387453ed556d5d49417abd8220042628e014bf20d8919689584696ab04df459a7a2fdb35a7cb89ab25f63adefe64512d55ac940fa93065f4ab4c8ead4ec61a62840f27d940f82af9b0e5657afa8bc4c0ab6beee9ce5324e06a8b9cccc425b41d224458916c30e18bcc87d6b4d48cd4e0ac3b9bc3ed103179be24bbb822af5b70f5f6736e7dd40cf5849fd2b12e385b90380a7610798ecac7ec1730b13256df10bd5174c13f98659a9b8ea100dd881a2fdf50745729d191fec00779a870e4e1f6aaee59c803c6b77293dac869af3fde238fcd10921e698276927d45a405021308b37d81fdb7743adc3266fec616ca1511bc33e03e7e71247d36d7d44445eb0c261ce1770b059eae19bd3305b9521d132bee7b9d99004f6156e723b8032e2f285c0b9a7ecb687b5126e6d2d77e38aff6caace2e4720f3c1aad9dc0a67004b31c626504219d1ba4b85ab47b0d83d3e39491aa49c35726a22e330bdd4f274a21b94cb15fb0f1f1965da3716d5362f53c4e16b83b2509441f074a5859994a83d1a90dc88163ed1add3ac70464da347320220e45d25f9426b9773babae442a79284ff350494479a8471dc7f7ff35e430d798e1cf6a4c1bc39aa7c5ddb90d4fbd3f0e3424b2bfc8572fc9f4a71b60578542e69e4856153e3c5bd3dc5cd783646743e65e52e9c8642132bc5e9600639444653fe9dc3cda4eb4ff27018c8f11ff451ca240535c54883f173c43289c2c9808a52004e3447311841b48cb22004b84832220991a31eac326b9c1a0a05658d0b1003a0772cc91f3eb61cf916927a5de436732d2fe60ea8583f2f02f854e2d72686d212085168640aa6700e15601e010e67d19535de2422fdc27fdd327aea48824dfd343ef0534c760a2647ca8c76046adbed4c56f1ae61680487876eafdffc77d61eb8080d0e502475065f0c4df07456499c05c5960bc3513132999f71e0a31c8c7cb209237a18a70e132f03e57a0c1aca8abb2b3fc0afe0907c6329c4067a1052688fae4076d31076b8cb35721b417fdf9865af30af5f4c615c2a8ba62ce5ed54c326e5fcb369437ca89733a116c6d8aa06d36c5f14703b4be111fad93392abd9ec3b147e88c5750f64360c0b8048800eb1b3f8e2292cd3bccb3d090033b9e7b096408988db4030870001c6b22a30e555cc7751c888290f0d8b5740719e3923e96ebdc9136f69670c6e5adb3484c214d0c8ab6eb6c30f150893cdc7c1e6f822953b830d310e9be2251e341e5f096c294ad52cb925bd4fc81a25336bb506f417a53eb659c919c5e88d552933da0bd7dae155ed101aa94edb30f0d38ef2d74e8b33081cddc5f63ee597a30be0316e3bc15dc95f499464d035874f425cdc34d0422f01245b578c86bdcedac408323a060c4f82937b66661d170221943c7c64cb4a4ea3e3862201b21e9f2ef3b0e74bd568c52887eddbd550376ab3b7e16311013ad8d228be348eaf6f7f0bb91bea2bff4e9ae92c3029563c08aa6e9e8d7d46ff65adb212c8a31d45e49bf32f145f3ca185397eb96c995e18aa7b65a084c5a09d21eec56dbb2fb0d63a06be47b5304b1c4ca33f2b66ef04fc62ec0a543d4eafdc09d3dac1536f72107ebddcd8cf93f42c1dd9cc97c0957d4c09f0930f86e2658e3b50547f7d3847d8969d0aeb13da02e049365878d1dbea29d725f6d10f617978502d5a65a786f5f0e72a99c781b3c7ac6e58d11c11111a58b06f89f9fcfeeb8bc9ab5854a48c114c226681490cff0c101e0ad443c35960b4b5d7e97c09560ad1fbb82435db9e7efc75a0311707bda5a23baadcd2a8512d055d8f7cccf2c04618e28d298fc7b7b26223ff6e85ab4ebefa57b2037f6b0b560f7b7b66c8ad6f4054b53a87e2c06e2227b925e556c4c21539ec72758b6cb8625ba6c30655949ad63ad118a75286a2026102e11432fdb3c964b65e1e85f34a5c2e1340867faa6fe43d0729960e52094498205d744e6f8312a126918203253c2050f9a3d603428392ed0cd8f6fca01298a9e72886094a2851c0951e5c3326e8ad8102876b88a8f7349e894774a023e3c51d7757da16807ac371295744fe452772d32223b6fc313b229642e52b4b279a69a88eca2284b85e4c05bd96e4202c35a132e7f12d7c7016449a8dd40e26cb3a11090cda551731538e617173a7b8a4ee951f3d3a9cdce11310d334f541b8619e0b14ddd08f9dd65fe1802ea7d8e006d73ab5dadf2454c03e88e7e3b281d1c9b911aed04e625157790567095e43fd006ef6a70018c404250e9be13325c58e70b194ac8fba55ac8d2926fea0525cdf980c73755403a674b7521a457767523dc343428065335ace9991ba18bb1a4cce126850762bbdf24448066cd4b76e302f3632b059e26544b00e17a456cad9e52776ac44532fa669fc479a4eae9a622c9fbb4409d28e00b4b9a18edcc561a18b4c686b1f19bd71f73ea5d6f13e15c82409513ab3011b7475a5b7d800a27f364cd372c0eb3c1850dd147c6dda2f72ed24af0d93d6f2940bbd9ad01b053434a0c5e57cc604af0d027d569644e5597088d8f3f3e9d993eedef428db41f6de40522608c4b91436c642d2533a703661b95e1c94f4b9cad7fa18e46523d4598f1fd8e4655c06033c3ffe4ae149e815d48b759581c970f9847b405c80402218d37ffe4d4f1c19037130bfc6d55a6088de89a205e5107bbe700781eab32f3c4af15627f6a1c31b4f0d7fccca554f1203c008a9a9336036fb3a36e2660b1c958967c0ebf1d18924e16d0a3946be6bd1b10c05f1644466737ddb14b4b35c5e4de974b9457bfa5457839fb6f19adcd1e8d0feee2458110d639e79a6da8f088dc0c06fb326e1b2f3382deb06b2e9301bef1506aa709762b8bcd62190b665789aefca523d7eaca953788cb13d85bd984aef37da564d494e4708b37bbfda691a22fced8c64e2780d853cbfe0ba5d34ed171702134334866068f88bdb2155ba424a7ac05cda3c44fc62109d7639a84451cd0163294665bd25f6ffa9568d4989af4e04c043c3676db34cf10a0c0a427d1b368819e267940c245f1bcc47fd5e656abf5d4a2df20c732b7a2f825db7acc6c65e8191474e2915ca14ccc6c09049d9300bd411fa4e8868daac29ee2b87690ba248084ad9a5cdd23c383d8ddf7484e85e19a143a1845166b9da7086de996b91ea79f8d429105f012a95d55068202ac8328a294e84b85ae3f492bc8a0d600eb230b660222d110077924c3dbcfdb5649989fe8736e7b4f99ac4cb1afd4b7b368bd1547c969363c7d5c88edadb6364b0ed813ce3b832accfd82b3a5bb9d8943b054b9a4bd9d25b09d86d0eeb61b9d5cc43e1f03415d3acf4fbce03662b679e228fa9a3468188f6ad774de5f6a287858f68b7839b50b8714ad8bb90d617e18af384e2eb0cef701e2d7525e191416baf630b59ed6ef067750bb0a2ad6474774ca209deb6b72ea723e478f4fe1bbb73c7def7bb856a8769baffb308e8f489204215d2424747c245747473a91c6b112b4dc20f66cae6a2c01b2ff2434a9473e33862966929c2add096e8aa89018d61c1930309f1895e460e448e3e84c953463405e8ff842dd648cc883ce6e6ed05a4c5e606af227366b8dca100eaff227fc1a480cc8991b03c0aa24e5d1e5081322092df5c62fd464ca6027d2e892fc137c4251a7059c9372b8eb893805ce17b99ec03f8c029dcaa57c98af8da4c05b79115b7e20ab0d1920d0a07b8298ce32204f76379d049d2ad1b809ddae161322547364f5aa852c5bc424a54b8e041e63b33a72f0089f2ecf39eb93276324f94a9a4c1e75f167984226f69b39b084ef8425c72952525a00b5fc2bce885a213ffc1814a269a9b5424af4832d152bdaf31c663861e77170459311da0834c44353dcb04a03b0d27105cee6f38d457ae49aeecd93c6dcea373f5b3f2db27f024f4dfb7ce621442d8d8904ef746cb0c12bc1031fccf41df2b1f5f91e6b891ac030138da3d8d4555bc2fb2228f334d34b1faf33ff4bc1fa4642968ef784f4e6f970330a0648238a3da7018f4383cd94a9eaae1b581c32a0c5633322116c415e693ea0c51b19be509bba6af0970b7e44ac1bb1fa41cb8c8bf050127c84c80cd3fa34a3a5396f2ebeefb018cf8e0d648d4e89d5cd1d5a9bab124d7481ba268be5b7abfb00bee0d12852c16af8569431ec4a0b37819de4d5e13fff16b3dcc36ff7d5f0cc510052a17c8bddda83e128d2538445680deeb32bdcebc94872aa09af88e2d20fe481c23a3af2140d76c9d2341ab8b0f76ee490ec1c6123f37bfd1d0eebc595014add5686b0e02e096bfc61128b3760d367546ba461b33bec831699f7f721c3df9309f40e6a12380f8c48908851e21be89a30835ab55f8e1af73278b40addf10dd8110728288d35123ec2b6010aefbd77ff551841eba326fc7296deda12e9722881cd355156488a10a9770cb02750816801237856aae1dc2e0a4947bec8a543aaa512cc53312c5ab6c31022d377bb51062df549838daf59a791227d8e351d32a740fa6807f35bf953de1c4123349ecfa72a788c8a5a63eb6df19498517e7d070c65e301db6ea02de24b64e2f8beb737cdf938dd30335dfc31e052d828d03c5e793f716b7ca61db69338b1dd3792ed2ff68fa2c1cd038f37b97fb361d5eb0d7818e141120e69a73c648976ae174405e2f28879ed5e8935a107a3cef75c4ddca86cbd9336bfaee502ec98a3af920c8491d359ddcd870b62168c64412af8c571800b47be3341348722ff08ee161e2a090d290321223aac3ebd2f5a40c85298915761cb8de7030ee6737415281c9ef6e9721fa15272bd90cb556f7917a0238b6ca185f0d103c3a831beca80f41c94338221dc3858e4bcb79e4c9fee530e309101578230989b161e7725083acbc66c2604b9016e9807f021046f021b25f1f90cd690ee697b30a6bef227ec99f747ea7d98e186c58ae11c6201331d6704f84e033beb15b19c7aeb747cf7b0e7b98cf14ff37b39aea78cba14b9b73053e5eb68deeceb3adcb374bb74a5e95fe5e6c419dc6c8b41e0098337dbe657c77153b4ec895fd95845104a53fecad20866a9580b94d2ef9a001d1cc2666a92c20f4706db28bf32d3944742f98981776454df3a79536a6f5143c76982f49bae28a891ce831b807f26e35c1b90cc44de9d32ea1293dcc498534db7247f43eeb7e204f2d3a7c5e7a9ba32c97437294c0aed53cca0d0238262f8cff391a51c0b068dc0c6a8b0513a1d9fa2570aec0e4160f58f376ba2abc84b5932b5850f2a1a3ebd5d904ff05c4108ac12cb46194085a2eb22fdcb904aa96a9057053946ac43baab000a755d3bd941c83e1707dab3e6abf7f35185b48ef009c64344076fcff44de02aacfe18e6f0c88329ab2740f2faee62dc68c11779048174738727af0a7443a8c55fdb98e5f8d801353c829853a771ec9c0c01e3e1a113d209a950864ae8b5e1197191f2d14ca6bdcca03034bcce50a41e27f1bd22e135d581bae968f96881277fbf0caf28c39607c7130a58b4665825886244bb7bd4026cc1bc98eb43f91f4d9cf67eae74bc6238398070b61eabcc4f43289f21404ab41af9ffd33a761c4e73cf70a711f3e31c9603d391e48e3b791408211c4582dd4e30f22f3f7f80f9bf02f5050eb2bf509f474d6aa8fec7f50eb8b91172fe667dfe6bfe4fd74b0676e859bdeff91fa8b171504d173e4b493290062302410bb1cfc463bd656066bdc9283c5c6ef61cedfdd1dd4dc968a95039ca77f8d6ab14c7265b832eab4d541e3867df2250be6bf879f37488bb6c8824d4dabfe3d2a49067295b4f5cee4fc841d3c37b4bd1515ce69007a01ecd24153e2d49178b99182f08f1c10596da8d31ddede8273fd67d102b8dd984a41f209110b237624c3911a008b6a235f92505d607c97811ddf2e2099e40a5ffbb6e7f1e7da5f8751974517eae78eed3a676c12fdcece482bbf96e6e1d02dd4a1b1974a8820b572b6799b2df02e466993e51173d369519de5a3d8695039b39789844e2d74cc34f6379d75c8e0f2d55f06f210f5514cbeec0a59cae3b6b288c2b3118ef205520515beade053f79e75a32ec64c420c874ce4a419ec58b6dcaf27c0a9759e5492717841a3533dbd10bffcfaa1c7cee7301e95dd7080e7e5b10163405e877bb9f02366a892e1e9e023b01df294a12050e94013b8d59616a011dea8cf3be3cde719d55d86278b94bf7dfdd855a758d6e976083dbe121d51c2b6204304152c36158fe1c8cd82352b7b5169e3d566ba0fd21e6a07a3da36b8148dce9827331108d79b540fb449407f4b66267c81b14389d4c3b549b955a6a7c7b5262a84c4b2c5d81217a74cec1212a549c888e026711a0724ac76f1628f1c32245bf6033bd00549457be065be32e08530cc8750eec3c2d53e0bc147015c76fe2daae2123447c58cc94093797f6efe746e126f3b015140eed2cd6446ea945ea98e9b14886fbe503483615f099e1a8da059700b804d4fb02d6b5230c383f7ea1d150776c3f18385fc2a8171b2680cfa9696634e8d163222cc21eb1cb4477614406c91ac11d02739aac5655728f54e419564da0a348074f53951e74856a9ba74cdb5d37fe02dffd4495afdacdefc7de8bd01a57b656f02ec7d94b54cd9aca7166a055e09355bf88031ff8ab26dd30c441f744ea92ae677150ed18862c532d948f71760cdd0f535a8fc576cb9388fa128d5fcbcc3aec44c8ec6b4059d482cc0cab0fe6e05807d11c28a0c22c43ce06f45b7dfe503a04515e07441d4cdfb3f79de8ddde60a32f625d72fee3d2728620b98282dd75941b24d7de572f426cb693cbcdd39a4aa188c92a3c260aa02dc2c4a43ccbe489220760285862210205772c8d6264163bab0c8e8b3807e65c94d8bd91957ab8c00490a0f034bad308461cd3aca9fe95d3397abf1a1904534889a9f039a592a78b7f2738e5b04a47a3a4295fe9de883ecd9c800ef7f40190ca08a0dc811cc62863158b25ddbc9b592cd33b43e107a30e24ab403911dba91a9efef38d5406d024d8c523b507a7d379e883bef602ca580b5e474ab93eac40a828d97caa46e00e5a19885893c2f6769930f0319d3cc0a7cd1c3348ae31ea5adff1bcb3a6a5250af102ef82a0ef5ea490dd94fd029d6fbbff60d3deb6d89c62a705f6baeaa0ad07dad9ff64765cc01943d0a3cae501eff81bed3f0a216746708f16c9e938cb0f1ccc7b434340dc6a51b5551d80add0379f0eecb170b7e621ede648878d69542db4210acd47076b61867af36859207a2a577c1c86d801ec0dfc59709756d8d30a474d0d2c381ddad0634509c72aa048d1cf42d4073d5f44e888465b2c1e9174b98b7880d897bcb69f308b2b8a7b1263157370157315d61c33a6633371303d5748ac71d38899088191158b536b457895229f9ca4d57591700e24849eef88463fe182151099fd055a534783e028b3bbb2b3ceb782088fe204424582a466f9cb54ccd1bfe3570a1685f7d950f0f5d5f007df30f190fdb8b49bb10ee49ff93273d7ce0a831df928895c14c0dbd762b9cfaa3bab295eb83cfc72f401f280e5574c5f8a8b07f01fb66d27621af949ddd66c2fea2ab74f66b90f10894cc63af1b478c93e7a75178e31744544e5dd979f8e528396b83f196803cec8e2d3b88fe865a52e85e85c25e626b776df9e3a1e554d62affb97f1900cc2aefa2674485bf9bd1b8d4603716bba413ae86144249c4fd20439aac1672d7e82fe4abffac8f1456b7f6548e798821cdc78c32c2504a9c53720b78eba4b5736258822c7f53a4023fa37cc1c49131b00261425ffc2dee815e8f47c3ebe3586879a0d0d9b7a151fac647d61008ca03d0cf913de51f3634e42299b8df5d7c8c7d5f54c9f12617faf56e1e9ff3dac8896a6a0745435802a8b0df44ecf426532a18715ece58b7f6f186193885f5efc8f4b17fc7d7191d99dde996f65851adad9d7aa18c8a8f0530dc6a3514615a9400817797dd32cd7f13d96f37e6c2b601bd572946271cbdf4fe3ccb2f48574c2ecccd203254ad019b26aea4a345cde88b0e1a32927553f36acfa2c17fce4f0bca688115ee64590e77c0518125f3ad0fc2c7a05d2b53169897d4dcbef13aa6d3022455f2bb4b5f1ca7794e85f3a6c41c588076015e06bfa5ccca67d2c0f0dfd6f3eb8f0ff4b2ffefbe2e5ff5d7af1cf172dfc7f79756d5ad7f32aace18d2c855d6d5f9098b0ca3d3a217f08aa7345c55344e95c1c6d68e646d4c7dd669b2b72978fbb0ced5d247a6129787150ce4e7826197371a52fc79774902a0ece11f3eb14241e77d6ef16e68bb8d510a0479ce66ad6d1587bb482d332404285782e4024406656c3e23cf61a5705a2ba71c7400a882e489de211e4a620d0bf3755787af02122977c8bddf08f3422820cea2422060a2a26e59a22c2387f15e1950587451c1b705dc4c17cd7c648b801355143a35562af5284eb1a66a4d8f3dcae18d7ea5b3afd73837053931587c2436a844bcfba0fe3826fad14ff2b0131b3adf1250e29eb752d3a4354c73236c83578cbcdee8bd0f2b6d631c813a5bc6d4a893ebb8d4dcdd96f1c9d25cc56cc975c09b66ebf60f268eb5e1ae5374bd8144446916698a18b02b2e50a09c3d883bd2bd291c57ccf53d73ace2f670d59212468193c55bb3cbc69b91a6b69041b581ffe3aaecf32e8380aa3a03026107ce00e1c68d11bab80a65192cafee231095a45604c12146ba732e91e2bab10f8b1c48e7cf0e97ef00100debb20aa302f65fb1538fc33e1a824ccf9cd34ba33cbf80133be4142500c832a225201e8ca681c94696fa4269f82783cb1eaba719134e1c60907469665f17c61f1b508d88b6511fc648ed1fd428b78755bf21ad6ae963d9807e640671b6e2712a269b3e09c5bb4216ab644a88a3745c89c3d62d2f3f0b7184e6414778ade629fa7bbf94717376ce80592e61863c4e8c5161c91d4366c04614013632103c2e561547a98b15a93722f580d1ec27495d92c0f546aa64424003a0462045e865dde6c60fa7c46a79d488d2096a985048e7e9cbc46bae37af50149b4d395be8e12826b2684a30a927221cf63e57840f91d3ede6502ea606662acbb3b054fb3194c84d902ca862fc6489a970502c3a40c040d99f1dc53dd4efc98acf072e6c89032103a66840f50a5620f6cc6713e60384d24eca8021dc7d6a5e1423688dc63e1b807330ed8c36e0705d6bd11f9182acb0d48d1756535accdda41d033bec323b3642ee6422880016d21de98a557530a04fd109ba2b8fbfb42ab9ccf7e24e6ddb0d8e69514d4d8801926b0260b5be93439893282e2e521d34e1ab6a52d5dd43ef8413175717283a501f6b6bf23dc1beb41e7056c79bbfc61d16f972b4eec446a8d06723568995786aebddcd2cbe4502c5439dacd0b3f5ae80c01a0477f1bc92f330a44f61e49f2ec0c01214aecb8b0b7eaf38edaa3c183b2502900cd4e87774308e1ac4700c9f11ef07a38b70b9544d8c0462b6ee92bcfe646ff81ecbf5b2a76b5a05391628e45e03e08b9aa06d48b882245c71a129611223a55e4b286e9cc8c4a2a32a4c5642288670090122a20e3ca6a62963a79855bd54aed227425a5a48e8dab23b4b2d3093d0af35801145f01dbf0dde0577d1fff4f76d36ab685243858418b137606f3c1453b20efbbfbcea187d6871278b201cd82e35827530a628e604e3893936dcad8de6d09447dbbb3d1923332e554e94388da8165bbc52fa2816a735fa935f82814ec06448b9fbb4d8a4e2fddbee334286adf44b37f1b19dc85c82423040aeed1e0a8e2220bf2dbdd224d3ec4ec90bcc3c7fe7ff8004540014012c79e09f5de707856b88c8d150ce3955b32c062215fad1410085f01105a81b15700a15cf4025cdc046e2144fb0c51205e15a903ff5170449c0428ff631027228f3a0d15476720e7001a86ca8038c775a4bb03e2c66215d5a16c02f467bc5bef9c752344dbf7202e7bd0caa3974a126f803df88dac247befbdb7dc5bee24a50ce90c170d9d0c598d3f77240d2fed220b88f67ac303e78eb8b0a03747447bd84d1635ed7fe550d37e498946a8c9bba0fde51691687f51d31e5d47b8e1156239a984e33a4eb2f6c16cff661b62d90f432c6badd8327739c9fe662d575f5e5e362baae7e26d568ce3c98fa0cc898deee79c73d61eabe97d87b7977ccb20a6e74bbb431dbca1d19ea53c29dc0dae6ecc4fdae7e3995f58c33c5a42d3c2ef91bd96c7d68d15ed57f24c4c5869f65aca83fea0100ada5093f82efa6d63e00d1d411b0c12a1a3877e8989e324ff0c7b375725c4ca7288456345ee0c3bb1bb1dd8bda4ba97944e85892fa90ca5eb872f29ed2c99b77defbb1d99dee06a7f1fbc1d26c21b2ca2fd53b0bf50f0de60db8e9eefbd0441fbcb3ab29406bd27e9c8061b2d8faca18836809647d68002575ef8e93cef5f4228c95f7a337b51b8d9fb73d255545a7e6a5939c9bfe58a6656698558e2bdf75e70e579f79360f8dd9c6138e79c1304cacc2fa5b86de33e04caccda6d5b2ed5eeb7fa1e502614827fd0b1e61aed7f41199ce26aaef82f90091a93d1d0d1535244491821a0cdf71204572196f66f59591b7ecbca5b56fbfd513a96611ac3ede0828f5374f41b73928fae1b2fe17c3c252ce85862d1d14b3812c67f824a8c4a469d2aaef7121c5d746482c6946e9c147bd1156d8c92fcc5e76aaef8a51b6f7e4cfbcf5a3fabf6e73f93875153136aea6aed2a11a8ee67672b9edfd5593b8b493ba4181d6bf713d7976012a42ef237e9f033c90fa323a6a1264c4347ff1b9bfa8377e9b55d678fae1d994b6f2c443b0ea21d03d18e7f68ff67424f958553d434318df6dfd1de44fbffabb2fc04ae3ce7396d2ab8f2d3e8bae00a1c95703f2aa1a377e36b64a2fdeb081b5d748402f597d4cb2773f40440003cd227a9090499e062b43cba9ce4af81e1cedfa34bfbcb94846919bd58114245f41f3c84cb0b0032f0733a5964c7d94dab2c610c03cc7050f80c685a174217b6d0879dd41ab4888e99964772aea04574e462a4936810cf33c29dffc53c3e9d26f1a4cb7e98aef33d29e9f6a3e607906ecbd8125ccc0b9c649b78648488b138231c9c8f18c732064557fd4225c85611a2ab0cbd45b0244474b55148aed5fd16c13496d64656efa93f3afea188bbc9d85e88602aa3edc5b66d23aee5d308105674e45aad2bd2330f570631bdb90eae667fc33ab2ff2daec4151d451b213f6e57f316573522166db028048bab27dc2d8289527ef452a768284fca949414152cb527a3a2e22a2a2a2a2a1889ae4a8c88392b3ad603dc5f42c7aa613afafa2ba2f744f8755277466ff5bd894747cc1795fc8c9e58c4828e55891657228b8e75f4594a8f30d5135c82b3f65e91e89f6b8d5c2b860c9d5f92a5f48b9aa6d613bf05654459c6d5b42c1573c5dcf2d67e866b6d98837937777346747dcf0957e5a712adb9ce119a76970ade335ae5358d07a7ed6b9f82652945c7ed1bbd28a546af692fc117a3edc55750462ba5740947bfc5259a0943fb17784f3d4b283a6e2ff07c6db4fd6884251d2b28a3927f683ac674fd11071371357747d64ac152b334e1763f74fd8e86dbd1959504464d53734c74e596e8ba3925ba4e2dae9c5447798beebddab3b62bee7c2baefc2412eb6b1e91fbe2391c3a56991799c3c256991d1b876488e37824256d3b85c83bec0e8c8e395e862b82adfe10c5cd14ba8a383bd05565a562b3c537e1dff24d64bff25ccb4f52cc982b46dae3f06f791cd9af64bff23efc5b7e733a9c8a73f9c9c7ca675f9f6b5d7163e5b3f7d1f2fe9bd319697909ff96c7807f4bc640f62bf96a77c85a57e76e712582655f83999895af2f8abd7f0d66625abebef6d3487b2cdaf8a9e5f3df68f9fcdae7dce30a2ddf58799c7b64bf92473dfc5b5a7e26e6edf674acbf824727d56fc14cb8ffe24a92eaab24a9fe8bac92d275083051ccae46da96afd8be077ecf634b6bbfe596f73c93a3b5bc37cf8a8bbfe5b708266e2225560525826958b4a3eb7b55dc2daec41535c913981234f85bdeaefc94e591f643bc8fff95af79a4e5d112fef971643f44f6d1f2d9e7ece38a1b2d59467d1f387b8ed13c9bfb797423fb95cf7e255bdbea91e5118eec5bbe25fbf09f89f16c5b4eaa7f4f404fdfb33959b63956c7b17539898636e16a5c6a6e6f754e30f7838ef5b91a507dadce07e10d45434f9243618e868e3575434dda57118c92ea875034ccddd07174c37b7036d9e618a1cd4d9b535b995f4b676e9a11d0d7a0a2d7a470ad7d91c8be0af6bc21778b9c8d9f4637b2f72c7333375656de5bc1a28d93aaf62b1858f15ff9d1e81dbcd1f2def25e0bb64e1ab5dc6879cf3db26ff9172f5e03b51cac62dc492fdef3b8cf6ff867b987124eaacf81431ee0a4fade12ee16c1a83b96311b7ef11ab62f5eb810ffe26b780b963142e0fd228f2a8884f633e7d8f2e8b52c82d1514a98d1d7a031143482e5475fc357b08c61196551081d5930a3b52c12a11e95924e31dc31d0db0a6773434d2a7e7a962aebf794b09fa5ab8dac3955ca8b2b3963fbcab58c60d15bb6789fbc0a965a84b78e93e754d494751d59951fd454adad3a0b401cf96a5454f555562a42eaab10a1a7104bb4c3d2f555507eca62e6e65cd01f2260111147c4829a641a6a788a887716c2db1601e1cca56bde56d3fa56c7bab81fd4147e7d0e454d617d9b2363b81a8e46d756d65fde1667a5abb5d1c070b7084699e81a6b65a140d46ca895b802658148826d05e20be28a9af6b336a7baa1a62d82e150d3e65aa210df82de2211b1886721ae3e355afb226ec8ea60db6a7bba84bbbdd6baf3b7b6bd65c4a7466bd9be5da2b7f71c6fb90b0f7afb4db5ad369b8d0835c998debe7b75b02ed6ed50d34607bd7d88c30a734224d4b4d5416fffd9fe53a35f70b3b5bcec06f72fd01a485b278480d9327869ed05375ac7d6d2db6b787b2f6d7fb328940d340feda796201222ad6529616c96d9aec04f38fcb3ec837bff96e31538a9be08e627eeeb3f8b539d34610227d5e7b207c026e8585f8bfb026aaaba7e8f970d3515a127eea6fea4a12699c51f509b454f146b06f506103ad07b12d13566cf94ae6f3515d44b25454d5bc2443051136a926ad0f5452ebd453b2a34baa6416f965afdebff8562ce6456d76156092361646662f544c19547a2a064d3f2c814b2d0f43ff9f48af977f2e10e381927675811179e644d91447bf42471133787fc1905133226cba92c26f31d31b467273c7a48f67b466ff9543a4a67583a69824ebc13577b967408d40feedcb4971ee843b45a9be05f654054f0343c12b2a5e16eafa5672b4365b97e1af65cbb7e118de1a7143b6c818af19fd33512cdb26cabbf5971fd5b41b9fca4a9be9fb4771add8492a6c39e70f7e8668445f737454638d4d4bd7f52ced066644f533a9b78ab5ab6bd67efbf6d38b3df673f3f69efcff977a1483d9f4fc3a32294344737748c428602ada8c97f82703abd4142403620221aa405499a0fd2c227290d79289f17e4ca0dc29942d3cf50196a74a3e98f84d0718a231b6aca7e8e6ede57749c73cfe86c6be90c537d412358f4e846c2ccff7c707736bad1f3a5572321f474512854142111eed6d23b43793edf9686bbb796de201c99518a8ed33dda04275e68f70cc29130a00d169da13e1fdc918a9a36880aa3140555419e1ce6209cd10f3d47357aead85a7b04444f3f48d27c10156a6603989f329424d1409e32fae1a06a9be5329760e899ca21b20ada813784fa84fa044f084edfb34ad080011efdbe7bd939a75de8e81b8e0025f9cae538ffa969bf4067ef997541787b6aeb35a8031e906b741d1797f3ef700e4abdba79549d437bbba77f33fb0eefd7dd775d2723bbbdbd7db79b9651d2c4d2dbc12d1244c790ad7a647a1bae6449194fe9df2c6f91744ae97c79d26583305de77f969a3c1510bc1fdcfa1e0ccb7435821ceb6feda57252fdad6df1f95a3babbd660469d29c20c7faf53555fd4fd670c46c574e08bfbe6693ed40d7af55c3011dc9ad597d8e899c0f661c0da70b377b0d47d7d7b0a0e1c8191f5d5fc342cea0bae6ad7541d7306867d0f5a54bcd39409896436c59b52b9d79ddeb6eabb32880a6c7296a5b1cfe7647a6b7d5b2173acbb2ccd6e8ec3520992644676fb31490cc776613bdb320983ecd9a109aba217b9b52e92c0392d5d0317ba1331c5cc9d25aa67d26599af69aa6699a6635ce4ee96514880d3c5efda49cc16da1072bbdad9693c65cd140cb2d939a55c4d564c4d0f5a5b5f76a354ecabed6aad9bc695aad73e5a72c8856937d164494e568e195794c676f577b28e2fa7b41b892a57d6e19ef9e5d915f797aea8528d270055d874ccbb28c8efeb6d66db3599669d96bcd928e5956069d3a96628c0e909180b144272801b944478092e803363a7d523178d265c7d0d4884707590883cd4fc7ee4736051be4b0fd1097c0c51262437aa069e6a045149f144cb8020d329a192464e1862958618a170ef2b085113ce408c20d5686c10a37d882c6608292ec3ffbb11443105cb84114b3da209abfd601ac357ff78ab5532f608cd3e0897e8ce172af9fb27c82ecb7e85e8d0b5bf3cd51e42934957147fd26a8c2dd52e7656b28f5237859f65ae22d12599ba59db7ce09880f5a8f959af766a3e76f2b3f8d6e000000795bbd88efe13da3bd2ab5048550f7be70a9f5134bf671457d1fd9b3bcf5b1f2a3b7d9b3fc8dace61b2b3fca3528f71573d8f3c2ad6ff1ad58fc0ecfe80ddf4cea62c2105fc4d1a2b8ad2edd80259b95cc6fbc173de0d95c4d091dc1bc44ab7cd25f8a286d6346cb1c62bda442ac5af1494a67295f11f74b0165748ed0b44bfba7804a7c2dbbc3a138948dd19a32fa6c15f72bae5d09e5b57c757ecd3b32cd3273881532424f77fe0ad5f3b9d74e22cb55409939ba3a1cd76644cf0d899ecf6d2c3df1769d5b0447cb23456c34115a1e89c28e1ed5204fe0ca49e01848a91c5214ac3fe0e81368e309f1d9175fa76d15376b4f08cec8dd36c6699b4b36ab0a0306f85ef619ee82bdac2db262e8f8e988cc4f10787ff0c64f48bc3fc8f25304de25f0fe21ca4f1378ff70e5a724de3f64f94989f70f75fcb4c4fb7b507e62e2fd3d2b3f51e0fd3d2c3fdd787f8f8e9f2af0fe17e5271cef7f577eb2c0fb5f969f9af8151670b56500e0b7cc698dbfa58bf45bbe88f82d61323653b36600bfa70ac6ef6913e3f7bc21c0ef895380df33c700bf67eb00bfa70b01bfe7cbf47bc24ebf674cc66f9a2ae237ad99f19baa36b549c06f7a437116f09be6d01675d157cc6f0aa3314fc9fcf61a237ebbcac66fb779c00657384d60b700761c985600d31b9852005326f0d459024f25f04c02cf09600f3869be047004f03b693e121038023bcb49f31f80a5936c6023b074920c964e72006e00964e8ac1d2491a4b27d5c0f319307f01583a4901583a290198c68c22649cb0f4f9262c9d8480f907c0d24906c0d24905c0d24904c0d24931b074120c2c9d34002c9d04336b664a3a89082c9d441ab1f40060e92400cc1f61e92b78ca979415f34b6a748df625b52d1e5d12c688fdcceadd7dadb5d65a6bf6566f5ad3557bd9d7e14c7bf5ebb06b4ffbbacf5a2e1ca27dcd79e137358b283afab51f2ddf13e2eb5e5708d088177adad0d15dc8d6f2d3e8c6ca088736aadad672d2fc999829e6d01109b8c291bde65db8db6f4011454dd5af5f2615e7d2619ab6df6016985c4133c18206a5a0fd375805edbf412be8ee61459a30c1c23e37834fd8e0c96fab2b4ebd426559261386ffc8076d61b6c984e1cffdc5990f827da17c926d8cda1d3aa2381acca53ccc4dc1e540723b9030fe1fccf180fbc1fc5812c69feb38ce1249d161e9040165282dd81a96ce1b38dba97cc1bda0f7a7b7c8e2a2e881feb2d05f163de06ed042937212a256dc5a6b45629b83ee5e822b2819356fcbcb36610223d1d0d149284a29a986f46384c98c4d98c89ad5ea74561bdaaf416d1e5f1266881933ea88298f02822dabd9b2fad773339863fd0f1785f6f7e4bd92b7a843efcf01a138901c157286cafb73357206489cf1ddf7b78098b60b39e3e4fded20a4a93e4b0f74de201dfacddd40c3e8680729e2b1091d77364caa812401a1a3bf8834a5872899f4838ecee1215afe1af489abb707e127447afb13fc844877fffd8a104ba81577088ee3b8172fe4a8e32e3bec10788f3af5b590a37fce38ef5215faf32ed98c5d8c81903458765ee4510f93460bea0f8090333edf92f7d8447b345a68260cee8af21ef9c004256fd1490e65951c152d5876268d47826aa199343ec984e10f62d951c99b7e2d342a5f9030fe2d2a6a7a1d3afabbd47ccb453561f8db928d265285b640543269066317730c8420b4ff070809f3070903e3cfe15107ec6e38ea61c218e92061eca028cde36aefab8d9f5a529484434d2daa2b4853cb10e4e82da996158bc9a4f1482c13ed6f6193c6b7260c7f7fdb64d2b0ff929a305c644d186e63b6c9cdb124f7debfd65a6b5f82f7dab74f88b4f842586b5f0850c6862fa949e35d9346fd49e3958c6ba0220bfcb760760962b3cb6ac2f0ff9bb3943040547c18d530b2617c8384f11fb918c75790510fab910edadf0edae716eeb6b12f0b697211f2b186d8d84bea075c0f240d17222d3798345c6eb81d703c90333e7f32051785a4e15264c2d8e1507246f8311bf3b4103a64092e442611edef7253c4e50a37a05cc425c97471a97c392e415693864b4e106d7fa5fda91577bbe8b874d8250e72f43fc12e739030fea03fc4b46f171d9797f6175d98b818d92e80d02e5c68ff1ded1f66232e7bc8291d419a5c9094567286fd31c83dba6c2c8f7d98a66d0f92864b122ee40ccffb8f7a90333eef3fd661d270714d184b463ac819defb8f5b481a2e4a260cd7e48cf041495a72de9edea32be4a223674ced0df1b5a85a86f048bef5491ec9b73e89f619e3a2d3833bf576d1e99cd0f08ca14f4127e62068aee0eebb20f9dedf650cdf875c92a8bcbf8b0bf4fe2e4a4e5e2509c8a5fde495687f193a122a43880d2138a84ca1fd55be2067d40d87dc30436b9030fe1e1c528384f11771e80c32440609e30fe2504bc2f88738942361fc2f0e19a163a87b91e5d9846cecbd0ebfd01e856b9f9aba2ec9dd2f29fba66e5aec2b3aba8deede869a5ecc3c44fbefffadad757a59540dae58377ca9a1a6ed75f8a5e68a6b9f6aaa2d384fefd2644de2cfff644bcee8f4fc16cf4a83425c44b47ba08ca785fb1dc75d51aca2586b1662756fffe22d7231ba80ecbde65896475716ae4a88e5a410a4e28631f6c2cfe2675046ec6aad5d68b9ae33c2c3c29d5fbfc33bb21012ed6fb18e2c158adfdff7a69c93babb6759566bad93ce0cb2382bae13eefe97dede93526e73862d2b272159515375ed2ff34b2a0cc330ac3547d7fa12ab9548e5f0d49ec812594b7031e22eb1741ab6e8389a857bbf0399903160ced7fabe24746c812092222e8864ce09220193845f11170c43171d93804a42d0c6d4608b8e9e33411b54832c0903da68ffaed6da6550081d27a8f7a8f392dabab8d57f7cd9d8f6a06759ad55d3344ddbb66ddbacdd3eaff11a97ebf58ac5581c28a391e17258ea7b6b4e45528d8036a6aeac51270d5c6b105afc8ab8dc8be24bbb0a136e89f617411b53ab38e1ee97d4a8b3c72df40807d80836a179172e1637fb57ca88177acbffa2a32bf62ed5dda36bd4a1a651c9a8537f748d3ad434b57f3d7531fe07e8b44a4bc52567a841cee8b28a8eff85a97c3eef0a37a37ac43d89a6fb7db2bffa76c77eb1588c03d0d16368e92f120ede3585f6cfdbcb49a38e2eeff7a807edbfc73e681ffda0fdf73808ed241aa8fc26d980f48384fa4d9ac1980709c3ffc3a31de4e8ffc1e31cde20496e90306b98231dc5bc595ec9a411663961bc6bd2d8834b7bae83f657322aa1a66a848e2ea9293632d9b726a94aa6b63b77475659ad12eb753e0effaa01a2fa38bccebf6a80a86a80a83c2bdc2db2422909e31f6285422196addc66bb3c447b0fb4313d476f91b50417a36591e524bfbf451618ee1e5d77c680394ef2ea65b87b74c9192838f4092e5728151975b6b149f87b8c691f05e1fd2645a1fde534797e93a4f84a389a7403eda41a68679168a07ddc71313261f87f72462ef6b887d24ac2f8bb5ca12444e35053e90872f425e84fde2320fa30b99030fc413cea6071bc8376185be65c5893c6b8076964d218eb9033698c5b4818fe7cd0fe1d8b898b11ed631ca8de2e393aefb031757d1bae41f7075972c6ca4ff3379885e67e835bd00e1ad1bec11ced2012b0a5c124da419712eddf224445b38c883976c6703fb4bfdfbca4a86957d60f6a92643032ba32ade30594b1dc77dc0b68636acec6c42ab5e85d2f0bdf411907656ee87d28be57c5cf40191d1ed3e167a04cc8e5dd8362e156f139ac1571efd75a6bad5cad95abf57afe7e0d5a411b538720556955eebd669596cb10cb2ba6fae25189e7053322d3a112403cf50603fdb91c2d27befcf05e6ac2fc924ac2a5a67a1a9550927f45c2e6957ee0a8048fae2edcadd2aa5e35ee466f120a7bf0c88415cb19c2f2211eb2128a2a49a829dcb85a396dcb342b6e7d6fa359b8f5471d1009d7f7bd6d87fbd0954a18519c1246fc09ca5c506a959678f39ed1584a1831abb4549294aa90a697941cfdfd050744b4976c582f3fadbcff28350b9e2156481be2db87fea884b1af8132dc4fcd82650c87dac025b898954cbd703d3b250deb5328f4f7f62b2873f2de06fa1a34d32aad19fdbd3f084b0963555a49a8e9cb3015fc4ce8e836ffab7ef7fb5fd54867a4c5a63ef7ce715d884547cec6bca565d522848edeb26a11d2623344375bba50ce0feea893a1e15a2d72293fbda424c9ff5f92e49f63a466da68150ff10d310428f3f92578bec3db1bc2f3f988e277dd77c1cb598eb3f6b99918ce7220ce6e271b6755329dbbffa54321961ceed49ee779d25e5bb9bad5b0d6393fdcb849a7e72bde3141b00848e4f5e1bded785e829ff81cb70019b33f8ca23d0aca8c9658f9ec71ac7c96718c7e548246fb25587ee571b0fc4ad670acfc28fbc87e850cd75d4a70f5849be117a968098ae8e855b89c977db21b75dde81a9590522420e392b1c9a84342917e7435c4b2b13a6c748875150f158758d8c6c2af4197bce8e8e0a8332ad1a14347afb5d6dad55abb5abbb75d1e958c4b42ece1dcf95470812bd00624424df72567c851677cddc8193821163571359cdb249478dff39ecf7571710165b8ce7e87822ca5a70eefe52be2da7fe1fe0594e17e0975ce5167d491ef85a3301b4175d8bd8d5153d5fe7627a6fd399b22f414b0cfe71d7fb05786eb284dc59018fa1a7e71285f506bb4a2f2f541485a5e7c7d508e9c41bfb27cf8a0239206cbbff493e8c1ed816995a758d32f549e7e8b4a4b9671555af0d4135479ea79a952513c2f7acfd74cabac8c3c2ff2885c8fb0bf5eb47828a6bac5f32c1e0fc5538ff010945f41791594ec2f8f877aaac78389b04786ebf98b4ffe8232a325521ee56fa464e924942c9d74c3759ce479e9a44f28f48eb7bb3c2f5c7fcf53bc7bd89ce03d412f417aff04cf680abaffb95fc3c5ebf91ad483b90ff10669a1eb839fc703d39593a0db4f7f20989643f88c983d81051a3a66a90c25613ce624173a523ad2bf9a521b4d9f65a5e9ab9c54df5d7ecafeb3a6691a8b8a3a2887bbad6a454d6066e327fbbd147f85c5b2f193c8e644c4e2529745951273920865e320d087d906a42bb847f62c3fca3d469f3d0beeb1f22c8f62995e119725081da915a176552c8d9230f44fb088068b527404c5ac4d8ab501f570b5e79e5626660c8b122c29313fb13cd5544ea2db83607eca9e3e28e6a7d1d3ef533e28797faafaf45379583c2f4ae9abda22d416d55c55b642720dea58a5e96736b1abca50aff38e695f333a4eed45f141de8abf96c3f3363ca0afb87afe7bf760a93fd0cf150adaf0d44cb5f73da36bd6ae96f7cc0946625249b32c038d008fa87805594a5b1616f03f0cd647a97f12aa7fe26df5ebc9d7f7e4adf2da6ba00450be7aee8bde9377ca6b99459573aca0e61ca0233c497c5ff3e8f3f53748c323edb517f1e8535fd3f0e7b787c0fd6f029f0c7aaebee6f9effb092651f348fcfada8bff79cf7f782466235efbef3f1ade32f00f6ff1bb074c7d5ffb308744b85ad65193b8ffc939ee7f3947e83d3ab2d4d6f2833210097fcf3b7844284b1599333ad6bc53320fd727af3d052570f228156f2874fd4caffb3ce27715f49ff79c689f9cd1d1f3202dba4763595113cbaa7ecd9b876b96156651d5df2caafa3d0893df7bfc3ff04f4e5ec4159401df5bf184bfa7fe84de93a08d4fbeefc1a05f0989e079f1a9c7834ffe137a3e19fced3d39cc39c0ff8e00f39ea9e1a113115309703a04b1e741a0ffe022dc2ca541ffd957a5e9dfeffe839f98df4f10093fc2f3dfe7f3f9edf1783c1fbcef7bfb7b16cce8cf7f06a13d9e0761700fd7f3fb833dfb85f8133f586a70df0d85fe0601eee16e17c0f4defee6ed9b1afc300b5e2c2a6ad2324b103b9f98dafdb78c9a5240ad9643b2ccf3af4250cc199a095142515a9262c2a0259a12aa9472c28cf47791ba20ed906244a09c8a5008977aee721d7ada945012fd252f26b0edb11dfa326f1e9ccb582aa5b2cd88f679f55202b20400010204088b530b2ba54a5234e0ca236cb8221cedcf424d99f6236c38d12ef43f8ae94f3ce9d770cfaed6fed131c6662d9a84942c0b59da33bc33ed7bfbaf6e5fe6413d5b330faa3f9bb3b754a37cb681487c8f82b75a5150befe97754fda9934ec77bfc756fdaca6655217dcdb27c5483b9966b5ec79db5bccad78bcaf7867fafb88a0f9de9e90ba9834bcb720940f2594c449de54d78f0894b62828d9c37bea8af21be5259862b5e77d464d27ef652fc7f7d5fe4ec948d4cf2a26753161d83cf27e7bcde3a94fb2f56dae9b0894d69ee35250de4bc17bea4cf378ea6f29daa66929db77b67eca739ae7439ce9d8eaa76c37dff7fdf73d45d9fe036dd8ec6b7808877f82c10761efc50c67daf65aa679720efbdf6b4f3f52179346fdcf5b3fd1ffe44c7bbfadcd2b6111bc9c237bed6db55fdeb36652025f2675a1c35da3edeb7b1d4cfb9afde691ed31477b3924c2d5f13dbed8f3e4edcb5907d3fe2188333a7e79eba84fea427b2f93ba00653a0ebb8b8e52d356931fb2b41c02744f2ef19733d1327bcf43a99dd9f3c2e5de5d3a483152177af0a4cba62c3f753f1333f1fc1bfeb3c7155bbe61b7fff4186d79c78df9d713be134cc8981ef7c59f36f7b862e39878900218503133f8110e1a618082166c86c2beff8c065db13de908b78693302b067e1c62194e8a91ac3c5d4ea2b2351363f14cccf71dee7ec34f4c245c6f28fb5ceed1c3033b9890314e3021633894854d1927a8dee66ad680aaaefb1a0e628f5a3cb7b7b8fb0f6ff989a9bf07b113547f3ff164813b6eccef728f1edd77794e26640ccd7c9a9927cebc91315826c6ea168e69be34ad79b6b24c595a0e018536e3da76c4f33cb60a5b85ada27b5d7123fb6a9d84678c0465762e7da773524aa518ee18c8983be9a4a246bb94149471c2c3026c109ac71469fa1ee5baae62cf38cb596bedbfe6bffc0548fdd733a124ff9754aad27f45e1bea4449cb5d7ab66bb6e7bee9de3b6a79aeaad56ce43466cd7d95ac5504b441262812110046d57d760c42ed94246c01b42a26343211bdbac9853df3b314764714f35d771e31ba63c8d2e36481d07ed5f5f527e028550d0d5b2f25cb2cbb6b8bbb2fca4dde166afc9b0f6f59252a23e005cd9f99272597baf48f43f8e3162c848c3dd2d2bf16e968b7172ce396d4c2549cb8dfd8ab836c5a5b4db1dbb43c7c9d1845800307500a68dd6228492bc8588f69b96151aeed87a498dae908b8e3eba4a38a2e7f3fea5221ee84b4f9034c2bf2a1f2c7ae2cf07dff3401930cbf840f12bf800a9c52ce9abc22469d60f96d22366d791e3fc0cd3f84b12606622761d104b0913ba1af41ca2bd47fb0f761d978499db83f07636e83dba5edfa494c371dc7bdd0fda75b484a2e3accfbdcd968edc2864c4253ac3dddb4e92309cd382ab2dc3dbcf39c389c3d04199907e2eefe6b6bce7842b93dcfa928e936654e299e1d66f62bf0fc3bb736312e6bf6dfad7025e91ebf207fc2d83e0572e43e9ee39ec95e176285defc683d33797a4983036141d517ea2b9c2f33cac0ef9df1d6a023d0f7b63339eb8da7bd1df3f481adebb544941c19eaf58d3f541ef7da00c0814bee64ce8187e9592157ef8db5214ec4ce418c24f58edc9fe9263f82b98c6619200e1d3000a54ccca7beec1fe3ac14f580dcabe448ee17b1908fb120913be17071dbe6f216184efd5101e92b231d9a3647f3929fc95f03dcd75244cf81e19ae685fa4a0cc7dcfbbaebbc1c2d2fd4c4ce7652fba6a85b0a3ceb884e5471947f6dae318b164d77152f859f617196eb86d2ecf0bb7fbf02bde3d6c74fd886ff18caef8c35dbc35a1e30c6f205ee03d2e7198b63bfb0b00761d00d8a9fdd8ca66cebe5332ea8c4c2cb678ace2fecacb98dae58a63e5599e45fa60f99515683096acfd4ade465a1ee1f09149b0892c6faeee937e12020cc139e7fcc00f6bf99ef899e06a7c5113d53eafd320667e0c8f0686bb432c0ad6514926c51d75362eee0eb1c07027fde46785cae763848e5dadb51373c4d7f26b2dddf869e5afc869d6daefa17dd6bdcd37b26c26c676795bed576c07be7b7496ecd16563d9cfcfc5227eed91c9b8e493c50f8b5df636889cc8892c5dbbdad98fed3ea28fb5723a0db93ce2ea7342e8e8d5bf88db715b586bad16dfb0db3aaeebba2a92b703c2e4b65a6bed6aad5dad5bd7d9efb00e8f81363649fed6ca1986ae031d594acfed31cfc1ed42bcbbd7e1315dbb07571d066dbab70185fcb81b0c3368b39252c687645fb71d4a721b1bc3dde06a03855092cd43b20747259f81dba41eb6b4bf922e8772244c46c3108b8e2a290933baecce75dd1755010112e4a5fa7c3e3535f7db74fc947ded66d76dad2674dd575b33babcced7660af41571bb07814099999bd08136e0446d70355199a69fefe67a95e57962b8396aad3535a914fe794fcaae76b35687a1d19e617069878e0e83d2ee495014c5acd6e498f6924e6989ee5e5293f7f1bc32d468152d8f90a189164b529450259a52ca96a428a14a342554498a526a04cad40aca54f0ee5013087abe84a2a6f0ef9768260da96f29454df7c35f29e19450252932140fae244509559222c402c317310dc30e0c0dcc0f182041567e7a6ba35f1b5ce1a0764aa8921429a5947e595153fd971f15091ddddadf76e8d8d1e8f91fad26a948b4ff7b1e929ba3fbaa91c8341d5fd404a3a630534d044a8721136aaa61f5e41c978cafd728876438285773776989f6e76a2eab7e873d9f6db11847ea62c2f009ca70ddd7ed2b11a8eeadb5dd963b5b9f646dadf6eb9ea9f5594099ea71f87e77f37e528cb43369482d1281a226f1c36fb9d14778da3dffc69c95b008d75d3aba2e24d3d55c8362151518beca4a7b88a5456909b54c68a94969473bb812537efad76f70a512571e2946ea62d2903afc152250fa65f5f2e3457cefab118a51fa99ec8f697ffb928e566e4d66cda1a38b74f6fff253965f52a3cbfbd707866118d25a7d467b60b8e16bd96b7f237bed7ecd37b22ccfc4dc2337fc0d0cbb300c6bad5df7dc57dcd5aeab350c472d425a705a70e8b8c71cbd79641bde3aeae6596bbfeb2c8ddef57950cded699ffb0ed7e7306967c2e83cfad5da755dcee8b83d972d1db7914a12bd555ef5379557cef5fc6ec9b9bbb26a4e6d79e2e86bae5daddb8d9e5ff38ddb73f444a2a7113d89e8f91e6863eac904367fa228a540f46ca2e77ce9590467e6504a95e83971f49c73aa6a76e88a0a0942519466276624674e17a594899e73ce1f3573ce15a5f446cf227a12d17302d133e59a4c5e94d2241ed3de24c93cc08c412965e96944cf39457ad29630a3a78c92a64baf21cd732a600a20795f7ad58b78e6456add58997629dc6cc3826e2c3afa86051d7d33a2fd6b50fa1b8ee3e16e8f6a6404d56e879b79f6ac3c2a8fca7329f6c06e3c969f3c2aefc64fa09a1cf719f4b38c3307bd636e5964ef46c2f814d713849e24f56c8fca9b384cc2f8bf9c74f302adb42148810801b43c5224103a5483943350dea32295f244e1a1fe10e30246074dbbd716fed26553a1e40cb4c1697b457f037b454f63afa89be9a0e858998fac4726832c06190cb22cc6f89ac76f110b9c58810a5280021d39f6094c500212240086ca5291b79d3a507d3f73a09a3f54df4f1ca8be9f37a0738aecb5eeb441f65a538aecb5660db2d79a349e4983fca5e60cf2979a51e42f355133f94b4191770c1fb9870cf2c78a41fe5830c81feb052ec83bc613798f2dc8fb79e42d6241de778713790519bc5141066f5290c11b1464f046478ebc63e43d9e20ef3741dea212e47d4930800c862b305c8120e8d5fcb654fcbe3af82dcac1efff8183df31bc1bfcb653fcbea9df221b48f17bd45e039adf9606bfef0c7e8ba240fd1e7537f33b86ee5e42f1dbfaf87d7bfc16c9e0f7c700062cf86d79b4e089dfaf3717fc1ef5f682df31f4b6e3b775e2f75dc16f910a7e7f0a7e8f28b03a7ec7c8f17bd4defe13fc1699a004e0ab3400edca19282fdf567139bd673409be06f5547efaac5635aa1515aa950e54ab1ca8563f542b1cb4ec0df2b6778abcaf2895b7e86d90f78f52e43dce1ae41de34bb12c4ddef6d220ef2b9a41dea28f22efbcc799bc63e8fda52c1479dbeb23ef2bea91b7e86590f7c720ef110679c788f9e90405dec47841de314617e43dfe1379bfa805798b2e8fbc2f0bbe98dd91b7bd4ee47d452bc85bf42ac8fbc714e43da220df9cc0567e0ac5d091778c3147dee3efbc5f7482bc45d70479df12802f7b4502c844e47015ae3eab305c85ab7015aec2dfe38ef171597baf4874f2270faaf1786a3c359e1a4f8da7c6f3a01c6bef1589fec7f10425a24494881251224afc1de304c7da7b431ffad09fc0fc443f468c71fc1789ee0dd9dc272264b361e81de24212e421f53f2a3f35f1f44357a8e327184f3f7cf929c6d30f637eba809f30f0f43d387ecac0d3f7b8fca481a7ef89f969034fffaafcc481a77f71fcd481a77f5d7ef2c0d30f3c7d51e527103c7d11c74f2178faa2cb4f2278fa62cc4f23782a1a65c81cd992ae51c2c400cc9aa95ac003e04e9c97d99a2e07bc67c266cc85d61cf19baa20f09bda20f19bde44e037c591c00f3181dfb495c4872ffda4c4e7977e5ae2378531f19bc628f0f8a59f6efc5781d085e3ffa59f2cf0db85f8ed3823c06e2302ec29faa239d4039876004f0ee099336d66ca044e928f01fc0027c9bf001e9d24bf09ec39385a3e0ef915c037b0c44bc857427e1213900012f22120ff8807c8b72183a53b60e563e46bf93530031620459f0039a30819f24fd8840069002cbf00583e01b084816ba7e303c8dbc2e47d4b798b0490f7839e88bc47d093f286a177a733e2ed6169fa01c000c0fba2f65d69fa2e785f1d71a5e9678cf116753e286769f92ff0f69596df82b7a33665e968f92a588453f0963aa16b4bd64aefd0b5636e19bbd13b745d96a61fe24d5d7a87aecde91dbabc467778539b2d6af916ef0dc336d5d152a5a50c3795e78c8e98bfd548189d93e3ad245a72860c439db0894c189b304aa90745470f8defd091863aa04cb8848e34544247da9230f2bd29a756352d73aa7561e83ac3dd1ebab69dfd0889ede7f673ce39e79c9af5dcdddddd4748e4d8b2f4e69c734eec544ffd7169ae8f4bd3f9b8b4d7c7a5c13e2e2df6716da88f6b4b816ab415a846b301d56837a01a0d0754a3b140355a8edcf5a561a09c182847438172b4142847ab01e5a0503828162a07d542b9503a38319c8ac2a9299c5a83535538273027b16cce6d895c0f7be91398bbb61a3923fb1838e3cddb88569b4a15bac6183f8afe86ae4de5a4184d8b2d46d3e26a319a16a01c4dbfc6d0cf62342d4e70347d8fd1b4b815d3184d8bbb25abe219a36911936197211d0140719a21910024bf2cd355d39ef66d5f86adf6388e0b874ced2b4bd5e938091404b4ca8a6438da3fbba9b506d1589a11edaf8156202136a60605a1a3835412c6d3da7e7b5a9dcb495db83bd4e95c3a7ef2588f2ad4f1a8421d8f2ad4f1a8421d8f4a7ba813eac8199b76ed5179543286b676e7ca3131de9233402df781275db6fc8d859eacddf276f9b49beb39e166fb9b39061d33a7a4ecb31835ef4fd31c83d29fdf04772dd35cab9aa6354195b8d152e2461399bb6c29414d5b461337e49c0ff093fcf9222963cad0f35571ee7c3181bd7efea787bbfdf5f2d38c91d90d1d533fe848e7d4b29b148eb5f78593ddd0ec869a32af9eb96735d94d4a859315a1a69da1e1ca53a69224a9f297a6d9928fc9c784c57230bbb9a9a0b65a793e2657fe067e4ca67ebd6231998f8936427a41566ac58da9985ae12dcf71f7698577e4facff73c543e5d62c6482c25385a42fbfa376abee1997a662f7f824a4c5089fa022de7ef1e2b2ddd9d4e1dc4fbb668c3677b6fe69d67dcbfd24dcbf0a6dafbad6edb96ddf37ef3e024a0bd274b3413b56d5bde3c6cfe40243ad04628e79cdb5b2cb76cdf71cdf4a4d94a3fb497a49834b277cfa6fddc2498c4cd9beaf9da2ea5b48bf7bd9c695bde5e6c7a1e655fdf6edbf6f34ba8124db673fe2ea5ec87d8036d7c7ee61cddc7d6b7dd736eadad9f9a65599eaf399879fe6ddbdbede7dbcfdb37a714f4f2c0f644716fdf664ee7b0bffdfc4a524c18338feac75e9ace771e9cdedebfcb91795b0cfc7046c74c0a16745f4295a4a875dbb69f4954bde93973932f43f9465d128666a90c656df6ca70eddce68c9e5c09559242a67050cc99cd3f294fba6c0f4c3b8d27e60a8a2f158348d13554f812740074a05ad181165e0d5a45077fd0271e684ffb28c647b4b76da1139bde3e44451df45706fd7183f6b26fe291f6f2484d1646da9f68dbc1b4a77d13bf27376943af8984f1f7f800ea89e5911a4068cd93e327cef3f2e868f7b8b4fba4f56f64f47bd41b590feeb33c13437160d4d4c48b7d3438284db56c3d982a8ba9e133b774c6e10cc749aef22c33424d9ad69e526a9a9a9c5655b55d6555c87032d615e48c2574ac82a4e15b48185e05699a72a43463f949ce98395f8633df613bfa9b78312dd3c07075eef660ac0fa5610f9be1712161e4c9d3c314323e0278240f46fd2bbe99c85a0fcc4141c82dee9649b47479c04ff5717dede58c0b10409e30c0454e1db2907050d11e7d440c5634216166704bd22572920fb999ccb2fa118110edfe2d0d5093cca1a2886ea1be514106ff8cceb17480048c254a3322271b848e2bab92d2f3af8eb59ee09066e57e5dad0a8477642acf501ef39dac6627ab91f17be975ea2eba9f8032feae81327ee2d8f31f7a424f3ef9e4c5bf9f7cf2b494fa9c80a1f7425ef639c1259a4f09e5984a4f63b1f6de7b3f1e2c8907b64139bab2e0fde9f9f9bc7f0d2a524add3750861ab938f494d2fba11fba3484ef3ba6d4aa6c10cfd7f7aeb8340835dd480f3ea1e39c56f5a149b8e7332986a5d4f2e4ebcf493d3b74a420ef331535d1f74ce58969aae9e783127a51e8b3f24e4eb2fb89d33ff97c4e70c84f48a1134a3d844f9e62cf764547aba263b541e878434d57e5527f6aef39e16eab2b8c9ae8fc3e2854443d3bbabec77a62ba7a3c2d5d4320dced81793e3b275f837a5eb82794d2fffc0dcd843e5fc33d2a9497281f954864bf69b674db3c5fe22fd7a494ba3b75f72ccb6aad9aa66dd9b6399d5b2c4bd5da4403b26d5b139b59eb745a58566b65c918b13135169b126b2d97715cd5346ddb366b2dc7715dd6754e6727e79c945277cfb24cfbb46ddbacb51cc7755de7659ee7747a9bb596e3b8aeeb0ee0799efcb2ef733a3f1b0659711c77d3755d100f8b95cc07da981a049d4ed0559afe6bc751b11793259ef21f4ef362b244c7480eab950409bda14528116a13a33f680d4dc5769a50150d4281c4769ac058495c2d96112c7496286119c102670699aba9b2994484ccd4fc3169264aa63597e850aa91b8339148648e68a494ba8b64e8e6f9ebd9978ef559e8589bc4e858379884a9b5e525e849e16e0fe8a59f36f1e3ef2a795b10e84f68de9fa954d7fb1a7483f909e56b7d16eb9ea94e2acddb61fb6a2f46472b3c51fc09caa8ccc4a0bce86fa0bc28f7b8c2bf87e851c6d68d9447f9949918a75e153dcae83df53d4d3cb195df99eaa23c304f0c7b76e828fac29d29ff9f927df810e591bfe88578219e661f2879e479b484102f7a1c4264d1e348799447f9944fc99bb87d5444ab1a928222c2342625bb8b0567aa6d3b0fb682f7a5d99f87d2ecc9db9305b89c7d19c46a38c5dc3b4ef9ed3a6e551eab36baa6e01983824122dcd2f5adcaa5ebbf6c403aba7e28f41784848eb5051ea169508e84a94de8586374ac9eaa1ea8b4cc72a7b9a2758a4800000080006314002030140c88c4a2c1684c22ea81940f14000c93ae507a569ac7599632c6186200080000000000004020401800164117a52a34091e456b03c55d624c24b29134747822b967e2ac78ad1ee32a0005e2086d0a233de77f1715fd8bedbabc8ddd39cc6091d5d6e68e4ce1423ed725fe4ce2e1a450c64740774a360d8774799e089a95e232f34f3d0e77755829c8bffa93a28e52bf3a928439e0ec7d9b4c715bfe04fdc923992488760ef4cad984ca8d3745a94b3d86ebcb9e36f34951ac591e5ef77ae7f2e7240922f15f54d8568a5706bf83852aa349f56966bebb53b755b98e640a33dc4f9882f345e0d2c8fb24c205d6ee94a720c3960703ed284239188a2b252547640a94c897f509c4fe72475cfc6e4927dbac5b8e135361279ebc29158195ebdd815eb41902a25971e27617c03e7df41a70678047112343cf7ffc3eecd064d02247208d3fdf7395c58f48b29ad5d779f2185d402613c79ae7a01b34924a62756baab3fc2d2bc205ab628a1f335ceeffd222035609a6209e8470941aff8a1c51eb9bf1fdd4f39c00cb0e187068ce65a070c7ebad174f180c3ab6c92f636db16b21b3cb903ccd145bc2b931e10637c4c06e8f447551ac31bfbddc9ebf31803a8d902eefddd96fa2594e8f8587964af26cd44feacb8861c641d9b9881fab73d52d77f5a1e56674ff9034a9a426dcbb0cb7e546816702236d82f51eddffedac78e49ed61dbf3291f07799e0fdf2d2f08680b253dbcacaf0c41decf167e40671635dffb8216ea4366e5a2c11617dfa3c45d2611a07818a76d4fb62cd0576e70792e64589f8c5a0b649bbccf96850610c51afce2a435b7836784ac36a4068a36afd66553594d440503658f750b7fec35af73f627afc5f6b9bb0c4368ff11a95b2f236d99967632e5e783f0a57350b6485402bc7e42c3dbd130d57e1885e43f9a1aca5aad1f8442d7afb9d6bda887cfc2e376aed21324b4400bb0da3441d2a019a101d90ae24dcdd914d1c68f7191c07797bbcc975f4c3bdfcb9776a1439d349703acc9fc3d9a73bcdf472cafde79f4fe5c2b94de3798ddd397b62502acb65f77f4f7eef788278c31be231bf9082cce8ddaee7218bda5bc58b2ffc10475639cd9a18589ecdc9cb63984bfde8d7eb329e59c24e8c6ebeec0022142de353405824de52c08b9834c211624f099f351b040dcfd0a4df87970ce4bd062d6aee2fd62db65f46fd219cfd647548ec93a8f39ac2421151736ac0f29c9ea189c05724ac735e195b0dea8a562cc49557af5f1102c9b01f40ed9dec280b4ad2532b87000ca8900d1e8b2a0187b01341e23a61a27a80eb852f829cce9d0e8acee120e638673db6db1c6c5349738d02a0cc91fc046e100ff74aa0130db37e4c96044ce3817e4e45f168c01f6eb002aa90356579053906014ce7b3a1741926758259292d2dd33bffa92868a4f3f1a8c2483b3fec2cccb73ba8d6df10605143db83b184d75da280338caf33debe2a49524a5175eac560ba8c413986c91eeafd69fc69822ce184a009748873001bcc73915cf68c79e8e7171d6e0278d1b0378c6b4b88f6d7e6ffcf75a8e8076c449fbd5caef2826255df4c1547f5859e7db2f119a7480140fc1524f48cb0da076fe48588ae4c1936f8621d62f07d123df81ec3d16358cb9f3e3167c7c42c7e79489ac9cf022d3e5d68f03363f70dae142c7a3b9a3930668589067cc3f628c20e0f3f027c141310cd20c9016ec4e3de4723188a8ddfa892a97b61af4f13c02175091a03cccf05c16582950face5ee0573857cefde161afe05fe2ff96e2a638eb636cf9b10c612682652807ecabbeadd35ee431856d598eb6ada919fde8dc1ca0b20811d9fac08b10ccdc494a02387fa74f9063d84e104fa6ca8c1248b19426352c3d02108bd1df0d28e7586eb4245db072e59d5ca0934b3a18241767310bccae302ee58b6ee6824bc3ab112c5d4d5d8de42478a470a6256d88b11e12199087e0d747d74426c80f4d245f0b70c23026358111c3d6ca26b8dae0294fd0a3685c27e1da7f2228be296b37ac197039dca7f7eb4444a46a0373c4ed9310087c7af8e5946bc68deb794de72d13e11bc2d21c480c3e00c5af85c911ee37810bdf2b1bd4ad7b579c52b0f92ea3c2e2306ecc365429aea25030fa218ab2f106b931444d80553a73033100b1e8819807858fac0d1bb0bd204c7fab4908e7bea7c6297e79e8f6650cc27239fee6f718c086a2a2ec714a15e8c39022dea11c3fbef4d87f17e24950cdd26b090bb00a4e0273b81433bccbe2e93ebf5f2b3e09bfd155e5fcfac0fbd1993b8c5cfb4c441b5d07281b02fa6eea11403f8ea0f9cb887180dca9dc13f640edd58d0fbb08046d28d9c5cf9eb7f2a23fd15916de1eda54d74ff658d9dde1e7e931defedd953f2ed4106f9f6a3642b7c7b80d38c6f3f61c27d17a08670efc2b87f16e53eda779d72bf8003319c7b7b93ee2d4e67b0a312c1ba478bee64dd2f63b9efb47b9631ed7ec41b40bb371aefde28768d2716347e61e7f92b057184711fd1c8553138053cde1ed8f3da1cca38f1ce4b4eecd4f34cd25ba35248e7ab18e9abc2991d375bf65e3740ea400f52d53ce9160780cffd5cf88724f6fdbcde3f35d557b863e252736079164a4bdf63efd0e98e4398100d91fda9d535e42ab6cbe7a0c5a09b484df6d16cbd0e83e9649d4d13865ac1d9310f144ca9d72b9065f6fc38b84a1d8ef93a7b4840f5987df63a523deda414ff817ee7b3337fa9b608edcdd06e24a1dd09c6467bd1acfa6e028a44cc18334796a52bfb57fd3d2f50f051194fd1639c774ebeab27082e63609ab490816a17978114fb3003f3354f985e5c56b161d203dd195d737ce4d31a46f6f70c92853384481ff9f779d40d6ef1ebe0a07cc841e96c477476fa2e2c2470d7d0a84afe5a7c8382b2ca6de4723cccdcff937715847d5a810365a2077034b1d5e7d045b392b63f13460ee5631212325839a504e574f1aac57d3afea1eb754e1d8c24b2b14d0b4872097db662700c088bc8614f2f1fa5224b9bb64978375b54ffe9683edc551da4dcba306e7cb4768e185f473b70af5b0d08e3e2888e988f34e5bbef8be86ef379d89c71d01e83e87b9f3def2beceaed136417ac4d575c9248164275f8a85400c069f3194069da0faabd1f7ee4c949e51b4b7e1dcc2e6945b9208a21b7a206aaa5ccd95ebdb8b55e81f88d2740d13d876eb78dcadd79f0784abc68a34288399b489558e92e6388ddc6738a19fdd8d730d3cde105e53c7fdef48cf25eab91057eb354a1ffac8216ddaf32dba9d14d8547d2f636197d89715eb512c8d180ff3efc6fc7932e145c0af4c74f1f6c34c1ad05bc3532aedad772ac79c28952428ed75ec8655af035e5a03a6548ee52bc4050317a4ddd11e7d8415a10d05981068e6a714f253089fc648ee366c48c2285b00d392404e9473f917e8bb19a5307a66babf7541b2b14314b32d8d32b798f70607443e98a6d48377f43569cc1b05dd4c6a40e4944349cc6e046042980b7360adb282922699c5fec43c2cd856668576b99055690a84a0aef923c4fe6be27bf6a9da36c54b36e46758a8d681c06ee926c03a52e60c4042ceb81983d80b70747f7871a00ce7fa31c741c5c59a3cdb5ad3096e03536a25ac3fe04fc4fe3b7ffcc1d7c7f610491ad908cd375255633f25a0e025f477cd9f13bfe2815cbf8f8f5565822ac07a4e09c244e8f5424048eb88b1030497e9b962ef0b6a23bc195823643a1701c6c04e98559bd8fc24a8ef9f54b90407722e1ada95f6baee8411d9d8f61f940982050592e30f45786473739479da20741dfa3e47f6bc293f43842b2551d7638a75832bb0ac502d9d787ffcdf20e452347afad1c82a505a06ef694fcf9b4ec135f712af1f1aefe2c43aa95501129d1913412a438bc53840350f450a4fc2e73b744163f8d264094e6a60a264ed3e76e4c56ee9cd589d6b3df93743b527bc77b176b43395d70bc9cf9cf45a48543c08ba2e4d0c28669ee967325c51daffddae69c076fb185d9f632e7587541b5493de473392168233a41b0095ead0f520d248d03bec18df91a5a14050bf33feff8d284dfe42594a03ef94793dac68e0c1739f7dcd55ce863aba8e1854484d7cfc21d554d6799ad56f33f39a53f81361d331694790e30a0b859fe81d60b53627add2941eaec819929cbb3c2703210f4393c506104df9d60953a6bc323443d5c2426685a4dee7794d56d7f055f6973a1a5c96bc54648e7fdb871260215a1b9dd99554f28245769b923a614d7f98f14389cce09693f839e521c3e84967e3ea3394013b65b68a514d7659cd4b9c1aeb712d06f4fd513e51e71474c3949f76a1308258da6d8c3be5e436d44b3428081dc365b0d246ce8223098eab28535160dc1346a35ec5a033fb137070f1967db20ca6bfd0ec679e24c41bb4362128faa61bd652f7fa13c3b51a5cd07c71db308350451fde3b9263f4523416913df68034f8a75dbfbceddadb15ddc98dd8d5e4e8ebb3054293f8722225122836b340a75e9b95cab709cbd3ba6797dffaa1705494fedb8fc60ae614685cdfa8b46cefe14260f459f1417ed3ce3247a750ac0f265b8cce1c823fa3a91eb62a842593a85214d9ba16b08b7ef8c7df804d3613da43e443ad726b91780f2dd051ff7f7d367b810cae470f013a07cc0feca3fb6bd32a3d3795d77ff224f7e396af91de0c45578e76575586d63445095c607ce757a13e6aa7e3f4287a33764f56ce58ac33a29ab9872615d673dac227c88a64abb2a10a4fde696ac60f1ecfa6c106025c927bfda1104d69ef1e9c67dca4937541ff8945226da7f301e6a631208a6e40d88e585d4d065ad262b971a5e97c14f222a553547f84f6f7d043dada74fc1485a0e090bba8e8da9df90f32f3488365d3af22e3d986322041acee9839d98904d198c2f92540c16bf74a07d72b369720959baf3179991d0328734c9495d3adc90ec2cb1f5f8203a3dbde392d7c5f95be689c5a4e714dbdbbc1512beaf7ffd91f36f507b845c6f0f932668d97bc460da1dc535a9d74e075357d7e0a666c7991c36f1e519a1494398a9414155ecd05510de30d7d986361514ea07347f104f51225737b71ad2ef06dc3187cb2e168fd9e81104dbc6b7fbd8820eb8e12bc020e62757d652f08a7f52c840040886821f15675b7db9be01ea9e8451f3a69b272b0405d67efb3c9602e50f4db5a82fbef248d0e29a1c84f31096630055999bf47841e66d0085784294639ecbde2ed2c5af6e1930d9fd012220b40cf8061290025d9388a0dedee75c313baff38867b70e00749fa184769370374730bd5a16ea8be24e5f0f5c29f95b5748fa8572f814cbe7e76316cbaffdf2d694768fb1294861f840723c3d633278dd0cfcd5313b9c53ca67254b4102807102ed2a692ca2970e95f39767b45e312262b3050950bf8102ff3b7328f1fc1f8350952d31825386dad0c7a2820c25ea022964da72dbc44bdf5007cd8d6c95decd678d05170a62864028d63d0a3c058b9f985de4463d83b601b1836a2d18e4d6d6743c4fc4da5875aa2086dbb32b9ba651a8d7051475b4ede23329b835f8caecb1c472ca257f9f130d0242a1c4a1664ef55e044d311e059532edc244defd96b2508ba3d031dac6f59d5ff9af5311f3ba03017599ae3191f5ec285020e32efe0a91235eb92f1220f551c24806a54712eacc1b69d6742ba3bc6712daaea466f94c3ab8c6f7c34e8bf334106d095deed1920e4788d57177b9f0b70c1002b4d500a10d71825fd6bf301768426fa23210a391601aa5ad59f642d5540d021ba56ddbf0b42b898a67fe7825ac21ccc3232f300bca0d8c94ce347dbf36ef8d94ec439340b12825c6aed35cd46287a9d10d6c8a958bea1302c0d5d65c3f3366686c037f0e82e3a20dd80a1c0322e79c7399258c3380485347ea18e57d2cf7e2ccca95b2b29d9c11566c8e2768fbf17f8e98d3dbb225ef1d9eb90aaf33aa7a50149ef7ff6349b7b6cb801d509be54ecc8dbeebf4264ac180df4e92216300b3937fa93ec63f5724e0dd0c9c71b18317b48461a7c34dc51ea148c3e5ee14241a78a2e042a54ec7323ad0aa30917b362d916c92ba7d9866272d2d765f9040875ed732a0bd78d9e7db0401be71377476897e86c02351c1cc6e5c30579f479ad05ffd1b829223835ce5818b5c75fa557d615ac6b19e90eadf36f7a151cd08d759bfcd63d70d25cca212b1884201ff3574dd1069b0a1d3396475e6ab06c71fce009448623673d0bde7bab1bcb04a1d44518214b53b842f82389919892b515cb37e94a0f7a10d5b404db2f3a1e2ffd7a299fe6f28c9cdb81e313485d11250608fa4e5dc377d5f65bb8d800aa552b5e801a368b34fce39a12b16f8b1b65d3d4df848fe739111513ccc7e7c23e709d30a4fa7e5cf15aff2ef4b3c6cde61bb9016ca6f500353deb3950f67b8e6ec601e70c47e715c452ebe535ed3c0751b74a8280430d557d69721ebf7168c579bba3496cebb7681fcaab9ee0c02f3347fa616ba57d00e40ad6fa0e1e186d09ba71a387f412c2cd6def3753bfd8cc03fe6cab0c147c0dacb304cb98f1da963ecbe857b5b7dd06e80079706ce0dc2691071a05e53e95497b800c202cb56ac9417642b845395fd8100cd659af36e9641a5aaa323627ed0c6a181cd9b7a2963279289cd79af91c216b775bc506ed8865a763976fefd833ecbd60d874e3f20edb901a326d2be6788f4754e50034523ce20819340ab9e6020a8589b35f803f00d1a8aa7d42ec6fc48eb5e10a25f3baee3b8b8066d2e02f30fc375b4f23b593895e54c7eafb1bea115ab35cd2b609b1778dd6d43cd484e35ed9d154f353dd5e5bd8331c1c72ab2ad78684b69f9a37c2a367cbc2dd14fc0c61f9c6d401bce38dc956a837f3140e2d316decc3a5aba4fb9220db5ee8f2001d57a5cf75099f873ef8e2053a4dc128fbf53ac6359f7ec900c89fa76a31a8655958cbb70af62c1bc929466c3510b84c58b13b681260d3338a29a51e463df8259374cd2e675f40e59a295ea550592a67b60f3355c1e25588acd5329b6580e37e0d4294ab65909f5d93d8d34a0b6f84abfd09a183771f68e01c93d39f9d678a95d6745a8663d889c119e021bed44746472beb807800edcd85b42d99bed94f68bb123207867aa87de3ca880dd298798c9ef9c165d94d0b9f4b7ac2d37746de94a21f8ba2d149530444d96d5d71693cc014b380e250d930ccd283b101408411bfd6f0e19a55aa92849b857857b41dde7064028ac1c9bcc714d90501047f867fda4d4d389447101067c81371066cef1a2ed03272fc46fccce90e0aad624adf1cd00171c4d61f5940cf0c16daace70d857cd1b1c09765e1cf115e458e25dc62a2fa0cf47038b0bdbc4e64b74c460cfe196598d964609b08fea3cbb636aa980bbd38e9fb182bdb2c87fbd225123960faae24a86ea94b08b0501a0c73b5ee9bb7c386ff20f52754eaa8afdf3ae6f096d2d58bc50ceb381f7fd63f2feaac4c16cf88129190b90178c45b77cf2b2ddde4f8d2532133ce0d35c8e87d71b47302fe0b7516e3d90615deedf04ccf0005c0589375af59df901478196febff3402aef800adb6fea3ff3e15d5161e9ef8d40619e8ed1a0400189626c6c92c2844206655df57702603e140148585bfbf734aa8546ae8a3baa81ad207c6fc12b922e1a064da111442a30d053ff1915fe3300a8b255c9aa4edb0b55ad20c45011459a55b496b56c38c95a5137f830f4a1b6cc76105a46aeed6b9bd8e829784bf66e232bccb0796e272c622a5119a56c7ad49857e9f1d6c54b5644ec40e9bf14ee988c2f048f451abe4cc01db22bf8af5ce680a03792a36351cd4aa9d97d41182e9029200eb72b990f4d49a31916240602659a4e8291c6ecd8245ad06dd445d6668ca268c11bbda32e458692e65770b83604d2da033791c062298c70e9855fe857992fbc7e4ab16d201f392c12ce4353b3cd8118568b9af88a75510b73a6f227129af42821c6bf40ea119bd498626018b68d5117458f6f1574cfd4fd5883501c28ecc11c5cd8c0268b01eef212690e3d24166bd64e26fa48e5bcb5b0339aab049550e91d5f4a7e273bd4c744113132941f6d3dbc9a83c1026b13d62189450c4e4fcf511903e17f8ab5d38f646af222101f3696ce6a62eea64d61f9dd398cdd17e75d184ca4621702ac849df7db8761c18b01c43819319948a2625a04ac1d6e03f5c3fa0119bbf14371e64ea06bf191449abc047538bab49f527cf518654a9b4d220849e100ea88ea0fb3bc0bad940d0a4e7b0ee94e208e7c9d55435c0bedf9f6e9ebdeb41a306a3ff16eee7e8239aa043b8f74452710ec416b60cd1d12c305741b6ffc036517293100c8b34cb9842a2feb8085b3b7e0b57ad06ab5f0eea976fd0dd1da714dfae220ebf457e6c2534c24e1bee878983c06376fc51556d528e337fdb998ae8d9d554e8696e388b905ad841ba2fb24688a7ee0edc6c884f718e49dd38a4053402fd874508b100a8df9585d0d9c545992071ae9b4ae73f44d865374fa430e9efb31ce1e1091b0a29b3494811b41ef2a15104515429b818bd57d2b3586956f57b92624be15c7b00fc45c0d572893ebc683bce6339b7a4de76caabcf84737155759dbee7cc2a8f677c1e7f26d0033ea19fc54530cf945f88f30647a037e33da3ce79c8e866744aba4741eace9eaad53a6d6e6dc5ea3eb01ca077fdc9f7f91bcc1d02024318269bcb4e6f0efb39cda0ad33e0ee449e20aa6ed68e932f267fd93bd1c45b81dc2a3a17d9cf64f223de6a6c7f2302106cf8978e3104ea213d32f19e608ffdc80132a64bda19daec10e9038b2478d88909aa6df10ce81cf0d9d552fcb132a2934d7147a203c99ec0cb7dd73ac1e4389b251ca25089d865ff578d6b5c7eac3b9df5d7062a74192b07b6d2e063f2897976576156aad9d53218a871e987a7c2a47ff5cf882a0c86851af1ecfc3ec0f6b63bb71db1e4a5f3a31ca5bfb5fe7e01ec203a877c5821024a0feb19c5817280dc947fecbc645a68ef837fa3a8726c5b9b2413a21687e8958c423319f378f2a25861db1fa502d225c59c6d29083165c4223928ef4e590a9d1a47f08072f25e7cf643f8f5b71f7c8c707fe149beee8172a4f5d5d13d7bd4b64611fb835e40fbde9124d76b37e3536d9ff480864caec7e18bd1aa705fa0fea416dc6e776eb7cf47defc262b2a4b0644f476667394daeb4720b11fb3045c7b17b8c1e58b0658478561485d80c976b688e8e93f748f5ca597b318a9a47c49e63456abf5e086c8937093da575fc6e3adcd2d2753c0693eb598d20d8e1c1ea7efa517e21eb4f46d1bdec57b903d3d850f12d70530a38303b5911b76f4519dad448ffeb2943c6b30d081a1ad226af4b2b1fc2c63e533fc0b8686a1b885b9b5482f260568b1870e1e48a8acfa45b14086f6f9c95cb4d48d4083903d43a6dc6010224810262f7a69c8f5ea961006bda7ea24f25d64aeefb347028b4fcdbc1fb25827ad3e182bfb388a124f96ea0b6447825fb1b09c3479ced5b18c10c1d03c788b188176e8854de309a6571e13e97a5481dc2f230c16318ede3b2c40fe04b71f5665396af6561731cec7ead24eb82e11ef6fbc26915a02c3a1f90c6d81343a02081e0808e24b3ec5f4b8df97488c88fdcc755d048820315f1988f38053fece4275ab0736509db11ff03bf4066a4cdfc92df94debff74c4d038ee5106a61a91c0af38529677d64da77a8f19156200489e97cdcf7b85eb11aa8a073197f5a1544bc5cc4ec64d05965ae543f787df1e68d603aad3e1916e52c753f9845ddc978d3f46a389df8a65d49c5d20a28d6ee0c0f5cfa2f5fd6bc45d3c7966b77f844b2e6382c951c654663cda6402e7eccf31cef623010de1ff865daab6a183fe412b7c8de7e3c4a4bafd6431d09041be9397c94b0b3571155059892d87b799918848fde1ace54088a9df567c5d3667cce8ae21af8afef413c119935b6b8a4f3cf484636f3a6b55a2896191db81eb9d0bb3b5a28aa9a9fc9a92c90cf58971515357567035652643337facb8f44c062e0bd07ec3c1e09fcec5aa40b50819b0530a366cf3802e24dcc5926086af7e31816fc9ba9988e403681bd33064c506f614d9c88d30d18ebeb93cbc41d3068ad6b7c3b5c66a93a4abb849a70603e60a022084605a515644ce9af720ae001db32785fddacdd9bd320e25e10683f6037249a063d8b67afa70bd18dbc2a59c941a2651250a3153f6050c4d6a48b475084b419ea33c21ab01e0fee5cbf1044da6c0d599848dcea0ead2e693bcb8b4f6614a2182a3622e526893f17e9323669c8ac4c6e7ce83d751764e04626113132856b5a9a7113a2ad1cd59aaef083b34120725f4f017902fb9af09045108b094b2668e48361f79d70393d0b891fd8608dc24fc5321f207c4b10c47ce4e693cbdd07fdf0b0e4ead995ad2469dd4f195162cd793f5791f61e4b9cc102f9482480062be513642619414cfebe4aa71496ce0a4d4e81c067928025744287d9e7f67328a6316b979367e5ed954f7232de0e4cd3d5b097a355b63c2a09e22566c578f19cdf25282189de83ef5da86933905c8b47eb78aa123e76107236618a8ae9fa6c491f97673d24ea685b35f0485f2d839b0da87251ac7112dff1b88a16bf214eaa51010e47d1da84d5c4e70977c8f7fa08081ef8f1ed90debf46c0ad730a9884e77810186f222a583bdc4a25ab146fb18200fa85d22e24abb3d112f5eae7bb6fe2beff1e24eaaabf7b135275911408c90aa663e68099f880c56b4f2ad75d32bcc6d2b128414304638a09d3311184a7b932e93d255423cfd3a2e6a7ec8dfd46340086870a89168c1e002fe223c141713617b78c7decaf14f2ebb8762b3df40f3a78957ad3f5946b3f798acbba3e1773fbba669bebfce8390e3bf70646316b4fd0177d6427854907845c69b50646e6fb6ec3a9d5b0b5f9aa550df371358a79b558ab611e85eb5b23a6544e03be778839650695614ab2ce7d83daed04fd68c63212d6708e05024e9a879df2a24db24d9d1b604de8ce1123652879224efc21e2dbe2331bda191ef9d88cd57468d666c0989d23872b725242b4387d3a0564c6ef77f9c1b8aceb09e299640d85a36f5e3b4685ab4b81f9a052288d452a0594d08f0ca478632c747bb2fa227c17a08604931b6fd4952ae2bf82100384f3226d2387fb4b3cbc523a36608a8c80530a887e367935fdf54aba32038cce87ebc56dd52b053ba03d05b6aa8a3b4d76b5dfe3c93e44b1c36f16a96081c3f69e2cc7f12e93ab6f2dc9e25241438cf64e6d50503f6f620031c5c8f851afd9ed545c3d85227c9ef92b334a6b8267292ac725fb2f0cb871d5df9662901a01f264e06b9212f5d2f3c5f80f0ac236a3dd1454251ab881e2aabf8c8cf04ba053b1b19dc736a5ed8bd545e40bd990a7afed90c0a453cab6a04812efe9df35de8db481e7619a48b33e2288d2235efb20c9c8f3f2342f500f792788e6695ac1633a7be9cdb590f6bbcdc5428d1eba942d9f9fba2dc2db522ed44a1fb6ab768811eb4da51ef08ee17fbd2f724b0a1d0caa06c0eafdb3376cb5dc4b2e87d59fc3bd63e8ec04b2fa8cb6007db2d21ed42023b374c1605a589ae45091c76efb7355cd20273d1647381f9e5472fad3c024ffc91f1b1b21fd443fabd64632e88c47b9dbf36db25aa23781763abf11e5e7d74e48322b72b68baa4345e526bd2182540f70846e762c49bdae1f61c642cc0a247261046e17da52fd59c5562af6438e5d45397f22e5668ea664fd7605a1c3de35382c57e33d290b6b7d250befd51fe28beeb676072d49291c92b5aa872c9f4af131af51e98df17e1ee5ef840fdfdddbb01064035661c47f1ef14da5ce878e42de83d7d47442905442e472094615f38a6e0cde81adef9d8794d2c2275751e5050bc134f6b8707bcb054471fc77eb1ac122da27a6fa3c351e373fac6d65afddc57e49b3feaa0fb2a8f54773d74209c38f4ebdfca055a1791c14f7b51d5b14c7fc30faee8733ece40b7f566b34a87fcd51e21fc99afcbfc127cf4076b7cdc338fc96a4bc8670169dd6d2c297a629db1a61e588384ff0767c9604ba214c44092a36331250b9ce9d852812081d0a45f048c381736b33f6fd0d0565cb23debd31312d4defbdaf36ca0ea061e5159a2ba261c111529f50c41819d61ac57ab22fd105f51feca7d402b008e13f768b51ee61826fa3a0c2e6ddd5b18592f88dd37334f0b7958ce9b199f08c9cfac09748ad2a37af5266450bc4dcbb3027bffd49a5417d274025137a1551f4ee72ac4fc9cc0cf5fb71348340284375cd8f60971782b619b1a21d25e233006e23960750a83ce4d9854162e6acc305d0a061317a688b2be7d9c480ced9ab439a32a91d9ce18431a2f63aa00149bb80b2c6fd87345d68bea5e947022d29d9abc89838273168a8804776c65ca4f33c79c49eb4790eed3abb8663c8b3bfb961f1bae57479dfb7880397ec296977638798895c0b253f46b72e32bbd0046c41b3d9d2406e0bf17dc7e8010f0679b3a0619a81332f0f3e9325a70a2d0b5b7415f5d8678c7e81a5e2e2a6030ec69bc2c296afa863c2504ea4f341d81f2d4e800a316a4ed3079c507d13983711aaafe1ec41c70e3c59c845664b48a364137768db5c8fd802fe4ffb8d092227c42d35e58005458163d4ab4ee54679391243f2c001bf249540a26c61abf6c564092ca7d3b2e0a6fbf5d2386d396d5f44546cd981b1d662ed51bf35c60a639d3c18d70322feff9587ea34305c1f7e32d36d605cc622b2d032148d37f6f0c15a79c4a95b43fa6a124390f4b0137f06984e686e4ad2552134dc9fd0f645948cd9c25bbad597262aa6829fe0abc467b7707a52e8ecf151a2bf98e2b7a78310136eaa6c12476ce45a523916809518b6fa0fb858841667b0b91f3e17776d147491ae489a5aa1bc747f6a583caa60d33e8b8d1810469121c16c7191c0daca62940e57d33ebaaa60e8a1f03fe7b2e89f83a316d789da99c57cf5d38a5e94e7d6a8143f5164580dad86da68585e17acd6a251368db152c4d46afb8acca14181b2a687b465712de56bd20a6230b568865e9671bc5503e0c75dce2766c153e544286e1d7a1ab3c1b6708039f9b458af2eda45ea51fa0bf4a5baecde94c7075811b31474665ac53f6068d99c7832c60bfd4131e9bda83c8631cd791d0374c65eddb039612069c6a6e224d0742a2b2e650b2af6c9c5a1c93e48e5cace5bd0184920cb08b275312311eec09085148f4ce5c874f441cf1ce00d8cec4112c48ac62244aeb6196fc94f086e570699d0947527c46958d3bbb3a11d0f784fe1738d6d8a57d58e4cad983677eb3263dab6225e86ab0de98b74b57cc5ea523b3a4ddb79c53bc3afa4c8b696778f770f8bf61002aed8cc1d00a4e4b4bd94f7d029ccb59617868f841c8b6391e7894954e478cbf875b2010e0d28934b82e009a2de19467d16ded26ce8eb3dac46c8b64eebeb5c30fc46e2be229631d71ca01b6597235b42b0ec9ec0d243f16f0399c6c1ad2fee673a5bd93b98f710eb7dacd0c448833380237e9c5c1c0e026923d176a73eb651dfcc866e9d842c3e5f3602d99a4a122e5000a05daecdbb278dce880359de8841fcf1a4476688abe5cfc675fe840be96a8aeda0ef286be123184d63911ae8630bd0ab54f19449822e95559058ca526ccfcaf5014ba1f8b3c7e2e4985c3b2d59129f41209641bd7c01a90ab6536788ebdf815a094d834be697a0200f1125cb069799e7f74253d1c651b29df754e28073b68df3164094ec446ccadfd5c3d0a164e96cdd20b0b1eaecb74d9f3a76bd8876a16cf19d2a11fb00257187d23cad312a9ef1d739d51703959b9792106dff8a2a083ad6546eef452a598fc07e6cae511808252ef65c64dc1b2af59be7ad04f901c91fbbc2d7920ef19003496b7554f9184919004d2bd4d12e30aa3e08c48e2f9b0d33e82643c10c88a0d0b15c983785bf66d25e4704a3568cf9b2da57ccb11b8638d93af04f8a2f1cd9ac3656e5424884f6604a644bd2bcf6c772be12cde7505aa062b70ad5117c947e46b453f07cd62922676cc8168ca006b22ce60dd929751843a818c5865e41982c8da79c044eadf9f0dd1571258be7f13e8dcee8fa8d6cec194a2da19c982627941b2d33c075a45af49d71b57f955e1d70b42dbba02556b99c6d4db05bd41728ef16be91a54fccce3f82300bd0b017d970e37717553d6137b8f13b0d707296575bfcec42e6513c05b357658a1581c366adf2e07d77ae14f36946ffd7566fcaece793bb4df25884f9fdfbc6ddc60340f5617e5ec706396c7a0ae219bd1ede9b7fc1996d094a20ece7e91356bdbe909d0c9db645a7ca9dc8831561e902dde3ff73276e1ecc779b32ece8bf1e822dc0637c50dd4ceb27a449920e74504f13515687cc25e801bd9d21e28daacc07067ec67d67a3671cfa37f5dc2dda9da0946b7561c1b3188e6a6915f2eb9fdf80a8d326fbd56ae0affd43ec61a2bd54cffdf01f21cd26ac9f9ace197eaead3e678bcdb5602ad10ab8d897f0e00a070d17b487e00dd5ef4da70f39cff9e4eed21541bc2bf6c25726e7060bc0bf28671ff94dad10477de3ec2236aeef5338820290a0de72a82b15ca4eb2931885110b912ff20627ffa57052c1c36090d1955599a350c8c84eaca7ff8328c923466aa3dc90c18f37b6d4be41d627ad87b955568da71892399c99adb45ff94232dea8fc7d03037b93c5cc09694f5ec89a627f2fb6cd26cc216e6f1c17006e0a0d0655db15e12d0ce197ea51b4e8036c3f3a63fc57cae0e13126ccf019ce3721c1b9b93842b0d972fbe287778d80416ede61f2968ce04b6c2b466337a21921648d7cd814dc4cd6e9984fa942b062952e57de39489490b92778bc8dcbce2ea7b4b705b484d851f02074c52197759224462cd693b82c79f13067737e1602b3bfc0a32c305b13eb7e917b04bbed8b94ab3a3ad3b23c740c1e9768bbf98ce4c054bc8e92654dc9931177496cdf59b3293a6089c1b7f0155f91b56d9091d32c42e199533339bebb850c4fb7aecd35a866d5574ae38b6502b3112c7fbc043bd72553fb5ae4c6f968bede7f0684e6eda3af5d09cedf0e81d7b655754b3786272216744e75bb4a693f9622baa6ef80d71f482c5accca5a1f8acb9988eff7ec28e793d0cc164047dc7d77745e44a5ed1adc8df7545ad6013c5ecdb913f0d62fcd088a878d4b15180c5065d6b95bd90c3a490190044c1784f3709dfcf7fa992fdb960797aed4dbd9c1115d19e57f40549f3dfeda58ba556160cfcc5d308494fcfb004ab8cf05d57590044344404c2a07c752d394c3973a88d3a21a9c8075be0ead90ffcfa0c1328a7e7d28c84159dd57f18d01074f9658e11bc6c1b98724708f0f84de49d53188e62a0100d245511d77c45e992e6e993e89db5974928a7b0c56746df88114bff149342440a7f8e91d633ddddede38e60b321b1987803b0bc53d9d1dd8dc79431df6f68f635d92dfe50333a26a1f7bbbd8a03d05af69660ea594e09390971426e52a839d1aa715cf92ede5adaf0f31ee8012023ce049127738db7e9ee7588d329547e3b0722f31ac82e05dcbfd45920563668197f8d34498964c27ebc4171cbd29f37a3de1100cb6cd84a7eff972d43662650030a649df3cc4024d96dad95c60d6d429cf55354afe3a23cd8b0f5fe709a4dab6d3a4224cbc88c5a49e750590593bb223fae19aab4bea30b59edcf58beea83b84f70e0daa277bead9ab67b63abb4c2449e48abc5a9cc2025b34ad1376ad2dcab25ebcf8860b74e9a83a9f490d41773f1936ee725333c9a33297f61a58e728764257d2c82cfaf8a210c74e8330015a0fdfa232bad581c28632c036f0c21cdfdf15ce504f342f9db88c4678591d1a5c6aaa32343178eaf9500e4f84b329561b68727e114012888084387c0e69f4e694050602e99d9a5cbe97ec12b56bd08a6e8631d0cd8b842692f396bfe799bfada3f6bc1457d707ac37cd12469ca086059710ce6cf070de187122539c3a78b009c2cd8e0ac97021a26b247fb3b97df2164349880104d182d77e6acb059259429426ea7535280ca0dd47809bba4eb6481ab12b8bee0a7898230f51263e2a7b2eb59b8c457a8d402e29d0070544b510968f419625b2a4a0ec6cd59fc6f422c8e781929bf29580428e5bc42b6a1258185dc6c4edc3e20a80d23c1915575c55599874fd14dcd235a27fbe09eeef5320b12a007b988141d1d6a73b964a0110e751cec2a2ab8ba7fe093164d99153850a9f0f4922c5b614718a9dba6a86f428b2999bba0fcdae0369ddb79d3f33ec1a85af16e4654d516d43d3b858482766032ad11013b8c34489d0554fe02415b936cf2e85ea5554af8666b8dfc58a6705ed9aa02f15f7a12a9008fa1417498d270763803247dafdf33cb021d82e1be8b2d2a8c67f43cb73f334b34ed56285ca948bc7f0a640c44a9b2b656ec505af0fe9c7ccdae7c8dd91e1676597a0a2a032013c3e4e198469f0544d080e32c4fae9cac3f94fa482fec356ba65d6f20d59c8fae9865b76ca9e321e0ad00690ef5e9b018bfab8ab396f264a1cf3e9f490d34256433041efeed477c911870568dfee20cf7246171132a3e862b3fc2b7ba635d3896edc9459b6acc0b56879da962f0320b30929b3ce4be51714d25bfa4863e51765d6a5cbdf4098a5edd2b8ab2e8d4fd9e318a39aaf0fd427655f23d86023a74cc257672275b2cacbeb6c655f8fbd178ebc4b1a9ce583eae40ff3fb6440d0c83c2fc396d3cd89e74498fb2b2e59b28c39e2075c2344c3fb7ee3b4ad94da3b80193e508a528a36a2b8eaf3991b106923fe9ad69ae66a2079e8eba7ae7923335df929438835386f418607b6470f806acc48d22d6400aa55d694734326ccc35756c63ed7603c56775e7fa0f8c9fa4700198edf27fa83551934b34f044d000dfa4ad889bc3165ad8617b530011488f265aeca32ea268bf25791bac31d027faa3c256a8617cd7491cf79ec1457daef2fa46af35d5d0598ed82efbe660ced0920a34eff90d67bc99162a95dd30b6c7153ae0047c652a7a72d6e124a450ba2c1f6eb40e3fd7636271d6e150346d48c10a9cb38be2a222c878e1a29c4a92846af31ccabc03093f57773cfb43e676d580c15ae7b65cb5fe2d69d48eb0066955f4056b7413491c2d03325ff5b8f4e97b49650945f0d5585644513d754c24fc80c582064f72c423d08a59f75ce10881ac27f3908b5023fda1f71dd98c512fdd10af272c8b98460069546f3aab629dec405f4aad80e76018a988c9f1c4303d146c28631aa8e810e5c65ab405b00a367381da010127780408bde834a00abe5e7a29d5aca731a016a3430c21cd612a1324c392708c405ccec786e6d612dd65e1bcc40fc0f5df336970194f3ea3b258234b7c09c0cb7d69a9415afd46ffb4801844b084f02309e5ec8c0f6f596364b68ef29486aa40aa10262fc7df5db026309b50d2ddebead227283c6ea14c6488852515b488bef91b07314c83dd2d0cecd4f28ab4d8a9ed1aaefa8926ec129c5460520bd5b3ee787d8b9f1a3552500d8625254a5b21d6bd362fe1e67606dcc5a04a968e07c902e371a2e069e12c8d5045e235602f319c4f61d17976cdb3d01b02c02105b474a45de430f6b34e780effe41005889c2270e0a51d1e3be4c40a7aa1f65b330a5e4e4fdf88fb672f83301fec724d08debb05da54f794c36c35b93cb2d3c0e654014a679f8a2c9f704e505cdf58becd681b6cc16272e5bf03aa5b1711b91d96f1830d1707e4e209f174b8911d9f007998ab470d9eecb6adf6c4afc0f53ee63be5f76f02c57d5eb6256e522f944e9592cac78f5d7cb440d170f811ba5e17a5c3467bee99e48371d9fbcc0a53c9b56e7a12154c5fdea50063e1b71f025851672a5d4a063da9ffc30af434c55905d92f1ecd35b34c6811ba30dff364953c254946298215dfe9637cf154d06fa6a1eb4301d5b7af56d68bacb65f5d1e6404bd21417c9d74b78676f84b5fe9415e4b583d89bf0cec20e5462ba93823e6a7fe44b6b80447b01c119de4421ca4ef61ea4f2ff1463a3552e3926de22882ea35773de4d196de37149ac4e001378028a151a93da0473244ea8054898c1cc47fdd1b3ef3dafc2684d144965368ca1ea68650bb899947089d0a9549ab33d418a50f7b046d7e9c491673c74885de85c933af447e30506caf38a3e1dfd1bd8f6d5ef33928a297e3b3a91324f83480301fb6de19270cebbc3d55dcceea6d3155ed836fe9160011593467303c3ed225c4703990ceff97ce8ff0e5615bf417f3f81d9163e0fe5736f112752bca622da7cb9386184b3de35411ab805b53ee51d2f17f4d4ef0f11148aa9fe371616c324483710b9b33bb9062e797e782c3a015e966a96b32ff465414a31494104a7b7a4f28d2a5954e418b0c17d8620578e827516278879b3ca022ec90e9a95c636915f17069ce5e9fa0ae81101502368ed48e6b5ee1120b6ba983bff45ce84d040950a043ed0ecef75e313a809109e61f027c412f64ab1537954aaf40562de7f285b177af7dc483a174f9b0c11365111f7b884cab309e86d47e5fdfbf25a363d89e8eb04f1c9f9fb26b43a2d59573dd22b1381e67c69c19e852c3d5fd5a6867c929682f143b60192a534bbf7d2c271471453869699083a307bac570935321a55fd40e97ffe75ce419b25c079a0fd6345afd7c87fcd0dfd1bbbbca0b537ed12540c730e5da04181b66f4980489f4cbbdebf35b042acb75f5714902bfe64e724cfe29959be5fbdccc0dfc596e6c4d0b98e5a3b0f4fcf93e5f6c09404cb62ed4ccbf229e0af060d7d48ebce8d8544872c54832a3d22f10f7600b43a33f471f3fc8c32c9b818612b9e4820f3ee6cfa6b4d0a9f7d94fcfef05a98f3e6d8f65c0e8f6232ff6b1cdfe1d1eadeccc2fb08391e69aa894bb5ca76b46bbfa1be82e2c1b98412ec9c9de06231a6688b202ea87823a63dad705ad4d2674282e4b736307814abae08ee22cdde0d014b358e6b486c376b6e0fa31bf53fac76ebbfa48c2a65a2507d8a44043bfad0a4bdf3c20a416c7702837726649e0a6aff41df41336f21a85682f188e6cc39952e560911f091aff24a995654619f6988e77984d9d6a07992b49970256371ae4a96029f81641b0147bff583be439876ee73ca22988ce2b421c157b1571470b4d10b9d3d08185f07b4f1cf69b1d9791a4665353b5b38332039c40da3e09eb88579c8daf604e58bcde6f588569cdbc8fe3c4db747cdc5639c9cc122d2a1dcdd346728ee266e796014282af823e191ae6db82b347a227a2cf6cbbf3f910110ebf31c19392f4c58508691c401832ec395089a3669b2bf9b3c51da5e6141636ca9ec1f1f18aecd7eeddae8f6af8f419b84726d09843c882ac891a55fed9fa616518484841b344b9b82ea54e7d6c13f88f3621b970c5c034adcdb8e40ae780a4aed1ffa3b9bb074e4ac3a1b080970bba00e7a38ae740f5bfd66425c345464a45f3661c8a8327157705ac5b2bafa118f23284d2ac66b91ccd776e7cd29385c6cbd8725ca36b1cede943ae6d4d37b956d2f004b7bd79ca3b40c9ee675935d19cee86285cbfd4f75f7a0ed0be93e8848ac191503258303d0a3e7cc4283cfa3609eec1353e116a1d8c83e3ee56dfee28694d833271ca4ce2e65538512de4637b7ce713102ec8023028bb14022b6a39e672338e0be8082def0bd8f154c19c21930e0a705a1b306c61d0055583303e48c823e072e1dc5af1fe23b54adc6b6f5cc63024844006021f33ab0bd342f8e4230542a1751cd0f232ab0912da17d059d0adaeebf58c5505edd2cc5b14701c0cfc4dd839a4f821eb4a6f36d7f7f808f9760d3457e002b0cfdcd7f1d5204e0e5870566998f03f7182353b815dabb95138e6cce5958ff4e7769aa44616ff340a138b43be9809ce04e6e7c05a13e58971267059818b0e73f62ae2db63d4aaee2910b09cc1f963d793ac674178fdc53b39a6d1b67fad3bfd70794ac1efeba212bd2cc5e0b6245403de90bf8c69ec8be9c3757014106d9d1a48bbc50f4c924c063cc502371f67c8218a85456204822925d18c102281c6a253e185d404d131eedce131844aeff4203c0c0928e357a1054883469d5279759d7da327fc2f8b1f438ff4efeec36a3237536767848dddcb9a04da7e18be81475145f9842def803749dac86b492bf7d93dd250f7eb61dc30c6c0132933379794be2f3a23bfa358db62c0ac612c6e7b256d4aa34ce98f9f41791c17850ccd5292d8195fae4a95bfc8f1c085dfc74d63bc3ebe5b81affea09281993c83a9f224f0ac7d3bed04e567ea6cdc4f0a871c5237463cc0a7b7b185d3d5fea4c9e8ae74f2629d519bd8dbea5f66e4812e9e4190c448edae608e72dc148bebd88586aac4dfa00131cb8ef2b247337329abac66207c9b1b7fcf119ebe75fef889a5ea4932033b456a3a4ef2ae171e7dd3a65ba216212bd9119bf1ad66f60811c5210925d94ddae38adc610a236108383d40d9eb5512fe54472017bcaa5bdf27c4080b3c302e2ab9e1d53868480441a324a6598b9e9e076cb93403864648e33d175b922bb343383c5283b245c5e9d4155a2367f7a1375dd8cb574f0bd024bde5d1df446637f775749d7bd02ba82f38d85937f36c18deaf1b609ee9aab006e48d8185bd47120c99fc8dfe607846eb4b8d71b405e03bfd6498f814ee3a35c5721e0759de972c74fa647b846306836347f1384aeb86fce6cc305d7b9b773d34f61926086aa826da4e831b34d05c70c79dfb637543226780c87c6a21b184239e32848280f617c3c8a6fe344326c53919ed9a8ab718e323212af00ed3480f45c16c7d9d62366d8245016b2e1ae67ecb0b3196ce459b2792e76ec4ea107a39882b258430705211123df04c53bd85b7df935d2b2cc77ac413aea731e71e7908b2384b6fe495fcd83e7ea51d434c9e10f4928e1ea68c784098559bf8d93754c09b3640b5bc8822db790655bda42166c61cba42d22357b6749df0a931b0c2c78384dea1fc04c96ff00fe5d32f561a4e025e1c04597546019fe91f3e2d91d0511d1daa2507b3250edfb1ca1b616729c7106141fb2a7b28be57d9521f5ee34f6a2b9f8bee6301d683fe2b2532c63149a0df8526fcde570588c14a5728c6471796fddbfb25a99947a1cf518618ec5ff3ad88143bc263b35cc21bc6adc4eea65c4520a6484951e3dcc3bcf8f35a127bbaf012cb6703543238268d9b08ec20977f49bc22b0280761c9dfb49d039f56390d5634541a8e57e331f2cab626f1f5a78aa396bbf0e209f619a18b5115a2cf8a547c6b9d270b9a0da2c0a7f5503ef622989f446422fe5d9ad86fcd20ab91dd39c7f4a62caa92de4d0cf9990c9354b964bc07366bd85c00c10af549e098580b177cfe451ab2382bec6d8b67afb7deb4ccc4160ad227e96c3a8ed02a978e23385a965f5b1b040abf3051f751c8e7f839f7de9d44e9fea38b1edd3c700aadc634d6027ba80b24935e9aebb7f7d4f624411a2650b3dea6c85db822cbfdee5e4b07b52148220b431656b3e28c7a16eb27697c729cd6dab0e3dd4c3e8b24a49dee2e7580edbe1fd43d0235118664344756938e5f43f3cb10ae1be0d3438e36542dce995ca662cb5e839f9812cc461a1dce80b38b0dcbd6da21bafd096fac2b511930abb6d34d9db1e07bf08c12128097a6af05e6519cbb1caed59e8d4704db2f4430bec17107a854a69463ee6ac7a3c842315ee5989c77ee183054eb73df779171f2722059867a872e3babc1ae05c4bcee29f6d057d1b647c04b375b845fd592be4ff052e3db7875fad4b2f014feaea96574507414989a7f512308bdd5b097041d2352a899b96d2a2bc791a9d2c1dc8834b55a09465b553ca452d19c29aeb1ca02f958f3281237224d21616e650fb8350ceaa774f8992e21dba886789e551343fd09c89157cbcc8c01e097586c4ab862f353817b01ab87c7a64483151320c96e031a28335d95c1171bafec6d8a26ec1abbf451c037081ede28859401c03c3247286ede8031fce86347e832db828bbb238f2619cdb5a2d7dfcc79d797bebacb5013ec7608cf33c5aea250fddbee93e1a88559cbd43d21b3b458b6c3c0a5a3497e4437b1ab5c6dad5384f4efdd42d9bba73d480c21f9d19707f79603d854f27c2b7455932949a875fcab4a2d21ead5462795d66c921612637697c2ce4fdb716b9c2895897889f82ee6f3671d0076610204870c080eabfe3dc82c089272dbe8602c93385143cf9b7e8364864efe25d249865a56192440cfeaf069183bf386cf248bc1b44d69c0a12c01902e35b9d4cdf17529058eea6d93b620ecac87a68ff0ce3566b52b1b132b07cebd5956d55fe2ac9508e842db2b5d735a847e624316e974f6f196b679043819e81fc8506db047a39ca14292e938afeb83161622b44b19488b94df630b81c8e2a044c3a430beda8c234536c80c6b36245d8f9645c586c2f47aa9dae3b1c45130f997559ff085f48cd231b89b3297564969a49d2e6a2d02080bd8649393b3bb1ee02b131495b2d934c43a2801daad0151e68e75993c4db156305ecbde772f055aafe2cb48fa75da4b537b45dddb81d4fb9075c3b199dfbb6ee6fb3d7d23d637716deecd81c72a970bd363402bd4d4e03d7214f7ec492e15259c5279b6c2923102e83080bc4ab6194dc855f13d948d5dc838480aec14d6c7b911c912b05f9bdde2b1a132a64206c481111ba024f0687f8e50fcab963feb884186fe81d7632dff4b178438be585e19bf677c3183abd58d0381b4057bbfc5f519af5278902a7c8ab890a499cda01feabc5ac642d139a87dbc358de3e7704ebac9871485cc20a2763f085fae68029a7c6af17231081607601f0e6e53a715470199bcc73607d26144e23c3478aa2e4c7a69cb3cc02f36ada4fcf5eb6d18c3e74cba1dcca35d4a880d97bfb4d10b1799df22169741fb354d620acd5cef904b78e2d4b36fdce325fed63a76d21da4fbee4f49550846c4a3edbffbace89887b9d0600cf0b06ec188835474480244a664d6140a49a806eef88a40b30002ee56719e6f3afe7799ff7fa437c9c29100820a3b83b3019f92721ce720eb2c54baa73d37b51a54d94d6efd7773b9b34f8f28de9ae3b452cd4bf6f59ab8ba6a81f2acc32407946d0d15c9ca023e2c9d37ac2ad52f532084b97e77d0398209aa81152192002c2263120a8b6ea914cb34636146bd68b46133fa6f3664dfc1361a44d30f66225ce3230eede4bfcc61365c4ddfe7896891834e059c130cfe347391fb93047972bc888fd181431b1012199c76c2f580023915f39f5060f2d17b945a00af0f320c53af10120863bfaf7c1e87564cf59d443ac13f4f27cd27b0af30f23bbec2108ece703e4e4f0ca72f5c9214e1813f7a0b60260363311f29d013b9bd533e211a046b980baebcde4916cd9cf99556c9c29d93522dccb32b0cda8a1ff294fda5d34d31d837039829ee9c728df29737a14c5ae38ffa2dafb8f1c92ad28ab18657b19b1212aad636d8fea222085ded1094dcbe9781dd44b53f2fd04fdf7f2c1139a677c6d416dc0f6d2608bf24ddc6da778a045b989817b2168f794c69c50a2313e864da410141edd23ff3265913e36b03fcb7e49cca699b70e1d07bfc66e96c0363b7a1356406af25009e42e711d6286af66e2ec05cac9c7a452401e6ede53d2e989d013a7dbbc3e3801873d339f405c6da1c7d1194543b8057227d709e233187b60e3469addc8073b90f8f84e397d3926a82ebf8cf0664630ca851383738a70fc23d576af64b57e3fed296d8e1510d6e15b06915723f8cbbc95c38eae1414fca08929e5f2aab9d5e85b1fe6deabf4ec857db54da4e4d60f648259790555ce3028ee0eea4f12c463197c0c52cf6f058a5f6ca0d697bc834cd03ea3d096bd310dc4a06b9de17613266f953ea4b554297f1efc292c0e957fe5bd4d85e9c1a7a867bc7f4ae93ef906b47d4775d5a29d866fac17a8868828cc4912c1d7d76432e5bd8e0735ddcf06cc84145f113b23e4f846abea0c9b005cb419802d203cea81a73749c71b3bf590c7b2eaba71f6d630ca4717d1e046f95ca48730759055339cf1d2ba1c264cf4f48638dba031dc393334772a5a4dc4f34402bf1469f0189ba198fa381f44132fadc8732025bf259809b5561842beba0364d885bd4cd71597f7dd97dd4667f60189a94e42137cc34cbb5c5938080e211687fcfd23065f55f6cd2e3d9ea0294b5b849bb44682b967ae76568911901f46899d69116fcb67f2a433019e473e0c7d9b70ca65a3695b51a8a147934be5f7e26d0d023cb2b9f41543daa2a105d24b56b21d8e8c8bffae97011593334a670b8582d61125a6d5f61571ea8b1a510648807c192c49dae5b2f9425c87da44f570aea5a3497035ee20598c6ee1960dc7a85132f7004d77ad2f5d34ef897b19f1dcb9ed51de85272f1d0957b39a1f2c2dc3ebd67edf0810bd13ab311200e31d599d5f5152266def0891d0be07adfb2f0f92d37e0e3c5a81a33070d62fd73d00b6ca4e969c8273c17cef06f815fa267b360c2eee1f58b5179096f30e9200e08ac69fe372f02f3ef2e7e7110814a9848e8b8e20d88649abd2fe2b337be574ad470105d0f534785aaf130777caefb312c1a118d203e4618696355fbdbed122501470b46864a18204623b3aa04a81c854fb786577281a3f21ae4cd4f1e9f586a07b577e9297149ce677d7d24c8d02efa8225307c3fbf0a09eb116ea4c16caa60b791629f81dbafc9b62d8c32ec3e0228031a38a2a3968b1fa90d25f4d37519d20c52cd65da9e25505e54e23faed4666fb1fcec1e0f777abe1bac17979c3fa5c53777eb18b9cf8ff33d12575a2c20f64273622485a619c88a93d40f0738f2e022e0e9308ed848db04e807c04ab1856e86ce699ee10220ca1837235d410f1414587033c98dcdbed3f8419cdc90ae75174ef325e10f8d09c9f23811eb765d7a7b1043a117f89ec823d6788061bbe4d6074ba68b7bb62540f98c96e1be74aa1c94d491e42dddd050482dd38a57809c4fe067a76ac8363b522e2270c4205f0f4362e7a1c78f8b8e454a65a1201c60fac27f3b3ab7083f90a3787784f626bd05b6f084adb0f1be9cafa05aa0bc1b1265a67619a280cbefd03a309dec29eaef0d0731030a8084177f40c3a39510f019a56889ee877f4d4d0f83a641c1dd08b3ee80efa4f73005b41ed9a02940c369b8a3d23d9cad02a4caf308b1e2ba9ac2547e8e0b01beb6687c2a6a4a9582f941aac75faebb77474cf8b1c4390b59d184b56b4f45eead40a2989c069819101abadba4d9f984ad3057f703fbcf509de3f2610481ad7f59ec7a4f8f13575095b8d90723b73ed6975b50cfbe4983ea041648dc840ff5ae287d665c04cc336c7f947d612e5bbbf2bbfb4793ac203815cdefac4182fbba749f874247c9e8ab875633454a2461976f2ed4c14fbf29c0d6a571023079d76211af45173c9c0b1504a51656058b74304e272a39012cc1dbe4a09db0004e3a3c4d3f59eec7e7da80d02c4b2c756d0250684395c222dce147547581bda530e0d1b5f861c9017874150b3d24b86b8d4cfd47ab224554dcb0bdb8dd388f9127ead6a41d0d1bbdcd269ce119f5340c8522c4a9e3b53e03f1980ebe0ea76eca3adb12fe3759a444e245570f8c0035d8379fb9c1d5d65ec4335180434c7691923e05f4d0a7b75d315f35d57206ff85fcc462ec0d047b2a6a77c3af310d6e9259537de989ca6094c845db11bfed1e39f498cd6d95cd3eceaccade27c5c065c2b5b484a144bff3f406b5e7fc0982054412d636484241409510456baa0ae0d5c7cedd811ef2c2739d319aeb5c643bd6d8d8f322f281dedb83bd8e45eb806c1f0f5cb87b7e0b9e372a92d2817992361205332c39ba979b54ffc88b73cc0780a2d802ce7624f09e23a527055a1c03c5636cd364a40767f60b868c6d9a772ac058c955ee384620baaae9f39848c842a41dcdfe5005a4bb11a613cc6dd0eaf12ef8168d47e685744ed2670f84fb54d694de4cf7ff1b7952c38a606c9536d71fdfca57c60f83f33a877f2f0af60df753156b46dde43f9622faba915f7abf0c5248e21c60607d41592db9814943c50e2e272de28df824f1f557a66766fbb3e70062dd2618cd2c7154dc9dd8f36de40aec147bba1998ffc5d4cc54e536a150a14eb19f59c5497720fd591340ec300e0f5304c0e81261f37a0a551481beac870cf62ba07459e5c729602fb570800fc688dc1445383396e78f7a27b4b64b5d9569a8bf8ce1631cea9643504b34d17c0afba3b9edaec32f7fc7d6c738cb37f867ff84d5b2f72279151b372b1e79d3e84766bb204d5aae013b3e09cdf5042d4b5c1fbf3cf0930ef6920af660649dce34df3076116f4b7f007f51990ea6f066ee0109eb2cb52587d814d2b23a3dc252e52a90c06eb22ba7e774a1682aef1f48e5114775159e3595064aa8c9af8d9586514dad095a1ec42f6e33863e64107eaf5ab9097c02a03edfef05dcef01c97d08636512194e76b0014748a4e1f70ebdddcde50217c0f4aeb64239f6fc98e26baa3d7b639e7f977b0f4d99759fb6c49e805333e0daaf4fe2fd1e4a2896737ba0af4ad9eff8662e0705f104b9500b2cbbbdf16813d355b4742fa763541fa53cc6b847c10bfaea1265cc7b361573a8a7e74e77abf72d04385f28bc57ea61fc9486bcee528f944c8fccd0837209e7e30c21b1f338d639cfe975e65b9c7f95064f874c7b6507aee93af96feea19dca28abcc16c2632a87eaaa7d7d44bff9dbd16fda5046eb4e21a8aaf603fd56c045e725174de2af727f0bc67d6cde6e415a52e321f25b19e5dc94e305b1b2dfd7a71cbfa03234f7432eb2f4c379289e5c8b354cd47dc3def88c5044ec36967786658d141f9fe42b9164e185341f4ce11efcc1f0fd2554f791cd6cfc94e60e6a60f132419c8bec286ae3bb1a6e62f08f7ec81f086e72071ac77a680c61f41c8fe26e2136cf61340c18ae32c49c0fe948bd548175860390fbc224469e32c8cef4609a85b66f6f296fddda73dd5b519636b4de4ba63dd5244aa3e63eea4cff8f0e9e8e9b8b5b2aacd63220b009d1b24764dc186f94bffb0a43773fcf7f59b0c5342e33ad3c3c41849f5eca520127d5f23a7cb51f6aa63201380235bf3636db4f8020689610d667ce5b2656645c95ecfad12a235e8735d711f071d89506bf008935b35f76a769d303cf96bc74342bf2e1b9db990eabe61dc6aad9c2753f9726c9e6342b0a8d22450b4a2f938981e14e9bf3bfe88e09b6b2de5e42d309048e932561334127819e98d6f15a5a0420c7b2bae26a8480adf95b5a6637f4921e215a90d9f2e1c1d1413a1af322fb526f906dc8fbf9041fcd1f086a239ec30e35a562c73303923cc68f32e8813bb9298ae2f9bc7bb79b38e719c60bb21d584ead7c477763ba6c3f6e750deb45d089978ac813938455363f9d5230700381d00488f9da1c6cb5a9ad98794ca5a13bfc9b501284959f6aec32b6ab7fb5bcd24954ac9c1b4719c8624aa6265f06589a4ae9d7f6f3dd0a34c8f3e7948ec823f4407f43e95388351bf955390c97ceb5e7a95ae31c1860a1ceb86e84c94656d6b0cc12b859090a1e8d00d31ad46ef992ff10920cf1f72bc6102868d950116f228a26abf21a8463d7af6118e00bbe86c148030510a95140cb90e5f18baf2eefe149fd79cb71a1a5870b4f12d54f2681a6aeb5121a05dbf31e45c294da4804434c2422549e01aef75176c005ae570dc967bb99c9ea27c08885994c74b11228d09e27868af257984afa864040c09cdddd541c0982b99d27724e0eedb2b8518f944434b209f614f0c660a66941f8d15756767e320c48c2062e9515b3b9d91e28015c764db8fb24e143009eea5e6d720b057a1ceb5a7b58433d368101450f324cb9f5269816ab71b75ab8d1f25edb5287392111b8e4e01588216f90ac3fe4028f1b2e12796e94329ee1a876abb3dc7baa49da3193432f76ea82b8e7591e7a8e4427f24317305ba481dd1cf00623583f8bf64c652d45bf807dc96bc89022dec314ab269ba4932cdf2a1aba5e409f8fe175881138a5edb7f8ad43faae86145bf832e3033af67def5ebd1f531d0f608b0a6400cffe2a0a1fb891e5eeaa70f84d4e29059fe43b1398df1160fe7f28f14e2347703cba20a626f0f3aa38686ab4777196ccc34b816a430d3d7cbaaa519b6b21d0e521ced02a771bdcf568b6b6c940d21e3583f7913ca4ac7852bf0706d3e11193cd896848af807fbd8c06c1642ea72561ba7ca7c40e2abe2872ada02b4254dd3ebc942270998e0a66732be4569fee566d868802573b61471a30268fe8ba9c5c99c463e3794ccfb285fa4f2899f2a4b5acda3a4d05a25b44853ccb56455e9e2f2efca8f99ded1f8855b5589a015c389fc8f70320b70512d4b0f30d34caa6e306b03b1923ca51d81bf7d6c4aabaff56c9c630a98d75ce90b71376efd99ed1e5e797cff26d3821b5f75a559a83f0e93383bb91afd0d0aaf6120759a51516512c2ca1bcab1231f9b289de897dfa67b4f9a4f352bad2a889de8782a70f51d9205d0c05a7be38e15586e704494a920d09c56617817b3e37475b90b80f4159bd7528e77444e26b30449c983a9ee90b52657addfb80497d6b3c70bb143333ee782f071a8a3ba22367c43e83f3f8020e1883bc3293904dcfecb5eb924c407261090d05e0aec513b23ca3326f953b7cc826f5c2b14d5dac40cb482df38ccee5ba82a8148d07c27f794fa6fb3c659f5d98474e6a0bbeb38c7f813b25a66ae55396fdb25662c50d07ee40f299e01d8c43a0fbf5e09f1a2b953b13e7895fa5a646dd1fd5539184bbc7783ebc70ce2f7bbfc2d33c8c8dccc1564b90d37d925ecdbea4fb79fb7360bc99024c74320efb80c8b27835faf7661f16f16b86f0315d96084081113325e6862e859fa3f9f21af62d67a938f5650c316fe95772bc276b8f75e972884842d5566522d4421c92d305433834d573b5a123133906de68c8d48a28d1ab9684138b1cead97c3493f51844a20179f2aaa88a4ce25af3acc9a38ccee981559e65b1b02b8283951a03522a4746cada44a5de2a751503f086e2c5d0361eef247a1555d5e6062fe61078a4c27147644ff212cbfafbd5b03f089faa8242b2e2988aef827df219c57774099c6e95310498171b24c9c0a203323e2fa1c024fdbfc89a889df4feb7050465ab48802bdfabd9052e2860fd24775524721de441a4f6269f6db1bbad8815ac5e6fe3313d49f9a6efb503dc239f29accebfb98cd28df93898e95accde3741e9532b8b7d8b42af23cd6c85c149bca86748651286aa1981c415a3330991bdc7da0c2e230aaf4bae23a9956eeb65da723809fd82642dfd3311712e88448bc37a2adf5e2d63f606e217f83875db04aa6fb85b734d6919398080762200645721886f304e68682a4f1c4a5b803689016dc71128d457af58f31f0e4acf0d7f22242ca5944cceffaaa9d5cc49d1c85d601cb6c78324ae63268a9db323f7f4379c7a81938dff6267c8ebfa63f11446118a611622f1e5b586e291df8892929c73be46f074d19e027e5004aae7d65f02bd3690625ce69019842c81bcda144db92fd8dbc958d3089f6ee7f947ef81226cf5a2d0a77f611e8ff61dc46835842a49a17628881fd3d1a7ebfe7003070114d73d77dd975eb168687de23e7f2f2bb6e286480aeb2371d00be2363e3690f1897a3021e94579bb84a89a9690b52f1fcdb1b48aaaf4d8ca40373c93db44a1f0911b05bbfd6ceb271cbd70ad8db45e56fe22a35b1acc37988ac673ae88468bdc76579403aebf6a082872d6c693ebcaa4072851a43b1097cd7e7663a3013d841d8926cbabd91d3d5965c0aff4c17db2303188646842dfdce2e1d8f3529a76b2a69392f730f9dd81de525bd5b403e34d5b14ae1c57c2ce5ea6c93d0b02ba1d64da4c20f5083b7868d5bf00abd923c773651492fea57f4d2274123fc7a46befff40c8d5cab11ab09cb6d0c420822e65d9eee9812172f9cc9b1bb27d6b0e8a224a3bb7ca00e9ab6fd01e5476effa0034a5306815e83288b9c0728e7e33088f87db90a18fc438991b7f5e4ea388e0985950817692ed25ce5ecb152c794e2cdaa254e02d401b246e67094623392bf458c9174fb688df87ef0e5711bc198bb950dffa464efbb597f571f46130f5a4f229c0e3255f82a35acb05eb3050b270cdeae68a4f73eaf65cb23944fd7cb898dde79c9e2c1a98bd595ec9c5f42ca8be13610a1d121c153646283b7c1d51783bd933a7ebe414e36a7a7541150b5dd5f31a3782a7923e7b227ed6fb4ac251eecdbdd16746a8576fc544bbd245b820e09dd1c5809ef8cbc01ddd8358ed38930c82465526b1d597f07f53b6095e0661627e6eb475851ef1bd758e9e32579e2e521c0d92302e8014b0ac5180d3fd2dda8208218826d4811305a55c80be1717448e5481034a2bff306f017e70618322e8e2ee2c653be782a30a5108daf91241676b3098d79aca13f2bc4b82fb9640fa8cafce55bf732c9634c2059767e4131cbed5c1fd87ac2154b1dd71af5bc41961898f8098fc960a476d37d8d37ed99160eb05d35d2ca966b2cc7c976abfd14e228d51ce14d25576b106cb21625cfb197bdf68686cfb626352c3b24c30a5510128e8d45d1dec32d96132031af9e3000ef5a7294ee39391a8f4d136a791f916f74c7da886c8c97c9633b58445dcc3d7ad0e16e9bc9d06f0a6f852eae29b2b0603fa893def76c585755872db8576e7c9127b05010383b7d8072720b3859c777a1bda1f50370dbaddc3fa6cc11047806b44e3a189d48d420e4269b5925565edca13256fc9ea55870ed80c0d14fdc091232ea77027ab0e31fd8830cea7aaaff761b220d85683c93bbd91003891c33ea17c7cd31326b8abf1ae142bb1099c6391141693c3cb5af7ee3baa0aabd1047732323ade4311414a3cf0a9d42784b8aba97da2b5435a88efe5334115500431b3909f6a8e0be6c792492ac107a47829e9c9a40bc59c463d1ac7a6896575d4812f6a203a69d3e996725ff298faf1c391711e2b485477b7409b577f391458aa580c72f2e73ceb9df18de6780d4299d9902317a52c40b87f013e0d4c1adad8d01126e58c80f50619e06fe1f9969fffca37f07d78068d36f3076c3ac8d76b6168b659389fd5d8ece08e9df8a30213380f0763a84a47509f78c9849ab0227f4e49e697728ebce526167c5469d41ff8c53c1873a1b47139daf7e0cdf01078edfe6d576dc928d51e890c10e5aa21ef2dc330b42e6a2e34226f1a9d5d5fdc7ddd62821c33ff94993611ace0a21362ea6a51f45d7f6c0bb040a1f760888425dab25fe8a338d35cd1e5663cbde2ab7f548b5b96b74e57930d042d6cc5dd6495ae70ed603e4d025566835cf5f2e36fac9c10623d375c9038f0ca3b6e6a46008c537b05e6324b27e2f05cb71769b99f9932af4a67d3db278bcd6c66f10ab93b922d9ab64ba1aedd754643d3cb77c92e992b65573d6d3854aed0f789b38b0b70ab06334b611ad068d62e581754201d668846c4315fd60cb58c13808ff75161f6379a301aa85c07b247cbdfecd309a07e8be2d59c8f8b7850391b524d3b8b3e321c38b049b5bac49ec768a6a8ed03e090e37401f9a8e9dd739ba3c242a924038d91105735fbd1ea85dfa04571272eda87a6571aeef50d2e8c0ca18d3823a1c567953a2cf44ab4353478d3fb0d385f0b7e979061d61493bce47300ad67c4193d5efb90d6c475fc0d90350d379eaf8a1ab4f48f57b1f53809ee64658ef30fda2b13fefdee959c3ec2d061c749ae93f9fc5372e1343edf17cc4f0c7d29f306a5e809c143fd125d9fa33c52ba4b6a046ad075deb03f356497b4afbd8b00cf7081e3e49e9e8a014ba597aa1f9b85d4cee0a6e56d2470c381d70078b168baaee103f8bbb7b57b2cbe332599e9d55d52dec2b9459cdbc3ef18c00e9c3c5a995596d2d3fa3764dba3512b510b714f6028479a9099bd14e94b39b1c83b5e02e9b0722e2c0781a5608fb2826ca156afd08dbff2e8af98714ec57782011e5c878be77a430f9f6226035cc69f3cd3625a6905a73360c46ad6e55dfa3853bed9b8bd28f26d2d35a530721cc3e63bee53e0404a2ea567899e47f6d0a6a369b8559a2844cb9e56fc4411271e44bd3bc92cfac343c9bd73cab29bd479ca53862d2f19bd3ad27eee5989c6fc24f55a1c6de615404f1ca5dded95cf80359352d254704cc6c3865dde4fa1241cc0e0b57b16cd99ae4b3e8a7cf98431791d0bfa9a8f1ac546f07c033a55b7a0ca88533bb29d12f4e8cacbf7ff00adc5be11c6e9783d2ffa2841dfa53799bc041fec464a40c90357536cdd0cff5f46f17c3963f2fccebc03bf3200ab35b607b7c6220b4904157a07f1ea9359467007ed0fad9e4fdaeaa7ee39e3793fa4875402acd148204d3e20baba11653833e3f5dff1c7fdca79f1bfdc0274f7850fc129353c18e8f9ac5fb94608220a15c325a1a77f008a0ba30348408d05009f773a5d31334c4c30f46408ba96c2920aa2ab7f42d95a5020a174d15f4d8325f58058993b0f7ddd0824ba0a1e0a3357d1b6c5de00a0dc7147b1bc102f17b40ef6d75f14f46c0f5ec901cdf78371c6994571039611fa5ff3427b499254952fcfbd442d1d339e01c92cd5bb1c7187c2a91c4269f77865dcf15505c2529e8136eb5105261ac6e99129ac549b971efa8fe5675fc2eca1af47541a7987ea25380df299093bfdd52e3a8e88dfe5bf0934c8e92da1d193ce356e2635629c6883556ee6c794ad1757a82cc69d879a171a3d4470ac2d8b953aa6a0cb0bf3e2178a38103da970d730b7866827f68c9d09fc514422e037e54b58481af412bad84d7ca6714441484ff5cb78e2ccb6ee3bc52dc2553abd8b97bb520eae157c0d422b8faa22fcc4bdba9b27e863ccd2f40e4956fc58a842b2d4eff25279c7da429c03bfca76605fe56759c3df46aa44e4c54f4a84d30b6510831b7a20b7830a1a5d9ac85411a3b29f3d54f00d5120572b9c0f55de91a10c9af27045992db07ad8911eb468cb823552706a530e7663d653667d91a59d4c66a723eb6e050f6dcc51f54d93e3a5ab8d7b044dcd754cdec0fe9de4ddeddcdc8d32eaeb96c33eef7dca4cd8747a32446e7ab1f34a0228842b0ee43a4d7d4f1ef044aaf082369207b114a11b6c2ca2d63fa21c2023281ffe36720ab3de55c64f0406dab219ad7bfbf446568bafad79ee692d528c7e1cdad91db1b91df8889dc3509e59ed9cfb2eda2f5905f39f7026aa4e27a6ec753c17c87ded14f3d67cb4c4b12d21bcf90cc115a042a367bfb81f6835648003d515d21ffc62b3aaaeaf3c2d6b7682c624db499866d862195a734007bb53421d828a1ea3351416c7a25f2f15803db5ce7e12a6d54ad5b050f92a299aeb02cdb2b66b0531d5cdd3031d9f6fcf892c68420b05f45d12f474715f2ec2e3d05e67f35818694729ea11514693549036f5da6f78b0660573426831d2ff5dbf283f39b9f284e023aabe2fcb8b9281f0ab8eee81a0557b7877841d7ffeec42ed73ddf94a26716acfe8d3c08c5a18652d85ae68602c0f5a74645dcfce59dd0d3964e4c8b1491f2cee6bb75d8dcbafd41a947150d1c67315be52f8da9ac4f43079da0a09f40b2a05c8372676ec42106489a091f318fea5cea0c9273177fd7543774af134955f2872d3e5422f1faa66d1667a0cba25982ae8bfc00e01142ca1cb2b6375226a2a281dbec706cda566298a0a16a26824c78f30903dd00e8ec64f3c97df53643328535ab26e7679a256fba8ae167ea949f16cfb57134d014e1ebd84b4a65350dbd4ee3d70d2be12d9de0da23ef40507430cb4cef0679eb983f92fa0022349446c16a2a0b024009afd6a8267c76c22b50195f29fb7b61c6b417d16dd47086e9907fe847f5d2fe9299a6aba20dca2766da534fca750331bf47da67a8b86fe8a66a35dff33ffd93b4b38472086f6c2d352e5208de282b5e2f76bf16d09dec1de4f63859b35c59e94041e43ce5271d7c91ce129e8a8c052e392b60de25f6754dbbcbf114df0d1e3d06e8ad584f5abdd84c1e95f59695593f88b9a2d52ca003ff3e5c201621caf552dd2e81d3b7bef8fb263beb8978c1392b3375b625303015e8b06dc5d9fbae81583f5d586760508300449c3cd56e2a1b9500457239d917f5e1309ac75fbe88ae2fb20e680423503670961c34f631370fb5154bf20fd3fa003e94e926698f577ffc84f784defcb88309352c746c87ce66320896037b36658818dfd62f0f13ba13190f5dde866fa70dc0df5c225ada80c384028ac5c18887db60654c370cdfcccd3568a171bbaf13aa0ab2246c80c02ece8387e8effda98e0b60fbc1e2e12980442b642d987b06de247e456ccfffc6a11b57409232a501fc7e3ce12d3161c8cd476347c23292555e3cf1ef86273dd7c96b9b8f6228b0319fc8c675563671cf908a2ad76a266b6d9dff790b48e86e9bc80767be80a0b6eb8087da58abb09d6f9a4ac28881a74df2bcca0c9301d0efe16a77b6b81a2aa4713af659789c572518cb0f3f5640a7be85133c70bf5da0ad382634ab3212ab0cc79648cf7f90d79666f65400b4ad7dc5e64eded47103df6c37c0cdfc9a57275a0a384d6714444b1ac26b364fdb5c06116b6e74e0a3ac8e8b23f6823251929e2ad6b347b4336237fdc2bffca0294268407da0c7a46e82a95e77bf229df307a2492ad46433d778f48f10695fd2f9818097a8b8d36b9e1b5cd87fde597aca7eeaab4ca19c48eb1f0f23319b1b6e70885654f8d492ed50041cc23989efb0a295de80dc09e5752393cb231ee1da961320645776cc30663604a7bbe5e357d8afd3c6cbfe2725362636c65d38c62602ac1bd23d88fbedcd79dd0684d87958b184181cdc34d0b0932b3c231eadf74a74f3b2931b10f443135604d118e9432a948c64cd789bc06041d18c80e50b7181362f0a0b7deae4ed8537aa7ab0a0a57894e1c98d1738f34969bda8fd331279f4da1d0b4f45d752095d53bce5881503743bb1f5a3cdaaf947e76afd48e0a9d4ecbfd561673afddd9de8c5af9eadc8407c9e04d8f55f4327f49138dc9d89519787a0d63e49f25b4615a8a4614fee5c34f8f95d99c13d4bc724290c3d443dc2d357d398592a458761214e8217f707d229c6d027bd78788d9c2df221d24802c37482cd785ade1e8f70319eff62b318d86d706eabcbf0203bec796bdd86a26d6797203327e473ee4f12656af1c6375755f0d2d6830dba44d43e1728b5d0320077b407c0a4855c895469ce2dd050671a732e3325e15373ec8e985cdf1f5f4c7f7f77aac1c7c4350b1a1ce54e294627f7760f7e9980a684c3046a405f50bc06164fd26401547ef7629a275fcec51c2e4573bf58173236948800be3409f8e7d47d0701c9dadd4189cce75bc4876c245c9525b461a384c27112ea2d7073186e53f40fc561c8267262462f07f7d9aa2e143e108d69f57f8740e82206bb2eeab5cc9551d7c1a8560edb26d0c120fae02859f58abadc3c473ad3c1b0581bbe3c112af390df0b627e73eeb7b324c0207028325f0cc1556c63d66e1851b971b3ed3e5f0d0359d5215ac729b6949289421f890c9025f6d983d09e98832bbe04d061472b77a65a8062682c22d5177f591472753149afd82a906cccf422c1a7c98fc3d092e917dfb96c9853d09bf8442c0cbdd15f62930fabf77b10cee7fbeb4c041f774238ad4515fe803f9a84b6206264d9a20832be2ebc1c6a5c523f7eae24084c5d9fa15cc24ab62593916c099f160792b86a495499f221095b709593c2ea9b7dbab0211873ff1fe02a1d17a717586c85e1afc17bc7ac2d7095458ba9c4e6c2b8524afbf70e9dc60b58882160c23c8230a0be084ba97498384c4315da81349b56c91a160b495782c993431e0e2992ee838516d73fd6be01992a194cbd672d27e9038c07afa06d719938d09a014da8022e31130b4512982c2535c70437b26599280027083db14b935facde0016d6157e5cae1a4f15b2c817b7f205a82fdf5c3a2787ae2c0a9090f6d5df603e217f5e905f6531364c660c955130a3018602b0f1679400cca67afbbf539b0535212695766456965d375af21fd76e4d64e7afb98da60cb9cf2ec065a48ed63e4981852215ae1ebc35e115bd1cb87cfebb4b5318e78d0914198f93d504a8821ae1041bcbdf69472aeaff4852b6617ad97540c09b6441543789714e257c3319a54d7628ade992476ee5c483bfe3fd9f1f9a6ee7dd463f605a4d34a5034d68c680e0560b281d7f4615c2e25de705cea831fac1b89891dd5f5839cc22eb56b95a43251acd59fbc0ead85aa14e0a5c0873a8d7515b5ec4e2c4f64427902f8626968852f2bb0858a4a51632765f4d0c2eb8da6488cb910db976208664583646df68b5361705d518e8d83a2c21ea77ecb8b451bb0d1fe2248fc7ea119b4a61c657d7bac62fe3f8deaa44d440966180edd011bb15d83e0eb5ef04db979a760d728b51f18b7013351a4c8821aa0c0d85eb050ea1439a9011056aa808f63fd629490df9584912e34fa99da3078e2bd76fecd81a4a1fef3dd4bc688c62064e8aff2289b52ce51cb3c28cb5876f75f7ac763154df7db4791ec7cf1a65f6811e0ab3269403d8abdae3a9aa03fb2b03b349211b1424472b436b99e7e65c7d90abe531cdddf72553efdf4fe15cb2cf63a78b400f9d41dd62b14da32837cbfa36b418833311c4b8fb2ad4f05fa8e469c021220287c957850bea5244daec94d6d3bad10cef0cbf8f7f7c88401c9806cb689a21fd4973a9b42bbf27fcdb1b96bdf86298b7e0be9d10fedef6d7aad929851a706ffb88f40694834511ef565aa8e487acf93d92bf21ef1e37b6da533e7f25f4a40152d2a6ddcd39db13631dc0f20cc6debdd6da197fec05cd3316eddbe306dad0cc1b35be45fd01007707837f5d92ed55042f615f95108fb2d06f37751df40d44e3c13ccf14fe106645ac1f1198330049b7fc6c41a8780b1fcde2715d41806c15ee8944691765bfeb4bb06b94f6f35a5a80b94dc714c2686ebb0aa053e04db9c4ee64f146611b21f461f55e24f30329370c04f10d2208c4572548389cc761cd64c08c3582143fce9dd0b84410d3e6e5543ec22631b6b630a77321177e436f04f4b39d35bb3cd4dd951201cb7790fb687248299cbcd9e7c65a5fb4361e050d0edf460226f07c03baab6ad87a680251666183c384e09653daa5844502ef874e1b7bf0caf065026304ad5c115ef505482d2611c8a7350a0a038370bae9ce744ae8a875cc1513c670cfb69cee08a36d120cfdf352196fa6ddfc5cd05fbe1e392b75c4f66088f48a5132562a3ea285651ebc72420885b321b5049026c6e75e183c02544b033a6b0e7c5520985d4d07e66634e0790d491c923c023ede5ae4ee707bc8f27793088d3832b7196f57d474381588b32fe0573fecb562f37fbddbfc67aef0adcfe7f30b5f1f1e68ddd8568b4f4f9b195a6c6b7bcbbda59452a624657e074407b2072f67d15296bf4466d9dee906e13b2dc5bc9aa79d958398d4c41f4f9424ceedcc599384c41ec5f4a0e47a0440d965569344ad7faa59ad275a3b8da23a2da31885b5eee46928d9bd94dddb2e7735af9a245ea4f4e9964b275058fe68e926fdee5fdead684fba9a7c915d95d3c4215101b7bfbe7915ee55c01b2a923e47624217ffeb22ee362fbb33f1d5f4d42401ebbb945ab99d7a6b5e3549546e2742a9a5abe9914019cae0e9e29dc1145ce05fcd72f24f26cc809bebcb7fa9dcaf7d2d0cb394de379bf5b6ed3b8e43652f6f1dc7f42f2f7f5f1ee57d31bf68f9c5b9202f4f3f5b4fba4ee8e69f4cf832a1e3fe4b71b87fc35db75a4436a464358b9863732dd577656163723bd5b5e4ca82db899b133a1baf8f274bc8c597afeb9407b7ff767dfa39cc97d543627a5e9048fb834cef8248692517e404a1531104fa1b411cd708dd2e831b6394deddddddddddddeed3430d6ba2985150d2d22ba87b82da27a87f80862cac234ac5dea875148f90babbbbbbbbbb6d97fafe21ea8e88ba20a22e89a81b22eae28ba823ea1c77bb490b53ded82ee64c71f77abd5e4e00f1b73f5ae2981c8398b5a29b447d53d4e10a717058e8babea192c342f7d9e466d96b59ddca3141ce69bd5a665f7eebf4b06f3e8b2ee6d3475af1d53293e738b55bce819cd7ab65f1fb54a45e0d1e95cd83dd62b52fe51f2daf1860cb76cbdd92fb933d5bee6290cd045d0c90e36c9fc927cabdc94f65275a2253fdd2a767447e7f853a3026e69b4fade991b5bd97bb89055de6c96cd624615f4317b2be1808b325f74798a3dc1f618c724b815d4fec7a64846eea5edd92d2db6bdbb69729055d7cd9bdfaa65fab5503b8f7cf617b2438474262eb5e3cb165bb75d949f931f3e4d9bda8c8dff69a595a2abf7e10f9d5caaf5fb717972034cb8f6725a4beac1e8c9177328238fa1aa193af29a79457ba6eebba57dfc82aeb942028a0981274455ed95eafed75b3972f7bea5b29dfb6ecee253fab58fea55bfd6ab3fa9a9552c3f625ae594f954c00f5cd4b099473ccabc638f14413b4e41d1966690250be27c8a20fb16be98b0f3f999934fccf3d269d6dbc9cc044ae9161962670c9fe918be9167cefab46ee6fffe4b911373299bcccb3dce6b9e75e76bd0ff2f114d1bcca24f32ce2570f01374f4dca23f844b7fa0494fb0474fa99694abd4a74fb0a5d7885ae50b7b8e42ec76df3664e0de4f4036343bf46e8bed38f10ada71f54d2e967da697bb6ef0a9d7e4e3f572809b564339b4926a48f74423a21999862a75ca1538fe3f8c927f7127985aedd283542bbf48db5f1fad136b3f77fb4d6b2231649e967f8529b69f66f46a995dbc5d9536ced6bde52f6a46ec51efa1c8dc203c4ffb3f11dc3440903032525252525252525252525252525252525252525252525252525252525252525252525a51d1350e7dde9f51a1ada090aa24cd8a14c804490a86175417777b77ce9544e6cc37938d94b5cc8fa6accad488228e83e477224b7c2c61a8bc15ddd00f33dad84c4871f24be2771887d72c7c1a59438c839e7c461524a29c581d65a6bad385420f2ef89ebd2fd1c1d75500725250d0dc5577c711ed7a5fb3acbe16081c8bf59bfb747457ade5e10f79aeb9510fffe987972b77de242d6e7b0ec3fee402e340473771d59a42e29d54bff6af5f80459a16e28057ba2560c26d9b8d4bd523defd3fa096a201ba4d6d11ba58860f168e8657b3a9fd4cf03c5a02864b3d44a7aa4d451cc06c25a396fd3e31188f740e8f3f3e3400ee4411ee4420e739813191d2165e8af0c21843008db0809c2ee19824123a3a32324a12108e34f0cca30690929090942082d1098e338473629955381e4e4e4e424719c202bd40da592289024d6765d2af5df6a25d9b8d4bd523d413e13480c0a0a0a0a0a1ab2b08e28157b2c81c4236bbb2e95fa6fb5e2d1cbf6743ea9e840fae7e7e7e727c906a975f446a906d2b11ec7b1b169b5fe53a9aeeb6caafb54ebadc973b45cc8721c998fae6f20c751c0f7f016f8d8f9f09b66e9a3be7bd3eaa1e3d4bcca450b1938c68b1b3566ecd001e473e0f0d103878602640208e0a1e34ce08548e083ece0f0d07130f0431e3ace057e010f1da7029f80878e4381dfe1a1e370e07578e8381b78083c741c0d7c0e0f1d2703cfc35b1a74d14597fa220fff16c1dfdf892b9dd29bbaa00ee8ea9b654570963f4ca503ff2dc7e9c0f7db380e91efcff1be14910ef480a1bb388037a0810c600c60e82e1ebc0b60e82e0b7815a0c0043074d70e9e043074970e1e04bc1cbcaf97320e5e033074d710ef6ba21c17e02900437725c04340fc0360e82e21ded7413988f7b5d08e5700efeb57f6beeec99100ded73efde3c3fbe2510fef8b48318906ef8b4b3bbc2fc274785f24cae17d31168d6e785f048a4135bc2f0acdf05818ba4b467c0f437761ef8b3dd05d313ce8ae17de177f56de078f728c2e3c190c834430e62e93c7e1cfbceac11895f0908b40587bd663c7ee097060b8de449661162428d15d71ca304b9630e414941109a8132dece8d04d2c1c8858706f8f8edb4207bdd8ddee2ea59c73c2186377bbbb94b2dd5d4a39e7a494c2186377bbbb94d2a594734e4a69ad55ce3929a5b5566b2d8c3176b7bb4b2927a5b4d66aadcdb20cc618bbdbdda594b4d66aadcdb24cd3b4f8d60e6559d60af74a97df1f1b36843d7d0a3b9fabd364a252a6ec7f34cfa23e600c921c0e03f3030a75e4e50549d725399d94984c4b380e886d63726f109ad624cb9c58fba45621288532e53b95486414e9479c08ef1fba0869c423be73d23aa5d442adb54eadcabcd094439513bc95fe7d41c1741c03e247548c3246af12d3a2854c6cb1bd70f4de3b3f4a3b55b3a6d5ca5c9defc2a6ea947207157beefa2e7fa5cd703b734ae9b1e8bf85b9696a8350a759ad1a1b8fd1e7c728e573b1caad47b7fd0cb764e77ef634629ecc659eb32cde2f723fbedfdffed25cbfabfb3173dc0d50c8f5364f567138a529b654cdb85799a9de2a89253bf2eb4799e2fea379d6155cb490ff5d540c921c5f8bfc41a498fc412437423d1888c3ff73010393c50f2814ca0c475e5e5eb040d2755d19929c4e27322831994c572ce1386e09886ddbc6c0e4de2b8620344d536a9265591727d6da303ca9b58241084ae917a0cc39f37f3069088944ca287ec41de2d0fe87eedcdaf4bf94d60d3e0e1177412259e822c574e6ebdbdc2805381d368dbb010a712f87b97143b86a9a2fabdd34cdf4493c10931785572ae98c3401f206cd04e19f708e0d843a5367feb6554e7b23508712d9b89df944b0e7ce9016a1dc5fee4d5ccc5b8db75af47f34ccee15913d421c92e3b8253bfedc9b3669379309a7dcd5b96b4a879d7251fe957263c9ff2d5a93895bb2a3bd65b56ab42ae4fe4f860f0cc01c2d4d1be801096cb5cb630f50e7c806a20f23300712d2490922e149a46fe626b9cf0de012f3e48d88678b6dd47ebedc984fef9c104dce8fd9ab47b52861a64d19b5ad67b454a952a54a952aee55e847a7e2c6762979d8d8d49093232775d67f4dab453ba64b05d5cdda4d4e6f9f308fdd4ba784b021eceeee53777bb79fba5bfe4877195dca54ea63cceeaced4ed22d4e842e5b1dfee71edda5bb9c1042481dbad7aa02f9d13fca00d8275547ae42500875289499630e210120a3703bd9e37022b27f9438f3e3fcece3fc3be59c73663168d26cd6acce89ef67d99cd23f4ace00f3691179c2afe5ea2bbae6b2afc9bc9a6d9a0552a954af973aed566b2ba5c19dffa3a78c2eb321dcd8377e8403e87920f62194f2a14be8236af76e38070400ae8939faa98fdc2f48baeb7d3a5d92538f9312538e690987c301b1dd6c4c2e0d37088d87d624db9139b1eeeeee10ea384e4de624cbf71900fba4eac855084aa1cc39e7e4763ce0445e6598c5882b72730c90998af55a39a04efcf90d2101e0324a960f714c1c9de7fbfc9b518e01f1e95f7a9f723bf7c6d7eee63e583a343c07c402612bdee47e1a354d841a5a34b4ee8d8ee38b1417915b779b5cfdcb6d93a35f0375e2f7b77c3ec7edd46ff9e9765b97454b05f6df6eabf4218e595f7ce0ee712584fefc2572be7d885742a857844ad7bfa473f6998700f728f59a78ee87b952c1960addd77d0b388028be55fd269ee97fccfcf85d0f200aebc54ae9d3f94d3c4fef53e53aa58b4bf75ec82db1ad04089e6c1f2a09d2595312cf50f1eabe929aebea7a426abedfc473c5412b9e8f95588f497bf19bb88438266cf5cb2c7713e7c9622301fb5105e5b144a53de4c8c6698396cd235ece302d1d52a3cd66830229e47ef9318e632369f26703ebeedb6528050a68903f1b2dd62a6ca1c342177f5a1953a3115d7c7843fd882efeb7e5093f421cf0e58c815d0c0c4dcaa957eb4674f1e197ca10f68dc736a26b75cb8b11b2ba055f4a97d23757a28befefc9ec040558c5d6048f078450840518943002135bf023908005ad677514094e8a2b48514596def75ddbd4c8820eb2fc98d40b1611044d2c618a12b03e0b94bbbbb9210dad1bf911d4b90fe5436db355c8d0af90e15f2a3a7f287b7a7c363cff629a658cfe174f085db2c791a00eff0d73f123d8d23c4fec471087bfc44a8a78b560969d637598bdc5daf4a8649e1fd51a638cb1c5826fbfa9e83e236e24ebdb2a6fadd527fd8afd69adb57ad2b32b20eaf7069f6db56ab248a10658c3923815fe3fa18bb6564a1f72d49545b5b9e242784ff2e5df1c74a7a5bee15efe098bee95cd2ccbdc9465567a57b2940f6d1090bd70938e3f9fe1fe72d88f7aba385742b2d75ef3beec797286ed13dd922bed61b657ba255fdd9216a85bf2e3c9b2275bdcb9b90658696dd7a552ffad968d8d73913d8ed43731e60c730e658ffbf3647f7f9ef90ed4ad6ddb6c8dc9f4fed7a7bb57e31eecd69440dc0b26e62e39824e5ec9525ac9524291e527a534ce2681fa2666f9c927b2944e642999c8f2e5ebe538f6753232795faabbded7bd5e5ef6537bfb729c97fcc9aeedd6368ddc25ff0a75d15ab7d3b939e5fc59b91dcf3cd3bc8cbb9a6bd7fd5e99e11a295acd6b627f2dbb3be8a46c6bedb6bdac96d36ff265f1e75a720b34ede7ff68ce7d6aceedf8bcef784ed76e743f6d691c08e4b474d270149dff067d7acc5df2339f4e736dfacc4c9f6198a377525edd92fdf4b7ffecebb4347385d0c9df5ea7a525f2e5dfa6d1fb7dbd8f893c199db69c8ee49cd3853a1c74d127769f37bb38d3bcd351b7e4c9a85bf2b4e594d437d6abff464627232dd293a7a51316b2ebc9f27d7ebf0cd1023856003705704f00f70eb891dcd52f01ec3a608f400b02360fc0391039208683510390866006e005f428c027013f08083a809090a11b8882c40c60b48364032e0006d2937d7efc10206800420218aa81c80736ead148399d84836f7a68f0e1f1b32328003a3203728df7c55c233f085de4a0d07d2d542f5eb9bfc5114d924a4835a482a962aa24c7d1808fe36460263693b4f25909ad62ab241a1fc7d9812696ba61c3d5aa4163068b011efe18305ed0ac6654367caa00ef42a6450c0ceaa586ef7cfcc9c46d387fb5cc563adf2607eedcd50f000cdde2a8c130dfc05fcb06fe6cf2a712fa725af8834430068d20124c824bb127fac49f1814858688be183352e12f227d31292ef5b4cfcfd741423dd4441d43eaa4a51e9f9fa0fca984549f4ae8458f1341562c43193c388ae8c173c35b0849f05f490fe6486df811837b89101fb2b0480923cc08576a62b46204f7fe207101227584386c95d2c75db0bbc75d50767bb7475fc28de8eeee2ee53da5cbb94977776f08b7114cf993e1b7173ad82df8eeeedeef4b74f12584dffd1e821f6ec497ba6ed95b956b756077c0fae2cb2696d4dd493a05b9bbdbe6eeeeeea69476777777777777777777777777777777777777777777a3a04e13d012cc1f37c06cb861524a29a5734ecf860432531e3949e69c73ce4967d29c93ce1e81ffb80166c30d93524a299d734e1ee80fe956a43cc0a40d41ed4ce79c93ce8973a0f4d2ebcd39855779709c2494524a97c8b433a5499e2431e9a1d4052b98c20c5c807129410da6e824473cf47b12f79e0cc941070ab8c8300b962ab2d63847490802edee2490f0c33b404e0dad1a9b6196221dd4e8554c300353223e0a29c747c150595044397ea82254cc7f28a31ca3d7282c45e6517f2b10c4d151b4781486c9f044dd487dd0c5f813c21b63dce1fef6d6bdb35991de15a12a5483ba5a6b57a7ecdc29d407dd57aba9c67cb5181c457d186ced9d7142377d3c39e66aa55d2d376e6e105e087fb4668a524ace763ee1284e1ff3f2d75a9bfd356d17c7dca3cbfe5e6ee7e53b29a5ac52ca2a6597bd0c05815bbdd2bd89db319dfe62985f6aad9f910e05e3b2bf2eb60c4b18beb905a67272d7c953653336dfd556730b1828b6175c5f007164a8a1dc347c55884acf034179d05db5eecca0e0e709a030ccfccca020f7cb6aa56fbe1914401d2885ace486c1ee76b77bdaba53c705d1b2a43ee83e14cc43c122fe4e40b19865ccd9c3c0d45a318adb99f98138fa333c13d4adfe173c03c58c100a868af5cd37f39361282c28a2a2991fa8036b0df2ec8b6ceb08694cf5b52dcf985a10bb0241fc85ee43c16650b0dc8f94676019cae02c2b065409304b1878d0842e84000a294441094830022d420d661232204a024217247ee0022fb2f2022b33d801151b117a20842c5d959249900256069b2c56889b0cb0b414a2a21823823f45d07d918828c6fa06f60bc98a6e759cfd8a483d76ce49f46a29fdea57df78c7a48e1d973a76e9b8c4448e1f9762972ed108e2f4eb656241d73e46be85d860e83af64d40bb86c43c24b3140fb9e13bc8a51f69d998e4f9105fd83f9f46c9f673e0dbc83c7940269da14d3f95df5b0fb4508905af52ba6c776cfda364e28de5cb710af98a0e7e7b1f841076777bb74d8c37f48d0d393c60518e9fc38307ec63644804fb40fe204c0797e320b7fddd2e11104010a5bca08bcfe1dc0f089e2cf30b02faddffb67b5f7f9398e59f24ee9e5e6fe50f81c83ee195bf9022220f6609d4716f8a3d7dc37991089291910ef20984db567f3af8d795bafa99526765093af8f1e2ee7a3c6a0a3a1d28d0b475e8893ddd7a451e724b97d279e8d609a4f4cd52ec89db13fff68824e91b8ffdd84892be694f7a498824e9884057442a820a32448a3e9287fa8b10ee858d43bfa37f4fb27f4f0cc09357b07e10fa15c20f221f7a3c8d3f269ea7d76568db059f27affc83502fbbb71222df3f88f4200f8dfd3aba9fdcaaf57ed8dd59e7f42dc4914fbdce6e9d3d699db55be75e676d37a45b31c6bf2d77f7ede1df0deb808738d461bbf97a0fe99b1ce0b7ff0d8e238de8a0e7f8474e0dddf29cecd7aba15bf7fd7a3fbc9c9c1f29883324d6e1987ee9f64af640ee85dc0ed95b2f8a8df8abb1ef89101538838a21905863cd29403ef58a4caf931d67a0c5688b16a32d46465bb61869d1a2a528a6a528a62516d3a2255654548485a8080b51111151511111162c58aec0b05c816181c1b060815db972653e64dd4f723207ffe14564ffad6fb6ec43900be2ad0c00a590c195ec0fa590c1506e2531432b52c8c04a8ed51cf4000c2f8099e10b3e4c584a02e703335c236a18a108c6859c0d4d71218bc341f7d9e4f8368ed3dd9de503459d232426a06f3acbab0439cb30cbcb06f9b3544c20832c96d083042c185d01a49190db045da06224a5094558816799129120a5b94869df4aefb21479c7a593576059a6d8cd899c68b353d26a83249a61162a3015465414517125cf0cb3506125a7a8a0d24f5c68e5e3129ef8c64202f12e65edbfb4b029b878ffc782b8334b72b9f155d093fb6b6a60c5a46ee5489102236725b1fa067a30462f4196659ed9ac66349b99ccb2ceb278ea620c9a9f61c932ea99cd6a96cd4c66596731cb54d98c67f4b32ba467eed2adbbbb4b77299dba4b777777e92e5dbabbbbbbbbbb4b77777777777777777777e92e5d4a7777777777777777e9eeeeeeeeeed25d7a7477772d831047c782aa2ad1c7110ed562c59af147b86e5c4bd2bac4984969eb354b9a93a0cea4f24ad192a08e9b342cb424ed0b50477ebf0686e883c9f76b5dfae69abadb7399f0febb3ed789fb739fb840f7356d06f3e225d3ec0d1aaa4cb3d48a95559b3674a64a28aa155b83b46c46c6dbd7feab412f302f2a964a548b6aac0a512dc976a592d6de64bebf0255a00a54812a961a5481a6f44ddd64ea8c0cc9a4c81122710bd466da0bcc0bd50d1af39a3a17341e0c282de7502d56ac197f84eba6e614938ae1a406566283861ffae28267860b9a17238ab45cd0bc34e14486cc6a88776e87098dce4d313662c4a4a42861c5a44c733bfd476ea7c6c799bfddedceed40f14ea88d5e6de9c505cd0c9ed82f2e68dc058d5c3297187971413383e78816f51717347589911717342aa2a2223bdcbc749dccaa9359c9ac743ca1d287ce098d4e66659ff8e084c6104c78b8c91493dab123868d76534c4ac6a4764c222811484c31a918366eb076eca8a698d48e18362c11484c31a918366eb0a428991528c6ac0265493310d49954562b1508ea78ae5054a0fa02a843e4fb2b0ca28f20be4fa83a54afd4f8afc22a964a548b6aac0a51cfb4161846bbd9919fdc8e7ca1ddac76765d4e1b0aa3ca2dee5cac1b5d1b9816190c57a6ddffdc08a605fecf93baf8924baf152876a5d2dd6b73aab71ef398c7bc8b6b714e6561b8880481a1c41c20c1b1ca131cabf001c72d2cc1fd0223b8615033edc2b4c02f8e48ba9d50335fc37b4199a698540c1b37584abc9359c9884d38a13104131e352f2e6866f01cd132a24851acc2189133188604464099c1303528950f4db854318670a28a81f2971492233552305e7a90622305e3659e6494309121b33a2d79b5645627fa91dbb9f1f1c5dfee7ef2ceed10a1d1c57095db2acc0ce6c1431a890d33837d06f390404c207e8099c1d2080f141e3c28cc0ce6218d54207e8099c1d20809fe5319e5f08041a154316e6e5c3ea0543154316e84a0f243a962b87c884d38b9b941a962dcb87c10e243a962b87c884dfca78a6919a287bfbca460e8d05103c94b0a460a868e22a84cf292825103c9111b3a74bca460e8a881a488242f291835901cf94f155369313a9d64563b76c850729259c9ac767880caea2799956d0f3439c9ac642861f29f2aa6d262443dc6acadd749a573df31ffb93b13a00e11dfef4d883ea27cbf6b897124b7e2c67f9ee45d7cc9a557d7feba733b33de5bfc955206f193db29f277d32c172beb36abdcf25cec1b6d99778476dfa8858b19ff7d52975f7a2cf0eb8fac7fcc63572a6935d17cffc73ef6b18f7d9737fa9896bec94c34997b471011c5034d8a4822c407c40fb8a360b5bbb57031e3832852b92ee605eb068d2744e84966a584496b89d17c49c1a881e448f7384a15c3e5c3103d6a6066b034c20325a783d0c9c4f87c281283864c07deb99d1e88fc9592dba1f1b2e6636892205142c38af9c1c8111a568cc3ac9a04e164e5c100b184c9ca83995a922909351365881b331825c413283318454db0eec68fdc0e4f8dd48bae88776e8708997ad15594cf476e271ef1f1ff7677f4801136fecaadc5cb1647fed463323168f4e851e48b2d138386c7a0d1437e607e20099918348a7c3e10e9d183cac4a0513f90844c0c1a457c20d2811e26f0a96056fa46a6066856a00a141343c3e2c1434992181a160d8b87124af4c4d0b09424417284078f181a160f254994e889a161294982e4c80f467078b8d492b4241898957773e3a409ccca5b79374b2c01029895e7a449104c6e6e6056de8d93264b800066e539691204132096e4dc4c37c14c30146a06a366f00cd611022a8780a243076a06ebf84f050b0113a8197c23ca10508478b2830e8af269948f4a081563d6d66b96340b419d49e58eff5458544250c7f38bff54575442aa1c409d3882ef5755893ea208be5f65a56fbad48b1affa9885effa98a78fe53c5545a8af84f657443c47faa2d34fca73a52c16a8ba318b3b65eb3a439067526953afcf75c3e06753cb7f8efb7c49e09502792e0fbbf09d147f4f9fed7d237a6974772fdf756e43ee2bf4fcafd5d3cf0df2f612181fff02bf77f7f645f25e4ae7b5bf5ceedb4de5dfc955222f193db895264fca594dbe19e66af12f2cea07039e98c2aa7d8fcc782c272ffb1a6643362137f379690ea3f9695dcffb18672b3ae20f11f0b965bca7f2c2c3900ffb188322b28fb17afccfaf9813a598eb6abd339258eff5850e4ef593f50c733ebe75929803aa7ef67a920fa80f1fd36ad14ac8103ac9f01f43c100efcc7ba925940b97f584f34eb07ea449b411cf161602de6881cc011cbfd33706e0203210116c2074319018e3910018e55428063154ce0b8852570bf0004b861a0046e2a7a704701e6881f3f809d041047fc9804f626608ef81986d9b8c0aa2d3270fc88048e527000b0883a60e8ae7804b6f1048e466009e017784784c517e6c1456022f0110a63ac63290a1e0243c1b05b42e02778871beca4491098497c20f012ec9885796025380946828fe0f83f602318a7c67d62601a3d7011ec032682e37700f780a109762b76b7bb4b29e79c30c6d8ddee2e618cb1bbdd5d4ad9ee2ea59c73524a5d4a39e7a494d65a618cb1bbdd5d4a29e79c94d25aabb516c618bbdbdda59c94d25aabb536cb325a6bb5d66659a6691a8c3176b7bb4b29abb536cb324dd3eebdd6a108d2b4bbf5e87ca85b57dc4ab7a2ff742bba13dd8a5b8eba2c251d71d922058b232e5b8c7a4a075d810d111561e9a086a2a7349015492da55b3dfd4aea6245fbb413cd4452172b90a295a1a21851b7d1162d4357a2952814a55bf1159d883fd127ca94f844946e411bba05892860d43658b1811bba556443b722ab5bf1bb6dbac5a3a65bb15b5bb722c4116310ba0c08e40076a20d6800dfe0aefe0c602218c091071c2f8003a359a8f40b5d095aa9684400000082022317000018100e88830249182471a6d77a1480106da04a6056a78b2331475114328a1903080122200200000383c1280098ff2230dea4155dfaf9503cd164c2cb6918f7e19dae1c22659231483a4a6480259bf27e8afc2c18863a1705e3ea98eb1ddeb19b3032a3069f342b470a87eaa42744b68c2629d74995624d28f18c28a082bb6a1663245701a0a41d9c6df30426466f53be164746354d4657d249a5a94c2b77d3c322101d27dd39a68847aa294d5f48ce714fe96133ba92bbe38eb6ba3fc5654da5a140d36d071d4858d63e137087d1a7ab70d3ccd8b771364cc087890639db3819c05a6a3e63278002a320c754a0ada4a980c7495b5d14b0da6016c11bcf278df3b1375fcc875272ead192d2d4293aa8807f438a2f81921d32404ff7f4624d701bb7d2f48f51d38817d7b4fd06a9497295ef34a86c7780c8036c826289dbb2e37cf435e7fbf8210f356dc1afa436a70f302224daf7a37b6b6dc2d2b174594f4d8386f4e027b7d3a771f93a19fec43d2292ce9613b3769c87862889fa680a484d3d5695c9f14fe6dd5bc293963aac7fa5381d2f746a8293f3b646c8bc66871a6f020e0a8585b3c31580392c5f314e6c5c1e5302e000790b72aa52b217682c873767be80234ac11de35a19514a3f9aab46d7baa2d5d54e7423af0d0735e5a5b3975678017f299d4ac330716b13412268cc9d80f82b403187d14a44f044112c5bd807375604ed8be961b5f02cda81bb2b2e85bfa3ad3695e5c4e660a4a756abed6bd30a0352d808076c7553fb3d1ae7eeb581ce8924a54c3916f6a48a81a95e1ccb5c9df12a41d9046306ccb548665c58d429bcb573b0bae82d05663aad643fb558ebd7ff0d3df259d6b0a70ab4cc940c05d1056a5d27bfdacff394e51bb4336bfe05a0b2d5785a1c734fadb709ef3fd2141e533c695e0028e806867e94334bdd1402b0d9a9b7a75d6f72bfa2c4281a042c3bd553c95fe1864b607585f516b8e326be4f6a1f18298f04e60be1da0a2c2847c648c2153c7727a9085ba124c7e7b3984bdc129c1a86d5745a0eb2527a887aea72bcf81203d84289309f11cfb0cb8d22b9dd63f69423b6167099a8e68366157fdf1ce5bc7264f55ee2c0ccd34cd0f5050ec32fbaaba4552b78275d19a192f612ef1243df13049898f154e500b189f77a5f59318bdb6ab42cf4c0b02f4cf7542eab457059b209b87bc4d07ca02fcc255be2a67cd8f71025d46c00cb9268efba53577538783321afaa0d9e060d1ee0accd7efa105d87b2570301d7965a3026c63d61580c2900a397784100a5ed2ef4b33b85efc49acb090f082eb03805761156e1b1c201b5df5993fd9095c0e01626bec723ea7dda22159928ac89b5ed826b4f7dde196a1f9013d27603cce167fa688a395f5ce4002256f901d3621e1449c9b3394789be4134f1d152ff4664c35632fc1b71a85931d4c3dc8841f5c2b29311e742631dd9a9f4b19c80a61251e1fbb2eef5c603766c054daad7727187752f26984d1321073631781b110ed18ba0d8451d0b84fb8d63aa50dc7ffa1317137e5694890baac3002ea60600be8a0061eba16add49325f0c2496be7342d51bf8fdaa1892683f5496d9ec8fab88e79fca71ec52af8dc3c4298bc90bde5a139bed18cb45d77e73d3b3e27fc2fa3cfba665d00fdb0aca7bcfa49e040cd86e66d4b846bc19a678f5fc9a55e884654502210d76334c91c5f13da99a6837691e6a0633da6e1a942b2b0c3c0de02f8a8a7d0015fc4ef2ff6be357f3749bfe5ebded4825eaca6e7d33bd9495d554485e75b1351989031c47f69805e94f37791bd8dd414de740264a4d7949991555759162071e9aa770d65901bcdb17c18acc3373a0a3c1de9b5565412607a7fd2b30861da574d8829e61aabc209aa0af74817a194f29938f8fd90a4e3d79232e64cbc8f6fea1bae0c09e21663fc15055cf7a1d5567e9f65b621c1ba57e58a22663cabc24aaa0cdea699f4ff7b71c6d38d199da9c77e240d80674ddf510d485e0932577bc42a97037204390cc1113e7ef1f56ca8c2d2450074bb8e34c95174411e4350bc789e4d92b351ca059394be370ec737604525a78b5255361c81224b6aa4f8a1ffd2344cb29d2d1ec487bb271f55385e635f7d30f9f63fccf62d6b84ab8f6389e4ee90c07a5fa20e4d4e5229c8e8b35cdbb373aeb27e43c82f2b23a26f50e630f6c08d015228ad245d02cceed23a39d888a6fec07904feb25a9428e9326973ff1b0d081a8b407ce48a002e2a516cdde1b4b2f68e0d61f8874514c8d1781c9900225283ab127ac1735e718dd723718244050a694da4fc783dfb9fb3e9a8ecbd8ed26b94b96abfa68c39fb88674ba3dab7a661cb463138c1acdb81a46c01002f909c8f37029b502a6cfe99bb1295f40485abbd595833d53232ab102f431c7b2d80d50c1a8c9311568333b2ee099d296177a3e3ae3beacf41b05e8a0282843be6db35686487be341f4b6ae1cc193b68209b2b3a5c8c8bb6ad11af1b8d33affaac73bfb9a4f5e716037fa18c006688b469bc9a7e9d39169dfac89e95f4623efb236917db488d061be8fe8d16346157bf2129e1ee31beee1e70687bf46f06a24bee9e88c94accbb89185c699e4ee700997e2af3183005c8f71e48bc6745ad367715ed618c8f478dc1e33c9f938983e66df8f3ffff1d0806c1cc8b27941f6714760cff8256695fccf9243efb11520fe78c9c85a3079db4c86d373f503d0649feb26f93331abd34dce8f6efc381b164a8c7f9a4cacf0b8abd7401e62bc065c6c206183c8447289d92f931d8933a9fe097dc7fb9d525e0a6ac44427e683def0e5e125b30f931fbb711942c526ab6403f8ca726fbded37a2e56df0c2139a82aa4a49555b3b8e70a96c1a1fa01f74f5faa55162602a9420b20d450f51c5868ba07d985b11a052cb9ab7e7c8de4a2edd74e2ce96869d68394d961d15b1ce72048f195859251209be0fdbf82f8ae682e57bffc9c89016297088f6ec81f75c723196657951f19f689958fecc33d8415401ece9a26300f527898af847d28bbe417713a795401da4a64ea0484fdf3d043953e3711fb67063f5fc6d82894e90e8d228fc0c687caf75657225e34f005dfdf5c3b489899cfcebc01785f31470fe268e7fbf71e116df6feeb0c3c88080c1fc7c598025356c601d693e1c9572bf2152b044f4a42de5927aec194a401d1de94c52d2d90689cbb482a8cc592418482875b0473ddb14b1441443ae0949c58e16bd3457dc413d9bf8d61dc26bd24d10ce1b09949b4497bb630c94aa02164b98a9833dead9a68825a218724d482a76b4e8a5b9e20eead9c4b7ee105e936e8270de48a0dc24badc9d0da15415b058c24c1dec902d51734cbc794e1c984ba208fa0ac55113e0fba75a631a59ff739389a0819d270f291897eaa051d299402a85f70381e625d9a570f287e19aa2a0f73e5d57da1262aeca6ef9245fc59bf6c467c0ea4d785fdf010df88f3ae70563fb984b1d6ec4df33f0aac67535ab47e79742dac110494f0ea5481ff143f5416cad117604c6d555aee473561f86d464f519473585bfa7df69dc49f1a9bf7156eaecdd32ee374ccda09232a75b4e33872cbcbd42689d20c68e0f7460acd4503a6625ae1e53d9934eefa560534e056c166fdafb4d0968c079d4b92e18f76302f0700dfebc81a31ad7ad59cfdddd9168272242e4c81694d4f188b2b9013a02aa23122dafb1318596ac057a9964a1fd6350c6c808ea8685f4762fe0c0e534fe2b763266eeb5c7e86bef5302eccb188dff671e033fbdf06b93b4d2d26fcc84ab70ea9c5547e054e6e5dc96139cc282be2cc75254fa384fe340b2950d98f62eb02ac31faca6eb3813846acee50e41cb1dcc9bb756660776aa13958219e7084f165067ea3cf7fe3f20b5823c00b9cef134444670c3a800e72a792fa676103b012c1825392605325f4402de95cd3d84fdb778cb5cfea3ab02bea0c5d3f01f211c84e5f4ee2b0ed5844222bef88215d172662516af4898cc9e63c27ddd81e7f4e702d8c7bc59c17e288998d7a74c6b957b3d1a37c8960969e3fab5d999ed0d452af4809ca169fa805cf1574ea10fc5c5dd4070009ba03d2c4b1f437ce398b89a205a914836ef646027caa727911de43d47a3d8c1f314bc2cdf289fec516da63fa87b65c637c2ae9511c4174474d663fb15c5e61b66be797107e04f679c949e2c97d4da933d46a3fb351b5f32f07b6e7112654d2f312fc17eca43844b9bcd44cdf5445e857162d7fbfb429fa6deb3ce3ce8649b5962dc33f742e848f40f8cc977021408b77573f0794dddcce69b882be67f5306d63e81ee78eb5056e9fe6303a8366577a4b0acf6e4bdf548085b47ae596c3407cedb342c44c28b3e7e60823bb8d500ea647e3374f5541ad76939d0cecc095adbbe305b2fc05961cd0a9e2187bc762300db4a2c7b2519322cfb511bcda5586a8a24f5357bcd4546195d6abc5bd907c95f51103b241741f5aa2981fce63528c7adb7a9b2a952608728e5d38c1b7f36376228cfbed6005d9f75c20cb8a1abb1b06bdd05bc2be2b712d5ad8d32f148f2c93374061d4ddbb5de4ce129de7824fc1bbf99985fe235e2c78177caad646b75106f81f40885084627a1a3e69506cba398b5c2b61857c78798198e8713e6d8970f3adff2cd845a8002f36ae2d30979bf84c9586557644e64539e9b52f50016f0c4ab34182a4b7547a3ba6723b5bac9e61752c7707a535d0e50122268736101913b455026f201ea0626a606169c029d50339af547dd60501c718cb21b729b5411daa1cd51cdf41edc96eed0531a74d5fc088a1854fad1c625aa859461b263a424fd20f0b960add22deb7a4f1e63e6183aefde916a956bce2b3353547540c6e8b944c34ca30116ed20b212ed04f47ab07223e80516498b9e1af21ff3bc38c8830b3ba974d311c6dac95ef8c3101e50d1b244cc90896b3684a9f5b40cdc6aa24fb5fc5abfaec30580ec04fd7ef9c1055bce00447da9fb984824dcdba681cf49d00a06a086123ba5e807754b07cbd2bbfc9c4e06085c88eac3ed8d0767b98214f595e239fbb94e07000a6369b9b8c7ecfbc9e98a99cdb014d4f35e9991c6e0ab2c96e89dd45e551f80c10a96650f5180b27ebe8415a07bdd2af192e91066497c81be3f68688a60e5023615aaac03ddf818b90faa90166a020bffaf59b491a42903f89d8d644bd00516ecbdd09faeb12ed043546c2e6c397b2a43a7dd0151da38e9c2172d8f3b1699e4b92772f7a1942be9e4986b6fce4163602d4a90a53ae3880011f2db96e9612ea707a9c1ea217711316147408eac0a1135937408b3ea4187340a2658bf8c41ad1955afdbeb91387d5bd24bf893a050fd2b2211e6648c98d2635ec1d699b8403169261a352659efc34197e51032b8fd0563840bfe74c3e019c08787244fcb4fa681785467e8b8fdfa545311a3e103c5914b44cf09b898dfe33ee72184259dfe93d33ec8b4ccee126cff7976a8849833811c36bc712662a16c9b9590457c1b2b4d39956d3a555da8e828f7a37d669ee61643970854fcb837a09c17fe316e756e1fca83f943053b225b56c07eb4faec47f4c8d947742171743db85af1474feb8eb1c784d407fa7d5e69e33a097bb3c9453d01311d52431b28a77fdd28617d0d510f46e32be9fff36502784e35a3a8e70d91b30b243bcbb154e15a614e91054b1d6b442c9b76bc5acfee91457a29592a9bea314570d54cb3d07dd84667adc30c3a585e158ac24acc4a95a1bd7530efeba9896f575616e752b5a9d7311ddfadf93737c61b9bed1cb77e393546be8ff52a022687769c2fb877871c759775c0e6e36ef0def57b55c615f65483c65628e11a45515cd8ec197c4dc8e1ba23860b5a295c7c8570e396c15da108ee184be06e44b7b37ff9db08e5dba592b3b4cc7efad66ed0e726ecd642a173778473d7acb99b9bb52ec45c7d0c59eebf552e10502eb1a8abe1fbe3c6426989d2c645e6560b7cd112b1d0124bb567335ce8a31aa2106e7044b5b5eb7f4802fd29a4667b35ab7d47ad332a8d1a19ffb26afc694baedb8efa346f3c95f558169f933b7341d991a2f2ffb00d2e355f16d97cded8f7aa08aeb74181d4eed965a7dda81fa5dd508b46bba72e0bed46bdf8ec06add1d93d7569b31beb5966376892580b0fbf9601a441c8804b0f0a563c86c72e69c9d5b8de81e2caaa85d8f259d2580085dd209ac26e2872b1ed9ec7fd80d515845d8741a1504ead42d8e5b113ec725c6c0b814fac81ddb6d918a70f6fee1e9a7533a9432405e5731fd382a4a35e64a570db7ab98ba8008b36d168144b03aebe42bd95824f39d4c2a03bf93ac4f5e4b2705df7062a685b2ce36b47cb535355d15e13330ddb1b8351244e4042e92955a18048edeba5924f8c60af1e27e15e7cd794dbe74e37f466920fef6e2fec2e23c2715c6858f8a9b9fd9bfc568c8df03ba11d48e43e772b6e83082271edd804ddfcdbdcfd745d34b126e74c45e13fd87e27147572c31bed3e354765939688d27c89118da68b81ac9eb6124c171222aacef273447d758e1484204aa8380da7e0292a10140b712489d7aa72e995c78f609c11d8bb75502a844d2fd3687e73adda86a19cfcbe8d1b14ca9dc0190d56dbd5b87f11359acc24ffdb8644690cae2a18d20ae3a2bf87d4fdc5142bb5491fee2ff6b1996c9355ea8fa0586acbb6349aee8d10611383b51605055c0f669c45e57c1eb434e8268c31e9a7e42c43bbda570a3f6b33a0c4adb4a06f40895778d97be594a03c3b76f94d07c6ed431c2ce43103611314915c2e9f33b2e1cbacaedb5daa232fa33f808951c3cba27a3d8e393bcdee7c492dbc44e8c857a1ae160dd35e20282d576b12be7d77037341850c9144240c943db4e0bf12a4698b5f8eb082df072bb97cbe7118c14044f68793d29c797cc36384741c2b67f9fdce456830a1569314635d089b4e8a0d2ee4c6d3c5071f6a1379311a58d40b362c9d84ea7511966fb447ec505fb8a1ff375246fddc437a5eef324d6e286f556fb9723566c9b516c7fa07096867100b28e26ab58ee0370985e959b4176bf5e01a7acc157aa6f04d75c495df8197a082a841faa6ea1e84bbd3dd5ed204bd367cf4b384f2a4992e99cbcfcfac603249e82b016bec7501da2f0a5871830513d04050b6aa09069df3b4f1bedc69bb99e8e4c1b104e7fc5266a1d9c57320bd27f471db7f4561bfa2b4ce0e56a5c0a4afc6ad75899bb4c6d2dabbd4408cc2cad3a5b7a72fb15260c01127374f84dbabc0554fc69cb7ea1c19a886c881b647264da3cfd24acd0a1f6207466de84cf54883f2edd479190585b6e5d73da87fd1be2d7af38202aced0aed75419a29c15fdddbcabe107ce6bb8bc763adbae7882f8adf0c4cd6bc3b0d2613dd442b98da6122668e238aedac71ac191922b0393a56a1b6671cff3f47065b13e4784b2f79b2ee78f6f976d665f33a4747b60a97f0b2c4565df16f121a51428d428ea19f9aad505ad4567cd95c21155ac78ec42a532ca2cfb81cc0e99654bc337d1b860083c9ae1e5c1606fa39e5d5d55d03205590fd265dd9a72abf560db9feb7e569b411e38b66d84d3533ddd03e30f77e720339880911bbd499b252c22121678546f50c97fe496a819e01f30d8122e8137294387af3265f2bc39caa774f0b3e976265bae402bfc0db21a90a1df9ea950376aae630decdd8ed83c091f81d712d0f309a5bbd2b8ab0d09fd01f1c69512eb9f029303495503b48ae089255f31499c4d7281409ba98fa5fae1dcca8e1bec025d99091062c6f145a093835ed42387de9e3eb932b5ff69e781551f848343dbb0a5c9967529c1714130eb7d7709674126930bf429bc31a2db167aa2c9eb3136afebdd704056999257787b0ff9b48efe67307fbfd5ec5541c5470e7a3b4596076075031ebcfcae1c8f3d5c55a9937c8ddb7e1b166442fb6df58d9e0584d723fad6c0f6737a02a69296ee149275e13c6dfaecc40a39f3d3a08a87a10320f08a3b3be68ee87ea2c327be54308c9ea79931c3079f628dbb78c5ea4bfc82625cfac83f3f59e04e4f4ce050783d4d4416283adbe573f91fabe92386773b02573d03f4142940092b3403b1e9f565bea9fda3764caddd2e84d1c835546b1796edd10dd3da1f1c4b9cc547808dde0d75cc48c389be65d976463f5737317270565d0c5aef0d7388c2b28ae6441a41d272b202a7fe9b053d60f50512a5f2df77f8e58aec1ef2372a702db7201aff99b6face72ac1f738f0d16c5ab2bf4d7b224373736217dedd8b3b55e353c6354be2e7eb5017a94f512ad6108d8b4d9a68d70f21d0d4a03bf6338dce8c09d51c4504d3f36171df6f12f5650529b6b158a2486ba844724b690284de95b67ebefd201b48014f49cbfd407b9fed4dd6b46453bcf28cba9d77c1fa20adc1d15324f40f664a7e6d15766be838dbd94d96aab33e8b083508ffd0c1830062a23c28b4652ce2854355c1a2e0fbe2a2bd41b274bbb77753bd61cabde8e8f1cd95f349bc274ac1b6fdbb0c2cf4657f2f3912a0849476c4d8411dfea3a442015732ee89c62f1bb276f08ef88ec6a9113b0ba6d289a4e4796d04aeba1d6e615bad5e1f45e82bede8e11fe7c6031bbfe4fba0a755f9a0344712fff8947ce36bd4b5c3668bee13e4504fac2d913654acf50eabdf8a123ff713c8b4da4744193f096e6a69550014c3d255838b05d496d8cac918332b0bd24b23bff8342213ed5007e1ef313262e9743ebad24a90a5f32d4655c54bbe49718002639218e0133f6b226eb5c2a7460998c0cb81e68cfdd6858e6accaec8f55a50bd67ae6d75d9d32a1ad11e71111ec79cd1c3438613f769dd2e302c4c82d48420e763025330f004c3a7ac26060275b499b14367ff6e7ada1df3331a0681d815e47870bab9450f16e16c052ddc2f0316d9d2fbe14daddc646ab7c53292696bb1132e58fac580fbca41e2a0f6654fadd94ad94e4bc3f162173336d0a2b7671126de91044122e6c4c014348a527fed68ac1b536138126b19c2da229312ceb6f9cc391c8c22dec7bbe658ccd183e134f55e51cf868eb3da176a807afa41641b7cc9617cd577aa78f0e754a551ffdba948eb0d2c917b96f987528c25f587dd171ee38c399654cf56e23e4875de757ab1be08eb5b89b53c96a9d65063ba5743a79824453c4f2e6cfd8f0d6d25a22c0d766dfd24100f8e28d5277ac2fa9228b349a5e45952562be7afb37119ad95f3a42fb929d5de8374f46e33856c1419ce537edc9e3e2b8c5fa64bf8f5a2b01e0a955566129c970a1964f7d9f35206b94eac41afb07a7f171a04f447a0de1fc051ae40b5a7e3a8564f7f2779e5d9735acf8701553837ceb1cd7c9b62f9581145dfad5aefcf5d8b41632085b51150bb5c4618ac1c43a9d91a893a7e2cf94de49a6d1dc660640833312ef1a1f46f673eb933f48a113924f64ef36b2042abf21a4153cf93a5655d40904774f380994e1c81308b80185e3deae04c3f0f4235d80faa79a8fef26e3f7a764c4a322e12fa2f7b036220b64c8cf6c18de78a735126084d1f31324163d3c36dd2a56b4738a5645b8829e391f1f2b52c9b2a15d5c12b060a030c8a7bafc523152cde62361993c24b02d67c92b72db8aaf56b98913309eb771b26619ef12b96a8f534165c2bb5a868ecca7c1dfe45c44ab40bff3b150a4d287e7d5ca89b45f989ea25422fd89fd707f483c20d9ee5ec633576a8e5ca3d49822fc8d2d9963cf5e82c15aea1e936c1336fdc3b3b5e68e6f9945add1aab6cff9087007364e6adc5a8d8ab1af278492c87f4363efce38abebe2b9b6222919f24725c63324239f2e659b2cbfe2fd94a8ac65f7f73c0fd2ec709d8db3ff3003af3172db28622ab8653e483d29e9b2df776ef166aa37488e709d639db896f88ffa40950585726769f49810c9d861a51dc3154e9fac516857b7a9b80a43816971bf1972ecdd94d457f6036b89b0387323185fb11ea6eddd26872aa50dd3719f73f8d116f25785dab6dcd31c9146bfbc40ee1567b0717dae4c3641b727b7e335908985364dbd41d00fbfc26626af705d926e8e4d2c9b6dfb8bb56a1a85d6b518819076897cc6c9b0aa5317254037ac6e0786955171e202d7979f3427aa45ebf145b9df1d8da182a41a8f28fcf7486736b14bc09d77ffb2e645d7e0a274255cbecc19e03454c5e51c8bf5b5212ea17a104e743e4596776434642bcf1e881cfd8be71e8aee23494499f219a7ff6ad05d896698ad89bca21f4e8104406f7e825c333ce05e29c9e8bf8be1911a98087f3df3a93b055fe103133ed16c2adb2db56ba8c8688f9ab2859c8a12abf9e4e1a4898f3f7d0a2081e912c11ac403ce03240a163eb85358f21185bb49d310923fc5c0d3dd1401a91c58884967489870def4aec9ccd42c762480ce68fdbc6fdb8d245d63a5fbc2586d9c38c1a8292b2f01a8864b16598b3112bb87b780345c2f2f1767f3b9a9f2adbef35b486d84b3cdccf6c6c1c9417c229a8f1f9ee420768aab4f4a6fd6d032da8f4cf1a8604fc43512729d24bf1c3cd53abd985a28d8a81e5c6fc833b9a9fbf62e51e3f8ffa745639cfa114cb42427c8f93f0c887d1f1bd74c8dfb4e606fbfefd716d893e8ac0a38f02ed0db3a89fc01a9d795a096a314e2f9b0d585abb085cc4a5b2046ce78d1407b8fbf19113164d2ac50321b440d269740fc40fe053e461a555a89cf2a10391cfa0111a416b678b0c1319ca04cf1a2cc25955983b8506d23b8887f0171871a74c08a1051f8e008332390e24be208b30458c6d2911bd06a5b5ef74bb5e1885a61900ce05ba5574e2a8656bad5b36772d0d055309bac1e24ac1efeeb7b76fd0ff41675511066d1fc54bb5f988b35c1e5743fb6ae73867c180565d08768da6caeda5e107fb946c71235eaf78e89bef92a09108934736926dc80d5359ec1d867cae0ef7eb3df7633cc0d9945c1ba5a27c39ad008b48b1f16e393ceab00304647ac12a9aba843374641c4f57842bc2b8a30e5632c8c02dfbd9a64911aec8938e3a59c92422771967934655d8221f3af8b12093081d65fc254d54611769fa8ead2a0580cb4ed60aa371ec528c2908601bc45d618feb200ef7761bcc6f215526f18c0546d6c86bd3e712596b3b03a85fa9f66dbc184c1eedab23993226a4815d8af1a062f987dc9474c15369324056a9809e22263a33b7592fee341bc6564d8073d84cf62c73046d950b5c7d818e888f55e90ecfbafed872ee73bb7f8819be3168a68d5dab36754b94c7d226bd63c28cf6f0e801227b58f75bb1f1ba54c6e6e4700212f7612097a9eeab7615e1ca8b2e137224efd0e9a072a5828b776828e0fce97e3bd8c38e5b547309b2a6cb93b426fa1ef0148842dc1229e8d943398a9397aad3c122b43b9a4dd63f0b1f0030f711a5f37b5446faf74e7b2aa2e2b7fe0b399f434808d05d14c59485f69d2927680d6f18f48637b0f862a1011016313b8a3915ccc50b3b62ca59061ac2130ee7035a6ce5aeb735afe829833037437f9208bbea93404e4cbdfe1e2bd1c4a420fe7bfd877ef0a4a9d25afcb0090b5396c48ea4c567b30f874f7cdd9a125e922f1450d0585ba4ea39a9202031d989a494adf5290e5f7696214aea5db656ba386b2a626b9c8697060e123a1642114b08861663a00a59c2d76c93015ab743f5a59165fc5731f281aa48338b6d0c02c879fa0adf42d986b73c240ac679408a6e28fcdf731783553868ca7ee1d72a4846b0834ed4aa89f16872a82ff026638e87737f4897f1f9386aca758ff9ecbfb0ccb495fc47ae0cb51406df64409e38097b286e6c86a2d3bed90849a8c4a0201d4d1fa1227715b2c3e79ea77a409222d4a346a4066c8b1c67b69c5d64b6e026befcf9602b5562e4074c7f53c4ffe00d40a783dfdf6f412f602ffdc3a5ecc8c649217e31620ef84885b646a81aaefd59a142823996f5a895b1257946f9f5815fae28f7cade18f95dd33d8a686c805e37ffcd6d861eb06faf6fe48636bd1bba85da2e6eb60331470286f5b8c9acd1e109a62a2a5095314c56eb9d770d4d10566cc752b38cef0231f4a8208170088b051595272d8717f91db4297a3386bedfcfc998b05de459231d580768d33bd3d48378ab312a8ea891a1fc9bebe5044f15ab462611794204be86f4aef494159279d7be0132f133e6ef9cf818abf52769ac2527a06daf1510e83428c9d376098cff01b97f1f758c5d85ec7f6a4932dc197b8e801d1103f1c31d6274630ab05ed56ba43ac2588b304c57af879fc809355160a17054940270066907944770fd7ddbef88812711b24061fab7d13df5402c283a201ce14046370706380de139eb8ada9d51679a8026e81f8063365322005f60932005cd5e5c9737912c7609c2ad08ea825c0853e6813aa68064d54a755d09127bb82c993323716aa58bfa759b0212603b506466110620388a0391ba192fa792bb01f43a691866e7ad7daadf305f2b3e2918e1dc11e1162718b5fd43fe2a22ae252602cb05361425bf82b318af2ab01b4a9a80b63bf218597a8697b52e55bcb1729603f6076228497e0f66335d6560b35726836fc743f77b6197fbca0229a235db4e2f50ed81a94f78aea4c59b1e0c98dcc75304f558a6cf5bb930d42e14bc77018784754eb44ac1ef254e8c2f6326166558105132b4289f58877ed3523d32496fef6a9e8276c6b27e3acb40b775ead6a7701272765f98c67d635691a5e3ab71602b89603973a0523468a235d04ea2af4f342345c4ff6aa435a634d3937af1e1f54ef8102e247318039ddc299d1a644db9573e19b2fbcaed9db4970ad213f62134c3fb5069e39eb22cf7d8d99891a14ea806a7b4a5ac36ad3b86f7092958f415dee16eea6453394a32f0f4ed03a0d3cbb2e9a0439930cac72e63112a6180a772f63be277f4ab5fb3fd795b306f2f1f0126ece5992c9556f0425ca375f6b33303d77f3122ed875d2773d0f5867ae8a444c4ea997ce3b2dd739faceac95b7f587598c0fa614431e67be483d5ba72fc1156b68daf72a4abed9a0caa5447a3917384fa9ccc33d9d8bf1393759e888985144d168c2f816f2b35da9a273f1d50dd2da9478524c2e3fc65c03ee4a0111e1fa02d175041946703533af3387875e6903572d5b206733e086ab47fbfe3d092d78bcb917c5003f64089195d6a901106d6e5cda1982fd75e46b9355d34eeef179cdf3f23af3a86cd1d0db2ea56b21a137cbc5c5dffb6b3f9871d23a29b4581ef30df4a065c3d2ec52db3f59281f70888ec284ae3647e32a07e7b3d878a025317f180f659f8f4a65b701f9a3f87e8dcce10751ce8749a6bba316db8bae85efb78197b5005ce70ad806460e801d5a556cc5410dcc206d7cad896074ee96fca65664dc1293ebae28a2c717448fea65e677b109df2a329f5ba958c3cf445cbe36d00187e803cf6f1c9c3b0f7e3f33c5741171c44dedf936777c97d0be807719c88bb331242c9272540b24efa337b054b59377a6eeaa365a726a4ef82329ade295df962f7e4a8a8b392702f69d12cfb0a2f6d752a526c60193f50d114a4b4340ea6daa589bcbd57c3da96ca59cd1f4531fa39fbbf9e6c41421fa36cfde78aba300105ea879860ee043fd296915e328014d0d8930d56cadc1fa1552005674f67d3a145e25bbe9299946762a204df8c172db90763c8d29c8d493959cb8e84339d376c15b052378881000bf3772c39907d9086d16470458606d251fd87ef0d8f4cd569dfaa8761f38d4e23cf8c3fa5d0c76b0012dd8e9f272e1653e2b6855cbe91516fb18ffebb632e6be3096278109b0855c0de64b236debd5d82fdee588f218eeaa40c00e6fb80efce5ed2c6014d210906a992666e53a1d3b0ce570ff5131919bc6488a57f926c98dfda34d945dcba5f16921d3510d1116a72582827d5dd3d17f44f411b98df9a46d159cacf087a68ee390c63114df75c41728597c98938497f6bd020a94d8a871e3c7b138a35824448385f84f102e18b93a4be46df0da93ff5aa03afc17afe0e56864dc5a98135fbe356d78573bb7a94218afd74671416509acf54ca882e5bdf7255d359a11592adfe7d603abee7d50346a109395b3fc2a3d621f1988575d7e258bb93ee234837cfb92f17f1e75f422dfce55ac307a70e4cd240f5a01c821edbb563c8a33a9c509a32219ef5c93ad465eb2fc22f52831b702ba20099a464e5d31de8e3b3dd6d9f38abd43bee5ebbd1cfb88a13ebe201092fd5642480bfce9db1a367d47d159cc14459ef3deb56d66b3b672dacd8d77a6428db838db46c7507f7255a19ee7d89c04da6cb0fdbb4e063171712277e0aa9bb6dd8b2a7f19d2c73f7b02c14d513b8403ff0b147e00454dff26668387d96dd9fb281fc3622180cb47153508629b1dfc09516f0a9842193d4c724da35e10fed68c379bfef54272e48ebab46a07596934a2dd622d150e9a6d609528f8fd0d2fc118ea652157afe48ff12f6526cb8af1d939449395753babf553e1deb81a5caab84520e7fa2a52379d35d2d5b8151a8813422db67f921049e689f198c8a8254d738fb1edb23438806f95c3e31785acb3075a1936ce32fff01ea6494b5e3bf4393e3b0a58fe79f8d2502d08b88e54016d0df494c9a7e5e2cc8e27d92a6207a3ea779193cde18a1752920c67e1d6e165218d0c62a244bde57f5cbc2640d2493eeb4f8190dc67db8bbf72527e1821fcf9478d1013c9282b61b435b65656dc47e8c4325e80084ed3c2a770b50bd260453a63ca804889a7a0be44158956ed3f2c162d7060e6be9addd4afc5b56e7de30b1cdc9ab1034aa1fdb820704d560e38d11fd272d766c2accc89e13a8439381e64ddf4443efaef8056440c105790e9882b698d08fc119b7b9ef2053c2e4b3be84238c9aa38350ad3a43f2f89567c2d4bd32013f529dd98e9ba1123b1f03c8ea6ca2a82b7c520876b0e350592897c6691ffb92b04060caf3937d6887bc03f0c25a14f5201abfc675823a3ca9862df927922106e4a3620d2601d1b01ab437302269acb1337cb85b00179c746bed39e917604b02c41ac7f81fa77ebd7483adb67007a94a744091d1bf74af881aad88ed0959164d0f63b8b92a17545dbaf35cc134661448b1b95adfc9562843f9221579e2ef882b5244490f2194ef0b6576576f73f10ceca381041a5ab96a9aa704a40cb3d88a40da3b9b586754832ed0cde981c77c7c98f8eb894c2d15f611f62d6983d357ceb6ddb4843ca28980e1c77e970ba6e6f5dfb18dc5087d03b11ef8e78b3e4149785f88f58677dc6b535a9ef14dde6e486f4d72838ffca0fccaef9f7fb0d7abfac2e454f062811d0dbc43a226ed257679d2daab4ad3bf12711d55d1724f2b11b4e445bda82f94d194fae95916b18d4db3d4fcae14b45eb32e62a4d99f864faafa6357a73ab3fd308e180581ebcc776bd0c8d8652b791886c42665efa65dbfa56d5e82741776fb08b838c0209fd35581165ccf2f545696ea5251cd09791a2c4bd1a104ade25c7c5fd2e16fa89774ac09c431851134c9b2b9bde522fba799d6a43cec85b29655ce659759e2af3373b87a224afc4468f6cbdaf63c2670120eb33c5e116cc21711c2a24ddd01e1aa430dd85dfab89e381768b92d720b26e59fc6bb50e20093db16b77c0d3b50bdaf4c295654060ca07a98878d9837a8292f127aa540c1f9a4ffa0513b95d4a5680d958c84328212689c27c5c39344646492890e5d1dde9f40ceca5cd0aa68f520b611b6c2fba7da37cba3d47e3ca6eb894303db98706477a96a5f247a695c49496a4e042cf1fc81a33edbf29223d33f15b8b0697387f6dc4c7146e30392876595b0fcdb8ba94c976e1949097103a5bba6bf7838b8db897162dc0e180b1a67dcad5442f959049916e2d7636840e01c730b1c09cac5053fe48bd12af73a3779bd4efca8dc8b4cafac79c648d8086b1973558b49ac3216aa8b2641b7de3135a712f59e1653bf000b53cd05b12a3adae7a2bf55b05128ba2c0598eeac36d070665050e3839c9ff8c460b345d1cea0b129007bdfde6e2b5c88b507ff5f41ecc6d0fc7e73e804e6e2e553b111feafa88d3f22ae3ee6f2f14d490bfc0abc6a2f87b21bdafda4c940f86a2d89453ac25ec1509eec5e4fa5801e053208e1a0d30a332ae36d42026d55aa559f295137a14e663c4d9f2cbcdc90867fe383cafa29b8240ac62e9801d890c7b7b365bfb1130b9f8a0781a2a9c1450e9f5072212b33291b16372c183898e5f95a184b3287c2f814e3523d90e068c8f8f5895940020a3d216257d52a3c53cefc9b30a69365891076a544d3213cb9b25f99cc75eb3b82534b3877023e2b2ea09595091e990ec0e7a92d620c4e9e5084c4d75d46bed056b49cdb5fc7676c9f8406f398dcace42755696997e40d6831ce4dcaadfde5945f49b8f623e78d2b73beb15e9de757f0f61494db013ab6e900edc34458f1aad21a4038f5ddfc35179b4ac868b1f7bb57303dc418f5a886f1a72b7120b382ffa0f014dc92baf59fcb718fb0253f608602048a07763e5d9a1a292dc7797102a97400cd0fa0a85a402bacdff84da868baef573285a4bb63120b55f3342d0e8a721ae24e870c8d52d00ff210dd28eb96b6db13fd0914cb0b0b7dea6e8ea731c5d50e94b65588daf81f88970bd80bec1a3ce11c60c12eef331f1f34da21aa368b0555c74919bafc9ee1d0c26194127d93abbbdd70b001637d80252fe4ed523db086a6fac8d90c4ae0053cd54a3d2a7081479933d8bd6d58afed2f737301b7a47613075abe25c9d6180492738c52c330e94f823924acf5e4b749cfef38bf766f7b22220c01527ae89842dfb704853ca6746afecd2464d799b64558fc3a884611f031cd1e48d06cc3ceb274c95f138a63c3cbb3ec6a1a21f7056318f988e0b8ee65d766536c49186670f50b3f9a59ad43a2604c86c1bb9a0a1cb6942096de743589b30e557c7a1246bb38786f57d3d4d5694983eda8efc718f7182ef0757be640ba7c65d470f7492f87b618c3c05cd9e414b5418bc5cebeafab2ee25afacb5e0827f5dd8cfa1602ff42b9d4cc4a734384faf9872b810dba0a4cfefa7479685f1dd798685b55bcc59924036627dcfe53eea8f469636156be77b9bd967c649b197e24e17d6855ec99c5eb6d13a1a179f98c3366e03e514a04b4393474c305f47bf6a9334435ff4db4ccc3c37f0d261cd9a5b8ee327d40a7515d5f438a08fccd4808594b2519df7a729ddd78f1e8cf70c5090906e9e5d42b74ac79cb0a560a7a61c4a6839eaea6a58ff47435d7c553e3a1593c2f3bca82eabe19dbb9b9c8bbd2878a4e2804c2837ecccbd3fbfa517c49cd75fca0215c4e2b718a647d962fbeccf81c45750ddb24decd1c29ab1d3ab1b876ba4a5774bec8149a3490e95290e8ec394ba1e60a71d04aa9444da802f4fde7f85744a00bb6668fd362d5e6798e217899128d42e360e262237827acc487929312b16a864cc047c3b1438ea2bcb57456b95433508c16cc0e50eb1c1af8ae09d1b9adf4a736a2b3f7b0c5190041d9ffae6c3770319e2d85a562a12c39ff618c42241ff8ecad2687cd3999b7d28c34e0b0f88ec9d190bf4edef45db49d4442a4f04de624d9677e2da9b770f453fcbd129cbd81a0b0f193d00e34d6a42c0d6e225da47d4495e3d52f7716f6b135387dfb3704e7511397214d1a55ebeac860d284e5b1ce82c89b032bbfcc1969d9b9ecd050d0fd830be0311e4ac5123b9ae4fe3409753461623f56af07766f1cdee2dafda9d894c90feead340869335b1195ddac64465381da8a608aa62592e00ff25540e1ed2adddd4e8f6717ee47639ddefa84a703b5ee2fb8f12be9669bb00872867c90642261e5220052612fec56d2fea328aa4ba426ea619a4a574ebfca2e04618e1ab4d6177c225c995ff705a6f52777969c2fdfae53c3773e8f1d05bba17679456154fcd4aa97cddd97abb60cacc0fabe7b8a0467b1e82421368529626329d13b01e6f2bdca9f2056a809c0580f068a4d6014fea9c9d6fea63a0d6f441aa836d244efd8097daeccd9802b3aec41de6536e025b5fcd56790c9a5913e810d055acc4ecf8248f8792b5e0b938b99e09afecca4a8f1a3cbb1bc49171eee5410a3cd856417cf37b2d2b9c6a47889296147d6959a9693de6c02f6e15df24785c2b70b8f243fbf5b2b1251041a53897ed48deb8d1f2d6a6d84c1ba309d341bd7d8ea4c3b83b6572ea75ac8d99db5d6bc8a83b1cdbb4903e4687538e4a1eb4d94fcd9a2cd97c63ff982d584128001230cc87b315ab94bc9603f1680c38891a1b149946ea525d36ebe3d9cdbcd427bf020e8121dc9cf870b1ebbbc5165cf2889a135638211a46c5009c96d6ac489e457d884f3d22cc9eaba5aa09e38add0b3764e04f2b5586726d26271c4cee6fdc5396de3f337fd4adf53db0c1617656196563d8028e99c1302477f007a9ba9b2c32b65f074d2802d7fbe975987401e5bc28245e1dcce9c20ac0f7c60221e08753501c560aec24d1b12347a166c4f1a86ba3a40653c458de35a321a360ec53192a417b9033d9edec6006ad6fc18348aeb364cf26f8dbd039619823fc116071201dc55ca96f6a30f719184019adb1368d61134a744bad6fff1a64900502668782840465cc16dbb645b3fade88da35ea6b8bda6e2c631fba89493b71a005539645192754f630b2e21b9944d691a8ee20323166d8bb3db48a62f08a4ff731d380c3424d559505c278d440931e8780748774bd7a6991641775888e15fc4f5128b8731f4bb8b94d299f554461a8d90eb8d77c19d989cd00dae94dd3d8b0b6926499e780d9eb98f39358878fa83437eeaf7c023873eaa0714795a610f7c9abf62ddd991b3777c8382447602cc84377ea777b695cabb0a5bfb9296613fc8b0d3389ddabc64742b9eb0130dc8e675486bb0a408a7f5412b7b03d8beab0a402db077d51c1f96124f000803bec59d8fb2f30bb267470b4cf614bfaeb70e25350768758a79f7a99a617d1ffff563a94895141d4e3f1399401cccdc247c514126bfe21a37a916d6381f574b73493a4c5057ef95b0a320870e7c3ba11d47fcb3afe8265c59e753e3ccef8a682ab7d74a99a6b70842817ab4c57c6e8f33652f8b4274e1708aa2af9e48b03c7fb6d9d7646e2d3262f33f3328c5c8a83ed398d944ebd7e6d091207b3301481ee6e2c1860219a230245d4fd66a8bbe15750755592857db7683e09899a5116c4112fc708b273838bd1a8812326f008896a599565050900be10113751c7b75db07c2951572811d5dfed3fa85b66b0f5680bb4e696284b68b84109cb6a121e9bf9130f6398230a80a93bc7713e781607c6079c8e1dcbfa37695389f0014c6b975c41cee88e737454edfcb16346610e294548ea4430ccccc7488a37e742ab5f379f1d9145837c9cd34597427bfd740aeee75e877558dd08980a81f888721e6c9315b84f175e69ef21cc4cf5166e1b5c25f0cd3b79559e936e3b8a7cb7a404c58d7517d0cde4b2926b379f68149956bba30c5297bfe94a9685cfbfb7b695a09fab790ce94966a0e7a8439eaa2ebb26585df19f2f725012d30fd7dd45059d942d194c8e6c8eb1c02caa8ce0613fad3149706bf7087fac048bb9d2f63ade4c70eb7479965728272f4323abadf0663bb88ec73d9ffc9720b91f50f7695108aed0be3b1b1ae0d95e7bd0e69adf36a72dd8931d31d82d3ecde16a7d752555ec57c76c4855c71995af7555ca8bc737237a6b5d8a1644f43b23f9a73cc2dd4529a1306d8c4ff3ed4f1daa308f2f382e0ac51cb074892ff7f048708a3e5342e61619c8ac1dd85bf0f5b3a4e914c4559b9278b5e56fca8c4c540dc81c89218b5839cf32c468110021cd918b53bea40cd0d2381a8ba7d23efb3bc8e58fca81a62df2537f8d3d4aa69ed7d9b3e50ec6e470be0017665391018104f30ba7f324e385f0a060961c52458088584c590a9d79a67b5cb02f97524d56bbb1e5e784882c1d516f1f46dcd09876d47d7b7defb939880d03e158c162ddfef6afaaaaa69e286fd6c57b3e02ff8c381be217b29c6460908dcd2ff6c69640c46dc5b00fa842291b19aa883dc4a99d775bb14d92fe0a8e8e41f9085cec51bd3cb0d9b104d9aa78bef169bcb3ff186c95ab22daaf88b7e37675d22d1a2a1f7384445a9f1fcb0fdcda953741e9001ac91e2a11b60efa6a8d404c75e72648449946d4bfac5b5dfbf40e0117f532736ea8ad54e70afc608189a23a70056a0969e8ec8524b3e10e8ba33b1295fd1f758e7596ed44a4172b0b7928a471bedef15df698a2eceac27da3f6363ed666684316ab04e9a48c606689b2deb2b442ae5ed79fe182d52d69fd6289c97858e08765de2ea1107a06e1a698ee397e061a1648574b70631f95fbba35a2f6a703631dde2e73ce5090fa0a4e409a4ae0226a8889dcb942a0186074955af138f337254061c9ff17c59ccd4ee2e2c6a6008a0df9c3ce8ed2c265687441a6f1d98cb61266125d6883687b614808e29cf6df0505c671e56a4535be60bd12a22406a0faecc2b662f67819499506ab26fdf55f0fed5f0c8e9acceff45930f6183d75d1a5d77129b6a7bbd2e371467ea21df42d18a8d561491d5da17103339614de4db4dfe4d1c3bb970ba137bd44986ec7f08db009acc8c6f294a93f25697ac5973757ea24feaf8c1224f2bcdef99fcd8e3dada03a1210734c43255ffc2ed1d53a3b82239a22f252bbb318a208f7b88e87e983ba00c63ec2f526c8b6d69ed79909ccfeb1ce7f48929803486e793f0e4dc3362b91f697098356be6ac67ccd76844e15a4af8cae78474886f49bb60c3b04a79d71128ff8c708b5df6e185c6efc41823710cd94e9562e9570932354125b53ae86ca61461f18fc1d7025a62875c300f58ee74d9c52ebae842d75d75dde52eaaebe73c5db88623b94628c315e68423b366c22d564d5d215feb284a489e169ca63ea70531eeaa80b88ed94b14e2df33c6a207530c9a79eaae4c118710158d004803c436ff600a7663401c8c2253b0d18fe8700c2ed97ddc434ffa68997af9f07c9a95c840cd35d63d60f548090ab74e3e77c932f1649dd402bf7945237bd18b20148fc2de6d6a2165435d8da3d2d33230f5bba0b8db835f19e678d01a250b85d61c5f51a8acd83aed578cc8a595f79e4f9b24f1c33ad8b158fb34fa810b92d7f53ec2be81b53bd573609a0f84c3d1d986b00073165a8303511a86ce0c9ac108c7ff0c8e9f62929f468c170b3e29e08cc9e4f7e3bdbe7b52230a63e5bc7d54c7fbecbce12aedf3c8fa629470eb5010bc290e8e360b5eadc2d5da1387f93acc1d7be829ab4529f79606a9ba66faa37110169876417f9256351bb7a4c316f1886ec91774ec4414827019711bc6ddbb4fe16d801321ce348f0e4436416c49aa4cb29bf4e3828f0c3cfc9712b432cca744ef30328369725de8d9d3e0414f49928d2502cb05e7fcc0381bc015543f2edef7ee1c7ea044547234492832555fc0d94fdb074c6132e1767e061408fecd8941c88c602720658acf73b061f8bb21a23407632b36cf2a4d8b46cbf1c8209fa4c2d4cf7c2cc86c3352571e8578d5e58a7b2f9aaa99cd3964f8b06d5c6420c9b763bb9c3d42920a35a39b4854a8ed89b0cee01768932c2d4d94b66540d2028f288f8229f540ea22db9f3845879fee0d8caf8cfd1cf7ea13fd2a212b019f78feec77da53468ac416aed6817a4fa3bbd00914fe6fc28a5e4f1a0c10c26db5f35c5939e9e2655f78f82904ae631cb39d09f776183dcda5c36ae1f971bdc7f8f8ca538512d5d29e8c2d8beb5b369c05d3a34e90abfd5c9efb9c77cef16b951b29923002df8337442c5de238333ad9b4d91a2b6d3268488b0ee8e837561b8cd4962472993a82ab99256b22aa33b955142101e41238a7f3c864e07b9d12654929080077621141ce02992a3ad71a45fdb0a4f0cc08f183d5e824de72a76615155827a557a27366f1743fd4fdc80b04b2f42243bcc8af5c87d13c67e968a1e460e758601722a29e2500c9214aa2d16e8c37a0074318dd810aa951209865776a1aa5a4fdf986fe21a2e0fab8481b9cf745fc29c40247e7452294c4f3b7ecd2172e6588299030502c97159ec7b354ad36b1e2fd68537b625f551d504ba4d80151bede0c47775c2c9a66cd2d5a0c6dc6f2351e4e681399d8a2850c4120584817d288c0be90175202b29409adf5616c6cbd02e4fae590ca0850102900216f0edacfcde677cda3127475315b3a4216a67486410bdfac388c8fa48506d2d9a127dbefc476799fa411a1279ae21bd4b73c8b380e701f1957fa0679f85d8321aacce9ed864610613ec2f9fd9c0976d7e53f26c491510922bdce6546173d9476a942d2f542766d016e0bb063acf1d22d0138ede8a09c578a9574909cc29026e5b9560c78c8e536e6ea0cb2df9b9d6605e4f43afcc02ca0bf42034107bb8d75e7177f165850e3935c86eb80463082a480549c09a4bf1825d0c257bcdf28a0d35f35b7180ad967d9729e1e5766509224b0af0bb014b92d4e31cc5ec3e3e833368ec8bb2ff790ddf14542c25cd660d9fa23c5016d8d55ebeb85587fbec4cf616d9a522b5d7c618ece0de94660a14b274248afebc1cb5195d1af4b37120a25063487b97aabe49da7317f14fee3a5282c9ad215e045f63cbae27a4527798a58d2b6deddaec6c1a326367c9b44a4cf5d3d49ea2e3a1265a47384db98e467d014ad10fb5128347424765d805bd9af8a90ea7da1ae20a47dcba064b9a2f9e4444b633d09fb6b6fb69b29ed962656c2249a0fa864cccefcbf3766dc7814ac21fd3641c71e05badc7119554843d3cac1c3a6cc1319fb5ebfd11091e2baf855793d9e56e7b589efe3dbdb5cc5856de43ab16b21963226baa93fffc08b6a5597567ec34728c74b1cd4fbfecd62fa9bc295cbc5d99e48e4e110fa89a16aa2f9b11125df4bf0b1998c5f1364ccaf3f95f4336a18a8e21b2f691b59475c5a61d7134a87bcec3b9578839cfbc1f8a00d239cc4ce31875a721f46bad66ce3430fd096dd9aa1f0ca8aefe62fcc4b250ee1ca29522c6af91cf8eb1ad90050701045096399ee32123a8a1776f4f05ea4fa254ebf6b4a986a21b434e812be1143aa57b47f66d0b9f693e3a32bf33961ade30fc144e65f98b8c83fb0a1a7e2d61314a6197b6d1c6a30864a8d5a2706039a5c4b5ed31d356e1dadfa408e4260d300f9fced12f2d496806ce65debee742753abb9e3ecb3e0e4ed6ef83292d5657549cc039d9244c657056b1b8ca3c62868335f3060c5ce65c8b24a68f3be9f4d8c2d909b73f823fceda71f8d59232dca13560e18683d8c4422ee90e1d5570794f8ed330799587f832ac60d2d956e43114c059e7f73ba3edc4eabe9ca3a732259d801b6d363f11a44f8281ad74058f79ae447a0e722f62f91eb8d9bc3340feb4372706d23f13fd62e873297a114108a7ca56454ea95c0a550ebf9db27b315c7d461865bd6b87a6fcb1a53f75ed69e2cd7bc95b5a78e390e64ecad7b2763ec7aef64ecaf7bef32b5e81377acb3958215baa437d7bf5d2e9982d2f9febd6c0a229d53901bcd85dde480225a003584078a48e30728fd14549c7a2da02cde245ceabfda088a087755c38fcc243121a82bd48a58c8b93606a8241b5e72302a7e2bb416f3a2ecbfc8674b43bea6daadc5af067e608bef782a977aac409f0f15870245c67c904d68057d92ccb6b106ab3e17631d23898b14cb49b4d19165882bc6c905869a6abadec566ca5d3a38e59b0b5f2b4683fc70f24b8444d0749da6da751286c0fdb93a5e0747750cdae4282c977e3294688239c6645a8c4cc19cc08f959432c618beb2e03bb24fe7b042ecd98120db54230144945b0647ba0d183ccafb76fdd7c51e9a6295744c4691ac255c827f045ac025a327a208f8c4f4684af84973c3e3223e435717be4fb89ba057b07ed80cb0682c9800aba07036cde63c67298e449dfb1d533fc5beded06ac0374873352fee1c7c0a6871780a08c7981ad281fb53b2631a5fbb8bd0f68daa3474f4da27794b067c47837e356a756adeca4207d1909e819a7ab56f64ec793a68a038c22ee93b597bd5af976e28eddb017f0653c19d5a4ee1b224a8789bf6ce28a5564c6b2a44bfbc19755f2a621309be2433e8571699d4cff56265d3727fd7100c2b72de7b4de0162c37a9c114ce329f98c3384f772aec47a117392618d2744e7ce594bc7b06818431a37e1a5d9a13e4b9f763326b4e183c0cffbbc4435f1b5e00ab6200b2dba01937ff77b04c2b5a2e69e5794dedb59b75c917907369ecd4f402520522ad99db20843ab4d8490d05c914adc2d45393c9d1284c7e73e2ce846dee1d93ff06928cbca6a3ef0b802bec251fde33e2faadcf89652cacd029a3b8e3a61e09586f6d0600c3d65e5ee5c5b9831bdeb2a57b5f824a04a6621d25c23ba114171073ec85a0f52790517fc6f8d81ee4a3e0a5513b0f09698bf01b8c6caaf90c573de0540ef85d5f39c7f30cfe18406d1850a0824540197438e05818cf2505eb16428b7dbc27dfa966491a1edbb56904cb4755282a8bea8efb5398d83935d78f5c29aab932c7d5eda73537ae22635c9816ad13dd0c86e233571fd78d0e4c36b91c8511adb3191393a32e2fc2ce7f8b937a08acc92deb93274d7737ec5bafbd7e0756863b6465fda5915e444f7eeaeb827e260f65ff17668a7bede50faeb5374ac76db51aeffedd991485ef5f108cf86ed2ce00efba1d86cc8cbc2e03d03cd7eb80cc25968fb090f5d261fb5aea5c16e72f0d2d79d90d7ce3df45e565c92ec571e902ee068a0ab408d89702fa600ebc77ddd17f8fa8698daedfe1af44a2fb274363d488046b996f0a78d2ffb6fb5ffad9339dae185ef3e14ec4da2ce8ce0e4224d60dc6ebb094de30db00befa2961142d797b57fe9f4b80a409de7c47c0332c6e714aa46329a2129e4b86a3ed8fcf92d8662efc9a4cba2cadbc22997e45fca307f158027a16883f5303e0ac116546047d6282beaa303ee178a1bf1a16eb05af3fcda75a4734b42b7f7397d2e57dd951a1bd0ec977024bcd2edf61d2e493569c75a930d2c51e10b34f443ba53716fa7f3b89b9b72ccc861bf43087403fa88514f99f5476793b49de90d9f809488d49e844ebc3476685214a20b80e461ea1be1a3ad947525710ddcb47e80871b5e4eabae7336ffa5ec66f3a51b9d4300dd89579861ff1d781932083d6e0e9e0b7d7e7e88ca4a85e15e9312421f5f2e756dd295e8bf2754b692c7681511eaca81cc729f407c6fcf07c48b0195e868c737db7955de1f1634197c30392daca59e0a60a025317da2746a51c9cb48085c406e77b6fc2cd155b3987000b90a6e58d4229f88931ea4faa1e7b52dca0badc05eaea0811eac46d23ce553406d18e9c697853752e8422504a0ab6f7f55585cad7516acfebb65e31dc8d80db2d9a4d075ef2cde836091c9bead49808b9f0073e9d8e261d829dc071883bb4c43fa42d7ee582f4bcf3e6ff637b18cf99c83dd3d18c353e2faa9ecfcc80fbcf22cd9f6e9c100515831b26db992b6156f051a56b10c22dab4ae50f6b54f87f5b836ccb4b72e725f300a22c9da99e8490ee846cf3b5aa153935cc28ac0bc50c9b9dcfd6352f65b6f17e7c7dc0e7d63706152d232a5f59f98614a384b4568234c0236d2c23759b22390422c16d6d4a41361c722438064e7bac899b05af8d882127738b9383e0645c6f321d3ad9c49cec6593d3524d880eaa535f73be8e89851ed0dd5d49eaff3d874d95a13027722643671229215a72e9a07410310b43ee8d760b678e0e9be9554ddc244055cae006aa904cb950d5c3420f54952e4f199f2c97a8723e61139c15f2f7cf9207802ab8d41d4ad974c892cab4af6662bbe945d94bdd67945db16de9def908caa6f99576d5fe968f76a2f6a86daa71e45ff96b13dea359d3a3851cf2a82956c407e1b9b77f87e11c6af32411f31f8b980f6e779d189f62aa778247b901c7d16a8e49eddf8d5a806fe45b4f7a041dc36e553882ae7e4c39c75176dae45973961c2d3397a3d5cdd1ae42e80bd9021d991d4947b843ea28f1d83a8a931ded8d9eac666d3b0ad91d6da16513b5f47794cf88474145c3d15a4a7e01dd77c4e4025d25e3683ad7d14f1e39ede6f895958bddfb6f148af04336da9e6c3c66b4c8a36db542c01f8fb0301390c946809a83cc759fab2f56a424bb2254a335947e64441148bb9ac0d91d8453b5a2439cc3631a33b2bad02cd5ca32e1c603a1d7773e565aae0cdfb62bf657cf79bbf129ae447e40cb21fb2f152230d61dff83340d7a7f9bac7cfdd7289e118b410d1c5ac248becdf003c1d809a4a0a1989296bc1ac05ebd0d4277d42495c8a3c54c200009bfe258483310d45f15c4a27165592a8d6f12849f6c2a9e33efadfe26d7a830fb066f4a435e7d7711cd10f7a54aa7f78de638ca1d64f4d11eac2f53e315d09cf7b2fbc61f30265e40516605c52860f15d9e58f944d34095272809db5416cab037efcd70c506a9811feea840121e9299e715a59971c3d79b7bcdea8509ae001e2e58800a4fb29613e302623c8a4f1f3c87edc51fdfbc590015f0c48df559e1a202a7bc0d2238a5f70cb96af76770f82f702afa3a3d58c87e2ee19941664ca00775c69e36de2cb03ac0783155abe1b0d52dded6d6ad1b3f03ed69dc94c7a8034c176c1015e0e9c26ac581614b002410d576194601305f60012b80a6fbfe758259957136a2a63f6e20c32b8086cb2c0015e070f52afb2122c439ff098b79d5c83a8a9327745b24f2bf8c52b561c4ecde8026b80f3c0357a6ce6f8d6744cfbc7e09cd84d42fcd673342326716ca46d85931dfc9858c3831f2429d6a56bc7c018cb603eae43e965b2016566d0eca613747d91828c920596b27fdbafdbbb9b2906a14e4beb6327f6e3d4f0e18768784a8d619c529109a474d11800970667c83405c5b86795351467c5c907c5b700425b3b1a434c2cc3cbd5fd7d67677f7cade52ca24659e09dc08200994d225557817444a29a594524a297deb82e86fcb5c7ebeaa5ebdba38e34f4d18ea525f4aba38455b024bcf7f4a5fb4a1191e3335678df46bafb5a2bb3f55f9755d4183a097153bb5082e21c210ed3debd660e80bf7999adb73fa66a7e2b5231a3bda4078906bdd0a181c30aba0181d9c75ae56380240593c28cd62db15656df9e98d4dbf06d591d24275903587d5fe5ba13a503587c556ac3a1e85b2724ad511035975e810b3d2546605fa623f4cd9a0b631a86ddf73187fea82c376aea481ae9e87b3fed430e5226685d516dbbe85d9ec879323e426070727270747c8cdd090101b2137426e84d80c0dcd8684848666b3a1a19990904c282848482613129205050105fdfc040101050501fdfcc47e9e3cf989c57e7e624f9ef83c71e2e4898fcf93273e4e9c2811a2094c89104e9408e144891030254234f1fa670bd5da9287ec887d377dc98a80620899160d76789a80c08b235c2861821fc207446001c5902182ec164b9464fdd6897b4f7037a554c6003635a02f749f76fb57aac3003633a039e8f67df5769af3ee1d238af68c5b4a75a0fce9e34887b8a94807f8a7f8a78a8eeecf953f59f29f2df8cff73efa621fa504690efb6329a22b9b03ff484cd9f6452adb7e68daf6c1d3b6ffd94e6ffb9cafb63d7389a3dcbf9fbe00e053a915522d2d2e2d2c2c2b1614ea06ea74b27132996a984a2555892469902b2b7a4545a55421919e9492924a414169411947967134428d44f1248a4426511896421024c1ef5bf93c4fc5eb3a52c77129bb8edb7edd76b4edf6cf18df7cb77f68f783be6ddd4aaf7babf4dad0ed57ffab957a48e94bd54b5cd75fa724c8054eb4cc9c7022892484209e221e279c48c2081b316befdb52e4b50ca56e52362db31f11af1411f9586b454d7ce5a00cb0544bf47ad9548bbef88b52adddb39bd47283ed19c72223dbffc8f6ef11f1fc88569f5beca7562dd217177d3ba2c867fb29da221e1195a13662980c1d6cbe17d860e58f4d0b91ee5c86e8efd1fc35eb0d465ff27f29c8397f0565c89bd297ac4316885b09bb57453685274a78957aca8ad6fad91cedadd5d85fd74a9d5ab7d6459e3702b1bebd38d6ad5bebb8e224785485479bfe5b9347f6befa7641bc5fcba72fd67ec91bedf3ed7343e26adf7741cc9a16c9a72ef6579b52d3bf56186af2a02eb60a13ecdf36e7cb55e17d39e752874fe52be7b41d76fe5a02b97b5b22dcdc62d7e886da54057a97ae3ebbc10fd467cdf6fedbded3eec1afa212fcbeaf7b7abbefeba7e97b5d77bd8b69f5d0db35c84bd6b754813b34fdbef26d65867fe69defca0c71f39c1facdfe507bbfc5e0ec11e59a75c51ece8aadbf93727da5eb50277683aa6e3b8e7aed6409254f96af5446cc78324490ced1c9b2649a207dbab4a8868ed1c9b2ac1f1627bda77f261bf3e106ddbb75f350ff58c33ce986d6ddbfcd400057d549c35f5d5a63760af057bd8bfda473de38c33ce107d8c964e8e4eaba5a3d3cac9c1c901bac9c1c1c9c9c101ba4902c65012209b24403740374036bb823bfc3d091843bb0e39acc2c0b410f342cda1302924b82dd041103a3001f7827148cc1c59c20862400109214b68ae1325547c58c0000741b4dc54118342084c164112a628e307364028420224b05e477885f14931e47131302dc03cccb6c2eb092dc4bc00d38212a270855578141c12dd3b326309fb92367d9991b3c94d5f5510ba41a91c143c41065f34a162084582afcff088c18df8c2881ce8e8e4c88800060d154704a142e88a1f9040042e100304281c23668ed000192fe0910109aa90042368342fbc4d992041c53e731556d8febf8239410d6044e841119a0086193bb041588010375beca009ae2ea0b040a04b563b18822d020a63988145122ce081911fe8bc8478087e24315381ab08243e404273614caab019a24f6fb729132c4c30040c4cd3aed0b9d8ddfd8e80884d145b3811d433841f2d5e2cb06228df5083af6298b136dc1001715326af1aec3363313c9d1a84143090c2894a924ab8d9a54d9380d102b7f1a8eaf45adbabb8addd535024148958df8232e4cdc367dffa586a8164b36b53d25a69496f9ab0b8f462a49dd5cf89e7152876cbba35ecb9ac9bfaadf686a70f5eeb06b176c3c1095230e425b6c136580b1215997bdb0f605a2e433c555470d6fe6c41c2d968a5405491898a386bd36cb4b088095111d110910b766a839d1b6ce3fba97d3515f1f8aabefc8021da5e4532757badb5e1e6ca4e665d8adc34517f88a7e17edb8aec0cc1392d13dd901320572d6b95b417df7bfdc3f82bb2ef0eded12ab561cbcbc1ad7bbd9ceae98cb6696bb9b91529e2453c9cb21b7217ef66be72d6a9434ba4e32ced5e706f389aa669439edcab6935849e9581a143a5d14a94cfc3c143b6d6ca716b3337a96fb7b5efbd45b67f137b4b11ca3ad6ea76690e45432cca133caa3a6db4e8d92252e2bcde8702f1dc60302a93b5076760d9f795d85ea2b65691d1971388678b4bb6f3de60f4c57f83390bdf4d45a6ebc37c855b7cc631cbae2df5b7988d96aac4e3a41895e176cdbe592d7649429b14a332769362a4235019fbfe2424541df8fd49319857b921019162a41f67e1787f52cc621c3058eb424edbf048fcb40d977a38187cdb60407c471e23e39091c8b8b3c1701d28dafe1c77b82efc46e20d309814f32d5f1836cfdefb8fadb135b6c6d66864dc195b367b76d3e0c0dac675e137126fb09c87a2227a1f872a91bc8f238d2d8e48cdbeedb14565b48df11d898cad5187e58d2b185b231254e6f4fe2309461d677145462654fe1c79462363cf78641c878c3a634bdbc21470cb9a891c6d59b3ce657b3386d1c6ed36099de4f09561c0901b57b42dff19bec0308c853f4041a12c84d9b1557dd3aeb679277affd015ba4257e80a7fc257e85ae22cdc89f0b8722a3be001ab6d190c53462672003838ef13515448a892008adc4f6c49ad88e367439fc4f1eb40129502865d8dd204869dddc69d4f1c07308095964f1cc571002b7c3f71a525751ac0004a46c4d2916de5f289e34a4bea64433b60005fe8aa95f36cb77db5eda23258bba193d04565ec0e9bb842245446f5fe6192aae3c6fb874b9cd58161e8133e41fd19c6c29f10280c0a6521cc6e5b1e954499db683c29731b760e067b390ca3a96c77c8bbc9dd8c83118d3815962d737f7633d1c86b793ade8eb7026f8867834357f54dbbdae61ecafb77b24ed6c93a99a7d3cd3a9990b3340f45536151dd5895f506150778cb9c685422d178db81610a8932d5280380e313c79596d4c9867e12c3291cb8914a217958a14c2145e0a8aa711a496015f216dce1f22309b45e88d22ba1e87960d5128a1ee6c2972885ac2e4a216d0a7973c0f7c88d5213a5905b0e2410a590290edc2879588100011081e0483aa9c09134927efcc00038924eaa1a0f8ea493eac7fb07da4b8ad928eb33cf58accd10ebd3bdbad6e4195da3cda6d6d4fe1ccd97695f05a332e0ae9ad676b83edbfea98ac1b40013133362cae2214511744537a5260f298450177aad936f5b4fe5c4c75956c3ecf396a5eaf3e752e5e4eaf3b7f795d3a7a7553e2a58475d33ae8239cb9a224d7df766aca9fa0175a93f845dff0861ecfa33d6a4343ef4451b3279544e7c55357deaa19dd7676b3ac8a654a44f13b6eb154a6090cd25ddf8d2a3ebf37b19e239baa86b5ce2e66843537369bacc97aff2875fdf53c1288d297481389a810c709a705ce2abd16c9f2a9fb0fe3704717c8d2e5f813822f7cf71bf959e0b62a772c27da72bc8fdf72708827faa60e07733be0275365dd6e57befbdaf54f9a8602a272a980ae62cafab5ee71d0f950ae6ac7374f9384be5c459aa27666bb79c95ff15c550ce9a0ae62bad54c166e2d73761d63465a6cb9a260f75a96f9a3ebb9a3ca66b575366f2f080c3fe11635335a5112405881ac402a1057120aac6e9b002ce08e782b4244d13271fdbd6af4510d2b3499b2a113264db16dde68d5bd1c906eefd5dd79c6cf09aeefd83086929a14503848e1ee0c045736a00f7aecf89486d4969eeb632d82f85bb7ebe960affe49ff217e29850cfc540bc7f669cbca4ccaf32ef58978a9ac1e69d8f1011efe84d65cdce9a765a88779bbeeecf6f5344519f595f6d8fb8609f1ad015c2b66ff50fea4141e6a2b13331085c38619f35f68194d21df2554dfdbf67b26178a9e573d9d282fa54ea5129d2ff7b56c80289f6adf6b2e9477f7d98747ed48f3ef5b94cbdf515599e7793fa7fc67e597a52cb97deab5faa7c0ab6dcd9e97b1bffbd97a7ef294d8df75aca2fcf9afdefd9961ff7eb36fde86d69b2e45b9006d4979e2ccf207b944299eeeb77b087b7e8eca3ee96d75fc11ebe5b58c8722b532d9ff39f5265eaed9f79ab24a07c9b49bff2599faabf3ae32420f556dfcf7f7f94ad3e99ce7b32fd2dbde94b9aa2cab3f4fa0f407ad4cfb8024c7af42cffb724c91a1aac3e99de7ee9647ad46793ee61fa7f94369da5174da49ff15c9ef7491db24034bd7d96a7200da437e91fa447e91fa7cfa512886b20be49fa6addf2f9a452fefdbca24afd4d95a9d4e847d9e69235fde873cafeb5a3fca6923e73cb59b6e5abb7a9b739e3d88836ebdc9281fc4d46c9cf2d4fa64c25a93c6b36c9cba91f95dea3e069fa5c96f2397ad33b48c33feaee5c927ed4c3969e8234bca6be2a69fda394feb13df9337ec11e9b264de50ff2f37b02b89dca257d06d9a6a7ce4295d457a393a43750774affc84f7e057db43cf90ef6c84fbed723c8ce279942fda82cbda93c6bb6e951250d253dca5faa249f8233e4ff9f715379925ef45f9e406cf229d863e4c33ef5933410dfe4535fe99ff15459f746962d7f4b1b6f816cad6d989486e506dd40dd2dbb45ebf2ce7c35e4ab6a13838017449aa408139b6e1b057144b1cd9df913f10e39c8000b85d302b8f76f00f7ae7f68c286eefd7fe07403fc35fd43a749cdc940fc93cc22e9f457affccaf46cc8576f42fd693299fecc38a6b79a499fbf515fdf6432a1bef41eaacc2d5fe1e49c8c734b1655ca56b3576f5a7569facbaf5f5d234ae3750d3cb60ef73d9f2b32c5c3573ac420a03af5d0fe8cf3b0a68f64d6744d7dc6eaf3e69c3313cf2abb6fdf0a61d7f71c2a434fd1f423d368e8ce9c65437f65c619227ec62943e4951e833b50996bd3ef8a101fe5c11e276ebd7c533e4419415d65b58c5d9f404d6de6dbd4befb3323b16b4ec1ae59098dfb913ec599eec8cc657d8ada4ec6d170cbbad89ccb1e940811da5489909fd2a64a84bc76c6a132980c7cb3abb5d6da6c2bb62183ca98bed66b53d658c63267556d88c6041ecad978a6b5b41d8d886613bb36312a5377cef132934aab859877c661820c2a637fc86755465feadb5c6d0c4962464c03ba56037256dd516554c67dfb909bdb90bbd4218fa4cf1c36e951e5496e144a84fa19dffe2412bfa6aca93437beaa20a834198706a00ae1f8d06c547aefda7dff7749355a19a98c46fa2c95ca3a2bfd5965a5f25556ca57957fffab3367c9aaecb2aeadae43f5be7ff4503755fd57215f5520eea3007af4555667a391ae33a1d23b19e2e9a3959551997746bfe2b3bce596752989bb947769f42bda67a3d2daa84a1f1a8d5ea57d483f8b3ef3befaea57d127a9ff3e08eeb8d6c659a33fef8fdebb65e9b3fba59f7155995dbeaa6f6d542a6d6db4cf7cc857d567f987bed4f799b571162dbd6cb603d1ffbc36f7bb22c4d5e87f64ba36cf8d9e7bf24d336b569975a9efe299711efc8c43654a39ceba9908aa43f5f573115466e5eb6724a80e95af7f7a2cfafcbc579594e61895f7d297d38ba7af1464c06905635deafb17e26b529f79d3784a697c2c97f6db4b94b0eb9719e7cc61eb406efba85c86ef95a70ee4b6a1c636a33fb5b36a33da2511cf3bbbb39cbbaf3539e7cffad481dcd955f70704916eab81eae87fd82fc0eebaae669cd2b6a38b659fcbfc326bde9975a95fd2d0a768b3a8f529965708f1fcadfafbe7b5c142be52693cc3325fd58e0af174fff4df9f59c8b14c9f24a935b527fba417f9cc59f74f5fdfda5099d4b77c7d8b436558fe4f2f08aae3517fa2ecd389a03a50f7ff51a82fdf03bf5cf630fafc9e6d3901eadf519977e84bde3d00117312bbbe27fa72d903dda92f3fd5c282bada3d9527906d098eab09423304f74ee396fcfa75c8592b5fdf6da88c4ae94f6f9f550a5447e9abe94f140f82ea307db8f19df5004434953d0011f7fd91a5217fc6853698029aa37ea9cc48d01cf5c932b7e88b4a8932669ccf096bf512299f3f45ffa0bdeb9aee87e074133c14608f1e081a14cf75e6b0ca7052f6e9b302d4541aedbaff2d97e074079c73eead5ee2033f68ff030d056bf00eb8ae711aed3599b3e819fbd4661bc8b6add6641a100fc40ae4acfbf5b520cd654d4dff80f507fc87a8346eebd53dbc7052352a88277dc5cc5897985d81ae4db51a10ad1ad0ae31916b531a1c10ee9e04aaf0d65a6b6dcc0b76858344a5b84942398b85ae2ad6cabdaae78f0f6cfc14d39761d7a26683b8afaf30765bddea785475d29b22a248d5e3d8b8858dff8479c1fcdc05e7af0911ff996baedf6bc3d6b55e1db6031c17c7f51288e3a069e2e4637b250238024a699ba6d6e56a4d531a4e36dca740eca601a4c17ba8fb6a20d6f5196403d532a1e512383ff3157d1b849d2b74bcd6bc49f149153bdbeeeab3abb8d9944915ce127dc0e48a2657b8eca6f570b85a6bed06a3401474624aa8a2073824e8c20a9b106818e7ad062522b8c1f6bff9befbe0072e88c2063b2310e315048d5b226cf72b6038db371c4376777777af305f5cad74830502b820804d5bf800b0a9d3d4a69d8ecf2a1bb91a61fb8f9a857daea8cf8d1f6c7f31e545ba14a2ea0bdb1f443d07a88b7f576680e618c2f6cf40d8feb8d42e077e08b0b7afab5adf6e9e8852998a6b49b7fe51374dc97ded6a2fd6ade5cff65b8268df8fb0a94e65b11d80e040819c459124ff572b9893fa442085d66ab3f339abeb96c4c0c357b6fe59b3ab0577f050b1b3bce3feb9b79cae25b7b2afd234bffed922e067bcfb7796fded6b76ad3f360f04d4e0eedafbbbbe562584d8b694c673411c77c6158c43c69d8771d6391679d5b8b3edc8c4b833ae80679fded2d038471ea7a1f1a7d2d2f4d028471eeb622948836aab786c36a94feadae47b69fa5a965ec5a3da7505b3eb19d353d6f89346cb9f2c474cbba2582c7faaec8ab22bada25d9f5a11eefa559fa47d55cf91aa43d5a4e6b00f53594165545cd017fb357aca235b9fca4aa32a4bbaf2a751d6a02efefae524808f5d7d9a541daa27b0aa632c52737041654615d0172755c7b85373d82f5fa626dbaa20b0eb39015b7e39f382afecb79404a02bfb2c250b75651f55de5081eac9f6f6c722f9ed8f3bdcdb7f93ce5f1a8b3c8d4fa55452650b0b0b892505753aa19c4c261653a9842a8de4ca8aa9fefb6beff5ffbdfefb8b2928282a28e3481a45235144a9fff5df3f0c411004bf4ff4795ee875ddd771db7e5ccedba62ffede7bfdf7efdeebbfff0d1bd67e8d52e9f4c555efac6a7a07779468f5909e4a3f63ef9375ab94274db2ed93cad43ebf652ccfd33eff5cd9e783fbfcdd6d8ef3f6f9e33e5fc5e32c9a923f9503e1241e6dadedbfb9757bb5cc791167dd8fc78d788f1fd994e6d35d7e04aac3796a0e7f4f82ff6c0a447d8b4ddf8b40591d11a80e37e25c500f02d5e13d3587bf6b31850f74f8919ac3fff42699ae46a3af40c4f2e2910ffb8aa39a1dde205f79a8af833bc01be455a08f0920d76d8158df7970101b0be1d9f64661fb7755d8fe5c898d4ca1a7de27f81454e63281be78d571836a0effa1ed7f4261fb7b4ff7b9ec3adf3a7de6c75cf9819d2fd0f6c798eadbda94469051cd477854e579116b75ecdb16698790281cdbbe656288b3ecdbb7446ccbeab83e1f11c7e638ebddf2e0e0e3420b430be3dba205f10a2700ed016c7a851370b0ff5b4acff2f8bfade66443587342d135e307a109754d4df835280f440e2124b1a1a96982e59bf83e08cde63f969d1922ddbfc3d63e4d1ed6135fd5188be5c45775aca9425a5bb868422345106f4df89e0b22026ce0e1dd12f1547df65122fae0cfdae49109f5380be76cf26499af72ce399b3d268f69c4e4e11e34794c2366cf27e38901e0852716036fbc771fdf2144278825ee48ece7c47fb32974dee734fe8bb539f395ca8929cb27c68fff07fe1bc3dd0a77cfbdd771f772f79aa60b22f7329e159e7bee4f93279b31198fe822e3e17156e94dd90d5005f3b40a16011c9c45dfa332be2fce2cd97943047c55f333a0d9b226cb9a2d15cc25234f92cb2c998cd258154c25d403dea70ae6c2c3f3123b715f5fbb46cb5795d27443e2c982b1602c27ac27ce0272961dc2aecf0aca375f934705abf163c366d7374d6dde7104c11b3efef3fefdb0f759217e8f1ffff7de57e6efcb1787f713229e23088e476ad0f174dd772c2c5ff2f4e9c3f632c761adf251c12acce5ab7b4d97f93a338731d6346bae9830845f7ffcba5f3929b80388dd2c3e4acff21e0b0b0b65e94a1d4a5953030435820d6e6c68c20722d44db4a46af833fedd881f963761ea533f5afecbbfa1cfbc6fd8d3fe55c1b87b553e2a980a9655306ddbc112baf57b22b2662c99af703cbdda94f9aa6655cc59e2efd03ed233852d10cdfac3e6b72f25b4767e2dbf56d21d2ffaf461bfd8d1895405912a98ca896b8732d5ac7e0d9b1a37f56be4b849633cf465458cd44697b358d6a78717405f16e2a9c2423c55b08f897806d99aa6bf9758a3c6976a3c596386bed46baa606726f529bef6da5f6dba5aa68ef97216c9c29f2449fe69ba48164ab3e52b920592fc93dc240b2c94e6cb74994b569e8515d3e5acfad2408dfc19375b2c98ea3516cc9a3788fa64692ea130847f5e6dbe4cd73ecd25a6f6dfddbf2abdb72409dd8b0662b51ef6f35730019acef66afac4bdca877b55ecc9f2c4bdf674e33065ceeaf489d32a1b5fff2382a83d4be62bd6cc59da65c9b4195f5d5dbd15f4d5ac194bc61262c9ece7e7328b25c49a398b6a9a35697c7dd51367e9af6f7ed40504b5154cdcf8197ba34cbd8d1ad4a57d0a88dd2da08fff96f75acaeb43f5a1b59474dfbb5327ed298dca494ab7d0ff8488289e9742897d9a3c34c8e0bb468d170a58ee5105a32ef5512793875edae4f3341e3aec60cdf1c7711c5d33f4a5fe0d8118fef864882e44143ffcf1cff1370dbb86f1bdd75a6b6ba574db54210f05d8f6f7e8b2a6ca38aa688da4dd749731b42d6ced7bae3c29935d3f97fe2b993abeaae68eb34a7fe2272b4a39be569e315bfbb3054d85324d570a0ca1a67db6a6e935eae6138761fcda69abf2a4af3ffa84427640599962b81fc1bc544418c9baac4bc5f9654d4a33fa5893d2a8f0833f63ef48fef7a5f2f4bee495e64e11a2f7a7d9daa68eb3348d8198ad993ba496b7a69708df8240c4d034e1fd102229362937b11fd7922144506c506e62e38ff6f63deb793f24a588af6ade18a8455f52b8b6d9b2a6b9c45dea57fc5ae9919fad3986ade7baaccd9608c4fca6eecd96a9e3ac0ceee8744cae3ba3fcf837a08c3afc9a50d770977c107c0aee98f1b10ccbeffb52a9c4813ce8ce153c2d60fcf06f1875a76f5840e6b48984bed4375df4a53e488488df1cbdb287bbc127cb336f50d35eb4e6f8da53aaf570b7a6cfb124ad8b0d43188894a60917226a4fad4bd5beee97143c9bbea41872c4365d48368bdb75db9efd2ed6be2de710636d8cd90c71a1c46c5286384bd3e3f873436409cacfcdae444898987d8eaed60e4f0fcc4786326bedf0a4f45873f466135f5598e9f25525bdca485f85548e2e6ba6e87f14923ce96cc6ba54413c4dd3652e319b983ecea24fa84ce528d54c4d0b95d2a14da87aad3f9949164eac7b164b2ee9ab2ca2c05d544a9934c9c95b0c9aac8048185d6cd26bcd3659ccc2ad3b0e921e7bad5d82cd455286f1c426358c2f13daa669af305810462b733907c9827e5a4e6060d080eb386e7b659bfcb5a0f3ba0e8c11789fe75d26332d0a7165d3d717657ce0f76d4982a6d8fe8518600882f7c9b521bf1042280a435990911b44247f9185481489825ab1fb24dbe43040208e4431c82603cd465f2dc911651cb9a02f4361ec02250505c5f51a2308e595424a49f962df18b03c866b8c9e920d482a24d053f92a1ea3c8182fd8e51839db0ec9b6d7baf3122a2b2a2ab1fbe4534ab042aeac34f15c5a14176808f22b9124b803d317fa381d0fcc909d97183879d39718365b0a5ec9542aa924c1743299489bbec0f0c109753a85210303093dbd30e1765c029ac4605bc1ac70741cb666ccb9d222014d56c0397ee1737345c2c4c4bc301303932652c06e169e0c07263114cfdddd1d6377777777cd31acbbee82dd1a98f000856b21261bb163882250810a48c8a840051b0bc1154f2ebe4060d2849835ed46d3341ef06ced09166c0d638c71d0ae8e43814ade70c82146818ec3776372a319b1e4894bd35e4cc02187180538fc841079668b695a0daf2e50b61b834687ca48011386d0d12209306c6c4dc3b7861e843636f34ae2e130f3a2c2e290438c0238c46892999714d7061c7288a56cca040b176c2a6b61027802d0053d3d3d6027cbb0fde4f7dc129ab7698b2bed0ffeafe43669cd9c2db97d2bbb6d6316665dfcbd326bfbda5af6b5ed54907b0a7ade5aec565917db9446d52e13bc930df7eb575d736a407dfc58ff4043ff7e109a5b523ca2be3a59fd5ebcbc7879f1f2c27a91b36b0f3c04f73a194f94f1f49e71c5e6367d9dc1c512cfa3d57d8b7c6fd69e779ff54f32d0b75f804df5a9070cdb3e0c9bbed5a71ef68c336a358226398e91ed8f72056167ab7693edff1181f5cd102fd0dcc7b93418634a818836c7f3347c2da5943aa54ea95b2978797f75572a126dd1d64e3eecfbfb76f77d6ffbb4afa08f18d17e0665b05f03f461ef6b5a79e25dadff062a7006a19b823d30be8f4bd556ed20b85a57cce213638c2dbe18637b71c516e3157efc55c7fcccddf87dc6635e787f92acdadfdd61d8080cc4e419febebb5b5b63fc697df1e4c39df09070e1d765ed3aca44aaa48ce2ca864a7f8b006058c0b1824c0cab05170c2f2c49625375502b6c367d1ae00c9b07b6bf5743c3d786e707b6bf67c3ebb87cc3f3c6481485200ecf1fb6bfb72257544829285a7802b1fd3d974fb5b0a04ea6cd5bc16575c3460d150d9d437f0f0039ac7ffef01aa8b81be1c33ec54d70fcb59ab5d6ea136bb46e5ad74a613ed0d969b57674747676745a50b4a0c08122e70545eb0545eb0545ce0b0a9c17c51412d543ac2f922897715326326042064aec537cec42bc05781e1155c7d5451462883b1618830c9d16155a9c600a9a6b041c24d1028b25786299be24e1b851e99640ec01bc81db988dd9d8c76643424243b3d9d0d04c48482614142424930909c9828280827e7e8280808282807e7e5e453c89bd8af87915f1f32a22f62ae249101c23330822b2041462c0bc802179894a179223df23e9b9292135c080d48224051d0b921687a202e9a40415930f586af291518c2b3510a910d94830171228292e9790100506c384918a2ff20806e6e266a870328a2de08b87d0b4278ed81aa682a489b68631c61805a4908a1170201536e1f785c9db62d41d297153c0a094a72882dca240d2c01061013841b917098a7523a0d77003cc863b73b3d718b41af02900982a9e70368836658224091b6fca0489172f60384c0c4c0bf78899121bce9af62925d034ed899f944d9964218320188611da6e0cda08f0133bd82e8c13510b43a6a8e2043d53d80228668bd02305e670c618636d638cf10c0fea8ae15e8c31c6f87a0d17638c6130c6186b1bb813b04c1002214928c1104a70c4932658bcb8c271efbd77c69b30b1ed12bc3c84251203105ce17d5310e9d36d86fa60b7d65ace0877ffc14e4bc39cbb5b6bad75dbc4765f228326b667acdd881c254e5840bfb8e27e9bbeba50629f302fef9379d459d4d2abed88f57ddf5b3f30bb38232875b8383bdc2dadaecf9ad31a21567726889ef2e9ec2b17397d7b7d4565dcd29777fa5271f51c63acab3fa536149245091c084bf0f516eecdd1340db6356e73df72340de70933b2304157b3102c668e440f0db08882236189e8412286191e2ebb55366582c514444e03d1e2f7294424e2e96d308f47d3a51422e7c53e3798571d753b17db61d6e43c1eafc77389e7e6da9b6b5b72ef8b5fad16e273efbda76b2a0da74f5d109aeca2c7e3b9acb9c13c1e7fd7a7f7da2ec576cfc81d42f47abced09e24992569fa2161738aaf386d581785e9b1e5bc53ef0ecfb23dadff0ca132922ee72afc8c9153dd9fe57e42382651bfae2f8665bd26bfd8a3ddb5021f4ee5aafb5f6aef4582758cbf7ed63d8cd26e42ebec952479cc563e453dc905c73ab9ad9a6baf8d7cf4254b352991b77e9f69983b81bc6dabda9f6dee0d4fa228753ebc8719932e22e9ee2f1150e5686e420a8b9d273ae105929b2c2043557a8a02efe2b54d0fd2dc1c659753f11dbc1144fcfdde79722e2ab51aa88b32c4f6a88e67f06d9b6ee6b533c2a10cf6cc3b3fd81f69014116b37582ac757f7533aa996af3c85e32b9abad2936d54209e2b3d3bce3a579e48e1ac4041cd4d66577a5239db53674a677b19d4c5579ea03274675fffad8c10ec4d66cd6c43b3106ade1b77f1f79c22b6cbf679ed7f376c70ca1166b8ef2b18182b8a0e6a92b4e00cb6d297cb004a3303dde110d1b5eff3197a98618619a80c54542fcd5c485feacbad1a93ed5a989bab6ddb7e559eee766ddbad888ed8c92c2677bdbf63d34aeaf4450bf1ec649dcc59b59b39ab747b51b089bcf73cee3df13b20767e8f823dc0ec89f4e9432eed16cb33080da05ee27bd1575df75df714a421fbaaab4252f43d5102bcf761731cf8f6a9aff4f9c3de5e240213e0e925c217d1ed33430d6afadc7f2575178ecb9cae6005b5f7b6fa3dea6fba07f515f73376fb9b37ecc3ce6153eff05d82bbbb3b7577cdba505f5d8d7b505ff9eabadd82bb1181ef517086eebdae3c77d89dedc4b2823bbe1d36feaffcc1fd7d518bd6e57bef67fcfb449dadcbe7e91fdce81f106aaf1ce9d3871db6f755f45a0efbdbd13d201c75fa0442f44f8b347def43db79ba8215cc0f9632d4e76a57f6a8cf8136e4edfd8ce5de39ae870076fd73874d1f972709c4872f1211a5b5deda43ddfef6b507026ecde6fb59ff38f5a88f5ff3b0e90d5420c8d67406f003c11beb0ce0dfc068639d81fa40c0cdc376c6196798b135f725dcfbb8fe7d4fe479d5a9d370dfbabb6fec4ef8e0fb80a279a8248c58ac82182aa21100002000d315002020100e884422b150948581acca0714000e7baa466856a04793208871144529848821861043080102222433a455002becd5f581ebddff802f5bd3ba34888a31b9f201ca0645edc5b9503f2b9d5f926098fe833ed60c779c96110b09f18d817c996ce79d1518e6b2323223dcb5bcf01707c3ffeb4cb1e9ffe1e775de5ce0c8cf3eb095987d2b67192b825f9fcca412fd44af8948db352283024eb64890a9fc3d98e0dd0fcb1a553d1c997d48fb0fc7354f3b13fa00cb12852a2da248a3149b066432e7688de91a774991403e2471271b64f0cc8d1f06f037cd8221284b97a17d41a98042cb9d4ac6128da061f344f48565a01ec14a5f26214af0b46c132c8854688c2766763616ab8c3d581b2b356a07fe62a2cc578811d06065fcb8d6cc60086758086a44f50c3877a646068ff3fec76bba0257a335f6f75ffe4aa9087a33289976640d27cce6aff0925fad4377f9000a4026c6f233eedd39ca153a1365f3f3261ca4f8dad546189c4ab5cd289b1ff5ee87630dde138e17f2669402c0ff8e13d38352aa91c07776406b68fed0ff2e9362d6a400be2e9f644838874c0f2ae30f6b1defd2e18c8163404d991f21dfdd5ee2eecbf03760377cf238be417954cfb500089492f8eed82003665291b379b741c68fc5fa962c1a2449c4dedb9d91571a7a3d1ffdde0f612f62d45b2e45b20d53713c7dfcdd3bca353e19a9884146d045f9f319a70677082ede8fc67b7c0d1dc908f9e4e043e231f3fdfa62a31109dfb23efb61d96c8d0905c0ac2d5b3ebfdb8afeed9eb60054e93a542665deb13591c51bf51fa5f53c24b35b6342c61ef175772b6f5b8bab708388bea27afe137aac0c6bad3e5ed82736310cef594b7c5b21667410a896b5b6951363a649563286b53413a8b54608929230ad78577ce0129499ffcddd3eb02440a9e5d0b647307cc172a8987290cd3cb89c190a6f6301d11fb28028baa36b19f0f5ade552da1d10f79ba61a25ad7516f64626140a41625731d2d69ce2c79f3594d597f72c6a20dfa9bf2874d690c0c319d71fc1c17b679ff2c6e8453ce7e7148708179ad1b91ae7b2061b59ac526b3034c7e4de0c3848c4ff091d18319ca6176f5ba0d5ed848942aa324bc16395ef494b97b660c8ecd59a4d5e596dc1453481663241554b26e5e2217f682a41f2043470a95c68729d956fe689597050cf63c6454d9ef9e99849850709f9c951daefc1b8cedf961936cbe8707c2d62fdd050995e8887185bb5592e9d2682593240204f0ead3dcfd83eec481cdda51f07b3fa1346ac5511d82b621c231528cc975a8567ea331d81a40442804e21a3240f7340391af56083921cf9d0c03364fd81d5598a24075473d39f2188d809a450d02cb40d6b3aed86cd008f9f8ceb340d6e83a9ad515d005d93f859bc07355f8c9703e4dcb9ea78d69ff939f672a0562e421a8a2e9964ba0db95d7f070688db298b4bc5dcf8e580412550885b147553ab44f8d51e5338d067ad3fe9240c42942fa6b4dbed8d39e66d18ed73e2f08192e955975b5a0c3d8e357b3bac27af9e4dd4d5c3a1b7d46c1d0491f0a83895d3b81efc455224ecc331e0afaa9b488c2a6c1e63cb6ac7acfd57917dd0a91ff774c2c08e2cd3aaf0bcf48abc571b7addd09e3ce7ac8057686cd5c70df610dca1b5f49d782b19f920a6e4e540c53cfe5d18f38808d0b23ebea4ca52a3037f30308cc60c0f2c58527a621d4398d6254b2321b897854bce2aa6ddfd7c40ce778504f11114c5561e751806dcb0908ca09efe5e02f391429a3880d9e8b26ae7d3ec9c2acc99fd372ceb008a1bf45026974718f634ebe794c04962b188171f65f2fec7d8fa4bc9d8f29303f37a5819137e9b37eedfe6c48dcbbd1d089e9391c2216de68938993df3d810e74d1da301a2b0d49613eca31941b0576e2add6ee8cb9ff269e8e6a90042ec86d16096424271a45c4eff5e482a30491541c9a76dd0ddc740c3816c06b602bac02003254a170dbddb1ef7d27054bcc004d5bdbf7fdffe52277280ae0b76c7be6c7be8b63ae19ecbbcd564bf1b8d025a0e6e05033bda3ec2c5f968dc757a9a42b1cd3b90be5189ec2e6b4646c418032b26c0c37b8b4b3ff76d145fdf6ea53c295e6375a0c8e8e5c57dbbfa6c15c6ff6e258df55b15bf01d8a046f4625e69851d5a18b398ef100808da0c9131e30702d6f8b1d8c4111ef3bc529ecbe418eaab15c5865ffd3beffdf83e8cc3222c90caf7a3f10d08ad441c11e2f2c558527709b130c18a933dabdf72c5114d2ac608f7703f628cc2cdee959e208c05072d2c2f04b498f3a4804910b765d6406e2f10ed2268e7e765be99be328d41d6a5c511aa9e384ed1b6fa4bbc466c4f58407d8cbe0d84fadea69ce3874e72c9ecd4097bf11701b204d744e6d8ca2aba80f1ce228b4a98ead4b347438a32616164a6881a80c9884fa13c8a186e329074a7ad2691ff5371de8bf2d6cf3fe1b27385193ba5bf86f3df4bda4ee3e82425bbbcfb3f94482c2c50479f14ac3a1a05d8eb84f5da7f221839669d808526684f9bce50d7a4e8da2df408cf5b2eb80bb0790a2852e1df59d328f69da8fd909cddafb4758538a5c16ab5b2e6c1fe67be008d1b97ed78adbb78b9fed7b7fdf6e8bf0669adc4cdd1ec05c20e282c22bc761d98af7ca005454dc1e5d33ab870083f127f75b39f5b5d96f1516c1acf1a3dec8cd3ed055e7b7e3e7636c4526d341a5c9c799b0e443f344c18661dae2cbef91283b7869665d135b8fcbf245224fb45a1394ce9e5594cc79bab2b2abf5e42ec8db9da51f50085865224707c4558753849ede0f585fff05c47a478c66ec366ef363b16103e58b92630947095aab1575fd9eb4639fa6498c04e64c373f9687ff88cdd10a5d1f8781b1c79592bc10eb886c18589b4b54c291806c0c4d11269f92d035ba17aacd0ecbed3fa907da798d41e88cf6c517dc9aaeb3daf2a4823a48a663c79660467ffabd5c70ce6506df4419f43a5f7211dd7889d71245a271517fde7e54a41a6bb856c76c6679da98c84c8aec38b8ffd46a5b5338246eb351dd73971f166db968f5588ae4e0da8da672d5b366258b016ce3fad8f076eb9d516daf72cd6127402b62ffaa09e8dc5495bec2b71589f85be739abd5e414f6d1f37f43e6ee4fde4f32beec0b3b5a994e0a4a34ab49221474fc4bc4498d1e01d3087cc4516ba59e0221de30692882a802b1df382243cb4746d77291f75fa85614443639b450a8dd788c088fc1ec21369a8da3a8542f17c5a05633a8fa3c01c172cb502177fc8aa2833ac3178e678a5124ee26619f90dcf258484a42a3e12edc95c1ec9f858f59e217d4d321778e1d6a59f3e62901fe22684165f27d8f6558a4207666b8010a11094d1cc86643d2b65d88d6d95456f36af20e7f232cbed6f4e86ab310933a4d898eef64bd867319a733342b3542e699e14191bc56f14908e8fdc94208abae5337dbee1c179c6ed161b8a3b0ddb522a3503414f7b586424eae8a888930313d924f5e4b290edc466913c19c5bdf6c2f5aa263be3ccff009dcafff881c6ff4039371e3ecfbc7884c2d3463e8974275fa9c11b668af81ccd95083782170ebb2a33b916090caa08628cf3581c03ee6a1c4e6c38ee938a50292f25eb44309638336d1372903fd405ff902908b9dda60bc1a483ae12829e9e7291eb2688934ea1cc5223812035b8c5ad02ebe723859db2816d4f63def40c25963ac33264115a4fe85531079c054fb068df80a4f92cbd66695f5068e6ac4eb06a27986f3aab2758b413c8349dadd72ccbbe09993c9f6b806a642d46c656e43119acc66869f16105f94fb923ab4ed8382fcee8c0ed088ec22456305b0ebcc1ca794c2d8cdd80e51d590910beb543bfaad61c0b553a28882cd018c17bec7760c7c0176f01ecfa80a6e685c5ffbec67b81a8fb1d01377ea6bde5c0491b9cee94468be0d51eae7e4bd3b280a71d38f13bfdad829b36b8dd2d9db55842a293ef00dcfa4a164deeec9915cc32ac8c066abd3c55cb624d4b1d78c734ae77786dee654382062c4869281374ea10e9152832464ac30dbaa0025f744fe1df7a85732c2fd0b5839519b793d15c03d226e505ee680b2f9d394070ccead1a405bce47313675dc847c7c1fdeb87d319fd03026f0f26c5c308962ba1cc63493c23755061fa88c145c83043388c19282cc256761070018d47578e765e994a7f74447f1134188c71a8713a82579bbc619c53af624d8620d223fbc6d4e69b85b11f2aaca2f55549de243a42c429d58c2950c9404c9e888636e5c84e22a612725e11a9a02284805f4cfef70ba44f15cba2ec8f2b7a85a04cee25437c6e1fff7388a653467d77603558202e59dd5d0f621fba49d0e1de410518249478c93e013d52f5e726e77c6fec73aa2ab1a0691a938db44a69bf77d4341fa924d797228adde6768a22d92249453b0f784763aef58f7336c1fd25d97efbbfc50eb7cf321869acf2566484a31c82a2249557aac50f23e6d8bf8d29287ca0bd39a59161805da40f349fd75862c3935d00c61a8677c65a649ad3c21f99e55fab3fdeaa99db06d4990a462f433a78c3743be1e777ed81a5f5967546157be5f650e0fce49d969b61e0daad332e86542c3720086a915235d14816e6de7496d3dee2acf502230762d4b10b38cc0ff188653d30435284195ac1555946505a06588d70f56200d4480dd41b73037460707e6956c3b49b102df8ca2cfec15efbb48edf4688b87cf9e764040f68ae17beae6d7a6417f42dd1e1a899605969088931941f118d5e194b2bc6b5c481b614d566ae9bb99f93af9df6d573f34f6628aa89bb6dffc528c3a8605ca1307f6fb135274294f25bf48816a1c507d48c5b4478e066816aaea978144006e341801f2a99564bfbe5c89daac2b339a99f4db62a219d271016b98d80a272d8235932f573015704bd1793c34f02e4654e4269335fc8e8ef48e49a463c45778ba4e491297f451305396aac44bc7d89aef95fe6b58c5c30f0f6aef64c15850f693da7c8498676d5a5179a8c443b8c2f861ecc5435c06fa451cd6b9dab3f4d698b0da87b6123fa2015b81c3032d046b074743e205daa9841da159c58f584459d6fb0e224cfaef4ca5a84a2e32aa6be7bb335e77db8a263219e0ff5fd2757d1902d577b1cd4c5204e3d8606e4fda0a6c44192f4d2b23e8d8a33e7621af4489d103c0ff5e6115962a5bde9fa03a0736f72738ec501f18c00729d0f561df1b37406565380166364e0e706607c94c05e885b5a0da1e7abc15b5d34e0ae57b69fa16ecfe86cb6470e2abfcbc1fb4813d6444aeb73194d7f731d7bc80a2c86e89ca3f46edfd68648f60164c25757fa5458005415ba5f7064f16af98cc0b5c857b6ac1de74887233b0e6e0028ddb78b1aca8828c9b897a0c286c2a4544c8e74fc51506a7b1d204997dd9c90be1804895a1e7e39efff59bf2a970c824751ced2e507624ee6bdef668d761c152693cfc10df7603a0ac533e4b7f24fdf395e24c250fcc6e520932a9a9902e742fb1493a3e71cf802ff67f39f1db4885524f3d73818c9150da205c5a97f1d7498cc768c0bc2f59221231a1e3b325b26b0b0d325f59f3a6256cd747e3c50ff8d41b66e45a1363174c2a956dd616d6298807c2500664f8f99aa9e6c76b0d028e9445e450884c30114ef54d5e67914ca69f57ee8426f2fc6383346c4d9549546dc7e43b8ad73654628560091cd33bda87286328e876b91442d3b43cafcc86fb6868c516a95fa78a26ba25713483f55d84ffaa15b1fef208c140acd44607eceb966f59591e938e1eed5694fb219260c37190ac80b2d456491f0328ee667ac07ea0aa158c40ca640484a05bb46c27491f0b53d7be25493478da16698f3afa50dcb304f3d160bada0d6b66978baaebdcdd2c848978d1b4609e0da261f59500b028a242ec42dfd60a32572382fa3738e0e0692416abce41c62bf0ee043db84b7f73041a79e6e3fa976f48cace386b7fc5b61aab09fb98673b79e84fa800f2e815f930a40a34a9a83702bdbd2c57fc549bb62809d47c61ae0f6c26dd3a0079c3db76c46136e5516d4459c73f46104a2c6344570bd0e17c76a4bcd65b1120bd65f94130f032c1489663eb6ce6f36d9a61bf09051b933d691092338b1c1ca8603d89831455875947ec8e9e91fa05ab3cb5dbd11e0aff7c9e28cd3515fbd6a9c779d8888da8bccb55b5cbf7d6cc5b0319542e8a83ca1310ea32b8077ece252235b76b2604363e179b851ceb4e5bca51eaec8231ce9f8b38949f71890e8a3fbd700d1f2800215dd578bb8b1447d36b19f18279ac19baeedd9b4e769e52c59543b9f6f1c5d0f486e7541b2ad4b354021e2c933593caf409ba6fbd9fff0c2749fc3d6fdf3d3c7d3017c1304ca607c9c3d9f37e6b229e79b4d04e57e8787022dfe2f9b49da446c6e7253709c241d83fc9746032b644eda607303ac5f49dfbab3050e193ea34c3369fb7fb2388dae68d6a42d0be297158be3622e8a81a5771e6d2a0414bb27a96d17324e8c6147b46ad12e6bd456848c6e5c1718446daf572ff49f8e2e0e04bf6bdbbd822551c311434b0af06b2cdb429166b3615bc8207864195f0b89f43acd72eec85308437f44c351706b1a519ae0f9c98ddaebd07e83374cb21e9509c612cbc9b619b0b9797576763fcb4b10e6494b4a3af2f2c3093f37af404458eaa0d914dd42d31a350db90b04f75f7dd9a48556af7ffddd1da6915a5b6467d3b76dab0163f0dbcd46346aa78a61915ef00db1882e1f465df2f0e606fc8c50b8443fc4aa25c9818ef6ab40fe17a621cb6a3c0a8e0e6387a91f82b547839ebcf2550a90b87f6f73452cc42fb9c65d64aa4ad6bc596ac956623d62e7c48a83830ccf9f9fdeef30c2e2d4b218c51fc073ce2c98a3f06dba36ba12325a610ba519e8841ae05ae0d5674e51cf4658dccb066a07c3f0071c68ba58084dc6b254d3b135f836ba5f05d028f86853265f16a4d25beb10810085eec2376b4c0ba9a3ffb7030af1627cff891ca798ea6a5b8bad1574db82417746bde192df49e6c905051fdec4e4f29752708490a7dc4520980bb20c566ee8f35d76ddd3ce82c56364e4f8b8cedf2307938728c01e3a80d4b4dfbe7f0a0228a387ce8d08e781b8cef6b2f5ed29c54a11985f2df320ecef8af3f773528fc63c76ec6b62f74eb7728c3eeb1b857c9974066666f64e3ed600c614bc40d17af44644c00b7c07b9df40542a87895ad4d7240951e0abbc7b32618f3e0eb4c2fcc12f0b0b4247dc062729b69e60f1d650591bb039d387d16a0ce0c6ca2e29f7ce9a3e065683e2e12fa02cb4d6cf876c17c5dabeadf2947e6af5cf99f64a4aa028a696acfa9ceb580b4065f8803bb9f667cc8d96e5f19ac4bc64b9ebee7048c6d70c570ce5c47e7eac56f3800f7d1b2480ea5f7c6d5e0529cc1ac89eea8b373c4c23d8ade1a1f19ca65fd7c993633169f228096fa5dff417d5094b47f61b637ca934de4aa6310ef2cee526f40554191805d3f818fae2fbde02cfe63a908348a2ea2b1f5f1b99272e57e2403f45d082b5031a0b7d81ad48f3841d46599d6fb13483c6b32a9bccdd31fd67a796b4c698d5fc17593c119dba388c497a116571771698a01edb2acd9a9349e3a611487b86552479119bf1267444ba2696f043d298887250cc529923002645593b8ecf63121e0a3792945ede39ff7e4602723d8afdca6918dab0210fd531ea00d0290e0788c6f3830e40ce56a9a247e9e88d30389408b78c5f22bcb95dce6a6bd230ac47da061e6ebfc5a7a0fcf6a172348f62ea2db90610acb18c6a3c1e05c07448d9d92b33b199314d8fd763bccb4473c7149d051c549306420b27adfd63c3508919f95ff5f7a54de11d3dc3a0b0268b619720d79373e662969651163e159b65d54c89f09ce9c80033bd3cf4cc3034fefe61db0a5591936ee7019cc79744a3f1eb173965e844b8f8a20f9d9828061b314e935c8df54f703caaba9837f03465d0507c94bb9cadcf2cee2675b1f5041507cda7bd727656127f38e0147db389f385327fd061731407f40fe73c436181fdfdcd7ad739ed8adabbf534813739d72d9e06d80378ef93eef18b913e1a6b1b1ce028cdd4df27dc5a6591c8772a03afc80179d1dcdb3fe5a11196cb826f3b88dc0c0d74b72761addbac5bf780014e0c8fa01a660d94b945c2a72cb8ecececde77a1e124146f881ed7b635dc6e50c51c24fc270d62a06cd8fcacbab85953001ee4ca89ed83ba251c8289769bedb95e29c04be28395e2bd2b9854c309473ce02e77c873cfc3838e1f620902071592e445342ffccb65cd5012b1390ded530dc461da1918c0531acd47bdd8506e6bdb6e06fea8eba5d8431e552d419b130afa0f7cff2ac52343a7218b7870284405189a4e5b900d90571dfe7244d2646b2c0c6d9500e11efe8f570fc1d4bb40a6a8bcef1e4e03bacf12fc7969c3a863c7efaa143d599a39eb58b7fbb15862781187d30d90405979497b7ffa0e3359cb09fe9046c72a40681b0d0a5c4ebee1a13309592660ca525a018f0537dd155c2a20cb64ad56a4da9f494e58328704399c4f602bdcc5a262bdae6156914cf72c4ae43d37753587efa547ba23ae626e9d211ccb0b1619bb3f5ddb61ec11175f7cacd1153173054d81ff8b8ea5c27e07d17a0e013b11f0f2ce92e8c8962851e7a252e22944a37e2e8b98790a8e31026dfbb9e77cd1aa903d29cb9ec96a39d233ab84256c1b87f92c1b269bf5ce76d09acb83518e1cbde7c78e9d136def6b4688aeb663345e72c0e55e24228ce3d178b15c8ee2de3909f48b1c57ae348b8bd06c4a3f9c67888877119a58a47e7e5a0fdf7ebc14506f78f213560713826a2b33e3412f7981ce9d485ba10ff4c5693bf1b7f5487b4e1ba6c06c35002565950c65f688e20384b66fdca3959257b4dd6aab75ad44fb3620484609e637919640da2b14889fda3ee85afbad1f08f81dbe3a45cc6944d111bf16e4e29be6b7074f5ae7199f342526471a7ce7c48ef829f0a35201cb2823bb01248b3831e6989ff35cfb90d78ee22436beada8a223a2b4c9e342057224a37307afc7b968913537030e0d861a6212df85c560cdb38d2a2e8748151b6cedf77fd9aac30f7cffbac3569e4136070259e85cdfe53445cee5120faba33b19a384bd8da5202f060de1d5c6c7b968b45ad3c83aa4c29460c95ef8a253f643ba05696e644ec17963783f187e00715d4a0102c848ac8424b83148ff928f29259e3675bb9b1773d3b2da92416d0223b4e31f8b4936fad0e2b56dc85644a5cf193ec1203ee4168c00e1b17a46e3b6a4f050913db078224879058c07e890cd18e91464174d89bf661ab2743d85770bcd3e4a7182f68e854476e0331019de75d41d78653df012e744c1e7cbe14a0fc28594f90d263a0d6f4b4ee65460b81c48cbef46588eb51f0eaedfb0b84803a4252639a4ed9245c6010d7d677f7a9af1ea98587977224adf4ba7e2426bf0831e6a03d336baa26f8a7921c7b6acc8106c88558c76d03c0d4a46dc78cf720af30ca7750844069a272c9b0b7392148c3987a6d93d29c028e9af0945dac5fbc2f81db25e728f5f0e58f36d038fc13a0894dea1cd4268f43306df35498423658d7de20bb0f08ec7f912893e00c6f9e8dd8bd23771087d72824a4af01f92203a02cd0ef6f8980698a8a5549644465a4603c0d1447e6f92c8be3bea6e0f7ed798ea11463ac025421da42e181b97b4906e75b77046e63351ec2dd0d56009eec00f4b16701970263eb850961d81d43f95a811a700044ab3bc83b4c1415089c610edd89396b7283e10c6933a9795973f84651885a03f23efd41042f163358d2b10fb0121860905b273212e089fc42648a41f1bf3c5d6755cb10fca8fd10f1df3c156fcf823c28a92fe93512f20424359c1704f719dff90c8f7a7a71b4f3bba782b4d9a318046f6d27afdfdab58fe3d5199980572a78545906177853586ce2928f238c20adc3a5c30d930b6a121b8171785ca2f257951fa06d98ba194accf513e5a0a55c4650cca7915ab380b5fcdbe1440293e18c52a754485026ae35da627f251db092a95e55550c57e301f51a2c21654b593c6490006dac891a14852c1af417eec08244fa58282a7223e9136df82923d1048427939ea9237c374044ddcebf80ce408e6228565c3f4f7aab2a01cb5fd658911056bb8ddfd77c06650a6ae711b14b89dc0afb5eb6cda82797188d9d72df21615372b17c24586f8b5e90cca8a59d8ac65c4719a47f401491ed3ca5e7f8d7460b18fac87c6f2c2775c4268c9ea30391174c2c26c3fd4068576d46beb3f42172a2d6ac9c159f3914edddc85a39b5003fa1e7135da6a736f0882a7c3ebaea7399b52b755a3ede8695bacb8fb272082aba0b469fa90dbb9201e7dbb0154b148365149741e23ad5e838a0911aef2fd61d85a6fb7282049344a0cdd9df17e7b2d3539c64db91388c81db3e8725aa2eb7afff90645fccb351aa61c3809c26b8d344276f61f4a82e2d9ff1b6c716fc4c63ce1beb2178e34591c0eda471dd20eca070b882e194327ca06658cd738d013c4508de339b200c09897778bbccea0e07dfdd549bb2321ab395f40001d93846f77c2663745c9acfe5c0c831c234f7fa006338171367da64f80eb84535ec45953b9b8a5a36fb8a724c1a9c70a58ad5d52156eec8c98090689971f4ee8abf25d8dc26c3b4245fd2eec2809281e157cced7c8fb4049ae232a62b9ea068424683afb2f5b5f9d8ebeb8c1dfb0a81e460f6b6051c205a204c0a5a574437ecaca105d0904823beaf867af7802b6821c5dacd4653143499c0827bad222338c235dc0dc711b7edb714349f2e239a30bb3efab4a132f64982c1e4a8d9e65af6c2ae57d5ea6055bdf8af1c23707a30a598fff27a4e176d0e5888cc2c0529e4f08682c93fec9412e34a235826631c791793c00c758181d25b72850198b62429eb910e41ea880b794ac90017777d163f17dc72efbc5cbb870cd53334fe07cfd7383603eee1e0fca083834ad65bb337f648f7e622a419991d60bd7dd170d6edaa4cc57fd2122cb78912c5d0d8d5fdc4ab79aafb9619629bc648e52ae65d9168a67299d7096d5e02d218173562a02cea01d37f6e960b20147f00dcaea40de7f46105cbfb86ade30f008c825b149c7023cb865000795b49459b57a80ebe204ef49dd29d28bc468f3892a54399ec5ac0164b791f8728ea4a2ad14816208ab56e4c3922d5bdd1b305a40444e3d87e4d8c76b3a39cd366fadd421a390606da5143ab6c289879572954e0aae9afdda5c852216bc1eaad0b74047a4139f4aea97d051eab65f05b0d6d238b039df62b14b5160e9ceb4a80b5cef6b20317173827f159f28405c30aee1a78c218b25c707a60ac527568be31a15fe1f5f7f979254958b037a2e51314f2eb3a55ee47df63db507611d4edf01dc84a83d411525958519ae0cd7cea33d9b9779c0c5e3517cafd4377cf0e264ff5147ed71c2c15e147d41d8a9b8ed14523f22474747d8b43417cb2e17a7146234cffa06ae44d1d2621298b25c7f9a0310399601a6b56169de882bedaed5c6d1c4eaa2e6ddc80e1807a438cf7e6139a32ab0b1c383309ee9e90418fa7eab903cfde466021611be072e96eb45bc8ecab1a1dc5a5c0314094f444b6b2d32a5bc06bd2b6feaec939e42e177ae5d93bd405e84737818e00b72c684f3799d1814f55c86368c08b56bf2f58b66f4ad9cce6afd26b1db3d67d1682bc16fa074c4ad049a748e1df6064537112669a4c5492bf85b5fdcd1ffe0b0d04e8d9a8116f853a83f2b8a23b06406a226ae0e4362a9221096925ed223ab0a8ceb98710fa6d4a6284ccd15142dd173a1840c9fba1f15171c2f2faaa3a48200f262afd4c8805c8ac9465017e07bb2eab9f2cc40a34a2d0b817a503153100b188a61d7adf69a181400b08d816c16b417e189d0f8685265b071d49aad10d448a1e11bb94fb716d86e45746f9b1414ce7ee31b2abf28fd1233b3726028687372e2bb1f6e1aa4ad1d41f2aa7448af97d6316d13e699982b62ea81928c9dcdc313872fe3fb903d3d32b1cfdc39b354103f6c04d0a83357310db649558e9892363f7739621af44cb34f33f6c02b97c1855c246364348957c52b33e767efc11c2279963f8078114f93d8fd613ecc0ba6fbc117a73b11fb12bd6f8925c4859836da400e568c70d64ff461100f50c3f5de717b6b03b833555cd494477464b84f47eccac462fb848e822eb50e8d052831760bc6f46a37d0be4b813b82c4804dc12529b98c8fdfde5375916cc99d4cf3ca86ba3fee01c0ab31068aa89559d4df044a2527bdcee21f11f31d5ff84f814e09af117a185e6fff35a20e5caa09036afe7b51017b22825c89f9759c3a37e68cfd92a8deb7e4d721385e4d565d0948c89f1ad8579290876da031c2e37fc9c37b670b89e26414ee596fa814270cf762fc9690484b7cfe08d9884c84d6466714c3ce0e0be3e3b9761e6ad1bda16e7878b291a45f276284a72d12a550b9633b549c8e23ead81e526401bb10107511c7c9bd7a3a7a0c2636749ad2c71af4254f9b19532a0e3351549e2252a3f4fe469837640ab4a6c8e0e51ee3db9251e5a7fe64cb2a2776c7e15b74be70bba0b48a136649beb4e6729bf2773475bf2cc7052db7dd233b4e86f805946d2bd993b10014807b54f8f527b2571fa11931cd5eb02a6e4d49421b434969c0b723fba08758b39b9b0c60f2550372a71048be51b8e6d9d61f4ac89980c0acdcd497f3ec75c9683c4f4fca9ac3366b296a73fbf7d046ac9b4c12ef31ce5d3fc935135ffabbbd28bc06a00692f77aeee62bcce0a0f7dadf2c58f3164b0d49c6258818141725a1f8a68989c9417ea7a2263c0bb89fd53a204bbd1df244af2416e93bace73545f8866a7eb0161a5f13e6b33203515c45206ca0c37a8afd1dad27efe3c9464ed048a1a0bbab7868a2596e16b330b5471186d4bc0fbaca29426bc5c75c3ee7a2f5d5971e73c7ef3cd53bd8a80d2460196dc114f9325ff9e54284488209d33a4e73f6011fc851a4cf52328f42f4c7f1323448bb604fcab620d2ede630f2e3f2d28aa3edd8161cf745a138ec89ad8ec957b00580ada3996ae30e7671d5152c47318e35e8ea48e354ed61cd144d98d65d27b2b817b6cf0e5ba01720b0e48dc748cdd4fe20e8f27c912c29cb0c7c3987d728dc309a7d428af29feae49b5958670f4c05e40c75264b714ba80fd7908cac65955726a06a72ab3b7e482267ab3a484058bec3c28efb21c8218cb91034cbf8a33951290298729bdc9a9c5eb7ff2021735eecf7e945dc8e7e56353ec70076c1c518385e652c98676034ed233c4c3cd2056273235fb1e85de10e1e5343ccc50bf9a954735342803f028f961c6c2c02fc6100496e814b8ec37a0f88a407211d94da4593a2ca5a073b4999ea32b5a5538aa90284e469cd589c37c2958a9a079f71813e98c5529418b5054208b03c411b2a46fd30ba1968e8c1c17c3d4bc1c707a3a9f8335e3bc367b031c0bca3888439f78d3d6078b7a30aaae15fa1ce7c6673276dcd16fc8c213ff3d7fb3fd41ba3616a5a75fd7dd71ae356d1c6af2d3d0e55d178d6d61439485e97736dd36549def9f29a8711273790e3b9f7383e1b184347113edbba374840d64975e68cad50b488d3e04d0cf688803a9f3e23a638889914c373899451d2859b8ab8c5c58189b51ec8be160f74c777ed0f77d5ec90208fbbdafec8e7a788eddc591ebbb6b053920ba92153155b0304f80246229325630397b2ef29dfa2ab5201b5107ea261823a96fa1dd33abb26e72e8944c502ccee445ca8e9130bbd5a90137782d5cead5d65440b7e56a4814e65f63c399f881fac7ef59e7905abebe0e24ee1cf5908d1c504d16baa390be1c65c5c60b3bdc5f68dae205a42fd1827fc84d9a5738a21ba912142e194b1884f3c7699239fa010fb0a654d496dd409ebddb1bf3990523d419559d7e8936a35e8fe0f1c9ecb813bd63b24aa3bf055161d4f76ffbf6af199277d3503954ea071434dfebabc3d569ac463a835926cb836e79301e886d363cb3803bc12069cf439ca27c9a9907a3cd167028c14d1929d22196762fba2c3eac2a7992947789cad498d610fd456131a40ea83d31640d34f6f1a2b8021cbabb61e113217a2ff59b3eb1792af9d79c14de86c72be1e06649b42f2f1583a5a28b250567f539341cf29fb547db4e0b0b3b3629634f61e4389c9ba8ad7e418c98d702c7f4514fab3501366a4403d9d2e210d4e54f4ed07c2ba6fb6e53a0e47a7c891d7442edd82db6a55ac4389c27206a514bb6727a346705e5c2fc5b227f139cd6865c26f1305d2de6077366f7b87311c96f1c4e2d6fa602877124cc5fb6de63dee5445343ec33b53cf14aa7361d49aabcd416f4563b7b34ac1c04f0420b444dff7f3cf27031eb8066a524e76805c6e2eeb59353d2598d9080f37da653b462c290d8d53b952be3796654e3cc621a3f54a85dd7579039ef68ad8af575808a4da8438739132e72f5a1944337f61c1106c56d4054df470539cb381b1741805c738850531c354b9c00690a1552058ee8aa3ecc32f7b72fb5c40f719de2fbc0bdc5a849aacb02707f2cf8d1bc5281a1348ae345b0f5a1d03fb7633665802e367b62a17665cd40b83a60ebc9a24a1d87cd6f0fec8f68e8b2296570bd6b300f75a2f0e866c5f677fe63de7ce289795f4277a2af993fc35952f9c889e9fb9d9ab13b86f98d235eae397ceaa7fcc10a0ff1428c06753e55af1b84191cc3e4595fa10586ff1ab757729757a94df9d19ec32f12a800fa58b2d72def15d1f0a2843dd69ac21623cced6f473f68152ec2ec7c9ee8de28d394f2999eaea948065129622acd474ccaf863862b98a7638f47b320c8b6ee0c1339d2a49a511b368bbac0568726964ee07f0aa5e2fd99bba49c627aefd96a80ce831fedc0015265a4d15a1b01a512c6e4015df019d498bd49cf1e24e1e56f31635edbbac541fc656652ee82f3f8b309c571d74b2910c3c6a5245702dbad4b7668c883cdf6e065ba6c150d80ec6c8309aad295073a6e3c810135bd0104a801af5286e0e0c132acaab2839688a77f5d2ce810cd2d17846e91171950b470c1f0482e4c4c00fbe17938cbc947f7ec409c8a6a64cb889dd4c43c964b49e2ce2ffaffb55fe847cc61a99d8ca8004b3fe8b8fe11e2c01cc25973f2918eec341f87511a222bd56d02a40c7719da995d913ec2ab44ee2389861f6f4d784c1bfa4c2c104feac9de906637dbd7e2c714a5d1092d1531ffec5a8b8f57d4d38e73c1b1ef7c0f5362254bc0c2b292567928bce1d72e604547eba9a6c42f59a12feb3721449391487647a1cd6a3a4f6eaa8708b773a9d0b00b136bdc009f86be17e8c2a29c78475a3091bccc468542d2e9eb6b31022e414a119eca13262bf2c14998552351448fc4e4bb7498a3fb10410d27b5b5c1a5c75463236b0a7a5605701932289a1ddf5ed5d94226e37e9b84b438bef464027803e2440a3967cd0a9fe12620dc06fb5cb2530dee7c555fc89a3475250f59f182e4a3915eca9abda68f2808c769cf74e86ba9294aa5c1383990db3c0086feb279da25bc7b9a23569f41d57e15cf9fb1df41e71fd8c5b0477089b53cdb280f9df43468f3e8b5ce30ced89ed2a4f8e807bb523be57b81a85eb89e43d9142f5f0a7035872289137410791d97142cee5d23b086def8da48e79d295909e4806a9c2b7116ed43216cfc5c6e735f1ea5109819dc0484350827f4f732000a2c21c9f0e422872227ea1679b5ebeec8d5a274bdb0e210261840cd06bd0a587565962e6fe4c6321b7971e1a156c8ddd637777072892d1a5bc2f489825cbaef2791a415b363b80c48653a1f27c80eaa14980caa524395f99f77d2a116deb9129edd5c2d25e812ac49d1ff8294b2bf8eb9066d94d46c234331e980247499b328e47d059ebc23baf9de569e3366f8bda59d55b2ed53e92f140d6300c6c3a24e3411025a5f31d0da1f3feec875f550c3f348dfab778e7b149c0e369023abf37fc07681f631fd705930ca289795def87506aafb9de10ed03c1b0189c4940e6f19dc245fe25d83ce964ebc2c9377e71561785e4d44d52abcfd0c111ea3accb8b484eb0d987f5b9b51120cf1ad7097bb3f88cb5f4c64f2131d16885235f619f6e472aa311511bda870b64b44c53f2e18ecc0caed043cc3ae0a360456facd1ff3bb4ae0a67d361875e3af0737067ce6cba47219d097f1291924675281e0edca5736d862b763d12aa23c9fd4be5bda09850bc601bfcfa11301ca774206e5c9240505843176bb67d57275e7a806bcce268b970da57d04ab4d4614d8aeceb53492a2d067eb50f988d9db2ba94e5c77b294f14915264a320fd7cd929c5aef8c8a4238df4ba2ba0f6cf0122244ae0911ed0190578db1682abbfa9d267979b536eb34fd0d224ef443c97090798073e0403d304482f9b24f5931cb2af1a29c20ba5cc192c6aabb62d58330e5dc8ac502e8350406399a13b1c79430b8427f0776011a0df97d15eee7a6acfd9d64a3a8ab85485f7755b167d5e502448f07a5efffd575995c6b58b8484cfa0c967f22bb3a6970b749f342bb2bf7a185f8099bd0c95140c628aae47e0892d8d5e2b0f47bd4a0112eaaf385035d5bc38617df8683e38c521c9ceb3701ec73384f170bc1471083804191b3ccda4c44f084079ae00d0dbf98ac3987e2b48a10a77445ed89b097e15b938b575cbe9ccc43a40062e9055c027659395ae9b31b51b24aecbf210e908db3347b45bfaf733dec0ca7a7d3dd29a60125d6383285e1d3a694fb484d8225c1e23a213b632d89fb25ba1eea2aabec7b6b54757e6c64e7b8c6b48ec4b3d3ab78b3a4c63ff9b56b418803e8c46e811b5c230b184403187b6807c49f490c1887e1b183be890cd7c3c489c36a3c2fd66f06f5d914a2d8870afc3f1e76357d92188771596e9d37b90d4df95ac42e352a07269d687768483a488f51be1dd8e59a5cf099a65d6e5afb1a8465c6032583d3cad239b535879bac55a687ab933ba94a84f5f5a72c6ca17037056a69025934c1d78983fa6b237c81d9e17305be34c0408892fa063805598d09c0940a74871887213ea676b98b94c03053f97760085fe49d7330c413132ba8f2a21e5f58e28f272302560b4c6281b1dabe53002d9e384caa85eefbc3f81db8cd4cf93baa5c3498748d230e3aaf9484914922f266750f7f22488c458ccc8b381a06c98923352413caa173a3598cc3d87bef71ec70bf65f68e56ac30610e67855bafaf952054238349f86cf5335f87c9db992d92970c5fe917ba5ff34395a176f4cb32815cde841b0acafc897dd79a2cd793cfd3d3c6d8cde90dddb7cef858ad758188495737e2f12a06d6137d9de32c78efc5be0778bd60b57a8b853d6abb0d668eb27bb7370195cf197b54df2fea9e427991991926f42c0a1fbc805022a6fe7c0df94628136544b368c81719f6c6fafbc245e1c41f9844f7c48ad095066aa9b9cdc4e9a41b72984894168625958d8dcf4b2501a822e6a493ab61fd347801010229dc488d0afe27074bd2691eac0bbe12a4f053478d6bb262185a7312ef3506a27be281d9ec4698cb030732bbdc10d4af6ba8b9a563049b9405ac3627b696f3ee9d0700dc2bb1008db29159ce423ca9060b1f831f9163b1e44eb3564721ff8c9fddd6db0a189f334400d115aaa49ef586fe4f4531e543723b007eb06273758408eaa3a6e9125ae7ecdac380944ddddaab2b5d1b474833e78a3d5cccb14a66934d5edc217d311980244fd7118e4270ddf166ea07f263dcc7f99b88c5d53bffcce86376eb51707ed8035cbaba48a6e71ce7a05baafc5982e65e2c1d35cd22bdeb0d4eb875fb0a02015ee4283822633db130a0f07284c0d90899e0d87142715864edc1d1855052c99667a1d470b0645b58933c3b9c8ed41ee4e7481dd64f60835d749d51b017b581f2a11b9309e80d81ba21300500ef60437f3176598952c99c45129ad39464d931989b4e6cee72561dbe924e94f78d48a295c7959783873689c76d92d74923485c71f5b35849b3f64006a2739ccae2e6bdd928d4a742fb34b79aa850396bddf5ae603fa1ebadcac59036aea717247518819d86be926607c360541c5ca9a4f1a930989dcadcb594fc50245a9c619b5b28f0235517f71cc5459dff617874503c01c9951048bfdb834386146397f0fc9b7383a8465473d7a97433d6695be63f92329d1a02ee06e46742e416522e0d21dc3edb0c805bf8692e2984e9b64bb029235821ae6293f844769eb76cbefe83f802fde8c269356fd17aad63a59a8fb3d6ed1f6c276e8836a41f6fc60eec2d17714cef5aa6fdb5b7c22a184f590cc23f9060e510ef0531bd0111a3c800b39943663653f73dcfc0b9cadf6496705b00bced240aea64db6464bddde1f077027e892068697f2205d34a5063120f932ed60c515e466605ebd90bc42a9242114de81b677b609d25373e7891b9e11ff67cf32ba5e1d21262fbcf5f21ece8a4a481a2ef759d4bcd150845aeee6cd53582ef9c029b3d4c7c952138108ab5acf03cf4aa91c0a150bf06dde6fbc29f1e9c0481c529c47eaf92ec07f027466ee33850d007d28bce1dd2bc357201ce280134865eb9530b7b8dd0e90abae50e721fa2ffe606aa12c690eaf1152095bbe00c9a290e39a75bf22d48bbbae24c34f8585b7ad8193fe853dd9203bc3900134343ef2f47b8318b290c13363ea17a9709fc20fcd9330167b9898745c46228812a1805d0c4bbd32dc07fc7dcdea3f07c77560a4ed38f7b9dfd7480a4e42f9bbb70cd0c3fb7bcda48bc6fed9491a006225d98698427d303a5fa4af14ee1d3d27d67d9501ddaa94a339f70e3c579676a88f45b928082f5193cbcb4b61a86d9305a6f6d68b270983a974ce85716ec80e4bf6b7058661db97fa48e19f138c0075bf49da1df122c1873800f1f385430882e96b86466f6fcf654b8ec94e0c4693ad85012c7ce5d6bd4ec327af14a1a2ac2d81e9dd602f4d452891986044d4fbdfd88582f8f434a19b20726b666594ab64cf2857b75fc4e5584123ef770af6efeeafdf9f0e48992e73014ca8a401f8b88fe2e4bb50ae47d6ff4a7d5313f980225103a2d09bd3e454fb9c405e9c6a080b852d02b56f88281f3a05e3c0681ed3629369f921567f69aa969619720324ea2e98c85179569a242a45f3ec2e4bd8e1100cafc28fa98052ed907811b842b566dc649147e39d0980c836bf0615e82aff5ec87b92a3011a0471446e95b4e793e34bcfc46b0533c983b30268a38480df59b8b041137f26a310330343bb9fc059c341c7df732ad02d075f5dd6e9c03c8f8e4e04f6c93e3407b75f51867c1474eb9c285ace03af9212c4591e4547f5d45cdf88dccc2927fda33589144b27122896fd01f92eb8f17c921fa0c9c9fed4b2424082503e0918b35cef6f7111e76e9617859654d5332a166de32784936fdb3abde04f7c20e97921aac78b5502801468b0030145b6479e186607090b9b7d8fc059fe800195ce1a06e351c4666be85fb098941ed2e1ade64d31e383f1198efdb93df51ef4a8004e3e855be17b4e3982d7b969244c72201b1f4a425afe0135b16e504e7585a810eb4176dcb1996b563a93c1fedcbdd233ac361c14e9169f6bb739b0e6758a83568085377fec1b02f5b1828335f416b955702571318f9309d41bfcde9cd25e91b5bd28c1313bbaed6134dac5db858016eb21038e48383578bf28a02f477965138ef78138b9a5dd20f8d131c7d51b8a342e49ac80d6aa564117ce56a693bbb60d16a5590ad8f0e44fe3b92a4951994ac0971792c910feaf5e0b8c042e2ea034e66d377b269fd858d8e531b3d49fbf32fe724a5b20d51c0c815e00658b74de86716a323f72e8a392f1d80443f3096c0631420ebfb18c9241e76d491b31f1a7f5eaed170b2c85c947102f641e2f76727a5feca4329ed14a6b98b2c1ca3a37cf4f49f4e53a01174d5dc712a22dc0e25385cfe235ba1c848705ccfe403fcebbacee0374b169c31025b9042052651b77980500e0597c4b0cb742f34fd758b7252f214873eb0f453045603ae6cfebf9c39db2704ea52011587684f1d6577105c81e1e4c2b1f4c4d5093261625014423dbc87de6193f2e5ec2f733b4e85604ea39bf4ad0610c940b0646860c2fda2b0841ca1bd69e2decc454709e0c994ce18fb130cb70ca2c556461e931906878a32729d0b17acb9b9fde216be65ff03d71d5b1e5862c623de6dcec2dff8757a0c072324923d9fcc942f92f3a735b228faab1ad6fe76d3e86986237717fabf7ff18a3c9f1d2070f5ccc71fda7ab3fd43bf8d8f9a6c6fb3c0efbf704696efb4be642d02cba541f56e0be30345c9e8cfe3ea1470c81b6b2065abd5351f2480d82d339d7018a4c1bc10b7ed5d8f96cf52572b7fe05ae553353dd5d3e6fa05789acb9f4db104eec39a139c65fe9b39b7885ba00317576b353bdd97c66cadc06e1c38bf10e94c788f3f9583ff0b267161f0bb2360d072569f00df99253fbd71cb124668a127303ddf4418ebfa8e921a8b65e8527ada93cc5730645e30d465e934882a989344bf8a3f63220db6dcb39e4521ec8123f4e6409182913dccbeb174a767760439016081cb19e20ba1d4ab902a0824b34497af8a1705dbc2d87621123bfec1ac230e2ebc999f0fbe3b471b3006f2097bb23207594d795b2d2823dfe62619c20eaa9db53a4a32f1f8a56dff83f78bad787c3031bc802901762d76af199fd1be4a89fe5a241c650a5b6281fc33f9bc058621a39cf0598f76d0092b2e56b7f43c73aa9c2d93efb224bc6a9045359c3debee013ff16fd1e6665619e5decbb57f15eade31e12654f4c8e0947346311e893fbbb7b2a538ce2d5719b9cd15ceb7dc1e2373d746657935b8ed20c1d34cdf34ece3c13e9db324bac0d68ea1cb7da2cc535d5843dca267f3a97d1e6925cafd6ff5e80247f915d133baba6c6c424ac50919de22a22602bd469cebc2cf65a966175b98f168734c361095123183d75511e57ef7278c65db1e5377edcbcf3cfa00e6b272bf3ba2687104590bf106e346438fa1c8592cb6adf20619bff7e0561cb2b6ed71efa1c764fa6b40889d84ad851e13a563124be7e51db7634c60587f3f712813258d70d4883e2b094b38ca431d2f4a3d06f2b902ab97e4cb6a94963dfb797f97683b6d33523f80288a6f70fe0bcd736376e355cd7923bb842522792c4b9fc0d23d2cbb7509bbb4ec5c8e55edacab5c969a1de5dc7b16c1c50e304b3b291ea849a8364862f575dccc58d67431cdd32d7756a21f60ed7794202f5367e21a13b43a3dc99c5a5972e440683c44cbdb13ba042645d4030f483cacc31ad174bcba663d3def25ca456829a6b6bcf5b60e0fe0cd14fced55048b1660f000d73484ebc9e31227fe7407770d6c1dd7def5a23b1da764e46784f8709b9e48e77404b84f3f4a3e4f2424eac5bac86981779b94bcfd7dd499c6e720abd05e371d06ef425716e56ec41539997674dd83642d658a2cd5f89868debe0f51df218f9e9db7d0c83e6d0f9ddbdb739ff1ca3e0f60c5fb4057e719acaf0ea485d7b2c3c43a7b0b4807eb6b6fc51101d6e75ba71d9932603a6905324e35b7799e77cb99bbdf5cc3ffe0c8aced1fb0eb8ba38828d1560f05e5690986fe1a2bdc0a9085db47c815e499b5caaf7137f240a76cacc654ff7a7aa75017da8a14401cb61c5e61e6aba4743f099f322b1be76249a925e2f2ac9832aedce61f6a226158f282cbbe3258c6eecb45d1caee4f91394299aaa3d8dc3dc02f0c5e0c7b3f78b58b7f553e9e405c83375054367c1f1b1308a2a0ca5940f912168d51c47e9cfbae09fb73974a9bb7738fa5048684e00008bdc507310551779c171e20db1f3ef824160385944dd8b7023b1a01bbbfed8f8b1c68862bc2f2f627d613c984ed4a1d8efbcc50ae740b4fedd1e3a77c9576cb97eae5303b82767de1cd4b236f0f5e22b966e1c6f119d28380abfee26e9de44e7d412187a4a08850fb65b1cbaf35eedd32657844e6a7c38ce28da35dc982ae45616695a4186378e0609732936b91c0a09a40ec28af39ec2219e49a206054298f318e0747762103ba1685195509628de0651c02ec86192ed631ee2389a8821f85d54c30222c73725312cb9ba40709d19b8a1e78af22ac1228e8925524d7975ff571fe19a2be0a5ab9e26b0adbf6f0404bf0be5b029285cdd7db4c8d4000010aceeeb3b4e346f697622b49454c0d13888bf9a389211279af6b209289b30d7d05471261ba0c774c6c507028952c75e4f8a4cce2159623e92b928f2af984bea44f14dddfac6ecd4ecd6936dad7238cfda519a538dc0e584cd800217298ed5955ddd27e854546d415ce7b1eb2323efeeaa64268d304cac1b9c77ea46026492c506979e09a6ce7d62380331224e519dbc6f831fc521fdd3875c8c15bf6fd87ca9b4c71bdad2ab932f4ccaaa231a0eda8526ae89f163bd6dd6e7ac613519784e33a187df618e3e2e822f92093e40678c33822b70eb8c21edd0819f58d38e931e8a67dc5371a3e6aad9aaf341ad188ec11f1be1dcd67070e780ff64ccca134f94d6743b7a08c3133ac60fce4b712623a64839f0ba91a32f25eba612973e76b1dd7023d7a3fa9940cd3fde80daa028c6d95983bc89c37cd055c54b5759a8d5ed4cd8f36da31640a95f5ac5c598f5f5d0f67a929bcbb112a7d851e9d22c836308f53bd8f4ecfe2cda35d7cda14a2664e06ffb70c401024d3c6c16aec1dea27edec007403248ae24d8dab1ec0756435bb65baf23e3d0fc9b58e1d7cb7259007f0c3208a3b41b9421950458b60f10b8570425e08eadda44e1a3f5a6029861b00301794704430daad155c2f1d59e7038aabf2da6424585d27742bc95786954ab7fb08e8145b99103ba49f8a74b6e1b803f62756df9a39ecddfbd3b6af065883b5a39a8c21a47ff18a229ea10f4988fdf884900551d996f2afe1537cd4cfcac6022817d51f5f937fb93df5cd52ca68d16c016ce2f13e3267bb4e9c3d3613dd9becf12c71a094a42df0ea75cf09aa1eb4eb258a2334ba484d338eaf7addab308961d69e870d68f1e17c4b58a7ad98eebd54de6296e1e8ba71536f3e73331cc7a01c29116d70b7ccdfaf94a5dcf47a621cee0bb8b8c9bd3f1b380a842d344334005ba0218c796d80e31426aabc2273f9d602b34df5c212d75ce9ad364e0d423a8a98dddb927da892c7094c48c8020cc9567d05881e553e5867787553c5f4181b976700f5c85d985d6eee896518dfbef757f3087831873a870de618e820e1dd5777fd52c89cbb316499d61c72c463bd1bd93598f1f4586e345f789b2b64c62b268090df7c0b215be81abb0ddc9fcc1744ebe33eae01b1ee3dc9701e1b6f61e2718df95b1da048c37ff523dfef2772f4c6c74961b16d0c50a87445a39914565fd3881bbfe2f2ac5e4c8960a6fa6af8a0f8fa7dfc326ba6bfa54ecb5361dc5f87f715328c71931f28660bfd2d81ee25030782e2d934a1893347562a95e8df03c0f2e1ce1b2ccac4b8485b455e168c80f7939308212283ac7a4d3e64b5a154d24c9d06d8f1e027c600cb5467bab2c49a9d3099bc3598857eb94cd585f4dcffbd8f60809a89f8bf5501e41a59c71496ce0a9bcf1086554f05060af4fbfd43f7a5b22fa2c822d4eca26881423b54806db55b63a37ae19b852b8114b8e2b43bdd0433cbd4f0721c2ca828ede02235a790aac55610b0bf9b058b5e934a7ad6f1a5abbd5e88597488cdfc8c80acdb884625fe74bc61ec0e068f3240d0693ed2697f59b11bfcc6832535aa4f90f25c45fa2faafd9aa084feb726dec4775c37fde8c455d4c9c5d8855ce27c183bcc6f267e2d52b46b9c2d0095d0718d25033a758da7db76fd0276ae7137796e01f262ee0e499618da05ae97220646e501d4baa54fccd41a78fe18b52745696063dfeab27e54831d31fb962d173f0267346f8621b0804b3f176dbe64dea523a27164359adeb6183f4ccf6b643fbf47f1a765aa28dfe0d3ad20460d98d65b1dc036ebf83490d2c330db557be7d51bad23bd562ba9f690d0f2ecdd758067d66876a727bf985d13c74429706148f9aead43ba39449fc23e60091dc0049ee7a3846d0ff6c695e4e1e2069418f78f636f8f4fd31258c78f5e3aa7307d8921a800df2bd370a08a0edc176144e8aae71a381b42a7331bcef43f0a2fc9055310ba9a9995dc14e2042cabf829793f8b62c8008a55af189627e5f81e7b226758cc36e42ea8b4e48e320b260064aa209969e730f2f808ae4fd9b440f2b2ac3a10e4f1b74db1597f82a6112523b85036c22ce8ba49688e9b06958e1cd84c23f2e9342aed70fd973c9a2f1cfccd5d4d04053777367ab07d668f282fc4ce524d5bc9e041cefc0182822e648b5b2f574016ab2f61a8b84a4d1d44ef4ba73d25bf3fe0ab975aaf17fc99ae872e6c67d1e7b9bcfbb90aa6fd8bc938dfb45cc88b67cd5a8ac7d4a9a466a93311df174c5cccbedbf01c89b5dbfb4eb2e349d7caa901c8801903a67e30082d1887c1d620cac71a0d70b5474ccce3ec18016b9aa66a907cb3f86a2a637623e027ae91ddd5f3f2b20dd7e596ce710c36539bc67caa60738e810068ebcb058102cf810900f0a6873d2dd08d8f5ff80ab8bbf32703f78e8cdb591c8d9de3ff58a26593525d44fe84a5e380f68dab8ae889909f8639ca3b8eba2a0b6314890d903050298a35c2c350df200a783d3ddc1b271c833fa49abe6cd09dc19ef8b0130187e722d9b54c4a776c284add8174c8d4088daf84dd46fabf111bebbe24e0855baca47d72eec4eed5d09d4e435f3a20ef81a272768fabbf273613d27dc61cf75d8635281168c8d570140f02ea30ae9e76a47eb5e399eed38ff190d43db6ae4d8641c3072acd0c7a663b2a9a3176d4b99e564090b19e44cc3ea2d18733b12b89924e0f3fa33f7db13495300d53d742fbf6dc9c1c3449d6429a02036e5e8a7d17963f4078d152931bc6141c583ea4ba9175c988456c2c39e4048793058637057cdd084534262a12b3d2fddec6da1a9b85f71c33a5ae4107419a384b8a435744e4dc3938a39d5add145078e3d085ec419cd4e0e620824243212c68dc87c64b1f1f35e39e1abd447a3e0e806e690cbfbf9f67957d81643478738e59a7488dc57cd2a57c59df6f6fdcc8eca53bd61297d8a1f52a26747ed1fb2879788d8ecc3a71882f5a782808639fa9fc6c6fcf81e75a7850baadc9cc3a495b95651a911debe5d87ab00241eb243b96211bd3e9ef6d95debf8a64a0adcd4552964dde6cfdad5f7c5acfd676914465bb6ea0fa5df604c2a324cbc4b7a1b3724d989799cea47cb2733d21f12d6fb9e15ed63f8e4dde2d2ffc68735bfb16fa7458a7686aeadba49545d2eff663eb03a03401dd46c85b7b7873184866f8b18507fc38b1c2f086b78a473825f1a6589cc516c170b9077ba83066c775494ce4cce0c03261c26bc2005af6f2dbc21fecad1368ca9f740f6178da183e93af69f1a235aec8eeedc146f3efe4185d46497e979211d6d26b91b8742449d0fa3e237321b83b404402872499c061738bb9c42bd938088a18970598e9d599204831dda32b7ee9cdee9c0d70d882fc3202ddb70733941d1fa745f1183d885929c8084785ddd5482353ad6e98b7a18beacd62a13aae29e07e26f9c3ce8ba68d97a8b4224aa605229a64fe445bc2e692debeb62271efa39759b2b4b981ad843123bd7441a15eedcfb6f86c8bf7a9c825c71f57aee32f1b545d50e054afdae03df35b009919206d6044c8268c682eb20c666f313143c201bbeebd15017e92fbe3cc1ef2c1c05e7c40e6fccd2940b9d246ab1ec88c0853f2a51f026127429f9af95152afeb4ded9504f491de26dcefbeb53b4c3e2f80c15e96fa73ccf37156c70b30ef2e1c688fcf4ed9814d7257b6b545b9e006ee3716863fd53dc8122282e359570480882303b3d03cbfa286713e6c2a1a4592ed1180b2143f57b247b24ef9ea042d934e31bdb27d485c6cb69f724eb7bc965f8bb64d4defdfc71f1d642dbf35615ba209d6e7d1cffed1d9c8bc39c39fe4bd329c05ab02e993c14185161f6625144057fcb6a224dcf439ca301ea927e3f830947b2d854885f55acfa330854e9f6c91c00d2770ffbee99dba310d0fedcadc0961f54a208082cb7d90d4ee09992af26c6fe16b4fc96164ae788e38513cd34fff9967f4c0a958d27560ee03d5f50a2faefa297b06362db76b3b176550162ca8e9129eb4f4b0664ff5d37247824aa1a89fd89e860a8c34ca2f9866a8a0a90ebc1a3cf894c866721135bd49cab7868b53d3ab6362db090c054b17f03e8e17543cd7ac02fdfd26215c6b3679f957a8b2826d90d56cc6b47ecd28e46412f88124adc8f777c21dca207b2fe72436d4fb9e210e0cc14ec1227ccc11b036bce651ffba43de82e4f44d4f934bbc098f9bdf12091ea2ba85775039a50ba9c9a599a551e39488f6f1e3c269a6c17273a685ceafbdc2f035466224d7c5898e9eb52e8b4431b676ac3d5890f2ed45a9583bc7c7c95aa2afc817c133f11626dd50a7ccd46b9ae58830317c9236ae1c1670fd400b6566d6126038d3d80e44000193f87f801b1a6e768b2c6ac63b75c8148a522ed85957432fc8fdc22fa2cd0153c5736c46f7a7120a36edb84e40da540aa6563dec9bfc84e1bd0325e04662a30705f14a236305e22ab42c98221807af804329c3662a37d3d08e0d36e897014c44f40b7e7f256f62ccd56559cec37f163569e91882d2763e6ceefdab1d2b929acb6a388fc07fc50d33905969060342923141eb480ce4ec412a390596f38e2d6dccebc2f7f9741a8cd1d9250e21ef7392e58baf91b2f952ba9eca0780f5b39ac2276b7e4aff659f5558c1f2e605e3182aaa965403963374f02c77ee5ceedf56e235e504333b22b919c574af16d160d2f40c51a28c1f9f7be5f1a3087b1eb41b71b42928c63fb72f1e61c1003588a5fd61a52824693e95197f563e6f02cb96ecf57368f08f1802f4d91063fb521a36ca717f93176214e6567d3ddccb2be562a4879b36ee094f7b13e909df62cf2924af8aa063eb6d78314233cccfd0378128ad5828a0627ec091ac85764ec0b17b703488aa9c9d71cbf0ab1403ad64fba65f97d78a25fa486b89faf279e2dc924b55d43ce8e9bf777cda380fec5d4ff83321089d9ff819c337fd47266749cdc642f635efbcfea6f8d063e42742b1166572c2dd2b119af6016ee9feebe85b3550650add94f8f17235d4edbedf13b8dc7f20cf03008e4df88074f0b87b8c7644db4c48a6861b1cda221f287d5a966f03c9843afe4d197fd7c80d1432a4a4ce88f6285f78667034a82a9fcb4fa9fb8060493152972ac72297274cb30753dd90f50e89a6e2ac4b0468a01c89752e8a0ffc7932528eb103a8fe9140b8bef6d7d10ea8b4251d46ed4064fe2d309d051b1f6f462f3209d808c1299e6233a3fde36b28f8c9033913483e954b465af25a39f8460d40e30080f440199d74cd7e1c14f2934a1d703085aa38288c6cb85914b334d3fdc71831209bff928d963e61b1ccca230e34bca1d5df3cd68c4fb7746d878dd795162f9089bd47c9999a27da59d416a5856e49c9d346c3664a750e82f10672303b4d8c1b94c2ebcbd3afe5d480762add80f850ed9a1f995d7dcd6b953ffdcea3ce3f02919c2ddba3731343c44f4d5d2a95983dc36ed80b52d3c88ddacc51857c83887dc55404aeb473af6eb33b987e4389012e8f9000fcdd8218b50d447d62c807d3a04d4bc337d1181894498f9b46c951b11278e821bb77340342649409f8be8fa6c75595759d0de13743cb3bafe12598d92f012e2a2c6f1a51432a3c29de2172b7e59c2d70743d6083b0e399be7d090f20a58232c5ba59bed163ab5927192776343049871b6bf1ca4e0f4424ffab06d1e9a6b67c3518d001d17a676cbce133abce2e49d663a8545266ea925ee1a5760ea32263f8e0bc4d7fd185f22248bf55a7ec46490090d14afae5db26285a054ee3afaae1664e3e6a13c9dddcc5a4ad31ece05a2e47853b182037af1d10b5cf0935531408641a918f034e580819b3480e3d814ba69b8960a98f2c396c53c49c4d7249308d3553787ae4208b7b9a30222af86625f4ebf0fbcaf95cd85715abc5e4c6ef4580116d3c389f491a00aaebef44181868c32e1bbc3bcd0c335149a1518f386e4e1f631a5559e8a37b0a8cddc171e00bc8b29d760260d6e7efa987e50ec78cea2d1e9be703be73a2cb096a18b563d4290d4bea8551a34e19ec7349ca1fa8a90ef57a624f53896478ea88a9325b9e6b2bad8e64ddcda8089f5001a146b5df133d781a7cefc3b5ba2abe8cba8e5317c14c5012067a35db4b04233118feddd68a10d92f0c34a2b90582642f97eea7905ac54a70e31cb610aa5d25d8051929b4505ac8452e9b66737d2f75caf022eaf27b21d00af40a0ce8fdf16e40ae0ca79ab9739b450183cf0a9b8c83601f91d7ac0da520ea6118b3e5fec4353e2e247566d9621a2df68344c6ef6d5b81cac1cdd98c46ff130ec20adcd1d04b41a66db82b0987c83a97cb761b0c3bcff4e58b6d64e897a37caeee433d94c56e9626274a0c42c395529f93776e5a04ff1f8423d26979f0b964f71a7d7ff950d29d4575fa92e439713de397104654d429c7e2e724f6a39e0f82eb688b192df624dd52dc2203318ebae720be25648f04027b6d6eb37ddf9078179a236acfef21d032f8b62efeb7d59ff4fbe0c328acb0cda073c5e0276424bd61fb87e11769f6c2e78e5db64ce265204c043948523edd580e42404626eb777f6a58c6eef83b0ddb65c06f52bee0b845a51c8ded6c6082515f58f3204f9a60e886e6c674104271422c7d1a797ed3dc8470171b269b32efaefd182804a44aaf5b3130ebf33bb3cdab1da695bd7a5ec6206bfa1412f9793e3f0a37215c380ba32e4913e29bc18e39c2741b9a7a4035fc2350d3791c0107061b5f57a37943ad447592babb845072c991df4aad0c4f4983b222effe58eef26036921025ed2dc6b00000806c41c910267df7b5123190878d5925b354c3709f85a61861d4e33a6c352b604dfc42fb195d30e8204e6c62514fedc4b5a485069acf28a5d369adb6a0c3596bb0e1eb60138e6ac210f4f11e394f21a196cfd95a8413c2a382068d040c7f58654771122c4cd628d7217d9cfe685409c7c9d0e1b63478d17523ccca8cd594f75f1a41c1de44eb88e3f4ad4d4a1a939390088938faac2a4b7d08b04421c0af84704668683f8cfd944337286c8f7681b24eeba0eb80bb01c0cf5b1997144cb48415e128125c1703ea3697ad571040286b7362bdfd92b0a287315ecc52ce99bbbd65ba394220d517435d965d8cf1826afabf410a13d10160bb0da3cdd8147ab1697fa9ff000900aa4abd31fbf8bee3faf7713c9cb7b52bf143078ab6de5eda444a29650ad80a170a530b4a1ac06fadfd9ca7b015c18a7b6f7893c018638c31be49e09b04c618638c93c0b4fbd786dd8cd95e2b32a8b5d639873ad4fad35a6baf29aad35aebac755e69adb55e69ad73ce5a6bad75ce586b7d44053645ad999181d35171438b758771007bad9de1e27bcd6cb99fbf2f70c6b88c1765b628c3266b2f9d9b3664b6c897055f16360cc19d824c95ce790ccf193261c8084106086f8620b9c9cc016064adb5bef7deaba9cccca083e394f9e2bb7a4bc61b98d112a7a9cc169edda08c177196d60429c346434123eab0268baf0b41a8830c4da175ce396badb52653456a9d73ce9a2a88d69a486badbfacb526030414282748e948dac722c00e19375d9bcf1385d0a08ffe7cac34f8611f418698a18099223c1bac757f6377d85c518545424d2e8306678caba8b2ce7a8c043add8541e20b0f6b08afeb90e881a74c17eff33e24301ee3858e3237586b41773bc60ab2cc169798b025021db4196d483006c623f8abd7558ae106c7f027d2441e1b237bb94aee49a15f23d6eb2a7d8f5f9e1b1cf3dce09eef3f117fefb9e9ecd7e1d10df9fdf77d6e35b94ae018a30af77ccffa41a4e5b421bf8fe186fcde3ffcb98010ef686931d290f7751e59df8c36ba8836697453992bc08c26a18215d0a085040948c00a907063064dbe57867b7d03316c01840d2238b3c517a5ab02f25e27c87bbb9b97d63495a902f472ceb9a94b431504cdaa6b8a5a33f3808ca7a9b4a7a942b08c045c5f53d49a59985f6055e5ec1ce874576688214770d76136487cb10001b2be9deeca74e9ba8ee8481f9175ee7457e686aeeb8ee4ae8379392fe96f5aea6648a1062758000e6c30d044124a5d0ac66861a688acbfa6325bc0a6353038418526013f6c1183381f50ea667807ca0952ce90b1c10c15b6460a3e2a7723c6b2f172d5d03017279f54000470c5052c7e330d3789ef13c5fc618c7972cefabeee3cd0e5480c085d07363a02e201428fd0fd1e1fd9e33de923934432e9c7f88e631dbc0e0f606f938cf08e8fbc3779f2378763afb71ce0b0f1d72a3d2984488db73c3276deaec131236f3f72c9fb12918cf29151dea3cc527814de63bcd5f99cd63f8eb1565ff741704c85b72bbc1416ca4f147978fe61b420232b460270d84dda9fa322f2dcb73918795b186941696e23f6f27da2b55191b5f1729932d23e12e7cca8fb34c69086fefe8fcf5f2f6e0bd6e09e3440eefdc1006b601f74f000d82f3041be09c7700e87c13d177fc14258373886b9c0a67e8c28268d75e366bfc020c169f0198ce6f59706c36a7872e036b8c70d1772bfc038f9233806c5488dbf4fe367e016602fbc78d92f30297c1466233e8c1fb2011c16e3ef7311af98fd02a3c237e158cee123d9610eab9afacc05f75cc73db78adc2f304e7f04c7ac9d41006e646df013708cf5970603abf60b24fa5bf437f6172984f7f122fc7ddc05c780fc7dec05c782fc7d1c06c7947ec8dfc76370acc8dfc7543866e491fc25e1af92bf4c7ee9efe33638e6e42f94bf9fefe7291c33e1ef672e3876c2a7f07785672a7fca72c131d94cf6727a7db8c7d5781a2923cdab527839ee41613cc18428239497e39e27639371c97ab16e46188f8c46c404f931d2ae9a3421bc1cf7248db4fbc25d48fbb117e682a7700e53612f380c1683c7dc35978de31e1d23edb6c13de3f8cadda9cba586adc23d32469a1d69369733d22c17db05f7642f31b0e08bef6d324e8561ce67792efe88f813fe2634e2a475c75c0c60afb56a7cb8f8deeb85003863cc8687ac73b66274d09dd66e72e8bcaebbc19770f325fc5ab665df3d9f009aef927e0603354ca06ac786b0c50156e87608d1feeb80f958fdfab167a53bd26a9fd7e980f92851c50b1d18f3a50667d2a0c0ea978e6780b873ef3d43040ea4c539238175d041078d772185982b68300515308093054913738081eb3bb38316600ee96778b05c441a8c0c32137615e8b44b41042be7205818b6038b86afe30106cf4790213c3c01ae0943335d058860057186871d78a08107186c16e10e30b840113b6871616e9e995a13040fb7860b087ff7fbfe8e9d50b19410c5af118248839d9932c363755c23daf7f76f7c6d424b7ac6383f2de66414210c68abb5eeb27edc22a29de8d3640b6b7bb1b8f93b9c33d6d73611dbb93df7ed1222ed23affeef1ad12c0b8c454078c5fbfa6d7843ccd259ac2d21083558bc2d2ce07c41c402b84041105f78a1e49f0eebc2728b08551055feb2e409c8efc2ec48154419328f3c388710bf259dca8b1892e7c27c6c65e7e1753ae3ab1e8197d03275edcdb9f1d145fa991c1bc70e5e9c3da7e64c8e890c44c873a307084c31850544e0051a2038b000e8809cb315e2166477c3940808206304122228019b2694b209aae22811e70a1d32648e069cea85332e800114556d94681f2e0149137100ed00e00801a70419a05aa20bcfc5185f1f6ae0838d7b14e4c8c7118ec16680e35a5810cca7ab7ac305ebcd08de4c91d9e03249631975afbbd187f44fc43df7fed7a4032d14b0a50b216610e20aa57cef7bab255e28623c1eeb3c5ce3b923cbebc923c6568abb73c50828faf37825bf1eaf78effa22b6e04a7e8b68f63bda47def5e2f0aa1890807457ca2f57b22d9b23574dda910851b422be43e4744cd41798d617b923cdb65a3f5ae315235c7fc588ee5b1fb272de5b2480abee95334eb9ef728dad972bdd9793ac977fbf5e12f283a377effee1f7759ee791901fffc521c0e2fe1754905ef5051324edfbe20812fcf2450fa457b9f182e421bdca8d156498e338766555d472257a9c72af6451fadcc7b4842d7e8b6832bcd2877bf07b0939abf1c32d26fa7da481a3378a5368defb85ed90b7c544ff146f648d9fcd499ca45d8b9d0843247148ec5e7fafd5e75691fc61c8a47b4dc3a1bfc088ddbb2bbfebc5d7d42b89efb42ba4385ef15ba4ff8af858fc16e5bcdfa2fbfa714b892b71f9ebbb2ff0755e4aa166b956e20abff5b9f5cacf7ad1ae805fd6df8535acee6c9040de16ce532e13bd2a066f481be24ce566f2e23853f0db27ef67bfb00ce707123f8c16d840eaffdabc115f0c6fece8f776bc9c4ecc227ef8e96fbdd72a9285f6bd4be745f39ef5e28be64db14182fed5ea5b2fd68bb6fad5e747f23bdf7f236efd8d5611771e31becfaf7323a4c1f8fb4cf0c31869de7f1fb698e8ffc6afc5e47b97f8416eceebbc682f1b24e8cf79fd39a30d125cbf7ad77883a6dffb1b4b3058a529188028b90bd1bebf535e53c00ba3e9f7c64fa3206c85ac100cc3ef6f90e148ebc2cf79fba2fd97f3fdeb63ed5c985db111cf761f695f78fc5cf66221826d40cf1b6922a9b988f7fdc23eabb51062d751b9a4a73d0ffcbc1177bb6ec465528fd789d0a6839c927ff51ebe7e5d981647da12297e1886e18ba683145fb520321cb50e5964188e341d3ac8d50a5cadc4f77c7484592d0688b4a323d7884674e423c8109d17efebbcfcc2c457e87a85b0307c96fe20f8c117eddb21ef15ada601cc17f461b6affc981644faab1b694164fe96eb57630c22cdd32ce9eed571797c7fa53feb9d107cb514708dba918a26bbd5d8792f518fb620724a6679c662b37439bfb1ee5d98e98202b9aa8b2f5d10404be85244af6af383f739475f58f753baf71e8927d921412ecb9354fcac6c0349cee530e92d2462eee62c09167126723952eb4f5bf036b91cb9c220c30f358bc522c3efda905d0b4048771eab67fd6a95ae1d197e7705a9470ec8168090d6797464e7ee3e45bcc71f7ead24599420dd7d6898e57944308bf446db6a80e8a47eefbb7bf4f2f191960892d0760dd05a0389e2de3b86ad04b4bcb412d02a40cb8b276e3122ff88bf18d290f76ff8e0171599c91b4315792d962dc26cd145fc3e3fdb678a5b77fa276aaee57a6edbaedd6ce6af6699ae0f759aeb5ada52f4e94b77eb0277db0277dbc6b3bbedc2dd63b8dbd4dd4970d1a9d4f447b6a9305529532059aa02c9d05aad04924acbd4c9acb9bb76bf41ee7ec34517411258113a552e473a06afa821e4f117431b62305f96dd12daf0572f570ac3ff58af9b3f7cfb72e17b7b3fa5f095e57bc90044093ff8da326595f0cb004429ff65b15e5689e50296fbdd98bbbf7ab15e535689f5e06b8b0c4094563f6595c0d7ad26af2de1b3debe5c00df7ea30b464001dfbe0babbfae04bec415cb86f740c829f8c148dd77aad06375ac2dabef5e5b589635e6f01617b0e007c71c7ef0c171cbd42bb11eb752c0cf7ab98005ff6accdd5693293b6595be5fbd561fde17eb5b446c34c9cffa14f087dfbdb67c4f5c8965df05f0af0b2b575a81afefe5bd558a437ae3143052f7c14865fd5d6be97ed7b2d124ff7d28f843db5acaefad25fcb68b008f686590216f9992e1c3b1d55fd932f54a1a4af7faaf5cc1721f3f16fbf9b180ffbd8f576478253d5ec1028e53af3462e9fe1ba75e09bf3762e9eceb1106fcfe583a7b861f8eddf7f04edda9bc652a8f46d897c18816809053f0bb5391d88450bffff7720d21e6f71112b1a41e73166c47f0b1fe412e1aba9108ba88800692a7052884eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee034e18e6b8bb8b9fb523166b6d9930bfebd0e1ebf73c363d74c9970c7d723e53179693e595b9e4f5922b567edae765f5ac57fe15ebc330e79c5facfc62b17ae842decf4668230c7d64f03ebff7ab1c445a8e97cfcbf7e50b9313b2c6900322ebf32afcf2833e5bc8bc82e4d78d98e545056998205fa49f49e385244128a6c70d1e77e42ecc3e1eadf3b863706cf5376b0f966695479b33cd53a35f3d6f3a6b73f65e5e953706f7dcf76c5cb7f67376f120d23c356b3c2baed19a6e741c8ad114b8b8d5f5b8697dcf9b16ab95f32098137a39ef728db41cdc727dceebe4b842dcea81d303a7074e0f9cebba590abc86cca2d8f366c71671476e47ae074e0f9c1e37e2f7bc11776c1161d076e432d93df83062ecbcce4883318a4f5bb3cec3f89d178cd71969b02ad205be27f6c0e981d303a7070eceb97acad5e3a6e7cd8e5ccf9b1d5b1e7cef053e6d15bff3745aa3ab86c33074bd8e2b747d288e35ac2627c71586ab71cda407f6c0e111b17640e83a685e1bac45b8fa11b4211a968b655dac0288def7f5204e015f93342f8dcb4be351c1b262cd35c2e21a75aeeff1b3c69e372d10ec71038e3d707adc784c78545e9547e531e155d996f6aad0603739a0d68edcf71100b3a1caf5205a9286d9602d701bec057e93eb81b363cbe7a5f1d278546036580bfca607ce37f6bce971c3e66381e33762363d70bc5004ae55d87da87db6d86ff49922bb373245fff7de2afc90f5e0cb277731183ec8baad07c156f8353aecbae0b35aef6a8de1df57beb0efc2be91e6751adf96c56ba6b0214d07da903b483fd301267a20ad0ea49fa12247eafc778d686e69d9c57a9705dfbe683e367cbffa3cea969129e0af9458b2f5416e16f25d2c96ebb37d962be7edb3469ae8fa1ade0ab23e87f52e91f5aecfabf73ec735921092ab91d63d68e3fe975d361ba00a2f1e50430e917ec6035fc83027fc30ecbebbdf875968d6277795e44cd2bafbb8ab820b0923fd8c07d874dd8be50a42a4ad60b7ba46a684ab71054970a465f13c5acee9c73cf8cbe52fe72b252cd28651802c31478c015facef7d07117f5e3e2e349e97932e2e9f17d6e7e5038b10f31df18db946ac0fb4ff5abd5ac0b645e41bbf1e2e8ccbd7e5e3a2bb5c23cf86faeb1246116a1f192c5038763a642e5c440b76c93f5ca32fd7283ff642cb61486c495af742443fd38123c8ec85c48ffd4c078a20f17f5fae11971ef2171f192c50b71a7db658209f1cd9028e132773f191c18660470d7adffd686df751855c34580572411380a846bcae1b5c37b86eb8168437e0e7753ae34bcb390e7edeaa0520e020078e1b366ad0e0992163831d2f02e112d13e4f0c183a5f842a885e58772ca088020a2aa040636424bf2a725c2d56b8023f335a641d82a2c0980b28d05caf1b922f695ff88ee042c6052e704055164a970bf23e4c03e47d9f202898f0248031c6d7cd1a2aafe2807e228cfe6c0e200d5c3000192810030c78a1d46d417655387c63102fff128e796390aeeb82dc3443d22c2981872c9d4035e4481217e967aa8058d3e10e88a3f0abc2016b00014d5085f7de9b9b08f305a1eabaae0a063669bace092f3e7defbd5fd7754e58f1dd30c423fdcc136f5420e6354118f0ba20f7f325d2da832eafc40439423564a535cca3720e38d1c5cb53592ae0c30012608498095000055a8c5100a973d0ca899cd67a08a8c7d040eaec51a5595a41a7b5668106a13c618508040feeb1ff8d3cb86767e7c2d684d8febd414130980e1d4e783016c5efbb7727b7f0983b1d3778fcef1bf1d16621c1ff1e0af81f387ea3378ef65e3b7e607efd59c2d079726c1c19bfd6fd550bdfcf9fad91fc77fcbe3864887398e3a4d72a62ef0a676d3d0741d7fd8b2567c917d422d4fa6f9b8f0d1b4f6b160beceee3fc79d6929da7dfb3d1e43e7e28df1d63f8b290f7f50826df1756d36ac1c67919e9de7b0fb774f7de7bddfdabaf127eacb1c64a38ebacb3ce4a586badb5d65a2be14e77bad39dee74a7843ded694f7bdad39ef694f44b6badb5d620fe7005068f7a1cb374afc79613b771c8fb7225c76a708f52168b736b4b786f11eb30fbd6619ed3c47a0f16f36b127f9843c4e545c4df3262a43382c76b2d1c37f2849827c25429c1002f9cc0e2b3c2ba3b812657d96bef1831175fecc5eb8233ce4e4c39916ba24db702dd69fd79ab2fac3b9a26a8aeb54d88c14d84711f47205a6befbd5ab4692d812f88343c84d6baebba2f7b23f8824813bfef63e51c0f7987105f1069df1d4264b55a2d22de5a8198c77789a4752471272787c78d585214451d1d1d160c169208a345a406a345c43f77777777f76cddfe78df4b43ea8c59a2ca2e61e6e27bbf3c062fb180334b18a0d37a092e5434384395c547a5860a0d159990ca01545f5a543ab8a860e0425402053a3074742e60c307830a183160c0508289226228e1c38e123828919351030533743cc06386068d05d43893440d363688c18d9c14e0a02207cbbece5c60090e7858f6f56ac28a570e0d614b05672ef0c319336f08a0a3e367a64030658119c4a08a06016894fa28ba46a965d4276d35dd5476fa6afa13a596514040419bc8c98928084868a80c8af59011cd7af4203a0ada311e7b2dd35575c2a940ea8a43a7c876940c6835a18050a8b49401d54a195a034a551c50945a462525ad297abbe154a66d2bd3271d0fdc67e54ef77e6252a5cadb5ecdb48a53500ef7ef83ef47cc59143892d0fff834c5c976acb0f259c1602ebc0bee9606ee7606eef68b958fbb75e36e65e06e63e0eed96d172b01fcfbbc005e4d7fd228996ddb803c05346afaa3a67b5633714e40abedc9bdc7cbdd87727e70f7fffff7f9e083a49bb3f0439ad382ff5afe6c4f919967795b714aaaa0698a2a7d5253d327ad7c9a9a3e697ddab5ff5553cf1a0565a6ffebd3aec19a3e69b66b66f9a496ee8e5dcce180e5624e8c1cebee345c74b171174104d5fca6873acd734755f99e17c1c7c344f0f1a709b59dd4f4a75ccb1993bb09de26d7e49ecdf3ec9e6b1deb798ed532accb7e4339e6b8879cc3bbdfa733b6d6afdb261988752f04edd7adb5f81eb1d6b3d75adc05e0da6bbd2bc389b59df5fcdad60fbe5d075bbdcdf7662e365b7b571606d782ae6dbe785b4bbbd6de2fcab571ededf2b52cb8d676d736b133acc5f7cb80c69ecbcab076830f5b2fb6bbd65ecc646f5e814497657f7c56ebc044eecd42f828c7c88a090d703dfb6580cd1896f5b5d83501ac09ac5f1745d1addb6cafe5c27e7787b557df8baded6181ec6759f7dedb09b11fdc9baf0dc23f218dcf03db8251e3fa60f5a561b3c5d6efd2fd95cd7ecdcebfc9de80fd9501ebda263971b1ed6cf66ccbe22ef77e49d81e617b6ffecb0261565beb0565203a41f6aebaef5a6bad676d92bd5704b8b3e0cd988a1d6f15ccc382e1b59f676f909be3e2c038b063b739b6bbd7b6b288f3a571efb59dcd4f16d461437dadb6ae988d3b421782d73a7d2cefda26f6b3165f9bed118be322dd1b37bcded516db6b6f78bd6cb1c648165b98052dcb5a1b82cd7157d8b35fb6d7da246b3b1977c7e66b7568f1cd6131be37df6c91eeb535eeca82f6cbd75a9b6471dc95876dfeb2b536f636a70a06415b6c419b792c0826852ad8c8610190edbdddf5b61537080a8f587bedb5d6f270cf6feeee3fdcdd89bbc3dc612eba864451c2b689f2e30fa5046cd24011c2045a3c294b10d4a4046b7ce91502675282293693971920960881325952d2da8c20448e1714296f0421bd78808e4ae07240ac6ce9301262658d4a5b83a235718228f202c779aca1410e9f3561ae4fd31028085e827680f03e5de458f3ac1c5e66c0702f3156f026ad837f86c11dbbcfcebd96af8aab2a5654aea63fbbe654aea799de80f60c959927aedbb2ea4003b91eaf8541cfa3017a1ae30d5850b42c193f58b7fa8e326b87e5a1c05a710bb73e35301c20d7b9ae07669f168ea307e45625b066d9c7a5e512d9d051b2ed7c6020274292213a30dcbcca497a3e90f318ac4eba69b9b906e6e1811c084b316c90a3140336a26500391aa009ac9d03e48acc383f7515835c130fa207e2969e9267b041cb9775b010075a64a0007047155b3e373eb86ea883e878489984ad8298176268d8aac8ca83a69b7778482f2021849117a6c801688b191a98c885b82704c0d01acab116c8d130d2b2f290bad5e7c2312446308e55114f0b128e27df111b448aacc023ac27331f543931fb18ad3ca418ad6e151219591822b7fa8ee470aa21a7b1a86dd7a45be910ba1d249010077ef01de9561e0d97909c1c79093863e746093b3ed812271e68597d3f5e8f568f1892258f95bd1a3a091b81acfcc107f1406f95813409f92888d536f04bcb08023f1946ea92fb5632c098162e391b127db0ac23ebe888c8ed70e5211a049d03d4916fe408611c2fe47e802c7ec23c32d6021859e0013dd14841e00169a8c44080882f346471c18a3ae569cb9a589092c209254479b29464842349473d601e740080cf4e3401e44707630d1a9e970da001334413224092706cc00a3b26cc9031220c982f0b10c20b1051601f20e0004e2974c10513ba430ee6d38f10565e181db8c44010a86940982424a3193be1eaf36ed8b04005a4ec1993252320294224081c6618008c35451780c00388c862420931239e9d3c459a1794f0430423d0eb12104410393059f223840f5896067706f78beb26b7792e2e9b5b02bdc686e07ee056017a8045c59de29ab95330cdeaf870e81b2d1a77c6ddc0eee8c4d030ae8e15b3eb867a75c1efbbd9626b3b77772377afd1cac1367012b97c432e27e976c0ac88362d3a0cc869cdf23c0881962c84509ec1fae2808e865c4e02ca58dde0812107a29053c039c2b5637d45bea36e858f766820f78dc9ed48d102c6f00d5b708b0bd615391d27a75935aac8b1561e13c8813caeeb85a081740f531b84347c7821db90cb79898f79e8007d3c3a715ed0207c479e0f9c837d7c2be69193007975abae881c0ebb1ad92714c236b3b2cfaa8806c143a1abd1ad3a1a6b87b503ce0837f050c03578a1ab81c5bca0ab721dd0b2ed993ac0919358399d4eb698071692975a1b78d733c11375e7e9e024bd81cb7621d6998531bed8c31f06573732f6a278307296563a5ee759ec65a20c94ed4703afc985b02207e45c4568d1e9b28d6fc80bf98a1746a6f738705200023553a4395385837a12078e0e5c8828011121869e5d7001f48198f3792aa4c064499c2896a0e22087a02e3e0439c0151f90e209252c000130403f1e30011500b7e6a0a63068411b2b3c40451314c882850529299cc0648991221ce49821630666ca40e001585c60c271033d39c8715d4182166cad5c1c38328881141566c8d0f9c0134e2ca184052a10811c7098818905144c60b20489145138b1810b74392282104811c5134d2891c4105f6a88018616b4f980079448c28c04b6e4f60c09119d569b2cb0b8e24c1365c81cd1001d6ed833139010e9d1694911c5192010a0c3963d6361042445888490e46a65cf020b29a280c28932648e88400376c061cb0a2320112184a41891500f0c9dec71b2c08204509c71a289326422d0801d74c0e1862d26a000d30a528000fdbca1411212725c23c071838b0d359c604290026ea841ca8a11be72f70e5c5cd1e0601c0c27d740d3e0cee0734026e236e082b143570807d99f90c7f5c120e097c181c5716f7835308dcba3675819600c1830b098735a2eb1b5c3a211de58e980dfd779b8ebb4c6d6863bd37255b317eedbdd6db8a83bf79f1f77bf2ee634def44fe8f7bcba572927d8ff9e99ea69be6afe6a7e085269999651b22f7f45cf57cd5fa59c3a17f312eefeb9989170770f5ccc3cb8b088ae00b8bbcb45574de74d8f0b07770f5dcc53bec2cfcf8f0a1fb5429dbbf64fe86f9959533f459f66e7fe0d7596a9bb8f2e667777d145dcc61d09e9082986648454844484d40369084908290809e9e8e82876647454744474d4e368e848e828e8082976148bc58c624531a2588fd8504c28161443323a328a19191915191119f5301a3212320a32422a3a2a8a15191515151115f5281a2a122a0a2a42223a228a11191115111111f5201a2212220a2242ea71d423d6c3a847510fa21e3d7a0cf510ea11d40369e8682836643454344434d4636868486828680849e8482826642454244424d4436848484828480829e8282816641454144414d423682848282828e85573c539fdabe68e5a3f499d9d38d4e99fd05f71a8bb8501ceeefe2e5e2cdcd54da5dc496666ada4722249d122e736f284a2e9d26caf375c9aa242dcad1744768aae4fd673afaaa99ea8ec4422b5de6c444e262b8a3a59b71174bd49a5b2a42475533157d366a63726a9a7bd9d56b37653bf692d9bbc271bb87889dc6ba509c345ebc64548b77a9a48335cb463dc7dc745fbe5dcb5f7f1dbe967351c1aa57ecfab26ecadecd969fea682da76ca742baba8b24da5e5ae752c917845c793bbcb70d12eb99afecc501bd06a7bda292a032a4b21a2a71e4347bb08e9492846349b15211519c964b323a46d2434333ada48444e453d884a20d9aae2522035fd596d4f7e8db83b8f8b1ec6ddbec0ddadbb7b8aa6e9feb30c5352b4cabacf9ff3b7d34b95b655c5d166e5cbc8ff81329d5e35ff9fd0df4950a779a6a5096bb99dd6b4dc47d4adaa3b9dcdc8743623cdb58653b29a363309d469ce50d949648624dd7b69afe5fa644a8a5659f7923d3b71a8d2cf0a4deb56999a547874fd1d252b65af96aaf952e97a6e75abbf5ad967cd2cd73de43f45df54674b6a25ae856ddb2b924dc59492994f66baa9fc1732585134fd0d55a6e8faa4053f33dbaf2acef6abbaa1cc212a1832e376062b1be2c2aa3094e4a75c6262fa516bb552f6b3fd4fe889aab55a2944ea2c95a028944f9a9de694f7f9a44f92a9e90f100f9bcc0a904d66e5444d3545996c322b28d39a6e2a272a4b4ab2c9ac049509f2e22e534d9b8d2929493d51533df76a65a77bcf6e6515758a0cad316d598a3e954e3855ea569ba136f79be36ab16ee87e5752ab592bd714559232a9656ab3a1321ea9cdc603e889284846148404142b4ba421598f21a74d6414140b8af15837d4ac84e2b1a16666eac4034a4d7f8080808054534d7f9ccc5a52126e5331d7928a99ee19935ad66a2553946c2d9d6a5b769642dcdd86514003966294a98ab9bb05b2830a4cb8cc00841977b72748c101313c5778400777b762583440b10181152071775b030b38e849b50f07b8bbc500ced28111a8084094bbdf010060270127e8000a0db83b86c1162c48a088260cb085bb5b116c3f14e0c3f58180bbdf2444806451c30735c8c0ddf10639a4e1c2872e6638e0eefa00047063a9488213c4dd2d1630d0e1ca1b1f4e1073778c8026cf00511aa05d71f4234485070fa9d54ccb9b4f107700e4e0f3e303b382a64b52ab5933d728dbc9b6956c2ae62adbb51a2a24dd50e5592a792a7792d4a644ea696fa5d4a6049de19ea4fb762b5313d019ee89baa2b5276789d66655d054888a23d3d2891ae5661b92eeb44ccba5f5dce98e3a91a8b89aec449296514fd4322d977050e6d3890a394d283365b254de6667991aa99532334557d53ca2decc28753db74daa5c52cf3285a2aa5b66ce4e24375bb9aa4ea5d293259bec04f70b5eef82eef773bfdeedaebed9fd62f77bddaf8ffbb5a80c95a1a92ab54978dadbc99ce1ca134a2dcbb4bc9da8cddc4ea5d359a65043e44cd0b3e67375dfa456a69e2bee56825254c86992908ee0ee21b8080416ee8ea63b00ff847e8aaa261573f665ba67bbace164b55276b3ed752d3ddd506959fbb732c3d9f66a5a296d6a79fbb30a9a42dd6cb8df516b11173f4003830193c1966031b8fbecc94984891355c5955156889840244a919b2d3d72b3a551eac6b5b09dd4f6b96f4c6eb6f408eca15eca69356de9befd5946ad296a53cd1307537ff0b0b2ff44cf2f1f5d7f3db7faaaf9301bce665a296d28d43e61ff0ffb975a4d59792b655fdbe75946c9ccd58442f759e5cb5f52e2e4c8efa8551572b183a70e7ce8604807587820820735c40ea010c1450f8038d1e4c11577df2b6adb4e6aa50c4da2ce9e9e989c55d02150a709759ab3b4449d4e26bb269392ed27334999964be93693925421e97e7ac22905bd6a4aad37db6ea264c84bd54ef45593a905dbcce745606202400a002822006a7072b65774c9acdc47aaec254f66e53e1265cf5021e318f4acb2cf27c7dc13fa545e3d713c5c1c87f8cccca6a69feddf51ebae39954d4c5b665249b7aae25eaa562b716769fbd94ef75ad67e3bfd59cafea756e266261573769a7fcef696ad1b6a8673dae1e208be4ef0c241c9c55712b57ca8d39c9dfbf6e4afa9e1663b4aa6e27ecf5059ccc5f7d2343399cab4bc35fd4f99964b5f96b31b6e56ee28f19b7cdb50d98a43755c7c21ee0ee4e2eff80a527e07c054dfe77dcab4bca95b86a6b7df4e5fab99557e46c5dcb29d6e2a65d4b6a14f38d0c2dd83b8c84111ee3f4a849cf0b7283a032880c8c1151f15a4d44adc2a2b579c6c5bd9e9a682dad0f4e98770a044e4e0480e2fdc7d05293fdba9896b61a7ef03759aa759da76fa3e33f35590f233db51b272a7af96555eb5fd2c2dab9c55d0d959467d141477c7e1628e23dcdd878b39acb8fb0cc9862a55752bd95025d38f263e64bb04a9743d89ccb62d359f4e5436dbb88d6b6107c05499d6ad3e3da14cab957d9a3753b6532b3393e9864353a8d9694e614af7ecdcea8f28b53c322b771493ac05db7ae2501913946abbddcaa424212b44565366d66e3624ea5e57526a35d7fd644709a99554d0f47623f7ec4465fb09d4694e91954ab3d324614d51277256ee281235b29e5bdde9d2899aabcc4c57753b419f4e24b36dde703219939da2426c665913322b771ab59669b974bb954c546eb7922945d7b256436549494154a2d4328a69afe5cc9c9da54cdd292a633a7ff4ec14b7962794f9e47d56dc4d3587c0d672557fcc900c914a371554a69a33759be9bad31f3fcc5a59826c97f0638684f421db25a8527b0ad37a6edb0965aa6a9994749a6594ac4ccb1bd38aceca2935f426db3354c88f1f47381fb25d82fb75bbc4acc6647692eabaa1d2128a949a6ef3c95cd125fbc9de50e5fa04ca5472a2a69aee126c7b453213b2d7134919f5e59fa66dafe6ef1ad469aa4fbabb11176bf0f80f7ace441a6a5690e2a38294ffa9d57615b57c1fa8d35cd5d47cfa2714c9ff48d56ab8a7dfebaedd6ca86c66ce5eddb37f423f4ab6964aee0e00176918e1ee515ca47182bbafe7366527295482bad572d7b6930d75964e663fabbaa1a070eaaf5150a6edf74d6a2d3fdd4e36dcf93b6af559418a0a527e47ad361c545a46adbf5774c9ff7c95bd84c61579c4b8fb932a7bc9cfbe49adafaee7a6428409cf007e5690b2a235d567769a535490f2a3ee28b5aca9bfd75266d66eb8d96cafa68adef66c3d3795fdaa1905e57f56b4a67e8fcc7c3265fba6f2989de614d8ec2cbf89e9444d55dd6ad3beddcaa86f9a9de694a63f371513ea09fdd95e53f4b6d3dfb2733f3da17f96af9abfd31d0545e4d9eeaec4451e9e194cb8af68edc9b6995036ae85f2c664769a2430dd6e655212925051d150aa2625edd3ac9d2893cd74a26e93acb297ac2065dd2a930a52fe67b6cddaed5656d94bdcbdc8c51930ff996d1b4edde9072eca70e3fe33db2aaebcfdb9b7d3ab65d4af5b7da9d54cd1a81557fe7aee34c5099151e5fe92da24c8cc9a136ee95128428488d2db6c4c4cebaed5ca9bbb73e0a28c0378105310d35009414c414c4225c85453c9de45dcaf3cbabe3adb50671925bba1bf71a7b99ea8ecd1f567db4cd7c7a128fcfac1a96e74a69a51eb47c9cca82aef0355d69e1eca6cabb8c7a12830b100babb0ee2066ba6b0bb677797119391434d7fb6139aae6ad04fd0cf108fd3aca5db06d463e848b6919c664848434632d916e26143653f4eb8a8d584924a57d584daa947b93b141777bc701ffa09fa11a24244898913284f9aacdb30d6ddc6b170dc6d0ddced9bdc6773392db955ce3d97f39b739cf319725e430dee2b07dd7dca9d869c83b99c965c0d39f71c0d9e7bc1dddd1d7d3a91ec599942dda2ac6a99c45ccd134900cc5a799a458848d56e3712ea34d3f5495212d34dad952bbaaeb2f26643852425c9f60c9559296d3f867ae0ac94b61f276aae3726564a9bcc544f335dadec1f3ed2bda4aa654dc694eedb14195a7362da6ae994ee253529c912e1ee525cd459b3ca769aa2b25fd1f3775abe5ae5d37f327fb657d9be59d9af9aff3b0aca87d0c494a24c4d1fb59a557eb6a354f3349f5e494d7fd4d5b49935db5e5529777b01bb464199db04a721db66ae27ce89548aaee5ec2c95d4ca74df98d44a5b8a2e51d5b226244ab69637d51ca24a954bea46015d72adef9d1691a9a62d29493df714744d4a52939254dc5aae4fb6ec2c6ba5d29a069809a8c4ab18cc7ad4298466060046020080006316002028140c08c52259122379a657f914800973944456442e9d0727498ec2288ea2204619638831000044804186c6660c00b93a10308f49df3eb4940c9e051c0269c1d3ac5028b05439e1b7f74644be947c3be7704356c48fc0437cc16c56bfe2d9402818b33e7e7380244ff04f6a9d2ea66265595f893f9265e08ba412a67414f4ff1d565ca30cb59e77cb012fce3034ca81d3fbbe42d89f19994ce2c050c91749b679af70b63dade4a3282d65ba9c57cc7294cf8223e6aa172848db75b6eeedaf40f0938c4ad48ece8ccf614cc66930a5948ae006c86ddd4ede203dc590b3dbd54df695f30335b6b523f2e84371440db3cfc7f71b6ba426db43522baad9fb0edc67d2023e50495aae374fc8bd051e460c6f7c32ee185859802ad66fe707553b3cce090fdb6e0a4cffcd42eaa0dfae5dd8eb8f029c3e000c0749467e750b4e069f84403a39efe9a8a6c2eb0524427424e77d6c089a75ec5e7bec64cc39897dec1264647db8f99d96fe296622ad0b50ba37829c8f234a92e4cdcedb39396c760e671a617c405c0d5a7c7ad02c28cfd9f57e98cf74c2ee01e60869926c9375b1fe087facd9e884aab5c91c63d9a8837262b641b9675af2c9e516085db6661bd7ebb037441aeecfdb3e9b8d2e05f2d4b2d74fdd9dad79b9edeaa1c62b4d8cf93bfceffa1fa93f8248cf6c203da686a9d0762cc5df6243719fc7d20803a5b88b9281e7ed031c00dd600bda5c1bb0bd19ad8564f437715a65689cfb14e5c3d9e5b5f4bdb7f4f3c0f917dbe98987aba3f570ffa19cb902fd0f132828aa81107b8ed67aa3a5e119f58aa1713644cc0f72b9720a2ffb51b2d02e2e5f8d080473badd9f6e848805d2055e216b8de30693a5755330447fe904482951a5097e53a745ddfd768afe270ec76bfc1da9ea207b894da0009bd6389fafe5ff01021114d9219d0bd238f4ddaafb48008360062573f885dde2b17be77866075252e4d23695accadaf6514303096e667f42e6e7a97f721285524ad6108c8bcade2c1bddd979c62046c84d6e5f10715450d50ae62cc3501fd9d7d42368ea1e4f0f159f27da6a96bc2374431b6fba55abbdcd0e57d855980958cb32aebeb2313dd727a46e1de4803a0288678d01dce15c6d5e84b840eb3e62fde2dd36c07659a0665687c5960b80cbc3e9c03b0fc9ec8c6aad0caf3e973dcff148e4877b479ff142e44dd26925886f160eaff17b7c595152419d9d4c7adbdbb500e4abd0b759e92873fab22e1ba56e4d422d1fe66f42b5e28bec4d500e602bb20ce7ba957d602db7ef84ad35190f07028abacb04e29909502683259f0e0a9fa3696e37c4ced95247f043284888d5dda9073fa4b6106d9fc16bcf1fa5657b295b632259202076a9aadb7ee439c611a5084e1299f1939e88334cfd43a0ea7b5e5e1190bf679031abac23244dfb359a2dfe7227d19c9fc11cb24b46a6800fdb95b4a868ebcb0eb3e7654e5d261c9658c0877abae38b36d232daa432883d4b66356b29f1653070e78160324b8ef0036336ec26e767a9a58e68716bfd63a7235ab2c715dc111f5268dfb71abc73be1dac15effd6db3273071a186f9052431f85fc08c25a8a14d71ae56571b74a433cb7cbf860f9b6cb9259c6c21af9d7513acacf6de50fefeb4f6d8cabc5802a6bf54604d89a75b849990ece8aad6e6e687a2d70d95ab49584564c1fa62706352fdce23a0ec7eafde53499ebb743343098cd6939589fdd24715774e2dcfa520154cdc005ec4721198f9636e703d3d0dfabf3fcfc0ac589084028f4e5308229c7f83a18ab3a5cc30278d246c6eb57d732cf0c1298e602e8120480ea519533230c3dd8b3f9af58219fa03f091fe4b247338b8f6e610085b17367adfe9c3478a0a847cd432654760efe8b84104090e181da9a0f9403a8906668d7810b069caa0b528523deb0992fd48de1a76381820ca299533587a3b5e278d334c39fc8ead3df026d5d76a6325dcb8857db47cee7e561ba417bd1fa31a6a53e97afe219bbe8ead5f39ffc323dd182aeec6c297bacb98889a659d8773fb21c4be4f44e33fb4cef8c6d572bda5d2b44fdd3b04cfac77ffa1fee219a2f73f167f00c3ebfc7acda67e092d0dac9a95be7656af4e5f7c42e5aa68cfbeacf3a18f89d83ffd507f7026d6f4138123992cc6584323c8b6b2cf951a5bc1596cbd71710c64610ece2cba337aa570cbb91921ac9389db13db84aefc8ce1a86efe07b55f09488e2f2e895c24b8d4bf98ec904ce1e246f53a0ce56f482dde149e24c86d50f8cc90da3b96270efe7eaae0f24be33a7f3cf844547e7b72dfb81fd113fddf7294b6cfc9771665cb1a992eee071c358d3a30e21ab671f538c9f3b6f218fe7b9e2bc84a44f5bf0e2ab8be9e3dcbc0538467d1aecf3d455623afa4c9ee7f78ec6f09365084db9f87245fa414d68da35d79319cdd30be6255ff5dda6f4361ba8b300356e3fabfe47c20e9053f9df586409b8aaec22ced5f22159377aef6599c83d48b1a3d4e132fa508fe26e02b3301b497ebd3f5fed10789e76f5fd4bfd7bacd00eb6ce976dc5b842319b74b4d704f7a2b55270acd7aa42f8eefb18dfca430a57337446cfe516f5b07b1cf9004269e4321781cab8bd84aa995959d8a1582fa66f64a6fce0c4accaf7485b46344fea3626abf5003fd008bde0b36fc6151a3faac22b5ff5ab4b8ee3b15f47cc5f1a746d983b720ececae824caade5a75f693b32856bb3f4207e541f385bf88c332d3df27add927b0a696be1348ec73df7c56abcaa09112c3cb0310dbb070c0b135f7694dfda06b125e7eee331ee73cabdb1ee8d0479c843cb9b7c5a8315eb5199e3b162a1b36c2a07300fdc92e23fe39e8bff7a7301bc02c9ac3a3f7828bb2994e90fff4697a6781e97159ab355fc1a81da489d29d21fe3fabcd886862dac91d9b143ba1bd75312a75b6a8db1ba1aca30cff7fe6733ffabb92d8b322b96e2980964304f87aebd6175c6cda0a4d4f2849a3c3efdcf0769bcf4fed3c9ecc926f5fa77724bf68327fe868dfd3294d495c82c11ed6c5b6d96e8a73ca86f3c6c77c2c1e92bee1f831870efe8de2b974476471708722ad63e8ffcb72a9c8d8382ebf2f248b4613d48f819f7e34fb9b317208574b482de22d687e752b3282eb6cea20825953099aba00a2b1608834b1eb7e39fabe7a80447b097e15dab25c017911c25b97dc8a11a55b8469da4e59c93f1a0482aae80bc4d31fa23dedb0ba60390230898c4125fa970d0c7d3eadd61ce1c0736c1e4d181a1fa520cd2d00fd6f28361f0583d19d0874e9a4720c9f5f5a5399442d38895864ae80b4a94d40a92e498242f2ad0fa2145e0330849c980d0d9bff16f4fd57bb5191bd7fa04b08d37b9b7b14b396c5e1416afc1234fb715d60d0811ec17445e02ea287daf534ad96e5481410c34d97b3c7e753ca706a3e6434ce35b39df199c19b54aa60e69ad540b9ced90d938adeef10f5d3bb66a46621d3a5d106895c35085157a22132356650365bcdd6755738e022dfe120172edd2f80e00143dc62f01396d641ee030e319d35076094bd4ac4c908b35f5fe72c8bac171e0d126d81d84be76a6ae3b400959766beabfb42d492cf71463c9dd1cd81ea71ebb40a3ade43b7226d3458e1d94cd8c4fb1b6d029e6904105876161211113b80c860b74478b61120ca63bacf83e3d23c1e8f8c1229151804904af09e1251ecc3f068be27c6e85e1f0647f3793c524a445168005022c3fb9504910fc7a3f81e19e3c12831f9d83c212e606200791968c1d53c124da42a115c288f844a2212620714586cb600cf1801457b4cf3f9703c8aefe5915022950283801219ce57200a3e383ecdf3c438dde7c171691e8f474689940a0c22607a008a40e4e5611272304999d0c0953c124aa452909c100f895a0224620714b36c3611cf3200457a4ce3f970389ad7e321d102aa028380d232cea7248a3c382ecde3c1181f4689d1c7c60375001781c8cb8c16a6e29169025591e4807864541211113b80c860b74478b61120ca63bacf83e3d23c1e8f8c1229151844c0f4001481c8cbc324e4609232a1812b79249448a52039211e12b50448c40e2866d96c229e65008af48807a3c4e463f384b8808901e465a00557f3483491aa4470a13c122a8970242b4d8e1e869f8517e2022e369a0c7022331a0152178dc5c5e504802ea04486f31588820f8e4ff33c3106531178af9240f0e17034af07e368be078ea3f1fd3c124da42a64002829e3784a22c187c5d1789e8ca17b3e383ecdf3f1c83481aaa04100898ce72909051f0c4fe17b308eeef7617834dfc72153450a050609317c00452072720849198ca4cc409b696353da8984bbcfcf1ee86509a1f5364c19890e9b6b085f986aa149d65f5b5d29682fa1f2b1a9ec2b789a3d2f8587426e339eaf8848a94ab4ec05804c39dceaeeca3e82c239ff6ae5e8eb2d3b59d7490e41a2f4274ac1feb9913949955e1539b8701f840a5e3620f3f11d6a318ae3fdbaab1859e6fdc60d5554e9c9c2f4a7fd27de9fb922cc722a1e1d85a857c8d7e23c299959e04cd28683fe2d73fe7c125810457c3995bbacea4b131b2bb901ce76d568fccb8a462ffba3d085f10164c77c6b1f6ae9960bcb784f9bc68ae464d280cdce158572947576bbecab36e53d14916edc87682efd728bbb15b454489be87bcb87f8bc72af8b5bd176837fab920913fc840595d257cae713e1620a492b3ab625152b9469b4431ae249a0f7a474d8a61c3189ad5134ee7075b9a4a3f71e18776d21f32000915f6c4cd243e942d034bd55cdcc8572a7328989662bd2b54a01ffc547631345475f8c3a40e2839697d8809b487dd19fec34864040cdbb9ce54ceefea4e09160a913092525877b00e02157d0078399db0825e80fe3f71c475755b02eea71209b7c264291957834aae6d3675769fe92bb1e2fe2a12b0517f97c28ca426043279751544353e07392d0e1bb6d2e66ca4567a6dbd84bed92e6b8bb922e2ab2c9f2e75e70ebdec017274719bc85cce8d57876eddc7494c0de9d387dc80aab78621b69898e28ab8421d3e2c1d576b43d849dd6e458a810453438e60dff1a1df6d20c3ecf7275eb681e04bc9265c8c691f582419584e461537a37b9be8944b712a42a044c0a4c9f315a67580d97ec350422e8886550b5d9856ba6f5e1e0ae633cb41ce61a172e6a8f4235ff2c66c6682903386d9f05707ad6f1074b3469d6931250dc87cbc04b0f31a0ba5a053985a4fe321e9f24140a0a5a491a6d386ae31f8ff0e82a09c9a974852dc3262ef5417d86540f5c7393b0d28d87a9a9a3f98a00054f5a9e74999e75c02b37cac34375cfff1f4f7a75961a4c8ff5f7fd7cee7d122cdc46ec741bfdfb6c22835620121f086c8d76e18bab5f64e92773129cc0dc6b1bf97c8662a98c203851c64d520222dbde844a1a419069e42942a4040dc078d7c9019cfa6469c58800b7ae93fd2a7b69e3678814e2daa0bc470fe8afdc0c67cdf754462e0890b25602c160286071a212cb92e3150a8f6e76b42243fa2bd4407e4aa23d14e99edafe363bd443ef3d6088943aca1de6bc992eb9e1342a19bb31ad2b6ef257bc61744a1762b42e60b38492847d8534ec41ecec9cb955422932b216ff064c094584436176df17b9cf23241ed57ace97500a841f2157a1a0b5c67197b52b94810dae4ea9befb2231b3302ce6000409096fe8b112ad07cb3873269be7ebd94961cee29fc7cbd3c2287232943cf853d7ab9aa8bb5fc203d49584e2910d5e8bbcfb35b453e4f5c808a3f8b7d08e83d0f5dc7114aedef1f70744dabade1f4b5b0e6f7aca9bd8f476fdfd88661a89373b8b1b0e46d7d878beb2dc55ad75d1ac1012d7237e77c373afdcb73e520878864a31dba5c8070d244880694003e47af15acee632f0b88ac7d773b3884318df918568a14b012e62a4d8cc758701a2af17f03fd5835424e8076544ef892201335ce191f06440f99facfef5d0c079cadee46943f71c98683e87549dbe214044652a84ea501c153de9a9ff25a13b278cf015018d33f4ee6574915522e3a0bd8e4e4e1dcc77cbd7f231ec4fe517a0c0f9f781a503e57dfa1e9e5b5bb040702222a320168dc2c9027893020971156a92fe590998633ea7e74c3815d7df8926f869ee0654d4fb483a4b3f26908f531e496df27c2608d70ae9a6a3375c2526d839c6c3042e29c4aae30b6844d97cae3f43700131e98c623c94cca732b0fec3b58e8ec9ed21587a66b4af545784eae84aac49c2150607cfed1eaa243a1e2ff74dff7ba5ec9e64918844f7a1788fdd840c08578f929b243f818dd34b91a61dfc5c97f9711944136fbba3e8bcc615dc8712b0abe9ee1c7a341e7bdc4efb48b6f5bd6705ec73ba8e5724810de01899f1f80af8049b902a10d09730f6d8284bec0930a9641e03d649876fad16bbcf94450455a98d97be0f21154f18978c0bd4724290d7394ba40e9356390b47452ea53ea15e534a3d2c65d20f3dad14cd159eae094187c1da3f9b4ec52810f3ac1fcbfc4dc1fc1513fbd6a28025b1a9c316eb614f397116718ff996542691a7e2c42f8a215bc228473653a0089af04da8431d42eea11e1b789b0d74c572d34bba8948653b54194da5b749e545d97f00c462537b96aafb7a4f257c3338a08a4228e420fc26decd089d15348cb3292a91f683675f33510916fb2be3d8874a6c14a6e167808788b54df3d0974a2e95a69870b68970b65a7615b4eb89f02a331025852d18788db5ca2561f3d58f2a12fac815e76b9468176c598796407bcf61a5514a930165b6543fc4ff58ac22d8bc9ead17d1df21c8539a394cfc36cbb9a1d4bbd5006ee9e30533658c0255fc4eb4471d1ca50e3abd7559359f17626676665c04575e7129b5e051160143a0d8c8479705c8730aeb4725a06909e03d868440e39b752150f09ba67c8423a5888c50d26c5c229af2fc38fe030a38815f2602601188e542c6b3d19e7442895c4507951d384da6da6e874792768a51ea8ad01b671f61c71637c154d3a3e21482762b8468160e1af57a7e57391c48e8966fe17d8a1ec84947f2a7424bc6ec867f2c6984044548dfd4b79f01a26d87c74d4ce1bf877e635024e29c69b0b80a4121bc7eb1344f1a57f34436c0bb9d43a102a1b8c13467f16f5b7ff05791650bee568dffffd1bc60ba60ace3c8e23e72dbd019fadef46aff63a904aab496978664bac4d7e9d3545abbce86d84f2932a04da6c85c0fe70ab232925c8362860f4292729475fbc7fe9e516e88a37f1d29d7843fc3272b190f2e75bc71be60da068a9d6dc06080a5a930cdd29f48f63be1ae89316f92891ac246ff919299209ae8887e312fb50f0e7a20faffe6f5e317ca8e45daa9904b5a4d050e64746db4bed2028b4ca68ce53ca5ad0183ccae3b43cc2631f4cf3ebf2be8003a728004c7e53dc742af4db6e99efd7e0ec811e1ed6f0bb650b0693db9a17ff6fb3900ece89a1c0e05c2e813597d0e2ff881f826a8a0b006ed245bc7cff23de0e37440b5237a9b741fa6d3121bb127018b8fb1cd2cc22cd791bf6898ca9d1852510334e4e921602c501c7452bad1fe26a5919a5e8657ed4edbac2d5f6fc6925775dafa50669d79c222f0ce433050d88d5f4b113a49438cb31783ec3944ab6eb356057d022e6dafc3ba047c744f83db989170402dd73a989f9b7b5a60aedc73cb3567eeb9e4cce973ae50da5de2d21638d5b219d26c474c356c439d07f5a4f94c86599e05c15c5db1f5ba07aa9fc07567fe7e6e5d37388161f99afb404e7c58b89eac4463fc1185f21ce8b00e5ed80b36d2fa0403458cec5d7aea7f9a043972cc995b8e39736c372f25606112128e165cbbb0c2ccc9f6ff4f6c87d9a28cb2bdbf0cfea5d42cc74176684ba35c068e4bc1251770677be1d002e8bc3f7aae2566408d32e7e28d3fee2ab1439d8621b02524f44485b529f3507b3d3c9ad50c14f06a2fcf85482caf60a736831ec2db16aea7a2bbe3e064520aa3dba5069d62ac7e616a3efac8b54f6d14888598eaaad092dfa632b7d485023f5c74eb6195dac286677282f7a278cbb035f949483f9d91ca1e139dc5640c8c3ec2bb0aa0b165577b137dd1dc16f0d3c814f856c7e1fe3676acec32d749452000c42d455f6ac36971ad63ee3543feb2a257d7bb4b6a94a0081c7a5ac03533fc374dbffa63c2ca262842ceccd138074e18221b1afa593d4ed9e9fa23f7a6901e90aff8387abd2d640641ac69a0f32e4d4ca9e7d4cf8aaa918cdbc1661e9f395c0527bc7e521c7c50619b182d5eb3bbf23294b60ae0918c03aa26de364631ddab12a99e6ad3e5ee0d0a025c2aa1e155a698f7801f585e4239acccd1ab8bd18826e6d896e716fdd70c4ffbaf41a158fe6c796423b0affedbff5043618bb8c6d7e66d5bfc51e1e4138fc18c734d30f2f970b85df61db5be6b9b432a64f0d9b4403d711e7cc6d1d8fc494b71c3d718a1b62d0ddb92ade8d17dd4781cc1e573f81d569c88943ad2d3e249d0ed6709de16c7f7bbf2cdd68cbd9a681878d04e07f7604e1b27500d4b36ccce60c9a3f3e1e2d632d10600306a9598d4c9d6472a8f5b626f06852e5afe0950f041228b7f10f4d172938ae14706b7d7205562761a4dbcb1dc04974a8226d4e93298ba55a16d06d8bffacb64829b9722a870e00b98a59527e2c4d983dc1bb02170f61aeab9b3387bc61f53245b9f68c0113e07d620b6a28a44969e882cddf12a72e0ea8403100c7a706a6573d7e297937bcdb44ed69dda44cbb598e045e251dbffed929b0116d0ebb56f2271dc4b83fd9522b8656d2faf01679c9d9832b0d10d98719dc8ca742bbb56ba34a7d58fe03fa0f5a74e7e9b034e866fc81bdec3bb3372461c18fbb2810e7f733e1cf8afdeee89eaaaeb87b0643fea46ec86ea1bd44a1127dfedf8647d4acf9080520cbf6618363475afd2b17e5eb8e02e44feb9413c8df575ac9d0b8be54b8f6e2ab0b120f9145900a2ceb0970d23a8d546a35c8e0d4f8c44775d2d7fa238e07a4eb1a1c7b5344ceeb9fd5d7aa09b378042bbc5cbda2d17ab6552410b1075e1a279d1b4a1a36970cbf98226c9a0399747574f7e3d69c4b9d30976d73eb797b2c7b426afe9fcaad5b2ca2d2c0f5f3dab558bac1613244b8dd00956228adfaf492cdcdde0e3acf81c2e70330f7a76da10b8dd145b0e6fa2d924f984134061dae9ddaf3ab0e7fe39935018c296cac78aeeca07d3d9f09f6d5ba6d5810860148531b97929ea69188521e5866354c62be878e571e7aa81d5b447e49527bbb06d292f5b9b8dfca77303ccec0786bce5639e0ff1c6687f60bc01a5d3433686df04b0ec8e969bfb78ceedb6d60be3802b7fda8ce6595a95c4f62d0bf35a500d0b01f1e34d0e09d839231f5ad9a02e9e365a56f2c42c6c491e9b182b01ceac363abee4a1645ff555f3761337179993a7017416fd3c8737395d1c98f4509e1ace89e4fa05fce564e25c184c62531e33d5b6e2388bbfcb6bfa5d5da6162e7f95a7d5bfefd8528476da5b5ebc78420db6fa788c78c45941fdd802b36e38b014d437a232b31f6840c52c00eda760b6da75cc90a841fb3e1e47c268e0688b86417a4e0144f8d6bd557421b4d094a2dcadb418dfb76f16d7828f996ef081fde19e3429cdfa88d704b8d34173efcd294a5379e8ba4ab8f3f1f23f74f07c019eab5b98ffad45ccc1cb82de5a15501d6ff9992daf72a89aadf587f036dec88b0d4df57cf6f94546196ebd0e48398003b439e17f83d06fe844c68197f7ba24050087d792e945d47a06995dab4fc8546956915aa1c6629ac83550db2b6215c063a14675ff219df0e95502dc26a7e8e43e12b3b2cdeafdba7c7d20173cf146aad41a3f18b26a026592bccee1a863862249b91e301b1d980191e40165d77b324aeebd271ad2ef992c988128f7f340fb00325399a412af87da620a080d7488206610150728cd292ffd9013df0caed1a9978a42606d9d24860910ede716044b845972aeb50fb6417a4c95f51107b10612276cd1d36331447fc28af51df1d19cc57fdff016531c4c133f7d738de7c3f01ba5788c7e3617f8f6b25f5d919bea75d8a926e65a2eb01719b5bd92edb792504d2b78638691f44cc301a300294490cafbf82cdc0f35d54b426d1eedc5a2c92fd4a44b90d9df014441bfc9fb2b491ae521f862d8214dbeea44a953b871e55bd82d3e13972c62b4d544e2fb59b5ba8576d1df659736c8b0456929065acd4eb8d64537b18a6b738cf325fbe4a1a303fb20147306178a313cc58bf8e68c6fb4d0fd854cfae8e54adbd37d74dcf119baddcac9f0224a095f3661c5d22b45138279ba0d272e28af81fefd9e0c3f5bbb1f493470805d4d7d14d257824605836dc3a80a3d14c152e9eefee0ea3a64e64a6b8daa8059c18fd9254ab907fba1791d439355dfac9efe1129a680b81f6f681805ccff7c83b206a3ecbaca30982b380f2afb295f4b91d4d51572904bf2351f8253e68c0444cfc3e443f8d8bb0580c9eee792a973462750c6d6dde000a6438bf257818e8d5b5afa60019feeaee2601d39295df6aedd2f4c9096508f50f215e848dd4c4bf2b0cf16eac0c15f0d04009f9c15e9b03abeffcd505e7c1107856e221fd83e933820017e984f7ffe9eb52aeda30cb3c5f129dd2cd04e743762ebf33bf0633fd051f2729ea35c2ac412cd19a7e918a47e7ea8246e62ded3b9a8aae762bfeae1c7ea1167d44e49eef547b1c85cf538e0ccece7c6706f979b27c64e1e0758e892818833d344585a03c3e8b8594897a6a3e9aaed6f196593ba2364d8be5bd0741e6ddd3c094cc2e0637b412524374419f8b51ab49b4b7fc9156d0e6409f159cca4e4cff3b980c79ffb63a852cbaf1819347ac5afc8414b5fd5cc43582fd642ac16961630306ec4440b19b440fc08928e123e4841295e1132d806ecb1c45f74d4b2ab75389b990b8f6306d53c378c596da5f389f8884fd4c09accc814163d3fe6d5f018b836e4dec683b58fbe1035731e080b09f995248f95cbe6dc0ddced1253f9cdf08878ac5681c3e1d2357a27c7cb7def3ee2e5a231d7ccd31e0c8aebcd1ba3b4b368800ed8d7a6d2aee19af9dd193860c241b7edc13f60e14f1bd9d1b5fdc1f72e76c9db5df10a6c6e6277a169c8a5b339eafa5dc7035e898e02f1a9f9dea212700d2e34cb005b292dcead4522576a5a7f394f85b3dc2cc0756000465db1839b520897831bcfacb6657942ab49824806707c5ab26f5a6e325a6a9b7a8722bc7b33c542eda04df16265851f7661b26b2540fc0467ac19f43aeba806a0cc535c62d82909591a3b14d0d74546c51fd2bbee169352fb3eb2444c79cb23f000ab8b14d698b7a32a19defd97199ed732c72cfe1eb4e62257d2fcbbe5cd0391f7bb884642ba55684fe398fef4394d67eddf7ca0b06177b9810cb6bafdf429c4bf10887eee8296bbb9b5e1cdd32c3dfc5a5d7460f70ebc070d1a9f0178edc7e7b27d9b834ef876d14aef25520a8fb07ec7a83f0c2bceb09e43782a4375ece6cf8539177ab0903003f5ebf61c0e4c882a971bd65619ba9a6ef58e9280ee01249fb29bc04ff29b2ac56abe72542c5fe231db2fb55d130fc418584b64492d0095e367f4c0f72acc56340ea85494e6bd13cd3b7358165d0575432a3a4c53e1585954d7a8591c3a4de1e0e91a24771e20d04cd24af03484b6a6c10c89882d10e8fcf5c80f5b493176ba00cc915ae067fb57e90534c52bee67b9bf1565f3cd55e85cacad0c7ec43dab4dda2007a66fa5571687f0a2c521d168b0ec6841f95d528e901edca89089c4878700f4b5cf03d71cb6407828e89d667a82587b797c028466a97b35310c4962193c6895a77e37923c5f9b0f9e596d9cc21fd05307cfe4c6074683064763974aec683322bde27d9941e55eec8fd459edd71d5f4d6fb7915c28859a0031f697d8aaaf56e0e3e906c98ef64b16cda0c09237ab4a8b9a774b7998993d9be037330b740c035e35def4b41c4b7d98a75891262b2e9674daeddea685fafa7d79afcd70b89292b1c7aa8b76dd2b528768d7c971d7761e6eb95a97e6961b0e8d41394b382dbb7240df0bba6c5f857c5e75b2415c18886d2fa0b5a4688af262e1e3cb5b17a75958e5ef4143554ebc9137a7362b4b76e2c426aa7c8e0114835a90d983b98b52d97b6535dfcbd4db2738d724028d5c8cefb8bdd9782526a79898f2e2268c0447457591de00af2d64afbf236a6020fafbbd387fa08b039def54f836f5f58f3199944e007d281a867803650d195a98ada56498cf2a101acecffb59cc25b3cda6bbe8537763c4c54a39c5c05a1dafd19aa95e6fb29209d94c59fdf59ea448d0c761688a84fb39e105d03b0456826ddcb029f7a64f7709970f52909772fb79005d31526ce9d92ae714218cf0eb71eb7ecbd99e421da043d3c386c8db0d6670c92f404e0fbba11fdbb30cd0a08c098846823b85f2ec8ce0a67e29f5c21c6d4f4c6b714a656e41bae9030df810a2a0c5f8519201fce26abc873b7eb5e526f7985bad8aa3d1d3a267a445c7a883189622107311081588ed699bf89f02f94831cd9dfa18cbb38daa65d84129919a4f3163094d1853d21c84c0428b804346c94760e48336812bce10063213368069cce9c94e8ae59a1fb2bb5b65b26b60f0cd6405e97c2469acb8f05cd13e1ea6c9a5c1ac686021cf00734f40409dfab21b068d244aff42e89ca0b4b960ef8502fa7dc0c278612b8778c8b540b10415c88abf43f74a465ce0959c04e4dcb19bf3b7e564d9ef9ae339fc63923454804b9e125a4c9b0880a52551eb7d1317322839203abcb7a268d96833e95851fab4215fdfab931acaef0a323e40e05c13c3dfc21c1b1b336462aa12022a566a856b35a6d12993f78cf98a0afa8bce0e513b6729919cf20753b17e47fc63d6727bca98aa024daf9a2731277d7bc761e4dd3babc0430d78fa6c72e4dcee833e6a3202858769f5daabcea0d90697ed80da0ee7f1272357b5d96383624395f942ed1210dd3963b8e291680c1b451149b14adba5a8be2ced6afdaca026a37e06b4517a40df991fb27dc32f3462b4bbe74477be3fd2fdb9b35619e9e244a6443a5a83a721dd3daa354817ad240648476b48eca3bbba12f4e8027ced059c8e3e2eb79ddb8a25f454523fe3f90dd9d16663e757c7f80d9c1f62e99083dd4a876ae00e7b298f0767ae1bdeb2fb41cd4eb14ddc7af6238c34167bcb00e791358aebbf44f3c244d357c1c8bf9a942ad24020c343a16f520a604b98b8c61f780353c85881a3a80a6ff053ef6d7e6ff81b5bc4a53d8adf204e3026e26452e528a4c847b1703e0ae8c44da1efe6e2645f8b58bdd516aa4709352ac8fbd19e55e86d58735296ef28e43ac2895ff1fa224e59e0f7091da529f006a4168827fc33c8270dc42741ae1509ee16752c7f1a88b52125bb222664c19bb0882002fd31db4d367b0bcfd54dbeb86e92dc7e24118145a0918b4b223e8f1e11031cb5993852e12948909b94e649bc4126c8700bbb811db3dc0dcd9f65d6f1be2b6238e8bf76bb726e1594f8f1c8e8bb7b93eee5492db2a0289a624f3d0404a07ab2dd52465f8a044c4b99d7cc2d8c9d2807a669e1bb96027d35a6545ad952c6838ec595658998ac412f343a06f7b8af4719dd790091989396a2686f2e24858ab494152e20f3f3f2e5670fedaf34a69a42793adcdb68caedf1d18e8f5d33b10421ffe10b647b68517ab95bab5c2e850015c52db9c0d6cf7cac580a4a5f9ec34e46b776384aa54486f60096a27804243b4b907f134f7e814b562d1b6c3e8bd274e4200df1a2e452bd0528cde09c0d69be642e3d08bea47b13948e21668cf3718639535b4956c8ed23db5ab6064e7890c898ecd4715a775a40c009d810c0ea6eaa135256dca7123632e95c89327769d662ef098e5d468d3d25626ab631f554da4bdfc2cca9ab7b5cf5ef6f5030e7f29e9d2f7883f74532f3a0b723d23845ed450ebd8a0c6e33b8938fe471dccbf99f07fb661d7e8d3072cb6bfad7dec45f2f183408950325113ef36486a0b02db1d0030e616dd8237401b3782019854de12274f3696e4415f702df196fbab9017b3d4057b80575d2277dadc62e81f77ca163f04de807e2d661bbf424139f20791526faba19a12b0db8dc8c7e4605d9f683a06ec5312db33b54634815d0ddf24ccaebddcfe95fde785a2803a4286ede4c6c2554df01556af0428d245bdb8b5d4720d3fd009e31b1a8d45fe0d55829974cfe730eb59947977718542c3e4e88602344553254e8826253278f4076eb94c754748f36150af24d03cff01da8debae2946839a79363610f3e48bd1fea70c47ad31679a55286178272469980d6987065aa481cd7a91ae175e6680bcd18dbdaf17d654346041045c9515b0da9a118430ef7be22a1370d3b20a532f2e869677636860a2c8370c5326cae3fb7db4345710de9157a5df64a0923cd1e2dc3b17046b2a602b5cd46932dc22bc3c95949dc762cd1afbef106b467c089f0caa0d95bc39ba58c7df01e0b9b48d6dcdeca400b6787ea32385bfa84e180b6d570f0f22a465a97659d381810b332d05a9cb561f1a29b140308ae853e2dcc4c5ced6c2aed47f44206ddbfab0c4aa38bb03ce1729f11bbfe192e9d314f7b69b955e7a4bc91a289b8f7515b74d3930b5688ca5cb3fb0b15e98839b23025876cbc4e4520f6a9ca50d4cf9be3a538df8d330f0736faa9a78ab5d0ca90fb366c84199b6c64270e9be15c4e2c6919ad2f2d92c5906d210a0a0b4b4039bc02c8b8702e73e447d2f22d403f2a4fd878b47c19c5971716d79707a78ad3ae3badbd4416dd410254af6022f400a33690c7a9a0ccfd0017fcfa744991586b04e9a1b5dccef18d7074bb9405f8be9bc1c3226479b892057eda7932a38822af2eb0025f7683fc0a882c471958e0c79d9d8518f12a39980e58bffcba50006b974626cfbfbec3a01596e26fba754b3a39daec18f4cf965fb8ff87e1385829f2f002d0cd6caafa1df1111e68ab15e00a123e49cedd498e020afa857dd7126060b400d1052bbaf02a0f80e85f046bf467d356b80ff9c4741376ebbd62e58716362e75034604cb3bff0a5f7882aec3453fff49a412172755897af29140a13b147ac902a475b88ed3621e676bb7994bc397700e2e7dffa998b8f05d4da3961e8edb140d39dc805cf1d0965e68c573f0f5b909a40bf8a964f2f27f50081d16d2c677bc5f95bd1b43aa896d8973dd24be3d14f31e808b79777c276650deee6c5777ea680cf2fe4909d6bce7111ba845dda920d9ceef48703ea34737a213132493cb7185d96677c5b3993e6ecc5a2fa0de5d4638f7cbeaaaf036b3561c250583ef3c5d90da02f4be1bdcd8fd50ee252b2a31a17ae6e052602f3e8b5647e18ffead46a98d6b4c3a7e0c6919a99662b7995a562887ef06175ae487c9592daf65f05bbb1c328127cd55f7a29069892761f2c426497cb75e5e3897fd4950421690d3efe9d607f582b989537c23bd500c2218888ed6e46f112b0cefffdd44784b96cc9da9f499db355e8d170df50e51df7bd32074c5450cfe4fb320802139703d1d0d2ce1e831f2bc2c429245c2d7a375b0c1bd4ad60c47be99590dab9d9aca001c7de80e5f913c60ddae758b25012bb6900ea1d685549cf38d7f696b5cf17fce9175e0067ce4690dbc9c110235729ad81eaf93c6fcd91797535f70121cfa5c8ea8ce71c2e964d95ac85765d1f909532a1496525be48ca38aad79632972c196d5fa2b7fcfaa93d048e5b0bd3bbef08e9ca839ae4bedc7465b011799ed34bdcc592a593e844f7396b7addd1d415d06459a5165fe33ab3eb78a0607f3b0fb28234ab26b1b09518fe59ae56a04579beea109049992c4aac0d8c1e697a74f7c1ec1a2cee5f396077fc6e385860c90563cf81f0f34fc9a998bb37de8549740de471b2b7ba4eeda80aea112c23a8a535ade0935fbd01d6428471a1be8ffe2c7af43c08d8e7c34daeddbb8172aa40d30e7370ec3471079956f075b8be959454cdfd50802f3388a5b54b9f4b887a7fe45f8f76dfce8954b665e1b2120b5e04205ce4ce4a43d8af38f69e243faf48af16c5601a61c9a4af6795a4cb0efc93fc36f4b61bb260b498172f31503661dca927eaf3fc815333ae70fff30a3858538a8cd2ab7dfbd28fe7818e56d39e13a4bf835dbf0c39009d454b10a1002697fbdffa107209694a7c74278fa534094065eb6768297b4d7a50424d2cad003150cee0c5b7d8ea4fea0a6192599a5ada0d531ea734edeafab9c2a23b67082f6933118316c0c4e81d1bfbc350a7cd196693d6ef1ce6d10c751ac1a7986ab94a25a3b5a3e411470b6e221313ea5b450659860e3b682e49c2bc798bb8e5a90bc15864882d7acc52d96f3e9fb33cec028c2cfb6650a9aae72e4fca641eb86be7fdf514db6bd2322a108a700ef3740f5e0e0e08c8ab3ae725367cf81522cb78597baf69dd316c2752b2e6655bfaa4c01addec637f2a88a8686920b68d022a04bda90d2c33ec66661a2b18a300e0927464e139289121b162a83134ac19120928ecce3095917203b101df27e135a0fe8da2b350832d11b4debb33cbb89c822b669d73367008bc4f623db449984e5627d85f2835f75c5a820c4d25257f9ba3be869fd6d654fa90916b2825829e9253e211a7d0531275e40a35328e40eed86b3dc1cb9c282852f57bfd0510477d28435d50ed77f0708d769af4aa8dcd4beb46ac9608f480b70bd08ae884ae060500ac99d3852afb9655310f1d794a350580f3cba2b527267fdee0a844670fe5ec589076059be2655a238a28354f943c41c215a81bdbe4df71aaa18eefd801711e35f34ea2454a36d9fdf7855d05306c17cff401559830f1576cf848435a97d1f32f9b34802c8348d8dfdd3d27724c23bf26d4000d4b0aa3bdde6915afadde66a2c1a9677926aa76268e3d90f9b8128f730ca08159116bb3f0849dcdb85b7d6d2201490a72c7b80052b7227f2d2f7ed656459be3d53b3dac3835a5ef7aadc17ba5e70b54efab5cb255cb341183d66d5c4ee45d610e4027a1caece91b14f0301d56b7da585487f4fc43688817b2e30c52a727bbc316216a198aa5492045d8676c0deec3733a2ac0023053f1eeeae4013342435b891eaf2d55aa7628685cc8271fa07907ecde16c7b4cb154010ff9ffd95d95abf5553c8cbf70ce938674cbf67c661953a73db61a05322437a63db0bdd2dcb712a835860c440de23c1b5b75f56af93d9c9c14512eda0f9c4da25c928b894cf32beb155add718806cabf8f1d68c0e1e7ce49201e2968ae0efedac82e77a4c7bf5a4e7a23037daa76d10fa9a2ef6c5409e2c8b16cbb3e2c1ce1c7ef65388cda555b1b778c5829dd50f19477646fca7779d978c3e5dcd30a97d90257efc60ac121a3d83b2f87e177899f220217497020a140e56741d37d402625c329dbeb997c906f82a47409b4b2fa534d8edff662b2cbb4180b8cee6c797265724090b01e7f381de529c638a5dbc2566783006f0ec80ef592e15e9ed9efa33bfd5bb0b4080faa753a6bafcde679c5611a2bca7fb20e43068560e72a6b0235f2981211892d4cf3ab8b6b45046b0e890d4a417b1bd8db6c505e599de58e604d8102a60708d3dcc913e0ade0c18f9079b2141af0d6d1593f7cb16c780217233c9cfc235c6b122bebadc96d27d7c7563d69200c23929f58c7cf521d2c7162f278fd150c28cd1a3a053c3020838f55c577b5dca56963d1d55b1b4f74d8fbb775d0a881ab92fe67ef021697d52b902e506a2f79ba2f42c260262e2abea193622bdcbd2f328f2751ee44633b24c8bcf83e6ad91b2dd3c710fe16745d56c55a0fddc8d4eac5dced01e11038324b38d02f323dd42a8980087422c29c2d0487cb92e0be9a43fd52d3d90fc7cd6a848ceaf5e1240d53b79303a9bbd557d039992580d4c100a8f4d103ebb8c48eb8c874b394dcfcbf03a1d0fdd080292cc761e5b987ff65fd382ed5e2b0e324ae35de63d2426d47304d5402c05d4e535f5b652061102057c565faebf194ba9d6e032e508fa80df0f3b76dc3df3510cac319f182b3e6eaaf8f227f091cb1e0f0fb9217d6ebf161853c336ea97995e16a62dbf2aeda9321ba81d356c81b04d4bc42384b52eccffc67aab65acf2161cec0e8b3bfd67a60b4bd58408191d5bf01f2cb786ff6eabcab6f0627e09ffa1b4ce566a37c2fa720b5eaff9659df489d155f5632a382daaa1e4f32d228ac243cdf2e9f78de5335cf2d76b7896be639c92a999945f856b309543bf4d65e28b79f61aa3abf5545b1ede367ef1bfe2f071612af01ffb862f2d1cb2236a39e429c671f26c3f356d25f85c690af76045f2b798aa2335e609b611dcb82524d6c67d68e5f4029e26abf7c07a6757287bbf18a2fe489f7dbc07185e15243f18f274542e6d9b06b2c1c00391d06065812915a8d3b30a309dda1b830befab6c2e9dda9aeae4de82256cfab8bb03eb64a10d087e3acaf79fcdad1b3fcb74a18159a1566282054c28f00e67f3e38320cf3645108cd94dccd3e8f02599bbdd00a2db163ec112fa1e5d83b6f98dea2088267af0498ea179984d3053bd9c0026533b4db4c7b574059dd3eb70ebc3c130b53aad6bb42917f6f1e6a1824d67e5543e35f8277589d1e8290c9d64a19d22b388535282eb972f9b343e04d5668fd963a927249f9ae1883d06d82a26908607f719da5a5e550ca0a523b17303da955ec2b1a35513f9cb4e886d0bcddc7f6e79ed37cef0d1a95204cd40341dbbf54c818409a8e6c06859134ac4f30ca4988283a015199c7c7c78a25d751a260b557030e544804bca37a5017122a2c0c69d060b6487356b8651d047bb9df9db64f228404d2d9644bd0aed5a336d5739e9075385d3edd9468de9f1ef61607169372af48c17984351cc81c4ef1b50101280a7aa1110e0613b51af260386bd4952f3e25567e96813b7c1b90f2ae3b702404c770b76f8fbd661a75aa00c1128b0836185980b680f03b1c84517124cbb3304023394dc7c4f35b9a1ee012ae477b33a40ac4afeb2f0b39e35906333ad87ddb03c7e03bcdf8e527d350ed33123a06814477bc9c9adac1343140492b18570a09e1ab72f1da9540a1182117739d666109436dba31d00382b76ecf1b31834d6c743f14e4fad4291789734dd406e0d3f1e00379c28944c5a225b61ed4324b6cceb520116be1724178bd4f0c87b76ffea265d8f00bbad76a591a3ea76b120aaa31e2e744293f90e90e16931af6687b446bc228f90e76d2483c40ce29ab08d5a6d9086f557dccdaeaada95ae91f43b1a224f04496ae6f1079e8176c84de3118533c147a7a9c027506a7a626320be5256eaebd7e7fbbe71c1cd989c1021627d92ae368eea791c336c596f52e8a4b67638ec3c22a496e9cfdb69e40d1f2579745dd8e9e908e14c0d4a33eeb65e29ac48918afad00aec6ea8a68a6a1a429bf557f4a665b3553bb7cf4a2299b920d943396f5046348ed7452a09ccada7a1829077eac6cb7915ac2f086b5a0279fc4e23ae5129515c681aa68342b1cd706a4690d9816212e96585530dbf6f634f68a5005b05eb405e7bfd4068fb1886effa70834f4aabac88918d88e75837e5adfb0bbae824bb646ddde9617fb78a05d48ba0d8f352e58f0b3ea61249a3b557dc9d8fdddb2aa82bc80a9c4ecdac5311749fc2a6aaa6c4b058f2df15d3d4826fbc276a8809d0e768a221542f7ab13622eb3fb81ce4b9095d096fad245352ab06bcc836f9b4b485d4c575aae01e1da4de73d70cb617d165a216a3fce01e530e672709e02fb67e34a4564c67935c7a7df3503026d14db9ee7662fa587d39e3c8126541a99ad94f2ae237968304a26d7b0dc83e57181923566d7f3c95a08e971b8c3eca87f5404189c414097f3266385cdef52d55121a572801b4ddf3f883c1c733dae1da289fabcd439a01852577d2c81c565a32ae0c28562c50e3a480b308443bec37c98f056134d1afae24ab3ab9e0bec26709e3a7db55a4bd16b598cef2efebf5e3f46a0e49b056e1444ac0c4c1080479c0e5c9c3a7752bfacdf5ef7f7bffadfff7e59bfbdee4f35b7d6da9692674bb96b2ca4ed24bb254b53a35b58f007dedab037e05b569ccdb73eb3236c68b3c6acc64617f1a703073b52b60bf20b270d402c976d95b3568fea95f1eb654d6969d70e16242c76b06092011f19184006846460869905c09e41c8008b230ff4017dba575f03fa5855833eafaf580006d07005c6cc8f51ae1072450498f94fd3b3ed4dfe9acc817979a0ee36bc5ad42af0d3f0825dffbee6d5376bddb4e24e126b7a3b73a992f59a68dddaca7e134c0ba9c5e43175c96a225947c569e976ad67218cbe85a9cb4d59e61847bb4f87ec9b62f6b2bb1cedea7354f49bb437aee34fffec6a6b7df34da3bda232fdecc6f54f9975ae85e26f9b4c597b6966a7c43e96fa816cb5fefec94fc7df9158b7d17a6746e9e649608d8aa80686e2c7e99c0c41d853f605c5e02069efdb63d2f8996fa7f46cebaebadde8d66f6a2baffa9b95a04f7739fd3a4fd1d3df121429b14992d36fa6cccadd9fb47fd5212bbdff9a36fda04c0e911a1823564e0d0c0d11989255633393e3720427a75463e362e1c0bcd41c81a7175deb18463f7abded9fa45fbd76d28bc3a9e967e59bfa598c9ee2672b3a53a229e925f2465d9cedaadbfaaae83de75b8aba2e0f7db6691ed36f038926edb7d9f7694ad4fd94cc3e5fadf769d2aca9ed507dd5af28aa4336a317bdb46e7d49d4e6f534650548347d67fa69f56f5f3273adfd9acf65d89457b6f5cca4f9a92bc5726c6a3aa7748486bbbed44af4f371e75bfb53a3717a9577729dd2567e97fdf597bd49943d21f1498e6c98653205bbd2869ff20b7fd552a02ebac1f089cca4f59ab2f3d5ce0b21045e9a95e0134d29bb4f53c2bcc95b66167c729df8ebee636e51d6eb75e2e86ce209ae31d952bc26efd559e62b5ff5945f9b78826b2b2fcd4e73002743c8c95dff68ea269eb84090b67fd9ee8b44ad094270a3bedea050f7a94f5fff54779f02314a0a0d2819007888196636314aaa09f349e8870fd0a707f349119665594208c18cb22e138383e42f55bda5d995b9a51bad9bf52a2be3b3346626b732b6958dc4e4a61322a0c835aad0a982085f8e8ab0aa9a528455550c0e92fa736523eaaceed2acf859e6d75a7fe9ec62f4eee50ead9be5a8d64d3afdced7eef5557c8d6e45eb1fc3b860a6d89416e60166fe6bd26965ccd67e6661463a4c0833d6cc7cdf6239d46066db7d0ae5b5f06230effc7c2f98b9046ca12ebafd6ffc4aacb9a256f729eb9b60e6c95d5425392bdeb2222098a3b4ee5b2bbe81edcb58067726eb23bde217cc36fbb9691565c92c2c2bb498512c2ab17108b365451e1e1bc081ad4a31eb5ac3bacc60e64965ac7f81c16cad6b0bebdab98304b87eaad29585615489f5d7af15b6d6b504db2b07b3690deeb26d73663600a398cef0ebd1ef6ba6324c6130b3890b667a69ddfa72db941dbd65082b76b4a061ca4c2160e6304c28cc2712d05169ad8ebdf4e8e222ad9bb54cb44691bbb81729d38cadbb1f77c0cc30ece9c31b9eecda71faaa4356cef4b33337a41e3034249c98e762dfe9b2baea4ad48519a526d8de5df62ac902fac07e548e6c5492b6f55b62c651179a43af8c3037e3ece344d9f231cb48f171ba2c7379abdfac3e49fce8d27d119ad77d0aa330730903fb5affacaf6753faad7f655eeae73ea5064149c4c96117906e4bc2e4e3735dd68dd66d731867607ff6a9cb6b4ebfea5853db5bd3ebd25469af7e3e959d798cded1517172d8a45d65ccb56ee45abf993371c27ce52e173367aac7509a13274c96b956a234076673172aebdfbcf537526da284e162eca4d285d6bcd09c2e3ad59ee6ad749cd5d7cc19fbf544ebcd9ce93cfb17ac22894eb3ce6f327f9cd14845351a59663ec29da6712ff7ede3d855c9e2c48f91f42c263b743d928e1f3f64ff52240fa3b46e2deaeab57f4deffeeb2febc5984f22c07cb204f38912cc2749309f4080f9a4994f9060b6270e80cc2747e4787ee0428d9a4c045ee8109204c8062a661cc088113c2136fbb2c404aad0e20339c80106666e34ba64fdf9a7f8f3485f8f9944f508c706070786f9a401cc270c603e31028b550564b8fe9d3f29f62fdd0eaddb35393a27e9af7fbdfe722659efa4d7ca6b445db98a93c3bebe2aa3d6ca78657cfa29ba3d264b3419271792961222206114253a6c811cdbd5577dc78f6f8afe28e6131e0b5040025282046162e5386eedc7e85fbb4f599aac9b55fdb36b041df8cc3bfec524cadafaae202f8848f4995f567401245748c2ccce284850294c5c20484ffb59a755bfd12ed46874f200665e8299883ca094de204416a08f65e5eb3e659da684c0896d7d97d34c4fbc20415e8ac814452feb651c17a51462b6d752198b33a94b4b7c5b5fda0e9397bef838f1b34c16597d8db57f5d5c09878aaeb456182ad06066be11e244a984b22e63c4ce8fd2fba65c6b7abba7e4a8c97b4567eafacd76fcead9f5b1bb5b7fa375eb248438616d129767db572bdb0921a552c7bf3d9e48bf4f51d5947e3dd28e3fb9baf5b51f33fae9ed3f2569fad9e7ac9b7a6425d0fd505b4f2a51f02beab6c5e60c6936261b143ffd36f3987e3008131c84d476e46aceb59e3d7ccda775fd6661bf6b69d66fe2ea9d4d77dede391f751bc25563b2df727ebda9212894ba68d6321ae57c20eadaaf7faf95d6af9e52b3723aea7aad4f53beeab3a6576697e8a24e326bbba259e61fdbd2ec92d7ca95c7e8abda4128eb32a351cef6f5d397dce86deff9bfba6fead394dbe634fdae955943969c15f8a81bfd6bacaffad97f4d6927d75da6fd9523981c9b9a7ef5ab6f4d6de61db21c95aaaf1bcaba4c3f78bfd40f7465d36b7b6cae7dda366a739a507dd4fd13bd7db9ad2dc84ef99936f34b73fabdcc54cfb84bde29b38cc334afb97e2b59ff7acd199a63e3fff55be9f27a7760688e465d6ec639f62f93d6dcc95117ec71687d0b4c5a030019300056c0cc15e01d7d31f31194e6b62d1769cd477a8d3ed77b870e29c884c1cca3d1e68f1a6599c4ec9f7cb3367f9475df5aeb72f423bdacfbd67a59af65efdb1d897dddac2c93290b75e5ca4a55d7bed22a551326f32f59ceceb793ba7cbdb994e2bcac39f60401cc2fceefb2eadf94e6bc4a31e949faf5f57654cf93b4a98b667d79cf465df7b1db576a26ce36bd1d136384183362ec2004910810690033f36014225410818288643e39c00ecf09caa4d2246a6f5b9fca4b09f25244d7abae3401c0063062c474cc0176e468829903c02831033851098311661c6cb8f35aaadde9d5b9d3af3a533f909f52ab7f3fbe69e686d4fdbce9ecf8a3375dce2472e9e7b67f85d1d08a6619c54cf45e8f616fe956b93b6567995b0e95d30f742fdff9fed09ffcdac63ef37d7ec7e9f1339f279971916a97a5b5bbe95aaf28aa5397d7dbf448bff8b5aefa51397d9a324e9fde96f64f7a9db3f39b92fac1afd4b2765c7bd047778fec7399ab9aae6ebf7dd47dd495df18159da6f4b6a1aff4ba93666feadb43f6a3722e9d1a2dc1ee3259bdd24dfbebd2afbbec920d7fd21a38613c25c5899ea2539c681f2d61f447798ad2cc3a4d69e5a377db5ceb2abd34e9d9d5a729357a6d5c6394d42f95a23239ba71fd98db1ed94aefe558dfe9536a34252545459492a2d2a12e33f9a4d61fa79fadbff3d9266fc6696d35cecaee67ef5b1367b92a3afa5f3be547a7d5d4a28696049bde292ff9955e3f6dfad92c23f50f465999023384ddde186dee72dbe568f3c9045e454dde3f69ecae3e6705caca172b5cace8e058834f8ef0047ed2d7a80d5db3b35f5d47112ed349236b344201a3480113df8a96a2b9a6976ed65e69ea29fddb320e17511198359913bd2524358d5e9da94d9e49575959e5a36e77a65a1ffbda21535ffbd7b36f224bf1ebc74ae7916af3328ffcd718af7ef39562df729ab426a91fab0d6673399b7877fe4eea32672ead7189d94becca963973650b9d47763ece998da39588c430cece999f275972b9b4c6afbf643eeb5f993963254daaba56ff7a1299cbd95897f9485d90584913fd6598398551a05083994f93d6d57d6b2b7d558ad21c5b5f262f97c9cb414184f87fbb96fa37d75f5ebed26bbbfef6915e71ba95f6e79f2cbd3e7a4fae4aa71746d8ff15033d7afbafe9b3be8a9e9adedeb8b63daeecd0bd18e9d32ffefdae6f8f89c9a6b669ec5cf3ebd13393b4936ef66b5bd92f337df9ab34f3e9a8cb7fd28ed9a3fa4e8e6aa47e96f6e62b7bd3f1eb77d1bf66a43f55374269ce47eaf272e99cee123f755123aafaf6712eadb12856ffb797c47e7e4b1b6b308bacb4d6b726b56ee6a86bfac802faac689792d78616d39bd4460a33fb2aa78d2efbeb32bea6c9b66fa9951daa336c448199498cc2c606d850c2cfb92d0f69f0b3a2054d9cb5e2c7cfb2202a3efae624ed4315cbb20e2748347ddbfc4e5f756c8e76a9cbaf957583b039da511147bbc6665e96f9f598c7b7d6b7fa379331dda4917bbb75fc8aba5f42c9031879a079b85903106b78c1cc5430ca1aa53596c04317f0c0050b4b5bef9c95951ddaf2840af7ee77555e796d5b8972073398f905e91fefbe8d9174872677d06196389313677ecad38461a293f90541381d8a33a10f74941430cbdc057e5451ededd0861db860871d3b2cc1af52aca48618bcfa496f7b37c1286aecc499f895ce93548307336394cebe35f499c927d7d657f1ab1a42d4010ce68784ded4218bafd27efc55d3b82831c97a7559757a1bc216bd4b290e4d8f206cd1a37151d2ddb45c7711a70e1460661b46a1c31fe8d0063a7c810e5930338b91f82b3bb445bb948c4629aa5743071466d3e55beaf2acdd6e8eaa7fd3ef34e5e568a5b1ce010dccac8451e6e00166d994de390861863d659c73c8c1ccfc4ed68da4a1845958409f95fab1be349a79852554694c96b9cb6726cf3277198d8a188dacf9314a942537b7363b1a61d95bc8244a2bd49996c0d7ddeadb24c54110287130429cb171c8226705b3198d725858b2cc5d566628ad5ea9cb577ab1c49995ccefa44d64a5a8fa717efd95ca59afcfe2d75fa2bfccb553fac92d5bff565a7fe6f433faa3acad96cd32bf763eb2b0e0bcc8acac5c8f04651d353f5b71eb65bdb6be75d4f64da4cd28355d9a9d7cb2e45c72a3777e93c7562a4b111d62e990106e25f3af533691d9cab4d16656563cdbfc2a754808b792f24f72b35d5eb12b5bae5bd74a23dd95f2b2d4fad2da8ab22e2bb5d1e87ad56814715e64eab3d4b008e13a9462b24646a395eb915cd9522966d9faf1fea9fa65a9e990ccca9c9f59b652b7ee64b954657557daff8ac5693b9f2c2c279a8d462c37db46a239a3d15fafd7126dbddfe42d2b6f7253a571a6bb32be955e596c46a393d5aca3665217353241a50e21f95c8ed439cb47ea32a95cfd6461a959b9f3351c4ddeff7afa6861d8d3cbaf475b51d66550d6512abab1046182bb6e4516991596ef9c4566e5255ab63e21d43883add394b50018a390418b3298a9702bb57c32063ef902112753ac74945a0f661c6d60e61a4621438e284e84ec28358159eab523cdfa6a255a31fe67268ebeb0109ff891cb90601c9799ced426bfec95a1cb4dab9f21db6f7e13d9366614657fca3bbd496782abbf54eba7f966455db6bd2ab31d3f76a56dbbe97ebf74e76b56f3ad9439bd79d0ba3f66c28c430d2770004a616a2bef9fa448fd6fd06a77d28a59af7176d20b3ed0b5bfa21984f5ab85703ec8ab6f1f6c6672b46626bf7fba7ff2eadb379125dbd74ae8df6522cf328a5a39cd1aa3515295dbeb94667f475d7599c91dce7bbaddee956ddc8de907eda32e77e9674bfd6c6266627acaaefedee9c1f4bbe48966edabfa2a9b9d8f7345676a1e79f6e7ab30efca5d97f5ab2d47e98dd54f5f1bba4c3f52bfaf34c75ac959fb29d7386cd26bf6ff9575d5daa36e63f74f10752904bdcd1cfbdcb7d092fa7d13a9c9bbd17ecd6b8cacd7dee9da97fe63fe63fe762dcf511a9d5d46b74a37517d29b4ae147bac59ba47b63eb93990eb553f4e96c0810412d1952d2a2aa85185162406318841089103661e31ca18355634e5d71b6bb3579a64a6d00533df6c8a15aeadbfd3945d28b6ad6f0aa429ac3073eaa27efd657e13fa35e6cd8d4b519ac5bfb4a6fe5cd95c5af3f6c89ca13577fe74adfe4d544923f17a95157f34ba1ec9f5280c1959568dcd4c0907068905438484639353b2acd1f3127034a171686892c0cc2846694215ccfc6c261d4359ce9e4cb122c5280a21503cc1f5e968749a32e5d75a9bfd537594cb6b79699bed834343834343d3ff914ed0a77168685094e2340e0d8d91ae9ad6231c1a9a66b2a46a55d39e24e308321ac04fe512a3b472a2cdaad61ad9991133979c882810cd4706b6684a510b6c51bf9f95366a04618b421004a2f9c874a8a543aaafdb07f6484b4d99b95041d3b6e7d3977e70e7e314efc1fed38ac6295719adfd2836e5f610f6357134f6943d7e525167126118ed3169bdf2afabe4cc0da9ad6c1c24c0310221cc38a2e0acf8685daf026227cd210ad23e7af3cb8a19ed29a668d067f3eb61d95b662cd894ffd616554f6eba02871a5092c0025b5fd534265e8a4834a58b3e4bd5d744a6d4c5eccc100961306f74db711a9bbaa8911da799b1bbac2f5dfd54695ed32f9e426f6949a336eb6e92fa59f78cb356b6bd7272cd7cd2041341984f8ab877b3fe2fa7295532236dff456c7765949c15d2c869ca6b1f49bcbe3dced7c7aea546aee55ee2af689c3095de4dd6cbfecbcc4669cd68a4a252518d462a99b9b5fda71e9b5c8c149bd2b21aad3138d9e7bcb5a4f8ba335dd6adac7f39ca527f4ed9eea8243d9a54feca4e6f7aa7b7954ed32f56d3e8e4a27ea7e991369d17a64337300f826e3a34f3816dbdbba1853310de40518f6c834c9f7e76ca06f9a7dfbf997e1fa5eddf6cad1f679c0f64cef8262f79fd7abcf958391a59cccaebd6e10d6c51bfca599a61b2528c143ff41c8410a4a443d607aea01208415687947c20b4b047339bbdd6ed25551d678bfa5d392fff6be76f14a339382eb4be05be892cd96b9fb382d4f9aa7e9c479ac879c4e54efbf4c565fe6603eaa637263f2a8964f535abaf79f65534935eb3d36799bc9e4d299a54d2792fc7fae7c74937d1c53eeb374d2bad8ffb9d8ff6f8b3fe35a9958eb5f506c5aff4d3f65a39fb5f669b261b349dcaf99c155f3da65f73f4bade6199a3de346967f14158771f7b698d57bf79704527842afda32dccfce3affababf66db7676cdfb25d449ca509a13339b204c1c41d2dd57df368dd452ed4e194310b6951a46bf3ac9fd7a7d8d9b30d753dda7dac64aaf98515477d5a9bc536618464722ad9b1e676e7d3b57346694ba585b5fc501c3384893ab371f6ffe9ace593b5369fe638e58eb32daa5e4312fed7c942f2f6bceddf91afbf3af1b59d11aac22897f554a294e9cb95fcab2c7dcce23b6fb2276e3682582ba32499c1cc5b93b5f7377bee656bf258acd1994759938f335e6ee7c4dfd4bb31291bbf3356f1d7533a97c4dd61bcce6ee7c8dfdfad9266b0ecd896fbb2f7277bec6beccaac3d897b6fb227c3282fb53f6987ef18908548062be561ab16f6936ff7e55d12dfaa3ae89599675df5a7f4dbf966e9a6fd6da71cdba1cb55e93d7ea4c16bd2cebbeb55614652d3aadfb1675a35c598fba2cd4a5f59bb8652d6a61556559f7ed8e6bd6a67196b5e3dabd96f54da4b5d4d2b869556bc7356bd3e49477fbebf2f91b7d4bb36acddfa895026666c22828d0020e01ec40220c2bcbdca296b55f8af2a5479db7d8fa56b0029e6f24cb48cc272a29409ec87e764dceba6f6d7d9b56519b56514f45d5f47a5629567f9b9cad0f88361a454649c10b5bcb6da5f143b15a2b2d0a8860e63873e7ab60568e63aded36ea129d66008039810880d4bb710f504e3080fa774aba759671f32df65149574551e7d97b5be9d333d0a757260899808709745c18c50423e82958ba473a4825c84a10861290c13c67283667e2e46260beded4577d8d1b896f69e68224feb3d6e452e5a837f55faa6abb658f3245dbef34253d4ddaa17e57a2aca348fd6cfba535a729ad95349722e9b2ea3094e6d8cc653689b2dadf99cfae79440437ccef332e52ad7d7258fbe65a6bdc7cd4e530cf7e66f253e5b6b75ae4410b35d89718ff47c338f34560ffa79e85d6a4b0be1e6f6d1289fa4adbbebc76e6a2d692684df745a2edbe08ada1353192becafb3834a7fecdcb68bd96ebcfbefecade4a311f3efa5157becc90fa35463b89fb3609907d7965262fa9d149afcfe274ad3eea52d387ab17f6fbd35c3d50e8faa74796f31b5aa2342792acb7ec38cdcd8ed3bcf516214f40947519d821087bfa132a97dcbafbe9f8b03da3289f5fbdf3eca3e8357931da9ff9d9037d3ed26bbef5a38330013be5b761cc7c0e9523fabab5c3dfba1cd818bd764a2edb3a08133146efaefe16bb4f41d007a3df445a8a5a558a753bafaab4bbba1dd73cf4d5ede9b38f6d1df5364e8ec65c5a7369cd67269f47a456ff86d6c47904cbbe446b6c7d415440ae6ab56bc7da71adbeacd54d6dad6fb63e206f550b488fe207297652b82331787353b9ebe27cf8f0e1e3d9acc8aa03abd3ca6665840a0baa2b54426cf7291367bb2fc244274a08b92df87137cc90c9e64936d7565c8fab057ef46ac157889d47ec19ac0a2ceaa7d3ac9ad12ea9eb511509d52b8b156f30d1f9afd85b81b202e56d653033d1e93cf4a14a97e8f4dbb2e84cb43b93fd6cdb72f0eb3cb3deeda516bd4b69dd4210b675188a86096807688a7d1076489b39338b1ed666de70098608e9c6ba21c1c834bdade2444a134fe56dfea8b63d4cda5b4b327d92d364621e3187d0d8d0e8a081c1cc96091108aadcc0cf696612b51275cba72d132d821d82209a1ec14fdb202d7a7f724d7edd1a560e36311a61d482d1bf42972a17d83fde8fcb46faea4399dbef8bb3937e353936f3ba9bd15b33a225402b223342664526932920d5871418a99c549136aa9841152ff20f3d904de40705065416cc2cd2d4b6c72907339606833e3da625ddbcd49070887446c286806dccfc26f5602993ebaf6e1d45cdf82b98e5bd10e6b7a219565f459f472c83eda992bcfa0da4585cc517bed6e02bdb6a955e5f8589b3fdaca8a1e8442f335c20b85a4c6b986260428169859997e87810dc03ccfc1abd5eb7a730bf5a23577a54ea7ad405db80568057f09b1e98832badf5af4cd9c0b6da606de1d3af0b9471012df80237cc544ed1bb3ff3206cdb234e0eabb4a580713e94c2ea47ddc6a8480ad9a2d19f3cc3a68f297d845ea57e01663205264d606262b2009d3474cea0a3858eeb28b1448c255a4026fdde9465a4b60019dd8120fcd82a1d143f6d010e5800a60280a8801715d8615622067fa42eab9f59e6713a26afdf4a3d82f6d3cd07a19550c92b21401237242143120f30334b0c0e125a83440c667e32e32c928d5e24f6abdc76be8f90c1ef0817ccfc3c47b6e977e7618cb23789b2379baf4a3046873dfd72a52348e4f021a70ce618fd4d7a7386bc58535a237313cd4ef3b71217cc108e464e337f14656566f26bffaf4a4bb284009c307c0a870b1c14ce1066be10b6e8a1608b6efad1db6515b6e8417a3b34a50f1f17c9878f1e11a999a9c12125795d472afac0032a8e5041c44d15ec4ddbb861d385cd0a6c483608b83b5f7fae7cb3f551daffe530af3935406a104053051a8e26c4cc44c7481846fe724c964023dbca0e6d198de2ef50d36854a9fccc6d177983ce226230335bf6cdb7f27a2ca284999928c20f144d92026850600bf69726518063e60ab0870247bc9b16bd11a945a37f134627cdfc2b6cd1bb9d69e60d334e98d9c18ccf3c606687cc18325da0accb6499bb3c4a2f91323c44b278296d89dcf0b3b23b7e0e91993e4d99bda5d7e3677f99ae49a400314a88b13147c4c09801f34508da1084b652080381c014813d82a0221f1b68edfc8301cdcf2cfb3e0d6df745ba48c3f48f2e0283010fccc32ce0458d172cbcb0e065a534b3e2b2f3e874b961cc26d43e46d687dd71ede6e663f3a28f87d1d0ed904bbb14c06588962db480a02512c19e960bb4e460864cbc8994c24c22a1f0b33bae0d318379c8160c75e09bd433a48a21291088966648f7a9d6e4ab64d6b7fb229e0984c1cf7a2690853ffbaaecadb6d19c090ca1a855ab74c81e210aada2f29c60a247b2883d4214fa09271e1441de7a4b3ffbd4a545cfce505a615b09827fcd4f7f0dad68f69542f86919ff6bcc9b800158f8c0a2060f8b192c4c6021014bc632c4c382638a31a6c0c0144d4c81c25f316bf5f3afcad1d268c47249eb4646a39c159902521f93420c96620b8ddee9a81b295052a4308fd2e01747613cdbe33393bc53924690f971a34fb7e31da38f1832e9d012d82fbeaf4851b0a0ac33d1092dd1799bd7dba52840108512667ec2892032af823ee57734828dd14f57d09bee97a60dfc348434b033bdc951a16bd24f51d594510ca1078f901908b911d2008f100140c1040f14208042058a2398996634ca59d159393a9f9061e667e50ab57adb52dc37484e74c10c99584be08bffd9c6d5e89c15f4b69d4e50277c3471c6cec707b168268dc57b1878e91016ef61a0e35a7a498f6c0803b07f52ce0a981e419a7edd9b442f08136d822d7a1f152510047aef13fa045102fb4d2f3d82d77e842d7a342e4afa341ba39b5fd04269fb3f26b34da49a58a289219839c51e2660c044161e261e10a40c66bed813e48334c0a33286ca8ef6575ad63fc662ef5bcb44a7e9b43ee537a6902125092990996990b460362aa020377665528963d399fa278d383032393330a3961795ee53969dd22f6603ad842018a4a76009a27263e563a24fb70401a9dcf48fa6e91fdd729af252d5c6550a82417aa53f6d217c5d76afaf3276a5a618815801081740de0324e4796ebc321e089ece6b511b222378442b518c47648010194260845e10221292000b7b7ea461b1b0b0ccacd04bf2b1436787ec771d5aa2f3b64a5bfaa0021097a3afc9cb0212c2754808f7e9ea47263a1d658738dab1abb7d20ebdf5d394ee201e8048007ae28306bf6f22eda78b5fa2834d4afac830330b4bceca671b97b3723d9214a5b769e46c933ea7f873b6cbc9750f29f4a0410f99282d263a216b6976391aea15cdde44eb37114d3a4912a8834702339845d823812112f830d159a2d3d3260262e43c190125292929a11495fed150f4402d2f36fa57232d7a20958fcda51407d278e7a32e47f244a00111186209353c4bc061092e5abafec6d9262dd14389382891032522bfee56a27909ecf7314a935dc5789228833b142787c17e9526b1c3cccfeeb896840c8fe2c89a5e5a04431076086236716664a33f8ee9a545ef63a3b4ba4f8d46165e4baf7eb6fb1404a97c6ce0ab9fee5336090640800d08240102260f049e80c0497fe123c09ee6c1ccef318abaa68bbeba2041064326f1434be06f36486c48e430738ca4fb1652d40a36120cf03c001034723b1fe7a61df13cc0016df038400c7e48b0c7013bf3afaf0e18c2cc6cbdfa4d7c53779e7d955986ba97779799e45529264ff33b7bceda19cf113838a2e608667aad8d7b3f6937357a356782d06699d3dba197f84e5da39723791a408406c006f060001accef72dbf5b6cd0014b38701322ffefdba6526d89f63c41b4cf21871c683af49e8cf63040f3c46ec303345ad4eaa20ec31e2c3fc6c98f901ec318241360990e88fd32a3d6a7969d1a44754440f825460db2b3598f797675b4f7945934e3f496aff6b0c8f3078784081c7113c3c60c0c3f2a882878c8787033c3c4e1600c602bc60e61bf62c20e74dfa60fd2cf34b34b2d6a380a880564002123005764f02a240c01b9ee6080883995fd883808c991fbd211a1725b0450fc4b5956ea27151f298dbf6f62040000750c301b460661653e79a8aea4dde2251176741f0c8c3f64f5fd965939aaa63d8771475df4a0dc80e26a876a8dcc1e36983c763038fe702ccdcc21ecf11cca3510ecbca0e6d79d66f50366699d54f94147ef13d0678c3006530d159a2d3651dc90059f0eb1b660e2dd17977be25190034c39e02a0c1cfc76bd4fa906252d9653e2e9d3eba69c6619c6dd247d72695f37ad48d2f21a4356febb20c9eac065793148a1fca7c7abfa70023280090023080005360e625ec218024804580010ce00c6616db95b44bc98b6fea1e9e017c983988ea6134beca6dfd9c010080998fb047006130131d8a5a7d5aa3250128618e0fa10052e6cf93f44df322cc604f115fb0a7089937a947071acc3f63463ffba862e10d04dd74cb5affcafab1811d82201a4e6b796911bc59fd6c58038a2f128962461bd2c016758f6afa47dfd0b4124a3cd95fdb5e68779c06769556934fb69cfd2dfd266cd1db24aac7ab3c3a34a0e331b314ecc9d1468e3472b0c09303059e1c32874a00fa00074f00d0e009000b3c0118e209c00f04b027000bf010010522444084100f113c98efe4284b6459fda4d333c419ccfcf576f55577be7c10f46995163dd0aba49da31195d666e1a721a8f4b1813d526911b4a65f0d4b30d20b3646a10b84a052ff68978f0d6cd1eaa767081a0c4101cf10439819853d43a4788630806788138f1043f008f146b0470823fc915eef357969bfc9abdf30730ff69c90c1833d275dd0eb3919c2ec3969eb2b0f0e3498f9590f0e2df85d1c4278f5f3fdd5d2c368b487b9b832c27858e79da6047557565a856ba249e7a73ddcdc2a7d9a92a647362f36390f74f3a96f3d49e75bd32ba50d596933e9318fd66f926532493fd8a207537cf5b50747bb23fd4010f63bbdffbce6d6b9933469a41e41d8a2d7ed7c86bd4a5a7b2d7d5585b01de7d5877087a2ee67263965bf95abd557acbde7cab7d220d818441106d1641039836041fc41105f08820b4190ec10882ea004e28a407c02418009300a20b800882c987934ca61a2039adce72b1605a3fc218b4c4ad21f52fcf0861fca60666e911fb4783937cccc9bc80f49f86188e7f2aea437bbf3a79cbf6dd4572178396ac1feebe7a496a3401faa208451fa70823e34c1ccd5ab6f4fd6eb8d32985821ab433514a5b504bed7b68757df36eaddb31cf5d51b55bcc1c2073bf0a18b8751cb8706b2d24a3c97feeaf2b1e95177e54e8b58565a890782d65b4623d8be75a64fbfb6129b7920bf9f86b04777fab597cef826d8a2d74d9a19a7d3aa3dea6af4ba890f0470630b286e48c18d14b831da831a7b68c11e56287b00a2073d30f3f54898e850d48a84a20721ccbcf3718e4639017fd97fa9fe998bcbfccd66f5359b5665e2c797f91d98cc5d525432b63e663fec08d20533d758af5efdc64df6d2544dbb5fea9eba943abe7cf1fb377ad9b6f55929ff95956283140c30339fd0309f18613e2962994f28606f565f73e3d75f4e66984f8a3869892210cc9cda44da146155d5956274f60766d0860efb17ed786720831941e02370cac43c821d3947309fc810d1a1434711f12f68493f2a47870e1d45d85cbf6c8c5f05ef1041c1ccac43878e229e0e1d3a8a00bd751390f940ec452310d5c7076464b77b511f2676496bf45ace45870e1d453033e51d21c85cffc6fe693acea559c962b49598a2219086b01fbd4febfd0a555ad452a4b4954d64a9d426514a3feada1e9ba7a8804426ce7e9288f33b096b39ca9d6468e6d21a5a133f4e98cbd9c413e69f1fdca392ad6f8edef42637ede851b3a38715cc6fdb2101c8cccff6a459c82b47ea4a63fa79aad255e56805fa596ef3f6e183faea5bfad909dc3fc5ee53a3df5c03b2b9e63f78c71219d8b1440f5889bb43891abf4f93d9e82f63fdfa0b8c455997d97c558ab4c65a1ba72cd2d9cd6b0e159a6f25ec7126952ef5e33c626df48f5c8c93eb4b9ea8911e6347b3c1cc9b56652c6663ab11cc38321ecc38528cc3073b90688d964eb28aaf2d454ab3b414f15196db6c0ecca65519974dab3216c7afbf506c466982f1ad50e91f5d056c29a0ec95ae02f28905703c819987601c7828dddc18e99596f08b2ad8cc25cbca144e626050d665ea477f94cc5f93d6a4010d6d301bccacc33b1aa093b2f9b59abc2baf419e8aca4b11cd15ad269475145f0cb8b751d665984f5e06e112da61c4190c9730814b3ac404def950574e49653f6fb755bef7d76cd3a46d0bfaccbf53ba2649fd2ee92baff5bb5daada76a61ed5d63bdf4617d1537bc3eb16ec2958fc65c6ab6fb1dafa5bc7558c74db92c8b6b4cad7ba9bcb5d518650d69940947599aee52375814b542feb7511c59799ce5e3f4b6aaf7ee372e7a53536afd152a494489691ba2bed95dba492d48f256725ce409615087b3446dbbd73eddf7421c5918eb9b57ffdec90afda3fca2c46a9a14e1cc59e435d4e4ad1b63d6e5ce911a83fdda366d2a3253b7488b14307173b746cc1cc40441b6769d78e452367b5adaf7efdbb79746b34aa6f69d7ce8e1c28bc733fd2cbba6f597fe994a9d20e22c2b0830827bc58128d5ca9fb225146ae6404ef2042095bef3e452367df490b69c8045852d7efe4488fc9999ff29cb7915effb28b7ee4da1be7db2efae3d81e577aa8df8aced4af1e465b7b54fd555bfba49df4b2f1a51f48c5729f8eb74adf90f4abd2b706c1f84f3811a4837cca3353917eb63e67c591af5c263d26ce2fc5cf4c3e8fd4573d8eb7446f29d19a58ea518faefda85d3b569c6f07d102a691b32b8b46ce5a10aa1a429b7e201f3e1a75c9b68d0231f0d0450cdaa05d3b2220dab5030801fc010b7f9002465554a39155518d46727391ad4f450524db3469c9cd53cc28beecf183650e81a39aec38c20896dc64a213faafd8a5b4f681df5bee6e2f33405a5af427bf4247fac1d5cf3768f0c6113ef0c1c38717f041881b7070830ce6e7460ab31b39dea7e8cd1eaeb00730de1e20f31e863ce1c44bf9b4855fdac3117a10841ecca0073298a5fb222bd723b1a234e941016d4ce175a636b2a02779db101282f0925e1b0260c30d6c7cc1060bd8a061030179b861ce430e665e2362b23b5367d91ad81a1e3cbc010f1b1e78f00bd23f3ede410a77f08299436efadce1a68b8e9ad3b3ed644d9adddc41c50e67b04308ec90f2d4488399f96d8c356ac8586a2c518736d4e18b2eb38ea2c31de8c005cbf6d142a060e289262d929a293243870bd0c1850e3fe660873998c1d27d919cb64254823c28402a1f9b08dbbe3dd22378a299a5f2645dfd1c96ccc1650e0548c30d698cc1cc7fa90a14e580861c66c0cca5b75c4f59611cd810071fc4c103ccef528a5339da59adaa1c050735c0a1067040020714e6f78632f865e60dfe06147e356e78a3af6b95624de3a2a4726ef0821bbc70c3cd9f3e932a59b7bf9ef965df5ddcd08632dab0c3dc0619e687516bbd057613c6b75264d9b0073608810d1a1b4068a0818608d090a1818f7997fa69f2522b33b7b4f3d9f91aea1a88ac01006bc0a10620a861891a84a40110fc3ad7bae9694809f94c43116830031a4ac0cc4f6224349c018d174aa7cd7bdb6d4136252545858abef6a3ee3c75d9636e3bcfaca3ba1f75fd0c3967108019a260860c98018a32dca10c5f30b3655dfb26ceb23936367f998e9c618433b460cec68c36139dfa347276894e9f418632dec691a10b664906549341c818de184319dc18b660a2d32f33a1253a8f7674941c0305c4a00766ed5222862d763e8a61470c43deb5be89c164ba52fb30a4210c46e07785e1bd4a4f9352db5d8f24ef72376140020c6d008317dad70d0c9bbce4ea7a090c44c000812f4c81df17b2f8c210d9b49b3765495e5083c70b5bf0eb4cede2051e4cafd41e2aa1c4ab74726eff638058259468d8a207a4450fc84b24b5124a3c33c660c616cc78811941cc48a20b65e8020cba50d3850774610717c2c0cc4fc5aeb850c305147e9768467949aeb4053218fee8d3943790a6b750822d24d942112db8a1052d68610b7e103636d31f5d0b3584727a87acc65d555e5a58220b5ec8c2155948c1c2193c581883d9515778e3629f75285ea108574031bf2bacbc4921cdb848696270905031b23250cccc95a310c27e538f59061156688215a4157298894e874237e36c97dd9871b40a57f054618b2a0ca1421acc5c69e68d51a7820d1506d0700a271e29cc80f9d14d0a4a4e9ce9e3a649210747210daabd16852ff8b9ac4f8a829250b793b9f515090a6f30f38395ba40bf60a0f003286ccc110a4dc61acc6c21937e6464f160fcaf9b95342e4ac8b079821b4f308359b44bc968445776680b129b9bde71ed0990398638dad9274ce18438789c508207613b2185793acd3acb484d58e3cacd7eec2664d18421dca14a6bfd253afd9a80d2d33d6b6f3b0619cc446735c6c62fceb495638c81c26fdaf4083ecbc116c91ec1d7b996f390096f48031354c084254cc861020196008625e460093bac8433f829e10bfe8d2a41869995f0e1c43863f5b3fb9418221083460c1efcb46f79693abb3aa54d8b40f1439fa6b2fafccbf6b595ae3af4c463020a5fd954a5abb6609c5ce6d7722f38d6eaa735e968346dbaede54cd19a7e5910e7f59c69d1fb523fdbf5371ab2f3a545af5218ea01ff635e127e90042e091148c21048d8820a09481c418d23e0e008364798a200ec39021023b8c1084e300266040814610f45184211aa28028808d6a2b7431aadd8129df75b778730872114610890f9bd2c14061bc2e8228c1b4f183c5f085ff0b3d07abf490890ebcb4c10c260e62064f182003b080d0434f899801046f7291a39d0a7e30c09082f18823d405801105698f9f9f5d86088c160700146ec7ed756697b340be8b97a3ffd2a9979d3dbed5787aca33acbdcf2cf283535a947a257a2ef5df73b6443b676d37dfbba71b40b794ed7378540b0a74d4db799c9bbca3bc188f9c11b3fa8c20fb61f38c00756f0810d7c407d60f9a0003d48420fac1ee8f8a20cfe42003c488346ae64a169729a462f7a776078a0841d76a0861d948059567668cbcad2d50e72b00ec2c06fd5519a1e75fd4d14b6286b91872e97516bf247dd3bdffea417b60884c5e99f4da357e8654664e2ac898b5f6d942dfd40afda794eebafbeb947f9d36fc669d23e9a7d687420021d40e1851cbcd08117252fa2c8411c7280851c703990000eccc041157070f90652b8c156fd65a64d9c0d7dcaefeb421722e86249174bd8800c661b6861830f33bfee7c832df2587d552976925f5f456da0801a48a10647f0d420a706240f0dd0100a45f9563418d12007333f27cd408c195cc1cc325002d479565f457bca4f134fc589f85926539b3fcaa5454f894cbba877f37af438da45208a28dea3ae338170493f4a065890810764a0c9a009190c118331c4c00a31b8fc60f0063b0703186c3d6160c083fdfa8bedb27b7121467bb8d869eb74daef3edd6599dff6d3942a2e5a5e1088178c41e70b78b8200d8e5cc95472011921c7a40b442e90c20542b4800e2db8410b6c0b8e60669b9f2b6a8de68a6e5cb3c0593064058158c1172ba0c2b38210ab400b152801124d9b0a98e864fe4010823ad3a7419fd69a948223a4600729c84941a78099b780cc5b0c61bb05f34381198fba5dff52150a8680028b82274ea0076616263a1d32811c3c2630038b2413506ccedcb78f23faba69b0addd24ea34a5742901194ad084126092045af0ebb2ccb9e934fde277f54fd3e3e5e816fdebf48f9597043b2448a20b23d0c008422238233a13f688202534e9c699e895395ab8a1c519b400811629cc6259f94250467b421043c083f9952695547bad33a79104022980400b66aabdf632bf660e088430f30301cab31f7883993f00992f9df5034298dad307b83853fd33170f74e181217c92280ff0608e1d40a3035d749e59ef800c07c2782de3aa8c1c801e0e7c98df5b6e5229a76b565e803d1b208337263a93b4012eb8ca64c1854c1690598a088d46a1959799a6351a40839b64e00bb9b22150edd13dea569944129df9a45afd2b3a4d9a7553ad4acc439b6b6d4d37b4f92adb7c6525a5388f6ebec2e20f58ec008b2458f0153eb802e78a1d1840033363b48401d02724ea7ea4f8f54da111dca888cef6110489be7eac4b298e652b67d2e4cc1ed5e40c4d6ad044054d6e939b26dcf5a0cba2b3e912b04306c62257466056e91f37eda39b6042c80bb164a834f3c6d6a99a740ad10800000000431000005070a050281a910b48d5fa3a0014000067c05aa466230a629a630a194304040000000000008040029474754383e5ec4733e3d8504a15fadacd483f697314ca0e6ffd60b21f79d80d781f385297c5eec24a6926365bb5639ea8b526ed21ff0323b159efa357fef02a13800501497ca27518ee7b7da4a360e33d413ef752333bbe8a64591da716f7da716982627ee702a2a6f9a33e05eeaf7104025d621c715ecaf16b465f39a80769c92adc7a53e1a47bffb7d9a12d795698b06c050932ac4fdd6a6d570de1a2fbac65ab73a7a213dd3fd417cd355489739c3d008832a78e046e40572b9ea0b8f89d08d5daabe55b3e4d7d127968c5f9138c6457ba82e01064b722190bfb3787654025509089d2e7dcbf43f1204f4de68c89d39b5ce2122787399dbb1223d42126b258b45e4517f0bede42cf88d17b4a2a89bb72850499476c8363b00d1a044b76eca4f1cfa0593653991f219ddd1b769ebd202905ad153ae1a554a5a5bad0c85dc2590a4f87fec513c2a0b1eaf6a4c7e95aba75851b651e4db686b5d8a1d1cff20d403f74cf01e887a8435bfc18c0840139bc08c41700f8571760996c046424bdbed0af9c34417bb9b2edc79763779cd5a347b0972d605d1bcadb9c7899bb16f504dcc7aba9d535a2d26212578e2dc166b27c84615cb8d2d81369f4965dd126ede43d7c03fb5197acf075ee086e0ed68d012e3a2031af1946372a273459f00360b8bf5d1a82ee45fd7b6e283ec12701be00a2dc4aa1bfab85c6835928e26aeba916c4a447dc5d25da182af1d4c0844f974a8ac878a814196d1c3183bf2c5f6285dc7539b939e50210ebc5b08f158ba33826e792ab986dfdbc605583b5b918e5be3880eaf86722a5bf5b01670d294ea37294ec831a2865947b5da670d87b9af933de642c05ceb2b4a0941ac3e433423ecf86957d900b203dd2a1a05545dda91de42d1f1d34199ba24114a4d8a03920aeb262eeed43ca86bddf8bcd082737174760552cbd1f819f76cca5b4798db7588ffebba82b907eccbf74a5d295e926ee815a329a50c925bcdeab0ff76e31659c507635d8d57940c6af3a2754b745181d75c021d21352821d435e65bae1197a9ffb856420135b186a26e7cfa36bcc8b233c01b87beacd34b439bc27d6c584302f8400a446897a66c72221da4eb3e5e0d24663b27fe720d38d3e1d650e6f6530a614c2355ae38246e33227084ba3bd2025c4e7b33a5a57b63c9812d07b935fdf900d40882b978cd22d6679cf32741c64e102475c0cdcb231489808bbeb02d7d970359f9a4017c718ca6942d6e797dc46ccb228fe8e6662529820823a8aabaeb9365908a4d547de1305d6ab99db695d6c4b20d906cc68128c428e9c840a56b6bc2b5c62cd2603823e0de078295c353259fca10040e95a43118b54a8d0d74dca2e3d29d6e12b4421a8f600d4a4e55b01926d03085977f44f1b9ba7c274daecb4ae7646a46640e80a6851961cc465f314209198724883d9477a4926e704db9ad0d532974ddc8cde4cf6d28ae72f991b5f6311d7dacf0377e93e80ea4ec6318472a07951090db14b6b85ce1d39c9cadea4249466dd0a5f28b335258fefeefb9522c5d4b8452cb63e03ddd55b6b1a144d6f88301365e27b4caae373f42ceca7ffde858e214b9679f0a79e56939501ac4f00ffa9f91a04fd3dd7506f698a350adc7070b0d55e9f655c5fa19c2c1985671eac0c5b7c2935a0cc5df08ee46644c20978d10867a50055b010a28d8be92c0f18eeba4e36073495dc53e4d704eb9e9db89dfdf20761383447dde51a200db5184dcc00730dcdcf1c0393502837bfcca73082d17914ace337ca00a891375746a2112f55fe199f59a5bb8dcb056af7a186efaadb750342bd9524750e9233822de333d6b8d8421c5b46877105c1b2e7e2ce3172cf16414b68000e1498fc4d4032c998e132a9b92cea78102c15345ab905464c764ae0728c644a345d204daa8f244c2d8f74d1bb11f2b849598dd53f786411e539500e39a8bb14503b0f412ac4ed1dd4c8fae09e9d0ffa2b60254a6d9543540bf42ea1969326f57b4356d9dbbc9183edfab231b3d2d043d6b25e22080f1199f3d2a4fbe85d04c0da50371b50f2a137c909f4f829d6241896413ec89752b9f793cb538d9668e201b75237718821ac120bc25c3767d8882e6b50f16ebffae15ef40336439dfe69285fdaabce93e8c785fbbcf59bac7d1a2d4c8b3691d7532a43be7df7459daf7cabd487f1385ed5756560181ff8bbc2c249e8e33bc4dbada8bf7624406e675e6c28d44748baf966568bed22b72a856827ad38ed0b4173bb3a5cf6ba096e9484deb535972c08cc17a95cfdf2ee6629baa5539b80d7590d8c11fad98b6abe7acdf6e935d72afc4a7097224181c3e66b1e2c9d07cd4d2d0bfba2bd2d3c1abab3089f0f2704267e36c9ab4a182c7c54ad772cf660b26bad9275175172f321288d6b1147bf7e6498272eba65cf90d9ea390816191567a52cf5f7c886183a75342333161931fe6f22ee15ecb818b520498fb13c537dbf0fc3c7efecb29478522c9483f087e7d2b4a900b40d163a23bda181095aa9dbd0dc498fb91595bb78c85c7f995d5e873e126ae42fa65620d9a41838a894816335290e15f6c02dcea5254910d547080a9d606c215e88af4fd4aa2909369c1666351e2685e26a96b8e4589f8a09f4382f81e2aadf09836fdae0c7869ed01a58d68123cc7a4e16afac9d2315fbc760cca5592544af6a97be91b718167f7426c74d0a635a858ae3f9b898d9b975e07cbdafe434c9884ca96897057df00e911dadd8179340ad8e1c4180bd072bd5534baedea61129852ba233afe21422de90fc71a0e6607b4685c1580190f99badcd51ec322df50115e987f9ca5a6e3b69500fa4833bde7c204df8e816189fe33cffb11b03959340a446a270f92a187449e0855dc4ec9667fb1bb57f3f2687bf4168aeb01ed5c977cc21337e96a148fc848e6c4f7da2b979da1e2767ee4853353b3dcf4cf48927d469e17a8635d8bff6a65a40f9af30a3f52a71db18cc720f511d1afeddce20cdb8abb025cb3adb47d08117c0c4992f057e1b18e2afe76919e7e4aea117fd56e1708571e9d91341d53f42b5613e1c0d44544915e465d30fd1e487d2bf968c3344bb78efae3422b07fb6fa7d55f7c9d67640f7084756f2fb2d7082cecbd0b0777e01ecf1a919416e7adc0ca89d3d3db77207e6a34b7461532fdc6a59b3b58e073db92905d2d36975d2081694e7570b4d1afcb989e6f36db7b4ee740c3d5dfacb7447e4886f3089d49cec9b44647ae25376b74b079501cf4ce3d2f2938ab2d5a0f07a0195f12fc2d34e7fdc0294de427373c6f373c40dd59615b2f71bf42ede91b8741b30b0ae4d68c3862b0fd298c9e0af307664f0e3123190b0ad4d810d4bd2efc968974c88bf76e435db5dd0355ce9bf9171aa7dcea18fb32a44051c1fe246d2ed58069235354df706cfabfc7dc844be7d66eda48823c72f0f2003248bf0e007a1bd94e4ac30fa748ce0d7302a49c63a44f9a8138510f2c4b3f1ac877d03648e83e7eb212a4732f1487fef2b3010cfd70483494ea9b412c3d3ac84f56282365ee3c26537f21ffc07106eb020bd2edc67727871f261ee8d0cb350237dcde07dd4695c070ccfdae794c8790e68c7c6f9b41a7d74bb15f0ddb1d31ea77788899ac26ddd73a278b27ca21aace9fdcf908387dc2717ebf334c141613f519bbf78fa49b0197222fd1079d55b4729af1aa1c31cc5843a9440860432b28baf3da247929e1497d7c6d95329f238bb0e99313c51d198bf8ac62ba779a32cff36e6f2d179347ebb278c6cea2fcbbd4b94132a6586d10243b7e8db8442405318de1916e6985a430c28cd601bf5a211a68f5c589c7e0af9d5664bce9f8ab8ca1557110fb235e302c7c7e2528ed2d44fc94dab522568c8b82862e4a623cc71d89c43d45524ee61fa7b402761442efd7cb7429e936ec14c88b6530a2559525e74339a3cf343691c91c826626f42acbd05626582e5396bb242c18577353c459aed2b0afa320a411173ea372bbd093664b4c4be8eb2507b90803afde7b1792469fcb8b847e5f8383240e45fb95ec583f6687455d68893214003521a99e92006f6d3d14bc4e796d8e5cb410b7ba1f4e4b61e634a5dd524678e14d4cc700cd4cebe292779c770bb0fc4df4d8987b31a9d06d67c7020351b04193dc898a78ff62e6153dc1e1940e09c0e74e785feb603a72b753865bf50b91400774b4ae820c0812b240862c18684d50aa448058cd7a352d1217267d964fa1df5e0551b36c339fe2b75e98c95d04534f8932e4c355168ac380ca0d9c2dc7c2a55fe78fc215c9f8f07153f9e37a9ccf8e2315e2f539fa324b5dc64a53429d687432fed97993ed95c95da63665ff15dd0b02824fc82603eddb2a98a245c9c0c7f5594c400bf52af8b360dd9dd199bf0b08636695c1386fb2d1ff8f03f9a04678e8bbdd007853f03de5bcc4e56780c243363b4003ef6c40cb72a66de47fe36dcbe48d48a86c548875e23b298c981c4088d70840416ddaf905a6bef572bfec4ec71695d408b66d99b6399bf73089a7ab0403b0a9acd9133e71fb61d78e92ad170c0228d64f3f69037aef64590d4d74f4f5f9a6c6e980fdc029f7a73d1402015adcd1ef82aa96b5eedf889cf49ca28c08c50e2403c1b8518fd77a75aeae612d650d17dede1c0be3ea6f3aacdd47dc4c59ed3045d6b1fd9ac12f3bf374363fc0b0edc839f2903a967ad3a7e2e876426e8856659bcc2143e0bd451e4f5ee5d98f70c067e26f555d51feb22d1d648bf5dc016f2336f357c32fb78a54e94af86206d3da894bd24c3a9c5015b0331b653ee4e82e5179a927a7f4e6bffcb76029f12a7c55e8b4a6d8fb20ea8ff9a6491d5eee5f5bece7551aaea84c9b144626ee0c169e5c2b27903e32fa54b38e8720d8b0ba59cfe2b2143f8902d0f1390498a9710b2d447b557b4b628b6afc5e179f68c3645cf3d675bcef6a0ab1adf978b04bb3a55d501a38d2de8e86977fb7321ffa72fa631e0f931ddcdef2916bc3ab4c52b8576ab44b24bac0a33b04989f06c1cc719a17c9a0fc8927e4b712194b3a3c8e3440ada3eb228d43f8a22bd84fa478757658b534c8b1473e3cfcde672b3bfb90c787c3db7c4b4d45d6362610ac23c46641a3b50f3bd29b5461ed27649a62f2c2434366226bf2da8b1dd73ee5763ae7bc367bd4222601fc43b2f35f39f2221b0f9e5ec133566b30bc12b3a5f8a9755b30ccd9bd039c71ee417cabcf4062f9084f17ac0ee47fa933044f54015dfedf79570758aaa2c8f79490080bdd9e832a89e7d6b647ef2e45389988f7e0c07b375dfde94a5ccf751bb1118f2a86f4cfcbf8cb56873e6d3176a5a380ef300a95fc6ea425af91b2585b5299d8469698a37f047637bd5388f13175b5598dd8b4a6ba1e18921cfce61cdcd1b260ad48671e743166d5d626ab1a7f30c7051c7da61c49f6eed9263cc20bf60c379c58ca2ba7bc1b61963ee638a3a90132674733527c2f15dda6d8f8285b944f75868131829464df091d50865e84da094086b6ccf03ae2f6acda028fab72c7fa3e62b5a235913f7e15735700c463e5b963f828a5e0335c5d5741117dc26bd515d20ca06a4e24bddd22f62fe8d4c2fdb8483a2a7ce187023d3301af06ae89648ec7e1089d3dd32245a81ef4de8f31b899024f6ca0ec42fa8397d428ca958630b91de2616778523a7f222657fca43e3b29e6431b3df1f5535080eec68b45c01b5163179198861b83443f33f90bd1ff61888bbfb6367234dd3fd039a8d5385ef1f35d385d4ed6ab02e217762cfcb143b7aa892e2e2249c4d9d641c6a0236ea0fdf529465f8cb530d814ae9e0d884576e9421641aa8a62093e5e8a1e1016b0146c9307e702ed43f97fe7218b2e632386c80d90c5c76ab2cee1d32823b108284b538e4d6f42e1f5e61b2586a7d7e1a0d33322f93b96b78fc4c9d3917e66d0170a205b27f10fd2621d370ef2a8ee63e9f170637ec124d3dbd07dbfbab15c06fd4750c0c2199261468c45fc0c972671cff436fad00f113d6c576343ba2944364a48ee27f79a0b0e4223fe2c8aea1a1c6ebb90067590db1b867d4c285b7e341300f256d2a1a4427cbf7470f8d3a19447317fe3a4dd9120761510d1dccfb6137bda81e4f2a4346ad0b07005098cb25a428f18154cce0125d74b224ee5fa7dd45077f64a88c3662906b6eaa6f51e52f58c15782fcae78009d49e44646bc647b27b48623654d916300f0e334f0c978385b878a887afe04483c09303cf44dcf0688a0130a726db1d278529d0d289f9814c24b1ee4890819965f9a44f85a64c79c8124d4af136e7e346355f8119f4cfe1ebf91380d1a1476de074ee6c9e9cbfef1d184b0c104bde675e4994c1e2fb0cbc0c3ca83cc67810d004a7c3476a1ea155f066affb8e9bbe9dfb94520e2e3113a4a5d8f82d152321a12ca970a7b739a3c908075d6ca8d141300d279d9c9c35f6accc451c62c1a90dce90ac2db09c870c9d7b10f948968b987e0699a26a075b18f0bb9df8e0313a0cd2bb8bd85b95f20f8af012ded803875b7f31d96b26eecb35a75afe2415c35af14c75516e845995773d9e7e679de40b44ef818e5551dd1b379d2ba637a99c498d04329b71bdf25404c5ed43389ae36fd5fe0b56adadb678cf555544caf2316df3f6e8617878be6e4983eac3d9dc66346911a04dbd716d2a8b9d2dc87b1b548842fcb4885af717b6c6c138126e674b2e48905ffaaebed6caf045e98addb16d2c937577437d1f499fc01a93c3cc60b06d101cb77ffadc049ffd77cd88cf491da4a24b3e18e62c3251cbaf5ffdbeadaaf33459dd2814d2244de726ef896ade1d9e3c8535a47a501336300484b1d80689e825d8b7595e262e21c388a9dc09b33e685f62d8b7653012edc7e58339e5cdfe27842716e216fe87748b921876482ae25742367aaa919f3af8576a52d069883a1aea48932415787bc088493f19272f7c2e7f4e530693d893a5360bd6431f43cfb067bd57781f2fc3ce301acfd21829713d9acbead1fddfaa4eb2720dcd91ac6fe6c131740bb9f11a0c01a7486099002bf5926402b043627d0c16d2be2132c0a4dad1ee4dcc1f7bde38b274f17f253174146d99b80a374a968b4c29acea574c67dda5555074980d00471c335f593f5303669e3cb7e2dbaea5bd3e3bb1739c6284439913d9930b06047e6201569a4c9e51e707590cd4b3380419c77183b8da7a0048082d371bcf40a3c5787f5806f512e05d943b5c8bd11c5c60fb4e2e9573a05aaab71d85f77574e079e438672c954f4d512fb590abc830c6b21773cd4e6e5e3dca663ed7b10e0c2825bd31f3d0b1559ebbe2b91544ccde9b9dc8173b60759f0fda1901a652ac84b10e5f149ab4b980462c00da4c3400f9ecbe839cacc077dece50cdde95a3de029ab341141519a862aa23d8def3e441d55e6daa880cd1637cb64a263f2f8ff0aef7f10ccc5863607099d73e167ae69e3958ab31ad21d3843fd0a91653cea72624a23026bd5c8fcdcc5679700e6962a4d7d0dbfdc86afd30f5a5d9c97eadc3414c5f0a32fc9c6a31af2247317461e0f91a318e275f9ba7ac504a7dbb057c3e220967817bf3f6e443ea43ed395d33c7e44f95522f7ca0e42b6bba4362cae02a98c286d13380984f5a3921578c0282bb60b2e39b5f7624aeda2303c8d58c461a66a77be082d29fe5d00cc2443f3a086909d2744ee483aee35c08073d7852caad0b53dfd94c409626f86b3601d5650c0e5f1fe4153685bfb7c0e11de1a637606201c4cb00dba7a49a7d913e5aecb8c1be301525e4fd577125146adfb8da765b95ff8991c55556ce48010b0e52d3f765a31308d401647363156240609193fe8227bc747755fadea803baa34511eee839a98444a691bfeabb5e2b5035d705e792eacf75083869c39f60c69ce8372e864ebc2552f70bf7e1d317285b8c26da6ffdcc69b8ac7ca90da668efbee62ec2d388c7731577f8ff5f419cb9d45662544c3b0d29cadcf085c1dd720f314ec34075bdfc58cfff5a49fef7624609af02f5c0bcea3a86e8d44bc5696ce0b4ab369a1cc20401b368e5264e49a89fea028c1cea4b969dd0cf0942bbed8516cd6eee8ce57d67507907e3f3d753b533e5fdd02edfc17d4d4f840a2f20fc5d6d2fa31af13230906067b8660ea6f892fe7c3404d685f8d1581bc1c8691f616a278ff62e2fd7e7e601a69412f04ff43d1ff1e34f4191d63f5b3f069c9fcf0b081e9f9d1091d845e6c6620960ec0bc4ee28b6f2b8510920d5ab5eb012b7f55434e4f8959c902dc015317444fa4bbe45f38bb05789d4978ba94e49752c9692fffba2c3f8f845e5646bc11e3c7c8764080721e6054e535bb9a4ca6c833d51c44250d4933913576615332f25a7212e6eb4d7a1708cd1ce9e7fae5e428cc422abc26af33aae33f92fc8af2b5ae5e5d9298d08b95de9c11547a1c65014e495d96509249c0da918c37c60c9a07f414808a5e23a0dff55d188df0e1a04fa7d13970b9a48fc8d58f72691af4c80d20d5360a8e24e09fc76f89b888942216d788572c63dd4646fc0d32bc4c8a59a9cf0b7ad1666510606539c94615e3ffed12d62d21cc6876d0e75feb23db98d86976f30355ae92403336bf398911348523273875421628bd6fa76ca8908b5e672041988e0c12ccd8cee22c29fb4a85368971b4d42dc7eb2e05e2873a1de9fe58ab60460277d7614ff0e0d3446f23703160a718f4ee8638f28e7a6b35063073cb49f2d941c693e27efe73aaff2ced411bcb5c310fd16cf38823ada7b8cb916b2072e2ef4d2f6d96948bb4f93aea8fb69443c2e07c6fef136c7b510d1fc7f7039d01957e19e00a958c0a3c768d9c5bcdc3eff9688d5b66b8d7de069c75a29790f82012ed271ac79282408cbf0c6c4f352d554e2bb5e9a574820bc05d76a9713da7e609c400cfc748c81db9b83cf66273c80f37bd6859dccf69f2154696c0b5a38c6d8b30aaa989941da28a0b2162d2359026a5e8ac6be8fd3a0b819efc44e6b7105c436e0a6f89f1022a7c304d1c2622917b0d59b3283d903ed318a8346308be767cc5491c72b17205b8aac7a7c5833beec7a7b0c0339f4ef0361bf7aaed9a0e420273b3015309c3e4c8118b0f894165c0dd3c130bdeb0bf11f91fd1876524fce54a064dbb980cc47568b098c7178eb1a247b3f515db2ee5248b64a7b85b224758ee3d166d7533057327e1d818b470b8e13b94765dff154e12d51c992c0842a05fe9cdf10b7ab04ce40d3f50bb4ff254609da8c40875aab841c17cfff1ba90d203e083f3f46b8d78fa4ff24646ab2af319cab8f4caf7fb7ff798251814c09cf6d5e695dee0e3b3633dc528d3d1b0f058fea6d7e5b8d48fec68f90bc4db853fe4ce1ad504e6430ac03c81848483aeae376673d87ef830ae2870e486662693a1d8b217a67d6d7ade9766bd94fc8a063d70201e086366216f5fa094cc9815d9ad4233bf56989eecfb6b5ee1ad1072f5e754d5d884465c092d8b73ab4285dece5e0a9dc7307ba0c6fc68f5ef1ceddc3ca798454a3ee0c54c2814181fcbb553c92865473597cbc44b5680f1914b268326f1f60382ec829204a7e457b393403878f519388add8e2e6a3f0683d2223623856317aa5828537871a2a21cf97057f7355c17e93adf3872dc5922cf9b066d278bd11d7ae3c3a8f8d4d8339a35834e2f8c7e030e391fd9a00975cb186ffee56443a3159655cf507a87e66e756445f81a12ab3e7beb6d109bf08abd5c6d2ac39782affec0deea5014487ccd0c78975c38deb497360570d484299d51627eba522feb19f36cd5065d5fae0edd9b69fe050c4df293329d43de06a9536d56d5ddad163e99c93a7e484425065c563821e8c13cd9cfd7b92f8e6b2fa262bab6676e9963ff9117fbfbb846f0ffc68a8033159e7ed81bf27756fe81a7751c3d18422d9bfd92d1b31b707eaa70cc8194193de30c0291c106d7a3dceaeb4f9d880f7938635ad40e3d9623ce7a3ecb175d0374ac28f04531572d1ac91377e9c2f5f543e125b0472acbab43f87772432b0ca5e4f64ca7e7e7fd84fedc07dc8dffa766715320fb5adca86373b2b19e4ecee975c15aba6c9a7322c559442ed3265df14f86556321f722830ac02d2e8565bc3ff5a951b9e30389d924a4d4c5d58aea2fcb61ea884ce5cf295fa9108e56f29ccbc66e59dc101f9d73dc4c51e4daee0a3608d3c09f8d3d66f567bded95ee9b4bffd09b0c69127797b25524ee02d03196f45aac48782e253298d4732fb0fd1a33919035d4856aac3b0207f0a4956ca9f84410c27ed1e7d184444cfadb1c7d2c195b180b9500eca9b3f85e31c10c0627cdbd013fb9e7a8ef69bb41d58bfb888b08cda528dc664ace6ca9f686f19bd3a355c5972113458110463bd46afa3c5ac3628a6f83a98c5b401ef2d791d6b522ea821dea7dd5882ad891293db45779ff8ad972aa478b7c085a09408e34fc3e2d84987134edcf1267149a29c6f70de5fae53b6fd6e779964324388720864940d9df2d055a6e0567fd33bf2fe123a02a0e420b459f5b2dab92b2437d41f033b44f00535a26f9b46ee3c407db1c1a3112b7778ac209afb682ba1357875ec8d5a59f42958c0f2f76e6238cbf00d2bdc17a5da1a73dadce421941a414804a706ce957f898b3410f6f03d7753d27d99ea7622dde3d3612995b02f8f97ed91a7adb19c857b8b933677545d718f9feb3472a254b93b5148c8d902565ceb44cfa2504ea8d8bf812a231c25a675b032e66a41ab962bdbc332b903555901a392a9a1e8c9716a241cb6dfebdd3eab01688a07c9aa5ca4b0beab772ec5b716e6be5c820a60c99a559fc8bdf0f79a4d0e8a78dd0ebb73fecab92a575ed8a1fa4da3203d9f4a09ad6b910eaeffb2c860ac6a6042c44dbeba2136efd3e29cb2567a1a804c31054728827d1203bd9aa679f10c075ccbb76b059fd293dbba4e5558eefa03918efd37ab38704040e515f8f4c16c0b71cc67eb377e78c858b14a8ba7b562dfdf707c82a0ffbe71a5b38e80dd8063293e2b7b84c5c3a433b4e442cfdb1e4ce69add5c13e7a6b6aff55332a050905704b281837f907d3da2cf85acab6b4171f9e273495ec6321adef5a0a8a2394e74fd78ecc7134b065d26f9f1ea484f5cafc16dbccaf6fef8d0876fcc4e3faaaca1f6dc45e9f82166b4191180626a59df418c042319803a9cda6c254eed4ce886893325bca3b030586ee4f48c788de656388dac698150f6aa41df88dac03dc9f288e223571c3a754d55346b85ea59f84b005285a2d447fd0161e642f892072c7d47920f0433086a270a69ff62eabfd9a12868a41f37ae464e9288f04171116ef50ca20d663a8716e77f8a5adcb380f4658f85c79bc6320353c870b9b10401941ffc9889eda28a5a9236cae589d454d9e42f3ae8e2e85572c3ae8ee1611a64ed6de889ce5c0707be627260194219e6630e5da880fbc73e15fcfa81c9c2d97da169381bdf9b4e447f63ea047b8a38db9ae4c2e91abbd7afff9b8d1b27a24b36b7136fa58dbc8a484dd1b04edd1bc3b48565923b610b2edad4e65628be262aef83f35363b4f923f179df99d2c374a2b95873c02fca826ea286d8afdaed064dfa55bd3ef45ea11cde67cc9a988526de9319a66d9df6b6dbff1eec6eec62f7b0b4bf827556239b311308cd279092a11c3609bc83036d8ed7096c462a7dee5a03a552dc1bca550bed7c7e9dc4b1138b5afb9d32f33cca7fa2b7d30006294d7e2e8cf4b167b3cf61e43d95a56dae9cf040af200f8c437e67d1645ddbd9e38f0f62816d8aea4420061419c16028486d913c0c70080e7cf3cf6501c7a7fa3a9613fa25ed840ae004d0a922b45b7fde8bb5ca35abdec9b9261a31d8ae9a256c62379ee522787bfa1effa29921a43314c227bf8a025fed7dd21ec942ec3bfee6ebfee13f9d9b2a7dc664792c0f372b21075c11f9e1208cabe7a2a99d70d60af2bcd7e145687874b3a67ec41dd4ceb6bc2970d9091b9ab1490c86105802d8da93fb425e41b184774eb0c06c296bfe20b8c2fba6ef7dcb3f23c7e0f42b5efeb352d96e2b95bce9d4b1e5c7c975fc9a2ff0484b48b3d9f250feeaf3e2853e73c8d6640ca63769daf6232fb8c64679f564030ada0041f0841cdb842b407c6d4eaa324f7eecc4a134f8c56b0693969a424a117ef05bfb259a24a55056a8009654bdba1c7e99a5ae3561170fc53a1da2478bae7c6319f272f693a23a8e5e081b20ecc237cfada4c5019eb3e080e1ca586cc5f8cef5f023a68858cc2235b77755b7954f7cb51333daf947dc96c36515900853635194b43dc87eb8e93b306b1ad97cf005bf5a63a8ec37b2f1a8f603926b6066f8a307a54919b6814783c332cfc2b0c6860b5770bcdc36749299c95e90a3c0b578a3c386f26e0d35c9a9eec1346644dde9c430379073871bc4d9e6de0f6b8f4c82d6529319b5fb8a8d951261d7ca1628852e5edf358ba8542cb034b8a4b92a8373385cd105fcf83f7709f0ad465e3dc9550b800e843b0000a35979beea95693137768894017c29e3170aa7a2ecfa73ab8ade98857c46802b17d8af0f79788655e8fb19c027ff448d7128153a490440e53ff69d2669bf7da9b5ac73997619c13d4ca7d0bfaf21e61c22c37b14a999bfdfe7c02b981e054eab9258d44642a8d6ed8f126b712e25996dbe2901124c6064d46bf72ad48933eec341af20c83db2d3b806d65003f5f743021de5f668e8d2338fe402d8df7fe2199353e7bb3d0572242072df7f98a0469d1315fc9903f68356d6aeec08a6caddbe949b2d24196c8192eaf7c493973be0707ca96905504c47cd9dedfcad6d1cf425a1f5c03e0177efd79cdd6d2024c94d8d3047d37774181bc7910f3e0b4d8eafc5a051e07e49acbe1fa4a93418bbab7faf92e900f328c9b1233e6d145631c57bbd36a6f74287a98c94eb18f3b1f30d0d4d30b995b24dbc257efd7d9e3b8c953384af4166ce9f2d8413342b0ddcf337c017f5219273bac7857432370f3491a71a42e0d933775b2bcc727913cd7b0d1d4fa67dbdfdb01b965971cf931dbf609c6d87599319d1002243d828f45a43c027e4ccd4b1fce0bbc7ccf3bde4823378263b2876da5485f166fcdc88a5474380f17de429315cfdddad3a9965f08a3e6f273ebde0853fdeec9df081b6f08bdf6240d96464f83e2284f1f1d7822293dd60bd1d9fffd97c46b43c4667ff8262652b541eb74e0313042ea498304d3f29a539d1242fa1a7a1f1737ef86f4cdf1c578e623c3fee5dfa2e2cf6e028a01ce2375a9952a123018590b15390714a6f5bbe23bd801711c5d43ea61f026a062384e7900586e8f0fef39a9d90d978b34e607657040291717c2e327ce5699159118f1e47f37eb28015444f3a66a1bcfc33164263e09e3f6771dbb47882da54a9211bf5c6d1bd0050c6684621dad7efa97016fa1f77b6e0364373631b4f021f03cd08cf84ac1445cf3367224cf855dc49a5671a864ce4a8a17864551be32ecc5c2b857f8ef894277f260af8616f14a75c5660c184214fd3f5217bf87c57e9beb55d165d944f286ece60c45d9c3283809d34580806af98faef4e992c4e4a5e35d0b1ea446c72bd21a9d3826c6ef55e80f470f2c7dedaffd60c25c2179ce2a11ee42df23f822812c378e7b146ffd0448429a2421d6db7c750e6c06e927d7f24a95ec297e59f9706718e3298968cdb2cf6299b011ec505015a8afb9a10261674fa15d764022d1541b13449d7553af27c888343f91c3e912e24b1ef426917159daf8dbe57e1bf8278d71767432f366369f9aeedea0c18f2c56871b3e9e5c0f10677bc5ac394f291cbdd66586da4390ec04a4a3e0fcb6fd37ec5e204991de8d36c727dfd0f8c1f2300b508801758e38034454cb7f9dacbe2db4712472aedacc5439617062262280cb3d0bce1eb774905605ab9f75000ac79fe54434fd125f95915f8161f465db50d97f776a003312f0faf1955878b5ced8e4444cf082f2cf8efc0d5ebb711649cf58aa5337ee35d897986bef3a917db8c1ac6381ff42e275488ff4b8cb51a22078ed816e14552e47b04eabd3f88cf3db218d5f6bd38409edf087e23ad163939b45a9afc92d52e78e6c1296a006a37ebfe710a1fa87c0b7d7d4024681106e66435fa6cf512553e0e67def1fc0360fa932d394c8f9c3636c49bac7d534b92cc5e3eae71348294418dce7875c9aabda4e8e669690c69d2031ed90b667d9383229e92dcb69a281c6138cbe2698788e0ff39ecb751182dba00cdb1d347c0da75e29257d4c514980aed29dadca2d2ae194352d25195be6cdf721b355f72a388e810fe105c16e0aa3355512d905180ea3033e7747a75b807d5380ccf1095a61bc1b313078eac9cafe267782c31c9b61718d98bc18184a76087850fa1b8da4f6a23395ea9c3a46de34427b2d27cb93b0100a6bc1a3a22e91e048d93e5e6e1ff597b305527be9bd74a0e9b8edb1bf253b2a77adb35c095030e73bb604ae26a10a50b47120c5f93844674aad06e2b1ec428224fe3e27ac66d87a7dc16bf6fb3d92a347c0511c14eb0c26f00a6d5d0c86653781fd9ca447c04fdcf3a0694f06e9bbd59a27a41ee0bedfe954a81c6870a957e52e3c1279e5d32a178cd14404730bd9568f755382c51a8b01b332b78ac6f6ae50daced1168f6eefc7694646766b69225c809ca499f781f4eee3c0e4290d346873f75763b240a8f82c92705a14d05cc97475bdb0b0220775f97258795f9cf0945a3eb4e361bf1703bb5f1c73bc70c67ddf85efdc05b51c6d1037cd23a79e137bf86cbdbf1b07396cdede01ab4137ae022a9499b3d9a008cdb48c1274cac6a57fb10729ba9c4fb164659aede39ca1f82a5d474acd07aa1de952f863a585d4799c0e7e7b27bb217f102cfe1477bf27cc02e6f627f0cbd2edb5f2a29325acfdacd6455c4bb6753fe93cd2f9c2a1352c1b543fea0a8d8af738c705b2e41aec52e0917a923432d51d883060d2b71bea2963048a08ce748aeb9dc8684a11c4d16527831f5c8c3bb48f6200ac8da0a6ef5d3eb785bdc18ad75370d6685647a5cfb42fb95c6ce904b3280391cba26968a73f3cd99c95db3939ebc744a50c8e888156081a5af357d9794f446ddd21406812bbb1b008376ca854b75290eb1205ad509c2e88ee0460aadd54671e4276d658bcd2f8e6f19b4a6f86e4e69f9256e3e383a09a28663dd73de55ab47796ed7ee69dc159a4b3413d9804fe9476baa23954a826ef03776872d558e6e3c8f06257eaba1ef7a2e0609f75105b365d62dd773f5fd3c800486cf4a89e81ddca42db5b67f9c0a32ebb089920c8ac3d05bec8859e38338b5294613fbd0a8396bb736500d6c97bb34e3d3a84a60f423e82a6308f55eb0a2c31e602115b990de8dde140b2c65d79060683ac18ab4a2be00b334a5a3fc0ca8e732e8a1767bfd9048be17ebb9c183748944413a0fc8181fa21240119b876cb4f499a37dd16b7fbf3327e11d1133535682d9426f0cb33f257b8025ec6f83f597c4ee8dd4016b323221cdfe0482fc1aeb0eb12f7dc30ca57dcaee232cee6f7143a8f6181d8785037fe1aed20292349a528122e54c1c0071513f08cd457effbe011b61c72664d66b56e055b4f04d939f38afc6d401384d11cc1597352d4fbd32c02ac9d790397071f1922204083af9d7c369e63196e4e8206b455525f1b8a51773dc943f92f54d3768243d3dfb830db0157d140c773e31fbe72352a3647ecfc6745f4f209a810856ed7836115dec257d7cf5a72066def27f7079bf7888c3830d16cc3012a14df93e006a2146f7abc390ef6beeae1bd8f583c29aa0d8fb035fed1b4d8b7e948494ccb25bbc3ef6075fd6c3a06258012a7190a0ed825aaf2bc6989d8062bde3eda1b2c7922c87c5c5c2ac370e2e0a126ff258e6a583c74fdcc733cd6e85e685ebc4318ae31947fac196bbed42bae2613f63015d0496aac85cea6bbdfa1bd2b8f49c87819066ee3e8a37ba7fd60838295e8426b30c958ad00cde15c203d98e9ff354d32f394ef88e5febecae3701be5d1752161b18594e4a7d1dc018de6d19f0d4f63aa5de7e0a1a1d7f05781e5ddba1bf47b38b012a2b61abb5e8dcde199b4785b20e142bbc7cca5e093af61263850e83627e0ea7e77e6bf86d8db3673ebe9d834af64c90318a1dae391371be37747066b74be296680c0d6d46e0f0f6c047eb1feb29f2b90154488a6758ee8bb7867c2de0b8c42684d7cd3c330456b3bc1522d9e601a14c43d9e54ef630bbbd41309c41caca4a821f7f4cf53aede3edc9a0da61c7e1445d829cb139f099c97dbb1200f6d68fadad0d9df6083f8f9dab5dc66cc9485709491e1969f01f06dabe350e85d3046e797e61cf8d5648ccf0a8cd5a1d4660c219f91c2028d74eb5210d157755df8a418ae18c2f65dfae696b0660e9f99e79be4fc1400cc0c01e5b998f50dc8ceb8f414d97274c05fd736adbe266d628b75c78fde6fcba852ac7afb30abafd856c9582dbda88a4118a3d9bff8364614aeffb607c4e2e480fd4cc9be8f8b53138b03c5676346dd8a6c631afa3551913eb65c02d2467ead141621b40d7061894310dfb9814c18fc99dcc4ec03cc10552a32f7e7a5e9e05c5aa2685deecd1e0cfe23e220c52109ad4c3ac279fb97fd3e2687e5baf3d0ddbdd263a846773d6bda99ea9e5b41ac7fc504f990bb5a8f940a2e6a39b714eacde96730d36c8df8a9b83174dabae125d75dd35aa4f40610c58158072436a6aca4f98f51d6f2d50304bec2b4fa24bedaf35bc3a7a092c01749fcc38c7cd54fb73b7eee5677e7f9bd9a77af038371c47b35ea77899446ceb0f4eb1cf26be0b1ff518d1267feb8e00d84be479bdf16792040271aa4bde216387db4e1a8bb3b8872340a310ed79653b02d2f0c0cf7b20e187b3eb677c8a2411cbbe8e099164468b082e84b30d32391dcd18cc5448ab7ea8052a28f201d5dfa7f9c7a6953a6b43634b934566c87e765762a2e5e41fda5d0cd59faf77c0310d5f02507b770c7964462732c0c41095f859d01adc73d06c3af101ccf7456714dc10dee253144aab08528234ec3ad677c809f6fdbd55e12ea16d6dfcb98cc2b774033f7288f618491adcb8b7c85ce6bec34be776022bd73806500fa0cebbbf1ad407d2df8cc980806cbb6f0ca8ad05e8dde987692e318c1704d389b7f8d86c11c96c65a72c642578ec95766b4a7aa450a6b16a6dbd269119710e5a13951b0921739c4cdf756c0de7490344d12c3605f2ce5008222c6c052660521f78fae4453c3dd3c7bcdf1bfba31e75a01382e1f6cbbac7a09c40d7a77a87a1078ec5b8d0d81d5c9065453a36857ead8d1d934352fcc3de06c7b04a307b9d8157adacbc9738e68221d0fa4db9174ef9d57e2efd1ce9ad097c245ecf1e17b24017f18458560c8c6f4446004b7024489c5465c66709c648e06dffd0be8eb4a450321ef87b2aba9eb613dddd3514025484cc1195677003bdfbcb55f7923e121743e4b9c33903f3c88ed8b25a99f2066ca5d60b8bfa3f1a3ce1df20c245b3cf0d5165f2dda9a368d94e667c246788e5ea79f6195b0e8fc34d8baee5153a2a9b9811dd3a1ebfdb8985318844a3b7d3e8e78bea326ad6b2b1c46a0ce106fabf1af054a4e63b34803d5762269c105235e6521273f8705a1cdeeff0b18487dbbe7b8288486ebed2704fc169482ed4aa663f20a08adfb65afc0b3a6f7462774f411489478757d9f90f50d095b7aea5bb777ed29cfa2f5db1515cfcf13a40248f800db8a19380ac94ff159b1184daaab70e9858477297233b3b0efc37c8e11a99762876d5d97c2c13b7455442bd8d7e8a5241169b9536a37408190dcfc82dda4df4dbde7006bc7d134543e4c0e841f5e0c0e471a31580fc4674d8899fba1eaae6dd887f97c46dad5321866c58bd4998b0d5cf145c1016876a876c520e28c855a3c62816b73101c96b0bed8c2b591fa76cea12f5ea13a763fbc5c11c399a8a0fbe05ec1e7fbc062a89da07c9c8bcba110f8c3cbc9ac182bf3e96ca4851f7c534cb93e8a8030595b887a38fdb31f1d3ab53d9501324ec8bda4f9ff2c5e2aaa9eea923473f3ed30c4f692ba46a763c56ee5bda4fa6fdd6aef1dce407d7ab120c4cbd8cd3315bddaacca659dd571c1443e9c6f6f246af5fbfbe1eb362fb5ba4cd8fe13acf9c2e57299581b99b324b52be1057212b927c5e919f3164de1690d620a7de6e6777b6067ef23e09fd8b3cc38587d6f301985f1a2671140b7529d61f4608307ea3c291752fa1da899c38b651f349f2f32844a3fd4164889129251a0fe28425fa550bf9f3b4b6a08bea1ac8c66fad692bd73fd9d2d8ad03da912ab66398c83501305eb06ff6492eec10ac861d49e20a6337f1c834ba0650ac99a511d7d3be6447d19c892b890049dd22742c54e41ffb38d48cf680a8fc38d7239f76dfa4ffd975e8c83c6d127ba973ca89dc57065f4b68184d8d68745c66c5faa837fae65a6d9c1f4230520a198879fd2c9f544b7c71a3d30194f63d8b4a4d4c25a35c01e21250802eba95abb2a2b8080f6a849a7e9a5bdb958e41ebd07b743270c42d4da4cb6a63cc6ca916c38f20137dc43d4843168bc226cd5d0f2a2d0786a775b002b738c968db5591013624b1d6e125259703f6832312f9b99fc912f637be31c40f334622f9abadef4ecca0b269fc3fcdb6db3cb24ba4edf956a998bde7edbee30c20b7894c7ac9586f83ca059f617cf7af2aebcafb98fcbe89f97ad417fac8b97591c0f4c9ac5c3a4fc3adbe966af42b88661baa35029114e4699d7be833bf70047773a54d7709dc1e5f47bd240990d440b04455de428f10c3bf1efbcdc4c57f4d41620ccced543d3276cffef76b607f6a0ac6b39cdd20c61e64fe407392c07c4b62af71452456c1a246597ec5918fb9363ea74671a1739e8dcd1b4495423166407708492dec18140883e057586e66198fec3845acf9f86eac02535303728643ecab160b35e89406ecfc889cadf8121d597813887bc5312b55e03359359ab821febcb5c2a3d00cd1766b4d787528dbed9ab486cef724090f85d031bccfc300e607779691fcb8ce57d5faaa6bc86bada9d1e055d6664eed81dce342971eebe59c4f15b2ebf69b371117951f8a78f0e0b7e5250e91287a1be0f8b83a91322af7b70f550c90b37cdd641016c2506ca0e3917914c15eb1913d24dcac4e8321bf8a6662b0e1c1764dca168d2173e57b2aeca716350bd0020d1608419c0a334cf35fc0b91f7e71dd656738d467f65df615f54bbd76f9bbef83166fc10716d67462e39c447d76fc0fe6706fc469007d4552a3511011bd58268259c3a5aeabcbf183e2bf423e3c89226a41ee37752e95e3180232794f7b3e5d6bd142d86c5633174107c379c2bf7289d750821fc69a14be661803859d8b3469ac7f8c090684531818cfa78b75318fb7dd02f4dbbdf050ff3eecb767874ddbbe69cef05a0ddbdd7d215035e21b15b5a9e7d2f82dce8286b4f97ba413251d98e1147bac958c0844c0a7a84bb82fc5e91d37daebfc250c05bd3d8077706eabdc3a94134e3448913dfd603245e5fed28b588e77fe82002e9dca3a34c0bf09fcd1c39e801b80be978b2014438fea19bd13955d380cc9d3b8d590589682e8dd667033698330af5e320abfc2e541313fcc98aed21d3372fb0f7df5f58886bdbcc7ed4921eecc221dc54972d3aeaa84c82aafd059b1734ee459db5359e846c65f8c32a952f8af5ad93abb85bde0a08d625538a2beabbb120f621dd3a4c4aa13a58b7a400e88e2854e778cc732307da5e2fb7089607126c014bb3b4a4a47c3e90e19b95bcca019de8983f5b90723f2b14bc19cf5c4e9e16899d6548ad6978c4b175ebd461989573e9a15c0e0f27f044067f585c3db2defeee5b779b0ed6806c0bb22f007acbd7bc60b3934aec89bc9c1cda1d4010dcd5e93a5874f71284f8f6d76b84ecb0af17ea03303741774512172000b3f81c7461ac154262639218fae4ac7e9b9c313502419f89871b332b761ed05c0dc24dccb9b5ec298c28813ddc51c286e537379b64d7417bed1d3ceecc630700d94bdb2079a5c2328ac8d32caf77bbf1c1ba6ef7802116cd09e806e067a9117f273430da80836f90589843b5bda5dd5dd2222d07f7ade7786a756c32ab12982dafffe580b7710897b9741710175efc3aac3b1169142186cf517a4bf557126ad07c49df8c700bf6e61075adc0cdc1483c9077cd61a539b861b686cfbfbb760d22a8becd7c5bc82565f471a43804bed8842096ae31f42a0212e02f7997a31f940e03b66d31c1bbfeaa8a68f34392ceeb0201ee465e35af169e33162b9711b11fa4295696b226a68715eb8fbce2809564c077dc94478d605888593efaf2b1b1b243498e6fa8a6401cc0c2e7bc53b4789b01cc1f5ddbb7e19f83629c3b894a5b560545551306821b22c2d277105ed35b00af463bd8fe7ed95cb075bd7cce61083fb08d91c47fce0883f18636727b13871456c33bcb3b49a8a9af281d388ec0b01a3c5aebe58ec11e4144a54a1ad732bf31a118e4ce0f96a3f7b0a78f6f2d7654a5cb231726c45404a52efcaf822e99732f5a29e8b9319160e809eaeb0bcb8dd659cdfd83454e071e26e75b18b5348390aa684bed1d6618beb693ed28fc496a8deeb99c3c4226675f7317c083dadfe5e472cae707de44d8e25ad193e29aef8d966f3d72ea07529292909c0a8fddcc1a0baf803a11bb5a49931046c80703fb4a68b970c102f5389e45e54bdf69264b821340d866775116936658d685e9b7aa441faf6c137786be9724dedf5d67f2e565e9d51fdca04902b617f36b89aed2c5bf5e598175704e2fa3d12b2349e80484487ac548eff4377f415170bc5f9492ccf0390baff6501f607b76f508d870bd9757c3fe12611bf699037a5751d0a9107b484b14995c5b031fb95b6a5689c4f8be914418fba38ec15202ec1b15d9d24de494c8762653f27bd49aee408028cda9a6bf4404dde5f7df9481a5a37407422b2a91769174e7209bcac187ea8d5f57e36e27963c50a921a4ffe98ee88c9e08c7f21027bcc974a2776fe9f83889f6b07979ec026d50ba1f7d2d0280722db26093eff2c5a8968c0ce2d158dc56d0842c0c17042ffcaa030192117577d232ca880643fbe57826c933a08a34967fa1e0c3081cec7dc7f3f76d1222c0550c482f172f26c4f2518da3417d1b3bcdf7f057d0b719bb300fb1b7477778f1bc5142e2844de89715be87b17e2519a4280cf2d04030132d2a01e6d28319ac49084fe57d53cea7005c7f73553022291945a40f9e3f347c8e298584979cb6ed7f03a566f8e624509ca52c99cb39c47e40fba2b9a1e103861369e0631480eff503829d322ba66c5d613aec170bc8e03d33f00137e863048324bf27e3a3476c822f4f479e69b11b7f7f98cc89288db465ddee8364e327205be185a6c8ce4bd3a3b9c680cc469be6a9c02e7ef55c1694ff3b237aa087cb88cb7b5e8a0cfb1e9c912c20090f0b4218fce1040b9a84372fcda210e5e00732cae4a752c6b246defd24b8db27763554eb6179085cbde35ce84c6dbf3e4f91ce4dba53f6344fef08c45f8c76322485a7ac0e5fb052729ac5ac25e6ca26d99dfda64cab8a9ab30626269126e0e344bb0e1a401e67806dc9792b245edce7908b27caf2065f143e0ece8f7bd30e22ea4d73f0d63b216b8898b121d828a917bd16c0bd74aa00f995c85a1f55b24eb70b9cc15965ed98c03b78212a836de9acc77b294584fa31c3437835ef4a639b853b8896a7a703621d53420cc0f890095b70ca8c07370fdd079deccac36bfd18547d52c4bcefb49de483a125fae3e4970c2d9680e4e01efa32dc22bcb17c81ea44d279e8aae530086c4e9a50e8b43b18bbdbab870c8d7def0057a2dcd682d334070d2e95f8a2adf7311773551b5ce834e9e4d6d0dfaf51f511611f15c6010475b981ac1b02669890cca31c7845ba766df9466a939721fcd8a85d0f04411a0a7a41545c5c23b9399f1b76595ddc1fd36cf45f3034580fc5966c88111f6550a27e17c5036f9fb1feb771545c41b77178af4c183e37023e479cf5033ea1a65fece94bf1134e6ca0f5854e6fb10a20868a9519cb430fe037898a12d12caa88ae0df9e0b1f4c1f2a694588694e96af0e4054e42ecd61c83a904c77ed3e37c33f112a62fc3ddc2a81eb10fcbd3c86f6305308ec70c352d58c2ad2f1723c16e31dffb3d40dbf72cd24ec4e99efcbcae98cd0cc2ba9d461cbf13ba54412e3650ef55d456f8755c5b7791126df97df61f7467334aa6aa0c366462a2be3b69472cbdafaa8b7b97b62d90722efa5b62b601dd456a5dd7dadd9efae949d4e983c7352ec4ea10b8b8d8b28225b701786cdf7928c0b166de9fda983ab86c117d38cbaa07730f5b2d327cab063356a6a0a2ba6a864496b3db1e3a814753cb4ed538aab4f9b909103f4b76b318c87e1f8617c4e0993b76d2fd18ea9734f4adea7b6c4c9a44c94d83c61b6efb447b1ac2d155536496a5cccdc759b3a1af633d81aacdc698e362ff66b36b3ca0df05c49541f587b8944ab3a4a4a454e2bf3c13f9398493b2ce34d5de3ee6e974e15986f3f50ab1c1ce540b710c308373ded12f4fedcabca6ab11e4b61d96d7f578b2962c0a431d2766cd8737645d329ff93700573c123671e0fcf41549516d8630926a98f65436bae17f323622c932498cf2fc0b0f004001cd7309990a00a800a24ed14b247243c9a7781275a18866c1cd44e386cb6bb3af2ea124cc98eba78df1a00f5c280a91c0f78d0f2b348368659f896be5812377da78a6a5c7777ae62e7183d806fe8c59d5518aad4cf1d08f9f922d4de20b984f9e141fb83d48f94a077e129cf7810c7c3747ce2db3289340132e7dff26fa2371cd448cccf40fb9890dd71e9b391c641931d651b0d83fb20d541b130d256bd56ee06557b9bc27b92ab26e77bb904d2fc48c97549474ddab9b25f9902834ac7655ac716924f53708d24c52db8752b20b8122090a6325a0b1b0f9868e5bd4d4d8c1b4041571cd86f810a231f67d3786f5273568e48e47005701439e0a5f98ec351d460d4f33e7a0047960a4234866fec2effa8da3f8948d4cc653fe559d860db7978092712c27ed2f7fbdefd1fd9d6c2ffe723fdf9d2c28e925f5d13f7553f489f29818a3aa87272a9cac77fc3d805bab3be013b6498e1e006ca32985ea604c1bbd6ed39c5293af9f25160027032436d8f43f9f5498d6e40cdd1d7bd24f00c9ec2ea432b560864b81d3fbd67bfd207b542ec8f44d0347166563a054124abe4161762af51647e4e1db049873241d3f6dc5d3a40d10b1b5a8572a2b9c41e5eed66613de84fb263ae830f13fec37ab6fd6e3bd6cb109d4977aba00e7c2fc1dd3b2cb7d19eae547e17b71c9b3159a2dcb3e2b414ef984ae8d859bc6fe539c4d928a73cfe2d444f6a0fc2d82f7f6c438c6dbc6d78b91a54aecbdc07472949547d139e1f6dc34a22ea5448f3b821191807fd0321ce9d68be44e35c6bb9efd3c2f5349494364c5c9e1b62d64847215ca1b69c09c4fed2af24752a088f889f5eaef727f3c06b59f20852c23d9fa3d9a34ef613a131c74cedb25d57c370d7872a331cef35bd979b937d00bf2a77582859f65f5f9c43c718d73a2ab1c0d1e6826dc70fdbe8d581798a8e8338498ef70f477534f575fdb880adc7f092540183422d28d81bbfe884105608c594dfa31823849a76a5e9aafebeecb9a5748c2160066ea3983e599aeb1d05cd6c2516b4681add500bcb18b9dedd5cd3ad5824c2a6730c0f39c03a964c6b07c171794714dd65a961103f616cfa1306f07142495881fea42a18bbae40c2fc592713da4c75cc73f0590eccdc822609ee28ef3471464d47b5ec5a30f13914c1d6405fc5502deae8a5c1f42016c40620f5f1e8c5db40841ccf97bdefd69a3998fff3fae38c4c433d3e7be4b72b3239b483cf36f83c77546778deb86654539b1f2fad8ab511daabed40f84967101f7a43eb8f00d83ffbe3ae58e7a17862ce4fd3028182ae31acc00930e3df46103d06b7dbdbcbd7c72c771dcf522b49fe919e592ae86fb29cdc4d430c8a036d0af52a9630d15e262fc2f49aa65274f41835395da80e1b52ff7974d767d329bed059e7b287469cda4533e32068a2af48e70efd59ca9ca4a6f14b0609064066a1116f8a5583089ed7c2397c2c8edc0db89b9be74a38351a25725eef0869451463b4874df1fe973cb9f9af9cf16b77438d98ddd90febc7d17d1719032d89f06c3e10b8f28944fc66b4df31d9784c2dc620eea8cdc44a6d4a81c2fddb1e6262199fe2122d72f73bf8abe2dabb6a66efb65727372c14d514bd0d8d9c8c53ba469c09f17bc6a6155dbb2b45a94fde0fb93f78475cddca00b5781ea8c7c9b8573dc6e0dba9437ba6f017d52c7bfd7f90e05bd5f840786422f08e83da358238827e95d910565dd0155532f381e4fe55b4164898df5e0309685ca03fc157224fa8808039c7d01af831d32b890df57d11143a1d6b0358f5c0f87148187e71c7ef18bc58d5613699dbea5a789f2a95fddc04ea01a9aefb1341143102640bddb4a22767c1708d819d12d4d444834afc9e91428bf2a79462c949d5df719d4fb35cbbdc71ef1a76611db1d8ddfcd32a0a0d81f06139bc6f01d0df3119c10f9961fb1c1cf37b216282e53c6bda196b28efce79aa39e3c4fac99f457b655daa2213bedc12ef36cb8c6a4df16bb34ec1ec07256c5cd58dda67c2ca9102d689241c72745ac7f38ac099ec5a2a43813084b3e325e072e01d28ee7ac6e9d13b764b3474763583975d71674a051817d93ac1b7c00499e952f502e4b729704e1c10f429c1ec55e7034ebd7732b9b99734544d8b7af1dde4cc8a0c727060356f8db71fafdc16f974b1443b9e311f0ba5b14c36f7fe9d2232c10e7bff03ad090a6f39174705b99aab4f1444150d3d50ee09923035af32ed8e4d995b70ae30e7611b9368c17752d95e1fe9f1e4e6b6267ba3f3fd72b839b977bbe1909fe5beb18e8112d2ea61a5ce59762fbf02297d46489c0c7d7d4c0282a211420cad271d19c130dd766debdc4d0de9ff635add9ac8c4c90c417a17043797765807626b1efa12828f91344383afecc2a77ecc5497118623e7a1d7b703e3ec312375bd59a6c76d10e30bb86927aee1c7227d4054574f89e0f9dbc1a70254b59029f33f4df599907773427287f53d96d300234231cb50def5ba1e6299e36090532a3598ef74c5e06ed4214f576a98393e298b1cd07475740d9afff852a71b629a214956613a9fdc635b8210d0f83c408d45d1a9c3af63b8dffcd40045332fa2626676ae64cd13234cbde727e4480e069854e8c6ae241967e9868d96eab32b1dd2ee0a6d56670914623c20b5d754ea5d0ee485c161e21a5d58f7a944dc9c7b57f180a88d9ac6665a7612f2c82bdadb8f1f929cdbc86e7aef6a5a231b40b53f451b3c270ba24aa4f99f2aeed4c9264512ddfeef610b35f85dcb60732cb93b9f22303ab7fa483dfa1b6bc8810627e7f21c7491a6d78231a56563337d5543bed9614bbf74949a2b60d47a43b4ee803c84cd556f73684beccc5ad29053e070863baa9a2e44aff73391b888dae073b76a5c403773932e6f4f7c33f300af71baa84bfd54dc899af5851ca898c776d0569f8ad6a669506d630cb96e696961ed962bf7e79f48cadcdcf7c374de5f3bfbb73e4e999a97132c2db6083f2a6725effd1d9dc9826bf1121594152d8992036d7d96d4cb2f8e4c22602623066d1aaf40713ec38e82ca3b3319d89cccc232eec9afd3551ebace856c6645a6857895ed431165a569e00a74c4ecff52fe805f32659ccbdba539819e8b19dbf99db0e9c112a9243b55caf2a2f966694db2a1cac84133ec86a3e439096a62342fd981f51e56f7b25515ba6727d15756151435ce096a34bb8e1d3117642ba3775df1b36ae535e043553e6592782c202713eb3dc20459ad398d1f338ce03a5359447f2fab87c9c26599ec4ee95aa59408ae0b07071ab2422454261f62b640b40b7e43c4592e50b85bf2fb424e409a3e32e25155c0f875c4044374308b7c0e64c2b1d751bac8bfb62905fa630441b6aabb39160318afece5cda86da7251f2b0da8745d30faef9cba345c682063dc6b2d7dfd80f0a94e4418fb2c5a6d8d8ec4b00c178a946d8481a88bffbdcb61a42799207434ada3de5940c6a7a91ed2ba5f98cde5234af6e5bf60a5e9aec3bd786ff388eb0013a1ff10133f39ff30ea8407f052ea5380a2c5487489f4619c5cea3aa4672d7ebfa95fa2708393cdd562cc090d87aab0e9fc2cb8254d606c88ee0b5f590d6000f76fb7fa7c786b0ad7b25f0722e0615b5077b2687fc1fed8cf033e84385d4071c89a84eece4485b58ce3d097bea2ea7f9256e8556b2491190383de7f445e247a24e4496aa4c145453007ce20eb277f4c30dc27b4aafffa3c05d62fc9b37ae0cbaceaea17f97cd89844bad0ba5685612991bd0f51f4786a87a76ac5e7385eb870fea99db43edb693b49c454750ac6460d5ccc49b9064a383f25f228006bbf8212118cdd343d89f905ec99090fd3642520608fb2960ce0a8b5595f8906bf1ec240ef1653dd2a2bf0cf6c11c870b59beee48c2f68b4822913e1c03d347ae4b1767b16c8dd544d200baa5ebc9acf127bbd2617b3091cd6ecab4824c5c1a054c59a3d2324e1f85f39cc06a22f380e26d9e4f4cfa4f03d0b73099f293f0d412ea07741668272c34f6db2d3edc8556521e1d1bab15fb5ff3bc5238d2421fc47a63f7668cc14f80d097fed645e421733d348109c8846417095de717b090939472f50c6e5d2e11bce322cbb05afa90144070290543162f51972fde364f5fd01720834aa29fa71b2109bf068fcced031805cfd749d66b3fc4a6f1e989cefb5f50f45c2870e590ad005d164f40a12c5571a74adeedbad06207f007e0741969a77823149e8defb5672615b71c4182d3557fb1812badb93aafa58f4229d4547a5641f61a17871c32e1f120e05fbdef72623427693840e2858036d0c7ccb797598fce6815dc52787b20a6fa9cee06864962ae73e37e43645731e377a312a52fe0df6f2a8320110c54479504f9723000b7f701e795d05e3716e35655ed09dc342cfd86a4c967286ce2748b82b8ea4d3e47cd45c444ac4e5e7fcdf0e5094a657792578de20f7769ca35dad36dc6f469f995ddd2325604f692a0305a264af87993ccf13601a8951cc007dad9e8c7027949960c0afcedf498f4492c2e71ca93ebcaff904d982f49da9ac8f34aebc1080ecd27cb208ada74b79d9f5ed0e3e217fae6e273c57d1a2e0eb9f9a1367cece29913e1a1111323fe96e2af8450fc90a6a11aa3fc670d26c2ea853f0140b78bfd78b282405ff6aa63d987e142827390607aa78a9858e04d6cf5f78708cc84a2f8b46af4830e2776933fe4474b7e33de05ed52dd61885bc483c8920e5d23b6561a51b16080aba1873cdd4ce2d48447ccf6ef0027db26baa4a2af29aa057c7d62715084b6170070167197c188bed84098d7b9f1876e3585d139e928c051cec647c8101720f968fc2c54f782f1f54b51a1c7ee6c36d55ddc5e13dfb3ba5aa8ac3bd61ba14fb2ca639f29e234165e9e96417526af2e70dc6e570b8e6717a92e02847975bb809520810fa526010630df7eece1f72db7d0212cda7851eb97c14d56bd34299180c7ecd62e5a8855eb2aa669244101c6af089b795621bfc5b6b7fbc8d1b0f1dbec5bf06a8f66ae2a5a1ff263c46a01e44f08fc20bf78817d0c891e7886802cbdc06659ffc14b8a11e83cf514be45540451872ff02aa875632a32c3a2b138308ab67f1b92ba3afaaad01091cf878cfcbd9bdf6e019d24aa8aa4b547a238b105837f871c46a110e4c577f0337a5ba6f66c57aac751c13dc0af8c982fbf59c001cd5ca7864acac8c12a509bc6765b5110646e6ee8521d1cc0cd7261f11987154ee93a5a7830317d52e9e03c9595faca9b27469e2e5e0d37e2ad4ce6223e9e0cd26deaf813d15c7bc6d6c0377abe823e34bb5f372f7473bc2338c206d7422741c4ee6e3155cc22497ce7b6600882b9dd80ffa55476ff450600671b407601424686b3e1f3b91669130e8a82d89711de6e9ec149907cabcbcf2d0a9606e3a2b54b3c44ed762deaba7df78cc17535b2140f9e5bedba04215c98bc1bf84d066abaa9807acce0a6edf000b14ee65ca3bbeb0dc98d29d548989139e82a6d718cddb5a89c321ffe95c829affbd0a77fbe8ddbb93ff322f8945ce42a7064e20547e65b7a7f0be261cae8650502758f9b1e07e812bc8c300168b0e1b749597e5d75b1df8f77323b643de2befa29271032d32bc19004a3b19bdef3aea7caf2ce192cac956ad74a01a8a8c4d72b3cc8405fdca06910db2b57fc2b6cb987549beabcef47a05b838701d6b50cda2f93fa9e9b334cd7bffc4fd9ba3d7d2c9eeceffcc61e4a8c27ee8633c0b239740f41b33b614fb9f4bb32889c304f3010fddde6851531c88cc82f6fde69a894530bf49b085b4add379feb61078a15487a46b4c70436b57749ee7b4853ba3246d72ea8492e0cf2cde37866fd41a0f6e39b1330dec3ad3a2e279a5aa9311a0b14fb7efe47303353947ed305d093419d321c05e4406ca3b641a16efcedeee5cd884dd9ed18f19e83205989ab891b93c28503df51f65b2ff7baf5c27b1ff6a40b73df060dec31058204e61e028f6801fb2350d4ede6ffdd0bb17f90b1d14d4abc373f523d9578d4d254bdf8583e76e5c5c6525d5c6712f9e83ea3c866617482717ee1d96a51777c4b08c5e5934d59e704f146714881c2c12e300cba798ed7c83f896bb68fed256a5d5e46b206b36039f88b0603e7d29734128e4eab696a459607548bfdbe6fc48887f55beab952f65133d1e44ad4382a2129c66c014fd0b5ee83f96e908de270f33cd5ad3f3d6c415fccf5a99b282b64387478ba30ed1b1772de012a8b94bf38e03213647b6b616671d6d3eaa1ebe2715d2676d00866499a4b47aa300cc8d9a8404f10d6e8db5d9798642de347d549295d5e8c5138476e123d26a5359780ff414efdf834e386f7207bc6d1753a8a6938f20cc70795e1b83688e1c4dce1f5090f7d334b5909284432f3bf0c110d8df758653b833ef82e879b508f2a269c2b71e042b13795045dbbbe61616a57c4ea2fc20fe1fa6d2cfef6b0d2ca0b033af0d091ab2c32192b35fbfe6dc9b43c73f08ec94d195c6424c6439d8565127743e98afb571d69924f37d621710ebabd87b1c99b5ecd7c5da5a1c5f5a1aa572f8c961f81565f6a6736c6851ff420b4c468242e67f288b7e57018285641b82987f6fb0da459db0f8d662e9efb02eb6d4ebd7f8b0be8295983320b6eb0dd0e894f2c3822aa0ee33b8d0afad090b30c97aa41fdbe49b861ebc34bfd3216f10ca07dfeca0d411b0069f1295370cfa5dc6e0d93bf7a7ae2c168bb62cdef94f69925ce5121e816d69f0f797458ce7b0c7d5714b7249f27c6a816311db978413fc76a0e59a7d7b5b81d851f0a5d4351c207937195c2dcbfe8a7d5168f56c955647ec8706d2278b1e05305026a9892503814af817e0e03d47406c19b19196d7323f29c7e343b404047185c5315168b8abd3afbe91680d84770021a8e27984a848b8b82717586a0e1ef4b6904b82d0b21dbf06a858a24eef589d2d0512e6eba2dfa95e5cfa3f75275d3ebc9c01d6fc39bac140be6a9c54e44ef6c8976e5d0fe8be88c8979a942507d203e53eb16939604b588cc59bbaa714349c4dd73f0581686cd39f09e1f83cba7bb67fbca6e63add643c10e04f767b963cceace69fb36ca12f7963e0dfda85c3426dc1777566748b347e2376ae83267af3e063bb0594d16537a53a05aa4ffc63f7182eabd8b7d2c912e161c7dab1ca3af4ceba479d7154e8a351f2445122c877284458a55e5fc7e25193f6c6917ca6f83bad84dd4086110e6cd5c103678b742c1c7c66f8c2b032861e577afb937730ddc9d416712b6e2f8be3ed7b7a826849acb41de64056ccbc8a6ef40c809fdc3fbc477fee6c029df6196eb3afa67d20c232a94102e3eee1f3faeaf7a3555e9ec4679bf9c8baa3f612ffd15c9cc7d7a5a4d56ec6af55b5fd2f19b1d5530c0945643e633703e73800757d32f98306ede3a42bf896ca2d73b32ed56c12d903b4c9fbb16735309add08998e58265a9ad0b06193573525cc60901dd4d7d18b603c8c6cdc34db03f81344b1aebea3090d5d41e654479b6893f596732b396e33f36c89bceffbd6b37f9d173e8cfdc7b63b1e9dc33f9ddcecec8a79e7a0430206a7927e1cdede854c9b4cb3bfb30651dbf0b0e120d02e9ce7436dca41287bcb009158905f28b126bc6540a1869cbb241a8c28e028ed177fddc2f1f316e40fc2ed31910ec5aaaf3a050b6cd36ed41f0ce751d653d900694998546e7693de576240f226f2456623e03a38c17907ab69ba8c4382608efb48e2008f02d380808ad211e41ebfa27f61373003be9ddb79bc5a45bdc37cf453b07810d6c5bf538d9cab97607731bd075f351edb0ec4e660f0eccb7bfe8ba9b8be5946eabe335a89e0b9b7b4b6d2e2f63858bf28e2de16c1bc1675e2a1484c81b3c4f284a3f1704186f46f77209597fdf6a13ea115f02b39172ee4c5e987e6d6d481bafb1bdfb2bdcdd9d3924818348011aa38ab12b6c8bd20b7b54a88ea55d4c52fae69bf892fab00eaaf549785212fd512d43fa5a3c1f1a390682e361110e2b97218e48086a410e50df686cc15e472847de8236e87c34d8e0556eeb4ffa3ff5b1013f6e8ac65b768e494f6b7e6521d236313d756c49e75f715bc657f6cba89a56829bb5cb18d1a0121807a0056098b0fc23da7f48720de561541770588eeeea69d93235c59873a6ec1d24b8e0332329617d3eb1cff9ca9a8cddf2ceeb8081b13213094ebca9a97ba86ef769f06dcfc69fb5f548f2a281ec56dd5aa063049b2f21cecc7fda13cc9407915f64349c4c5a7786b47ef8051ac70b09f12f648a7405961a9b4285080ce228fb45bce69deecf7d81ddbf2431b6df465c3b2515f0a214470f11180dfd18c2109ac23fee2e25a8bc7a968b1363def0131de9b3f4ac790703ba78da1ba0c6c640a605e056390b369cd2d1d73ab2c5b6d5d03520e6d6d71687bbd09ff03d98b06be77b3218c4819e76075a16f85653a76e92b3d215a68a7b7120819f641c7092dae6993682b01df9c4c87ba5c6a67b49d0bc7d404d286bf057824b1be7366ede2ce9a78e7ddeea516a86d133b124552a7664d2b63e81dc3e1c2516abf7a9e96c374825a5ba255c058436d46aff08d18203aabc247c74d67de39f265f4abc90b39a64cbd12ea96ca638df92206b71a38186f2166cda39de24a34945459f92329556fadf23bea1a6cc5de8d9c827989bbffd650bc4cdcc372283a1f45e94bf3674765dcc3e66c70555ddf7074100d73531c8090e70d94bf898a1d5a41073520249e89e04e307e58e51c3d30f316bf98a1bf4bb2ee8968de656251c14a592a4ba86daa9a2c7273acbf8e024de6dcb84f0e018342d778edbf933d6eb10e9aa900c64f005e14f31c7db7f75076a29cbe390bb20c4aafdfff66752658ae647edf0d9857fb567ae38e31935da38459e468e44cc42e71c154e94e743cd1b87a71148d70264702882a8f7c466891da32a908325a1c564732df9668c64cad1ef37d7cf558aa6b36bcb3c9bccadcd8d55331a5e9a8687167e4fb471b24cdd59dab553d60d50cae040680933812b2928b1d6388757b01f569b678dcf987b4803db2100e97d380417a74722d82ff267599d158d4913505cca105675f8948ac42964defb9414d95f7af6cc2a6527de0b5f33e005d10a29eb8346933eb697640c867c59d9d05da4933726f8d75aa2566d56cd722947a76a0228c1a2228c14b3101a0320f7b761fc028fae15222775b6d1c10bf74ee9be773d5d00e330c5338222eaa66d45b82ea4fa8e8afc2112715ec3aeefc2ceb59d8f71e5bad85060540f095e2915ea2a8a2e426807e1cbb7ac894029651e98744b18e9f62f7d5e768214123166c14538361121e37ef2a0d58c87c674d2128a4e162dbaf3810b16a2247343192d7ad604d0b43f51859cc3ad4ce491d85f7d01a4277895847b56192983c120c6e48d0fda8be49abaafa15ab9dfc32ebc04fb15920c69b3813391ec89a0d151a09b1273fe85d5127c861165e5af82882159abec24c37c889c01361527cc6c540dd310d04a15f40148c86492d68f98719ac2c5887c34d1592758ecd60020ccba644b8a3b7af4785a9140e715021a0aca38e4e4b06f2121c1cab83e43fed702cdc0b5920b6999fa85d93cf394a4bbff049afb9d0e082cc2400dce5b2cccd8f0f8f701182d9b47a27d3baecede3de4cbe460881ac4811d0effc1ffb5cc2ab9347b01e2e3eb93782343665680f5b4ef1c1f7d100a55982b7af29086a3e8c8759c6a4d39d379774ddcbdb13dc1670b17d2a902d1a6f90b9c36b2456d9e83e7bffe049b5bc34033ccc383cb362d23726ffe9fb7977205c6b5d6b7c86642a7c161985cd83834f97a3af289756db36c089666d5b8936fe3e09130e2c0d44079305469323a58750a9abe1c507508a4499cacd876f039bd09720961565ce4b54ccc7cbaa927319d806c11ff2125407fa459d1258c6c216c6530b745f90c80e9991c8ee92d28bbb227a9e7a75448d56fae3608ceaf712a887ba4970116e3a0e27ac7c07d9f85140364ca8f3427774d19159c4e687a67d4512a7f5491b781ccd0c4c3416bbe5156852f33a435d02cccb2202a3e9c69a46f60d97704dfe4f018eba91bc086ed992fbb958827c882a60fb19d20354c6d790db33e4c770b8201b29eb41966661a42d13f94056d65805f157c1eef6f88b87940d1ac90e6c6acae7ae7f447d8e2547e23fec440dfb9f9ac60efda6a841890af9d65f488a412070e222365944d68206126c9424e18f81bf591ab3349eb7c14e319f908973c09aeb1f87582cc07b97f3c6392fa230168766118adbba6c6630c4a722e9c68524c6d76d24835f213b6e21c9bbdcaa5de6c6cad0563c017b6b3442e9a0f42ad226b0823c08a12e30569ca883e81e5ebbae57801078779ee79cb283536b86c4dae027e05b090dbd51669b19a395d386fdd14a021739dea51414cd5a4b6eab57a7c57a05c557c5fa8c07d77cb3da3332688b2a249915327b4f5bbf545d5df79d0b492307ddc466de422dfb4c35cce60859ce39b45cab67d712ea7a39d69469e5f49fc2557056bda4353dbb144e9b84b9f332d1f81e0c06efb2102d5a2d8298497b0f175caed6f2534f3ccb046a1769c1c39b2132c327000d8c32e03d19346d2f22117cd75bb819f08d1e59c46c61b3b48d149ee73a102eba32c547236ef5c990e444f8fd9221e3afdab01e2900bda00b07144429e48d5c4a2c8717640bfdcb28dee853e00c122d14fb19cafd61e04e9738b84f9c36952e03e265309cf38d8aee433b30d34d57694153e83e1be820205395077854665c9e1650f268a5138ec2489a8554423bcb9f59338d529349e91f266ccddb2ac2c12b17f2c56a62e01451a0362ada4dfda285394b674156f273500599c7eae452cfe8fa669c2645f36e6d08ca81a5da23fe4b40bc511fe3bd20dc9392d757ca25925da19f81b84180602ccad50274a6764a4250334c1a72dbcffe593ac1511b416c69f48bb447ff23f641a017461e9f24221a08a88aa9f4f826d8a60fe0254d90df746f8947d59d50bdb20f1087f7bbd68f52311bb456cc9d54112b2ed9f86d33e16935111e1ee04d1b0d4970934105c0a98ae2e406250190fe200dc1ace5cb9f86ac37722910c7818f55d01fe2b8311059233747fc6db369343c0fc636d12574f067f150fd54b80bac2f4a418091b61474216cbb4d60ca8b89696e06c5d4da8f049c3e8eb25be03e6e6a3c65ef2b8e63c9bce0318144f8ed5660e37811a641ce64eabc54c90a3e1b9d14c37004fbc047b6ac45bf3ce0685d5791ebfce0d1a1e324d3fe9998028283c402d433a434a6286c532acfa3e3aaa42c3fd3b4913f8cd726c40aa0f2c8d2ba5644a6cfe51a5f48ddfffe0e70d47e10406ce63d7d84cc6f015fa352e2d39f974e55726a749b6b9963b890718475499fb1fd048428c292267ab0ba9756e8423cc560ca246bb2710b612b0d3c70a04fcc32616911d97f9e7d717eae6c60b8e615a5babcb183eb28437d509650346a41756210517ac5a18da1e0c684fcfb201d62961df9c31cd54cf42654c9b8663d223088345de08173ecbfad50fd249a266e143f9e966048afd847d50091d12bfc4904b29ce087735f3bc9c570d166c55f9132040e6d0fa49f1f4b1820be82f67f4c4b91ab57423ce0a1adb945dc8a15e4093003a1064dd7d7493e278dfb8d5a09dc318a0f9b49a1b3928c8eff0a547e619fbedad0874c4a3b67504e202c5ffdd2df30f7c3c033b12819b7915dbb78a15515eea9e65a048ace0b8aa8f8a9be55c33e571f2b4dba2e7feb1e502774af0b314f48eb87c010171baa65610dd8e6d2d2fbbd9581b8f3646507c231511e0a718e0d6c3541b4020ba0efd39314a70cd18b436ae89325cc5da695f57f0ae6a8a208a1ebdd2dbc7b20847092f9dd2a40756b1b4cd2c8687f58fc973dedfcbb01c6e63761eaaae98351c05066763d6d7a088350e26c1bb9e1882766e53d23e0e83189ed35be0a0f205aa4d6c7d2dadd10d533a13f4979a77e370e636deb12b85e0f3ef3f7b0822b708b06d6e5dcdfb1b08e676618f8eed7a7f102fa9b4ffc5614cb4faf70281dcaa160829bcd214694858ecab784f5e9abe4d73a92a056026318b949813f019666acb3e06d27f114362b401346a331eb58081160e41d4e7fc6688d7200499ecedc4563c0964f4f83c52f1e2b5f53b2110c28c62963d7dd943f434042cebcd060cfc15a90219e992cd2eea4fc16a8ef165a240662a74b30a77156fae464b571340846eaa5f7840ba989e0b69d1b2d0235da366a9da09802259546512db8f8da629d15725cb63d62d6f8b23af307f2535f2486bc13783016b65ca59e02b60499d0acc7bc9b54696bdeeb8c187bea576d15a676a7dc2fd7459a8b8f90bb68d51f69a3c2b63b3e2094270fc67844b4e0a62e776b10708e1737dc1dcaebff38d44c88cda89dabe0f832be2da070e252384b3dad5cff9150a398399ef991f7c767cf3c8909ba49125c363ce5d4bf1b5ab42d9d89953ba1df15d35154e85b0d210efa651100e7c168a5304f8c621e41d25fbf0bdb05f5c2f944a0095173dc941241219736e37742c7ba5d2a32fb0df4be2f50956e8fcc275c251c9da96ad15583f704dd07037a7a88580e6c7795fad862b3f7b1350d8ae4c5b6e62ea26b723180251fcb5a9a7c4bbb08dabf9bb447553b6b05603da43dea16bc2f85637f1f103397246ca501aac4268f70234382b20e808056289b5cf0ef7453529b96d4fceecc42bd134340f9e8094eb464c8f51eca2e914282ebda9b56bab0fb56e9e582446068d018bd173754fe502897c75285c8e4c7f1af583c673a4e38df237911186fc5a98adedab78cf09b50024375c83c285e997ba2f7a39d29da09a969c2bc9f9aa48ee41c54cbef7e318829a770f08d16afa87c48a1efb2b534534c0337a25fe72bec9423eec2bcffebe207a4f0712f56497b59d6bb03925270d90d143b459d1976f721be6af77e27fdb780599cabe126d207c28ad02ddb16abc91378925d443d2ee5defd82fd59c459131be3ed93ba72a8bb8104fe09c76b49df80353c3c0e9d5486b13d4e5968f80672570941df1ef14dfbc0b366c7cd9c350181140d116dae68bee4a5eb578caefedf3679a4210be55a0dd71cad1446ef9c34b447c252e925c2933e2d11d562277cc820d9a3e5554bee5acf3b0172a8871a3ca0f09166136fa6f9409ca417607c2b6c6aaba5d082eb1390fe812e19778e8bd6d5056988731b8547689fdd620e64de0b2e2800647a39786fda74c7beb9136c6e16ffeaa1ce3db10079ffc40a13a2b83f81af7b51215d1e003a1d85541634db6f58e2af09a28e18d714b85871c38fb6b27c1f0ef410aa0fbd41482ae07061b1eb59c2aea724166c56f350002e1b222881ec868c416191fcf060e7750b9392e9055246c23c4b5a7894c6ea2e2812a3121e8b0f7fb67e0bc8e83a41f4091b02f06ca0f120a1ab87fe9806b3420f42cb37e4574c714ec80d745efd17df4437b68edf498f7281a81019b3c64a5bce57559bb55abbbeb2f2b7ac5c38e69421f3ba4fe85dc071a43b9af13c3a3f3ef3f12f6b7f4f87d1e160ab91c300a344fd64b466ccc1c143a566e901ff151822013382400cb42714f33817fb7fa09c4edf0cea67a814804f40c913b5d5eac6692e1dda720db623bcd1a72c39643be9e635569533fda9c0d04315af74c3ea7073a6d4a93053eaa1a0f8e5a258445aaa40ddc562ec46cc2a9d89752feeff8034bd3c00b784b070213f1120309cfc9f161bede0d2629c48bd01b89605e83c7d348c8941411a29b837f1642e7195680944eec0472507886e33eefad5b57d7085aa66b2080c84a792d275a0b8b0f51c872d53d76942a441c78e3c82ab71b8b6197858f070c520ff809c3ea0fb1244df9c77f5faa03b78f6264cc2a2da0e87c9a81d380114ac7bcca78eedb8f0f45ffb85daf8dfec63ae6f87caff42f64818c8fe173ce104ed49d13c1d0aa38e7d1e86abcdfe8db0cbd4d029cf709882fd08fabf4474ee814e4d14c56c66f05e7eb5d10720b154b9c7feb18c6cc6352e24d7014739c9b610c22980e459fc1fe5f9f430a62e9e83a4d4b693f901ca40b56e7c030ccaa156070716a3a8bfd270cf5c7a13b1bfde888a7447485bed8e90721038a71cc125cba13e65d46d898bc41a0e1fe263e1b0c35790ef7fab62aefce8d37abe00081175f83ec4d8899ccb59514a93c0ae93db491af97c6a90071267d75b07da4cb3c24935f8bc03248f926d0e2015bc8bc2c76b5080d9ecd517650afaac477f1f08107c39012e1a375592997cded6288310cf5f8de4887a9fcf7c5ace1a2012c8c5fce8500fe7c8801ea875e0692b4352d40952e66edd1042700cc477b0031f82dd8c7ad610863db1663b4ba173ccc576194277d4a81b9dbd8e66e106dba15704d2508419c42ee643b97c7939597451b9470a67b5664a2bc14e5fb5af3ecbea7c498c96522c30cd8d46f0ee7a200ae86fa6ad2e6f04cbe4a9d2758c9881ad63efa53ed232d8f4b5ae14c007221a56fb3d9218c2560928149b1cea1e4e85ae22c039c5230e10dca5054f0ef7dca01f0675bbf24d9909c83f215ec38e0a912d03b07ed36585853e48087e828ed383393ae31a5d7aa0bbcc109875232adc2d999d7b716fc393760f00c3300420758abafba1619f4ea6a80fa4434de7420682deab680c3071f586c4e3263363ca56e509523ac270d24f03718a789dbc369913f2f9359c31547df8995f9da7e10ede4f25eb1368de74a61b125c8798c3d47fc112f62e56e3037fbe451cc08b1dbd3542295e0294080281578027f28d2004425d61ba224d1e779b47073bf76045251c8fbe19745b735de37f449de8ef04004c327951824df1dad9fba5f2442d2580333186192a409c05af2a75d651dd3c904cc46329577f7fd1084880577276162d0cf39e3ba5f09d47897028e7cd59bdf35603f2c50dfa930c4be7c17cc8887966743f9a9b0b32ac1315c4e3ac99b0e89b82139cc77732048f883c1d28ab87ff2cffd4bf7cfd0a8c066ec5d4f34c72bc2ed755b140b91b2c71236a1a77b96c07ca9b7d99269987c54bb7cf3c1bf376f6068d8974a1c330944004c255763889e08346b48f8cbdfc31c6bcf1b414e63b6881e112e5b2e4dbe326f28efe510839f5934fce72286d451469f0d74556084541a730d354ce08edca47adcc863ea3a9268a6bf2870ce46cd9778c9caba1695190ddc55f903f7d6a1c4462b2f2dfd2c8503715c2e7ffcdfe656e2b8c271b0d02b093771dfe5e84e061459dfcf44c30782864b310388ade8930c75e7b741eda75fc50f403d78118202dec35ea4b8fcb83c3b0dee06d0743e297fed9725dfa1f2e6309f258ffee1d3241b60ebdaa5c83de84cdc5b2237c282c0320d1a89b7b1093a851f8396241c29e1278197ef74ce4dc82a4a4f278b718981337130f97001327c12dce6bb4f2b4bb96a0fe625e85fcf3509a724a78224162e82da283eca8696cb909b43b580f30f49d86632dd4ad12bf6fa24d0438a1b1ab37c2aca44fe9520d1fc58df015ad476633bd9e3772b47028d5b8f1aeb478b9f59093571c0488a6fe6f5b8e3f2f203d5afc0f3e9be3ab8029c2088db42b40942af03afc7796ca48d9d0a58bb114901f6bbba86d2e91d9d5171a832f5fbb5412ae0d4d2b22a8f9e00e1dcb978eee061e021011c3a5629186a37e6633e0934b524d63fe6a8b24ae096c087453a8cc47e19186d0f4f3e4e8e529112ba8cac643a76de6ec4350e2ee1c5a5c11e24b753ef2507a15147308bff4ad985cc86daecde0551cd2f4d51a173fbaaec44f09e29bd6b8ecda664df73c7700193b7a001132b239edfe5ea0f23b908a7761427327dc40b5fed9fc36ef89c10f5ed173ac46329b172442612685e44858ef41900683497a3ddcaf4b4507ef2d5e929eaf7ba0ac41b02fb4509415f3834556efd86b8fb7d238ffa9384e1c6ca3474e1f62e85e47a59bd16bb2be4629d5ee1c630b19db0c5af57fdbb7ec6f2cf5c4e5d2a7a77d848c2f04a866602f1bbcb623c43026d7d387c2ec9bbd25ce01287d64438aa625b7b755b55287b6352eb587e8adce890a98ddb6cfd52d1f7bb79f934dd792cdc4ec0b8ed521e3242fa3bf177eec19ba726fb5b03dc7da73c20d4df48766027771533ad1b7b629e867686bb42b5c14dcf80eb348b3851e5cda16805fda4d007a1d24cec9af1e8f1ee36017cc1ec799c0d746739a14cd9e5ca578004fc11993ff8dbf09914eae44d38a5a01a180e3699bbd22f9f92cdda9920c0fbc4b745cdf9c073581a886086da941a2691d753b1b78c1270dceafc55f4a5afd329469bca2f8f39ac3e808b06f29f5dfd718afafaed0b3d55f49d752f00df575bed44b33173c9d7b6bbecff055f8b2a80453133c7dd1f37a7f5ff3e85f85c6094d18a5f85bb6166eeca1aa782ade0a249e646339cb141e73c74a90a059763301a0b7938483755d05192aee56f9ecac1f3bd971e3349bac81189e88918335067f44946da46477994f29ce69ab03dd3c1a7d2e130f8541def5afa651ceea81d4509b1ab84f26692f06004a96a1c0f1429d46dfe03a0079b52198968982ba6a9006a92fc1301bc86924ee93ff7bc92eac22e0db01213a6a1a1b223f0407a9ad7ca46c708b3b9ebd399bff9e957b00d3af153c2a194e0ac937791b81655e5b1b2b396d1ef575490242bc5fa4ba64929b0d0297fdc1e649a241bcc9a6e87837e37e51d5f1347cb62b0377bc7ad259811c6c2627e09ebca401de8d44e0bdb99425033f1424378e717a767804f07d6e6a8e03a7dafaee0961d9ebad12df358bec41f86be51788979e0dcbc07b2a15afcc2c76518710c5ac6fb92d79c912727dbc56683a0fda7ae3ef17300a23fa571d0ab2400c926d0a35942853471f297c71c9cc1e6941b16166cb584c33c421dd227a0203d5df6138578249047ee61b564184a3a7fc264a77552109e6932279b591853a72e2bf1812876eab07f3c2e914d54acd59340227a5797ef3d893623ff719e57d989562af055bb269882cd2c29c875657e0d3e22b7b864d7e3fef4a0073100831fc40b1ea6f379f3c3a6443d7c5fdf8eff353ee6a6adde63371f47dbd708689c517bbf83da7df2aead79e621701d4afba860254795355a617800880cf7d62811424225e4dae244a2db744fe317ca3705c719907d9fc8fcc77a0892ea96ced08461ceac49ed32066e07f0642a5279982729072f83c04e151f803a47eb79e9012d6b7ace26918233923963326c42d82edfac863cd39310255750c945072915608692cede974a7f9e7eb1b58ec8ea16bb4974bb5c2cfee7aa69839ce70e6601cf51f2239754279ff70d2fe8fa127b502ef23fdb415d71733e03ab744831713e2e48c1614c7f6cb3b1a7bf32587f9ca9aa84e858a7e9484daffa595be13937f691f483c8e3c336ce72bcdcb858a484f40911e8be9a922295aa85eaaecc04e49aba47c934a048198a1779e5fb44670d9145625ccdd86dea155886f27ec05104ed68265282975ece522657917c06bc452b7923cb203629fd5236664e2c05fe9751339184d5116d858e0c79c3d0a69dede19358e9093427365f8670a0ab99d9b73a00ffd2f4611196f51917fd7fe904e49c97e643ea867ca4c4c934f4d1e51748d742f81b3d70a3b7a2ed60eddf3ab45a2ecb81fdd7068b8d18acb7b55b4d406444debac6fa89c6b23368c72a3fecc173dc8100dfefcfea8be3996a6adcba2d3337b4de4e8656280862c2763d840a079731b13aac614b18e49843a736da236a7697b6fd4b8025091f56ecf898c1a9a3167a96a9209cad9110b8a0c953cf8426fb208b542f41ce7ff9430eab5db88df2ee86acaaa6013bb30e178f8c3a574cf741db2dfde8ca800d6130c4bd41ff30b3fcda0699755a68c84a964768d9c34412cef036a633ec301bfa9fbe01074f94e6aee545cbd98cdef25bd491d02b124a6dbdff1c8809ae1c6c7c51183ee9bd50f092d6562ebcd6d01551609aae8ec6d5df362e6f269426f6469c6e33a525810f02310a75ab384b6391c8b86544f3f7057b1a7c335b96291d2e362b2c2e14d6399fe976bb74e7959383249cad34fc7b741d27fc5e7c97f82a8b4ea25983ea2400e4924a34b46c31f1fc9638ee60168625814121d9825fdd5c59ec314cbc0df383942cb1954bcd8f5a9a798905fe6d0036800f67e85509ab42a8c696b0d82ae341721684ab467c731ef335b9132c11228f26bacb29d8d8122ed22b8b5d16fd615cea41eb40081d9661baa058ebea09f7669415eaade94a464f32932fa6470645f4e45de539249eff61f8f70979f576135e20680bbb2f9fc3356673a9f9af23897ce47dd012a4afcad6b28b5e1b50173c04e477b1115c34161220a226b56143190ce55a231c41b48c91900220868aea9919872674da0a8ec7b3b6f9e3a3283bc3195fba96e26594284614f8cafa055cb37f4d9501c6697314f31a8450821b253704aa7b8e67ebe0100b334ea1d71987227928a8e6150353ccad113a8f85ed9022b62f1db2817e0b069fca8308ef989b9173a318a659c19761fdaa52e9e4ca4ab0e456ccbd760612ea81b61ba8ab2f8c3b4a3c395d0f0eb97bb087118c40d551662edb7a08ff1cd886e8517720a85d7f3cb3b5b0a1038a585a157e3798d08bd87a8fe793ee0c986a81bf0360e362e4130e566c7d82894f4a568b2ce320324aa4a1b9e9bf604cf864424c3272345118a01251e633dcef2a85ad7ca7430acdede7d6aac854b688013c0ab5095273d08ebc5a2ef1b464be55c71ac8a20c01f7d16a7cae3d8fb97e0494a62d41c55cc8da6e81bfcdbf83b06f1706804af0f689cae32cd279ee6c1090dc6379dfe903df4003586da86c21893968aabad800a8eb048d9cca7095bcd589e59ab575820fad2508130121f6107e4773d0d2196ad1f2e3ddc9507c2dcddb45b47c34d3964fc3c81810afc5fba4cf23413e043d99c1a3017070438d8a9c7654929e723c7a34001159534861dd423de6a4e2dd5c3a4204e0adea97019156b698e39936faafc9c09279aff1dbe630b40b9da76c298a1b664a8687d3ead85ade1c6b8edee66d5d78525d6e1c13c66e889c600a8ddf7f4587797f9a866730b4fd2db2850e94f52836b8a925c681700d58c47e640a726b724746ab09f7328cb64494568bc54d15287bd5200381bcbcd98ade15a81ede63240247953bbbafcdabf7f6c6e903fbe178a2f305fbb261ab8144bd9525cce6b0baf08ae33c0b7184996e5ecad838442ec90315fa9c6142d1ab0919077a61716c59ddb0560bf3d20395efa771d7cfe185cce6f4eb93c716c81e6dc8b8d0cc49c0f09dfd528fb5cf631c63b4ff5a0998b96ab97d0303adc85f10046dae5873a300c63c5ea71368690800b8226c1d9158ac86789723709b79ac67e85fc720559f9e9a3e3e525831d4a09bddd34a6f356e54c0933a5f40eef2da3e164e1017518746514a0d42c70e33c4529dafe9fe548e6cf52b9e8a0aba1ee3c9b0c64be9ffe962d27eb3d50838152c05ff04a0b1cde7b727f8f590278080a6e17123449f413754b51af1032557723a892cc3526f0bb17e59715da7bf8cc82f19868e4bcdaa746986e32fc329e0b621a6e57d3829ce4dad7e86e1ea8afc5aa5bd9d03952286c7a26f11b46b4eb24c2cdf2b6b9feda56a2f5656349674a863dcced59845714a94f60e09a30a99b0d01d110af59dcb86c67d69efa9bd7d556eb9c2d7271c992dc0fad8fd5848da3f5b0c1ac59e706079399db3f1e3f8c81dd3835cf0fbd26e98848256bf399e295a0434c7875ba4e03900954c5b8f1d81d2fa2991305500fbd95a34b28567c17d46aa0ec374063743101034fbd0bd33e9ee60c05f8e7087b57fb556d0d2ec92716319beb4e89a4a133bf211f89282a482326fbee67b6ac6a121b8d96b971978f22a6cdba004175562c7a4dd64a26b343dd4eeb27e5f578292b34df665c7e7f1653fcbcd21aa84059edc908760b7246e2e92281b16eb1d79b464127c620992488a2242ca0bc3c571bc08b78d8df9c699c7d908953e14306b4aff00e40a8a0728cd6da60487d83a498590ccd6ff03500b09784f29aa7a0ed1d7356f14218ced1e2cecabd6403aae219aa31d57910f039800ebcb4e25baf54e7ea38ade29df48d1ee69f2211330d94d694aaf79bc8c82540c1d2456ae7d929a19cfa7170d956cad06a8fa7c6a4ef3e8f35cd6e16b163031bdd0e091fb7561969e7ba1c94f821ff1fca3aa661a813c49ab4c691b515be282dfb6a40d9e934bfd6673d7e6a0f32b4446c6ff768b9ae1a06049f0fcc94587572d30bc6a9b0e0301dadc28ce289cf13dd561f391f23d2c3b3b679a0bfb8c7efb5eb0d490395a4144d731be6451386e73c13a59dd4f3f470cf870ccc7fb4ec3fb417bb4707646019932dbf12a129c08a7eac548ed8729a717425f092904d94efd4fc5662a82b321f826c671ae7b4c29fd9734b5cb33eaa9d85e50d5404aaae5dd70dda7112dba193dff00cc9d2d43c3b12784a14c9850c3462db6617467948bab0175606b4d675f909c9b6348b6016ed430febdfb88a630fd12b870654bd2d5d513c34ec54355ac5ec38cc79b3e82a7161aff441f919876a9bb09e2ae1aaa03a13cecb39d487f04125e60107ef2d118452abce8194ff67139c1dd1c36d416d04984a1ade57524c1bca37fce364fbb64d41a15e305abd7d55c0a488f4e07927d7e7f90ad0d5c8408834695ab6f04177755153ab200f987922746a8c84389e681fc59674b6f507e6ba13b1ccd981f070a332529391d3845852bad811f899c5f08334c7f4c8f9be441619def57087ee11178abdf8138af6aeb2d0bebe95ae20119f778884e3bbf4bc5e81150ea1f0098b1cfcb2a48e265399246dcd099e207b00c88a2f3b6ea36f03818d0b9b281d5d157350b03ced304046e7f97d17b3b20307a54fff9e38edafb2bc7c47a19c90d6d6d900d135d91454e0c7fea4138158b9d368fc57d2fc0a621ca66489d866160cceb5a932055f869906725597a883ee929ff0951142c64237f04d7a1cf31002a7021b02c83e6a949deb96de7e312e98062617e4f2648ce2cfaae73c92fc828105eb081426d306b3df0faefa8d577c2783d3cbfebf4538ea82724b14074dfa25cdc0df87058c07e260489e9afcd47c43d769e790cb8cd7968006c0426d8aa8da745cf89b7d2801412e863b5d15853000252057d12386f0c19ef6378d8ade56a084058450c873b4a8be8c4f90dcc6b47ecff7352c401eda20e783bef1bd53d7ce05c58c9668cad15c47ee85fe9a53144bd7f8eb8e94e1e96fb6c8e95137c5121a937faa8b0c38f3b844aa6fad8583ffb5f996c907ae31ae2993c7f2b570ed14557982389cae4bb9580d4c4acd6d1287defeba7a85e31f864ebed0d8889112b699e5be96a9a3b2950eb44578ddba671e37ebfaa3c07ed4881f51e0754adadfebcab0f205a9d97f78f606acf7964e7b66eb44623239baf11f1f70bc965d943bb25024747be01dee0f267573277abb171b90a1629f00fd884148e7fa7424b88a76101b7a8cf0a9c13a63f6ae3a9b29d2a22b5290fa8e2b0d48b9ab93927acddbbb947a18630357f75fd9528dff908e67626194ab12a8b656056a94ebe4c645b1a6d8f8d7daf113b527a8c528a13a4dcb79da7b49246a923484a0881c3d087e5f01916b4f9622596e5692ecd030e0275267ca46eb05e37f9ff56d3b112f90f9074ca46b48e2ff121c53c09dbe3bdc2d418dcdad8c8e50ad9f55c8bf0951f8fdd746a2d739816af9e2177ba77d41bf3e25d367ea17155ee921a3e0530279da9cc76aa2170597703ee1d9ad9e84bd89636d90c2b06047db7d493106e1d72454ab9f9414d182c44090084b8eca815f3ed1e939b1ac500e876213784fd7b89ff800e79e998a087cbc84574501cc2f116714ce109629d4fcbedc9d7dc1982d5004dbf0b2d53b0be92daf8b8e96c4d0673aa4885dd93fbc76c9a5608d061d96a8eaa1298fb0fde7a2f533a7ff2d7ba9f4ce81ad9da45061dc3b858ef34513303ae89a2b74eece98f8dd02f273583a760bf0dd06843efa313bcb0d4f0dbceb85ffc4c1343611103b6415f9176aae2449002463d584d00f4c8a7e7cae84cfaabc377fbae709fa9bd5edc777c4e58f96335ea5ce2ff2ac5eaf1499ace11a398bb5596b0f0849dc2c7b582fd867309afac006ad8e23e14ff412a05782306d5ca382f27b734d91db48959e4e599dbfef15109c336486043db1b347a8af47ad3267536ffa5eed560cec1e34a06b03bcb9859761959f06300fde270234ccbfea07ab0fedd2bf0ec1812fe6d007cced7b5413614908cebfbff80c7ff88b933dcdb1bf72fb686c87bd6440c5d29fc13b2c83bdc47bc995875c843c80cade30e70a137a287ab5f759992c8cb39c494c96cdff21a14b1f2141ca738042e01ef2f28024765991f3539154999aae49d82cfd022036570fcfbf0c21783e00203a7c697b32233f46d879ed8ff02f2fc0d4645b7e6e70cba0c846093f040847af9911d334ea8764202f307112c87929813204baf8ec2fac0562d7ea5b851ff3d48fe7a1a92251db87c15ed9f065905798234fc44c822ebc61828014cf21324946cd8493a148a9a69c1ec5ca7e7bc13a7b9a18aafc43235b8d4dd141b040812923259fb5196533697f9d48783ad7cd87dab354d340b318dc0d35249553265b9c8a6505acf125dc2dc44cde77ecaaa1c593cc2e923680435c9efb3a6d0ed8fd7b8239781da2be73ec0fb07b7c817caa3d45a21af22a063f6a4473c914c81bc9a950ac945acdf376d6c8145bcad051f9903d005228253bc3d4c1aa8a0408ed5582c4a1e4284e21c3e5b4e8db69184d7d1f14b2db6d599e2072e182afb3d38c594c04e7593334179e3a0e24744cd38ef1beadbe13bd25bd7dc2086607d8510bc220d014bcf0e569f2edeffe350b4ceb961f3a5465f9c817771abb96d32510a41b6f13fa867f816428c1d29a3bd7b8b35fe5208fde09cd285130b87e51d62c4447b1e102ae93913db8ca6fbc932171e246aa102468bf20c4ea2b644ca8d7122f66affda4c38c7694fe428f3e910d6605df9fb56a83117cf761bc65351b4a2691dc297e45a2b05172079bd2ead37de3c714234f1700cd4b3b66bfa1635b4f555a8f588782c0bf14b9a227d9765c4ba82a226b6dd341d8c3f6eeaa5950d4cb0eac87e2411ed3859721d53f0ccaf84de26e24751d7b746cabcccce906943cfa020aabe09bcc9a01563970bb5846ecc56d7db616f44d08f98a6f76ee442b44be0964efc9c0730ce33986e1d86f601010a8e9b1303e5576b286f5fd0fd28a078d59b628ca4d583f62055d966f694a7917a327e5e166e24058ba308dcda459946061a351d16d0fbfed250fc0a8fed0afeb89196fb17e5cb88b0ed00b58f30603335228897b2f928ceeacc0be4a69762208eb385d49904eacbc5a9d0e16881bcb3ddbd70939b78baf8d16ab3822a87508b12d5e8473afa82c756de181e23c0ea8a0aac090373d8bf02796e10c4b1638a67a0d4dfff08028fcd4f62db1fc3ee4476551188d1a7e7244642fef7293bb746e1270bdad4e96be88f884e70bb78f5cbdecba58982ca86a985255d6900044632a926a471937b68cbc22f1cfc6eed3352b46ac5f87242774af45f132855fb7874530c743e97011bbcaf203c5b176eff07346d8a5c0d0208583693f4120ce14b3af1a383f6fabffabe73aefbe36afff1b30da239be63578cee4d4d6a337d6a38fb51007878a3ac02f954ba037eb505dc0f3710b0b44907300cc3300cc3300cc33000a6f1c6f4db4095912f5392f231bbb8c0f5a82d62fd4f774a32499964e8810b0cd9213662b746021c12050fd40ede50c3db85985a2329c4a15b6bfb9cd597dd9c10bab069b2a32686bea11f900ca295eaf695d699f37c6a2482b86e7f7edd6aa44e2f0e44a27b64d718d3769af51c2480f88598671eb548a5b5e80f0c994faf64cc6beb090405247e58bbaa4f37a6ecccfa5648faf08cf5523dacb15ced161648f890cd55a66f658ad1628483640f8aecaa7e3d33491548f4a0da1af3b2c5b057eec901491e7a257a4cbdda6ae578f0908ad94a13fa374cdde220b983aa75d4eaacd3def4ed81307e08e9400b48eca0871d53ece93e9db6cb48ead0587a2efed44747763848e89094b13ee69d3b67f1324de3c286109239a036a6107bfd3fc70dd980440edfdae2666fa9baadf50f59791595ceb03048e2c0f22096ded7a17cf7952101091c9c79196f77d55b3b98698490bc81a96a78184bb7df2ba94cd31461699a3dc846d3b8c18fb5b58c9794f2e3d746d3acaca4a8b43c112569c3c186acdf93d9173396691a2461c3bed2f6d8ac50a669322e46549a92ace1f6f0772da45a4a9d348348d470abf1ca66fcd8aabd7a088b0a9aa659545084258da619c2a2026449d2b0e7a053bc8ad93a86b8e5062e6840bde7cea33e0d3b51565250548c103101c91978b51eb2cc5548f7b038501e07294db3525484909881cfa3de397f9ffe9d626b1a1f246548f50cd5a685a91057659a66073bc8410e9ae6dd88cab71421833af98e5869fa537c2bd334246348ec19df59e9da5642ecd23e5a5e5c80348918b85b6f7bcc3d27a9b42e2461c0532ad5fa46e80ef52d123020ca8696bdd5adcdf42fa44ab5add7ef2854df73907801d74aac8c5d25f6f8a90ba7b221af6d0bad624748b8802d251fe74dcff60b33245b58eaacc30b213e44de5407245a689effde69bd3a4e0d659c240b8eb0d1e962a771662b219060a111f53055a9d78e4fce4172055f07a96daad0f9b5da59c1535b263e07996f53b56c9054812dc375d4c5ffa59e6730122aac6ba789dee77f73970f48a6a0ce37eb5ea9d3a5c2446aa40d1229a8fe69ee87f09bd38fa5ad9cb1039228b4333755b7de9b47311e9040e14fa9a65627f23f84f448ab6184e4098b8d7a2d6fc9313574324dd33441802c1227385f731ec598df996313fc16db597fa8ad3f7a48ac40c2045f7caef1a6939215339019902ca1192b4db5d8ef8ab6fd184d73e4450c12251c574ba96ca6d6a3643783347c8ca08d18b88024098b1759b9a5b6707daf8c9f318404099babed11af524c447f04feff3c55fc9ace7e91236d1c7931426284c3fb69d77a5495fa78903680a081308ea6213902491110ea76ab4ddd25a622027266868bbf88795a588aa01469224d73a4a569c620190253a918a9434e495d5b08e9346cefb5d2b36e4b41e857aed2512c6d63cb480284859c95eafbc410364a284d13e4518ebca4cca08d18003183e407ee2d97ae473ccd8e9965a5191b4dd37206890f583f2f4c64bf3e8a59e268958632244545e59be6652585458d359a86e5e5e55b5e5c525a7a704bdb3eebc3ea9e5fc980077cdddb8cfbb0a9a534d3342928282f2d3770e1c10e4ec2c38fe80aa5658c99a681e3c8c152a4695ca003667c88d4f64a8b7d9b699a3958160a1cac55560672b08bd84a7e2d575b869f699a1b3cca0b6b9a203720a39be6555e9611171228e080bd735b86da3694d257a66950585e9a061319aef22965344dd3f84ad3c0f12aed1f478b110683232a1d9f31d667f9144f903996ba4678aa87fa3237a5a55752c238811c8cab10aa5bc5d669d9e250ccbe934aebf852a855a669585e565250901a417997962e82467e2d76699719f19c7f0fa2e0a511666643b796c28528d334475a5e56be695e5eb99cc6104a46cda3d87eb5b4a58a7e117aa237ee1bf02dd7e5db182bfae64c91e6de0a7d622763bdcb80c18238a1cdb4ea5b5aceb9b2eeabdc7af71bee2d361a229e4aa566ac5013313221de6ab0a1920e2ddb94ac694ba7161c7dc998ed42ed515a4536c08310335e69adb5e8c88c9465dfc6dab16ddf5cac6954549e91916146a9fe182e3cec89011963486ae674db1291aa76583be598ce39c9ead878324d83a25e9df7a15ba8b53c6c7d6f612181b7427d5a2e3a3b55c985303d08c623c4ddf2af9bb576d4e320c5058dd56bcfcad37994374d9fe1460925bfca674c57d1659aa6699ec8678a74cb90a639410d12af73e8bce5e2b57620076537d5b5aa4209a9964e9039fc0c2040504083479a50d2d5df891b3b6706899b2f63fbc5f88f92c1a3cb5ba857a585ea52a6697ec480f159bf3e86d63d62ce34cdcaaba03c4ad39400062d770fbf173e63da94691a315eb07bcbbacc9869fb30d3342add32c4bb4819e98dc31a5b3ec7a9ad8592679ac68fac08699a232b0d045de02b2972ac184141400bd869f7c616cab34e5297691aa446505e883411b8c10bd5efb767b77a1a65589ae6d9ca0a56ca689aa671e136d869f9dcfc88f58f3a3656d1739f626aecf862a6695ce5535ad3f01aa9719bbf996eeb36d53440dc6001267452aeaabc94c9530d6f0d9d3cc6273d73d54cd3b8c0d15f04e5e587344dd3a0aca4340aca82839560054a2957f7a9fb0f95d29617172098c66fa393bbf6306bdc1d6264fd186d6c00c8a1a150afefc5f4aa8bb5368d0a9aeaa46a25ccd6322d1e920295dc3857151d4cb70705e8a465f70b31a6f8fb324d13244810969795339a86e56525e5471b405afee50c222c2d65b02fc246d3040142228433f2d363eb635b4ab34fa669e4f815359a26f3f272cc60a57938e1b2862d55cb1439f2e2a3ad9cf1458eb4d13428284d9383135c4a7aec20454fcdf3b4c68222a48cc5adb596741f93622a9171e8aa2963fb9ef6170a32466b42ed6f7d26fce617023116f95f2767670f3ea34c909346548ab8a48ca15284480a90a6294224a56988185949238cf5c76e477c4446fed2f2620861cb1062750b2ff155674cd01ac2a5d6ee72c6dfd219368212a03b87a953bc4879b1cb344dcb8b0b4a1017f870818f1723443600a409b25263ae34f19cd7c39d691a143048b01417ca46c46753b7cc348d8b02c174c894fb64b26fda324df32f292d726060049dda6aaad5a38cfaa04cd334cd0b91d6341a681ca1a3129fa467539dca34cd7f4b2383196a2b95afc73ce97988348d0bca8b0b4b0665a5e5048b9b1a1b35d36f8a35cf348d1c2c2d43c050abfc897f4755332dca340d8aaf340a8b374dd30411f2438e5e230d65768bad94723ea79dce34cd909514383c904efa4ffdaabd77cb39d334284d83101116961ef9b9ded0223ec58b67659aa669f21061614119d28282d203515c8cb4a0a040e038208207800181107ce007044040810f3cc0031de80007ce053610010d5c200328184014140f5c00df05e50216c8800f970e54a00314f09546f9962e4284054d80c5050312c00b44a0bd1899000410e533280f20420107a0b4b0bcb4041a8074020c9883458e170a2c008e66ece15080a6e323017b70c84a4ac6a5333ebe7869e9170e20e060e0002b43525c2c60007439f270a074a0001a20c021c2c250be05e1d0748ab077510340e980003010000d00000505033d38c0e3c7c9100eec68e9576128ae9292611ed0314713a98009a2b0a8a0b0a83ca0648ef739de0709a2f8a3683a28e7e16895f532c77f0053803204e01566207922bda22300af7803c6650024731880003087e0842884603007508013305fd0400b3d04803904273421a4472e5c5ac0100109192ba2686921a3063e6ae0810e14e91639568c348d4be6a5c87b9146e3bfa58d307c342e2d60fc4b0f4989a3e780c17c00f3c58afa62a5dd2019c4cbbbb81069038329d9010683e9a103cc909597765131e282a2d2252b2445587c343e9ae68565884b0b185fa86ce10b95236030cd28e050c2226209cc3bcb0a26d070861d4076b022831f3f8290c08707e6f0940ebcb45741b346cb0a5edaabc0870f1f3e566490031f73780aca0ff147818375cb8b0e5ac8f12b3a00f1051cb7030b709020487b15145761d961031200f101021f2baf8282e22a2c24282baf4204932eecc0604e08e1e23e484002d682d17146193e8204a107e82304242001183fc4ffbfe56589c06585a5a4e58b212f9817b471861842d41022860f203ee6f01431bc112648d0d1a24345478a8e8c0e141d2cd091be68270eff15373098921cacb094c4a1a262240d97d3026cc1b5c0031dc0604a70d0d242061c2b20a38d95941410616fb4bc8b91962f62840d36d2505111a2a222444545888a8a905f6149a30c95141738065372c405832999a3ad40450e95141760302571bc3021184c8991976f6136582c2a6160302599932f8a2e7ba45b5ad0916e69117283159634309812ccabac94212b46cac0604a8a1869184c098ba7b8b48081729cf86275e006292378e98c8b916f2aeff2455858545c7ca4118227a2f272f8e87d43bda16fa437d01bf9c67903df5839e360916e6983a565c58d9716962246d8af41060b4b1baec26286caea179634c2789634fecb786149c333cc484b3357497181af81c194d4a0c378963654548c94d1f2b2e2861a6d052b2c2964bcb06f8d8c1537fcdd58212942e4a5a5d538e22c61f819479c250c3f63a5336d7c0b0b1a2f4288b0acbc136159692983a5b0b4a0c5888a1aae929211e388caca0a8e7c0a5ad819778e3cd239de574e7aabd144dac5480ad438b22244a553588a1b41814bca9057814ab394950cfb363e0e92222f292b6ed8a044050e1ba41c79383018923f946486603024458278e0c749231df0f1c3031d00f2a26264068a33d88b6306e8e238897134cd89c3a569308e3d686406774e1a416a440f5fc02014184ce6a5d50802847d0bd688cb1a0103052461b091c60ace68438c34dc4001ca1b42d06059f1d1c292e2d20246ca8b8a112222c03848be808119184c49c360303d4a1e832959a3c4df0c0c0643000c13088029c2068840043460018381c3a5058c77160c26052878630e0c06832cc0609680627282f828d20a0686807d1c2a2a4dc425175fb8e00583c160301812746213188c1b9815984002180c0c305fbca10b0cc603180c860a182b7cd1021d60309834305288020230982704810383492100065383385e65ad9415127ce1860c7c8ce0f8d0808f9557391f24b0808f95579183458c222e435688f44aafa8142192c2be052e294584b8a41469cc192e2d60306759496979c19880a5a8b02041d688a6c322471b0f47ab84d12ddf2d64a494524a092184104208a1cccccccccc73ce39e79c731011111111efdcb973e7ce9d3b77eedc6166666666dedddddddd554a29a594524a5555555535a594524a29258410420821843233333333cf39e79c73ce41444444bcbbbbbbbb4366666666e6dddddddd5da594524a29a55455555555534a29a594524208218410422833333333f39c73ce39e71c444444443ce4559a501e4483c8192e2d6074cb8b00f3822f5030000c06b3e2461972b0a87c189f3286ab186171014b1a2c2d0f832361b881c1943021184cc97a3858da5083258d35309892c660487a515283767146061b64741862b8b4a4b12244484a1c296394f129ee2b292b8f0396160c0683f1c1b2e20139585cfedbca19293e322f2d29cbc74afb587161fdab557cb834182e3f0296941ab0815242030ca66406415c5ac05047baa5a539f0851826c060304356525e5a5896101f60bc8f232d2c449e480b4b4b0b19cd176180e28b306a8121c160dc38b2505c5cba8819c2d081c190e4e165a5575288a4b430232befc385884bcbe1c262864b0b182e2a4588a4b06e21c034e20b2163603018374a16f18509b05083346af02e706901c3ffa5cbc0604a6430642505832989010643d20bc698d2f17671f62c2f458eb4b01924a433c8f43182351283202e2a1fc7aba8741c2829282dff45d060699a6ff9d56194b1460b56525a450d367c45c891962692d2a286cb0b8b0a1bfe648421240c232b5839a38c355af0abc3f00052233e7e2035d201e6e2efd2a0a0147199e3d32852a4518ab8ec4137fce74829c31140648171690103c5a5050636204921c941c90bfc978f232aab5f8c1049c1158ab092626448cac294e18b112801b3078db8b480e12b282dff92824284a5a589807d1ce98b460dea8b110400a3a292b25a5e0d3e1101068349c17cc152c0340d4a11179716308ab0b8a0b47c11124ea4ac3d88e2d2f245543ec3525e9e48e625a5a5f7a09194a662c4a503180c11cc17bc0016478afb682c2944be0583c15800b3c3043b10c6a5058c95967f79e922226879713159c417fbe3968b0a8e7ca1544152a4e55bc0c8bc7411111c79c110b0b49594210a080653f286cb8b8b9135322f4d83c19014c194b88004102d70e3e5e160292f184c491b180cc920be7d1c2943d858e385a4080653c2021595662f2e2c44505e1a05832951e38b1c7941c160306bbcb8bc633018365c309892156030247ff09492345a304711212fcf46cbb3c186af1869bf86af04cad939cabfa74ed91688d141ed16f5ebe2f3245930a945ae4eea28e2ba3bb62e430bd5a853f3dbaa37edcc34cd11b606254c66d1fc8e393afab56cd48c112226b248a6bddae1e47e5026675af02305409ac60c9358ac65ba1237f1ac94568305abfa74947284d4abd699a60183c92b5c35dac6a735ddb51c334d63e20a5dcec3f456a9360e12440826add85688d965daa68b73b9092b1aca937be712b1eca5ab68e853366574e7db1f4254856a5f8adad11fb3a9bc4bc5615c2b2de466e71c36543ca74a08b55faecaad99a65181c929fc97294598dc733176a6695260628aa4d4f2c3bbb2fdbdae4cd3ccd168fc38f229f8d1f2199736a348a351a489e4c0a414dbdbae1d65eb91615fa669c83021c5ea66cd6d97cc98bc99a631c364149a106162aacd749ed144144cfd3c5a9bcd59adb484fc68a30c93501c96ab8f764ff5e0392598806213b1f57ed430d75d7f2261f2b3f47e7922a974d6f9de3b6eced4346d987402b1f5070f1d655dca5aa6697e48cb130181092790f9dce9a3fd8a507fa6695afa55d818269b40f7887d4bf6b5078f35d11cddb9134b9bcd59669a860571204da308934c603ab9cc14ea9e4ea4468a60e2513654a430f312c750efd5b2eab563cb3fe3d29915236b6209c58d131f2da4ee6a528974ddfed891a162cc54a621630526943888f68ee9ea74da5d049349683bad5a53190ec144126939ff9a294ce87871109220984442171d6acaf096d3c00412baf81b5a79e8db9aa54cd3a4c0e411ddd4635e36c6dd3b9b699a203f7c2525053f7ea801e48da874d3103171c4497a6b95e2765af519864923165b576f76cadffd87092316622e52492566755c5cbac89185b2e246d3b80e4c1681fbcf7febd95a88b1cb047995d563b8c044117eda42b878b74e3bcb3341828881c60f317eb401c4c57f8e94329a26072689c83eedb2e1fea6e39c886082885e9749e9c9848db5170d93436cbaf69c10ab938ff4649ae6480b119696328e9028c1c4106a172a23efec83cc5226c8afb0a888d134bfc2a2c25c80a4c0a410c8abd84d257e4be64b888494a1e5e9b135bbc386fc09c41862328886d2dd599f898240bd3a1962f4ebef5f8c104179318286320944d2a39f6b69b3763bcf34cd990022cf5ab44cd71fc5fdfb0764a558a53e7dfe70427e6076e82863edebeb1ca4a2d228b730e9c359b98bdd1f4febd91391948c0b18afb2fa258e1ce4c00c133ee0aeffc5d88eafbdcb4cd398ec01fdbad126bac5d09f33415850dcbb6982bca4744b1b3e5c485e61a28783ccee8e553575882e87491e16732d632717d37b5615133c24f68c90ad754e61267587d658b14e8bd5f9961f87891db00eb702133ae01c48602207212671c873120c5fd4b897f2a3f8fc9c4cd3048181091cd4f979f742eb24b3446f68f5ec2731d430a13ae906c4c9266d406a9963f2c3cfd39d48306183a246642ba94bbf7fd21a963ac454b275564274ada2d26298a8010f31a6e10eb1091a92bab39c770ea96d36c4e40ccb8e96f22b764c8f2233f8b9f2f409a9fad395ca80dd90ca4dfbdcfc2c17c3840cdf4751f3f193525dc331b463de2d1dc6921b3a2986469d1e9d5da6ccf630b02e8492f24784cc75c1e0ed2759bddacf6c545230f9c22d3fefcaa8f15bb2f20262e92c86b437199fea0e4cbac0ffdcdd5c5d1537435c408f9ce889bbab79611a3f9260b2054597be975779612ebf818916d6a52f2b625f9dad3c0bbb5257d34499ca91b3154cb0c012b35ac63f4e76c9e40abef219325b9ba8296f6130b182723e8c3e91b546feacc5a40a892719cb73b67d397a103fe3071032489a604205e7e3a698a9e5de1d329902fa9d967756af930e6a13296462b50721bf7ea510bdc0240a88f42c7f6642a9f5be0914f0d433e576da46d63479c2317614eba50e26e46f4427ece55a977fbc5ba3f414932630b6ec898ad1e9c33c08041326e4231ea6f25bdefbfd9d104c96d08cc7d2f13aaf0a792216c14409ca4f5343881d7d64eb97609284efc50ee2b5ba663ccb0409beb85ae3a9aa73a33d02ae9696ba4b7fcd1bfa3480981841514a0c3d6aa65a6d4bcf5254d8784909a3694884605284f4aa9af6d94e559488b08f4bfbd949cd0b193b623284d64ca72f7b93b5bbfb01240b2642587d5252ed1c8597b7b4c5240889a594bf8819cff90f32c7fbca0f202e2e4f42061320349612536bdb9ed6ae9dc90f549542987ef2323597890f983645b54b29e276a46450d28b544d0fba94d479a6fe5a4a78810e29e62951de27ffb48bb34bf52e2927a6a95b5082c4a04417c87839b3b356a59beec8a7a0694a72c19a4a7b4bf7fc2d45c7c51eb630f9f629b3b6d62dd0f5e73eb36a9ad808881925b648db3413222f54d6d06b912d51795b9c88ff94d182d133f7b37e653acd7b168cb81f3d5eb6eeafcae25ed5d9d63c5d7bfc148b853e95ad96e7932285053b6bf1ad6b79107f2d324a50f20a477e2d9d2e4dbbef0ad6ed34bf36754474d90a6e8cd9c9554df5a79f1825acf8f3c4e4e75c1eea6659417996a2e2b28af73e8abd3ef761c60d5115efaeebb45c96f9ebb454e46623a6ed9a9eb6868ae6d4b668b1d6a89fff148b6d239fb776d8ecf5ce147ad051dfcc9d29448f1a4bc1d2ab5445a7183b5b88a450be3fc8dcda21aafa51e4b567f77c8e226ef82828110572d3a38b21c5d2296da168668b2dbf46cde82c050ad47b4a11abde3eacd92714db5b9c767711cae39e40ce5d6dcdd6498ba5bdebc4ffddb793bf072f59e344727f7ed44d35b3916d42134baf1af2df72969026101e85f8a0d4c7dfcdc4f145c6f40c5d4aa5081113eb5b31d3a2ef4c8df812098fd141ced6b972942cc1aaa9b4749d2984feb712875182b110b374e78c2e4389c447bcf42095b954771279184b8c075b378596a54412ed7bd3bec2b5d8f22381eaa8daf72b3abe522181fe54cf2376165f2a758fd8e3759c36ed592cdd9d23fcb3253e0d9335dda31aa17cd06f2be4dddaf9670453e8c795226adc7b5dc4d96d7678b936b6eaaa08f4ddfedb39a848255f8948cd931763476b39b18588e6dfeb9cd81fa59aff10279dd6abacfb49557a43e06a5e7b89ed9c95ca8560a7698f57ba5b47a9274477af373bfecd574a3808941043f69347fdaa2741b02bf5d5eaf8d7f2ce0bc437d3dc84743f357f06049e3cb49429a44821e60c1a257fd076888a795a756717f303db64d7f9691dc4d0f37e50d2074dbc08863a5256dd5c9f97e9655e50c287b428c158dc2de952fed5e9bc324d13648d923d7062a753ba8b29fff5489050a287c6dc6c89fd79b5cc360f9dbcbd296b899ee54a3c9c3dca0eb36254fd843cd081324aee706d216c48254787cfac69de28b143432cf5b0f4deeaa012a1d2464d375bafa2c3adfbd743aa9d6d94760ebeae6db59f39436c490e87d122b4091ba66b75e280164327ad62d5c66a191c78bda333c3c44e71b6372875d6da3b4825b6bccb0dd8ce749d267c4d954e1b12a30403f969ad4e4ff33e73cd344d10204d736450c20646c89bb95aeaa25b6b585fbafd8dd9af937e0f4ad4b0a7fc97d5b9c4ceb71c42491a160f0d7bc91d6562e9cfd0be3e5d939d83d7943a6986f4cb51bb4d2ab14b24849232dc2646304e73b9bab375943e65a66982b8b451420647f5974b1dd5440dfd7cc9183659135df26a2be55a7094880175a5a26e781211e293691a7f77614149185621950e37f76f6cb51ca38d12302c76ebdea90ff9bee317585182d14e35963857b5b412481196166f9a96972261947881efd46db7c347f9f429e982725faa2153a5cb9b38d33441c668255c406c5b5abf4dd9424c1d0afb385084946cc1d91f5bce7bda912dd64223a49a21dcb4584fbb240b7ebf27f72c42cd98724dc70c2062946061d1135aa7b3693e627f8594db9ab8b5956ca96e215d28b102dea686dd8aba9bfd194349155853d6b5aa7b2a25866c504205d53cd3ae4476a4d6392553c86cc4167ac676db5235522285c556aa6232a4583d57a6240a8948a9e25af507f3302894408125b610bb69fec96cf60447ffcc88ce3d438c2ab3851227dcda74d8e9d7aba6dfb450d2044c798969573bbcd611131e5bc2d384a9937a4b99a65141c9121aa274be8cf1ce51ce285142eac35a31d64a7fa1575f2849426af5e9b7195aabf57f0912fcd7cf63dabce49c47858565b9517284fc6c0bcf51b9ddcb7e488b154a8c70ca917fb717ca6fa74d438592222c2b2275eb89a9a2c45ad050428455bea3525525276ca764084b6f9d937c91e2cc472e940861b321bac443fffdcf99a6597995a679615171290942b663a416abd54cd3bcfc90a621410910d0ae4f6d71335c469d5728f9c1fd2f4dc6ec1a91bddd11a1c4070be1a6ee3faad6701d1a24bd38dfd95cbd6fda74cc2fcf06114878b1d8a8f9bf5adc9629dac5227c75080f576b435402892ed05d3be5c5f64f42293117eab0a6a67667edfdec10487091de55427fc80fdb5e740be5c850d3ea3e6d153b1e90d8225752ddc6edafe922d503925a74db93143d7ddba427d1c24f59e7cad51af9b49d455be9ea97d7bbca4ede01892c583536a34a7a165da20e4862b1a7a5b63ae27d453e3f56d042028b75f848b54dbdc350bb0824af68d5186f5b8aa54e6c33d33428435652dc207185a6579ed8f549e47495699a33485ab15cb1ff19a1547d1cdb00a242c28a53d75a759ec2cbf42cd3345806c92a1ab2dc4be79b7377350da22ad2d9d55652ceea9cf3f5039254705bdf0ec3b33cb9b145f203125460539fbe68a59490ef29d452dcadca2b9f9db5a66066cec7d8fdb0b5548a57cec7d2ea616d9a488c1f61fc10d281374848a1ac18aa5b879a1f456a14a82ddda6f3eb44918efbf296d639c5b61d2c908402a542ee8b0c39a6c55a154840b19948a5d3e8d0e22ab602c927924a847dc888b789d914483cc17ed5625b4c35ba64cd04924e9cb262efb74c99c2cc209070a2bd27aa76d62537638c02c926942a4d744df13a5b194913483471be8e7b4eb645c5501d8124138f49935fea628c0d778e37a3e5e56051419260e2195b0bd569d6988714c822b984af854d79fa46ec24a69a8e1943482c81fa7e4857fdec21371220905442217b623ad766c4456990508221b26dd4a9d1bb1faa4132896ced6db1f39862dfb7072571f41c858ebd7642745810a44680b45f03c80d4822d129d972e24b29f12a438484365d8bfacaa7f2167b44e36cfea929db4a08a12370fb2c4bbf9631bafa4670da757bec1a6ae8ed1991eb0aa16e8ad80fe101c92216533e6db5c6ab387922490289224ea2476defd592fb6ea6695a4812912acff9fa43fcaff65e5a5a0d1d9020a23545ef8a159f2db6ff069032480ec1995a37dfc5f89a5dc201892194910aae493d7f363cf2824ef2b056a9c43ebe58dfe2738207324eee90d29e133ba0b4e7a40e97f69cd0c10527735847e9a786c9d62a36d5342c2772c8a6bd9bdb54428eec6d701207edd44c8a594a454d0607a4cdac39b535d1510ae4e54f0007fbcc0c4eded01c9b4a95fe5a7b633d71c36108b5955ae8b0d575276d50debabe2add51d4969fb0e156ba9fde5faad55a680d8ebecfb3dfe6cf7b748d31cc0072a20694da6208b5bbb3cb47d3f069b12772fe5154cd4ed0c0c8de8e5e6736c5fee40cd9f8a8a350a3771e4c2766e84eebdc5dcbd3ca8a55382943e2d42a5d6ac695ced709197a611efbfeaf9331a84f8e767dcb935ccf8ae1f0aa7663dbdcc9ce4ec290d8ea85b4516ab52aa1760206ce73649d12395adfd772f205f58650b73db16f3f3ff1c22a5aca766962cad7a997932eb422f3775446a53a9519404eb8b01ab53f86a97d7a65b785f3edc912b3570b39e91c275ad857b696b15d2743978a9c64e1154307dbd751b43c1539c1c2afa61419bb76f5c36ae4e40a7bf257b7eaf993cf9739b18272464d1d4ee40dcf3a729c54a12db44e5b3e6ad3733aa1822fecb628dbdd394725979329e8614eb8291549a12df73a8b5361aef40c52868f172344362004880d4ea2c05c1d53e4ca54d385f8040aa8ed28de69b9f4772f48b7bccc41c60f367ea8a8b4183f8400691a12289c3c2125d46ea1d62ae1e92f72e405c504274e78c52e17dbc5691531cd9c34a165afe47d3a795d374ae184094a7db75288ae781df45d3859c22374f7296fa9c3ecd98a164e94708d9826e7a48986194e92706721aa6e2cdd9d4a068613246c36eda35a6297f652a2e1e408cc132bc46bde5a3b22379c1881e551cf8eae43ae5657919322e442c7fdcb7d11a15929aba6d6e96feeec062743e8d5fddb52677242ff2f274278d48c7952c9d816b206e1ac46a9e541e9ccdbb1911320ac7b6ac812ba7663e5739cfc601d74a7ccd1b2bf65eac407a87511fb5ecddf1ea55e1c226bc55cb1553fc9bce8b650fb6f4b29e68a6917caafecd951d5d34cbd0f76e8825ba56c7aed7c15a15ca457a7e913da4629afe1e2f06242850cadb6ca8f093b6e91fc9fbf186ad5577607a2851db6e87409adc5eda056658ba4093b6a918ba8553b1d35d33a2d1a53e596504f536bd32c725722bdd529a576d964d156f259b5b7d852971a8b555ca95afffaffa3162c3af566ab3b0abfbd7a2bec7885ee399cc9d85208a555ae50e67fd6e293943ac274851dad48a5d4a7d75ff56b9dc60adeb60d99e23a66897b159d0ba99ede934cadc5aa58a97621ba5e763c46a9e0d5d4acd871bdf6ea50917ce1ede2a75ce88ea7d87fb458b362feba4553284ee8eeb44d8719db550ad5efcc9dad4abdcdd11a7690622545ec959d4b31ff1e851f6b29b547847e9bf232ec10c569dc542a5b5bbd83870b3b42819cb1674bcfd33d5b098a85fdefdc4e21e6f8aa0b3b3ef1bef0d8399a47215f67c48827ee11de2afe34b2851d9d60e5c7297152bf8f3eb5b08313db8eb6c54e31f4e4e96ad8b109d5938bf69c5cc40e252fecd0c459bf54dd51cced587547267a6d7e2347b930c1277bf9e9bb6aaa39c661c725f0d57db1fe41a79d68861d96502ba583ebd97b25bca95c87c729bf554367d841895bb5dcd21faed55802c38e49b4bbf53d282963bc9addb0431209174256cb2a213fce37ec888427fe4bafaa594b2c1f12a9932e3efbca79d6b247a45685dab7cc769827e688e44b8af7fb764f52d608dc56b434dd39a6fd8711c8515d3aad6d1efb6f66c722d0da43b7743f537628e2d6496ea9e9b7739d180f76240219bae647bd6b3beb550f7620425b7b94df3617bfab3dc423f58921a7966d5dd5108e89a5f4de492d5728ed6047218e3d5bcc7acdf9e87a8e1d846889a81211a93d77f483389cedacb2e794c7b01dd92108cfc666cd50a5d47cb10e7604e2df579d7e7c5eab9b2d3b00a1bb14b36e7efa61fb1d7f60cadcd51d7ed6a89df5b2c30fbfe7e836d32b574cb597958fa30fd96a61a3df6d6a07570b4b4b0b193bf89072d75ba13ddccad71e96a9d36567d11f2fb61efc7553da4eccd8257676e461253cebf061d3678a070f0a7dbb4ff4e8d4eaf91d7748c565fc7927b5c764c10e3b9ca6d261bfce945125ae0353ec5eb5ab9372572e3a607b42a7892715d7f61c14a5d390fe694c54ecc80139b9d741858bad2d8e20ec8803faa35b8d54eea6a5ec77c0e1d21d3cc18e37243f9ebf4c13ee6a4e3bdcd047315d3cc61c9925204488903861471b54f2f57ddfed7bbd1a1b70b1e1496eee6b48d6bdc5dab3e6a3a66a58c7ac193263a3622cfdf8e167e861471a98276f46f9c88e78dc053bd0d0be6a21b275e6f97dced0d81de407b1f14f5aff83a599e1dbeab794cec94ea87347191aa6e54d135b8a6d5d9221f1f95d5dff3942e7778c21a5d488a96ae8b0a213034aabbeb555d5741ab730b8af4f6bf12574f9c960c0a54eef692ced17f657528ca5f2f4a7257a81dbd99427d53a72ab2e284e679dc4eeb3cf94e2c223eaab761a2fc6946b0b27b561af94bc515becb5a0ed5aead449751610c25c480f226bdaa9c16007163c6dbbe66b7c8ebaef1554a3834dbd216e5eedada0d26162c7d5a37674b40a0b19323cfc54e8092515b2eff462cbd8b911ca1d53384899a72e5f6973b53dd0811d52c8a314aae4ef8b841d51607c2e53b6a5998e5ec1610714fcd2197993b3aff261c38e27785acbc8ca8e31b76a4e3894583584bc781d76b80e3b9a809631c54a8ff5a4a69820763021f53929b1fa84a8aed512bedb7757751e45b95012762841b54468f75b55f795ed4842c265bdead6b3d2f6bf0309996b1dafa4bedfcb280d202c3b8e908b531b956ae89b4a771881eff8605f2aeab41a2b4243869c889469b7aa4384b6106be8203ec49a321c42ae85e9202347b4292d2124e6d45c3e7bec169e2060b685f4f3b7a5ff0e2030d4a354ea3a2686f93b7e70af10bf22b5f46c73dae103540cb143caf5646be396f71f2d0f8444093a7ab10d25840efd29f5a9122f38b17dd5449eb295e22e76216efb8752920041872e4eae1fc55a3d75a2c25cb8a6bede624779db22367eb401c40c3a70818b797af01cc6d06aafe3167d9cdb5acb7bde9381c8a1c316085113ed6b23f293aba3168c1d318412e7ef40072d72f59d33741aad4f388b4dab9542d532216247872c92fbb3c45c131d57aa8e58381eb4f08e3adb743bc182ad3ccd942f3d7ddab625e87845aba65c21a6d2869662516183880e572cd6c99133d3c5ea8ed2d18ad6daf26b47ec59d5192b107999594366a95f5551c72a1453bdce4abc0e4beb3844872ad41be523624db56f0b659a46472a7415aba374dbad7bc23174a042b92574789dccc67f975903e938c5b3263cfc948e0e537caac4d269adf1e257a5685789b9423d679d858814e9dca2dd47d6dab13c3a46c1ee4fa2be45761032ca0429c2d23246d3b8146139c3c5c8186ee810854207571fa66e0c7d6a94232d2f3a42c1770d99529c569dc50505f25796cbffcedc107d42b19fa9965c61ead6f504fff223bee4c7d9c799a6e9838e4e6442adb5fc5ebde7343b473e053f0e1ef914fc402ce8e08433d67df2a8c594f3a14cd3344d101d9b68b5fd0df1d2efa8f7d4a109d57e1da774f8f4ac763271f8b4a7b2c48488d26182d1e5c284d4fa25dafa54ca2bf32cc116f2326f7fabce4a5d895dedb6d78e7e4ba99cd1410964979bb075da4e9648021d9358859a29bdc3eb7dcf92389b7ecc992fda7edf4cd3440291336c7ee89aee12659ac69b45a56982b40144e980c4a35377cffc583b3cf50875970ee76efbec5b9d699a17e87084f3b77692224287b46da669988e46a8abc398b5559a6e75ea6004c37da6c78f5b4ac8d6063a16813499ab478d132b3af270a0a01469348ae850441f66ea7b468752624bc42652c5146acb18c3c68860ee65cd67ec8df3d8214edafb7fee8654114286582db5439aa7b15adab0104d25649caa4ecbd64b425c4b99cfad11ba84d98348e8929fc572b96add2588c5f567a6963aee992710ddd7ad2e1d6d63771410e8d9c283cc3159eac37f58cc83291d968a7699f243d25fef8ecc1829f6a1d931d4d6f9fed242c6874bdf946a4dde50aae33d206e786b4ff67deb1e3df835969ab5776394d8e781fd71576821d51836443ca08512e14128952b46bcc3e2659ad626bdc395ce0edd99b0b1957411a77475487e0711f2ab67d6d6e890127bd61073677338c6e9712d9558fe7a25073cacdb37c63dfb0da138b476c5a9baf4ac646c7040da381722f5cfee5cbf819de4871afeb25b546e58af7039fdf2677e89b5212dc5306f3152e776d9905cb5c4ed7a7ed711ae013b99b14febe5fd536a48af30d7e2c614b64d9686c3a577b7d2593bba46434aaaf27335fa7414ff19de9bf9dcea5e6da9941914da94ce56e5ad3d6b95e1f8fe93a1e3aa5ce8c9c04ea2f5650b65e2a31d439f4fc688a94aa851d304b9820e31f061283bef9ab1a5fe868e30e4ca6488ac2d2fd576c1b0c8fa645babda71a9fac2b3e36ecc5ff16a3af502bb65f68db911b7fbcb348d8e2ea885dfb091b25c88f57321315d8735a5e2b5958c888e2d605bee792c793a89d46b215b9dd34d971f527950165e71217b5cbecdd51716d675a7a4ad25d6d2fa2ba8b37d8e2d1d54ac9d6485961a3796503a958ed2730308cbcbca19aaa30a8827314c0b5b4b958a10712388183f88b03780c0b192c20611f646d3142162040a3aa870161e6cac7c3f5fb1659a660a2725c58cd849c78953e990026b7d27a95d74562b33744441db296ddb90ebaa961e65083aa0f088eacb19634ca1427e425ad6d67ab5d83be11cb68f4e0fe2a45c9d269c669b9ca90b731dad0e261c4d5dabd8b54454c4324de3a26309ccb0b56b85fe75313fc332e4c5080b0a8a0e25fcab5d76c484124ab986e8480252ab72dd737263e85f0712fa2f11973afbaa9db74cd3e83842365dcad6375ff5dca7c308cfd6266e8b31d4bfb424a1a3087cd842e798ad5eccd0669a860c1d44e83eb68f1a3d1dedfd10160f6f7f6f1b7da7679aa648cbe182b2c2d234418ab41c6cacac007f5c0780341d42d044869a27f5dddae9a62308c99136478b56a1c4c47400a1e9a773ad11abd7642d43c70fb213155ae7edb9650b0b8a0e1f203fec93bafc3457ba4cd398f4a25d36fbe9b55ad233474a7b5e3cba733abe9a5228ed1cbfd234419aa6852545a557f0a30d202f670099c36417fbecb466cd8e9e0f1d135dac574bb1f4965cf7962e14935c1c94ab1e51fad5e99be2e236e9eab16e6ecc3e6f711778af608c8c9a5bf2c53e475dd198b686fc6c5acc2f1b4b193fce0052a4d1689a222a3d5a7192d2a516ad6d4c317656b46cf8affc379562a77aaca2d9d9eb6feb550f552ca51263890bb1a6b9d6919697232d6d90a0472a1c950f21fcc4f4205da840775c992622f738054aab8d564aa78a19ea618a9558b684acf686d0a3149958e9b65fcd9142d64871903aeccef7394d9b1dc8117a8ce2512594fa4fa3ab472f8a93d65a8897c2b4a7dc4371a8b1c3fe5b59a2931a137a8002a94599587e439888fd13be5ad1f9b6fadc7922616b2b25d7cc3ce8bc13c9ea13ba4df4478f1527dacf97a9d7ff76ced8267a7193e7aa6a3cdd5413cc88ffb87c32a96b2610ad676db7da6ea2c430b1de18931d67d8bbdaba04fbbfbc4bfc8c7a53f31e9660fccaf96d55625b2ae67f2ee1127a50021d46abfe94ae4924d65637535359a18724f49c2a4eba9bff0b4522bf137add8549559d0ea107243c256e9d7bed390ff623902ad68ba5548ebad4112a657f5a4d69d3f27dc446681fb4ad98d9169f4f52e8c108c650f5cf7e42f4be761149d1abe54a29f2d1533280f450845ad5e684dbca2d9d4d446a4d53334d67b5d6af1e88688955534fe8f84a8ca943ac657936e1661a02ddafc7c3beb5d21f2ac442dfbfb93c1d5548312154f57956daae744f1b04e3d796daaff68b94522a3d0491b25b528fa85a5bcc2910dc524b0d9d6ab6df59213f322e6dc60f26f400846266bed6b186f41cd31f74d9497c16ff5ca24a3dfc708a0fa1ce6ce8db7f1f3aad6bef65f9a9354b5ae8c18763e81163aa776fbdb98776d82af6d0031ff6eb30b284eca8b57ea801848d1e79b855c79a334e070fe830ff5fa61af5b8c372c45827c6ade73c29204ee86107a677e79aabd39f48a13ab46ecd4ee7faa7434baaf82c6a6cc76a7f0eaeae97b23de939c872d0b3e7ee4e428db9fc2e0e08ada6b33acfc1819d1fe76cea57f5fe7ac3618f4e13ad374ff93ddc70102618d8a30d87307bb021fde47adaee67c73dd7c08909461b3dd4d0fa704294bcacda54a781dd613a99dbbd72570539038e9626824272841e6848a3c7190e7273a55ced31f386d2c30c7bed3cf6693ccdb5fe5b505e65751b72f41a26e851063cd6af0891f5a53d2a33460f32dc61ced764bae7594399a62112c4874bfb10020488affccb1c64344dd30091a3c71896d19e95d61566e2cc8c3fcbcbf7104366524d756d43c90eb98505e557525456108657adf5ed7a6d2c7523f700833a33667e303d2e7262e3471b405e9e0deef105d675d20f2f547c7ad8c30bf997d9d2fdea5ca73f9342468f2e68db6fc9d75a9d0829b402205ce04fa9d8ee57152f3694203db670df78316eee74fc8d9fd2d2461b3db4e077afda2d7a758ea1d6230be72853e3b53cb1c3980a6206901e58b85669a5a552b1df23f4ce92468f2b30d6a9f0b855a1ca5f28ef2c6958a1ad750efbf12322e659dfa30adf54516e6329333da8a0da8877770f9b726b1594222c2dbe22831e53608e4afb96223bdf2a659a06c5575aa551d8b7208d95961e526064ce3feb74ba52ad324d13848d346ad0230adfd652a47ace2daa5f99153380306749a369508ab800613da070dacfea3195e88b5b0e3172831f837d0b9a468c1e4f58ebd16d6bac57a66982a800c88b1134c218e3535ada58be1ce5535a5e84f4700263a9f1fab3841a42d504943c25ece5565e67eb480f26a4a5bf5253cbef0b552da1356d6f8997dde93b4d098b6d7285cc8edee8be471256719fa6492d7be2e428c0410f24783beafacf67cad561d3e4a0c711ce61cb8c1eddcda087116e6d62dd4e656bf25484539938ef0e331ef420c22d475c8ab576db9caec7103415f5fd7b6f4b4a6f8e1e4258fce7693d4bca505bcc7a0441ad46fff97b78cae9e2e80184fcd5ebf699990c7afc604f6eeea58494da96ad870f5c2d527d7a33f5625bd3b44929f765bac98317eae41f77d4dec81aee2e341b9dc5c8962bafb22e745be386fe9bafbe3b3c7281895d7bf35d9b2a35c745ae448f1ab153ebdaa75bac223d49a5aa8650f5a9020f5bf8395e4a292ed662d33d5adcd033736c5a1c5a8dadb49f3c8b4ba7a9e68cd06ab70b334d336425c5c5080f59e4ee39ecc9bcf6167d2cd68f326eccae70dd2d2c38bd31d7f2b3c8f00f8f57b43aea5f4af1a966661eaed88516f1323d0861ba3e29f88129789535051eade8d4caeca82e64dc2bb1627923564a956ade0c99c72a58a55cee8a8e6a6df579c04315076ffd696a17397ace54f4da3bfcd3122ee6b93c50a112275bacb9a75fd39ac1e314db52e3fec58988a972cbabc1c3146d95e62ee36cc8fd56bff4184058da4a29909f93ec16513f628499a649010f52a0e64feebb58db842dc5e0310abe56accdd9cd10529d699a4f6979e1218a3f8add0d617b84bc27148aa8216e5b0b29a4ab7880223d9d5bfbdc121dc4021e9f48aa1d96fad69f5f77f504a64b301e21d57a4993a15edb323c3a81ed54d9a9cab3bacefa951570c2d37f9dd6c66b7331a7f0d884f2a41e9d739f7cc858093c3481fa94afdb9e3bba12f2c804626469f1aa47c4d6f6796042b15e2b1559196bb4a069541e8e961696950c73699ad61207900c8f4bf02146f58a6dd2b612b3443a8b32a9743051a2ef4aa0d6fcf49b51157a46094eaacf619b1cdfe03109ff452955519e2b6b2809bcc658e26eed7498b637784442ad43edfdcbbdee6443c2ff8e33ef2ecf5da9404ec0e311f92bd3a78328b15ad4322899971439180f4778faed45eaa8a183b899a6093283201ee8400ccce0d188f38c91fe7a5adeafe9c2083ddbbed7dff16a789f699a35782c82a9a3fc55eb838e8722185ac94ea99e5b0c19669a6665488a0b0a7824a2fd3d0ff3e63f6cd1e08108b6ab7b2da9968c2d55a66966c0e3107dabbd42e89c322a3a1e86380df734539d36e39202031e85388efdffcf18fefd352192f24cfbabeaaae847e4c5081a191e83f0d572e931757796fbf31044ebe39ffaaccf56273910e85437d6d429b3f937c3031099fc58734af7aaa9de3fa87a4faffe28b5569b7e3868b5c4b3d0e24dc4a30fec77185b7b758eca4e3ef833549f689d4a7be7f6f0e8f1b467e4dee7ced103a3449fea51a3f56b118f3cdc4abff09b071e12daf4d63635ffd42b659a26c8b7344d10124bf0b843f3d7940eadb3543bd5322c2f28283cecd0b275a6c6c988582fce34cd1378d401b5e3ab7b1091eaf37468d558364ffd0be1aeb0a0143182e2041e737083871c5642c62e35a7c48e66c601153bddded33d52c9705074d6866da9d35633bf01b939f16254e486443df44935194b7cd8064c956819b783bbb6950dc8f7bb885cad4bcc514b0b19428018e1b186a30ea786586388f52596699a3680f05003e34e98d8d7bf9e6e798216fc48018f341cd6d6e36d1d3ea74f424326a74c4ddba15bb5fd45bea56992c7191639f36927bf3f4833d3342e3cccc0c855f246ddf78fee5758509a66043ccae088ce79ee88d3317679e0418686cbd2fbe7e2bc84ee25258c213cc67079970db5b6f6d249f93cc4909e2a559e9e4ba7a8086149e3c5081a2dff7206111e6168ed5755524d0c0c9ed85cd15d2eb6fefa0b2bf17325cf3d4b215b5e70cfb612b374b5585fab018f2e30a4ed93ea5698aa8b659a8607171626e3954d612e4d89b670dafad3d3ed53b558b5d0ee169effa9dfc559606e4daded490bf51dce344d6341c9b8b419880716d89e46acf2b69d63371e5750cc9533d4e63d9f5ae26185b67861ab86ce37845cf1a802bac44c2df23a9ea7a9223ca8a0efab3f05457e29194adaa4904e9ef783e81c6d745214905a89163e4bbbbcd081c2413dc7abbd5d32e4f3846677e9f44acded83c2c309a994aa95cc6fa1f5eb344193b3862d6db2ec6438fa8507135431cdf66b59d7556399a631028f25b0679cd061849c0da53283871238ddb33ec79f96f153a669e068224da392f262a40d1e4948c7ec85baa98ba93a0f242c47c67e745463e72c3cc2e308472d6bea70333ebb9372c0c308ec0d1dc4c9d68be0a9ff136a4776e8be791021a5334368a9b3d85a0d019b72af7350b5a367918710bc4feb39c4d4f93545791ca4a83c1c2d8f923c827079f0cfaec689d42dcb340d0f20b4d6dafdd6399dd8a1e3f18373d82de25de5cb9c0f0f1f305574dbc95ed93ff6674e7ab1da4fadbfef69dd8f78d12a2576b7ed9b379b868d935de05ef7a342c70735b474d1d227458f9cb566865aa6f5abf44b8fd1fa55408408114e72a174b17357877c12e367e2488923658ca6c9bca4b434903fc185dad5145ae970f3e0e416f8ecdc1eb7ba3a426d8b678f583296cdd24a89b558cf87a888134aed10ca340dca91857244a5481927b4f0a6166adf55d79271cfa21decf66d96c7513bec8d1359a867e6c5b42d75128b459ea714b9b5931d3372fc4acb092c947ee2e6b76fb9a79d5730d4ac8f528d4f9d449e691a38585832282a9e82841357a85e82918c92a9534f2a386945b6d6947a3fa97da244ac603fef4f9d72334d538893555c9ea59ac2f448158bdb36539c509fa4a29daf3d3cbb6af1bda18213aa53a8fd56d498fbf9c347659a06e583b89c98e27d97fba3e6841a434cc84929f24eebbff77ad5d898699a2027a4600afdfbfaf87fe9c928d2a6c618b64a957cb1fd379467a2d8b3b85b71a2de42ac659ae65b8ac0e024148c7e99d56aa750797b5034e4bdfe34ff6a7eb6a6091204c8abaceec2c927d861ea0c3f13d2c28927de2f9f5f1d2fc50bc2492716c25dad279d57becb4e38a1ce9978796b7b7f5032279b58e85edba2a684ca8f324d73860e4e34e1da6db95a7d5ada63e324139edbe9b816e36a6b85658e134c3c72c5f694d921ff9f934ba444bceb10a323a4109f5882bb952f3fd952a89d659ae6042795404c6b99b1fe71f52d2c28629c5022bd9525325de9ad3d3a9904e23a9cdbba9d766b57a66982ac408c1f2e2a2a427efcf84146d39c48e2f85a2d53b1a747dafb2791487da72d3f4c1dd284182470b13b691d2acf4477159c3c42573aedcfb11f6ef393699a1b7cd304b901192a9df25284480b4e1cb1f6cf9e559579d84e3b698423c5ac9242acce69df1f3f80dce184119ad6e6bad5d44aa9523b59445abcfea462eadc3975ba858ca6e99677e34411cad22bba2f55ecdb46e32411ceeaa8949a4839ef22179c20e213b1fec5fef964429f691a169c1c428fa5ff3f2d1d420d75a669d83831c4df6aa2b6f547a9e49f691a354e0ac16aa5a69a0fc254c7de8c1342b4d53eaaaa1b434cd50f42a9e24eedce27da762688e7f50c95a974b0ad5d814009157ad464aaf0fc02c29db529e3dbeecf57f11494159657f1335656d0342e70b0b0648a9cfc011743ede0355ce85ce2133fac52a672971eefeff1229cf401d795626ba4581ea5480a277c68dfc4bf9eedce75e6134ef6b08d99884b97b35d27193fda006283133db82652289496a8443127f3701c0e464110c3200043c94d9b0083120020282824124904e28024caca0f1400023e4c489a462a262c8d05c491501c1086c45118c4300cc42010c5310c8651344ab53b586dbe4b345a39332fdc2e6829dc12cc2644f03012cd895ddd7b0a5794087212dedfabf03213364d93dcf7fb0f11b2426d2aafea1dd84cc0f5950930e36a53c09a98e72b53d0a4acc347023cd3630138b701049c119ac5350954b16850daf7b280e208c8419fc8e09e1a3765b61c15072ca394f95ec2cead48f6a8eda5661e85584c756c7a3ebd164e1332a03d00e85738b2c3e55ec16236cf966c2d00b15ac7803ce95a2b366f280c6a1c1b9ce440ae8be962c011b98a74855872495f0b713ec51da55dde918164d2365f87defdc96be92881f33a831db424ba9f2ea560beb4fa0611693ef5ccf930aac9c586e6238f26845359d3b7cf8f2df6cb0b58b32e61d88b25df175496b34ca8d3607f811d60634c696ca1f9ec894995e7ca1683ad9a6f032bd216f5af9eaefa250f3e5c5f7d925e1303c64b3f9606dfa14515f20e4e0cdf99bd315f5cc7a97ce0f8c42abe1f7ea009bac310457a979e34b6cace6993e925b9a4223bb9de1440b6e33417b306f25c87d0cb48c7c766961e1e2442b446ac97f129fbd6e2922b85ec44ab5fd08de4eecfbb9427c12c493005cdece038893182fd7d95c7c7c12952f4e48f35d8e7c4290dcd367e5b4a115404855b5eb20cac73a3eae1d4126d54f12b300cea8ef78286b88ee8e93103cd0a9d057d7bd6d4a0e086bff25cb37a85ded42d738b304af08dcd7bd4c0afe6c11247a398bcb39c7ca35c112bf21ae407d4c876ad739d3692264b4be4e9bce28cbf6ae2a314ad0408d10ead8305b21fb0634eba78d911c1aae84f1fba64a0196cffce2aa439adc0cc1f0942734a6984c3cf4ebe564f6e4a8fdf6ff19945b2d9ca0f7b24828cf8c581e8e277703c3c3970d51d828052f4b29248c4f1713fc7a45f32582b7d3b535f4f98b1ca93847502499e8c628c31eb692896ab2f7785e5e2275964b60686e6ddddebd2fdebfa31f3bb62366e11d8a7d77ab5a9b9883b7bfb75ed0a43bbc45ff30e6f840f535d18f97e9b729ee3e45f8102f36ad8ba37f59b68c359ebdf658e7c2a391b73913f3cefaa2f9c0731cc42868840c7cc5fdbf94a1ab996538f4b67cd46f52f44ba17b0e1e6e45dabf8d753c4484ce944e9ab26d1aad54712c255c377a14da4875f50b646c0614f56efe34ce21e788231b9210dac5200a140b3abdb8adb750799dc6d98447269d9ede28242a0aefa46cd44e227edc1b2e4d7426af2927c4f47f247b0df5ead973186568991f908c430abd958915e1abb883acded7ce5a33a69a5d1b533550391a48c6195bd5d91e65909764525c3fcbe34a4cb5ded193e9cc34f9e27b0c9519b2c2bdfe043615158b8d6c9623d6e342e4ebb21842b257cfa2de44534d1269c13244f3f0b93855691061414378a51a7614552be4f4bccdee51e63d33c119bfba56a70208fa9804b52c4d4fc3d4d6155d32c6947a7233c69eac222ff8022fb0062b61834e097bbb0ae11aea1331c56466fbeedea8dbec69b0357b2ec3db283bb2e7b77a24a14b2d8534b6f86d3c0e39ff1b0a7dd7a2fb39f9561f844f6add1a088ab52a57e4b21dafe802e68f68059b42b23ba61687c3455a81a636e7bc6475c7f8d5df5e57f414588afcff0d43cbb926991a80d3ddafdb5a0b5cc580ba42cba81aa0e1adef59980d1b9681a7344162523bd558dfbac06bd074f93486442be6452c399cf2bbe3274509b580505f463c99f8e004a1f5229bd5a086f1717bb32dce4620980fe0289ff07fbed59f29a1aefc3392f4eb43fc650f180bd9ce33f9557b26577676efabc532652f404af07b219117c85246ea92a25d9d9433c6cf249c45f12c87152ca56886bd0bf75eb92fed4421ee043cccef14215ad501e9a0b13d40a90b086e9c5f8afc3ee5b30638cf6822b37a536d08223c0a0422dc4d09c350c90471086c9c0ef9691248e82c4eaa806689cee863454edc38b5d1b0ed08215b9689108eb1040c7c7b48a6ee7d1ee8f26489262584f77f88ab6c1ce1ee848a6ebffda686cc32b14a5c294b7103afde3e828b9456f9309b40e41208213c66b684aa6c007b73f2f924df66a23ef43a575503cc519fdfae9e8130400805f563ed22fd54a5d5600d975e914b178807570e1e8c2a1f807268c85c4791fc3093b885eeb6262170da25c98ded1f6e44dfac2dca6a226b85e6e2a9edba934a9c5a111a3e986734c37d9f41d4d90e5140ac286968287401d5b4987de4373383a86c09cc3b6ea3dc707c2380a8936bf8e67b1706c913ca838e72781b715bdb193591eee8acf0fa3434e974c41e251219a0613a09923a0fcef621ee72ca43f9d7dab7d2d2a733ca9ba6f13858020e242df257406f675e0ced30da184cc3b46bd4a302130318aed71d1bd9ac940893b26f7d05c5ed1b2b8d18fae43aa6ab035b2e90a5028e1d22ea91e04ed8087a57a1d1523e2338894e46d872a14cd18736bc2a9fc80252e3c1bcdf14a3bafef05894ecad924a7f3233198bcc3d725086c996a572614d432fb73148853f9569b4935f6c58e11e805c70c812692c23867e7a35ed1c960a5850252b51c9e263d43501b19f4809e9d995e59674acd6d44087c992d927793da54f0380f16ead9122f718896d5f3a2c58e9f5b2d59f20bb5b745667e60043bb252afe80e791db3d4e7cabcd8d995ada12efe6102ad02ff27ac2ccb478c8ed026ad4d57a75e13dd312012188cc4ae0504b9047d002864a3b70c7ece8f10c99a271ff83e3806cdbfe63bc1db6e01fa57357fcb6a4475b5f4a95ecf212a318cd6046c37cf092cd50445b0c804e10fcd6cccf37584af3744b9e385999fd8b48adbebfa19289ec54547906eaafbc2a8ee07a767ddacda6a8b0fc4c572d067568accbdb8d270015bbdc848201a1f70743d1c834252445ab888dfd605ac8432a89044a5e5b52d7354a175e5467b8a9cf22bf4d68aa28c4697e8ef7eef173873bdcd452ac81bac1af82a0151fae3c9906bb1287793f47e3674c3b5fc1434840107634f94e2c34794a167c9352ff14e702e616210818a457c4863cf405a8c1bb8f578470761f23f191f766567587ce37ef05d3ae22f99b48b6151ce41c16611cd4d0b7f2894001cbf667692dca58d4bcad3a0ed3392e3bce45fd37dbe4801d6bd964fe72bef9583b8a16e35e8c758f75d8719bf51f42f159ea559ec6809a85f90a70e8d42b00138c74389ea70ec3b5ed69dcaedc268d3ba0f571c3544da62d00e076787756bc9409df35c8fe36d81832762d58bfdaca70b755d31c75f33abfea865509b8ecd2c906d0b319ec1512bbd9937c3595240448d195ec7a0bdf902021b4cca94e57b074a0826897131e10c7a8919f312fd49bd2c9f01da25b11ce9d0ab82ce106016338a22ed576ea33b221c40212877957e807342206d20e1a21628a606a0bc2149614e6400c3c8c36f55a2b4dba29a04fd4ab983229be28b612c33c0db44f0839de55b9d36bec058e87e8bd23dc71f367a5fb9f90a9e3445121661c03bc2169e2b7b954d8bd91259fbb5ccdc7f94407af3d471f82ae76044154c6ac8a60385ad01a7a5f72bd45e818487d247035cfd44378d1526c8bc3f5bc8e319dad55834627b20bd239f964fe8251929df2e2abd7806e5d43a0dd2fef5f5255796d30419dbe182a5c1f740fda187379ac19d4aef0c83b63442f96c317f1642891d15485d4cde049066a9ba5187551ec570913c32e0e909a8578e80ccff6aeda563e2e6949edb5a3ef63d09acb65ed9c79827d5388e3378b4f8ec4241b046f66b46e08fc0a381430d4fc34eaad354176b14bec3bb4489aa36e1b7c2ffe768a6224d0845b1006978c680ae2d5d9330bf56ca678bd62092b4610b3edf08435752727551f159a3cf8549a803ddd28669cdd6f341ac8a4d6d59904ff6a9953a3ea21273d4c2e0caa861e8ee74a8c57d1688f137dfd3492db4efad47b9fd8c9c5fb1d88c3e2323f63128e5fe9cd2c56ccff1f7c3ad001ba48b875d903cddf92057825a5973cbe067b130ec2bd07e369a63e755ff3e550add2c90c8bb528c236f1bddc4a0d0ce3dd07a6a38c7f798c7b47e6278e7d911cccb3124716d5ad23a4341bd2770ddd822d611e1291d1553c15851f6f833bdc1b58e9569b1b8eb3da2a6033d1d30fe000eeb6fbd2fa79265bbed4f6e0d0b448da64d4abda02219990fc9cdb97b81109a62500c1e6fd5a9cd282733507a8391980d0bf7f0eaff6c62a7ad008f17761c048032be802e1f505508e71d4338113549f1b09c7188faad250add7722f822768c21d03734611719127d46dd585e9169ab15944e2a8027b3ecd2875e8dd6d9998e39f36d865d3279e89490482843c95f92f546b22a4d46dafa2c3c332661b17a38b6d4272cf0f47b92cfd9df84e66dccb814c2a42df68577098ed72439fdfd4bcd8abde7b761b299a38d560f19db3c0106f19194588cc51e4365af696d0577fa040469618b95f32709d320c4cdd11e0aea835bed86371814c65513dd55d6812aab23af32177779cde437fcfdbbb45ce91afcd341de7ae94d630052cd59c191e170c3eb9731b0e8004306fcdb5e7bdc6adbd1127046dc6858f9c4ccee1e3498baf5baa8e5307fdf49c9473b774e6779678662144b325a4f2afdbf1bf17d70722246ff8e734599e561d7c16b6e2a1ba68574e45959b9aa1c5a4e1a2dc18185cc9f4677243a72b0b91088a45a683b1fa06c17aa2429b8a3751e8aca7e9ed366df0e7f9eca20dbec5a2e74d4e1018eb7fba74eb5fe0c93b27843daf0a154708e0517490a7c97a3593de340f128fb1c37a3879ae4f92f396e83bd43431546003f51b2e1173336f55159474ea188e99420ab2f4eb816f782299744a16811023e2af9461908ff81bafe43fb7e571851ea3b6e51e496cd4c3adb4649f478bbe5879d1e460e2c9c2f49920f6ce56a86899d8075506a569bf944d50362a4018be6692db979fbd643b01b0795c5172337220455eb9f3c9d25b0686baa6bd3be899a2b88971ab4f92cf2020f5376e70669f790155a4e48d429dca9626c70ae6f9be2725c14c4a729a42e3d1c512087e6743621da72ed00a2ed50ced7e252a548e3ed2d04a767c4eaf46b08bc49748b9bb582a63a28cd32620f4ea8d6db06df5d83d031a86bc6e75355c71c655d7322d870653a73e78102e369613a1017b54363c80281f00d4a3f26189328b637bb38a9a476e12b59315aea4ff4c75cf0aba05498f40c6c80741d7afdbe54785cb7a25502ea73ac4ea8d5a5837d22e5790eb6584d3b5a0c176544b5f59b8fb159503ddda283442d5233ce8efd9b1f24d46d7c39197b92e03599b137a050937b799d064ea724eb559bec6e213722f189986e58ef0731ab1c682a5ac3a5c68606dd204043f5be8facbd8a9683bdf8ebbb8823361680ad2b9d0085b73756aa3a38748b32708669747e7fc0bd5ab7cc65dba6061097b7059d19237222401ca42d8a101833b038b3a37886d0bd63c71513a14461c70329eb3b6b4d128c039d803fa46802794f36234171b5e35a54ceb666882a3516f9042e1c125f079a826a2fd3079deaedec2fd93268241d29a0c7fd9dba1b373ec92fe79a095ce7010ffd66eca773ccc02d4e3a513acac08b46d0bdf3a0a23925f328dad7d463c78dc0dcd91d56e8454df8857e827e351d4af35e8cc445c6fbc3b8c483476434e0c3f947df9975e7aef27bf646055afbe6a2e0c07d93b3040536b0add8ef8009b183f8335fb974a2027581b464bfe0e95005d50553b1098457674a57584e4f95946fd24c409960fa40c3db17c35c7100572ffbfe968d691f4830e072da3ce6d423521e933690d7fbe158e640a0fdc878fef06693ac18b58224c1f2d774c3f6fff03c34c4713a2204ef1b212326dbb1c6e1da968d367844e4aaa7f3b28587869fd1d9c5496ad5083c72fa5c6732d2a23ad1882bfef61a055eee80a92ce2a846161f822511f9d57040229d5b8f15628d010627cc9c767cdfda1ad04c7a649425881004c01c46ac8185d6d3560730a529e8b92abee4c0ea380fa9382e65b3d4570c90cabf5c2c92f51ea29c0de122701073ab19b2cfa5b3a469788c5c90570af23603893e14ff14a070eeda7c4501b8fed18fa798a0dfdb7fa3cb97daa49f6df15bb56b4fbac2f99f6219356cf7ef8ba8c1c9e21478d4b6e797306e0179b8fa0c52f8816a19f21f318624c77ea1900003a45743e44e7bb5efdb4092f5257c2f7348fffdb4bbf21952b76a3d46207c6f6f1a94078bf8cf0b8887726f99d273254cfbbf80dd79f4ff1e738ba3e537742ee6fbbd01a4877b98358e8227fdfed4c3c8536200932f03dc4362aefc0a328cf6b2e6cbfad69896264f49dd609f72226117c17bf046367d5cdfa79637b51a481c204922b6c3a087c0f5eb7f4e3b2fe8c16b2be30460272d23af6b63efdf4a2db39a3532df3e0a24af1cdb2ce90d175304d382002c736be33837c680e6ec7239b7b46d174ff0522b599302c7c44f2c65e96c75f224f29c2b5ef6914b5867c793f29c9acb52f9ba7a7348ad081db615d6d5b167d85b44b7c547e1b59a9c42add733605c373572984142630dea097e3656860b5d44c27d9a2faf1f2a6874f1f5980b592ef8935dbbcc16999bdf365daf5aae67ef7261264f40ac6ea2e8ce309ab5003187f3f766e51948ec2419218018421c4d1e04a1bf1fbcda688f79e4fe047bb1138be32b13e10bed86f515293fc5981f8c94583a6bb705e343d85c5254fc02a80df3f390b9e07e72433bdb01066ad972994d089b0c53bf08ae622c626fea24ce7c42d1fdc2fb92f65879258122ba7f2c45a04dfcce178ed51648a9a10a47dadf9106af58f80de9fc2070617a9d0eed39016317f6aae30c8cee1d690e2cacb15802b05d3454f3b9ea6a701e0065e4c6e819ff6502adb72c243eecf5711f1344f2b477a3d6d3bd6585aa6fa81a0b2d3754a2e3a09318bf204cf25fa4f59e661fce1b5ec204e659bd8cf9aa060a654f8d5e7ae381bdf8d7f25d60865e3f32cc6347ab8b876e94991431645e2b748c44f1e1c348f3fe9320d7bc12edd383d7144df615934bc34c14e759d2c9b638bda55142519ba6cdd88406dac7cda2f91aac289e6c1834775aef102eb010c093783a27732a31cdb4d38959d26a4004a24e2486efa69b69409c6f706631c1c11480f41572ca5ed346cac4a3ea0550535cbc1ca49140626a5a91e79149a893b7a322154b5e26dc1a991abec77f2459f5c7ead95c21c74ab9a34bf2924359ee11d3a3f0063b6f63d4104e45de24fb15fbf9071c796abeccb73d77c35d8bf25ea74a75c38f4d41dc4e51db4d426f0c368c0a9a93770fa60671a3ead3b3cc31159f1350187a60adafbe021a1445bfe4acdda8efc67fe484b8c28702e7f394d4631f851ea25f188b0148fbef73df3191e72baa2ad70545348ec144598cf5e76e513daa32b2f9fffebed418c31f144bb41de5065db44d6a1abe1061c6e743c709800e8fb7927a92066f73100a230b9aeb1db155d7ba0e5dc49398c27c4b605b37d008e702495b2db4a222e3ce89e14f8210e25f9e81a0b8424c8a97f2428094f0b7afd6310ca455d10a0e0f53b04238f030b00c5ae04175320699aa3261d74d074e0998ecfb2ee0ce939381d74bbdd4abc8dddedda2e8f7ecd357e108d44dd08f0a1ebe7d62f771f6445165aa8e2c8cc9c2656ddfaa7aa126e33743b6557ac857d4f5e888aace97d0b6b6070a88ab59cac73c95fce0c699de1391865e8cb0fb1d70ea15bf8be5d8e952996bbb4d75961efe41453ab430426c63205603c7e4675fd76d8b05d108aa9d4e48fad504f84bfba241ae947d52a79be204897a96e7e5c4e931f19d13d2ef447b9cf0e689e97da23d9cf0ce89e975a23d9ef026484cbf8bf67ac2db26a68789f662c27b26a6e789f638e16d134b8f049cb6af647e334df0be09eb71e25e4ee85689eab9c21e25765b45f530610f2776e744f53b618f13bb79a27a9fb087137b672740a25603face1dc96ff11e93432f20f8ad50c9789715252f82b72c81b00aae80e3aeeae87bfa033ea300fe2b38f7de25f20ef5f05c690fdcab957e7f533107f44a5ed29cb206b0cb588404608e89d8ad09442e01497f9ff6de96e7ae9b9582422c21b46c5d7c887487a73e9e9df8e715572843011de60a9ed55fad16ad02d6e3421c24a4c374d8c3c1a73df99d2f50c0ffc1eda25ba59d220e1f3f15ed714b40bf00ef4487ca1b1fe78d5951e7e57a9d08bbdd46de97ac40f85cc269d3da2b85bb11fcba4f0200a6a3fe5a2883ae188fe1809e4c1731ab44f23a1ed194d6a0f8a8e1fc032c012ae068764ba9e4d3544313a8e46b4dbcab563224b95cf886dc78800eace8ec10a58eef855c6c20f2849524b8fb5c9698051919bb8f1eeac46fe8bede2ab4967f2aef881e82258dc8f015ead31538a93d0cbff0344309e20b542731ca83bd743dc6367ca7a409047b9c052f5bf2b6507f689849af526b7a74426d48c5390f9c6da53c28feb12f0e7d06a078e7da3141707c394ba3f27f56185b1f765a2dec520326f882ecceded9b144350751daca80d7db5cd62f8c05e98521c90c88ff2f7520b55e23c87d78faef10ee9a554dd56d58671af987e9c28a139bf0ca13d1e3e8429ac2e808bd66c95b274b0c1d90bffec3f885470582e3b93c9a48372ddb1e8036ba4edbb336bf600dc3a8f403660759ee968140923f32e2b5227fd1bc071b5842068bc71e116937e9155f6fc89b6f42a722d9f34d35e7165c47879ff6666564f2be469a8f4741f3276c14b522b6764d0a9f63bc2b1709bd0321715f057f22974bb6001577f177e931fb7b08a95fd83f90200572dd8aed63eff78027dbc60d1f2d3b34915d2216c08b75de20bda878c34d7220b490396adc89bc621ab443fb452a03d35811d744e8ef210ce33e3e93611cdb7b5c8f66faa0094de053811a70193c2628c410fda66af1277fde3867d4a385be3aa96e6cc68621f68499601b96c013d164959107cd10fb1026ed80accb388428c750508b3ab0d63e80300436e191d7172f3332201c62f644e985a83df3bba615ebef38e51b168f637fb668d19f69e5a3fccd444bc99588a87d9295b89d06d3148b16e941300701cf3eecf726f522c60c61db55c1126d4ce11ea1d3a4f96955593386588de06a98551dee800f2ec99aae593adcef2d4292166c5727c10910e2e582aafff19b50932d2653ce22280ae7d07d29050aacc515a495d4355dc0243df93568cdd5ce1140f9b0f8615a290dd1ba68ef8f37933beb38fec17562444d81e69dfba623f56c10e54df1a56657124244add6d7677a79cb0e0aeae1c43294444387ab96d1760c90418545a3039a402b2aa021bf513f5c21392e45e5de01788a63c3a9563d51f28ea33042b57f017c713f4ecdb6570d42f5c0ec9adb9a069b25b8dddee787cba0432dd0b959048120fe43e70ff0d21c222827e72e4115d9cdcb7a2cab98020fbe499c0c536c4c2029b6cc368a671dd6a41b9f86e479b7d6e8fea59170840416d4e7f341a29da21ad5759412ef3c1f982e0f5b0a400fa7592f809bfb29ec45489cd16e20099c027f383b2e86460e127b36bbd326b4c1526e7403c9a46f2007be6a8e2f1dd0ea323778855523460421d9457df9719d26685073f6b0a38cb8b6cc146b4630f07eea3ff5906796f94602840e9dd395f58d0e1b54a0ffed13878370a7736a30b3d26c38cc5239522a903a2bed420b9e94f1f1a9687d3dafe120b09b555867d9bc17967203cef998e148b1306205fb87086e1906a41cb576be64e2387553ef44ef3a6327a05be131a37d2cf0368e19dd3ea6cdb9022e508ef54f786d42ac8fcfdf7845c5b5f40af529c0e8714678d863e14cb9aefbe1595115ac4cfb360bf51746053cc7829d2d8779eafa8fcf21de4e56c657b92c5c5bdf58e99a115defd9833e0f7782c7ee6a6055b3b4826e4b7b13f81a20594fe05d26a6d8f85df504a27f003549e07703fb9bad1141ebe0474fa2a8d14e87eb76f7f191e70dbd0530b90e212a0443416236586a6364efb45d77cef0c0864957267c78fe3472c8bac53d0a97fdcc4f7c74f172d675b47bdc2bc82cbab210416c2b11cbc1913489c22978aff0109e139d4832e654424d60c492c595b3fcd103c475bae25d6ecc18c39f7813ef046d14b557d9046b6187833e9c77db102a7f667c05ec9534e9a609400647f146d14ab5fb7610f23b9a1d5e7c8d6c328470b73e3fc8218c2ad643ced8758d025ea4049a2c6ce4af180dd6272eef95f4f53b6bc2233a8e182e463d5cda6611c8e1433d90cec58dc932d5fd9cdb8cebce7d5c5fcab41977b1656b3b2c708e8a79de714c66d0b5694fbdc990f864139d478b22088788eb2874d44730e085d45e1ec9303eff9e891f7f621aa26a8949b637183f6f006fbfa48afde8868deb2550865ba9560c910e0213361edc08a25a6b15ec404a05c2a5f3a89c0cc0aec55ee3275f83cd245e0784238446045f422c62eab73e4a04adcb52c683e3e8cb3e2f409022f28b210cd7786d8ea0e3fbfdc0a6fc67014da82d74987b548a54961a66c1dda0e84e4189936225d50d6eb200f3a7054e463fbad69f72b84c313d234600914dac834ee5df6aecf08c2de9a4f2f2d9a6345611ac54a171b4cc89c8412e99e1d230bcfcdfba302ff417a1f5a5f0f774c2849ca50abb08a742586e4015d44675e78f7195c4b152d11678e2b32267b5ab486d77fca28b37a2d5ba261183b0834b677ae167c4bc3035659cdd2c3f4ba81ddf10867b1beb998edffdaf77446843040fefd8d33bd59c546ae0f5aaa2e61c7791f0d84c332e81b27382fb480fa75a5b08b5d1576b65f8316322e01a7c619a8af93ee39d3d555ec975741d864508a3738b639a45c405005bcc6853dc843f2e7dc1ea007b43b7ad1f7144ef72dd44a03b414c57ee2de034bc103c10c70311eff5a927ca717e050cff1c40328c694e57e32b0d7d1c0dd1fc0a55094c901d5ddaa3b08f6d2203d10054cb637fed2e7965275b1370b8f4be328688704100620ba6b5600855a7e8dec2fbae52e563c8d422763a30a9f44cc6e44a9d0c0c84bb61a43498626807a48f803a0fa3294354c16f7e451f0b5d401a10a1bd674a77c6484269a4c92545ce02e2907c44000568c14332e7e29813e3d53cd3bd73d2e06d0b6721f6aeabfc4eb37c5428c791fd35b454e53a288fa0c57860f8434ee594fb287cec36a3008d10233227d761e4bcc9f387b02bd4a08d0c8bb415ebc4962eafa07027b0ee960970928934fb5a3443c249d91cdb9ba21239161f3b246bacb5ecc323295e54d6b74b394948921276b2d3c6cdf54078448dd9bb00248695fcc290aba4d5f5b84ce570ce8a87a51c4809ab0010f145165089f2d731a28a935f030d73eb5f47656b416b0c1652d2b19276cf680574ec862a07090633a68ce61b6e81b21c5eb4e851d1b9d8b009eee93d71270624c7e546446a22e53f99d91a91a8b101592dbb31d33e7f39928b574859b8af5b2c221be538982b911b45fa4e3caff7851feea2ab77baf386a86b892a37d0d49411bc8eb4712324c1481f58397267bab6ae371b27df272b553ff983f4b9f383dd1d504fb75dca7cb263f1eb482b33f2891e8672014f248d20eb1610ef4aaba9acd4fbfa3c03701bdf9b130048859c38e9f7338a135c9acc3d5364460c64c2907fd6fc7c9eab02da2649c8d22b822dcd00e6a67969ba4a709a38cbd77022ec999a3a0a64b74c7fd21f764c20f7c2ad0298736953b88a784fe2ead71b9f0753899bf905fa3991e7fcf9300df95148b83136854724cca0f7437401d3c747b6e15884b4962e0045a6a2a730b318ea4cfa7906355e16b0a6d9d28913fad8624069703fb6ba4fe117bc9e55af20270a303903d0e3b0d4749c0a35e4f92828fda448588ad72f2e4f76dddd4ef77eea16339855a8a8675e744cf420448f06742a578b58a720737715e71eb4cf24c1e7e703fcf912c68ea3cdc94dd4966c42faa1b498e945cda508fa8aa8e4ce23fede90cd4edf538e7a2a74fe2db03368a125928f1a7c02e41437443c423a4d3ce51110cb6da351bedba2633dde63d8f3efeefe1c5dd4b6a845447f48842a70b2fa76b1311d369dd11e69d49c39d196b595dc3a381487c3376e59f9a45beb426575311241b843a893192f9d0415ed8fe4d21666244bc193648af2918912259e51788df40aa22821fcbd1cb88162c7509dfe59c2708016cdb53a3796776251ef6384491d78de7547f39059f099389d4e947b8a6ed512b281b196f61bb11f3b02b929f3941be8ff368fe84f9ddbe40574283137c42a780ed3b934d272ddd5148b83038e390f6784fa861f09944ff8b0bd24a819234f5404353272a64487a920074fd0a2e96c15bc6fb8da4b8fc07fbab70b287507eea6438311ed7b220981c8a7fdebc30561ffee4435f96ec449fe24852c0f51ada24b28d66bb7a4a2316866fd8a69c087a784466dd82997e2cfeaa2134f73bce670cfecdbfb3facad6f1718274ca67cdf85c2da6e49987bbdc996f6498993e8ac3c41e1e9df8162be8c4038042d56faf59575e92cafb6c57308103f2e58298af9b358b81dca907870b2232382cdec3b2d18c1a9668fb674d3d2dca28b334948fa47ea5ca4b916088717b2298b078ee16e50fa100bc57966604edd650e0e3f47023d961308a9857fbb05bfe759ad37f7a53cb567f89732a5d09312be21dc944f1b1bdf77683b4f640ea5019f1ad96c4c0cc5accd98061afed125311bed7c5bdc424f736f2234b62ad06c0601df4116470e35539c9f357da2d5784b235a461c5440c31cccb1c19b7d077021a75283e0e77a3e41e4fb0242dcb654748248a14d507e9e4bd94e92473d90a80dd3ca1c8f4aae901316bbfe487ab9ee09e2abe68c2cc26ba604a5d91cd9ede75e3c08b8b4fa41cb5cbf8b45618ad335ce0e0f314d55c08c724288f3f8addbf2032d2ee5bd113da0ed01fdbd354485282330d07b1e22441aa27bf797cbeb73b321aee7d5a25ee327e71a931568f3f3107cdf629067ff9f671342062b8959f272c0e1f3ad23c1c94356e21604f60ca38dc64248e92cd13749d6a5aef6420efba9fd24d41e8159fc822e747e76624ed5e9926f8ec34d4f13bc92df79a342b7bbe4d9ac46df29406038143f4421ba3ae52bcc6ce60a452a5ac0f9019d3602138be214c3f0e7e12f80fb2bbf7664a249435fff22d45bedbd230a4d3068c4d2b4b31dc35c4755e001b4baba0637d347f24d0a3cd43fef10dacd4f25b401b4afc0aa675ac4176c548f14450b2b6372e11d4d4ddce5f8abf6108b71808d81126138b95f4bee51d4331cb3bccaefa291bd47a935a8fe0b02ebce118506f8bbb5a2d5444ae361393ab29b6239b6f19be511c1301e4cb8aa77c4dc5647266259178700b4687c29c620412825cbcccba5f11a7823daf23fb1e3151d1dda1a52c28a9b8d03ccd6f388b76e5abe39795afb1085aa1c148a8a709184722dd70b916269975a863902eefdb63d4d05c4ff88b8c7c186523fa97bdd5ee91a0407a9e6dab64a2ef5489879faade44b6528fba66d90454d78f0c7933cb121d7ecc69e979b89356d75e467fe118cdde4e9f6fb3f4184e2ed565adfe1583bfcf41b68d5e7322af2ea4b6679b5e6d7796c0ae78501607dde127693fd797d266c6baae42f55305021634a719f3fb5ea820da24c8caac249ab076c8ba7ad0472bd3b50846e693f011d1922a885e185d2d5326e911e9d379dec6ebc7252050fc27594fa298d32d26cbea8c5c9d450efcad281698e92b86b07615a29c8882eb0f97f098371f954d6991d624a9ca8fad68452aa826b29358c8efa31109d6da9b42d7d58fe5f5e8f669ff2206aece90a213015eca748495ae1d61c2bf9e7e3a3178f91a79ed4627f1672f91b97b7d24c80681521915fca79b42975f243c67eeacf5d823458ea70a9ef121dda30075cd691ec13a8b6505521848715711ca61706935b2719207000a183bfab4a6299884fb5d8f2324a5606dda02e5cda1b65b19e016afb8c457ed0a93f13bce74931a7056403e06cf55283ac57f8ffa39989ae8710858b7dfd85e2cebaf225459e3590a4cb35e4a8ff49c03a224d047f06a1abf4bd4e04e70266332589217d7fc3487ebb443a6249afd017f2403f0945a86e94b9a7637f31541e63efc56dd5e41a579d26f4308f949e14496c8f9e9508e2d6e0609af9c092c27792511f7ee0d9d94b6403ec91633fc75fad952592623780ce7a6ef6b1df9b1242a961d7ca9fd315ddfcd3ab536e5068bd324a66fbc0a74e36ac4ae4d60eef04b5c51c28e72de5a84fbafc96bfb19062166300056c944d5a00b0429b875e0b87bf97023496b286e6e5757f79f6006433129bb93a814fb7f642004f7721b3f1e1dba1e8714400d3e738ebb59fc3b30476e6526a5f1faa5877fb166006b5925aa53e15ef0504299677ad861e314ed87c482a37dfe5d20fc4a0b4266c962572979d3b07624cd190772a2d113df272399d320caa8ff7c2ac66b610f53a5ca12fb92710c9e700637030979845e4591de6149fdcd59afae618252d6deb6e5334d7daa3abcfa995dd3725c42c82746d2c4fde89200d632b3fc84c495c8f146b4d8ca9458d8221504505c4659bd1489901b920d8ece029df885bf7db0fc635ee3ab30e6820c4fea2c8aff7a5b853f66e6035145af207323e01da3a28fc3f6d1e5e8d154bd5611e42ef540fe158cbdd20f10bc8a041f09f936f05cd538f7cd00a4dbf24944f1428770463a3314f7462f9f397e10f3da422942a9ac77f71742f3bfcb5d38764f3c3d933c5d880827268a28f5fa00b2b327910d5e1c8cd39986c3727e0d981f7003943abfdf01a51e200369f87c05b326bdb0a7fb044a98e1ddf998d89f15a96f0e3ace2f2940d2dabf8d8a4a92d8641d44cb39770096a46281a7bd81e873fc1ed7449774696e3fce96b2a6562fab9021c0730237b866b9044bdefea30a0493c179b06470ae07677a7f37073935c856b6711efdf546a6dbba480f3c7b4acf9140ba6818a601b17b39ff992b8f20fa74862638191d3d260b151360c221b0198de7110340010815f8f42e6e9a64bb7bc5bc37a2c2a61261aca89ea27177066e2001cc90fa09301534494363cfc7f1032bc72310840164cd1b8df1402dec71e0587839d000b6c6f6ff74dba2e8c3990d9609499be05deaef268e6ced98c4a9361ffe09febfecb33ab0bec030314bc3ec0e62cb7f99c5ae53bf26203a486269c80eb5f2096389632589aea8425048f83a5c7b50b88759b82fe42118886ed7d9da00cf507e5682c679e3afdeb9890482b54960c34bfa0687c1130acbfad68ac869c571c33e62ed614a8f85b2345101429139c726c3dda2cef702789880081f8a87061e176e5a9095d1f01e2733abed9312182c5b1e8ab7817a407e4d3d9a0939fdc82fb37b75b6d4c28fc403d17c23b92a215a0c425c9a5c964f322dabadcea368a6b1f4b57d4188a28a1684df5c0d579a5a196cb5c7328d91867f3c85354de4ce020b33d6abd45b5a347af8dc0a040d896a686f40d941aa5f3e31537caccb50c46979cb947bce682b415e6cf010cb6901cd84bc6afe3b1aae5c837c54eea300224062b92483b5f558d8463cb49b847b6c6b43369b9efeaf4d0cafe9059710881932dbf3acbe7f255253021f7b61adc0abaadc665f134277e3b79bcc6855cbf9b7b20bd2d25f8e2fd78e8082817e9eeb9fc73f37468ade0e317f2ccd0f057ac1dd64a8b667f6d652ddc1333571190272e9c667160ea297c07fdc7904f1dd4cdac9c78d7ce1b906ccdfaca85cf1dcb315ad1ba9aa76bc79e6283be1ac404680a4e0107517022f7e45bdcb3de91be4300dba4ccce2862652f588c2f7f131c56beba22d6eff91787f78f3e30c4ab7e6d9d44a0b176145d62f59e63df66ae2c6dd9d609f6c4ceb9b22beef482c9e3c7cfe63c1f6ff4e524ba560bfc3a917d4f0c919eecf44bc57030c00dcadd5bf49fce0370fe7286778448fca5843f7a4a0d44936ff2bb9a0100c780821edefdfaa600a9352f13baddff74e8e9b203b55fb6ed17ad286bf75fab80e59f0f6520f496448a9005eda3163238b2b3461ebf54736a9dd4af96c6df6b229090537e81c26df85726fe0914652f72d76494780a89e39c7bc135e7b26bd7faa1faa29b37a48cd966cbc91dac72d347648a66090fab58f7bdde53822d12a899b398bef363fe48b3ac6930d8c10dce2adf88388cc99872b8ec11de9c7bd947f1fe8e4484fc19af9bfba19274c97d6767e143a1cbe91d41b0636117b77043a77d2edfbd6d925f6779370ad804842c897e7018e179bca727529044838775010823c2b6272ddb16402637d942da4a532ab8564afe6308568c4f63c8c831dcc90d8370e0aa590cc80f43311fb45c9fabbc3fcf6b0e3f936e8a4736c453f083eda593bf1b31875418f3019fe8c1a32916133d903c9b42a4c32ca95810d4e19a4b8fe545d57d7ebe986a6f1c0ef0eb83aea8ddc0d1c8a7654357df18ff148785ca8668c71360ff38d892b5ff7c824edd7f76e3b64d43f836c1c4027896c05770794eb56508395ca355a0e5265bf2e75626fd082bbedb8f4d2a3f2e7091e726e430856736c66c1cc38c40aa95ade9d174390af4e697fe37253b054e67a4c0db66ce576270674b8dc0e05878e1286015700e0bae15bf91620496df7f5a6fd15c58df9a1b16f9c6709d8fab70e20a7a6ab84e74a23d700c610ee2f3bc83b5615bb8ba7eee79cc586a01ad3321e2de223cc1e3ebfcbb0ebc8bc46f8786e76020c07478162370e73c58c8ca6f3953c5029191b73bf19cc8be28d369ee45c8461a1b66598af331c63e454bbe8bb0ce915fb15af0378ebbbc736c99f7fe9cb71139ccbdbd25e2e3a204ca97be2534cd6a28a183c9214325d25b50cfdf3084f7ed6521bfff8a0444156e2d6b6ead317a7199e134c7ca3273eb0f8fadc8883dd32eb8c84be017b8919f172b68e23deb1e3219dd0251b02b907e529183deb964b4f3323e81d5ecf3988ff72b381de601ea507da4405350f93c8fbd6d2ac8a9db8071ed370c7e084fbe576dd35584bd2e87f8828518246f4aead8899e486722af23c623f1ace2f88ba9318a7c4b6c0d148b16cf6c9525875e72cd27dd83838583d340c3d2464753c8deb1fca9e1ab7d624145d2a9cd10f566511e65ba24ea29d5a19ff6bbe8bed76c686b104dfa521d915e7d820a26382579c749829a08cfbdf8460540d6c74e5eee12620556f975df0358ded55394d513aa3b90a9fb60dc735e44072b72146737a887c3d979e7bc5236f53b06a0b77f85310831d89bf976871b9a3f0dba342a08affa8d0f074a3ece2ef1478a3ee5c6b96b7b90f9850be067b0b3c005a214f11ceee3d17e70569747f9077bd7999c75cfad01158ceb8f5e712fe5b19a2ce546da93953b10ed73384680fe81c08058b90dfd2b51d9d0c348d9eb7043fb6d41a9675fb7adb85a7ca2a126842c4a6f23328a5fce388e2a39ddef496060fcf7b47fe9d4942e1dde59555e883203361253fd7573184f2dd597b587a295c423669a0d3bff76a50209ff372adc12fad0b899d5beb1eff93ba0e13faa4e6704f08a0f5920dd1836ababfaede59c6382efc5932058caeb034bff2d836d71a42d1c35ba438c4c6c31e4eb8ebff8bc90eb6de96bff1e49f904613dd458d3d71f0e1a0bdcaf7afa67c8105803e821946a9d90355c60e8de2ee57583f345a75cf0cdc6d2166eb838e6cf7262978f0e0e51081d13ba3683e63744d1a9fea1bf41e4946c708553eb3875403ac02013d8d7ac1e554bc3d48cae425c373519387299bf5a78631dff709d7dd71ad99b5daab6a944f5ee9236fbfd19cf6d27daaeb6ee5c2187b3bb05b7f4b75bdc566fc8ca093d8c5557c6f64b6ce1dc8a623ab6d1684dede2a9dda426f6965ed9e3bf5c6ddbb14efa66d78a6daad13db8a3cf7a73d673cb94b62baddd57cae2766fc339ede536d7d59b2ace796e9fd086bdcd0bdbe88fabec3aaecadfe8b6be5d0d6aaf2e74995f9f7a6837ad7d8565bb3e5dc668292937e1b609a54dc26c126393fa9a98d68454137d6aeea7b3f085085aeb1dae2915c76ed9729edec59bba527723b5a77bd8e6548db165eb397b113fbd8add8ed64abfa19b5537560bade7ee51ccf495733d6a3b5dc36b5aed782d599cbb6791d354eedec86df50dd53cd5e3b66635c79e454f5989fbd1753d8d57625c4429a8f59eb21daf36d031e95ae2d02034ca2de5f33f606772eb1555df528bf7a881a15ea06df10dcbb8dab3fdb11e39a43c0b41bb1b85cc5650201002bd496a1f135acc20dda9c91bd09539a02883506a4c3b9ed5bc06cba84293e62afe09cc14c5c4bc332e80fe0adeff0a2b9aa9419b37936c0700dd12191a3da5b5f930de756731323158180dc6c8fbfd47cdd543adac71587f9f529f9d9e674ae64bf89a026fa1289964982268a3fe2bcbd4ebba4410eb6e61ac7313ac39f57b861763c8188083175f3dca9dd0b4c399271aa49a7da0ffd2e0959a8a7ded0b11cbed659c5f479bf71c5f99b110913ee34b6b91780498f3329f0d60d1e1ff51606dbbd46b5cf69bf005c1ec3ebc806d3c38c76e6f35bc0ecac1478006e4abeab7e641753fdf0c49853d826b34e336be3f3479a34169971100b11188e5e01441ae527cb21920bc2ac76a5feb1e67b2f85e184459824a54ad58d04841644157e7723666f1d350010d82eb68f7106bcb27e9e67d992ec8056b489520a29b9926095784394f592aa6d6e68a496ab51aa807174f5f8cd12a1bb417449ecfa50ef1802cfda1db37f60ec5d08b2a2fdc41241c2748372e68959c10c454ab4e1d8fd58c75e614483cb9a188fd27d0ca4525cdc08f1188056958e16acd0c510b981447507c45497412c417af682785f4c3ba6dc7a36b0cba787ce1679f6092acd18d071af7df7d4c94a870c4dcecf878e35c88558b59586cf2fd077bdc19bd2442dbb880727363ff9d48c5fa1ff6fdae796d4157bdfbdf5007faa33a7605269bd59fe8d0960272479cda1fea39ae6f2ec80077922abfa0b029bcd9a509a5a4e7acc85d3024d45c7991851c1c5e60abbd10a03871e3ecae11e96d50ccc07abea34491310a7148c3f24c11c5965fe74683eaa141304bc7d80731ee1fb445a833c7e9dd1498f1e46308f9fd7bc826568f814b581704317cc70f38d9e0c7c04f86605bee06d3291e53d1d309fd3d9414f1d1407936c19e15f2c7291e0a579ed95e35b6bd93b0ed3687908d82f96f45bf7e946771a7f58eea2484d14b7ca343e6be7c520b28b887179cba3d9f605653f20b2f66bfe282ebe22a095be2db0931aecc57dd0f2f7e7281393a127542e52e26410a9fb13d3a41f72c2b010b501bbe7d1501c00703701d30ef9fca57aad78283d6d0067a093626c4cf090496282812c4f841e19cb3a03e79840c92462abb9cc2ab9339528368f7b2f73775fe3094f1a96d53e318594eb8d38d013b5ea223ba41635c433acbe9ea1b37512103e7897eeb5859d619c1c284cba78b9d5b0ff6e633bb4d2d0ab196a0c3de17f2981326d22b3790378333bba47d2a33e7a47aeec219606c1d437f5de7ef4239d0d37948152fdf897251f8cb6fd2d1c290abe0460a553e1913a6a763bd587c973ec73de6abc31e36aa51309f55dbb5690e9657ed2e97f1670da01c3bd1960223059d325bd478c98bd8a9b3544354793d336748187dcd91533b17cd547a3639f1670731fe7ea9dcfd86ad417414222124f98e1c03772d13ea60ef88c232b2a36f37c2fe90676132426b30d6027e1e2dd9d3845ac5e30e146763bd1e5eff9f00e54d5e8b00880f4a2933f3d6796a512247e149041b347823f04caa92749977f49782bd682e823e12b2ac86ffc28f631fb427cf4e67fd8dc1c36db8172e02e05d564cfd9bb837c14fee985c003ca048cf14ab1f8ccf3fff71a8753783cf48ab3525b15659807c2dc5eac8e6edd4c51602d05f7196eb6583e6defdd5d4024adea93774e0ab4742603d9536c3bc270fbe8e9a4f65fca720b5e67ceca9968b49cba604792aca9390aabc5355b834411b6a40ff913d0957cd4ee3cc41739b60e3bacf44080f4bf0ec0435b8010aeab67c38202e25e9c000030c30c000030cd323dab6e15b6bd029f929a594c436ce4e0cdf0fef0a594f929452a6b493b20953faf7f926009634b2f17ae507ea075907ab02867640e50b264e4212c7042a5ee80217b600e41f50d1829ab6dbad06317baa260bbfcd27f73ca3b95963e10a22152b24b26b90eab9fe4dd8834a15bc81b0042a542801f22318a84c2103152968a01285bdd326ad5189b9556f050a9527984ca0e2049312202640ca3841032a4d50fb83169e4cb6b0512b4cb07e656b9413bfa6e30c06535942d3b4f2da32373bdea9a2844408fdbbfb57f15792c09cde10d3cf8ebfb90c0653418235287ded522a213a2b2b47a001491c6194381c2540dcb040c5089cba59fa4a15155d7b068369a35204b4d2b572d4a0a39c6dfd07c9b251218207f1202878e30de5b181ca106c3d9b83da0f51a1f6352a4258abdfa8d7a2dd4fc995205480c0083576aa179defa2567e8058294e2bf1997afe04a4e2830a547a00810a0fb849ebf0f972cdc596789881b28b113818480f312240d1050228b958000517cf48a93ad3f4d6f4f92d7a29624adefe4d99c8167bda4fe24d758aab069ea1d4e22cf2c926ad7cb475560683a1d0829bd3d634ab79dc4d89190c86328b045064a1b85f7db3770eab7395c160caa0c42284020bb4cea5e635e7cb0d81bc099013644e48dc5801e5159e7dce4a356ef6d87a041457e8a5beafdbd7462dc760c038a9c1082a60a21530a1b4e2e45f834d67a2a3e5c60ae5fbae7cd7f55297ae421d396a109bd5eca7e5425054711cedf8951fe9ab26a562bf1331aaadf4333b0a2afcdb3ecfaec2b5e84a39c56955637cdbcf848628a6e0e66fee6023edf58b4a9196732637b81685144d7275a9d5d2d4bc5146812b4d14b7f25042b1545240914dfbda94b2f3bfd7c98cb880f20994d47baf9f3323266a12860a289e502bf7b57953bfca953a61482f3d9b7c4ca7d4f1a070e253b314df3acda15cee6a5036619af9df9c950d23bf02038d1d695034a1cec9dda48e21fe4a720029892313be68d689f714feca3e0902640e450307144c64ba26a5bb936b9c16c89f41b9c4377dd7bc4a4d9b368c144b34e708b13272ae5ee74f7e286b1b20a054a23b1d3a626d4ef5b9c960306e5028817b9a7ca5655ecfdff73526a170b17a32d55d41c098c3cfc89868192265a048c253ff1fb5960bd3fff3c0002512978b4a21549dff682d63a2652c0a24dedfd6facab329ad671fce06e5116b65ea413fd709175247ec71e3a175eca81549098f377e8c4169c449b4558d5b63278d9b6d1e22649c2152c60e31c64863c71a144668c3a7d79c72a4ba5517716ccd5fad5973908f7c318688173bba405184a9fde63dafd461b3ffc55943e4a040e49c40e4a821724c2072d210396878e13de208723252e23f7e90288192884ef92ad3a3ca759a3b6f5010d178a22f3ecab58c55fa82042264888c40640c9118500e618b8ea7db9fcd930d1aa2516a1b4774276da6dd425842f59929db0981b65b4d8d97adfcd3643098911220180c0fca2050ae37a4b78f86f40e09288238fcd7a6cdaadb5c510683f112130e5002b10e3933d1aaef2e0384fb59ab959f7f2fbbc6615206e50f2a79993788d23778f2fcf04db30ea2c7e67550691f747fcdb261d76d94be06143e1c846aa5749d7dea64efe14dd7165acde17b5e3ce4a0e80191fa336bbc534795ca603027252e87972081920795a7991b75b3d69d46e1e19142cd6adcf44d731fca1df00ca9b4c8912ae6268a1db049eb6df1325122491d16eb526d3b45b790297440ab15115a3ba967f77c98419943b2a43ab028725888125d5edac67df153e29096682142979a06513a3864360de275ed6e8dada7bc2153fb0ca1c267d4f30cc50d67292b4c6829a3b4a1d1cbf775da486d7b296ce0a5bff830625faea6d6800e97756983eccdd05103de7df254c6dd0b29e524253c684049c32ef247b43b4ec96f51d0c0c8b74da3f87beddf66309826a19ca1d17b35eeb264dd24a5982177cd55a3b0d94b442f436af56dfabb9b7f7583c18031c79394781b143234ca8d25a5ca97fa78ed80328646edb83bfa35489163264311836b9ae65ea2f46599190c6683988c0039693376b8410943bea173bc0fee3a279b028683d0c2a32cd7672bcb2fac42cf4bb16abcb0d025846bcbbf0b671d5f4edbf5558d4a142ebc63a306d942e906650bab14f57bfdea79bffba802450bcd9f43dda877fe58525938c5e3fbb80ecae6a884053fbe16bd2dc4baea917205ffd4b035898ddeb61a2b785aee47d536bc9a3d4da982e7374d23648d999bdf8e6eff01a407159893dfb759ab48211f382853384bea1c5ae3a8d99192824ad5adabe8e77bc951c876f375aa598bea704181cf51f9abf6203de7e413981befe612fd196d278a137a295faf6a4d69c2bf6ab639ecad4bada21d4a61c2e6aaf7a6f93c63454b0c913076fc20a12cc1fcedb65953ce6b4ab05457c9efe45254cd49d0d49c9fec126a7af142021e761b27aeae6af8087bd7a0ef93acba0a518c60ab3bbdb94c8e185115e11ea5f44f87dfcf534384767dd564bc2ca56b9c3204a4ca8eea475c85945708a89bb4cd9dc4430942ea3edd9e1a850c9b44226088341744111420a88592f283bff4b7ea5255a932668ce2034fe494b89fdbd331ef415fe2b7d578c997ae293c3085d23ab08b536b919d6d7ae902a95cab96fbb869fa201b07c885ebbf424b6983bed94bb8d8e3abb44175dca6fb6ec10bbde2b58d1dc0162755cfd5da5ecb795f8c03d4029bb4a793abf509f17a5a7093fc8dfa55a6be56335f78310b3c6a79181bcd6e6ffccce000b278d5344db35b420b91d258ace6e12d2fcdb6952e8e03c0e20e69f3a17418a574f215c7d3d214e9d1118898b1e3e447900c1b701cc015c6d6add6b18512b5214c96a9d9b3e9e851c4c3d208c5d56d6965f36a1a858cc0f49e3a3f9b360900192c8b40467ee7fa587256b68ac8a6c9e3e53b55dc7612f1bf48f14a84500683e9a17e623202478f20fbc60f12165810918ed2b141c4bd4fa745da10396347899f98e16f94781a35b01ce2b2edf8e13a863025ca8cf4508b219652db34eea42a71932c8540b58fea8e426dbe9a25b01042ddaef9e5f1b6e62c8378b7c7739ef464c0e81235cab008c251111915155affb4302c81409956e2d55ef9c91e65309891105800a17abdfb5f839f1a918561f9c3678377db2052c90b5d060c13ec30711325e91146737fb0f861e99e2dccddb4ecbfe91fce465bfa709a37c4c696ea69983383c180e18355d03f9c8d332c7c30c4faca8bd8b1b104836933d2b287d4547e5453a6852e4f0683096347899b81c1f088142c7a50b9b859e8d29f3fffc987fa62306b58f2f0ffd8fd76ccf0c0cf479dbfa4760747d6763c79760683f11f6b58ecd0ecf77a6bd475e971ca800186183b4c4cccc0607ec4c49b60a9c3e332d7934ec369ba4e18191023033bd4b0d021e92f95fa2cdf95c4b0cce131317d5ab3fa4c2d9403a245c6c308b9c257322c714879e698d6e24a67cd0c212c705066779ae73ea9528e190c46e4a4c4337ca26988ec08631096379c667dfa3b5e8db3da2683c18481c1987cc0e286c5da9d56d39c3a6706044b1bd466b3b78e0d5323d4b0c1b9694c21f384b99cccb206644d674797a56dbfb6a8e16f4f315ea24d8352bf1eed9cfbbd8fead12348891aaf8e461b226788bcf183648e31ded7f00662824d58d0808e62afe522564dfa3d0367ea95fe5839df9b2d6670c55b88f7ceb29421996f61baa7fbb5f4046458c880d2a1650cbe89f8d0c16f101ebdccc90a2c62d8f33644aa3e55b36658c290f8e8af56f6b5d0496b0103f3516d4861b63a5ef50557d4f0e206717ba11736bb2a0f4a7b924a4b17d651d37599db1c84c0f0112c58b8b08c131e1f6e4e93cbd3b205d4a4666a9ee4e8acee1058b4903eada59f8e9de48d26a620962ce0fb2b3ec7f8cf625a20162ca05de176f8601558ac8034a92e37de34a9d0a52ad85ee37e0da2db75351f162a346b9959adeb0635199ac2f9b42b29e3f6548a95450aebd2a76ed81c48672c51508dae3caf894df187050a276993b0736dbfb5b7e5098f79caf3bc3ab4562e2738de21ef52cd6ac21eef6ac6c284a4ce5a1efe563cdb8d65090b1bfd94af854af074b9ebfcf59270f4fe9b06dd5ee5494878db3baae9d4bdd4f323e0da5f49315afa0d763242e3a6ea33379494ab2b82a984d8146b6ad360524430a4b49b1df5a4c2b521dc41fda31653ab949f8480f42ce5f651b30461f53a5608d7ea3ff70242a3c5479d34d99a4e66f9c142d638af627ab5f69c4c66c46d4062e2c3e283335c8f3e5da3d221f28ca50749b1ae6dd6d295cd1d5a78a0fa70d24f7d5465de4c6517d9a89d5bf8d6155de4e9e4f6e7dc350a359e8b4bea1bffb83252ec8d0b764ecddfef73ea93f816860aa5a3c8f171514ab6504d2237b57ae5eeb95ae04af5f77a7dfad84e85166a1d94ac78b83c9be49559646aa4f49ab55831395764b1b8e669f5a553dafc4a412516cb5af97275b4492b9955609196a665c50b2deae2e957fc5add2c2774e892c2e4838a2b4cdbf9d8fe1eada4df8ae3d7e6d736a6dbbece0a35c5cc5bbfa32e4dad028fafeee61893a654a70a85580fd93b7e2515cd5f3a8b2c61c39ed2555091e7d04eb1ce61c514ea1c76c0c4a894e2ce618514dc34d67f50d7633adf0c0a2aa3e84ebbc5cb927ad6a5a250eaa44ab7d45735a93f14b89ab23184ba51d3eb2aa0b073ead7f59bbb57cb954f2095d4ada3e796ea1b4fbcabe586b73b3ba12a9d4a45c5086dbd66fa07c9b351e1445e2256b4a3d0f04e890699810906b3096bb47d6d37697b35b926b631741ac66dfc5e6833918ad6a79eb488955507154cf031c4e6ee7def1c6ee5128d4aca4bb9d1b2c47e736a35e99c4df9aa2a95388e349bddd420b2e58912d870a2a6ff7f6ed8cc8dca24f664a67236aa8eb2b38a24d4ac7daf51befa2a552458d1f55a93493d62e604881826273f4880c431820a24ceda913eb2d3a8255ae5119dc82c9ddfce9488d74b4e80848a231cd976351d2f3ddd0a48f3a834c21336294ffa6a3b944e082a8cb8c6d5a9b57b3e4bc75f7065111aa82862d13143b84bb5b359c995448c90c451810a22245039c423b5165accd92c674a663c448ef1f06287aa18c2cf111aeb26fefeed4c734144c0787534126acec0604c4e48fc502984de3aa8bd39ead151748440fc7dfc91b35562aa4148a022084dcb8e4aa81b1d3ee440ac57cbd1547358014452a857c3e9a03eaed87f78e5b36c9d6e8e766eb2219286088f1d24a8f801b96ad4fa3dd274e79a854a1f1450e1032f6b16eb516fc7d70c0d91324050d9c36ace2b226e5ecfbaf5153da0c6dc521e3c11e2940a956ace2725e2c37b8c6047864f540c372a7840ea6c3aa4f8b091f255b9431ab2e16b63dffe9832188c0fefe160a021f2c60f928c8996b12363a26594a8a1273ac61a69a481c18c94f8f0216286080f915954ece0238d0554ea70e22623ef2e06032a74a040650eebd5f6ffa6a47bd852068391833add469ac7788a8f71f8b5d658e7eac1e64c508183c91c0e87052a6ff8e3e73f1b759d06d50d24718461814a1b50850d17a8ac21011535b0bf36eaaef86446467efc880f13a5c1889f68c989c9072a69504d2b9d83a79542e90d0d678040c50ca831c3b44f74706da1322c6bd2f159f888ddb221c308491c61f8aa180ba88c41031531a4a56edb8e96fe8df785173b4e250c01fb171eac95c76d8fa2a3e54ebbe0a3123a29a5f5cd2b5f5d60b37e9bc3a918a16c3417b867f11dd7c3db9b0e2eace14ddca0666d56ad0eb9c51edad35e85ccfb1d8d84d8c2b16fd532de847fc94d530ba4f8ac662547de6ea468916719b9fa35766a1b9ec53586b9c999d77a5c16e969dbe8419f49195e2c7c3596883ee9a33d6458fcfac5c71036fdcd7c5ee1ab16da4ceceed4ac0b714552aa6dd1eaa6bc94c90521ad6054bbd0f285527352a421ac705fccd4fce6c9cd89890799411921abe8534596cb8751eda62a5a1d6fb36990716a2e53e1479d5b299512a39d10549ce5945c579b9efd0b3945e2dcd34748adcda428c4147a0a539db35f8a5ccdbd1effb744e324456ad63987d6bdd6aee728defd1f3d661e7d85f80710921d21a2d07e3c6c945b9bbdd5190cc664040ef592c59050e442bf0a79216e4fb871a867424091ab6e68992937e7e613bebbb691a3d394f2b827dc9a83e8781aad36c5219dd83edf2b7529e44493bcb173cd6abfa3769b50538e07add5c44188265e25b57c5cabba15da00102124137a7ef9bad5f06fda564ca4c5dffcc2cb948bdb2fa196895026856a89eeec54495df6e7a1aac4fdef9f75be127aecc4430825d0a6f3b8d63946ce839340c954882430990a894467deaaa735cb947990b044d6a4f7b5ce9dbf7f849d27dba6ad3bcb9523d258dddd79b4e9e718d2883de509ed2b344e7ac9886f1ad59c558b2eed32b408ef75e89ed0a9b407431491770dfbda856cbb2f4312c1d6c769ac7c4f931d221626de47a8cf37871a0fa1ce6f42898dad21d625bd4eacd61702a9f7a756789ae56b1121367fd7d6771b0e4206618d122ee6fd7544878240e9675975bb416d3605e2a829cdde3e8c144a0e08bbfdf42aad6ed6ba367fe054cd7e3275434d63ca0febd835d6cbac8ef2fb3e74830c53d3f85b67d2e68332dffa528467b37ff7b0befbf4f48fe7ef593d70937e98ee0c6db347f3f0a917227ab2e61fd9c283eeea759a3c79fe6c8377c86ea49a6b4ca1e5273576c86f96ed39e89ab32668f808a98375fb514dd25f6d5a311d54e32d3eab3947d52514328786751bbb74a73d7b71881c8e652e3bb98ad159e733184c0c42e290a751a9cc8f19223286c0a1955ab36c676da3c67d034227afd7b37243f285fad0d4fdf9bc15d2868590dfd96068f9781a4cbf9ee71021640db9f63fd1e3fef1340e514326a3d334ea11774021240d47b1d1346449695fb32168683cb95aeaa0ca747ef60ce8e990c2e59ccafe9419fe8fada73ce7159d59481994ff315b97d4275ecd93e1a866358da5d49c7673561142c66077cc672152895935791280218488a12f1595e2cf4c964c85c19a1bb7d4a8ae1e5bde216038979a5d6d9a6d15847c41a1215f6ad15263aee885a4722184cd51a869f98574c1d7ea376a9d3b5a4839480817d06ad669ce41dea03adcd80d42b6a0d49a364eab43b4c00b718fa9c32677658764e1add9e67db538ed63da20040bae87e8d45974ce429457b8e3e97aa13594acabacd0f449a7bc498df99dc22ae8ca47678fa1940a21a4c24a4cb59262da41cb3f42a6909263f266a5d2af631f22853fbab471959a131205f5cec55c67adee447c42a0a0cde1c76634e3e6e813d4da36db5a3a763fec0456f8474f6d9feb9f8534c1d776399d861529af3f2784096dbfa61079937fa30f5942a314adaea5c3642b51094d4aea51d3487948121829b3eb42e44108120ea16da32a6589d7b305214738fbcd7a76b50b3142424774893e21755d3f2145504c85ed9b861ab1414470df573b7f4355d45c1b226dc68e394286a09217d11be4d7ac541922846c143a45374ede6e17128453dca8ec57a5d61e744068d8312fbd23fdc1a23bab06a5d9b1665126c40776bed25a49a1e67fd109e981d274efd7d85f080fd272e15aaaad71dc4c190c2608965d20b55cd952d683f09cb6e822154f72b3ae5908a94ab96853acf0d67a1e6cf8d9b0e062f959edaed1e747fcb7d8e6150f35ef1b859b6c718a865e7923ae63a96ba19291755a95bffa3fd1c218175f4a7fdfc4ea58667130a985896db949cb9e8145169d101adfe974a4945ab158a8935afc7df683ba31b1c0c22c2d54556c8e36a2d681e515eac8ceda62228b2bd6f3a7ae333bc3d56f05a7e3b37b4494ae12b3e2efd04ec3e7e42af2382d4f75558330992afee8631efd5d29cfb5592a70fd2f6fee694c73374345ea3f758ec7bc5b119e022d55f86fbf6f9a4e9be253e739fc8855eafb2d45eed9c7c7dcee57bd48f1880ede6de7f36ae451f0b6a3566cee1c75cce6b08842575e5ea2d76509052ff671dc6b8ef2361f040b284e6383b069f8b3d1d4f889b3c9996e1bcca6f94b164fe0523d7e65dbc9bd4e2750a755a8d7c284499d7b437b90e1868513c7ab4f7a839a647692cdacb1238c12354e483607964de4372eafeae4ff865f0c164dfcf2e563cb3da9712e1c5832f10af7586aecf5efbd30a1aaf655e63a8cde5c2fd12ad3503aeeabdcb1b158c204964afc2e65ac68ffedfb8f1269f92772bec349d732095e993475e3df9dd892b09450ad7d528dae439f19c3120944d9f4a1e56490306edcd535e7af8b546782988cfcb03ca2155db39ad29fcc181647a04b691dc8a5025fac8603e970c09ad354c08b0accd1e324f306c90f0e9c0e20d401c300010230c772200400272641d6184000fc0d0df2c60fed7100019894380769202571505200805499d0d04fd3a0a2fecc6a2c0806e3c34b46e420e991761b90f4500ce6e4a4040d1d6238929306e2230c4772d22363a22323141d60b89103e8f8c2919c94644c7a8c8c507478e1484ee420e9202323141d5d88c30773e1c44db6e07200f1e1c37d18408716e688837db88f02e8c8c2f9e36aa97ef4d628a2347460613bd9a156bc48a595987138940706637205634c68ff59ff2f2966d0d061852633a55d94b6109bd464c0f8c20b912f44da8b7638dc4fc0091d55786b5c99eacbcd90a1830ae7e71a8f6a901b6a4ee99882ed51d99e0ddfa1f52b85557d92ff3f9d858e380a9c6c15a34cb9a699090aa7fa8b15624ec4b7f609785421a5a7fe8797681c31d0e184c73b6e14358b76bc9fc1605a471374516a386da736ae16e86042ae642a214b467e96038e1130c068e38c93206908c00c3a96b096263c7ab2390ff9e85002522809fdb98e8f724e4858e9913f52f5e7089ddafae9b997da5b8a3417c40b912fbcc800eb300262e742b75ccd9f06adc1404711d0615a07502bc54b951f6466cdcae8200242bc52937aa8b95eff43f8e632db2fcf857076f9590b3d9bde431b84c6d49ee52725a5ca32012151d1afeb69b2c166ef07c99b6db785d6cd1f843e58cbdf1ba59aca9d763de03f889b85a647070f7a1b6dd32b719318db2ebbf0e5fd76be086f9937ba585dcb3171e7a59fe225178bedd85f4ad41c22b65d70a1d2ed6a9e793b1da5e916c70e37176bfae6f84a725c6ca1bf6bbd9e43fc97d44a2eb5786b5e25377f9afff5430b744e1e6f5757eea67f1677ae50f99d4cd4bc5c838b2cbc793e7df4131df7731b9758d85acd6a3a19ba1fa727c10516c94eadbc46ffe77c675c5e81547310b2659ef0b539190c66067e71055e222ed5c9ac89cc5bb1df0ad9eb1f345b9858a1d74a91efc9d4a80fade2782b5f4d5a2aa9a6495685ba6bb5fea64f9da53e15bfd4921fb66631a66f54fcbf26d5fc2d544b479dc21ccf1b33b4183f9d5d4c7192cf9d2a5cbd638c4b29fcf251379a5069baa4a4e04d9752ab459a90af8e02ade9fd36d4ec7f835814b8bcee31d5515c88f8128a3d6c56172f95c77d900a2ea0b8948b47d7d7d1c1d47c4217e159f59c78d3a9f644366fdb4bff3c5adbea847a2f5dc669edd09f71023596cc0dfffb9c4da4d454cb07e5b52fe53e2e9a40a82dcf59cae6f2bfc9043769ab51f7a1b394e589e3820965e77ba84ea17ae464c6e512ea897aa7676d094fa7bbd29b73483552974ae83336e75f1115325f20174a9cea46adc16c4e83bde7039749e0c23dc54584645c2481d695e2dcd328bc6b13ed01824b24102aa4d48ede61e5095d20d17e50264f35f508848953d349df0a956a352e8ec87cc48d32abc4abd51ac19aeb27d32a274b741a001141c95f18e1989a548d2afd519e7e117feed371d4e4ead1e50b78b4e0a28846d769d4b3d9672e89484389ce3152bc787af982883e7655cbfe511b6ad4214ec23ed43478a9c7d3108b9e7c9d857f7baaa910d72063832a31aaa649ea42884ea837d7bb39d58a3a338885d96093b90862cd3653e387b6114aaec62510cc7e4d3afdd8eca7510f362e8040fed4981eca832829fb431f6ff210769ea2e309c8c90f33fc70d6d7bae1d9e62de74b1fde50a3ab0ce9416b1b44f2cfa30d33c820638ec5606870e143639a8c90d26c909b3780f4b8ec61d131ffb4ed759223bce8c1fb1d511ef75e96aec9c33a2b7dfadd6ab3e79a302e78b043bc8ad769bec3492a6de5994adacbcec50e4b1ddce4334b77ab7aa9431a5b2ab54b6ae54a4706173abc21b5962537abad6be4b8cc8135ad54dce06afa25f2450e4df66a16377f7bec1a2f19b9c4e1d02e4eb7c88e29bd8243e2842bd9ba5c994ead3778caa59e6f99303dd58d8b1bfaa84307e5f1bcb4c1d7d7b23b6cc833155dd890321be57c9feb543ebaacc191274fa77cffa286d655356f6c76f9a5d634244ac3c6848aefd6718c0b1aaeb5b173526ed34af508e2435dcee09f8c3e5337696532929213931e297883440c0c06733103db1bdeaae2caf4a44a3cc325ea6ccca16e00a1010f0cc60397325893977d6ea9f560fb850c79099d56cab9fb6e6b0c4bb93944dc38db29566258a8bccd3174cead52e71286c4c816b3ad1fda396b471a1730346c98877d96dabbf7043b4e487ac4c146c9090c2e5f50db34a64de7246e2eb117ec99d1fe0dd5a7f4d6053c5cb0e6a0cb165036ebd44ea3936c2d6472d142eeb37a4b77f98e0a3118931d27b864e1bc3a26ffc5dff449c4c2c2e6bcd39497e9ba2b6c73501ee3eb5f76b615fcbd3949736d17e23f5538fe6625bf6cacd73a82c1850adc3ceab5c652dd0cd1e03285d31c641729bca17783c9aee7120595b64969ad646899e742611bc5cb1c35c769efbfc7e509aacaddfbd6424bada70d4840707182a7b4a7ba69b139865213d673f2f3a74ea726f16202f231d3d3cbdf92c26609b93e3d8f3668b1d99f2f5c94b06797914acafe64ea439724fcad4dd35668f5e141021e578b87bc97a2aa3ec2715f08b5a9e2dd4b6a84a330115fba2a646c3883c1d0c07f98e052044bbdda2c3c8e30bfdb05172264a6e447ad3dfdeb9c0ee1575ac9cf1b3f42a6268446dc0d36d7872797201cb4de2c37ede80284c3699deaddefcb0fb2db35253a9776d07b89481833b8f8e097ba66b5b9f4b80df7a507c79bd5bdd95a96288807a8f4f0823151241207838160180000831d1c0b0043110830503c168d87e3f19898b84e1f1400004e3a2864422c22301e169105029130200c0442a170200c0885412192100582188bd2d40ed7507ac4d02ef01f1fbebe987ac178fc87330262827eb16f3053e8956d232a85fabfe806dd79fe2595c6469c9c8ade01d49e3413f809badc621df8c0690252f6136b0fce2064ac2317be00d4cebb52018aa1eda5d2900e53f3ee786099271f3edbbd3b727f8bc5337c68d0516655159a25a38ebe46dbe6f5ca22545ff0ef4cc9672d6a6a5ca0868a4f55c1c9bff22fffd4db0ab30a1a59baf50993a52f0c605b48156ee3ba9e494367b59a30c90c56d386cd2b19059a182369f7dfad2182d7ae4a7342cbe3b3dfc1d363b0f118dff7770dbaf26b908d2965542260ccaecb6e06561ec02a5901161c449f38dfac70e821bda29d4085cbe4be61095dab870ada0c8e2cdfffd499d292b42200a193cb2ab11c75437ca0e50e924ecbf0124b68379834786e287abbc3f1f754b3cc8449aff616cf5a5aeb4b7121bb73bebbe88ddb580dbfc48eea12f86c7e5553b80e0803afa811116f4eacfc16c17488821d4aa0cbb4409069b9acd4a71d35e2d61e9b38bac18b28eb97c1c2d6d51c0deff73c36314ab2381d9eaddc4ecec9759b7cbc0d19d2386176c3c8d8228a219d8d619194826e30ae768e41b9a61dcbfa3f2fbb22c9252c97c4b767c3ebbedf986fad8d76636b9946c36fb9b7f6f7f258e227072d08afeb20c4e099e7978793ea71b0c40e3b6cb35279b4ab582e75b38c603e87e3c882db0faf180b24803cb9b19ce638a86428fd09e31f4b9461931d17549136cb3637e66c7a567cfa4d31f038032c2a77c3c8a678b68b50152beaea97c2338b26a5c6e10f57b7cda380b1154e383263716727aa8fde5526c7434eee919974ce0c9b15bae6a8fa3b4fb703333b19aafe7aa5b5f89f86e803c1d740714791308f805cdcd5560db070a83aaa0ae1fa0798d92917aa1edeeffcff4a9712d473cce5ea12f84946b1672bf73180b57751791b464a3e8d11422113c374ae22a86c3651456b71cd22ca22c0613c6e7e1cbac0b18e020b7515253d9be523c5161849dec8290e5c671b007873f0cd43f7f16e1c90c4b86a9322fbfd394efe849608de0ad49f25bc4ae0c1b678b28bbd9d257c3bb0c2a3c232c40ee4ae0ba3d412f211dd8e55e51019c9f489dff6460cb18aca4308ce8578322271f59ac52261de18018bf12b0ce0ce703d453e00c949fcb2bf0fe96ae6ccb98101d266189e4b2c33c293db2ac34272e92485ac0822f952b0fe18f202e63556145e8255582f978897f49e035bcac40634c4e65401861e38679161fab6e2dc5a7c039ed6217a6198282dcd0913e880f22777c0a8bdd0ca0678d3b798e37c056bdd7f23502bc6ac48c6ea1f88529b2ef38409b8432004d51468da081ac3bc9c53f69bad41ce36c0b52c2741d87c6c5f4cd65500ba9a94454fbf9971d48fe1cef10767289f21ef8605d2babfe4f6f3c2dd4b196dc375a12b554e25d09291348f26a8a514333b71a9fbbfb98e1be193b93c4a24251ea29003ad615c7099fd6c451702e9fa1b7c98b15541381f0ab94a2f974b90f94aa79784f6c402b946ba12d6ee8078b3c4bd122816d487abe45e0649055224353008638027da3b4b928716e5a5e5433dcbed66a1cd253d8a8b1d73f910e641dd7b13b4dcc0f94d1d86e11c3418b6eebdf6617a4324b3942f87c7919cc6837a6fcf325626dce10daeca80d6838f0043d1f0eca881e82c8d0434e094b2555e48a1ae277af05c515230ce2b61b167e6aa2b60a9d90245ed8a676347455523f276e0d6236920ac7a486c53e3b0f96e8d9a75e3aeb1df9e107d21533b701e8ad69ad5cc56e692d180c4442c3a46f62053b9edaf310776e38122f15d840d5d8aa92a30c7df7e7798629f3c77a6055f9c11f4f6130701a31ef527aa0492f8efbe6effee7f8523386a24aed00c71762178b2dfd8e903c70519f194a1a2c8cc5858c47b81aedc42ab0bee6cb55467cc4ca961a5e2dc3b3302d7d230f4a194f22b0a02c8a281e49db4227e4a353142de19d275676db02ff142161bad5d960eec8689d0814359d5a9234c63bc156f067d47c86040649b75183a309c92e7fa48f19106892b74582ff84d52fc1744d4451007c73086ed3cd9bb8054bb8b3171401e70739e3152ce59ea54ed823d0d49fbc9c7de51d7fa085d148b7be7510cadd46f48941c0169510334195ef6763550486a6c78bf710d0c68b80f2f5e79c0e2d77eaead920f1ad02039bf1af80319f978782fada6a6161bf6461a5e9bc140c3a197a2d82e0f7c04106f2ea08f9d98f9fbbc4707f6b3a9b1d6b1f1a3a71369a101002be1f5b6dfe70005ca0c64fd1c11c8fb0e07d8fbc313bfc3fd7a209700316da8060aaee29b1b37f7e37f32922c1687a1d376c30b4ed8b58d30af1b6c4a50ee44084b5ce0736fcd529608608aa9ee0d794784232f026d29f0b7cdef8d908f7a067c62a5ff79d8d47a5acf548bfceff623f7a9e9fbe1a3f44f7ffbaf637c3c239e870675fcb86b1a78ba6cae33fe28163ab71dcbe6be9d5584eebf81bd46177d348aefd5344c84a3030aef074acf02befbc7b7a256be8d2983ef17611ef2d88ce9709cc3da36036e4f4d3818cb9cfa9df64a50c55c98cfb4525f401ad2a6ec670b551a4c6c9e45168635e77bb0e929173bf0cf03495045f1d983163de5a15fe7f82eaba2c56da64bfb023ef14005ae51a3a3f5677da2df18be1d667e3836ed1996eff5ee7b8e70991c42446af0f32d22857cdb808ac28961752e254954088b826177ec53f10a3aec420f46d313727af116478c42106c90c5d2ecbbbb1c38a4a95efbe7da0d0372beef933da40b688faa919da9deb01a06864f8e652e6c9b531c6e8c1dd85aeacb45a995b692d1b40721c89c443ff2d06b4975f74e55f8ec4fed326cbd35f68e4ad6e01fe4b44ada7879a7c871ef2e7c8aa4df3c6abe407a023947ce52ab5b43396e7b8288298914b775e093525a5430a005579bd309dda27cc477b7aa716ddf7fb745c175adf7251e72b71459410d766d24565df89ce87ebbdae5172b124f964808d5254469d5ff3172866d1ee5f4a9e3dd53027967c386d08e2b72c3ce3c6322645011f1f077f1cbc2e49eb2ac33eb23225c29d8b79e18eef530d15f7a9b6c462c10617967dd056171d50066d690fc87d6f4647946fffc06a14e4bb13957d7cac27ea4477a97a612a19778b0b19dc256fe75a1c7ee96bcc2bea5946af6a7fea5a46cea38ffb08e55ef2a5951730f47f2027a61d8b71a45cfcadd533ea4f960fa64fa76a5f0a1ea5850d5eba9d98ad24fb7473dd71472a359069ef00c997b4c63e1a3cf7eb61886191f3913b03e1ee9beafec9eed805dbceffb08c75ba1b6ee487d796d3afbea84062d9e15373cd73fcfca6d6155ced0b276df3aebc0d18b754930fc5d77f3c8f602facee22c5f164de1332cc04f6312fdf52e308ac48246c1f812ae7f1a2e514bfa888e8844c8f841ef22c9d511501abc02beaf54658227fe16460f457ee3c00b721fc07c1deb0e03a89c60b46d15b9aea35f2e5e38402a70afcd60ed1c3b71a4967749dc65fa2c21500b0216f9319d0e90b276051626251ea9a82ff320326e768e229936da8531bde249ce32823b323fb971eef44e50fd20564368cd32316171350094466ab865ebcc91cfcae929acc30ca37bdef4ee7251b477909210cbae32353adce5598a7e5a49711390b1035cc80a08c2faadce3c3a5372184438c3e71e7af93cb9a63b152acc253958a6ae35148421323b988f16aa9ac51893777054a6e28183891bf7c282734824cd4b683be627d823c53337e95fb5b30ae629ed13661cc3d080f531b6b28089feb0fda03f42726e3da4e56f4c3f9f398f52fa8b13e238db4a61f005fe7f0db227dd6802932240dd8511a8baaa752e33ef01c5a874215444ac81872224322bda33fdf462da942e23f533a5033f8d0366b433d150e04c634fcc79402a32e753c1abc2505cc07b3906460009e97c3cebdf634cbeb6ffd051b5dde6071e4f0f04aca8522d4640f3ff313c83eb315992cd0ad6fb8f48e6bad4c423d08aa5bff879cea14db5de3cb02d74eae832d13b268004ad21ad7de479470573cd67aafb78a987fc6d1dc1779940631771b6e143fd04aa9af8aa1cccbe7e2dce5ac0e003c321b14e19fba975485d41d8a4a2249fb526b56e4f435751797fffc604735e48058cc564b5e54e306403ab89948657bbdf09344ed7db79d8805ee7d2380801f46285e5106df14670ac9dcc09dd862762bdf28e6e561ac52a728bffa8d6ac46b86c1b373f16a20f53c8f9c389440ee261a54340142f6d33f82458cc5518bcd4966c6a46d902f386fb344d9be6e34d21d5ee7293614d509e3e76211f7b53de0d08c2984914776ee0ba6abd949cd9cb6cc590c39a447bd3788f922578897e8c39c7ffe57bc9a69ff8d35b67c567c1efbae1cf5432500e4f87d8289be2fa33012c1664ef96144358f269a481bbcdfe05eaa36cc50e030e4b249c9d678a69adf726fda1fc26392d9c0a88d5169a7901bdff58b8b30a06f8d32cd7e5098ed1106b51e6b6f6accc14e78f5a44423db0cf5c70f754ad3d8f321040faa0228f4902d07e91650e0886f9faff4cd6fb6c73444063269cb24ac957633ed0a7e35d7304945877e81f2085bf0c21d990af510e045933a56e363ebae285792a00ef52d75c0ffe54c21c294e23304415e2813acdb94eff5470318468d7b87554a4fca15c98465bc4bbdc1dc9f6e7244c68ddafa27edc41b7d8ac837fe06ac807c59fedcc04888bcae764e81c8e1378abc8077380842d528e930debd54699b509c7c6691c6acd283e8534725b2b64150d9eb2a007691c7439f638a8344a3a464c105016014bd498a847e36de28515d3a464cb0b2064a7b9c51ada3aff2946c6df24b2b1cb47c41294d439b6c7905173a71b6688e85d017c56fe0736babcb36ba549d808348eb7e3e14033d9514e4076a3c81275f74367b9458ca73778d2d7ade4d98585cee0f453f1e85d84580fc66c49183283297ae84c08702810de4315d2e4a3fecce5aedc054a9b32827d033ff7668b37b68f742f3503c1efa5c1ce0993d20626d59cfb46ff602fe7ea6fa09ec5baa98eac42c376b4c3ef48db4fa5416f125a8c4679eedefb529fa33ad1b8892746ed2dd17d924f8a05684e801218b7ddb57b5c887ee5569d4f2e9799edc0213ae96517593942f885b87881b891cbd163977233bae8739d47f59fd6764c3ff24393f9b9d32f9d3a61f517b805dc02508e0d18c363fb0ab1a0f586e8c96268f4a4118989205a2a8609eecfa6b0fc8343c545e8c13e137d73fd08f1ed11722a66103c8074acdfe353e209f361aa619b3967bb59db1ffcc1d33f338a0029418c70043280e60eeac6ec9da55d9b2add90643ac2e40a01159374cb0e0fbb10c4313401b282143379a18de34efef79ae2ae56ddf20a6c2228c917f880d7112fdee333360164436dd79e9aa29ced6cc29646e988d18966623e98a7df245cc4b2b1cd82cd3791385aac8f4524e5b6b974ab728e45c441d6fe0eaa6e6686f098e4650093d22f16f99262fd0759147e29da81092267815d026ed5c4ece415195b2883d9bdc3350a410618f4abce51227755ccc2ef2b90cc1c6b69365550fbac93c6380ec807abbfc6bff4a146a52681c1eb8a43a0f2716d5c8bfcaa746e479a82285b46dc6519167631c4cf70a1656b72da4541b751a038bac38fe4472dc4f09f1cd87a3cb317777691f39182a9b35068f2202b890dd41f759cfa35ca77d8d3c691b79b1bb4ba476a8b0c5f2538187bc71e63a5347748f1a2d8f8558a918a86f781198a315d3497edbfb263dc2f046c7fc6aac893be0a4c9c0aebd3da3eb07ccc6afe2030eb7a08683f4f9c8a0cdbc5bc2356283fe10612814289e9c04439538965b8b9e2b6717a8415e1594960d52ce8dd5f7572b53e28403009bc88b0839fc1030eab93ce4eff46622a116cebb7f0ca622fac8c5bebdb45d4304f39048ca6e6f443e3512f945a961852eefe95b10447c17c7b3ec95830a90ee813c028905bc02d77701ac6b2a8390b6952b37b28de2a047899920b4815ccf2460003485f135cb0c0748e30ba0709f2770f42f84e208ee7f1d3afc66c0a1ad0835ad41fa9f1410b7c421ec0295ac525596ccb073a6d54b826bed83cbb0f948d81438e7ccffbbb156485240f546ac727a00f0cbc928a08cf1f6419bf8567a3d8cf8681662fd0cdd607727f1ea15e4427b9e7baa8579fb301f216d1d5f202270ca8a0ac6828f1027708682056192f50be147177013d0e3844d85d6804ca4bf92a25ee691de430598a7ade69000b28b54e4045a81fe92012f70c3ce2d743a201e7eac69679ce53b37e510bf0749662c41f2b983ae85655d17de0dd6a88d8a3703f31d30d2f168f5a4e96a400b8bf7f16eb0c0d0b99ab263c7c03a81f76a56a0c210c90f6eef4660a245efa60bca6cebcf2bbf8bd1c8c61617b14c161718fd052b99d0356e5bcafe1fc9c99ecd296c97dfe63c23992c5bd1cf6079fe99af4caae762019e531689e5a0c3d76978526cbc4edf74b13571c543175993b20786b0fc4f8dd49c0d312540ceeb119c8d15212c6b001f1a8738a04433d404ea9786a8c796e756be7afb549b85187a31bb7332fa0a37f8b13d01600e5b78d3e94a124bae2b88d172aff59b245717e0822c2cfaf6b06b91bc6b3f61c7f8651c432c087cf066fcd993762d576b46588451e7197bca4db67c98eb9a4268147df9af598a933a099820492a71758cbf436a7e91b9d4745c1cadb94ed786c1a65a40de82b9d3f5f7d3557d3ab37944d2aa911912a2ee1363cdc24ae58490d6b01d0217a97e3674e16ea654786707acf5b54f73b2305c5ba2c9519cf527ddc9d9f69d06ccb627b02dbf301dbbd8c7d417bdb22665ef21a589d09f694abc35c17e7066c3912cb1fe511d859e260707d86c55664ebab8c5bfa562ff27f08cb732a9d5f894648eadc0e98d25c34431b74df331cd4933c01913203cc638b2027c531bc5a551ff4887d32dc91f9583e4abe8f4c2189971569360fb77c90eed8d9826090a451a579fa20fae44a07d560ef4461b2c56bc4171298387f6f02bc2872050ce3655a6f237dfdec23990366370c917a66404861fbbe989fc3b41933b372b490e8bb9e00f75122b3e6e8b28df4b3ed4e0941b8d2f2145e0cc6ce82250c210a0820c26ff4bed9975f232b3c60ead92916c962dde88c8b35e963ed103bd9c387958a0bffa72dd8bf7ee1621ab85380631c5aaa350f202fd2d21449efe2efd0b5f69be9e14cfa0aaf30e126a6443b1d5df88c0604a61c58eebf2ed61a28ee04068352ef119b95a29d6a815db9d0239e16102e1d3dc2403da591674805213b3cca64f010c3e037de1ba71548213dfdc9350691a5ac2010e5df5bf24394198304c77459b6ef95cd162b339242d2e4f7f040a99c539685db06a1afd5591de5e8537be3a18b926914a68f72742a6244878de058be533c49271173c1689fd6077942380f70df9fbdc3404d04fcfb7a0376e77c47d80dcfed2b537ebff469b2610b29489b52ed509ab8f316ccda5c0e97552848634eac1a09eb3f91b15592f2322e66302c178dff306a660efa8c256132354d28051bd3fb69912c20d3e1129cb64db18dd7bf504db86ed10d0c52ebb30a0adef4f9785aff94f53b5dd9285b8a992fcdaec73b7e9c9f298b830e48c24ebc267eef3b5bafb2edadec29e218d9f3f0a494f2c63bd01f94ec5e6f3ca94a844fbe7ec7acd2eb037d08d408db61218f4cb88207c9fb1896c5c695591038bcde3c4c3772aacd9d3b21eb2a13568ab8014985f1a824b0537731f94745c4f2f3f2264e27d32d3e1901c4ea0f335a13eb4636266c7763765aa13760f42adee8651fadeb1eab5984253be870f7a283d38fe068022117bb280e538ae4507af461fe174ca6136e0a9d589214eb458221565b6c6c3faa30e6c91a3f52575f523a9ba598db70dd8909996e7c17169123d221de6e6a355a37b4c0962be410fab65eef9a876ba6432954e496287ec7fb468c94556b4a034bffd8ff3143f7d8da916468d5b3201950c2f0469f8f693cbee9303f1be8eadec1dc69daa81eab0410c5cdf9229ab7ccd1612301b89826b69187d0d386e4cc5a06a7c1e2d6bda2e3b335534725c5804555eb3b8fd498c331c699a60b1bf1c73d2bc7386801a615f75fe7bb0259b55ce50a31e1dad047c07901f570447dc634e4bc545897c0bc4c4a9355873fce4bc159ac551bfea3c18d3071ca93ac7b3152991682756443a37ecbf081d1df99b1e0c6fa3f9956dc856960fae0ff9484d40fdb86f26e0f89ee73c041070bb23e8b088cc84dda5ad0c18cd1324c7a31682c2f5e281c7777b17344a20189233d08bb863e82db91f8756b4563be07ef605de76540d366d16b41b533f43244a704d59a2e8f8536ebc349db61210d2890e3e96399150cfc3487961334128279a05605ca5c16ac1f3698daa8bd268b89de4a954dd60cd68e663da949c4273a99b93c87ea0c2bbb43a68505", "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x3d8e18726f636f636f", - "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", - "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", + "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x3a65787472696e7369635f696e646578": "0x00000000", + "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", - "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd00587cf2041e1346b713541070589c0ef0037d38990596d40bf8dcd604f21f6be13b283e40046902729805d1547369a81a401c42d559e691220f0355686207ba12107399dc367543acecb86fe506fc073e615ffcb4a4edddd6f69652a6246531140f132f14ed95c27985dc55af147edfa167532865ceaa3cd93294ce3f00d1fc7d77bf24e0f7f30302fcbea73bff864c31f2f7ddac7e654a6305f2d761e75238d1c85d7f43a61624993f0cd40ff4336b2499835872e9836ef6be2335a9495f0814e4e5d27b35cfdffbce0b7f6cc873e6784f0a479abddfde030abab9a4031d2337fea145a5f0c726f7771efed890e9cc21bd178e9d49df51cf0bb7771cb6f7bea749a1f75ff8438b0820941bcfc983148e3493bec77b7afe289ccf8df4677f939e2e065b85737b48f38b0a79cd1da13300489f6bd574e966b3e8fdda4fbff6b6b0bfa31ffdae7a32805edf7f7ba7dfddee5aaf7e37d0efafbe7f37f8d34f0033d3bf21cdf3bba19fa6a0a1787777900ff1ffa145454545d93fc8b363ff9a1dcfe8e06fdf73a0ef78a495d216a8be59a38a47b33cfb9528b1ec8fea161533e741a09b38238d65fa740c4ad632fdf92a6fa53ed3f7a7306f15711a25bde5f58ad27712d4adfbfd3d4d9900272dd35779cb3ef5bf610d79f096c52a5fd1a74fd47de44a1466bc800b3f68c11362dfdc6d450d12e4ee57b11acf56391eb939cb2a1e1409faa32ad3a74f61cdeaa74f9bf8d1ac9e4e9347552ee569850b488c2a1acbf3e6d542b57d08ddfc01824c74f26c557d1ad6563901402e2fd109f27c4314442fde8fe2e2978e586546879afbabfd7e8b8368a62f2ae44da7e8660fd08a19b13cad40a10b3df2b452c61259c7ed535ab63f472a826c5bb4895ed9213453184501a8e3adf7af5f9bd55ff1b7caf14873ada18a7e3838c66995fdfaef2d4afaca3e97474a8e9fed77ddf4462195d22a5bdf432ef45a659f6b957d2edba744ae3cfad92cee4778f4bfdfdd9092adb24fc202a479f42325b3fdf9e130fa5128d75148b3875eae61672e44b5ca82adb23f82d9ce59a6b06c9f92cdba6f9f4ae9164892a411a2fdda2cff8b83805cf690a655f63beabd7d0f67c6e9d614edcfafe254abec070370d4c99666fb458068d6b4528612d97e50b3eadb1f82ce40b3fdc9e551c7cb6c7f7a8b8ae3b4326bfd388b90ed8f938c6cc5719e91298dda283a3ab5b03fd63c47afd53ff2c833489e3fa790c9ca6166a55533cf5735cb7ffe8f66d59fbf85dd1c0038afbc20964f795e71810c72b76649926406c491266f3fbb35c511276f3fbde5f28127caf20ad9163b10b7e79a65f3f6db115de40d8f4b74f2c55cabe85b2c0090e69929cee1085d68d5ccf46bb7a648dfc30e6bafe8e300a6f22ca3d0f2cdd30a17aac8f4270eb52f2a44bd55106516c50a7ff7777ff72844d9dddd97907104175301e0151aa4510e3991fb390ffcd1f500d29f0d64feecba2982b33c02f6cdeaef9a6a563f4eb36aeed2083172bfd72d176b1e79e4a6c9fd54a749479f86adc2e923ddcc136704737f47dfe98f4edf7fd257e261e73243b91f0d6bfe6a190a8ba96b8f869e3f28d7a365285e690a01a264feb121d3ef9fdf0e952433cd0124bd66cddcdf516f4e21f4c7b1f39005d2ec3f7f7e3838e6e6a7c32cca748613a7b11230cf1b21a76d4637f36cd6d83fbfbe4c690ab09ffe387fb66ab6aa3e0becdfa15fc9c4b355153bee69a1a607e8a608d61f53d9be4eb3462e48b34650d5ac5127dbb7ffa3599eed152366d93e4db75ae4c9f667b33a8f3cb27db059fdf651cdf2b76fdf6b167dfb13c76225b37c75f327cea893fdbb19d2dcd1ef86da2a8ac720cfb5e97703c539d49fe1cc5d373f1c2e1e3fdfe7fa9bf4545b85c720cfa44f35ab7b7f9a666ddd361ae171f4a41f6d1e98e783cddade1fd5acd1fb77b355ded30f079a6bab3c3c7a4ffa2d9cd90b833c8fbea33da997e616cedc85339346e16cd598caf3396f517971f66ace9c91264f3cdeb7efdff99c33d770a4198acd6391cce1209be7f4727fd7b537bf8b47a17c9f86331cb93cdfbf494ff3472efbcf56cdefea37e7c96b154eabfcb79fada2ffadf29fdf0d5bf51b563cd20cc5f338440ef27c7f8660385bd54fbf1b2e9ead1a511673ad6a30d5ac99fd6b38f3376bbe3fe7ad4a9224498afeaa29c4b33f4ef69f388e95e8e4792344a296896ef280b324d1c8b3249dc83ef22c492972679a38e3e7fef9cd008e35f7f734479fe3a6b766af4630d31fc13c72b9bf366b7eff6cd6f6f36bb3eecfe79a35f3fcee86336f21cdddec0176f307d8b947bf1b361c04bcdfdf0df7e7278099efd32f87ed2f1eb7dfbeeb2f07306f3fbfdaaafaf3bbc17e4f77d4bbe1f6f3f36e7ea4e7c291cbdcdf70f4a47087fb233cd27c7f0bc78d1b6be6fe864a463ff3fc6e187dc7856300f2fd6e7e1c1eb9ccfd0dc759e6fb5b388ee3388ee3b8fd6cd528807c7fb66ae421df9fad1a1b90efcf568d45f2fdd9aa11887c7fb66a7492efcf568d43e4fbb355f77b9c0b95fc785151511a99fb99b770e61b8e3cb97e473d2eacbf8533cf6f8720f97e4ff7f428fcd93287479aa178be781c22dfefa8b78533cfefe220cf16cf568d35d3efe99eaee16c157d0f67ab4654a63f711a2bf93c6f8446b44ae962c0f9f37632e0fc79bbd92cfa2397e7cf66f5cfef3aa4998634d766d19fdf51afc3996bb3eccfefe87783c54140fa1df56c48f3fce877edc900f6cb94a600fdfbedfb7783c54140fa9d7b36a4b93ffaf3f3efe9f9ddd0dfd33dddd33ddd518f86337748f3fc0c3033fd9eee69214aa907baf903ec4c136704b3ffec56ed95fffc6ef600e977c36cd5c865fff9e140f36c957f4fb7409ae9cfd09f79b66afe8c0e5ceee772e3191dfaebf7571c4433c5b35563cdf3fde79703fdc6633ffd9e9e388e958079de083515eaa608f6fbcf668da9ecef9f6ad67c7f9a66d1f7afdda2a23fd8ac7985066964ffd9ac994754f69f388e957c9e374294e2d04d20e02c8d88e5539e575890449ea76ece0f0820ced34a5151def2b4529446a679c27453079cb69b3ec069bbb9034e5b32825e41850c52098a920abe354a534a514a524a4e94884a43a523be31be2f7c6a7c5cf8ba503ac1575422bf277c4ef8a05042a2f481ef0a1f16be257c46f8bcf88ef081f115e123c2d7c5b7c5f7030a18f962e065e16b818786d78597822f04df14df131c0ab8146c62741ae8601d171d10be283e107c2cf8aa6c45200581040412171f172432484d208d411283538344237d41620269099c17bc283c2c7c4e7850b80fbc076ec579e05af80e3c0bc7c2cb2f0d4a059d82b280ae807ac0491326412c41b2800240b1a1061a4a1e2869e0b3c257fbaaf069e18bc267c677c657c627c6978423df10be1d7c3c286580f3a2fbe2db428989d212a50d7054f0a42095f149f19cc07160fb82878557724870497c52a0344fe6c580b405ef06de13bc1a7445f068e0cdc0938107038f8a8e0b1d16484d7856745e7c439d11ee95bb4523e189718dc019a18be2d3e2d341b7c4064647eb94d025e10ba3838294c6474609c64dd9aec051e98670bf2075a09382840152942d8c1119f408dd13dd07465c904c40bbb85c90605f0f3e2b5f79c1e0bee88ec01d81030117a3455e10b8127021a030d8a4c03541b2b25181db00c704a70487018e887a817485b4036ec81382c70517e556e18cf094f0ad80e403520f483cd88a6e0f3e136c5ca05ad8b6c089c0cb62c3022765b302a701cf0aa42cb69a57dbaac01df149b19de101c1fbc13685ad8c7e629b056d577cb08f892bc6e681ad898d031bcc9302cd010f5c191c199c199488c4819b04cf06370caf8a8b048f8cebc53dc206855b84fb030e0bdc156e133c247849f0c0f096e085d111e13bc2a391b4e8a8b838b84fe898b850f0c6205d718140d24033d14b9072b0e580e2a0cb0007eb60b0a941ba018706dd006903a42f90bcc075806b02c7049a810d8d2d0b1fd9cd3c26785e785f6c5ee87e40c24127842d0adc08b62ef4940d07fd812d8dae0b6e096f079e16b4b669e1fae06a71ad7024d8d6e09ce09ee03cc07de0cbc1770597814f09b40434c69980232f11b82570b43b82fbc475e27ee07ae076e03671397037703570619789bbc4cdc055e22641b5b818b8542ed145e24eb94357ca8d728fb8465cd216d92f582fd82ed8352c17ac1a360dbb05ab059b058b86c582bd82b582add92a582ad829d833ac146c141a66cdb0655828d827b413d609960cdb04cb04bb044bb3635825d82458316c18160c8b044a03fb85f58266618f4075608d608b608960bbb043b0332b041b040b04cb85fd81ddc25eb156e815eb03cb03ab85dd81c5c2eac05e6171606f606d606b6069409bb033b0555819d8185818582aac8c6ec1bac056b12de826ec14548cde805d8195c2466155d054a81a940b36051605d604148c26b2315b023b82ee800d8105817dc23a613f603b60396037603560617609cf81cd8055c22661892c12768a9562a3d01dd823680cac1196ac45f50bd50bb50b950b558d9a46dd42d542cd42c542bd02d500fd001501098a2e4a7744670425025705c98a6e0cafa83ee15d18426de03a6810502cb407e8153a891e6a0e7c515a03ad44638022817e41a3408b4097409b40cba04ea069d02c5034a8129aa456a05da06bd0332813a814a819f409140a940c1a06f5a243408d407f40b7f890f07d417940b1a0e59705bda2a5d01b7c3ea032a035a03310829e809a8082808e80868092803ad146d00e502a5409bac40f3e10f9661f1639e409480001758d8ee649474c18b5fb3c314201224e8cf800418448471d09131f22444893fa2ca18091202642f84024e8880f5012244c92102112435a623e5992c448900f12223e3e3ee42029319bf8c024091122807c84f82192c4490e62e21304114678785212d3e70893264c881839c2a48901829808d1e4c8915c431a9a4f9ef82ca921912d232e04510097911a33c8e7890f3e3ee2cb280d244d8ef820b119a1319f10e1a3e409113e3a24201c5d2189934cc4932401202287232b0019d57046559843f83061199d31a5308138d2c489cfcca88c0924c40f497c60d2e40891244eb20f058c882ea3274c1f9a34017242c44912209e00f930a940132244f828c93162c244e2c3e487244f98081164e44813284984f8f1211204d4c4890f5090d11226922444827c9e0009712466449b4f7c920425016a024490104688fc402489936cc4091226468070b0311a63124101224a78b2c487899320808020828489104d28c02449128298343942e427082461cc263ec88cbe984f8298f840f1f162fec0240912263e4e88f8041941920409132347788c8c307d90343952332ac2046ae2c3139f27374644984f828470122444131ca32ea6912023488830699204894fd093244f807c9ce41809613ef1016a7284081141499624a1809125498c4031f2a320cc274e846802f403111b2320cc27404d829e3411801120233ca4465acc0a247192817c94003561c00ee1a89c3e3e42f80871801e90f8fcf083911e768cae984f941cf101e2480de69320263e403e403049f2232b9824f1616634837924c9132649808286f02142c412274e8c1001f241b2248910a292234d968834a32a6610448c0419416224c8a700a7510c2c9064899124414998247119c9a692234d965080884f9010477c86f06119b96002350180078367c426bb62460bf214ea664992990a79ccad5da85da04ee856593b73ceb9c362b1ae6f4ee9d64ebbbba9574ae9d6dd777bd978f875bad5ba757b53774adda973d57ddbacb5be550ac45aba39fdf182b78dba7b538ad2a19b534aaf0fdfb6daa3696fdbe528dd71779d5a43df66b66df34b2bad1dc37da1eebdb5c34029b5f6c5dd5fdca9edeeb9f97d717a299deedddbcbd65e7ddb9c6e75bb9b7bedde9c5ef779dd5adbdd7eda4e27dabd6d278eb69fb6deeacce974dab68df3d389a32fa7939f4ea793fbe974a2d565dae5db4e395b9fdc4fbef9e9744fa7ede47efa4e9b6ff56ebec95419eff6666f36daaf8d7b9bc76d196f99ed56f7cd2bddb6ad56f7ad6e9bb5d676d3cddb7b667319bf94d2a6bd3975dfe1ee973a6d19f7f6ebf9e63adcbdba6d4ab1d3952a078a736ff7995477cf78bbe7796edd5f5e5edcdbaf6f9bb73bf5dbdddddb56da9c44c2f1e2deb7b717d4ddb67add6f38755263ba6da70de77abdd9b6ee523b76bad5b9b96fbef90bf5ed76ddaebf6c1b6d4abbdb5f5e5e36e7dc7df3ad7ddbb66d6bdfdcdbb7de7adbdab7dedadd7d6b4a6bfca57df3da4ebb29757777efa6deb486f56eedd4b7eef6deba69b77757efeecd9bba6f9bbb6fdb8b534ae9db4c4a27a535f4e585d23a29a51ba554666e9b8d1aae69363ae9cca432bef556db3777ea94ce3abd5feab6799ee77925234a51bc05890f900f12a0264458407af824010ad2e1e520c5a4643c25478c5060c99226403a628cf800c9b8d87089697912f424c9103e5e104d543d92f8e003e404a3665c9a340122f2c4e707264680388299f838716224e88891274c8c000511094a1204058478b2f2794224882648981801c2a9a02744940035a940900f139cd2139555c120616284880f90112741345962e44893253f3e244996188142e4c9cd4b1036dac707c80722404d828c1c69b264891197b91344922026420061940f4142d4a086f0018248109324404e881c799224089a1fac9a219a5420c8861223478ef8286101e9d112a4c70e911e3e4a8c2ca100911f982401e28911209e85c90f499e84dcdc7942848f122247922ca180104e5440374eb307129f274f7c809c04d1e40811201f284d8ef800ed286101e9e1e488cf93d60dd027c808900f139f1f88187982e4c88d29c7b7c4078acf1222431809c2a6f4439325447e6092e4871f9a2c89213d2132840f122649883049620488233ef8d0e47790f8dc7473c7470991a0217c98f0f88078928449121f54dedc01e24890110a1009023212d405f9fc90833477808cf82c3942c4e70723404d829e1041b22409104788042d11c2880f3e4888040de1b382c2c4c747b30711264d923c01f2814284081f9200f9402122c30e10203d809e106912e48408a023448286f0b981c2c4c75b661301d424089f202e14263ebe63a2f5b445e64b4848c8855efd7a09d52253682b3285ba22f325b4bdb62242740abd5ef3f57abd8484be22f3f5e28accd7eb3585845e5e44a88b4ca15be445855e2f2ff2a2b388107dbd5e42b5881015a2455ef4458bcc172d22445f54c88bbc5e422f2f325f2f212f22446791398bbce8ebd545e6ebf512f2222f2a44bd1679d197909090902d328584bac814a25d44880a09097991964ba1734e1ac4132333230db1ec3fd26025fbd32085b752d84543cc5baf16b1fb32bb6c9682ddd4fc6928bd750377ddab6ecc6ee0d448ee268643bb51ca706637351aacf016cc0d9acc0d1227d6e1c06e642aecba31c3a9e19037311c1a0d326fc5609c1bb51bb0161c59cc4d7933bb11c38153c2dc9037b41b311c244e7943ded06ed46ee0dc9437b31bb41b244e0c0776d3dd90e1cc587ebca9c9c066ca199c1ace8f383864cc4d4c662643cec4706037b2181acc8f37603238b2999bd94dd9f2e38d1a8c0ad3e0c48d180ea6018653e6a08188c6611ac81b320d729646f6e7f9c25baed5cc5b2d61cbd3b2e380ad38da8aacb5e8a865c71153913766aa5acbe360170e1cb0158cb622cb6821b3e390712a588baacc31c3791dd88503474c45ce54351e9ab77060d971943754319c1c3968ab58761cb3ecaf5ae52873e4c03153c97294396a3960384a552c872c072d07e9c22153c154658e991f57309c15094363c141e3601cd9a2aae1cc6070d458622c306ed6a22a7148989fe28d1f55b11c3fe6a0c96038384a1ccc43746354c960300f2c071e73d458308f132ad58f394a9e98af3c1c73c478c80ec7bf5ac45a761db0956cc77733da4c2cfbaaacf1f8991de40e18cc2c3b0f72472ce76174c87494aa50c73f2cfbef90cd6078d58a560b71ec286f74601d640c1ff288ad6238b06b47e9d24173e9205d3c62c0ab988b870eecda21d3315bc18057b5d58c07b923a62307ebd0115b95bef21db51d3cf00e988e9a0ed86ac70ebc838663c632abc15632da0ed8cc0e52476c55d676c47494313a64ab19b94336aba556341e3019fc6a1159308f155ff98eb205bf5ac419cc53faca75d062308f15be721d640af3c87ce5ab58877978c426165248c1437e91fd471e32fbcf40f3d60b76bdff0c5f78cbe5854bb1e4901d0fd98f98cb8e4c874ca5e12d540a95039be151c210d381fd90a19e05bb72481eb21fb11d990e59f3960915cbce630683ccf4a3cca97539301e250c311dd80f5919def2ba1c190f5a074309930303299353f2a8cdb2cbe4d0608071d89553f2a8c19003032c47c6830643ce0c063227c6630683ec47cee9c74887bc3bb21c92870c8658f7e30fd948077661b6b4b2524e0df5e38f3227c663766128533fc240c6fc9833cb91f1707979f9118659aa93f91106580c66f931879663cc294d3a82c0caecb57f6fc68abd90d93fd59275b4f05f4a980cf72ccfd5b2cf7c4b2cfbcff0cbc85824cb8dcf81f3375a349c160ca6bc7996582dc7ea75b466aa5fb5c81caf62c9707c0e2030203ab0abb5c2ae16a9c22e962c077601c18181d06e60578b86835d2d988be50272838170d8d5aab566b08b350382318b0c42b6642e160d488859b020b056c9aa0179cc8af1a8c9fcf863162b6d8f12ace48396a2a174643b33cbd57c9c7efc511be99433971dda4b8f5ae9c71fe40908e98d682e323fc5910d1e399dd90b7eb588a9e92b1b78a786fa295a3c7d5583c754a63ffa20f1f4150d9ee2ab4534fdf80336aa65203358c9aab1583020651052c6a2b1662c1288ac1673f9b1056395406a40622f3fb6682fad990bce56b4583220b411086c9c41967d062bbc65c2ae1899b73c6c6762d985d0629726c3cc5b32f65b60d95f66961de632cbfeb4ec6fc2ae1962426842624168312bde4a61d37b33dc1fbd8bcc7e61d96d39337d0b76cd009bc9000b32a3cd507a0b854d312eff52cbfe65f64791d9df144426431923f333b5989711224b7dccbb6ad9df55a507984f0589c9209bc12e2132d8252406bb6448615710182c832b48cd57fe2ed825a47409215d41643294ae1948192e76098105296500695f8c44db623576a27d33126c9bc9003bc14a3352b9cd5065204f3f45ef4721654908d9c950da1f83c84c3f063981f84d38cb6aa50fa73c9cad1022eb48181ce15cd6f0ab45dc30e7abfe295e9cadf8ca7f9441967196c257fe53ac78faaa7f0c12cbfe160069ee1f2716524c2c6679debcaa507d9d84ea2b25442f254214ba8933d25a8bfbede783deba3f3fe52d6f7d7d496fc3afe116ba5c9e0b5d30ff6a1137efb777ddeeefbb60d596bed292fb9e8bd9d193de55a507f047efa259d35b3a7b52cbbbbcab4a0f2cdf42239d9ef4ae5973c12e29533ed155a5879787799714221b44979f424557951e50eff22e18eca2325ff9bfe029547441614afacabf05bb28cd57fe2c780a1549d8a5e32bff1376e22bff117615f1953f88a750d162179df9cadf845db4c453a8c86117e82bff0fd398affc37ec9abef2f7f0142a5edc610af3959d55d8bda08d8d7ea4659ddd9fb49fe2fd51679b3591f423a5dd9f2209bf5a44fbe32c47f8d522d69fe2f62325b99f22f7239565dfc21b82bea26fc394afe8d7f07d456b79debc5042b4b759679a39f44d53c87cead2c54c1e29443188fd53aacde421e2217a4b0fd1fe142ab6cce421aa339387c8a3993c44a89ac943446363f210e1888e5ddb13f9f0268f14a21cb1fe942b5ad4e421da5c260f91e965f210c1c04c1e229bd4e421ca213676dd27f271278f94289b48a423f64f71b1e26ff2107569f210914c938788059c3c4432a7c9438445fff92c93874887e8d8659fc887387988acc843f48d260f910b69f210d5889587e88658b1cb9fc8079d3c445c4f1e22d0270f514a9c3c442f360f914aec9f3f274f6357fd578bb86d7def8653d65e0c3a7611f910fd2de67c459fc887e86a112b7645f1a2a222c7d357f45f2d22910fb1f1fb8afefcd7a5d54a478900e7678a47fa339f0810ca967f28997f9e0865ff51283b7e3267ce3873469a6938f31020fd21c059fed83cafe0c00a737e13a5205337223b1e2999e7a703cdb5facf7014caf3e70fcdfe33a44bcc9df9b313328d4ecaf5eb6d42aef8c78b8ab8fa23cc84c323f74b84a8a8e58b3957ae4f9f7b0febcf4f871904263287a3b0dd2b8ff4474c689052e6cb64060196ef8f16c8dc08339964f020450e62f0220b6e88ecdf185022d3e45952b9a108c48d7c51021551cc20ebd328c89a0ca8a08918d08dd80bac90414e2619390a32062fb220a1d020a51cc202f97e14474c32c40d93930c7162d7fc17131298000946748124458b492924e94eb2d7d0bfbff92de0b4042540f185284545e214002afb8bb6bd3de81a96fd3b6400a8e47e8e3c5e4c956895123e5308904e8e62bed07cc2d39f13572c654a8e589fa84554a259a8ec2f53aa028e4b3255a255fe3a4ee0414a7d028e5489ec3f4e27647fd77cd05742e2cc82086850021ac8682429d6779186649d6209141c71822b4429537244fa442de29432a545fb443588f46b485483e8aad2037d170fbef2a73357951eec57eceaf195bfc5ae2a3dd4a7d8f5bef2af58c75765497f9cb3a90524ae4431053058b0842e4a32708a421de0e20a1290008b2f608005718af3479d1e9e2445fa4a342b0785bd5a887a2581d71a5aafd28db3f6fd39fb9bb5b786f48636c3b3ef9fcd424e8534ffd0a25cdfe24a7333e108173a24607f181041fe221dfd893382484c9f378578a9bf1d2aa558a853889d42a8fd7c440272a4b7dd5bee2df7f63bee491cf776f4d65a6bbb51e879964890919f7bff3caf18c145a66915c7fdccf69e3bcf6c9b14b8bf233c5bc56da19d39f3e75767ce7c1ceb32a0646ea2263225f3fcae5beecd99474a0ec18c1da81179e291925ffd1942d1c134a790b156fc63ca739c4579f49fb907907e95cffef3fb01b3634ac280be800929f9017d8222e02c974023df77fa5df74418947b220c0f58e1fedba7037d41be7f3b400587593671c5132a80992756e263030571f9671665fbf71b32cb26aec8d76221523928959d867403447986f48716e539d239738432ed70f4b79f0e7d827cbf7e39f8df9f25134fc8f6fb7e7f3ad4afdf78ce9cfe9ebee148b1bf0dc7ce5da1707976384b269ac83f39048952db11860cf2f8040955744bc86350124c4891208f415294e0cb6310139490e7ffe040aa9120ffcca2a22fe4f93f3a90f22884067e90e7eb10e65108189c20078e24e7a5978b26b2a5227b0ab24da6dfcd0480b30481946cfaa1d97e373f1c1adbaf782c4320cb3da4dfbfc747a1191d2c154aa0b8f8dbf067161515ed6093e9533c0ad9108a8b15366a68a9c81e0675b691fb756825edefd6e2a06e962090410eeaec78ec8742b34df6d0267738330d83ba3c5fc8d23ea3ebef6a07d2494ff573dc3b27c551dcb7558c7c6d1674ee1af96e1e0d3dcf707a21dff07e67bd699d7776a5b5b47d689f7e8f779ebbf99d77eeaaf5ae67c3fadd90049cef1f10e0fcf9ddac9c4d69ac409e98869d6d38d1c81383adca911da75a4585e88b0a55af2cf811a45f5b35eb5b2954ec4f651bd6707e2348ffa1741308587f479e57bc90921fa708104ba4c09246649c912d8f66d96dfbbbe16c1868a3f3bb6df43dbdd19f3f93fbfeaee71c85f71ba759963ef7f4d3818e917f68f86393b7efb8b07f86630fb93fd2195e3cd29f1b9e9347e39ea6d9bff3d0003dfef31be2feded1ef06ce6b409159156bd5c956c543039a65a7150234ab66fb3a196822dbffd12d17ad956c75f2cc66fbbff3ae7af4c3a1fbbba19f7e3af8f78675a06fbfdb429b5367282146de7e66fabffd0de96fe148bfe0857cbfabde16ce9c6a967d10d5556f7e38bcc87cf1e8caf7db0b03f842de9e16e5fb931675d6dbc2b1c97c7f3699373cde9f4634abfd676de48222e4fe8b8416f9fecca6c64aeef7d3b0bed7ef699f98f67f385c1deef71432df7e77c3fe6e87fbfd5ba8e44e1cbe1ceefc8b474afa9eee48e148fa59bba75c388edf854ae66fdfdf90cd01e02c9380e5ede72cc0e827a6dfcf10528e3082cc40a47f22944998f43f6305d6f042517e326752348181dcfd13a1dce1d92a121ea70e233c0e91b7fbe140caf75e6b6dadd5ddbbf3fd8674dedebf21a4fb0da17973fbddb0f5378484e7db6f088914cee8b0fdfce9cd70e651380e31b112ee7f5c79f4cc3d97b7ef692e1cefd3eff1ceb3442296ebe7581b72de236ad1e8200056975215ba3c4b2964e449a384141fce00fad39f73a61e490701b0825d6d158a87668d6f258fb308b97efd5b6ffd11ccdd1441fbe3fc22df54beac911340b346108866dde76996e7fb0d2823df8f40b7aae8f38ba945bea83c06c9f7e7d7d3a966cd728a12f93e4db33adf7bef7bcdc2b958c9acf5199d9b72b87ffdaf6fd6b7e7debadbadbb5068de7efb1bcedc359d3d734f6f5809f7f7bd00dcdfefe90d8f4279a3376c8fc79a6df5e66ca8e4c7c5713b781e857277a6ef6838e34fdfbfc319fffeed3bee3bba3d7d2edc86f46fcf85fd9e43ffb67d4f5bee3b3b1a3d90ff7d2eacddfba33b0aeddfcb7de761d0cdfe371c3bfbdbf79166e7f09c3c7c88f557c2fdf69d03790f14747337fa202f93dcf346fe6ebfa3b43cfa8ec4bd876367eeed9370b0ef3fbf0108e5119e930737d2cc7d7f43ec73d8bfc73da4bf5d6cc3b19f7e473bf73ca44368f6af1824d1519424d0e8254914c1bf3f65aadfd5494fe0d482d21e3ad277a6996bb36cf7f32737e25e278f46618a9b3f85d03cc39f393a79becdc13ee93b52380a65d2b7470a496f7b9a14ce4cbfd1d36f0867a2b9035b357aeeb7a7df0d243c0a6d616a1476368442f348f3e84921149a47a3b7e1ccb52bfd789e19e2997b0effcc994fb30d4758c9f6dc93c299ebf7c315607b0e9bfe6bc0fdf9a49066ae55f38633f777e48e1be151288f1e074ae61f5a72dfe3a49076d49bdf08ff786eaea7fdb1fec53f345b2cb4513ba59b52b80206482a5778f0851588f3035b457fcbd34a511a996621e0f8d4cbf469904c9f3e4fb3b64cffe9e3d01f99bed7acf9deef21034025fe39f298e977730a1975b215b2022065fbb6fee8787c65ff71349b902d8ea2da9f617d1b2e20062fb02812e77b38bab28ff7970889206f3fbeb2fd396798338671964450e4209a37cc6492917fbca8285f1c856bfe4b888a9a583139bab2c5a3ff38cafd3dee618edc51af86f3e7f7801904983873e4f6ee42d5aca12e74373d219799b3ccfeb559f3b929c4fe68954321eb8ca9ec4f5fc75bdcfbabbc35aaadbaef1f640af99973df7f148221d7abfb9cb752bdbaef9f82c9feb34482288f3fb23fcc1442b3bfbddfb557c3996dd856a8dfd3939ebc56f5dfa74fbffb33f569ee3c537f96486021cf12093372aa55f7ed4fcd1b9eadba35acdf0ddccc99b3b4ddb50e8799699e58acd14547d3e812ccbdfe6e984ff32c914023a75a359ffed43c67cec4fdddf0438bf268e6f4f78703cdfefecda721cd93e2cacd9c7e990380b39422451ebdec8da69099fbfbb92984946729850439d5aa7acab39462454e598f86f44b799652aee454f5a6d396da93e8ba6e7e6eff7e67c31bea00daeded2fa01f8f42d9ff25bacfaf01f51bbb8444977f8bbd8535740989f4e77783b7fac78b2d1e69de30f73a80ddfc7aa05fb1eb254ea9f26343be4f451bdabfe1e8d97e87f57bdc8633d7b0c5f9f5e022fd9ef6309ca290bfa8107dd1da315aa626ffce8473fdf9b58734771d72df21e5bea7bbe903ce1203b3dc3df7f427fd70d848df8523e9958cae37bf1b263ddde7be7e07528f0ba71772f5b870ecc2991c2a49e6ef6bf6fc7d879de7970325f3f79d7b5c58fa0e67eeaa17c589e9a3985c42a2e9fdbba17f260752e6f08f294309eadc380ad3977e7a91757267bdf2664167f3b870ae913f4a11268a8a8a8a44d377b6e9f46b6fe98716e528885e34f5b4b46bc97b9ab9708a913da4d90bfb7bbc33cd7952c27df79500423ae8fcc3817ed775dfd35d7f02e8c973f218b99f3f843ec7ddc07d4fd32f07eebbefba52f87d47bd5238a990bb443fc4d25bf71376710f62a7f9ac6b35e6b29e11e10a35caca6157f5c412aef58758b1ebe24af315765599d77c45bb5ce0c1168250c50f8c9851279aa002287811c5ab7d20032a3630842e8440acb8d62acd65b4a43392d29e24024529a39f028adb4f7991f4535462f7537444efa70411abd01f6909a6108a7f6651b6259839a125c1dce9ef423b82b9d34f0aad08e64e3f17da10cc9dfe2db420983b34520a118d28458a14295c1373a7bf031ef8008e38c2519cc662b08d48254a91928125e64e339112391cc5d4b2ada8e80b48f0628b10c4a410fd10a5703f25886891f0c4aac4dce91fbd46852380d184125801439ce2d6c5078e500324803005719322454a14d39417ad14956887e64eff141dd14e993b6d496f6d78ce15fd9b4acd69c98ae75cd94c1ef467b6af94503b4d0dba8933ea88dde8e4f92aa7293d28e3de45cecce7c15bfec9fabdbb2cf583d8556596d6322729cc4a9edba8d6cf523bbdab7f44afedf199af7a963499257dd651d94b599b9534169b3f6bb11a0f5e9691a797b51be36058daebbec12e9d0ab3323a6b5a7ed39aca40ebb59c7a41bdab96fb7be65dfe6157c76cad96947458c32e59674ebc2fac5de6ab9e3f7e086f8d5addcd6efe474a9467a5b9ac76931776c93a8bcd5ac33a666bb5e4e130bf4ef6665b96bb3657637666ea9606513dea52d76e6996a6a5ccd599e1602a8ca5c6ca5c3b5db3ac8d56fbb2bc6bd632b5fbaefebe8143c294b09a9d9a596ca71fc8bb7a7490dfe96761174772a31b046fb2adc695a33bdb621b8d938dc85b6eb06dc659d846faaa370ec6d1fcd67cd5fd1c4bbd9b4b8dd1eecc87dd35efeaefe7b0eb54baa060608c8576835d34ef72d332319ac7d805d650b596d2346381399127cad402d64adb9f9ac1fd5dcff47f885da799cb0c1503652c355f35cddbbccb464dd3d458bec7ffd8f91e3bb1b0bfbf7fb0bed5409ed53f1e48fbf81f2dec3ac958d8e50204bb50e40fec027d6096590fec3ac576b0cb25e66aa9b9401dcce23ac15c2e30570bcd658a01b3c89af455cf60c02c315ff58cb5d048724693f509c6b54beca6865396c8534c0625f351bca8e874d3d222838b7091e180242e8234bb1982f86a116360b91ff41676b18cfa595858de2583ea67215f4814486b39d55c6aa8129cb5c04e34171498835bc898988b4b898239edc452739181a719c965868a9d642f2458929ce652dbba0506ce4eb5d3aa0c16d2e5854cadbed8306ac66335b32db1db75edefe6fa5f4c2fb346f5d3625e6062fa45d6b5975a4af602134bd15e68a9180ced05969abdcc523098194caa44d152244c0943b6c85ea87803d26812baa0628c2d6a32705a09a35db23b50aa810535ae38616731ae46c23c0b651455a1c61956943419578e605b8c36855a1194304617e29d6db5dc8f851150e1c4125e88c1912b27ba5022044354b0224ed1377f6eb6450eb6c882114928218538456b7f142bc9a210630ba2273c204e91447a537ba108527e7086182128a2fe46cab6fe224c0f96de45eab2bfd64f2abd59571bd53a1849e6951d6d44eb4852cc9375b3d18c5423c1bcae1c95241a89f43ad948469a5d538b8c44c294b72b8822952998c3cc2aec05769ad999c760fa76cba7683525c3af96d268d52d760a154718994fa1e2f882a7507195aae55ec56aa84a235c91365c11852b58b872c2574388c1155700210b19299bd1a695269e8005285eb0821256ce48351a82286cc085155c418a59cceb681de98412074f70c14515e2884692014902035dc036503e419ce236924a521849a06009244449429c22c99bc14c9902ad8910ac914657034264650b4f78c11455183bd8118c908228aa00414c9ca2735bad7f9391ed35d92cfdfd2613acc96fe6d54c6497649fcc2b9525b21433c9be98477e25982956aa7db08fd6c546b58d06c64ca5dae883715dccc2be9a2cf717f36c798a994ae4e8ab4d9666a4fe4aaf6637eba3a93c81a0ada3c964024b25dafb5094ed87bc6886a36c387e8a437e86b83d76d9e00521b8483f7e43a3578b083ef823bc8a9546e0e84b3a5e87a9e4f2b88852e94d393ec70f0d993e0af7432e175c84c9a47ad5ddf1531c1aba1f85a33fc5a15111f7feea57bf232402c481713c18aed2f0553f0d9f08e521c07195860e98b74cb85f8713de2ae17e1d44debab85f07e9ad1176a5e12dae4b53e33caa61314df39e0c4c8636238ba1c134640c4c869499cdd46ee099d80c2d261633036b726616239391f9aa656a3d8b898999c9c4463d539631341959a96766b76fbf9433b019daa8fbf6cc69a606c6c0bed4295f51195a0b066f9f3027720df6af62de32e15509d481476e945ae111bc9f55784ce1e9ab7155cbfd39f0f8fd38c2959599d37f017054a591bb57641ab458af9ca0e9afa1d988d9a8d5c468602b584dcd868ca64646435b11d190fd3660366636319a590d8cc6466903ab99d5903668644d438aa1682eb1dc366a17c6d1accca5a606364d8c235134b59a32b70d126cb0615f43e676f9d7cc729fdaa58384233a708420ac600a27ecb2014361d7d4a20b1a78208a0d445902885d45b4fc686396db154409137461c4d0942444f0a76842793fdac45c26258cd18326c4a82121d2bc0917d1b8887fb5882ddd5df3a37e1aca0b38105f2d6211376de351dd5e7fdbf4377e96afc9dcb8bb1bbb304e87355f7588df653373611786b9c2c721cd575d73d994b8f455db604cde3ccd468663036359dfd07e76a306dba0eda00aaeed479a996c6683269bd1642559d6ca1986813f86347236a33014e50b2324e10a718a1ce9474c53030d284824c81588533ce15810ac78c20848356e204e111cc39a9529676c0103532812a748835f2d4f841a9800044eb0020ac4296efdaa2fbce59a798b4b712dbbb17e55cd5b1cf7dd0ff6f79bb02b84dde0c86c6ab132bcc5954add5c7fbb605718bb89e13c7903a6a279cbd4dddfd8d5b57e14aeddd47e06e3d0c2f286ec184e2d94ddc0701e76a349b12b14a10547c881685383c9643760326a70d18517491823168bc16e90b356053586ac64400a4c06bb2171489c9af7a00a1c5481441a421063340b2b1c91c54c0a207011f910fdc77056c92932141c91850c8853ac0dd282b0861948d80217e34d6deea0065b58a3e6012c2461c4a1e5ee23ac78e204454768419c22875d54dcb0cf5c527ffb572fddfe6ef913682a75aa53dddd386632d8952316835d3952d8750306ab5eb0ebc6cc05bb70a09a05e73861970ac4ae1b26ecc251c2ae1c1fce31eabfbd61178e9aaffa3d8c23e6ab7e1276e1b0fd15bb54dedf611ca4afba1b074d56bb635bdb56c1bc65b9b9ce31cbdddecd75b7ff7863969bb42ac357dd2b9aafba2d5e7de1abee8a57335f753b5e59f15537fd716525ebf884eeeb468856ea011a74e04d7d7bb5dbfdd2cf7f4f94322588c8fd88d4791fea5d7e3ee72513786a61f9199188a25c5e5eca949408f352a680a2cc4b99c289319f923245479cc15725dab9435fca9417ebdca13f2710faf3654297b9433f2644cd1dfaa9b065eed087095fe60efd971066eed077095373873e2a8c993bf45b426eeed06709b7b943ff148ee60e7d3024cd1dfaa6b09b3bf44ba13777e87fa1ccdca1ef853373877e17d2cc1dfaa4b066eed01f8536e60e7d2eb4993bf4b7b03477e8dff09b3bf46d689a3bf46b08ce1dfa1e9ee60efd0e59e60efd970cf5593771c689c52c8f60eaf3fce92d151120d08fa73f87b6ed5daf16d1ad7dd7f63e48a477d9d2f7e9a3d41f3a957011a4d150e9a35422c01f9ab31433c77f8a43a5112ee25444a9c70f016e7828caf6435fbfbe5b3c64edcb4d75d916f451c243a552a9eb19add14ca52e5b4667a0939fde3ae1a1d347d97ee8e435adc952875d3da335fae44f6f91f010e9a36cb88828b448ac42f3531c2279ef8a7990c8c7cbbbb81b4fe4437cc1ae97277de76197f7db9b4ad855fad3db7e9a900810883ecd8fc2a63549a98eaf3a76a3638ee3b40c49619119725d6be95ac3661a46c32de421ec099bce66ada4354aa3e4cfc81885e974c3a86cce66d9b51e3f76cce257cbce8fb4bc93367de5e37bbe20b33f8dcc5bf5d5229e60a0c520a365b7ef82657f32bb15a5b7fcb3156f9930e95da67701799d677deb8354f0bb77f1f81d9ff3307c0c4fe403c41b27f32ef05d39fec6ab7ef53a9ec887b871987b57f8fff86f1e0776c160170b7671d8c5fdf62c0ff338df825d33d825835d2076815f5fe667bee563b02b855d1f7675d8d53de9bf4f7dccbf60970b76a1b0cb845da63f3dea5dfee53dec1a61d7c52e8b5df64b7f7ff4defbd3b002a017c2400b6390853ab4d0072cec418630d482c050cbfe2e610c65abccfea850a7c6d2a9657f53e823760a7bc080c4b2bf0e2cfbc78431903190d93f15c630836196fdbf7087cc21b37f17fa9091c21e311eb2ecbf2396fd71c218623862d91f268ca17653cbfe2ce14e0cc77cccc21ee5f728b37f4b18034c072cfbcf84318431d0b2bf4cb8030b61d91f0c7d94618fb0ccfe37421975c19414941c48630434198d842d010660c8c088274800434da746c6d69082194e40c3091a398b81b603eb2103228331c8c001152310a7587ff411032c0a5ba8220b2e9c118538c552e9c718623eb0c10eaa10c30363d8409ce2e954c42886da0fa820c18095e00831718a24d209177177625a884208d058238a28c4296eb808dba3f42964a031b3011632718a15bb4ab888d3ab452cf99865ff2c85b75cff6a112b89e649b52645b201e2226cf0c24c2c62facae66da88923f723ac0048c9aed6189369969d26db6664ac7e6576af25cad2ec9bb0cb6734999d9195f49e2cfb93c8ecbfcdb2575bb3b10fbbbcf46a69d66315566926d2ca62d93fe5b0af761766abc35cf5c26ce92bf70aabb44b5a9993b0ab9275666bb63a6d9391c86f06ce40afd5728391685ff99160b5b1cdd65c56615fa58156562fe931971aeb6a2d654bf0c21cd6f3c57bdc56ded8a8e6038f9cd7612f66048be1645bb79157e6fd0b7671b1adbcb111796b3df0f85ecb368a95d9df2bb33f2dfb0826db36f2ca76f0986ac1443ec4993bdb622f23d9cb56e3663398232f6d9371a392237de597b671b4517967db68e3661b6c14e36eb9351ec13ccef28b1babc5902e314f6666bab2d446bac03c99b28566bae506f362236eabddd906f3a91f3759cb4c372a7fe4682e3b7e8a28fc2367c2303d663a310e669a65ff323bb733d391c570dd0f1f34954e399ac1f4a0713f6a3e6a40c8116d87a6fa41f6a8853f603ab3514dc707b953fb01d3998d6a3e74f04e0d0839a2edd07e903d6a3ae568d6e347cdc78e0e57fb41f341eb31d38971b0d94ee92bdf91ea62a419a9ec6a5e99f23a923723c93c9a07eb4a528c5423c1bc9a17ebc86ed6c1481fd9d13c5907237d6447f364249857f3621dd9cd3c9a07eb4a528c54f33a923723c9ba186946ea6a5e7969a42ed6d5bc925492689dcc23bd194946aa751ecca391621dd97931af46ca1d2c77d993e58fec4864c3745df720cc54966aa96f568a755d87039a4ab496af2cc166b00b8499cad2378b994cb1d24cf5c94a24292bd1be12cc4433c14ae5cc17fb6a30a699a924fb609fc944963ed867a29960bef2d2f7996aa65869f6c94ae4370361a6b2542bc54ab0af044993ac442bcd4ae42733d54c3113ac547eb52f66a265996996ad3091b92cc9b2958ff6c12616992893a712ac813116180b2dc75862a7d98964a981b25309d6c0180b8c85969d68215964271a589e602cb1d3ec44b2d440598681b316184b798a9d6a2719486b89b1902cb3930ca4b5c458489619386b81b194a7d8a9d642b2c84e34b03cc1c0180b8d05762ac1da8904652c3596d86976a29d6060d942b2c858ca53ed1403672db01e5a4baca70c96594f8d85ec49e324ebf902a44d32f2384bd917d9bfc78a1e196a86225b642e31975acfcc4586a2a1602de50b899aa1c816994bcca5d663e505e652a26a2d3354cc4586a2a1602de50bd953b6d05e622e3394cc8544952db517990bcc85862a5b6a2f3217980bad85f6127399a1642ee40bcca544d55a66a8588bcca5e61243cd50240ad652be902e32140d5543c55a662f3097d265e642a2642db497580fec45d6e3840bad27e602eb910255f610b5d47ae4d1065a4994fd6d28c3065a0c9992c1d05e4a18580f19932a616a2f30b118322583a1bd9430301bd28889a56629f2054616932a616a2f30311b6a31b2142d057ba9c1943165aa968ac19030b39832554bc5604898598c2c454bc15e6a3031b154ea8506a3a38c21636429185a079389cdcc6260a9b283a9c9902db2185a2a969ac9a45a52b08729532fb5dcc5c8ca9812db60e56d98a5623c7e8a2cd8862f6699c336580143da00cbfea30d56647f1b9cf016cc5b1c27539389c1c4cc76cc9434301b64de9a659f21656439686231b49a4c2c6656d2c0a4f0d60d1a19cc0c6d06c6c5d464ca1b8fb16b664686261643b321e6ad1be14a86a429676a37646633b150862603a399cdc86848199a0c8c663623a32165489a72a626331393cdd066603135999b1f6366b032472d26230b7f8ca1ad6862aa99590e3207ec864c8913535bd1c85433b49f22fe71a69673fc1471fc3813dbf1a3cc8ca42957b8861ac6af16f1e6479a990ad790068ef0471a3207b681dc3123b38188e54799327ce53230541e6b28cbc8fe3558f1160b7eff1a4a6f712cdc93d96b643434161b339b987f0d346fdd70dc0e1bb41b1bb09ad2464653fb1cd86583ac91d1d06636315ff917de0ab91c36a58d9a0daea666f63bb0cb06cd4629a3a9cdbc0583710dcc6696c38684a9b121c335b59a980d0d061ba50daca65613b3a1d9286d6035309b990d5943b321f395db94366a366ac81a1d3fd2d062366c9035b29a92a676c3466683660366a3665643deb0296dd46c481bb2ffb186c6d5c06ecc6ee01a74fc6843abc1065683ec6d943558c103d7d4e0444d8c94471a6a353891064c4d15b6d8d4be7c4ce2b20698b774741886f364487278f633157685a54dadc4242e6b20f2d60c7e5838533d2d8461d893219efdac0612e63f8663ab3016d26042d9cb702dac6159287b19ae85352cfb8fe158180b69f861e1ec69e19725265bc272c6a636433e9e71b016b2259c853099c7b4877138d612d2f24c1893f9dac76898e1e0578b78e3475ca3e10b5f39cc8f584603edc7b036836928e3c7504683155ff9cb6c0eb355f4bb39679ddf73f69cbd95b629b522ee24c8ee5b7607c27f9c34245e99709f6b34c184162d907121055a101d27bb2f6182ec9b2d32aa56d8ed5a9ab57684016b8562008513d6d002952d9c6103d1de646baf2c41668b7554ad2aa2c4acb3452edeb6304e5ef346b33f82579438e356cf3cd81fe7ac078b1b30ca80948a55ade2418b788bb34f93ad3565bb826c819075b62b379852e44a06625e112068488a784b75e50447d86beb8f1e529e5792d042fef2bc9244189b7f60f4c440095fb53d5fc4c00a6b7988c10ca7eca1013028c3dad1d6138312e47c048358af260ca4e0c00c084979c1195b286108547c2007f84a1261d8e7ec66377bed6d5b9f7e0f958759898421eb5b10ba1fe804d1f9a1e3ad1e2a4a30ead169d4cbe4e9031ed4b8594f6156baa5610ba4baf5c8bab0f5502165db6e180025ba4f574c408200f41cd1e21360eee92c50d0854a9ac0d9cca2ea902419a5e705b56d732d7a35b9e8d5f422f46ae6115c6276610b4f50614a1342080114c22a451be6a1553dd4ef81871e1ea4cce0034894a08a2c06553ce1abacc143f3304bf5bca00c983cb310c119339a5b141035f182210c810661a0c1c5086c5c3022c2066870011220c84209a2b0c5086c6c604404a2347660852f04610455a030418d0d1a548111921045e145196a80000444343bc0916759c5081af8ae30318b40748513b480053f00638b99236460850b37d880ebcca84e10b6d609a2f32388153adeeaf1810e6ad7379500ca0060015421eaf1968e0d99fe7893fb76a7727f3867a061c640bfac5296eaf6fdcf619d56e9f4b4e08b6dbb61005a453370802ac6004194137031450fc496c9dd5a287183dc02c03d5680b327003a3f50cf09a08a347c35b150e308d9e669a50aa23cce7296e78d10476f0884a85949bfffe85d6bed757f0ef4154eb5ea0f90802229487471e5095888607e31b9a7a70f7a40851911ba08638a26c4e47eb0fb4cbb7fd04d1c4ea6d402300c229595d066f94a06d0e98fdcdfeffae39254dec24f067241a4b2ed7efaed0085668a2b0e22952d56521f83cdc4120cc06a10a3c1112df8803872a93c824b0ce1fee0727996547c808a4fe1833a85166ecad30758ec206f796ad1832e985a74ce1d4c757a73b18523cd1b5d011a5232b5e25b0ab68dbecf993333996914356f8d03cddbd3eb51fa743ae5a6906dfb6da394bad7fea6b8b3ccd554fabc8e74e9e80ee162eebda94b6172fd3aaa727d9d1ff553f569eae79acab5eaa4eac7d47b5b58ee3ddd3b04bc30f5de7b6fccbdd7da7b5333a7debf78bc373585d8af1f531f6c1697abcfb26506265bb17ba51cddb2fdc7b1cfd9f72c982d97ade5a610faf647967a6f976e14d36ddbb669e98703c523dd629b4258b2ddb66ddb465ddfa7176f1b3773ecf61b1eb78d9b42eedb1f4d212cf6ea7864743302a0ffc8cd528a34727dce6bd7ae13a7fa60ea1e32670ead15cfce9da7a93473fcbf99e3efcd1c7ffc438b6815709653c8c03e2da359231d23fb531a25a35930d91f24233b0bd0c863cac3c93079f4fce9378425cf99639f8ee1b53cd22db213b09033852a643276a056c099e39f03b5024e21f6fd4f53080bebca1462437a65e67ca703c38e169e0a669c71051da80f9cc0822632b5926d0ef41b32819077a056bc5a9f9c664efd8ac76a85ce30f37c1ac514f2844ac9348a99335fc8137a65e6cca750d8ef6f076a255b28b2b53f67c021b33fb53285582b4fadd0199accf3e91653084b9eb8340548ade411cc2a005f68ab67054f98ab99fd2765f5ac800a5335f36823d319e49947963c823d2ba04dd5ccfe283a43cf0ac89831d814a1bb9967fd643e30f58130df0782e0bba2d87c984846fc7efe5b1047b1c1aed7e7f21df8afd1b7fc7c1a1696ad4a10cda6ff50de975afe354ab16c0eb2ccbceb3572fbddcf47c5cc6c1bfdd7f7332c2eef7aa1deff35fa520ccbf6b5fc0bfc195ca5b77f8dde65aafdd24f218930d82553c255b87fd9df62586648fffabe24f3825d2f972f7928fb2fd0e55d709553c91bfd0b7c140beafe0bc45528a66139611488ab98f0b78a7e09831fc6e97f75dfe12a24ec7a8d7095209a395c719597c5557095975769698b4257bd0657141b19d1ebbba65cd1ffc7e6b50d4174ec9a5212fd895ec4fa43abadef8a62e3f86dc5516cec13c988327e39925702512c3f9f66b37e39925762017f7eca8e36bf1cc903ffe582b25b37f2cb914adecf076bec36fafe85fa8ec62fe7fdcbe54951d4ccc4fcabbe7f2a85a3d85c9f89c1516c9cfb97cbe4024ca491b1dba833fd0bf5dfbba690c4191cc52626855d4432761b3df7ae57f7a477bdbef7def5327d096479f997cba3def5ba6fb751f7994e2eff427dcbbb5edcdb6dd47da6967fa1fef4ae17e9edbb5eafd28fdef502bf7bd78be5bf77bd5efef42fd49bdef53abdbfebd5f2f75daffaa47fb93cf712e234907e97b03610faa8f01b487f4bc83510fa2c214d03e93f855e03a10f86a906d26f0ac10642bf14a21a48ff17a21a087d2f041b487f17a61a087d52e83590fe5148d3402890fe2dfc064281f4db10a78100a1efe16c20fdaf193a32a39bcdda7ef4f351cdea7e7e8aa659cd027f3e4eb3784c21e1cf4841b054b2b6eb46a36debae4137df67790f7f4e0ff4f33364c88fe97fbeffb1deff90fe87fb1ffbf775b0292ad24166c163c53f365064f2098fdb10b2e31f9ba2f1874291c9a6ef69d084c7ffbef4e191c6c3638af41d098f28ee47e0fdede2d1b3dfe18f4d515151b6788422932b1ea1c864c7e3926d08b97fac373786f29229c661a135d6bdb76a7ebe009c78cb7f3e75c25b343f9f96dea2a49fdfe3add1cf07c25b3a7efecfa75678ebc6f4f38378ab64e3e753226f793f9fcabc7503f5f375bcd5f2f31be02d969f397e3e95c25b608ccdbffc7c1af31696c1239765be439ad5ab1ec7dbb0060fcd7ccddff006e76f3efc2d7c3c7471fceab950071e6afb3abe0b6fe0a11be1e3fc17dae8b7cffd29cc8173fc7dd5bb84180fdde0bff130a10d1ed2e1f2dcc7844343364f334b296659e6513c441b365ff3a670c80653d9210e7d6ff3334f9ac1544ae23f0d1e8a79d3d7602a2ee2d0f6339fa279d493be251ca2417dcd976abef4284cc5c5219837fd281caac15472c4a1d3d7949ef4351c2a612a348843dddb9030151a7188f4334f83a9a0c4219aafcf120eb970984a8c38c4fdcc37a6c2894334dfef3a30152a0ea1bee65d30952b0e95dee62da6c2220eb9bce95fc2a115a632230ed1bc55612a38e250ea4d9fe3bd702807a6421287582ea6621287bcb7791c984a1071e8fecc83e150942121f106a692431ca279ff10535989432f6f1a7df8f869388483a9b438047ecd471912126f30951ac421d3dbe0a111ea5b9ee54f0f3e152ada3cc6545ae2d0e867f0d0cc53a16268bfbe7f38448387a85091e66d486f231c6af91a3c4413f3a987f99777792a549cc143434343a62ffdf7de77dfe332e1abcc31e1f4d5fc54a8f2d57c9890075fcd7f0987f0d57c9790c67c351f1572be9adf12eaf86a3e4bd8005fcd3f8594f4d57c30a452f86abe29047d35bf1406f1d5fc2f2ce2abf95e48897c35bf0ba9cc57f34961ca57f347618fafe6732110be9abf8514e6abf937a456f86abe0ddf57f36b28005fcdf7d089afe677489df0d57c1ad2d257f35fa0107dc538b7826e8ae0b462062dd3079b35a65234cdf24ccd98356a005d2703f843679ecd9a2397a7b7e191cb9b673f1d46230fb9fb3072f7b3ebbefb0ecf9943b9908ec21c6618138b9977986b64fa5e0e730979c81c235312cd1d299cdf0d23fb114028cfc9a37b1a8ee1489ffb110d67be61aac6eeb91cbaa7f7b91d3a4cc273aab89f9f0ea3a7f3cba1e6d1e65be87f831c73ad12ea688d55708edc298f2013331e9e98e20b4a4c81c4144db460032f575070061454781c106f804613513801d98524b85c498108a020c14b9e251457701f9071efadb5d67a2f145fe4ebe57bef1d71df8d46a3ef6995b778b8f75e28b6c8f76bb34af93ef7a851947befcdf75334c8d756efc1cbd3ca0cccc836cf1d9466e45135a2160324140a35799046154420831cfcc00428408d4c80012a4e10b3e28a2129c26841c30bb94752202d81462b82c4cb130ba22ccee8264d0108467141f7a8d3038f56515527b6631d55ab6c370f94c8fdd57e3faa59f51bffc5b5bb7f34cb56c72800fb2b0e0272b9a77b9a072932fd1e9a75ad096a1c8b163df8628b5a64f4c5b7c4901a2ca10a1446d84213acb05cb14591920a5e40a31541a202a2fb81ae662f4f4ac5542be2ad911566193ceaf3d03da1bbbbbfa7bf8811ee5a2441cbfe296fa7d18a20a13060c1141128a1046704010bf144832a649a1d070153b9a7c13caac03cb3e002096ea778c23b608017882185185088c20b62802af8800a40d08dcab34c011ab9cb130ba2349a04fec3164a30664be08014c0104d7904f34c51276048542590c841184350011333285d911df1e559a26028737962a103306abfbbbbbbbb3be77ef1cf962b56e2dffd4f8486f877b7854aecc523b76df75a5babe7fba3df1f3b872d8fbefec6e151887e8fdfd07e1a4d3f0eff6c5949fd2742d9be7f43ecd7a7e1b8d12920b703f7f433874725dbcfefbbe16b9e5b38f3cc770201a7955a132c482277d5a3b4a35f0ef7291e95f8f7df57e2f7e9e77f4325db673115e2e8a5811523fc80438111f526cff2044ac8df10609b9d4235c3946779822c2c13dd38ad8c9e8eff8f6e4d9e3c5f35813aae552fddc49974066f28cf9f74d666cd4c9ff3308f3c7fe2d027b0bbdd8d93a28126bc6842156863e800085f195bc207eebdf79236036d4414c6b8e204114c3186f7022284a0beaa55f4755a556f1e51b9a70891600806600c915185358e20f673cdea727721c6951764c1cb730760d068bd339833550d469db7717ea1b3fda8e2d12a17741b96e27e21d8689dd2f9b4d24af58afe6c5d5a05e83ffec87349aadfbf36ab598dbd56d1f7df422e9cbdeaaf616be4517fbad3194ec5691cb14a571c9a04c8c306fa3e0fadea6ed88056f5d02aca83b754bea2ff5eb6a96ccb133491ed570e85c72538d95e5b2906c039e3a159fef47b7056e3973cb3e0c28c5cf32c4ff08149cbf346e8522732e569c50556e6a752b351f6e97732805eab96a46e003d14aa943ed1fd73c6eb53c72d44c7ddb6dddbbd7defb66deeb6b97abbfbb6edb6b76db7b53a79aa5a359f54eb6ff7dedb3dea91fba847eea3510df2aedb765756758e6b8e06d52affeefe99e34fa380fe7fbfb95abbb7de6add7aab75ebad56ced6daf8de7bfbd6ea9df5e6d77874e5fec959afac5a7b865aab90db6157addddcdd396f36abde5adddd47a377afacea97661b5112e992dc9df4e950ca17c7cc9cf9d6ddddbd5ecfdddd7dfbeabbbbdfea71df77fdd6fe2a8bd495bceceeeef75eefafb2aa7b3d43ada54b83a9c9a35170f27c9a564dba5dcb95523367fef6eeddb56bad5d6bf576afb58e5ebeb4defaddb5d6dab5dada6dab6d5b6ddb6adbde1eefaebbd65a2bab7acfd06350cdeeb5a2e6562d674775546bb5b5badf5a6badb5d67ab76a6badb6563bf311dd6c96f7cc9cf93c41baf7dec3ee922ac9bf559e6a95fb7bad72d277e18893bdbbbb9bebbf4feaafa4ee4bbaf7de7befbd97fbf1de7befbdf7de7befbd97abadf2ea85e3129cdcefdddd7deffd91278f56cd7bef55b9bbfb7577779c564d6ff7ae2cf77b7b867baf3fbdf7de8b83f7a3e742efbb5bbfeffb847cf77eee5dfbde7baffbbdf75e777f1269ab3f5ac53d8f56712f045255e6fe5bc53d4fe6fcde7befbdf7de7b71aa555c57e7ccb9edeeeeeeeeeeeeeeeeddee247fda5ddd6b37e6ac7b87a39739ee7bdafdfee83e84e6203387237947aaac9e81c47521291c85e3129eeccf7577777773db7795d67c6bcfe07e2f7577da786e9bff0efe4aaeed462e53fab47adbfbd4fde2fae3fd79edc5a1ba4f8fce40ebbaeefe0c474f31f773befdfadbfc1de6934824128944c720cf73dbe6dcb639dfa3dff6a3b5d66e73629a56cd47b56afe281c3f4fd0f3b8564d6badb5355b6b2da5d45afaa3b5d6526aadb51473f53b1b8ef6a9fdcdfe0ef67fac2c5b29a5d42babbaed4cb91f29a5d67e4f4f21dc8f9436672daead9a3fe9d31fb96e0cb299fee4a80b11941a5487d0ff9945454135531c63c2e3b3e6253cb9fe4c6d1efa35533ca3037dfbb4e2dab40494e6c64e8d986fbf95d86eb2e8e79abbb2aab71715f50cad0488e6a0cef48b329dcdb2f547fb9d0d2909d26c71b01dd43664fa4e9d09ddc4196d3985f8d34c341a4fade9abd13a91fbc7983c9fce96257dd59408707a1e8eb4e6fb1b6293fd69f8436968fc696a42204a1346b1bdbd010eaec8810e6c5049d2c5c5a05a19d82aec0c2c0dac15b60616f75b174c1e22ee05938708944d1ea214159387e8613079885455264fc5ae28930857a8d16fa1983c52a29844221d71fb29514c1ea22ac5e421f256307988502c983c4434534c1e229c164c1e221e26983c44dc09260f118882c943944ac1e4217a156cdf6f639367c3ae2817236183c861978b14edfdd1bb284ae41e091bc40ebb90b041246197500bb240a2621711433620a2620b1914892e246c10613eca1665fb28dbc5d55ed2bbaa4555afe2cde55f2aeddb1e855d3a764682dd7d12764d5a8ea6f010b98fb2bda02002309c90e20b0e88513617ec927a1255b2bc8b08256e4faa33d8357a19cc438f93537d10bb28ad44b64e59e35278f4f2a07f5c0c768d3e85298c76398587b8d58acc1979472f9885348ac9da05bbeea370d37ae634f655985b16cc05a6b9a8d4489695468ad239a60c8d00490000500063160030301c1a8c05535510a3f514000c699c7a66569e4b9420cd625021640c1101010000108108939800762b4e8a620942f03609777cdd5880fbf616e2cf941762257fa9b86e08a784781893255c40bfd49806c902f2a0cce1c7329b12fa0002baa346e90620f189f017bad630ef06e06bfae09c47257e3fdd9c063b2e677f3ac477fa1aa8ec1d94c323ff9bbc5d72c0b96ea0dd784836397bd83fc8f3a89b0e1e1c610f9ae82ce35fb919ee342cb9bff3492e2a71acaa58e88c7fbd68db670ae39e1c70a5a28db1419b5ae853bbbff30e02190a6e30f028cfc57740c978f63a24d2d2d21f38e796f37ef7cf5b2fe14fa830777a7c411865f4b3461afd56910eeca622ab55a69b00b03e810585ea8de02c6931b0a5ef4f935d03678563ef2e8d02794bb31dc77544e1029c70ed37245c42ba332bf8f0747baf410bf507a4480a9ab89d12829e7fe9442807902459a9ff81df3ce17c6ede03efd3b19d428eba90c7f1cfe073e59bf5911bd68f3ff07e38552c69c4a85625b0f139ae88148f3167c03384b2c7507b31b138f3a44faf20497fa247da13d119e46f96a77e1f1ff579748d06c84f4ef6a00e6aeb36d4e35316ec3391c71a89b17997c0f227ea468fb7be2e0eb822aeb439649d58c8d2c343ab7ff56ddc1c9afd53ac3546eef3a4ca2e5e6edc325b20cec8d94f4505a59c7f880d8d6dae48a77b75e1465de5d5be94e35dc310f6131eb243ad3ff04cf1486ec697f88262e17360473031f32615de75e3216b445214f7c0a311f3dcc9bd618d52fff008dc90080150992e6375f950fb3f7b0bb9b19fd03fb871470f758e165a5a5f3d9c968b4224f47dcde39eecd05eb594313483e318ce54754b6a04a623373b701f0f8aaf99082fb3982b80fe4cbc360bdbd6c343c91b1b62b30c70305b89e2de7089b4ee384dd80afb233f4eb961e1c573ab5a18ca4e66285196bb5a871b06895f59cdd34a55e72b80363a13ac95b748a46f12842070f88ffa09bc67c4e6b758f3f604eef7a19d7059cce5edc027460b846de77c74d6f6eefe23a8c62df0d8a563e94edbdbe65ae045b2092fe5c1d0586c2ced5d8f21cdff8368f115382b8c8c5e2ebcad468656c458656b7466934b6427b8e7745ee3460107c0c7c0935129634a7ba5b86be03ae5202aaa7190c1ec12155ba7f809ddb032871b2cb0b994a3bb4e7288afe8c4ba72da7d3adcb7509066d9cf594021df347d806fad004e00c2ffbd99b85f1aa304c82c74a78671e99ea9663ae023065e962b60db0f96f92f0c16f5e99bf7604338add35e3d6185cfd994b613c5ffc287460003c59d2bda2b56244fc745d98b2e49c2477922404923469dda9c750e43111a13564140b041cd158905ff8510027f5b992f8f8a1ac586962fa01459dfaeca2d93ae081c1f011305709d28a5b485525cbeb2622b51d845439a42ac5c8efedbd20982ec37afdeabb1289051afcae2c09259a9fac99a1be8f51a130e9e9eaefe342186b39a5b40a67ef9e3aa6b9ae1840f860307cb470a063b94f944d9bdd89198d9624f1b514db231bf5d9c2c03e5922e438e52a4383b9d93c4a44eafc04fc4de76022f3b259e67262d61a3c5d94909372424df5ed2a1c01531df56869a38f9c333e9f86f66fbdc2d33f951f85a2c801f4ff274e0ac1ea5b8d0b85b42ab45ef41a34faf0a708b2380ec4cf58c3e4c70e47db1050b844ea905ee39c20e145cf487cd78cf1705267a4b10756f876f0e8e6065df7379b17080cc43d7e2d8d6be7bd6e3763dd4849da899517ba62b99a9bd6d7093580fef49a4bd8ba10d2f31b577358f1e1e2d3f801edc189c8761fd8e061a9cf55e13c260a0dfcbe47ec36b069842a0f057f780d3284c1e50689adedd48456c1f0fec91b4e49cc0d34c5b5401c8e889426b2146703abe5059aa714bdcd04e507726a8895dd8a857967e7cd466810e171faba0f4395f31986d0d8836108be7f00941cc406b4b4d8c066b5451d91390cf5d9015c82ef4a078045f18492e16d74b8b5ee0e9bd01eadff22110e53a64f50ba60153132bceabe43cc6cad0e07ab17a627af0e88d7e6e2fe0dcc8e48523560dea5570d595b50f3f1cee7e53a97760529cd3e1af0aca88db21a7960209ee4a2ef4f28a607171eef16cf4c685827689d358b36c651c9d11298661d78b4a8fea01aceae4e21ca0987585387b520773569fca1d363dcec5787994747c979c8d6077fed88b1a43374c5e606fdc4fc6c9579a5a632472d0887ca431bfb6c29d7c1ebc8312e1c4bfc5e995e2c0146b6ec00c875e6896158921c680a9100c8441bd868dd314961dfb2ddad9300e65b5618460d23ea5291d9163de8ca4b4dfa190ac57692bfac6c5bacb4ec6df336a255fa1c13404ace66ae52785119957001c53579bc36a01e12e47b8c8d527c2a8f168d4899420ebb93b0540e1f2138884cfe895d278d62536d0f153ffea007e2755bdd27d8f139837fd1e04ae2badfbeb864bd0011f1d33c1bfe21cfc2ebcb900c44546b7e28efc1ede401de1c2bf0f07e64d8c927ed4f4d4cfa1059b11db03ced6e57bd61a1098761ea175b4c70c46cc830164fa8058cb1e0d1a749c9ad7385187243efcaf4b8d1e3e4e64100824735f2511647b2837a0709a23e05ba3044d3478c9909c7a192f9f2320579312b6fae82366c60a20f610e2d18331d48df9253b264caafb013b9e99d88656863ed06c12bd2813539dd54dd056d1ab26f5358d15a019fea35758004d01b99a13187f300145b6c0c26901c234f849812b83eb68f11e776ac5518e2e25dfc06833fe2a496e999027333fc482cf91a72740bd1e245e824a18b3c1516777f304761a1a97971822aa884fa2fe33bb0f9d178879c44d0ba737549e9b16371eaabdf0e6018bb89bea9158d1672a067770d67e328921d721713d3d1b9dfebdb18edd3a258bb9d2d331ff4594a793a7b2b8d7f159d2d1784f56aedcb93ba283bef0083f7d28e2ee37688d579edfa876b90990b9378add8395e766eba675a3f53782decd077e1480a80d9801e93d0707ed0289f18db72c2a1b608c08a9e797d7fa753faa89ef5995d1be8b91c3b9992c91b0916a4870dfebff64b9a68929ae438bb84e66eb2cebf24dd2a5fba9f14be993249cb1913785e7a1ef24e894a8a8385ef840332edf62f57ae77def2b3a744f42ef39cacb8d5017e7c54f6e1f2c6464b78d1cf0800980f37dcfbfed71a14de86aa0eaffc757382a2bedcb5eb4d944b4a94a2a77c4ce6cff981b882fb4b81e72dc2ca1972be1b6ff4d88ae8a41b5d2d0d15301cd2cf82d45bf42c9d9a388bc94ed3393d3e9924f00a274a066e8d014adcfc32d62601c3c06c46ad5f4bf5e40a292fc42ca862e3eca2258d6bb707dffcdfda7bc1fd8efccf2df699c80af4ac8ca8a0707490c143517b14463805d699e540e626e8300871144a0d58d2063e765bc066189ba3505443e9b62bb6631e6833083b3fc6f34b948a80cd810b9e8cb4984d308846a913ae770cd7c86691b1abb464e5d83f53c707820c4779a2afbac1ecd0d54a02286c5fe2c44ab6ccd52740c7dc96e8bc8d7f99712c7b0483b3933f7ed028396333df0d0edf3cd2caf00f7b6c21f5b3a4520c0cca71d1749230567ed67c2e9e31ab754d06d89013aec38c1b8a432f111e549feacba7be16694510d690f40cd468c2a42b5e5946d6ac979993e6aa16852ef312d4dbaaf2eaa13f03c7f2790cc5897b8baa7a78b7dc02dc856ce7e4f1945cae6ff8b4a2dabd23ae7501339e13fe96204c55fcc7b38a7ee2e9c86fc7b80965005c99db09de8fcc68dae29116ce9c82b1a9a74e76c34732d195e73f1ba0b061902235582e8d7805c745b0017b28c229b651aa0fd9171570c19353e0276d4df3347ba8736c491c400039452a2a5c19728162b8ed0fa55817eaf94c71bdf20c94ad641747a13ad9c18055f275118d47b3f6de4dbac2017bd7dcfd56d45019c7b2d340746f01ae12a5982ba2602112acb7a7ff868ac526d41258d549a78ea8f54584e59de73c23ec12e5eac397a77d0009780d4ef006cadbf7de57ebfdd00fb3f7b49bda41fd0f87783e9dfc8bd1f08faf680773394fbdeed4f2dd84aa50a07ea864c3a781aec5a6b400d4bba8fa2c3351afef255a1971616a15bd3931fe541a5510c8e88fda3dd80123d716474a575683a40cff706908bd6557cb38a90f53d5e45d103b0dacad59699c47d3706dc46a590444aad6735da8b8b4fe5abbf745a17fa651d0e82a1aafd1ac52599f8888b8d6e3a9caef349baeb9ba13b103b7717b5b28bfae886a214a8c0f82ded0f526b5d5acb09a1b846381cabbe75a918c63b0769aa5e9be7d410e80b995e5c0973e98c6e77f9b30a3b5441422d622de5de29f2e60a4c9ab0ee69b6acc202a984f6a8c3e7ce7116995e1891a5375749eeff96f712cda04e647f65b412bdae71e96b4ac635f9f9926fe6c0b03f201d3638997a63a4b2808803cc47f36871aa720e1acb3e02b391e50efe4f129507ff83ea21eb8e074b0da2d15a6df2c7dc73fe286a5607fd05eb9605ed78c392ac3bdef93c0fcf8efd9271ad9f2c9a933cfd11f16e187b9183573500c2d2b79ebd37c43fceea8276a682b6133f3f9165c4658e12908416e15ed067b34caf23ad018868591cf48d79291a85ec54446fa1803b698c7e8a0847e8be44cb654bbd7ac1846baec8105c8c127eb946f5c21a2970eea7211423b30415fbd3d8fb6dfcf2d72d6e7ebba18abf075072afd4066ea81f8711d1251e8eca66389be7bc714d1dd8a42ae26ce3cb41bb132597e6678c27dbddc59656e8f12434dbd3cf5a08f855bb9ed8e75addcbf9cf48bef5d98f5a4da99579c9666ff3701da29ae29a480c96b21e74492d6a2d0bec9e21a0a4ea37852a6e1f49d57fe1eb8868517093e60f7ed0dc95ec77224547095a83ce8e0d5bcf77190f89c6345f03826301da485aefbd281893ec339f82bcce34efc49027910d073f4e6542c851ea5a32fabb119193499c26bb65055c016c7e8945db3a83648c564fd98808d98e3416fda726eea3012afed82be154b3fe944f27b4797ee1e0c69a0876aeeea78c16d1cfe24678f01df4edf22fcc849b63b4dbc99ca087426d9fd6a112a8f5580b1a9c2a27cb6686ecabdcc4c39c0fd036d7b1d8a82b672f808eb43560bb04aca9ec26caf8ef7a328ea2265cdb2c54c88962fb57ab630ef397b9dcf6016a79e5eab221da312b29982a868e6d54e70ec91829c298e012439a6271116c66e12eb2c510a980c0c3746adda640329d19d0d88dd1dd896219cf4487b91cb5abe8f9e6a1f4ecc295f55f6ec9bd80f97149cced6e1213d8b1664b22dc08ef2367f8ea0b65144366f171d2ac77b403c2ad4dafae6e4a7d9d91221720a4f50834c9c5abbde05e1c7fdd3167ec1271a8c6cea40b43d4c98dee60fec47157addde969caf9c2c3dc5f657bbb98f31d8b104df983328198fe29caad870e92692115dfc9a4ec1a5810c70ba30b9024d421912d9183618d18a957f788fa7a3bf075d5c893ffb9ceba0c740231d60bc802296d58f922c2f25eeb2bf6aba99530d18f47c1718606d4bb7d98e27c9a13f148ee7f4ba720e5a8a1dc4ede008f839472329be568512f78e2b48f5024e751a1147982585a473b07eb17f1ebca3c823f4bb12b35b53c89a1294a537d0218655fb85c06d83af1058f5b7de0cd2958116730eb119d88f417bebddc0a083159feaf6298054850456f2b59887f0429a55c60ee9614e3df28f10a65b86eb123b63bae3ca8f58a39242690902784b36f3cac6053a9044f92af4e7f81b497140fc54e45e38c760c4e464c4b1f9e3cdd721a93d1c37fa1f82446ddc69e34e809b345644e173e0ddf111c5581161557684ab41001205b68f4023f43bc4f35fd10ada20e9b846a56a1bdb63aa213506575b846695309d77a6dbfb41da178b46c2da8e03e45c925535d58d714a873aae8a014ed5ea8fa586068d8a9289197c0bc1c770851b9029e72f644e5f20d9fd2b2c6cc222a7a1d4c19e2569f754dadeffcdd3582634154671e44ce3eabb84f9843de723389892f48021454be279a47d082c2b7c8f032461b36cc3d2f3b4c2cd10b3db563a163484fc0a4515fde8feb4de2b0facdd05551432f3df46990c81bb867b7cb96765da4e7a61a75bb80d8090eb97c820be985b8faaa3e43aaea2192a09a301b662821e52eb63f44703423e833aaf8191a72dd58d49223894e6f42fe58947b283e395c7839ef14bdb7ae77098534de7f88ee5395bb8180ad85d80c06a5c48a076d29cde8fbdf9692173a089d818fd12e2b78b15670080268636d662062c0c953d03393a23c695479d2e0ed945a65e526284fb4cd952215656895a710d4edf89acbc0c96e268a75350114aaf126f8672d070a3fb93cc6703faad1241e170506ba1b62741d3ee6a8b71c31cb5f93e57e2c91336667f9338255995f3e1453f2dca8aa927c7e45314a0d55055a8b550c706415ffc7cefc572cada8a7a0259d4ff87d12afc557f3fea6811214ae7ac20e68f9c187e5695d4a17a24ad91d146cb073f4bd34b63e45f73bbb93cb820e384c6ce0cd3185804c8807af4a88908c826675d1ccde64d092e8eacee53038f4b6d54c5c7986eecc8b842369f4fc4bccd051c371d641bc0ebe48c3d2b9694b084740da7b787918f9baf58685082362ed9214cc8601f21160ca97bb41968eba0212d7d3e5f98bdc2c9dd4f30e6c012d10fb80212153b0f4975564fd00c589c2fae919ec684c7cc0b8a98b84e94bdc425588d6f4b69c2e8e9ba90fadb451c60edd849f3e6137cffc1bb2b26039b8c0bcbdbdbc147c5547fda4c1d0ddb4499825a4e10081d2bd78cc01e105b0009e03de5af58a653a823f7b7645c901c84e402fea193918aa8d33c74bc30fc66eaf79129dbb9196e08d2056ef12489817b6b503225060268ddf6315300a3d46750071ffd07b983ba5cbc6dfb820103551c5210f96356702fd19c62258ce4ee4372489c193c68f7cdd0800d480f39f49be1f23e20d4cc41aec5158fe7e6f0d6ff17b76e80781e026eebddec7778b1c927d4ebbf47dbea8e783d6247ff038e730ba7cb09df1f657dccc3951d0e0bdc68b9edbc4b8bea006ff61575ad1f8e94f303abe74b299923426af1153aa40687f28a5fd64228e05548da0775b81735972babe5f183f7cdbe78cef6340c2924e6842683530c7d30ba82307c655b5fc2cc401fb2b9ac1821895d58828aa4068ff743c7c08278245a5990121236be054dcad86261770cb5711df218a2733af681752e38f7ecfc4ba8276b5995424de0f5b0c39f6be6b52101ad2292c228a11c6ddc77be74471d936d2589070af6fced2243c808c95dbc37434f6275285ca6cfe38a4487d4f57757b6ac47a81735abb4d4ec835bd56116101b75567ba233e1baf4a773aaff2d42a9096367aa5196717c4dbff05da0b84f38e17b5e882f4f98a2210dbfd4187e3831bf69e6daaab03217a87f5a8c0ee33dcb2222b68699bb132ca020f954ea749fbe8a35e4e9b340b5e043b630870e5442d7bc916a00126f3c59fa9b1494d7f80a3df9fbfc68413860ca0f693971288de500ff3c1658b45382c3c9390e10623cc20b85560da342bcef972b7ecc4a55bb8d5a24982cafb21d6b063bf05f69c47be0981a8c3d97d03d16734dc69f6ed867a07417b7baf55ba59db2d421117a333f8792f23e873cf50ced4dc2dc042cda1cb5300badc74a14656de07494ace52e2dd5bf215921fd3181935167ce58752832f624cdce328b8f9c9df1dd6a8e356015410b12e63053416fe13ebbb40de9e4e49fb31cbd3b4b119f260582e9a27f0daded4bdc555bdad88af3b89135a48daa8d9e9b28ba9f6298ce9c260ad778d6b9f1442467c5683c2ff50d89cac174573de6d57a740e552a2fe4e10ea641bc82b5d7d48977bc261070eda1208c9395feadbf47e3e8dc795fda549524da36173b9091d632b333cd1cf42ec8eae73a91fb3d804f08ec30e409d4beeee817abd7334e41cd09b52f1614ba9df5d9c3907eac0dfe759210d3e15288dbb9f4637dab8dd349f9563e95056c5896607774bc2b701f8ecb9bacbcd1e430cc4cfc6cfbc9ed8e6f4b7aa70df40162b606a57bd054b1393b26790a40d3c55509016017700d9d6a554ab07dff293f3a0f4d6d0bbe8e1b169ec81d2cd7548920287b97da678aaa7a2e9d1947cc1a6faa216dd577cf9c73a8cd2c89ce50d2bb2332f4b719bd5938a42fe49eecf29dbb5a67e1e87f3a990062582ad41bdce1f07a9505b16243e786181e931f6260f163da4ea45453163688da57aa5147c804bdd07f708d5bde4118d5dcdddaadbfd991391cef90fbbd23ec7863f4bda652df967124fd7c610f55716806288673ada5452c3bd7a67d0efd92ab84f99779f81c8c20e59a0d4c12a353217fb2f66584f6b49271ec2f602275d76df7ede2840f5abc35d667edb98cb69a820a03725a484cf68d805752682a15b067914b978e7005b5760b1034fa58ba6f1a03b8c4b2185c95807baf84471f917d3a810be241aa1bcb85e6db1d1294010728ccdf10b9312bb7e10969890e3681077648033fb53383a20f8628a596c65b1abdd803d91695725c12a8d3b06f99153e61c79892316288440258a76d096e14f95ea166aa142f1546d31e6a663fdf31b9d748ec10e8edaeceb894828e5355a12cc29a2cb807439cf1acf2fc2a5d6dae465067bbbc3fb15e1526c211203028534b32d2f43b9e6f76275ec8a1e3e1cf4eb5f2fed2592e2219b7f6d873d3dd88a9877b5e6d0845936febba0160b10843b3d77c8aa31e2086311272d5d85703efeb669456094a7b958b60f4a79b2483b24a224fb96d0ad0722058bc57c9e3f176d901395495713b15899efa036798138bd4bfef9f47683b8faf6916131317159a97d61f75f7e6915e8d0b444479e385f8c1fd329addb91eee6035e42c7d95e15c28f8d83f3a39d378550778b3e29a55f59ce0913a573b8a29b390761b35b33e248209a85c186102dd007e6e9c15143763b82cfe3e0407e59204bdec23f54f4025086f92ae55943da582730cf4c882408f67323688466f3186a416152823340996d041ecef4d1ea36ee06979a0f81927174622cbd9a41c4474c880c1748418053357f52b937c6c4102b15a2970dbe8c8f56471ff3075c74cddb3ab560f4207a86d488ddd1ac66aa7bd733a15acc07df74690cebefbe1b9dd7343d06a6f98099b02392cbd689a9284a0c40150eca19bc016726597b88c323424b767a3257231e3d0f68502c868e97160c003d93fce709a0c3acf854ce0a1412fa7db6e4bca8449b3318c381536d34eba7eeb17f400c4cc1c8ce1c4684e41402a2b98a0fbd51f7764bbb76dffa9bf8af4c9e3a7efbfc8958422a2f7cd91c951c5516fe7d1d598f8752fc9ac56cca001dbd746e8a11dd1e23e6dc06cc92fcf25501533ac04b15dbe00e89468b7423e647f5eb9bb1771db0a1815cdd52079023841355911e01be0ceb6e1f03e84bba05089019c5cca14a4e8da0dfafc650fb8aeccdfec223b88e8c48dc037f0fdc1ef1815bde1089eb0c172e81f82dfa1eeec4de1abdc8310a9a2442b928785dc3060bf7db5e2e12c64e0af0c92eb008ce1000bd2168a030a097d53d81e09507481febf2b5e92f47f54444cce15fcb4c46257be5ad4f88d608af79cf9717d426e610a005476235a706642ee1fc99fbde576acebb170547ba85032e2eaf1121f4ad8590224d4a4537a81da0204c11d6e0c553d814f51c2f3e3a823e8897955415a521d9cca31de82b99708a364d692b4050e92c2ee52022fb5264e87233ae27b3691e8b9f728c2d591480227f87f0cca68fe1f49373326b7283e73659e12ac44bb54a05d583b24cd5006555478eaf7f6a22e648c2dba707f0fd04aa41f2c488c39c1a70e4bfb2f720c0d601e3b2632eca5d897f374c4865e3fdee257940262c860c606c8bc27820c78a4be10fb0cca8fb9bae567a534c1a217f8e46b9eb15aff08999a5a955ca95e73caee1c04617ece2955027a69908d60a37fe622b44c01e454f549d68554a97caec969da04079a04eeb00084a439931c9f1783a698016a796ece7054c7d28f077e3ae3189b80deb163b78190eb78da0b0171146627a9265245f9bc732afd9706d24365ff6fb7148d0f49928c61d35ed605a270691421b8afb66c7bd57e7c2d2e89d15e89cb433322381271c944e1ac18f154acb0da1e337bc56a28d255c7c71efe415df539822332981139f0e87ce1ca17d4dedbd88d1366da1285882204a45ac259bbda662160c9bc69de4547c6b9cafd05cdd12b6ecfd89c9143568b1bb42a8535dfe3eb221eb69d1207d228fef7e9d3170551d981fe51fd07bb4d00a3fd187a0142239a41ee50ea1b0a2ad7e7d78ff7f986f6617e2ea61398af26abe14191d1d357bce7e938c991e6c1aae59a35b58463c8bc3850b792541426549bc2b0d7567e1da0d7163a0c8d9ef113d67a6b88cb522aca8b79776a493a5ad2831788cfd96a47a6e484ba5478a8c5fb35921da446b3ddd52f59c11aea982445dc98f8e10cfa83182513c6f1d1e53f93c71b0c9a70b93c1fd58cad037853d2dc0d2da60a9501af01dbb9a241435e9e8c59bef523180d2050c343ce4bf3a50fa3862c306b72581b36b3cc26c53c1ced605c8a4c9549a5b1ba715b489d47acd103580875abde50e2a5de692f1c9800881907172ebd3dfe3f43945f1cd4a96f9f77cc35e3b2179ef2fac12b151af72b71ad46a66c17b84153b72694f087fb6aeb74d082943e5ade263ac1f2e38ef74d66675bba2c351db56b1fe77faadf294c0748028a1fcb4105d68084b8fb19d19c29f10a133f8e44ac7d105ad458ef8c72fb48d847ec7fe08c74795e3bad523a2d084a7a9b0714c0a3795b9238b1cd2d140302753b377743fe9770d177320151441073398df4ae48479dd2d947516bea982491c8250e1cdc7ee6c04ff49adb7119575c173aee8c560a9a1278acea23e7ce584a3e78567f48720249d7cc4eeead8ba2cf755493994b733efda8904dccc1f2670f7944b38d7a2ebee8b72b8516824c877be1e0d88fc5108052d7b09bd8c6238f2e26febda6a9b246f2c952e622b7cbfd3eaddd83fc93dc9681c19e5dc2aac1a1bc99befeabece638e1b38ff8e20e711df1bdb54ab9b298158d0bfc0723efa94b63f8026d8e36049b5ab09a4593503dd9e4a0116227d336bf415cdf488c4527948a091a8a5014834403adede0ea9166b4032f973939d8248ad2c12b5a4d1f60c808901361f35823bf17ed906636ab30415e6079bd61bc01367b117c638e17e2ce6cb24b152d14731ee8ba1937e3d4bb6eb7a606661435d6db2527e61e2c57c0a87a6944c61f953b481592ec8d248173ddcf5fc19b24ecc1673fd9d08d0d03e1ba091035ff73729e70a30bd9e6002ca56de58c7f6719652ccc64058c704156fb7f3a2932ab8549a60c4f933b3650352f943aa0e6d8f0da64ab8e33e2669d165fcd27c6ef8c67a556258d0d0373cb171f791a7ba4eadd228195953c9100366f56909b1ea5977b9626a1d49c98670bc699be0c6366b63564c45a795c39cca6b9fdcc825551008618dae8f9df54a2bcbf6a79ed2b80d9beb9134a5a3903748ae758de4a17ca7dcd764b6283e187615cbadfca62f520bcc02623f359e444eae442773109be17ccd8cf5da9c35b75456f756e56e4f3d1d63e1845d023ecf3ad0ce2dd3384e58d21ea02f219841a7d00a68f62ffc11a24a9c24402b09caf09a056cb88eae87a0a43396cc751c232d063d1fd171bbcc9f2508819df6fa451aafe56bb7c0113989b1319b34439323c15d7829064245145725f29e8a82859b364427b93cfbbb06ab98666c25f9309e7a650d8bcf7b78a9274dd1a375f664ac50547a39ff2028048dc182c14aedfe8bd50b41e75bf7873501532c022398c2a64db2efa3767936fd4fb23b64a8ac035214a95142a89aa9743c039ae3080e601d94a3edc5846c9c64406c85049055440848a1ab57bdf3ba8d57e7d0381c0f9ab5d2c9070ab4369df8d6a826a513d242bd3054670630d13d751ca9453471f52911103bc33146b84a31d206d79ed5a2e56a9de50a9dbe87564586b0905a85e79abea7840d79844de56436f790617d4f02c3a7cbc2283349098a81b87b5049f9b24c6e6e9a76c12a8bd471cebcf88f2c5c1605536b2148741c24a0a6fa10684d67fa2648c5506747428cc590b1a04930493199c3094ce39facb678e336f7f22314fc5ad841f358b2ba3e293030f5532f430a47d2d3b0e6fbbb7abfd5810a8be15aad89d02e4ae4f8c361b20ba46e4f051ba7cb17d7814dd898243ecbc025a73861c1cb4131294bb70d1f395afdb1f09880e025954961eddeda42e11d036c94355c63a6b2eca6f801aab04ed12e3f518743fd416edba3cfabe68c2fd2d30d6b88551527b87c018a851d70f09cdbd3c1447ad04a7dcca716488a2ec67593d25dec481b24768887d89633b007ec509252c0991e3cf7b9eb780f706c7c6df37f18cae936f9d31b26f8aa0161535ae1e4bd900aaa8d3ad048b7366346f89a984d7129ffd8efabb9bf11e6a2afc71f6eea3f8f2029d6deb8d3a4a803647f59ce2d79247eee1b09670f22f40b11ef6ac2ec9a4fc2c26398d102b98d5876445cb622322ba801259932eacc28306c85c3ac85fb505e0e044424a42a03269605c33ec518d361640d052bd274b224632ea41649a96fccd3d5df7613f7df19b8d43032a7a633d854272133b6b6c28fd0217409183307359116f727c82af1566aab07583da2242f236cfe84d6fa25cae2c499c4fca05e90309ebbe41ca3acb05894e1d477f154a2d9e3f19a03a190d8197197c303ec53411ac4e79bce48dfb8042a6c9642ab84448ed1d341191392b7aa5d4569cefc3605bcb5b2c44eb615e2469be7a036621c45c6271d37916ecad92a9fccac86eef6a927c315cf733eb37586bac80036bb38d0da86184888950d74640069472ef5a8a897a686f4262f03e96ba80e92f08b3e175d6fd8091c78e7b4149a1c9a21fc9f7f996151027d61cd5dde1bf28bbec47287ff3e7be63b1ab94152f34282f3382b5b4670c3b67b924bc19e2b169fc86e3a7957c804f8f62435783be15a42d7240b1c9f58373c5956c44a63efa4d3f7d251ce534a0052949f7a118b3f420a83382ae2023ff19bae40c46f4abfa575aef0024f3f24b9f0f1ce7049c7d04b4216fc37e9e102342a41cac34687a98736cee47f1b97713a4146c4943c0c56d7fecdcc024102ba79531d9fedaf2c141b9bd8f910d4cf4a14d16a0c558279a3979d5779df22002646becba11eba53ba6d65ecf81e71594e839aef9e686a3a1bce05989909e6fbebb8c50fd0fbd9641e479835964eec0ce87cbf1649c2fc8bd15de39b97c8477b716db219537cdf7e9224a329c623e1da4a7a7b478b39a4a2a29cef608593585e30c81b47d0a911b11c6c0ccc7102e3fbcdab57fa79b7550abe1fe609bed219c17c0ff1fe4b0ddad3592568e5a040cf637cc95d851606af788ac7fb4600a1ac6b580fe57323a754aa6854f77a760043ce121186527050ff310af9cfe028bc06e812eb6b9e4d6d0d0bed8038d17f7f1fe86f098a5a70448ac1cf0503d081a10723b14640f5720fe503de860a5dbe0327206e193aa1d43475468c9465498df8d9dd8967ba2784f208bb99582cac2a23a1f0fdc4dce2a44bd913e116db6b821325850b4f9828d233117ab245a4fd5687136ed818eebb32937004233df9967e56c72c6cbd9f9fc5bf10d517fe7969cac25dae3064fa8cd8adcf174e9447c59196004b7cfd05e3b6118c24e7eedd0466652f02316b799c7bb7d4c2990697f7dc9164b350a04e84b2e59c9451f3f67b9551cfdd9b87b24374448631af4b4c91ec219bce1da4a5c9339ee923ab2c1508914d41d2d1514feea5522222cedd1592c41a0908dbb907e2773282080c4abc2c9170cd260216c6dfc3a71cad48e83ae46c0d5e0340d845e270903f77cdc620761cd7197809326948ee46ea0090e75b93bf78acd8215439ffbd2b1ab553dd274f1bc5ee6c7abec0b555128c387d8fd5d4336efcbc7a5b4a32cce8214c2a5f02693d7762b3538ba332f9f131b2d0e046cb5771d0162c0aaf627ec43d99da1415779c4cd99350de3fa84f07898f016bf4a0262d474669e14dcd7dd8e814c674d6c1d12a4736fe1dd16067b7fc5e91b40946fad82a27a5efb64300a7891eb57dc51ce7f75d31ed1306ddd49378843c823e695082721eeba3e857d47b12a9525d8e38e0744d9e8d11707fb788eb3f357cfd0fb887294223f485f8bd9301a59a8e86cfaea610992619d538d56eb3ac62a09822ed2d6d915820689f6b6cd2e292abd89f7daedb7a2c0c8b8b6b16dc0c07a12e2969946bcf5e8103661a6fcbb42817b0782e95dd2f2ae4784d4cab4873c5eced95344dbccdaedbf52e009da4449070153316e7a24e42d20b67dc6b90580f09a6901ce64b050ae9d58cb3cd325f898718008fd869aa2807d22126f43ef872412ccb024279784ebcc5385a1920ee65dd5d6ecca6256fc9124b29eb3aa24bbcaa92c12eb272e592bba7b86ce0af30e4b8abc5ad1cdc92269c60a73c6100849ab4f8f1085e6d47e5a00a9833b424131a3f17bc84a7748b7042613d4d6d1ddb2ba4cf7df71c9317a9f8dd1b7741fc46022585ddbf7a60a2e8c5d3249394af7c4b3c4562d47a31882cda2d19cf497619bb26233ab68681a2ea7259752e9f5bf14b4907712bf2961a4ad4b512f6afa1c332ae72496c20b96bba12d3ea94a77ba6d0a3dc7ffc66434e76fc57eade817a1fb3918c189b61d99162cfa872d8e5b8f7ce323b16c99025075d21afb706871db7f286d32feab83179d1efddf703556c3956d9ff520fc124460d97dda5068edb55d7bb5562b47c63219bba1c799e4a02bd67eaeedf3145d4bb19fb4560e8588cf18c3d8793b0228761ef840124b1ca6b85a25b12deba3ea4de11028533118c5d65ed90df2f19056959d79b10415d3913e5ab7f4612b5ae201a1533e65a52cdbb0fe573322f547f79bc04636701c8f25794e82b0261af4b365a3d88a0870f7c8a5a171e37eecedbfaced0fa62972c02a9820e85d7993486ab5e6f68940e2d0f027fb7fbc9b151f789f5fbd3aa8873fdadf6930c05b4ef0ee167869b5b1da28a7d8f6baf1aad88e50ae05f3381896537bf16360e5c9f2e1d27d45b4771308578c0b62df3dee20a8109b7215bc834bb0937158bc9afe7a4197e514c8640835c1111afcc41a41a9a9bba510b987188f25d1659ff26728c73b1dffe88b82d715e5f05794f8e1cea51d5d49cc3963008106a193a8cc21dedfacc8ac758632455c081bd860f58b6c06659c93be356005e4271e559218cdfd6be0d930d92c0f42e56a3aa61587c723780aba9986ad19e5ce210ee83d305a9bc11ed33e00db59b5bcd2d38482bf3aedfdaf4f58dec30da4cdc3610665c12a43823f6873abd3aff4f5e5329b5f1ac681bf34e600ca2568277af09af1db56f60d51a0b757faf1cb120d877b79828d8afb245d9c700ba0301b557f283d35527c60f54188c6b474a186284eab13ac28608c68f885f4f2038f4fbdde401fa73219fed37c6ec6590b2c06cb2c33b3f58c1e3dbaace04408c319c5e1599d9a5b93cb6722d91f691c689a38c59e316cdb0a00a3624d0dec80ed28be024302483dd01ac5a45475368250ceebf1654c7df0251e142503d61e0a58268b9f6856f7a3c8dcb281f3335b5174130dd2bf8e256820ba2ba69651d7117a9c183e4b40d77aeaba1be4246a2998667ab4e8cae9a35da98ab04a9378bbd542f285c274a241939da1254fee603586b7370d50c8376a7963ab843e228090e6aac471fc243bec69a5abc3e9725b1d443b5b23ea9a4e6020ed09f58c2016f6addddc83cca8b105c2fc14a09dfc624c14a492897b3515d77410522a4a6582609e026d318bddd014d80da2238f884be77120dd0ddf77b78ed6b582313517692f98ee143a12bfaaa5336d9f05650ee15375d47c56abf98104cda5d7e34c76efabb80426f3f8275095a6d6451c1606dfe595855e3768ba7b5b06155e90f91a99fba28fa8914a248f82c205c2aef2b8531ec8742f8f4b1e4bc3a125d56c28c533db1c612c13387d026e6a438d154e536a934150d4f42a1b158396f0670e8c30115476c9ffa54b1b35d8f0a47061aa8d296faf1f5aafa020bc0cd9fc68103f842c88d736ff75fa87fa1786f3ed7ef07869a8ac76463fd58f78d341ec4af827142575063041670f18643ce6f2ae629ab0846e2d8212ded1154a708125fe94a05c2228221756493b34b48e141765b09fc5e4509aefcdd40210da4ec91bd2a5735a6b5106dd2ff32d4e39d5c7105d9e92bbb2a3d94488a8f5546169e1106ed8eb3cea3672bf4aa1a416c66694153d47475aa425128c371e8c85d4d3956258a1d74948bd4c45daaf6383020eb4741fbafaa84a8d8b1a912753bf0fc94659d86e0a7f2b4f1fb773b5f54ac3e0fd8e5fc35f3aba22c6e7672740af064ecd40028fa60f2fe1c9c0716743bdde4b017fa93f9a3812a7c9c03087e3a278ba07af54013653be79f5bb9b27eba884fb288e175c2e640bebef11f497d8d533e4f196360bc6ccaadd9aafb015450a3bd2ec671cba572329887a1705078684f1f2cbc4920f31d67bbbb00d9d21bf02e4e20dedf8faf23c80ca378ef8ed8c71877d7e971d2b1bce118320724d3c65cbd302ad9de38d28b07a23f718ca27ba19393a574b108ebc99d2941f9bff8a67b8f2923143e48bc361b3ebf7b6d685b09847b1e70f6554a93e1b71194b331c90f813f363961f503a35650db9aef7155577a9f77e4486ba92d726725bf8a27171bfcaa7494c80bff64fb30999c4e42f2cf4c29d3c844ba71f38c2a541c3b7b19944a4b6a9b72825673f37c78506686370b24e1f55871a7977aef14a482cffbe89f945004c3a62d3fc6ac0cd3fdb3793c34732573babcd7140bab57712dd3958ded8c34c72df01b821ac9ca08c88a5297149fc4e0d90d7a5cff01e3b9eb894de5e07ca1378a9b916ce4f15bf12c802ae1a6f6022dcaafcd45ca2f52643ab7aa9e3df9556fa895c14380509f876aa56a86a195f2a4b546fbfac212ca5160a9e2adeb7da32a8687b985abd1d70b74de76ed6d20d3f41dd698885edf118d040f77938fb11bd7752386443350e50b8b5afd54908052539670697414afa51d461e613032b1a65a66d897fdfed46e78ee7401b91a5ee8d262ba198bfc97a1a654096c3a02807c25ad2845482a515789427e34cc785e2daf76d121187e9020d83e379c7bfefba10d0706ae0b9806e3e3d404946166af29271d795b8be081e79e2b35bf1625810171e248a0d511e3b499e0ea60763dd406c91e91431e71b93828e4844d4826eb30ad83691d26d939b12d3559f5e8ca071973bca09004da789ce398811f978b2e420819fc36e257249faa31174bbf09eb86368e58e9bf2ae6c1bc8e0428d1b7221236b464b9a11528eba5a230c980d86e9191ece626994bcc621e3a28ca2819784891bd46769f78d544817cb64505fe50f6b46c8eea8b5f10b354b77b55c800ce6c5af86ce211716cce6f08182438197e7abea664bd5c9bea0e97fb49dfaf7ec957a070cc045beee4d68694b582e0332767602d00c3c155f8bd2d04a5f0e7e71f823f0b00d0c679c41cdf0006985b9b25fec8ca4ab6fc9a9cd19251672e81a48468bda38c239bcfc1a3991c8274a06750616e31ba7312a0a2e10271a011d1ae1f2c9b3a0de64b2b87e005ebfcd8109a1932cc8dc1cf0a94a28c46aa619433eda32b7f8f35c3b7a42553a19a415bb6acad15c2a895c0acac0298555e948145c22587670496248c32590c632557339f742e9abf4bdbeaa5c204c65772d4fb5e98f6f6f54fee3707bc6899f6ef82525ea71e249d81e58516aa69df25078291cd128fcd98c68cf462bd6730b113525bc726802ef612fbcf52f85ffa96611c297667542fcf84c4cba9952007d1f39466f13239e96d0775722588029c6f80d74369e8c6a38140eb486977b42115422cf01dae0e24c4e2b1038892231784aab17c85c51bf76831b2ba61e7a19367e1e08f0bd020963986c5b1eb7181f8cffae584c220f6404b75fa436fbf965199b30b9330e948cb16e2eef4eaf6545a8e95c130c71907c67e81501769b26104be6947930c1960ddc53c20f80b2c69f318bcbb3eead807fae6c3496ce18520684c17d14d00f2d9a8a387badeb0420815ef0a77154e9084c668eb0e49055172904e9a121e044c34811d62e4571c0051277405ef6107e116654a560966bb0d44699e71b272a43be62b98458601c807566762cc7f292e2305a2d7c07e8a8f22e00308cf7e92c71a964ed7199d37ec10c77b60c95278123f9101c04b93034502b5521f4970df7b803b0bc66a46e20997b634751e4af80953b2843be9e7ad0fade640665886e64d9939c33109d3651028e9568a4472ea5e8c5ec25e59d833520272f810d525804c02d55cfa733fc3c71e3ed9cf58f5ef8c34302cbff1049a481a42d205d7280a97cff8944756b362961b20e2d9318939df2dd75e1c7217c46a7550f149e0ba6d57ed6cf2096222c816659285da752271bea3242453f5b404bd3164406ec94843caf0f1593794cd7a165f3aa1caac6771d0588a2b02a48fa56188a80d4d35a384249836fcf2f505b8349591c9a645bad145558c50ad0742559232c6364ccc84a9246180705524196da52d494d1683c933ca1797cfa978d8c70c3565e1843ba23bf753e17b4d7ff45726350c95e70df34808cebf37b7fc146271eb6263ad5c3059f36252971c8bdc56bfc86e115fc05d81e04fd84de56523b3dea7aa8368435d50274d6d6a08303ef0388fff243dcce005fd6933e6cc6ea946b367e0c2c41a95da0d929742d0831cc48eab290ff2205669557732334a4fbf4c75dfbc3e10e25a7b64cf7631c710520d39466dc088292c75328cb3870d8b902e716cb030da40908d7feafc7d395639efeee31125f6952035a305dbda9665b4c680840e955243e147ca188d166002a7a6a345f8214a8da50d0809c78d36a018813265a82d4124716c121925b480c75822d5640cb2850d33a1aac930680b1bcc42552363d08a3568b43893b2e44b07eff767d52bd0c8950b73c25f09d4a6b4315933d0314d07221b9b9520a4a616d033a33b343b8b9194a14d156863a623126bc3992620b3804435342b4621a21e32924c32012cfb9b5962ae564b63e44df6332657d90cbd0ad2ec8f11576cc6cc66a1d95f55ae4a337ac932ee68b3bf8cf630ed9faba9a11f91ec9983fda8982c5422bf25b84126f895806a6e378435808e7799746896c160280704015de67421f18142450117564093994e90ac0567b480cc0094d4608d10920a7cfd79e7d365143493e1bee8417cb348b65d352458af902695df5db06b4b8e985b97a60405e809d59880a0b8d3cfc92591ccf2211d3f051b25253f8ceaf1e595d8d8649f2a54b9fe98345166f41b4e03e3c88950a78492a7c2f25d057f240ea253696159b599ad643831c06dcbde712aceaecac2458547f5d55dbd41373d8b966a3fa5325515086cab3963e05b05f1744d49159d14da0228cc752f96ab4e4209fcefbbfd14b249ae380bb13bc255115e98d5c3aca9d8fe3129e7d7e837b824e1da80dc0c9614a19e18127256c9b87edb5b97aaa2fcd4769f556d4b98f9384078abcdea696cbc69a940fba89ec3ab096c2949054e07b1fc880de0c558a04b929797d5586e91de07b04a621319b244a023ed8c407e5af7d4b814033c0e56aa4205f55dacf4ad831416622d836f55c2b5505d4d3847c1a91a6c8ba953f13e3f14fbc82da313733a4ec109e46aaf9500ba9b0c2b7bb0e31932cc6f9c84a67893560a41d067080f61ad85799e5d7164fed36e9aa310ef3f7441eab8cc89a207ae48c5ca9aa4cfbaead8efe779e4b99b78634342239fff6ec911773e5782e897ce5da7c2ec974ea4ff9b85ca83a1fac349fe6265365dfda5caea657364bad44633b3932ce41805eef293fb30d218c8d83a0358e479ab457afb522083873f879687c567ff7b9a817261c6bf9f38d9451454c3ff892bdc11252275fb7765b782687d107d567d1d8453ed4ed213b71db3e2bd761ea93cad013ed403427200cecad69c0d7fc277839a9ed5e966d68ec7d84c627ae50a844254d33feff1f20daa5ac002653ca7242bab360131407036756402c8c97c97224033d0ac20912adc15900d88b2725098551fb9ce8abb257354ea489a09e1365dff9b0d51d2db01264e67ba99a05dfd392352ecef7e2bf5f6f3f97990a833e11430a741d41a64e3301df164578a63a65e7a5ea9f860c00cff2de423b6e4f6ea8de995ac0756f5802e009347b030a9877e1d504fa96c42772a8d1910aa041d842b65e9f09a8c2120ffb40968a3536de62e804b7623351d7bc3e1bb719684843508f9926061065dbe97847a3aa6278400246a16c4e6bb648a39593f9f32a69cd25b3f6094b387a2144d91ff5afa6ea2a0372e391ec8f804e29864c167f5fe1727b818217c92bd70529be8cc23e42c4ed872193389c8286342d80ddd1b32ffdb58aa072620c034d99f0e7a23f03e9c50bc21f10bbc1f268c7184097c5f5eb35095ac2c283527e9e2c79e80a3abf0a7caaa18cd88be4efe269fde0843069c70668a07d4ff753e522f39f591bbb2c9fd3142dd0bad514b79b5ac42c177f006e6a6842a3f711537d9e2dfa32398ede3a4f8b6d65b1382e6cefe3463d7bc65cb179a80bbe75d4d228e3744ed7e5c325a54efc274a0218c7795417330c8a34207fcc9259109cb1020bee5a12039e585274ae5dad1dfbfc1155ece5f43e6fdf5d5730cdabdebb7e971ba7c91f1432042d4411afb563dcf8b090c61b1cd7c8125a43c50e68abb6a7a5ede60f7c54e99e85cae5c62cf4d02a7143acc2a2bcfd80f75e018a79562fb95276fa1a24c3631edeac1b2da55e50cc47d8b6a3e7380e63a65c3d43d3e2ccdc15dd319f561944800995904a64352ebc85015201c3ded2c651658076632191c1214fa4b383bb1387df484b33affa9fa152d196bab85e7125861e20998095f533ba0e9aa6b4e6cc01d295c8b96479aa9c2fde279fdee187e4ab85fb87437d646a0d49a5b4fe07031e14f7d3b864b47651d06815acf771b3e1231fcbfcb799f53a97519cdca1455450753ee5e264609870c3a2ad7a76c255dbb06ef0223c2d2f472f1469815ba1746967d2d9b7b23b5e56aee3e722a7018e9fd1008f5d1b71829c91a869b8c466c843a084a238de5b3a79264eaa84b5910b9ec50e95ab014c77fbda6344ae9241c1d043479f285d3fbfea9546b43815718cd18d88a1fc99163858c6da24ef68cf36c9a254d7ae86371807b7e43ce04bad27448b2017f248319590bf6980e37eb1146f159329a0662facf17b2ff8e3b2cc7fe66bcd33d3a1f6f31518076b19c1e25f2c2bc1534e70c436fa8d967405a6680efd75c398449661fdddfcd6082f7d10386b5633a15240cd0eba55e65f94fd181f2bb08d6026a64867c392ade0ee4c3c115abb261607873b8096b7cc9c241b0e83c1806d49d7e9c288075a76afa2c78cd7fb6e022a9fffd437810c15672d91ddb12cb9e177208ef4125891d858225f6b6cef7f6bd8118879423c8526b71308a6f4cb0bdf09d81264d40791667cae2c9abb9c80782d8c9f0321e2c81f6fab0405ff27c7ba9ccb200c8f6992b10c58d251d54c28011fc0bce1859a178852f0bd49d5539c7efc337a0451a2d53ef52a2c85df739fee89178c7c2bf11bb0e5f5ae64c7f3b6cf801d3737b6f7867dcdb1bc423c721df45c2d7397dd712d5b13855f8077c3b0d69718067a804d98fd91830316705ce052b1821f5c9a4f44b6e46c11bbd77d6f358f94193d19722cb739bf9d4b81015ea67ac59b8f3dc6f11f394b1379e556d4b99fc1c2548df10c09aac0fc3b0102b359ca734504f60893612f9786f4aa508d4a704fb4c63df6c1f77e2d5806762c2b9b26d6914c4408647e683140f9fc3fbe8fe396863990975d125ba21b49f6d92b18edc4bf938fdb462394d6b3fc649cf34cfb7560a0f4621561200532650b42f7db27408a45429e43c4d4865fe315142929e035faf59f10c1709dbf4922df4a94b0f1b971b030878427a632bdeea4e9dab580c4274f076a8a1c5a88f205fc4e0bc0c8235adc8b1e11d08665c48a513f9d7601e1d863d420699af448e7e2f2943c89ca1a6612fd551cd1f845de6899284e9f35c64d2fc142e8ec415f4916363414d6108dec57b0ae59a8d8aeee8e0445560f381e804f95f651297a4ba46c53b72081679f8b2958f38ac8fd10abfd8ce2ca35b6abbffef22fdb1a913413f21eab4c5590fdc49a3dd10fbc1c06363de5718f3605f04af3472147c5c08469e72c8474a2f33baeec361d79f875a04a274cd38d16efe62fe2cfa0a0b61022e8971a4643d9855150412c70837c064aa9fe6aff64738ff7ea049f0123a8aec8cb632eb4a47ccb57734f058071b7edd4303180a29948ea5ec86e4d15cb06b565b0d1bbceec06591f7d5a6ece6ed5e721344c8517c8a5b51835cc6f541654c2c64ac0bd2318991fc2fa7cd63b5b2343bfa4ccc2e24812bb22d8a1a54a8acffad1e55be0da36824b1ec58f1ad14841523558b7ef9581fdbdac08f867fad32630a21217b98052e63d8117a3511fded5a26c94d3abaf1e3c3a9a8e49327de96b2577a88fc0f6a0c9d58d627326019a2f76bdff6b7be5b22c14a820957e43afc0578f6428f461ebd8260383b22545c5fc156a0ff1ead4b7e618d94ce57ae91bc9cfd4a9e439187ef435c70db99972aea55dfde0ee013985be6767a652a1e2c35ff2cfa29238422040330bed835b4f873f74b91c3b1f1aeae76da3ea23811e553e670e31f86c580f278a2752cb2dafa2d7ac108dab2e54d68673c9156a846e55c89b4296fdda5c5896a363f6bd88adf08683533c5fc445ee4fe248e7d707a3b09e1e14c500400f8f12e0106fe71ae0f1479efa8d62ec8011032c298e62e068d471ad254e4bd6aaeee6fc3f363e81ae2c2132967d3cf4f5bf1326bf77102b3424e6cb90a2db6cdfa30f7e5248babec0fea3528bcd385fc2a5c98296624b778eaf3c068ccaaac127551e9111ae7077614aaa8a85e4bbcb54282b0f5b1eb4df2a013b770e608dfd615f30e508b08c04a3cd1a2a303dac4048bb973d45b8ca9327c6e66e0bd4a6fe5bbdf700bf5b67212a06e1a45103fb2977fbe98b885f333f0275064b7dab0901cb70b1e10917f157fc6e790edabaaab00b3e2a4048776f5d2a31f63be973707c7be59429f390456d8a76eec13e74b32316efa7ff8cc5121c17f69fc61d41c6ef28d14ebd5cacb9262681371a3d44f5bfdebaca86210b21bf38ea0dbd555b78fd2fb687836223a709455dc814e04a9f85247d96d02d8f6cb9c850349d5433125c70b972095914e8161e65adfab7669293247721ea8e26e3ea99699faf3307336a79a5e2b210f22184d7cc5a959cafe34638ef4eb236740736f9e79db86a284172d7d227752c95a17b137cd375e315dd68a37393148b81672776fc988f0c449d77c9f22c645c8356f82b09a74f187bbd4482e62857a5785d4ebbcd63ac0765d3d2428242074a55d96fbd536849d3e2831bc922c24b14b0ddc098a04c028a140a7dd5377afe1e408915316b4481b76edd687c8ee4f61fd33dc8d678ffa88ee0dd80a193f41429202446059ec84f6866e3fd3ac6117ac1df53c7a4847a134f596232f4e5709cdf045e1e30b963652b67e68efedc56e5fb1ace6ffaff3a9045d0a07469724c5565fe133b988a24717108fd4c87a6385f3095a6a54d540252e8dd3412045595a97478a5098458ae884210a2294ea9fe1652faa1d4df377dd7deeee356281fa93778369ec50f10a8d9cdb3f6ab4b45b95f166b4bbbcc6b0af6b74ab18fe10177a7211df98c0560476df1428ae9410c3c6b22aeeea24c0dd312c578a93329f060123728c5876bdc77d5c5cf59418bad473768b0245b300915a83aa14ed87b89233342eb8efde07a90543ed4a19c432af2c42f3a8d99ce503459ea2781f5d6fa31b20525c353bd106589917c27f613bedfe2207248304849fd15397209f82f8f62fdc036876414e96d04658e1f0020d31751fcbafbf650549194f219ab73a76f49ef2c075bae50396ee868a082b0e37cb0173767fb7c979b6ec2f79f7e57e02089655969f88b0ca322ccc5d5f3a434b9bb1e869fabdbf5437e4d8589526fd545a922e89477fc3e907b864f15aef03636d022c4aef77d6a28aa8ec2112311c40050f34e62afa47ebeb6753788069dc878f50781e5849deae2869920790164e95783a56c6b26cc68b8fe3c7aa3f695964b7442d325204a240f01229bbba07ee18dd1ded86318c7585e33233cde908b439881bac2a88b40c9fee251d8d2e9c20be041e8256ece597e2944499b5c49914526beba787f6d81570bfd85d01c455990628662bb43d890175d2cd1462e835d3cd9d662300dde7a036002ed3be649e84a9c20b5671096f690654ceda6ec692ad8cb698fada09c56ac698d5933263930ac2d115c019c7c5f19fa41522ffebf3551981c023e06653c121122305ce9bd00883c283ae7f737fb9827bca9dec80441de9c0f5d7611b670cddceb780ccd473e1055c347aa6da2a6a56aeb007fd6949f5ffdc4924c21f074b06bc66d52d2761c3b05638645261f06b58f857e4977fe6c078a97425582186281a0e01b90a3e20176e044963728732bc04d99a15755128fb3379969526d365f87ce4c3fca429fea140df45b68126b97edcd4ba835ab32024da3363c88470bcc2883d36fe398bffe35868da6a5bc78f5d38c6a55734a883e82cccfefe29cc01928957fc5e02c955890fdde8f7553a127a2c3e448e35b664ce41f1c1984f6d0a7603b6de0a12a47b3a62a04c9b28601d00b882effbe0ee8ee7228b7afb60729491914db5871a2f05cb4b6bee71c31fb7b33c23d693086a5463463ae452f018cca0ce27bec304d935a88f9c36040d3293a58d1e963288e78e3cf376a8696808056b40e5e250863f77a3cefab0f450ec51dd97cfec703416b1c4f476d2322b3cc986c65f2b6bbcec46f9898f2399bb8e81cfcd4fba2135bd5afe6641ca6c36815e53dda2da5272774821878d594c1d00802ace17a2a449d1914eab391843f9270a209ac53f2ea402cece36938838a9ff3d07a4e138755638f603c847bc2b68876e8b55becc423f735665e4465405ebe427ad96865ea39178ad80dd3b72f18386648d6ef20170353fd652ee120d8e9c442f8066f7179cf24e27fb428ea5a34179966d027a7d38abfb9cf7cd79bdbe6517dc40584b79a6bc1da720c71e3eb7691b96a97bc03aa547bdf224009b1b60ed7b319520cac02cdbe457e0de01956791e30b73287ee03f34e6f9a328fda19705d363ddddb3ff426d7060a847a69958cdfc8f6a7d23eebf0b8a2b9c70baef72d7f4a38f0a6894115096c17f77de0b8ef86a9620eff5d2dabc0043ab45808118481991011bbb42069f1f14fb864766a4694ebc4f046b6b0a910e045eeca3c2cab2c42f822fe7ef05caf38109489c3dc6d612056fcbb6d22454bb4d14910a99f32c00fde34dd9b153f78f8ffd7b5db0e71fd6e23ff379655c3cf127aa3e4b866bf7e67bf871660139862b9fd74b469f6716d90bf146a75c6bd8fa2486c6022939809b7813b399c76bfc02ab86570be43a76f07f23fd902d3427af8486fc0922bdb89e03bb6b736fb4bf61be7e3f218e93063b2d339f6dc1e797a14d206f41ccf93ae97740c2e80444f6c3d017d9b4da334c6dec5437c8f1943f798806106755bd9f18a71a7de8b44a42af9ef42adf00872434b8313d8712ba6ae6c4b4eac2b79b95d9b682dca016f3df07d2364ac67a91918f8bd98f9a9d94c594a38a00e2b417361dddb94c0303c7b508054f374a6a05625665f8d360c00ab31fd689332d775251212bee9b6740d9610eaf8b687c64d2908646a615602d298ab43166339e65d0c4c8d2d6869df57ea8886a23a5d303645c89d713f7300fb7b2aa43a1608ef3839c142e1cacf008c867bd788024f0933570991bc7ac4442fc8b3fd866a0201ea0d019fdd9f6ee74e93d7478d524c01b8707b2bd521b80f87fe5faf0f6fb8f4c8398d00e58fb7dcea3aff41699c590ac270aa01a438feda19b6f7a096c1800be82d14750130698a5ff7ec0af383cce5c480ec5bf95ca201662d0fecebdbad65e29d891355bd5e4410b5890460f08a47a25d25b323fc2e046f64d8eef4bac9d4a1c6d201457594461ea9a2f07737706abc82d0ef669e95153da385377202b20dc5b6f87095e00ec7662f7c0e6c58334011e8f4e91a0fa072c1f64645b587a981627eaa3d64f3cc8f07d273d8de2bdf22aa7c2fafc2468c24400effed1e20010f4a196bf977d6311c19296c7d8ddd7e01c7a64b81bfd36a42222fe26036b1f031941c759377e0fc7c088404df7b153232e988972468af24d420459559e430b6666e109f39a0625f88232155c57ddadc4290d1b447269137d968cddcfff8193d8c183848d53e0c0d5c61a1f51c93d53f61e850104c3e607176d1c1a666509ba941e90601e7f2d2196d4a31dcaec718220adc91f98aa192a2e55b1468acc01291f1994c8835c984fe9cf18e4d3ab37c63412d1998cbfb2acd6fa49fcf322aef558a5477e79282b32933a51134ed4a5f9394d62f500c3b89974c43ed0ca55051e5278affdf7090ddf97e841e8fa503a214a0f2cc72be814fc255cbf46381a1e3900ef40a18805db7c37c6a9fac93adc376e4c7b5b6827f434b8c968c6099d3f73ccd82245bbea02b131682584c08a5625279926738e6f2143ce2e5885a85132ea12e8205230ad7dd7f1b1ebb797e086afe40bb6ed4d2fcafa033531c3a5976275f88ac158d2a1e3c858f780283007226e6cc75326ea6ca432b173666f3af43f2d0d26dc5a5c5a7ce7fc9f7d6a074fb161051a683a996325934e1d292267051636f6534f0d5c6d6a1dca53764ce185890096d066d0d159dccf78bd038fd1101e45ae0754ac03a708f56b923df9b0ca567201d5859980e9083548dcd315287e07c9c700e5a976d1988c0d6992532540424997d4076de2249ba0e38a494c3c84f906de2abf31b5166ef7efdff2730382e3fbf532b575a1128e3cc4f0b49ce6e8cdba2b1c2cdf597d06b888964307ca9a3be054608ed8492fa247fcbd2cca03f53c29c0932af3692ea648def6836f2d73ce7a1bfda07352cd1b9682f893fcdee3736964af7aee078caffdd82336fd88e6a8faff3bef6016c2cfdc4c3f5af3cfde3cdfa55d0725b174fea8f1ef0cef83a2cda07e5db54438e423428b4e900dcaf86b9652a70efa4dec9d6e8c024aa66570a44b8668178e5acec556a1b3ba9d907eaf73b6ed700e2125da476e4b0c8172c08bd6702b176d1474b4186f71b896bd0f30e59f08709babc3d1cc5b5e80d0a2683b5288dd584411e723f1002f78d327c89c1fb623afc7af16168efe613db29c734e458c2094c40ee826ed0e895cb2d62843ffe93f4a0dc7d2dc94a6ce2c2082de3517bfa2f4e1b4ba7f51f199afedce924ea7b7ccaa2bb9f2b525c0016172cbf38db16869c0c62cc65fe4ac44e3ef1204018e16f72907cdbec4191a67fbddcd598d614efe1365ee9fee94e0e8cbfa64f863c4a0c9a411493b1ee8042f83dbcc8a3363137f1d6819b9d6f88a256c47aecc32bd101a9b42aa3e426fcdf897bec78f062727e543ce2292fab1d5312e74e872f6d44729dc00f33f6b212cf783b125275a0b685b90f5199695116c2b51909d4ea4614d53ba46e0df0a8d717a8714e10610c51187e56739ea3c7a1e8aaf2c4a7ae9596ec5dd06d757d4fd78cd7d0b7ee1491c8dd8c4684281b648b2db581260e20a61929205a18fd5f63dda49afa0dc861eb2c3c76790caf56586dd39396c22fad4b0b3fd343cb8cccd85cafde7b9a6a16b0370688f5b7fedb168e20c8bf25103a1ea4f647d639241dc701898d711720e7b8d9c21af6cb53827998a34fa8f774b91ac0320fbaa94fb0a6756ffdd4f9a33343fafd322e4a39514324ac39f152191ffd3fc5f001253329a6bc5b6f2e790e804f7266f1e7fa082d29a1bf9ab379bf4f0af63999511f70d211fd2ddae1663671842c2512766acf8677a8a06695668be9766d16a1630954ba40e74ddd06fb7751392eacb4cea9cd55b66dadbed948a9283c139e41e65b70f1cb553ec309ad6be1e835961f86a1720259d260437c53391b24be7870d49950b9b3f3285dc9fe33c8f4477af39a5634c2b60dde843ab51a229b9a34bf8950d1d9461bab10c1a148f91f5e2b34b9f24c7c2b2820b24acc3b0fdd1e31a9c1ad474812c26456c98b58a758a7fc05c412d2637d0b58d69f7101ead9ea569be959eddd56472708a2cfd680190f960c9eba2693640e07d64678e24df9ca6a67b45c2233d076008193f03ac0690c9d3d1b4615d79930f011e0780f85eab1f3e966ac5a55f90043f305b4ce56cbced39f6d987730693d1440e27368bcc3934f820eddcb5498c5197df57141d4a57d30cc24deb7107d9d9b1436e7a18c780d77e4dfb6ca6a2b57bb13604936eacb95bf88a2bfb59b1bc2cfd0db8b919244fbd02fca4026a4f0a775d4052324e075a12d556548a15d194eaa21da564575d32849cda857b4b5a2fe75074f0adf9af7935c7fb92251312627188da7d40f6003827f00794de48a6c8b5ac736ae0d76e13901532d85e3236ac40bff82fadedbdf7965bca94929401b207ae07f8062606e58cfbce8e5492458a0d40d953f9860996603e9d16598ea05986c0d2834bba11cb183c58415ef9f36d7c254dfaebe1732aa330df5f72956d42fa9bf4e6c4fa31af6a3f4d57da4cca2fd4becae07c3afdceccdadb269f7303557eaadcee4d4a326c889302dfc888eacc8acb15fd2e36bba175b9a1a57143dbb20736c41940bc998f93420c12eb159b823b5be0cdd247d147ffa45eb88ed8a688c28c432485680427c07a0086185ff418c1c31839b18a9943a6c4871bf400e8a7891b0861092a6a40c50fb820053183213091620c0cd480a7ca0c3a70650623e0a638e2882d454b402194734506af2b556c41baf14a6b0b1e608941896289994e4aee03d34462c8988846040b11da77e3d00bbcc0c27343b0f630eaacf8400cba8a420b78e3caca1656ace880078f7700ebc0dc6cc516aeab035f1c0a7019f0377e9c412b73dd9e336a05dbdd38f4c594eb370e7d21c42ca3c066e518e86cff42d08b02002309f2a9954be90c0cb2365073050b95196860cd4083134e80d8ae35345dfe42192557431b9a3ca2f8bb33f9c56f0710fba18ddb1fc6dcfeb0bbfd33deccdf71b39a55cce5caa734e62723ca6390930ab23f0439a1df18859422a8b8fd3bae10e66e29b8a09a141320c20e07c248a2080fa0a0005094000a294440b828618453df7177efc9000d0eca60a21aa30c318a08a0049631680073e34a8a0f144a3dddb812daa2c5b6bb1371945d06a218305a6d953bdfeb9cfed539e79c13a352aea8fef5a0a1c24220a4014c088839ba7115850cd60f518480b513111189e1e5c655941bdc10e40c98200746f0f820650c264203b05f34ed9e0cd927b230617982891a589cd000141db0a92d3ac083032fa610010b2c52a832021514152069008b1600e107297620c6951b08004a0da0f880524a77464734a0073f14690962e8024041a4806285d6534515587600861327c400924508a12c41a060bb7115050624193cc9b0a08086014c8807483141058e4882c5e4089cd5142aeec65514157806b8c05ca03c6121922862278a103610f200949b2c4f84b18a42650a15171810019354057e0094c410586073858a2d2344a1e240d09c64376221430becc6002a28fa4010105010061939a109851b3e133e249f170f2a5001cf143bf871654546e9462c64f0203ffb2df3b408c43afdd0545ff37963c5bed0ded02f345d0fe795ef1ef9e60239f3f318a4df2b90820d58b9fe11c7665708b7e7d147924cf2131b102b6bb5567e2f564913f93d7c4e93036c406c649019e4818dcc3fb899b11af7a79f7f3dae0465d8efde1fcb6e76ec333128ebb67da1bdfd71edce8e39b7855cc5e88718e655ec19fb9c41a645382903cbef5fb5340bd7db2c4b2ea5947ed3033240b04015249ad802c4095b2eed2c3ed3eb47841d41290c7cd0c096238250b988c8a1265c4a5742aa4ba7d340050b6a70ed8d2ba1d40d41d734a2bf512c844b2881680829885865f980139f122ebfed9164881370915245f10494226a6a3ab52385c50f131f78020a26480862a60a1e37aea4687129942453ca20234a14440081045002c0854b9495940e6061cd5471ba7108085b782d08ea81184036d8220b1f417861012b58b02a428911b47a70ac01143094581123858509006e6c20634194236e6c2063419511d5cfeff5f66783bd73082e76dcb882228c762ffa17d9bbf9731b6f8e2c6f94cddf496428a880ea8b2c5ca0258a1f524a8c30e4c5152b3e90620315f08d567c20855f6ebc524512a31bafcc60043d3e78417ce3c61594226ebdf14a155b64c12012dbfc8be34616433a7a588eab2c965c66b76c13729751974d575e13165b2eff0ce85fd73811e00a8b30aedf5805931f94c41c6ca08b1f6411c68a091bf0187a82870a294bdcee462c63d04004507ea87132748535cd8037caf9b66f669679439aa7e6f84f4f490f3839fe3c35676211ab40f38534d65e68e4d22cbef665990d275cccb3817e0ee81bdfded8b5107170e30774a27f24ae7220e00f81e936defc1e3fc6189fbecbf8b1fd63778a1f91f9f48321e624a000359c847b62d9a28e2a4eb0aecd8d559c60e26e51a6c0f2d7a0d0243b22fdac43a93724be7fa1e4a939edbf550f931950bf90cebcd0ef0ed7b1fa4d1b602ef56cf0cf0137762df0b8f3038280db787397e132ca286f2ca38c9c8e73c63923507fec1250809cfe9e229149647b0edc9d41974358acfc59bd7463f418dda93b1656f27b8c31d6ebc9e823ba7bbb778c363182a512cc8ca9b1ae2cb3c84de3249195efeed30b4dedde2693b531a2e2cb2ff48f61fdeb8fe3dad0ecf3039b65f491e4dcdd3d568d7377f7a871eeee1eb5172ab68d27c56a56332f8cab970c6af14f51f7f0a458c5aa17c6d54b06c916ff70114f8ad130ae5e3248b6f867d2f992412d9e1e572f19c4df615cbdd80be34aaec0ca8fee618d35f376ef4e52654645e886754b162f540ab0b18a93d60d6be84fb45cfe1aab3829ba45687ad2fcfc40458d065935600fd03fb44d5c2f5d77f709ba7b15c2fd63dfe40c71f164890bf030c61739bee3babfa908d7a7113ee79c33b8fb939debeffea5223a7ab066a0e1e5c62c2d2b37e6c6d5135fb8a811b1bbe78cdd31d6ef392533b7eceef666f7ee6e6ee6a61c7ba15fe6b9611cb76c8c632f9497bbbbb999bbc6c8dccc1d39469ea3e852e605f1594629a394524a29a594324629a58c71fa9cde2e9b07db46a7c7c831b2db784f8e1f3273fc9039c6d8217333374966891f2c022b3ff49437eb869eba7c83f35ccbceec3ced3c5c7fe82c638b3a421cae1b9fc82fdc218855d6e94baf88ec74fc632119d4a8253a2cc436cd556053ae3f2625daf00a5bc59b1fef8f0dc51b14de1f138a414878e7a17bf3a1efc49bc96a141811ec0f5bcbf5ef2da2cdf4f79e7863c2fb7b2ade9cf0fecd8a370078ff6ec59b1eefdfae7853f3fefd8a3725bc7f17c520a8f710c7e643b026decc9b2c65e34da6f29731888ff7f768b3e3fd6bb4e1f1fe5cb4a1c1882ef61cc4200b01590ebafde463a115db64425c45b4c9a488607fc843b77fb2fa862b6a948b6db81683138c68c37d11c19b2f9cafdb9fa5fac6f664aabeb13f8deab7f9b2948e4f756b70aa51fd3ddcc3aada01f14fd3f838eb80788777344d33a1348d7a33b62274f2f5ba1d737978a72d2717d7e9ecf84e2dae932e17107bb2a2731a62b0bf3bad889c8480589d25b6a31ecc2dc13b110d7dff6d267832e7044fb63a20c9da384a1ed198e0c51ce7e9ba173807c74a049ab671dbb651efe587775a9d84a28fb661e3862965ea9179c9b8645aac46cdf0de9b81a314f48f822787e44a93298a41505feae17e54341a75409248129148d6c55a9b71d47399222444b2d6e5c5c5c5c5de1f1e8e20d5cc4cc633b3d35a0905a97cc793a020f768ac8b8e8c8b415e624fbf4998979717ea916e8d775a0905a9a20f1a346a98764e7db25ad82206a3252af594868849b8bcbcc09464ec110c0c4ceb8eaeed8181b14f727ce41bfb8451fd391e050fc70f0f07091e8e4c8a4ca8f461b6da39bd5635de49e814a4fa893efab9a298981932af4675ad322c998f7c23c37af74a291e5fa9472ef9f9a1b144a60f2d51a9a7d443c344a57a81e180581d172fb1a18c8c91b147322d2096bfd4e9945a0c362dc2325bae27d3850cabbb3dbcd3ea24740a8a3eecb77531f1c874c1603f0f4f86c5e04bf7d271457d63891ad55cd1ed13bc999e122c510d095e8c3e3c8944ec64aa75613a15f89e5a21e038ea7124d2374fad301dd00ef1852a819eece9744a1d90e4e9df3a8e664bddd14c4f6fdc6fdcc76497c6a3610656911a5a3acce88cf46fa41d9e02643a19fa37cb510fbb349e0184f4f3f00ec0c2500c0cf69b3a229b0bc7c3a379ead16b7fd826001f0e48766e001efc7e9ac76ca079fa4ef3d8b7e3b71ab17381e6a947f3f1eef8984e67c78763697e93dc0e4fded8d1c0742cc44bf334ba21345f0f06fb69742083fd200e8d0ea88646d7425f1f3e68d4a8518397d8797b78388270a870fc441f3700f87eee8bbedaf7732db68911d4beb70f39d7e9e5c974c1a8966121619fc125acc4111483e8084b3da756dfccefd5ed7e7e322c19968e1a354e1c10bbe34f3cfed4e9f0a03b9eeed84a1cf5fc76a9875a55df8ce06f55c82efd80c09f9b7d28c39ae139b97a5ec872c0efd4020186c24ea7190e88c57ea6d329e23c97fe4ca7437fdb42e7099de7fa0fa13b10898d0abb088845e23a83e1919feb4ad8f0c84f782475bb75b1672f2ce23c97e6695e08cff4e5e101814fe301f17c0ef8b6a76f64586d7fec12abb24cd88646c74fafc60e4808b38f95a72ddec9750a83c17e1956fdfea8e39be954f0fb037aa646f5cf7440b651fdec63e5873686a31edbb03183a39ebc714386a35ebc3cbcd2100cf6d378a514833bbe52cf072c4ba60bbe396d61547f3f8e4ec7bf532b092bff4d3233624c2518d38b8b258d3a6ed34cd9cc88be0e7feac5e84307d6e9609f33e85f0e2f07bfa1fdb9fd9f179e8a6ebfe7856d456871782178c30b4d3fb7df86179ea4dcfe99532bb435bc10a421c392f142bfa17d72fb67c8b0c2ae72431956f8373cb542bb0a4d2e32acf0e444d8568cbcb0e686a756ddbcd074c3532bc4a1c4edcfbc10bce1a9656f786add7eef74f8b1ae85fafc846d6ec0883888857ef31b3bf70f687eec80783e677e4830a29c2627ff6ec088ae331871b8689246d21f129984b3213390f725189979a8894aa257629b78c5e51e7688381632e09c88bb4f01844b77b7112258704d34a5688a121b61ede0d26187293f46302c48707d4a29588d8a2c2c8e783122c54fa3e2e53a82cb880e23dc9885083d726744830c03417821858a1f385901102a4081cb8907010010d48009221388c182304eb065450406564505fc02497c7c18ca41162900838c941564106121430b2c7e406273f9d464cd9c73ce39e7c43eb0a607789b369d73ce392791cc897a1081317b3661b54c22e20b7c30810f9ae8000fa84c31444596121757b8a0a00211c58911bc60092b5a21f8214b9428a8684db2259fd562c3c146655404c875e1d6458bcb3df281b92e41031090c00b145cc003398c250a9e2c556ce04aa410c1bb717505962b82ea0e66e8e93c430d2c1a68f37029a594d64f06067918810a131e68208a941cd8e08a63b3073843df645f9d42884aad9812848bdd68c51446542ab247be91c94a8684a04dad2c692b4cdaca93b63285ce6ecadad9d9e9618ccb984f1715456054545281b04398906054154b18e53573ce495fee08b161d182c879e26086cf4054038b861aaa28a902c49cec1265ce39a7055c987b1881874811a989b064208a41861512ab25467ad85c2cb8333333b333e5138cb0c93310d5c0a2a1062a41938a5028a70fee4d404085105841f8c8808c1cb772ddad98c288ebd857ddb3971fa5bb112c8bd0cb34b2830e3bb05ad448dfc81d76cca97bcc42826efa8f1013a8b00bb8db986208d7797e688a43d774032ad8a494ccbce5c6efee1611d6b5758a6525e6744a2bbf30acd3915f9d62435b6be5aaf51d539d62b94e8704c45a06e3779d4e91aed391fc523eabac2c82113d2b61437b632d9148a6d20ca95b415e6b5d5c48405e3a9d222f9d8efc4297524a96f2484a7a61b78af006f302e362616060606068c02c81113546d4c468a5834190419e1f3ba97d7fb3fa26fbee55c4862e47a146793227f3b457c584525bcf654c08bbda2b1573320ff3801aa865e411ad34b6ab5ffcafa38bfa8673fc65e7423ffd19674ca1897fdb91da4b7bc911ed1ead9812b1451de10b733146ae53a1af6b7173f01b36cbbb8b4ea75b0cf2125b3f76dd2c069b47fdb2a7c7188436abbb601bff6e5dc63c25d8f7f039d8d7a4bffee48058efd91faf7ff76ff187955776fddd0d995f5c22de1013ba3cd25e97dfb16f24d42876a913258fe8f39dce3c9ac2281e098523a1cb37dd45b39ac59147f45f76e81038c628b9db7d4eea6a713befb4cf492986d5974f3a2956b5cdb7ad596e14ab35cb346dcb346ddb584542aed6d02ba3629372c8c5304f46b09fa937c47776b81bd29727471dc01d021ac3a827afe42bb6a823ecd5e5e7644f8ad5ccb3ac5966b466daa671dd884472798129c5784c4cb38c899131b1c969d4f0939f4ecdf2544711276a118956294456d4b24a0127ba80e0d12135447ce9604465652589e415414c5492258b205f3c4a644b76215992534f2e3f0771fb14ffb9fc1309069953d107ff0c177f93dced3e27edc961d9d6e9d851b98859dc72bd7aa779542a954aa55219a97181ad67998a703ad5aa0e6a218c4e6f1c1c1c1c1c1c9ca86d1cd775a311c9be94b09faab24126a15f8143354cd452a9542a954a6504070707070787c52dd7ab779a874e671c1c1c1c1c1c9ccb1f5d5e60604aa5989819319c0c0d2a5bae17ef300fa76e2a954aa55229954aa552a9544658c5412cc42b1e62a2e92a954aa5524923d1155dd1155dd12563a241a3468dd369c686dbb0d12c6dd0e04e36665015b22bd3d01311c9a2144bb2542a954aa572bd788779b88753de9f4aa552a954aa191b376ee0c0f1ef7dfe7dcdf2bbc1bde7c89d542a954aa552b25a6b32fd835248aee49024924592d5a9542a954aa5248b2559922559922559ef7d5f8e1c3a74eca0711a9a6649f3719d53e3025bcf62a2ca5f772c8fa9e753e08f5471b54444449faa298c53a999f254a77270d2cbc1371d5b2eff8ed60e1a9ad7e5e711c6e5df7870921fec569097b560907f8b2847a19a25aa8e9828fae0e71cee3ed6f4c77f1ec944a32facdd1756ee0bedf68556fb4253fdc20f9f7e21087e61cd0d9ba766c746c3758fb526d33f08d6dc5873431c9ee6893e9ae7f26f58cd46f4fb26cb91dd491c7ed8626c550b75aa7b6e7c9f14ab5e6bb3ac3152acc69a691be71cd72c398f1917b58deb463e1a35cb518c5c37e2b8e8c591ebc6df46241217bdb077a21732ebc67779f1979766f95274e30b0db18a7f78877b5cada1222119247be48fdc79c5a2f66ec521c9dced3ea953da2c691d49ee769f93628e61cd12f3492986d59a69ae69cd52c36a9669dab6715dd72c3b6de3b8ae1b8d48d6ad6d96b6e3e48893241227ade5a4cb0b8cc3c0344b98172ec270b114bdd0c61933b828637293a9599a5c38e9bd70d283d9604a254e7a313aaefc2d8693de8c6e0579655c46a659cad4514c1df5e861f32360bcc94a917ade5f1c7ee3dab81b9db9a75be36e75cb64eeb66d5ce96ea38db4d9ed6514e6706944f9c37443eaadbfc170981773a847ba1bcc56da62b6abddcdb4d1d86a70d4c3e8dd66361bdb8d0dc7f65c8ec771c3c6cca9060d93cc8c9812ccf78de6471a81197dcc9f12c83c1951f097dd10bf757eb7bffee9c5e8c36fb00fab4471fc800dadbdd1c1287e4ea29d7ecfef7ecea09c8e79608b7dd3847e8dc1a70450e8f931c89a3de0b28c432a0e5d4611aefcee1020cbb8384c4672bdcd39eac9c0d304079c6b037893e4d4df623764fe573d25f57b688203cecd925ccebc184b0893dc5e21c9e51c0fbd10c9f58bbd772dc05cbff2cbc15f877a73d0c15e1949e8f7f0c8c5b8d8b9d094ebae72b489039a76373647d8e7006e963da2977e38f4f597d1477f110927a1ec4f6cde0ad87c4a29a593d223a9b05b217fec0e068cf582cc59419631c280ad9d0ab28cdbb110efe602f6d9c76efb464dd8530bd8679ff910970271e9c3207334868173b4df9ac3bc6e183a477377183c47fb39e78461e668bf510ef328a594c24073b4df300ef3300cc3300c062c47fbad729887fd74aac5a241ac7ab956429347ee105d4abf76df08081b7aead2ac83a1e668bf695172fba4581d3590e63d973ed661df6948f6d8af907d45d147d844977e921b3bcc85ecb15002af5bc4792e3fd7de362096bee41864896118d7aebf30896530f49decc37e69fe31ec96c9bf8bfa66be7fa17bb65ae118e4c77efbc28abdf68516fbec0b4d3734fd0d4d978b6e772f70cefcb0fc5bb71236acfd63c37a67bba7c0234b1e45069bba27a77457d7743aaf9b837fb5e5c3d5ae59b76d40ecf69b949552ba7dddbab9714cebd39791763af3eb0f58f95ca7e3a325969d58f9b18321e6c446f596751256be10262161e56f96fea4535e998303628fe4c8d1e91c914aa60e055c7fe975cb8e31ce5198a4888edb2f4b980efeed15e15cf0db773b026eeee258af8379eeeb869663f54d6db57ffc39c2f0408ed6e17db147f473f4e0a27bda16000e48e7c20838484881840e8741fead86939d67774ea7b33e9d4ffbe76f14009d4ef7d77443fcfbf1d5b8574be8743a60b1595d6c535ddd87dcfcf95ec474b3efdf32afba8eb0d987b555b730c8f3b5a7f3b7a7df792312d8f9dad7fdfced04ce84ce7f0362bb979d0bf3b7df366f7ebcdd97d0e9741f8e9ddda499dfcc4637e7bc4dfb12ba21fef4a77fbcda93d0e96852c79bd00df14f87091cef6602e75e6d21a0d62d6c7383a9e5e2e9a3d369ffb0ffb00f8929a7c9a985fafdfddd60aa5f0f06f94d60f7e8c5bcba8551fc27742af0edafb618e4ef940d6b0be3dc9b93041d3f4a3f3a6bdd735ab303856e88fc3847a1ab7dfda5749b6e48bdad71eef1c53cf954befffc6e88941f6fbf099d4ef3b8e98648bfe1703a175acb174350e0f6fb119c6e88df0d8836a23fe904804f2cd336ae1b7593accb0b4c976266c8749b68d4e83e358ef764a46144ff068d9d1b732099495240c2491a49cfca1ce8c17724878447bea6c85757d92e5f550acbc9304a372ef6314f14ccc3235fd5ca977cf94e169bc7589d9392b99d3d25e4f2795e412f8f59ca67d6c272916e791c64434ba7d72b9ef2d4466227ec849d441c500c6b010e6efdd0a53b9d229d6a69d1eaedd2af5fd1070bfad5af56accd18a5add675d6c6713eb7d7e5bad3e2b92d22ace59c13db4457f384c4211c9c596ba7c33659e5aac9be09acb9d82562c4ec74e6ac3f6a575303c4cee73a9dfeeeae1f4df65a0ac5ca4c623db00e74a21b61231217fd076bb51ac5588b646737b91bfa72d22f6ef3473d9b762c38e1d22f302352c78de66f41dc105070ef4f46947b4ff76cce12fadd3dc9f5e9c5eb9ecde9eedd73ce4f083b6d170177bb672de34acbb6ccd6d8adcb5845aed6905091d0cb0b779732fa98328273b6d33967f7bb534a3f764f5e679ba6b2952453326c5881582d748a86d01b9f92616bdd46f20b99924f82f807895e4df11f247a52ac66b466dac6695c3722c59cb2550a414ca6f8a41996693e9a8fe6a3f9683e9a8fe6a3f9681bc775dd6844b299e6a3f9683e9a8fe6a3f9683e3299e6a3f9683e9a8fe6a3f9d8c8341fcd47f3d17c349f2fd37c341fcd47f3a1c9341fcd47f341659a8fe6a3f94ce9b23f07c14e58f22fc4302a368c5b3f2c79a753c4bbfb15d45e917eadc05dfa39cf132b3f07bffdaa961da34cf9d5afeb4eec740bc1b03c9582045a9e12f2d4751aa39432feb093eb1b1c216c2344e6c376993eec178d1aefef3cf10626e6fd6b782c78264fc68b8d9a11cedc12c9c5bebf35459b174f6dee09c18982735360a16f5ca851fd75c617563bfa42db7da1e9ba962db73dcb32eacd171436dc5c57b8966ca32e54abb59b0bddfe2b2e37bdcdd52809c5fe60b0bf86c1fe1a4fde924bb8809267a30ffab2d3b14662bc1a51f4658700ec96be700798970adc25b59e502b57db5c0c7ea3ee852c870402fd1373ce984c9334aa256b47d6c5c5657aa456a3482d069b707162c3aaea365713bbb9d8092b3797ea852c67e3126c616c2f067548dfe66a6273911ea6d329d2afebf2309d8e0bfdc2233c97f62b487aa4a75e917e5dfbb1d3b1f24eb9f543d772fb5f48ad469580b485c17eeb915c0c923e52ab092b3f2495ea88fee865f772f4759f37b7b94843b75fdb5c24ee86a4560a6c7383a770d806b3d930fa42987aca53178675630e24de219149b8be64d936203632b13ec5de609e1b1908e93157f9ea2ee7a414c3a854acd6ba75a976b5ab5d36466e9f3406e1b4d0ca6d939d0e7bb2a703923c3cbcc4c620da8ddfbf755d7f38b65d3707e91fd7c344f7d00db99e17b21c9bd13003ab480d2d1dbace88cb4501323866003e00c7c020bfed8830c8443206997fe38696799464dfc3e7645f93fe9081b8d125fd2d86ba0ea52948c7a997ee703d46141d52afb7d077fe24f112eb456c134ddccc24bad78bbcc88b4c607f30c85fd38a41b66799fae91becd98bbc4822f17359a6bca8c8b5f04d5d527f18e4af3f31313133b818646e1f7611567fb81e6dd32a8d31dab4bcc9e2fc7619c1f92fdd10772d8ce287e974244c09f3c046b97440df287e1919191a3c6332994ca61ab2642d0d1a9d4e111a9dce8cddddddddfd42b8dfbb1eb68971dadc703d56670aeb5a58d73f2ffa29bafcf5a72ee11b6e0876e974fae37a92e8b9fc9b75217523faddce9cf9628b2658ec48cfe5763129d2aeebeda1bcee5f588492c03a83dd835bbf3b15ba8b7dbe137df4331356be90f61ce40d7de7b2cd0d5ddbd52eccd5019a12a834ec588b7a142a452400000020001317002020100c0805a3519825c2dc0314800e6b92426256329346a3a11c45511c8551186588210010020c010019a4d0d80ee03e4f846f8830e1cfa2cc6567155d280307d7619934805778c901939b898a93bac3251f03021480a3646e20243bed12dd8ff683f5fe1124ca48c89c2dca092c22eeb101caec82b235be18d1cf63e05197ac420e07f52242fde50149ce0ed185dbc694da1dfb92811704c1d8276667a56980a520ef9fb1c77854a3f248f2e3409c4e31567f659ce931730bafb6ac60ada9ebaa947013883a7febaf0b4d552c7c3e3c605a2092856c586f4badd7100191fcf3aba4f7151bfc701fc13fcad07ffece54f463f34aa4bc1d8727ef3f3e735714771c37efad150333a3218efe63788ca3b7014fc1306e3143145023364209d7be1260f845651efbf8849cc460020cd950624a68f0bccfe3dc81d5a2d6b447428f212d0c5b96464efa6bf39704da6aa49bc56f9181e68d6f66f3b2146b9826d403e92c673689d8fe7ca614bc84a24ef31878ade15c8e50c3c77d080284efd86aaf7fb8007efbb66ada3f9733f3989d6bbb8d9547adc9eafe834afdad18d63b64a70322729e086d31ecc58827e237f235d61ab53e430dedfe7f36e9b780a367df23e076ba366f7e5503e190001216618b62135456fd2cda4b3b11f3048526436d04b89c5002b211f762ed46e79a8010d830658d0681e3b021003c77d557405068415482420cf23231bd3b66f28dc3fb18d818c02cd218b8088df1b047d9682935507519be9e7e089a9877939e86e4533475a559fa70a1cded8faf6b17069bca10504b01139a17e66e92b104ffc7a7956c5f1a61bac340c1cd3ee4015d994043a65e2a33224c0547d2260bbee40f3a93575ea62d60de7bf9d5138aca312872122bc392261d67962dd3f0f0d60ae450ba023a56204dfc61999d8700ca14a62d5a267933c378c10fa7cc356fd82bc24f4c3cd0ee1d4416bc12d4e508fa5c5e48ec33e8fbca84a1d7ac4a80293fdeb0320cd0b64c878435547c76e692cdd8299b0f0940443594817953da1d2c887ccbda8cff08235b7cbe9505b217a80d87f9c3624943cbd4719f277ed02ed559fc59a8048f16a4f6694ae6689f44325cefb1a7d9c11f565a88bc2c0bac5c3e5709c3d09305c655d0a088e138762bc91efe0db15d336ee3e353244f24e3d0e47ff92efca26f6cd5a2901d5c33bda16dda97e39f16ace6cb981e705253c014947bc37ab35684d07e4c2f173597b645765e311f84add75419e7ca62a5798de94bdac83fc2acb20254a5d2ae94620db6b7960f22a2251e4014688e199b8e25ecd1f2015e7a25ae8fcbc45aa3dfc3986b1d0fe40913844dc4685bdb636c6122810b0c9de71d836e722703a535b367c2e440671491c23565e17f20e8c3afe24d59d0d80faca4af4cc196f89fb542452ad5384556262873493640673330f9cd32928b8519f13bfc76b9aa4c5fb89404069f350a70aef74ad427894a6b9bed0eaddd14d8be10632a59e9d53daf28f0cee1a6770ac8d2320ae489753fb408a47cc239a9f16971a031fcbba7420a058f6840834749ff82538fe5cc31285f01146e4cc26fa5c24d45a8af3e58e5744787e28142b12adc286048925948bc004c7ceed3a43617efbca24993ae3ab82d090a0f333fe301c8afc657ad136c83c7b21482d2c678164ea846a2b64d661b987b008e130e834bcbddff54c5a5e1e89680ac151a5eb6280ca5a1b4b89ce8f9074f63d08c6933768fb49b427b16e2dc8f5178dbb2d068c17d73e8f9bc8ea0bbe3f6c7d7fbf5082d558b8553866e3e5e06b77cd6510da9d53f825912a46cb5a6ec85758523e2cf013b4907cf068f59a10324589bb8e9f3ee94a555aaa53527d31212d73c06725144b64dc4f1e73e33a93ac5a4fc5516dd213eb3974d6e5cacdea39588af7c1ca6ccaf0b01853e0462446a068b54cdd8a255d6848243e807a07816eb70c667e5458d5b8debac82a469f652e1cc4b07d489a93b9d534f1a5b40ce3b64ae6e0fd9ab0cb6f712f175ac7bbd1b8bcd43a3e675f490d38e1c95128be4b1851aaf0535c2667e71cb64dcd28e4113341106a98e762622a86cc1416952bf2b7b1166edf1a75960845bc833af06e29f94928a2e43b0e976bc1a86080480dfb47a0628be4481ee5a075f7116cea61fd80c225783e163aa56db9a7016bb5e0b8fc68c95c809c766f3129ee40927b145d6260e476693463dc5a01b44733fa2f0d1c557ea887e7ec28daa9a568c8c0857f008ce7892819e963047147e01b714f1826fb1de4bd8d3f90f877444be5c0993b6aec1a1ff89e3c2e64530ab4a34483ae007f5ceb1cd42adebab71c4f89430935cf1cba2b7b8036e926278435f4444a5842f471d8dd47b84125e0c4aa8042860f80bbaa3b19c2190cf6debef93a1186784deb927acfb9da73dabd927373640bb7ce21a47c09c8499e58abf1c6feb445049b411185ad1236812969c2fd4ece5c024c88d84392e10afcb8d11a35f4725a16294844403c790999e717cb7f42f331d23c56d920088fc47572ec48d0a49428b4591045c36990a02f596b762fd4888bb2e8eb4518a55d787b7a7a20aee8d8488ead0083eb72d454dabbb50e8f729ea82ee7e5e7aa727d67942b3be367fae06cf2110dc5545c269060e6bbf8db5b6dab083029135c5043e1ae21b4b3d91f034487a4b3cc74807d21f0b92e07645303d2a84e02a30aedc86f51db79724f4c94b82966b4b303b214696b247a143b3d314b4505f0f0532b5b85761cc29e28bd60e88926652817730a7c7645f65722881eea5ba04b709761101323821642e9f4ce78d4a15aa9f05817771501d70e8f0b1aaa54c6772f5acf92b9b1493ee0ea50e6ee38f869c41b525333b5968d8e9a6d38175bc4421336897ec4f37d66d0ab117a4837be38f4a02351971ad7ceae08ea72fd0fc29d041a1efcb5af57fcc97f839083aa0d5016d0e6e45d41c602396e298df90391074cfd59a98831354d4b7c4e580a2f948ae2c070105e2763630030f90f7319503a177191d1a85eca8f785b6798cd8f6bf239c30e2000d4863ba3b4c398808ab43ed2427c57923c3b943215b1e268413a44677031353ff6f9853ac30d0a11215773c964f0e4e3494c2b8e7a0d92d764cf7bf714e58f1a2994b0e661eb06664733062eaffc63b62c5c0a23c7260620b54a39e0fddeeb0b1a5ef27871ce06e5af5d826d898d8e6e58f835074b961efefa6e3e40bb382ec384bc21a5ef2e3ee3830173930373539f0c03ca464cdde7d4d73d2e37b8900ec4b48320999fc6412976a037947c531415dc7b4e27a8485d2d5ff26494202df24a935f64450dd809b72e0e09e5479028addea504b30f7e252564e143c0c9746cb945367c2a5e2a9b6fe1e95e8047ba8c166947360c285ff364180f568a6f9ed0667e81334674a3cb0730cf077af660b7134307e721f1af48b7ab82a6bb6b1cbde1b5600044ca8cf88911dd5c6c7efc416b319a3679b0ad554a5e9d144769f99709440025458195d9829a480875558bba2aaac895fe54cfa5a7886e04f58dc7d7704e07f195937e4842bcc5f18a946cf77e7d5a2c516f751afab56bffefdc4c24286e8f0f481eb1aab92962f048973bc71f8aaa373146dd1c2f61486cbe46414b48fbb8a68e28ba5e0168a9aace5eadca46fc0b5e41edfd6efa85b19a04c27f109d740d5bc1f2b9398961c409ab262978044762c1f95bfde12fa389123faa395c35c636078295c6d6100e0855981dfba7e0aae4f05eea8ab3660f188838d50b2f0e191f9ef49e6706e7e7b9189ace95f7c2fa5e3ac59fb811d21baf682e0aa36460626d5b5cfb1facb318ea331dc0e9abb0ad786b4d4686a18828bf77cb32ed64b80d50486c205358af03949f5cdea4b97a1cb65246611c3b529b836e55f0efbda38dda760257a75572d49b875e9a776b91796f527ea53768992585e5c810968d230df241c44eab2818b554381a312dbc620b1ce964b907392b63b22fcff0e5ab9283e2eaca746808cf37c5b2e2904aa25874c2fb05a66969f31237770607445eb4f0ace69ee20fa9aef2ecde465441851c249ced0098eb55b593e18e3878de083d380c6dd75d948940731f13c9a3b22d994ae2d7096374adcb935b2d610890a4ee4272cfde02b3769fc56262eea03d5d799313a2c7eb32de8909c42808197b683eb8aa8ba12df43b00ddcccb558ec0294a03eaa09225baf30107541231a558f73a7c83507467f5ac88199ac66222d8054aa4b91b58144f519723668698f3b146b9a1f0ee02c84ae18fda1e5eca7a92d16cc94aa3c24fd44f7e53ada60bae64aa9891b714a20165bf66a9f3f1145a2295a4284f02c11c151e1fa9b2d213b474e532d348312f86f615212ba657718d74de93277ce82e8fe59a67ca70950f7823347ed6b80cf2b8b2c622a267dd6034e8e41d8ccb65008ca06d18a0dc9505f80e531e89771392c77e097faf3d233f9d7d804eb45a0c74b32caa61b582d4540f5e8b83f6b5e3d8fe2700f874af8ce99789172d34a3136167c1079d34ad8c2b0fb62d6f329e57d1d0e655e569cea7ca12740b4fb9a1f04c6da28d38779585de734198715e8d62a9350650e993882b143260db33d82a1e141140884bd6f9d25fd05ea85d08f8605543fa56e5759c3c8ccb5181980f804720c5f9c58f64a168a08750c1afe38cf061b9c90ab52c01f0dbecff02fcfaaac58ab680ca6ceef41cb64310ba54b9cc201cda1bcd50eab08f46747eeae58f99f821532ff8b7c678df0fb1784af81e64d788052c9818c41758036b26879c0aed7323c86bde4ff14d23984d0a2b6847edeec80f06f475ca121f09fd10c063d29a256ede611f3eaf85ac18375f50d470676fef9b9b02bf657293e76a65f469b2d36faf49a240a5f62ec3591c7e0a687c27f61fa34daf86cad554540054504ca2a5d5c68f6c660b46ce0da5f7b526f64f855297002b40355428087313a4bd366278cb16898f06c7880bc0dac4823d3d33f27e6813cb888abaa72ff86408a952413883e4815e7dda57e8fb1ac3b7570309294cd3c6e8c0c7657bc8ef124b70a87bfd1fb5ca67857b360ea0775cc72dcf43ca9febeddf2c2e11ba3d7d482fcef564d919f31a02421085f32c5469c3f3a7fc95351165f6650b9ee9470664d683de8c880db51480c51affdcdfa3e6891a3a92a202e5e1032b59b8c173d1309e93e7e3c5618417ffc3a20808a20de0f0fa1104c47edb0dd3f21a38431a4ae0957b0ee9cc71dd8b57528706813e67c9f7a5bd26e76ac231c83a00e65f327cfef090ef9520bc7f6f48f08f0483da1d628315be0d9fe66fcbd45530e8ce8c3494132648d0b5319cda811776604ca9277a378fdc85c2a89b2a90cc9afcc956e5cee4f7adecb874211a168e329b6465c9bfe1530148801c55db4cfeae7b17a40f53c543d31d71d317e78247f4ada8ff1d0cc276b2434edee0d89044bff4307ec92a8faf1bc35bf540de6c9e5ce7655c29ba49efcb26f38c0b39e8487b85f72e75d9d21ef9684c098250231c47670278e2ade25afd26c1ccc8f596d50fe8467a33122518417d015c8a0a33b361ceaf081851ed7b96de2aae145c1051e9d24f535693b9252a7d654c9fd9e4b0454205bfaa08f84b2c5d844a0b3cb085e891e8b2c8521514ff0bb447b41901d82001a4c00c03eeb64a36db745e409b878a91e44cc905e546a1ce3fbe74402610cdae2232ed6f2add607108536f599f81246064f6b5e1c2064349bd69c3a1145e4d94090d6ec8d496446020de4a96080f30970957d95b7ca0500f5fa0b75ca9593e52aa2b7cc2a0f79d6de7498c7eb0711720c4829b1e661153fdfc7d888e7802c968b56983aa0c4c5f64985ff687f924c16c27f5c3ce8482431bbb714d6c07953408a1c3d2dcdb1ee0242f058b9d092c94576b0ae02a471f84610ea889538c5fd1efd07bf1e9b43415fec21e4068032e53622f1420950e8e75d9126b9d1ab90530bd8749a2e34951bc7abd90f8eec869f54bfc380ed1ca4508b2e0c882446e5218dba8d24b6183ae9ac74cfb4b4830da7c53a5f6f67659a53ff62fc98e2b700dbed53307b9008826a85e03d681d026a3bb1d8f016837e468428378dbefeb7f3311b97ae4ec0f1e059131f8941ff98166cc799d8fe94f85e7cfffb477820ff9369e28fcb3bb7b858966cf28f2cf280c43d69fac400124f7cca66c7891e11a4d9f3bb24390169269ed7461ffb9513989900e6631c3707704bd334e81bf9ebd2f72b5a346089c6273f6f29f1aa8dd8cfb224ba4fef4eaf2896a6b93dd5eca53855cb34ea64ea94f901b6b38eec34136c0f8313bb37d5d086d8974e0b4c969237c54d73c2db54112cc9e692c16eca182650e6d751a02102cd35cae86a05a8d0d8c08fb8e0e919ba7833b61ab039bb95c2bfa454b96edfde3ebd42b1ae986b400ccc4a9838c01bdcece9ed11d1a8a2afb2e2dd6c85bc61f24ec70ce70251b5b9a5910aed0f068bace6ff77c4b6aed7d90b73b8155d9552a4da6b54817d16e681fe01778cce816892be8114ed2e0af2184dab3d9ec3b76f648b2c4f9f32e4650c2c4555acec1dba519787810a129b5c29ecca1605462371ceb590453af84a5ccc870a8344e00ae4f8dc8e203f43a0d819728a720786347e21fe706f9976f83562e1da475811632a687f8d31432c75f6d583a919ab571ec28e165249f80bacb160b9b3671acc3a0a654b56bbc060da5342a05aedd0e5eed7b76cc1509abff383ac307fde5a1000c02774b57e60ac91a3229c3ee58e9b18190862d064f36f5d58dfe936ca56d4399abe32f74561026de2a99c6d7bcb73338ab78a8d6aa66854d5b821eee069395ec9fda359a0bf609aab00e7820808443488d303e8feefebc36b6988868c819aa5dda0f4ea6631df1e9fa8640c284f86e5606dc7b2d8cb9dbf1f5ff44950e009a522e667c7a87a05a07a074ea1d00753f5b58de9d6af72db731fb0aa30322e05383b02bc4f73cce32eeaae6b2d78e08ed95ded3eb2a47219f72b11a6d49845fb20b751dbdb33f137f1cb36a4d82bcd390350c70e6629b0d949a3f9e0e6fe04a04d4aa9f4d526c10ffdf4866f6af7d09171de9ec67616b0da6d931fe76b644f10d9dc31632d43612fa68caad0e67735f9206cbdee136071023a94ad1ee87b285e8d4d5c18eb064ff604d5986fab0c274331ed8644f76028040c92cb4ffb13642f8f68337fb40727bff0e81e0a249679256170576b28d36b3c218734304f60007526d5a36661523ecefb48550ae1d4420679e930bc298d25f987487f9e6c1922ece20620171674a9b23a9bf16ae9f9869c5fa296630d3207d771374d9af1a0e526d93a97c0732028464753ef010340033c4ed4184d20a29b4e30b78d1e7cdcb383d84c42b041212acb10bef3106f46449708b74484254624c623a43149ec844a302998a8cc267cfefe8c2814abb07324beb43453e0b540bd2586acfb7a041b464529c4db973780da50a3b05e02e6eac8c2d8dc1060409c280cddc84f66f64814bac012a44ef040009143d882f453487e1e099e2da4c2a0bbab3594e9b32125a34c0f283023b9432f7c27a4d12b411489f8a7c8797a459ea7a984d6a514cbbe080a16ddc6a8ef857bcc482603dd355a5563b4377a8e0b2203b12ed78fb3dcf771be45f0d38d07eebcd0d1b45ca5ea7c46dd2e51432172368f0420f784e35a2aac296ac1090503a60937ccc6cf555f1daba135c1145aab92ece1ab23cf416f642c22fae08cadb8e9618c0eb8fd96401257fc2ad3f6eeed8e6ee1d073a8d102c01944d4b7ed4017eba2a2cb47d2ffdb0a200112d67aaa6e01028379e4e596062afae3ca5a4595ecd8bfbad63da926a825135cdf9ea56d6f44b7e950e0138fe8adb424d79018f830b8c3e80a400cfcb642e8fcf69edccb3bc450d40f39c181c065867fb1d5c7d293a84f2b4206a414bd22234f31e41f2b3295068827620f82dd3bd4e2a3612fe406f5c319985a32c29e8a771df1e36c3090c5021eea8a15f3a38d061b2ecd30a13dd95e22268939a8658e35f4264266b59be6f0184beb85ef08bbce3b4e1691166956815648a3c2a16dcee218cef0efacce36017f03da843882893883a4606c1f1d2606998f43908a4de3a8bcd05a69cd331645095bcff506c2691814f9ef1c9c2d075cf00707ccbd635bd9a8f0de4466f400ef4b5a4fa5a5a94c3a0ae99852085f1492d6f9f7166fcb7ec0805be49a0c50f8f2c2081a9c13b250c0da963e66b975282645414bcdcfddce5e0e30c96e9c8d3a340d41abca7ecf8bd76ab8a8ae0f0100f503c4bbc7b35b0e6e905319af06d9977731234ba83e4c2d0f25494f6854b1d56c06dde58695bab23d4027afc54fa579859eaa9a60457b4e73af0af81f5b81de624fc1a3b7f5d2b304a860d7a37e98d0e6929bdd7b5ac9f054c1e4ad32cf37c5d527956cbff625b9d1679c82d71993c2e406a18176f9cd4405ad88293fcd0273e0d807da2a1d064cc6702f4c3f9cb206ef0ced9d47ca10f7216a803f3a3c8401e559132120248308e1e7adad9164996084fe0218df4cb9d3496e2167642aa1177b1e5cca5c9fd14d6adcae4659ad5e7adbd43f5902f42db4ddf27965d1739d206ad45c4e3f64267b9e9f1fc278657316b0e6c119524f820d9581fed39f16385c780067df14f0b5df187006f1766ceab73e16598674ad43aaabbbcbea54787b3b24c53e691589ff38e38fab0fc5828d5e8b3239c663f4e735065538d43af946e65baa604a54ee617b1306440aeb25f9ed67cad540252b4201a62d2ea4584e81d0ee67fcf695798c26a55c0e1ef5bc3e29dc41a6bf181223ccdb7a14c33c5f5b892e8479efd7a9aff01b596c35db230567a36a159ee14599be64b6b592638850f357f806cc0cf7b13f3dd899535b0c7688625147f9eca372d862a315d58fc017661f4e2336e2ef612be766be8a0b674a53e3ba5027b95de57700067d851bb1333d8270569871a9cf5018be4aac5e79f9721082bfc28c28723d82f0b6ce787e48aa85809c3b44fe21679af164ee7828cdb02dde0ffff73e61480a3ea9dab98a5014923f19d1cd27e70c1c4419acda8b0fcd4d3db258208df593514ce603de71d5204e584985d50f063ce6643e7282cc358e94d888365157a7d0b6bfb3d84083e9075238e662de9b05e9c76c16ae2436e7fef28c0c5e48ba1eb8cffa30836d6a048a0acea70276a3848f1e013957733f555fe4a47f14c276497f7c09f5a1aa395945f44ccd7d5449919f906d3bb1679ec42032f253c2373080cfef690d88ac2570a918e4d185be127f10ab7c870e8f8735b0288b0837f74067dcf90cea5334ecf62877af85333755a2758fe31fa9d38b1fe2b9af0eebd62a030a58ed9f30758e42babe9db29401240131f5d659b13bad1b65eeecf374dd26c50dd44a51c43406e319883ee2b66fe89ccba4244ab34bbf2228715206ead3122da243118dc69e10ee5c9ee3abb0294cc3633494b27cedb72c390ad38f118f394fce0bbb4b356334a7ddeeca27a96b118f2b5f2500c1f508c9156a9b761772f282361c4a13eb5c0509aa68293ec745535bbb9b1c179446380f9b075277f322aedb020c61c66c97abb459fcebfbb1c615f663668bbed538bc49987c988ec54ff42f255be0c37984b35602cb6e6532e17e98465e3c86274852974d3a99743a8c16b2b8479c86ce7e694f743368d2e9d580cd2faaced782c77c2f555823e188a86a9c5b2ca7f56313e6ace8f8e12ca122c52709ed6461ba064ba46016bb4f3e6682e59c59e7a0638964779cc27dd572606479c8fd75f7bc262bd1b1655d6c2b84c5c05a2adf514ee10ebd50bbfc0f56e6258411139c58a09b3aa80d7b5f313929e5d272705c765367ebeaa5a7e6a882c7b2f1fabc93eda7c0cdddccb8fce8b15479c123a76953e75cbb5c9ecaecaeff30e9dff554a7481510eb8f978ec3fb18ee17de99507baa9de009dcad29474f088fc87c4ba750018801e7898368009e4be76cf0dcc644a45131a4114617e5ea8afaa958d9ef0c5b44ce7bde1f8affba51b55456a5c69d526b9f41148b8900fcca3ac490f02f5cf19a2d79d705dd6cb353635630df4119993c84d74354302e404d90b8ba8e8f60b132ba6c9555481bac4f1b261d1b120f4256ac388e0627a06e2a0adc6653a86c67eab2e071b4980529d145e0c94aa360b858ca619e2f37b793352ae42552328111885e9b5b30fe6162d281f964dccb1fa766c258422998c907fe41754f6fa1c3235301b3daeea39cc592268cd75529cd0d5dec534a13cdb8affa59006b5cd57aaf7fb2358c9cec7274cb3ccc952439f7f5ea9a6a62c9cbd12a6a38e13214c81e1ed23a9c6f32ad6e395344eb8260fa369f716b7f0f48f65d1ec10fb0558c3b2daf9b5635cf66ef1a3e00012d476d166556bb88239cdb987e27ed5ad4448db180400b5850987c209427d7b938fec33d19797616843c6ebf1a1865b058eae3e9454bc6a0d2dce79817b363b2f9b6621704b19c7c9858cf0d52874f8cc9953bc9503731bef18553dcf63817528ba2b01e95cd6b48b0a38205270518fb0485c1e8c73ecf25e9c2841f1ec26b3a8b0c13a32ef705a114736ddaa2983c96eb70b22cfa3ba200d4cd36d91cc226b04d683d0f7b13d4f6e8ae12b8e0b8922f13ce54c4191aeb53665a80eb86b5f3ed2f54ce4cc3f53896d4a5fd79a2a55c807235b61f1766416468c51820ba0946aa709bfd657252fe1ddcda50894b6df13a1000e25ec462742edc63452639c5d6d4ec54c7a840a2bdf5bda281d7ebe816f784003b51bc04b707627ce84d407ef7e7203e1c3c4e81690d79e86d80cd8b8ec45470db0264cce02cae24fc417be43e28ea6874acd67702b9c863b76ac567a8b06b350138b2b49c1c358744a47eec5f657409b20703143a1171dac71c34d3e3f6bfe0b3ef0c76c8cc68f44bd9121842197abe63904ba6d20aab952d7f3748332e0bf9c6071133f498e0989681e8d4eab01d407b7be00b315cc19ac3e908a812b7a53ab3a361e5888130e440d3a854dff9279e210111e9498a7eaa0201377112afd35c0acd840f2af7065b75c3179391225de81df1ba047c8fe6e1dc7b9c20ba5185bcdcc739d23f33413bf0eb44435e140138047886ca3bf860a31eea734103737090150c9ab3a201488ba54cbc26a8a0e9b70cc0a3894700453683b91e88385c9fdf8916658c9deb8e7c18195fafbcebe8a3eeb27ec4b71b4f03f681df55b7995eeec1b6f31ffd21723cd78d8f02a7cba1311ecbb7f42cec8e009696ccecb6f87c97d79bf99005d9993d76f9163b08e4396d623b105326c8d50c37517531ed7f66a5cfcc913597801a6bea27360d3111b73ff4eb78174bb33060f87c6aa586db30a28e8abd8dbb876290fe66410121187e6896970e20012791ec096fd6e239f8c92d70db9fd47750375f5bc5cf6bf52d79777788be465197b7e27bea05c6b659876a23e66df65ab11ee9cbc897bb2665f0875930f54229e0f26c56cc10a8ef099262ce5e54efb8f19100722edb90742ded4002983f56b0a7cdd8e4b83a886b3396236f957512f16de3caaafa15a919eea092cf89665367ad8e102c97d4ce5b168634b87d3fe86a0459f56f643a0a59de3ca98eb62aa05fee981a8207a2943409104f3072b1823382165b97675e3de53e1c856e589f03dc9af8256b6b314c849021a4e027d8169c39fe75994b06a189209e23b1789e349afa88782008de4ab5ccdaa705d1f6d9d10d4342860e226ec6ae9d4f25651dd717ac865eb829ec9a8d8e532c2de8568e2d0d335be60a04a5fc8c5eefd0f4e86c7e406f1828f32316056164efc7579c622eb31aca2d08b1f62eca06e8e15b9dd87f1a014e633113f00aebf76d2a1d425a69193ec0aad550c3d057c151e4e0ed4fcd71a714ae9d4db71e949b0231a283fd417bbbf48c9709f14e1b63a70b1a9b8cf91a6fa67d819678f1c71d142693b8fd20f49a07a223bfd18ce26f7e70986c6a1be085460c1ea5f62f73ba4912c3f145dacde9be4989d4cba2b58614512bace2ecaec6989fcdcfbb596a57732c9cfad6f7c62f9200a03f88c6db8d3fb276a11bf15656968c2227707f02e8aecdc772f88f7000de5219c1dfce600eeb145d297b5a6db007445395b82aa6fb47bafb7e848e7cd1d96fd245be866eae05bf319c50d5584c04aa4547ee421f833141a7bdce16200ee5829a1bfb44efb519642eab81b80ecf5386b07dde7d89e36e856355b095dcc8a5c4c945277b3fc90f12ee8376865a0ca02f15f0d89129e0d0868072f764aedc878b07548a7ba890bed32f967e483ec6c34eb71c0d82a9bd3558ee315386a543d603a0a4ccc02196af1836bbdfd09460b226064ae4e5958a7d12d9bf59764ce12a68bee8c01383b2e2b17087b018e83f2246e422294f035331007e680c3d9ed68fd67bd813fea82b33aca47568de634551f7043619c924b39e53cdc72d2a0a10d621c632a0d38f6a8d2821bfedf3b8e01c0b073624892f45ad2631056ec1f18a048616527f0c63a494ded14b1eebdcdde06121f078c22421cdb8060fb9fa46d12998c1f8178b85369d6ecf61118665b94f49abe93e95fedcd29f0efc372351a086d853f27d836bc4ffe329fc445d1b220799d5959cb0c16ff1dc50f310af5d75ecef2db7ede1fad50e76d4f77098faa45add0f296cdfc231c40b6e7fdeef953afd5c0c0cf6d5c73c16af0daf20dd461b2c05468fd33f04a07e2f253de8090353a7b11f07c92a20fd269a9f557f12e1780f6c6196dad342ab87e6f443e2f4455b118efe6791a26530e7255861c7eb4586d85fe1c12e46834f0b695e8f974e39e7c6ae203247feb8b86e4c9c28e46d85008c07d87e8558da4c2793a64e9c1897fea261bc6e24a71ba844cf42631c3652670c7d9a75a74b4817e4d3a55c217eb471014108df078d5c96d13513eab24aa653fb3fb5a0cedb192f34098d7b1159ec8c057df46e91186ceca919209090652835536d0c22ba17039bf10a5712c982f60e9848c09d7b70b88f87fbaa9c3bf0181fc65a5a96485d2381933b0f3f7e7e5be84d138f296b31b0156266957956455386472d4a1a43a0110f71db5efeaf0504e52a7bcc91505153c80341b23887c1be995210f8e5b0e5b645e0a98607125ba8f5fb0fcc558de12fc2780ca3a63f51208804ec0c8bce4c112ebea1d1132207ca910559c4c507fb111ab71e1df8ff10aefb45ac2cb3eeb1914f17d1fac843599fe39c644f229b383cddfe1044d0be395762eeeaddcc0ea69be809c88f1b072476880db27f4cb7ce5939fec3109bb3ea30b737325e349cc9ea224b5b50739a0a991f2bc09088da7179a814f0f15ca465595b656126e6eb3a4f99d5d473a478f75412491344209a05e5ca068495443b22b048671b173c4b759d58a57700b12fdc351e04770287be3ffc4f3b6667cb4fff3f55d4992b791988960181274fb7a7e9cba37d708c5367bba01d960f8f733165fffce00167186f379953597409c70e6253e73d2b6e4a002aeaa7226026a61772dd0ad3e97ec81d2bef243cf02567847053954a62c77ebdc655e407a6c9a3c426b107749be3a5ff98a364d9326a0027de1c7c1dd4f70fe3a88430aa89293fc1532d07296ddc08b9a4575de77c501d8771933b7b56cd6d4a02468839824e954e3657724d3e295e95e79165c312f4106094adf45fb4e507d23340fef52f27937026417d1a2f403d379352f6e7bd652f96b24a12c40df5a1dfb654053724c146d970b9a9edb13b53bd717acb959431e0285ad03043648b06359db00546fc6d13ebdbcdc26bd95e41572ce9ff9f2e9d0414d652d36d931bfbee41e1aca2b990ca44520b94952f9cb6817f174c4dc606ac1acb03dbe172584dbccc9766ea3c5897eb6e01fc8b3f40e1c5579edfd90b95a5f4730b4ce3963cb8e839883108cacd14f8d0e3d0526589910d5dc63616032ee9d21d4b01deaf9085295ff2693847eaaa0284c0375dbd207bf09baa1bfbe3979c9832dbe5581ccab550813650a3c90904b9493e28a533150c1c0a92f312ecd58484a4c1a8556502d46402987cb1cff30281972896c8e16be60b07a48a85d0a28c9685636440abdf67d38fcff32b3c396b5094f047f09b596c391cd6e1fbb6c04513c2fff49165788e0dd5aaabe9b99977a55a393c5bdb42f632cb3103ffe29e8a0a29935baa33ce739354f1f7f1ea09cab8c44fa3d66ead4c4d39a2aa3113abaced2d346308d0c5ef2f8270425b5ca0dd2394f67f989cc747b2e301c3830fcbbca9c5b1264d00bbbb4cceb949df8f9915368c9667231503b04fa4e6fdb9c97c5c74306c3fd9a3987d854c721b865b17493921b40c1ba875d3a87b9e6d933bf4a57011aeb31d609088d3b33fc0763b0c725b576642ddc00de50ccf4c7f3015b5eb1292d704a7c1b3e8b109023b1ba9fca1dd5652df0115f1fb69ab2ae03623d578929b187bd67322773474b051060def029e4c9554a11f9636509c8e97eca823b51d2932bad805991f9dea178a890e754e5e340adc9d59a1725d40981942e654a1802a3f2c4320b87120469e4c45e51ad8379a2bc29b2fe502f336c222b75799254103bd6fdc0fe5769cfcbb95ad1f9b4557731fbe03c50f53d249d37bf897a1a696b2f6730f66c6fdb3b48a7570072335806d396d392e5ce2647612763c36728b55bca81eb3613a133bc6cd0930c4659ef11acf77c632ce095ba0733854fb06905c39b76ea3ee1e9beedcb227ffe2c03ac6b6b1eeebcbc3e222bdff8f91be5624b13243c2c58fee0f45222675ffccabee12fe678a0c4c8c17bc30516067ec9ca33166604634138f791ee032be1a5ce703a09a137ee99e71337b80ae0a0ddb8b89c5c97294788dafcbe7964cf08067e37d9f4d2969786bc0e83a45b11ae4e13155f65ad988a6ec10a65c200ecc311b8c845c2ad3de9e031378eb86ab65c168fbaf6d4924a6246a6968edf8356bf35f870a7f1bb2834167260d13373bb64af550d13c8c5282b52034bf4f70670f0225cbcf26cc07b4b30947e55e8bdd537b5950ef158345345230ebe2561437733f70af2843900485f60e15a38599197199329612138d78e62c1390f790a1432bca322dc9cb275a1232c8ce0d89f2145ac425ea0cbfc2a6635c6498829d1d60449f133a4670d2847090030773e29d6610b1120f388ead3d648e373f2a6501b8e563b8063231034604aec3409c501d96ae3a63d7782476aeccf055891649383f009115b4495376a41f9009f217fe374150002858b5c89e62bd4d31a4aac55b42ed96da9834fb0577571174e7664718377e4ec614364534d05eae533079c3c40a8a25c3f6e8f977d7fcfe66dc6b8266db72a69bafb8bba85b010af596aefe538b98cb25a6c9cda8c90a71c830ffabceaf49798bb963df91b933b8e059dbb9e3bab69be2224c5ae2848e2c1882e6e310473bc97b68a2000419c379a582ec514ae4d91fe074eaaee195f54b717082d4537d04fb50485b85326611c8fc442e1426702832ae0cdd54dd048d8425f0446b4c7488763ae75c63e7e54dd04be1629a0f696c22145d57c111fa6583133851b159d0e1171acfea1a4b68441f96b6f7c6a28b004341d8e29626a0e2c90ad7f4c8f55cbfd442fa2adcf0753d171d389263e55a212556fdd4d87739ae8e86254b9b0639a54f9875d20c6e3c01c11bb73a3e1d912274e6870d79204561018b309cdb7b20ea4161012b7861327d7f65132dc067adc29bec37895558a95e0b3eafab9bc87d2caf5901d8881009ae09cea72bd00e956837c56ce44c2b5bdd38bb3e5fce31f6fd0a0c5b3b3f1a83d1dfb5ec8d36512c13468e2cfdd1783701cf4a9334cb97ef2e0660a9ed38c59ea445436d1e5f911881139dd1f9012fa595210b089053a84ab3fa54182c50a616ff9976a247e422980fc41636870c36ad2e0189dd7cd4300b17360879bc0a02596c9b1c694c466585c1f839ef142e81d70659331dd794f1405fbb4d5e3561d0ec3d58834746f136330338a6731695f2f167cf6245cb209ee586eb373539907d1e725f16cbcfdb261ea9a0c64b68023b235c075e4fbebbaa0c7f9bf7a0f9cad5fdc5e92a7b1de6ae0e66118c45b6b50123497eb372fcc9af808fa823cceef615f37352b44dac7d9f203ec5dcf89c715f6905f8b532ed583d6d27f6ca630a5e957e7d6eba5afa4a6026d9b03198f2452c5679cc5535b1d2bcd3e2d44ede01dcc034aa9173f708282171a0545ad94bdefe9e371cf5682b8a2a11df89edbf8b329dca7f71168ee7966900095400b711c3596c86271eff851ecab5abf227385e85b60202b998371e77acb0180963cd14dea8343c3d98ef6e92c7827092159618bd89669338be6fdb55968f43d2ac28dac56cb17c08fe137697d9f922179de1913079c7cc94480f97a2ab282ebac82cc4f62d22ab39b6b3d9b3c5ff996a5b923f1a1719aaf896b9e82c723bf63db22b692ee6a4adc3f0ebde4f283df20852745360131cc351ccf1cf93966e1f5b1878d142dc50bac18cb7e50c910d2966a01d10676e18f9cebb873048a09605cfe801cc4e537b192723417b09e2678d9ac19dab09b1581cf4a5bd61b545bf34e85df05cc2bc350c8e9843fdd222a9b1e26338390cc8d05132c22d0cbc2580cd95405b3d90de61c27b3d27be310b05e224ca92bd47d14bcf9f9ba8805b1daa5ae8a75313b4e8331e9072688acd6163a07e076ff371fa08d4d41f52db86d81abcaaa603255b3d3c46b1ed29a9a2a55c572cbeb2f39a0e91e2dae38b5b89dfaa6e9ddbe5469b487001697ae199d3ccc502934f37e482281bf89ed2bd9e7d235d4c7c8b5182e86efc30e2e6d4f7643ec3d3803ab14010725e97fcc98498cd72a2bdab4998cb9db585abf0ed1e761e816aeddb973d5618541566d7f4800883a6cbb7aa6d3a617dfb0366956fd971a6cc4108e52a212f8156e4d0bbb7425e0281bca981fd5332a7bdf08b862b21cbde357ec7e2fa51313e4125efe0b688170471a94985c0826551969c3082618b6a8f30456da69fe7576afa578c58b190befc3a3c37c19ea2dd49fc4b41e2f78722fedbc41d9708283b014b71841c105e040046a557c040d701c5a6ccf212075009164d32d9cd64cab5ee284f2f51f9c383b58a4c91cb31ab55b0d3483c905461df1a0faf4169a1508faf4829c3ba4aa81172fbb6ec925a926a676f8efb697efde46b323d59aabebe83e9df6b6cf6255a30145f71b407893e301f21522cb546aa174ec56d8a6cc701d4a8e780c809dd63973550eb6e70e57bb808f84467fdb036444027a2e07d048614221409579f7a1b0dd7d3575b6bd94ce2077abb345a8b98d44152c1cf0962463ddd3df13cdcb3c9864aca47b6862241f9e30e7d30fcbb57772510d43a16768fcd9fda3a6526f154a73cf8ea2cf87df20b73b197a17c461585b8901baaa133499924e6fa5e6fbfc940de00f0befcf28e9be893f7aaf1de69227a6987e178add681fdfc2f4c9a56cba8cbb08055cdcd841839cfa4488b8dd6db367dfc2af96500fe96872e2f93d2085691d7f5005ccc8a922202be68b32a01a148348eb6c12b65f0bb30f9cf0e1f2179b00b8a1f2e81c8edb47ab1b423d1127a6649b80302df7395ad7aa05009160ac96b4f7462f9e9bd8e3ba550025671598ebad36f8fb57d3fbf61429f5fb458d43d26f599978216f99f210aacd4a40b872264707fa613250e77003252954ebc03366001469771d7ffc72b66c1143265e812e7187828ea59bf0405590a70bb2341a7e34ad05d5080d39b00daf30fbe9d1728391df5b366db81436b562f716e187ab26bf8c63ebd026bb8b41f410c0f909b8710831370b0382e9e1384d3ae1c2cc4cd1d4e000a78e454502038815ed756c6830ee5dca46e570562b2655968c3b7313a6320fbee600c08b8c5b3d5004772fa8231296c2b2072b687b3f61b8e1706a06238ef309244babe581de6b9264e8863a6ed94dbb8b7412cac4252c698e0859f00968cdbc49ed5b06648185d58c55328f54816157b31fac4c43ca9b022b6f8cf184346fa4ef74b1b8b9df09583c6bdeeef53f1c61c033012a8c30df7efc8980b9f365826c2de8550e0204a738fe5e94b2ec16a1c0590237743b07807882f914c0a7640deee38da910823f96deccac0ccc6cb4de3fbf6dcea85f935bb5331fd7e8ae39740a0618296518bbff580cb1fc0b68386cb9e00b846905a5e28765a5f92bfd1f3bbaa4c77fe92ecf17a87a397f4d4d87c742116dd1548e55917283a70e8cabf2ef6c82bc933e7dd918b478eb97e206e40535b773081c865820fab0ac030455bbf6a02ca6c16c9bd6d48e83d731738e76016caf08bd6e70e4fe35c80b62fb7f166ee8a977779b1952f906fd806a5cb9e9ba32d5cee646f0e1246f93878ef4195dd2d46f1a205269404bd89a6872e000b18ba0f0a928243876f6e00e03f59202a77817d9161267ed0bee02990af48642587e5dca4a1e6421b72fbb4275384babb554cbedb731f14b1b0ac80f107d4c23795ae43611d42813e45f2e0140ba3404b64720192acf95ef823988c62b6ab455affc55fdc7db216022aef33dc67e86a7f32400314ccd0efdfce3f7861c028b1cf77beccec9ce0386f0a5ab7b42a6ef7b54c016d9030306fe7d769c85e9d74d206dd4136d5432d455faaa577d4dd00351ac7a24dff41e87d0fa415a7dbf8a84b958fb930303161b3cc140eae4e99d99cb63c926379504a93b95dade51139e483ccec316dbf4819ab9dfc0d24a4b8ce3bb7ea173bba5552fb1a39cc2ab402123d24860c07f793010f9c52019fb12935ab638c8cbf39974076649344252271595b46316318d04c46904776360d5e0a53a9335e5dc34f60ab73412f829b774abb020a5bbde8a3ae0b9fcdf4e678c6f5657e34d8b7e14801762c61513e8e8fd7a4efbd86a45afe52653e449c1205e08b94391c6d278f8b7b4dbdb2148bc668357d475f6cf44e18d0ddc7d4776d4e122a98ea218aaa48b7444df20457f7fb7ad837838b1705d23d5fbc7b12be3bd17834b652fe08133a4b6b7a410dde82fe5b6ebfa5ed92bf6d6e4e76d7248ab4c8716a9afc5f172b7452dd45defa46443d19c592edc550e04e87f2f4553c2ce209e74e4270f13d5f57f7ff0a227b0fef64da988d0791f1a269b979009e4435f8e1c093c80047e1abbd53e7b23756c031484d170ee278f2122b751762bddba3731cb81be46afd5651d0d0394da1efb9c971080a2f99a0a720ab2e78a35cfedc78166c61cf9adb14db3137456b7b361e21c4e0d4e4eb721468fd180dd043754e5d17a069bc9a2f859e782770dd449f8225f90259c630e18b7181bd3494bc95bc163577da7956a41228b378a69a392701f5ad202eadb92a415d9d9d92c89987ab6fa8e248b24a410dbd6f4e12e48ee695f921a5d5bf94e9e2f36fb04f3caad590782d860d7d930a4a44642298b60dda76d8c43ae1695fef4feb7e3795ade7026ba98fb3d8e217b5602225c952711326f407126f56a5e98069cbdb2ea214434a47480fdebe1080c65a63239d52fe35b77a4380b4d7123e564f09369eb2b76b40eb94fd42a6f515282829fc250d7d585ee3ee7568d662adbbdfc0a3ab9531008fd8d17326c39b66ffd93d9551d5cb1852fcf89a1df19424f3c07155e14e96dcc9fc879c0adba65b25dfe7d8178c22b8b134251ef390485081a4febaaf3a445b9e48caf3658c0895a674a0921644bf481ade3515cea3248d095040c70ac5e1244994831695ac8bf390180f133cb500da7fd61bc0862e6321eef935337d0235914b15a4aa029a511e765b501815511b899df767ef9f929eba51a56349b99a94a8b5b565e951aec15cad15907e989c75ea23a4988693f549eb21991501000000eccf898e1c4fdbac4101d4d7f91cc6b058a94354b2b802ffcbb7f67f12a32d0911a195dddd3b0a073507ad07a6afaf4954e9eb6f8922a1c0af1f9228d1d72749d468887e3fc57397832938b8c3bb3f8220102a527006dccfa1e0f3a2e0b29fc21191bc85dc850c063190410341cbf3f9b6c79bc694b41b6d745034fafaa068a4d2aae8412014350a799043802f8a4af1f4419889ad4a91824f10480ea1c921b490dea02e2ead9a1acd20201cf38bd08bd721147ad5d4288770cc070847cf00e10816201c1f877014fb187a1120f4aa118e2ba2999a025d6e10d920a2216ad514a80ac73c00018423287acd08c7ecad7c17bd56f02c24c5f3102ad25791c23517aedda022fd0070ed858af401c03514d760a8487fe45253608865e26b08473046387a2da1896709592a183a567c8a70f4521e4538822afe148e9fe2c3701447c296c8a8e552539f8bc965e44b2ea470043dd3eb70cca507c3d123bd281c410f1c85a337fa957004c1574d7933a3543882a8107c7daf8577345347332f462e6898a1054825c462d3af15e1e88da08a707cb1e34f118ea24ac78f221c55faa85f2b1dff291c57faa85f22ca89139e63340ba127fa263c2b4145fa1dae9570ed45a67c2e6138f2b9887c2e2fd3abf422bd5a0fb65ed4fa513882d79ba95af885631ebd8e5f8733bd8623d8b1a7712ea5a885b77e05a6093eaae81fcf26f9af07456d210f54c8d7fa70b4d156ddab35154242859084d4072ad29797fc406cf4fb1aa661541cf951fa487d33f544ab8ad145af3fc6e8f547d9fa58f5444511fda21f419f1f457afd4fec35fb1a8e3b481767b986e9d70d3cfb366820df4c4d8133955553606b247c91d0c4351794b8c60212d754c0731252a42fe2790b52a43fe2b90b52048314e97b78168314e97f3c93418af437d7402045fae00cf7f4c156a52fb77046fb1a2ec0cbc8e0492aeebd611b6823183518dc0742515cc88374e91745e5a7f8b355395cf16aaeb966e9bad24571501818fc248e13d179dfcbaf9dd692ba1b0465b16eedd8729ff1e7bb6bdcc77f4bf776ee0da90eba5ae1cb293679598e8b67e88c9d73ce8945b6ca7ef9071c1383bf64eaaeb5a659a788fcee9340c7b56a4fb8625bed0809a77d39f3ac6b74c39dabfa5aae6af7d28be71e2dd0ab96815eef94a2dd9ecbd766776ea19d759298d052b27cf66e2e62b470a48bfb38ed207e0304fa3cffe90ff11ba127c1cf08853b3e3eb9fc1cf7f73beee3777edc767cefbdf6e3f562bb9fd39f799ef37c5a6b1f9e0f07c7f39ffeef4b9e5052f1fbadf5f75bb57728d31f75e9fdf8b7cef6def6d9c61bde1e3f97abbd5ab6e12c6b9f6178f7f1ce6172e1bc7334674885c81cbda1227dfaf8b9cff8efe7d77877030f3f97b57b33e65b65a768df500387b4c7a52ddaca5ac61fc7ddc4732050fcd0583dd12135144661f5864bf5e1e505074c85a93fcc5d63284791c8a1391408ddf445395efba7bced4789532f9747172b28cf8f3152a11fa50bf4a3cc01e1936cf9bcfc149265c44d9e6bd63b8cb386e15d6c62abee05ed1b648d195a1fd8e2e0587c2d0e1818fb434c8ccd3163672ccbded4d8955df51e77dbd6f5016ffbf2627be5f646b6ad0bb5bc2a91771d82b5db657972da3d2e826c89259698e13d373a41a76f51d0e9ef1474fa7a059dfed7824edfc3a51447ed0531e8f43d7e8304de0c295b8c5a0d3a7d296918b59a4e6b0d3c49454e54bb28c4eb0b0453596dd7d49c9c2a64d718ad314de33909c9826a4172418af4bb2f8ca1d3cf962841a7ffe172b2d8bcdfeaeae335c70c7dcdab8e15fdcd6b102cfa1d5e5b1ca7a6dedcd46d5757e5b8961415f2bc64d95ab4979c0489fc8ae6420fafd2c369e7a6f6f0d93f2ea5a83ffdf5379752fc42494579dadfe152daaef704fafefa9bc6e50e67b786d737ad75caca8525f566cb6526a22e719f737299cb6feddf3ceda45b75a9d5b5da49ef9d3a739b9f9bda56d9fc9cb4977653d3e45669db6bf9f16bf9b7907bfcdae7979d7b94ade2c2152f73f9f70db2e7d0fec09a755957ce5f92dc966cd505f70db28716099b63ebae6133dce12fa934f0eafdb96da09d02f38456f92ee58e1df65fa35628f46ad5947e792dcc3dfedf2a6cfbe426c639888ed5cc6be519366ad59476c3358e706e9d41e6b45f6bc37b339f251867d504a49c4e1b539d909cd06662a8b81055bc09cdb00c2375f939084dd9988bee47159d1f4dbc1f453c50ef63867920d8f9ef4431b4311bcbe1cd13285a525409acc17b2153aa86e2ba1f45ba3c9129bbb1dc16fbf852db359e83bc18734c5581d878ed365653390979a2df854e3f8ba1d30781e51966374eefe539099942dff29c85c922488e757a1ab310253afd4e73e9f4b3f6d2e96758183cfc1bcffa4411b59c2df8479c99ba7c3b5be6e49506b13058a7b44f9339ad0fbc5a3f50770ddaf3a43df0ac7dd9179db276b88a272d294aa44b9c0c932934dc09053769cd616d0eaf3ed7426b0f34d265ee796ada67eef35b3ea5a8fdb66bd8be9fe3a4a5ddf63268c55d5294a5a81d8e363a2753b46dabb8dbf1152b8e64c15febb370752ec302f524a3a5b3f66ce5327ef92792654e6969c76d9f76abb64d6f5bbd733e97b1766dc55b96efaed37ea7cbdfb265bf9eaf31f7a34a7e12fc8c1dda8f2b9d970a7d62b36587a1d714b750ca943e414f4fa0b3eddf6d03ed9ae31e665e93851ad6b4f7ba36af7d7ce7738f399cf175c178dbcfacd6dcce9b8cc56265dce3adca8f35af7d26141313c373908cb5970e0e4742e8f473def6b56d0355d54060be4c97e9325db46dabec6fdb06aa6bb2c7bca67b8d73bce6e56774af5f356563b365d49a2ce8d331f472804b877aaaf166101b1bb5664b4e42b2b039d4824ca18fc391f671d4babd86d8d6eebb5903b91a061b6d0c8795075e85758ebb7a5619ab37dc21f3315b1c34108ae241c638296336367d4c1c1cfca8d10cd22508c60a2f5100b930e133c4882e7f1241a63eb13902c96249205bea9d3e4c981f7e9c39bafc3903c9b2bf657b94fe71aebe1fa78e2e5928cf14e2236f17bd7c4ec4679f397b1ef822fc2250f4a3e740a39f3b072c1a7d67ab46a3f9038b5c2e170d27bbbc9caead32cbbbe9f4b5970ce3c5f40ca320e87945e4234653e8b4ee606f9a8f7ad0ce7b3cfe190dc14742982ce85f3eea21a9f885e3084787e3c8c70ec7d18f514ea7af8da3d7ebf56ab57e34843cd11f15d1e98fa3233afd911346ad51ab4a2ae2b47f40209ccdc7f8d63ae7fc604c73b03ddf9c437cebe70aa22e3dd6472fdb08a033b230c782c8acada0fa30bc6badbd3cc3eecd1e0f047691fdb900410f13f850c10f1720a1c900c856655b6535c7796c98fddb06a8f7fea6750eb26ddc4ee9cebd7e8ed33c3cee65d04ffbfbfb0be5d6ae0dd96db77022a1cd9c99c36d2f83da9007adbfadd2e18a67b5c516eb4d6fe104f2e2fe7ab850becddfd9aa9cedbc302c6d0d8966c771959fe8ac5cac28b6f213b7f2136c92555e922b0f35bee9ca9fdb35bcca4df48c4b29e5dc35bc5e2727d95b573ed28974760ddb2b37ed1ab9d75979e9fb74e5244fe5e0a7f211a8725128a42b0f8944ba72d068a42bff80a0aedc4322e9cabf52e59ec9a42befec1ab657de919818d195efde713923e33bf273b30326760ddbb9e79e0b4974e5da84095d39f7af2bdf38d7956b61e5b9a4f2ccc444578e4f4e74e5f7c4093d516ce75074e5551475e5f474baf3a2b029449413272625213f75f86fb55534aa13ccd2a5815091ee205d9dfbba559c0d9674759cdff21da4ab5b7ba9900fe76b01e0e556a19e83e1a5bcdc2a19292b64ea65d009782bbef20bd8ae42050cdd2f0cafc67b3d37e220102a52217d7bbc55db077ca042fafcaa036fdeaf7cefa0d2a70e2a95efa0f219f289513104e4642508147993d8dd78abf4f71c96b02dfbc77750e975e7203678abf6470815a9e849fe3384a2ea53f15347ad5cbfeadfe127a6f96708cbd33f7e621f219f51aba6be4f38664f68e2bf5608083dd127e1e3ec243cf4da3a1c6d74fd21d8ec5446810909f8511aa1801f251116f0630d0cf8f145037e4cf96292054df1a3c442afdf002eeb69e419c017c0653d995e013c015cd613e9f3199732a55f27e28fb7e3ac3d50c404942c1facef1f3db77908167ae5c0db3f865e21202f83a2f891d38b846f2a913e9e0ff8f1ccc04f7c0b7ef220debd0a37f910ef3c0b5ef22eb8c84d9ded4fb6555ffd78ed54a361a3535edb7d259cc57778e84db8ca771cf427bcc59fe033bcc85d3c0aa7e13f9eafff7129533ea1dc2a4f9d92769ff7fcf735c5a3fab67e19d4ee0f01a1a8d08ba2464f3fb44f6cd568c4adc904d3301d4e21b4d64fd1db05858ad3872648b8ec29f8f879a1d357893e42284a873ca87c6214b59ffe6708c956edfdf9a8885444e154620eb95f8b7f3d6c20f9ff0f87a2b490d6fa2345a25220ac7a7af123cde9f5690e8a82f195ae56fc4859a91f69102a7ea437293f522164fc485b01f891f60000ea47eaa3d7a73768ea738dd48791e218e90fbdfecc4153df3875cc20c629c4387b8cd3471fe78f7122d15133fc38b1806af1e3d402e8c7c905951f67187a2af4e31c038b1fa9083a0d3f4e2bf4fa13886471314a25fa28853c80a63cac01d0948734ca1f48f4faf3866411bf05e5c7390296921f27109d1fe70b4c7e9c2de875a6e0e4c789827ee2c7598231c6e86254c1f2a308a86f2634f5e15448d7fe6b69fcc3c181a7fdf8b5be1ee1874345fa6109e023807ff1b96aead3c3d10bc311fc6235f5899d42145f6ce56bf96231be580d9f291c57e87b5835056289b04658207d8faba640a41074e970043db19a02c5b4c8131b4038821f989a0ac1d413fd1d8e1e4b38829f564d8558ae9a0ab5ea89e505d042c0bf08677c5c3a7c6235157ab16a4a34534fae9a12d5f81ac27185001f231c5570f89670140bf02b9f98011ec52776803f7d62397c18d2f89170046d789170f46e78134bf5a570cc037812c8258007c311a40f8ad59408a6a6462e95d5bf70f466bc06c56a88d1f25af87c9cfd53fcddaa1de4107df477ab462f778651d1069e2a85e8e7732938f8a2a00884a1c61a7afd173205ced41199cabe9ef4fa27891af9fa2912157efd161275025b75bf942c28befe942891af7f252a5a86dd30040d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d8d46a3d16834b8661ea86a1a61c7a1ac81371f7320db3941f444bdf766cad2fb3589992cc318639cdf568c71fe9a73027ce00c639b22b03823505862bc00c00a8c196840a556bcb54f5f24aac5dba73e501c12c5e26d765383f822225129312e4e2950a0a0a0a0ac6ec0c2c9810200667deda5a63a2ef5546b08b51731c673c13c54601e2a321e39e78f6bb422e715112b4d09cd260537e9a022cbb42a823767cc74838aa617ce4587d2901cab6e26c54d302f27fe84cb0a9f3360f04059e172068a8b0f4e6fadf50c0b37b99486c894facf473923d7e866c41aad66ea8974f227a4308413f211fa51f2897d9030f9b84c62f0e046319265c5d55af3d8bbeb745d27c4cdcdeeba8ed7e97466562c9c24069329264cbcf6a3c6c269995c86c460a72058ac540aa51be9a0228bc4f3bc551fe9a0e20c8a9b5c86c46032c5641221c5907e20e51819b5463a48483c1c5e0c154fa1f7717d7e988830753ceff38c727c738631585eb4843748f033585e049d96afafdd6025fa5163b56e5034f0520cf69229f535ce6804c2e0f881c4c24733f4c5e86694a3eb2cffe4fc48117e5c46b0f1604a3f7a301fd7c785a263b5f260781fcbc3ea75b4a2a2c7b34241d181c247396668e02697d290524ca678be7a3e241209341a0531cac14733a12ed4b97c5c2c9c9af260707af51e0637b94c3826563d49d48b139f3fd87cab2368fd7d7dfd7d9dc9a143c30922cb66e0d345032b3c2af884f1f04071d33b2b1d4178ae7a1222565d7afd4f112b14209b14209b13c8e614b24121b24921b239f105e8f0a5e035f751f057e137549e043f4325dc61df73a128925e1fe56709256cf11ca861782df0cf162fdaaa16e18a675bd81a365431dae2e52ba35da332da38d4eec2bae053a688cf812088624503278991ace0242f99929a010a39dc8ffa0583e307fd637733ca414fd5b4aaa73a6384191b92986441f9fa25d3eae39a19cda080e0e949299eb455294e28fe8462fcb85ebd7a302828618d8a56cf2df8c80c1fc941477450b14ed70c4e3d79305906a32234d122e60a4c22a17ca98492f228a514bc46c5a350f19d584d8d663c971b1485f2f5bd171e28dca4c394c24d41ccd414e19871549478984c22222b22561f14fc93730a3fae998f6b26074d99748cac88589188e168a3a3fc7cac4239c14753cc588b30e1a3187e5ca357490cbdbe899528c247fa629a21cdcc7c88ab7c4633a52ef4fa9f69a5d2194d2bd30aeca3693532433285157dc9562658990ddac3891ea60dca19600858855518b572ce1b4a6bb5f65e8ae7e30ec0a060637ae4bcc180932652d26a2fce34a759db9a1b37c315afc27a05661ff3aac5f51ae6d510e6ee381bce86b3e970de9c365e67d3d974369f27cb341c63da6c18e895ca937db97bd85b856d8ba2645e557be590bc6ab55a3b5a2aadfe498036c3b6680e5a16a7db160e3e9f0fc8d2bcaa27aaaa92a5e69a75d0939d35cf23140a8da808088a442270823c6f341a6d9595b2bebc97cb2b52b537aff22aafb090573a5654a4f4b98dd372765fb270fad64f0988e0f518c26b0540805c61ce6969b6535b5b29a594524ac79ae9cc35c4c430311d31215dbe8c75090381208e19a2c533571064acac547badb5a4202a52ac0626e9407ad5936ac274150e37949c18792b5d2b0b83525ff554ffeddb1999e22426de5625402722a98b0a5764c8b881a2b21c1c242a838214eb86525fa670f4ea7355895e3b12275c382512c77ad2ab04b3d9bf9c248664868a95140341b084839e44c2124c0d2e102772d2ee64da38e152a6a8b801b29e35f05cca53963b02e88c111a885e700f798d49a7848fc4609fcfbb7056a5995028f492a64a302f370dda492ec962fadabde8a5a64c3a9809b755d8d6fc6bbdbbbdf7150141bd77d7e9baae848fe4d453fd113ee29229f533286439df8fd9eb8645c24930982d66bb201d0cd47924319e0ed6c14c30bcae23f2a6ac5da703d3b1084727e1a4ce0bc90ff454454292182ad60ed66b07eb82d054094709a62bc190c4008124662447b298f697606aea763f7a707a7d8e248624c6c4711d189e088728e6935eed300c152b9d7352110e2a56910fa2172ad68c44cf3f723e8860442ff5347659aca648623c98aefdd8c14abc64829748626aaa6e6f49623a92b00433623391cc623b8a5e68d05e82297db9c36f32a9b2b17652388e14411a92457cac3efac8f9506295724692184bad91237afd8ee825f791244677b0d24dafbf95604a38221c2afa39c68a0cfeea61f6606d80274a705c47c254416c9855d209e22929c85a1024a2828ad24435a90b1195a7b456ca7750e9739a7874d25a5fba38c6a1f6d146b7d9184345649b92e6bc6dc8b20627c771d2536dba725eef54a6ac1408c0124b2cd16def74b237870841ed64210a5123f7b1873e432b53bc6b29b5f66ba574ee60124eea7d54409e0f88762953ae4c9181f7f180b64a24ffc00b4d49b52a14a2548b4494827404924aa64a4dd3a475a38d9eb58e1e46683beb104b597588b5d6f3807863eef4873766189ea594ae280d35958187cbe0d1505e53d68d36bac459d6364e8bb6a8138944a28e2712893ecfe75a9188ce914e52f14e1ea394523a87cc21d4924008807d7aa0e519b63d67670665b866525a2e7374d65a7be635dd5bba71a01dbfa7571ebafd644acd6887ebe46acef80d01bad5e9dbba5fdb34ee6b1ab769add332645c9634153afdababa0b1a0b5a0b9d0e993bed0e977c2d0290da35e6296e1d22ed23ea2cf5b053ea7c98d76a3dac170b4d13f3f7f249a372dd5a7a6b258d5070e8e1e42b21882d444e823e82534410a9385b669d89e853ca04ad0213674c80d171b171f5e5e6a0c0c8c8e555d6936ab1973a85097af4916ede56f535acd370749f1fb7ef31102dfcf70dca16f4f8adff71d2e25fd386db3599594c65c4913bc69d9cdd5e27eeb7715e875db30d02bc675ab36cc01d15a5e3be640463bbe5ae399a63f6f95f69c9c94767bbfdc2aa9fdfe19014dfbad95b4ab698f770d2db43aa86857abec6bf6b7bb8197fd735929cb4afb06d9b3cf768d2cb44158161529bd17d73b737671b5391e8b9593c3aa29eb79f3457dda568feb523be635f92f0f3d564d6924bc96fee1dd04d131ce18bc35e3f3e29993735a7a886ee9966ee9966ee91e349573b26ee9966ee9966ee956ceb1b19c636339e7d858cec13c724e4ecec9b95ca7e52de7d413fd6a2bc79372dd43e35c1bd49c5353ba889c233a7d9d7374cbdaab33ae750faed33ebafed1e9679dd3e9cacb3a9db9526a4373cedcaaa95b370ad94f243c2b44ebc6e646b7648a0e30c659966518675407decc54349c6d36f39cb52da35ae3590f356de372cd3620ded7366969c7bdc6695b956959ad3826ae566bcbb6adca64e06d33def69cd6f8f5bd4f8df0aedc1ab73de335f9b79cd958c6f664ab70cea145f0acb681ed4d634b81beba4d83ebba55b92cd31aaf2772d6b6ec84a66d5c964fecdd75b26d9b73ce79e79c77cefbf53e77ef5569bc267fe55cd61aa7fddabb6d8fb2555bb8e279bd5a21f4446d2ce76424684af7e088907aab6ea85b7bdbb6edb32ccb1e65ab323d65cab6bb296957b7eaa2745dc7dbbbc358cb426ce3b9244bf69885317eb1e674169f39a7080f549972bfa33b2e67e0785a7fb37e80769d0cffbc2195e89977efcdbe728cf3df7bf3cba07ce7607b9665d264ab708859de7cee242c91959a6c55f69c0a8925b8916c15c624293152b65fb155559bd9cf971b37b155189b58715764165b85438d73a03395add23814b5699c5b6bae1bd738bab5f5a0229d3b736e06dd62df9d7179b2557b9fc88cabec1af7398e6b61d282caa0ba0745f100ea96c6b13c3fcf610fa006764d2573dd8306ed38d42d8c8356a7b7a46406d00c9b5b13131a340d3be74be5e9be8b9bfdac27b60ae317bbc60ded0b1b3e3b0a5f29de47ed1ab667cfa5680f29f7536c5536dae8249f18ce13a7c5e12c0365928ec31a85ec6518bba0c70b1603eb01cb304e42661f507882e7841ca2289a50b18ab9ea1dd6fb2212f5e1bf1f922da011eaf3f7378902fdfd2a51a1bfdfc91630932d229345fd3bfa51eba14ca93f5b7eb2a862cfef51b109deec79ca53e741b34504678b8ac94264b6a88492052553668b8bc9a2bee83d50efc0defd281cad063a3f6f286aafbd480c8014eb83388d29d6ff700348b1be872f00a562fbfa2ab3454a16dcd777315be464a17f7b2f1c29f79d4aaff7573a3fdefe75ba70eca177dff915ef47dbbf70bc3fae78a10c471b5746ed64df7c9c7dcb214823c8237a7d4d513c88ddcbf4de1afc12873d883376dc9007b1dbf0f5652e32dfdcdcfc08c112b66ddb7bcfd48d2cc31eee743adfe9ecd8b1c3b385172c06f60386051813b0908575881560d85a89849aca9a96efb5299cc5b8b2ac6959cb2bd7a5691b8e796ec3356ae8a202d16d558d5793dd0c635ca50a1108ef737d1ee9f1aefee86ee7503f204021d1c8fb3af831dd58909191919191919191919191919191919191919191919191919191919191919191d96436994de6d69a3ce79cac4a2da519c6ba67e111d4626b81e8c2cddcaaad036fe462b55afb7d1b24954ca01b38a9f3e02813799eefb31f3fb7f1dea34e9771fbe1b8efcb3e3bfb641fcfe72941240a7533eb3400e2529e3add8ff8743c9717032400e1e28470433e2eb6b7e7f3f97c5ff649c2c7c348f07406227b2ecfe725c1fb90e7435be599d3fbf97dd9c7d50942c598ca4b8228fb4ef7f6b34e6727ed81dae8f08706461821030d844ca3dccfede79c3336da023963e3b946eec0e68c4dc40ce3d9ad080876d931ed615e7bad80b5d9b95a9337edb579f1168ef5460e77d408d4bf3fbfc4653b3bb677622e692ec2569962eb07a84cb1dc9496ce392711f729ae7805b11508a6a4a4a4a444ccb98853ce446846d06c36236c361cc7719a773adcfbf4a77994703e384e6fad7549498988c848e83f4462c2c48360462f18ec24eedd75baae13e2e666775dc7eb743a2525252653064152a9d4a24549d789959e9b9fe77925252520482a9588e81cc1f33ecff77d2525251e4f186ada07040a8944226e5472027bc16041623198c7535252d2e9789ffef486b13881bd60b0dd75f9f47a9d440f8fbd711bf729026403b201d9846c4436221b910dfe697fe2098a4e4e9c3861c594929f9f62f21c08829ab619c1a6e44d3010cceb550282449048a40c3b957ca95452522a41294181c14c4a4a421bf237413222622a91c0912804fa783eafd36dcd6d0199fda8a44a9bcaaa9c2a1a0100000000f316000020100c86c362519686713c7e140012668c54665c3817c89218865110044114648c31840082803186203443320a00a587044ceb69105cf22f5ab962ad4ffb059d455a5e97108ed417e29b5dad11b6ed0effd7a9a2a4f1b9ee9c308cfb474eac23332acdb7e148d395b77f0db6895293689355585972b0e1406e78a2f90d86184bcfc932386ff289638d01f88f077fbc5c40959b0f9eb4c940bc7592088652f57ce45ed1bc2dd4d8afcc03af34a7ecd4d33d8c31bc6bab3e3af20acbd0ef47f57c0d20b998ea39fd20056d888edc21ecbc136a5edb69f2be63f0f350f3a2cf62f5b82a85088a8455413eb18f2f19c8daf376def314add4a6c18cb6f2f9d4b2c2c2415596e021c8b534972777cf0d3c9909e53ddf8917fd1f9e3ec5234e0631e83ddf8bb918a0fdf9e562bf1eacf19ea8db32ec82cf5bb6c192a1ab5160dca8f19ec21c7468970d89015904a3e6efe6d8259f1f065ca7e5aa95d5d10c421b88f8de966b13eb4f6cb2c57ce4a11f150ac8fe6406cbd7027e4ee19622a3db173d88d02e94b2e0c78f01b6b47f9e9984da6ad37c265fe7210715626facc038c7fd0cbd5daf40710c6e16fda9fc18b79d2993900a215459fd0643b290b5ad509815015d130b52c92f24615493a130ce91f6bca04d073886482e575244a083b6b83350c5ed092c9f031f05f5dacb3174a001685732aa02ecc22da68fb8a7a6a09df05851831680737abf6063cb71b702f21b4b99e2f0df21b266858f248373e2687646e3db0b4d2429d488a2e7f82f1c4232a5a6fd15fdd352229fd5d80e3ce256f4e9549be97ec058b72e74d5e8ab64c4fc2b16d9401a7b5dabef4a64578d5eeacda98e1a886479d0eb68c46f340bb50f1efefd5f79f346ff7fcab3b04d0cd88f18c3ef59ff2865ca5fba786afe21f834419de4e22a852dc1dccd0ac127388d1edba565b3e9b130e32e87ffb57d0e01ecb36974346d2aea59951622a13e10365e45821952ca35637d345d080feca82937bef94d92fe8cfd18627f5b8ff7f9e5b08a09020fbf7e267dacef3fe82ed74e1076f7ccbb721f7f99bb0499496fcb920a1d4effe0b4770754c09b577ed2b481a4867dff876ee2eb287170cfe6c2b054ebc2a1992c25e3e91e0f38e1927aad83b3a504709d6ab8409ce1cd4baa155d4955a1740a41e0f788716af56aa3bf17e93d60358912f77ded64e007923516162a898a662d98ec06dd93c27d5fba814f730a11d57f318276144a32b25b0b224046bd711cc1f62efabbee52bd99d9dad484d285d0e045ff183889a174196557947fc5c4f7c6bfcf304a3e58af589c517ab9c2a4770e3db027cf2eb1bc038fde02e7f171bd1acfbff621944e94fade4c2f118c733a261a5d135146a5233788f5b97ae71cb3aa55d44697a915dac5d61120b27c99075ee9bf8862b67155d12bdd2e05253b01630fe6c95d3a073d04e3fb3f0b92913745f347de53c6bbf4a1b2183c43076f5986e9f9cb5b11d109bf1c029bf09c7ef12afc19f83c13706e98fe2e2d9f0e832bb2cda18b29f8de3a793fe9980e1cd1d1e2be5fad8ce0261f23866bcf0a22a3c075f5946b4a71ddac18044e18c8916f2f250edd94c2737ee1bdc6c273c876213659a699ac256c0a539e8fca77fff271f5ade1acb98b36293f19c5a2d6d912109765428a4b69364e070b9987b66653f9e92c3c2cdcc973373e2fc24aad0d2da97bbc2e7a1dce4c36c7b114e1400d1fc692bb6cfbc150c89f3132f41e9f34e069c7a93e1716d7869a6db69e259ded437ddfd438531a5a7d3eaf599f8922dfc54401eb7e306155dbffbe75c40c3eb3eb5222df8598dddf1962e808b47c99ea4ffea3fecd7e16d931c7ce773036ee8f47bf2ce0906f4bb13ffd313eedab4ec8f62162926907ba76ce2ac2b6251f938bd6a5dc53ca3539bbc218dcfe0d04108a6441648f40ecfa067c13c71cadf234e81ec1e85d0114dc658ed21f20688dfc8b70d560f0da76d44d7959446362aca78fbb098ecf8b1efc5d6612b88e03608840c863a2c882be33d79f8a9d5c5481cbb2160de69cff3ff1a950b639f93af5cc62ece0b784a79f6d3b67110e202209891ac00a4531d40bdf037664a808fdf10a8550bf2b112f365dffb5d323afb047c600016326363dbccea2c2ee8b785f81227e3081ca64a29f43cceb6609c050b4d4c784e70c87462c49633503ec7704a8ef4eede8656b1c11a90003c181d4d1cf2817faab2ad5228388c8c58cab24f3713cadbeda25df8602c24ff8b7b7abc8f0badb2564e5387a2a1d0b1ff2dd1b160dd22eec03c71ce0269e9e8480eafac1210ddec65783f79b1a97aba6253bd08b045be10d891ddb5bb7d848d62b5c2ae6914b11b33cabe8d942b1e5a81927b2c0b781c10f81e440351e3129cb4282ad3186904e0715eeddd57c3adc11f5c478181359d821731ea6fb05fa909e0ac13017c14f6229b977116c92aa6ae82a56230f1973b87c824f70f45bf68b2fcc09ef817a09adc24647b2ac969b584df11edc3530c393199a0253ac0972e702e4f30f533294ea663752aa4492d11f1ba99bafa2b0c62efe8b9f6168af73b2be60ddd44f25ab432d7ebc277b3b248777e9af33ebf5aa2339bcca73ea8ea3a91491c55ad2bec40ba0811e9525a7db0b8c87edb7484640d26fef8b803c51d91a20c1620441c10c5bad468e31282b0de1fc1f52218e70ef2bc5bd09d88645a93b7c20578050dc22fb30a42e21d24a45a18178c1f8fc262dfee9bdb58db834f14d7b1b88e3da5edeae597959c8ec9b8a2d21a459de7ef510adb4985564baeb48dbdb670c49fbe6a60fab97ac3a7eafad39ae11eb7512729d98d74cbf5bd14555e9cda0ba9a4e1452770d296b8c1f82a262604227dc887127a1f4de86952e8a861d8de846d16c9028f1b96919b099a06580eec0c4edbc6e9a1c1202db87509cb85029d117a9e55d80f5e74ac18a2aee8fe33de2a99a98483ea84dfc560da7a3bfb73c173b43fb8516d7da7786865b7c571ed3b4f91d4e007c87a8f77b3a21e9d28628be3ac214474f5d43d41951642ca3e2af1b157cfc8522647e3bb8998a4f26991bf041329b6e56514b047f591cce4782b63dcb0aa1e0d2472fb780080aa07f8dcfdf8843d815bedde7be15b4505f2f806522fea4bfd0a43efb9ebdd2356232abec7e738dc1b3152ad770290e4f81fe1911bb2556acea7a1a4c23d03f18684afa60b3a3c8e97a0d4b87b6b43af2a665807fea3e33f7aa56a5198490fce0862e247f509c8210cc7ea2236710185d3a7b1fc439d4a990369f1197c8d8fd092675cf8914a7fcb07a5814085acaaca483257ec4f4660db39f3052aa021d86374d324e97b9b25943b749c02ed9a5d7521f8f075c319706ec0b2bd9197ca03b54ffb951d1decb3af6b428311c54208a895c5d260549c7b25e706b154a02cc9123209cc9e7b94379433741f57b750f4a9617d2319f2c34e884024cd891b9d6d0a7502ed3cba51ce1e71ed43019c6832e8da4b2588d6ac9960ed0201e58ab9e61c8884db8233b895f72fd1720cb344c0ae55e947a66ed017720f3cb9c29e9dfcfb92ecd47d5d1ee9fbd9d7525f60a566cec1f4567a63d0bba33cf3e77e60b108a09ca7b8f18bad018163beaef65a24685ccb0c432c517a2e677b13662970931f183bfc3c105b56abe27097bd55e45ab5a1a0b1513039f4eebf783f4d816bb03b2c5ced5c87e90d6828adde398ccd18e390d9e94c581f5fcb98fc7340f757f0222db405471e893f0a531c7cb70dfff8b76352e547028ab4b97747bb9878000aedcedcf32f1768a3c85058c17c46c1018ebfc3efb65e2ac9a556ebac051c36fb7c9f3c6c7518907b5c63323920c0e2d373531946521296d942a2a83a52d48492a31ae7f09e79e585c1e676eac31622063040d082e949228db73dcdc58cc218ba9a076d0b92cbb690cda0cd6fcacc440a389f97a2c10066347004d829dc196857a446709038a49e7cf3a3fcca271b3687be3d2a266d0a6f895c1585ae4c001c856c414b7c17e2bc56074c5774a26c52a2091f98d6e045cba3d425aceca3d5a8c1b76b94778abe326ece9a00dae07ebd51c9ff18d804bb797905eb4f2e27c046e745d847d227a41e533724fe816eeb50b7ec25b20bbf5e4dfcae86c6fefb5b0a307166f63382ba70721e3b221ffde620fe48e125cafaf08851e07101c23ac6803e78428d0599d60f246a6f251bffd0d07270602f7cdfa31d4c68a37e59412d44afcdd9c0fda6f752d189282ae62ae8a653aa3a57ee3740fb6c1f2d49b7ee77bc9243d0643b6c8f90d5807b71e05ce5978a02027130a630a0c99ad097cc4f0eb9af604fb1eaf6bbaca409f3e29effb0e65e22a78e4a00d1e2ab6154c1c1ea2e0798401e444191ff1517ddffc0736fffb342e59f42cff6c6d3b5f20d71143ac1ec0e5edfb7e93af66b6a1045f40e57caf959493793cb125d25305ad789d3ebe9aab0b3691da524e059a52482f850ef4e3f50def4713f79ce49e6acf0603b5efca5657c039be5b5cacafff3ebaa5996c701b8d7e93908db564caca139b62179924db63d9be4b8bfccfe9e6847c000186c2a31d99b208ce7c495265ede632b72acc1b83479928d1d6dcbce1f4aa8c9c3bb6ef612e6fd9e1a222d977cfd12c3f4f36db373fecc3d61f69715540f9ae1f6bd3b1ef076ef2bb3b39afbad8c87e4259d000ea1bc7cbab12b8b78243dfb55e12607f37b16b39db8343a133cb9972e110d16c4726ae66ed618d790ec7d7fdd9a267b59ca030bb8fb25a167d4d0cfc74a2bab95bf7da67ce9eaac38ab05cd1e745d843bc5f914fc19289c97056d061f3a0a0740a092a0d02f667f72edc956e37f001e0c4c0f3f9fb61f1de0f285f78c5e2c8705a9c93306d35d5187e6af05e19735f3f15c51ad5c028398728d0530e67f2fefba16b811883ecb2d153bc371e4e1ef33e9ccf7ba4e23589ed5b903f3a5094dacce2dbdbfe86bade13c3dee7ecd1868a820024b00e385dbef781c77ff3e2171aed4a56601b630efc475e721f3dfc2359a159551ed3f7c06b1601908e9ebe9f720c81a49afe8762220735c80070974d50894308d3f73d84006d3a60fa2c2848f748e6a82ee404e7db4698ce82f264b1ab767f6c9ec3fbf191b4b5610faef3370f3021dd1e92ecf5ef43581b5fefb4366e7ffe7da3cd17fc538ad863a506860f1240a25f47822be6d6d2688042b3812194d95d09b3c6a18bcf60a96c214b96c3e852f964b48fb14ec27e0eda24ddb981e38c5023fc1983a8bbfe059f4fc2dd6baad9a4152b8b69b3c1c808baae488db4c94161871a01ae69d2ca786dbfb120e593cd91349980870933da6c56a2ea948e85a9b0b963bae10a8899d823c5b6737037020201266ec185be902386747a8ccd46deba335161231345cc34c96067538206c1d175649cb3e9d90028f080b6aa1457e41d30c3a98ac2533f7051674c5170314fad5644a1e20865ac48db2bde9b0ecbc9c8b1a21b855b7ced1bb8285524ad401fe07a7061c275a5f6518f1413407fbba49332b6cc6703c9c727c8682ef952c08b9e71a4d72306a17c9f7c09f4d962a87616b107fa40570712751c4bc1c9c16ecdd81aebcf86c2000c2064320e612ca10a24a4c59905512c2a9803f76c3089c2b223f87e91d897d7cd28bc4baf31daf6df00b6e3019de05b9c545b0182e47c0a26a64497b530afcfc670d957c1837f36e6806c0cd62d424930e6369e66127b290b4ab8d86131d146357d1e02e468162c1a95e3c9a4adbbebe4be0b1ac6a8ef5e4e608ed1c632e429a88106a9996c01c7f5b8d607f4d90523865a8e4668bf9fc7e42e1542f8be0a076563839d871be8897887891be868b3161017e2bab0e7f18f5290116f2d9a38ed1c6ba7e4f6f4e7c877c16f60f359206d6a642aef1f219556a1a610b559a783986f7447e8d6e913d07256eea1c7dea8cb7d821b5d17819e2e6d701da417e6f98ddc08ddbabd04b4e29514c34778afeb22e811d3f3093ee35b42b750af5cf211b801ce4d475a5f46237a7bdc859d0dd8a6deb3d0a32a0064aa7ae6b85680d2900598db7324a0c9b2b2965d01525d18111113eb9496eb9b1845187ad1913d1a22a6221a824af82114e296e50b332fc0126ac6126858d85a60407220007500e24f1566d23eccdd4fe2e586295f082ab2b57ecef9cc9f2e30003360020cc8befcde7cc1802e8632395d2ee932f7df35b0d3a4654e1a1e152f20c29532b42d01db4a99670001e8f599932dd592a0984c57c2020abac9fec1027b0b0bfcdf1b0b184b62325a394506260b5c83c833295316a474e3cc027a06a360011af88f9805855de59ba5a9485316489e59009ccac1b197bae7a8398c18e6688039a9055c800c35d25f6a455afc1f0bc451dd6ff17003b6d7be79b220e25bf9c7669ca4b382921cbf23fa225ce48e37315b08c802b7aa2569b9c947f3f19b34ae60c00255d7c477ab6a83baccf6fdb02ca1a5a3257f812938cc09799cc5f84b06a0928d0d0bbc1571c215d9ee5f944a28c159042973167f52fa3f63c536686130aadc40d9c0f26d961f96c4c150e2d779432b984a915804adb09b81815e34cc2a444f9f4c143359d2f09fa4b73a8979d25b145a011774eadd5357838156b0761c69c2e3252a6919ab2589b37bcbc2ab0111fe188133420cb78508a0a6a4141faa005d31c2d5879e0959da81e44c159844c724fbaabdb5fd5d59c23cde4517446cd01ec21d3455108ffe83998c58fe2d83c5365fa3fc3c377fd08462e647396e68bfa628f0281749d830e047cad1d02032539a38b28ba109cd9aca8a2f647aa7e0894f08a099ae9001f1ad4f15da713328b22182b63250e4fa1130a35badbc4cf129d0ba0dc03ebb2a8fbfb53d34820ac665641fc808037a4e072e6c7fd5a1283233cf60a62082ce42235c86854538590bd1d008301cab0d2352e65b8113d4204eb6db30d194672f1cb5ffa4f470974a57a67b7a2c4133b5ed7a3cf0e400383eb0c8c11c686a3ca08bc039954a1a6683a3ce18ccc7a2b2629402003391655552a0fb8bea59dfb5b609fe8a780ac9252c48d7f6b23e2be9778f548796edca19ed2ee636fdcd6332601a38d95674b6bed2a35b78dcd1d9c4a7da22a041cae9e92e130af07c4ca872075c5efa447b9929ca75d3c6ed3f14088e44993186ea8560d3d448c1ba7da99dd434d0ff26985aeade410ceb7dc4e6e022d358bcecc981ec96a1c8e340bda3ee453d73e3b46a739a64cbe7e38c3c4acfab327e44c11df03b8e5c35f75147fd33b4127705065ed0ea6335818a7b6e1b280aa2ef9500fa6509d8b1b576aac0364b71bce85014a4911e9393f1b6510a1b1d009951a00ddd21e8c54d9ad9477e4f18817d0ec4f955657e82daece6f318e9cd750d824ecd8340ab2f038979fabeb42a0ae14284a960b3bd1e4dfc13b466d96198e19f805b09fed1f00b4000543a944ac8ffdc1c4b0af022367ab724706c588077480d50d45d42a4242ca26138be004058897820cce152e560e1128860a253ce3a0eb1339917d01a071b82718295838b692fc001269ad6515d301820ef27a333faff60fefc6a02ee1de5c04909ac5c8483bf1a770953c9091a0a7900acdbc11adb61b4bb4cb03a109070768be6bdf2300d9bbe92cf04ba1ba1ea67c696744fd5a38b51dfc85687cc4c4d10453bd52a5777b7563bbd6e992350bad424b94d2db9d3b0a918976c8bd47194d49b91b40c9af4d3e02226e1043581623a7a8007021f3b849f255113508b7b4543c0ed54650f0113d97fd8042a0b5d5480754d300a4ca0c2fc9edd0a71fc1e133f00566082881a868bcc1edf0fd48e0fc3c15dbf2d88c1a128bf860950c37f9289deba3dde4bb670c37903b2cf25288ad414dd154317cb7144d6f2b68d29c17a3b1c1047511e36aaca01967c1587eba725a4fc980d3cfa0365bea9b470b8f7ca52054a03d977044a7b01202425a8de6870cc262510cce4ba605efa6ade9a02a74e98b014c3a056048e60a6a21280d684a2ef4077250e21372fffc83507d2020ba9ecb9962f94a81d9f57ddc3baa3126c332b28428f4feb137c454aed09c96970e0292a81a246f7e3f49a1908a6b35f82315624b06e48c9930440a7696f32882a2f254724da0a248a49506a6a12cc984ab0729340a86e461e4d022fbfe4de3d4a608449e01a7014da4a25a07ceff98f25e0bc520237f7ce7110286a997aecfd64dfff76f951dee7c08d201e79ffe1e273d8bff1bdc7b430240df0de5157260164c0fb8f632f26090cee13e35b9704b4ecca7bf6d9e16e06531d007cd4d0c555b13eb9d55e3109276f3afa11732c57dc298b98cdf7a2ef718da23dce120f656f89bb206dfc99642c64f8bbca94cb2ed34ac41d4412fb7dab30f9e32a2cf55a74813e9544bf15a9c8ef8d9b0d4636b708fd1f67bf005491265a7db9cd39d07308343f6f25d0b1ab30c3421372b5ff684a163819ab8633edc9a7d41ec502cd2583092c25528ea2bef535d87b8b67a5b01c9148952260b59198f3d0c47e2d825b95c1a77ba7df2356c9f41ab5d5071ffe3bd800c8264ba6802d2ef197009b050cbdb17cf05e91fd8bb96b4b616ff4934ea62ef9d40302aca455eadb7266cb3bae042b882a19729c0246da2a216c9c104be80c99562a272cecb221e1f8c33802ce991cb7498eb22cf2c437cf32640759e11dd295180b85ffce726a2b232c256117254fa379ff34324973b5e61d5e5fb9bcd4bec27b0cb8add04ec81e368525de9afab09ca270533fb3fbfd2efdb8869a66439e8ce602b22c9c3bed55711950979f266761a7b7c80d56a7221e6b5ddb9d15e6d5f0b736089a9b249d1acf7acbf0e23bc2be69f7c57a5f5033e91be17e2a9f7875c09babc794cbc4f5e295a40fcf8616866394b82eca96c82982a47fabe47bd284c7590e799978cffdcdf4ac5a9f0ed5759c28b28d72a66feb8458439ee1fba538f61cfce4cc37c141e87da7d8d519060c6a76372ecebcf37742cd24e24272208bb40d0ce0e6a469cf1b2436113575082d8b49f79b23e1321ca440bc0192fb8f13d6d1527dc2b299e2f5a8d50d57f912d7024317bbee4995aa4c37d06c9f347a5912a041fcab76decc566afa70fa49a9e28ed0d90b91ffe14b942f7ed3019d9937ec900c1bc9c0390bfd0e47866b86345b8a5d51ed84107658e6a8a13b9c5bb38148ec8cc8b5a17b71ee477aefc1f5bfa267b1e43d60a6488d529e5be5cdfd286103f775e6ae3616be1436bae49adff489ca9186ca5f7cc804aa7905f67266f433a4c67a7c7debd06e618b96f80676a4d033748c3a09705bd1311c28849ab0263284ec17c60143972881c48487dd84972b76b24525eb22b35e2eed9ece87130c632fb7d87cb9044736ed71c1a311e92849e4be679c53dc7f04e9a86950a5af34a07abb8c7a4bc8c0d76a0508b7fc71f7aa8430eaa6e0f652c767b02021450517a7155c511a01165cc6105c8f232bd0f4ec34099dca263d70c3ac41b8b00a9370a7979435deaf644760068f0043c47549c46d5511b7c67a848811179ae3a5cb0cafded946129e4e44622767e729b968aa56ee28756d59c442773afdd4151f796e4bceeec305f5292a140a1768d43659188bb088c715dc76ca5cc92f40afb941f2e48095f5af5589f0be3460a2681b68b0342489ba22490c124928d865f53ae73018fd1b59a48b0f4e658748106db49acb19633e4936991952637a44844632d77c4378a12bea8c76b75369516abbe43e89bcb91c34cb20775eaf0362af28f59fa4f5e89ccce09b1cb22939b69dc46eea51933ef4b7496dbc33732d4cd3040b6f492444f7e7f22780c814a222b6f1e42dff23d0f43092a08742ec793dd744588e761d5452d6debbeec53cce481c6a5ca718dab8db08167a78b6560ae1c20c7494f09db9b2ca04454a0000b5e8ddd4c33a3534a7d9ca4a1581da83e925f89f6e1fb403752f4007dc27966e8453cb90ea883c31622c0f542ae11336d027a1af641edce918b80502d04b7475ee366a3753402c797dce37d5e1f2f701f25c6381a9552ceac229d0a815d5f1ce82006e65854cf9a63749a650a63858b42766e4d87cafa6859c1ec3b26fb5699c7201219e966bf41e200cebe145b25af2e165aa47412192b89118d843d450060eb84000be019a9c3dc63ef91d4ffb0cee7e3fa1b788b7c940c0a3cd7d9b10373fae0ca0c74703ed3422c14a6a0a076afbe430d1ab571842c89ca45d038425c01d1a661dd504cd4078554878b95dc233715f19b81ad42ccc144c886f5592203f6155d4a40b8a4004f2361004275981b0bb146db063a5603a90fd812822f72ddf38014f96dc08dc3bc3ef735a8b67168516212a1c95d05d2b79f2d96f65a493be88d931a9e8c3b960142def9096857335b21e2d93b0b48cd26919de4de05560f9a22e098414b52c70ba713a9cd432df86909709eb9f97808cb6fcb6d47205f912b8c13290ea99628056b42e209da0f6d67238022188127d722249a66473a66d86410959cba63b44e4a76ecc0ead14b4c59a3143b6fb145a14bc91c7cec276fe439d4d9c46d724b2016dd81068b82aa20d9683f693908089a490e5bff7619e2e3e8afbd813ee72169d17624df5fae611ecfb04b9aa1b5a0e3d78d4f4444a2839587495d679b54d21e760c9eb71e156526d2effdcf52999f5b6e6c2fb2f3faee0904095860f260234d55999e5291cc3ee19e25bb9110f0be222c41c35d19b33a56add543ea2f64530766e40c588eae6deb02fed2ed3b4ef46afe3af6c42c855db504b443459432802bb24b58d93658a2a150d4c4547f4c77f48e87b08be71cbdd9c2164df19cf8133f11019e8d3543bc684819fcb056fcb48e69814a36b1f5f09db75bf9ebcfbd316cb54e6f3f089f39ba1f659f463800796686ba9ae5a78c54c3a576d8d67620c475df97cb64a759efa74ee41deddbb0421ff5257b8b863576c41991f561e36da2dfa64cbfe17c54a2153c72821d40e840215f036cab624f8ce7a83943c203f55f97f6e19579ebf1cba37ed211921741e0311a9ab87991e22b0c6627ac22d2e1a080805df8a332109150d00861f2d554154e76be3ce7ce843a9a71919dc2b2c17d483f8044778e313eb218b8efbe0274c2665c49dcfe588a58c421139bf0cf70e7d2cb560c039bec0b5644cf35ab0e8376f6b25ee8b227f8baa40063499e8a5a60ae6014542216f9e45237c850b657c4f16f140fbea08631aa9231f53fdb724f2475d9c789a43986a81820d64cbee31cbd880bb917639560d4989644e836c75216ff402e208a4904ec66a9598bfe0c9c8dfa14a5e6b2bed189c970239c0d63fdf60b522e966127859a67e6fc4a3c9a039c300d30880d979e75ab0f6df7ca18a59e0d58ba6978e77c248a325f7dd510a372924413c3d278b663e8eafe3313a99c01684b0ac0553bc731d4c7601f6def54cdbbff423aaf7b8ede9995bdebe56331a4ba5290a6156d03b5c085a453f88a141c118901676d7a15b7fd0a7fe61cfc084052db0ec78adc1bf89bbc5a4bebda798419719b44cec7e64e9a517fc73e580383e8cf6380e08ed0e48e12f04940eda633ace1f6fdd3fae6e76f64b248f2ad832f867a7c262cb3bf62fabd436541a1c242ff0cdc529a32ad63f6cefcb097f5149cf829801b483c8adb5044fb6fff78e6c9516b6ba1ac4895ebb799d4179557b8b8c7bbf2214ba1254c012d5150da5fc75e1180b94568407090aae19b40084809af2e18f7d16527088f7ae76ef6376adbb253b102416c8947f67176a69874e1517dd6a5b1bd5e9719d30c17aabda0b144d93d5c40a6b177404e611a60a6007764a594b5dbd0cef6900cb79c80e9fccd980da174a9a5bf0384997c9b800ccd4c81115772da48d45934e16b4047eeb57ca4d44065735882bb844ee70bbbfdb3f2dda2d4477ce569baf208e30048303f5ab3a71294cdfbffc8f790b0ea23e0d4887b8dd1f9c78cff03c8efe786382f2c0c438a9c71beaf24e37c8a182b8c1050e993eaa6efe006d3cff70bd23e2320b016366a5b03b8a79539cdb1ede55ae736d56a42392324ac9dafa4a579057b0c28a3bc7ce84f82c54975d1ad2d0eb904034d82fb50ef7d0ad83b6fcbe1b64243eb0a82eefb5f693b5ddb28bb282c62cd9dc4cec8bb20b17e18ad35d685e519777f2d3014b6433c7ca3c26c66b2742f2d5ad03bf205f439fc62e59aa65954d376cccbe73c4aefd71200b3c4cba79bdb125f2d8b5d512c78be7e0e35744c1040c977a67d68bd0c11ef4127138de9e05f0afd843258b2f0643f2984da541c4a55e8b7e1630e97a07c5379297d459b2e712abb093f64df43475a2f3654227ec321b01e96e65bb00905610870abea817f7c435ea6365af10166aa6f9eb9d57699871a968e4a596390679f4972fa32206e94567466c2155308ebaee16438b892a078d5e25d5c24f34aba4cd2e36a735854eb5dc4cec2a066405c70b857e7206d39392058d33c8ca4610414370e3931b0915a23966919d4e15769e655e5f41890e65ee47e187d5817aaf34507dce3795712165a27a59f89978a18af95aeef45054b54cfada36e97d97ea7ae191dfdcad4f799388e4f4002e3ca9941120117f17559fe9ca4c7beb66b9a7d82ab8dfb8b8e9b286020057361d7a1da4db95c95763d272b5054a1726576900c78485eb453ba4e234d244e6e51b6f2dc89b02d079ad8a048e891ffabeb5a4c94f46ab4c70e6c390276d91a052ee62dcbc35a672ac5075ef023838dff231b568168ba332a23e3a3160d20b25c53fe3900928979df6882a6a7b488df987119f631510d23cad53d0b8deabb77272bc42f58afac29d629e6af2a061f2e6595194c50fc939609bac6b88a2099e4642429eb0700a4059a9f31d7e482005dd6538ad891d2ea90d86ef5caf3f046c2a82e8aa968ab4e3aac93be145405905aa0aee1710e45311bd2a7e22523d2c122279079338f3b8e735e058f40f175e79845ac916d38bcb0fbfb7e671996d111cdad9556a0a1522f629b3dc08b35cab31ccdab826b68a2412a85a4ec93aa5d1b9aac004210ae7eba446c7cdb402020b940199479d0dc93b62218edfc779b41b7d32f08633b6d9500129dbf0487dc16d2a40f5f2d3b8daac298a0b85606f85fb036eadc9b4a2f8dd121cd780b051169b7db9d9472d98ff03cbed283acc96e8a8a169cc17add4e70520d787214b394a0084e81780e69b0498bd4029b0debff994bd80a971eb6127a438903edf7454d1cd0a299e659116af90c197ddfa162ca410f6cbff79b41c213e913ed14918e5747d97d07fa4e0d760559c4bb5b3dc56a9c2cfaa6a494095ab6d080ad01a7b8cd69ae5f5dde172a4279b4a0f144a4e2c1db7f0522a110c9fe9c1d069091d9a38b10a5d4f60e479e261c1dc03b5699f609653408c3b22655cd36ba5b873cabb9f265cb315b7eca021057b2ac43ea8d086030e2f9a66492bc24f89a0682f583591fc8aa6ba9462f63187b68e9a3830068d804b3e7c96d60e0436309aef1f7188994f8ca9f14190e23a14a35510467e6168a31a1b02909b185ba5803682f33f441042c4a789f395ab9a043c7fa819d32c43e78a7ffb044b9a0ca34fdc5ee469d70890f4c4d3c5a5e2ba85f152d75591097c6d813c1faa0ee71c00204c19eafb04c45068fb82d6b83e70cd520a54f72b076afd12ff3ab8c8307a1782c9aa5404ab4c212821985a23b7c0a7adeb5a6e41f03240eb2a06b27fe94223043afb16c1829bd96863ccaec54b4d4325ce9b9a2a9ca6552f8e4937a3a07c5c73a47dd30b27230bfb4186d1cf109435fda95ecaf8623b97376cbd54c548483580c4ba159ee270deccdcb6524a461ea6fe4637d937c64a7be362baf667ee0d3e16e4b842482e5ad851933481ea7ec34c69f64fa6e82f16294aa7ec5fc7729405a8cfc4756240acfd0a5044e954af68869ba3926222531a3c4c423a86e83d5fc7675033a2fe4b2c9bbbe833dc40a375a790155215ff48bb957781d91022766c1be019bc796fc9f32d0d4d2b8adfef8aa27177902e7ac4a96f7734079c1a1d04bd57269b405fd98c044c143ff09b1946463aece034c53b318b67bd22800711d1fa5345f1c9d6a010c5ba7be746fc1650f66bd7f05546630e6c9a3da561e6a2e55551e3670de315adbcf6d52bccb6b88eeada93c26b54a008a59d504ef7955317973bbabe2f5f832dede16fbbaaca998ce378095e15c20d4b8c89ebed0f1719435cc1ad19f9bacff05616eca98338d6a79360d8d180c76382e7eaa61b63ea0503d4a3bc83caeb3ae5eaee884a8b1e1898a0a9427fa766e577dde550f7957264dbff306ce3af5f0b3b5a39a4bb67a3d620579e99b858ae6e150df7b763ab56718d3802883ebdeb4317370432eddcc744264e1e697d563d13e0c697ccde3688ea9868eb56f72d7a9b77dc4b7b51fb6919e75bc8e51ef5ae23b7ababab13526a0da4636bd753916d2af606d00384a4c5cc4cf755a90ca69c415de57259ca364a8f3b92ca630cb28c0a835cb6bbeb654751f02f420122a085e80e6f84fb2899de58378cc6b09a6dfaaae96f3e34db128406f542f7efea6a86495136d8fb152e3b41ffe2bb40f50c9cdb591d0990825b964a7a00105715aaca5c1727ac8fd1c13d983cd20d4607d8a401f7f0783109324accfe5a56f38155051c6b721712db2168e858636ba8857be9fe004a5b2d50866c3e5ba1d0744f755c43cf812a054e870f08713005e42a9c310c55576f47ec386d9143bb2fe5a8b836a61bf6577f6866a17ca63866f38918ba3cafa66f3b310a2a41bb777f4f4bd9817457541d7972e67e35284b4c89aabc130a996d9e7a3edcbb9e7c4d872338d1e030724bd3da9a4c0e6409429f5b1cb7034f207ed13b1ea60f27db29093966ae56a0b681ac3a3496e04cacc6f63f453319c5fad1c4055de51c43ea990d249642d30fbdd4effee457ed2a2578bbd9b53a9773d1ce987debd78b4578f6d6edc25cd8e056c5fa7869e9fdda24844a28e0a5a3e6668d83dcfe958a1bb0ac8a2955036c7eae42e9270c341c855852aab127b2418e81e3cb5f417a37d571eefb38d5e0b0cecd0c44074e170412be99cbc7f1106f709d3706552ce49ff154048c4785460a2807cdf1a0d5aa9486813ceeee2c2ec94b0be9072b342de442ba8bfdb9dab2071e872f0faf2924a5c766e46b31db8be9155635c583632150c2572bf33386c47b2bc3c209f1ed57e60307d93fc2e2fc79d7b052cdf8f059d0d6cb8979b2f66eee525988fee91edbad91ede15a0f2df5063734528e4d58e2fd161d7a6320b391a2f04a9d05faea40ccda56f9a138ce88fc01c0f30ec8c084e2fd02ab47d68fdc979de721a831396818c7f4ba215d2307f8783d2215880713fb23fff1382a8682b04ad93f2c46665b84605b4b8b3a4e17f6280ed121888875ff4f2669b487339c7f4f234a730c72a9c83319a8576250bfe271e58688eab9748331c4b2462786351b4f5ddea429b1835faee936e006c6a77b7acf84e87891b97d7cca62fb125c6c367ccb7e9965e2b123bcbf9501cc29c24869c8dcf01eeb06d3a62d5f76c45712ccaeaf48d12278e382290dfb2e60a0565929362f79132ea522e2715c54f78a073fb1d5c5b007c14a951e0a7ea8a79bb2997af9bcd6f284f08a4461b5cce291a45b72663eb997fc3bf931262313483c21553626efc5f279f2f96083fc0cb6729be28fd386bb614f8d0802d2380c46ca75ed0799a19cf6d52ff90bbb0d5248035cc1bfbec415e744ec4c7f992556c569a5eb402c416256d53cf3b902f50695a3dcdda864b6401d0145235ed229537ec4b27b67ef5788ba965a084b0be3deb380185881db7b693a1aa57b3e0017d5d7cbbbd3708f759156fcd7c85cb64546cf4c27bd9b357ea4b4050dc63a6559a5bc9073f0685c1270bbde5d9dc7c2e4235034b7790d865cbdd1100453b2b7a69b2d5b024beaafbe39d81fafc92e32cea4ca6cd9adc70af9c065856bc9dccdfd586ee6e87ccf3f515b088b7112547399d36e2e903f9db079a5a089da050f3e12ca6697963e863ea8ffbbd56859f45c17e8662b6d0dd45ca3a7cbc7bcf3e349e429da11cd224d91e629e33352812edbc7bcc7d0b158445b932fac8cf88ca0184d52ccc842512675c646e41c8de1fd0136beffb0b1f573e8fbba2f8999d03c65db88c37f869ab0f16c5ea0b337c9c4ce2d240a60da8d55157284d389708e3660d2c9f435804b8ccdd5e3d165e3eefa6d3048df078c84c505c3c83c8b8ed85047c8afca267ce46eac023c27c926dfccf43823c70aee9fed942cccb237c2f7648986609722818116bdd32b171da41964aca550cc1f3533d8d69105f074f8e32caac5c89f65c1fe39d0719afb4c3eedc9fe3ff195895a16c186b865f128a515afcafb04d45503522c01c55570f14dc4d5913ecd66fa8d6cda37ed2441bb6171992172cd9b453c86e4281d7a2af42b022982fe3a1ab8fb9a2c054f3b6f48f2ce39c6598b6a91d4d546a692d01745c5344f268c8b869f3c6b8a66b30f2dcac03f2629286050fb1e4ee96a0484783cf003dc504bfc36776cca4cbbdd865758ccdc693f2260211587334bb98749fef746184809d82ffa02910470a4ff6e86d34b08fffc29a46abad4908db3ae2247e6880143d4c7dc9c75161b47cd76dd1c438364563958425d54f6509fd10805e990742b56e3f0b3484dc823e2c000b22ca314ed2db40dff81937e612c41e091f04c615574a519c8d6a5e4392031b65b623afbbef204edde94812d00baec24b3bdc1e9ed8da920af7ab86ddee7a3424f605be3da5699f1b9ba427046426966a379bfb2668679aefc2d4f3b41e3896390150e3d0082cf25f6b6cd5484c32918654ddc2474af097e23c5d6541da24d463ac2324e12198ae7e70f355702d10fe32c48c262f89597d9a03daacf69dc7b017a47c940e3cad7008a3730bdfb8193a6cb72022e26ca5faae21edb5db5a840bcf6e9420e7489aefb4b3e1ea7813d8c12ef23a985222ebb93f8effdc345dd3e54e459d37a122f6a74e95952684a3ccf3a3b458cc979fb3244067704b90940bf31324fe9e4ab58a3b35c7c0f3b8875a7b18d44c2fc218e9ca8c77de50d298fa4faf80fa3f98baec92738d1770f5ef7ad397570cc9c8b7bca70e061366635b9a6a72257b1eeb657953bf98e6ade366276384872cd0b36322d85e3c3d96892d9893f419f07f2cc2c38ac2076885931fb2257c4ecfdc936b26edc2f3b6c88e9febb084cd8246cf6c86892278341bfcb4335c84452379f2782e145f26ed2f96c150542444577c01aecd46e42d2c1b950e0267ea261f9fe31e17dd856cf98c5878b9a983c4b13e83aed2c2b7a87d0be8ef8cf0b24c565a6bb9509e07735043452788f0ec4c1c3989c772a80168aa48c850b98eee7e1f9559fdb35421f2c1a567fdc9aa33fe4836d40467a990141e0ba589d13586ecacb6261e5abd8fc454acd3f28cf4f1ad9de27c3892aaea7ca9bac0e0b9b90f5f3e3e695b20d701dfc7f39af76f25e2479612037251bc1d2480a29462f7925c4843a15529fe732bb7b4b09b5d854bb3bb7f979b1f4956529e4d1124df1f3bee4186168d8fc58462ca0449f26a9c59db6cf8c1d1a3316c2c087f1ce8bd51b3f35316162774fe5db776ba332ab9af0c4fcb5d552820338c9b5e1b2f3cda6c85cef5a256311c2ba5e4ca502db609e347d2d57f8873f48a906ef87fc31a8db1e3315655ad8c18c160498a73ec2f3024a98a442ff9099df7b07d552aa625b9d2707971095b1f1857a22f01a815144c30b849cc586bce4e64309c3fe9ed69ba8c1b2b1139e2a92e829a76888db8615347b51ea15b7074ac1224e3118d633d6bb64a3d76507a5dba84bb3549103cbca59f1c4617bb7c191484da6a2b12cdb8d7d35b723206c29e10ea0b2f68d53ef4c918e23feeb1c531531f742201aefdb7a65c840d007a351e60ab45736870a6d62643de79b3c65480f1be6d8ee55416c7c7fd69cd849a47fdd6c1769b902a04f7e38b3aef8329fec185cffda7550b21caf960fc1449a085cc82fcb36c6ad3c0e020ee8b9c9509fe62eef6e37d46f8b84f8f2819f4d9fa5a363d7df23d20c7f7aa63cf1cb8256d580266bbcdc086c06676376d6d19690c83183b39935ade4470f9e5c9274f60f6625f8440df7d4bee459a2c6b6a3bcfb9e60d931e40f18d4e42bc25d4204192260190c4eed81f28606e3f81b0e84b011e7a501cb29975fd610b39c9e7f7bab218fcbf456171dbf00f9187539ebea50142f67c8b1270a77c0881f9d272650214e4d352533b480e5045e4974e1306b8d7292f7db127c72b911ccbec76215b4b0393a8940c8ac957889fa78f03d98c4eccb443de0e800e88bf61d47157f50e792f10f407872c249fcbb0d63a74c1789b42c33a46d5a0c3f68b2a67f0d095b99aea1502d5b6ba251d3d7d2dd5080aa8984d3c2a897a1b9c5eeecd57629e20c58b9d7c69b89a9b2c4a2ec5bf1474665b32e46413059829e480d9c6c7bb812536965aa2e548c6860108a8e3307453f7cf44ee1b4ea805e813fca94dde041fc042872d0be839d405a18c3f6846f992fdc9ada72fcfdf32b4fcbde7f2ee5623a8d7a6483301e6a9723777d6a9f5b4482d074f3c79c639b9b5ce359c36fb6c9f1e71592f30401af002665f8318f8a2a6bd2c8c1ff218bc1b8435906a11909ff6ac96ca7f16eceb90a92eae57b5f7781db5f2987ed63b34dbbc77f1a6fa005d8498e1b42f8882c9d64964f8a7bd1b15321952f29ed833837776b7b0c3e5312854ae4ae231116b36579459307c6a2e9d12623d0181846277b4c21875d2f052c9e65dbbc784002b200d099586ceddb33df433878889dfdf6e34c1cf609edc500e839ddd6ab85d10af95a1161bcbf24bec6171e3b3a35e84d01cb9018e11af3cafa193409bb98c961b485d6c36f9637213dcb425802110c624e23f78d1ff8115cb35844648234eda5001d589457c0ca0dd5a2acbe3d95d3199454e52adf5c24fb72549d40bd06d18a1acfafcbb72d05f16688aa6664cbb26e6d457b578bfd527ec22deac140a2879003f4c32b34a251faad9b9119ae4d918e810726e42283fc2c3f807fa112932aa6db8d215e11c112ccd11d31c2748b7a72804aa60cd407934502f58410b9744cf8183fde9edcf4060ce1e8c9f24f553edf63359d1e4e0287839d41e207b98ff1e5e93108b385e7aa5ac549ca7ee03396c732b279631fa85d1662d4b807b51d945973b9d564251d1fc1e1412d6eef56d755010bd3cbd1a1852f0e935769f6e9d9b523416e61248d957fff34fd9b3b0a082193f9e5bb95af6bcdb5c446359ad79edbdf7b37c463bb73bc6f60ed2e22f3e11fecd119797bd19d2002a4bec4e68c777e7ddbc91413bf6dc85af98e6bcded1817b66ad36d45c5513c52b8b200e593b3f0a8de2162c0bea62a4b8cb59e300354b816329ef48c0d2bd0e546daaf69214abb2387ade4e08b1bca89c45755afe686af1e9c477a80bfcc899ac09bf0dccd0ae28ab4ad9f008725657c06ebcd79966d1d1625ea3e4c402f4c0d09ec22832689d8ad0892bcbf6f1cd712edb7594a59bd08158e0d1900cf0afe577a3eb3a4b77e4fe8d28c6114e11383c7b74d0bde409fe3588e787295b0c8ee3c6dc607450d6d08a2e408116b1cad6a75de3b0759a737dd12087eb35fb5f4e6f0d5e65fd29fd400efe2e94de3cb493c6683dc17fffe4fa1694e36e087de00600279eba909b4183af15690684a7e8a102b3640b17e23da7fa1b68d7e441330a07564d921ca644626778e7f9095e73adcd55f0c6f5e261c8294c7f6fa84dd72149122533d8bf39259719a88b446fe193930fd75aff4aa92aaa8f8b79b17dc90a806eb486498a6c407734f5edf3234547edd67c71ee47c746a8efd169044b2320ab59aa0ecc4db9faf009965eb5c7caf901ea4e811b943a5ebed40c68f84601b01781ef721c929dde7f6eb6fc273058819005e0df44f17ff50a070bd9d3dbbfd84f0776d2955e240a6a6fc7230d875bd1b438b95efe2a16bf41a89ba2f31f3911a5f7e78ecc51ab028a97c22e33f2f556202642283ba7f5ce00b626866eefec2f2b6995d23089bf015e368af9e2e10c24d834caf7bf8cbbe0f47100dd490b06d2658cc01844e029a93bd4b58509cd5a4034b4122a323ce18b26a0c021e4c4fd459d8e64b669c12b36a096f4165484869be994c05fa633d8c02840200485d15cd31018be043e50f3e78ed8c32a8f6f7a6b53523468c584208d9846cb9f79632c994524a01c504df04ac049eabc3b162454a225202e5250aaaaaa9aaa9cacc10461145db58d146398b44ae608565591eebf3b9ae0b6485ac93c75c1ca1da86ab50554d554d556666ca8a899ab2e62ad4c10f74aa55b446a1aa9aaa9aaabce448159cafaaaaa9aaa9ca4b8e54e1aceb885531c34d186e6e10861b223738b8494bf32bdcdcdcdc8046cea53553b1bbd1bfe866e6023a9f7b6a848a2d256118255131d6fc074a3d0ac2282efdf57e5027cab9e73abe5a9d32f1db9a714568566cab9f3acafbf17376ce509feb89aa3a8bb6d1cea26f2e7619853d01b3cc89ea9e287e77fba8a66698f03f68c4889137517d6383644b302ee9ec65970ed8c1891d853d01bfb127385f61938d8deeb88c288dfdd7369001ce8c4377c4299206954523bccb88cb1cc713735d7fe5ba8973df59932dddb8dffaa6bf7054dff4175bdae7ce39cd9efb767db3a52c52b125f7c117be37ba15be4277643f2007fbc6fbf5bdb6b77bab0584679a851ee1420b429583b0ec8fa173eebacebaaace514d65c90b68adb91faf4b71c5e89eafbadf2351a1d1cabf94ac68c2142217b10b510cd10c710a77cef3eebd55436f42680e66a9a1eb2cf55475ce78bef254d583efde7bbe7a584cb22524cf9aac2ce1e4a6a7ac9969a2d602c265ba451fa93c9b40f43c6bc6e3792f56515bc21f8e5f396b2646d747a87608436d8967b48c182f0f06cc266c8a8d7de5a24de0b5588db170563a9cd8980a75c5c6481e4f6c2ce5f3898d8d40a0d8184a28141b139d9cc4c64e44a2d85808052536061a8d62639f9494d89887448a8d5d2a2ab1b1ceca4a6c8cd3e2c2c2121bb32006457fc5d4fb9696d8587471898d55ffb1310ac362635396c5c6200c182f1610ad61aef5de881143868c198d71a90403131b531b4428a39694b84122de834b7d534811b2e6b46dcbda123cb656887bb735f3f87d1125aa9fc7bea7debfa7de730f88976d9023ce4dea8e35e35cc7a1e169932d6d1307a9a6f862bdfc8b5e6fa7c26915073914f5a8f4bcadfa559473b7eecea1a8f7aa0ac62bb4f2a5980e924c924a3e2920cc69db9e25f7ec9e51208ca976d60c28c87591be8305e97c12dfa39341e1de635d9f820d01b5e94f563e89ab479024be87ca9f7ce84aa2d4a343fa136b86443a71a289263e9f0f59339f4fc8e1608b14d1f6459bf67035e73e9acb36ff09402d12884bdb8cd038f3e1cfd3952199b04845ee0e2bd816dabe0a17dafe4915b495f16c5bcd9d667dee8daa352bdbfc6ff8bb77ab00fef179b06f46b83573820581d0f3212c08849e1759331e0fa61a08534db44ab857d6c90b768925287f0ec25ca31cbf86d426e13cb148760b1b9bed62c9122f987cb13747f686da1d1831b24190a2620a636dabaf9c2748b994d71fd2e7579c052b99a2084a23495529d65bb0c536364e738c972c71c75e3061265fdcdca0819b341142e408d74bf44bb1669853da89d704d42292d5a8aa83c13024cc7ec46016b2a445c22b70212f230c73033f45e5197b42c8a847079ac145dbe010234d9f840d71699fe7604184e4e8d1e17c12a51ef02119f2466a698b6ad0f6d76ad1962c8eeb3f371c0e95dfbf8c640f4272f480bf7f1d491dfcfb970e74c70e52c7fbfd8b07d937a983fafd1643e2e80460e57bc8cc618b691843ac2261f6292c222152a134f657cea0edab8bb6c5166d8bacc5133261dce7fa82b63b6c110b6d3f22592aa5d4e192a00189a6a2651234d4685596c232e2df449f9047696c9dcada2a6d5b69ec27df90aba58d73a2b9685b8ab6bfdafafb2ecacd2d2c2bae42f294118ae82404721fe7717e753856aca8093e77cdabaff55b339df1bb6e294295a943779094c6bedf282d594b91565a7ebe4e96f6390ba2b58d3b29d3bfa968dbe9902cc0e1705282b02c6b748118238a10555589304051d4c910d334853200210469ab81d7ffb48fb61b708fb6ed2ecd11d19d2e8239dc81b53ca60ef7fb3efe7dc0002e8796909afee9d5498671d9e6fe69fb73a7ad3934651ad853abb6aab610ac555418ac604338c2b6150d8622a0bd576c7b4d5dddb3cdbfd34a808be6033e4c08a7b97b0699c9e708adb3ac1cb65dda7bf7307154efb2edfda5bd0374341f2f62c93058324cb636ed343d7c1445bd36fdc4d3f49eed7ba84724ebea7203b4477f1bb140a66528ec3672d996ef5f65a6bb6c83b99c6d236d3509902068ac9fd8965468db6bce9f6f23ff976dcea973ff9ccb9e73cf73c3c470ed3b7fcdf7d553f7b274cc7fb3537f24152ec86cb3a1b0154e5f4d30e635f80ae1756d23edbd6c833f4185b0b16dd2ee75ad9d0fdfcb7ed8e82c2a86ffbea106ff693ee0276c081fc26cd37f993b1eab3f8c5020be5a86ea011a27b6c568f99553f72d5d501f66eb0217e6ebf7367dcfd2f96abd3f62da08a9999999a99aa9baca9a9aa9fa3eb12234986d9d3e121362bdb8328baf98eae776f5b2c38400f2749130b284222025efbdf7201390899889098aa266800345c1a0f2425513bd106b2ccbb23a3340a019a1135147d461a264d580a2aa58ed2e866524193248305e62c46082a2c18394a03451a4080e319dcee5b9ae2b085248d1a1c175b9787697fa6d32920449911b26bdb2d22c2d2e2e303bb868e0f1b87c76776585a5c5c505061e1a7c3ea0100804aa2a94d12885d4e994382a2598d0ee8240a1135147d4f114d901a606a452247e3e138543134de0101362e2f2581c8b733203518da84654835233aa19d58c6ade7fa994430e7d9243773f77366c34895455d12a715ea548e7379092269a28914830505151796fa28ae0b0f2deca2b31f14a458a1429522acd9011e3054686bd4b0bcb8a0a296584223a09813e9eabc3b162454d459e02acd00525555575aa4bf5e270389eea03e19640592755d5e6b52c1b1b9b2f54a9036f42ace6dc072e67812df13fa742ace6d910cbba5068f18a700466666566654ef769628289dec20c628c1eebc3fce9743a20f67e6d4f7b863084213c2193995b0baca4a6a6a6a6a6a66683d333e70697fe94e5bbaa6aa71d33a14689e3c60204626ec74a1c37168e993839118998db31136a1c3716ed1c33733b66428de3c6a27a42557531c51453c4346421c6e8b13e9f4ea703721e8fc7e3e1820b2eaed045166e563005163247eaaaeaaeaa2a298bb122a3c585c5bda83c462291483262642b2923caa585c54d8fb160294c526e5050504442b6a4c4cea864242256f0232f986a154c5dce4bbf6057caf4bb357355c0058309d3ef56029e0635a065c2640d953061d8133038d9cae7037269712ca150289e9c5c4112c1e0c0c84844483f4d51505415abaa5a198da8aa8a568c7137c3586c563016259dce25859114261cec55b838428a1e0ea9ba22468b6359d62e0b077b952ae215918b23a46845528cd6159cfd4e67f7616f419716374d164b4622d22b5893be49d956844a2be78a0ec9499e3242119d84409f3c64e2876d31a11da22e4723087ddd3535652a1b312b251b0cc50868d33b6c7bcd5d1784f12b8feff19b4027a90bc3ad083e46e252cd11af66bb9c4ca1cbb94fd01d9be0d26fc8d017ea274c6f718f287164a3c6346539903884a3d17bfc5ee672359905c53956a7e348978a4a7f96fb46f386d6fde6eeceb9abbb98f79c4fee8e007da4b729efbda7f2de7b59cc96329fc39545e91bcda251f45f751ab1edda42a3d79287f0906b355925c59162ab5c5be2b82c3de4d0f26b5cee99015289f626bd623a2791dc350be496d5ef29a6bb8772c1071946f442dd02d9e5f9f37da83039040eeb7c55a515b30dc8125a7c777777f7876dc9447b558cc927c72f9577c570e9abd3de5b3f4dde9a9565cafc48269ad3e975b0ad86e6a6a9e2e18abf8d3abfc1f73a56b65d31bb1e64cd788d9715ce77dec23acf25b8f4bdd0ac5f265bb23ebecbb69c42733ce40083a58c3c709a7c98de733cf861718a8eb55d6cc9da624bd633092e7d8b83b9b79c4b259afb2a892712cfe135bc347ae8437c138fe0d2771bfc914a3c2ea59f81c9c862c078798111239381cdf8920bccd5a15a6c60b96125464506c247c22185c6a8064a0e221d4e0010b201dae173c383e3cad1e1217274ecb07668c61eaa005002987c803c9ee63ddc009a003cb30570fe431a80935a43d392e6fe3555d56cf34f249a27121fde8bf1d73c7976563df714bec5d461dbcae88a22b8f4e10b954585a14c84bc68ee54bd44221b87e0d2ff01c3fd253abf3a580d1743754c29932d8367ac4de94dbac51a8984936010640def182d233e2c65fc5ff61e4fd3347133cfd852694bafbd9f9cf3e9bdf7298371f79a57b3ad39c8a5ef504b75ff29938d18063af7b6a430aeab95eb0397a60dabc95a9a60e00d1e6d78554c74766cfb31bac19af15f2f2ef798c81eb8f4dd55328d03d388eeeed55d0cb33562293587f8d4d5331d36209aa65dc1a8c0c48a828169e1f4ba8d81131f16eab7518ba6df3c10fe46e5501afb1b6cbd61f5f3b25a0e5d961c3bb2b41f75474869ace81d4389a1b568fb3b627268f659d2dfeb7bd0d486a61ff3a2e93315cceccecce10eac95ae5f3f7397a89c06b56339f410eca0e5c683969f9b0e3ee080c30d323366bce4a0ed6f32fe596cd0f6371718a3146d832b1bfc9c6c10569153619d8440c2ec4f980344da3e64d9f71bb47da783b6cf3c68fb10482a18c03b687035769a1ba1b9073776e805e0ef7643de7b2f9fb723a29fbb76cb55a88240919f04ec01457fbe54a9f5132e830c933a98933a963ba0eda7953a34f733a68efc4fc838bac70a791cfea185496b01507bc29fc75e8cc3b384f055da6ac0a90dac9bb4e540ca38225eeae02ec253c772075cead04e1df942d8017feb6c1e96a4b1a1d00f97815cb405815a24f0f97c5826e0f178562870a954a0d3e9c04c03efbdcf06dcddc301e788e84e7711cc61a830f3f11314292cfd9b484b8fffd6a172e34ff5385acabfa161b8641316446bdb82b1fc8a8b4a0b89256565a4e29c43213907dd3f518a0f08dfc97b2f84f2de0389de7b9f93f79e27f4debb40efbdce87e3b1aed8a938ee4e59ee3e4577879c6dd5a37c3fdfbeef3bc7d90fa9f5bb4e1da594f1e1be943ad2653f64e9455a54f9d2eedcb9f31eaeb40289205a26e94288768396564061092dbebdd699ed2ef3ab55d7fd3c7633e6ce32651c898abf525555e520aaaa1a248547aaaaeadcdd9d57e0eeee2fc441748929559b08c3a4001484aaaacf929784f2f4842465f45d4ddc2f2dc63174ae0b52fbf62581d3e350d8d647c02745ca681cc3b50f2dbe719f9e722a6e172f71275235a5fa99b4d00e792f6a40aefd25222488a68cfa134506c3b5ff9849caa86b2672edfbb34dcae8fb7befbd6e0ee24e5cfbef39c8b50f5555554929ab42d26a25a6a5ca29b8f65dc59ad15f2f2ecd7c77b7d20c762a90495d8454ecdc797272e4bed10cbbd5b9f6eef6cccc20999944dc7b53e7a66632c3a676473be760376ba629e35312a0739d9969a3a573ce39d71dee2c6675c1e42a566b45e52475c5a5dff91633a7e0d26fe6eeeeb522a7bf6310a1aa3226d694ab261e027b93333912b9c1ccccccdccccddc4e49777777bbee135c55bb97ceec989bb9df4e90b9999b8a696536e1d2e71fbdc44cfe7a7125f7c628b8f4b99b999999e2cc0805d2cbc94166bace4cb66118e7dab9fe5c3e42571a4fc014730b2e7d377112ccdccc7df53b013bb36b20cddccc0d79cacc8caccc91932b2a422054150d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d3b7f70a220d5ce1f9cdee4fc41874cb6097f9b994dd40813e7ed5106cbbb3091348932d88e32b8f4797779775aa2aa180ccccbbcec857e8199734d50f5baceb839eb1bcdcbbfedeeeee6a70d7c55559fdf873b77bbfecedd6dab3e10a75b866e9bbed19c8596af44cb245a7e05840aed6cac7219bf27444bd1dddf9de1404b27b694cfc3e5ba95d0ae7d810be25c17dbed8406e96233f8d2379a272caacfdccfcdb61f52db2cf0b47d7e1ff99ecdb93b3208d5720d6bd036ff65e999aeed10ac6d06c49593a8da39e74a25cdd5a8a1b91c3934e7b23e800f402412cd477756c496babbbbbbb38d7d686e6676ccceccfb3a318863e103e28cd08d28a89240255ada605abf2259ec351fadbdcc0ea1d323b2de7dcccccfeeeed9d6efb2f70277c2eab359c284013c5cbb5d7039cb77a8edd53578c87befbdf7465fbab67851a8321402350369eee6ceceecef66765d3c2970082edddd5fb7bc9cf98d77eff3d8d4dd05e2ba3ea8f2a51ad2f15de4181359a03cd63923809d732fc6dd1d4ece3497fe9b9c738e9d73ce3976399e0d7e6ae34d35b694dc379adfaa73fa6a4cbf558c896c715ec73b97bb587564d3cbe296da03e1ab780597fe2aa12ab8f4d3f9b320ae2a229ab49014a4aea3c05fdddd0b6d292777773ea97399862e2297be2b717a824bff25cce7aea17359c8a869fedef34cc263ab18e3f4a66a9aac0b7a9efb8a6104fd39774c735fb97be421d7904c797afdd8859e7bab34dc73e6eece2277eeee5e626ecedcfd15c0ffbdfb81352c655c15a7699a2c6c2b6919abcc5d74774f71d742dbdcdd9de7d2f4c95d69e8031921449b20e1ff012da895463e15fc334d0ed427a1c8ef8269ce2b7a6f7a4d70e715e84ddd554c8e109632d5079ab0a8748c5fc5d4a9010080000a93170000000c0c8784c2300ba324c83e14800f53724c6a5a36180883b1408ca4200ac22886612800411888206620438ab91a0500519624f8d2bf116cf0b81a9eb5d0d1fc78cc70da524c54623d5d3f62e2443e27119c62ba5af066e44e8337b29396354832374d901d857c529665c67c255acd5401da5584902bedbcf729a7f446d30866cc882e561291c2e92acfb4ccd077053ec190e033d492b3af73b2ff8064a0be828d9447a53364bdbcf01499273a393a31d303af4685af8e5c613ed87560332b4d9764393f070b1dda0a22c3ae53524e7d6055c469543c625f34e5355b154e4192990479b1c3a720b71d5623172ac84c94992ce80fc8b18c3b67a193849f4bdace317ab4fe65eb8d4ca5292aa5888eeced434bf4f0e363633a2522bd098c75784893e9caf868dde79bbb67a2c1c0900a31d40d7717ebd8d8c9ad468ec3053e0394f632cb7177536416b35615cc41cc72bc99c8d76563a41b2f36f914d3f54bd65e695abf444a9a7c579b3bf397ddbcdcc38d75b82d3e9cf7e3d35a12a872403d11e1d040290f3142266ff8a1a623b942f53cd6a5d13aa56b510c1eb0c64dcf67fa614cd2415c2a4237c72eb31797e4b3ecf5a4e544c20b28986aa628d4a6bb54b40f764c805d1b3a9a6c144d71d3f4554188a2c7aa1ff819a37f0f32a5f3fd4dc0d6307672418b32ca18324306c79ac7ab2734901b101dd6f3680b4419910890525838a5245ea2ca706dff3a11d64954a177849bae5b83d4a869322864772eec4e1cd8772b9b5806223a6acc05ea82db4779f2b2790f1a19b765459f1bfbea616b585ef7a653481ee47d177d3ba2343d9293f2ce5299808e476a61a205a1f7b50f511aaf996f934aae60775bb13577c3ceee6e8a0d79b93d65deab1d531610faf74bffaf5420ee9607076ca0a95465d90df02ddc6d83ef824131d5acedc224ad2d2dbd32212d3ac8a44792a7b0356f705f4032117a3d8eacd19f8197459cf9b6f31ec67efec3c2d96f97700ce0190f439f2d465600a183382d2b5ef5d1087533456d0a7b9af563c3a0e746581801c80a2200e0ada91a870a5552321ceadc88308ed086517469dfa451deae393081b83f078d4b2a580549a65beb0183e88c51578f8a11e3f775bc41842a89bed1bfb18b3c507566755eeb936ce542bc14a198c2cfee4e461eb899201f631c81ab53e11a539559b64c5dbde873d4d9f10bbcb3c1728c18d0f940f4e3e3de5a5ddd55dcd019d14773777a69a30dc72313c7e550a45620e9f58a4b6602980aab3f9be5af0291cfe8a857ea936e2edae4ba088aa883f21061d3b732dc2bb0040995b8e2ed236acf4d24bbfcc825a345c063aeacba9c8b8f2dfcdd24c6d921425abe57603d66229b988a0104903d6d0f3216fb422e44968b53b72f78b547b9aee93da100b2015f62fbe2ffecfbc3dacf607ed37d44c7f95b28de0f1aad5ff28535c6c3700e67842dcdcb57d28f4fcb55a881be50bed350209593671990390e2f70acbba41093b51e5b022498a852875c07677a31b75a565c23b6892b2bd84ae8efb808e63fd7a37a3b17a582c6c053badd2f1ea844a38e760509ed92213f251daa7c0332dc347658879bde588c57e0b0323984fa8db1d67f72a700ab2c7375610fdaee11dc9e6064ace696e2b8b4cf05f61912f30562c511d0e357497818af2b7094ef412eddc37de1ee3970b39bf9eaeda2ad4a2a17548b6537a04851f8b36bff21be05007c4f4baced895d9065b5b7a2cd70f4a35633e6d98b750f7ae1387c4e39e44146cecf32cf2778c8bd51a0ca9b99905fc84650a73b594e5354470192ba408392281dbee9db4d3d4f134da4b703db14f6dde63229d5a42486a03fb06d20a47f302f5e1fd250707831c56228b0af94ad53108790f8ff78f0c138cec07a6c00f454d90649fe5b35829be5eea77e859564085ff241280123e589700984131f5c42cca91e457c61195f54d4458eea7c76fa7299646e5666530fc78c11dcdf9605b28796ecd5e76d8f5678a9c71402f4db818826a704e034796844a03d0f8f6542ea0fbafaf3b91a2c09c731c8399ab2b0f608d206000cc3b889bfbd6d2cf272ed83132e6a3653355cbd748864c366b454aec3d20957a96e1b9fad340a017c565df884c093fab7c50b76d20cd02bdf1a4d7a954ac9b298ce10d295cc0e24a35c13b30818e216bc510d20376175d99c6d591478491eb283a96337f5ba9d8ee6e5c31fe1307925d1c8615e1f6c5a2b8cad560ec453f04614b8974b67a3c89d192106123b626f8fdcf4f9dbe3a857f94ac261a6d9edac2e38cdb23bda0a963717c5da9759477548a3225c1e8a5d69a3f79e6e158652eb4c1b369252f815c4485528248082d957b36564c2ac7285e341205d78448663a22314ebb9781fcf6e2adb7784b6bd5978af2098df0d7572d0f7ac36658e24cd884da398c8f76e9746959bf0748534c37d8eb05dd438df61d771a774671b17464de1b66ad7c16ad0e93a11ae471a7495b1c20f606d4a4a74f2e5b5d64c62fb2023612ea6e3a92808bad8bad610314bdd04ec913df52828c8b8d60c30a910846cb267fd4f4733027ed98b20f42dbaa8e228c313838a81c52521e062352d4834adb5e8f0e46ff0670354b1a1410641eb96321c6fa309e00aa549198a15d61a56b59ff9ce17605e8f4af11b35228f8b99acd62efefd6f82028745d6da5ce20d4a2f6122185c7fec617441b56db5940a33485ead0d2fae27fe865f344b2eb6a5770aa5cc6b5bda85408307d8e226f7179c425de94328d527a47337bc649ff4ba5422c29b9ee96e8b99218087aaefef9380673aca895ea0d21accd9a6465c176a944627cd598e8ff91db411c57a4f63b72a539fd27cd2ac040f40dd27606a09b4112b93a4b4c5a1ac8c3b627d8e945e493367e044854d468647e9ba6895132a7a4ed6d48502863419000044686d26c3cd862aac29394375879774921fb211699398a10c379b3f36d42cdece25c73b6e4f705be39bd451d7a4379c4a011be043b49ca71389d58a77f1b802d73f2d6eed188bbe3cc918ad5667d03f48fb358e9e82717686758f7a5e1d95a2c432a5a938a745d89b38286527fbeb6cedbdfa7fac146a56aac4e804a9349d5291916e772f872248ccbe575d81e8e58510e15b98d48e3305c5f21b8468476a0dd16134b0f8d1bf913ed8363ae080a56a9cee753a47bae53e06f10db77c51f1631ba6fc1a9e4baf160fc80b8f5e045d6284c555206dabae97e9231a95289bdd3ac99345e69eabf20d924459c57aeb2d05bcda12781140ab2a2d3645cecbf2a15b90e17509650d9abe6e9f38c6a393b27f1bd5b74b9d515f349b584828c9fbfe01a0d73aa3964126afe7bc07452877d3dc641685dacbba33160cac09eb848fe2fa6ae71eb9cfaed8b7634d25e4ce4051ddecc08c6b3afafa89d22871dce05540ccb6062b84ebd38f573d2e894b2a0839113bd726f96bec0854646b329cebf261b621b73d234dfb1d4b6ce8e69714553c3ee48a7f0f9aa0dc1e9d1e1db6a4eed3e44c03d8378daff9094f16a91d1fc73fa093d5b9d39e3491fed312a8c11b92cb78b2674baa92684aa404484451eaada4a434d62208902c64776150dc66e912def60c6c790533a7aed59065e5857d1fd0aca63b27e059fbcb7a58260a9f788c1b9d4ea1ecce1b66333dc0588e8fa1d7a60adf3356ece14d77a408871699fc4a5fcc19a085701741ee0d6656f0315a049e5e0357c62d2c2e0b7aa4535295e600a1f2e26317853f9b9603e3ee198bc7c65a69da19827a6227fc6349cf3b90ca27f5bb1dc8e56b1997842a05ddce4e4da6590e1061819e0ca83a1a56bbe5d64300d0d81830655dbe6d51f6875e2c63ebebc4da0d75ec65ea090aa7a0714c476f989488c1ae9fe840cd1cea47c66b2d8fd6b6171ae8c7a7b831dc8d45612781e83bd9017880d91ed5fb0c8260e3307973c740382a5f490388e2958c86fcce4c176c711c320273f3690be648b502e2af259fa94fbf4096a103f69b1ad64d9105299df2ae41a65dd2c0ef05c4b8afa97e774193a8b4e3934c9545c947c2d1659b8cedd295423d64612acd9fd3f4daf898b45789134d47ee82c1ed1e8163fb4d4ba5981a813751cfa0fb78e0d229c77351b3ea5a72f3cea6e6d0f52ad44a411351a7d27ab0245025f3aabac9a9efbd2d650efabae48ea969cbe086cded0bdc03d7705f248f90adda1dfd9c4a445d885d1755053d98b53bdc0e61d547a79087ba1d9bee5a9e5d375eb508f334010a29465bc56f3c8321b5f2518d1a85531d0ff2dade0c7777a0982b25cb4ede0fddeb56730431aa5250ec06123266110393364020cc03d56da508090c3991a64f0ad3258abb208d73976aa20e583a2c4996f1feafe2d0908a39ff0d150449822e15d21cc712e2bb139a4204d8923974779b8fa2df994d8af5bc330ae32b43221ad56b462a38a8798580841d303496321b6c5a5bcdbdbb23dafd230861a37c192698dae258eab1690271805add4c3903a817e77c1e8d7ff64e04a9304919e8b4c29cd79770c62833d815c4519c245be85be324ee7d9756f2539e3a559ac1647251e7f15c9c95fd73e82bc135f204c4afbe2152398cd43bca2c32cea07cfc1bbbf8c858aa1f749d5b49f9b607ee1b47f4ab5bd2c167088ce9947e91889589b81b9def9adae4f595439d06f4359419ab71573fe285db640adabfe7735d8e6cc6a00a0c12a12a20b99391176f49461a965d9a43923470332990fd43a0520b7ce2cd636aea5029306d3d646647c4c9dd9b73c7a3253401218e1e890a036fb6ae642d8dd3a8b49e8c6aa9ede826bba2884cbb915067e63963f4466baa7b8375172a594f5afbc8ce39c4b67f9e212daee200dc0620510442c4439db54b3de342beb86df9b9ea7a7066fdf60b0d79e080261e5593cca0ce7094e9ce453bfa0ce7c91926089f43f83d6b2bfec3dd59710355b78e8a9cf9d37c3f5c78b542ed403a22a557b572fe270b43d03b9488a36817065d48b7841be390db8b0a78adeb1ec626e82e59ac4d1939c94d18e50f78f3ad929f43c85484527e72845e2f4ef7183fbb9546da73b33de516b84101669de14c732ec3708c54c0d11b3ca29fe6424a9c5ca535ce16e14670ab3fddf2d0e1ce54aec729b71f9696e12dfe008400555e12d84f179bfeb2a18c57708484c64962c5f8f83a62b58ff5571ac9d0e5328f8f9ea49260c763afe7743c67796a6078b937be447c3c52910602053c8d5fc4dc903c86d0a4045164c8586aebc0db53fbb3b218ecf4b34cad5b1e54139b0d5ff2986d8bf6bd54049e45d488fcd54e8d97710c1b384dfd8447da51db6f0927de8565eda020703253eadcb81318616944b5a14895b88c7558e0ec0c57d712777416748e18994d14ac99d80035161cfb60f557aff5d0c080365d19c9f808c584d1ea6aa656cae40aebad0861ba334d0d159820e4a8d9c87ac4e6d4dc34aee61cb597994eb97ccf5a3a61270e8a4f3fde4ac6c3b9431ab7c0958fb4db9b24c3a43660799b5d220e5c90b7b03164641579949803659a1483118c84469840624b937ffeec16a03ca84b892d64b03ed106f6950af00841e75fbc5d8f4d9ee24e9a31f8c3de1051d696fa65c170d6c35d65f47065609f198957ae0499d6cc166101f3e2f2e71fc6f00b69f401b6a294f3bf64f040378093a4bab4e49d0d1ca244e9671ed8b5f1c093e716a679ee3cc90064ee7992453fc6524e3130a8810b07cb3c2e423396dccc6feae73963706cc368861f62a2154af9232c01391d499dd4616a29c4c50ef8971eb847bd04998afb7d18891f1b5d06c9094b093c74730ba3e4c3cebe1533a52ba46a25a0fccc0d97ee2e584e15995acda5701590e905328ea8d37cbf45896f96e29dc8fb0a272300c082d6c079782ade64ce94a12cd6794fd2e41b91065d9b8b553d0eee51ae8ec56584acdd284ed1ba5549227a6ad49255a534da6d69d708207080695aa6376732464830956a69c0b22121e3c783e38411bfbebe1384ff9236abe46dd058b32e03c05573051f284d45ddc8052889db48b2905df234d078869b9cbd79e6188d33c7f228c09b677c16a467bb873bd5f537ec8395ec6561c96849d9e6f1c152e1c04fd719ddb8f32fa8a94921cf8ae6c1c55e52a9f6ba7cb56cb87a1654c472064fbe30ce9cc8699ef4c588a9c2a067df6925b2585223053caf511949f32d59d8166a2b6fd0a53a6b4b8313d24d0e444b6f356932e2c90a55d49a57800585097a32e105eb95c6500e868a156e61ca955f8548b9b7c3e09e6b2d45f10080b319ef6db3832e0204522f95ccf4055f336dacd1e3e3492dffe30c2595945119e0b6ca17551135d3cfaa5caa8d9cb4365040981c96156474a1c456afb67d8d639b47a17dc17d909230f1aafcb2543fb962b78d385e99d11420b397853371c3926af424b948df9e6f13341fa99b6b0c3d016bed027023914a26486f270e0034d02269498b52e85060281121c82e8037c24f499c280855bf91749324c6e82ddc925017b296f53a3b6acb93b4a9092d539890b214255b24d514bbf3428fd4866016528922629c3954e1ed254fdae4ef6b0ddc42e764d54f0b71bb4ae96c5049ba7bc9fc22a192fa7b06829a29979b322f0a839884ae89d04161df49540cb7f364f1a1d9568aad178ae6809395826b20d271a853fff079f2cb313db4d51c015bae455fbed13084a15e77ecc19fd54e4a43f099fd4e682eb07cd5ff5eabfb2464aad20be1d08ccc09257cb7a8cc552751982da9a9540ebb68d21080562280d2273c95d99086ebb5f18cd0436a5ec9ef1ddf7da8f259d4798f7a0979ffdc1312dbba537e42e10add8e2e0f75b183056dbc8839a0c285fc2a6d889c41bac572de6b22225d7878527ab57e6df57f5f55364ba9e31843466ed5b3fbed7a8955f60ae95c37819327a2b7757a19d1ff7d528c9910e26e67c5938a439a0029e6f394c28230b4775f64148ca7f5705eb31c4c5cf68135aa063f0652a71ec7b4df14ea58841218a5e62b08b5acde8aa978a7889840d8c812dba1790fe69494bd82da6470348526aa18774197172fb5315aba308b72bada652dabd943e6efe5cb7c0f0276bfaed6d6c4e68f1f52220e8e3753764b667ec6277b219112642dd2e8c11b802c8082e12e59dbdbf5af9781d6011354fe79c78675178b3520ad60a58824a1f04c7999163d33029e4c0974728af093c6b8b04aea20b66b0a3ea1299cf0eb3b421a6fe2a7212795c00ecd09c46abdc957a8c8580059930f04c8b4f9a59ffa9bced55fe97b341b38251acb8555a6253dd688e7e59a1119c5c21ca2c4a5b8cea2bc33e65ed7d79b8f42d9dd51e0ba02d536bc6a56196f1b8cdacb77b126907dbc79c2e0def104bad21d5b74302fbdf32f720033a77c2d982de079cb3102753dbfd38cea6b545954dc9791760e27104d52f5cbf9673780b68291259bda246f23061951d8e25c3481336fb79dd4dd0570c4efccf5a96ff619295b590cf71c1a3ab53d4933022ce4e0b20a0dc570c394f69d27d2668d090b97713ec5bfaa71a6d68df14a6c0d9b035efa84aceca9a30b0be152b8e883a38a956a7c87bc29c8ec716517d393c964ccb4ff3c946849ceab152480e72bd9bbb2842aacb71b2470182fe5dd7c89de101022aada0b5e358f57d624c8d9e749e3a033ce502dc02dc90e741a4c2ee58c924ea8b6f0adc37bff8908902606b371123b598e5219ba761a1bfb9796a1d45c6119defd0d94880ff4ebadc7c2702a33a104bd676cdf41e221422a97acec622b4108299e55ed58920a30872db76667c36aada07977b6351583ecdd305167bd795a11dbeec0c90963da8c64ffee8c14088f515cf50662e795aa59bde210756f31a31f395192ce89110f5611e4f0749c5cee8033fde3332bf56dae8236d2d420dd33d8d0c7825c2a89949d6d1af4653e30bb2f535fe32793eda8bdd3851e5eb62abcebe20f2de75caf97f074319bc6da0f1ef4e9f72a0fdc91fb34a9eaa968fde8b6b71890d542f7ba667f80f4c91f8be90749509d618e5acfda3071b2c71acd13bd1fddd2590769df45f18e297cf388c9f41b192ff63721f7e3745e61d8922a86bc2140a1351a65b493192dc195804f0534db8a184a188d501ac1e85f5795aad6e3f32c445bd40c13e5ddf019b3e4a3710c23d86d25715e3f0c22dadb95ba0053b031f0aac74023b9e42c8d4a08b5101dfa08f86498420590d8cec2c2a9e32092c8491c567f2e05f1eae80f0e8d294882463a7f288a8fa8c70541c40bde13517f13747c14ef3bb01ecd8e685d949c0ea110ad3660498cbc9b0cc47cad2a66266d2063e276a94527debce328a531445f4db43bcef2a4d9440d9b721ce53486e8bbda5988358f1c01c3850b9c8df4e742e5ec2dc6ed2b6c1558d4a07a326d69ac469868afb39d526af266a0a3f33f49e529878638d1e2304a690e51d7033dc7514a7388bf1ee83bccd235a6f8ab893e386f0135cc29a0643487b7dc2b57522063001545cb81daef08dab786ce891a1bc2786db6c29cb517b7bab77da7ab8196c328af31c45f4db43bcef21a53fc9589bee32ca739445d0db4bfc305ea728fe0ae3b891a43d2383a627328954a93707a683940dc099b869095fdc95819575ed808defd8e91c2c98f719f60bbdf6436d2ed61483d76690e499656242979dc380a59668a19c785890f73409224504ad3347c68d56d7ce22a503b28a41f507a0f97ffe5942ba0a1b4341d58c7e7df94fd0078b6a4c3565dd8c0ad1bbb7b837a82cc264359548554e0271dbafa318a110c4c9e2b7c709b5f52e055946180af1e01bf19997bd70f96b2b5d0a6406d2da3927080160a5a5215b9619fe66b1f32b81ae4c9aaf3a642e7d2f482c1d9a80d0dad7bf7ce936c567c28b48449ad05852683f65c4e10274b8f6e8dc459978e5ad3407c63c6f132aec01f9e8ec520bc3cbabae97ced0b6b0000153b6e0464b218b3d273e4e8ea95242a97c8fe322cd1f308a0b48e5241a6fddbf95762a08a218273f1464def62fd4d60b88f7cdf20678165a89fe0ca1a70e27fb1502fae8cb6fb4353f212c715452c4361c1c31087a1e2e673dcfa150440e84fe5f9b088ee655400dfb912e2dca712d9867ccefb8f5476375d150f5ae58b58e831effc6690d03dc8f031e4c9f553ff7b527a2e21fa7ef275a686bc66979230c91877aaebf38b624ff37091622758f888c7edd4a9a17cc8b82a7d73d94d4189144424670243388248ba4048842da4dfc19c2b73afdaaaae32408341b854f2fe70291c418190bc2c05c5dfd006f223f01ddfb6a7bfe32f36a454d8150d38b1cb26ccbd4518ee01f6ecf5433eb2b77a6773584487919c78621fc641d7736edbb1c7b75c9dd31f447bc5dd38baec0dac5211125558a3ac1aaf9d9445eb34b53b42bfb7d25409be45c142af340007d5502df760c661cfdacaa35411627884ee66a3f54bd22b208b8c49d6672a641f00b52217412784ac202db4025e1d03eb7aa85c28b7ddfe1cbe299b3ea6e1b63036814d53baf330dd5dfc6d4bdd5d313bde81de46c51310e1164ebb870e0e55353a8b2b2336d5b764557b5119ff57c31eda952c24eba3b0b479f2390aadd25f1d33d6ceb86fa1941a54d2b09810efceef82519b1bc62774b4194367f4966b4981a58cf383b277ef638655c309b69610367d496f88d75e7e4e87268d401f54adee622c2980f05f39027a3042c1de28aa3af1b5e92baf6461d81423aec1acff02b9210235ea770ce3760a670ab6cf8d0e831147a335cd5a001ec518fc42b2807745c2ff8442e23927bb4425c25bf48ede99df54279ff44e7b2ed5e35788da8da450705f315f9feef8f0fd009eaafb2580fb62c1864b91f6a526c376425d1fc0bba3aa717fabd0daea6a3853cea8da94dfc2bb5356dfcd7aecda3c44a3086aacdfda7e10995f82b0eb71692797a3ab20065349c9a228c4c7fe075d2294016db052bdf65075d720a4b16e868a217c2d82a20c4cabb8887817ac15fc6b9abdd7560141a5c94908114a75f20d6139b48dcfb9e5c02c8a08b959614eaf4f3e9fef15c68c2dab736a25eead077c39397bdaf399c1d7c724fc187f10df99b50b47687973d2606c6c14e0792e1051f07c8c0db600b7fa41029a7f56572facab0003ba4504a41ab8a512d04c04609febeb70a257fa4dde9ada4cf88d9236e29d21d7b5f5458694256cbc2c6ca4ac927146a6ba889ee80c4bc88089958624f5d3d91f2e5da5260b8575737ddcd4b90e02f7b394182cd845f55636f5fe667295d572a57ac12d7fe5ee31fc59f609119e25e5580f0008dfa4ad9bd5b12a5dada63ab7e93455696d1b5aaaa8c639fa626d1c8022c3fe47d6135fffbb2e11ab60484ef5d5eaf8812a07af6aa8ba554544ab8bd833a04141bcf670f5ebd096526e06781a892cf27feb81806bfb3aedfe7e7f8b2f05f35da0e25bdd3e29b7755b561a4ba7f836e129b395ac00acde55ad2bca057297a069ab7c1a52ecaa998c16a7be5bc657d4665d8fce52be649d9d66438edfb9d6775a0a1495cd1e174eb036df8f52777b9fa69c4d1b88bb4d0565ddf5f6bd394cc62ca3dd060c5c1262e955b7c7b7310f9258ca98ec30477090bc0119d4713a76b687cc80c1023a8a53f9f56a417031d05a195a9880da9b62bb54d211463cae3a684103075259626456579f1551a34c8de9968c84598ef679ff778eb30a20a782f66e54bcd3bf09d6a5ced7b2ed48bff7b81ba8e585cf8294b0a88da052b1697e8c82d2245d22313643bdd1abacf38646d3d7d6688c7f4a1391869b761fae74f6c510a1c531d6093bb327ab7ea6728862b044d69851283630243890f43dd38bc3d7a345899c7a699747d37f04d005065c6244927065e7e751078461555815e5dfd5e40b062fcedd9162609fbbe588920c383a76e2fc2b30371db91bfbc48834c3f2a52347404d9dc588d210d8a957eb4a2baf405e7adab2f625528e7422b7eb4ff238e356b2761ae635d778b583d20cecd550732e7e04a0aa6d778388fb8740e97a41cf7c4916202a487d2280056339f542f3fd4ed285b09f068be12481dca24d169799bc937e55a670f29b6f08cf2b5c2f019d07410ccf6aa4433ddaef9aaad8e8294b2ecc19e93ecb62acfc24307b47915312b6a3c82b0bfb51e62bcbb02c07b90e2c72ad52628c48a6848453252a99b070b29438347b8037993e56b27ca29d461923e5a48eb9fe1b25281b17c39f7f179644b29cf4dd5b098159b810fafc3ba5bc7f6b8eaa49db516495a4f5286f96aa6db9b2f030ecfceb12fc0b04198ef801e627b80d621f4b95d2b9e0bd71d9a6ca46fbf79bc56e01aedac6746c63850ad7fa692cd5fe04072b40fb89aa2d8c8d8c9d6ed32d715719e46721743811d808c0c65822a47943e0152423cb433e1123bb2014d729a2d4d1ef42092348bfa028fefc91a4ecc04d6cb639a66f8d3010d939d9eee7f658f107b5f4c08dc3c10a8de1cadf13b8180b95d2c3cf6d19b3d39617a02322db07daea1d9239bd4c2ea35267e02592cb1b97541bcb8620ec67ff640026d604c4a367e5c1bc81634e58e745762601235516ac94bbc93e5071aa04490dc9846e26f71fee9f732a90e963e76e8b02edfb027045172998be093741276b9a4cf9a8ad9b2d8a2f5854ff26dc7f29e4c9e493b8093a59d364fa266e824a963499bf89933ff442c1a37855f5366400c6c2c2c634ef3aa1fa6301c08721c1a025adeb7a211d9f708ec4d8067501164b1543c4269a58236cd4e2a6fd01c41de75b515bbd0b080bcf6b8e79d2e60f66bcd5068afb0a051588f954460500dfb97fe71d4145f8ca4bf7e32b8ade5660d46cd5506b1babfbcee17032a0a1f8c24aac252e656bf21c415927665a53b73244ab6add67b4a51c2dcdb410adaa7d25d78eb6841b74a56c9a1df08212bbd1741b4a705149d8f156bf26af5572e37571714c0cd82fd15c2d1bfb44a6142586481266c518efc728d6093160a3fa490d9717bf2d2355a334d39a757185f7bb918cc22b6b999670243e45c5074e6a358f710eb776937f941b443cf027e31adce80ed7378bad18138aef822680a28b5d92b5a48559b8088b79308394e49dab642e15fd0ff892508269adf88bb964c32389a01075571c9614487e1c463741afb8c49a91727edd562b1d49ff82bc67a5f9a3d416f9d17984d7a564c62820deec0b7fe3b42642dea6a70422cd3ec19fe7f9cd23e3ce06266b0902d9d73bd2c0ab562c41362e601dec1a86e1d882a8f794f7881577c48905a3e63ce245e35771f07cc4ea974afd66c176aa582cbc1af4702bf57a3e11b1ccefd3567a9fc4682e26f13742ed5429102ecc6e6943cc13ed80b85e57421827e25ff323b3382a2954791510f72d1afdaea2c7f3f145c142e2029e21a8c7c014f424187863f86ee8091391c62a66cae5250de910ba05d8ff184cb4e53b829900e07309913704be2d722033594b0fc0b620ed39960d2427deaf473968c86069a9c735597af3a0b3a5ec33caeac72dbd6c388b5ce34b5ab0a8f6d41d21d3502b28533c93827e5800ba977e5f8e30940cc48dd00b52006ece212cb37fd919125f614e5330c2f413ae4b1a40f5e2281b633adef9d18ed57e58039eccb9fad66aa38214fcdfd2ac0d206145a355eadfb212aaf64c7220febf7dbf6cb425f27cd9bab2d8376ee93683e0325543d6e97f9806edc08335e0b244c3333ca0948f12ef01e1c7c0a7843b1d10c6d00d3c12c34c6d4e4a1067b60ba7908500322a0c5c5727a795ec2ed3d879b1f23dbe566d4814894e862394052cbb1e83e43d6f102e97adb0363b48ad461eb6d6c23331b23eb64dcb3b6c0a2354d9578316a99a9fb0a6284ae11b3645caf44c9ffcf28d1e448e319a7bae26e499c4f3daa97243e2fe6b80d7cb3a20bf90d626b731c9c7fd06bcdde0a5bd54bb9f4625c93ca20c402d9219a510bc0e9c56f9af961d542266633159f6873ee10990d7c9295266d103b9249856973ade1247b655dd5682406e6889dda57e34760de4689bc28076600deb655a33b9595c905eacba0ca11d962e1d084797da62e8e22f8ba3cb1588a7f180796779a5cf3d8987d6d8af3076003b74d00aa824c3cf05867d9c6b5961e03d8d1b0eefccea109b227a9226b86a174107a4933269314c505420983a8c642e022a8209e82f488af2fe71516e0cb9ccbc393eead6126f706034cca3c5c05ae22eb1de9c741806184abf1892055fde12b7e79338e4818a3dfcaaa801bbd9f9d3d681d18bd75980b94ada20b9124d5c66c31938c5c4a834e4bc3178a44d69641c6c4c6f9dbbb65d97d4dfab2f6f7682018b3485eab3c795a7955152e318d39f5bac6d82ed0541ed9f2008885d116efcaed9eb5a7552d32fb9c96c37d5ccc0e82f1c4bd38ab626e7870bac514762919df86be5bd368ee619d71c2e496e528a396e420e2a536e4fcadad09a5da975d240da7990052fb2e1792f3d8329a3248113026f3b228f177c69bde82773ea2944fc2f4d369f0f21ff9721caa99b7cd62db1acd501193a0c076d50320312f4aaf66b808594d00e51b03b9157394abd8dd14c440131d5dbf3387b0c6cd65f1e43e03beec94aedeeceffffa9c26c9526bf6c91cf766792847a18cc04db37a61dd7d9be762385f04420bb36add308e6d76afc8ee61a1bfe7da85224f306301c7891b8d54cce8581b109343b14997c9ef95045d6737ddb7fe866be64f55fb9776d9506393e4b47dd7b93042093efc65f6133ea2ef9ac17799edde3796ffdee7dfcb77dcf3533c18438ed93917b19b2db248798bc982a068bf7a82185343a6fb425df774feff591e3590ff7ffba9203717971ca8577dedeb0b7bf346cbecec2024ee7910dbd6f7571cd29952f2df981f628f7eaa50ac788c59a2dd31cd36d776fb457d0db0dbf97bfca8914144b4ca35b3c94a7fbf457835dee5114523d39f7d37a5dfbf3b6a5cd7952c9eb2f9bef7ad96e3d7d4cd1dfb79ad724bc6e26d97d5ee9804289f4f51edbb9efd7ac6b9ca897b321257ffcfbd16bba27dfa3ec607c924b1b1c840b64c2d4e2ab1c63fc7c60ad92874fe0f127589ad039a035f7183cbace5b6d864f524a19a33329bb8131606c7b65f918c484894d54f21492258f76b3e94e1e18c6a02404d90bb57b9d6f722fd86b8e928b0672cfb6c11cfecf631af7f1b04133bcbc897d31f1cffcbb9ecfe491fcdb8bfef20bc1687883fb2dcf414288a70219430090ba4169fe9c8ae4b053fd5adc1bbd0547c8670c9552c79d97db8701013a8bf0b7c847b092867c7dfcf5ee250ac91959aa1b51b2942aec3f83b77489bbfec5ab2e264ef8d5e58ce9f65117936a163edff67aed2b0c46e3aee03a48e7fffa1f2e8de42d61754a90bc332095b6bf2b38d7e98903a4b3c62454faf18717397589b22b7a7f1e1ca1a80049d807e9826d62fdaaf61c36f181dcfdda75fdc7e5c433bdb4c0290ee7abd07b519df5fb0bd0c8af66e34be7196ae299a945fb1c3ef309947fb81bb8a5cfd851112a548ad08fd12eaae3374dfb89d9116109530671da8f6c7174a5b8769d75d496032403a10b52198b3748571d6b079c43013804040373278fe9a25a72224b6076776b2c2d5e4dacc1089c17d5fa0a14e6266b8e6ea9cf0a221451ea8593875967130607bdf49ea2063e32025dd474e46137e9af7a594be8a2feac04ad1275300ee1533ef90c43bd4f56dd138c5301b269a696f0b6f10f88dc48ddb134c2e415d08e37f47fa57551420111688940de7dfdba56d80f56660bd323e52f4bef68ce23678f3f94d414f1787376b6977db080aeccb3da31c5d866596c7f847a21bcbd40907adc261bcaeca724cead52ea75c66cba3bbf4544f1231168c6c8228d8190fe0a1c6f6ec632e585d3c4519ee3624ad254a6e4023176116d986d7f310d73dfcd30e6247d9e1ecc6b391a15b7bc8d5c2e06c1316c2718601ad2ffc8e079e5822463de562422c9602f3d072f08fc992422d6a16000a7bac1cb47baf8e3feb9b2d708f74b499d18c2a68c4cca77a41863778f5c098379ae1871bfe945ba431b63bc72b7950b52684066f7ebbb636bb64d3341bfc742f5f3dcf1ef9e33d0f2c26784dcbc5b44761f3ec6f09c55b9f58ccc588c79591fcfc518e592db5bfd538c1dde58bc8e94d5b8d4c3394e5b03d3b4d7ff0dbd6e64eff6ccbf5748bf65426c2986b288bdacefbd59a1d604a26c3915c43e5d5dd6add0cabaafde965114c235c02597fe08f742b897043d46fa73fb6c11e5ae101d2477703f03f57fb65b02fce27465076c66bb987bbaeba7976aab186e3665f0829cd4f84756021150325dc9adee12136586f37c01d150ac58bdb1a9f924a018bef9f37fcf314651da38e082eec7c18f6ff87eb1db146aea661c293102f7c92334f09ce581934bdd599ba5063adb38f9b427867885b55e24a25ab80ea4130ebeadc8f685c2ad2024ae73824f32ce09b4efd7529c1228c75abac3ddf1b5e57b383061cad57d426a865d8601e58652b9ba878d23ede5166487c84362fef5eeafb3bd658f323d7d7593b9d28bbe19d26d0ce3dfcddae1c6a1bc04918dcbba6f1afa8d47d9b5df447a6d62c0cd2ed8371150342b530bcd4cebda39040a168048690e3d3d8c6661a59640a815887a712c587184a5dbfbd2709afd9ed65d4c11d8baa12d9cae8351a89d4960d97c5cd575c9cf195c696f5d3585b9e0aab21a01642f5a72abb6554ae3ada7edc30c6e5d8964aeda4cb07bf8cdb88787579417300858594957aacaf27853c2823c2b144cd7ad500c7bcd5d37cef553dd97714c7fe7f52a38dd6bbc8f63f6510840395adb35ab79ddf57bf4cdee8a561304d6ecf6758b79512613cd258375037bb19b12968cf5bf3c42c447b8845fe1e2198ed53a49754e342e6b779901fd6265b1e4c4b684439d2234021bf785465e46485ee4a2c08c52bac297d5f41854ee6d1af8e9eebe7e5dff6fab9a33b71349e07753bab148e02e13cef8702f98bd3855866b89d307a037422059d02df8d7fbbe8b34bc10b330e76056dddeae34b430c676c0d105c7cbbfe4c03b8419eedfb3af324e2a8b269d60f7dbdde0d6a416c2ccb43f9a08eebe4888ed028bfe0c594821cc6adea3cbb88843a87781f5c975b5fcc7abbf282718c021f0685cdb124739f67b59acc13d2efbdb80c2412208ab9763bd97146bc22c3c3f91adab3abcfe1a4502bd3456a0000a3bc810e1ff13366d727859c38819b1616adc0355012331eb301a73ca47fdff44ca0142e21a8d15edd672b56074b02d9b18e0d829a657cb4c0d92e58511074ee559d21b1722f1b21a4fd51427f6685659e312969732562f2896a95f8b7e4cf0675f7ae0f478903eb1834e7ba5df34b5b43fc9f64df7a910253a8dcddc71171ae7409efaa55880f7b4c90f8a0453009f6e91f76f0d7b6ef78f8cc45d9e5ed7ca1067132d83efa663953c067ca4db8deb4dc5ca261dadfdaba886bcf4866f0e1086b385de99661bbe9adabfa14b8e98ea64c5b3580f6179557ca7a1162f592404f9d24b8a83cb01227772926bf1cd836ea470ab1ce4d5952105ca4b254b8249569b72165c36cf7e1232be88a36957d83af6276d27d8d6391691f6be4cd6fd6e31b0d4927dede11e2dc8beeb284ba6c2e1bbe2a0944f0ff2bd3803b6e3679a33c39c8ab82af38eb1f08141bef601e5a952791a0d56f88b008c7c297343ec1ee72e95b7dd24fd2827642fe5ba460eb4ea595038b865d6e12d311d7b81b401df7efdcd2c3140433e967c8fbb255fed9591adeb977c9de7c2320ece483de61cbe4c5c815fa96f967c01549cb4dc7b2bad64685aaa537c7841e432e88227fd0697c12d857976c9f7f6b61610de408c883a095c37e0fecff2222b065a38a7a5c2922f0825783b5da5780b80e215b5e305b8b634d8d780311067855e0e36f492ef68b54506bcc8e31866cc4ca08a4e39dc0b58f2d56cee9d99b2c43d118140856c2072af5d81fe879362b20889ccfe81ce78c9173fcb2592c6c80c719d4c03160f240f4ca392840db0fe28c57c629dab28e3312fc2f644351d9cb7bce4fba35be2fd86e8530040b18fad71053c678ae6408f63239af60872a0ace32ffe677188000bed6f0c972ea00c30ebd536a0af9617a37699b2fb6fe70321db51fd8c3607e8a36f9f07e8bb3b1d52422f5a276f574a099d2d2cca5cd499bbf3e69eb15d4e76547a962541998b72bb27805afccfc78258386721515651292e0a9d244350f8034a2ea7af151db41a31efd71e0868d09cafa26944fb4382709ce45ce9ccc8020724a14898252978a186f70fbe4fefe7eb3eb2846911e8fba7a9f13850c0b654bc0cae468a1e30f4d55eaacdfd7e176f49e234cafc08d61879df83a55e9f803fcfdbd1fb7c5c21c4cce20642ba34be1e0258b16119046b96ee25ed0b622786f4c35b54adf412369adc6376f461e18d1f74ee0365519418483b88e9e1ac83da96ecb6e29cfdc38e063f195759af106b936a8dee452718345f337fa41cb986558202cdde7bca227824f499408c4fcbca51e774097e2a436a16eddf66014d1e5c0b1ea6a32570ba1b3aca504f3a4898f93b8af9bf546c1031cbd5c56deb6c771f1897a7f2ad06565a7d7fea19c065516ba37848c9019a404b747c429c1cad86d091fe40d41ddcd40ebaea2ae1f2a3f6ca6b6aec0155add1020561d173a3f8bb7e98b80f270917be452f626dfa1048bc072d1f3bde22176030c5e22817194e80e1ea9102d93afad305963612737b3397819b5422a78f629f53f1034f39283815ff50cf78bdf3e2579069ce0ad35d9a577f08c056593b15177fb008abc8c71327e48eaf1281177a10f9b18acbf9a453abae6ea5b70cfbf28687255aac9a7277f0c6cf552386fe8ac1db924d61cf72929c4227eba225b405abf9b110b91b8b61de2459cc7a857ac93a1c0f8ec5a14a812aaec5e5ecca2e4b3318776f9e74da5a565b4235106f15293c1638667f66ce33ccfae40e484e18fef1224f541dbd0c7925e9ad1843bc91986f3749fb4412c5e20534705516f005251973d24121c32bf22b39b866ca826a0a4f24176a7606b3c2a4d8171a23fb599ee2b679e6df26f8ed84ff4ce04f04cecfa1087f8bc0b711fa13813f13989f8b268e1302f7b357b1ffb0fdaa714046c4e8973a46a7b624a71b47518082cfde89747cccb19d99fc89809f23f42d02d167cbd73ea4ac7ec49ae12a92daaaa5f43ee2af8fa887a2d842403feefc27b651360b149cb334f3140fb02a90416566ff9bfe787ed534690d43345717326a18188341f1d5d1a826642b38ff5d2e280efbe83d925884567dc2ff02fb33cf81988beab3ca96ba9f917a5855d907486bef852a236eb9c6a9200e586058b272c521d87e5991f624fff90c94aa10826af46a3a9ff61cffbf6c9e93641a0e3b46376d3ed26111975c096148a5b044fa452234928cb4c9f6bce1c6e8b8ee40ee9cb1ca73ec216d9e66dcd85928af7384019cc2ddda55271427736ca2c5194606f9732a061a3ee9d89db371915e7caea42997d1c6707026d96ea54317d87846c9a77048c2d7535718eb16cc7a7cd07c99b2fb4d0980e948c9cc7d4bf5e1b4c95c855e9424a69a04cb74ce43edd012e8341a65f5215ec1852e31e495ad549db47810c1081d46827b054af9e62c48618c07707b61a97a3631441355ca033ad6317ef39509b8f7a30f6c4143da1902be9fee8224f464d0d4930251e3562908e1634ad59169fa9ce3d9d91cd87b17d6a0552fda76aafe20c7ca68c86bf38d8d54b0f94b0d3ef8c66725a854d5ccd9811f6dfefdc157d34a82a94b6897d12080e05c45bb327396d40c0525e5eafbbba80fda053e8a6ecb567f3085cd78a92e6a941604e6cf60f7f308cfd703564ec0622e001599fdf5e22c2c9942861395d9d6a992c16fc60f187e2f7b0e794e1127e46a832f625700758fa99c5775d6524f6164e1a9b1ce60b8f990e4100f34295c8c5931b9971571aab6c204644de027bcb1b33c1d9c87dadc277d0b2152d1a2282c0bc11f5649ad8e8d93e5e57db757d51845664ca3f2fe2291cfa51ddcb9cff1e13a9757ae829a971fdfd2f79e6292c997b7e52248e0d2e7fb58870288656aaae1ac30ce3e222b7c9dba47a04b88f3bd071be401f43c51485d217000b07cdee35817e9e879471f3372349f088c4a41a116e97cc5cc708502977def1f30424bd506356a503745391a245bffdc9767a3aa4ec52f19e5c502c83a7b35e65d2a70a44f9d52c93fd3f4e805d657a2d71346805fb3d4f722c5f8314de1f24e5b841dffe63eaa47b314020ddde6e74fe29404701f75c2241a8920a57ccc130244c48019565733697b34cefa5822c86b527c38fdecbc72fb08dd03415e83a9ff6d1ce82c1f12ec1e523b41f778d7eb1791e6b1e34802be6a0545598431c171cea7984f81ab61075a7c25dcd913bcff27770a62af3eb853201541601bf64ad1d5f7df19fb68ddeba27ae1ffa2e51249a718d22766741ea812560ae299e94192f71cd268638f602072786667db384b5c4fd01150d081f1c947123932e06559f02c06a4784decee5ced8273ce7c1b8a46a3bcbcc6909c0c90d702dc2a369f6092b54dae20d55a6bff02688045f597ba14cd58e6447faaf1ab6f89d55b9fdceff39243afe1588236751882b7d97968211895b554b1facf95b07f778352f77c8c48f70fec4ecf06cea485a724faf7f7edeb8de47f4d6dc29308527ec541c9cf6768c11e57ebf0182b541746af85b70ad3fa55ba8a3bc74ab7b8353be8480cc4d660675403f4c190653c60fc7203ca036f9e562096aa5107cf01bc3ef1934e3d3334bc8fe4b31c42f209d60dbb6e1b3d82b6461bfcbc93135bdbd79b240f4d982ae18ff303c71ecba82c30b48bbe3fcba57f6d1601ffbea59f72918236d28bc8964df6de5b4a99920c8109d90999094d069629103f770b8ea000cb7e21210196b9c748e20ac0e70641105900f0b9c320c2058c850306d0c8428755cc0a03b4949e52f3849a9f19963003136e683772d8e0860d44f81ebc4f4c0e62d438c54e3400d23440ce086dc21b120d4988e9647ae1c7cd2eb8a45d14d25003cb660367596b379a483398b4e0c886a48710f1750dec9fa4872c0980983d0800886d4c4ed6b61817c4dbc95a96b5ba6ddc56378e080e3a18c0060fd3020b3f6a66b8b1c1061f2bf430f1f81ea224868bc1fe272040b68e7ba125d28e6deee00d00788a4ca214a9cfc4b91c0577b5e27ac31ea28464faf183b617b209e932b767e236db46b98e764cdc86869ec824e2f386442426963d4409ed21442c691a4fa269fc959033fe4abaab10d152607fa722e1682f6e13b2a7a802f65fd243a4a084c46122891ef2a469bcc85d0515b0a4cd67d23d93ee16001aa6092b9865cc3254305320861862bcca28a38c32ca28a38c32e60aa60a6a3597356f5cb7bad51e640e7a90382e3c4c0f2fcc2297d1d7a61f2dd80fdf1f3404fb7b32f2e4cf05a101db70061e99be058913003913d3343360ff39d3b5bfe9846981851f3e56e861e2f15222edd846a2d02504da0fb479b5761bb7553a5dfc8ba9f8e2f770f11467bfdbc4c82e0f3e1993b79eae85ef661dadab753fa7896a75aeb0c7f47ad83c756c9e643e4bc649eb158d25a7704347cd1c2738be0dd31aa10d566898668859fdf054c7c2996ae176777777f76ce14a5537534d1b75a22efc6cc2a799727b029dbc13773a9d96cc94c75c68ab99729a8fd50aab1eab553ee1dcab5ee17c8373c7666ac6624d9ba9e943ccdd0a620e69341eb4175ac93553b4f42431773b260b33365334f643cc9de97b88f94f26319f6a78c46e5ee66aa66a5712734712577887489b29da75a2a6618ff9ca6402634cc05ea3805d8aafb2af4e38fb6ad5beb29f05bd27d6e7c4fa54f4ba9aa9ea9aa8d55cadf01703c5bc5815b42c6a577eb62c5eab6ba66a6ca2fc4d265a5d3117f64a633355e3a8b11aab31ea9aa91a47650275d52850d72685ba2aadd2b073b36e75eb29ed7494de64b2586b9de63635b7e9bf4ef393f436fc247d660318962ce8f19334019310fbcbdd658940bb69d3eebede6f1b751be9a5baa7cd7e7c4cb130e5234d374e4c54929a9b89f2c6e228cfbbcdaadd729bad5b2499ea3ced9051289544ccb7dd6e35cb4fdeacc642658b4bfdd075d2a4ebc0e13fe9f08e6fd74cf5ebbabcbd1583eff2a2a72e6f9fbabc2894d8e56ae95e745bd66b38ca7f749d3c0971d7200d49e3bfe332d1e1506c1bb440f66ba6fc3d8a45b76dd0b250ec98e8adcbd317591058c465b6fdbc2f06fc8f4ed082ec0feb72ebdbeb7874b5ac3ad514983aeaa8a30aa3aafb700a4cedadcbd37f2b12b95c102c2212e9b043154922d8a4b1964ef43a4219aa600f2e6fffb3d7e5250e3f041609c59bd02574795007895d3e04eee022da908b4b75915e28f4f66e18a41f022ddd2a0689b9dbc0de5858ddf2c49b907a74d219c3c5706138f1f393a4d5e89a0d9f76a3676835606cc4dc90c5a0f0ed74946d8a64403d0492266992e674381d4e87198d939066985133eda49ff732c64fee791e13dcdf751d7d42bbdb3c536b59bd2af4f9c3cf312720351df8ddc936c8c3c42e9d4bf7a297dcbb84d7c5fe37adfdc959eee5a47db5849eb3df81dffd8364833d700ffe077a6091ef9b12dc8113ad485b4e0f811283453ed16d3ee6e436a0532ae481ef89f9093dbd0742d0e78ff1dee53b0f74013f74a98442e216ef3febfdd7814540d03f70074f2489b4b31fb803c51ee7ddff9813e8db4020f109c59ec804c5d44f1d27525c4193294603767e20903229732983810b6a98064b18b4608667108316a6c17206685ce1292a5b9e4c3cfb6593ae62a6c0ecef9abb5ce57eeb70632626a6e256c11d5ab4dd9ce29331157b12246deccb04a1c1062c9b86d6b0e3f3902e86d1e7192c0ca2cf33610c960120350d4cc804fee88f09804b24501bbaa6c108d87f0795b6c326b5a9c70f915503fb87210db0bf0be90cec3638b697469ee411b03fc706f6f7a40eb03f48d6e0061becffa700489c201f4303f6efc7fe33076906764fccf4f3893ef727ee6953c1f344a21ef984f3299fb0e7530a255154e8ad4e2c637cd4201c7c32c613f5b852a6d12e670a2551fe42ba1aa419d8ffe4137f4e69a5f3522ca352b670ff7d0e3d4ef5b9fda6fd44295133a41e9d3dbf6a3f24741cc751e5511f39f6bf4f62c5ef93c889f2f73e4402249e4cdcbda4e128aa282affaf49d7812f15efc34be57b3951a01008c226f2073f99b886340a9e2a2f9b709d77bb15e4418603d08937eb555abd5ae79c140c7522138e6b7de7685de3fb5cbadde7a4b4d6ad3b9c935443c843633b3d10860e4552a794883b0d411e1a8b46a31d3b9c542a629a6e6a9367c508c1304030660ae64b0c2763eb51bd1da01ddf8e1d3b765870c78e1da11da20fbca6a8709c4f2a124521947e9a95d6596bdd9aab9decbaceeb68adf487ca68f549eb963dbb8f8fb3e13353e0e71a5aed4749cc83b766a24e271b6e6eaa8fcf47a7acc91f2513e5b23d349f88ff28429bf3f1b174ce59ddea46f230c4124e3a420dfaf8483014c6541bee33909a1546292213e56d3ba56476a29cc194cc94b32151fe71d430137cbcceeb66d8dbf0719fba7d0eca3e19d36400966eb54ed4930af33a0edfdcd41bec3cd45a311599a898fa89ca191d9f8cc9b47dd22ab9ce0c8946aea146c834f508db7d4eea3535ee69b81ace4607f2405f27fb384f3451580ac1b2867cb13c923de9b3895934c3d96358d2ecd643bacf2295db0ecdb68363ca715c75dfa1a1be1d60621edc038b488943a7b5d6de98233ede8cb6d1c6f5b7ba858ecc427d63a29b54cd44391d74861e0b7b98b89b22d98e67cd4c791a12e5af061bd8dd0deca1c7402085f180c2cc2286678618627c9e194e8693315b647c33ecdf6e3b39c2f64947d76a2008e61c387774e46ab538b8da9c5151e394b6dc40d81ff6171fe3455cfc1c84f2f3d75ce09385b3e70f0787a35ae4665842eba7fe2e8c90e6a011d008336e36513d9333fd5e8450f67f322c5df028cc973139c483fbbf29ebd9dc8a03c3e9bb54c970bf836213d5efb2507e06c570bb2879c034c4c3b917e19331b96bd64ad92d5bca292ffd695f3e47ebd3baf1a748cf30e7ab7905153fcd31ea565b8a44f957d16581bdaf8c0e8516c12763f293fce44fb2c5957edf242ced29e6281e68f39efbcfbba65004616312ed9e3ee81341bf5d2adb53f1aa4ddc52415d0702b9c41593dc46098beb73dfd1ee6d523f55aa8612a6244c6e7299559e66cf2ae9bb80de677c666033b0fc5c2b0c23517d8ad56b75daeeee3f3771faac35f8be7cffbe77201d61ee401d57d15612c2dc610efb7b98939038158b1fff238d19b00077df3d28eb11b2763651be759e34024c9f2a738dd99da78bc8e7d93380cff33561b8f38c75f69affd4d09d274f677fcdd01e93d57cee1f9aef6e6fe586754ca6db67d62b173a37eb7ee7eee9babbbb7b522a5b5c9e7eee7cfc369b29501171abcd148886c35623c056c3fedcca6db82ce4c9df9fab22fdbf71a6b82e341111b3e90720e61780984f37885c678398bb70889843d3d720e63fdd88f99412734db7b2ae99ea6013e5dfd988b90b691073689a41cca69741cc7f8a41cc2721625723e62ea41173680a2266d3cf88f94f40c47c8241fc9928f76a4e28319ffe24e63799c20088390480d8c588b90b5d107368ba22e88930a2479bac9902b53c5acdbfc914865ed785a1e9ff74ca74854115a806f207cde1364e404888430ef9de1fe43353d645933813e44302d1785cd0cfbbe10df4fd1ec8036df523821b3f749c03f7936a2fa08f086ebc4c0cba52ce6c2f5762c71e1cb8ff23821bb8bb8527d540a29616448e0b6dff723771d69674a50a449b2950cd1fbc54bc6a8bcb6f601191048bb83c111735a61c6ba6be71648dac9135b246d6c8c2fe9c6ca6bed78b93bd38d98b93bd38d98b93bd38d96aa6bedaeaabadbedaeaabadbedaeaabc166caba3a98757530ebea60d6d5c1acab835957f7335376e6f5745d189a4cffa7d30ff61ed0eb01bd1ed0eb01bd1ed0a3cd9404b56a6a4ea77f93290c3d5ad785a1c9f47f3a815a2908c76eb2f2f7c2de2f0ebb0bf7fb57db700df767ebc23e5db546ed8cbe443783ac89a5bfcb75dce07729087398270be3be39e45c442e0cadf04466e8fe78f0862cdccc59a12bbc828f1fa2127485579860111fe24db80211f7713b1c5eba82a8857ed31ea0686f9e3fd8f6f792753e73c6aa850fb2262a74b1f8b9ff42f7c39608128789d0ba218784beff7bcd94754d547fbf9d499cd2f7e84d3bfe85c777bf70b7b8e3f2f8d2ddb089c7f78ffee5bf9b90c788870e12f3104bb79a466b58575b57e952cce3b631672f3b7c4a779a46a2f493c9f1cb1a3b986a946e63d39598c7cb0e510b497c31dd1751ca99d295387441f8fb2d6da648df2295e1f630d89a292a5b4a2f7a797f108bdbf0f81def0f7a117a7ff08a1c12fac99a289738a3bf2f3fba1bde110a41f8f2fd3c5e788837e10b8f9726bd88a35b77f0204d8a5f2efd59e2214a3fd1d1752cba12f3b84e9e843b68b268c795f88524ba4d76465c12b590c46fe342229128e5cce8ca9017e26687415608b6fc43a050c7b14277c37e025933e561f88119087387b70a7e56745d3e74295ea13ffcafeb3a1b0a89bf7d83462c78bbb7a0c9c235f807574e89f993add3772aeecc1fd59609caec74146fa7a3b8ec7414e76e2841376162c081252c0c2b332c616250c1fe23711ac7e45ac35e05dc2f41effd11cffbef3f310ad07b9ff7d6b68f27ca405deb9f9ee1feaf6920b16313c5e32b574fbf5a23eeef8a3869f2c3f7a03f027a09fee0e307d0dbb76214df83441ffea08fa2922a1f47ec832f55126c72041463b85f47aaac0822f9dec79119ee87124545c3fd3b2a0922f1e1e21119ee07f960092681f2f90bf777627b6213f14c5f35d65d1f3f78df7df7c2fd9ef79e8f27eb15cef455579567c4955557b299ea1ef499fad04ef4f143f7a0078951501aee972aa9fada76458ecca80c37941dfac69651c2a1f2442976e81b5b4695f714e653659ef7b5f543f7de4ba7554f6113d5bf428b331c0dd0c0051bfbd5af900c7440039eb19ff6b88d846107501042cfa8da5e36e5c1ddddef3f3335927501c7a8ea9fe35cf5d3573ff7b3fdcc9e176cc666b42c6b38bbfcc1d97ff2fca1631533f5a1e214338db99829ac6e5138b7717c3226773c58e2cc9f50a6b840d9f2432be10434185552bc8f1f86dc808c175071478aa73fe40664bca08e9d71b681042ba36a13894c1a84b656cfcb9c0c875d3776a373328923c2fddc1a92f391dccc6d1af77334b7f1fe15be18eed389bab4b0ac21fc40b55610e7a33e141a1fc060ac21ecf71b84d7240b3375b128cbb13875fdc0dd5900fbcb54374a943fa95f04d8bf9b5205fb4dc8c9f0f65ae8eb305154ecc671d24f7ef4ebc6dc8ddd58415ef53c90573d0eccf1543a445135e88937d415ab21ecffea67eaca41986f5cb5de4c1c84ddf7943b7c83f0241d7433156d10822ae892baaeebb8965db7f51b322e6a318e67cb4bd559742165547507e458c24af581c260828f4a0e8135464cf5d92c5bb8543978029699ea0badf1043a62271709ca01117830e3ac0f2da682d86ba3dd1923a875459a8ac04f5e2fe8e68e09e8e90da9e00c960a0afd9d89050d1fd516eea3a8be4f82dff7f5febb3df47b62ee4b64f645c2fb5bf3515444665f249a741d7548dc430d9e4d266682e2296626f8494b10e47d8773de80bebe77ff3fd0a53d4e670d42ee3375712f02b799221314bb680f0716e9c42714771ddec01c384e94930712dc18bd191498410b3fd0952654a1a976040053919c06ef157cf123a322149f82e5062cd58e8d4f8db5373eb690a3a5dae1f152d18fa28262b3030eccd15241d9d9809083964a3a0d3b5e1cb419a68768cb8d085508c347356f6f58b454437030ca6aec252267fc250e7854548ca29a6984f926d4927234190281425fc552cea886dc800c98ca0712fadb6f22941ba8c054548ca29250241434508451b5b361d132d10ba5ab3801083015941d520a582ae934ec7445184fa41f251bd4400630f922e4023980f930e26bf0c0ca8fca35708616349554a501041a7e325bdee00431a8a9da8a12a88047257180c6d8523516b30cf0a8be1f3594a3e0e00226a8f580e23d2b70c20746d50ec8072cd5161f3c483870bf8403b7f8491f2de7bc12efb8c8a04cd91c234d11582a2a6ef1b1437ffd2850464668a9a0ecd0f80006a38afe8e8801968a8a3b3555c218a5128c200499ea8321428330df6087e202951ed50e475349a7e16341942cd4d0000a2fd5fc3a04dad02741214f4a97ee87770b21698316b8c04735afe38e27868dc6927e8ef3f93bc96162da34fd39f890b2bbb368fcb9f883f23f17239ebbec40f14765d31992537a37179f3f38e735e24d30871f98ee40f15765d7893fe9d2bb6b28ef602a677e90fc347194d9fdf37d3584d28aa49f6c4bb15b094f0c0a359e4a86101c9000043b68430822f0400eacf0c0ca0f76bc60c6ca142b5cb8b020c816af2d66b0d18d67dbb66d0cbd6e68c20cb618bd1304b9a28c1e54594d51071d38d0c2042dd8e8c6b36ddb36d2314460051598d0c61816c880ca6f50c70cb498c299a0471668cc208b1ac0740005fc6109d3c11c9f103e13c751aeb35d487be0607f900c305d00669c260f1985a61789d3829cf901c402e04d26ca82aedf08fcdc8385d0e798cf30849f63a8e10689c68ecfb206a4cf52072f9f251ba5cf32082b7c9670f0f82c9160fa2c9b10851e9f2515603e37951f9fbb0a0b9f5b8bffdc575af8dc5fb8f0b9c5e810dccf01aa8f5ad2adf8ab967429fe369be44e81a923c9fb19a43bb1c3dc26cf31703fe936769874711896a210c8d49cf265916babb2f34021fba42bf11c676a8e2151fd3305d905e739f2c8997e9d3bb3985a348d1596ab87e58dd65a6bade5388ee338aed65a6bada552a9542a95482412894422bdbcbcbcbcbcbc7ced85255d27140b16ecdf5f803990feeb2f36b001972706072ce9666f05e6d0d8a3223b0bed2c9d657a7796cee28592fc385349c4ae1b3d49f4c691378ebc71f49d9de9e87cd6b1331d3bd3b1331d9d9ff9dbfab2f6730dccb910c68530eeb91046ab95566995566995565b5d57a2ad126d9568ab445b331269469a9166a4196936f32e34bdfc1c5f7e8e2f9f6b463a96933325296748ff7273f7227672a6bff67357e766f7c993677ed20b75dd0fcc67ba66cf7ccdd67ccd9ee9ea5e73357926ab54299dacc9335793e534aff94f2d954a62f699ff78cd6955e47e3ce632f7a9b5567777cedd3dcff3dcdd5b2f5f398fb37c7496f3f88a63d16a3fb39f1a6df61393f9c07c64b1cda75dddd32f5be2b6574fbbb657af9aa759f64b9c8e15738fcd6a1e4eccbdc2fd493616adf6634bdceb5c913fb52a49eacf4c25c9f595eb8bd49574beafdc66dd9ba4facc544b49f2637dd9d295d791f25d8f27dca337a2063749cc3ffac63212f38d8e984d574c2531874d2289b9ab5d124122843adf9f7373639dff409fd32a6f7c23cc212ce7fd4333248e03de3f84410f51c0fb8768b88d0fef1ffacc14952d4200f1fee16ca6a84ce93a545b1af05474aa1f686e9380396a6e83e4fdc3d84c05b10006ec2489028e33d553803070161a43ad102c3473195d5a33e5c4fbbbc066ea89f77799cd1414ef1f8ed9944fb926df18f159c6b29465e993252dcb5a963fb9574b3e374fb372bb72f7e47ee58ee596e5f6c94deb5aee9fecabec3cd959d95dd97ba07cf657149f3d965d96dd273b2d7b2dfb4f9eab3c79f264e5e9aac0e7d9f382e2764fdcce89cbfd6ce0723edc8b636d9b8f1577abe26e2c2a6efd9982caadb15b776e5781fea2b7682d3a8be6690cf4aa2dd053a280a2c24484c42043111c0820812490c8472ce90b34165748216534024b5f695657b94972be73a8751f708246364b41238d43383e3087c661ceb5ffc94e76db170a7dc7d3b1b67cee44f0390cc16713083e3f267de0f309935c9f6b3029fca15a3e77987aa00333bc9c29269e86b779eec5f96c3f1c2b8ccf211e89f1b9c3a311189f3b2c922106212f89bcc42f553534417eeb59f2fedbabfad49f2cdbd6fa1ce2e600f780979733a5c4cfbc9c29093c10185e409d5e1ae0e5015e22e09d8c90765d681f5b9a15f550459efc8f7c089338256f9ca8de22e62e148198435308c46c7a1088f94f1f10f36914c39f999ab1d622fe6051e7013177dd0131872d86983b0c3187b5d56088b913b94459c4dc1d9928ffb0d51c1073b77a80d8ca11975c4e55ba5aa04491012b507c0e9f70e263627ec9dd54a5ab2549c33ae6820bef2fe2d9a209269e27e4799825b7b29ed2fc4555fc4dce13faaaf3f11f03e0975c3a858516de5bd0e259f8dc3d99c08b4e5a73c99d16784aab3c33d5573a8b6ff23964f2302f676a89175f54e587c825722db9ae2a5d2d5d658ab48972511509f850e2fd8f34cffbc348996cc96d1596157af8f7aac7e7b0878cabeb8169fdc7d9d2d5d25fbca88a3fa5f98b5633d518f8233e9f282dbff872a69078182fa4c58827e220ccc557e0fd5b365350debf7d662a8af7f771a6ba8b9df7779e998af249dedf6133d5aceff15bcafbbbcf4cb514ef7de5fde76aa67acafb4f9e996a2a3dc57b6be0fd276da69a8af79fb5996a0bbcfffc99a95ebd3f6dcd547bf15dc54cb515ef55de1bcb7b5ff1feb636538dc5fbdb9f99ea0bbcbf37ce9411effdc5fb7b3c33d51b787f8fb5815b635fdc0ac372eb8f17776369e06e3e572ec7625dcea78bcbfd7071bb57066ef763e5763e5bdc8ea5c5e55e59dced87e76e2f0cdcea73812b270a01df58dcbee2ca8932c07795db565c395105f8aee2ca89dae17b75e544e9f06d812b272a876f2aae9c2823df53dca672e544e1f03de5b614b7a5dc1e6f921be5eedc282e945b810bc57de23a719bb84c5c0adc277702d7c96d7299dc25ae12570237898bc4bd475c3951a72557aa8cb8f535515ebaa41ddee83f6a4b571476ff719f17aa2e9f93733dcc804bf253e91770b714f142dcd203118122fef3e13a8ec0edda16f1391f81ff28582402e24d5844114fc423408bf8a473a16a732e878328bd0f3e8837618e0f3933a7f4df6673ee863fcee6dc8abfce027121a085880fe2763e5c8a1710ae3a1511cf80eba4f44d7646cc80ff88b854923c15af4a226ec9c9f9073c04fee3c02210106fc29c9760919c27e210b88d85b88d1f704bcf813a482c8468f25329e74ebc80bb45491097ca962194fcb7422804a192cff92186106f42252fc1224a9e880fd138e7767e2a2911433f95de075188ab25c93be0b69c297d03eecb99d20771bb892a3d031620029144344d54e9157065d364c7a5cfb9fec3a5b225e77ff82fe79adae6dc701c47fcb9cdb9dd388e483ee713f0df071649807813224900929c7bf253098958e3a7120de594dee6dcc63e94fe939ccdf92239a29433a5d7b9394f64e6dcc6476e9eb807d14923e066e973809ba5cc0037cb180f37cb9f02dc2c6b3bdc2c693adcdcaf1c6eee1e2337b7abc8cdfd83c3cd5d23c0cd4d53ddec2f7cb3f710b9d95d03b8d97d0470b3cb6eb8d96336dc3c59436e9e3c3837cf550d374fd7cdcdb32775f37cd9dcec341a6ef65af61f196ef6550c373b8f909b9d557373c7686e6e59909bdb67e6e65e01b9b961b8b9592fdc7c42d557be91b94e9c8400b84e9c885cb84e7a60f1e6bf0e73d261989b4db885c9c2bc4e4438cf99931e78053b73e2c4c3d91b9d84387be32b7779f264f7c94d13e5faaab90bc17ee01cde7cc2398461f7969ce56ee59aeb0bfbd7d74c495513251809114c942e4471d9b9e190805f1b24f8644c9e30959c29f99a75b4b0367f3cad6435b0d3cd5c9d3a13ddde08db7fde4e75c3a9dc95656d53d566bb6aad5ff455592a19cb2e53f5ddde0873886dbd79aeb04ad54dd66c4dd7ec79c1623e2b1e56eb058bc97c66b4150fabe5eaf9a9d166f3469afe54733359ae1be7e66af2b85c2e97cbe5627263fa53cdcdcc75333795abe7058bc97c582c168bc562b95c2e97cbe562226b3577b9648d5696b7582c168bc562b95c2e97cbe5aab15cf5058bc97c6634168bc562b1583debd9ecb575218f89f5ad93aba647c562b1582c16ab472b3e5d55f373aa3dcd340b7d3a97b94cc65caaa4e94f3537212b610ef1bc52f5c92ee438657c728459c6743080a7b6f76ff716b56cff514aeb568493331ee3287f908e30d760ef8f82fbe90a774e4dcd4c757de90aab0237367553430d360707c70e017390360cb1c1069f6d032d0e39e680a1d168341a8da6330316d1f96c10626b84c410830c32d819689881061a7c360d55c4d36ab55aad56cbc6d260934adddcd81a706ac0c1f1d9385dc8d65a6bada931d49a53ce46b71c991886589c2136d870c30d56000310c00006e0b307d08548b5d2f1ca388e56a61e190011ac525902e040001c7098de3874a1b6d65a4b2d0e458ce49083d561071d76d8617aefc0830c478b438e39288d46a3d168b4d64b8f743812574b321645f249eb367a6badb5d6721cc7711c576badb5d652a9542a954a2412894422916e008b8cbe1e386c898046b04a65390210c0e2409fbb34fc278be050a488cf2ec24dd84c01963fc790a91993ddcc42e2e4bcfca9851c227af9d38ab47961ba266bb67c66b4dacf3857ad56abd56ab5e66c565b33c619b145402346ac901c72b04274d0c1ee20a4003b14a0003ebb005da8398ee3b818de9f8b819b41c413c3f8c29d54a61453ca365e19c73147447f06b1555bac8d86120fb600a0111e6c100318c00639c0012c0282dc9aff640f08e8a1079fdd4317b2350caeb6b8da126d21e21122e2a1a29cad292743f760811cc9b14740233916888e8ef50108121f902099de48babb7beb20db388e23153f4921851baf8ce368595c8d45625109f8c1260034f28345a1eeccf406a20bb5b5d65a6a3720941bbd5ca12101616516c0002b134410b601320e6880031c30bd1dd0852c894422914894b4a1a81555acaeac56ab1ebd709bce4c2b018d0c61616e9e0f7880858100150858224effc9228828a2089f5dc42643a54ccaa4ec08129d1c1d961dd58d83410666ce4c2693e9c70a3d3893c934dd90386ff4905a923989a4212ca926c022018d24c0d61f7eb055014964be5e19fe9340240102089f0d44558075294b320710481660e9c0fe1f03acdf2c7d901c99ab2905cbf728c8546d6743e2fc400ec979f9de86b439d5fc674673f5bc603119add56ab55aad566dd55665805d00688401962688202c4d031a601d402384038410c2670bd1856cadb5d69af7af35350653cd2967a35b8e4c0c228f8887ca50526285008d28b1408618c20279c0032c0480dc20ff4922204004113e9b882e44126d51453c55c4e3c344739dd0fa2293b351fb2233329958558825c2be5044046c11a09108d8178c30c22ee1fe8523961c71c4f43ec25a6bada51608751854d2951a8474841565246c068d206145494840a484049450627a2bd1852c89442291644854661cc7918a1452ea78651cc71ebd7094a533d34cec12a0112616e666ca02ecdfa48985b94ed0c0fe9f133b0198271378f2c4673f91695a82c160dd30681a3374602c180c664795cac0b47ad5ab5ef5156d4557b16a6501430c9956abd56ab55ad20dce0e21e39035225885831239d3a3d168a4a3a3a3a3a3a363adb5d65a8ee3388ee36aadb5d65a2a954aa55269d2ba718dc2ddc405bf7cdf78f582ec4f54bf3d85a3d168341a8d74747474747474acb5d65acb711cc7715cadb5d65a8f4899944999c96432994c5f9392113602a01123962c39220bf94f22919140c267237144e746a291e8243a8996404ba095e825e8124b4cef2596f0422d4b03cb7733644ac4e39b6771305c0c692382790f2d84511a4dc433532693888753c24a0034a2849d5962093bc384896d32e3a48913273edb491722f908620a62aa3912e4450c30b2b4aeb45aad1a31bbd4984c2c21a5095827a09109d8179e3cb12f5080029689172e90ff64134c34d184cf6ea20bb50f93c964f241ca668eccd98463be31dd201db942436ac29e9c78c23a011a79c29ea0a8c0094a05a04099de50ba9025914824124986f4824c6904f3c28de3d8a3171d0e48474125e7e6ca8392020323030383c11c064d63068c0583c1ec48868321c7471f7d9433545c0a97c2f9388e340e2a079dc36d4ab42b57b2b89c78020a283d364fb356ad5a6badb5ae56abd5eaa5573b4c580a804698b05c134d58ce8927c01c1ac33c7769fe93503c0105143e1b8a2e54e29cb0a427dac0fe504051810a58923f1438b0ff07c5926e148ec60eddd999de3b3b5ec861cef22cb07caf42a64c2ad971481cfaf25b8e9e43dae4f8aaf6f382c5643eb310669aa9232613178585021a89c2c2b0b363618812c5f608c39d91d2634b692952ba50731cc77140de9f03c205a9b25a0179c9d9a84c896e301f443c724586a674ba72d2f9d37d810ace07eef111ee4895d50b0c2baec4fd0b0c18f4d22c32ad2bad56ab5f6046dcaab45ab1b8996e2a40236d813656ab9056450807762b441755a5ade82a5da58a8c4ce924339bcd999c81c3e71b2f77bac1cd58b3d9cc72239d2b2f586badb5766645739ce31c75eea432a5e0ee94521a274987abad46abd1b39e31c830819f3a865bf6a2348ee3388ee3c6711cc7716c58c31ad6b0554b018db414b634658a2d51e929465fba3050d15334154d05155da84b54a69853a0820a0b5880ae5694ca6ad2aa98705841db8ab6c28ab6c20bcd59ab215347688f2171605e7e932187c8bcfc3681b4a12d7bc17eba2e0c4da6ffd3a9a657ab9594957a051ae92aacc80a2baca84a15db57702fba282cfa8ac6a2b1c0a20bd952a9542a9ddebf742abd2071c34e214c87cac0bc348ccce885d56ac57a81010bd0c876735d03031b4f6701e6d0395a7416ad456ba14595d2aab45af5190dd379271456a2955ee7529a9c9943e65239602e8de385c6a2d1ec88fb925842bdbc78dee6bdd0166d792e97b6e48c184ec1d0b9344ba9d5c221e1e8f410ce6deaa36e8e6889606755d8999d559105ab691d47cbd1343d879f7c9c285fc1acb5d65a3b8e3efae8a38f3c5540237d856d2caefcd758d8be406300cca1453c8d81e6691e9e2e64fb029486814a8587278b2c78b4b8420b5adb82ce6185b695b662a5ad78214a6b97cc82e5f71599ea557d42e28c5e3e1472c8cbcb87226d609ad563af6a6a27dacf4c3ed8ce66b3d96cb69aa986d9d5aa5b0bd088cccd760a566432d05cc8dced3fd95d3417dd4577e1b3bb8b2e44eaee6e8e76ce94b13ea6f5555ff505732b0baa0a6a0a5e76f4f2fe5e8e08bba223b23e69ddfa8c6e98bf370c3665ac2fd3210c2667d0086130baa1193a309875c3be517a971a3bb3b32a49a68c6ec6388e9ee78d33e56648547b1ab85de68dad2c60384cce8c46a3d16834d2d1d1d1d1d1d119c7711cc7d1610e7398c3b4d8c24e2103f6c70a1719b0a49bc1551720152e2ce9664bc3fecd82c34fcd028dd89b3d2c5a9a654b6faf4c63e92ffa0b9fdd5f7421d2dbfaaa6bd4596da3c22a0bea2bcb9a8c03cb1f42a61a365158e2702f5f2587e8bc7c1ca4cde8ca4cc6e4e8e3486a989d8d856b2c8d65abb4b134162f6467724635ada5d6566b376bb9292fef6fc797b7230ca8931e0814eab72f62bea81a976b6772c67f74adceb56f348d1b72e6bbca4d72bd51e290dedf93227174dedf93a28770efef51719bd2c38819354e54f646d3cb88b94b3265f4288ce3e86738cc6133e5519082fb61eee36cc8991f344d7fc96713e535dc5ffd67341a8d46a351172c2c57585734a0012fbcc0f205ed2ffa8b2ffa8bd6801758bef862031be0408b76ab5bd3bb5bddf242dec8e13c63f9a65132d5575e92745e3ec84a9bfaacae92c4458739e93a4e72a7b874f8734bba1cfea625dd0d27b932a24ba864ccb75549ef149a19010000008317000030140c86234116885992727d14000e62a0645852340d08e5910cc380ce18430c000002000000003252d3006de4f975c53ab994a698dda4a8ebfa137168948145f92f9d582a8423eb2245c3c373b4b33c6f30e821a83e21cca28506989650356c81ec7f8f22ec2a06b9aff0a2cb3b88dc6c9d67dcca81a70835e8d9a158d85ae2b04aa388ef3be6ee14966e3d9e9a9e499d3f9abf6d3e7fb73d67a6de2a185cbef1570da6ee03f9ba73cebfb4007af7e4dbcd59fea20d4224c3c0f7c2964208225aef0f1d69f0ab4a01a945f30bab35108bfebde2e089cf7ac347679c7aa7fe6c32f6589cb0acbf029c377f26ca80bdc5d1106c5ca860ca5a0c2568ab61773bb39bf86c06cec1166a7edff100347571f8cefded91af533bf4309b805afe2db305d75dbe80443019049b39576f482fd99abae7f6b131fcd35b37e94fb8f95c855a40126cf04d5490fd38621a9ec56d361403447ae1ddaa6188b3520dd5ee0cff7f300577d7767f7afb71316fe6e8ecffbe7c6ddc2047cf094e99e73dc55cd643cf4dd7eb1922480eeed99a0ff2c9f9d3dda9a958c128f9cdc024d365b1d523745f3a2036e2d747ca69cca37482fb375d37aabee5dd751950d34087fa24a4d7d46ab4791e17686835dc3cc7c57a1a0d6f1f63627d8d86dbe79848bf564ab9a84932c951896e923acadf54755a3e147d2b24df274abdc5afcb451fbae4cca86f908e471af2a32fcfbb1454a69485ba567b488fc6d867f62b234dcde92bdc2367142ffdf2d643d9010925e83134e8c3e8fef9c623b63362fb86fbce1b3ed99a481a1edc4480cd28b7ef4b61c66bad9732c4b9df15872b86933d6e56b8330bf176bed3fe8fa8d1e109a5b964481d265144a1d1b5b03251899a390a0bca37a5e78b5199e5b5e59b3dd0907aec78be897cae83d16f1cee07db5d001ea36f85937e669f911ebb346316df34f3c29c5c1c030f3ed4583108e9de4c10bb213a8a20bd2d9d35cd621665bec34a26a1cd8860a1b7ab4def770dcc77a7b7bca82375595a21098f7d919778ab836ff21da07317eda3378690c66b42901a078f34df45b39a652f9b6e259f617e71a29f2321c7402ad920e8b69791a09c90aae2e93eb91ba70e13b2adb0d0ca07a49d67def386ccfa7d95a74399f40c4991328262d6bb958b27d6d4c0926e82b0ca9f2e54d2265f79b73ee64fc5135f4ab7463da7785b65f259a4db500a55644d33d13c399a1efe351559fe0466a5dd01a9b55bf47407d697df72c47cd20e45172bad4a376e997dc9eebdc165f4b4a06423aaf7b127ccc9549152159cdafb57e020fa106495e57e03b82180cd24702749f1aa022e9b2f1537872cc7120b5dda74e3adc1818370f0640d0822b99734e4f6cd4d5554db14077292723fe070ab5b40223b14b04e4d47089a6e96141cf9d3d8331c00e2300e02563c0daf5da76451da0dab41a129ca28e4e7ddd414af68d5888f27517883b3e2f24f9cba52ed07bad16e7d518979a8d38774bb2da944027ff7cbea19bf67373e612feb117fa4bb25ea0e928b00c8460f1a8fd83e5ecc8b2873588401c99a4c3ba195f917e4b749bad38fe61459dbe457844541c15ff27a5d4f76d49387f23546cdb7383714e373695fb3be98df66db5201e0e2158db9af6735509239ca3c5f183576deef2823f0e56de8d54b835ee1b0078edaa6ad99112165e2fe631945a3612ef2ef0e9b4daca9785c945ee37964ce196f7f281ac30fa6aad86ee2aeaa7032cc59fee7b8e364c18df44373d6ad62e3c97a7f6190d53290ef27ef7a15ac2b2e8348f58b9bdf7efe38c67d5d4b84bbdb7b36dbbc7d9a5edc8ef3d82492038bfc70e241fbc68d3777ec459218e5774f49a7a781e5d9c2252678020d5a97835a6534ba21c44664f866df73c3431f024fdb66437b819446b46ff686f690c96d722dbcecfe7bf00e4d2be36832bb99fafd5e63143b6e0678d8ffcc957c04601ef869fb5198c93a80a7cad4ec76da4830b330dfdf8709d799af215ccaaa78d9bd6a1448eb307f70d913ac44bbe8139b5eb6fb798c665f174593dfa5b22b6f30a2aa62685e8248e42dd944ee3ac2ca2f9a77705fd6e9668243ff80ce5a30aa0032d1d3e33a30169094897ba254c99471dfcb238592b23507255bc40254622afbcbe6b466526b0d55d928ac37264e0033eb77f5ec212159200176d8b8f3be7bc2f2cb36b6a9ff02407ec0e89c03866031f6021edc3c35878f5fb6bd66b86401dfe25a116c5e5375285cf60179bc463860d3d05937a6990458c8f616ab4ef40a5629944ada6333726338116aabdf16b783814c18f92a7676d78d359b6dc67dc7d5369b0f27b122351e43b0c0518acb022c4dd8a054bb66a0bf48ab8629626a9cfeb9ff346f54d5dc73d628ad8a3d6b9c2f1ddb882961439a98dbb96a7942552ab04cadf7279d838e64acea3e0add0b246c7a1297bb7c99569ca4ff0841071d3a16d4373b027242ecdec2da1e75e59a1bdd179f833382735e795f0c6c7f149b8f3a2c44154b207b10556b8f2c13acdf7696493aaba0391a594ec6622746ee16b33796b8d4eb58e25ce579c46d1a8f309712a2928f0181a646e3fdd7985053a371ff3d26d0acd5b0f71e17686a35eebdc60b35349af105199a3307de2a7006b15e792d2ae50e29aaad8d5c59993edb0a7cbefb5f6e8c2ce7e9a15046d530087190bbfb9bc9584fa05ae6ae8409f964f838680739aa616acf5a3e2271343e4a8e7519491685b069a971b1bfd7e1b9dca8d0dbedf228352ff5f4777b9099977bbadd1e6566e5bd1d76925369a22e4ebb1a3941737c86b1758c10f274ad0019456332ea6dca087397119d6546a0058a93701d942d4687a518f77dd32996dbc3e415de993f48a20581c248357973c8b6b42e3bf0b092ad16644db15783782e8c2a1deecca1bd77527a7f3d726576d6f84d8505260382d07a82081ccb61be997cdb27c446b168d2d42eeaff7ba10317ebfbbe04d6aed7196c75f75e5a6d8b9be1228a0c7492c36887e72b39a65c21ad18ec236c250d3030c03e4dcd638b26c38916eb353d2dc4eedc2ca16a16ec28955b8876c88b8166d1c16631bbae41b026dfa759f92b7ebcfead590e36cb1cea0cbf633bb82bd0cadf28e4264ea2ca7cd1ba2f11ba2811649e3627a9a63c2ab1234245fa89943b3d5a244f5c06b3e9ae4d59cf75bab75a5a9c3597a26ccc775c870e486388bd4318171e2254d85af999ee7c285b27adeaa5fc2c82b8310df6f173aaad5fe049a1c6da2c1c31278267ce30307470293ed916aac45ab5adae8784566eabeb0627612772cde3a4ac7cab43de1ab0b7c2d873f07c41959fbfb126870309a7b854336bc984e3310ff24b0210cfe3f20fd99d1f9b1a420952550bb8edc43c8e0b5c0f27251a23a5d9a06e19f67740bfc353005b86fd8d69b4196f427f97aa0f113cdc8c310cfe78add8aa40742f033557fa3b0c66f244cecb703b4d11bff069a25c75e49198e33efc13c99cc8e67bd2a9b4e25c651fd996815e3c19a74f2ac22e2e57858bf7bdd4a05e8d1c0d96d480bbe1e578466a44b3e1cb189110a85983d8612f5c73e5ba10a7996e8b580930879d00c8fd45b54f53941bd6fc0e2cd9c79b165d905e9f0c459461a6cc1c42508d3d01c2d4516783e01e654761171b0ae7a60395e8c814768326b05f27ba4a4bd6d63982b57243ccc6c885b703c69f442c2a3d9d42f53c32deea29b975a384163baa3d9dd25e7399fa4598c4fa4856504a7133b0b2d131a99da89a3413def3f4dc0cfc78947eced0d3196e04c93581dad4861dac6873506b8e9e554f34f11d5e15488a7c53fd985809a515d8c6e8d7a23461df55f6d32c5dd30c3ab9c87fbea9d8e948c8ea2baac3d15576a3c7f928cda6930acea6f4c143e1c28a1b4b703ccd53f368a7dfbeaa80abc6f55ee838605cd7aea57ae83b99d62c81e102ccbe2dba291e263f6566318ea2fe6a691242b7d01ca860f66c318f0b55dc83c50a0bf2d89602c3523452318e586c9bb6a3ccde6f822cb9e3aba02b8b1b74592cedf3729f3848916cddef72ed2ca492e59793c1a82483adfc6d2fd512af17d0c767b0eeae88b79a79e06ab633a05bb1849c4bab37cc52a426cc612c08dfc8c44ca7f6f32cd6f92f8d4968e9bc99931856764998e524646082950f190a5a366663accc391c7520eb876722341b8613e140160f14c83dc027cf534cfe546eedc9b4bf0db4735ace0eeb50e3878a4a0673d4c18d465949b24a5e3c4245fc13c42168a4f2fcff2a9e167e99a11d661329124ce927c38424b9d34168bb6085208712aac078c2e06e8209ffedf706a62d1b90c52b578f88a446901f06eabe1de2fd64768ed08cc36f5ad6e9eac86f99fc718b3e564c1a8c9cba4e4eaaf56f099efcc307cffefb1311b86800c4d605fcd280237669799154e19b565870019fd9d434361d6f3bcb60f3a25ce8ffa5cd0731c069102ad80916073924b1000c3f6570fa44f8d8521596f69c217d910fb1e979b705bd2a2a8a7883ca46900b56c45160d1a9b30011e71de986d46b27dd6bff91d1c9383b821678bf26f2b596dcd41981756581088dc915b621d69fc9382a2a2585fa3d99defa5d7094b6ec8d15689e9d696a6b4a4f819313d01c3a0e16d8ee1c980d5b53c0034a5b9b74fd89f1c0023361225c84c2879c4f9c2b2918a87bd5cf4b7e120bac57f2eca1a9eca2a5ac6159eecbc4aad12c24c7502efc8fef808b11db87ef31e92cf3886288e28216b09288e5d74ca7bd61276061fbe4f46c683512fa53812551617a5e1e432d201dfaeb74d2afc326fa9a5a015f03514726678210041c14151c0118c103a225d7bfb09ef9df755e2a5300736d2de2974ea3a1aca46875c51b776dc49aa612279355b1debf941d317ff09e676735d3271ad49c602b30bc27c94b785e64b4b96ebd38d5add51bd87f005ea66fe5a0beb3de2e58fd8e22cdf3cd598eeda5b58d981b28d587536b62d1115f079e9ebe3c8c756ba4b1789eed45a8c5490241221d73e4d68c50dc37cdaa0ec019c34d59cda24813ee711bc35bf5670865e380a8b6b9ea57a0803e5c3c65c2d8e64b018b67eab9828fe276fde0a87c41510ea92029364e5dee8b83495148edcddec46f2e0fdd1656efd4a38036334ca614d7f2ff54b8799f20ede85d419b126875ac859c2f3fdfe6a2dd0636dfd1ae4c02253b844d79e392bf7d3b4cea4c3f872d23b01d340de5669c4de8d09d8f4e2b891e5a684b82ee0097041d1c90041db81909fa5a4485761d4462b8b9d0170d22a2f0c6bc35cee4626dea749c3784fa717304bdd121f2d855a3490f4f7e47a4fdab403f56757060f2bc4f07f59992726e83163c92af0d77e82223433801155a6c4e3968ee4be8ab26a9afe711d4045f709b97438471e840ad9075af2f6bc8382fda8012219b274f0af72df294b6d0d68fd7b5cc9cc9f3a4cea43539f92c39a7e8066b7de8f3d4a0529bc9c6254daca9f5aba85b20fdd403867b17c1afca8601e6ab32c76d749d8d66b383761258f3700255f12b78d44ac4337ff5ad378ad3d2e1daaba3d8c7309b6aeb526823a3cd753eb0f08aed5d178b79f5325804ebb838238c6b457f7cfa7c29512040eb707002c099f6a3b92e135fa80bf8829df7fbccd0fb326de93d9c957ae7e8d87a8f9e995b91a22a418dbb58c3d134a5293091dee9e116fe12be7b4e3534508bd783c7c19706ae0a793a89d2c74100353746c013da47c33113dc6a0ba44e385d7d34f9fbcf15f3060c9bc89ff6e7e07bc704e379d134b2085a6762433e793964a2a16edbd68d1674a5ea3698b3711fd3d36fb1d3e81c0031943e7b05978d6967262e7eac3e8eaea91d0c7792f07d74282d31d7e5d30e409947d41aea07a72b679e74130c52f6d7973ed24870a231c38edd128f0c814da4783e4ef3ec0acc5073b035ff5e8abc819e64e8c9659f41935a42084aea7f8e1025e326a148be9230aece5d1ea94c99c0776938c2cf42415c2185672f240f927a676d1657ffffa1d86074e00cb7241b0c5c567f1927d98f0003de69205d40ec3d8c794882254c41d3f94af12293d1012791c6cc0a8ec0521f5a81e43ec8c9e5e7f1f12e3528f4f77b82dc34b8e06d8075976f75fcc808ece002951a53c79af312dc754bd6aa6312a5e4ccb9ae4e9bfa38033953dbdb8ffd672dcfa119a7156716a0a0968e91a11cfe02f8cfb18b0ae3d96da8a0055cdebf84e2500a554118716902a5329d81fe55d671508b2a84792f178bd1a627684113e97a5ab0ca7304b300b4bb8449544115618b4034560a3d6760a3f778debeaf8aac01e8e43033a31e20bbd341d281bf2bf94fa5fdf3e906aa2b3700b9a6f0270a097bf0d46a4bc8a74b028ed9062c78d833db49947f0d727b11433822b3655f7e268fb5838c524a32383a53612abcd3bd82a5ef42f20864a91377c6ccd7f208027af0214960388b9616e4439ed11427f721c960e2e8cd75430098660e0ed4c58aaf66b195e21a040236ea52496193b23042a0f4e158bd6a40517e416bfa39fe74718bdc9ba1678c7545e034b28d11b3066e2e5d6a6d4766096d75eae884dd3985f2dceacb8c800aececd0d7d218a8ddcab874fc2285cc70e50337b095ef13e719b1ad149893d02b029123aeee4105d78e83fcf8265ebb1a4ba00b8c1c149fbeaaf9631b04936d33fc87e405aa972b01e979123033a056528e4b2f217a182d79ca9a0e89eb42d590c642cd6f333ff45bdec11c4dce4054603b8cacba41b8b61bff420c678280659960a9707bd3ad0d6caf6e57c729f015edf0e4ed4e631b9f354c2ed0ca79cb15c9865454a7d2cdc70557780a6932cd90363c471da2d9bf1e717b1b8215c7bc5b071f0e4c37c88f886cedf6eb2c6b2bbb8985e71278ede382f500552e82add15c9523e7c9b3b1d8fbc06b2ba33cb27dcc8386ac154fb2aafe719bfac0156a90430c43857962aea4f440233a52f95e8ea9a9183fe4b211041205f5272621b4e0a614c979918bd810cfa5a1a5b50778b8bc7c1e2ff286858e7ea707a969b9abd3d9bbc4a0d8dde9f42e352874ee7678939b173abb576e20a83fc5c76def41d494d4021434f3c43683ba1379d4ec553161f09a8758bc483af1471a8c97e3d12fb72f4d171f4cc46287f61187e83ec5611df4ff80658636824154dd66741ae64ac2836bce30bce2958412ddc25c0f7c06749646d1020ceb196d43c672bf881f43fc8856e253758d8fa91ee98534be27ace121d7aa6d0f863d23d7751f920c1d8101869ed45366d9cfc40d1e9447910c9f5919466ee5bcf8f1404f0a19debcd2f63c4f645f1cc25a8cb713a402167ae9316f2b700217f15bc5f7281eead463c3de5678bdc1c2b110b3432e41ccb7b79c6808f787fc7e4023127c4936e8788303692cdd238ca6b65b2e0d7a2a9e09ee22e7f63d49dcc7d0f62658dcd081608af7698cc17138656bf74af46997a34426268979c85f3acf3e68f9f840e9053f2f63793373134d0d8a5f31571a9d54a226d5bf1d6f593aa92e2c712c186bba0b9b0207b54ba0ae7b654dad60f31c77f8cf6264c87739a80689414bf6f683e644cf888d925d256b4a48843f809d95c721128b4598b98e79f0c21142fdf8a509b3df987b1ba5176747ae70096814d53f567102ad1ce984a1a5e61a66cfded4ef1c319d0b8d3d462d15e268979103589356eddb89dbb5c6ecd211780f8c7875dda9ca1cbd3ef195b9d506074d4d29485d25f1d148ea96a57ec3db749359cfa9328123322ac879978bab3e45320a6bb2559ea40d185b964d6dd8d6a545f811475a8ab0f940992527a8b55c5f90577ee9bc87d1c51b5ece7a9ea3498a2f6f0183740705205d970739fe642e37af0081614b6f31c8eb3122f39a2c393ae667a58c652565993098292699b4a6bacf992eb48c17b0bec35b9b16aafcd9d33f906ecce7fdb8916ac809da8e94368a0363d5df4e62eade6d04c26a2af06c9f77e03134b5576bc9c0fca5936ae6c9698ce6667fc7fc4b4b44af7d8bd5f903b5339f65985f9744e0addd45e090f79388ab021e0dcc31c13c8598620992c9365484fbc22b3d9a8f4a2c0817d764028612ce416b0122388928d159e23a3b5c0b057b5b7349e688218aacb1f6a571d26c4fe04c967832639b98854bada29b4725a11ba69540d93254b8b62e9f55c7b9c33e6d9c2a10d8a6349490ab2bb71b54ccb759955fe11449cc9b9a7565840973a9eec0fc9116d63b8f692ff5aab8806d751e3c1ed24fbd465e273a640f9cf27e935130f6f84f90a98453c11a4878ba0d4151a8d2c063874642dc02a14a065871d1764027484a0c061ec4a20576d90305a1dcf7ea455cfb3b5f08ebf881c66fe0bd370ceb8630f807e8e0c1b170b04c136c5b2654c66113b11a3ac10bdb5d61060a41a57fb4fa7bd78ff11480cc04971501a0f6971e5f5a77ecec3e991db07806c3c182c02ff5902b606ec17ce3ae3098013dfd8229ce81f25c58a7c3852604d0a35da7523044cdea29da45c10bd3b983298b94f64e752139bd243f0b1a2a17cb0f0589022abe325e679b325cb48828eea3140a8002c0f80e999122a5ed92d6a1bd31e231ad8cac634f208a380ec57dc6bb0c79563ecaf969357ec0c2c10558d5bf21f65fe77f9893a354d775b49a88d1a53540b193420b633543b371c23d6c3ab2e1b21c218ce21e26a401fb8059fee6fcfb032fc99f99b133019acad858f51c15e6f534e64bd704d3e1eed38d22efcf1818771767271269f1c2b14d1ef4beb117a122469df493892827d46b62c72549edbe7d5ffd3912c4a7fb27a3d85f836330c58bedd5efcc6d4864f511d2a47447f650ec4ac4ee8c494d8601217c09932690c8ba1d767ff966a10a954628d008518cf0d9097fadb33752e7ea7864db860fc6b43ca04e1541a1c630a93f58ca63934b2e9c800716c954e818ae38297abd23a262626bf89b0f3c92981c2c5308a379c0304ae1d9f568cd31bfc64cdc2099ee156190ba8318f45c2f5f87cd66191da03f5caab5156afb4d6802b33c741a30924af24017b7324b1c96a7a63c8a47d4a360a62053ef9792e136b42aaa0a79f03c6bb3c202e26ac4355d08304e20d51668131f83caedfa413351556eaa112ae457e2afcb6f7a92ba68da8b08149b30ff8b04f410c7b4262a0f03936ee0e23b433994955f8f1ac030d13fab6fce01f29708deb63590beb7ea48b4c66380e9d4c8b968338225cc7827d5c4811660c6c74e622836c92893f25d826433ee3c5beb8ed2fe736d91283f111ebd55c18676b382d350fe7053ed41800bf2c1f518cf75562aa13a52dcf37e3aeff84caa83b7a5195a4fbe21d48cca9a12488673a84ae87e7691b13fc0a555ab670d931ad2ee566ce32ca4b8bf5f1177dd086507c13d8a5ba0bd2fbf09caeb1e14f80d48db4c58958a46575c586d4c6d2a0abbecaa885d24729b47cb5c177e595b5de2147c98e3180bc9a19d1e384ea5958b68fe07f8b0eb9b793e7d95498836a5cccb623909c23cfcc0388c409df302febe4420c848d5e3afb4d0cba7f8152ac265adbddf90f3a84ee52a3368f4ef30ca0395de5c9ef58dc1ca33a9274d51fd9bba1241a1dcd4cecd29545f1b0adb228a82673b6bfe5158a46be76693ea029542724b515e4cc187a7c6f0a79c3354616b549d512aec6f2a6a6215d8b86a4cbfca5dc62aaa66d591b017f4605690d8581d1bd5d0ff17aeb1d982757c2c919f3a13fe811201a20c17b9e9de0d625325b7e0fecb2a3e1e383168030a92e8e98e70ad67e2cc08d55f20e74e03106a1ad15b68f3b42c3bffbcf966941b2144bc3fe2879d27ae69e712e8e622ffa248428410080a3a2e5f3707479a17fc8d4fa9aac1537f1e77c49ebb31e88878251b6773d697150f4523b57dd9cfb117298ff8fb5f4bcf1fb29242b0174b5fec8cc9e0787344a21e9d331030bd63dd548f4c5ca9faec2716748ed328bebb065090aafac043918117cc198e87d3400a4f0201891e51d904c4abe0152ed58c457b42f15dd190d4efe3a7ba6169dee5a5fe48a95ef7baaef109bfe45bcd0169bfd76dfcebf1ebc6a4f51aff150d11a5fb9f1314d0007b861d707ecf1e3a23b97528d06577a0b38dc7fffd9f98d9b2c37ffe855a9262f5890e207378f33e14e3236a8748fbf147311600f43f7e32cc846124db82fdda002765dea7622e541866bb25bf13fe4131c1f16509da6fa8c5e4c32601f47ede13da73dd18a0319e17b210cf6edc756563a221a8e5e1e813bb8a989dff75a399f0c8e728169a4e4242d27112927cf405cb2cafb603e162259a13391efbcb2addfae7bc12d0eab2dee377955d5fbb9c54ce4a686a12aac530bfabd0fc3288782bdbbfa6bbc8f74e95371ed607d8bb120898afeffa00da321dec1778f9968a3318bd8fa482e71580f378221cc2adf0a79c117b8e10e8aa86f5418b81da3f3ea2215f7fdd548451fa59e6cfd6413e6298131069194221b9088050086df4463084f52a8836aff3d17d13eb61a650b9a2c53ca3bfe7bc50d9e8cac9ad0e2e7822f746f2ad34d12508ac372abbdcd1cc5543dd4a000938d39f5b78487970e0b42c2efd089d13bc593ca2be85f40e90290adb968537ccc4428b27b5196aa4d91a66eb8a719b03c42360760c6db50c76afc3fc6dfc9bed2a73064916c39235f099605f9589805a9d197ddd3633201f4467340e4dd467f4b2c36218e3d0d16453c228be2e1918334a3c16c88e41b0fdcde9e46f34522c1a1ec1de3f82f4afb926bdee57a1e2af08c190808244cc921b467a15802db45ec1cb83c71e655671ec0fae3e6f0375e96aa5d860c589354e764874323e5c9b564d1ab549e0d73a81cfdb8843999baf071a5e1bbceb887d5865385e01ee3d4fa0ff3c7827bdd1c0b9a100a830005747d707a1535ebbff14e5e56d44370716cb708b61f01dce980a971209206861208cc944860e7d385f5cb6ed53f6488cfefc72b9ad4fb2c3218b0084b5afac6bd3d58839b6a574ab91201164804ed88196b00421c9f41f84fbb3b93fca245621676fcda1d3237b214eb2215c3df47bfa605f12be0573585e1525d6ca257b88a32a406f1ab569d4267b6fb8f87ce357ad04c4d88360eb236b7d9a3a89e71776e4850944cc6fcb461a7c8ec555c9f95bddf435a7ad910a84248d5aa82062c439b077e3ed77c1e88fb07730d3c3de65310dd73b1e6ac96f5347fe565e600d01eb123c05c27d03ee412735581ac86192106432bca445c242f8905d77fa9a2c46c404b3bf0621da84956c58b3801c48c2ae11704c4df6a4a3c8df4b8e192d493402214134d97a4e72ab087ddf57187dfa3ad3d7719a39a5f1f14cdfb2680401b2c21bc8c0e2a72b015cccff22e1628b3b7bdc5f99793fffeb440effd775c400b07b780ac7b7312680dd45a4dafbc0ed3a0df64623a75d1c7d3ac668d8ec97250805a1208c84090cfb85f0fa2f33a1b89c4e7c81e94fbbbd5a008215e8e4a01a0418782decc58160bd06ce51ca09f9e642ff3250869965e6e01c515c96acd2024dbc1e0df28c4635e7813f412ff8a9a23f160cf8c956e4af7b5fdd48fcebec457a85791ff66cb4645e57d96662758f30760b11275904efeda7c02acd1d78b1533327fe0e07570754a2f7cb4296b04e97db3a761a1d91466b634a10ea1f5e8ab3b2fc05707ef1b5f4deaa9f558877e5bf752c55a8600b4173bf4c5f4dfa3a066814d83841f86890f8e16c9e144910682a98df2ac196f2cd9656ea5ce13ff6b69bce06462b76a42b590b69c8668eb100589e0e21146619a362033de481aab2a28e5f071a9940606366bb0d0e23eb3203f3cb05d0de3f6b2dcf019af7312b744bcfdec0d007e9351e3d04ab444261537070c94198dede149d89068bd95c80c027b070530b4945d1b8f2df3674d423581a736ff4ed7f49a8e85bdfcc5af8baf29ca20b950ae345873f99046b8f75c02353a5b355c77c2cc508854a24ca6249c1b28a51fbf2b17888e517050f313a122c8f16e823b82b7797cca143e9e90f7cf2694b86838c5d16b22ec1bc2ace6ef00af3cc4958d8a4c7fff5926d17f1e88a3eb9f286ec970c14a19dc4fd5e4c8fba7f53862cda04374732c692ca7196f8be0d86318706a08bef8bb1ceb124664ebff04e50b19433f4fc0441c9d61905700e4b0f4666756683b8cf500e140359a02e11a6588284416bb7de1b7438b213ce0c3af59e38f070725d1c75118d606c5f3feae9cc21ef0fd6479db13fbcc622aa3386ba7ceb267e060a7bd22e75a171062b1b661b3dae5435b0c2f6ee6244284fba2ada6038c76cda609031044e1d13d0405a7f798472e0606b527411c4b8dc1789721a8a547359933f04fc6b2e8e49cc6a89f7171658f88d344f1735c904998d0b7f551097c5147e058567d39a43073c667bf6e61dbfe72fbd7bc04f33b48fd8514897be4ce16f18909d299335a44bc25678a457baf16611abae8cfc2016e744032e24845f0c023ce40e073630847fe47695fbb0d0f63f7d1473cb13222f207dba88bc62d5afe0886522a05a4318df82c46271b3179a0da485bfb544191a8c18042d47b0c300c6a4ba5ccdcf44218661823d2f70997667ed0f2860cf7954a013e6274a2741416e4326f9b097d780bb91100206f93fd52c99d280f55c380b2b735dd0950a20309c7f04c01c48366a6927f8428ab40a33bf719647b3b4cc1c2b0253261fab634080172d45e0a5120e364e95cbbeb8f9ea32ff8bce9513cd4e9815f391034c63fc63c8bf45aca4a95fdd5e95e08d4a344c23729d64dee36a9758f529a392b369ef5c02cb99ed2c1b0c91ca102221f5278648ee6b0b06efc1014f8c359f97d2d63db72e0c6c2e824fe91448679e6a2929729f944b0f419710ccef5d6850dd0675f27a66345fff9b4eef2821aa5d422acb2bde308f3a2df644171b5b13cd197465532d1a2599cc49352404870876c046a9d96d3193d5b386595093b255d122db4dec16c2834364135232993c3152b39e316fbed3065147d62e3fc2c44a722da6b537c5d2809c8a13af5ac4559672f0d1699530d56bd9eb0cd73321d3b108ded9d1bc649a37e0bc0859da9b8519c8931a450e70d09c599165af5738833f4e2fb3b5c014dc8b40c1a11225bf1cc5113d2942d1a16d434ab451421e7cf9eadef1b2c90ac72b30d1eed6020b06941f6924eb8698d5bebd0e5c05b72d0cdbff2bae89a6db0922cee2cf8c8ef73702bb96edddd57f1b3aff4551b87f7798decf09942d62f1a39069a3d001226e2d2dda1421bc8e32e95fc4f64258a24f6af394b030a0e87c21f5cecc7ce96b1f1b3d7f0b18017bac3417e8a066f19daa9f0a43c18e5dfd16a90f184d3d7c998025a1124c7c0bb30a1cbf2b944695b1f6fbb624859ac0f2fbdfb919f1afb2d40f1488c2a09805c03a5fce868e999a7afc55f070dd7b593c2a807737563e80f49a4d0d33d3822620833ceb73642d5762ff49b676ad041748cff7b0f035218e1a381c6225ac1470f959a8e2581ee6c55e3a15a646feb9fab1a3939b92bc69ce06429e27d8380ef007c31acbd7e32e6c9aca5642e5eaaceed28052fd1521e5ffed37b925c42b1497d4ea59d14777a4af9fb06777958ed0e1a10476228a6ab6be06ac719c8730defefae3d38a4f34a954289eaad75908281f403b1da939eea630d93800f8bf30cc894b43dc502e575ff23128ec4d5c956eb0974b2cd4c7c55b70ea0105572bc51c39bf25aa00e4f8957090a6ab76c25dc8e3a684f3566a0bb0991253f9c36561d1544e35349157ea7099d2e81def4b26938434240c98c6170accc811409d6346c6182995cb0d5422cfd05eb5c5c819e1b843e492b2177f613294f3acc82b9f2b7e8bd69b893f5a29386c949c38d9726c557f1dcf335aca4d4066490b22cb842b281f65a5b9ec0275e817a6478d3f99ca050b69348c96180ca3a5b476d1a45cffd2d69fe47e108c97d64cc0ea0b969d562b93842ed1739389045514c20298ea5771e9b94d37d0ab6d6041ea737dfd4e2bafe09b66fe20936ad2cf359c5412af72d267d866940c35d282924fcd2c8109ff0ff1c214ab363a2a6933b2165c06f4b78c3a14cb3539ed793e265024ab66c7dc58a14d8f1f918bb5f6b12f43e3559e8ae0e46bcdba2ca2aaee58ac07ac703d2e86c04a7f5b6e1356927ada165d9c6161ff85ab1ce66c8a33061c9239ddfe5f5c706a06db3b19ca85f534beb2751f8be29ff4b11205b7e15d3a6416ac3025c184a9cc4569f8920a926aaeb77dce0ba146df857a1107f2154588a25d643add7c673dd5934bcaafbf7071fd2b879cef9dd011115f01253f9ccd3aeb9028ce7eb6496932ab367339b0682e15fcb133fd2f028ecfa6689de79c3ad44b9e26480e0fbcd5db8f09b69984288d24417390ed68aa6ef0e99e9d49a92e2c4729c98a28edc72ad0fb75b1f9ddffdd2f6f8670d65c50068902f822150d398e53e113a998747fdd8b73029940b224c0b2d3160087ae30f8d99abdc0491068661fa194a20feb0bddcf989b5f9910efdf4aa1fddb8f0db3bbf617036d59255b9937b8be1a5c3171b566c1a38733726249c0695597d119cc3e6d190f84716c34bb73a3b3112c0e87d21333665deae159ff52741ed305c532a6d5007675825ed7fb135d792d657dc01df42923a64fae755c4bf696449810c72b491289cb725c965a73cb66ea3ba372ba9e489a5f210f4642dc2151b73e4802f535eb75c574824f0dd0a7b95b2fe803c1a87998334c54b25054c64d10980c520fca2b789a995b83112a462857a622da6a79210a01efaa082e8c808e2870801e792aebee65729ac71f71833d889cfa80af2183ff163ac66ec86780a605ebde0906bea90ec0d7a0eaba5c7686d12ec6f48604732a909bcbe9a222006d18896c372b0678af11b820130b65158100c3a0a045a4ec1ea12057a407fd08333af76c05c20d5708de3397d62e260b606fb0eee90b5dd1852374d6424774c5319fbd88322e2d3340770f8058a7fab22534cd609c4fb96f5b141ab30b1fea5ffb2675f54bd0be2fa30f870dcc75ee47a2e158bc09d7d5c1d2a89b7f7eff5c343611a4bf12f0a9871f16acf054082c69980d10ed70313f8811d68c393bc8cdccc39444c1e7be8b4335ce94a88bd076cff1cfd48b50f4860e0e6091535f821238ce76d0a95a96557da39accdc25bb103bd2a31a5d30648b52b0b45ab2fa4abfed728c1c8ef9ab172735cf4ab4975dbc432208a4b27e691fc7eb3fcb85526ee35c358a5ca2f284a558377e868f3cc11147d832befe222fd7df2e52f0f75e18b5b2a44ca5810a6ed01aa38141d588e84610f92dab58f8b1c15f41217b6d1ede27316c76603e962bb2fdfdbe1766f1759b60e706637db60d42f5f2d93dcaf455045c178c7d2cd6d25de3b6bb89d85b5cff4796df35fe78148b4e0aec99cc4b395f10b10f23adf598e3a583265e7b30b4d944c96c9081d5d71762c919ef45740fa48f70107e9d04dcfcf9163ac1e7275ba363a261e08817ea9d26963e6b0bf99856683161b10fc045197b6630e79adc8f35a4f7dc39e8e7a7f1237fe37764e3767071f7b5cedc494b2cf683c7e63ea8efd212e43a07766411071bbfee889341e7eded496bc24e3970e0762ad8507f483fbaac8881c78cccc02d7f848f128c42b8476ae33e119882b7c4d1edc7d4b70cac046492a531f7768285b9b710f357bc66e48d173dc465e891683d894408f17166cf540f066b776c96c38f293d9fcc77f34bcc95c9ad058021c240c83417ec82cf78fe890ff22c75fda630deffe215b5f6243a3f76ef85fcf140ddf9d28dafb8e322ef5b7d0180d255d194ca63c33662dbae8ce8bd97a5f1c765942973e69386c0e19f4a3167a2aff08f58ff9982eec08e03432b47c9a365589180a35a0809dd4fc0cf1535b1bd602b0a5893a22b950fc748db74185c6060fb6bbedfdd219e9a884287864a572013963a0b0475efee618b21f90b90a1724762302593770c9a2f30c8314ac96eb791cffa6a621b7625b906bdc8e5c1ce08c792e2549cf88ef668ad4356934c899c178a19042fd4f97a38a5bddcad6b1339374deb1d8e8114d96795a82b44c7ab46836f19f0a78bf4698a92a830afaa4031b56d0bf6dd99e9c118fc1d4677c44737d4b59881a929825aaca71030e30d2680395ca60623672782ab33faa147a2ba5d9f78786fb592777c3e35d8cc7d6f5f71b1be8a283d5c4bf4af6b7b50991fa5a930e8cb9126ad309ae3701f4b5fa61582864116141796b6bf5ab5a6b3d6b6b2641d664fa1b3a0aa2a90edae09968d042afaab66d59ac66f1cedf676ad90dbfb029cbd8d968cbccc4ea9a5815df27d5a9b88b80b18a655d813aaa772376ab16885619136c29dc6ada5d5b5a1bd96da0c8f0c980852ab28ee9e96e6407f06c4a9e06b264f92718a1614d5725a1bf58f0a89611c8b4bff5d7fb826dcab7a7ce05e37e83a19befb6c057f94431998944dca987a8b3ff2efed8f54418556b20dd30041ebe40d30d117cd75fde6c5b225fc317bf42544b55f7e6ba205bd800eaeb9333ab35fc944a7fb3d5c42071c9862b58673e804d27c0ccff1544f9d69de48290e64925f35703c9225fad970208e7d263a58b9b0dc034701a915b854f0105c3c952ac23def3a12ba2de5546558c40a9fe2533713bbf1a02fa4b3c2890b98f4385f9e06d39b78fa9ce5d071522cc32367947ad05ee200a842504b92b4c46842b895eca434810971f953abd96424eaca38d259a97a3dada71e49c3ae9f9d3e5d8f04c31bb0fde4aec9f232ec15316d54b4c0ba1c8b3c157610b4a464433c8681c741c50e1eff59d6975dcddadc926a4e3e4defa4855ab2c4868916512e02b7f190df1606c87a59aaf428e703bdb24af40d9d7792ac976973b3a45b7c1af94a7dfcb3c103d89536ae9ff9130716fa400360e8f6ba19c93d8cc0aac80ad6e70e36bb9e4ed0a4b22980986251d0f2f9ea54e5e0fd76e4ee76f3a8e990244d0b29f35498cfd83a4b704a7703ab9f7beec2b9ecf1f6d8adb791a8d800d97f00aeb77f91b0a831a61a77070d72679db7ebf5e8611c33bbc7b2c0d23174f2f427651ec33431bbb9e2e791e2104bb9e2bd78e8ff8e5a48caf9405860028205641c259f44e3d5c6257be1ef6134241ab66a48f2571e5dcd3863064b39e970de0f357d024f67f73ba7bd6a5b4b20ae863cd0e1e1a1219920240e1a78c1ac8843d6f01c73f9ca4682e1ba74ad3e37ded9ee2db4fb5da1cb05f5beabb8b4006ea1f76b0a3a9274aa19674ef3f0acc5f63d05fce7c090f498bd30fdbe0e2c9678a99874edc68490d2c217f00be8ed5a6a71449a6d9ede9ef7a3dd2e9c17133de0c95fe79a1104c67501c475bee98ac9f40d81ec4df0b4fd9c3b5e342c28428e630d16c0bde5bc3618169107aea202ad5e469a9fadf2b0e9b426d841183bae22ce5e6a69cf434b103216c87fd6aea707dc65f395b6a30249ef23f73ef81f4fe518b177eb6585df56194c8282e8cc609dcc387301a60d15fd1c621a350e9cfdb1d7342a36bbdf5b99dd28236b4aae6f825887ce631a15baf6b120bb6f8b56df1f9022676e5dbb82f0d31448f3ab91178e3602a8af9fdf7b5a223d2f468fe9da0722ee2a7e2e3efba4c57ac52c07470d2baf898ce269b759f820ccc3590cbaf4a068650a4f42d1cb51d9110ff8718acd9cde9e9a589951d30c51ea719ad33d187f2f6d08eaf40947df793514ecfdf2444deb163a2cbc1c072bbf78c2dc8173d1a08e71a5323add5ab5e4e0e03b5775a3240c42132574d73de7a01b0dfa157c4cfc9c96b92429053e84773144e71bc14a75533b5efd1ab2a75ddd9a6b120593cd42cff279918a26b1831de92692730068cceedd4f29015732ab95c8e7d07a287aaf29127a20bfd46b6e3b0213e039194bcb58b50fa14b89447042df948933a6c4d40b6c95dbb9c6b6628dc2f290dfb5484816614eb0a5f63a7405dd2c8cc5b1bdf02c9348416f3c8628d147dd62281c4193680d129ea8f327e814594743ea7d78a7fd247c306f48af5dc44b88662880ac5cbecf6431c8be5909bd7214292278ac0ef5da657c89accf251499e6c2c9ec9ee1db978fcecd7de8deecea850f7f1e77365ac8c402ff43072dcc7f76ed25d6c0c5caae15b6dbc69235d65ed2b2b21c39881ea8f2e5f9ba85768158b77179cb6d24a3052dfc4464b408980721abdf7cb6bba821e0de469c4de016f87a73c5d2c356c101d6c52add99cd8592d2e3e2d1c92eb139b28d39dc5f8a9a63dbae353f24db52ce6939e4772ed2ace568a80cbed12549ffbbead564dd3d3bfad81c8ce07a994356fba3b9bab4b3617f91db7f9353fad23ff091534c608639b6bc0ed05a1f430ffba6cbd1181a8ec6d1723486c6d0f3e869ffe8c3fe93fe7369903c1d43c3d0191a47c3d078741c9da1f784e444b99978947c7ebdb15a1a9a251b1d476768183a47cf1a9e06aa23371019633b82a44b8a6e702b642c05c7c5813d11d1e3fd8c5507c55cb0f86f868357716462e18aad496cb34e06bf4e8991a0490c897b643fee5182259b5119d40838797d121b962ac20bc0b743d83084e351c40a1ac78615e32ca37bbd09f24fcc3b53214eaeac6bb5741d692613743eb060edb47c558a8d5795400d498345ba8a2fc35a04160b200b87af16b920f04548aca4df9c67b44a8c4474234383691ac542cf05c63e16c75c6426453a1f043efa26495fadd7430f5eca70b3e6c1f0a8ac015638767259b3bab7833ff79ed85eca6c76f3973a707d3acfa35cd4fd9a374a77ff1e345afaa3caf2a7933b2efef92b90a044048963d27a8820437d7bb172b2a26b03bce51d0e5dbfebe946855f27a5f101331603ec1bba162356d0d4d0b99324385989b233b7402090690b0459d5be5af562b7702357a5aa6ab8a857a5be37dc1bacdefb16ae15abbb72193729e8d5075b4664415dc67990672f059f21183e4f303a42dfe58a04efe08fb5dfcd59afa7330bb9f27c8a13e66cb4655d1545f4437968cb97e8903357bb13f0a780bdd4a78ad8c6aae962f2c9c4965fe460d0d6410ad841b66e2fd603420e3e8475ed6403ef32df0db3ea2cbcb907fd3023215fd9c642a48537347a7de3970f6aee589d80b7a090fdc6df5bb8e0a81181940d384f8761cb761c9cbbdd67e6d8c94490ddea42c40a6bd050ccf17ba5c7267122b780120add3a2d5811546079d10e60d23fd66e5905f23a0a929fd070315dda5c4946659e087491f4cd05b5317738b753e25476fccf691502437107ce423d6bf49eca4a32611b6a214a23cf59ce7a51a23a720b0d60e30ccc2ac911593bbb67215fccd16cb85a07443b9330ed1f25b7cea12ba4abeade3b1287065c78c0aa6a921001448f0f33800fc3d87d30b321bf7e0fb1f8316c376cbfea7d6a67887927e6c9c31ec679d923d90e637297bfd2e12fce58e35eb4072128e937c536c21b5966c7dfb3ce6d5cae090dd0eb09cd92d5ecb9e8fc69ef03832f1c796d8641ca4c563a5844c7ff7ed3c5ec5fc3e112a34d117992e6eef2cac1806f188210507321ca3c5e27360dc3c7888a0cf26e79d9eceb5293a0806c83a714a58ca0e1f7483461b0908294e02085b8f8de708165f954f4fa293a2b40e61b62f08fe745f00cfaf48ff4b284b2a65b848b4238041ab1c0092a025af8234e70c74fe0b4cbd20307024839a1ed115b70a9a4117a260fe2b26be5d20c31575ee66e7b169b4ce503863408014eecdb7d42abcc89357a880274998d6c8b0f1640b8b344f513ce1f131cfa94527a2b392b51b2857a015f32971be7a7e652a37d9fc866c23b0aaf9f698e46ddeee26882a17ac3b5a6685cf2937c90c1a73003e8469e54939b2bf1cee2b2cb148d187b909629d10b4e791e48d5648a11840d08c7bf720a897f149849645828980fd3959d58c428d5391595f5792d902119057d67250dcbb650053e27ec15945322646240cb5269bf3c908e37b074392c49ec638852b19fbe0ee6dc92879012c3aecbceaac5a64e8cf11a0b90843d64b97e4161391cb629a0be015594507ef4417004944945529ae20733705bc9fb029068c1245ea5af0c85700446788693c80350674a0914732018533149d9438371c3f40f172d2b3f98ccb427912a40dd736a027f180caa4aa8d18f766d26bf00358ea521931fdae85629dc2d56db624c55d254b483a5827bae20af0a2284417315a8553145adae3562498e5f075bdcd23daf89e71dc6ff8853dd92a1a8a96103f809e885ad6b3125470fa9f144167174b6369e60b8caf0111eed020938f4dcefddfe966114905dc9516ed982b9b0721aef83f6d21cc7313f959b90905fe207448be0d9d9518daca54a3ec4695174738d7a9981fb9159f4d9889659d89f301c3de88f37c3a503bfa41e8500b24bcc099af3c91cc15e2734481038cd3990ddc52d337c9631ce59be4b90d00205b84d2e4680c2ad92fb238fea275849d983c6add30e0275b33ce4f2898bfe3d37b3e923f019fb2ce098e80c6a20d380618b00d48b751da612cd00b63abf2221bb32e8258ffe617497aa11d24607efce21d13dba519b1b6390c512bb1ae41a04e8919afa0711e1f24a9cea28140ac831598bd0f047bab5fe00dbaf089d7d2926493ffb85714f636482960db3e38d402d3b9452bb0bbccb871882dd8498fccaa3bb9020447b1ec2bfbf4c4b4ddb0d3613588c46032d3840b91b584591ca0b6a49b0d8bda737848f1dbc534ff6c170b9262bbaa598511390b1ddbabd236f6e084b63a41060ee9484f25629158c6f4a589e1a488e41260e7b2a2871caf290dfa76613d21f85115e2c4fe20ad060b01cfc95eb28818ebac2285a9e79da3bc6c462386a7089de41a6e8805989277cbab20b9f0ff24f7519c4cd374f81102ccf676e216075bf7c50eafc0cdb99d525188aed49008410b19fa6b560051d0bee7c32dcb6bebcfcd68161643442d00ddf07ce63771fd157abea678e611bc6551cbd80ded1d50437ba551399244345520525cbcd8316f639416f51131a1c3965a8bea65988c876c81cc52762b71d40e37adc43c6ce0b744d2bed2418f4ba8e64d6027cf130d581730e8bf43f455e53d034ac85745a258ca106bf5858593d83519c6a59ef16877fd54b21c8e9c67b125f8e9e51ca68d5a2707d18aae549524ca3e5e340b41efe4f4871801a128d8c9398e72584b2852ad958f1326349934d5ac1236eff3ed7d8ad3371d7fdb2415103d835179ea002372f878b112fde29853de6a60c0738ef12bc8d25463e8ee7b66c9335653d4895644f94d975c2e9b5daa56e48e3f1e848ddde5eeccb488f53db2c72e321d3ce51fb88026a6344c12ccfa6e403ad5ffa0fc38e03cf1da43f6c02ac5ec433de136d137c3f6683ba662746cc82d48ec33d286f3b8298b36ffb29ff1a84bb1689be1645bc29de53ae89a6ad1f61243d534537fc34437e5ac90c1b0deeedce28a5de236451ed6847b7e6527207a1bff83d3090d6f0049254837ac8894b8b9a0c7d216a9cf3be17505d87b68c84180ac95e922a6b0234a6d854bf58f6530afc19ab0253dbf84c4e93a0f202ba5c1aadfa022a640037788331b488130ea4018ace1c27f80a2089588cb08c0097c91bb04f0358c31342d21099ffb7423089b1812ac0511514c508fb9258c90eeed68ff106e470f1dacdc5bc029336368c9fefd59f4704d0d3dcccc04678f5758532db8231573d10ff31327195f2ef294bbe946f04935369c5b264d91b188d1f5b8398c9c75a9b740bec6dd434b91472f1d28825469415890201b9623344eade995c4bf8b79ae5e69c9717afcf19e91eea105c25cedd93dbb7a0abc7474f91ead64ea0f9cdba24e8d2d438875cfb36c693920bc40b6df316c8d955158911fa6e1f847092c355dfde973f8042415576477d44ffb09bbd9b188a207b61f2bca78492732095368d2c43909897e501517ff5ef0d8786f648871ac155512948bfe356d8cb09deeeb579224c8f38d4f178aa9a4655e4c00a6bef308c65a5d437514151c6de18cc15c399161afe193eb7951fc38862a507684b7c9bc06f5599a55f556ceb1d29c87c433ebc27cbc383b66c4e16fd2fb9294a846a2e332133001a08ebe013651d80484700b8480cbd5f58c3570d6c9d613410ca77ea65a2e94261fb156e6d4948f3b627f3cc9b51abde5dab6254f59c2fe262c4cd897aedd4abc9f8d61a1303bf9320f0fa4586bfe455abacb39d7a186c132769b84ee96c3f6d24dc80ad586d87fb7cff60d62cf4112bfc110a81c6d7acdf8595a50e7c2ab0873278c1768bef5276d80723b50dd86e3d48c39fb35788d656e3c67e2524368c9e606848b8de59a02ceec3450785458becf8c54cd46d933b92218cd79d792061756862bb625c28cb1e2090e176202e5b1c83812626fc516ce8f7dbb047b36068b4bc3bb4b4d8c53ea6bd8f7aabf5e85ea47ef2da35eb4dd6754f9c54b9b6e8375697c96c74f1fb3b27ee5ace8decdce66dd2cca5726eef687792a2440e8473ce6d39d4f675c440f7efc4f1ef165835780034b3509a2fcdfbf51faa263a95cf7c811b87dc597bbad404c89b2a6d630120c92b9d0849154c9c4bd8b7db4a98136d20f1b89f05b6ff6a4c1eb8747464226a4d41cba9394f4a427921592dcc83fdfd314031fd6a041365f10cef2b0e6bfc7fd59ec790e6ea349217c85a64f195f6fa8af3962bde858aba9eebdfca28229338f399137097bb79584a7c5cbb3583656c0dbdf49cce5cfb588dc439f8896dd9a6282cef165d12f343e25e71a7b45a92ded2b3b7f52c15184f867bf3e9b5462237e943834a08b5a23fd441d2991e0ca53f2525e5c213609d140f7b0dcef520a51834d96c6fb0d2276e791c529d298fdede706e5900c44561b5b0b33426cd6e39335ace7b8c5ca1c0808782ea5acffb2ac8d37d0fe34224e0c223a0d0635532aef4426cacb11f8c4bb407631eb0f8020c93064f5b02df1ae720ef74c5bb70c9f06f60a3597ded3248ef62625fdd6fb30c835c11a49fe01f61be575565e14a6149aa7057b07acf5efd9bad3b542719a145cd204889e27af0295c438bb9c4856c135edbdc556070ab30215e05329d1fb305c36e0a5cdd4dc0be62234b62f3b3b03efc64b8f825d02c86df35d9504484a76a4c3227e741a52ccd2fae3c61b6fa917235567603bf834696390ab2006ec24d649ef189efbfb1ff1fa09e5eb27e60a26e10453bec01d467ad64bfc10f4ddfa2ce97095b8dc001c5fca5fcbcb0a5047499af665eb0d474fe0f3b1d82124e848382bc74c4a191502ad450348af8ec59a3d18f06befac72931549fe0832a269c88663ffcb005fcdf1d9ab313942511d85b1d5b5db05d123bfa2effbbe6a68f24c29d4bb9ed7aa06b41cf7665af607de2ccdb2ede6f065e7cd46d3f58a03836611a944c81b91ea071b710c0c076ad931064ea9ffda9afaf176464ac588ad5cd64a41d9c955adffd1c9cc9911a9a4934493d8c02fa077bb36d4b9e28c3516ff0d55a574a7125e434e763792a5d245f4b831791a369bffb5002fa674d857953d28fb970569f0b97e8cb784748f918ff218a935111c5c6f4633afc115e8b8fd63159f2167dd8ad3f386c8dcf0f45638d411661e6a2310c3b02e85dfb9654bf106813fbab14e00147dcf259a0e597232a345f445076da6dd684b1e77ec4c7eaf628bc8e9858e32189f802c342e217cab143636f7a8c99f08fca798498b48dbddb3e3172d919b28d61ced3c320ce1cd453bfd00b9547f07b027ab69766ea2956136375a8b9c767ceacbd61009644c27dcedc1ac8d8d753f21f6a49b235e5d7d7a272d5456a33a2807ba23bb3e78c36ee8cd194ec46a9291cd9c026057c04851c44ae676083549e08000e4ec1966001dc4ad3118186a89251b93b1ff8a0f6acb7a6eb19e23bac6fc7190d47900fb9582fefa4ab3db2ceb9885b07c89807c64c461f1c6dbfa4454f69e822a6c987936f7fcd4e4341d226d14140a624dfae53ee4e502876b274b2755e9c1b3f05424c40bd7063c29210cefdbb45e7d27984d62617f622dcbd74a5e13215827ab46e30c9782a5da62765efa26fa0291b2e538d0d41feb622da950ee0420f7f2ad921e992d4fcecd1d2bde7892e4bb301386a59d60b94cb048cabf5338b1fa8c68521f1f18ac07510c25645ed7414587ee2ae5709eddf3d88137e7323155af456640d4ca488113fa75b18c57a8ef417588019a825e4a097f27add8ed830014f03bd1fde106e3020fb8d88e79b9da5b57564bab988a26ae95baa96f3e81f96b16378d274e348931dae83b9ca920e248e665d9e061d2b53072a8715b9804bc7528389014bfefa1b002e212b060911fda2f4cc0b7c4f7cb9509d14a2bdb05c3b1448ea77fff9e96e041991c42d18dad77de1287f3e5ac1e292e6b52db4f2fadf5c222b8c467ee8b870b5ad230b213c2d2d7a0980c56fe05b6c14281031974671132dec4bf23c4afdd49d57a75d97c0b38ff1e8a204eca5c40d10ac8ad343c59dddf32d4ff0b1eafe68b9ac5163d805956228a3ba8bc095f9b604b272de17fedc4c2462c72aa7d0634520cdc06be703efa56ffcde3bedb98a8ae699845223fa36866c53a15896b2430cadc035c6466c3027c522ae629772b1cb8d4228522e6a17ca44f8b69ce38a1a6e954e98426ce55587490ada780489d4eb68b43fc7e02b34ad3378026aca051baa17a49124bc8447011b19970030fccafdb5db6c10b1b1d515388c0f0af29d95016613744b143422bbdb7dc592290baa1d22ca0ec3b67f058168ccf18f11947bda68f89f9bf9de2673c8f36ef5012ebcedf25fcf0aa2f13df45bf7ce60bf4b278b25cf81dc06e3a2c8c04fe565b399692a434f0ac268966cd65cd11680299c3536861480a57cbbc8c1c007b57a6de4331523a76f4ac324604854ed1c04cd004bfafd42e801f48612741f0e914512ab457ac5b26b3750c30338c5ef9c6b0c7adb168accfc2a3adf9e497e0fcab808b7d325c460e6227d851537bf626b091aa9aae1eb8ab096318bd2602ee19569bec38548e3fc486046dfa69773eb4c803b52b20635d11caef8dd27e1a8068b5e5996d6198982f64ece71e769c4c395a33f419ed9089e303dfc5b4e057292086803bebba1e7fc173536d155a406e2788ede280917676ed793dca44b293b00778fe84b4b2c252652003d04c1567acf7cc5f48a514c34cf7d66be8939935cff79950a2e09fbb1361cfdeee3022a80141751482018960402d6202901121f2cd76df73bb97a98566af629369b64aa13f0a15a0312e6e63280acc14e0243f685f916e176cd80e5dbbb91ebd5cd0673f7da78030253c41aabc27571e990deb05a3453a83ec9f23f04a467371874724b9f48420a48fe7389bf446e88c6ff06ef1491b6c4c37046c84322278e0f380df5812e5d7d7b249774d4c311cd6dbaf991ed1de1ef10124516df7690c66085b58b7bec5355317e10e1133001663636dc76a7e8ea4cb800693eeed243b5d3002e9c4f008b20da4eb58fd168220ed741698fc681632eff915215676c9ebbe4937d98b92d880bcc856ed0e8c46801cae2c02c53a094913ac4c082d186d386b3f2b10074207fa113864b9be7a77d82a38aaeefd42a6c536053fab26647a695feab916f7aee5006b54ac7d8ff5acdf7218c6c988c219e8c00f68148e4df25d8366b84b22599926cbd029502bd02499268127595bc5024f211692b6ddbb26ebb4b3618bc66f295a9d134a84db409af6a136d32d319ab8041b3a05929964aa286a552d0698713ed44a37dbbbbbb3b6c9128c6d188b430e8d4ffffffffa2381a9148a5d2e6eeeeeece524a29a554606b8c784e5064a727435a38f5e003d5477d78557dd487c49d784c2da46a0bfdb00cbb81248bd06aa5d2212bd5a62d684f94f551225d046a112db2ac5a64c449956a8f12d9226c041e410215892241a248489cd7a42a24b708dc23cb709124d1136d06a86d68a0067221bce6b55abfcb659652aefa788b15a750911c7e6011f2018719112c423ee050038b06f25a936278c1952c59187ea0fee8cf8ffef8cc8c8ebed81f62df24ed8249a644979460f851264d4cda449b2cab361971d26150e844631295893261a24c80804eb45e9d76f013cd4fb4138dd6363490ab1aa881bea594524a390ac1a48901526933b90899dc645a56d38873e55ac8dddddd21acc11ae72613039caf52527c753a79d75ee779cbea3d0c823328039ccd663348040cfa6f18248244c020180483823efe26534e5de7efa948152997558e38fda5851a88d997ff5d3e0ab5b2e22c2d2c2d2dcbdac2b5da07572994a6565e8b997f502e2de12d26064ab8b8bcc0c418989898658de118cf39270bc1b5e69a0d33d758d4def7dfc7093a9a5af4966a71969612255c5e605e606096154669218f71989854ca5d2a95cbccc8cccc2cebcceb75b3bbafa00944700545a91b262b9ca7f119130334264c38aba6c64f985c84562756ab655d8d38df75adee2eed07a62c5fb16c6cbc6bb5dcf572bd5ecbfaf2e27f1fbfefeeeeeefeffff7f7777776f11fdfb65c2694cd4d49c38e12bd68ac55a5656942064e32c9b56cbe5f217ec05832d2b2cc618e34d44b1038dd6a1b871d80d0e0e0a149e0280140000b0ac008c38fdfffff83125822b894a79f1010840000f408001067002582a0850a182575584023295758be288b4ac25e59a9452ba94524a29a5943221165b4857144d2e74442ac1ff797d0ee2a9271616958ac54281a28019bb2ed268b139e734b9b789e35c74ea4e5db7ac1d2d36679c73c6e69c33c67e77efefeeeeeeffffff8f0c551445312e6b8c231269695b725269dbdcc499386e59b939a72fc316b1b24f26ddddddfdffffffb3d96c369b95369373a614ee74ea3c7ff9bfacaf22ff274f19a514359412081966b3d9ecbbbbbbbb534e5de7792a2ad25391f21f855a6181b3d9cc8828ffffff1f638c314615f98f42adacb0b4c096165e6d6991ddddeeeeee2ea59452ca9802cf1858ac2ac7cfea6076c283757ac01e3d78b5470f12c733c7d4220723c15138886bba40cb10cee064a6ff3f796b74d7a98c420da9bb5c3e54f8717ab202109d50a7ce65d539e2a48ac5526d6a72e152855caa4d5deb52558c3f80cc202cc4a0c63416d31890202cc47476a0eee8ce8eee0489e9ecf008812a4485085121b11d1e21b2215087e8105ed5213a84c44979a24999ea6c0ffb406844112d42e260d00af64ab48aa365252d33148996559444e442ec234a96405da24b785597e892a9eeeeee5e9bb5399261d6b3990cb39ef5cffeffffdfdddddd7d213714751c917cf3cd7d59bdc4b5dde2b6891a6e9b0cb3d96c369361c664f6fdffffff714422954adbe6a5cd79e634777777efeeeeeecd4d268e4b493975b0eb78b5ebfeffff5f4a29a594a3d1e9c4c2a252fd0af0860981824016e00c31e84407aa8eeaf0aaeaa80e8903626a21a7ebcc233ed00818646ae12dfc092f435eedde504cc7e442b4f3c3b2964788caa0ca54b6ac2a1b715215dab463d8bdac3de2fc7784c886b4d003b5477b7ab4272464480b3d3e44a012512244948894437a7c88143102d5881a31a246a45c1fed20d6081f814892404da2012f18ec0607e2e0f02a0ecef77ddff77d31c618638cdddddded799ee7799e87c1aa5ecc34d84069e0407d604018307815060c12a7b20c5ea8aaaaaad2660c3f329d199cc87476768c519743215d27a959d75de7aa96923ac422a4cbf0f592383829d50729d5464341005a562a04115235608d1acb5a63c4759daba5af976ad3d70b0747b5294e370822d4188107126c401b3678d5860d120767228c20e5086b634b5813f6841bf0c60d5ebd71c3860927dc400107c481835771e0089900b428e0e001a69003737278352747a290424e0e1d3be08e1dbcba63c76a9563772c8fedb13ea00a248e6baa3d5685fdb12b2c105ed5a993c4f10ce932ec26330bcc31661de61de681caa33c3cca43e2388e481becfe7568505608cbe0d26448592ed7885472e8722929c68f0b6583b68795a9cce5a2c5e69c93c58acd39e7f4bcf354541ef528d4b2a26273ce19bbbbbbfbffffff49fffa4adbae9b73a63897723a759e8aa7a2b2ac2aeeeedeefeeeeee31c61863eceeeeeeeffbbeeffb3c2ee5d4799e8a8a948f822814afa25093e76a159b73ce199b40cc39dddddd3dc618638cffffff2fa594524af92b289695169612255c5e3c2615934a2d6b0a2626955a1a8c893131a286313173ced894b5dab7bbbbbbf7b7947071797981818949c1548a5753a91798989e1f638c31c6eeeeee96524a29e5f77ddff77d0f13934aa95432323334908686576968dcdddd5df47ddff77ddf7f21ecd6d81d6197845d1b0b4b20712b420d57d34279b23df0b03496e9f0fcffffffef7e205e08677012baa149b0902a157d489761aba530d80d1414c75cd60429e44c9003e6c8b1ac3946dc09ca136fb5549bb66030d5a6b01871e4e4d0b18307e4c1835779f02071302847c70e1e3d7c401f3e78d5870f1dcb637bac8f55e107fcf183577ffcf01a0f1f2a1cf18140201020bc0a0448c8c78f156610a8413448100da2ab150b3a3b3c42027233ad5629cbccacaaf2b2eb5abaee1f26c562b9cb55b3ab65b18dd25c2eb559d7eeaa8c06e5490f3c040dd1030f010c40808a0256c0152b7875c50a12a7dbe6262e65594f30588c2a76c51ab00740044209c00412e0d50412207112c8952ca16cdd902ec3ae7bbd240ece02262ee5d4411c1c172c0ea0d807204040f512018c20025e8d200212c7d28003ae26192a22144441284ae8090512e8111fd9fffffff772c395e9cc18638c31c6effb3efdf6e32f6e51643aacf577b26aef926b87f4e6c653a4a8c002bd80a360a093c10bf8e2c5b2be18ad562e1b1bd5a636363632b097bc518536bdf11429549ba64811e30519bcd06003c80189e35a061a6cc0018c1830460c5e8d11434a0d968385b131b6031950860c5e95218383181dc8f060069c31835767cc30a208238a9032860c0f667c4003d2a0c1ab3468480f3ea00142085084d58aa76ad7ddd8c5b129e4e4d00175e8e0551d3a48dc3233333373d7fdef94524a96bb5c4b2295361374c54883f24469524aa90b83953637712930256559536030b9a5f849d10a45a44934aa0b3ad21754095425aa845755892a2171caa23026b0ede606050a095a3fadffff8fdf2393c964b2ce53718ff53d32994cc6f2c5fefeffffff182558d78f4b6532198bd5238b2fdb81464b89e04a51292feaab46984a57313120ff512b2c2b2c2ccbcab25a757777f79c73ce89f254c62b8e5a61616969f1122e255c5c96d5455575777755f5c55d5e60606252aa944ab5ac2a5555ddddddddddddfe98122e2f4a8332ae929999a1315163a2a666596be69cb13977a0c9f8eaa2ef06eaeeeeeefffffff73ccff33c4f2543336382a6c6c489132b96b75c2d976b595d362d976b7b5bb1d512356cb57aa5436c7e7fdff77ddf577362b562b16c6c5a2ee872f1aacbc5b269b95caf17ec06dedcf0eacd8d8836d96627ed888e12e4eeeeee31c61863eceeeeeeffffff97524a29a5e7799ee779fd362d97eb159555a854b1bbd9c860060000031b000400c22010868120cabdd50014001522252c1c3e1d0e134ec4c1582046c6520c06428801ca18640002c02845cc507200bec7d0d1398c0469284bd1904740e9779447b8759902354190cfc4c3b38b073ba2529a83aea59b4e1958e7fd214b9afa7b8181e1ded318e2c567ec429147c66994a74849d160dc6bb4927bcea3af0206687bb7ddd99dc0592d9f1963c42ddfb9858223e2473ed17e4c9e9c487fac6b01ec2e06e17ca0be84235d516d410e2928cbc191cd21dc7b34a576c394d886b580c507d3057cd9e91ab5ab62be55c61dd6992520f959d525fd0cf4732d6848c54df452c6e9836b79e31ebe80bc47f90829f3d3d1dc58c746430940509894f16600110a1d5a0bcd234d625a451089d306a448dc5c85ea352534a2c9c99bf5ed69dda7d63d64b6e017df2802727778aa18d624fbae3be6ff2c92726d55b2899ca3d341b02f2c027c20685ad319f9ba984103bbbafec51191b1a890edae42b54b8482a57061b06229dcd2a29aba39a43efa2c93be875eace8dbf210c932ff19c91a11044af1b78d595ec93bcc66022b4c6ba284a021990cab0eb01c454dc884fa65306dd7fb2bfeee713060500d2599985a06a4904f274ec9716fa8ba3747298b3e04c66d22bc1c5e255d48d003aa4440237e341bb3965a385ea55d5f324ca9c26ab184625387dc6351f335735f42e59e78176fcae2137804fb7ed99428300872084ec0ee42983970968c1815e853139b33b0cfe8b19873e0a61b314440cbaaeecad4fac9649dc111689690d1a2d4ce094cb0061fd3f136eb1110d0454b17dd5cb6ad0b2942e27449de4cce87dd11ffeb762e016edec3df5cbcd1f337741209e8f05fa1c8f2db0870f183df6105683154b8b563936118e243b89cf762e32889e7e652a032f82dfa274e4bb1eb8c797b7678f1722155400007e371119ae9e4a6731246f4bd81a07209dd1a13e3d4257a54b88683a2d1a9445b5a78a85e95cb23742ad53a4e6bdf5c28efe0df3f31c669c31378cfce00c6ee2ee7e6d6d7d319b710dab86c45352e2f054746192cbfb6833b685ba00993b5e87364a11356a5ebb64908500ac428900f18ee862e6984622c178903280b4d9575028a77b81aa5ce3dd6f12462ccb4a31ef89eb7515f2e51a358f4b87af2a23e6ad40950f37995b160b4ef718be0000091cbb14dd02677ae674be94c2c5ddd5b175100218e951f7d029362492a0e04a7e8930b96a87ad05e17ae0b627dd05836dba645ba750b1c99411aac18c102a8465f3d9f1c7dd5db33720b4495800aeb72de0e1495e6cb51640e08c588eb1f314bbf8aa7699eedfd61f40db1f88a381e9d2cd0c486621ecf748931143d146f14d24263fece4b57f5e65b5f11ac3901c3524be79320aa6cb94bdd3447ae68c047cc4051bc5748358d7914c9d1334a22ce730390acbd22bff33cafca27ed0d91c336660f73338804e912c03cc9144d17c885d73748fed010401aa2edcf28bca5c095c99c78871b6d172b20d14074bd7ab1a30f76f2727bfbcf9d0df759fedca4cc07a038f81d69f90d1816bd24b0c53b6d7098445b3198583edcbdf14a6d48de2085e11db0417b8f1ad16e4cf63bac17ab8ce9231f426f898bbe6f83b5e48c423dd088700cb59f91c110e56f0e92b435071911698ec9dc073b0d70f98d89f9ef9cc5a133650cafbad96a5339dfb67124b7896ce0169da2031325c14f6fd6270ad0b657ec1f81ea466e0337f3c2197214ca402b2abadb5d7f302ef504728b7aeef2807a9e50d7447db60d54f90db6fbc2febe2e8850d62f816e02648b4c0387819135ba6ba421948af931a2c6ea85f3813300528c3b97f69024d47e6a3054d1cbfa7964d477e47094bcdd643b6187c75fc0fb4d6bbb8f2f03f555658fb9e7c0243cc6d0aaac4c3d8c65aad7f0bf099a6781f2d382b0ca2b67bfbbf9e6669e0ef2acc513dd9dc9c7259098204c1c1aa28cd922e0009aca3209cb0a94038baae6a72ba4eaba9083d229992f2f391d1d8a53cd09102e26122723ed12ba1cd51388d5697c8e916e1f18b7b07a70e96d1dfeb8bc47cd972d514884414dc111c089bad1d94a7cf1ef40fc951e65e578021f57280035e74eac5fb6a9ea87fa1a5ecb64a63ccdbf2e3775180ab1310c3a514ca8fafbdc14de9157a69bfceb0e2ef144f4abc7b98c273b3d56f35a7d18843e586f8370816e315aac3fa2f59c96e5254cfc17c21f97798a91fbc6df837425d701a0536d621d0788fdb7c4b6e09e72de36b43978471e3747e50aae91cfcd9356a945428bacb92bb08d2fff54c8f43aa6346f9e1a5784e60e3894235187f7ae897b595b315ea95645a912a9d6e11ce4ffdc12461159d05c5738e7250651ff33fad76d08627eb0dbab17a96edce621bb85c4b83e5f9022fbf577d76d3431b2bd7baa9bd22e580e390052f0f0d1b287fd00441e9a86375fbff35d9add4a774cc9a22454040dfc33d8e4516837f5ba38af0fbb4c6c6851ac275be1ade31840ceec0781be1c28f6f11387deed02cb7df11e451686018d4643d35db88f08b50abba315397451f0057a764b7ae98af91b83f4350534016d59308706d1da8b9d0fd4f7393c3beda675b64bc5a87482b0325f406acfc466580776ac55592d3a3ff1c4eff17136fb1d16646e73f1875ebab7e3cd579552fcff686e8431f424a15c489332eb83db8bbd09297525d42a4f01455bb7bb587aead69498afc3b98d130d5997982df99a3e918d4c3791cdebd7fc987bc82980e8692a085f83a77c8e91fe90111e498e81a3025d52cddb82ccd7ebd9b0edc03d12f9336e39784f4b01de9d7f383c9817a54634ba87545279daea7ba3b333225873384b7f19dc15c21c89fc1e6f0034cf73c21c9d147ac7a9bf0ba956599508858deb15af6b702cd350df5f10a9d0d33fccec7ad4589e1c9ae5ba77b7f0211e2d496706886710b1892e2eb90a3eb8376026936f2f98ea022d9539d4f8a2f5b36e23c4a45e31c953c13fa828120caf0be2f337e67d9044936cccf51cc113a3340ed99d201558c360cd653e8976cd4667c14ce02de7ada466e62cec26eda70cc18dc2e099a3aedbc1992af697792f0830397e43a65c4e72b9a9f1ecba1b702784c511e8a0d94db0ea399a9baa1cecdb27a779ed5843f87df36bfe37b08f4aa7d27e62b743df751076f0648dbb4a4132fe5b475e29e865a56dbd3aa3a140456dc92d9f2d58e7ee84f81174b1ef0f75a2c1a31b3aba8fd186e25d0181d2a7932dffae8e51c715287fe0b09fa34d225315faf4370db7e6db72e23573aee3529a2e04b3381fbe65f4e765ff9f4492bf6bc2df7146e96dac8fec7d325b67f237c65d76936f33d6dd99fc9b71af8e3d752ba3dd3bf944a34f9e7752930ab62ba212d92988c1831f1b29af0da1e1ae344a7ae9e95d451b7fc3b34ead78d29b84591b057a8873adeab5be56c858af13dbcc53f72aa72bc5b5a0abc5f81d01a5698e754faa8813b9fd3507efc5c906fc8cac07f03344f5cd1752499fef1f37d9226451c54a44134faae39588d5e8f8eef80fd2ce80a0ffdff31490b2fab39a42b5b238efa411322ff33d5246e3f27341a073a86a542a5b8e19998e34780f021e830cc6becd47c7e6680b9df8bc30ac1c3e28e2663fb542fa797a99e3ee07f5c7f99ff0ad95f94edb0edea8c8c79896ff79cf3a4e29aa1e38afb091f979bc08707660d04ee7a4c43015db659c639c934f18a763114d2da824510232aca83ac556453a73878d05f1ecfe36ad9b5efd428a2270f6f4433bd15abcf2ca544038b564de0df5d5461582a1052e57973786046914095004784073a998d132ad087ad625a61f7b3f27a21b84ba4df14934075b56a028a182e7d09da3a6a4d9a4c7355350bb1e92fc137dc32835cb251309e572858e4a1709e44c1b1066d9c09094c76943896b057037b137dd9d1cb2c0d3644a84af496b1935df45639cc7804a36432f059adc1ae768c5facb40008a0c028cdf519202f74258d2e4e16fe6cd6d6458f033012d321a03481b528c03f456d84ef775fd84af7ef4d8ec48e804429a1bffbcc4747918391628b555a225526e5e8a4c3354e3cd4d08d6130635957c349f391b1c8ff1b4268a4c7dd7ad1089042f025868177ba66c7e565a5d1429e9a2cd0b710f0a5d13a0272832c94bafc61c48d1fb89005d42b049ca473d914b3e6f1c6bac0c79bb8c34ceaf6dc2f267b94f82b0deac813c272b6871ea026713506e34fe1a0f844c44b9f86f9eb8b066443a3b68a142b7461b45a1c916e8cee581b7f01d76f3494228a5a2db726abcc22482a5607421e67e76ca45b35851ad82d15a21539e4c3f43e2443edacd3c11d1fa1d6f891a35c5f2d66d1f45144b3f18b539d2c57f1df45f8501ee0e847bed7427e523baa530d656e9305072047c2c50a05281990fd1900e2432f05bf3b59d069a10aed4a3a3e78d79224506c12c27deebc34a27cb656fb0715f8749efd341408b9b4e897e7930b4373ff2583e90973297dbc16d6cc5a0b14b580934bfd893ee22bc11c6825d89dc6af54473c20668c9b42ba1708b561eece4e0da09161fe31dad502d0c0cdc01854da9a826efe3a64696aad989ffad1243793dd073cd02389f7815ca73a5ba33da1777ca04c094d2d87feb7baf519d47f40618494b937e88de25378ba642a6e4c02b95574df34f596116230788d30022accd4971b012a691f29580f166e6606d161ba0c64704450bcde21b35cdb9c4bf0c3d99b3e9b758eecf14a8f54fdd195ec3718f4f9247a9a9208c58337c3469dd01e7d3ec6b8eee851590a77917850c7d69e9c37c810aca9302e024be48cd3a97f4e35a05bc64c99b02d91cf1c9a3545b88ce85a658df0a1c25b185d464997838ea76b867e8025a8abb571879ff36c2e6b465ccf49e07677a72656ec4d55adc6475e49adeb6fc3fb0dc6d7aadffe741d5a20be59c1bc7fb4d5cbb1676b78735897568ad75812c371bcb91974051cab5ebce8f12a016ebeb1c6472390cdd2621573e45923322953262bd52881297ba762b677039136daad93f81889c7d59f85d1e709223e9d9818bab70dc9899a390054562ce6852741cadc4686dc7dd36d34f3fd6a5993554dae3c119e9b041ac82a59ad8dcaf70262722b634e77b9a5eaab545a7600e11305ea5a3083a8a2f314cd33f5367c8bdf49b3349ed285e708158368eb6636f8346bf1f58e90335a34c0dfab78a34450d416787f35ad25ec183f17fc3d268d404713255ad0d0ea1d3986de561a9486ac8b4b43cd4eff7e12eadc9d79977d94dbedd587763fa6da6bd1be69e618330a2bf6c8a4bbad8e43167981f579e765feb469747a33d46e30e5268717761bc6a09672a0cfed4e3dda5ed53712712ce9b175b96f886a5f2d7db743cbbae6e951ebcce9ce3c14a97c30696ae0fcdb01a033f48fac0e39043aaaf6d930b5e91fd3d0c21e348efdadb1786f08b210a0752c3b3d3982a0a5e08e138d241f465fabbc29f1b676b3808793cc6514d3e4aa80c88df0905cf648228c0682df955411d3d6dd25d36af9e83c8853a5c99b27e6a3fbf0964f1612fdf81838eb449edb2e91cfbc4953a1feac08058efdd285327bee2418cc9ca3be66b75e6585af36f37f6dd99a1b26cb02e1fdc860908bec8e69da22372ce69c443482ca6089161805536c1dc775f4d62745f1c695394f58a2c4115411ce0bdd0afdbba55ce1a6f77799cf3a523ff04717427f5a011873bb1500c91248d9c79c670a61cd00cb36a30b32387ead7c04e4556398db945b0f447852df2dfae8b26105d8a51bcaf28f2f8493108fb1835de7890f19c0f349a28acb9babe62f82cd5bb4dfc6abd54448656b2bdb1a5f6b1df756de36b8d19b4553ae3bee27e57d9a7f61f7856a4aa55c62f22f4be48e3a8bf3b737105e83244ff39db4547a754d0f518abab006c0a5b24327e451bc24d22a5dc827ef37788fb446d40124ce24f36b7d2e0d72139cc0f901b1115529a9fa07feec05c581a22b70971a72de621f9afb47ebeaa12d50a149ec1781adcccc60e57145b8d881f80e96207d51f55972718804ea1ea8fb6623e5b20e6b233906700554f4ba4e2b1c39246876241ab8077918ac0e679418aec63e512a163eb855e705794518738cdc3fe943bdfc0e2c0e702d8e8e8eb245b1ec632b705e81001c54d7e675ecc072c2a7ab74293a7232153f92397b2498f5c817f9943b1332d78d1aaf890acb1c92f2ead38f5d0d6ff6ae1d47530c12fb9d26deece2ac7b0665cd3e37b2c4dcc40a32e61b836df5add26943dadd9d5c2f4752be13ff2e2766071f099c2166bdadb7fe3a6196b8afdba5ef9c7370fb8440189139308fda3eb6e74ddb5b63880e5cf678138a10c7ff0d9f313a8eabb8e66a51150d3f2e759f9463126076e62d327d02ec4116fa9e45882b5945e2d2a5edf1bee14275a105482ca37679c3968daf87a84c092c1595272a2d0678f25aae8422af893e26243be5478b275d1a7fe0c0e547823057d346bfd37946968b08009e1b31ac7804a8ed141c519db0678142a1dd397660d9fcd9a762b369b2e5fb9db047aeb09339db3fc484c9bd91f956fdcc1b4ea22831063f289a0d06b5d6df8f618f393ebee743c7833fe16cf58cb16448ab27e11a6ce1567aadd3c9128616252dc70b4ea4de806884ad617531cee0a2052cf73572476eb3ee2018d60123a040d995b9611816f7549206f7501a33627c5834a9946ca5702c69b9903b3cc7541cdb99ae5891b88ceed833ac77cb4952086a98cd2983a5e21961eaecb0e168d1fd59bebe44fd6f84c6283f843668bab2f37613845afb1b8e17a08b7c0aa52b06dd1d6d42cc96a93f9db00945d767bdf3af16a7d41d7caa2fd35d489a5eda722e2923d103ba259c89eed16c5d97b2d501ab153004fa290e2c24436af52211959bbc4b238cd70e585a9e77e314283825c5f2f397e10237cc7c6f3e9482ae52dedab0e241e667789c8f7c5edfcefea5f02707194582b8bd6116f41033522bf8fc73e18a90ff50799bbc8c1dcb0ffa43a1daa9ddc7cb122dab787704fb2d5f894df179edb4c84e06bf9e06c4b522108869ac7e12093b207e0e30d5321f80b4e15b13d336922f6531644c3ced730f78514ecb433efd38c8f8163e47373942ad291bfda7bd2138a5d5c6e26f29d31aee40887fb7b092b7c70ab29a78432f4cac2de927dd420bc2918be334bbb37fa54dc0cc27dc2c2e0608937382d7ebd4dc7a3eb6ab01d01bd9a6298f65b8acf67bf56cbb02704b9cb5631dffd5a2f1f4594e4aef0eadc054b3c7785200cff9710c31ad14c2b77f1711606c1cb01b49c1d826ded1f2a7a5634cbf8c0484a4dd7d407645e8200d7b470b5aeb872df264be5babc4479ffc370288e19b2d745237bea9d4520a09cde29ff46322d3d7f18ebccd322be777012298bf14224742f36d1c8abcdfca9b0f6c86307be03163b91b59bd996881a0ffb1447226141a924885fc3937c92d93f98be0580de7f097c74eb3a91514337e63567333584a00e07ce095efafce8b8c3ea4cd00b71d92950056f702bec8eed7800b2d1032592623e6455b499366059fe0c95eed7e9de4165d68ee5f28dc0bc3ee029d6055b3926c420233704a65e30f8f98b1e94ed69017176a08415b6a2e162bb96adb8adb5b05f66b1c44f6a9c21f5631a4b39242dcbbdd3fed4375ac370784d96879ef01fcec5997d4eef037f97ac853444f93896d4792f501b530bb6fe6847e8d356caaa511b6b22342bc3c88da8dcee7f6f7c500b1b9310ff22d55d24804cc34a1202399051e5d6865f1fe3c8057019c6e8c0ea84f93c64fa71c974a49ffa10b455ef3b581d0827a4f2807da689e1252500e381db18a362e9e78f4d1c6fd89acde0215cf6b953b3083c2a571ceabef0482e1afad10bfd45a21f06d6aebe1c7dcd0c03a193b9a8c849575e478564a234381de332f1a71b391ab559cd4ab4f6c4fa810d02cab868db34f30cba6bc217e40f76fcef98d189d1eca4cbfd39d8a7fb12dc07540bdcaf2264ec2b0af39bf76ba1cac3b8e8c41c62d8f4053c6d57774319615bceeeb3c59bde9142b6492004d3073081ef3ae45b08c10c4a62a91d0f0d38efd0fa16d05d44360904da963dcac983998bdafbb19a3b1d6a8f46f934fe1e709664b5691023dcfdff917785d559fce95a54677906aab899331968ad5ab7da9cecee2307eb3195d278ced8e5263f6b08a3d93e336e722066b2eefaf0dc35c3725b05671a560e6d8d5a530f7f075a6a25d564ad9b31426d3b0256a0a222ec090a0cfcc571978f913fec6da1f45fbdd1cee814d57c6cfe8100dff58aafb98f4fe49387edd1124b163253fccde88e3a391defa0002b2e61ab4049610bfb6861076e4e2144ffe7874edfdd72373930b26a03abbdd6fe6a280aa71b3bb42c1cd59f8dc9e181da9e17aafd10686bb1741d886fbba6612e9e4bba8be86b8df6ba106c09edfab60471c0d725b340538754afc4fcad64e9eeb26c4850a3fbdf5c0643fc83c781fb93783b0328409de4deb624c3acfca93bccdc5d0ee6ec1ecf6ed0981e0f2dbbb8da3a5995261efd749e03248e9da60bf7d8953e62218d5948f096d8494c14952e2a807e699ff579c195ef9372bd57632901bfc119d5cc870913913042023cab4c70bac0b8a551031e38ab354f489be91a22ae3c69dc42eafc8b340982d6a723e50a9929a45c0a66bac3fc5e4eac5cd8711b03514043581a7f2e446d232532df0f7128dba7ca5060935045b6045eccbf8158df9716824ba3d2d8774f2668c54ca0d7a485fdf36f43a4ae7835881e84de4b20837ecde5b3c6455ed2179b8368b83cb9f37cdf9916cea807a2add05b756f8b087d424fb88a4e11ebaddd13db564dcd7e9ca6d5684b7f516a8b2e8fe93f5f037e6072f2f717b23595a2b0055da1ddcb83006350bf6101e502efbcb90486215d1805142e157178ea2cfa103565e32daa819592053d0a1b08221b4fa715da89da815e19b89f8ad1e1e85faa7976a5955ba1ed05b3fc9c3c17652dfa2762a549acc689712bb0f160292abe555c9cadd9e7f0033556e9319615d7335a64b9ac1f42d14983de11eafe46ffce4d2ba926f371d0b56cb7115405d9e8b4650335336ef2ae767d5a9dec7ec91991ba054a3e6e38203f0404a4dd9e9f7d1a4f0bc04456d793b4e49391cb69a66821e18309b3fbaef4cac51415067833d2d82675123a483f6aa52189eedac1b4582aa5fb7183c07189a58b049fe6845db97247b6d50f8f00b7415b1018d3dc4436e423b06f7de7022dc455d7d60de2ce3a4599df87092f281e1e02b4042efcf1c7b6aa57edb2e14d500c407e8e774e6ae104bb3ec7ad79024cc41f5e20576cf00dc02cab64948ba064a2d7306141ae4121e4f9106d107869c7d34e2012f2e9ed05689bd17e0dd1d031543dd58665b4f01a0a9ba1a459b004fc3024cf6675ab371c94224509c919385befa6e8e6f29789cf50cf200fde157dd2c619c7c1b428baadd737c8d67e0ec16319445b3e24725c3431de91a7f1a58599a44e63ff9aebfbd88fd6a08dabd396735b06bb9b335add8ed8d087378075bf32f34a41de8741e34a7d4d5f66009ee7f5f9a13140cbd1069ca3250d90b2e3e185af881d17db387b1a13e669b2fb82233d864e3f7b911257e897d9acc35573d312ac1831fe520e9381dcba62fdd495719d2e4775c190975990331b426ad3dd839fab6bb4178eb5ab906838ca229497f5b96fad812c12c04cef4fc193edf7e06124de014a7065b25d11d4442f46ac342b0d30eceecba8ff6b4fec3de1d6c0291f468a78c847ad69286b5c273d0996786f7e207e527f34f63223571381236d4381d9413e1e4425d84237f9c829a18481ad7b8e9e3ae86edaa7559ef8d73a7ec48e1fd26b0f5ec4464430896c50b28d52ecb0d5a30133a831164880912ed5630bb07ce1ecda585e87fd85672afa56615959979a9a561f06c4b01358088969be8761a1e55d708ce162589f4583fa82d923c67417bb470499ce19b8093bc16e031da0c3e6b927709eb341937331dfefdca2dd0895b3fe9c17f9480bd9cdb356079959c30cc5c4c1bc317baa45509e5b339e10dc1f97af87ff6944618a5c2b2068d8877b1ac76933e6cf3a6fcdffc4a62bc8dc4a8073de5287deeacf35ce09afedf8b7860e0fc825d02826842ec94b82007d406e09e0d0efa6feac122fcb927c42c72346eb28f9792aac38a1f0c72cd0dad2eff367ef690ecb519dedf66232f02aeb9b8aee9179460d17a3fbc897ce3d241ada51888f6a7722c549ba0719f195d2b54ef7e93dc181e049e2b6576dffead53de673f77def5d370dd83f4f4e23050351642a7150dfb87216a008a67a1fbdfedfa0918db057b220e6d988d39b1f28f1c89e6902b72080cad9a138cfef2c9e64a25e1099ed1db540d77b3ac2227eeb45614940e8d6619c05a1acbb2599d1f7dbbaeb6cb71e52b31ea9d14c466ef0a793a3ac05cc511e20e928f2b13fc0d69b7838ca5336f9c6b69f51d590335ff8fa7f21b24fe9c101c16e6d988f9dec72e7ed4e81d519d5e66a8540f14589fdbad1c3cad495d4918eb6317b87412f9ea6e50706273a30f72aabab3db8abcc350630b0ae2402ff2d3986ae8826ecc3989c429a4b23adeba08d69b8415ad3ad7da70e606666c2dc2807eac2e13b897a9120a18b5f35019089e4362b0e325865a4a5554bdce32008f79ba006f7ebbe5f774ac214b6e03a2132e4b27d80fe202abce2d8931150fa20fcffc7d37f4078efc7da1e94e27ef50de8cc1113c4064562668a7cfe6670d515833c572a9048f0b63bf02be8ea54731cdb545a760d0b17f996dec34025399e252fa0ee8e0608a5e794eb3ed1e10a068f86a8fa183bf988c85ad733a82b90be390f8945798d6f1868fd0bf1e378c9ec95bf28f7b1697920ce6a25247219f8c170204cf4dbdeb6087a95bcafeb03ba36bc79f1cf00a8ae12c3ef9012068af7d5bfde528fb1d874d87ba8c33f53decb16260e583091f8dc821a7de9445f7d6c14e2d88e0b15a2fcafffd33175b382d980ab76f64071bbc4a7c167e499f71319b7aa92d241b35749e87b75f966a0c8eab3fc6d37854aab4295cbb897c832ac12b5a3e47b1c34544a181e5669a8b3aac763b3ac0a95c63d0254d66c8ae1a18229e2755b222d6fa51d932e0851809cd9364967d68777269d7d9e1936b567da97fa4c3c8b915b477ca97a8de35c7d471ca553064318adcac21de0dbaaf448e962971f2b8359cb5ae5ea5a180902b19d94f66eedab82de0c54fd372b0e813cbf1c4633e3a36fec8bb40063e435b2bad342479dab2d030537ab5cbc2906aef6347e02624c716fcaf78dc1aa70651b775865777f21bee40d437c016355981a0f75d0299885c5054c7e58e1242af1b40c4180d39655cf01a8c99f0ff4d147f722b0bdc61baa7974872e2bc2f728deed1f577fb34650f6d7e2ec28b858c746240fd829a5d295ae46bbb08efb9023224149012e7dbd91889063ccdc3c6d15b492d06d95e07a621be825bc57c86868d85690896887d81d1525576dc482ed42949319589a69d06eab5af6061327582f22fc7382e2d3710810142adfeda265ca5db2e67517f9aadec5a5fe5db6068217cdbdff979c6251538c4061c36c04e94fda681499058a29942d784ceabd19a1eff79f8993be3428866800f5b7f7a91a2c34fc926bd7604867c5e317d4c1aded63dfeae0f4e311c892bb5c57abe042c731509fb47c7f5c0fec25a160df99a00851d02f98bf15193d5ad99c28e2d797a3c705b11c72b9ce03aaf28e50aa31f983f1218583d3744b8a2b74dfb4153749e9c756241a9663a2e1a21d6806c77a180905d98462466e878eca8eb2859c1b4371d4e0cfb2955eac228de9f9e477680771b70e4543dfa08deb0fd5d42b1f27f2b2c9bc2dc000984b3af79d88879449e03c5816957edd3e2f64d0226d73f87c584265b6e41301711af64b76f01307f06ecb7d24893d0ec3b41b3c8b278e578216b57c444a0f493ee5da83a692574ee966cd8f5a05545168c4c922d1b5dff3ee2d950f6791108a6a20e776b398c39b941ba1328536ce87910b68b8b4aeb0d00359a40125f3617702d1700fa6bf4ed41b49a77700f648d75154a515bffe43b1c8a2ffe4202c3187af07022a4a7ec54d8316abd057046b4341ef7dc49cda87395ef965a1368c0e062dd0bcfee817dcf68a985da63ca4819f8cf0ef7122d5bef4c91f1a22360e465d7c7404aaa877b75a309ed5a603af9cc0033c45bd86a7305304f0aa7f8d4030ea5e6d21323e8b23bdc207a3f579fd66aa02abaed356f8e2ac7675eeb9dfe7552798c651744a24115f52610a423622db4a201acdfeffff37d96defbdb7dc5bca94a40c380ba30b630bb145160cb7d8a214b0c68d2dfa80e1868a2df2c0d0dd54b1451c18b3b1bec170d3c9bc8274c5e251c65aad58ac5514ab5514ac9a658ccd70b596a6a3b9b41dedf5ed5ef3edd4e6db67c8387d3b006ebe3d06ceb78350df0e23f5ed30aa6f6f597d3bcb65b5be7dd3f9f619c4b2531c0e5114bbe6a1a6851487fd07cd339fe14ddb344dd3c070738aa2381c2a4271b8088f505b56b38c919cb0f890ae6ae6595665652991accc413dd835d71804691e9fb3cc6758bbb225997048b656414425ef835d7ec55c7a3a601e4d10359e3d1da873ec0551e37d6c2ebf5eccb34b7fe3910511957c0da2c657d047e6f275c83e0341b0b16031e9123bb1ccb239e774d9444a1d189e25c25ab556d5aa566bad60a8e964576b694c7894b196e2d16499c5564ee800cc18c3628025815d4c090a6242682c81d3cd22bcb0be191147d4c5219b9883fd03edcb8bfb93186ac7e893ed88efcd88186aaf556b857a89953bf819dc6ca608f8c5a13e6142788747126c0fb32cf30cec5aadc59cab97775e5138d49102ffe211c63b2b8c3183d84d0becaa9b4c22ecfc90aea6d38f2b257cf1a1d6d23eaaaa606561a75cc9285c72b54357580d75692dbaaa3e9dab93e79c7366ff5daea997aa9aece0398e99270432fbb30b83c53c668d9d2e038f421ad88943291c0efbc14e31074b8f47fdf8d63bffb8c73dea9fcb92b6848ac08a488538c2ac10b3a03d89da1651db421c7521e6905207ad9137b44b8a17fae0605952c3b22facfccd3377eab1d4a41550a506f5d3c1b7633ea0b3198b416b624845f0ed9c8c193838f186bede57afc76025f87109823620efb97c71288a5462670541d5e563f2ca30c81d10e5f978648b1680ae186a5fe22e5d60f671758415060e750d879aa3b41796c55b3cd45af26bb99b4d8b9afda3e166fa76313087c18647f18898434a962ce327466be5c7a391acd3ab2488a03b93198d2ac55379493611e8b8b27871d1c517becf430d0b4eb4a060b02cee9e7f7cc5ebb7024629925224451214823fd45aab4d53a1348506839e7e37673a373d07780ee29a201c5a4511068c55df2ce3aa0928f8d892df5fa8e09127aafa51558514ba4d53a19453b9415454545454dcc5a589b7692a1cf542ebc3fad2395944e7607f0e87d5985c18ffdd2092c59a3734263bb6f3cec276ecf16527af76d9868fb09117eb7c86d983c004b51687341d0020f18117bebbb0ddece6e5ef82edb2f6c252ffbcc5593cac2d2cb5ae584b6d34172c47a144b197be9c9919739a8305f560af5e19c452994f1b2f6f5821d0b22fcfc00cd878f62abf6b7da9355441178fa682372c7b8bd70020cf2d364a396d6a2ed8905b2d8a62bb864712f4219f467a3b4769138f40d2238fa473101a0587e88ab238d437fee5e5e31a8807ea9f4780829f4720b648650bf673155fb99f3ef4c1cf1e0dc700be1e1e580fa567ee5d20ef83be074a21c81b32baa25160270f18d66ac1d0fe9602862fbf81616d35a9b668b6a48b7f6ee8a2e9bc5c8d894b17b623c5523bf5981444dee444243ed8e2431acf32f8283d1ecd85d6e251385bdf1e529bef90ba5c3c0a59070a8f428aa3bd781432eae5e9305d823f48c7e1912903f1a57a46825dd669abf91545edaf151044f0a1d642f16886d8e93f6fa7af26b5689004f727a9438b372811479d8786e03df8c6887c3b56838defd22b55b019d09881862e624a3c768aa1f6ce3cfe9c8f792c4d8fcf0ee43b0bb6250565d0a4a02dd1ace0e8cb623e79d497a0d6dac256f7ef32eb092270f1d905615ebf7f7a34987f340cdfa939e7644f6bd15ab09343dc50e82acab4c71cf2890db596a6a3b5e2670edac1afe94cbe1b1479379493eee3912c3cf1b068c2f6f46e9c8c259b3d209051568f04f9331ce69b7d7619878b70a81d474593b0d6c91c323e3a1873b0c7217c10d9bc7cd37e33ff637df476487a258b935d161673500f30e49720884fcf40be5d27958f47b47801f751a5448bce02c7177bcef3789ee7452c58ecbb52a79fd257b9e2b9ae53b9b1f4dd589294fae7210d9ec147e7e47763892f7ff65d36714e5c1df1e4d9a3e92b586c94694d3cd45c0c456a3103996f3f3783e40c9b8c4dceb20cc398195b61661ae69a27d19513d945889d564c80e2095458211f8795ce5c99ab0c9d0c67ab9bd8506b318aba5ad45eab7685d542bdc23717be9da3abd6096288da303dc1b4e26d78345bf1f6aa49b15469ab59c74a1d1ca89f39893938f0429fc4d11671c4916848c14083d0cdaeb9677b28bf5efce2174ef55a2b0d2d33ccf8e8f1c8c71cd8cc391c16c3300cc33cd5cb772be690efa9be432fc926828d88172fd82c46748918a2388cc323ba8aa125a0c061331b73c4c7266b56f8fe9ccedb2b681644997679bb0551a6fdfb9cde2234f0818d048bda312e71fdafd452582fe5a2b5a48ee8797860fd43ec746a922685286ac7a26671ea1276d25a56b0fe21a3b4567f4c8212d4fca8aae28b0f99d5246d8914b557a13af976ea9222294499c6300cc330cc35294c8d8bef896d59c7bdbc942b2950a87c3e34489cca0d5244025a5ce50651695151697112dc28b1380b4b4b7596bb856f0f63f02b86da3fdfae31d1745242cdf51f8f028f6142987453ea1af9456bb5a89d59e2fc3e2249620c9f8f48944041b55aabe70dedf541b139c150fac7556e8c22cbb9e7332d3940dff3158fe623537cd0ef3cc5e3d179e7dc0c32fc8d3aa82bded01eb9149f612f35c44a0f427ee1a53c233cfa7887da17d8dbb5292c9108f8bc5d9342cc81796b3adf1a16df120c35d7b79605f55073425af150eb02012a1e6a55f8f6280f60e325150f352c7ccf9747782d087516e77058662965659f33554402586e1012d8281521bf28e510b1b151a2446c6e94e88cd2ab8a0ad64b6ff168247b3441c82f1e9b737268ce7010f28b8f51869ba474de659af25214c278f66a3fe0b37f1807218197a22440e83140b8751564c843a18dc722894edfd0d03515a66043add512c928b3971777ae467c79e6592f86798c734e0cc3b03927c6cc7cc26e9a144b114bf1204bd8e90abb793b8d8247d5db693b55f26df398875a8b6611492bceb1338a6611a388c1907a418511f1dd4d0575cdf0d8dbad590d2636d45af1dbc32d06db0a482a1e6e466c447cafb40f8ce6851590556afdac055fa416580ca2a85dfbd4867906a90880b4c2650d5dd74b6c27c30cc4cb672fcf37943e8178a9a00d54f8f6307423496b45514311e361e288ae38d44ea1a04f9eae78445df3475a93ef5662c3c95e9de37bb5967635261aa831d17478c460389fc10a6aad0fb5d63749967a89f53e1eb121e22578430c75d1e3e7421d36597a3bea4bd046bd580ca24c1251a67d5e4c8928d34e2f2664477d06b1534b810993a20d36d880c3725cdf14a13d1da2132a788fbc5105862a3ef3f0000a53bcc603fbead26bd4e8bc8647d351284434262c6a177934d6394d47d349f1cc6a3a1c6ab7576b71a8b5160f8d0987da5d29d475998b286aafe1f598efed90cfaf28d3ce5fb02175694c3c6fd75a3cb2deaee9b867effce8791e48e473191f18822ef30ccc40f71dd889bc5abbd087e7cecd3b17793bea7b2e0a6288cf5ce4f5989f813f6c9e39773b90ba9cdb7ce3b6cd6b783d3670a586676d465dceb947a3693202e0f5a8600c0ae525a4ae6fa72e1e41c16ebe31211c6aafc1a39120766ad9cca787d80d1dd334497203e82858c74e4de21776faf68682d589a26e12b3a2a85de788131b7c5761b18f2a2a5ced5a2be6c0be5b89ad6068f23192a84bbff5a337c3b1495496fc2387c34e79b15394696f2a6c889d08d0498fcef1e5a75796e47d8939e2c74a7b0a1b6aad885d2214ec644fea793e1b3f292a31aeb0b4b8bcc0ccf08fe9a30c403017201c8209a4d99b4508830434afe0109b6b3eef945e0fd53770080c0537a5da2ccb1e4ec9f1e3093f50d26ef599aeb12481889e03a663e00f1404596ec1451a1d79522c5b599918ce109c21585d59a9bc31c71d7b1e0e0ec37f7cdee23fa8c370e9d180a4f7d0e29ff700c3a9470f24411e5afc731f60385551f1158fa5575863b80c1000aa1a035c812e13cb288c54f19006178393d17961b90becc42f0c07d8cd0cad4e7ef16b06334fbae21f1356138b986c4fc6a9ac38751f3eff9c823f727a500141d2557e5087402c5157710afe1822c70715f0c7e7d47f80404a3f565cc57ba0aee2d255c0217224d8838ab38043b4b88a0fc1e23496563c9638b9b90ef2379a4d88e68aa5954b59c01f2baee21ff823a7871510249dc5575c05fc019220880715ffdc071650db5901371bf003295827145c2b976bb55dcd29a535d6bac56dd33c9a9a39cd22ca3889324f2814ea62f11667e6361c60482abe05e7d16cce79d1938c25a139760316c3b7634bbcf4a6331765940df22542fd12d92e91cf615aa2d77138ac565b6e2c61cfaf26c512efd4c080402cb1be1d5bb5a8047363c9e3d1ec1024486c5188a9be9d050c82a51ae3be0ee662382d7ad921480b185b0403c44e2da238172441d00e9faf78fc1e58c021a8abf8e7b144779083a73d8840884d87b800c7a608dfd5b9949822a7b019626333e47f65c5a3a9bee2f160c654e615acfccfa9ef40a3821570e40ded5cf8f6272e301146f22bec9a2931972a2b9e4a8ec761df7d3c3a10f1f59a474ff31966e6c95cb76baf7061cbce502ce7536697e27839c4ffbc72b66d765c125a844358266536e7cc3210e3300cfc80f90052526813a2cc0006e0d89c9181a0d1a4c6005ee678e9e08d3922cccb17bf5e82a10de7b84b6d5c8ac3cd2616b45940c75dec041994def4eed221bfdd9597975fd30a36f3103bc507622426993c6c38738e09f9edd68f5af8eda67cc4c10a360432531f3d0748903bc976bb9f5500e202ae8f2f2e1e0b9252bc534010f399761cee00a6570ef3098640d8a0282cacf422281b521c90067cc40fcb0fe9aafee7e30571fb27156cc828282a502911e2bd7723921eb0beeb8f9e03b69f3ec3fc73aeb036598aa8914172a4d31bd4e0e995ac7a85ada01e984f9f20900fb721bf15f158c16dc886c3c3ebe57261a7d7cb05c5e582f2aa58abd59aad4c6b4519c9d72b9665592b4b65a71dac85dd8b393b76c240fa92256a434d3cd2306a3319454d6cb239c2c6e6081e99328f86c11b4f678abaead328df4e6d248ec4c1e667730a56da1cc13e277549b7e1d09c73355793be5c502426378f06932f33499b996801dda2e84c97955120e7e1bc9c4231319f091e613e78fe334a7ac54021e6b3d3d5a6691d5885b9647a7850314c470e1c37bc7170ecde9f1e0feaedb8a4141e5cbd0370bef7fdd95fde14af37c44efe3ba68d17178fb3b7c3b9dad56b7d7a3c7630008362054e74de3f7a12dc3141d51450b8977985c55c3a6f43361c9da72bcaeacf0a87409847150e930761e00e7ecca3f8f6cd0609264919b0e26a0849be359dd776bea54a08593cc75a0dc18ad7a2f4c8620887e2f3ed91c58943f1e5ed9185901e59e070e8391851e7064a7c480333c2029f7285908fc30db9187cbb8e1b6e5ef8f61c37dca4106e4d7cfb8d1b6e31f876d2bdf70700da005f4017d0037ab5f2b0e00d81dc6d48121e9858e9cc2fcaa2abc93a3a5658d7f9e29ba5b55849e0e243662db1f7c3ac05041730a10a590a8a1538c1223bc9000b58fc5cb2f3edd8099e40f2fab9a465842559fc5cc2082455f8b9043b09219f86a77c9df75e62a714660ba7c8d49973e2ccd56ab59a73ce39a7a76b81c5d1d19a4c22b0cf4b29dd6321c13961494811fd620774e7311bb8a4af56d425846c59dfc2089a64210a965ff3062c787a65f4b61b0e41c186b3a583489a2f9f4f9cad4fd371d15794214f42e1587a0c56f3e9479e7841a524f521b37a8a1697d52a8a1665556185901f5297976c3a964d2536a4385a91148f360c87899a9f7435b58a652f313a8e73d16ad5e6dc6289c3ea67a1f442760c64c29eb1e748f13073acc5741565526eaf628e8e712404471d42c89731e6c0b07abad84d07f28e87ac3910db39274b118b9f6b57d0b4a071e15bb9a01e1f521728f39cb82202089f135744dcfc774199cb1b140e2bc40324489d0a1b52d734c24a506b4d6131f740900786e0902bee20192205121c27dd94c29636adc67061bd3c01c609763a07a309763a078a1185a531000005006430c14e19339e98e12bbf4e5c7009a00c4a908146121a3324618618245f4cab96b83e825e8a86d091904825aa81044b6b04e00801a8c10835c81891b1a10836dc40841b6c346143002901c0f0a60f8000432040018450000304c1002326462420906efcc022807a3b7703870f70e4d071bde9381c00750004f4000109e0410266727846bea4d0c57b3e3af745ac54d5d4fcfcd2122505ecc04e052c40077676f6058607599a3876c2440558cda52462b9183230d8e087130073931a931c48764984ca1d0e81d809bb29627df0ff205d7306431ffc123bb13348847a3da46bceb163f7078975922fe68339205f93376a1a880989cf5ac9e8e1c04a67c69831c63c0c5b51cc319006e4bfe56a095ed40469675567ab6f90d34232b13dc482a40909c73cf3294d3266cc1b30999e15e1118719eae6060707850ab193d60ab11312af6a5264828a0aa69a527b26a43d1bc219134698d4b56749980453d39e4591b19a144b59eb3b2a597d63270c07dca0c81246935d1cb64e1b529c1a68adeecde78d952e7d4a9b2338d46ef31e331a70e006862f33b0b3556df5cc43465116d561e9c8c066956630b8a8b55802e928d8905fad29c47632c829579ca5e57315296160ba6eb6b0aca87c201aa16fc93c86574d6b45ae827aa0fef9471d48496bc51cda6b9a4b7b2dd1344dd358d5391c7b34d5737edeefa712168613c988a844279c30f2f3aabc9438ec4cc2c2d0618f28c14874e28bd4b72c851a9428450f9b261cc284302996546e100ae6d4ea1a48713894f9c7a3c9b24f0ae150e884c371e7db23bf5430257df188a98bbee88bba2814ea9af495793c9a393b57dd3eae90eca8aac86176c94d4a59bc85613cd4ba50f195093ecf6fce39a5949ff56824330d4bc94998280d10722683e70c28dbe72a273b616067c76058a594d233c9a482dcb9ec188a959f4793798498efa35f8213456f90223e1ffdec52caebede89c412236de5daf03411f8f646183f9021b62a75790e7fbf9beb9c1f3b52f416d27cab8c086d8e94e93119eeff798cf6964a6befd82718722a4079e7d22315b6065f4d12fb91eac95ec7a498b05169461051624bd0492e00efe0dcaab24c334d9103bc570f5c65a130db443bae69a6f5eb920f473971ccf145e9e1562f8ef36aa7b79231226a7ff6eabb0ae9bb09cc624cb9c39d39a70a833f668add682d59860371213c29f8161c7811d8f3667679ff582aac787e1d170bd1b6a83e29e7351b09db2a580e164ec8409c16e787ec00e0c6b8c8f47b4e09aa8edb6121b3f3e31849ddf380f37cfb01376da366edb368ebbd88d96691c487b4de531385560d933103b71885dc34e5a0bbb6114a3b01bec8409c14e15bb01c1cc14d8905f2f1f574b98028a7f3b020536e4d7cf11e64ca0503314c19138313c69441265cd8a28936d613306e5100eb5bc9947601906801997a7768579025b5ded9ace0b186238ce6117c6cf2bffbb6c5ac273b2e369021b4b7205489ab8c24d4d29c44e196b4ca611563a6374353fca62140e8af38ff5201d3ed64bd75a26e11087da555a44013b551df8c0ef12369cec26dbc41c3ee4b74df1382d73be9bcd130b821d086ea083e0c4302cc3320cc33070ceece3d1ccf95da9633aa6440ce20ded1c484f10433d8bb0d894444a605120e920e9b1f4dd20427d867996c0865acb35264ca2f29b9c81aa6fa0eab144354df3e91ba7cd39992536495029aace6c66539bd99cec4af2c4875a8b3af990ae68918add6027c64e8ce210457dae2615c0db470620808cb787dacb060f37530d0f37548c871beb794767b30980871b0e0d1e6ee1d6bac1c3ada6060fb71b91879c46018543f4c5207579f539024b5f995722ad26cdd0241ade3278bbb6d324d0dbb7539364789f6293aedbf0d824f717178f4d9ae11e8f4d02805b8f4d8a01f28fc726c170cf639360bcf3c86d8e9dd8e7ca1c808fae01aea6a3b9b41d500037b6c80678c38d2d7a013fd0861b5be401656ab8013b2d6a9555f6f2f930c655e9ece99992ac15e7cc3e9c2a19b39984489a61e21014d29b58966559c532ea7948e3372e838056c2648c744e3979bb5d5bdffd382c758e3d768f8679c8b7c3db57ee6a3ce2a7d06dda709de2def554f1dcc59e13c502082086da7158cd87d8c8c57718e3054bc477788306233c019134ab13df1da3f0ed5c108b39e6e18d2681ae1b2aab971679f7c5f5dc9d9fc25d6a85f7bc9bf2a426e5c66f829dce1e8d05db4117948e71d19f3e23c9237d429971ba334c3c92249f201b9b9759e3ea696a56cce1bdf44c098fd8f9a5c725155efab7a37ae92d960e67724e6c0c9498178fb8499383e172c1707508c3d56a52bd6951fbe9344f9ea7ccd3cb705530b4150c5f3cf06686c903d650b99ae460f82265b8625c35a2f068585f6315656aa862a0c4bc625e9c176c0d55936c58c3f5bdaaa1f3f1b0464b82618dd57b60802ece5e59fadc189defc678eeaa4931aa1675ab6298f0087bcee74b8b9743fc1855f70efd8e59591b234524c9289a3d6358312d2a620e253cea26312445d4d158c41bfa63a48823194393635a4d6a8f61715817c39a1e4b13743117e53daf0e42e15175f075e57b77cec7ba604190f4aea614a4ab2991c04b392110d3e6a76f3a4c972decf7c26991caca8379488373445d11f2e5218ddf1e9ba1d3580377f06b9ed16f8f81c2c4b7d370a26108932217315178149df062c8f72ac87718f3a2c1866f421a4c588d132e287c4883906f2d63192e1ec1707d7b28c3f52a95287814a9f8293e545112f324c61543cddc7ba40e464fcff510cb9ee9e1baf3d4c76e2cb1c7037cea2a30d830c67523c6c523f6090a311f7c6ec77a9ec118178776906007dd8f1e118c9b18e89e1b8262d95b95040790e9824e1c6aa6e00fec20246e649ed1cca9ff40a78a4394c6b8688c8bc6b828e80432819000210132814eda9c30e1cc5c61c1862aabef1b231c402690c9c5e5c423b61f8face0052a2b1ecd3081334ca0cb068f15a4473906b1d7effebb2076c932792e88c11df7d973a2134e8af039d1092725f8ed3d37273ae124078fc3caef4ad47763c953bf3d1a0aee009fb31ad0c5334cf2865e624badc44ebf11b3d3a41b51d43e5551d44e43cdbb867c78030a48de06e698c461658c2be668f9ae1f13e5db77bebdbeecf41b31525eed79880da76ade58ced37518ff04a3ac894e3c61c1d730d2841a290e750dd5778d540d23df0ee3e2c02259a39a2a6bade74b6111751d0ebbb90c1e0d103278349d7bd7fb7aa3134e56cfdd6c324b20a66f0ef21cc01f553870a81dbc11e38a71493a9fcea069210f7481aeda9a97b3219fb3d17177fbed46279cf8e0b5ab0dd93c1de6f7c802c7d63c4172c602bf9d6fe70b83ade15018b3c537c87961a3135dac3e04992a116cd8e17c3ba06bd5e1744598840373680c3b3f1d862ac605babe79d04a5325412690e9dba9bb9c9a844d95cbe9db6f88714d558cab455c0314d6053bc3d424ccbb6780375a24061bc6b8625cb3da70f351862c041248d30aa8808b3442edf513eb6ac5bc5e20ba671a215983e770d866a2532b0c73e65a9dab5c19933ab8880f1de42d843cccc7554bf55c2c80ddba1a3a9fe11e6a7866206a584033b121a7628ee6256e56ac1c781466aef9ec593bbbf252fd87203cf099c78f5e8fec43209ff9e0d782c83e732e879b4dc101fe1ce69441f4175f7c71372f2c919a9c0c54670f414e06aa837a60ce8e8140f4679d0eecb5bafc0a863ce26bc033d04c9e2051f30c827490bfb9fccdb97982e7dbf2d19338ac6449253149ca08104a927068ae5246b8b02127d9b860c3a8e2c2e6c0239fc901cc8143d317c0a1d91c36cf2c80479508e7ede510bf8242cce794e5dcbbcb415834b9e86cc32317f0457e648af448206a7817aed194e01a0ec2d73da0b59f174eb95cf9d80eff1a1e05894c238cf1d9ca67994fce6af89926b111164def3e6018572b2f601859315c66c8a9d04b92a3806320a7a258f6be0cbec8287834e3837e75998443320a95954956a08ca2e5e2b37a8da46aed0b10a1ff81ddc52b7bc672f150b2a41205581767c9eec23f30086a0f25086ab087d8a21088d07b7571ecba488fc605942dc9da828ae3bc7be92e7777685ee6714e76f2471e9f1e6bb5b6fb90532fe0d68565af36b021b3124ec2a4d2123791536ca4b4044e14c50f398a8f5cd32400f80c6be7a17dd16190e370d820a926499d16b178f499d3eb131b4a9d9fde3d9732c3a119e2a411e638ae9b00f53ece7deecc0238f4798be7c0a31470fad318020050ca338723b122f286e9e1f7fc6194bc613aff20ca4c0fb767064320429fe21fb737f4c0cde1ce7068fac6854df130aa16c0a1e9293ec37c7f60b7ce4354541c34e4a7c3b88c84189a0e7379093234fde57213222be1d60f1a67c5a77311169fcea8f615c770be82457efa3383b2fbe92e2e5360c8fee231861e78eb2fa04c7168bacb0d3bf0d65b6e28bfc5fa4cb7dc30e5430e61ae1033e5c605f088471f9f9e430ad78c08e719f76520f41694463834fd03a30fb88643936db6978d4896b879d98449b2a6a6a6c6a6345deaf0887db263a49fd35b345d729e2b5fab1f1ba56b1cd7611c77daf5dcf81e18ef4799e9dea492144d9f510a3f3d244d11993053bdb0a14ca5982d1be19095bc3c0be7613e1e61a99efb741589099a78e9ed2002eac13fb026a73ac8070a22d2792c71a026df7168daaee284c55f7b5f5a347d6ac1ae9a34c3a926c954144d9f4e60f032f599e7d16c5b5846ddfcf489751e8f1d3a0f029c771e0438e7548b9a899fcedd1c7a8736c24397665a347d7362439992291e19993b304204483ec6100341e3abf34df2d3b5e931ce2ad86cfaac82c5e6f4a99a497814324fa7daeb0b01630118a2aac246e7a46c52b569917449012e6c586dde07cd746cb2560d6c35f18865387f9a38548fe050a6c40456930d87e4ac5e6dba9a781439bac0306aa7938bad8c4915367c7940fc08822a87da45f9881686b432d68efeead5f9a58799122659eaa33bc7d52a8443b2de9c60e8a846bea2a4c760922cd5f0d2ab91138a4761c561427a15c249aebb2a63280b81c819db13a34c46b381f5080ec90cac362aa8383c925e8bf0c81fa4e004c36ce7650db2c221d92eeba1ada798b99a546da2487a3dbdac362fab8a935c11ab2f561f575fb4de868fab2f4eeff1cae8f598cf9e753ca3644f8c32b28233d820397d3b0e51b73c8aa38851ef789479bd1908c2c01d4f7f8629f883730c381ad6c3d51a3f0ad63fcc5e4dca74a060335593b257a67ace5e8f3d7b2bb11f555fc0f9ea84cbaa605f54401b2427b20158005c8c5104363acb9bd109c44697312463e49e5cd8182312381c56d6ba5203276383e470909cf8c2451acc943d4ec658b2e8e5da0fb66930a488b95bc23c5f0ab64e4883278a638f34c27e398f62bb382465bba287355e8a2c4c8d34f2882fa38cec6e0ec92863ecd7a73a142bc9fd0c9edeee342655db366d6ecc1a5d45198f3934a71c2467669db3550fa5f683744de788939da905c7af7843bb4ac9dbf8b852dde039ef08131f9df071a56af250a49e868f47a030bdf478a8b1e155a20e0a956c682124598b28a6165a1771b20fd4877049953e8fde0e1f38d3a21b1c6a28d66f1c7932c408eb3ff908141cad0b29332f89a497bd75e693ee660527c450cf79295d4db74d9bfad437ab5a638b766811911c9c8471254931482c1a17200f37530c10f4f202039ce12c525c50951770b0a01f37b9c25650b8d9c8d84ed974506bf50c307695016a31eee7a04b1dc65d7196ab6263dc5802dd58827163a9a4e37aa16e52dfa826c512a758c7c5230936ebf08b5dec629d263a3adc845d5a7b34592679beacb04c30c410186a62a8b16061bcc5a3b7b9bc1a130e693a3b661636e4d774092183004d0f0202b104e33ecc70d30327be28b538d6daee0e4182acf8e741549cf26b823bc0b4809fb3780f9fb38043e4481f62c53f97600fd4599c051c42e5078baff80f1857517118ffb1e22cfe43c561587cc57b807115165f711f605c250bf647ce8f16fffc070ca758b03f727aa001fed1aa8ae5b62ec3e854b176dbb6ad5695cf6eb5d61a579fcfda1cb6ed6437f7788ca11679377a1fb0ba742f37e7cd6d4b57419fe106700e93bb1189890a2f870630299656425df26e2c65994800b5d6da4bacbf26fd931fcda7bebecf3dfcf90cd757b52f998a322d9b7879e2485bc1fafb878fb856f0b9c7e53729140aa5aaa6c5d6776dfdbeefdbf1008f3e1e7d604baf0ebac733c3f2233f1f971f3024a57baa7375ad761ebefdb5df03fa24f77d3c55dbbeeffbbe5a3f1f273f9b563d212d2459aa0f69789462e35ed6c0a19629a943e5db37188438d427cfc7b717d830f41d63fca4cb148f8cb8a2304984924978148fa482d49754a2f2a154c956aa07dd998ea09ef85042f9f650ae647df1288caedfe1511877be46b9c087350cdf1ebd1ef10acf3ec33678c4a04c81d42518faa0df0da5cd87546148f3642a2553a0fcfce371f650fec73f10e4017388eff18f7fce1e8d27f441fff3f9aee6acb1e611f1bc062679de1ef2ae3412e251056be81d1bc69d0b78a0491130fd134120e2c3e88242910f638bfb2e3d7d7c86e9894742ea6bc9b7cb54ccf1f1767904cfdb251124023ccc336f974dc41c1eef232c9ff03c944ce83c94534c0f25923997f091a9577cef06f13ce5fb3ef73c4ff13cdf3c9a8f99863ddff77ddff7f9e7d1fb80f676936ed36a86d1294ff224515987fa2803109e21984064a601244037dfb2249928e2bb0f431fbbec490c3597b9aacf70f6640bdfde9f172769687566ae374a8600ce433b6b6cddb1bde3b1e16e3cd3dbd15f71649ddd18c58eb06d12fc41b6b76ddbb679f43cafbfde39cd9a9e3d6b5ab4794b617ddbb66ddbc08f6b0a16066786e5c56ae839c51c937eec278cd11fcee3670b9f178f6a966559d63adb958f6161af2c6d373ea6633dcf0962c5e191c7c68647fd62cf09e2a8b7103d1a8fcf707b341ee7ae2cd55b9dc38e60a5cff496d518449924a28c125146c8ad434ef50e51b38b01b9f31bf8c31690e8178fea0a628877b24c7a3bdc58ea21d86ddb7cdb36bbd3245962afa79883ab0906873924c18fabe27436736ed3b79bdfbc6e0e90bf81a1cc3ab31e1b8f73d4f3387763692e79abba428bd76ef75cf4b6cdb78b69cc832c65d566c7f3847d71efec90f15a2c4d4f3abd42cccfebb679fe793e05cb1e7ea8603fcf8da518491e154491c7268eea123184e35141247dba103d364dfabc1a87dd1c3b82ddc0ce8643b254719688a38ea1661002b1d4f9e5ba2b4bb2437dfba70ba9382af2edddf920763a8821538b9a6f0fd539ae876043189c67666697a733751d0ae44375ceb9eea6771a02b2d49d5ac41e7626769019fcb8360f617036ffbc98a0795891c8257c7b2d9213772075786c2a8ed4c1359de90811be81f06d42c2b7d722c0e0a49808ab0f6a0a27ca5c2295524ae99c9d49ea68280c832375f44bc2e07ce6f2d8481dd9ce17a24c434931e204df4e5f224809f2edb25fdf9eb9c20f18bebd3f62f8f66c47eaf84491d917628e8f1751a63f5d88aea51cf19d32826fff44913a3c36f1e38524794c1045ed3a3c398837b060e4b1414a0a3c49a490e01bf4b0e033866fff44e190d4c2b24bf0f3e2900ee921f3fdec7c5eecfe89f2e9d9f4d514fcec7c5ef6c3cfeb1385495c535353c3825263218ae2cf5c3185284a79fa6a92c788286a5f410cbe3d35f8760da42f8f0d15f206e91b1072e7a9274b5cf4a43462d9e5cc9c9320939863e5db3f3b318716ca9dde6951837aa843705e1d4889e32ec807ce3befc06993edb4a8678d1436fcbcc2ce6413763b4f5f9de9f52de33750b26b5788508240603a457e4e61a760c38af379cd8a236f900ebaa136a0b84823dc68267976f20823a40909662274037992266ec912c315ac2a1894200a5b61f190867332f39cc36155ba589fbb814d71954ef3525ca5c5a347d3229df3362bfeb32ad4238d20399d7f4a2c48a44eca2636ed7860675229d9141946173f6e3faf8bd0a9120ebba37ee79c104b9ddb2ef79ffb5deced8d5654faf1282c15c9042725b3b88a09603c301d8babacb0a655ac567666f087cce7af64cebe92b9bc3d5c3c8301a3c5b3eb9279365b5c32aebd07a4384807ce5bbc05fc2166309c7d6545bac010a273217cd4b72e840ffb9ffb7879cfb90b6af1f829d90a8bab801295e2114b986512957119976519c75d999228c9844449946442a6b839512854b7dc9718994c194155d44bab38146a222c95a5c86219b1b78d708428838428d349a687f2f57abd5ef1c84ba75c5480f5b41b44aabaae3a67031b76eaf336c2a42024f0d24b75186729a2cc1451868a28a38404ce2d66610ee33f605cabdf4b6ce79f740ef31f301ed7dc0718c77c8635cd855d20ba6e6b57d6f488497e90b68775e9dba54e81971fa717a483752e7a3d26f52c61290d370f42bebd719b33ac75f3cacebf8ed2178bc59a1b333333cba0dcf911d2087e71814541ac7304df96e5c34e55e1f1a87dc4f7812de476ac9ff1883fdb880d6c9b6c384444f3549334b04f35853957d742f95a1141c927e0e3aa89d46b5e79d0aacf7075cd31770c1c622b69e00e2d6a8f2cf6d97dc3a34983495c4301a69472ca3eb10be150cf6b4da8176b42a1527d73e291903ef58947b285344ea3640dacf4b66953dbb4a94d3647d8d8f0e8885adbe6bb6d5eaf977c655fe65d451290c897176b2d4b5693a956f1f372466904a477aad69fccbab1a134fdebf57add972e5d6a2693d582f05c0aa35a3aef62d691d613df52b84c26245e19edd32be69828d4045f7ac679d6794883e9e75d3741842ec26d233248204854a7620e23449654ccc1f2edda7de182d5c2775fe19510ab6831e8e83cec317c877dc5b74bfa798d24cd3f30943ec1162b6909720b64254d8f206da97dbb6ce2109fe8894d8c049bd8c4a3c96c6231122c3eb110d6267bd5a495526a822ba59051ac5aa131238951a1e72b4d51a65dfb8cde396f7f1be91487d8c448c8af53df6553abbeefbbadea541be954a77834f9db363e995e2ff93af5498bb56db852ed2662a73ad5a928d38ee1d89047feed590ecbc88a47f1c81854f020f6d8497804a21e3b0aa9e3ce2c8043ed51e505281f46550e0dd861b5cd8e29e6906e6f277d6a5a7b61354fb5915ed1c076777b979f6be9da8bea3f3c8ef90f1850c75dc94594e922ca6c61e5ca282c2f1e285fd561fc07e61eff511dc65f3ae98178f038e63ec0388807cc3dee03e61e10c687ea30e0105bc903be444f7a8e4bb801203fddc5a57720cf01b25d5cdcdecfa371d1bc8d30a9596efdc838517c7bbddc728968202b61b9f5576e3c32862bbcce23b36460535c05942c0ec9503a6db158f2d56ab194b0584a5a1c2777e44bb2364b43f2ed269a08dded22b4110ec9e894093caef98fea98fff0b8d65ed81f393d68eef11f9857ffa1b9c767f88079751f34f754c7dc870afae00159d5a246d958da4ab19423c176ef5aad95ee394bef5033b09ee733ec79a79ac4b55afbf10a9fddeca5e78019ef4d8e4637ef3cf2d9d55e7a3be487c7d663f30c047dc01ed6a9f3b04e1dc8476f87750ad28832d3e5e7e1fc6c4ecf3db73708f9c573fe358ba3c41c9c7b9c99681e32140f586bc54090f32ea750cc0493da088bda63c4e814a378d43d33c1ac5a7560a7381958e9d2d4a96e79a29486d2d4270e51166551166551799226898434499344429ebaae533c32c2a35675926f6754add64a16a7d3a4b6e11d16efb09620830fdb060a46f8907750269429bbdcd31b8f8c81063f6f165f4d9228c9922cc9922c896a4da25073a34143d33410d2602ac4c652e55852c2869d3a9d9ac426539f9aa58449184781d2e4fbc54c38c001cb811789c29e6fb4e26f4e3c32861dfccb76b78eec1487da4812967ac82896228ada591fcb2c14b3a24ca798d5cea6d6aa29ca849706b76d2f06a2854002999a4c010ab84823b461e332cd331c7632f3ed9fe1fd76b55bb16a456d51c761a78c891213860ec515e110df0ed5e170a893f8f804078f13032526cace0efa378634e90ba6bfa894cdb2a6510d434523100000041314002028100c0784a221a154aa29a5fb14800b889c5076569e08a31c87519032c81842140040c00c10000c44db06245ac6e379c20871c8701e53bd322da1a5f2f34adda47245018302c2b2a162949e932c975c110fb63d5bcb1c6c4b8fbf25d03b011398d6ddfe2be9b5884936312ec3e5da555c3d2ea910ff3ad06f7ac34573e073babfab392ebdc1ff39de323fdced176fd73dcb3335b0ef0f1933233a07b1db25f2ae9ab118724e6eb2315d735bb5455ed885d3ba5ba9daa2e52273ba2f00a9d28480356be43c99179ac7fb768c923a0c9a7871587a31fcda1e0abaaca24cd52c0d9d22b181dda8f0d48580add4a53bb1247df1b5b75985e3028b0562c04559b558cf059a684a903919e480c5bbbd5243fef0e32edc460b158564fac2abfc63b8e837890c947b5fd52d05cf559c8ab3ad490e0bf873e8bcec149246be2743a43d0dcb5806172f9cad9a77c3121397f8821ba133c877204f6a0209fd0e98eacf59534489ae7f97d38ae2e2ac36ce420bf11c64d6dd442e7801b7e5d3d5208322730acacc0f7b7278a0eaa3c1100f58b9c39502d9bab071a8c5748a4a302d99625dfbbf3c046d1af8a050897ed68e130497326f85610b7abe96dac70a1c9b923458da515f511a89110eebadf49c94c89a5758b8aa6a013bb6510abe893093e543695c0667271bf9275bad7c75c7577f25221aedb2208dc4c65fb923d25ec86274b7bf9b70642ebb35c9a0ed6e5380268edd795cb17b81d0c7474c6a18360413ac14e3047c8a5604f90dc89e467642095f86fe24607c6f4d211c5a114702b2050fcf19b5ccd250175027f870cff430a7713c7aa91e397c8c3d75a7255e5015fb07cb3cf535c38838f06eadeb10eb0c53f343b2b4e447ffb0950266d96a2e473a30a948a0269d77e2a09e5d8ca1add817c93a97796eb0e44d491e258caffe3749bc86540ac1a06bd423ebe3c31e4770ec49fea3890bf3fc9cd081b2bf13089e65fa8d7a75d6c8b2199239e2fb0f36eb773c4134559fc0688c6ae3c4c3043fc96eab4ce1dcf0048448382aea5769cbad3bdf81b133d179a7570ab5070fb22f8b2eebb86bba3c53d3cf370712d86c1aa623367732b799f2cd2447ab469593bc44871496caefae003dc1e1758e0acc6ae735174afc65d3e99037b6759239222d0bc19880a996af7d4ba2ede41d137d244448cee2156edf7c025b71c4dc487a917b50d217a9dbaf4fc936c9592afaf5b608bc2e6bcc36b1c01ef53ae1eba32e46a7807d704c2f0c4271298d64d7d3d18db94ad91f64183de1175c4288684c40242ea2ad61a218d4ed8af51c920e9c1d8b3e3eae934a78e2f8d3e46e58e7d6646b7ea3ac5e05a3a3faafc55714fabfe869e63d06cef503a7e4f36c9433a5c47a3adf2ea01c89423e48ec8e88c95014f1a3847f5d7060e41a66344a9808c3e9e4c7a2fe3b3c98f2ad85faea6c8e8c95b361fc7a7b4df64c7f0db08d97742e22455e37b45b62c65224c016f0ff5a1969a875ba8bd3eb39809b8c5d566656a4829ada8c34301eb2a5529e73830691d72f0d0ae48001e2084ed48c767cb15ee5086d08613549ea53bf5516d6781b30409f20a2fc63c4850eea85da4b2cad6f838777dd779a2fe56c5a5dccd36b85d424a6b8ffb52848125450cccbcd6a24407fcc85a8b040f08f6dc7032495768062f8411b120fe1ed44014681f24d333ad4eeb804ce4458ed161a3de7a4a8ab65b0d2b8b58f169f345a9d499a438ff8528e7326d0f950527bc4f2aabd222658d074186b8ac636d618e3a63f6411a102342a7e231037a1591395074c22ca123934105440e7b5408d7d9707a464926f106a5cfec897b038475fc14c27807d6179481e5b9dfa2cc80190c7c9bb41e6a87e8a81c06691159f64f9fb07f92961e22b47cf766e4151965f193f69cd6a3289b7c1f65b8f0ff2c5a45065291b16dd8641e05171c952de2589284a03008f4f58d712f0535cb39a192f0c673f19606fb332dddf81545fc920ec64fe7ebb9dfa94f9194690d61f0f9beda00a1f2dd74a06df6a38f43ebb132579386cd4cfaa99797fab640712ea798490688dbcdc41a2ef0dcd277ceee038f704f7a1613f30f01b6d42885a24d2550ac13e34c4a5da95dd03d487180ecc86e55460f27a8fb3ade9103a5f9aed11b89e7f2e3bbeaed813518db6badbb32e0332acaf59819cb77643ddcaf731b2954c160808e1d81277fbe9872aaf0312711fe13360fc921a6e99038d62a6ae186cbb448d9afaa62ed3b13d69943dd8696c9a5fa0a0c392b6a651f601a89f615c262ca35b42c266b41b1a2478ea51dce927114c6e3e1c135fa26f7c86338bab3623a30fab0b60fd01fc32d1d7bbe44b871383c37af2fd26630378365cafbf2fa5819cdc1e8217d92c2ae4f47b9f2fe260501c1040094ceae08bf0686b7ec0011c3a9e8cac7abfca8ed880a5211535a319868e0aab902e293466db50f89ff1b8a23a13f513e4cda57b28abdc2cc3efcd99bcfa3ce8c6f4fb30111909dac999eff68387c78d8985e64a7f702265809a4e00ba6d21ae3b754389a9bce95f9b92061e64bb8da44906d13454f5c99c006bb3a26fad2166636330ae83e1b44aba379d4063125a54dcecff6d2efc8ed7e5c289b8f7fb5708f69f8a0f5f32e0aa5187f87dcb9a2e81749673b7d39f10dc05125b25cb4a3e32320fd93dd8108cd7460eeb7b4616a92e408793de1821d28dbf24ee24b349f5fef46b0ef726ac131528dfcd2ac436cea850c97243cfde35ad94593ad1638d836ce725bc420374f378efb8675dafdb7bd8f70f62b0df229a66b4f92bc742ec6ed2e1c12ac59f1a086a2ca02cbbab0cc475f11da828c54a0f875845e9aae3c45bea4f28fec898cf5c4ca78e31faad763753ff5dd1caed630d7964e585c22992b5339b5dbc4c41434833ab739c8df906e1cce4ad9098312fa0a1506d29594962de24a17b1afb63eb2ed687528f8885e90f5e17d394b611a95719f0e3bc6ba453de633534be455361d320c9bcee9bb4fc31d71ba9a50acca2a9539f414ecac63c910f154a516bd0c6d8e6ceacc867d87846969dda109e6ca3afd7bdb69b3666949943716cc4d47b54a5fb4b74536cfee229d66961cedc2a1cbd2d5a481820f84f5173950f6566964092077c8ca450a88a1a666bcbe1c83ac2ff9c06dbd37b233246c1279a374aff8e3791a8f42e4ed0410492e72dc1025380631fe7de8035075486f1e0aedc0c13261188cdffa9c10a05ce2041cec48fb3d3291e5b9aa6a6f57aebb606669b588f053efdb77f12172bb66d1314399751f1c9bec460c33e1c8c463a191deb4c83cc11d35732abb025d2c0a8b7e503bd3ebb6d0d34d624762b2ef3f88ba3171a864b20c39125f5cf5dcd33a4468068561e5a5336c29cb278f84cd508bb85700aceabb1fefc09462ea41839932077767e32a062a657cb3411a3f094ac718902f5e1815cd7049e52f3a78308214d179ee28fffff26dfe7c8f1351995ae5bf7e8f43bedad9b127e00ece0f3d1bc9f5c90867d147b6f6871f45c77c0ea0cf170d6d13eb70a0cef7f9009edc7d9e2d176d371022a209a5be1c25b0ebe7bd84a0dadefb6531a4bc954b502157504c96fa5550ab3a4d758fa9f3982e17e516c081d13afd01d09fcb41d3d58807783e1c01346b2c721c11f1409021ee3a28ee292e20ae88eaf83340fd7feaa497d4c4e019687ed9065664d2cd3d7f4e7b9b5ae9045f94277ef800d19693a8f4d5cb3fb04a95aa9e23467363bc7cccc4d0712933051f8ac71ecba0bf6c3114b7342a2f01c0265c943f89400fdefcffed6a09f4cf5becc09e336b1d047c06df1a0eb1f02930435730b9749a461a22d4358f2cbb4a27b76b095341aea72e5a29cdedd424d05ce50fb4b0ff14203fb49635daa060836cc5dc5952bf08993e62171b94a86fce24a001ee7318df2b48854ad809e96a6af12b59a51cc1d81b477853da32ada70888370f33d477cc035c0af447f73801de334eac39cd4ce3d039e44b431b20f7baa55fcfa6bbfc81d67a27886010e0a07ee5a2e38d89af985d87ae8a4a02fc489cfacd9df02fabaa98a5f1b1c2e5c6ef4837dbf0b25396757a5e1da5084db29b3b305abf7b74d70154cf8407048418adbfef6149b0b3114f8fcd56120dd9de711a91c1b64325300b7e0197bd2d5fb0f2d9f1137f89dd59421cd7b129f3ffc764d0c5a04734ba26895593c2502b23fccaf899419eab7b8e3e7225d07528adb5739ffded6a4c99c0cd70e47ec7d1670eb35871103c410d6c8810847138609da19c8673df50b0ba76b2666db7b928906c6000afbc1606252992ff5f98eb5a8a00dd5c197f1d90bc074374421109178c21ee3874844657249094e46cc5d75033a84bbd0d83136a2660499e5a117cac746cd2a6022288ed3b8d1d453ac069e6eefabb17e20e117c91b2222cdbdb4e309a24ad14a31398fd05c58c26deb1889c74035f191250dc78ccf75b449bcc240dbc636832aba852e8f02866ee94962d32eb7349f0aab715113d50651f0fbfb81d4829dd0060f55e2c1550bd6f6de8f55a04ea29acc61ff5099882016cfd92b84b87efdd40695f9c55279b24b54df2067294256230790e05b720a24c0f71d0214d30b13bfd4eeace4273ea222f5e9493cd467c4216c778e19aa4048a0691779a83e420f9903e7a8d896c7f073cfce4b1f4843f8dc602849a57068ab21ef19932745a465d7a353bff209ffee3b90fca58755e7d23fa20ee15bbf1ceac93aa712235ce668955d92b5988d26ee54620c46cb2f253e3e64b24aea4ad36a892585bc71a0b8008d48bf95dd7976b6b5d83370a02d940120798ee873761c554d2b2c3aad7cbcd1efb7b6c68985309c2578ee7786b061546a47be274dfbcd9b0cfa1480445bfef25a794d099f47fe2e0f2d5b5eb52b4fb89cdf75dec2d9e50e354367942a6d302b9ed838e0990210de72a24ec1b7e7ce5721f1d2e244547864571fff1b6723a91fdf98bb4a71459ce169a00710586d6c83cb4b0383baed073eb7ca94ba7b9f012e2614c9d8ed91b9ddc87e6a64c113d3a254728b805bcd707a21d3cec4284008c02d4041b70e38d4b48e5b33b5fcdd1785b4d510f44be2bdca13eed6de9813fc3b45448415feca9732275a51a5bf3cb2dc30c789e1bc4f59dcd1a24bd2e5d6e10f317adbbbdd3f314522dd60120a7fa96c60dbd933bc2b20ed6b7c2438be4e4e440ba30ebb448529cd26d57945674f116b3f45690580d46587e93e1d5cbc58f5776b4ea7bdbfefd98ea9efbd406b43f15c2ca4f62b87980094ef82269e3044747c440a58061b8c2e219a52d93ee2d311fa291f9ff15664da82bb4aec7d7c3e804778575a484eefed3dc5f0a65f01791fca22119ced28fa501c53ae7df87dd0fb428c58c86cde753f14bf690ff989619bcf811fa2a1555883928c02058eae77f4a5cd0ee4fa63d53b7de87c3fabe22becfe00a64618bbf1247b7ff7cb965d633b9806712493d6c7665244f37401ebd0c8d3e960b3a2d9c4cbaa8185c93a926df16b7996e734a3749cb94494904eb898d80ac0d81e8d1f98038dfba471110fcab23c4bf51c91dec7618076fdcac4097f91e6012618c89fc58c47c3e34c44c6e38204477697040ef4950c8303fd8a6662f97a2af6d4a2eed92925c8ae082d076a274f135b9385506fb7036b552604823181adc52fc755c43ff1bac8d08b3134a5cf649378d98bc9beb6f0f3b600fdae0fb3d0626a7da8a00b6cf0fe220dae680243bdb4abc56ea94195cd11d5dd016e4b80d478bf9d4eb734686f49efcbe6b73fe3519464220d1ba95d05f480bc5ef633a7404eeace267caea9e96bb6b2ffec3179761508383f90de19070cbcf5c18cbf59eb415c53aa3fd4a7aa339e7213cc4b271bf88e7495a69ac5b9a76778d58ad19657e4c4482a16c56706a23d9234a551be5f39160386ec2a432449c0c5292bd8f3800b64106e6627ac45bb60c7cce7cf5808a1754411130c50616e7b5cc8ee97e06fa5bb7bc176a0d45d60e27a37ac5d353d595a10248abdbea8bd3b6fbddd05ea356ee9fb77f3c71e42824f6640101a3d4d04862f33a5764d3d9a6927a8a4207c82a842584155d003f3b31602efc9ebcb333062e708d0db02f160ed7321ab9d6ea173f711306a4974cd8f4aa5122d2f57044bcb18fe955ad09517e6a32f9156caa99cca767cf8be70b572c2759f64ce6da09d5f52289fe4fd0f44124b92e3ee8b75a670d42176554e154d34f332846923c0721a32e0b15e6cbc87949b49604e5629e62641e9e1a2203f71f2484e7e744e17cb3bc21d234ac70e73a2c758a74ef8882a779d1d9853475e8689418c44e142a3ac3232fe986932b4293317e4e574426f6bdeca58f86c4a6b538601cdada8eb42cff2474a37db1fa1b067c7229d8d9c4bf4aed6db8a8443664b90dd1c58e7d08c2edfd1ba26b2c33ebf79748d373e5ddf0f3cb4c1118ef6b5d2d120f7f755e119d9330848dd89413ab0f637da918239e6376a2702b4137d5dbbdd055b596b1df066db55932e014d726a33cc116a052ed1f6893c1a3612b5243d1873d2508757a043c659b8908ef444f7a7cc63686d376fa30ca021259634bd072282d4b2701faa0e2b6b68b37b42c0fc9de94a1a409f56209053b9d5e9d079982a527650cf0446bf8e95ad90fff0c1312c0f5de265e4ca20d89ed767d9ba11b095a8093435a9156d4569a1bdbccd2dd00b789b5ae67ac79e9453b0c5fe93051122cd31a8e35a53040c1ced2348d04191090136c13042f432a0c0af2a3dc7945ca797789920a0deffef818e97a4fe5f9354c1c1c983b4afac29f0cb4a14d29af3c3a80ce71ef22c4bd68d453a8896138f4c43f167fe83fdb1dbfa50c7f8869a9940d42aa8a968d4dc041600584cf786a6dff381613548b2194f035a5ffa49407b27eff9945d1f49eef23adefdde68e5e7984fadc319a1d415c2aec1fc8b2584163db720b1f0b3627ee5d4c63a12956c77855015bb32eaf4e83acc2a34dd4fe96c420a87a267868099d738ef7f69756c99002bd5bfd58232fb89dca86ca111d55e49f3caf1f96f8841e8aee4594381b700bf948ef2462dc02f6e9613b81ddfa24c73dda3ac9894858908e7eb16f2abcff9a36b6e86ccfff2bd3a49321fcc9395eb50d864ddabf6b5d92657a2a680a0bbe0a224cba4b6fb29e709898b62dc35e05d3e74edae09b419a28153569a5e94296f294630c3845b2dc7c8d08fee75af7bd592f518030e0dee28c12e2a392258261da759a39d70e1ac80416f193d4c7f168f92d144570b1da0040040b62244b3bfbcfbede4ed243fe2d3ec4b2cecce1c7e9e50df51167c52baa50532df396e9ffa9a1f815df1372a59db27abeb733a49543f9a83b2603ebadbf4dbc82ebdd443eca95e6756858aca1929877471267a1eb7edd717b9a322af2f1e391ed3f3b3027870b12c8548bacf338c8fe102a08dacfd98d6725d0d92299da66d620508563c242e3c122a9c6d9bc2080f9e06d14a469a800d0c9edb8db891c06e2507ada354cac76e1c02ee07f56c869fcd75a1236da5377dc9e355f2f10f5a894aab6ded81a1654e47d9b66b04cddb0997e8bb97771ce11193dfcf6f9ff08c8251cdef8f16f59a0a9bea959c5e88ae8a55fe9ea9cd00aaae136b68871241fff3f9d856c738e18c146449cc1d2746bd5b619ceaee2d4d94888beefb96f861f68589a494b8451c22674454a5a5319fcfcca6d743426961f79920e327b52721a87909d7c6cc70245c1234667695fc6539f75d507f2944d3cf80530f3df02286c0be5d4f881e551ba5b533a87eaf8457927c9dc25ca6aacba779658cf212d6ad1e6e9301c1d7c30f81bb6d1eb77436daf0c17e4ca18ec237982fcee5caad3d662f0feef30ae87bd7c7037a4995228341c53ae085ff732debf000e838ed57f8eff4b8e8b5dcbcb3498ca746e599004300231948605814c10f8bd328084e6b7e0e20b054b2044b977ad4447c290fec8dcdd9882de4cdbcb120d41dd70fc6bec80b4f175f708ae084ff679e1545f1190593294e1ee865c5ace89e7348606f423f6943650ad9d1afe774a982b761d6d7fdba2b750a9212a0d58a0525d1903dcfb24cb1af4bbb4768d18d0d39065dc2f4fd759a4c5ac3cb2423a26f23fcd1c175e62f8ffaf961640203ff3d99069e05a6e763cf2dd467dbd9ab3fb9631388e7db4b000288e2620c8e381e72ecf83ba8b90c43c6ec72ea309a79b04b4a6e02bc0f87978866baa5bc8a88999e013ff54ff6443502acb3bf74d56f3a5c484d412490af00a37e7b0b6cc835927e26d1625acd678a0af4d59243dbf6f7caa846289eb26a7658bdcfd66958aa8688dd7173338055337529c4c44966c503a46d6e4f75efa7216d89da898f1abbd12f1b91191c9422ec1f5e8b747c91b0e6bfc4c61f1be9c95a469d6182143d6731c7b3ea2beaf19594e43c2583fd09c4be161a99bfb4b112fbe6fb63107b808a1e10b5363ea6c901f8f2d4551e601e87176013b215727781a2792225b42f120c9e94a3ddf776c681ccf15e1ca5d8c2ad8b64dcd8ff8f6409482063f6f5d5be1c2eb76bf25b31856cab37b26749ca1bab4205f6cfdae8044c7368858879fc1337d1cab766cad454e4050a607522e2d744461d9548d595919f07670a6d3a54f8c54f568cd94ed0cee0d8e94d830ed49be06b538e282f0d56ffadaa0ad12913ab719599f72560dfbae0f7e5047a00f2388749ac1fd696a9d2066b6c31aa35969022a61ea8ebe115cb35c27c57f452a2f4c22af0c2391701b18128b484cf6789e7ea673fa65365c1137fc5d767ea34d53c27d5e1a0b045e27da886292ab32e95994db944763b94dd0c2de7c29345014b8fe05c9a8a521a60b8a145abc4a8ae8c9e50d42d8bd2f862b6b6b3a77f665148b6333a06186877346a1dadda7187d0735515650a1186920e6117d309e149198e84b289759c6c9e785767073033254c6fcc924a43999a64dbf39361dac97303fb80de28f663625dc6774363c452b431c06e0c7a235c925a0549974d1bc2514f51306a166f98293e2273d798d8bc5ebacc790f3a57c80b2bab867462798de1f1fc27261f679d390bbf822e635111a52b740d5fbf36a4059b6e851bc4de1be203c34760470a8cdfc60fbdd5c502a499ab63fa3834b9f8a138fc23e780dc2d7e5dd227390491a860859559133aef5b63c12b642a9e17748c790b58eef6d9a6c62ead570eb8b15367b951ca6dbcfdb26b35b895929835a3b477c7ee7054eef0495e2389a6f58f8fa176fa83bcefdb44fa1a36bbb6680a2907d198031f11da361002d1730c93738dc099220829ea05ec3bb98a4b42b3c274ecc58f90b032064f5a8d276129e54a83f925f3025c86bee5a969bf0a5b8c20796395652959d51cdc7549ac7cda7b618b1ea4c7eb6e539972c0241e886dc205ed76352cf7261a1af9a84dd0ba9f00664160067f45f9006cbe447567661975d17c4982c858049c95831ecafe17fb9e0105f825178501752ea495aca4f5719e35eaab5da34929be1b378270ec7a08918182593acf9295c8fbb5af1270262ac4659530b4d9a85539f987e8adbc9d03d9a53866515dd4238610316ebf2ae90d7d3bf5280be280ea0145bfed4a0ab0dfe1c3fd82aee28a4b3cc44c69e4c995e49ffb90a353b92343e8d26f45a3c4db55489ff18fa43c388d44c07731e08e60aebb97da7a836ef184535d573f4f58f47d832ca40b7075369d4333f1fc4b41d02dcbcf6a26613d98511726c34c71c82e62a2eaefd1d8d75d1c097801e52003147e11ea926438715cca700c3c4ace6c3f8a428ca9616b8ce2643c7a3ed66948a369de3832d3218db28347c9d6434a9b9704b22b41ed2d475a65665e64d41ecb4f7a83dcf2d9638836043da3f763c902cc4c3e7686730877dda2b90e772d123ce4491503bfc29f1980b3be937adb5554fb198e021c24a445c2a21f9d0c4f5d446f7607e8a0c7d6ce0925211d836255f806072b2bf5b407b01215c5d0df4c7772fdffc02af8647cd2c3341ce9736ce11f08f76be91417de50f59bd754d6c816c874108b1e90f4a4c31713482797e90adc8eae43f42a3e9d9153f5941f3d649ff2e4c00a18d3a1dd979fff4643cf3e8f0dc19b475c4fb94c1b40a574b0bc8e68f9b07b78392ec9a4f961940ea2b2a840d67e50fbdab8a6c47a249e33dd7e24348ffee922f4f56606851ee2a7ec27c42801e40d1c56605c8f7737b8ea23230731589342089f928f0dbe0f7470aba9a4bbbba5309a402abc293149fba3f857948e90a15856d6d8afa1291815c9be414b7d3c7296d602dcc0b65ca7cfc88a0356dfeab7229117fd4d0cac6d44f05e56c9063a5689bc302b4c8e9041de1c366f074f067c9b0a6bc7955503b9df2401b8fc2864b61491f7a478009541384618d12cd06a4c288a176c1e4c8cf62c14cd66fe6f7e0383e3670297474fc036be084a605084f33da0e2dbca4c24322129012ff56d024957382bd2ee9d2724e845b8cba768783731a39429c1c31e3456069eb47b06bb84e95a27146f507b1a3c68c04d2edaa40a1d252dab47c94216beb32a884c6c0e15f973d7fc3c460339fcc0796c7484e4e5ad50b85c0b584190a992874c51e37857057b3f3ba55b86158aa2d9aea4b967cbb0087979d2e5c431b8fc598f048c5b7c6ae35d06a13e87b2492d57c7095a8c1e2d6d78ad54899cf6dfe88a9e607072d35ed17aa2f08bf9e477d3ca399b9c0cdcc81a16bd49ca45cea4cc70127bb5d1de26251d27ca93473fc5c6d4c5a3436aab55a781d001eac74735e2d00f7112675c4cd8fc56953b832b3ba8890c5ef7018370ffaf83cb537514d4df0adadf1fccf85d1ab8939e0cba0f7dbc66f7231822074f904a90c507684ac85b4ab4eb76960a62fe3c927ff0e9821b9638cda063752510c6c6176acc3f52689ccf8eb4086aae14017bc944a549edf32c422da09542f722240e37453e4e4567ff50140201c5a1d387b830e60818f809e71e7cbf3208634ac714206b258b65f237e52f40144407e63c1069227804a4e7c6ddb64bc7aeae6ec1aabc0e56b65ad84b65b1f1e56d1abe33223111cf95a85890bedd9cef86d84c5e9b18e74fadc645575d27271fcc2a3c2d192d217a7d364e4d5270c5dd61d19d2fbdc780f071cb9c8b39fe703b2f684d068dfb1fa154fc2b0b18f066c7910a1abc90caabfa0f431298ce5c0353c19eedc34195006f6406a38b79104155dc9e0e158a2d82209fc1d55c554ae52eb08264e03868576bf0a077a94a92e953cb9566f874245a012c40d9e55e13886af7fa27648766bdfdc7e753eb2a55d2940cb96a453604a1176966d0d3811e1f2e5d13e8a80fd669ca622fc182dc878381dd0b10db5e15490d1ee7ffae4f4c07e89e14921f5ddae58911566df9620363e99d954f1a47e317441bdeafa79852b93bfdc3d6ab4c568db562d7641de617e04e986d516148cb752c9a94fb960b0fe61ae4bd6d506d6ffb9fcd8ccbcf2ca8e83b54bf7777b6153ca2d85f5156c0f0d1e43a5abd1f31f6fe20fb6467107634363f35dfaa81891af102f8b77317eb733a1d9477ced2f60b811471b83a59c75de5626057f12e5bc2c92eb2cbdf86c568dea432ce2c1bb047dbc36b54e6690593e57314acacda84175580e86c794f03c9e70f2d21a1ea8623420482eb8805057313faa38ab20fde4722222987bb8ffabbe5c0ac606372df30a3c080eaa7207456e94c8e3e18d18f0396d24a6168908fea37ea478f976a08c9e88dd764367d6cc77b30dd151cb890f37fefc18230532879b7744114502ebe947790c3d2cf0484de442731e046ec176dae1862359279f8c5f76fcca9b48299e5b62ca587182e8fe00c6646f2b8a0197ff305abda98be587ce56238e926f5ecfbd0cf1905d4472f337edca5690675b7c683c52883e2f6926af5ff296b971c36ea1ce6f8b7d02078e11c1c04221a619ea18a680c2962297214b18a394886023847b969a20f742b0f47e6b7971431f633da41859ed40499901dd91b04bc8ba8f69b833802951d285b34637345df08c9f3ca6189961a89e12d6ae349073179335d4e9c4dc411e50632b1ead8e2a47f165f4939cb542ff48d7ccc9fd0d512941419c1d08395d8926a20aa57588e7218bd5a90302f5f308d686999240920267e79cec3dd919336caef0ecd8453bce5fe8cf6722800310f7cbac77f3daf6a5b6f7f261f09354937c89dde5d1612c8f82ff2bbad5da01bac22b888eb7ac984c3e071c84930b35ddd9044bd08154d1096947f3910628946ac0f605d158a9512d82184542e34899947e2eb1ee52c3b0d61b3da72d3c3ecf6dc1aa499d03b0c42dbeb8d6d93ed0ef4402dd0a52b25d9ab3ace281a8591bddf2408acee7b34b2e0436b061a7b50e7353f5239b78a01756e54e648f5d3e94dee0754bc1293d5accb35617f32c03c9d1590d9773bd0f3396d30e5549a34b23a33673903a130e74827d679f82d410b3410536235452857d2bfb738a349c05a26303adb82a67543e353d2fc2bff6534884f4119d73c91ec7bfc33ea8047b55a609ee9a89d912089a3b0f76e925408bc1ff92ce49410379aa61e89df17d34d40c1cc2658acd842f7b9532d271a73d7092dd209587f52d4ff06bdd9ff4acdb2caea100a4c032fc9430707610d6d75100f6436c64370d6b011abcd1716cfdd2ee9a316b1473b41c59e8852d6a8bd34812cfd43cc27c441844d2a05efaceb9ec2e6e7a88031b933080b271b6859d60e88cc7da44bd12cc5207a96343e5ca0c58601731644b163381efe81b805330f27bdd90178ff19f534761f575d8f949179495f74298c0a6da9429c55cbbd1624d8baa5510e73185766ed1e897ea54d26aeecb107dd4b9cf91704dcc7b12867245ca8b5e3e53d510ca2db03e56682556efdf280307d625a6ae737fb3730c73ec7c979b8ad0d39d9e46f0095ffadcac06fa3f4d5a486107e7916d61c3252a2d3422a090a93c96174d31e0f20e895020bd0dca67a488573a41a3eef94537a6ed99d7531644d327783863c163b8f4cfbe195de385098adefbfc818044ae3f2c56c0e8751e6a283fc05bf502ca533e1aaf6585870a222176255eebaa684a9a708db0482706da063f580b6d1655dfd769f5410298eb4e827d6cb983462019debb37109e8d654498a04a39e770f9d02a3d2c3695e929794689d11d18414d255e9da4565a08963e47560cb8a03bbb315e9e9ba4cb38597701ec5c6f44d7847ce45c4495f0f10aa9f4d34339126965441aa7e54c4678c7ba13c86e2ffbe1fc56b8ad80b74e1ef14d10429e2f3798e6ec80172a7405f5317c33e5206b39a58978c32cffd6e2e037a3b43789fe7881d1dffe2de6b4c830a8de02d1a6cc92473b42eff0fc30c230304a6e6ae7148168a214d8ee3613850d0f33d23004c8b650f7a1f88250f1662d4974d49385cfc3a5460986a386b6ad0f4ed0c9e8611ba583082f3c4950af7c9626c27d0bb1961032166c44d492f89dafeae6f36727c0da07d459dc9ec6697b6b5229c92b30b7fa7b5b965dd0e11a5e6e4f4c1996e40602a288eb9a745d251c4bd6099b5b6ab39f3070294abf015f6d742cc18864af464c168e8646d0d5baf3dd54541cc26f20f6d7e4ce33f4076fcb18a8f23ceb9eb2b42e333cfe1595108102d5db036ac1ce7b79bed1623b618e051b14603228b1da6fed21c96378dbe955753edee7b3935293c1038742a28a62c6cb33d6158584415cb98b34de315627d5d4275cfa2c385c3a5eca91fed6697fadc815178a742de8552086b3d28d1586854ca46f15621d787203fe61e0ecafc1567727220249c1ef668802f2cf8681d6ef477f4f1d9be316ddf6ea4937a2e6e85d5b9d82798b807527b467660626a626d82cdebecf6c13ed68055c1a80e934461279d304a7e59dc8e4727494139aac2d076d2549f82d1c908539c4057f33fc63a254d691c52bdd2d59dacf32d6d8b2d4c8549dc996d460955cb4fde5760488d787c2c6ca2e34582069b1409909ea88eafa335253380ccd2e868e46ebe37040f35083ee9aa02935aec472b9a60d60a44c9d41c666f073b7359a1e41ec9640647379514197c6331a01faf39ca28bb450c67aadc772f3ee7081c0f6133d7afd2a081cdb958ce20220e6624602318bf26b1ac5df13405e996820e029d54d23926b3ce936595b00a3afb0603a2f79431e3eb98b7ed39650ac7f56a28c9abace9d09ca3ca6032eca5573569da5416dc50573c55da61496e039fb268731fc6ffd5f554f96f928276ce109ee18759e50e2a091b3552ea9b21d14909a6154ac9629a796f20fa9a06bae52e5b52de51e2f4c337709f0dbe9ecda90f08526321281b510567d215f3d49142cf6052e659f6b39b772b36be601e95dbc0b9673e928a31d488d128b4440b39aad83758d0adea844af8bfb28038ddea8bcbb322d9a4b2fbef3ab669004aa6284b292865bc69c8293737aac0cb61e69c462d255955761dd407b2470b62a7216a5f112a2ac4b0b71c2314f6b2c2957c44403a4480bacc409e831397e3f5e817cc0e72718dee9761dbd8d752d73bf22dcffb49cd23b42344bde90598601d0bec1a6d204df4f3c5a12eb6742733f4a864d251d6f71f0989d1365b61447e7cd7d084d5d0b028670fa32316176329021c3ded3897147ed5febfcf5f873f2d0e137aac38b855d25c4c2d9d9d69624f8725d543d8d4487dad77516943bb600b9c7b37a7b5d5683a665f2b5e2157a11a6e502c0da498189bef477ca11c8c030718cacb450e15962a9156dfd558179232e95ffc4ee51c0e95f335caec3aac22bf50e673778cd4379cba86731df336784f23cd8354510229a0eee5cc38b1e6bb9c47f3139520dd44c9159c4b202e1a745f131adf6e81a3ff2a15659382eb78a6f0703c2b031f0212756126c9f3e3723a78a0eebac0e0509a7318a121cc958c0652dfb887c2b886104793516b8dca28c50ebd619e4e0ea55afc43e6da80a05098c0a0ab1e1a6e14c501512263109a745656bf99e8e61e6734541a58a50b01c11535eed5e8bdca28ad8a173cff86b1d7526604cdd7795266085d4e33966a0386138608f7d215eb8160efe3190742847ccb112da6b9c92c36571d46467087718d4161708e1978dfcc7e1c0dcaa629507010a8901d9230868bde1175783285cf035b648e4d661fe8a3608b556f0d161f4945ca27324cf5d8619d70de4fb9346e34ba2b5aeb52eb4067ed7e74c9e4e0912e9bd84e03effa642ffb66e8fa0f84370792a469467ae1b5c4e1eb9b51bda17b5187ac1f705ee3531e40bcb4f04680c80e6f9e27aec8abddc2bac4b01ab0252db5f16931a5243efc284194412811cf2e88d4e1d25eeaf91b832102b658ae877d34205841607ab0cf9e9aac530e855a1ab022b4bdb280064e4bc6c0f7423d1019606571188b630ef10bf6a712c096c3b79d2c0c811db1146788e52a81548596d707a58df0881b2e81ea908983b5de466a6074a54670e73a857a4782feba0a6c1b59f7f59f7088141bf02610f73558e32ca948fe0e34de48701dd0327994161a49a1983377ebe805ca305d1f207952ba0640ccfae2d465641645f2ff99f54d9aa380444491ac6a3f4a4a6cbb425018a1cf64f3df495aff488fae502aa53d061ddc44181a82cba49c5ab73079f9db2167ef0016b2f7ffb429964e9aa33bc67645e3189aa4a5b2f28941068b7ad76b1ffda75530eaf469f230895b85a55dab28fe06d85d1d05396463ef2cc6cbf201d66d8304465f89ca19656b7343a4fa781e038f64f090697e07a3565c504fa8284e23773ab95442cd4b40f41124d05f71f43f995c25ed98218c5d0f61251f18cf4aefb4f3323a31e80efee5a3b4b6cdace7b5a4b31bc51529556ecb4227a555cedfa803c166bf645229913fe8e9b93524245a50587af5656851a71610ae15468c02606f3a9ae5055648db45ab916f5b10c37c6804eb1d08305f272905a7bb9461c8b71979a42b8419c366070ff4ea3ce6a6449b18ce22f66546513a098093bc543e45909f9dc8cf4d2e908557f0332fda675c378e23b7356b243e892ed37e113bbc6841e44e235f32b368afdaf5be872fd6ed0c6a09c2fb307f3e06e7a4fa483480911afe1303b974f2f1f54d9ed5ad2914e2626aac6f98efd548ccf54a3f9d2c1b1337f77b5ece1baa4affac15602cd2c0a7f1e82ac55da50d414ba65c48bc35f92f058a110c92611a83a7e6f9b1490b6f2980a860b751840fa3d0426e78eb7f22069984b5e713c357e4cc884f04bc3167d790b3b4d6ba190029ecfdd226469440b9266874651082b9e266437ee533b708d01fcb8cc63f57be50153be9f9fe7ba09b67cc10e8ff0c41169c4ed5a8b88f2bac209534051dc0405036f39c50d00e25f60c3befba6df06969a4d25158be304c68f75aeccda4018913ebe5ef2a73b9a7a68c37816503be9301207ddd4897011f328c1d1e26f4244274dcfafabd5f3627cd6b6b806ffedea9b15a3aff991c81c18daa88dd186ee8b7178d592a9cdaf0ebc74dfedc267701a5d659b4a8fa90cdeb75c2fd86bcc9c9a1a4f02fa2d8a2a88576e8422b247a8aa85975bbedfad4e2f484027a1fa07536fa3da2f4196105e989f086e6e34985a1c5784c58200200fcb455044767235c619167348c5a693893b0c5ee0d6ad08915c94c9ad9f958262912d238da3a4464f326841320b152013213cfbf24f9d779f725323a4b2abb629b385e2270d2e8c84cd1ff6c41ae24357869866f62a5dacc8d211e03f3874605394c497cb5bf51404506200600dbffd632a7975de5692db25c6d4fb9484f2f3af832e4032f35d87f58fd98772ca2de561d149aa62cb2acf436e7a3a9b5af868f92e49f5207af5428787549d7a2a1d4ea7a067a02d5adc04c79875647dfba2da4b7361bbccad3491ab19fa06e1295b2eba76a523c81d8c86585d95b2bd894b0ed416da611b3963b78ac14f11474de95174a2cf4a342eca8c7f445360790e25d044d35fd62a79a31b70384215ad7f79c148d757633b1b31f4a041c451f22e967aeaca1e11f264e32ad4e6e6f2ca2e948d6a53320d48f4f0c0aa1403cea4abd6b9455af81279d06460517b3768594f0780402303005fd0f9429f3629156915e9a70e5bce760d90c5c809217ed5b2302bad5eaa78b7da9fbbdee70bdc90509fedb8aa031be19810601fcb2d81437558241ae8aa68a5e147d4c03021de25ee98bf0e1d103ea0265e63a6285fa2ff4bd93c197bcf0a22ccbe99eebb4b8ea1680647665dd09e1daf76c2a538a0358ebc699bd72691c4e8dcb50efb5325ce8e02e499ebdd67589f3c3447d328c6e4ac605afe78aa8b324973505a0716de59cca1826828e4cfb8fdea84bfeae9734d8f357c6b4e5443ad4d859f742e66a670345303b61a40e8ed0c0df516c7081b0363fb64fee5970a943d3d5777a2160dd136e603dfedc813676b0aa8f513f15ef9ffa3218b51baa2ca488bf7da00d6dda304bda50f8dc7f954fe4a5d082d1870d8f8f735cb6af44948d174841ad8f5e9327c426a7ebfdee0d791719ec59da466fe3394d6e57e444733c216fcb74931ef2f8641e03d3f31c52459331a25628fe5182cfa6ab1e40e5b1612e87cb6b3ee58b1a04b5c4f455e799d22e25d922f284e8dd7a8db0ade6e35b61e13f3e7c3be855cd0f91ed0af75e72a677861b955c9bd702669b4040cfbef12e793d2300072ff4c449b78dd4d483cb4c5d71d332d58c4b90b9205a1efa23a6ea244484ee0d4b76cb3850ced834b956de972359638a997c0c6ed7c0537124d11a1eda34171e6c9c1f0e89992565c5c8221e54b0a23e70a4f8d64d6f0f4aeae8b16afe84901dea3dc5e049e21c5e9a4b49cb0c7f4ae8d7fc3453b0290d60763c641335008501609a3276d57ac0a17bbb0aa72f4096213f3a1e1963ee6c174c8d5a5670e260923b402e77dd98b93b1649c58a1ff733d06362efbc120aa77d111c2616b8bcd94c40ddf3ae5060a11bce802666fce3b80689376fb23dd9b7934790e68688db7b33ac19224d302d3382da705afef3b6c7074dc84bf4b6579c18a101486b11001e209852939aee12d9be972270a70dc15efee4181532cae497868a1af853e4e6602eb2829805fe36aa2ec2debdff59498a903f0cb1fa392da29cadf02eb65202febc0571da7b09b940f5236d266bb2f65ec63f0cef2679f2ffcdf981994e23c991a11942b437383811c1cdbc20c85e2aba28bdc56fc44503f40ac079105b756374c794c3e7289b6f2f56136ec30640233bc58eabec17a4cacb49180e866aed55a1060721d0a6a04cc17cae635bcf07dcf2d4af7be0e8b136c3e129286c4586665c54b757208e261f23d20786134af852bcf97881cdf164a6c2f8ac414ef907f3f8d40a635255ff86aa684d5cd5250d81b45745c4e6e4569cb0eca3e80738c5e59dcd01338d38cb5568c69f7abde069397fe600b2890ac8430bba04e9cd85c3643d29e7f29802a02e7f459fd4dae77c8e4c1ed7a7efab90a7c293dc4f12738f67ced9d459ca69ec6e91cf3ff9d7e4a6837672e88b3c313d12ca7344e7d577c193cb4d01f10dc055d2f1a810c25c0d644ec17086da70ef3c26f6bb94e688ae73560cbb2c519a6b25a8663a661f080458670ad1104a7f29914da01dbb993f74f3c06e721e0849b12af613a59dc5cf5b150f71d87262698e806e7481c561cb41528eb69de7ac790cc5651e904c7af14773745e8d0e00003f4d4215a4f7283c18acc9f4c3f124d81d03b7d05201d2fcd41f2bb187ecbd14a38350954c6dcc1e649c09179adebc9f1351695a844ce34a40d4cf4b528fcf87db92d97afb5093286d89380fac965a938ecd02b7c88aadb393f39f2d426e701efd2bfde595a9d006c617e2a751a97c1dbb04e30da3ffab1d0ac6f10e1caa43a0b15b4a46a8f4f0d34e2477ae7103df167d4dfd40e8c45e70ac3052db641f96824146c5202d6306420dda12553b513b9330ac736a2887a21552bdec47fa992e42f24cac6dab9f6be7993f6579dbefb7a589e63fd373d02783857f21204d5a67625631ba6403cd60f275cf9b4f5698c7844c79534aa9a30913d8451ce865aacae93e1dfb18c53cbabb749ac8aebde3d6b885b84c55df1a06c3c4da732066f710202026d5f7fa7091e24edcf2a64ce2b4fe85a2e983233d7e8bedf789dcf242ae93a4c9737aed24135f96584258ac073abd7510f393af69b72974ca10094e9f3ed0af5131b9c4d0dc28402f02dc8b40a2f53014eb6c72b8d02841e9492751dc3a897a47da91d6c33169c41fa426cac2c18004b14c21f264d3f34eb8c635dba303d4bc80058f664849d47ff0a1c5dac531d2a0826cc6a0f00d14361cc56fa552fe7fe6deddba399ca552c68d61282562526c904a39e925b9ab5c7fbb24d8206c7c3ed9d0f650847adf9147166ff1bfe3b10c9e634db47f5f598c1d6b96014ec650e5809c431024eb31486ae71ac4f22d1aed6bb3a74c4f67bb977664428da53e659b31afcdadfb575e35b2fb1024231001bd393c73bc6b98060a5b53f3f7dfa44491d6f0a46a5041dccc89f6bf9edf0df208f4b5ff3e3d1008a77f26bfc6aac15e3b26b0548180f45becfb80e2081ab52b1cd9bead27a8cc24ee6e2905491d7421bf897d983c485fc2a349496ff4bcc9345553dc6827cd668bc9e6834620a2e46eda9efdbafe8260298c645b1a2aaf1171b8d5151363fd9fb02251c5148775da221b58e16a2340c07c90b372a613d62cafcfa0bdc30bd8423e9d087a8644c8aa49952d5d86f556f60c846643dca0b22f3a5b23eddde3ee89453e4aa395eff8a5d483de4dcb42fb6a9253675674ae64faba2607786dde54dba2da31b52aa6474d4181ae7aea9089bbf5b49ac0cc139801efa72ea54c674482862756b3ca9a5656e196ab7706c9c53350ce0326dcf2133a97c8928341482bd8752b39993ded2dac505d818a13187802397f9f67b0491950e4db5976bcb548204f4269e64479c85eacd10e3675b4cc2774b7baf84a45c667e3854a06892b837c0b5d265ce286998955af5ac98ca216a4c92a17fd48445e86850b64f321661acaa3624168204e63b5e1af0175dfaf108145e1cc932f476450101d64a9fa736244a2e81b096c7935079941d468474aa10d1b2afe9284b7a0372196a827260ef4db51f18253d685cda75896bea6a208348b601754d54e22e10e705e9e2441dd70a89d4642df0060771009774356c46fa2d9e61a6902c97320e930f440a94a11a441ea78f9f9eeb60649a782894274848bdec9e27127a85a1cfbd989c21ff9fbb8c7e6551b4f63c228cf3d7e7b7656c4dfa0ac0710bb82b29bec8ed03d7d7a51d00a1a5ad368d0ae1c245ae8c9360b2ba89f27687b9645e162160a427eed1a718450a756143ca37b95a3ba35e83db927c9ea8cdc015ce34c281e40452e24ccf1875dbeb51997edfdd831bee5f09ea2f6160101b1c1221d18a8dd8133bceb960722cda36cbc676bddeecfb79b178f93a689d229ee9ac2d1e56a921d28a40c49dc41736e17df6931c8762ba46769abf1416c5a866553c8205067216d94a30cb1cf88258a50b1c4c870421c328b018a8399a6b6568907942a4a60473823641b69f1402aec7f34320971a6dac197e38c31c7c13a2a024437383e51955bc8a3e8699c48ac315f5ff489cfd09bca5fe4a48b3d5b1201263d47c607d6b059ff329ab71362ef8e2102b2ea56ac4209e75f59c5687ad9c73a7948acd762586c28c87a600336a1704b3938dac5958a38c900fd14e4f8d2cea56e6fe739294ba60c16f9a94985140b877fcaa0e674646e6fdd75e03f7a0b979f0b58663805ab91ba2bb6f923cb85058a297ad6e6a63a421962a9ca7f9532424b7dfd1df8d04d4b625a3417cd91899f85e8545a0d96cd84ea410674a843ee8616981dbee6808f513cb95faf4e1c7fe1aec64684d9b653c5c06ff80b40161498197dd7c940dd8b875ac8ab120af4017cfd18a52f3c5ec3caf8025834f005fa6f497a21418c0a00bd6c003ebaffd5c3699c957238888e658c18af00e8b66c0eeab8af601b50ca1cf4d050cbbd25ba312ecfbedf3dcc1d27e6269f5774f75c08dd5e0f3e2529b80482efa6d456874897dc488984c8a60ee79ccae32da6e53d7206de14856270df318a98ef721d0f0a557e5e27aae7082baa99ff6d7a3c19bbb30b3b9b8788456381c4d135f5177a4e07ab9c95603e46cb31ffe0dd972a9189d304313183820f9cd3df679ebaad09893a35e5ac609a4545f26b0534d51634f5e2183c9cc08ec83018013cee10e79a1a42affeeba5cfeafe063b0f6b63c441e7a30e3e23f14b6b1d0c18368040878b78e79bf80fc6e3ab202d7ae24b94d7761a6328cc3bf401da83e67970e7bbae38e35136955c0fee71b7f7c5518a41024ad9e2754eb85e2b9d9e8210b16a0205e80b62be19546dbf251c4dd4f9342da469b9cd0f40e8060da90761fa83647d450f7b907cddc8b07a03924303824e41ce9d9cedc4c7dc9a3b2c1a654b5f7741ff26b4c3a85b312b50522220785f3087f67be4c7853452ff78013bcfc38f2e00a3df54cf7297b73fd67a052d6c7fd5829c7b2835ae68873b8aba65617775616c76a18b8fd6b5c27e7614520c3cf16aab2c33e36c2f9518f5c5ea95410c97ce2e5c029867fd17ef9b2821140c94da029ef668293c6d7f80624e1137c6cfe7a18d6790586c4a0f0f84bee9e84ad83ec0a04c90971bd2a06d8da1c6fb7ce0f0b9c91e78893683b855a2d6d747126d46715149ade8a3873a210347949a2d339140513ad6f8c4e14cc240fdaed4ad2f3e807bdd1a2bf4d9ebab1259e421eda77b623739950b81b1b6a61ce1a70aa2ddcc92985f0d645b8344835ac1270e3fa9c0533256c147104f26b8a174ace18343998c030e5757cb4c10384ac70a3e719849048e92b1c27eefc325197205ae54b767d1f2930ca492b5aa8f1ee8841408b992b5567d4e0b9e0d927522086cf0b0fa622e12e86af6697670d676484244d334f6291bc94eac59bf17e14d06a1376765250a3d3650d5b4d50a363e63b8a464acf091439980014052770b566933bd0362ff1712154be9d809e55d2b40780ffa214378751a72c14a933793732e77649d406028fd598fc487103999002f82b3861f48bb3ccbc298c111bc984af58eb4a019332b4f58e5f2d27bdd2cd7ebb34f44869fbb0d5dfdb1e869382182c2174a6361c2dac13e9cf98539e95c09f9811ea6ab7c05d970a4aad3b67ed981e360d8ee1acd3fc4a91ea7216ef045cd54d44ddb3d3be67b599e26929caf515c722e4235356c5a7909b1b95ae582c4e577a097a23c1daa4724d49dc51b1478c28b0107347746503114c15d9da8aba9ee1bbb3f63d8eaa0f74681784d97f24825901f521920bbac472fe05862e6510269086ae1f22cc8f80cc3b03d10aa2189702d0830114b4aedbc07e4e4a4ecd4d83327b7f1968efce64487cd4bb2f1c30ad704425b2c24f834b36ff22ecd7bfddb3534eb4af316208730c3b99b82eb939a31575e79f8852386e2c37a826507968b96b399a022824d49b7bbf264ced5d0d3506425a00a29c73a834ddd1759a22a1f6652123e551e5d9bfe4729c785bf3370e8ef50d6a514a83934621641bf39ff40f0488a11fa52f8aa5bc1f7df252b75718d0379040d8451369759e10484f32ef01d2cd2268e329275ba229ebc68b8b6a86fdc7355f55d6c0dbc9cbebcdf1abf8df2c777967c4f27f4b35e1d6802f084579550d766efcb9c79339914203ae422fb9abf0eec953134a630e222089fd0050fd7d75dc9691f93da85fa197a4e67caae402d5ffcf43f5fcfd30f854f62dbdfc75daee071570540fc1e0e5dff223c83dbfcd87aebc21f43c699419df88db83f3e6025a07e0a8046bc60ef1ada1c24c9224e9f0699fc4ae879616c268ecec254738afed04bb28c11e1a165ac29ea266b606fe506d523183e993afbcfce3efbf13ec32a082785ea3c78034b58c5622c56247109356c21424856bfd5383e504eae68c515b9876834e45510b73ed7821524c6fa87c294a45de559387ccb002d15df35785bf36ed87c93e44d92c6d314586eae85498238e35ea0185878992bb9d740ec0dd56eb884aeac10ba071c368a9857df9c57d0c2bca56ebd11b0aab4308c7cc70fd48491a032ddb368d2664a58c5e84d817790eb24123c63ab90d45750ac1f84884c3405b12177f72fc98dfe3f36ee1d8299dfee6d2bec7d999b906b76a106c4a71a5eaa550aef0cf43b1128c9812e78b561401c8c817d5c8540197582a50a223196e09114dd102bcee4e1a103ed2c6dbbc756b67fece649e6c968a4d927a7d1a267546687725e92e757f26d3114759035842630d16f2fe980b9896dfcf3011cadd11f7fee471efef917b009c36cbbd7e885aceb6890fadd97bcfe3d430cbc505e1cb1631542b081c6b1fa05c8fb431909f40be1a2c44f53d673131f3111d13396d9d4f1253e8f416a1e13ac299902cb8119dffd4988442a1e9e1571bea8419d4f3c808764a090037182cb3fd8bfd073192b3087c467b21745226abd21b32985edf886d06c760517116370223bf50522a76c30489ac6a98cbf5325e12144c8edc92a6f3c1d1e1c489a5db4090bee64558ac14b2e6ee210b21cc46ed14843ac08163208c705a71a990a06d48bd9def9190167abf8b797593aab883a62a1e6bc94bfa4300d0ffcee9cdb5c5d3155cea8e982eaf65ba752fb4e86a01e93c0dfea38503dd1ca51105a0c210150950867129b1b42e24096c899ff11c9f97aa3412481591e6bd8cc07a42e03b27cec351cf821db957fa194b3281b14a2df445713bbc9c93540ceb50358073595e19ea0413e662015f6613ade3b3b474d6ea9206e330393de1cc675cd4fe2aa400982f08cd3e3380763e4bc5c734923d6db0627cf515d73b6d03f5417d87a9a7403b24986759ca6e6f13923b385f18020cf82f7160f7c69b43c57cd03980a7da65260f85233289dcdfd18e10454bf45af5594b8e697ee854f78f8f7d32e1d20b815173f6f391fb4c7773869a457e7fba159e98a654d88c55330eeec402ccd472a084bc119936d93005df63ca0380a8cb051f24925c003ed14d23c1799112565b560415be5ef61c3e49a438f114e2b2996327bd6a200ca516e20432b379b52011ae7f5660fa8c1bd6c59e085177c559475d79f0f2e8592fea32080512489905c132515245dd61fc312b946526d2ac0068f8a45a5dd312cfdf6710803c28e65d9bb9a0a65c115f217b0688dc77901ff9a64c665c51dc4d584eb25f8b04bdb47f515fb57ef36310dba6a9440b0fb2f7e8ba2463ec598e2250dcaed7050bbbd9dde5cc9b1158cf23fd7fd142bbd832c006952e299caacb88b60b8e780096a4f47863099ae599f65bcb66f510eee997475b35efa3b942d7656ea24acafa09bb14e6e57afd1c567e83209ec5681977d057cb66150b6189db423ec544177c45ad291d2dd9180f496752a2ecd9af9740692d49a236e46341d934a59c5a85ae662f60178a1899887b3bf055f7f42260199deb59061d95a3d74156d17e95f3cf1f8a4c0374316ac9372d4d48f2c1a34986c18cd56e79a827741ee036217068e9f433ec84e8aed5822011dbd9bc82f2a9e24586f356b6b10a41b8255da76becad2e840418c4fb3630d9df6cb06ee3a00a98b7abad3d7c96a23730804211158b9bd339baa6df0f73eda7f0a25e14b039866b7b2889c0471019b91fae8e63fe4e2b7aee8fb8aff151f4d60c0d87f56be4907a85caa5253a3b0fcb91afc33157f83c9b045de5fa5a81243651e4f3a4b2cccbd6b82f13ba5531a1d181529bb275a1edf3a73da6117bfe8cdd889a295f7cb4917d8278352c300522cdf3f45088bd4b12687d97a713af9c54d4510d881964c6ce1150c3f01078e36176fea7100121a60640fbc48f124e1c529b417b21c3bbdaeabc6fa93b64984559d6e1602b309ce9e0d04bf09230fc2c1dfe34306448de5eec551493506fa17f838a44a11493962d7d714a63053cb7e5e0f778182471d9b8682da19a15404c12c7a7342dc278ee93e42633367f89e47c6bc6a63cc538feb816974a73011381a34169dff8ff8127013d14df9eef5e308c13795c41dd69bb5db1fdbbebf3a718314734dae47edd1d3f9537eec3800ce5413522c186ff3585021cff7c739d4f1db6ca0d6b0338c7ce47a89a0c67f4fa4aba53968d292f32f6756de3e716397e739363591323673187236dc485ee2ff7a67fcb7e153bcf65a693b339c388413ab7a0c54d175896f2fb9688a078c80ece242c0959d51e17b95916b3c6bbea22acd93acaf45038c10eca1ed6119565d4ef945fd8b76f7dbcd0b07436713155ee801dd5db277a3f6a6704a83d5cd41dc38d81ff2f2f49cfcd1862482c6b79d302a3d25aa8b8913cee00ed45f3bfe6acb9260049d371883b2dc952aa062fe9710532756a92d701a75f2eeebc9a9d36920c3e90c1c00a58862db66c9db6dae4d8632bfdd1d53d0cc3780ddf580fb443b89934b1bd362d8d94b968f8fa020d80b626008bf8f385c61cdd9f3a2192829d9c63efbe7f3c8fb3f55244ad24279f127b820a634b7f99ab509a06bf7831320a12c08602286bf6ec8341d7eddd511ce50a1c29758bdab7582a53a1ca5b223130fde8ea9b3bc2950a041ac7e3ab4505e46cea94de7d434111af8ea3222f622e18be07533d84e6ece259eb2ca8f66a2409de6ffd3ba2c5bba6b56e388fba5163fc3b1dd555534a1a87ebc3813dc3a6dac3731b778b8410178e1ffd75a874dfbb376ad8e7fc9088a0ad2f0180f09e23f61aa95057f9dc4dce6a2f74657b0801195933f294aa24544b9e70dc51110bfd953019db0df2dd00d83550e6e8b4d424909fa5ed13636665c97091a8fa08272903ebff4c8f971c9eb2de823bd1e879500974c5c9a1d090f1980a65fee4f2cbc9473fa020b2d355a05764ec368bc5fb41b176d20302881b71cc3dcafa8289ef041e3b8b7a0d1154ee51fa235c7f169fc6b1ab80e40ed1d05fab583caed408342378980e810125d3418e0355b73680dc1d5f91414f47c4443e013018e357f71f1d4ba25ca896511da2bdd32a000d53b6d20217294411aa322dc2f9585601428233203cdfe1ee40d2feec9268d02c4d7ff9dfec292419274a3c2121f4b913dfd18e12aa64890e3fa4bd9f9b239299c23607e1ea31da2e47d0a4a8bc8b2ce8267951fa76d9a3f8fffd4f4a16d9ccacdd4aad3b46b041d602972ff09cee172fac98e567554f86ed4835ce9b036d06bf638176cb07077eb887cdf4dd5189801063c44ccc143a49e3a426f0b51508e65e382464e2129401ef55bbb1d3c48763b50503e74e1e4762449563c60817ce6a8554883967976a9f308091a83ab09454d526a3ca8c61eab26717cef22ea2c48a5c9c7103833ba78e4971c1eb6768d15202b31fc228ff1e8766f21a82f4eee170d39e4745ff5440793bdcb43a9df37d8cf6ae5ae550df51acc34aebeb07868015eacbc05857464f98c010c61dc0817faa2bae6e5d9618f9326a709ea1e884f34966b7cf41b04644308c52defa22722011e0c40f0f16fb42ef9d567bfaabf47bcb9cc1f6e442317179e482550fa7fcbfe6ddb28650f2ac9295a4602b63e3a4218c0503774bec210dd85b2489660b20413dc62d7ec5c6cc5a32a2013ac415c30a93a340bafcdd4469c7659ea82a9f95fc8f125d690da3923526570051dd1014f3730d2ca51c12c4c3adfeb6a2ba3c95373fc11a4aeb94832821d8c92bc7acadbe273dbad0cf7cb1af1df784aebafa854781c5a0882463d66634efdc1e8c74a04d1b0179797f14d8fb82cd256b52bc48a0f8b8b9ccdc668bf11b838c6a43cfa0ffed764557365da9d63e3a72c1ae4a6eb99bd3a2d5d7558165efbd76777ccdd185884410f9bec87b5891211a01500cf8a23c50ae48c6176cb007f2f63721d322031007aa81440a8a22c7275b5cf96747839aa6ef1ae5c1b71dc28262a06c9ddc6c1a28ca2fd074653367a1110fc33bbc3d42e1ae9bbab0fc8a2b5448b4e4ad66e67f9d75ade1118ba38480a80a30142962eafd41861da0a3509125cde73f14fb7e38a99966a380d33e497b01dc4a67a0cf141ebe5c642f877cf61f39b6772adae29e3965b1842a3d80e8b95a88f967a93d03fc27ea3cbffc7a1057f1f3cdc6b77248829b72d2a6261011a1ffcdea21812f1f71c25406bed569cdafddd05973b95483106dc6a329f0b7f0d2e09b943623468de20cac921a3d6f7e5af30395ccb2b09f09b980b2a7b7b4b3ede59a1fdd1b1ca19ddb324657a5208bca2597272c5c5e6498323ee8350b744ccf015a4763f7c4a87d5e07185112bb5b5ea84a59793591390f11f50b5c9130e3fcdfff100b1e250ed1a59243dcdc601e9fea408e16abd5942f666e2ae0ffe02ce974c88c95509f56501c32ed1aba3ca2e1807f0c4a83ac02f6aec05fe200863d908680f304936b514ad603a168c71ae62232607b6ca7be0f96d27d8d0c9dfad03f2c7a454a37264656e8f800326077132e0f4c7d134fcf70342478bc54dc15679f92b31890475fd567948aca6907606564b65f84bc10d13a51a28cf2111663f0e555ecb7bd18ea1057bdb16ce16a543578358131c8cbb4e6d210e34c57846fd95cd40aac5c9a0b6697f309cabdd9e263469e11f49f835b6ec082ad83ebcedabf982824e4a2a4a3354ed9ba4373cb2ef3821c8ec5b31da3007e613d716617a9dd1b643d4403c6f323913af77a5a5f591df001ce28e45a963e46aea3b2080a4bb63e84cc7ad58a5825809e9b598dbf40ce9badbb33af70409ba71eca9e529092c271c76b466ce8787c6c1d818f72c6081060776eea7a5d2b8626a84f2838e63b6021532fa61f26c24e3a7f2506b24c1a1614e3d71ad6828b836712761b3776e6579c177b38b6c6489911c6a79e5666ee1e42043ac8acd81c6d92c0bc5bc81a062e867745e61e3860297b466c7252dc800e02380b8eb9e0d07dacaf94b81270a30e20f760608dc4992942e74002517ae2ed4d885b2b31f6df3080b1391879cbd0f2908c8fbac145b32205491c4fe8f10e99b3d587a09f0ee9c3a198b405c045e20630d3869416455641af8846adc12ea01a52ba78c0de496be2a7c99c2dc80deb883a9527984dc0fcc842407cd4af2698fe6659af3b6e74e182e5c8d5bddb588fcece50e74aba6bffad6c79267982a27d0396a72a18a79d1bcf30ae57188050c037d28bb59171cf746b2b1def60f06a7f4851c419da74531d7304b4d5fa4315a8c27b5c650e7f2dba4b1512b3b2b8d96d18c98b262365dc93e7cea350c68a1e9f5fb49d506b0c84da18010ab00832aba2c8ab970d7031211ebfa9a55f9cf71dd6f4ad879d16abd36d62daca22e2f641de3afc5e8932a9b73ad95cae4e14752c96687988bd457f58d973997e4a0ae81718e7d85f16ba564815eb718ccd92df920b5516e8811a21e97e5d393f29b2ef624ef9edd72ecaf8f04912b7a9c4abf22c3313a56e914cd3378594dd9fd80fb9073bb84debbbf8636be0c1a978ad15d4f1711d670de58f992090922ace8b3be76b98b0e1f6f5abd5c238ff40b21bbecb5419bbc509940059cf3c60088ea5648f03277e9487040adde816ea820974eb1157394275095547d1a2a0a8067e31c8e0695a6e385b8e89d08b7bca87b3a8647ae55175c97bc94a46a5638fb556b163615b0070a43962e9c3518a39ad1943fa2433bca82bcaa75281d4a5f3ee49c825f0a6ba80f983f4aa307ee437fd932a4fe2f03c1c39840fb410dcea18dede9bc464e1e21a32c4c05350fe1539c4500cd78fc28a95137494a1fa20007c19c6c477a6d2e23d02321c75f8d657e05f52cfa98c1580993e85135b994514a39737344ccae832c6d6244cf899ab3fd21f880925406c12b30f79d6cc004057f860e1e716bc91e2769676dfe6163158cc41bd2f2a451fc3b621d8c91775cf9f797010ffbed944854935318722b3a88388b5feb076246a23db88654df6f5037751dbe0ea37240fe0844e8fae71f41d3fdd85fac443a9e3df85c6911e7ff481e516761c3cd8e06761671b80595ccab0ea0193a92e3bd566c07c08f4d98df679e104cc896ed23b2c1ae8d154d36de655f4989c726dae1c7eb0f8a6edab8b92749c55ed1ecec453f7f803f68638b3d00fd8185e4ab918d5170e0032517c8936c57e1b85b8c43c571670fa2eb444863119aefc514e04f3cb3fe345155722dc1c5258674dbb2a547289c937de98286c023834c4ef239a3686426661929a5c1c2b3d4f0586ae5e6d0ec8343e5ec09020752c6d679d4ca9f149150c6b865b318e52865feb4321d0c04147376a7d722dec5a856dc5af0fdb98009052913a7f4ea746c20f49b13c8e450a4d0bc746f09c92f0d8a81fd735e38b8f52b485ac5688f01206637efac68a291c16bb01994a28262af568600abf774a5b7fb5d3ee20ff0232c0821d80001e2f3854cb9b92a1a08aaa542379115b2c2aa9c70de02250d4a2114bdb33bfe7c452594171e6616f4c52a84b3e4d31f304301f6e92b67f4a0aede6efa267081b3e28ca5387c9fae414447aa266258aac051316c98d2c06a6b421881cfec8997adf5901d77449facb4399c1da016f0e571039d64aa8412ae526d7477f53e3404160e4f3572236c69250a49f4c6ccf52ca31c25063b9837d4496a1a60b3067928d2487aa5f2831fb1421b97602f6c3a19dabe0815e04d6ca4c2c64c79bd4ddfc4c2e6ade6a32364061bd3af37ccf88bce03b66862cff5d92e72f7f324e77ed738b6f571be4baaef4bc73f3ee305d0049a8ac3ec112da89c57377e35ed088c78c7aa1c476aecffaacb9fe3714793dfec73d5d2f0c158c0fc3252d7949e1bbb72fffc0307b10783fcc64d19fb4f5a33232fce052a90ee78495cad7a3c451a4791ccf4d30774a5ee39ca352d328cbca89c96474cf4f114cd20801445a14e2801f3ca8b00ffcecc333419267dbd77fa95dc34f2ead3a7161e856be0efd0065407b4c8b470d2e3366f2d5478136a66570b33d5150068a0afdca77f757606981b78ed02cdd9aa7a324e0044c537f426d9325cfdf17fe0da183d67a98db2487b91d963f9289249d6871169147769ee8f7166b052771bedb716d2aabcd119a539b517756f568457e9fc141781f4b5d9feca9e7fe4da6832bf2bc67b1814e01352407a5e953f5f515273eac0d35cf1945556ca874ca212a40996ce80c70f8ff15dd6668a6cbf2feeb2aaaa8d1f64f300cb42082829a431b79ac09e5e94117d8a9173bd1dd045e66ca66b8bf55a0b11695f71f410a91708213924fc663570e56d4052f0cf6ba75cccbb801118f3b0c4437ec48530666ff3664bdb40c80adc190b8b8a42f3d3c0f9bd411735313700275910fdb86a6deb1e6a2428e12d91f7129d9d8d4644456f47d5443c997b862d2081cfd816b9251a4183e0e672ef7930fbb4a51e02fc2a425c332e273b1546a2f45a2fcc55cd7c3256ff48312b8811a973e2064465237f8b7276ee46bf8808439fa0912210e2198cccb9beea0a46be12d3f1fc4f4ddc70bb6c800a9985094540dda2593f33070b48fa2090080ca42568477c04c846e77ab9e534fbe6a802fc13040b8cfd58a35d2216ec5f211354f743f36a85e072a17aef6e2792b10e01971e936b4d57c091e82f4872f59309f69185b931a620fdcc97a50dd60820ba29dbedb1dffcbfa53e26081b029a18a31ff9d0d1266748563560374cd8baf4f8cc621f17dc90cd46bdcfc50729063466d2b3405392e077a623a4beec8e4cbf5184f50b0f8d91b59e117680ea1556017f279dd687523d15644e1a1cfef8ea91c95b6565009bdd96ad0894c95f93c6f880dfd1e3e579d1dfea03b28e0a29c974a22006e670621274d596cea18d487da267c3fbcb7c4eca3fbec8ffc1a368868bb0f0df5e06d4392059110518bf6b01445276fcfb2c05fbf1510cafaedba0c568c0602f621fd694c28a8cae41fe26d699e8bdf8b9075cfa60c46ad3c48f2951abcf1fabd8235bf247de27e9e1a4530fb06bdc60f773217b6e0cf486903823edc95bb79ffbd7e4f456bc2d8ba9925a8cacfcc5533d1eea8fcdf0ccce34713819013b107fd34d05fe8d00c72edf570d00395d14906fca1c8aae062e08e735e4898dee946f9c2f7d610eb71034fe609a9f8c021ff790e5de95d8f3ae4c203c2eb38ca05ed12737ee55a4cac9198a89e992655a3d72c8f63d11789f36dfb1ddbfd71d1750ff85930bfc312881b131d26dfa04d81d035ce4e26c7acb41f0a83907e9c12b4a8c80a162ea62866fe89455212a4128300c708bde5613954a7501b47e0e4b600fa5f0475139bc40a70646ddc5fb4ad0acc89fe190becdc0d21330acc81cc2c08ee10e33af0027b3bc0fbe93c581132038f8c13cab146144ca0b13365d0dbfec7ce1fcf26e97c525d148737bdbf1e6f083bf61bab582fb90f57de3e7bcb6878abe353b912fa7179a40fc555c8616c8d352d3b9c481aa890f418dc0fe4db673316b8ba942d56be9325a4961299fb5cb5d140ead98db2cb12bbb5ed3dd5c47d28385e2f023bdce1a94e8024e0a443fb7ae2624a4305452f8e95943a377716debd9f81609a965e5852d9970ff971809ef4a38245c9bbae0d9316bfe682b81a8bb79b6eee4907319ec259f21e011b54da98803d4b929b2f90db4e7609108d9e8fc721859de7fd839e67199ace80513ed759343e82f8230ebce8ce8e961a0f65332fb498cc4aa4919d3c2f5059306193a400600aad83b807be09f39c94134b540224dfb0e23f413c1d666e876e3115ea04e927e7eab07c338fa5d1540d6d6abc1a98d71b4db4d4e5e00cca45ca8ee2c64692046559bbcbbf6a97f9cae89a98391ffd7384a0143e16d135cff09e408cd4f61cff1ee2cd3fcef5bfc6566634efff9d8521492d140c88c8a2d32992e64e0b6bef7cae78991fc1236b8f78f31bbe4678d6b795436d59026da102f23ec71adc22d5fae81aa0df3cee0d0735cd106191d2e5640b2b82aee62d40b6ebe344e381c7a07143c555ad06621aec0dc16a125f63dbae186a161a00c7d59aa8a8ce22703e8246b81f6ad1dbc9d881dd11b46a4766c39a828a92ca3b17abb3e151917fabf73ae86fdc8a97da59b98ddd6d03bd524acb24f1143e74fedc1086681b0aa93ddea2be305a19e33590d9d827ec3e6c16cf1ce99b69cb3e5271a26f5f030c9ab7d24e2a1c949525be78a17f5ac68abada33dbe64cbbb68b305ef02a3e435f1d49d0cc5f2860d5d3351b65f6d47bc2d1670fa6a232c4b68cc8f8ad5bad9d398c0dd04d959789ba9fb768c2d7c072ccb35d107403323f0771a5b9870fb4cd0834f8fbf380b11da9f0b9a08a18166ba9e1de8c5cebc54ef01846e7005dc0bf5bc4e8c91b131b29b7a38a31afa75cb28e3639c65fb00c5fb6b1dc19caa09363e3e7c9322c8180f2f7e8359fc12960ba4364b569672d0e49455025d065c9f0e71d0de30a50786b13a1d34163cc192d26213e42db76ba9d48e021990939b6cd4dd61efb17eb6c4411c0a6535a0faac38fef81644313767d37f4e3069ebbc09e6c1dee98410f74f18ee0a1e54d88adbae632086be404fb365ffe1e0b4e847424584f1a8c8e302306b725480ef8da993aa71d6698f4d90c69b595863c9143a309ff3ade2d96dbbc85c7d5764a24becb0fde5b40cccbb3b29d29848a1c0e782ea511433bec19f001ee75cc7faf2edd571fa1ab1016a98df0420dd115ad487af89f784428b65f083fc4c15d9183ec660fa50a0ea5860e49ae0d275999496e58dd62922ff7dc2f609d6c2e735fe4d5159f6e395568f577e3d7db0c5c445f8d1638e66b80b2865652639e293b10eeb27483daa2374d075eb05ca8bb45a262f7bb12e2339bf4034dd4e6717dcb51275512c50cbfca681af099022a17de03d6d8d49a8121116d9367ee6a5e07fc627249e24f27836fb5463c51fc0eb55c8c90f5b906feede6ff7287cdd2ffaaef686c6df3b711407003a62ecdff56196eca2ba02539146ef01d8ec9fd881cb9390dad718d4de2eb8d46bfed5df51205bb783fca96eb71c4529fc911bcd720a7e3c003f20b9b0803d5ce35a74a46edf066c468dd72c9acc9171f27510b848341aac5fe1b178c55ea4fef3a10ceb43b452f58184271236e470df71d0b061c45b7ad52d66473eb0aaa8282a43051a368f56ebe20fccc2abdbd2c376ec3a3259cde9e5a9393a659ea08ed23d271520c329c857d4dc1eccabe80866c4370aac87283d27c0004d0cdcef4c7576dab92dc5bc70afafb9a884bb456226d7cb49c6044a0aa0753c31c332d4134eae6481a54951f1ee2668c4d554e95148e660a959c39268e2267c5fa07a975c289e68974d3ad2d4ab349b2a011afa69266db2d766f84c916bb4c359b3171c65827587a9b4b7012eff88f0e762e74c6d092a3d72a35b9b43dacf97e37df00f4d26295bfc985c2ffbbe5394b8eafbdf29c9642e4432e23369949a5dd13db601c2beaf0d1451677359944c2ad6c9b55fa2b9589764b7e675131c038b64984c9f4ec921f7cf05112112567d106f6af23dc690f155085bab354f006e95fe81aa1cc812fa231336cacce8fa27a06a7bbecbf988bf88e4165a509cff0578eafedd07f67ac5aa2920eb5c46d5261f14a6fe03649e39dc8bc98f8a1d0286475d3cb0bb747b7681b5c4655279a549f291d12e746fd0bec9e6068d39576948923ffffbf7d87477b07ccd6568e1c151553871d0c9bd2c6e7eefc7bf53e3032327fecd10eaaf8b13243a3c14f779c92528bbc01920336200ec786ce1d1e8845d79348e58e84aac8756ccab61c32c4a8b6d4ef6c5c38a413e2cefc30b8fca58eba2a39313e03b4ac5fdcfb08141682eed69a9664c25fe1df5270a74b95ae9b9d819fc62d89ee32815837d4370b2a5fdf26f92f70360fa0eae1b61d6fc82c36ad249083ee6726e178737e851f244a381335d972324d8ee926ca242e0531399062d9dcc318f94265e8e0b77c55421995afddeb129e4a3969326acec2b4efde77a47de833cfecdbb5ace4429ebc1e0f54a89b677ef78efba1d0ffd168c18923681bda005c6e8bbd1c204f44bf3e182f672861fab055e54d2fc1cf7ae03403518630502e4e54b4f5efdba1208a0a2896f8ab0d70b6f819c2da62b564fbd61b69b76498fb46489468f6ecfbb8b8598d906220dc87cab0ed5b7a9929c4ffa0d622e999dc97dac258f5f8da8e3ff90669a3baae32a08fc9fb97cdf06c0aff9a40d155c6bf7d132003ddc27cb00541ced8306cb0048f0ede72332e177f7b5a66706483368288a8a244891d0c1d133b1c040424938b44c45668d788ede60545abd5d9787f807ac11dab613284eef1d1864401608c1d12b967b96acc6ab9e4c140358d70628bbee9cb4cd1ba832f553f8922be02b51059d6f2ae504b36730c900e900b730199e60721dc68343a43ee16ea7875e6d3c5167f97eef52cfe3a4ae6a439b2ae2cce3f8a5d84bf10481f12b7575874e89c6eb2336e98e6f31890f25acc61145d3c6892104e55ad0dfff3a85f2c4e423125a7b7a8ecebf2f2f62e5442f6ab651fa7b95cb5524257166f921ad96376537c27cc9836c888c8e3094894be7968c9a3a62981b0e73b49c48f4c781014b3184443708b4a538f470d1ee08647b2df3cff4949bdcca67b328f35f6613588af39d3ebc65984fbfd42b66053eacc6292d5c9089cfebd8353ba5769f2656aaaa67643ee6253fbf10fa51d1aa5b3d5d42e53ecfb828002e817784b77a9a26aa637320132cfc1f65d29133077abfd1ffd2cbcfea193a64a48bcb88d4dbe0be5eb179dc55f86c0580478046670b2a43e86c600cec9d375b5d44281e6ecc28b90177cae8d72c500b2b9abdb976aadfdd17fa272683f01f73d85eef90317a19bd5e9745db7f01809fd6a9124bfa6844e6794ca151f30708753f04fe6695e9d9d55bdd24bc23059e5f04860d58305c19251d4d48f8f53e5daf56cbfdea044b95f072bdbc2c4d239fcaf5f278ae5f3b83a11276e02c46281c120e0c966d30e996cb39dd155ed2e2a0d6783b888f58afb6bc770a101dab0df6b7b649238410b209d97bcbbd03870d840d140d9d218611de393333e373096168825f393c7758a34d2e47cd3330a667072cf7151302ecb90f61cf61249cf8209d3b1250a62c1e82fb0a4682842ba6e98c07f67e3379bb36ea44339562a30e136104c09aed5e7b9c10f0d9b5b8c9742589c51919b11773961d723960b80b656a46aeba193973e5c80e9fcdf0f83408af4cabb2f7975d439267e0d603857662508e3a39fee498134f23b7ed08bc465c79c35f0490e4ed70c84cce3c991a85d53c0d0bd9be6d874db86f7d8fbb373ad511eb804295383560e34bedc5edbd6da54ddbb499ad94374dbbef2ebd5c831984f1126ad5571abaced02a1a33f16229b51735cb5226596a529ac82193d2842bc50c34ea6c8f3af2ba2293f676a212180a79b148ab7091f6e489749e8f767e461fec9c44e6bba95d9b93d3346e6a1c7763e6a616757c00559e0ed093526a5847c7d2a4868958a71792d735ee3a87a34e8fba5309a212ede1a81b119f1bed346b98c5b6277fdd264abe6c82684f6a9de85fd775bf6c98882e45e798b4a71395b8384d8483c333568b79caa8f3519da804d591a73a49e4245a15a30e142f5c97a6ddce49d29e507c7237da4cb427a30e24225736302525f499f7bc03c4158675884e441f404f3e07cb0742c1b22bf2078528864213c75247ca24431d90d423dd7485143488fa6650a68fb50a2178e9ab0627f816520cf69589267d60278c4c7b54ca21d70f0cf576e8dc69cfa33066d8991e66eeb40ad2c874e2cdfa945178fe2693d92353f4743b842aeef3993dd6a78fe85484a70f9ef4d3a755301fd51efde684fdbc4c6fb46a9e9ee6071b580366fa194faeae63a7d664d22aedf41ff78efbe85dc6bde32ea4bb769a1e75a3aeeb3afc8d9e5d1b651a9769232d668d9b2e80297a783899c0188afd9a3a3636c723fb67bd3be41e3317adee9a488779a5db2a156bbdc35e7bd647320a10d0b8912e0edb1efdca65c1819d4c9668954907cddc69e6f04b7bf425292ccc3473b7268592a94565ac8f4eaddb7fa391f5d13f8f877521233bb2a7a3d188bebb66af4c7bf4ddf5daa3e72e4c7bd45275e74e2f633b3c63b96b967584978b56810b00a853490e98a4810e595b2109266bebb8679c0dcc169e3eedd1471258af55301328d3d3093445ab2214619f22cca012f101fb9dcbd1d906c6d0cf1258af7feecde198b794e8b8242ab931e7c62437e2c8c8143d76618639ab354ec82fd87f5ea6de6442eff1644abd4c674fb402959326b7ce108a2b6c207f33c3af661918e8d85564e19e4119ea80246bca420df410652dd19e8c44b4278964686fe6a583792bfb2157199e917155923793664606b69b64efec377a951d12d1a91b3fda9339b0f3168e4ce24eaba665793b7187495c8249335922ee4409cf4464c24464c20413ad8a10b664e853842f542bd823e28f05c0d50cc402f482b504fb4120227a35235b753d431f2ada5282ad92e5170053f258c8920c59cec815ace9f1c9f0e7c712b66f61f95b9675eb5fc9faf52c2c7f58bf2fedc952e9a555f0f2af168487509622935264c2a455513ec1b2c8d0270a2de46f8606f9f3f2854d1002e5207235f343ae3ca10c71cf78fd6d3be0e393ab4541610843c56206b66d968e708423fca0f4f3f343839844abe8617e8130e65f7422c3c813e35f6c02c6bff88409545c2275ef5f5422c3479d5601e05087c34725adc2adba878f495af5c3d3e18db42a87c31769150e87bf69d5cbe189b4ca74f821ad6a71f820ad6271f8225a553a3c9056ad1c9e8856910effc347abbac3f76895e8f041b48a3bbc4dabb6c3ffd02aedd9e16fccd090699535e32e2d87332e0aa65e5cc67d81a9178fb925e8bd38cc6581de8bc7b8167a2f0ee36ed07b7117b742efc5517742efc50b22f244a15028140a85f26ecca91ba1e7e22fee472b90512ebc0bf38bfbc5ece2f37e4832ea90c3813a006efc00f4e24530863c51570263e25ddc2f7e20c7a3ee77c40c795e871b73a0178f6f4c02bdf87b230ef4e27f8d402ffe748b402f3e877b03bd781c2e11e8c5bfdc21d08b37dd20d08b6f718b805e3c8b0b047af1a54b04f4e25d6e102ba6b80153f12c10ca0cf4e2499706f4e2471706a6e2edf5a017df5d14f4e245f7f00596a017af5d16e8c567d7c20d42e8c5a824cf9c2411a7cad01984a8a03225084ac914c90f79ced0c8f4d0479e1eea2f2516bb654a4fb11146f2dcda4ba255bde2c8145999131a2c80bd0e7fd8a4d68a697a6c5a2525a491c74d2aa703fe8242e08c33de82545e87ab7acad22948f303858732346085b555168516b4a0652b9c7546e646bd71e3c6ad25040da2a2f6f2d20c8d2cbd991b345af595604a2fbd82352d6585b303720a7b6a611bb33cbc11b1da565d9af63c1878eb74c25bd6af67b56555989a724a2aa794321e8d1f6668d0e89a837e6c2f66cd073bd35ea4692f7e06060d0152c4cc0d4ec7957db417af1eed45681344ab62ec48e1bc3ddaa338564a6309a6e2a56cd987b0d2d4206804282528d484060b60ede3bbffd01e649181c58e9bd0d8b427718f9f56353c668f6119062c760c3791163bc5287c3d76e92ba5cfb06b4fafb516fbe8957c5ff66815e4326cdb6b9af66cbe5a6b66d3aa9ad56ab3dbd0fcd043f3830d861dfe442843b1c723b974608f9db1ce7ef4cc626bd20e6f8925475c62694f3691a747623f5b6f6596a1f1a35523fcc5dbb7b5b7b7c77eb4ca76add6662b53ddb36bddfdd15e3fbb3d7cb4d73d7cfce8306ca6bd2681fde04f8f56c1283e1a46992d82291b5932f4290214ba6061861c965cb0f034bdf580a9becc272353dbb35124d2d17cb087909b3ddaf3d19efc4c81fdd19e7c8fcb041d35a4551ffc01d2aaaf16d12ac8842cdfc307f66779df3641c8dbba41a10c75b0421826872079b06f5bb69de3ee11cc0b546a9cd06ff78845852530a9d9aec929749793e5145b2b8e0c05f4d7331d4d344522ad659e8860099136a150bf65b7a4638519ceeb275e9d5da2449e77664c010a30438f56113102a5e04467a8e608a7049d9aed5300651f60edd9302e8159266bb53696dc00d1109724e109350359eb252eb770c53dbec255cb57d46b8b24805e5c7211215f3d34768461df8dc49d1c1a2ca9395282f253e324c6ebbb7c6094f81be5c882d37cb023ed349d89602e6d810a30e8d418395232434fcda580134b7dab0a3d2314b4203494841fd1d055579cfb8c2b70ecb17e556ce10b7fd713b22c451af1576f6f8ad8881c9da390cfbe6af1e680995ef70382fb86e62a799a5e570f8c917f02a6e4a54025cf25050b8b91e88384299ed41839d24285508d13cd0347b2274b6a5aaeddc0da404a7c61daf54a02b41794ab089711ae28608c7cf5c9f2314ade6eacc14c1b362213a330c504546a8c1c613182a09a99ee41dec8914d8a27352d3fa202aad98ea44673d2fd93110d5db256ab26e17a02bca87c171592a7074c63c272b77e81dc1c8f950cc39223a78374d38e4e887d77989b07e975ae78779bb4e09cd7acc82db3a7cb956e37cbb547e6ebc29fdc35d88d35a27b45c92e9aa3630de6336231394ba461da2fd9d39e361fb1f469cfe542985af1965b61ea3a77ed0dbddf0d95513821ae472ca7684fbbd267e5728a568db45114fb4f46b11f9da6451ccb3beeca29582e7da44f7bb2a45d135de9237b4832ae9ca659aeeed7e82c37e6d1bc7643b3e82b37e6773ad0baad6fb664069103c27abc8cd2aa0e4f9181aea00b4a7bda45d6da526984af2850347cf9d4c07e7149ecb15b5f2cc76cf6c49e9e1eabb670db8d35da861af2c04e8d912399187eae7333c618e3ad3976c70873bc7c3ade0b4aa7e2d53364cb90ebbdb291b6000fdee05363e448490b42354eb21b39621161a866fb9101f4d438b9601172aa92921b2c1ab2ac5718b2dc42b64f28558106a22aaad59ac205e5f2216113e9347f34779751f2d533e1a84a190cb52745553a1c69810ec7640f73776badca347acca4bb8d6ead966511e127c6a004ab5ecf4032196cb46e688e59261acab014b27a647d7cc77a9b709cd52ae984a5a40d592341917b72c0fa607b46e6a221d110ecc93ed8b86596c8064587501483481be484c8ae15d1fdd1664bfc712900f4686ca669958e024055942c0f699abb261fdbb973d88891155968c2a4c6c811aa84a09aed475c786a9cc423a9d1e2b6e95c3da4ab08704544a6e42f2a2a3904e809491e2f649904a1275421cbd410a0ea8ac2fa15c575f5441c64f9a8736bbe356bd6edd8735d978ef4913c31c6b8139f2020d6c4254c903c3d974e7bd80bec77f55c3db0c6137055a5b04cc8971488c895a8566b852e9f9ea18cdd951044c95588ecb1a73d7941b97c2c70f9c0bea1b9c986735e836153c457cf05a5535234942357d7139892ab8b094cc93f110d5d4f2e2659be47cdf0ea9959d5342dfbd5734111baaaf46ac61208450896489e4bcae573054936f4207f1795212ce4ef3ac3952df944437968662aa1e4154388229340d4867ca944439715b91d574f9657cf7c4f0b20d24f8682c9f1135a4219ea704422b98eb4653960061a447d5bb46912d0291f447b7292c0b348906566023bfa6a3e9b378913ccd6c9fd43d5c04eb4cf6b9a4d254196a2ed439d091c77618d9453b0b256ebadac605a7337d6449ec89361557475d751e4b02a7289e14db15fe481432fc81f04c2b042d133ae070608d051cb326d24aad89c232d8e32ac8aba6dab4708e558451d2d4a1199b092e151b7b292755dd705b198b5d6aedc2fe66cd5d68dab64a8423a5548a70ae954211823ef799e376a9148241abdd66ed4fd2ba1c062531fd6d433744aeac89982abd047af43d647ca4ec7d68f9eeb8845b46235cb1289021f59faeff48db40c455986c7816636262976d046add1c6166dd838a3461b2511ac91c3166dbcd0affe36da08c2126d0c29451b445ea28d1b114ba65d32c248ee0789368ad421d186910b7f4d4f24da883871c675136dc4241a8031f4d619327d11daf44678a09169954c1f7162647a1a93e92f0f408f7ebb2fa0477bc8f4187dd440926803156778e046ccc19f0f999efe4484d329072872c821531883030e2fb0e7e5c5440093a9c5005ab4602100162c4a374a25171b2e2e2b6aac58d1e2434b0bcb0c0bcbca6a6585a42291463d8c469686b55d00ba4ec48348c4edc0719bccb66933342d939165580c8655985aaf18d765c1b02c9aca94663a5fc01a520200d6e876016b4414ac01ab65aa1888cef557a6ef4144af444be86174327dc204f6b88049a69a508f0b74903f38854ca637327dbdac86dc57a4e67e5ca2b5a88a0651184a0a30550fe514460d86d1dc5c2469d574a1c472a123515a97c1a2a4f48a8453534938595e12507bab294841adda5edf42f46fdbb6f39017b23d5bfdb4b7bdd6ba955040f82301b54acbeaccb46c45021a0a6a1549ca6a28d757d2d0ea0c676895e81af44250ae2b2a6b208d641aece8a4262b59ad32553fba9a126c8651411845220db56a7b3d49a6ea6b95f8833d1c10dbb3ac0969f523577035a557364b7cc496bf15935cffd99cf6eabf97d1697a8523572b72c5f296ea52fac6e9b0b8ab2532555fbaab1c99aa77b92b1c99aa5f715b2e8b97e56a47ae484ce413b96279fd8a47ae565ee56ab52353b5cad5ea894c552b532b1e99aadfbe72574ce42ad6d4afea573a5fe5b40a47ae5054f4ca89ae5f35d12b267a457ac5ab9dd106511585855c515ec81545865c516bc8d5454eae2e96e4fab9d0c9d505935c2de9f5a820b91abd5ebb242052507b92cb51b3866707ecca5b1effa1804c08187de5438cbe72d291307df421486fc148b06093869bb4dcd2bd4cd5af5cd235695f39ac195d93864d08b82eeb2b1889d1add1ad2341fa7558a329c1624e06560524eb55b55aab02caf5a32b2353f5a49bf1c0c67a8d72384c08b83eba8feb230c65ca877529f17763e58c849361fe2050ae27917096b0f24072d535a28b12d035282099aae796b0229414604cb59ab015250525a553f528201853cfc5c0d2cf731225a53d1c47ecc82ef1a7e33c66b2fc76a95d54d04501b5a76121f23ba8900c9b74cccb4b6ca2b20cb69fdd1fe4a5e9a150b6f9934114e61305caa6c240864039bbe8666faec33bb467588886e345f6dab457dfdd20daab97546026c29bc65d9294f6ea4940ed553690807295f84351c9358b5c0e79538feca3bd5a8fa22257242014905cad7e60aabe1eca0f25946b8602ca950494ebea27d76b3166590651151b01240b99c1c9f5d8ad18ea70044382350e4070ce86a88fdb32adb696d5b8450e47778d9ec1081baf9f9eee96515a15af6b920342f41f19a53d693a4a7b8f018a2c839552b1f152da33f5494752636a6c4200c77de5ddd8c7caca8dcc73475223af591db74cdbb0a8d5ec34eb36741b2c0f64f91c7869f34efadabccde4074bc8f18eb226eae24bb596fcc066b0abbd65b6e5b274ad7158448fd7ad97aecbb572aed563e5749805ff647912b6a85841403b727b61c9f4f6921c64c9e1a897aca28a2aaa88f733926b5fd8146fe5584a62c0f38417d0b0c52d6e59e71c5613168f133b9367f65c55b09f95f3c5a0ec5608d273af894172c5612b47a6a8c815c5512c27b67f560ebdb6b892e98d3d3f20428e9c10cfd9e7ce56336a95c8f0dabc4e269743e6c6d6944db0548486ea9669db46614db3a05996e564efa06cdbae5ddbb48e5a6f9a4665ee54edf2499ed76e51c39f0c0a32844a1158e280e80b654bd0148c5241c1b079c15a92c450152a8482a6ecc815778ba73d79eece6b8ad610f31ce68e04e9f3437067c148ac9cfb1564bb7f564e8e15976f8799e504e9ce1d2ba7b6d81deb494643861c8ecc073554c4a124adea9c68a371e219b23c8723cb72dac3d6122bd8ae6e2f5963d9b62bca5abd36c79515ee70a865db6e97b5daddf443230268d3b08eb32e902282b64c6389b9aea89bd544114b04160a2c176439038b27673db09f9c277d087a168c04777a1246c2890feef448ac7cdef63f38c462db32adae9c7b632167d7e6edbee4d823c9ca392b47a6ac258da594f644b9f6b50898e7ee639ec33ee8ad1c972dbb5dae7db70cb91dd84d36edc98ba6fb06e1931dfac82976eaafdbe3a7f1acffe64e0c0a2a8293035f36cdb475dcac8aad9cecda28a0e093e32571554a7b120b81fd28156d07a6e4e1cecd5f0c0a9a2e689c48a95820cba34004594e0e084d1c18a3cd6b95bb3488025129f51aa641adaab5560d530ad49efca8945ec11e0a84a3ad1c58c33a1cb238800363a4a573ad1c252e2c5829a57b484c72bc2d197242cc28ec103d6221222b870d1866e5502af6075572bca2ec653cb05f673bb0d7e1941eac80092ea020086510aa91c781db21a798b9d19e3cb6bd703ca40f36d1fcb0e20418d39ce478b10c87e03e4446babc86c3965d2e6bf156edb465b7662d72384c085839771f2be7b01127da8dccaf60f9c40777123642cf61b9f3925bc425f99b3b31c8ca534a7b326b22bb2c59bbf009201421c77be5be2fb9e230f59887d9070e1f8841124c706a7ae42a6201a6e4bde0438635c4a07cd119bb0d3d64e5c01aa2881d673ab09f9563edc828add27ca0584eb48ac7ca912b796b89653db1847ee44a2e295d39414315c80651c9aec50118d30118e30118a3a4ad9c4feae448e18417b2c643fb86bf18062a5cf498cfedb0b2488b9ca6613f4fd66ed5f0b65d18c51780307774b83c77600d4b07c6cc00ae9e64387d90a5e5021c583cd6148b7dfb8150d66e9735257d0d5b3973673221eadb7f2291e89f9523b2222b45f2db357bad25568ea5c4cab1725ab56950e3b44da3da7c62e5b4ea8343d61225ada24964f92254b0db6e73a208263bb272ba1c487db214b276693635e1f01128d453e3c4a4a35e439269baef28775f3065ca9303533c7245a940ca63e5502a5a09086bc87d164c34feae5cb7bea6bc5df8841322c89a10d75fb28e5ccd19c01d9db9a33377a4cedcb172e68e951314141474eb65d18955ae27431d8e5c48e69118ad1f5548f822b0860988ce1d4f01a88a386d2357250c402f5e34dfb7080644f8835528003db9b2a9b6f47bf902165e629cf662121871228d14fad8d4cdc69cf8929217255109f489561231c237a6692fc6f8c1531b1ad8e3d9d45aab0d4dfcc14676c318638c31c2c7287dac6c966a2d75aa09fc827c6c1ff48f8669a934ba26a5d8af75608dae33c8b2719065fbe06b17b40fd6c5282b17bd7beb30c9c9e9209715fdd34059562b5df00a0e0359dc72fb2cda777676600d4bebc815ac61927b27874ace92d611bdc34355da9322fc89be72293ae9dfca8ae82bffa28fe84256de9da649370eb52749506705eaac409d151df8915e7fdaf3e96e8ce223f269558dd2aaee8754f18ced6a77dc38edc98b80624ecc1145d1bfcec9522412891e391ca21db98a393b3b5ca0dca851d03a11e86ba049c57eadd33a47885eed8d106193b5e2b1e7d43aba3d9224b9de4fa29db68e5c4520201d201d201d8b7b58d824ba157df4ad0b23e1c447f6eb48cc5b4752d3611f54c34864bf4eb149d4f741dfd88893ee46263689e83bec633e3e6223193689b009017deb43c45fbf9aa681e48a7b06c4e11f3225bf05558d8ac5399946a048655e58038324f9612353d286622853b07774a060e1bfeec7633fd644122d160e681a8456775b169df45ab3e5753a6fc529e7e9a184f01b95925e4a2927ec9e48c9e392d2882bf7e5ad1d6f7940cbb6b6befdcc67774eab55dba5c4ae8b461a7165f923f97aedffe8e8e8cf7bcd7aab7f5dd93c68cb0953c06cad624db7ce9cb3a114bde5e735f5a74e9e3ef1898eb490e8b487c4882bcb77e34b24f3484422e7958227f9194a11c516a46092653294c247284b01b44489bce5174c8a2354c95e86521c618aac41065828051294642d6f9fd7b0d36b96951dc2adfbb6713bb29c695c8e15c760a6699f3aadcaae5d7238342c0b2257d7dec2724dcbaa967dc3b6ec1b761a89dd74bd42e28fe4ec7e5287cc2dae4ded15bb12f9d3b6165848851c8f16dbb5cce52d32edf0157f3773db6a966559a4dba7619b911839522467d88744d68edde46c2eb15d212d7e246bf79339a3d9b7cc0899bf982b1632391e5fe716cf4e350ddf74aebfa669f52dea37753295f9992a17fa8a77d4b778762b5c3dfb84aad2339c45ac3e8b41e4aac74d97103ab26b3cb26b4d441bda378cbdb3f6ed141371395eae6121da5b9ce3786c39fbcb0a09dbb02dcb386ee3726017b271d7b0ecd9afcc8431aefad45a6b6c81b526e20c7a79edfb766771ad972e77972b3a8d5cb142c3f1c9e56af4d9823f235723dc43a6e6e50afeacc5f359a645ad5ec3300c13927dfbb06bbd451e441bf4daab5cc96b986ad7b4162226340c7ff88b3cabd135ed1096347b1d9b3472426cda2bc6346caaa7c7de43ae82c8d4bcb5533b3d764535b037336fff6e66c66e68de7e43bfc8d369a7af5c8eed42341e5bde1e44ae20c4b063f3229e8c9dbbd886bf0858967669ae375ad9fd2890b3af02397b96b399ab0e2d5fd7b4b851eb7e48b2b55dbbd8cdaee4706cdae9e7afd723b970e4419c414f23218c3c883620cc3a709650533b229168f20504f287ad530dabc434edc518638ca50d68f1dd70899cf9444922679fd980fd66f2e1b9d2dbe3f00cacd14129724329c029b967b88e38f98b39dbcd2ebc1abc500ed978e9051b6fd201bf755eaf4399fec3600d2cd327329522532664fa64525a856ebd06238452d4649ea667648a360784cd33edd14f2c2353348915ba2eace984e46aeed0c9a3cddb5191296a992cab3ea94d9c21d3d7a05651d1ab9627d5895641289c9092a94c944c9fd49f4ca570220d943e81220849f257a7646ab3155ba655dfe4a11d954c4fa5002493a3403b2a7235314f0fac813379501a8e6d7cc4ccfd6c8a2a2c8e21d7ec9159ca24c8eb447bf4fd16f29f4ca63cf21e31f311337f9327d337ae4fdaa32db0df33a59d5027d49d01d5ab88432d4e23e9d636a0b9cca72197da83556468a18f9329b9b5b8414ad3d8e4d3811afb2945b5b006b65cf90053fd27aa14333066c8cad098137bf8496a3c2005144259ce4cd38d849653d8f91df2740a1a95f964049c085cacb071dce5e56e5dc869dfb4f66012910cec76ee5bafae472344ae96ef6ea79048775889bff90944abbbecf0b5752af68c81ddcee118735ab5e138ad5b0d2447e6449c88d32a1973a4843d638cb148544d68e175ac3ebb8e8d15abf7068c89fd199374102041112748ab2c2a2d59830029220848114166cc89315ad29a00ce9e91366d2953adb516c20b636c582594b2238c626839bbbbfb47f78dc3d4203ad5382ae46e8f56f5c0ea35ebf6a8d7267b224710d7dfaaf62efcf6fa364678ccfc19c9d326881e56b4668edcf51b992f6cda41272073c42838fb393e3714348892730396bec9d4a6096c7f729393dfbe05c18a3e4f60b973dc85b3bd9577dc5fde755cf72fe274b8c9e82f1cf7eea22b847b778dbb9ab5f2ee8a3eee138859f496af74f7e5a2fbf2f232390e7fdd45dd59ae8956ba8b848858442c229148843f96af5c6359e1ba1369d5ca5956f08ce538ee90eb5ebabd116dddb9eedc2127c24d465c91f64638b2b8bd16735eb88bbabf5c24eade72ade5461cd37398fe92b9fb7261d66001eccbbb6bd0001642418628194e214328848432144241593bbd8eee2fd7445fb942ba8baead5cab5be472b09cbbe8ae1c723b5856f0d77d0231afbce5dcca7d7987e36574d36d321abde5fdd1dda6e9c21c715a85b574ff6a915675ddf26f6505487b2b2df65f6d815bce72ade51621722344a4552ccf1b8783256e446e5ea45530072181fda0504eabea895431d22a110b1c712c177cfdc08edef75ac5f23e4cab56de9769550be9f09d7d05fe4ad9374e88283a4d6f9c8ece5f0538c85551c7bdfca26af70e7b25b0fdaf66d1b6e1ef4622c9f434721fab5728cfbee5c3e29b26d25ebf0a451c98922b2010062d6924db9188a429e9085a1236f68dcc324a0e08d81e6c6fe2effa8dcc7d9a8697bcdeb75e74bf225974ee7e31732d051394c8f6957b5fd9f47a0ef88bd2e798a7b2fb8a6e35c10e6f93e674d8f78d59d32e257c8e092536e98097cf01b57ad26b7777c46ccf5d9845f6247b0df230371f2ccb2787630546ae74d12d5d833f5828451394e43e8b2a0cb040a8c8f02329b92f92820951725f5b3f7e44f28dcc4244c7df8b102cde879fa643fcb5c0b5bd6844912c441e5e7eeae022c7035ee6403229060249b6b0c99296f51cd83a773f7ad20dd0fd3a8085453560d17668e7d1d874bd7f4dd7ad43d38581d051abbcaee7e03044922dfc15a1f42d363177f21a16d5c05a90e3d1ddc242ba5f58c8e837f293f846e60ecfd1499fdc0e7b78c9e91861f8826f64667179883f139e2de49b13427416f88b59f4fe8ee486171691858078b6f7ddc82cc21f12b975c83cf1a4f8bbe9c7aea5f71b5b55d806227ac909c8f1c87277784b1fddaf481eddba5fcca56b1f8bc35bb5e7b8aee18a4d3ab8d7e7e05e6924bca3d326d82fca82c5e74d3aaed3e7b8589ce6894d3ae8e773b0289df40961e9221da5d1b5ae10b8c30a81e5eea50b57fdbd7e4efcdd74eeae4106d88ba460021359f4adefbc1f913ce7e165a5ac7afa95bee2dc35e2aaa28a2ade90e71b4f20e68ed461213bec45222028a516cc54ebadbba2fb893ad37593f6ee48f2854ddceb9164cbca45327c77735c1d568e4bc785ad470e08fad16924bc5fe9478040924df4a61c1c46922936e9b04e9fc3c21f91fc915ec237328b4ef18dccf0a423c9b0a391a26bef72bf2099f415f72392496fb95f914c62c1334120c92b780231db4b4e474bb62769db69dac62a6d2fb6b2f49cf3ebae5d9fd73abd3ce6ad58fb9b50fbbc42e4a1bcf06724df741689ea37b37de925b7b43a6f4defb7e5d1b5beda75d82acb92d9b226d07984bf22f9a66b5bdc379abc34f6da644fd83eccf3f3d1dec8dc46c42aaaa8a20a1d12e8dce19bce228925d0f9a633279bc01a6d935a5fe6bc06eb2965cf9a8add1894bc402fcba2b1566b21b626cd0f36715a734a5869e67c7bf1eb5b74f663ad31c6d83146392594de67e2ad5cd1c0543c4cc5c7787b24561a83090fa23e991ff5f80f46e26fd628efdda6a4b00b1ae4c1b60facbc25639472c638e58c73ce80c0c67f324f40c9df73dbdc425a8e98e92586d046843372cf8e52489a40084811f1f5d7b57ac2c76bf0cac07819dec230ed41dca592add2c232ed793240dab3092248ab6aad41964d900b7ad0839e07af2017c82da2bd065244900be2196b650b0205695511adfa01a7e8f664604cfc94160a514b8a5e4da0663b815286b465b5d7ec3d62f423ecbbd39ba4b7d2e482ad32d5047ec1d6d82ea0960fae5a92ab0d4f2d4e2b4e1a57e68c33ce38679cdca4331b4dd2ed4773fb9c73ced274992b66cbc43a6b96b00b86351177ed8ae69c225863cd3967572f6d7ece39e7b41fcd39a7c59f3de9d39ee51f897492bd1012cb24e13949933449f324fcb11cbbc672e3cf1dcd69b1cf11cb081b8decb4734efb69a7fdd739d6da39e79c73cefaeb945bb9bdadc49d7302b58e3dd65dc72c3675f57af639e75cb14e9f44746e65ce39e7ec708f8a4df6f5c2265bef83be62234eec8d601f9c11d1b923a9a1e9edf6cf9d67a0bf3e04fd859b675ed9dec6c9d0ba8feb1636e2847423f2d749d847bd081b69483f84754a8f84bcf521e8398c449ff6131c1c1c9c9ad195d9de8a93bb5b7170b2769d4028928085ac6517666c4e119edc9cdb9cda9cb0a6c29a39e78c4192fc90a9f98a6d646ada503c23533389fc6cd9d18088f9c5285ed24b2a03632c7c85abeb18b66e9de209a5856b7b53360f6cbfd160e5e7fbaf8d8f9879c84c9e584910146fc6c6c608f6fb512c413fd060ab60f70f6f1af18df660cfd8d7268df6e069fa1ea632ed495ba2d83ac5fd38af0b650adeba504a13d8d8dd3d7faa28884f68b44a022922089098538a4aa21259c2209a1f801401a78020c3c70e441590e8c9c31608874810422933d32abb5a8159b9d20e4572c55db742afebb61b3147ae80c894fc77168c7109f65cf6f6003deb333edcc891e9f509a394221a30c6fad7c3b723d38b2e0aa6ac7330d9fa760f3deb5aca2282fe06914c2f3f63b3252906225731a75a5b8a393cb0dfcc2a7200a6e44580821e17f4c49c99991b9546ab24b5b029b01f1958a33d18190ffaccd80421c59bb9e1c1ec005536d0934702bc0761a0aafe4586779103b451ba50657d7381365e5ad4c03046da68e37105c2ca126dfc508a3686bc441b3371860703c6c8bf34968131bff1072c642d40e1013df96a7359b00a599e4221cb0f815338008c9141c419f2f20979e60486d329872fe490030e5ec00187172a2f2fa62e984c2db8d0a2058b2db060519a522ab968c1c565451656ac68c1424b0b4b100bcbca155656485620914655188dac146b3b2a749d680a221127058edb80b64d8b82a66550c832ec091856a7a8f57242963652da4869236de479481bf903481b7921a44d10729381357a36924b6e6cd0fa3e58f8be10a6206e3912230e1a447d3428cbd81da306e3d0d6dfaa926a2357510331256ffd2b5dff8efdf3b673f893891a88aaec18c6f9853f00e42fe294220ba209a04c4510680740e6c9c85f1c9251e52f0e45a129b6577065658a00593e069c0157f5f25eb4715d1e06ac61c5242ea08d0b470bc017b086852306608c3c8e9538596619877082a245040da2beba247310d6884618d16800fc016b6c993b1110c22d640e8621731f4443e6b4b7905bf8d12aebdc8968d575ee405a55cfbd885661e76caf56b84f0f58fa20923b10b992e71e73600d98b9ff90ab3e177132c7a5c1ceb73c9248fdd19190277d88d15b3012fd910fd6122d00a6b84311fe0163b8cf0ed87997c7cbcf0f213ffb48902eb14974234e7cb47cc5e787e8bb6024466f6c12e126fd15d8480b77166c658abb5cc14eb473173db1b006d638e1aec9ad35d1b539fa4869438e1c8f7ad3f6a8a43dee72ca0fb269c340748e54b4c73de6649abe5cfd8029ee9c4ce62eba5bbe46f70777ad7ba694207f937461cde8c21a4d6e10d680a781810cafd99be5edc29e294cb2e866b9391c3107c670308a9e1be41f727599e25eabedf0674ba5dff33e19ae078ce14ed3a2dbd99a62b943148785d4258d1d419bc256f95967686080727465d89565578f618992aee967d865d3ef436101163e21c5948cfdd27e6fa6c28673546a2f0ab9360cb3b41759da1b49d390f692b48f56c127a45022e615b94f2449af926c41518c21f7a3925ec1303021a255f00929a4e43e104cc227e47e732f776610bb9cd669ba5ebb8ef9e8543fc61e1618ecd69e25af1968f45a44b54a0b73a83d799a7e71290e4da284f65028d4270afda153d07ba99429de1201b094d8bc4729189094a0ae755a0523e3858cc7b826e3b64e2f81f9d74b64e0d6814902068ca7aec1b85850ea62403060603a76ebc1581526b6271b0f8c0b73ca469c424a5301d33f1d273b4edac049f40ad6ac60cd8b6be3312eccbda4553670ee244ea926a4a1131d92299f56a57e7a8cd22bd24f8f53b44ac64fdd4fa7f813f7138b9f1e936815cc4f323fb9f869c64f8f4bb44afbe971a755d94f307eba3f3d36d1aaeda7fe91a9f574b29e9ceec9d5cb4f87a7d3a00c391ea61ddce3b9c7cbc0445ac6656021a6186c7a7198651c6653d79d744db0e6a9ce83b9172355bfe083a127595e6a3c4353642de76a49349cf65e6ec644a6e43726b2fcddc9f230324d892cef2289fc974a301766eec697db3766174ec9f7469f4c877eb2f5445a3d968ff503833525579ba1936568c8e0c631f5f0ef19f3f0cf83116900613a33be43ffbc38942bab444c4c4ccc6fcccc64211090d9b4239e3b873f24115f3e3662abc3a470ef643cab81fdb0a14e46860db597e1d0c09e1eff61322e566506967b8731a0f6b8775cd775fdd3755dd77118d00e01b83c06744ca755a6cf8801e303a5277f984e6cd50cb9a23da7430ec78c9be96449b487c9c03d198e3f9d7b7cfc09470e7727df42c63f8ee3645c195f65813f6b65fc744dc6c582b81da71ce3295b1c8e139eb15810fd1ac8e2c174b6a8533b3a144960af0bd3b11858f4028311014ffeea1011f2870d5581798cf9d0478752a7693ad4e17b7b740270bf99695cef4392533d1cc61d82c2c1434f0f17abc243922c8f2f6c2fe66b0816ab307db12a9d6a6ce882c23ee185203c6104300e635e70a7c72ebd6c96a57eb5ebe4e97e2f62c87877612ee3f2e8decd0f06e6c5bb17875c8c71fa0927dbb1a77f8dc3e3f498a4553839ad8259768472698f0dcc11dfc87c7a73394ea76b3ed8173229987319936c4997e5b4276f6696a4bdeeee329cee7a623b731b931bd8c6320e7365a4ae8c4b877a9868a23db931f169d589f6b47735c1c67cfa090a3684d32a18fcc53ce31accb570e810ccab702fde37c6d73f54e4d4bffec186602ecc33aecb4f1b942c1fe3a69668629b8053c8f25694d385199e4af1847978642afa1061096be86995cb5d2814999ba33b87ffd52c23c647ee2faebdb8fdc384e54e291930cfd1bdb1e91cea450a7fb5c2523efd2be51787277c44cc2fcedd989bc3f1025bc366019c15ac31c1f810548e31c59ca66155430ab68053f3d9bcc9e8c899d21e11a6c378bc34adc1f660bc39209ac3435019e6306ebaa6d161b636a71bb34fc7dc6e22c6e3dc661347f08081dcd7e08dcd30d7b4138ddc75f8eb73a707c8e4c64262dce59a0f3626c608e40494f6a4c503e3daacc5ad7990615c52d6e40694615c16599b1b953d23a4964883b99d356b8b715d5c1ee3dc8d71ad795ad5c2327b8501f5fb497bb10318470f55da933834661c723866fc26734de3dc1db26599430e874c0b0c004fc68a6422654affa8b0a1d56514ac8e5cd5211f6e031baa43aff19913e00238ea3c7c874f256ccb2c065688be8f1e4bd80f72dcfd414457b7c0c1c0663871e68e8de51230468a5d01ac11816343b08696e5b12a0108400002d0833637983bb3d65bc6c4c23c9fc5611cdb7cb0524732a133c8302e97952c9138ed499944ca9429527e806403b1c82e6a2277c25f917c3255d38eeef7177f4872d71c8fd23b0c58d24ddd594471852a3995611456904286dc8e0e37216118173fdd1bd955da9335b787720b911316e7381c2cf08ccd77029dfb2ceecc22988bb81c30378205c686b2165818566cda1615994eef3c338ce9749969d64e780536c7cca79b2015d81e8c41a293bb6bd806d31fb09f8bdca75b383549ac93e9324ed3d890e470648d55991cb0194edd828dcf58603f6cc8a2c15f2500feea00f067ed0dfc9550f8fb0ef8bbe7d5c89db00e989b70cc3b2b8912b6fbaca156ddcb63555ab5c3e5339cce92b48ac5e5b39c56b9b87ca6a455a7cb674b5a955dd5ade2e11dcb3315581816bf381ca76b3ed87b9a8e1c0fd38eeea8a3b0101d7878e472c41e30109ddbd483e683ed29eedde162556e8673b324594ea6246b1e6ea693028baa5fb0f130fef50fcccd0070b324376b71b325374ba23d791a375362c6cd646eb6c406732314c890615c970c3919181b6a4f8a85f11e2e9022826cd4f061a655302e4fabb42ae6f2c5573afdb3f9c561ff45ea35a77efca5be22f5164c7b60b009a74ef82bd90e7f2fe1cf8371713862708c4b231f807b04cd1f36a4ba47cc14bd43dfa6c3354dc9a56b6a0c446796b7bc33e45a9ca663dced2ead2a5dbe792687637238b4f7e5010319c6c5219b2e8c220a392d9ea0ac26bac3b806b953c7912e101c1139e2cff421a8dcbd63369dee8724c38071978fc587a0b28bcbef230744ff8f9c0e54fefb1241e59fded7301fecf62132593b69316b5a8f2c939b4abc43647216a15843fe5019c22adf1803f93bcef0092228c92cb61832300d369094f1c77873df8bcf3887bf98c64288a072bfb190d3bb9f6eba76ba30ef4c97837153dfd3b5b9992e77c8e9e87e4265eecd35d75c6bdd37dd0f954d37fee4c5039c827871d3e1d7bdb1a80637868c94cb1b723b60defd74611eafe9303e224e17e690d3618af82322c3b8e94618d7609c4e441091619c8e6d627e7118f7eb0e834535b01d1e82ba9f1c8f176f2ce4c54d5848eafdd3d7e121a8fc0273a9b338e476b8e84861197c23738ccfc03306dfc82ce351c65b8818f88b59c65b46d7719ce9f4f4ee9c0cfc21413bee2713fe2207d47db6ea46f6d753bc81ee1773e704c6e9687cd291652ede8f887e87b317580e7f31ebe89f4e23237671ee422cbbb8f662071e0e7b15006c48ae4832872123460ef139e06073b783cc85edbdf886a05e9c3b00620cfe6a4a060c8c1707808b2b84fbc9e5a7d35d5cd3e606b91c2ff0d7f9c5bd77dd638c3dd008c00e3cc81c87fbc2c385eded80bfcbe00f9561727719347277981bb93b8ceea6211a300f000fa6cb1cb66a87a762c4cce8017734f0071300fcd1e001ef70617b32181bea3e03cbc05f8dc130d8500c0c030fa54cf87b06c05f5ca8c3bd78398198b9bfb83003c0c5597c723a3a7358888b9f1eb91d2e3f1d723a5cfce4e27207802e36eec6ab498e076cef2322c70e23712247ee9eeee2c27ce26ee7783aeaed99fef63a03203171f83b924f67f10e7f2ceee2845db8b82ea8fbfdc82caec3fd90f06416c7f72322b3803517cfd85fe3824092af4d2066975f9c8e96ece272c93d4697f7a5e20c5562122591273e893bf00702c120184425e6449ca1f8a1320c8d1b39e0f0037db8fb0d91c9d9b725d9743a77bb9f2e0fee1d76b95fcc2e8ff793c991f4977f7585430e395cd8291c5e2e6c1a19ef76ee0a89db21172120934df8eb9187c8b0b8dde2e2c82e8eecedc2025b4f947892bdd444ab4a1802a8bc7279eb8995b56c6505932cdfa22da12959c14d48cf48f808aac64976f9056e74830c694f5e52811d8775826616ec0785b020b9c2d60053f216a0c2812c9f8920cb182487b0a18ae9c00886310c613c3e7285e9c09494ab3a045392c35fe5c932d6212c0c44c81fa6d3f3040de4af0e6143a5f65e5a287fa8699fa08e4824d89188a4b3621636a04114cd0f541e5ef0144ff86fc257782dfc57776cedcd5a2194124a02e4cd527ac939eb27b468ea21b599b3ce3a6ba5f4b22c3ae79c737e4e284b98961034c8c345f3a4725a379d67b5be996f3a07dad8f92808bdc04e17cccccc949858f8a3e61863c4699923ad8e908a3e24ff9150b0b0e70f99a2afd55a3995b000a4b7a2554b95d2c79e4c0f7f10d157c71f3994fec2391187d29e744e20edd17f1028539a843e06fd04c15490cf0f8d4199feccd01fad44cf814c29fd2753922b58730f721cb0f01bb0f09c062cbcc42cedd1db0b0916be89956f21ce041a2c80cd0e61972ca4c2447b8d619167a7875e3dedf1f05c4f7876747a5ae584142852a4908c30836bcf3e5960230f4d7bda758f9841604ceff4a1a083a30e8db4520907c020b046cc5f5c62813590e187f8ab9db55b89070948c8349a65945af1422bb390003feb5a44c121178689508935305f18869d7ad4fb75514779d4baaeeb342211142b88433a603bea705b10b9da308d4c75fc94f4dce5b1aab031e2269c0e78eeda7578e3b10bfb752106b1d3eb72c72e770ee66bdbee901824f250893e3cf1270c4982b83dda8b920322e678886d97300cb3d8e179daebaed5565bbaaed8d35ebf1f8448ab86b4ea3b3bad82714707c22665e81345136dd129836446719882060b603bc8d2010bb5eb34fd8ac90cf1279321bdc4623d7ca66dd8b55b0fb91d19fee094dab59e5deb106af4ba3e3a3527d63860bfcbc8550ff98450123993202526429b4e8f7a94e222446e4ee4a6488c3ddabbd04d910f1e6288811021ffa31b4a13b2566be5ecc246e304f693a1544675e15761adc3d334aa55d74b7b3232edfdf85cf80667023b4ff127d3c387b5fe5dd7757df668efba642e19989256cacd520aa56429ab1422a2b8404e830679805811ec573190f6da260849a18445049952422f57589a2ad0202a62a73f2c591c2cedcd69c1f7fcfa873d62eba2b05b18fb310c3bca9bd6f5ee391ea2c476402c1ee5e188f1ca10571f3d4a331866410b63f893ce28a45003b7f6e67b3265e955c5c1c1c1e9a999b716bd282c51ec527841082184104219b9ea01ff532a824f0f0ccaa05c4b64e10850253b800316fc64f87849a8aa31c6286597a34b8ea518e38455c6286b97a54b494a38e19ca711ce88ef524f2cf1677540afc50867aca101accda8f46c75a5514e32552302410080002314002028100c8804c3d1783ca4eb72ee0114800d8fc25076521987490e43c818630c10000000000000000009020093cd2a3082704724fe979390121ee71352ed9ee62cd64eac3d039952428216b4542754a4aef70436cdec754514cf8481d1c6f3c596f606a65cdf747a31868e219409516d6152c008073e4d900ed8eb68b2fa6c72d053e4c4b92aabdbbb54fa476474bf5c2229e8a7a18e32640c409c10070978b5a4f857ec30c2daa6fbf4537ca13d84f05164e0843d444971348f40470a445da3142ecdcb08a37e8d1e8f7a8c336f94d97844962398b1703d6edbd8c47f4ccc4f10ffdd442728257f0010a0d36495da6f53880c9b46f44bbd819d5e567c23d5bb49a9988cd9946bfe44b14d5248a895ac62b6c21abc22d18d4d1b77f1f89bb8cad1953732d2707754881c2c96a9c5aa747707c9a23efeaf720d74b0190ed0cd49a36d9a95eea0e851ba9f91598a1c66c492ba426fdf85337b1c85bd225c5e42238a447cea12b2716478ae392fb44fcb2b4c785a6e1778607af6bc2085bb3ec471b67161ed8715f4de5c3213f087c4a46420a8dcb81cad3c063172cf04b8598661ddeebc7d118f1207b97a81dbd63dacdbc3b03981d444891ee61e908169bb30cc5a82d93b8d47e6a416cd0df0aabc8e5ebab423055ac1370fb7a45e2d2172aecee5ba072efb1a64f457bd45988d6028d820757f621dd8c9014e6e5c3dba9dc4b542842767a5211df7b9b3e3ffca2c66ee62014aaac426328f7aca876bbfa53ba7d028ab08269a25d5b6c422cf0dae4e9d8808005f81ab55e7bd56e36a363e2c909964cd8ed39c75280aa84c2c1291fdc28c926e1b4b05b5c967924dd9d1a5225da444670110a3bb431855a299965503a11bd8e12218a086bb58d05b40d2371db703c8aacd431e03e63c4a2ebffd52f0eaff3120a7b49b1231b32d556f89ccdc17b53248cdd638b85f466393a1577eb24a681e2917e9283d83bfd723bfee2bbdc80a0c73063e56c1469ed3380ba2b89116c331a624ee4afd77932a9e5aa1cdc052c78d7db0e03186d50777e24bac7c0743224d9c347bfa9e9ae3fb28b34d7c18450be7bf40c057285616b636bdf20822a8c344b9889c98309e6385a4e0e092812928d42d013bb23b50c913ea41ca30ed32f6248f7e3ce57a8085901129c228ac7dce419b01a0b118b2fd173fde9d5a4bc0e89cc07361cf25dd9ef277671cd5febc5f650453024100acb2bea66cf174a6a4e8ddcd37d686a12834bc878d1dc97181c590e79552246064f9f071f239971be323c29546a4b8e31d240bf48e5dce44099181f9355d2da6787977e813d3a6b9ea4e0ec660179b02cdec38d86833f67d9d5abd386353388c88a05ce80b5d34462e064316ff6f99f3d6e3a55038a59eaec49804796a761717f492034dd2427c5cb8b09db192df75f88325fdf2e7e8801a4c12cc8418b5a19cb931f7ed7479b84367f9c71eebabaf7d2c8436f1fee95258c12e19e57b36ccf6a316f05b4c1fc28357f34948602a8d0ce6a40a8a6a20f2545098fae0f52149cebb43bb31a41f320a447e1e1e100f47f8c65d4f849445271d0903237559239707711ac574579eb02c716396e4203edb0f0160922ba2cb188131d7aa4bec39fa5c845e4837ca53cce37b8f1a47b8f15ab62de89e71622e2e284b24114a762db876b0f78530665edc73ad40a99d90dc3ad121a69ee1f01e1bce1a51f3e75a8c466cc12413e2ff6dcb7ba4f9d2f6703264d343bccb59d874c52561dad45a01fa0e6e9c36eb62a4b6e2b8a4b037e9d05bd163cd065811990033a53fddbd032637dc9890cdafe7f9cfa674f90ab98efc5a0fc47efb00748395cd0c06d54631a4739939cb4fc17fabff153ef82fe80a7e933453f70cb46b4a0f113239747792682344c32f8aa92b8b61d2248b7422aef78bf74024b4cdaed45b3c64722d51ccc2952b11766d3deb81000a3bc07986b94b48c65da26f914935485f7eb9f9adff20cfde250614ba702268dc05ad6aa98ff79705fefbd00cf2623a57d2056333fe8740d9db99e3bd6e5dfe06ffedc9afcd72c59ae8b5bca7d2c233975e9738bf8993bc2547688ae3c0bda497798fceb2e5e9010e7f1aa0148af89e082048a5f82f49005b7c15c294404082b088a92fb630c3e042d2ccf007d03bbd10842f7b3025de05bdbb55b0c1f24e0b6d63b5f4be6d549d26150499005b8200920550ae9bf755244b6b8dd8df6a5b9c5c19c4c298a3136843bd9b5fc6989b11c58d91c462d15779cc5e1ed7be1fcbf7a8e76e3233f7e2ccd0a38faa1055154520f82733bd63b86226c256e3360c4b1c5f0bffd3d1bc30d36b23e32b415238446ff47fe81a4136eb7daec779eb170d6857846048672384e796c48bcd5ecfd1f2364c0a2fb6bbf53778e83448670bff1c8efa8191b689e41cd108353f920b247725c677dffb95e48bbffd56b3bef5e2cb9d720c82390ca2d6fc6de7db8fa4564fc604ed91cdc1f23eed00ece22bd99d92aba84593f29b67a25c777085c8dfd4bb31e3259f641462a86333cba2df004d85a84b2046e206cb3e489745847195c22b8d797bede4f254bb9a30899592ce0c2c88ad484e2e5a02fb34f35e87c127811bd3a6729d2db63939295d646b6288b266d4544adbf5fd99b2cd107c2be7b26ae8ac7411da55edbffbd6cfe6aa8ec8c65b9cdbb73903c370fd30c8d43c6ea56a23fe34c64e811356c0fa94200fbe87acab5741524d5f52f6c3838527ab8b1fd561ef8650c7422bd76abce6e89d514a0d41a896333d581f800a49dbf28547725ff40fbd4e008f4f6239ee79921c581e1313f738df699e32386ecd022f86313efa3e9137ed640bb9bff10ba00c1906e10750268619295d69234c20b0a7b9d4d57149b4d4726578eea5b1ee47211b284d63ae59ed38f298a1f78f972a03d30c75bb68072aa55aab0f44f225b24e96986fe08a417a3a44c7dad6db32568549e3479cb51bc407cad10258c65ebc8bdb1dfba2c9cea5edd0e1316fd1c60be710b698ab3cc4e7b9a2d13101d13ef64e93b0831e2f8f6d913be64915c038a2db80ff29657d04ab43df5d0c83027da13b4777e5b11ca1c0e6f6e79c04e4a03c065cd89203ea0f37103b5d6ad494a94f0472fde7729c53dd752d652343eb08ba3d1d33c2bf2154d6e591d1bd5d7082e45b0dc9876fec66943e8d5d14b50884d0bdeb2b2206c1fc3c406ddc06705ba97a51888017251c7b4f90d124875f2e9a4387108d9d452e4b61d05494e887a273cf78fb5f5f685c1699076db7a8923cd26c4aa9a1bd74534a23ccadf2601701d67540da8ddd594b3381898eefaece31e288c15661f2c535ecdcb40ac1a28956f7d1e06d91582d72f712c0b9c7b35febaf9586a35e0702d055fdf0edcc51beb3ee4108b796a5c96291df0e50eee97efb2b7375413285ab1d2d47c15be17f8df716eefefc35cc21c97949f45eb5ba8728728eeb6dc3aff3fc71975e768cf711507a07177ab689ff04e3ab664ee94a596a025711bb1467082a20a435293e0035ed45e2cb761ccba69ad756296f4ee36bd193fae7f94eba36df31b42283afaefb1096183fdb3ad08f03928e44a75702c537718636e26410b9922bf7578f236b7bff3cf6799e5e7e366ee1ce64d40f930bafaf03ed3534b35aac0e73555767458a176ed885fe061dd133dd646d86cd3b7f5848bddad892814e8cb630860ff67ee269aac6aa43c916117779f7bd3cb131fdfa66383b0c975695fc1594687eab70ed4a565739fcf653cabe44ca1a5ca4e94a1f506d4eb3eba365551a30c7f985ce136418565165d9c07aa4523c4e76c98de8eb8f8371a6dafa72f6fa7bf1b92e9dcc5dfe125496d1ece309474db46cce6b08a4ba267cc15db3c02d1c2a20fdb8a44efc08ba27730ce92cb6e1f18eb0beb5e52c68d864b5453a4895d98ea86249fe2d1499178d6a5b84f0e2205c8931db1267dde8f3c72cf67064139a0ac4d7635068e27ac4002b90d5265d906f2569f635c576e78d525673f02754c09c4d7e595402d1550661651f58eb638b15d409e9f74a2b38eca4b66d0b0a654cb6d8693462a521e15ebed99f2805072cfe49194b1bf9945d12f5f1c0e9c4e2c818c18f9be9e93b55f7aad466e1172d9eb1c35a53b361efe64206ca18ed7dc18026144f121ec449e8a102b9a8877e5837663709a764231aca2d335534e1335ead0fd16ec67db92aa0be8b09b96ba8694c1e4dd28e261befa50ce15e9a8943da9a39c1af14f1245fd309aefcca68f861c4f5209abee9d40d77323a38bb09c1b576b22db3ad2a8c96324e708ded49da0e4d885047ee16267186f190682ef9800b6a5ff7d9b97eedc2f965f48087dd5a7f207b668f2d66242d0e040ec0d8100716b86f87afccb5e8259a6dc523648c3723a926233dfe1ef623b8d031e367b4e1e65b28e994cb09beabd36a2c3de04a6ea1bf689fb547ec466b79732360f550f9ebdf296b9c552a9b0fb191fab7488e7976851c1e12b75313f3d01b13e7dfd50fd7ebb90e9b9a523db5fc31439378e1c2ba8c372dd5e546296d0c74eadae2b803675a8620ee21c27eb4f5a30300d37351118daf4aa3b6916130288aed072bcd10b6e9ed6c06a250694ca9680e43fd0556c963b2642a61faa74f6928c696404ddc081102cfed4fd24fad887fa85700ccba225871b1442221e742025390e0ec3fdb4cf447dfb810f29b0abb2c89a617626991d3e178c00df9e7f3f623972b740599b80882879c07c3ce3233a0579856df4970bd98a546013c9648762d10c435f792c68a5c438254c09dfa831bf9c54353a3a0f6b43d606c0b1266903b9717c1e926456027c3fd1c3aafafee6480af7df22095deb3663185ef9357ce02b454c5647ec7f749f0e4de03f0415f719fbcf5ac295d6e0c657912887cb98043cb98ddb50bafee309c16cc4d6a6028ff3380b3ce651795df1938fbf626ac5124cd46b4fe014f23f8cfcbf7ba222a68f8e84a909a714a9e7f8f5171f69ea0a3c90cc3964b621fbde3eae2ee6a1c5db940d4bcb10360aae8b00ca2ec2aecd9140b6d7297475f12b9bf504bb017ef8f2f752fce4239d083e365a5959f40db4e80bfff76efd927f48e9023beddfd1017a3c4062fa0d71287b243f9f9f8625277eb12c29320b54864ad4c2e442a340797707948b8844ae76f62b397af0d222d5f37568eb2e1a9db27853b45b22c88ea79c6e4b422d701f925eec204afc35367eae7acf5c0d0a50fe60edcebf3f6d251af0bff34fc402586f575dc961b65f038c8fe2249de0e6340f5032260b38ef1b58125fc384b679cfcae16c8e9c8a782eae646d21a1d3074133cdb94b187d8ce901e8b35e71ac55e931245d8b2d0b9c0c48461b4997cdebe86e79fcc7633138259ba7af042153860bee5a108a0a7109c09920d5e7adc1b69d9d532a2cd49bd7e9f20dabe95641435c4bab12fbdeab1b90e47842135066a5f3a784980ee69c1382860a01ece77e3a12629d39cf7e0a5456f023719d94fba01d0aacb117473fefc1fb98ea7d206ea13f3247a11bc45ca39130bd126325d9a49fbdc6808a2eeb2e188c04c46211a3a2f29db2f3103f318fc00e47a7595383679cc2823f56665f708ea55e5c11a6af816a31e87cac1582a5a09fd3f17861bfacd10d018a317cbf6258db4c87bc10d5597a701cd62e7c72b858ee0af49d9c53aaee3890ca889e5f839340112f6d97d38f7ab7dcf9c9fcb8a641e0198053f1fd5ebb4a8dc294ca0e1585384bafdecfd51a332c79beb9f8a0877f120c185d0ae2c689030bcd575ae8e892496e6330ff7de374bf6c2c457091686311ae704ae2443a71f7170f12ba18489448a025b7544e940a4af773e444de90adb40845d1016e3a4b11fed6eea0d5bdc799ca6851150110bfefeeb3e73e806a3764279e78ab0dab30694ad77c180877132bfdb425c07418f0f8abf1ceaf8205d91cd749fffcbe1cceb3ba36643680c962b0a540cf70c61db8734edee067d8f7343e12881c2d504ea9b541d9305120a08952fbc6677cba0678a3c00e504d069c9839c1b2c4576789aa18b099b2a9f010679b9954f7a446b5a00b3e7ade1502cd6a9049855c4d7dc9965b146c7853592f6a278c542236390ad4b7e3951cd3335d6674d240411becac25404e990665913539342c34dfde657b3cca117c4f418496a94a2749492590f3b4551b30029290f81d03bed0bd559cf35cb9207502c9669d52c44fc0e3c5e090eeb39fec0595e2bc63eb60cb48c598843a348f7a651401814631febf6abb6c3a6d79bcd5a9a965087c674a9a30be1d4d1349440a4c1a7b091678edb589c0128b41f12db62d9f4bae2b5215a58d03a588f24b333f303c6c792c16bb3ecb51cdb3a5eb9f422df762c444ec1152ce0e23c60340cd199bfd7b505ae95a3a1f909b5f59a377d1d22907325350a02aa375a11b667ba9fa3ee2e1966e613578773690c26dc463cd9d6122ed40ad64d37e4c193679231c2ff057070b30743583ac95cbd15f2a980ca86c16d0306cb8a3709cdf073aaf17d6e899ac52d82201fa3000c7cbb088246c00d7cd4861f7be1228fb8fbf61770b30dbbb02cd83af008e5adb0aab5839ac990df1fc582e38cb4e49731b68cfb2c98f9f5d76939ccf8a2bf7c81c19d2248d91c66d8e018cb0ffed65852f1080041283240446ba587c5e9cebf7aef5166ec9d0c8719b08da2e108106a82beb4577e889e118ec71c1186f92e416dc515402d2d1da49c581b013bd9b4a36938003daeee79f2500e62193ae3269a1549f826226762414090f342f00ec46ebc0782ca550690ffd6d956b041a92d88a7329426482d55774db98a30294798cfaa58d51a63f25fca11b5cf3f571aee459d081c2b3a35c163cce289da317a1937fe3c8e4efb91e0b096efb2c683ba0d800018dc7bada2ef09373e2e10ef672bea536e54dc6a839e54044482f8ddd90354070ccbc77dd30236833a5ee2f880838ccfbe156b196318d33e704521c2a7adb0ce42aa7de4c00056ff456878c26b57ba1896b822da36ec73307bc1f83f306e2d3b1e67bae463c5523e4f934ca80563e52167673603e33b3ebc82cf15e4fe32fc0cf55f10bccebd06671455c39bd8324f44116cd423c1a745cf3c719d052ce9c7f685709f8924181dbbbad281f2d32bcf6ae967d39618bd744fce2f64a4d7794fb18cca31b4536c1afce3d808bb4aa968f447be6828abb7cfe1d20e16c8d2acc839e269fd053662098f7891040e3178e203273057e56c83586230961d8a26fe34711fc15574b0a209374f603bf46b5cb9f7a1a91e2bcd65508aadbf3d8d2c1988daf8e185e3450b8109c8533e5c6fa7a04652e0a15435446a9368d39d40eb6372e8dd2d0e5c5dbe3a2bf4a4908488fc31b9e12f600283628bf1027c7c0e63c739be3ad0e9d0b0965f530daaf38b1fdfb83522b05cc625f836d58ab647cc57573b18dd4a0d0775d1a4ff278a44f1381dc87c22ab5bc2786ba7e5848c0fa57af1e29d6da428ac8ff9e2a3fa8b2f12a018aa75954bd16c4d959f17f8daf4b2f63443b1703d1b81fe148f9e7aaa23c6da2cd232821903721c09f2d6526e357e9a68579d4c8b0e2060e9e437466fe5cd705331caa265332033d08b2fc710dd99d76cf4bf400074c51a00acaaec6dcb00c741f55061e36ef8d587af68a8c8c5326ea4ce10704bd501693a4911f07e1f91421698bd435899fd05d8fcfdefa1edd53b1040c122508e1cbd6af732d09d90a3d33ec0e4d7783487a4f4529cc158b48ad8bf44f6d6d1bb57013223caba8e5d2db044399546fb39e4e92dd2e00bfb5c943ef0519ed4b49c777f6d64c625c4abe1d286411806c5dbfef4e68606faf43c824fe2ebcf3891e3c3ffca6eb73de512ca0bcc912a73aa85bc8d63ca161156a7eb8a8bc749f447e2b6facdcf5a249dc203cf7c899ea3b3d63d490ebde7bd6f7aa8289931a9a2a655ce255124513a85e62167051ca60a7d455388e390968dacb6799ec3d0cc60c2d78a7559adb40de0a1789968a69d481a6fe6fdf605e89c111abd6ca51b5ba545bfc5446a7d6af04c536cbd798f2dd710448c0f59b24432155db7bcdddd5024e7cffa37159e787e017dbbe1c167485eb1df3440d04c0c0f221b8b5404c2f4b089ea4a46c8a1124565d179585214e03ac654e5fb6f05865187c640f47fd15b913494ba08614d2f587fe61fd0cc496a9b006370b21fbea8f58394142af67ca063e55bc7fad3793b2ab7f612ed69b921d9e8c6fa4908e0f1d2bee72e93086fa25aff1192e4a19c1f8dc671240f89debba7c8a42b933d875ef7dcbe659f56befd7426fceb587357bc4b704c221088f654ccf7d03b1547a9cfafc0752a19891df6573cd55123c054393ba92361c8ab6d372dd125cfa9d61264a7b75c1f850ea49c7070dffef2ac040810a1098f99ded1e1b73ef0ccd9384e937e0d8783f1a23bdeecb4ec3f491e67923a678c04511d222278af754d5c9abba5cb32f2ad869b377e14719cc1309a2321dd5f0967889cb75d17dd217f0b439092d8b2fd2495b6b8f3c8462792d9279cff9ad46fdd08f9fd1200a922981ea26ec1d23d7ce3cfc76a5aa451e2cf0d9e013a00d914fea99deeaf497214713ddd44c470a6ac871575b02babdd53fd9b1dcc08ff98dd7498b4bb2b90920587e12525f78f368a126813aff88575af88a10b4335d768e2caaf528b7bb4682c9c14832cf31b4e30f87eb6c40ab9e679135f39594790b9c50942d9c9b4506306d5f9e743c3fc4b641db1bf794518e7b88d235f22fdceed359a0993f2ace28046a1c103c7bfe71b81f167fcce13aa08f76ab2f2f70343e37db93ba2cf34af9f4613de1ff49e5ba404d17354da5812d372d43e504436a334264fdabce01daf649da34ec2a3268fab4a941d1e474ab0d1bea36e269612f02a539c47c6011ab13a8cb6087f05c3747c48d4853337c2ba635112c4bf83f7d45b63a8506f37de133f3637a37c1f34ec9ad2d3c193c1095530039cf0914e5b131311fd72138495e88839f3ddeaa0bc0696aec3a2710630d8ba1321b6cb84d3432fb423a5471b11b805168fe7760cb0e84459ca0432baef95e0e00eb617d46b92f98418ea1cae0af4e514e4413a0c6ba83fb79ab84198035d2619787aaac14887547f0016e205d6242cf06c7223213c9f1ce457b8b5468ad87a91b6fa97f11dfa7897d20141651d62a4ee215fa062d4f77062f538bcd9f5699033813d04b50b9a0a34e4588248dd0734c5eb13f9a61a5842f086dddb379aea082e026cc278be1dd8ee56884d16609469e85d472f828adcc247af8d47caef34cf1a0515be5cb2c6332ff4420ddb02091adb1f53c0c1a74458bb79e1037ccfc6c62feb5c98df250ebb9f71a82b88ca952b74e3918b9e98e70e9450a97c25a2160554a6b5358f2f4965c63a93de8dcf041bb28d9765286454254ce52a092ddf54506685bbb2be9e730d0e17543188014e74d52e8cc9ff15b2797a42dacc340ce428720c507e1432d77017915fdc36bebc58c2b9399d0f23f8b0d005a081853aa672b76693c4e3b85d42f3d8dec1a9ea175b1612b8cefbff95faa8423c5f20c9f9bdbbfc3e853f56501d7b16f84e1140afbb7b1a565eb68c402f50383a422fea4aac5ff9153dc41778969a10325e8de280d2c2391202930215750fd015e89bd79fdfd54e9387204764759426bd36b8285d5ea06676bae39d99a359451a992af43ac53640243d73b2e9e8e7a5435c3f43536966764eda4f59c5c1bbd3c61b8d9d505bfe0ab6c760186ae09dde713610e0107105ea584989b39280b4cadaa2e3cbe1b6fe972ee0e1c326a59465b8a04e601dc41c94f1d9ed561830287074237c198ac692c401657b023993b742785d9d0bad116196d7c948af8f12d69841bcddb86b5b1fa8ae0f6bed8fdfdc7ab3eb125e28f15797d2bf488db2627b5fa42c8a8fcb73b0b0aa32906e9e10bf826e41f897995f4dbb8145455116700ff0fe81358285259c120cc26aa2180ea55addd66e4cebb1e6768d80718b06bbf8b70a6b01f4d1d87ca78bfee845647f0de210e70721f332b437281504e10d441d92c9eca88b6eed346a95ace90bf2041da01323b0576041a51efe9dd3f676e2e61bcaef595e272c1400ad8951aeb47643d0caf18548f806cd3e4728e7dbda0b8b2c03419fb054d6dacc2db51670f29de5f459ba08ede764f93d46e0d659b950ae22342a375b435d2f75b8c74e9db66fd64c82cb09a0803dc5a96610951f66a52246a9e5f1963bb988c8b0c17ad825563e0df4dab0916774b17d27812f6c8d29bf525656f48c9e1aa9df5d6cc0de9598515ebe130c8ed2838debbdde7f2897ec5af5dd68fe91182d5bb51e1b04683fe8dfeb75c5806508175af83cab9e81bd0cc7c6f0f82c3091422182c1e9ddab506e2a0ce0f9b113486ce2802f229eb90225d2972238f3dc874349be5eaf8e83e6b2d2d63920ae0d0f2ccff9749860879469456f8e22a690aad7517773db24e3e39836a9fa6a5e7063078a40c9b8138c9046e9ebc7e3d2cbf6708752d25b155607d5c595d8ba8ce68f5838a54108460025ae0097f1df5a96070225d94534b5322967ba7902848029e67efed2698679b9281e8949e42019269d8090d5a85f78a1574a4e8969afdc62ed63a6e79efe8a6209f8a01132a6876925425ded4de1e886379d1559883572121114b0809f4586d79a208e4f394859b188602a8da4d74036b255c6ba84329907ed33b289b6273264768466b9b125d9f7f247ba1571eebec0f078f96d4dc9d96ce74a6498a90d44cc3e31ad3f560db93a328043fbfd74b3485d81b9c96761c82544031013b2f0df870271b52e65f2848e178fc92ea4d8f2c34c807b91c232163914018639c8679965c1ff1ed39a93208c496c5f14721ee8b365c6596ce592dfe4d1d5a62ba8b7b1cd270a45305f327701ef351f7d405f4d22abd1caa7e9415ad5f172a198fbdc53d77d4e814da45ac0ce73ee8882a539b60ed4032491ab76b79d4c500f358ae8ec43ef5c8ad6563f1ee5c6dbc7fca1a3b610768913af84b6dbb5926174faf73a8fbe6a3c1ddd056f8d747c12b91f98d3d46b21b8a933e63b386865a5232f484d574f0b8bc728725988a69dc8a0f75bcbeddc211757a1394437b39c1c268906992aa51e8be743670b005a84ca2b37f3b4559319a7af98c30be56ef21576a476ec5139081ce637e526bd426adc30b84826a88ed80eac47a4d3039c39b7a3e6972f4c32047684582a113513c819285989f64bd197b70397edcc7440d067db1d9eb0c84749ad15c71708997617e2f4895c15265c1c9edd584de8b2617f54c7d4b5b1a1202aff56af9398e0340ff159af3b0a341bbb5b8d8c5a600595ec3164b5951aa06c13dba37da39862dcae6d1b53bbaf1bd51bd56483feecbd0e0dd62fe6f7fa9bb8a4333335d23742cd45374edc9d2593ef1bda53a2c087fac1654f80e4ecd7ca1cbd3e8f0b6cfce3c6d7438d92846cc09307ed26250d93ea7e1923eabd3ecc80ff690d30a6733b50a2973b8a309bfc1c1682c9497307a4b5d8b669c42573398f2291bb3060a54efd0932bc5e59f37ee871ffca22b6f14d1c9d2eb596e35ece5180b1b0e6a378c897203a04060407c1891185fbe814472c9b0b4656be897730c32022290a908b1eada64a7423cd1be3d4996a98e0cdddffb0902c691ca524e9811741819d98f24483f9af6b8daad6829cc30399afeed93f16911ef78ebde899701381061a98ae8959b33242743ebb03522d3962c12fffed88e21bace3682c0700f4c06cc02dabf0518c9956fe6e1893a1d96a0f510155914bd8d515c869c149c300b1349a7505a1ab177ef186288852437ceab2230c85a1ad1d2eae124bc7cae96e58ae49da6aa386080a3ac4d39117d8f04e1d6d839616398b4d01b38e6819a325ede009484f7795d31c8e331694c7377fa2efd2ff07f008ac53fe539edea00ece61eaa735088f3ce478596084271eddac935b17e7489146c07bd7240ea6006735d00c532a2bb6802ce740991971a27817a1d4bb221ecd4fa29983cec1aadb3f2970c68c16201e26b040ff62dff48a45cd71de413cc0ac0c0722301b78b353aa01988bbb3743b8d74ba98523c970fd847010c75c4618a981849101e451908a2debb1500d8a6355f7b85ce4994f38cba7f3fb6bb6946252339f3bef2cb1ca2043d5d0ebaddc7cbf82c95849ae1734c73f1fe339298c98c8711681e3249f2cacb82e9517c56a2d56ac76cc27611120d8fe34b70a184ee84c3a8ec428716b5df3ea4ea4ff5323b297a845548ba4e7dff6f5714e410507d6399193220ff1951cf299ac1ee4bf843368a0ed89a2797d292343deb94aa37414b6e3e9957c084fdf45d8f621e60b330c96c6f940904b1e26ab07704b45961a854ad0e8ae82fb5312927cf6a67eba1d6dc9f7d669dce2507de945dc135122475e43f71978a6bcdff4b652a1db3d75e254c9c55a8ca30cde9aa68e66d2b0b4f8f86b6ab81229c4ed35afba6bbb8af9eaceb15a27c241523a6135f9e07a329d2c0d6fc21ad582e3cacece9683d5fa67fd00f8b3e3c1d95c530b6fe6731cfbb13a6bc5aa30a3a7927f951f6b6beca8706d76911ee2e68296dbfe18a40bd6e01726708bd8ec933c03304ab98d9541dff575d225525126ff86e9f63778851d83f99608255957aea1e78dc6d9458d3a6e403e8aadb31bffe406f4f4d87159a0f4a8eb2cb6d37c0caf74cc7affd7e025399138e096db77af668d6e77846d9743236b53b9e7c624f14d7e86706bcb1b1320875aabaa6444e04c068d43704e1f3395f7b0da8ee1eae0c700459d1694f1cd18187eee061a681d1eb3144115ac3696b13d06b9e70a47336aa17fd85d95dc378e01b337552365f14d106989bd9841ce63e0e86e90294b5c47c002c99d8d3324c901069f691f0fc199039dd335da07a9255f985b19da5837f8ec358aff0fd949eaa098d840f4df906a528c69760cb75befbfe703d08729a82bb7447b6cfcf8c59c6510b26daf42ee3a7772ca486bc6156cbaf38e9727f587600bc90cfcd105ac46bfbbfd899c363845c048b5479c95293252c5bbb928d0bf6dc61436c175135928e6089b01c1c7b3740fa4acf7e856bfa0961d9a21914997a871915c88a5a432a127bf41a139c5e418df67da55aeb90f645f431386ce7dd295b5207d496650235b9b18208fd992748cc20356e5ec30b34d9d2984287bc311bd2ca695e596486f0104c4dd899169dd1bce6215adc996c104b6016d51db18da729b0b293497935fdc49cdc934a52f6fb8c7d90cda79ce6ca26fd87016fadf8ac8dfb02dcd94fc48b2c02eb78ed48c3ad570a01111ad1e30d682f66b04b000a8b990e73df380ac7e15d7fc1b4a199306ecaf8a236ccf20c8ee347708eeadec32b2b52ab800201df78e62a6fd050b783165d6d03bca67061b8ebaf6ec7e247d7c06c5880db936bb5783dd8978054692e14140796c6aab3946cdf56d955453b5c13e52a1ed18409094d7c8b64ddb78421c567843c62dd474059f5b7e6c3e2d5394c70aea85ab3f62c4577c019adddd2434f41a1b4ca17d033ddb642b0cf37ccd0fef88bd7c453e68666e3cb1eacc75429175a386df435bc3eea7df381fa4193c06a3152bc74ed2d64315a199baaa12f8fb519f5072ca91e82d6051b1c0c43492b34da0df121f2ac3603322bcfa15e3e53f734de583e651acb8bc614dfe51335e3b39f207c9407b43793e9ba45eec97fdad839cd790e99c95fd8de7f3464fa142ab6c53142ef00ddf894281967516d5b8f829db658a5018485593067cccd24735945bcb7d41ab0239cc727e5a6f3e448f4e5cd4b7a2e6e5bed812fae08a1d033286ec434056a1cfc6c6cee7c4f867c1685117853c5bfb91407875db3480913e1b33d03c6c5d189135164661d6fbcd6f4ba9a4b2217b8c801ee5c9ab8d24ea54a7b39b5c7a074441fcf080e22daf8b4f660d900ed36175dc297352b433221e447e9bcd2eb5862e6ff50411a57a1845755004a6d84c16a8bb79c67d3022eb9501dae54d1491647720978e9dca9b122c439675ca126d3ddc163a0d314db8f23c1efff594480bc3a810ece130e234cc1c76a0f1c06ebe224e4d1160814a944caa4b29a1f214f69a18a60b779d7452292600ed2ef63075b3a2b516d7cb0499941892b26234ad83ad2e380e2d1605b0db7ba8511cf5950ab19d3def9c4857a6beba82911278a30e277320435a5a6485da259649b4b765d3b12204c04d03c33ee74b84ac32dd578100f9f25fbb6758dbca8ae63c1c8a404cded3c030ba59124e7823f79f202488b5ce1ae9fa863796a0471a9cad0bf97bf01a16e5cec62f8309d58d510cac17af30620c874a430b961a570d8ce861aefe6638f8a3782e3b64e6f24e888ce0688e1375ef8b2cd804dab10d3f9385f44ff86684c80329e730d31a326965d181bdb87cfff584af6ed88731817e06ad23740de557ca4ac3839bd112450d261f5a57e07b2753424e4e117090275b84e90acfa5f34f512dd7496e39afedb3db14962b945b0d8bd9548688b4b450c4a97a314b906da5b3705de8ae143eb7151b7632e5f04771a0b7c171e63e4e84b7e18b42cb038600258856ad4066bc205a83352facc7985bfca913037c98fa6f9f05c781df409865f08e0a5272a7ab3718623be2b8bdee3ab7cbb8dad6d4f8e26c184f19465916586ab6d4df40bad686a738b5089f6a5c8127de8711b82c0cd6ffd8f4158e35332c7431bb92a4b92dc75a024f11f632d5d40feb58a2095cd0e53683834b9dd9221c880042c4413c3996ba566700eede9d5bada86393e355f8515fc2e78b888a31e13c66a91c14252c9fb9321642f8ab9617386545ee6c7774e768a17e81503d0800df0f622a4331cc5c41d148ab9d17c326beb6beb3efb9bd0d40ad4c4beb4e8d17d50dea7485da2ec9f641da139560cffdaf35c4dc82ffcfc8b10080434abd5bbe7d6c279145422c6a8c4a4fc4ad1b4e10099507312c196508644182d8b47e97af3017f3bf6036f7cc2549ad50db9f376776a2edb7ea799896f4d02aea29745b9521d2384ce02982293684db6d1669edb01ec849ca6e7cd2c8bc674b7a0004396ce1ee72c71355bdbc64233adc089539246c0d37dfde36c2e44af82c0c522fd2693498ae0881c3cc1f0e9428c23f709ee705f2dc3b19cb0bf5ec74cc585e0e019b5b910b69779c732e1cb3dab2f51958c56aa9c4968276b224b2ca0f54f9d3995b4cfbd987e868859fb7f815c0cc81ca72a6d12f873608b0a0a1427376856e023edd09d734c54fdb13f22ffaf8141945f978deb5ff6a2512116e5e42401701092d0a4f083482b06ffcc995d93f9eb8b5e3f5f9a1d04e0b517fa192c5757fb8372e17aeaec789fc015f67e24337cc02377c2d4db3093e0940c8e640affbcad8b8311a943b53b2782ab8c33bf1159ad33682c8ebe5560e50340cb59b743294eafea054bf49e3e9c3874067a961eed4263092e95961472b90ad03d561557927f823817c3123d295b4b0191230cb7a47b4e83bf4e6406c4080b6d9371301458d39aa65d21a3c15667ee960f83834a164948bbf5b8f9642affcc9f7da27f8adf0272986b37934d09a112b7c675d6845bec4c00772d21fb2c27737c7d6a1d886ed8b74b7b0e3b3d1bd1bbb809fa9131d0407a11b3896694b968a30dd887a9e074a24a7a3255611d1dc2d0c78949d387f49e347c73ecaa50780963e09d9c46a7df71665f2ddf9c9ae6d34d813286eb21132be0f5c8b8d9e5441eb3d8624d7fa58c945c82eb1d7c06eb270135881cb4050efc2f35cfca1b062afb6c0c76415c451e0cc7244a180a418584aeb456e89d86fe29569f0c0aa0d1fe797fa1eb10ed869701577342630b3d626ab514b9e72cd450e27bf4bbb128386185aadd13089345ada62d03955d23f197aa490022710ae39e40428272d46f02e9529ea9c93d741716f9132103b028cc01dddc1efe90952636b65c4d7444221af6f506345d2d5f7cdccc281423269ee297df36150130a54744aeda30b9cc366dfe3f0b64411952c0fc3a0363ccb1265e06c57839722d840f1be99d95100355f4554b85e9b1e9b73f125d40c0aa730b6fe13eeb083c61c8d6ca96f2eb9d0677c791d0a34528339604b505aa6a67e7064f4cd7785074656bf0a6044061c82bef9d9c18fb19e2f6f488934fa6680ba00ab5f7c56c97a010460033871a6efe9121e0d6aded2f8de373f0890581c07b293cdc54ab3680873761dd2d8768181de65490007c248b9fbe6ef9b4928f397c9ef3892daacc5a7fb5266126ab3720c80c07971c4c1eacd189c539b4f24ae9d5f54f682f3a905407d6899c9269db2b26a9d4f64f691609b2d69a9b37d0e64642311b70b789bc58d239c9555ce7b8f50999b65e4aa5e89a68ff015ca7f2b61cc6a20e96c4bd7e23ed35ab217b7e32e067311fb8bdc0cb2d01d5d3b1f46bfbe596b1323a0d4aed9cfb3a7198d850d66bed711e5a69d1bb36c087655dcb5c127e497d5d0d4da3d8530663b38798367974d7e59c4962054f2822f008e77e0f3b46ce1572ab98eaa91cea35e885ccd849680a8c384bfa77f029819fc3117ccaf727997aa36f45e19ccc6724f7edae2142867a3ade69b873cc5fb9a9d239e648bf8a6723fb6f770f43ace35e1bee087ca384e5406d9257b0a6d094258c08d51e6027483072f193aa1915c24ee55251e766a81d0076a1926c0293d6a89364c34dac6ebb619204d16f0808e25fbeb8b95a13e20f8fe5786269106ae2d77228a7d23c7834d28a26161d61ddde78b89b2887b9913af3f2475ac73eda1f7fb0f4dcfac0888d518667f994b966323e45252d50b0ebaa8abe6e0690375e880a9b34e3796e65c9eb972dafaa66f4f00bc64cc60283a4ebe928b5b0d210e34780e412da9fa9804fa7def44710e0036536df1d0b820884e550d01ab9d85684e803cf58ac04197cc3f8e1d30b71ebe341ed00845c76c6323f34bca557039b9b09591f8d262386015b32d365d18b5c8346b0db337ad4cd1559a18e969ea8f0cdaa85e011d1225cea8243b01c521f7bca6729d4f39c308e686dfbd5fd4204023cf9aa9d3fef67d566c2368704700de3704d57b81d9bb05dcff79f42e9be72dfe1b90b726e4f80231d31130d608c8787358237a36911ec2e41dcd23a4ef124d219f70027fca7f19e09ce22d84dc07a5aeba2ee1852170cf07f26e1ef5a6eacea9e303fd0d07dd82fba8e9c3dcdd7613b3ef942516608a52c9d1d4af1c5384e350f8a73be9828a31faab3250d1045d3a5bf90e79461ec76a2cc490892199b488788a16ab61440d395bf073e309729ce7ee33b11258c7aeb5a544a98ad0bb7de2efa688a02521ec2ea1a728c8920e522f816abb7232c6cf9bc37acf23656217408a3425bf8aa104adb5ab462093ca330b468c42e75b1aca9423213f5583f61ee660ed71b7d8b88cbd1c94d33038ea64c4f64ab8b7941e954036de52382cf91b025b48a1351bd4f693c61089b7799031df86b52dd60d3f5ec0a9215ee2b4a86733249ef1cce4c8ae208bfce7d2416f7faf88a233b0df3c0a239e4a51fcbe0778c46a426555373f0f2d939a00c87ee7223285b26b679734715713a2694a244983646140d46b7f97dede2533e1d896ff58678821d139c422c070a2a03fe23d7f6577c39f1ef5b3c023bbe7abab3b75022f4e2c5c43f9a9b61f6fb2d9266035a76d0d3a943ec1d9797dab81e9723db60a6133ed32ea0b958d7f5b6d2f358d63e3b20b2a5f6bb9a5e123b1b6a5709c490b237bd044ac890bc7bc0d6454fc8b3623d94ff40922b68faad3a2095317cfdb2e51038d1d6958c0c5206cdc1a1b162a3200789aa949f7e2c89027872012b1dad49db1faa9c066c75d1c4bc25d44e4d4367070ca003f6f0435faeae6e05e413e0828ca80b3a4d248cf0713840876e45fce206196dee60395f1e2d67604dc862d94f2a0024c0177de1043bbb6bb36317162c7ba9252f4935085164728e3027511f76cc16bc7a89b4cd2f0d1d4cc5ee4c4e3093415da28855977173427b2c24161aa2f1e9e109b22ffe56f002e34b161f369126f12df6021a0ae370f385e15aac6f2611f3c12ad7811c7b7b1ee2038d41243826c2fde1e5b5895859ff92c38906dfa4b47709085334127eed2f458767a769a220a1acb9b67f36d2a856a5e585e3db0a9582a27001cb062c1e8c5cc378816d0ad6e2db4c72c3d6f306303bfe33f747f9dbdf37f2b1c4b511c64197e0e754365d067f098888d240b66413f27ac2ab0c165ca927ea8052645e7c106f4adfc70455b9af45248c1b0dec806b1b688c78de145c43839c57774cd53dfa5043de600ddd5d4ba568201b882bd713588f68031c968928c4db39a9e1078a332cdb67acc384462554d8ef900db293a2dd170951517afc66c20f2e27220cd4208755aadbe945d4824efa2adc3dff8bd7c515f68799e11d96a96abdb29ac0ee094f8ccfa582d6ba6eba45efc7f4911d55c38f47a450f745325c3eb96fa5d35a08d0e50552ffb436653bfe06c353d2e89c1975f1c814420b185d5eb26a17aa16b797e755b81c218bb6758af86da435ba9c9f64482caba29447df0f21ab1acce6c70caf23dfabcffb3fd8ad4926e8d996430260b422d9c1367860c4d66afb85c830fc57192043f2ceb0a1c1a6b9082e0ebfc08ee6173aac670738ee8c8270e071acf0dbed1b51db044cba70e03e0c85c183a96b8fc3b2c47a56c89a0bd0e3fcb36b71f8cbb8d695dab40662a94d002addb263dc73c63e13542d4c19fa9984541524029c66550d4e4aa63983b0056985b7e6f188ce2e4a7e7441b0dbc4003d9e2c4d2d4c250d66a0003dd87d8d1e0cd73cb546974f2a85e965e39cc6eb3f29c0b7ef9931a529af8f04c26d8e33eb45a1baef090a9171bbe68ed63a085cb07910b00a25607e81587172a424a27e0376a741d82beb365f8d8c5f0abcb980449f863e827fb037f566564a9acf0d3f409d35d9f6a49835312066a4f3dd6e622401736daec7ff621c2fb85ae5f29bfd45824f2683069d7b2201d920c44d9628e2c9003ea7cc8f8c0b8ba1592771b1a7be2302bebfc647c7c4058433ea0e1ca075c24915bd2fb98cd428b8788e169476b62b8def259103f9bccbf0970c3042cd216d0635cb56dfee919e1496c67bc380565144a261c89d7def925157910c9d740d8510fa138a73eb98d494bf185b1c998331ff139ea1b973e1434c64e004e41671370bc0057e3bac63a61e6117801b7d06cb74661ace9952dc766849e1c836cdc41363a547a157aae1937374af8c88e893b6396b86645f986e2c979a072b0717172bab25afb359374a1c0b52c3472a76b1e0a14d9193280aa2da5fae1413ae0dd0a6aad73a5af615d5b425898ac6af04881b5910182a18aad1f080fb4aeea635f046ad2b305417ffa8fef2969f5659608a20775a43e01bf70152b116cf4a22f2df0da501dbe053db1f481bf399eee88d0d877c0c513f7193c66c4b2ce1a6c42d36476804cddc680d234ea870ca1f710136a0acaabea28b90e4775cf852674daa4529c909525da54b9f57b6e3f44392b79a10365eff72f699935f5104e11510d0cee6b61635e7fcbc41e1c32f53a706eeda689b1a08ec005bdb416afce5cae76244a9e9c3ed20a04a68ad12789c6377d52a84acebc4370ac205672065a4aa01688a06e8179f4e0c262fd93946f3c5582b2fa4776b49b0750319b5df702c839a2f2c67196ee17786eeb8ebf77c6f84adfd88362ad4e1b76ad396352fda33696d7947fe8b277b4caba136d7992b0eec49b57625d6757fc2778c68b8dfb4f8ab945ddb303e15aa0708b4ff3147fea68be14f012f3dab6e854d5a6a96c76c1efe62fce17e21a6e4a41a239040f0eb916ef90cf5bebad4e7ecc639b1ba3f034c1e64a1b58ec41ebe7898040664db268cb23e6386035c72c51fee1f44d2bebfd4a7c12121c3abf7afb8aad16b26418ed7d941f7d3a94db07e69f9d13be04b342060c9387e439ce6d05599025ab71c4a5ac2313c36ca9eb19eab485d925821e159e79429f9da2886e233ef24e4fc5d515c2b4ca3aaf2893548e3fea4ceea10bb716c29e4a2a8c4cd00e9470b4f70a72810f7439c66235e5b818927441846ba5f66ab18af8da81417fec2548477fb0de8d7ab41855fe8be7793b8964ff97ce3ebc28099f2c8f868895e64682f0da2c8d867e15f8899a2f66eb3a61fa59890ca476e1ea03c564e6f5de8e8a2dc18c80280c88bf875b56d993ae5e37b5d46938ccd048f99861dcfa6f392abccc6bdf1d942c040e4f6fcac66cea2de16d09926b3c204779677e7ba12574abe1e85deee3ea1b5527eb6b726d07676d55d4009eda39575682cb1754ea9d25fd5e2b96b4f1ecaaaf162cff178628d3a8c23516ef7c9032a40d80c5c0df18ac4e7fbb1c92679bc935aca59969db12f60d40eb1b27a33d50bf462b25607e9e8643ca06077de8f575e6b438aa165449c218a120975ad62603985ec1e716853bb2a338939c01a909afb90af9cffbf3eb53d9d56d71f8f7b52214997dc57b2a05e28fc033226deeae6954f568b4ecb1424c298faef7c1fa1048de9b4ae00d3fa37348fab656b6c48b25437fef68ce4eabfe63a9f16f1ef240efe5482ea01de0e3666279b977d9ffdd0b9feeead8aede96f8c50f0e25315f00674983a023c01b435069d4d13c332661b235e5ba7812b439372545d218ef0c35cfbda93034f98b40c526ddaebb2fa95b53f88c8b664200b660fc7ce99c2e7516821a179038fd67e49ab083013cee3bc097ad239c8a4d0ecc316f58b5b02301101db711e9f7fcdf6591f00b93f08abe3f488a2e4e8d7dca6540f90ff543d0ab52465236b6914a1911f06d04c8d3a0a5384cad0a40e7f1163273ccc5f2ee78498d9f3ee65614ce19b835392725db8c334f4685b1f4f5ca50b9a08291487341707a5437a69035a4fca7ef32540c66360ccaec411f55581ea43bcb90c7abaf795b2a00091bd64166905391c3740efe97cc1336b6e9df89b5fdc2b26c9297967bf1bccefa2508af7420b6ab38d9a107b1da72856e8248c7a3958a2f6fc355a57e1dc58e79e12fdf7051e68449765b154a0eaa43f61d44db41ba8f83614291921b5cbbda1f0aa296956e296c163b67ea92152ec0e92f4d4c258ad0a1ab6388784c643a76f1dbb2aa78d7cfe8c4617180102cbecbf308fc34b77bfc7e9c4f8ec657d082b3985917cfc48ae437d644039ccaf283f03a5a28073f17ff06781bd6af8b5fa19efab6181492cdf83ad0ea20d121f02e8cc82a59ce2239b48ff51e28cf21e09d64fec40cb57a547197c0cce6a40e62ee05146a26fc0ddf382a92b2fac8d346aca491755916e8e706bfc4d64a6431e9628fcb6fa985865817eabc37b54445c9810f32104701c2e428ced105fb0996a3dc937a26bd068b7c1a0fd0498ffb0f700532309fc18df92eb0ba8be8a3ab1fd349a49df91f7ab6505dde193689ef218da6c24ff64512c3b94fcf78ca4388eaf93cab1b8430817fda0042fb2c522f5072bc68305ea094013f4e5f68b937e695af56cbd8e7f89f834721d21612bb35d09c64e480e5814f1c7e7086d1ec90cf230c5389226fac4ac4c1a8e3ec0d5ef9603703ad7ba4b7434e5a6d33ab339d67e07ecd3cb29b075f8f4b3c6f2da728ecba5968dd8501b2e50a5a088f91d17e6083f459113d8fd80925e56ef3354c6d81252bc54bc3ad161e496043acc51800a382e0ef9d4009ad7506c0bafa36e46f36bb873b4836b89e7e158261af7dd24e23b68a1e536f0d14ebe064d16d814cd1588b4beff63b377cf42ae01012f4e08a295ab033fd517710c447698b04cd43dfd0a29c6ef29a4e943f23c9fef2f16c91ad57569b76008fb590fcf0195b83e84204eaa83c9d2c7c68e3524d3cae859b377076aea8b66f99b672a03127c6a5ecc7e3a9e0266e5375014fe66e6c5af133e5b8386be726b91ca1c36af21ed8dddb8df79a2c2905424d58010f648c5c73b63d215517c97b8ec195fbc5f13d1aa9c12cf2c1e1dc31825ad3e559c6f6ea96ca593a3fb94eaa53a0bb8ab8047ca08305aa66e97af5784f4fb1de10a82009d7c72e74190c4634434a72083546e173ba824f7bd9ed8e82d0e324c85d205ba6594e66b9bb6d5cd1ab5f34cd655a8470da07e0c9f201f5f88709fc78c7ec8267bd0fff986fbb4b5ee99734a72f69c21819346e0dd14cb929094116d0162318db740917b870c0e894ed183a0ca8803f71a312d21bdb947f7b7a435426555797249968c76e8135308396c3a63f62adc62b3dd30693dd0278de2bdb0961b11c8aeefce6153653a2e0cbbea363ff5659b1295f08e270e860ec4a0607741026316ddabe9c0ba030a19ce8542a0692c6ca0dffd63ebe2c57ad6d777f72cb3a386c3a779445aed0b81a791c2ce56da1c128533a622bcf92c3b2654a9ec773b75663ce2e0a94fd86a4649d4c6fd1782ed47738bd46d1b0302d7645b8c2f5809feeef2de2fd1a2db8f69c7a05fadfd8e1176d1ab477b4c22442c2e8668a7d6aa13c7471fac5794499a9503e2f71a2d8d6e8aa831b000bb11218a125400ef580e4182ef30af966e3caf7546cb12fd0462b0c901c9302b585c0bd5016d3e5343dd4de2bc5cbe1271884a72d2e82b8f67f9ed6f6dc5ee8f16c1c1cb45021ef51c77e4688a206d00a3caa68b417f9b46adb579ff445de247db6f2b681fd14dd556cf057779d7594af477bd096a6b5235ce5a2d89e8a15c945a89874e219b699191a0bd4490b5de0fcfeb2eaae237865bc5ce6891a6496c4fe938e5542ce69367ccfbe20c9813b7c4490bddb5f0282e48d1286edf011f3801b7a901c79afd481fbd0485979bcc05dc27ef7bfbd40ec8d4285430e9aee23fe03ac7d7b44b19cfe83a9cb806ad83b0c003dcbbff3c3e9728af2a0b86e78d23d67b15002b6b893016c320a91dbea79ab7f16eab20841e796bccf89d6d0147e1dd835d46b354090683c943a0017348f2ec6e8a836312eff8cfe15c6c15fdf6f859a7ad00a3faf9f1640f6d724b00796e25c2ed6a0bd90e18d27501834dbb93893f8592ad9359feb4c8c5cd20940837b670c295be86ac1c2f2e1efd393926e8e6adcb9d0289b02723cc124346c8f4f01a49bff0eeeba2a88f9079e96f7a941368c7b0f87782e07a146a711789d44ca54f5d26251454d6fe79eb205fbf5e9414c86379e42227c62f49d48121fe56b8821ca40945f05ff37f90c0ea653e1d3ac4415d4600835d20c4e6bcb7c110df1b4c0f808843bc349ca12792a35e17d0251ca0cf59a9618005bddc83d370565a94b90dffe6664f9b3a3da9aa0832834d41c68f7afc936d278ad8bafd8ef9635beba4d510c744090c29dbd61df696ba08a80dbae8520951b4797db01126c81df2b63009376b2f49d4a44ebc4d02a1606b4c73b93918dd7405297eaea0baba33269723427f0424a8f7ced83927bd489d5067982f842300b5bacbbf15b8b1ee752c256f95e5f9174358a6f6114cc260991dee6e0e1dda957ca368ca92c7a2b64f12bb5c36ec8d006772c836cf0fcc88cab6d922c8c2d98580b03a37eae28b41fd8230b45b280f0ccde280a8324e430f7ff6c3820e027949edc4810b7fd173b407f76835e68176df80bad2517d6dc6f03de618f27223568995bc75a10a3839933b23766f822aed38c73e5928b2e38184a27a10fe0bcbf6a8e1c3d4ef63660cc01d2959e749b7aa418800c358224e1f8f530e886ff8d16f5bafd53a47e1c61cea0b630a2697e60122df0972600e69d3126fc809cbec5ec8665f0c9c504aed6eb69e93898c19e324baf83b02c1dda38a1c3872cf5609ec577e3039ac2e4674ea21428d08816a0ae10ac5a19f82c4a9d8504d0786e547bdf9e80c632590a2639955b65347f07ad8547446f58d4497c4d7987b98f28011e0d10dbbf6b37588adc8053d13c6a1773921d312ca887f142ad62a2a941e84ffab15113360a05800e9fc5b8cd01d4543dd013604a81a0e1ff15de31c099d5020318a01d436cf499957bd8badc59cf3e4d28c89fd6e5966ee3cbd09f8dfc39c80351e3845221bec942bb6487196f125f2c0f0dbb517048cf0237106448fe38b2dd1e5d9de552b22fa258811c2344fb79726055d7ef82402978d208222b43c4667bace2688d593d37accfc80dab2c66d8835cbc5ed270c1c49a382f503750ea27f7444092971b3494bf2c19888af030c74c7f86e5536e66b603e5e352e25c9f36191eb19de3d960b17a7b8f02496a6c1f2dc2d604edef995356a6b6d2f9759525d4ff75f3f0908e406ac6c42076b2e4ceacd61e931f91d712e6c2e89f28139f2d4297e186032587e5cfd602f1eb0a6a0004a2f29b7aba8c74e20ed940c10348fe46477ba29487b9967282779bbbd35488c75584da34867fc9de40d2f7209633fd17941e2ea3de6bd868c88fe09bbfcc9680f2a9a9568b88ec985f8089d3cd4bc2a7d403532f076805784f66e09f7846401598204219f7a4c39a643c890d698fe17eb9c9a7426c3321337c6ddbcd94bfb60cfdcff2740099f34750a4284539002ead525d9f2cf39ee9ad1c9a046691a2c556689138af781e73723d05033c64b64938ff8737711c70db487c699ce8d6a132bf691b15a6e3f87abacdb9ab533997f491313e894c4f0182e90ee7813530668587e4fc0c3791a1b30e06fd92852ba6194cc206a2ddc60c8414bf6643883a22f7b1c923a28c59d8aa9d6c5afb90588e4d6f6485ff3e645ec00660c58f28706f6e35bcb3ff2ef86c3cb026f59cd338c930c6205ebe84dc3d2fbecf0045b38a84013cc7d4e8ed97241125793a988e866fa269c4069d1be1448142fc3690e4da6a575feddd085b4b7d299dfa523e64f2a9453a0d69a9811a08e6ea20836fa9506a5b110d185292a9aed19a2b211ae58851c372621017adce62d61d4d06ce51347bef7313b0c940155127442342ad960ae0362614dca86fa67822f4d1faedd116f043993e242b733aa3d6500f47bc6084a5f70f42b61de33e3c6962b70a46d213ce7a120e2129595efa2213688d5a4bf92cac650e22400949b23a1c7051aca80d11cebbf644ac5cb829304f471696d3c602b51d80fa573f2c1d3e39d2b9ec5d9d908dedb22de336b1b0a46203edb9349d3df667e882458550f0186ade166904cf75e086ed72db32ab6862cfc37ec092ad39356c58bfc8e986fa77a0b8358f507504298f778bcda24fa6de19fa07aaea6c47294ce24eb766e590902366ca2b94a81a4673ed541c12cbc8c57e230a87cfb020618ade3f5b4f6e3c3519ce201788f918bc40451a1486daf133a04768517b84bb9dfdffa0659e0f4d6bc5b54b53b00e4acbf9a282f30d062e3a32f4da897ad91c157240096211ca943f1d2464cda996637b5a36d946281438046ed9b11ebd25b9cf3fa4bfa236e4f5fba6c91aa442a901711d83affbb0523c819646aa5da5406f500acc2665150f991f5ecd294d3d630c3252605c620f3d88f4fa15a827c2411500ba1c21027de8526708a4202233384e5531278380a57bc6691b03b0a8f012798433f12bd204b36039c5b36de056409366aea0a02d8eca4540c33e37213140fe9400bc54acc456896140e07e6271fe355f282cfb8c4d1820f7ec0d00db06826297429a7d74f52ba2c28961ee898be57fa83134e8bc424b9083bf9f315c0118c66ace3be5651c5866bd949dcc24257fb5b161e840aae495674634c5ea7589e62e935f44aa86bb894576591d2f78c7d77d6d4234f581334b02724add0e5b5bc820df2873f250f9ca2c5d4cb255336c56b4e90de6235e762d42d65066c57288901830c283d263e8a721392ce65d2eb8785c0b7a61e6a1bf29ce6756e93eabfa16f2e6a4ffb6725a526fa3ea88fb0f4b222701a9b0a8fbfc85469a76fb4d1a9af20afbe1caa293556db8303df1b555e2064467eb32189b47a22534d5ca66027981dd94e65c6963236f0519c66b54bdfb675d012dc1a8d18e024dccf579ba8a46ed3f095560bde44b910a0940866a285dad2c5e5a53975916f99ac2e4dc617e2cdb5aa61c4b650a348cb251b8205cb7a3868b1a92c4d321e45876ee74f29dec89fd04a1b225647ef697a4e21cb6541c634abd4ed2938e7077dc217ffe82ac9fcdb91813c5a609ffe7604cacc4e17747b726aa3946bed01b5bde59f60bf30060965d9cc38c4dc8587f8e3462e7bd296f9193e790a1efae47ddfdf6fdd77845fad9183324804fc14e50139cb51d783ca2c4e530f69e9953569ef1138f8e7ce30b931061aed94a9101aae4ac82c4b707a4d399f349e532dd3fe131c7d34d8119ebd33e205e767b0b62b9f20ca05a648d3cd1cb6a07f0c1e1937bc0cbcfba88bc2917cab7ba74e2adc93712d9e5f4fcb3aad09c4e41a8a0300424d98d182bf750577dbd03abfa603a2a3095e9d1f25d7a3dcf6e6e3f86c23ac4f508702d330f44fc5cf6dcbe217aaf8b7d91aa33ba2a46d14c1b24cc3884535c8dfae3a3d5931a9443e1878267d8b5b752171209978fcedbb460a8440cd7309757e070458267b8c1ae61155b98d4b5d41a0549982bb2bd149c54c9b141188dec7727d8d755cf55dfb38b8fe3adb062f085e73a1c16d66f50d617f62f621c41abc19ec23049068170e9a5c1d687779c2abfc834fa957262676070b9377c1f6314971f0fe986d1cb8ae059fcf3c0262d6e39e2c75b41549a9dd93e17f7a3f56dac41a56d9926ffa53d0512d93d4bf47312d825c458ddd206936012b034c8d93ce155bf53058b7324b73e8040ddf834709618336d9b8cec69b0d5ea88fb0d6e15c933dda80594dc9e3e8b4a9a101b19e0113cff50074b449a6eeee907e458e984a3e4ba7ed415542d9369d7a8b63ff228d292eaccc21c33260573152538bad52f7ce146a9d752c528bad3aca554ba3e80b280aecca8c89dd6c52befad5048bb97172d70aa12d6956f19b12cc273a04601f9d8bff822f3198151213c9f88668cfd28d1ba2912ffd5bb07a0401d80241d8993281c17bbe0f42f403660e67b85521b01adb8ac596a04c54c3e859017a033b550680972cf00d37c5943bd2738cd565f5c2056c884062f95aad356a5afa6698ef5c2c7a761ca8ded9a82d8533798fdeb8ae4943ab5e4b7ec14bee798abc79de7976bf242658ee3fe52248f28e6bcb25a5950f6b19389e4dbe7107d3e0b967d895058fd2c6cc80f5db1db2a692d8423e7ec8436f18bbfb74e5036e8333cbac1cbafc14bdc80d2631494fb9233e6df30f7802a58c68e92bb596d8bab39e290cd5dff48b126fd80e51ee56d57f3c0795de292672eb943964e20d64083e5ae326aeb517ed83d173b33733a8e0cbd73a6fcfc1f2033450d9f3e6b5d06f64905a55ca187ccb7b134b240845ff332d638c21fd3c525e4386c621de426e28d6623d8b15c340c1ab40a0629765aeb92951780a01a05be47e758508326c8c4a129a622ca0a5fae786103cda1982344bb5a753404dfe3a932e16fe1964b02980f19918e0153b3b51cdd360a50879522156c0acd7ead39f7d1d7147f9fb8867b0ebfd0b503201b05ee996a8a36bb30e2aed30e7ee153b080a372afd2d3650d2ae810310ca9c6606577d9889bb268705c1b18487cae1db7643863c7f6b38845b076f153a2e7127263be5fdba5edbd5d0d2fd4057b2df11d9de141adff8c599afadf32a8d40f6364a921d0ddb4863f37afe9a2d3f37797ee6023d38b53f7da3a6237001a6e2d12918504a1b81cc65ac6151476958ce6ed8842317e1b627ea205c32caca11be6102c9977a316222e562a1491793df1442cde7bacffc9e29f9f04bc01718f69d5c728d7db3c81691fa0ef2f7876ae9112e8700997981533c80f06d88c69a45f25d546ef597932db8bc57797490177a4cfd617f734431f93bfef9ad11fadba5bb21afdb5e0738a1b3aa5632819ed887317290c39519db83d0a70f6608aa3e623e9d5e4ee0ef38ba99c8b947ca20675482d17ff4d7c996d54a32697364154a4f87021860a32fb3493278a2becb7a5509e39d0919f97f32ee877a9c06ac67dd2325a6a96b496df3421261d45d88d0169852a6e10a41725b84280fd9d2190594a568db8b6568130bfa562c460b96d092810f19c8859d6fdaa6aae36adc98e6c158b7e3ffd1a9c4683ba0b8c24dd4a031855e35da6b8083074c3248a94d1ab11dbce2369ca8da4790b7e2641a7fbcf67d94037d6ab9eea6c25fb3a7c496a2888c757302b1eec37a3da286670cf6e858000b4b199a9ca1015aa92b372931f1455a04e2e7c5a5b6e7fdb40e032751b252d754b5f31498f3b008841b0ce3df834136d5303102bcca5c223dfd245c88bf6cfaee2fba3963f2be2923cbbccce3fc2ca25d86e37ebf88ade5682b804e8dce6c04c8703bc164a81bea228d6e77791c7a9c7c9d4bd9e78073013b52a45efc3fd21a72642e52f1171ec35cf9c0aa769b29de06328c6538fa0a2bfbf966fbbd2d782c2f52cf3863b5e907a5fbf4f33f172a9fd0df238fb44347f91287871de83f50b44202e628c853519762ec91264bf22c2f24cd9eb1f7f4f9709593ef620cf07d35a74994bb82386cfa3204b901a5d86dd2ac1d2b0d52d9b58be5341531f567f8a9b11e3af0943260c3e45994d2a836348a3c372b3b31ef3022a10560b93653f1d1947c30f9dbb998fc510b356ca864ad8fd713f622d95a0cb91491a4bd181c1b16a109d7d561879773b9f3def0806057000c17523c56a00dde9f6a32e62f6926fd4a06ebda429024c1941f3655097273710e431b4f6b1e156ad4cf1e3bdd174aa615a37b089e904a5699e67a0fe4982514bd3d477d69b0b30d4ce58fe881f5a9b1372e574066f8e53110f8a9090f1b49784e675e99cc59012a3e8cdfd22a77b9517b654e818abf618c20f847080ad2295127258e2653014a11ac9c6c75aaafbfffe1052cb80464a9eb1aa21ab0c04ef6701c4fd17b1ab19189c2f18d361dc3269061241b20cbd5e28c0c0a5f44901266648be9c92c77c891504d24b318aec7cb7d82d83a218a0b3b28127fb5dd0d8e24b4d5feb01e2d37bf587faafe4c7b5cbe61bedced10f72a612b34bda66421c24b436d84ded94859e26b6294a76336e9518326159125f1c23201c56cdf6a44c8cee3e728cb62b0d3f025d7d77244e5780cd859b0036ba9cae051b71458b2a7e3689e9293c265b77f1e395fe20ca5ce7885ae78bcc1d740227556a40f59d827b9aae58b95d79e03a8b113180e49b83cd181a86b62f8bd66205768751a8dfd5b86673e156a31db9d05d922d5083dd79beea8a0122c36c9f223702d41ab3adda3f180c4e85a169ecb099df12f58d7fadc2efe496f433915f64d1b10b800c86199975cb4d40168e81c59eceb2f70f050413fe0ddabafc78732c1099e8b6ae2c762cdcc2d70388433801ee291532418689b93a8598d32bf5daa6d797b2263c8a2bafc4574d0af2a0a461dd2b89375539378136a8ccc504d755b44fa5aa01db125bc5c71a683dddb3632868ab54ca7ad76b8a36d3ded59d271732ba133772a5d298c6382f4a9667c8b7c860148172cc4ec0f7cad6a9151464fcfb8c36450e8d184f12be4b9046e095fd0562a9645fafe023a94000d37b638f3391aa1a0666a3bbdb336592012a312a52fdcb315ca31aeb0a88a4ea05c36c6bc5125d902751562a1ec915bc65ab576527d3ee5b11dccca9d894069052fbd3be127b4d2b4325072a0ddda0af05d503126a99b9f667fdd60e48761175cba5d6cb1561e60a4165fb65c8e4bff158a1cdeefb27a7247e75eb2cbb5da40baf6c1db2348adf8f3f20bda11d4bf486897c124c84c2f6a8d9765bc987c6861a55e8c5ac884839129b6ceae1563d8b02b4539e2d9200bca42ac8d0eee3068851e2523e9d9f91b17779bbabe6359b78ed9e6e9ad52dc827286db836606462f02b5893133020ba66a7f9e6b7fac7ac2509c901308c0ece0933e1b996404dc6548c5c7311e348eb923dcaed816e70abd8106d6e2b93e0222a7d1499a0bbc1788805a39dba675d51f8842e41af5c1095e0f5219aa36eec2b5d4a2766ff5ce5614c2bd220717dd567fed4ff9326bbabcfede64f0da9bbffa97f15e193963e004bd8959121b4fa5cc1c33294bd05768c452937c71c5b6bbcb97df967927d4a8a142c05f898190c0621d1ce0332724748944539655299fb144aff92769ec25ae5fb7854d006812e2a87c70bd36624a05c3623f812787801ec096d2531d568a1b07aa346502f6ae359e72915b8422ffd46f37606c8d0edba4476a0414c2804cd60cabd8ca65ac37f9ebcd6c1f19d4b01b0e8a17fedda94fc00d6c11c9f40c651f9fe782b2bb87b7da28441e8ff92c9a01d981abfdcf2865466bc3fd4be5a4006b209c6e8e1ebf33410261735d74d832336d15579a0ca7a3d6d9877a5f8261eafe1aaf02911b2b2bc8ba66a41553855b18f70b4d2be3418673d7ca89c0b417d20c8a9d649cf8d9fe06f2846b344228d9d36e8a368cc942847bf2008662dfe73f564856be7e9bd00987e4563b5a18709941ca6d8aa320cab53a08dec1be78059384854d0fb8e167a396170a52440ea9f4dd4b409c554e0ec6af5ed09220ea2776fab855c959e268309ebcda16ac04af626c90052a116b492c7b8d8d16e9705ad63dc4b803c0849b50768a0a34096bd2aac0224ca5a4eae3a40394b53088e0bec02f23adc2da4b21d9ed4a5846d8b5f6928d6013ec2b5e4129fc010544c99e255b652cbc7bf2d2d8ff9eba5e4d82d1e42a7b1a736d6ddce1acabbad5eb96c1a4b4448b12fe77d136292258b6b09c2cf1260f05634b8ee1a785ad61731005aa58369951f48cc74b2bb470ee8c60fc402fef4b41e858733ce1256f23f72b2140f58f2e1ce32df18d3551fab69a92057897298f4c4a26786309f92810647e7dc20e81ed3c0e01e2f284368931f8872f3cd7939f04eb64097249ae4ae3853b2f17310602f22ee2794831f87dbd4050b0aa6a84ffa758a8dc1e651cc2d68636c7c923ac6bf4613dc7b30b0f6d8dc4f972f321506d8b067240c1c9218e9d946556b3fb41eca1af30535188862705cfaa75b3bbdcd9fec06b12ee4fc623b67e60facc73e9e44f42fc9d2d86bfc7a16fd1055b65f481022a00fc9357e9d90dcc19c191a78361b995da7aa623cb966f2db9d21d91301df508e5a12cc531864c1085acbdfac0a533cbea2979dcfbf7390629aeae4d6eba5b261ae017585a3dadd59b002e7aeb8c3dd8a5180381acbc51e7d033e16b93676c93d11a004a4d44430964ab923918cd3d4888730f188c3c1809244186e14f988fbec3cfdfcc3d1660ca562d3058298b246b42d58e263a36bccbc433a47f92c85c6e33c0b605d1a21472eaa85734e1b4a12ce80e680e6437874fff3630b647044d7739635536e7f1a2b4263d144b3ba34d55b34cd4e1e980604f28cd2d84f27ee63fdaa2c83c6028a3e97fde2ac3e4c56525345401791782e6778ccbe62ef929b177a10b8070e4516b2844edd4ecc25bc5f4bfd12587a397f6a8b28fd78023a52fc2ca80a8e5f011db29adcd42e7b2c91e9dfde3345080e0ba04d946acc664b1817938244f311755f7c9a6b35afc653a35cf59b147c85ba6187474515c1fb312108933f7abb16eca5a5d9e500868d8eda7b5d1276d4fac6d74818b39160e3e0c4a755244f4e1215c60639f606c31ade82689854e32d3d3b50f1090ef56a502ecb9e42a37be4bdfa47459a10156ef17257c823430c3d2f049b35aae3a9ca598675e8f0baa986289ad7f84300e5dac1338d6549227e5419c8ef2283815f8abd02f365f5df67d12d58b6bf5e90bcced2636140dcd5940baf37e65a3c0ac840cbb206b5f53ab28f6a8b3cd0dc42913560427ea1e63610555bb7b3263ecb1014d56b681d4976c448655520f563dd36fdaa9646fe0b0255e58e1ad323d864d8782fd740e18f8c84a37ad33d13946a9d5d97663d9fa6b66001960afde2ce3d764097daabb4e55252092eca815ba29a49a4039c0cbdaa9f708b94cce305cd400fbf5944463cde0bf463d0eb5e899bcd3a6e611c2c4cdbf6713beaf891d8108e737f511819d987c924399b812c9976d6294df4f80ee000edac5fcad09b8969d1eef8e5c21a9c5d812d0e1b3e2554323aa2011587d3f27efe3d9513c1bb4357691200c6c29ab7105be615b4469fd7d23866c1598a4c853549958c41c5bd6a2ae8d34119573f250501cdf6ef43ea321b520085c5307f3ef24ff964c6634182ab195346abbb14bd5fbfeb2e0833f566fe686277c2c21853bd41487570829e7be66877e56a9fc30c3b14dda52eb411696dcd9aa8773a532dd45b60ad662a203b38e4abb897dfe21d8ff4c397b158222837de32300c1c57c9383e83a5fafc6ab8828b8c2aeb7de0b5b80e1fc12585d407d49e1afc515a7cf7e2d68f5243d8d823a41d8890d25976e1c30d0bdeafc5c0501e8057216c6b507a0013a494f0a8244b69418ff7513f2ac5b46ce54031f8f1688bfe29aa4033ce622475c3d5c951e98dd7efdb7c1dd2ccaf0b36c2dd303ff5fdb0ff8b7d0377fdbe434abdb024b68fd7d43ac60db4ad9e20ec0537fbda8c94160fc41b827ece18a8d4461e0ea2f43bdcc2bd6858fd6092b8e872acfcefffa3888c07618bb08a8a4d863e570120ccffe13d3ea28cd6ccbffc35face5f36ff09b41f23d94f3f2f3b1c52f00320a830dc3f1e786bb13471786531d984a0a42874ea251e7c42166824af7dc875825c512131fa9b38f9dcadd34aa29b8904bf8a7815c611d84132cb86ae0c73cfda49940fe49a3b5561c3a1f761d4a8669942785ea5b89655680fb59bed7059a2d0b9d83f040ab7762ef3c2251f07d542aecb34deb59ceedfd20c912f3c0c6923ef60770f6f21a479b3857d6e5f1c46121e20f5a1070c2f9034f99716462836de03da72d50580db7bcd78439887089064d1484e24e19a5fa3e5233c67a1cf75b3ce3d8ce58a15497fb65cd1deafeab699b25efa5b41b51a6305ef5df02c39ff3ea20e4b03f8fedc9812355158a1cf3082d05f1b9b15e29930a494a2f5dcfdad07ac48cb89d87066a6ee8d692c561ea8ba8b8702d6ba1ae70212b29142567b1daf014bba12ab9f8c70ffcb8a567a1d3ec485d5600584d560f328fc1451d6e71814bad8f79d0667c59b66c08e076958a325305fad18ae5d25eaf8060c7fec74079ed1246b228acd7db4e21eb8030beee08d892d8d013eb343b0a26da97d4a88d61f4530d6e4c80aea019fe7e2ced930b62e61590f9618bb798883c6f1aceb1db0abb4516c846753eb04acd789546aa26db8438892a160ec67077feeab2a643a50fc2b72cbb8b70c5de50d0d1e189a8e04b0a8d1f4dcfb0f335a4630c13cac9c46070bf7830c946cbc2074ba061dcb31ac266e709bdea96743061ed832b1abcb1de297094c95e5e0c0ee70cea831d6e17ca292b4e8e18c8b1d42748d916e486c8592c0a815b9f0d6392ed12ed6996fcfb51562dd1f3924f6e590ee107da3060e0c6dba750091c7c5a07898437b805a02683f958c3978d22363d17debd9c650a1b565ec4502f645f7de49b8e63aa1f03c65682b0a06638322593b8e81a47f87ada565cdde616851a41da31c8428313b436a035642c8bfda47ec239fb0a0d9c50d21293984d0c843c8b30483af8ef9e7906c875040e346ef056ae2329df70980497456a4b1f2add065ccc91ab2f219d453fd904abb35f20c67bc15b660d23ea44af320a9f605f6d642b4c21705d949981bee344df50df330d0e952a28e5a9c68e5bd27ceb269c104b2cf2fa18730ff10efea04b5c80ec82647e7c0109ac34e9902be5e5c5a8512f64b689e4310213eedc7d54bdb879d064c7481d48988c562365991d8b9bc644cce0f0bbd4922df3149c8ca5f8c3457baae2bd951274808bb66c6511eacd4464fa88c70a7f76b612d84f239ab87a173efabcb1fec251745ae8ae63da1a514c03cadd88e621f30ebf4d3d27940bf1e778c04edb3354ac2e5a30f66280048d1f259d0115f561e5903edf6da9011a23fd06ff0ff5db4b40e7c2d1b8996d4df38d9a4794870993d1fa3b8cb76cb6da4da0878fd6bee7468c421ac0f20b1abcac4e3aac67f6eca943e358bb4c4e69408b632e1a3233c04e52a8647618f33a0196b094bf21cf1211183135b9517e96c191b69e5965cdff98508a3b355299f54de5b1978382c4de4a10852405143493738b782466a166fa8659c0b4bc7904e06fa9e8150aa032bd07f700e1dfdae5a969da52c9cecc5957219729c02817516f1703162678ec9b068121f601fcf0fd59187ecc1249f157f3606888383351092f5ba2a7b0cf0bbaadf5da6f747646466f471993e492f29785960bb6035a84c2b5edd83196ed465037c7b4ad9d2208585860b7a430556d570cc4d25a1953def71a7c79e300c84705071e75eebcdbe1c0b99eb4f557bbee3ff7eb7d5cb5d2c46fbb5a45ae0853097f34da4bb7d59356c03dd50afed25569c1004838b0ab688f6bd8738c74b5b3f98a44891c67e0fc6f156661dab18b7813fe3e5d3363315cdede19fe8bd404f202a2881b28e39fa0fc7cac0e213a18e939755061d2271e457449336f58cc02d2d188fe28db7600ccb9cfca67528bf445ee90b65203309ff58908ceaf893ae620562da421646501ba0eb5c1274cd3d4c6097390e5e2f5b0c3fcaeba69a6f1b3ebac662accd96e7d307fcdfdd299ca57cf63a5295b334b1c34fccbf72a4e12e84386873742dae0969d109a9f42e65357f92ca5248b9a8428afc922642573b1a73d450e86d75d37b0ce9fe3aa9f9ed831de56679107276091e6eb981db267133312522c3a9cd0f38d992e1b57d630602130f0237a05663636d3b4eacaa64d2fd6911da64a4f63b6014c94c6edb041a2e0b981a5f1ccc10b3531c7b72ee44e8cecc7797b3c4ed88260f911809ab8709da32e6687d1c56bf2f7bc3c1ac780c6c653c2f1ea264f9b8ec9c4c78567311e1e1b9307fb756173ca1e45c088f27b5c20c3c65bd7ebcfa83de2ee63daf157be8f1fd721f684d2139bc435ab341e11ba85fb9e23b1be40b315c4849d790bab03c631169b3a141f1c75e8dbebd8ed7c55fa7223380d40750fa038c72999876d9fd5b9226f3dc6cab9bef578c6a2667db564634cbb0dddbe293dd6e8fa077054cdf0a4e87674f33872233a96910ed3ed72f0b418f377a9ca75bc0d0e721e87fc5d881b0c203591c6be10c351aa447e431c756c1fe80667fce1e939c888794d75984b11cd853034723df193b8fe42c3bb8d43db2c3560fef5a2a20a847ea614e21faf5bf0736a8a66c8c0e2589d1f4c86e19a61acb240667ae23ac9393b22d2550ade5e154886edf3146fc44e112a303dfc03de60ee33546a8fe53ce16c3734a14b596bdc97d393404d3a242e218e340eb10dd9a1691611a3e1e26562db27ac7e6af081a9874246cad633ef4e3462b64c2c1083b45ee275e3c86469dfc96e95a4f0cd8bd0f8246bba7e123bb258bf2eaa95cacb41fa11e08d05aef4748917d8d6818e22494e7d89000dddac2320ee670815fb68fdfdddc288580d4c121e3f675d6bbf651d52587ba9e9a7e9f4a4e4602a73a62671d651d52496e69373eaf0f5b4f40ff52a261be340c525ae1b8f09a9c13561c4af684499fad8280d586e9a867db0fdd72fa0c7b8793866b6ba754393c1a6b1c5fcda18d84891e238e437884a639a1f96b6342781347a2ef58494587f1859b7d4743d1c6e2ae5484b7ebf390671c79dd7f2e4812e76f03799eb16df389e39cd13a4fdb2c1d98a529d1746df0652b9e9bb2f3abb003765bc2611f0bb7e4949d0561a4dcce385a4ca4821745e72be1aa2f949c561976e4ab8bedab8955a50b5d57ecb9dbb4214be728e91dccef87d5fd8fe44e843e1e7bd489c6369d768d864b9c26d3e82001d494ad72013a9987b8a1e2f8a0e86a9c1156e408dd625b195f8d960402808da90539e0a67cac52bb893460364e843f01c2f70c2677bbf906854ac8749a023e4469d6abf4597d04cbac2f884cb2b20a9af1f79aa07408b45069c7cf3a618e8feb452af252bed8e50a8ec263b76466fb43498cbd97df406714a571e992d8c4c48e2448180ca1b212834f178c9e3f046dc42fb206e79b7fa81e1851e9ce4acbfea8408d59ad301e57d640570f5c020ca0e0b2cd3683c37298b116df03404ab975c8edb9da4c9090079d99bbac08044b8ddd1db9b69bf6e7120621606f68103adda65e182e515e213c18101197380bdcbe0e5c61af429616a6146ddb2c704a230aceceecdc604f8a2102b19a6affa409a9520e2d019e6df3cf04a1cf838c119fcd3763bee386de4bf134e50225b2f598a4c98af53d3c19a574474a908649c202a16fbd403ad5740b934c20111115b5212525535178af6ca65f8dbd364a3825bf1fc46055646a1738bcd6f4468e3b51ea14b2baed05431982718a4157742058743ac4c928e256d984f54d01f41ff33f3a4cd71d15f381c71ec2b2ac212008d52d5665e54aaff487d24a9a9bc2f633ceb7a1098f4f77856775a6d3b9fa70e7924eb121ab64148514989b43d91aaf046e0965ea05b1fb8979c242c08001f5de1c015a46ed937fd36f711f134b0b535ef00d03a2b30a72a97fbe5c4f8ae85419a49fdf457e8b96ebcddbb1a78b46a046e720e27ac17b92a56ff665f754012ea16d9c2e51c5ab489a73fdf161ae5465527191ba4b84741768082a1d6212a4444fc87e78bfa2d5f8519d8c2c8c9ffc3499885721ee5a01be2a209e98ee9b55f3ce7f09142f0eb1b642c7b3e787464d76f4f1c375a14a7f8e3ebc1fd73621cb72896db24bfa538e46a86829a8731036e70fe71f030c906e5e5ebfa467c7f9cfcf5752eea3c389a9e80465963b911e4384a415c9161996e19e7eb5f59b85acece1160f7822133550fd23ce35d0177b7e6219059b18e081a6a64b7fa87ffd1335f3361c9dd4ce0a4dbded70529cc87c6b47651329e600a1a034e1edecee507d71b7ec28e7875cfc213fca0447c70d872f40603d59eb2675f66eda713d57db0eedc5be915c8231d4012c04ddc2236e40c750c958a89678f70bb23de39a2d019eb085948ef3ace9de099de356c9dc8906ed3f1b49e99fdc17eb0997d35cb20192c1c607db77f5eaeab5237be2e5af4f55b994245dc0b29d1009db45fe6b410b29653b7eaa0142496029fe461f94555e3d904e50c2a2e3f4a2a6818a90b9dd6f0c40359883581666bda98097005fa0d8b181d4c009fd8c62f044399998fbb8bba11914de03c8d9bdea99f7edbcc330e75406f63ccd5f93bda06c75879b2f15f024255dce8bce8cbab5777ee56695121d905c84a27e4c96123643eae711ea3c9b8c224e452705521347554179c3188871073d054a7d86ea856a0ca8996da028d232b3ee199dca621717dd616634d4eec7deb8f9de266141007827c461a417586d96f30bea432d7d990a0f14ffbcfa0ff07b89c626676c53c7b7c7afeba46b34ce2333ed375052a79db8a4bba708973f1235ad616028eb316798b37ae0f0059866cc78e1d088660c5ea8cc75dcb6b5ae3370816671e50507e27354901bb83b508c097aae63b97f9804b481e35d4afc2ab680090710c476ecb069c231813a07199e732de6c8135a94e3b31a184fee08f110fda2a18db2312e476e8d9f57ae875f6e5fa37846d5f37f27143b63ba9b80078030c66241f5679457bc2f4fdffd397e582233343cd4e18b397c0d2bdd7245621eff96ca79611f36e880373a77554819f18087ed9a22f0c0ede91c09c5a30194e4a5f1a26671c601c4542d7dd93b25f4360d0bdbca693cb871879ff9cdd3a3c75447b5ae84af4a90209af1e8e607714d73762c9f0078f660f89f5fd4cb6be2ac639d1d4d2e5f34236c708d24f8fd77d9593504fd6d4f14d97b26ea9c1cdbdca043b1a573641d215db5fd84b7df5d88ee75f9107eff42493e416e3f7c98615fec5b555478e1ec991551916a901f5a6e53242cb3eff092a955b51451bc22601e0b4eb40fa36fde10717d695a63a77329603efc6785ba30e95890c06675702ed81622e951de6169ba67d3e2bb9183e45bc120589f048ab8731feeea3dc11bf51ed119499b22b307731684d5dd1831f2c6f4a83135e7ab0d45402ede611448ff832e85b7dd5af8a2c12232df2c230ed32c1748fbf8c30133373d9eaeee94a321334c8934a7adc318b675529154eca37e0a1fbc833b24098a6064dc2a2d786511848a08b821988526cb006bdcd029d25c822f436e60c662250e01cb30948f28d3dcd99e83d75963f4b774125a31bc5e08de298d57eeded98f071ff489f63435021934d97225bf586c10a1280c7c3ef3a279e4250044e8b6ecb76b6d26d4954a1ed7247b76cfa6ecf99ff0ac9336f74679e9a34496da6189f5a66f11e1854000f3b119748428c45d747f3d734065b1a6519a42d47cc7fc4c89645d6821935601512062f268a4b958e33378959320f5a1dccf43c1a73b069e89923e21133393d95b34b491c79a5dcb1bda9c869c879655ee4cb269ad1933494ad0c7e3b04688ca6691bddef467857aa612b0baf798644d9bf129e510b7e828fa2b20a6aa8b1f6234f5fa072f9907ee735540a662ad4931483461fe82cd408ef6d20927b0e7bbf821e10cb81837627624d76e1807e75aa681bc11a5149cb9d25db84f19a9a50a78ac0289fba3648c3b8c234ba03e7445a5fcec70bf94fcb75a9108a86ebcec44800d64835dbcf177bb96eeb14b2daa8dd9404212360c6b772a3fcae05f84eb7556f8e76a7cd4210ce665272e6ddfce023ecc33864d60c0c622f0449d90abf41078b3f4ca5de110badf36421dd5d3e050a6242301e4e84dd3b347dfaf90b8a74ede3d5087127e0f9d18d7818d09be08e8eb1925ff20dc30e0a87ec946e0bad54980c30f298b184a542ef73bafb569ab5e3d02be45a8e6ac9e7ab583d8c3759d401352c69ae6a7c3bcf474af506ea9352236255e07830fa6115ab1097e433af62bbc509f9ebb5999b405fdc78471c7ffc8142e4a27b76bd9dbd4dcfe72940b1ae8bbc70d5081fd1c39a2b4ebaf32ecd2ac8ef78838b81eba83bf170f5944ee26bb5fb1655a0d49f3606ca30c1412fdd400ea92a8539f4dd2cd3616e68088e802c32a21f4ea53825c671c23fb86cecc895739093f7d1e5eba303921aeaa7e477a1a1a66cf0f43599eead2ccbd6258fe5c33d1f5b19472eb9d595e1e8c1547f3496e1c85fd917022e018edb57b4b57e142bc8e16510067ea82eeb96372a7457affd25fa454b2ad54b98293e2d463d73b3f1666537a457fd8347e5f34bf32cf81c37dffa567a881200b13aa02d10f217f45673ad64453b1dc41657d9c3e6ac5074f32f16ce84dfd26fea91bb2baeac985b06f263d51273b99cc5d851e09b03e7f67bb613e23ef6b430613048e52cb129daebda8556a2e8707eb3dfdb38f27cf4eaa8aabee4bdaed1f66b1559b170330084de345f95a1ffb28f12879364808d83c0af94213130bab11321b08e13abccc697682516a18fe868bb0bd93bb6cb5b73dc1ed0d86831d6a4104c70a86769a26f1818d6954057718c77760b75249243c4bb11f568d9beec32687a908f3cb2055207ae45369f7deaf13e9f889ea2d29298cecb9e828810f85b856ea09adb991d0638fc53e53046b80724e92d18405e429666a4e78b1fe2b07f6f1a5c4dafcc7b819055f009da442e9d72ac62ee09d4d167a5c02313532f39a5af79a61bee2ee777166837f18d84a5d155df769eef4465f1d7468e164318db5c7e11b2eb80d65144e9084ba424a0dad061e24522b7ab12d19882004d70e4bd31a8ac709eb7d665eb6d804e0403c255aacbf2e1e3581b3a2a4d0d74c0e15687195db385b641566f1d7a7baf55adc8506727ab8bed1c93e5c3968176aae748acf1147337f219d58d31a04f4ad038adc0a935a309ad9a8036d893302ad4f3b1462804737845f18f32fa257843a7c961bee286e01fc1bb53d98539c4fe110e6191eb58d774d0560e00018a64328a5e68594e393e0e7fad133cc196a6f6e946b3f81b7bfc94aeeb6e59652ca94641d09eb08b5085cec0666923ccf1bbdd11b63222b76d33f673eca22074a077b38a7446864b25136ca46d9d8d97e3257fad9dc89c56ef22b0a45c962e3181b63b1586c8cfd40a6789f0ec352bc4f8761a9d8126e625ec29ca7611d9a4ea5789f0ee6de7b6f13d88cf9e8a6e3e1ec15a014efd339e7c14d54940828c5fb74ce79b074ed6892c3a9fa782920223eea0ee7d69bd06b854bc90b1653ad5aabd5aa023fdc52d56ab572adae1792a956ab71d55a2959c556abd56ab55aadbc2152bc4f8739cf2492bbf3fd33e525298aa228e21a16e7513277c0bcdc7bef85e5701249a138ae0383c1603023925e180cd64c68fe82ddb8a9034af13eb59b34455f7326c6c498181363449cd40ffaba888f5646c466757752f7607f4de9a29ee8899ee8af57cb9ee080bee964de3809863d4e67e7b198181363624c94b97e12f72bfb933c3f9bb9d72b36b65ca7badd98f8aa9e243ccd5650743d5ecc5f92d4b1574c7c6db3730531a69aa686c15647dcd4384e709ec8bcd469184593227293784a4236b349ea66e6b80a159b261f55a26aa5528db13136c6c618ccf58211511559893e6a5847c6242d25127892fbbddf5219a569522f930473552f95ebdef18e7784a956b079c449fd333549fd49ae12cf26d424f7cf9bacba2b51257b82e384852292a289926716b963b13136c6c6d8686138aa719ae429858383a3528de338429939568ca3ca088ea4389d334d3ee24c93ab461c15cea81275c04919211d733fe72182779f8add32285e4af9fe9933b3f0d2e7fbe76c46714ae325fcfd948897dc4b45bcb4a24666122fc9bf2eef1582c9622d4ed53471dfee1a3d9628deeb92490e96f275915eb591af451fb124f0f56f3d7692feda4ada95db660759ee774b1bd5a956711f8ce8c542d5f3bc504ccc94957bced524f5bbeecb8bad58a33867338b99f34d28df4ce2533549fd1e23b9bf7f3a917e77f5ff87429ecbfb3a7fbed624fd3ccf4f3ec91d6b99788a75c813afe79a51282a6585bb6cd7789e24bcabd92139f472cfa6c95d2e4a52bfa4b7dd955ba463677eb6c0491961ca9861f98e19c33ed2471f30bc8dbf20129635296514d1d73224cc7b8e77cc23c7f767834b8185f4e2639c63f974a8f12ccf02ca5c03e4c0cc385e7b7938dec673edd23b1654872645a453c447b6e5a3d061e3adc162e32d6cccb3bbba1f01bcc8f06af4e843efe696967453e8651a04f8309469fc360b435e7679e92e2fddbd5c672f7dc6b715bcd06bb23f00fecea6c9699ce4df4f24c99f48f6226e6406e56691bd28a11a49f2a691a40a4892bf00c010e6e6a5c9c8e695644fe21dc9fe35402345b2ff080c3db0550030bc3510e0064972d03b090da0896b47f60f0018866a70a192745f70e0778cc13048287fbe65761a8c5d9e0b87f4a0b97ca110b94524fa16d1c783d038be7efcb5606f350eff1630088dc3fff31b8d7fdefdbbdbb7998f565ea2016e729627c68dbf20327e18000d0978cf0770bb92ec50728c63ffbc2bf151e38fbbe3dfa2340d1a5f67e53763cba7058bfc6f7cbf0814cdf850f42eef9f88e5492f3327127de830d10c9148241281e18c777996af012c4f028170cf1283f9e8c6e567b880309e7ba9ddfb5f7c0d1759be8a503391b8dc78cc61ef19e235fe96961b379ed42492cb5767d7936fb8fc0c97effc8d0fc80c92cbcf707920337ec68c9b6f4809deb80186339ef4dc0c52bb90667476e089bea3034ff49c77bfa75d6038de06f592e8bf172f608d1813251cc7650efa13270e8be1a09dd11dfca1330fff16f9ac3621d7ab874e0ebc0f0d1a317a836b09afdcf2dd842c721f91a5124c80e5966f50b4009a5ddee51d3ba0bfe57968f9b03d1ff987d52573d41ad634c5f8f99d719a70f879f38c1948cc80591ec70ff1c26d66e33b28d14f91e8eba0667413926b907efed61191b6ad8383e61aa045899e247a960f4924d19374103d1012cb6747120e120b0b0b0b18e2f81acfe1f82c6a56a3d499e86b7cde308f1a9df1cfb722d0d6d9d69a486ebc9fc500452c2f4f31442496ef7a1fab21a241836445ca860dd1cff0512789a613d0875bdeb224ddb871e3c6b3320e1f76c608f0781c409ff120891ebfe8491ff591e849bfe2a550fa4844fa95f7f0933e2904f431be83c46393048b018a64401f04e861bc023e88278b5e87eb23fc22d0f311063b38f0fcc3ad83c4050c7f70ec03f430409f3cbd7cdf8d70cb0af850f2c94908f9e4040314f9c77879e2e1f230bedab8499e3619fefe80e040e3458fbf06d008fd39d0a28ff116d10d2f7148c7fbdff0897cca423264b9a40a5d98486633b8b389a1b82087dbeae388c4f8b6d9244d2b629b2cb6e5e4cd08cfc69b60fc8d1a62b85fc1bbf10ec5c34e310f4c83d490453564202d2ffa30480d19487fcbdfe801d0e02e2ec8b2e75dba05c7d7efdf02703c8e7ff9c221390061c8b97797b7f1a08fc64f1ee041621d3cef120097ecbfcdfcbfefa357daf0e73e9f4801349000f587e3b916517777b77c7f4880442ddfeff776e3e002823e1a24d885e6cf07d3f80f0691007df8f22d7fe3fd0b83d4905bfe86b77c32e3007d7efa7c0398bd7c32d318c07b60bc631ea218a0088bf0eb10f5ebf8fead08181fe87e0d8d8977411fc0e737ee64beb6449d71ae03b615e1855beb0a2a6072bc0ddfac1909e613f021b1e101f0855e3323ec18093b4ac28e93dc89f2f942ce0917258867916d780ee6d3f1393e9945fe64ee9e3b0012248867916d80f9ece788c00c0f024533a087f1304021301e048a1a7c409f402f4f316cf88020c10bb7d9ac839aa449027ddbcc04de8c77e9017efa40fcf15ba7f1f9b77c0ba041e36b7ce1905ce3e70e3cff440df0a7ef9f0fc62dfff942cfc2b3c8fe9f9696af5f620f6b3c7efb8edfb67c8c63995b64aef1c91ce3db0bbc27cdb8e1b2b5c0eb1cf1805ca0ff1fe31a1fe3ceea6edcb8716317da18e31b05005f621ee0c73806c356856040f15664648c0b0025df90d1d2528002644046be018612c84164641a6860f918c7fd3042a115cff384a450b641e33f5fcbd3f874f87c0b187ee1cdb887ce1fd203e077d27f3e20f86526bdc478661be08d1b1fe3de2e3a4bc45ec2200766c63fdf45a75962fc2c9fd3380a77631d5cfec63718d2f037404fcdf85c6583d7f21b0bbc96398629ccb20d592e3162ccdc931adf98f1316eadb5d653674e340fcc4beef900bc0c80cdb715bc1a6a32013eb4e3bd9e170afd8f46dfcb7336781f8e173862bcc64bcca3c6c43c3e9806185908cc8e18295022b867281ce550dcbd653ef2f7945bb7d2dddddd3b0795bd34f35e7912de727ebbbbfbb43e7d76eade7babbbfbf4d49c34f3e7ec18f7269c9481c49500276db5b5ca1b92140adee791fc31270262fcce7bc1f0871a8674e8b838a969eac968e601f12316625253831f5670fd2e1bfdaa8c5c5f7bfb85f5b52032b283a2faf214c449fd315e1ffc1185e7c3932fcf953fa48dc6c01039e485dc0d334d3ee4689a7ac858f340be7034ba5161ccf4b9150fe4f0c12c4319a3aed2e6c935c6d8e5c5c7b88b4bdeda08dd5292449ff614997e0cb611c899824c5d90a98fb623327d09b87ce24306e643c687b87dd73aaba6cd39e79c736adbd63d6879db5aec5535e2a50a72c07be525b1699e13e3b06d3fe77cd10282ccbcbd684003a6fdce3605f4230896808fe80e2df3117d6928eda4711ad637eda4b3052fdc52dd3b18beccdf549cb7c95abf85c81dc93ae7b7a9b6d496daa6674b6d44367023e2a9dd17067941c2539f3e8f3a83bce479af07fe8baf8d38893efeae717fdaebe9c27134f51e5871e70de3bece75d546366eeb36bca5b62d354d7d83c170537560b8adc4866da9179f3ce1392bd8b01faa8312c06f83d75ded471568273b54c04794763c69da3630bca1cfa1fc92e70fee43290bc271efdd73f3b9d73eec0c8a44dbdf0d1445c0f39d8780070cf2d2f921d9ebc771200f3f62f3ab5fb843ae31de5fbcf83c5fcff9a57cc3b4eaa5d6348c83f71a78afe7b577b2e0855b2ad72b03afa17889be2449e6d30d5c9224b3cfafb186dd74dff8376360c360b15ed117bf9a019492d43ded5e8061686544669a80983fbcb4f2d7a9ccf1e4bcf2b21199f1923fc55b4ae53fbfa9bc84f1f6e1c8454900607c38237f32645771cd90dda67178ebe81712a40dfa21e8fdef34bd78fc2bcf7d210fd99fc3dfa65af9b654cbc31f6ea98d08e6be95c05092e98bbe7e428ee8cbf035147a440509a5731a09a1a7df2e174fbf6d589e7ebf42b55d2c3fdba6ce6c2fe3a5f9e2bb3c644f03321c97b9f7814691e9bbf842508b2f7c91b1ca46c44b2b4f7f53d179f3f4fcf48042bca8bc644e85d2d58c975a747dd8282066427ce420d828206406a2515db7e5eebbfbee25e8bbc17bfa5c28e479a07b9f02c6f828a5c70d35d7a75ef5af735540f7d059d34091f60ee87e7bcf31deb8012bdfb4069ee739cfd7f9ee8311aa812764c889f2d040190a0405cceeee8971e8dc3dc538d43cfd0b75d371a6bb77dd6f4534af3e0d922ebc51329ddf299933539b6038c5ac7d32773ae863c64714f401cef8c88797401f3ea22f23e3254c7fc63d5fc32689fe4684fe463723996e35991ec9f4398a15e04a7c34a231aef916824d045b111b0ab614173cfae196caf465fac66a818827559039c97992a9f40f1b4aa6df99db982500ba3b36c0c0e4827637103ffa83742861ddc474f1cd38a99fe3baf7d11f92a594d71e862c7d5efb1652c70e2d3e64c9daa7c812e8b5efc892ca6b3f6569e5b5efa48e0a789ad4d144c22d6b0cd0d1a371f4db0f88f6f6b9edf3b1edd02dc0d0f3caa701c9810e428e68185001cff7f7c05e7b34afd97b8e7a666ed0fef33f6268f6c0507b99bbcf1733b590fb0b610f91dbc746ef0f9503355bf086ee1a7cd4f365e4e2a57ed9122c50d0b2167e95709206afee089d52984679766ad3a74f9fd24a09ca5a291823f3b2e961936132335e7ac1bcfa979c8006390cbd7200a35c7069ad95d65a69ad95dea79b5c6c948db25136caaca5d3fec0e20ee7b99ac457eb6c78ebe0ce36af66b5ce0f6a8e245162a35aad5632336ee96a358e63cdea4812252995b8c259e1e0e034ce5f2fe4a81f416688a5c4bd10ab358ee338e28c28140a85428d234af62ac9bf5ee85537c80cbdaaa57aa9605ee8aa5a36aa56a9542a954aa512552a55ac4eea9c7459cb46d9281b65a3ac53301b191dc7d16d644e66c7bc6532994c36933531f98b88f4c699aed99ae3644d71ae84f86baa5238a228ce26382f5114451147fc108e688398fceba1602e144a48a326c943cd4616ca63281c0f8542a15e30d40d8a8542a15028140ae52e99cb513247b96423186cdcd4387f9bf48cd512c7d96cc6c30f5ecf5830eb367ebdd96c361b45966b1cc771ecd9c81267b3d9ac67e3d833eb63cfc69ef56c146700937f631e8e2cd57a8dae6f85c6ec5df10720664ae6e05887a5623829d7f86a3549c564ad54cb52295fb52c254bb5cc4eeadcd56e3a2a1f9b6d44a86ca014ef73b5d7e8e3a5807266e3787abdb6ab8da31dc79c576c7c89bd61a1f2d624758b151550a53e394f2b852383798e0bef9b880efc3c112eb8162b2aa04b359f9c07b7e88df7de9a26549e815456be099b4d3cc7fb1cc7611e6e4e28f3c9cad759e62a4fde274f5ca7354df274e30447f662b55aac168b056bb15442d06b2f17c6696a99e6b3d296eb055bb1582cd98c0fb754ce562c17cc1b27ab75bdd0af643219eb084b64b1582c978c2573b1c62fa4789f4ec33e2b35f282b951d9bc9224f3c8ace96c3e2bcd41848142bddf7abf5f51148dbc6aee91dc301e5b89a2288a2ff1258aa2f812c557ce4bc479e1882ff163033ba9731e7cb59b944f52ffb36639c47a80fccdfb74776ad4390fbeb9ac0fd11b8f610fe774b2a6c971582cd6eb0563b55c5763b12c0bc682c158776e5c48327a497e2a964aa5523b5460ca2c5232563d494a894d931b556a954aa5c654e8a652a994d6d952a9c631623d251b27956a9c21a4789f0e4fea9cc7a666ae46d9281b65a32cc5fb7498f3c4242c87f125de9a6973392414e1bea3f29214c59818136362ac498f98492aa24a4d921524eb8675040a15508af7992b231dd6112f75a014ef437dda5858f75116f64ca7f3f3ecd4ca400594e27d7c7a7027d6749e5301a5781ff7e08ebe9a70b32c7254be09a5f3d5e47eda61cff40f4d7f3cd4f582c9a0c653bc4f87a73c32ca46d9281b65b7ffa6e648f7f1523cb25136ca46d998a7d5a0e024672d6739976eaddbcfb35349ada5964efb032ca9731e6ca9731eece19cda6aa7fd418af7e950f625c60109ec7dba4b9df3804736fc44c6711c31a539cdfa3add8fa27ce4436eed483133d12091164fea9c677b5b5f8232c5fb747852e73cddc74bf1704e27ee59c7582c36c6c69b51e67d3a5927756e6524c6a2a88e75c65136ca46d928f33e9d9dd4033427cf9734059472dd97171f2147f3bde756405f57f01158c42e15105453bc5752ba158a76ec7ba0733895ea82ba6a31cfaa619a9b9fd0f970a268b629dd6a9a30c8eb569d0276af99b1cbbb5d7dadaea438dd3e1ecf27eaffb4e723c0fd070c023ff71e3008243318ec58338831cfef742acf519e3ad61441eee3c1df54cd0e9c2829eb3c274f75fbee49a6e80af2f66da74cdf519d0fe4a1dffc0105bb57141d6b92e677ad3c5193a669bf50b461fdaa0da32e54666aa258e20545118b5eb2b535d616abaae4ede34ef5934ab86290fd9b591662572ac4ae10bb5292d4bfad78b4ea2ea816684eb7ea8cbc40ca19209161d783dc6123a40d19481b477cb8c649377b645ed8adba57b7842cd5958f2676cdf95dd7ea5ca5ea02d9048b314830832222ea144ed4fc8b5d13bbb0115207f5409e8f6bbc249570d9204fccea5ed5054deaca4bdd1255c0a815ae49691a466131b59add6ad5ad700aa3308d8f2646611a9c0a611eb5b6c02c1fcdc72e2f85dd7a7929c4d8c64bb809cd21466154c75acd6f85ba559e4670e5b05bae268021878d9a26bcc46dc2c350e4895df493b5052c4b0008e1195285d08658aa811612fa724e6e72727e77fe362f4c9e7542409e68ec74236c288f93ad43f64be6904d5c28f29c5d45be540aef4315f820a8e7da73ccc307fbda7325700161a4b58a6aed5737e913e0f44d2ba7612deb9c8ed24ff2fc4a39eb91ad839bdeded52d882cdf0fcdfb51271efd0ef1f003a594360ff35e4d7b35b5dddf40e4848da23f4319f49b366d4a5f1baa9384933458f9f3edfb68561fe96ee04d279e0f39854bd102e4d7af3ed097389f8fabf2518f1ceecacefaf558591bf3b152dd223e72d55579a98897a4a452cab82a7bae4a4a293d76458bc490fe19edfbb76f5008920d9ce997a010214392c079a293bf8f69126da0e801dadf8f40bf048390df7fc12090ccc86f50b405d1af81a2ede5497b799a73fbaec731f12fef30d95d572421bb6ebc8998ed73f243ea83cafbf0d1d097b606d21a615b604f207d5afba37f09b3329d5ba9f0ecc74c92858151b143ac80ac97f26995cc0a08da9094cd29c3f2eeee1a920d34170a81661429bceec55fdbcad65aab8221b2ac6c57546c0c10067845602824c3b7fd8b4ffbd0e7e2276bb2e4e9853c71b4656dcb45e99cd116554251dd9cd11645ad50d4ca376733ca9cadbc05adac805e52176db9fbbd9ec7691ee681c49d24fbd40a2fe5bd5bbde0ad6cdb4bb1af61fc1ca54262d0c7787597a9ecdfeb79f61dfb2052e9f450df07ee2b285279d151a190e789f7722c2c2c200d8dc7c56b2c9f9ca849b2bf22b1480594b9b773af07c4a9e08c26c405e8393ee4e49aa60b02e74946fb18af3299c3ab17b2b543646b43906dc5825dc974a4f054be3ea84ff6553e95a7b369aab2eb857e24a3b32a6bd1568bb6aa8cb6aa8cb6aa8cb64e3975864aa956d98a2b1fe3ae6ceb83c0263eb255860fbbae515efd0eeb501f48d7bdbd57da57790e7f15c747f655ec83beeac447b67e8cd7989754de7eb55f71ec6310080456988fecdbe0555a5f348a97420fe5a5fa36ac34d9d6afb32a9ba61a9324fb7616923516cbf6696b9ae66c92ecdfeb79a1d0ff68f4f232b3547829effdc5a0efaf42f191fdf9e5645bab90366c151e9dd9da6febe36fdcc3cae397b8870a6ea0f3ca77bf9ad656fbdbdb90f62181803c690ffa64349086e6f3dbd378fe76adf5b9c69aa669af81bece87a47bae7ae8d72aef0859621e2ba048260514d5ef78a0a882a2076c5b7d219fdfbe8233f73bdf018578feda91873de223fbb4e7d6b11f81fb36655ff42c4146b4f29a6805143da0f3dacf745eeb7c0b70c6f32669e5bd1f72eafcca49e5d332e87354ee4f767e46fb0e2804498b17425f035b80339df74021f357c05933f6949887e8019ddfc02090ccccdf3e08fa1d30887951994b79fbe1cd219d4dd30676eef578de27144af9f746a3fbf2c2b2273a9b267942a5b25565fbd2fe8cd9b74f335f93647fb626c9beb43f59f6678d976473a2a6c951da5b1bb2d65a9c69922759b639d9a252d94e55b62b6badb5cfb9cc6dbf7126c9763e796acc43868686a6619364bf03b66b92ec6f9f0ccd057b9c246b71e0cdb720102c66090021ee102ac41ce242745f0290a0675afac8e99479f2fbfd77bc0ca1fc0665a40e40e4cfb8cf395fce39e7045bcef80863647c482ff598263a844b29a594eeee3d5452a854f096ddedd6adec2692e482f22d13bc2967f5188e4ce65ebfae97be5ef2f29560a881f756cfcbb1b1b1112fec15735284d738b19e457122b963453ad64e381bbc1e3eea1c7cd478fefd72e8f73ec6656468d090b51c597b509a7c4c52bff6316429f4da7f32478bd7de852c09f1510f91a3fef045d6fe2375344d9892b507c9124bc9c56b4fafd4d1a94ed6bec399b5d7c03088b4c9db4f991e5378af1c7c4c53ab2669882c350fa4102ff5e8a36e1ddd6a1cdd3a5a49e3e876358efe2b03f802b43479250969a33f050c3de71ebdd4363e6a1ec8522b2147add6d14d1a47bff8d07327b1a2a47534ccd53afaa671a89c68716fe885a199b4d16f599e26dbbb16a09436c2d6c0162203d1be9590a58ea29be0ef6f1b2fbd0043cfa1cf593e27811cf5bbf8fc03dd638075dfdf4ef4cde7bb05e82790a3feee7e050c5d72376c6048d65e03bb6695e734cfcac778a90518760eb507a9f42c65a5e508f431a0efbfc1e205682d41604c0ad81f33bd4fe6cfcc3d10ba085c0534fbd039782903d2a687ccd69a86c47d8985903627241990363d0bf5cc5584e821daecacc0c997323c777737cc8eeeeece5c4bf74e7a7c24e5d370367873ce39a7e7fe02f31eb5b5d65929bdc14736b4e0f5d17c5a63d0a7962ef9924de4cd8b24f5a774a14ca69dcffbae66ab9729d8030f999ea80952a6b512e663ce39a5fc7cc8cc1d64667c50fa1446a783d4823b7c34274cadb34e771d75877b5310c64773877b05a79cd377c4d04aa96b57f0d1572a3fe2a21ff152786bbc249bf0cf5389177a8a88c7472250fae10bda747e056534ad6add9f0f992a33e3c3d6fae223aa8de8fbe8b14303e77330b4445d87dbdfe1235a41181fc5ecd04a160c294cd9bef49264e28162026d8c018eeb598d077666732a114cc60f64ed45d6b4ca71a3170a942cb1a289253491936d0e6b40a2817666736c4e0a931c8c41b3597c3eef29217f3ef73f9fcf472a71450f98e0810b7ec08ac2e97385fc51420919e4cfe7f33e7ab8e98a9f28647bb30d9efdcbaa5f5b740e1c56a40dfb97a5f261fd4d9c2a9fe723fb97d5a0575101c3fa1b4bab15bc2c1075285ee7f08a304e0d23afc81c3848fbb785cc7187c0b2570c696008239f943882083277effdf4aa5b230db050040a4508610ca7f0629143af4b69ad3f2d49eb2df04ac2c5841480d08522ac90e22a690512349c83c48920084185f2bccedfce7b5eeafc8a9740b9d3e9747ef40213d3ca9ddcf91e39ccf8e8743a4c9ae081dcf91fbcc4e54ee73bd5e9bc90ce4b5711b6cdc6004c98308429cb120d4c9a3041d60a9035adaa72a3a6491bff7e45488205296870c592278401ca0aeeed86bd5a6055186995085aa082051fc0e25585205c71b54e10b8fa692d1f8db53613580c483589124938c207479848811556d40e9314647b3b9d25b06e305982134b780278c2882a8a08c2134500c34956710393223c210c44c4729cc8b4e6eccb50beb44f6b69a3366a49acfd7cc0cb126beefd0e786b3a1d30bcd6e3b821d4184c3b0276d51549d05aa0f49830c102017cbf96a4fbdb29b1c404b9fb152f69b9eb7ed47dc84bf6bb87e1264775ffa44696f6af34c993d7fd98266dbc4388e8410c0b62280211d1750abf0a391c5dcd08ae0b6aa33301b5d14b1d2d09c62fd70a32c62fc34bf6f18f707d8cdf0a4d7825e162c1132f226031cad6b2b44e30de4b9669261b14d66df1d6b4cb46675e51d3012f0bbce26b0846645c793d1d64cfaf7809678fe761c8f0527dcf8f3cffe2c99e8fc1227bfe062fa564cf7bde87e77b78a9f39ecfc1f34f9258b2e4c9186ca850842554d030a1e20823d38d9c9314643a729dc211b9d6295491eb2b87b2942624a2faf249b65fbff7517b1227c37ca2984212a480831c3f7ca0052688b08680b2840a4e1b59d95a6b2d05c32873ccdc3f4507a678c2e6dd2b04210a2c282d8982128c8083021b1c275cea101f8c200746c40844a8200954e8d40a458a5c6badf556e96a2743c8f68922558a1630418a2b9c80c2926c9d18d55aab4aad5740e55a6badb5d6274021dba7511c91ed11a2a8e2e6f1126cd0022b6ee044112278c2551106289ec8f5697d020b7255c20b0d6921c1892f48411543c28a53f853c8e128db1a68ec6bc916384dd33450e6a8b9d38102054648f1a850285408b0c8a224337542092d4e4031c01335703d514500b295b112e8882dc1048a11e4d7670a277a906b8c8e8a509690edc3686fadb5d6d6ea040c58b2d4420a64e082268e2411022ba41092b3ee5367271c21d7588d5177e42aa2502811d427727d981b6aadb55e8f09a81b4cc00197ed87603c138090edcb58c2842f64fb2e5e3a40b6ffd2caf66b58d2843064fb3bbc248d90ed0d936cff062fc925d92e718207b2fd1cac8461d1a4892b5ae418020fbc70832184a0c40ba6e0ac604113213840ae7f9b5022d7f7784986b7e3092672900310a420053c903839f46ac80f23cb712c3c87e279a9c64df4d4140bd1cccec29bad57eae4b0861dd9be0ce5ab2497e41c91edc3dc20237374cef151cfb2f0ec873607076b413b8341d1c2e678e98259703249451252395001148af003169ca290e73b4a07a54e9eeff39d8817f11511a7f91deb983cd7344de00b4d384214523441093438cdef97972414b25ce2083cc8d3e6e4ccf8d861fe0f2fa5e4f93cc44a9d90a6494930ace00a2d4002054f38e289d3948295e7cdda6ae2e47e19a3213288420c45a690e2034c4439c5ccf2cc1667921a081460f181224874b085214e338a3c7fc54b9e3c45d044b6f6af7d8f07866c99c876c90896c8b649b6ff5e924b88a820db97e12518d94aa98346f6bcf47c45510463e6becc7158f0c22b8e31b1d52449cb1ac756cbe57abd60b963b0499239bc39d3742d984345ee3ced744c389e60823a85f63b57e4b690e33a756e083c90efd37ba52c8170f2b66957d4564ce44a23d77a595e72170a952feb8a5ee3a3bee0ad6179c9760e0a95430b5ed6152fcbe24c93362e4995206b4fbd54c326f6d31cefb39d81d8d792f8a82f6b92acd6d2461fb5365e719c5acb4b48681733bd82176a33e0640f6a0e9141881e8285e82153a345dcc06753f7900c3a7ab8bbbb8460ccf9d453c04919eda7fa49496a7713b480e54935f98402b25fdd846bd8edc4ee18f739ad8ea28345fd9e9727ee83e83cfe08789e7b0c061104fe8e3c350e0ecccb4b46c9508af7b4b1cb052c0485d7449eb75b22cf25dd4d21cb0181616744a703d901c15d17bc2eef56d3f4432633c3c738e779f77a35e2a3d902a31e862886565f3c0cea1269ae18d5f5c51045516cf1c9d38b1a72d1825138855138b542d15451d3ea0aa3aa78b52ad69591d5ca4815efc53c28ad291fe1ee7b3def87d452a867243c4f3df527cf4fd20cb1fc2747e6d054cf9c0f8b0ca17731e7bd9e3773dc2565ae1e44f5a789c2a62914f23c9a9353e60c33cc00d2d0bcf8ee69627c8b19e83849d3d32a28130ab9e83ef433dd875ec066f71d28240648e99093aa0bb950b5b82e404e86af4fdd2a25435783959cb233a2850bad2a4979ffda229cce35438c2ee675d3d402a6809df8a2135dbce86bf1327c2f1e8542a1429f3c89b96375630b27cbf2fc39fd2bd8adaaa45d5ef2401f7a5eb7bcafb5e5a3e9813ccf037dca73a0d64cf9eac23c52526e75b9585b620d2bc4477cfee7daaab585310d12fadbf7e7830f3d4c31a0b2f63ef4a04541a132fd90f0bcf6f52004aa072128540f40a050a8dcefe9000858fef38debf7d7751dadd8077fefbd97b807074594e5f3da6a9abad524cde975ddd74fa603696842efe2695e7c8b6e354d22cbc7c5773fe3e23b5008127f2121300824339e67f920f077efe21d9c69f1020cc2f32cdf22f4f9d0cf7c3e8441917ff79dff7c0567f0bf008578409183a20774befb0870cff22ccf3d7e993d197ede900c207e21bb2130671542a1b2f65d54a69f64a2841a3ad2579e1496b5afb138312b4f3ce6895b797e0b9c7362c1382c2086b987e5c3d895eaa6e9336114679a3c3f9fc2a6093f6c848d79c2266c9a66ecbe4f17e4f9218c6ee53487ce2a2ac7458b7866ced402f761d7ea60107bee9d26cef330151ec7757b1e775dd81981b1cce739cde38e6318865f9384713e2cc3b3499a8d9aa67aef6ab59a26b99aa0cc87eb8ce86a9067a7833c3b20742fd884c170f27c2ccbf33d7896e77338a743e5f9170a2fa439ae69c44b211db3e8a570863447d2745d87696b9a3a3f9f8ed3c43dcdb91fe3e234615463118b168bda9d5a9839186531aa511a485574e5a5a6aa89a22bbaa22a5a84aaa88a16a12b154f144591e6d01c9a13a398a884ac994a7ad621220100002000d3150000280c0c8704a2f168a02699b07414800d738e647256a548c3248c611052c62042882140000060044406b3710050bfece63556903f3e63784820549b34521aac99f78395f459e40a429659e44dc4954d56e126eab730b6430f8fcee3aa14421f00708308ceb83e1238ed08c3a5e4f15bc05e001a4f5411a8b849899cf2a525b6207652abb73eda8f97ed7fa7ec614573afecfd7fe1dfd36cf847a2767773a34ec8c76837250bf677284e0e7a4992d2da6ba20e43030a516970343434d4856c3e65d8decfbd08538de2740b492b0077f624c58d285b5884c077610d03ac222182f23f1fdd45a3538d911740347fa363531a798ca9567485522326962940c8f65f17b8e23b2049254d22e324e538c01c88939f371dbb6106a59c2357390cd932d079f20a526062b807c24161e8690a0c78a294ac84125393c0d0764a383ea7cb29ba595d105ccd53ae21292a54c5cd4419881ed41a53fdc385a59525fad4960cc184590a9e1bc1c8d91ce9523d58f0eab7b948025b568c003ab93685035a008ec46eb715e1e01b539935e03da97794733ed0245346ecdbbd0d5739434990a3975848aa9be3251760cec660d4167122990df817fc0f8cf9a2120fab29347b43195c971eccaff6cbcddbb61492f6fe6ec26f3bcda8070b7bee9b5e0a24fa9da385d8ffbc3f888c0196e2d4c025568428f867a48005620588203f48a5f8ea129f904f87520a9d181f766c8daa0185ef8de85d257a18025c396cd4ffd4bb0463dbf7120f8d99b2a99c622334f994d4123f27c51337f8274d4fed953ee88e506f41b9e2e9f7b04eaaea7a50487644d3634315571cd943fe80857981d6215744e29487a8211139d0a03547d1e17c65a49d1c290da26ca914bf841f19d020f82fc44608a2519d7d76a297b7c58960e9d5440d7df755b34b6990e416b136dad3e9b4cc4c2bde4f9f59a1498de5c9dbff51448629b5f92191c78757dddb9e8f22518086a36a01a4000e966cffae1c6586c1f8eec759befdbd967e808d8f997530d091d91d199fba70f574d9ea0727195c692debad114180a0703524f50c5ba8f96a48084e05807df0f254e9b6d96d3982d0902dee4c339305e83c046315ab66cd909998f801c3c847d279ed5c91ec3018fa5c2c97ca18aeeb2c5035f6f36a6e1e07b9695a100d30709cf489cb53a9f7af760c7ee7406362f487160a717c332e9ce946967c83699b5f1666d5f69fce51b63ce98eb12efc6eb8792ea6a7ed6cc42c8dd7e8d5860a4dfd983171dbb43a0634fa214059aca8d68df474c4448d543d72e1f687a0308235ce06da367b64d3cdf964ab0bb34d0ff6f70a56513a149afcf1f1b7fdfe9f5a7b86e9fd8d40b2ab1fb355818de06cd3d9705e145d96d8f85030609dbcd591d4bd7b713ffe82a59a6fdf0be3e615372152347b155c9897d0ee48b19dbfe989fead2ca8e377f669c748ad65fb7e38ba30918e1db8f562876e61285a5767e3d25f8915e12e7b9d84a0385e1022376e655a60aa3f360390303e3642695a07bff694dae82b7f345fc6fb5f38ee7043436c1cc0f275472be8a5715da83b3868d42b1aead7e6c4e5767a3a86f22352478ee599afea90d49b47b1e3b52242f45a6efcba30e843912f771b13a9c9bd2f753f65f608eee9fe10d411448ecfe5f28d88c2fc880fcc0f6242c4e3cee5fa41764ed7a221e42528a6a9f06e33949db3a15095959e106f82aaa0a29252b8327eb2ac4f639bd95996c04d3daef10b71bffbc8787dcffd8daacc3459d21400a0e8aa8f5786778e4c4b43a63b18f2439e12e2e9fff5979fe755d84646afd8494aa5a2a358dfc2e1ddcbe83716a044a3d85fbaf46e6b2a0ac6e1592b15bfd51fdca271adc6662e14d871726692066db119afafa631bcca7cbc25c961b649182f59c96113bb30285c9fe3cf78757d81b5a532cae0f2eb4f62e89975e608027a2e7081634cf7192387de0baf32dd5f69c34f55c0e8b385b75917b2716e3c9f09e89faa308a644dc242d90332c9ab18c004a52e569f606f4b13c164a2c672816016bd38047a64ef0b477460b99d456ee017d02379706b7ba41a3c8b230809a52427be7a52bf84f8fa61eb0137c0ecf03d09f0f7e618479a63e790d1a16daf29fb261e120579db46ef2fd2d7bef13571aaf4f4a01567f517395791b64d3f249daa365594ad8c1bd776349d85287da38ee41d1efd056420f32e9890e36d743f2d8a5478bda6a08c1fbcee61dc76da71b1fe53d8b5c69e1b3bd4af8d62510acae1c152122cda995ee02f9a344dda2fc779594ab2df63b6c89358f4e4c671fbf396f95fb3e2f3a87e775d21c1678563fed33b805bfb658eae668910ca57b6021e7da2b3c3fece1d9afd8ff4f645524ab39e0164f0406c1354505ec01421b2bf6362158b9f30f2839f0b9d2b9a427ee0dc5c75c8a8b0721a99d707792962753cc6d61b0f3466d46fecf3b0e78e18b040a1ea4f348e88436012501801d54f7eeaa5365f163cbc98d56b0c6fe095da3aaefe04e94545ca23b5953e3d499361a1e5e750b4511128a6cb9a82454bcded9d9d500624ffe6204b507ffaffb7875836c4f579e0403024af4ed062f64e42bea2e6d8af5a27e820878b64a787b7324338a84e713710eee857d58866da7e0275a991f229f3b1621a9ff41468021ba735f3ddb749b6ec763ce454edb5bf81f40d53e2d90f9db8f24eeb194a163140abf1e6e8f0361aa8e7d0e610e77211a036ed23f441287def8a3dfcaf72c0b1525ea105a981ffe0b353bf736c76aae9ed0a5f71e08849d0facfab8995e379f7a21fc8ee774dc1ef21415c6664c5ebf414c6b8c7010003b8e18be4d0e39526fe6fb0e3cc789c322b998d34f74440511b94782cfddcf9e14b9ce071c6b0e81d9fd99261737bbfdf93aeea455b67c8f8d836f1bd7a06eeca534034a7a799d9f1ee9a74187ceb345bce810248482935d81e7ef03e6f4f223a634c399fadac40be44e2fbd3484a4986330460ab2ab1f262ccd11c267f9fb42f2a720fe4f7a939b764bf2ed1bfeca9673f32a620937bd27cb4596cf23e9b2e19924967bec64401532e899406d66a3f333a581eb0635bb118ffb03b29dc5f5a8fa4cd8f8d50cac12b4794701e064ace12e31b5dd2815464cf943e6447c30c89068935377b2e854397ce4bfd22359466a198cb6386086353aa743031df318dc2cbe5a32bbf2c4ef5c8a469a127cfb96ced4d32f5123d067b223889adb8dbc91620f0c78bc14ea0c8fd60fd202d18b3fd2ff50bc830c6e4eaa1a5641bc6a993af29351119058572fa1b34f5941102a648d6b42d0864087ce862184e469743e8ad509ac75aa7443643c8886c7523b83c23e9044259910c37f0076205214e40d62c26d1251cc134e39a66ac6ad3be761921c80774946ae61e8058c464ceeb9161522b5f45d2488a151db7474502f7c041707cd4b714542d72d3a36759e712f3024c21f3311c5c4222f4b5491761a99922699fbbad363df364a7f2601dabdc3f0e04cd0149244e53f6181a496e35d8b6e146842d72bcb4ac303532c5215d0cd9f436777a338e757c5a9544222e2db2c8daa487af91b21e88265d45d71cd7be0c127ba41fedc9a51b3b5f62703ff65476c262819170ea936882038e3f7a3e4f4203141470aa583a6a858c139ab84306478f57980a40396430cf8c2cdc4163462fd5af685a2a1e080db023e60ba72a1eb59a9332317a0d0ae8c4be12e11bb2fed8d98fd59aecb0d3bb8a35499ceb487b89df06f9078a1504a21caa8d375cd6292800e5be609c7cf714966d6d4282d8070d6b4b4d6aabce35d2c26f22f8a09b63d8122c23fb3fd25247ff942f3b70e557e6096b1ac8bcfcf0c523cb5268f893b5dd66ea28261a49c259bf04d7a84df72ebdbc1cfea63e1bccb5cdda55e42748854d0b051d7503808274bafe02b73f73771377d7ab12903043a3f5bb750b7cf11c81b08490a3b2a7d1498ddabf8090f0f300b96ba8c8db1b65ef8f25bdad5b53505e84281e24961d9999becf041a4b3e5326bb479580b1b31c97870869844b26b96f1b534d2b72544d122190a0e12816f38e396730352d8f3656342c8c4ca2f242eb6d63049c89f9cc64d067063277f489b07f1b0bc25116a0fedd60b56f3ec318601061e031e744ebf17198579ac9a3e966fd710595931e1ce9bd01f248442c645731771206643fc2f687baa5ebc2ee90e2944883651a53b209edb1020f49f1c23ac6ec006f2a1fb29e77600446b84293fad83a9b1189ba9b8f1354d9dcea5df9b94050db27f1f7a6bfea8f8794930b04712be86820b61af661c58ab158e39c02102d9c0b9fd86b166833d82f85a28cdcd074a46b117eabb360fa6f884b09f2db03ca24cb218f42e0b19ca7d6449eaf12a1ac4749c672f03bda2d6b6a89b48c959ce884b4f2c10f10395225c81294b7089ef1d31deef7afb0c8167f6035680a990765147913e42774fe8f40c249d14317e120453716abac14268d58cd0357907f2cb414aa9a199d1c9370425c95b66baafe218098a96c46451f09e809af67292bff4f9180aa43cf41d8a357a4f049174ccdd849220896a9be5de0d3732e3246cad0ee301017658f6438275510129e986fe9111cbd700e9c6b80546c876402946bd7894d6f99cf3a427b647e025c86c168ce0fa456fd1c3fa96a871b4f739ec95aeba0545cf5132309023517d3c841123f0a686bcdecf60cc7f23f86e327af68bf64dd7722437ac94f6092504f91857efe650fb17479f623e5bd9e6446839ca1b978ddbde50cea8c3283c378c03be6ed5c63d8bfb2c10f1b27f1d8082f3d8eda1f28b60ac42056ea5ea9e2950117a48f1d653dd8e8698eb64ff18221ee88871e0240152d5ec065a20309e0bee8cd8903e732f736f867ddaeec756f583932d31a74d10da48fe25d79e5f1dbf4ff211d666a0d6b6e151f7d83cf58b2d4911937ff92ea3aec6a0f2b1874d88e6e44b1baba8550d99f2743791e46784aacca333f31ed4c59752b22d221cae6d192d24f1f8f4b8deae58d01ca7eb69cfc3e18b0d3706d69b858b2ddc837b17e9502f286223e9f90777bf3df244fe4000b77359973d4c17757ec83592d01f5b65fd1029c6b79256d6501a227ddda3e9c9f148873e00e8f22c509d97ca3b20ac0553bb74fa8360161649d064dca23b39c4abb83cfa6b1554cbdef63b1428ccfc42a08fb2bce66ef2e81566fb64cee05c13a7e82a6b65e932046806cd3faec83463c425e40b1d0d7b1681c801f91738470a353dec43e7cecbc19904e7ce814f41c0feafbf123022d3fdeb9f321cff31683ae41aaeba42c4eb26bc7741b1f6bec98754f49c0532bd74f2dd4e2bf1667b8349a092c3aec059d7c3e616bd5ae6ccf18417064925d482a68b7bd1a5970748c619ee5044fe7032d48e04f58b8dd327298a80bad02de8867ad5951626c7bab87a482a4c3ca1af87c963c6c3ed6069b8043de907e60b6790d02836a195f6f375b77ec2a45611e06a1969eece89b370129b4dc4a9a396f80824810664e3ef6e432350f476fb4074cab29a4c07643de6aeb533022d13b8b40d9f380283c76dcd02aaeb84b397cc1fd7a87be3218211c7db3cc43da26aaee5fc085ed0426f52d6643c646989c691f33f7d6af12294f618b643efbb4500148e7d1a5593136592226c547af18f621cc7d77b62fc787492ab260df001a8f0b46e4f220d2e7327cc7c19ec7a3cae36c7771860199bfe165eed4d9f440181c5dfa03982f55ae836ef93a4094722731c1d31aae79027f7e34cbc81e9849ca904fcb2c79d0f11ed6b6af1e0eddd95a8c325e9ee2b75403206e135483a373d7f974ece7172e9a09f2eb39e26c63eb4abad0d1c5c45d0ca3346b0648ff994d2844f063264e7f808c65eb7cfc4ce9e0838a7d3f6e02e7bd0db530403f5e7251977af7f68cbbeb8cdadd34774cf27fc7228680869435de26c09495ed8148ccd961ba4c9de6d2353e0cf4f465ff4de9430d46adb4395c301b66821c48a8e7b4a2747e910c7556853303edfb3ae7e8aec9de99a826b573220a5b151507c17a11c9772dde5a7607f30091be0e0c5c8ed1636a9fb32418311e871f9d64a42921835c3aa47804daa7f21d79af514e47d4c8e78fe45251dbc79dfebb819a8e6e076d8273e10ebbbbaa405deed04ee2ff1089b757559ee15510efd4e72b93eef60fe8885c9563b592f66894cc6e109e7cd648d5da2b439cde3e8f4f9b4a4f5c0679a20763cfcaadcf0e694f34fddc238bfc885b3100c319dfcf265ba89a13fdede5497decbfcd57630f409d164b3ea50cdcac2178c15a08ffc22accaf57ed382bc7e84575ea44edf74d454b26bbd6c8dff9999784e7d09d2b5254cd5d040d9250a476382125c280d23437223335d4ea2a3e6214c07aaf0dbdd077a9491693da6ffe7fa0d53840925fb86dd778470c0db1e886c18a74e0f9b350f4d6be7859bb5cf50d89b25aed400ceaaa0e1d650dcc2bda6ec222f3b4fa7ba6daf3286bc47cd18318c1b532501da68358636a5fac4e144b37a1ded12ed91304b001dd3276146dfd1cb6c1cd384ed92d6d4b14a5563ec1b432bce517392ba6eccd3cb680bc19bbd12478d3db402dc263c72e001a1674becdcd8669b1987506954e43a682433f39969ea042a7acb1c5c6886390ca4c5d8ffe75ea8c0d184d5cfe439d1c0ac739c227f0ee8f65b7d730b0f74f8bed64dd9ce9c3c2cb6d1ba9f44d04ef119a02a72e6b0d765ea1b5756e6003f6ba3b86827c36478e711234762d6026eea1f8137f83961a65e214faac5e43b07a9082358c47ed82fe665e2c44a4be9e0bcff3c31bdca63c857ad6c4265df80665395f1912018d3c50d2328df3996c379799b0e460228dc4d8eda410333d51ec0ddf607128529070c6060660784e3f70698022425db8c06745a4a727a9fab45f6f768f22751891b373e7b8570fef5a3749c5ea802d0020c93a9200737cd5917d19cab7010c2419a6808b47253061dbb7f75690640491374619d983729daaaf894edd2f592df020cb3e7fff9b57ce21fa016bd8e31480aa8a725d6036d9c1e3c5e01a96d4adbefc7532680f9cc0a502dcfac68474abf2e5bc77b96526efbbb194b955972775d75c8a3e8cf244442223195ac700ab11ee117e9f9a2a680360c59fc91055093f0e58667ea1aec8c478e45df79eb45f68c13e92059b2b95e05d77a225ad893ca9cb4f1e6058628024a4602506d3cee64e3dcc78a9e5f2b52b48513f21089e3277bbcfff30b5e2056bf9706d4a5f4a8be289314d2dc2a25775d0829dc4fe04b164c5b28d4f4919055318f93b55004216f6d7b5c90e6f6985030384d290d426a4cdf5f520aa7db9c715073c341aba1d579d0379dfce026bd05c4e1b7200a54f7b498b93aa802e58ff965781a767a9cd27d2ef157e9569fcf5d0482703ffeda8e3d802efc5746c433a3e116398b8023562682b5ee3556b210fb2778c097efbf2edc76982e0579cd9c008e0f7b7e53487999a1356865a07b1329d81a7c7a8791628db024ca15ffd3e8d6b618af5507dfad5834eeed3dfa4e097cf942f675d21f2aa9711367931b230f766aeeb2bc0c647543235be06d837671cae43b31a166b554c43ea86956ef777c8d4dfc7258af151bc28d4e44bbcc07003ea1165a0994460e1ab7de2d15665abbd70d375ff5b1282a25061f943cc6bc52d9ee58f42b7dc22acb04517a74e43170cb237af054e92c5b9c5efcf2f156a3304a4b5308a13c7e5ac8f2008a1dbe7c2e6d660e0f97915a37791b930260fa7271ed4a89f305bb6e87bea17ed52d3992a11d5bc75d54a212a151598e1ed4902b4d94cae424c816e8a6e031b73c95993186c02d03f80c04f2436a05688de5cf98032d00de6ce5cdf0d007d1aea5e46a65e028c544c670dd051de0d725e21103854e8fc1ffd954eeb0f4ddb4198760b98fa814b927f1c22478ffed45280575029053a6f1c1155344565add8834b5034291629d6e86764f7b03898c117d18e6bfcb048e16c43a910dfa5a100eed4a335ea12781c7958f76313e0c3df66b725be34c187734ed82c69ab844f434d8290ffd9832b7d76ad9233adacd1a21ee9b5100647deffe58ebe5e0baadbc6097e7712b5121eb40193f2b41e3cd01edef0f5943df905ecfd3975a78a86056a155ce1cce754b8d7e366b4ae2e7e7dcd329936f9ae97a241d531c8c50b361b1eec60846797c5208c8874fcc12c76f47d23fe2d9d2cfdb87c3252329f5c178abbeb2b8bb315329f6cec34cb450c45be5f0b43c18536015849620a7655fb4fc7b786970f9cabcb79f7588a12273f1e931a71f2c1766c277d893de6d2d4dd2211964f014a8026a82e233e4038c34bc68ff7df1bfd9f44b8566130e40d4f871e2e239b0d204fc3bdf6d7bdbec949d68606c07c8b8c3a872d3da0dc36f77b9921710967d0beeeffc8b1a38f1efdfe8b05c77f013c57018da3392e025daf4e2c2f29d7416f0bd4385d4ca8b0cca4622e418647cd0d7feeed30a7efdb410e256d086a223fa026a2633d0058e8c1ad272b023f00b714fac35734c5d047dd15546f186a26b0ff771da5490d61ca9c88870eb9d5b4d0ef78c42be7ff0ffeb3ef38073d056a53f54f8c5e5a42eba404076896fdb9dc6ce6a0a2d73c701a6ebbbb9f9aec3351cc9cfc3ed2123377122c06125ba5dd2ef4f1f623a500dab23ff177aab62ce860bf7b34d4e10f9bbcb53b33fd0b49c01f8e3dc3f32d433f085cc64824390d9fed8a42d5ef9bdb67c8f0f178847853e8cecf796d023a061948cb3f424d816a95b1181feb4140e2343256f013805e739ecade3f017102c242e6c40420be153bf6d02bbf37a72f27ef659eba5d5e80f297d05a1342b0c6f9ea2842206057c26719b230aa05cc684a70cd2df44daea3749a8214dfa40e7b44b2134d272af51107523fc31d271debc6dce6d564304d6ddd2c2b311be134fcd68aa0be4d8d59fc4a9906f239eacd38b0801aaec7feabab056771d6970397691535915292efc06a66a019c9af1570f80c12785124ffd79609347d05523e17159b1fad3ca8394335ef0563af2720c7899cc1c6ada3203be87e3e0f09465bf9c592ab0f2ff80f55bfd95c3c47b9a22b449f0aa222d71d5e72a6f51dd13f2136fa722d48013e5ff5e1f06b61c729b22b24bc99d65e3ae7d071f795d3e9d8f10da46528cafbb247f6db902b471dedff0f4864bd3c861a289bb488fc4f68aa1ec3835520350ba0700c93088335e22372d818624a2177951632d7470c4fd4e71221b61be6b1653d4dc1f07b6ab4d35f58e0a810a6a9bcf6e72fec8e57d233cc8f41e1e59f72e4c7bdc9278b1f55a8f482dd2a074a8b46c875120a7ddcce1a030aebaab50e90567a8f78921911fb5880b9a5867dbc419c6d2c9d67950db4ed7a15ef3c36a095f4db5b427b29e1fe6a5762ac443196b95b1c47e7d143e0f6f438d2fe86192da94094f596af126973ce141cf9002e79f8a5d4e19e7c4e9e0428752e039cf5759839273fb738898b39de53925bc281f7f0464420a1ec3b99fb737afec70260f7e23d94f600f4d5210d19d23cf9dc4c7647a0a8327623490f0ddcd60bc67c91caa7dfa4ef953d8ff01aa90c892791f3d860d0ad80bf8ada1a5539183975203eb64da374a0ed3abb12bcb37ff8c0b1b89796368cd8cf1759f0e7ed2769176da3622a6c915880ee18c7b7da22be95cd9e4b7dc10db2c37c4d192c858c3907cce8138e1b8fb8dd164e7a46d652512e8df363e4f89f05388226de7da3ec40f81fd519b4f000094af838ba8d7d4a71306c2843e260b7bd89092d46c466a8b06341a3df81cc07fbb7cdac599f8b9be3cadc700e86c314a37dce7c74ca5525939c4663261db4f33fd59e5e1383be7054e36e4c6acf6cce7a49d8f84f93a817462da5e3cfa20ad132d6082497bad1ffa62179631c947a80fb5bf0ad1efdc9cd2300f67f231fe3cc890e4d2340569fd1b9be94a84c05db2937b9be529f98a4176db71416eaaa405d4b675b3df694c1585c7b0fd9ccdfa35056513ce5f190979d7c17066f07cce3ba96d87efeddfdf4893e2cafaafc76bc2001767ab1f0785493ca2122a49e4aac6143af1ee67eccedfc3ecfd4926a7057afa9c283c76e5864ce38522d696c52deafa61939cd817791420c431a1578d8f3b7691ca921de8fb7016c9b5b0c42f56f2639706b966975586ae8a4f9ac72cdf10cb071222e932064ad13f41dcb5751e2360af3c28d1fa85aea76ef80ff5275bfa7e790023d946931ad186835e673f62504206d22ff9ced23f71d23e3478c184e01b2e4d2fd29913a28a5c3100699786e40ec5951e433fbff6153fd49235e8867c13057632a29a5b3f18bee0338915273038e704123db17c4db529919979d4cd917e84d4f9b5876150e9686153e45d79ff78b52fd7f3ba3f615622cca517a546dde02c2abf85fd0f7ed49c2eedbe3f0f77d2f08206bfe01f8c61ebe3d08fc088a07ecb5915e847b7c06870301f448badb4e2e63682ba590afc5f14a424fd807f7859e67ed22fd1d827f78646915165efc2201e154020002b066afdc84176cd90b3d5034796cedfa16266a7aaf3ded29b8179cf4663b3b325e38b2ed03781d2d96751c4ac8e9e889ee92785258e347b07498565cb6dc9527acc7a181998f4c1012b613cb69e2ace65514d0c8c1157bfb56594dab9764704b426dcbab275f257d886fcb17b691337fa2ee80f4efbf029ed80189ed1c290298de31cc030924f563a9c8bb014ecf1678a9791adaf8084d0de7894a0f0dcb4e619f5a1ba603d7f38160722608c33a4ccf2d2a00fded7f672886ce6d26cc2da27b073732331fce510a24b5410053dde21f82314a54d4e6d7bffb125dec18fbd245fa012bad7dc64af28815924e44e22d01b81219de736dbaec47dda0d82d4aa3beedd634329d39ebd75ce8f95e1a12c78f0d45ff0d0c83a1bf71efae1aae8a44e853e25cff33dc007e6ca33894911cd0668d600e8a163f59e8770484960cc6bef16122406ce519c5a8e90f61799da41cc912477d80966ca064bf094b3bc74a23d44b5c6f8d8f4e758ea073e5c48b5e2a0fa6243795530029077ddc01d60c81755222c094bb02f8ad93f7ca52575900615e9248f0e54e6b100ff8ba59e7792ca5ac42629a707d5d4374023217d3b45717a1acc6586fcf2efcb045108f30798355f9001602dc12f1c9e5870cb53bb4b1978bc8d85e455876364b47a74f722ee8921f9da9aef1a6716f737634aa8d0a295f12bc1d71ccbb57e9ff158fefeba1c53dc3d777bf4360fa4436620a7cee8594b3c2aa498fd80e1bc5e036246aabeb1cc6d7becd11ee4ce911d25237d726dc38237ec26b22e8b23199b861e4151102893b12148adb737ce98a9c8a226ca62e570237f632ae82a8d4c4cb559610741614501bbfdfb7157e4309889f05ea737a713770b5a87400a75aaef0d93804edd3a98d378c319279db9f41e286cc033182409135d2c075295400eae6025d1165e5aa7235cde7e9509b104fc8c0bddd5c98375bb09725d641f4c99c9685169fe84526b6efef3384bfe96b229b2e625e749e16eb0e277c22be6b49c163800e3dc97894b8cee8400cdd2a709840b7f6aecb3ba9998ea9fa34e2799bb5a33a71fd6e6b9543e009d25714bd4697b2ffcaafe576c7914dd6f2ad36667679ac113d58e6121f08c2f7736f336f4a1a32ed77f7ac9b6239eb97129effddc2171496ec7e10f91597663c50293808340b6ce4a5fea9bbaf618a24bf514e6cf72110e5e5cb81921e81906e6f24fa9d70333cc0e78e9a8915ea61e27d484c7574b1649f8267f6017f60a1f1d9e8443b6a3e4c7cbf2c982a85f6614ab230f382401cb55861498ef3daa7f0895e2395ded2076328868fa4f0f8ce02f941916302cf4fafac7408496e9428421cd689910be90206b519ff79cd642f7214a5584d260daabd3ab3975f97e9b62780755a0712a9ef7aac73506b2d2314863e592f6275ef25ddc79a6e80d20dd177d4dd21d31b813d9496434713f25f115043ddb72216207dbaa499c624824e583d1de19ba4afe503766185ffc4ad06712c56d06684da703fc219bbe246818f383a78042611faea6afd427028a664398bf90ad11531dabf9cda38dfca8d639afb4689cd1413600c00534b2f370de0109128e8e026e80fa11634888d060d3a4a673864d05092a385a555493559512bd2ec13300d53b17a2be23b596757ec0281b3556c972de3d7aafde01365c17bc169575bad464812303af2035eeca1804346b9d0463b53d0e856ba3a58b2a80df9360a76ebf5014a552aedac2a6661352070035e351fc20096b124661fe23ed9e3c67de070cda7744d5501c6b4c61c2cef0bc07398cf3d56835f90c79c3850cec694bedec8f90d17b1a9d60d0e34c9c1e737ec881b96750613f98811556d30f92dcc29a5d5ea701dcd7d84cefaf6e382723ade1be8ba6ca32a04e84d0dd0f6671d1e9353071a47cd71a3a0ba7adcfe29702e51d7e0e65582e3a9248a5eb7d5b05e6dc0bf75524432e842699488b01efe3429df0a73dd96edcb142ea5193ad3b7bf71026e708c20ad12a82db92f494638d1929163d089ef523c9759e4fd721ac0153b56aafb52c0c13380de998fbc9f40155ef74071b0c2faa71fc3b6701f82af0cc67114a2893c81ccefd531507c60c2ef133e6e30801af7fc7cea6495e917d82ef56638167e16285872d73bef56721823c63d84e95ea72c71a9ac1da5b281f2d37f52ec0d72ca8d78184bf8264bd07112d082dbe904ac24d3cf1579d86fdd1615fe792d1e310c991ae1a05244aeacaff63af1978f63c50a9dfa558adac546cfb4a3e9b80a543eb8af41de8ce149884de086ebb50943c29ebf167f6fb7b99efdc515d570cd9c40f43c77a33d27a3655a23ae7f3f5ee86e1a08835a2e8db5a44ee30e3c1c66a2daf28e22ce8448c119c4a87b28a658d141cc7fbfb568fb867af24cfbf313b1872a42853a1293a92501e4f8421640ace2102fffca837b8cd8d07cd92495138417fec90a1ed12984647a1cb18c50b25785d16dd53705dd5da77b794d41a4ae31cf5eaef17aa6a0957c6595185105d70b6ef4c3e79692f503b45b8f582b1ca347f2939254107b70a6abe092ce53fca136dd4c9be272ab20c41de426620a7efb56dba503341fb23739b37323ef078d128d039d4400a79e4a8c20be93fa86cec1f52e34925c7e00633fc894fa00a0cccbf50b7ad3aec35f9fd0f10b82d1b5f185b63abb1ee19396217b5d8411fc45cd11ae815e728d9d09acb20db0f4e537fb0746cd6385679242c6bfb612967f3008afa44a0269dfc064c95f88cbcf34d2b9751f06b145fde657446a7102fae0c7961be02e59d6fa0b75882e637c69c82bc2cb0232ccffd2964d8f91d0c2a1f7ee7754e0d0ac69646b210369d3feef9f68b8a1866c56469942ffdeb286d0e3be6eece122cf741165dae9de778016599ba5cbf8826fd1db561e10fd4f9c3e2328c64b6ad0b75c49daaa503cb3fdf7bc79f5fa91c3a59f545a969ac03c72a869dd1a1c82eb97afe85884616f011af2d9df656b8e652feeea2b8d026c79ee19d3f7d0f8cf55907abf368220fd097ed26fc942a46af35a5519bc8573f57df1e97cc507159e696322ac2581ac930954d8352fe7d4e346fa1cb15056a5aed412a19036d3c46212c726a37e2442a52548c27731bec98f5e500bea28c8608f3fe4f24cab5a2582b9c739491009287798b03995f891421e830a8c195cc92720e4c08509607498f05f6be99efb14cb0045b1621cb63e6c1c19743496f315d49daaa7094dfd32aeadf2510325b767070a78be58d9d0c90057598fed16fd9f617f5f5a53b7658a9cdbc510c77d17a757f6916cbbc7b293c956fc23f2dc7a6d236518100e715c68a11cea41286a0989c4f27c77f612d7ddaaefb7b715b4a1d31f09a8ed1e00b131db832a5dc7fa05ebffe2db5a8cabde42b3f2329b40a309e5e19a7a22f31843a932c89938e86b057d0fb2a9afef44b0c58bc879bd1f407d2e6f435bcb294192619f04a2a70923778ccd4329f24d0cff3d95a22f408ad046b4a195916844ffb64faef20677bf380fcee634c38343a39c7c23016c61cec95097169b0b8ae55e380f3657bb2a7756cc166d5287e948bd28d07fc782a75f20387592eccd0c0b146912aeff22d83d4c652c302751b2b8b8cd25e26c959a9adcae57a0ea75c29ad0a0b6293cb8859887d25bb4b331e839744847766ac9f98a4467f0fc99725ff98b17ff48ee81b9c71166e965e4d11f8cdb3e95890b2897534a8e1b8efdf39c847c5200c48ecd4f0bbe143ffc2382b4408dc18f84b723af4c0d9641726d5e01a5157ff2807110ceb7aaca8cbe64b1c380afaa957301835f11d50565e8962e18780c141fb53400dbd52236b5582709b676869488ad27b8290c4ef3f626302cb95c2972641a10e71a59589a9b3c4a611f11d6687ca66c40e5841e7ec15996451bfe937953ad7ef30b832c31f3f22518f3ff244e4fe150b2893e68d1c0461ceed7df57e09284fb6bf5ca142ad4bd9f1afa8e68eda1078c8c16623d21d1ae6a85c414524b0104886acef09061d7f91d4c60d77516869d81d6ce45dfe77a817af1eee577d0e06cfe55d953dae73710b8b6b01dfdea1ace9a894e40b60f3f4d5e154b7de9bdce416bc48151bf86e2586d8079290784245934148bfacbeef5687945b7cff578148e58e045fb1766854167bb16ba40948ac7a204a6360cd6c0e7a08b9072519fe51eb7111ddf37b606b514e7af064d060a175cd447f3789c86f2cd860c14a9af5d263af6ebe70235bcd7250ca7335d9561382f32c5a6ec1185137992fa93bc1e5cb541cc14bf26f3f964e86cd0b03c7a43e79ae4eb34a4f25e9db0c1583b250332457b0e5dde34da72aa0edffedc5c2458b10f1007fac0a883564699ac492f6e4b7bde19d4c955beb01246f07c98b69a3d9f8046825c7b8ee920f361d804941b56cd4cf8e618da16c9c7638994840cfa5c2790895a440f53b32cd0904393b5a79556b052e3f8ee48c45d274883bdb11168bb9db4d4d822d5dd17a21466fec066df569f4306fcb16f3501e6bb5ae9b5ef3c5e2236e6016d1e635e52f9996dd48fffaf4ccbf226b3eb9429287e28f714f463631ee470a3119955f78ac8b828cdeee71b441ac0ef5d31056ea3f463d032d98758c4550c72cfcd76e33f0ce3a7f703baa6a2e459abcb3bb0e6455226ac05712233306d9fbe3ea6d5802ade13f419093e502bb7aac29431ff80d1f4c82741823ef7e0392879e889123782fe324eb266e7334ce5de4af58a11413f996bf77da9e612f584e4436b0cc01b64e7b0a4febb8a902f3a636ae202f4b6add1fadba4b04bf9e2446dcac60195e33e1f4fb495fb049f48c20eba3f9f044a403a18361f4d3ef1f217793b9bd2ac47d5e4b938fc055b5012121b536e9946046c3c5d7b5650bb4b334441df26e35d12f47de46a78b3c3e7a7d417524b68c50d46536ddb821d9b9b18ceaaff3002c11998dbe007c6e5c6995be077def8c915f5b57bbdd3e72f4c9666d6e7630ea386b81e5cf16ff4341bc2b8fb8d8a8ebcd399c0994498e99194d9cf30e0ebcb04b0461e2433a1dcf4206a141002959e5fc9510155385070afca7fd23fe0b71b5fae2f3c3b8b55e1947caefee2988f187f69ed2e30b4360b8402da564c25e9791a0e94633f4e8dd396a82779503e0d0689a111a411da1968c7cb2ffc735c6e8c7012725b21cafe64a01f9a1061807fe4e0450edd30c7edf7410a1e60e4fbbb0816204e87cbf1a0f9bd664a60a6c68ce1e0a03ab644bf7f8c822b817d6899def7ff2777dd4eb9843cd4eaae0fb3237e70552d0c129b98deac2431510a1e99d805a577017b6a7e67085765da456f8dd822f7999a8fa722f96391c3a18d225bab0e3f70c262ac19b6f6e0eef107b15e63f3315a42c1c752d0fa46dbfcf585fb30b3aeab249dfff7061fc1487bc2e0da6fcf51bb7fac7b63f3c1e5311c97e0176562fbb503d3c94ceb47ba58a7bcacf9e177e733e29e8fd421f8e72d22dfeb778528092d937e6a17b86f6731f7d62664cdb7569ea0f50d496bbe7265825064bb5403de9a0fb7f5c71ede9422a2833c7daefda662d69787c9520babe6a721afbc0e828952170235f00115fef331a511f9bcab419ed486067a3ca6558eacc25f4c3daf3e549874acd379ced987b31898d43d7975ac440c6f3483f0009c343ad64a4710cb6228f65a2a98933af373a5b033e7601d3da6468c025f45ded748c26aec28976b331fa90731233d91c186122891ae68d1168857200c3ce45bf74b322e8877e603af28a0675ee241b6a8fad1fc7caeb9e557bc41e1c569437e82b652a00ee2c22860a07991f6d5f04d05d879f4e3bb45c877f1948908849f3180ecedabf1b655e8da9977915bbd563ae56b5e2a8333622a431bc0300e649e42d53645dfc03f0d7ed3f8e24181cbd61bed5d445a374459beafc7d58a701d2b6132159f4b4ef83c0f6ef31e9dff3ed323f8790c2449b993363f93d583dc670c182ed9ab86ef8c1e42ac38e85b5b644210d00ce5326675d99b53c97447e8d27d5c8f97fabef699b757a3b6480456e654ce9eb92cbef39ac522db6ca5b9a9ff86cd212cf9e0537451b7e0265c78aca6f950c50344d4992575c080e50ce6b0c3ad4a84161c2712e797241d1e4e0db1a1e9068e910a44622cd1640305e40c16cf1d042d547b3d4643a55faacfdb6b26363ede0e788a11913730e5f8f779907f8f8784996986b3cb7aa22a64ef4842c2056d18fc322bfa99601bf7f5fa8f0f1a91f4c10f456d47d978df75010c2150012c0c80ee251c5a429587b886f9109c6bd34bc8a6e21c90a831c91dbd3fdbec7809c93083a937f50c22e3d35c3a265d906eea91dad4b7436e58a2060fd03439d24dfd46c60db44c79dec4a11c86d7200cfe09f57405c0b81ad68593eadf711b73058a2a0e41c7b06c13fbe1af5c8d5bd6c31cf2827db85c98e11c7a4a2805c6f3a86c205ddc2aa662358395336516c90f1cda51d295b505ee41455d36e6f53ccf59be99a36989df1ed5f1590de14d7cbd8a31621c27ccef2b2887ba7f9d53818517b5c1207aa8f6d2baf8ce11cb3286fe3522fcfd8d7bdafd3a2f053f1e58b737ede73881038167048a067258239dcd11707d578cbe03aa5f7f6faa09bd4bc25b3b28373751bde5ec6cdb5525b66d0e699772206c0cc1ef57684d6f53529710d72f8b2f0160ca556d2b6c35a98606fb5282fbf13a21dd6fd3a9310fb4032a6862088fbcf65661e47792b53779079c596dba547ba6cf1e0bd1d76da4e2b63494d9b1aadf215431f254dad54c9513865ba08c6c255f6c97095c2b879005d906bac134efc15589664da56dfae148571c7bc8eef56bb7d571701568c78e97d891a4eb53bb2fd7ac4f0f32651585cbafb9045ebd66859cf3b51364c5dbe7bd122bfa33d9724313d4f50ad4743ab6662d02dab8371ab2cd6e8636d1dd431e442203a4d7c61d23b5d4c48ff3c5d892fe9e6009dd3ec27c282015cfc3ebf69dfe2feae9cd83555b44ae879626a09987e1c1365e8ac192ae9722fc3db22168d657198e2285580a2ffabc7b0316819582d661a15df8046883c7b9e178738974839cce4832a0130c4c7683aa1c73636e514dd08c19be7d525da975cf41db3d386631420d26f67037d477f7fe317a57d6fbf583340426473c516cc8797098df00c48449847b4743f6d3512989e8c187db3b9a02603f620a65e189b8d3ad80f77330031d3bd02d8a51d30e216111d79e0a4bdb26308a36e113e7108ac96114e309ffae04b9afa7e4836ff4e61c4a4019b9070ed6f31ca1df8d2e2f1f658af306ff1db1207ed31bf76fd392cea97f6d73bd7e1453f773d5ce5066b82a6f839eecbdde9e40564fab1b5aafe1646eece8e9e6a97b950e3411dee93c322c383d56fc1ccbf8fb88335e2f39683f7c37447bcdba3a982104c7d075ddff671a510d1563af16c1802c87c5cdcac0959f65323f206991618f3d9882ad6a4333a354518ce1d3fa4c9d6fd8bac19c7ce4628321383a298727327299c1a2a371105dbc66489808e6cf1e546e58f54a5048c1e8426dff8d7a536ae17345997d8d47159db8a9b374cdf74db269dddcab9ce7e638137aa6e1b46f08cd3e37dd12a3362e9e9e4dbbe004527747792a864e1a6943779022bba67b37221fb7ec07234af8e6cf4c51e263c5f9eef7bb6c5cb97183d3cbec83eba9477a9e16407f1ce4a77c8bd8c0b8b38654337f7378370a99c11004541b9d2137dff8b46b561a25a47ccd19d0c36a6f9cbdbf0057885124a528e86e946af909b29c0687f5147595bef449a7a5ecbbaab0b91f45206888079fa7e93ac52811a4224ea5e45aa91418ff4a36ac21161a013c4b2c63d7ebcfa2a7494b3d00b3027ba0a2f8fd4ab9d80e95316bef8164d4ad132c66583eebe1da8c5e339b8507e9d4c0a3721f13cb9aa8b844b590cd99e50821577396ddd7341f49d1bf42b1ed28d4d0198d6ad1b538deeadec5019d871214b3640b740253d9c49c981aeb6c4bf6321fa78e6a1ca70f80557a15cb07f354821a8f21c7b8ba903486d210e48a3a77914739e1b7637c216885f2baeb8492f459d3e7c8166852648e852fdbf2592e03ca4ec41dac14a09f5516596301d385c2d89669d4fb9b4250ab0d7f9315e5491ed429439fcac08d69443a77df04a657a0ff0b944e5bc3b2254cbccd2c5f676a9d64ff254e0cfe3f7477732c5b314a7692992728888a7babacdcf6274310aad8615d225239d0f45a592ba7bef1d5421d2f66ae07f40a615f0aa0eba05356e8ba895540ea8e35dfd7a09fdf11355a31da33982dec4ce0b75649ff17f9d508dcad88224246e1489ea2a73bb07aac44c93ac7b272c48ad4b6d0d0edab963c883ff3aa6ea53277857bc0208aaa84e858d008ab098f1856db1fe089c570abf5717302b6e428ff3f7179de8cb58677265c758592b4756f62067ce53b849e42b3e25aa85b352c45fb5e92f099db77ae8470080a0df9fe351a6949d2eceebad4efd9154af5d0a5595a18c82788e8d3fb44ee13ab601235b6592e268983cca394fb36e1cb43b28407b851fe438765c8f27b08650b7315f84cfa2eca79bf068559ea993064d69b788e2bd47b6f842272328f4fe6cea70ff512e6744c49802eef738b76dc907b8ed36b257beaf40db0f71cbdc3ef3fd38c75f0038da20a7d0c822e5cc46221bd478f630d3dbe9c34f30ef781b2b550a028e859a074f41d26fc6f0c2116847f08275a686eefd655f5b327c4721e22879e09bdd5ee4602db8be781dfacb7aa7147471fe4d437c5414fa5c06e16fae35d68d8194439ebbd5e7c862811d1dc9b8b515dc05ba636e6aee4a0752ff22a869f18f28e927e67e7c57aa54ffebb9aa167121d1b6acb4d670899d5412909d6f70db9be36b80383f1f8f7ac626bd9adc04a9aafcf2ccbe93ffe13e1877a006ef09ddb5cffac33aebccb14826dac9a801c922d4d04bef6283890f97753d5f793ab154d856735f9992a656279880c59bc97234ea621c06f4a010994f8a270f34e961dd0b40498dac3c710fbc90d6ee49d7b0962c079b06aa86953042f713fd5e0168095578ac4ca3d8b457771e4ee90e0053bc34892306d14e78469e7b392c046afbd3ac2699d0e750c2286857894920b1e156df111f7f4a42c84c0de25570cded32f8de8adaaf908cc4e34e99fd635e8f4724f85425e8cf05c8ea7e4302afa99a77cbe498b2b4eac0db16d9dc668608ee1c820672fb9211d864e927bb1b84e5cd107cc512a80f4fe054749b421426467702e504499330a7438ac2fdc5cd4e622f7fbfa6750ecc6e622e4539b0bdf940992e8131a229772a967d2816d9da6b62c17808475c710c5f4ca3d31c492ed6c6e88cbda4321b55e600ec9efb77a02dff946333ea50168e3f0a5894067f83b5a46b372445335cc4593e36369212fd43f76ae100bd4382e221029705358ed10cb33b1b137e424d1b4c96412fefffda10ed6a57cae36df1577361ae864596b44bb9cceb4d2706e4b6f8fd163434832611efdf39cc2eea35a690d8e3c9335b62bb27c917b09b1aa2038354248ec5e38423165051153d15096af7b0f9a91b245d4c72731414d9e7bc312e5371e9d1bac5a706d2a544eaceec8b8a958ac1ab8f58b6bb0ef6c4dc63b60488789f687c6c6908bc68bc56af801e2558d5d32f4bac9c4b714a5c82d9e52afa5ef63850478dbf256d872a786d2eb94b6d1970d8836aa0ef1dc11d652c60e13812fb4d0763843ffcd425738cb1ec75e513868f5f34180aad853edda3346e4976f215c5e1e557cf671193fc4ed9068ac463b4fd2e4a21842387c2ef1881e8b8748d5c8e5fe32a564709adf946a092ee42ff5b5641aa6f7602c500c71b91bed0fa03c0a171d18715b3e92d5ea83d85f1a68ac19b52c1808fc113098601925fb0b0d60580d346b46277f910aceb8e0bc88a5fa67c5f94d72199732cadc63a86a9cfb171e9c89d82f34377bb1cdf98b73a477b56d2b0442a1a62d262cd7d0644e06090c60af9a26da0e28f2c7ffcec886280e25fd225bcf1b77bfe8e4702b9eeaffacf85730e38f844a772504586f9831d5b98fa6687fe1188c647d93f25987dc8eff61243070bf0da8502a596bf7ba5cf4c5ffd2dd00f2fa2f4b69696f1e77c023e86c9e54b1f17b0d8b4ef9669f5c596499b744e333582b1e14e8553ab8e0424caf5d58f0a5076f23b3fe523e67bb2625d289b99c6854a287c538eabb31ce446d97ff88923f25927fcf6f1473bf609b8400d7261d7f31f1b19de1e9917e67f96c81447a650349629a420efab4488b36178cf7b640e58afcb5f3363c5207323695e1376e45ec1393a35528d40079f8e5a42d560d43704ffaf2a6c6980f1e964996ef3e4964b1d4ffcb4c5e44e8b4121f420a499cf3a1cc7e2a82f1cb4a04a968cdf8f7398d90279e97b027d1310dca10c3e9c0887eb493a073622acbf26961dced5c11a548aaff86ace4eb8cef16e065f7779e28ceb5273ae6a8afcc751d9842f9d874d215b9e605ed332e197dddf8da6e9cb58fc76225df541f5957b955b31d8e45ad96bdcdb8039e571d5bd46c1794ea30ef0ad9ed0cf7f8261e225f7eec68df5634d76d40578b30cc7c46f84ea7a8f71b08098fa6002a332a65a14749a503decd7cf7f08c2f24751f4a2606bbefeb4c7e77875d847e2917cc3c0982b6f97dfaaf1bb4e43bd69cdea172d07db72fbd128afbfeddf89d9f299ba1fdbee23eda6f64de17cc67d286753472fa16bcc2fe594dda0a8d0edd50441aa34ef73bff1d634318c610e18013e175aff7d4be742301db962e7b6d4be7eb814e584bc759953230bd655f8aef7d1d56d4139ccd029c8659788618af6f19607518b5a55bcd221d64fda7a859087b2f3144df71d4678cde3e13a651a49681be738a31ceb36428dea6d010058edb4be7400ec1507c7d81a226c6cd96ce46d962b05cf52ffc7723c887ba4958ad85ae703c4af093f791a73325ae621acf09c198cdcb6dbe164b82d9a666e8098ec00a97d4cc0b6baff09b53818b72d32b73312f6136afac602354af167bde5340a7d550dd6c6508eb57eec245864bcb3dc7c6086e7ccdda0b3d6c3c7369c3df2edc471115f526c576279a7356e8ed65737eb62ccc33c7114d2df4b35ab21637be33a9afab0c492a988bfb899e3ddd2e5379de129477d03ceddc897148dd1dbd287625d3bfd4999366eed5af5b61e91545e3088918998c621e04a89386b3993941b82ed63da4eda12710c6cc7131a85e9888c07127dde3c80cb213e2ca072495b40c254592bd27edc547e149b73eb4a138cb3a16a89cfab2e6a899e866c67926c9f1bf1824b46a712c1cd8fbb050830538716269682949c3073d936dbf66121f17910a77342d35a048c3c988498ab3a84f5c1356b4360590b65bd8cbf7a693c1f8c28139352083880e444a0a47cf840688fc0e7688d621d0c205da5070b1314a46340dae831178341e1c4a5dc3dcdcf9182e02da304d570955a36f2eb593b10aff9dcc4c467998f5bad023611498ddf6cd88131c3787440ad2c18c36c14287c81ee173fd6a65833fd68ab16ea5f4436f65d8c29ebc32be185dd9e53ccf004353ff6f85b349b518cd3133f4e29ff92a0147f824b56a33fc9357a2ba81ea7e44cb440c8a8616b50d5e9fb60ad125a9c2065a167af4974a6f854fc925ead008d933ba8427e8353c75ab816b7e0a7ea9c27e9751bf615726127a62b95198ddc7013a23fe0d0f0deaa0b39540a59f768f36c4d51363629b560a1115bb104b4fb7c11a36e62122bfd23b475606531a867719e62aa2b112fa291e359a324eeedc669db0aa97f8a34365324b546e5885532ceebcd7e2ac721303dbca47619786990b37aa04177512417b1032d295740fe6512ad98d945999cf543597e65f50c1a337f93782bb265654743cc295cc5ad6dc0259ae4675c291344b086bf15b9fe6f03c45780f6d9b57c9586421299ed335ad17eb96a7f72628a9e87f59f886950e3c6d6e24f12a66f3b11f0bc39ae37aaef8cd2dd2b4f895516f0dfd5f0c388025742759c07b44e099186c23f3af18b416d14a64a1afde98e27aa64b663035c540217fdc650b03e9936b9f943f92a704e0abc68d863973d7dbd3e1649d07a98ac900f934cc555a3d4266c94a28071445f54c5b9205bfbd65e9e247ae4282270c389be9fdbd6d17254089d3876ab5a6eae9c0a820c3f02acdd18cb091499039acd1309e15a5102ffcae26ba989a9294fa45b0d65818f48fbb1964dd1c4369822bc1d0c041bdafb5c8f2d4426c99e8d3f7bb3ac9ecc0b56760c3585ff30b8235dc2cb31e4b6cbc59297d14e15886380b5031c163d34ea325ad1a7bc5b8318ec3ac6f304871614183058fddca54f856bdad6b74f39e49f52604ec40b98e4c962f58ec7a107b543758abf5eb648849ab22f49822c99282f11dd48ab5b5a14aaa20bfa24b2216ba8105f551ce443331c26fcaaafd52ee4177646b8ea69ec26c5fa07f46ed9861001ca4f1d54e24d258a36f6eca9d821dbbc53354a1c6c1a825ceb26a6e24510535f14469c5b889bfb336347ef87c742a2c665dab3351e93a055d3fced550ab6b9cd404511c6d6fc31a0536f7d89e5201d38dd3c61f061311f8b42462c3de75849eb4d6943de42fd0ca28d670655a31e4db4dfbbaa9beb27e845c613f48ca587a56a7c59014d778124f7aab3810c9ea3db2eab66fa2e45294209cc7ae390c449a0d772d6e3a5f1ba9aabe8a4a7dd3442ef9ad104cb3695796e121f2744d85c09d95b0bafa89440dff04ecd6966d25e974162bd1616dc59f29ba084d92595ca7d6484639780163ba0eb2fa1db89aaa39a60b0e522f0dc9410381bde2e58214e629fed8807a1628f92d86950c51313d05f2b4e799ae0c703dd93db59669bdd7f541ec69a6059558c28676ddeebf47c7988e0b731ee679f76227efd111030d8bfbec7bacb56ac32479bf1da0328dd97eacce3b270907a96b293be400aa46999278c9a011a22e552ce2a4dcf999ca9d9c7bb7245f714082d0cfdaf7bc071292988209e6579e6f28b6654e3e3a726cfe26bb72f4fe48744acae8352b65f2ebaaf2bb420420cf23715559be9c71dba78f450540357c27c0bf762069c531dff8c151759d0868278100647ee4f01a1ff404ceaf0a078c92dd3e0ce3140bf7ad33f469ab0ba97f1956f646516a6551a05fb8d15507e494ab1598aded4058cecff394e914e8a291b77ddc524321da124d392ebc00b44781a5a4d1ee3c4423ff25df85355160671df896cdb04e13c4533e7c9af3ba524434763c1b85b414e2cbc97baa78429c9107026323c668eed2d973ebd05f101c9fa89897e7bbf3a7e368cf382b326a16fb08efb3fc0dcb756264b0c2f15ffd77477b435571ab16b8f9636bc8889b0e41da6e6d1f3db8c3a6c8c3cd09f0a25f5000255ea6ee5b47bd554131c23ec781f02ace1d429514b865dd94d71264a2af6fcdc7be07a8d56c017d601a0f810bad30dfafcc3fcdf5d70badf513accc2add68caa742d32cb6c2fdd28621516443c227d1069dc576992452b34c602ede2feb527617fc5f881c55b608ce840a4e03c14051fd99f857355e780a84cac0db71f63b840203ad5f4d2fc7dad943737d3e20a7b6bf8d2df712e1e64714adc0789904143ccad8d256bf04f6bde5b5d7d15d43363cb2792e90e6795912ec051dcb24c2aba172424902c2ba1aac151ef85185b179f1abf694eca0ff36e165da4f9dbbdcbc53700e5af7c2a8a576087834b6f2c13e67fbb570fa0248382742be8c67e53326897df5cda04a912c84a27e48e27457a251e8992dcd1e14d480ae3d29dcf56af2d8b8534e1c621cc8a42c21ee389c2b0678983e822e9741f592c6d24735995a6939f5112977390079b881099e1b43db80037504fb49f57ef8e4d745e3038f3dd9c9a8a0d734e7cea723577eaf992755f9e41dfd2420c45d9894ab4565a52e21b9f307ad948e6920b9265d661e52a3647c8ff48fcff33c0780450bfb0ffd661564551ec0b5ffae51b24a7411cbd51ded64d5fa3c50f93f5b3458aa0e5a13a39a32b567f47ba7c91f6b387ba2498950ec257d6638f28eaa07758feaa2b5e723c406849983abf5c88b71fce8bbbc4bf786e5717944ee6b2dde10d690c369572fc9bc3b388ece0dee35283be926dafc2b4d74590a5cf3d4a5168c65a3441a7332accef0ea7c2a86ad448c1d5fd5ca5bee03c298c1963389eb5176e71d94ed2f1f3d9e92700868d97250fbc0d608c4b6651b2ac8d496a76c389280898c6ef115daff0658b56dd4d21a931e1dba6235b8ee50e3415f136b9bb73b52f6e6a560804e60af0ed22c007a80c29ccc9849824c09d91d00e7c47d152202a6068c2ef98a58ebe1cccd8e5a289fe41173e694d94e08c01aa70b50c187e1b7955d7f4cd2286f26c42cb92b22a732439411b73b4a92a22bc3cdae7f37046d397a63cb7db3c286261b156b22dc4d74314ed02ef5059cd23cc877964dd2eeaa3b41b25c7881470d1a974533d2be5d5e1b4f7bd287ae54ffccecd03878ea90e4818f27c6fbc0cc21c7130ed2d1b136481d82330c0904b0031bd7fc72e5c5c3a96d4ce16660b2870cc599d54f9ecfa0fb1aac10b2d207ae2f44700316e617d98ed86e7c5be92ba4f85540eae7667861790d3fa4d5c119c5cf7dc541fd8aca7c0b6d8ee4006dbff4a68840ddfdc2908d0b76d117464dac39a0ec34f4e53d84bd3d6ded2cbda15d9e814db363e4e10b116ad94744333350892c7b536b1235d06ad1d463f0f78bb96f9177e866d7d478bb509631350f3fa98ea15adfeaf6fd806ba76103e4809ba47c596a0b2efdd1bca5cb908c25aac8c6fc0d970bef56ecac8164efae1844a403540ab11eef72ecfe875379eedb7c0c8ae66cd47e27bec5af035c10f26d4307758aca3e733d9afa9b1d2586a9c02d2e2bed5c907fdf6844b2aae7df4c44b5235d0e43dc2e9a4cacb2bf6cf7064b6b7acd17e6822dedfca261230fa9f401bc0442ecaf0958e3d7d4e988a883cdbe720027cf3fd5ae3e7888a77aae5d865caad16f372e4e35c8e7ef9af4dae4978b35d45e90babbe39016e1713830e841755b8b968cd97446af1c12a037131078c89a6e78e1acb2c40da8b548067507e24935e3b00c2daa5e78ec00bcfbd6f250faae6716cd574aeacef270ef19b3a466d7726caa46526410a72e47d77d2d5b2aaf100f5326ef0b8866b1b93b5872438ba3cf4b3da4e72700ed738d1f0d0687f3a5616f0f69eb8d0b255107d737aa06224e0685efd8749cac9c680e897866f040456d18ce1a7e847eebe2c9c38273c230b80035ab7c02a2b71c5dc0d3ec9fe5992b351653e86c5d5aa43709609d6bc07ebb33231662356b04a2cec7e2fe4c52bac21c34169fe336aac347d47dc8406b0ea02c355302ba9f04b55a22a0655bbef302b40c4a01c47f8659695709f3d16811e348acba9dbe8c84ff8156e885994531487124d5492d4e05471d4c9b073a5fbed16820ce4c7a4f0dc8d20a09c44efa10bb2e3d065c73b1d5820087019edda33a9af0f8fc91cb025aad11251d01e4b48b6529925508d88adb8431b5f839d85fee7fa25378165503a0b92262c7dcb663b1a899fcb945d55197655607659594734c365cabf3faf883c02cf01c8c06df433f1b2e241a09b51b8194c3e9d01f3800d8020c54908646697f88887025d5ff9dc1ce3c8c6f315500497ed0082cc3aaf9993ae37cea1b5b695ea060013f1680c995500fd6fdffd72a404d1b08c80d0982f7964182af53f0924420bb7cce33382b7fc74a4a12d1113384430bb929ec3dde9d5a776a338acf1feab609a68024605e98fbfa7774501cc4c3f5d21ec1fb30ebfc520269e0eef4568ab69b64625c7ea49c848a3a83eb2ed8b38b188f50acd72cd4584b30c1d167942dab9fd4dc1e22fb99f6de7ad59bdd63ce8d0a23b501585c6f2458d3b557a5e912b8d4f33b184796577ca4b5099c17e4d1c136a1a6222bda01331df79ce97802bac7d00db124c69c8ae71ef4e614fa54e59c523d06999e62547ba1cb6ec6e4160f4b40d507a15fe759d96d4988fd9d1d8d5587670f6cc0540e205793ab3a18943a1df410229f6e3dc33ae6200eceb531d038b89ff85e0a99f3deac0527c186d3e090c8650b1b7f5b22e524af9731c4951d62d2b3a0c34109d77c77d4aa62cfc58f1706bb1ce4f63fcf5f9cd8c5c980f9b8845d247abfc5e087d12aeee3a8f17fcd089e8b68d66858d8dd3c116e83765bd3a9a5f1230f42efd828faffc0ea5f2a2c9f4990d59887a50ed0864355fdccbef2873790644434659c18f0d85514fa980564c0459eed1d851e5fdebfe49fa41814ca4ec3ba50fa4a2d7ea2f53dfdb9086c77568048fa61f873626076d752731d50281c598d7d5ca3171ebc12f58823c8a21a4f4b305b3eb232366cfcc92113b916b3514535c722ce968d7846b4ac40075c842e0e85457a416d697947d7b3e0c8cbd0ba2a94f884a325522301501beeddea942decbeb63240b8f845be6b7e62290f99a93c1e753b39cb3eeeb8c1f2ca05f1b5f794ca3a11b448b4a55ea681e874f9684b90314bc3bf38619e3fcdd07ac4572ad987e7d4661b9634ca05cc1e61d4b15ed17af60b5267ec3021447521cfa9b0b8efe9c1dc86d4c3275642a788c40c1debdfd67190195906d482699cd3faacc3fef96195268d1237b999b4439d4fc960dbe517c07692d8b839d279ac3f7a91f5043ca96298ffbbdfe41d528ff0ffc906d7dbb2e41e7c8abab13dc2379f20d449baaa18b6b7bc43b89b69239aeb694c7369312908d4a2d018210e89a353726da4debf8ecf42e25ffe0fb1d5f39e29def4b2881b430c65f2aeb18e25de890081ceaa2ecc4258c5901cfd3042928cdb545b1f43a50d21acfd7cd1caba016f53388bb814c031837519dc0b1828074c22341f74a0317bd09c2f16e9baa5066da44457cb47d8627caf1d30fcdbc2a1c5ddf67a02bc4089f6e7282cbdbf1e4a56de5a58974071e857fec4b0c1926a02bc50c84377981a15c72d9645fdf412f9c8fa4dc666c70ee8dd323fb36eecd951973d41b66f3a0d4a1e6b89feff24aada4f9989cbc7f666d2a83d5392d1075f0896562a81c1acefb88468ae64774316743d5bae1e1f83a3a1541bae47253d91245ecf137513acc7062f462d9d0101dac3d5cc76096c135eb4859947823bb1ca78f74c9e2876c173b758ecdc15208918646929653e457a5a90e300016bb2e2360f143e1d16fd11894cb2fb98742dbdcfd21f84a32cc6566179f24b8c72388b507dd7903114b6f9b7da9b3418653f27ad6a51b5b89f8bc034c286a242df51ba24903b4bd1641a0bae8e8ff7cfc46fa339dc619382a8b3777fd67c8be47c3ac011115beb551f915702c5e8f8c66ace7ff426ae3c34c84c44cc902edba6cdb83b17a2e907628414e0a8ab00f552a9f119a975e823384d8d723a931be70150bbf9226487ca17e23be0c4ac3bdd4125a777a8140bbef8019911c0c20c1a3df2580209acb71d3433ee35bde16ae972ef1352b96af692bef5b6b38dfb492a06fc740c2d700d0ad1e111101431d05c4c84dbb247cc8aa9da41f46ef0db4f0d6fd2ce8012b9bb5a56eeb7f4e563ec0440f329c49ad3fcb020dca270288b2c880fb82c2604e98490eed634b74789eda19b45540afb802a5e30bd10729661a3911eafec84164017ddb7b80d8122aad7fd748ce37ec3f8d3a370df83ad4a529e7517bcde30c9166469573e1ea2a3981e256c3cc08e12754b8ddb76a34348d1492ebcb75875fb4a0ea21909bb9df84500355e6eb6885201b4ece4a3ca4686528955f3f92b8047bd43c68fc3311509222a54261d3ca726991efb3a2ed3af21f0c1ac2446d823b65ee1c328a8a6bfc55fceeeba594ff268934ce2c2b9c85f5f12cb88d1db6b4417adbae01003bf0f1bd309fbfbf609017b63775fec0e4424a46981c2a305b25fb58e7a11df880f15d0fafc2b0d5c7039301a0a2a1e970aa45248fe79ec4ab2eb247caa142b15dda38d025818cff8fd61b6f911fff74f7eeecbc14ca507d6c8837468fc38c7e43d1d2d628ade78685f63c2f8ca6c0a46a4714be8a014552550e26021e041f6efe28845ba9f30f2af6d44ac03a60440d794fa355ec49d6bab14ddb26efb851782032676e689a03b7cf77af7d0c480351f42623262056e6744cc38f171a3bf5f005d89e5be1a786245b8ea6d5a811abebc5b7e7254df7baa4b77e64d68166f92c5e894c504753e4848b5c02e8911565b7f4b94015d86c3df26ad6f9eab1d344c6ed22193e488aa460aee2f138cc79016e163f0738f9ba26d0cc20cadcc6179593213ee8f013fa4588af9d5286bc154b4b1ec68858f5ec90e9c7da4bf99aae53b43a71bfc33df354a897d05b9bb46ecba9989936dd00a533862a5531143023db6a509c24655d552d4c1761831bcb1f52fb7f4ae66b7c3c6404977aa419973c52ddb2ca5c1f0870a439402029aa5cf7f94c8c5f3f74e0059d85fa16ddf4bbbfac6c253e54046c14c86fdaaba49c98c99006f997bec2f2a82c05647b5d72a85d16f7a40886aa9cb57d7e88caf8ef8eff35028e2aa5588fedd21caafd05daea308d1446fd8744cd0766f5d89b0cfd98b0dca5982978f1977c45e5988057c07bf595bee1cfde1b9c6c22f6432340a4f82eb040cb270e7a1fbe1a226e576312b1dd7ff6de4345d994942c90ab977f64f0f794d01d588d48a034a1d33ae5830ccb0a30e62164c9a9f625db6e00f115a350495457651a41e611d5de8eaa6f108eb2672a4cd892f1dc742ce78200080b798d9d57ce7a00bb42b0e27555a0c0a46f742680721f0686985578870c91cf6665bee2db74c5206080b990a750a798c92251ef494a8d9f93380d2caa00aaa4d7209150dec9213ba9854d9f94184f8b1f38b308288aa267176fe14f8ea0b46808c112e1545b2c2b07e2a8fad7e2d6cabffe3abdeeae79c4855bf97417d0dea6f30826df53fb8bdaa7e070faaaa5251edd8ea8bf0d567ab7fd5bf49ea93e06beed54f81fa766ce3def4b5838dc361332a285fb45019a7886ab79a1c31ade620f69d4b9e9c737abb756150d59d3455385555551c8eea890a296ace59bd6dd234c772ab6faa5453585bc5aae14200a5c695206f9448bcecc86aba9471994aca6babaaaa6b585a6cfd3f39220b3dfd19346c50b177b67efd2174f0a0ff438811686cad9f045f835e7f0a4c245da1febb74ec72dafab675eef55f225a7d6d7fda0216a69c8f58b2ec9cf3dd38dc95283b3593c66d8e8ded0bace12463290e9710e20ff877b8813d0f6e489498a638dced86cc92b452c4ca9cadff47eb0e76201db9a6dc8839a2238acf8d44d08d0bced61199d5a355e3d6b79ba6a23267e7ffc9c72ac89d8f5c4e5f6831ed492303f7b7db8d4a8e0b36f8064775adcdb6d96c4f64fb9eed33d85e83ed3720d9b6ffc0570adbf61d7cbdbded3dd8de01bea66ffb106c6f1c0beedbed96d64ec8606723991f3bff4ece3e9b89c43e9488a1e7cbf625471663c815212634e150f303fecdb181bdbca4328ad1c63133b6ce3963508d61beb6d628b168b399a5903145cb4d500c4b5f1c3a6b6badb5988c9ddfcc59625f3b6f71aada3266e727ca36602fbde59cf305fbd215c6648b16195bff8fd65aaeb67e0b3d6d6d49275b6781b1f0b2d9ac310b0e1c2e37d648e5682201938f3372d02c2d817243df8a3bdb6c07304ff8d7095ad76c5576b6d96cf9cbc7d6595f6270e7d2c600e312214a5b8e5269ae0dad6d4d47cea48ee4716b2a6033529dcb82a4daf6d565a74c3f39e733c29dd39b17716b2fb02fa800984979bdc16415650c95af304b146c4bb63e83666a67342748d929bbc250565695e66999541b51a4c593125fba52f420d6b845d939a7699a33595400c8c2d43004a9394d73dcefe5aecab448d3742ce835e6a5568d1dcb04d9f92dd832cb9daa326960baf8549929dbf943c8cf01b9f377f070a6cbce9f810fbeda2a321d3b3f085f85c694bc948979d3e345d98d4b63678c1b0daac8f4d8baa7ca8c18335bbfa9b5ba75d598a5ad89d08c21e5b4ad2a4c982a31426a3f39a2b7d0e3b2e06ac61713c4c0d0d05205264b6e28cb85cd56a59452e5a5c7d65daabe90d03022aa0c9712736698b0fcfa01f58c0dac0da96578f0ceb39c858c704273e5e518230913af1fb0b6953470313393460693a5968c206bd35a6bdda569e72e533258b50b1caea58f99a4dbad2c2cebca51df6e719048b828c2c68a6cc90ff83136b0773bdb39df6ec833aa2c2b5106c02044e68dcda635175617279b9a855c62a5b5e621bb61b3e550d3a25835ab4a15952cae176b0fe83addcea576d2369b16d28a941d1e48d9a261ca0c2e5953d8646d59e11aaa59548658d15a6b1f1819255027aac881b181bd9bd6faa6d3348b4b2ceb38844b0945364beb0786242e69fbad7bba5b1698ad83704144dcdb781dd4343067137aa0deb6a1c7f180433ceb3d1cef857840ade3016b39deed66420dad2a1394164c54e07154e544ece864000d1812400607d4141439a298ae3035630bfa91a6555160b6c6c66530184c310209171113ca1270cebe5e00516d6db3b131612c79c128db3906164f8c2b61328864d0a0cd6cad8f2d8e2e96b48e2ebc84bd70d24568838bf0ec51fc94532a9d7c12b961e14804cad65bc7222b287c2da7e939c48a9e5322c60b374ada4869715dfc60790d0972c28d9030baa6cd8274790911727441ceb99673ce393f6dd9ba2b08920b20d0856a99e6aa0491ad16b92a1c5a6b7d7dc009fb91c5821f665e40a46879f2a1416b3d228518272c96b47101e5c80ff82c36b0f763b77ef36c6badb5e632c623cace5b7af4e8e24402cc490b903d3aa901f3216500c79e28417634b9808102d4ce39eba82265b8b4f5efe8e350cdd651def8256a0cd9171f4556f85c6da6f58ddcf4b4b332e90038acc2e40072e598032d8b97591914249668543953b1934522e7cc23cdd6578e36a8aedc90a1c108a9b329ca293425bc86dc1276a0766642913c3271b16dfdb59f1cd187516192f103ce092654dd249f2f3b2f0db7d6f6b844a5831c867cc575d69380704c0e2250b0c8e2dc143dd976aca17596733e917572ce64c19dcfe57996a6471a6954cea50d0bb5355a295ac8203cbc564881a32f0a3d268d8e161a746061b154c3a5393b6ae476ce369bcd4cd4ed6d369bed76bb71dcf9cd6c9b90e470a0d8f9897070d93907145886303dcaca74f161021212277ec8c8bc6a4b6db69ce399c678d990d2c046992e17045661a89448ad39e1c684adcc94ed53deb9b4edce339b0d8d4ac3894c8d151cd498422eb5d02dfd5897c476073b33cdd8d98ad1f6243554baa1648854c2476b5d26666bdbaba92d458bbede07ea07a2449d9b90474dc457bba994ae768e3243c50cae9d9f28e591f0b97a2cc9d6aa366118b5c4b8b1f3ef64aa186e76eed9d99a50ca08a344895adb313043e516242d344c5c24adb5d63c6d7d1c401966c206545765ae6450da295b5fc72652bade3cb9c10a582bd2b6aa311c61e921c72979f6236bce4d4dadb8f40e2da244ad75ce696a4cc3b55555cd75204e981671c0bec6d2c8c15d75ed9cdaf2063796b9013b971d68d9f935645555696469a1cc82c683000095a96ad651e52583adf5ad8cc679762ecfe569769ed9b2ba4c6cad35eab6e7d1560fd52a143bdb6c7aa8d3f48629d95aab5ec0cc2441d252a3a6478e937772cea92d2bd53e4d89780a2575753fddba9f76f97a55de7dad8b5561481c6cad5120a063093b361010d0f7808080deb2f120e9c8ceff9393cc76d660e73ce2a7359027a94b638eb050f3254ca665e11794b8438b6a9aa66d9d828a03d51e756d47e187cd36f4606b14625bd7747aa15c2899acb8c2d5e505c72c8ba16a556ff09c4f90ed344db5de5a6ba37eebbe4b0c06832bb43e03646bad356ab31d91a6b24cd47e722d767ea22309af9ddf42afc7ce9f4189323b7f013478b041c6ceff413e9af0b2f394e309223b7f87e4df65bacc6aee7b3bdbae649bad05112f172484b6d6baca45d3d64fe4ab00b6d66831cd7927e732346cefb4f59bfa350b385bff4e2d45cfa0bd9aaa69ca226821d5b148d257d1629a5ad9203f870f8440e0c0f912b628924fc86976e415c3ad07b0b5bebba4183572ac78898981963fc83993a9d8594dd507a228140f2dbea8ddbf5fa5226d6bad514f62a23dba49cae4d692193433e2a7f37193fb6a8e34bbcca3af437fbe79651abf98c4b37dbe39c4be112cc8f818eb9212d345e5770afd79b7edcfc74b5f757f8e2dedf3b1d257fbc60700393dc658992dd972e4773e469e8f8fe763295f737fe2255f83fe7cace42b857d3e1676d9e7fbd257eb669f2350c8c9615c725ab1bcf13bdf95fe81033c7c0871eeec13f7e75fa5331d3ed9a3bb8ba7adeada27cf3eff8ef90af4e75fb2f3af99af67e77bd01e25fd6081852bce0c252e7e679b7dbe17a57cd5d9e76bec1ba19424086589834caae9671644e769b86f6fde6e4343424240d46cdb856db3e974b9dc8f355f05240695a02022f6e9a10f2f5b736dfd83b8f5eff8aa61e7ecb465a36fa23e866cf4777c35da40404e4ad60a1a873b97554e2a2cc82a543bb6ef31036b0ffcdd06f628e4ac3f4759b1338aa225385db27d5e15216e5055a4cb952a2348c2f67986ea0d4c616243868c99211bab052c0a8f36594d5353d6006d6001368ca03d80ce0927c263a3522e9cca1243ce98d841e6f503be9a0deca1d9aa5f289aab862077bef2f3da57dbfef95a97fd53db3f3fdffbf979a29f27562100920eaa909880c1cee6cf2562dfb90c4a6457320bd8f6ff11fb61b2aba9656afd346dff1f16bedadeff47f8b3648f84b6ff4f10fb4ce44f120abad09eb89060f020fbf9edb2fd6f48ecb35f5d9ed84853034b9ad8cfff96f4f57251629ffd42a3452c8e0a2048c6c67cbd5b9648335fd3b3b45b945d4d24486e52dbff46e446bc15ed916efbdf86d867168bb7a7b125f6592c326441122c726449faf92d887d23564469a932c5751585e3e77f4bf2f56a112add967cf5bf355100b3abc9c4b445014921698f72db9f8211fbcc2190c23169c957fbe4ab25425128426d7f0a52befaa0d9d5443291d2c88294d867268d6d7fdb10fb46d4502aa5acf8f266cd929fbfedc9d71bb6fd6d44ecb36b905ca6cc9a989812f3f3b7157db519b1ef0226809181d2424c9bacdf4d22bb92befadbc46c4c76c565cad89ab6bf8d854d685bb24740dbdf16c43ebc04da92aaaa946dd950610645959f7fede8ebfddafe3524f659af1c56e4809942030bc6cfbf96f4f57a6dff9a12fb7a94806c2142e68b6ccccfbf36e6ebcdb22c62765624ad1665576cc54a4d6afbd788d488b5a23dc26dffda10fb7052897d56ac8d10305792a6cc40fdfc7dc67cf539f3d526f96a854ab52521dbbfd6e40366571c15e523b6fd7db67c903e497bf4b3b1f1b8fd7d82d867bb84e9f104489a3554543f7f9f245f2f96edefb3e4ab7df2d512a17c8a3ab6bf8f94af2a9a5df18e1d6964cb337b74dbf8c9ad1c30634e7cd0409344e6e7dff3e4ebbdb2fd7b88d857c14a8ed41b17295c287ffe3d455f7b8cd8378247d41c1c348c6cc959f1f3ef39fa7a91c8aea47f8f580f935d7109b8849ea6eddfc3a2474861fbf704b10f0b714fd231e9ab1df3d52ecdceb2c4d8fe3c693c517675356a78a4b63f0f111e224fd11ed9b6fb19cfd3f6df51621f05b69c52bc28333105e477b9b6ffce99150b43f5050c581024623fff2a42259e255fad310b8abdb3fd77c0ecea60603b62db7f676b07b9e3bf63c43e5702778edb7f27887d1f1879149320c93833e4e7bf93e4eba5b2fd7784d83701123eb0b89480b0d8f2f3df59f2f56e6dff9d21f6ed145733a62051630cf2f3df79f2f54e2142ed14d1b6ff8e94af3c6876752aaa34b2e5993df25187d867cdc6bec4d0dcd0f811f5f3579f7cbd52b6bf5af4d51e7db5c8aea4affeaa98ca64570f12446ddafe2a0b55a82ed9a39eed443569fbeb18b1afc253d70f3428a82e4d7efe3a475fafd6f6d7492ab1cfc2d11a3bc1aa2a98a2c6cf5f67ccd77b5c9a9df9eaaf93e66b945d9d070f1da9edaf434487a853b4473cdb5fa7c97de7d23f1df3d52609ad6c7f1d25f7d57efe29985dfd86df48c5b67fba95faa752ee4397d2aba4a5272294ed9f42b98fc2cf5fa3d9d5911c49a76d7f4de62bd0fbeba53ed34aecf324e49692293f90524861f3f3cfda5e74258652132e35ba4ef8f9eba2af378a5d1aa364d9428544096f7efefae8ebc54276f9aab7bf16f395c9aeb74c19165ae83eab7397cba411258841710356e6cd9c1d3f7ff4e8ebbdc2c053d5900a86931a4d7efe68d2d76bb5fd5125f659325c4d3f908a802d71faf9ad5a9a9d15d3ee972ffbfa9f31d89ce0f2149566ccd74bb53d023dd268512951a4eac6cfff3cf3f506b16fc414942d3496aed8b092e477a10895967cf5479bd021eae48f12418968d11ea5dbff04b3ebd5a2e514dbfee7d6893c93f648ca7da7d28dae92969e4ea291ed7f42b94fe7e79fd1ec7aa9a8d2b67ff6cfcbec9f95d8778f44ec3b89cc3813638c0a96e1cfef93ed16d995fcb19dc9ae37c80d92330b5f7fde3fe7257b745e223169bb0abe70c8411b621943fcf99ddafe6652897d23808c95e0fa51b544e6c9cfdf1cf3f54a2d9bcc7cd5396bdaaeb3fdcd28bb5e181786d4f637899866d11ee5ed4be65892af56a8642ea9d84e61fb6330bb9ec0f68078cb579df7c7487f9cb44746ecbb410772f9f2862a0ac5982c3fbf4eb68bc841028b96e254d59c9f5f13b63f1e629f8d7363868ab22461694b7e7ea3887abb6b34bb76c04b1a99af3dcb337b84b7bf2bb12f04f61130d824c17281e24611b39fbf3ff97a8bd87781375c66a83163c411f6f3f7a2afb7c9881e5e53a2a84a687de1faf9fbd1d7cb04d995147326bb3ec06ab170a13b07f72085b845bc518c81e5e777c9f6bf49bb34f3bf69be46d97500b6777f00fbfecefb5fa20f3f60df881c41946638515af230fe2ed4f62761440f2c5c4436675a92557eae44a8e4ab59b67dfb5b0cfbbe05ec8ac1f6ee7b2d898d6e98af2f5d4c18c3defc3cc916b18398648e8d1e4e511709853528906e82c07162f5bbc4ed462c63e7f6d7421c4ff8e6cb9c186f9248d43852e32d65e0b2d6e4d83adc106e68a76c3205e54c56da8fdf35824363244ad132cad6e95eabd1b175bf93a506ced6e52e60e64b9428655e748152e4a70a9658d67207063515068dac3426b66e4493a4a9234f6be6389570896c60ee6b4b1c0ee759655b5ba771b61e1c0e37e684c3a1f1b1756feab2d0c4d93aae1a0e87c3e17470382c24a2c709090909111191d93a32a4adfb1f5d161997adcb7a1c0e870b010bd943cd172b5e8cfc80bf7177c806f6360ec5e1deba692257e9a1d50087c3d9233c3474e6cad6e1703b381c0e6764e370389c3e43dc3a9dae4823c5d999e8f313e93e7f2f9bc841a1e8f387d02167329d0a9f3f05162409efd21d66edacb3f37ffe4b64f7f96fd178bcc8373b07edccfbfc57ec86b9637799ff9e79506a67ddce177c7e6791873ebf2fe54fe1620f0d0d0d55a5b0da434355494c7be82fb8e082aa1356b6909090d0d7706ca1ff114291660b3d91affa793c9e09377bb7dbfd5799206e0b2cb0e077850a3c0d3593448b8dc3e17024a436ee7f709f2b51c2c63d11ae84978d7b0bbe22a057545414246e9d4ea7fb9ad9d6fd8fee7348505bf7443a9dce8f888828eb6016245f5a53615b29c684f06421abaa215dce43391311f1803a9d4e67d4e95e48287862e370b85c54eb8d2161c28e303368627ec0bf4136b087d3e1281a7a8d129fd47e9748a79343b6716fe2a8e64c6ddc71799ae572462e4e3b77dbb95c0ef7b99c71cb09185c4964e370b9b3887de7f22cee32d9ea5ec5e970b8394667680ea72b52d9b95cee760e75e750e8732e8fc1c8bdaacbe97432865be84d21211d0f78b790ee9aa14b9072424257b6ae0a4f95219dd0ee3c3b974242a69182d08503c8c15af305864978e6e9d485097d8e27242414438606399d90d0ee829b2566258479d9d27506644899cbfda8e961be7ae86b857d7f68088672eb74ba9c6e0c0a1c4b51925cc46cf991e6c8e0e85ee8559d904e48570543ca42fa5738ccbd033c7c0891faec344dd3f40be02b859dbe1efe10afcac6969dcbe550a2108f49cece6f661c719fc1dc6391c83ab2b0ba826cf2f1933399939d73b95c4e0d917ddf5c73b91d4acc39e79cae19bf98c1c008e6c54eff27775bdefccb9dcbe5d23349a15c2a24b405cbcebde96b91cea95996966c4c2033f3c529cd39e75ef76a4e97fb5b8e779e1571bc072485396e694274cb48e4be17724e73ce7d8ee2b4330e97f3c964ce4ed3d7beee7c4dc74eff27cd6a6266a71bec34c5f574c9e1ae4eb74389699acb31c1b271fae62ea468d0a28e8712736ee36a1b8723fa1c8e0724cae5dace4ca680769ade72b10cb6ea22a68f1b16b7ae1d956c6d1c0e770b0a8aa202cd0e0a0a0afaa0270afa22d4cebe9df3d2b8d334282f611f4ac4a5699aa66642647c25877845fd80bfd31e1bd8db69fa1fa4699a3e4af41e5ac4e17868b1cd2d4d8382545425e1da019f61f7b2756b79efbd329637e2bca850b5be5a8b73066c64dfde6c7b8f79396c84d6b051bea635dfc47805d7f39573dbd7eedb809c2038c2dc888251e58589f33ccf145d748e0c150a375f29a850a89d6719248c51f4c032f4c3c7169b2c2396091714c8809da892c568cb8a0c193056288f646f91d58c61ec6c9a182335ed930a490c06245490e062a5c4910ef6f9194a8c6131e104cb0917461d271c2ccb5a28aaac58d3e2881b6791cf5ccb790ccecefa490df8fbdeff795ffdbf7a73f67906b3ec33035b4586505466728459719ae1f1e6ef9ec639372ee8a439bf97fec5a64e793def6913cf213a9590c06fca99aadaf1641ca5c93eff2db8cffeca76462fa4195fb14051143d359aa23aa8faa6fa36e5d91f8e7304400d8dd219d27291603a12c6630c128dab50ef99258fbe85c7bc13d55ebcb7f57cd9131445f51bd39e045046eccb93235a2b5ef040fb01df4bd8c01e8a6ba6355ff3ce536b1e10456b3e288a7ee67dcf028afec9437716bc77f27abcbfffd8777ff71ae1946d7cb431b65e6937c38534d55a00ee04f71db3c28a14343f5b80d3f4d99d6d7f8c2e7820d1b6faf369f189b1c5d671cf4efa3ac92bb6d50e6af7f2802082857dea1feff98ef65e0da8a3e33b1d802002057cf89c888c3ac6d7e61e6b3500dae3461f45d1021460a3ae2ecf57cdb2bb816773b9f3d024bb1be4f773971fdda9657783fcaadd6adef9692e5d4707eb64dd9f3b7f8c3d608c8ed898833367dcb3f3aae5511fbbfb0ab67e142842c5dd003ffae70e5b1e1086fcaf705fe3be497783d383f7fcf1ee547137381f25418fb842ef9da8c6eaab403bada477d0d74bbefafcb8bbbb3b0f68db69e1f0cce7815aa8e4bd7ba5ac06da47c3d6bb1fefd572d48068124d6a5dab01f140a061bbcdc7c6b3f178369e8d67b3fde501c1e63c218cd8ee1a7e45d04751a48da7017a4bedfba78e1ad130e7bd9b236744faa057280bf4882609bd771fefcee56996163c954be8933d3237061b1c75f2b0d13f77d8464d471b87e7f9e7ab44d848f33078753704d64498db45e8ed0b6f794000c0a34da81389da851f81b981e8d205b4c957fc253087a8d3beefe6bef097a701175e04f6c2a749d4cc1e99fb3edac61e4007ed06f7ef081c4a28685c69c185a2ea97b42f069ac41b0b0f44c9f64597ae7bb5835a08decbe789d4ed42f05ece196ff0ccd3fd061741f701abdc27cf03ba377a55b733fa0b76465bb53c0d307add9f3bdddf6e7fc10e78f70556fbf6db1e0025da0deedf8005d8b7cfc06fafc1d7f36f1eecdb6fb04719fced897cddfdedf7ed2df8faf337606fdf803fbedbdffef6da579ebf3d9aa4c04389578835e09dbcdfe0b5dfe018ff799e0feced0c5b67c0bd5eca807b0e5bc7825943936812fb4c1b2f7d7409dffc3e3eaf5e5ebe353cf4e70ea7854b4db5a1076ae19056b2b0e4ab05eaf044c8b0877840c0f80462fe690e0109a0e8ef4fd16e77778f1e6ef0d782bf9fe1512286bf185ecc57023c07c93d80b73c200ce037b88a8f1a4e6c931bf33c707eee519b3c77b95c729f8f77c01df0e2eff5b494af41aff33dc01ad0e723dcab3ca086f386d007b550fdd9dd1d04b4440168096df235e8efa3435f6fd00f50efe7b45133ffe7afce6f70ffd959eff59ccf83db59ab810e5e6d21d6b0cf2d9567bdc7c1e31d50040fb67e1d54398654c37f86f1f5e481c0035469812270f02aaaa309700ee0fc0bc47c9467051efc8a605e069e06ef9defbb9ddd1bec2cd869ef9d2f805d0d1b9dafc1eeb1d1f9b55d08de3b3f839d07abc1f945bc2fc03e7b435d157819bc77be6e07b4caed7fc1ceeedbaef701d8015d6807d45bfb3e86dd084c606e6703d1a4850dd44360ce6807aca004a1c7d350c385d917761fe86d00f03c80c19f69befa3cca62df244b8224d434f97284c6ef7a0a75c76aef9d28062f426f630c7816764c392133965b8e04e50441b1b5aed572b9ffe1897d7e550eb17d9e4339257aa4f0e2c2cdef22b9d059e11455a4196245871913178c61725020866c4b1397179314252e9cb0b4cfb750c5a3c671cb846114125945243d2376006152b606c6d79511a9f79fcbf957edd672beda8e5aa0d4f659e3849a2a5658644dbf33e85301ccae27185805b1ed5f61cbd7a2f7af80ac90b44716ccf6af60c43e2d746085e3f6af10c43e23272e2724c93753b27efe15927cad20c4be5de2461430e3f244d4cfbfc292af57cef6af30c43e1141ac4851dda0b285c9cfbfc293af370e11aa42b16afb5790f23545b3eb79e50a59d1b2e8ccbf48897d3a38b6fd8b86d887022559c8d24a484963f2f32f7af2f5a66dff2222f6d9b3316326a4b1ba1a92fcf917157dbd70b67f9111fb46a0205316f5244c8aa61e3fffa2a3aff7046457726afb17891531d9f59c3265df0716356dff221645c2a2257fa234f7e921b0c8c4f62732621f04e0d058b35c73e24dd6cf9fe8e8eb45dbfe4448ecb355b86851b16122a9889c9f3f51d25722242e3d6a0c299282c7cf9f68ccd7fb66c9c4cc7de8cf9f28caae2712244452db9f88081191a8688fac95ed4f34c4beb308247adafe434aecb3cb2029ba7074c951e6c4cf7f68ccd7eb66fb0f2db12f03c62d66826e962d68fcfc87ce7cbd6db63f5110fb503859963ce9419492faf91325f97acd844a444b44b63f51d310985d4f2626b1ed3fb435841c4ada2323f69dc3e171fb0f05b1cf8261f1f1e684651334573fffa1245f2f9bed3f24c4be1145ce0859ca61a1640aede73fb4e4eb5db3fd8786d837220619374d6678c528e1cbcf7fe8c9d7ab86083554f4e2b1fd87a484d0ec7ac6386308a56d7f2116673ca6c084c6a99fbfd093af4244ecdb50a21827ca1c31595a7efe42455f6f9aed2f64c43edba5ca0f206b6a44bd01f2f3173afa7acbb6bf1032c6f617eaf2b5b6fd8592bedaaa1b2db6bf9098afb6ed2fa4f4357d7fa1304264cb337b74011a1a0b21a1d0923de26d7fa120f69dc1a050d2f6d71d75c9b1e58ab315ba28bb662f5e7452db5f474447d415edd16efbeb86d897c7c6744f6367beda245fad5049b7e48562fbeb9a726076cd5a5a39b1ed9fdbca2173497bf43b2391c7ed9f4b5af2d53ef96a8950b9a25789ed9f93f215a3d93523419246b63cb347166cff2025f6e562716cfb070db1cf0256dc6cd1b1c4c8d9959f7fd093af17cdf60f22625f05628aa9609890271b3fffa0a2af976cfb0719b1af68c5172ac5b4262d3a7efe41475fef1964d09ced1f14c464d72c4448d3f60f6211240c5ab24715b63f509afb506290090bd6c051b3e2c70a649c9f3fd0d1d79b0452629f9dd3e6ec091c174fa0c4fcfc81c67cbd65b63fd0324b9aed0f64061465d70c23c390dafe4044808840457b54b4fd8186d89733d0d3f6c729b1cf04727ab8a1c292a4a4f8f3c78df97a97d8c7818a208a2c1361c6393f7fdc99af97ccf6070a62df10d51628683e8642a07efe4049bede314225a02533db1fa80907665713cdc4e1b67c55df1f874bda23a2ed8f33625fceb8e3f6c705b12f87f6e5cc8aa617c8263f7f5c92af57ccf6c709b1cf6a09e305d54309968c1f3f7fdc92af37ccf6c70db18f02589c1c8933e5842d27fcfc714fbe5e3044285cd1577f9c94af299a5d4d2f5ed2b6ff0fd9cff2cc1e0d29b1cf1c1b1b629fb5b2e64b18304aa427533fff9f275fef97edff43c4be1126b28a43c08c2d01c2e6e7ff53f4f57ad9fe3f46ec1b316595b403c6b14a141c3fff9fa3af374db6f9a6afea0743b2a0beb41787331f9344c18eea1bdcf62a6db94d33efcc123af82226aa0d8c2626b47012677915870d760e1dcedcb6c7245ad9041e3387c2e92390b01441c291b123cb2367c4a092f9659b5056db34f1a9bb882e87a50764070f4a884a8a4a8c4a8e4a904a924a944ac6743ecf334566aa37cb9b3e3f2cddc82a39d34137b250496e644f1f61de91444c58b2cc8e1f26684125356a29ec58a688c225a7eb292cec170525b482e2f101c46f608f67b902c84dadc4465647e5b05f0e4c84d8c8ea1db925456c64b503b23c5145399e4e5d36c7e908a6694a4962294a2c650c4b59622967784a10638c31c6d939647f23463d35070fc80e1eacb28ca6f51535636cf3cc2584103d2f77d00fc8104a1021b48c5a472da456524ba935a6b5d43a33934ca62e1c9edd8d6fd254777712ac24b99115eaa5da30f7f4443732ad14336cd38ad18dec46cd33b7a8009717ad1c593682718a4aba8a9e5304e5104a1021acb88ce6791b3605d152f5854a0ed68a5f132c4b24658e20736b8976148750820861adaccc94fb3493fc3c9bea71d44718eb19627525b94d3397504b6cd33f9867be1f4084a07245658b4a1715b11c95306e6477efdcb138423c357a1acfa6e86019cb2988562a929048da02a664d2e5e39886c899453800aab81c414410c7a9a573060ba630c9f27962538ac7fc800ca10411226c98cf5a129d138fa0246129820430d434d2c8e7084054ec760936cc4b3ee8793f80080186c446d6cc3c531d01fb549e354dd3344dcb4bcd117494354bd522a9967578238425f5cef41e0bd3d4c0312a6d479b2e325a7ee612ab3025cad32388385b04972388382e49dac05e50c76d45ec9f90e663daa4367596250e2b6e98836976f070868dacce5184dd6a73e846f6c98dec5e8017d18dac3b11bafa2bcc171907eccb5dcc9d3d8006ec06f78d70b2609b6f710149a3bd9b4512c9a1834d737fb6359e65d9795b2d2935315094e0b8628c1ca53068be1ceac7942133caa6b49066fcb092f33c93c25a7e8cbc663eafcd26566efbaeda322c3951bb4193b193610dc35281416b6af2c1464a529223992295d30d179ffcc17b219420429ca9699aa6d736b33e91faacb9f942330f5da1b5cdcff18099d7cb90817efd6147a85c1212c46c080f2c2465dbfcdc091994e708290d13a8658bcc152969bc18f9994430493a2c4710a1baa13a310f94aafa7892dabdbb9afbcf0ee60141041e10aebbfbdf1dfff949c2d7e469c0dd5603fba699374c4f61b4c6b4d9b1e4088aaa68766bdaab16729ee0c0e262f3e2ca8d78d8f82db0b7ddb4d65a9bdd4451143545e86deb59c132d374115c932299082a730bdb152ca416dfcb50f5c2c9cedb52099ba46bb269d313638c71de65e0bd32fc1ae324633636cfa9ace50332841284993424694cd0300e4a0fc80e6468488444ac7c408650827043dcc143c72239283d203ba461732449ed820fc8104a106d9646a6e69816944153a42b4dadc207640825883666887431938b38283d203b98191bd2c64b4af401194209a24ccc9014607a08cd17213690a9d00764082588b22e418810cda032614f564530d0d817102d42306eaceb071b1deacf12cb8f1247ac39f9c641e901d9c1cc151f4c3bb60fc8104a106ab89c9ed06a547a3029537d96527844f1c2d3c341e901d9618dd68e2ead7e408650824093352453d4b9d201c70c9a7e4086508220a3d2f1a249e7e4a0f480ec90662ac7509b689ce0500207c51c52b26253d69ad43ff0422841a4654b6e809d58ca4cf354cfb30cd4f2c3c9d3bc5d06debb67cef33cbf9665e34486fb0184722abd0a7862d73c3d9da68a0b656bb0979f1e747717fa0cadaa1e4bb00b57cb353a59366e5be317e36966b938e0c06e63bbdbfed67f7bc05d849d083bbf11c2871b183da8ae6c3115d1296128445de16367851734a70d07922964663098a8505222a242898a2b8c84b182674e137f85a79651610b9b17265c38f941f4212b54445911c34c4b28a3e2cc8ac8903483cd011c3ce0cf00ae52c2aa52826363c223748819a25c120708d295909c0d0c7e628cb1948d711069a229b08e56566a501b050583068c18b487cd9680f7e00ed299b15a9c7e0acff33c831462f8e9417777618f8e219693514e55d7128caf3cd0e016881d6b2035fb400b9fdb618c31c6f63c791a8c007e90f8a852f1a6899991201ce4f88204cd0c2ca28e2725a1b975c6a6a9edf99867fd9af79a585f8fb1db11200c0e172e38586b9c3890cbf3371def4464d3c482a18b89629428a539427ebc10aa663c4b236a4c513163a2c68b53091f69e62c599c49b2e26e4dd45ad35a6b8ac0fade300c4328278aa0c5800115c60983b9af89dd34cd2bc2cf7bb7e0a82a9264620a880e243dac759eaad16bafbda79b3c1132d8f6fdd18b690440a3e8e91af272fa293ccff30ca649180966d27082a38844c5d317950b1e57439edc9a46b4b042d4d1c3ca92162dbe230debea854f8c0bc3ea0896d5135dfbc9fd6c8b758546e70d0fc618fb48629e35395237332713dd426109631fa68531756854418b6a0223499a314d7460519d6155913031c6786b638c3146765d20e6be974106a26d8f4a259e353b72b452d998284a5f35a6a06dc911254e9c28724e5c006c7bec82660b6d7bec82858a0e091af3cc2911523b830446ed0a0fd4118324594046de1821b9ea61d162e39e236882562cd101e7e78410149d121839340a504c35255538a29022a821166e5ca0e4cbd011283a235240467edca21c09c3a0848dac8905283839146a121c6d744886ec2c619243235a51640bcf48160b4414665012143823304c20a82c14922ce1894224dbd8cdd6c639aaaae2b66d4b550544830ad5fadac3465746a9221491c89393f72ccfefbd43dc744d37edbd37e79c7356f29e15b248c226bc7783292041c40822840051334d5eced41fbc9701ad510f1d3884e0800f367870355c6ccd6c62cf71f13255ce12eeb14a0d638c638893d34fe1799e6710638c31c618dfb6cd3296d881ddf0649c2163bcb33cb1ef13c9c10cb3939ea669ea642b2d4ca9d628ba632299e6150b1ddbfc9c6942516e739b6ffe8f692a4d5329639bff63f66c9b05e5ca56b7cd8292a543a5aaf8ba756c5e7467f5695e1eb6d69ae6c559c2825049291b8a0d75fcbc69f74ec29621469c2d568e49a24cf01b653e6cf3efcdd5dc5ff597801591b7679e695e11198e6a7d059af8627c6dc6ee18ef601116633cc2bc8ef6bb0b690b6b1655a59382605ca5236963a32f124c61c6232f96fcdc86551124fab66d558e36bb67dbaa1c64dabcf57b2dded6ed655282264dca2a694e580999463cd972f2e68a1794176096984c38d7f6363f768a547e512dabdc60f2111cd6207b63748a7ac2c60a101a1724d93a4f423f1da3b06aa8a454a9509e1db3ccb03272311df9220a8d922c515a644a8fa7b26c9c216b2acceed9366bcacb0cd2059f495e74c484235a9aad6eabd584c615ad23432350fbde37e2a0a374e4a99a39fd149ee77906b5bbbb9b29948c6dfc39ecd8bc4a18dde0eab647266df4f0de9a7fceff3d03933087a2eeeeeeeeeeee1b34d8b63dbe39b1c3320cd57250738cad06f7cfb79a67efb69f6fcd6ac0039a6f1d63afa1dea07d6bd6e8faacb9adb5fbfe5d5203d6b6cdf9ea8e4faceb8f545454b4ec611f07f302f4b7b307f86037d0c232b2f19b1a631e50040b3be571b03c2c8c3da8aad02023e787161945d036ceaf73ee7dc0bef36215180f815325abac842c673c7e38c6c65fe3b1b19b1e1bf37a3d0e1d941f40f48e6e92f6cfb6c736661bd8c36699126a15856d8f672a8e67287c1cc1c0397335c6ece73036b07685499bc4499dc1b63512dca098297cc49893c4426275e3e74228a7e2ced34e93799a41b30142db0a27122d80c8b47ab47152ee9e6db59cae28558be213a33ba0083baa35578cb1b5a639c480bb33d87ae3a049a8c40b5aaa6a542a632420020000001317000018080608c5a2719ec6694ba11d14801358944c50584613c742c228497118c4188308208010000022c420a598550f6389777ab03642b97d0c65fd2d8822e250ead82d721010ce49c097ae93c2c09e084cff50df44d941cd5b8244a24f06b6551d6a70b4208bec481bd24f6fc7cc54555c3536d2f3b022a9039099155c91ce28de4da26f1932576da885646cff08baa2c9927891c0bbf269c9e62c079393a5727b4301d217562242151b055f70a05f37f9caecd7c1eb2bbe80a3fdebc08a83e5c8c63cd3ab52a55b10b6d27a20acad18689d96b9147684eff6e04aea5fd1a917089bbd05fca139453d1a2c1d564220148c1f63f1eacfc8a125a91a402f83f0c9a5221c678158664021542c07ee205bdacf73a1ff145db3394ffca4e53ecf076b38c382b25dbd840a61d4cee2bfeeb5b373c45435d7b96fec6b837ee9a2bf4d5e69f98fd172bd92b4de7e8dff8c471d47bf6f261dd1d2ddeb50711d0e47b9233e97be401b647c2755cedf8948df80e0c9f7d8787e4f588e5d1ed275361ab0620be358e8fd4657dadac4b08ca1df36d1c4bd70f6302d83676951298313b9de687af00f8ed241e11aa611e405a0ed822c665c98383f155189ab01836ff07acbe69551990d889c842e9e1f9377c390a0f05a7082c53484a6eb0bb3f9f2b8b0063a656ead696a6249aae537ec46f9d985442035b14c84d4e3d1d25a7845b5131e8cadc1acbf2216197f0140797b416f6c3c416d6c303f250060d6417c662c193a3da0e8133270cf375f06dc54a32d4609ae128d5cb4f28625b6da449306a4f63236d613b9b063021dcb6c484d549f5fec4414712d0575b90d13b5dafbd06932314f9a54be7c8c926879828f93d7c0e33dccc7c2ac49516a6feca24906c791d02f3ff70a5e4b45a164bbb3b55aba9eeacd580a4009c0949975a47f3d53ab9deba3604a04aca99e83fbbdc8f830870b098269651eb4837fda43aff6d96e28a50be49650f9d1f27e80a0432b84efeb15a95fd3d7b2ec03d722cdd6b444ca7cd7f6f019316c967bf22e576fa640bd80517d1da2b6de69eb0081b7812281312ee219a8a3d62e83f8b18545c4379dc72574e93ad75f0357614f6170324172649a97c72d5caf3fa0d55a5ebca01296a3d1f54589f2a5c64d2a80e04b632d1fcf62f8e3ed0a56cacd83a806f969d45933a58e20a3e8cb792035f999a2763929a9f89de6c2a524e811f2c5d3872a3e4a9be28e74d7757ebc8b5f39f9b5273857b37429099cc1f506288e1cc0c360e2dcc0284d82c12832ac1a897da6a7c981040c09adb08d0896c9caa9798e60384dd173cb82b5e4d353807891ec68509876d34bd84f7ce065d90a8a583007dbb7293b13788bf78cc5a44f06d80f1abe86f78812d5ae8be9bb867a3de4dcb1bc61148d6ada06e06e4a76881803c2622554b50d4d00f71c5c0bdcf048b48714979a3e92e2e0b995d849df304fc584e3cb308ece4e252e8281fecc2351183363443b129d450b50d2c4e5cab34d0a1d15cbb658959bfa0a643abeedfb20189a34aa7619fbf341e502aac88b717620c8cb7d71a966b6b52b10c0df8f3f57f115ceff05584ea1ab5420c4640e59d79e4c0649aa2c16d19a9f1e9de0bd37a5c898164c00b64cc7eb31231153938911669924d6ccd7412b358615d1f7ecfd38aa576e9c4d3331ad3805528caa6b7ec76a04dc32d97d5edcf9aa67471f789eeee74866d45815b0bf55b3493f27036e5af14973feccf5602c5db7600dee705e3ecb7e049c788ec6a9066194495429df36ad34516567d2bc97703a89e0a362773df611573a616e24b7a0a93cee6dbd785bf7b95546c700b029cd426a5a465b004e871c01c4be0d9d68d1120121f8d9b78f50b33dbb962aa6ab61d7d701ce3979d05f34fe42faf54430a48670e6b4f36f59af094f8ea3358090bfed098d456d937efebc7b9990ed7bbfc3ed0e81f36e186ac3fd8e6bcd548b90041a68a172c11d51bb0a32d9cc9d4dd6e3a1a4bd3c60b96c869f9c8905f6b3c30728011183c9aa010305e14ba11a2ab344183d64cc91e8cd26eccd69423a9a09ee441ad3947ecf4590ecff2773097faf22c8c5fe8a85b1d6d2bca0440f32b2c1d1216b19c4ed9a15a3025af13d341c2793c30c62af7afcd4826b3b64bd0892abe5df58c0c3618a144122612e60a940bd124b08ab7d04f1f78d44343fe029595b0685fc5fe0eda05109f94cdc8d10e8a015351f62249ee382d66043d7bf23b72a23d53215b8e07291dc6b64e167fb404642d9b3a36c94517ea93b04c4217091e68a3090c047bef06bb7834fa401a281509c1a805c93c4ab22e71f1ee5628c00ed082e128c22f4db6d2dcfe25b81eea5c15aed58ab75411df1bf300bffb8d5d8ac4f4d21c8e5b5e19a300a61cf2e161eb48cbe6aee2b08ee319678ac1d64b15b3f8248b0a36abdee014438224ed3ae95fde30e6e913f1c419482a18ad36e48c600afaac980135c681e8bee268481196edca627423ce5124107f3bab135fdd80c7a52662278afd6503ebda600ef825914ebadb1d2dd41d0179a708d600c988cf7f2e3221cdc576872d1d75aa21d2d6a7c70b2ee6a0af723a32e1faa9f40b6d3bf82a614f40a005069ddb3918fcd062f7d2e2a67a9c6a164c20df61af6d0102df4a1c698a84acf6cf33524f586d5ba62181b4ece2cd4ced29c2ba5624e900821f04e6e3916af104003830707658915caadb640a2ad1967b87566ea20a4d0798429c8fc9a900e548e21033dce9c25f464179973302999540efb1c05fb0845f863497fdc4d571896ea96072363dbb650faf31b1b9c278d3b60dc5eaa143c983fe6c1b84a9e14f22aa6a63704b0ebe5e5a2dcf05c9db19949b9490b111f37311623c84609148ddfc67a7db54293b38e8f8e9513dbe0270ec638911c6674e5218ebe656f55301904ae6132ddda6fa7fce187e1a6173b2bcb705a993b01dc28f20e72fd43de85142fc2dd4f9569e23a147bb1cc4a4490dedc97fa748b3becf319ea108bc5f7d56349d4c62a40c061ecef717345010b4c4cabbd447846339b3d8d95628f1037c7494fbe582e8a9b18e9eb1261565cf2205f191f69af0ac9874efdc411e8ce23626d41c87ff3f5c32f07e2b786d361c165e8a01dc4a024d87c9e80a503e70bf81ebdf8720dd3a6e2e56ab389d6028b38f44ff15e814cd6bcc1bb355ada04edaf7ad483fa757b571c68b60bd34a07cf1e16a27723aff19c1c92b7d9f7cf8e9763306d4738f7201e5147740389f2c2e1e680f557d368a70383142ea3d08e0f28102fbe709a4b5ebdc8c10ad7c08e06e66ef884d6b0f64266ed028923f288b619b3680099ecfd5f97bf1883b4173c3b119619ae611c0d80f3dc975b76ad7481834d0a954b50b687b20d472732ab6d9008e147e498038b06ceb3ec7dfab94c4acf0afc31bc21fe2fb397a4ea5781bec729e0f767f3ba49b343c5a3027f66ee78ef912b5f67065a7f05fa659cd9de2b1bbf5cc869e76b3a15c730f35a8cd301f00bf6dfbcfef50bd2968c871fc72174264720015868e0ec6befd3c345128b7f7571887df4154637ac3b6ca0b0b078fe46eb25a2255862d03a3e473cb235c72c1a400e4effd7ed2fce202dc917f8613c4277720612816507ce5ef63673d1b2b13a7217fe551a8bd743f4e18b5b9896c4483c29169b289399d6169c0ecaebe97de6e0ab2f9c76c953153d30f2dab0a381f9e69ea805dac866cc07ecc284be80adefcb5a2fad3164a50d1271a4c3c84650c0407ef9e5f4baef855cb53ff06e32afd2e2061a71688f3ac379f309e8746e3fd4b4e421a0bca25dc76fb3a1d6d438ecadf50a1508ed16ade6901324d395d20eb8e91d52122686cbf0eae635f636930c1448e314eac56b4c76f53e122f807480ce3ef4b0307b105027ef39371bbfb91f2ae122a0b5fa1afbad409deb4b10fa2bef512a7d90ff45252e1aba530bb49bf386288d73ccb731218689831f756bbd2bcec8ecca46b978bf1867da4cb14b0f63960ed08229f67026f859baf246dc2b20e46fd34312830e1877bc7d8e9bd9581ebae29b68a96d4f21df600d0edcd30f333260f1886aa5a0bfa09c075ae20b692b6148b6f702bd101d40afdace3169e675158843fe33bb951b05c1d2c2e846546c82edadfa14437148f8e4e7cd500bb0cded55b4b7d05209ee1fb4bb29b3bef63c354b75e893dd1d65a4bb3676d8c622944528668fae8dffb71a86249d7bfd7a45fdbb232120115a78c5bb300c45638d10c18d6d4e0110cd4f859a28b60215a282d5621bc9022c020374ea8891d5f6e8ce402782270f188c5757b8b6c7a32b2accedf27591d8f13e47c6819c33b2115beccc2ac9059b2a63a6f4d7b52f4b6caddc8588d879be9badac5f053a34fe628d7ff6c018966d15e303b3320e2b7edbf659f2c62373db9e7545e9081e0de2725a5b91d16a344e1bc5f52e6fca03471597257a67fdad4960f62fffffb895116028a1fcee66b317acbf77cc7ce17a38864274dbfb15752714dc4c56bfd3b2e1d8d23dcbe12027f65120ec0db797a6d3348df908524f6dee0ba41662fef59b0039ec2d764c413026f35f5550055849dc9b79c67ff64f1ecdac71449e26043d704d8d9ecd6298d30f5d7e43f1d8ae31efaf62a7f48fb79d9f93ef4c499064391080e210113feb5d51aec73e0b80a138ee2b7e8719e2310fc090945767df15875fb1708211732949af64b0a6192d4c3966930f4004bc1baa6acc27df308b207102c750c856b5d09c6f0f5f1127dd1d0d4bc591b391cbeed3f459bae89e9988e5ef9c3203bafab4938b790b6f93ac5899410c0e0c45c1d03202592b95c7576cad5aca010a71bc90b925a86230c9f13c1813d5000740e71e40ed0de963907108ceff183ad25a45b4cc8f579537c41a056e3e767dbf49d914564d58f27fce2318ea69f2aa3b28c7bcecb5269a2cd293776e618a34373a06fe81097aa5da61c359cc87402cb0e0a69c5c7b7bdf50907efcaadf2356b8eb2deee1dd95892b269a6acddb5f88d26d27f703a2a91c565ed89412cd948523289e5b8e4eb6870bcb03f9a832b88f9ccbd7bd372328281b4f99c9536d34c0d2c23886beb0cc2da7ac4ee6b4636a19f0d54026511e7bcf28b8e3dc1fe1417503f15503fcb8c213a040d035ccb9ec142908fefc47e81fcc346d21dfb5a113766dfa4161672582ba3a7ae2d0c76cc30a767f988f76bea3074af272934c60f6b151d1911afe57d58c383366726b1a4e2c648b2e8f28391ad80d149d41cd2e1a56af14913b57b8e1b5b5aa562cde5492cd1029b6b8b3e1a8e42a341d33ab27ebb02b3be893271d483e63f603b0e5cfc8b86b205f4fe44ba2eab051e5841f459a568a08ab58d929151206861f7f2bb2a90a211fad4005c8b4ffdabedd7f29ea3b459df03e42a942075400259104020129883aab050ad5c1c956b83443e4920ca3fc3b0b715f7c85d34526df55f9e03f63621232eff71878a9ea0de9cf1bc5b6dea466e11d4cbf536e53d077c9b472452393a59ce3c819003ba4fe53c71c0d0cc8347bf20f39bc8b62c0ff21e26974d84691876c8789be5a3b97a2431b9aa71d8e14f1415c0b8382d6a8d41d0158b6b0461b33befaff9aa7df60cc410e789b21b9f6b8064af2693f0ea1430cb9f82a3a25148b9cb1b51325c45d47ef841f28d296070625622d66b03f6378488274fc176f588916894c958ec897e8c2111c72441df078c5e3c755d80d604b1ef8d9acc4e86404419fc022809afcd9498ca9bfcff9e7e3f95af41d50f010fe7a09fab1ca45ea1370a18f7c5274af446af7d5b7b3a647425a8107e68e1d631cecdd139c9e0d773f2c6fc1c04dd97c6874dc8b72128729dcde0b4ddca6571ea15b6137b40ae70af64a77660589f1484ac5d6a2125e8b26067eb5e819dcf2412e37a42e592d58d68b054df642605392f853bc607dd13a6cc837266adbb011fc0f4943dd16795d3550a213598516603bb4fb5681703293df16b20a47f131779fa246df1efb00a008ebc725760ec7e953fca11c278120c09c94b607ddfe396ef51af3a2fa7c4c24f4aa128ee49da46ecfa3cbd9d0cc75f22a078ad74d30c1c1da30f22ecdc8348ffab0fb0487ce2f3d3d8e1bd401b51b31e0eb9439b522e0a32de3ff07f3407869896503873ed03e35a74f9c72c454ed5c40eb907e7058ba0513ae2e2d0227e1f4a9aed7b7184a0065a0b0881c6ff3d2b49bca0d42964075ba5518090289cc55142b65f1c82358819047197ac82a91f7abe48cb182f816450ae6627215144f0eddafa2595303dac161f5d8784a230b3ba99033c40488cbf471d8b880812f8a47c8486c452d8b08f9f6cb69136721f8b13915c5ab4f6ceeaad6f9308814571949fe35c416890a2a641b3d895f39ccb5fcf305a6522b9b554d689df58022e41cd5a65caf6f9eeab3ba94735c353496f4463ef0d56bc656931e984aad6c5635a1e9d80ea42f2afaf8738e182c753e9890ddd49c0dc8ad46a8394b20315d434cfcba5d1c0e05f18fcf699563645e940f4153687781c64e7c3af020ea00f43221b80b584b884239f4b8f748d652e810646fd8bce8b0268c14b30333e71423441c59d982ffcb6a2a765dd6771ad0637f713ae869f1ecf21e6d3a3444bc67ea560bc160f9e97d1c7a7d114c1a399e437ff06be71bb55f408692c4a4746489cf9aac1633917533c224c53d58287498a0dc82d54f409164b3f4b7bf4eb738cc9c8c5637db0f706dc946d1b9ad8afbcab45584e691231c9d3856114e73abbb4f89e93bb490a8b8ff0f0decb68185b5e5a8b3beec0f20260237b18a50742270a5cc0ac84a1ff39f43dad859d3d2dfca4b561aa7b8cbb4460ae41154a340513936eaee7dc36d9eb8f28ca0c73c95dc31a383fe279945e6a281bac08c1312d59d63b06f53df0181c8160437217cdf5e68dc13279cfb03d26e0d5459802f8cc2eb6d4cc054c28d6f8592ec29a40ff6b44a713252859e52c4a299678f36e8bbea9c4c9f609b468894ff0009e7ebf5f40b4c65aab6a0cda317225b59c96f41ca6a2ce17702cc84168e2ca41a4ff9fa2011bd22f994716477a72d10c9e12a2279696917901033aea0ae9834bb53b3286448a8c0c9749c6a09fa734d973d4cdf11d4e0eb1a3ed5bf20c2987097b52ee2c62ea558fea2e38e8ae57880afc6750d818ada6604c6f68618d8e50a6a029cb32843ab2178bd100d1634067c49a165059e2db25f42e0c59ce888b0316b1cd2a6afa1c8ee0857c87362e1f542ee256ac32ca671b460471c65c407dc3fb0cb8674d503f6d01b5a4b6ac62936bbfdba5e464b6ba73035a3cfd610aa7fe8bb2c41c521b440490088dc74f9ea7e5247e0ab0994d2c26771583fc1729eb8259cde096554e7f69ebdfb6e9d81a408ecfc01af151a8053164ef2edc629570f0bbf2bb45f95cb895f904d9e9842dd894c0bf20fcb8f34d4ca6167dd12c6c2377d8694f4a318d3075bdf1d9f915e7230df0649e2baad53f51a4411e70111f3959220ca21187ac097dcf38710d42ac4b0db4981dba097f439e1c7a886f1bb8067267c8fa7566dee03b0b66e6abda9f7896066904fa6a5c2ee9dd61e1d850727b67f1022b93030f262cf37790dbfc15959d4b4c863c2131c46b57b118104425c60183890b21825eac81827bc766ab10b43268c576fe34d5b937e7f23334806dc77fac4b586c56b03f59a0a1f8c04321deb915e702cd3d079b1a3476987618dc8c3327626d71c89cdbef3b3f3113666455a4b12be70a3115ae00cfd19ffd6eb43c486bcde1804c1c37e6e2f7aab96ba8b06b3aed3c66a330ca481dcb627c7c5d4b8373444f7dbf6d135c913e4719cbdc14923f8e0a172a674289a04dff44551616f9d81be677d5a79c5ac36565b3b9b7b75fb41bd90ed793391ae771295e25f669a6021a8a3ffb0434140a51444053dace985176daab9cb3ae556393d782db2b50221ae18e64d8ec5c9c21fc5549914f9c6b7d34e5d17a93c46c278344f5721511421438c22450d5708650938680adcbf4426084c4e410a40a7433b80bd383e8d5df08cdb2bfa4f375b648599ddf7b5f5004b5ba160b3009890fd2766ba486bb2adc7145cd49602e001910cdf542602ebe103800a91a511b8db33c00d8533098dff3707b33d7891f406473584f5535818abadaa694efc5b0e557d7d196232ca4aa0fbb8e6241114ffb7d4b8b6e919b1a4f627afbf0d37cd0e37ce48847bb75b3028a9cb9f8fca49ed779013032e040737de69b81b0ecef3c79e187a86f7f55d696a94a35cbaaa3e4149876a0cbc20ac053c0c9d035b194f7d14bcbd5e033244dc2c98557f4a9a40bcb250ded1242435d8e2335f812d23954882206fa6e2e45556dc606514347b71d994b31a8d98369e47050a8fcc9adefb0cf3ca3170a0e53b8c9fff1938d47b9d5d322eda18ddd0f7f1b7de79cc000360caddfb0be79b609afa12144db1376747993c69107f21cb5666a5b1e9c2c3ad17a7f728c1cb569a5862f78cde95b44ab274c944ff5b3add511f8fd60b2773b27e5ff5d3c00065257ee5bc228df511d5edd4111200701fd3314440c1c5a5ee24e56913f65c9fc9eb2748eb092925d7ec6cb84b9c6006a23858389766097818f287543f981f10402e58755a10b1b79ec4d672f05b3c1130a5aab430ed3d56870f846d11b027de2168c76ccb6335156e1800735c4ec8fb053bf9c14cab7167440f488f2fce0bd3d16519a7c2cdbb7fdd8eb832857c0cebbdafdd263d0774112f81eb744a2528b235a280a6e51815d025108f0d75a9ee58fa3bc767f038a9e569f7a34f9a8e85494475c84953a5680fae3b5eaccf392def34a4df0a9219b4bd75b80abecba06c1869b7be901ec4e8043b9a2bda1c3b50981683ce96c73285f86b1a3f5f762ce8f7fe96735a2742ad5c7125dd9cc0b3219e3ea875bd498c13f3317a29fdd02a4ea701f415cb77e32c5dfe559815c6c8ab37bf0227a6b01006833b9d9b65fa7c62460171311f23a71c816e6a36e4af7ce787150409666c211b56edfcb443084aa6356fe93759182d31c755a71490dc7697b035bc7a860294ccf75f8a0a782da27a72aca03cb146f084e44c299b128427db61f0ce1762f4f93881b8d3aef4608006c0e421f4787a0a46415938ca0bf5253b136becb17d8d018c676ab882ffbc707ff1cd90fe131c2a241828dde5dc5686809e8e98198a76a5a9f1a997bee8ec0d30847624202411ac8ed235ce629bbfabf53db3b11c39a856ce4ffab7236978700704bcab083c09544c15d2d63571174751384d0ff2111fc05a171b662052e8616931d3dfa83b25878c0dd89d8a6adf25f8e819bc3f53758fa59dfd4db3a2cd5fbe6ab122c1cf9504c4458ac272141fed9c242104d11ed13e3abe569e1116f018453c1d36ca344c04217a9312ad1bad9410c39ff1d76a41d8a47fcd4c6a36a184039369396cf000372efb8e6d32779ab9390a8871c5eec97077e199922ba40d1034b7639dd9e7801620de3a03a9cd4b233f32070334cc5ccfebd92a3c878431510acf220703e68c7036e3de566b46cb672f88b6e69d535dd4059e04d842e74699478aa331ee89b3e320486fd3e4e4e6869023badfc95389fe96cca1a8c9702a7a4be7fe39f0c5d68b333e97c085f33b01f0c9c33de0f28a44a997da133e8116e2c0fb6004442144503f3c189a4a105e18a9d12867c3796042681439ed33b61b6934b52c39bb4ea4860bfcdf9ed6c52ce31587ce75d80f0d35b1ae61d602bdd43d406701832cc28ae53d826a71555ed8192c94197a048e58733652eccef97e6972dff76411e69895ed7a83306ce90c89d9f0208b1a682d96cfdcfcb60d07005d37a264004539f8b0de2dc9b5ef5daf3af577150e53f399ffaa1153f488f8a47fe48c15a8c7b54289af411db9e00d35e48ed244723ccc40729d8b9e61b297bbeb89bb0a16b7a7f4d2a5bfad0b924a63448191b0c0c287cdb9bf05c0837fe5e16ad54adcaa26eac412edb91990a39be9ae4be741472dcce1542247b0f37def363349832ad760608ae87650166d8f0fa9eb988437737dcafd3c0d23c2408db5884f0e34b1a993de18e7dc20ad02f675cc678bafa17b1ca9067fbadd97a9655d2b6e009d7974429e06ddf122ae646bf5da628279029a019c67080e1f9ebc08b118e7ef1510c1cf073622fdb3a975020ecae2ed9180dd5e70e14167e4f0b2992cccc3114c88dbab22ac2087a00469f3b92ab11a06698eb1230b412c8290705644ebfc23c10a4083b423a0bb59c178a1e948346e7bb7b835f9ba77c651672f4e6d61ed0a9cf79ef21687f640fc92c4437ed0342feaac7daa5c1ddc1b43730a9930a0597d61dae353b49cc8899ecfb7e183e094540724d56ec20fd7583348c6443a09254e530d7a5394399c3284e3d64f4c8b920820433fa27db8a571145671d16d69177feaa3010ac8ce3e06c88e8c897058706e6db8efa4e144d36b34c28c726f57631f1a36c9a1b143376ca167304ef6e34f6191a2d07dc0627bdebceb494adde5d911077c305b7700b23f3ba80b91ef6d0d6f061318ff6e00b401d4f073a84d5e6c79ab79f7b0299dafebdcc8b1a6362da9e4c206f160b4fd84f4f7035c0107970f180e11ea64d02f557f2b828744a5e061c3099cf1ee816b9a41f288782def03c00cf98c993a7a99b10c2347e9c02c1ed4dbd627a533cfa1860124383c0bc7f302b51924187ba11503aae86d223c58e7c0a111bad99100a0094e5644c2d565b3f8b51f6322ce7e104b16b3f7a6c9bd7f45385b614372aa383e9741282d87d3729dd3a8bffd1a5de19ec2ff8e71710a0ee225dc7448af680799ce1944a6688136b0b732e616d7450e4a154f8130d190818f185a2a8e0691107a639986aa5818d2fa1a92011806656167ae4b60f6ca1e670c744ca2c491d77017e45536a5ffa3926027c68c5b1798da67ca0e6c96790ed78cd2983145821b8dd05a08ba345d8df887abf3c738ce034f82dd386edc0c7cc6b617d88eb9acdf16b3192ef07ebff2f0b4c20dec94cd722750c64696005edb2acc79b4dc6a112ceee53e4d9600f22f299b5adc9576fd3ad03831f424b4172c0e53ebc66b34ae7ee05ff250c6258d79995b549a07b0e887099607e38aca2bc6654d822735e54309b5b004cc8af9317ae96d6b0ea39791061a36fac108563f4cc7d5652145c4ab511599e692e61b8ec8823e5d9f4bae73caeb0c680e3a59f1409a7bda3742d061c5d51d7e3416fdf5835eb1a0eaca9f0963f7e47b006b5e6da37c35d481024b47ce263eab3d604ac43daeb976663c4563bd544f020cdb49a22278d3705d30139e86d932a5a4ed2519ed3c9167838c8b695492b2f6372ffa50d39eaa36788bc3dcdef6a154d54c02a199f4a6ecc85c2d9860977bb5a8a0608eb3fff2536bc21d50aee725302f6d8328e3ccfca0428707f9fd85a63a27b3819aaa0bc23307f49ea99d9505c9648502222c38849a779df38dab24b95ff7d25d4e202b8d8504dbc5ddfc9ac3816cc8a1b6f4c74267939315a1063b92d14bf7e754584eca455b0874823f1be30504b804148a113a1f607683b66732f2ee67d93ae40b7374858341a4bac7cc2daefc2d73f86623d34656f670908d3178cf7ff1539b60292fa279330b891408348384bd7268736b29a60e5900659621346c162df4c41f03339507706605dbb02e158fd3b42562b1486c0e172796beaaee6e9a1306e6abdd2c4c3f74cc5f79d9bc18d00ea41c970b44b941bb275f8fb8f26bf569a83656864355bede4a095843976a8526bc8ce934ee3862c8f8c9428d800fadf62ec259821559b08b8e3273f73b1d212f44cfa28be42d4c9a6a70ebe04b375b1040a7d824f5f63b4efe3d6b32040c62fadf0d2693eb9d0ddc6c64608ef6ac466ceb3048cf66c49d3c4792889a65bc8e214c1ddf043df9d270229f5f82e92bd0eee6f53172e28e0a05092f19a6025a002452d79606d4754080e8e9f3b6f04f18847f92113ecf29638b9447d47ab770464064a50aafa8b131a04a531215de7838b31a62a7302c5f26e2598a580162d84e28cbdda97780bcdb706c90e503da46fbacabd59832031a8b14804359161f01f952032f6f5bc7655c73912724885cda43187e4c80fe72f4ce377a6ab1dacdd420c0d09274195bb75c992808211f44ff9a1102959466d70aaf1f72c734ce887ee4cadb407b0df5b68098469d378661cf601e34fb171fe639ff0a602217ab0708f0b4091a76e590864929be395600b8b94f36c2a48e8f7bfb663c2b26028d6bf9d4ccf4212ee08e3f7fcccb0b2bf3463d62d0063402a13c633f269c8611176397703e9ac79423d01ad2d92511e81aa9959424ed3cc4525fee3cf7cb0e8f9651d92610d948fd9bbba8e73c2af0128fc448a2519ee06f9bc9d4e6605edf651c9388d56c651e02bdf8fb718d44cd9caae8323d84b8448dac6c21b7e38651fdb6a5b76e26c414bb643d0f2dc3473fd80e912ef9f3ad5a76bc73231ef0f82714ae49231b73afd0740be2f353be997f6ffcb32ab3a2a473a09c120e74a51333e6d71f012ea4e3a137e349412f97d02a045caf0c6f5954a92c7dded672a15dd65f647a6c35f056a5c8caf7fc52c5d40d95159d8a384016d615a785d49c47d8fd83624027965a0f7971ec08d156426658eadb5744d3af5abde10f9fae79074b76f6ab3f5fb612344633beda95ada8b3ae818938606bc208c33061c14839392b4b34ad42521af3ba25120d1ff0816604f326bcdb677a6909b7a8df05c7545594ba33321aa40851fd89c95695d7a1834a69e8dc13c2605221caf8df6c826dce2c020b099dbab68bb87548ef523bd9f55271ca2fee36f1690b5d5e3166673e724e45a43365f28b375646ea31f0166e2a7db5f747c510ba50e452ba11e174cd0fd8f39bab8411278e75e80cd99c488f403615c0439a68fe1b384b5b0cd2a51b136d04987d9e88b87ef1dc365a65dd37881a42bd2577f385f8f9dba2c80b3e75ef8bd7406bd3333cc43f95ba1c1db8000dca1ae81b27bf215da5ba6ffe2460f0f672bb1fa64a3ad3236e2d9e0ef90743951ddab8ce5f3853f3d9b62587c54bd02f6c638c1ee631cd1a4155a4f829ed933a082229da37f2d502258937d4951a3be28fd051175795f0beacf5c34b553ab02f73bcbe81b031e1df780eb59bed5fde1fb4fb50c2ef569903e879a32ff5de0b22f55836d37e7cae1d1904861646eeb3bae6be8226d9b7ca582c705b8c5cd450a5e2226e745601808d43e99305433f59f74737b6b09e5f393566388052e27a3aefd85794515cca02f24a1eb4b791ac804da23088ec4cc2e7a5093c5cd95911d2e1fa8a6cfb827f11f791ac8f56b4413a283767ea817820a6681fcd2c3484042734ebd530ce4c608aed54ada23574fd642b16887f42a7af7ef3b2be9d26f51548c11b8f4866a99b7b7c28468a4078ebd4516a6e2d0ef89f347949da096fb9f9d6858cfb30092e50160d680e3a2092facde25ba8d227c596464372cb624262bf273ac5122c7a9b6168f19a782d5ca3f30719ff092c7da632f263692e1c7abb910d7681f7eb8d3d80f806e78035c845148379bd26d3be443bc9c30c6cd88eb4f1e07a55b8ac7254e5d6da62ef9e69c562ef14397a01f68cc1cb20d914793793572fbe562ae99d3829ebe5da020e0bcb85819dba4d925e6d5ca1cea1993c0f18e0beac981570da71bd82e2f288c83c1127a36e58809fe7bbf26a2702e39f2422252633b1c780894dbd44bfce9f2a8279a2ecaf14256e890d4aa846425e98e49dcdc84021276bf483fe61bb5cb9dd2c40a1d1d7b75b9f18ff53845b7384d499f21ff33560ff751a348f26236b5102b7370e42d18595f4e08f904368c8a4e30d53ed3ddeb964d62db70bd3010dab0a8ca8f17758cb50ca35c59ca1395b2c3bf0c49595d05224f94d02ca6405d8a391c638b5a1a1c54c1c5bcf5f332ca1395d7b5f2b4a17ecbb9ac8cabae3b52e4b4ba476d473659626ff31edd66696457dc45bce02036b44abffaa7964a91f392eeb2f64aef1b188a557720b5482a230cb54e8abc73ae956a96a06ef9506f9478213921a1a22fc4a3358b089324d1838531d0d48590354c279e35a97ea1a3e838ebe9b7d97470051f91f095f9c802133d2c9dc080fa90fb071a2503d0d09a612d07be33125001f74472b11a8dce6fc4af1b26001f9789ec43dbe168576eb1f9a43241c5e82ba4831344a020e6488d1ce08778873e898842ec1cbef46a9b7730cd360da14ed1bfe345aa32a95d04ec2d10790794336a86bb86c089d28eb1f2dc8b824d09a2ffd985c22a9ea10a6a887424f3ba3fd76939006a2802182f8f0fdf3ba1a49d067076f22be9b3dafdf602eaac5bfe80a777403e6b70866cf51542fb81b494020a297196204fdc51acb9964aba622eb2629b7d9d5280c9f72c7ed372298db90bedc38096072237489a36c34d01cae3bc2a681ead7c67896116a8346e4b0982ca182d2a8278cb9fca8cfbc25a766323489bfd61a7cc8bb24465517fa23d85fdba024e86efff8565d6152160faf28cd18b73222d85ddbe05b02dfed9a1bd24785e57df9904c23cb3032d8a0854ac0b48e8e8d7710e55661bfc56519f5d2a333b5aed05b9ca8b1cd42d06c99fd60e3510b75dd55b814071489245cf14b7901a1cef367fba3b0944e1261f3ca8d42817f5a1d8ed172602418de315fd954cf2edb4a24244dca15367c8c947a909d19a90407d77c2b787ec385ef0f0cdfa0e3e04f22198519f89ad2f4a3bf058306f39b41954c8a438919d788390b93e6d9b425a704bc93ed88640b4e93a6d1764ac73f174c20c2d7500b8d2069b604f818fac107d330dce013ea6f2a0706230657ffec560fa58d52d7389b99a71d89e0c0ee6be5069d738363aebc29e4b966983e6f6d5c23823ec60dc3f06e992e9c14edf9278c0a8b1313a31c51fd59bc7ec8940bdb3be715c6a9225e12ce0fbd7e2e5e6e5651261cf201d4712a931f7742bf2210681fbb910b98ce1f068290cef31bff8eb6e150d0c8a4d3fa543a3dc51dc3a1398b2da0c5c06dbb4bcdb6b11006e9ec0c8c5a082f4c2246f922577bfe15a50dda391883d48ae11a2f5fc9936209ff57e660373d79e660337e6c054a00569e5b292d6efaf7c435afff55c3ed3c59830f9128625cb192bb4857f923e51bf37b7219c169f96c4fbf4408720576f12c85f0a667fa439a57868a94bebcf94fa6853d709e5928d3f1c8ed75fd528b372571a7d7d0163d8c44a445489a6fc65d31b9491ccff3868567702544c29985a59b4d08f2e21f9d5ef7913c928971bd42c9b54631a7213480e5f6e641b3a29c21f5a01c06db4fe4b48d854cb7d141011c747006ac34a7a6e3cd5e7a10400cb293deed742a3bfafcd847481c6c9b61e91a2b2e2b08014e888f698e29d74d279a29ab65a95cae7385858916de539fe8b120adb133d940bc875c0ecb087add8dc79daf8537434a824d844737b8636d4087748874eb6099593c7d038da9741777dcbb72c7062a454739ffdb1879fcd9ecdac9fe08550be20fd8cc5deb48f689ecacf86ea9e372cd6fdd42699e1d2473416042e3628afd37827f465a8512c109788d814df2cd9c69a12ac7d3410b09da840810e957acaf9c3ae863a0c563eb0df5bc988d54c1372be411f6abd4c99e336e8f35a5442f9d784cd109623f42f53c6d269d2a293bc968a87e060136c95b1ed621cbe9ccfc30ab1430e80f8426a422949f71b62145ba86b243ba281235f404a760c76b0413568c9468cd9bdedf23c1bf18a5317e9218af5113fff84c40fe5278c270bc51848c701c40a38b0bcd4aefedb7a016adab2e80aea8d87009c27a0665d01a3906efdf8e2bc9c28dbf60ba79abddcdf687ed53f618071bee3237446ed81f6d40c3784ee55a1811d101115d0e74aa77899ed4df352bf471bc9d368cb2c0cc5aa387ee4fa6e4da9f51760207d318f6d21c8a02664012bb4f17b406be0a604b9f08126e5713956f1fb723804e07b1479367e288523b0edc1869d406514ee9b94fed949711051419b3cbca77ae615ea1b28641c41e58d36d9b19cc3a644019ba87e324e23b0827b278f181eae32b085dc8f296d6c2d9bb205fa1e00d24d7a6bf3148a7364cecd3d756b32728418e61f623551d51e516f9c5bc6638c7bf49632735f036012c55979af8c8f0f2fcc090ada54254c801d074315978585f39a81bccd8907b08ede16c00505cbae9912c9a832c8563032888476ce301af40327d88cc1238b3fa021e124ac60d558d37fdbd5c0bb901b49c9e829f6152ea7f99ec6db67ee33f5d89afeefbb23d3a212188a7e4ba11f1a99e4a23a17d60dc67539b60c388d29187b027995f20ce4fd243c4232225a032fc732d0f2a4b7df919e6657628db7ed3ff274eb31eb8b35cda7c80d19eb3cea01ab94636b07c38acfc6813acfc6bfc743cb9958f3887426a8253b5dcb6bf4e43961d3a3862cb02b8df63b454b34c183148cc38f14534a4692c04fbcce549b3f92032f4ac27b5079687d3968ce087b459b102193fd685b87de1b92ed6aa771776c9f7740dc0a1e6b3911bb9820b781055e237f114ff085135146a439c0cec9fae6931b6e13aa4f802e1984243a7484d337a954789fae8c83c86f59b3aa6cf303d69bc332b3794819262018eba3f3ab264feb48d79c32f1da6591a8e9e09938fbaf176af9d12ad3a0f1450f5025407932837876a45b72ca071410e0b8cf4d5ce4f4e34376c50e3531218eb13b248cc4a9f228c02b30a6f6a474419e0b3f498154912c0645fa6a45deb45ef904a280f2e3921ffbee793489e7420a8130617626d5c6a25b84b23acccd6abb927314cda0035cb6b3686e1494d0040f091dec9d55ca6e8581971ebdd46a5f3f8a28428a283110441e2164c248a5cbf8ccb704c3f37815ebd8c1c223ecd41ffc2b6adea44e6681d08c462f539bbaa2019f21208b48a8881c57936ba2d7615c05cc2b7ce7d4f0ac14f826d1f5fbd7e679433b9f168fc01f5d8353246c3e7711ad62e584a65423cec88933b44e6d74fddfcf841c24f88de9d12a65fa995f518ca9aa1b18aa704d839044beed1f7c957111d69cc53630868c07a3fc86f6e9e3a7220df53718dc49997d7d7d499e6a1b319d5dc08c261e1316db88f6d691fa5415972f45e9d023d5ec8040e3b5f43d4d8533138c27c4f6200409d36a2a61f349891e029a2a66cdb1caf52d2da6c27c171f105286856a1403fb241594f61d9334c13a2749562b2eae7865ff90dc7970e510dc25184bd4872f652bb44220b4ce993990736613e0dc7d26a57ddd300a25fb95ad7a8bd54a393144429f5652179dbcc90f851350255fae4bcebc396aa221abaa9f952611649001295254dad3aea5bbc1c717cd1711bd0ec3573e587bf6fb2fc527558d864b4309d184022ab11baa74007908bbf083d76a47deca1420e3cfed265c348ff4f91595c6f5a7657bd7504fce5dc9d9f9a2b2dee6d895fa83e4581427e5b6690673d2762743a66fd71055238acf9f9c15e085e2143b846f81a1f680ed87436919d804c8313c77fcffdd1bfbe5b9ce6809483c2add440106ba0347497f75be33b986b3002d552b0b8e452d7b5587715d32ac2f02cd32656b0abfc993b2389500816f975b7f96116f0eb55cd86baacfe1442c1ea9e6cfa2a515d0b7605c2bd0f21f8730e35eb99018701669e14281c72fa19ce85e62d6f534833a71fe56eef20c46133ec123731efefe97e02ed0b5099e5e03ac7cf4aa2f5eb6755b630c48a3bb1a0e898c70d20bab8833b764643944e7201d0bcf13bb5f16e7c0c2e2b3135d464d33ab504964a8cdefaa049b638cb72e37738e903b56ce07cf4717f140dc1b5c486e8936867b48ba560f0bc62feba277612785a0534031a2034f7cac5bf66a04fa11753943292ab67d570429c129474e90e590fa65ec82e2b80f69745a19b2025eb9a306664a105bd91d5b7ec3abdbeb2258086de9b978bed8412dc735b97bd76feb6bc09cc3c3c262e8cc42aed138662913d84b2ae877153fc93f3fcb640695db9fc2e52cbdaa6c0336b5511340def888fb8098d345d99627f4005d4914ce08258e7a8bc62b47dc48b9d6aa6dd0331d5051eb6453d6450029e213bfd03682e1a890994b5f98f6eaa567556f767985523d6f20e02aeb2c76fa760c62da61141f140eb85c5142400d531a7cfb7a39dba09b09bfbb6703de4d94cb37ce8cf417f883b0dd72423e6cbf88d6010dadd769ef22739633b93a3207f0e0ce9bc4e1024543031cfcc3ef2e83c09e9dd2a6eb2feeca4756c82152b0c8551e3d218e3c4899253d8c24244b2026797761064c6f99b7c9d0c72a708bc4c2ed40037d677c80ca0071e32b526e5120520041daf2dfa74b0680190bd28e023ae92ae1485f1a8e4fafb1209606a147a32a77dfec622dd6e88a68a6c78d4f2074331700a3fd2100f817dae4ed6b983045fef01ae2da62db10bf5c1643c3362286244f5313e1c432845b4574479694dd5980faf88664e26bc4f12a1045121382700c818402eb2c9818ac314236a560edcb6c025b6a593eb7e104d915d53ca067e9055988c76036d60e94a9eaacaee7bdfca230e455c657fbe221f5542364fcdc515081bd3d7f5362e399a6d186d53ff09c0281afcab371f99e140b3e82e5261ed96cb10558e022fc44cc6c58435b21b5f685bdee813516f50f42a1f9b0b272346a1ae5ace321c91841ecd861c7e978000dc476e21b87e1d9b6a73f379a8e5b0016a318ef25785c15bf3ed36ecd2c357e93fcfbc4aca209456670c23c4d92b03d36e8d778500ca27513480b582ca472823bf26615455b927b7504e1f2580d2381a2b0641a5891bd05ba9a8e8dc386bf6d3050f6571dd941baa6dd678c31592ce621ad6461393f6e6355547acd00ec6cc5a40f5325ffde8b4a13a4c6cdfdc1f8c34bae8393773d56daece7b61fc03374bda500f20d4ee93fa2b73bec9fac54219228176caac834de07f5b7acda4cc4eb60344661f1e60c7836763558eeb7b47952fa0559c45d158998c279db09c89e40e3132c875e8633a316c7a975b9b46c6ccdd6d86d5b086ba17111c7da5a1d0f895e5140ec0c2ff605a7b5b13eab176c02cad39760313f56ee9e8113bc70b98eea8b0d81294326f14cc95d3870c585485383cfed23890768ca2902aadf5a4590a4784105e1918394a190a396787b0b00cffb79d202ebbdccb1b3efa7cd5bac8bfa9571e47910f9f525d25df350a68cc46fe7c0eed35d8504c3c62c139932d512bf48c2cadb339759223c588e1bab3d9096abe83bb66d624b465368f54ce878d18e043253f3266658bc4eeb45a86bed9763b93f491b5c503d074e0ba3e4dcf8a45eb59c41b5d48f564d82dcea7896e7fa1ffe5fcdbfb04f1048052bae7d55b12566051c0b70e05c246a88d59b3e110d0970641a963862768fa8b264c19282a35158a50c1cc72f1591e2ff4137fd2ca580b567fa6fbfa6eb77b687d8939eeed56c9d8f99fc38c69c755ecea264624b58106e618c92fa5a8aa1a60d48b52936a459bb6610cc75d6e9cc7d418f9139001314082d5c6e998f984b0d8655c7c603eef9fa778727d2aead4141e00edd44832d85d374c6215905caa4454adc3b3916fcb1d9cd5736f3769ff15c60a2ab9c9a848c809f2f565922b7f956598de34568622b8cb00cd46264b748f8b12e80c6f5493b62cdfb848d75ac1815712d4fd4ddea815602130dac57cd35f38f338010cede9458425d0f06429ae3a9b621b08111c20be373aad39cb59acc68f0728cbfe86dd90a4827d3c21db46721abe5e1b153ccf05b03ca150902066686776a225cc413f6652c6fd27dbc0cbf83005c3d423992db166a1c806a506e600e75ef801fbff87414e84f3fea14543c6ec36299aee9a3a00d399e7dfc292087a54e369032b838b85d79275583609cc7daced79781db96ea2ba522e1089e6f0f88675edb0cf1d0186f8b0e8d99c673ecc4cf404efd19b1d80f29f02198d33ea70b16d3c5058efce7594fbc17e1479d5ac6a83edf2de98e9aef392aaacf89c36351ec8aaf8716fab2ce5442e13962b040e7e01f8cec11e56fbbffbde786d825a9b4d6da34a33b43842d6287f787192df1bacf8c93e015c531a8750b3c5861d03c27331d9747ab001c8cf5915c55b83d84234e6a8aab181a8e51baae4191e5f1893350c6bd1f486e8185f0f2b0bcebf06c4a22daf470870cb5886a619af4d40452d605f3683aaa1ef1070243babededbcedf1e94cdc98f551843020b61ecca1e7dab6c84c539b5acbb103b364f3ca29ae377b6ba4386154696011d1fa2f040701358344cce6b82e3149903cac9f47df3af8c0737bf0f5828cd07533c57266dc952a9067902144be61a1aa3ea7a60ee03b1b173453ca7cd26b022c09713c15d3fd6d5d8f8afd5a0d93be3d0215246d483bbd57584a83833addb397267a23c548f60819e826dc95d3a9b1651edcb5a06d504d7b9ab2898022be0c3a3e0e3cafd88cd7715c511cf72dff9d7e94f9c0f14fe7c3f9faf8015ec106907335d02999626a2b2c92f43705082cf84990550bdca4d99bf60e6f605cc0043c7fb99e94c90653df9775708a8b3676abe218c70aae07f2935445915237362ea9283e5854e0878c0bc004ed5f87cf196cf671c222b35fd2b11d39cb908ee82c5a5cb3733d00be044b486533512208f20fd2984b9b68bc543786a10b3921cea2b396a30e0ce7560550d3518b26cdaa19b41e8a823650e4abec755c7cda00e6fdac78f9af0365b5c43717ae89090cb998772c62d14b7d849d51bb5da3b8ff796983a5ad82d33ba45b8c56cb7a806609b11bb5077ec4d302888454be2a48be30455800af5e1b2f67031b6e7e8b3662a2566d9e8c6c4e10b502710a90252345d2fab81128e880b4a4acada389fbf19d8570b6b96fe410d1eb62e691470014fd925855ccf3efabdec31e4265515b59f8976bc22b8a2fcbcced06103fa88caf64cedd81c4c03ef896d357a6b6457e41deeefc6b5e8ee6104271b50122c42007ac9799da5bc38aa8ce460bee018914490cb9c51110cbf79391c0315f27e02137df7e398680de56e6605804235a70eb5b6353e4c2037dda74320d4bb1283d238608e45f36107983b29308bf2dc8b802da0480b35804a82d267b98c459944b2cee470cac18a756b9c58789d99072807af8f259c19210d893fae5763088ff4161967ac77daf552de1fda207d7a30005b55e41715f80f3964033fc5d5824f1278dd687c2ca2aee24e7e39a02c5b0b8c7826c0ab9150689bdeaca03970b8e58ded20153491c4cde963a6d97fb8247a55c3255e5c45787216a3fe9483038fd9f7c16d8ec2577e579134270cbfc8046b124b677a97b8a19e47ad480a8903ac1f130773a6e15688906d49388738fb4c806fd1026302ef18484598891087d651ef8736f4fda290e6e446a311ffb30959964f3a46518f7dbd21f2dcc4b9c0862516225372814d6da3b2a9b30f091d2bc46102b24a5877a2f80fc49fdbcaa997a4c3cbf085aa4ebafcabed2f822837d2f9a3ee29dd00d3aec15e32cef3072f48d747ddce4d3e3dad89bc2d50f6c609438f7310f1b203acda4e61fa6a521552d2de60ef1efc05920a689923ed321f703075658b96c3ff698ebe4f14749e0c1e4a551219f6b982ae4a8619f0ef68087eef968e6d400e6782e5775b06829a9429f950054db802d1a73b8ca6cc6aad132f751c0ca54266afe69c3a49ef0c8e5640cb9b18d6c1548107f4495f844d5349468f9b9b10573fdb860aa6d236d96f4490a2cefd46eedea5e11cb6798111771d463837b485ed4cb71427166bb2f036d70bc49b672e6e4c64de73f8c7292c8ce3e9b53e5f0f5b920346651ea81dbf37191fa57aecb0f88f0296c953017d1f916dbe09157029d919cc4c322beb348614da718db3f947d206bed234d4a7a4bcf956d49a286234081aabd582aa6ce4bd01e9d8d41d14a4dffc908e02ccbc82c5ec2668fbee59aebb47fbbf4cbcb47215ec4a3ce901eb633c6c3ae5c0c5fe3df55ec400db1ba3e7775d42e7b9028276ad14414baedf816edb390b6dc8f3f1cbca2f68066f27d8034ae88eed3b69c5b58a0211105453b30f4373a0152e6c9022ae1b9dc37e6ce4566f49201b9569d2dbb9f9f0296ae17134aea3690f7737132519105a0732102113f68df2f313eacb0c003670517966f86ccd65ee0c8d4469c62e00066bad3258b55e11058925484ca7405cc8037163da5da0d3fb0d1ae552fe6bf93111e14c87dbb1362e45128759cf4db0e9e62387df42ff73fed9729f028db0e9c92f13c6651e0f5131bee881b6bb3e1ca53af79e58c04230afc1f19718fb6f89b8e967b1279e0335ec20689713c51db167e34e63579dd4712e445d27b63ade58d8a64ed54963e227d580302dfdde4cd2e78dee3ac1090a7b8781d51e8fc0403b688205f26c9175275754f356fb7ce67dc510cc53e7066d7d0618a1f242853096ea331d3a026ddb443d4653624895ea206707968426335a5f0220626ea4c3e65868b3fda162d7f37906acdf9a785c63fb740357c723e0e1eb23da55d40413edf84a531adb030483da47098bf3b974f445e45d2263a4ac9fa3f01a80f962c2e8474ea2e35d048feea24e6f58a055628548fa71cc62622045f746d58fead24c26bf07c690018841df7cca84f6221eed77e8beec78f5ddc4318b116305ded00cefedd2320518b5f0f2b464715c921b522bd876763f76c91051e4fa022c6f1b92a39ef69eee53f17b1d811163b6e2584bb6cf987513b7072bc610a889387523cfdbf84021a9fee1d7de84be80c9b0ad981014cdd6d96832ae5d9e9598d530fcc466a2fbbf32ace1eaa82efcb3cd8e0784ddee6481cab3f91eb4e832e6162f80ee57b3b9689223830f1f6185a4d136641d511188d15768e6d60a1386921e13259d3275a6e8dc5954a4305bf207893751544aff7a8c2072ff10f4508da594b9fdde55f4189cc3e2d9c3961ae50c6018f143b3eed2833e2a594af69a7ca1f067e36f81f8997ef2a217d182d89cda28612731d0349a39c55da60b4140e0e03f1b4e6c65c5581f94b0fee8dd5857112cb03c0e0d86003e8992c4d5024c8e9939591568d2e54540152b7b2868210e244d967337c9610fed7fb5fe04f4d5b621fd1ec2337fe2c612664c509fc31aca9e260f4783a40d21591e7613c2905f600723926b1b7766e7f0159c5b92f1e6828ccb6cd9b2e8cbbe5f5e56000385c5f8cc571a960687e53d303d346fb4ccb5925fc506fda98790f6eb9f29bed65d984c160625bbf2c54515257ae81f4f12accd947911c036ea2e1d7c8b119f328c330f8b6a7beafc26c9c3bd211ff49428aebdc5f73783714f3efaf9ca92a9615089eef1e8cffbc73c7139f006523c7f0f3941d991a5d9935903d40200f7849101a86d1b8a23abf72d335996630f2ed1cf4222d5cabb47b02fb5c6aef05e0cc4425a29e057786c5f1751d182c88af3722d7f0b32a599506c578bac798536ff30fad87aa73a0549548e1be839079f56088dae60f7c7ee842079d901038950ec5929ba5b8e894c983a79ecf57b3da7cf27bb412d1a20b1e7f990b661953a4ef1ee82ea2424905ec37c361c908303126beda63fd1e776e0de976b01e27274a23537562a1b4f219cc1c6fe3687fcccf73d0d5c28277f9c9518aa3723f99bfd31d7493c6835cd21236dd7a803988d2a92d2d1405705b6e33905a76930f5588f38f67985db33645efe4ccef82240bba5e2df5c012e8bc15990815060df4ae6eb15f28e159ab844c12ba205d24f8a5639e240c599c01e8a9ac504b5eb49e69af578a619004c8ccffffd515247e20c8ee9f32ec4a57839dccf221c8a7fe26fec2fa771d5cb504bf70241fb5c766bf8562041608aa376237e49d8bbef878fdc11fae3173cc44155598e4f2175f582fec2e36483b5b8698802a2dc33111da8632e568d924095820aa92031c17a7795cac7492be4cb71cb90284ee2d4f928985ab6a5d0110cf8ab8cb6bb4fc84f96f3db1915ff0111b63ad88de4be3cb23e0686badeb09b2a5b789b958675b262e1f721b62a2c055711a5ee315a584b42d8af201351bf6005bffca22c47ac13f35c47092e33340661032181ff452835cdd7849519de4a215956bc486ece326ff5c5b30a58d12b116b2aafbe15d38ef853808c87118e19d3b8898b2b900bc260d124c3812db01bc70282a67413dbc499fdecba3d82da809ff28a3aab3825fee797d7e841ed18295ecec55e0b228f723411aed7db18fcc53a4031b4934769b725c89e588224d3f3d988041f219cbcf63155f52ed331869cb6c7ed1a38738f6216fd80fcde7e87dd7c1868948e497a59f03f905cd09f8a546d679850392c3e3249a5bd083e72986c004fc96a6a2c357eb55810d68f3f8db8924345fc410b265363002c3f7213393a38a18f026432178c6b337124c4853313c742e8f60e18aedd8f7de908b0fa768a62214c2e75af28472a1f10a20d48d1465e66bd2078a7286973f97b351b8d7f37d177f6bf6ff281d6e81dc4be7e1be55ae382906faf8aca926a2dffa5f92ab125403cd26728bdf03f110f1d6698bf488120e158c81c10703c5a7a1a4810dbca7c349f02aa59d356f75d5bbb81eebf5de908321f2a6b6bcb04814b8f85596e3e947993b456c10a95082471f6a1a6f7df7b23695f4c70b991b9b19fde53a1e9c7401b6f93f2c74a0f9ed347b7bfefdbb42d74b7cc7110ab9cfda87a18e0d32fd8e2368f2efa27a0ed39ab8477232f75d338554ab0726edb22e76151a05e7486856d19168a742444f1468db9312536e0003321c1ce9f30edf317e38ca6f051598d4e96c4fea58deb2daef0fb4ba576df98c3e0cb6c2c59cc602ba32b0bd6f22bf50367dd7966e6ca4d33d7abb991c026a7401f74ecd5ea7aaa526c816743f6764a9b5e9be03066d54315e31332a2990f4c616c20cf20457af5829bb1b7287ec764bd1eb221cd641ba9d5a95d66647226e0879be1ea0e2c1919f55fe2fb95d47f799f23ee338285be8ffa18a38e454f8ea6348066d1862293d095f949f3d68f011bea87be23ccfa67f1885de67bf267ce9e162946d6cb0ea8ccf364cf63ddf4b90630fd26b33e6ace1e2d48f9425a77f156a2196b56ff712549b4208699c2b90b9a64bf1d7ded9a90020ef10dfe4000702a8564d215aab9a1dddd5a084a48c0a409755c8fc0c0b5ca4013a23b13f5d70c8a4ab0e8a10f3bd370dacb27bef37580d4618aee251e5ff19b84e088303f9593d7c4d5308493887feb8d2b8ba35a1676383e5063b364e318785c19cae911c305f082617ac5183912dc4444988adba48579078e1ba59b993944a7607d3031e04c803aef312a3c10c6a0056447c9a31e1b5147c12b2958a33a8d2bbd3f2492f8b06daa8c944cb69abba3bb586324a05e75c5d2ba333be401e78daaaee4e3552a6a81f6734b1b9bbbb3bee69896be76ff7773f8f347660dcc5352973b6e1b8bf4e7719638c319ec08ea38e2329381bbf05d8ce23d404495c3f3e7d61adb598b63ce433a34c2ac121a38409a6244518f83f7ded58208913243656453c21dcc9aa069984f9c58f8a39f6e610e32791827863c447d08f8726bed42c8242b19f7967a07c4940b921868ab73119fc706c209b4474a318b260c06670018bc160e8646544dfacd895be5577a77e20f2da898484929a02f200dbe910440001c4d8717246d22cbde724b872ba5646b79138445b8671d7ff585e3bb5623e6cc580a0d95af356862618956a94703e5820c522414c8042f52f37184045ac374b11ca9b20b210482190b49bac980eeb313a4a9a8ad74d7fb6602e66de8ea440c7965d3fde5deebaae38e9f1476bebfd6a912f80b6fcda4e8740e79c734616cdd8b2feb7393340bed892c18f7fa6bc7602c9177eb05edc7487627d30ae24dea8786256d4147250543ca648ca8ada0b40c7145b5a02471e1aec8408c3518fec8820c372821dae0c274527471a3f19e2d94f84433e2dc421a3ecc972082973e20eb5b327c5212ada109195dbba7c79603b8f257ec438f05cc6550ad6bc2a225c8584ab903fb4c4f83d1c652c91e99d5577a7ee9fed44dae0b16518f71f2c890fff1a16bd31cff5bd3ddf465640a3fff5a36c777f5e3b83c22131c7b8c5fff37fe89cb33b31bd5577a76e2053a7432083d2eecc9766df31d6d6c8a9e54d0e1124354f548c486a52aa7af57f4ed1803704922227986e20250571959824047d71453b9aaaee4e3542e4b51329c608b26625d1622ac74aea09eb486f8b77ce39678c31c618ff8e82697f9eefedf9843bbbbbbbebfcf973767777f7ec4a1c34b64e5fd5dda9449affbc1c34f37c6fcf1773c5eeff5701db587577ea8b6be7d63ae79c73ce9eb509cfb9ba5646f72a71ed4473767777f7ec392d62ef6f772a119e18223eb4e745e5a02f56f0a60959b5bad60c00a81029e890a24fecad8a430eb410b7e99599c11b2b5616b0603f63840c6b68b9c458ad3636a0c4305998281c5b8639c003ac8fccc8937aacb3fe796df92b64b7e0d8db755d43ecd038d7d4b5323a64cf6bcb30ff44dbe910bc0ba9f77c6a57e669667694372268cbfad377acad5da9eaee54a40a9ea14d63a52a98ebc3755d3fb8d0d2be4f240aa260cec93967cdebbdbcde4ad09b6311c3ce02638d1dbb3b05cc2564dceeb924e2855e5c3b6d9f835cb1e6645e34dd7417bb40c4cbd8135b01a4b19f312c84433b26e87562038e5577a73621f2da8984c43581c279bc3532e59de77b7bbe25eb929fa6e9d744b4fdae1c1316c744598119248e1c8874e8e9e124d5c387e62e59e66c21c1206b4ac88ee0d385a6221d2090ee5068fccc704a86452b4da292c67c90019b812c07183473fc26345d04d84e27a499221fe3c5f1a73bd5878fd7ce2022249c0f247e360aeb9e4f878e0e1e1d3e3a8278ec9583fce64db57aedfc057154c2133b80b79734d0b4f37c6fcf97032a87548ea91c405e7260c158f8b0e2e9abba3b9587168fad291ada14f0050686dc3e2f3ddf8ea2d74ea3e376b02fb926e79c5fbf7e1e97901afc7eeda61f5ab67c3a040f78bc76ed5abbcc5ca0f5aaa291937979bdd5c65ac1ec355e71edb4e9fd18cb60d1cee2daf9412cbac85ba4d921eb345d6063eb977bbec296fd02823382f53fa3a25dbf5a3f4ceac0cbebad2c35341454ae882920d0aa9449155298431e3d28a0580979348930b36a0a25c880b8440dc486b4156056ca2924125e44d69c2d5c4101bd6252cd90f04258aaaa01682c16d840ae1a0201e08d90b79102765790a00bd3add9cee331f83202068d95a6a837236d3936c4220587ebe484c482c3f13b9ec87162723463c1b250b26851164b8d1fb09d4e4d924ae8f759c1d982eb47e3fa21d9f2da4903d4bc2216ccf3bd3d1ff39ff714c1dfac5fce39e7ac813470a5adeaee54dc11616679962c69f0e2b2dadf381966679d1e3f5beb9a9c7bd064cfbc9ecb08628a5009349ae1b45c29140c7ecc704998228ccc7018289d9804d12c8125231fed365ccf27723e2ce8910c0a7101742127d9a1261b4c07de2e595c37b07037b4684b4cc007b8b6c800dbb95464f32e524ca5e29eb28ffddd3d63281557ced5b5323a0c40a3677f659d7366dfa4949d5f4d1aaf5fff3ff1726673de71570010121239480c111272c11d69737702b236f7ece96ea5c99591f6e2e34134e503071b845716b034b0f95d69bdb8fc884097961ae50918960cecd26cc5666903820a8d118ba942e3f0c35282921241d3860565a6394265f65bae7020dbc03c4688159729b00cab909617ee095139c584b6352ca958d0087e44ded9cf28893481d16c8996bcb678c170e36660f900038dfb240183866191202a18668209b09dec54138c8edce6640c603b9d629cf01a8f318c09d9c25671338afe3a1f3330000230098f5bb501245926092c0820e7ea5a191d8d20538d0a018841642a620100305aa4080238f044442651a800a5444e4d80716a229540a0907375ad8c0eb9227fb42408070d18fd3c09f46002d24d325990700c26af2244681236d5488080b4d6c492a098f020e7ea5a19dd8b57c68397b455dd9d8ac46c5a42702043d97444420327a2134e8b4b8d9f138a065a969cd816969cab6b657447d6494a6545c9e2944a9a53909aca51abc481403316954404a4b03f258e151476296465967375ad8c2ec9a854124196b6aabb538f84d8dd03beb7e7336e55c178faaaee4ead62ead73510def7f67c2eae9dbcb7c970c2adea9783c3ac80a963a73b07498829a855d368f6563f99c60a66960a05df860c8fb25cfc2ae88ae84ac5aac5b5736fa5dcae9a4e4e7e6443431929455aaf9d4b97f9de8a346f4656fc36682edfdbf36505bd760a6f59c3618fd8761eaf9d3e41b79788a8b596cd70799f857473322bad8351c96bac25e5b5730a08be6961e97fc78e3fe6408add8d7101707b345ea1bcb7244294d77b79bd7526640476a4d84289caedc87a1c5abd4e768c0269301088813aaf5df8beb7e71b8135426bc4168911eeaef5306b2d82a84514b508e30b8edeefa33d039bb876eeac3751d06b1c02ca6ba7d41410c785c0b2f05a53b0df7d6fcfd7f4e175d7ae9fe808b6ddb523e53b53223670e0d1f10244051a82339a48d068fdafcf4b44c8dff925047aedd4e1d138a14fce39e7ecfefeee3826d3baa6423f3ee6d83086d92dae1563dcd418638cf17bfa479a98ef547577ea04c47fff7f7f77cf3a75f2a8fba33492f2beb7e70362718004fdf8c0a1a7c8c7d09f7e31ffaa97067a79c432cff7f67cb80998283a43e5f14b6cfeaca8fee3f69cae95d1ad60d198677fa318aa8288c662b18f7976d7ba5444b5ab60d614000d56d8315c71f11952a0d28282c8246341d1d2567a8437565452302d48a1f9b847af2cc54473e9688b86228111189bf11065b2134da7213166b114eb051ac07a5a16b197044ce36c9f30265bd01244ab8dffec7975a8f0b843524cb44b3194bc0c951e229058063d3821444a967889664870b2f276f0fbd984d8a4d8c4583401d6db954b3261ae0f74d7391d781f269d014bfcaea100e2c4b229e8068ea80bcad7b056bbb20828b65fe9b5b35dba7f7bc2740856824f966cf79d71727659816b8a8ee092d9fbf378edb4f1d9b4d71abb9198cebdba564647234533b5ff517777f7ecbc9cdddddd3d7b8e6a25b7353faf9d415c8d506badb5d6aedddd1d8679beb7e7b369eadf3b7d5577a7ceb8334ca0fe4f95662ef746886be79f4594ed6ed8b061ff079359441ad8b402052b3cd13e38841177e0d6f62a835209b585d3a0acd141254313d7cead2c7af19305d142b5eb97a4fa315572948ed74e1e9f5b5490e6a1246fdfdbf3ed648ea636facdf26802d38e01a4d74ea81b06a4b6cee9291bd70daddb8d2d1aa0ceade5d17aff6760ce39f7c0f96f5db35321de4dd608a68cd09a77523575ba7308372fdeef8f71ae86cc1d902fe4fcd95926136c675bce39d5391937ddb9604e42c462ee3a84c17ebc46b3978f61ca0e02d1d01f3f603b7bb745eadb05415a361ec96e3ed87db380a972ebe1ce6e2e91a51252a1897a1c28cd0d7fd775bdc00572daaaee4e456a608d369e0c8628d8cddbb3a46c193b2015926d4f5577a71af159ba3efaedda4c4b80b60ca3754dcf36e14cfa371313a52dd3745cecb202a11f505942ed4cf3a7d1bc03c9033a3013987eacba3b95431047631c8b61ac8fbcdc73aeae95d16d10e2dad961c5ff6bff41435f7577ea0d91d74ea41d7383a4a1316086279ba520455b4a517ea327e6efeeee39e79c73f6fcc33173ad311c96be5d8c7ad02550ec852f64baa6b8f4ca79dbb04e66c4b08bc3f38e20886be7a6da31364c2741d0989f7149c971f878886b4f3592f031bb44323b91c92253ffff8c0f1e10ac8e550b6d2792a5b165a17002439a4f391bb2923cd96812229b4ac434c8629a5a0a9a31fc278c9fc3083a0ca13b6fe6a57d6fcf67547aed34b6dbb8a4bdb040584e5fd5dda9482f5233694dfabd2405612c54a12f62a631cff5bd3ddf91f1883d52d28eda17183449f83a450cf5574667a4f4dad92edd9b11d3b104e8ffcb5f9f4cead18e0acdb42b2dd2f1229e221fda6b77c9450c588ca1d74ee22d4611c8ebb95e5ecf25c70ead6528616dde4a1b32cc0a59149731743153726110634a4258cd2b69696467b724d6451285c662c1af1fc4942dbf8ef5929227fa774ecf648ffbea52933503ea71bdebbae6d0649c7375ad8cee6cdacea44d5033e79cb465dd41bf6b4ce2e769abba3bd545d4b16518ad5d2b07ed94010ffaaee40c513683f55aef1ea89fe6fa7a5d07d775dd595a9213fbbd5d4adb99cc917271606a9da1122d6108a5e50d8dd708026a11f300049504ca11f4063aa47ae8ff53d5dda9146051a0855feb17fb0914cd737d6fcfd742a705cfcece2e903717501a27a65b60b5d0dab9666bf71744b71748ffaf73479d0cda952b06bd760a6fc5a1bbbb1f518d7af6978350b2351196d74ead1bd1d60b870e4118ab1c289697508e0f962d24cc3942530635ec5ff0666519e499b1c11fd86d851b749112143caadc58148351af5bd0fac0d212239421244cb860f710e481c803d263122e588245af9d460c41168453ce31ddbd6c0daf990d1cbb8a18bff61da9161743ce1acc393be1d078bd739b679a9bee8e3b2762c2265a3c2f50e0646d2e18096d4ea682ed3ceeac2830918bbec6396ddcb2e5588c75ecbe0ed45157dd9d9ab4b46598ffaa7fa48b4673680ca8f6a7f47fcc612daa2462b36f970989270ba1502811d31dca540ecc3dc5f8750efd0860da9593d1c9685b74d5dab7031160d77487e2178b988cdf8b55d962e91944048db5ae95d105197aed2416f12d8811639a940c88bfbba38e5d0b39d89fd39c3353e7993ccff479669009ad260c1b51378ca4685ca091543289369aac80796e94dea8548c5e2ba70602331a04104105922009e35aea6414000914c85878a48c583c168f45616148500c0382814018460100c3301c444124869358ca5a4648157e107cd6319645cd8265680f4b706dc62f5b31a3d6e48fbc2bbae21c5f4609f6a39f0ad98590e87144692ccd8fbbc25c0eeac3380f6b0807dad017f1b0a89d710a2b20675709aef9e8b3dc5ab69e46ee8a1b0730c57d8044e3c9c80cb036631aa50b47b6ba320a3bdb9db0f1ca8bfba68561e6a6d24502b9b42a12283bb6553339804d27322e11982f9138096caec858663ba39a25f2263ac8f996cb0bbfbf21ae3b07eed5e57abaaf79d93d4acfbc2ca12f4bdcc400d2589adf41e3e625b8c57f25d23c30e71d06198677130ba4c47dcff1187989e12b7aa5bff62c79fc2141a1fee2a9c489514db6d376e837d8b3216873e25e2f5eb78486cdb9ed060a74b0a68a30711971e5b818c2b4a34c961a427723484f2b2852952316eab9bb23d62b25b5ea2bd356d025b3f2ab211b878c776b4eb63b4a709e7bcf418dada72bd9199658d4a153bc1d08aa16a1a56424e661af5dee935d772ce4bcd04ec0112b3460d3ec6bda53f45a7d33926abbba78f3bfdb15a7daefcbb0fc724c4170c6b73375558d1706ca042d771be42cc3341d83afc8bbb84c436a208e27d39938edad18879baa50c170ea0c824b876b96b8819b34c955f8cbd57162d8c1f64899c747a91be3c1ce6eadd38425216dece9c6363a964633ecc8e669ac2642a0969855ae959b87a36eca4c587c15c64cbd354eb9a2a690fc4ab423dc98196587777142313ebc34b8d8f7349d8793224924401413020d3b8acb791e8b1aa48b97cd91b473cd45b942974d034ad370ca85fe3b97e78b8b7817418ebde1930405f41160a9d97a4b24c3dea41318d6019a482441f1a4a1d362e472933e491a16909e867311b914e10a95b8b12ef726081c2b83e31574c4f046484cf53bb807ff65aa73017f4c104bcf1cb49abfde0f31c92dce2908d305b0b49df9f41413f4f2183e417f7163422251b8affb85152cdd23f3fb045d9a077c82fcd810882711b1c0783aa894cd587fe0a576a862f72bbd73225db91f1693783cd1d22aa06449d7903587b367685753cef12dbbd8e209841d825e43dccf1991aceea287d3bc7fe4959c068b0cb92c32b553a92b5c5af6dc009cf9bd0113105d1504ae2f601d284d6a24457645644744f55dea772ae952f3dadee93e54d67921f43f621ae5ac0af2fc32c5a620b6bfcebee293f599e09fcac249ccd0ab2845a3002697f167941f56779415d721f265d54d7de1a17a052eeb552b50102bafcdeaa5b3693e9d885bf6417185b8afe46220d95dc45287162046800a3eb552921c5d83ac394d76430bb730db9df042d7738ddfb64152729e7a04d4172f35dafeb13b993f6633e670431a5cfe9d9cc4c88196dd1795d101997eca744fd58159ef125a5843b46b87c86d9fb2eb10c1c350ae87ca7b92e91545b3fba67d172fd7d07036639b1d9ecbd575c2293db107e4fc1625bbd157ac92d515f5be983fa2f09a2980983123b0d05287d118d45847f925cd68348398a4ba997e15afb32323033e733b6a02d29d922e87bfb6c386a288c1f0332d4877f78ee8c11987eccc517bfaf006088259dd2a03c56b30077bd773fe7ee8a0d8d3a571752fd6ff94c2add28e8406eea57622f21cb78197c81bd1c79b13fa42c2372d267875286bebcceb6e64a0cab922724e35996c028f30f701e188a636f7943fdc3d7f7c43f88df6da09d4e80d5bcc907e54b13ffd73cbac62dc94440706e810e4dbec005c53522d44554e0d325f5e89c51b76cb5c21f3ff14764ac5b19305d1479273896aac1498373187272170e49cd3d6ab0470821c4ab28b46ee14ec577c19192f227335824c1eacc4e77d84b1535e11bc1a5446c5c4533bc9ca07810c2acde39ef88d8517dd74cc21537241e926b941d71b77ad0a8eaaa14ab4203a95e02c7a7a8ff51be424b92e5f0b209b60127709523fcedf0b9134ed5be9b2cac7e9a81ac9bc794b6747d4f66b564fc76f1bd03a87f5a0380930cdcc40d1bf90ba861db82f679ac5c3226a5bf13a1f45d4684e43f3da48ea74cc0788d0c1195c2bedd66ca5eca73d3ed5ae6901425bc2357f447f8a58b84dc105e586a59f8a19cb81fc98cc59acdeb3fd33aaa49211ba8b2cd5b9603a4908e61aacc892600c626e5dac7d1b4770348fbc1f8d8ad4b29153abcf68b78743d007ccf3b88f0bb94e1ffddbbd143d2ee879cd4f53f56fe5556f16eea4f2220ee90e81f5139bbeca837e06618cea280872c5414e57ae59e2fc0d116bd6ee70291e34b14b8bcf45199c2480934f8f2ac4b4f48b4050a791a052f95231672fac73168ede059d9bb57ec6d1542cf1809fbaf50897d7594bf6dcf88c4e2a3e13a95fa7e4c28ac308d2a290512035d3dac172e28c82b96993959361cfaba33883c7a25f8c5133b595aca8f784b80ce30c60309d82f857f7c7f8ddfb118d356ed4b4924ab8218bb3cdb22b5494e780310c516e8ad85b8d323a5802e5c230642c8cbb984a1752e6410b3bf3369e36a35de8ce7966166c63fd2eea5ee164ad9a8696734427ebed9bdc89bb86c963ed0f2e9be9313444d7995e64407b04b5b90c68cf377b9fd3c8cac0bdf87fc44c65457ec10bb435ccd86d519298be78c4c022348563df1489426f8bea5742acb8f047f11b2db3c44ca4ef8b38f3cb9ff23f2db857dfd38f4a9d13481fd594b8c8544f3421e4969b85733efead3c6529383971e419dc597c716a2c82e112a73d07d070bcb11fd5bb107cf39ef02ea3e30d6ed0c545bca8a1e3db9778335322e74df9d3cae4e4e386172e4a68d8bd30bf0d732b047999b0d7331f945e0c4306b18924bb817e7ff10c6c0b14dffb501d4d88caf7240ddcc4384290e4904ea26676126cd0cc6011fe67bc9fae274ef900004631d814ed890afda252beb81c0f205906e5bf9cf2bff5e07fc835a144aa5a788e933f33463219c5d72a168f878463dcbf21751e7f7b11759368a5397a50243121a9dff5a8b4fe6f4f1d227a509058ef283d074a8bf017a8eb2a6c6223e4f1e42556f42b35c7d7eb0ade80aeb83461bf5c580e18f2589c2b91f3c52e593277c35209117e35a0aa1eadf06f1ba4af09009a20960cb5a32b6e8d0671474f5fe6d301bb25e3f7b60b49589550b43afbe5c4d24234cac34c99ec80f3cee62c68c9394f2c1c347e2d2fbcdb1653ac8b52eb68e869e1ed248299ea0d9ecbaa290a7bdd651b0efffd5a146a8f9b87a3ecc615e7b7376a35685615f814806a58dd1c12329d7ee30a671ddd760998fa55e603c7e6a1257ce789be40ee86c00283c925450b02e92a8860d8eae39492e8311d94327ecfbf85d75cfc0afbfa48d3da1e8d6d876597da69310f7e5a854eeb510f8f986037c96b42416b8131c8725d3e996215c93b1508d3113630bd37652a4c9d8587c740c1b4f041b3359d5bfc9eac357fa00ec6e871220c6632bab2574d1da11163fac1fca9147823b0da8d5abcd85e222e5a8763b0623bc3356398f8db49b5308637f5f0d7ba2468a49da05f0e1d055c1d60f006c2aaedafa908816c06faf6dba62c2c3762f95df0d91baa95084e5b18077f6d112fb4e58b00c00ebd7e4d64e56823069d2980b2f3ddc107d6077059da3d705c996bc8ecdf400f1f875890e64a1140bac72413b8f80f82dbb81ef3cce5e054245744a126d4c3250a2f18126786ea178ac721520610dc3a8c271d0d5d02b2c9b74e1196d149c8753cd23a29f996c637d14cee9d8cb146f30e69e5d18810cd569db510181ee252242a5d62291645eb50b18e46448c98c2e0d5641beffb9c5fa94f65676f9564d57805cae735a5f4723270a9cc1f182f64443039aab4690cfe21081eb932fd8f484a89d42923a21290a31d7ca432bdaba4d59ebdaa77feb930628a40073fde135d7ab2f940bb39008efdbc93e6b24641c84743a74acf82a647176b121cd47dcb5024180440f51720572817ca1bdf15b5ba3bc879fb18ea1ce61fba4931b0f24ffe27ba526943b694c895b9221170a27784a07b0de2f6741a076a1c34ba727f883260e5792d60667e567dcd542c13a69599e0b0605e103f631ee09baddbe59ac1f2c9f66c555b79651cc0ab503439c4fb4143b386a914d13f7baf3c6d565b2921fa0e024d0bffb822e37885357ee4d71c10355fc06c3b3693697d40882acc147b8e4e423565d8c64c9e5ebf859a67dc50171d9172a435810c4efbc897974d73150e51e5800277a9ade1916b16c7e012dc7e6c6ee9c8626612a2f5f6c4ed698c0e970effa8df574b8cefd218b71d07c710e922d439672a191649683afce3816f89b8b8d357421b9f088b4c21c151094df6aa5ed735178b2ad60f2d5411af8cc5f05605ef3004a0523784251c179f5a457029d8312cd7f35405ca7c98681ae5e4e933111b721b7d4cc0c52339a6396d5bdb67e04d741c8bbaa3f19ebef20e10dd90cff7dee2de19dacb7956075ca0a2eff46f49f3d50dc27d5640903c4877006f7e30f67d0dabe59a1da4f5a865b029af3c72ca2affe8726e3efbaa4c9f036e613fbe61b9c9651ae3761f6157931b1bbc83bb55ec26256393d6702767bcfdbf66660bce79d83a5fec2f25e8623d0285682ebae2238fd4830b110e1c2621992fad3971c97d53d597060bf0d131df633ea9831aef9d0a448392402a0148262b06fa24015aab7b2b173549816fe213fea1095bb1d596abfd7a1d496f3a71e42e95b431cf711249549e6cea4b2971a58740c819bf9454abd0e22fed47ec0c2d165d39d158961ca8b94ab880d195b02b55efff0a444565805ec22e1992a8c302e9bb34982a340d3f45a5344b98d2b0136218f5e81c917641c74a41a488ba10413844b66b52674d269e53f419e100f511e090ba00bbe1fb1ddc76bf3d805d8c808bf3eccfdd70e5e88b0feb3faf94ab8cae0ea03801f404dc9989dfc3d4c018e133948d30650bf60f60f88b18aca92ec94df8753ec148817d4297d4e9985cb8faf66ffbf150e7c0a8f358f6ea5fb68e8a69b0d49e8fd2393e85706d8230fde3f88e4f97f5846b53642385b137cb293777fa4cdb0cee6e4904d68215092ae4262038a3ac8b9cd73b634503d7060b4364409a1c332ad29c132abad00c7c175615919bb0c6f1a7ffa1ababef6ee146caa3ff47541871b70e09d2b81b279460471e5f8fd591e7ae5ce7ed0a0e81624a22f75198b60ed80a7d13c742ce328fc02885b4800893a2a18423540aae20f6118d40e041ae12ba0c4e6609a5e252232cb0f9595920db97842a391b869782519f9e34c5d0c1fd8bc5edca13ad706c8f73620393ab2ab82f1013fd88603d81ec9da99e649b035143e323c2d258e9b2ebe45874a3d0cdf57c365cbbc9894d2d74b843abe7a23218fd9d00332b134a34a204c87016f29c13bc008ed97f8238a2ff01f11bfbcf006f4adf03e00c8d00d5fd87d79e1e5d7ff133e05bd8ff437c82f70b7164ff07e003cd1cd27d037eb1c6fd5ff790d804c004fe05bdabf26efe3b256a5dc85aca18c73180621935be6f2cc70d58cdd594c3cd2fa8e8fe2b82ad9383302d1fd68b948497ef57cb1d01e37fc81ea5c3ae5e68debc663c7ed307e7ce22e634ee099c1a84d062e6725b5c116e20a9f5517382be49424b766f52bf37a7856e89d5a2992eef6e430be559d309259a22ad7d790096cb191670fc550f00acf6cd9de04c24505422cf728cf900298552b3a98be0bac6d91b18e81081634a440c7cd3ad00ac3d1b8c034df78c6527f4844b1ccc8d9533af0bfac7a84f1740ac11783c311d18cb945188f1f8514180c5462d48705671c885da5eacd04e3420cef7c7f2809708d24dc849b11b1bec4bf5ff23943272a910b25a940081390f3043d5611fe73f11ff08763af368df827f3f38608be10e6b87d819e7316df5214ba239e4bd70870474b798fc0e67603d57d380a3caf8f9c22161b1eb9431091f31be793120e323d446a7e1481b2d2aefb6e918e9d751b59afcae35df3128869ce7831e4293b475744eac050d8b283de62686a00ffffa2c872e316835d06f06882d064421c71908f974f52700319eac478c7de52fb17ef801023c9aa079a3a6a9c412200338aa4c5d5d74e048a6900604bef3695fae120b578190ba437a57831cbda99f2cce8e29ea626278ca3049de33303e623b5972fe4e49f632c8560fd08411ad00c662732027e1a67f996260192c785320f661e334cfb52e032f195feba1b798848aeea4483f0826dd739235ce864ed7921aeb4b00055d872f5835d1d3e4b5ab51adc41ecf8db2fc343808bc39c17e8a0dd332df5e3e97d5f0748ca6283846838278770b73522d4a345bf3be1782bdebe008977643f0ca1be0e34581094754bacd62cf58933e6ba77a608aa1c1ff6d5a2e4da378334ca3eb062aad4ca9904764acef4e130cf195901f288ab682436dede30ab1e24c8dc9ec460445f986a3064f73016b3a81f5245a92c129a492b99ad8afd8da4689c1a6d26a8d9ec04316ae67e6d1e2a28d5a5e899bc527a02dc2bd483a9f7c6260fb59306553c94b548e03c8bd3a338f06ff61b371e2fc61773a3c400737e7c74ec3bd7ca75548945a725f9722ac619e83bd508db65001015ec88fb4a7899b5b8be8e1fdd0b4e781228a5207f7dd6c83e553850c691144583efa49c43937a68ce498c13e1b29e99a8374b34969715206695ba6535251af006e4d972494cd90c6e82ec390fced2dd8a21952cd93cfdc354b97578672ca4e4b9c036877576cb2ba684ce7e7cad4cd3579a1e67bb273fb76755641f142220fab6b2beed7101c8cc8f13a15c8df03cf204aff9288d418d2bbef8b725709d41b9aab34dd841273e2ec9fb9f57552cf7c1ac63945d0ca21fa80f20762007d0142a32cc25712ed8923af0b9e7ff9b3a4ac34a5a30a102c4c820705e6574f980fc375f3c45daed17201cfda6756d3c15cbae0c73caf724c3a604c0de94c9520598211c2b1b5da94ff89d864ead3c3c951a1b9b7ded45f1ca95a3d99a07bad5649973aa940a73de776373a63c1f1739e0095efcd25ba8f3778fa0df3e4d212b2f95077fe66c55449441095832e3285de93706c44df5d4944e2eed8d7ea8d18a276489194265177ef85ef2cd1cac0ec7ebcff2162b159e9acb45000698163c26844cef8ce422b7034b7f5c382000ba6f658e71fc04330c1f7027c3b90eee1692f8ac333c3eb052ee75e4fe808e0efc584dbd9295c9dc794a22869d6842ca92f82b4c4676b11e54416d7e75429a9f7c354e1c0731a476e7df8b26f393d0011c65e234c51b69b87002d7f7320968653659893f792a444aa92111c3fc4c018334cc9207165fb9f67ba487907ffc2c6bd86fcdf05a48305cf1cc7d691f292686f92e1ee67ad13686b6540ceb1012539cabf5f2bfdd1fc18a44843b1ba8e6a3306fc94729e21278ce9190667915e1489f62659568d73aae1c85c3ad9fbecae44e63f2feda8ecf1a4e466ce5e7bb882a0c0efa83ea8079cb6c21153d608e8b3f27ddc53ece4ffa51c9e6139f922b2273a399c813890146b4abe83e748bcf599a3a9ecb803a4caed970fec69ccd58f37e05c3a94cd04505a8751d4b40089689324dcf3d8c0bcec703c821a2d6be8d6d679220a46409a25a55ff022c9049f9d9ed281d0fc147af417395d39b853885395e9b02a8c8b753f872539f82a2ab16393853e8e632b8c9bf6924df8c17f65e80ad531f1551ff970bf1116792280afb08a88b3f883ff4bb419eb6ecd3815005b946e43bfcbc414dd74419b595e976f9cb6ebf296884bc3947aaee3d2bfba3ca90a024d7b756e8cf0c3f5322e461c009e7b17f041bfc09ee4737243255b9811f54fa064dd498ec812cb708758ff5c186301a62bcc4175959e8faa42608b6345cdf4573e3d2bdc36256d8f0ee17c30a0150408337d7bc5e909f70a3f1dd9ea4c40f72c04ece8652528374b008ee7c0f6c40ce1e2c19e6e1d83968f5dcc6915e5027b7a045302b15a72aedc136ac2869c453dec4f4b753d23c54d73a48767efaafdd0cdcedd8fde44a61889d792bb24c971301f65e8ce0da6c59e65cd625d8f2a7e98eafe3634b8bc7047744742d9d77413a016ca690dcc3190e00a38d97a3822717e8cf84eba543dd5c44697cfa95a9b8ecb03990a18d94bbabd7083de6dda00fefc0b21823877580a746e30d12f18f90d90a4dbc42db9629bcc96983a329f2c52aa2637aa2de2c4cc38c82f256718eec6b05d67987fbc5eda0ddb8036b379a7529b2728610a030ae3e1fe3c493ee35266e0551a228c11ca9c9e50bdeeca40ae4c78ce2040c214478e07d26c3936a4ddc8b061ba0b09065254320e4873a4c830ad81c5624455d843936b722d2848aa8e08858c0c524f642830e552160569ae040f429a354a5687a8495352ef2bf0f1cc66540f6cf19dd06fcedab0b19c2fc36799baf255eb71a9d1a96321e93e8327d268b7c9f649f71ea034022560c51ad9d3a419d372c2e5044c18715b885079c25c7f3bb3b986d16e95dda0ec89356982c44d1c986c4de7a452481cff88d2e716a98333f798049993b87d4e4f64fecb781f156cf7743d8d1e0e1da71be92292dca612d467555610dac4d4f587a801e3825b46d96669fb11a74976b35fd0cff6001866c742eb7198dcc37d6cca78a651eb177724024716312b9e6914c7ec9008ae6dbe7131bdfc8913f1ee2c682dca9afe5c597eb368f819a96a8c7c28a68e304ca6bc332b64337168afde36db052bb1b6b2f3f1c0b6a12dd8d9e16202bf5502e3a1b8845c941d5ba8e7d546007a7226ee7caed4f3634ab5f15a040f6cd73d722f5997238104d861e8c8af163a8fbf73915f21fd63cb86965444f2c25b7ce0aaf3a5e23bb9a50ded81cf5e04159930cf526c7d49c2891036b5c384479134224337d48a8b503168ad3f5b0ed472daec31aa4736ecdc1e7a1ccee19a0e59e5202726ee42821d10302e69f92e9bb7ba16b1845ebcfefc8921200dea7c1e5ffd2d887bb17cd3ae687c11ffd163974fa873a65dd485339b09fd409b9f39a78fd5328edba28ddc7290fd5b1dbeb80555afe9411b90db458213b3211afb2c843e81212353a1d442acf041602252cfe60b910fcdc72409f9262b09a4343e4e94287042c92c5d48f2b9df3b038d075165b336f016b6c46111c7e09ae9755ce138a9513067f34f6babed5b88ca7c3cab11bd93f1512c7ee94c96e5519b428a12ee1de966de7a488701863c9953296444ee8e143276c8ef791e720a1b860283f5a0eafa00bd92dcfd6e0de5f06ff1bc07753cc57895888db4df4427c86b06f0e9d0479e4f6cd1f9a77038053c6d1fabd5b8586c1913d2e74a1090417a015d53a64fea3ff4af57e5c10144e5ee6c0224e38750827ddd0e2cd503d2057099374b2015e43f1bf7d19c1f7b1c64ecceaca3579ca3fd637d08bb18687d0a2293081a02e26d88a8c44f90478638cec0b7728530087d8801e1b61cc6bf76645bd05cf0ca949419230dd883dc5080fe326bf817a8e2c1407b8c1e0234676842a093a7e2a0ce4e0f048d3c1d003a394a00e898a18740fb7a3a18aace1a860e408d3d35064b6766468d803a1da5639cd1d853815083b3e4fc11044ebe964b08398a8b1ce0bb709200c74d978c3cfd92f36b1c10be35e52aaa742d77e2c7789151c0c42702e916563bbd785623bd635283152b7fbb223ac5b570a56cc7ea2ba2a3474e68ab2906cdc8cb3f4a7ac4e95f667d5089078eb418517457f805b8d1a48cc559f29e09564eb1ca96719aa9a2529947d80d0ac386b609a5e0f74530ea60a73742bcc8925721168cefd24a7e1097d205eb40998e12a44921d51664e797cc6696f60dc5b775b9f1cab19b50fff6a093550eb84cc854aba2c5a110062ead19608734e1269eb4066fc597f20bf6e39bbc12c4cc24c970adb1751a8fd8ae148c3e825187fa1c41e262327261f197de43186e6efb802eab0f5f19cf28fea62454d0d1419e9628f350b19236c4938627c6658b87e26bb5f02948e5f95cc728935f4d29ddbed4cd062a6e639edee79fa9bf21d89aa558cb74cc250b31f2eda548bd6493be22a1c3530e9639af4e86f2c54375691388306776dd7351549665a86e4ccc4b13072c5668a147a4f497e188773345235c4f02a5c48e88e1f4d0514abe95425166f52b09091f413f7e3533a37c7093ff528634c674818158efd750b4b008aa6424c45919da754a16f767788a54399e128bff0341ed072a7ffe34bfbcdbfb4a7ee1ed594c27ddfabdb416466061d3fac02eac8cbe7f944bc2e7787223bec815d85c50bb313ec1fd83c5d1785bf2b7bdb973922826896f0db7c6c898045f2aaa73ef1a1c8d5d3b6b831d71df4aaf0c0f05bc0e31d5fa77dc1da9fed71c0187e62a9875555d35c50ef0f6809012acdbedbafe26fdaea8c46e891ad8e8c79b84a6a55060e14b1254a7c25a0caed15fac29a03ae246891fcf4775a6e194c7dd4698373cd182983f265f143d0a48adfd63923fdf8aa7b6be47069843c5bccf1b4c16fc3f73e3dd95bf442a045a3eceb8230358d4858e1ee7f89922714384b01c068b48e36423d0c880744a592a74b11642d558016dd4abd1ab8c4d694c1aee094721a2f70c0f44d5bba1b1ab07f1d3c8c270f2f9be8c04958267a562ef58e35fb0f76a13352a47293e955a8721d811ef0876eeedbe9d9d2dbe5c2ac8091c88e258aff75acbf4e680d2bd60bedf52a1e368fe8440ab44e07fb5becf8336e49012a9d360c42a3bda109ca025a55b563ccac5976aad4bf73bd863e84de65f74cd6b4c47a4f2f6ae758a743a9a8fa5feffce519d1e0a33ac375e1dab827131c6c656c1faab9daba8a1d6a65cb8b829ab5e5fcdf3f7038cec4a552ea9124b556ee9124b5560ef92f8d0da9edb3ca491b08ed741ef6167ddec8ad97793e613fd25d016569a39148b8557e0adf67460b1e5370fdbef79718306ebbd01232548e5d7ce620ede0abec8427dfdff8a444ca214bdc85c0a1d7fb9e4349cbe3479a0924fbde3b556eaf7aa788c2c1c34bab32b1962dc4c7ab7d915f30fb3ba61ae04ba8cf9883734315c7b441d24b4fb22038073c650139e004c105a1cab2dfad8d53da1d1359749135c4130dfa2ac4c9f296083295edc3ea6c556aa496fd363416559f7d5c6f7a59b3db76d53bf942aa29d226c8ebfae55b2a395a9641a27432cd845223198f079a1dc58ea595c2dba03b9d2db79e0fc593dae513064e3b02a5d3a40d78e090e595a32b6a9cd8d3e222844fa819697fd9b3e6d7ce13297cac3619cce9972f34003e7e877b58375725066e50b7690b2f0f2d7c14e4826630588db20335832d9e011b7a83ea38053c75f5f97b4bb68d7c82847d9e4f0ec439594702b203bf7dbe0f978404623778e4c249ee0e94e7cba60ea6cdedbc37106c7729fd56293510538e0bf9a4d36a3098f0a030511a7154e88490fa462bcf9b4c5d21c236ce19b5ae17c07c47870bebcc6807dc9ffd0b4abcb7b90b09c9d6b7bcc5725db7abd5f04677a24ecdd10003c0908402faf1c3b16cbd0595acb797f8d0420f2d01b19203302f93773c5ca9e3484a97b03e32d2639acf535b2b6a2205a74204bd29a1cb2581f8c09253a81fd8267e760784894035c4ee98f5b28adfc490122c5c0c17e9a0a6d5f9e2e478caf28299349a52ca9160b0f1d50c0cc9fdcb43c3c4120ea9f01b7c83e7da20fe7cd643e07baa2a99a14c842dc09a109a68754d463baadfdecfd65e975c36e23e3ea536ec83f239c6e24f9beaf2a73c30cf26c03fa0e9f7af3873bb127f57d8abba66b6e9dc6a7787f20ac9f1ed0f93b54902cc50034b95f644ce9a090de0fb1649400b05b818c31e82c20a6f34fa38eb160ec688ef73ca3018ebd10e0afacc5288c4ae0d461ef3a46a5aa7023dd7b276c283aea36d6003ac564a3ede8985d7779136ce442074254d11818ea5cab33e0cc617f0df5749b045d51112251df57446f4583510a10c5b1445459bc02ce9f02a132a71928a9c34691def23b4cad3ee5a32627950164d481d73bd7e45f07885ba2503e8967b621efcfdc1cdf7eee189ffcbe31c20fbbc1d509b381827089584cf90bec16422819baba88c837d2795114a871a74fe28ab15bf76d5925b90a8e6e63ed2a765d07209f7630669bc0b7a7fa40454737f2b360ab3477ee298533a51dde8f67273609fe27d3cba56458f0b437e8fb7860902ce10a5175c1da2711bb79ec91d96de52cf908a0b941c0e6479274b83b119310f7fa95cda8e069cd8ea8c10adc65202f90028a8eebc6ef779f728b4707d9922d89a6104940b1a1cf609a1802b936b5b990c171a49b1dca8a458039bb1303eaf6c7b44befc3d9d5091afbae3e9749f1d31edbcd81e3a34d5421510096ea76e828085f375be9776767e414b23f4f10d25afdfa1a01281c48aac0674a656dbf32561272685ea15655e82008de530b6a35511e5e262b9b8ae8474eba031c1645d841ca528ff7ee2ea0caf3a88022dd61781a338c0a692a090f5314292448b1a48f5bc37647de788e19d63586d36472d45bf1ef61573468d3945034fd41851cb11c12801e058d1a6d867c93eb4758c07f4a01e2d86df420dd664723428f45312612181abe28e8ab1d8dbe24535c2a0d299a35dc9418c4d1dac308e7a9279fb22d909739a208a8e504e42bdda1f19a8ef25263f0e914ec200c3b994450b75ec5c2a2f46ac0b93f3bd9f81daf3f721eb0de5d59e0e5f8b8d251058c8b2143731cf9613813bda810d0dde8eceaef0fc044921f7326c0333a4f27255a35a31d45a2fdd3879ff0b01009368a2395d423b7547f3edb32cc80a844c3cb6a559ec0b6575bbc7d02170d101ab1937100a4aa1f21b9764486caa19342ac7f6e5f6713784617a0f888f3c542a0e13c12d372b18a8955e875dae1d4ea22349c1fe90199ddfe059303cd6b7eb92e63d063b4bcca8543b84b1ce6c50c32850756a70d5996d671d9db821b30c941362dc846ec2f20a2e51c518bdbd8ec862d783a72d995f446439819c66be249b0bf8a236166fa01dc4838ef2f1a969ce6b7ed02b1c30d8e8bfeb1e4c7a7afedb0400488106796be4f0f6b210c16565fedc395990cd7ace118daa17860f670c5fbf273594207e1c717f7929155ebe166da74a765806632477d3b0b31bb3999af7638b2788ca8869c1de730402810cdda05bfc82c3ce2edd009d206ec86036aa58a855930181aa503d6191ac0b6f08d1459e927555182bb08a106da28d228ccb3855ac89f287574da6f6e7724d065e9d85870001c78c045de38bc742a43945462fd41296b142caf9ff7c2315193661b21846cb2f7965b6e29659249a6b308cf0724083ee2d6615a53bfcc7ee3f558f25a83969491b5b97152dad4a9c7771b5ff67b17a5cc22dd8b7ad5d263f428f426628c2d85105fc01f29fc063288a450a1890e3cb184c62234c60feace0c8c18a20929b0320588de828a1062482a4260714b97a9081154868c8c4cdf44ee0bb93be3c309f870fd674c005e5f22a1032cefe8c7ec67f24dd97fcd1eb3f5b338434357aeb45a424216d370c0aa66430b9f3dcab5a8d8bbf0a2ecd2722c4ee40179b6e7687a8ea497b716f2c47e1b3fe3397a0f937a8e34568f7a6ba79432890fec8294736eb9df0b9f4917bc2252c7fc4c3ea5c9418747e37d9dd1b099535a1df3d9b57897fb5df2ba24f52e2e17e8f65f5674af9ff2c299e223d4822fbdcf268b8ecd2b22df4bd29f2c1a02ba22a5e523d47f55f9b4eaa0d6abddf7823721171bcff13d19167ec5aee5a3f90bfb165af80c9bc9816385ee46ada1f15ec02ccd579cb871cf26fb24fb25ebd5782f2f789fdf8b664a1f29a594d3ab5a60cdf53a3af82eb4d0428def19de776930de873a7dcafb9e86f7ad50de67d3353cc825ce783636aa1cdeb762c1fb5627ef65bcef472b781f0ad579df36fab359f24c1e9d1995f3691790755d1faa7eab5b6dac6a757aad33b2c3c88e866de1057f8b1d3b76ecd89fcdcd0c20b39fde07338fc6fcebb19ac98dc3b1b159ad1ec5a57ad95f46765cf99f911db73ef79fcdc5b69f9a0df28b548fbed472c8ae7c9cfad7c57128d4f7f7c3a9d973de26b3a77dd3859683659dbc33bb136617a574066ec6bfd0783b03578a5530227349df5a0ee9b1ae6215c36aad15c34a9fa5be44b2f66badb64bd2ee90e566df47c7a01ee6e57df48b06e4ba36c3e1a1fde84dcfcde3f41b57bf46871367fa55dda91b755ae734266f46d7d52775dcabad7ea93eaa8ba9ffd271af603a9b5bbd2ffbabb9573632a31104fbf836fcf5f197c099a42ff4bc0b5873fdd6f98816a562ef02b2f85e5f742dcce80994401d14f7b01dfdb8fbb593ab9237c53d66609afe7e1b338d0649dc767e5df5b56b9e5ef1f84ef7835c6cd757d5378dbdede0d56620433527b26f9e29466c6e7d0178ebd0297198a69f865e6138a80d9e88d05aeddb6b9a80fdaf6f6ba9ddbe669d1154d69db8eaf5e0d73226fd6e9d915e9d6cfd936643adde3c01f7ed40749b74e1d4acc381b3ff65f734e7f6a37df6ae7de6410d07ecda4cb3817b8c9f6bb53915ebd87a6e774e6fed3584678906b221f633ec7d442c495f5d11caa62c73ec9ddc1713353df63e1a3281acec2bfd520e26efeb4bbfe47d6d6bd6591ba2dffad9dbeee3ee120dd4c72cf66dc07e108a9dcfb7da25b5fbfc4afb59ecea15b16f7ad772986f5fced898f85abdab665ef5becbabff4d4f56d357ef4b123d69fada7db0e74af9258926ac336be95b0c078a79b6ab1e0dfaf231fbd5fb82d8af39d8af3fa46fb0cfea671e563bbef5e53fd87331936643f6d52b52dff4272d870c5e8bbd78983d613fc22c662d36a7d00edeebbaae8b9abc2abfd46d4feab8ea0dd1b4cfbe568a3d567fc6c60457c47ef64c20eb83977e557ee615b19f24c2fad843cd00597dfb98fdead1b85e3e7dc8e4632cdeb60497245eecbf24f1662f7fca405febbc65a0de97246e9dfc17cd06ec8b641e7d182d87ec62587dc804b2b8da6aadfd4e5e7b2ffa368b0c7bfbe0cd3c1a0af0d71e01fe9ab7e4d6eebb6cf7c1fad2d62517ebf8ca854c608d7c1f7108939e06f2a1bd6d0d2d4b2f4f09820eaa34b901eab21541462021e5dacb394001169e185f5480c271d90a32ac184388323c40850647688113274290a5870857f81c013505cb1177bb3c850865e8584186969b5db6628c27513821a88928f40c1df156bb8ecb424500e2729785b6c0c116e96170f11d6915b6fca842179d1d9d263a4e74a0c818638c31cea672073666cf2d423dc3ad2b3fb60c4979c94965184ea464d10798f880131f88e203553e60454a920fe1ee2a90c17539270d2309528351a567d8caa505870595e57f80a165659950e1ba8618021543d0786448495112252188e287d614260bc01863680642ec44a125075780906286f18198165234a4a5c390293a4054f4849cf3baa49c0dc648d21d5a4486782042734005a0ebdfbd7980891339e7751921842c5e0011e5b24cf03922bff07aa488882042c084a8765fd709823005931d50ef48128f8c23b3a790f2d19118630ab448019614644981168f31c618bbdb638cd1e514030927ba09291ad2d261888f169f2d3e5d52b033278f3b53c18408badd5d0c2c62b41d5a448678207204d11145477041810eca694f2ac60c5e6476644849511225484c414208891675260d04cf6d77efeeee6eef29a71852345bf4444acff013a0eb49108772c26540010918287182284c100610a83042cfee6edb76c79900e2bab75379026d3686822a3dc3562e02a0400b6e4e2bc4d88991b41e29417777bbbbfb16ee125234a4a5c390248892284a824b149d283c44406184294718c18b2cae24f1c3b5f062767777b777124ab405452de0b284ce123c4bf4cc1e98a611588cc862841623b6ccd973ce397b7677b7bbbbbbb7e380933bb4880cf140044a14284c4071024a1450aafcd0b3bbbbddddddbd5d483f714d17f2a345cf30962c04f8d1426d07465ed4de93b6409371871691211e88b04087053c2ce861c1139e07c440e80454f8e04a932b7ef40faeb082e7b6bbedeeeeee9ef249a98f0c29294aa244892b4a0c2941a444114a092ebf5a8268ce873ab39d386db88228565065055640700113b020094b8031c64f0eda073bd41e994180e00a156038a1090abed8a2b3b8020745567001a2b67a86af34019618423961a204370c818094f935c495279b15e2092bc0fc228110095adc139ac06a8f8f0d2ebf4620a411408821206c3a4a90041882870845802652744a44435cddf22b082013d8d850c808981881131c174a581108350144d0e24a3ae808861539778831ce29b25ce18931c618a3b7b77b8c31c618dd638c31c6183d6e711d1952529444091843128c2e4c740722433c1099420a51746473e09ad73ca2a42889926b0a243c9112440e2a744b29a46508b6794921435a3a0c9942cb94eb2f650d9a4210210c2a30292078d55d8cdedd2d3bd216a6e9a71d690ab023e3c29aad031eb8fd366a00c1375b12bcea875e08a28860053ea953ead4b72dc6f810724d9c574248f3623aa5501dccbb96238554e246242e259de8c120bd51878476a428704dffd4805c577a9421bd6eecf8ca496132e61edc1afa68b83e6944fdf7373086ca8002c104751336a04e5ca653b02e4d3a0a0763c075dde866ddcb94924e0fcf65e5cb945bd22171893c30f8e30ad740dca4c0c0617bb76d3e309bcfd51d358fd1b339a5bbcc3a0ae79dbda96e27f5aa7f11ca3e52d1cb131f29b73fa8757d5eacfcd8a7f637fbd1be55755c4ca7d202aa5a28e054ad5493e6b145e9192b545b949ee96f9f17c448339915992f51ddf6c4f6c333fda90d073000327f8382372991477d8c86ccaaee472aaaa42ef349452d6fe9b96f7e6a39dc372a918ab68d1b6df3f3e1c6b734ebb0eb7d33a3709977354ada945474a578ec060403b11e2ad3cc1f9366fe5492cd2b5e58e61dadb56a41ae79310cebe455f180ea4ea72b8d64d65a2df3ceafa56f2b80318dfc2cdb32efe2c550a912cf9541d380f825150961daa804854bc9c9ed872954f61254b7ea6d3e9bcfa541d406d3fb5ea0b81d743f8e4e211175242e7126cafdb62a58b74989333df36d516c41b7534d7aa6b5e8a578b0e068e855bf86d3ab7e09e21e92541479d817eba578249388b8c74cf16053ee483b40fd8179a4a22be248cba18da1b852563bf8c3494571a63f45d28078975444ca6ac73fbce36b23cfc82f6941ae4bdf9a1a726c8e34df96b21fec23f6b2fbe1e17e60bf753f3ca81fd88b509ce9c8bd08451ef63b7a2f423edf8bd0025a006f82b8fdd64b898067fa47f74bf17c232cc513495d6e7f9776523c74a39b53ee6146a3972513c7d10b2a63be81557af5369f19a4a2bee1cbb7a828085c37013b72dce68c8cb987cfd9336864a838ade70299e2893c306ff38933fd9de2914f8bc84fc530290a3cd3df6248b9fddc603c0d46fdce0fd70fff1fb81faa8bd99bdd6ca6051774fc2ac6ff9e48cf34a7a771fa19a7875acec97b3f72499004e1ec9631ba6b41b8ebae01815260176faae3ba1f9eeb07ea551d0ff703b5ed10d3c1482d087747dbc893b22f8d1925ae237d21852d1d4c97ea503f49236ff366072985309dfb113aa324155d579ddf2a5b23f3cbff4d7aadb293ead6ff64206ddf56a328331d1e8661f398e44df926c5c3ab2b523cb737bfd97c78d5cfdc7ff5b2ad8ffdb7d201801ea4ff980a15335ca631605d04c0e3f21458c3ac1721588305d3f47f2e5cbe5a973dd60508ac0b290c5ef593fa4f70f591cab8fd42a66021d4dffd5fb77c5291bc13963ca7f4a422e9f23f52c96dc48ee431c3f0fdade1363420500a290aa42f98a67feb4852609ade42e2724b3ab7df96787a6eff0d0d0894323b786db7633f7b9b795156a689ff6feb8d16b81886f8afe5ccd85f3bd2969ee97f2dc8f51a90eb928a98a67ffe70f03f52d1dcc1deeafcb02b30ec6dfec89258a6e93405f40fcc56e07618c320bfd372e6f38cfc4e0b72796cd997a7d272e8db8b56cc6697765dd7768d3852c9749d5eae0be6ba62aeebbaa6f42b5e57c3eb621eb6c9de37dc2346354497541f7c0995900950b0b6fb1b36eec7dccc5d434563460a1503f372329548dd1dbd7bb46999c5ea45a7f4d8dccccdccccdccced757fc3460d158d192994b7f90097c43669b1ed3142afbbbb3f7a97bbdeddb1bb3beb8eddb1bbb99b59fe60ed54c29995f8bcddbd7b157bac6d8b43532038cc6677e9d7cea9d9c02c6f9491d20b5e5b33eeb86a36407983c844ed3e3dd831462ece7ca8d15462d39c333984c329715c07c71ee7a91833f3551901f507c7199f17bd2e8e99cebf286a4ec95847af4cd31e25325f340ec599beae3417a1c0c1f7a740973ff6f460a6698862e63625f88dc71b7ae597fbf42bce1863e4abfb988acbd3677b8c31d6f0e3b8dca75f3ddbb768e8cd924690bef0b692cb4c4304e9f142ae9069f8b3d0e171d52bf69ed365b7b05a310d7737bd6301dadb63cf1ca641a1aecb7d3af4588028441c976d6bcab942ff0decba9886bbeb0d6e7483b7c77638b94675febe325a82f0ba1cd3f09c537aecd8dc08d68b622a8e3d7d87538f1be1e8e895e446ed3e2337ea2c36f48c394a63d5ccaccd88337011b2b3d6bd41ae3898e66fd42847ce4c93f2d8d1194218bb3dbbe089cb62669417edc9ff75f4a9a35dce538cceb5e3c499186de28ccf197b26d136104208f982e16c4e8fcdcc6e6a668e5c936063e995f7f795d6e2f2b7955e35133156feaba3a072a296cb3838ab1bfb6d4f2660132d3a2e979aeb2665acb93373cfb7ccf1eabe99c3dd6cb20dbb0beee1096baed3997bfa4198c62ff7e9179d33468f73baf4f6d13c9847f4b7710af1bfe17fcd39f99bb9dca75f3de7847d310ff9908b6f8373e7e4befc6f3caf3a76bc7a05638c31ae66fb9cf232aa21c7cd99a6e7c718a3fc661c7521778cb05eeeee1b1567f8a70a38b85d7efe8c69207740e08d5ecb7ed5dc2ea6e18f30da9828a112acc0c1691c2dc812a8477d34ede091ba64c699ba6d09cef4db5b1c6e6ef357bdea24f152ead9503849a92b39eee1aa1bb7377d6c93caa3cc3d350f55cfc453dfa87ad57d557d73ea016f2c79df925bfaadfb64ee36e3a987784d2a3bbd6ffb18d35b6bd24cdda96a369048f4b25a4ee9a106647b98f7114b1dea37990b13f3f119e6bfabc2c0a860bc9f97a72f274fa6571cf7788243e2b77ffbd9994c26ef9b9f3ded3eae83b7d4bd46ea155d6dddb7e46e6f3f568aa0e2b23bb4880cf1e05345114a60428686b47498a2881e5a77681119e28188294490b1828b16710322967039123520a20a326844c113444881d204114d6cbae81e647737bc492490f81318401279a34703871bbdd8d16b2996652cece872d22bcbf15febe0f8af772e3fa402b3a0930f8ac13732cf0fc160167c026bfaf9e117ec05b3201458d30f250a2cfc07b960411f58f384cbd750d09417e2560bea5c81433e512e3f3c82593e90b8b9f1fcb00866d5006bfaf9e1100c450047000464a2a3e2df00b36c6caa70f92fc03d306bc70e242c011c2e6820a2e109a9ff7808c5df0066fd1fe1f233806f629e5f01cc928135fd08e01c98b55a65c13ad0a1634a0098c57d03b8fc33f0cde9f96ff81403df989ebf86592858d38f7241a57a99eed7bec437d9675f2371f9fb0866c128b0a6bf7da25c7e5204b3a01423f8e67a11300b32016b86e09bfaf6bf06e2f2c3289005b9ccfc2a8a14c8825d565220ab75a0c704ffc0e4329c5959aceb7a51080423a534464a237d6bbd22f1ad13c8825c3027100a64b50e14c8ea9d1fa00f970be35281600187cc0a3a3fec007145ecaa58bddebe151279c02678a61f0a2a2d2e0d21900fc8825dfad6d03b34d6cbebfe868d483710bf29fd96dc6a43030db5c6ece0133ca352ccd6cb5af816f3aea75d7d1fd147bf0e1d34e5a81812b511bb2a362b863df58b7545aea77cb9134aa58229bd9c4cf17a08d4f27a9d10e8bfeb3f08246fb51790abe415893f9fd47d400c59b08bfdd6c17aa77998300dec022dd4c9c1ed2a5c9700864ff03715b73feb1d6883cb847b401a340f644127a01521d5fbe015b7af1d08d43731567b5d6f63c61af610c87a9fbc17c6343ee747d78077cfe51596ac608e23f0dbac578d8af1ca7098664af111a77c77d92e9b9081e5bee9bcbf61a3c6e557d1989142c5c0bc9c4c2592c75de619e7f74dcb2c562f3aa5c7e6ef3ccf732e2c730fbe248a61ea7fa451e932765d198cd185befd2ec32c5ed9c08113bd2f753faec6ede7383a631096f635e1bcd09317d3f87bbb96131b5ea3788465994f3574fb2df48cb9c78c72f3265c9343d592a1536a976aa2e56c6fb92f7daaa76f485e8fae7cca3cb29737ae940fb947e418e6817ad26f3fea2ca94bf5748a87098e6403e9a73ecac6631df3cc8dfab3d68a65d7b3e9bf784fcf7cfaac2bedf48cf658c73df332533cbd4a35819a531ec15be26ba3fb6edc6ff319dd6ff3f9b6a0afd4c4d47da520be0d8a1cee7df496ea216d9bf492c82b3d1a38702f5f7a3d48ce3bf5aa3f5e59c3a069d0525caed2426da55b7da5b15cce542e9da2062a42378a1b6a508096c1e5195c7e11a241aa9637698dde76d6d7af1975ac56eeb106c85261b901b2285001208b06c19afe202b299edaed54cf05236df41656ea32ffaa16ac51f9408505b2bc09ac1961b9fd1488066155e055fc7e950f542dc8226db13a418cbcf8d90e4429a5dba8e110efe9547a7e1fcda3f78a8c9e7b38fa92c7161bf9e81abdd4828c3c15273554ffdc6ff3a90259581758138495c15571fbb729552dac0cac8bca9b4cbad16d6e7089861ce7956dde61e0dada61d7bb1e2eedfc8e9823a45d37ed60a41ddfe93286c78e0be8e83f2e05846f3a6c70788a90855cabbca47f97b623b9745ef760b020d7fd3070a95764fe9c93d239a9f7cdfbcd592a916c671b126c8b33463a2a5d1a81eba328a76397f6709dc254ccbd22f4a5f41fd58fb6ee27f5514e6bb3ae7fa06228fc1103735d15b8d8062ef5acaaa6527352eaa8dfba9fec890d0675d4fd6c3fd9cbec6756b36ce3b64bcb196ddc68f3bf26ad7c53e2b68f0fbbed6e1d926b4b5dec89ddadebe19678e533babb97eed645807bf9bcb9f41ee66ccc4e1cd9492573195a283b786de4ee0dde8e71ab16cb7c8e46db68e3462e7b930f3bf91cb7558b653e479352d8cebed1496d268437c94630333a1b978b2cac0bd708c13d5eb0f02690f52294e3857198648a09bdfc768b026bb6ae2f9ddb0aba67c9bbbd238511259224dc0de2a698a478680edce79525e691e2b129f1144873b039777ad1c18b9056371fcef33e1436afbc5b94be399560be9f3b75285e71fdcd11b9db8957dcc3708fe2fc64a4a947392bb6f5d6f9b66ddb16e9d6c5bb4969eade77931279641ccf6ca88c14e5a4f0ce996d1ddf0d09a9c3b039a56b5b86ca5cd892701ae544a9ac77f5e250dd8e0bb8cf3a9eff81f276b2ffe17f649e0bdcbfe45c57f2b8579c96c3719b8f6c9ae0361ae584c1e44e2571f9e1fab1f3c3ffd8f981fb410a8361e8274d810120433fd50e70fda830d0c934f2a796437f3ad582f8bdb4209dd7c630cc79a6f459572a19b9fe933d97bd2d956894b36241dc7256b791531d363b38d4d380fdb78a61211886efa80ec533a452c775df90cb7d4c77f10ce9531d0945e4720f4b242597735e91464fe256241aa5cd2ac6f195a5ee9b1f066efc1ec570744628739248249d11f6442451c619bbab6173920461cf1644cae4f6349dfe9bf4c2c1428e958e1d4cc58b9518d47f5c25c5c326badae6a50f1d032bc93edce815a10fa1ec08bb7f60605e7648e40fcac2c4e87466d5529445594a3718e946e3f5cda306847ee94bd2d4fda01ecbaa3d91505f42a12ccaba4f0d8873d4e94b2d67e41ca523a7dbcb392dcd66072d70af87935793eb7ea4162403f7f28ac81fcd97f9928e9e024bae9c9069a6447d4be90fdecd37a7733442e257fea47ed4fda85ea67e4bbda79eaa54311b0c50d12b225ffbcd070513938a8141510ae18af3f8442a6516ab41fc6a52e84f5a32f5982fefec936f3e75fbe1eafd71ef676eb737eff49231f788ffc949af138ecb1f0b97ffcbb1ba5c05ef807bc03f60ddf88fb5e020f00b16b7ff8b2f425cd34f83fd4f46c70e1a60fee32a3c4d84a61289abe242ce03b7e255a2e742989c58cb5a2770e142b88c70e1d7255cf89a960b3ff35612b6088216598ad09a167b6fd91616eb470d48ff75916e7ceeca33f15bb28ccc9b0f70098c0f7009c5d980aeabf6f4aa3b7275dabaee30c6de02877ad5363cef0887e357584135678caa8f9d91ecc2671658d086a8c48f31e0be083bbe7164d99db8ae85b673a05e4da25e4d2dbd9a818b5a8e96bdb544de073fbe119b3bb3cc86563ea1543628c746d12b28a29613b5ce9d20bde97d6a5d20cd7f3a5ef86f55f35f77e7ebd8b0f96fc69d7327e64ed39d4c4a773e43d6c6036be605809fefde173d07ea95070171d609cf83ba40d6d64407b2b61e58b3ed40d6e604d640d6f604d630e11e9b0998a63f86dfb42e2dbca6733bdb995a7aa6dfd2e82691ea513f8bfa662b82c24be0f11f37e1c61e1c37d6f88fe6461902d0c51a377637ffa97c66acf01fcc8d6292e1bf971b4737be946cc77fdb8d1b13f1ffa319d1dd9e46513761c06d5ade476f50200bfa300f289005811aa8b7282d4394dbbf49e91dded7776302b2e010ace967a286f75da59fe17ddc0def4395bef3be2f3de77dabd25befb3b95fed29fdac3d5403f2540ba27dd6f9d52e2d2703822cef81355320cb7d600d64cd2bb0a6214b1b8235fd3d405a12b22e5e0b332dfaf4d237cbb2d9790f6469453e3dafcc2bd08b24684590957d77c134fd9a56a445e6bfbe3664dec6679dcd8257577660ab801607bc9237f5dc373ebca6e5e4e052be84d3ec6b59438ebe65efa36dd641a6895f31c8bdd925364ed49d5afa26024c44e3fb67110d1a104a95cacb2e00749057f6a757243ef75b938ea189c5814d67ab80abfe9a17683613c0f46f4efab72730efc2e95be8b9ded7f7e5579b93db316639dadba098c5d73220f139cee4239abe148c9de2b60dfa6adccf067d5eea90c0eb4ef48de645c0e6ceefa03979b20dc9e6faccb08ec6683473cc1efa3acb9daae7c1c27f2d05e8ce76e2cef95f47d1fd9cd3ab1e1cea20d10b38edb3788ffb8c3607ea2b35be7a9308a86d90d5342dc70853b9d96b5a4ef6acd9a08c8a4ccbc9f156cb32a31603a7c85a329dbe55615e48dc68d3b28f9fe29b4ac5c64e23d2865cc06959b4a238d3b527cef4c7c06cd6094b4002145250a1e28aacb33bb0591461b67b8040ee2dd3324dcba931274bdf645e0498caad7d93e3fbb51c1e0e5773d458bd1ff951ceacf610dd7e167074b64a6757e8ac955ef57b9d6db5d5a2ed8dce62693b7425f5fda9afe15d51553143b341343abe336cd067b3dc7e8b65e91b2c7e13d52a51325b75d2ab589fd4279843973efde42f0e3363dce4252739e723dfdceb93ae3db5e7b613e88379319e75825dc2a9b348b050582978d54fea2c155ef5739da5c25e617760b380ad78719c7c6b832ce67967a3e899fe9196333d1b440507ffb341b7df02c142e1767442bfbf3ee949274fe616b7561bd0e51596907c804b3e062f5235bac62267570cb71ff2cdf59a8e6b1ae7f6ed15ee4bc19d502a1b35605e0d36540508c0edefae32001edc38438c270c5555b106204cd37f62c5b00385430e195eb8fd2ae80210eec1420d902583c30cb7bf6954fedfd765fdf707e24f296c1aa7c4a08d22a574a8a3a3a3332365d4c13dc83248e93ea7943f986190d2e79452baf4f9d42515cb321f4bd80e4f30acf85fe954f3bddc0ff5a1be97eb0f8b9c98c6ffabb96d7ae164c454a23141a044d2518a0089738124016ed4027764b4cd8c26b069ab0d8996e5d028905916b22416c3612b805519ac877aad502d705d4a28bdc094dfdf89017903d5377e6506dc86f7edaf71a15ec53de4f7e5b69482893776d0b07051300040e9408d7030eab2a80b855d744a1eb1e35ff1fd8a31425a3f142ac528295fd238ea68613b9591d78c9625b599445a30222523f606243a707e6c6450838f5ef5944bce08a18f96137ea92348a6d671cf7c71e7f64788ea422a5d9956ed557ba38f55cc73ac09221ef0028cdbef54883b708cdb5240c23dba0ba681acee72a7709bc8072da77e1351ac892afd34205176f3635f593c715c4bdf8aa24faf89b61129ce6c46e571837cb66e6f883c8e602cc42cd47f7942d0093cd31f0531a04ee4c025badcafa2db504bafba89aa953f74dac261c74b7a9d4315632a30cef437c7313a6d14e449af8ad94c632ae3420c33d8c09aee11c30a97dfbbee01af3a4b116e3fec20dcfe18b847f3c006b2da8ad08d1270b010e1f67f359781f0f50f6eb710897e0b4508e175691c69aeae54a254ec6adc408dffa505a193a464728d3f37fd39cd00f1cee75a725ace7c5bca4ca7785df4f4d244a921d2152172d2212286dde52931a90c422e704b0b45af858a9043bcf3ddafbbb750bf257125937c8f1ca7dc28c2b63a63c6a289289510e50f38fe8f0e5de8bcc4a36d6921815aa7f983557030e0964122c8e2600d7c864fa0cf0fbf80900bbef167c87365dca96fba79ae8f76c8825a2ec882451964c12d1c64412e25ee01c7c83cfb91f7f5ddbcaf5ba78ba016c88aad22c88a5a6c81ac7805d68cc13da2119806b2221658035fd392155d18b75cd8f19d819bd1bde77be75586e01417ea95950bbd0a141cf3cc7c2ed243b85bb4dc0a5ec197ce830b9f02c1b1dc21f7c185ae830b1f7e3402f7f02a98064296578135f0b5f01d5c28d987ebcff4f329173e338df4d8474b598fb02c93c4ebc3ce487669ed38e7385adfe5fba42729b1ebe157ac4aafee9e7bceeddfcff5cdfce90eb31fd7c325313a07780561069c1b3eb1830d91211e4c10cbb8317271a34f29e416428686b4748042460f684089400417236a3005238cd8a1456488872fb8702b08191ad2d221055e3c114215fcc60e2d22433c9c40cb93289e206b08191ad2d28188263cf94182ca882c4f8418c245e30912c068d5194610c2145a2a092c4e0079cc0e2d22433c2031841210e18208236468484b07228250021d69daa1456488871264518413c4e0a204a2d6a8246c5b696a0ad5cc000040033316000020100807c582d13ccd72140a960f14000e669058646a3a13479324c6411405518c31c418030020001963901933ce005d6b600113b6948a5d53b125765f3fbd8acfa910d7f928f7fa2d721190af926b4c43a1a0d85a5c8b25f3ab38c3551499be0550b99a357029281f80d2871b68ce785294e2e03379c8636bb4ad5144cf0c166d9b288b55e45504d9a25178fbd5d3bda75714cd1e291df9c1298a26c78052f74f096414b765e9d5ef0bb17a190aa3739624f5dc5a992f952c67ff52d01fc46511a0192c3b7843f1e0668c02bf50446b2816ecc55539ed877e444dca5d269623a7c698cfe807b59e890d062fa5f114e2905a48655aad88d897bfb9c1f76a2e0ba566e9ea1880d94d9b7f27783dcc207651a5c0c7ca0d136f127e6a0b3f2d2a128922b13737dd6b0451b204065c7dd5a768f2074ccb04149941f54feb1282d9e09bfec8923b566bc133924c84f2b34e2342e2003cbd762c4f8d60412a075d40b0b0b18044a072f10c19bef7598a0429ed0a0a64f197a04b76a93bef1b301a81353804a4e845a9471ba6d8a16316da889c8730c4689fe4fa15d250520b663059775ce06896bfbb52a067a4a7af526ed2b6d9afcfaa5f53643d1695b03d187dc70b223d2d51ef032a3922b514a7f490922a1a40a5c6d2c8d400846e69f3f1b55ce94a069586c59c417d466a4523b6ebaba9edd408b148807325d5c1921e8d5580e4bf4bb39a3bab00f1cd06f4c088a78fe301260657c8b6a822a6692006cbf6757a15d55f13fd78663d4e3bc8509167c210c5238d2439e765eeb8aa72d1b94834bd3ed6ea1be0fbc498e7dc43b27d2c00f5f8c85aad9087869fcafad08a4908a94d07e83ddc2b45ba2019e2359e15b983bd4f235852424901f88b8ec7518ad16810a0ed638d50ade2f0263e17e4b4d8780fce753cb63c856f5445b00e30c7b31b9925db3644191c6147f7e9e43735616828323f0a208c0cc51dbc80f33b45098bc51bca542973b3649b1f96f77cbf1923a4b905c502c0d9c403a363840d29a6dcbc964035a4ff08a05f398239188374dd123b68c5d54b714998eaa3e583f7a65ea14afc7b140ff886c053de9dd868142167f18fe68a72941269fd0446c31de68e1d903b2ace6d711310ba50b4c929c6f8947d649fc8bf9e42036375b93c5e39b3059da56ca52161ef1c88ea1cbb596954c84e317e52a56d12816961eec7e587c21ec2d684932e6f8b722793d10b54725e32acec528be112de63cb9a003a7ccc280ecddfa544d48b57aff3d4b58f14c1ec7d273b0927f6ce4c160288052f56f0e5419b29b2d0642bdc5d65f1eb49d65a5ac233d127e12d0b058892dd8a25d42c4e61297cec87e8dc1b3334f4c3a23b880aa2adbcd8053541bd93450585547af26d69016855c4a47f1902c6a044ba41789ee092a00952022cc17929a3aa148e99baa6e5b1f38789e872e53bb254ec19cf6bcc541fe20570abbaad4a9e5270415f633886722dca6a4ba0e582beb6ce3736816ceba25c48deeb9360816f14cc1ab77f4f627f7f7bb23903427da86084a5db9507a095dc859a82540e2f5c94400e58a4d09ffd1e31819179ebc86a0102447c00f61f08c2e16b0045a17ad49eb1dba02797596b43dd5a134ee3788becfceb03862d99ca4dfd7d025df18e5f9f7a738ba872fa34ad896acb015a30ba198a888ebafed7e3ced59e812a33e7a7a675bbfeb7676e040bd1729a1a2451c68f0e80d1fff4d9bfd163f13ccfc1fdbbaea6106213b23613b92960bf3fabc0a66ae4f8a1aa5061f702960b570c83366592b9e74228e8e970c2764270c335b5d54e54b1c2e9b1f2aa40aeca7bc4420a82a97546f860b1672aca6fa4504fc590ac4c486997307664d3dcb607cb0a1bd00694670183297f92631afb766e801219020bb1b74d5dea440404ea61203d1d532ac9f4d3aca72b9440a7910d2e14d134bd5eda95cac8e36ef4934d35f6792e94b4a514b38e3fd11de3a804947439fd1029def84d7caeeb99025ece5c7dc57f61ed299fe6b57a999e583a7670d441c5db9aa987eaaeba1675f475691f318b27e05f3e62e408b78118f0cf11852aa1df9096b2cf3a6384ff6028762d8375ec565f3b8840c3f432ff35fc45318a0d9521a92b6cb52dddc54e10a47b9ce222ede165e702b16425f0dc328ba48d1e5e76f4262538a7e2320015a946c80dc73a68d09d1c049379911f10f73f76b8b9eade49a538a3b2572133bb98b6aa1532c643f219e6860b60730787c9265422d3211184e0b0a52ee2c096d8e66b86b005e9dc28103d0545805fcf5d72458378fb424c5815b15695ccf807d1b2a0c825f8781b010f35ab93a7f58b1da353c6fa86e9328bfefbd4633d8222eb92e9e034e5f9a868825a767457e2a85731961301f937147159e0335f07260e2245d3245d13980d9924bd2fa323e63c60ae3d55d9bdbb380df9514915751ea6e1d455478eb9fcc8aa1b6390a13f5e13e94ce102655f7907207e9a201cb7c12ea8e6b309f3dc82ad0ee3a04291bf62393bc57b83017058e1dc39608295b8fa50fd38f00594d63f363b50f476c4456c2d1a65285bfa5829fadfcc8156f8a4baa17771f0b5dc673f362e8d33d04bf3679e6fe70ee58cc545f1ddb75dcaeddc899691b16667c52b7bb6612085c14088e41b4623e1337f4d8f56fa3e6c7aeadf9757ce665e2654783e772e5318798be9013a3b1b633833cbf04ad63d30cf9d8ba5b14894e66a6e5282dfbab79a6628b94b3c320e358162ab141609bdc3143a7853cb5c4b39c2e14fdd6fdf2065f0c18a1f5609ff550bb81e1c6125dd5ba89b5e703656bfe02523dddff52c8d7c3414a803820eb338de9565dc55181d2567182879081c0a028e8485fcbec69d37715f46f84d8e0cffb95d151ce43a4c3698dca509a684c33b6317128bb3fc0283b45785cde32051fe0865b983180af6f11d71b852bc97c73f346e106d839efcf57d50437face4121595e261f25ca9ead0fc69a0e7cdc69d1b969832da9f841102f773ba693b14ad4c2ca5c17bf6b3f8c14a83dfa69c9a71b869a3301ac451d8013c01278297510c70cbf93c16e7ebc2199a4dedc9e26fc586cebec5f24dc35c94007e42a2cbb0e4f7d79bf3be3f9c59f9d49a41ee8bc1755fb1e01092e61754e0c6297b8275b6d10f06aaeed0a4c09513fc905225ad1ec49266bdf94c9a607b4d1aeedf010937690a0081be251dd3541c09d815c912fc6f065758712d9a05c39108b7bb1a92865e07b5628538bc7cb631fa92e083bd88808d2bc3062a8a28fd77160564879d85b6744b4147c1089d24c073a567b2540424acb3e639cd6bdeb43febe4e087e2802a62c05c67a1678d18cea40dee191ed6a37e1492e51de8fefd93bf51d72b27419d47bcd432cebafaa966b82361e4671ee5466f24ab5d3e43303f050ce6cab936eae4c07cae37eed0c2e1d58b9644559b4d1482df03f32b490cb86476332cc13c1b1284a22d2e4b220dd42b2f56d0f04c3aa969779c8ebe2af60acad714cc33c05e230a721a77e96f6cee84746ab460be9d82a520c2e4c7244af398fc210dd70b7a64761060f27b64694494c801c991e97cfde265b9209aee69be1565db74b2488a0c30063517c1a622dd16e6e08765f3004378f6b5f186a930d3a7ea95478357e7be31e5b8840d50da637505be1c0853cad6d000a53a7657c897813045610dcda0b467750a5d1118a496d6a0094afaac3e15edb7a4a5370b8e6e2c91f199c60a9af842f023276a92b9b2c183403f87402690b07ad6f2c31c1b473fbf1b35ea99c9c74802a174700f3455b5bb807eba35e2f92b55e74b490139f69709799e807bb4b89d23f6f4cc3d35e21333f329660c5c1c8a1c8aefde349b65643445e9caab14598cd6ad8b8405167e627959c1faa9971adfa9d32e87140f610ec5d4580d053c57e7263149a0e8b41331c9678290e79bfe7cae4f29e56530d65bfef74e0d47028862907b345a3ce9b91931d822bad6e0fc65404f42373b89609d73d1fdfd93319a4497cdef98741b9731dc38a4b1c694329a29664f38f3a4a2af4f948d0ab9b1a2e1d17a9caff0538ff0fa6125b9f5f683ca0d4f019981253338871d98f6041a7c871a275c4cfea449cfc8989b6361aada97a9333aa3cb172e0c9690815794173ae431102d9d291ecad91df99153707b12da1ae4bcfca4fb40d20673d7a70bf04a89e2b9d72631292007870bc40415903e36af49c6dc0df23480a058cfa3e766bfc8f0b6a56bfd0f7a13b5b2ce8d6d5474f0e82744a3c8bee24988ed3a12b22c6626e34b21c9fa70d9055a6fd209ee8667c772edf9e7e7840183090d9e272049ae9f92bd51ba5d6d88190d9889c3aee63c9b39b551c4793e5d4982f54897822c44a100a377a1bbb8f7a47d13603988781a29a694da5a973435204776482ab0d1e8c37ce37e168af03b6d283f30ea67ed29bc9b40f883975b216ca5dcf4c89f5f781c66e54535838441054d1f1e0dad2a9df2c42a404178e14d6f1b322694e8e7833a78c676f9bfb6fc94a516b206c61001fd20e9ac02f97c44847b55a73211222909e141fed7a5f974eafea84826eb39ca1a6cdc1efaac0936b5b62158c6eb32c9ffd6d89fb48b9070f323578059fdbcc22c0a5c2de7fb4f418bcd12d54378fbfbc8e8ab01beddbe4d0200613908033e98848e9b0dc5c1f7c2097a4ec917e1dadc0358ff4b2190c246977db31338d41c6ce00dd9b38844194e6e0eeabe0f382e924752bf6391b2d3d185d1099a7c6eb527825c47a10a3ffd8bc58420712c3ced83ce0245c11b05e816554855911ffc8b66e9412176a040b1b15ee3392c10b85d7d2f268928dfa1665700f236168a38945e7912a67c8da459901ff1a66b7e625b9e2b8467febe43a1a09f4d213edc36128834b15a3d3ea556d24b53741f2d48bcdfd6aceda4d57ea49b137b3d0a24bd9d2ce1e3e88d011f3fbeca0b6f16876b876b51fc327e0f280805152c483c7f5c1875d1dc584cf979e1260d22bdd742ec85a26a7c241f9a984774f98e88b0b79002729e9ed58640f28280c2ac813c5f66add18e41e4c21477c0b44631ce2360662955ba6c0ec6c4e517c8f32783b0c5b60b164d422c290bae00a10859bd63a53a099313fbfe6bb143e72e20906b608fc9aa98c445a404114b4edaeb448d37df8e427adf90323334ae21082ca34b7f8fadf031fadf966a9a38bab25f1a1aafc8546370fbae7b2e08d10962ad1ddbd860817ed6045ee41b4b47e638a377c541cd56ff83dbf0cb35dfd9ab8b1c9b41ad4174d1bbbe5b186c1fa66cdccaadb5fd0908fb2b59016c9d9bd671f9674b62a521bdd4f026f431bc7b2053ac768bb56ed64e31036c50995ada9592760bb1bd9e978300260b96d962be706cc33321141c8dbc98ae82da2088b4f88cbac00b00272ac1f12259e042cf51c54afa61c182b76b2b26552a51378fa8359a28cb3043a9061d84e9b57c75507ccfa93a93b730c7015e42b2a77cbe7bde5d677a7fd283bce7ffb57e28849c12ab5b408c21e37e2b0c76f34e7bf27902367c9e156ca2e214723265cfafd67b7e9c6f9283871bfc62835933187f0a59f70249196fd2501fc2f0c030b3ae0dc9ee4da02e8d0ddbf9aaec6f26533343dae25cf8d599d2a39b7460bf232019f079fa8a6930022e6300585d07b15bfb2e97efeb649568db74c4d82abf7ad4616fc763cf3121f2c6256712b26409280980f2a75d1a05f07102377d9b876b713c0d435c336f0c3b69503eb6689d58df9c260a4456710476c95118c328bca2011385e24dcb03cda6151e7ea832d1fdfc0cce2eb151acd51ffe5b0fda282a18f801fc133190ca832d7c029f0ac81108b0e18010f5f6d9699730ac190169c907403e841b395aba282cc8b07db8912cc02ccd41db0168f814cca2704593095c08d6071f13dcfe644460db1a651bacdd81ea57dafa43835c12e615e70db06ced37bb6da2435f094a12a3bc44e294760163cb0fea73e57dc56a6a05312b2639f2752fcdbef6c2d876247d286d3c51d32003e8eb171062c28b16205bca5c05b029ed33adc313615cb87e726c8176f550110bcf686891b17d9b353f706e1fc6f0964f7cc7c06efc8823c26f2cb61878b1c3e46b7ea9e48c84b7f7e86aeff47c6dc808c19477fe9bf7b4e6894fb85497e30b4eaf74c9cafab893dfef86b41be30ba8858176e22b7a5dfa71ddf44bf81ed0df0db60b08f45ae0cd13fadc02d32470e4b133b78d67f74230637a32d9c384b45d5eac1e6f49225b4b11eac543e66dd83a2fd333a09409f38bd350d5e48f18b3dbb1d38b4c28303d297cd31de427e1e7296dc65301aed62cfb70d0856b3d53c6477447383e0560b652f22ea47da10b3512176b80061d91abf63884a9acf57aeb26e6c34abce502216ff55539b7c2e78f75600f3560cf1ed54340c867ab9b32f3e6c4a4e617b02be23cfa4f9e18e9cc60cd68f65c99d66f979a239cab1f14b3956d0f588818ecd6228d4c06a0ebf46a5690c64e20346bf4c2ae1ea2b00b24bb37cb42cab80a012f074287217c0c0e59b187a7562eb8248d838d1a11285c6dfb3152b866126838b0c73a768567bad34f05870685638144e5ba1d62cc3fb894a46fdfd72c626a6dda98ff8ee97cb3bec2bd93913d2c51ea6343d039835b67c65cec55d278788acd3b8ef05fb37f6108ec6e64bd3b875747f03500ffca984f8cc2a8d49dbda978ca33187f69cc57b49081a6252d079167ee40e1621cbe307cd0987f7455c70f79a157a1b181497c3bb52f73f087c4e7e4362a7e88035f24cd0d4f4edfa1bd368299483eaeb74ae3067cfccad1687842010fcd8b8364f411a1ae41b3df797a79700a07f118bb83067de7e13d6736532f4d856af60ed66fce6c522d85a37f75f10e97322c3d03817b073e2e23e096149da272ef3c7a33d8299b12ac61f780af2b2c3827b18b28cd3b0fef0c36e563c46a435ceaef6c6d1c8c13a64beb3608a9040fcf2408b21510c7ae44bfe2f19ec608aa13fe065529fe980b5f3b1a0d4f28e7a17a3d82e9137ed1455dc2c04949abe1c9ab79a0b9871f85c2afffba70b49e996eadbb41385c1eb4ad4d658b4a690c1d4ba27948c5a5a31a859f7b41255a055a8a9eca0b042764501e9a997e88e2078c02a107e59514c43bd34ff373a9ee89c7ea1171bbf94afa2dafb58868faa75d0f101b040252446012d2bef693c44563cc098a4061c324f07233cc34ac0f345391082dc58fd57f545022e9316ee92dbf2446ea93dac5741c1f2949a2dab6dfc081f0c22a1a4c1611cca7c3360c7dcff27e8ca3fd389770a6b4f743f38c38e2d64446a19bb2db63a8889c5d90e5750421f519076e41faab18ee66901309fb7df704edc8b52d2a291ac46f221b333bc8fb21a9816c17b6d8629b1f6cadb2c9e71b19fc61cd69ef216467a8f6514bc839f0091c7ae739c3f689b2f383a8f5fe2c80edb6ae73f53d8f3b8ae26afe6996e484a99a5fefb953cb92a231fe81d32247b669c94690db602efe7197229e040241288fcd5279641bcd994e6c303d151050e436038530502ed83d776cb34eb2f6d4f21fecca2a62f33a1744a5a5aeb8012d11b3d9f05f538ded0cad8574b12d633b3b1571bfe3e9890807a12f9037cc05d25d61339e73ad40f106814b86632f5a681526b903de90799c9eddd2385851de1beb7e7965a9be85d4e972d1526a1eb51b7d8a961a2d8afc522e750403720412600bf48e4556ca09ed9c1027c4246e13b0fc903e3bb3068e6073bf53940f2990e2c50eb2e710e65df9d1e63c622325f7a5a30e83d44bf803030bcc2f1e2921c3c4bc142e0c8a2441ae25fd0af8af2d198c96650a6c185dc8ba4ecc0d47b7a9c621f245c685cb3c5867051e45dde0d067d468aa8e50a753e47883fc59a95b3d9a093e09721419796868668cd05e6832bb435af03701e59a147342fe4d1e0bdfdd46e535e2bc0930b96e044ab3dbc0df350f325af89a0acdcf9e93629135c56b87cc65292ae2aa6f20ca9573f5bf73f302b33e19addbd63cc5979fa4c7459801e890902e36780c87267bea33de13bb9fdc36f73a297a910a4fb35936b4ff49026b53afd63d6ddc98d391ce248dac6f1016b1e4fc68f6c96c23923e1b8ca9d5a10719c60bcced9336c58da36153ed09c9bda0af8de8fc25b3fa57bbaf9dfdd53e136ac4221f34bd724fbbed320362c7927ca89ae962914bbd43b7c7288b8d8f7649bdf214125ee56d5dbbabcd070e77b5cf4cab974e5e306d19e35ca45edac70003f6655bb4f277174134c69b9ceceafd7c2705d021f7e033596931c23bb45e478e327bbf65fbf2732fad614c763e49262aec16d64a10de1ff81396410327eccbe3b3e9948966af3b8f3d96c96e18cde6263cde5fbef35b6c7b1ea3bef07f0ac0bdfe92d0cc481ec714de1e70d922d0f8e85c9cf528ec28b7295842c17a3c29392fb8f19c403a584c89b235e03b22682a62b972b66efb04974186950defe2eab463b5d1ece1c159222b862148246fb79dbe858b662655a554042361201896506b3e32bd02a6912ab1daa490559b35cb3a4fbe4745a52600c5a9647e333714f2170c3260fa17c34d86e4accfbea7823a26707e17064ef2927913cb97230bb98140ed5166da9bb3a6ab51c9eafd82073b2bff2eeac66c46aec55ef8571aeb5310aafa688baac8a76a15a548fe31631fe7c34a93cc721c6547297bd088688879d3d905755f5977c2c139f699c14910c6e847485ba4df58ba3296ddd6dc3a5f2afbf5ea23318bbff1984817b4b3beb6f71c3c0a365af95f5ed3a004fa81f6cdbabfa9ea462b86cae576260ba2fc8eaa3bb191042369a39301b7aeabba81b0e81890525e24b03929069f72d20593b9f5dd43d65ee6957be5deb566e0b9f514686bd78cfee47f25eb54303d97f2df4c0ec5a9ef4ff9ec15656317f05da967ffe2ab8c7cf8ae6c849caf2794240d68b82f2f025d1b5ca94a6fc71efde363c546f75eb8ce1340428eef3678dfe8fdf9035437cc34173b1737cb3ced0bfacdbc6b13b002ebb965ded3207ed652ec1d9c2f22d0ef157e5d595c311e80deecd2467e9b98ccef94aa35f6e2d1f1129e0fa1b085a49701b527c76882757c22e385d17c07b99db0a60001e1d793442fd192761a74d5380df4b79e06a7a82f4bcf3c64e23785c50c3c6f2051b4fb75984b68336d707e2d845458eeedfd6870e3f8873de7e437cdaff10f0d176328b25699f8a16afcf77b9a813844382bdfe211653c076614ed2b236e894fb7bc3e0a5d9cc89df3d9cb29b6403ca4fe60f9939449ab71cea5be05ee6a2497d2175973e072b04de5f3aa2d840bed7e4d9f7db12297facd437fcdc6275caca3d65aa02c11f47b1977b71e1bf2429b5e1bd27f9483bb55e2cfbacb824d723e461b7a13581ef8b913ca65f18c34ec947fc2873546e2a252b1d4fe260ff805f1b36381de30d8c22d696f6fecf8fdb7124218b5f0a3e30ced90d81cc6cd752e6ceb7a87824f89ee164bd3ea27266e80913a97e2d990d18f740a622cf6dbea3279c6d6366b54d45fa3fff74c0e89764b3fbf0a5a04be9735c4c896c1bfb11ec60d9735ee4fda2a686710c89d88523e9fb36b407e35941b888c3fa8a84fa47103af21ddb822607bb23f9872892b19b19d6ed718ae8e8a63870f7c9b4e60ebfaca83161e80454d47461f3e3226fa1c0c3c55ceb53ec4227af9a271cdd69e568b8b652a70f6ea1cd7e5dc8ce491cb0720bb874ff9d152dcca70648933b3579fb622637a113ba8ccd3289c2a1055de8589eb3c274361ba96900c13c90ed9a9661f2b12660cef848cfdb84b65ce8afe24fb636239c1dae5971f31275ca8e0e32342d98e640d8f60aee00f94143377bb3424a943bb1222883b5b954e1c445303b61fb9a9f8af1a3003dc5f44e03ff60e544e13d6a4bf540b57e1971c552662712be15df797508ad72f4b2fccb1b331a20714118ae103054aed9aa24dadbf709d6aad1b0e98bac9ba41ded2249d25b2ff943043bcbeefca49692e45bf668751c4e38a7420831a722831a4bb837d602c6ea4b6579a17aeec8a450f535ad63556f3d46983a8a8a99a64824205daffbfd3405c28a5e2da6810d4d96a15cd9dbbcfe740d1c7431a68c19a05d110a0f9c61f5a32093915a72852870b9b16a623f55756b7f15a8000c56289d8cc4a8985a8a22bc26e54dcf761614786af692c5f805d30ace3aa42854ede4db4674c0e3f90bf0b8979c150ae2e15ff75980a8581e1afdc410fdc9e119e49ae8cb0a872daa752074d751485f45e3b05260a97473777677c327ef4e85f8f4916176993e144d0d9cc7b8675c6092a58035326cd77fff9f400d1a1d1306e823b253182e314a0f2d480aac387390b3492a7c628e60d234e8e2ccb0ab8b99cf94acc9d70da9f84a29feef99202dab5eb790982e8e8b67ae114047e75e9f40caa66dc8b6b94580306093056824106eba93045eef53bd55d2f2e00d8927cd55466a158ce1bf004890036eef37c8969fb050bc78e375b266a850f24ca98a508194ebe41b4b055c66917c622124f59476147b982628d8eff41450685e592414bf706d02e4f553383e98b3a73d5d14663a5034f5efc3c6fe0209659a5e41dc720c5d7e526cf2438f349bada9ee6c14053ec80c4e71c11b74129648c198a4955e3cad017914beeae371be2f5c71d373c4d892f08191377afc2022b6705a90290703194cb71f8216e8c2806fffd3f7458516bb5128c2950252a1996024d0d1c23cfb01ffd96935fc0780d2fe5142e9df63c58ff8ec25fba4c4f8b0ef100819ee147ce0159b2170eaf67c687cbe6dcb90dc866c8a64bded579ca6fd20e53121105d15ec63bfa2910a833adf0984da2d02d6c376cebdcd9ec28c167b7598f30ca5ac106801b43e2d8f8024d91295431c0721f500e6242c8ffe7a9dc8f8e50317dbf10888a9190df6383dfc9965e0a006116c09980d8e61b323672a24722d63f8268ed0005d2bbe01eab6df3c7caca5e7567251e6ef98eaf0a81f03ae01be2eab27ca6ba3e0a4523d3f5893efe5464fcd36a80d1d019a8a5a1bee371b39e9c9f74878ec19efdc2aff739cb82ea507e1c6eb66e21ca94134864c392ddba81d01561965106157aa98a4de6d52b91bb360ad3d7d6372c41e61d6ad9fe03cd815a19f4a249323612480f3ebefaf85f43e71b34b1c64021e0a33d2b073698e9e1aba5c50e50c82c1195407b12738de193da7acd4aa1e66a73d1a8e7ad80a6e1ab95fd0f02e2dd754139f0e16805567fb5141d23b35f0ad71618424ad97f187d270584ed117e3ad3e51f7661b0d45dc33e44151fefe2d787830671f031248e31d871d3167b5ef0dd52c07e966580b95b9cb6278e8c730d3da252a1f15ed17809cb84da9c4584fd1bcc648b216f01b785c37875b65f929c652d0e139890537e85a147718544fca5bc3a805e43708e9584f9ccb8da67002753aa53fb9ab8e149f8cb11a041b3243f13c0e0881242765220f4e48342d1b33c79cdd54d9e72223c371af36dd8778eb1370dda960fef25a30d33508cb9e7c6d8824b0fa4910bb90cbeed0bcbeff1636eadcea546c3013e4de42c3dc830c5c81bf9426e9ab911d449c7070339c2fa3aaa6d4ee10eef1858b4ab3dbb39a05945945deab89d0fcf8328e679c95ea2c58440e6203e2326a8becec73ec39720d0371460287e26650d3b1543635097316cf79f9e27fbc09bb6e1fa1697f9d4ba5cabcd1ad80f90c1038ac0de4029c13f47c04f451e26afa2f17f453753aafe9a146d70c4a934ed9827baf10be5db0dc2ca4fef8f4d387ac96342a6f9224adfca1e7ccf2ebf7505ee8e0418588f692ef0396035424f735354b72213a3bbaea6fd14220e4fc26e5bc3dff79c85399272accec378624c1ffe12607e86dcc228dfebd5d08e4f3e985364173f6c6986bed6f1250fb643222d42c3129ee7d55861314ecc3f75f9a9c30a0a2f85227af63ff1bd629ff9ddebd5d0e0e1db0978fd0971e0bf0958a5b59bfa175ca9bc4d73ec00f49c22d2b0b2b83ace03c06df54266abd9bf119182814089997b67e58d65ae5bc9a9f9a5fac475e374cb044173f70fdada78796c00e66a8e3c66d28c05c4c93f87d821b4477c0800cda1b6257bcd21160b3c66e0e2b095c1d420c3af654aff4f0aaaeaf80e8b86ec40ce4ceec11dfa5206fa19e00f5608604cb3f1e1fa30dc8cffb2da773a1f8b1a0c174be9689b81aabf074ad913a12fca988973f87409bf977687dc9b2005a75235880750148ab5aa4e655a1408fa2191f15646975be9635e25f3fffd7f6f3d7e1c8f6a89b17df687420eeb12c19ee0bcd312e80f8a4da6b94fa8e617920d90e103135d7a7af99c7057049d490f53eec9f4137b0037c23c136d73d2081a11a696fc229d42f45cd0ca1c3b725165b2e0483ac3f8c07ee956c5f96b06edb19b850aca688e6c87aa39eaa5f991e21b075f07727ad56239306eac142b6f18d31e1205860a8cc7d971bc23d469180f1d78b27a14cfb611b84468e47473fe6b44cea99861a8fdd16f35d86897d5d0f17561a67d7854a12d42adcbaf9743b1bed6b958f16670e0fd0f642817cd1206386fd3bb445036e8ccf7b60fdd22e71f452dbbf0102cf26745db800c354af7a93a466699d11a7596903acaa736f3256438b6425854ee918ad94046dffdd9332a1d1b0f8082c29b48523a225567b892f89715a2a09a8b4b0e83a4ed2906f29d15d0288d0272351d2314b14bf5916e4e541ac82188ff654fddffb43c980dbd8003e5f4d3ffccde3c03b760031602b8f7c9fb17b0ba044afc08bb49b6336b622a5dbd0cedf5eeb41f8814f498283868fda1c4c233047d3415bed48724302b762677918364e7c5a8d45f67b93268300844f9386e1b02c3ebdca4f0a8dd3b5520872583bb52cd469afd654e71e9617e04ecd7ecda0f726c6eb5bd963ea30b5cd34dfbe32514f3b8395dfc42e3543fc7eab15a100e81e1d04bb47b22acec0f40f183b2ec9f8f162c1ce838f0899f09c46ef8808df877c0523ed18d02ab330f6a5b8dcfbb19faa8f849e0d805a62f89b6c385540e3bb777dc7322c7c54477485d097891228a76404821338f038c6bda9d78c4a741b232dd2d7b874d015bd5032ce0dc15f63fb5061c3ee21bf753adeac6ccf3513a0fea9f5c9636d0be30be0fa00711a8f106865b77f8260e2b65876f383247668c296727ec04ae1d0e14810003792ff32120c1740c9bfaea1e76a2006a5cc3efa6914683472ccd84c034fafea198dbf783006f87698cd9f04a9f8b2aff58da01ceb4d9a058dc1a281782d28ab4db5c5c7f452706826d604cd4bfe621c940ccd36cfbfed197535f15d8e45da1a1c137eec79a027063e9b035f8e1b73f075a8aed37e6b99d862ea722195f892ca6d4d8aabd6023fa4bb1ba56dc1b9d8c73dcbb2c446e7b78b5911a3a66832fff207eb61eb180a4c22624f60e99470aa0f9374b37be82a138f3ab0da69bb815e19a5afcdb2bbf05d5720bce807f820e90eb90f03bde29204c5839fef03b3d26b0f2bf5ad5af85abfeeaabff732d5af02541fd210802f4deb5f1244e1f927612ba25e296f384cb3e152b409710e4cd820ba42e523171a34d2d1ec2758151a325edce8770a989345db8c146a7f0d3981f259c87c1e698e3b0d3b9d0ea7b397f7ae05afc954bfe45d55b79984f3f8fb40005edb2bff1ce2db1ddb90118cdc1fb70dc159e7cbc90cd89edf1468af3422547796d2f7b59b125944c565a88270081a37a9e74231910f1db22cf0aed89bd32cc3688c988a93874fefbc5b3a887282e4d9a0abce20d0558f6250242b21bc9c1a23ac3d05349009c659c28528e5e958dded8016a8a383708c6d6a4b6906451324c23a5607a2ad763573672b2efa815351b5d3a6826183c757ca31e2c2d30145909f0d890529af118c5880367927fd932d70298e14fdaadecaab7705a184f9f612d3a314875818969dc4ceb4ea290dde241e6259e8a13ef9e7f6fff5a058995b74e7cb887d89b31c9b0da9114b7a613506fa0ee192e38cb0556ddc30cfd1bb5f756e6650ba2e3e73b42b4c80a130088d49fa1b4a816b83128ba9d38b4920b99ed44f8472902a56d94f79c806a7885a49ea7c85a3d73d84f6848e4417515a5f48996e5b67eb7870946c184041c6e2bde92fd4e9bb2ae84b52b930238351f92c3c2e9af2f45d01bf831c246a765bc98e5459f92cb9143ddc68c697947f5b2a6a66b3ca013c51090bc62e311ba8c16c467150c936bfae7e24c23227d33317fe4399881d8294d2014b7c039544eacebb3042e0b2a6e412c1dcf122de25804338c0ccb92a3953d8886157219bf44c21293dda7ed1f34a05e4dfe8d7f609db2220ecfe391afe87d7f5761656b3367909d74b09a083eaebbf069dd09e4d1d3107b51fe32cc56efff6ffe3eb85d0989dae8de2188437c62d376f060dabdc15a0f61c40f33b5ef0875b62e3e9f3bf0323975dbcf31ab05a90bc2e77d20b447d3048b09035d887258577f0a1396611a70640fc7f8d28585ea3b3211e585f4b194d6e67a4bc1a20d28cacb6d9ca9ddf25a4155ed01850fdf5226866dbc5fb5ba15fa697c555b6465e3d182792ac9ae9328fd01a3ad716c6bc657064181e262693d0cd02d320eb5b78e55f6b439c90d61a3b25a661e687fc2625fc7909b366458717c2a017fa3042c9b92d7eff95bdff8056caf86a21c21de992093543cdaf272c264702e508f8d32a97aa4471c69cd94b9534ca6232edec9571343513a26c498bae0aa598e0b956f099b6ff9b0124fa37da8c968a0fd96091463c222333d79fdc764cbca38e619b3ce2b272c28bb9a6099360889633630da42050de01e5eb1f525b2657278fbcede1625fc7c42d224acaca3563f059240551646ebf244d49538665b09f6a0f865f7ce57289a7790a45c7740593750119a9a8dab97ba2e7d5cd89ffbf397f0853786e28f0c11abdc0bd3d5cd04b5976460d289158cafd7d7d7c17ead7ad2128067949b6246b91b42aff8d80b8437d2c77fec238ab474fa04b3d8c54dcee05c52d20200cbb18e7d2ee5a1aef146dc5c10afce2117d8ec13365d108b074f84f58231671a6ccaa5bf72de619e38d7e9df12b7cd4cef6415bae09c1e0a0730228282b2359554347f616ce52af375b8f57e2440f7cb9b43d81cdbde1d1bdc845245d24e9a96f7462107a3248963e5bb83d257f5d4f228897db00f01a92ad56d3a9ec1fdfe827559d02296bbd2518e02d80ed0883d76114eeddd10b1dba463dc70602632137d42f930399b76785083d74e20d6de5c210538805e4248aaaf4b8f1aa79c7e0d52d8aba19b41f4d624f54e57fae44115a3ca1da353c41d72d565748391e11c5047a88ef6238fa028a621640054fa2b84aefe1d0159842c552c7c37af9df78d524e887a721c156955fcc723ab282999e5c677f6242a348008a2935c95c600762a838fd935b2b67a4e1c691d34f62e347f0de6365e00aa066a4f16ad6308dad8b256df02a4d0263e7433dab39cdc9a4c70808bbea330ecf093d3a0a04e95f4cad22278686ceedb9d28462147bf6cd88671059a06bdd2f719767b1914d2f520e5c55a1373b3edcdabf6ea6df2dfb611718069ce6dbae845632616f652e600f2fdfb558dc85401927c825f6251028a7a46f06959ca1f45851aad1ddc6096c044204c972a4c9acc48c10525680694d50036f92edacd738b47be6e1bada6c45cbd73e27df1ff50a87e48c61387ea9277335760bc77f74682406ec37cee853a644080899467edd458fe484a9f26c1a3e02c8ab34c454098af55ad7544a1aed05ae41789d00f12cf907e87cbafc6ea7a440ae2f880ed8e43f0b6a34c25e8e3be754d28fcbaa84312cb1a8b9ae0f447e258ad430bda172d9980443573a892b0e6c9167f9b20a167f94d20e6a389a74e090b8e338e9b7393b56467a230cc62f5d936534430d587945e814196fee9635114e2f76c91801a2576b4557661c789b2114eba505cfb62b2ec0977b1ca5399248d7dd7001795bac7cef590f01d027ad41e25e85ed997984e3919ae88b0427ce5f875680160271ab4efc9f0318abdee42b7c297b93de61212e6e2b9ba7ffc0dee040b5bd27fccec49c97e0b5d2a4263c112420542e7b46d3c2b967ab027d32833f75177f6ac440ea44e45681d37d727ea3a68bf966c20e348ff314a7b93b9207f80055085fad009e66cb1e5857fa8052357c1f88c1a20c70a20bf974968da8ed2ab30eb671887eee1aaea47a5710102fdd87955779f63dcd4451da141000b679101e6960121e1b818c31014ff8d2c2104a830402a8728eaea6a2adf06a891cbe5fcca6bf81c9f90beea21b42215880be247d3c8b60311a1570339c8db754d7c235443f4743960cb7757262e6c722040c4232eacb235263bf8f5c6a21e8cec385612cf91b89402bc8b16322cf89d47ee30e2fab6b4684c75f752726f42309386e31f2c60905ee03add0229bd8150d5171ab20f2eaae7d12cadc08d8683dd849fa79c6a275e501af110aea17c7056289bb54219cf52d97721185090df30252850006b2298fc92776ca1b4400255d829068d3d08ac2b20ca49db939b881038df31a7d8c7e655306e9542abdddbdb89379d1c079a00d8d7d0d20cf9c5f8ebfa3c82eb84b4e83a05061f9d4cc2299faa4a2744beff783ab134392d4d04d3c904173a5920462d7542855174122dc58bbccf309d985d0aa14f7230828aef20f8bb00b0c9121db2b6d855db51a49329eeb2e66849bd216ef8249c5895f973857613c908b50c198354f68fd232bb9c1f62e1c4571ccc64ce02e442b2c959ecb4624cbe214a8f0357b6f6bf45dc9657bacd130f9c045d53a5bb0313632269c044b831f4eba0590073284469dba183663fcf3494a2f0ad3899e71f656678bf06268dff61d4a008038f2c678232fcfe07d72db570cbc2f0b6946b86d422ce53e670fddf10a873e7429a3175feba09f6c5f94d5f4201e53f1cc4d804af329c0df0710b475cdc5f085114066197843834c0edb952f19946e16e1b378b4bc0ac5fe7026ce9fc8985746b1cd4dee7ae81b3b748c49ecf83f655f28d67795037f91b9ef5a07ee2353ceb1b34d5cf79ad40e790d1027055dc1aa0d23cda1ce795b79786a8283ab3526a9fd26bfcd687fa93df70d60ffa26bee1591f8126033777fa9347d0d292a91cdde84fe57b6d0eb3aace19a58f81e817f7bf4abe9e4df04f2a84aaa6c5358361654d3afdd7afc1067aabbc4748245904758d5bccc62d0369768bd223c932d9547932952b75785dc208714f972ce1c635fae8304c2878cc8a0409be53020bda40014634a5312c473510c84c7f4658ef589ee13894946c5670924b6715dd8487ff07740896a4f41335599da72fd1494d496bce383c418a0960845ebda99c75a226c822acd20b353c26ad29d0632a2ea26f35613951be9aa19ccaf6b14a18c8e25b10b6d3e53238a162eb3ed7b19fcfd0782bb9cddd5f4d2d12dd874f5abc04e80d0031ad8d9d6f086d5970b9675a0626f6f13d5237f2af8ff87d8ab70ec417fe205d99b2a5e9868d2eb5f5156ef4a4e03a2a28b5bda66ee8d3e29f6a2fdbe635d668a11e4753958450c844fae3bdfb931f71220b373509c474684439217c8136683c95c85da60088619055a3f4985e25f5dff43e45781523cc579a335340333da6a62b4800e4affec6e4e982932a525329253ee2356d12a25860adb20189882e2f3edb3ae659f43cf20455db0f9c84e4599ea4afbc6d2bd9172bbab7be90d8238dfbb8f238e2e1dd66b59402223c8e6a8cbe9aec97bc652aed164aa339b75a8eb526c3e015ffd27082641b4cae66b52ab498313b7400d25075b7e2ae24b4fb37cbf697d1c9810b72d3862648a31389959674610ae37efa6b7cee177a4e539ca3df0a57b5d123a34b9adba23b354159768615b7fe40102ff9c44bbc9781bfe1d756e3c1bf705657d643896c2d0ef425d5f7ae5a5784bfcad40c07d12cc3a1b0e60a7c2e449b285c55613700737425f4ba883d111ce88e5551424d95009ed85231f9209beaf00b241f4f8cdff30a1b6869bfd436c736e2c9d197544ee15b8e9896a4fa2b2262a9ffd3304e0180d212781ef73cafb1ae41020f643c6fd6e0f7357d42444ae882512243b9b22a07fd33035612911e989495f59a0a452f9c94fad41ba237d5039fd3ae2a2cb70a82374ee3d5cb24547b435ede87b459f212f27af9334b90531b692870b2899dffb52dad64f13556503f6cdcb011f4fff0d6b8b37f90ec7e43310c1dac783df856f1494071d8cf8a9677181cd3bcb2f7e20c3b8168b8609a5bec59ae98693bd024936a830f888fe2f4a8a65cf3e6da87ba4244e784adffef9f071386d785e1e64e3a2fb0deabe6246aaf373d830b0eb3d3da004245bd67a34efc6d7fd76fdcc9831de67ba0f279d926c47d2a1c1a736b4984ebdce74144bfa258d8a114b24905a2bc3be9eb0484f7beb6964799c789d54862b347f30e2224fdd716adbed2c10cf8ebaaf49bef072f0f21e04184746a836d1e15c2710bc7d0fabb675f4f2e037701b050db02e69b6e879aec7f842104c0f2cdc552b1990442c224a4f9bb5e0c37a520de432ba51596094d255b5eccda51ba040f8fe62126c2637981abb15290cf4ee9007b149c1c844e2c7706f04158b7a0f496071bf716b9b38ed25806415b00795616f27ae09a6bf9fdda67973674e04c412b701311e68a52b8e265ee4f8ce9d02119c8f2e01b564ddd405f0f2668d73e5998f4802f2194dc2d282ac4737976f8436a603d87109b2d747a5c8561a1062d7944047f833c5e946661fb03118b6efa891e1c83f2a94c5273d61b9d858821b007eed1ab88f9c2c2998fb1c31a88c40aee01ac1c0c50670c992e4964a54977bda8483fc4a438a0f62c4706e301859d1002ed6705366a04ef369d88f38731b3fa25141862260f6156b959c40e048c4a1e28e4751a91486bc14aa4653d964a7c90b825774d0c88afbb9ab07ea58c2dd3f42c29441ca147321674473abffa574fefa8d9e3558886e09d73acbba9b7cd4d13dfb7a30395db19e31ad60708215bbd9263636d1a43165b66e0d05361ed5ed52d42b7b4bd6dff179a30d27dbd3b1929bbdf4f7c2fd3b74c4611c51d1dcd2ea473dee7f9e287fbafaeb5f2b8e37489e57eca9e50df924fecf10c5c4958c439f2d3548ec286208f36df31fb0573bf7208a3e89eff3e4409c9b7fefba9d246e7ca03c7d23383916d02eeb65526d034f0bf13c15e2922b26e2bfc1976f5b1d71911c11f5482b9f2efa0e7bcc7c636dc2ff9c5cc30bda64b9d629656635670e57b0af8c7fe211a20dbb779096f99eae74970cb1b81e99ddfda50689b2d7daa5bb6cee7b2a2e30e881e4eef1363a34a58d27917d84359b6cb6dc4123079dea94e037ada9821c5cabfeea6583f59679d5c0a341013a98823e359c2f1832dc18163ef8de8a63a785d554ce0dd873535b15e9a3d560e56746579a16fda777ac0d2db48667e5135c578f596b89c1bda69a5c27ba11b09d9042eb297f475244d1dbd873d741bab7e0e820f8800615f8ec22808d763172427c246b110debe1735d1e7efbe41f2ad8e1617841bd21bd5c1b80023b99de97fddc10a7bace153d54d3e251ed255b6eb42df3adf12d791e6b573e03be3fd3381f41ddb1af9493a0eeb0e25a795a8bcdf098c898f8280338b1df40f038e69ac178349321414c2a775c7395c565c4a3451d0f3c68b109342c1cb2f46ce076df09256f5a017fcdfa5c3ab62e016abf0344b35ddd7f657a670bdc479e6b4d5ee0d4a79d854289ec4a813755f346e804234059b63bcbd458dd33d546608e90806c6e25d42565ace3ca234d48728a1142c32a7e25ad3d5e468a3b4e349815fbccd80926cc28534b825edd5e619899bdadb662d50e01486521e76604fc8adc370b8213489e9b1ed8b2e19d58735e1b66f588a3a31de63d4127081529f894098c07086a3072771832bb1da6da57b05961e6ad02226d0192db6aeffef845ef3d059917b6c15923e1195908a50cdd9f04fe8411b4b24ee9358f23848794ae2815c9c58c3c907fcc3f7084ffa8edc1cd830ea8cdb5e484a1317ad855adb037ab4738e607e0ba0c75730702aba1d3caabb69260faf9114a2a3d08e9a4b7d44b099db4511ee37ef7f6773ea9d3ce28c10722610675e71b0ad23f304feb1ff134b06014228d9d7bdcdb76d2cf81fe5f9926bf094cbd70f15a46fdb13d8143dfff8edbe8c8d651448ee3a36932e138c1060f4abd766fbc364bf66dc07ae4b6fe2f3d211e0036ce98f5401863b985a0b75d3b8b77cd205bbc1d821d80d5a4b9ac79489a8977a8705de73c3826b33adb136f672addecd19edea920f0e77198cc34d8d7f2b93dad4a932bfdea6cf75843fda3894d35a67912849419598cc1ce3c8dcc8c1c39349bacd77c9ad001f90625af4b98648ee4a661116ce35a229a49d16d285ecc403a8cb1928fbdb24e11414c09227f2e4230715170a468853f27447f665dae3483f88b2965abc2037589791f073a751b6261ef46726a213d208c6046b2422448533c237c13ca5fd4842f4ba417fec9700b61012070879e617361dab20d3e6d490d352aa2a793a86190c5c1f28966e5ce44a7c0218d1bd1e8c833a07dcc2ae86866723f65d95a3c51ae182a7ccee4ccbbd15c4bff2e397c68bb2a0be6d59885b86cb92e2115aee65e4d731f3db306f34c9f589ab349121c125cff220e3deb64458974cf5235cee993199c0485435f9f0ad5c51baa18c087685bbd6a780d925ed1805382dfc3ed6ccfb5a952426de56de376b2f4ab396fa8696568ff62308334b489437e9c9131c260239de3c80af15457e8debd4b4bf35792eeb3ae7fcf1d68db97797e49f055e186d5cbfc85b79db156880c127113460f2ac1ad8c670321a4211f4333d9cf725af86ddb30579e2823d5c4a198863e6f157cd12ae523b630408e09e4e205300250925923e0eea07d35e86bb1086080741411864c43027a9543e4fd729b5143ab5caf88414abe7bad008509fd734d391ee0a68422b7cb3b3ea5831071fea148eaee1519245ccea61489d8e2c1948aad89546c4ad38ca5d418775e42f67a9e8ebfed7b159a2cdba0daedee291593ca441206551a64330d0061b71cc2988fc8332eb588e30047e70382de13ca946a7b9743bbfbe81644588294b80c5fb8f044d2bfd46bca327b4d006898f281503d90d3162828103280f421b13541d5d0317e3370d0762de20da84496cde1e8ca28e3fa268fd6132b7acc4020b076df605ac9bb70d3a19bd173dc6f27d127a7147a4d4e13382d221d740931db1cb697040537bdad486de02dfa413ae0372a3edc7a5892f5577d11f0bd953294ecfdb1a6ce526437e7e3814229ba658aad29971e30b49a615bc1f27a61e55270f9b02c935d3a2c645a10fd7fc53acd904123b3b450c2d7fede6b07a0b0dbb13e40d0d69ee0ec164e402ea5d6aeb7225ab9bc0adb2833eebb43fc9b00d3797086f9c3784335b9937549e42bf92bc893ac244c4d0a3d7b40661e320d93632aa849ed4c9e64be1ea658ec41c11deabfc9a60b2ff02f8d5b0ed1aabb07f2f5923cb12b1ed592da3ead5a0aa761251f3a43602e08e6f2efd4e4bb481e52670a1baf4de27463429540788f81a54e468e496816859a74e5d7a1c89b9c9e4b6b2cd8389141e098a5a2640c8c5ce12ce1a71190365cbcef5fc5f8e26d0c0b51a0d0e8796d084db53548037026dc1234ab11daeddd88fe1bb4c120d57c44bea0b4010f1f7024292da80698cf2a70261e47bcbd9edb43a0881f8889a21097fcf794073d93e2a811430e1c956399e3ce95cc2c36114715132279041b4bfa12a0780bb3607a2b9354b168fd06c47b5484ae828ed82488eb5d8109b050a3ebb568729c026dc3f5a0f47891b45340ab5740127062ab101fc5cbd35cd02d22141e6f1acd2feb562be1a67b3f6b3b007d374daee529f32e723484e8d00c2e91832c8aff1694f4cf03f42c9dea5bef80b00b186698fb7629333318ff9c27eb0d56bb174119072217ab0573b8e24de732a15a78327d10aa543b149540bb0d6fc2268a05360bfa5fe703ada4ed019c9cb100b6e0ea3bf5d4323d363487b3e960e43a9e2c61ccea3312e5885a5248d1a72d5a23f2a51d0d0a11733704dd481f45f69a100391e6ed658b26be3bbefbe391de3ada7664ca658d0ec27dddb69281546e81239fdf536155910d894341f9d0946de6f31a9424b34a201a54bf6605063963cd0a7a762a494baf1bd7c9ba536cc9609d253b745c823e3e11a5892f474fb5a111bf8f40191d615d6216539242d66a0d8c2bbdbb92c31e184d60258774c0ba16b66455a6ffb3370046f96ec089b8b86d596a74420dd62bb957396fb101fa0523eb0930e067fd62cd9ef505d9f63d2b2f840f336d87bae2901095159eaf61417436b90639482907067e452df03376f2d73b727b7a1f421195c0a10e9cf3bf159fc8119c6ee8852a992b99bbeccdd538e3a713f993b5e8cb78fb983390c949f622a9ead5d35d8967264e2b5c8db85a9e8ccb8a56a1fbae09f3f43b568618ab2389f739e3ec3fa0b3bac7b106c1e125126088f24af26b6c89ba9bb87643ec15bbdb25d162247eeebf87dbddefb663d0f7f5e2fddc7ebf9750faf57a582fa1779d7d75fef6c0a25be68573bc2e3fb81b989fd98704e018e612c952dcb287b87eab4118b0543168149b0c615690c16f39af77ac936f29e43ecde483d8456deb5e127aaedf4cf59ec52aa5c3610449b86045157e85b1dabb3626f8d1b04b7012867b6eb457b3c24cf31d82fbc8ff4909622485a49b11d54d2bb58ee7a7c5e49ed1f41146a4a57ab7d609a23d8c8f99ba840e16859eea6eb62c8592e455e3984b4dab1693c43dd5daf76056d1b173303bcdb8b0c8d85b6c5d120e810e18edaf572196972c40ea526b96f9866d049963281602b49c43468559aca74733bd021747eb34f78727796a6ece86555b39d0121cc9e87a747fc4af3eb47dc4de95088accdd3ca02e4eb035ee1d4df6c7aaa045b596460d90456ac55369e03084ab2b2794053a95a59d8a5ed422d05b2e8aa65b64901152a074e8f4be90eb5232dc51e79a98fa85a3f1dec2e20ec47eba675087955984f63fab8544eb380107c2cf35a418c327098e53773f293e5239189870d6492d44432b95cb4c59d82033a87e983312a20b40bc26171050a727c581303846c45d30b770e48390166bed5ba7c9d3d52684e11618e543921d77998715dba05b4d3d1a9d6112f9eba82a75eaa9e1f3a1739980ed982da53592a5269258c32bf27cdc53e17cca7c9b729e95bc7b4744dc930ac7b36a3ae41ee9435d8688674bc8f724a921dfbc00e3549b2afa8604a660ab2df72b3166b1698ebc73cd2a6298977d483706ada35ad3a1f238e04d9bf74bbd0c2a9d2edd36b64526884d31df696f544962e78812aa66a0907ce7e9be55696b4261bc372cfcd890a9ea87ff8104632bd91bb0a67d950603665b061ca16042932a41804e825b24e7cdd2e4e9d25a417091f3c37769bceb3fa24b4eebb95164d8ba43054dca3e5ebc5dbfe5b801e53392a008c06e0da756e41f82b0704dd3fb8b7c1ec2517901492ed7575e75881ab9481e301be4fc3acf0523b2c12738b42fb28d4b4af43fee0094ee926d19dddd80c64d11f3712aaffc4625a936cd8f46486e9abb26b5d46a6502957d17912749b3ec649f9ac4dc6c94172f029df3283ff419cf419930f21e5e49ea7a66e49256bd28ea24cb2541dfb55d89430310cebd1416d9f1334c179bdc03b2dc7b8b03771224b837890e37e9a5654bb2066549994bfa32e86b4279c1aa4a3fc787871a8c1725ba8d280f08ea39371583413a895eaffca31703731c6a51a06ad478144f545e194f2c3af654d6bdcfe8ae7779fc067841b8e95664d536a0803d25c2817312638483a16f525d6aab89997a38ba89829014ca0708b71ccfd11d0812b4c2d045a1d37d8ad1eaa3c2a5c511332ae7cc0bd7cd0624f58e839713f8f52073d326280e8973b3fdcbe1c1f90edb4cd9445b6d7f0c4a51283dd143ad6ab9cc979b5b37c401908137c8c3d2545db7412728feb1c1fd5760fbda4267c27614c82efb8d9bb69591d448e84f1e1696c18c8cf8eb5c88bb09c2109e3e654c1ee29218e80241c19b19f88b132a88e87af45baf10049a379cc00caf57df2c69b94ef620cd18d310e5562acce9bb1b391ced2752889a7b61e2c965f66b84496d227edcc65116ff2a745f278816620ad36a3e26d92a6d02bd07f2d930e5abf37f97383eaa93d4e17e42cf22741e816038e61232b4bda62983e9b02127f572d7fa19b16d3fa652a41df3887d889d2c26dc1349c43a34137f9c91c92816bd5a5dfa06772d88750a663e47db860646f2bf325ae3615d15402966c3c3e460feea185da9d168f43b50e35982ef32d84b7cc467b5ac4e59c15c94efee86132edba27c6b15f03d11a07ce4ee2bb36563db9106683f06ac1fd77135cfdefa5994db918fd00a637b64b1627ec4675d88f2832f402945d8e90180b120528b7608a48befe272493ef7cd038fb08b8720f26fa79664d2fb3e90937c62f17bd8c2a01bc732dd48be7a98c7eca72478a1315bce841f155239c20f1ec91f2e73b2cfb3f76a2ac721f3105b3e0770f987c1f22524dbfff5928fde1c17110277e7bc2d1ad53a26707dd1d34ce6fb5cb1794f9cb3ddd70c1c5b061acd509f682db46fa1a18e106f6d23b0f672c13585510ef6c1fc45c397d5afc6358a55d2315aa5871f7c8dba8f0d4a3a5e6709ea5b3885851d9595e23526c407f1ce9225306b00da6001911d2d2c7509e024bf3f3f1de57aa11f56e4e52be2e84f503ae753b45169d0b47da9e202076ddd1b4b28ef3be3f82ff084f0b8748b7b36120b10924d574e510a7e2a1fbe2ef22cf250023829a9c9226ca2803c3231f77eae5431d251cdd6a0cd1f42756875187d9537d42c1c15ae33d97fc6be82ca92d136aa55c4fe43b28e597f82acce14c612f0a980a637213dbe5c19dc72ff21bd2ded52a344280f97e526f700b6b5f3cbd4febd125f05f09d24c033c6f783ef17bb92baf897b25c9123816c57f7dadca2142dcf585888a13e5285cc7eebe9664ab80ae089cf9d221917352ec6169707438f35410e75ec6f68e6728a01ea6e0529cc4994b392679eb9be4188ed7e81f2b6c3c8c7efde5a71411bf9871fde5a8f7c8d75fa6973348b2fe039dd34347f766c5b1905d60bc40e18926ad24673f7395764f7e9b3860a2e567b16ebe9169367ebc4e5b4715c0dc97c030676a80f0acfa1940774fae4e87f24cd55fd8ad20e033cea665c1854000206158dd653c2bf4f718bcb8ebd06d02d7bcd44755f8766c04ded14e41213ef5e0147ba271355005c6b069baaf1526a2542857b884868d1ba8ea58c85622086865cc7136886c95dd269797c72943acef72761d1ac9a9e03a96cba9d0bb5b5d6d452e2e1f67d7d1d5169b8eb9a2077092f9d7a8470fe29166382b190e0368a48378c5a2ac2742a3d62041218f3b53cc97f8d843e87b72144eb8a1c837d31a1218a3c0bc8488acc37dddd2cc721cf855345843bbc7a254e0f1784601371c35285097cc24e9c29dea8d6769b8b53c45a927ddcac93d4073b0230f9f83362ab8395489ca43d62da76500454553b9eae03bdffa0b21cd53e97fe0c0148f3b9a1f2758bcf484b89a7de650c8607e3492294eb7ab8df2159deb93e76ab3dc184123df26bfc894439bd8d4e27b757a92bcd25bc9311078d74dfad308b3a6338ad55839407b92d04a32e4006dcee911925d66f8eae6549fdb372e1f9781e2d51926a8f536e79b6c6715819109b0b1e95ccada1d8fb5579dd7d8e3d0ff10bcfef9218fb092d02d3878dcb5f96a6ee15e4fa8b83b806dae975feb17c36a619b276ebacf0bc6d9118af0ac7c106b025b85f0417f535a159c4ac85781b667b13bd7bb1c8c758eaa0e11795ae7dc2e34594551b9c6134cd5c2e9e041698a2608eb9658e16eec9466185d1b7801370bd987ca2b365dd6a559d80129571328884ae4044c8a5f4f9fbd2e909a7a2a3204b608c0decf761af67d8f57b4b92a7a485a7d3beebe075ed9c3dd626770ac71d1118f02b43efde8ac2c4201694987ecfe7dec3489c35f9cca3f6fc952daa4b1871cfc93707ef7a7e7018e5600b232915f6384ad4ef8b4008593a48873943af71188ab9112ea4f79b4999306c8045469ab2150eadcaf96d1e498751cb03bbbbe3d9c2e3954b36d5007dab04d64e06c20c6e021f0fca2b23f2253a46582fbb81cb8fd81c1ebb8a7e8b5c235c18caae3414e695783ce10f5a0af8b4212984a1637266c169651d705a5ba8d87c0ff69cc7280e0cf282b388bdc6b27dc64590442625520b5de19693a0ebac310bf8ee703f5832f862bcedd48106c50c1f12a8663a4acfb1461c4e1b09d25361f73dd79db2f92b3618d994eb2ed8c47ebc7917ab72d72444581f0b519799b4711250e9bed92569b70f62ecf002012077b4f84c49788c73d0bf94647c8457b31b7417f94dc8be635447bc92fb95413c2b7ef2c34908abd0b9098203a52c16651894730489dd3f60a390ba8de7d57e0bb2d3720f6f8589ac2de0d2f4840f25771d1cd4f6deb10e7e2e964bda1870b8827be561d07c6f2f564232ae018707f93baeb809d255e58a26dbb91ea8694479be611a9681ae4d204ca3734342f236ba10d101186f269572e202953d48e1c2219bc2f290db4b12e08561f2dd56f225ec77a9cb1768f18a96f112511f8602916923ef46d41706155911695c5a2c5530e6b93a8a9da3e26524b5061aa170425da026336c2cf6f840437afe5580e585b0d7e39501666b7d249762dd57244d56f12a3bd54667971546ddebe93038181fe74f06c54f0c2c9b47424a3f55b25ab402ddca6aeb4c1b8c08c33a25ceb0d28204371ba96e54d5cc8d80cd5f0d707e122926d5fa546d3fe1c7706473239303570b1c1fe5c570304c5078e87a832240d174f2e52982b50e86d73d885392d709b71dfd59ef1ae0ab073e9de7e029bbe5923b49d7afa612131ccfc44d5f9d14d4e1805b702316f1f8062e596c0adc23198e32441391d3f89a2bde3812ed9e027b75d10e2330c5f8d61d62ac55dd234d3b3110f85f4355568d69277875dc356d528a1767681e3b9e29ac1cf46e1c4283a62786d24731ae9258743ae8c398a3db32174b615ae5d471c015b2e0b8757b7b508e7df686e058c8d4e8954bc1e0562169df7c513ab1cd5bb67b9cad9cace20f945e7374b1fe78e894717df4d36e5918c6eb25ad03adf02f914305a19d544546fb32b8729bd45ee42616454993449cc0ef42893f6f8b2e3841f8a8c50b16733c782cc83c40712ead86b3c72c0766522b99f734cdc192a14a8b6f154977b438e4745d069cc59126d2412b2a926dfaf5b002302ea40ac9bd00a46df233f1afd9813e33914a6339d351891af24e14d55b2107e2e121fbfbe29f457ca4efb95f13aadf9dff4a97177aa3fbd9c5e110a28f34a8544be186901a6a943e47f64a34cdc4d51bd8f42ca799f501b3615dabb63428e61fc056ae86c266bc429b5cff38324dc4a4546c542db3b664b360319570c23104f3919da73213ad1910611b9144cfe260d1a0d08f71fe058f0bc9c98c188dcbf379b2a6c87cc4e8a18010b56559909535cd6caa919495a1cecccb21a5bc64aac12a4c2ed96cbeead413a08360bb024cd0bba6152f818e3a72416f0554ddb2ca733d8e6998d5b08d426c5bc603742483b2edece48543a3da57a9e32b0a7a5415baf7abc4bb1ca20848a4c1a4f4c0f8f8ca08c2f3e29fbf75050d3ed8272a5043550578f1a690b5d86e0d43323a24b58e62b0ebaed7442f26409b74d0015c0c06d90814f30f83f45599c3949abe0b6ac49fc3ef9e863ac9d3c87350c408caebb9cd7cabdc90b1ad34aa4fb9ec9aa3c4f73655e268b7dd4843193f5c8c5b050739783bc38a3a745153f1af312475ef76bdb0a559aa2d69fb2ce2315619cbc380d946e9029b320251812d4d8528b08464c25959ac7c764498c1164e1eef77f190b4cf79622ef5c19d20e1ca64a781cbd8654323d90310e0e8e32a17651e14c6ff86a1829376839d5b74b81cf55165539558ee873c34411cc55168422cca900c492b0ce3f612df3d0cc58cb44524ec533c88a942067ebd9243a67d027c8517b2e596d091ea3523c81aea40973f69e4d054e18bc4a2769b96e67e28c5156e4421ac9a6cdd4f591f763614c07b3192e2c343167d7ccd2f6e3e22149f85d345c500e95d9cb1224a0361ad0021eedca352434488fdde0fce9e943d89d59c8d0255a48622fecd6279a3cf94f2d060f1c76019534a7558c1cb066e4a8e1b4b4fe0f5b2dd435e37383922f36682aa9dfe7e4aa93ace41defb0590599153cb82445d25d7e36db128ae98ec6633485b6ae1417b5c8c8773f31f4dd2057af14ceb7d7854fdbc235ebf7edb0e4497796a88b8d6e4efcb7718a901b6a9e7bfcff5cdf8e33204ebd9da126bc816ee8cefd4d8d512f96297a8458bf376f271788d8402ced01147dddc791eae0f1d076873c22f2a83a0725570b7a08945f64c17a73988bf30a220f7124216b5d368e7b6c4142992c88cb9654b8732040c41eecdcc21681bdbb517a6591aadb834566fd85651e7c142249032813810fb9d80e47bdc0a4076c1302dab7dd5b5c300ec2a20efb0352bedecfc60d072e806f672c384ab77915bd84d72da43907767b34faffcd2c317f5434a277e3806c3696541be9d00f43308c74703de7d1100b524b9b091830b19139cef8f6fa8f04853775174fb6b6a594524a99526c0538069605389e5fa1676a79ac95f3d6bb13bbf55fa1cc31fb37f5613011e7573838a21058716a156138876724569465c01792155f431cfb375f43021de42870923d28e0c1a7748f7c7792b1203bce8c29eb55dfe3e4c009453adf90334a5fb157b58670fe06cd3171a42f8e8e23fec044554b01f45daea73821ec5f61cd39610870c681fd0b8603fbd70dec3bdfbc0a760383bdaa25024c64ad56beea8f067c9b5bce6c88c01a1a93a6a9c872e747dc860ef0000975f37480275311ca668a62ff2b8ea0953ebc484a296d1d02bcc97d7889c530ae36e98267145570c777fffe8a9ff4893183a77bb09c7ddfd7df5700707ef613b1e8ed4f45fab426a796d538ff9dbe9ce28abec47246a5a54e29fdda02af672b0e62269d525a49250e4f6429e78b524a5ba9ecc609583e2c26ffe54cccf2653da01c43cee894c97ce4537943ce9a0a0e5fb2ff0972662d15580d457a19101206a55721a764810661a2283185122370bd9a2ca2cc977b47e6cc951eb09c8180e6fe59bdae83f270a22a3da9a5984fb1b55f0c6b2d08d386d75e2af6b44f417018f2a795d34e298962d8b9ea967d1ada18b9bd641ad2c690323a6918c3ce6c5d5835cf48dd4c1ea98e2fdb9f95524a29f629c23f2fb63e2b388c707e0d6f9d3e3e2a167d6c524667f559c161ccb7755a2cd5fa9c33f4a9b4d63a9f7e0da94f51f679ca34240d7d6c3e6b686be85334e99c73569b5502876b52b23abb83e50117b13b589de541ac41930f3e34cd9e5bef4933bd48f16aa5d662caa2f762baf31f83c5603b206e0d398eda7864b2dff91d9e182cc67207ed0ea03faba9e9f57aada0710183a82e372a8aca92defc7247d162f48d2b84668fbb0b4d219fd2fd9f602ad981c83e45a1fe19030249bd408b130e4f7480a2571b671e3ffbf37c172046309167d30ab4d7d53f957aa0ebcc0ec51d948265a069346c3f062ed0b404f45b80023dc495205e43fdf90032829a262454801066008130f3c91ff64cc5c1f7b29ca6c91c867c1ff0060fbc010458c38a53ac408e58c5e6e1dcc028aecd9bb5d6396b9d5544613e05725a0d6c234605ea0c8befcbc605d6d88aedc5d7d29034efb41ad786ad800917e81ff9356a992cff3614596ea06552154596ff3591e557a0c15ca06568c004a79dd06498c8f267d40d2a677d033b8e834a6e3ec6cd7814a34b91fbfd89f626bc975d89d1bfe47eefd2331a1e97dcefb71914c379ee83d1773ca347f58ca96737474d3341fcd189e47e07d233d5f77b0a9a76c361f887ee42b3d0b413bc85dcef3d7a8663731a074613e4d5774fe56e2c6dc5c50cd93f80a6399310727f8c16ea59cdf7fff4ccf5ed231d4afff88f1ce4fe0034cd9f3ce8990dcd9db8e859733083eef7c7e40c6693b2b3021544fff8fbbcc0018832c16992c961384dde1c86cb2687e134891b5b866c41fff8e31e71c4a04c1cc1d807e2187b0fc4f101208eb23cc678621dc4c42da1c8fb1498384df61c869c72182ec748330ea565c8332e7ab95cf77ab27b2bba17eb9e3379caee2ea5dfa826cc5513acaf1a978d9415c961f8cfa822661724a7c9c96522659733892f9f941c845d93b919844730f6320794eb396deaec94d3a61439e5b4b97318fea394669c36ad388c332d63fed03fd386c11d7104633ae218fb97c98062d396336d5627c569b4494ad9398de270d38ad3a8d3fca1655025fd23c569130a4acace69130b16b7d2796e094232398de6724c4db20512e7341ae551a347458d1ec562456c5585380ccf7916a26e05ddc5ea9210a7cdcac444f677a5fef1cf1147e95f91e46cbe1346b23fce8dca087a731acde56e4d4ea34c98e09c4695b40cba43ff388d3a99bc194481e81eff21a490e87d79223b25535482ec5f5b803a03f6d39cd3a88e89d3a89427a7d19dc3d8a165d01ffac789d3a815a74cb23f65f95d61a1b7ccbe48751eb3c771eb448f9a3df2f1774d25f604bb86bf90a88643a21aeb55a1ea6f1802cff759e108335fdb8e14668ffc1ba22d8b60f6c85721025dcb1181aea96cddfbeecd8d5a48aadbe846ad50e68b43d5b3c22b86c033eb5b610e9959efa1eba60a36fc55e28e1daa57899e1323d0351ffe3e5c74ec3fba0eace1f75d6bc8b3d7ba35249565185c83725e4d5aa2c963da4b452704548df931e48c3e951b973c7353b91d11bb65b1557c36a6fdf0cd877b667e78ce7b9342c5ad89999b0d656e344c71bb91b91119734b8114b713dce08899288e88993ab284982348407124ea892334e81de9c189233a347184091347928439a202304792963862f4e5080b5246ce2861248a248c84b181912e5e8c10d1c508105c8cec9030c203cfc80d4718a9c108234d451859da6224062d465a20c2886d882252441569a206456c90a5c816216c14b952b1e45a6bad15df5b6badb5de596406578a3c09a2c81310455c00558405342852e48722427c28f282952226a8c24466064c3d2a4c4aec988c98c224440f4c5664c014450a530e51985e008509f784e9888e69080f4c28d881c9870e4b659c2c41d164e94b0e4bbc182cd5e069e9071c6c2cc920537a43a694524aef9c94524ae9ac4b4e60b0b484c9520b962cc960c312d20b9660c82dade002252a94284dd5a004c649894b12a5215aa0044583d2149cd20e489460c00225a71528cdd0a4a434831210152815c99054c52de9064792983092e4a5489216a6a4209692a82825e93c290907474a52e2449256e0439298fc2829880b4972c1832495c063401ae340909c7023a4241c06a4223c0548581c054855fc0712147f012906ee0252ce5b4042e24548469c05a4235f01e9879f00a987fb203285f720f2849b8088949780c8116e2392a50a223e9c2122e5a3824893cf0c111bbe324468f8a62072fbc81021f28d2192824f0a2227f86e30c4cc57a3c8b5d65a2bbeb7d65a6bbd7388986f6ac8129f9821487c500c89fa9e184283af37a487cf89213a7c4d0c61f2313124c91766880a3e304392be2586187d5f86b0f0491d9df994388ae24be228cc6783a32e9f97232d5d8eae7039aa82c45114de5193238e96187194a488a319b6c82aa59452d63e5ac294524a29bd73524a29a5b30621e2e885218e7a4495a981982c6084e88245cb952b415401220a54131a2cf921890f335859aa126406425ea022a4c7aecc14313d80914117295aa25c8152e5499028b8754d10b0e400490c30c38c255a1019415e2840901e426582c4ccc010a04b0c2d215c01a1ca00a2003581b14400497e66f0597a11240031bcd013430f59990fc4780006005d78b4747045ac1246f9262e967090a4c50c3b4b3a415800796105901eb132396270c0dc748169795db1a9e28a0236a9594293a435036b691504ab8c7e7c4627c067ae14b657bf502e33a645c63eb633696c06d5c0f2df323cd76a2b0065c3d65a6bbd135381e16132b1a1763e665658750c70dcc119267bfc47586e4ca994527acb4b635dfe6af64f972bb6f33cf7f2c4408c41ea329f11c8fbbf197aa6a14ba08b6da51f11f54bc3ea05d874e501d8742500b0e9aa7946952dcb265be6d31c22f74f5e544e051d38abfcdb69df8f12b3ea8f20edd6089e276fb59af9864858b98cad6e06d931b3473ede8150b1a8e7c9666eccec917f73d6e8e62cd2cdd9dbcd59dccdd99c7d9a41574aaa465da9cabb5255ea4af5aed41889f10dc4c572ff24d349f99437837014c56129b017a363de262b8aaa4638073ec574bfa351597ebbd923816e32a4378a51db1525066331899fb880381ced183c6f9ebb52525e292b73f356c7e8a2b2a4388aeaaad1f4a2f1dbe51a0ec7e6028eb17cbd86c3d5f77d342d65aa9afda70e2df2936c31bb1455610870c6ffed66d0dc659957cea2773ec99f34de3ffe2a1b0f279af54583945493124924c164032f5e8474a9357dc9254b24329705ac746c883bbabab4fcc83a641e92af33017ffa5424c1fc9f4f549b6157978e14732091e5935043090620a6a644a1030b8ec82308839c47537c61618809763002880dd2089d944c75725329ba211759cd8bbfbfe2bf8f459c85c6b4757a0e0e05e33181273b0d47ecb3bb1bf635c4c1935bb0a018b2a735044469845c3462af98cd0ce7e9b33ac8f2e4562b140272016c2da0e5a306984da8820e9c739ec60caae15ae5849d5f27480e4899cc37a212d84fcd57b7ada1336a9c58663a492df31f2710994ea84c739ec2725480f4478cc34e5756a50de0fdd91aaa7fc3f1553395936b1953bade7f55bd467154846e4ebf4b14720138d6f4be9e4a1c89be9a9e9479cd54cb68aac3945b979de4ac03939729cead6e6b08565d5f5d228fc9b393976ba658634d2ffbf76aa67e88b8e805f5c22267ff840925f89d95a3ac49840b1748583cfe55d8d986393caf90b0f8cbe2259327299b52de6e9b2b74411f60116813026d42f7de076a5d280bd464ff9cdd0c72551bb2099c4143c88c90abf79a026da00db409ed288ef7e2b974b367976345ca1c17e1a2221017e1262b06bc4f635e04641cbebe34c66127fadfafbefb4c18d0f98ad80239df125dc9cc0dba17af65e0b40cfafeaf3039ba9adeecf19a1efed50e4db6656a7a38fc031be122d6ed8545caa6005f512f2832e0f8e24165bc2b9a412e1c8a93323b061c71d10f2b0588c119f4f4816610ced3ff5a43b455820e7dd713d56ad7f06e259b40ba6315454f576bfdca4bf86a1487036df647d0f6e2cd1fc011efa8d1a448b3e7b66b85aeb721ced9b984668fff0dc011e3ee548d02c4d9b93b4f73c50ece8a1d9c3be51481fbea491ff15db1833d5fd13193a719c4e29d8994f9531603ca3c621ccbf53d0d5982b440cebb441d1b2e9a0f36e86aae27aaad2c14604e0eb4bd5aef3bd096839b3d4ebf848fe2844af05a8bfe2894f3e42a41d65ae28b57b34f8023ebf6e261d7b3703368477cf1b04bc4b544db033b8f2f9f3d69f0d75c3655ad1576cd05eb4671d16b2afbe322d03623f451839dada7e1af56f85a4bac818ef4270a53c4bbaf35f47d1726622ba0a4f1feb98f7732632b7236f25080e3d033a534dd3ff7a913a538d68d95bbcd20bc73d613eb669d009d03b159a18e8dd6bbde25eed0b1e1fa9ccf7189b60990a8d67aa29a4a676dba22945c9d4e8b13c6df0765b4bb010650bb253f86c037b77a7bc264063c2390f86e8f07e5f6c5deaa20b1449d3647436fca992d42380146e5762f0043bf9e33d1d24d615285bd4eb81ed506a5b52322cb0ab5a59b36322d282280bc706dd4084a92edf2a02cf5100308cbe1ecc509a920fbcfa050d3e8c9121938a9eaadd57eb79754f613f074432cbdecbde1b28c8870dd13325056ba1848914798108aabd9df3201f66aef26c5dab28830b340f9c297d4ec79f1567ec3f9add0f5567cf1c0bc72784ea23a0c38be78f7613758130c077392b3ce39efff929a4138efffda797f98d10cd279162bbe6662a7bc9d131f3b273e3ca0b1ed72f012db3531b3c253b6867ca438fcb3f92d562d4405c8dce26d1e56e4d95fd9bb2604ece96440ea4d3372d6c26635f10c3b8f35b27d1c8e40f9e64821dbd58bc7bab990fcaeb1c29dee99bf13fa74cf7c9d7046f7cc671176f7ac08bb7b62614bc9f3734256f7ccc709316dd994cd04d83821af461d79656323e6d891572b2729c3d9bf6f45ceec2371ddd6672b8a2f2ff65d61eb67789fc60cc7d71858110c89dae48b0706fc7cdfde7b5f2f1e28be3e8342b515760d8bf40831f6e4da1f5f575400151c782f2f72d63b229cb23fcc08c624835eb7571839eb29524dd985cc64cf1766cb2e756384c823ac283b4cc8ab97fd67159233c7bbcefe33f0ce69f6e59725c0f1c553e1dd141d829020336893b399cdfe9fc7174f059a47a1974c3ae4f18ab97193b690f45f1500fc3ee07988460968f3f7dd5a80cd22f4141872cdf6d59b14479d680ec700391bb1fbcc59b7ec4e2c40dbe7798a3b3e62cf3382a00df441ad48bc933267dde46c7cf172939c7df67fe11dc58dc94a0c41c315903f4c06bd78b2c7ffe2fbde34fcf7fe7dd60592c97c689280f66f6b68e55fa6d376a63878b2d4b93ceeea7a0b5b56d509d8df1709cf287559ea5c0f75aea853c2bca2ce7d9b27aae1dfa17345156cf88335af420e50dcb1037cd7fb13d5a6b8a3061baf1123b16191c74b24aad1e4c0eea1019c618dd913ea80668f7cb02694cd1ef934a1502adbbc7d6919e9c82851b54ee750663003852905f7cb91c932a6c7d36dd1939a4eb06c53bec0b0730114a6504e6f53addb93190ce1c1a6e672e0218725800027165052eabd15362847520db5c2678332a4099d9249caba1b6a2765fd550838fa6e278b66d0cdf7cb9c74227572c67ab9abf97e0925251639737ddb7cbfdc22254f4a2f7286f3fd524aca3052f6e4941c23a519396dd3879c85df3f8be60f39ebc048ce78e40c00df3f91e4cc83ef9f4d72e6f3fdd349ce04f0fd33276730be81be07f0fdd3899c81f0fd532767217cc7f8feb993d38a94463368c5f7cbdb0c62f1f33671b925922c9a2bc9246732774f8c30d6b217ff853b2d7bf138fc96bd9040b28efb9ebb3502ce571c391042086bd98b0721045bf6e20710b25af6e28142dcb2170f23a42d7bf10208bb652feebdf7fa849e7f426f591d41fea05dd6f945387a967de03da1e700840ea465f28fc0e4fbc1afa851ffc8ef191dc8c8c3897cdf83d07fb4cc8bda7db4db5ab64304ada365f25d8429348e96c96f1172e084be5123a4d13d7227d432f938610c9fee910f0b653cbf1383812cdcb296499934caf747910fb7991933d50b23e585e72d05b42e7f628e14f29d211423e3771bf9ca787e2706035919bfe377ec2d1168bee20f974552d63fbd73cc2aaac8d3a5d3f9503b9f372b48784f82a0744a1c949c8d1d25679efb19e034f9ed5872fb16bb04288b76ddd3dfed3b5cb7284f2a27839dd2c40a96265634463de8b64c6121636f52b92737b0d09b5a816573e33d410110b727628a620879b72965785145f5b3e930850a268eacb00e062832e0d00218cf16832e5697c30b567035dce82a1423bbcb622647e9ce1ac5000a4a9525765256a4fa3dcc749d59247ff4cb271d5bbf14228d724b5c6ea81e6de4249747e924f74fe92e2567ef61da77fd6e45ce5ab9bf795a4461b2e0318964bd26f898f473ff6a1281f2b13bae56a4547a7611bb70b9803daf862145a812d0f1e7cf55572a3696dddddddd6ddbe774fa7dbfb6b6f65ba755f38c3ab7ecd587d27be9a536c4c193690fb073e76b02b025ead8607dcb064eeb719ea8c67aa21a51ed9600e4e05705f0fbe2bdbcbca46a0f60fbe8515385bfd0ea869def156d6b0847b7e8bdf7c29e5e1185fb9d5738adf7d602c44c7136707cf15e3c17a60f43017ccfde1a02bf8648721e276c7d553deda732e36f8af3ed8b6097e98f3aa432a561fd19b64a66d994aae8c5e0d0eaaf7889f22a1cc133f8351cef531e618f63f232f8371c8932d8e2df5b22d03085c9cbff3356cdfa421bfa37f457d67ed35fd1bf593db5e258f3f76d8b849ba7dff269de8ae3ab52d17e553d15476a2180eb278a807f3e7dfbaa709c0ffb06c8c70fb0224d9216f46da81a41f5d75b10a0a28e7dfaa1ce4f1d2b8af0611acaf1be4aa44902b6782ba2201f8b28f45b1c93375e11c7e4e1803d6d8d00be15bb46d431f3cdd3887445c2ea6f68ad965afc2a6f9160452a65e225a18a93da2b449f867c4a85a4cce98f4233beb7c16f439b57a96c7e35a3e4acdfd2bc156ffef5ab9bd0cad5df84214d92fa2aa4fcfaf6fc0a6992d8a709e71629b3f621d0a2b5795815dbe63f1b5588821d01c46f13daef967d16344e73fc0051563dfefe5ac511c7e4e11bdfdb5fad26ab5b0b50551634497e86344ee0e4d59f351c572fbeac550c81671c621105fb9ffdefad5d893a66c631237fdfc1f72bf91f20caf65b43aaaf21fe198e3b4211b0d8ddc1afc29147fe44a43cc27e8a38262f7f3fe2800d7d9e6dbe10fc0ec251044f19f662388a4097611f86e38e5b86e5192dbae500a2fc5d14d67272c2aec14211b29869c128ee05d579469dbc5a612f5b4338646b888a48727ec72ddfa7e138793280d69e012d85fd0d27cd79d91a827d4e889d6021a639290b920fa8c4ca97318bd63945030100080053160000201008054522912048a250ce940f14000a76a2445e4c2c8f06226114c53010c6300883a0444000008000400c30c621c2030020601e2a9ee1a4a7b823de2400c56b11d71071f58c42fc010e1315ccab8c25ea7c34de400f54ed528812b331020dea9671e63394e7e9a91172839dc23295c5ca966e8c46a152a51a2057b3eacb163557abc592afa09390c2f5170772394d301d3a738507756c522bc0179ff1523f8c3a7598eb9886e0e124b934e7b690ba6c3dc1f8feceac465e0594db5ac53ac19d906a0d4c57c22e689ff251f928ec580e699efcd0aa1e1fcb32052202999c7c59fb756d19c231dad5027b3cd842969a852964bad8e03b548eb21bf07421127c0eb79ffdde2ef6d6dfe2f73e9dd05ecbdf4f75c6cc49a6691c8e8cfa6dc7801a18d301f1e3d8ad7d5c1d62629e9511c34d1e3e8ea99f3d2e199f6505d800b158d479a85b3d353f32b3f136436a5967dbe8b81c12e6b83df8dba03ad6999ce7fa2e25b47129b6f8226073ac9b843f62ec3d37b9db25b04bfe52c0c0ed4f68a8739c5910c5040d9126aa65b8fca92c9cc44c7481bf40a125abcec45d8d18a3e32d518113ffe7d63158cfe115be32c2ceb5a079cc2620da39dad06c603535321a0482b341c5edd9405e3f351fb1ffaf5e404172aeab110f11fc2c6f5031de247913b11156c8d622211794608cd8b7c90575281748557ef0597ec01854da26453e2621caccaeaa0d749b0b1aca0815a334e5f02290f1d89eaf0bf775276a48e933c596f128a7b518b532ae4ad7a1c9765786cabba6d03bbad4b2814114d21ff4b893b6ee9e018085c5d98ba49433304783365f0ce5bb8ab7d47770aa9f07b562a5fea3fce97c50573ea6b6ac99d3d779082676431f83674b7583821a389a16d4824adb4c01db785133b770f30e4151814db9bcffea9f573e7e43d271d285e311c54950401e7775841255af305cef351f1d92600dfdb4112ba90583eb76a01ee5e7a085913e6a0c413dbd7ec19196eda868a2d4691449f313d323ad1a55f30f61822a17f561c4097abd4640ac07aa724a9911162fcb045140c21a2308431dfc83fa102a2d1a13ce5d09961932f3ac70599eaae5d291386945897ad3320ee904a695778a5ffd21d4441824755407ea9bfa8d54ee1d8eacd707dc196f1c538e0ef464fbe5096753823d9c2f4ab09fe210753e02979bd0bad201390514e640730e5a7a998dae14186198cc76086608be2990c26654a94281c8fc222c193b359302f9218ad7f173d297cf2978fdc8014cfe24a0818a082b3ad32557a6b2add13f82b68c764a5f639e82bf4dac8af095bd9f60162387fa6230d840b64729a501e2e2511ebc00610e55b699ce627eace0f8da492e0dd3b86f473fd1e97b4a89585a5065681845ad2ba9a277f9711096a03b6682e057c1d5c620b24a33c86a5402dfb7323402ed81ed74950a84607985ca43ddaee05a46bd57d4d92478e18e2e53edf34de01d74c1259046bc12a2e8a2f625b90cdc3dbe4f8682001b2c2164eecd0f0c02749c0a757a011c2cffca00c8fcd016ba1370e64d9bd9fc60c9b219f622e5fc70bf46d794785e2fff333a7b014a9df3343b386affe83c1ef0db22f2d990eee036ccd49a90ac4ce87b9a897db42f77ee24a3718e728f36380f40548c0b7930ee0f5bdc06f927a8388187801ad81a894fcbb348532a22929c92a43eb42e523d00e2d52fe64a34f6a0cdf303656248084bfb88cd838256c4b8e7b8160b4bb347c36ad0f8385630f547de1414445421c505b48d4ea82273e7881c6edde94f6a6d4e90c883e2fa5c8230cf6ed07b039d24886ccccb4ccdbe35300fb44056a276397d50da1d5d9f0803553a63d5bc27824418da46aaa03a30afdc2b561e3c32efaf434905453121d45208c31ab2fb4087361caf7c79b8ec71de81e43b2fa581cbe6ef046f312b57047dd3f2a26c9aff05a971c991d842d2770b2f8c39f91043127b30092ab779a06a2e446f01dc210c714fd72a6f85408f1900e5e224c3f93fdc603f1ede5ff02cf9b0f314e6d3520bf8cf90f7ffd9bc7bc52bbfdea6a2a05c7e0ec425292035ac37ec11fa7747286e56859cb6bf02c81d6bd027db6d2433f9c0050a855a02e3d15ee35b83c7be37e571ffc2dc5e0c7b5b10a8bf2dc146f8fbd03a58ebb46f4804b9d6875b3af32484fa83e9d2daea382de3a6cd0cab45dcf018bacae65df06b25741b3c4933458195c0d401762921e4da690680c54de81e1bacc5c8417dd042d0dab597cf0a4b9dbb2c96fbbf80fcd59a9e158c5c083a86fdc2fe98e9a3266ee210a2e4aec2d0dccd67671198e9dfa56c942af118bffab102414a4bf1e55b9c578034cf661a079c70f4e8ca9c8047dbba20f2848987efae3b16c581bba6f3e73b5933ead3aa5f3463b08cab316277a3ea9573539aa357c7fe01c78980b7740bf23b98ce3a8dc4599864e760b33afccadcbd5b6f2acac20eb7b32dddb789f988ff4df588b68f79b177f0e806d09f648cd5028d6d76132ca5a885dde2f0a0c2efe6a634aec4b719fc1f6a3ae87e7649f1bbb98953bd7a0d552449ce22453673407fa8150591242311be9b9b4eb760c9fc2b286c00745b8c7597663e256bb3ee8177dbdc74a730c11bef856100c4226f28b5b0fceca7dc54422a416714d110a33038e5260ebd419de472d6a5b67ed9c391b23f0eda8d0e0e13c7c2853f8ad7be74e60b42cad5341048b7ce81463825221a484799850219533bc51875ddf47b4ca40d1ad12c8178032e66d4e36d40a698fcd8c3fd77b989e1904d78ece82c698671aec10050af3b7c70b9a90401f88bdf88c4a0597e5bb3350e9bd1bfe710d471a578a0cc25b9690c753d2a6b4c82f27ba56bfd27903c0c6e166d6e59733a7cb28d88985b4bc5286e81aadeb868f5077a7570862b9e5ae97127c0072e1c0cebe74a8150ab20682c8be6891675b7794ebe246e529075b204e4831ac836492f87d77061b989554e26afa26625ff930aae0749661ffe6da9beea606804dea0c0d674661ad46817105e03b9159d7a6060060b8ccab806f4877f8b3b2e64a5ebae89d66619accaf17e75d316654bf5bb19cb4df16d1112deb430fa0a1273bf84780bd64d0545650acf062fc76398f8ae3bc7aa98885b6033e6c6e662e49fa635a44c6a3ba37a29b4680f809814bc0fcdd0411a991e2e8b6d7cfdd05e7ea7f61128615544ecca3b7070796906da74a88d08e2fe0fdf6dbf4903918d355a6f1b1de434826a57faf2a106dfb90c193cf29889b4d13e91165325a0323df97be225f24f8cba86e0a9a42b2c2241fd53bcc1b2ece396b63bcd173f9d65e1a006393d69b9bff59aef6988441d95e75da2e475db7aad37a3cc7358877d8d8e1a0c5277f0f9e9dce3420e6d845312a55868bfcb1a325fd8ddb2ad9bd84b193705a998052b2c5a15d87d9a4e44a9c896be2c411d54f8084e04bf54851dd9fb75b2b00d3354577c8ba6abd7bd7e0af30db8c53aa9a6e9dd57c5f4fc350da8c85779e807f74cf6d0da5f5e59c21871c950560e2140fdf0981352e9e90e7a583ab001e8c778d6a27fb72541e0ee09b1eed23a25955ee7babb012de53d520152d9e26035ba940bd8e6d49584c776410581ba25e974d99908fc7dbad144446e6802e4da6dc7e262f850e8b1fb8f2095c8a21b94662b030da423c0a71954357a4478ae0be217666983b71943cf88786ac8140eaff5c5aad4506c4ba2578dfd963d40f59bfb2559bfb67a3acf8df8a6b8107673590112b4363232d5c9f6d9e285c84c3403fd1626504d482f389e611d288499ca2b507ddd7e4b53e8d605af32240aafdc5596ef47a032bd0b0b81a44f43e3c55e5eb239435a4add80f69b2ba62c94052b5757db5871d0ec21afb25b8af069451896ff0bacaf190639592c922e7633b89d95baf5edf43a8dd8420d1a83b52e1cd7396a4d5911ceb46e2d6c9110228fa1c8ec5fa37b4800605ae46042b0d64ba1768f4bc575d42048e88388cd3a41d25db6d0138a1525125e2c2104ac184e408c4d6684d50bd76c0d94738e3431acd84dd4ee23b03b498c2868d0f48dbbeff41a465348aaeaee8d9fec8d15c5c4978ef4e0e9e844f5340f3e6e51d3611d6c06feb3c58bd23580596c05287dc55a97542ea49f399b4b46ce7901afc72b5a75238dbb76e4e3c949d22e57d9d1b9aecada9ca3cd45a2bc5ce0839217f75c9eb6e2cce0303998c1248f74a56da482f5f0c83b7c843e40d22525eff1f91e89dd83104fa7106eab29711ee9362bfe3016423b284073fe8240a48754685fc9f236d7e629d240c7dc2809cf1f93d6568c81bdff14737abe50c2c5520c4f1ae0fcfd551251b8c83fd174ea32fa6d3000055629bf282a50332adf493dbb5b9c27ec2f6c8b511098e104605dda13916f2fdd0052367b9552496c84e8c16e3e80c5040e50795e74cce212454ed77ae72f2b3f415fc986d9453b71088f37f3c5f5b5d8a8e09715b3c17690e2ff764007aae5c448745daba094fdb026bfd886f4201c377fb1f537e0e6eff0fc05dc3e90d88d54dc46b5776b3113ae155afa6ccad3e1ae70ec94acaed9d56ae754972d98c1d991650789b1eb53c738350a1fd703eee8598edeae163998e7f0a1a0ee7264e9cc211ffa84b7d432850f650107dc0f82a79add6c3bdae9ff15a0841cd1a3f0bc662c7098c02f600b28b0eab2d49dc8a0a62aa33f5c461ad20de60d6174435ad1f68129741f2089f8fda9e16e9c83db7891d01f7939392ee0bbb84cc79255bc35cd67321db060d491c173a484a3799e45e747cc574c8b77ef43c3b36daa331bb7e66e3361ca7515b5197041b51466a9fcca91da1772e9b0ef666ea4ca5db290c16aaf7f89224f1355f152be8dc74bd3b39e357280537e95d46c7898b03a5ac58a68ce250b8a11978e0e2af23b964840cb451ce465a2c5937532dc0849dc7fd3045bf5bebda72ae6adfd49192c3f4ffc226a8c07fc304f0d9f82723280cafb478dfef2e2c44398be84c7251dc93aafa5081fd8ab2737deca65192005fb82beb9135ea747124979644638f0fd9a5a5671331ffda8d6d5c91fa33d1e1b68d9c3d57a600fa69f892005adfeded699b598accf5c752d37129422a39557cb8e0fe9a0076927ae408893c3c1e9a86382ba0049f08af8342f1921488a1e23fcf45743acd705ca3d86ddc1057ba8309d2beeb9deb4dd92b6e52845a92fdde348f03ef8aec5dc402127c6046c339e464af788723eea6c9efbb033a95ceeff8a2ce52f52e762bd5858af35abeb2e81821c9d1fe12739d27f4b3d5b49bd095e8fb0d78ef1db44b32ac3fad7b1c1e7a21dc091ca5e459c406db7422ed5e0bfda96eaff7bf09a262ed55828d1380f6c0519933ba796a1d4aad02a2e347a8fa2e920238d10cb1a2990b4816b14d29c2386d58ac2680caeabe030380094fe12aee8f191f16197989b68141c08c5cc7c370fe531208bc94c2be6a00b2603f70935aa1600bad21b0c3fbd48c9b4c3305a0187a5afdeeb7d20ee721a89d7f484cf9c414f4543e36874d3930470ddc5e127e7623017a35970b0750e28f0292396c278e1d903b822382e6e0e002ea17941436b8d567f0b21dd2fc6954e15648f9eb15d2aab68e074aa6dc63056356c005fee4b0183bddb77b5e301ac513195238bde019f7bb8a3ff5125aa0440c13a4c9001b11a8d3b2498486430b186e89d776e35022c7480d954277670e105c7174e08803a8ea58ef0d4c92bfade65b777e31b639ce0c84ee0e9199b9fa9729929e9705195320da24a2ad920bec03425acdb43ff6c3e3f45c4a5158706b9769e2539289b5e2cd4e48d6a24ba53762ac5f81ee8a9144f36a0f02904312bc15276d87615a262adaa04b37a13cff2d596213e10766c94aa831a7dd4efe596d5e4798b252661894c14900affb55d1daa845b4c137e8a483f1f998fa895390cd6cca76ca2c74e813b2f2174ef3fab5a4e47d223119696e8e412ce39fb79a6228e855a6f1bbcc1421105856cc8daddbb67978bc314f1c242c5b918afc452f7a6c255171ab70717e1ea0a85bd8ff6b628d370fc8c30b8374211edab7cb66c50ed826af644cb63180ef6e25d466c3163092198d4ae6cda31ecca72b12bacf94824211e0aef0be2895696766242acb361c5954024f125617357a4be428f06cff169c52d997fd77dea139d335d674b840863675ef8a054c43a180ca450ffc0d9c70fce3c5274add7192a46543466762c435bfee34dbfa7165d5f1b5988ebb39fd0d50d5681ed52f3efbcc696d3190f52695cda900528a2b8984db09c348fe15a47ac4c246c059dfd60acbb451df947056de20cc849a61520f5e44121c26bf5c2cfbecdb584085b35c3d02741058c295ac5e5ca789345091408cf2cb932bf54bc70572f6dfcd25399ec9775c3c6056845a1564443927d0c3adf87d39b9e2cab291e916df7672d22253a4ae34f4af6225988da017809c98f0ded72c731996002c429bd747f4009567c31a6738814e0f7ac54ccc7b1053d97446e62e9fe6d70da4b28715448322f0198b70901d7a4501150eb6fde39c50117541c0ed44418069cb374a57f897c574ab2ccf8e25fd76f27ab03f336cef42409c9d09037062b5001a2ab90bc9c11004bb40f8892e2ab433099c5fd98bedaec6ba60ab2a46afa66e6521b64f3d60d9abe19ec6f4f23009b3da310e110c0d4ff3547338040c445ada1963182ca1c40d260bc9d267f0eef04c60ba462174f0cd76410f8deee79a6ec05565bcf6ee4f26db01944d6b4d8c7acd8bf8043a3f8b3a988b2d6ff4c58fb6049aa5dea872fa2194b50651707332d7a8becacdc34d658f2433117b3575ef0a5daf4ea672532595dad0f24bde8625b7cc541c1d24c7e405bf41f923d33cff94a079b744b4d3f7432a922e38d148d6ad2acba6dd83e13393c974b10051577335a208280fa91bb25b17c319bacbceac87f683244adf25745e3c019079dffee58c8757ab8b3c2baee55632357be3f35ce27c3217207d21cc87a3055e8b020a918c5fa022e273415cf1619085547a36505de091f75492417653afff8298881eb41d78952907e359a91429053dff9ec26e5e5e379d2b04c849c159594711f13a6d0aa3422c4f13dfa74ced44cfc5a29561d8820546188d62968947c16807f426f3b65030e077264ab8270017742edf30ecc2981864e933b12466ef1a5a5f0e81f3eabff4227b62a4dac76549b1e58859ee124ac4737721501af323c6c2beb7f47778c0e1ce18d5a205a8eae214c8f803c95a4c26e49c725cbbd334f6b289498f64f7207a7722e44ffef3d996286420666fded94b2be52e5fb66c28989689a519672fdef99c64b4a62d43d995f0f4b0b2454a381acaf0bd84be006c5c0c735d8ed115c19d8f52f37056656655b1cedd34569e43c83ea4eb916ccc402cf52e82fcf9402f6aebd900dec9d6fd50d0eabb9b008237d5c294838d69005bafac8b04285222d1cc99033accbcd4d2bd20604e4168682a7083be0b7395e58db8a4ac925e5ab2bd4031b01ae508e078bde5760db4ae40965fccc6cdedae0b0aef19d669e062bf324dc1cd765710026ae02a4e80a762255a2600d0594d43d028a5d41c42ebd51eeb3ccecd828a9a1cd5dee69da11e4505fb9767b5cdebf405bdad229f1f64dc5941ba8339eaa5393c3f8d3605d9266554bc29db51aceeea825f7eaae273c728d8c2481b051f80f2b1ea9216ccab3164e58540473978ae83b7af95e90da76b1ab4cd3b5fe8da89fb96bdf37485ee181735411d424720398aa6a1db14a984868585e150b440cfd7f9f7c69c2fdaf70b527b8d9eab9b76aae9221b75e3c77f494ebb9ce6d91cecdd670dd2bb9a546b8b518aef113eeb305b73d9d2b53cdbd51e5968f73d562b963cfb90feb5ced146e5625f7b686ab34c2ad8be18e3f703daf735b92b91955aefb7a6ec928b71ecf35f29cfbb4c26d277265d6706f6ab8e510b28e1bd0b2d77498c833abbc915fd2f52ec8dccbc6d920d4abd1208fe45ce0b250b9b3e95cbbf55cb238771d8a2bf639d7a1c6dd42e662ade7da68b8cb225cfa11aeb873ee87329765928b4dcf7da3e5928f7369e0b9c74eb8ce8b5c5614ee0c0dd7be864b2ee0ae87e78a3ee692c375f30ac2a3815afe9a0d13dc8fe82e6d4d1569bd2b24f7b1e33728f2566cca3bb9d7b86cc8dc190aae6d2d975ccc5d07cf157fce752a71b7a17331ebb8366aee32712e6d0c57ec84fb59c1659fcec55073df50b9e4c7b93458eeb173aec3752e1b853b4bc9b55dc3258970d761b8e21fb8ceb8723fe5c075bc03d70917ee678e5ca7bb721d70e17ec489ebb41bd72177eee75cb88e76e33a73e47ecc99eb7807ae134edc8f38b84e77e63ae6c2fd9c0bd7c96eae43aedc4f39709decc475c4c5fd8c23d7f92a978dce9da0c17157a468dc55a420f775cbc11d38b4e61e6702dcb73b2f77248e9fd38ebbf16e9709fe0e24d2d38b138323af37a3e6a250f20ad4c10d1db8e7ceb386b9e74d0737eee896bbcf1be3def7badcb8833bee7c66807bdeeae0868edcb9fb9971eef9a69f1b3a70c79de786b8e79b4e6edcd1057775ca955ce65e19e7d6e3b9c68fb84fd6b9ad34ae67bed3eaca900c285a7d32bb80f40766e40460d041a37062643f43c9e30eac55394fabc488ac2e075cbd0374f89fc44d96ae45948b6baf00335e7ddbaf7e0a91e88ed90af046e27ac6c681c0755d964b34862b76763fa85d96691783eabed1bba4c32e0dd23d76769d2f5d56a43b83eedad7bb2461770dd2157fca752a72b7a25dac75d746e92e8bbbf4b1ae181d66ff0e68e680accec6aa7da679c0d733a5eebeb2cf6b47feefae8777e946bbf591aebab85b4fd4ad17cf551fc3ad17e9d645baea63dd3a51b76edc553fead61377eb225df5f16ebd58b73eeaaa1377eb8bbbf5e2aeba086e7d71dcfab8ab7ed4ad2beed689baea63dd3ab16e7db4ab2eead61375eb475df5e26e9d58b72ede5517ebd68be6d6c771d58bba7522ddba78575da45b2fd6ad8bbaeac6ddfaa26ebdb8ab2ed2ad17efd6c7baea23b37a750ebaeaba779672edbf73b3b9bb59efae2c5737dbad9b75ebcace55d63f2bcd6eda02b03f9e70a7acff780a1700cae76acb8abb9b9883b86331f6f76556d9ed93fc3bba6446f7322a27250e7c4d555cde4dacfb96dcb63454249da7b8550e5a9e07e1968763bcd423eb70fded1ac9f51432e5799b988b936d48e7fee8cc022ab1d45dc0825c4a6931c7312ffb5327a2d1f779d8266d7b76898486274b65c671eee78f39d3e875fe741b97818a3f033c7b780c6b834027e702cac8775e14c7008e20c7243e4388b2434f0489762df0f239beb30d23241e41a731e16267a0122c8a55d327e912595f0dbe95d22b92eca805f2ac82086590fa604ed2343459ffa3a406a552a2c3bd6d7566401112ad583716b31d0bb980cc86c517f288eed25555ec23907f9bc5a126bf14fa1184a75191e52ebb065ad6c3bc683d45c73649dda35b34668eabeaaeef6122dd6ded87b95404e01f931d389a7501b607b8ddfaa0311dc9819aa210ea0361e95b7fd701c1e02d5f802854c72d004377f424e12b55bb2a376a737dec44a98329af9e9f37ffe48cd1223610fc85e6b06898c25018d1deb4db9889ecd2858d4efc1f853070482af85bd9302d4d14f67c766881ac1cf713de6f713c717b7db0da045ed98f8721124e73e72b5dc395683810e578e946c81f83f0f31aa28007c2c40e35b41c9b828719d6ebcfd42d0a266bfbb5123f799b6875e13c9c5808032874a00302b802e0a30dc3fe95c7229514f5fa60fcbb2760c1a44fbb803092635728db199815b5d6c5402a7c6393077134b628501e24462ddfe0402dd3882917568a5cfe64bbbb92556ebec3874d6ad2d8cfe2d3c3a4cfe06b900837d40ab480d6571dee47ede586ec9822c81a222cdb994541b38b1fcac51d67465ecb2e7d340c31ab9d67146b127d010161b8cafcf1fa59d75804d3b2d7afcf85d6f5f351ef277d61e8ba2dbfa8247af355cb1a8e0f81894438140755ab222c3d7a1bb8215a3e897c41d8add9c99249a1d8196725d944ee2282afc698d892f7e8f7423e61029a533e467295673a8c7c11db0d79eeb4070f04004fa32d590cb8d77dccd9c8b0cd233ab6f0ec08ef4213785533da3191cea2df1239a270fe6a8e5ada0f51a61f836492936facb589d7d0f75946f2d976ab8ae1018d8091f3ba9a0453ee74e7e0c5399be1709c401e26a13eb68f5ca6032e5a534978c3926a4455d2384626dc7f4465222d29a39e8a88b6fe74c7870dfed349e766bdcfe5f1b2b66549572d51db39557594694a26f5f40271a5391e049d816a3d8284aaf6e650c1a13aca4e1c4777c98cc28c958b300b10004adf2357faf1c895ea1ef260a7b4cc2cf8739e909a15fffed9ccc93a6bd6fcf9e7c273d60b71093d94a53611a5d5d705cacaf988ce3f3cfade31fa7478b8c7a9d0ba8462678666a8c03dbca3e48bcad860b6358ee1c6a7662fbfdef192bc1337916b858c26c0337a22353d4f9233ae40b32b61bf84e58c513097ceeb619bc36feb059adca577fa7dd9de1ed0f9b40e318eda88697667c423a2273f479d0bcc50d731323d6c1c5151209207df97c42940572eb946caded622385fe4c7846891ce109fd95a1fec2b4de8ac9669a0c0db7d0c6c6e70821a2919f59b0bfe7ff5ebc8a3c541140014eeb2ee547279252a1744d92e3209d88c82d1c8048c7344d4eada0f81c07bd3381ea08fb9c9f4133b2411562f040e898cf642a099f02a0d2f2f299eab67dc88af2a2d9977ac43038c09f20c1989ed5f0890519487ce0a7c1a886f7999b3cbeb130861bed858866e2c5f31ece0595323164f02e0676516005c501d0f263d8376d2d51fe25420da5450d1aada8d7046da027ad0e5fa06d5b112bd88e6896351a92b86fadba3c84142b5d5aa3bf294900403919f0884ec9618671deba8ed7f9b23c30d7006039463f34b6cc1a01d9e3ea812bd8585540888324110f2b4d00ca2215de44dbadf6d1e8e2d8066759b572301fcc0b28b9309404829b2de02478bf597726c9c546b4110c23e73c7fbca9f420c613f81a187025a7e44804cec10c90c0c674301e4aeda6f5278e049e2e491a0d630f86bd99e3d46f35d59769d88696b0b4a968e43c86dc2c74cf022b839111ca503235dde88ceeb80446a2ed691f14ae40361854eaec05ac05df03ac15aba62270c699b6c6166428c24c6b93c9ec1be6f5eb058377e9ed6f9a8cac6834575ddb347d29f86da4f7d8db63e2a00a0a4e4a030db65a4e6c8e10f46f8096b4e4d00595c7892c8e2f33420bafac46949eea2bee789248be7960c438196724474d0bbc10189e164014766c1ebdb94e314055d29b8add437dacec1313c543acd76563db81fa176c9073efb338eea9dce5b572d41666c235995d815e5185ba41d8a0c48403b449c202a3b60b241d8fff46937fe4b983cc2d8e8dff5b816d577a44e9bfd6168028d1041e1a4c5b952dd3cf35fe3295fbebe634542d9c7ef00fd81cf4c88cafdfc9060052e69330bebf42a049aba8be8baa31bdf7c7ecc8b503c31c787e1581c8d598da6c89c705ffc1c222ed6aa8d57dcb7a290effadf900ff31de2c0fbb676895afa90f70258d0a71ec73059ffb5600249f98780373248ec27fa641cb14354041087718e7078576b11caa67036db36e53f846127a93187621ba24d4d61df20c202b14ff7c466f7500e11e4beb126411ad184e3835b930fc3926341ab95e80ed81df1610aa3e7057d467fb0d52806e3fee0ef9425bb0943794e6cd03bdc6a5056e8145af734d3927bb82e095c01fe1a0c04f6716c95caf647c75e84d9d2430885900184c396e48fcd9e48fdc8e00caa1248ca2b74d6bc29308a17e186b0c5bfc7d4b66aea236d217cbeea07557a4c954af8740f958a917c7ff860500040e64b8c0b62e35ff88bdbce45eb4839f89d4da331d015de665882f0ac6f6ee08d19776e99292191dc81cc629522939f6f2b9287d50076bb5d9a0e98e7ae9b135a0b9c6ac563537917716ac193b93a59241736aa79d33311447a87d360615b828681acaedcda313b45190c70151336b72eb1cfc265fe1d2594292ac40a597fefa52375de516e192c62e2684c4b34b7b5dbe610083db3d0edb6f553274a54c6a961036bb544c0542963f91caf1270f90d952692293e50a74dba8a83b461ee71565ed9c88115c7ccac2bac77a3b0e2c433ff7782c368b7bd986fb227e486322527243f286a4f07fe59712178c11584bec2258a312de4b2664afa1f24acdc5802b9a818c0b52fd273b7ee23e48d7de339c26a333d63703b29c3259d39b903a1bc44613218fe0529a48d14df250de03bf5ca2d11c6004e73ce0bdd0f4c912a87b99261c0605223112dc0b25fdb8364bd2ed34a2d811171ab75049cb83735106b15f46d2a8721884fd3f325828e424fd4af106d0a06ea6b2fe6401f9d02cf4fd49c95454b5a3db6cfb124270c6204084a50a61ec573af88c59e729ecf22664d030463157826dd8c28cabf32faeda8dca59d91a51dfb2e079ba0052835af5455c44be79b089c8547b55477566e4f5b060bd08ada47e5115bfda219880255e71040af662613ad542c26089b555e506b5233b3c7715421a48f8be85131b16edae47f65332310eb610705d085656d474fb04d8c30adc650332f72831e1d7efead11db5af7da7f17a81ad842f8235b6d0d8e229238942a4d59e6353e48cbfb7b2bda8441e4a3dbed701462e5a23006d25e29f03f902f5637c39465a676151b3639d11543ad6fd4f4e777404771404691acfef1e7a86420f25151afb8f136aec79f603e61154d903557a73ea403db29cbf00ccad6910e7dce5d2940012604fd02c06fd8ca3818f3ff60de0b3931d0f63ffd6f64ec873bb9a2d397836092ec94659414530c16e45e59c639b81ee6d1bfd28719b71302eacab1612c01e0befb5dd82276251e757c78ba5335ba9a5c312fa59446f46102d29deb337bd8871b7d227153706ee8078d2aed29be6c3af59b2abaa5e69490366769caa94bd8949e0cad9e7e8e8372f8dc84d4ee8d0501e8d6d7f786f9c4f4d887e6ee126617b44c3da5221cdf06bd198662153c165623142c21da84b33be1ed56c8e5453fc1d4405443348ded5560ab81629b5a91d9f7942fa1394cab3c5aeb6daf7bf0629831643e089b2ae303028e00e6f99874ab9c0b15296c770e354ed06062a9edc6548924aef9f4e372353aa6cb452abb627ed7c0b9b38a5fc5249ab0d65279ca9093548b43e90e3582b0fa438affce7d0f9425e55f04e7459e357ce13b0c5a86231d575df13051474c77f2321ec968e0f13295fc3b1466680acc161428199faa9b686238a89b173695baa0c4903bdb95a0d4e75f8aa91ba9988ea28b35ffeb828cf62d0e540e838936799828be6d82c1ddaa667679324d2d023825d85c7a5970ab9d8f554588f07ed252216a50650923294f19e34073304185e80dd47e6b20a46f422cd5fe5db19f49267c80d61ae5d6408e19606dc0d2c074741359ef1c8a58aed5830213eb68f4cc74249e3176104347aa6a26e24f88df50c2fd6e3a9bed2e6d951e4595482117152e8d8d5baac5763e29fefe3854059158354944eb4cf69849dd9361fbd6ffb44961a9dba68b9b43d2ff5d83548e78f108fbc9490bf321c0f82428180ddd87a5677f52e7352f5106c63252c6752669b831fcc6aca9e09f206cf581d2ddfe919e3edf3f821f5ad8d2a95e5e61901e2426dfd0be66aea15cc66e664c40c2d5d2f1140d4e536977bf9b14da255be28f1fdfa271fd8c8a120d3f584b811b5e31dd288f143e99390df0e93586a6b8506f963cf80c65e6505cfc9f641c73978497965ade8cd4ae090adab87873d60820a2370ebee60258673a42e983973617206111c2fd160a5dd3c181efc6b1924cf0b80f6ec18ca7260ebdac5c1cc13814a7982bc7dcea17ff94f6361250ec1b34127d4a27288d402805864e1a81cb6a1f97d108d4f20ccb53a3b2401dbc68a4dd213a70b9cade1e7584e55cfebd014839af1ec8fd78016e2c369799b9e1ae5276e8d9a28fa6d4b85d48e496613202416d681111d6851f847089616584711b16ff0aee35ea05581c2211bc7e6a084057d31d85ed911abeeffe8b97496a3c339405a60ae0fac7c9e7377228c3de62a43874182330ac31829b2c95bd97807de1f9be9546f81cc30e39b670b9e081fe176e18c3b027b802f30acfe20386ca6b0027e3964340bdb521b5b2b39f65af6ca236293e60e95921815d572af25a7c5526e48cf1b2770bd6be714bd50446c16f421e5b02abe41b953baaa13156828ed74a035c99159abe6680f2d080c1b310dc55d97106267cec57f8c81c4e0309a221bef785af42836197827682710585b2c85e28be38ce8509fb597b4997049aa7a0064909fa1bb8f4b7c1024c40ad344badb1bfa6c2e42e840a618a442a0180dcbaaab63e49f001301590c921bb7df448200c90af1972e6d5cf8229340cc2d3ea22746ecc80684fa8116a6e0238b287467b23bcd0cf498a9e33aea60a90b381703cc12f0b9658a5c8dac84cb9c3063baf6dc61f56beebbf5879aedc629d75cc5e8f5d659e64919eab78607debf878293f59e7d70021a761d979b5080299a06e48340b562afebe27452ad6851082f3d8c3c1697581df982c2aa20ea71569701dfc6fdc07599c192be8e0503939081d75ac0e64159a9a3b203f676c4b43fa9ee685a434acccfd20d4d355745d98a50c17d86a683b5bcdcafdf40afcd2e8d408a67cb3906a28b395031b6d79509400f549fde54b52077066a0ce86198e8a906c11dfd624a994ec6d0f39853a1aceaad569b265a73a109a8659a53ad4bf82d5b173604e3d9c1595ad18f7f3873abec579c3a6ee0350ca616ae436ffc20d0273a5e38a1ca9352fd10a87ade88f4e7d54e47068c37ebd8da0b30c94e85146c394ed2dca0348e5563119cbf4782135079092b51c046d58a5a0aee3e2522c88a2a958d282c9abd84d2db814d3005098e35286679a0c104b4896367df22a4b131ad26fb93042838fa5323ca8e31bb86ade7f2e2289a9e679dc17714f4f91979d5f90826ffb1861d7990d1e1cc9e4de0b808f27ee1bc34c29c0a0f49d9d16297789977e735c4b94db513174f5945e65147f771f9b6d7135333e91dd8df866c0771b2cc3a75c2948b2f6389d7e7442f2a95574642910bb0f42cf435148be4c0440d2464a0f8130e880b4b1e1c2b93cd09b1daaab771c957d70a587f2b33d151cae2109e078d59e0a1025c355d1c1007ae70e1a25a19ad15356d31682de88015276515f3c934be7422653d653ec9c0e73e5068f3db1c87a1b30c05301601b8cc053fd90e9b4f7000e228259675d4857180b5244e59cd16e162c10b404b09da65a33f88fcd00b00763b1133e28dfe4ba6ef6697a18223cd3614f5d414889f26972d8751fa4d195b242f862a71288b312602bae01b14e1188ccee32009e0967fc1747e31fb590b015e0a940d3718785669a97469c367b0b2cc5c16993d792fd6956b61788f603d43b0245e862f0f6b790e0435eab92bfb0edb0fc9d4fe62f8c614e94f6245223d85dde49d2067ff7e3a48daa893c2fe4b29564a81069515a6cdcc1440fe2741504e11d73f331d68a6f601d4676cb040c5e057efd84ba0f5110706544e90886b960a35838168eed2559560489701c925f291fc6f938144e8161c662150b5c4b546da5ecad90bcc2a7a66dbf956d68ad43e9461674e851f9de5415fd6fff13f1d98c94df6e42c8de72ef7d0f900f051035a18b6ec212b72489647ae907ef0c78d26964b94433dd1edc2fbd06bc2b9e92dd69c983a791911ea474d2e549a483370aee93ee6a4607f74b2b28b8e3a78494ad6e262cca481d0940ee3a22e6601065b4f7edb7a37997b399b0c6dce56e5666d89445bf1accab1b7c4d3bfd6a1315fdeaaeeb3a39b2261cd36874eedec89a6aa61d5316a61dd34ec738536dc471262040d30e0ecea26319c4a62dde83bb5610a4753fa4a01f529087d3b12ce9f570b200e6128d7e40a2cceb74484111d65d0f29a8eb2105cd9f5a41b044c35deff4c93148d676b25839190198e7cebcab9b7e897c445d701cb7baf1e917d71cc7753a13d6e75638ab9b9593d5cdeaa6637476a54df4c3825ca2ad703a96ebcfca4989b6a202f74bb4faf3d331f97e579b30dd4f844d98aea7eba94e2842d733b39835ce1a21f500ec9ac807e7b923f28932fa2d0230af4436374e348124043f3c52701c87038a17614c39ee492fff3a8c577cc4d44afc383fa3cbd0a9006c70b682dc99fcc25126c12e05609e2167f0744f123c81093cf884e31398a033eda4f50b07a6a62b57a55fb2154434d30ad20f3d746742efd3c844774682c0860c3632295a4244db696411462e8dbc00a34ae67971442de5b07ca56236e900f64377b97dffac8105739a56f2d6d629b507ca54e10f07c5750b2bc0aabac9e22853591e3c35d5ad37ac374c01e9d65a5de22cb10b2b04238b75b108c3ccdb4d0faa851ef1f3cafc66ce61eee4d8d38170e522a7f44bfef61e6d554b4b476bd93a5aec6997d369f5ffabd6edbd1904cecf3380f32d1ef4f595de567dc474bed26392aa5a995959379df660ddd54dffabfd67fc70dc5aebf2d6e9fdf89daeec71b192a705fe3bf8b62dd0f3aacd33b87af42bffbdf8b1a875695acfb2a68dc5bae0888efac53a0bbb9cdaafaebab55f2c972b33bf72d6fbf3b1ba2f77f9cb690f89576eb24cf0edcbabbd92c62b2b2c971f0e1837d509cba2e653f35fb9c9f4d6fce753f3f39f95fb90487dd6d3bbd79b5ddbad383358c6747ad32b0ffbe9f29b7caccebae9d5e5f2589df5d565dd68bab599f5971b714ac274eb596eb22a559ec1a6cbcfc7bc2dd6e757afa7b6c5bacb29ebf260dddece607ad635b15e32519be95597d40390deb33c7e3e4e375d99d35757a6759355d2d8f46933bd4a1a9f2e6dfde5f4ebb172d3e7c7a3754d37c779b3eba7ff4cfdf3d364aab3ae26eba6d7cfd369aa67ad6ea6b3ce9b39716efaa4371567eaa8b7e2542793759494687ab5a8f9e140dd73b9e7624ff6f52ef677b9fc7ca8debaab5b9bdaacbde0888efa65734c6cba8b3ddde5bfb55fd63e7e3e5417f597ffc67eb9dc883a0b75330d9e279b5b2f7d65ef5336cf60d6634c2311aa8f5f75b9b5372b697bd3515fadec51a695b358aff6a7bbd85cf112bc5aa9543753ecf2ffbab83c66ba58d42d0f3fadbeba50486cba355d997ad6ca59f52c1a5c75486c33abde54ed4dd6e52b9b67f0ead6f270b9c9a32393655d556d5cd9dcfae82a9ba5c0acc78f87e9e697b7ae92c6acc77ebd641acc7a4c9bacc4281b71cc64d99553fb7d6625f8e53cd8bc04bffcda3cc22f2fd93c835f3e1830ae929ebf5048bcb272654f937ec9b6e959bf660daea65f58186186238e03689a8f3d92a75fb2070420fd14d9d32f39697000fbdc43ef0b09bd3b749988ee6bc288003ebf262d577af35ff87404b7def4ab49a667b93cb358679df5d9d1fac5baf92a168be5f2d53d97d55d56b706383b9b7ec97ad331fb97cb0f91ef5a1e551c6d07463269f4f28592f47433c8cdeeac5fb2c6bc5c4dc7d984e94b934dc3eaa58db53609ad02e69e51f96ed26bc0f2ed24da88b4e5561aa77c00b0d549c3e4415b6f7200bedecc21b3a3c51e2f663877345c8a403b5438118176707ca809e019d470c37a9c2b97d0f4ca7afc70c4f4d40298b919379b301b4dd2b200e67a63aa74d61944988e1661f2311a841694000b2c536082083369b16301960fad00ac308830dc65b501963bc040c0dc7f730d5d75edbd71c2441c14d557f5e6aaa0c200cbd9d96092207736587e76b4d05228dcaca37426790213aae0f80431cc56383e81093eb8de441b9c07a20c79d904a69f338f703db548547852d6b66d342b81b81957c345e1a4704d38271c8dc3e1a070567036126803da6813a63ae9969677730a38594827ce03d266d2fa358b32e42bad4e6cb09cd23001c0893513ccb0e482acc0f23a3c4e70ae3b5892804c00044c2717d4b1587f815b0d388f308e9e451bdd78366998daa4617284bf6bba0704584b77b8c31dea45a2c2d502aa16af14d3a9cf9be56c6646f4d0b9104859bd890690920be06643e38258979fb4060d6093a6351b40b05aeb52a1d45b6b7b56bb8a33617f06f16a757b7bd62eb66baacbed9ad2cdf53783aa9b55f4a20f07a5d1575abf6674f59876b19587e672e9729b566fcfbaa65fb26754661b6db3196501ec0301d2879a00beea4f256dc2240e5a5f37d39d40c509ecd994acb3ce7a0fe87aee197d79bd8936e863f5abcbd72a8368c35ebeda20de50d9f8b3770fcf1e7208cb7089f1cbd178a63ceef1538249074217418d987b01a22e4beb9eee844d18fd7078b7f64b85e777977db17994446eb43a25d72aea1bb07c67bf5f9ba94d46a2c2f3bbf4c6f4cc719d7c147900a436d4a6a98de8d5541ba6de4c9844a2c2f555e2d119c088e7ada6cbcc0f814522d14d364b6c6229e9b0e582b82aa13b80adb7e64f079f6bcbe5a74db4f14b57b4f1629f3d15c41bd6e5990506f186cbe85ecb7ea7d6dec5e5ad24a6532715a70f205f4d4a2aae3dc0f24922ee4f47e3bf65ef7a71a15ccbb6b4de9d22d1ba4f42a1191a9908426f59d7342dda505da6a20dd4ead92341bcb1ba643db3b40ae20dd64b1b2d73332ce557f3abb3e8596d5ba67a4c53c1a4b36cdd41ec417e65ab0d620ff22a5b716ca5c2562851863cb5d3c62863058f9e30b3920e7f48ccfb247c7dfc84f4c3cb847bdf19d14510ba394f0c814d974216d331cd62330bcef5c6c3b9de6009da19a9dee410e7491b02cfcf481977cf9b9ff64907424023eb53fb247437d07746ca6644c024f4216434b2cef124f4799f7480097726b2f8fd68bb81be332de3decd249e7750d2e179bb59a80e5c105785d5e1dcd1b0e42e93ed76a02f0229ebdb9a8fb2ee7000e6d8b3e3c784c9783361b8a00893974011268fcf00069cb9a089b3042af1845a7a10c8f1228c5cb2c1bdbda900e7b75d35614d87c805772f0a7793509cbd28360e60e80b491a672f8abc2171abb260bd28ede9e8d83017044e2f4a9745b34212a815242465a1db12d1c8a8c8d6a65e80ef78265084f56bb8d7e0039c3b1ea0ed9e159404a0a7e3453103a8e2e200be6423b330bbbb95cc1cf34fc83bcc2a746ea60d8e07f299339f1ea09fa06e89b5f8136b5c57b91a0af578a34dcad117a58c2452a90482a615a09f2029bbe7a474e3644f4abb5048d4d5504824f2bcd1f7c912f8914a251034adb0d096138aaa42341522d5183c983ed3678b21e7b394f231f3724a4eb66cd9b2a594f16500336d1c79723caf44f20018efa4624a993ab336b39850261513a77f26a5dbc6715da5b5ce96958e368eebba5a43dca8ab35141289bc9048e479a3d1e78d46df472295a2fd6ab03c69462a81b309e8455bb145ad678a4e5bd151aaf414368dd34e7a5625280b2e7a7ebaa865b1239b482a248e8c22ab9036b289a449db3f3da9c41e1d12f3c8ee3929dd64cf49e9c6d18de3baaed690888a44b3a5a8aba19048e4792391371a7d1f8954fa48a512089a565658c2f07442a56c6ec1d2661a589e65068b178e74482c5b4e95d427d186a1ddd272c6b991faca308237050cf104630cac11668643c0d868883611c7c510ad91bef6ab435d285e7433c5b77694de1aaf7eb5119e26bcd8eeb5d95144bf9a5e197776ec903166da1dd18767a7ff63a731c891c18b30320b0e9ef7e208e31f9d69045067eb76fa6504907652e6ec76a49452fa35bb2cf0943af30bf0ad1c1df14c03485fc299b784d3aff9d24dbf66e906a76311aca204d42f6f67c2946ebc281386c526c2e64b37f371b2d8b0d8e0f96e7e9ac18b72c5f5a24419530b3097bc2878bee4a46162e359baa13281a28cf9336151a28cf9c382c3c9c0e606074a149d9d1e9f1fa0a0190de76746b3b989a2b353e3e9f199d16c6e70a000fdf8f4f0d46acc785d05d68e36e6a94dcf4ea53d383b95e2fcec54fa1365a7d2283168a7d218b453e94eb552266daeb31665ecf4fcbce0a13327405066948613c50a29b4894d500d884a152020202ab486d2e88cce78ea84f142052ea8411a707c4bb411e78c34ab6e40b3a075ce19adc5edd29ddaa30f7ae94dbf3a8b7eb5cdf6eecd3d775dd73d7e56eb5a4170fa445853ba43b3a03b348b8ec5532e521c9b283bf1b10b20bd14caa538fd8a31531c4a45bffa51c695999e42b9140a0e8522590066ba9345c7e816b8a90740da8da74f0f4fe705af634b74da84de507182b2a13854c0c435d8c42bb46882fb7416ea7e3a96a9cef4a2a7cf8bc6fa193482b8420b2e701f0c75d3677631a9f404a291d3c26b89214c0c1a707c9d9206d81f0ef9188ee3babb65774b7941a01acc2ebcc604154c2e80de109a7ea169ddeaf6fa5a2fad15a4afb7eb1f4186745dd7e817fd0c4a8b881d47bf00ca5831c77588867e9cc1ae06f7edf42c520f66f4abc66c06a67748bfe865b6d3f8910570b3352c121898ab616734c77d068d1ab4eb90c0c0dc7ffc93d217a63370ed4000d2378e302827bd3078db238c3c79a2d4642dca154ee8c215bef8766a41d0a216e5046d0869e1094290830a07088b1d2a80b05842930fbc4459c21374c25082d28ecd0cc430b2a1839316166d4a27940de70958dc98b030c288078b2b349d5d937772a1ebb818035002f5eb15fba663d149943fd18b46d28265133a92b62d921813c99c375276ef462c2bbd199736349e2bfe41862a1f0c707933921649eb57b4f1a480f459d29a489b7ecdf20c0c3ac3668967dc87771f0e2431b001de7d380cf02031a20f6f8b2406a641e3870fc70ff7a4853169666c7eb8d7b66dac154089bb091060d3ba494d4402cf4e46c90fffe1d600fb07281acb2b6beee8e33e1c3edc3380954efa157fb8011ed3346060d912620965c2e2f3084b168dfb708f46bc0f56dec800a441e331cdb2dda461f112ca84913f1316afba19cc15771c0f5e930031261ffbf1e5838ccd37150d8ba737ab6cbb40bee2dbf60ce22b05f1153f001e1effe241469e3ec6e86100cf8d0b1080e7c63262bc8701bc0001b88c7bb1375923671dbb72d6aff82c0d60b3c406786763a6017eb801ee0562dc74cc071c1a3ef820658c1f62607a7fb821d8aff89839c346cc834d42036073b300c70fc0e68e018e8f6173db00c7cbb0493a5c009b631901a1cb261dbb400ba6b54dec3af984f5c8ba52b4c8cb7b81161cba2daa7ec599aca95649bfe275a25ff14d20e9d871fc901d3e65a83af8990de4850784c50c4040e9ec0305d5e48d08854a951a2f19775e59d6ae839a03789b68009ffb076f1dadab4d18ae1661db375557c3dbc6d5f0f60863bb329e0f0d29249542d28ca49034570a49c38d241a52502388981a33ba8819346a04d1db7629bb6f16490bee445b100dfb70c89037227d9d48da981a528288afefafefbe627cef93ec8f0d7f47f4cb3be2c787a3bb3b9a00e617ee2062ba3bc76d31faf58af116793ab92b50a1127d006b4968820980634d8a0ff6628763b38623783469432955b2e1beb4b192560538a78094bedfd500cc52a7bb81b68f47cf704bb1dc61f2ca260d13e36d8206609fd24b4aa3a451294fa7d49132ee4c29757486d446b7358ab52bded0f70b2a94463a49fdc4c4fd98963a46883079f92a602975a28c199ca10e38c79e2b7c8173ac4d2e807d2918c0185bdb43af13a6b5dd1690eedc8598a0b05282d369ea837022d167eab9d3c83c54a509727abd3339fd19969fde37486aa6f5d46964b902d1c838cbfd7421a2d7cba45ef4d3659213e474ee51e6d55315bdd5af8fb256df1690d3eb859c5a4f9d09cb4f17926ae50a847a7dab1f7a78ceb6fadd55f75a2c2c9646d6627df5d6599e2b50ab9fb2a7148bad41a15910d5bbb705a2baad7e8c3648785b7dfae5f0e9421554e080339bc95a57a95a3432d5e9a29f2e7aae40ab202ccfa291ad52e79e7aae409646964a71402d2152c69d494e10d5538f3226aadb8aaf473d755bf10a41bd1e756766725a3f505722ca8470412e48c30c66509bcd64b496a12ec5ac9e04059c30d58449292618c214a6d005ea7e807b5659201a994808d702226522eedc0970a62c57200c346141135681865027acf5234e98f4a191852c8d2cea20a06647166552f6b233586400e6f8b3528219fb768c724b0118b3d4f1e29c72243f1c9236a467cba2522c7f9f706feede8c534e52a69996e2e0c49e19dba39c9511e651521ce2450982fa55a55f3a32c4110b12c401f717607b01ce0a24e74cb261242f1cfb952b10952b8e608367e0788511c0803dd944cada7334a2b363dfbcb2a48d7ac884d941a5ce953ad18611628c72c1085438e1091ee120c2489ddb032cdfc500cc922669d20996ef60006eff74d85c83e663342854059b240dcbb7d715a852a9414052475aa123c50a208943e5854b8f3d1ae2c93857ee106c02ef03a4947ec92b75b20016d12ff91820c4d7f6211d7b40c7f2926fc3e998fc156bb0811a98301281141c2d7fdc84e7d5d08086d9c265908916ecdd03028c9e67e7db2269c19ed7dd80b902e10a34616405f2ee9db335b4619e777ab1d737d360cf9b524afc913add0b685ff17305166a8073ac7d00f4de6ee89870efb8d3c838cf0db8bb2d212226dc451fc2dd5610aee53dcaba73b7e55d2052c63dcaaae84aab2377409d0993f167c98ef8137f7a6aa1104d9562a3d92802c080c5e3bd5aad56ebee6457819bb33af2b895778d6e01d330607a064cab8069e5ee8517c0d44b07dfb5e6d19936a7b3ac48a6c73967b409b3ba5d53ddf006fda3d74b67c2e86b054195eaefdac94659d728a5949abacdd3a1a7f43ab474f042a9a25f40a587a7a5b33c8761f8f0e0a1001db39cd61a86b508a30f6f66b112a85f3f567ad12f4a29787a09c4622306492058ba1da514d4508274aae8944ab4444ba552e9f2c351d2a9150455aabff4fca236ca7abebb6fad459441695010ad51f0a427c0db3275dbbfd3cb9b09d3b509a33fad45e947d9b42df0f351e6add81f3535deb9d78c5ebb36616450058368775ba677db6d994c9ff1cedd16f8eedc4d37489d19bdde16785b40b8770fc2bdbb3339e067e6b98337c8d6df24f6e468ce7e4c4719cd922665d084119d8e2e3da594d6a83fef805e4d4c18fd8e09a3f4ca8866558a4a23b9b008a0a4f2c7915eb069adcfb74e989cd20d9e8e88655f41072b6055bf629c5044386ad18406582565dc69a2433d1cb568c2634d386ad1a40b58f545d738ee8c600d384619dcf784bcc3485a1a65c47b029b8e04f40435787ed4b1dc38ca80518b265436dc1f492bb13c87a3164dbcf0ba108e5a2041047584a31627c0a9b5d650488b135481f38846d3a85f518b1b7c00abfa25e38d2d6b1578e6a34c56230846988c3244ca4bf0134b30e551a3123a148cd630fa62a486288ab245ef038642e2ed00a061803a63c25e3d7f40b00570bb63c20c99b09617899c4d189211961749bffa4cf494f2b2464a7939a36189635ada1096b38e491869232f234c2443116290e3843624810b5ac8e4e5908e49d97762098dac73ac82696411ec5e93b389628cc9adc2d8a6cda17717eda8738755b2d91f47fc38a225cecd662423bc7dd28039d6f0b6dd1faf8eb5e66932f3c0e89e62fae980a1ba02d8aa43764c981958505185cf5b01f87ec987dae38137e78f1d47fcf41ed1af8eb7e3fdb10377c76db476dc46e9113ed80d21e8c20c5d70f1332905429278f908234b1b3cc3919be1685ba23680386220c0f87a031068d650b8a08fef8aa913f206f77e1209b3fd39ce01cf96cf9266630f7d0110e98d119609306f06251018f528a3e100e608043a5189002639a261e44fc3e27b40022cc4d0b32e82b89052344dcfb913e2c15cac609d308ea2012c79aa09e354f766d60a82dd639ae3388ee3381297333afda6398ee3388e3379b267c2a8ee355def7a2bf6bbc8920e5ad1a140810225c4711c672a55903bc7711cc7d16f37f74de44ee7c2e7d3e9f48d3b71dc893b7127ee278fbb67658de36adbb94b9eb979db4639ca71dca54fa41c47a34928340985d6cd973627fdc2695b038212089ce837c7711cc77d49e8132dd39fa0b765aa1f9de36e6eb6d0bfd7884edab8d7da63ba3f4ab7455faab7454b0ff2bd74d3c1e6a1dfbb0b21bdda16bd6dd17a96775ff9caab6569d1b79e909846dc3ab65776b87377029636e08fee4a44597767728288de7da63ed4dd99eea2c7d68fd29588b2d29dc931cd84fe8177467452676b7268200052ff5d48fdd79dc9245d26fdee600f277b3077499b30e01d3261dc4b3e95f403d2e22862d9c3c91fcc4920ccbd6b827be8d60ce144dc435ce5de71dc0cf1e0080029663db521bec684998fb23a61be8f449fad60fdf7faafd6cd66c983bb9bade346563561dd3debb5a59189acc876d3fad5754ec028fb8072b2700424d8f45bdba3acd57d462783ee4debde75262c6f06f1c402b88273e48999b0ee1c19c056907e6d9b09ebbaa6e1ae072d6021238ceecacc1d2a297d81978446c1f35efd78646d8b29afe491b53aaba4b2d63151ec7aa90c121fe7a784ec81021831e5b0fc86ccf886489e20a5efca9ddb0ae2fdfb776746d7bb733661d3939f10529cb05690ef1e8dacbf20dfbd3be3fdbb71c2268e8c2d65af09a3a3ab9a30ead5e488dedc3638cb9e5690d83369645edc99302d3a3f7146a447d9f7f94ab2b236613c13e6d938e7ac86656dab5a98618695346ef108e57e28a6ab8d78fed8cc26ccc489b0d95d1c354c81b3accd19a5b60784ee58dcf3f6be73f3d1dd39b7b975dd6bdce846b71ea29ba3b74e13781146fe44331c432800e78c5267389ea7b6132794099b51ec066516a5a14c98c9836baa9dd9a683552a108482fbf2c321abf79ec267134a0198e7bf1e75a75fdc8cbbe16c381a10a07cdd216d3b3b554abfb6a00d288358fed49d8e71d19b4ebf6edd91b2f5bc01cc55677a00cc55a7ea744c4ac35459f74c98f88414c8fa1b940943371edcdbf3160577de746e122520dec420b90fe03e4b54753829a328dc280a27bd1004ba61544b03ee516d0cb83f0fdc546141e44c80475e3408bee3d8eec7f345f9ac28919e4ba58fa744b25f949eae15046d4a8f118664bf9e8fe79bd2afe6e918b791e8f6e9f4abfff1742c7fb5afa763f9cbe29bf2d5b2f8b8c0fdaff67df78917412bba273f21a53bdce10e7690892e930fcc8b3ed35d74bb8b6e4e2b5299674bf4031265f354f6d9f0c4cf66c27c5122accfa3fa783e3b4a4394d1af767486d8437f549b30232f463f5ec03dfa01a9d03180112791388f7e3a4a5fa483fb7305328830a308b361419c2f88b1ed6d831b074e0485500066793371c47192629411b1c019c614f00d964d4c987ccb228cbe329fcf941daa09db8cdfa4a434cecbaf07a61df1b66d32cfb77860f90d531c3f1e7236c33b58dee901f00d607fbe00eccf10ccd9c4b491f5b4c15b17ce135bd56074b3713bb8bfaa41e66ab8dfdc1511d6e7a02801823905a4ab9b8ecddbaa35de47d5036281035c55f3b5137b88b4612a5ce226c7d14d6661b333879b3747e7dcf9698138ec571b70b301679117b87f7ebe1eb4523380e0eb3d6e44bd876c7d7f40a48cc3b1dc4d0b8894d5b784dc7a391b9c09c34d69587fd43dab38ca4d6918d2e8e651d8223a77330c7a730c9c395ac3906e2dbd62880e23a46af1c0b0a6626f07229fbca26590236a0630f4d2bd28bbe983885ecf857282d48bce2487bb4144af2fd10b44f47a21a25b2f2474ef4cbc87ce247455ef5600d67b5f6101cc229f19b5067eddd0c107091dbc10d1eb6b94c529e324b5e49548dce21ec47be9f412c7b43c937ad241db92b7c55d20de4b17524f3a939c20a4d73329dd3b931c7a83d41d13d63168c8910b7095573bc0bd0202eeaf8c801bc7062ad3276fc299309b0987bb3826d3ecc7ea314daae205f0fbc1bd7a5ed55acf2b9ed4f3aa67e3563ad8e5ae6e5aea76b9ebb16ceaab9f9fd5cfea075cb151b6ea9149d5e9f8e0d54fa7d3dd0e6e7a49b426fd9af5b6b52cd1fab56ddb569a918248554841a42052958ecd3a16bb0f07c7956c9caca830cd4cb390a9d61fafda28f3a81940efd574d58a45cf609a99662c5b53b372f035a97fabd5ce6a67b563da9930d1b473b3371bdd1fa6db9237a96e4b9a1e04bc69e5e0e54dfd3b8dcc64f26ebabc41c07f77a65e9056b3e1c13da5d70b21fdbb957426de4b3f6ca22c7ab41a6f76454013d6a2151bf4a3c624fac17df08a7c26cc34f35efa10ef7ec877bd830fe21df44c2bd3696424d9f6fdf8ee993ceb79b5de7b907aeff29e77f0ce785e921c32876c0191b27aef2d21dec183b5561034cd5400763a67991346ca443ea7c7098312925a79ea4619ad3fb9441bd13280a593ee7d3fbe4b0bce306dd1d5cdcac994867145595181835738b8a1e0bcdac14dc2a20653c079b505eed594229f2e3ad640b84bb48e65524df483ba2dfa286bd10b44ca56372b9c4e27bc2cb725c4fbca572e13f0dea38c7e43c07ba79f12522623d5a28c7ee40eda48aa4d981edc4290946819b86373e5a9352b65b30860ae3f98524a2f69a75f2d02c25d75ea0e0feeaa5305508792763a4643a49d0e897ca28d30441bf27d911824ccaaa2016c839cc3ea66c27441a39b9957d27610ced4a6d69bfe01691784bbea4c9828dba9e1e689322f34ea50d029908257386a91021cec994c1f8e79433e8e21cab0a230c41efaad1e33cccd709227645dc5e0ae3c8eeb4296d36844e9e9d4221961b9d2398dacc0fd500a66596581fb31ca380198e914f79a803d0514153fd1ddc10e332c6f670230531c273a1a7768ca5028140ac54aca3478ceb0d78deacf8401dfe02dd1543f2bb582a00e9691ec0a6775530230e2d68f54441b33832e17eae61aaa70f879fc8263ad0926e06a2dd4258ef17a9d7e184875009e0e83c578758a8e39113ef52d08964e9cee7a78fae138ddd0e6970c92183895ba32218b540588240696391d759930e4d1f296bfd84c835feec5d81927625227f24c31ebacf0aea7ac4c98fafc72a8fec7af872a75737828244e7df51379ca121985b6e59e17da765de276f5e9a2eeb239860b74852fec0aef1a005692bac4f3ebb1e1d4fde7d7638bd2afbbf24b8b0d1f3363fa642396f8a5dab4622c084a46c2265b15fddabeb2ad30c6b6c2eb85193c1a48e4abaeb6b29eca66d55b41ae44ebc791b47a1c79115b835aadb73ca681308bc5fafc9278cc5cd98883b4ae846d3d09aba3f596d659f68745a27a128f1f0e225726891749e2acd4edd45f6e574bd9290430751ddd16315d8358d65bd9bcbaea743aa16e5e82510f6dae3894b4eb1c51700b391cfe49badc825d4759255aab873fd9273aacfa2d12d559aa1a5481548f9808958e1101da5ac29696cfefc763260b2b619f588255ff6175a84ee43e315bac92c6495c278afcc863fac51a69dd0b14f99177b56e0b1a68241eb945de7a09835a0de05b6f2fc093cbe5924862e053abfe7827d5636c980ad431ed9d6ca6c13142d7db2746eca98922b9a0e5b60287ff239602a39ee8f06fce000d6e7911d4633a3cbd75af65ab4ffdf95000a2de72d495697991cbb4fca5c8eb4ffc7ab4bc4878730c1cdeab36443cab9660d7979c088b6d8c8ded529d754f6559b6d24232a035b9d5267e40e1538f333c2afc29fc63bfc2c7ccd0b69eb25965338873cd4862e096b78ad8d61fde75efc53e89798b8df9765c7d3ad6ba11d72e5a3dc2bbce9084d05ee0e766fddaee56ebd7b665d1af2d7c15a1ab49c3d0681d6335617d4186c98550f483985bbba83e51b828541886611805968c69af04b5bfb43430b10ceb297cd63797453db4dc4ebf56b9e254eaa99ffebbec5d96d3791273958d0d731d65738d9929cbbacbb2beb2d9759692d9723dca58b7e572910024f2d2aa11e271032f5fdd4cf1eaa60660a59deea20198bb1a2dc7b7d327604763e2c85d577e01764ea6e8cc00fee1bdd3e974dbb83f1eaeabeed1d16d635510989825bebdeb70a20dd7b7c6433cc61b9547f6b07d88cb1b1528f6b07d7bf4b05df225acea31968807b1a9d37f4fba96587c955de244d898a76c90bb6c632e8042355bacc28e7bb4fea82ee3baea7fa6f83eaa6fa3690650e2b01b713bcf9c0eb70302d0b549e1763a5ae5e16a461e76352337f2303442e3b6e8d74684c859448e22f293eb7f058a3236aeb6713c1d73dd8dab751c0fc7c3d5b82db81a577389baaef2b45c099ecaf39de06b02e60af49900cc34d8e5ba5f09c05c817efcf88fff785661da470230fc6860f86f0460f84f0460782e802e9bffd491e7542a75247504046f3e72d5bd23b60655a04aa502a97ec446fc7d385412bb443f47aa004f3ff24cbd9e71743afd72a01e1ef9c91ef9701cb9f5271201aaee3afd7cb8ae72fd3f5919d77fcf65bdd1689a016c1da887bf3d3d7e3d50d97528243e3d75abfac9aa4e7f8c38f7e1d0e1c9286a92ebc628c3f598ae3cae9b759c47a659626b96dc1c1d27c2d61071738a90d161848ef350e978c42ad5ad01ea50e9d071eee3a1e3d29831231771954c113b2ca907601157ddca73af88225245bc88771f8f226e10b74ef96af46b7b0301ac3c754ac7ba2d442317ea9e6aadd29afca9e7d3e9b4a76ca5d9a4be5526ee919b3aea5e0af5a38ec10f07ead6005ddf6b155af81769392b7a73b6f4bc5849e19d2b2bc495b03c783b119b44e2242c8e216cee6c80b7ffb04924ce61733705defe6285b811bb6d8f694e8793327fe24eab080cd6c2bad5a763e1379fda45c344d9f6f885776d1bb05126c4066ca5d2b0ed930b6078216e78d7ed681528873fd9d068349b5aadd6d56c684d68b42636362c00b75c8138aee604387036dc141d7bbd6703ead97eb81bce0987c351c141e1aad860b6ed9b141adb9605de08f0bcd5f0b66d81b78da787e76d0adeb68d0bbc6d5b173e78a33d3bb6956fa66f6048f4ede348df4e9d6c9b4e6d0aceb3a6b7cfedfdb305752cf5f3f313e527734df256056f9b5cb98cb8ee161ef54a25b4abbb6c0d52b261968bc572c990c5d2854c834f0f6d3e118f79aef88f11063f83f8bf39fcea44586c63eccde1535741b161d5fb9e1cad54aaab64c3acb3beba8c417d063fbc5b78d4ad405e18fe14335d76f5d0d620258d5d412ed781823a16c33074dd357c11636b170ddb0e74577711aaa261bc28b1b873062ef076ba738638e01cbac1db0e1a6e700e5181b7d00c6fa12678fb5da1c4395467ed60201ec4137c78301077ddeb518b07ad8b7e7973d4b2b5c91fda1a5ebe1586f2cb81baabda48cc7a4b18b6c290f5d4bd54f8b35856e2d0cab0250c5bb7aedfdb58331563c5a9546a7beadb872305b4b9debab99e6e065da74b1fd3e57a68f34ce8b2aba36c0eaf92c6aaaf6ef551d9010ce003b8ea321ed32a5b3d2f88dfb03334b21bae47d7b5f1ff41dcc6fb43c2759f00f1f9f900e2413c89b952c4fcc61170fa13a3a471487f3a6623a65084f8765a058d42ad28f2ed54a76379082aa563d9c8912059b645c732119e8ee597291dcb2d19c78be0a26359892fe1d3b1fce34c74914410386cd529c2867064b60b1ac2763a4258eec70f21ae845da288b7b4fce5e544883c088f1fb1c08d38f122481cd1e3f3c7082f58402d2ab2a0f03947d6416b3a9677642047b2915c84de24e01b13c7f1585ee2437c3ba522480c05d80a2564d3fd7450fab5dd08cb2d6163bf96f81036f66b88336163bf98380e1bfb85e3458adc88911f39f24492e7c880116f5996cc2794067cfbac02c8b7cf2842be7d5a31e45b76406e655666c003b6e8584ec053df1470d5948ee5057cd503816fd9c7777ccb3a2efbf6d9458ed79bd0ace786d36163bf745c6663bf64f76163bf7c7c878dfddaf105d8d8af055c0136f64b010938036cec9792b36cec17abf52136f60bc985d8d8af0b1c888dfdc200102143bebda9742c33e05b6ec0c36fef2a1dcb0eb8ebdbe7ac63f901ffb70c8149eb588ec051dfb2049efa962770d5b74c81afbee5274bdec4b7ac8157e0db274ec7f213220ec5b75ca7a872286cb5d180ad4d2a602b95266ca580ed26603b09d82e02b6ab750fb09d036cd700dbd11860b929432c27c4725b70b5295a08da6d5a88983b436531dff0b725374e588d1d37873389e36618362dc412218ab8994608a7855872226e8de72abb5935c405c21702686bb2d1b69a6dd6b40a0d0aed10df5e9b744c886fafc0b726bee1f856c437d977dcc7cd2105aee366d5049ee3e6161d67e2661812f81237020f526939ae44a531f11f95b6c493b839089cc48f2bf1eddd948e05f9e6e39b906fef823ad600204f4097802ba053c017d02de047ba2137d231e0453a079c48f780bf743508bce5e6207047ebd8916fef9a74ccc8b777361d2bf2eddd141d23f2eddd4dc75ebebd83727acb5b3787adb36e5629b9b9250337c3483dc9cdaf276e8ee1c4cd345cb7c0cd3578dc1c4406b6e898129e8e69604ac792f474ec896fe77e3a66816fe7823ac6e34e1c03378718f8056e565de0486e6e4172999b61c83cdffc32e2e61846bcc7cd347afc08ae76c491b839086c63ec66336148dc4c839178117b84c95bf6a5034fd9d506eeb2271b45878d5857cac89b78f9104532e052925a19b959891709c281215a1c983911264688bc5c08263f2ac024090ddc5ce44698242192041326a9223727d1fdb851d4216e1455881f49bcc84c919b8f9cc84c1122afc951e266252ec44c909b83fcc74c059a784d4e12376be0458edc9ce4446ee4e52d0e70a0758403463870c4c86b725e6e4ee22d0efce0c0104264e04794dcc85b962c69398e252fadd7e43cb1c48925ab97252d372be0ad2513c0b15ac281b33ad0c272e23b3a0084021df081819b5b6fe9c0053ac072e2e61df7d101b003a9d6cd3e3a20378a3a811b459d00101f6f71a075f3cb591c68b15e9393809b13f009704001372be0403870435093438109bc26c7c7cd1878ebe5e60b9cf5961d75f5148ed44bcb4bcb6b7276dcece338803cb504c78e27fee2c45baeb2ae14ae78f59a1c0b20c1aa54117875a300238044955a72d406543a36b000096c40e6e6d4551bc81b406d40c70624f09a9cd4cd0be86a5dc0534b5237af8e5a9242bd2667c8cd432e81250cb899018fc0921b829a1c0944e035390bb859e6a9d5cdf9a8ab90dc28aa8eba80224e5fb9ae5aa95e9323e466215f808e9b17f0228ad0f19a9cd3cd16f8ca753392ab7efb07dc1cc59780c0cd0f806209d9ffbba2b8190287e2015f6209285e9323bb5174f8e6d35df8a18da2c34f88a80eb8595673f420e2889088300711b29b739c092298784d8eebe61e5d8eeb353910b8d90167e246511f703313f508ec0ab12b7c4d8e036e7ec08fc04cdc0c812f819958e235393d6eee71d7110fff1b45879f1801c58da2e6a80e901971a318e12731a71bc5e8f4d7e434e0e606dc0131373be0b21b058843509323cbf19a1c1e37f3f8c9889b8df81f3335a02403499e70020317b00012995c01cbc49bb04b9c0296894fc02e71095826ee939847c02e71ef763361db8fd8d38dd8bf88759d880dff624f6fb17fcbbaceb2e157f67455f697a6aceb52940d2f85800df2075825ee00fbe30db0499c0136c8875825be00fbe3426c1257800d72b7045825ee06c4feb89b0f9bc4dd90b0227c84e5b6e0012850c13d6c17051a1782808db013061ea87d817958ce0457009101ef88b90e229e031f877d127367a42ce645d82744dc9996c55c669fe03b336531b7266788bbd9f46b13e26e53f46b7b88009b69b0120ab8ee7a10f6c98d1d7cc3e600711bb6faf4ab3110af3f1d03e2e679d4b77b5efc7e330dfe43ebb2993ebcb9ba6cbea45de72883d8855d61f8dc825daec7cc2796e0799775fdf6890ecf9f8ec5f99fea63852e3a165e281a87df5e7dea8febd60043571846a08ebdbedd08e0995209c0330dc21bad82b76dabc1db96b726356ede6cf076162907ec198e38ba7ce102ef0bd9d343e300319802fce0830166f420a3777aa7777a07c64a1cb3121fc04a4cc3461cc346fc8395d80703d8c6337ab01c2e800c1b71dd7a27060106b0d9f46b7ba54db1d52286c1e6b6e1c8206af3436715e8310db31386ce266c3b0d687bdcc2ffae3baba0010cffdbf1843f7d3b0bf57c3a853f7d3ec2cb9cee7a4ca36cc7738cfa763a9d681386faefa16cc7e30a1fd35dad63fff66e8b8e673beab706e872b96e3e0eb3fc01ea1815bc5dfe6cf1a7100b113ca6e71cc0631aaa6297c7e872c32bf2c2cb76b57e6d1780edb6e8d7f600d88ea75fdb79b0dd947e6d8761bb9e7e6d0780edb8e8d7f66b3b9f7e6db7b6eba25fdb5dffc3d3186b3d7c8d31d6c38f626cf5f0608ca91e3e8cb1d4c3ab620cf5f02d31767a78b3ebbfd573595ba9f4cb75d7ad2fb752e9d796eb0ddeeeb56cab21beb6b7d83e437c6d3fcd10e0eda8e901bc3db55d2507bc7df506bc9dc506bcfdb4d8885b366256c42a1b712a840630575abda9b4cd0b2a6caf54c26f8fd1c60e16f8441911671adbc1022ee22be2f0271b371cd3de8eeddb7670bbc94e2afddabe622750bfb6b3d8e945bfb6eda5eda4eddcf66ffb68bb68bb8cb2fd3f5166ffc41afe6cec028f2c873dbb63bbc8c628aba06a0bdd59a55fdb8c163dd8529441fa66c12883f40258539441ba0cbb1265908eb22c5106e9291b4619a497ec29ca20fd64515106e9d4a6a20cd255561565900eda559441fab4ac2883f4956d4519a4b36c4b94417a5b972883f415fb1265903eb2ae2883f4907d9441b20366b931ca20f1f01836b7cbe610142c4f8001b808e04ef44b1e66914c20258c200c38007f59243329b822a806988707e031ed09c02ea9c287928ef5bdc0c8892502b01107c0e6ef3cdcd6fcd63d11bdfba418c972e8b580c5df456261dcd6ec7a00fe84417400fc98b5f244598f8f1251d60200dba297b296175425340bbaa209526c663532482665b1500e0c7610635ebd818c91423632f8811c417c49120a5a80e5ab0ee40a62206fc89a4f71022c9fe30d1360791601704000d7006e308017980d602e2f9c578b006a20805600681000160f33e06105c3090c1500640080d48dc1455918d8d36f1eba5ee0627971c1cb8a4b0b5c4c2d53b4802d16b44aac15b0482b15ac3e958d6a944a41ca43a100253a9de0140a9b8495c5042cdd4a0956382c25094cf8dbb00447106d94684904d106699242106d7c8d25fe2e6ba28dd1638cb089bf2766f0f7ce8b7ec99679bb9f164d01f85c6b523a762c5f7b666dfa6089049c6b50164c3061927a11d3d0b3930511d49830ddcf84c96f413f91e3428e389f8edd2b0f0468ba474d35264c94451ca7506f9e18a2c611f286f440943812045186949f30a2ed59c9269fb42e5bf766c2e84c070fc0a0697a1e85661d335d5e5b71fac693db06c5bd9726b0d4ddddad018aa74cdf64b99ee6b8e8970bcf149e2f45988ed6f39b9db18bb130368a31d6ee57ee5dcbf934d773e57d4cd7daad81b81677709633f90179090239026982181b5d5ece54aa20fb18832c885f5e1e238c7d8c2ff7b6d1fcbe5f3b7af7b305c91bdc16746913a6d3e974ae5783a60cea6c6647abd5b6e099f2241bbf8a83586b106510a73c0745dea837b2077979791983ee7600569e8602e61ae485661f8d9967d9249dcda5929ccd66f6668903250ad7d31c177d79ce47822bb706b862251e420314cfbb6233c52b0fcd64aef4a693787ca7b7bb27603736859f1f0e16ef5b5b95cbaadfabf7e7fb43c2e56d4fef5da737bf7cde1a7443b3279cf0ecf7f6de9f0f7aef9bcde0fc3fdb9f5fc8fb7769bfe677bfd049367b076fc4fdf7980edd3c1fbaa41e84a6537abb72b17dcfaef4587102b777cffbde96748f15fa8815fae8a13bd3ff788c1eba67e9c809dc4e64ef277affd93cbf72493d00e7f5714fafccfd7765ece93dab84e27ba9ed61e2616ffc5532b14b8e97be5c2513afbebacb5d51ca7ddf4eef8aeb9be7ac633debd73b340baa4292323f1edbf59cc0dffbf3b19dd43d01e9f69d54a736d28fb4bdc56edfb72fd3af36d257d474cfbb8a74d6bf6f1b85def28536b0f5516805b672ef070bddacc2dbea241b5167d195eae0a78caa87e9de3dbb8d48244a49f73b8d5886debb473ab5596627f0f63d9444fc1e7ae86effee2807e9c653eb796fbc794fdd0b9d14ba241f80ad1ea4d39348a7fda23ebe1c1fe9820f51bc1dbc99869ade3f307894cd4630f893cd4e6070d690d23e81255b8374009a9e6b509dd4b6e6b7cd7b9b666a95935e1b4674d243a025c50f079d69d18bbed916ddfebdcb01f8cdd047f6c9bc4a5a246b1a261fbaadee2b690eaaf44084c993a0aa0094cfaa0ace6a47859c819c0dc1eea70685a4983427299a8693a2694029244d2824c16007cf2bbd21ca21b68165f41cbf88b10cb18b08861b232f848f197c89311aab8f8f1163a9c7e6650f7d02e0f8db72c1316290185b793c907803340289182b11116fa872c41849081c1f84bcd132448c993a964b83bbab1b8410232c553474c88c4492fb4423f9e118dd84475646f4d0636474cc4aa580fb9ce89fcd52e0ef31bde1c949118b3b2b98a323ee66d1592ebf1c18c0f943c598308045f9c32c23960c60d137cc723b8045578603e58dc378f54bb451802863c67769886e8dd10d42f65080684308efe6a661053c05d3c0323ae2ab7db0205f35a22044b49123ca0842de284226c6b888710bb8ff892ef790cd52c4b8d1cd5260d1657f38bec78c6ee6f0e8dbf0887b8e3bdc6b3d973180e78b729789402bd384c51b6edeb0835d38d6de30021c4d9e9c53ba68c15357d37b2005fb85731d6db3e994eef2db47e97c8cec6e8e31c6b8c918ef0c1a919b0310dd66d0a831c38b17921873563983f41a53ca9fe28d98149637c5d8cae54571c658787952bc5144176f20913dcc97ec615e8664648d195580211afd9a31d38710f99a5fb11088af799365c236d1aff901cc178164fee51dbca3f7f4b61110e00c1afd9a87f11278b39c9dece215b0c8cee858fd3c8d1ab3d6b861795b3d2e141beee6b939e70f63a32316d94581c619346af4ab3fa35f1d6bb10a51e6820fe3d5521f82e1bdecc49e6c9148640fdd72ecc3cb4a1ca33f86183ee2eb59c0fd1abdd0f10a3e441b491c11b98858d8791aee72a1c1f5f272861717971f97961633b4b45a6568b1586460ad565dac54aa31a8522931a450a830a04e279f531882216461f902cbca8a17564c262e4c20d805b054e2428944da02e9fb7abed1480b23cfcb8227126141140a4d09d57a85da7556e838ae0a1cdebe23ca98dfee23daa051c67c12734ebc1d898e3226de7e44b421e58d51c69461b4d1e00848243f13a0fe3dfa009e1e5738d6d4d004c74f0a88bacb95c18bee3589446a99efa8cf8fc77714e8a1e877f022d4cabd1ea1402b1275775929c5ca1d1212ba93629f0f10a06853d232a4531cd3a0a5d88b2a38d6d2b0450f38d6bc9002e6a261dd49f2c3813b1850744eead45a40e8fb43e8a54959e87dc12135221842163a4dcaeae384c99e7e7552c0d6ffef523ae67a87faea9f251d08f03b10a04be25b895babef9bb2a565a5e82419d1516e6882238ed88b0c0063cd0d4e30f80fcc349804b62efa4e22fd13a9c0975e1a91ac8be9b15f2ee73e24445746f4d65b5746f4ef9fc85e962450980e5ec9cac1eb856f5df421510269f0e772162bf33de215fb840bcbbc3ce24ff4840bbf9cf4e178b9173f7b0f08b07bc5b44da4a25f8dd3afaefb7c90feddfc9dfb7c8017dd9cbf9b011abc225a79890509d5cda29b6e2a950e96ecca41db5070f28c0ce9a62b716e3240e343b422fa9000e6b6c1dd5bc78a282a95aaa3340bcb5c415d84ba4874d257fa77af8e586c66a91c4b4761b1add35158466d4547691d161e78e0218aee86bae8c3f1643eb34e3f1fa88b6e46ddfb5ea7a469bae866d2cd000d66f9774f7e55b0e9a49b0e926ea6a179fdabdfcda5ee4302bc59f4ec83e5dfb78f07e92c377f240104c0c6152bb197f391409810adef261122df174299f4e565224fcf6446de9cd2fbf4e67c07bf7d48906eba578af1f8f900c0571ebf1e2caa950be0f1f371bfd263005fb932a213009762d89ef5ab7bdb282380ed717fafb23d0070969b6930000eda3c83330f7fdd74182907e4e1117f02e0e102088095548ea0c13cdcd7a7c374189718c66df500c0ef01709bf6eeb9676d45f7d83025b86c5e74017c3844503a2622bda9681ceff57dafd7a74374dfddbb97d4a4d24557e27c2b35375481638d0d51baab70acb1e106b7410a5ee1586b030f267dafb5c10b6e746dbe5f21dd4c83492fc99b874c19a041a274d2bffb0fe85a19043e769f22688eae8db83f1ee045e06dd1c7834ac74417a8635fd0b5117b3f7ca21f443facac9c7473e94a2bfad57de5463cbb7b9efcbe2380424a9267c23e1f5d6db2be2380b247878b9a0f942e3a96e514b87bd7656905ee3aa9236dec0350f0a29bb2323a22b6b79f1f9028eb1bfb005974659446e2bb32df45171dfc6eb6275d3985e8de54e99d84428a520589f4ef2391482412e9e3f11dbcfc4012e9df77914824b2a52ba128692ca3f4abfb2d148d5beeb2503466b927bb775dd7b14cbae81de9a28b4cdda5cf673d91cddf454a1a2bf9ba8356f694ace4a25fdd3b2b80df23e6a263a50b45e3528f8f082cddd2a7e3fbaec4e9979ca25f1d141e5628b7107da2c70f878862d2b72362d155d24080a2f7d46e449de81fc5a577a677248b04fcb772928502c9f7ef2bb6c7c4a4831609f8d61312933ec1977fb6f1cb1b83f6e552806425766979c4df776b802d2d5749e356f80f87c42c4bca0159482c24d52556dd2cb1e8728a8e85e14b9f1f0ed107fa34534cba68f4d842ccfaf4d6c43e00e922b88cfe3bf7f1101df59849b2a5d39c560f89592e31cb3f9b6556feddfb7088fe59520eb8f288c1935efa8ea0c12bb7f4e940a16237297c4c77b48e919ad8949a7c168ac6df498d45a4970ede1389449f0e91e8ca902ebafc78902e7acc341f2829fe2ebfd8afefb3a52b494a1a8b44a2eee0670430cb5a0fee3a2e3a708b773f9dc2932934854235c6729fd49567d1ca556232891ed326d08a3eb09bd283d80302148117bd74f0ca7ca7d8fb6cabf64bf489bb23ed00ac213f1cb46445a4ef8a4e5b88d145afde451fb510de454982c8cf3b33f39ab0eeaa09eb2eef8c09eb3e615d5f89281b3dd7f01e65fdacc23b26acfbc88eee7d8894856c947577d20e7ab857bb5d7e40a2ac8909eb4e82d23f3f6a964c58776a5ba2cf8b4ecfddd6f728e3beddd6775b3f3829db2e65db47b7257a9fdebb2dd16d01e9d30b919f979fdd7be752f4f6c3171c67638449b09f789e376394948bdc9c52d230ce386953d95f80f194dee6b63370e74a95da3ce475290ad94fd83665675ff885e933adb26e4fe6e3bc52bc6439b45fe0862ca838c140e078851b7cf0937b547850447408a7f07cf056d3af8da3e12da85fdb56859362246609769d4e01b260bb91bbac9269c486e1ed6a540520115f12de3c83436a03a61e3343222fa87b130e20115f324a0278ba1773fc1bf0f49f5a3fe540615b815caa1bb2514105a26243a35d55553fd19ad0684d6c54b4263641280073f559ddea837acb5b2cdbe28d00acb422aa47976d71b98274bc3cb4e169c75013876fdd0b6d155d014a1cdac84f072a7e394effedd443cb4259d5553d66aa6c91b7ac11227fb1d51629f215d0284bec24c2d2f0768f882df2f0291bdefb72b8eea85fdb556f617d3298393f91affea37e42adfeab7eba25f2db0a552fb78595230282280860cc2c6273aa75f30c6e3da5a27da5fa513095eb777df5fc9feefde4bacc1f56da57aa7ff5d3bdd529749dc230aca1eb561b140b0583a99a8086c90314b54a1a87446ce476749890a4c7eae151a7ff742b503e3d3ccafa583dfc553f591eab87f79efa5557a954aa542a95da015d2e477501dc1ef1a9ab755ba05067a150a7c734cb763556914be4b25827141e9d2ad0e9143aa16ec7e36abdb870add5c3dbca21f12f8c4f81cb129f6e2b4763d114783b876fb9510dccfd53253403a212deda840e60ae4034202a5542b48e351cf0f65013a06dcb628aeb7a4e444f22175cae5ba7e8d74dcb5ba854bc8313a0cb2aa1f8f4bb5c0fc33054dd65918caadcd6a0d02c5413a2855a36d4b27d65434e44720073a5b91e3e5603ac88a8d4ebf4c5b91c079942330308000000b314002028140e880583d170340ac444891f14800e91b25476501c67518e42c818640c010000000000000001300000db4fcaa176643505406f5c234260b4b485e14121e573b8e634bebadcf8f5ba215d2b7c9cd65e2991a4dee1621e5c4b4de72b4d651d678b1313faacf59e4e78c9f4adce78f78cd24bf49cbd551e3bff28d03ffadf717b2e260e126441a9b226436a4ce75695fbaa47c81d0a30b13161fc6071d3c841d48fdfbee9ddde1d7b566b1f73d206ef6a2f5ddd64e79ccf948f5d0379fce322460df62b8d464c7002f7f38fa77accb8e3ab96d5474abed40b4afc5e61d11f8737359690e1418fb3668ae2c83d8209d9168a0e24234a18adf707d0524f5519406a612d802efa68c2f62300b0f7444f4c55d72871ecb53be85c0482b236b0c7a6ebfad4c8659dcd332aadc541055b19967aaa80d28f2c5c90fef7f1269f10c22494d7a3ad8601384dc850895870adb8f021854951174be0290150113c88307508431b0b33321893920c8a04720580d201bc7204aa4532174b611030d015188467740c40703531393087284c850620328501d0ee9dd1fa4f70c59200c79d45fe7a34fc7eba2385c788aa15f51d591b3e8cd30db2901dd91e5d08a614d7cb2c78c290afdb5188a24551638d586da7d8fd21e5bb20104a40f7b9fb12228ba457d15241b2d3b7f721a08fe3bb5a653a210df7a117e0f82b5f91f1cbebe1b8cf82c9493df3b06c35f67ba749f4950864c36ebebe18e8bd30893261a77e5ebc0373d28b76dcefa74bbeedf4de3eb21cc88fc2b4c30a02bda7d1df6851139bc6aa1fedfc90bb6a1a4278698930571b7e7ce9732b67a54a76be920e5fd52e12e8bff8f9bf4def34626f23173f8d4a5be6af6937acf431b0864a8df0ee310bbd276128f17944fa19fda4aa7b606a7f54649343769c1a05892892f987c50f65b71e95f8ee7abb1fb355636dba0584d80f7c9c73c9ff90384766c1eadce6f287f9486d1da91349ebadcf761bad1a41909a8593420033972729ac3865238549f49c149560e4c90f767472d72c462d2c5d4fb1f0223c344c8296bb5999802e34a1e80067edd6da3275fe885e66f354f13751e96112722777ce0edc4e9a5a774b6a66f58ca4a3c07f9cb60169d3d7e8a9889787bb4f1f67a65f54760a059d10c509731364aee10ed756d6daa37c3eccc7ca2399663010e49349f81fce46cc3c04cd7e060d4582c7373043b84a1cfb2d26c99f1c3088a91a1b8ccd7f6672392ee789b8a650bf81965d8e01f83bac1f4904fa73948ada1a7ff8f7a6f1d2eeabbb23ad162ba4a02bcfad7e04c94ce47f7aa057d80e3ee2d65fda708793835ec0324506a2044045b36c9d8312f2f90ccdf6924f388e6b5de3729995ca759a48e04f53f5321e48989a0dfc57cc3558914dbda751aa5f8f987741b04c8717d613cbe75078407ad7e8ddab044bc04cc4fd1158eff45e949e4b551ffc2abd9ccb7887b2ea3929b511f9565dfd44af3159c6d66faadfd36333590d04e8ba26d21a48021dab635d41b9ef812b90fb97001e8e7994b90744c2c574b9a5047bf75ec5aecfe9df99264f74696ee8ff8854fce95e2235314a48bfbdf15f98b71c09e673021fd274059b93cad0e374e80b42849b27968c2831794907a398756a664c03264720a0109e41c3b286ca92665709f4dbf520da156ae85d8a3ee7540257ef7a22382051bff1ae2637790c17bfbbabf837effbd8bdfca00ceecdec5b1be1ba0ab4558dec2d2284b8b0f1fbe180989a3f863a921776121c80649a9058be2540b35b39349210e2e0c41fa8ec0c71b43a8536d18b23186b8225897e71d85012434c0b7f239dcf08e87e15717cae1b46809d1f9823fe9a22bdcce71250bb6c6db3081a880e1a4b6710a7a893a4ed18f01a69d695aba0439216c2ac60d22c43b9eff82d5f5f3c71b3a3e03f58acdfeb6013912ea7cafc8a5ff58f4a3d6c2616feeb894fc8ea2869cb1009284357bff8a305b941a4206d08556d3394e089ace6928b3d085873cc11f7406c05c53b2f77ff989819122f05b98facbe39a834f6c8b5a88398b9d2c11e4774b0b37b0eaa77fda288955f8fb16ad296f62f01463e07a4fcfcaeaab5f2818eff51e28733b02121c1401d3bc157e02cd456e8dbbc1c14f39b8de27e55bedfad2e3496ccd48198440634c9f9bce8e0869f9465aaf3c9b458aa3146b1cbedc9fe9d311313ea30563bee0bf0f60074db2b7894bbb1344dc454ff3528139ff2123d3ac868f848dd5420ca0a91f054d5d1bb277d2df8761f691316822467500712386e75c2c6d655055d504c47d1a7572ee36d0b1665c2164eb0481bdd8116d7dd4ce20f4527742c85432081b122b9093fa6970c9b14c5577986202bbbbb741c6a500812503782a5ef4b418383d1414a3ffcbd146d85b1cc020e001cb174d2438f0f608e85b3851e0946073db8fe0957ad974b882ccedb65e9379e0b4c2ee2b54bb23c7341ca2aaec699f7569688cfdf9be006a46a94129af139d88228d3778c3c5b1e3704ba61201e62e123af05029442341c1bb77367f53ae9b9bcdd308e38f84b1b94531e2807a2137614a4681939b9fe453080fcbc03cdf1f0b9c5d85c25cb6e1f48bfc39794298f486975cbaf5866cb901f3d5506eaf8b12adb9a3cef8dd6ad0084bbfb1e17e7bfae52fb7de896344df92f3a961cd591bb0807303c7a67663e463d9e100f9dcc355ae48d61932166c42cdda54fc43be78b740cd3757a0e8344c0259de1fecb6faba9519b806296d9fb23901d2ce167b175e887411006d69ded910b621288ead50083a442f210cf894782ac52b715b938d07eb8c1f82eaa57552a3a60342e18c5ebf4e3e449d273ac1dae55cd8556954ca21c5155cb01ae5328e3aefa4eccd520987bd4a94a2f58070a939ddc4dfb25245175ebcd3b4136091bf5298187c316bafb24dacae5a6a3f3519bdbc0e01565e9cecf96641bf8f7214be89d4894f1f84db941c4f56d0760da7e4e0f4660558586f58aeb16ecdbb03c4d54f6b03600623b311d62f43266a9fb2864f4bba52b035240b790bf171fa0e024257732ac1a529fe13f1ba9130b25e90c9475d950107c6adbecee42b95c38c8a964b9f0d53c6b38a25c45925581aac04ecbd8d020c8a397ec6610db5f494513bde7e5fa91d8f2a7f29a29415802099a016336f5c40d3c65d41ec734123e726e220b627f1dad781cd0c44782bc177aa58b226550a5b9ae695b4e2777ae2491e49f466ad68f4157f994875f505440272886884b44356d78468efc9394b40b05325aa8a54bebf72877966586e38e1bcf84a12148403c4c4bcae00465e22c1dfd6c8818641df0bc7b37f2b1dbed808bbb803eea8dd45a76313421139c140aed21a1ade20b30c9ef08803bcf0e58d24fa1d3c9e1127db2a974e5f1e668a9894040210f1354e599baac4b68be10c117b24b9c9bf4dd8eed117067629770611daa388300736b43d7e840eccfdac9553293c81dfe4fdbb5f608a8fef130d03190e4686deabf81956dcaa4fea1db0d3f759448e6933ee6b58f1c65605bb6dcd007f5919e989a89e51071520e4db8a846ef77a521561dce7c7812583f165497441956e788cf0ceaeaf7ebc436acc49260ee7eb0798dee32df28e639bfeded452340809ad0a24e2809359272f8d8dec7846a6ad8a738ff8eef2f8e084be60a8d3afad6870adf544b5ef9cb6c95de00563b7a25f2e72ce08f790109f5d53b8062cab5d8f0375b391d50713d74f59b06de0df5ab1702a3065acf33d515acb520aab213d951d663083fef116045efd427899caea2c839c6eeb9cb02c4a4d7115823487eab1f441a4a7efef4078c63116377fd66986e1bb28b526c37f03b24a1408f2001bf333ed566d9c1d9ffbeafcd83c007adebe2b16a7c2f8bcad68f090fff4e3e9e20d0af2b9b92fca207ed3092deb6f2c9e31ed26ce20f02b1c7994ce1361f28b9cdcc7dfbbce04ef8b86891caef1d7755fa73dd563ec0a22ace772271ba908312c42142204d4c7a3528a2cdbf8aa29d58433005786ef35800fd41eda58956ef81f16768a9580bc0c164ed701f3df29b43ae077ae1b49dc908ef82712e09d71d2de66a679d2754278aae4765b07e2626b8c2229965cbe331880aeb55dd418fb9ab670b447f5595a6ce323a7b7f1cb9204cc217c851a7805db97347df6411a51653401984ac4fcd83817e54d643a89e105d8b5db5662a7dbeb499954b8d53070c0f46b7d853a42d4a24005f4d69fbdee295819afd5c41c0508ff6682ab930af3ee05dfa41c5887dc1e16b034361a150b6b9cce89981b4a0204fd54f3d5ae42b20e0514544737d868cc0f54075437e601822c3d2763e64129b0b54096ac968a9ac1003d207ba9e8d03d7f435102251365469fc165af9fa538506a10720ce1a5b4412999907d2f86411b33d59a7e9ea661df1699e1333d50e5ddadaf111c8d4a6f75500708f3dc2385585cfce06f1f6dfd8b898f066314e35ebf3e5a0226f1615a2b6037552e2826d901bd818b945ab0bdeeeeba95438c0be7c0e3202f5a2538e53713323baba220de3e81fde8c3a1c9b640c476141dd7e9c4ad623798a9c1499f964b5bd321d5573729478ac9a250750f9adbd1115017010003a939e381e53e8e32e3f600f732c2296d72ded70f6ae0f70fce929e2a1a9c5f96ef317915345d38db2e98d9e99b1726d63ea4b9c70b22282566827c1ee7540085dbadc3f365690daa03c300f056772cd7e4f8b22f69b81b57d8f4e91b2614f05088fa3ba5de3090a19f793df3590cee01c62e890743394c3cafc64d04df00fc371d921827f489fffa8be7499b0e96a3efdc296955c9dde7e8c98dcdc9a1962098a605342c9b210d4fabeb02f1b4f0fcdeb6cf32e2f71e8401784438d0214417d36ecf5d15b472044ad736f01a8327dd3bbbdee957236096ec2d13bdbba4b3b9b108076b953af515256d56f6355c1e2bb30db6e36fb265bbb7124b647f4712a93ea90655ce9438c91e4c036472bc1aceb6a678fb3a760811aa939f9a7035526eb521dd44fdda897d0186ad73330bc5b47029084a600001ef6c396caf114ea289589b04c91108083116c428d52390e22a99e23124e212d89e12891029c002132ea35c2e05041f33885b6166101184b891a64804812304ed3262b111acb1994a53113c03444e27dafc06bf3ad736bff3c626398ce4733037aa94d15bfb76cffa3ab5141759a2d20a11123fb318f58ac0bcaefc71f986fa81be547f1f3c5d90bb6889f3a0472c09c99ce901cbc949c72850c14397afe025e3026599f546d7687953775ecb69808857d6040949b0208375cc2dad913728ecce35b058691a16687925265eba07ba869f59d2d0810573a247794a1cda6ff073a5de18dc6ba887d901e06aef2eb98fca00b50736e12d5cf005a3a3ff9507f87e9f4538e8f66a23c0dea371091cef0e26d48830813ff5e48044ec5a3d6d182dff98d01971e0a5a4a22c46fbe241fd337df6a824c14a80ae67ef57a2e300181ea77dfb949adfa84936a16521a377c18285d829053799d039a2edbf09e741d71dda5f0f40b915b9b49d361c3f8e52ded90c9b173fb1f73bf5822b93168e297e9f6ea45f8d0e5d59f93345dfbdfa1730b3ea7167045f8ece057abcd09af90c9b96c0379d4997d9938a4b9448c7c933ed68a9d561a60c6d960a6f8f7f192c5d36a3089c7ef318024293ceb3b75f6b5d8d5efc245227c5a88c12d6df084d87798ba7a2340f384f17afcf595bc9d67bbcec87e1f4188817eefdcf54adfc334f5ed0a5c6cd85666e959cdee11aaeddb253e3d36a2fcbbc5c49b1cd43c39774fabfcdd76c27cc8383f51238bf28eabfbc2f10b216dad5a60fcc4fab1d6b04b31c50366dbb4fa082f7fb7554e12e2de02f9f2d73cc7f471c9eac997e6cf1786ea62da2700a7a460b915d2e1320e1b3e607c3736922d3a8887defbe35de5812ae7bf9b6dc0c341da9287b55c1d9dd956dc63bc334ef25abd2aae0fc8e74cfc08aebb880ae7cda115440849ea40820d00baffe117bef6909a82c15ad4f97cf0e0830c0330b478dc885a5d4961799c90c9646b679dc0c42232b1d982ab19ad47b4335c6b958ee4510ba4ef912040d1efdff63e8958e9cd84c08a6a724d190e5e0745de82129980983ba1120afa59deddff8af313e1c73ddedb62abf7304ec14e752f1fcdc7aba5117f7ab0362e0a7d9f167b747b25065f35eb1a8596c1396f74c5139bea553cc1bbaf335bb002dd0a1c53f5c20a73b5e61020e355e147715765f61d3ed372c131377dc075f3d8e80eced1e85762955a307a7ccb12dbcab2b551bb838985b0a845ea243a1739c65c8277baad1be802960239394f6b45ac77f9d0c38b11969d2328375133a2a32c2af4ccc637e0dd9e3ba6c3a975daa717f1d003e43cfb9c4b0c052590b8350ecc5ec78a946fdbb0a3d94b461560eb504917fd8d48a844fcbf88ed2526677e20ee6c631207622a2e2e5cb8ab515e2cd1424452df84fc2cb3e9457c4a7e2185cd1093b4145f92c88982a2a5df93abfee70b97d2f7623301cfb1ca942ebed822b0eba87b0d3c318c31e21be9a4a6de8bd75cbd462fb8b81495c31d9302622782e2a98bf7c8ae0a9d567d40ba0e240dccd90adc065a1c618304cedf2b4581db2d04c0fc9ca81d3c4df093ebc82eb865bc3f5e5c189158cfb6ab847e821fe44fc5ca51fb2942e527b314178ac8ca555bb89144a408c80392503d1f9a86448cf08386be1aa8628241f5c47e7c9d0dec0c23c7817b3b471b5bb631de38395cad0df22a0426fa4d66c35bcb368e1495f1656b67fdd5f7893e3877d3a2c68cbd7a6102e3f6eeb7ede3b68fa55f8723c9f4c1e623f19e0470992ea1f58580d278e0b23edcef93d37cd20ce84a2a6647760a31527b36137508418d4b1b7fcf013091d255a459d3b9954a6340a93b96b8fbafc4cec488ac4433ed24b7a58f0ad04e17172e7e9e378d5b27f25fb1ed1453400715c4a075ab1ad48329376d3d0fc6b5f2ac5586a53a9df153e990a20bcf0dadf3a70927805f0d634a5b00047ac9a3a755dcb3249949a87a924955fb4da4560b88187110002ae6a8e632b4d52a51ae8dc80c8af81302fe232efeaff4f8376053543e13ebd620f3c382bf33ffa231513f8b76b31c8cc4a1785f663a1b4087d498034853a3e70126742713bf653a1f25d15c644ad83159e443697e22ef403990d6fdf147ae110ebfd790e8297689469f75eaa890b83aee10e259ad05f6e18547cdc5130071470b0098b773a4e10cb6bab947c0559fd15cb46be94c72301c81f22ab64b039c7ce9c5d481de54488e05d3a811ad2f159387b937a5d05382a973ee675e3952a1b10490e840c5deacd1756fd0ec21f55014555092f7304fdda10af094bee0409ed8bf1c6280bd6a44ca523e7657c1d5bc4285a77747407e57030ffdb536122b8c3a180b7475eebd416e4426cb11c8bc0fe59cd02d1a1a14a94343500e0d64e87195a0095bbb4a8f34ecfb8c8b3a7d152f81bb3913ed21e83ba5c6fb4a2b644daf78f8386421a644d35ef868c15439b5ff826d9eecd13cd3d41939b6cbc355b7565e666dc952bd03cf218a86bb176adb3c4f1f6e68f6f5c46ef8f4f4e8a6136f36855fb7e6a7f68124a727dadaf00324c3e98299bfeee0f653f89cd7de525d772a1ef76fae59758b4b7398b8deadc4f6c36719477ea3911057678c6ccb10d6ad9fe7105fb1a3a5b4f831854651d3fed6b7d96383fee862535e2e8e58a9f8a7f520c4b9a5642a24088b99748bbe81605d449b11380857e985f1e6b21cc4cff47a262ec3e9478235548f02739954147575d4c759cd99dcafc3d9ce7da53d9f816eec4c20f2b660bca0d4f04d2df019c89b342011214cbbeb0f1129842a3b84cf877ce48240ec81d2d785909bd7347b3b93881d9670e5ce6516245a0b9afadcaa0a394dba7e513769e75c4e253c1a50af9304287051d15b2d64512a99c5a52f41d86a0306d0d0d98a8c0e6912c00227401f70bf22e566659e82b28c6ed56072227a913ff172a530bbd1e0ae8812b84f876506a854112300a5f597140b57ac01719439417b392f683e6ca18522fbfcb3214ec7360a095857650c42e29e8908ab89d068891947f63b60ba5e2cb36b9a15e5c98b9c1b53433d6f570081d294df4573deb4cce0d129c2f14c0924ee27170477a18f8c4a4121317ba0b69d449270b82b99dc4c525667d75613d8ee4affde3b1e295d948c87700d2e90058535f91b868f59c09043f79ed2d08b8f3d06f2d5abd6b65a50012ecf6d5cc8768cc9f7a172cc7545cb648fb6aecff112c92d3448291587e6abef683cf4c9d49c06ebe99e2124ab3dc7b3417f924fbc35c67acb0fcde4bdb24f3fb836b9a62a98ae57b1dd5579962480813d10320abe8c709d7df5d5375a922301ebab30f5c005e4b4ac585a0b6e1e85bf09be30c3610889e44956d652def206621601f44738692018255564a5d078529a193c7b2051c430e9a8b0020843bb58eafeabaf1ef2de0a1ec320adee67385ff19a9b1c1d4d5442a70ca22cce3e3f1828bdc2e0a6dfbd4746bdd7de26caa52d22a1b6508dda54133503682480c8a9038df764668323ffb1221890237af2f0eb984bb4da78d391a03d459e095e34e3e01a40244083046746c88b44f9bfaa9a84d08c018c7fae533d491045df288ff3c0c0fd5f1b8673410623c99acc1d145628636696e168ee9213492329fa2ae05d57ab86cb7a8f61f31d7138935fda5c2cb8ebe40378998e5065be19c64778d70777e172851c337693dd814c181415244137f817cf2dc9f456c42497c4816838b224312137630adefae87bb6ca9821004d6972c5548651a0d645212a65eb3e0d11b5413c9620dc047902fed5a557f7cb5b25913a5015c8f1bd52dc0ad076526570add1de05f77b9e65dcfe07f1f7e0c27d18fac1c57e1464094f414af76a6ea64fe8cea54c37b875bdf5c8f1599fb7c35bf5eb2934bd7810265f684e74c1218b4fb6c95da33296db6ca6df096c6f4dead10ba6f9b80cbac5f40923594580bd0266d6bcbd2666cf635f53aa09da0633b005a98ef271c8f0f27924254671388f518274858055268a2d961c3991920f7cfea12fe9db02945e8b968a66aa8897502cbd7b17a7086e118ccfbca67b7b0d0e78774625f3a0e7d18f714b508570b256ac8375944b2b71e7cc514d6c5afc240613d838a1f812a151e5a7bf335954d01e337def6637ac7a88faedffba781896713ea200faa242718a57d259a47fc19f4f6b2924ba635454fd1cf68e332e81ce55daaf3c60a8795311165d13d051172fddda6b6efbf7911de8b07a35fdf5735c1d710c4aeec6d9c7389db6676820ffaa6259f02ad48345ab5a7724707fe275389b3654ae0c16bdb413e853ae67e3aca6630449ada9aad37c1d89a92c91b1740a93c401bbff6c52e5c59766aeb8889950c4a864ce4b0a2edcef82e948b793d86528ced5b2d3d52f35564de6b67e7fd08eeb11daff27368e3b9af78be8592858207689456b748662f271969586504afa6ea2272585dde7000ebcbcb0ce4204064f5dc370cc755ff2a71c0d192b407420498bd2511308d38ce828a374e2bd782d046681b3d9153d5b5d221c14346bd33cbd7f5a3f9f4c2a3e9f38459824c99b559317da34c3e74caad4afd787511302143599ea4c9295b7ce7cac557461f36498923db3a5c5804525ddb1bbaa4b5b83319004fd8437d8332ebb96459a2d2ad7da72aa95a8860db73c96e0d71ae45ab3578e00de090701a01999c1763422ae9f5a1f8a91070f44e82310bb282ad945e8a4c9133332f1508096e8fbb1d556f2e0dd0c504ff4588ef623be06e84a161168b9d67bbe6d0c20a46dda9e39fec71af3e7a833a2d7e0c49ee431d5b4097b4187c2b179c728c78a1f15ec137ec163b465272e2d3dfc6984ee51c99970bcaf852afc253970314765274acf05ceff43eae4ad3feb5a2aecdb39376521b83f89164c520cd0094dd8e85b10abb4905346ee83c855b183e55abc467aa2004e4ab3e4eff88db89aee2682162e102cf3a7feb897608521f94bcd63f09b0a6f95436064db90c6d788f711102e520ef5076dd3405e3ac378217af1f7a7920c3788a4e61327c1fce5afa40e999cf15da6f1a409a4a1aebbe33cfc81f345e591bcc013f1c39da5247caf6ef2b47792346f8959142ea9dbfbf30f564448b59748a49bc8df3170fddf0ad9c28f33498de03fc7d81c1861e09b3d0e6066e904b92c833c778887e873f356d5f4f11d57ea255f400cb7866dc54bd1bd28e0a6c83b8599618306f592f80791601f6025fec625755ddc9a660cc435176b7d762c54ac4aa1cd843111f5433f7030d0cece069221e0e5156530c34583eaccc9f3618918cc6027171878209fa581913d85c17e50bee20279e127319505227792b4a8aa8c22141d5a62323c08577b07f8c4d569e8f148d7553669f7eb50916578478e49c806c577a154dde93506e63181e16d7f2418d4da2b74bfd49ecca8419736ce016f7e8691ac60af958373a7629301480848ab4dc81c1cf6a28d1445858174a528dacb10707862e6c12128f2904d8d03cfaed8a63c0e79e0500b250dcb1e82f61e3278566171d6c0a6400e574c45d303dc4ecea1ab5b72a472cadfce18296438539d286b1e5d73387d1c92806153df7ae0cf34803e41d188ec0fd55a580f2e9098a06d436192c5429a18b2abc0fa46997ddc0565a6b63d94512bf55cb010566c0f24f8833c1fa5f0ae49251914a338172efe48eb3861ce33a6e742b3033f1712bf40ff3684f2163aa2c085c6355a00b76b4ef0c11d765c3f6858667e0da0329c0a08408ea33318b4370ec60096776c6a451e88710d6320b1007464a57cd3fb2f44a26c664f0092f76180c7868264c60f3bd6021cb71a170e97e3f9c630db013356816d5f575fd54651c3453307d182b97e97744a00f8c0b321d25c159010b8f75a27f92c27d3e846c3c1d999da82c750fec03a550209f4db5620d02620350a07f63f0c1874403c73d600f9c827cb788c67e33c4b67529d50b1382d1104ae222c556a68ec017b7c3d98b93e7141efc5926f1dcd27270e1d13000395c012aa0a034fc2d6e25f9ad619150b06f6299dffbc5ad8ca75a677d2bb148295c51b257b84487b521c04bd3e1e94bdd983a810952449684a1a44a9dcdf82e59fa31e29b0b360ba70a346c5e7a266fb91a20908097c3dad0e658c4f6dd16c0d4b52b645f03790db827bf1ea3717c243ce7e5fc198e348d2115487b661ef7b750bdcbeb4145e8242f253f4abec381992b33256e90ff7812c8de4792b610d4cbd014ccb02b80d32a0720d7da33dc045a1503fcd22479904294943e0e6361437639026719e2fa8cdc29f958d50cd72fad32894e224e415202a02ddd9536b39d5f757911b7e86b450dba320e14274d5b2dc8a7698716e7bf787f9a7a9176b935d2bea6f00a30ad00bc99db4719d168b31b6cbe498e2c5d776203e703ebf2341fafc697cdafe434427a71dfc79bd6f79ab2ae212a6fe385360ec470b42ef9e0215535454578429c5faef5aed81f3925d19164a26b19fe56f050bcff7c5b0a0180b966a79fa3877a0427cae6aec07a8ed2011fe0c0804eab736197a5eae61820c4ac67c3cf7e1fd91457fae0a9836ad98615fb1c47db5245863e8d2a2dacf9d3be5ad43eeae810a5e922141c2f5de2656b9d04da0284186a38ea864bb39aea17aa3a7608b636174ba9e71e75e39ffc0b22fbd0cb676cfd23444b8ed8fb663193627eedfd097a819ae3c69a3b7a6a9c2d3d90859983ccab60318475a6b808bcb1280d61b57d96b1ef3efdb3c598fcb250edcab7e0eefb99c17b690bd2544a3a2d9c4f594f58398a673fef101d24027c08ecf7d429ae2eeb64ed2ef11c421451ba1b6e36637d93a3faab04ddca486becd90cddd990788984c93ef0b8bf31bbaf9b3ed1d1e9465dec30572c7cc1a6a2efca39b3edec36602453d71f43ad5151e6a33a09fe6ce28c6f6e6e9ada5cc89909d6e802ba76951dbda5bfd19b62cc71d791f0af741b0732f1d4c1296ca1fbe2ac3794a6f1627c9d010316fb083efc40eaccaf8a09934751122160672bd21625b1d2824659c63951398e57ea6bba2c3528429df8828b75f88976b91c7d5be51bdb0522751b4631881e9a0c211843c5a5fd1b6f90fc2a9029bc535ce83742454531d1e1c84938817fb4037252502a36e13ee80d817e867aca5d2454df530f312656c38ab1e854046469034708497e0b18b3be10451218d69051b23c0ecf74bf7d15900902f5c7caa77337595ca1c173bb809efc63fe044b2f2a7f0be3998beff1de184b719a835d52be122f7b76987d387be8a6503e7f7eb6de3aced92adb094924934d43e64a779f5138c50eabbb9da93538408c561516290eee1eb2c76105a83550483c63afd60364a3ef4249c1f844ed3ef8889d7121639efebc916737007775e0070fbbe599f596b97ec7acaa754cf37ef9420cd7e9014cae600b4a622ec4baf96da3063f4d9d07325aab7996887408207f9fdba03d92e7a1f6788f2ceaf8b63d6c75c9e49f096d8dde1a0c6bcd02b852040366a709a646bb5822031ea16b62ab30557fae310bc348c793e6e01f8c7e015f5581ad0523622d88d37a64710d2fb5feca244f4ec92149d71e610829bd50d9de6e36c21a6fbe9e071685d9ee3768e0a0ff5e4a0af7edb7716b1f6c615b137532d248b38e4c982586bcf9b2cced4dcd05f1618072b5c8dfdf60f0b98a1e0cdc22ee683475e8e8b86dc9f3b39e4b41ddb76e79211779e7cf081169210f35d204115a43924dd355b328bd2e4bfb9f6f35919e02402095f55bc6516d99325d30e5c0ee51c196dd8156418096ca94526b0d5b3f7308a9aeb2207cd5bad62529c40e1a1b643497f39c7d73ad70ce1de305f95b4e23e201c2c846314589cb3caa65d35a1517b7559f0915d292960da087588bd073919920d6bdb13a55b9074561cb0761bbd75d67c3ec9420f7829b99e4a305ea16dc3ad1ee65fe891543ca7787773b5c9d2a8adeb4ced68e61c3dd698565a6a4eb2ad4a1e6b2d12b375cb4372e29a419ef68914466691269ee2c1c85440378668cca20faa15fd10248bc55774e3d64c256d4bf32ca5ac3746fb969300e72016132b66742cb15da352331d0aa16b1f4bb4a78eaec520b607c4e3aed44b436754e3b0f8e2286d985d7c376ff76f01c48a0326a2c59e6f0129e908a6380c0955170e70260ff5d3500e96de725195c28f4e3c5c249925a0339375c721d4dd9bcf0b163376e78d1272dde8007babacf9a8178cb7eacf29a2830ed0d2f221a78277bef6b3ed3e712f09745e013af0413d2b8d907eaab6e7e8495ac5b97d63a95b1db3aef75c48ff80028846305ca44420e1434eec9df0cf57ffc385827df00d9f3a293155697aa658fd349dffbc7be0c42fb89d50d9d9bc6cc9f4b96d69060ec746b5f1803fee53677870c14de3d01fa52625990be162670cf3943bd198b34fd32fa3c5a61b38136e93344aa74b5a82c284d76532c9c28957c8299d557449f21363fe1f45470928b130359d5b433bd7fbcb9b995962abbfc6c54040893ebee177b63c9a0aceaf371222f0cd9cc813ea63377d18a1c4b55d541cefd55ed727c33d0ec4ca1e5d08de92f080ef8c80b52ebc95fc0208742cf77fb3cd85adb3be0863892e687578caf8d3da48d611ab77580bd2d442b631f7f7a002254204071515c550845eec905412783759e8faf5b1a19d965d14f72179051353189ca531139a5237fff69d0c05010832c90431fc250e61f9646870eaa02ba15a9f5cd2925aad22469b1c2ccb9ac0775b76041cc8645f737fce99c378c2e0540a78b5640f1ad92aa3d8a576bc368adc08bc7e992dda35a071ce487f88788075cc963309650749b81532a1299cc02fb3650ee8ff0b1e820085d7b0aba3719467d9c22b99233a64af58b959f9e785aed4e92702146fab847ca1699af14123564ed428cd9ea037f50615b12287b0ae365a9e1623c9e1e4022281c27323c8c12b29e9ec5936c80981053c45f6817bbad07a7df33e7c9ab25c42a0e735fb521b386b59471eaf61a38400c7d37ca5b08044a3b5328c2ba7f029b22a6d61b25507f995898d406ee187c5d4666a8e296aba53b612ad9db2cc14a21e39faa272751db20400a331953c00f180906c2320825b9fe5677788386e1e6ae3f297143f75927a8975ab524e3ef54afa6b4bb6e7af4c083a968636c95f1bd613d9ee9253b1a59a0609bcd83931832e41090a6c2aa72dd0e45e28af12b0b8d26a18114df8b1e4e3fb122ca2ef9f8c3bb7ddb57952f0dfaba44cfcc2ad947923344614473034bcae8cf0d2f8ceb240c9b26fc7cc9ae51476a4025e126eac5edd7ede955d38655318eac7d82ad1430d3b88121044c486c2ce38780367124e4cbc72b01f74ccdc1cd42c84eeee14e48f8f4d504392e27874b9437e58c3f843334b24369033598da7a50851618816c9c0cf2c88ed0f12acb090cfbff273c27c9f7095e015d4398d03887e0f79fc3d386443c08b0f6726115d4bcd06455a0da0987e596c6ad40721a5788900c95a8d9e80a52ea97fc9e4dc71d72ecc36b21aa888352a4054b6971ca0285d5328a498190d8b986a32015b8b7d6ab0ebb55c58e6e0c8153148cacb7a4d239fbd701387dd0a566551294cd2ec733d80a742dccd526dc43cf25043c2e7b18e2e22655c20cd11233a92d5a17a722704545e4bed2f2b1f1a59a97557fc2941edf56e4b88ddbaf332633f3613b062924bd4753edf0ffb7c9524536da137091b360d56684804a5c0a0b9154dc372562371cdc4be1140e0cb10d50c08d5cdb39e6299fe111ecdac26f035a1d305c3c1c76249e250fbf9592e83c2b7ac8c9540a94b307bf0d7230b8b57c5d7115801a5aa51000138989223be9a0e9f61952872b6b9948273ce0d33136285c78e90aa2571b9b08daa8458b932b2a545e57e86f8fc43b27d846304a19f642ea70c67838fc592c4a1f6f3b35c06856f59995857cbb996b3f4cc647b17708afdbbad39a121e01bda337153af29499cc4798f5b858fb63a7a31243e5299d3bdf79e5f3f53f2012eda7ed8cc11c1d314110c3167b9054066b85a5ec55266ab56a1c9b20a94b159d0c840abfa95acb3c14df87d21a6946ce85cdd07fb68b45035a5a9f8706d0480c0ca04da70feb5dc251466ac9d8cd741e821e2e379834a667d3d4e2bd4c2616819843eff445b47376bb10a4e7263e7a08d088773a8a9267122958abcd933b6e754a06bfeffeff9438f69692232bc580406c7c041365fe736aceda304ebb568696fcd1a7faefd445311c48454c801668926504020782d225e7d513c32e643786c92c8334c62a5d597a84a8b0f9984317c77ba25a046c346cbed94983563bdea7663af7fc5e5ee428397308f886ff8a7cbdc1d97ac4cfe4ae2c271e0d385ec71bb991b2c92837517b77cdffccf56b2d307fa866fb08cf48a396abecd0c0818babdac981565d9b7cd9c338f1d1e345097478d7e23d4daaf292ab7d6fe434783611b6babebc175abaf5fef043bcca6ebf5e342d3e090c666a83a3fc5305c5b9d457fe8a50a452cfe93b37634facc000dc5092572ecf60f9cf48d9bdc2be259f1c86ae2ba99a810fa10391b241e48f110b172c0b4e8d2805295b8f5fa9f1e2ba4fe58fcfa1e99a9cf19f9e397447b7a2a6ec053b78bdd14dd203294366b4b578c8ea310b481e99751939669004c69254ce0e16426cae728e1e4bd6337e336e2a75e91eb2622749461af96f95b90aa42aa99272519c661ecb826b987478be5c0098545e5d242b25a17bd31175c3f77bf9614aa9e608ef9612a34e1358b58d9c76efefedf6113b021b332c27a511bb26107981318fd253039e09831308ca838877260eb3cce3b1c8bd02ad5f1afafd8a42c16c2f88a11b066413489854551cd6808ef4c0ae86d6a76309c7b514af2d2bdbfcf2bfb8e6ab14461e4d7dccf70359b869263c237c99df1d1f6b4ebb5719983be2648e3e3b7a3dec314bab0568b21ea1809376f24f8c0f4c0e05860735d968a6cd26fa2cdc675d4c3c998cd7b2d72ca1a02a1be058f269a8b9d72c4945fa1e7fb5b77fd054791b9e865d966ffc93473576db83784c5c73717bf0d1dc84eb0346448bd87d57c6788c1b46847b0a3af991bff7331aa308e2220217e5624a07751c9abc1004d54d818d5079cdcf55cf7a955e51d9cd1dd1e17027d691712e2b0883619d1328e9cc8b6ec01c4c05a2a2cd0cc669eb6a48b96b9c234bfb283a42b7909be9075608c5ea4dff7a4afe15a3a68dcec4cd95adde15d091e272abef015528d5ebd53d245518ae1dc21b9bd1430ab5c153e848d4b2d7c6dc24d23382afd9ae3c7fd27987e3250ebed59a00b7b939c23ef656063cd44939e8ad21ee0d483796d149ae6053c45e9f2c0363f30e111afea72449f19f543da3f17b5969815f328b4f2082ec0123d342a3e9574770209d3d60ae5c7f30144b032768445a31f897a680d1ed92466f502e61117f124e363a0aada4321112ad368f5be241d186114b1743c5b2a8e616e6d7771ea0e0ee0ed7c6613605a6f0efe2cd4ff4f9413df1149dc163353c939d3fbcf7aa7ab5fbfd99790a2f0c4015451fcc344611acb16e37eb52dffb3e4f3552bf5bb369b69f6c6ef577c49b09c5388b436f6970983a0289b20c582f2d0e19cc6a03e64a8cfd6bc732ee3663c33ea54d197a1580ba82017510a5fb70d108bd3b90bd49032567a05fb2d9107f2e3d9d61e3107faa6a1e9bc4b54cfd8c109fa7dfff862c5dc5b59e11431b0396cfbc946d4d0a7eec1302812a104719af075502c3ce8c02e99cd25688683b2cbd783cdfd05dc8a0b67f933da70300b8c1025c94c37cceefdcee1390c8a25f697a1b478800c8223ddaef336668fae20c6694ade8d770f7cadabf2f1eefe6236ca5a4f049c2bfe2bc0c234b109fa16c0724089bfab15d4d9a210b8be6cd74859f707aadc8b44bc9edf7c41660eb9c874ac16759ea57970c32ab112a65d0cca6a02773be8a50722e92c685e421a8f1d83b264784d8cb9ee9d38569b56097ee4e65f3d3d6755e8d67c47d1c6f92f3eed68c8289af1d32fc5c55a858022600167a8a0982533f702825208e875fc383e1a3f290b6fc9b8a283bff48f07d47581e831db28a40b3eb1faa15bcf14c37df4802002fcbacbc005083fe9b061cd024400830213172e5487d6f351420d8a4f859b32c766af0db2fa46d3d23344311a2fa191ddd23c106091fcfff496dc5792133995a4494678748f6fa29f1ec8bdfd555aa15cb834f9274c24d117bb71a8ceb871e31a28318f62760f94e0d530f374da6ca8cfb9f8a16cab70f04dd505e696455559cb7461f3876b3b8324336204aab660be7be5e059f53e51289f90b93848161eb4a7feed4c8e4f9e9fee94488e3390d491aa5f3b3aff41d9132863552758ecc84958c57a69e5dd9aa1bcab414c83cfe4a1b794f013178c3c17f394bebdbe99f73c0b5d1d118afe3b513d3a4e9700843ede4cc74a8a010c0a326662f53abf6a0ebc3edc244934e0146c1713da735945e3dc2f0582b4088787b74b8579725d3b78cf1b76963782d1e41555d4204428a82a8c4ed6597220e408a9b9fdcf797d7bbbd8671c01cfcefe504af8fe0b8b9f1d14bd72c321ff913f95be3f51cab3d0e66f32b3822edc2247acebc7e4156f79b8ecb0244526af1a9e3b65d0e84c52303ac6f89fb812a2daaaa1a665fb7e82fea1f15c34e7c005dca8a6fbd7269e12dc88ef71ab2be0c4582022ed9af7c50b681d8e5b57e92155945470ff15a13ab566f217f6c44531cacf1452b846807421d1a78feb7a2c49742020a61724e2a9da2a0e67943650f300992be5decb11283578664cfa2f1671ab052b386ee16a2ff042c19f23ace3e2c592e912f4c34e2c69739d64ff8889260b7b58c8233d3c648b783b5f4eec584e6d830ca45a679d776627bebebbf8c28ac71ad03c64c0bf961929d26c28b4fdf6cd1e214b31f1524d0d6bd974a596fadda7ce3b0e01af508ae921c2f825ef7e8eb61676d4a862e53d6e46861b9328e290e685247513899578db486b7ca6beae7d02c8925b7030d4c6125066a19d0195f6882797b40daf04be4f2017ec8433eac4ad286532ba4f276ed9d32fafd7b79cc1f5f6a2720da917f01d1b287aaafa429065c1b583b1018ba1ee19090a7c1f1185247142f3019f427564742bfb53fc682395e5f8d95b0878e3efd239ab66f48e5483448c6c5c51ac75a9978c202556c47bff1e6625958bede753318abaa51f565e7a6898f63337ea6f5fd97f985ad771b3f96bb0c3cec6e3a9a87388e57022ad6aadae8b6d71b6b1af0833272df93773f96b4b2357471a76a8d623064577ea80d6d9fae34359fdda30961447b987a466f0ba01997844c3c678f404beed1810c9c6284bdc65a10d792eecaaef766f353a8a911369b3ce0f546678ada722eef730759e4318bbca4d810b849442924750d85a0cd2479bdfcb57cd0baf04952d8f93d8dc1b940d9fc8a627b96ceefde18fa7bd756ceff7e180e7860f6d5e397ccebbc982a09cc82c7b5a05d8088279e625896608c5c84bd30e7ecbc74204d63df1b794a72a00295b0d2654cf5dc20e97a9759fad8f74dcfe28c18d1144f7446318ec92192eb626dab4697a4573abb3552e4b15be75ae6cf4512a39ff39b3a94fb8a0e0778adad4657002a3b819d3990c3b22e5a922fb43f26d3144abab8d6a360848a7d5aaef6d74e984c9f02f425d7159984992a70543d56c7bbb9b42f415ee59147f66aabd50017ee0b3fbeed3a2b8fb234e845c77e275c9bd86152a7b64984efca4d3d6dea8a7ec291ef753849d2229fb92f5dea916d788d4f4b30774593db4193ba2af0a50fa5e456a9b6462f76e7d72846d3b8b6dc7ac3b7dfd18dd055bbe8ba106a2be04043909ef58c20d0f4518d23ffc240f5c05429b2f96825fdc1232c9ab136760e58092e340e1233e0501fd54dfb8aaad9447539a689a460c2896f871d7469919cc88c64291def1bf28e7becd538f1e4e2fdad1a313adf5aa9b7035fbf351c9523defa021517aa5e00f75c69323676dd73c7930bcd83663c7530fe7d47b8ae648cc2dbade91a1dbf08a649ba05130e278c0da65716f55b7bbf12dcd53b26d56b3f3b2b87dfb50d0b3d8311eaaad7c751c6cd7d9487d50d5413ea113f7d3847dd29054b35f468717a8d8acd8f03e32c66c3607201b4af2e89fa638560c5a4304509d1f79348037c23a929a84e28f911aa63281d4f2479dbfe6408ec6bc244c4059576a4c38b8dca819001a1f7d06805fdba9a6db8f1632342d8f7a5167454a65a65211af6278b3af411a4a739c26324250a03a0c3240411934b4b0f4a4c92acde6c7936f8c505c56b03ec6f960e411cfd61484e056512587bec0155307c47904342e89752c67f3d5cebe96f7a6380bc750e6abc7e0522a0a34ffbca6482b89c4cbb97cf524eacb519084f027d58a619bd4d320234c7adeccb1352c50beedc871d21800c370e3ddee0662289c0bcf24bc8723684677673f489e2821cb72a17b37d670d23888bb5afd5d57fde342aa010af39b888d8f9e0b4f63548cd911c686e923585f4feadfcbf2f374e8424e58b68090fe52207d9c82378e2187d854af2480dddec1f33b0db5bb91d30356450b00c48ca0346a1e2d9d8e60d79d11a7089e675b9eccb8a3c0a229cfeaa1ae79fe0f030e8e4c9016fdc4c6c3984a5b44c1ae2e080ab6e67baa53aebbc82bbb28f9e95459b0adf2c17c899bcfcb52ad48986cd866b045cefdde91c286580587827f3ae4d344eb6e0e189a59e0e62c7f5fc3b5aac2d298c833b7b838ca7796f64a5b61b7dc22e5dfe05d7a2311d7c257621d3e8b1684dd0ab7491d0b5b1cf363f9842d8e4ddebe1b981dd27491dce61e4fb9a74f496eed9d2451432993bc3a61297588280ca0d31765f204a503a02a791b5c03c42328555f1bd24ebe77fa2a88ccd63863d09e200a1b42a4a7d53ba55b9ff05c0e7583812f4f80e85670c5056dfed88aa7de6e2de7b7e4bc575e8a925180c5a9c1d8a3e51b836ac87b1ef15fbe08a4ca6bc520c69a31dedbdf3ad244720d957f959ce607521dfc0a8583c9d5f541eacda6630cdb42d6d9ea8584f1c411eff932bb963cd585dbbbb1ca779a63eff76c77bc5dc193cc3252ede948474925645965c18c6d6f763ccd1dcac17d47da49fbf5e272661a9ed51f4d8f649c271965475b351840fa1a0948284dde8677607e217833422153cb2533bfa143a37f6bbe8740752bed9d34d09b12f4c52b4ea25a138ebce0e8f7e7c415ead673c92bb093a44f921bfb2eab1666725a3b3895b7196be22632f51b172c00d544610a4bee255d92257765c2037d2428a62d492a4d3c04223c98a6a69d38379d2ea4f06a7a31402d159e6c6a386a152abc9a20ba6bf4e2f82b76f92250f358539d879ca21e2cd80a49bb6e3bbe1bdc65c30f02adbf1b9071b14054fedcd2e2351d5ae5f4188ff88cd3ade811b84d34f39876a2b76f0ce7adbf63f42eb57c65139817dacfe55bdda391e56d9810706676ebbb8bb1a93bfffe7e953c277f016acd3dd56dbc985d26d0b0c03d5403d739a13df97712af65751ba92a834002e9c01f46196d2e7bf0c283b39d61e453cb5eac1823dddbc039941118a48552f3876e65fc9ada2332ba820629704a169fcc793d3128cf89f008d273060521c42a0420b07f40709ed6c1686f130f6a8240a7f977a81977742918f37a9b6ed6e64e20f3785241139a30d79308c54a7e307fc9f513167ed190d7dde6099e3f64d8b3f44e3942430984c549cc6576e259488ad13547cc0318fd4b8aa718fa7781265f957554f844a8f93a16a58d2344d67c153974f5d9702f1a061e1c06ea0012b92a2531b2fb929a9b5cc882a732a6fa0274730a7a5a79fd79fb57b5c0869f2ded315817b5811c598faad0967af80fa142fa05e04e77d2e3544c4d1577438f0cdc9e6af51aeef47da3d04fdebf293b17e8366f0d022651e873e1dae1acd57148b96f58a6f224bcb57408c43e577588cb4138853ebae4a52e36f065ae98adad92024e694adf864557e4a9ac6dcab59f8a42332bbd3b7dcc6da1f1221fe9713b1e0af5937333cdaafad260a5eaf522872043bed4cc592b1b66238f245195a4138ce7c51b3b7cca391559f43524c49a0a25c82f34fbe7dd720016723bcace64b64be44ea314a6296b23010ddd00bf6ca8e3d8d8bf79722262f068a277102a5d6e1e5b0afb876b4954d49911e9f1e977766f2eafa3bf9f336245900e029dccc888e08ad9a1065ab8130ff07326d1ec9d41a032a79b6b4779fe7ef609cacc9c77e1f4b30df76e5cf8e7820870e7673012ce890ba9fd9f8d15db938589fed3eb3f721fc6c092e7841ab064a4e0b1795ab491f0affee8fc85069b836b919f7408c8cb4fa53a6ce812409bbb9d2d72b86b888a63c34571ee2a8ad30a1382f126974f934ddf4a46672906c7943bcb1c5a68435090087d1de8bf7f5fd036ed644e3d7eae76996c625711c1ddc459d8873869bd15a66b284ba6bdfd905b7536d9550c5e8c50762c7611caa44095cee670a0d00e59402d26ddd9dcf4c6abe92ec564197fe8be4ef1263c44855d083b3c7c9ef57ee96b5dff2ac4f538c887e103229bbede3b5d8576c4ae6fa4060e3e711bcded92708895644ce6542132f5bbb3a8c2df009559aff934307a72193f510c68ccc9d8480df26b3b32ef02587f8add8533f4d8c94e40638ed18b3523d50aa5b9e5ce203ea4470a8410e0859b01d63bbe8a29d29fb96008c0c45fa5517901b37f590485f87c35d7b6b84cb5630d0ce1601b0c2162361fc0ecee9c5720fd53be7ef53c66c8ad8682002092c9ea14e7b66da8dbff4571c3c7c86995c75f71066b5918ae9b8ed44c11a7cc80d384688fe9b385ffccb40e72ca8aeaee124dc05425258d8ae933131fa4d4125ad12ce08f7e31e92d69fccbc64ccf12ca75b64ad62e2ea7bf23e9bfe23ee243be9c6286884d360f2db3d6d2f6dd4218a6711b89256c716ba0cf3515612582c10e5f1e49746b983c7befc6c97f4b6e7bfdaef35f39b65d8010e70590cfbc926fc0323b544caa799088d89b31ed547c2aac4ed50bd8a812bbef0bf0fd50ce1971e9c222e248ae9416fc80816b2a4500b6b0fe2c496173d3ec2fbe20c878c3afe9c50893480689ab4d22a08a412b0741fb41bd515f6cdbea8a52329969d07294db78f5104fb19f86b18e84d02e90d001a2131ae474d781e32b1128162e77a95af80a6c5f33e290a2e628daa28eb2309e03a8ff564a8ac56da96f2860c1a87039962dd3c08bc3f7c8218e96fe821e45d99e50237d6e510f586ae88c63dc9238797257e3dc8efd5c8849f6b698c2b1cf179522bd486072dcf08b31ac45a9c800d904204b2fa8741b405642050a4638329469993f2bcf6b6f3ef36d9bc7ea3d4e3104e386a0aa83b7e6d72e6489c6e2568e8a4a5ace4d0c6579f76181c2e5180eba5b803d0bcafe4864133d7923ea1d6bd61c362c30afd796aba1a7240b8740542697a82a5cce3f11b49eaef42ffcc2b4677ce1e77e52ad38e5c118217b0d51831e0d9af55a76608633005711481b29dacdd313d455d6305cdc5caca52107ab2eb5c14e454de90c73bed0815d89ebe8a9d4938f3043b71b80627cda375f7dddc5062680acd532d14a5b6eceaf1492df3cb13ca8875a7fa03b88c3f819f49dd243430aac004d996638b5574d990dddd42830399f5d967767b69cdf3dc9551af9c1539dd548c42927d4118172e4718073a2a89244bde208499258d625eb59f961760087b049d120fe1250c91b284e9a1e60b6ccd4469cfe61d029a635b94d88d1c225edae1d283efba1673bcbb5a1fb8c862fe2be332748461839a857408dd508aaf8031fbb1136b3e8646d59928f875d9db03da5d8d51d07b6d8805d12d27f2606a912763134255424a39064b0db1825c52aa2118d4f9f8e56543f14b2b98d44de6cef25631b1ba7f6314fb423417c75424b560318216c24cbfba804a70b2d5c8c490265b2945e685957109bc7a8b1d2d962b9deb419a815cdbab0a1a5b24afba64a2044ee927ab21b1e72973543d3fa2c4f3bd138758b20ea4856695b68741435e95c842fe387df49618c202bf6ba7a393962b773c76e5e5d0d0284e87c5f2e27ebf8a854d07624881ec64b2a36277b66ac11900bbcd9d36c4f5d582006ce36dd8f1f353880c2bc64927825bee1086e45aea56c3b29c74c017828081c23b02276b95250fd71f62d1ddb55e4a728c3668e5f68db8fbe6046ae337c489643ac677c14e10b3cf74b06244936a4a28ba41ef9163062f0184be45b5ccc413a50a264ce64fda5e7374191e69f61b5318748885d00139ee64dc64ab8b514f86285278dcb30d7dae2c5f5af25e0d194029e001ee8f07d1b736065479d18b98b5a965c6c4c884e5cb86eac808d1772022399ee9cbb8208aea523c54f660735f34a00cf96280add0e7832fe9efd20826dffb217ae67961b78f7a9299cafcad3d848b382b6ff2531030b654c8d53ef27a054f68921113976edb34ad43e61d7a26742d3e73351ca1ce782e3c4e7fa6703890b169ec12df44112909120909a073c6311bc750d9a01f2c59c0e6c72d5c55e641e27a39450a424a70e7717c7cc718244b2023d48d024eaee388bc3986f963a20e1c09ace1fd43de426a8e9b9a1434914f5710d726c04a1a9c80135c8bac5f2d1f1f6fdc2a8709ec7481c021314924d5044ef272b13934caac2e63c580bd8b6e68b78f2622e92905a724dfcf1077d31487be192a36f0f3e6fb64a4c50db4d892c1bc69b4d0f107d9401cc95232d51e41db245b1244b1219508d5b0353c0cc2deafffa0dcd80c578dbee7bc4553b58cb6ec9537232094f3b9e7ee46b735c3ec0f4c4161c0186a3e7685e075e87944751242a6fc41738f873db8bfcb7d276f7bb3c32f3bb5bbf160fcf163bd0c17dbf6be0b90b014de6a80b0a6758c7ae71f2fca6c882fd736d3419d979b59b8fc70ed7551e3bb98c679877bd98b6eb3860f2fd4585e4fb75ee547ac6886620f88a7b0ada7ef79876c48370b5f605c266bf1f35182cdeb9942c5310b14813a6dcfbe34a2ba844a9116a1590cfc14b1026240d87257eb8fb98e2b1745802eea251d9610e55b5f8adc9a125578178a35e15f2c712ed3f2039a2dca0c33eb2e60da222860970b03b1c670dc047932b780b8e1fc7138ea2031dc9d1e512dcfc0cced812da6e65d1f266f3e2911129630c509bb1b9d748660d324e2f35f0e406b81939fa0933093bd939a7f916908b95ec614fed874389c6e85cc3a5621d66e7dfa015782c8f8be1e3b9410f5a15177dcff744082dd76525f0f6d9412dfa90ee079bdff087721fe40840f2b1198f76d79f3f64a72a72c81739a05b9573e663681fd7e74c819332a194968bf30a25f1c83c75b0fcafdcaeaef6d4f771c0f0aca75e632e730686b21c28949959ae49107ebd718e3433b70447de119c3ce33a7208f86bd39601d6388f07009efd28ea094b80558d518f3806d83e905caceb67cdb30c8e40fb828d8d2510a5387bed2917fd0bab58165d0ad845f643e092cb47c17b572d4716985609c97740dbbe5ee5f37108c4033ffe7a2469320df0acae6e9d02d4eed1509bceb818e64f14615e7d8fc6fd3ec5600fde166a967a8a33df4f07acfc5e7e14ee785946d66a4ee848fcbc4c70b1a419fc83c8e36891f54eac65641cdf1352adce4f4e83dd455914c3939e1258b05a38f44bd87bf96f5972a3adc9d7cfe59f11e4c69ee3f56156bd4e44c689b7d79d945f125ccb49a74392d0981e2a89a10bbf9ae9aaf7695a90a5f93ed96e99b2f33c847a7042eabdcc834aff35e6fb0eb3ecfa29a00a7ed10be520ae45914346dcd09de9378cbd64ccac8b3508119dfdddfb74241385c41bb31738a4920f3d98534a881671988d2351019608e958b913720c9043326020b98f3eebc2215242c7884c1e4fefe2e98698dc43f89e2cf402db2e71b682f047fe2fdcbc093628561a4813b828211ff7c78c36890006a35124601bcae7dc80e003d95fcfecbb6a776d3843f978008bc2e19d76aebcdfa52c051e31dbf0283dfecd60f274063d7d6a59251a663318d551ae674498a37199c91dbf4d6e14b5d4b14cefd31ee61fcfe3871329f6fd7457f31234aac21698b1a5ad70b8770e1728e9a04f7aa4366d7f64610929d4f6efe71c186556cd424a4946a537c2aa7507747baba11826c3757260ad5bd0a5e886a402a95623e4224162d17df443b0e2c061b98d1769cfee06e92b7ea6fb1c2031a126a4af7d100d1ed0ea8b892ffa3d4c8c8e86e26ad39397169bb0a1a4a3a8586dccff7b44c4e04e3aa9d8845bedda14ac80b0eabdb6798b647de246e0895e00b41e96ed479a80001904fa9b38893c530f7216333fe7f135746ea3193f7e1e7f78e1df9624fdbfae3e975e6e445b0e216c2492fe78f021d65ceb379a3a7cc81dd49d383602eaf32216112a45c8535a4a0ae39a9f9cf4a4935d403cfffe877aef7d9cf0f35db5f486ffe0344044bf3ccc66c3df22cb6982208a2602cfb371e316d0e8b33937cd6fed0129448c70b6b39a237d9f3ca8417ea835c9dbf0fe7a3f21b87f62d556fbd34763053b74d997091949dfb533eaa7a0bf4eee4ba94cba5ea64f51f2b751cff0373d4b2cc093a5836273c90c514e575666f4a76938555694063574404d4a32370a8d44958b990d9427563a432083dd0861348f0f18a126f3359a579f159e26248b12b39c0d5366cfbb8e3b5297399cc65761b65c4c699a1afb01e027be091dc15b39d2358be286e632e16da5e8d13a923d4d5d3d21c27928bcef39a6898043bc5b0361450834eaa5db21615f728dd2204269ff4edcdbe23802ef2f3c4e80699c0a12891e2203518113808070d88ac04118c4b58f856bd7d45a6296100f224e0634d1ca7ff5fd7f3c7987b0377fd5e4a7e9522a5a22e0797a9ec35b9178a0d3d31c282f04e27b41f53f494afd603c8164a7137fc8a31ce1a112afc2c74e58f32d770c5a9f9da02933e98de129f1b7e6897be34c4229b94b3e1d9ea392731c15f62d58e82de08043dfe1c1f18a858aca1a2555044a93fe227a917c6a61daa7c71095bb7089a333ad1c8b4d35dcaaee00dd54c78f87391c002387e32a559a75949860decf2c5ef129e0947fab33536b5b9331da6d1cf34e03b5e95f3938880c0b632649816309b69410365708e0860e0badf388b29227a056a00a4b9082f15f8e3193f1a9c8751875ec6d63a52d2549107d87f48d40369747aac38684fe168ff91945615515513bedc5beb8b77b537d2ca150edd150d1122ad96cd492d1a4c8e6cc789c72736096fb7c6d6562f370f540c2531eae4a3752ccd15b6920e895843a648f5e63dfb496fbcb0c8760919a1f622ed0bedc30f6848aa49606f2c6258feab6f8b5deb2fd7efa474a03965699e1572a169e7847a94cf6656e919a7963e82196a70ca5c06c594a83d9194b5d446e48d5b381a59ec0a8b61370529bb4a9629d978d89b333314fd321ad77bb10fccd0266d1de877d7f3d00d9c4cfcf979667b26e5cd0a34916160ce94e636194103f752912579c16a8241828a7c8bed6363dec6de76fc138591acf78b37dfcf4d03f8bd732f46dac79abdb40e14b6ff0ab9b83eb0a40785188f106a3bae9e51b64b0f4de08043a92a1236cb63ec620f67741e8675106a0842afe13f0f6f4892c6d79fd5715175910dd5406f0b88f7d32b8855cafe537909d482f4162883365216d57e4fc8819657ca7562c0f19668fc51ab40b00a06c41d08c499db54c4a6c498a8396da1f2e7f9fa53aec9087e38dd919cb8696c1b5f0f356cef6a60ca7b1ff239759a219b870efcd637f9eb858b59f3a08bc7bd9d60014e29cb4ba2447116a6808722a44f7c710defe8820998fe7221843a3b28341333e0b53471032416ced1f2101ccfab711dac2ff85eb3dff1293b0090acc9182a6ddf56b167438fb6ee58bb0059e21cbd7d7aab260d9540ad38efe68472d2e9408b364d20d308f0ad7a66e4fb3ab648984e104fca9509a9dd2b1d4725a1c0add30c9e85bff2326bb6b1f66891add34005f9f346a154c962262f6930fbe0553ed718cde12166fbebf858e89a9f0e21b533ca46ad32dd4f7564670e7727ac7236cb932c09074fa628461bd44c4aa2e0f40cc080227ed12eed308f239fdf488b74e6b82eb003e6d34bb6725275d45688ceb1f0d429d8db5ff6d4458fb303b9f1c55f0d8306c09d5abe65a2c705622357c29155db0844997e589596a9252c62663f5c414a43996d04d049ae1f2a0870f723d3f0e94c6ec4cdb235d77993f3d338a56f2bca24500482cf58b0ca480451cfa37c9b8d68ae328b4de47443ca15c2b3f405b58c278086c9c3742f2f6f8c17ed9e19147e2122069416a6bc51d3e2e2bdf1bb69633249608b7c1611d91466338ae58b1f0ccfecfabddf6cc68bec3a51f1cabd9db46113cfc05c2afa1ea703b482ca8c86af3605f5d21e648665afb38b00e229062acee960f9aae7f8d44d339d13ae1c0f6efbda41161c5f9140bc8a6fa161566f0fcd62d830ffcb7d7d3209d24d67a8a150c508233837aadd182f85950a592164d1efb9910465db4ec8935f066c00e14774366c242e42f42975aa7883f5430a35caa39d28683f877d28e9ddb220c59c2747d2e74dfcb067d764ab7725d4380b0a6e90f589e2258460804a2290b72212fb9f4a46f6ec44fb6736762b20ebf952232bac44888eae93bee7b26f60f6bd75955a19579653d253439a8c3e8db0f590a30578a32cfe11c5b4701b9d5cb15a31596f04814d2302612461d112841e39866c26adedd76ca0ad4fead06bab1ba1e269bdb5b3a4d0db663fb5d5778d4eeb2e1fe41419cd60a42f4fa81a591a4e10532ebe33a4e0f77d130b158370a1bd6122b547cb71ac42d64924ed975ca46f574130d75a864e544d6226ad638b9d584f1c75b54b968e210b3a981b734ff0a348ba8b3a65ceddf83571e96a1ce2a6c0f534f786bf3a57b4e88af2dc2c48045a9f502ba063b1bcfbaba421ad4b24f7e711f980faabeb15fb18b9bc7e1d3e9b8106441f72dcff752f9bc718a04fe9a9ef95a6999c3f171c279da19b04c2eb86721d5cb89e15ce206fb540a7d24a13a07b96a320b041e6d36d64545446034c0cdd5e68796e72f77f5ed20a1465e50bd837e95ca36cf714ab4842e81810aa19a87316e357503dd2dbbee4073782d3ac7b05b1da4bbac43fe5270e6e92afdca98ca62644e8f8d060a14d57823b5d57ab9105526c8b20ac5238b9d8967fa27600c5ef37b4accaf58ed06de242d2587381ee00472397a300314a9d9a098a38dae7544f4546a2facedc2252683fc9ec7053ac741d805a4bfa718d8dfb3bec7ab742162e1f46f15848b274144837c091139b66f69c95b6ce7c7544e250b89d574d05fb0abe45fc4ce8aea7af462668c0b5fefd06028e46a6fd031544abb88992afdbb538485c221ece3ff68fd1d7b2d1b893b188f2065fa9cc1f956020fb141f34315253aad789936781b4f015eedda81fc1d07f47b26a0ff4b85caee6e0e01e9f9836a87e7cb83539d15a2d86900bd40be6349106fe62c7289aa07b432da422c36edef195d8084a3194367a1c1b6a15e1edf0026fd1ca163f38c4611993ac9f663ba98dea544d74eeb4e2b48e6103b0724f4c4964b66bbb71c805b0e190338e0a4fe00e4f0e9b997254203a203e5790b5015d5ab385e6449d31ba0c42e98b04d76269235d1c4979715117598ba37d46b169ce61a770b17be26881820aff4f5b692796a57f14b3e8e5b201fa1708c300309cb6f9e9a89d3390d3a94b7df62d60575d8c044dc67b2b25d861af795ce15be826d1490c9010347d2a403ea492a15bb6a71423ab958cd43fcbab75dc42fabd3183f219a8937b251e952a4bfd0e55d01429587e4281609cc55295efcd67b2dd176e2341538fb7d13dbcc0bfb1f9bff0b8fa0ab876cf96b6849d3948581047d698a6862c9bdff8f1ce2081f2b80a648a1d3bb0f6bf831a9d7981e5eac24f8c9133183de98208ec136a52910723fa2bae34e75502be344371c76f154afdea2970428042fa7a6d398e73221cc437c4c88de607eaab84f67ca1f96eeecefbbad9684c01001031102fad1162ef374499962d9185ba61b821c76ffe5899e60097991639e2a551a1df986e2dc659af309d854118bed9ff748fd7276afc05c91d2bb3348fba98378688c2be00e9df314f01243a55585685f2ca1f0febcaee6ddd7cb47b94ce576ccc295a2234dc95b3bd0083b07eecae3206c277bc7c565f2716041f2747b4c81ca99469acaf51a330aa77993e2621b1d76ecd55bcc6720f973385389d0232bd45e3f23684d37dc63ccbeed0cfeb1a25702457fd907f74b159cac873c280a5fbee3c6fe5796071c88690a711c59fc032750ce351b1777424fd4345c8894a5927909705732b0ef1aa1a6739cb248a8e2a78c9432ad2b203ae83ff21c50b88d951c183b9b271dbf8b78bfdd76e1199de45a7fae426d10af9fb6455de5fa242e79f87046e812380996cc077505416774eed9710c005f7c0072e1e32165f90102956f7075a440c116f1918d21f523c52de14242c574b0f26ea6cb2062b024e051cdaf111f0b732da960bcb774b19562c5f76c2a78e485820026af99c70e6ace9171d45d97fe78af9e7916a4814d946f83a20763d6437ddc09f84e8c2791235d49cb030fe96315f563bd520670dbc2f64ce22758ac35d77e5fa1687357caf868e4839d8184602d73924a39548b6dc73f2f349f213b410df2363797708f526231c10420bb36582078fe6327f66f17d5356b1626b59b8f1dc5e7302ee462d028651cf1eefe2577e1dd85f7c798552189b2717f330bc8b56612362f27b40192c9947618d281abf2efa11980e1190ee78a5fcf85d3ec07e73bdb0e35fd641957e5131cd6f68c26052d7a47ab7fa28cafe174800dd0f96187bf5ffe974575c653ebac8b0929d06226b66797dd9ae4be51d1fb314550620041a9cd2d611e5e283e959e1d80c51d0d5ef1cc2d2fad7976a693e480b615dc6dd22127ec80e4b3271af5c840925a6120a7f4e2ecca86f188295726f7cdac8cd202f9f19a1d033dcaa6887f53b36bce41e931cc600eea9d572b2271d7643d4473b2caacd0568be6fd805a5aa43a1ff9cb92f291119318fa3fb2bbd519201fd6273578763193445e313a7c5a0b76a1d14d41e0d0a3080ccd3f894f157f21d00e157ef13b48f2a44dc1018e49bbc5599387e4ef37b650bac238a6f0acc523d27901c428e14f19ca18040a13160ddc4cdb8e55c6cae8ebe2295e9a13431972db7183dcc2f3ae4622a773d4d0a08713f37cf67f496dfd7658da93151a3a05af497b5d8fd504378149a23fc5967b8f82cb592266fb80aefe70d5a577230f374a4613482fdf6ec7227898712c5685c1db7559e4e1dd7dd9d07933f3ad6184f5389166d9c98f2706376e27caa5c5b15d8b47f48eeaf55965b51a3e1173d8bfb6101d80e8ded0414d811a48984011e8f76704506201823ea123ae1bb1408c0a5ce2fa1683881bbd4e244d4c297b73a0bb2c1a8cabdb894ae88851d9fee238316c10e6eda222580c740eaf0694e8c9d6aae1e55d6099373b1d130080569006afdd248863c4a92829dd843a6d6995997a93773d9d6f026e1f55686b09f3ea8c501f148faa7ef08175d77e16a7c5e108c3c79f2daa927510c367333b67f8bbfee258096bc55b7d32242849b6a030692d14dbfbc68ecdef25fac753f77d60f9ec916521bd6097f0264f8389e8ecf5c87bf74bcf12ddf8841726b463c5dccc1e8b42a6b5e90273eeacaed4cdf977c784d86338cfbbda2b9a7e9ac94a82c12f149d13d618c07009d8255a0ae1a8f570a62a13edb36113f66122f7568f29377ce0352a2c8a80f1c4e26737498dddedf404171f1c34ee8df54e23d77cf08d40184037fa26c73353b3be324822bbf111ac5e5abbe74941328146fb3c1c0a1d4bc20ed034c589037515ad974db2c54fb497a8326d3379c9f6246980c192ce19310452a638ede56b2610b052010147f472e2ac8d45881a411aa222007a7f4e71b7a3c2a30bf0d7de0110b13c7f3b5b071221461d603058042d4edc7fde8d3f952456b6dc15558bcfede06a20d806e6f19c98906c633f4cf8c226a82cb24c6fabcd8eb3428dfc415935416c0b63410c3231429e0bf2ee24809862878a701953289a39c92ccd107f07da85db714e767cbda7bb2156cbd6bc0a69763da824bd6841bf792a61d2d83acd0aa06b1193b840c02463614bcccede387eefb17bff2b95878fc0e1fc3f97f4e5ee81688c174abbbf7b6732126c3c02796a8855f2c981aec8c37880dceff6906809314c4b729b3d6f6210e474be3230684277994e3125a2e71277031c147923debbda03fed1f380807a8dba9c6dbc278750477bc1ad061fd8cc4499a639e19fac2f97c15ea91ace2aa722f464dca57183bddd212d2dea1f79b7d764056b84620328a0f42f5bc624d7a8ae824e7241e538f8562ef8219f0d59aa7960c9df5acd3413962ad133fb9f0e240e407baf72da7ba35fef7c6c6f886d6df94e6e54d2d0a5e7844368026e7b88bf9a547f5f39e0a2c82aa72182d47e7c89afed299e7cb4d233b9e8a2bf75d58a15ee4f62295b96e9491de4f8dacb391a33002d4ee87b5c18940e85621029dc71ff58530e71d43c0755a9de6279e9ab27d85bfcc42af14c207661d8bc6e6cf0061fc91c238b3a43c38d9c06a5e53e6c7b55441d725f0f28bdfa11840e3d541d55c1c599ab25592605bf91abd2022d8a4e6b30b079f57e728008f55b19c30f2355bde8a156dba1be80d9b783450c54b59161bfc6e5d8756e20a66989a6e4beabdefcbdbef9ae9d36efe16d0867e98ff70daabd9bf7c33e4469ffda898987c2269090141e57bf8c357887d144b51eec4ca3cc7a97599119dc63066a8227efc14461249c04484d1fd56be8ab896503a3b9eb56dbbf1a20ba36c57d8cf74b1cb994a8d958e6492871f051ccff4ab1dfa0032bc94cb6618b958055e5f55b8b4c72040fd5bd919b0c7b1e65335509cd9840609b8e56c694b24f4f8061872f788c58d8b49f9f23d04a164aa8c741ae3db3ff0202e6e4dd7ff25ac18ee5c3a68afcd88cf420f3c900f751c547cb730aa2b6217517c66a8baa657af540aa413b445f4273dc089c906b50c3a5b0f6bd7ab0ae6b91f9fd9d9e5cdebf21935e241e11c1856e86282e84b56822b910640154382b14b8d28e141f8b3749cc63e5b64663feb72c2cc99ee628fcd871670dafdb6d5f3358099ce90cfaa88bb3f44be90688a7988e6f91c743f2505792435de6160b979fca7df53d032d23e2d08cf98b31e39a086934b98448ba577baf801c84de2349d3086928f78973d7a59deee2de7d0c9d1020bc735d018e4dfe66cfe85ead10087614c643975eaacdb0b781efca5d0cc7707664b0af9e6213d8823adc916a3511bb45d8b6e71c315bfe51b14d7085bada2c07d12cc8ec43d2d41364f11f0e32405af98bd78da01d0daa0e549087a7c98d823eaa590bc4b5dc3e8b248efff002b836773f15773db4259e64a4f946efe7bda3fbd5a51011791e5d5f09fd66e49c1b4ec7094a03c49d0783654baf3ee980a7de75d83605f521c1d3c4764a0f9d05488f02d22b470f20a0eb0e60d74d20a1c2fc5d30c9b58a4cea0a2ca4c076af868067360996fa8e1d88bc6bc23470abd82e7b0e2a6a7fb535b30fd7d512fb3cbc1321eff16d75620610ddd22094f15ce6c0714647fd95e4abfad02dff66c47570ebb2684d969a3e32bafc7f3a9d43187d41d53808bc124c9a1402fbb8a714920aafb966962d458840de3cb96be7d75bfa74a9597148ab3eec17cd3cd8ed9ef1c452b2d7a21af3f14c9444f5a5896621e4e1c922e02eb0a1fc0b799a3d001e72e3cef939ad25ce51d0b741eb4ca86e506db7acb0631d46213036a3b67579ff2edc44594131a9e409214a1ce3f9b7f5e5a0d8663ca3ef696e13a93120e1071c6a209b41ba4cf9cd340aff12c7f5b109d0dfa81cd958c5b95dc365dc20f05a2dbb6ff26c2a025a6a463e35c192ee2aa93752a5b0866f368fae1e4cdc255e2500d3bb41b63416e181b2d957526f4ea7bd2228cdc83004f2597e8555a730b2587edb29917489ae094fee01ea1b3f996b1ab637fcdc0d6f5a47fffaef4aa487d11f8308e9935d752570395c356768d6f5d5cdd18a8fa52c13054b0e23e7350a16bf3c11fa885597b0250e0b1577a01cfe5ff44ffbdcb2bfc3a734ed65a2fbf3d6ef524930d7fc9542b7ef3d63e47183acac8082a059880e2ea2416509f4df0d58a45c9b538c03dc76eae3e3332d8f75eb148924135be88925cc06b0b1a6ccf09a3cee04ca5bfb60628f16306a9d08294ca637894258737fbd2d8486e4c5d6a98e6fb9264426f1d81ed14449e73f989b917efb03681dbfc39f022758929cc3f933079a80e0fc208366fad0888561e16c748840cef92a152aa4ae01e2166288d18d12ddcbd12c8ca5cdce933a424a3913da2e1971fc563a19dd1713d7c8d7035c13ef523195d0fe5f2a90db3287504b7794e1597385386bba9163f2e5514d04b8f9b8c8ed47944266a575918256816e9f14605af53513039081a3255d376105df853f38f49daced754559b6f40856e3c7c32976568e1304219189a6c25009f1385bbb5b07bb23dd2dfb4cc8ceac8f11f5d794e168266cf336a8a8d8485b7589a1ddafc51c7b0537b264e087bf74ebf45159b91e9793f69234f9c155db5d4235c07418eb644163168284e2668e2255f471a8fd222fc310f208569a2fea5d4043cdeb955462076a35d58dab934ccbdd493ea502453fffda79dc841e2155e13d4b592ff44c7ff23040c2f7f224034fc23fee87b4f096c3635f22835438ef8c7872cd3194dd24f1e5276647e056999b3e9176ed874c62f786ffa4e9accfa489b05d12846919129d655ed2326a98a6f925df02a3c74798aeb6d54ca193d7c1b9205a6a970e1e0a4d7473a1618a647e69178e4cecf003954cc8259fce78b9245b247b246abf4a74ed889d82ea00c2a46a0ac9ca2dbb94228ec4eeea0d99c2cc958c9005b04a73dbe4eaba8bb3728ce110b96a2d9371d1fc8fbd4ecdd190b20340860c7f788b0a9fe3a5b7771bcbfe1b5ece8048a4b7866f68127445cb892afc671591effb6032d2b2b7cb7d2b23cdf9434fe93bcc7d701969d9dbe5fe3d249aee8be90369bd9c300eba3b0ded522cd4b76073b0c0c2504b24261023210a4bfb2d8d979611d24f932ec918ea0427f72dc41b9bb32512b563237632906964b78373f2f188880a046c2720522217addb4f3462d74f2b1e6a37a29e689d81395997fd03ae0a28b29f2bae42404141b347945cd9d75530c23c972be3ddf9ccd70fe8d3f00a5c8c26530e2b9ba89f18b13b3c6bf50d04a89241355d09029fe9aa4d7bca724ea84da25fa73347e1368970cc06be1eff924a35f4885faed3e9acef9f0e8c33b013cd7e25b337dfe26e07464166e01a1e675dc5c37e250af79970001ab10ed2fb2c0044cd22eb54f33ce287d0476c32f0c8cc7edd7e25b259eb77bac104466e286dd776839a6067432521973eaac0d1d1337f202d2693368c49dadb9310a1e7b0fe61701859106e1fdb881f382bf39b8d991ea2c3b70db78686d02f3f848424d6bf435300c1a705b4104798a45aad066f7028e565ce2fec6fab06cd2ccea7ebb9573397b06e48e5509d213ac35271620998f888841da65404181700ae7e720bc46d63e3f2a9b3e6039a820cd60dc0415ffd48478261aaf1bb1a9dfeef01400ea737643344639861fe9197975f192400981dd58504160ded0c571ca21942da217cfddc0fba68bae6e6d239f4e109bc8276b83da25c9e5a273b053dbc1bcd7b054c9743601155c9463aaaa205a05c7a13cb5d53cad820dca95944fd5a19510c2fd60f890b2cdc409008c5e336635b862433c2b8abb0a6211f3c716d6184659635564b0d10e52960669bfa7b265c9b44448539712d8f78579bc27f73054d0b0a25ab01336346c5dfec3115ef85d3d34f30719a8e56c49f7427a2b022ea08b45d109850141db2daa85e2ce092b5b0adb45e8e2f971b531871e18c74217a9b33c065205073c97c5857127ce3fdb85d395a68f4df3e832d4e5e343f0eae0c6d1a3070bf41ab332fad8f9b03135972d1463a106f1d30c464a0100227a5f76ea4d325225efb52597c1caefbc34934a22cda1af28276a3a620bfc71f204cf64f1d47763053a1c6b25d0a1ce92e74c054f0a11feda3eb6fcd0742ea9b2ffd7bf1654aacaeccf9680436ebb2e4ece4c0939156adb71a529135643d8b6fdafe0fd20ca6f1a94445c93725ec6df5893666ec7d2ca724e47c53738238b21d9268ff95cd035011f51747567acd5fad5415158caf2b75eced42c0a7e76b11b87050ec48784feac7699f082b91791ccad48a91af0fed35f0b7af56fcf19a4b58158c1576840e31a385fbf59daeb17fdeb0e41caeb002457cd11373f048e90c25a3ae47921b7ebd708862d0615cc7db47151254880e6bda5685360e2da6694f3ea181503493998d468511e08f1df16a911ec3f34bdae59e171a8283a0997ff623312542af766e917d4f27e535628ed7dd3036337be1ef6829b334fc8393552d2a087df2083df132aa898469baf0b257bded7b9251aabc2a1c11284537d772c55ce8425294fb02011ee43851731732ff454402f7a1a2875e91ab949a76a9007275803a29bd9659fded874b21d8afa9c62130cdbdad321368cad0579173945ae9cbf73090461d05e586657e05dd3d2a2d62ba78085379f3033114b870faf4f8c61979b26fecf6d8be362eaac71a4fd746729201b3cf9b04e4881ebb115e21c08c785e979c23f668bfe3c72f4991e1149322f18247b4d2e33f20330864432c8ec8e212072cac73fce8e31be8981185cf12b7b08f2fef41c4ffd5df72547494f7c637d1cc78be138ea00afbd98763c6ecf40620fdb75fd82e40c7dd10ab9a86f29f0eace1f8d2637cb70e1aa8ba7c4a1f1cebf9fcc5a441d87f841066677518c632faef31ba365e368a040b4f794671916aa73d9a4784214106ca27c404860f8228c38a56600b4239225278e6b3d6509c9888bcf1d8e2797158e10b0a3943a33b22889fd83fe09a784d70472c1fe0426c2f1d0f8da5e74e8c1fe14a2c3f70412c3ee042acf4a37c44681556b5929558818cf988a08485709a471f284c73b7c7e7a9c33bdf9b1cd9db5d39d4f820280348f377e720af7290a915f7e3512aa13844194a8f46a98c47216c14a1b418eb00aef3a0fc88a00e2365ce44f9a540fc282771ff32672ba1b7607cdb5654f7e87bdffb7abbe189ec17f5ca687d5ca58281bf2688b0769c19813af455f954e17f601fc7225f25e94f2bb85981aba80bb9f61ce4da4dd1e083f204bf0ff0adb88bdc42b3fd896fd4584f05df9f296ae186b99168d2c2fbaebf29a759d5c253a6d4678696e245c3798c9109be7e744a9c14eb3eab96294a5abc09d3b719f0017cd67fe0fd03f6037ab6999ed8ec4795263ba560e7bd3d94423a4262570f16a13882455a06f5325e78502d0d0f9dfbc3eabc8201cf2c349fcf63eaa34f8c1e098fc3e545af202b21e2450f602ab125368f23883e0682a7da115046304dd03b7b5a68a610aabcc13701356591589bfebc018b25ad3884fe55298b847e807f968925c7a6aa44ddeccef40d6ecfe310100af39ca7fa1f69974298510e197947202536ad56a00465a8490d18c834d85c2b39be97de5c9482077d01324c62fab959993165820fcfa4aeaffb7b39d441b849c95e71364e185c903cb5a42f5c6dd00517fdce1834e3df7e67b2d316ad6f057656530ea0fc7ad7c0c809bbee8e776a73a8f7b11b1049ae93ae48937986701f5718eb924ca57f5defdf332c5db233761e24ccd96bb3858494b6586a331056827697e4b5571b03b657073aea54496de788cfb070bff64ad6572ec3a5657b43a5cb2425b269dfaa68971af83b7f935a80ede8a2dd8ebf5cb49a02125c7b8101e2731728febfdaa8ffb6e16b8b426baff81095ffb6b7c6bdd2e5a82ac2d1f21fd8737adcabaa6df68a7c00b997a121f72a83767bab59e21abaa4eafc8e2645c11ff77289e6e650b48d2fc983cbc471afdcbe06653f7a01b731ee355c5dfeb696189fd6fd0e7ce0ed6269140f6ccf48bb3e2a1f32298f21e16fc144641428b6ad87d341907deeea508af98373f91a1cf790a88d6569344420b257b00249cce58ea4e34f6844032715436c3580c8d03024a3495e2d7c139e49d23f15009c0997c5811536e190742af6ce777c8108ace0611984110a17923f8f972968835518257f1fd5df66ed24296b539162531a2d6ad3df29ff02ddb87e29adb66a8573c2be971f52b454248b07464baada29c1450ef6550c6ce619a3e192372460d2088067135e42a5f14e5cf8de9a81026830fa7d854f99bedd68e99dee9fd0cbe4cd734a4e6f500d1c37eac010f41d09842fce2d9c9d558b89b0683cf78e49f1206d62590a7b605c297a5207df2132d711d2fd1160fc4bf2f78ece18185a7c487c331d340350c9fa7f54406a680bc284282af057ec92a390ca295afb8cf17e02f88e3042959846f62bea0060191160965aec2b071da4c06b4c8b3ad74c64089c8313a9f0850f0fbdc09d43cb6fcc40d3ac16754e7fc0883a5b4ccb4286d2b90dd166761bc3d1d71422fa3c3e7046c27333f606f607aa667330ee28c3e63ba6dcf1a530b52aa0a6a3ad2d83e596b224bfe714853926f851ace0f1c12c2e19e5e801aa9f4841c51f3538953ef5b5fe4e4d644bb929870274e3e3a67708cf6f277202031c884ece4c65dcd28b4800a16f3e6ce63af791a154d58cc763d11469d9ac142c1e02562f8f1e052ccfbea9926cc60fb599b8eeac8054dd0be3f3f27e55d17f51a3b09d0fe7f7e83c9080df09f7d03ff2af829dc6ade99537e7f68222e6718844bbb67aa774a93b989b03dd6904e1c25e73e23d022fa58e0879be3db1097d71661924c445e6246a5686d440ff910284f98d3a24777c9252b4f8b58334324c1c4f2abd6c1f00332e0cd07df478199db8e0f9a51be719f30545408bc806130274786c3eddc98eaaaa1c713150251d43db6bac0fbca38eb35831a6d69a1637b501c06f0a453c096dcf20ca8706920e4ffc6cfb8a4cfc693d12b817e4fe34c12b1ae7038080b34dd41c7344cfa524e455b305b6356c0b6e1b3c37487e88f86b030f0282c9aecbb32ee7446291578453ddb5df31bcc03c550a4e2f0f56391b1819f44181a1f2cd111c88b64c83e1e24ce695da856592f14f58656734355ccbd4b795e8f9f1c10c9f10b5d0180db8fdfc710968b3ec7d6888076fc3c20715f5db5f44a531e06c217fbc478884eec9bc96d42cbc9e0162e803e94599f64a64deade03b7be8d7e0649cac6650eec8c2185cca5ec13fbcf5ce239d205bf922aa0659475270b67d4ec4f98d60889f443e8649807b2d44051163d4798007feee67db4c49d3d1eb75a2433b07b4bd56c126a4f25903534ccf80203255e2476017b2433dd6cfee3fcef40349c6787de9b001f8c6535bad7e282ebc6384fe34b9d6a6bb058d5f8bb44fbc316acf19e75696663aed7bd066c67fe255897e6950e9669872deec02bd34d4173f8d3633942cb77576cbd260e2aa989d2e559021501e72e928ea6164e3fc1c14e33cde840361cd70aac6a9bafcc057a001b5fca5aeb65b5e7f34d1948d566f92d603534b1974d2d860a08eb0e919bb9d622b5945f72391db71fe27c52e0ae99478e61ff43438a414cbc6d543449a55d8a43f8d45def0d239e7dc1eb9313a85c0d407ec7826609b1d8c1e1e084f2dea04f3e1d93474f1c595cfe89eff259450f47b64ff36a450bb611799204e02e21a0c925b8fc81e4c90daaf4b1a75776ee3817bbd6083c4c47822d0220b5e25b1c51ea1cb03297696744a687fb49cf12f553142e68392de1c504c69d0cad2250ddf250cc7011c04076270f40d1c7aad866216d25d1e65affaf1c9d322d68d644de8c5e2b21a447a4e92bdfc8f584d6bb0d0aa3d6cb37bdd818b25f872844622993f4387a884eba649282cab108fb4c3697f4e6ee4b8ebb7743e6f39949cd1468d6a9798390c9c25893653ee8b9983ee96fdf8a30475a04d07723ecf00030207e895bf47d1aaf5cada4dcc3c6643e85b307448f2ab6e2eb51b7a6403b77824166f42646404bad247c255209a59493a95e340da968a18feaceaa425c34315026ccb2434f9bea89292083e5f2a46624c24ce5b67993d1e0681685bf06cc37e88a5dff83e6ac0e31f1b61fbdff652aff2dddcd8184b622364374208d97bcbbd03070cd30bbc0b556529b65aad561373913b9dced93c047315366c94ebc6fc68ddf51eadbbaeeb43b0ca65b3eaa7ac7e6587601550e3ecde88364eda4f165551bf11772046a56e5a30df2c0c91ea359eb5d50be6ad9b8186549612e1c053bd0856c4ca55352c6c983bfb53fdc5660fabeecb79644c8ca32ccc316e4cab755a6475cc1533571303cd1e2a950e37a675b32078aa9f4ea7d3e9345bab5e755900611a7551fa05a1ce86314a848d608c528131150e3cd8a96e921a3f22716a5cee48ce60af1c52bfb0fa96eadd5bcf13b754e75e39cb1d85c06bb56e921aef5e69e743f5eeb57597f579cbba0ebb1f2ed739d9b2dd5db6bbaae39a344e8d1ad851bfb8268d037bb0962b038227646257f698ee1073c71ed35d1e117787f8f456e4ecc96a6ef054775d8ee3388ee350ad56100ebb5418ed7e1ae2653af4716fb9ceb95c6fa95aadecba59bbaae36e673924e83aea390887556fbdaa6c57d41d51e26957bd021c76f9a8eeb2496a5c653b248d53a38685b83bd2afd6ed90340e6c5d3a942df154579db4e793eb74d24edae9743addacddf5aab95aae96e6ba395ecbd5922d3a54a7054eae9fac11aabb6e8eabfbb80e31ec76b8f2102458f5205c4b65335cc2aaaf6c5e2919c2448823926002b7ac4f136e5d6533ec02a35e25d7b2a8af2cc4b033023e71d99f0cb76e8ed8021cce6e06c2aa1b84c3dc0abed5ca7ee0653a949d16699c1ac74e875c5fad6e56bd759e7659d8ed70bd86751d1102b85aad2cd0c4aa1ae7e9dab2a82abc0c3457df6ceb9a0d9a58f51aa71aab89a5ebb2ebe1725d9fd35daf91ab61ad08c2ba1ddbcdd9ecc453d3b49ba4c6617772dd1ab448cf603fd1211f78f5d9e590fa555dc7eab3cbe5baebabee487f2e4cd33ccf75085d37d7b75eabe55a963bea0ffbca724dfac3b8a37eb58e9d6bd2afd5b1556b05572aecdd116e0a8c9d3b52a930ecd3065ea6437488a948bf327744d42f8c63ea8e7448fa953af6aea85fdeb1abec947ea9240e7644361d3952546464c484c910760905bb8cd2924abf88609f45b0cf29a6119b5eca34d5c5a8c8940ec119ecd85b57b9be9a458d845302fbfb6c0e35e5d19821d34a8d338ba834ce449233d85dcf5d648aa6224689537066e118cf914abca2a9689cf944e3704cb18bf8243a894de21571495412a98853ac9e6391ccc2700a95241a873bcad138dd912539831d3b06bb804fa0931c373430545ccc2c8c7d16499c2e82e35d376bf766cf1661ec1349e24428718a17632261ec74285ec992f89826d4083fa143188b77b993297e355fa86e6661e79824ce12903b923842c414c714bf72b37784b177323db32471660ed60d0d0683e565578a8c1c6206249ad5efaf6d56d040309884510d83534e203c394d605293219a781309f208ee28d8a8bf29bc787925517f54fa33d2af8849a26e32624412b59ca2bf26ead7945212e16ed99228cb2149441291474e50e509ab58b6410821cce66c4aa16dd854363984114d812515b1833df0fadbf326847d13da68d6058ea74f1aa785ba18824214c5c8144aa53122385ec371c9513cb5b3afe82638deee26230f3ee381079f35229a45dc89b0a32ada88d72484359e263f2f472f59acec6a174e0fb787278481c158945de0384e4e1e2186e06172a2fb864788c6813d32a7b5da6dcf0f62b1f62c0b2f62adfb7433ebf19409586304a60899a8c5f15a8cd1da8c3ea142991cbff27a3a5d0f76fdaa9747f6e9d5aeb03a1ed9dd0ed4f1f364b13a290467e4bb9b5ff4b5932b99695b8bea2f56179b51d995b7d895c7af206d494a3c72469e6477969b592978e4ddacada02e8fd3bbcad93cb1959a76b397ddcc9252d2235e675c541c5e84f1b610517178748807dfa79acdb49b3588a53c168d502ba4ef9b81666d0b7b09dc360fc1da699e66cb6fdb056adc36d3b45763170038dfef496f8d1ce58c90ef0bafd71fec215bec2a73c2a9c2c90e27c623c4103cb7b9cc13192601094199909f94d21b84898920fd6a09a4bf968f2fe9e1f080f49704ab5ff236867940fedfebaf3d4fc5ca94e8ef88474a4bf19ab0c17dda5815555e7eefc226897ee5dbdcbc5f5de3ec285f5619469d80e55b09180858232f7ff96399b3e2045e21c70a3955c851caa142ce1472a490f324878b9c28e46c91939403859c27e43821c7494e13729890b3841ca41c2d72949093849c263948c8c92247369687714e2caf03ea48891bcb0301751ad6e4fc10b17c0e29633c3d59c2f005803b44441bf13ec3a5144dbfe4bc311964c978303415cb49cec1b90e8f8492fe5c360ac999a6b209fd0c5e474b25c7221a6ed773df4d28f64068c4f5f838148bc49d6c286a4a75d2c3ed4787863414b312e0f8192337b312cc53da5469b743ca39bb8e5a0e49e2644cb2a1b8439b3c240ecb9001c4611984c3b4021ceeeb23df9d9eb3985237499c23605252b7834ecb724f56186e63b97c997009d5b5bbe75f5ee7cb9ca8ca6d2c4c1d3d0eaff6bb439d76f4f71595e474d833f572acae9ea7939c58368e898969a2b221f9d64bd77a895886056a2287673a6658991c1e5f73b039cf3c877f348ebad96254abf5d938a7b75ea5ad7178a44408c71f3959d8138b240e91165222058e8f46fd5a8273328a45fa058faa6892dd4742424253f4e0f05a87670d4b0febf0ece1cb73dd0e1ba755d7e2b9b8bc8061b53cd70e35586a389b0d07ea0801c270f71f1d3848a5037584fcace0a0d50f5047c88fc441acb6f1fea435ef67aba0d30675822ad7f23e6ac5e5fd14cbcafbaa172fde5fbd7810f70275822666bd1f03c37b3f868c97f7eddde17d991930efe7007582583ea813749a813a7d1d68b8f777b0c1c38dfafe0dd40962f101ea049d5e502788c301758276a04e102a07d409c2f00cf274409d200dead4bcdf027556deefd3803a30eff7c00375e4fbe678100b6cc36e357633b2b5d88d682bb20d6d2cbb09598dca0e7673b2216d4dec76b45db131e92fbeb3db92fe8c362536e2c04355e1412898e630ff61f90ff79ffe8f9c302f2cdc7db421186ebb8f468465abf7d184b8ea9351d93a7a9faca9d2be4f36a5bb90ae4205fb6452e88574161204835907c2b0f71e18c892705fd6cdde0d5ae1979b7db4223f413018e6e624a707c160969b93e83c084649bd39098c9b836030bd3949cc7c06c2b0bc4ff623e3e60ccb1bb4c27db52bfa8b4fb2b3735fb8b01e9378b1c893716d0aa813e3eb56d42f9f972d5ca144091c8c8c962c61c2e48a2b8e8e9a3441ea97cf8654c549bf7c362755aa50c1f15b52bf1a431e12b7fc27e297bb15e1c093812365e038ec9cc3c639ecd761e3f8f0bab23c301043484808f7fce7e53f37ffe9e13f37fec3c37f6cfe63e33f18c89270cd31008ff00e87dd0e213d37fff43c0806bffc47c8cbcdb334b2ddf4f02ca7d088f470e35912713778789645a8f060f32c87586c6c3c4b22532ec4c60ecf52e8e506d121a4e63bdc1c04836b6e0e926d816b9ebb89494a16f0cb3310866b6ed00af7dceca31591928af609a2a34a1ce2805f2e4fcb227cf3c773f375dccc02e2fe50843523469a18715979c1f29898989898989898989832a68c49c62463127136940d6543d95036940d2961454a4a4a4a1853525252522a7a8161e1b6a60abba21718166ec38a683056f48215c160452c581187156d585153535353535353535353535353535353535353535353535353535313121212121212121212121235428d5023d40835428d303131313131313131313131313131994c26138993e33b87b959d339cbcd1e9398336192e36a483b17ca994ee7de2b95e6d092393487e6d01c9a43302cdc56bb492a699ad61d4a28bd49442a4925a92495a452861ba9bfa6d238ed8448e3f493eea267a6689cee28974790401d25a803717c4c6204698ae6212121e136d2dd799190ea5b4332e27257585e2cf27264ea2630376b2c377bdccdacede61bd99e409d887f89e366cdc3b9998565bc7cb83d05d4b9f98bdd0f1955aa54c9413038675b60ae878c2a55aae01f1cffd9fe53ff43ffb3facf7c57a54a952ed2afbe383907c2f0ebf1a561e4e364496f3e762e2bf3401da9f48b5e21428050d8e642821aff442a981e08c3360eb4c23f2bb87bac578810200edfb890a0897fa214dc1d68621e0ea4c23f3a707ddcae102016ecc385009df0cd850461f8271ee11e98fac5b170df563bd47c45fb85e30a8135a80bc1344c610dea402cfc2371ce95b006f5781c1b610dea2fdbb006751f6c066b50bfb11aac41bd07bbc11ad4ab3dc11ad46fd80a6b50e7c172b006f5ce76b006751b8b8235a807ab77b7637bb5a8bfb032dbfdeefbb3800cae1b8c35caf4ccafac0524ae77b14d485c2f50c4ac17183052a9548a476e29abbda65e6d6aa93fa64dbaacbed55a5fefa674b727324a09bca48da73f29e5eae6edd8f6d53386dd075b490cc396e4103c42f427b759851862935bd22be6f25b17fda271799ed78acc67c8a2537392a95fd9e56514bb7ab5476750c2700a181e9d41081f49918259eef2da94f588573709ebb013007dad599d658958b1ba59f5d5a3b8978120f993e12156eefd64d8833dd4c22321d8fd58b95b8f7816ccb33906e5ad6c0c6ae5dd5b55794159a88de2ebb1e227e2a0d52bc41c6663b6cb23c3ab9f6bf9eab0ab3706ab6fb131d8b79b57f727c3f1cefeea4dbd3cc6d2b079c2d8976b360779b9cc8c178b1d614d30a46dfbcaa5aeb62965b69b3d50a4a7d4262e5f35135cdf46417aca87ca698261af7555ab77cc06814918527f3009b7eacd9ecbe10a2a61ece67a2d084cc25b056012aed7677518af1d53c5c20643d8e5154ad3178808f578500b2f4cc196b0250c05633ac2126a0185a97b64dea06051b0fc17a6c03030d4a20b4e70c5322dbcb95a6d760686d42f999b2396b93c4ce6b42b739857198b21f5270f63b1a32a3c9967ec08634dced3592ec978964b4a1bf6047a1988e219bf2762c556ff7bd8abc5927ceab127fd4959d452c9193c8b5d6954d49f9445b21ebbcb73fd76b1a4fea412f6fa8c2561997b401c24f176f34fe6532fa6f42462c1cb58928bdd9e24499cd8d361d87915f5cde54112bb1cc604498cbd5841d94c099e901747bd5eb57281245eb9ea3f1976b939b5e2f263971b24b1ea2c56c88f13d8e7c565f94f86b19b51d7e5c6f838c67e8c5dcfc7bdcd76afb631a03a0b6eb192a93f1a2ed6fb6651c75e372b6405db565e63f713f1b66db6718d3f1107fd64d8e510d6c4640f9218751b935d1f19f6fe9361d4513747ecdd9f580573ff8955b0cb51b6e59ee50ebb1e2d4fd99f950b14718c0f0dd7a6f16a7f32ccf21736486296b7d81cb33d08d3386763b6eb43bbd9e55e962ba1e440c326214b82976d24869d0fd76708f9b17dc6c5a270d5461c24b1ea625026d61ee358f795cd3009c7bcda886558fdc95f6bad90792bc3662e8615325736e6ad980b9bd4cb6347fd82b93c86d42f9889b7ba6d97a70ad138db167046be0a4eb6f0a49d241ddbdce4bc586dbbd5660dd7bbbcae5c562eafb17b0114b18bcd313ee091cbb15717bb2579db937e792e39b83e08c349425c0e24f10e97173648ae5c09e5caa5fe64773e5c5ebd7bfff172b9909f7ab855c9b9401d21f6070343f0ea3576d526a15f59a09f0c3fcefeb6ad0b9ed54d32f4f5d09b35f1f29684b35cdaa40081b022c7ac1e24993620acc00e73c01c56c4acae0f0d6ff72756a9cf5b15f09355ce2edf8e6d10af5c8e5d17eb7223b6ebe3f2ed3e2edf9e6c49b1fbe17237a5fee4b7c3ad3e48e29ab43d691cd8d3af2a97e2bb3869b0f7cde69e82b76329386f495b528604cfe51c96e30bec26613da38edd18ec2b46b8dc2443ef61dd987903ef389587e09bbdbf581911831df66c4f7a46bebeb031d8578edd2d095b4ac2a7d49575e21554909e823b0bf1c76d5878f1f9984c4fc1d8e5ffc993cd98946de3340cf6949e79ad88e7696c099322716411c496240e960467e4b1252c651296cf8ebcec712b50c4212c02e0c223924312b060cac1880b2e64c1451b92b42c43d249dd5509528c8c502814f1062138210c294803172360431604d6085ab21eb5ecf302f5d7f1f402f5a7c9998677a25ff107ec44c71c3937364e34110fd45f3b41af134d489cd813a760a25f18135609b8444fa5d026e04c4f29a794114ad17a086d4d0a372c18675141082885204c7002b750820e0c81c83972e8330e86f701ee0c116dc8c343eddbe9856a75083d38c3fd855559ee41e2ce0d6b8878c372e5eb65f54f13f5373939e2ce176df0c41d967ccd3efcc034e5adc8af83f2c1b0e40dac89f246f6006ba2ec41467943f2006ba2e441dac09a286da40d5813a50d19e50eb206d644592369604d9434324a1d64943564943332ca4fe6006ba2cc41464943ce803551ce9051cac8285d32ca2ba3b452ca0d4b29a37c6149964b1150672589901f42056b627e81b30fa6f0a3f7e709ea713750a7b599ea1525efa8cb20d425216930f0985062e94889253099fe3ac61823867556467e38f06480600d04c3b079ba497410484f996fc649b19b845212d91d824708ba8494314a39958871cac88a505e26a2908686a59c1c3c394d6c84b8c972c42873e4d0bc22cfd65a3c9623e523113da3dd0f7eddfffa7e34dd3939fa15a3d69786d3be8fe630589e6a096bba45c5e1492c0f5f53fac0032fff321e118678325329e5d5a0c46ca653be61d29c1c3c394a4c00914f4246c9399945444e0e2d89f6f2049ab8352c89de81c92b21b5a94403e991447cd5ae4ffce9f29cadd7e655bb8c5af4112f776fa60dfce294126b07928412589cd9c4dabdf16c6e3e9978168c7ef54f8d85806bd22f8855aad355aaaf56190a7c72b9aeeaa460ac5ba569fd4988c48397f98cd37886b1d322397ba29475912d612c8382311611aa0a4fe634ae7a9d2a1b6566be96eb156a505b59497dd35c5636db2d09991d53bf529bcbf3b66dcfddd2e66267517f9bcbb66d2e4fbdbad88ea9bfa50e4ab794ba4beae678abd56ad52dc5c06c97d129f54b755756566ed694baa42ee9c9797ae21a396ef6b77a5db15c7fab7708bc95e71eb0bf95cbc1fe56373781b37625cd764945f0b6db4dd1df6a2aa1c28ae43ec4ebe155656751921a46daca53cf9ab672ed5acae838754cbb5aeadb6bca4ea359a4a43f6c7bca429c753bb65934954ca3b9f296572274443b1d15d106768f87df385dd22f1b1b71879a4348d371f7503e86cb3128704c383b3af2b02778dc11d67324351b36f760e33349e2d4383691a6938e0aefd8cd8dbdf34005c66e63e9121b9632e96aae76b347735772b8f63262c07049b91ebb1eaeb7aeb22d9ea657c09a139cb0af5a367b78e69dcdd408996201638fe9a260ec2f13896533551203fbc30e710e3377e5f0994ba6960bef69aeae7a875d95557751224a448768113ad45a19c13a60b8042a10999d0fd75756f5963da9562d9b6863f5538d5772a7d5ea5c1327fd61cdb53824272e0b71759d5bea576b758a12c357b675956aa56aed583981552bd5909bfe86b4ee4fe652a9542dae49e3ca2dc120bceeaabaca34aed531b5a6932a9f785fbde5724d26232e1dde5d833835dedd19c5c3aa1f2bd84775eeea606bd8aab253ca193c5494d22fd5c5b84f268e7b9e4c9ceadc398ee338ce08b39329fb8cd21f7625d8b73ba5f4875dbb93a93f6c32d1a2fe265dd22feefac464e70eb13dd65d1fd5bb437c8f9d5e017554c7ba2332fe18318790ab2d2eef2a4baf8035d8afa54cfac36e2d5dd29f84bf5906465dc6cd325087e161d4cb65b9dcacb1fee16c08deeaad3b916652bf56d944ca6652966576264da4e964224d24d4449a4e6652ad771a65b06bb532efdae9507fabecd5e6d6b3d34ad5753b569a153271eb024d7cc26e5ebd75ac3eb75aadab86fa6b69ad56ab7573adb62bea8e58d757ba1dae4e053915259242bb5a28c17650facb9868aad57d5455656bbdea26a9f1ce668ec9e5729d3a26db2df587754b1883d2cadeea6add93acba76bb2428fdc2b263ef98ba1dd9acab57d82909c1cb1d5112c6de1175537050323582aa3fec1b760c091e07258aea980aa51d3bb7d4af18d4218ef911f704632d974b753a5d3af4d67b0c5e47f154f5d4eda84254b448cfac5c970eb556317450ad7c5eeacb0b8cec5e635cad56abe5d3ca5cae5af3e99c2b6be5c6adaf7e23eeb87ebacfd955cfda0d3e9df36eebaaaca5be755d3647dcfacaaa5cae566edd7c835551b35af7e384571aea362ad56ffa85baea2ddd0e5585b566d5cd7365b387873c01c5aade26ee640f60d5eb5d9d47ae5ae754364bbc6279e56e137756e76ecec199f5566569b91177b8b75caebac12dd6e5ea55cfaac3ee47ebab9ba3aa55c4eaaa9b7dacaebaeab133627555eb367147f5d695f906bb3cdf60d75396eb7a6457dd6e756f441b2b978bea7aac5656ab17104aadb5d6eaa3e2d655bd5a9b68e3f416eb9dc5bace235337e2ce297bf6554a756fc41d555d9d7bcd7e70f746b4a17a7673c43786fbe9aa9feae9409dea7ad4fb78373bcb8db8535577dde5faaadbe10aaf72dbb6d3cdd293f5d16e901b1ed84fb711cb578ceb6c17f591234986a2903d52a87d98af49c8628b234aa620410fd65c570fe7b9423b1e3c77f96679cef518e23cdd45116f15473b2267e6b5c39b83a8f0f6d4ed23fdcda22dbc6d22e9228e082c441646981819d5a1a6249ceea945a628c130181e4d21c2b5426eb3dd359b3a6769f7885337e338cd6b67531948e1b05daa7beae699771f02e29922baef5c0af56be7f36d64048f6f291883e327c3a9a7b01db61ad7bccb1ea799e7be6383e44f865357439283648d4971356cd67638b703d75d113c0e14318ecbae078e572ddb7800bf79a8530f4f7950858aea899e36fa9f9a4e54e692c6c9b154d3c08427ad53e089733582e761ae47f03ccc55099e9b466951bf725381e767bf5274099e6dc0995e81e72b4480078fa608d50ed5755d8705eed170d81c318e73dd0e8f082d6a1fe6a3780f356a1fe673c43db4881a753a5e55adaa91d3617367d43dd3a2ee1a0e2f756aa423b37e78f680b859c769910eabe33a342052f866164ea5fea2db91a246fda2787e429d88bb8967d7bd66e0f917333084353d4814e03487728717c022613dcbea6e0ef74570e7f1aa7138acce7bb86a6352a9eb23c3a907499cba5ee56c3dd59d01c0a310e858f2b8f7388fc46121f6ba43581383e310a7aa8dc1717964b8fbcda1f39eefd89ccdbc8ba90f923cdd63bb8bfeb6eb58d81f009eda8e23a6de9facbb5892c79284270b019eb5013c7b3826b3700c8cc38671c4b387616416869163e3d9e6c7f347c4f38b786605e0d9c346e0d02239335938468c9618878dd322e3858e0e7ffd347bb8f1e1b06ff06073d896750f7bfe3e92c10be2aeb348c9f11c27c0cd5a8e0fe0662fc77c0b910e1d17c0d5f1235a88741c470b118ee3b811376b381e809b3d1c2fe266168e1371f371fcc7cd1f8edbb8d906c76b6ece89737bcb76bcbde766564b12eef9c4d7e16616bececd1efe8b9eb3f41c889efff0190b753e2f85e4d4f9cecd2c9da7aecebb6b74eebede6bf7d4fd00c0cd0d056f3f753d783c4862d89f8f9b3b4a8f241e57b5eeb507a7bdfb1036a871e5dee3f545b7a3478fda5279bca5ebc183c7d58270b8be8bd10e7b62b4cb5cbba72628783ed871f313588857aee39cf43793283dea2893263c0b34afe86f52255ae55e6d108e163d413baadb51855870a7a4bfb9a42bea6feed06e7704095e0af624f1386ee7b99ebb561299313f39d4df77ed5248e2c41e5a4495348ef779ba8432e9d7ce8de1d13366cc9871cf9ea8f4cc7cc968f7d47403ce7245e6a9ce7301b0104860216ed69ee26cc49acd37587ba55d0f0dd77b6ab255a3ddcd1a0fed3baf96eed82037187b10db7b6cc636432878fbc7d3bda0582bb4fb21a590c46923ad8da49113bc6662a4a404c993be026f4fbd43edc0d371738482b716293b0071696e8dc732789d84b737527fdb638e9b9b08dece6204754e6d8035f393f5ec8269b068b09e354c83c661d743497f537b9d38bc27b9beabdf79eebaface887a9feeda797ac7b624f5b7d32245cecc7737ef7cf5ba63e5ca4a2149a4bf59bfface4a0a4922f5b628f5375b8c30917eb57c5e0eb5187557eb25fdcdee3693d94be6db483b77d5599a2c69823a10cf57ca842ea929c9c58e9b8d736a9233f3b00ae1790e63dc9481977a3e35753f50a74cfa9b4bfa9bda0f9436af51a3fe9c78a9674df0529f6f4fe76619bcfde5386e8e48f0b65dc6b7e7c8d88e73b3b7fd558d9c9a248ef725e0ccf6ed3edcac6dbfb9d9dbdec3cd2cfc43b86de7e16eb7b959c342c099ed766606cec099d7383541c1f0d484da81f7999b27668297c37cca3615fdfa3e21fe2cc4f6fdcdd36031c2f3336c56e14c8bf0bc8ccbe64672ad90696d96b9cdb0890c9b618cf996cd11090c9b2394189b9b0886b142e68b25e21db1ac90c6f9d41464bb70859bfd3a71b5a3315a7ff31073fdcd6b2f542d2c4b1a47e354386b464ef07c4f0ba8fa48bf52a97bafde8542d563057d13f514fd5af9d4ce11c999f978746a426a623e3a894f1a4a8c321fa74cf8648839275764e58ae1a7ce7a56c59469b77e12e7d4063833ff018d045e4d019eff240eecd1bc79d8046ba69721f19e4f4d785e2524715a92608b1489d3620467e693582d52f09c93852776a98a48078a384483220ee1b228c4829a2920312c4e68f3949d2910cf23a9f53182661662180fad4601fa4aed94432830e7b1e6a4d5e0b388bde3a1ad648821861dc582e4902c4a2a35ee3c0498c5c4056935862d486eda17639882dbb2b0aa086efb02b744a1014b142c326eda549427e0b630b86adcb45e14a68d9b76254a1b705b14468da072d376648001c74dcb5581dbbae0da71d3d62c70db187c52c26d57705de1a6ddc0a06169db7ab8a6b869332c54166e5a4c0a6edbe1dac24d4bc90007dcf6b8aab869a70c705b15ae2fb869650f56dcb48da5855a4c4109b77dc1d00bb86d0a57c8822fa83ce4a80c4b1822e33c4295171284fd07c29a79208c528cd2c7f8381046afc52a58d678f313389e474a2b6488fc91187bb4193b6c2e7f34369eca0ba287f140345e1ffac949fb13c343c35956a1c56c86023ec26358c668951d0f8d5a88212624c678997b404cfb256f9054c24d49a06957b3dccff6d38de1a14df9aa41a803b7e70e6269f266bc0db1dcb5204de67a0d0b24494c64e844897e65c884914a00028c850d94f0ece9a60c99ba737676e7e358bb3fb10a3e1da87efb0f0686e0d34f16a8423c04c72a384a0bf110ed9bfd396d0792dbf591e780e4b773975688fc0f144250e0fa2e7752e3a171f6f4ce72c744f4ab76b78d74811bf737eef2dd65fac55d2089b96fffc92e77637ed473e76ebd34fd6daafebc275e66c1e857f6bfde9369700bf9d1be3dde1f0c0cc1da8de1a161d4313004030dc143f08a6673cc116f9b8552caee1cf156cf5dda9f27f0f623f116f3435bb1b9be0a399dee4fa6695fd11e24b17673c67a68187598d1c083591841c2492e30c27d181fcd66218edd8612a269f727fbc9b0d43eafdd208933a8d91cd33d48e2d36663baeb233be9fc68000a0c618d76edb53b1edca66d1672f62756c1315a6bd7073c82183bbde6bc5dd32ec4276d3bf6cd67bb769fed30fa6b567f3fb67bf9200c4becd6423c6d901c828a2b66a844a2f87afa44b06787504788fdc1c0909a5bd10362787fa47c3c66890cb97a4200a5341056e418fa2089e7b14bef4f86e7e74dd217421e88405803e1070f450f91337ee188cd4d8e4d1315387f4e3c916d341a9b1b1a997e79c7186dcc7a2b19fce11865e0f882230b8e5588555c813a018035fd7c4aa982d0d44deba4f022dee20e12d1463f8900401d06c09a7ecbd193264a7167092071878924e24e9068c302b0a69fc4a49483b0f7c79baf44dc6922da5822ee0031116b7cdd4c9ecd1cc01e07b0779be81729436214f1ebbbd87802f8f557f64503f52315dddda9db94938967f9fbe5bdbdf895548baac5660ee40d60ec59e76362ef558bb05111d6ac6428223ecde0ca537fcd2c27d844a36d5976a1a0a1c1d8958943a8e4907a8aec29783e66f6941a543a8938628878279808b20411544b426cd66ce9820a653207736ce48c3cea45057a0a562f2cd29f3c27d4a9cb09d5a6fe5a96fa3bb6d462640a8e88e38814f13246a50906060626e61853ea3227c7c6e6fb7ed8656d83473a5e60bc45e3344e63a3f1adcfe0e520b7634bfd49a6edc926b33783e5e6d4b1258c29f5548c9b5932377b33eef694c5981a83d29fdc30a654ea624c588b55c2d42fed4a4d6a9a46a70ccb16c37279346679ea18957e3586476910ca846436249f116553d41c91c7a2f40b1ea1a18925b5c59c7e491878536d9f8d832d6d37dba46c4e2a757358965c320eb5673df038ece85892f48e1d4979b86439a2fe6491e6e1156b05933dcb25b9a4c5f03cd6ffa56efe32236fc62594eda92b976451ea2c874155e1a52ef3ccc2923acbb35c4a5d8645e6f242c822f39657192b995a2e41914ba9b75cc642bcc96da35bea4a23298b3c2c69c6b5f80cc9ab545c6cb08bcbb10bcbc5250a15611e79d7cd5a8c9bbd7a999b59f5dacda7c1f52d377ff52cb03e75734e17e1ec01250f3cc1f575729572d562587d95dd9687782009d7dc46b99160cf6e491fce5b120c9b4f4cb0fc8bcd27257c6aca9549ae4a5d84f396942b152c9f11c1920a97076c784119a298020a310083ada20b557c21338112aae842ca3a042738910202224e985a09e8a42729a5944d4ce0062cbb264554c00a035e619885932a1a0db029a40994a8e10d2b56a0609e9454210a256600412d62c50cbad093485ec592383fdca00b4a4f588212d10a7a241196ff686c907c00068c6188e4832d6c66f8d6a0862d88d0852500010d28485aca64087630e944a2b196f4eb2298ca5ce18614f4e0090886c0454f4b41837a82364af50fb0d411193a09c3304c08656408275c38fac20ea07c400945b248a2a28a2c7c210b1ba8400a2c30912690011638c8820b2e3035a8921085123314010a4618410950f0634a1429b088c317a2808404522421c21796a2a862065a0c11691c0e16465a20f4821158a1821e39022950a0699aa605090292096e50c59432a0200a39a59684c3944862626909265ce0d1239680242101642e518c6a2e5389242696966042d3b22914d3b034745436b1e48414202730cc0432886284318401063d102a8208aa64e1449bda520bed23a400494202482605048a7c800c57408219e0004512a1dad4304dd328a651259298585a82094dab5b7c485f8802d3300cc3308c08043290b205138af4a0880c01129094d06289084b5a2c29a1d106588530a480093f8872a4081204534af9032c3fa53c02487f518a2154f080085d00c2164a60032e7c2009485168e6a5f9ba2b6474327d13c39a90524a29e5c4e69c53489640b664708525537a8083a319f4482984a511964920c2524e79c41692705892a685a008509a64a16dc1051e3d62094812124034ed882d08b9cca46c4a1a3a9979a10a9d5e78036d62a9456b299914448e8440840a462888f2852a23d0e20433a01fceb4372171324cc334fa84d39a5872420a9013f3040dd00209b2c0832d443174a467c66149a314cbee8782215544a10940d0810baa28810470f802b6c1eea705912969472270c908484b4a58c2029332565833b8a04a1c92b082303ca162ad08585e5aa7d4ca8e4b8c2589d12dbc297f0426650b41d27904124947203174032cca1534c1e445a3540a9d5bb6841a80807e4c2c2db1591a8a65588a664d683453e8a2c91996a4e0a2066f58c2d00d9a5832332a8589a52598a8629b472c01494202080d466970ca1aa319869d4e2998734e2da420c247359aecc2f33b5a830a56687713fd499933078cca4b690268ca3e6178b486219cbfad59e27004bef6500e0c613fcfa8c1f046072e0c0f8d60c02e3289528036a20075221594fa9b382ed1957e46857e9402dc8954e21051910ee4108e97e872a6df9876941542a95f309624ce8e4825ee606863b66aa5c3191e2de120604dc7a107149e76fbc2997ef7b3aec216c2d067b0c19d73300face9381c7517b3283c81509b1c2bc6ee3e95721ae900d334c2641af1ee032f7b73a8c9a889323d6104d3265e4b26da41f0e43482e534328dd0b8dda03e524a29eda64d698cdd54524a29a5b169532a9b36a59452da9436165e379594524a296d4a29a594524c4a8949da9452ed09a256e27590a692524a29a594d248af7cac804fbc43b0c872861d3044aa6204bf67fade13bcac4988b57ec5777cbb008737cfd57bb0c7536128a594120b298ab07c902560865d6029b7eda7d3cda930282bbc6d6edbe17673e468d64238934365fca2851f17bc9e2762c5fbd5f1ce63f92c0b5ecf393de8119942f25916bcf89652c616d49347c48a494fc48abe3670c209e1612c83372f350dc2579c1b9e380b1cc01a887116338033f06e18e23eec22542883c3a3979916bc0c8fe935ec5e7f53051fdfb7de8b963525abe76b4ad83b0d618c5105d43f74b07ad31e2fcb9bf1aa4f8833158677f69765c18394527a784ac586853f56d20790bce4079ae0b6812232e1cc714d56881d2392c470094248437707ed4fac828fd4a0b404219c413ea9314e29658cb309cb7b534a2dc2f8592a160c6dca39b198534e29f37d87711832524a29a5a473ce793aa5e47078f209222905c720524e299b302905334929b30c9584e5853948963423cb15590e3cadbf960287b74d3bcd39e54c67746b7a8363b3b249e79c9a4e4402d64c19a881493e524311ee6b1207366e25dcd0668726e59c2b546b245ebfaed89c4e373936dd8e20b276b70d0d3c82e73a016c3d50cec00ba3eb777777eceed81d61b44cb7d2ed08b202b946e23512cfdbb40ca3de949ee7791de10a2a0fc9b20ccb329a4dd959ccb26c85d24a50bfe3c5b3427004f739182cdb6ec0fd20b2a594b2fb408dfb2a51a9542da79457e802e90a508831ce79052a1d8648578822a5a4940a1486485d14c12c4a2986217581f4a2a40b251586485d80215a0fb33a834394dd9dd3ddddad2175b78c1c11566084ebe1291eca8ec7e9e6489d20d25f9d4fe43824ed7c57c4bc51e86efd2e168135152229f5bc7cdc228e3868e2d3399bc53b04e53ad81c67e3caa7275f338ecb1ae25a330e763146acdbb172cf5aa1713edce52b0eef07721cc7752ba79776d23b7150c4f3dd57cead5c25b222681d0fed2b9f9d0fed2bafb23342bbe43ee19cb47ba694d28e7694527a73d7751342c8dd0c99bee8a4bf38cf5999832b42de1c1f7ad4a7cdf33273983bed7eac5cf248daada00ebb4ce364c05988e515a2bfc8598961e378af9c8dd8b344aca0f492c670d5eef0faabf5dd03af26214fb1acaff5e374eae510fd1dc1bdeb66d7ad742b5dd77dbeaeccb93227ac5df7c3a6bf89ea7c10d15f7ccc8feef2126254e743bebbd109576305d25f3d7795e8137119268f7b77f371ad1cb7c27de53e2bfffaab3fa2562072a676af287b447ff59d1da2bf7a6989e8af72dd6bfd11f52829cf5d9bfeeae30abc21fa9583887e65adbed6fa5a5fab145c6badf33ee46f64eaf589462ba5382dabbf8e305e55d78218638c37f0081e71200042fc9473b6164bbec08282334b3bc27d561f46d3acd4787b22fc7c8e71fe641048e2e8435e2089bb1ef2e61e10471bb9458532594584db0345a40fbced9a0dd25368aa0b7283e98431fb48101576710982b7d3137dd5361b4485b50aa830bd3e2df701003b84384f7ba008a6d7b4675c78da46af8ff69c2b30f6936673727e6a5b888c6844fa9bda90cd8e23787e783c3a9c4ea794d26cdc0fa739842f239ee9b7d726a1009ca8cc2a748bb8cdab000ec46315ead7a989da2ab40121d41f958e72a7a62a746abaf54485e73cad7714af75b70ff1a80edf6c3e5d87c36ec7779e3ed9201cfede51bceff9d454858c929e30e9d70f379f4e293d9dde879efef0c3bbd71f6c0b9316a32546a7b718f5ab5bc2e487ce680993d36d393555a17e613f8011d191ee6e3f3c9132a5e63f1c5dd131315252a44372a4871b3cdcf7702f0f17c85b9abacf9c1c1b9befcbc7dbcececed6750848c015b06d5b06ded234b796a6edb945ca36e544a5bfd9d2d47ddea0e181068786e6e6ee2d523adbd2d43db748e94ed3c38df370b3c7c3716ededed9161adb32a5a5a9bb2d4dfd7db345caa9494a4b8b51cb9216a57ed5dcdc9de6dd6b9e6968bad33cb724f9d0d4d816a3fe686a28a4a1a1b9b9e63fbcd6d816a51f6ccb665b9ef4377f78cd0f37c7db5ab6dbc264055ebf720b9152bf5a9ef48bc6e75bbae857129f6f216291c222a55fae9f7ed362a4a45f3e8c248ec7a45f2b57f4ab3bba71b327c3628483438b4e4db68db05a006c568425c26653fa9bb71180cda2d80c88f9d6fc0f9b7561b36fde86cd74982a954a8531c644ac8a58056065c46a5b05b192596946ab1c72c82187989898981f3060c0801123468c18356ad4a8b180dfbc87df380fb7b98d6b4616b8cccdda83d08cbe69463742337a006efe5e8466742234a3d75c87f31c88ff709ab7fee3dfbb9fcebd9e9e9a4e330824273d3e87f87c062caa0aaf9bbc1e844555e16d97791041dc1c6f0b22939235f56774f3ace1173dbcb8d13cb4877760e11d8278cec1281bd4318a85511e46bd5033685c336ae9d0e8603a463a5f8e2e478e1c9c0e1d3a743c92c1833903ce623473a07b73b386811e6ef684dc4892383f3cdcac35716d6ef62e60e3669605eeab02b7889bbd2097889b593ef7c7cdcf970237dbe066e2e61cdc0fe2e61cfc4fe0d6dcac4940879bbd08f0581c5f02889b5910b83f103de0d270c055e2d234e0b68c684b120fd60970330bf3f877338b87006ed6308f9f8eb8dccd2c236e8501b859c32c26782e039c5e7b0c61bdfee83d9b71e1e553d39d5985a90f875d0f1f706cbdb98bf0f61defa8e8d7e973a38da43f009cdad45956c8e461b30c0e9b611308251289482294199b9b08036c6e1d36e7b05946c766d824a276d08c9ac8026c6e2432b009ccc1e6b8c2446ab0d8dc35c1f3346c1236cf975580cdf508cf27c0e6ba84e71160332794b923781e88cddc52ee840e60f3dc617317e54662005a44b7d4350b0021ec04c0f5a18b4ed76e8e47b4580446134b3bd44ef3c4345504a35e6b3d678d38a9b0766af3c4f410a70e3b0d5b4085513707c14154b86b24dd4593d2467222f029a5bda8944bd74a633dcc50d10800010002d314003030140c088482b168345144b5b60f14800e90aa5466509da74112a39031c6100208000000000002002263040c0094ab11b0499d5e1eda6a110b1e51b2f445089371a65e3effa3981a11cad072fdd2ab7113d24cef18fe0fa5f0e205d6abc0b17b5853db0ec5ed357c2ebf3d45811cf92d6848466c0c0c07e8b3328a9abac96ff88e81d23eb3f6dc125601ebd6087a28d92fede6dd99f483b2c1133e87b605e699bb5ebd792113b7cbcf8bfbcb13bbf4ffe9be4db79be9f9d06251ab97325932dfaa946d2dd5c6ff993264c1d5b0656e71905914f1256a49bf5f9109b1e82b76fd6af5fa4fb4b40b0b9f58681eafe494bc6bdfc8f4537f0c77cb251d5fa5922e43b4f67d7af47848d88dc3dd51cc0409c446427978fffc5c3dead1c12415bcc8044cc707956cbb65456a2071c83e34a7ff455c29e5d366b03c17161bd711fa59d2c2221d0a95380d3e066ff75af84e0f184589d39d92c7697b2f525c1b615cfb8d18f3c06a3be11745cbe8947e58f001e63507d6121de4f1b017828cac68ff3cebeeb163489bb6c08e3d200552e9b4a775b5518f100ea7204de34113b6559fa93297499b2ddebb776dead501a6bc85ce892789d2a59c5f2b04dbd71d22d0367e8d2f787deed20594fa856cf27687fe741e50ceffb73634fa59833010e2a9a14d2995272af2f9d3ed5a136184809065fa35755794532642ab0191c6799eca374cb12d66a9ce1de1fb154956b878af459a4db548fb4b350df31e43af28d0b786e91a72db4d1d8724f4f3819017f688d72bd7a50a4d8120636dfd08ede4aafbce1ee233264f3fd025bb37324090f9205ce564f7bd8f45f552e915ba57998e040d41d919b0afed208433dbac7fcee4dd4de7d7beae943d161abd5af221ff812032ebd85f6772e4b6e7d5a8d25bc76d37a203d1b430fbf3bbfd672b8fa0b15a83d6c5b60325086c9b34f0d8c474f78ba2c81d62474bd3f51d970151d342d8fbd63fb95f9c7f14a1ec1114299958e55ef47d632a96450c779e5dc6cb1b850033413e1322d2026313d4af46fc8d55cbe162c330c22ad9c9c027bbc2ef232f50feb37184968234261fd12407a3c7298c000f936bdca5fb60f15ca65dfbc58ecb740e3467cb9fe98e70037ef56ff71faafcb5a3b9896c40609173a4d49ea30d894b81eb10d73311372e33a61391d40fe7cf9d123be18eb71cfc3f3ba841f887a9de875d225b4e9d444c727ad708fda1a540bf0b7a9f7e787961120d8b8df9d8bd53a32dc50d3f8d3c34e508e8d574b4db83ca82ec6dd86761a18824443e96ab40199bb04cd9e52c36354c9317e809842e747ada0ad06ddb96a798d9ab905cbadedcc763d38cc94c5b2e92894d3a6d239810ce9361b98a540d07508b8a2ba09803ce0ae106303ee7a57d20a00e47b1a92598103838b6d90df92ac894a2831f8c2e3076730cd1b48410459a425a4080d28ca2120e22f14c18ba9e8dc3169a882d9d39ca0e22f0d3bf0d91d6417610a3ddd15137ea253aad6a2e9df68a12c8d76fe26bc63c7aff2fd3d1c61fccfbb14fda6e3a1e35c01095c34743329268a3c1d8513fb682d8830e9cfe4cf584524740fd6c5fb321121541b5438f6f0ddb178706af5eb030f1698b525de765f1df36fa466911dfa2ea5fcdd0c0f367c90d8375e3f4a25cfa3e0242dcc999e939b577b1c036276602a8bf1f27721b8db103322276afee75fe2c8de32e15ab8efbef2632ae075ef2f2304aba3c7d30eb9659267ba2c944f211e0468536313fe9ae3c4c56a959b5fe5c96b9e541ae9883b5a7e68a042b6a3ed989d2973eeaff0ed051dfe7e6ff473a5c9561a0da8e26990ace118fb4660c497d02e0d5fb4442c36161806caae601b92bcfccf80e2612bd416d57f6646994e6ba5e8ddb0c9cef2be1507545a61a31ec91efca9e5c634ce0c291bb99f86e8c4e85efd485d0226820eba65bd4f96aab47fcded1238b3b5c5530790725dfe8054d48e6fdc3b8e36ca91c4836dc31d1dc103e2ff69cc1769ea8ba5c8240a9791e2aba98dac2ca1599942ed6608e216db7fbd41058b9551ff07451425e08a70a780ea200eb9e422e63e1fbdc433605c70c38ce35b0ad897ba01691290c28165d3aba2a70e0dce4ed97b61538d3e9b302405b4a314c66749670748179a4d47db90f2658db81d4376f9a8e1fea7d88ce59e4a19e01a8f27a7283cf28d471931697bbb31852c85a05ecb72d587ca818c19d244d4aa1e197576aba308b032f5e52822b5b183bc15414b4b88f1ae42c10642fee8294bde3e0ef210a7f891d5721ca4b6bda319f4150e176c499dbdcfeddbabf9eb08a343b1dbc71674e96f92e10445b60f05dda677e36fad99f9cbd63b8d1d0ee8aade41c6fc3ba664e4922ce038aeb84cba9718617191b271e6eb770253b2b5ec54a162c7cb5f920be703e50d9a588f9577e2a92575a7fd3dce453bbf94da97382e6894494f0af31e0beb8be334eac075e67cb43e527b27b8dc1544a85149d865174a167c9c62a8edf3ccb963e3f9b37ce50aaa9a82dec910eabc73b0c12ec7c5928d329043dbf2c06fe0b6794605fc8c75509eccee328263387d083f95765fb0d2453cbb48062d70060219a4a762ae5adedf9069d42f7fa88511785d57c13a5738da13496d60dbb5b4225c5f19391b1e97869afac9b0c30b2ea416c9925b90e338197bca2b9027d5bf71f075f7d35372a34d843c658721bf97d814de7f9211372820d576dffe4212ccc69ced04a6e643d346e9b585280deca2a343229fa34abc07e2a2d4c729838547c69b72516806981e523e938e26b12da305c08fda09e418b2077ab0bdb08cec1181f60c313ae37323123e0bdcaf00123820ed6ee59c73f08dc162856741607d3a52ac706df776f323124b31852b315c9e257a6b24613b55412eb3f9d7f1ed40ff29c1bd526e92918551563d786e096ac29257654dd6a11bc5a01f95a03609bd2a0bc8f909b7d4b6f6d3cfde3379fc47aca82b579b28e0dcfa93236b3e5bb264148c5f52a6404b50c5caf21126f77660dd524f96c345e1083e5665ac96614572ff0b683c9dcb91491e22860bfd49d7ce73f103fd1daa5a2d66b80fb90ab6220515568d07665190b41e707008b4fd81c2895f6adbbb112db3a537bcc8a43b90683c4a79b5dda3ea704b05a2d6a9959f0986cf8f0df75fee790842cad8a7ff1bcbcf47c630697db024ea879ceb9a8a62acac2e11b79903f4a3172829284658ef5e847d8e9e73c42e1e967a57a2eb98d70874825817ea97e53754c4ed17f0862db5a715ac9615cf7c05a9a22b86be27619d825fdea8a1a402f5bb77b379416058bfb6972a922065a50863834fe9fe8b46ad18859616802e66eddecb7073f522c50229c10f4b73dfe65c80701eefc8af23da36aa77d7c291bf79512b8c1d8afaa9769898e4e9038cc3561861bbdeef96365d5ea48d4196ffdbe50cb1f871c2e0681a7b5712dffeddccf9f1940915412c104e2556f6254a0525729a654ab701379321f18f6afd80002761483f180edc06b107e38d673b92b0db8a3cc59f3591faa750c979f116f8650c1e54463e1da1c418f671b9e904dfdc2c5f284bbae51015d79552d2ea655abd127fa502d3147fb9ae27f075f5784241903507075103fe045a0b080a8bc84c6aae1d07d308b0ceb1d52c2c04b0eda09c4d3d438ac3140fac86f69d07725582272548ed2d0cd3e4a2f20facf85beb33aac7595126ec45c1fc6e5bcd8c3d5337ebcc00fb2d32a754fc254ea7ef472582869c704f7c1b728f5fb086cc5aec93c1367e1af5b8c5869f4cb1b61992aa7f9a2d6a396a5e9e0cb972d4b3259d1faa8327eab763f60129f6788dcde0431bd53aa434614a17acb32e7e80aa82c8016a39399ffb642f1606659be533fdd9f7d9efaf94fcf2416545ca2ca43677c378f90b2d684c922d42da84067a8bf393da9cd662c499d8e3689fb70b48bbb1e75b49ebebc8ec687571b937dfef24e1f1056d209ea45bf20c603eab081ad6250d9cbf84e444284eb8c6e21c6dfbdc9135c7702cd8b9622d8165f5b1bdba8250198975a52f2c46c9023fccc3861c541ab3a0b1dba992f296a3c23bfc26d50aa383c6f723e805e2ccfa756ca141eb7948a1d40120434032697d1c0017f56292d8f598e1736cbe5721890eb4ded9f2ee9d750d185ea763963a9ef758e24e81fa5be69ce355676f5722d4c526569169b8a5371cb8e75ff07aa6db6bdb410d62931513a5f62c5dbf6ec300be65f98f46a21e6c829fc65f09a2b0656bbb68bebea64fb78091a171a46f8d670a642856026cb1c69d9578c94431451422b64248fba4dc69a16c9be048c633aacbb0c0362a57abd8ce07a9ed5b6daf3c7986ccec559de7ad9ce69b1f32285ed300364aef4bbeffd038b3773799d387f8b3654344bbff081a720eaaa4fe828c21ccd0599bcde90f350a3217dbd64b5b88fb586c47d852530d05ad532271e0f03309152013a2570473be7c144afc0b03f7195d3b1d0511ed110460a5bb843a29d0e0d8ac47dfb48f569137735df7b70070749a16a2a2f11adc65dff7268e3a75e298ccc7ee8667996c9f6eb0920b2ba1595a0449b1279393d14917976ad56f873dead3cabfca889ccf349827d43c0ffc9428fb398790407813ed1854d09b9cb91ab3cedf59b25a5a48d65917ed5c29f7b547c4fb91834c2efdfeb44fe1ba45c11fe473a5049295668c5a1e540eeb66f0cc029a80a484576473468e786b34dac2d3b7f4a4ce753ebdeac3ef27c00a46963b2bbb1afa370f14ca24773b069f495300005ad916e15b7b0fca03f415cd225a94a05ae6412c2dddf4829af57233e849948e9887ac015082f970806b13e1af96c02a6f710440b735b56d1059fa048297617dd269370ab87f0f54778add9759613092f236fe296de2a49bbf0a8f446e3e6ab3abec04e4b4ae13a8cb440af718f29b423004a8f606db083576f20aee6be22e5df3a8dd3ef69ef088e4ddab848f8ecffb58b881b1d752118449aea06c51b1e68741ce447fafe81799655c57d78da14bb137f8b1a3c4e5ed40d26a33f4c98b16993c922e7a58cab97953ed07907927253681f3d1c70faeff9f4c1f1f1c5c0d680a13f572a588e0a16427581a258c2a096be6660006b99bb7e7dcbfc70604d475b49f76a44b50d75e288f972b53587e9755c058c95d85ad57dd3d9316c568d457400358bd5a74cd55a9d2849746bf6500d6aa937d0e299e3d52b5259de09e4ee580f6db93cc7c7b53f80df59cb99af6e02eff458217d6d789afa1b633c24a5fe68b1f63405562df22fec8e5d76fc213ac20de7afb21abb8878b08f6417c79a73178d00942c5af9740623444e21f51c9eee7163882436aed3b6c8c298098f27dd418de3cfe156be1207cbb42c8140e93258621eaf6bd0ae1b590ef77c2e78074a76576389af29a01cb049affc044e3b363e8c59a52e91d8ac040b1dc867711e5d3fbed2d374c001e24e3385da09be08c31676b68b00c9e679569acc5008edf14236ec260f1584d60f779a57048ab165e299b8066d50256b3a9a98d1375985e23fc18b0f879b21fca81d88218795c9631a38bb9b2d85660c4b15b546a1144a007d20998bcf9dc4aff028685b90c0c78ce4911701418c70a1c29f9fa66acb1153bcf35f781e70aaa23b16738bd7107d99ff7de6727ff19ca8bb712064fa20fb31b13321f08f792f4a25f10fd7c1ffbfc64c1870c920adb8ffd156509603be6e0bee0e71c2f71b6e41694ba93730df2dfe7839d66fbeec06ef6fd46a4a2d1fcb64781dc9c3f4ffab22c6f916c6aa54870e68f698ef6d61180af32ffb5576793d814042d19149df90eac2736f309d184920d9e342f0b2d86c9466e6dbd245d87a2b690890e8aacc12a66e52aa5c286779ae7ddb72ebc7b7f053b41d9bb5884fadd45474acb1879fa13ba5556c7b9103a66d00d74ce9930a22dde3ddf112481752676508e56bcca756dd8ad0e113abd724c392793e56aa93507c1d8cb3400bdfb054cc4339917447eb5c35811aaf760fb98353209029680749b701e2d71e2aeef50abcb0ee8f66970d53b62144d7bc0fcb45af39b52f90add08d0c1082685d4da3306077ecd82845053083bef80368595a76674aa9bfeb8f5f0f8dad1ac0f65142032a87d5f7fa94418a22e0e46a9b55d8d04b4edbc8849bcfdb65d378d3d9b573054258da25025dddfee217a76304a7b718a387df32027bc8ffff519032b541208a5355ae43c7b5eb41fbbd7cc4b6b4bb37b6425ee6ffa2c162e4f7c26f70f0187a4f39136804b31bb7b7b0d44c3372690bf97cc061af00c24bf48082f96536bcdaf433a80bbb5f3118761efd6013f4fdb04512c66543d708abc15cc957c89e34b112081a10ade19627f00d0d8b163d762a2dd1d0176d2889a38c44adb201a77658e6c3c9d4fc290db5378e2b1da3e729ee92b5f33aa08c6548e75d933dcb412a92506d53208eecf77a5d733b715dda46cb8826744b4b5e0d655e0df309e291b086eb411f514ca4d634d040dbcc8d3634e111f7feb6c0893941887aeb6b02ab3c4a2c702ae66852ed0a630cf3af8c7f65885d52c6571fd5274863476879fbf1214a6037c0b81361000cfce0d1d532cc46a97c371376964af86a58501c588111d61034c6ad7fdcd9aadd9228772bc53e077d08001a679d160be213fe306c5b8f060648c0a60ed2715952b5416dce3315608462094f6cff0978a4cfd723d57bb047ba7a77ca509d13566e4f68ad368e254b8ee02d0b29991a001a992f17167dd5052050f7f6146ecb1f76244cef9528347353e0d3bed92ff37a60e961ba4ad238a819ec3caf26646f047ec92e419b395d03a074b922f94773683f6e49a301af82a27f3034e18706014a3643c0c83aaebec078201b8f9c2383f522c4ec9841d0d524fb42093e523724bac320a1a9d3c3fa028932a0f27dfed8f4e49ef63718825eb69bbbf0dd033901d9cfa8f7212677cc62134602b7ba0417c0d7316a6fc7c760e29ff59407a03654a739d382696ddad2adcf288379adb612710570c0a2e0f4648ed420fc5dbe7a27b75e25c33a51242ee52172ef58a7e35e176c0e57f1aee63dcdab77eec0a1d540c29652be609d0d4910284836f6071d101365b9fcdf98887293fdbb0e33cb9b412f2d59e5ee952f883b8edbced0f860942acad57631c03e75688115f5af33045dcbee07e968c2035df3d5702c6c4e085b31c6e46b61932fa84ae2d19b9b44a07ba0d16a384314c0039155edf5fb385bfb5b8bc4e0af8f8735ed4baf6011c8d193a7e2f71e595373e1eb9e6e38a455ad8a57a1c301ea10e7b7a33abba99f9774a13799f03c2462f152e7e994af41c1f0b2d4c11f6f85b251393b87c943f14b7a585a60f36664f4185636dbb0eba3c8bcb77b3f104ed90d3581f776be689fc0c913edaca2304bde0228d4993c2ba524ae5f8bbbe7f1a32a6dcea04f9fdca0a70011d19f29f95c2c7deeef686cdf3f05371c73958c95c21cd041be4f5016a62c041733bee64bf561b0d6f447613f16975facc57fe8bfe8a8b0e2b830c96a8b132d2787042e05bef76f655d1cc2b493c476df0e70d20b2038283e09101168f47c0100c7a38d271b051f40311a16827f1587669cbd772aa79e4dfdc4e905991e55c45f291e11e023f1e802fb8b92d39ba5ffaa0cc5da0b118e2628b4489d87d82ad93fbf870026c44e5d48102cad19d7792f1618292e1aa1361d648006f221c0352566dadb56e2ae93ce403d3f5354191acf5e7be64fffb380fcaec68743cbda0ab75e8be16188b29fed28581a96fe7822f411e5a1d9fb37bb81129c1781669700f1e24a526cec9a88ec58906b73ae352bbc987296e98dfd333128606e879366d3c61009f867417e92fc0879cd79f64b9abb0a3b2450f9649aad5f1230705c4cda9592b03a0780e8559f355c956f3f53ffc4db1dfab5dbc45d5bf7c1f04f62674be87e9acec8d53845b90ce6697a44562aac0e482f161f3d58f58e054ea890c3e29ea08f741c6ab4b110c82b2555a33aaa483624f48b55109ac6783c04c72a3455bdaf75981aa32c6fa8f7bb86b8209ae1e74c895ac92ab692fba7bfbc7faa53dc19addea720ae296b1604e72f921b2e241f4f91f49caae18002356993e76421a4a37fbace2b208878abd4dab0974055b5cff4477ce8e67c62c169c2b2faf44fd4d7c02a528597f8339c5d53a3ea4620f477935dd2fe4b4ed30e34468c9a5ea12336a0c0db722332a0d0a08f551064234fa69856883bcb0d6b12c75774adefcc6332ca51b7e82fa86b03175b1fff930f2545336ac00a0c967f712185631eb15aa1455c47dc35134735f11dc6c59992efa9367140622c74c2ca7954c38f89ac4e4cd033c6c3b954685376beb37f2c3ee4cd20cfe8278b8035404f15412d9efe4d8b00efde0227c1d8c03fc47d4c6c20fbab1105f3bfda30b3a3685522fc8e235a36c91dc88553afdc9788891c68d413a0c128bfac31b982cb6f371160f8fff813675032e2176ed3235474410e0d0551a46b24d798c071fb12087c2ba2bb4ec59a12203dfcf6c19dedc45cccbf0de34734f2af04346ef070c9689c5ea81e4e80b8d294973c60dd5d9a4cc873b327c80266f2cfee27e502a2177eaba873c0568e13fc2984057ee1bf410f3b2df1c167b1e78c9f527b62770ca457444317acdb68baf172a43a2f846e44697d8e4383070f4e302424945023250ad2c0b2de973f87d9a2c87c226bb65293f3e7f2ec03a0ef7168071cfd8c4a5bed0cd2ba9e2776de7f96120960676ebb2375c4232e17aa538e1e929866d7554c7b9cd0681e818848a926d279d5e81620d4fc050ae40ac4800f27d31a32516b4cac4723afa31ed20193c5581dea53d84411dd27c5453623d90a064be70d8d5db9039d84c0145d37f696ea55fbcba7159dce1991da7a2595019631bc0386f31fcb57ffdb1b5bcfdaabc67f91211198d375a93c062800cd89f5e8a464447b750f8ac916b56ba08e5149d39a0698297d57358f4865e73167041e11eeaca8124cf39ab0b4ab1824a3d05cb84bb5d6d8661a8e688cbbad30b918385bdda5a0b2a58a7cd65cb7a725b16d24d3f8fa6da1665d5d55ac88ef9e9ed95aa14dda431de6a1f94533f90b9ab4d7beab4cf2ba0aed27ca452b4e7ce489ad469077a6c0bff72db96bc15e42fb75dbf04927e0e5d422ba38942909ea4ae3122e8302e352cb8fd62f885c79b07ea74147459af4fa46528af1e2d82990e9807d18e77ce77a35aebb4a4280bee6ad859df365c7fddf1485613d25463afd59af382a82067cb4e5f6482b8ecea5a07c38ff9cc76fc849be69eab1d4e5e1355cdd6c91445facdd02a09b231baf7f08a0c72a8460a4999ff26c3b48d4792133574d3da8b9e75d9b981c6b4da7618dbc46a595b73e8c02656645e1876698a735b0728226c309561a4b9838535308d8dcd592197e29b89dd36df8a7f20ede46febf18ac0f18be0512ad0c0cca8b460b7edd06098caa5a4cfdb80db8745b187a453840201643c6149356917de09df4fcc76e440a04fa115ff780bcff1fd39c60b5d31800c2c42ffe67b657ae690280e63b8070f6215d5c52bc2c90a7cc6c8eb00ee420c30c10f18b8bcb52892ef4dc22fe43b7da12653d080036ee988504ebfe321ebd8cae6a4addb4a6f598060760f078590cb575a42dcd740a741548c1e730e2d50ae9a9a4faf450d84f58aecddcb7e297e1a8ea00fcfc7d2f3ee4e7deefc833063bad660ec1af32a293100b8553fb56f6b277ed155ee0edd4ebe7cc829164cddca0f298e103bf4cfeada492d7834ec3a2cb565ab07980720a30deaf9a452c6dd8912f13b544a7a63571a97a59f9e3a99fd8fadd339f58657bde9b5930edb936ac23a7ad86c17f73e2f05c1e8e698dea625a071f1281ebd8d5bb4b4cd26693d2cd6cc269f7b1fe616b99945b748f6fb08c386550c1cdc18695a4a900ba477dea07473bd7e47253d7e94337731ca1d7e0eb59257529a666813d052e28c95ccb04a2aba9c36bd4aa32240290edbdd59f7d4281839bc6a88b02316a417fac95fc0d58f79f36fd5093e92c448d63d5cc51084b6bb4408d63fd4f4040c888b8fe18202e536d91344a127924314e43c97ab360f0400565d14218be9a2699e362c8ac7ca7da633d62f0f115a05408cb31973c4ef8333a35f88d62bd8126fa16be1353f791384aab6731b2d3e5fcc8ff7693d593b36f6e1e82d31c8d158a2a0f00ee33ace79813688a8f50e8b62e93e43eca8ee0097cc0777cff23b9cc5b627c1a3da7080cab0a0010b8813a1d739a0ad43bddb177c888bd8f8f17904c006cfb80022eaafef2678d82fe5a4bb7a4c7b4b42e9875c786c13c3154401fac989bda8e0172bd7a78f5e952a19b40fbd1e55182d97dff7f5c42cc30359e680e0f78d63af1daf4070567f623b1633c3a60c6dda6cc32930369b68ed507df9555473e8a8ab9e8eb1db765218e36f3954fd81d58785956a773200feb22ae23a0d4cf5dd0fd020d629a265eae72e61e39428f17952752771a2e6b8222b9324a2d49c31c673a733c416c4be73a4034f64fd5a05698184e0560fd320ef731f4716d05bd6e0ad0c3d35603266ec992ca6f0694d4de6adfbac3870cda8d1f7afc6e0f22dcd455aeedd8933895955f45602cdc55416882c729e67e2fc6c34517b51d4334434293fc802e6b1074b486efd079230959905c6f0ce7ecc2ce080a9180f49de71599dd895a3662be0bc6c66d2f51278b742f771ed0ab7eb2deb48c570b99c0bcb1d13a55997e032d821c039908095ea90245402cb36c2928e671093174ed7742b66a4e3b7c3dd061496f7b6127d0c60e96ef23cc1e39f75e9f1b04f979c85acf176598816adb9a40886cbd9deb0dc5841aaeba6f5f37e9d39f7e8f4232b91a4089f9a3bee2a9cbdd554668dafd16f7818069a49697783455e15d7dae38e9556f86d2e4619985fa863ccfdfdc615ebddbae0214dfec3f30dfefa322405d02a4b442f38fd0dbaad2b063e597434bbee29d2e2935831c855df54381e0665d278850707b5229f70cd4dc8a4cb87aae490e72dc8a4cac121eb722d3c69f99eceb614d51e402376f769556a57a203897c9e3221f508d620114a296636907371f6cccc13085d14c871822712802e5e66887048b8bffb651f0de6515794e087ceb5fc28ffd6e4fc4cbabc13245caa3380a502666ed56d4f1cdac9ae0a3d2594ad98387dc66994f4ad693f5c5ebf65f58d062197dd9fcb71fa104256163a041e625935270ef2a757957bdc8e826338d523e8a884c862ee7d6b0e950900a02a8cf8b532a861f65b82585fb69b763354ec8928b1d77a906a16df014a97d1bf5e64e85aadbe9fa01559901c35533232a66ea2d261cabac284c7158b8f463051ddceb058113a1ab583430bf36a272e500ee348e6a1abc6082845b7198c1d02330a41a0c772e249e04bec4e337ec5ec61ca8e32437ea3609e5d8804988728bb3e71376c5aeba62e62d429129e6c8b1698d7cd6a8257f6ef7b7119055c67100c56374d5ddeaab386f162b14220ec353cd8bfb92e62c13547331983fe53885ebc9ced91d616064a18ce6f8543d515c20ca0edb983afa53745b141d3b189f992f9bc809a4d5ae61c92f2382365195385605cc89f409373d8ffa1932aecaf654112711d6c47f7eed6377d2776a02a3296a0d96408eec1de6f07f165f088683c1cb87dbb73e8a2a60d27102d397008cb4cab7551b5f61dc4256837d00e86b0b5d86db79c952a2454e3b3b5c0c9c99767cdf8643511d75e924badd1541cab48e667b0fc907428328e8b6ba12fa24f5e4aba74e6673a34c587da244c09aa3821f284099ebc9bf1857d7b440d23e6d65c5ee171056fd14186cd1ae1a896e90eeaf268d231c74d7496dea7bc3cdf6793d0aa19ef7b24fba802b89ca912432f34c63ffd3fa06b5ddfb7dba0e3c64eb36f23bc43f4083c8b179545d3b4e89fc52e3de32904f060e74a7a620fd0edd0ca2ef68dd19f85283ce1b154bba5d5b0ec37f950e346d4c8984ebedbd1b7cf03a75d04c1ac540471b08749e6cb17833140c3cd92aecce7395ff74630d49d976be682cfbf6914bcbbab066e584a96fec0514c7a30a184b13f297f812dc7760fca6b26e052ae8289d868cc183d07d4ce00ce6e9d52e1a529605c4ad7db74ff9cededa70069c515e877328a0fdb26117fb020cb72851afd461baefeabb8b8ace35dbaebceaa100151746c8b32f2764afd384f2a7ac0f426d078b50ac3c7ae2049ae68e96babdfaebd64c6f17ece3327da9639fd10500866b4d122175402a65624b18bff92de59adb8c62abf38272cb6ec186078a4f8a62d10654c4c15cc00bbf0023a83d2a5dbd554345a8d5f2368f3059e5acd1ef2c68d6c4b5faa5792274c9ac8276228d3089e5d0bbe45766f7dfab919e0c55da455296517530195bb867ffa2f003d54d92a3b4f55ac87b8203f677d24253a1727952ad59b41ae8c36dbb9e74b8224ff2b9671d07dd60cf8e3715e9fe93626f55333ed54f4c2193c87a6f988adc20191ce85f5e2867d229fa3c9dfb337c263cef4740c73d07296a8b7c2ca4eee086a23484549772fc541ce15210bb9906da300223e26f0dd27b8287c4bf91abb73eed60be6b29715ac3108a6e52b545ad8d3c70ff8d1bc9847058932c21e962b7ca4b9076c02925b62b8a80becc52d08d1965090f07e71d33f55c502b33dd1a66c8caaa558d1d85602bd1fed0db5fe7cc9064383ffe65147b27558a209c0599a19c77a201e036615189dd0d060b53014faaee85e051e61c7f055b0c174358fd44eeb2bc731b994110abc25ba0585998a5f630860d488a1ffff534afe3473136c9294660c8dd87286eef39fdf24622b6fa00488f0fab7ebd1c85304c6ff715aadfe7bb4f4c9a2342250364347b79b01b492e5b72f390bb36a0cfd1439b8e230683a2d70fd97842e7ba6b6ef22e1593f73873ff7c0a80a87ebbaa41d9d78fa1932e23f2ba6fe0ce4665278644b3c2e9b4b9d238e10648cde3bbef8b610549706e629986c21fc5cf37dc396a672bbed6298a4287b493a922f08cc58ae61b84996602d87bae8ba7bd7658a1eb1adcd058d7cb265104f51dada1216ab68a64eb98389bb992316908c9259bc5381ad92ca2ffe7d7026ec186093ea27d5617d621d9f68d690890a02b64f2ada2160dedd857c06867c5fcbe5233faf9c688ade3785b6f80920942fbfa6a058d451a51e58c03069abc3341262240a10fc7ed46db42ed8e12e6c29b388a1e3f861508db1bf6c51a644e155c23e9ea44d57cdf0668651937b947df20964afdbf7a58f2aeb5ff345f9ff092e4960ef89b7e168cd6b41071b7140a60318f2d804fc1d697ba747bd1d5acd5b8c3dbc37b62330701251d1965329870bfdef9ff05e349952952bca82df6a60fac7a764bf8e06bc60784ccdf9fa94353079332ce28e27b60943dffb155785392fe01963ac01ca087de63dd0994939d5d5096844a15fdecfc45169d84c7d5ff5934db291dd9884aeb8671a9272c4cf59d9572aaf8ec0900da669767e7553f5f58d31c1dadc48d9d39721718b710e6e064af23555e2ad096d0a3a3867a81ec492666d82e2732b9c7675ad8f8525266dc97c81f1e57d5acf25a15fa454042d3cb087d852b104ac1344f15eb00787337adbdb0a2227f46d48652904b8d90aaba775108705162672d645d23c21d216d219e1edcf99ff584c01adb2cfbe493d33aed139e862bc93e61b2449cf32e9eaa168fc8df9b338b0ee519fb5614816c5e3dfd714d3761b6b06c78acf63d1142767d2d74ba567c70dae9dab8c24d151fae1e7da33e8fce5b43f2d233697faa7b39b237b0c6468c571f3fb766363938d9403e7f824f1068d8cd086d6c875c180df131140c58fe0bce6d9dfe9dc1679bfd6aa9a029d218592b69c839712a7a48e4b15c2ca1a49c6e24266b4642db86978d3f942bc9531c27c10107b1983711d894a65811f9092eef884554083ba45b171333ab4148f120fcae882176e123f06971476eca7e71728991b13dd4765f57fbd444281de87bc856340dd6628b3fb2ef6ad2dedeef1962ddc2819a51256e2468b90bcdc930251beed55d61fe95daf10c23bdf702121949e1454870b308506f412d6652844f2c5cbf69384e6a49068bee92c63df1baa7b2a5df4fd272e471d6736ac59e5186bcfb50df0267e2b99cefcfd1b89352cc36f1c9ad9904b347281131ae8c22a0c00759a3a464039a49a0e692c88b41bfcfe434647ae03ed76c983040b8202c59c774dd018ff75947bff9439c3dff5af1f1b8c20c1839dc66821e2ffcba29e1cf22609631b71627a12444265712b8aac4d476829bde7a2b4770a551d361c97266a44ebdefa025f90a6411b44070c33cd40976f3989ae82d2d75534c7d8e544b22f94c2cff0b4a3b13bddfc753d68ba9681b92105dabd3383084198eb230a5370aaaa605d7f85b0655c0b20f7eded8ef756a45483f5dd69bb68baca18e0b355935be78593d9c2b320d819a005c54685c520d19e9e43c0857fe3c7e764dccb95f437aec0cb0f997b3022bed8d3b801d048d6ea28544c800dc97c2264ed94570355c1c54a27f4b22a10d1be183fccb1ee18b18605a04ab375b9f1dc2ad544cfb914723838e98461549c8f86f3e4fcafbbc24d41f1ed55112fa1a255a057074aa284a605c7fa8bf339fa43a5cb52544889d51b34fac4f41ccfa354415c996702b184c166079b090d9785fa26b8395b7284da2234d6eb75e0f390a2231e6182ca001f934c567385788cf7c9a114e75d65931b13bc7bf481da242a02302fc908082778079ef6913ef66cdc7bb8246e704aa21a97e82583e625cc525a14f92eb5fe61338cc4fecb14606cf444e00d207cf593930cecca77061a85a8721ef38eb5646eeb70a6f7c78b273b5a0388a247fe3c9205be7b49f774f7e324f0b088e9b65eb12c4d64ac3d41f5e750c49415f38d8c7fe81a74116d8634e4fd31aa83572ffa81cda8bec604a860275a7cd6a0aef6988683e40c02b8928d1d2b1bb9f4588aea0be29ece2ad20b4c9a7b6645df654bd5755363a56958bce765da3acfdb19774b824169ec0fdb2738a80a4dff71bc113a01448fe4d99d98e522281cd6109706c13a97bf3202d281d20b7309014c554b5c21f893f28224a9a26f9cc06a611bf1ec7af9d557a5fd9a2c9335ae437e3f9dd012030b0bc3f393a2e2a45ead82ddb0297b92501e2cd9a06e531c1ce6e96daa4434e4490f6806727cbd52648a5c53952f815442796aefb7fd07b69d34b4db6008caada9fdfe835b0f1f9992427a0a0cbf417b7f81219d1fcbcd58baa881b09551905bf9796c5ef08b07114aa72927e59b1d2d2c94255eed44b09489b58f4b5283a387dc368c25fc592cd796aa2e196acf55e0c1b07b555b168442019243646d01a9741fa1babd27e4a7e9c43d5db71385c354d1eb76691f711949400f9dccde0602d0d15564f2a0318d797922bcfeb006a5f72151ec7e876b7fe36dcd143931f6c2842b6e9b5702ad863317b252c6b6e60e078eec2f4218601cabebaeac742d4b26a7c52bdd1b30e477f76ad74d696625a428996ec67e23dc60f4b1b16a1120f03c8b943210a1890ab25027c8ee7bbcc83d8d902995ccb0372f023eae087ba2c228296dbaa95d8f4b423f24036aee51c8926ef28e135ff2e3953beaea0b2eea32d12c11c2f112aaee7754e56099806c7b54aafe739fdf1989eb7266f22242a9fbcac77526146875d6c1155066c229c9b28cc699fb4a9752a5283119216250050801ffc5f617695467138605c5770eaaa9f7c270a3a4e0a6ed772752505aee083f0c0e3e9b0f655538ed4ea063e1c10bcc4d947f37fba3be3e80fd313122c7227f2f4e687f841c6c1ac3ca6e7674b4875643b468d06565977d898fd39dbf40b25e4410b6f25de4c61b15902114caad0d978dfc58c1ea7eb41e79c063eef8c6cf276682cdbf89641a49d32035c7e245b8a8aa6a79a16f191884bce1a6e0d5b732323e44481b0118352749b9c41f9299444ed7b411c897f9ae26140e6340942e76378787355d9afcd5ab385406a6f66de49512c578d20ceb20b1465a65d0fa4c45ee94ef212a87aca5cac5cc3e14ba005f33486080f59991c8ef29de2e1375651da2600025eb40736debe667f7290b97c22f6d54f6ab29c5a1d7538036cf3a220f2f6fc9d688cca6ac48ba8906eadbc3507d5b16b7c22aef69304fdc002837d4aa89a956045c4e7ee5d24b8fbd581327f4b62b260f8a4713bcafad7c8fadf727986168dde500a14f9f7088013719eb931468663b1e3030e4044009301da80ef182c7ecf3f0c29cfea04c9eb444c22a4a4b0797a9a733d11bbf1ac1e5fd758167415ff4772398516dcb92d9c8782c6a3388e142fba6570556ad250c5907155807cae10aa52a43ed3702de0fa6bb4fcc51dd6f1a8f102fe1f2a4437b6dbf3f66b8c09dc9a7a74d0bc37dd09896543c2bdad83e359b5d941ad062f9d062170df89018cf9623e2df7db228186f48c02f208ca98c33c56359229b8d173bac0d3b35fa9447ab8fab327db969c17580865cc7eaec64ee76707b0db58bc1ea5db6fbada20f7d691823879e0c3a21c9155622c0e64341fa0c52063d11498f44783804ae6610f2d59c17ade5630b8db388ea4ca8fdc08ae80858b7074461a69fc0af23805c2e005d70b35740709cd80f85de03c374b466a3d37fbdf2317b0a1a2280d051d154b9e1c62a0a052d2f4c2fe09d8a24741a3a166e94156e91c22a855e47bb1f4add25cd1454df00ba657d2b5b181e57a96615c6da855090e9d9d4a7db2a1bb26714294edab971b23e7744f640916b5c43791df30f72f2ebd59bc778db3371cb5d033b9e5d98027d5acb6f3a75ecf82355ac47a66d1b489637a7cefc74fc0ec443b5760ae0d7ddb65aed13b60b6327872f982779cf7e23f159b884e78241e9c047a4c9488af5c3fcd0d8bb14282846e3d797e2521861f4e4fb1a7d8b215a5dc03bbae6be228015c189ff37afefd86ce646d52e2aabca807a688f400c40286853c0611eb3822778c87642c86752dbccc604f47f3a0a76684d12805aa6f7bd5d2514121384b28e89aefe40d39f7269de6de5590af0173710650cbb442eb4f2d0115eb039b884345638d30219132541b51c85034cc3e0141f7d8c18821a98852686652d3e3282d5c7a4e6f28cee3f5cabb0f6b69bd1baa898e3d30777ee558ee47445ec555967bc2fb49c201346a0c6c85db00a6fab91b3139a841685515a2c0cf156090d08a216b7c81808229ae2dc377ca241592f2753e23a83d01891f612f45ff90ac0d7c8b8ff24468a898fb96c00d4f41c9d79517835c58698e3186f82f96e2607d4e07625445da40f7079be42616e9798f2e35cbe43d86e58046217957cdac25a2d4477da72bb36bcae588839053c7f864d8665dd7a4b6fe8b1c473f39b2c0bb9e6e734cd1cbf42a6f7ea4fdcb4009cb0fa05f5a8b0480369379a10dff25392de64af41c29015b63ebd698b3fb254476e22a5716b99e6dd793d7778beec7a9c5d1e4aa8112b73a686420f5db0e4d32668f9eb8cb92b21ff0aeda45bb32f90c4e717e09f43940b0743aefa45b572ca9516b3d3f2ba482beb2dae3011390d96494e4a03b97644e19fa3af7dd965c8fd6e1293dfd4974809dcfbaa2d5fc34d7b7c2aeaf749f216bc4b586912960683ff1011705a936430116488b5173b070813ace372530c4422288b23e19209a03d4520052f69de91e114cc6f11d11f3028040afc041eb5a6981ce28290c337a54b806647b89199b2b76f97e6a0cda94ca773501c9aab85613b655cd739bbbd0dac3f1bcf0a3328800237926746ce3cb5f59757931fd11553ae10c91a3399bfcc758da9291931e0a4e49cf6b9bfaf4d1be3e310ad1c433e2aa632906d9aee771f1a67668fb09018fc79190bb90620f0a1a35da5ef67a89ab95f62a1bb844a1a6895d5290203daa3f6cf1a055769de5c63cb7fc404461634a4aa8938625b8a1981efd92300864ff85e620fd60935e57328af965930678c9a29c4af4331fe7a85264d74065f737cd3c63984bdfd0d4985bacf4d82cb6754b5d85ba00e6806e3d66034150395f963902ca6f994aba964d323c7a6dd9fe0f8216332af923ac62afda2aa7deb9c49c7b58fbdda4c401a910dce9682bab7d53f14433a131a635cc64d6b88274e931ec597a748e0b097dc358f4b188e1b3eebb91c60f57e1f76205e320dd024fd23865997c4612ad04a6324d8de10c8aa66b54e146f34dbd6702c6db92f05abe9198bd7c52d497913e6e687c397b2f2404381c1462de85aacb78560fbfee5d120e4cb5455cf2078be4bb8da3b41a1356f1c90786a7f31bfaccf5bd6fc337cda190af6d57ea61aef18f008f1ed76a91f6fa4673dbfcb90b0cedae6d92c182ac10e490bbe9e3610aed536ec7e1e7ff627e89e7012e7efb31dddd206de8937e471f4bd40366087d85fd35418bc8283fe2767389791e64916cdebc68f8b3ff7abecb173db6d8db785e8a8d48419cd4274e22430c79d4d6ab7473564a6429fcb4c0a2bb99c879d24c8838f1e8110d2c2338fb54cc599f4accb7be576411e9f0f5b64678fe9c3c790df6373bee14c8f31737882c1c304dde04432796037382a7d0faaff1bf843b609e68ef34dd63c80bf1c2ece784ed6088e28418aab2b1029a67d26297104424ccb31ffad59ec7f448b0cca32e637a7e781834ab8fa327c1cae30012a911247b81649db67604e9e390ac057ab25c71b28ed12f176b33dd2a63efba12eec2ac95ad3007eacd32a96be94cced5b04ff5ca268b26496a00592e06363890ab0443da367694a9ad1bfcf1e0d67075009fae20603dc8fb77a6affb113bee1e891aea6714cf1595802c85ba02b68cf3780d878196c6f768a9144dcba239b08de123109804fee490527840a3c90356e838d3e87caae9d86036d712da4eb390416bbe40b39301049799b8c18aeb9e98031fcea7874fda5d7968d70c750d3416d7c5886822b38742117124211875a21fee301f44039a843eab628dab08b633324d56c7c8364557d898d40c8421701cbb84d3b05b7214492a59949dbee1e44259d19cd9ef3fa18a55663424f6308aa6cc6031594ede26146049ab3b5a188980c86c574e9023e43ca4395ab0c791c4a2b135dad1e785c3f2f403f84e009f9a88aa6f806df920e7363cbaa7925916030d04062fdc2a16948619c77e670fe0af1b49030ac4384246baeacd2a98085acec02b1a1bf442bf027ec2373372181c0463e9f3b48751300ddba254cee88112a5d4ac3ad3854e47838ec8e898e588f147a0e601956124d0a5a590081a298980b001bc8902ab5c06ef04d0065e0f0fd32dfd5aa3236d923995b0a75e07d9821290ce5495cc72c8f1522284e40641dde687822bb944a9db154b0c815f5980a0eb9059338df6b10f14253cdccaf4287a77a04ec8b72b4ae1011f2964645e4aa08f509a34c53c7db8b68f3b077fd73cc391d10b97c247d0c3c45438874b6d39b96b8c5dcbb5408fb2aa651fd6ec5f59766d21a7438dbb958aac102f1c4507029fe3f6aacd31a7f0fd227bb38ac8d72140d03e9e99d4dd55cee14fefa88350c4692ba387249d05cb4a203af1a57c55c31e55b1d855fbc4599e16847324debb03ef3ec8021770c8fb57be3d7cea195a2ce639933b492fce12cfbb1587ddfe987a2e4c1ac31d5199342952c3f303f162fdcd02e71ed2a6c3f60d1343a9560b7a0fa52de47b5e3c1bd95f509264d6e15d502a881af17ff99fa394cedf54c9dae29cc6fe4cf99c72418b0d04ac18021cb787b9a64871a666b18b1ce1a320717c70ed1c6ecc924a1493fd7c4048292dbe3758a95e1a6248d0b6622a0cfd15213e391bf524ccb2200613d6c15bd1cfa53794dc4f9cc848692cc59f3189c00224ca83821b866093bcd423755ea5d81325b769aecca45b55627c8595400b7eb02d9174c7179a99cd2e2b06b282c4d8ccf8f785684336861a3572645d3c187739c5413116e3581789c3b098ea723c70740900dc6af5758ab597be5d61c3921db59b88c260e96a223525fbb4749fb7afc8f50549b6cfeffd132dd4085fc4ba6cdfbcfb67317bcd70e100e09eec024fa6c0fe1d4db153462485026c0f2c658159779731aac6d8e5fc35031d540b1211d91f5246e08dacc2d22562c10fbfa8087365b4bb05e1d0130b7831ca6fa32644ccbe9e52dc876a1dbb5a4dbcd6d98bcba1648448d92beb7269ac856c2e9aab57a917183abdfa7d4aaa58b9528da0956d662c12923a58ff86e9beb980d3bfed95c72c3bec23ea3b20ec182299eddcbdf26297a146c324af1bc4863eb6ae5fd9d343ffa4511c4f628d4d76e1e2745b477488c6bc74bcf5f42fa6f5d38876fded895fc1680c0bd2bcc4e13519096067297d4efc187c8b7dcc154747d291d52a0198ed038718fab19c5295a5ef6bb9e9c6e82ab657ee3d80f0a28492e222cb816d82f5266eff4cfa9eb5584396f94c0e9b68a11a8df1b0f44e1ac2fd242923c5ed10f2b124f33d2224ae56b131b9b6ade3f0b34af5bc24fb30bfec9ecc38face8b75d774a30c6df1334a9fe16eead81e83c5292c8568b58d61b715abd8ac52538cf3a48caab61f0f8279b82c6880f26dc5ce98bf6b2f0f516ebe05ff629c67213ce6786cf348e3b0bdc57be0718c5a8ccb7f7c83d233108fca33f975855a8cff5709e70ce7627cb095109cf4588c07b81226f98dc578219610241b8063a9f616e330b58491fb75d72c7f588c1f700967a9c6625c60973096fc5c8c1f383f21098cc538e02f61926f5e8ca7b9db68d2b7187ff0b6519b72311e54456c40b7d10872313e06da469f7ff01fd9ab6d347d5c8c7386db68e1adf76d53e5fb4c28e1e18b718f9d8a2fc63f2d64a48acd636fada28ac0185771f6d6417fb162a48af758d39e1a1a9673d361330f50dd60e5a8922aa15142da3ad12c8354a3b754b9d8a93ab83065b3f74153515bbf3241c101d5aa5d27fe5b73f433165487eb70a3b984579c44c67f1656a777800df8c973ef80ac66857630c605db02c8118ab67c627e974209f885bcdcfa0152432ca2c88ff4fb8bb1241b3bbad9f58208d74067e1198a775a274d2f80ddfa2c4cae2e5760409b2f64db88d17dde0b7f97573b7b5474acc4a2f60eb523a0944f0cd3d6948c4ae40489a98f84af72c1002622608e2c86a3f4bdc938656a87848007138f835d2610840338ba8db119ae8e4d34c5547f3136877d34663afdea3d5326774d2f188ad96962b50582cce672e82ba31a9c687a4b4ecbd876170ef1825e2634ac7940290b53d32cebde0141ea7dd50b051b0431241b6e2ac8d902dfc1adbb92390b56f29aae50c44092f7b425c32a042982796f1b76c6a4fc57e06dd9f8ec02e1177c1e9985f52e4c1b75830f90ec8254dccb16fb692d50ff78d5104c1459fce901cd9bab83074a8acda67b94093e68773098ca41095315d5e83ffb5a2985e1156814f2b91e1fe6a3c594ff5ef7a1bf22fd13d67ef11510ce7768d3682f943710dc59bd88832e08efa4e24531fd49c88b7bbce9279c356b68a10869320bf126ad3e5cde555bfa9c815a16c14a8e4f77a841fac93bb1fba2c8f0d6a503ff7d7e884e060df63c7d3790de9e1c1b426d65a619ec9cb60fdc1aecf338dec63e249e0ce95696baabbc1dd8a451db338db1c00bc30e23120b72d229d2d37501ad79abe68ed7c123a0efbd5fdf41ab0278bb08286494219b191b3ae3d57ad6cc14a83d1903c9efdb26aa1e23bf3716bb16277511479166bcdf2d343f01b0505b64b89828fca886760061dc3205f52607672233e555318008c7ac4a28246241d17fba5f0cd4f83c58b6f62e0fc83c0784b21b6361b12e6cd1dc734e0cee5d99b19c0a3b3986af8eb9c5e995863de4f577ef10ba6b1a87d2bb7ab21682d1f162af5bce472d75748c821e88c572ae15bfdea284bc0665bb841e2cdc4dc9a99db470c514c750e8ea7a29014db90b036abc8e38cf9d90546e539888c1edc3a791d4c8854f70882ce6d6facce3d94f066fe446ea41565e24ded92ca4c835fa6c6f8c07cacc11882dbfb7bed63bc531bb83f49b5606517fb843688d643126498ba0c7dd5a5a66a5059f3cc6f99aa9203a3b9ae567471f3856f5cf662b5f92a695beb51a56fae1d11e4844c7b1452e2b7443f61121e68e6ec51895e8aa5db646812a48c0adcb38de7b9b0abdbef4d6161154330997913f3295790ba6e93e9be2c581060cd7e11b2bf019d5fa88e21629328372fba6ee5150181fa9d6b098249b1d7e2d5138a624d4d4640b294990f27ca665afc64e66edc93988df5b50ee32215f2f9956c3a78c106c469aaaf44bb9bcd8a74e69459f28f9229b682a53533c7015a85b361cd4e21cfb10a2944296c1400c162d421fcbeaeb98325bb0ac251c58e112d6acb2fae4186c6173b89cffa9781260b2d63d75e7af0122fdcef657dde41c225691945492d4d2b753afaba15015c7155212f55ac3ee8a0d884535429503145cd49a42e459192285480a536f10abbbbe4f9887c1622aff2e3a95fff846d0cb0a8d38aacd63aa1c459127ec4cbded1378256877f590774838bbc86ffb55c6e7058379946572325d7461e61af7f534fc72118ba76f6579d34e26f26fb523f310714b87c716eeb44de6edc874e6ca9f63f74a40f6c124bc21226dadd41655e26d4a075be6641b0cb754cf1eba3f4a00960c92654aa0f8af58ad4487427150ee628bf5f76f963ce21bd0028b5b79516613b52d2bbb5b5111dfb12a86041aad7e3e94b2d0d8d538f2e03c0e0b24fbd28f71a849c7f84f2b61028d93a2c4ec229ea1eea62a9f46162e80a0f6b38d3521ec3cff27338e843daa6ffd6422f76c51866c8bb5428df7a40b650dfb74e12890a2caddde4792fc61717d78d4a302a8d1d7eac90f0ae9839117ad2898ea8126cf95bf26f79465ef22ebfa9e04e25157493c8cae72b8e68e21db8831263d717728eb2ae8b7ddf80cf500a671fe8ae783a987090317d948cd60b35a2ddf06926d6aa3a6a04c05ef130cc975f299983846eadbb568ec6f2d0ade422899783f1f95003ad316803683968277ded00fe814733010c49edd9bef823a6d1f244027f60b5b90bf901cd3d74d7e893d5b3c4bd8fac103285026e6f0ee8baf29187a5382b4ade624a1547924385178297a637d0789ad2f78ce8df610d21d6d9282b3bf06b580b23e2c9a3e9ced256be1ab66ce3e30b53848dc58dc9259a6ab1402417f9711329e742d0e620e53ae2260525e0c84137818dc5c0fdf797b5f6916b547ec51931ad76b038663307de39bd68f94eedee9faf5171e4b8dcf6ac922e2972cf7b0158b69e4dccac2079d5645ea0f57981df50dd52d5952239205b135448f00e9cb786e74fa869974331e2d1c1f16029af77a6706d47c67c0f2226c51723ae391e063c300ac7f608075a5becc2825ea6265147bfb7cbad7cd3bace68ff1e10eb140630f313911c644eb1db3bbd7b16b3ed27dfbab70c61ba885382a55f7d8e894c604d3c849eaa9c5f064a9393a468974404517502f77a20e77742def7a4e8eace57105e6cab1ae09b172d393e44e4997786e103d88bb1a3c26e25e6eb2e0b1da04aad28e69a6a331a1118a64e0a10f6131e7b44adf08625d1c0d946ef9184a63ad230eda80da2a2a0d641ae212424dc9047c706217028db4c2e3805cb7e030b80003bcd409b814095d96e87460186e6074501c64f35fb6f26e1a3485380dfe9ddb2afc7713d9d2e94f740a8c78cf1cc66a8592aef358b7bec7e6b774bea81525f0532e40b53b74fb11c547db04a04403c7c2a7fec8b70266f71be7b438805e9cc27e3e26dd5d321ec89edc6118e499ef37313f5ca11d75e95de8db850b45d9ea4a680224bc6801be9f4b9e3d35b1c3de3f14ad5a524df2e6899d465fcd11f56d97231e8c30e2302387fed919cb7232807c10872c4854611a05ef03583fd49b3cf849f4c4edcd45b79c4ac3fc19de7a57dd24c88d19b9eb031a6d47f6b1459b58d719ed576d34dc25038a922222c02cd90b6832c94b9c930ed494f929067e363c81ef4ed0e6c1d716df2c5b64155bae76dc9d6c7af2866fb72ae473dc8bc0f8b40dbaabd974234f59acb56bdfd84004c5cf6c28ade0a57c36427441fef182b66a9e3459f11c167330eccac43e1a6b165f150fccaedb8d00697e62005c804736bbe4f8806bf1f161ef9554f20892c80783b1169fd4664b90b481b3d73b17e3074df02ee038913fcd74298a7e4c14b0291b8d0b6d30fd6f7a4e144d8dfdcd12d6f6dcd76a70ef35414d440373f3e485b507bca7f8323072c28ce51d63cc0ba02f9b30fa2a992bc596687c282935d82ac5b197e1953980ca8f3a9b952140d42f64d8d5f32114a5e65b8313520196d64ac62e6da8fa0a394d6c44620ee4e8b207a2c1196abb4af05c42b5b13f13a8487dbf3920ce3566de6f53cae40a697cae491ee9946ce485e6ecd9aca8aff46e26bef6f7c95d55f3aca17e189c5384fd37969614df480f7fdd78d0682786711b3d045414a372da6e01508843ac980551b30eab2bfe78aa3ba0c858770539f618319f216a2b465e3ef40deeeb4a536559532d90da689d9707a4be61f458a60e6e8667e9e310b35912307c42891cad077170cbe649137cf99a3dc31058a069109ee0c1c7b0be7c57d7ea1c147a3b48c07955cd76abfc57d880b310da8db642b42ed8a7cddf015c034a1a5bd1045ef9c777e807913d1704c4c01759702c00fba270640f53c071b4380415fdc308c38f2bb55e280887265ce44eb76c621c4708ef42a19d62ff490a3156d3d4304b6a90a9523f0bf7f64903f699e2045b4ab1a8eea824654ae0d30f82f99941547493697d80bd352fdd57877cc0a660a859ade66800817eec6419d7f6d74461b7caf8abf03a13d4b771fec42611f4275aac974f1472185908e03168b3e908679e941a518d869cc6e4383a5991d3fc109005f9a214d29ab75922f915aadbddcc8b63beea7b19b0dbd240eff9b88ee191e35b7652854df3c902343f0a9c3433b5fa53cef51258a796caf72ee72e42881e002a35cf2c51308c43d8c07cbf0696d264d8ebdae0da252c52a3ed56155ed60c434811c969644595dc2435c211b1f31a52e7e04d44ebc09009e32f25074fd007a7765451055ed39f91f89a737e04bc0e1dd516faca45edd3a270358b4c204a0e5885ee6921daee1e8cbee24feae3227447ac3221c11a700a143f710e81f88976c44534ce5476de6e059a8cb80826251a1ffdca2641e043a93ec4ecce5dd045ad952cf28ffd95dcabb3da70d1077e39a2acd4dc12551110ee8e5628d6dfe8b721a7746c9f113feaf582f8360f072061b11313f76604ca0879858a817a67f0cde0c92a20ff69403f1d8df23594524a10631d32447a13dffec490009c7b7059bd558f287b4c8047778c547bec73af1b5151f8f730214cf4651225ea5a44b062f35c9e21f285c424cfd16be831a8c1c97caa922c864ec2acf17b320c1abbfc17e4a1a2761d9a88e6591ceb6aead492c2ce33e221f826cc9346abaa9222029539afb54251c11593b5953ddf3735230644ee8634aef3f3e82cbc40ba10a9ae43af505a6eaf3719f3bf2b665e44a09a80dbe99351c926a7646c7ed2fd1a43b8042118a2d888dd4210a719050df46a6ca07a719dc375648ad8f8a561d0417010d30ba22f3aae13fd1a36b4ce68a1450e0ec8c4186ea2f0b5cb093205e1bee4121840a6d39c4873161a7e4a100bf689d9046f565b9b575a57609dd6f3e53bd439fed3f9aeee1ebbee25e5a6cbcebae28b5c0b067e3a032170b8f83ca09e1b10379a21e8c8e14f8c9ec727562294e8b12fb973d1ed98be3ca9cdd2ad14fda50281b284890c23b7e3c66fb5e8e30d5f6401c4c02ed27f34d9a56ba22d155653f87bbd205479d291e72fbca94732dd512565f9d64761207ccc0fe17b86719e1e8a95a9ead9a5e3e3655034b393c8370817bb607c78cf6c1421d976337f28439881b66c9be833e4fe7ae5719c2d9087e0feb2ccb749a4f22af7b011c07f7fd26445565275fd98de07db4417390197e694d27b7e7350a1d1a475b00350ad0e73234e35e2efffd65c09ce714c09d55b6e9644292cab75a08ac7a68a0ef8de66977f12555e9db748a436089057e44f73d52e3468f518bd6357f7a63002b78a5a6257efb99f3f62fa9da1667ed3489acdd2711b0a7b11591fc1df49261238389f9c46d19c77d1e00ec50ddb3858b42e8c45fecd8236fffa425a35ba28273af42e67747fd1ec91752eca57a044ec4ae804585194c6e123296c0d03f0d263eee08a354ac4c008b9097d37549ef36add0a6797ac84bcb33466a8e0b9cc88ee67fb7a1e1ad6521110956961eac404acd8f39d37c4b04bcb149cfc4f4d686b6afe8ff651bba61ed7c525f5b479c0b93993a9e513f13c45b2473d928e20206e7eaa6680a3d70ec60c37eaacbda263228d3a6696d96fd431c8112cb84dbfd3a4f0ab67fd4d48ff979022fd04686c0ca70742396472d1c37cfb01a8004feb0bee89342d07941a85028581d4785b556d3cecf9643c8a04343580ceb24b4b6bc231555731640b962a6c17da0a34f3a850cccb2d22aa839193cb85619dd2aa90dd67bbbc8fdf634bcbd7ad56ac04cbadc4db91b33526ab28a6e9fc549ecbd7c4be6cc77205a49d4ab4ee11b120da26bcfc8a9b53a4adb4490073c9e398de6bbb562aa1f554885098134f28993d763bd2d69f3554a46db72e2eca6c186da46eded9d17fa86e58db938612bdeba63ea6baa5c9ca232071e9b445359d6f962bd357e822688e93727149f7a0bb5498da18446037bd80018c3673ddc595eff3662c1ab4ae6e5d336eacd644a51749875acdcebed19d2ea6b7b62f6a56ada7e535d377798add57aba6986a2b2ec258316a298b2074500f2756234178d557159f3ba08eb2aac7816e7b43a4ac931c0460619bb15506e95bce3007a3fa96f75a6baac8c9fdab1218b839faf95dc121833f7c7e7d0987fdc81a303483415679292f48ea6671e080b6c2993c6d16b5818dcd02ddc83133274a5a90662698f600743b4a13c0861b8b96e0875362f299365353c1914c638f801acebcc4433764860d42dd512cb22be12de3c23a64064f3dee53af26af2d653cbf7e4d520a7ba073314d6699572322e93c62ffb088c35a1186ad58e2bb361f4470b6042d3a40e1768c88b606714c5115d65a3052c450172552b43a46c4d3e974e7cfa804aa8cfd196cc64f0495884d43e97bedb2e23f6330c71f1311d559c41ec09a430ad0708ce787884e365ea7411ee2d975c2f1b7328e87d59b36b1c84b32890cc0628f0f1d1cb96c9d8ab0f7b72d9a41c4c863725e448c3235c1974e13cb02908e1384721ffc01c235bc228cda9f1311cbdb25c2ad676d5cd84701f7c6bde4025f701a61aed6cbc998d327e1abf754ccb18b259511ec0dc75cca34d38c88642cd413a97c06f187b7702665574c207d057e4d7b51ce8fc4a84505c35fc618c369b3ea394285b6379663dfde08410af7062fc3b9376475184eb74b9fe47a76ffa0c519e1d8a61dd8384e7d44a17b871ccbbda8007d01c56ab4b25393dc5ea7f776dcdbe41f1425c0ef6d42d90aab9cdff48e103081658d4c3fae2f142533014d5f8c8c7ad2d796bbb3153e1e8e868868e01402b7d00f4ee7c8a32a7a3972900206da123478ef81968516276612f621eee491c0f9fb259251270dda622b9216d4e808e564212414c7194eb24e6fd259174a603d9ed4ffeff5611a802aae861b8e8c75147d8dc2b89cce622d769302c44cecb97bb5a33521aa52729b6074a0dae04d04d886864d08758211dbd17aa6e4877894ce99a719f05d73717dd7adc56db848adad8debc6387841a97cb9f739e08d8c6502cfc7b441a030cca20d709b233d33161e66e3356373fb7386b2e064d90db36192dad4ac11aa92c0b1ad326d462836c5a1001b7130231c74a55b4b5c3d0faf81f0a0af4a86ea0549244f109089a0296f989c5e19452dd7fc4611359bcdfd5c197a1949e2a2a06bc1e9bd306930da3aa1d569b5a767576b6868fe8127976e884f86aaf1697c3abdcc86efb2e5fbf598ee72f2c8f631b55004a3ea691cb15252d33f1d5211dbb46737f1736507fa529c834ab760e5120467f300baa2139e466518f4abdbd0bd8e24be0bab527a290f3d0aa4f98445e72ba1d4f792078cbcf2ba52f7c90b3e2acc9e8f5b0a226ed84579e37735909bbc89268dc411712494687b9983305ed1861a9e2f2e5230516422ec764b833582f7c29d48577452ea71cddf4926ecd4b0efc01d425a6f57df321cdb2415ada0f36d811a2617685c611bb6c2fdf799937e72e11d1ed13958242c401e98e72764bce4bf3f458027868931890e4f01d98c0bd1535efca13a6d01f5f13ebc64eeac2389578eaec992e97bcc6abb27142c14564e60527c8b23f12a142e3aaa023a8e5cb7c0b4e4e1ef6b4cfca0f7b7ae93a1ef2b97cf1ade05c2e17adc3c425f70d23c77f218e275b84207305819f5be6d6b2ff89c448c67dfbdbac6c56806c857c2132cbad9fc5d18211f7161333efa20fb1612222cabe272488545c4116beb041717732a1176bf87b82e4ff5a04b1d9392a99a0742aae7d284b4299fb3e8e5cb9f325cda92aed80f4c8104d188589349a31bd73d093da8c608a5a83fd39a52aa582b8f1c108d421bb5bdcce8e752341aa98a1bb2920389e6f9ad4d6f5d2623542c4e815a9422265c01cee1daa97311aad7762e2d499655cd604b46f11d19b6845d9331e6a8c4d44832bc0478537822da9cb26682d52ec4d8fa6fdf6c6c4165a59a9cfd5d19d94b4c7bf1ffea312b1529a48f7b2359c79f99712a83013060eb3a10faca4ebd8b1f10c4e6833feea60cd46348d57b46d3bca842c3761aa32a18e5bccc55c94e93608c1050e439d47a0f16dcc875c75d70c9a64bac6b8a18e7a9a3e7b16c2ac1b0d2ca9268a9273b43b329fd6b65b20757b1e06f3fcd12155316404f400e7f8a8968b8786c5891e6eb2c704d73f21dacc9fa1c632b52292c0c09cb3a02357d486e4854fd834e077b50e74628a869df9ece3435703a315483d713b5e3817427716cfbfb51c8b2446e56dfb8d72d6c57bb6083aee5fffcc067a00d72f82cd39a8aa8aa247b9e2b944b4549053140ee6ed5a27fea15bd26f7f8aaeefc1b21c4ab5f1912164a43843476000278dbd315a7b9726027048d4a6ea210f24ec8928b25ef6ae994be1f3c2bfd43701f2d9c5975e955dab176f1c1b5deb910b473bd198e739cd44b74921b04e816c89b17af914ad8d890f38f3d614bd5ab25700c690e42b926d5c534100b8b07e3e3e42644a22ed40a27b6d1864c003b0bd1614af18d6f595e7d9065fb9f672a04a3306d171f9bdb3aaed57ca53fcc4ac7df535d3d9f1b175b70678f18f91e4111ec03cb165cb4d8750464ac1746236e3e4c089111443039e26025630ac7559647007866f668075dbaf20259d73f3dc7f62a32d633fe0d5b1de6ba66e4e580aa625aec58322dfdd31e59627657566efa90d5213ccdba41d157fc8459d9f7d46543b8b55d8270a52c2928ef018ae951a190580f85566a582f4b5d6401326bd68d4aa1dd202c485da186fcc17556434274b0796f1fd821cd6d890831f5740fe6e28d4636c55a9ba15bd2f257125ee71d6476c68e4586b4a9dcd87a36705a1673fd07feb085c0dc325bae2103d933a051c23cffe0dc8857d14217aa24838d3336df16c22957f5b32dfc82bdae5fca478aea7b8a5e48a84586a8beae9dff2e04412f2da3b247ba677fce521e4ae18550c85e186e286d0f850d0bd4d3dd70e14e59334df6d1114f2550ad2ca9b5ba410952d1812f638c4ba3dc62a304ae6e2ee44ea6b9816d7f7d34f0bf2e2d8bd8b1a669517d2701cd010838500b49e82eb03ecb1f2c7cec0d79f2459af975e655cc5737a7688e823965f314cde99bad98556306cdcc3a332ae6d79bd33547c39cbe79bae6f4cdd6ccaa318366669d1935980c81d4f4da48c21ce130f3b0548670308b6c963200f06ad7fd59c4906b5f07dfec95de900df5ed03d2b3d18638a236c4b5d931146e1c66f04a8eb8b0e608789b9396b472033f9183522a3ebd47bc2c72b9c11978e3d8aee5ac75871cbafa59d83c7494db00cccab4f5838c827c98452fa05ac225b917e28155f42e7234e232cc916cd6fe83fdafc4cf608684d84776d65e2b8a76bdc8e336621952d0efa3fb406c7aaf90c06622144710a7e7f52347949f467e12f39955dc11ab0063c6ec2aba40e91fd6882f7190e7b27b77bca0df6e720c9e1e88352b830f29ab7c4c8dc9a2a343a4003a698ab825f197e1f49a8298580c90957bd2a674092fb5588da06c21e78486ebe6b33f57fb230f69e2595b577d1ac2c16184d301a1252a3f188e44313e5ad01a7854032c059464c429494a9d612ec429ed92951f7d7649500286441d6899075812a3b48923280d58ab2c39e99d6d1d272685702862d74a24b603e4637e19d4f762e17640b00b242ff06c2da16141785ac17703bb1238050cacea0bdcaf2bc8198dd2eb929b0d0fbaae01e4f83b75f4e1605c17ffcf52c604cbe9beb4e79022d7c170d7d311cec7f582e05e48ca8585e5733ed10baa0f8fa6c097a29a35de2ed0add171ee5efdc7eab43504255016112a0b93a8cbc8daac02c73f616f158c7ac0b160a45a271c8499a061889cbf497715ae2f070357a75d92c66d8d75cdf2c2d1862bf2c164c42dec9da3d980b06bb1d799fe383d6ca30989fb7d765e24d64d947458319e28cb201c28e1b80957d513c831c41bc5faee9ca38e9e65c96acbd4b6bd3184362e311496d06ddaed82fe439b3fc0464fb5026353cbb055a33478a44c9c551584f48adbf22c29a5ea348b57f2590010639030cb769e4d2d57afe165204a0a795dcf55c48f2134f00f629d9d6f9e990e579b094f660000a7d7217bff478a52e9a4ef98753d8f5b81c5e7c668e47b5072b9d7d704ed3d82368348ebc7641a202c6763764376a888855601fd0fa2307752d2297049688102bcafec463e56cad69f2b325680ac6f18737479121ce643e1d527d343a454e95b8c0f302b4ec4054c1197a83b8f688b3884019aadbffdf91ba2a5670af07a9fe036488f097f6446d2f575731d554e17afe0e6bf3ad247c70185ed9b32767ba893ef0a5f957ee6fd8151e47c4c9345e72753713a43b8b2b9932ba784714346c1e445ab256bcacf7f8dac74ab7075d60051216476160b8a7df38903635005f2463202178ad3b9b61c4cd7878589fbacb3b4f1584b2bef9bbde10eca51fbfb3e66ca711e3c24d3bf0a8990c347b0992e5a1fbf98fb57e5605eb1fc7dbaed207dde632f4647e18b694fa1fb06affd87f5fb7e59576fb751d06751bba1ed26ec285ae53525b78b89863eddd4db63bd5b01767badf37df9a9fc685714cd41933c25c61ebbddea5222480c4a5a0b5c4c0beb427ae5a329036a5892e3642a3a56518578d5e0d8e99b855e90e41b85ca8e89ba9f02ecdffcdf3543788d7febcc0963b706afc2dbf1c587f318a922f9526f2b48dbf0af4d984e46e8c9c2c0f5c94765161f8ed26f337215450d3276ca281a34c62d6a87215b760a6f82e82c8cf1218270c7bf13334ab5ab4c468a38762ca4e944ff7782c58274def890506a70718903ddf77db9084b67ea87beb7696d6a603a15a780d251dc215ecf90a89384df4dd19ca70125189d4eb6dc2c8d8a063f0cd2f55d5fa0ccc7c9a4f6d6da6236e034e92595cedbb40b6c6a52fb5d344a1c1b87262adc8387dad6b8d8d67987dc2ab63e562c2cc85877638fa00224548e61a95918d65f25c355bd69c69a290638c7175199a3c571ff573404ec2002d3d6c0c88c60d636cfcfa9fa735021cb9945eba0457ba7f7ada2b5606d5222b661ab6595b363badd5299c5e0d439557298e2d869df4d3f311256fbd71e372e729ad89b692b282e72460bfdd2d611ff8bb217bfbc43af150bfa5f57c9fdb9e2d388fc0da5996bcc13e4dd797c9d88f2257b8e5b1c91b33183b48be6ffad5d5895e212bacb8b6e7c125032e9c9bdef56f0de121a3c59eeacc601ce033cfb67829dad9e4f62265d33a68ad5b2fa60a88eb0dcfbfa1fec0ae229ff6193c3e51fac250e3d244968043451fa22c5f4a0629e5a31c2580c1df8c49d9426830ea0c16df58a2d252e8f4eaf5829e9867a74d5e62208dbddf178fba7d767209cdaca43694716452bd29e8f87baefac5aeadf53e0b1be82872b5a7e22a04d06d0e70b76f4ebac7e5724cef159a26b2ed556e465d90b274c42c22b0979f4dd556cfbb174f5e423746551dc7954b2277327add2605eaca08f69d06f6170e93777c649417029213e1b83c511f51d67359b21f53c08ad985c7eae7a60fb2613084e16b0c1eef4aa2d2d2e8fae575aa97431e86285956a17872e5758a976f768b2624b0ab74123abbe84726b8dab97bfb34ddad42d363c0c1607015e320119e8ae56991271f3686a056550def9a3db8b2110d1f9aea044c2a8896f404fab1b5b5afdbabbe6561c7ce00bdfd990bc5c6125dadda3c94a5b22dc52e7fae5390c40c86dc822d6faae032a9f018503f7de49d8a688f8a671456c8cef98d8d17b10f0f46e722390372c1c8c82466f94a077ff209d12e7531f7c148c5ef1b641f46c718cb56101e2c8ee4a2afe79cee7cdf9f06640949f4e6739c4ab621f8e8337c0d1e5c2ac8e41dbb347e482431ce5efda08b5fdcec1e73f3eb2476dee8125e6649ecd3d906f7a62ba975e0e03328053676881666d9cc29fcb70afc810de3a69d11a89e119e2976bcf018fe014a803e540b303626e4fb8508d886038127a82ace116fcc5c38123a7d35d94ff13c1ab33baa7062ed976eb8e2daf51d450061addfe1ff1875c8b5b58abe3de85bfc66532e265595b26eccced1090070458f159111006d082c46e8793b184b75cff8e1dfdf55098e98606498df4a76ab82a57752068c5072db11d69e31a2e43036e58fece0a95b38ac450bfdf02a53a604bb28c9f84c95192569ca512b47afca9baa6cbe09816415d99ba7bf2fdbaa06082b516684be87ef1e8237961e4b526492295049186185163c811954656de5e2f84796fcdc9a5b84504204ade1e97cb34ddcf439d7abf4d127c5b0e83fda12691e073d963ec80b3c8b7c69023bdb2cb6f3c1141c7e0acb81d3ba81f245f021abcc5585b40d2224e075a0b1b9cc129e11420d4f0bea9708f6c4e0221d012f8fdd13610224f3f42f3a8393e3560a38185fa3b88fa1e6017769e3477215bc6d9cf27809e910558b2c90e116ff66db3bfa4a8fe2089c9b6f7de7b4b29a54c52ca180648050205dbc6ca22bd5d035c3f88e52ecdc92ccdc79d4dfdb497d79a6f555ce3b0dd524bcdb1b2ffe6efda0692fde5b04db5ce7dadb3a935c80d7adacb6b81581e0872b9ccfd9b9a0f62a5661119f45a7ba240ac3d5fbed77299fbd26b81589fd7d25e5e4b7bedf9ce7156671d6735de557b9cd57757aeda8b336df356722a758952d6facd204dc8dc2439b59b733478b8b9d77ed3344692e5f6d3cee740b9350f29087b4af9cecab5675bc07bec7f1165ab1fe83d2d785be2072f1c6b6cf0c211822dbfad071fc9e0e7b5f594b1fff38a34f2e517e38ffa9fd79e8fb71ef9719886763689cbf0486bbd3ac8dc756a90cb94bb5262b16d1bf89b8cb3b3c1768e5c2be6ee1c19c45bbe177f7edc3e9fd8e20bb8b2daf33720d2e38b3657fc3825f246392853fe6441ded2e50637d72283a04f6a4f10d4b3a76fb96dbd30a732ce59af070ed9f7354933cf18f9394c06f9be30a52b2baf4c3081e3ef3a0339b694b4111369b8aefd32bf88f4ab1e4d92c4a4596b7407b95da5cac693247f4e2ee218282229b861a4d582d51222c0c12a091a6e10c1c40910e84061a409540cab87512d0c111f4471cfeac3e03299d76b79422e3e1526821e4c4a297dd2fb8099e139e3894d7f851963370d79b6b7234ff8c4ddd94052f850051228d430e30549524ca0940c1104172320d2f3832474f024438a780376640a1d399c28c391f4c085c7c3c5f657113dc9070cabee0088ab0315ae94133f70f27252c49770a3891551dcdddda79da639e7443911777fdce40a1caee039a38d9d224b74f084174bb04863fe50c21b4e449182335c41b071a448966537f8ae60b32b3719bed90e683ca009173460c1163ad8011455111d2270939b3456e60d4c48184488123a2e2a7c628826a008830c1cb8a1041831349680a2046ac4c007a624a609e80f4db4a69d73ce89ca3e2080266c2c99215407a0b88155c60e46e8f004091519586bad3565383ed89ed11eaa506388254f9210c38b2aac3802959100663b136bad357d88f8d80236e79ca8ab831a5558e1c62582870d24b61076e4610304610f502081161cd1a1881f88d821891145aa10be83bbe700060aef00061148721224db5f45e4fffe3e60665458a1c553c610fbb3234f1947ae18630a364e3c1c3181ceab882147dcf0f2e2061f582e2172b87befbd30d89a6d30dc1b726237ed1aa128d83449662dbdd4aa5497b544e8165d466f84844184dcab9a011c69e8c4608b29ac20228d957903131206116275481842196031c8804a02a6061560c56088385890e48bd810456e2e8db259ed46481844c835e26e647b124b2fbdf4babbbbbfc0053bdbdda9df6ba180326bedb5d7628b6f666b766b9665b7da6a311e52e48d266fcc21c71234c0c0f866d7aa64d5656de6c3de0f67f8da7b6f866f666f97d17be7b8d6de0c865006580c32dc8b4f2b68e2045fb8e08b1ee620819f20b3164bd1848a35ba790313120611422fb537970a369c843279336b4937bb1a8ac87ded6637bbd8e2fb052162fb8e5854b1031f3cc8c123c51440c8400824dc0436eee065adb5a61b76d4a82028b203c50c2ec67082872dd6b0c24813352e44b8fd5544226c7f120cb7638b05664061ba288041102e1edcf08336608083a750d2244d504020d42e320f21611021f7060bd613ca12daec090cb42ba2f674add5b2fa6447db819fac605bc137fb3ed224dd3c51e293e90877b0e28405193d58e3062a20822092822742742a37f572367473b91cb4c051c1089440811c5a00d1e48a14504a3950ad295a56b32cb336ab3bb2ab564dfb6815869a85bc30cb6a56eb0b59e5ba1720e07200046ad57440f184c8c685a0387972c3568219e6d08289387240c6131b94208e1e6cae654fcaa0806856afb5b68a6c8a2ac616a10cd36a6d1683cc070cd965b1d86b920116830c978392bbc081521d55acb07d010601970320407d70038725c428f2c613398ef80f46b45678b05b08e20bb490030e3266d0640b1f7c2023b4e207fb821195eac2b159a6d9ccd64c8c229da53730216110215966b32cd3320b029ad19b4c8c0f74d6434d0a171536cb30a534b8e294d52ccb32abe9907dd294c64acd7cd44087cc7c5c0a83ae669f3459bf3b62614592bdedd80a83098a023a88610732c2285244b50446821e86e4e4f00513d5175e2c39a38723bc488c125a87fe6d5dd6dd01e5bb8aa0d824754640b115d562a0c3e2a7937591e3cb1833fcd974b4df3c50cb6540302fcd8fb54030ff605767fbae56aeed106a1532852628e645cb65b8edb4bd9eed9aa4f9284c0defcd7b81a258fbe96cf0fd2eaea6c17b42265094499aabf86382624932e8ab3d3d0b77ad224d94979e36983d0fafdc590360046acfe8d706d902d7b567a8ef447ebc1369b2167cfb2fd3118a2c37b9352d77b59182b2ec234d6d7a643eedc0dcc3913db32d83d8f8c1dcc39ee09d2aaa146450a4daf3453b7827fe98cf634745551f858dd8e20b58daaa4851302fe507692a253a941dbdc7c31daf02ca420fe6ade167896d30bc2fac25a43f57524ab969cee6da5c17f6c9b92d9701e156ab058202d395524a77f0506511a8a5a3cc92cd6ab2dfa29c524a1048cb4c63d50679e4f048f1e041b48325e6a5f9b1588f9d15ad7726693e8bd622ad5d5ed22f0dd3e1ab256c0933ad6ddcb66d0ed2326524a7c78e97521b7451b5c4744ea14e22161d63e1e153eced416eebcfe4f737ee627c4357eb988ef29978d80cf4f37980bcdf3ebf75369f550f57d7c3e5c9e85ed7d9d0d0b5407777e9eed21df42110d8238b0d0abdd4be57507b3e4be9873d5f25b56729270b282c51401f4b8c25b6afa7b1c43a3b47962cefa59e2bbf5d17cf679aa4a9a34cd264127fcc07691d6342c74a4cbc8fe7fdfc1293481377781d03b29a1d5f4ba87beccc981092ec50760d34f4b584d4eb6cee69955dda1dd23a3a7aec80a0b8b072f67c16ddd2864ab4439ff67c500bb5e7e7649714a8b557be96709270122c5178987aecb88c0eff5ac21e3b3abe169658931ae88ca93f3f9d8d7f3a59d68059a3f269ee486689f568324bf3bdce06f4db87039241ff09fda7b30941c90efa1ead90eed16492742cfe983d7654196ce9b1b3e7bb98660ca8637b866db4b4e8d8b6f2920b6c79ed097a8f8759702cb1d89e9fa2fdf3d645399d56db614ffec7d33a59b8adfcb96d35726d7f8d468953a91c69f09e5c495a1be4909b0da00a91e88e9141d29ee0e5b1b916e90cd9f2bab664618a46d7e59be4ee1879e22672cc18d5c3165f40106ccfdfe8b55e31d67557bf5a677babafeae6504a75b4d6d65ab196f75ed17d6bdf7636366a8cf5dcd5378cf166da7026e934497875afbdf86fbc166fa6cc6e39cb3a9bfb1bc6984553de1af1c7fc9bba466ece0af4d6d833a60d9c3dfef9de1a91264e24f21679f075c53c70f2d8ca63fedd9497a6d59c17d7c84d85b13d1fbb3653c6b98e35b86ebe24dbcd56a9e3a6cee485beb399dce5df66f292171ed6d9a6d7628d37c5fa6e7a2dae6ff586334b733e874306bdd0b4e77b61c882dc94569fd25e1cb58deb40301ba4159d3163880a9784219da4d61aab0ef7442fb2dcdbb7d65875ab561869a8c7e3d8f3c1d09e212a5c128661c89511c60dc3e3d85a4a32f859b5d65875ab564e185924b7c9aa9a5629a5b5da5a6dad34736b2dc6f8de2bb5acd831f65a99d427aae38a2b185289fcab7194d84dd334c7d86b65529fa88e6b86bdea0fc472100b34c594b99f740dffb665186737c39d4dd534ecafc2c4d871b51aa78d9129ad3a5aad933d904caf77361809cdb28c661bdb2a35de58df8d29e6ae76a991da6eab75fcab96b14b247bad499a2e937772ab354f54de107ab04c9020b14c90e4ec395d1469e44f27b266b3ac66afd5f7ce86862cd3346bb3b737157f4c104bd3a029403b3765359bddd4cb65eed34db5cef6aebdd7d55ead95b33ade7badb512634cffbab64a24d6384a6c9665f7769b94d7c5133b1b102bfe98da6b929c6830ccc46bc6b4b2f05c5e1733e641ac489355441ce6aa6fd73adb637dfa9aeda3d389ac719ace46638cb4cacde22d8258f6351bed03dc48e31dc248df1dc2bb6815eeb5cb8fb4dd54e32809c097011b4c3b00d4e5471fc26f2c2e3d748c3f42d0727fa31d2e3ab891aefb455fd6dda1faf3699ccf69a2f0793e4ea428329847ffa39e6d857badd3d23db8b1f6fc16fdd19aa642d01f93cfbf3b91c6458a0c669791a67bdbc18db453fd696af2d26b1dbd248a3263a64f97a13f476ffa8d7e4c2fa3ef3d3663e48e792d226ea4270b37d2920737d271bfd669f910b4bb688fc2ca2005218e3cfcf6b54d3b1b1030083a7b1e1e238194b5e7af6890a44383bf418f810f6230e78f0984d9a83dbff358cc63d77581eb8ad755a3c45d5264831c323d135e17c67d9a96fd45f22d46e8680e7d55546d599365a9563116c61ed8fe30245a61015d55f69e3e88afcd07627a5ae1cba75c421c217399192fcd99bc3f308b54f840d123e003ff009f013efa72999b9cc2076611cd078a1ec807fecc4be6036154b5e532129651f8c07cc2a7f2f18df0a52ccb65a66b7e0f13ce00f8c02c7afd814f2285f09dbca49a0fe3f28130a4960f24fde8035f94553e9c452c1f28fa17edc068909ef6f65b8a963514a5b2e3e7531e583ef4f3a908e6d31d620aa2183d451ad0ab622caf723b1b1696ca817465817255d3b4419aee1d3a96007aa8b2d24341f147686e1651dc201d9fa212fad00703e9b8630d3dc1282abebcb43dd5397c8d12cffbea7dbc3de3323487e6ccccd09c999c199a435f5e9a8f71ce22d1d3570c552e535128154a8552a15428154ab5ab84d59684499884d5964cb98c9d2e97b1a614c6398b44ff24126bbaec85812191fe45a29c6d78c2386791e89f44baaa2559fee7b71cbce93627ca4e55b8a5d7560d2735519665ed59592e4d1f0dda70cff7f0927c55fba33dafd3deda701aa7f16fdabe764202e8899e223dd528f10b63831ce2f3965a90e93867f741f0fe3c07b29459a7fca6ebf63407f096dffd563b9bee9bc9295d4a4adc29b9dba6dfea9b9efb8373fe709bcdf9419fc2fde7b72ca7c4f80344022863d6317a9a039104d21a826412ea9c72d3ce46fb8a3f7bd93566cfc671ff0e01836c6a9f6e8b24cbcf9e4a4dba1037c6fa729cb53eaf0d7288f4c903c6a214234dd66347b5cd9594524639a594a1ebeeb8e5eeee943aa594524a29a594babbbbbbbbbb3b757777a7d429a594524a29a5d4dddddddddddddddddddddddddddddddd9d52a794524a29a59452777777777777777777677177eaeeeeae3fd38c7177777777777777777f1eeeee943aa594524a29a594babbbb53777777dfaee6ee2c1e4addddddfdddddddddddddfd7bec50777777775fb9bbbb3b75f777777777777777eaeeeeee5427a3d4dddd7d26c9f455704aa9bbe325dcfddddddddddddddd9d52a74e9d7a17db29a59452ead4e93b759bfda0c18e15946badacf20ed9f7a377c8dd624bf78f933d1f24ed8f9319237f7400091e604f2879caabc50736823d3f7e1f58fc315f051924811fd876b96345c36d8b9f29a5943c73f2b853ca13677c21917ef4a317518c314629f317e39c73c619638c31c618e58380d8713249d37b792e2f4d0ef4d0613d3052ca64dd8d1ffc37ebae33f92765f28fe963da73a5b7ff68edebdc5ae83b2bd60ea5740807b5a7bf324d9b38d4348d6e1cc7893097a969dbf06f9d0df6fb8e5dfbbe1a4789fc1cbec6b3982878cb3d0b6f39be1c773bcff33a9b18b3ce7f9318df7beffd844c5a6c3bcd18f0938a69513613988a34b19b48e48b3f1f9efb524715e629b68ae1ce058a19a11ef33ed1bae772d78d31c61863a4c17a16ad499ad9ee1b0230cd21775ad7165f400e457f3bec85499a4564106f06cc1a7fbdde61b7a7a707a427909e4c1bc4288ca27ad6582a32f8828a2ffef5c49a70baf285b9ccac99588b2c7fbe38140fb6ad067130886f59e5c51cf04d31a577069f52ce214ff2e4a03ced4c7b7f9086d9b5403fede9f672db34ded41fc4977ee0a66316bd745fde8fbe0a4e833cedcdb72c72bddbbc1a6f4d479a6f94a71a25f5bb803c55771f7ccc22d156b5888b2c77a554c545756efacd1a486ae9dfec4f6495120dc26d6af3639145d74e3b5d6766c66770fd48a9f6304bad55a5826aae2a75471555d1aea39ab2eb6399c27f7566e3bf5788be486342fc317f8254523e5168b35ad6b0c817920a920416569024cc970f06f206e96b0034b380f8003981186460a1002aac90520017422a211b6c52de05b0fe07ca0daaefb1502b3864d39a8f5737ad35b3659533354a2e303387a41cb1c9eef38cc1dfcc5f5552624c2885d18d297cb6ebfc48f50c354f12e644d9ab884888a4f9201d2349f353b401e20a01f8d1bf703fbdcf3ea9eeece1ce7b52fd78240280347bf2602ebbbdb67efd688d393db9bb83209d9e9840a1dc5155fadf3fc10828533bbe0c379a499ebc07256ac79f2a2e07c79124ccf7d38c224727b3aae63b0efec0ca43f6d52037584d7b3e4ede64477f762dcced3a5827cb973f2202dd6b9f0d203c40d6682f6bb4efc4d5747fa23538dae7806bb8bf5ad6c8ce01b4a6fb72c0e153a3fdac99a00d9c96b184ec25a7d512b22faa8ee4585515e7b4a77fd59444960f56930c2ee3357ad6c84e0143f606443b8868db9d81f8836dabd7d0abb5a15dedf9d651212853f4f3476d1aa3bc7a089d93e5a81764fa604ecf063dc76bea47a9c8319c783ece1bb574d2e928476d3a49711e91e5db495beeee3e3f0308a8aa582cc6c4ce95d2ce91a5e8e24c4a1b29fda5fb883bb3882c475df7d4dda9cb22381b29bd88223e6c8607a4c9dddd5d4a9fd3a7c71f4ec34b9c2bd862c65cc48ef2548eab7cc5da51a9542a954a750313927a1e267acd4447cdc8fb82f5843137a9542a954aa5ba8930332f553833ed54cd156ba7e54aa552a9542aa552a9542a95ea269c39aa187aed99a8994aa552a9542a25612a954aa552a97a522ab962edb45c2f094ba552a9542a256130985ca524ece4273ff929954aa552a9542c0513927a1e267a65178e2d3f4dd7744dd7744d17c6398b9e64c538e13b4294ec33900b840f6398076feb86393f3ef5f2a0c34600bdc7c736f32e0f62fd208c7c50ee8f66f4f203471a84bd496ea479d0c98d34cb17bd34d2a23dd23bf656b9915e8942eb8862a455f68639ad63fed328bc8b96f91174017ea443fb8756c20059237f00370cef8b963505f0d80d5d8614e24cbbe7ccd33c10203f9f9ae6f6e96c807c337906c80c4d3753f77c92e9143f9bc7471acac3d9e0a829d2ccfc7c9723d200f9f90e474c81e6670a3fdf53d031d2b8195b3e1034b6fc198723c6cccc98414d91467aec45c71a00681fda458f46eff232bf799d8dcc379347325aeee7462aafe376d13af4473446d3140a9a5ed8288f3468075d5195c7288a9a5454442e9060605a5bb2b0b04e2089a049bfa590489fce85b849df091bcba17898b9914e2100281360a4b38f599a2b39292fcd1130c7d1d8ce962684524c18e94fcbf5da1f9c599a61092aa09712be47a42247da83d1a096974838301385194aa176eeab755dfb635241794c870e4c4dad18093a423e4820853f1279dc4877393bff00f4e787fee47869ba5e3ef46704fd39f9547978595bfe7d451a979f7f436aa23833a62402e9e76f2eba85b85d48e19eefb209407b48b208eff2a52769117e5be96c4adf4c16a1a4e51e69b95db48a08a39216c08f7404bdfe88a03fa056a419bde86382b9b88ca236d2dc7eadf3a24779a4b7fdf198e750d3c94b9e87473a030598afa814cd192a5acad0900000004110002317000018100886844259146639146aea0114000f65944e665a3a1007e3c114456128c318428c31c4000280218428848c11d90040a1a5093509ad82315c064f1295824b70e31f8e440e362744b8f4ebd4c864566e900ee18156cb8f06f1583b67cd125b6d67bc9fa58f68eed925db16bf9739ae90bf3d954327c088ab79123e0e02677784b00c15e0426dcfc2f5036b4e6bb79224413f9f818c2457e9e7f32d48d24f269211347c1a173bf3a00ca5271ca610d8d2acae2143a5fc3bc5ca40281e7f04cc1a0bfce7969373a26cd64a99e2d40714ebdb127e2ccd8b9f5901cd7e799cf8b1007a61365e53aaffef713c1c08f977d3f8b8c399578cc2250be75fa5a1099786fbd96e9d57428c170ee9786105fd95e322a7e57a40149f1f9c0876370f15ab0cd6a835bd96d8cddb3d77186d280c07e1e324b84e72372d39c03741811a9bd2401d41029d48e13407d3e927c55e4166d46c9f988d8c02703ca704ea02c35b01d4edf354d7deb9f10d9680e8d729e48a82dbf2092d484d076db87968620f2a25fb512f1b078b2e6f0d1439c53053a2d168829222f80b34262648de0531f49793d297ff9f8dc6dc5505f6052b03376684a11545f58b980f16029a2fdcabac29da2d5078b1e2c6898352c5180a3330314df3205c53f619906db9a21747728f69cfb354fc37f3eebfd9494fb723473c2e7c7ef0a37ec010ba67c0444e3e934bea254960d1c262ac06fd4ad02780a0191594362d91cc5bcf3ac1ca315b7b585a86ee450d7166614f623987dc75e1bcb531860aa520b0154f480e2cbbcb5499d268058168f2173643bfce00856f2a3b3e67c6c2b893c59e1d2f548157e8a0e3eb7aabb4b0b98f6efa012bbf6efd50a1209a3f3c00c4e53795ba03fd2ccc9ae2c07c990e1ceacc79aa982ff70b360eb696f546a81d16bbe242b0a0235a3b58399b952705ad4906e29779b594af530efa2ae483e0834ed3a9eb49041ddd988c028bd37a10c4731ac3720e89aa7058428be1f6c9f243041b8b03d26e2124f8b2df102cd23c028491660b81eb788e2b78ebb6107ce6e4f48ab5f395598405485bab004c13e4c652ba021a3d2a4e5ca14ea806a40101839b5180de3404091850cf612ade376bd3c251e5024851d03ca4295a8498c771afa6f7d2bcf270aadd0b9bc8fdfaa43721588b9de6c1d9565047844396eceb13f5402f40786cd223eece080698d50476c89240d0e85aedcb87afbe288ffbaf989e2e52d8d6a5d9575982910c558c6478013ce605d0e7780135cd4f8e502b0f43695e17ebe761126166a97adb5e84fa160b2c4de2a240e295f674ea5b4446d77a3aa61e65ddee429a04c199c66df6f240f63cbcf6bc380c246c030c4349158f8720b7efa593db2ae8ae104196926b5c72eae4593b9108c291a8a82d8be62ea5ee0d9285898344162cf1dec8330b7af869df1a9f5298df39dd438c444cd03d4ed6e50111bf20019ac8269e077c8ba0272441f7d713f8c96e6e219e169f5d9b38c153bcc00e7040bf1fc4f0408525254030e42fff586b4c299f7386e66a2d2d76a73f3e1a38d0b7b0da806e8bc916706cb3cb8b5e0ba12276fd5606ddebe060fd27563a388c5528c250ee8e3b8a309db3efeb1c50ca710e7954d496a6036cfd1293c04241b2eb9bfce27c9c940c19b3dc59d4b78832602a6500717c88d2586e601083e7392b3c74dfc24b506073bb7677c02dd0069c5e77d1f6cf7bde0f04fa1df4f1f5ca4e81d25dfea72c6d90ac5498a335c03184dcee13e9f57c3669bb94bb36d806ad20ed301c969ebee5dd7076f14c97902b305356be2865340f33699e3f30509fe72d51571803175ad52259cce6f89e9cb0f322ff342c86d24a542da116662c680a0179972fc01de606ccbef1231083a6594cfe22c38e5abc393c24cc52cc24c767b85dd5b0878cf7c5fd9ea602e8920d1af391995923e3bed9c53720c1f88a89077a71bb4edbd90d2c7ba090b50d4b313ff0fbc0f424f4d069b997d984651cda3c643058774dd8b69d6bbc253dbe0272a961c2386b855e6ec077d0dabc541e70d78c24028562b983c4344dbeec4170b68fa8911d571da2226d684d97cb0f4d6187851fc20b4867cadd1e4335d62071a4563007bc4005c0ba8ca4978bbfcdacf3ca2f002dbb4f991f5258c0d6d51e9e8bb92bf81cace5d311246292e91a2c30e81a8c57705d0063e6d0b13f530994f4876019cbd9ecabde8ae8339197c1d084f929955b2d57a3fb5ed8dc0a121457c4d6873d811d3cbdd42c03564ff6bbf6064a4762efcfa0a908cb344dfd85d7d5501dc49a00efbd6f095f16eeff0172d5ab59359ca5d04fe0e89a2e85f0226711c3607e236da5eeea4b6d806b7e344181aeabc3e3abcf4130fa6d1190e487128347535206a1e79fdf8e4d8445743133a159289c8fceab37129ac37983ffa227ed14240ccb6e97e06c1028be0e8be2edd1096ecb1ca8d86466032cba8cee07d85a340474d3aed3f599021ddc12812193f0868fcc19e2a134facf37ce86f086b769bc123458d25e2ab9edde2622449525caf077ccbcd3cf9a83dc8bb4fa7fee466f680793c0885d1ada9af0e60940a1dd7578cd4edf2106fe9088520422130cfc62c5810a93dacfc5a6bb325c4d0280a2838bc171bfad4a0db324d314f767307ba83899b09a12a2f19838f6413e2f1d6b319cf13800a31766280b499080e9646090f238f45cac594a77b52729c8e2f0159cfa8b6371f43e842c2f16a70fc0607045581c5a76e0978d30c1e2208a0d4edbaf380bfbfc4f118e025bd4bc579caccefa48c32ba9a3d56cf4f094dfeaadb3cd02a38b03d28a231451a2961507943e5fd14c386ddcabd8841d69669dbdd125fa2759712a7e7f4bcadf1ad3c84d805cc3551c9b240b2366ea324a0c717efbbe977a037c6ab07840bfaab3065559c51148ed6722deb850c5410fdabf7008b2bd7b572570fb1b88fc518a0e9b7223aa381d21234cbca306ebc2ada408e126acce64ac2bde6400f02e4b1cbfe58525d64552e67d0a8bffe9ddd16d91c421657614a04d8f336f7310306ab9d60c0e32fd452be7f11d29eaeba71ac35599711c458aa18b0b308ec11e1f24a06b3ad247c37590ca452a34e0e61350fb93bfac67d76b3977b2607409ae062a68d9afed63cdb2ab8be53f4f23b5d09655616ede8938859e401255e9e0834a0d2b6941674d275abe075c6e38491f246979a9f73f6053cb921e20b136bcf4cd3349ddc0278ca75e70b81310074d3a0cbc6555de1b5b9314f10743703058770f9a969bdcdd636ac847314e39d4d8da45f78a1a8528ebd949944381c04343fcf029445e0f3fcdc0ff44d7311dc0764e987b48e4500e33b3eac0b39af41ff126c30a23e8b197463b70cd22e0f242051afc78076d200c5ab6d480c95b96d403da79d4dd0404f2d1c055d14335afc324b732a839665ea53e4490e735b2c8a780a17ee001cfc37827176c32882d913fe9055554239e9499468b283f11e2142d59232adc1e5a12bc01348c622cba1dcc5862d7dbc1460dd2e66bd36dbd3403e1a038d01ca435a02429db2c0f5e0405d4690894a482533bca9b5cddc813ec847e42b7f06d4f81a3d7ef62e14db642a88fb90e73a2f42d86b5f973ac0647af21518f869dd210a9c2a4a90ea8264052acb874e7b860bd235c1abd49e088b968ef26611ce780ad83a619da7844e4d38c1414e0418fc3c9fe21af1978c61ed4ed6bdb2455d590959e350a14a6c8a66e1a2cf5793af976002df083d12d6a3a90a96d0a5078e428c74d576cb8dc30df4da61a637faea9ac1cdeff505b1f894778ece0034c494032a80f803718499809523619adcf3bd19f7a12f4cf93300014bda301221911ee8c42b43b8036f4adf2e45b27afa14e864b14ba25c903707d24610c938eb8830681f640c45dc1ac77aca9538aec50e22018c53c7d80f27fbca10858f052a418552d296251e8811a400bc022095007e9553aaffb15e01e54cbfd5e45229016ee7014a3fac6ad6775196d0959f44014e39c8237b9038df923403f181dc35c486ff6c65a0175d9c9695fc943cc5c9b314651826a474c85218ea0bcb2daf6566639a8ed5f2c820c8e2e5a2a2ca4c8c866f35c4c85b8eb8748901731c3843c95de27858e08bd9ff48332f711da5d5a6f0372e604aa6b51855f54cb14441b72dee2420b470cd94634671836c0118876fb02f232f31b3e4b6e8e1d3f80193ebc741435288e85d06b0502d80434a77956a7e041c8f3fbd2ffa71e8d3f7dbab0e1b33165ac69251eaaa7983236b7d9996c7b28700bffb13368aa417aea444d61aecf4f7f8a81904a7013bc06a44c50ecbe6d8db221c5c7cd68070869d74b85ebe4613d0747d405d30c82ab3a5caed09f4c351523a42906759fd870f4dc4af481867892e95145d4f3b5b326f1ed2db0b23cc2ec34141a0adc43629a121d246e1e7fa41a9cf6cee97740008a36e73bb7f4c754f9e0033a3e0b384ecd4b93c2a88a6cbf8858aec27b4c04a6bf04385113c3dfcb4e9d536c38ea9e3ce2a9f8662d632f5e8fd61e3a9445a9c703b5bd23c285f0981107717c7ce1e35eb466c76e4b975d5f471c5b076cc9f99e0eb1cf09da173b9713efd087cab7f3ce6457bb834635eacd718704e2ce80fc3b0ae273f9f3763e5a354724bdba568dacb33699759f62c9fa8a6bf76e6e1c18c29c50c078690c55e037652926a17f04199b8dfb6a0c285b59fcfd6636462c97e1cb6c354466c96b68c7ea30a7876fac3fbc0c88225f2d0a074d00209817953717b1faf5b0eedf7c483cceb0272c828240be8e9590554414fdebe6f3c33d56ae4c33e99f9181bbac8500043ac65844b979fdd73de83fd04bc53f0c3d51924db6e040f91cbcb1e7467e2c03fd07afc15114100dd9e5cb9df1c9bbc658afc4054e2d875f7c9a109513bfaf0b70d6f7c1be67c5b4e65f3874b02e3941ce6c568710b662e24b0a129a8182ba462c0727d0a952f8f11976b039b8041c86214e4b224ac98d8fbee2e7d3c8afd75c2348dc092cf4d9a6433bc70f6421631e0130246481e85253104f105b0fff4a823bcede069f052e349480519e24af6bc2cf2391870bc152561118ad4e56d7da6bd49baa881c83734279885a92ba792d02723f86e1e2b4f825bf1df101c46cf479ea6ada83590d95c2593c0d83218aa2679141420b6814c2433ff5c471ce582963aab36b470a7ff94a693f693170a7649f3d6b8f8b051c48cb50efd768b3ac01f8643e7bc00a62cb98a1b318d00a40b239c5fb8568ea215d5a92de32cd06a2747cd230e4ab9220006d5b6383d9d95a9ffc15150319b84b051be7f220afc88b3045588541b4377f1c85d92b74d2a8cd866ec8ab926b7d9a582722151b206c8821a37c1aa2fa6787596063733a09a79fbd709d3f67bbbf23d5d5c85c12d4aa2e7bb0af180d4a3d8712d104016d78df8125469fcd0dfacfc43be2ec19706904055713e7f0a75afba441186d71d72502a705941bb2df0a3ea597560b10dd4a703378b12b97256eeaba56daa145fabffc77b3bf08f215181b457ad93520702edb19e7617b6ddc146516cb8e1e9950dbaf63b7d710b11da4de5ef65ca7a153fc789165e65ed4fbe2cac4b2b99c172e4abe82b14d81056f425940fc46f11fb01b88c2734e937541ef38d4437aede22bdc64deb1dea9b64c7849c47acfb70c0cf2f09800383beee1930908179b91a68c1948c704d2742366863b0b1de808bdbbd83232b96f3d95f4b9b9285eb00acba0128e36d44a58fb6b4c15a5234383a424d22ee7ef26b2ab3b5b2d4e05068aa349bed777b912af7f8470be4c56ac23a1382e55a9d9ff1e872e5e3e74afb66dc44ab1ee1de89654ba60bd7d417ac0e6bd6ecbfdc38ba19706ab000708090c26dde645a2117b88f7a2f5cafdf29d9ddfa178781bbabc53211c07eab18c1f4f98f69445715a82c9f4428a7c3e2480b12ce32d510833b52b1062a6a69bc3ac65d8b68640998fc4e7f34b739f73b9e832e73ee5981bc94caddb40d47c3c276a0abda5e2cae1508f43d30cd6bc75cb08c6e3e58b44f73bf6380fcec4ee8c7d26a9fcf9cb5081f50d3f3e8d995ae41c46600b64e9491345a90968d5d1c868b1f48e4b53e0d4630874b145a91492c0b8e04aa04ca6c17f21a6bc76aa594ec32e7763d8e928060b38534bf45dc7ed885b5c842de208d431a4d02502642e42a328838fa1fa76a65634a5d96849a2ed493ded0ed48574d6ee29e37330bafe2996cad9f08522eeec4c6d5416287fb9fd04c34e80e20b336e9f1168414650033f200d09c114b801d1605b8d401fc2d9eb098c0fd4ed4ced026f4b1901ed0f701875ba2158d580869d8d6285331e1791e82c41a12d1d09bbc4131f7b3b5313ba167fa001e9366526cc0692b59b09d964d2d3f896c2db5ad923b50750a4f2710246a87ff296d11640090c3bf39dbf21a16102c3493c030e32da43d8b64a4ca8db2abf72f65b05e95bd22a60c216f22b981033f4f258bc5bddd1d723d2f3cb5244c28a8b599830c273004de9e9aeb5706665ffc35f74dd0a6ceeee0b90e3696c3a9b64da6cc5558225f620a1658ea1cbd4aa9bb81adfb96bed369ed74c7b70df05e38a3096a9a964f4de8e7251f4c5ab4da6a0b2bee0dc68b6baa9ec0fc306b179cce4b1f7847a13b675c9af1702b2702d642c8318bc588021b6f5f5111170e88d144b7f524926ba7cc6d48023cb2777995a57e84b3602da4d6cfdfff8acdea11fd0e3d45903133c5af00a513b003eafdd38049a0d59721a29692a64fde4b3b1be73a99daf0d250eeefd4614e407afb776cc9b4dd3d9996bd9b42bb6b17988ee26ca396b763c8ba3046a25e2477bf3f8628db009f54c6b159f6fb2d307889fc64e6ffc4809887b8075df86fc08c9933287bd96d17c7d62c9f2eb4241c4ae322bb4a6e7ff0e2e88e027553e344eec1e0f1a8b08c5d31d25c02a7458073bcee7f7d9ed37a0c07f437a355f5cb10513ed67c0c9e4b45d2ce3a36d14787c2e593833b3dec21cf2374b6f94a7ebca1adb54be8e8e9629e4777612132d4bd4d3516305ffb538645669a86b780368f37d2d0bd4360e987acbb3ce6751f9cd92fe8e30014170ed4232b5de12bb40590a7b6b162992a90cac7204ddea95c0fb0c2e8134101cb0b49e213a46c224a0df51a57573253a4dcc16169496f4bc32234ff0f6d88c1eacc12d21f120f232f109d75f1fc6d4b4c1e1dfa958e54d9bd4bdf8d6bcec2463f87f1da7717ca036c6d4b2d8d93de390c4f260ccf9970ef4493bbaf5456310f7c509ad8c3412ff9486fa3620150971b04f8a700bb02769008528c53966518309b6d849bf01685a2a933e0a138298e1f246492ff8459b5c73081e2f18ff4fc88d5831d257b27fe0a994a3fb25e0108238a159f0604a4cdc814eecf84a75c9b1a8d4f3c960ca3160b8488088002bd35c5dc71cb56fcd4bca1566ae8460c203b842f3611f21643a63fd043e06727422579128b604e437400715490928eb85dcaec009ab3c3652c951f5c35c59b3842be476d44f69d78c34af1afdb10f9207f4b50149712213b1cc812c2541dc84897491ad5a11fd49e26502b903c7870b4d1105e48714f2ea90825b378deadd604743204c1f8933484438a80af1728d11892962f64a366d4f6369c965cfe5233b6f18710911bbea89817b3a2ccdf5a717fd2e8b7ff572180fb27e340a7f8a3ece9965872be3ff878a700cad165a43c9667404539787938c1239a78df30eecf2621d3872c42f0dffcc8a70f8b5740f804cfcb0197a890c7f4aeed20d60f181ecf754f2a819450b6db1485683ca94f10598a79e649534c300a1b9ba9b22c9def1e30b8c156546c35ce8bd77bb492c32e6ef58d184fd157a4ae6c1a692a072213208007d64974037cd1e1be6cd84edba42ab6916970d08664e1441ab008db06ebf0754c92b26679b70b315275d8fb73dcaea0bb8655e24067545ab25649b8b40e491839e402ce08f431006bfc05e57e8624ec50411afb3b15f8dce8fec059167dbca449025e1424f20c18ce6e63b9a046564736378b524e2e2052a63d5520c5181cc75a626f7df2ab107efc61d13b6b6c3261f0393a7039b931b04e0369f4fab5de454d3697a210de9ad95265d91d85ea1d7b427af6c5c0380d1d33006fbb0a4421f8235a8848ceb8995ca0a0389d177d1db65992bfebe7613fff4a5d1bfe0f2061599a958a1150d5c5b2b0b19bd59d65d1c72cc6c7ef9a51a7b865d6604261d0ee2c4cdcba1c53a3e6c054c52a141d0c3552659fc7484c3b83d16e91fe1269b1f385c9fe175e5811847ceceaa9a8580263cf3ea4b63f72e7b4f0a1955681e57a834a20f308d514f1f5b3b508ca85efd8744f62d7d190177aa191fe7d7c248441da32b1632f0071835156d27f499fba9818654e8d329a6c7482888cb13e6bcde30aec015dae42fcf136203a5a818be86b3e93c1bf5040b7c9f702a18f9fac2e806a776eac7b7b04236bad2247985f958f79d64806a2d7559013276add0df3cede27a057ebac239b472e2574960ed121d5acd7911a6be2d219ef6c0b305e1d7d7abd48a080c9db93adbd3a1db2926414237e8f88cc574661f1602db0cdd5e85e18afd5d9c2fbbec86a323c59c97bbf31d1d314fc57cba4a01202fff4c47a040a48dcdf8bf19d43da01cfa19d035b69b7d2af8d710034639070270b0ead2c0aabd7b7615d17c52368ab7653f95545c72c6916bedc9138c7e79a3dd55a133ace2113985c5e06fa7320ffced5478e2d50c7b1f56a16d5d12acb0b8c6dd93a986413de286ff4f01a867d15f8d86c539aa66c4089cd38d198800205e03c5197f3a539aed4296cc974cc344eb0b257ccb64e668d0126bf85873ffc364ec17411d04a72281a704ad0e4a4d438d3a407daff3625cf8b6dd75880f010339a2cffc40c8ad60f4241c9c928275f400ad5ef721e5fe1eee88975d5d589b5d01fb65b1af654e0c6d622ff2376612c0e875e39622b61967725d9502b780d1a70ee80e191e287ef969699e466ee748bf8706cb2d69936eb26e8d9ff7c8c9b0394d0c5d14fd9b71d1cb5dad322ae0f39c481d4dd59f2770829ece012aadfa0f6c04b598295a0c0241d11b650de505d3ce96c4ae9986c392c88968d8d92a1ec8404b0f044678c7ca20e22f05930362c8bc1e65b93b72531c142651b3c1b6cc579c1583b86cf32c286e46f2b7f84d70e8354d50b94b606ebfc7924803633de6e498c6507ad1bcf54ffd9d803a40477bbcd09ada5ef2413cbc72c879b1a6cd6bc62b39cef38b4fb6c03724bc2abc6af7ef83d5ef5f8562b64707fda7242854f422ed9fef625768d5eff052be09a9d07d7a1a7a3bab04217c7d8ac5e85176d5943e8996eaa5120bf064a179fb7df10afbd9481d2de13bb196d94479204169e16355325f93671b7e054edf215ab45792530393def2d0883d07fcdd0f485c7de837226ac59fc5f027658f2859b981816bda8653840f927044db49f234f6e2950a379d629240485b934211e34c439d8cd593263487c13f127510901a50e34bd0c0128c2ab2a8acde3cad04352194c9a60197837ba22e52bb76c451376f1045fabe677818cf4677406bda8e9dfc47e4c6b8b91d276d8f6a72ad578e8320d1750522dc7621abb78b63f24688fbeb938342b7db6566d7bf9968dd9938c1cea819338abafe174d983e7074a9aaa27d8a8edd928bd9fb1128c96825f5a44f12de5022f4deec8fcb50d3c5866924d31df9b65cfdc692d669a95fc95ec67817c4782d09c3ec7144b87bb7415dfd884e00606a0a615be57ee9fdc58a4504f6e77b7c78623f305574f4fe21ff7a8a7beb2fda93ba5a613a81c411d17b0557542fb91b4a453c3e1bc3c0ab1eaad744bb6b26a7a9451d5db5ea5ba45c0e8fa91a0220893afc36ab88ee31516b97e2661717ea39a04074651903a782bbeb6679181208cb4b1ab841eaf3e80e05bcaee2463cf472602cd61c8572e4aa13884b9d038a127d42eaaf18520af32955777c20690bfbd408fa1ceeb830321a10a9e6de01a8c79781312bdb1139a7e72caf6bb9ce9609ab019cd2eedd87f760a52aee8e9612938e2bd1a0940b9af7da87b33645acff00644769bdd2c68ca6f355f534b3e9e10ffaf99170074c1ffcf4889aff280e84108feea1374d1fd6ad48e9e9e66d1fadd926857970df48b5e459d3c5471e4138f6aa408bb9675ad4e6124724fc16d5be2bd214a1127b17e381e0692217deb77c7cfd017d7e2c1ead530106c211fcb3b2c3b1a655348613a8fd1358d9d241778e3d75085243b8727f4b03cd9405da065bddbb553e436e0ef3df735044206471a3e8a1b03fca892e2102602eeff38e1c1bc8bb93064dc83e5110a0d86c84881909fc434c8357b96ae3bb089e6c0e6baa07351279707f97a6af30d58d916753723084387c20c9d1d19b0bea45fa02e790ddcacc87d312cada6cf5de6ad8e002d0efd4dc98714d6f0a8ec7051d9c05cdd29f31b9fce9854d23ba9931573c6f65777ef9706c8d4ac4682b5da547892ac2f125c6239b88fa28e92e0d1e40b6695fa7a992492bd9a5cd84304841aa57675787cffdbc17a9d8244869352b00035077957fecd2d1c39367284cf75aab9dfe116b6aab4f458edba40ff9a470f8ef803748dbe2928d7ef338300fb3bb2b3d572c55e6d6fc0faa0fda9e078029536ca6ce49d019a8d84018de8bdf9f0dc3b385151679f662f48925298ee7937e6522a8853a518846b94a30fb3ce9e40a9fd1d8b86466839e30b4440b831c99a23c0b5e4346db7f38b66e16981ab695788e149e485d7113cb77b302b261dd4895ecaeeaeaf875e08135fb976a2e6fcf7cb7eff5fe9a1084568333004aba0f943505a0d315e4762364ec0a779a9029902ae600a87c7fb801d43dd2d577cf5db45917a261e37874c6614efe88589775af7a37272460c514ffe90899a4300ee578856ca8658eb872faa7e513ed4de9971860d7cd28d20113c92dae51ef4bfa210e4c0c4a475e982b7b08ccffe962b635894568f06fa05ad5eeed70615b82c40ae9864e4af11545ed5e1c7f129c71906c60c00070503246c8ac42c8465f4a46921690cfb4728c5515e6101660a134de87d6070889c44eb6eb2f91d9293518947436e4ecb9ea923c932b06be50d0dddab3d5bb256aa9104026ceb15c654e1c328823a8cb5413f1fdefe82225f4269fee269bb35c3b414bf8196a7d871777eb59344b6ecaf6206fb36ad9de16c140a01bbde944f511d9722f60312cb5825ea0d478af3945266aa821f64a8a37192319bd0e93ad87f67cf4b96e34a939e3d94714e036935b32faac7010c9a37a811b779bcba74309b50cb257d9bfdb64ed5f76a849eabcfd80b4190c560c449c5ae18f8789e5281e56b85f2c454c056a5b30bcbe465abbe52f6f94f6b560d977d4ee7d90e109bb5a3ba549790fe2ed54c452ed139a6551dff09dad9b159fc8ffa053b8e4d259fc22e2ae8d75b04cf17ef0bbcc029f5cbeebdf70845835639252c4ffa977c1c3ee33383ffe482fefc469ececd027835fb00b1a0a497d0cfaf80193320fe74b034ffd7b449506d4b53b92be8740215510d96e5529fc1b48ef87d0d93816bd2d78395f4a854461fa85728324f5c23420948e0b7c563791037b7598aac9c81b60d26a7f540c08e57462511c584a34cd99a138539840ad9708f018c16eaa4caa07af514ed88113da02b5c6ac8e31a5604e348e2cf923101bc174f8fd3b016fab4e3f476541075666082128d0f5b628f17ac066b7f0036c1124fed880080397a5ee8ff9293aa7d2ec5f3be5bc5655ec5ae199833c6e539bc75457dca7da9d2165ae9943a695496795673c401183a07ad5a49139aab89b93258fe16c497a3acd746a59ec146512d86fc0dd39fb1c228fe69ccf6abc250c516eff069e37181c1b49f923fd24e96c9b23c1dca8d2b4eca72cb9d03e6a42cadf3fb1072456f14da0efcbd09250b009523d02b15f5d13bac07c4e0959dbad0ca827779a709e01b5ba5b4a9ecd22ade830ab6a91c6cdfc3b057359d6a87e1ab076b9734075b8ea293d958ecc15551621760f536a60e5abdb10b82e82238edfb198c15743774ef530b9369ba3f6dc5b7394ef07d23cc03207af4087cbd6bab7e8ad6953d777a146f158a2f96149ef35e4560ce0a7359c02b24205ba673ab87fefb2eaae22e82231b3fd9682e22e2662e69e49dce36c1c9af1d462ff17fe9386085507984831e61895739ef3ec2dfc8c1c682f846bf936b2e5757040afea093a73a64f35082d4b3be89c014102f47976bfe3ead59e385d28e164bd00be4c4c028f14e24ac2bb9f0362d505010d50b06673207f4bab1fce5e92a5d6467bf1d607f6c3982a2f051e1a5bec263bc284a5abace94a8456cd4284b404d31c04b46d798f5a165079c7e0fc7f0dec71484653187966e2e083552129a9bc5918b9641aab9c54ab08d5c8f681aae6b5f103d4468cc248015e74ce187dc684e7d84392be217cee160eb6d9f09080cb5a866b6959eb366f5f685ab52998a1db725a8c9e82aaa4847c254acafa7a404ac17c617ed3be98717dcc8fb89bc4981a2e3c6943450118bc715ffacfbdd6b0743710f42c705b6331687c54ea3ec822828fa7a356a6e663fa25513594772d94d2ab9fa5661fcb17ad9314431842a0cd1151319bcd251a4c9f5f04c4478cfbf606dde748eb8c800dd151cb64592606287ee5209c06c6ef21b80163824e293028192bdb27fc87bcf87c4165a2326f32758b23fa28422429aa5acd7efd0adf17a6e7a704b20ee5f88b20a79f055ce2a8072d7d0f45a018f586ddf3316c5abd674c41923088949b899e944e1a9664f3d3d1024db7131f14dabae3766c586e0e4e3160b54586f4ec37301fc35bd9fba9d6cf5623908a4fd17cc78fe7a2a9acf00f476fe9b90696ac1ca6713f879b77e7932113a2bee0fc17c4025c12befee358ec7e6523f35bb9f761af7667df28fbdc48b26b8c8abf081f933303ccfd308146ec70113fd67ef8b011149b8ea445ef75283852f31df1c9246b5f58c04562d7b37c137dabcca7d81cf09d53f3efcc843c7adc55ed988b50b4e5e66955e5f9032be4f7d7bf33d088f664e894cdefdfc93f375e17694b82e527076044a96878eaff0ec1bd4c0c6ef997ffc14c13cd1fc9d85ee9abbfd9ff116f320a5c3b8987a1466248bef205fa6e32a20ccb3c4e5b07a0dff03d71e5da2611287d1f8047d5424cc8ddcca70a1e6d027ffc9349ac5e6d96d7dc9f9aff5751778debbd939524f5f1415a2a6cb094489dd4e715a87b3b9e84818e9a0e80053884f1e9ea53fb8bfcfab1d37e2116444b414eb38e29e9c20e4ee30359cc73b7fe98467f486ce769ea5375611656ca936e26184fa23913e6845f31c6ba2fd069d699922ee8e2344734a80fd183e64aecd27e981faeb86387e4e7c5a469a03aafc63f2c41f0faeaf0a518f8cbccbeac98876dbc47f6b0fe910a272a7fbc8dfa601e84bc36d1d8ba02b8fec1d8e10117afa0b27123027a7ce84e20d20ab44feac72839f0cb403b20655240ac6e2808535a8c0b1c162cf4c3ed4b2905da6edd22227531755037f94cb6ff10c61097a5defb702500deaea24395e516c810f67828e52d3646363dd42934727ef83af950dede182d34fd775f86a20cbef7e31a91936d682f8e51a4c4f941c246e2a39c5289b64945dd10e9fdd74d83570383f3fec14a0217905142d62bc7f46a967bed7149ea7e74f472adb25b07ece778a7c4b88ad8a60c15167b5444d192d7c2e08354658d2daf7d8265bab67eec1ff8a737843da9cf0525ea3a311f842af7f9e00084a2807530ac39223c6a2eb99cee50dcfa7769b8b6283908c312799f5948891263d1e12a84cd5786e587c6fe5d383abd983b2dacefa46074c709b895b4b82f529e7818899478f80db7ea7d089a0ec00b68a835fe14dd09684a87df22918dbc9a3180cac1aa99fb01f404f812e06c013ee0bb4797db2208d53727572949efcad1bc8e942a9297bbd5c624397b6ae497f8e4dc83b0eb4b3d2bc3d47cad52851998f4a7510f7dbc8fc496d0f3cde18944b1c662bd499ef1e58c550352d5248891bd3d19e984278a6fea22212fa731f89a8cf2d432a611903275ba0d0497f46ecdc87c21618edf0267ed1c3d97c8b8400b9f2c7df9bed1372666bd9a644769ac0a20f40f15e8253e2dd7a1f6b1124b8d4f39d4cd7228ef2d6436ca6acf62b2588b6fe8a6e9a28e3f562a956e4e27475eb371f0f22049d343ec84cd0a3d186b5ad7cc3ba649257b8fb3c6788a2ea8a7942b032a2660c849d47aa0ff060ba593caa144308cc00839a6d60d3f2091914ddcd3101f2686f803da450c40f3f057bb36f75344caecea4633c568480d0bfbd2f3461c1b44f8b8094b8013c08ab3e89d18ba6fcbed0517c88683cf54eb76352afaf9164884c4176f255bd972eefe3544f664a8444e4edf5df5311e912838e16ca76f301f38eb29d4279658dae880e76c04dc8c6d5b1a4f58e40510f183bdf956608608916dfe2170180da6f23406bf625e06da524b6b6f75527ffef714471bbef9f6af0b85679cb37db2d1d955809bb0a54c609cd8fc86b50b709093ee30521a248d93d9dfca6b7214cac5f8aca4640356856f61f5e9e777422dec4210f341693c6aedaf38c085ef11f5395f4203ee3ee9ec3a91ea1e8c85e0f36b47e9a7d577ab1e41b6784c66c99023275a38f44d52c4475bab09dae85c0b5ed082299bb78f3d1d1c152b309795692a390267e8a73c165cb6b61b9ca24cdcacd0abeb39935b7e2a401b1385438cc145f94ede862fc8d1f5cfcf927d20260f945e705eae9b64f94fb588d338d018f719b76f19b43dfb891445e3b6b694a0ccaac6d5dc1344a5c5520e56c2d15dab80542e5fce2e531850207f5b3f4776710e688529660bd8b6d30b4c63434ed5b6bf5f39cc8d96c4189c76191cc93f98cc467922f3802ec6ca7fce2626005beeec373e7b45220d70f5007d90ce183a874feba6613cbfbcf262e4d5860a5cf1240502f772d738247074d73a7ccd029eb1674b5a02e7b43f0640b17e60d7a07365a12c870c30b536ab1f9c86fce02beb6fc9f99ec527e2c5a58554e5dcd68a88a03292ff982dcd76009925e3f9c765dab73803e53358a8a09373c486f5a30468047936440156b0a7de932db23d4e8c2ecfa998edcaaee33afd62fb6babda882bfabfb293f734caefc6c79ae6cb4f676b09367be311e37c8536d7985deffc17a51981adbef787b6e9d36026ab13aa9dc00f0f7704a3521114179411ae0be1ba7489d74e308b710a43266e553a6bcbd971a5304bc0a48c156006e223401cac08ffda053ca76438585f4d239914eee3e1134bac8a57a7060a71db0d03b34cd59767c5f697da1317df63391ffc355c2c511d998225d6ef47cd89e537762e284d7e7b82b1415815f3fd1dcb9f4e1cb4d7c8e658c1b589279a126e5be607a8ae3a3e5155d9e113bf0a93147707ea251281fb916ffdb5aed466a71a60a2117d93fd95268d159a4f94ee7a4b37204eabf38d21878e75de24c0b7ea86289cfc6538796382284479f8441ccd75db851cabaf0422c2df0d13f271ac30b5e6716d493424cde804c236ba219b76dff3e57f4ca614fd590f8ada51bd6a49f7797eb95fddd6427c376506844eda7dafa0f667138557ab6ea70561efc05cc0fff4b409490991cd4fa3eeecd0a1197359d991e692ed4b6c8e6812e152444ecdb4e25fdb499f626469581849897573d67237a328d8f7dbc598bdc54a14a818a3e6062de78613565567d695d2bede8b332ba3030150c093d4061bcaa533e20a105ba0960dc5a2471b9d5782f2cd79ad914bcd051eac33c56f4ec89b75e2758a47ed62ef6f72de38c6a93e8e1aa54b18db08942dc1b34497eaf8f846eed07e7e6c6a001bd788eedf602edeb84c0d864610e751da3fbf5aafa2502c43056760c93989da53a5762ea023fe62528699d4d18eca84d6bfa5b82c20369ab571b9f81ad2207802438203e254cc1f692b7a2909c9939aa70c010a8915862963ad48530c00a9895456dbba4a44d707ef8a35e1028327c5357752a4c60c91a0fbbaa10a03d64595a5559b935c85f7c6c24dbe9b2f042380b05a301935a35d27ba11d0acaa01bd743754eb18dd2f09a29e289fb078f4762b1f8fa55263369570b2674f747545898953bb1f931bb7b29395923294ac31f5f9ed27d8fed42da0bd5498b73291a7b26f84ec7fc18ab5bd2328d909ad0e2d50d0fa8e9c866ef9ce464f4a42757c525cf8760d383131dcbc4e538fad045842a62286e08fa03dc3b9de0207a9ba14a5516a117a276e982d7e3a4de047307c0850ae72a2d076dc0ea56799c5f3be3b82284039f42c10e64070acd889613eec91ea56f3417d3285140d886c8535a38e23277dde112c7d92f9788e116344969c853bd66f73ad110b5f3e9665741d04d47c243d2c1e3b211c179b62d70a7c57656c5ceedca70b4eebc829d7ba44113f4089fea177b6e24e56f59bd62a8ddfe785914bf14d1aff98b27e2e5d081d9a6cada4c4fb3fdc6adf3ef30b22f37bc00fdc0a780381d7dd614b5a07f827b3e5a859abdecc74dde829d06a6bd66bd66a2b120b4d9cd6ac78d482c57ef157d7f439e805c076a3b2811107b3c48e2267b119909e8c0a4193afb2713d0c34fc8b2f288859338a0c52b2d489365f342c52e330637bb63affce4dce8e30908cae82402b079f8e008e71c1079ec069afe4bff0a877afa6169b477b22de2b3e1e2c0d9e16f208ec4220743d7b8fd0519143487812b16cca897cf373f70168ad35a49bb2e3d24112d66352d1842bb2642ac253c3481ea06fa85aab96a24f06293ade531daeda44ea6d717988ae51b37eed7170f4e51f4763539d239c967220313447c8bcbc23b63e0d838e2159f14972c9be7b7eb80b6b9f93d1ad7a14ad191c837aca8e75b2ec51884aa6777f024c036ce07208db41ea96f61e3d2db840f82cd918d9c568c4f7e8e4cb98426d7230f8159ab332ab4fd252761cdf7e7158e26f894de945ee205ed51bbe82adf643ffb68e384407f163afa54752b492d6f178225704fcc3bc82c0eff2e1b0013cf94ab3d82746396f287e915893b704a8e9df07ab6a3b2b4834446eb2f37aa4c93e5533da06354da98a42a623aa711bea0a656996bd314ba6d9988b4c261ec12a400d252f81df01043ca08587d7a1c61e88397c227221271541f9f9e8e1f3940dd704b5c046a08366e2cdf34614c8ee5ae5701e4f2f01a0b352ff69c4b6c1c449bf67a51b2c3d596cbeb59034e326acc14cb820b64ca104e14e5364543eee0e3a562dbe0bb56e78e70bc2b5dc3e0229e4aeba29e7908ada95cf89fe9b17886b74b40cbed9b31204d513ae4d23448eb02ae84fceb1809cb718496272f0e45021f62f2c28982743864103a0ddf5a5fa24cc342e524ee73f4da5257291040620e82c90b71e53ee9854f032d0c9ef910191630b03b74a634d775f8d318ca7944b9754e6baf8f55e588895848dcee68fa5b601630ffa11a1ae62b61b353dde3668452c6f9ca8fc5f6b04f0ba3cea1bbf9e50632fe33a702c74bacffb1b4006d00a8fdc876cab1c182478455faaf8523587af1c70c33bbf32222636fd18c883f831a1b01c75c6b1e2e19e0f26433585c75207a9e89c090e646f5085ca5f478e0d2e2fad0056667de795603111a883f6bcda9ac7c6ebad4eae2112cdca772a90e5bde0516b6266a4fc89ea0febae5ca28a2a204c54c99b4dcc43a3c6b8d1106aa6499af3abbd95ae5541e373db4d0ad0969723a04451dfaa423f8f17b7c872f2c22c186fa34b1de3594b43682185ba68aed66c5481ac7249881d8a4236be2128fece8ae2b52fb6c1661bfd12497b74825c0a4e92ec65c2c295b7be60c7513413a7abc60459d7bce51b1ad6544c4954cb8989ac4c2ff9fce009a4f244bfa08a047be8750d33604077fef3c215e29f0c2d8b3f7fc27bafa439fecbeab1d6fecf4c06e626be797f69caddad4fea393831b136ff59d8f85c13c479a2abdb2a1b11be455bd5ca0e9118d7d9bde8ac50f106b1f9048d157c6cf859ab22b2ce4afc602bb4e878f9dcc2c8dd2e5e82212ba25fa975cd8751011e473cf0bddac9b5d1dd06c82a49eecc86082c04e4a459664a15e2aa953fc87cb43a11aba5215318115c74df7f722906dd3584c510af9ac369e3bd810ae331b3eedfe7271713ee54973d89dc8cc63995e8b403e3a2f38eec37be07d1057785a3031adaf1d91317fa6e8d8992f8ff35802afed99ce679a54ae6a618b49e1814a8f50f2d9fcd9ef8041224ce903272e3739d4f0fed26d3e6b711db681c7085b78927b5129bfb6d3ac17c8a3e340945d71331d556cc74e72976d4b8b16d413f6548caa6e17b8c12a8ca8eac92a4353f3efe37800e481aac52595acf26324393feac831f8cbb2d09d8c6fa2c2260c078c845e032677da39296f4f8a8df02566042c72ba587529da8b689a0777d35398c51871135381bdaec39a6ebeb3e441b7a22dc7b9205f8a9fcf8abd4c499e7c5083009ac159e5c2acfe92a44514f6e4a6bb099fb896d53774da44cd2eaa8dcbb612d8605bb0545ff1b28faca4810921bfce3b22822c6656fd11384fb7d2a84e0cc6348de9ff39d093cc084ca2b1b901d7157e2cb815b03d3649d789c126d790d419ff686b17c79dd6639ab36dc0d2c0f0400e9a82a2370132c5cd62818428844057a1862f4bbad3ea99652208e9dd99182e4447074e2b46c81b9137e10699033cc7ff28a564510fd32a9a8227d5d04740e384d337cd5502ee1bc9ffd23362aa8e15328c74216b27fd7f4f0ae230986dfc77fa281a96920a212b0ce162622f53f69cd606f7ea556888f80d40c5558d07645919bddb8d9339446092c2cf9864fc873b48d2f1f15b710403ac544d2b8c036d8b9ec101e8d5bfab93730a65b68aadd150ecb2f55a8c297e2f994068253c3ec46b606903fe5dcf563c324a0a49517d330085e99b406dbd925802bce16fb6c66c6b4f22f4a4d9f9e662eba46eedb45f41fcb7218ffc765bd4c916c5583700569a1988098cbb455c2cdf88a07b5b50e126ec262dece29029a61700b0da682fd87015f1d6d3b1bee0736e63efb9087a54af71caeb790fbcc45d267d21be935478755aabcad9955d1417711a2413ee0dead72326c0ec5abb8b6220ad42a390308fbaf772b87ba13fba31ef9f2e8a9d13c57070489f31b322dad7b278d28eaf6bae71ae24988e34f4c9bb82d2becfe6a783b203c5d3bea99e8c69072f2c682ba5dfa84a806c1b4cd282f5802820c65b2a740d4b66e124d9ede73d6367e138e7b081d464065e348f77f4546ed59e37fb16e667cd14d349939b85b0a197a3e9164b9d0f4ee4dbc9c4a04ea6e7fa957305c15271d994ce5e2ead83d7615b68e5d859d08f7b95caf9cc42e92586dce01a90fc1865a370f668329bf0006039dcf717fd7ffa6fd9b831d252a630b54fb7e5e91c64c9871beb1fd3743dbd41a218490bdf7de52ee1dd30a8d0a3b0a6988811674ccf7a34eab9cb06fa2dece577a0024f8e00759b8419213a840c7f49c20e968a29ece4b01ab5002cead9e13a4e9396175348172c40b4ac86941156160a2830988b3440e4d34d1a20a73904247132d30c0821466a43862022ae890e27a3f3ae1145ca9b846c9ccce6d3672dbfbec135c92db8f67e0e285363858dc1e636071eabbbc1e6360dd78b50b6a2d3588c518b1effa40176637ccf3b2e3268ce29b1d0ede401487d920ebb81f70464bc883e313dbb7bdd47a4530aadf1e64d48da55a4c6f8b1f6ee04cf66a5c135f20aa0f51f19a15711d394716e106b532d8d21fe0f7083888a3fe93ef28c4d4e373e53f577a261f4a32303f445e252b6f46d3313ddb28782825ece623320c524a29e9cc1bc610032736b0c10a054150c26c2d5cfd23c7889b22665e08a10a2660a11902de357fd8233f8e00071f30414313d00085a6620a96523a810329a53c49fef2a729aed4ae94a40bab600212ae7661154cf88176828c9260f60bfd07732440691ac006306c0183269074800c4080423608620172000216b001066468820b74c03881154756d57a27a03229300216925861060b39e8a03fb8945ad181d5a553e63476a1152268831522d0a92a88cc1cb8fc73072eff853da04ac5818a10a001075280011974b091cbffc137820f01fec075f2061189fb8400a781638e45a4d9c9083dbb05f7e334f70384b483a00d5f2cc7719c9d30dafde172976515196cf938164e7164999c88c4f20c9bf0947d8bcc1e0967645303d7fe94bdb71d58fce5c9ae7a50095be42b64b0258b319ce21bf343cb3c74b9f0cbc162baf02588c3c210c4a18d3c31550fbfedc26710071769cca7b07ff5c2cb797ae1b9ce083ecd93e6ad077e30d42b824f68e0e62a6a114734a2dd792ee288339af7b128e288476224019c31cf223645234d10456f3ececcce044ff3587700789abf3adb41788a2480370c0067cccf1c91c6fcbc69c2137b73f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973ce02e480a9b156ca39e94a63075962c2a83c343fcce7983d985336eff051af7ca4d122e704533c2c224278f9537cb78cb1a7e084bac419cf7c496595afa72aa59c53ca49a9940c830373589e8df0f82dd9eb84b80ca285e053474a3bc6202ec40ff660b838e3e9b68d7c07c15df91836c1ea7e9c7552c71099b21030dc0d60541bd104ee7bc189760b276b300115dc4178922bd63cc0cddddcddcdd0563ae38c51f68f225a37ed1941f31f7c3222b657821f31fee88c8040dfc09b1f1c54c590608b7e8144fae4aa25be63e113f7eab35efc0eeeb60d155348fa84f564a7a7a4b3520b2f795dcdf1b2529b95da7a598c6af5b2d895697d6598966d9ae7233f9fe6f8b1d9a679b68f4747d3b64fd3709f108e0d131d2d6c98b498455343a383d364870b9c2637ac16ab59746674eca7b95bca39a99c94d66aed55ed756158966958a669dbe6f17c36cfe7c371205088038542282822d1689442522991564a9dd25229d912a85150b4962299629383637305139d2db4b0b982490bc7890e4e164d769e70819345931bd9289a6c91486b39922a289aec1e8db4962952f648939dd252459656e4ca4a735c591969b25334d92a2a5a4b922cc995144db68a269b44d25a96e48a34b1481696e6c8c2a2a2c9962bd2245924a94b362b53ace06471f9a62626adb9a778a1bd78d11c5fbce85523699a6635149da4576de4c98e4d0e8ece165ad85cc1a4c534bc84595cc35370144cc34ff0119ec171a2b3f3840b9c2c9adc441615b1a65b4c88205950c4241109d4e9b8da91409c8947a211a9b3850460cee5cb0fda781f6c75f7c11bd8e4b2107c92ddf752c3854f7c823356aca74f3a14b89374e8ac221084166e86d5a3f240e2e9ac31c278a7f81f45c44718e38f977e897989e7e60be633e6eeb1e3e0a98f7516a2504b5c791925ae94d8a70ea955d7e7b318eb92f96805f7598c3f262e7fce633a8d9a671d701fa67327f5e63cc7c508c12ace09cb0773e7459c82ad18b048f785c95df8d303e2a929820f38244e3cb939420ea258e2030ff0c985b974a1cd19d270eb85366888e204571ab230500e6422c841031aaec0c20d548a4027eb411428531a4a295d5d334b30c26c0274032baa98993a363f6043f6832d38d1a195448e9e0bc74c44be1aa51a3d941e0d4e6616bbfe61afc78e79964f7c2d34eda6e537a5d2072ead921e1c70f287524e29a517b96358632a852c5a70d8e2c22a6680c4e5c2161ca4b8d907b67050c57da72191061777bb3e1ed8fa6c5c38008bc3e15022d288ff0c8063894823be401c711569fc8010a60453f4fd173055df8dddfefaf653208e6824043ffd0c5a8823b6220d18e10b9f605e6ee45103864f5fd02ab521944c4a29a594524a29a594524a29a594524a29a59492e6c63717b8ef36387e43f8916e73b7a1176fbc680399e34897837c6448c4d1ffc7578925daebc28d71e57de1c61b895180a7f8dff82b5ae1c683a2162211b07063c441857b0378234201ce5832ab70e33bb6629421460c18648001e3c5185ebc60d161613189c1645a09c3ca4a090ca512490b1249e50b2a2a295e48491975613412e58844285c4041096d211402690104e2b2e0b84f163e1f0f163c9e0d8b6dd370342dbb42966156c0b0ab0ad7659b585ba9502b9dc2a5916794320af046774301de608e4f601ef136d36c818b57f0a9bd68c3273e77ed1fc7695d5cc2278ee3b8781363e49eda9cb3a675452442931b1f5bf1a3000cae3c1c22d4852bad16621a15bd2e7b76c9ab5d7b86758d85ed58161c5f7a71099ffa32f44fca1f7c92d1c699d0e7b350176be292fefca5f1463e331b6163b3e486535f8c5770eaf3f8d8242ee17e90d7d2f8d7f97a1031514429bd0a68314170aa3b79a1849767e2c6027723bcd46055bc8251f12f9caa116db2c0451bae55d10a297058705de0388ee36c6caca6f344b4894be2cc92b804632216b9ba071870ebb68da1c7db479bd18dca3f98d6757ec98b3621cfaa78b05197c7de479dbca8e39448d1a08e9b8b9313c33a32ae69245474160d059f5828ff42a187fe45244042b7ac505b1b0aa1a07491159174b338052facc14518dbc6254b381545bfe314b7ed3faeb96dadb516ee8481f37c0b45d53c7cbc41544d2f5ec13115bdc88318ad8836f04a74b4b9369fcbba65424c7cfbb8c95cb7f69767e2dfda4f27c575acdbc076ec5907023dd4fd0079468c689f37c21dea8836ad8a4b96449b25d16649b4613e7d111df354f336204511dbeb37e0392d422ec1791bd85e2f3b298ad8bcecd83fdd063cde76fa0564afa7dfaefdea9288d73ecb3a131f7bf6ad33b1674ac076ed0bc83c13fff36f9e893dd3f60564f77c01db3fde120ce0c20d152b1ddb3dde06a490a288facd5b42be7e091d9a8779595cd22a237096e02ce9097574770beab846b4ead4fd03e6442235aa4f1bd5f1cc84a5220e4c31450f7ac0031ef40e7a0753489f48df3e9cde9096a9b7bd8f7a327d394615642928e590bef298e5534ac8576f2f13e35e00ebe869a5c7a8f4828077de2c83db0e0cf38ea0af1790f9236428e50e08f62384f0ea669e0c673c2716bbb8b2939dfd552f2b80b02344ca26d2178bd3c88b4976bc8c9f8741661f4f5fae7d90977a510ae18cc88f5e96c5ef05c630bf5cfaf272e36733cd439f759007f5fa059b0227e9cba518a597ad144aaf022f9709d9526a21cb20bc1ab3a5949965734b96dc2d25336aa75bce6e9652f225df466a840cb6eaf23c38e0702e76637379564b29b5958755a5a83974363bd413daa81dd41c66cf9e5c8487159fb8a5cc3e190fabcb430d6aa77958059a482b5dbb4ae9a3d245a5eb50ba572ad55a3912a972a4979a447aadb5d64a22bdf41d2b3ff750f785da14c314437493079f799d11ef1fb80ecf93a254faca49cf462552a9f4e2efe225954c26d3594c2613cb4ad767df1e6b1dbd3e6691a345b669a4aed4493e89de2ffd7ff77f4524aa22efe35eeabe52ca4a5ff94ac9033212b1bc9a5eebca6be995f4dad5bffec5b3a862ca62c0c04c2c261fbfe9a67b4046a217304ca6182c26934a0c189ce82696d10bd20b0f08f7ec4046a293da543fb55e543faa5fa92fd593bab805a8a3f5d792ec744587180745b79ca22d12892e1a1d8ebaaee146a723cfaa7428598bba5dba173e554e3402d551ad1c4aadb5d65a6bad35140a5d235dad135233ccfbecc7915aaa89474f40383ff778964f12f4e36e9f4f9097eba1c0cbdd3c209f6721effb71439f6fdd664411f7f398deba0fe31eea3e5de6e96a14f0f3f12aa0ddcf3f1982d9760ebb1f1aba3cb77520b97552d452dbe48bdc767c368fe7d9e7d3f9e8fb79e6c13ede07f3447c921ec9528ab8ab039c3ccccbcb95aff122af941cc7719cc705191c00a783d6e563d9d9068b2d2e5fda60f1e4fe66cf3eb005de6459676dc59e9db1f3096e3ef8984d0ea8b83a5c689383276eb4814f2e9fb147de76f4b6a37a3035f864f9c4527a4cf2b65cfed772193b634eee1148926cff601a2efc07c7a02219f1412c2e3ca95b62091baf08096ae113768c9bd8e0421c08c7c5cfbcc8da7c6c208b2967ef6b11723dabb7dd5759447437f3780b5647ac7fb167b0232bd90e37cf5a8edb78f435c3892046c2987551777d80b38f5047348a367c1275b149c419792a3bf00667bf2cdf837222f65e19c7d0bbfb38528c6bbf0b639b4fb66ee85911ee8bbf98a5f4220bf42c83912373a0afc78b063bf7d28c68008c07f3265d23e0f8dfcb855c705b3400aa2c871304549d60602aa4fa9cff034c79ceef4861b8fc08714820d29056e3ae23dc67eaabc3fd62fdcb107c79393825c31e74025409c1910a598871f92a5015d32898c2602a536de74388e33a57af083e411ad5fbe2ada20633175bd2e466f1c21945aac6acec11491663656d3b1ec39708b82fda441cf1c633124ea13cb2b4f6bebe44e2cd3c538feea28b9b5d6ed653f279d601b11f12bf0bc8f5ec59ed5fdd77695e0c77c32b045c062f27b86b866310701fd481a1c7cfe329c64336727d80632757139c7d766627cc05ef30db2bf814439fc7f065e4f3d0e387b10dbc611fcf56c01bfcc837329ffb7ae54644765ea2c5cdcecf18ebf870ebc1cf88c46b71be28051f2d37bb82e4e423c5441bcbe2544cf2b1c1c59b6853412e7c42f9c72c1b1643c14b228ec845a4113b4fe7790c67dd7594ee079fe0b54e083e41eedf0ebfd7751de1b9f6b8d3281b1b141910953d1e72deb7c3fda08e12ee0b70331f6ef614efe366dc6c27fb288abc483a4f0ff62382c01bf0a6208f7823d4c1c01c313007fc019e1a0051cce782b4858538976fe20c3ec6cf584582a88823421afc17d289bd2f087c7282db107c4ce68b95b1c3ee2b723dc05d07220304f2e9f2300cda6ca620f5cecb6fdef9d8c59570eb21c3fb7e5c20f0f646443d5ff35ae08c248a5c227d8fc88edd7632d9fb598675df065a17fb39ebfa5727645a493d970b7b65351a8031d073ccd11a853702de80a91c7ca287b966c07d36ae9cd8c05cfa38b332c2a9791aaf12f4437ca484e80171d48834e8e9838037ea07753eaee325e5d4c0e2c6efbc38a1f15fea5223228d6441065b3edaba2c6b264dab8e68141f09dc615d8e2b0b33ef32e73c9499b37ece59bbe9e3ec6aadedb2e2be382373806c6ab0258d947af13b9d824fa6464d8f52416b68cdcd85ff6cec6d0765f1e96b9971ce489124e113ade1134fd10527ef47a3b8fcfe1767a2a035f34d05ada153c84ba7e8a8e094bc97d670aaa9274486fe7faec10561e8c29d3ce6371ed40926204317d6e08230e4dca9f2d875776e40d01ea0a0095ee03111409d600232e4dc19bbdf9896c07dc162f26a40e75e3aa95b913570c6157e4b5fe9be7849da2d47e219882a9dbdd2a7f7914a6fefe32e8c3c53ea3c2775f0ceb4ce929e91359ecb6d473fe6c01bf1f23f9d6c12b39889accf142c01eb7e11e732931b67e24c8dfbc59909a14ad64014734cc3e57ff10d9765cdfb08f6a08e4e7b36b3199791327b27b4377169f65766af6716f32e2bcf97352d353ecb314976531013b3086d5214b2cc06f792c5182f13e7638cdef43ec9448b083927b7cb67e40fd45c1a7a466d94029c416df0c49def2546ee7c67d1461ca0d363f046a75260c4f8c75d5b214a74fb94aee1494443742ec6153d46273a8ccf15bd3bd157c2b9fd1698822e308582699d07071cca45190aca516e33abc50d08948bce72ed9eeef3b48a4965de742b6c00c5e5aef20ca45923303c29445ff1e000e5d968db8182222a9da55b4545e524151595ee606bdaaf142e6691a345b669a24ef2897bb374d9e8d3ee8bf733130bcb33959107f9c4c9c4cb9d88bc7d99cf6dcfe3118997f33eeda26724edc5e30684e8a3be96893efa48d44638453a55397d1fe154ff3b8d504edf5dbfe89aa5eb252abcf16079e9594c2182c33622a656f24c3e58ae721516afa9063720dafbe2dc8030c9c4bb7222f2f2269978492722af4c7472552ef3b92a1e8433ae8d8879934724de15efeb6bb71b11dc553c22f192bcaf0f7a4c7709889207447b3d10d087c4cb9534c82d39c2e9e993ba46c2277a95ae93f0892eb9d9bf536c92d2459c2e82e8475dd4824ff4a22ea274710b3ed1dfc019f4d712ee854ff49f873a173ed1be808077eb78d32aca71dec7691e7d0c430ad2f874c202de90894eee65dfc4269cead3479cb9f998efebf1dc7cdafde28d907a3f3b24de79db9fed1a12a330618b20394e2e2cf72d97b28c60ca4ec82d9146675a77788a6789387e68a12cdc729be238fd877e439b0cb35680e1a12fa2d323b5a6d12093bd65736e3b94d0d0e6a9f250a610e0ca907cf5c86f00b8f218bc01c3461c2c9186bc3c497e5caefc079232068e183160dc8001e3858d172f586058584c2a936925b5b252f2a15422d520915408a0a2923280949491004623d18b48844203052514805008340304e25c38eed3c3e7e3e1c1e3d950dba69d342ddb21cb300060d825e3ba6c8bb555875aa947e9ece6bc52feca18f046775f7918f006335ff917f04624b1c01b729b35d62a6d55423df2e3b1f0496655dbbaafe58ad7253d10cef8782c24fb84db3e0fab28c116527e3e1f8fb3f36a507cbe4ab5dcecb2c1914af77308ba9f7f1e3fff647143007439f62cc8cb0d794914b932d93fcf89f43d2274ec1f4926f4af48e84914b9212f092e3bf6e9beed9ef73624decf3fa10e0492f9301007397471b727c17941ac910e70e01229dded1f8f27b3794a9ca06fa2bed626ea29bdb58d8ad56b827a4b603088810f568082233881a5037613f4daaf37a179a4ce4e6ad5e549afe7ccc144e4099a43165539202a1e6259701fbcf96ec4ca8f22289d9f737aed7dff0e4f0e38f997d34f1fdc005e967c6d1c681031ad53104c99421a224091c1966dc527204a9878d12105127c42e20221d2f7880b7632d7bf22f7fad525e15d8f1d13ad9bbd372230083b19258c748003ab9b44912ffbf5d87948583870b1a6552f8dea77f4ec1bb89af98eddf6d9e938c28a51f0629d8e23ccf0297e0ba2c59b563931df049d142ae18919227c6109ad1ab801a788116eb0022cd6a0040a245be4d0182b84e0074f9c10b146ec57bd2e0f705b0ed8aa99122d3bd7733dd753ce664a1f28eeb01325da39ab1a0c0c33b730c718792ae11251a89a358da2bfde0253d8afebd7755d751b8263143284bb510d4e220dfa59d3aab80688a2a75309973d10874b6f313a6ba0e05ecf3aad8a4e2ceb38d1692d1845e3c670ab5ee7f08952100b9fb07fb3e6d267f4b38653534c2ae00d7b1a844b9f6157853eaa270fb7e8a42905f14ca541c181ddccdc3930c6f8c9221c99a6b1c02e5d03c67b892ffc971af130714e498a11055bdcfd810cb670dcf341fcc0a71884f7039fe29370ad8a3ae04b84b16750a3460d181818962e7b5451d901e3570cb25fe75f2c4e892538857286095283e4311ab88fabe738553a5f442a95e0f48c6066268ce217a4c36d07c9fb822872476ca3f2efe5d60f756b776badafb7f0067d7d8dfb01317d7ef4faafc6adf5dce2130c0cb61ed5fb4c2f29c1fd9171e143f02b2a37a1a876e18b975637ce7c910606f0ca2e08ccc53018ce117a16c329cc45c60ea753071bb543e739fd10aa94d866c9c31ee31916e37a018795ba78459de700d0c95803c095022ece2a64b073e1162eac42064edcb8d91470f1b5880b043e88cb15fd73b9a5972ebb52e95ce95cba0cef2395de52ba0edefc52fe42b4f578f12aef75f4b0ab23d6bc0e945113fc57e39afe79f701f1b9e9a58f3e37ddf4af74a57ea95b39a9fb4a875da8d41d92cebdc634ecb27747ea3a155cfe0b1857e9be202e37fba7fb82d4b8a09b58bc1e3736a6f9d2e76174a679a803c6ca905b0fe1ca6b1744bb23133cd4b104a33a13bc1705946e093ec1142de5894da553620fea943013d34d5de92593a7049fb8a4d2c1fbd2121d1c952af47c5eefb2049f18eec0c4b012adb21eb74c3f71aa74285229a141ef8336dc9aff98c9159c42823b2bd12acee47df685f7712cde47ba246fa7e32b5a2828d84b9cc2ce6726bc410e9ea18a67f2bcef57e571db2113ede3b64305eec0d8ab9c9f595b3a097ebed40181a5f7c6c3749307f9b4e2791f3c91784b57f988f452473aece0127cabe2a5784778805bad627834bdec701b027a4aac17ba765127445e146e813a213b388f075f3ec21a84b2d34cf558fdd599eaa10e0b719650e283d93902863f61200e0cc4e11b11135c84d26f3167945a1210b8b8b08b0e29707072a9615d6e7c2900eac6025cfed74377a30c18377ee50715967fa51b516e0c097199fe6537dec21ba1470b030e4223f51fb80eee8fa0128bc9fbf8827ea3850ecee8baa37fbb23ef8bff2471690862e05224424e8ac0f8813802189f602443928cb8002561e282ce7144b71da11fbba387bcafc8057dd71d7922daf1c3c0a5cf288cec0979f6c3c0753fe73a097df85c6e3b7cf878a7356ad4b05b09626c9284b397c734352e212e3fb6a280736d5cd88a82939b458d917c3e5944776a2a7ba8758c8469b43fe131123e25e114127d4ec22778dbf09f7b3c3ee6e385533edeb4f739e0c66f1e34e2c6f3e03b1b70a3901d7d1e7c5dae3d77416a9878f0b5170bae0bab2843189e60556cc24ca3dd8f692ea4e154f538093f51bdeb098e64499f9d71c6089f2084bc828787ccb2580fb27ef6814788807ce8459c1b3722a217679a7010979b0b8bc41855906536b868e372c58597b1ba5d33d9c55b3b242a500f849e794eecb30b62062e6ee9c22a62e0e4c6ad7a261e1ca5a744639457a3c0d986900621c991b6d1898d4e7835573025bc410fe525e5d52d5df05203e6e5c8f9c473464f493d6f3eba06a3987a2c29d0b9974c23cf8d35b4f24f94f1e98db4fb865c510b38ce6aad15d0fd94b8a2c7233cc0190db8b94d2ece6de1545ce28a209063014864034666247084d302e5c8bc28cf308d451eff0891f7c9fbc583e2b97be713d37fba4f0397521d1d1d1dd991667626858daf10cb1e5944daa4d2458976095f7ca30b2f9fe8e1275459888a97ef8eafd61d5f599100f972e1214f177bf3a58f3086e70b4431f7293dd4f103a398bec78d8d174303ee7fe1975f2a691459c669e060337b52c239cfcccccc9252296590eecaeed852c965828b0417092e9a48d37541b4aa832879292f6fe3caefdbe10c79d8c1ab35e1643c03c7871d8f782977798e3136082e125c26b868e09320f009c3271f1b9ce56ac044f8e6e213323ec24da2c8ea72f36d4ae9693d337fd29ae081d4ce043d1ef78bb90c6740530f035cbe0126fdeceeee1d2dcf1cefec6017b70f0f84e10d70f990d97be4c8b0a793245864714f175ad1640b1782b22437f210f13248b0a7f1c9c5258b1d7f454e1f631a087f12c11e9178db0312e3d97389ed810cb67c7c7384fb5caedca1802b8870afd32ab29f2c78a33fb721e8af673dbbad077dc8fbb4db35c8e25ea78f1b11f45756e36d0f7a2e4274501591344afee29988a446ef8b4ba8642fd244286212ede3f9881e67b61efcea451a111dd5db6e48bc76e68b4e88e86ef598084e405ce8976699176d1a252f2d47b28133e4af194ea55e521ae955e6a30a2953e92289e4a5d8c81a9d802417a2b55aed5cf771a4f95d74a43d2bc25d93868645229117ea3ecf3218393207b8500d6598765da00ba2e4219d21da514a1367ea8f3c866ded220d9f24dc408c24e28828975c88abb55e6eb303523f2486ce9d76406c689ee779823c9e1c373f20e02e1faf6055265b4a295b57135c3db738c5846d20d432ed1f73124e7df5f62b8037e8653dbd7ded269f6af45ce9123e4928ae8c31b8923d25db93b06af3204724527e9ca4e1543c2251b40b96e294cd717a343e490bf984b2de07995c296f3d0b6748f9a4d268ebac1ef5f866b224218bcf6297d9cb6a979d7de8cd68a79d03e026d5b40e86b3d795596ccef9ebbaae6b6e40586dce0bb33302911f122f1d12af76cfafb8302eb4e20651dc2c6a90539f76586fbfe289820332bfedb25bdc783bebacc1911b3fe79c9f6d473db7eda8309c0d2eb3f659fd9c3ee6adb5d3ce791b8f59ab61f1d67bdde659ee10d2c53e44deecd9ec3ecf3a6bad96e46ad79444713511ca516e55b61dd9493eb2aad94e1341d1b9ec59d5e206843dcae603a59b17853aeea16e1ea56bb970eb110a854221ef8ba167a16e7e425d066fbbc963de7a1a9f600f1977cee97df1f5a078edf12b724d3eae76ee424d0811796ba38d43cc5ff19b32487c7388e9d9c7cdc7f4be22d77a1f2e6eda3d9a0d2ebb158134db85b61ea08d081937de0697bd878cecdb49db8eedbdf96881e1ec316df3617f3dbb9e615dcbedadc775eb99884ca0c885b7b71edaa79d2d37c64f205ce2d53e97e801717179edbe0cc21b43e4b5ffb22dbbb4a20647ee8d0bad80c20cf7c9fd8556dc208b4b3f6b91fb61bfb0eeb2e20649a80fecdab563dab6637b56b50d86c39e59ad5eda0d08ecdae6037bf64cab57cbe59b9dc8048a5c20b0ee3a763dc334ac83cfbaeb5af7cd0bbb969b619a9679da859707f9e462e7e7e9b34babdd370ff934e53b2211144b426009fb9b066f4cc997ef1389b75f8463644156e4b3af508397f9502c422c8397efd6c52e3870b56b9ac7b41d76713fd8326d1e0fedf34034cfd4c30077de0057fbd434efa31f12330ff3e235e3b5b2eb2c361ae417a2b83dac9a3d203da8076448bcf14270f2daf93b7bf0597ad08b6c454549a9b5568eab2829a3d7aaf2ea693a04f78bf77add88e02e84332c11fc2a13ef3561a4d263847ebeb9f635ebeca20eda19e1958ecc6a5fed0c36539bd1ace770afcfb6e194e6a3afaddd757107aeedba8b2e2e6f40f0eada2eaee6413823f3bebe3a2ec2b55f3cc0b59ecc0160eb5e576c456d5a4f47dbd4d6d12d266d43c345b8517e90a5a8f0ed65b07f4b5c76b9403c3f75f6a1cfe7f30965c73cebb55c5270f0d765e2f588f43dc2e341e8f2b1e6b97d0c63f7dcf2b5c7346f2dda78c019df066ee8a4256ee8f52b37dd543aca53bef2cc143a4b03aea9fba68f1653672a793e5aae4a919a1bf264b0879a34049cd15749e9469dcbf711a174df3c7b109ebe8f2783dd72f779fe391fc479444a37fb76ed9ecdf364324f8913f24dcc63d69b50004634aaa30ee9fd6854f5a26855abe6a4529e42ae517dd94413b051f27d08b46a7a5ca3e0db23915298e822dc59924bafede92965fa6bdbd130dcb35ff4d9b416ebfa5967fb58adb5d67eed5aeef5eeeedb1e326ec319d2fbf81f782bfff565170f37db9f5dcba5dd37e3463d186e4ee02b02b71e322ebfc81527930cb67cdd6a427239555916edaa9bbc19e41fbae7aca38336d2f6abf2aded5f6dabca3ddd0c7a05dd63bf4171ad0e71e78b3b1e12a8a27c8ca36d2c22ede47d0765f75a40bfbeb843fae28eddf9e24e8ca42e2d1fcbc738359a86eb9a46517969dce1132b3e61d415599cf7913c3672793c4448d740312747ccb66d1bc8db86006da36d1b6de748a4738fb1f5d83c10c9a3699aa6699aa6699aa6699a766ddba1e950b3168b03eefbbcc627de969d4e9aed209f32edea8e30393d6d72e921143b3b91155991d5979eb3b058e8334ea441cf8744e4b597f95c184ec1303387ba8b73708a6f03de1031b30edb10d7c6ccf1468d9e7122e3a4d45a6badb5d65a6bad15c64604e8d949dba4b0d73ace8271f8a4c57176b2706bad350bd7118eadad5c2b4e8c03f3a065bc2511af1d51925df11ad54528d8077a1b03c6813ebe21243a23e9e6b294ac072deed0a06b1867a76b6e141c1497be937c39e87b049fd37316ac428251f4f4f3af4bc097f69148f384c405b7c5a51f6b71e991e0944cb49c6acbd1c3d87a588f48bc97f731dc78a49c3f43b3c1b107e499a1d58ef4cbf3eefa5ed65a6badb5d65a6badb5d65a6badb5d6fb82bc0c71d9b6b6fbc5d6a36f9fd1d0baeb0b3945f280ac3d91be913ca4cd0a40630f88b4b2b6b7b86d23d66030d30760eb21e30ee1538622bb08450034db896e448a10cac86499999999198739ee3033c71d6666e68b795bc95e347833ac833ab8da576ddb6cadb5a6ea61e84f2f3f915e59c5388ca2af35de5aab7db10d61eb556bdcc1e114b5ffea2fc659f178df2cc51d3ed1df80fb709e6f329fabbd3ddbb69d5e7e226d967efbf61c9c0a7d7b0ca750befd074edd2dde6df3fc651bc2b3a96c5b4b104168e00d667883e10d8637f8484d37e91d782349cab6a3b50ec219a396e9832e448ab61e9bf7cdd141cf04a0bd554c1285a49438240fc7e3e1a08842a218de184565e21d9db26a2071a1696191392e84af07fdabe7fec52797fe5b8f51fce47d76b6575e33e0e6fb919e71687c0354c5d3974a3bdfc5f5dc7235cf44445ebecce7b207e18cec76c4356e3d52fe79cafff17cfe49e9a0470482c9015b241ae85c1e2eac820645b8bd0131da3e9e9b723ea77840465e8c07677cbaac6505c8fb814fb4860dbc81383007ead4ee836fe846f5b3990d8e670d1dc20d88d0ed0644cab3db0d88ac53b9a7f2b801e1397799cfddbcebdb4604e81efee8da4684fde6118957f3be0632f290e013fd90c8a12e7302f9e4f99ceb3ef8864b3fde103ed11a305f8ecb47824f3d1ed3672f5a7cd2a1a491770d38207cfb8f7f5d88bcd8d6833d22b2e5798015b09b3b5dfee5c0b1e74edf0b9d31f9c42d27adf6c2326df37c38500845344a512195564c2c2f60c4b0c1f5907139c9b5931200bc874ef28993f0697e46e7e221893951dcf913e91cc9728ae329ee4482b13096b5b2d378e8680fcf5ab61d3df4400fb7206468333a1797cf383f43b9b8b8c4f0a993dddd376ee3ddddbd3d7b7777c35cf5eeee06fdf3ee23a377b70ea7849454dedd4c382524e5c3bbbbfbcce294107eb7901a0478770b79617a777777770b19c03925a47b777777b790970b6979777777b7704a080fa777a3dedf61dbd105c0d106c871ddb011536a8a06a075ab010a9003c7d55bd6a38b6f74f0dac8b191b3e5e4c0645765a20ccb5a365a5bab05ea7f1a85613a78552c150bc46a160aca4728a18fe7b352ad40ab55490504e25b1ae5e43ce50367556cc9768b657c64747c195e1f582c560d0278ac0cdb96ed0bd3562295f8be20808c010840abb5b6ba1819dfae832c192c160b8b0123c64ac66ab56ab974e8f8b6745046f370b23ac8686ea17aa828784ff32e38773e0380c64347df43fda9eb2b59ace2965c226b50974938252475d51356714e8e34f2c44509f97c3bea8d33bfd24109a9711fa66055b358446031615d715142500e3aea4dc3aa460951f9680b56754e0e174fda888ecb4d36ac92abd5cd0a6795c3a4740240c12ac96245c19a8245848b3ab350e715ab64abc5332da6693d11c00770d46316ac923932470b99b3450e173831fee2a8472a583557abd6ca06f5f804aba64d72a1604571518f53d0f8cb518f343abc3b690675245835495a7059a02e04ab664e909607e0a80721e33bfc832d98d50b8985135d14ea2756d1550b0f9f7114aa879f8efa49b62eaf6e300c73ce9d574ece2a6795b362b5ea6ab5582d568bd56ad5c562b5582d56b7ee7ce7b4ea5a758ecdc959e5ac7224ab55b6d5a8796b39ce4ecb62b5582d96cc69955d356ade5a8e5bc99c55ab6a4ece2a6795b362b5aab65aac16abc56ab5aab2582d568b35735a5557ab99b39a392bbaea796b392e87b25a455b4c22515653cabaf3dc3ab754f1a9482ffb158e1b9e0d180f5b65280f5b6d1f00b45a9cca98b00adbf8aa3a785339a99c4f4e8e0fdb6b6c32366d7b0c5fa9eb73a15a20d451502d1f0f5f1f3a786b747c2f168b75b146a3ab7432b18b3bd201c4d5b8502ed46572f15042288f615307af4bc777c4d79a2ccaba580294ba91e8d66451d6a5d57c959426005f6bad1d8000629448a5c7b0b5d6be8801c3b462823746c777001dbc02c8c9c9c979a1f1e205cb5f3c86ab4bedcab5d38125068cae8357878eef4b072f8d8e6f65b158ac00b498babf7b0cd795cbaaeb8aeb6a07192b3a78d7e131bc4307af8c8e6f003a785b3abe3427272767060f2519ab2be3314c5badc2588d9a47799fb52edec771de47a2ad3b9f9d7ac058ad3a89c4418c75e74936e0e43f6c85045b716a87cf6346580580cf4fbbc363f8d4c1db43c77746072f0f1ddf6c07cda5e3f7d0511eba3e9176ac8cf7515dc6c3490900bec385c83b9fa1b40edee8736cbe226a7a4ede0e1d003ac828195d4b07f9a44307f9e47590515d37ff0e362a46370fa39b7fd1413ea14a534507326a34431d6414a89b9ff96d5e5b72e7b3198910bbf9cc456bc66e2ed4a108898958a463c41938ccf7f5beded5767777378c261feb638d317a5f90976d88ee8e4eeeac99373d82f752c27db3e6f200de20c2dd9a88a37e3eb972b8fcab065c1ffb376f6c1371bd4f371fd7fb7a5fd67ef600aae01cc2e599048e3d8349cb2720e26d39050db8f9af467e5dc9d715ce857d25e2b0700bb7c29dbb655da5515f03a793a854acd8098316324523020000003315000028100a08044291583498e999b63c14800c8ea85866569b864914e330841021c8100006000c00000000a43001366b300f77943354e0659f5aea28c32206966442b3ff3c41224984f166402d6c9e614ae9e65dde7b9f803dd1622f0df87850c7f3a0328c92faa424de8ae1e30b70f1fb393bb100392ef108e9689f4e7f7c83aea73a16bf199d96332d36f413004b95a3c19e8da6d30fe26d3f882bae380124f8641d24cccf071c6cfbd32755f9c30f6e0e1adeaf2b30ead8119811a203518dd7daa4e420f681984a2aa22dcf8d7f0b01083efbe4a308e042983bb157027da9a8c577ba1c1fba73dc401e4ad5294879af1a642b2450b2e5450250fae602aaa26789321cd81cc7be133e011a6dcdc2ae25c31ac9a1fc1ae3f95cf55d578d2291763f3572e337f1fab5f6b2ee71c2618964c0a65ddb0ea6b2386b8cd2d653d199d368dbdd706a3f0802460c50f9b22f222fcea6c1aa2ed26c1ec66a2074c3fa4d0ea602fbe877a058a5b9e50f4148113be070a770235e868cbb62a57e11d004d81c496694a30fbd742915b72dcce18d6fe66bf59689bb1156227a4f25e6818dd29c1cbd513d69376139f8a8975d1cb04f41e348ef1818338c77cbe3cb7f462565c15ec8cf824c202ad2f02995a40fb727d4320addeb203a419280f924a94ed9b3b223290a34daf3e6a2bf8c0122e3e948a22668898883858bbe7eb63f70c24861ea4912e0e5924b13edfba9e3cc90281db139fe86a843faf60d6eaefa0f6fd5b1964282bcc9b5e7377e6d54506c3449c2bdf783941518069cad13221b4d613b110cb7b6512e40108000dd6d66561d25c8f28ffa6e4c8d5a061b1a83140130fb0804368354110db2aff59452c63a07ea26bedbcabbc9f0778b36431ebe820c60da78a12f227f36bcd46c9dfb97ef7e2bcf4c3ed8015b0fc68ec9e09a6000348ea19b6c2d5359a5f9a5da85baf920ec9f53896df17ad8869ce6a4a4f613ec4e8d7b664a4134a07dde57d3d7e326f488c7aae9d31a0efe1b3f5c108373c9eb0b0ff457f0865d1ffabdef7c4338c3329dd48ffdedbaadcd70d70520c438e400aa1f45f1d3ba5e4c1c00f868560b3aae70c0bb249aa9da8ecebe0f1752071d228abf38da3bcb5a3f2598c8616f174fa9adb717e7d465e6f404bea3b5c5576f366d5e8e9974d17b25517f428838ed113aa68d5fe8e18ca3895743e282475002642370062f042e762090d28f1b248a2ef401b345f1c4e76b22b6d02389c344e4df91d676c48f3b19fc75027aa039662c5c64d414243564d6573b3fade779869e40e975ac69be67308361694a3e9722ecac3edc2d98db0e48f3c9df2fb3b0684b9e5bc18feeddb24e1bd0fc9372554ba0ff6b859367132ea1ad42bd425c802a92c526c33408655f2cf430041d953b53547c3c07102c207103fa03290168c770179879c7539036b7dd4e8fcdebc32ae9a8f756a7d2c85ea9f3793e866da706ecd42b2d9a515b7998a2cb786d97a88f32b99394623141c82d487cdf66ca10d9706e3dcb7348c7f40f3564ade7c78414ef8ea4c9ab7c037e25977b413e3bfed8a684655d04923833630aa6e72869a41e3fce5f64a69644eba5d6664498adec260e9933e8bade49f9a74af62a97738e43e9684a74d1b4adcc6f86f975ec3ef7611df9ba1acd355f2b7b1d83a8a0fd30ef3c99bf75bb858c06fd8cb5ba83e2b95d7bf8b31d9af968344715dbf9c1fda18aa85c49cc86c9230cc010f523901ab7f240bb50ffb1faef5a95bba420df44826ea73b6880b1fb7b6e0afad1fdbc8c72ec274b337ab2b94ff715fbfb265d54c2e751244e35463dbc676d3725205080cd2f5532380c10f5ae81745fd37e9af177c1631b93bbe989445a6a417b96699761ca1b1f59005701d5c6655680ae56d4c59e8c7ffe6842205ed8d6fe68cbabaf8ba6ca578275d5f5c30fe4573ea56d48236e3efb66cf15fa611c69ff31450398968ae7a7c1437e62bce16c36eaea313ac03bc4f6880331b51fb5e1799903200b143d3fa9c092bbf7c87be2c6ee721bd4864a228801908a883e6e1320bb10ed5f5141c369fe6e678ab86af4e21cbbc94c7ef076d5fc32454c02177644e9780ae0fe02d762166d5b0656b34297423b424b42a445412d4b14c84ca2a48367716c1a99e0cf61bb6096db70c7dbb05c0873f363f11c044ecd5cfeab3508f701575da0d0d170cb5233b9db36ca25905112c6cc7fa1bc7593b53344d2430f0372bf507c721da836fbe1c802070209f43437bef11ad6cbc31220a80398a747f9aa771f4094920deeb2791f16e601d2add73ae2d3e4a41082e38115aff5fa64615443760a613108c6adc9e159e9899bb98f5017ca033e1b6aa44f46548e3f446e15a0279424b5bac89694407e056151f0c5632bf9ff4ea35aff47d63ebd7a12567e99c3a55ec11c42ffc76849656c5297a028aae47b9d1cc433890b666cae80062fc8301df894fe4d28b8a09e6f011108b57c9af93bb4d95b622ac83b8bb6880df25239bc66474909519442132f7961f95671caef1e8463b09274971d1136c5fe55f78da1b745a117cf57e797ec125ad8c7b42aed9411499c6c079e40269fa1873f60d66d06360cc0b30b3227131ec75d57ce7dcddd2951092eebfca55889304cfd6e903031f1e1e449e798a446b653b483bf05421b0196a39454606a130c36217ae22ada4d0c39624fc1caa0c99398ab88ef24f6211e4cd9a9828a82233d2ba0534984703f72faa9ce24d64108b98cbfe2ccdd02cb6cf40979f960cc1be588b70c3ee4a95da605a32a6489e97b005f2f7e45dcc29eee4c91f55c40bd5c8b344a4609b6d4f4d7f5e38e1742cee63eb0aa6d8ede8d26dfa664b585802b432067bec6f100cc39f74c007cb7c031e9371d0dbcd0512fa67bec10aac804a99059210d68efb4574fbe0cd1073ee6a181fcd7b75ed3a58a102ff3c3ce38ed47d92888dac58ad1d64f2ab183629b35231b41f0680df9bf1e19d629e3dabbf844739f40e3747295717d3262ed2b1c128aae8af08c441f5066617f082636cae65ad18a282afeca169e273a7c85a4a432ca317be8e60d2ff65d7c0997cd63ea489290c22016df114015617c028afbb525b4518bbf4a3f2db236105ff0f89e1603ab14efbe07ccc6cc248c3f106be44dbb6a3c295250e9967a5729608ab095d322c14727d7901e7b7786ff7186331e8a0ead8f025a7188fffd6e8acdea0bb1d8aa02b03cc6042311194cfaa428351d1d2ff00de9174649947d51fee249eb02072bd30c871438a95d1da3059ca3a9899d3d523bb68e43fb878e45ab6da9be7cde6d86e51b5464290035166fd7233d2d18a12711cdd146f7f570eeffc638e807748b0062d25fe1325f65c810343f5374c0b46bb90bcd6c17778b4b1e7f42cf0c88bafc8d64f5ef1edf4b3da277da9094a11c7b6502e35b4fbb35b19e2482cb1a8b5488361da3b36b80f92e482f9eb1d22e9f5f7609bd3f8c8817ce2c7881f7784c16efc6a587320aad693c20ec932daf57d390134c741a36d569c2a9242ed3ea0d497390b8554c769bfc08f08d6f3527f55def6afc10f8e7f4ffde743aef4144253a917d679a1a3d4363ed75c85203ff2bc892575c440e418e82f8b897d76e7bb4c020c770850617768a6f4857a1efd39861ccd9577a21b1cec41d6917803bba1c347336ad7a37372cc7bbccc3937ae744a47b6a9370b4a8a87376a421087beb1decc31082628932ec7ae54111da7b592e70d741bc4dfe71f32fa5006d34fc43262dc7533493466921c38922d156db0ca707516dbd4a632f3c13596649c33e090bbd8b5daa9f9d9045a3866f5d34dda590b82cdb21c9bbb42c9db09281d83bfff0455724ac41910085b1df12ffc59ec08d49bf10d10462178e976364d8df836a171a4b72e8b4be87912a4ef58cadfea41437907cd6d38b604fcd2a54c5cb5c52e953f06e441502fe7b747aa8f3c014b4c7b133b96ad8965bf4068db448b7758f1e2d1703fcdbc925f58c9f1c2900c12933da0e5d6d7bfd03b2a8004f7617ab685a1b542f3a2bc418c8f017853b590de904399bea52092f1850704529f8462682e36f48757ce84cfeeef093f57b33c6e38b8dc9ed1023f9ac425d028aa73b862077ef74b75fabc40d94f375152bd97cba3a4c2dffb22a614b769f99b7090f01819a28e77c108259f9b1d8d60a1c388bc323348f8d98d4e4faa84226cce4e6dae34953d479809df001aec9daa83bdf45d77facad8e591e12ff5dd422741171b9fb8fcad0a1e3f79f8a50be7bf7cfb27186feb0ed3c7c12938fbef6330ce67debc21030ce8ab0390f0a62828bb328df4cb9de20330940bdf5a1ef9a51007acc967ed59377e9719ddd2d96eae836507eb97855edf4bed0a86291cb6eaad4e5377305344e0ccb968c8bc9acc75606e971ff086700498fc5e9403e3b6bf49f0c0cec74ab37e5b4f40a81c83f589d5a9957fc1b4ad7a01175ec0a4f048d86cac3cd69ea6647e22a94328e62c5475bcd66be9227a7645ff89277edd9acb0a686daac6e8f78a84febb21a8e6a452bd0e8360cf5eb3761e1ee042da4de8dac751ba9063c9d45afbece5d4e32a36134b08c1484405d7c451b172edcdb31b8cf2f1a858569b45c6aa2e3e47113f2ff6d8dfa85ef96146bb34d25208ef7d77bf45d1d7ac9d6f718e5560ff32952261bd03fd44bc4f2824b88c50c3d2ccc06875de4a9f1e05832db43c34af20877152a1eb05d6deb0d879f2fe1fd2b83147fe4e4f1eaa026070808a2686b68fd6079eeaf9e8fae2274f952a6cfb12e2fe34ed412abce55fd4b7f5b2197f0c3f3516948c25bfb05c69428a12168340aedc6a0d7005a1b874e63d03416fa0da0ad1174360e4de3a06b10da1b4157a30c6d7f63dd27058501a20c36e7661cd9dd11471b7d9d94119ca5e75e1305eb426ea81c1ce635f73e014496bd1780e77c1e517271afe7d904189e3e9ab94d4553becb3187ce521c8c1022b0ac991654d8bcefeebcfaa12f494fab48ddafb6edef875e2eec9d4fca7475c42f3583832a967d3be8fe346518ed8e5227052b69b0d7ecce4b814ef428d8b63dbb3d94fdec9195d878d0f31a67c1ad9459346dd00ef2886bfb788afd03c199cc9dfb05ba09793bf61a6821e476ec31f06628a7cefae67592ced8818aae8dd6c467a4e15393bedd8beb6aeb621bfb81e0531e8eeef661ca9e0b9cccebd5e3477e4e7b5f5e4ba8a38f51b4147f4b3dd4526eb73b0001d8cf6b44d92ac43314534f85699e3e2bb8194cd07e81f4ce2a50f49dd7fb6c1079391eb3981c57db0ef353f2b5d7b06afb0e6c6e5e63a07cd95c8df965f238c38e394402539f0ceb9571133f6e6c30af6b9d9a4fecb86b326db50471b1e8aef085d9bc66ab37b770d149a686bc8d6db931692e77ae1dcd5adfd569c6b7d1e22617ae753818ef9ea9f1e3e51561253f2290b89d6af7f455e659ecf9a5a8e15280194aff5581f588656998d42782e0c0380284567ea02b41dee4a773a334cfc7ce5b467638c22681566a7a380dc3bac94d3c5ceb19eea281203158c0765ceb7a71e1520c44a73e050dc2042769bde9e723f61e78ecb2638854528097d17b45ce3c2c6d2f63586b1c7571080504a532a55bab2bdb62e52346bff1eb57ba2234d76ef42b66d976c5185871740909c4586b95ddb20eb7f988b9a1d437732a3a514ea9cdade5613cfc8ad82c77849e4a54583cb20b3c21bc82df9bf9b98daf65c59379b80ac6760a448eafb5d8ba0aa15cecc42b3b62fb88abdb638b989d91d7164109fa945270eddc3cf0f0aea46f1d2ab02b409c8c17986b42127e5cc73ddecb0243fcd819406c1b2dfce6cba346ffb2f1110baaa4051e45655fc7a9c04f244c6669ee78a6a5bca395bd432e4d18942c044438e49effb457d3a94b49de8a8f70487a91e02881323ade19715d2acc7943d387f446213fc693e4b310a6012a1502124e61a38bcf5400fb693db36cc382d79350d23598a9053cbdde4774c3c932c7da8b82de4e6e21d3d2816e75033d1c9f74aebe891dc1b51bd9a07537ea4300a8cfc043506c9314e7703a6b0b5ee471d3ba04aa2d7f0151b9eb3a019a8c2576a56415a588286b7c7b1047bbc8f1078236259b8af23444eabff8c48f93c0763706af5488e778c95cf103aa8004385a96488d2983d3af2feaae157999890cd47fe87fa903a0c52edb2069386cc917a51818730873abea54da4c14430bc1a5a38cdb12add0bd8ee0439ab562f7e5820734d863d1c55cacb422990435bdeac435c8dc55fa4b2c03c0b53f1a404f313aa16d1ae80063173fadb4c030d5d545b2580cfed1a2cea70606efe4eb3ee04ec62ffe1e9cc671d2ad437a4d3ca321cbec0628f9ec0be228f5b0e27b2d8aa1d4c385afb530cf394c46c6fb71e9389926088c024f9f03469caf1d95c948cf4815cb4a53b7b209c99f323b7dc695ba0ff088753cb189d11e3837057fc59d5b5f3add3a891af3b0f4555c75afe6a788424ea777632a409bdf90f19d09ba9cf800970076ea490f3284f8169a872cc99319e22ecacf238c9a01395d396bed9dadf088a61dbe32479a69aea3476b16786c9a15c5707272693f1061bfe6a62ecdf8c5a98f1d6400e5e5fa1f66a7517628c45c1a6edf3967d5ddd83763ab6c3e346376af95c551aed9e8d7d26c9b5359fff01494573b2c553ec19e5e2ba69299befcfb0efd91e57b5debae64e52a58e35675e67bb235700b031e35b052472e5db9333444f76ee966998d5d6c657679e68d3e7b98712ad9f0dc0e3a2ca51d21c780beb212b16281eff43a36a7519d4cbea4b9514b33ba657159ab4a12d117755241542f53deb558d1c51e42322cb28d0ef7e642a9f4d14c5260e0d91ebb1227a316426ccda3575227d545f5f2e65d8b155dec2140bcbda2214936ed2bf0bd8b2b43f89db5a971ee074130f0838cf59e5935e5c9ebee07a4dae90d3e557f993da656f18a29db3c0e0212b6464a07bdd70b447a1a5ac2bb2c2cb3bcfd3d3814569c9ae7aba0839a720ae84195f01544bee6f9f47eae89b6f4ef9881b0dab3c53e56fd7250f1e00c9e94e39ff6ea614417cd4d2cdcf3b517c724fe3f0e94926df858181d11f7ee50d7180a24526b105d732827ed1c45fe8d9185b49f28c6111a3db8baa4c039a1d3ab621b8ad5a535af24db8e891498eef5ac63c676775107fb925ac21dc758624847bb5c02159bd13a061645c91efa991fea70360761c45456b21604204c569e95d797195c06267e2fd176f8085ad3dcb6dadc2b881239191f9f3bf1ffe6039f1f1d8d84a9d2876b0a7be5d2e921683a335e37221123cd4b4a73872b6ba4c694b4946dd8ddc95c3e61b9f6c1a3b5b3c3943ef439f27d560d110462d2c2209ed082e706e1092b8ccf57ab098a0b4895628552bb24f4572a360a40a4e2b634a7081e27f412885ac8239e666c61960e36d3d9a7b45d31b0398d80ba9c592db75680ddca8e16c98dde448153c01b3e643deb177c25447f1bbef9a23b9582c744b4837f7060047a9690f2e76727756206770ab65a0dc8fc2c79d5fce3cd0d932ce0fcf0ce82a2da1e23f1e6c099df71692f9d6b73c840de8dcbeac1bf56374728fe33a2f9a8d625d7bd4912c20e762591102e2cbc4bbbde4dd65557d9ded2d6cb889f731ab2ba952f42038f53fbe0b23c326dcc7938b6dc3b1e14a31e90af7c797d65f08ddee4901fbceef05cfeaae79de775e967c99a9c038c24b067164a7b960272d1940401dfef2801575593f82b2420a01220edbe5c2f8b6a0a3675c1dd36ac0976c9c821488d33a61d3238deafa6f17fb809f48e3426dc67eae29baf376e21a074926bd720b35664dfeee174701fc4a1120de19b1a8049eb4b86e2f4b2cd3b43992017e118f29dfc764095ee084d666e30f15e573d177ffb97ebd4be6f1a9ebb244a517e04a09c9a5dc511381c1549403da327dd9975049d399e0b36a9b191846e5347567fa0d1e7b4479fcae393300b3947077a6292995c35a05480a9f53136077ea2728864308343f6ebfdfb7499c5e8cde26dce636f14f28838a9409006707289293db362af4b364f0a0e7e05364d70411960f6772b1f69b1d95132a451cd0cf49a8801033b647cd04d91ef5b588a2b5039a75296e1c2d41a26f2ab7331cbc921f5706a8911e14a252352c487e3f43aff66b01756168c160316634541683ba10e7c2313c4849898231551e10b55722f64ff299288146283ad6c5cf443643de1d9e5908673a8cff356f391e0a984f97842a6abe6fe660f01a759e18279577620793f6deacad26c02b4cf358a4ac89fe432ebe1bbcd12a7d0a24bb7f42375338e9e67eb0fef510774b4cdb0ef3252bb70e6e09ad62fbcc1bd87958f13494af11c5ea70d689c62e136efc2415e6b2253529f08f2abbcc40d4e06b34e4c8526db1f2a52e1bb932d978e1f0ba26432031034f66ad9cb37743ae5079656edf0587f4c213a0b23b16ede4f0e79661c8c387e88f139b4bf13a37ce29edb8b0d97fc012cc22e31b26c59345f7386e450734c9acf42b1c2265794920e944fc8544a2ad8bea7276cf8fae35677fd9654311792c9caa2ad69a74e4bc04211976caa57c02587fe08afe3fb9eece0d0df4863cec75596d541566fc0493cadc2cab6fdf81bcfb19649ddcae8bb49dea1c07f7f352a86f8a4721741a99b202283bbde99503e965ede0829bb52238b851418ac0d3a6599d3bdfccdd01f4933b4542bae34ba9580ace5c71ee267571b057404422a5d146b3fe94c9414563cb31ad42d4fa3ad4d284a536ffcfce7248ad5461acca393a12278e8eeaae3487508466e2bcdfcc34f60c57ea29f1ff3afd3e0b6a186cfbe930ae9dd11b4a7fb0be85e1ea7a9016dd97ae7d25b1d2034c7df5f386b895733d023db59caf5a08c4679c24881404e7dea306b93baa454814054875f920b1fac6eba698e1e162dee8b97af0b1ed99f87fe6beba600876615ad0ca68a6299e7bce41cd56c2636b8cbcaf4be7e49c467db34d0949872856ebc3ff1ce947837ee459446551867bf613e52bf81b395028bece245e0e5aadbf1c30367140832c750343fa87a77bc4548df72a727840aa136d5a0358ef2de5b9deb51fd79c09356f3523d4c1407c984c026809f5d01f2fb219157eb5b610cd7ac90d1934db6f03b21bde5063db268e06ee2d201fd0a692370d9bbf837d78d468511160023d68d94b4227866f9854b66949414436479d2f5fa9cfc1658709c39d2d6fb393c59770f5dd5436440c953875f60990d9ec85a00ac64189096c1b166f08c0d75a8a4eb175199291504c8950a415c2e554ca6d3df409b095d1f7d6d5b15e1fb49f961268d7cafa74c809b75185b1ecce12df98d07676dc399eb4cd702bb4533157152cf55311584eb970aaaa218eb72cca5648d3b3963d800ae3a25e9eeabc984250707a74fd2a233e9289414979e5774c297eb7ff00061da48011174990708d2a4c1df0910ef62c8bf235f18864d1eddc68428ed646cae84f440133d438791720751286869338c4697fd8a7a2d5b53fb48cd8516de451c66b0a72339cb43b41ba27fd37d80d87c3ff8a8626830b407b5a16be091ba1280ad8a4e143b7450a6d4d068fe58ada0bf1954d65060ca25066ddd1f4593c0f1ea6037e13b9be5da0eebfe9b0fe85b8b01da40e0062740631ffdd11f431dfccc2429665b6a80197be0534199774e4d365313bb801850c81d40fee268c31a4c4c48855f2c51ddf40dbc443e1debf436f3065ca21e895e05f07a6e1c1df9c049b83c86cc96397a17cced5a515be8d3436d22f06a1bb31b670755d08b4c9c2b31b401fff1eb70c941a73540375850faa785ca2b8291ecede0eb04e54dea5c37552edb891ba9a7bdebb59be60e72af96c21c909e4df94db8ff77447eca0c9675b2602fd25898e4e71852b21f16096ac5912ee385204b460e201d663bd516cfabc3b5a7a9cf38d96d1977c721b59347cd754421630bde61db12d027da65e24224fbe7e94ea1e61a3aa17e03aa4a5d2626f23c5d47bfd51d557c55f1e75bfa5b2f6385009aeb5fd7950fc652ea9388b0ea5d916e2f340b34886828437d01f16ff9bd4244c798d98a594071af832f1dda3324176199061b0db38222b838ff4fe4c675ecc0feb9bbd24398d3d9310fd2df42390baaf5f105ffc601cb7b23a230262297c015f140337f6a00e5b4360d3df1719dba9c5e122edb1d3ad65b01a795e1a67090c7edc87702b98d8ffcfb8de0a6de67f3057c0008cfdf568b486290bd80134f84a0abc2ac3bf288a23b6ec610a356e15ed517add8716752cf1829e888a28dc0da392567aba517cf83183791a00dce238cb8ca38f5394b758d40219563e3ca91bb22a9030ba95262d781b3eda1128aee5fc1cd7f82289257b196cfd8015cdff6e550156a58beddcf808387ff1493461888b04f44b7601a3c82cf06f342e996edf4003a9e63ecef08335144f877493190773ccd1b560024a4f58b4e800f8bd5e01698e51746f618d057e5a5c537a77b009a2866d24794e65d05172717e8ff6b77943480043edff8266f4a5dd45df4e970bec7febaf06e0f349aed9a7486e5946e924af86b62eb19cb6e3eecbf9f584661fb684cf437c8bc4780af10b8035660c591faccdddc5b261dc5467991721c24775f0581e878172aafe98139c639adc4a18d6d9d986737b8944aaffca28a6284287d17653e3252a0d4a898cd6ec7e5a6351a791f87df0588a4504a94bb08f2cf17416bb13be058c973f107345e6a8712910da63a3f08c393f15d5181089cb234dc0145faa8eb9a97f40a6a3277116c3899369df9bb73b03e58faeb15d280a5a8e7c612f64989bd002a552110711761f21d0832951e42a6869189f5ab5db8bde4e89a4fd8ce75ec0616e9422d8a175b77ef33fb0108a76b52289925133cd05fa04040c0856218219e65ccb10bfc8e6376c12607dfb582ce0aedd23d8de18e0ad8a023c62869c04c4214388ed496c07df5d51810be415872b10b41cd042e26c0c1b8b039625a80a050df8c783ddf30c5209107b973348dde1aef5535cb66298abee4885dccbcd7326faedc45ec743a8ad6161b2c315a9f4697971c0f6b9cbd757468ce21c8e480281e99a3c1986ece2e8812c9af0b07da854cc67011d155e448e4f62a1d3aa5b95f475c3d829fc7226c26451c3a316d460c17fd6465e2b270539e0e853760350495060c465c80f5d81522046cd85809960ca9572c5631628c1865c05b15a715cafb87efb15734ace38f22a3b0e017c091a1fc22cc7e1d52a361548dda47b5926b68edd1a7d937506bb770afe03f183ea74c09617c2eb32ccf2f91ed2d84dde245615a632b3fc9068e25646ed344cdd3c1eb07f03223f61e84590e0eb772cb474f9e4ab8af365694c62692f083b2b4fc3823c748ff90800b641c78d664619444acc9099f8d334dc345e8c5b467d603007a5505540634663583b958073fdc5a4ecb398e04e371cc4fb3ac1d12ee2ea9c0c77655d03cdc4e745ba0f2fa352197602886fd470ea7f4ece177014c21b1502835a73fe2b2e14f1c229d5be1d43fdb3a5979c981eb6ce221e61d11187ed022c1151493fd2e45c31f9ce90e2a4748d2292d116e94aa1f68813ffbf5834374615b71bf6a4f0c29b0096145045654c9205b18a9b957320b50609b4ac3a6afafe10fb5dda01a4e3b2ab5f9a08a0385d8d274bd6f23e2213d19b7ab25836993c60b4923f24033c8d539c1a9e00ed1b5bd4ccede3226688b6c71bf93db698537ff52fb5fcd978b2cd932ec116ea0199b6ba461e2e9395fb6a45455d6740201f46dbaad94c759f58d67d78c2b6de7edf5e106a7e8139c704e4abf47c87c263e75d83717ddb6a428401096f5247f6bd29054b442c43d4df1a01537b7a259a0f2f5be8f994a7dfdf628ed1d17e893d15a3ee5d2f5855acae1fe208586d51d1dceadb8d8b874bb748dbef39de6eb3b6be666dcea56eb57a5fd8a7de21a314c7c36b19459321de35f96801fba0e743ad82fb40caded108a76b67bc1175c8376aeda5b1a7822a24f295b050d2e8225fe68261fbd758c77b7b3508ac3b0666f64e20dab9fbef7b89b789a73ae46dc00136b8d2204125a834acf592e0d20a2c564344990d25147cccfe04b6f5cd77a5d9cc294480a32932769d4810b832c6502117fef48cb9577b215863ca26a9e4e394261772564e96196dd67b10bf68ea13a262ad844e8a23aa63181f40c12cceb6b7a3826e83133252e91543f605d54928d09b68a6fc8412202373626c06d01d18b290822ef8d09011203aeb763a2f31b13729ef31082714cb4d9145c86f13efb7e1713609d31c1af29265cebab0d748d89582e8e5a9366587997146e08a10929c18a9951298c89875163a223030d2b6a6817a8f0fb007dfc26ca1ddb8480c26b5dde0d375e838b7540a208ef02769167a240cf843408b3e8655da29ed5263086bf56cf44663ac299c2918425c0d8b5547b26d6d4f83b6e8fb8de35de26c3615ccb76ab1951e4370ef23516fa5b96fdea50293b0b54abd86b2c2a22bb754b50ec41ab79ff667e9aa0d90b2b5ae29bea4b150b4d7e7bf6cbf45564fe83d55116670e163ee28c49799bdf91cd80998e8788167eb666382f8c706081296869361ee2b1abd47a8250ff533b1f37f85a50f11d5f8722a0ebf93cc970121d02e092118e8fef9a1e51c6fa6c4582a03d6336abfe1de072983995609d25744146535b55ead07fab96e3ee16b5029103ba5deb3cec274e3bb35691ba61e3a571fc446f3af23116372beb7befa256def2ffa42cef3a8e9e9629a37dd4c611285f0eb01c1a11d38abd94bcff39356d53dcba71124fb710509cf92e4ae388fe47e7bfc819de213b5c991ac864c37c5b205b477b5f213b4b7f3fd9e090cf4c4fdcf9729846b685827e2d318bee8dca62695ab76b01c76583663f531beb54865f87689744907619b9228a77c76e11cbe4cfea51687c7da5c861c2666c9cfeb2f555e619a85eb83892381914b235543abe7cfe6eadccd9a6b19f51b4f60ce81620f84cf83753c9b6262bb0d612a51ad779b859f5a7635e7f66b73828919b74a77cbc1e95c5a41ca04b1e9070396d882c8c32239142285c0ef2a996b5f50189786f65c47627f7967dbf3f567808bd036be0c51f9168b3a3c32d306bc79d722f9e336e81c67d5e64bd5ca0b98616a2f01ed8057a1ead4049a9aeda7d50fc2b871ac242c89dd5fa39c916e9e64446d82165beb02af2017408af7f4b002ccb2a04d3dbffe2266207c4765dd4982d197831941b9b807b664702d4381ce62b7bdebd5eba418f6cd5d5a36709b00f3ff719ea5d68e41ddc8989639566dce46e1297902b500f5bdc40c9e80532c7618c9305fa91258c9286644b8864bf996a1b7f6cb97aef47cffe79638d1c7f5abdd2104299f49ff1dce7e5811bd30d37db60646e4b47eafeb04a0ebe029a935252242c47a38ec1a11e98931c14fd94ff03a115024e8c54d84aa2c7b1b6e84f8076770bc8ba49bbfc53deda661800052f2e1b0e3715373087377021f1b0e091189ce1995ec4efb8a0ca696d769279298711766254f501e6c9990fd964463a007dbd7387890a97190c71d22b7f48c94b62976fbae80112c8807d1350d2167d820b29ae5c8d1ca336bc073484c1432aada96c318a14efbb6fda3564506503f7ed159f6fae9411509aa02ea9179d4b628029d27f7e6f96d4ef3f628aff0731ae05a84bfa48244417d1946e396eac0ec2696ac445f5ba9854828952ac1d8493d21a42c93c9517b6c213ab7214c7cd312953b11942b12a829014f81c75b7a08ac6a848ad01005ff512bcb08b2e56993b60ac033159441637244ff4c293765f4b521311f27a228eb528ee8a8a7634e86fd19cde2b8734d81afa0ef9050e1e9f53b39b58b0181a1e0f4deeca5d18469c25f6e55361fc99ef0642879bfe6cfb070671df4f95f6451f5926cd2aeb8efce28fff204a68db90174a335273c58016b04dac8e537a12c165c52b3cd9023e60049abf5796c3841fa5ff7e939b3fbfba97eee9d195ec3b745812e4bf20de82ae1958981e247db796f86e0f8c04164c4184096d714e9720d2af301b6ce2e1cfd9733e802d5a7e8cdc4d09d898ac72196122825ad514b480e9bf2fe9c7331e458a497d4e3e2e66609a05e8414849a97063f20814696c4398b74ab2ee964a04cc6457fbb95de4889711a219ef906d0960a47318bf18984638a2c84c91b8e08110013a1c890d78c228978d86de823752973c60ca50a40219e610e23ac2723cdc0a6164eff0bad84f51f022b7cd0d805b3605a94e2ded4604750a19ff1b37e29f5b91e75746d4f6abc3d8255938ff400a8b46aa8056772d60152e6aa844cbd0c09b891368244fb72bbccadb338d9c1f27f115016215649cb2a3fed24895d4daf21cc736c45b2e525ace529c84461e9318ae34121297792461d34985ec03e89a35b3cdcbd31fbd6291ce2aa79b1385ce4bf357fd14185c4fbb47dad5f813b1acbd6d3ec131fa500ebfb2c25580001845729c5105ff7055714419fdf7494ece5db1f0b232dce0aa00bd8a599003e11a4f1fda07bb3551a0154922d4f4170fe6c43b6bdeec4687ab710c06fbec495cee20181c4a05f1d0344977d7c04cc14287abab5a2723c23b187a480749e0ac62bce7e8d5252bb85a5080af44656724950616b90be3bf5c9f8b8dd2b5fae5557c3b02283bf82f4c5615d21a6d29b54327c31c6769588e771d3cc7fdffafe06d3d630ae8adf47fdad9f49c9ddc7b8bfd2d8f9bc3aa1de0a05753d75f1499613e03abecdbf99f1acf5c1a81ae3ba851e914455fb84180d56144b676431658685f5da096280e1a7aec9ef5e823386fccc4f8df477a03941fa20d56ff1e2483ab6186cb59ab81baa7c8d43bcd37154498b03c6e080fa657a8163f7fbcffc867ee4886eefb89ca305d7c7579514a9f8045a2a6eea4024602a10b1bb371982592e9bfe225434cea4cf8d981a1c8fe002b5de55abf8b371c3eb66af2c7c5895e61921f0456678cbaef0f85273d85000e35630c05e9eac305cd931adb65314a11f1e5adf8f964cfa5540ea857eb19f967aae328d217c8035d596be9cbb3341bc77b1ac1f8bc4af36e7d217b810c0bc1ff72f703974ed5faa258ecfc911b0f6ee371bac059738f9fde288d9a65f41d100643cfb543ffc071885bc805589a04526f0dfd96e3f0de4adae0d57d40c087725a507c9bc1e9747f1295b53d6346c127b720f575eba1d53f1c14ede6daa3eeef16b5887a0a69731e7367595caeeafbef5cb217817726e76418aa92d36f687fe934240cee997d596458b69706af86c1f99c580b52174ced7e9103167b947031781c36e217bc24e9d1cd0047b1fbd19cb98369dddeeaf9c67799a05b8afd58b5f4899de4dc38db4e6ba76cb77d9f9b5d7515c9189575afcd713fa9d17b315a2f1f0610af705bf06e12eff5d67e33af7c7bdf0b1f683f2b4c37c404f55041b5aedffde2ec12d42f9b216f8a2d3ee14f2b7eb814f3e8988a7aa012bb1f5b190427b642acc7c0b2f5cd1932a3e8aa6c85686770e5a977fbc5c579d833c5facdabe6459c39e96d6c3cb2af3bfbdd249aae2ab65ca82836950a2acee94e58f7e601327aff30e4602933de31f2437733372f85f37f7d6ea33c81154d396dcaed669732dcb9b16c028ffe43382a8a7a0490bf0927b824082be32feb29cb966444c1aaaaf55d538f2878effc0ff12ac645607df1b441797cc30d26d16851326f80be70bdd51048ad1c73d15520f5471432ec28c9f65df4766a0ac4af1828a9002bee3ccda5cab0bc27319dba090e4d39ec587628e50a3b157c99a0e71cfecfd4c1c7332e38d96064e79e85034c104ef70c07e7340d99bf06b9b78046456ed65bbc702c1dd849983d3bb299379490ae13a1fb23c73b1577709d1f16b8d9235661b1684ca326e5db43bdd02152abda1d4edbb54ba6b15b0036b5a9067991b995dc349b664a23dfdb6c68282e4f1405813c89135d0f214f85adff8320ff6e712928d49d65cad41dad96e99b13d1afd0d040488531d60ef6a2e1d67218405e703e4aacbef3f5284ebf53de6404a21dfa2c42a3a184462a00beaec4b8a69d72a240cfea84d54344e2155adb0f953107c1563b82957f3dce36b2a601952d8929f119211705260f007dc184b1a70d464e3d64182282f51b3885c0969eefe4628e60567b8d75a4eadfbaeadf805f23f427d6cbf83a746ea9a041c1c3792f62423aaa49eda24cc67724a39ffaf255edc563dfa73a9fb2508fd5f3f54e1da1c7a4684aff9df0654a21688b947f30ec9843371cb7744921d27cd6d3e4395e36ea67968f16b621089b319e5e39df33e7d8b00c3b91eb513591653bce4542ce975038d91f1d81218e55724ead9d8d7d0091354549eabc54651977250dd5f883f6b40c04386b4a8c7db8c0f641093dba760190e4aad8c1f74ace89bac9e19561ca0763b1d3eccd8ddd01973e8aa7e80aa191f0c59928045d1d8cf6fd56a4234d238d50fba3e123a925abc6ec21a123d967ec8fff1f9f5ad43bb6ffe7bdc849fd6db30f20985008c05cad4ab610f91080fb23c0a3c026093958ef4f7098508257bb01cce4d3bd473b0a453f56d9ca7a7d12ab9be707474fdadbfe56d8fa06e2f62deeaa462119aa8b27358763bf731cff5511388829dd72118f787aaceaae436e36f9eae648a7f292f28bdeb6f44760d9e334a3b29920f1c26495745b1389c7d81a47ff12cc4310cd8a2ddc42efaa90c1615b3600be52ade41db1ffdfd677b440bffe53791e7e2b3036f590c201ace9141fbc469fbf6b027903124193d066ac8212199411fd93c5be1ca4354651fd066ebf0697f0080c06685b1b1a07c8049a2e5c06186103af717be9403be690e14b220537f816e0700a00a6b0ac484684ecc8800dc4a67bcae951da0c8752261036c136b6ede17c3f3188910c800522d28fb3913799c546591e3da92890020d2427689edf041c34a22d3312f4ac67875e35a3ec34b4e58d1849bec571252e2c1f6d97711ee08878c1a1d4bce53730b1fab4810804d3078bf6cc732248c4499e732426ee112a2b418a0d78c32f8b0bf8d8ad03902be5cdd5fb8cc06062804e9060653fb8c9549ad5bd27cd85d7724f6eae6794681d2631f1ed0cff543ac95c26c7dd83c8eb4f72ad94c2eb04bdb4eae11f627f197d1fa052a2c69d6c6d906a8c4b5e1c0681a2204c0c6b6b9f6357395d493af8ab98fcaff45ceeb9f98dd4a27322647b3dd3f8d8836e4cfc0b0ecf0af9e79f9021380d8508118d3f7dc0c7c5f9cc54f9043636d612694c8cab930fbf670f0440daa5a81fde6d32989867625fa88820443219428a50e33dd534048bf60c262e3ba2a7e41a8147af89393d57087a7bb70014cb04a17ec279a78dff0bea0fb6be06b6ff7d03418c550698f6e81b8f331e419d63d7ff1378ca315b2f50e075026865144c10d7c1daf1fee5a1cd2988bf82d0a6969b00a3d597f59bb1d089a6c20dd5d211289d3b1c4ee754d3ba94129ffb1951b520f625630c276826fa7e1f84d9dd7f4ed667659449d2894b3bd22693f69736546c427df415c7f0ab7db002bf0be0c4c6500cf2f37b188087f9d302d74560f9a257beeb7e7cd61b7dc44dd84af654152a27b97733e6aa08c998395708644dbfe3a18359aa9c5b9cb4bc9125315f09c5d5e261d0a9388083794243474d393c09ac08251121e3607e42dfbc562700eb7b48c18a36ec701581bd44625517e8ce8fcb0183daea7023a7a268a28f22f6d65da0dfcc7a7798e85256ec6d9adada0fa5ee6a91c55e1f5ef273e6a83a11d009b650ef4aac13fc7758de995a3d10ffc9d717e4b7c47d8dfec8d2ed23b7843454c44633cf0934770012353863e39b5540909100a505bdb0cebbd6fb1c8fcbda9b3edc1b7492dc8e190e181e4e84b1cf4fd62d1838c60c626793f5fd41df21e9d56062a4fa13e76a302a07d508d3fbf3f03d20311cc6efb8318a57c57f93425c81827a93e38249ffad8bd8c1c839112e3f7e99623d4a053c2a0eead53578711f987d6afec74a60faf36854c481847fd0b0f16a45e860db18b2d092a274a06b39749a0dad4ce147ae8c1a9fda44c67731146eb57423e24c0e0db10e4950c5a2544694f496c9d144a0c36dc59fff11d2b1f771281ab0b36f7cfd06a09c77afe9e434054f163350139d815e1bbbe7d3c7c00d6792dff6e5dcc3e3869dd00162315b90387e65f7d1c5e092b2fd5a6c622cf00fde610adc604b8658f0a4e85a05ad7ca69d1a888d278cf032017ae10dbccd3014686cafc1228a5da8e657f6804538430e5724e544b06de4ebb8264ab4298998b2e00493a747780a686e19d1175a1245556d64c9e5dff2063d02aec1545a9f23827fdc5b59932bc0b5b5511c66428c7aa46c88468584c5868bc7f098c76a1810686a365b6d53855a0631b7ed1084c76a1c2d4c8dedbf4b1928fb3ec35ef4e737193c84574dba5975d9ec76f3abd92fa8195ab249226eaf0323c1626264e093fe53861834383ee808ccbf5e95c60545e002e9af84ed4748aed67cf96e7d560d290e7797892878a3a2b0728e9cec113d96e5a5e355f351a9fc30fe045f884a892b7a21a1e8be95b601aa4b48bf5d08142d6d56acd2f3497a3ace05ace637ce977b744ca005ea19cb45ba4df6ed51717e72ebcba74781074ecda64c7377ebd46476828faa799ae2a5a4d8e2d467e81a2ebd6749b7996ea324b2640a09129d2be7c9477b3114fdd9ef7fb32c11207289a049b307726905f6cdb49e551ababcac8081dc37e048dc112f4ca3549f882d3c32074830db2d3ce5d1470a0e3166fb6be9e9e64252a58e8b1e2d4dc850970f47020e232461db97bff2e4a0b720caa6c8c16b249e24d6ecead0908b6da3775361086dd027e34ed1dffdb6f251ce97b1c53ef0f29994a872f23d592c68cca9d9144699760c155cacc764da051e9c4d5251c7a333343f37adcc5d40172e8a7122a4bf73692eb1348fc746e0021f37d0f98189c21837c6e6e387de2bf6ebf24d0a94509861ceef2822fe8f48bb0b6e1a1271f8491247f0e3c8c909382016907928de4d188041e1f24d7a4753156e026a135696deae8cd241ed9666edfa616ad072b9d344e3853a63406c8ee979900d4926982589958ea28638eec710e31d5a75c8b9a4a1f14488b95de9fdc7f5adec41295652405047128a68e56ad571fa0f0e67be3f7e32e0d43a4d7efe1a822bc4f898f67434a104042933ebc2dbae58bd080f4d30d26b4c688daf8c49737de804aa838e33009f01d2b0ed36dfb3088ceeebf3b3c241ccf4780c964f0b372a5f61421bf86fbe939d67f71eb08294baf4f7d94b3c3a0d1a27da91b8e64a811d16853853cda7951ae28826b3075aada988bf423d7d80eaf50718b525ef13d39a62f48618a03614a70a3cac781b75d2509b2f12d8cd1d591241eda12742803aac34ed3f2cfe06f32182e5383564253f06172d641d0b9700861d8d6fe4c7758153a496be1ebf8309f3160028e977badcfc32d0202b75c63a7389aca7f287cfd98b7558cdc9774123dc14b9b863013c3d25d7616a3d6dfb3b9f1edef8e0fda4e42df93dbf92f1ab65103073684c03b1b063405bfa0297729e07b9ddd957ad107be9cd73516f5725280dabe775f1bb260e1c670a4b148dfb016f7e275bc3be534f6ee434fbb16ee4143f4d30639dc707f5c2013fa65ca9ce869849a4f091d60ff4539f2bbcb66aa442c3343f2ad56aaefacdbc31fd37df947fa06ab3839bd19cb6a570b50a09c2b5ea56aa71784f002b354bd9a39b2a067272c31cbfee0b4d4289c167884860967c151110b7cddc712d8c76ea3bfd67fdb5feaefe7c88918217bda6023e344d44cccbddc8d4f665e31de248bb8f9b79135989bf394ad26808e5808f6a7728b367baafea3d821de1d0d97f6cc621ef5104d03b90675b43cc43ed68556573c7dc0d1f2274c483b78cf59838e21978c2596830a00957da8828edf6e329bb78260f888aac06a29903c9775bf7f8b25ec9bcd52a9be9733658e063dc1c24acdec9dc7e8346c27e9711a4b4618673622e4f03256ce29c95b28a1ca08ac280884407403ad3fa5ecc845394ff1eb402fe0285e8ceb3360351d532e4be0523bf08ffbb0b6079e2961cff9ae09781bd84a65772258dbe822980de4758ecdfa1d154d6f6207c42fb2fd295001055835c54e6ca20340e8d01cebb62551d8ffa23f29a6bfe43ca184d538f66df3f3d35df1694ea3437d3372132a54728e2106102fd5409f6cbac06cdce54fc682cf745fc74161995e7de038a16f5c3b8456748bc8f8fd643eda62b8134c0376e19bfbeed2648fa1494ad62f53e481c61d669aa5b70ddfa3dd497a2f7dd0805f840253b12425dbaa8fb279d8577f44416c49ab3572cd14bc814d3f3275d4a4b11d996037ae08f83a7a23f1654f28c0a747c70326bf1306b9a611fd0ad8db8aadb5764f70b22e89274e780b99dfa9d8aa049bce9425ceaf6ff45a46db9088b952e940d143ec9907eef20bec2bdf0ccc2a69ce1c7e16445265362f02eec9662a615e6b06cc7f108c1a027e4f43bd6ddea7a50b272a1b09167a85ab95d1e60f435621ffd52a3376ffb563fdbdd43db9d95f781c89163853622f1a9ee351efb4bb156798bd6916f2dc84bac078211dcdaa76250d908d6c24c882f74acfa29d632d7e017f2626c33dd14e269b505204bf4f21a8de34db646b99eccb89d1bfb53eef159f5ab516d5b220514c2fd12327d3c9594f0b5fa1e75f67f84468b376ce16cde152cf88ddfb36f02e3c191d32dd36cd367d80ccb3090185b8b5b30857cc8139689827ee4787f0e24321bcdc1dafd03016491873eccb22884123e9af8d7c6844eda8ea78bb1934d1abd397cfecaa08b81cdeb502010b4453b0746538b5f881de70f62a5b21c3051f9934b869ae1d02113e4999da2387c6ecde4e5f5c2be4025c378e57e9defbe024bb0685c78896eef09c9fce3c99c3105979c0161b5c0835285cd0d3aba8cb5ded1896be3eecc00b8c92a45f8ce116cdf294f2cabbbc5847bceb1568d950bdb7230fd1387f00ac4776f19d88335a41f7fa4e12a875a4093c5ef38f475e8ea56ce69c7fc167c80ab92802f5201e7fe02fe0513ef3919bdfc1f502f9ff3f374f757fb8e0c471d5030989213940047df3d0e2c87fbe884f774d861140754e33f35cd6b6be572e506ed6206834f01fbe8278356cd2699ed25994b6158555d4566efe9bd260428b6560bdcae9b6ee03f5705404520e433fdeb6265d09c8895c1a1c2183412de59936dd967c5599391ee0e4248758dedbda18eddb019d2d331fd443587cef6c196c39bcdb8d7fd00f57e54efce160ca39edb863ff6d49bccb55b681f18c61faf8d8e6c428ce0a8bc94127eb8059f4cb4d2e2e4de59bfb8864b89c5f8055844a1ac06f71dfa4e5fbb1100a7f939138216188c8ace0c15d4d3b191a1e4270ca81fe012db28a1bb21ed9881f25bd6f2928516c800a709b68022f23e7cf31a7d132d1a441148daabc613d4bb56b9bb9275c0f8dc2e45f051fe66bb542e9399b703e2ae632ae623bfe936f732e05e31fe96fe2ad4582617372545dae2c361c340f60d0de3c3c78679ec0b8d201f6a28ccc40fd964c0aee563f19e02f33a010f2e9fc0f8603f7bf0defcce8866c46b529e980fb560a961033da36071e283f7fd9abbcff952a58ab6c3f34ede726035b3ac7c922d0ca7cc9613dbb0a47b3c7b4c0af42d8b98ec61dd8f3f65e6d47dc6d9c9b622ad86e7bc679a2b520d9ef413517b1d8dde739ebf0a50dcef8d1b157a1fb878ababde01f636528be7fcf8177877fe41d837c99d3cd07b025ebce38c107f52a3c300d6adbde7305513fa82d0c964ca85c829281e525fd40231c98afe1b58a8229232151bf64a98d57fefb036d71b13a740f7544bb399236c6d3b20b7780357a45b115d30f38069f2f066b92b8236cdecbd384408b615a9dae783f034f06af057864a2780c0c0ed79bb877f54cb048de750eb7635ea1192270a99d479b42ad2d65f5270d0ebb5394f8cc38fe8dfd34778803096975a644bb6992e1e0113645396ac5a293757935e80c1694b4e3481023c437dcbb6cb6c69c43b688e1d4bc9068a4080d174151957f2bd3860cdd2fd3e2fd53ff4b3c9dc4b87267884c2c63e05603f10c47ae77223bee8a07ef5f938e4289bbbc29b9e4ab0026ac08b6b934ad74b7dfc700bd3570819768bb08d85af3887dd4c61523f383f807c90ec17889593df1d7502afe0f4582cc09ddf428c7e2872f35a03312a60d63aa71dd3e11a736f866c920aa087939d01486ffc52ae80c53111653c3bef43a315aec73f4c43986b33d98837bc93fd135dfd71a882ae83be416667632bb249ebd7ca07ee07d064ce8b6415776fe8722abe81104a1529cdaf05053a5978207dffc36b7660c643ecca13c5c813763062210d06493451c0b0cda45d4076b94bdc610d5929ca9ca99f21e23006fe2e5f0735d99b3b3d1a3c55b191db6fb0300e883cfee8fe00046bac8f24eafe4b36f6137cacb030af2b6cbf1e64fe13486885ed322d18b9d1c0964dbf637c41c9046d05b95316fab06d8c0ec92f94df134b5a87bc8801209b41b15fb7746e2ff3615fe40828bb50edcbed454272281306e74fa17b9ab456d484db2ca403d4217e52f43f35703e33f0a628b3808c64fd52192ecf66188a120e0160b02aa54cd437b6358111d328cf467b07db30c94a407c503d95b12d76deb6aee9ffeec9c08211c2c92a63c5c92902e3145a0a51b318775265342c69b7e22e5171af0629e2b50c73780da594218bf836df8c2ca198677388ea5719e6191fb68d2321b56a322ffdd1fa63239ea3e2d9f3a39736538b76e72e37e1f133190dbd64ad740ac1515d4d6e39c3218313419695acc1663d70ed80ef33fbad7bb4f0b7e2be8ad14f207a2fb796d3c0698aa4e311526a25a79fafae3ada367ced5ce2c45b4d866fbb3eea7dff9f2e39eedfc0b0b1199988fbef41ecfbe366786ba9f76be4e0fd33a219d1a403b163630c218627f0aa6b1837f730116ac2474df1afee36f6a8bc787423e8523f057042b21df3aed436c88c740111d308e558dc43c285f5cba99f63aa5734d09897ef1814d10fa9270b03e5c8d9cd897f1485f74ab230008c9c49ef2cce4ab04a4023bbdd8143587e48257a53cc88f6686150d3561eef13cd6cbd771b089bb705ccaff96299c41b6a5cbea944ca8259f43bac929d7106f4d133642d19333df0d1b453cb22df14e4d267b15627ce58d86363e58d0bae179823bfe19acc9965a09f9645db9638aba1e1f3308bf4d94275dbba9883c80be9a7ff9aa16440a3bdd93f75e1f5994fda3c934904ff1a12847de9c2c9cd5b25d5b98ac9b32f817743fa4766eb3f11bce980824baea18f8ac0ca54ba05785a90a20a5f6a4b85befe72743333f450b8d674d6365b70e63866dd7fd9626568ee5602335ff0dcaf3f27a0d0044f77372e88f33abc8f37ce5398a1b0f1d08fe182fa1ab9676172236a1a0acd5b64dc3736c1388e72babb59c91a050249385637c8330cfda60e1515c76fed2a6ecc72a28279f019ccbb182588eed10a5686aedbbc4603aac808b0850fb03aa45ac09c837eb22ccf792c1ca05f195e0fdf9fafe3f24ecbfb1f945df82b4b6142ff07951934993b061d3e3256080f7777d04e032b16824b0ebefc9869106d0082c71ba565446a194600321bd609bc3da11ee8f06c63ebe4150b58506aecef918da21eef30f47a74c192cfeea2dff70b6215bbc1554cfdcd3a4926c149d5c9b88861416506e9252e82c713651b0e07d99d3de6176b4a71c5fb9c211e6113d6292a302468792dc8bd4a719b4f187136b75fb214f87931c9966f31db664911e228db37cd7a99030a9e135e05f5ef8f0a2abffaae220751cab9fc7540124f9a6e92995be86bd43cf649a4184b781516a11231cdf4966e6c05c63a1251aeb664c5a4a54df6ed159a9840e7eb7550fcbdc1c754fcd51423bbb79584d72de44bb6893f51265c4ecc5aa11dfcae2b32638f68ccfd485b868230c86d2236dcd7118f248e82fbf0b2d2714818fd5d446383d26960993eac28aa55fb80cf243ba594b3a855081f2e75e0936c83212006261e7a7bb69af83fd7571e859c07d8f6777d4ba4f8f97a961224d11051cba8050bd3d71a16534251b8e89416a2ac3e75001e4121a4a53a9014f72dbfd264bab71904a1a59f7e8806ae52787ec288137a295b85d16ecefcc6ad1ab54b4b34dd263410fb58bddd2b5ca236f4b324cb0a3ad688c04e2a3ccb8490724f18159990f9d61d6b5ff262b5ad64427e77b6f384842a88077a34b10eca800c969f4597c03174a39e5edee84d4e6806b8ceae48b2ccfb22745e04b5ac19b5734c116e0cdbd8480d96bce5817d3fd0fdd1d200540660c51b2d4c2b54af463a27c16164852fcfbb8d50c5357d58da511fe85f588854bd7f7cd8f4d41f457c6d1ace3f80098ff873f35bb870c4a781ac5faf2728f7aba3580c8149cb78fba880a065aea41352ccec16392bfa7aa1386b1c2461bf47ba9fd9b88cab158f895474e1868e6832a7f3181d766735d87ce3ca6e0bd991e12d48a168065a05e276040c5a77eb8a1302784c61fe2e499efcbee8f3db81daba8900298f73e920cedc463cd85eaa4b16b57228ac2e2fe7bd8e0be41b55e2c4a418dcc4dec26a8f43bdf92061a91ab16059ae702175ca105bc433ef508f565584d3132f8003508e01dc35be8a7976c8d12885f7cb07a25e16b729ccaf7a07f45c1f64c8a788ae64df40d9ae187223c1fd0d2638e4ade08a0f84cbb61418855839867d2e41fa2b983f267a84f5b938838b143b21041a06a60f891936d83b5dfcbce19f252a3a23f170cfedb8e47e31cbd39d83685c02ce2e7c862269dbd7a20664db4239425d4c440432f6edf19bc14acbdb6d062e048757a06058e9f71f2f4da6d6650a8c793a9e4e41f5605ec8a5ee99b3bd2dabdc5a96f26d591a1a95c283348efe6518f9cf6e0b4ae4f087132eb4b0c24788cd8997d6946042f61018aaad9e1a8ea2764628e3c89ea1e13cc1bd8d51cdc38f99a51f3728d825f7e30448587b179b17b8ed07a804361811bb2051c09525b427b955598611f8954c31ce9473594e17c0bf3a80169797be3538f10fa1dbaf57c02e63e01db5f1873b006c86d3f0d877444fdf06ea00d1e61df409b64e602aed675f3a0aa884f1182ab1b1583fcc110af86ecda02e1fb0005e6aa874a0fe9016016d4bcc4eea4ea1f07f1cc4e70219d04d708cdca301312b420b345998b385aa131d158a4128180af7451bf1002bd0a6045c2bff39b7cc92e8e2590b86a6a75452f8d593c51685011efc44c9ef697fedf369621b1618e0ec80e3034919bdcdb793d9590ed058036e19c7dbf2216cb4f637c77eccd82a001c7bc8315280a2263db6dafc3da712764b068101bf7815bd3a976f6a71369d084706e1c56bea1d4950fa18304aae3cdfb51171cba6c69faff9b0e97639ac8e0fac69fe304bbd4f57d4626c493cd809305db98d9c3c0411d25dd8d7b8771f89ee62b5211e0e8594b50f8f099f313d7792189e3b3158ce9d1a30483106126a9f8a2f29f5f0292b0f5a4dde1added2968a7446dd73a935d90565a2448fc922f86482be4a5be5de21fd550e66feb41a1834064577750417b8890c8a08c1cda9139be685ede5e68c6da729fcf1c75871c6fe78b248087d711284e4ebe86f2ee0d022d3131d9c7eb6e0b52c639030ffc74d5113d1c27cf8ab5174e8bc1709685e1143f6de19bcecbfe9d4b9b06a80288c4b86be7131240444f8339cb479e96a6063b448d0da7f9691e42ca1728b40d672372e9f9c89888eafee00646745f8f610fd9e7e17cb4e1b8cf41f9f3d99bcca253efac6992ea868b9c5d812411f87541d6cfd1049de6f9bb37c9c020dca09e4a3d103e402b4e4295b2e2c4a02f373e372dff9563aa2289699dc04b4820524ae423c190ab8a180f2ef47b8907fb1b4dff4fbd55cf87622c20ed57602d068b19c58a754bc20dc53f610e70ffc4bff8a6766bd884c2071d6e18f191a9cfb283e4846711a2f34a088d062633f78e78db724a3ad1c5e8ad71f5263f13212b59d0384f125eaab42ff6f103281fc8287c706fdc9d83fddf411e5ef43b2ea59ef72d91fa78c5406b8b37d17f1406a1fccd2b743e6ade897f9943e3221302e377107b2ddd885cff84785d88acbdb5927d0db48f42dcc51b95c72c5666a51495f0246ca80cfc39778dadb6f018a5ade1396600ca2b0554273760e3f486620a8438a2b74594e31494ee6be1a238853582e6280f359c56d0e283d85629958dfa4fd24138a9c9d1b29f7562a64a3b1e1c75f2edb22c4bfbd9370385d3684e4c4277fa81687c3ed87de0ae2cb10c7807872ed533f06cb55c89ac0ada4bb12552073d9b2656105b91f6286e49caa1cbaee4954455d4ba0a6d9632e8d969b132590ab59762c3a50e6c764dae20b782e655d492d443cb564b2b292291e3d67b10075cef950c09e9f2a8660bf68bc45bfd59d23e3225aa0d41f7d650db80b059d5155f03a7c97ca229c05b1579497871791982f4a5ef872414d844e930ba6404cc3c982dfe89c8580a3acad2baf0a2a4bbf36f1e5de08b11c68a92ced740dd9e28f1901d4c638d151655a2059e2f3b24748ce3a1f7dc31ac652bbc12acb061dbf397d30b735a98a974d1c7dfc73de98ac6bcbe951801cc192fd21b6a00417dfd583af0c56cb949850737cf0ea5a41d898a9607db790d449a7758b5de9775408c7b8af72227f72a8181e473693d822ea5bc76e602909ba2a63376e24235f723725db4166f7d1b426dfc9e938285d1bca74db05d4e5c25006d50618fdef1f84260999f72d1a72a8f4ccb8292edc979dc8473a753964914592ce78ff0241ee0368ab72e3ef620dca28e34e5a548eb5286e996fd8d2d3ce262c852f8f38ff16cea9128d522a696f8db628825bbb67dfc81f65376784e9fc70e4b595c4d49b7b7a6ace42d53b3275f1f697ccf65f2d92bd54c3d51f3e0de6370be9b102b43465eca552e263fb908083dd5c2003c8b93beb646e30a6b0426fd2e57716f1085010b7c94794b35d1d7200c044d9f404c9976cae75ebb86908b1c9436eee1073e76e84f91f6f24a0d99492d0be60360ebdb15f81476633aad722992c1ebb27a64801a6bc7800b74e8b9adffdb6379e1dbb561acc545242bf4986266a1bb43e49c90bbbaabe40aae019fd11782c99e8842c6449b46e9d1d569e833a474c389ef797af41a52ac0fc904770d49123de43dcabbe82f04aeb171352e9c2b26dd13ab47928804a2f91e521e81a266ee53ee1c485629dbf6035856e796ffae290433dfea77cc40a7a750c7d55c9bb1e2ac5f98110acbff935ae41d3bbdbc45abcef34b013ca1522f914d181c5460763810bb20577f3fa3a860e9230e3a82473d23b7bd04b0e18d14f71307ee01cdbc1ca5e8590b8f20e85f44c6e7eb110e7c3a74e145fac2b72e9292a9c874b18ed018cd008a97dd167acd9673ef5325dd03af6a9b1d7b434a5565d091ac0ec5c8761d7bc4c339be5487e3861d142afcb387c9fe62f0d8a680333764121cc4f5ab35b83dfa786e5fca1c5f3429f2c5109fb90a7b0d8cdb033ec0692f00cfb98ef0b58455989c96a518d911916c3953fdbd6fde1067a033ce23b229412363d3cb41a7af6b0aacad8ac4bc11722be21b544093af31c31f826368aa490784ae703cd77c454e39213a6e5440be34db02e1dc400701cac5de25d14d278d99c0e6a075f4591cf01efb46508d67e7f654eccc75377d70403712ac73541166f0ff2489a8ad2992d8eea7edb7e11194de41343aecd6809baa8d44232fdc574890421207c7ef5b6ce4c600de75c2193d5b40aaab91476b9a618a9299d8ed66155692b161492a5e8aae5a91b4af4620dfa559f385f2cce5da86cb0778ed2e939ba19790a7c2305c69fc28cbc123862c38130ae5706cfd8455d3a300bfce46a5ff9559134cd389619b39f6b544c378a6810bec82609e3b420bc7df836872ad6037e47248c8c6661ee21f412594418280020339ae32cfc0e1f46dd23f486ae02deeb7647a47e92bb7c0f7fe184b438604c6a7919350642fcc57461b29c37713bcb1d26bff8e61f873fef8cb1c1620a18a20641f98af8c6223d7397cd4951d7e6aa29c7efcb8ea6e7cbffaff445ec3866703ee63ad96c5b17feb5f6dde75b866e33dffb53e184a2dd918b15980e490e37d0e3d2d2214bad404987148cecee746f094bcc43131ae7e6d375ad47ef8c1f7beaffa485e52f6d04750f08968510c1b0f694cb9840499c2173bb0a6dab775436124b8dfdde693a389cc85654c1f76d5e609b06c18910d5c710d5a7130ee974176cd44346500d35cb9be7c9fb7aeb5a1cbcab526e0ed6bedec8e3e631669d0c9a321dc8ce09b5b5ddcc89156f84bee4f2bed4cb8e003bd36771adf029f4c403ece5a0c234a7fdfb0d61f78b8f95485eca371e7f0efe596c4a953eb7bc31bd746bdfe7e8db9a26f3f971055bfac8d5e1c78fbedabf7dafb68ef3516e8eee3ddd06ead047110339e6da042b867e27b82893b70010908ca4750cef60dd2c89384aadef407f76882bd7d3408af443decfdf85f375101036c025ced1d52023c0afd9e4188353ee55719602c6dcc7df892712b5faef83f677f7cbc7576ffbeb3de081241f404936ffc78dc32e5388f29827ccb80d2cc39c602a4a5812b90eee76001e43b3158aa020cec0865c82740db5b740420d6111d732499cebbcf836285bffab4e719ce29c22ba3d5221bad923ba0088f3eec1083e8919ec622d19ea882d89fb9f352e349fa36ec16a63c5bad7049a560414cb25131e0a6b3ecf24a87300a1636f6f00731a779267fb58e77375a83b0b0c8f9123adf9216cb89ec903de4e1e40b2b875bc42c1746e6e4bde59dbc134b6fe2de5d23ef0b979e987e80f74356139d7b5a4433611452fa4fb8390db39758a3774f23ff071698b8fe806eabac270af7d31889c582d87cd48e4488074934f5b81f164e4acfd0bbd0ebf2c2fbe3c3434b4920306112a262b7ec01907bcf34e8c974192b421e85d5c004e47153111f4188217b03e26ebf7b906cc8ae61f445e12d3311c1a6fc249a750723e71c4192feb0ccdad0dac109f0aacd2d67651194969a85e6d05b804e36716dfad171903c1f84fe239c1dcf4c285f521edb2d8d17f2887d5550511e83f0657680c6e4ab4c2589cd991b5d306c73f3c90eeae55bc9c0b6b873647ad53d767ce3522847f9f8b21cc129595688e7ef7b12b6128778201876f735a2fb603af7adf95d26afdcaff059cb42dac601bfd7bba1e0bfbb54f9ec80f41ead7bd5d9aa36e82a6e52c3e4aeddd2d8ac1687fcfd83283f9544c61d7e3d2536bd8d9247a07cb8f9137b8a1c1970f1b7caf5e64b981b1aaf9ccd5b777557f1345c3be85e372711a3f045ba3af8d733a9561e63d2a00b088e1924057446d3bed82cb193f521e438a014cbe02ebc734b69c1c439040bfab8e84ff309cade4a080d9b162c9ed8a7239d13066f4ad6cce07fa54967058768e38eddabfbca6bb7642ba6ded3a0b1cb5845cef86d4462bdbac38fa094827019fa05544806171b289394a3ed7667d22d1145ce1b6c25dd9b2f1c080377fd72c1413c8110046bb54e2329989c67c6fd7ccd6cb55b7a2e2c5354eed59c853440ad328b907027c2e2a6d20e2211a2d2cf2e7c351c1a0023242e63ddbfa5cfacb8059fd8bc8b2da719b5a95ff15de0f00b7d7fa3ede4f99e0b705625513d87484bc57c34f563f58e189a23a111845e4cb590669d09191d599bee7f2c5053f71e73a204e4ccc43fcae75ba678dc13401189f074996a60538361bd97cc40746a90832ffefd1cdcb110a9946b6872df2e5e3082961c93f399690123be04901ee7f817f41a7647a975001982a11fe571e396da1fb63aaeffb5d52637d6805b637d5e64af78ad96f38cc21aa5465ec3f00fcfe879df035275d0fc2ff463a157284718e5b1acc7ff00125315cc44348a7003e0bc25dc5331b65dfb03ba19dab8d6e4cd42524ca421952e6a40c6ba8ee8056b2c899857c0ae1f8b809f4a0922c4ce26f4a39ba23cfc66d0124afc700a5397ba7f075d419f652c0d56ffc0f9f0b0bac15dcea99b9132838449726b2b44c718e5e44c508bff9965d8e93fa552a2165a7006f0862da8b48b43f3270403e9deac8d9d6bfce7582ee1a85e4157606299c0fa20b411f5bc30f71951cbe158660c840eee2f780500a454b05dd5cb44c0afe75c65e8268b44ea035f691dd3a8e1ec94d3f050fc32bb29b952449d029993a15451d09a63423463c1fbe87e2a62b86537bb099693e6e132dfdc9f26bee10a90ce0eb7178e0f3d649a7a68d41c73eea1a05e6e321a15a60ca2a60e620175cfa522031ae0a2a6a07206eb985134ddd2e2c57ba8522443db1e536a56bc308102c3773ed1e00f7452af437dec3591381b05c10125d6665be00a0f9e265ea239e541d41174e3259530aa0a7fd1124337025c5a31a4510a2c98de039cf62934ca6344bb860dc5ed3c748e472e64d82ea0daa3aa06a29d058132fb7d90c7bca0d1fc5a0a5b4ce4b882776fdb396012cfa2c2a9804219198b5a8625ae83a21df22ac570496216c9aaeb79a35461fec6acab9a761698e2d7db2a808e2ae52f71984f14d8a3822743eb6320f0455533b7b71b27189cc43b1b906bdba69962c9a896a96ee35ab27f53967b2a9731dea0c7e603394ebdb3067268cb16465a898359f9633efce0873ff6f10f7dec631ffcf0873ef6d1877efc631ffae0433ffed1877df4b11ffe4066cb5c668edc9aba3ab981fae2df61fd3b28725260520ccfe8ffce1f95b65643abf9bbe6675dd62286462be1b1b6d8b84404acc6102998839a574b09ab1e3be89170afd575df3741ea7de72cf8ba1fe6d623d9d0e006840689b4ecdf152755dd86bba15e4f0174c0a27286376242bf40d1eb3557033fcc2064e0b5ae532989d09f0027043c42e961d7a03e1ce2484a7f80df88a8cb9dce73f2e00f04fd4d56862f91e0cf2283a0c6ae57a750d095b1e71870842d9b664baf73a9ccc4b5f3058600df29ed18f7699ecf4905cda724ea197997ec9f2a5af1c5e1a29d662bedb1eba47592a52d3c34acda6b6ec43afaae5a0f52b4e28bc3453bcd56da63d749eb244b5b786858b5d7dc8875f45db51ea468c5710302c741c384f0398f98a2093e14748cc1e793324a01e6bacb8522a7beaf921af385c2adefb9273b1006f890c206ead7ee24aff3767ca1037a21a1ec938506ec936a7000c737b950cb0842d6798ae216c2029672fb680b7ce6d03d162d20c3c39c9fd605025d0546ba575d5b0a5a1f455434ca701bcd7cc1779b359e762b984f75870c17c9f10cbafb1e07ea39ea251e76868783b0fcafd657220b2c9a3018fb0bcba0efaaa301f619824549a9816153a4ec862d2eb0ea533c45546ed60a6055e739515a4d167a08e41ca3cb6b430c171bb4685505742531a78574d0c86cec2a002983feafb76c8cb10dfbd348a3f70a58799b43d786dced6165ba3b84932e92e4128886687c0a49f23cc37d8724be0e3b88f73bd7a24c6755d31a6cacd155b81c0a5ea83325b2faec0eb4e6cb3d964753708154ea8928e6ab30d9b02125228511c91743773ecea6e62704d47fcd712f28984af7daab77f8aa7d81e2a3bd7864642263e00f9afdbd14eb0cca9ced32e7ceae1613f43991bcd4de9fe62d6f2c65e2d0fe1a26e300ddc89de851079aa961ecac7f094f43442fd63606f00d6fcd9bff693ba292faa89d0fd8099f427b17b8482315082ec5c6612967a6c13dbd1f267dbeb1d394531c6e6d6be593f645dd3a7905e728b5cc512783cc5001b97d2f0ea6bcc25550ff3888c0225b996a086881397b38702065633bd5bf4e54023ab6a001eb56210577c4b3cbda968644cb0c6a769ea828ac902a56f069c1e4ff9821fac6c3dc40710b825f28b9f40fb933d799ad96aaf231e9f192ffde667576c3a958b03206d72afb113b12ebec86810fd1643c7b57d0ba4a74f2b61bb032f750d804613947a37ca6365c0ef4e44d3291cfe2e53a484e6b9c8bc80e517d7b4c0f50eaae659abd7d42976a4adb133c0b5e76b6317921b593579322035d250d541687ccc2800e1d4ad5066cb244dcce73898be2b1cfb5e8a88ecd3282005a6d95140936df61cf0e4177a80100412423c63370fbfffb062d505811a8203b5049ca9e3ed4bb878383a8eea3ae687f3ba3af36c22bbdbaa0ce79ab5fdd65c6e0c0935212923d22b1f2b969c4b8301bf6f417d664338ec405679870e4e69d5a53d05066c6b49f8235e71348dd6b980d7a4633946843ad563df6d59293f90d166017bdd41ce7a777df967028e0b0eabd16ede5d4abf4142141eb4034841da0a2d0a786c810dde91d24f8765ae8eb1df41d8f3a4bd6197436bad7a155258022d29b044408a3374b451956c289d41d728b9fa15edf814a7bf11fb5b8ed5d3cb628d00f9de52c6093f6bd10a143b5f48692f0f756f86e4ce81db407a42ea570eaca823c0957acd7152e4562c134a26438003c10e49e1919ed4fef20f6cac1d50730604455d3fb817fd022013f13fa885cf96c3a57f751e28c9c1f5d84e8a122732939b2e024fbb1afa9f03a01e944d094fb544a364d964ce7e9d688e2acbca00b5ba14dfdc009d332b10c5852ab9b4c061b3f345410d34a85a24b0bc63a4397c9ef3b8a94109b18bf8e46610a8a3ac2dec97b4b58a55be95d75ba07c220b7446852dcabebaf2960e5fd7946350a83a013027a5fdfe2696bf7dafbad8ae289f182bb6b09554026245ab1d8ec935bc002cf946948ce6a5cea83388627a2a07c0caed3e458bf11aa2cf172ea17e0a73a89208c1ca541faddd21cf31e485e72fbf0ebe1848265a5c08014c016f44c3acd69190e10fe4fd1395e6918d5dcc1708225945937846f0954825c723a2a1244ad8bbb4bce7dd3bd00dee372da4c2808e471946fed966151f89ee77a1c08343dd335e13a72a6cf4960ab0edd56834a5d46fe754010926e123439cf3635c33ca7faadfa17ed8f9c01ba139d156033a7d6c54944893ec455cade44778276d1dc8cee0445a4a9d9068b71baaccc34a735d6cde6d9c749994cbbaef5c34df5e4e6b8b6a8d4a8c975416d4c5bc4d7f666fb2d3ea0bb332835b208beef164160b902125c033356d4c882c5b034ade3d922175927a686a4871200f53c1bb644d243263288a3afda4d939edcedc2745689ead178a08017e11aec51c26002375bc1f6fe6dd86ad5c05d6a1c4d5273b41e0c15ae86c66403bf403bb32694c14f0d2eec56dca3618732103af6ece875affdda22bb5135729c85986e11fb61840d05701cfcd2ed536f974053bcf3bf2b57a857d92df84b5235e1ef708199914a16e2fd6673f06de6be4491afb4949f9bd8051240ff0c21fd3c72567a621579871b960abdb0f5b5dbea564354cb32dd2f2352491d9e7cef97b9e87e4b2af99648f4b14cbdacca5a61fcc14bd01d4a1007551bc82503bafd1a6027913c572a791ff9c2df12671363916326937e0fd388c65e890338dc060af56efd421b439ffe1c4ae5b39a5e4950a4ef1f41d3c6ae0944d1435da1f0bb1bb07ff2951453494b8772d425a07f5e1808bc7273baedf3d2b3fc1437c9f1d9a6e8f3f4548d5151473f961757cd7a0299b05654e01d67f000d89083d89cdc145238d0e9cb2910a12cb5777b7b7ef0e5e081120621a0c6a6720d2edc614ed123833577a1221e6c632d108f71881392553580190917a5cc164790a29b7e43d8a5718139725c950d1192cec9a652d95b9841a974e0b254210dad0e5d23ebb85dc8e8bd4798a2857181900282f9f47d32c151f9b2168c8553df2e11729dd855575fd0a23f252fd59f616dbf6e1e4348acf14bc3b57fcceaa97961763bb8b64564c47257c32473abb414ab9ff1957dbb4ffd237728a5a57396987c7234f1ce7a6ff78914050b9ac2f2a29566fbae727fb7864f9601a8da1b924069b60b9e7a5febcd96e4016ef21104c52d541dd5bf9fb90fff728fb5a3810eab1a639701392db7ffb2092b32b5a995529293cdfbae40d22a1eee2be1d2839956edf41827d8e259d1796c5e0ee8d8fca9b43fcdd39e8d9820837ce69c406f3dfacc87c7e6920b476222868ecdb18f0f51c691b43936a77fa8bfd7bb4f4921707a98a03e26c20c0806ca04c38899ddd79a1ffeb06969a20f769717de3d3ed092b8c3e62b69fecfd58109692ee5028476055e53c4520d56301e55493a293862b84fca89616c05cc8aa1b9f904946e2e6d078cb5247007a50c8dc6c161e90caa670841016015ed4087dd695874ffea005bcbcb01593fa2e41c9dcdcce3d5a9a39b6dddb111425adb84ec2de5de01ed0c450d780d2d7e595ce546f40ca9b2526f39abb6d4abd9582f0f8dd2b7e0de5bd1daf248e9e753f5927cb4aaf2d06c2ae5b3de684f251e5016d547db54caafd38d1dfd68537547ca533cb4cb43b3a6b3d4be8ae92af5c220d2425a77989efae9bce5489d6ea4ed2d09691bd6b8f2c8c937829007ca76731740595877c4a7b20c9a6a843063d88263f58a9f455a5db80badcb559a8b8f1592e0746a951c5844cab14ec1328bd5947a6f6cca312efe61316291a6312e3e8563390dbf68134fdc4a732af2304745e59009cbc8abbc5988cda0a6c249b8e1c82c9db649f7d1369e3af669588a16df14c0c34975b278a8a9f78a72134bada40e4f39d323078f71f1fa9392899d3fd99c0eb9938905aa40b8d9883761f5f2b83a521eb947779c4e6953155aef057fd9a47ee2ee8d89bbb1292e07b4f329dc45d97b1dba581af4badc6c5c6850edd766033efbb5e1403581b219534ec2b3805781a76195c3d7bb82048bb3dce55dafeab1b2905039ac343b9a4061ef633f1d7271befb2df02af02c9e83be8f713ceca9aab0c3a71e55d853dea64bada95e1e5685d554bd3c78d83e5dd3b7480f23f6840b9b811b6b3a7651a7aa82c7de18773ae5aee9d7e57604cbe9e56604b42c3f55ed19063704407b7a36358ca37f1b0260e581b2a7c324587eaa3b584eeb8e96370fd465a9b1b6e498385aea5ba93edab2787cd7fba2aafa68abf278b821a182048b7a6114161e6bd826783af656818f10eb9f4cf546d8305e5750084f2f9be361537ee22eb4a7f766d3d2d855cea5babb538e716c3babd229159594ca5b3095b3a8d4cb03d5559ee29029dceb192358a8fc612c544e370337280ca328ab7294699ed2f7b31b2a75e527ee763a2c86b9b050b9a8388ab22ef6f4d48b3d3d45957296963f977a52d5eb6244a752ea89435d25e5a5af60984af7e9e196639efe6d38da080c4359ec7d53aa0fb63ca4a547a1cfc08dc58e806779d8fe892bf580cebe89a3376147b989bb5158aac3deeb58e581b2f49707caf6afa6344db9796880abe3f2b057c511045403cbaa14a43fd2133854201713e3c643a11d4d94cda0129a0fe865b17a264551b6371b257c406f8ac5723f0bb71cf3f406a728e0cd8c9d1392e419b9bc977577771dfd713c5a079b42e8d92f3ca9c22021d82deea092fe791f0541a1397f61103cc46a0713a39d47482728a7096eba10e5d8abfdd49882de6e56b855559fe5a7e607cb4fcd76ed17f2700dacb77e5453cf6e1ced55137a7bfb0706f54fcfb0de8a1f64f9cdb7fa0190edec03fa01ce0f7eec03126a12c33e201f0cd9fe794414e1cdc4fcecf4e0093110c2159cd4b0c5b08bf1016eb25aea019d403e10b223d2e18d7d3eda8e2a240194819da627771de33a86896105055161f95049fff4144dc59223d078f98b3b18d45374eb76921f235018c4aa01950c491e126b36a03b38d7d1e9f11142512f432c1f88910bf2c017d40e0fc1bfaee044e4b8c39d0e8444454f98808dc5cbba1385003556a14eb36e0aeaf40cacb12ca0aa67217c439db7e2431c863814ea409cd822e980251cd9ac359e368b5a6f36e4b1182f9b5d9a9453c3da66236d6e36e449da68b321495ab6dd901f95de2ddf32da217b41502ad4b323d3908913d4c4298a4f78087e362242065e0cbe132f06bfc78bc1b7c1132f065f0387163e815d7dbc184f5806c258c4324ee29357555d6d40db84851603426f2c7a72c8f225d1ec9ad109e8e5274caee09a087f63d164a09e89af080e25a06b6295427309f4ce2ff04c9c0b06998c15c2a6291464ccc26e1863969ad1e3b1eccb4bd26187e1ee823157045eb276b130dcbdd89e71d5b864c7fc411e356c3fa6aedaa84b53dc979265bb331a14958a9189dbee94859c0f29ef39c617e3ba5829250f960f0b0f39541bc0727737cbbc9bb031c6a8c1086384314608218c91638c31c6182386611876cc47b4124208639432c628a58c51ca1a0c5f0ceeeeeeeed8dd0dbb21ec8eb9990202a10c391e2f4916638c31c618638c31c618638c718331c6084140f9134208619489cd7dc5151042282184105678569cfc1e8a7ad1a24c8c918b90efb313d0c6fbe058bb96aeed86de770cededd1f551277fae01fe0b383fe064ef85f9ef41f8e0b38791bbc95de3401cee604fdb1a2c0abaf0091151132744f4cea21f4728fc1b6a2464406c732e4470032b0226b6b987c466f00357b0cdbd2bd88c8110b1cd1561b306128608e40eb63900d84cf6d8e65ed8eca2826dce85cd3010a8c136c762b309c43607c366238d07b6391a36239148a507851030b1cdddbead073441b6424bd9c36a405f2b0c4aec954f745e0b0c4d2c5f5a71e55c4170e430e1219e7d2ff7e2b1ec043e814ea0152fcce3859bb013ee92d8cebed6d010fbc4bed8d71a5262e10b82fdd10fe86dc93e287c20897d1b13150d05b130ec6b8581498fe5c1be961872ac18945817fb5a62f8b13e7de9f4cc040275c207b5b20e2f065fce61caebc2306dced9a3edc668bb013f8a315a12495e315e9456fc805e38f2c9fb95308883152c84d032336c586fbceec2969b8d1b70d668a1b4f030d6864e9a70871dfba5c3d8ec02bd4c311650ecd807281f5aa97ad233f2c9a5f3f8d2e9c2abfcdeaf24743fee02ad6361dd017b934f80d0cb444f6c764e40d764f5be225b6751d3ecd5d0d71a038fbd4c74798899b04c1cc38ee57313b6c25e72cd3deed8832f2bdd28ec5300362fe18ebdb144748865e699899af061057dc217161509593e74d2840f08045ab1455237fc83104258dfe3d13a2f543e296ac25704ec3b6cd8f0c566562642c24f98888bb8632796b949ff805ec932f7d2b13a2c23445a818353c36fa9e07ff1a85890c1bf971cfb80ae20b233ec03b2c3908575445f11993482538287e0f3d09e94cf7fba560c10cbd20849f16395300288e51f21458fe56b46b0f729c151450fcb2ce1b13ed866205a1fd067b38c779ec551c510967950f80010fb6cc6f071094715445846d587b62b8e2a8858e61e41f65e46d709ac0e76b8c31576f41e1388073a80d951cda436596647fcbcea2a956cf10c62575d615b64a6d3982e57a3a71e50ea2cc7def2c733dc59fcf10ccac579f8f60c35597c748eb6d49b7a4a9e857bbc5aa937e582b5d54b7988c94647f97925ab76c5a6bdc7b5d5275aecca47a37ae5b51ed733b063bbea3bb64bedfa1d65d9a8f6b83eba76e547db65b65ddb6a8f15d475540651a812eabd18f4bd6ad4595858502ca854ea28544ae52897d4550e0294930e02d449281c8b1447d3347c62e1de5b61d84d1c0bee528b51f1a660b1aaba8663df8bd1a25e5595d7543876c958948a50ecda350c07f6d125d7561ed3e25b7976ef0f2beb132db6e5573efb89eb71baea99cc64edb1b178b65d7b265baa142360390852df32162ec334ecf4d866737df20c1023a58c854badbc63a9efd5ca4745e8fdcadf33a9540a04294fb1b03c854a3908e85bad9c45e5205839894f7a3fa66752deef7a0635437aff3da372eda711c75d0eb492307d74a257e15e4fda2b3e893bd19bb81177a3a5b5c4ed88df6e4a4668767885bda36b9545b573bd59bd510ad299a4c211adfcb4d19ea188197c6cc61a0630eba3adbc21a795559563f427a09df5bae4e31b1845df741410d35038c85ecff4e1b3c7c5f996b362ef26ae0a82f756170afa180f82aeb17f1d04f1430c717fd8fbceef09f10210eb7b017887917b353c2dff88ef4b68a4572f4a336459d6da853d5ef319e98fc79a5e73c6ebba3ee755a71c5d7217267f45d9108b495c979a9c8d5d8f8fbf8ebdde72bc6097188bc6eb973cd6988cfdabbbaf73b2bed8e676c0f36f461033423627a5a94e26e14349ec1a3c08e28449111e0ce9d11c8d17433e43223616e78dc2b66d96e94b5943499f44c4720f843c808f1db1d8aff700feec4962e7f911f6258a766d3693ce6099c87a443c1c3e58b8dde85f7d3e8417f7623bc658da6e7076d2981b3d72fce69c90fc62b3156dc46da3e6e26b94362448ef19dc4979ccc54744a2af7afb37068978be6943a26b7027cf1c0d77b2468d6d43229e36245a624692d8679f55d91ea93e968f15a66a0ccbc4da03ce60d62302be13e2acd002852b3faa9786957664a5f664e0e5e993e14bf9b027f18888cfde94f658a6473cbf3e016d478e5c8907f473b381d87644dd71fd3afcb5e5e0cfcb0dc7d6837b022211bfa3ef035a3e05cade4b167fb1d831febecca81d72d032d7afbb3e7b067babebba8bb3d80bc55ed7233367dc12c6c6ebc9c05fd7b521c193ab7661201022f4f17028c60887b49727739ddfc1b4e45b79499c6b0cef017c9312a963fbd95322e3e42edd416f7adc72300e7a138a90ec3121c46a1f691ff1699207f04b502872c4968e6d3660cbce7a353be368d4f01ab783b4e580458858be766db4e1185d238dae7123173baa775a58fad528dc8172bae5e0d3c70d070a1fcb9adf832d4bf1479961fbbad847c4a3c2ce973a68d4402c13df36bbd1ceb921d149b8cbaad64013c58e4e22713dfa8a2b3a286809513bc109b243c4670a20254d588625900c8583b6811845b3d6a60dfd00e3d45ca7619427e3961ec5849386e11438980b452c6b70db6a0f48eb75a90d1453968402da40dc1330af8463f9aa77d84974f44cb7de8a4ff456fcd7ad5209a78453c2c1c9324ad43cb589484551a8933450b72811d77b598154d452197a332b3a57d023a23fb940c55085f5b99e746b45a7df8ace8a8ee553229e276f5340d7c4d3f00c02ea153644db60f9720e96ff3a60f9b03e2024f44e0cc32650af9812b11ce855a1443af6928a8632a15e71d7cc25d0ab3264f9b66be4ba46c5a76b548658e6aaa8a8a830e189515c37300a668c0173385d0a4cec10f641410a452ce9d8762cd2908048f566f11969bb213712dcb8cd8654354efed1b96d1be9d3b46da4cf4964ef663a6d27cd8f4e35a55e269d4edf485b8c9584ddfcc0604e8cc246ee6ea4eb6d2fb41bc47edd18afc73c22a9ee981f3ddec824ca60903447a4c31a4955b5fd9a89e9156b38e0631227552cc60bbb717aac3be247d74e28310592b2ed06fc0ed2e9244822a5d41b238c3f5d9b0d1639b971d0ce3967b4db085e963e49bfb868e2b093b8eb340d65cf34ed1a8352616934e16823c59acd5f1e1a0f8d342ba992aede48486c755612acaa19d350b3a45fed2cb62016fb8e6d443acdb6d5cb43bb32700349c0497bd9184fc3d1ceeb76f5a48a19e445d99e5262d8fb7a360d355ed283022404af61794acba29cde7416ee3c043f854bf110bc72434b3fcbc0595db67a797c85bb377665db544aa56ddb4ec3a513f76cbfadf42420095ec3dede7dd80383280edad2eb97b8150ee56d3a0ae5a5a7d8e55cbba6529685386183fe74e3747a96456da31c0cc23a87421e11ef11513a7fa4047aa1cf0f4cfd6ef007faf834921c00d987e4063db6da8724074236d50293402fcce1a01d1d81429d208f8659f062f04b0f483de56f83b5013f201a7c6a589e72d5e48e69afa0cf5b31cace5bf15198a5c7a728956ad936140a552a6d2a2b3edaaa6ca76914a77de3b2a77090a757a7773a0db7024e270e3b0ae744b437755f1068793a96410287a488909e5dc3763817d2e8d89c2323b81caba9bfc01d1fcbf0c81030e0c09629b2d081d9859dcce9f24283e608f2784134a5c4ea2ff182cf8441530f0a0f118658d67492404d8765fa08965ddc457db5711befdee5801647153d52a7672e6a4d1c45a55cb8e30e866360cdaa5e3db187ca1e22d0db5d4f7a863f4447488ee52018ce0c2126f6c78a2227444d86b0252cd3e21cd3594879268843f85798180be332bef96c4100a8a9181844fdcb2f58f817598899421320843ebc15ec99b32db49a4ecf592f7620cef0752c75d7f862c01137da6c465d0582bbb272187844b63bac31b88ea8c6084cd5b88bf4a5871f6cb8380c94c370f117dc65d95979c4d8168f3116ca38570cc414b12c2376b0458d21c2320638bbd47b635dee24c66d3e85720cb10c104c5846065157c43247387932ad601925ce1fe1b00c0fe78f808c724641588688334faf58e64e3b040d6a61b0a8f57165d91731f645b7c40b06bc5879e1e2c50b540f3e412fd4bea4eccbaf1e96c1714e404c4b0c4b0ca928e6f4830f3f6c3fe8fc314500cf643ec79a306fc42177d9490c0847ab5f1a00f80d40007e5741fc72357e5b043080df1101468f270007df0a7e00dc7b2b0170efad6a70efad82e0de5b0580830700b7e2e0f511f79060e021b18970bebe1a498d11222a33f1e999ec00a751ef54a997b2a83715d433998a4cbdf4a520cb2e18506f6a897abf807a3b05d41ba3aa9765efc8a767b4205250cf6845a4a29ed97450d46746bd298d146449b5a55e9a807a537c2538e68163219dacd9877ae9a66379a6de5412f55204b8e01fc195784025e418888358c0cb905159b48391937037ffa690dd9a1dfd975c890714be2f25c4ba1cf58968bb8f6c5e59b43bc6b10f7739b867dfc9e09eed0e88f7760308202aff0c613e0bea1906c2abf92076fe00f5ce7922eaa5f3348ae655ea9df32ceaa5f3a9acc8f2359d9e8144de6abe889d979953dcd43c379f322fc47c8b6b41f341ee9c47d54b87d8795590e56b453d4381b79a37c05bcd393fa35e3aaf6945739ea52eb1f32d1507b7f96c41f33ccf43bda9930f3e5bbda919946ae3310e371bb3c2df780ccec639eefe76427037c65e4d8705c339117fe0ee4585e5c770f76a8205b1fc1eb88b15b91815965fb93b83cc22963f047799881137b80b9d0c61191b1bf3289bcaa2d366ba4c765263c40015def858ec5de2017d41bf8eb00c03b1209c5813288c9b0dd63d7297d2176485b04c5731f082a40e5d1daeaaaca91c0cc3b039e794390c7b601111c77269ce430827c7232686ebb0430e9b3d31ecc58bebd9db50fe62cec6b01ed81c8d50e631ae27f616623bc9886b9dc6e66c154019f0a3bfa8170afbe2906b21a37e41d33d30fbe2c5df66f3e2347cbdb850948879a3c923c6621788b13be851c7b80bc4d85977a49c6ee252a7a73cb3287f8f86cea0b81ba3310ba38ebac63233ff51479d371b17f76106a6881f76f419eeded8999d15960ac0ef83f8ed6afcc608e0973580dfd722c0ef03a2f97d41f6f709d5bc00339457f358c5eee205e026afe66b6e69b8c7abd500b8c72b01b0ec7c8d183b5701e01eaf561c12a3f7674ed3f3f2784476e62ede3ed8ce2238d627274411acd1a86d5fb630f7c1dcb33da2b0134688bfce3a0ec685c0f1ba1ae388bb467fbd2521618e556c5477cc0b21c4e769fae29e85c1d57b638538cc8539dc70b0156288c3cd86c6331af42a12f3c8c5ccff305f857899aff33f3cab9f327ef81cf570203eaa3786ac3d7ebc3fc2d17dca4e225e252b8ed7efb87b1de607e8e11101fdd187807118f74712b3aa3e3ac6a9aecb6357c571bd7b577f58ec57fd717d466330ea87e8baa387c7bae3e58d551f6c7ba8b1c62d8710385eaa8ceaa3ed0f1788598f9d3724ea7fa817da5abb47f3fa28ce5ab1d1affa37c2ae9ecb8765a6cf7cc4389f79f9cc59843b8e8fb93eba3f6cf7eee1590fdc0faf877aa31cd5c3a8933b186faebbe45eae5a1f7730620ed3437d318f3135de1f3ee31d37ca21c4f5d1dfd675f5c6f860db3de612e2317ed4f570c9dd09856d18afdce30e46bdd1c278ad551e464c0fcddd1f4ec4f50ee6aa3b463984f868341abd3cdef80c64cdc95f1d87438e0e23e687cb1c0677a3b0f1c2fc87ea836d7c394c0cf7ecf522c4312e25c35d1f16e64470170a0bf319dcfd61617ef55c45469bcd109545699cb41d7163695452e770352c2158a7616d083373e682d3384edbe18eff8409d1121e1a4fe330fecad577f54edb1d7b79f6f2f2721a56e5909f9fcf36b14f0bf63d210c42ece4ee23b231ba8c6340ac5cae46871106207665df13c0c0852ac5aa3e5e758f1de7e22f1ccc65709a1020aa3664de05c7c12048050dee2a72f9fc5918c768704fb09d8731ab0fbe11df0346bd7a4834a0ffbd7a201530e8880fc66d47b8481c01bd7cb07af5948134037aaf1e92765d570f0fb15abfb3c1eabdd9b1980b17cfb69f79c1d4cd67fbf900bd7ee4231797efe1b0a7c5a5e53ed878a5e93c1e919dcf481a0c67faacda9021144bc23233686371520c68fcdd822c4c8c9839678c63dc0c216486e861a6befc6d36305e80387f13621918e76f4b58a69ebf0db10cccf91b13550eeca38fea0e95637ff318a71afd59ec2af2c20101a3c2741c9c02b6b84bc24030a0974fbd7ab89b68a02dff673858c4070ec19fc1c116076370900a0e0629e18e97d0ffc29ea96dbf93e5af7ba40fcb98cedf8e683a9a10967171beb6c332dc795055550f2a95aa47a3d168078c381a5defbe4611463c567fc198f7c156c2f8d5306020210fe3343caf39121293c2eafc0bee42fbe2a32d07c9c2f9b9ddf8e12ffe5aa755d04258067e9e6e3633cbdeb6b9f8302bb5373fa2c0e2e5809da769ecfa60c9ede81e859ddc6d8bc17cfe6197b577eced085377c877302a8045c4e83e81f8ec0e44bd6c650bb1ed6227cacec8514a0c93dde6d3335b908c7aa710f552210ec3a75e1cd8fc6b1d58c47cb790396f0bb92dc48efe0377a1fde1a3ed467fd61df3303eb72446df827ae612a2de1410f54e19d876a3bf2302f1ab7f612416ed311c8f971bedd5409c92741cb4524a293b18755e72ad03655c8fc18d0ec3c59ca67fe02e18f3f7c5c2f8db92e88efd505f4fcf04f1edcfc58720ead5d301a8d95faf5864af34a982ee4d79469b9f9f5af6627760ef3e617cfe6d39ba3e8c7aa10a885f1ffdead1fe9a85347ff178b1dd2f8f97ed46f71d5d655c6e4968b63bece96faf7d78cc3c8cb70a60115dbd19b8b1f332461f8d9eb2d98cb2c9490b04072f0b04072d86611c66b1d85da76700f0c7a877b61c86833ddcf17fe060111fee8ee8f40c00eae395cb2fb577d3595597eb7271de6c783c22cb9d371beed9db469fdc7db1f3c6e8afff1137b6d483ab7b7cb6abad0228e33a0cee45f65a052fb8675b88853d2dce87dcc2a5c57da8a3229e7372dce3eea9bfcdc58db1b3a69ca6791815dd68efa84863b105597e8ba6e2b355e154700aeef84c6ca66918c430d853a489dd7c1e122130b16c2fac616c42a64fe1286f30a66319134581d4c5a2815e3f3d3d23755215f6481debc47502ebc4652fec290265700f11e8953a52470a89d8bb638c230cfb9c23244208c2e4e475637db495b5e433e21b18a31f31b81eec125f524a092f1931480228e33a7628e13b64625908bc7cf0d8e39e85424226ef7a2ac8decbbd390275b9fcca3328dfc6f262f0a918b230ec8302153f3628a70a4d6cd69a7c129d741137813656582113d3e9315a53f5c1d644550f2ca7e147c32da22576e57d840545d6c5af2fc10d3ab605496c10f601b500c766b2c72ab17c5984657a169147a6f6b61bd9e19b9b33b2a74f32dcff8c063d3d2629f5be257ded2ba4abeef40c6f500aac4ee8c349dc4e7779ccc0aaaaff6a7ce054dd750483b7cd1d148c14a6af3c5be1eef51595cf7a61ecbcb17d74b48e50ef08f108f540c14fb87b8777788777ba294faae73eb61ffff4fc14fd3cf9099a424244f009f4b1fd63fb490b68a75793a6f8e715fdfcbc258f890ffd9ab050aff84a5254d097a4fb87df685bb328db2eb65f5e7ee03200702b6e5a1d4f8825c4fcf8f17bd239393b393b397c4a537f0f873f3dd33d3d3f3d3f3d0d042404240424f4a4679a88e809d113a298f3d333b147a86722504eccc9e9f9e9f9e9c9e9992824ff14a5423973529c1614a52d278d485b122efec2a95e9670c718131c2fdf5ee254305efa16c41d63423dc33ffc0394f944a12894f944a12ca757fc39294d653996254e963151ce9c5acf49692af5773c7776e6ec39f5a4fcfc98934a519a4a51fa269a93d21b736411562a157b388ec5e22f87c1e5287deb5e5cd5551b6cbbc3f83cc2442c7ff2b04c8be5cf56cf00b974588004cb9f4054f00c90d95a811866321c222cf38058d0d3305ef8e0830f9cc6dd7c519dbec4ed68c2e53cbcc5472da028973ddcf1b126d0ca1fadc0e7a29cc5e766e3f2110be8f59be534e18eb989bd73a7c786843181966cb4459dc4a5de037759f6ca1eeee1b88b39e9ce5d59f488727a88725cf0681fbb72781e38558e16fd16f5d2bb9c9e72689f5571aa1cf4f1f4cf5eaa3ee9d0b670aaae36d86acf0eeddb6ca0aef2a37c9e85eb628268fced6058a62b067a451e55555746da6c604ce146437854a467fbd41889f5023056561e30d684fdf4cccc7c529df9b8a464406955950eed1c3277580665f4025ae2fed2332a32e219116934ecc89e3964eec4b9338457fc8b9b3b7367ee48c9ea3977640f4f36648a02de489211388c3334a4831f264d4ca6ee86513edec4a9e69f949272aaebd0d29b382946cf52a69a52c9970e2d75a97731994e653dcb744d7117b9c7fb606be2ae664de726d4741387728a025b358f2308e8d99022ad0dc114e3c0c9a9661c144d753d0319672815069c26f9dc940e782cdfe545144a6c1e822f5b406fcab6e84d81612886997b80a09322d66938f844382889b2db819a45b14c27c11601e390c4f25dbaf7b87b8f59c8decb953e56fe451a7462f6daa1fc9e4c0ff330111e5863853d957978787a309b5ddc653b07f4f68f959dd3ab1119e885421808e8e51d9bd3335c2363242799b9da800211789848d0b342913c1729b252887bac8c92713aa0235989ade12b0ab18cbc3044f252b21b9858f97761132b9160af4bcc0c96c92ebdf0c260a55402754a6025fc401dac7c6fb02f0d564af9ba60e5a4295b6f0c54bd5d4abd4f69914fb1402125b008aec193212fb91043899557a9b79347d57bf9947a53a72a546ff062b0d5ecf6b8d96cbfb8b63c34abf1bc182da037b24e5facc33b3755d6e14eeeb010de612158e998f692f61b7a59c74ade6119661dd6e19da9c99798f3b1b2320f0be8650cdb6c46700977129e37ed918b36cb84d01b997984f837725ccc8c98b16465d518ee644cc32d0756e3eb2226c49dfc0a28a9de08ed85424c843b791a3462957ba44a462622cf3c46e00481a50825f256cf1a8133e4ad9ecab20ae8751ab62f1dc3bc55bc8c315edc7b91758754812954d8a1651f901d82ec6571ff35e7c22b4e9d3b288361a00c967931f8977dc81d70aa7404783620126f091d323031fc19fcb07a595aea429972c7d7c551b8cf0a96532e67c63079c91ab96396a2cf47c1ae28f46af60dc1be82a6bd68507e26e1c311b94a81590050790a8564342884f0d5d3f71b080d50840a43eca3837d48a6c0633314fe126fc6cc28f15690892134b8e00da57aa5c47b056f04d640f88220b30a321bd0aae8c398b9df06816c09eef8086cf8c23fdc498e7ddab4846550dc4548e444c627a867b8a607a78bb04c4f61811cb3902b974283d6ed861428caaff77066c1de726e0df58a5bbde254aab30d898e9b0d1eb81db0aae4e1ab4a56235e5ff827debdd5465cbd337baaf25b91ea7b2b1b3cb0bc9ca6ebcb5b38279e453d6b3a13551ee27a1000c5d1f7c0a94a2ddc65c2b6504dde421626685aae4d28b557552e344dabd787ac37f2f0796379e072406b7a0b771fd29a6e7a26b5f79eb4ef09571015cdccb4807082580b719e50050a1af2b00cbbc1f2ebe9de5162892e1224e5d866736a9c06923a0b97ba8bce71d1c3df7943e287ad7a7dd7cbfd21e1e24cd81df3eff3f0d96c29dfc2c559fe3e3916edf03cbcafbde56f4e26ac4aab3cd4cb0413f0771ed52c875adf1eb74fb0b019b8b1da3f27a5add579787916eece47d535d565eda7b0c8c9b1a8de59aa8f2454977587ea5addd1e2f23ea495affa9056d5e2d174d9a287ff5d56cec59f8bbb7021e5d4e6a58b27a756ef7b0c7352dacbc1699c864ca4a678da9b4b9d07ee326179f8eccbb7b880b5eb9866f170c9b16dd160ab67486717f34ddbf257aaaa2d2d2da9973a4baade1b9ae6e1a5b4d47bb5050f1947ed9c97854cb9509d85c6c2f256dde593bbaf4563a5ac3dbc70c7b8149db72e62ec3c0f2db587a75abcbcb7eaa15e9695b592b8eed545bd33552fa52dea4db1b8aae52a77d1aee29e65a1b198cec232a764b964c2f627d71ac7a2a55abe728d85c6def896ea435a966b2c9ce9f0def0d03061239094caa2a753f5212dec41802b9ec0a1624d37f1713d7e58d3bde91e6d4d1502b59244815e6f404217aad01e6ca970485851dc382cf370a27d48d6a0026ea5d825d5840080b42c54e17818c0c0fc8d65207a610b6eefcd49413ae49e80169238d5126f61021c08e1c1a921d52848390400a489b08c0080b458a6ab145190aa91be11237dc849ab712a1c5600405a96b71cf1f3de78b689634000405a365a58557f3969c3719980c7c6547185ed2a050e4e76d2a3100090560d4e76d512f507ac51358003a3635535ff6ab0bf1a520348cfaaaa01b0263bacc9ea0f230a78351e388e0080b46a4855056b8cc0aaeab883e97868f404aa8aa961f58a6786875e17dd80c60835d0db3c55d63550612f0f71cb66e404da402c73319326d00b5bb6f21077dce22e89943cd4dc62a2d83c4d34c431131e62828758e6451e6a355027e924dc2476804666e6216ef564d81a03bd2f0847092250275aad0e6a89a26fe08c1ce2e94bd74fb504fc71a3842baeb8e20af89b9a2c6a1a8e7dcfb8215fdb12f0bdea988a41ac0fe6ab70c8f78d8dad16854144c8de4ba6a99690dfe46f6ade67cfa81ab0bdf4d2b7bf76e1f78ede78b67b31f8c58053fb4be6a2bdbc3ce35c5c6c5fa34fec9716a1a48f4eaa3b4628ca946363010912244890204182a46bd03cfd5eee4a8b07ff39814c9e112f4673dd6a2022d01c07c0d140dd7a409de4b75b0de4e43581bfa15c257a4310a85bd0de6edd1b0bad11ad1aceae24d0a99146905bb3248b89e115c11dc056747aa55bb74b01ea11a967e2534eb2151d96ba52ef9fca2a9d443a9809e82d3981dd59f6de5586509e3d4e85486548e5d50d8533b2a2923da0eed4cbfebec2a956321514caf261d4d48ce00daf7b352368523302262418568583618de899f75e772d3d6182b22914452f28306111a4b5a05054148520d7a864c51327439c024b862944e50c0f5319facce933a943332a43a5678f6b26dc2de16ef5eaa6a699fc76571105a9667bd69c0a91cad0ca55ce73667fef59bd2a7fdf3823d933154e65855361a23264b25765e8591a5621621993c9aa0cb1cc73a96129e4bcd5b3560a386ff5a85065cf369b5759d4c51ec13390e83d202017ab71252bb82b95904801c7ded4d4dcee7796794040452cbf8bda0a9e49f1f40896586e209d22d8db445a0b08e80af6b6930eea25969ff59b1b1290a4616478152b01bd285624c1a5270c638c31be59ba37b654c41dfff50a0b62f9578ee59380d88963310c082b1a22527940466c54652bf5b0cc2df13c243a20d24aa2a454c4f233a961627832f81819e28a8f94256ce81121865744237932c8f088c06a4aeba757a5524692239c927ca744928816d1272620261d154a845d173f231e114fa5524205affda6e65905dcd4c4dfd4c4aa82d58925e2b5fa637bbcd9b8148ee5d3df2e565503341c550360cd7658b33d5eab4630a0ca012df6221c1cfb6a22d751a0ab6ea5fc84727a20404c8f0782baa67a2828287f47a1f507aaf6935ef1b5ff30d59b9a4ce3542f72aaf75e55c9a3fca6e647acf1dae5b5fac388ac4b6847a93fb4da3f48dd7a359afc8d675390bc18fc14a2d2766c6868686868081ba24de26f474d4326ea84d6d7d40acbf5402cd7ce14e4d5db262113cbb1fc20266a8509873ee1eec2b1247b2581ced3a0f388e5568a70b742c4f27b1c0f6d85873b7e8e47c41314c72be29d6fc423023613908c9840b1cb6f35e5a7572fa5f5629c70ec8a4ecfa8cc49557c7c56747c5674887c2e8939b1dc819a5f8ff4b2f77b2febebba4eaa378eb86cb3e96cb3b992786f78d2f547928fbbbf47aaf2a35893912c49b311a79684a216e82df150a29e519993d2940a8e0a8ee553221c550338a03dfed5f0cb22c7010fc46fffb1555503b46fda5fcd8ff8ad0625e0d544232a96adc1b22f2828282828c8f247a82014cf7c1485e241f158fe08c5830d35774a51964a3d055b424aab813a6849133d2220ea3735fcc8ddd460459815398f08887aa9d52b28d0596fa9e8e7d53b69136ce8c5e037d02515b18106ef272c03ad883d2a3811888e9088b31379629198a3c332dd923a6d45c4e9277108b64e3f813d52eec82192c80f88033b08af51d4db6cb6124aeb407a14db42b8e3b68257dc4f5aa72bbd754a9a76fb38ed1d131ab4843dca3aad83c337ead86f50fb56df99379beb988c537b3f6bed9aa65dab5ad34bb97e92833db16c858d01bdfde42f28263c98ce28a6e48009ce1474a8f8b18f0df6219102907d4fba9f9fa129522e304966d14cc5e075a9192852fcce087896ce1298dd8027063b5e101aca3e52c3f64bd60ede00a55e18cbe7d5ebb854ef54c3965d5ec8a0e89996b7e2d7e0a49a54c1ded4900be4523f594d3d8a22067b5343a9d4e8094b609ff507acc16a939f09f4934a91816fa4cca8c88018e9fa3a7b0c8b32d51d21ac61df790d145208e3a4320205513bdf0ac64a5f0c589be923a22311a6b00fc83e2454005d98e3e363e4480753034e711d6a5f03554981fdd55ce7538067608e1115e98f891d9dab2adb794db4dfb7048807afe3f770d795c5831a966568bc8edf8dd4d0753d393db37a7cfeec5e0c34d00e26e3baae83a4513767aa0f7d5a30c807069161c8be1efa2646d2102347e2ecc8b0867e7fe9ceb2ccf7779e63646666865d3da350615f13b2e7c20b2e6c3cebc5b3b860f92f9e15cfda82e5bf78d68b67bd78563c8bffe259fc17cf7af12c1bfc17cfe2bf7816ffc5b3e2592f9ef5e25950b0fc17cf8a673dc1f25f3ccb0996ffe259fc17cf7af1ac17cf8a67c5b3e2590478f1ac01bc789600e2e35010929464efa563a723023fba3963582a877779cf603552565028cdc900a903745058c85b88998171f0ad4c236b5a02cae01f0760794a3da5a68575075482256802af02f002cf07140058e28766c5f584c88086367470daaee3ff2585a2b0e715313146762c7fc6d45c6a6087b665875d5d636278ce4a35eed8ce5823c508d6a8fa52d57f366a587619318e4eec1a064451cdc52a9d931a8927713130069b2334d01b6399d8780c92b630aa82de1825ea7d404c5424e324034e147d83f12827a3f137f475c758fba621dc82fc7bb9dd821cf784e035ec73f6a1d01ac1b17c989e225370f09183e96e2e9e4145fae3222cb33dfb7beffdf5787f4f7bf05ac323b8632536afa708aff8a30ed0db4d145aba8f8acee24016c2995bcfe51e78077adb27ab1a9076877678d69e7dbb36644b6fee3d7249f45f7d3f216da95e26ece6435a29725e235f55f052c8aa82b58379422ff744920e48a3eead20ec26f7f4ccacf5ea1ed8c31deb807f60f9b0e322587eec1889e5bf8e7be44071a6bd8c53640c43b65bf1a6bba4860c1e0220830065fba080841964f1900695b04ad18f4b74e52810235c1f779387a0100474ce2596afc58fca4033d02a415218f276e4eb96394156748410b1dcc33e3c85e5d7b22707417438878ba695722767e738383822b8f8f6919ea2a819c742cee6ca267736eb8636a3412f6d5e709e86794b225a8dbb20bce2ca393e909f1a734e968a1cd7bccd8661512aa757d777b48d94f355d6e9d5117a27e7c89d1d39441b430bdeb0cc96642f084ac362d580382a29e45f4d9c567293c54252450beced5a4a7eec658d818bb04323780df43ea0eb461ca144e4d1d940a0eb2812c48823966434e8d4e884d6002c7367aac6d4ae0e3b1f618416688c79313133623d0a28cadedb258c400e163506d9b28aec0541ef592c1e14597e8d24d7710e391d17134c5c3a22d01cab06772c16ab23d401cf9d03de8acf623d968318866690013182f2f7f28b830da326dff564974c73c69450beaabdf7b4d7effab99e5469873f1612591aceae3fd89ae44ebf7e3a0d6bf54261b54bd3346b9a979bcd75148e726782f5865e4a53d447a5a7a74ca91377636c974ea753e974fa417927143904793a0d41caf70e6143684f28270e5e9fa968e7a8282626c8f26750d4cbdb6c4c0e9ede4ffdaef0b26abd50e3485b0e92edd17683e5da1fc32370089b0da43da3449629619252ca77d34b4969324d612f8b3f996a31fdb568a92d5e0b6c31c97e2df0265837f8d7ef7240723b501e858551f6b79f1ecafbdb09f56b3a7c3d29312d44c9a398ea8fdd2e4b895eb17c4b0e799453f5c10fe5b1a8a65755265ac2d18749c023b008f8574f10aa4edb76e31dd61df028d7b6245cb2771627b568512f0f2dc66e8f450a918983564a29a509a5422550971c3c02656c6fe1569ee24ea76916964d095a998831355151b451deb077bc9bdebf3e785e68e9379a7a3aac3edee9e16f3c6defdd046945f9f6d3637a865e057eebdf187bfab5dde8ef305de59196564c756b95d3e97008a7d3cde6f4f3de7b0fa5899e4939a32a4dad3ff6f2e92fe5d19e49a9ef743afd86fca942ee467ad36f2cf4c1965638042803c66e6faef486008b78f6d2e08fc5888092765edcb3984a052b45f1aa091f17ec2658ac981931313358ef31143143f705dd47c4c40b52a2b34053f60125a9228a01275bcdc088140d0f7a2cdf008f8a10bce67a91fa8892e680b20122d7e349711d8667561dcbbc0af33020d03e6c6e29e56594523e68009689af274f108693c1f91e652497176ce5b22c8ac5f496bc1881fb25e428a341b512c5300cbb3413877a5dca592cc367e1e8eb524cf5f24071daeb523a5497a2a2527bfcb026cb6219547d5d4a6571777a8d1fb0d688362840a54dcb4871cafa9a4061ba97973f99f7ba3e841042f8641e1386b4b270c4ae40ac0c9407425e44bd87e03531e512a50fe8680915c35017f112e625581016d4589036ff5eae0b8edd78090788f012db3c78092fc9ba25c30b6adcac5aff865e540b688ece54d3ea1d8d46239e49c4432ca198a00ee8add48f8fc693356326aaa5712820ed17d5d2620e541214d03caac51d0a68fea25ab3a2805049e2866a71072425bc0c10cbbcc74bb020d2b33e26c4409395d82944f2e995c6839758f90d0bea42d00d4c498953e1e07892cfb5d8db0dd284a398416dfe484e622f143ef641981292cfb67dcbbe6d9545798925f9f40c0b4b10cbd7ea25fd242161433785c2030bb228a7e10d0bc2b240fb3c7a7217c08248cf4858908537da4ecd625960d961962141a824dcb145b5b696ed6b5c9f45ffc776bdf0a2802c8fa4c04ee2eea8a4ea3e0e2d58b1e570c7416040379d9c87a40953fc409492940b7fcbe12d08c98794048a6a5dd51354ce96c3031ccbdf82a05a49946c427aeb631ce908af48a41fd2cfc55a3c43d22ae987e433e202c9877464cb21b57a06d58a52fed85cdb8d69df8b812234b7202fc648c816843b1a740bc21d6f3a0d04dadb8edd787636941f1494297afbd96c78d0292cfb6c3fdcb52c1fd9a866eaba6369d08dc869eb999188e5adc8c66369d02d2565dbb1dcdd9b906d88655a6479434dec9211d58c42a15010e5a13c4dd3b44bd3a4a6c5660d6a9ab652da725e0cfedb50ad28603f5b0e8b455d39a097b62c5b4b59e64a3bef06ece8af9b97cf2e0e5a14cb6495634c14938eccf3493ea4d9734a2ca8dfa8ab7298128905a1801e0b426d396fc547b59ea05a5bce900bce280a78233b0821a11d102d612b98c85fd2471e090191f7248fd5e18ebbdf9be3a1492152480ef110fc2e01bd52480e5d9293423248f6abca250ce58f8f9592e7ca1d12133a6a929a4e2e20f60a42647b550a5181c22785e48e1d62f98f8865ee914296a54e7dafbb31d49237912709b21704cc7951683d20234b9e139e2d98e1016dc10c96ed7d43434239f629c13237a69560f9efc1cf25f4b5ec6559f837672ad5b2b17b6503819ec0051bd333a3b7e2c7b4d0149401cf4ff682a0a99c6e07465e1a86e035e721528f13b2126ea5a016e07b433c3ad106d90b82c6a4ba1fcb8799f15aaad887b15b430bba219c16118d3ed60666df610d1ad871c72fdcb1e6c25d7717b1cc4d31d143b2831d76623726da885eeb0d38f6cd3c2cf8b01396792d274f38a881700fd91a7210cb5c6672f947092f41a2795e659e2950d2b51f716880f3f0107ecc4450f0a192262d383838381ea8c9e99957c33a4f8912af14246b5bc11d677f894832d1334cf456fcd1ab4cf453fa76fecb754e0273945a2b9453cb7cc452e9bd66a2255e105193eb3d6108448922f4a6f8feb0f07c99c76528fa6c4cd1d0aa62887d2d38e4d8db422da22616bef4f79295b886b59988401b98d0c11d1311b8a11d13f4e988000dcf20b673e0d64c8050e399d25965835911e0153f004f66743e005ec01eae1030967de0c1b20b23a00c1d38a0eff771b0c9d381f580beb6cf5e5a0d584437d011ccdc544ce075fcec09fdc16e3a796858820c51c01af22da023024d5cd8be0eeeebe039583ef775705f07cbc1f2b9af83e360f9dcd7c170b07ceeeb60eeeb603ef775b01b2c9ffb3a98fb3a98fb3a980d96cf7d1dcc7d1dcc7d1dcc7d1dcce7be0e4683e5735f07f3b9af83b9af83cf60f9dcd7c17ceeebe032583ef77530f775309ffb3a780c96cf7d1dac83618c963f814744b7651d1280e7f3754400d649c140ef7c0a48e80935d07b9deddaea218d534bc89899aba46119bbbbe1935c5f8cf7a643fb0441e16603db877d6c507a08fe72b3a1f68109b210e533a2cc784d1e96f9dce181d7f5396404270fcbbc3b6385174a6f5deaebbaae7e29c7f651b80888d58af9e97c2233738b0045d7b927c5735dd7c56db87af2a0a448d70e7793070565a7796cf7d88e938765ded092193173a73fb2029d3b3c71f20ce1ae4bdcdc993c2b2b3b43260f945cf79c8876d654b007a8444dd4d5514d99221200000000d313002030100c088462a168402695364d3d14800e99aa527c529887419029630c21040000000000000020008000408232ae8746e9442db4dd544a626bc0b8a44c0666e6ad61d363990c2410da69614ae25c895410440070701b9923d3e51c8086494808d4ee143d5816ea2733fc0370ccfb53df95cd8765c78defecaa73d949fbcef3cac8b768af4c8d842fa4ba4af65103ffb9574f3520c694412dadf147bfd3d6254f64d26b88b2dc5e9ea8dd7d50ee069def19985870eb17e306d864a3667827e688bba9a3ea8033ceffa3e8f9b645587ca54c78738a2c67121c50af06ed5ff4ce3d6793c9923f7ef307c91d3bfc0620396f48cd2b288f87462fd2519e017a690e75022a771ad03851b1a6c6aa4f974382d022cd7f9b2d11d02164b8f752a2da27b1db5ff5b38057ec477d62d938911f6922c4b928c8e46528d59469c26c2752df426bcabbe49d0bbd13d4a4e02e98c039d7fc4653322e730665659434852ef0f88ca07568815213cbccc0e807c5580a130ee3aa5964530fb1a53675f8ab1415c4df676d22750ac8d8f7841f5b724aadd913bbcf4b304595a91d08bc552dd1715844fcd70f7af8121646a5efbd8fce21e36925d27c9a0923d37f3ca4995170bc9787d2a1c50d91c967456b5b57f954716d7f1975c96bb868529c6641ce7f174d0b9954216e30144b07e955de7e55a4f605044142c0103b541287426413455ce70c7694c8113cb8faf27c8b5b5030cd1d15d570d5b289933632cda5ea095e8a64e1038c0384af2e6353edaab14ce6e6a339905c037ed7b899fc9a7a21e4d577bdf1146aea62dd29788156d06c14a3003ad09f9483611a239b62de9d091c8b8959e4d41a04559eb2e5ce683cb7f5f6ffc2ee423017d1635e0bf90da1e5a01f29f9e8c1818f11020f37da5eacda0bda17badb15ae4a2c08846a06970e44563ee15cc701317401b2b81ead2250a0af4b1230320e7e6c4b73616b130a50ab99ae09f1a6a43505e440dcc7c4e414c88e0354aadb5db5eb792d3cd05871eeac701e7900c617e07357f0a13a1300341a352a79d3f007f47f4908702d3406a85c6977d0307bfd0859cb5163de6c59fe68c358d00e94e92c1bb67261fc0e653de2c2c59f51a6a022860c522fd6df3ae88ddbc60d52cc31a2e8eb40c398f5c3168bdb2cd49742b5761cf8bd8210a2f98fbdd44bedd6b834bf2667990291497851cab46fe98956f2eaa9b9d9c7b276b76db139d3c45d5ddb7161668b87da4241f36c448014d88870f5fbbef65c3e36f64d7a8c5ef0d80185731808b84707efd8094f7a78441e337417c8ac524ca5c825dfc4e4ad4254e5096979ac9e443bc35e32d18f3a3714f601bf4e4a1a12dde1dc3b9cbe536ba1f30411b05de52d2a9c0cbbaee5422867c0bbd2216b31432060b19effd1394ac1a5f8106d477c49136d13eaa6d4d286c1b68384b74fcb383403d1b771abe472acca7f9d4821488f1627ec0d7409c91c2b58af3221a907f90e4616823c761515a1ef7860eb912945a9a23311a3635223cb422e585bafa85be64faeaa963614af658bfd632807d0be02ae800cb6b3531b3088d29fe5ad36e5eaa7bd8717611a884035b26743bd940a0898fe5c64c7f152f45f8bef2a1e16feb32e03e024bbf370ceab23df5c0a3b0ad7fe45e92dcf904102f1c1be7cc493e7f60efdbda39d9ddb81c613f178bdfbbd1de45ecc60070c87b50269f48b2b2e9d7575db6fe813086f917fcce65d8948389e1cd1ac43deb13084f690efbe37afc407984f0b510ee4590d3add16d69a7e3bbe7a83205be0e2698a511f1f0cbb2145a301019a823c48d393f9bab145aaa313ee36e788be21abe1935a6ac652bd7d0bd2a745af7896bf3b4518fc961626d82b6d9bf4ddab5888de5688c0b349fb8ac246bfaa363b219573b245bd4dd7973db0231f549384baaa00afcfb542958b3c3ee3f540f6072c8d7f8a95d6dfabd5f63b3f7b858b271ca6c29160ae2a59f88f8676a74d0d06b604839138ce10797c308a5c78b8064cc05b7ac02059e6b35d9098b295cd838b432e40f01b184a9306b0f36700d1d0838bdb1f08c11b6e90e7c9aee423080d535e456c60361de846e20acd4182da3c1063cc89255ff61f43b0a137ccb40808b8215fa60108b22117eb1e7f90a10d2e8ef29e2d0717476f73538369147ec2b583a850093c3a0d540f2e8ee2e65991a5cfcd1a70071787da5a914df5214b0c5e27807d0ba3356ab58f9004076c5576e61f9b7600734e1e4096b388fdb0865d9f71401b693bd186c0a05c3d6984bc6dbe270445cb85f59347948669b4509ee13cb876f7363015c9a17309d19ed2b60bb062bdc10964ba34c20a8430f941f3c45d8b78b94ad790955f613830a01020cb2dd618bc1284bf23897bb1bd3895bb3fb7e4b669c3476032a8356d4dbb6710db0d6c684b08b88c180d570189c0a0be1e0c8c19e49d1979f3eb917f6a5e3e40d1bbc0c8bb665fd4dd36d395777ae4a4fc5138f59d0df582d0023befd5563e4f6109e58fea4e8f36c14f6730b2952ad0e9cc99127ef3b5a573057b84b626128af7c282cd367fce29834ca4f9624caafe4076f3289d84b51f8b0ad58b1edc36c77cb1a5f647306e2a42ee12434ca7173f422b2cf161ff1acc76a43cfb526b99957d0d1eee7455ddba9ef6276c9606c32f5bba7fba6a3c00c6032b6349e1ee0928e022cd528853a58cf67ca8333966ed5ef46f860e292036bcfb3701a5c4728558272ef3ae3d006dc2fc4812303a81e1073688470020fa2f9416d8547e48a564b253f97c0e7c552b16343c4decefcff405e9706dcf1ad1169459fa043c1c985b32e0b9d8e6e72e431b787f6d60e5f145993ee38f7e42eaf23231b396ffd3411a255b2d4b09832bb35f4ac9de70b161e4a50900bc97d87473caab1e3a1247757c7ed1a92890d354f98fc37f0c24b130d137142789fd43876568d0f9a365749c7a8b1d28ac688cb69701f8efa3860d6f56fcc282e5fbff340cc260bfd6071f8984af7f00d8bfcc6d6f9baf0fd033ce888ce974d22165756bc17743099f0047dcf8e7ffa5f95de30a41039a8071a9b71a7d566a3572646a95609c0f2ca74a523345d53abf7856b51ee228ebd38d16ac62eb5ea3cbd7ca82670a06d22649c826c64bf1990b70feb5cc3df4ed904accbda3eb360b9b38c21894eae89fdac6eb5dc7c87b3e1247d10c89f1ff598c9a0afa8c33e983f2f1793b8de9388e26895243acb5f91fed03a45c94ce9029e9c78c9311bc547771c72290107eb5c6822879c9c5ecaa510e9940b27d3a5e8a7a13a8fdbd98139ef818428ce413e191231b004c59f1e35a62f31b8f4357382e86d5ff90cdc293893dd52db9a1c82b761dad02a8c608b68be969680da18cc9109bba2d88f0be05320e7ba6aebfde70cf68813d453e18c6bb980087ee02591eef9e36af370811562d5abc8317869e2ed3303f0c1007da883d3453902daf7c252dc01be6477ee7336e352ce2177117b9ad4a64ab5bdc2cc4129f02320a5301943bd41e45a28645a83132b959d5489049f89fe5210419d737a63e030f33dea0ef31864b2cc5049922ec1d785684ba89f4b9b517a618a0444088f68fd8fe05929277a4cb8f36076951b634bbf956bd2358c758bbafb0fe55ed260ffc1800f534c097f4421eb7079b246ac42bcb8ffa71f68305230d18b308e8046319ab2f3d2c1251faf4232fe5e4f3e068387d34b3be11346feb493c24d6f3f8380757895b5864568b8a2c103973bb40d52f053afbf5f31384a33b32385aae28d7cd0df8116a0e3cd2c61a97494aba6f4324bab6bdfe11d99ec4ed3daf5809b42702fa92b9fc706660234ac1273ae1e712c3f401aa381676c4f3ef5c7c5543049145b5ecf3aa7226dac4dddf0ba1963557c938b4dfa77eaeba5bce7eed8655fea03ce7e685531f5ba7894964e76896a14a936ba335599eda32d986d0917e37a8f9c6ec05ce1a65112ba3df701543112d545e3f8adb0aadbda8bb5ea86f5b30bf54ef05c758a38d36aabd0b1c34d38ea6484f6a5de84356517685201f60d3d09b30a78c7113e1393e335c86081df58f49e07682c043806da628916fa500f5ad5ca5f2cc283cdf659ed4f2121702d433cf458b9450f40a0cbf2a790cbf149fbb9b503e7ced1f32f5171cc9be6f8ca951425b48c539a514adf4a947f69017d369b5e0e4a175e5bd5186ff214d30197ee6339fdbb09cc321dc461eb968a30ea323c07853daf4805697d18078388c3634efee95604d4636d41c548526fca0fab5261922b9feb9b805571d28905c5a4fe452548893b565b3787a217cb5334a5236f5c549a2c981397a7478a3a22365e816c0de1b0284d7b24050c73ff27ad329c29ce51205716ecda85a56234fb340fe3c210acc9f97aac0f922c824ac39ee2a61abb22128d9ddeedd570905ba4e2d585ebcc9f8a9b0e834043548efbb2236f2837323da460940ad578c53054bae962a0dbd62d13cc9133735b1ed07b404f0f92576622c42faac629efa1a9b700f349c025055d603b32c41778524af9dd59300a4d5cf7bceb7845ff6a08cbb202256588442f077555697977bee6373357cf672473e2f03088f3df85521dec6803a16a0cfe40b73f3ee863500ac3717a023c7a490420b79424187cc65d1d1e4f8487f91ddbda37161b0f4e84c928dfa32e087f170d1a4539dd7db0486f8e7f109b33094cc8aa8ca126ed9e03607aff02183756ff4dc89f73cfe344587a7776ec7df49aadef10082a39e7a5e06c2ddd06e06b54707d0194a3771e16e6633a685ab65718b68084c6fe7bd82fe05e444419ecdc0879140d8542c63b20139b78f36a1e22136e345eca19ab6881ddfb9636a4b0810a375dbc41837d4955363cb032ce59c5d3a72adbd7693b52ba82ed8f4846bbde05aea41bdb8f9d61a7959c2a942e4dfab863b42e1aa12f40329bff04e1c7c38b8fe30f1ca10a0e26added8712857a86e9bdb2baae6fb5e670d8b9b1ac7f2b84dae118b449ae71edd7eb94e9b86a0c792391144f8499d9c73011a32019a6b2112ce883388d52a80e185922f58bd610ffdfb511501729fe1c2bc1f224a46940665e50aebeb4ec1acec22251941b54bd1af0c5071c13c9c307633e4b8ff380d55eaa1050da35e470a7c6a134a668434fb2afdca49c1770bd8a3e4a8cb5465657c90ce04727e528202465eacc8b15a91c8c053c6d7e3cca3fd452de7413f887cc8da3e8b6fbc3738c8864adf26d91c3356b5de9e5d9d9842c13f09175c0f749bb21f42fb5aa2b56d74e0add4a907b71238e3e738c439e75df0094612ba0bfbad8529c04e90af4c75e9dddbd3f6390e31ed7817e3028426878994492625c980917512185d2f911f0a00ef10bb0489ff1ebfc59819fa4948620b39332e79f2adc07a2d873b0f93b71e0074a4721eec35d9636f1eb53f259ba26d56e087fc260cda23c10c482ec0b196312f6fa51c0560508e35b3ba0fd66c7f781a2015227eae4ad5f0a6fea90a3f7476db2adf29312a756a96e62a433baa0f5a70493491bc92b18121ede4ff78b748986c4900d5f6bf72f96c6f2d8c0f5acf09ea4f4902bed21783fee6dcd8a080e40092c0549ab4a5eab4e221e053600ca453b30844c14aff7ce10380d105e6a73510b6903348afefaeacfe93c93767dee1a44f404196139df8706567bc39b8b90d85d98e02296b29474a057cd083d3cb92a68cfa185540df3af9791b788ec9792f94d017dca6ce6b2194367bbf834432ad20f45ba71d25039515d3a981e4653a384d4fc68cf3b3843d3da6bebdd38a845238eb6896d558580918013927e8848386bfd5708199bc9feabc22b9014b201ebe6592ff20e6cdfe7c156fd96b964ff151713e42d8b28c28a02e876a15ca6740e5e1ba5490f80203604d46f1cf57dd15cd30b9cc806a800448217323eb0d04b5f1df07a235ae394344c304f788ac6c58d0edab077e422a8e2d8915c66c3992737700271a10dae87052716a06931cd1ab26c537434f187c1c98234d0198932eaf5134a61add3d8086c4c58dad80f113a8bbb91a180a811bb41176eb2b2393be579eab4bfeba221d4d16cb378e870fc78adaee7112eea9b7890c4c1a972cc4c59b3763e18cd4896e7286ea5d680e7b1bb154b0480dc70bde9764d33b06bec756c37aae67eec4e07c855879eb39367ccd3f6944e0dd59480769373a0fd0dd24a6bac73c0ab3e391a1ee4eb74a75343089506a60c647c087d73ce09de4e7190769ac2fa1523dca735965a107c7abbc7ac27964bc0eaff5472f6f3a9fff8bb375c0a413f3841215ce242678ab03bf9ae9981a5684644c230a019d094e82a6d02254ff2a52e8c8a1b65e57ccb4f4c5ed9906a877bc823274576fb475de597798c68d411e0521023c16ec3694536a187e6d57293060f08b183dbe16efe0b2fc44d7aad1e58c036a920079bf9b45f32e44097f04fa670ad30c923b6b9a458e02e81a5089c2cab4ed37fa823ce39f845d92f460a00beadb566552e4aa9246f4700512a63d107c8c739397f9cd704d82380b76a96412338d76638572e5de3507849a8d2f2ef919a8943f4dd4c35e11ea5ce38bef42764e7a8a4cd7616209d9432f519a379437929e2b695d1631b4708530ce710261ff9b1cd706aebd84efcde25840f04f2877f068b6efef37c7b5200254fecedc5b50568078772c0244ee80d9a5c36d8a73a2156e86084fdccedf1f2212b80816eff3d7e92b7e618ae9f89b52278e8c40fce041cfc7d663fd6ad653fe775bd127b1d8594d28d5b4046fb99cd56058f9f2fbaf4145e6f60793c52cd0f4d9a11b0e59557ac19bd63a0c8fa9efd422e9900687f16324866501f927f8f859642d660a71b87913860f01087500d46514cc78a43d56b335a66945c28ed184ef8a8320ca200caafc2f350a836805bd5c2b186d213463f514eb44d6c581b19924c038baf2bb5783c31e9e8d6692070f48087c6f807e5b010866a566931eaf7580dc769bb3408aa5602b5dee7a12a1b5612c476f0cebc47ca8232762525f1c4f28178f303741fcbb55f432004074bf16d2ef43599dde021ca3083d7e8d322c328fd9f7f2ed848cd636301ba876fa0b4aea1b809e8c53373516b4fb38c4e2ac68d79a1f84d90e658609aa3720e671e3d0be3ded4e7c9f39794b5a919c43f5eecef9f7e6b99fb31f25be03f13ef3b81513909e81cf75313db726ab6799f64f9034c30e71d4f838c4f0f9e03810ada7a0376dd6e20ffe8ee541981a602430335e4dcec8a30a085034a43c8ab6db7cc3aa7b348b7b3351e9d1553a5fd94560bf4a8bc7ebe5bc4f1e9fc5b691ea6b983d3deeff1ab004a34e0f2c41b4b9c9aa1b5c878034b5359fae39824c4cbd3293c58efccc9643ef21bdc1b6bfd360b503d276ad738b7fc164b6c8949f4d1c980c84e20d949a539b4b1ec31aad9bedfaf4e45ce4e519f977657ec5a8a5ee8c1fa46b0e5248bfe8a44cc49d629e4e48bb97beab35a69970d46999b3064f4b60a85d16672dd7c31f903bfa52553962b77889f7fd4c60db14edec0542319853451341b57325f347dfb6ba1cb70a8d915e96b77f3fb9297d2d98531a085067274b199bbb91b26e42ea7d10b3b9914544997605aa001ed63a4e153cab267a449700e7f76b4d7778a7749c929175ccbe96adfea9d923486e59b4e14caf0ff519c86cc333b7ae0d6b55159493ab112753b05cc71b7e10fb8cdfec312c2b59cca765830c822c040b206beba342f225908fdfa83a97f1b0b85981fcc3282a9c240a0b0a0025a5165bc594e984f3c208930dd13f2751ecda154a052871d40239af4d854d45106633cdaeb55de10abd4346f8d36d48fc89888d3a453c43c26cdab1b4393f515999f96c1ec7ef5bacbfa1eb697173249b6b0075333d16ce93d9776b027eec35be7a7f97c275f1e48efe1fa400f1513566ee530b1c97c894f6ccaad5688cc533fa6090500b3da1952869815afdbf20b9a28be6ac158cf9071a48731607149f7c1de369e8152f1f553e1fce52e278082be2a0ae992818baeb3ff303f663ba4347cca0cf6bcff1bf431b54f6b1bdc728f27d9c0079a70625f1532b77539c2a21ff9942690847c76bf2a58e8a7f6333bd621c5b3755ce78ff10c8e9b650b6a38b01434847bd9a8df4efa837be2985e7ba4af673d07d2b9a53e39e0d870a8c4f15fea2229dee7d0ee5b56d37016b9cb24de9cb2c3dff1bfe579cb7fdabf06eef8bb02533f571ac361ff85f648e64ef4f2b1ec051e6a4b99527eca63394a3abedd465836dfd0b2d5a09efa88e22edfcf83984d90214656f53b203acd932584a54638a1ba8ee4c225e0c64e8baf43610d3fd734f8a5efe382e754654eb2745f7e077dd5219dab4b1ed2e577a3eb01921fe345b2f7422d8a131fcf90afeb65b8880f26d45955e37b6e51e90872a766a6bc55148f2050032d27d55960689ec7ec856ac1a9369b9bea7e1d31bc2b6c4903507663297465efb5301168173d5560dd8b332da161e2dc64bc67d4250fafe204d2a576f500b180df0cf18f863d65b1ec197ea3639c1c0e65e7be7d5f5b4a3c592d55d5ceb6ac87a2c5814f0b604395731214ef1376004d67df32d6aef77de0a61dc2f617de1091a8d067143a0c58896a34474ad790821a7079a5bc9bf1b884d912a98ed71342e089ecd0f9f1fdc9b3df75130413c814fb5dd0f97b8b4bac0384eb12a50213640616f3bee3bf681264cde8d871b282dfed07fc64a69cf1968dacf17c586eed4813f39a079f47d5ae34ee3ff5d05e37314f8ff132ca7ab5a6f8eef3f04c5a7b3d479d3b29f772b6bdcb3a81b1767c1b717b5e362618a8a857fa501f891ec404f0128e5b5c0c25d1d3c2242ebcac522565ab2caf170c170489f4307dcbf10ec7c4542dab411428142c38918774786c5a862daecf973810983310149a0b76b009a8fd08d5be38acdf27c0c71a52cce504cba399b43e53d3c9be6d2eb83281ef9d134da6d363fb8e81ce7555151cef594e4ac73682c95d32b765c4c31aab56ac8e58f92f2d70ee99be50c9a88752caf9f785b39d4e9fd46e85586176cd92b00ae74afad5a99ac8f8235799dac6aae0bca946a635c24e17be3a7e770ae9a62e550d34e4873d379970033545f13907439cdb163690f12a3552be588a866e503a5534ca545527e273ad2bbdfc2479f13fcc5952c9c848e60dd56ac360f24761728886371965060e49bf14a61971b96a42b6318c45254486392316fcf0691e4298e7bee271b7197fdd2b5585fbc689883e3500e1a5f5348a0a255543a1700e780ea88bbbbe05e2a2aaebb25181829706dbda4eba99a7500cec27fa1c3c0b4307aa389f05a6576d0b3f3e03af128d08056638c9e4b4c3b29163eac08bf4728a476e6484b13405c2ff69a0a5b606503a4f2f1348dbae62c64696f0eb07d7f5d910500f13022d9611c5f7672428aeb71a172220c406a277a91b23b5ba38adae2db5a9d463d0f806ad6d5bd22afaa195cb6142275d596c75cb5f7ae283581d9e1f227540319ea593396b3d7492fed1986c31049a8085350c5b5b491e197fed102270e163e442d0e7822dfe0c4b87e7f0451e6bf6bae17efb6bfadf52fbc97a0e95e800198e7fbad8ead9b46b93e95965e98b95752ac7a296f18392ca9ffac893d72a839a174a791e6e409445ad2ab7915ace28ea0b1068d25e7615d390a836df9b3e4d41c893accc84ff99f617d3113932e2982987bf60e22637e63a94e1569079ecb83e3f1dcc3c502fb00847dae087c06eb3cc4b7aa410749aace7126af46ccee34095e038c39a0f8928b941d411cb1d9133343b63cfa3bca3ebb5584e50f0739972687739d0296d89de8da01b186350c772fc0a651088d5246ad71a0445b448335b2b199459f0abe54d433e74aebccce66f447090872109c217bcc68429e472ad0ee9f4d38e305d9bed939f1fed699c03057f5c02e00c399829136c35e179750d2f9b83dfe6c7d261c075dd832c0881fc521df60d9e0865d2beff9059503f2def777e682e8d656c8b266e493d9d2a538d346f5c74adf89d5514b5585c2b4bc98d65edfa138c1aa0c9a63f7ad67a25f741dbb7cce9016b79d55ad07dd3325584c2d2db42c1eb5ba4080268998667096d63587310c2a0d27c96a2e6d2f63b09a54f8dcf2b62823ecf1d9c9bd2fd8a197398c198f3de7fc23002cad942ef88839f62821fa805c06761259c484660df6c1cfb79fc4cd8f9e1da62aad885250c4100b48c1b0b972d5ef23bd0852adc267e3d55349cd4cd1019da6e40e4333b166062b855250d83899d748c3334f5ea6526bfe11e0503e303cfac194f9caf847b0a2287ceb6a4d5f9a81e5d7eec6515e0d6a7789f00eb568e2ec9ab035679f9293e0986220b89dd602264ce2a9baa54136731a7aa141be04bc9107b99de7b98a43bb280a06287687fae229b5c165a37da474991ddf6fb81bddbd206e63c6b17d4e7c6707eac78a07aed5ebe06aa6928a192065a347112b34538b8f7e02bea6d53995b4c8dce0e5a2ed0e292c870d99e11287dc6b078dd173e202ec12bdcbb4d180f15437a21955cfee2fc60ec5a6c3bd8c9182d9518866ec23881837450a4e5e799446e0a1a1841c6a3294b047e9dc370f923dc2c784382ae813bc92d7c05ecc91fc80194ba61e2db13437598746e0cb5b2b982f42db200904210bf53afd18b0826cf6ac9dca66a3ed8dc2b591dff1de78954658221949188497d9158eac6e5fc6116e2aead26704a060c4a4ead33267cfb2e9e97c694add59b3e22e18a681c4f6d200db409cdd0354c87a6d1a0dcc02fd52d42ef0e232f41b7b9b109aa9cff71d81a1cf32406d34aac1712f40ec01482dff9261dd50daaf98669b62173c372c4af06cd162fb675c96e43d19de0ecdabb043a8bb3b02419c1bd2ec256f8f2c9030ce186b13fab85d82ba4683c67306ff6cf532750b02d88c5ef2bef237999b32671df49b5ba15660d445424bd83358e8015111396ae3fd20c1cb4d296de0e07ff83d13dcea438cc130e051bab9722220f045aabad302bd8865b446a7e3f2e440f4dfe3e8620a96e52814fd41415a93d93ef490eea62212cb0b32818430c1d24b2b1225db6a92abd6f2183a23a6050afa73f341098e23ffef38f940526130f254b341808cca9987855a1a49aec57cfad3eac049eeae65c5aac4474d1a10ad9cbe1e374fca01cb27941841c3529436672ce942681ce4d60d6b358a876ad10e87bdd724d0c01e9bb396a2a01c1f6d343c900d1c8436751fe1737845ee51060124f069caa48e0f3b4c714f8b20394afa5ae4af7303f90ec511281856fd1b39920e1e348ea2e7192848894d2de4df6562f97341de96257aa6a638e7d0d91043e6def5c39baf43e0504605bce0a1e3892136840def33e486666d9907ad4f5474f4d17ea5216e0f976caa61c9264a20c330a3384a8f526b2361996d87f55872c91cd254f256d50f55746cb968ad7b342e8ffff76b532e5f3af69fa05d045f7d079c1dcb20017170ce3a8a7f9fd58ed1862ec52073785c8da318ac103d9564a9804c357fd09334e5034d1eeabb6b84b3f48db1f192f6d29878bf981447cef66348fc927674de2ee112756b502f7d30a554ebd6f83254cf814986680c699e872613269e3389d6d6d68e671d6f1a0bf0d7a6693b050a821731dec95adf0847ceb4936b96f9d2313869291eee6e14737f7424908fb44a086418cc17c0bcb8f86bd2148d1db9762529d3c04718153036d749eb3bd0d6593c4aff17a453f7a76a5b0c64d7f94162122c0338786a8574f01af2b952259902c3a1ef959527f224ad40b704b753d076b68980f0dd4344ddbeb2f5e4a71219ae8a74e16ce9b508177b6ccd648af582f65972adf11ae73b4f03de3ba03b8ac5b78fcfa1a9e1ef29e76efce7af5c50715ab1529d7f110b8963e215efa131fdc9c2421afac46bb75c1eb8ccbd72c4dd434fdc27916cb94500f690ffdd4cb70a0521137045f11fd7d1ea1b988912acf216a8456044044725f2a577affec4d3fc0ded4ce583456ced93d81035455ebc8105d87afa40e9fe7a20c9783c0c28eeecafe9f70244179f3967e88b3e14b505026b48c5753631643f50007749185087cc753b2fe3012f01e702912c3ef1e6ea0636d5c84fb4062032c1fb752e2201ae3590935afbe23d3c31f8508c0d1ac3d725c038b801b7f9b7f16d54a32322fd7d08b7f3b847711517a732218fde5edab31aa66686e6a324475706233f9b812429aba3255047a474b430a697611024239a556ac35b61e6e3730ccc3bfec1ac33dde2a6da38461d3943fc6bd8adb341167dd0b8d398e43fe859735b240fe88282cc283079fd1b82607f9df77fb5f27a0fa7172057a0d87755e6d809230280019e484120165633a3f40117a9fad26678a37ac603ed254d427a35351bef6f96f9ffad3feebe30387f7bdba01ceed972adae132f0e2c4ade490821c2152af9ecd5f47418ff6e4041a68491332b5238ea28e286fe81eb40615ca279255c11e6c144d58dee97b6be8fc111a95ba22442bed80147959e070f06ca17f5aa00379aa2274b975a8c4ce54bda0c0a1e3941e35619f575052d222e2e03555bbabd18cff54239074d8d131e67a079e767be87194e4ec441cb0f25c19e986b4e81041ab1913bdd9dd794031f1371bed33d8a667515be97145a95096c71f5b35163e57e79e726628c89e7e7a654a2ab3edcb25f6547e84ebbbbae4e23d512d6bc188f419e6b54143060eb657a090d9de4848d005e0aa8194b2b4adfe30e27383666cc6f90a8a4f52bf46d685ba06fcbcb212981af0ae9a5857d68d4f1b30e2be1538a5f0464a62c154eafdd6e30bfdf5ba6497d04682ac70ae67968672688083c09146dab5e8a19a4338b744f286125d78abbb0bafc9c2d99f3aa8c736d63dbbee4b593fde29eb37a9e5f738d11e805ae1706083a7c2025fa004cca49e9c4ea39acaad1f035a564dc7ab65df102dd4f9c12dbfb91b3287f4665017303d70470ad03c5e0b9b0cc8416b8679a147d193323513d91cd3aaea68c8c0e22dd05849ac27c5e7d43c4886fa924940acea7e57acc39115cfb7dd46418d30c0920d26816659cc43610d2bac15b2c73bc451accbc42e4b2af0fe8e2639698d8f103a978ed52475b18b9bfa3c58497b9ce3d628050c35b684f597c215a6e025bb1323881d962305b7c1c97cfad90b2cef1d84b922bb642f8faf05e591eab727de284fb0b503b0d2be4003c4143cb81130e45bd3d94cf19e5fe17145d8d4dcb33ab26d5ff93fef1641bc88c5e6c03188e8a9a26c8ce8982a4ce9de30d11569e14e411b263da96ae2a349f3bd465df0717d0c95fa03c67635daf5f2006f1c8eeba9fbb89ba9c7a968505d1ed265a8717e7077abf0be64fc91f73cf4a6818153b1c0337d9b5d08665c015dbce7acf7fcdb0bbc3f146647ed562f74eb38d483a244747a3c0f80a4344456b2f81908919a30b802902639e8d9035957658756f3bce344739dc1e901aa3a1517948621d6bb0dea0b0c2ea2cb892506369b5266ce0636846cb80703ce12c743a7098c785c885ef30349109f715b28485a68c4511711b759e080ed76c11c4a4aeb42788aab58181a52f37fec2aba040a5979fa392b83ac3358807755a16f8218b4cb86fb290aec43e83268d94405cf56b9629ebc1bfed87ebd95452dd0ca58240807049fcd9dab0ce24a6aa4dcd666163f340d5aff29199b945829af7cd875c3bb4d56182508f0dd79762b628f052396c042316227847098055df6f7302e1b0f705ca47705b46c112c8a6f01d9dc1d92dcc8d18a9b904bd59ea5b6879bac2e878bf41838777509864df4c62a5498b58024dd8604e8f98ca48d8fe890401dd6a593400fb249d41c21151660162b803047cb527f4a3bfc8a166fa1bd778e3dc5264e5f38f108507532c2bd5c4c9798c5a6ba49c4122b9b9652a83f9602df4f765fc0e968368ee3981055543a4f11540c3707812c0a0b9fe481f9587b067be53e27723f58a15b6c15eb26a332c2d650191006caa54cbb8545d5597ad01812cdd47164c0058429a2a68cae6da83c8e825d8d0f7549c898626475e97954f556369a05cf29be8ff626e09b0d9a1417c3d488c3693f39aeaa7e23d993cd880318000edeecd3ce3b340d71e3b1a9d4ac9ee8f6dd4f3fe5f71ec1b2d44a45ae879afe497b84086b1718254d4ac1d25500516bb57de61da0f7517e2b8c673f240bd02bdab586436c955319e44d2b9541df3ff1d59c65da3d1da61919831cb3fb2904cd12524e931e80e43870cc0a55f48d3282615507792a12e0e35c3e55c8728d577320f75a68b5c746f212a4d4215c08c42b8edd1877c4b692149f5f41d1b1d1c691d3d9aedafcad0fd2b9d55a40637ca336272b3aaa36752576c1d88520ca86f7646cc68e0fe45650edb3b7c9546c60200a8cab628df187d218c6e852018bfa966357fd7e9c24de3160628a52166f2b80f96189b3b5d56e32ff462782e0f37da78b78e273f85f702f6356271c783f307f1db04f9b1e44e86d7a530a26924994a706dfb1057038573bdac8f6ba394a1777ba14562845455b87fec2874ff1d5496760cff2a21012586c0159561354756ddfcc05a67f0158d3e23bc9949a525c8e68360fe05043cfa382e4f08b8ee58649e606db3df09a45846ad4006ef9ea1e822e3d6829c32156f9cbd4298c42e625e3949f03968df34b69fbbd9d59c5fa429be2614f25521888f89e723a61ba5030860673b35a7bb0ad6edb34834d29ad1d72ccde44db0d470d868a9c86e13ac89f7f20448e57908a0e8ac87892838223d705328ae2664fbf4820ea712d6bc2e33337c15bae17b996e52ff54bb75725d6ef67c9e1c57843adc69fcf041e10848717952c41b0e01967a21b9306a7f636c0cbb9f3a130b5f3d6ecafdd9eb2e5b6f137c204d7c977716e9dda82b824714ce84b60e76535c8042a764ee1fef8294019616e6321572e72432605bd6a3c1aa9e4956c3fd7b98caf7d0249eda00bca37d7eabcd0d8a5a61fd843eeeee5f0d6b282e1b96529d7f02c3617fbaee5a59ad4a62b3d7a819fc0fcdf0173bdc56a799dba9372b2c29f5e70fc4c3ba5f7e48763b987b96d0d3f014c017ee9723ffdbb86de547c7861510d93277654389dc48ea6004a4d0200d6882d9ac1215f977feef438a3fad4d016806162662889bb8c8286c317fd990c08cc16b3ea9177dd272749f15d6e34724a898c9f7ec06404361fef7189275ea04a070b757750db8f312282d0b8eda9cf26c73a04560097c0ca401d9775ed5fb061e1147ddfaaf47ea1e253238f21587c5e2b75f3bf3673b4baea600b2c70d6f20607b8d5a60b795925d05d30dbbac5803fe6dab9fa84aabc94fa989c6b1d47e415c9f12c33a3ecf763d5568a4a7becad708ea37985b177716fc748b630b26084353f2ab1c717beb3c9a15bd4356939140c463241593bbdee29850c45ec4a83abd8e07d4a44a83864bc82d04e0cd3a1ae229f6482607c88b94e52ea7b5c0eda81b085e99ccc841863759376207e87b0dbbccf76f48dd912b6ed71177eaaa7499da88a03389bd230c2d3ea4805c27bb5202c6793db621bdf1ab17ac4419807ee25764c22143e486d47233a32c07f109418e0e2dd6e0752422e84a118f7ec512f6486b356c8a984829b8f863fcae3a6e6ee1d32ed0cc3a7ac082ee17e59aecf3708b41e5bf3012f50bd1f2f7e3cc6d57ef994287be6e7297a626dde6c2a4401c1ec8f7c4615473364ef5d7b5cec489e3bc157c0192b6c812459282098b1993137220199f42a8a33a7f53d61585f9c9dfef33beaf0660a7404bedb2a182eda01e2620e6b04efbd380e29d140c2c040ef518f6b5831e4ab16068767ac9e97547aec9e3dab5a9d57964e3a9a39d483b40f46701b34ced650b5da0bc9e8cd9cda43d00d0c1d86a0b85bba844f17a467a6f5f469bc20a50c50eed15d7692a1aa65f90633250afa04c2976eabfc263e4cb2cfee2af5a91d16d8e6c176aa3ce62b0ea9062886a9fe06a5165eddc3eb33ea9b19db7ccdb3f97ad9f9c1cf2137cbfd00ff65464f6c823613c1cf44c41e0962558726a898bb6daf5cefc74ae23d2a3625beabac3c86de579bffa4af92ed5d68ff12551e3b6cdbd2a3789f78948d6bce186784aabaf916599c36ccdf27ff6a30d97b01789b0eb06f9eeebf94b32963c4ab6d358d5e197dfa4a734ad09471e77f1c289c97eeab7fdd94916c956af377887c05078d7c92db48e992eeff2ed144a1908a823cf7ed0b1cf767ab7e1020c36d5a265b33f0ace480fecf8bf20edb8538f91b4577f455defc7ccd5373b523a8b521ad6af681534f201de0b3864a64b834336a93498f639a7b786e964c092ca97b29fbec966bd2a3299a4cf50cdd8dac50ce576c5f15ed7853b523de84791e2c544883569550dc5bc246e78a5a4fc7c395af5be2b00d8212d00c02532e9335a404aa40b7a8295d0da2f1a6dc9f566545d668cf0a8e07b86f2e3fa390bd411448e31c5d9f42cdad12411a5f5f392e416cae4a70ad9ea9788e07957f6e8086b51c26c4d7972d179f07fb519c765cf4c7af35a16037f4f3d3b8d436a85ab0dcbf5f65968158fc6c75f441ed943d654a7a762a76a9e5adc45367e94aa10780b3ae4c3b8080b89ac5ec89575acc868df7a24aacfd4b8d6a98c1a237518c400d9dc35aab422cee792e4934599f4ba61e8a9763e915cf56f82dd8ae608db84b9b0be57f86be28347d5c33a5254afa50baf25aa41fee46dd87a31a1021a783fe96b998f4bd2251b28afd08ed8e947715b0d4df38076626cf13990f8810a4de986ee2e9a7e27a9570f19ff3da19d0fa8d9883fbd35ada6061da5b235118dd5176f0e94bbc321d33bb48a53edecf9856de79a7a9cc7a7c59bebc6c2740b35208373f50b450fa191cdb44348ac7e9e4163f221434030e804a65cefc123b201e174aef31f3641bcd5f9ca59c30c978f3ee909850e10748509605c7816273c4516b64b76e001edd6198a921180676b9ddb034471038c6e7416c23181e220beb44c5948eed70bae69697875791f208a344a2fbe70a96c867b93ea628683d6759701f988f20a1f1c0abebf613f857eb003e795a350587b951a7c9bebc3e6fe2e98519fbf4c728226a7b3767a33845f0afa7a9ec39bdb76c5ba791bd07fb9e4936472b77d03b9fd664f68d56a5d2363005ddb53417feb8770eef427e5392d6a84891cd3ebffa97d694fc2b772faa75efaf1e8759e47f93069cb41a7769de3d93d4ec7e07b915cbd3a5ed4e21f031de2e4a3a48a7e53485f59141cbc67503aee144516a986f0dce06835c99f40db714ac84e664923e4dc0f759f8ab178d64d393aaf26bde7b21899d39fefad52ace38f59fcd2b046009a96430b5d9a74495125597f9e6049a18b1f6fad56a44827a9126a2e1719fdd52ceba729f832d9039918245d401c392b4f95f867a9f01d20d84fdea461e9c8b448b27bb2845e77e3568640be66732302f510e20a7d9b5b24a460265f6791053c18c940859fb4f3683bdaecfaf9e3b594d4cb3877e756f3cfd75e886ad9b0e929c47dad0411eaa49a9d18ace7eae2628d2757eb5346939da8d097d79e2040bd43cdf8466e4d41e7631fb9dd86ca30e4731d440dc4006ba52bbe7dba2be9d33bbb3d4c04afffef6210be94c8f28891761b846ab7c16ef6c72cc94a6401de1f11c835952c412dfe51bab97e6da1cd5f49a3d9a5d20eeedf328201ab527febb1fe98d84d722543bad08c7009f132597c691d33103a7ce68834f28e3cc8e6fb79111ba29525e554d8b887a65b2e047660ec591354e89c4949c5477f42dfbc92c163a832f5d525a0b2485f17b3eef1820366b2fe2387c20074f6e53eedf8a0d2789aba8a6c6d3e1b278402289a021e5b8605ce8124be48cc09763653f7a0d0e2a5642d144dae628e78fc800bfce27de3cfee6b2544d5fcc3f7386039866aa4410617548c6ea01ecacad93e6015e133b16911a9e034a37572fbf982ce2626b409b6f16d88e98b21ccdd12b8afc7bcb57871bec1bb5e6f9a7fb09ec08bb6be78113ea7edde74c70812391de4501044339561ff2585dccf595d110539e836d19c228d852a24dd643502195b773e9253478ff6f00d6072a4a4ab177d4602eeec559669002ad29080a2e3d49dace82825aa2b05686a343ba922e7a6d6c3979aed1018f7bbc06bdc6243c448f742a57861945601419c3fa86d9dca312d2556d868ff33e0aefe72e8e0af8014fcb3cc1a9ece1e337ad7c4597eff9f1660fd09d429bce1f2db8d546aa643a340be3a17197cfe8443c92a6e1c36d2d0c8be5d6fb0c533296dc07aa251d352643ec54202c903361bea949e0311d5264397555866bfecf45a6d1bdf7c61400ab4c4fe4d0ed4e9c01be93d065ff0367abc995e58b60ebe28baab80572bdcc813d1d92b858b09931bd9424aac80a083034fcbad10e3770dbd791c0cc4dd42d6d320380569a2771f90a9ed0d972a58c3ac8d906d6f8fb1aac2642b35ca11bd4c30ce0436c88ab4f52c9d81c9c986da8cb51f824c786d944cf7f6c7c38c261e420e153be7a019c84228ebf72ecebb96dfaeae962f5743f64393c9de08067fd605503ed0b92551eeed7ee6c7a7b91b1e23001f5082735c9df2ba07a253438ded87793296127e4927c7d3bc089fa2f45843d7fc3362061a747eb9688edd90ffea8e5a9d76a35ba4ef9c02dd8f18e0e92b4757b63caa48bbc73a0c3986a84f27c92474cfda39e2b8a0baed67d9a07d6c968ae9c0e9fc02b3792232624eb0df3914a2d5d869279ce122c2f985323873a43b6522bb91e0781c0dd457d91a011aa96c8d1a0b640e1960b6a05c58a0ed7a5c4d7ed9f71c1b5c9f4c2d17c19d83f25fc2c617e5a57a77e02a1e6230094d263ea106ae89fb63f9ec60a8d99cae35dd9c86b40bd73a738a3814d19ab13317164a63c03d28b4f4b1c2be3d30e27370453f06281296e21148a47ab1e16498eea4de8b466a27ea933f8eea22132139d66ed9824576569b31f68f94da2d3ce88d0d5d98ca00e83ecd55ac4ca8f37d01c4808e1c9b8cfab83585ebeb0d432a4b932bde82a807e4367c215d2c4ca74d7e834fe3744544e941dc2bfad0ed99f974bb49c46310a1593384e6bc8eafad85f4606a04a9a265c54b71edc948aa78871b613f56de541a5c1f74f2a466ef94b0d18c9348381d60ddd984ed3706653714f3747f59b1e077338805f81080b9de34da2c8df0de954dbb9cecc7793ae2173d016f6ac505a5e72dd589dbe6f3dbb0b756db2ebc8cea6a04440029d100cadb79771216040ca01786883042660cf5ace80f77249e3d0d5f54a8c8f59e3b64420600f7287a018cdc06b11083f158f43a1cf5fd242089f6b695278af35157796934bc58ce3614924e6c513b137f3ebb1f95b77d6ecfb113c12eb5c812af96b148e1685b1a725a54725183f0d3a7af2e6b1e94dc36f9958330987f1a096abbad270bbc479c4454296a90b27e93d7a28a8647e6ba9c9188946eac102884a912db593f90cb57fbf025db2ad840d8a32b591b798632e3adba6b04ad1ef9678be5d70511726400db84e1520f10fc5bb8a99875bbd1038f4e6bbccdcf1ce339763c4bcd77735340c220e2c750bd39288e698bce09ced5c08e6a92e90d2e7ba28232690fe8c9384e5590e2c73b3fae432eacf6c14a945b94d5f68e366718a14015a9aa27d1d504d4f7728d0f364210215d30a67a3a617fb9ea6056803058d628f3dfd16a0fdb24cc206e0b222421c2131696166daa94a12b4d1a0bedb4ca489fa9f01cfb96c1ed90c2f2c0d0b927bcbf1414bafb780020ea8679782090459d1a3080044d8be1f66d89130060ed836d9d506cd21e5026edc5d6160acef4bb1839713e4fd01587ee853594907f9cb35216b201c5c540acdf7df42e2190f90430af87120ea99459b523d3e1382ed538755c81c3a5e5b6ee7a1bb4906fc46013d08bd6daefa3257eeee8428c27896a7657c688bfbd4173540dfe45083212f94c88d12c486c69114e7919f1acdda4bfea8b0ca849028650756eb939ace2739e70b7d1f515fb136801132988e97052d65c0149884e4131fa26336d09aa1c6dc4bdc984e28dfbf4390e8a752b7f30aad32e956ee0d281cf0e953298482e65f96e543bec8ed764206bf3c0fd16eca7a2ad721d63cda077a91769abf9f41c967512b75c3ac6f617a18cc95561deb0854b11294b7fbf34e02c83c2de205b21fb204ab5d8f6aa883ab694512cc8183779e3f0584d5d70bee0cdd091c7e8c7a9573a2cdd4a4ae7b698365e9027c9f195f5ea4620e235cf7a563f9c490f024a0038c14f1f0702a6eda62f05da96d4382aab60d87596d63392ea890b120492d97bf6ff9b4104a62ea888f054f7c76b955aeec539836d93f92dbcba7c6375f36a07d24dfcb502761b964ba718d13bd2b115efb3e6b31b2ca6bf6cd5c0a40a99460268f05b3bde67f9ac4c51f0145ea2867eac97f1c0022dde6c49f847d78e4eff7348dc0e9542fcd6e1033c889e13083c0c2ad2872c113992c5fc5f5167111b1d3ebba16e4ee6af6d06b4681db462ef6806f9ecadc11b40e6d6309bff949e73f1ad345811c1cbbd6c2854dafd3d67de8b672ba4f18fe2939b69f1deb8587446d8631a330d3c16f0cdffd9abdfdc9ccbd7178b29b8e01ac64ccee5c5e24723d90ee1ce81947e4650451837e09ea4c677eea87d0425978e426d8c78f253312df4729da90c94521ea82ea405123e5c3f20ec160ebf8fb8464a5f1f6d5f00c7909dd9a06c22228643c3374520738f17af145bef604b52761e2f8dc318e13f33a44a791f20a2a00005f1d4ae035d9fdbbdb263498eb2b90efb1599ac23d9fb94e7e8dea6d4db9297164819a72d002d3c52abe8faa064a45d355ecf6ee2aee55579b808c2ec5a0fdaec65f82840a86108095943bdb0f57e233042439f5cb771798c55b1ad8bb85de4d296da3f75045689aa6a775ca9674f06f8f8267950c9b3b8192a14c1ea10f5bb5f669e5bde0e8b8def9a18db13e5d08ed06d60409084405645fb4560d350f46c7d06cb079caf49e9d277aa097a317d0e3d8cb6eea839e3e875e83170a82be5bdd03005fe42c63060459a1f3c346c5120829e1d6176efddbe0f065da11f62d6b63bc9d021c2776fe319a3e51e1a9f684c11b50c12d7f22def38237da2dfd80b9183c3f6b4b4c999d3363de4b7274dd271a4e14ca9467588008f6470f1673a5be058884e4c5d8ace98bc71b32c5fa4db6a201e1ddb01eedaeabfb1ed3e7cd41260c055a80fb5ea61aa42902374cecc5156cf8595da51534b9bd6850d77841def85453d834e23112f0fbafe721f0f611944e174c92de8a917e549067c6938e619579dd14c5da37dc035288aa402b8ba510cd42ae0910ff3998f0e7ff18a8d243907b77f2f29904156f995b5d4f154aab24c0c4e107774629acb35ad3cabb35d5070e410450a77bb46a9b654ca0b495061334adacf3e8958860fe293213434e705553b28149b1a6a8f1d40360f6ab87d27c5b0087bfd24e0be896c8c997afb4ac696b85ea7c504b0f6b40288051e19cc2cb96542cb90036e539925bb3559e1b68665e273bb43aba1434ea41ff16806a56b182cb918a593a9dc07be3c8d450b5c51c8a37be7e4f2d718b60b865a7cb022aba4ccac01aef19573cd208b198fe11c0ece82af19a862c402d06498b11f8182a131938424c1b220ad1ae338b3b41223f9fcb5b63ed1fc86d1041819b369e9105c48f6d3a90bf80116219321235f1ebac176a12c04e14a60c35d8d59489abe001fd3342991d423bb943dd12d10615078c554ee32779f872fec8e3d591618d880080c034b3c5f6e416c4805edef84a65e3a8d5b20a390182e6aa468e91d76e0381a4dbcaf846677fb25942c1f8799a24e5146793bd7846025afa5642cfa434570e6ccea36908cbe3202610e4148210e8b84bf76df0f3c68e598516fb09cc3484f24a033ab3ed27889696a2b7c9e61e96cadd8bf956986a1beb3ea445fb4bec7636c2740cd4dad667ba1f2dd58fe4db9ac88df2f51efc329f348086f0cf7e43016d76b1a7c662b4492e1f1ccc6331171b9eaa0fe3c6db3852f449261d0a94718ae75eef11849f1d5062b146f115969504120f64145a1d2d34f16426da2e5c2fc3d33b240f809893d38dde837bd0f41e38369351164935880df7a7d0a08f95eb6b95b8e5eff23b3fff922c8f501431ce309113dd5ef241004c78ad68f4c6ae875472096656c4df42b5d39b3f5428224a765aa4637a35ee3bb2791134ccac83a306bb05e998b427b38e8a4600c068f59d9b435cd5ed256436a603a1589c5a6af0df6c5be0e0d93be3380cb130abad435fa88ad12ea50752309550486d1f9b150f1572ce47d58c60d32cf6ca67978a0a836336b8b41fc2565d9b2244dc5488a289f0e46c79527252b7e507612a442d2c826cc169faee9e96b2b915f2e1de0825bb747d41268997009a74be49f072d2d372a3762a702b0adec9827f18a73a4b1a637468ce181f54a70352a49527db314ab0a03d1183c62ad311a5815514f931ca2eeb48602f71c3b9b6420ba5e6efe246068b13fd937c435fdd85ddd06f53458112f56062ca95f37a2c8d13121e78d89f2cb99e153a88acf7fc6bb2125fdd1020008941c7a92b9678a06f0ac6b19a9366133ab254843deb6b345bb9c87580ee3593e8a3a685b64d0825ce00359d0254b4683e16ffea93bf1cfe416f60a58bcd0f7f7a7fc5dffdbd778d334da3526d7fb936a18bd80e2e9748afe0511cbc2a594afb46234348676c3ce1da565c30801d2878e65ea2019181315baf2d08b4f60b855049ae6831111fbfc75d4a96bbad06e4a27b3d2b53e7382a212deeb2381a43c888c509bcfccaf188f0be6b366b28b1bae3fe385f65d0695f141174f74553fc1ca7030227b46d79825f801593cc06518085ce7248ddf7ba3228fbd951ab1447f5b7df6142f6efdde24e568ad5c2613313a009818fbe51cf9ac8f6e69a5c5f43717f7dfe6db24ce98c6cf7bb0cc237604ea09865c09bbd0f92067902ff73ef94d199fdb70dc28bfca1ffb3fffa2f7d2ed9cfdce7a80c14c1cb26ca9e1680613a97a0c106368c1e351d2cbafe9e1530b0cb7080ae9960dceb02f8184ff98ec40d5749d49c05cebac702245fcc9dac54a3aa517159f90b580ca5ff42095380016f470630cccdae46b8afb1157f93886306d87efcc11ea96d7738b1effbb76f5d1b295ad313d97d53ad9020780c8b892d50b9ae7c90ad9ae74f0e58f26ca997a5f6d87f13c33168d811e527790c241dcc89b25e79cc67b69174f972d9240c916eea9cac51d6ac5f04b9b9853d90ba314ff11c1a4578ad693bec69d6e88c011a30fdbfeef11f1cab0b3ec39b2619d32e1e747b233aa1596f93e017f92c85cee94b36d0ee04e09d6e397629495daf02117e01b684e6766532466f3e09ae782577055a778fffde13266f591d2c74e726d025b81bec3d3e5953567a9b645bd7b3812974da51f28e7deb47f32f37366ae1189e04b8d0c29e00578876eeb5a91d9c71a16b78d4737b94bcfdb79b1d2b0f83d0958095db3d5625c3c8db44093851ce3e2f6f1d1d9afae8d1c839af2cc3c599d8c0020da7c04aaba73c6c865931f74f14831387c80de7441021615526209d28f80edb08e798721483e1b05fe8814aed5dbd0edc3d5d715e3eff671d370ece2b84e47e7e12ac75cad1478f380bf986c465a3b1534dc89b597420f9fcb055adabd5b269d5fea1beb4501c7cd017b4c57b1c9335d28aac39cb894bc7d414c0aea08df13e50d94f92cbb69f174b5f2d86a1798f0daa2a6cde5c0fdf4fce98792beb905f52733a9b52f56b276830b682888fa6c4343f51d24ec4d063d9e3a3d98e077ec0469dd3fcd1134e3eef7e190b48e3a8f29c9e74a3f2e64d31e38fc0d400c4907cd2e2b8365e0441b262e54734541b9d0bb85f00206a8cbea2c2ce744179912038647b9c89147805d6aa56fae49f1be4b4cdeccc340f2137a3dbb228e15dc9d2cc52e38260aedacedfa86f89e7258d6f2d23e2baa118984a2e89e186c1e111c524844dc616f11b7121fb13974b368f30414916473c088ceeb1c0afd46f682292ffcbcf6cf22789f099730a3597868a0b2f0ab2ea5075ec6c18bcc868c2364f40168086c2679eb084150b10bb49a9801850898eae55e18ef68ad2b3a23ad3784a2e40528ce77e64e02817e0fefa3e9557001266f4fcd31eeaec46a573f9840391277d0800fb197cd7ee096e430020c516716622590b5d7df462311fa48ebb29dd01ace1c016096e602699cb175cabd3df6de8a02f1fbd25425a44bf1b64cfcb4d9aa1d5ef8ec5e09c615c72c044853adeeb5a806d48ad68eacc66ab52120a41f873ba1e7a5ac27c1ec9cf3df08c1132c033a339ee0778ef671ab710a39f9970cdd445a9ec5a706c4ca98ee28aef5feb873c6a1a84e2ffbb25949e51fe76b6758d1a7b04748ffac484ee1621a37fe805e763ff800004d8d7d4867cb200db6e999df202a1468089dfe03d6aad6062a415b22ac68d673057850974c85a7764e77f3e98c3198aec0d09ad47cb0c629317fdaf2ec8689de231102a3ab00519a22b1ceb71997479cfa450c8c034d2f52d83a862e2874dde3d39e30826cdee9675d17ba1d6361b1f39b6b8ee24e1054f63983f5a07c39565388536c9f8b42bc8ed628f4ad779b00a091a7ea318706a63e0ec0a97b71e7cb54924e30c8c2570f581a20c168bf3db937acd0081f5e02072ec452a11a355724d418f223230bbd64089ae1944d8509d47999397d42ae42959fe67d1224e8dc5b6909af29389d9e34ae85b95d799f2886e22da15de5af81b368269dfb1b9546a42095ac6e2b02a7069e84f677a85af8561e150ea9c664e013973f0ea4c61b85ed482c44caf57b0792e03ed5197f0d4977b4c0351b61ca91358fe818db67a581a36d2270dac32d673eb1ae44b71c45677f436746dcbcc79ce9936e24f4af7d17ef36991403c305eda7b24989e08d762e73138331ac6cb8ea7cfa6ec3204bf7a0212e4a80ec46308fa1c5ef5d3ec8b5820f15cdd1bddcd8beac0f13e5444ad81790b47359dc71512c8d1186f9b5c623c02e73d240c76788c33ac3e90045ac287aeb6658eead57dc122b36d12fb80a5e608ea7d5e3b072c97bd39d2b9df9bd6c683414c794a4c4b55424dda2b6b19d3842cfc2a7fa52c352061d0b7e0b0c83148502b4d1c39db94073f8e09800fbb9daaf0d17639f7e85f6b1a257d1da9560c43b024c0dd23ee661435c0b21d601e7c675255097e40107620a3a26aee59fa29f8638a4e90b024e49e8726a6cac0869b54432d5b92ff0eacc932240d107c215afc67d821bb251bd3cadc8b8965c72cc3cfe7891b600d836fcf4cd656509b8dc19459852729bd1b2388936074320e69fe89b17f30a3f51b2623171a6aeeee88899f46f702823d62a287b194516f6f6ee52598c375d5259877df66d3d48b059ef5f978032dad72081055d3284a0bfd0b49e8d9a30776fdbcb2b9f9a20037e70bc89e6ca99a2f088d276efaa013124f9634522406bdee2e0004d68bf5e61d1335ed3eba5c08cee03809486c905d75a962be4693ab0961db1e0a246189912542b8862d6853631ac7323f7b305fc124743c4a5414df146462442962148090134baca280626ad64a04344a2a8c374a80846d35e605d1788b959c5cc525b2467d22a065aa02db9742a5d249a094fa7a975abcaa062f24dd07de161ee6f73ca97fe54a386208eee1cc733126dba6aa2bf5d2ca88af44bfbf00cb173d03001464f2abe04600d8209c49b68bec5a64ba06aa1a9437570952b3b054d8897778aefd1722392e48a9328bfda5e14c97f9449a2d7e1a43874a318b8fcbff6035309533a57884b0c5913b4834a4a394012aeeb6368210e3a3c55ebfb38c7a8a680f07de48d96a54ba33f177769ef6d7928e09381c678db3c3097f38cef1a6347405f0d84d4f4f89289b1b1b55741710701d327347ce5335fb26af4a6dbca7e7b513e48bc868005a60e34a560d5aca43567e1e89ae7773406fc4527584d5f5dc41002f7a99f3c8df74aaf2c7c577ab6eff0315a308d1e4dbd19a26b484059e60f15e8f7b409af131fca6dac8dff5ceea191286f446b256a48376f21ca2c1c9e4760e3dc4405b4f3532b47d30e75b3812a4863a0e86945d1ff27bc81acd37492b6c0cf9a05a74778b14901104b61474feae3a9b441e4f727e256a27a9f59b737c51527376ef8996bdbb335bdced2fd2af50d49253c798949460474630294d9612ca09fdc46e4f67654c5d5380bc84c1076f0bfce5d7550fc0d7f38487a9e46906d196907d9e00ca58357a9ad0a0ff34742e01a2165946693c6f2e79cacb6e0b03c689d726f4714156c9bb66c9c388ee69c592e65a93d731184100fd30c9a1d4e4bdf57e81d46d429285036fb09a388567b1185f6155683157de2fb4e079ca7f9b06c002d110275f3dc0d52afd4ad88cf47012c37ac95cb738bbfa1d38053f5d49a699aa3800279b1641498689e24cf239ba7f071d75c461ade1d1506a1856ccecac09bdd93674605cac8c684e3507182e99a8c3e67d6966038f03b0093e0fd1086179443106feb0b8fa30e46076649dfa045f72add0b81c373efdd390066ab016a6ed14763ddaa85e8dec464a35d72f3cc72f0dce219be69bda3a486d5857dcb018e6afb70f843cd4a3501b65e25b8773c48c1e5da4b6eb66ad6d5acacfec4d5b99a85db3aa8a72a9841f4fb5324e115f99c7c5a3f095b2394e040953219d3bd846247ffaa78fd61b8768f047bb8698a939f426849c00b006a7758aba30cf478d72b76e2f432cd4adf02bb011b3f98354358de1f52d4941084918dd7cbddc51580999edb38941bf131bc66568f73af81a5caca521db5b3b36fac3b1594ba6dc5f894da9a41ef9477452cb64bd91f107f73f38c0e17098640c47186f5db2da5f58d77009e81e2cfda38f30f0ad802e54fc7b9536b05a5da683acbe34a1ca94f993f6d65799a8909c3156a02a0833aa30201624537e414dfc0ee409f5c6b42996403f7010904e7562838c423ba8130f25db44095edac3d71e3ecbd57fece07a0e0bb273f938e979b6b3a345c937e0707ff8d0f65882b9f3035400ca7f13d09a0f0f8d4c732ac2b1fa0e3abe9c68c48e8d0ce60214ec1ad2b11c8a07c3d75eb5c1897a96e563e3eb1bbaf792bf245a68173dac1366a3567a45ee47a94bea2597297072a636a944a3a98c588748e361c3d0f849f2ee4c77908287168a172ab9b745a3dee225b9008e8c4d55d7acf006bd257c64b7d50d2568bd5ea8d5f65689882f135ae8b204f3bf5e5217bf67a0ec16f67d4f029ae7a33c0606b4bba05ccd994fdead933b89d69f322a17db036ff702a56a4137d5289f146798c5cfb5d282dd7697d2c27956b1bba44cb055768d893d90f94a2dd6fc7de969c5ae35f1207fa46811d8acf088dd3bb05ac6eb0be9f9bdd1f95c45a6aad141df657fa32e2a841ed4de472a8e31f518c072feb5b862bcc0c0559f71860f850703f054bf7009cd4132ded7958375bc7c05acdb5926ab5abf95602a37db02837b5b78cf98151e4fdca8e63288b5e0346e774f11972d8e605677f1f6b6a264604742f5a73fe02750671887eb0637b14ece62593c28fa21f33ab5926f3519c7ff8fcd7785d159b33445854a7f2683fdb21d32ff4536a0a75b55d64229f8b82c6fc86fe34b315916f230394147b5fa2896d72c2d79af5e2d49f95d50a74249bae157a300bfce0ee2d20c2a189a5cba6cc807c61adfb21ac09dfea4b63369db387a12f967cea66965a90dc7432b8f7ed692cdd72524650580b81b5cd64e2cb072415f4ed1df63715fa1577a2c05783671bc60ad245d6e0f8ef1cdb8da9c174a4d64e46ce6a2c913ea87e734c2322e06e7fd04477f525c5187159ab229cb7d4b15caba4c13d00b69240312440adcbc08bb3f15136eab2094ff20c08b7944b56b84dfac89cb2798cc36e769bab4d731c8b658499605f871970b0e9b34ad53c402801567470f851756dee3f3e45e189b148e67c1ec131019c0748a3581fa00a0f8067b5a5c9bcc0ceb3984e298531090ec9118cc0c780bfed30f1a0518134e01340f023b05f8f4b327e1beccc639c5300b2a82b81a1b593b8f6c0c6dc332da2eb80fe132eabc49f392a005360479eb722786b7975e80d20148b048f661685ac2e27ed4bb31d3383d1c3d37b4cb0ae64eb291cc14befa371afc4a5445c261f24a5888366a4a00dadce40ea00dd41774dca6ba8f89c05f0d1023f9a09e4a0b5f166d603e7f48e5e7c0657859347789a3521c1451bad342711a4007629676da7485857d734fda7f45399ebaf10bfa067d8a3f3e9f07d19a43c2a04dcdcea5cb07750242b7f977a976338dcfc9da18fa3aaa493a9a15b904b3b8a68143355074f56cc887c5fa12850513ec24a73013570a2100b534ac224629af4b2a6f7cf183a5b3a0e50a23463f942c69bd60a2906d8c18539b3d468c0ae9508e11235df3df14c6eb0dada9018c18ff50a554598ff858a70c0dfec08871bc0d89715b9cc4381014a44eae8ae47552aae950f6077bdbc4c8aaf7f1f3e48d3a1623d76798fdeb103761d8c89a47a667b589c70840bca3d2a2f0078641602783eae2abb7e13f7d8b22900d975b8d7ad5af7bfa3ac6be4b6d626c1379a0492bc817d018d69bba4d8c1fd592fca89fbdc47f280e02b92dc49cc8010775df87441d6e3e4e3680f0892f0f6a7a9ed29afa4a8eb0b638b0fd675f95bf715a2b410fff14a2ec495d38e86c64d5a12926215590069235a547e3334701a9ba16574511da62c7914508497532642a7b0752437618a9972a30f7dc31eb6d84a5f7be1e0f9a2f5bd0804d4495ad527ee0cef5530d008207eaa7aa5cbf61341159614689200d13ba8d2e8a067e5d7c8602b6f3006ac2867654c8c41af2fbf1f218b50ab3744274f3067e477b70337942e8dcbdcae3004e1c853e84275c6f5928d0580bdb81f7e75988425d007481767b6d41761d9487e576665b9fb87f97dcfa4e5d017901c80354ca1f2d1e93dda8ea4e4884593b8750ce2a5a67ef61ae186f317947099818334df9e7f3b2e4cc7ebfd36f0635f8b89f6a70e178deda5c617c62bba22ecb44652e56babaffc27548c0ef09c826aad02dda4ff62205fc6dc90e025c4cb740021ff0161a82bd3996856a6bc497c32815c46289c56a666fa65abbd201f0401632553c1d2e99436aed5fa76fd80d0e16d541f64796e645ed00764e4899ee7d3ef965cede8f4c40332abc69c45d0d93cd1859165e54b7ee15fb041ad58c608b2b5f96423945ee7b8d18cb030294068a1da7fd4d16f5f263b5b48394df866031b74f4a6c4ce22c7950c5cbe84a60f696ef29693c05db3ee361817c9aa7572cf54591eea1df9785d9f234772a30d45d1cabd2f98e84614a6b9c31413b8d8c42841bdef96141af31ef49f8b6299e82f29d575f15493e9f1b9b25405147b71373965a33b38400916e24a9b33181e6aed49812b8d82e1c07b99215615ee945466c8dcdb5fd031ee49185918b5a950bf9f4c6ec7334e39c1aefba425c8694777be2c7c9c6732931297f0a16b6e37cd3308ca0e14642204598a537336d87228a9c4526a0cbbc03fdefde8c50d2af79534a259d22c440212d61cbb5673d93a3b56290c3002e1b2d59292831003c1afb97be70e291e021a5e9adee954d7f2c79ac761f65be705fe7be8ac38b963629d5ccb6e744910c3fee494bb0b951be91ab28cf733d95d4b774a84621d4f087ee975f9a67cb86a6767c3affb2ae1ce378119181a53aac8333ad30848f9f711c1f76811ee200567a57ea8094812c7be65059b9004eb1e8244838884244a239d3e5648ccbb261beb20b87069fd4cabd96ba47e6e6ca197831a01707848680e1246b9d1c90bb2209e7ae74f07dd8f70a778f33e37cbfb456b55b70880634ffff26c23008d2c246f66054644bdbbe5056682c8aff9c08e1e2502b32e3f64052f086e64c3deaf2104a5b12cb7dedd1b479b8ffdb0b8cf0f878727df14c00a0b5a6258a1a6ed9452e7f90ceff5f194200d6dcf28fe2430d951cf5eeff19f0d226128565e0d3d7c45650270c17e37fe20866c4f626b07d79bc9f2e752d461bbd6fc2f5393867905c3193d3fd5557c553d885e47716274d20f9384a0f93a5cf67508ff73063c2f9f7cfbcf4f42e1bd5e7406659e04c6b9d100ddd6838cd53b8207268aaf2e393a0185e416ff46ae99d282aaccccd67ff0c36f669c632787f075a898ee966349400c003ad692c45a2eb1dc5e2e20bcb295459264e53747be1fd414454ab55cbdfdb876c731421a0790b6f68d8dfbaf9905e46a3c79f3e03956031f3efeec213079d7ace77530017834ecd712221d5cfa302c626ba732714903a87eb98a638eaa847ac420effa4c00641ad18b187553aacee0761c3111596c6b09e15326cf6226860984e100621f00ac6a256a3fe816c391c2c7ae1bde71542ec99384a1396107a37f419af044eb6c5b553852e2ca83e5e1623b765a9ea62c3fdeb531d4a82bb412f43b3f7f2304c3081a55d3359f4aca2e1be699a26018275daa8b82bd7e8491b10ae33f9696b5b2c97406b6e29b741255d65dab21d0aeee60240102541b7d79a12c698fb264cbcfc328178852e06e26e2368db84bd96c8ca997cda22f14b412084cf647c12e0227ceee7d22062e87e043f8722c0864de5c897edfc1258c3ddd40c981e13dbc3b6baa3fad64344de0290bb228181087c6326dd51cd0087e669f91d6d46046cf350182c6e50e5a7dd21f060ae8686b17b60de3b78cbe7df7c23bc615a64c94b10928a5206806682c3eb961bdd4bd8d2773dda60a7b7d0d05cd6640bffd069e4db5d765cc27edeea0a2b7fb5e4d13902cc202f1870a7d7a2786c0fbe9427a339768d5cd6ee6a5218b1b1ff0e6497df21e4c435b3cecdad77826303e7b6a3ff090cefdb108a5e3daa254d70644f5467f720ceb82a9035b27ad47f0f65e2d111341e6032fc9f61690c0c83d2a5a63c1cbe5a0c42a1b2709578fd08608c1b527bef00d61afba2b10beebb173e5a0a36654a6c15ee43df807326a95591ec8555f2e1aa820821523eb0ad7953d26fbe8ca2b245a251ad00f342be7eb5c73591f8015f031113aac4bdac8a202a89cfd0404a6a4014673c7a0b6c481691ab06ae56dc1d3c87286857822e0ecb453d07823f5c13f3bc6937a1840505180f6a814c2c339e8eb71801fb37c14766281cb2feba0ff59fe5638a80a279915dcccccb972fbd9a1404ce4ed34eb7ea3697fa13df9fb33f5cbdc260be3c64c670e503cb37b7ade7a912175dd6284379c348c74e7eef5a2ba5a96934da0296dac6200215b0ae7dc34625c23ebc3e84a60a42a3b6fe96002df9fca4c0c03294910ea9b94c4dc5680ccfca5ba38986a93116a1c34f35653813452aa5e5a73b3734daccdbaa76816a9d9e6b36a663b487e40172082562599e26052cd91cfa8a2f4830a3b2c59e65adbdb99b99f8b4c8c74a8796bf22ac03e6a62931e9f453a37e0f495d08cb0639424532cc6f1bb4e5b273bc75195441f4c5af20db1589df6c0317ef12a940bb40c03177f2e2ce301f7a3876e8fafa62afc861a4e97401bbbc0949000084b70049a727b50ff3afb43f0fa588c3f1bb54211ae42e9e3954ed64665c2d51b6d7869272333ee61b44d3c2be97dbe516429f0c4ba5e5b110e33752cdf232a9fb223ce6a54e94f413095b7906fcefb7501ad5800b7174423f37de428cd258a544a53c05af5addb4fa8f7fe4acfbe784e81a06f9d2a61e70e0bf3b42709e0c811924a8743b2043206fd920d7d290991dda0c985f8fbfe732dbdff1ae7bff461311b1e7cb11b344958b662dc873337f51f484df992f695bc788fc14e7f915542d786f4eff10fca8be60dd489e66a3795fd7e64efcc062cf3872039a06af35beafafc3e631762ce9c9a36960458f27daa619e0e0b5bd6886c48dba5060aa84bc97b54cd73a741d2a67975eec6f53997aab15526559f7febec8cc5365c863bc657e942bc360aa6a91b5986f62bbff13316546d2cf8ce875c3bd51751e0ed24da02619d64e3aad8b5f37b9ff31b0df3a00f171da50d2461fa68341a28142ad21684d460c31024d7fb03f3fcadf4f7f464fd46dfcb917c3ca7c5a8c97521ed0e4c59801fc525ac66b2446bb9709665f68156d36d3e0e40d61844f6b5a9b7ad86aac488c9d0c272efd960a54e4b049610dafcfcce2ba8e363d1968231f000bc89aa50c3bc3802e4afa9ab1b229837b1bdfe2e4295cb300f01ce75c8e405a3c3e92905a3237ae41b4000e7d2bc231dd4197abdbbb1d5b0eeba3a453a7220354bd33b469bf61a7a2fd5aa7dd44e834d0306ae25f2780b890cc084beb31b3618d14caf8994bd5a2c90e0b53a3aa4fee56344dc969b94114e458f69ceb0b37a205990bc0ea098951c60a2a21c82eba70e5d222f388d116b10833d0747e08d0a724e8f07171d85cd89d6a4a304c33dc556009c309273c2f79e2694ab1b00c6aad166bcbcbeb0290d970ab4d4f68fa630d6f3541671f66240db8daf76cb752dcd1c9d3b267131a75097a01062909d77c16326673f23e0bce931278a43a15e1a0635aacb30fe6d3c3452d377744c965e014bd28a35520d61fad044645951e7457cf266e828a32b9c8b11251d88ad409991bd0e17e766a5aa3d2cf44181f6679a8d1b09f453aba912dcf5cbf626f891fb2e168b1acc75adae2f910689b1287f877c6e08e3b1c8baaa32bd4800d791b2ac2e32a0992c10fafcd2d6fd0553149026f9c42a8ba2563d12620a96c28828715362d194e19d59e4e957301aab16925e62568a480f9c09b2c146dd5bdbfbd5eeccbe634958dc1fa171cd85ae78f4881e686495e5e1a4cd88627bb34ad26eef36b52fe765b7fbdae1a16133d7cdf9118165283ccb859b423e44d1c7f5842716bb1c5741d8e63db09faed24b1923040ec4518c05be8a9bb29372bce51fc0884ee9c0349a19fcbe51aeac92b67ca48c7db692ea7bfda258b33a51a8af1a8243396ec7796003867b300299c99f985dae0bd1ba25a976c7a41a26b756419987e579f062737b458e4014735a5305f94d469e2f0e671febd4eb2a2eb2bd6d61fd0329bd8ffc14a60b12c5bcbbcebb6435bdeeb031aaaf34425d92b21b329c1bca15d12f6c7bd8be0c8ff7ebdf3d2350a8a934c7a1ffc00e804c571aa253971237283d5f31e360b6fe0310afcae8b184a97aa708db2f685905f4b485cde70fc5c91676bf9759fb039bcdf6a9dd31413d690626184f854d0062e53d1b0269237eaee626092788aa16880a26582444b511664fa829f38fd76ded72a30a9a4ce061dc7554e006dd26e2bb7a1758246eafe94526f82b8ffbbb1edfcd8f272c7918a25555cd98a16d106c2c157811a3a3c5209e372c81b09f4281ce6d1e82daeca00cc15401682a26fb95d089a6c09e1f6bb931c1afcd33d6d776f65877eedba29e59e357b1778b60f9158125e86b375c970f8c346d7f58662bfa80530d06e6c84cf04d85a6487e4e7033ab09bfa0071473fd14559163a6ea9483f34bc6c2b27de714f196caf8cee193fcc4d768f6602ef94f55fb242e6887bcbd5b08faf42ea249237c1a236314f5613fef5cfb721666a2506faaeb799569645e1e36d8623b6df6b0cecd04db32b6190d748a1bcc6d1babc2258e26aeb7d83c8b389c0739975cd091288208f5603363e42e004ad3a4311ecd33766994d5f203afb5a70a284571eb24c0a7854877c434c845d3648da490686eaae8c550651e1d9b00e2ead2080f19ef23ee5f0eb4389a2b5c30ff12d82ec629a1aee6ebe6d446c273c8305b2df3b98a3a5defa7b7895f2a4ac3dce658052344c0ab469c8e4122f50a5d24badceda4f91dd29d6b6e133c19a4ddb9110220fd0835de80f9d7a12ef7ce24ee997650bf271c06ba80c29125c721ca0a9932b86e08e48c916d3d5134a32dd5e00c9656b07bd4e1012255aaebece928993ad85f535cfb527fd6b54337ea15b6d69b5c8814d73a5fbba19c28627b1550d3451c2e8066820f768b5f3efe221d0cfa0ede5681edb85a99f26811075a26fc74236d320399bfc6a5c4849d8a575dabe81f120179911ad65d8274f828c1819b8891e2f7beed7bbad4180e61a98fe39ff48a3a07ac9c7406c8bc16ba488645b280fc83f51cedba142c2285eebfad5424342ee7963f42c7fefee0709549c4b205ae9e755c92ea289cc05d963c7317894d6b5211cd1b41f5de30bfb2a1c14a1e534d5ab77d69e65e2134ff26ec5234422ec4439c7cbc0e7b2c4a59ebea27939a402a69e4bc9a82edb531390eeacc4a6ab7f74bfe562d5fabbe8523d62d95f06fb8bd9942a8970fa89b72fdd10222dad8e028501131993707ff073df5cdc8a6c45a8537833672ff2199b153cc8f5cb6645ac55d08fdeefadc215209e3ea6191b82f4b3aebadd2fa4b4a8ba394fbacfe86949d481ee792f62c8186df952b873a03ceb9353da5305057a11a11b8d3ddddd59cac424782ba904ae4d17b2f3e8862e4a52a0d167a00cc9343bbff922459db2925535c0171bb2958d2947faf4c170ff4a879ab47f5f8a0727996f7a8a4361b046d82d984fd75073644f48f55f48c2a56719a842a4cc4d6033d57927c1ec507bea8badc99e3f6896ae3f5bba03fffcad3bc2b464cfb3e557754b7773a78f17bca6948c32a2c856440cf58be9b6cff706b9fff1329bdf00c1d6d957a2348891018d7d6bf75b21f25c70bf25d5adc2bdba5272d0cca8caa69dde88b4072337e87809a45a66964a3b9d50384a25688576d1858efd6ff420e914c015035cd3db7ffa017c3cdf518e9c89cd508b58a048654144bff2189b5eae887f480c14be8a407483c13799b8e628a17f8d1b0608100e247c9ea325010330f32ef3c74c25c602338015073d705e01c9cf4f6ca93065df67334f4d860f437ce426d41537fafc992cceafa5fc251e507315caeafc39183c4f005f2e7db9518f6f53ed9c586e628fd1b50a1d6b0b83bfef35cffb6ed4bf2ee14132d91309abbb27f160f71022e6e8289f3bf03f411ca54e94a3dcde5a3a976cb82a3aaf1dd8b816ed4ba437b140a6c2ed2922813fae6e66ad0e7d83b29ed5b2c7a80f310f6fc15683817cc481f50d32276d639801afb2a2f79f54bace59853b9a2a8ef7dd94eab230354c27755eb8ab3e5e26510c5607ece4d4181fe85d9c52ac2d4987f4515f3410e8d1f4cfe8edc3b3b72e50ea889e55a722855a471c3c1417521b3052ad7c765e552042a7ab720784b237104781b4627eb091dffb29f37148b5de1b45c6bcb40d79e656cee7e879b8bc276119e4501581d0dcd92c66717ae1104d156c28c32f62d826d099100ab5909e6ede692a53d61821410f0b1dcedd235a469336c9c52def768f4661c5d2a4aa81a24265480f2461c32e08fbbbb5071d680ea976f934da94146621ba10cd04b7070f85051d74804901e8d01b0e6d41337240498239b005f2c1ae114b0d38955d3848a4674707c1e4526d12b35eb27f7dc3883e8ed382e6245f9faab7d8c7969c8cacdbefd6c36db55d04abc2361d9472634030c2306da75277c9b499b4bb0ad6c8229547ef1c9ba98c444c62744578dc73b50b9d6961b1bd674f5751f4f8afb3e510403334c56b4c2e30198d75a81d3561d2485dfc3c8bed86ee206f03603c5e6942f6a68ce148949e0e4f579562fc6f2ba0ad3875dd3e5d6b85c93596e3d4b6c6c3676b668a35ee11a7f829cd98a69b87b102b0613a7a6ff26adfa0e127c7b772d3c62c84e829c786eb35950720146c4081b7c38bf02125579dc20f11f2fd0782bf7334af856e400916173fb71336a2b15f6631697ae7dc288b40508312ea47f5751a644aab44808c6fcbb2dcc0df508f5bfe42aa145dc1441a8e1b41dacbaffcdfd5fe1ce5af93ac5a0edc92655c944e6dc0e39115967ed4795aa7b7082125e88aaab28fe746c1809598e84ec3f33e4e38e3286d526a09f6e04eeb1f1edf6d0b15b513678735d112fdfd746665f550dee8bd7ac26e4e1171f3a3dd77df2db45d6ba48db8bac8acf530913d633070ceb13f439aa81a600caa36b65f70f6a1baa667e4a133446eaf2daa950553fc2f957592d56002a336410556e3c1a8b5566758a207acaf7886de0d693a44d43b72ca172d80898dfabdde76c51dbc1151539eea6b0e4eab218cbd5c86374e1e0581ef9c82e654084e87c42eb0496904e53fb44ae4259ea228090c1fb50e5937ed54a373cc791c0e612c85b320715b69260534e9e9d5a504c74d81f72e4c30654cacee3c3ba46a2b644095ae01e08393cb1664ac2ecc6a028a623c46275be0fab12fd6c38c256f6b3fb763789a36383e3f81013a50fe19dd6466f9cb0d37790fe3727472471c12a83f3e765ed28f335a593e0ae010017b8e088f05451f650dea2ad6b16815d1b28d00453ba566bbbefe7b528019087997978a8606d117e6ec573861dbb821476ca28327a0f235918f43736f0890e09841c0feab738e88bbe51afa352b6ca4986679ffe1dd4a336e8cc166399e9cce70053b7977ea71deb5f485785c6d782f7b5689c872cbc9cf9c77d0892229ab46db00ca7087dd3fa346d5fdd156bf33fffda644bd03cfdbafb200a45c6a8c446acd9e74afebf962c817342c051f3cd1dd995e17a8bca45d6725c5b46f0a08062c323d00e0e42d3d2effdc035ecd53cfd1caf6cdb47f0e12e20092ccc278a05fcd713c8cef8f2b8e7af9b8c62bcfbe6f36688c292e0e13f1c64b5b551c568eacee434ebe65e10f406a3df08cd12f8e23599caab5aca09639f3479519f00bec7c549ad82d05d9c226ea15badf6e1c41a6b524a00e5d07d0853573e02a373d17309e453f698d98eb303cab19fd4bd42711d809f68cd51898032cc8fe9848b5fdce3994045c3de6306adfa2cce30c63b5e0e59f006ffbf949bd2b4a7b594dca6ab33457d8d8e5675ac48cb79075edfce43a340a8b68c071c624543365527d4e465877331a5002090e9844531982789ebfe1ed355f0888fab495e1cecfa374de9a756e0ae32c26bafe9c4322dd731403ba4012807ec00b9ac060633c28c76659e553d96654c8fddf8a1535b5fcbcf4348e8cbf6bbe55d710efb403e2f3d1efa66238858ea3b9778a824cd213234f3888b70f90a0a4595b19e71b148fd9e11553fd3c0717ea1d0842fdbeb6798e3ba7564481b4e75d717e5c35dca228d133d2bcac12f073b4ecb796b9c10b78d499bc78e41a7afe89022d867406517c423c3366c3747b7ed358dd7fd1a03bf8832deae84a32cd22a8bad2a59b416abc15697b48433de351d5d01c2058b0b2a3010907241a4355239060d045dbbe692866e84f32fdce3daca3fac7a24192c67d77cf1f72f3538e86b8fd99a50373a790a6a254a116cc68d369ba7b4a605fe9c98c0d21502c2bf6bd0c201076d3e7be7326f3f51d1403ef6542c9680ad945b06389a74c88b65d2a3d159674c74e3c0e20f7515a46c3d07979e0e9bf7ff7445403c2aa46126a5910857f2cfae00f6b6528ae959bc7ac31c51002d4f002bacf0b37e2f61728c3759c6b0653e94085c69a65c90db917df6a695437103ea68c17b69e9d5aa6f0b5a7d54daef5bfa9d0c2e40a0c6102c85d2410c8a2389fdfbded712f800ae0d69712c179a3cb8c8d9f6c64566e7db92eb08ddd7d96b595c60e5d73d1ac4d69afa2b396da358c72746602157c247d504ac299e10c9d7b8eebfa68badbab691f15d2127d3e8fa887bc79c94fa08894b1172e4085c4570a24bcd70a7b387b62b2cceabe8d370d3dc59ea9d73d6571ee810d824f88c1d43383a321c0fa88a617e19018ccb9039543844c2e1b6f11160c7b29711d5ad97bd9d2a47817ae310eff6184b0ca7421dca4ce514e54f0203c5f3197f54138fd2f97bb01d5edcfcf039b6c3f10f8f144267ba92e188977a4ec219708d56f8ff7ffc0f57cd56cb28320147e34721f450a10d58760f2d7879cce88d6233a28f78308c3c56e7c78c5833bfc418a19dbe3247eb4f2b48b132a906e85e55a60077d4202af2f30992303212043684fa9490b008c4b0316c625910ef451e5fe23a57edd4596381dd9922e6d7a1fae90b807860424e1dd168bf202fcf0268e5bf85068cac9d7b769ea62995e26b469698ddeb6caab753c3a202d7aeacc4a6d65e7e68532c247b140a16d590923d5ee0beb68f8c4872d6210fa712a095aae6015f951dd3b6a3f004edd7f47cd2c5f154ecf5bbc5438f1c93331b365fe10a52fb4dd5ca07866693aa72d4ccf7e02dcf2b1e0a4ac918bd480dc64ed19959879b5a8bc78aa68e380a77356cf63ee3c3eac5146fe63e88ea4647a7bbb6b12fd20365bd67537ed7bb788266c5f2b834d33d78f413b9b0b7a62a7e3886b79998ab12f74656bc90c4b764adac06f6d15dadb044398c1b8bd19a70a3a3199c6d0939d9bd2d282fccb39c64144e5dcdccea73a479892e18416bdf97fd0b6a77bfffc544f54490b8a93c1b9e0a77f277126c0576dbcd2edee189f70ff822bfe4048b04687f8964d00a31989a683484216f81bb429dca1fb47a799c425e563d2cfa0be69ffccc73998ef71d73a352a3aaa3fdeb6baca0760580f202303bc3a668c22ef0bd30dc48ffd1a19bf1b91bd14810e8fe35793e569f2665d049d15cb7683d4dc688091d96d0a94cb8029c432b1568a916a3dca8efe7b32b871b39662dd5c173501c7c7ddc76eb80f0946464d9f2a054e50cfe3a349432d6fbc60ab758c5212dbf3a7711c42af25feba2da7ccecfded4d7aadca2999b51491b522bf6681ea1f888469a27a627954d08e5ac59a8d8f4855c8315e2a0d2e4985742a10de4a733b192a658921cdb6a0776533373b54c96659b02a004527042a5e9bb48560b1557c17b8d6e2ea730d89236fb5c93ad6d673fd3e08eff09994cb2b4b79460063cc53e9c4aa4e99557ca9680d379ef4065535e9d4aa8a5bace80e602bea97b4352e794104b5c458cce22d42f2f4c36731ea9d91615cc52c1f0c32bd8aa698d975da8aa5a07e03513970d15eda3b1156f4d4664d427becc542997b086daf47bdd95e0c0b164f5bce0a76e4ea5020d7fc03dc955bf2f1c04818c7de5bae495f347774d0e5af8c28dc1763882a123fd5ca48df27c9602d25b5231fa719f70c5760b262b0b9a9e21234e065cc869c6e7f5fb39354e7d1ef76a2365dc0c027a1c4da064e172d320a46d5dec06365904f45d0d91190f78d764c7092499937f75c44ff86c49654a55482b6ba677bcf8bdf786aad422eb508e2abbcc1a0ae69f83c6b72d810471b83710c2a6979ce32acb2764bd8dfef6d357cc41ab9925b8a4a4a76b898e2dc3561dd0b86622c0b545e883337f66241454d407355439978fc063c1642ceb44b286a1813e5017ad8102ea8064f03f391b5f12d85a8e7c8742c90ab74962c163310bb84aefc56a6235921793e17f4bc54a987c88a72826eed0bc119c74ca54bb2cb1d6395b141c013a894c0e308c4a0b1a27104ab6ee1a7ad98f897cd4fbe6c71584cb96d56ed1a79433b096ba778d71e4393343769e878158d9037ced685636356b9fba558990639adfdccba92ca136dec840367c80fd772fcbada9823516c1e19dea6b3cd7aa08120b4a7d86a18c8e9bb670ad63d383def1f5ad2a8019167cbe2e585fe1eb81358f256794ccd768f6956fa97824144ad94a529aad66af1d5099edf52abaf40b343f83e606f20eede07b75d74f08c6af8fc3ed16c08bba6de0f18382677b0872750bf7581726ce1f51bc09fbb297196972806ef78b2163f10eb90cdff62cfce956904dc1361050100c86c90db0ba07d52a6044d4234585e3208d1fd9161b3f7fd1a9c96b4ccce1dfc6bb70960c9ea67f1af4daa48496c50f6053f53476cf6e569ab4c0cdfe18e4bcbb09454330b03b341ae732a421e1e581639121ff02558644e9d8811459f9c5a7ec14bae4533b6f74a5724757e5383654e868ad0a9f50cb19439180c6d8d452834f5affd5b2b9b555b5bf0df65014dfb9f86392bec639c1a55284f630664273a68f815b80b6a48339da3b09d01716789d5115561155cca935ffdb01c95d7aff27b83fafb5c8a65a473b258e88cf6e38a644a93d74aba12445eecef94e2430fee46d91d7ebad7e8f4c8b42469ea03e38991540b936ddb6263ff35c41ed139c7d5c6d9d118af8c38a3592483dea88af22cd051144504937bb60b6850a632f0e72bed7001a30571e7079d1a84c38242d0129453d9c4b07bbde0575472c09dd6c6ebfa0ab9c7dc389cb2f056ff03b002cf8219a8d331a986cff58de54bc8891472996936bf9c9e0e97bea3e8e49b20b68a83d964a1a37e08ed514f53cb9024651246a0772e350aa392b5699833d122a6cab0445004ae18db8ba8f51c61239a115a44829360b4f29e501a25306e086e76075e0d96a7894b6d60eadaeb2a481faabf34a0d36a28aa859f7f6c0ec674e5dbe01d8a6c5eb573daa00c38c88a991a928c1fc701d82d872228f1f99787a751dddb4547e9496464b98204fa7024f14f66ac93afe96087ab54af5365d68278870431c29b218a35a49a3accd665aadfd708c5806002d59abbbd0be1dcadd94df45a33a578114789a16b035faa66fe35fbad2c06db290b8dca77c8fe0ccc85a8c90aefe0b5348219806b9f98e35c1f2cd0615cadd2f2657dc8519c839620075a78d1f0fdcf1349033b3fca6462291fb7f752b7ed157841166f7b6555714358da05b2852fa22cb60e74b3d73d82dbe9ccf35e6b3c40eeea0d1f9d2e364433a1ecff653a78af7b4abdc4bfaaecc3a506f9fd7555d16f8b6bbc6751c1c3951feafa585d5bbfefa719b91bb8c347945265e8a1d24f1d1c0d208a62956e09875fd9478312cd5c376122201c774fca7ae661432049228f79f845349c497644e2a46181dd938ed45f7b768e0dc01f5ce4c23e261c056fd26397de6200e39019a52583ba9ee005b42711369cb88a9b7351c119bdeb59f6d1d416f40c56e10fc070eea895d0e193178cabee792c99031dc0f8e505317f4a27736f0ae9d19bf17b1d4981c8eb3ceca454f28be342434ab8c4918e51cbc2f320f5ffac507f45de7fd8a5a188402dfa432f8d3379fdacd034a6cc40bb03d31cbee8fe9c8b42cde7da034b95cf0a3146faa306052f85eaf956a803d71e661e02a0d08d0a0fd83fb4821bfeb5f1cfe93e169aef75c6e598388dec26f790560f0daefbb0e69a3b673e3d916df07819ce2490e4e7664123db125d4f96b568c30e8912a4508f9e5674edc8b95881c5bc1bdc5cff3b914c0a3a45e21dd0d5c215544f61b9a0298c7fc01543284d43803761009b4c3a19531b2eaf66ad7b31e05857d12897340208fe67245fa520bbd8109c37428048c262d84facaa3f7f9e4e4ceb365823786972f5c6862aad2914972840d8d96aeb9ba6d5a7a1bff74a0fcc9c2242788ee868b0fb1f0a0e50ec418056c1f1002f5558381e0b121fcfe13f226ace9fb697b1b1fd272395477d9445ffbb91363804c663598edbe6ce1885637cb93004b428f080c76e6c5323ba82dac1b679bf924452d6797f27081ae37360e740aba009682aca5b6bf48f4d7062d820f90b8dda622a4422a000f44d813040cf8de33e28300a5d4133a0ebd42232fa457e815c14a4fde5c4526aacaeae4b8d38d3c7ca83c64d8dbbff06018e3f2185ce2d843cc3cd0b058a97f5a2c03ce6321664335dcf3c2d28e43db18750abc151c30ada01470e81d8943a3b01922b22dbba7a24a96a9006791d96816984840b988116945d4738f7315689a0eba21690d6d4c3c8aac0a3ad12801a781d46d85eaa0af016f02802a1f3f12469415fc54146a433fb2c24892b18fc880fe64dbc672600b01007942fd49bd607617aed32d783030ba94224dc0ea9a5b939730f74f78462a0beda08ce3b4f30b0603120f10e4610dc4614236c80015cee2f4ae0626322d13820c7d18105e0f4560df56f5571d69f84289e7cc4c5f24007d5bbeb49d9886239760f9943a82a334853ecd722c09416efa8d52233432887b68c8ea2058efb1d2282e5ac811f3401785b89c14d281a20f76c303e25b3d414c28375b27929d3199301133959290203b88bb95f610ef31e7f580afe76d210219fe887f8d7015e9ca5cf41e180d6edd04f03e2d1428b6fa2ffe6d39aa5d48803d44a6aab1220c2a0079e901116bac81ae71a2363372ee7090186959b453eb36bb69073d1bada5234721215ba07684462ef68e4378f9621a2f6bcb7ce14b2ccb86147e298114b4b16df803f3e00c832c4c2659841b5f92d3ec0e010ee1606a86967506a0389202389d7e214840ea4f01807e14300f4628925a1bb536789019e96035b24e17de9442e90fd121e0720e8b69fc25758bb845370a6be7c4cc4b66c7ff0e525da22706b102e6fb3e5c7e0d453bd7fff455fd2dce42e0977b56518293ae2aaf1ab76e5b5271e149564aea1a946affe7c6ddc54c1bcd8f4e91e1292d3948e92de399082b83f15229bbb36e9aa9dde353d0f25c2ec6eb242cbceea1075a09f1c30eda5847684b210573ca00195dd5f6f811a676e89ecc7b36c86962ce9dd9812a69db1e0179293ffe6718c2b0fe90cfbe9597699288e291507fb9714807ccc77342d59131fc56c91888a900ab8001ddd1f96d80e05e05f867b5b71f9fa0a42304be186dcf727fae14e274054d18f8a7c5e89f79db05c7bbc08e5c4b0a42e2690569700f862083fedb2e3bee7505a314f510d6513762d8390fa2e9529d2946e327c042f184874a443aaafb746bf7ee5265992fdaf6b0e6e90794961723d0823292db22120110e72b797a9b61c2046df65f69f4f28a744c48197dbac1dc95051ae21af3bcb160fd84c8ff23c20bb86df4d8eae3f658b9d1f64bdeecf151fbf33ba2005780ab64ec449d3732bb1afb5e445b14b1e26c02a9002d7513d347f84ba613ae0239d84c139433ce0a94c1c462c15b4feb1d5ec4ea68cdca8ab1247f594292006c27015c12c24d071014a112503d782408a69c5310f1890048ffc60984556f17d589944406962acf36b8c13d265190feac2b64fcb48804db9c72bd166b8f6e89292e8e52f2be8851df75b71532ac6a504ae3bb67dff70f9fadf6395587f0b8645c7c073d73e0eefd145eb11063f78682ea05ad02aca35d86a4651ecfbd0836d7bec6d327fb77d9e90f897b07647a8a5f8f56b4534b59fe99387a8b333f199159e356176c2788b0385bde69d3474c12f7d9ed5feaa22ff818ca73316ae97d68c11d1d9c65f02509b67f390b0711c40a8d079f61640592b693d52b8806c4f2e433662e790c9071c3fd9063a7daa2bce3ce3613bca6fcf217b2ccb9fcd9f3356eafb96d0678397fd114c61bcc9e4a316dd6987793a48a4e1d49077ae64fa3fd855cc7c543f4908ed2432227d6c663a8eb0479233879813e90cfd07ea2d5242be4205ee02a031a7f822a4ffbfad8739210bb0f106b843f98e8d0adbb80607976033170fcee89882f89011557d4e829246a005ece1b40a66f866ce071c8f1b22d03e5ed135b1c03905e31bddfc14d4cf9222586f179255b52b10c2dcc77ae001efdf8aa21eadc39e344804d2d639b4b5618a740d6d66bf98e94e1d83c1dde143d985005174f19b66525ebdecb833385e0695ee8cb17df66cd1a36c184aad57876d0c7adcd3db83134be78f11eaae99b23dc8b04ee539d86387f8bad5d54071527ff4205419919c3bfcb4377a1e051e2d8a2d52a17c56a1c8e8e065ed6b361c2d8ff7a603e1caa699362f14afdd2332cb3d07d2de620d7dfe65e86c484c1616a26cfad38c7ab1cae87fa33d2b581dd945f8df1c19ce14c2e1dce763ce592e2e2a57e6b0b6e131c1948d301efe7d85b10e9f837753d88c97639e262cc53b149804da8c77af55209e51493a6d38387a16a9c49c18859e439c9f5da63722f068cd9384dee8ec3d701778f7c082f5e30ec4a008e4544a409eae3b816f337e2aafc8f59a8235d787c2de4cecfdeae36f8b6db7460821841042b6945b06e40afc0aac0a34f2b479a39f4ef2db3c7597a7ee93de0c7778bae79da0a84c14411abdeb368f06ce266eaa77f20ebfd5f4d35345481aec5b47705dba8f2057ee74444f474169e2a6fb08081338d5a6eb88a6060a6dd6c0ca71b4899bee3ad1140f4a03ef7da334dda513dbe744e5ce5d727e4a949e4925e4e573b49cd8688e2e6747374cd20fe2544cbe43c9b6e94d544b0602bf0994eedd7b8ebe4cdb3cdd9b905ae76aba9aee51ebeb99bcc34963a24160ddbe3dc51dfb76d34c71df6e42a14066e88c77f8eddf0d4edd6890aedb8ccca91ba5397d44bfd34d13e25428214e1da17870479dbd9994a35e3a693bc93b0a35b36ff373a2a666b8a79c7b4af6d139cab13781d2b75bb6134d995bb9d24ba32ec000aaf0dbb9244e2aa434dbb6e73e6862c2794a944efa3625fd9ca8875e12de3625073d25484948ce9b70d4cdcf89badbf7a40994e8764b7701864f851f69dd1c24fc6ebfbe266e386edbe8428f7ecccd6d935266a5b9ddb2f798a841a0a7e383d5d3b15d6e3978e3e4dc4673bb9ca3f99dfec97be766ea2453f2f43deaa7731fcdd4e82897df66eae4a66fe7503325e5a8c9715fee0b2b371a8dee29513a09e5fb94a3dc3453a79b3e3a2767f79494d96df705026b776f7e27540993a74e2f9df4ef44952891ee4d58b7ed26b3f4f5942849ba3be241001b58b773f347d74e0e127e39acebe220617c36eb35735221e36c960af3c8538a6ea8ee9f8afc67430a51fac743dd6fe92bc4f6207e2015a9fc111695ef0d218b2018f1a1f47589b37eb0bb4d56e10e2adf0a20415075a33659eda8052af6db38820d1b358c50a3068d1f1a34568ab0b29222422aa5320415951959cc988112020a95128494141420a0a09cf89c9c9c7e703a99b030994c8c989894ae2895a40fa424f580441af16034f27a3caf2bd275dc0e386ed3c1b66956685a96832cc37080fde506d85fe2e3b1431b2c8e186bb038ba69b038785d6210b23b8c6b8ce720246601b1917202b191a559fa42fdbe20204f0912a1f2332054be843fa87c0bf6c0072b7c50f95e10a00cdcc181fc78877798fff2b27d2b776efbce6cb4bbb45d978871bd260babac8892b5935c82a3216e0bd042956bead0d3a1722e0889d2429d7a6342412d14241424d45fb4105c2124fd059ce274ea20181e781a4987d142ada48b9a8c1e8a42484e87474141113a75a17214a2a2360a4a4fa873fd1b128a484e34228139ddc29dfa2874a8e14f13098aaf42e310af1a9ee210ab847e864e271a8768144a22d4305066a514569894836f70eae9b083708232953e4a36833e948d55f7a99fa63621cf843bdf9d85365885d7521c8516c7e930dbb5ebc032a8d02616706a498c244cb8c217b5eb32e10a41955b1d123e052184f45c6a25957a0e0e6a6e8b1a397081d873d3da35808db91b0483dead95213f9823c44210057b809cab6087c87981522c11173db9f56b719c8ef21356e1672d10f0a78902458565a83c0a2d8e3ed73e9d8278d59dca04023968b92058859f0d56535fa1ec933a6358ed8e794674af2165c1ab20583d3db592659e0d56fb1989b360d59f9a34dd219cfcc32a1f521965945175f00eab9881600e51d01749a8a8d9649f75e147a15837e8043ad6140c1300a12462548e43956351656b48f4e134542daa10dda6917d1499cc7c11a49bdecdd48c570e00730f3d23ac7a3a4767cf098073dd013eabc2eb1f56e137db150a1117c64df6e12cac5f3f39713d6914eb3a39777541c83804df87de8cca3320386cd105188a260abda9f04f126b4ecf90704c5207f945219aab7c3d254e7e5121a9945f873234e0b93b40ce656a0c91f32253e31f96fa3edb950d226a7ce9678355d435ca3ea8c93f1a1dd80745f987cb2208897292c703be55546e63523ae969f617a7abcc7e9f8ce09afa4eae35e690282e33240a2953e3d6ff31aafc07739a0a0b043f355b685df836660fb18a09503280893607693560bbe5b389b546e5a7a3dc3ad1efa60a49a5501ed969f608a8426e64ae3f71d1288cb00c94a1718edbeff5d32c62d10f5cd6657d695c1fb8a81096a1f1cc0127a741f984a2426b54ce330a1d95628413f54423125e35adf96055b90afd6c681c625556370c4754de1fca398e42bcb28947f94793baca51324a93dd4637c3d3a19284572a3448ac2dc4aa215ea1d0fe825547c8acaed014fcca516ed3b5081595dbc4aa9252399cf0eba9501a7895e76024e04cea2a2915157815faa566543e5855a807ba9e7e53a342bf9b6e41bd9da84162158a43294f07ca8977c44d85d426ce38a4291e5c3530e39cd641cf01273f4dabce6020de22087a11387914f874dae51d5ed389b24e37b79ab69accafafd059a87c0929f7b015cce3c3ab2c9290db353224ac5be1d5f5760bdce81321c01e0594d1a142eb3c1d7049e5e1b3382cabeaac8b756d0ef2a24288dcc880e0fa1321b81e0594b9a8102813ff41ab871a060a754e146a110390106fdc8b1ae4cbb10892271698d538213da52e6ca6340bcc46498992919ba9ab08f6d4f5ad50663305700bff92395e805ec4c0d3170f8c143121bb3987320eab3847c59171388773168757cb39bcb2aa4dcc58c5960e0e0ece0d84e0822704090d35d18126145660861e9f1f9e36d0600c60e4e8f44ee328295a4214243404d493f9485e75c7aba59f4dacfb6c0772a9ecec43a1708ec8af95286931703e140a0b9fca5fc1194205848f4d797b051e2e847165a118708a22945bc0850bf75cd0a8f676aceaee64fd5245c05abbfa795390f0f0270b565952c8af7dac6fd6f8fd952672965d87e7aeebba600fccb9aeebfa56096b9aa6d1e993c54cdb8df64ffb64c12af6f9699d664601c91f9f22c8535424b44488751aa28824b78ece0baa4883830caa7bec6b9d8f8b58e80d3eda1be497b14e8c316a6e905f068b9672dd0f5819ebe3a2aa05165454d15d7f88458df4a1b7ef2fa5e92f6d9d697553d1ad0329cdc2b04e6620e3e52f3f9c05c6fac664d98a37680b5754e62e94b0403b6425218cfa2dd1c8470948eab76264d8f5b25d18a10b75e642c10dea10dcc2289c8e4338b977ef14a34755f3457583557c3a9c2f2a316ebc9c26aacfaacb52697e4b5448e3ad13effd2d51b99bfa74ae2dcb6a53844bd41cb57ffa7a3327305aa7ab4ec7e2e9d7e8e4bdb3faa672f37bfdbadb58f5448709e501ebc9737070c61882024d33d3faa37e9f7e36b4d738a41f8d470a29f41e396f5aef094fb0515f333dde9ba6d4e97d93c3d3b947cff3bc9309fd96a84bb477d4a1e97d7a9fcbbcd3bde760082184232cfadefbd0bae9fae9b2688a374dde345da6a79cd25c3f511aec968d552fecddc92dbada6bd04883da741d8d4e3f5847e760c353433a6aef0423770e77d3cf26a7ff41d8a66747f66432bf25aac9bdd9dac8a39f898a3b5934388e06776dc41dbbb8ecdd21ddeca68c9a9ea34dbcb939f8e45d353093120dd2e5a5aecaa8f5114d9d4e6e321d5ed757ee79560d1b2f4d540daaf23e3289a9deb9efc29c468defdad0b29766cc8b6ae4dd847ea8ea9d4bfde23ee3f48bc7c94d26cf831042d3c983d074fab8abfc64eace511bab9a9ea34df344a5fb8cf9e5a8dd51f35ba2768738bc8a302b93627947dc54146a6344bf06013327f504629ec9e9e4dec9c9c910ace2d39c7c85557ce387981c0a9847f4508255acd292c8186fda52da37859dfaf0a77f3656e5e65140280f5815d2701f3d0747194ff4eb9bbc07b1aa77cc33792626263810c73b774bd2e8dd0aaf46348855bd89793abaceb2b12a77cb33827b0d0268aa29c48143da203f556401109225645d7652578b34f0a07e10e7db227952c56c0b1fa7480571b6280c2012149d592a11e8f0e85061c50ff2cbf2613a9a18a411bbb04f405e24d94845e52f9ce9dded4cc476cba7ba47b37569888457f0a24257d7132a1163a7e8de1cd6814a3c1d510c254022e7e414c10e62335428b9bf3ea00f2c7f1a46ae0f288475f94d5eb367b72af938b355f5cf46bfbeaecb929bf2140fef9c3ca21c2279e10f12cdae5c1052ce13efbc54c1c5068010fdb33ef0a19186d675c93934ae4a7ea588f66b66ab92af4163a25625ffd96d8bbc8daef2707d90c77609f0bdcaaf2c10f25276c3ae3979bacbecdec3ecfb30e15f26e95a6f87e7e0dde5be2cdfdda5ac63e406cb5cf9e7005e63c2d3987d6c76dc8d73736bc9d36159de0ef445485f9958f73249674fc75e52c88f7be621ccbc2296f215f408abf8675d9889d6e58aac6ff0caead19c9a8457f8346791233feef9e91d2827e77c375ddeb387c3e9c3494548277dbd1ac8ac64e5dde1f4317f700bdf8729046700d34609af04f2e39f12fc30d1e258395f9b4252f0d68d5944fb0056e467c8afc8ef20bf03fdb2152a3303b595c5d8e152ae783a248d912b873bccc82a79948e5592a5ca73ddcd291fe70ea819a801d47895b3cc5d1fbe961a2f8019af9af1dd8c2b3bd09a0f7e76ddd3e54bad89425250fb13daa1cce88adf77a65967193879589ad6d10f689dd68db40f685408cb8cbe5e033cd2bf68988e2eb7f07066399ccbaa1dbe72d21c593c4c961de6b772aaf4d759f62cfff152e97bbcaccbe744edf9e3e56502a0478d94afc8b6597be506afb66ad69bf6ecef36cb4be5e13f5e2a0ba5e1e1fd8b074ac3f2ecdba5784cb08a59ce7116bca23f7c0480a6b207e057f7221d85e26567b22ccbde1e12d90c0f3c643c9c87971acff27dd3f9a3da8166164f96b935ceaf4785e72c7895d10ebcd4eb90fe78a9f0f3253ab98a1ebd40f89b1a3deb99c79d7560869080a4fdf032d88a10360efb350e8f5a6122b043fa451d5833e65db131836415be4f637e5b7a3bb6d21a5846b774cb3b914790328f75640b5864792f54905fff047d3f5eeafe3a5f3f4760112cfab296d3f4d43c79f6751668457dc6fc501545894c4799908c0eb05498a373329d8b10ae07050b651ced1f5cd21a7d2204daa38032da73305402c5e8fe4408baaea56ac900d3833bc9304264607d601db8828c4db37f58756493a5f9712d1dce0300e1b2838f2bcb2e1f3e3209e7c7526169447ad3d1ece6b6ed0f965a7a5ffe6c51c8ac7fb23ec22b483bc052e181ae6fefeeeb512858648c64d40356bde84bc3905e5e48b47f7a44b75bb4ed6b759b177f1ae6db3ffcc3aa23a86e2d7302ebddcdbc998e8ffc93f14f1b615bf85a14794105fea1e2c81870a0e81b1414f186bb1d57e0b6007c1e19e478d5a61132cc01c700091f59b512630cc33a0075b01f90a5c02d0b730649b177620ed63aadd354707bbd137320cee2e8baabc41c17efc36e8349c8384d05c3347652bdbe32fd1cec5d8d33649b4b206118a75b38cba628415cc132ce66d6177364beac87b08a62f7a4875ded15911de6f0aa44310cc330ac712457d7db5ae2b05fd3aa8dc3ab6d8ccdfbb738ba6f8fbb227d7bb67085f0be6d39b8e7ca601c8751d8ddf32e71b615ac0f5c7738718a489a918ab81357b03ef039c851675d72ba905a0bbe588516ad6acd38454c427691860094696ae98c2419d68f3546c3b0cc17f148e56381070b3aa4edcbf27940db10b9e77651b00a1fb551a40e057988908394ad8175b9cd82553ed1a7e3e97886d0fd83ee07bbc2ba58150381f5bb80bab05d389da474c01504d42d3cc43704bc806a2010f8b3383cad2b50d703ad9faea7e3e9ac80dca3cfd5ddb338ac1f97483f1bacebe1d55220d0a717870e769501654d5855d753f9b067d6845d6550c880789505b10a0a300b83a3d9ba24e1d53ed22f23aa10a78b5d655358d51476a5a406354c064636868e464506c6664964fe6544f55fa684ebac8855341b8355602461184da75b74c278f7584343282119f483ba2159b2952e07310b63fd2c4cf4d95d691dcf462dfac4217439e08943589895b17e1a266617ee6eaff5d33ddbb047e3b674cdd35143e28290d816acc28230204e685d3a9e8ea7b3a213ea92300c0f3cdd15dd910ea80bea90743e9c1006a4436871c086590b03d2ce753dd68f7544c918d61616120bc81ab288c4b02010afbee666025073f4e1d576318433ac62aa172b775d750ee376351ecd8a8d31cbb22ccba4847255d6b52574d816eb1b5c95758d0eab09354cccf24a5ba2f9f4c5e0d33ed9942ba7224c6e4598397a02b26fdf7658c5db0c56c51a1db685356d09ca435dc648fd36a3b88c911c1b0fab78cbc16ed900e8970980ded882361e5e713a5b0e76c5b560552c2414848250a7c6f8dd8e14b51b2779452ce5aaa0dc0e6705ab349c8cdbc955c1f140ce8a6d04f2e3767af81e6ad1a787d1b4a6581746a1a49c918019816466f469c1ca532be7ab04a904a9a48a524a60d7ca905fc75346d7b3384642527d265ce1a7bb04cc1e2e33bbce22db73cc6f3d6d809e1f7a7a2a7f0b6a184e885bd22d3adc8207ddb80fef616aa31ebe0b23c4b65817827e590ff4932832285be390c5317a0fcf8e80c7fccb6a7ca85ae3cbab1a59a5b10b43030133a65bac1331ad1f605a1f625a17625ac7613d880994758bf51ea664554c10ffb26ae354addb781073b72586c57a926a593e8caed08e72a6d9ba68543bd78376938f26cc8d30b955a30949f585dcc86c7f623b94e938ed7be89d657af2f04e038f807ab8bd67918c7e60cbb6ecb0db3eb051212cd37dbd0660efb873fd97fd80aaa477642c8e11fdf77abd5c04b80a7009bd43d2f5743ebcea6171f4e727e70c00700f725710a9f05c820abfe27c80a0dc0f943300a5daa8000478f161724b06403901506e49e5f7d0753bac75dcb951a74d6e3400985305f0f57408008a2555a31f144baa7698c355c1aba535383ca8c3f1c0f8fdb873dc31d4a937fec573ff28cd8df7b9c7f903ead411a5193d7ebbced3117fa0c7a3e30f8d59441f179a8a77f90f1d45b2fe88d2c477bcf1be919ae9dff80d0ec09caafda6d28cbe6fca9ff5930de0abfde0ace055a41d803a75a7615686e30630359ea959c12a2eb21df3a0803a3246bafb3755db41b941a2a1020bd3f1506071b404e0df0e55b854582f8e0a820057d816fe3763b5416155fcb971ab2d886a3aace21d6d87555c3728ecaa0a05bd658ea24ffb583f3e3fd1c7fa893e3bf00013809494c3947f2421ee0a6bd5eedd8e67bb2c43a11685fa7a45ac8be6b362a8f07440b9a142cd070d3eeb02a12644bf055ab232835ded6e3bbcda5579f4432821a120a11f504b2a7f3d0760df6e8154e36155538d6b0e833950905bf06a0ff4631dc9962c6115a6522da9916645a5aba6e901981fcccb0ef353d52ffa7405000502e9143ac56c17e860a37bbe181adde373aa5ff489a9db85fa459fcf9ac2d743a87c94eef94ca7a90dd170a8e0155fd3e1d5dea474ae5b08b51c566938de7330ccee533f0be65415be0a50fc61d52602f9419de8f3a6d7fcb85e3815c218c0154029440071be57eba56740d80badaf54dbfab17e4ed23e94f66a63d5be1ebdfbb0ea27fa64c1aba541b0ea137faeced31169cc7a6b8391a807ac6a51958d3e1182ec514099ec19aca2322db23dd50028939da6c8078440999c0f74bf9159a00a2b7b13c8a8901b99ecece928b291ef137dbae3b996fef0583f17d005746db1cd9805b770105283dd338b6c1bb58e708be9e4e9d0a8f563fd54ce9ca8cb2b1af8f8fd65fdb4b47bbceee9783a9ece8abe420c445e1c80c5d1b4a0311ec8ef9266affd685ddc2894ec963e849c84f0a58d44fe6513ad187b63133af66d3012e603ebdd8893dfa6772e09ee1b259546e7e689db38fa41419a00899668574f4e545e02f5942ec028aadc515cac4902f594633309790f6e5f32b8771cfd6ea69c419a07f7f5b212fd521ea42bcd8c6f5c7729479e5744dc8457e526ac96655917e523401f322abb94e5a57e9c249685b48e511face2f760156bd93f4dd3fead12ed570f56699aa631e1e39a3f94f8f8c1044623a0c407133fc6905dea05d877aafbda493e12bf34c583afdd08be46b15fb7281f818fc04730c84ef09098871e121d2d32e3dd49dbf6bd4d57949f784741f9c993f05ef25edaaed8aef04a27a86fcf6650955209ce20954a5ba993b2fb3665076577582acd19ee2339a3549225d2bb9224bd341a8de4489ed41d924cce8d265c8f7e4c3f36394972273d47974adf9a326b602d9538baeb024ffa758d2e533cb8975ea234a37bef9c70a2965e4b2fbd9b9d71d7d16fa6f4aee34a24fac1aecb622dfda896cc95eed1cfbb57e2a6bc3747b49a8c46dcb9d2b197cedd644281cc74872f8dce71dc89a334f22439512797a38e342f0f3d1ede51cedeccc951b6975885323b141494999deb666ac63bf1ee25b1497a32b76eb3888a0743021b335436c9a3bbf76d8e4a2592e7f1e8beacda243d5764069593b4cb2a562d99512a954adb973d8fceb8572a99ccc89992c9dc2e65a94467524c9e9274a64422996ef2d1e912e5291cf714149289cea03c457ae9a67f3345a233a59be8b2cac4e472a624371a1d659e9ca08c4ee8b2cae4446746ff249d299146a3115d5691e0f08613aba42172b42ebeaeab23ab3aae628c9163bcb2673b6db8c6cdfaba8e5d1d5790a3e5ccac90e2b1ef2f5dfacdf097551de89ae2c1df2fddf8d23158905cba04f9bdd408c40f191146acc77e0d16448dc7e22d8c0b891319668891205cb5fffbde62c7119d64f5a9628650353663121ab5e16c8e8c48eb5b2d0cf60fb86d7ae129e4e16a3777777777777333331958c731337777370b5fc1307c845bac6ff1f3051092a02442610c8951adf3182babf5e3b9407e19336408e34827f2bcf5ae71609b815b9620a40557fbbf80805b968d192247cc908fa0085040891dbc3a825731bc1a427553ad66aa62157c8d407b81822eea272bdca136701d61e46be5a256d38c552da790dd0c074ea2ead59dc518b733a0bf4d55d630d6236fbb6594fe9b1cf49238ab76234bed8e52e460558c6d61d7acb6accde22a66ffba79fb5f3665f43ab91b6d188b18928d07403f481815c3bd128ba3a6891ba97d31db6e41fafe65882d1b7d8b3bc246bf7e8db6adcbb20dbb2a866dd726e5b6c558fb5ac9bbb6cd1514ca3b778ec3aa2053339ea769dbfc351a84395839e6bea152692b2b355cc3dd39fee1e565bd7b43b02a26662be91da3024cbaeea09c36da3c6247163126b490a999ed1bc582241c22ff6d91c49460550f2bc80fe2409c8659a25b7871569206e99a91488f8b0356d2bb09ebe5e9206119b5e99a1d83a999ecd8318a05490cb08a7f53b54901564520b382fc9668090cf8f03c4f02196172844949d2be69a52636ae1a5733cab01c9d4daf9b5f0a835906b725484864893092f1e1901d8204988c118c08231bd56ab08a512998e8f9c3ba40c9a62db83ec71e08b2ab62d5be7a8019db01cf74c756a616add1a5dfddb1a38e26b4a73608f69e9607ac205d2d8beee81d5b1bd2143fd2bdc960c439a978d5b1f651ddb0c6896afdbbf1c2f2c3e25065d9771d7b0d56af1bed275e69d4a6ebf5beec6abdafcb7a90ab5a740392f0556455c592752b37b2c8a2caba951b719170cbb2c2550b2e8e34c4c9d15700c32978f5ed52a1f699e095cd79751d2e01d44d814c0dd2c70fd649c271db65bceaba6cbbc70ec3308c237130f06e3d9b274edbae15b15dbbf6add7755d67c0d6bebacc087ef622785159c52466a1581555b17af157dcda59e76b33f5549f8fa5faa7ed205605b712a882232d8bc79d9c7c344aa96cd2c4f33ce97d24499224499274726f2e4d4bcf931ba723e5dc4d4d993ce03bc61f647b3ab88cc6b7096bea9b0d93ca6bfce72ecf91e0a57c697b6a7b8f2ecf2d513d13d24d7e72c9799cc7799c09ddb17584c512df12555ebeef7d26c74823131267422279248fe4913c133ac2429e7b9fc47d343f93afca472a97f3f3ce7927dde2e688e3e6487e44473e90b26f719446e5234a53ba34993656f56864958d934adf7f7e91072c519b962613fd75e82191fa46b7d4fca0a81b890439ab6befd6264fa2df13d646921efdae8d06a571d1a041836e8fdd911dc9d9a96ed24d4e4e82a4cb13d2e46a02ab6c9813694d3445bf4c05f5a14c7e32e9b63bd7c9b91e0fd8cd9626a3131229e5335652489f713242319126f75e22d1afe4c1739c09fd8072541229650535fa8c97d15762aa1c9164f61957199d3c257514f9d45153a65a24fd3e23857e31957494f9427ae926a367379148f7384e9e44ba2491481ce91e494a1247ba479a5bbbd1b57bdc7ec4edd66ff386e7cbf12d5197ce0805c565132dc504a4235815f7d87fd16859c7e8eef6d8c1aa18df23ee5e452265a32064cab9de825c394cd1b8806a8a75eb8815141643a22c514f3d7865d1785d7bcbb24e3d78b5bf8e323d60d593733be769f647b02a163999342b4721a2c6bfbd7678c0aa0058f9c95c5951593900260dea2827a7ffb2f94fa2a07cd22c4d9dbeb768ea4477ec89627f3dc1b0ab3a6e272813f59389ba0d54045068ac4c0ab02a3e35976055bccac400abe2674c1fac42d11eac8a3e72816acabf0d42f9a63c2525a6c4a7dc34bf57d3dbd391b217aa3d1d5656f774d10f55377e77344c166fc21d63c21654a647d3b72599de3d479be6e826f3cbaa0e7904b7c4d14cede98e29e4a7aa31aa1a26a35f26c61cea87aa110b38a8db8e84d77ef36f897a59dbd7cc6610ab66d732ebd7771cd153e39de0d5d65854c40415e86c18352aa991092a4042d4d1620918b1e3b1cb7ae155183f5424360c1d0f0a78d359284de0b600f2eab5ac2c5e94b3de9841c83b708213b8e0628b2d6a4024085b2012861ae680054e0057dd2f14011c8284ddac1373f005b70f90eb450e9254abe3391333baab12c2c382e73913717018d2249ea0574d97410612b08c5ad340b0db64bfde5e11373576eb2161bd3948d6b537139b618fb28cd674c528cd60bdc16097e02ada24951f771c91a48b99bbaa97cbeba2444349869676928c087eb4877a6887889234d11050b74821af2571b88abae54557d1060d45a021a2c682c02dcba7a540b2eaa875e988d330f1fdee51d95e3e546929905f0caa9d05abba7f58d53eebd23bddd249c40a1bebe9966682ec96a7a809318ff15d3dd7cf918da76b0b59214e4d690b93d2348d2a116f5121d9e38560b4a9d8599dde61da3b3b580a6453d13b3aebc2d9bc8a7a49bd26510a1efb8d8c9214a4a9065c8f57e27a1462045225e2312a74010d55fe750555be7eba85653029e4d2cb88ad17106456c6ba7e64da0bd9f48b3af56b9d5ed22d2890f00b84e15837dc9718b82d80cc9cf8c115957f046c0094b9e02bf491440ab10a42380485201cdaa01ddb42bcdaed66a01f4c7c3bc66b0685be03b581dd6de8637922673e9c11cb65302bad4b19fbf55a6a618ada00b9414364d40fb592c9ad9c02d28f97dabbbbbb344b7fbc14b18710bef74b7b59043f5ebe1f2f2f2f2f959f39016ee99b615dfcd2dd180fa490950216166651e20411d10fa808c3c70f32c4a87c8ea45deb26fce0554a2625aa3313d37bfe60a9a512acb0bbbb9b89babb9be8e75b25fce383579002a98165d41f0ca3f52ad1b4afc7fdc06840b8db64ef1ff8d32d5bacecf9c8dcaf00b139fcf9a9ebc32e65206e7f30e1635d1848f62da09f9f23abc4478c31c6c7265a1c9c8dba2bebfe74ff6cf29abb2e16ecad7f26104861b534ba6cedce1f2f2f15529ab830a3c3ee1faafe04990356e6a55bd6a75b463a751fd120473a239c1e69314192c5ca3266c8f2c560ff463875b59d6ed96f66e88114236042cdb4efb12f78b5d7e6ee5c54ab825b5666bdc582b0212ca861b8677bb41d8c06f2d376eabeeb6998dee9761a867bba9d6ea76eefd4e51e122946150db82b0b5223c336866d0c1b1936316c63d8c400e15cc0d68e5570d3826c0821cce17859d1055a3861a7eed7c4ed47cf46da3faeefcd9ad168341ad126ba2f37b9e941489be8e097a3359016d9b6ba6318dcd6052528c0ab9bda7fcb770751fb23406db903d6dde7babb54d24adf9a954aa55249fb1739eedd7bab9c45b09366118e83915a967559bf2e2b7e3b7622db752dc3fa6aabe92ee663626292720e769fc4544c524eb01f3bb7fc643bf14aa56b37693f415967e69b9c86f916c7ef98d6a0d02252986e327ddb361311d44f4ca613d3ca89cc389d88e9a75fa6b9db52a2dbc4a6373f5955e8f7e3c524857e26d47af719a8134d11285e22ca53fe655246947fff542f994a27c58ccf9871fa0cd48ceda893d389c86d41f97622a613d96d49a12fa67b50f4c9c9b44de697f326c7c0ccbc4ddcc41b355ec52b1a7895f51aec9f90ba34c88c9a5dbb6efdd2346d7e7bed397ab363f4acdabc20238c3570d2dd1bdfd21aec1fbc851d7e5783b426a345fa18b5ce2dcbbbffe4154617648f8659a640bcea06af4a8fabc546801a77d896b8b9d4186fd1941aafd8abeb9c657226aac9d96300ac165d21d5a44735a1ddbf8b343aa4ddbf922459166d62845129b013c9b22cd3b26bda12c1e88960443caabde3369a597f61d5de22b2dac284b8efc74ba5a989ff2cfed6f0995ec78e515813e9628f59ac753d1d18abf6d73cadcbeecbc06dc3bcbbfbcc4498f2a39444f8449842d190a3e052fb5dba7141f2be899bbab4899f1647d32033aa75d11a2beb16a6fb6d0b920f5976cb72145c6466eee6a10ade627e81de02b6d26be7d6fbf15249b4899b4abaf6f8d1ac21914824da847748b5d8bde168c473eb889936e1f121d322d7755db72cebb2ae13b1ce3d3b110efba6d14863bc81d6f5829e1a64d8186203a7a7070b2cb2a8fc233f3d3d58ac210bc2156d849e4652396ea8f6449dca5f1873f80c61220e1c0144415416b280052c484fc70fe9e988343505abe0e35354a47458d5b4070b2662d8907858a014755b568f65619685514c0b726b10249f63c6b0ec1fac180629267485fc30a10a493c15727ca41d4a911444b53b0af20726b41e695db8c692ca3596b08aad941ed2507753d210e90baf08211b3a2705918230211b241b3af5a706f1ea0b5218646c8c280a90ca7561d2506744928078f5912a9fe4435a1ccb03110ab865f978d0a9cb916e006b00d5c8753e901f2624b438328b468dd73fd20d2a9fc3ba38576a9fa214ad4b0fe45703a5a86242ebc2d810af307aa1145949862ac46ad4a05121c58878d001004e85e7362412bed6c032a0850945c154849415dc02cf6161901f2754a150c469abb326972aa24298864939031838327c08d93ae416e6981377f7bb90d495caf5922786b1ce437a0c6e814556905fea884f16a91f5e35cdba5b18e1bac05b11b316c7d55ae5472c66dd2e0e15ecd66ea312934c3a6ba6b2e096940fabaa60e289225818d34fe32c0e68b2c2d463bac2b4846d81a625a4ac601524f5a8a47c2ae499e22922533c155e7df5e43af28a58a9299f7581dfa820bf948f92ca93b2a2238ea783658785417e9850959e8e540eab2073146a6a3035fdac0b5ca911675da8203fd3cf0eaf3e5311523926232c4c17997e16c7a6a648e9d41f98508a8a86c3b6c07fa622c486c3c294a08b1a26e26c0b09b63b41c770bd110300a7add214ae5b1de1f64ef3744ffb003551a644161da77374b66808f6f00c412222488493e5481dd4ce79543dfba23a4a66287994ea2faa981da22029a5944132486a9a361ac9215e80dbba2c9facf1eb2ac7ea15d5202624ae4035c8e5755dbd205747548374a3c50104e2d41a04549844c4c1a910a7e322701fefdc3ecdde30740015bb2d8605d7e590a75b32988ce30e0b2c8c7461bbef211751d66cc5be0e54bf5e52d78a5def3e41c2cf1f98908ebd9cdd41118751ad23e1e3ad5bd84fdd088b98e9aad820e1fb16b4ace5d5b74c7ff108065c46246381dc2fc61171d6dddddddd56eceeeeeeeeeeeeeeeeeeeeeeeeeeeeee060316c615e3182cda4349ec110121252260865e42c80711067cc4ebbaaeeb8a316e4cc4cbb2a218acba2e27e21563bcae18638c917e3f5e6884385ab6843430765d45d7a5e52c1c9268e1076028f9c119daf0451184ea455fa88a558d73090128b6caa2383843b4ba5e08610ba803c40ef8bab012743185166a47965d10c5a07a75bb209a224e41c486eec1851b9a2b8609613d2c2fb8a843b52ccbb268c3a82ccb4a41b52c4a6f08f55062ab9fea041cc62c0533bb40083842d8a272147a691e811741501205a8e3851076aa57d78b2514a5a0871384d0dc755929b8ae92cf0a2a768951af7a3dbbaeab8960608996c00054e9a06675bde822a77eaa0c5a31d051c14d109c8086252498620e5e30d2501883175a10a17275bd60c217ddb05333d7ad0389cb8261413b533317a5e95fc782241f0857ed1ae5d1f4ba6890c682a4ac3fc1b2c39facc34b26c208c4e865c5c885dcc34358076e9b4032ae69e2c6c508ae9b56835df34b717406abdc86c59a0c327c90febad4581ba42bd42013f148a0022eca9822dbc96e308613b4d0051bb6c079c217c850b201122554814303a023f060065ea88047b38234d403256c8183294ad083202e82c0051748a0a255c08513a6682d3849173043bc30048438d0604815ba0b9415632a843d78b55e90a0a742eb064ee82cc8afc21f7e6319dca0810149c071db69113454338ccb308ec3580aa129b80cdbb1b382ddb7bb9b59c74b2cb1b00ad260cffe61471debb64b57865d5976415882220a2c9161d715d8eb66cca891eb2460626394f53264a346b06718f616ed1c5f13cb8ef1a04a704b0f56616090961c826220e0e187740cc4898168591778acb3232ffb62a1d6dafd8161e0f71cc32ae6cf585e0604f9c56c4bb7c4581f22cec820b6c5ba169975cbfaf712b32eb25af2c42b86dc32d84eb2aab3dddddd38026e59b286d1b4ac83de8f981d5947530dc0ae1d02d8b5634f75dfbe32d84c75dd7b3fd9d16f89ad39ee8b408597d9e6cae4e86b7e3bea8f985d196da6205f661ba65bb330996caecc7a11803218157223b3dd6265161b247cec1e23931faaee46968609a29b0a31ebb2447e2fd6d9ea66519d55bdab2b0c2bf0021a2a910be2100d0c5805e4612212f276efc29f2cb3ba2143082110fc09da02069d5588a211829a600584105adbf00d172e4308218c3c15c02a0877d5dd4c55f0872f2a7c0c445518c44586d1bedcb7981f283e02ff2c1f593e52590c3ec2472e2f705b8028a4f6b38bae65c31136cd72300bbbc94d7ea06a9735f6cbfac7472cba16f43c1e5bb53acf88ee58b5debb1636578735bbc77850d3b06b9a0dc34913576a1a04aa5fea9826298df628e1b16f559290f4e38fb7946e319d448c46fb6c96ca6b7f59d7f7c4c741d8a49187a2eefcb8cc3a46dbaa6979eb7a66c3dd3ff83d8d895faa7285eca88d76f93dcd8ec068cf2426559088d82d3abf1485184d45392a595ffacdfc4021f618bd7657fef111926704f61d794974168a054fc3f23c23acd3c0a7ac4b6c44311ab4b442a195cac4a871c2aa699a26b31e3f315d9bfc037db89e655799a4cf98d766310d83ba47398aa23e52e8093d518cc316e3288df5d2b19f3b02142233796498ed26ef24c3ac8c0945a1bea5ddbf979a2171611e12a53dc73dfb751f0d239fa1507574796199670476cc4ba2abd865897e3f50752f3f491ad10fdb7bd7f9085088adddb46aa921a8f40c76b54d0d95a219000000001314000028100c884462a1503c241786c93d14000c97ae5074521a874110a41432841040800000000018000019491b00a30b90a839427cefeaa98cd0e046db9518a7d249b1326029f484c0e0526538dc42e9864654eb43b013fb72c6b6b4587471c56fb328b92a6db61975070a93ca2f6df143b5941da23a5db0505707bb95158e6872d83a3149e52e8c98ecf0677481eb1228b9f27b9d8c2d2d450e1fc645858e32e46723892b70c09a9d72e71de2358a3fe25fa142c5909d802c5ba576e82fd80489a290a4641375069267aa87a69d3d880d82e159db6d9ea7c62adb0f890b3ca27573bcc322c7739f3a9f4a2bb2993abf257cacc248c7935e4c2d5f221d65c11c7abb0d8e2955fc79be67b3715b16af3f15964c6bbb834cb45817bc4189fe54eaa34386c86212c7a5f2a02251a15be709c2fb6cfaefcd9a4457c73ac0b79407b1ba96861f3274abab4a900d8df47958e4f11ac279edef955de1bb8b54d4a29913588d26d446ecd90685a55818cf6229ac80c66e2592e40272024ee7871f8efce16690ff133b0dead6708fd93700f8f426a5a234b32dd43852fdc664326bd82f362786e730b735922621960a5060c38549205535c5fd8cc72197c90f45feec0c2e0fae5a9356e296774a1adfecf188795eac00ca3638f1cc21ecef16e3460f2e6c83fa9c81bce2571ad16e679b7db116fd1cbf0152f79bf88357f100b87527286f35fe2dfea9f0393d82e8ed3715231b01e72375d0f4e57380941447f2027818a5c5c7157bbb6807c1fc232659e8561699d02790990b102c6030ec30958a6ab02fe2c328b4c8f28dd8fd3f391121d0bea3c512d8566c2984fd9d36d9bfa7d5bf97fc1851aa33f6a49579d010609f779f81fd7b9ac9dd84860cbea3f17000fd4d97e63de8cb42a47813e1f4ba2bfbab84320db23a87626f6d09fa35fbf6daeb23150a9776660e5796045eea544531675c29360b397480326c464222d8c5d1c6ca7f0ffa3c553b4874489b110c6da5958ade9ded487bc19b825aa81df628e673a02d77716bdd38bb684fd4d636540a1ea0efe313fd61e3699fe9865e515e617ebb16cc7694a7d8b68191fcb71ff2838497ae3d09a94b083643f3a016c0dac613b95fc233500a679ff71164eeac5d968e2855326bd5e10d76ed0002c9a1b5fa263d6dc3ae0d07e7758e8d0b1db82adcb6963694d0fab07f8881e0238e41478efeed2fc5d6c8fb118e94fea701fd705dd5666ffdb949625ff6386198aa56d986842e386292cdb3cc58cf792d6feb75bcbeec5b35db81d89aed3dd5abc8bdb2aa41db54f6e1e19afc958eb6f37f664d660e67bb58ceea4b8b55e26c6b975031fe6086df164b88ec6c37da60655c1edba2bdca21bbaa3bce4809c5c235bd1f7099a453c746bcc8085a66b47959d79c7540b048697244135ee3d55d5e1c34f364f7ba4bd5ecb2b25b3a826e5d52b977e93e82494b8d740e0fc6d0d248a312b2efd43a60ff5432c4ea880d4fd2548df429149f4c9bdb05ff22fd0aedd4babe966076476eee7e1413225fe89a74189af4342a30164f7a9cded429480dfe1452236169dfae5f6b38ea6a569c294d0d90715dde644c7dc8a360a6c9e18fbfd00ab63189eee05b8479c83618d87c67a0289e5583bc65bc72916f9c8acac6aa994486027506bbfa7db1a32b93c795ed484c84e442074fab6268d09397876ac5908f6be01898633c4fd789345fb33ab1f54a02828ed5da3ee77c5469fd818bc1b2eee82fb861c23a12df6cfe69a05b4b6f9f133cc3a21beabb163d689592e0720e9a56bdf069ba43aa2b17e406ffeb46728b4e69c198e95a51e48f789c8d3fb83cc970aa10958d775c47ac492e2b8d0f68ec6520d5a81c81a49615436fe48f6d71db73e4e8d552b8df4b795d8a0040bef37a1a8946ffa0b9d283f58dc150b47b5711c1b5dbb37bb954770501194bed5d694d6802858e8f4d5d0d46c67b819345484433ad9adc828529ef0edbbbd61c55511e7648a2286c9ba6832c849cee5042a8971a32932cb2dc8688842008709cfe40f0fd62fea9d9cee3cdbc51a5cb660436cfbd1b22379465fc7e0e3c61d094132f94465cebe71d3641272935c1917fdfae13d9b6d7e6a8e6793de4904df83db111ba176c2a47be558cb6097f11f798672de8046edb5cbfa68d62a826e86b32db2e119827d8644c0806ae7663559bba7c4723a47118b25a359c218cc73982c4c4a59df8c581fea2e60c24d45caf7282b8cec430076c852682697416a07eedc20dbc8401640db773a5f8e76874df0676277766890f0f6619361e5388ced8c93a669ad1fe9b58f9cbcab551cb10b0c1fbf805a5c5fa570a5f2c22af6c1fb2d02d85b8dd342e83f6599935c0b7fe38a897d34a902003f76158cb1fa0c9d1ef791c5174828b593683c9fb57f693f6d00daf7b5a961f296e74cc06f074ff1baf3c1f5174c89ce5b9391dcd324a912e9663015eba479fc631b76f80fc44d018477a94b423a526b389e0d33e823e6a36f1cb6da04510bef1ae9e7dfe8b22bac8d9595b4493d609792014458f9f7b39fb161c10f2399d5877a8147b4d6c37e67fa00157442b81dc3788a5809e455f250654f9a5b9d366e018cc65d8bf24d75f36de0d80a836feef5e82fea06b841ec78dc7f44e7803848bca34b077fe445a3fb343c4d4d23a8db02c7cd6431d4c905540fafa4cf126ad4297d60ef5f1844018b7d9b4ad2a7d36d7e3a4ce01660967172f1229465608393e393dd0e90d488f8e2aeab17cb23ac074a6efa24120b9ddbad46d14ba413ea7b054813cce0e7d9d559acd836cd262efaef5e5e6d43b36cff0f07eb2b4df4e7e348008719b9f6d3e4836dea70c45dedbde18561b8855bb9dc66ee150292e93f0d444505406c9423062833abad5154baf7c1b6f072df73d2b29ce603e8b1e19b33255eb5bb28156b6367fbfab681cb47fc179dcd5b76db264ecdc86223291134b7a2b3c10976ab189c8f2fb3b6b2273b0c1685a2148b48b02b23f2c83e2d37e9fc2be93761ae4da6c8c37ff8cd0542523a92cd3b1b2c85c36347e92981726c71d6449f4ffeee958296760ed7fa3cb232befcaf303d1e66c7a685323e0dcae6746e2744814db204b30abfd72d7f182e429fba38a790008abd1e96dda2c3ff6cd6c7aadc9dd7ab4558926eb9e16208a593bfebb4e13096c4e00bd9507ae142c9c9a4db9c6ae5a0037ecb690f61f199432420fa36dafa4c2b1a06f0a887b58ac22a23ef850f2cd91b18275bf5cc6e37b89ed3f207ef6c2861b0d0dc194ea432bb7fd5f419f6b74e50678cd275c694b356c37a606e9daf1da6134722e187c4288974321823115d16a03fb00ff0385d8922105647cfaa54f4dec07d80942b5d2042cbb7d11f6ec1c8fb6049e088529e3e51991a4ba5c8c6855d5a347d5d9915b2723a332400c7c277202805d7dc3feeb764e52e6735a185727295974c5ad52e1fa0315114036e3b96295ae31cd8cb63ad0be1b7d8fe6740649821073266033da2f2d45a843f98106ce2ba801760571c6fcff9cbbc09ccafc7791175356063a98216bcd4de4e5fc35bb020522f91804cb4bd9412fdada3ba654a1de001a33d1845669284275bff6a238eb622078da2a0922d3ade74c4e158c4170aee8f650db87b57316a6ce4b20379b77260cb540126f3d121f2e25835204f9cd1e80c338d3d12fec2edc86a60fd12f8ad71c8708febb20a112c935e6b18571850961797b8f7948b55870b1469dc366e8ad8bab05ca829348f3a3850a25708aa9a3ed033ace7b15815e09fef7737f84ef78cb2b729b199ef05204ddf9c4109e87120a30e9670e6b47d69621a3556977380329bc7967bc99f2121e75999abf614e9218871c7a1fe5cebea3f6f40bdac413e1c95593d22fa000f9d0dabd1eac7c602a2536955d3aebca31695a2b70d6a4bf02c3f1e1028af579d0de3382014a6b88de42acf9788974029de0c2fd03d72dec75908a26ea003e447ee4d7798181f01d55c588b30a50e74c7b8004712a2b82e10d62f1ff9b7b90663f303566a8e6e49da9f89c590e52eb64362bbe721b93b51fd2d2b98dc92636643e30c5b50784b14b4e2bc15c42d06d260b1dc7da2c24a11fd9eb6a59c10bc25c5e8810a20b67d9a2147a11ac37e34f03b38fa056469c5340bbb5f68c44cfecb0eba22effb43c325318e40b99f4e4564fb32df493f1300949be2de41435de59593ada61ebe8b5990cc5d9b97d4e06af21c9044ffc6a19487c1ef15cb67474cb35c8b8597ca023cbbbb08bf694f72032d1159805752c40c58af08865ebac8e0517d0f8067ac4d278dd3a67a31e0a877e58cb0500d85a7d6bd00a976e983473595c745e478899cbea587264bf91f084e3a7ef8c260b12bc52122b8012c8fed0578c1ce500108f70a481b83096f099431c09364b2030319428c832e2437ae1c262cb601e1d0432122733a8c645543bb875a70be103814143a0d26c726be7ee1c170b74215e01c34a68f8f0412af7a54fad186d448da4066974358ae5b376374885fa4810583c9902f46760b4e118c706cfcd4e1b8feea49b888b1a982f5c2e45166d0566613181703643185a2c7e6200213322605e6442ec0ce0b4101222c0bca484580c733a20403ce484d342344ec05cae91098b4197a70d93a99d3684a4bd8bd44adc7f09bb650ce159a4da9e683b97a85ffe4a81dc2cd43b2a40d4931e3f207109940e4c545fcb2588253ad2d9282b5865b9537444df4e6dccd1a6689a25cf59e192ccfc20a34e1be6cb0e47084d86bbd59034cdd275da9745596b5ab3eec0eb28b4f250c085d20984d107cb93ca63d3f56288d3b01c639cf719767ee92c26d6af6dd88be5b24c740d5db562d7c306b9bf73885c0e1310d076ee6105c04663865704b113130398e31e0db7d1013049cb7eac161d11bf1a17465002b6772a6e0d3611e77302d0503e8bc8b76f6e9b28c0a09c314f1e13db8d30ba2fa4dcacb4841aa4bf2dab367a707d53b6a552aa403d96e16b1d8ad791269a25446ed9c28857ed78241bacc0261ff36facd2cc7a40f4c1dbea822b29ceddd64364a2d4ffd49da8da7f5dd19aab08bbf6f1fefa020dc40f2861d353953945cdfdd456af439969e6381aae1514b0f0336f849134a5610a5b2a40f136f92fbcb2d44dbb114c625c2163bab4af3b780356d8298dd2802ef97070abb82ddde02f759eb61d446c98f962a7354daa22782e581a0d615375831aa91a6f8d49bcc0c45542d31ae185ac2dccc09381692d80dd1279b632afe5b98c36d600902ec312285a6f7c4a66f53fa809b9ffe283b5e0044ace37876aa505d3429989ec5ca2d13199d79c5b80e8a6db34ea13ff72dba95136516efe19cadf29715c4e8fcd129b1113a45b285c5ef09c2051e4c9d0e3f8181fc65e00d2190b01c7e12ab8c05aea9e129baa3b4938376ef30c14cb0a171185236a4c7946277a47d96a5984d82db6dabf7674a867ebabd48b2001bda70abed13f4fe947b76475206fb508d78bfce34ffdf3a859bcce870b9c8910e9d26be8f86cbe9a3cce5256f583e1a5d03a361b928592f9e2eeea3d2be721a799fdc8c42a81f1f9d8fc747e7a3c10fc04ca07571a0c18228263f90cf62458eaee92bd1d9db6c08775f5a0e1933e95ba161f60cb87f568f5e2628af5bb0a4f637862a6443d0f94fd8e5bbc6bfd00624a1d93b22a2fe57f6a73792c878a6cec59f9ba4ef52659200be9f93218aff35c4804a8b625535c5eac221a457c4c0127be23933e66763b05d79487811e6a6465e754a205a5009fd65d40c3cbaa62f202504585d0af58492cb1205dba1c531973c42057255d97943440b30415020e9ac8ca6c9221fcbbe35695aa68ab3c63918f08b9547ea932f1bd1c9b012355adf29475a3ea063074da80437cb3c837f37623284ba3cf2c333c4ab85dba4b52c1ed5c2612954c41b918584584256cd64643798dad3c2975c8401507482a75ac6f81d94c94612cf68c29bd00a2fb8d6b4088f65da4d9b1e7ea0200d0026c18e05982154c51c197a5ef75f730a9cbb864735b0aacf502561dc972a01a8e33243ff1b1c8ad82893bea7153e67049a18d92ab45c6ea0445f78058f8ba51346171a909caa92908eccf00c0b3c4e2aad11e91bdbc9298f5ec52c868dcdb1c57a2e286133ff35ff6f2f87bc39bef10f2dad4a358ffc8a7555313df71d4d64d56502325dedd2a164768640cb30ece932461f7614214c30a2a8f0575792860a0e6a6b1b07ca2f122dd3290315feef895c5cdae2de8e9e6d4ccd52acb8cb27563eae6a074ebb599c06f66db657cad014501826874fb9a8cce081981a7d0ebbf571b844a7d4cbcaec3ec0cd05f9941a527ac06d086a78f7f32893fdc7d58e1ff57485aa32a41b8d0206c83ac7a2ae1477dd142e105800f6e329d6d319fe4d841a725ebd78e7596b9b266a2c4d14a497d3ef7e5eb74c8bb86b4b60b014ef88c762dfdd2fb4ccb688ecaf16f3f897fcb0229bd144cf4c31a616e06066524b4d4947bf61fac1cb15ccd8c2298f5b7a224ba8980b8264b8506edd7ea13f643624052d85b2a81fc4661095b464aa743475c18a94dceb930c2c1a914c2f616175a107574d3165caca3c146a8a5f311038233185d6c16e394bbdff92c1d7af5e369b109b08ae146949cab52019b600c0686ac5eb8838bb4d9a4efa775bf6a2a1f5d842aefc2b930a79798d5029791b9ddb107ec8a2d0a6177cac53227b784dd38d790b1f9a4b15457f692736d613608bb0ca9c931e4bc7fca2b764666f57cc8474e2c3e05243c2e4ce4e9754c060896281849c21c5daafd2fa80da19fc471f1bbcf3b9218914f10fc9733d21cf37658db56d5c0fe95d49c24f4b82f02f9c5f285920c7a0d6c5d5f4e4e167c4a6fd7f2484b62574ceeb1174b676549b54c3e50056f99e44d57d87f6ebfecf0f44cddd1d0b09e769c1bd7c02e13b0ebed177a19ea5a725b5a38729a42ef4febfcde905fab34f64a9f97ab060ae3da4b979c169a12662d8a93937ffdb3411c759cb401986e6d540b8a0e2f506f9c9cf919d486441da0aa0f8d5745b980c05236d4f3ab0f23549437edd927a1fc572bae32e8ce322b358da0370165f8cb5e3f91877280fd87ac1a7548e7d932e3864c62306e413164fe16239fde9174f8c390cb243abd7d4e1e1e8daa3b8d167f1ceed40e423a06cd21849a9b45ab7790e7d80f7295c1017ecd1b490d81e8fa2e457a77dee190eb301be8e815ea33b901eb481f8c12687e844970670fcb70d581b99957acc053b179d58e9ac52d98df6561292f531ef09c23b3e320afc3db6a915092c3b2663c064851582e7c66f22b17f20cca09734f4b8b6701512d865c002a83b426a195c89e2f331cca47bc1de218c38746c73c861675b90a10413158e1a3a12de2a77deb31d53021221bc8c97227d67d63128da24ef1e482092acd993db5ac9e7b0dea47df1f955f65dc4f6d5f40c1fe7584effd2519802d5ada5fe413a6dafcc000f924b049ee426b7ac4fb99e88010483579650dcaf995f84a8798feffd8d46f0280a4da271348a3f31506d734fa6f73cfab7cd770ec2ce4af3921fb689da0cd80e1e04cf0a2fbadc4cc2fb4c4911ab2159f6f07d3ada03b81e2ace0b26a86da2de5492d34d9309cd91fc418e224372468c7d16ab6af2dc52a4ce3b5a0de86433f853cb53d7b3d2adbf05be2e9c47918e3143b7c1e289942f61bace7140ced6e3b6c94651304bd222b2fc456e68a6912679616de306a60ede4d75b89f16894aff8ee0e8af96e932cb58da6cd8c6ab66c6a2fc00c4b37ce119cbf222273edc688b6670d43645eb5338f044a6d3a2a1ca4a36745a35f9ce7101cbf5058fc82aea03dcc3ccb0432d3d21bcb1673c6670525dbf908f957bc4b109b899da6f7dcf1acd6d41a8eb398852691630fda93c8fa432b8c4a4ea28bfa283f9b7982d84e141585de4dca32ef38a65e920ead0fe7d14fccdca72440524e0560db085127c2cc8fc5dec182999f2cabd8d91ef3afa71d2dbd4346dcba92498d062c5320eb9adf5655b07e39d3d0d9ef211b69b83c595e14ca43866f158db94428ec250c6b2105eab26a1e125850999b8452b5f891027195d5d8d5971e32c4d84ac2455b567b261c2343c728e8e4162c938a693bb4ede430f110e8185dd13960bf7a39ee0261822479f38da6a5fbfa2a71ad3d1623cb1b059216d8420ac9ba6129b18ea30a4d1ff427f6fab16322db9ede117a988050028cd5410a6f4b5faf8892b130d15618043a3454747080fbe689521114396fae46d0d198b4cd9710eda5d6eec54275135d3dd5430182ca1e81c5d9eb2a5ecbff6662a0906f8d14d0b085e2ec65884cca2783c278eaff162ad22e9d08080b636c2e8cc650beaa94b7f47e942be23d03c896e528b1a4d981326120bacdf28bcd23957130214dcb238b77306ff116c160a2572e0acaa5494d2500068218811332882388c8f97f1c0887e7dc6259936e992484427208296983749f2548ca0fea1aa570b1b22422b47291542eef5aa5cb471bf5d23615bc3ed7b89cbf5b8baea1302a2e009bc3e8dd22c76163947558fb9c6c3ab1b430175a20ba6cc466bcd6b56488c3dbb08c2b96a40ff1e9179da473db7d3d5ac1c8df318ab55ba5d6d0eaff2bd8f8f4c4a2bf63547dc5baa197fc3c73b099b483fca26e7cd25814f41d82fdf6fce33277383ed500c02c562d2927f37c7ae0f3743d50bc887a0159140d700404e1a3f44b0380a2f47641a5aff6693889d81e7938d40d225559cf05b9621e0077c6736cf5b50feae6e1379733dcb16be81b82fef1ff5257e549d399ca883cfb94d70a14c502c6ad40dad30523ea1dbf81178f5c22de549987e1bcfb365159f418689fd0309e73004202ff2506462dbb348348273eed0ebfe138eb0e634e0374e19599ef33a30d2f8390fb1e9344e49a922b3362c89ccae0a138dbd046e680bee07d12c0de308435e3239770d6a91134ecfe26472d15fd6a5b6b1519a07e303a4e524c0df1847159a0f8481e0aa6da2fb0c8f0bdf25ad8603162e8bc2a075a67ae8507b5c8e50ca6f9a9ac8f905009391538e566c33ec7f0610762b6e78ed11e4d6d463fae5c50eab04345e79f5803b53cd9ad29321ac32e6b1b03d918d72c38da78723e16d825bd2978a0313c92d870a210173f19eca8fed25a853993099aa4c2a7b50615419c1ad13bbbb98438e05cc9001708cd5dd3eea6a254f831866c8aaf5064c26b167ba4e22961430318ca9590a7064f74a90ded723e357832a864d83adf0f85682ed632ac3dcc82a8c8f6dcaf7afc53a317a2154a213e2eb49b34556fa46f0b8721f759aeeace0fb878916e25e3bf11c00c023f7f4584fc52e5ebf6d3d1e219b773ba514d398261edd4f459e61fe90539954a92cf2bd03bfa8540453ff72094f326342f4e517fe68fd86da95f382e8a7fefa20b9b75a4cd21c2bb9983e959e074a424c49c8ba39bcae842567f7b28142de41472fe15a6c6306239b36fc8ba59002ad7a6a3ee7cb563cfdfb46d56b11c8ea57aa3e7c58dd2d2ca79173de4395d28bacfca646dd087a0f3258e7c209bf1e21dab7a15c31af8d0d7dbf53a0a42e8e9d2c49586edf10f87f46576347c1d3e0e31eca7ce63e2ad35b72640c3bde805620452ec329f425da82ed8076192eac14c6a4afd6b58d73918a702c75132767ed0e72814bbf5f815afa2881dc65e8c3c99c36d84efadf91f46952dce8cbf5c0339c2e759a33815158d3aadaff031aaeba52d261caf9f7b76a7e9265f6e7e22146645bd5788a00a21dd2f6d76b3233f7b3859aa0d14befa02dcde86ece450d10c6c85f06058653f7db85326229968b464739e18ccaafd250af742b14345c2ad426d9b132a0171b60a91f0a83c20d329cac9566c57db015c06ad412d4a24c9300e226794def4618ab60c9eea3a532aff60cb4c502820b958e1cff3d979e4c4de52e5dd5484b847eb2cb5da6ad7dd8f7ea042c3bad9ca49568f126f1aa95f3c3c2730a7d22e2a63661c0abcac69582a5a4a1e1629f681b56ebc11217aa46e13cfa91eb1a1ea6f052942df77e5bde658140093b0e2b235b9602f1f4337d9b4076a9712ab7199e06ed0765e487d5d21e8990150f654ff532acf40d56271f026656fc6a08e629467323e02a7ed8b1934453ae4f6631afc9b7815b5ee8287cb92115fbaec228476353324b5c74e24fb4360e878d07b4239ecb22975d9e8dbf84eedcb84211ee4cb5ec0896d7ca254af0d0ad3d961eb66f6ed34c645f69ea93311c58104026c9ca660bac0954eba11f98899ae96cd7392ce86b5d6b766eaa0813327f12c48c9fd1363ffa9ac5f10a4e0d4f025ac61465f61c12c127701aa24106d7a0af04faa219a656eb511b8d0b506fc59f694c3ac2d02d9ecbe8d68bf0cd7704c0c55dd86c04b17adcc5bd0829994b25dd7deafc9f8ee6d914d0403310ce8c635a5d2a2bd7f26e0478d5cd080837a5bd9e1f51aee4f58638378f0c09ffbd3cede698dfb6edd9f81bf76e8d635eecff0edbffaf77797093592bbd8d0b111ed906096fb730c89e31857b95ca4bb3fd396fb9d57940073128c313f7400e901f76778a4589a163e5292f3b6bf44cfc48be0fe1c28a0c222e3c0c08e276ec0fc79980565fb33342c9c606d9bc906006cf2de5f65c830fd25930d2ce44345e5086a14fbe2dadd05501011037b0368b2c05adb9f4cb188687cb21f9aa8f9e71e998984a0e947e167c59b99284d5fda3326884d04a3cec88e81fd6a4b28d109c35f958cdbab364ca1772834ec8183140e2b146c520561c391874e0f1062357e891397d96394db9f5d30527551b6f5a4c47a4839309ce5ed4fcf47e78fdf5827d4cc08e852049eb6074a1fd1ef58305f6fb690dae2d5acafddd7b078fbd3f6396ff86ca06a4da3f3ed4f5ff7a53967dc9080687f5a890c111cbba27537bae35e190787915d087635b7bdd0ed4f2d6f1920dbd3ad2ed534cd2955b68056cd6558d0fa58bcfd690bf0164fb53fc739eb0aa53b2f3f82891311ab2b2f87b418ca6a022a270139b262876580a7ff5adba8eacf705759dfc98534fe3477e014fe3812a9a3016ba308e4c63be9b2c5065bff78086cdecff40f6535c1265ce40423860ea32476e4114047f99c0a47c7f15d9bbc976dbabb30f2693fede043e753e032b8f11aa3c66493b59f9b6c40ee8071ca0a3b84e6120e15b84eaadd8e1a69f11b8ef6693fb716790c68d07ea6c0090cc61abf14460c8587f6d34a9e7065ddb1cde9904615ed67d7d068ce33c7bdbc912750dd61a6fd24ff8f74f77b52fbc9d6bb09ccbca9abfd0409f4bf3f72ca5efb89372a3b353aa2f9feb69bac065ef8c86db2954e206a3f17f8b58b3256c39cedf24ed79c4f698490b426ed59f8a2b981c4e95c7fd39ae4bc3684827c5967684517a2c55514820083250ef963eefa0db16828c11707fb7248bb7f0912e5708166c99d234739a0a2aaa63b8fe2aae8a0a11be2ff806bfaf81701f339492a4086926328cd522712eb1465c30426751d04ea1a3a93104ebc2a7c1d50f8baa128f6b9f5f8c7e029852c4a7f8921b269826c7e37c9d3bab92ba81355c3fc7738a804cf9914b7bcef76646646dbf71f67428e2b9afd6c6c84bf68cb3a11da868856aedd97947dd81e23b25c70f4c39470aad26e398c813737fdb44c43fbe96c11024c969059acafa5f5806d4f2d3e032cdf1fe31b263f04028dad92ecd755753dfba8020a5059e114ac646434ecece29dfe28e53e796809b44b7b2af04cb8b6338b7b79f16639034a6f000c3ababc6669d301b8d37dd2050706aa4fd6e1acd0ebb08cf6c566a1ae5bb6b93df1dc3bb89a1df1def8d69da967d5c75d4b801313276c2a9691097ad4271d4d8156e943a5eb719c1d66f73e41286787dab5ca8792e741802aaed45d8ac7be1aa41648a216db3a8406248ae7537f53ff3e46f1a54dafc6722ea426c73249cc1c85756aab81140547a6c482a311bfc72e14353df95207cf8c802d20fdd242507fe3e17c4176338bcd49651a54421600f40ae8f3b12bfee477e73a6d725455899707cd8fa233fd21a9c771095414f3aaac2ab98a9ea5bc9bbf4ecb962c171e4c2416e682c5285f7cd09da9d0ad3e3c79c4807af824d6251441af02c5a46be49245301679d92b87679be4081ce958486f409ef4ecb9c4494ac9f95d354dd35385c4856d2907e776018198ffd49dac8ca1e3f90cdd66ad13969d7097e0cdd03a1a8aa8988726e1e6f60fcf8a2b4391aaec2fa1e7a247b325c3a037a429d0062c659a02c5ccbd969c8d06df6992d4888d60e44448a6497d4a2148ba6e15fb8ad714f30c96fa30ec229be961a49caa634f9462ca40ef777059dfb08c7286a98f4f48558e0d673c99c0b4ef59f947b984dd47922cd3ec3d36dde47c29705c7b4f3e68f7f3f8ee127ae3e5929f08ac8a04922cff4952c2ad83c08e55e1130197fd6146d8f98502c491c9b1a31390a9f7ca10bfc25423b4b49cbd0a205610ebb8bb0df6872d030e2914c5553bf3b8ea3565b65aa95e284230b751e0acb4077a8a7295d7a6661f6e1711b16c3251bba53b5f88599611c5ab6725d7b6f58a1e9d9bd4c22917ac080d944423308991660b571564876e8d496c12e26121d8c635226cca41144cb87087047f3a5543c9de96bb5e03016ef6d2c51b80720a2eb5371e0c6edf73bb1f15e9829491d5b665e96bf0852ecb12dc657d991e6a1cf5c241398f7d445bb2fbd4e16a8fc2ace94fe7d66683935375d883db452520f0725839924ff072281159eebfebd4b8c8e6f69b35699ecfd4d560cc502ee9e324751362dc2a6c6141fdb222c45725ede31fe119f467fbe94be0cae90d4ef0201985ded3cf8259b7f23238562c5b1b83aa33b54d4a6b95a05106b35a1588edc30e8bfd770294b90571c9bafbc374a34a114df8b9711455aad174eab0de7c1da611dd978ff757f82a6aa87d1b46d122832a5e974dd22e6af7537595e19b7d58618dc83beb35bf2caf7813ec1815135eaefb8e15bca89f8a8a3a9e2efff383e0a1210e004e32ebecb787d8c33f3a1a97cc8bc4870990df78b5ef4a870c8bbae17871dca72b2fb2536450c0fcdc020053bfaf4d81d91bdecc1879f73493820ab215f3de07fd8ff18692492326c9d0d9b496eff3b8efbe51ea69b1680af0c642148e8ced87dc091b4684f3cca7e67926d38c6b87b2c95db97fe9a8a3bd4db3c8ca1a000b9cb62dff74081ff9ed832f5792b513921dde7cd608d292b5a39cd43a16a668707c5246a6d6ea1a02f8ae412ed1ac6b48af83e393392bb8afc50d525c6d5c62bbaa9610272bedf9bb3ac694ea4d1f098a76315832777e5dbe77c8c6c48f6af78107a521c15d90a4e38146300ed3c7560ba032223f530ddd3818eb668ff1b2c95c970d40b00f5df737ba0665016bbab21268d491bbeb93d7d2db3da8412376977cd828563bf87de66a94fee80ce34a2af443ec6d49cb884e69c19fb97072b83c4bdcd1643cae3bfd2d2b678663b0f540f997d22cab61b9af1e0e707fa534373db8faa62f0cde94070dc9d468aed62a29e1a1098ca6205d0aacd1957b30be5260bef2a3b945233dc7a5c29d94a9980bfe48f526f405cbbac5932aaa0b52b72ebddd814f1660989a456dec4cf485c883e69494339df46bb34cc4c8f401d82ef945a6f8625414915ac0eab09cbfadd3d5c1c86f7a4dfe3f01ff22def316babea3dc4bffcc5269e208f430790707d9fef05cb7014140d0d3a3fc81561eb397a100055c316e859e9a1591a62cc0323c786fe61034b926effaefb94e8bde2fa63b51d47727f8f9ec09220d79a8eb366e1c798cb40d6881af2b743d41d84de0b87c190b4ab44b40194c07628cde0c294a84135ceaf8d85f00c2d6d666dc1c41a8f77df8b912ff28fdfde2bc1576d56c9a622a7fd249834e6f2498c2f1dbebcbd6ef4cc46cc88a884e7d6d36933fb7a2c7ff8950a190a959c8fbc4539fa4233d09d76f086fcd988156386032a120a927fc29d71d2ede9d315f15a77920fd29df81aad424cf8e0e030e67c87999e31036dc6465a9b86e21fd83eca7cb1161afb5873cdb82020620ddf0c5d753161b070a8e70ddb49ec23921df252876f7dd65baabfe34faa519fa85c08d60977c7c3b08ebe5bf4bcd91cb5427cd3c81e01363c9d6b892696a028112e6a40181d0f7676af88ec3c56c98ddfbfaeb37967d580a47e26d426cae493076ccc2aa35527c7b69cfdb905f763fc1af792dc7614e11ba1005c3913db0137eacaa590429c8d65f8765e44915a8184e5c1e807141fcd978bbe353c50b8bfc463465cfe0fb8b635be7117341eee6cce2ef903b38463ddadf61cb5212e793defa62d031ea77385539b3aa4f590ba8ead477e76710925ecaff23465d391f223f5ed3c05ecc3ed858a49dad3041c0bc1f3f81a21ea9713606fabc49465bd7237cc70e609589ca2d49622f6118e986b08e4343d9583231e811305d0071dc08e62d3515f86c87e84f943df07fab04e55d6c54132792226525d6007b67e4531aa4f7d6bdf8809b3540f7e88d88ca26b302291c4ab709bbbc513bf08613849783de1b6660dd5e76ab013e633ccad65284c3e6eac0948a66dfa6a3a691d897ee180cf3c4c42c43c3161e70a1a24614b1c64ac9d4cb8945efb1052026b202379e4fac09fb1a0102250868c0241ac12daf103519802dca7d5b8cd5aa4a3df18e1a1ec51e7f28a0630d97d93308c299c053083371ffc726d667963f123aebd1de4a74435a9429410340ad13e3051cce62baf2c2ef4a389e6bd54b202fee4e278c40322740eabd505a6f489f807b95eee806cb9c2fb1316feabd3a53625712d05b66e52600add0543b83868bb32e1ece97528e05229c8cea094c392bfebbe7a3453626dc0257a1b2f4429c18d0c4e1e50e7d4507bec0249b52487e4eb4917d2ab5d0287fa37f71d8a8a23acd421f26a03facdd08902786d63f1da1d2c1af96bf8c1c6e0c7d0332229333f1e6cb8314899d95928e9fa0a760c1bb02e9d0af2fbea3fd922630f1fb1967cfa14922ed58c11266bb778678ba6400afde2937d405c356d3495bc45b2ecb7470eae251099d33e1e293abe021a41a1c6eccb4b746180e198fc37d02f9aaa307a7eb7e5fcc200bfbb88a2d82b807141ee2438570a4c706140e5e534c54ca857421b162d2566cbe70bac6c0a100bb321e75a65e7538cf646981c28cc596a79daecb76201d5c696ea040c1470628bcedcbba6faf54e580bfc86c6e6371a0f0aba63fff47e48a380c714a3dde077244fad135f35c8ab7e2b58a070489efd7c9281ea17877c2f0668185cea5cbceba68ad7fce5ce8c1860e6b3edfc56e8604e279a9b519ceb19dbfacac35ce422ce4072bf8b1130dd6611811f089d2bbe5a316381ed90dbd7c4f8c4bb1985070176d03a8794a3213263cc319fac410e812352018ae78e443f443d77d981c9b21a682b940a4eeae808c3dc6fe056b556de8db45500aba51cfa4a7c3745e35134db08d278493c13a92ae995cc1975035e621e594ae19737f69d8a520490056ac51f4a9c9367839f4ddc34b43e6a2286e428ff8ecdeb9a8ebb404a895cc51f815a8fc92070b249080f54b3801df4462498e2c715dc9e0da3e03af523f464c474f9b709ab4c7eb66733443a3d3366a938cf56634c47b2a3c0d995fc61f5840e760b3072724ab9fb1108c754d7f70948ea1edeee245fa20eb4390477858ca58586674f4ebb181f0fa9953dde43bd3b343d72e023293bbc887d4fb21b7d552ee28853cdb2eed437fdc1700f311870553929067e1d525819769d1d0ebd702475873587b888123f823a582975a0638b14d9f2413e5f93581963da05f3ea50b6fb37060e1d2911b91c7ed3faf4715ff8c367876b9cba968d73b1e4a64242576ba86937a5b155508f4423aaf4b2d5b9fbebec0a9b58f88879ebe66750ddf546b7d6d6fd05231482aa3301ef8018061dbf4b522e2ea49aa2a20d4d4c8ad70884650ddef015126cd18d97f8ab20b2439fc94df2233740ddb6da4d0a98ce5f1a070ae2df6c077d45603c4e368c9ee7ab5739cad530a017e52314ca1fc99dee5337524e2ad4f6ff772764c73b073d3ad169f147da130391438733af7ff82119d6d6798abdda48ea1801892f377b2677de898608e7e23c0b3549cdc314652d1b067e545f09853b3d319278d5cb365417496564650e58451938ebfcfa46902383c8f7bdbccbd7d807fd3a93bfa5bbf812c07f31ddc5dfe9977e60ba583812519dbb8f189ecefbbc9859ac25117af662c82b27df3f6a8fb7cdadc7dffe8d7b94c2ce3f411e3522cb488d0461df8552d36d6f135291881f2916496147b54bd4e32e53cb1d9685c0d5bdb3096a042b57607b5e46b32886deeb336d6905668c8d7a4fa7bb5cc0097d2bc3cb1553508e9c40e12ba21eac23230568bfb9ed3c075e49b9559642ba5b96ed1959d0f58c51cc6c9b030ef3995386dbcb35c7c56e20d9f88538de57027406080795e50dc51e76fd4badafd52c6867a6e5e53b02a2c793781c8fcc0124e0353233f1417ced46a90c8a88351658809e444dcbbca8b2bb5ceca46c3d684cd7b8965c3266c80891be981c33e20dd701d441028c4f58a82bd44bba5fb70b8bfd50e7c8badec6fa994aa38e3d0ee17040f0e9e61bbde04c2cf35c2d8427b6d00feca4ab5dae76fcaf1b91aebb5d0287d2f74e4471c90393ed522b510ebd48a59bf1be8f733ba9e27f69158501f8224db8e41cc96859df9db20f4b4bfaf4fbe5c80a13c63093df0edf94911ddccddf53b420108f00c1d788052a50837691cbc52f469438f1fee0ff6b9ff473f064de978d035c878b323e298a954f9a2a5b8a6937b90974e830817a934b36ae004f096c55ce368c39a24af5ed7ff0db6f89226b7d8647993c9160ec8bdef2e15fc9968983a14abcdd7297185351d29aacca897cc2aaee747c5d50a10e7aab7676186c0563e4b5add32063b44133bfeaa477f61a4a07106cb6b4f9d34c1b6cdcb540a767d6b606bca17b16c75cbb0568ae4e9db79ef436b30fc8f2329ac3f5e8d18c48e8cff7ad723f6aaa38a613c06ac33810b0f3f05ca549733f69a002e472bfc2ae006c1ffeb3499831cb547d5fcb38e692ddef25ee4fffe8fb27b2d6188efee51a241b95652309229c1f8158d9b5cd351977b913379a09171cdbdaacdfe9376903c8f3240971d1ea4ba18a4f81f54cf1373d99c7402a98db069a68d3aa21fe4c8692be1565b79fb97d8d6f6d9f9e14fe69b3f7bae004d6bc75e252dd29491d912a531a5d30be5e6fa3714f4b790077daadf7edd85279386ce642fdd3791536f4c35a59c1e78b754f7930eda520468c6e7376d5a64cfb6914807bbece68114dfda73bfe17d5721feae38e3c3fb2c4d78ee488fd8904b405e66055b37902220a565810b079a5e6b841e4285df535903896969fdc194e442817a7fb1ea440af8116cc9973d405f277c8b20852f590926d9acfefe4cb69880b91b77236c8374a2b6caed948ad1370a4828c12e2e2096a62efc0f970a2ad79f29710d17c3e8260e44600afe9bf83e19e1a7116ac94b793bca8db43fde4015fa699f7bae8e1df0a5557f8ad9bb13ad7a1c16503d1a1f9fe0968aa1479eaef484c86fac70de0af87455953cf66f6f8cebcee0ec500dbe19e6b9c6219c8623ad5386e9a7c05b79bb6c81d4f8084bf55e0b9fa3950fcd37c7fc7d97a4a3fd6e64632b984b7de069384a26a1304e133400ca054728de16e1f21f6d614eac66840913a907e0b5ec5656d28ee30b85a91e896803b40ec10f12308d4e5c5fa28f290f5311a9e0a9751e98e944a08c4eadc14c749de2d0d338060ba3e498208e02c6d7e8a90e898c1030c86fadaefc65a3647e0f9172e6622870cb61a96911ae0451ce929d2a4258b450c85d38ecfbfb0427e2a1a3516739020aec8ac1cdd28213f46f51b5040e4506f8183a6c6719a165ea46fd0a41a800981d0648f7aa690e9397c9bec43dc33400bdbd7afc1da44f3849b2d8a3e6a4df30f213c7fa3abe962119d4a33edd9e8fc3b0a555874f0ff2d094017508e6a67f4c4eb97027a50492cb5377fb2e8288a67336b675d8f127fefaf3aa28a7cacc964a93ee5136ece9b1e4e482eee3712e67e08814c37f1425342b1addc6da0b09a82503094a1602525f6a5e6267aa4cc64a193ed3f01768a0c30ad1f7ae04627edb1b38f696518c90374a4fe264d9406e4186e8582b74dd663d2709a3c262e56a1f7714a3a9228b95ccbeb6971217a305a15be78ab33735112d50ed214165dc3aeae0d6142d394feb25d92b4626e488a8b09b671c38a27fadeec261df857d0c8804b9ebd62d89f9f8d8f9edecf25c17e498305ae6445ea100aca609527ebaf2bbb38bb99d2ccd88604fdbe5e60dc33a30f3e20e353dc017088f35b3b52810e68055093f47fe270ff72c907f47aedc091d7f286be250b1508d1f4dd45f964b869e8c5d36020c311d9d8df119afa5108f1059b6ad71d0ff251e9934b594eed9b98f1ded42af003230503308e02a5506a1e7fc965979b9465f5b592d88a86ad2bb064876204afdbfde8ab1a1a7693156ab04bcd7c13aa6153043a271e2dcc97aa8a7ea3d091a47228038152094fdd8f617f4168e430ad541a64c57318929e7252631a7f0820222cb58c941a00b43db4d74bab2f66a45b57d9302cdee4a2a5a42818ba7ac9e4152ed31a94f20020595bb5705deba5a2022e0d1745dac7cc1003fa2477c5d25bb15546f3ec7820f5ab8bba0aaa8d0d51185289084f033dff44410d4a9dad0b14cfe4a43198a32933479cd14a5f966b28fe1c0980376679ab83cba6c0c4ad1ebf954381d1e18fbdc6822c8f40f46a11b9b4f040740f711b6d3e91070f23637cde05f3b886b147aae1aeb64e87372e63e9b467f26a58a8630a9baf9013ee0990602002f68b83888119a30995d428eefca32111ed12baa2b741b5119490132e4aab167733d67c519e150c6c7b5c784551a71e00f24ab42466c912e473116c38f349390dda426d8af3e310a747e57c343cc329688f367944e4ac322804c7fe649d17e5f1fc6422932ad100051f9898bfe0889582e344face99a1f4bbb234e586e80fbf07b03a27972929acb5711dd157dca201e60197401a9baf12b83dd8ae6d5bcc82391ad1c833c49e93a1a67352f5799707986fcc97f6e136f1497e9876a75a91e6df79438569710b2cb93ee725989e450659a8e16cb933b0dfe6774d530006bcd4c0b236a79157c3563fd9300383778d1277d650aa38ebae9805f82f55dc5b2d7de074422a88a3e57b6c29796424395ced43ae81b44805bf7dc2c041937705f9614c159859ad9c5741db6d31e5164d37cd2163330ce0d0aa9fcc30da615a4300d1df853598126d4006f008c3db12699bf06255b34a8137eb9ad9899fbccd503a19fdac2488ef99ba83d9522000f00759f365f19a852fdb11f2e22a601306d9e0953e77f7f513e4cdabd26b82ed41a9f43fb07f99aa10724b58ce1be679c18ee64d97eb76f43229b93b8ebefcf1ca38425030d594226128fffb489df4081b09700c7d65d2d7d41efb6e16fa63eb6da719fe3117bcb5bf6ab4b50738f14f16a86cb7ca37b513ab83c9ef4ac79b17c48cca75dad9e42d0a4c80626eb0977ec8525bcc6ac15e6a9a5bb17de8f8d883cdd1da62434db0da82d29e578133a9627ad9c7f1c329c15e206aa79753f4696c5506dc2b607a43f37ce355ba2808030686109fac4050d4a86bfb76f532b800937b489fa8bc856504c61ecae224089e29a0a88c5d8c2a75c554376ef9fd35c3599753b793a62141cb0783856d7a1b2fe1f0b536843545aa886031601e528f881d600f6560dee6e460f7d34aea560b711c9a49d94f8580ac91718a3ccc2749aabb539aa4f2e9d7feb28f112f45983b4773bc6ca28163fbe65c7b52a866a19b698fab103c61b0f29aa7fb08b9aa6570edad8e971a444e9a61a22e28a64694d9b5c104a03522318373f7df29c08f08d95124e8230412bfd7dda08b357b38cb79d63d82dacdf3a3d5544186020306c09f92a688734a548c9909bb0ad23c1523752050ad8b2d8024aa1c828f7700f262a1214c011ebe43d89a8caeb82a9c36725813788278fed18ae5ded578c743591b5ce960e5c448787ed78280cd8482df380ee0f9e8a676af20ecb623be33128b23f3ccb8af4127c0855ff17b94a126829fcd8fde279dc0afb81d13de095aa2fa176cdbe0eaa5cf3a40b3c9bfd4a250ab04b818ad382b44880c6346057457148c4888ab899d3b6ae8fad98ffb87e85c1b9bbc3a6131fea30ad1e906e8a6ca7990034ee6451436f7fac85589ef30ec6cfe206c2ef90b51606345029a71aab56381a107140b5106ab8d55df95e1f0cb7399f08c2597a9e2a9902794ebb2a13a935c929a19ddadd1d9425083360bb71a8db5a875417926e60283a2b4a93aefbc9484108479b6d45feebf78fbbfd1ec8ee0f64b77a0657add7afafc659dd08e03c0ed7c37000eb1bd9f6223dc2150033d2397610eeebfd6fe5088badb693d1a6a8a89b663a706adc6bc88af21cfaa81933a61332f079faef0c6b66795aca581f3f8b48282a6fba8fcc0769bfe2e86e5ddc9120842bbf21a6e2fead0113ef5baaaf155baaa19bb882cd71d7d62b2e4844e91435cc4b63617d45cd3b14d1ed4c5a95c6c70fb01cbf5e918dbae6ba6e3cde151f8ea573cec96b6d96ddd75fbf463fa75312b87ece9484dcf31f2359b50d7c4c6caff380750931e8a41d9d4967d5aec54cd7b690f147d4df472f903d17540f5edc6f251154eb1482ecaa0b48b78273394b8c42f10dc69f6c5a555c14b6703082316311a329b34999a152bc4241f8853cab4278443a62b0eebd9bc24df768c19eb333ab9e21ea3d0bb263893b673f62103b08925734b7b61a4dc24326e3c1aba40b29490e2df3d80571f4162dd9462d074d17dcf5864192ac6120a62fc3a316dee4a54672dac14193fd0cccb9fbb37abf98a4e99b45cbfb70562a52a2c88336ccedee613dd4b08b94fba252333e198fa30b8bc770acc47a2d00f05456d65c4806e6be3242b92f9567f03e5f7030b73c7095413d679815ed473a87a24e81278b6cac4b799b696e4e5e458766149c99f196232af49b17487b7ae9d24f3853ed1eba1e84ffa2305e84151c5520fd431e4d5b9b824a89a025e787d3fdc094f3e085cb9a6d51ee0c72b05b6fe0873bcbc9c9a83958887c7526e8e5d801719b5fc56241d038402e5160a65199d7331c841d367437b72fc4e9fbcabe27743488cf876462b83ee28ac3dbbdf7110b33d1cb361d77685521ebb24f0e47cdf6d610472780de720fbb7803367bed1ba40f1fe7064c1b21fd8676f6d2f7dd3610e2344e299458b845bf21ce21e2a4a3dd93df1400449cc14d0761bd2fb7338f83d6776348c4fd5d1aa6e98843a15341b72e52ebe554ce0fbfbd2a4f754dff145fe6b0d16fbf7cec988c47a3342ee41e52a1a67a4f6208698aa9ba51d9e4dd3b2156bde5426a03aecf68331c9c797305c4d9837e7da3262ef40d8d3719c8fc9e2257573f0768a0c437cf84e759470529f3645d1b922f023f79358c3929d3f05115e723d85214651d507ad93b9a78aa5caeffdd1646a2b1b4750802a9fca82e41473c2cdbae615f155c3a8fc94360f5078fdc8181a53f53849aed21c60ecb160140548c2cd546d54794c8b123ec0a8d4cf1cfa8ae4b84ce93d3285a708b846fbfd3290fde9212c2fadb5a195b633c777550759150f8d97403a2c36ec82f41c3ab03d1170da75e86a5ec0d38b1c3de3a5462d304fb5cf73d908b50d340c9c1f8d9155ce91fa8ede8a67f528dd38fffe4c38e6fa95322446fd6e3784dd1c1582e057b3e6c9391f309ddf625010aabff80c9e1b0de20b53fac28979375a0bac5daefa2355969be56b2193af8f39fd37fd94c1efc4ba5b9172b7434f245483754e302685f252bc778ea50fffcfc230fad465dece988ba86d81c763ee9bfea2b9ea64afac9e50901f9c0881e12e1ac559f1207636cea3a41b6b539d338e70f5b5c6a05ae9024495d4d8dc5ff9136f717aabfa4f50f0ea47cfdfd4cc063e5d3fc661c553036fa27acba7943e8f56fb40dcf25a11e0a2aeec2edcf0bda1d66b1abf3f08f0955f38e202b545736626b8647ba8e2ddebc631bd7dce678d800a49f213f1bc876d6f2220ecf5c0d4015de77eea7d786f3874ed352abb8d7d208781773ada75751c516042e87afccf1cf95e1673a867645f576612c67226fd89f3bffde6dd5c89defccbb2edb0e1bbf04f2ac86825f6d98b3b385821343e8f112c8811778fcd9921d00a18753b71777eda881f02fda60c9e404a7bb013b0e9dbcc9c50b998c37dc6aaac61520300b95f62c0939e974997feedd3e3039f16025f947656f5100b449605d053f27879b114360a5ebfacd0214c8aaac56ed968e8aaa0b474c3706ce8c9d39809f4368e606d537941ac3ed7f2dc2415bfc51c60039c3687e45d007bd81016422dae4aee316c7e750badbc7b9a43417fa163cf9398a1dd2e3eebf3b86241ea4e8175a3624c238cfb1c95f03516e4be2c0ed3aec89e4aa9e351d1093bfb9240ce773a28cc637b67c98ca8e9a5419ecaad0cb63f0448b7187cdc7275468524a0691e0e5c4a444514c6d73583dc8fb63c5cbbb274d5699959d31d81b5d309dd5acecddbf9796abc9d533439e396c2b43ce9bb96b45f05db163b21c2ada14844f0425983a7942172ceacccd7d1a6e4204e13e9f7f08162a8bcd123d4ac9d6cd2406007d631927e26315b655fe328fe19781ebee7b6e18c56205c7cbaa1444d64c4807fa033841bc022aecb928c22c53a9a1d3871aeb334d3bd70418ba556f4132dce8c4aaab5097eb0cd4fa72815ee39b52b9da4543bca67e2fcb53b7d97cf261d71db71a14b9e69c2085984c8288e0f8aae145955dea4229a2a02e6d4007c1366c8bffb6c0cc5e075251a9fcb17715641a30fc1620d15d385b626e8241a3af9807f1304ed409a887de8f8f5c762d4f5b1a91de29a8279c5b9442a47fc55fd91ac39fe04831989acb34751e2e2de57c5fcebd494f057339cabc3ad6e1ef54728148f9c94bce7f520c9cd8171e4a8d78ad4c953b7324e6e6154dab177311f19649409bdae6f3a69264876ac30bcbb89bf5480cda6e3fdde15d9774712c3d615d41e3672e08aa18bb5f041a3221e435225b4db55e17db0706083d8e9e5acd088b44895b8577880cb8850bc4891a236e38e2cde20b9862d87b71af506c8c8338e46eb8dfdd47f025078f67b3633dbfac89582a563f47d8b5204c25b5a45a16585a14a11b00c209f558b8ff11914395b1e4878a234ffb9551237343e02477a0432d45f4e56a71068aff21d8c16c871d7eb6f397712d3c454aa86023d0379a06d3b069fc3a720e06cf012af2e2c95c172d790870c9a965d218606f2ce7b8ab04d2aef58a087032e5653b194b808729ed00101204ea2d2c8808541d53a38d059224407a79a920d696db6f1990cf57f4c3dfc4e7eb4919b6c79a30592ce52b342667bd3c7c1a9f726afb034c5967763727a5ff87b5270c6fc12f4bd1494f67f35645f2063c2e95965d754d6c47f5d209349d61c5140c816144103e3f64de9f6abf2fcae8edb6dddb5849706c69eb7f67a93106a06c5fec16b59307a4507009b5f58e8ee75a78f7e8dfe5e995b009fed6cb9c7111b56ff563ccaa7695f3746ac6c9f28509378aca563c07b930ec5de9d9b9f240699ae741481011d798f24ca5d3599bf3ecfbca220f6ba2c4043f532ebae5c1356db6c47dbb471cb4f1d38d42c24cfaf1a42f8d4e8c7682bef53a722679b2cc68d2e290180d2fd4739b1e9e9afbe5c16f48048387c49f2b0fa628e01900978719d931444ed783bd79160b906e1be8ec02ca2865d89a0c2e514de971595eb68b41975a1976d1924291825aea7ffc31d6aa80596072a04a5bab742152e6d560ab9df99200f79a712d444b26083cda643f6c1ce4713c38cd3f89c7dd6151973c8854e24f3a2d914146a40c454dbaae14ea6cad9c03438c1465fd435dd8186001c1b04891d310591e0be05de0f60dad57182be40c725d460d8dcb56e28d83366bc3b3e7f3441d214497078294360d83e58e6e2a5d4b14c5e450bda1a462b03162f8357c9efb1dc18a8bd712016739fe16bb32eec4c76339756ca811e6de3bfb1af59955ab2d0ab9122f4a04aa097c08a2c2aa7432f60cec73e484f97e78cf7d759d0619ccc47edcc821716950beacbb520c84411ba2a1413813d1ad65c2c543670826be702125e72689900b84398440e0b4450bb879633414047d7e40aa9875332474a335ee17c2801569608281cdbd25273fde79a15c3ecf153d4dcce83c7743eff218a8b5dc76583089cd4f2d79f27cd8417354a86c3c69a697d477d8cdb3c457ebb2a23d1d8078add3b0eb4481f7296726e316c4e011038151b9b433fbbb141ae56aa127ab507094a222c4fe0a29cc167c9385ab1a28bc58e6ec2a6abfe309186b3dd86a6dc346bbca88bc70f259681c00017c9f16cb8c87f7253e9b8bbc77a14f00dfdea26144ecf4804494e01b14b9c56938b53d39c0b3baaab53ed7b290258d6e80e440c6c017a0f4fb23e7ccb285382cb08aa1a1b7001a8cec3691d70ba7610914dfc28e522fd4165fa333596c06c3822be81d61ed13492d241e91575dd02ca827f2669a6585c3dc74de73a5e00c0fd0c3517569668a37b89a65276e98cb2381bd38d5530cf29b8c5faa2044f66f49703809e8c2b3a14b81984038842ca57be30f42f7bd6396c6bca15d12ad09326a21364740984bf47bf420223c894c6228130ade7e30208cc7f04317f22c93ab3effba73fb1b3a5e3c977a5f566f60b66b5329e3c49e3d0f511251c16abec0d8bd7c6b620d872e8603ad235bd5d6fc8709c3d92c15e3f07792b0da6af4ae44c5bfe948d893607922328fb95c68f6679ea8e777f3c652655d60195477bd56338f4f59f5226de5c2bbed7f7a6b5ad1c21d9655e661dc5bd002db2877b25cd73497849c09e1ea6d50f1fbc26f292ee4b23f8b6e55e018d3055d5ec80421e17d9a09ebef35f90ee2e9d2755f9faea7c78580fa53096d6f065d8ea730776906cbfb278cc8d5f2c9762ac46db0878bae961480b51935cc632081c1033ada3f444254ade5c80402c59f5c43d418c2f9340ab91028ffdb671ba56b645c18dad48854cd079606ada7e10ce3e080a9a1d1c81ab4b9b646798d285808e292499225b6b100e458686e447c3871bcb156932f7fc369105ffe8dcd4a8a63429c132ddc91505f1074574773c104c51a89d170984df7e7f09af59ab5a993069d1a0bd54cbf243dc8658bd02988d46a3fdad3fa708558d50aa5ddd13fa7596f65f2f694976c72b4907794e9862cf636be6bae7742e4716c27be6b203d22a441bb8f913a408da5390ab89e9571c7b5b4f0783a356310cc7e616cc02c9f95c62c51b77550fa74027405b8a7455e2951c82570f0262c0d0f0e711160de0919310e5a94055f6884cda3e16098a04d9439442679083e769618c01a8dbbff2336ddf9b16029c270143560d12160926d876c3e8c47e9b69b4a9ae1b94986a11b499610995e329420ad74c486fc85c9537a7c2ff17c4b206dc0ae0a1242d278d1cb12596a178e22cd4e9cf2ef31c4f39b7d99cf8a2454544e660f50f1f5c5270a3a28b8e854b9a12259626fa5b10d84fb55c4338f0a5af94c630a5ff22f471cb7c412669a8c1309d19a77ee19d6897592ccba6ed9cf135d88916516ac986f39af5434abe0c92eae929ecbeb79cef1a6edf9ddb9d636584364b7abeb997de3ef6a85f56b45a4bdfa7d2ad5e2ddfd36d47da8d83f48aac1681aff5274de0b8a0c8e0e4a47205a3b25ea79665535a06617a26a0d3f514b90eaac1522a901b020ebd944d77c36c57334a4762639eef501d83d32886e2cd4aa30cd7bc1e2b04c5b59fea5eab987d34337c1c1bdf2328974df68e21dffff41739e125e1e3966b7705c4bf30d2d385f9e9b7e51da4a3d69732646048b8c72606e3454025d9b36b68c78a84700daddf15905834a6b8bfc8c8d9c0180391a7abe3997ce7ce3329790f7254bd412c71066b915107e4967e3b59c2eb9c35e94af16c1428e2425edf811a65e2f4373874c583cb5472b0ad94e04913cac4f914392b1730f89fd3615f2538dd5ad6afbffcc2dde47033899f07ee4c830ab466af5eea2530463edaa8972e091440a6b8d0d66bf89c63333aa6a6e819216c07cc106ab3aa0f926dd887246c68c42acd401e6dcd0710e46b9fb8249647b66fc290947f8b6e25b57b1bf9907d6f424b04754c81fe9cc49307d342349e41fa952bda8683d87896d72eeb000a37919b40cf2356f3da6aff37ba58e807dba604af409cdf6030ba8f2e351f73c69f5a56b22884425972d78508eeb9fa9c1acab5d5cf510f15cf44efec3bc582c7e7a5cfa6357126dd95d0605512e50efb6fd2fc1ca5ea0c228ae4a5872032ca026ada0c9a767c43ccf68c7600bc48eb8606d4740e13cd81e97b93da90e5474fe7473495f22a154ab9824d6f3240d31473d149e0abe820e498a8d893ebdc4c8a7994c6915db6aa368b1614a4324527b88f1849508e14a1bbac1fb9cccd05d1ddc62f4f42aafd2f8ef8db004d7855268ccfe625447f51e74875b8d97ee29efa5d62d3926973940a637a3b7ddd0287836adda07272402aac1c04b09b26037b219ec526a94d9b0ee7622cba8975beace259e9b9613a5474b7a1a2ebc1675e534b2fd7a9dc06a456d2f5d59ef01d5af411660118d50810ba38f766a6bd67d567518461ecbf08ea28fdee1695080caba5fb28db36ac41cd7caca109ce71e2c8f28129c99a935030f5cf5fea9f34220f66b29176161a14f871bd79cc4ce225176ed39e774af2e20d81fa833a452222556acf891bfd86b5460baacb093ee2d037c821c75d71da0b63bf89f5b524814e3d1dc171300be399a27d48a8fc59a3f903cbe73188352f8582906994aa2874bb5b9c3102ab353d4f2eaf427658818cdc068a3385bab4355019bf1eb02c577ed82bd83e64c03c2d76ff18cd4c726c67171caa53823661ccd0e32ae7153569bcc6448debf38299bd4279403e04d706deee156ca54fc081c252f0c9be3cebd50430eb14b36a176227c314dd642417611f4b011d2be0e373ee0938cc43be87db03de175df5575f8813103340a44ccb62fc07f472c0d8bed6afecb69eaa2d63c92e9da22d94651f228fd9bc13aa5fc9173d6e52bcc41b629b2be56617061e2ffdf225b01e9d88687a1e6f452c05582a352a8fa5249bbc10273b303cc6cf130c63670f57989107598726fc4daceca49239fb8d495f835529963021af7ab2ba19521e927c2b371021476408c7945f769317f1f1552d78b189120b9b6810ebaf615beabfd546b7395ef28aa6969cb9a57b7ca2f102959981ba86db688e9b05f3547224a0e985f731f4657cfb1c199c222496fd08838bbada98fe6161541a6eb167708d15512e7e13af2ebb87609ccb06c7e50fac2cf6ed3f608bff70f681eb3a0234a624361eb0415f44a8cf558a841773bfa488dc7e847e1e75d718f2f54f693abd78dc77129121e7555b0c35724215a2cc8642c609810ed002e70d026514015aa38587af900fc7dafd17d421e688903e009c4f1d8d23475a7099b2c542893aaec44c25b859933be3b27b6332147459e975423462b6ed1b46b53aa1948933ac3feed00af76aa1536cdac1d5249d32885dfc317bc363057f82da01f5f8ab99fbb8b1f15e6cd41a36cf36902f6d81a83cf0d4fe9df254114fe4e0bde43efeedd5b2ec882f017f87df831df2835f92f1e38487e90726f7520f001d06259b2d500190c524a5f836020451bd48f5f55e0d3f2eed96201b9ff08d8ea1766c1d2db5307995a6bc48a19105d0264603bebee9588de2f8b2518dcadeada6dda791395e5ac5996650f9bb827b51c8a3593032333d49af246ac239e3cd8e9d2a37673b35a01d897877ed1605bd2331d3133ef86c964057c009074a3b959637362604981fd95231b2a2ab12e375d3b04a68d321d5a5034103821ebf87a60f30dded5e94c74f41d427fc2422345581e89547b84a05fd04ffd72d5de6317660ee4fb92c662d6a8cf4845487579c02eaac8a9469983340206d2633b2a89fde39f4984ae3cdec4c518bda6c1da53a6a74c6c3b3ae08eef172512b2ba10ced425b867275eb7cf9ed135c57dc364e03e8fd0394f71c412ddd1529f4f260fea8a89ebc9eea5035012553e1c58ac3a6d036d3b446499812d50758acab81e642454d8d07de243a0143ae7206033eca81481d12955b7c62e2edd10bea7d3fcb2872d8e3e98017b91ec3b4358dbf127b198f90f6fd0650e935003d3640d36bafff1d8217f68ccd4719b0102ade2b31a041bea6aca3f260d847d6b3a2c3d8f419a0a4a81204dfacdd29d23351cdc3bc76d7784b814f54e79f7fad955ea9ab0fa76b89394f77ad32219333f6faa684374320ab62bd5e5f29942fc0e003882f55e89171494a042fdaf780aba04c9e0dfb42e44146700ebae8aa3041124e9ba7900a0c7d813a94c1dc31d2e526a851d90d39b14452158af591c9fec5ab987069173f9c4cbcd7147ccfb5778ba20f08eac1e6cf358839f1d676e177e5fdcec0bc04a9c0766c518e82abeb7b1c807f4215321bdc2384d147870186b26a80af1ef9eec748690a3f0f7f671de2033c07e86ce51134c79b010c75ad68c2fe3295cf57c5e6569d164d0b335ec08be2bf456d51c6cb45a90571c5563de81f71a91b8d22b334fa7bcf33ee958e742efe7e99bb0bf02d67563cdbc5bcf2e8743f279eda990cc19a3097799e6a7a067b2968ba0cd6cc34d81dccc4cd1d6470ee059740ad1c8ec354888d2302866f7703d173306befb75c3bd6dde9878b409b8151f8640d98156a40bd727184e4af8bf780a8062708f7d09a33b6aef602902640895936a58f15171a38c17b4488d087f63bd07af847e1a3aaf3590e73a4c37281134622bb2e47fb64df2f34fc24585960af2b7cd0d1a53a10910f8aa268b41748af6c1c4f71170c7b2778d8ab8f7967fdf9364969c0e6708ba535dee68a70a015349fea5f8194f63146337716273925bbad191cc08f02c1756ad146bee46e67ee220c34682877b9698c63961317c64162d4e271128f87875c98705a256377b5548c642de495e46f037053a9f38458bfd1cbe967c8c1478b30d7cfb1bfb8973f9d662d64f76d1e48a7df65900c0c85cfda5a8f55b994d64f97aeedd339cce1718a130c18d367ea33c8d8329b2406698f94543e2a2ac8b055c028bdb0433324fafa3081a43b0aa9d8b0801958148a60c669af55c2f0ccc00d84ee0df82da1642e3aad78f71574c0ff5c876b47b83288879c4281638c018e60f9827fe0e44d875ddbb92e837bf2153aaf308fca9a45756be6764419ed8f6dda1e3c3973769ca5d47a4bd129022fa00515d9049c9d8edacf84750a93aa8ebb69de6ea5a2e003317f356c5d3e351a282124837dab1df83b8caba0e19b7fbf2f44c282dbf7ee7fc1d3fc4788ddddf100ab3e10db225650703472c4234b9c81525403ffad681440bc3b6fa213948d208586f004a0946c0302cb316fd06d761f0cace2fab0019897dd91faca6a95bc553066f9c15b209f3bae005150fddf62b604819fb22a4ccc3cca01f83f8b28a46c6ad09ed99d8bf6e912709362d09490761a65093012740d81a93389e01094efbb38ac49e2122d013bf2bef459198bccaa5366622298359a7b2c50c43115c3406a118dfe2b9096ac1e60eb589a980358f478a6cbe92bb64e5a80cd7c200c24b1bcc6aa5d01189ae9d752ce734f143b1720507db6acc02b2751422fd24959b76f334ea4a56b4781a4a6c13b02277bbf6f42108f3d6d5415cf0457da5f4c68481d083b20a616a55f8811b0f8e89a692ba4b431ee0dca2fd5ebbbdf0053b2b222c2935ae5f881e046c41250b21f116ff068ca1e4a4746a30cd5689084ac7bc18e20268a736524c47efb998c6d7b7a82d9eec85670966a24a808f6ad021e08d16b90fbc9758f49d73f995815c3270047a251206b4044c92020311cf79e3ceccea9a9040b0eab8cc8999a71725ddfaa35ade85fc8248aaa026f68e943d9d96b2aa2ff357762cadd1890e4e0a45a4aae9d2f584c8bfd1331aa155d6917c6c289ee696c2692f9ab0ddb232f17423d34a14eed00b7e7220288f30c1755ee4c1081a29957f92c61861e37453265c64a3ffeeb69f518a851328054c300034426341049540c7783c8462c8340441a47018994660041a8310a8088ea46308928261080a0a21d3388c40233012854011740c47523004494310440a8791690446a0310881ca9020efae1aa2ec3e6da046b08e4a205c5b4a88315065ed921cb04cccfc2586f0b36c60a78a333bbe2b685f7ec3710f806af2fc948ba0bafb64093918f085744c6635e59eae28294771e935067178b58ac47a529cbea7cba3f50b3a105c8540d220328210e6f7c30e480d29f9987d8e7d3609a752df57e962ca6d4a6f5c8bb9b7bc4efedc70b65e02fce341ac48c36db31791a0d6e01da221b6b117c2f8643287f10cf69de820352edfd72fa5037551a4560f14f17e54de3b0cf8c576e0aa70d060a9dd2b384d15a3025a744f608fc0e2074d6b86f29cb423f66c2efb1486ab3b46d639c29bd91cfb611b2a43a758c0bc433eaa2dc573b483999d811da724ad4ca03cacc6d02f1dd0846d7693dd0f63148551a1e78017ad2ee45c05aae950a34577fee7c79dbc641381e56af90a2be379352aed19a92a469b4ac48db40b343003336936bca952f3dc9ceafd207056cb48aa1ce0541efd5492785f08a04ae3f0a547f076db5141d8eaaea53a00d0831d320189dd75142f7d4b41b40d2ae1baf28da93c2b3568147acabd6d10ea3c8a4cfac73932998afc2801a8810ec03070301ce9d98d052139996ed033067d839c7d609ba32a82c4516af7bd76b84f2d42f094d1705959c8473bf7a30040142bd3720252f258679dba6a2810b59adb972bb910b086676efa0820be9c5cfa0c9bee94093d37bafe9f5c072b7ac2f5a8d9e5f3ada086670b4e04dd8de92cb09661bc34d1b639b48ec17f10cbb839b62a1d05821cb67230d391019527052d6a706c62f9d23adbb74b14201cc70eb968b777cb50256e10f550545d0da81206b8afe81ddc7e83564379e416f8bb3c08459fcf57121b257b3d5efbcd9d2f76dba440d919d402b3d7e061f48b1062d0786ca2262f6132258634d279bc31f3793570de739f3c3b373607f98d9851a704e8510052d60dee8bb3d2be76f24bbd215b5ca1eecae1961bb1097993f159fa4e3e4bf90fe653323fb5134b15da93fc0d181297b1005186d94d717ea64e45cb1c30622328221e86c5df108361def7732b0f0dba6c3833acd50b73476af4740b3097918da3a60530c39b0b580141c0ac57554f907bb1d34cb2fc5344ff9dc0e87dd77e00ea3058919376a73aeacc91cfced23600185a50e8498520d72b653d0081545aa17b02c1743094309b1e26be9a793b876fc4b4acb02574a55e8b168e1423fad87628c45a6ae65717763969835fbb8ed1ffd9540be8ff3929f8846fba6ae0aab893dafcce61e01399cb04f2cb96a4e04fd76d251eb9c2acdb1441fdafb104f0b6ea5385a16d0ca136bbd410fb8170f1301e2dc6b5c748c10c721754f7f9806f952776295cd0b953fb30e0fe0eee1d8487487c2aea27f5019bfd5cceee1722264c06abdf0571f56055da8fdd60a33b4544aeed926acd93095e1a4700fa0a1216d9c6d35c1a764cec2613d41e4a461417b80991dc305483e27cbec5009444a4cb66bd15a3ef3a1d9cd7a2b93704d917e421db05d715f0bb994d99aee5b46b7a1f88391433b32eb7888c2500eb51028a6373ae890762b32e70ac2f63b8eae99bc6d2ef09ad64d793a433abb306dc4a449e8f313c92b9362d696163e06a62c83838abd585f4e922ee1b462d9bba4229423ab87ddfd070163312d2171427539887a1e78da037f13515863b205412152d42a3224cb548f82c8ad01c04b896b99a6e27ac7fd48dda11f6bc90d41793e59ca62768aeddf5c8d7a96df79b85f39dfdc642ff3a7a374f6d801ed2cb07e1c52927eb6e6032b45f9e37f2a4792d492ea9a871e61747e7f4307a2d8a09d867091230485588d5e1906d1d067de790501e7023c63aab70e2748a71f705f92b434e2170151488725979fe570488bf280f8719bb7fb9426b68e27aad11e79fb646345e052a3d4f2043222960db218ba4768f45caa40e308c4583da0325482c066c5114e764b07bd8943a4d6595f71c3a12c58514730bfd9bdd5d74290f1635e4d64461b5ca10fdda49cd3918ebe9bd0c7eb65fee07aa90e6b81d8202913195a78ad248799c221f471c5d8fd43652080f0570f69c790367987a0b2bd46e69c9924d33a267c4eaa4595eff9148673c1b55eb9a1be1b170ab9be7d62336c81029e65f2b78ef2c64fe5527a921977ebba789ab01ea3ac9b67f708eab945be05b63f6b954a1c22a24e2eb712ce4ab7b800cae69caedbd63b571306a970f501991c3ed42292bcf21e9cf5abc13899e8f67ba695834504b1dc8edae72cba573d703fac8d706124f864add0844b75340167ec5f3e0f2235f1efacb9a150105a4ed918f158ae057914a44de149d990a4eb193dba4c417fc6971f0a1d223e7c96e14f75c0b2cd057f4ecef8a5bfe85f91ff0e6944d06804ab350abcc7a8a1a74ad62a51baf6af22d9e495a0e6437c31bfe6d9d37aac0e13b2110f4179ec4ff89e01921160985d804e957c4a8a1e3abf61f628c8366cc35ce0842e882dc7cec02c7d0a0849fe001ca6b868522128ed13d399b28c2129d4e955c6b0d122e254de589e2eacdb7493d04cdb3f3905736ebba5b28768355b2f23caa6ea8621761726f9fc6965951cf48552b960a9914bd06b7c66d1a2935d87c734a5da587d12f3d567796793bcf10a1c8f810d9f4b3ecdd157c230109d65909e1be15e19acfef14e5d944508738889a604ba5f2f3c2c5d69d5d69bd1432aaa6afe892969b34640cf5199777897d77858925d29658421cc95c3d79d4079688aef36eb0f37301f315009d84d1aff457781e30a0a2502924c5a5375855448779814256dceaf7713d33387168044e7bd779915dfab0cba253dd55c3768a15e30ab73a06512ca3518293ae44b287b0c970645bc2b0351dcac484e885714aa0f598c3ba9c714b311b4cafc3c912b13552d82225ce914313ff52f0c13dc1e13eae3c9bc480ad346aa3faf682676f16f854c194ee0cc1100e7e36de2661fa70c2f8923dba85e2acc4962045c7c5ea838aa8c335bc32173c5455349dd790047fee693d1bc1909c21893a4cbb1476bc9ac79aced1f2ce3fbcd9e8b6e57fb963244df3a8a99eaf7d45ff3659a6a8eca4ec1499f65ae70ce8d5e13ffdb0b6daca2a50388d0ae45f28528b988151acd434812a4672333dedd6a4fdeb1b44720e9fb50f8c1589360f1894260c52172f04d7b1816fe8b291fdc6b20f52a878afc29d6946c600093d26ebbbc2b419306053b71131d4f8bc2c2a212198b9d5f3c18de6aa8dd05f6e722b32aa5420d4df480aa266f591470227c8679de484ed9f9f35ffb228d78543084a4225c08b4dab47f3cc3f353ee78cf87c69857b56aa28477624b6af0b6fac2b2aa2c4483ea015d29561938dfa0115d6cf114708885a7acea6c5c56d5a5962b11d3daf3676fdf65e127f3149858e11b0db771fd19f7906323bd6b407384404eea749c1b13dbde8b27ddca8a648aaa8425c667d9ad3895af22ccf37eb55cf41272d232a2428958c5020555499b859d4a3d876ecbee4ac32f06e68361f76b6c42cb0f0eea19e7e6c3b5a02301e259c60777ab6cdb11f69fce0ff5cf3a27a7908a124e435889a8070c336da2e5220438394d0e110f7b320a9e698366ca562e9595700e0a99ba424dd63da106285f058ca9c7d76b53fe6a4af31d997b83d8b864e56d9b5b72d92a7667be59a365fb244e5212bf68838ea866de507acc812a9150ec224c192908cca4df68d10ef43b33af2373c3369215f6b85b28dc2d11a6a46a95985fb97ae23150a3f8d7c8e2810ae8806ccfa6f34842d4bd30ddb495854edb574d3a8b1bc457eb980a62d54d9c49bc846ec536917618b1db24850e8f0b9003443d5876c989514d3e33d7bd7c9bc493973f173f502c0601550531238b95d4b2b277c5945fb02e62e735f53a9a1e0044dfcbc1b892a7fadb817ff838205622d0d4501e35cf3957ea547c177b023aa7ea8fe81803370e96c5f7ed395dc8471c7fe2c742d91b27c165860d0919ecabe39e4b8094325bca8ef02ca84590e384c0f722a04e477dbd64fba29f0602f11d71468f0744cd613a2c44113679b0edaa9437b800f8886ffce2e78946cf1fc068b35fa7dbd05e443d43cf339af0b2a96f9daca8b7307b5457ca53cf672e06574fda27e5fbcae664d3c1e9e39b0509ab17c135ef91264e08392ef291ab169de72306c80a2e367933172a34ef9ed63996a0807f451f9ccc0126c1b3049c0be56761dbb07ae651486aea710319a882c998357624a1173ff85bbd07a4a14f7a234e5010a4c60729ff763cf010722fd6512a52c758083e5e5ef7679e2389f0582fe0e9f39dc5b3c17887cdc4ce84a44db4391dfc315654525abdefb72d3b8297edf777a500da09986605d1d489593a37fa0694a6311695ba6fed25c84bccbfd004d8921f6e8699a5223331557ad810f26906b2fbda11bd6dfbb656375ea37b9a0ed6056750936f99e7e5ffaab03e960eaa4b885403f30bcc834431c22c1e47418b52214066878ec1c21452de195d1bb803aa5fdfaf6061d4faf8f81428944d2df71c3ad4597e1618146a661af56cb731b3cdc270c7d005bfb34a7378ac947f30a697a7de6a8ead8a3b4edf747d977c90da0e38fbd94a407c8ad03a658e8cdaa13aa56acb40ee75d1ecf8ad4002730ee462a703ada13f96b33d7532880432c73c72f3963c1dc18411be35a76fb5390e4b7c79222c602b67aec5f8a48f495a05744163e4f503ff5b10189f120122418b5f40e0428490e25ad7be07b86a0cec0431f3d8be66c39402769eac56b037a50c5f6ac3a28eba21bfa37d35c88444cbad2d01598b2f291da33108f39ad461b8411a2eafd7f409fc99c0128c3b937b09eabc48cb39fc448a3e5eb68e8b99b64451fbc36b444ff1876bc9da2ea8bdae0a075a014d546c0fcc032636c8b78fa09d02e94149ea8cddf6515b0f5ec6d4f993f69e6ac8481919705bf4ec99df0b6a36937dc4d1f182412722c946dc5960a845a0bd0b9787d0f410d723c851f76ba0e8363ec65dd408f22504dcd36a85ae6771507e4268f616d5c0f7e2d6451693da08537a57eff5688db3da4af1525715b8f8e74dfbb5376d93e56cfd6e122a72a52d25c88c8a3e9a9552a8a00c998e1933435b00dba845154a9c7760caef02f26b21fa48fc29e6c74df07dab93235bb62332ec79feab6ccd9de3259b21e1c5ae57fd1179d49b3240aa3d1273746cb32b8dbb6ebfae95139537795caf5b05de1c412b15e95b3287ca27439ae889a9cd31191c019e38a1aed20e03bf12d731bbe21054a3bc26e3bbd15f02dbaadf88b1c0aa458e5b52dbd5b2424eb884a14c2ef5bbb89d50ded2e50647de1ab287895bcc4948db0bf0663582945d887d0a55fe01a0611f630d2afbb877fa1f4043f4a8b9f44953666df083b551265b989e02f11f65f2f84098d18615fec5161b606c0fb7d3d434183c108bba562be69b978b232a333ae27986314611fe745d618400256c69022ec3b0f3f0aa7a35fd03d83d060f2b33e5eb98574e2603b7fdf0678e368563218e1a77e711e37c074cffdf20c79bf6809bc62f2e0f1992382b32cd7d889ff01ef2906725904892534344a2c4c70d64dc82f2119614f934b6367194de8174eaa2123ef95aad922f4feb1390b8951ed9427c3873ccd40203f1cfae2522f306896f98331e63838c27ed96b03ced6cb08fb0e10e8be689b4285b17fe8ff3c54523ca1bc77a2b6e95fedf36e6fbcbe88072482ba43741fd5289242b7e9a12e5c5e90a42716b7a8138a23dbb3e01289fb89bae4303ac8097b3eb0a0b0e7fe145ad109f17abca9eb516af860241ad950f792fd246d5bb3a9454c1ea5086cfb2f4acc695a0643e3b037d4cc0e0c2eddbd5c2f6648ee53f0e3d85f5b9150d284bb7e6db360c5463018e45188d891400ccb428741d4bcc6e877d8cc77d8cd99d0f7849a6b7ae1836f2b25656ee6eee357c4c2bf1b56b34faee45734aa2ef2b7c76d6530862176e9150f891957d9a0e91cac420a0d013d115eaf8ad2b4706f1cac9a219e5878491dbec8028fd8d62c745351be3f49e47a7c62e13c8e610f90d60086fb01cf85eab97560bf324cacbceee12209d3fbbe44ed9ef41ee3f56ba464d6055d216e517bd1dd2f0c741df71518aaf3ad648c1ff867f1b963c028f6ae5cd4bdc4108abdc7fdd54db02ec87cf698198b4755029b288add1ae70ce916ce85621f80d9bd22f77a0683035683c9a7d277a376f01bc53eed2c6ddf7dd9b7e944e534b929d09357e8171751ec4f1ce27d1a99747efe8083fd7af0c1d5cd16f105776d26f6323094ecaee29a81a6f44a723eaf44052b7504e3d2cfab1477e4b1b6a65c7738ca4c297285d54beb97b38e1833008160af39f829425ffab98b94d6c462954e3a08c0705307cc2d8a89a33d384211513aa3f521a6ecce5f7424eb0ed94b4fd2d71d18280b476fd8f174a6d5ef4eab1b76d4d0134f0ac7852913abf2f2b28a919311de9530495fb354932ad9c6c7d7ebd6163b6fb3ac2d6fed87b1f6c255de610cbc10acc54ac84aadb4f09e18bba0b6bf18ad7fd0dd7eef18ad4c272a3b29d76fa4954e1a99f3814925ae14e04616a03de2382d39d147839795e76b41ed665f490568a4df767ac015af6683d5e5c3262bbade0654b86495bb5d4f977dbaa23da3ead06679ce0a601f02440b5d803672454fbfe51906d6d7452002628a7f0111e0656a1064571405867bde5ab151700df598d0217562fd9de60bff78ea26b0916ac761ab9387ceb0fd06a48d24d2c261b4194cbff860942f5f9756b81299672b5191cb1751dd7187eba09b1316992dd06a1c7b812b243cc860f86bd78f05430942b50b433909d93ae2543da64075d6ecc05e2ac69daf5286dd5b873ac9761d107c55172fcc386802240678c8eb69f460700fd485040aece7ce57209ad1541d9b8a04ae75aeeab8a429121fd08b760ecbc01ecb861b258ebacea57088c359c93fbb17143b4012023200a80134d91c2214d7548bea5fa54ac533c747873b68a1aa5a25e506cc0cc7b699868d5f46c99652cad70c300dcc0c21ea7a38b1f561d21ad98f1f93ae5eecc9f58a355a973a7e3a3168e7b5ba5c4e0dd695865e2fe8a5bada4f8dd5859a5e6eea624535d41aafe9d5be50946b35d5486bb8af76b7f40b75ad35d21aeecb7da52eb6865ae37dbd2fd5d5d6585d684c879fafd5e5d6605d694cfa625d6f8dd6a5ce6045ea13af9196b6a61f756c3de81b7145f6d382568f9b1a79519afb98bde115d5cf89cb4ec7c44758531ee571198a565ee5d390c9973c2e39e3c9f37fff491ef5b85ca93ef56d87f4a395e94b8f4bf1451ffa4feb596fe280c24847d6a33e2aba1f1cde51f5b4bf8ae94705a19ef55d91fde027b091f5312dfdc74758131fe1fdc0e0678bef40596c879f2b9c66a672041df999c277c050ce134eb3f2275cf234e1356f49cca9e234b414cd08fbfc24e135375caef869e234ac8991a0aa244ea3d2d44e11af7177c476abcdb1115cf185144ce18b36655f35dd45c2c0842078400c666063d0d56d5de8185c26c048007bc2faaaffe62b5dbde9626bbc548400044de020085e9435d4974bda41101c3051040a5e2871c981b53892f8c2124e480204512871f9e80b45498f90c40742304405252e5731d76a4204230cb101106c24287179e22686a2865b03313cd183255ce18a1db61a690b85ebaedef329227f3186402fbea21f914a26d407f937e22b4fb62d92a4541fc488312cf9ce2d3f2f227f51be0979c27fd576788d136a9a50c304fca2bf888ffe13b2860a9cacc1a2660a3555a8b1424d163552d44c51f3841a28d4505173851a2cd4685193851a2dd46ca1a68a9a28d4585173458d14f08bfe1a76bf3acfa160bbfe1fa389d9191268de7fc7c3f980c63fd5c43288113165e8452352c9b47a71dd2714492a54f160f7ab44f34a2cf920469c4a930f62c458f20ff2af9fc76cbf8218e1529e701d5f60953abc805ff40731e24b1d5ce017fd3a5c5d83d4a106fca29f2475a401bfe87f52071af08b7e1352c71af08bfe1252c717f845ff8aa4f1007ed1af22758001bfe84f913ac2805ff493903ac4805ff4a3481d63c02ffa4fa48e2ef08b7e1349f301fca2bf44d214815ff493489a20f845ff88a411825ff48b481a23f08bfe10490302fca21f44ea28037e21037ed1ff21759801bf9c01bfe8ef903abcc02ffa4512e397cd0bf87d9e8d98d6829e5f87ab4f2c978d8fb8388a0510f1692d440d2146314b6e5d63999c3ba6bdb78e31ce787fa06b1215634cc292d44c54147ae4b24652ebfa49d4fd2a296149541295442d6149d4aebf04b65fab76bf5e764a47f4fbc6f1b46ad1ae9f233b12c60a0619449ecdd692da7e9d2cc9fb1d8b6d6625ee7e799e4886c33f3dbd63bba5637a96c3966736ef4fdb8bf8b961b9878ee19276bf3cf894695adb407fc248fc74d1309d61b96681cfb7acf3ac8751df3269a6772cc744a09867c3c42cc3b571946d1e7d13f32cc4b61fe59bae651abe915c38105109d2306d1373edcb30919fc4908be1aaab7933914ce46ebb16924252b7e26757f36632eeb66b200eda61ac8b8d3c19b76d1d4dd33cfcb467a33f651eaebb9d36ad9b99d836ad9b79302ec671b03d9371b5eec6d1f66d7bb10e75eb6ade8c939d348da4a3953c19889b85b6d34ec54a318e16de4e7b96ea64abeec6d5420e7652a5bb9522197195ac9b95b84af560e767c6d9543120a21215fb6e3715883a7db60dac5301bfd829d6b5473bfde9d5bed9ea4fd9e6f3d160e3a6d6facf47fb3635afc53733aff6cd361bd986b68979b44ff6d536b6cfb6817520ec8b81b1cfbbc93a588cc38584a010e442c02f82f39eff01827c15db2dfd71215fe9e13fbe07ffe32b74b7b490cd17c17921bf11e27d111cfe43c889c2941fffb1e13fbcf77e85aed2fd0ab9fe956cbf36af7fa5ee97c757b1fd426156e87e7926b7ef4fef4f5ad7cfb9750dab716c5d7fad6b7e96429b4804754419783b89b352281361a90e8cd6b5184b71601c9b093f3b309126c638308e0d146fe22c14612128da3a3651d6b98530d063136b1e0f8c73fbd040da6ee9558b59501f5ac9731b79609c9b07a485b592c736ea80424f2db489b251c7060a631ed0168a37519c89445828036f21ea71c95161e08c267a5c7e6b6c43e31891cb946cb734ec24036337efd6c1be180908b36d609ded93d9445f6d13f368b31b6d23f36a24fed1483ed8a6b6d9cc3cbe699d48e14cf4a7a7e671629fd929a47568270fedc4917d64616de699cd3eb1d0d69171681f58d8f1c46a61c713e3d4c05968ebc83c320eed030b6b9d9967c6997d6221ad43f370641f5938ebd43c354eec33dbad538c3413d536358f44469289681b9a472399a562a2d9a6e6cd466f7664a5373d32d49b1fd8e639b4c7b6d3e312c44f9547614ad09be12d457a5c8ec6373b310e44548a1e97256e7a368f4b1437c11907f1b3f540446509241b691f1bf99e102c2443d5bafecf2d34e38f02cd40b492f1ff03ebfa43b4dac997d86ea38a2a5433816c2118ca8fe32853617d0bb4f22c90caaf8cb3945709c53eb5163f412c7e8262fc1c67fc0ca5f04fed0cd54e90ed04c1ce31c647d9393e3f4334d068e3e36dac7d6ea1198873100d241b699f108c8764bba539b555088602c946230df4b17942b212888602cd4635d0e7e609cd4a3592dbc8061a619e100d647b10ec47d928be19aa95565cd58ae38d04c555b5f0048aa538105139e22a96c357ed0cc4553490c3ba7ef3c357360f57ada158d7df81d15ccdd812b6a4b65fb8fc5309dbf5afd6fd3a67a9af06ce64b5ef517fdeba8e756debda439b7d2ff233641bd5443319fbc1ba1ec9be0747b7af46131fc5cfd06d141bd94434d26c45dbafd28f4633922822d54a2259aceb2ffd99e2a74836a2914437924d141bcd4830918d5413c146b2d1ede3a7a846a2ed967e8f0d5693cdc2d00d8c7d36717403d1383510f6c9c4c7a5e8cdd10cf4b824bd4982951e97a7374935f045b6ef714c7c5c6ef889c294a37f532403858f4bd106fc73f5284cb9293d2e492287abde24c540ae724f3ce4aa77b7b4e84d92cde3e7889fb5f2c7f7e71aca7f20a292f3e1734cb1cd83269bf79bd3ecf35e89569a850f44549e3f3c7c057a91e741a69bf89e132d7c51367e6892956aa2d2a3485f3ad5464f8a897e54b2855e0433cd50a95f917c0af524a5dbe951269ae94f275b6cc5cf204674ca93091f26ffb0923731d5565ff2a7aceb3f99f0a1fad59fb7ae1f85299f9f2698093f4db5127e9e56fc24ddf8e996e26789849f25143f4d347e9e4cfc54e2e7a9b65b3ac6cf928d9fa71037cd764bdff879a29564a769e4a5da6ee9e7f0d304f2d364e3e769b6cf128d9766e5c755a29be7cd122d669bd5386f9a64a61b4d669b7d6f9e6a31f0cdd22d7cd3448b6dde3cd9bc374bb09d022fd2a0c40d64f044894bd0c357af09668408aef8e2fda28a12972187af6ea6da4b125870852f8c3852e252e44044e5c757ae2cffe00c2840c9700258894b20a272c357b67dd34b4051852cb480044a2871e9f1554bbaf532a65abb7ed5ba5f67a6a9d8fdaaed57bb5fb1fd3a81884a14a6dca422ff11f294ab86294259c87f7078eac65139fc07c853af7ed56cbf4e14a604f98f8fab601bfec3e32a1cbeb895fa3930e6ee76fde406c60be4be6a318bfe0d8c1c7901ee37306660d32f9061fd02e6fe3cc468a6645d9f637e33252bb9a110c1ed09ec200c3566c91fde8cbf399c77d6f8f526196f0f1321463173d6f8dbaf0eb73a2e428c31151e7ce38bd1f1487bcf63bf7c00f926a3bbb501391c77fc3d5f14acae5dae88e91ad3b4906d909bc840c846baceea16a3dae156d7c140dfb8eb1da73711da4504976f9fa88210a3989f5ac71f7e9b0c06588afffbc613fb85d104d34dbac99c05608a65f29f9a18612012e4260adcc23f05daf1e68a4d169e03e0920608d686e580dfc6ebb9e79c73eccccec6ef41e44d14f8854bb09b1bf68a4d16e1dbf16f3a36e2c5ac73d68edfebd8881737e8650842c7dd03f3028950edb8636616736e3df426e7edf8cd1016a21d8731334c3b0e653b055353296b75896e8eba29a6aa66e12f91a26cb7f09bc80d8c41686034c1540363a795011195248f7a14a644a9e00c3fb8a2f84982fad3a330e5899f28de7d3ec560b8b5ea8da7efd8f6eb34b59d07222adfd0edf4a54761cad28b1e7fc7ddaf123f4f3c88119d92091fa5373d0a539af859e2284cd9c1e0adf391c6d14944e2dd0ad13afe8eedf841b58e7f6c3bfe8fade3f780eede20374f1c114c3db08e592dd26e8269ad9b1b36e7601cb748ed0e163a18bb0f3b66cb30453737ecc875cc96a1091d72e462fc8f7b60a0278661a027e6493956981c8b76fc2420a7d13ac7b15c80e016e966c3c39b12dc0f598a25ba07a65da64ea2e3c7a607d683e007a528f2d2250697e8d8db1ff87d9c7bdf59bd61431d3fa18415b81b523b74a9f07379e652fcee71e93df827cdc2de077e810920cb5342fc6dc5f81cbb5f1bffae62343db0cde24f087e79287e8f07b00b7b25f00ce9f83d11e09707b65bf83dfc9c2e8ce089958aa774b74231dd2f9005b8851f09990d3afe263a7e539c759cee172e656a1767608a59b0f729ef71297aa407b6a918bf83e97e75610e649be202c045597558bbfe18f2d71394c7daf5ef40bbfe1749b2249bf2922f0a4bb25d3f0df24fd21c5eedfacb931488a8243dda752925919e9576adc2bd28dd564ff8d9a1dc76bb363d419fc5cf2ee5d8fd76eee65c2e3d4157f4af78e96e3beee5542fdd6db7729c876eb653b99643df16be5b5a74755315c54dd9fda22baa7bd596f526e7aebcc9a52a6fee94373db4f566b7b6b890f1a4f9f1cd8e6571219fffbcc9bd2b5c88c7f326a73e2e55b890ce17b17a219d3777cb85845fc4aa866df150f9083c04be8797c04f4005e64f06fc02be01ef807fc0ccbffe4cc0fbf81d5e01cf038d8e3f73f8b3fc73e6cf003c001e852969763c8f3f77fc59f327cd9f3dbe006f803fc023e0519892073f77f0b3869f34fca4f994aff91dcfe375f033077e96fc9ce1e7ccafbefc1c5ec7cbf0d3063f63f8f9e2e7eb555cfcacc14f1afc84e127ccafcce0678b9fad67cdf821c609a05dbf04daaebf87b7eb8fc0daf5430046da426d685d48186f8b64ad2c1246fa80b4eb7700dbf537c0edfa19c076fd0b808176fd2eb295dac0c270592c098307b5eb57c0daf5efd076fd0968bd5dbf0cd9526d5861b424ab6df1205b0868b136a40748bbfe1a12c66a00182bebddad76b758adb64580960d03b04185210092edfa6748d68a6cb96ed70f8096dbf5d7dcf6abc6ddaf550d904df9500f5dfdda35ebbdadcf5359fcfc5c905d3fd47377c0f66bd36e52bc15543f95b5b26fcdbb5fac4dead2fa56d69ffa51ef4b6336eae6f53e30dda89b77937aecb76e5c10ddb41bd45b41b5e543513e1705b29b95e49a3c94af05d70d4b7a4ddec98702d576839abe152c6ddc4ddae2b52a1f8b02531d561bd22a45145b0eea7e698ac872d2ef454395a3826db8ae9c177443567f1b8629270c530ef87258d00dd910e5ac9c96a3826db8ae9c576439e9f7a2a12aa662cb09dd2fdda8595c71c407c64006774555b62582840f8e308309be28f1cba62beb721143c113de166dd5b50505618b0f88c10a350042ead28ae0e0072d30e285d2f3de80a1a188215811052f9422d6881d90410932a065c8a5c2127e10e404521042194271e881fa013278800ba5475dd1368581b229fbb6eaaabaeeda626d4861b45ad69b736044123414bc2f3079d3975db3d881149cf0000b6080aaa9dbaa68e8c21659e822b5ad2ae8cba6359cb082164368e2052acb0533f4e0092fb850a26c93108423f4000b15582108255e42133029c4625085ac4459cbc005177481062594284f5023b4e8a2160423b3725d09dd546c39e897862a0b15594efabdeb9b22aea04ac8b6421406a7e5aca0abc28188ca15fe7a14a66c79336c5b1c88a864e1d204f366987220a232859b1c147e3e0a53ce3c2e499c1619d46935a56ff9ab508b629d58938a52cae15123b705736a5dd69654c7b7dad10bf372b95dbf892da9340f237249e84be6f4da30b531a5b5e65fa29794caf0f3749adab3b49ea29793d2f3e49e26b6a48a5c1a4e3ab5a6b5948a5a1d7cf4b2a6121a7a73e023f7b49a52d21b4a4b3e6a4ff80c3f6b3c1051b9d24941286954572fdbf54a471d4f5294babaa88aabc278f919cf76fd63fbc210df4f3aa346a7a531b2307fce403f35f8d969cf913d3feed9413fe80b3f3bec39b61ff1fda49d75744754743f6a471ddf31fdac9d14848eeafb61df54f892a423102a52d995441da9a2371dd1923a72452bf9e6d8bee62755bd29f2373bec8ab73a6d894c797364392e4db8f9711f9725dcfca02b9707222a4b26b7c48ad419bffab426d39b2ab528d20a338e52939413ca4b2496c69780d2919a724a4b6f9b0252476beba4b698501824d7f52dd0cacf937a9a50920b5a47ec292dbda416a48e4e68c925b1203e32bd2d695cf9c8e492d4cf0c3e425fca9507222a71a038dcd00de98ae2c0f1e220b12909a9c2a1aadaae5b9299f6868a635dbb7e9319f7c6fa76fd37a06cd78f32f3de58e1e78d17bd819d79f90d16c77ae38675a685df5871e0686fb433ed0d15078e17073bc3de4871a038dc1b66d61b1dd4e4d3a64c6e895551923435aea6b7d4925612ab524129ba2ab9a597d48e56909a92a8bba555ce43b65b1a2de191ee9676398fd86e699607684d85529215958648efaa55b924a117c586d415aa4a4b462faa0db5ab5565624b4aaa090915b9a6374fae693cbd25248fcbd2c9d49a90beb4864829afb9ed9616bd5d7f0768549a3f499108d5aad4148bba35d173b76b559a5a55a894a46d556a0a85ba2cea55a1295584524958d3737ea25c55baa2521212b424f5aa52a969edfad7ae4992f4c44d912469ca4da12896442549bd29d44ab2a254684a45a9242628aa25a9d4112b724bad2945b923552a5a4baa8a25a9a857a4424ba957954a536f92aca8950435e13cdeddd221932455f1b8a1cc945bc2c325e1660ae5614b91a8e5cb0311952301fc009e005f80efa1fa93c7ef781d1e001f00ceffcce1cbd7f1345f1352f973c6c33c8daff1ae90cbbfb4bccb9f2d7fc2f8f3f5316fe3657ee65198f2859f2efc6ce1270c7ec2f8d0b7bccbbf7c8b9f2c7eaef053859f2abffa95677deb53f889c2cf137e727ef21ffdc9a37cca93fc34e167093f55fc543de94bdee4c94ff193849f287e9af869fad2a39ee4533cdadde2c08876fd3d0a4012c0edfa0740e2dd52b96fc94b96b0e4ca25552e491280b6eb07c0dbf5ebb023d596b4e4ea25552f59a292a91a1a52470ee55a82ae50524596acab1752d5ceb426aa8c5ae2aeda95fa5257aeb4eb67912a56c576fd2ba4090d32edfa57e48a254b6048b6eb9f41c6f6eb448188cad5bb5da7b46a887dbb5653e49bc29ad252dbf5bb5d93f849ba292dcab3af6cbf38ba8650d0d5bbbcfd143fc937854549bfe52e8f74bfd2ae53d497f42f6749d4ae53d213978444f9ca53d2139744394f53d493f7394f5951d0e72096e37e7b4251c577e572da27df132ba62b1434d4be7b4253d614f5e41571f6f4224f416f724e4afae6095ff9c91f88a874413b32d618ed4ae53d6965b0a1186e0a8af21f9774851dbda5b51dc9685d58958a755b140b2ae35d795d5cb444a54d393f575cdc1654a5654955d815d7a5654165c47855d6955646eb2283755350977485754165ac315a95f7a4dd2d4da2289297f48a4a58cfca5da9dc51aa25a9a2d6b37a47aab5b48a564fc96a858e54a574c596ac56290a15e2e7e96fbca96a49fcfcc1f9fe2fe34d13d3f83f3e878c0f3f393670b3c43df98fd3090e37f809f431de5c89cff243fc90cb4b8b0a83850dfd0d2cbc259591c648554cd011ff010abdb82d2b4bfb82da80b6b02cae0deecbfb92b2bc36bc2f2a4b4b3b038d81beac33d21b32d0163706fab2ce4865a037788bcbf2daf0bea82ded0cb48565716d705fde97f4c56d5959da17d406d4e57d695b60b0e088c165a831549395455d4163ac26ec0acbca424dda15d5458dc1b2d295d545866be2b2d495d545866be2b254937645755163b0ac34c66ac2aeb0ac2c54861a43355959d415b4259591c648555c1374855a49a8684c3da89892581c298e17072bde683baaa81d551ced0d77bdb1ceb83856d48d970311dd80dec08e37d899975471552da949460a8a219aa0a315956a92a18262a8a2c93a5a4953a8896505c5104dd8d18a9a72514bd218ac49bbb29a2e6b890c17e57149f2264b35714960a8259737f4d27e5a3a2cac890d68090dbd7c5ad60e4b6b6283cb5fd2d0cbfb69613b2cae890d2f7f514f66a09f96b6f3b81cdf64794d4e196fc3e372e427eb4dde8c81f2b3f4ad53e553de7c594f38105119e2e7ca8bced08f6fce483ffc3c799293f4ae375bdcd3f31ce65fde9481922aafca0535c95841314e462bacca2535c9604131c41474b49272614d325a508c57655d715dda12192ca80a3b223f2d8fcbf0cd9537a54a955a218b9f304c5cdc120e44549af8297a940a4f79b3054501d1787e9e3c0a53ce78126e442e5d3ec48bd85f94aa1f4d96b4e3096f3c1051395a5fdf51d3ae9f7314f655b4c69f521cdc9084c455246ccc8f6e687150a51c21255b1baf72571518afa2aeccabdcf0e200e3c6ca92c6a0bd330fe34fb4bdc1cf1cd6b34ccf1cef89c30cc7a13d73504b34877b830cc781cd21ed6f8ef6061b1c873507d4cd71431bc37150cbdee6586f78711c5c7c4d43158717e5b22a68455126af3ac29b5a516c6a8282f2275c23acc9915645e1a70eb4743baba3cd91c35bf655079b23cdc12dd9aeea5873a039b4e5da531d38bc39b0a5da511d35380eee6e691a307c06105139be5dd36867b4610db4e5edfa5f5c3833aa8c2ba38a31ae0db545060d3634c30dbdb0201a2ecc5b2a79d5dbf50c95060ae34b345618f684cf58491a294c1be34b605018f584869a02e3a2c0ac2c7f3283854969a8278c7bc2ace70c96c39c33d693460ad3c2a031388c3a63864a03a50183c3b034d819ee0b4bc3857969bc34da196d8d969717b13122979c9954a6b591aa625a1bee0c6a0395494b62581b6dcc2bc3caa02631ab0d56e695596dbc648c6a63957965561b6f8c8d35e6956165d0181bec0c6a039549636cb433a94c6b238db1e1cea832ae8c1ae3da50555a518c3bcea832ae8c6a43b5e18e31ed4c2ad3da486552908d36869d416da0322c48060dd96063d6988fe8d6695f5766b571dc16df6cac34ef8e35461d6ba0201a33da96f7f3825c0f0df65fd80f0d3404c3d298f1ce5069a421985604a3c2a033d6cfd881d150791cbb7011e20f9bb07e7642ecb5136c5cb959e3c9fccc4f9c194d96f9d1a498ed1b27cd32dfe4bafec79cd6026f8184154244404d1c9182176b0f98b84115514c61c80e35c8aa80441726f082063b0a67f0c11988f05ea1873a66df5a093c4f11ac0e7ef039e20a61e0b6177d774e407a6f5278c10552982d810a21d4c42361a842731b148e1db31e8875b063235b58c125845c16806e691e9fb513423377cef674f0c8a1c330fe2044d7bd17a2eb1c87ffe03dd7718eaeffc079ee7ff09ef3dbfb8fd4017caf6fbecfa90070ef3df71ec875ce7be4479aef7ddfeb0e8d27079be77c99cba13b1d502dcc21a30ba6f55cebc230725f17a3defc1bd2a3876669efb91e3cbe18bdcf548818e3b37f3cbb685626635c68803142e88e37dfe9f7b4e8715940f138fd1d7f4db250fee3289ab5f16bfdaf5dacbdbbfe3df6ed82026fe7fca1defbcbaf59f9ab41f902cbb579137f18639e41fef1cd02031278844f2edc9010a3745c8fdad61d03e072b7bb95bface5aff50ee724d425341223e7438dc49863bbd56de179990489788f12896956f7fd06b4016d34f718975f4db3bad40ee00feec1cfa5def5126a898e8239d13b33a60fa177477c26d835ce0c23e74d14cca3752ff575337751b3dcb7316e62bae7823f14cc23994a9f899ba3d7bde7e14782073a58db2f14ecfb50b01a8a43bbf7fb04e326ffc7c598df04c93cef3d12a4c292d8b191f32075f3e686abbd7b108804a9a02440322e8c260af605f11e742274471374047404240bb7d86cc20de8037d5f6dcc319947e28e0aa25d2514114ff70da97b264127d0bef9eda19b076747c69c533a7c0f7a1037415a7c20da077a9016201988041dd1acee89e0d0ee190024036b33d0090eedab76e5debd878275683ecca1251344f4940e1e8748cdbe695697aad97df31cb08bed8e26d845ef480c76d1bf2d8c60ed00ba54b5bba58511ac815d80546857e93daf1322779aef4d4e90b67726a84507ddfc2678035f300d9d83728698dee410e9dd06840521417048ef3e081307896856f7998368ee1cb9b11851302ca34d306341ef402b12bdebb2237a879af50ef5ab2d8ca85f7dca7b21724f6dde07c9efcfff83091ffb49fe071399fb20f9fd2b32e5f1d4861b80e4f7ef40b27f07d473ff837bd4ff40f1716f4e30eee79e8bc2c8912c257eb7bacfa1f79b4fa6bce75e081125c9a3c894f7fb851051a27e53318e9ff25e0552f70bf5abf781fad57bbfe227131ef741f22a7e724fc253deb91fc5531e1125e8bf4d8c66754f42e6d8adee5164e884f1634032dcda2f70c6b9894a7bb7a330763a36d285257ca09be08ca64790fdad6448126661543dea55ad4a0b2c4c95cd04c9bacc4dd490debd0992a150146cb73a9049048de9bd0d4f19603ff74c6cfe54a18828bd508bf1e32116c6ef4d14f9a412113d93acb54402b1db4ee2ad35e416d0e7d82108d3ae20ad57bb70077d6b0d790677d09b48dc370c580fb3080641c1b40bab6abdfbdce91144f5288ea7bc2ff91fa927f98ea73c9e32c0fed5efc07d09ff817aee57fc07133e50bcc7ba5bddff50f1cd71e9795918533ce5837b92e79e847f9f8be2a847f11f7bf3b0f9e7ee56f7dee7b1769548b6fd4af9e027c73fdbf76ef2bbed16987aba0960ca41d9e6bfb7d43da82ea1595d7e12b9498be8170653b088667532f6d4fde89120ab59dd7fb6cd3f5b8d97375ece1e49166b3848f3c68342c923c2e87d8ebdf1fefbd023bff7f815461324a3ed57cac73eb9dfdd1351768f3b3ef673fcf446202b41ea6e751f6671933eec56f7bad3836675bf6ba3e94d6cc3586790c7e440df90b844c1b48b88ded1d8fd3add76ab7bdda9e1fd74cba2dbc13b38033d48b6e118b3785ffa6c02b1a98133ede2bd4b7da822dad57d1f0aa65d41d82eca506af7a819ca89ee5143d02f120d3544bbf01332507bf7a8d87e7165de8064da958476ed27a8da255a62a65d4e681768d5a0216817b6c2fc980092712608ebdd8b487373eb5d47e3bd373009edf27ce7e13a549186cff6a9457ae7f64ee4e657dbdf1a72f3a3ed1a0a160383c47af7a82d7eda45ead8881a886c6046d2d0854809236a58024cbbccd30d9d816460ad777b8a5d7b1ba387c6b96d641eda4686c598ff13bddfecaeedf60bddfb4dba916dd4cd12da855dce8df362993468d7668beebd67a579580f13b46bc385ee7d08c532a1581f62d637ef791f6e71f32127e2fd027d808f77cbdb707388eeed10f5af5fc0a47f1d70bb67866eff361f0c06822e84f7b9e34e004efde3987f3bece7f80f70770feafe740367a3d1d5e121c3f6101d0b6856f7b551779f631d912e7af799c604fd0267f8891b50818275399df52ed364404537f3da3b19d8ba998f6459effedb78a8182cd52e33a328182a8876e12b7af728d4440d4111e99d15dd54751305ebfb3bee3d8e8b3943ce3c40bf9e5fcce40f238e6207b76e8a51ec00bfce4f868c592d9c408218721842ac80f107fc19d64dfc7a8a2d7a4689f40ccb1ec8affc22d1afe4de237d6858c93d2633c0f50be45bef36378174bcc3a734bd4fe9c0e91ebfc0c78aeeb2619d23f16eed166c4b118630339fa1ebdf37edca99ef1b66f970309a1b77df34ae8d5fc63acc3973210c3b39e07c01ea3763e850639f45830434299e8502a2608e37c4f3a4b88113dddbfc7f3cc6dfb1f9befb71bf3efede9015742f0a2460d0bd7f8ee32751740b092efaa7e32890a042ce5d37040b966844cdd35eccf33c0fc605c90209b42dd8d788fd1f68820d7690c56e42dfcfda1f43bbb40ba8e3242061c686ff3ff24079568e1e3e1c10c3e5e48e23d5f737b48b07cab372f4f0e180182e981b9dc611e51fdf8ec05c38e086c3d9e81b39f0fb2831c6517411807699cf030d97981e3d5000881b391e451cbf8f868b0bcc36cba15dfab39d19a540eea518912240588007b5870f07f0d02cf343a9b9ec57106d33124591dc4b5d3f2b46bb6c4900831764a3d366fbe0903ef4207e79d68571a4593be4801c0e07e4b0d65a6b1d13638a3dbc2e8c22aec936332738a1094d5002b6b1e802115899f2f19903c99f3913f881e42cc307ef11a35937ba8c63344b3f0ffab4b10f1e34cec1f2e0ca5f3e9d700b42158967c4dca25f3ce918a5e35f61123c3396b008cf8c3e8f3f1d0f217220b431b262b8b0b0eb0310ac18fa854b71cc333d72cb10990358860198457f2872c6aebb393a754b88dc928bf8c8333e3080955bf4773ee41cce103718853041d7dfe98208fd2091aebf1b41d7cf19118222bafee1616019209845ff995bf40fd15948d7cf71b748811e86c81e7e41ae83cbb1d9fc3e69560e1dffa7538effbe214e27d5f338ed7dda79e77dda1d1d4621c434c60d05760cf037dfe7a24f27cff3b8897f638cbb8fa54f1b73f0e3ac8f85cdcd86023d50c0874df66c3db43ef0907366b1b688725299dfe607580777c4a81f9b5a6b8db1c61b639df5bbcc981c9a356245e650166bb3f2de1f161ee7799dd7791ec771dc7e5a0e1d7adc9b8542043308bbaf81e0efcd6d6e8364d851c0cd596bb773b1399d7197c7fc9dbbc2886d3d70af73e416fd264cd7915bf49b317ac723b7e84fe9fa4db0cb7b01e416fd660909cff4307936788687dca2df01b925bbc44e2642d7af8dd0f58b74e4199c5b7ae41674fdabee32203e7253e71974fd9f225dbf878a5c02ccd22faaa0eb0f5fd0f57f1e0884ae9f43722880800352d0f56fdcd2faeee09b1d47f68059f48739a32037f773dcdcbf3fec9a44f48e4b60c7ee01cb70af5f02fb41100442d9f68bda956bdfe638f1a1e2c98e310a854179efc729cd73277b0e4d84ce794888514c1c05acebc7e1b85f9eef3c7ed67e897f7a33a6c77eb1fc8d37712b036337c60fb15fa1c738c752f887184d0c852b8454f2242125d2975e88aaa41282faa142ad7ea04a5ec551a6126f91562eef8a45a159f5e78ccce2974c51db14bd66b706d66b76f34679683567fdc6e834b3436897a5d1ec833ee537ab3c6896b3647e4f5455fb914e647b82aaf28a5d127e515827ae2acd2c29b728198d79fd6a95c4493908e12acfdfd42bcacaff10c24af9f259df1f93e49bd93d4159e13f84989ca4f01f26265cc8ff7f0e2126266fe6b4e6f90f21aa2f82f434ff43a5e2424e318fc2943afef43808292979130b517d11ab5799f1ac272254edfa4d1d109bd262bb5e1185561e9fd27941ada715a92c8e8781ba5dcff0b835446ba8bde167fca9ffedfae59111b136fe74bbd6e15f6ad78f76ed794f111b723daa0e3c847a446ba8f5a43770d0eb69456a88f5a0200f2b4ad797835a8f48757770107bd6f01f424a5f048986ff2895b81051073f8188cad22be077781e7e01cf8017ff861cf80f21a62f8254f21f2c2e84c331bd890b0191587f1ee00df008781f9f001a2e7f0ee0054083464c4ccc975efca4f1a4d7c3f0d3e54d30cf7ad4b71ec6b73cca9f7ccaabfcca831ec79b1b6540daf52f40edfa7978bb7e05bc5dff0e2764aaa2ee16ca6bf29eb00950bb7e1f69d78f00b7eb3f00daf51be06425559514c57df464dd2d7255413ffd0348bb7e0190e4ba5b2a289f9ea8641b8f599b467ed38505d8963117580b5811224382c886e0c41249a846a87ec266477b3ab8c91c08725ca89bffe0b7f13cdd7c5237df4475f3f3de39e7cc91c87b679d45886774dd97f7efe7802037d9b786223c8d1fc6fbc53dc7fff479597cdd16230e03d9599807ccb289309ab866eb9bd47a8760937bef9d3b1024b9d53044020d0b2a987044733a3fd743ce39e7cc3fcdca5e8421144950a9b44abb409ceaf8511cefb1d9e9f843ec75fcdca68ff2cc17fe29cf889c57e599b1e39f479e538707ff3ca3ea465daaf3d38cae5f7fd79d870d5dbf66038059fa555e00b00be3e7d171d306ac9bdf9f2bd2379118d325c8e7075ceb6e10866c18050ae76996fe0dc771fc61142e7311623ce2d7b7bf51b3607bd7bec0da03fd07ac59ad3054c2a81f7397ad633f7e148e470edaf3d86c308f1c3a683974f078171aae3921b431a280206938ce916955ab9f2c3e9956c51ec13e02bbb81da420049b48ef52cdea3e8f3b349f5d043cc1886219dcb36cb7b24cfc4412b7474633cbdc8f129ddf813bf762489a640f5f243d39184973e7d09afc3c479a597cf135af00d981207728817e894bf13f644a6f70a0d12e7ee83d8a03027d788411f5f98c5fe841f933ea430a7d63ee208ee96332994c2613caf4411d614479a49191047a52ab4f8c291d3cf173e81007911eaf00198661f8a1eed08439932513a4257a473232923269446b69c751746c448a21f470ef510ce9eda38d5f187e40de177aa0cf188ee3388e1f07d522a461238c1c5228a644ce0de97eafda756413e9b6dabb6e0fa17722a78d844107bdfb7ca4fbec4417be8d71e414611c3f208ff42129f4a427853823c7037d38241289e47568485d378e451847fc7ddf388e1f27723e926999cd47329bd94ccb4732bbf176babb10fb384104227c9b4d8824fda71381135240d5478c83e63c479aaa0e84aa8b9ae3c6309a1be5bce662d41feef351f5231ccd333b8eba46815effa7c593aa7fc84c66da10c6cf777628d1f90f57023da25f1d5a3eb282310a311037e9686e14f4a8c7ddf49c14c9e37efa1c3ac4e18c9c8fe9539f327142dfe88964ee1f8e4934994c265348243d27248431f466a68182f0417d88423d0a04fa04018442a15028544705611c6956170a7dd7a10975a8d047e45e0cc38ec3bdc837ba431f92b18d8661c76597d541eda3859c91f3d1c6940e1c0edfe867a39fd103e9f13b4706a1d94cfbf00c74a1501039d46d5447815f496451e48ade6d2253fce944fa1008b41428e58ddf65d7a304a9d2a751a78fa259ddbb1e0f0af55d8706d569d4e3c94ce85d57d2bdfb8d0476e56fa77a0698d5bdb993e8dd87eba8bff3a237338d167ea6b051cd9a01766d11605667661eecd83bbb998b7ccbee467790defd4ebb5da477bf83ccbaefa6e042a75a2602ecd25f6056a7d3a0c9f0f51745d2a05d9b0598d57de8056134b3acfb9cc4c721f510cdeab64635abd337edfad31baea3f8a2efbc9969bb438a7ca798c50ba650b8ad18f5ef2a46972301bff20cb73a2c63a4cb3f1079805f99a6592137bf2c84de3da70ba3e9591bfdcc31f49b655b1bcbb6368f149b1e8c41a038a99afef9cc8af1db1d9fd53954e434874385d39b4e1d77fa6481faaebf6f1c35ee320d85ca6b9ee555bb52a9d5d8bd8d7233f5a5d7648acc6b9ea5deccb3d46727340b5df1919ba36aa4d2fa455289ce87aff51ea25bdd87a4ef68be51188cdc87ac663141b3baf03f6f8621f7e1ff10be66659de794ddcf8b1f7e482dd369911e3af7e2eb54bb8a6899e6b8aea16034374a44a71ad55ff7789c3542861fc5d79d1de1eb0f00c9739ee43dd935b955bb58bdfb14c9ea79a65da5d3697cfc127da9f45d87a6c4b1ba109dae5fa73c8fbbf844741a07e5a269b8d052adeed73e02b7ba3741ef9e05bd7b24f4dabb8d62962ed3682854e745fccc6527f65f184b3f723ab683e03a10ac5ea285281437738dfb820fd177f8994b51d7719169355a6e51d287a6d02944327d68fafe0b9142a490e96432994c2613294422bda9d9cf53e2dec379a00ff7e38f9ce7f378a08fa7a473fe4a9eef07e3477ad2e70e0de9fbef73e8c498e22100cdeabef3db653b64aa47c90317b5f1c3bca918bffdea94672e3b1f721d0fd903c7854d0c391cee38c3721018caf99013770708560f8d18cd8d72b2768d5b46a4773bed9dc9792172073de785d0acae233dee9cdb7b422e9a18823c5d1cf27031e47c0e8d3b9ee78e103920720fd1ac4e0a1ebe2377db8b8d8a21e713ea25348bd5450fef8846a20ef9e387a315634a87f1431f1ab90f3fdc1c3d9aa5e5d821ab73681caf00ab73df8ddfe5dcc771e4e6378ebf398e2bd179ddd141679a66754f440f7d307a6fe6d87ee523bad57da7d9ddea1e8ba7e2d4fde944d3ac0e55a441b33d18bd7f27c65446f310cdea3ee5795c767ebb28a7d11c7345debddc11e3e777bf74ba35fae94ea3f803bfcf7b0e08ed811c7ad73640f4b7c931e08278b2c089f70958c8e20ca814920002140881220d49f8c0c360b00f9c4028c84830d285e6987b1f5a8a197cac182e2c9687bd77ccde3d8ac021d4e27f1ceebde7a068162900cdda3cf60df27f1e2273fcdb9e14a430621afebed349ebb19f38ae39b62c9af5ee0b45a08331ccc1c3f6bb6f1ce72647ed5d0c30ab7b9333f3528e0d7af75eba5f1cd86ec500bb3820c0ac2e3f07049bce7126e8dd77afd65a6b5027d1bd976296db8e9dba7cdbad8e03f3520eace3e0db71b2de3d2803dc5d9a038b62e460bd7b8e90e7c0b04ca877cf098265f437823105bd33392f10e5ed4521c4286191d1fcbe125841b4758c071f9009a2992c2ba2e30f3bf1dd61ff8e6234bfe782e03cee4b7a68634c8366711c4cb358dc57a473efc9b4cbfc629d7b8f08e725d13973bf1f11edc25374eef7cbfd4e4398c52ebc9889f64cbaa6c2687e68e7fe43b5eb7beebf214434ebe34a3a57026e8876615ae74e319ee77d39e371ecde6facc128468c693646efbf6f1cbdaef3baaeebbace93ed175764bfb8c53d57e4c43d61eb2657a473fbfd64e118663bffeeb86eec5a3721e438ee750f7df31cb959bbfb90ebb6e7f14fb3b827743ef677bc8766d1d8bf31379bcd6f17cdda789bcda6e3b60f1e62344bbfcbd74dcd42f184710c575cd1b6565811d2202c1216099328c266ccfffd875fdf46fffe41f38fc4bba38dfb3537967b1c75ce01cd07202ce0434e55edca4596707908c00720f011bd3b343b03c1e90eebf32e375ca89998dc926bf44ce3c68c9e597ace61838c959e55ab37c55ef2f951f6e71a959ef7af487243623026cf6434b7ec27f9514c1f3de9c6fed739568365b20a30cbce44f69368e383b879027d889b638ae7cfe82641917925b31399099c6b9059fb45648e0166ed47d1aebc3faba03324fcfd3926fefe4c648fb8a9c59d75d7491f6e44944c12897cf084b8c7dd5d9ad34f10b9939a79063ddfc0cc4de0233d833903c147f011da484cc10874e01297e6a7da5218f7872f78285ed0695510a14b01a77970400f3cbcacbe6386385b1e1cb0f769f3f8fbb0ebd074bb13804f47d1acdcf13a34992bb179dcd181ec313897d10b9482676ae09657e8f3a36019cfe70f9131bbb51f448e2187e5c2ca7b8b64c6acce7fe7f7a388bff7a7eb0440b374f8776844cec37ee111e4436096fd9e9a63ebb7ef18faf7b3f6bb6cad5f7b28dcfe8efb36558445421a8449602c92f50ddeb00ca9ef07bbd8e819bc127060fb05debc1260176806d00ce08df3c076c38ed4fb0763b6ededc2de8ec49885230d90cb6ddbadfd7b8ad1046f5c4cedfb035dede27e57a1ef0f42eff7d03ca3617de79c73cedda38fa2ea708c01e4ce7133731cc7715cce3973dcc622d986071ccb074574ec75bc862874f3eb58ec702bbf42b9c5fde64d1173de54b970667d6fa2741ccaaf1e44ee394937c707f948d239cd451e7a851c936457e69877d3d5b925be07eeb9bc44e7b0003973ec9adb32cf4ba4f4fcdce7d94a0efa6c36e368f6e681f57d99e33a35bb7350bc074920583d07c171b13c44866e346882f0a3b30eb5ae41b261095e85ec114db07a6763cc9d376bd8f8667c34441b449611655419adba69226305a5ea98732a85549f8ec399cf2ddd9bdf56c12cdda3e496ee378fab18a51861f6644425d3bb6fc52946258c6e6cb2057762889fd03d88a377cfb97af70fd3bbefbaefba1addfcdeb13aeecdaeefef599c7e93a535109cb567c331a984e7f1710cc2c47efdf8b6d934f136468e338e3a34a3667ddfe6f46b3f87438e3c1877cee07b9b8f342b0bd1bfdfa4298e60fec653b8c15742eb5400be0a885dec60dd04abeb386134bf8cb9ffb44b09fd26119a9b8c39b4cb2784b02677ed6d1193aa3108135cf6bc1db9ef2741b8b9c2b81a77e47e0abb0f7387a6471138841db903f7cf0ba329c4eb1eda183bee88f1c4c7278cf8354f791e17a718007e1dde3b9a63cf9a6f1384f9694858bbd65ca641018b11a90ca8948a959606b5638a040200009000931500003014120984c2f1781e05792abb0314000b62a076886aa0ca93180a2a860c21848080000000000004c2200155876a40b575db45ad7e3299ced47707627eef10cd7b537c803ce0fbd8a7aa245128db5c49a15807a0fc9efa6f53061dcaf7af7d3bb54037a5a19daa846b65f246735c8d95d8782a8051556aeb6ed01629a6d05120a916f92e5d3adb1c73bc826229cf48ee3071b5f4ac67880118153f5dcc9b9782c06a62b2508bf62e3c4d42f529f0702a0ab7ebb3346d33ef7f3c109a1fed747b3c96e7ea58955ed037e81599f2aa17f3da45bdf3c4d72d05a9b5485318fb7ee8371cce805493c3ed3b91d42d2461a73dd7ccb6e7e5591668d83aff3d01ae6889f2189cecb7ed2bf425ad3749a932e02475c73f095f06b786888a86e3a6ae3e2e538f700d8389510224ae1920852897232d9a863e10973f41c244beb31c6c35e346c790bc575116a1ab55525dad58e39abc6440f241b021f0b2fa7e4f75c622cb1c63bb6902bd768035aaa767b3c62fa2d4acc3c4cd7b9c0436d17dee0d27ad123aa8de14d7d3a23d00d6fea9a533c3dee9fd30f0a642da73e7a60fbc4fdf6bda05cd7519e8e0b0428ea2b055ebce40cf3e4b626c92d915e119deb97fc36857efbb5d10afa1b915a99e1715caac39e8eddb8792e290fc0f5f144e507a7b6ef946f3bf7137d352be9030af6913829428901c783608384998d01a0d216a68ade51667c836b52cba5e9aa15be7aa353d655638ed7bd1043294b48718ec1dd21f097b9c5425a8fcc86920a7d141b1e7c198e8bbc0b57f6d929f932481cc791558c86efc05100d8d42509c8d905e7d4725f521604d600a5060dc12f7e7d5fb51ac41b4df7de60d5e44934066c65a1e0156935b039d6c11c360b5ccc116e129cd3f39c7085e65ecefee0f4d38d1ff5c249b7df2380c7800772208ef9c8b5ba875d41060df598fff4ea489de29c90b1a396e1489d42761543517ed89b34081ecc44393277b35e70ae89d5f4d76182c57041200df84099191f5c4b4bba0a49fba8fd1a1543fe5e43ac10baf3546f7965549e91f3914c8f45c17bdb51736ef1a774d8f71cd1825f9a86dd83ec351b32bc970ab9a268eb2393a0245329fd8596ef0934ac8b24f453fd28e2cdccba2e9eb57d4d49ecaa496da7ad67f27f0ff0a5fef633ef1ff8da85b91ae25316768eb4231641a53e7e21ed20a54d7a962f1159a3f876fc19671d006b7fe6cbd760c7967d6616574c99226a72e904d5cb5f59ca70f45a968bb65c4d0ad62d12ba82ac0b1118af833d055f5aea143e218183f8311962cf11ac1d6a6ccd2e226411df0ad0e55c82da61c61b193e5718f5e99bac9e462e4909d2c8a9021ea5ec8b7a59307484f28129cd3b394d15e1e162a283b7586a1f106d28e04e9459307cf8a9d53167890a120d50626a9f1f848e742489781f4c230655075c3d8f819c62b20c879c32366c5925a5e01d2fcb2fabb8a3a4caaf0679344ec5080cbe45061d99c70a8e128911c1329e0ce247245cf8dcbe252847c2189219891a984587a205755b0fba06fd2f5e0fd149cb31ce0d0d00fe5adbdcfe3e5caa8fa9b800ce649f0131a9366d50c3ff8e65482b8692b919fe887fe736d029168114fd28863a7c5063f2b321d52a5c6f6d315fdde10143e7dbe40322dec0de3192e1f1ad7944213d2d34254c614ef880c68d0974dba767fb8aa13bb6f722c23c44f1ddbd489da149d94020764b86dfa3f2e30e187b811d7cef75a406c17d0d27b0412b3ed174c583442d66581cfca3818c8bcaeac9e7bf56fcc032a76285c79e2e68f5c547a8cc41af8f97603ae3dbdd3873c0f88d3725cfd5d3153f06427bbccf84ab8e890f471e978a5d8696a74fc1bcd7768d8d8f1f4fca5837b49f499afda859461f84296ad1b7a6fd51b16045889951c503e6d527cd4fa031ecef61dc7e7faef9c35abb8258af46542005dd313c1fcddc664bd11bd95948a140dd450c5e76d1316c6ab7fcda91dfef198806c590f9ec9928c67ce2799b006ac14cab69758ac77c9ba7af731a9e92a77587fb38c52c083c09eeaee552bea8c9cf9ff3886e198d0e031a8bfa21334f2affcada629e381b9c8eb7a59434748ee875d5589e0d75df2fe743982bb0f4be5bdcd9a3ef7b2ca644fc7e91736b1e13159c0511d975fc8303c8cfdb501d6cec8fc7cf6e7abc5bd3eec865ab356e6daeef38d325ed43cb0a17fcda90f081fe497bf18731a3e19922976292c840f9899da184128ecb3c22acb5d4990379add6b163588e5dedd8258abfd7cabad271a0234061612b45d586eee86ba49931abd70f12859f71d606be4c44c4dd382bd014ec9b9955bdeec523234b6ba0feab2b638e988aed6ab9348761f764b68d0034224664151620e9c40ef7d359f96a1ceb694ced916521522a6ebd8e175bcdef46ed869240536d531b856ffbe070af9f98985ad2526e6a93a04b5eb8c3b05dbca55fcb69e06b71b265e6c8eaa22015dcd7706134bed31048b7d9736ec42229ec9834956408530234ad174862bbcc26f9960f1c43fafe0af88681615b579e63aeb5f7a9d6df50f280298280a23fa2c7ec7d2acadb41c2f63933bb2d5b60027ad6b1c81af54188da615b6cec2cf464081176e42ca24de32a083df1f821869db613ad0d63eba05443be160c87039c16bc34a8f53a0daa078da28a35da5186fe6f539a55e9a1c3bde123c5b007d3c5781eac055dc4b1f3718650424ef0c29a612455f67750dc1a2ebc943f3d4e29268a8f256d98c82caf92735335f0adaad048095a216fb8a909fa3899f845a72e161b968fcea2abab1be9a2c9ddbc11cbfc594bbd6ef54ef4b7bdeca5a32158a07a3b356eadc350e5fa131992f1b40cdb5e2eb61b7f7ce0aba9cbb34388020211a8254fa2b0c8ab3dd739fddebbd42e0b10a3153a871f38b0c86b3d899a850bd991906f7817b605a8980fc10785eaeb392ab8bc0c947dcc6d894f4b889b77d88467364287da92ab9f56623a4b6c864c12249940f34373e7b6c91192da2a045c35e71097c855e250a4a4994de358fc09e79a9848e5e98d7b96d244763c4d4181e52a5bc5052212254b11f6dce56c0c8ae3799c6fd6adc59cca0562ae822431276aec055a5e265d2307f15830c849c14dda6c4d986ea0d0129591658e8d3e24feff54f1154dc73c96676657427b1960244fe24545c8982ebd391cbea07b9049c1d29d401240abf4fde713173acceb35a465909acf3ef7ae7c66d05ef15f94c3841be63a9c7577e26b055f21f5c7dcb7ac307f83a1bee224191f4a4264b45bc79268aedca374df7c65ac13ef34cf01fc84852f041239d482ca2e9f69fc99fddb25d2632f283b9f2d644ec976fbc82024df9d750dd0e3d934867279b2590f09915b8155400caba49b9c0c04df853e67c6b17f9040e17de27668edb391ff12e21487e24c9e34a1d40dc887b5ec18cedf777f4d0d57fca5cfe3980c7a40e321c7a8a6f603de90a15eb7bc62fc33c26202833af85915be987f92eee073db752cc44dbf0d1da82058515d93acb9bfa17ad74fc3aae4c5e099a6d67ff4974f9c044229a937e0a3c90fde333fc25eca516e86176bad2903ce1b4e57e8c1e321b2b113cf765ac57438b53fe627b16b4aae7d1c766c79345fa90184f89b4d7f8bc9af1676d9498ba8252496ebb34b2374e376b3f8ceccc450268c6eeebe2b76f0cfa43d787f3e2b1594cf679aa01258faa16be92188493429b8b037f0a650a0849a59af99fde6170d272cfbc7afc9ad3c828608de0123bcea5551a4d64a3b4f394920d1da30463b9dbb60f0219897737e2a0fb6ed6bfa8970f416d4e17d2b0e4975054225aff62947fee2803594e59849df7e20a581ee6cbb8a769f72e55f87eb9f8f8abd1a9701e04c37848f24a827e4baed5293a550bc25963d42c7c46a2979f4e354ac53b91a5e3ae89b4af6ab68c2b7a41aa1673e5a3aabe4960a9fd53f3b686e1424eb7767bb38827551bebcf44bf4189c7ce723d1fbe8ad5fabfe1e9818aa7ff639e4b20b0fc43d7bb5bcdd456db860b46e449e41325f13c424ecefc7dad11709941c8ff4bc40fe69959350ef42b8b0dd4f59148fe3b5f6fa013fc8d3b8e5133b23c3e247f34b3ed8e68e22824eaa42e8f3661f3772c3c586c7b339139a44915e3531b524a1b8e11a0a4473bfc0157cf40062dc78b8f7d82d7146b3930b4039960719cd369a517c43990f8c58b45d21462c5ccdad92ee0359609876f2657de8854bee7cff8a4220983ccdd0ca9b70b3f6382eefac1e805ca1424d8c45d2231453ab53dc1a51eaaf4f00c833c87857530a7c374ebb4aed9823f212dcae4c0cd597968c08bdfbfae40ea5052f79e9f9e2c268bfe58c0c58172bbcab99b082f3225d76b2edc76c760dec8cd7eddac95e688326a39e30d6c74aae17c02dcf8ae295bd3a48c38dad945651b59d4aaa2e54be9bab8aa88deab1af036f6a72878ba65082460bc8ff6a339a8c58bbf0a2ba6d6d475893bc433db228910239b016f009b4810a69a878568a945a70f62d8a93c44d3a105ca7c53195d04abcec6c907884c3622dc82d210ade58fbcefe952d34a75e4d5420a349c09d3d2fcd9441973716c631954a4f53ace00b2669cbad3f3cb548c505d00e79808d6608ab43caa50679001aed97e402c0357871718d16016de630cd52454d6237ddff6392fc3993a87534b326d9e0c424aa11af1864d57bbc6bf2323bda9a76a98c87cf917f636ed982a99e368ea0a613f25feeedd60dd531ee56980d1606d0ba11c49f194eb183303d9fe40d070e2e93f0004771a03dfededfdf613f12921bb7e91433ad54c947813af0a7d51335506054ca9363cf1d1798448a8e234d799f53605d15128a392b8ad5cce8b0ce49de1d8f69191ce100f8f9257e2220d9d1e30a1f66ade3fd7c5c5988707f18eb115c961d8b090d0480b50d157cee71b2e413391500a3d961147cb184084614c41079f2f6c021d967c01f96c8dd2c955dd74ece36152ac7a81d8f5a9723f124052026f34d6123881279b7947a255d5bfdd3c806ca33d0ee9e97e21ff0eef5dc7f9eb1d08d53351478d40fde5acd70a597b9421bddfb47e6efd7459b29f645b1d884816e48b02edc450ecd832c6e8884d10a527c4b30bb8747d190a2b499827e7260443564217fbde47f513e7b82d98b1160a8eb6bf391f578e7bdccfde555791bb377fbf2cded105d7d19ec2d87c37eaa6658e9d8baae4184d97ab4bb21723072ad6cd64b97b3997c126eb5fa768b5494dcb5a8a3a3b47795f9fcecc438785739659bcd016374cc6d59d59d38ab14e463588e500f4a2447e70b12124f557dd496bf6c4bd3876427977691631791faec1f55ae17bac35113d5eb8b8fe315857e99c287d50544b236ccf69c9ef4672861d351b9c09db70dab4803242cc5f0e9f4dfd4235ecc755149f954b70cb621665f9eda78ff2c3046bfe90120f5d19c5bde67a5a4a7c3bf3542a18566f040ac3bba5b157e5644574d1b878e504b43497d26c1fd470f31d6bcc44c8d3d00ff5f17fdbbb1d6fcfb5255bfbfaf5f953ac0dc5cad9240771a85797f3b6fef79a1827d33f451e1766b96b3164a8bfc273220f992f5accedcfb561f6e1b1c15bc351ef6fac48ff0b564dae571fcf4323d3ce95743e950edbe63ea95a8e6ab66eed2b9463985b4029440c2d76b2accc903a480a0a895847a3f1abb99ec0a96bc1fa55347f1e8e18318736dbfd437e5188d99b3bec9283ef489c9368a9d4f7c4b3702dc8c80c36ddb7bc7453ef29a756b3af7cc4ac7b281206609547f8ec492adc1420fc5e8a47173249e3668ac13f0e942706197c8c6906872764e306a5443cc95843861d658dd38bce9866407b87255e1ae1dfb21caacc33ef7725e9b8ceba90ca16183605abbcad4ef9fcadee892d29519f78f1c98201b278e039e558d2e96abb2f4635e2a0de2b4dd30f3179565b5f0d2953b4bb1c76d709727342da4870d0c04adde74d10a16bf83ff137d31bd3e10f09f6e78eab9d9f70570dbbde564c29b1c0bd419d165b927c651a60a65c8c2db55a753a3e0ac97e07ccc7bfdb28c8d815e74e318ef2600268c320bcc208ca61232856142ca452e4f8a692ce8a8c96ab1572b656c90cced9cd84ee0c1884686053196624c332260e597ddc5699c6beb737f72871a7db260ffa8228eff81d87f80774bb24c803e66bdd14bedea5d634032da39feba5e55874c604ab6727a70b4e5edef0bad0617b612b72b32a6f6f032a451d52c2b247201ef3c6665917fee4e0a269de5ee6aa2067cb4b14395b80980da2e1d52dec18ac6a1824b38c01231d69d95238eaa86a68163ef43e654d3b122b865400287abf250d65534ab025df1889ea9a13aad50e8908bf4b400920f13a43c6b21e45ffe797b95efdcf07124b9b41834abb72e39182381bdea67c7057225cd73175b37059968586743580c797a5473909dcef06a7d5c246757d553907f35b2cb5fc35ba53072c728b7550efacbca57aa9e51e81128731e326ec68d5e8b16538af43059873fab6b9aba316b07465302d84d294f57928a0346c2b5364b35f8aae13ab4976b6025baffc1129b08518cf64fd2099fa3ce1468b064c81993302277cf247e6bd8887a7b7358d3bd6d522c6430287f8bba6c8b5972454b50b35359cf2f794ce61ebf23bb527688bc7a90e549c8ad83acd69a3471c2904612834b6bce304e8dd43a757195b202c25bf6a33c7682a84b3ca8608cba286ed94d0d43519c56749680f330556f0b736c9988414099f15ff40349e9a5a411c92221e0ab406ef3961d4a315889b81e0088512bb989cc248d1f90e32faf92cab388a568549d0462e9f5784acfbb242cee84d026a2b13ae88308ec1e5cabca03043c80c78828c7807e959170bf2fbed58346a934e8d3355e6afad358adef0f967717f8477c732895a51de7032e0c613dec6e4bba3924d863c1ce92c811ddd5be3e94fabddc7412a5d9d959d6262dc0b06e7b37adf858830a5500e06f8e65570e2bd4ea357401e2327828bf98dce404fdb0a6ec13ceebcdea6060661de64381747075a4f8f2e736fa62698e32a00403edc5707039983707cc2e192a23c3f1d95a53fa863465a700043422ab3dd8bc857e75ba252fc89d4e42338ab334bdad4fe124deb7e6b8124e3f39bacd1b6c662e3d8b67f6169846b3e1294eabf34f362480572b76a7a46e9bf1852f28264de4967381521e27b153dbe785ec7e7f66b8027a179e079cfab198760002386497c2329159ab9133c0c1fc4c94d51880a5749a2b468d69e4d9aad13e3d4ed5bbc190acaf50813678be57e85de55dcf7780e6a7fa5335b4f6e5464b4c34db42d4d1e762e250f95d0b136f3f9ad1ba5ff76e256f8098cff4540f215a5280850837445ea54b44e4c5bb04817d0704dfc3dde7c7642fc1659b010800172420f40a9e1d0ca7f2eaca23ab41a2fc46a567e6af0fc4fa4a9629196f271bce2fcf3111752b87b70c534421054d9f65b02575f8a519a13052d0745cb0f939c6f3d3f413ce5c549357300e9538ab6685986c6c8d91f7969c2754280111d61730a3770c12d4b5ab1801f425191ba3370d8efbe1ce4f533c1a0ddba17adcbe3534e9d5a5085a4a25e75ac978ef4a8a457951ca542125010045cba19a8acd7993190e734b793d302af2ce7361ca5f43d0f37a8be73dcbef8ab5d97a00056bbfb34168bcc0ec5541dd7be2b36f3813b1ec1b589050b5c080e80058d35bd35ce6cbaee89c5214c8a7ee725715a3771852c4693b9926e93a6901b748520f156e8c4c43f6f65893504f228061e00085afe330f3d8ca245c651e4765b3db2ce31213ecba97e78a54d1edbcd5b5d699787592a260976dddc164331232d08edf9aa9999e11a6a669630a7dd5c011ebb130514f8046c3ad79740a829a49055f2d4f0b4e3c6761d8e5196305aecb25f9a6808cad8bf6a155c8d88a47f101f1fe81f80d2a2480deeabae34aeb25450ca056d2fba299997b32cdd094591f4ad014090182208c51a72f64c34a1082fd338687d7d8009fac52e0ba601b025f360338d857972c4246707045f4eb1d969f05379128eaf17fb3f042904f00401cf5dc6803e1d25d02129e437ff195fda6b40bf85fb6bc606f998ea1750eec402ee3e5d4e01dc9ccf3f9d65a0e3724a588ed25ce348ee204b2fe9aa512f462285eb296ee7fe7ad41fbe148b9805de4d39bd3c69eda5462d70d5ed51de73c6e9fe996d7d22c08c4ab0a5a7f51924b3af3fdd072627b19f3953920055da45571d648058fec87453275e9459f465a586364bf98e5ee0e69d527cb867767a5fedf4f2e348afcde0945454cf583471061fd50cb150e10ae1d0fd5459c8580c47c822245cb6e53714eac0cd883ea876f56a43dcc1ad9f01d7a37e6690b0a47073497dc80a10e979aef671f86d39771f16284ebb73da049dbcfa20704e9f55c5cf91004d86dfcf5834d10e8e39ef6bcae0a2ea5c78097c2fcca163e5e06c1647243a191131f7394d1a277c3a8f83686e11a254dbb4915f863dc567aa622f6e90af061cfce68b9c4df4848bdf72cca11f9366ec477b4870a0811002886e0e4f3a39f6fd0a8d12b0369b9b3cdd1d6b8c711243a426133a156f3619de368e197145ebb5c52a7e3434160f92a7aa489128a15f8eba703fb620b7421606ab5f2c3380ff09acc579c43113a9a0d2109861ecd7c7eb0b86fdd5f1d508bda9689e6b50286bf4be35e9945f598982a31bf69fd0a26a0488f981941e3ea2b83ee8f9dc6ab99da65c8f4089787271aee1a45d15f7234fe4580739944ac0bfbcb8c02d97e4bc426401cee18747e3c4282e2a4c2f28c06320a7e37a79e7ae0f7485455e39fd618ddbe8c5bda7743c98765694ab622763ec28f9d8130bf21ec2cbcff130cdc70e87b2efd8e05f35166c76491e5a697acaa91b81d7c427afac5c53462369f9855c1da521e24e9d0a5244af65c8035ebea680b233d4252a24eb0ba7f4182b15fee968fddd4e6c1949dbf70091f635f6735c332d80173b4bd3e4d4bc8e4f4eadc52188b2b7c81277fd548f41088d8359e0750591f97628d0c01163a349a81fcc01539cc4afd48a1b5107105a54386eb097a6d4f7ea540d4b9788c8e8af3fed01a73063da5e06498fdc5f04d14344b6775d917185c7e19e4f02605f5072609ba958a39bc2e34010e84d43e4791034d234227ac0fb175b8816e2b504fd0e57657630284658076caf504a5daa13679402fa850ce80a76c2ec01aaf136f71edf5142751c542d6c44f6f34fcc42e814559fa00bee04b4b6e8a0ccb6c2c8e31c3aeacd997d6c7faf679b6ed4fad94bf6b2adfe05dce60622261d7f2362713943a482329e0257c396f1b881c238bfcc5050db58879f801f2f6bc0aedf4bf315f6c4841be7c448154bc0fa9b4e811ede9a40a2b1fc407c3a5f84ec990c0db407a4db9f6e363a1cb2ae700d0c7f773a6185a2866277850dc82d33734ea9645a57d86e2908ced9a4a92b1cf33d929f233a6c90117451aa498ebe79f7a2c16c7ef7cc2daad6d20abfde44b2a13ea4c628321056d3922c31f33ffb311a331471861daf9e884f0c5a1024daa975b50f2f564f75b7af39193b3760e5f112f5d59dcf45b1f7dd45317724287e8b45ea9c949c5e6c26d1e1c257d03e62954c9da4240362220f1fac68fe9e38177d2bffa54566faff09885931f19e47ae0d964b1f3f1610f9a7e3b2318e9ff2cf9aa499d8a3b8b360adddf69b587d9351f73a8f9d9338d5d91c001ec6d86481bb0144b4b912e6f8e93bbecf0e572c91efb0366053b49e150e3d126964bab6b363c4c3e75c4e3b50f0d9424a444b809ca193c81f732f9def3ecd39c37af80cd03f0c1073fce43d2ed4a52e4366122804809a2eaf26243f7fb0a613d4e5b1247f0d252d5c8449807515a731600f6c80b21feae2fda29afa091c7da0fe448c7c31f711a16f0a88e9a6c67bd246c6454b5033a13653cebfb8558ca02d47077a654b74f140b3786b811a477ff684341e102398b7e52ebe0109bc5d0699bb4654e3728bc35250e396eedeccf2632c144cd0e4ef69221f2ba5c2aea8715b97c38c8dd15f8e7b148702db4a6dbdd6767745b4698cf3f876c6bcbcdc34bbbedd62142748482e9ef4f8282cd702dbef3c843daa50064e72d814d034b09b688376bbbdd69f3a1a15d0028a9af2cfe82999998690105d7fa9523616e8219127b7b6e808938be30d3500cf5057861a01bbe2fa581c99e8ed46186888a89cc733cd7daaa893b299fb95968815e5dedb373e8226ea3386e99b21fbf2042b7adb261d54bc0ea6efdb20a3350e1a6a264de2500f0bdf2e7ab0e22144f25af62f7fb93d4d082575a16a8dc181bc516c082370ca701e950342c70cb3c1ff303ed18a9984a1630932acb5ecd9ef0c7b08ad941c9a1867da214a33c2b064bfd51945039071e6a171464689f9083d83632ee54f660223bb74797475862da5085fa3fd27de3c0156875119f3765fb66a78183e124af4cc6422c388dcc51317e5a39208f3d15dd6c07e69a7b4497c85e5506a5710c33900f2974d05d07ddd6e20d8fcc7115bb3f5037ddaab2766838403dc5e643d259e03ccaf1bbe82acd374d5b7e3bd1605b2e3e69aa30fb1d66e0fa7952f29210648f6862c00194a122f5983e6a01629bd069d005df3fdce2050029eb2f20fe2b695abf23fd7bbf102333d17c029dceafd7a17001600f33c5007a3d32c9ea643a50378f19a2616ce502f907a52d0a7cc24cc525a911faee513d89d1e68885c11a04a5ca62baecfa71d61927e241be67486cfbd27696646a5c686eca4c2d38624d4089814e5b94479d4e79d65258c627d5230db10539d6c42af408c53674e7653cbfd0790c74818c53f6799dd8421dfe839754b40f15f48bd4505e42f613d11c5efa04e7384bf2edb16d0407dde3233123502bec7f110f9b13ec0e2c43770ccbaa28fa9d7cee50f691ba2f9df3abd00a730a419dbb376f7928835629ec5bdbaf1c11476ef9b371d801fab74dd49d297a523c8724a9cc71a3e2220208838f3a1af43bdd2805e25eebd58d4b91ad0c5bd09459e701e239202b680da3cd7aa030545ab10c91700e259ac89be81e47c596c0f5642df64bf671782708ae9cb57e58691869976234e5e30b630a6280914d44c612c76e2e7e4b06dcb7e3ba88d1fc368b24ef99d4ff7c43d995184c60581e475275d9bdb8033a29dc688eae204bb208b573883458c6811b58e69a99bff0225d00934d97b50048e1067b3499860f28ce6729e9404ba434d671d1e57161444309241edadbea36b59f082f79d91b0aa28ea21da9f81f46c32693a23610c5960291c068b6fb6a634083527911949df14f055ba4fd00bdf0162f7d15810c2ffed58c4fcbf4ac57906f498b07e393406df08087e06503f34f80c1dc055690f33bda96e78f3328176458ef78579ef6b0835b64c56c2025a5055717f18131daaea567bc9699304b27699767809d144faa772dc7fa5429e248885f0149324b61ddeadc10153cad05bc4fb257947d219347897adcc7681741615ff55d0707c76a7db0208b451154dd25d8ac72b134da050f09d004050460a80f1dae1f5f70d2907355591027085bfd7ab3f37c3a3a7ada94c37e3297aefddf29f623db5ccb9d4663e539aa1c0b65c91a047f8f3b1938ed4186d2a4ee87ab1b68ce81988d8e9112ca589de38fb381da56b881fdce46b5293586f90e357ce3b2b5b6ccc2d7acf7a5dcdffc55d67ca9fef12d539414aa1ddf5a6fb3a779b537eb9464cf63615e03a039409c30ae85af2ed51e8e2123ca261d5b48d7954c40c5659fbe3e87c48bb4580c16fc4e0b7ec4926e477bf2620d187378fde5f869086e289db9ea2584770df680af6e2acb21fe70c8ee8313e13a49b0c3be7f6efac48e657e51b4282cf26348c84da6513729cef14172d2923ecbe129236886a7d8ad2f9f657772050e93f9ab0f0c414450e0f7cc5f37983c5aae8b73db48698c1cde91c6ea7f059b0d2d8875bf6d7b344864ad82d2b5bbbe3ef5f8d6824b7672c6e836c9e6c1920a9f23110f3969b3442e727fb7cf1a825845f95f324f313db6ed7478142ae03e76d118d8129dcb53dae7666d0ea79b48166a4017aee2feb78f3839c1eabdc38f33db1a28247515d1fcdfcfa420d22d62435f623a03e446368a056bfe9a794f55858b15ab2f27bd4c5c190c1c2c7519d1f14eafbf4a45893930d0854b42d437bda88fc70b945ab7a9ad47a3052bc1cd5477e531f89e2c601a7e622e3b28c6923eeee93d0689767030acd6141cc6c19316882aad1a451523ee0d197ff906a4f324b4683aa02c5d0d7eb6e3364098629e694c9f236945cfa384135f6eca777aeb65bcb798b2f78b534fa7a577f1d0a9d0aebaddf15637869d3da54daed2ea45d9ecb60bf0f20cd0d5a670a1b7ccea6a39d62e628bc0e579499ca827bc474849ce00532d8ce087e56aaddfc1f22a8839a6522634e0c27b3ac73289182c10204389f0ac46d2d2a5c1a202edd50a5063ca2a790c39df349d446297286190e47d47412211cdc5c761aa5672170fc9af1b74562878f834eab6c22c2fd870082b7e0d8898d670fc416704fa7dbb33f9f90c9a33c644484cb86f0ee194f0de1c4ac74e433b788486021c0178c9e7e4c2b7d15507625a92c66aafa7488c1f9356ee959eb08f54d28bea34d89ad78b12a132947a16914ba8a690d74d6d54188206256308820e50ba5f7e8dd0368d83a11d1b1f80d7d026353fdd9034a29794804a046988452276b7ba76deaba3df78dd8d796800fce47af81dc11b142ca42ef9541f4086079e2e0ca787a836755775924f290338ce2eaf88c0340e89a7eaed46d78088bda27cf4160c97ee9b2c7cc5d876d7077741418300f9b6db957571c49a900d169613c9a7825ae3f7eff21b5c428f7d54fea3ae4e4beb4ec9bd2a8ff10340e57bca556a31cb48740b24b7066f5dd2930a6d660ce7cea1713a8b935c41dbdf83ba0ee829f353a0aa5efcdab3a42ea775c3b4fcaae8934534d0d54642773f0f17e68af7cfbddca5c92dd0c5c4714c450f9f3345e11390472115d06aa75bc37b2dc1a1ef040b7cbebc1247299a01fd057774a9495212d80d272a176a45d9cb0db63506b88a1810113d4e6e3e5c50f80d54df32a2ee8529b807e1300c47b87c37cd917e9f9990f037ed1fc3eeba8211fc724a36491fc7b3434be913296fc917fe2d5cc9f950e9b3a74cf862d91600ace298f3e3d2623a36eb649a228d5cc25eade614311a73499effa4b579e84cb0bee3904b4351438b085fa4f2c183ceb9a26421fb422cc371276355e0362da5a11d41a276d8db51fe844733eb2f515a75bb84a542e00589c142dabe9820edabaf09383b52ee2178b4dad7789dc4762827fcc6b53fbae15ea09ab18999b865bb4482be7cf3f07c8f6a091b68dc05de6861245ec6a31d82c2ce0fcc61061ee28293afa87c0359d71989f332d6081f6077066b7c2533020e5371a1787a20c48a37043e7b56b87c86fc83c513758b463d605e49ee50d4deed8747793095c802b107a7d71cee0cb0cad65931a8c987e730d802c314acdc90f68ce7174343649f83ef6767e44c2bc82c5b2611fdda657bd6def599ea760307eb484177b4db2655038031745b6fa7cb9ac171ad0a7230e43b49593effe6c8b928f332180b4ae96c6a870a71cce8603d6ae35faf48c468444c1973a168fcabd06ab14804f9b572cbc9e881282e3dddfa18f58c0c13ef5587875343974331f1e1e3c35d0155b4f209883bc194307c8e068cba801646cb3433b2d1cb4ca8d6ec3fce011e11dbfc45017ca976462b46fa7af63a1343fbaefa4414d45c6d9f74ca9b9ae01620be855fa50274256ed23847dd1793d2d375dcc83adb7a65f4b580d141fee12342475c545f12a2fa073f858fe02cf8a74e6aa543ec46201ca0ad3286d815252e0fde6ae9b98e752f0dc477637bae092f263a64189623ce1b31e4ac7b55f9ee64ba984285ea51df1c39ec03f79b42d9ac62c8b9d2a2b9a57bcc7857896388d191701945e17347818356f66f0411accdc670d5945437979a7d11e0ba104c28d4f4de27cfba61512e001c2b5aaf29811244572802f9eb033426e2271260e62fb222988efab1a0265a6b9d4823d422a2cf5066689c82f1f7a973a50c3413f52b4af55bf254955d14a71399f1efb2facccb04b81622633a671c5c2c3c69fc64d595515be85f0ab60793ea43fec06f9cafd85895891a27cab6403b1c2bc3bf81b15cc0f32829d78de3d49c911db61227d2736613f3876fe81f8d54943015e26f079461d637c9ffc7f28d43feef5ea7d3e19bdd9d7c34baa282848dddb2bfb86bb151bc8192f56f7ff82366c497781c833b411f3139ed9b348aaa20c44017a971b8a4f836b4cd847195406ed73682f63cac381329ece16a3e1a51c4b167045041bcd35a52f93b5dad4d75193ca01f64638869035e65ade695d0d44d927f9f6d51fbcf01834dc769c3e1f0ea482b24bdc8dc3302ff9601c2dc52568fd71f67665ddb73e0d73fac501e6bac287c73d20280305d46acca002c693abe2b8dc4e0385c3ab39c0142d0ddb39f068e633af86133cdd2104233c050954deb9e101416e3c8e9b9f940f2ce5409fe675aa9a11cb6bba3a771e8f6fb18ffee658ba26db77d3a1752862d018a4f83f7b6065f47e0ce744ee8b1542070f7c2d837af17b309be128080bc0acd153aa5dea3cd91989a4f086bd75503f2a46cfbce3099a5b1bd31cc06b0035a0cb74c681062bf7a097fb3d95bd2a1f55db93a21e551c49ed6c3467d87fbc31098411c2dbe0219dc08e91f84b653787183f77c538ddffa76173b24129ea7ada9c22c48a3541ea9b932bf0cbe11c42d9fc0cfa40e1a8d83dad2237c265b2a5334a6f1fe85c87b69070ebd4b53e946cd18205f7bd031579c96074b49ae682f4a807ff464beea029b0e4dac1311dcaedfe121b0e90e2b3c74589a1211efbd9beae7b9334025bda54ae65b2eb41eb010757c2b95f6f31efc4e7f8c1575e5a884f3e4fbbe47383cb548496c14c4d23c2398983f2fcc43668172cb38c5593fa058cbfde144589da4a935fe8a7e56a3b7e9ae52c7db30627e71bad27b10de1659110772748751fe7667e246c06877abfce1c127f8f22d8af01ebf19e91b952eea493312e7300fbcd9e190656a609f3f068f284743519d02f62d2559784732106ef0db3161f81ad823cb2c24c99d41c377917411c8dde6e2a57a602e488010d6274579e91a4c5eef1539284cfa3574ae3e9331e39e896c00edde682b1a2810e1be3f0850ee91656e6723bfcb3e6f1d1f174f656a551090e40006e30a2d3536991ba3f0b809d11c868ef70d1390faf37dd3dc378b2dc701e29492f6247b2fd2444f15eddc783f18f5192512b66a2d62e4e27cec113d1847ad545e593b8cce4f225f49d2094f1c6d9b55b72f72de8e1c150213f27dc617adabe1b9141b55a9e3afac66a141130485dd97b137b68c8b34319abcb327d7304fa00b234b469e901b536ec0b451c20bd0194681b991d479a6ac11759b2eaa38bdaebcd74e1425e6940bbb6c58831a0a497996839202e9d71d644e6257f75433f225ec148a848fea3178c84ac5d5e1df2a6633ea0de0f424502e2eda9ba471902b21c7ad965b08a42723ce8b375ab26792cd485b1dc248042cdcc6f74569e703763533eb8ca6751af8d685f8232ee6154ae33d3537d8dce7fe223ff4a20d8f3e763fbd481b89e085a6fa3e7d13c2c597c8e2c2e108ea8b69a2f7d3c6c219f241084debaadeb8350ec4df64a1782ba5ea5c73d1e8d96ed1c4a21abf268e4d4cf65900c73638c045afe14de2222a8ee86cb1182c4e67347bebbf4eadf5efe3ec7cff3f32968db57a09d2a0a33ea2aefbe8e20f0581ef098dd2356ee593061c17f14cf7eae1590866a1995c27a3e4afb27bb7fc5cd147e0f5ef78fdaf8053548938f4ca31bdf60fb754e60f213f94219779e97e26933d80cca3bd5d9117b66ebdec9fa9bd8f04344cff52fde52280c87326587c38d181847a8340a200a37a32710db9d93b6360092ed74f2fdb9ac90e86c40e4dcb84e37e141c65cbf9afb192a9694987032116ee364dc55a9c62ebac26fe8ad551b911e667c6cc2ed5fed45989ca929c19a72853fab93bf9b76df6fbd347e22729d4c7551bb10deb40bab13335ff655c13a14204095808c33b9a7e894e79deb484686f40d44d69dc8605f4a7e89d4abb2cbfc64a6785075c1f09b1090e930b1f537ca030a442d32fa6611f06a7ffd06e85da1dc89309aa3f0b9ee7e17858591695500d00c0ddbaf47ec44c8dedeafeae05a7092a65cc143cd75099b19b06939ecf5c3b6e56101aeabee00fd1955c475f5e7ed509f1a9c725c2f694b9fbe3085c2116c81393fb8077d7db841f76992d6442414b7d8903966da89e4866d03b5440622a4a596a700330e2592a37da34852a0a4978050be836ec3886e0c40b6f0088c45fcf08f4a4adbc45619e8091731851652f820282689d5af87c5c8043b6ba35f783772646b7253ec61813c506f35ae2cbefe22f302291e5871de7c846b9f3085b60fdf734d5768150cd434deab7459ac172805e696a136aa3d277c11846409b6cd5dcb8a4bd2a461130f7e80e2220f0ecc3f7078b00edc18752b455a9425dbdabbea8d30c656926db39d8dcfa19fda82d147eb3947f43aac8427b4513f280faa0fb897de8680f3c0b2afed89e386133f8d0fed970ec78c49fb39a8154c347a71fec7d3f58d9b3d3feb7d3ea7fb3e2d498fda1697781f54c3ed25e6b5f9c5f29e526efee67e43d5fe1f8f63ba8d2b5ed933c7f4a09b3d81400cd6f071cbc64452dd62ed092a2dcdfb027c7e81f927c5f09fa707c1a8c22961dbee2db3a4b39e41c5a6fe65f98e2e3cd28829eafe1f89b667dcfcf95eef694caef98a6f3a738c5e7093a7b70f7fbca8d3181a3208703cbd3ee3c58314fdaf11335ed7f1d91f3a59d03977ca9bc7c99fdbf9bd4fa7696460944c472e3afc78c1aac415e2ebecec4b7514cf82474433cff12e5529c4a7732f85dcbd3ccdad7f2a8fe8de6acffcbb108f809a9db81619f968a9a01e910ec594a0bf8c7aa8cb29c7e16a1d59bbef6452745499cd4f85f10a5613cd8c82c5d31d37e6dca0dd3fd20f1d49d11f54c6a99fe1077c17ba052773a7c0043d66c929294a81088355c27132b974b98fdacba10c2677e0bc5b073fd10a79518612055a43d1a36b18787d11aa94c6de015fc381223f0d288473c44b40d1b6660e051aa09986d06505e0f6f45dd9a38fbc1e9063ef572563dd154f1a3731435bf8ede4ddc53ba176131069c35629442cead45f1049c7fb5a2f3867f0a67a0293e11d2fd2083a8c0007439c8020db582194fb54755a348695f84e5be7f88c936f93cb39b6693b51c8d5f9dcec3542e13b4504b956363c7a8d7834425c9501e7f563260a78bcb9ec60955d6267f429df58f9860a5c0a697cdff03868fc4e27ec67470729545fd0a9663fc8a9c0324d6cd85e60da9dd15a6273bd5412e7508139524b140d963558274cf2ab894ebf17a24bd692138f640a95b7aef99e4889c70e4f67735b2208d32abf1938032b7868ffad82070fa49c38de74fa0c49225bc06cb813f9902645bb3744aa6e2324157f3f89a183da375e970dd7cc475d7cd5730b7c960b2e006665278691d4ad3b28cd43b1fabd890e1bc14f24eff4c1ae66753081b048d53bdfeea12d6ea33f5850741e89f52acd0e6fe549f3a3fdcc29883efa7ff526a6e0e95c800403443d062a188d15d97d661243227e33542d8d61bb44c3773ee9e063fa5cb1c3a31528d9b7171d3889cbd88b33b701e8ce137087d2aa00ca282c6bd82584c0a598a122eba449bc644c411145eb3cf350cfb1303c0a63661843b1b74afc6c46c2da9ff1719275383f2981d1950bfac942e858c56d1889e6a1e60703108f64eba4b75f9399222c92d87e6b753e69f3c5b5c1c2a472355180ccc376dda2edae302c4672f75c5d638de957c43656c98ca77edcd29e679244cb836de3285ec336b83eb0bad63fe8a63cec09c938c1b7e18fe4e17e473a947516936b955b0f44e612a6bcff0799b31fe583c6946f598b2d32c960bf4e6465c3ca9b4316791803b2df4c889959d6b655730c6df95e27f1ae0317e01b6b08f9a30f7b226b629f7ae71a13f0d92f28e7cddbb03e961cdb7602d2408185bc0aa3269ea754e6923fdebd30d543279c51a6d279ba9c1ff70ba982ce385405a288a8f6af0a969518103b2c7650ba3ed822c01d60cf38ae995164fb85c26ebd6722c1154f4dca803972936963746cd30426069acce10596f46877f71f6878f202a6b28dea9f61eab024d74335e62aa94b67c745ff8fee3a271c0ad756aade2fab3dae324b90dc861f5bfbe24bd43be5ad926098b3a88af5effa8815f622ba4458a5adf9b9cacc26734009fe33b91b6e6cddb7e90930cf5d459f6a00e40b8e55c752ba0a63e094dc952ee76475635d75a232c86b7e69ddf78240c2605511dd39117547d56b152407c935274dd2428d9de0a5ddd4252c7f921193298297b45915400d22e555712d931069038efab9ff60b248f3dea4ad2ea60894bcdd7224ce3df2a62f091ad97fbd824ace4e49935d49cbd734511eda3964e1ecad4b07ef3fecaff1c29df40c3bd39561237c2fc938aad94ac4be4bb0f1f1f4e180e180015f3720393809119e9936c41ea146e212d86e4c1a28d83d062426a460887dd1e546856e6bfb77f1ec84b2b76a54e3022ec51185e4b0c0a4d4e472d3f70e390548117cb56ca6bf7e16d1b397d50fdff7ead8775974497d2f3b987459844cfd7635d04d792f3fe00581414c121c83ff57b25b676de9ca295b6043214ca193710ff1e3b27bd0b7ee7f6787bc10854eeabdf0917803f3b830ae5883830d0d0008ab787bed780c25d3da9381c81097576631d7fcdbac2073e11d055278636b5723f8a8e1fbbaff3731d50bd11b328bd1e9855688bdabceabac59fce7f31016facdf19bc72b3e015a08949091b8470195d3e1a3f2668bb095ff798f0330b5b885d9215fe67e906b6fbb0adbd23f755b6a5f3d4645a5336ebd748eb4a5ec7b20109887afc80d921c6f6c299aa9d1273fdc2bce55f28ae3c5a8dc96eccc6eef8bba603dddd037778c8e06115b0afec43aa3660ef0348677e97a06f2318797ffe04a887bbca37f9ec57b8b8964c68b17b2b806de861707bb829c7e3f6795b1d34aa99611d023863f3709a44e297efbd0af6bc00df0e1b5d1c507487c4f88eb991bf0aab1758f3039eb97081e21c51c6b6aa02f0ec055c9168bdf53ca7fc54bf178f002280c8a086cd5693781009b7fc9a507a396bf5b5535ff8c85d66c9ea5867d259b10566d70c14ba213bc02d304ea8cfa8d748dac6e3bc23309460172498316bc0d562a40a4583b39aa2d917cdfe137fea2ac10e0dcda98605f79e3bca0c6b762cc237d1130165d51ed81c301ae6945ada4e434d940b20254c2d88710077816af9daec8f263c8016974ffdf75ae390a4ece9cab9299e0ec00a0abb4c5ec9b28579761de066821fc3e0a2258e6950b515b01d3b6cb6c044c7a4f0b554fa81c8bb177cff92987e5aa0b4a03634059884f9ca8c0dc163bfdc2cd8ff6c13cce38c44744bc9def2b07429990127fd55495d92c41a6e300999cdc9184f98adc1a1a735355b89dbb19dac8a1de59993fdf9740b0e8c6f77d53c0e7b733d180f5125ed80d4533b8af936b71d6a4f44c8983376a528faadef8e13af4f458604320fc4991791b563f1f32c46199142b7ea197671cc4977511dd7caf9bd0517f7c1156eb9586c66051b218aae8f4af29f328d48c59f354bb6b28ecacd530c38b7290e54fe146c22ffb171e40c98462a1403a992969d1380e5e9b185127107201a6f429be7210feb9ce2dec534d08be07a1805d517a33eb9f0f61ec50047b04b762965e68008ad216975b9b51b5be2a2af8ff9897223019b0df3296dec2506bfe8139b1bb0dc358338f86346e958273cab2e9f3f4c43d85d077977918f82e588e14be72c811d22528db2802361eaac4633751bdb7217dc92ae4189c2b9c4f800b2a779ce451262bc6a41c9c1bdb1eccc5f14a917eadbcaca7a0592624f69decb8b0906f2a27e8a9526e1f980ccb62e1543cfe9585a072db13ed2c0bbd5e2eaa9fcfb314047a6808e921523a3f110ba284605168ca470aeff0e41a437130f2d098398e365dd0d5dfd02b5e71f9de8448bd0156642cb748828f5817ff88fe3420697e46a646f4bd7918fa674ac1497ec4d77babbc5b354b3d69e240883405a0928d14fdb279fdafe8f5ea1507824a168885362c9ed5d1b074148493076861bfc443f78949fb531bb08971258ea95962261d23c5c273b49f84b61faaa365fd6201a4bfd62c1e0a1a60c9c90cab612bb50f8d525e9e5afcad67f140609da25bf10a047a5b1bfcf89e4ad69ddf5af67a168aa8476ff42b199fa0209925ae66fc602d7b3d026d6dc96b3475928881c543cd72d9b7a7aeb84eb216e704898b65286dba0912bedded57dd75b807844c7463fce5ef49cdca85f53c60b11465a26d81589c7f44e903b9e2fab0d3c472f8c1637ff9a90e32cc25663be0b7e38dba18314689598e581ad103fb1a876eb60cd5af433066aacf1ce0904abc00adb94b7fa44c9e4893262b04168b7d6279ee3e80c9966a1369bb18caf5d14050a93ec2f6e1eb905c3c5a407ed8603b45206bca65a559b19400ef1b37606ad4ee550d174e101de32564fee23132ada1c227fd10597155b4d21900d56e1220afbe097e44fd7bc89eb5715416ac31e1c7f8b88cc6f1184805b5d8d77151fed7e535a7f16b2f0ab2c1829de133d7854643f209e99f279d309096d9d20b13c1a28b039ab659a49200e99bb72e0d3bcd02148bd415705ae74ea8c05872cd9ce8461834dd660c10b75ee3f0e94a0dd502f7f1741f0b264d6c83fc7fba517a82c18654c9075444758f4a06c29c30aee47d80975e04308729e8c569ab2eef2726d8f6c6c8d07e76f93d8d5b5a6d2648150cd692ffe793546ba93516c1b669024dc12592a9f5c5ded540b5e2a39e7686acb9ade4a7665716e0dfec959b5d0380592b2c86c8529fa3553835531e101aa086f6db128f5daebc88b62294310a18c54bb54e63f4f9cecbb2cc25d68f36fca9a0835e3da531f9e41c744d221de75317668e8514251accd690030426417a8610bad5141bedde06e974fbaf111333c57d6983d5390f7865b6fef9b8d9c5fe31235e4557f489cd8be69cca147a68e40d65939a70b033d95b1bc75938328807cdebf9647a13f477716d156037b223c49ac1698dd0e09b085170feded74d466e8bd2b40848559ac5e8cd66c9ba3c924b5870603ff530d928526dd4a0e80f00a5353c3f6d0cf02636222e62f67fa7184096c87693f17c1cd9a5588db19b113e70237170b8359fdf8fa62d0dc6a2a3f9f263b630849b55924956c8548f09466e6813c2c439bba25611e13304aeb2b45e2b3fd2cd804eacfcacca4060e834881c90af0a30200fdd0392674186b232ac7c3dd5fa9178c111f2bb7c48d32bd83bc5a178678ee86cc54c572ca610600e69422c111cae3d330c51801870dc2410da2ce471be17392a3a1996be2a493dd3cdf2bee7ad23caf1d7006a7b84ea09fb45052d6c326eae3144e51470fa3abc430c5a269bb4cfe3be9f5db5cf4a6ec494ef4cfc87277bc47b27baf7b3c2cdf48fe9045ea04fa2c4d95e41633f986e4b1e14a95a5ed027fa243fef67cfc3e96df8adbfd5e006d377605d8938388708ae211022c7a196a431544242c3c811ebe64b660a3522a3574601687981bc713e9dd402a7794b0e0e1361aa0f73c8517274ba317410515102a94764f3b0bc730c49dd1191d6a3b32869ce0b0430e26dbac918a1a9ccd266c1c34a6597aa4a3f91a2945d4d69be906a84029d1aa362876ce22749f4241759cc8cc4d0b496b85e6b07fd99642683646fa449a5d26c622db1eb51ce0d6522ab1be56058bb2986ca1e035762904a493942a552e93671493f929a7759725af17d09a8b9d041c629eab439bca83a2690c42e45b26b804882b24b66c7e29966dd645b404e20ea916c16e684530fab277bca11dbad21da92cc938d8653122b9128aa1bb9a2572395c3c09b4a39318e662b27b13765b11b02d3701e5a29335691f07406fa12ad98c863c65ec3030f3d61ba6f2a6ac69f5ae7a92ce074ce203504a80f4181f1540d271163b8d2c3807938624c9f06c120355cccd04a390a138e3f804d5c280bff7cbdc1680463f47ead0c05affe96b0c165fad7dd40f47618f62c50a31d7b05e61bc0f094ea8624982bbb6346010022687ea2d681f587aef931f24a73ab581cf4e3040ca544024ef8bfd23b98c5512e085777687192847330df2cfcc2bc3742ce8d0f7f2ec203251c1302454ca730085a9152386bbc6ff1267620e96b228da81b8bd8ec65a345c4ee1a1180b5cde87585b0237d2f7e0c75a186631e83e4531dece5a1c15fc1d570fd587f484616f1de661709b039b8b8afe0d23b9f7c92e11e414dbe42e2129f74c640f0329bea24c08091bb9b1bd2a6382c4999d0324584d0e9837945a8081ee1080d3c278d689ebdd1860d33fdd1159aba21e8c38c3c341d4d0b541b5e53354fc0d23b20b604e7e8c72151b345882521b76d3a1a6a095dceecba37603e9d92d56ee010a04d8eb3bff964109fd603dc002d369fa113addff39e809ae6ade6b3be05b2046852db7685d4dccfec9d5b1ff929bf927ecd022639d22c8f4191f4cf1791890b46dc8ecdd40d9e163565fa6a89b735aac6e834a34c3a1a364245628d3cc53992012ee488c145b92591df292fc5bd574620a4eaa0759f9bcf5feab76a567c6525771fa0a4b2f883303ec175e1daf5284b5b74d417a0630d9e8e3f849c88cd74c50cd78c012007e6a7a63674a642c976848d1ea2de9b7c1692ddd4be80b14a2c73e20606c8e534aee6a9f4132da2d06de501e5ddd969d7acdaaaa766d4173944e9b8b02762d66177dd25d2f9c9745d033dfa7760a40b65a63ba68db638d3e2d654d9f3eeef43a216d6350f60cc384321a5ef3b85254905686f9ca42ae264d1d9f8823860da344eaa274a74dc1efc2e3c9001eb7e1bacac1a5c8df8c3fd2013ccf871a2aaebea124e5335ee2da69f46e324ad39e70ee019e605084c5108aa5b2f78210174107e9568c07f78102568b8db14760de4323443f238a8435236e64890ab3dedf6ec2a1ae23d7a59e6be8be0d90eccf8d66dd6c9fe687a174237f44db1f2a8b4e46e6894af3a67bbd40638bfb344626a06ae9782ae695664caa3d3482b84fb7dc214100c85fb785b3bab325ed8452e807c34f72091884b9ce901b671a09fc2d0ea8ee3278afff89a1ebfb4bf8507d1dc4a8291824fcb43e3a18b6557db174be71ac6ad8b9660f7774ff169cd0d8959656e0a69760549114af6f47ab023b2ba4b5ffb8bbe515de60263c720e5f4402690894bbd6102c61f37c00438c52b7840fb61f8b7b0c898405773f4c08140e6505c5a8ee212bb15c951a47add4ac680473e2991f3e706a5248d1f7092b2da312b5c1792cd156093ad6b6ff40f24a91cf98331b6e885c080bb81831b6a1802ae6380c2285d3eab5035c03587f257ec99ce0ccb58c4dd125201e6b9b966feec5d20dcf809c48e4641243dee6cac6ec30330c17e5b914e4ed157054ccdff70f3281470c65ce14cd4938ba754dc06e9fb6fb73327126a62301e03c41455896c7c80a02f17a2769b7da4a450c6d25736025236810cce3982be31bf0490975a174cae693b63f20a067608576af8dc5b992f177a4fea048e31b5d14139fa8cee981b141e3385cdcf47f27dec5de188454b10e856302f0a9cf9ef0fc4eafe16e824b4eb1257ec6482482366a274b3be184785bf0f475462ee80dbfc479e217acfa1e7d388730075d99198627632753bf31d5f6b6304e22c8ffeed61d06e52ebe625a99a2cb6e65e86b1a8953648bb62fbdbf2dec8f0ebc8970c9373ccb3b9e71776df66d28f137b7d8a1aed349eab8bd8878e29b9c077353bd73aa7af123a3e37ab334f30e9af6a28e9de3444a47a5fb43b5633069d6404f08deaa50aff9354fa884587a0e29b29aa27b4b4dd0f4587303e8f51bb903e06b2a207e0f36711cee458c49980f6448bbd683feca04fefb3e71b63d4c0a3b927d1c4acc005eb1e3699d3cb237e10b19f704ce478761666789041479349caab0804a6df7b8678d16cea859a2c76e05319f29111004f2c0e2db67e4440c1091e2c513f3eebd13eee5365d022eda0437f22f25726f95930f4601937615adac73b0108871df2e40a441fb3e2ad1d6557d1c61e1e97d288edee5ca16be23fb9330d194495649d2b20a3eb94f1470c0800e8804ea5fbae1363f9f51fb10ed9e60a0e80ac9afd55f15bd52dc453beaa6875a00d12a5791ab6c468719364114c9a8e2de93f50841ef697710bca92a750e2a9f8f2d760371c5ad0193da5a7c79c1974cfc6d4b105ab275c34e889c6a31295c53e2673181b2264ace2d2ba4f391816f0e7aee7bd36159e969c915fa3388b31b04f4d6904d6bd93fa3b13924adbba41b0517c849f24f04c958c5f66822876617e091018fdac4f851f989227dac5eef216b8b86f5b4ea00a069b8fca5e40411491046aea3983d528c080ecb7aff873404d3041ff8b9946a714c00635202facbcf8aa4b62cd81c934afb6167fa5d2e40664a9b7b96cce5708495acbfed4f992ab104abf6218c23b55b2481f653a2c7297babf8d00af641cb0f1be30a1bd7100a50f2a6a85c70192de089650ca1de21ae8b6e3f0b4bce7b21b3009fbc2250e460c923e2778de09feff1c1462acbdb72feeb80f4cca65e3c9b52810f42bea60285ed0609c8849e898cc0a78a66278e8044a9c2d79c08a9da7f9258911726b5820468763d0aa903292056b6aadab94171416ee4c53d5b1108a3074217808304eedaca86bc2b7203883b0d7302c7e47ec23e7d27192a1003dfd2641ed3be077eaee98d7abd8b2f919514988a45eb93f2680e84c3a2137d942ce005ce4697e2da1d4c45f0a5d0b3091771f616ac1c1be2be753d9fd42e8bb89fba8f6aa78df44efbbda317db5fd8a0972efcf6f78a79f41f8fa6c499b6ee7a716afcce62fcf5d49b3552d8c7ca333d25aa6d8621ea1984aae9b3fa239a6a5aadc09b18319781cee228a234aaa6225be4d829fc201081e3600a8525b9c1a06a4e3781136940a87a26a49e4cfcaf0a335f0dd4acecc7a074e78c296674002176c16980b67bfa7bbb7de10100cb2cca5b9c8083ae25021e82ae00d6f8715d34f60d39182d101395e3d08a001828bf42ba504a86661f7fe83ce1bc5e63694bce0a730a258ebd2122c9e06691d62b102de9262b4cb9fe6348b8b6ec9ad6a5728cd7305b5078eb06a3f961d7c77598c78d9f4e078982a165e495f1504bf0542dae3128962099e55a1b62e964e318441dd1ffac79eff154fcf5c929e3a200f03a0637e58d8f047098f64e254da5afa5efe02f92f211a83f9b33240fe96b213ba95f60db4e156791bf04b41fe63de5f1fce326926404ad893a1e9364fbe364bd4af52c57af8d21759adeec8171168efd005e1ff4d3c009a38b6e38e603f62bb00b5af7bfabe5ea39605bd5ebf90845685b0580b61da689a5b322e04ec7e5529401aeb4bb0f8718267bf79afad9eeeba4d96068efc6bc2f7a8a1760d2c873f2958c015da90473ddbcfc0f25a7cac5c450ec29b31c600a14bbee26786a4ffbb95aa0432ad723814b754e011040279455412c58082fc26d2b542e13a4ccc4422b9d148445355059ca9933f4f96553a3c5a9dca66f50ad6babc5d81f8c9766da67208284abab49c98d57101c9595f01c7e5b0ca17e9f9df580cc3d8f49e0ba163dae7781dc1f79b0499fa1998cf6c258739797d9ba1bf49ac45d0cf79b6d4e70f5356b19013aae370b7d8706ff1a9e428b7de911b7caa622cf77d9e4bc0acda79a86b2136feb97ed8e661042eb7da4ef8d37a29fb1b9bc04eb915196459184ac7452197ce9647b003c024689f06f8e7fa51084e2f9b9c35d4e60309da9b5ec4d0e3a276035dbfbb8791043145d042f1f7ec529de6df8ed7c3fabd485d86d503f8701d33dbdecb01e46285078581d5d1227fd91da7cf4957bb33bf7663233c8eed4a45fcb3dd02691572f91e00f3017c9383d3eb03d87ac39a3a62aa02c38118c364dbfad5f74562d6a3c05003d3fe51805160eb3f379459001a12ef6a6d7369ea3883512122351a6f8c67f77dc3bf837b7cd4c5ec85dc28b1882afbeff82e32706e51f499a11223e2989e146f3454f262bbb78e37bb5d49ea8944acdcb44a32820995b131ef477e328af6c2794afd279ec281e45d5b8433e5caab676e4360aa0803feb13902769b70bae3a8593a6c11337f41002b8a5966c2ef6bc66df43e672672e04151a71b82a0a4080a490eba80a88618cefb0cde4104eb1bb380c1b14a239de27d8f31d2539b7d3bcca3328b5967a4be7bb4d40768f395f9ad13e21b21ef46ccb1510753bc1711df5e1d4cb8225f155259abc7ed116f6e49cf224b55e03d80f430cdb618de2b935ea40118e02d3de93304a2a97807902a6aeada2ec3167661aafb776d8117a6b4bed72f74e9d4fb732c5bbc451dbbd06cf3b8bb4264e3a564c52ac30087815da1fde2f34a4e5dbcfd4f34a68b213ee2b87430e4827a10609f94890bc56c43edd82f48b8b70dbb67bf7546dd87a73380f94861013320f6a4a6281a4abd66e85115b68329efc43c569488d585603a339b5e07477ae47782da196bc5fe13df8a811734b598e4231022b7ac4074b6843fa763644799758ee71b75f91ea824d5d9cc6db19e6ff4e250bc377670af7753deb7d82bb052e691720af6c33f475bfadb4badf6ca2a083f0da000778af756334719c67339faaa7c2a11ba7bb5e83698138bdcac38af4506a285ce7b598ba741c1b904e1240bf5fa7581eec6ab8384b7043c6309b34c8b2a7ed1290641b7bcbb5b7cd761112d6615f75101fc634daca4637bc370039319ed4e4ad135ae465d638475ae9bd5b1581e1b2748f16c5f492c17c89fe6184c63df1a785f9a2537644f9744a6094091b9a6256bb27072e16085005f6a46bde08a3a4fc1044965721cd8db515e7fbb3183b9d8087838db472c136d31d4885499b2dacd16187dacd115d3401d523837afec9fca4f181d817a521f7c75e4744b7f0f1a2d71c8ac450690f029dc766d0ae62540446c3d5f8a6d3befc866af7d8b44e1f7ae6dcc81d9e9e6733e0b7b8fbc0acf9e0b993b27d4240c960c8dc415dd54899f970158409d62e52e69b3bcb29c99f2883921a959235a2c9c1539c6c18b8df6dab90f89346ebe35e2a0f46ef72339a7a43eb505c0b4d8a1102d2929d0d68b959766230bf4cd70225cfb864cbf89ecb214f0cd3c0a699873383ef17fe684b98ec9bd824d88695afd5ed75089897a8d46623d62a293028bb0f7894c87feb14fc60c31d14bb78bc4654f1323a11a5f74293557d027ed05968d60e6f28eacf662b14217a3dd51be495d77eb22f4d068f60f02bd27b433ccfc79bd22fb8004e61c52d38207f70242ebcb2361ff60e2663a8f97ffe15ef78827167fb544f00f5b1515e030d37eb44a76f76f8dfbababa11ec694b85604081548d612bb0896684815da24ed2622f2b295a40fc572d826ab10c7d1ed9aad32f5eb9140ebae560618ac474c2e6a2e42b3d07a5828009077ea98e0fe6ba23508f241a55ad4e42bf38e0231c37092203585827cdb1c5581295fa04cf8fce4fb3ff0f500f94d10faa33f22297af5e16f8c6939457fc54be37fa2b802d267dc663dc79cb9dc6a913d7d007fee414bace71eb0eeac4b0adde0dc036f50d60beb5b38808948aef1d40f73ba3f37f1e0a0a5928b9ccaaab4dd2607c4a40847b42e0549c9679980958148d25de999a55d9602cfec44f1e68faeb652e757fbffa7feac898f6add76af757dfd33ec2c064914efa00b2083e6fdf5a313cc5b75e6fb1f2fbd25a60be86de8d271c74905fe072ca4d62d96335ec750eb1b34438a9672047e803d21fa9242017aee6af801a17a2623c48f97465a26839b5d6d44538582d640e4f6c24b615cb9f306fda9a02628507615c9c90c2c4e85a6efd565722a62f923bc23ee3fa7babc3cb4db8963ca1d166411fc4e1a38783e90eb6ad34145ed8d0f1c1ff53c80b0394dd7c22e061c3e1cea1dc60ef87c44cf4c54f421c6dadcd27042f37a4a294476f13ef91f1588d330dcc82fbbe6e89bd9a4034a4a4931b921acd2a06726317b863fd0779ad77e911b76148382746516b105e850b074a51cb98d9810885f22913b1667ea81df488a3911f1735927373b0c2f754c1e34f1f9d19bc02e8d58afb1853c2042ea662cf151cd3125e670511cc7a221600e33f9fd39fff786ae15e6a14adec15fc0db14e57ca38cf8e10f7e25326c1436748778edb44bd2a226b141fb96606a62272e3602c6ee4acdc6301e5129552b7afdf8fe31585dae48f20042437826a525a679af889a85a3b328e9c8674fee2bd0239344a6dea8e23dae5932dcc8655d51901e21894b0c380a37d6d6543b25525b5156556119e4e9b460f3f0722d095b0c5abb070658fbc8c66682bd5dfd0855061f5db4c9362922bb588bbfb07d3bd5d8ecaf2906264d71dd3c4f2b193592628c22b26ba707e87904209440d00036e2c0eebe9534f81dab95710fe4d6210535836b233c7494ab8da1158264d09452d1612e306b08a65fa18a2a3ba9d1be437720cea5da3f4afc596300240ab43b80c6a9fc9964682bb50fb8061d8b9d754eb1b2490a531df93a4ba8bc0309ba8173943e2dec68ff0f881fdb1d9d9f5befb8a0118662a448d9801a508e235e5ed6c69ad019e991a7743304181ad88382fd50acdaa4c7d273185087cba6a012569b0a21185807857bae43a0d63c402f08b3c644ba7f6ba0da783fd635d25b6cf5de45d72e881c1f5670ffdc36de17bc7c84da0aadb2c702f01ab755568f55f0d052536bed429470f22866380dfd27613385eaafe084b9e496175f5cfe89d2927c2c3da4a4643a566c8a691f0b963490437b6f14f17ac435ad75dca2714b605915a8291e6a80402ab60198f887024fa5e984e4ba6f124e34111d956c9520dbefaf6c0a4a656a2dda778b01395b8a692022132a108105d56b53032a58a9bbc5ad780b0bf7c1cc2927763ae3ac40d930a43b914341b02280bae272423bd9b562e3b394e6d45db01e7f36c7963e96fe4d71321286d2a63032e16be4be616e9a34c6a6a0f5a7c5aa741190c835d6d5ce4700f6871de7fc93e19db20a13f31791cb01bf83467fbd98e60bf50d5016d227857ea7daddbc3c83c18ff8f7def9776b4e0debcc522f0b20dffd654762f92e09feba8948a464edeb21c113eab1eeb6d6b553989ec22a46e418e5c36539e9ca66d3dd4c57c868a152a830e87072b721576021185f44548641699d002b3b5596e5eeee8e9a9ba03d0ccfdf17312495d240e5ee95dffa41cd36c0b77f0000600cf9559cafea224401f69b9f9df45073a262dd6e43da82b393a8436be9ca15281c1794c38ab7abf4e94402e1600dfeee16f0196c0c18e86ce99ca8a7bb4e9d75d789cb459ca92956ca9e667f48cd62d33bf74b3579afbd8a4bb1a0f9b13fe08940551a070d8e91d5c1e80b32ac93188aa8c03c27961ffb673ba0d94a0447e98d1304a824d3512dde8b9819d9162f3d327b2ec20713dda476a8f434c6604d5d02c4696da77628e88b9dc0bef04648bb5c527b381c75b0640b584bce25fc18d1ae33f45c167c602046ff17f78a28488cd2f352a59ef0d48476ba4ec4f38854422c65945d785063122700063b0ae554bcd04521f496e0f76df58125c0228b927ea1be7a1f75e6a757ad4ff9e1390526c0e569893b217b40b672db43095e71a3a1c603b290ea2debc7dc655444354111d4819bb87efeff11958b007b1a50eb3fef47e0822c005a2d07b7e91f2e35f0ec73bf67e14feae0d8761b955fd1e96b6b1c75adee9dfbbc964c973c10d6261d149df18abf004da551f7597ae52f48b52ba5fa41bdee6a4350c0d5293b7552e6c5104f610cda5bca391bfd024ab451e9509c62408410e1803e2433b883472e676f12cbbab0cb3f99361ea38120cc6023ae7acd1b63c1d05243dc2820cd5798ad320c1fac96dd4b71ccb0bcb082484097a56f658a882ebabafc22063e3e0c8121a39eef488c9de067b30c0ea3ea00ea36db12396f685742d79baab06241f9f1bc576c992a5660bfe03734ac71c5c2a527e3e24a9658acec020ca3aabca755d669caf41d4f51d3161138d1e572153fd5a6e8b4c92989104915108255ea849f16178f1900cb7f11084c59c3ade325ea5915befc5bb45deb7252c6b30f99a4f1b96dc16e93a424dd38a3781b351c4c84fc0b1bbfc96da10af2897ec3a578bbebbdf9b5ad48ab7d7a3822ba88d9b5d15dab8b40e9160f8c9ca95e7893309fc9c3541fb2942d73b1cdb839dd52dbb55a1019305d6d5796c95239219d3693a2f9f308b456fd34fbcdf91283f4ae6beb45068b2a142d185da46635ef9174e13a2988213b7ec94a08c77948c1816a10b26acbf25da31bd282fc280d5b1e641c8f71172facaeeb535b6303eab2983fd893156b5bf31ce6a81e469a5d81b3dbaa8e1d515f2cfad3f167ac2f9c495918799625f3c980970d5c00518b6e235f407b12889a9eee597cb63365c534649dde4c4e834c60acd05aff8412f6ddbea0e7facb2b814aa73731027b6ade017b6f9b5e1e5a8b25fba095ab17d9a64a4ad33ff78fe8d80e5361af22856cb6234915bb37501cff9c0725b5402ef6aeaf31ce20113876e51de6ee982e87ecf7a54d49f446a5be8c4aaadc04dad06c584f364edcb41ce6cf07d024391f465e535c01b00d2383a9dfcbf65a5474b19327d1380679dea10ebc4d2184982d642c0ebe2d86591ab552b210ebd428fbe1a4a868cc96f062831edaecde815d4ed63c87dd01a80bb2e3b8a587ff50c990669d55b57442c6bf421a9cd00bb17316caffe3b86454e0875ad2e6b511b5d4c872dda5c09cbbe5b99e3bc95c11449ebeab9b8e7098a85ba4ceaa1f9abefd09cefabdc6eb4f4c027d7f862d2a7d6c9e5c1378439db9a98e1ccecd3745a487ce741712b49ebab04435a8d4d2935f4d859e7acd8e6a18943a3c53b15a133def7867c32fc2bea4ef39830190f9478ddc2dec487949ef844be519fedce0293db6382e7b839855ce9ef81e653f8d06959972a60a6165fe4bdef39a9e48b904301c512644ee0238d849630935c6253550aeb86e1975b823a458f99db2058ce399f280cdb6bc24a1d3ae09453339ae9638dba673b47b99e35f942499647ff9dfc57c3a791f0dedf71933ec71335a0e41f68f8f6bb4f5fc3aa1739ed51c2857a312b29e84c6e6c99b3b0b97c357d5278463f8814a41c83b8fe124ca0fa6a6a313798a77817f8da327ca0b0d14953c249c2e7ef5b98e51c14601ddaa82f992c09452f3a25c53d4cd707b3a10bed6e304ec103ac8bd4d4d8785a6a060a6e47b9eae8e46a426a2321c420d69e1ea3445fa49a8e13d45e8a22a1644f624b9f4b2af51b6569987aace67da8b0ef45f28582b181c055924b2bc99695ac8a2d664b8d312e9ff0b8e48530c4e31e5e254e6fcb85a937f5ecf1f9b3aa197e18b113edbcf24d51523be482b54b42b864ce355cb41f982139052df0382672d0cbc9d8f398b81b4e344344036beeca2236a086a8b8470b5203505dd4b366ae0b0c854d3d287d228aa49d57e1518b063ba108b0812c8571a38d8460bddf399b6506f2f671711c750e86f6734c7e0a6fcf9ac9a5e390d246e83b170fb37ceb482cac22165fb9844c1263ca3f0c74be6b5a321b242b7bf52204597fb7494a19895db02f4256da7b08d2f9e7a61a4b4da247ec40084689f4984afa5975754e2d75a6b5a1db0f5c3f2cf0d6f640e61e38ed550a2a27fbb17c518cd1e913d58f0823097dcf95ffd9e87232513198dd663883ba5c478dee5efe4cf14aaa89a772fd27784a2311a227dde4d19ed8241354f4595337f0025b7ea6ac4085776459ede8ef1004e445a0c50ee3c2c9cd270a02441e57ef001652cbbda9f489862b1963a09d2bb87f52afdcd00dc2573fe36c35da5f20e7cf262618e4c864e840c47369766b4c5363d1eff6cf4821ea5ef8fdfaa24cfff086e58aa3460513040de604b45c458765c13f7417e3a45a5fbbbe68d4073cae6fcbddcca7511442ad30a37bdf349b248fdf8c9d1b5103381aee5635488c02276d85a51da9402057141e5dff638c0bc8592f7e389fa21f5cf33c7830c2f0702b54c972e04325a03de45bd245c2c89b89fe8a4953d70624a635f9b1dca26d9457b59c1ce878dfbe1fd064b6465926c0e2def4d549eeda664f547bc57594131c539e0ee84fb143338d75c1caf59965273fea20414dcfd82983a5032adb88e84b1c830212fa964b62344e2688362965a7a376cf0c2763f380567a4b64faa955d107124da63fc12b38b6b70642a4e0d0e6111791c58d9215ae68c79b44f1366261ae373321135e1ba649434c40bf33d1c164cdc9a0a590520e417d7266b1147cd8c188eadf7f943d66e7ff19dde3d19d08ef2f3d1ccd3badacee1d49a17164b7051526fb04795d3ffdbd8277554c4a55aec98c22fc351d5145b6f3fdbf98970a7408b251362cadae226410d05179285f0e9e05ddd955c382697cd936177d11398b6b67a1ee273c12ab2eb1fa1f2aa2ea6340ba73c5621fb2618a41339e0e3f144015c269ed783b50ca318e160ab23c116572051314bd21407e9f4fa7c781ad99f2007b323049aa8ffb6b0c9429398d70a155a6c25c5719fb0e4e74482c56ea348c80c2aaf7c7e9d0b3302e201108500254163b1202f9e2e6592a7000d3b526afce72b2e3a264dec8ad5fb89d458f861d5def178d34e6185059a716c3f694ae296eea38632add4ddd3b42cccffc63651bf5d5f95c9d382493697b226fa22ce30fb61d5bf9af04d3aab9bc7157de6e2258d5ba03eeff22cf90eeb4c72c15f2833c7a8f691695dbb404d04ca4804543c89666547ad4fe49c5790e0123c8f1c6e05e939726a34573e3fc7e9843aaec0dc2b452449c57228c16b7959102ea13c7802080b0fbec78c31fa473858f0fd704d6211a3fc318cb2db6e23f9976f9c82f238e4000c3f02ab5119e6fa92fcf5319ec6a9b4a8c744c63fc8d51304f5ce6b252e07fc5370ae050438ff609ab60b02d322c1e9b06fad808c898376aebe189d9cd24293f1fd8390f9399363f6ace247a8de30bc2c857eb1aa9a75b0d98edc50372745a971376db157d087c843ee92c5afbd5f726611cc97b3d4e882c4cdca9c5f9fdb52ea617c39fa8c1bbc08cff508f71bde314a237312055f6898ea8d2768902bebf3997e95622de7f61cd92e04bbd9fc629aca7e8e314a13de51ae8413224e3812b6f05f0cbcc99d9526ddb60f96f3dde0c0618927b10e7447719fd7dd0d7ad7d5514889f53c228b0d2edd278cd1108bf090128d21915e4548d53f04958b96264a0c5ccc040e0444b10c4f108855a30e50340cd771fc7cc7755c7c6d0f56c18ad8ddea910f01640e5614883ef73df4eb4ba335f4405541bf3ad789cc79884a61708212dabd244a25e0f9fb266af66fd964efdd646fb965925206ac0cc70c830c9f14d8c278f493026b309e7f52e00ae3d54f0aec309ef64981298c673f29f084f1368ed349a2bd88258cc51c2d05963023cb51dafb8f348e6af958e32f6250b5613005045f13e01b050ea1c061097048021c8e007744803b3f70c707eeac3018020c820083355ef2ff0006575ef2f700965e22c0770073004b2f09e03780a5976afc13587a89c6f7c04e60e9a597d700965e327d063006f005b005b0f4d2f815c014c0d24b427c137802587a89f44cc8780960e9a5fc3c2280a597fe97c0d24b315e092cbd04c4278191c0d24ba387008c77003e024b2f89be0178073602ebc045e018cc00bc000c8335ce81bf996bf87305e07d1380f723006ff0a5fd0f803738d3fe38f0eeacb4ff0dbc3b35da9f086c03a3f00e6b76f8d2fe06c03b9c69ff02e02d2200de4e3300bcbd2500bcbda606deaeda3e1300bc7df582378d99f0a6b21978d3d91078d39b12ded435e24d5f00c09bd20881376d058137ad21e14d5532f0a633196fbac278cfd8e33d657376e382f774cd170d0cbc678b05ef59a30ae13d67e66a056f19bb784b19086f39bb912ebdbf99f4e03deafdcd6aec6f160547ef9115c554c133e860a3edcff44ea27d922d735ea2d26f04f0593edc3db2f4136d7f647935be0c5281887068f47cc9394a7caae78bfc6b386a7b0eeb058c991c96a346968837ace1adc64bf347d6c644cff7ad899e9fe7e6b6c306e0cd98d14f94a1259bbd28dadc22961587358a79c99fbb57b439200882a098f208f0d12377935cda3d37dcd02be203858e1e931f987cf9bc441951d579098aa9cfcb4b30fea318c7dd2b127da398f69a2a02c67671c37f271446cb9f9797dc9472d475cd98f935c9c49854d694922ffe134c02c9484347e7bc0495a03033665ef2e75cdf9a319bd1d1f7b766faf3f26fd1717bcc8976d8dc23cb5fdffa25f4e4bdff3ba1a7efb9f9fb7abf3fadb9bff57aa2fd7b28dafda368ffb0a4687f0f8f48e8e8dfe189b95189f6e75870b8f6a7de624aa6a9bb8c24009829074080cf009fa4a70d5c8203b3e591e5257f9b07961253a5f79dd8eb94003084103382209964bcd0a821800154cd3a9da3e4389d1776460f8513da070d98f6afd8b30fa9559c8604a08a398453c5a49ecff4614ad905146c38794344c7aa454b486ac4f35870e77f7216062f8cb1b1a9ad9606c65816eb0677fb8c9ef23730e6f5d292b2282b166bcd66df0dae94937a670fd1f4a7965ee83737f245bed502b5c28aedce97a22e8c40446b6fbf8507fd2d491666301474c3ad50ae7d39677306865c6b8e42034e32b12b2afb219968fb9c562513edd9877d6d4e1a3d655b587047e82d964c40242417fa2199d00abbd83a16eecd73cac0f09270b587f19fbfcff2559f5c7ebe3bb953ef99073dfff33012595676d5dd76b5b2ac6c47a3b7d55a6dd6c9156f6a85903f68f13d2f65ad75a62ba8fe0de7ba2f5b236ad1e8ca92a5fabe12cde8aad295abef842cd50fd56a57b756afaeeabf2cd5f77e03633a3fc11851f415c3781187efd99b675fdbce567ad6e8f9d239a8088f805aa1c351b671c3f7260c3c5d381ca5417cbb729436f3b006e2f784d9887e4fd64cc1f82d61d2a65304abe2f95d5369d0b28a61e689421fc2f743bc61e09ada1236532d784f16101e1cc5e4b45fd121f58b737139a43d28149a53cb1e088f70129a5b6aee3aff11d6a2c4462b1f72f79750f8ef219a7b77f7af98cbbb0a1b6db9d073a1d7f05ec9a1d09ee1a7a20252113d205145d3a64b73cdcc17e7c4e596fa6ace9cea7c62d36aa9a675d244cf0f31d1f3576ca636858eb9a6beaaecbb8aa6ecaface02a43c7a9f2535a69557255d5145745ba6e355561e66f9ccb498a9eb4ac6933b7299ba2e36c5a973e63a3cd66409e95cf2221cb859eaf444fbb44cf19c7875bdfba9c70aeb9e2de57736616993373c56d3e5fda6cba6c8a9e4e61cbca801e18b12c6e1617a5e5146652dab2383fdc9526b399e3e44cca621266236fa44bbefec7b1860dd1fb105e790f2311fa158e0b59316f277455c149b49826fbb4d8f7a1cf41b528f414ca5368dae46cb5a08eefb30fed3df41a4caf7c45a2d6cd091dd25e82a1398596a626aaa4e86925ef1972bbb2b2b2f22b2b9f834e97a3ecca4bd343d9da22aa766c573ebfcc89af22522a8aa11f54bcf7acfd2b519cb75796ea6f98c3529656f21ee27934c4bdaf78d953f90f6f15199f837a32b00c2c6154b0cb256691852e76208324aaa7a5193d697945825a5e394288ae4ab851a442d0e319c1c82819df0264841a60d619df43aaced4d41188bcde9a4bc641e838ab3542862170312cce759d96757032dabea77630b3812c0631cb02d80a6c60708385b69f85b6bfe5cb8a7fc158036d5f0775876581f642218c8415b55a1ff6a5be2fc111502bb497b7903fe81cf493a7eaf31289cf5b197ab2798aaaf2cf5f287450f0c1f734ad6a1988a63f3a3effc9997ecde2ba6856538916d332730ab5c2091d41fb74767ebee8c993f7f4bc7dcf83e76bbaca70a7f6fc9e2e2bf49c99b9332e2f722e6c204f59ccd31179d27ede40ce605617c871fec402060c1ff5b99f17a43f2cbf29e8e5e83f2f258eb0a634ad2d09fdccb345c7a9d51417eac0c0515416bc6b0c2a165507516c3d984188628af07eed849e4640add0b5566a05cc162d47a87cfdcae5a9923f3ad2712e6122a74da58116a3a728f4f45d2784586892e1dae73ea46b0866be479e6a0a0d4cd8411c72b0032d60c10e30f53989925f2c79a2853c00410b5e88c1d4bf12c77ca541d757913768e81ad275be13d6565bdd661fa1af9bfbd0f76fb1bf8691b0efa1b7d8477da95f82f5cbdb09cd7136945bac9d5999e9868083c4e838b528749c3359dc504b2f7ee0025db3b89f965e1cc143ad4666e838658c784c39090f93e72dfe61f253fd6d592d9ac9cdf75676d52af7dd8f688f2a0a74e8a596e08e1010aa575e7bc7506c3a14dabc70432f3512a129a8c60163b41a7a0dd411aa02b79e9082496d3102fbf5abd86204f65b76f8575b821f81ae2d3f43f94d30448fa0d32d5f3b4b90d0715a1a8e0e775b24dd1dee9e3392f63c3591bf36fb18a8ba92f70d650e4dcd9f537c77dc767092ed3dce92e6739c7b69959f626d0a2dcdf7606d46c7af6f53df4a67c5b3025a5979494f3f4cdad3663bb8de4fc9412b9e39e8763e9bedca5fcfb429241d1a85425f6928f41c1813ca36aee9ebe44d531f959e7925cf603c14f46c5752aecdb916d11f8c95bc5fafbc578bd49abf12b1b816b17199a94558f434ab44cdd967eb7f6f7f93b4adabefb7c8c8f7f57b4f828e7dd4dca2b5687987a463688aa9fd7bc7dfd7982f57565db9e68f72e77e322877769821f7665eeaea70b91f2c59592335b2247508468b962c49edd5b7dacc51f9b5accddee62dca79becc52963e18efe1fdc1f894af386ef49a83c375c9fbd3bb7676b86ee69422f4e4f9f92a5f45b382df7b15f49fa7a991ae2f8505ff6ed11514e377e75fd68faead4963fef6740575b59934e6d72e80f8ce7fefc13b88aeef7530fdf09c75a6f8a8eff92925fcf9327c9cb7f5811ce7c7c05608739cef61bb85b44b6c4d172ea9fbf3676bf4f3a78d8bcfd1db3c5bf5ed8a6aba48fd959f799037a4cd33effa5a1e80c0528e41b4e7bd3c67e8387f056f2ab4e73f784ffd79cfe7f08f8b5d797adbd556d1dbae360b680a69ceea465b8e008d80a43d791601e5cf9dd95427bbb20b2d5a4ea62bb7dcfa1d8cea8131305ab026a3e3b42b79c3ca1b545b9645a2a7a5d9af39bf797dee3918abb0ace42934cdf22cdcd41b6884d42b3a421fca5268ba26a12ef2a1f29c5d79a9433ea386c7243abe268ad91a29c39d2fed6aac1ffaad695a08cf191db53c43efef85b065d9953542c7b9a2277f1b0263dc7fda141d375753b30642c0352c2e80f43c1cdeafe78ce4e6cce7e7cb95cf87f2be9f099aa009fad97e2e0eb7feca4bd03f34c553749c1fca73667f25b7d8d007a0e39c2e516479f52a52f9aaf253e5579cfe7832104db7d49730d6082d4d95dc523fdb151de78b785fcdcdae5d7543a85fb85b8be9f917e76040cc650373d54e9eae8a86abcde4d7795d04c189e72dee76454f46a2dc38a128e945cb22a127d90510a0e839b34baede96656b66174098a2b7b59981deb6c99defb6cea6d013ad839e77c66656a5cd5a3cb66849028ae641c7f91ebb77da70ae705b9a70c2615e0e82127869ce99d8b469b51ea673c3055da22ae690c9cd1ac4400d6a48431a603034a0e10c67e842176400ca810e6c6ca0d0c2021560ac17681002551231c4f4904516aa111568e04455871f28214216c880859625446cb0e1c00c4aac40060c4b98834d199a6086910c9a20e1e2092b50b2037f527f52936854abfee8e83014089ebc9132bdb8a158a8a9cf55bf5948f9a7291daeb6c9c2cba6c98afbca50868fb39d4d0b6f8e36463e14d1f44d07204d3e3899770a290a7a8ff494ee3688c1dda39e77b05e6bad558b81c872370ac74e6ddb58203261b3b58b226da8ffa91566aad5bb5a76514409760c39798f4a28922b84e338eef319695210852704db408e33a4ccd071061d7401f29e211bad30472a481c232633f2e884896374334e61ec42de60e1a28363d464d2009f2344de231482c87b5c22236fd198849c5966586c308a8d984c1c5fe466d464e2f8184ce868d444fb7ba28f880bbe88e545600c8bbbfb74f7e96ead75798b1ff4b47c8f658a293b7309915ef4b4bdef5c7effd85c1d26bd48ae24d77baa3b4cb1083697b6f9c7e6d2a32739a9f2049e587efe274f9d9fbfb9e48d4ecf0f85ac237ab80fce231d20800063800063427f84e56f0c8a44ce49dddd6bad9aa669331321a5482c1869382c928a44843443620149453929a5b7cd6a6323eb5b4cb8d6bee8385f8bb9462d1ded8b9eacffe7604afb28e67942cc1782c3814b488a841b3e075c42c2882dcf5bd2aa11957c2d3a7a90397ff84c54222e119780600d1d97d0d1452ee8e8a24843479f1da883ea1c746291255f4419d98d34241727bbf637c9f57948eee6b0e8c441ad70926b8998aeeb1ce64f5e238de779de9e73ce69e79c76cece9b513cd814ee1ec5f6483304228cad3dd6b84d139b7b7167576359c58a0042b3ace848cd70ed9f58482e677f4432d2d81f59236b4442c791869ee6f7f6475407e34fa3d3d3e528edc7206f741976654ea2f9bc3c5c8dea96ee9b687f26b4e4bf3faaed7f5328cab9ef7ee84b77d8c601e8e824d71cbff0ac2ed8ccbd9c38ec6fd1fd3d3a618cc22885d0eff10ada7f8f5c189ddcfc1eb1303241d248821c8d90449684205f7e30477f30ef91dee397c7263c417b4682f61f91d0933fa1a3cfc6251b7e7914aee6fa8b1b6b462ec62adcdfa3179ddfe316b4ff9e31a3a17ad0fe72cf98a2472f681fb5a0fd9505ed2313ed2f250e19b049638f4f9811932f5166b82194f7d84514e6d804498346bef86f7854c2a4c1e53d3e41d2f01f9130762fab85f69f1e1eee17932ffe377aba402a90ca5f1c77afbffcc98a7653caa41283dedfccf5070d72581c180e2bfc9175a3c3df234b1465e8d8b1df0463ac6bfb293afabbfb8b241a2ff98b44e2111cdf6ff107dab78844bba824cc5b6c691797745ce442fb8fa2641747c2a1f966a08a9e4022da7fbafc24bbc0415244adda237d241218f37f24c65bbc4931fec3100000000018e37df7a3aac6118cf1ba6e8e34e00c04bfff66df1490065c02ca8045be19c8029568ffbe4572b5e889e4a2a7f96f4a39cc4bddcddd872055f72048d58d9de7711cf7dd73b87b09769e1dc7118cc9330cc3300c43246108809748eedb2b82aad29e7ddc77796f888f88fb3f44fe21c0986cffad8bcb5f19cee22ccfa269268d7e5d8c206c10f6ebfefb4ea753bbd7baaef3feebbed0833f447b60e88bf17d8cef3381315f27c61763769ef77d20077e9cd7c93bdcf91dc7e3709c8fc3b19f7dce7e67a9fd9bff4741b0c498b2c9f43fe75dfeb30d43132dbd0003134d002dbd008313cda97c23183d3d0d1dfdb590a3bf8cd7a4e12fe3c9a4e12f0386655a466cd2d0424ad13433e8a0fd9fc4c82316b45b618efe325e13c748852a687f8d5dc89729c89726c8177f108f34b7e37ca313268df10892c67d4f823a3c2937ffe7c5127a6f0d57fbed3fafcf930f0c0a3db9c87831e52851c66f904a54618e23b51f0233adf63cb6d772902dec07d17ee6cdf1107f7b310f81997977cf79de17d7fbe7bef3df0fd11d1e6bbe0ef739dc7371e1b819600ce7e232a6bce4b1ca864b7a39c905833b35d52015c9351a8154a3eb257f0d8320087258a0ecceb799f5f29797e6873387317e84a360d9234b24a2fd435b4c65bcb7297a3ea87d218ef112e47039011266457b148c6951427ced99105fcb4c3cf1630dc34d42666b51a2c78bcf448f17b3902d78682fbe90ed7b6426c47f220bd15e0cc3fda4fc66a92778c99f454bf0e9e82db8dc733ed9b5749d06733da1a83a23bd788d3436da5f7be078318620e83d3ad1ded9c939f917da5f6e8e12ed0d9b1b6672003bef4d22ee88c47a5dd775efe1fda3cb239251091d471645e2d5e1cef7e870c3e7c494a3260c117a92505a3366f2869437a4d420d537a3a7181fc2e1d5514c6d391fe3b518cf3199c0981f2630a6b3de5bcf04ea9823dde1743ef0bdf03d30260439ef819cffc0981f3ed32acdd9a7ad6b3f875b9f1171c307c19898cec7bdb5d65aceda202b6ddf86ff853e04ff5296953f0b9672b499650552396ac65d4c75884724a1560d5844d5e08dbe78ea2d057ae472f41e047754cdbd473924271dd20bcc24570f2e0789bd4278b1d4e04813c329c2dd2cabd17a60e7939ad3f21f5be312d6684393a4c7833889f81e076a1623f4047e20f875c2af83e4daf7428a840b8e34fa088f827b1742e54b187e78ca9790fb0e47ca9730b3ace8e82c4666c85a5aec21750f3c41aa0ecbcab7103da2f2c5fb0e18c3f5004350090e8c983f6a84bb5956774adab1b40a3d7aef4130e6df0b633ccbeaf31ea247ef1f0373c098d1b3ac4635da7f091ddded77afc5ecc7e8f8cda68c64f464ed7fbf398ef3c17df7cde8c865e7b87bb9bc47323a8e62a3284e8c62a32823d9105e97f76b9bc1940df6ad65b81acc5120d5b764c95f24a3bfe51cb749349bec8833a2aaf3491004df73036739163d852fb5981267447afac422e28a834599108b4444953823161157626a64b1fc07c6b08037248e2d1f693c954f8261de54cc74f89e1b3c8fb35ccd68434f9cf791454f54533db2e8495e7afac625f4742f1e918c4ae8e83fb6e8b8848e3574f49fb2bb41aa0efc0bc684f94755e9ce7f339a00ede770412a2ff92734a29d0048d8e88b2f02e3f3701434a5815cdd79cde5a8918b9660f43482d1f10b791a7d2147ead2fe5b8b159938bec82da2fd39ab89e3579386bf3fc7c8c4e115993848aed5c4c161bd1131c531728b684efe9511ed1c8ee779de7374f438d9b3d67e88a710e9f05fc018eb79debf5c0de21108ae89e35913877d926be27824e30f3848e829644d1c177c0fc9c4e1bdbf8c2713c7cd32a04c1ab089c3cb32629cfc4840284fbc2ce54becc350188f8c401893e091868e6313c61aedcf8d4bc696f69701657482e642fb9804ed9b7cf1f7e470b798fa78214f32a27c6e64cc414c915c3d98e20e240e1952268ded82c5c42163a603310b7983e5f747ac81f8028943c69449c3e90994a1278e9812539e9611859e48293ace419e482c90a3cb903271905493468c7791a2fd65cca6905294c402971fe54dfdf314926a9288c450b98ca04c1c2422326213070984a29dbae84da2210d41d2f0ef30490b39fa3f261941bef8c79882cdc7b69668ff1126112175a167484dd0fe4cb43f4822a29df404edefcde4196e902752113a23266f784fca8137c9f3c4fd1ea3a0fdc727481c242393867fe9b7cbd8047923e40479830509130789a5643c82bcd179ff7108120709c9266f7c7f0a7f8384f8207e7b9a46dec8ef305ec652d7d5ed3e8aa937892607cd78eaed3d998df3a422a3f727e540085ac6938cb8bc3f8915e3fd4948fefd65c9488c1782a53d081292f978836a00ca0204041011445d989a8506f28615b9e48b3f87412c18f403f9e21fc2a023f2c53fc4201ec8d1bf83413a902ffe178356f2c5ffc3a019f9e2cfc12022a022dadf5f1c87315ddf0c08ed4cb8de935c628a9e7014b5a34eb89be422b9e8c9ebde9fe42405e33740e80e88e9a22378472420153d42e3eb343d72f7c8a2d1fe236bcbda9307b8d20b2414d1d28b23d0e821b4f4e208357a3c224723b868bc604d61d584992368570d413b47db3c434cd1a0d1fd14ff42f6edfe04da6b78f4e270378725a638358efac0fb7358f2864dc1ef10054ff2607ebffe3dfeaef1b1719413ef2fa64495a338f0fee28ca33af0ee81f7176d44984a4a85a5a2e24979588e32c1fb7b6c3c3047a9e0fd3f294751f1fe1f96a38208c953e43dee1a4ffcb621c56f796381dfd2b5e52b8adf32b6a56ccb59097e4fd59e337baef6a4d9b3f580dfb34604bfe74d11bfa76bcf978fdf33b6a76ccfd9a6aa4d67365d6d4ab3696bd39a4d6f36756dfada34b6a96cd3d976d5f699edabed345b4c05c14e057615600a045313600a05a624c01336023c7fe0c9c233041804d803b803f87a693e079c9819c0f32b80e753003781e74f004f09e079c4fc06e01dd808ac03cff781a5cf29022cbdf48008e0257009b0f41206661458fa9c5260e9b3071e492e9fe2519037a751f02920b906408f5c0dc5fcc337036b1c55c4fb77588e12c15be0fd6fca5140de1f4c390a04ef0fb21c1582f7076d1cb5df1f8439cac7fb8332473de0fd3b2947fd78ff0e8da378bc7fc7c6512378ff0ecc512478ff30e5a812bc7fc8721414ef1fda382a8af70f5d8e7ae2fd4398a34c10f30af802bc74d4023e012f1d65c4837fc437e0c3978edaf10878e92808fc7de92807fc0192f8ce4b4721f1385e3a2a02cff2d2514bfc8d978e9ac0bbbc7414131278225e3aaa02ff2f1d458126dec64b4761e0657c7ee928275e880c3ceaa5a336f0a5978eeaf1a7978ef2c09b5e3aaa033fe30df0f4c815535ef24741dee109f214d913b1142fa63cd4dcef500abcc17833df8015087872f89cd7de83414780debe8a4a6e015fb3b805546901f3e73d9b0aedf39de72568c4d42bf641b9a3c5b5d9937dac3c987ddcf77cb0b6926baee011fe9e7770c7cd124606e23af4f63d79b3e42acaf629f800319445bcabf8bce73d0ffee0e9759fa7d3c2ffbc27573ae62da4d33e9e0f352b5a8958f444352d6fcbc2a295c8081de96b4e80dfe142761c8ce9bc98f79015dcd102f4397ce541f8f322be2b180402e5bdbd4ad6e18ece27fc8e47e5617494a86c130cd1a00fbff39f4f067de7f7b70afd41f03d2b335ae53f1ff16174b4105f057794dcaad2625651f9fdad5470c7fb95cf07e4f9cdf3a03fe879f0f3f97cdee3f91cf4fe07dce0877fd01ecf87b80383ebf95d552a5bfcef55e61f3a30b8fb0432bdb717c1bfbfddbc8774406c82983e814c6fdfe14dc54c6f2f5ad19335c299738ab903a4fdb718ffaad29ab55a4e52abe7116ba58a39845620fac006cf931f11b7be7cc997fa1e945bf306c2714adf3977bb99aea0bebd864d3293467d538a8eb49aae98346afde828a98602ed269549a54d35a69449655275e179f287bf76e050e8483da6a94f30890e924b7f824a50fa9ebf1c35619ca0b627b4441f4a2c8a6cfb6cab299f5255fae5285a5574a435a82aaf0ddf8cc321643d87f2bd57dfd33c223eb6af9aa51d962012dbdbd7bed6bc87486d5ffeaa567fe5cb5aad2b2b5f7ffb4bd70770c45b69cdb57aff813ab8ff5ed64a4ff56dad608c972b1d6dee645c67f33624c8e755fbdf1e82c866f176fdad0cd19ec5bb6a5b7fdbf21e4266fbea63fb70e5bfcf41bfbea42710b57625dc8648e9fa368740ea06526ddd9cb5d9c7f661ad478435b784afbdf75fd73d60c7cfd257ffcb5ead9af7813a425fb38ffa2bef85bcaeab36e4596f8f373aecfbf842cfb15ee77939d4dab66ddb56365c9a326978cf69e2e3ff60f03db8f339dc72a56eb35df6e8a7bdca738ea2af92372f6bfeb2af79bf79787bedc34ec6d26e5fdb40ea1e6f74983b5a5c4e78a3b5dfbeec71faf3ef80b8d2f1cb9a67bfd39ef3a559c90f1cf6171d37ab375b35f9b263a3a50cd0415878d2adac1b5739cee9e434ae6a9623b7ce7e72fb24c7e93cc9e9bc8ffb24e62cd1f2bb56e719f16cb4fc8f0b96960f823aa69650a6cc5ce532312830aa84898dab096d512594460a25425574458bcca4c8b870e2823db1e1a266ca4c23733569904cd5949929d984c2a84b59132d6f3ef2e948dd8696788b744c2d3bae23e73431f18c90da0b5b76cc97af63fe7cf975824b4cba04755fc26bad4b544dd3b425346badb54bd86ddbb66d5b6283a9ef85bef2150c4669288d4c5653335333c5d1dc89c15d8283a9ef71347da73949cd9e7578963f444b90b6ecd04334e58c1c3972e4c89123478e1c3972e4c89123473c3e1c3952df538324d5292908850705d91f3410ffa91d3c42a43d4b7ac3b089d71b86b7ebbccee3cc393ff4dfd7797faf83c1ff384e7fdfe44cce825e97f5cc1c56942b3b9ced58ce825ed7795dc779f60339576ad6eb3acee3b88ffbace51c44c4eb3acf5a0e12d08aa304a41a97789de582a60322528403a9be59874363bbef588b39341c5677934c891a592310a494278de472942863af8d177e2c4b74b50d37071636ce71f73aab099b8474a95439dc4a0e8b7e31b81ba4b22025f434bddff7e3d1b496689f202e40361ac484cb1f1dca4db43f48c7226e8773671c39e79ca32854cb9c8aa3eaa6f44e8a333328a37d24c5d416d062d651bf84969c0bedb26fc1404c7d2fe8bc29153e104e470184d3f7bb197a9038bcffbed063ee3b6cf5e57e3ec8bde7614d6359b957cde1303b4cc663520053ebb0eb103b4cbeccbf780a4e8359d2b182f8899eef7919f4f4318438c9f69ced39ecb0977c99ffc9d89f2c787b19f41e59a6194d7aa2fd7bc1dd9ce92d93b3a40383aa6adfa7b26f7fcec99993b37df47ab1394950e6b4d33e21c1da602de945475b437291c419ed826bdf654499ef8a6bfffb7ef40446c7cf4bbef873fe952e27e4ee7b0e65307bf76bc1f57e8b298fe300e1680eb74da1e3e4527484394a668b7f209cce2cefff79424f514031ffa0633c104ecb78ffcfebc61457775e88ff8c41e2e8bc6797972e41fc6396b7d86a192c6f3f064b8c182cdf5bd008a959b247a1e3a749c9617d8f3d8a1c339e82d39f3d26c7ef452ce3322980ef5950450a467ccf1f7b4c069e82d331b24391e347750cec50e4cbf79d2ff4f79e0649e37b4ffbacf6597b96ec312f7d2f7a76eb384cbe48ea1fd83da7c78c1e786481e073381c6debd1c323b9484e3820c945477f9293578bd57e7b269ec83db2c3bcf4fd96bfd732f8db6332f7fb0f0c43ce26858ef31302ef4f19b47f1033b0cb1d95f0febed92439a116d86eae1458e38873a4195920de4334387dce0fb2f1105f7b2d07d15ef41f02e361c8e170600cc7e138525a26c4eff13db2104d0ae9f1e2afb6558fdcc2637bf1b717f3c6f252cb96b5df8634a1e5edc5f9ba4f7a8c0e38e79c1ff86115afd3eee1ee9135b398d29e33678dd0e6e1bee08e3420d593bb412a571eeea41f1210f4017ee7bd17c1981f158cf1cc414247d9790ffc192ea3d06f2ffe1e5933a6985226197aba390cc36d7b4dd3389c7b5542ed61148cf12e788437a7437954b2c9401ce3ff072746e61071ad0db9900b6db4dd36bceb7537e7eb79934adae1720b47c4b54de8e8fe445c1bd65a8b55c0afb35dd7a97893fbacb5b6b3d676d67e3f7c16c3759df75d4a6696fc396e9c5e55612127f85df61adccef3d904636cf762aa03bf1755a2cc8c0acc624a5afcfa414468c9cb20150beed41a166568c9cb49342d7b72ceef3298922f9476be6b83471657733787056a4e185b1529622466a3a2a2525373bf0d86ea88e8d9753f3617a7a22337a367900de6a5f91b11b7d34237b26292cc4993f288dcf07d9c0b4b1d82327ceff3c5e69c5ee775ddc8b22f69c62535d4c3a3155c1ff33510094dcf69525d31698012943a76b7896664bfb3f675b098ae30a54c32269567bac29432c9985430c018cbc2624a99ae1081313634c5e54da9d09b64260ea94326f0594c35a694e98a9a02c2315d614a99aea829f05df0e652f4b382869a9ad053f74a4c2dce64e2c26463ba713961f96d7aa2dd0433416179a95d7e9ba274bf4d31a54c57ac9854dac353bab7293d432cb3a4a38747df619697a0cb87ffa5ae0ffb9ade232ba4638b9ec021521a44127ef8fe63c90f1c284bb4bfd786bb4d3317dbe760ef3dbcc9b66d36f3e8d761fb36833b5c77deeb9ee3bc34fb8648e9ee3dcff33aefcb1bdb2f795f9a32847d1730c6e6700fdbff7087da18cb81cfc1e06f327a0a738c2fcd385f9a327148cd1922454f9c077fe49b66f30652b5fdd181545c4c974b333a76dde7a02f90eaf3cae11d061ffc18786f523e3031f5876b9a31155969df2696098989a6b34dad1a2e3cce6f1313d38da9490be7a50efd3639d1fe729381200b18035abcc96808ec3208e848477fcfc340e8e82590ed21daf3c3ed1efcb6e7a1fd96836cf1491f02e3756f83d0d1514047f7fa70378735d3293a65fa7037c9355b1c1b0e6b769d4dc6f197a2274c46b5f626c94572424ff75f97e422c5b4775b4bcfb71b8d9ebfb11cd5c2a34710f17be48d35b2383498a384b6b4bf0b87c56171387ff11e02524db95b4c8944ee773fb23ccec77d9ccfe1323d5e8a1e59c8163cb67fe28568dfe36d16b2fd136f5ffb1e5f01ed7be40a6cff44965e1a599deffe875933663e43664a8d348efad3e584a66a0d57fc96fcc4ac86690f0e7788962015c9652d0eab4aff1653f7091803d3fe2aaf24aecb4b53e808a6c0d437dbdccce3c355018b00424fd74d93cde5a89616263621a296379788376ca3bd868edf22b948aeaeebbaee33a33d07fd1a47499877e50fcc5f9fcfe3c3ddfeb25594dc9cef597c5f472e4745fbcd5f2ed7bdd14c346c0a6016df6f1007456ca08bdc009481f6df600d62fc06b1d0ddaf88b040fbcbada2f7370365c2e7e40dbe608356fc4f5083695f68b128cc13f79c229386ff0805cde118019f33b2bed66bb0196335929173fe2ca654f2c5bfc322112ace8835902f3790220b16b3107b303f37f2c59feb38ce0bc16ecee0a9a99b33d8814bdda0c1069cd78929161ac8316887a2f7b7c5176c110b71071f2ff4c78b1d885888a9df9f4c915cfb1ff088ad0d14868c7c33d6e4249c607246b149c3bfc531122bb2a4868e631397f69f3794d2f115333e7127634dccc8c5b8446a55d39c4e8deb789fc7967c113261469ad023e20af1128c09e2657c0e7aeffd7bef28363ff62d1219e698c7a0fd496e08e50d43e74edea2ceef4f8a42fa4292da206fc4e48d3248121ae48dd173de9fe485490a83bcf1ef4f12833cd9bf798fe090b747e7df2435687f9b0419e2910b3a3219b52047ff20f028c44b4ee91d19797442474e922d7f0e3ac5d5dcc7c05388a610e9ee470fc37482bb43a3e5edc0e4edc0e4edc03ab0fb1dd8fd4d8383518189a20a4c5481892a30510526aac0c4df353618cfeafb56dfea5b7dab6ff5bd85f1b81cc571f78a442aaff21acc47e5f1a83c2a8fcaa3f2a83c6fbf8a2bccc7e663f3b1f9d87c6c3e369f7798cf8ce3ee1589fe67dc57318501b5628eea625ea25fa3c638fe8b44f70a20168b050014d32fbf69e80de2b8cece495e8eba00019e16e0e987358ec2c0d30f5f8eca80069efe5d39ca89a77f6b1cd5e3e9df97a39e78fa77e6a80d3c7d71e5280e3c7db1c6511d78fae2cb511e78fae2cc511f78fa2a2b4781e0e9abd4382a046f80dfa2d3ef11f5bb860d22de245d387ecbd70c04fc96b20428e08798337355f2d48cf3a532657306003a435742b46a82a0ae08bc4892cd6484abecaded3521c00e02ec1fc0d403987600530e60ba013c634fe0d9034f1a2fc977024f9597e46b0083c04bf233808df0927c0ce0d14bf22f80fdc64bf22d80e55740fe64420232027809990412f2010e902323b4d7518464c00260248b02b0f452023002b0f4d201b0f4128e1b587a89082cbd640385a5974e587ac90005c0d24b04c0d24b1573311f40de9c00f2be35f216ad3c8dbc7fe50390f7a857fe256f1a7a7731d30e5743e07d59fbdaec0b136287ab2dc2347d12de2a2915151b4d1f7f0c0c847c173cc22d180666c1221c92e18a9b7976b8da624ad31777b8e2e81daec2955803ee70b5290b6f4ad381b0dbb2635bc9178a049537666e3962b6e848432eb6f7fc0b8dbc27b5aee3395cc917faf641d8ddeeb261b824648536731e31ffa0b77fcb11f375cb119a8f99b567e5251817bb32919d7d4ad3d5cae525dbaab1b971795c2f9597649c36bb299555a9542a1b2fd57036f746e4fad708b389d5688d349aceb4d567a6cd68aacfcc4bb4e5a51bce755f22d8c7dc15aebc44fd6bd88c94158e357e14fd15b1aa5583b7e27c667a5cdb8baa2c6569185b357c669ad6cfacce16d5402d9fd18d65c385ab70c54990a55154eba10698f3a0ef39093a8e26da4412d46ad6da2692e0e14a82471393da6882879cf2c60847c99f2f92281b36f48c695ddccdd5251ea363143a52191d47d08abb3d1673193dc9daa2635511a9a127fbd4d65655d570dc951eab35746cd525b5555bf4546b4dadaddaa2a75a97d0d3ae345ca0aac760559b15ca94293636536aab3585c59af24d89c566b3a92518f34db99be3389f56f024697f29ed9cdfdc8b9ea0d093b7bd27da2b9753985355991066735bd0dff77e21f48586c2f5f6a23d00401505c60b6cf05b68162d68d40bd8a0310f34149bde1e0483287c58a8f440b7d8975ec4a0d562ffa3b98e89f6ec37b1955c8793912ffe5c0be48b3fc5a09e587a11832d689b92725f8ee2bc37d3eedb8b69f7a734b728512bad3c6ab5bf719ad428ddfe037f88b678acd1e0569a7dc90f73d70dc60d8bd5043682e5a8da721ef434ad76aad596a6bdd6dceca0f2268923e40d07d09343a1e37cff1d1287a741d298be439ea61c294dc20879636a37c2e973b0e42ae6521e11cdc9685b6d1e2e1bae3f575f13c91b9c15f245a2b8154c1dd4c042fbef120703edbff1be5c8afee6525cbd5fcaaba043a6d6f982ca7396e3381f5ee5386b1d0ad71b106adfe903a1ba52edbdbbe771f901f5bdcf414d29eeb5c9e53d3ff0884e6ff93d5047e7b99726993ae71633b90e8cd97c568704996fe75b5311eca3fb2af4c4dbf5e66d75fb6a22c2591ff53bcf74854867f8336f4a350eb3addf717f449739eeb76ddb7ebec9ceb799730ed4a1e27da7c26d9603ead8de87dd388edb54b49a5a6bad35cfaffe22d6fee2ef430c4aedf9e73edfbe7bf4eb60a92738b3294547f76461cc936d9f6d5be6681fdbdbed277884fd9a2d365d3169ccdcd2bd7f18d3743e108eb6f56bdebfcd7c862b1de7bbcddb04434c579852a62b260e3046ebba29a5e85d6534fd5d7de625eab556277a87fd5a70b9946f58b35673cf94325d21e57b609b7f521e88454ca708d725a8e3fbee8d49a552a99a9a989b9b7ba5be370646e9e6034f92bccae13ea253f7d20d52baa59672db577aeabed6180ed58ee5dc9ffafb9bfef33bfcd191e33657030e9e24d597375a528f7aeed58fe24d7bdb4731a73dce27dfe370389d24f3a1987fd05a9eb1e0ef6da67b79c9abaa88227474cfbf0dd431b58a148e8a4cbe7ceff2521c6ee7256fd0f7efc81ce5e36b08f91d06f9cde998ceebf58c97fc3b2f79635301aa01ef3f6928cb511a40c1fb73a3a344f0fe468000058e52e2fda7aa89f79f3733465552bc3fbd71d414ef4f5f27f805d8805111411f2dcad1022302af800458e0310248070000077e88273ef02f1dd85fe3a5a342f0345e3a0a044fc4d323d73f9c7194874648de6190ac024cc57b68eef5d0dcdfa13fc54952f01e1554504105155450615f0558c250ccd1546009e3b17194bd71540a5c9e97bf0a52803914603f01f629b04be14e5313366d266ba69cc8f1587a09f521c0d24ba70701fe00965e2a801158072e02c76006602fb987348eb2ef300bc03058fbe7c00ac07bb2a6cd84d114b5a1304f899cc65b5ee3aa99158d5119a537ae174dab4635139381f79ced79e37ad1b46a54332c78cb9894c91bd74bc4d763a3fdc3cecb1fec5c2a523c445466dbb3d2fed63d368620e082c1932429256792e8e87973f2654a701ef1cddddddddddddddddddddddddddddde6c6f582c162355a23cdb344ab3b43575ebae15cf725827d6c94cd461b5f43e49c367adacc9417566366b562b168685aad9a1a1bb7f11b182c169369293da5a594d2c6e6e6c6a5652c9552a966b494524a989c49299bc564303d6f606c380a16bb366636dc4b4059345cebd688e6cb5c52a6abd3384ac6cd6e4aa4fa9971a54d1a0d66c266ab86b3b9372217ec3561300d43578e4a71aa3b235a3d6b9c349b5397a3643562a353d7e544f745e3d718a7739d2d27b1d97d6a02f08327497b4aedaddb973728205ffcfd8990a80acc92bfeb0d5e48a906edf4c422bf36d1f28b5b003a7e12d1acb5d26fc255663820a36d489171d79e292d6f6050c4456f09db603038827fa536e869d7d805d0350a4069c581f6e17886128341b9fe430455d5d2d2f24fc1229ac8cd655ab402762fca1e9106bf0384bbfd73d0edc651df6b322f691fcf1d253bd9f376d9f5e47bf583e1adc1093d69afbdc7a5f987324785ee87211ccabca4793c0fc27b88a386c0d0efbde7f1bd97836cd17d10efbf2ef308fdf75f0ef20d8109374fd33c9e07c578409af71ffd3c948552c259d8e9743a20a803adcc2464421fe34359c8163cbe0fbd102fb774ef3d100f448c2ce4cb2d5d6e510288f79e0920f233110a7de73da0f7c5057f7bfbeace7718dc3a1b2849c8a3a1ec1ff7d7a745b8c5730fca2603ad875b4db9455ae3565154d0b3c936d9262535e39b6c93755893753c1e8f56dd652ec5673e859ee67b5fdc6e0504573a1d7f4abb0e7f2875ea9a264bdd19af83393a6aa1147af2d764b476555a7ba745807987ef511a3ecdbbaae8cb0e92cbd1a1df0e93da6f9fc9178ceba5b58f69ed3d30566705ef217ac5d324c6e3027758edb9912fda7b506ed7e5af05b7fb1dcabacec7e3f97c749cd7e382c1227aed3d4d462eafbde746dea0afb5bcca7bbc90385aa47b2fbecb6060d1536cb50b9e82d3f447a2f738d148f4147c51f62874d43ef03d11f81a4871d5221618e07ba0f79ec3c01e73198114533d02bf0504dfd33e9ae47b16d1973d0682147c7dd8c33217fc1dca3cd8df33e9a781312d4a84fe7b1ea12cbd947938cc4be077efe974b2f7c5ed3cf894d2f73ce85786e88e7a3e8753ceabe0edc982d65ebc78bbec07e72918b349b9affe78dbe7c5ee6fcf4ab920a59d0f65f4d4bde74ef47699e7466b9d1c45d5db93edafcbdc8a5b7146389a6e734abe0e7ff0d5d39369aaeda16c7374d4fe4347cd73b33d2ead85323a6a9e4ca6b5f7649e942fa5fd37434f2d94fb7832ad7d57b753edcfc175a39aac0a3ac4da21b4188177b8fe969ea8e6d95a6bf305ef702b8b9e3c4fdff3e0d07b7e9460b5f12a8da33e345ea29cf8b1b9a21f55c397c99d5afbefd2718b569e99973ea90f8da368f862de377c50fe7c6c3c78d7161ca4becbe32d78d41fe520a3afef8283b4bccba75ca647c41519a1a38835612812d10aa4bdcd27f591f98c7058691c455f70edfb53edf7b79a302e9f844b9d39cac57236a12c9c396af494459437a73f2f1d357ee75bddcc897905e2561ecd256bd9f330f0fea8b47fab4feaf3ad385d4428572474a494d31ed4a8c8e6d1d428899e44230d5badaa3c79c3c8dbf3e1c78755f178b4bcb718f0ed1153fb7ff68ffa9a36394e0ee072be8245ecd07009aa4a73a295c848e741dcd13ea4bde8eff1fcd55ef4bc4d7b4d7ccd93378cb79a67e559de93b7e86d16adc4d7b2967d78debee7c31d2aafe5ad7974cc3fe8cf7b3efc64ed3d39dc833dbf05a9d9a8b46c53d7992065a84640000000004314000030140c070583c18048286782940f14000d8bb85672581e88419052c818430c000110000000000000001800c95febe77904d55aedaf0581959be8970ab04f2d3bde81684dd230d2d6b6e98fe73c939ca94c4d1a57ffcb80da3707e008783b8a2aa4fd6e56813d3a96c82c64553397b0ca67712cb5f162958085bed73d90294af24ef1046f62304a0bb3577372ac0e8e33958ccb7094bc4f2e469f854fe522a40188a4deef153921c6e2b302bec827d21ff103e13da249f2aa01df4e14f0bd78da084787c99d7f2b95769f3ccb9f8af5d7f3622a3973b9fc0ad2756f3f203f7384d14c6cb49ead63555bd81c862e319fd6477952c5b73fab47da3e23d464d486ccff42a64c34e3da6bcdf037144d87b7b37862e4310adb66af60425e0dda753dce24205a04ad655d22203898036e35767b131ce233d9f632897831c97ce9b48249aba09d65a3e36c023e780519c50037ba5ee6d89a27379abf14e6e63c610c112f1e1c7175e5c9280c7075e124ec24d3ba25ffa8ccb77806f2588115b1d928aca3b0a5103816d876c4db38aab7794daea5b11fb36d2e4965bccdf064cd92ad586f9b92e45e6f3394bc9264c342da6624bb216d4625bf8c6ce6dc3629c99cdb8c4c1ee7b6a4abb24900dc4f9e90e6b96dcc1089dc3618c1566e1b5a709bf6c96db29991dc6695f8b5b755dc6152f8399fe9c4391cd7b23b3a465da58a0ea3d5b4c79fb70d769c9cb9b48c211935a79b6f232176336eb64311ecd97d9b177b1bac925ff1980b6dbf2d33e52655de5d11e6e6fedbac65cc9d7c5e2b129cd468fc1743c1e5260b6e247af309d4e3cea2638d873226dc5cd082392815fc5dd13df5e9f3bd95fe9fadfd1bd915ca99d7d60715fb90e396d09afd90991fa6ce72d6ae55f53d46fa464806d153582f42af2d4834e81d636483defc1037e8a55dbc144f88651575f76cee96e62ef09167f26465289e298aa57324d41b9ccdb00ea486e54895920aa6e54ef782d10807bb96ef674387e657614b9c2354387d8a3b5b26328bbfcb997acc1872de0e256723d5f9b77e0a4e1e3040fdb2810733f6dd7f9e402ca560517376e4bea564dca6fac62242c7533556715948f2619466edf17b86bb044531351378a50468d257d0282f0e9c7cc4732ed22549a04541942f1b4696f599cb212f465555742568d7e7c098d1d9e297151280701ebefc3a0129b24a9d54c143fae34eb98ef5114ae8543959d80c774bee7bf9bc7f70f287b2a9186d588d85053932a30b2e013aff5e983442854c2eac1c7633089b7937a2d309a5deb6e3234b5f0c5541f7b70f16ceee1918e326b7945c9e3f03be9cebd5f67faa2f24ee774f225d8ced770204a2d09bafde6ecfeecbe24292b66175e6a6d4e1b87d36b79232315fc8bcd83a12c87f3658713e8af9c36fb648105edd9b659cdce2f334514bd232234cf164481eee735a338737ca2082406792456b8b096ea4795095cfbb1c1f71c088423ea056459feaf0585e7bc58f57ec92bd3f04c07f72b8c2a85bd0c8468c49e02152c818b1ec9a14181d8ecd1bb4d86524a1cddacf3ad2582ecfd5e2b8b16b3e362d9ef317c6325279b8c5a9030f30bf93a31423a2759f2adb55953ff86216b9e6ef2857aeb21e2a47cac32ce1006746b37a3f578253ba0d95350490bce4b2f3499f217964d20846e076d90c9ee24b5b2dbea1c9cb4897c6405c2a2406531c5c50136712887fbb16dc50647b0abe313962f4f4dd73d3323e383d99d67b9a273f9aa4da5b93e4e455ea7eccaf83c934a9e7da6a9231fc97cf9d0b53ce7cf5b1ceaea38dbb72acdd3c87d7c8fa8aa48b6a19a84b00a28f800847cba43fed38de19d11fd633c2aeba7235630bf3afa0a35834a3d6b49bab35d6b79eb04d7c445660ea67370b555b4df870f020b146a56841b9f8629c99f3b04d267224f8b53756b3d0b0a0e60bde35673c20507c5c48f2ff16e7503492aeb57bf01b6c6b812bc67ea1ecbbf0b031e875ed0a32913bc9854db194bdf5d12b7dd52334b2f6783fd6f2f82cac6b417d3098545131f1c3c84e889ac4e0292a056ee284f2d67898a82d1fbbd002436109e98b5ce7bdef329c68e62e908ef786eb1438360b19057bcc21141432a20026640cb36c56de4f61876b7f6d35a35de253916ac59cbc1fa4f02a7a1af041808b790a0856dc80023e85dc3498d705b42f440dc0a2eebb0c9dcd82b899f146409bc9a1fabdf3bb316c6034916ace17a211613939ca3e8d3c390cad36329d70cae2cb3767319dd4d79162c91c54d2a85e2da1cc0a2801ef5cf3fb0d97ce24cb1cba6af2263c8d6c991b1fa2fe3dc3787660cbdcc11701f4826def2520edbf7deb62f2afface23bd8b0095b9805375f9b0ed7f6c4ee6b005d967b250df3ef63d4fe246e6ba92cc7922cef88eff1dc74bf65c60f27083cda96d050883034ea7598a01c11b2802dc8cab5cfc27b35da1d73833576e8557a822400b5bd585af5812ca8a08d98f2019897bb5a117181e7f038055f935c095d3078fbfc0267e070e1c80a2585f5e19b2922cd341d83f28490e640fc385ab1c414a26dc38280981339731c4559d3439a330cf3c47126173c427e9baa3cb8412951e26bba876310f8f54f486c3fba11da3364caa37a284430b62e10b408ec703f9c888e4349601774eec887f79440c7abae78e530430465b7d5741118970eb1b23b0241e5eabdbabf76a1ac9b2fe72b7bd75351a193c6e088ffd4f06fbe1ed41a73950c41a5baef65e42558c42a522ca9038e7377772142ad6253bf93362e763232364570142b6e9233cbe9b85e523c902ed995b748d96c946c3e974a51e59461ffcf583e342a71e3a852a4928038a38b9687d4733ae18ee24d633c027a8188c34e0f304f0b5f68ac504140b4a04d4211e49c83dce9ce7f2a37b73e53c526dac652e641a165c2c18164ca7a08440f8083889818183723a460321a42c05ba41bc3406e3bf9615fb28a5075b4704ba182225100e0f3e1e7492713e49f50010c3499fb0660c41323cab9fe9091e5c25dd27d9a74dd093885cf2a2e957123b2b1ffb447e7a7d3665d295b8b15632f69b893257597d6ee683e8bc2f230d42262053746ae437cc8f1b353d6c19e9cfaca2227085e9848ce59b19124fb6028bf096dfec72307c2c3134dfdbcd8cdd2e70046be2db8fa612ba8dfd670472722dbbab669f9b704995bd0f57e58460547b7a27350b9e704c6d2c50c4c773ebd728c4208947a7bc0079d5c680a90136f918cffcab72e0cd9e553311457efff015d06cdf4b0ff355049198d9b7f50ae4c17d393c879601846367b7bf5a92bdd1e834fd64d04c9d37841865cdf63cdd306d22fccd493d78b3bafd22c09256d494c052a1ff4a7bccc4f9175640cfb8267fd263ef3345293258c333d7cabaa113c694648d7fb556c9b32b6069996f98c3140faf7247916239e5e7d33fd8388654016eec15c13f123d99a70f72d1f00ae5718ef14ce197bafe24e23fabb61c3aa369374f72352c6ae5e7cbaaf46f4bd8612748c40987ce46c6612433b5301e15703f6546ec611503d4e09c9c67c0908f3ad70b4fe730fd0841a684024ef4f4aea9a40bec0b4152c37406a963e52d9270445c502b3c6e85bb3d1cd558dee777414296561926b44aa3e0569f5fa303ff5444ef4c369964662cd8a1aaf8237967f267f25df7fb290c8ee68e5c1f65aa6404c916792ec377a0e8e1396ab7191c8c00c5b7f833d76e9437a2d95ed44aa40c6845c1c18e8d3314e294f5783da9c66a89e45c9c61cbceb7bb467caee89b4153c3e36f86b6574adcf1d66031fd25ba54d90fd47180a6176bc17e272deb7ae68de67f00434e0e957dc47d11e8ccede298db7ea34eb479f32ccdc15dfa4098f393cb92d8a80433ca18fe9004fd8750615f4f52eac04f5ae2c8dc94ed6afc5cf095fbee44e1ceef8f88f84950311765c3a78c4eb94611f08b540e5a1d95b374290a81c66004ad89cc9923847fdef2706d424cdf6405374062db1935ba5c55232c3efd4021f941026fcbb67860e5b59de05e8896cfdac1c959b4c89c89c0c59a67af80eb33d816882b9effdfe1f738e33a3a8bd9beda9b81e27975d9c7d144309a5635acc883de2983a1a3dc4130cbd7418c90e684ad9e2d41766e728a08d9f8a5184cea67a0adf4400e03ccb8f6a24389eb4fdcb430900cabc8db1c36a9f6928adbfbced07c0a561c933491b827d0752bb5c814d04b69dfba629ed81784ac3381d7855dc660cbe606f6e6ff39a3f6398ad056aa0f21f4bd2ce913fb027387f5ec18dec6be97e06d0f8f89c0ed23bbc7614244e0b6d924b726664be9bff86ee0b925a7343621c2bf552afb6e9a5e46b40062376c4398ace533bb64a6daf5b115fe4c8ccd94ddc51bee3cce66673f1d5983ad4511aeb8475a77f61b9a206c354a2bb390954205b6e49df6cc1efe1285da2b296ba93367abfab716ed7f9fd53b82fc1fb8022873ef1ecbe30ee6accfaaa4d62bea1dca5d75e54e5bd192898142bd450da102530c222c5477fda1f5ceaa45bb3499b50cf8ca2105236837339b463287829b001412f9ecdbd51d06eb03d3b72ea343bba6ab7cd1887bcc897fc97a42b2aa7dcac4c9c85816182da17cd8d6be9db504dbaeeee62a8a9622ccccac0ef9d6587c72f1c70743aba85eebe46e73489b923860104acf1de7e077c33960fb20387a381a5c41dc1533c2dd721c9d0ac47777ba24013a167b6931297bcb7128ca49c40c8bf6981edb212f2dcf61172cda1cbe9d434861a1a2c522e0cbbeed5643c0df6f978a6481a8f9ddfa4f6ab776848f070663ee2896993f6763355a9ac3183f4ab37a017f4364b82c2ef33394c475302dd230928c3aa3d5259575a2e10ea99065fac2348986f178b582239b7c441cdcab02dd0a0c9c7edf817e10a139591ab1a8c96ca23f3078a85ec61f09ea40e43f1dc505ea74c7f28faef9872c5bd211d1333e5ddee39faf6974e2ab9f24be6a4356ea1cba278fbf3ebae36ddc817fb7839caea35bbaa369dda180d831c5ad73cad4f906ba137fbb935454c795c5a11164ed4f6df6ce55adfd79cbcd89e3fa13096cedcfb60a5b225c4c3f66befa73fe855d12a6822e71731107e3e697dcbbb5febc33597a7ce4ef60cbb06afd699efd7f5bdecc7ba267c299acda0e785cf9412cdd1cc9060c08d3d4d9553216efe18f3fb6903fef237f620161f2ded7a7647669f97312ec8a627bf4c33639da7fc6bcdab2345fe860db39ecc689effc8d5de48c58621e9d6cc5cbd962faa9df8ffa9c39c66e08fcc9cb93b021f88360e18fb6c41fe18d3f14227f6c54fe5c9ef9f34fe74fccd09f2ca53f52527fa85b7f0c8ffdb9b9f6e7cffd897cc4b99b8ff1c13ff504078f56154376f38fcde89f2bd53faf64ff4477ff241efea3b9fc874effb10126a49cf81f62b52d8f0b80e65600916500595203742c037a99dd7d60598280ea06770469962e955ae4fceb783e49983b5458a4bc9b71594a4ef00f3c380e4b534b8cb5b0ecec63dae4a12e8a4dc14af412b4949242497d461de1aed3ff94cb65f278c143d0ac9222e041c6a072caa2a35cb4de0c83adcef46f725fc4baae6b4fd648dfe8c26f0b2a4e5687e6a8e97f0ac27b31e93f071d741039335446ebc58f96013e340d51c4243ab18921348adcf9d10ffee08f7c4bf9a55d9a522c6d694b1cff522f4d299676a92bbfa4a0072f9358042cb309eb3a080149852f2646e955a0a0acfb0f13286f7bddcf182013db059d8946a4e3807181911c2be80377edf7bf8806af396cf0bd11cc84a58255383b0541f388f05f46b619fd385e7142681196229de033a0af219072e49282cf9691b483855ac209e826bfd30badfd140641e22c62cfee806071fadc417caf47ee6af436b1969451b96af439d23899591bc7019b71cb0de558b5e1fa322f91df4cb16c9cdc221a710172461ac1dac7836a44d9e1576929d9c94ef6d3f67c3fd35e472c708d98a7695f8b0db80b04e6fa68e49a14dd40c0f4b0766d9020054f96b3c5498cd466e013865e7b632f87606dcbf4e7b193defee3f2e11ed5e7edc7c40c8c9ac1545c873ae3af31df8eacead034154872dc4c0dee8351f401769209db7906c424275133812ac33fb330f0269505961fb83db7524a47809c22257a73993919514ab04892d0ce0acb0def418bfc7e150aa3ed0c18d277d3a24e79438ca91524ae9ec1dad65da2c47cd03e18c9fb58bb7dff7681ebb1db2bb60b4003ec5f3358904da0481382854037da8c6ef9bdec16758737151bbdb73bf18da9b962cffca6199a1b959231fc83a2b83326e363a7a82c5a6ce658ef972d9f2998a3da475566a971227420610e3e7e0c9812f99ef6841f1ecb7b9975a1fa0107a53a9ac017d8a272982747476a3aab7ff53524e12727477e6b5ff8ea0f1e394aacfd013953fe6825414f06eba110a8fc95fe080c949970f901a94f603af3ec080fe773472dcab0fc040f5b264409a05f78dc4bc79438256dd1a7790b633d90e6adb25249349ce62c2dbef2d9027797758c9a0085477f8deb637066045e435201e5ab892918a60e31be62e4b6d0189ee85e7d01893fce4651f4280c701051133169005614107d048f963d6c5cf65837c37385e4c8a06a378202defa1227169cdd1f56405611d9649e1a86d6c29470b6bd1cebf99387fa13532c6434888c3362fca0fd077330c425800956d1c388789c42bf660645fec50e75949b781e0d9c447ad100e76cd770e49c690926df4e1d1df02d2ef999580aed7fc3a6caf53a950a1746769bb479aac988e45ab81429672c24f6e9340da0512e4d54ad627173b7622e4aa00e992946344c4c1e407c0e361ce62918d150088b627124faeea0ac626e736f1fbd0b513f73df69e85b4d730f3b6029ca68920ad8a1f6b1862333247301c352309f570dc69329968b0fd7e7fa7e2e20834092a9a586a928d48ef7a2d4bff78173a077b38bb4e25c41e2640af07c4f08ada608252560debef1e1e66df9d1037e5b3e18de348a058b10cd14597f6bb3a187521a4182a345f1284d5d25d4fca9208ad9a27c0bd2b0471a04884b8089a2c10048ee6f6111d14381e5abfac854c53c1e0aa72610c98c9cb0fdc71969cee249a5f95bf6fb0cad2e095a8af2d6a8b5d535b800bc84205331151216a8459de51fee01db4f2d2d8f3900908a4ef6eece43f7546bc373cb77560d76a76315921ac5b364e9d9c079d4d4625db1acc0581045d61b87298d406dcd666953f7236846921b8059d0c91cebf6058188c0733fe127024d3beb34b24f5feffaf5ca2e7fbe9c5d0ebbfe2fd903798968c4adce4e14e71395b8726cd40754d4d68163fc75a42987ff3732110ccd4edf5df0964d2b2f7e20d040bf72af6f29c44daad7b770a08faa492ed3fd502e7704b6410e1badcf539880120d5384cdf4f0bf7f08f335867228e4f9411a875407a560d167bc300c05ef43e91fe00afa1b1bcf43700344765d3f625bc0af1804f63ead4a36fab30dcda79c9afab9d4d086bba937fc738902d4682420c830c1c6ffcbc954cf9f0198c5c7ba99302337ff0f7327046e096aad279d1f02e4f555f5c994203e6fee8637aaae1d9945bea72114413b81a3067158ea5824bda3545e7314b1d3f58c8cbc5dcea4816ed26a1339db110d4f27985d739afc4a9115226d35155da4d67541781357312990b14cce4df7f1859ea22c0fe69f80e97931c5fb13cccd483a86d147d2ac5afda61a8f7a03271eb95044e482c08a6279d890cbe1285274598a053d82f8d6a81ce151a050b0ce2897b6d018258974445f4b27255e85e242e9dd4686eda3550b018a5ec81a2c812d8404434b88992f841a502904e3284ee2f64b322911674e49e26955bc348dce2bfbc9c5ad028c8a507847bbea908a91fc9ba94b15337a621354f4fb55272364bb7707b32a761abb8a41fe6709cc3ffeaf324229d0a8498059d08f97a7ed29646a384fc3893493211db29c196b0e53793da356ac4887727f8fd41309061c5a1544409e0080691914eaca5917e682c11e6ba7c2c2e7fb106e394f8ac04d6ae8d0aaaf85a962f27fe1f1d6ec29b06694f62887e1408351e5bd7708751a76425c45895898f81e8728620e19ca2225ee43e25f7cf07354a23065c39bbd218bdcc4443c87e960aff357c96319b16cf4453ce912882166ee57f11ed3478bd7f4b0d862dc1a33a6a7d29a58f86925c4d8876d46d6def64bafa072d6237c575c237a26959dfc1ae580ed8be267ea5987b6f320c4d78ec33eb6b1d318419fbad900307154ee31013ac64e3863bbee85463fd490029e1051b38831e1e5534df925c6577d1d160f95a385aaf94914e3881fa96b11a48651a593088806a418af826f563c9fb6d881bf98c87f6baa728f996314639432d6d4390bc8a36bf7d56ae1f68ee4898f83356a6d39834c532554e4873203916c0714bfee07f3c80b050427915b3f56e54d1b9048119dae93e4ebfea530522292f8cfd7c2337a197cd31c4d6ad8ae8cf6693e58088800d74864a7521f7cc1572b3e0ad7f3359ca276d4cf338bee3517e8256cc86c4e284353541f8a183d3df669228f2592d69be4351d540383c41a8c90b0c97e440b04c0156fcc5a6d7c3d84b5cb071a3120d54411763369f3ce5e4960f6a62a363cfe7ca6aa60a677473bec569ca69a2f5db13dedba389537b4418f8a434b3d7a1736401eea2ba49ef4511bfc8092f792132ac142fc7683dccaf718233ec07287c2e49abf54a5f98223f591ac04ed8bd225fc6bbf7f5aa5961880c43062234a22f05324dca22293481aba0e18519c04a2065139137f082161cb8fd498e102bcfac44f33889910c6524596dc2cc4e9f0bab44ddc5cd54c25a8f532cb6ef62c04ffbceedbbb2324a13ffbccce21a5964a0a7fa93c77e138f125ba3ef4862255943a7df6245aa30213642f8259d42047c09da0e3a30daaef0127fa454f900e9048e93bbabdff18a2cf79d0ba145d0c7435390532697066c37ec91604136b3c31a69507066b9e0cea91bfc49827597f428163476b1e3feb79f47792549f1a1f7243bb51ac5fba50cbc49eb8079231bf2663712eb5de80c1c995fb8943b1e5210bbca614ba1682d2c03e93007ae1104d272890db7dd0068e601e0d453faa008bd0484e0db2c4267b0925abb59dcd64e20fed5e9b435b91bee5b16a5ea1a3aee2ce512aa4171293b8d1b2f176e84e154926f21630c024aa5c653567bcf2abc51d8b9a0c95d25009f5a5e52755a6a73c720a2f3712dbf291f6d6c94738d0371d6d985e2720feab7d563f4875650bea033892e4eeee1dd92a4e269531dad10858e4089aeea98e7c302e95b92d7946319d153bd9b3cb568356020b167aa94e3b7cef30f673d39a1df178bfcabe252c543b6c5b41469363864b0827f2e589156e7d320fba9ce6c3198c53b7b6e53ad4da9ca374483221bc1620668193b943f00ad0b5db58d2761d5d4942b5ebdd0a35ea323a3f4512d395014e04f5955ddaa5d2a8e5c7722ad141298b8d1c2909306b50986809705c370c372de652646ec96b3bd806b3d9926b10ad05f222dadd7df5fe7adab69403a161065d3603172c01c7d5eb6073df62e4232aaf49fb99910262062fb53661f424bc75e6b4811b682704d92934e9bf252ca458f61e514fa9527e6e49532c58c8f38b9d62c76013660bc5dd98601e0afd3ba91e666aab874c81ffa42a601b9d65fe556c375743aa3fdb240b633d221269785d64192ef8cde39c925063f0d3e2911be2c70546552148a5afdb6465f57482f531646f93debad3acc871a6bda7ec8c6daf0d91fd6a21c24728ee44a999bbe1f6852ac8874970c103470ab3bb6c0abff1543283e83be73e0b1584f7f04e5aabaa7920a07c8870a3fa29ee20ad62b36e1cb0e24b01a0c682a109dd3cefbf00777a17bae608d92e285e933d9da72f66e89140a2d7baf78b04867b2b1c7192c78f5bdb8fd5e7a9a9052d71e02d788c62cb316ad66b18c321a34071eb17231416a14fa65d12cea78bb89c488ba8ab1749eeb51e1c008a2ac1b17c20aff8d8d81ef90d366a376638ad184d9d81f5b8c9715e32e15c39ebc5f56fad1bcb1024008d4bb4ed3d048a220cb92c254bf99c6d858b469ec3e7fd6bdec4c4d521226e4915b2e6231c2305661d2294b42ed9f710d8eca84a8d158e3127ac709a1619ba97e965a90721fb5c13eebc0f87575f4bab0c0c21a2511e34a3dc22200eb7533397eaed31b89e41a436f8331c22b5c22aaf2d60610206c36f1db81829aa9785cee0a9fb01865a419aaf4b8f8ce8078c1da127c0e27659ba4d5d5cd2b4b080eb4f04cae72cc726ca095849396d1eb780139fc848a8cd2eee2f3c5b7ceab849844d96926fcd82c2659d573e384f48d96994f86fbdd02532190a5dc51ce21c0995b811717bb3d2c57c7021f31e6877cf9dc9ae25b3bb235f380e6ab440a84cc162896b0f873942fb446dd4b16ffce9330fc872842a16c6eecda34683650129adc45634300dcdb3909af0bc15b9a3a41492d50673a0093cc448196a4c2656630243f24506bb3aa9a1520ec642195180263640c8d77b2f83562a21f82a62c8daf6b528f3b34002ec60600a312d31c3aceca348ad01b8a103789874bf901cfae26f6516cfc0637ca8b8c12448ba773cd292c1ecef4e2f33a3eb6a65dff0ef70ea1fb5a8deda3d3f5d5ba2b9f4157fbf5a353cfa6998a21838509130d4397c79e7ef0704ef9d51010dd1643ac9ad5d8e04adacfaeed9336bf517b5880b62789594b92ebac5075f641d986d19ca1f5fe94183290744443a6b43a6df534f31c385aa0e6c4a78c92b3bf9f71f38f9b7f86c95d96304ffb153d37e8abe250c2af8b585f663b627f19a3f93b6a6c87f082905c7197970e231679c6d934743edc676a9dadff7afeed031d2f9f737e0d6f70ae43f463f9cf34e769ed0e12c281d985a902be7a809f4a5bdf7a57a6e004e1553ab2e208655258dd9f046bdf8fd2eee521a6dfacd19814dbc5ab0cdd99c31f8f2546500a79cb17c02ef278950343c495504d70c75056d83a3f56fa6167e54504724230602caffb5f1f6bb7116475a414edae0d352b64294b13ef7d01dd405356b17c87b47441557467fab57bb58318cef9c9da983caa8222368312c985d2dcb301f112ba5deccec60cafd4273c82c1b874b0e1146270ea0fa33c2392c275b6db64d56300f23c9d8b7a3c2d2073181f3e55d295a75a796a12234a5beaf834a30032a0452d24d759928c1830b7d53ee95ede5a2cb9c643bb37d4bb3fe016acc5c9487d14f208d946124e7efa1d2f653f9b8ef79852d7fed03902537b92d42d8e2191b72e70b5d7dbc9710175bcca85ea309040e7928f36242daf62a64c5dd5629ec5d7764546cc0a808b698f90e5d161fcc03474a1b174e65d873730fa7253e594f0b2e20b09f283d5916a1a57377ba1b2600eb0cc9f1ed15d2f887e415c8ce2299153e5fe0c9cb7c471e05744d3d562c3631d185e4bd598a9a885ac003e5e7fb161433714418aaa9b0e98ab96c16e72e5fb2dfa70d4490c7e0be19f8f87ebfe094a0bd23aea20de12e5029fd04e91e545003170aae048d43c5ebf7f200c53ef6fd8f99dbd6f6a99eabb0ab18c9eb0abc2c762422925c858d7c1a2c3d373527c0931363bf9b52dbeefb3460ab61a4eed71df7c7ee0d88c5bb59ae5009c4d5a770c7309bde5a0bf10e1c9213cfe23d9900d33a5c33db926d0965b5169cf7c64542b828fd8f32dbee4e7907e4084f0daccc1a0e52dcab8bb614d9425d86f03424bc6c61e156d960c476cd92c4550e1955756f6fa929c2c16c1477a3a1cb664e3d98b7de12a3a4ccd49cb63a6aebb68c4e30261a3c7f0723c082f8c530df20fc1d8d1c796d3d571ae978316f3564db5100d44e8aa3db4cfea6986080fdd83492f135945ec8e927c32281ff54104ebb4eebb550ebd7725cb9b2260d6cf2b8899731546e5525a4383c77fab010934c1f840c5a06289fe7d28ac89a8a1ccc79c85ad2582dcb3395d4fec9335962864d009737509735777ed85ac170097431f6148c25cbe837470025605ff6b0b031d0196658b61638434940460c2468a1a4fc90216ae88591589e361f5096360d52b9abfadff95817fa3e476cdabe940b6c91d63532d859c23814f48508a7c4e3f136da1166cc527623dabb4eedeb33d04e207837f38b5247783aa356d0776870a6d123a4a1f234c350c75ed7dc302b18b248d079e21f4657bd2f8d95c3eeb5c5b2b2d3299070f340d73d94a56de3bc98b46af74c344bedcf63b53b6a16075c512efc22ac37c7b4d57d7d4f29a1aaa878e68845434c50341190dcdbf6db8ee7b0a6cf24046cf20c98363a1da0f8173acbe629361c3375ff72426bcdbaf4f25021123c16170cd9b82b0e1590b2070f0edb40b1e21c07a4f04d187bd195f157c0990ca3e0728db094153c5ba6ad5242e56438781875ea0e3af5f4b2a8b8feae0b177325405c6af638483d9519829871581adde2e52b8db3004674a7eb6837641941dc2e4ef009cc5846f8705313135586b3a0eb880e62268e8a4463e692d1c51a5715aa51e967392da5770033b8050ead990b21ddcb45c59078f245d647279319bbda766a1134526c3e3f06bcacc8718515249bd3b965096eadb2bbdcf839bdda97bb94903a8e4e76fc8992da1f5f436c3bd495d177e3aeb5fa9acd3c52ec6cc68734f151cad1a61972a623d51a48214ba0c9d63af7fd7c7a7ca89a90e6ede0ce39d3a7fbdaa2e4ad3faa39f4f2c7ebcb07c46d647e7824f3d33326121495b790b2a738b915483b94835bfa3bbe8d19a125da201d725321387b7d62f216803965903071e9527cf78da59e0ecaec74a7dbee9106f06a1e8829585da03e8341aebe4f0bb0a88349d5cd9d0e63dd82bd13a96337bb19d3001c5d3bd13a74b31bbbc3e7ff2dcc78823abba99bbbb13b4ffbafa89193aeb3dbbad1eddd18dd753fd5fdbb9b8591df568bf3b3a395754c6fa0903e7421ff68db49bb076a325193bda9626370fedea9c1ec9349711a47b01402195d981f58c4f2e05e52e66b2321dd944021132311072c99ba41c7f14b3ad178eefbc81b6ed80054467d067f5bbd3ffbbd3f91ea7fffe2d54f84fabcbf5e2fdfb7460bbafe60ef4a69af208365435c364e78f602ddc6c22cd02ccc2e81cbff4d42e9dc18091ead09cff43ff752a478f12c627babc5d1c18efcc06f68159fa7cc0c3ad2fbc4f63330f6eec84e7d5a16ee74a1ac680d3354d10009ad8c17a8664ee3df85c65765321c5539cfb8a181aefd48bb571c26fb5305aef3dce5b0ed117e8af91db50762154361b5822469a6d3543e0249493a1e5bb4eef31f62e3f6c5cf8a0afa35b18357a30ac675cab0b10184fbecd0f0251659d61444793ef8750f36ba1adaca994626c819197b0a0830b07cf60e42cd8fbf7a545b86129909aaae6699c84ac50a214aa5a10e1c5289ad19dac0805f587f18fff03ece7218441026bbe1c91a8a041b87575787a7d70078f337e6764a64d1913c900ec183f172a7da0921dc461ed1ae1cdac809e12a78087c4d3f43c98d99fddfce7dbf1a905ade24aefb84d831d7b29de80e3cb72401e8719b8ad58af7c74b7e1eae8767fbfb8b97caa12883fcdf120c616c7b1bd98c933cf2b76082dd4a3571e4c678bea0b5f9218651844e3181d18c370e55eca21fb9c77c63e4667ea0a9f8d1cb9c61a447d017ed58f5084a9bcec40c7a366424ddb37507b2c50750a92dd3fa05d8dc5aef442013453395356588c77286193f5dce76db51cc48efb4d4bc91a92464fa4ff8a32035519bcc17e6f22aa39e5aee71a059f78c228f6102949698f45b2181167030eb7abf4f60b3d2b32359815245dd81f747bd92ea9c03a3c209fc30c700f219f53b338a3bd8eff91aa4505a282c87dc86b9b7a88b09e43717179f11ba05aacd6317d09001e008c8b2bbf9ebd07893c2492ee7efbb8c972bf4fbd744203d53d1195516f4a343d85abca8c4f2a0677bd6c3afd5a61a45cb4bfa9498aa861201a56c60bd9a06902c68f23bb321a3633db7affc4cb8dba039f15bb10baec7195e4b832cc44300dd0082f2faafc091207a5987299e69d282829186777195304dc4803ac32983a34c50aeab78f7bb1155a10f7670fe927a0444aeb6770778970b3af6ad63312ea889955206f1488b51bbed4549cb8453312c6600575d054ce57c2e6b7853660fed82499028dca22d82f667fe9ea0ed948b110419c8935b803f0066dc03aeb808d7652d59a80011ae321154954bc99c000e5286c7356aebb035e5f5800d61ffb7091d82755b31dd0b22095ef1ddfd2bf906f1b4b4aa62208606a1b38207400cce402d19f41fa205abe334ba89182ea3180815f4a9d8f9904e28d5ad03a2de77d1abdde0b0ab23810b085c19baf5b07eff93abd10b802a6a36bd1a3e0022118b8f1ef49ac1e83e05d0ff9031133efe66fce299d7642c5e996b34df85805c0ace2204c80e750a46379a2bc6e8b63bd9c9ae7fce49aa45ec360688904f82d8333c58e292cadb18f744ee3ee6d6027f2f747dd8e922ff5df5a384005d5c021e1d49e4dc713f80531860fc23ae1c918e6bafdd51d89385f93175e4ba73d3bfd43873ddaeaaaa30217860e14bc23fdd29b207dc30fcbc63b835f6f79fa7f401fe9e0d537ce8ec38926c83f6a579c6bcbcb2879e7490f5b92b04625e16dff01dda7890ffb24fafa8b2f5bef2c622c5cbae4388b86bee7a7c74b9e6ab70427066039de9658764d288fd55a455066cbaefc9239687a559ec0c2a053bd33ed6cb5cc5a8fa436da14ee5b784a0dd63e938a31fecbd6583bb0a9e1b83c984976e2232bed087b7822e7366bf8bea7e7bc1f64fe6a3ab10e17396a4a9889f836f172ac8bf0a87aabe028a56b681058ba520a5272bfc88e8758866ebbd7477e0f2dcce48fd590ea834ab1535b0aa411cf6a86e6fe4c33b1adf1ba97173d5a62bcebb11d7a63c34fd330071ac291b23ad72fc131c5f00048c7dd198bc6e05d9b42494527351133b3baa8c5a1e983dccdb5d5ae92688314809e3dfed9e054601d4500f49d2abce258df80c7428272e9d2e6144c8fe7a66a98e83031eb0c80201d08e762f82e659bc6b8354711965056d2026df588cf8361f19a324c7398bce23e83bbb18a22e1e81c60c9706ff3b0b60d08b0406ec67d8c8b1c3da711c88d770375bc90f1247ad226c5d06bb416da62206ab00e8c2486412ebd152586de0706f93590a8da5534878a1b4f1ff81d6a811798d359c118531c6c7b88b751a8f66c45ee54a1fae67980cf0e46845468ddf7029ca677eea9a880601a008fe160218f3b7872f624ba61f45efa68206a2dc42da99c66e260c0844e7d8652c21f5378debfe6a55071c689f04409fbdcdbbd2b890371457f79e68712008fa778bd2a609b955e7ff26df343b87210c4e9b92349f489cd11ad84f369e3d17464b1f4dc189303fd83d5803c2d13d3156db4ba4e8e881494b9b1bb7a50781990de5ab9ac1fcda14a38fd4c82486a26ec01ed6182b1661bac00a24fe6798385ea09eee933b87fe3db4630cc4dcd8cb0031a46d045ce891b97eb61ce2449d5afd9b13d579d3c03e55acaf82be27d6e3e90dac1a00e0ec79579016e7051662368e0865bacb3296f1acb0e3ed2b830543b47c35842548152009d6563350b89a2f454030c5d3abc6e06174114e2c57176bf72e7be7b8d15a5900891ac860bb7c3b35aa6a0790d49bb70363e2260d59bd24b7555135efd03a3baaf9c3994e69b8570429e8fdf7caa8c9c570c8c6c5e68b06249d4bcbeb9a8c1b1285f4af6ef9efe3e720d9c6acd59b6dd4cacad2e7d71b01c1628e69b7c446ca454809d04a084d61f0e6ae4619be7a8d39a06d48dc28189876f299aa41d8958c6a6efa55adbd8364ba600ca512c072139ad7cd05ef7245387331302cef8b6eef38960578566d71b1462f53eecec5bdde43074826439daf4c77edb3e431272a098bf2fb43ccf07877a0be11637fc22e158df007a2a09fc9583dcc8eb50094306498c0fecd742f2af6ae393d42c395aa988b85af874d8f1aaa8d24a3a92339f6295596510e62e8c95243732f7c079594ef739080aca1a007208877fd6cd6d06284f89a93cf86b1e0c6f014e324ad30da66913e52083982b4cedd3d75670d678cf5cd600da746805c74e1cb6ffa787fb42570f82cc31a7e83ad3828df361a5964171d0c73f8591f0d4382845493eb577a908a8b81f5bb19749619dba7ab3bca8b7d05c63c7f5b0a35569578a9f3d20c127ecfca0ed7fbd9a42c10c17cea33469ccd88707700bd10fdda0fc6e7cf079dde757eddd2cab5c0f96f6a0212c1d8263a801cdb1774e08639d36eeca3664c3fd3e158626a93e4e3367417f5cdff3983f78ac81c668e22a1bd1ace888cc68b9b5b4394db094b1d8e2faa61188450fd3a19391f3e4193326cb2764a40a8f94c81af7f9d3048e1ece3ce8f54e7f94a0b01ed3a0524d9aae40f56a311e323c538879ab321dca3b638dd6952758c8121eac54d38e1c95d67b51ea870dea952942334bad77724f52c6d62de9afed4c6de0ede67466380ea0a06fe42452a6afb863d86cbf13192eeef9ff2bdc5730a01063b1867921cd55847aac597283b7f7c0016170aee0e6c91a1f00067879b1e1337125c68667c41809906efb6540fde7031c3e215d90fae24c8593323cdbb4a9956d9124965e916d2567c4462d031be935e76a497093bc16167c8ea82f98ca6c88e5189415bd6d10b239158ff604d9e9eed6418afcdd2cc49fc937ec54906a72e25f30e3f43122f39ee4db8b1d729fe13362ef42111520f999da0c3e72affa78565e8d6a8d2552982bb8be4fd08c49e3c020dff16a4c3212aefa8f97c4807ff12ccb0dbe646fc29fce419d71808cbd93026eb0d8634b700e4e589cdd75f2d025163fb325a35fc02c5120e249e245445c6147b23df724c67819e862dc086a980c2450f5bfbc909b4deed914738d805e3678e7180a15abf5f46bbd3f230e98767a3c5ce6f8ffaffcc36708b3e4af95585915fc8c759822e4d24cfb6fa92ca9669b0717cceff6bcc01f7a926c1e72a3ec7003e919fdd6da04012c4f009b297f6e353959dacb48be73798a095f143de648148efb950a1c3f9cd2a2758e7746ce22e3f34776d24876606ec3b849e7025be97293b863efc5de7670763186417d596537f1d12aa1be9a197e3182f02ad44dfc53860fe3d291445dacb8dc1df8df6d04071980e7d2e42491e55a865c51c9b763f5244525203ad5a50514a7946e049aa30c8f7419884b26fb22f85971d6e32213b8d6a6094b618b0ab43da7f1af50953ee65f1818d71ed7b71745f0dc87578a2e79171632213a452487d684a4e8a684541acd73ac052f7e0ff0fd39d72cfa5e1e5c6cf59e9ee0c00fe2890d4303dea09826072b58a81e0a38cdddd757625fabf660c76c4429191120af68b83237e30ae8c676a4258d71bc778090846a2e6c1061397b824833a6ba9f96d6adc98ee25513ec3f7f52189e6b44d1b88fd87f7a94a89a6625814d6934f992095042852a22569c0c47049fd8bb5680a81cd8c4919a80f32745910262290516f9600ea329447d5d4288b5737c13dc71a4ca66e62dd46478cab5198a7e7019d6aa1d4d6e65ad91009a02685944db6b6deb952cb4b762e690bfdf0cc2aac8f6d25adc789546afc7fe9940a238e874c300b9b8187aa56962d576cf2907f87e1b9a3969684ba45693ec62a4c1d12656ec53930f77107593342e0c9dc2d53d83665b68eb225f4dea4c6ce6ef13167ab4c8ab27bd461d5004c8dd8cf3a5397480084bfc72d66e431263b9be99c40bf6d6d35bdbe879b7938631ea04729fb76b85438250752dc624177c7d2ce7ac3ccf560321a227ffb73a1c91bc7ef530fd78408ee7ad2a6040a017057f2a0f855d5d863630113ac8034587324e502b8dd459bbbc619c4fc7f837543ba52a4f4717c096eb207500c255b7880e9626e146581db1b4b5b3bc00f813e2c2cf8642a3bebcc1526b71b299f9c2e2862a1b0292c97d209c03b429f6dae7cac4b236147f09def799011789681a68d2508fc3e9982a9f8543a8bdff8d49ee6b9c0f100ef39341a1bff302ad8062e96e4480860afa8720be26662c3b8576a472439c004818c72454313152eb8eb416c5beadb0b882e34ba7f5ece099b386ccc0510efbaa17065b85dec5abc924e84ba7afc5d546c2da84f7d08e83cc7a989c7a3fe9319b1f312ee803d717dc4e6eeea09eab1243497ddb816721dfe77a87600665f90af65c0b19b590224e7de79a0b33e3eae3219c26e9d729600db21ad8e74f457f15e225a33ba9e400d12e9c6ca908c9add373c0487151568f4dfff276802af99d33d054322c8ca52c25404140e32d4852c73dbf771d094582509bf25cf99c7c76cd2875509bfc7aad1e0f3023a84cec1c3ed1c2ea6ed49135eb9746054e37f8a6d44d146dea831dc97bdfe2bd3be33b942115712472aa5b6f9442d78a0ee5be189199d92cd13e51bf414e632e616add713f9844b50f4f6351c98dac7803ebade5ac7d93e1d16649cf41ad8f938c31c3e1fe66f35846ea3cc05c85c78ae215e283ab481c31b2a4d1dfaed976aefc7c440b8433761fe4d82857e8ebe02be576de1a48002238e8ed83cb8e2148388bac8901c709ff35b09dc4530e5442349e0f398c3620101d7022276d28f180217db20591bda3b8340414e8b33aefef1d55dc5b8d077c25712c2c92bb760c6546fd2fe48c28dd334d6cad69eba6529efa3699f054065ed1e2e8c0904f8508126594ba6062c9752da2d3f9c11efbc1d6366a9c2a6fb259b64fecbf84c845de38146d71393265b5a9ae672ab6306282b357bdb79b21e99cdeeff42a1480f39ce3d3146857d146b468ba112b4ecfd97334fb1800f36b73e800a326fa57acf8c0140f4d9129c095245c1556609fc0cd909b80773e4fb40a241e79fb0d4962c3b1634190cbc3ba0a6bf9adb1907f08ba6bf41416516e971a330bc6403c8e53e967321748b57546bf1d4b2a236e5f97a31e2e29e8a4556a07ee0bfb0e09e15899705b369e8fde797b24aa5cb09154d914a7e7526b6bd9e3c534ea96fd740b3c57498c2c93dffa4546c7a158d284933b581b5f24a7b48b2b57776cfd99d534c1df4f4c7ffec22d0b014d806281c5749c17695daa2a32a6a411d5fa58417342405a4cfcb210696e4c6ee07b8232f14c20f0eac08fbde5f9858fc9d3e586051fe58393902734252e2ab0bf9a175c9ea0bb2d4d0aabb3ab0c656f185582cb2435430f8689dc8c3f0697840348f33baff9181c8f10794a90e2349812fcf81920d58b45bd17740d13ce0b6447836a05e1914fdca83fce8f0eb9c03c8ef3a601721782b63b82f5501d1312593630e989b3110824676f45260ece7c9edc63ca6762fd4d31e64bbff35b48f7c81034fba49f7bdf57a2e01656efcd698a2ed6b4ad182e62304b124d9414e6af5fc6276647627a9a75b77ee839ddab7b6241f9a96c45e697aaf7e8db6b2eb0ee88f11d95b0493470d7a79ac28c7e7d5ca416ace7ba62134d124ed593310dd29407868a965bb305163d39a785a439bcbff51e35f3bf76cb3a739e85c1d183f338a7a2bfd9f64a3247a630cad6f8428715b59d51dca74ad4ac99b1cbf835de56c5b7a2974f446453b126e654cc4b2ed5a66e692c876096799534679ea8a3bfc752b63d56d6a93f8c20da42d9bf782b70f39f27a5fb107e76a189c75e1f5efbdc324fd930b3c4542b5758eba45481158a45264c4f9795b7eeb22c7cda212bad2162fd6473d869cc7dfe0a6c6e683652314be418246a2849454fa2e10781ab0a89e7ef1c54ccf93fd6eecf5291a02a01c00f8f444403a09233b06d642018489b3fa5592d1047ea22eef2c3a9a38699680059f4e48464983277f8a27db794b9d483436f28b2fcb8a25cbd00ef943995ff39842f4db014b3c0bfab25380191e252701e732f5136395eb4d58ce352e35a33ed3b1a7c2b8c71c8164b13396a499aeae6b698b9b08d44c9b9dd2728b380e4ba6d0222b6b7faf2f414e0014bcccee84a494504a9d16b2d5e1d35e3271518fb2c6bb523e9d0b67eddce645d248b1b50fa7f6c17ca176cf761471b5ede876fc5aeb0c8d6866f92776f136b3fbcb5a0dc5df5a1b7b2dd36739011606729c1ccccd916cb547eefa9f6c1e2277d350e714f1aefa1e244f293b260a895a52375c102464725ba66be5bcdbfa4a49e489a6ca8e38618fa97213adc2331e111d576116aeea332ee91c7515fe8194cd1c868ac7455d1dd4e17cc34b2a47b68e501a7cb7c9e1c8fca8fa565bab77ec1ce09a9ef4b2b48b29a08f677daec5dfd843f47ca1c60986b5999147fe0d75c1ff8d35f9adf4c31415ec2fb20dfdf2b0e8e1b62bbe43b5bd18a7b3bc025e431e7f5a392e41076dc90d9168eca1fc19be3409c63a16a0ad8794c4d805e2f84523d8511626d5a0b6a480a34e5709b40b9952655687a20f881a453399660649090a2091916f44b207dd3dadc9736f8261c9d17c22c6f061edaf04be4a4961319c3916a4f785abe6ad96d47bb5fc829f5b2949e3845ca274e9d81f8ffecc1e6ee660bfaf41e5e58403625fc7fff879cd03059b3d291546dd09fcf1b469eb68f30097b8afdcd9f2e7ceb41d894b9d5f0178bdd3b2537f48b8719df1f47a3e415393b096024f46999f3d8864606fa8d05e9f1f2f57e14219ad127be7163ca8940359631f3ca4f0718dad08ac6e589d46efaff27687113bea2406e43dd9aa40e5d7b9149cb4d7df8853565e8131aa2a2789e0f377aa6f227de1ee729159ad8fb52b76cb6f5fd9d0dc1abffa5209429302f071c487253cf20b060b336009bf6f43f4fd2e523ff8aeacce5aff00aa151a3465b7aaeb09b9f965520c95b0da2561aa07c03188440a6c37f25c07c251ed5f2244a5df02d204f5089bc349389d771cc01f34001da0b140b15bf48bdd31f209f18b2e6095c0799a30a80a65b60b844a6b423e56418ed79af0f6370eca090869420c70648e2771cd894984bc14878626edbb249b4564f7a17a485c4532d837fec041ea69860cd6e15a1a640cc09484181a803d23e936060be1c058af92b40e2d4602ca16ca16b3414055f94108c6423756d4f5761f11d4dd3fe211fbc02a11cfe4879569f1f11d88e64adbeac3e22b58ba1bab0c02255cbabf24ea75f0fbf7efdcbf44efed96c4d469db3d02742d40f2a444dfea5279cd4f0e34c451b702d88060d84c84dcc7084d993ec78388b0056215c18d11833a74c816ec9d4a33d29117eb62f292ba6448b9441686e3132212ff945aca685991e84c3d5a1a75b3ca5f958b00fec9763a3d706e483170f605f394d141c96d4c35a517ce89acdf4cc584d0d5ddcd728382c71a8e7742d5151ca56a5978e3ba5127e8595ecebf95ece1c1ee21500971859cab5a28c36693bd14dcfc39bc647d9309f9ef2a2e2dfa1d3d8750ac1bded6c2fe3734cfa8018cd7dc5ece04c010f297059e36f36460a3a134b908f156eb0d3f757273e4c728003a7000c721b330c090564201fbfa98eb89333eca477ea3beb8a300271d358c23e668a373a6b892442feaf94e79f5fc4d261f7ae7d4b8ad255b960811490393ea4f9526eca4cabd38ab185677df17e192d9a7f591c9ea9b09fb0120b189038f5f5292f3eeebe9652427f4467d49392d34c825e992287fb005c63307fe980db860356e33e77d239be703326c0c3bfcdaa8a5c16d6b6824dd7227b3ab065d293b7798520cb41382d44415f195b83aae92601784fdd3c7a84797a8223d2a27b95fc716d89813fafe315649c95ec9b9b6e955fa1aad78dd15d34e0c01ae63ebdf67fdab1e3ec8b9558599915e31c0f49d1fc1d4d2d9c2771f3fa4588d939ed49be1d0f652d7f2cd288a704bdf7230ba604f3f225ec051b56f3806c0dc029039a727d581c148beffe323213cf54149b4d2d03938a11f33d59280d3efc9a6b07f948cdc18cb7f1254288001b9b8a31de3fb37711dd3f8af443dda11b8a9d67b4c9614a7334499efdef0bcea61759135e47c23c20919f26000e0fb615d224c6e4c1fe72f07fb441ffbfc1ea721d9534e360ed1ab28367fa111903a911d416639eab0876ae0489c1e5c985eee080ed64e9ec8b5f251b9820ffc1504d421a828586c6bbdabc95dc1db285e87a29eed11cb2cda9f95d8d02c33788dbef65758afc7efd960a4d1aa9ec916024f55fd9e9193e375b6f72cdc68567355029a474c6f8cf18c0a0f6928029ee23d309637e81c71d19cb99c897ca6b60c03a00ec734845733f4f876b2a1d2466eb261c7be3c71e5c58140bea69413d2089d2d9d153ac543cb621d1ada95f770148641150977d2818b88fda6280f00f801c0141f80cf9c880e60e61c77d9453777d39380244f1c53d74e1c0bed4b71ae452faf0235b976fa0641af1426f0e68b7aa6d151ca60d81904257a057d913bc2bdcb86583e79499ac765465ecd82940faff1c42b376eb0a2e41c44adb66dbe96bd92fb118ac819f74c8fd0503857a55183bc91fdc56b1853c50a966874273144961c70cfbcebb38563dac17a7a33391112f5d1d0d91ac40d76919f0961a85f97de2a40d3224904e624fb000a0bcbd3383a46bba76b36bddca118f83997e7f4998390e014ae7e3e54aa791daa074451380d731d205cd88ccc3b5d8a80c6e28d4326f623e3c76b1df90ce0703edbf1ae2ac0daa8654916dc42503ef4f1060e6fb8750cbc674a681f8bb4c7461cb9e67d6b32325a038786c655ce448b4e0370bde04b0122012687dc49e6035b58709b0524dbad9e34d81b91f337e10629f981d3adfc1d52574a3ee59860daa8b94dd41a123d7d5e13e3287a163a9e10844ca24897b8973785dd79c0f0b3ecb5573ced6c301e21346fb6dce7dfd1fa2bbb8051d1b0d274ea570b833d8e0591fac3192349f762d952934369673518c5d3ae3d6e46c5ef70c3801b16ef720115a7caa8855c5b0efd190d32e5400f343be0e5d31aaf0f80e138154526aa43ce27e8f6db9737831ad10386964d800f8f4f48b212e94800c162c8de73834f6bc207389989bcb35253a2e0d55c693751f3f907983963aa83bdf4d70df34c32cbab2ddc5e67bb990d76b304aaf9ea3083dcca081007bf29df33a1cd582446e110687fc8d2faeb7f8300540743f5b922e541fa813bcdeb63485352ebcbcb2739a5d63f7876bd6ed00048a21bd40c6ca36ea914373a34174b56dda049290d65129d91621d6a77836220a17dfd5f6cc7b3841f75ea07cee4bd87ed1cc1edb9495e01226354d8e7ffbffc93e6f9173e9f344e168313bd02597ef1ed4781e8cfeb602828ab2d5f98acfde48c0ba10cc6d2a0266349399584552ca18734478bd42aae0921a83d6a2d8030b17c14c43bf46c9e747aa54fe2ee3c54c0c1c3df8c0cfa37978359976f8071ab96e1dae3b1d5a7bf40f900496b73cf7d6806dc45b3d2ff01798192672401fc7f6e7dd34a92a05fffc98ffd6c2102ea1d1173be12161468b96b59552c892f9b478556228622dd4fe7a242b69e2980ca90f43ea253955c786941b1d25ef96e470e6481bef67af3e1fded0396e587581001c8f70144a540d607d032cc3d701e539587d12f48adff222fdc93f9bcc275661ccef5573b41e62e3d53bfa97bd7667dc42237713fac52ab08d9c205e842ecb3646f412c072ddd83672a849b104935070f3d99113483ed1220b946a06462cc59f21013989fc09068b8c6abe27770135262c34473c5127cdab96fbe43d0dcec672f1173d12f5cc27b319ced6ddf14c18856c38380074040b97b6172fcd30cacf1590541338102e61b744ed2a3a0d9eba7d1dc0a9a0cc7c97e7f056371d484fea045a1cb5f4374b5b4840e301e96ecc22bf747c08d6d4e0bcb92c262c9ba43fcdddf315da1390ec11e3acc64dca00cdafc89118d388006ed08bab34f0590863095699e7a881ab9b98185085660c5694d1aa1c0cd8c638b1894f1ea2ce2c469dd6e4d087fb38e7bc37a25d0180e515bfb6267a2022dc26a97fce4cb181ed63ef460eb6c08c5ca58e1e11e2c3138eb8a053d0e0e82d193462a3d10ccb26a001e0a8b07b2ba89fe674c495fc8a232290164c594f89e8706df7b504005892cfcab9cdf48822ded8cbcdb9bf1d303fc2571b2b48a3641b75d405585fb5adb8c2d6d0963b27c7d9f05730a734b0081f552c3c776a068871891850bbbda47d66189140f141aca0ffdd1216ae217d7ec50a7bdfebf8ee3f2deaf182a28e2268bbe3ad5231af0f2956a23b2546bf55badb5111355f46da1c0441d9c56d7e51a7f89174890652077aef41cf0251c8321d05267f5864bbd71a33ef074af4d577ff4fa26a447becfda08cb4d58a0b87f338dad32c107618d4752e294219acefa0a88984bc0fb8a7813084253fe2913e9f56f22ebf5414e4a3096ac2226bea500428befac985a943afbd5c6d721447c8fca1fa67267b83fe40a8a349c5d3a66bd22ae195afcfa82619461ba5cc46904717997edde599819c78557037e6655ae874414dd9d870cfda15302de772dbcb39e274a3c7ba60df06fa92bcf63cc72542564ad17bcbebc04601a2fa9813f101a0816cc7d4860d27dfb1a83f10a25d321e1096b184c6641e48480c4159ed64fb13747aa83ae13f6bd5d4a702bf07a861f74e096ca59a8723b88b13330a53d2cdfa8cbe6692ed69d52719ec662d9726d1683f73fc86eac1d18e221ac52c0e423ebff7f3bb082c6044aaf46a5d4ba201e3c65a26c0e4289bba7d062140bfc557462ea4292d93b5e54234aa797dbd91bd58cd9e71d906b1eda55f5625b0870c36cc77be4f7fb98bd49beaa1a3bd589c11043526687e1cbffa11d0fce6276948117a1af79a17d775d14c8f5aa70243a33b4208f466eba008c954fa8b42bf030fca9b99d244fef5a2e30a0b5435ca8a80b9799e659b863a6ce1a333d494c56946b33788dc679d6931b40a24eb06fc519ce8d848844b7e5f834c4e279aa08a23ced63ee979b9f02f72f744734110a4904b337a62240edd3f8fbb3bce9af373221adddeededafd0b5e17fd9a29b0c8f2c6ae2e15cad0eea231023b3cd3cffa9a82da4a582996a98876f012b866759846d1ef46fd549b91e61b86b406a2ee5c28eb782d5f8aa790ff1ea7081b3be8c11f17042b449985ae0c41a21f29b354a06bccb5bf5aba78b216cc2141d4042c15442c5d52fdfdbb198018fe5b9708ef7488786c090247d7e3cbb09bac345fc5f482d69af8fa5c5e411262a128ec38d48e2aa007a589d9f2625556637abe98a1ea080e2837c612bc6a7bf6dfacb0b2a31600ffd9be05a866913ab869b91dfdcc533e5ee4fcec3376b2f9a21c2abd2ae1932d1edbf0716d4a1b36ff9848d799efbd4ebd5bbefc207a60eed5a8040a0bf1947160ea94cc4239665a0309f4aecdd49fe6d496d340829a7fe3b40f5d97fa3da34b7c1804f06e6e35105fb71026c972a8a434fdb74468cac14378e4fd26cb98b45990811295bd3d02230a123e8f5df0f8e2eb1ed818f0e44478389198696de852e2f7cc24cfc99f51743c8fbc15cbe0874aacb93e4aeee8219bc96aae19e32d11112b6bbe51a522a2d96d84d60bdad14d1034c9b28045c44f506a1f01cddbb5a866ead9f9331cbf1903cd732603cdab91a2cdc3f2ea6ca47bad6baa626d69dd2339ba1f34cf2ffc563227935024779e906653ed762d3c32002bb21c90467bcf53568471a01b298642debd96051a2ece7ff58cab23c00df7ba11d7a541da92d073c9ea3918c80918c97c20f40c2bee7d20295344285b28df2a43b5f32b9b41959b93966af081f8e855ce056939987e4cce18ad06b6c239e0c012cf815ef857da11671239742247297b653e98cc2390fd7bcb118fbef9f23ab0d96b707603b179da87dba500b09d011db02eac62e8ed172279dc6c188a0b958412fdfda4e3858fa170fc377f79939202ccdcb1cd4acee2389dc03f23a3c2b0366b514daf77984f5e7b0f10777159bf7a622258b449e912d93fdfbcf83c7f215461a0d2bc15a1e94046833698579294c8699f100bb18ee14721bfdacb441442f3400d48980cc9b946980bf118ff89fdc8e07a408248253ea5e86659db71f2a0a81a82d6eac70d2124671fffc3fbcca6a761e37af9646ed6e6bd71fac6b192f92a259f7bd7ffaccb4da95d098e0499c4d734bdf5596f13d33f349301795aa380ff0f8395e519756dfeaeb3432e731d3ac769f560294e4cfa48b43fff2af894c8bd017a037b60c7da4428edd9d106e98f3868d81906e8698c89f7b6df80ff6dcce7f46f8784038d97c698cf0a4eb3fe29d162d40996286ef4b18861db7446acd6b69b98d680c392aa1c9af697b791376d3c29d637a7094809f696186f8f529b096dfb0ca8f97e61ad82813a2c07873413ade7b8ff11f113d061af0bb896ba1771ecd7233adac6dd6a45c1ec218ed9ef7a8236def1a03dc4060b46e65aa6ae61c18b5d0618a918527ee6f39d45979a3ecdb59c8f5a7c0bdda1ebc7a1eab4e0793abb0232547c7a47227c12adcb43350fc4acbb4f41b36ebbb641641a35f3e3932f02f7a1572f574f0bc287379dd9ad00078e1249c0f1174daba398008d64dccb480e04bd20bcda8b0055a840b3b1ea48ae15a752c0c70f63576a1ea935dec979367902ff0eb0a5699585ec9470bba6f4b2d1dcf3828e0da8771667be237a5ad58047f7676eb5e7f406c107db24ea65b7892ca22d0043ba327e036c65114383d60b000491d09f5eed0e60107c1d3b4ffaff7f1739ae8324680427fa3cb0f9905d28367c93ab064e60496d6e434c74c40eb4aa932810f21dce468a8bc5dbed422b62a6fcb15775cf0ed15e46837faa11b09f0cf76e8aed9d251aede9965938f7e878ba5b595cde82c57807ca0cec04fec2fc3a2bdc41db0b64bfecb00475b56f2e0e3aafbc3ddc4c4409c676b24f1085c90b585321653801cd49f7ea0cb281cc49f86c0c37f048892a00d78bf7b38334b4ffb40806b2bb9c87dfcd8f893534db157af542577de837965617994f43e2c07d4e21ca38a69726979804da53dce09dec35dc547e01724be7d743901aa6303af641af499ae6777fd6865cb47174c45ed25d6c686979b510a7c672b5034acf0ed0c0981563b26a253bc5b297f402f3fbd4d8e3d65921135144b7292a818eab0fc648b212d843d290b11c848a972b2037e3b0e75204c8cf0c84ac7441c03006ee260538292601fb4a071a93f1776cc98039b27d9f90e03789040b1064a42d7b343e7f6406adb12998d15d941c3ca7761ad655cb40a0b7f8105a96a034d8807ac386d6bd40dc3ead929a44e6897ab2749ba20ddec86229a4a890cb525472c982de68520a234a5394cf64bb238e579198620e2845b21a3be2a941d1822238252d919c87e12bb5be11cc6bb6889ace7cdcd311147377e2c9f0c7d8e23457a05c1cfdc0577c7eb7ef46f316fdc1fe44293f2ab27595401187b7ce3279a28c70bc5adc903cf5c2a58845dbfd86ff806ff55517403c6f37762504eb361201f4e70516004aa84228a0113f6f9f0614abf9457bfd9b034965ead61a08e1a1a72bb3f0f3cae9283db0201c845b10fe30f3ec4a8e98a08b7c7710674803e83f3f2472391f6452763073b31e0a24a51c2707a4f9221b077cb50922a87db6fde8ff6afba116e7d0b3c2b77d4d2b07c084ed596ea43af9283a3640b5b15924794687c8ff9edc8c7208f1ce3b7e59b7901fca49f7238fce6b24a19ecc0f17b02feda80b15f7424d13da1c91a3f2bfc7016fa4b3b948f7d2d591cc0367d545c0d3c8103b89c35ff1bf93df6d7e285be22f0a143f798037b75e8dde57c4d244d77ca81b411736e72f2a9fa50ceb527527c8d7627dcbbb00be456bc3d629d510f37081e28aa8f9c1703381d86b1666916c55b4331e679f19c8df50fb5244061bf36cb50e027d45755372338a6fa7ce1ab13f467f7513fe562fd139e6f695d225ea275e845ed645e3744bd723cbe99cc822d6348a00b69171ec41a6432153412fd00f082d9ef609aa0c9233bab23f17b9fb318a079f31a85488b3159f9dbc50edaa79a800cae46bc0a69f933e3103b4781d112f1eb2514f413fb420d4afa17bd2b9432ca7a8e582b0c3cf63f6a96af7097385890b4bb08810001598ba042505f8e79e0ec9184c611fd6fe0959824cb2507d4e3a951685b3124202d397dd2cdaa1625a85542efe6120f8c3f8ace201e23daeece762cd48b2e51318861ca18e2213939e63e3f45a460b0b4df1551236b8f1a6fb9647075c45e194d3d57de9cca34553b80a07f1abc6e33fcd9f51db3fe3c3475843a36c5d881ce649c57f60b5f710f95d748470bbed0a875016837be0ea425fc0a4f9cc84fae5acf933b6abb447c39fba315cb1040b9ac729420dfca75b20557737c5248e18a500188c6b438866f0b98fe53400634ce03b9178bdeb8fe190ea3728ef0c7d2d4a64f28b9fff41d01d6c117ee487fda9348422e3e5d11ac0c7952bea4d8d203092e1359c06439d06d50fb55d9376937ef433296e5bfd4467e75b47b6fbd8190de88de3b862b24394dd1224eda4dd30711521a89c4290853471a0a36e552fdad50ec7184f70370b241c44dd611915dabc9ab3f90faba354897c8c70583efc9b66ffcd810c7ad5df977cabae4483fb84d18995d87549bc8142db13d40d521b8f7ba9826eef0d29926457dcf4dfb75ab68ae532a9800305f875235806e9da7d9b32c15b3b8a00b866473f22ff21ad06d10f18b5e2820e120598d54cc1b9125ce0e9bb7f5be882cab7a6657863cdc79a4284b9d2ed4d2da19d246318aa5df05d8815b60333f6a9c397ef2eeeb1ddc4e051574c211e3f20eae661929fb4a8239e81b7846580beaa3f98038e38f9fb56d68e08e3a11bf3d9fe904881a2a01914c43999409178a6b923a38e6cb2d368d365f7a05ecd6e0de8a84882af6a866dd68588fe82639c4aa367d764a70c18d49ebea6f75e3cd416915a7f217c70227a01606f87bfb64fe4f9f8b39f11db0f6aa371f72c5deeae805ba627362aee59d94b3e10620dd961b64ed430a6fdddf213b8847622bc881b05711661282147052f62fb411b8956fa5839c51fb3a0358153112dd55f4b22fa1a44a3ba7059c78177a84976eabd853184c6e4466170441ad8e4efc2e07b552cf52fda262cd2bb1b2cb7b27d19ef07e3fc69db774210da6fb13826c409d89e817d2bbc917ff3bf23325eda6608d3fe41734b10ebcbf9f5d921012bcc3e3ef12a546e3631e5a4e279554be05080bb03d9e9c5c83bf3b4828e7b70b12ce6a35c857c68dbb152cd6dbb86665a55bd2f0b686344df10838a6a13d0086f801647aa98a0ae87f10da2fd8e5b829c91d8645287a0307177fc93cdd3511a07de95c6c552517d49af02f61f51f0326a63240d3af901cc8ff01ad043e5748706bc3a422c2d54406ed27ea996018cc8b26d8e669fca70843b255ba2bdc9c23b5b909d1080085992c1b8017d60aaaf13d57ea1d8489903c01b177e3a94d00a59ecbd0b945afe7e1ae9544832051b46dab2869a238af6f119818e2e421516bfe6ff632666f89eaa3767f72c7cd07016d15ca86bb3d53b0ab5e35a9c91bfc5d35538ac67353f0f8f69527775cf2c7b29537ad0d83e0109d7537f3ffad3d08b86c67c6f80486ffa24a03952adcd4ed3e6ad788732a046f11e39648146fee3e064d8769247c5e10b219267e85432289dcaa379c3591758255396c0acaf2898cbbe191a35dddc0a92bf343b7a1e801784ec51125e33f50cc03f09688a892e4118dcc0bcb3b96c95a46c87da4a59254724887fc9df63dec6e7ab02182a96b018e559c069555f0d2471ff3dc28070a80d98eac0e35c960e85cb86a1fd1605ed4b4f720726adb0cfe5f511846ac4fc5cdcfb1970806903440787f74a2cb7f1d910810407062dcd3a38b81e57f0570c1d5c99de5d87887163019916f44fe047218b33d100a5d0fff44308be39d54317bc16ba68d2ac682aa8e049f8b2b3f7af6b5266c50a6ebbeb722568637ce9ea5f3786e0a3fec9380638a67f23e3242a06e6aac7d15df918477737c7cf667bae45b8c4a94113e3a0f4137ae64309f94801cd80f0e4b6454510b8501822e4e326c7e760f2544646c19fe109adeccec1f154cb9daae279cc9d2f24b25cf8f4c3b294e9562975920cf1aa6fa59b21bb2ae897294276c7a057e664d36c63fb93792ba4c3aa8673374a09fa3bc6c3faa36b066d449cbac4e552bd1f75130a8f863d803f9a9b0090c38c4f50881fa42623e3f274ea7867f11e34b46489193cbb2497e0d607a4165ef9c5b9407e4530d7201af60989efb1ec278a0e2bfc324687030673978606dffdf59d5c19e2cbc917110d614bbc0eade6ebd468486bf6aad52bc8446f72e24a601e62572cb571305d947dab0eaec75d44a3c4e60cb52a92f9248ffc9ed5f4c3abb1e01791be32686ec0f83376a8f1ff9277cab7c84439a84bf4955048125fc5072fa4e6e0e26508f299057977ee6beb1ac5439ac71eed0ff5518919df570d44e0d3736165789ef329be936aab2ed133d788102b9229850aab0fc5bb98c3fcee0832c5236ebf388290279e3ac7ebce98b23a88be77c6b12f248cdf4bad82b9512e9377f0f8162f89e269a352ac225c5b78ee37d4b61163de9bfe16d542a01b87f7172402e9e27fa3fac0f57bff7b99a8c4e6f0c9f8bc0964aa6c55137f6f0a3a5ff372a875a5c08571614847509048803bb734cd43f77d155a1f0e39e70f5579cf064b1a070f4b1522734c24e2fd2cf9976b47a8981b57aaa90ddc7b091f9148efdecf13596136f8ee6df56fa30224639fd58f163165a418603304f3a3c823dcccfefe7817f91050c84da2f606b122581785954184dfbf386715ef639ba1035b68e73278ce01afc03f9765cbaf51739e0eac65bda5420605f64fdb503b5eae5d367a8d62834baf9b706768dc74c49af8eb89b8fae21ac8b46a48aa986f828ae91e2534bdb79bef3b5931f764235234e7f48ee051323608759249171f7bad7991a8d59ad7b2696e1abbc8fb06d57bf051ca778c2c7823f3f3ad9be403f6dcc8d28a854fe0e3d9c83c0dab04a0400f844deb3ed08dcaca31104b62dd71824b0f9e2edf6b3b3106ed9c479bae95e1059b0dea9f687025feb04b223d4c26f12db7b97245c2e9b9836478df41051b6f5a01176db25b5749a738daad44e82f70560c3cd7aec98f6ff5862e339448bd737460651c9e78e486c13f34f92cacc4c8f220f0ef741772040e80981deec5aa05ec113e7ab339428f925a4a915005bb34ffad7e3aac4f6e3a4068df091b896f34dafdef399cf5a621a9830e8777d038589dc1053bcb5e5a25b3bd59ea6eb8b2fce6040205dd5659c5493e82f1c2171967eaaff559eaaba6a9fa0c0c18447418e5b7a08adcbf6a8170b4336cc00a0461ee750367042edaa3f7e6d71253b0f334153d977d45c321558f222e0ddfb58210f9304904884d234f9440081351775f7664c11a031f10266acf0706f64f591fc91ec96cc2738918875455c91bcd2a7195a3722f10424b82626880e1f7bbd90a54dc9a41212dcbb1bcf14671ce029a89ca150bfeffd032c0b2427446d6ee6018287784da9887804e5c87d8512935af248ef1cc6c84008f1449e6af8e49208f12d031328abc5187445ec01a735abdb28c1f6e3fc12b20ec8a54a4cde5d881833c6b2371216eb94712a8cbc8390458d839d54891af1704d3763d24ae85cbe0483e70470601ead1e5580a8f63168e4919eb82a42413016e48f9c2a0621a224aea93dde434a49b9abd28eb2ee7622ec35fcda7d338c1a99bef4a5a8177c1336000bc70935b7a121fd2a3a501ae5ebda2bd039ec61ee829bc839354f775ee0dbe2ad9d3601b55a506df1f77ace925c66e40e4072001308774ad8ab261c5bf4867db1a22dfa68082aa460a1df64b9d68fd2d026192c8949c6de69b49fd749c9bab50df65a661d60e3a01878a3842ca8e8e6c66788d917ab182f8eb95f3fb951b5c0fbcc5696b684a3acc4fdb962ca7f994dd0d9226f2028812cecface0a6690a93361282a167eaee0af4a7a325db6ec45ecac9fa14560522d5c925b084199b40450cba8debdf335bfa9e82d2369132aecd504b4e5ae85a23c5c4390c2561941044b3c9207549813687b1aefc436430dc27ba2824aa50b2a12eb05fda64be0ac9467d7b63fdb8ccc590fbc68b75c531fd5e938a5df17c602ebff3697520023362e542406a9aa8283c46ab6686e0c35004ec6fd65508f4a4f6064a1f8a04057e3170c05735543d6314c9385283c2ff01368f760eb324e2b11247203f135048b82c4b0786af49c56b3a4841b80e917b79bdd739408f81480bd3538f89369f301d0681157a7b5c697bf3d03c50e89167f9fcfc1dbe6ed6bbef1cca16d249d26f7b6d8a8f00cff1f56627ef9c9ccd38b132ecd171f1285be9d5c15b858f0422224f01b112dd8682f214e7fe2ea64e808e3dd1cdec9d6826cf60d716086906798274797816b0d6aa49119560403e34a3b019a2f580cfbe1d8c79f4d48b9b090463674a735d480f9e02e75d25042737e0ade17784af89fa5fee7321cd84b3683a39cc8d9d2b33a497b4bbcade9630c594cb147c41ecbb2e82a7134747a7222f6ae2fea0c33bd52ca51faa8cef40f6963ce1c100b52ecc5167f342d98b30f089f92102572a0e3154e2880e6f7676991171f68e2a961751713f5e95d2ad1b4acefc009944f8ddce3319f04034af5cb64815c8ee7060f18e87e9d0f84d6da088a198ae8c4c4e010022dc409468d4447fa7c041473cac015f3b6702e436d17405179e6b5e09c989772006a1b2baf2929625a8c47b7b68e419e0400a206d903af9eb60c9d0e48db11259455eaaaacba40232e8472bc58ff3037369a1266f2110eed95a16c0b4477aa82e989670d3170308b9485502619a38f711aebd71a137b19ada17440011b77336e2eec9442b41aa8f565581a68ab10663bc6d4c2da5635d8b1a4a56e1a00f348c5a56da02dc1fc44978c228d49dfced83d6dbccf4cfd0c38d3712e5d2fcc294c14aca97709c5dab64757f7d0ef1fc7ef12aefc575ddc5ed076a0e0266e2466d3bf1bc9bd95c4b32c6ad1945c81e1329eb7f8c453136d72d2a7b116b0add8087c4715f5b51c3dd11d07da8bffc6a87c16aa085761dafb2fa5bd59a94034c74e2d7b82cee0e4ca84eecdc8eb38a25b4b13451269910632e208fb56199a968b489cdc0d85451af341114a1e97de79a1124a026ff9955c6fb029215be571478b7eeb54eb1aec804c56839529d67518d446155c08a20814f95216fa1c5b18aa1b4a846538b1a14b0b4ead61947399454d249e8f945b04c5ecc25359d0c888505802190c828b3b94281362d5943cb40ccdf5104dccbf0ec61ea95eee89906277b03bbb28f57cebde66c758eb601fc4eb4c8e5816c3503ea7c50b856c56738aa56ae81fe3156dc5ccf68a4fbe7a0edd07abef69b254a6a50a9d34e123d0d4a90d0d849f735c33462cc49c378f40ded8358f4eb5cbb3a522e08588a6ffebc51ac48849a901d4467cc59ad69e598f29ec6eb69633c248572bd833e829e4cb02054973140a8e7dab720feda238bea182a5f210c2906f5bd6da18c7db337ae3a87ef1f53ba80135e0095c3483a525f5cdc9aa6efcdc3bb3fc6b10ca73140302825a55ac4c3a7082a2d68ccc54279036ff711adbb1dc5dd1402e86e03142bbd25e12ae91824766a851e08958a68e5852e818add56bc87815984331e98f41b364c45840ddbb5c16b4c19aa43ba08c458854a9a5034653e7e0d2c4d1339864f80e432aaa27423581911ce00d620b8ba89e6b391d7b9606e09bb74976746720f3db7e24a3b48512d88bda4f80e222431c70eb021459080622255d9f35fe6f1322a05739d66a9845121a14b850b5050bc0b6480a0b75088963bf5f80bc3acc2ae1038f9851bab4132e8ff2eea8cf45c39302d0c2d137861dbb5692b8e1d1fff7f5262c831b0769f96597a9ae0302c6b98b5b29f14305add628ff447a101a2ee3f4a55966f8c8eb3f546eb294f7b6acfd4d638e129ac551e7bb7d01bf5a63be7d10c68f4060d594600b3232387e6d426108c0039e3ec064f6b71e21743abbbb06e77e491257e6f6fa59c80a9dfb3ff87377b585aa04a758e76f7765727b13e23b16c1e398005f8ce53a0cf11ba4e597ce99d57cf7df7af9cb40e28fc13711c180d101c51965cd98b3a17176a86176306a4b828a841a93c86fcd3fcc52e32fa9f0c43f275dca34614f27c4350e2efc05b3504268c7703c6a69e516d3be040c06c0e71c865a7592f28379fcb299c93e2f7b3c0b97bd87fa881c3d23461d7fa6feafa0c4416e342efc0764e66954e2fb774bd19da1add7affc60c6af1ce62a0f8997d6c90aa116723baa9b668d387b7e067a00cf417db7d76f203ac4e494688e94e0f5f821198d23a0ce1530406a8afaf796e08954ed0320cc8592ce32bc32c5f0709da6f69f531276488a11ad8407bd90db3747e46599e51595229c2554842cef61fdc056a87521886b4975e806694327c906ac8e97a7e84cc93efdfc8da7280b9d4ec1239176c3c3a92f85631da95b87ee10b912b8297c38e2338500da02ec95c0e056e30500eb04f16d88586dac579f0d59b2e849b348843bb63d72b9c736d29401ca2ae575c5a72e4e5f2dff03bb01c6424826420e81fed6577a9794289ac81ba5bdf7c4801697622179e418b3471aa16d2bff14f24238dbdc53e8ea91a94d64f2c61a602b825a0d99a93519b3d7eb957ca048d96178594613b43273f0a72e4d868d72403f244583841f493fcd75353bb7bc43ca8b31e63504cbb3dd6bb8785b421a3eb90ff698ee0e8545b963a2ea3a8123b73fbb4a50a6c1632062a49a1914d3533763432d40c7809a0bd50c4ba9b6eb4705ba7d6340a07c9ed4c3d6edd01b91d6b391698b397200e8239d9ad0102f145d0e4232317af9ff4e690effc0f430cc8af0e3a3030c433381df4d4cbb69eaea4180b713166bc41e28e12e034794b1ee8094900cd521bf7106caa139cafcda10cb6e1d6b75c72e9d562263e8c45e9d94ef500e08e6337dbc08d777550f25323d86980201810911329e8619c4090fc26fe49e3d709817fbff6e861cd1c0152a4031be5f99ac50d2a58c41b49802602225bd3d09d2f2fd52d923ce94de419647cb0f1feed47b230a6f1400c9c27fe4f929b72ac37ea2de39ecbb70aae78f20ba126c3a6edf2db819e3b741a1e009e19c797b406c13105553ab61f6d35594a473e2ccdf7413094a5511f38caf86ad7c82043da969063faa55a13c9643e9abe48e12c1545630a04fe5b88252be90b7dde27b14dd4b054c0950fb707e370e80d945be407c0470479ce52566283a9fd5702b947a84e47b25aa07c994e28bb25861e44197d240dcf33cc5c40e04006f099e3628e6abad2bbd0ae4bd8a05657e77eb9cc1500ac16716b18bd21f34e9a990f713a5b96220035f5c1ac9d90cbe01dac83185994c7d61999e5811a7931b5d3710ee228fc305d9eb0565230bc3044886d3b585f6de06d18300a477ef7cd8bf59edc2fe4a984823383029e4aea16283e54f2a90fb3daf7f1124976a116dd6930ef01cde22cd641b03ebda63fa3a60013bbf5ac1b63cb8d8706d78bed5bac098b7bc49eff62dd9cf056aa3d802f896363674f619cfb6e818e838a62104891d6e9bf9c3b8df6d3fe806662a88c4167fb39e24b387467c15fa27bcbee3e420641a2dd39d3fa6110dfb623e0bac03e07627027f7aa437a5c2c2668ebeb7b6b16baf9686609ee5b372119c7c4f438c6da2865ddd4f124f59c09ccd7a4aca6641b5b1e65d06db24b3920f9bd1ae4ca354d401cf53f307c224809a2c16d4a9511682fff531467ca06161bbb9d6da1c039988c12864468de5b56d7d74dec08413af3ef96d521ad8c4ceb0cf5ca0ecdce7aef1962826af0b9cca40d0a3fcdae88dea402346592735b25fef7cfa19baf0d8067fb96c43034108a4743ede6f504797f0ced9bf9a34032ba06d575422b88aa39ada3e89596097133b74f9f21ec8dcc4c676f4fea6adcebe9ead79d4782e8d3c173560cf1775968bc8349f7830bee868ed58645a13367019958d23b89eb6523b4563cd687019087e090bcc703601788d6e62252fe5c119f12d46de285d5d3af808d6b2380e3421197df1386c1037a053c38acf0a998279afd1d3449a76a069a33644da63ab179b23e71f897758d92a8473cf2ac8f73d7e42eb06f758dd0058c5a0f6620afee1cc4200d058e5c88ad8297d5fb7ad1be0ffa7170a76004f0dd1c502f4a697ff84c9a4f9056f5d01f4220557b990d0b8c65069e502e3c5e2788fffb0b869f92d1d25da2adfadc02e178038dac7cdee8f2fb0691cf1bfd64cb4a4cec94417da8f0c3bd7fa66a8c51ff1e4a4c57d3698ee0bdfc7c0cbdf867c558c8a0d71fa3ae036e4a9430a78fd63b884cef7a753c2e806c7405ad0347a657cf15e041dedd0b3f4e38519470e09532bd472eba7a152eab8bcfc2bbf317fa7eb4a85c67dab0e03475ef5fd92bff2b863379a5897a5bbfa01ee48a50be39efbe84e20020b953f3a0e8ab90a6f803150ac9a6fee6015a27a7604380c2857480757773b1b1babf4dc7375a9b36a36aebb48a76afe61e6c50ea0dc3bdd6fd86f5fecd18b03ef68977752155ece005b22ad7893701918a59bf1818d3ddf989b9b079deb2e3b9cfa8f10a8f7246c84e4c5528f7f80b30b0c7eca9f70003a3132438b57f10e786379d8543f036af3f92ddf98623ab84d663dd06c50e4dc122ed39b0ef81e680be7d5081cc9f9fc9a581cf3542ebfe92608ca45972a09b42170af0f04137d19add19f30e08c5e9e2cef4cc1b504899fab2749e3240697118e053bad91546ddd4739cf02934ddb0708f9bc8a4494b1bffb0f0aa147d01281a8d9a38bb6997b5477ec568eb83ceb5a0c17153b0e4aa2b0c7032056e9e9cb52d905da5ea67cb1b5e5f8629db8d30edcca5076cd48a0390d31f4af78ef85e7725400bb359dfa0340396425a03357b55b7cb121a743df4c5b42a9036cf567fcd391d15a2511d60a28b3ffabbf01c29459f54f14114d7bcf68abc12848d03eacc9a8c51205e91690e89fb19a1efc7537a896e8c779816a73b476032f34ed5146e778de47e6522ed6c387a9cdb7e1337017a63bba3cbb891e9efffcefeb7c629e1fd232543304a83a2ad8d3649125ada44ca94a40c93087008cb0856ae2928660a0a2f54416a27cb52a99475ed64d9ff726df6ccd4cad36efd2cfbba23571c6e77a676e0ade0a826a0999a3d966559d6fca92734bbb3279fdc26660e51b046bf2fc9e7635fd2973453b3a76b509065eba7cc33c996b3593bd90debb3853d497a519745db542a346a7e9122468c1c39e24832126bfe7892067fba24ec45ee2b4f72a33cdff21b535e5eabb8ea3cb794a7833ecd2e2d0e9a7f3e96ea1a191792245de3f7e4a3112fbc56d72acacc4aa4c1ba4583d3f3d51581afb28575d42275cbb22cab263fe99692b223d7a7d7dff18de7705a3dd7937ba227d9d3ce5a9c3d3dc1619665d9955deb4faec95469bd28f49e4e7f72723a9dfce92d9b733aa9d2e2a8d9b71024d27d49956254128e9aadfe94984d6e13337f445470f839cad76bd5e0f6e319b16612bd518bd4a20ec548b6beced057d96dd422b816659eb35b67dd22cf5a94e79fe49c684fdf2f755f852a38b4ac9bd1d72ccbb2db532464d656ae7dccf5c4feb4394bf82a739fc2fdc9d6853bf59fabd426afd59584f964f34a9267aa7688516a6df8774f2d0e5f95c057b9337dbd269514ed94a2f2b55e5eaa6b52de5b54fef4d4e4599ee270e52ddc25615fe9a0bfbd67efd4043267f4666f7fa326147bfef4a2a0843b8072385ed9deadbbb27df6d69fac6c78cb41f6f44fc2ec4ba889f7d1e630798a7598fc86759c9e2ee12b0be3797afb271c5b58f05c4949794fa92959469d6e5e3f7b9ae29ed1af9b53f7525de3a969253169269a3dbda6474179f7554e49c1214fcae5a238c1a73fb928bf5d93d3cd81b799de7e0a8e2647c9fea6a9cac9abf80ae5b337fdb661943765dad7faf451fef42727bf6d29afc24591f227970be2f92aa7e09393373dca8d79bbe1c997feb4fdf6284b58aa7dfdfadb67d96f77cb8197f1987c76971840aed9adf54dc093b7cf6ea537dc0194038fbeb436b63fd96ecca690fef727377462cb8117aa602887f6295ec257ab6cf2d6c47463bef17a35a26cbf7443150ced00caf6bba4d97598afb49f1687498e66af17bdc1d370287d4790708750765cb3f94d066f05877ff6d91c6a70166970bef6376d556b565187f88d6ba11be5f05a0dc9f5ce9ff9e3365f92a3e66398e79d4e455d93fd1c81afdca86ba4cc5ee4365796b3ec2f9b936136013cd9c240b0c7ac13bec29162058765026a703e4faebed53724257549350f5e6cd0d4a3c1f9d7ed4a94e7b56a70fe4d7f49799ab6c8f3e77f495f12934fd7b8ff7c1310fd942acf9f3c7d8bae995813a07f5eabd9f85a396afe1cae158a8913cde3ce001f424d2deb72b72c27b27fc8d357ca8fd66f77aa6734e233b6f77429638cddcf3524cf6be8a24215790ac9b36e3f332379fe76bdc825d6b2cf328a65d8a5283ee4d0d9a0175d435c0941b3ca9827aeebbabebbb2ebeaacebf234ab7479da755d57e96a5ec4ba46ebef702873f79af6a5cf6e38a7f7737a8fbd4ac97b314fc4a4629e28c999f3a741e751ba1368061e7d5fc51af35ad99174cdf4bee4fd881f556dce8b727666574396bf7917b38ba3d0673f87e58a43e7226b31aa189f9827628cf1e91af9968c73065e8c8fb4d3931a1222a39292ebc2a1ed2e776d8e9aaf9292dbaf852091d735db3b86bd79ad2dbd94a5cf4a1e731bee4b4abe9e4afe2ae150e6122d97b8bd51f2d697dc98b192eb47eedb13deecdfae8c1e9048460ac50739e38f4a422591416dce854ab26c8ec41adc9ef064a4429e19edac6e3de17aeb95a03f2f6cc5970175d40d195f5afd37a87b37e6c4ba18b9c8d1df8bb0174599ca064f3a3179bafd089c1ee6100c099e3bfd8e324d4303aabc7350789262349128295769ede05bb672f0426c7ab8c4fcfeebcae08af1a131a9981e9ac5f85c988b62a676324dc3e14e76b38cc63c11f304969a73a8f125347d4572bf945f5196b367f678a906b72db5a552d24b7929bac200edfd95c81efb06449c1e1968be924186619e2ced0d297bdee876cca737ed8d39291739f4525cd81b34d39503649efcd6f3704bf0362356e4a8458b726583e7a5b694cfe6c9d4960a92e5f4d952a6548e3f38e1726667384a92c12db210ca01c8110b2f20b98672f69675639557865e6f98fc4625491d4c786e19a928f14edb9c7e69375383b14390486e1c5eef8f3d8761dc67ef6138dc992a5c9025bca8db30967986fd86c32d7bbf5c145ec5fed3de0879b2fc0bebd0f0957db833257dc7b08e0b235133c5579d960f6a7ca99dc417911be9801aac4335d6a13a54871a9446bc2971542ea2dc4f1ba703ea9a8ece062fec803aa006bb0e35d8f4ad3ae4471d909c1fd6a1b0039a3cb27c2c0c5ee8477528f60e1e1c29df537e07954aa552a9542a954aa552a9542a954aa552a9542a954aa552a9542a954aa52222a40624cae1cecc345cc28b9af6cf9e48e6a494ce961dfdfb7f4ed1852bf2cd118b2e04e5a2a03a844a722c23d5a094510613e236da37b5e894d193c3f914bb20912c3fcb249e5e7415e59e6f499c45ee8be812720dc96d24439ede812395734e0a042fbc72ff55a46b28166bc4ad0ee5f8c3b4eca0fae28b2fbef8e28b2fbef0e163c3c176031f3e7cf8d8543e7c385266871cb1d0021ff2a9db020ea40ca828ca118b290090231654fcc8dd0f62aca1e34dd2405484052251209a624812729b08c9ddf9c797f0242877d670a7e34d86dca66298e79d4effe08caf45524a29a5dc7edcdd7d2372543f8679dee9f47fa51cd58f619e773afd83608ad2d080e0ffe9e459218eeab78e1cd58f619e773afd83200d0d08febb50360382ffa793e771465eac21f3f1db8757bfca5c2dfc9b9e7163ae4518e679a7d33f086298e79d4eff2088619e773afdd3d06098e79d4eff2048430382ffa793e70dc130cf3b9dfe41b04d686840f0ff74f2bc21210cf3bcd3e91fc764a5e36a3fe3ca2c738104e06b500daa4135a806d5a05ad4d5a2ae1675b5a8ab45dd873479fbd97eb69fed67fbd9886c6adb88b68d68db88b68d68db88b68da8942aa54aa952aa942aa572bf15628f686840f0ff74f23c7b648fec913db247f628f773429c1127c40971429c502effe2a2f068db1c17b65d13d59e6c307f7714413a1fb54f8e8e2e31442ceb84ba209d501704e32242e79cb81b9a5a180952ba8884627c378598d7edd3dd7376b523471179f6d715020a0aa225e921fae9951666c9d3749f74ce49a997271095968ccefdcc18e3ac3c725755832559e5fa699b4bc8512d24547db4245a5283ddfd24e5feaec70f8faeb15ee2b7309b2f1fcbb2aca022933b6271ab243823475555835d7f6a10cf3a62f9b21fe5adfa382a2897b295d436b157a9231f4ffa4901e5e933311785e742399c4159f865dd2e9bb2f4bc662cded492d78c1817bb20ffe250e34b587f727b110e2b53e1cdc9c52778f27dc3b08fd6c7182351945b8f14be3dbdd5e8e461f0c28b2889688bea466e23571876250e8ab637659ed22717aaa0fe383179dc2f2a88106128e2f661c42a92a5a745165a0cd16228d31cb1d02209b94f5868d1239fba47bd11b36c9f31c618236663bc2eff3192524a0c2b5a83bb7b967590114a29d5b4951bea765dd755eb2acbb26cdb92bca8b5566be3907c6ad0da1c24f9d4a0b539f686951fafcc323e17b168c21016579043b7c51366f251b72364d69c19965dd99433a3d9cc3ccb3acb6476f2ccfa0c29cbb2ce32cf664633ebcab20c935916bda78c19473f43c3f4cc7d3ae6eeeed37d4eb7dca7bbbbfb749feeeeeeeeeeeed37dbabbbbbbbbbbbbbbbbbbfb749feeeeeeeeeeeeeeeeeed3dddddddddda7fb9c2edde7e6ee5a16a38cf7835aa7cfee6ed9b1636cea6048cd69a9d575f7e439aa09d773b42fdfe2585d66eb0011bfd069ffa9b44f6d1339f3b9cb7ec8f22f1f56252060842903119c29f225327d89bf39e4fe3e3988a0542ac561042525254748e0791e1c4ad0759d174c701cd74513d6da9509b66d7bc34eadd50d27d034ad0d28c8b2cc480a300c63830aaeeb5ac30a2ccb52030b68f4972d981998738763c0dd057d81eedc18750bc41a7e71968ef96ed999d92bf37580982706c1697157522cafbeb0cef3ba4b43a3655d7761340131c3b44a7fb339f337eb745a560242b0c0951d4b0008db4b0c4da704045c4220d6c08012d2080bc4a2933a9c8e94422d1649c0e22c6e2bc2db9eb34de4d4cf5e5afb12e81a0e87d6c26ae6b9f696d5a73aeacf97f5298e558593c2abdc56eb731647c51b67b1c9d19757b59c6c6e3ab52e2cd3e84f99b27d8283fcd1dce3b380c0513483a0c1ad47adf45a39d7aebed1793d90590d18593fe7534bb316a096b5128845b15eb106a675253687d2a9c4944994b4cfbac18820e2d34c35e8c768329927967f2929c983171b4c49d968d0d098984c6c3bf93beae42822a8a8d81810bc329f9cd82672fc2f947e016368e2aa64150210e44aafe7eadb25b3f52bf3579c3359d4f3a6476b72d6a33486659af5da8fd55e1fa698628a29a69842ca29629489b27d4e1a343402684b84e52fff3120685d268fe56404afa9bf1b6152e7a2568bce183bc6eeeeeedabbbdebeee983b67c4e896199cda1d7ec29fc793cda9dc49aee53fec3a03e1dc32e779fee337ee8eeefeed37dd218638c9647f7ebfac165d19e0b4be11f629645e7f7132519925772244a6284fc829e1c898cf8e4308621f7c3e488051980728e58837e7f357d36877f38be7c9313942c2b49c18387423fbe4fff10d36666441939d35d76ffbc54e2759cddaa9661735ed4a2ff2198c3cb1283f29dce534a122f3698a2725db8fbe0c50655562e0c0382390ac88a75596f519f385237ada1c665d383fd138f8361299c6a536bcc324f0db6a433f41c7fa2fabd5f767f4c4a0ec11cb32000700810d4366d5ef5416d03ab66790cc13b4c19c1d64324800f86837dfc0804c3fd85975d0cc84d5b4ea817477fd269f93545dd82b620c438639c34c619e39c963f11e38c71c68f779a4c1fcbc92dbfb01e1e4f3e28bdc7934daf4d4a29b1cbe6f1c0062396bebd4c3c7d4edffc069e7cff19e39cd865d199755ad46f10a4a17979910c700cf3bcd9a61c4acb12ddde701b32cac4247a6420036bdb9a091b36647b9c94e5468e0d4f5a1b36b08c8b3252664a8b0bac1a35d82f65e046d7df881104fb6d036244cd772ee65bd7d7b951cb2d81e6cbe6704bf02eb08d6037727db5aebf5a7ec7ec33dcf9eaaf7df5f45c78fa602f55d2b9686262a936cc57e2a2d3a22dbda7d369d1cbc2542a954aa5ba70fa72aa4c95a93255a6ca54992a53655a7fbf734bf0fa6fd89cb639ee96cd9973da1c4aa9cdb12ccbb2ae2db339d7755dd7856d9acdd9921c1d091182550ce36edc2839ca32cffa31779f4dbf7d76cfee9f3f674caadbbddbbbe5c45a5a43b811b34c92644b22936c495229214292080925d992c87c74244488949209d586ecc38dad850d073ebef0e1e38bed06b5084fe5c506674e3736e726a7a5d4b2bceb3235182f0cc32c3a2b8fcb6d0fedee1e7da6b01f47b951ac717d1399453557438ece861c5f0b03f6e336d3c7c7cad965c2098acd4b3fc37ede2676bc88f2ef33c46814511e7d1501e04faf11378aa0e5464c38914da71503a9d7a299d7a49765398e49f98da18931f3c6f8b8cf9823e24b6b1e068f885f1896615846314a2d47253d75cb08b5546059d79ceed28330efbca8f125442112e7572fbc95c5a30b2ff47a783dba1a377a278f062790855de1f164ba8223fb9a65d7cbea7b5e8f06279d3e6e19d0d5a4fa93e2114c1fa06b25bbbf7b0587fb5dc1e1e146850da8c1e9d66f5468707e8f06bbf0c2adc7d623ab18112fac4935a9c1d980c6a9431c8581c10bebd6a36b92d0700b92da7cf254e5f9932750d08f3ce756459e34dca88065357aa6150c3c1d9995759685313e98d62bf2fc5887e4f9ab06673de23a1cd7a38aa4c1b9f1f0c26bb56dd64df99bfe2ccb687db72a0e298fbbbbd3eb5fdd9f6617e5e44f9e883939a1965533cb7ab77edb7878ab2333439267a72c8bbeddc928f74cec48e59d0c8a1414a9143541d9c976b29d6c274bcdd44c4181a552a0f076b29dec04873b190e77322c954f7e9ba91dcf3b590a8a99da09342f555ebe2cface7ed7edf755d9523a87fab656fbbe4fd3b44e72a81bf26414f79db6f23d8d1c8d641a39d3d9ef6d0e21e44cf75cd771341aec2cf7dd985158101c52bdb55cb0e55b3ea5e563b4fc8b6f2d71c6d8f2dc8c1929315e66fcccd799193340f053c08f01fe4b6fe08df993dbd222e363622ef8dc3d99e166be193b33f3d2e6ccc4c43c17f31f0ebd98b7336ecc33356e1bccad733bb9a18489b9a0a6e11524b8d7fe06f73c5993893cd9ee74defec661ba987bfa93ee6f1abce1e79897d6868c8f89b9a7e7c2d357cefe0a876d74e6fe3319c9f26f12d03695a56be2902e8a64f9e189e6a70b3c780124a57ceeb330b00d974a7363c62a2ab77b706f7fb3f7bfa0aea1796bada579fc15df066a5036907d1a9a2bb3bdd25a6bb9fb616d87ca9599c602750d7ef9dd23462d6e8e928fbf6d0ef664d44ebfe1f094b5ff2e87c369afff7057541ec6ab7cc95d51f98853f241dc959494f7ee4aca479cd2772d259a5778fe700b40e60f7f4f83693468431a59fbafe5bf0fe37f38a4912df751fb2f94f19f4ccc832fed0d1ddbcf2c8375c0e050e6989769c13b1d46bcd319e6411c4e1a8375c0bccc6bdf1609192c849cd164e09dce3058c7f634bbcd41f38685903316471cd2c81fe6ba18197fd3d5dee88e1185b26f31f837fd7d1f6fc8c384e728639f461ad1bda591616070b8d3424823be0ec3e09027c37c77adb5d6be6573ec8d77d73ecc05431e6b6bbc8d4329f3ddd3c8c83c8daee95ee6a9cd91c14478d188cceda21072e60bbf17421af1c5cf6221fabbdda36eccd2dab03d120773577bef469cefded09efbba71f66a9bf76120de7337e6bddb38dd0b218d88b97bcd7ecc4b1a59c6ed98db40adc1c40d87335b1bb5e730d620f7f6f67f37768fffa6b98f3607675b603a1cf264fc2d1ff1bfbcb4393fbc44dd98bb161ad3e680bf5dd0be0cfb32f839ee51f665eccbb07fea1a8ba5cc5b9aefdeb20a90f1a8ff627ee63f1ccef80e7b5907f7dd73fff5db98a37b2ec7f6379cf98b18c7f6da6f58c3f16f9cbbdcf70db56f7904c4fcb6000ebf7c3030e18e1c16af686f7f5bd13e7e8743d3f08e6c9f0bb58fc1c5fc4d7737ec1e067351781ddee9978f3647cc6f5807eab9dfe90eef748ef90f4f8b04c681c29106ef7896f1dd73389cc17386cc77326f65c8bc95b11cf7d9cf6acffd2763bf530087b5ce7e9dfd9b3e9d6ac0b716775fbbeb7df7d407cffea941691bdc1ea442d4fe0b77e4fe1af335e6cac0116360aeb436220e7972fc4fe66130d620cc73b73f5e14cc479b4306c70661c06f790ec7066370047f03b7bf71193794f131be23a8813bddaf3df8dc7318d4f06fdb7f61c7cb7dec1a99e7601e068713e665647038612e18139fbba18c07e21bfcbe45dbf06f1beab7d7beac7d5f1c1173d2daf81ee66f3c83a18c0fe2616ee80417b6bc0cbcd3e0b7a070c8933799c1ede20fe2863bb9e581b8a10a72cbc7b8e18edcf25ed774d8d43611e70513e1fdf003666247de911967fcd2c6dc415d83712873dfef58584e2793c9f3b68d25474dbb39bee7c299ed8d7f5787fdf86f2d66e2c228e81cb14b07754d74d93013eef2f21ba883ee0ded3f5ed91ec6f615b3392d980817dfc29b2d7766af6bb4ff70288bf0ecbb19bc976cbf08affbb76fadfccce6744559e8a1808fe5b9ff6ecc38dcb1df7777892d5b018031d6e415f1a4fd5ebb2b1c46e27bfb1fdeec7317897e96152458debec53afa593e668ce5ba5083b1c3404c7ee59a1ab57259f1dfdb2eaa50a272bd3078dcd7592a6cb7791b16b6dbec73ff7552ae8cf0424ffe7b261e2b992493ac528eb48ffc56d922291d9645b228870df459c31f1d7f58bbe99386f2376e5140f3e964eda3e01d9a4f4e4cf08ac59ea951f2b33a78310ac9a22fbdf72156f27d38b42537dadfb40ca38066ad6ed77f1a8c3463d7a2f2a75f21abc8d28a56963f5eae222aa2e4afbc08937255d44639fec0b3d2d10a6051e3cbcd31058b369fdf6d1ceb7c3fcab87fcae9af1f1e983fdac48979f8046629b7f0238734d93fc63dd8c1e37f20da44199fc63bea002c353a36ac06040dfad3eb4570be025cc7743be4395fde2279fe014c3f3f66b210e5f973e295f931873b57a68f21413110175cdf3f25d0bf438a89a98540ff05020b8720f053c61a9447331b428d2f21cdceb6bd34d8d95bdf98272f767766be2e6bcb2eac02f1791ceec37f0173a4a1912316aa206f11b4d87bb7cdd1beb312b45887773b9b63adf6716ef102e15e9bf255302db33918267fe2fa37ed2f36c7c29f81a00df711ecbf5e7a382c05f616fb8d8bc2c3b4af98080fd3301c1836e1e96911d4b0c5312f7b7d6b3bf342c195dd9e4e79deb69840b3b996052b1ce5991cada88251aed22717b410946772e4c215aa5cad6db64d8f143b569ebfe3397e949809d9873ef421295b177602cfd64f8a5d58c63131c5b30f976c38987660862ffc000a247ca1072958e193051a644108d918321d5c008a226ba0820f55dc60880e57d861e8c7068415b12ccb4ab9f404e184ec13ab01128200c100098810f230861a2b8c1cd9b460c51d2e2d6401065bd080a3431f0186a2210cd9c10b48f880139e86c8e14b6f4f2aa1f2c8a20c4450e8c21678b0028ea7ae588316ae88c39b4e286bc829395ab1450f0a8623237421074eb04111d86083211cb9c1e2419fe029c2143d98c112cc4085902de0f81c828080c120658a286c47b082860b5b900391316871862852a2d0fedf35fe062bc6a0058d3f11910b552043f63f22126d5bdca17b88b2685012215a1d699fae69493b2557ed332351248a44447dbba741d92d8f1a949dea54fb744df7744dd8a92c91b42a098944d2fd53857b4164c513393c0dd9227eefa037eded4bcb6b0d7bf19e22b6d5c7a28d7fc5db3569da6fb8b57bf2b4379d347cc29e77caa1d1a0c561fcfae1b66dbfd5ad6edb562fd6a076a7a6691a113428391261010d9e673a5d9628237f665a90831ce210872347e000072fbce8a28bd5ea3232c1ca070f88dc20040d44de30ed511228daeaeeee9ffa82206830447323412b72f6063c582c5a0f53c8598e447a18031893e35b5af04c2550f1200965c0031c7c4081d36ec802d0c190109ab00514bee0049c6e03667dccb014f2e5075da3c5e8bcccc7949c34184545990d01249ef9b07a1f3d2f062548a552299c02bc7781082b921b320321c2b7182d9d629ccedf34e6e33612a78989f97c42b9df4728d6c8320124d6975b4273c6871f153ea158c3f337943fa12f099f12bea26f482ec0871f1191027cf86591fb13f205f984745ee64a9c5a146be87c7fe522d6f0bebf9a411a51c4a51d081c6ea97a94bb63e0baca9d51ed8c628d2c4bacafec16a5d3e771643eec90bce5b9338a353af7776a883580f8fe6e0dd28820bebf33328a0238e2c36f02f83cce111f7a3db9bdce48d7c4f8fece28d690b981b8415c4dcec88f7173ee11170332373aca751065e4b7dc17f9d8fd916f819b22649090902142cd459491cf72db0c7246fe0f57952557245f0adc00dc09e43e40ed63e576117007fdc8f28db83897c66d1f22d94594f142cec8bfb747943992e50be05ee00e713f703da98192e41451467eca9554c819f97f2b706986ac8a8c562b8832f24f970572463e8c1b43803b813b73bda8284719f9281747cec87791af33a400170077861311c5769f93526b52cbba2e0ccb2e2ccb34add64dabdb662dc77596eb3acf2b29297925a5d2f7994c2626272828a7534a8acaca5c59f1962b3ad764d3b9214bd6f9137b43d61314944de79eec0d9975be9e361d9daf5165aaa8784b158cc3746e88615ca4c2d3f90f5cf7c07d47e97c07ee8da3749e0357031bb852035766e04a0c5c7981db16b85d81db431ca5f314b86de4289d9fc0f594a3745e02d7831ca5f311b83a0f81abf30fd0792574de0157e71ba0f30cd0f924743e87ce2fe0eabc02743e013a8fc4d57904e83c8eabf307d0f91b3a3a9fa3f3475c9d3780cee3e87cd6f91b9d2fc0d57902e8fc00745e003a6f84ced7d0f922aece13a1f3363a5fa3f343e83c0d9d0f80ce0ba1f300d0f9b639fc752e1512c7aec19b42620d22ccc76d64be679ee6fb3121b7f14007be1f5b653e99504694addc0603dfaff968426e6301b7a9c03705bebffab8cd04bebf0ab98d04be7d60208052e241077c1040bcfc80efc370696159514939c200387f6272f311e04b259e11df7176ab1fdda6e6351a8f7d749b00fcf5d1a24f733dc766c8dc74cc8d19e6fa1011892291581457f12826f9fc001111290ae5ea74437984724399d43efdd340610b853d24a4899a4851d8ab2dc4c24ef2f11f20171aa221e6136e40b9898ae081f196021f9c264623be9a92d7d57061574f720c515aac0f5da2dca28cff776d9cf12fdd2e7a57ce7027d9dfaa64ff6d25fb573913e2172c267bfe4c7108f33060c880e1e282726969015b5858826059590162454525864a4aca4bcae9f4c3090505a39c9cdc1313933731996098becfe52b955a4a25252c259eb7e2759d4ac771299cb527bb6d285bad2755d34cb42c336518f661d755ba2cabc4cafd98d7cdecfd1cbd1e65e4f7dbce5146b6cde1b9b18c32f2dbe6d0fecde6d029add7392179a46b49a8f12504626a3dfa87d70179115ec7434a201e3d7eba79fc0071418686ba1f0dd22041ed2af71f158f39735c9e85e52d211616dcf13075410d763dbaa006bb1e0d763f3a2096af9655afad7f60a5d275958ee452c9b239b28424a794543a4aa2b472145083291f6df76373607cbdb8ea7265ae2c57668f355858deba2c5791d0f5af3ddef231d6b87ce8f9c95594e9872a3d3d997e8571ad1c1bc33cef74fa07f389269ffe0463214751141720972bb3d52db7470a18ff441532b46ddb1d82becb75f96910068c7771c12eb8fbc1405c5731171877622c376618976695920f4f8a5cee7511e228170cf34a2e2e3e0dd2182e3e997e8c245de3f2473190c448ea1a0b772a18b7fb69904783a6144cba002525657a8fb8b0b0b0b0bccb0d979817491227441c454f291fba00651a6219c3b20f4f8a32f5ae90a360dc98658c2ce8c7184439c61047d17ba4417a8f32bd4777a5f22d37e2dc1b7160dc6bf6e4d2df2fc851f45dee5d25f10139eac3bbcaf2ca0ce3ca5cb10dc6f5ace2bdcbed80ba96db55d9935af1f28b0b4d903b9f2843bff3c9148b3294e2951b622a29d7a7b46a62e2a1d0b3f8dc48e9ae32fd12172053d7859f4fa62d4719cca10b50a6af51a11c763e5e24872a3d99e28d621d40a44e1495a4563d40512bd00a0eed2ee58fa3a2cbeee9a3034ffeecf66e9739f09eeeeef64ede74faac749bee712332814eeeeeeefd9e039f241d2479ddb3372b2a168320202121212121212121212121212121212121212121212121212121212121212121212121a1811552cce10b770042e2424f0dbceec1e20a7bc89653772cb67024bb3ff63c09258824a1c410a0889e6a0b0b59665dee8e611da1631d129bc6e0852cb9814c161c1b25bf638de8ad3284851796a4fcd290aec122d630795922cab29445962522a5a22c4b4659e29e93efbe069d5c294cdfdd271e478a127754dbe7b4b0e0c9252e2253478d314a29e5d6bd5d5578ce94796e43434bb49037ffc6af3b240b7973ce79cd39af39aff7ae1f38a75e3fb07071575094e9bf32576bc3bce44a717de9625fbd4a258dce853c5966eecaee5e5534eab314e36e049205054929ed9cb32e71d91c93f73c21326236092254a89a667396d0baaf261fce39e7bce69cd79c265e69082d29a9f0e8211acba1ca8fca4f17bc5025482548d784415df34345a86b4caac80d12290dc9eee48e72d76cba403e477d5f66c27235d9ae6c0a62722f1f51a6af2524f7975c4358a8b12ccb4e40baff6eec214215a1dc5f2a51f9d143f4579b33b14a5017bcb0a41294fb4b434a5794884a596cf6866661c10b4b1b2e0db9611744c486ccf3bd7bfd68b04f54ac93133abdb12b939163e1aeb73257152e887785213721afa058e3fa7679b14be185a5212a43d2629707465906e1bd098d0665834b6c341a949d2c40119e26ed4bd6944822010738a24169b1b4f67690b5f80688b7d13408bee4d0cb1ae8a0aee94ea71843acfbaefbeed1dd0eba3bb48f781d3e3590d720cec71a4dd33496ef9a95977fc401129084125d63d9c82247c9fad9cb3fd1e89a1f5ee2f0254b22b2fc3e0e112ab2f2e1ee1ba86b7a6cd13f7a486791a550965564f95f67c3e5c1aec1e16344ca95a3e4c720bead6d6be37ef7372e8fba46d3645aaee44ad31a4806c676df2757f208ccb66d5b03c9081376417c63eeb5efeed775fff1d622bc9970c6d3bca4b9d2085f5934e36966bc0e9a57f99b96465d13a145a8448c986a83d8299a81000000007315002020140c094542914812669aaec90714800d8a9c507a5299675998c320658c41841000082040008c88c8c88c8c0900e07d906e37a2d359a2c6b8155bc4940ba35e003817b861ef1fa8de8d2e22751a9f689d9291fd7da8c221e3922bfdc548d2f411061022138b62508da232463b0ea8907c54ba49c8ee7fc3f35c2d7e2e79d2f56e9c08fe97e7f77b1fd2ff6c4bb10a4e089261791c87f54c6958098c5b96d46c364649da29632b60f2d70406f828fe6730285d77e31bbc6e4fb3281ea070ba83b0a7d3f650f0396bd9ecce95bf6673b9c73a90651044e2220f7cc7820627dcfaf124445c02bda9710563ef071b8716ef550ac6a28dbe81cf9f3eac583df3900258efb5cb33b57b777af63c87accfad8f32cb71583565dfbbd7ee78b0c41edc4f2e9a43d9086bb9bb8d682b6a282f4f8aae518158af7c80564b33b54d91489ce8828cc3a1a6935f1579f1f0b9e243447c9ac8a0b3a5d2e506c4ef4e3ddc5cff43d5810f0c0755f94f0a378fe24ac425dbba7928bb89cc0a55be79ec5eaa2fb3c90dfeefc875d4dee88b2381ccdc6eae4a7b86a8e6e640f753f2e910cc6f944b66a96fbfe7b4bdca69f08e05485c3be05c1f5eb035743b2aab182fbc6995d03458dc928968bc006473dae96f949d08fa30f1e5b6e1fb113a586e87510f7896f06aac9c921b0416f948f805e7dc9e4b1bb2e4bca425aa97448d7209f19b4b3e102ff9783f8155703ca090c3bc3e5049c05099c931a5d9cb4bf86695f2222665bed2debb92e5f1da099b7f986bcafe2441a382a12b682d0afaa937cd0045182129f292259e97d0d27109f8572e61fa2e99223402e629c3edfd4d6db419d8246f729918ce0e45b34b3284a3d2e92e21991aa6ac7957da553b5380c0d73062812e3e350e620d04e9e219309676faa3c1778b3c64e0964590e2929b72c9b206cbc20cb7b54cf50b18faebd1843c529daac92368faa921115b8f85862433bc841fa64b3e8bb58c67a2ded3714be68834524c5598cbf30ce8bba0c3ce110f34e0c945c4674e65e4fb4b960ddf9dc374848b6ebae4df493c8dd54530ca88cb66baccdf4b3c8caa137dca880b6d9adcd791380c4a076c728f40c0d0cdbfbe899111bb529363444a163dfee74b8a0fa79b6872474068d220ff4f4261c07d2616ac5bfe70d9fc48d7953a3ea54b2406794c2683006a429c142b93a30a0096fbc1bfd9010ad77ed6b8cbda6f84ef162a1c520d42e007c7448d954c4272eb2aee4dadde40355c75b618ed1fe5d1a41cf8069aba0b71968117bb81c7cad31d90d8c081e16a6070b822f431340008700688f1b2c8a32219d8d82591d3b0d0dd7030401cf80560a6fa5c76e987bcb16f81bd50e71eac658101011620c79f21e0c22ac0af50817f2499bb1b8d0267425060e54821d4e42600708c09b00c2af72f9e04664827f7da5e72b7212340043a1100a10226eaf5ab6bf85246563b3d5621ba4987ebfa19c4159f5332e252c80bf7740c106afeed5ec07fc34d7b7e6d02a300d0db04e06612e0db691160d1ed019ccafe771cb84601b17721f5a5312ec90ac8ee860cdb6403bb95d1183612400623000f563b34583068fc49071879034c703cf71971c0db5eaf00b596011ae75609a7bfd3f6ec230fa0c1b1338032c00048b2530238340420890370cd7301d8c800201ee570a2da21c471f1f6e82c2948f6475a1f1eaca768a899cf84ee13814e4c53e4990824df4822e012a788c0abdd2002acb28308b4daec21d03a9e1c0207fc73235deedc888b9b1b16dccc8db779b9c18caddc28a3931b41f0c88d0528b8dbdc35dc6bc5fb8957bd923a9c0a020231a10d10c84329e8d527616c4ad2ff0fb081ff3fe0c8a6ff00425286a565ade01f5aea2539ae918fac3881b95ebc12f86a4fc14a35dd3aaa5780f5981432f38b5faa910358d0dde8220ddcf244719a6aa3dac212b0cf1455997120e0df3d2a94978180eee9f6a1cba5026493e1299e33e45626fd8351c00e068f4a13550189afa0c1ebe7a28612610c8c5221383ec945dc0a9fd21c2f4f04c0c130fd0e1c345ee4367fd89fccbd056078a725477fa9695fb1b3587fed0d3761a7203b8cfd88be398eccbf808abf5796b12bb53a67a1931351b614c634b72557598e6038d99e49fda29242baa8f83d7132ece6fd8cde5c37d3ca68a7825563fd6ccd4b40ce3915d7a8fc01b5a95bf1cda019c86f4e92cbcfdee7dbd533ff52452f560db9e2d756d607f08c533a96621f16dd58b55f1ac7829a206f04081aef71d6cc04387655aebfe60f61b5223f78d9134bfcb89a209ebbbb41ca7337ddf29a97296f2ec0e1a7340f1b5c5049694ea90a9f6d4da57b055fcfb55a05c201e13a8fa300b74f1d53d01850992e1ec97eb447f447da186c1ae18aae5ecace28fcf937f0d4b8f0c485d8efb34d7f01760a978befbc1f9ef377c4ec7a48eff7dcf99c6ad16a14dde72ebd25404e30bb4d5451e06c5a615d646b6c9209d2a19c8be24784ff38d987eed86d975814fdf108a2178b37334ad7365fe86cfa7d35043b41e3e82314a15982637a95bd5f2b17dfb691714d0f9bf3660d5a534198121b1023c2ae3e1c120d91aef4fd9dda2b89b818c042add988875cb3f813c850e2d08dbf85c6332a100fc9178ddb04a8e106a45e9c9641dd75710adca2fb89ff62b1277d51fbe1a943a5773e13436ac93d8895a7311082ee34789f6c7fe7579d059633b3d008535c0d9f5725d48a936e43839804b6629cc9c141b5ecc2777a0c22936ea97a824130c67488588a4f77e807042e18fb502caf349b23ae5e84d712de0a57402942b1361282c3165576cc92b3d54fba4fa839fe7a9bef475a929da6c0455e78441384f0eca075da869f0a3a90f239c6c27e34ca059e1f8c09155132b831d06c6d064766eed67c4a86003a08ec5cf805ce7c71fbc3d667657957dc7e91f209f2ecb8e28add9428a24aefc4bc1408ed2a0728c3fc849752f0c2643360b18d06e17b41fa1d3c48bcf5370ac4130e1d6f4984a74f3cb7f2c4762fcf94cd035f92481968699192fd4a435acdb79f31e85cc02c3759b77dc2a7a9ffcd098d15189cda2219b8ad961da8d9b787a115649c4031893e297e541e8a46a8a5dc520e8760e0080b5189f40e6c2ec90fc90e7cb698305e4835232b43a387c026a0dc98af9e804c431ec021699217d1d08c6a2e62a760cc56dedb845c081dd7c517ca83a933da9c061617cc30aabcdbed71198c6ca0203641933452b9bd29204cb6f93a347bcc2130db716d3098c0a1a1c519f728228ebd87df5224819b7e96520b3e723d6d842cfd8af2855af4c1b6b106ce57d88103e84574f16b39353cc312c30d0542ec05a603bcbfc7f236156729000711f1e0b9aa9f1eaddd8ca17e123d6db05f66812a3480b750c458bcfb95860f8913aed12233262400c80c9d6169819a920dbed942012fcb6b6a9a644ea06e0199b533872a654a7f90ab16a64b8c7228520868f4faedcd5cf03499e99a1722870d3b4c0b13954f68288bc740121def173e302d7a1a35e346f3d9b44ea178ad26b8e291a3acd0f884f83022b7569aa6a9f10a0edfc29a35651f6078ec52812189c2168bc031f53581505a0f9b8458edf410ad30d371c146355eb46440db6232a2b0edb07347f277be607ba18a3d9ef36f8e8127893c8eeb3b1a89043ed4235f0a5637e9ad9c8dd3f47bd95de5bd09e8c06da0b971536a141f0dad0c6c864c445560914986cf4077bd517afa57c4f1109ab41a8307238c351f63bb23c3c9978349fbe2fcaa7bbe09f03f446361d0cfe6f37108a26c64a5108a7998a463f97af651a7b2a3c9e48896681b3171953cf13080699738ed1bdd480f89672939cd8be852ca12d3e206ac9033e0c71d4a5b3ab1d8e415e4047cd4b9343b078b81bc790c889d1e37a03c90c0195d2ad948e418a70e1f90f5a533cc44d6e79c300059b773c000e5ca79fc204d0f376c1e48ff8ce294d80272bc54879fc83ace092620eb754e1881d4f578c2480fbda03c90c419552ad948e438a7021f90f59d130c51aecce303727ab8c9e681e467344ec13620c73a353c81d47b3c604e0fbd503e90e28cea14d98a72653c7e90d2c38d2a1f2439d135166cfa8778fa1832bfde14ae9c1c8f9232693702690c410b1aefa2bc8b9155980a91d78e190671758c6c19766619b502b0c626549860723c1a2b803e96044a64594950fb728f5ce9e14ae9d3077178d0df618e43342bf429106c0371571638310220bf5fae92b4439ef6658a35f7e9c1f4d3df465ba1f6edd3743a65032ec0374a6491d22deb53289cc7c08fae875eb986ca594ad98af91181c6b6ebb4861b1d10c8ece0a3de630803d1da9859ce517388b1679c92f7320d3f3c3144521e6112e3b55b5b853bf23eeaa8fd605c9b33fef2e68010d2cf3c488f1bf686e5c4dc1726d55030109a22a82b21da604734293278627be0cdaea84aabc20866c1f163427bb8494d98dc14452100289ca8442cedd2f4b94f0813714241ce48eba0bc5d913d4ed26a7a1d222b5f68e9b1b93ed9625f4e4d7e1bbb8d1b438c50e410389f0a0e4ba66f0fb05c3e9cb8ac907bb483c9962de0a8cd6978ade63583459988c3668a07f9593e3711d218bfc021d48e38341c26460e044e1f1664403dc2bb3e050a0c3c96c09bf357b99a4addfdc31465e400af128a311364559b53bc515cc238c3c6aa4bc7e04d98edacfd33e2957e83d9d95eef80a89c602b1eb98cd3eb59bb054d643a06647943ce784412a535a1e24f77028e84a4b270760e6b6ead89da65d1818317415462c8c63e34640f566e67de4e05431a4e1a727e7dd419fb829de4ef52639a268ddb6bf55699039635837f66d7facde09efcd94f47167075ca1d3c9f29e281449f6fecbcae213221f4f29d4d6d48f5f26500ebd446ea8920606ec7a97c8c24ccf1391706fb452e7ec98d1c903e055c0312ca612eb6502f726ebbc8b6fbe10a068150f59ed32c2b454443e2b003941ef767e21d754ef678c22780b1f84e5824c3f3d18d075107689661788577743f029ea7825ad54c35713de719a7e1b757126cb9cf98b5833f6a9aa14a3ac4647cd1d7b87916d6d1234b8889ad0c7797db1d0c972c87f3c411845917d0576654d054e5a07f3fd318c1e526df2cdb46c145522f5583767de8547dbcd1e20009a2dc6d60d0e76d5f4c285c752badcfd3d43d60fe4de8e260974d0aadab4a6f3c7b546ab2873ebbf811aff36ab2ea414ab7f02ed6719daba4018aaaffb522982f677e970f71cfbcc00c466b34e707f456a594f0b118d43dea2e7b40540774b8b14c2888922f6a4587d92cf663b2af7fe27a5c7a0524b44b63ae8b7a9a7c39f36df8e087a2007a22d2199adb43a5a8d0975e915620803a1bbade13f5777b87236a260109da6078fb55f20a1f8cb65ec90d9b9563a439c60e8004e9760dcb26ba138146f3d118b63c0158895efb741556d62a885a309947b52565365739e36f6252b18722c3db31db960a7c5829f64967fe1978e30c70307ca5a7a9c00e36b8f8a5a283b0223e3411bc9c928b4f932df2a8bad154af87054da21369087ddd2496c8712cbd2098ea38dc1f8faa3d3daa69c0edc631fafe230cd35c9afce123f911f940d3c72c263f23b0d3d5729a6cb2a1a5f7e09e18549c87284aa01e1c1e5faf76f4284f39b35a4b828e88493f4602dd576443ea157198099ec88a8e1014404110d7e308d2cc63c65a83f4ff55bb4f28b20bca780a9a89bc9f1ef6cb3bb22ea9b21d568a89d3d26d415175782e167b912e75af8964cd9ce224196fe1df1bb59ebf0754c5a334fcef280962e0556a4239075e057b2b0fbc9ad42c58fc95c6bafec8f02a021b017791f2c61231025e3b51606d6cf136aaa33c7cb1f74367a1da90e13f27352132b7eaa21244603d1f30c8b3ee3c0a8eb4263a1a4a3ea7d374a54f97450b35a2a174b97af23b3f034068a46b066d7bba0a58fcb814cecf24b9330615a93c54e7c26df06db168b2d0c2e2ffd3f44052776064bef545362c9f9c9ef5eab97b1aaf2c6662e3b8686dcc290763bbd4b8fac39c6cc424f56a9163e54d2c25d54896f49c0d2139654a0691cf894c7b3df1cbc0509757738a3d9644cf654ce75b00b2a0cdbf9306ca315fc3fba7ec22a6c77039431cf3c32915a6e3f39b1923995c41809d1631c66a0d24a8a29270abdf403e4b18debc376bed62b2bd30709306b2923642f50d05fa00a16aa668d69eb6d9e9e58403b64614a27d33f5ae23d5754d27ce0e7f32562a57193ba47947588f4c416ec1723332a104f34ea2c7c2ccc7a6a0a826949d76d152946e314fb0f49722c6e953d8db31816305a09b2b812e843df070473a15a8444fe3b7fc5276175ea5db65e8d4b763778a2e84011187ce340f934230f39beef6dd7653007f48242837fd76dada150fef6331ddd59eca6a070b30d2372fdbab8645b612d37d7bf6f17f58a32b388136c270e3de21495bfcc141c0b81e4680ff63eadc22c76a47e174ec4d4a45e98d448c06d966592eaeb7fc21c2a9f023eea591cb15166bee30a4a51288eb6961b84dda81e5a334bb9e125926da7aad1f2c70726e01e81ed401fcf543b27f505fae7a39f651956b29480c003ec91818b55fb29110f6a98fdfc5077e999ccd4f37e6573adaa17cc7c77f4553d0f2431b475be0f07e6ecc6e07e352c438c89734a72d39c6689e03d4c7ebfd404ffbc8c9c980279276cec1f3b64fd09d2cd406571d8894145cbe4c4138949af5de8229abe748093074e80c13089b8e217c09c448731d87d8a6cc93afd45ff489c01345eaa48b7bdded499f502ffe75c3f1c7d38f5f34674d59abf40a6b6eafdce0b9b57d8feb683087b5f6682db7087a7e2814e6334011ddb4f3a21b6c3369e3b8897a2a8df9ba42f51a50d3fab8fba6b2e29b091a06df0b911b40064a5002fa5d9d8d55c0fae5eae7195637fe341a902314f5fd742ec32525394152f75e39cab6c2ebf4cbdb800ecc472429a9303a36897a73ade004e03771050c2757e2d3993d34c419245a54cd1a40d96f471dc4340d665a7e18ba40a32f8b1146b963df52c8870558e13af83ae793940642c15c2f84e649c5c2c74ed582b82a636bf8ad56bcc85906fee3de15ae5a917420889d4a0cb22ca167134bde65a3de61f7ee26bf2c864ab7d6e4af7eb268071fbf9ba3f1cf9088a61ed4f2da3efd69ebaac7c26516b07260d4bc67b79dabe22295ba21c0d8bc51c2aa311c3a0bfd30b633bd05469bcb3381c743c8353cba76fa3eeb4e37ad29b386b7e38278e3654013dde513d0f4c4b4e0f8f4a002442d893758bf8dab7972aa454d0d02b5d8a358889c7d9bb898b2ba2d8203f22628642a9a6c5b9037c6031d653b12673ba222412f08664b60f3b4db1017384cfe2dc6ef7092a707259266e61480230e88b90ea2010488e7adde19de8a93e289025ae8a26829a3c11e1d17e30882ec5eee204019f5d8d7cd786a0a2a2fd5438607861b00f597d23e394cde1f76941e84ecc4758c6faec0a424ffb7f2c63f212d0a422d8cda5635acb3f8d33104c85235146390a2bf0ff710ad52418b06ee9cf80591816de5ebb8fba6f4a696e397da806f3b49fd2693e1d12de495a37a9cb85fa3db4374c2c44a19d8b9ded3f02f4242b7e0a4e20192c8c72547ac51ff470458cf0405397374c147055033c2ddc2389e80d02298c70e400bd1ff899b656de0a400f3b13c897eaa60049c50e5416568d7e05fba16a41110f75664fff5c8b4897f063c963c19a0efe2453925c4e6f96809990cbe3e2502f7b6d0eb513eed6240831d361461efdbaecf8de29c302f09648976c0e8962485ad9610d2f4f06817b4b4b0ff25b5904df62fd53ee06d4b6b0564bb3436d9f9d75cae98c223a3e20a0840b01f37dffa38aaf46f3a47620bc61dba7fa31c42c473735077eaf009020bbe720cf287cc82790bcc683c8bf517ad98321d447e1a2052e41c25d352ac3da589fbe8436a296b0bccc6ca069c2654d0b185f586aaed395ad2cdcbb742f703fdff69a379738207249830df9fb6828e05bd5b026dff606103e0f71af4168f16dc1d1088da4787b19f41037f15eb26819c88a24752e3423b46c8edac8191ea046342ffffde6e2497e1f2aee13a90159943e98bb4a746a1a8d181b83442df8e86a95e96fe953fdbe7c94b897faab88118ec87f6be31fe03e450640ed90ac6bf5191f63c3f3a10ee8172d906f667e893c098272cbf9ed10472ca969383198424d6a1415354d171c8ff70973710c5565d2a75be81989ad2054b1c46813f0ececdca589add4a09ecf840e2fd80f2d9c9ed003d29f071addb0e8bddd1983b15746f81c780d377c1ff972bb3ff22446b81eb3b89caf29ffd64dbb97d61aa934a6d39f58c440d05ed0a87695d5325fe9e96f2912a935cce571c2a98fad74332914b0e84faffaf7b380b197032c13617f7b42fa2ffb8fabf6337cab228a7359db0b495835fe0230152e05d0ffcf94b4273549cec488f536cbb1f34866476fe393e0265c172107acb32c5bf1525c81ea1b38dce33bca53a4fd5b9588dabd916a89d6e07c25fa7f3407b5e1a38b9d5ecded4f399563ed159802905e41e8afaa394dc389b601c37eac1706c714f8d1f18f7813cc0105109580d585c6115eac48e882f888a23ca4d6e0fe3a9f02dc8871e3ad7d28b204cd24893f3d1cd6325656a02160d56d7436d1cc1f6b9d0da35bf3601b1cff06d4770426c44aeda059b77c33cce6033548d7f78cff3b6800b285e521fc49944eaff4dfea959df63982ceac9cc2e96ac5cd302395740225dc70059b4dde6389ca64be1610b6a532cf05a9191039c15a7f9276df342157f64cb7aa828611b127d2c172ef36d6c39fbe455b4e543c54e644b04245b2a260d7277bd284569ad41a5c996cd76a3d3d62dd062f488ad30186a4b75cdc28e1f469a4384fe07c13087e89079a57fe4de43f213c6b211e8d8dfe297672715966a6e48268621e4694dac52877876bf45e88513efb5604c855fc5cdc54dd4a446fab790ce03675353d10fa0338fbcf8271f0f1545e422220d91924487e6fc4cba95c9d4c3c06275203183bbff369ad93f038584a0ff727c840c5b7eed3450f840ed8d486d48280b33ec6500814c691ed491deff871ca151418b109d18cf026a04e58aaa6f84c5cdd65c3245798e1a1ccf5de4c725d446d1cc8f73f8e9cb1b56a92a0ad510d36bda2be82138e8041cc882b7770104bcce274953c6f93224f32b2e48733234f73c2162dc987f74ef55b8caf40a5e02b6411485c867c1d93f123116502300256f33bdf9cd315a789ea0169d4afec5a65fb5f8df3f03c077b3766d1fafd63b60cec6406e214015ce8d11f5538b5a6c9eca1faa27eccd1b7aece91641eff9a2038af46c6f2783688d5ef9453d5e466b41f28c1bc488cd4ec19597448d376365dbf57d772638fce9ea4033111ba4e0d7b6768a28d97aba314975a42574491fbcbdd3633611a8d573106665bc0869fa4164e4c351fb062c5165d7f274347bbcac2ee23859330285dd012f0f2235d6242c348e457e1d378f89cff896d67af3b2dd3f29148190b569bcbf9c69661fa83bb747611b86653aa88ea5c595ce669cfaf940616bc70090cbd609193a61d33986730a6a8a96a054cd82975a3f9633f11832acf2599de006ed6d88bfe10e6d760821b788649f6702a1926df8704d2b4792f3e08d02863cc3117797c404a864d19227410866b8197c6abd351ed068cf39ca2448e61767e52b2149cb98cb4aac91ccdc42163e78feda5e3b9e940837bad2743533572b2256f545648b648ccd547f7cb5c318e5c2ed81443b1e96b769a44e250f217cf85ccd929e91a21a8c4add1e41ecae2b65b020b96a76c40e1e660d1315004803c5a96cd0a8ef64383df93aa5548a7624c6a1a47326b2cd25393a78cf713767d54365639f674cc6d436174673be8fec44196c36ec774348055b524f7fb7c0f7a30d3ba6bd60167d1513ccf3e0b7b1a02ce0bbdc4ec590dd4d4d4e25284f62c7a931d71f2ad687246d70f39759c56b1a74b5f90b2a71918ac025f6850aa3e706ae1ea3eb13327f52225df91f5de3b123202211f23b766b16ffba07b2eb8b0b502658eeaa500579a4e0f4bdc281a299c298acbf022c3921c00ca54d3ad3dfc521c01bf014822d5c4155ab589cf3ccb925384d0d8f09674b088202188b2de730fe0cf9e1e2271731e450e33f7dcc1ee853140a4272da7c2afd3b9d61da5f79db6dad0131453d1e7213d2fd42c3df83371bd52b296ec0e225094c10b6ceb8129b0529378449e1cd0e5f26faacd7b3f33e18b6fe03cb5a6dd9d478737aca161bfd4bc5ab9169f5a3f84b746271d6ec463f46417b02eae91d81e6b9ea4033b4021f208bd444c42108ab954de4bbc8d8e91f4849132acb8358ee425211ee783b91bd1739def44b184726e7772cfb741abf57eb59e517d3e40b383c7256790b1114ad0cc04a7dbd4160f44c12b12a430d61961e528cb7e4ce49fb73e6c141d7c7034c7319052f3836d445043539410f02e7c77940fd673bad800f8c39b3611ee63d6452834253e15d17adabc50ec0823ce720b9750efdbe39a63cea0ad9ab701f4656815c9740d285e5ca78971f02cdb38cce4ea2efa41e60544f8ab95d6696556a653ef9de538ad191fc5872a4514039b52b186903f8f25a69108691487c418bacb062436d7f041d0904bdf8759f680d980d02d2266405b8d6cc91590b2da58b570932ecc4f3adca97bb5412377f5591f1803cb593fc56b1d13f6ae80952a5424450572631fca66f74c55ec1ddacd52078ab1254cfcdbb78f23298defe13ae474bf3dca30dc6bd67ee33cba3f52fd7e8dd1441f87e8080a8df6167074335af9acb2c77d109a5b2d8adacded3d1ec9527ebc6dae368d35e78ae99df89367b22c5cefba5c31fe4c350ecf9a1f9cae959d9f1a5ff480085466ef44f54c90d1941f0a74a4d544189283adbc6bd9f255feaadbbec18bb21d90ee3bba90e47bcef9df2d9164a7be49d88e4ded6cf3c278dd1c8649ea4365608f7011bd84db0999c0f8f62b769a8663738836bac00d7caac27ce3cc54b6d371b3600f7204be8ad98667006021500e3e6e8d23128b1eff1808280771adffd77ed641eaec564579560cb8822991a1a47e3f94d82d1dc0956fcefb3e76c397dcac38e5a1846e4ef66788c6bd2617f8b0fec57fc296e79f32e5b64d9811b47316e924dce8f3d1e79182081911cebb183cfadc67f445ad973b64aadb126d9074f816615bc0cff5c82e28b089b5386cf5e6b51273a25eedbc1f06c0a24397075ca16610be2ee692a403d84e497651206e3b495e7d19f9036eff7d926285396993a4d850ed8b49073cd4b274607226afbb747d85f5b464aca7451d02bc2fe42e3ff7fefdee7ab5dbd12bc2d7607c9c209546bb9b8b95b72e32740d294182a1ad8200d14017df52d2c60f4608ae0ed968021ddf3b8cb847432750f2d4c7f2f50440bb08aed90b82110b4196b3e4bd6b483a95cc4082449aac1b9dcc62075af1315635b6ddf08cd6db635f096baeb1366e831f16d5b19b8e3b33fcf00b2a9f21bcaff127ca27d9b653458dcd30602b135fd0a79cc67704928251b81acea08a915c8e97cabc81df72af02b0572baca67a1ac7cd01e790e3181dc53c515088f401f0c240a96307d025d26505565a818cfdbca874100a19e17e6546a5fa7197c7a2ff9c4d0956f679d7c2e3070f835ca955ef1c183401613465f6f344ae46ae68d0f84b50b5f270a6d60adcfc1724d46ccb943d86f29b53a53fa3a776564eaf061a5ab434a5d674aadce5252908cfa6a337586fff88f729398c3266aebee4fbb8fe9b161261f83210fe397d22b2b1e65c5f5f2cc3eeae2df6e2812d1f407bc04fc4d4fa4d6647a0d649c00d36357e6858b509e297bda079de60e92ac64bad74a8aa362fffae52e3fb52d84abca66bcd890eb0b0d6a8560c10bf15461f19cbd7e75569075f8ed10c67b01e56b99caf71cf7a7f7833bf8a22464f544fbbfe3575f12cbff77f5d6009e563dc1f89eb08fa6ab12a4845261e18b7b3ca664619e5a9552f5fae427a5314a80553ad7a242cfa69640c0222fd37b68ef01dbe9c1abf84c9030935176eaf5a19c860963e67dfd8f4a4fb6b53d63a66c800fbe1d11cb2981f89506276ad5859adced0018e6b8c99bef7265be47b120ae482f4d1b862403ddb0448b9bd0403c72edc1334e0980ad9e91cfb0497ad8e5f1de88bfc9c77e09dbc0d561e717566c5122d30e28a5b51428a16598b24201ffa38551606758fb4acf4ec234212518c3ac87ee053b5ecf1254c38861020f8fea4703e0fdb615c65eba50efb43e5cc7799f09ee142245bd48ff8ec859b2ffb49c77b48c970749e486d44a025b5e09c8ab5348ad2b0498b4ffb3ec1e1cce65f2c112cc8b3d37b71e6c33fe87bc11459dc0e1598519e098f32bcf8eb8f6e6e68801d301b77612915c3cbab9e0d0bd0d5beb186c53b12e11d4fd07ce625fc4c04fd5d7bd649945a5d8458185ec4085c1e0bfd1c46a45b3f79a9b835252e1ba0d5368ae8815bda10c7a87724a6dce0ab8737eaa4fbaa2fead82bc3e392e6201933eb1956d9c3d4b898e43380f75541cf218e46cb462047330e1bc07ab43ff59e5867ce5762e48e720b3725e065aa46e06afb6f055d01d534913e4e8dda2fc257aa9b31d368b709bd32081d22f82ef2d7be0d9fd14d2e5ef097cf9b470f5c9189efb7daa1ecbd080e9f434b01e847ae7311a2b06cf3e5e16a31efff0dfab051f024092c0623e8358c88148bfb74b313c27eb7f110649c73c848d0b809a0248fb69c9db06c30285c402335bb3a15b9480734100e211e6604cf32d24cb28a389763fb7a8107025b017cd9724e1dce5a97d3685e54e596df995cb66e3e44270193bae3f9d9c55bf3c14741590bfe0726310843b07bddf2dab2e41b9d433f52600ff8ba1fd77da09284c47b504f84e66681340f4b831fbc8e48c93c4e9263c75a61bf2c47da715adc645eb6ca8f419abaf04a87c9f066e415ac01824ddde05ec6e17ed54470efe67f7f57e59035d8220c03aeb3501346c863db36cabde11af8f7c50cc13c1bee6b10e52c40455c3b4a9089badd7d6502907ba4c61e34e26e376954800396bbad0af94ff518676dc77546ac5062e5fb3616b9923289170df6b6b4cf69421b60dc1a0b5d1e57d91a9edfb484f7348863b383503f1cb60007a9464bd4bef5a39fa00b51005f41aa09a1ae10a8161286cb01f84afb54fc8cdde4869eae423746ac4312e96363da92f7616829c9a8a17a987280307d80a0614eaf2830c82139046730684a9a988e410145656ece41745f90e6f72988e7a652e939085a319e9785e762d0d19de15ba1826ec770ffc945e1f9344b862a307137d6f1ba4e2cf43266c96945f7e39801621cb150220b081d13345ff524a16809302e978883261b8600edb5c21cdab86e6248be22e88b5e9fd3b362156e6b25a204d50e4f00d891a4ad5499b1cf70aa712c579a2510e7e94007691972e982a834cd3a2636f663549800a9142006399e92481178feca195bf77276d0fc91e63a8a39320090474e591ce216ae83310072206767cfb29e0e43daf2dcd8bd7c81695de8b9419805e337a44c749ad7c9e90f50bf8945da4038df893f1db5e7fbf4248ae4eb7ac4b8fb071a36609ee5608c9d5c7319f255992d690a625df59a9255227dac8a5118845a39dda223175f4955b6d4070883d057e5571dca7a625a9be30eda52f95da8cf706dbab2692bfba5276ee2a2e410040e3d31ba6b590b1c3cfab08d77ffebbdc1e13fdef4d7c6449f92f053f7947f0c77b05d3d95db404cb851c30d52f23ff93e23ba2a53246c9a022fb093af0dcc79bdbe35c314b91ddea9441678d9f9d030d5836bae1ff74e7fd6c9e2bbf1ad9a876fbe8e780869a7433f7ad584f94395b5afcd9536277ed65092d5dd64792e4c02b7e5e8c984e2d15cf4a00fd6bcbc08c7484387ad4c0947ce8eb67d0ab1f1cd6a1a1e8a0c38d5f7a6db9574f499dac99b8b2b4a289b565edac068949dd2266e50b79a8e56739fbee82b99d6786746b024bed02766df01147934789558083d52b62f8fe47f6229dd7758a7b5dc3b9ce311647f84533073596473f04112d1e3ec519ef4c25f423fb055d3fde4df304b931c13e61ab37bc495f97ebadebc470013d08eb17a9a7d6f71dcf6a60830719619b40ae36360a1ba8189e262bd318c0e2fff613a29943c93df7ef0c96eabfda93eb97146283e2b4d2d7eac71ae3b2ebea7769d696db3a231634a853ff6d2f25e228c0430ab258ae0b6e883206b0a1fb42804fb911ff914d4897e6b63eab839a34d3b1eda6dff559b5cfd942be848123e14bd846ad54517e5653273dea3d4c51bc34018a366ae306dbef5304ea297ad295ed045e6dea878522449fb53dc26234b3816a29475cfe26c5b7ca57a66d21bc75161525ce0a82f1828d29b90528c211185f8e068df5afecdc3ab0ed0ae3f005c5981471f6b91a74e9114f4a0e178373f158eefc243ef997d30d10efaf6d309f42942a2a6d7fd236d706fca6463ea5a4646205a655dc5ff1fe24611b682ab44f7e6762b000bc6a9d3bff959a2f80cd45d3c57f274577205bb9bbe2bc93d92ef0a4681fb85ee2bc057483f26e5d888f9fbfe316a4b46e203b248396311e8c90b74bca160701039d6b1bc2f7bf74ac63907b17553e0df6a9bb9b243976ea6988210db9ffc27e85a0d37a1c738c56d41992647491a8e285d285b33a521877133014b124bfae559d39dca381f4df59c0ac6a282618a53b93cf7dd1a94f04f8e202bb33f21b7bbb9f7c10da1b136c7014673453d0cd60226b0848415ecf5c739500f98bc7a82542174bad4358c78a22fc1fa422aaa0355cb01e2ca8e0c0ba1346fee9cf17aca244c6c21e74400567f0649dca60dd4258545694a18894019c201bd70b4cfea44327cb8d471e5740a440af0a8e15a7258c6f905d0050404973092d7059ed95fddb5169da96733467e25e35988f6dfb40b9453a15fcf348db6e5f1cdb3692dd470d0e6d44d1e36519bcf575bc986721ce0586963ba1c7b60de478654e9c16700c0c4d663c1ac4fae43f9510760d6205255293d1add996a168e5c9701cc6aee9d3969ea05baa9ae69f5e17bcf258cad64a2aa61f50a5c6c21b6b5e244906629c10bfe52c6c9d0acee7c7732534f88f7c0c89524fc5c60e53c4203f7c0bd8a43e18d36a5a220bcd508304079d649ffb96d8e136d4537d64a45f59c70bab85f0ff4038f9ebf38110bedf033aeef65ed6f629dd29701f3e9ab5fd4213d38afcd4a66a04902a40585bd1d038055579dc2f2c46de6ee2bf8e6a083baf2a9f3a648a8b858cdb28ca666457c11ad5ccfdc94dd6a0a0920624e5cc207742537fd9141c3bf6973ff8eccc40d9ceca842ce1ec946d1a60966d766d1cd0a644e26243bffaa1dd967a78978e6782dc7c4ef5740a971a30dcd9e9a4ad5b3afd5c737187b4c76774e642d448297911604b1b23004c335f3abc485bbc3a904f52725395a93c4a8f4858b7a51f12338ff8feb4a55100bd20d780c970f9707855c51e31b25db4605209374ac6a05fdad1da9f0da0ca37855de1cbe4b6e21620c4492084919ecdc92a90f98991f5f296c9a41645109a6e6759f4eb8c5d932a9deec344abe54d38dd536b8685f6b40260e109040307f5056e8fa98835020049ff4f1f357c0bcc61fbf9bc2349703e2554fa0351e31a1f854bcf0d71c401b63d042a7619a0f03dbe9c53d746899c4376faeecfcafa7c7644de1aeffff7312273836f1c5778323b22b77c8666cc9dc503467701d9f5cb7de4db57797a2eda60645cc475ea5b154751a451be6480ffbc7d288ab4ffd6b3d0b48beed955255bacc0b959e7cf882b2ec5acea0764b5dcc40adf98b845aace1e33964e0b7c887d3420909a3ce978c0ec0023c72f7a937189799328d69baf2c1a2b19825f1532d9eaebf0b672d0c3bb5b11d0e29f79db2bb0b7b6b759c081d79686a6970205822a55a206a93b09a6daf7006fd263224a9b3da2d8f782e86ae6e3155eb0a89e8b0a9e6b1e1fa96b3e2a431128d0bea62200987a702f6b5d6e0fdcca184cd36534c23b1ea984016a2161f29b7c918fdbde35a98148ae3cf90fd03f7e8e31313a4db1ec449a22bebfd79424fd3649507be005eb7159004fd6121cc70891fea003724c8c4bb43094a6e063beebc94c06c6f297c6eccdd747fe35d739962991be5e0c6c23f48da09b077885b7cf00760036a88551c5d04a5ef5569840e47c2905d71873a60553ba1225f528a32f02a425f9fa71ee2d37eaf30037986c4cea7f65e430bfa2362c8b2cf156b3f5c0e5871628f888b5fb1ff124974920d24da755ed50b4aa20ac61058834d49e68b5cd75df3c26cc5c215b4d80b47835f98ee5a2e2358436ad7d87f9fe41158df599e9f837a002ff172c8a731521c3edc246e3cfe2f4550c968104346ebf8b14afe8c613ccb036f3f9119e83f831b7ef93d8deade4c3209a6cf41652fa9941b2e358dec46df5b2a7e05e56b36d95f66e41da61d012db0a1ea8bf2b8e1e5d27390ee1d29bdbaba327d67380db4bd3bfc6a192c899ffed7e7d3457ec01360dffcdae6e24a8f09604e4b92720e9434faeda834b4b9802ed56d1d5e3a901e6ff19bfedd14ae10d3084c94f2e3d235140099bd2a749493137d2f763041a41424c0b475f196cdfe381d7f66c704e946c798bc56075f27bdd39d000b0134f260181e65944171718ee0fd847ee03f681ffc03fe03eb21f4aec286162f2147bc84ef2f741c8a025983c55a58cc5380df7ae8ccf67efada7299c73e1b6881c36d1ddf31960d0beb6a5fe9fb93323fd28d244dcfd9d8443e6fa8c9a1161037a43d18544599e8fac54cd1fa14d26a8670124080ac4b3b2a6f07d41c47de82ad04ac630397d7acb6e47b97c3d625b289cfc6e3b12cdb63ee6907528fa44a6fde35c46e85cee277c49f8232b13af2e579d146fe17af22a66c413f4e9907b8a2aa15d17c86e466b2e97d8f6cf7714975226e448d200678b84c822c9e64945d5ae9a5bbb9dd5b79de7d06c7e3116e424950047adae786a2908f9b2363000e6b7eca2fa88fce0e569c0a5779c6619515951a38545bf627e1707e2d0c541e5622ff5aab9916f34162897487464676303d52ac824feea69ddde536d64d137f858440f8ea5962b8b7f69245dfad0decc3583837335f86b143b5afdf7ffc11b85d15ca96a730a2a7ce6cb8b90978325767ccaf56bbe5f761067ca8c6fa82071fa1531a255ef543b05b19a2e57e7ecaa0dc27d333221f72dcd43a043aa467dfa1e04c93298c4ee06ddaf70c91a1d5adc4cc6df156f377db0411cdbfa8f6a7341ee916defb37f609b66848d18ac744990047e6f1d4c50e189ff4852602579bd15b9ab3982a10b004a1599589a27aa0a7bde08af7ce37da099a607dae36dd8c53e9da29ad8362ea185bf60a78866988087209e691fefb883f75c1ba5f9e02a22daa19669edb33bd677afc387a705e76f0f7cc9dfc88a24fb3850d51d422bfac59e59800ffc1fc6a75de57800966298974f1f9e9bdedb2070ccb04f929bab553ce52a71c6932e8de891b115591478080ff5281c4558b4cbb56e5d8a22bf1467fb097f4abbb1f33b045ee6660d0bacf50d3d526b10eff15e98fd1f1fca60ed815054a0754d6167f61a957a024ca759b0ee47df91cf917101db20b83ca3e6f841ddf9e78ed1fdc036f2dbcd38dde2ea924976db2de6d49c2da4df9cc68b0cf2ee228aab6b7ec73999e8e1803f384ed079623b05220546f28966303ed6d0775629e0708c56a3bff0fc901a66021e0c1595a8dd69cd5de6a6fdc01a9424561616db67aaa264994d80d31d5f7f6e5449a0d5bc5d81b4851299579e22c87aa89afcbca5d5701f14be35374aef6b4f0d086cdb44def6cd0648dee29b5ddff1f2ed7d386dedc6c1986941c3bf939226721e403d0242af81332c388aa762dca4121937212943481f9c3428326afc4ba08a400014ab154ca9a4afc84dd2af0a25c1864a03e446a76ee411fb09bd6a22c3162fe9e524ed080cbed1450905aa694ea8484e07bd5d9403a2f6d2ffa2b6ebc676b29c44fc69759adbef0acad5d7f28ede65d39848181320ee0afa04507ad937c8be7ce4d523c2a57c35098ebd040b3429efd6f39c9a8b28d7717fb6f0a884281878a06a021bc72cf9448751fda9202d27fbe994a5f37290e209868c10307be76d99be25de323a8d20b4767e6dadc9fa1646518d7aa8b956bceb5ccbc93a8cf3d1920a891aac411f69bc7631877dab5974d15e19410c8844d39224f35d4e05bba08e2fbe3771acddbc1386c16df0fed309a17f58d769c6d7f4df9ad9a3b87f5bee417ac9c81df672f32462afe9c176b6b87224730c5cff075f80b82f4dd7bb790691a4cf29cf4ca7657bc80858cd3960facac5f4e374e8c20bf876e5e28d52d5aee1b7d8b54047ca2d0e16034ace162fd53425b7163b43a9129b1687a5f96f9984d6438bc6797cdfa0bd47d094d8e7f2000329e9da04772a00f3cde9fa5aa4d44c3fdcf236756d968597c13e1f963a08615d0f9b71583bc273a8e4fb40bfaeab11fe6109f4ef67b911358427f72676bd2a4d90679a716932e1b852eeec628b6af758777e86c4ce4ad8f79728183c2b619f6b9c0b38ea5cd08909ce454ba3be7092bdfae67ab90db5f88ca6a394f8b510b21e26ba2083a104129ed221e8947955ee99754a1190cdfbae4ff872f15f924e669e6851c9958e48da3ff21ab8f1c31eeab63eccedc407e36f3df794c4cca6a78ddbc13923b4985f9577b9ced20e1ecfe9468e475e83cd9b714da186768ba2cb53c51aa670db5b713b237cd73eeb22fbfe7b19b5aba069cc4a2f261fa017083d5a85ba5797541e5e896e86d4bb43fbbd8f92e463936057496d5425798a18d907ead26037d0090621a6e3233961435f2a0db0685e09c45f9d6709986da16a221d60d1406eb01e661ea63aa62ab8dc08946af721f296b3569a53154918f3cb145b77fb9b942dca9d0ee5b9b0b42f92b5da078498a7831e0b29f5768d99497bd9fa1804a9976e77b8be66e4d60f64b87e36f55c1bae4b1cae84f551f5ff866b4a9c7f6d7884305c6939ffd586f388d6db55b8e66d55a303487d2a0fae3d98f683c5d837bcfce080cfc0954920b81276a5ac552d4b5b9453f8510988451594559414cf4b5dcf46ea01fe37fa87bff52470c0408c932ea165c5c5e9a890e8cb637a76e4f260c5296aebc4098ad354e5a760bfc4a911ef23544cc40923d4e774db879356c78770040ea7dac075a335194eae75b4c0395a38a55b8b870be3e1f539e1547bc254fd8f84937643420608a77a42cdbb0fde94d2cb472c18c78fec9bef475d4a4d638ea68c4e1c9867d34db130b8587ef3c5a31d170622b55b54bce26ce820f7ef099e8adb141df6ab479620b42a16cd410d3ebd17127df469c42f86c42dc8f322797dd5e8b00284c0cc1a94428cae312c4f0586a76ee1a7f224fba5688cccc152a7e59885416d5454634acebe5e3b7a54a4acf57661f0b51f3822cf477d7a16b437286220548f14defadde4023d80726e471908cb51aa92b6fe5634073ab4fbba52dffe2b1476b44239edb50163db9f3a6534bd65f711189fa0971d7e544e3c92ff8096433759e66a521f9d27cd86b0f88b577b513692cc0a31dbb35881b3384c56ef1468c4172348dd3a5edd9ea4dcbc6c57b1be382d33439050ea12a2c9fba9310ab0e98d8c517ed64be03e614b42ef844c7d2d03e725e15557cb56f62f2080fd19e7fa7da6fd3ce4cbb98c093eff955eb310f059e8dcfcf0e3a2552baeb7bdb55b096b9c3b66f842c79a3e6acea25d74426b9ceccaec6dd0db9843001316908432f8f567c0efac146d24ff8dd78adc8e98eccfd5e183585e30783168ac2df379a94e5b7a560eb4bb621c36f05eeee3d6b134d74a0cf9ab19642dbb59e1345570df37037050c538f5133d87ab52cb7a82d721287e2d232ca347e7896759d10c3d18844dec4a7d55262ad0c9796764a9f8c63873c805f2115c17512cb26a8db14ca8a8e774113f0c912a602422dd59deb702f4173bf894c616d50342afa4f20f22c3f77b1bf369fc4ce8254b6cc9ab4b3c5cf656f1d17ba6608b648b87f9cc80f85fea0119b823e9e7386533ce8ede279000bc660d1d9c0c71935c191cb0ba68ea58f72e725f936eb3d35a0a16cf7e9dbd134e1205aadecec2a6b43a0689bcfa3f1e1b3358dfe5039b3a45cdbe6c5100f8bc1ea7a705ed4679b942ffa890a30fbb4c2d387b3785ff10d9b0475fac20b41e9537d85a38d44aaf9264b87d32b6d1f6b86c854eb6f7705f26f47cf95abba30a2f0aa86359b1767f8c466c446577c3079c5c77042cf938304ddcc9aba4e529b1b5123d8434da254d51be4afea0bf9488ea393199b6e7fe8777e62e8120e20505ed625573961db68452498d8ac2c360d1d89dc8bc6e897322f941058ff3aae7455915e27a379ff2f8611cf0fa466deb2d51894d09d1bb2005797f18f8c2a8186c83ca8efc516f3e93728a6dd6aa22f4b01b8aa0182c1154f902457584b2ed32fbbe0b0b1731d4053b922f532c106c9f0a43c981def5215751a7944a63354ede652c60ee16bcf89b8b0703e209441869dad7d5d39f78764ddf5b8315d2706275b40711825027f2c6215e490a231ce3dd2714997cba924c22771ed884421af573eae402dddee8150d25961b5bb38e88022ccc654e0e6c345288d21f2e355cfca177f2f048f4bf433afc6ab458841ee6204c1a18b880230fc0aab6e8c359181436e6bb55f1974ff581dd78c8101cd2428e5d1aee710b98c17b08a804e177d63f1a69a391bee710357e63476a7b4a933c390b3f03cbd338a435f7e47f28695b925724976f927ab86ba34919c6c9cc5b7c8dec8d71d53d924994c29d85e22a391285a01f80213d031661e54c745a79ce62c94463876ee86a1b40277a811452204ec765541813702387350ab68fdc53854d01875f3609f5db1eff612caf0702d285e539ad03161512e812d59896eb5f11869c9c06a178d0c6a9ab2db082b3f7f7774da0c0ceb8184088adcc6b2de7dd24fc1d2a75de45c881d76eb60889855a458e0ab79a7ee72dab35eab8d838fc8197bb96fe6d9cf3e8b9da4cc271f2b667b41caa7ea02cd2a734ce4a41b3bf6a421840aaa25676ed789c4c0c39999a6298191cee145227ae0b26e54cd856e26e224b9ccc129f9509d23d2dcd293962e12ad04abd9282595c63312d895285bd34cf8aa7962cce962cac5b520b94b503f746c9c89af9653949b262877f804b6d0c29394ae0ce265ac1572e7129af4b029b2a2bea5db2f06332e62533b2ec5add4b7be9c0a94509fe699620403d5912030bd41cff1a7431e000a2979a09d1a5fa09379164760946d3285e9bd1e50c9efabc64b84be83c3e5c2c81c0d0972c57d7beee994141a014525b8f46f2d4a5c9341be9981d62c6d67a376cdf1415042795ba32aaaa83657761ec15b8a49a2657d1d94db288864f38c5408fbb1f6b86d425e4cd5bd98c2af12a3c227c812a79f9b626d89f60b8f6384f4ec857c22b90d043b2c2d11af7a42b8275fca08fd28c813f3228ee8e583afb2e8693d1cfa3cfe5af58fa52f40bcdc2bd28a82a6e54bc7c78bf503d6585428dd6c9e8838eb4caa1229f0c05b6d76ba153c9181d8846fd998955da05cf85e043fa07783f81f52199da6a6f239c4bafc994b7c816b0b0fb3d15caf99ae8397075983894213f003cfd59f6561165f25e64667b540e60c3008b92110a46563b2ebcde24b07f0582e0ca4840a33cd55501e4531dd89f80ee1174e15adb32ef0f012cf8a590a228411a25ac6dba896de5afd09cf2f7679072095c61b713e2a1f354c46c61779ec6a0850950e2cbaa158b5b201e1e007029d08fcf3ea2ba3086897bc13b72c8d2350efaec09bec348fd33db4184d2442b83b4c75984cab15cb5bc86011e2c6b88b75bff8a92e8211ce4385407a18bd73c2ca5ca210fc88d81c41da51da1d77fe197021b308eff072bce40d29002cd65c530f6174fa5792b4b148531f5fdbbaf80169adc8c7a7c3b08f457a4a29dd217c7af21822383776b1c85b4b441506a5934f03aef5cc586e60fac680187534fd657c14915c3c60cac229f5852bf959484fd9996cf9e1a7aad84cdf5ba8c82d455587af1812eee29c576ebe54c9cc2a1802cb944296193869fc2117426fd285ecfc7947e13bac464385f65380cb2884d6c2a934e9b2e31a4590199a4d95fad67e261b13bd76d5ebb04965bd5cfb25d3a215981a340d896fdd5b85844ce72f8c28b190d88a8aecadef0fdf26691e16df9ed1ec18c9b39acd785934ab1e7010bfeda8dfa5d4dab749fd4f63fdbab64f4f820c498d797830f8a54a3bd94a0cf958ec6a7890ad70ed958c51d05f0dce55f49f440c22b09570cf0fc4f4caead332c4b87275f910936131320db1649af51ab474053877c471f8d8cfb4dad60b4c2d9415cb576d3bda74f454d0502180c34f460c7c772b122c99baeecb5f916bf450f10996c59e9f5840faf7b905c43a0e4b70f2d4250dcb1c7efbfcd39f61d56246f9d8a1afa44edf5c1efb2c2e3f217a90f9f45f6b59e44fe56ceccaf924fc73c367d3e816ff31824727638cb64c2e27aef647a0ee1fe0c387fbbea79d588294ae644986741c97de4f9f93397876025ec4ae90be80ad19c04cda7e307c0307813f61f092f248a5f51b065cfec783c7d0a653cead106e720c3a68939540c2296351a0c4a2b289d26db8ef17a8172e394ede0d17b524563080ff8aa2d2ce3ecbf47ee258041e5e841b248168fec838fd80496a7607c3cf416ccdfdcbb7c9421c29c1f4dd871823ef47a0d8527ee4d7e50875efce1e0875e110b697077ac8c476e91122a451f96551bc1b499b5cfc6dfc98cd5b246d21b419d85d0dbe53724bdc42dc8564493fa88b237ba6550593df061094e8297cbc55fcd7bb734084d2fbb93cf893cca17ac5152d719215b4191dca00ce010b7d643a0632aaebf1e834b5c7e997fec24d1d720bf4a0969f5cb9a5e302ff317f6d9223542d2a01fa5441659efc89b16be16d11c4d02f3bbc28c6834bdc147dc38a24f5e6b26b1091c4d10b102344822ab659042862c7931ed90b2b5335d3436f820f980c723ada605b9b45b77424f143c380bca460a1c9c3cbb0a81d1cfae1428d071be60232158d121374de848964e2141ffea215791d0857d80881f6ec43aa7ca61a56f97bad97e9189b443d5672dd63b24745a7042e2c0423af8a0fc41ecd42b127b12ba7e30886407ac664c5d09d16da7de664e78d6eb23469b205361d0cf886c2b3877f66c524efa0715b249a7909fb8b333c8f14d2789437dc6fdfa93064aa92804fad92e28e853aff20fb7da2039d42ff42291506481e7317db41cbd2c50f575ac0ee8343d99fe4a9aed02bef9c38526083a0179107acefbf2660c5aa867cf87c77bc7142dfc443b07b407f9600cfcdc5667b8185253ecd7388aa7a6afd87a0999d99d5c11c30d7ab3132dfa894916db7a35a917b9af0e1681eec43117eaad71f73fc5d6fb25a558bcdfb4c1973feae10aa05a2c6284032c2042907113d0d3210a1327eed3192ae32fdfbe1821ced422d08b21b59dcde8784f28f9ff28680d3ba6ea4d9b1b5baa63f10dbc30b1cac3050683b13d7a4891d7cd8168da0813647e7056d48062339a88ac4dba282a67233265e3f0d296541490960eb7447d70db6187f235900b99d1e9299688ffcabe6a06b051f3014e0fce628490cff508e3ed318093147b3424ab745cd544aa82f4b598057f6d2bb10db9f362b1b83dc38fe8e169d81568888262cbf30b7e79a62658b532f3af90933c7f69e801f2e562a75c64782e089f0629fa0151066e7bb4eb872e3263ed030953a658de06d2996174c265649d63b3fed15fbcf2995604e1e1080902cd0e694b24b8ea10a1c9f12df8c2b0029cbd817463ca954dee2429120d94acb3e41e4ed32347f8507797725be4e852f34f6b67ccc8ef544803202cec26719a544185fa06f0c6770befd61703d7a2cafa2e61fa038b0f28d63fe5e9f8fb0b58f495b996be46bed2089e377a77f42a192a6313fe0766132c42bbcaac83b3414fe9a9a95b5470e55d718de74c051c8963f257446f8f7ec2e245d7619f5e94a25adb2c7473b0dad406d30617eb8c229d212be5ca501ee46245774daaa1a4f9e91c0709dcd98cb0eb09c698ab1d82841a8579e1cb63defcd523de51744145e1f68f78da496f0c838aba5054e1ba7d3fc48074e0c024c4d1777609f1d70dd4d108df5b7cfe6c83acc92f67cf4f0b411ea4f3e107e5f2520b734255e1445d3929496c0c203168c775047ece4521a9c98691c630dd1a86bf16e4291d44cbd73ecbddc2417969e52d2c495081322f0651400f766abb2411c9096beb24ee80e877f6fc191952e31ddbd41876cfb374344438d1790534983cdbeb89e5b99010ecf96fd38568b2c1085e24328b6a662e2386030dd01f8f7500d72f7a191611e25a94b3755cf78c7070137540826b83565cbfeede2a0dbd5c9cec1a1c611f6a75f2e62d6ab5a682f44ba79b4d702db76b4a45d057b03665a042c5ac3d415e206f51c62bb5f88bba7ccbe5e9ecd42ccf27a7cc9e4df0efa68166291cbfd1ebfa990a14b2b1c85cf7bfd0312f4a2bb751c4dffdf5207dfb26d0517c31e9c7a850979d42f7a110dfdeba0e79108ec35665a6e26f58813a15c10c05c7e6bdb67802d45c97106de0ee3c3804527dd924e8174bb2c5730b4e2c7f3611ce4cffa8fc03cc8186e44df1229f527bf1d5b90fcd2d6294f721ccf75ca4946672080116e3077fc5f8e68d9e9fcf30e583bdf3f44d88e97267a710cd19e3e2c5caed41c4ff594beeeb04506e01c8bca8415472f380300aae8cf33e756793f93d04abb6778baee0032d49ed8a51582c4a15d8b28d3da869741817966504fa55b82b333bd887641e732108d3cb6dab6bbf79b62358ebca781a69a4b0244658f52bc12bdfb085ff84edc6d3460b461c2f6b666a86881657a816da2196e3e7301b557af9f200b51d0abfada0ed114010a5da484653d0732de6dab0eb8aeb00769d0082474cd3003f939c6253c7cdd670ff32041e0782c7ced2f641a3a1aa7d985da3c59296028ef258d2cadc292581c19122dfd0201085540fd2b89d905fd992720f7f81346fe05c1e07c8aabf436069ef71585cb9c72d40cf221980243bca5ef102d72b86256e7ff2b6dc8722fddc441c32c93fb6014265b68255dcaa8d0512ecd0aea0a6cd1c0ef3c81f58a3dee3f73cef951e937be090350169e778325703e04cb3efdf9f7377382dc04ce1cd8a8e836197b4ed1e0a6075db290222a5ca51e41398c5f17a99fb55b21c1b29babf0de402cdcdb7d4b109225b63b35aff87502d097241cc8e47a173815701fed3aa43ec7d4086b418bfe6b89f7f923cfaaa06de17e1a1ef558698e94ccc6444360da3bdf1a07da7acb60a657f2907598869b2a9e9952d34e2caa8362c818613196ea4c90eac80f3b3815a39dd0be749e09290af5131680b85011794613c3e0c2aa7752f40e07537a39f44a31d6daec51eb64763d096385b2439dfce4fb9aa1f6fa047ab96797646eee15c092c78462f6ea83634a39673fdc938d6340613f746cd74c21bba12b675a1e657d367b473d39acbbae6349331a61deba6ad7bda1fec3db7d8271db1fee4ef9331b7bce5fea396ed70e7ef00c7e0dc125662e0f685e3bd69621066014ce6c8f28175ddfb893eeb6802a032910c68f4ec271b12c743deb5f87d53a9828dcae3369247e69a55f32036ffa00d7659e1f963fd372be4a14763f3aa44f5a04eb636b40066ece6ff2f4b9a835f3253921bd4008fb2ce363b1a9c3ada45fca90d0b1716adc261b21e5a4e24b4224e86faac82f50f5ff691dc4a3fcf53ea91b04f6151ab9a4d5ee28a88732b04c029abf4b5438fdda56241bdcb8989f5c048561d4d0bf70c18ae47ca13a3690f0857a36a125d5e66435ac25869ecb7b166496420e95bde10230f4720f46dab64258524859bb08cfa5bc659ab36536bd3e59a39c628c6a6e056244e9d84365a47e97265f456a096107083fcbc5d2189dcb2b1c8b761f1b86e0b221e82353a23ae9e613e6a109ae3d6b884eab8984cdadee56107ff17e02b7e5842eda29ec9ce448a1d57db1c35696c21e4c4875b1db090ecfc9e65e1dc33aaea7558c88878a4996dbd0247968aa1de8d627ec9dbc4867ac5df91b9b0271485eca390fcb16c91f449dfabe1b5ac962f14b2cfc9c616e88fd7a0316c46485c4b44f9167ad7d6d00c4614714997e899d8a48fdaa4c5b594dc2105424b41338ef8838be81a1d6b71cabeb6d84fec11144462181c923b4124f0c5897ed8e35c996678959ca4a0bb9e668ac29be62679934c25b81a28bd887601ceb6bd04ed15e6c50485cbf08309804661e5a4cc72ee0e47a121b678b90042aeb28339c3669e51f931f71011810f489c6a98abed56dd0f902e0b7147fd2d24b64a05fad01317fd181156bd838bf7c4e4b83b4a6fb9a24cc8e656189afc1519587c3527ecb76c610c0f4937af630d2d57c138f90c7f68197638ad1e15b7f02b5ab2d12b58862e2ad24b791ac6b501838c16c8f1e0186383423eb0c369efa985fc3896a41426b6547bdd19180eae7fc13043e54a0f2fd7600eb891c618bae5e377b19814e7c90c01372d86ce32e21f6950037cf62be7fae1ee80c83fd8fdf8ba393e2da032799cb48162e2b16932d9ae6348c3e431d2069aa9c7a79d89e3d30614d38f499309e3a73dd396ed98ac3c238eed98662ba550d1d40de08774fb80fd60b207144de75af41121c8bd91da775b100548857e45ba15b5f48a2e0e8f7793d5c4641c6ac9cbac88ddf83900a2d69e16aa2d2f15c43e2111db32686a6e3aa3dc71be6c7c3db2259290144a0cb0e1db6f7f9d3eea2f985dd7006b0f5fabb7c67fd55a6b40c478ea4541ef134baa352775e802619978313894474c416011b7a87265a89cce939f3aa81712350e42615e288de8f3d396e789198deaafdc37826663ff0ea136093f3b6e13bbda5e760ca232f14a0d435ff358c74581dd5fe6d1907f44789ece44e44113a29e9721fc134ef7c96d1f0efc6be7e13ae7c7e6e253cabea0814c483e908c86b906c5508816511cee0fa2d2b2ab7eac5dc4f556ad94073bf0039207e8ef593e19a0ca3c8069eecc88b7dba75783b3aad3325bae01f48035c4c22ef0026aa2b50a89ec0f47dc710b73907424ec3f76fd6ac9fef8db5cc94d037f0799f7aa15e2744e4390327aa4af33b53ca0ad8586e5c1b43d9630c6083318d361098cbf41455d0cc76b29f46fe8e22eee8a4071a277d3a74b56e57fe807913baf7af944bbf6b6095aa8457a81969d016262a9866465ef97e7a64a897d180b4272c1f02a5769cc16db5d8777ec609f999697ca856f1c358eb942286ba158fa1e4ff9c3f004ccbc4a90455b299e31aad1574697acfeed17e150f2a1fafa74b7773e8a3968293cf495f354ffee653f3f6bfc9b2a10fec11806b3e5f83622bc2db2890d15c632bca08dbfb76f70fa087acb9afcbad2d779549e524987a1ab37509868e52b7a22e1940f5e8110fdb5b95ad4609fbb2ef46e920e6f29bd1d1471c54c85b926edfb33f2f9919bfaa86cda9b60b4c683e04b0ae3e52d6cbf28df9c8cfffbe2fe002af2d9e3231a9a91d090eb0a5d5194c6ed031a9526ba1417b5202152cfa6c9cd905cfb168d912d78aba3a3ffc6fc001130a4637eaa1f3242fdf4507a221d177b282aef1f9820819ae608cb1090595b0d56aa59ac527f357635719ca999588bded5e113d17aaa339c71a401c2dc96b13de11559a917dbab2e67ecae569a6ac6e40c14a9ddd51d2e67fb195e23b3837acb2102952883cded2c787e5d9c5dc31811e9c8bc852ce979dec2154e8017a38de1bcab3f0d82e6a5341005fd04db133a2702a21a5a7d106b6b7ec622fa7478467860d635ca58bf40b459eca57175b7ec10791d8ae10f0dcb8c495efe825c53befdf0bc5d1f23c07c2df7a02a14e59d87637621b52e564126a213068c2aa355ac3eded8ea9ff02dd81860eb206b345702e4a9d52fad8771504d1f12865e43f06caa5a7967c95cab5b4eb173a0743f4bea34d9f6a94c6355f557d7eee1f651f271fb29d90f94ebd9daac3355dfc6b1cd380950794bb9620ef6dfaa66780c01024b3f3954422285a8585747102da7f83944b8c40eacb22e0385038ca347a2df4838fca5c17158101c8732e0388ebf40ef4901bc4103fa9d3a8a5b20d6596d0ec602f966ca1674dbbfd36e0a3a6455768b5ef5816bef5e3ff5fb96baa114b2a1c357e5ed7ba8bdf0b13ff0d01d001ab63afbcc3e65d90e06962627e46691a8fccfa36cdb6ee21d9ff779b5b5b5ddddbd724b296592320c0961083a08a7b9a2edfa66126bbe62a691354da2d344ba44a6d12b6612ed0a0468fb7819d592aa20a46513a273a842f2668311ae9b9f5e42c47f6a4d5955ebd700548a929cad8d65273012592788c13e696cacda78b5f15f6b6f92131ead3e28a595ba68b99599525a624aeb755debcee38e9f5e9a6bce814a65551c579ef9ef7b38e7c75bf6f25a14ea5a5fa2a43b01a034f64315d03f986dbd6c91cfdaeee509b49dd31943b141d8f65b77b35f16529042165944210a1d93912688e766b4bd4b82249b595a92a529591aada8a9a88b157543451d51515754d4191575473749b693663729e92629dd24da4daadd24a6212b33a489c42295d11fb1920c21b5b818abe99954359126db4ab2a4ed4d56a6481b8947aa268d849b66db7f3bb266ae5919a73b2d22d6d0ab9a44a6243bd736a55cdb8c726d33cab5cd28d736a35cdb8c72928d8631b658b61d9fb869fbe39c24d73279e624db1fe323f62bd55adf22d186aa2bccda59c724ca80033e48daf96e3849ce99030c38c20e46784194224346be45121cb06cea8449111f1240c0b9e0072620e104329045a1c94ee9610241ac00092dc0228b2349f80f7a2041104c402004a9490b4650c50f48e4a00a2834f1610440501b5c22760c88897befbd3d720868d83abe9c4e4116193b57f6d082263c30e17e9bce68306892b114f7de7befbd394901321f7a0003191358d4b04801b677dfd7f73e100f6e76d224045788c089278860f7094fc8b8867befbdf7deab05131738fe0106454c92b8077c0a30c0c06cab6cea8489117010def744b744a44f3729864851040e5471051324579ca0089dc20b9ab678220a267a30c25a61877042032a9e35d35261d326362862779b36b1c1d10a3c4a775a9881124a43f769b77fa53c2dcc00095a43b76f879d77d3d3ee7121b52ec0b34716c91659229a2b55776befc5f65e8c73de70cedba675fe36ad39aeebbccb759de77d1fe87d1f0886219dc9be0f0c994e600b75f3204f1b5ba190667ee4461e7322a6da4c09a926a944d5a8c69aaa2b59fbf1204f5a5b611e258fa7e08d93a887f4108ac745ba487487db55fb6633d2bd4ff623d11dbb2fd23d82eeccbcff45a2f2d8f7bf481709e9f779912e942bbb4adcc5e3fd2fd28ce551d39281a244b5e66beb2da967de92db571e7586a64606cd8c0c1934d6e2199a9a960c9a53edc4b4b9c5ef5fd36ac9a099e161f14cf694744d6bdb82707c82361f9f20adb92d08e7c62768c3f109d2dc867373e313b4696ec3b9f109b238cfd4b464d078de98f2b9f94ae6191e15cbf069c9c0ad968c6de3b00c9f9b960cecd392b171d8e7e6a625037f447b66e3b0977d6eac8c1af415e733097e5f797c3e4085599aa01a1a5b534393b3b6344138353436a88626ebf70fc2c1a9a1b159dbaea8080cc2f9683e1b570e9b2f470e1b100c3f1b974e0e9bcf95c3060c3f978e4e0e9b0f0c3f974e0e9b8df3b0cf4d4b46d69d0dc2a9a1292a4aa9e4c8f94ce26cf3d6ca81d3da70705a5d076ead1c3938ad2d074eab03b71c393938adcdda0edc449c2307a7a56d745e937846671b9fece3c3715fb6d1f1c9363e9b739f8d8e8e4fe6be7cc2363a3e5abb5e93a3be41697c13848382b4f6b02b08df0469effd6f5cae20ac3d1c8e372e146ac60feae7671c53a819af1fd48c9f31859af17afda0c6146ac6eba703c52d470e0ef79db28d8e8ff6427ce30a1a5259c9c93873413936419c8d4d1008a2b8a01cd32688cbb10902515c8e69da04711883286e25c7b409ca59e7f539db964eabf57d624be7d5d2697da2ceeb653f516546e7d5eaba19df91b97375dd56e3c2a9d970706a3cefb4d5b866e0d4b87036f74eae19337036efb4a5b26b064ed7fd7c47b6743958ba9cc327fbf8745d9873fcf8e41c3e5d989b72fc34fdf8e42ecc6353534b8e1f16161a3a5874e8686951b1d0e0d1c14243478b8a85060f8f0e9616150b0d1e1d206a85cb316d3e5145ebbc6ebc536a73cdc0e9c231e7f8f1696a5a6179793b5ef67c5e2e1fcfe5f211c515cfe7b5e3f2f15e2e1f71c57bedecb87cbc9cc515cfc56bc7e533a3e3e970d08ca0a0d3492568064fd08ca093ca0c1e1e7c527199c1b36d347e2367b69f6ddb5a3fad5618a65a3f345a3fad30f54383860d53aa991f1aadefd3f11fb97d39dfa7736ef4cd0d088e3a47c78dceb90147dd94a3a349c78d0647ddd2d4b4e5e8b8f93ef33f12e6d379f9361d9c0d07e7fb509b8e89b3e9e07ca8ada663d64c9ced436d2cb51a8c8ef9f26263c7cb8e1d3030312f366aec78b1b10326e6c5468d1a3b5e60625e6cd4d821aeb8f05e3bae2315976e064f8e30a5e27e68d880638bced171f3a158361d13a7566369a101b2006e200e8d1c1c302707279572017168b0908303d2c8c149b980345860210707dcb6940b0883060b39383a2c39933da54f87cea7a3338eaa4f470d9d4f87cee6a3aa460d1d9f2f67d5f742c7c75a4bce586b719019148442b504993682cc20548b69c34610c6a89618d386d63b5e9333faa5b57e8922cb6bc74b64697aed68da61451698a6a699d78e5618ee7c48ea70461872336c381b9bd369859bb163c3cdb039ad70b5193bb51d1beeb4c2bdd46a7ac68e4d18f27c4892e18ffe90fc50ffdce89b9b3054d13f3c37fae72654d14a3f3c4a3c373a54d12e9494c81f9e7f180d4f030d24593e6cd3f0301ac8f2617bd3f064f9b04d43ca05064883859c23d58b4f470d1d544b8c67da70b1c074af1d394e2b2fdc8c1d9b50c585fee1b9a14c5e84787e44fb23a2578697ece8794c5a7246579c3aba4856c637dabdf9f374c5a976428248746aeaf9538c9de250cf8c13d349eb211efa5962de3fe529284747e5994ada919a953cc8baedcef320eb01b6fd421e64dddbf778dd1f110ff2001516e2ecfce0843f3f382b2b3021cecefec109777e705660de7f67ef1f9c70db566042158a6ed1cefec1b116f6d6f2641e16f4e1c9f10173727c54545e401f1e588e0fc893e3f3670a69739597f7e781c1727cc09c555ec072e80ef1c0727caca5e12d3963697c6fb1fd8268e8047d3a3a41a9948b2f88060d3a411f0d9da0948baf89060d4d34e8047d18a75c7c6453d30c0d1a7482388e85e7c8194e47b59cd7d2e16a792e576b1c5dbc960e165c2d4f87ab35ba78351d2cd45870b53c6b4717ef6bb5191d2cb85a355e2439b37b91ac335f611fd147d4d598396aba1c396a5028555763d6c851d399396a50aa4ec9aca15423470d1101b70c62fd865adf3ae1dd2bcb0016241091ce902c1d19fa2620d095f3c093c1f3a8bbfc7154fa9e10b1fee72c9c33c565adb7f4ea7ef2bc3b6449a77e956037c0c2134752c0831b4421f6e4c692404aa2e85eeb197042079efc70c4d01494c07cca7677920329dbddad779b3a614244a44410d707210f001183224320d0028add42091e9448a22fd0b681249e889b3a5162468591cd072346361f9a50ebe72d446befc5d8af23dd22dbb4dd1d609b9c09790bd1a35a775a8713aa147a990125f432c3f8a94f95423c3b2842061b5f080c550a09a15e28f539d4082189184c0809cc2351bd10d8e63f92de1044fab60991ee8f81534cb14f93280826309f9849e3480ad521444190c1504410f177971342bd942bc6dab55d0bc4cec5ad3a1688e7f82bdad2aa86bf2b4d22b3c85d58777f6a6d12e957cc595a6badcd2293080893887bce243281308bb449140093e8158b2ddd1d4428c4d3fc6e088e08881711ccdd8b4b1ff7574baf58f727c6f8cf150dff3589708757f884bbe7deebb80b635faebb77c82cbaff8ac504f04f9c666cb7c45b3d40b463007899afff8ac562ee6a21fa5e0178af7c8d5aa462eea2efd11ddf7706cf503a738eac510b67d517fa91f68dadf2d4abf2549eaa6abf4ce334a6b019d206bc01400a803cc5009032e479ed2a06915d9f45bee0a8b31da3cb423c4dd94ab6e48992bbec14767d130adda1a7b835a62eedc22e17cd66ec158b7185b35620daf569389663d745032fc67fdebf8f5fa54291434e1e3824deb72ad5f738267da81ee357bda722b54a455524ddfa6294b78308824c7461d77d0703f32aad332e57356b561890b3c691fbf35e8e1c2f8733fe9b7bd8534b0d14f8a96c3a53a2497f8fd564f7a796203688dd30aa87513dcc7b30303014a65375424239d023bc80480c86fa1c5025929817b5c73dd308e5a190e4479d2ffe458ffb887918dfe3a87185f2d47b85fffc76fcbba2e97b57b5156db5b4a2e5152d63b385e6c11088e72a13c194993367cd7c0bcd8ac95d32fe46ae274b9e3541ecae790ae2d06f6fd4e8b7b2251c6dfdf9a945bd70f8575adc156db5a4b4c35d3f462cc650fd18443180a81f430837298dce8490b4ebaf982c872f90bb5c560bb007f15cf1209e2bda2d410d88e78ab669abd577abe7567fb52d4f1511c4fbf83e2e817ab80bbfea4f8e5391660f77712a8ee3be7b4f45f600aaa17b0ea8861ef79a356719a9f027fefbf702620db406ea4f5cf600babb867b9ff5de12235c267f8f751047ebf37b75cb20f3b77c8b3c5bbe86f461dfbefe0ac2903599cbb3a5c6feb541ecd62dafcb150db95a6a21690b19e3675af03d53ae4020e63765ce3267eecafacf7beffd3cd2cc99f66e7903509e2a17cdca983353964973890c7fddf966bb92e22ef24f5486559e7a83200056f81ebb02f9e263ac481baa0a6449de7d9ab4fc2f82d81df33d0e0306181ff35e0c797fc77cce3167dd37d87de2b05f04b11bc658bee4a7b0d592bf209366ab18fa1110b2f37b3b88b11793e84d2326224ca6c480c3778c2b9c553f86528fa740f214b79dc245733159d37c395d4d2e4a33e6a2994466ac07d9c6d974d6c306b657bf71aca30a6694b2555f2ebd711c6b74e7eefa291e524420d0783520a27e7c4bfaae423cc71f9784a8b9eb7c0121c55da7296372d7f922bac25da7191b9bdc75be8ab6bbf06333e62e5cbebcb3eabf8078153991a26807f10dc4c68ec06ffb2272d7b5e6f8f5cdd94b0877b90ea265f9aea4cf955497a78aa5a42eb302a35d2635b3f39397ccd9e6ecac1a69e7a8845ddf53fdf714bca1fa1e6f215d4bceaa9eeaeb7b2af2c4df5253e4f8993c5f3bff99c3c198a6914a0d94e8f2f94d235bdf54e235c6af97e557be3e0e40d6447deaed8f24cbe5c5bdd8eac122fe5851e160554a20d405116035500f6b52180ed6a4b0d5d625a534277e90d21cf0da2dffbd8af401fe797a0f7ecb7bf55379ae9a8b5602d1cbef5a72572e21f0dad9557317dddf9751a83287170c89f7b2254646684bb22546466aac12017256add97359e9b35c9249ac4d674e1c6d53664d73a9e5b535479449b3a629b332952b69a74bd004a27e17dd9bb2255beac7f74995424866181fc592419542dccb9c2cadeb0134579a51288d13459bce94a0ecd3dc74e64406b64973179d31a1b45d5c02443a7382b6f5c6f6f15b13f5b705f4ee831e8afcc8ef552ad547762001e8d6651e1ff53e6379bbd22748de66144a83a36e93960211bf2d290d04526db81bfc161244e517ad397efeba357d5999fa28d286bb33fe8bc47510f1a37eac7bcc8fca41f20652a76cfce748c365fe1ecf40eeca3566546595e6aefcd965eeca25851131b2a42e11a1d14e4a4b8294a454996a135151122c7e7d294cb42567d503582cc49567f991664d95af230b9922b232f55780aca952fea754aab1a4568676a68a469a959982789a26cd5cf2faa614b3c95da61674a772d6d4d9bcd9ccd9a4bd6279a6840e22aa69e372a4d97f8246674c34db94c7714577c05d9f967f5c25a69d4485077638abbe0f55225d3467d51bf79d68a22cba09e0041395a15b972bdad2b7ad0ffbb85c2dad6aeeb2656b7b9724f5d26f4fdf537be5aab6a2692d72236da459192bc2ea48b3e62a0a95a9af845dbf0aa65da3b02bcd9a14c63436ad689b11a31c2c810a33972f2ee4b74a3b9742761896a799c43651628818cc9b216a23ab9ab3aa3ba133c718ac7e1d635b93a6912933979847da7bef4fd3c887f7dcf738489a326779a0e7799e0792e69169641a318df4f7b869641a318f40aee3b8d29c9932d3c845338d5c2e9abb34d51c1d63636c6544ecbe2b4f9369d78d6c594294186cb5e4acba83c87d57ae68cea2396b89fbef4f10e41ee4de07f8dd485bd57e7f26cda4ad6abea275e46a6945e3deebaa775c39d67e4573d749693577ad966852767d2053b6652613ad89b6eb27e9a7e00bf475e983ae68ceaaa4f70426192c93a7de360bf177dffa38ad41bd6dfbe2dffa2db77ffa5bbfe516effae6f6bbebbbac7d1db77fc19c0bdea03018f2acfa73dd2fe4497ff0fb6cc1d867ebc53e5b2ffb6cb55af6d952d967eb44edb37582fb6c75fb6c7161cbdb676bdc67cb65af64eea22b875150d7dffefc8d889aeb7824ea9c47994c8be378f472d73fca564c2e2a460087b02ab02af022bc88279e78024481174102d739c3ca3155493e6eeae40418d8dea64e8cb2d8278b0605151595eb5effa5d6fdf282def6f5b6e5cb0bf6bdbc80bfb675ddc26bdf7fb9f66582fb724b1cbb3ecdd76621d6cf658fb3cefad9b3678b2434baf4b76d7bb91befcdf3966d5b6e434110bb245bef8d2d9343c4b3fb2ea96ba253aaf40b8daadd4155c2488920dc89124877ebedf6089e01c4fa77c549124af7de774b8a589f15a340b4ef3f7874f5b9abf32db4eb475ff438ee6de5084016206719dcada5b30238cb3e7929abd3db0bb97077f511c4ee4c8002c8e0eef9fdfd7397eb0f0bc1f3403ffae83b11eefade939c6e8423b91297f9927dbacca3501e4f526bfc93e04b5ea341d8f4bd08d4d51181f2b811ee047520501e47eac1a637e0c1a64f2b8f2ba935fea73fd19485face203bbc94857a0ac260b788fa53886b4cae949a915dbb3567dd24f8021b0f49b2a9b8586cff6e0adb5f6322d8882c90eab562df80eedc26b892ca73a5d41a7f2dfc3ee1d6f0f6ea568ff4df9a776be569f546deb79465bf0a6d44a8aa4790645b3f22721610b6c859f62d91ca5a2355ad96082377592396c8be05c2ba947daa5ce62cfb1f1079b0eea23649111e5d9d35b6ad0572967da65fe56cfb42f6edff08025483d6a2a852fdb358de6aed25c4932aed1d5e63454aec56da491c2531447dc2fb56717305c65d3194551fd30c56caaafbf4b1f159818d4f211b534af34db8b6bcd9bfe6fbb90cfe985cd58adeead687ab22c2a8569f73bef6576bbdaa958dc1cccc4c9321c8ec5b4badc5f75a6cedb5d6be1396aece16a93f2adb2ebae8a268dd9dc96cb7fc8a01d0a794c6ebdbb2a7fae74c9758c13ec5ed4450dd2177c8d5e1ea8034233724217caf2f5212ee0643df3b2489bb2149f162cb485a7431404714e1608058dbb61d61f492b79c733e42062c2eb6bc6ddb760413a04bde72cef908a54fb5e56ddbb62396c696bce59cf311589c58b6bc6ddb860406b695bce59c33123ca454b6bc6ddb868409c254de72ce1909242be396b76ddb904842a3f2965b9c464207e31531c69c2e8231c6f8091b6724a0acd853de90a862252cc2813f841f095c783440753317ae06515c740db2506d1d58c9474eb807ad06202533485d9a1227296b730f5a0d404aa0803420254ad0403d683500e5c0889ba14b4e9b3a5182c5c69b3a5152450c21bc676d31d8acad015f1f3007b27d727219683e49331809114107a400c2148e7e38021418bec0c6494cb0f196f1125272067256bd25c633cec218638cb78c31c618638cef8cded44993214d84e7514b6f3672edadde813ba4123f675177eb2af6b5b3dc5a6bed7556692da5714a43dfab3b8e4a69a8638ceb0f627d7a800ad35686d28035e7216707421476be39e79c73ce99879c4b908409f83271aee421e76c47b0734e126567a01a6816b5a913263b08c248d2b7456c88eed4bf3b6c4d7a05e2e9d56a9ea64110cf1bbbfb3c319d62dbdfbbf703ef5732443a75b53b8ea3a58994d2dcb037ee95c930c639e77c63dbb6ed92d6c81ad53c8927696a92c9ea501dea946ccd59383aa58ee62cbcfd6dc0fbec942cad36acdfc28582e34271d6f5ed6f83d76e08940688ddf595280dcdd2ca43b73f92bbc6f70f95b80b159ee109b6ff191a79451e10db1bea94ac4944e543256b0575854f50967752b63f2dcf8ea9bba2d362bb47a406feb38b0205feb393627ba784dd2d2174b1c5ac19d2ec163158110d4b7d1111b6b211591925776d46e113d4b50d41592edbd1ee5a481f509765b256d826b6279da72dc6c2b9b2fd69aa46eafd65fbbb509efb5beca5daab3dd3da395798481ec17fc923431a866fd0fb4ba57ee8612b3fe4945364b704b5f157214329ce6202c9500b2b28cff7fe6193d7d84a2243b62953a6c090dc2fa282216982cafb87522a8f4a7983dee1fb87545017f8fedd12d524b2bd7fc703ba236a5159407283de82d24072832a9c4277c2570162a74cd9dfa7523f24f5dfe3f55736226b764da88cbb2b94396b08ea0a95a02c7f77d9c2506665fc75490e6958ea43adcf50b6ebd066a13090f45d49bdf1919557218fe0711cc7f1b5b3c6a76025b23daee38feff9a742fa6629a282a51e93431a4664c869ca942d6230fc451eb67224550e3d2cf53d8ec9221a867f851c52c17039844e51298fa44a4bb34b24eb54c1fc6a66489d024342a9cd79c239419d93dbf56faae644edfa9dcc3ad955e924dbfe31cbc5c8c07b67d5d5cab6e0fe56a5420085b540776dc186165a6881d65a2b75e2e1f04e38bc3f91a047ce707ab0d494d6ad4fdf7b1efdb1b9fc1dc995a73e491ffafd4fa568653ccfd356c6d35f3791a4d59ae15fef4f3f60c995670ea707df2bc3927ed7755c05bf12477dadbfbe0b9b5a99ba3b12733a93270efba41fc49e38fc50e570e3613c84b6d65a70868cdfd2b7f9efcf56522b737349adcc0cd4ca589925b6e7de3b79ef7924c59f479d0596de83fe5e0c6279e47bd159dd53eaa67699ee3bedac6e0bffe43d0e9be31e7cabcbd3027b7b4ab9a7200c5e79247cea2c7d2acf1cf6f674fbc2122ce973ffd1b7e00d20756baeac200e30bf47e2a8bf6ddd6bf27481dbfe6e2edcec7a2d79f6e8f08d52ff9e28adf5561beaf6b79f3f08b8b30bf5adbeb7f4f1e2427d5c02d9ca1b1a700ad9f585ec5c46007f10bc711901fc37a0362e23503f0858df99704f9e77dff3aa3bf50cc6d0e31ec37d772f83605c7ebea4d3766d1285f418c018eadfa7f4f1dffa3720074e435c87ed2b35d8aa21622a9b3d037eb29a8488820d7e40a349324001071bbf6cbc512519501023834fd20c32cca000822f29498619509bcea080012ca250e44ae0eef3cb3a5bfb5ab4322e26600a910cfcc04914391002764b6a778ff7b8b7ad75263692c2665608b1edebedb5109219b8c7a5107eae14e29e0522104adbfa29ecf35f1829b4b7984d675668416115b4b11d04dfe07b7b6f8658ff46ce9bd6e449ed8bb55e4bdb3ec770247caf86e4d0c342ea35c25208897e2124f9c3e71e8330d0dfded3e00b9ef79aa4ce3a9d4a1ffefaf30b362429cce90bf73daefbfcb4cb4fc9108998a9efedb79717acc581147f2ba06c3aab42b64f5dc5d0e69ee2d7ffc40a259bceaa48b2559bceaa28dade897e15d256c6d22e0848411870e9833a4b5b5348084c839496362c8008751d2b63e9024ee5b995a28f737bea2cec63fb4a5dad9de5f7f04ff77e5fa93f8331e4a7a7fdef371439f430d4bb5029445d87be10ea73a0ae233e751d0c837f7e0cc270faf07bac778f490f259e60389567f8f73e489e3a886ffb1de7dd4f08e54018e853ac5fc8e2cf35bfb0cbd0ef0d3ceaaeaa77d1b68f5ac2d0c60fe32e3a45d3b6fff242f8f6c34f05ffe6e9dfc018ecdb4f88a77ffb7e037108d9fa3bf58b7afb948f9717f0778fbfebde1f24cfeeaffe903cc5df40d4534a33befef0d4bf7dbf9127eafdfffe07c6601f558231e018f49f3429962f2f9cbefb5309e3ac7a6eeff8b721153644a9cda9df7d744ff747fae01e575d9e42f6897f2b359ee9effb54dc7583dd7a7fe5e9a44ffaa9560109405bd8bedcb892d4babb90b0fa141ebd119962b158cc964188f5bd62fa821bbcc3b55609f8c64f2570ab2fe13d60b53d0f57953743d45814dff3bc73b5b5b3f08ba4035adb2b31273e16c907acb657fad0e7b7ebbee76a7bb8ec3aaeeba8589eff7a814688dc13c05de2e9c5f71f00ea457f14e99d48ef43d27b90f49ee5bdbff75fe925fe1efb1cb991b8d462c52538c2b576ad32b4ce95035a3b7b4736d2fe46daf7babf64579e2d6fcb9ffbe37204a2eec81c84f8d6f1df3f59fbfcd63d83e08dacafb27de8611c0cc4fcb47e7903dedb7fded66d361ed0dab8f4f1d1b68b87a8944e3134c5052e6ad3991298a628ba804783443a5bc2d1dede92a7f561ff7acf99ffbe0b208efcf7eb007a3e1c5e4877eaae174400850da15364b118f899d42f2edc58cc6e0aba20c636c616c44197c4621b67d206fc3600a14cb1d80e326eef83e4cdbd87bfefdbde734c1bdb10247724101b9b529aeebfef3a1b82e4edbd508fb0710904c6066263574ac36d20754a01e80cb76d600184e060533a73dadfb6eff18fee44a0f6d88fd2dca760059144fb4236f9c29a92375cf03c2bc1d80636814aa572b7ce025d90c3aee5a5342aa2a852f96aecded5ae55b4d61db0ba2fd47d0ad91a05de18eb8fee5f0abce10055751755dbbfaaacb08037c416f08688afcabaaaaab8f014b2f5d735d14dd9c1a7e22c5aebbde2c91e81249e7a5b7b6445af7a579a5db6904b75292f954aa53e30954a85271135a6525e63c25208524091226aebae648918d45aad5d028a93259e5c4aef12575c29f812a1380a4829a54e9a143521aa4d8edc48adb5d65a6badb5d65a6badb5d65ac9242c694eeb277a89169b70778e7b829484ceebba3cd494a9b89d0ebc24c872cedf7765a0b5d620784f2a701188a7131449502c213222499418882851dc66990abd447f4750230a7569b328211853e3784593d8b2e92c4a2ca5924a35cda0987297a4b09d6685ca8a8aca8da968b415969515a628ba22178a25dd044b0b0bcb12149a4e820f2d5f2a954ab5b44441c44ec20554332460b1552e2e5c5c38263213ad645c72f1e2c2c52c0a26b6ff97f2c10bcccbcbb7e92c8aa52f0ab1091d0551144c5c9060626062a43892020552f0a08a420b269d24e6454c8cd1dd740605ed55847801e3c50b2888bc4d67511835652aee0f30be870103bc81290dfd2ea925854c0aa4d9d293d9d2128d041dbcff62626262fe59a4901f0c18306090e4caa6b32842283f9224c9b25c6a8aa203fae2c265fcbc8e8309650ca1e926449bcd39df9c73ce79b3475c52920c333481c1ed80b54adb5a6bad6d596badb576cbd9629b955842b7c9a08414529c0c349fa4197c740f304708d1030fa42003529c5c2246c8c10ab66dcb3e885703f57056ce447e60821545a6a820081b2c01c33750daf8053dd8f8723facc9952c6f2d29014bde7e18917bc04d58f00f1a0e4c41f00b80707fdc2545485dccd48356c3863340b58082089a5004881e8c408a1536c6f7c712a6d0fea0e1c014e4c7922d3ca61f4c76b03f70600af283090f9789e947902076ec650a2a0e31dadb653f20b2dd9f6cff6f07fc2ec2169cf8297e4c33ddca725b5b69b0be96af9e97d37867e1b2ec295fcef297ebdb044f496f195feb9586e0e7759c56498d28f1e4a26a615989817971f1305e94e48e0a9bbe0a600bdbf6f7565e3d3c29b0fdbd18195f1b9e15d8fede0a5ec7e91b9e42dbdf03004a3c85200e4f0b6c7f8fa56a61595149e5f0cc61fb7b320fe3450ccc8b8b2df40220c302c00a31562a943af4f70410d63f7d24c1524b1f75c6849117d6df6e451e5d9d2b264a3b586b7b0f52cb3fc74725fee3d148c4012c8cfb1e87bdc356cf911636ce469995f10ac6b0da2bd91893c17c25ef8afc93b57a15fe7ccdc85d55d835e6898b5d615c2ffe64d9aba45ae3d415f39567d5c4ca094ae37f86bb7ed5ab59e559293da93c2b28499567456ba2f2ac965651501aff15664f7685c52049320695b1af028dce0bbbfe4aa9f2ac6a502acf4a0aadf28c48b5260aba33b260a9f28c47b5c6bf548281b2ddfdaf8e9301656dcbe005f01b35aa4959fe230b56523ef0fdc7a3f0bf875949d90e3e1e915e858701e305c68b17e48b9818173130db5d605eb67dd58b0b17312e5c5c605c54aa16554b8b8b1696eddedffa2db7cfb2a2627f45259562498de3cae82a28514cd56ff9dffa2db79ffa5bbfe5f647f0fb4e9fe7855eb71df5b706a07ca8d42a1d6a6ad4299a01000000287317000020100a08234190e44014a7927c14800d5f8c545854548fc6a3c11c85511cc731c828638c21c600638ca9219a6d000aa36aeac3ed72126f9296bc5b19cd6e33f317e0a5ae911a92d16c1488ca868686a66c4d71f0eb14c2581de117208256d05c715f09f641848c0607bf3253d78f8e17142750b2760c8281742cd581702e1eaebef5eb065042bd582467f3dafcdb07807e0d883503d66dc8bce8ccd12c508c04d7b0ca2c6f741b4dc8a7a58eefccbf8ceaa07ba0f9bba601656756b9191d7af8d49ab51ad8bd679b8a9fa045ffe9dc8c49a9d894f2dd8a846375dea35a2e89cea6397a4ed0524349786037e473770cb2e5aa8df634ad187c275fff1262cd525fb76390508f0b1685584f2428ff70f36a7e1688cc2c57f0a0ed6d98cbd098e73eddd0cf959ac40afcf1896e72bdd43814f7a928c25e5b3aec7dc077427553142590a3ab99e9a9777aab3e2efa5b4e8158763a4fa60fc6eea7d920ffa87734fd07f1a48db71e004e663652570223f9763d9da0e79cd88b6218b22bdc08d0701e0f32e79b700ae7e2c69df3519c02464970015c4506eb1d11841354ea523ab56758484f11cf13d8606ecaf350c2485619a8852cb05a975256256271ce7ab407d42a99ee424b951705c36042013d76d57345e18880ab9697e3d953f65ffd4509d705aa9015093b39ce98a6766a81951b23c682ce88379c3a1d49f77ea74cca5bfb87ee0d29112472672031a79f07612e57254975ccffc165d6ad96d9aba842ee28eb9ef63c2503a0eaafb82d953b613080130ff3064f92756db62a9b1ba02078d62b0bb4a7558c339b123a4305318be51ebd632b702011af94111b52612b298100280f145ac86b8fe9f84569602cb8aa840af5600c54ad3394cecb4d60e09dd2e33dbf341519ae134b4915390d316cf17066069af72ecc895492639325ac3b536ab358642b9b0005e2f4af456d1c6187de8cc23341bacd401ce5d417dba345557c0042fea54caa4eca9e6b6fd0341cf6fc06187e764206f31acbc28738a123cfe91ff7220769c81197f92a2a7ed0c837885621f11d558d193f6027182df366438933ad43da486b661da583d092df9a48d2c24f098a52228d1603b020b8318849be453a20f95067e2af35132c60410611b4eaa35ae266f7c81fea9aafc6b9fb5c30ae04383bcf33b536267e598b3e3036f7c0a739ecdfc1b7612921e25f4853ee9501e3d08fe20b6a9576e6088032225d9c4df065cf220230cf48cfdfe4f7761d73ed854f8f546f7ec89432afe09b9b92c9295cd77c2d17f4bcacdd73ccae66efe034861959ebb584985f20d5850370a4b3813628e9e3a00c835158d590bce73df457c34030a8943dc81a8ea651cc622b4a196b55099f2939e7383381c733014aea73b60c69ca551f4174ba90ae4840cd6b894f6ef4ba8b434a92579899449412dbc6697731c8459e5e0311ab6c41c0e672302ad5b26c000cdf34ee1c8070110e9b024778b036d4166deeb96e45760570326e4fc10b81cc4247521501c1bb6e84644f534eb0617da2855ac10031a07b3aab51528f4dd8bbfac5e6eadc0483ec0ba8a54e1493bc17c2a58585e5115f67c9227539a492c50a4772f0827de3f50c26e0d30ffd225b4c12e347d0581c123de0516c2686e44520aa3bb629135d0292ca1e6762dde0825f3073111ebb1fe4fb3b5140f6d52a7ffa3ef015e8e156ceac201d44f3fbdd630f9c3db1528cad84cf4c7e99fd11193da9565f1bb99cbff8152e901494fa23d4db208656e98a657fbc87e994abdd3ec08341b399e04f75c9637d2c5b0e25b082f970af344fcb79aa0ed9cd87fde5db313b309dd5d50c8ec25034ff957598709db54cb80f45dd4fab0959b774c3c9c4d40a6b272a9fa328913271b6367164635111ba5197ba19e91436dde374b798de605cff57f6b4f3ffd111f29d30217ff010f77a1d8908395d51343b86774d53dc3d838a14be64e649f1c9cdffc0f0c9056233526a6d9ca3c5b9977d7c397344a29cfb6835bb8ef4446afda1c48fc0f8e1055f0ada46aa83c76189f73eca087693d61ca9efac7a7cec0938ae0501efca7cc069ef42314f8edce630c3456556eb622b4d49df351e66a719037d3bd1e6c98e1a6015f84a3fa9b8c78941e890a7e37cb2721ecab8e5c92315a52b4f41f4f2fe6ef915a3e93aef78f48f44d17ecaa585c6caad74b20d5b08089dc405def1ff812d89a55956286c14295d5b7fb9fa9ff941d6b13015fc492f2bdbc3dc9b020efd8062fd1d9062a22c6e17699ffd32a7a0eb83e191defcf17b09508a046cf9b07a269a6a30157a3968892b1df576a7fb980e93d3c57f56c406fdbc50430424fa0f86c2cf5a48fa3e092e6088c8b14bd03d6ffcace00ecaf7f7f15eeb39696c5b807ee64520a1439628860acc658b3f41a12d81a8989c76b12449a03a053aff1a95ad4b5dc2e583a480c4743cd12fa504db7d2df7bb76bf9e0fb13a383f00a3498c1732ef902d19dce08a43e581d20c476b94cbde856cf9aba2935056d1a3319405eec4cecf97946273b178b3d8a620449e53c34f3dd486a65c00fee68fd49f1a1a67aa6ae25f51342011de295fc58552edeb1ae18ba5f3fd7e0280bd83945450fbc565ce1f626b8addcb7845d8714bc63f7cc277df1d6c9714f056d1fcb52505663a682f66862fff7bd41db64dc59088dab3ae533ad6a32ac5ec5be8e9297a65ea11fd33c51b9e1499cb5e3330cee7238f319a921df8ccb0fe147b3573deb055bbed519e43c83be2e8138e164052776736c708cbb3857e0ca5f06b7dac2311e905f15d1e62c3dfb673ccb1e06cd9f396260bc27b4628aed658f393653bfbc8bb2e1a3e808c46a4be8eaa5bda33de87362b5eab8d6db1650c3f367c5729ebecdbdc0d6cfe2cdd6216fdbe4c13e3d327c7040ee8e1178a8b454d9d6b584bff058a0c7c270f4bebe9ff3d8c97e63ec5c46ab85cb61e032a4e586a4cf828c3bb5941a29728340183d11c68a611334918182dd9675a1724098d8f8d3579f9f21d7c6048e3d1d595f4fec83544b103eb7aa388d39c001a452c36ce506ad35b0f3494ed728ac82ea943d04b8d625c6d1ba4d6b72fbf58ff0af2051551e98ec1069a4076e0028900ba4083b0839a7193217e5c8acb3153133eeb84b5cdb36e27863c1629d6856961e59a6eb2807bd7cae3bc0995071929d072bec5563a9995844710899711a8c99e8a0d570962f809618c26f4e1eee184b2148d16b08c720537ad4ac54c9471872bad6318de8331709bcd83df5954fd9a5ae1a0a7e1c7eb8c45a3eaadaa6ae0a04ffdb45f1d6426d24d375152919987ac13bbfa63aa644b4c50b1b13b6e5c7432e1f683f1a84efcbaf4229dc15d5bd902de069c9c2b9cca1ba9f4d79489922fa28b0d650fb6f982af173fef1d76b6cd7a8de5b77bd8ce4cc2d842f99a256a4943646f270ec98f945d76d489a7aaf2b781f4b40a4789047342bb020bd83227cfe02b6f70418d6ce24fec0acb145f83577e77b10c5c272182a4322a080fe0d9381cafae9eae0737c72ad229bf7f576a500df458bd90de82208fc52b8d30c98e364ef56eb5b6aa1e4e0251a1820f8759b7ca55a0b4dc06a69af2da4a3df70aebe349c0c57f532d24941e593433055af73e5e18d5d9e56e035fc80d12984b2eafc4f5fd7305b5cabdab1e6fda9aae3b83fe4dc4de5acede95954e013f5ff6fb254231a543b2ba3a8025f6d4e2479857a6f43b4df5d84a41cdd241e12f1d462e6ee0a3fda90c4a2d7dfb06f6ca61158fef33122fbe0b010a01ccd23a2150b967ba20241fd15feafb1c1988e345913f65d3e90fee8e10bd008bdfcda9beea7543fbcb09a0fd16b18c9f63406ce33f7882a240371e5d45783afacc7af5d17c9f81ab9e2048faa1698b6e42a9c1dcc112b06062fc8e5e885502455f99fe715606b6c1ecc7e236a5eb0ab4c9c9af52b452a346bf1e4fe45d1d702d134dcccafa3e5206a058e94cdb86ebeca812db4b1ae146333c9cd0c313ea40460c6494c18c1a98d04348ec53f1c8ab6d1f62a6fc6a0a2e52768cd9355c1432c191f1cf212a693cd36704043d8977527ac00b2bd2d753f2a83ab5a28508e08d83d0308941388d06e2ead115a3a3d906c9336ca07e730658a374c5a1d0adee0572ceb1a8caf4b4667c628be9ad06129dd2abd12295b82af739fa349f605c0554137d7cbd0d389f75dc57318d11e3111834f3791f6393b67abca35fceefd449041521602050e304a358d6f0378bec9dd9c71de5ac597357a72091647be3cfe6bdd587deb1aa91aceb1cca30a2e6aea78c2321a93144524de632803984fdf393de29a5de72335d4da922675e6606f8ca0e66ade6ff4eb76b1841742540c310c288bbcbfccbd56c0716d953c47d6d3855711c811a23d2b1aa19ebedd9c3b1405bff2af6502d018801c0601a0a277068264e1c14bca0663b2b20c1c04d0d9da51f79dc878ac6289e7f9a271cc54286dbda32ecbd65a00465871ff56a0a35c2e321493419c1be990ec282e65c4f390a2b11b98e613f2e5440eaf1ab2c0fc3d71c7ded8a1ee8183982bd852da2beee755b462e76bddc679ff2786d80621a271ca1d4a3d0b99b7b3c3b3f0615d518511d763deb613d87fc780b14bfe61b7dafa726315ee7ec55b26991deb6df720989d7aa449da90e6fa2cfd3ee2dbc4a9484139d59fd97b503cd3a16b51cf5ff6ab04cc364ea6e4f91f6741978d6b350ab1e5c7a6ae092212cdd4d61f2fe5f92181c54ec42d22de2f797fc42d1fb429a6a1d50e5bcd058a4782349502af39a358edbd00b320f733d65dd8fa95274dd3fe6a7fc0ffd1a748eabd10ca5f13c2f029d584d158546900418b2549a62347b7047ae2f3a4eabc11008988d07d55168ef7ff0811b674beff978877a5616a83ac3ba1dcc4d806b3041cacf51cb0466ec7c9c37e6e8eae7be7602c2122182e9bd88259eaeba55e4aa5745e89cb1e2b338dd38f0fd1a631246e2de253e59443f26db0c350fd61327930c2be31e66fa2e737b21877233fc0557f2ba0a99b4583b887530564c47bc45391f80c265188faa21902dd2e480d087d4df52df3c64b63b99e100ff589c1eac50613ca605b7b400220c6ee4125843d3b2ce8d9b88030e78a1ae1bb53ede682e2ef83a3df02764c9d72828c78e48a439accf971f12099d738ede314e280ae1e27da3b5e3f501798d7bc4d7863047119a8883be8030ffde4b949588d5a5066fedced02b213e981aaef747e03ca0e0707c60d34ea94e49a8bc398678bcdb077defa9da44e36f8f814e6b5edc0e863c94b4f8ecacbc5b0260e712d1452c2040a465503daab08bc502dc33c06922a0e9427f10b4f2b53ead1326f72be186a734ff88b27a66a95f38e52927240ee1dc350b19a9b7f3492cfd2733d75fb99b1b69334c7a6efc51033574caa790bd5749b2732f99c7a7914889edc0c54512d1278605ad0120b788b4d5c541621c22d81372938abdbcf97a23163a58ce746065a721c5d82e3a8a50d60bce169f45f509ff661d5fb96214ba03b0311c34869c65d881c24f3683943ce268b01dd9649326a8e9d6568d5458c1a65197f88e1ff7321afcbe9ed09732045e4a304b133af72f6054324414c706088e7cd439c8784edf2efc19844320c20ae7564ea51706a7d94106af1ad3710a90a3779da93815f8f845d724920a64fca2378da008327cc3daa09931a50383d9c231c27ce63ea42733df1e933d9ab7e21ebe556f26a2d792170c27ccbcb4b897984e81a0c18c8788fff27d838c0825ef551745d400b570c82af8f72c9b51d4cd17e60a278afb1a37fc349116a6a0472f83269ce6f8b58c5e0270d19ca639cee2afe5ca1f4f4ee3dd7fd6a5894382132c269b3048fc2bdc8169544c54e2d0769d342eb38846d79105f7e0e8ec625581635be0c8255c75e248a125f945055272f0c24078ce0bc5ded7b68f31b7339088be6028ec01f5b08440c82d2317a51fc16daa7c05192006c9283c7ffeb33ea3d5b6907bd512a798d50793bbe59e19287b42da7ba209ca61b269c22c779c515545842771439c693d8611a33d086a4cb5050d547bc7bb6401dc8c29791375b2765ba89814b1d31514a140711bd7a9d62d05d7af7b4f5047c7076a39e4337c148dfc64f4deb7d4bf47a062b3c18e002be145662655ae37d70648d5e478922654372059aacc4043822d2799d1362366d3c6e926767bed331f7664acfc0c293b5160339c87a43f1b9ea8e2de333575ba0fa4f34f6131f4fb139832bff27321e5165a574f14161baff6732658af8e08c2e9f587389baff6f884ac4ee9d9629f4b79af9e68695c7040668337a2921f144d9250214c883346563ef425f174a90f7b85d302fb4a0199c195640164352112643e0e40cb079914f78868a176f58590cdd333a23d8df57cf309eea88ddfb6a34b9f38251e2ccab87e26b4e620a242a63fa5420d99410747278d8b06683d9d214cae6ae25c847d7995613fa3d02a64020c1c8d06b0a828d2e25eb38d237f69d8001dafed271f0853fcc10d579285c990cc307c4c3f73abc52e29666041954483aa9295ce2a29d15c2531c2de8969c84aa2355ac99aa34293b68c868626456184d2308557b29eafa4242b467f0c758525ff4bdcb2828c255f8dc60d06ed53dcc36196c89ed03a050a0802fc4ab8846f4fa60dea69ad1d58cd104568d1983ca807440dbb0588064256c83a209a1aecaccb187fc6b216fa7d4407ab7fa128f1969306c99dd596e7e3947d558ea29aece77ee10c5b47ffc7df12442b90907ddbc220bae01c6ea0efaf121a88fa4f278967a80e2b5352aa9709b501ebb19c418affa7c377040a0d324768254d2973ebb0155e1cb370e9ba5d603a44ecc146fb6bac8f0b12ee4ecd0786be92edd805f4b8f59ae93dd39b087db11e10019a9676c06af21fe3ed90f8b5a9c2ed0d7ee37461ed01c933563867cbf567e8904e0582f653a25fa6808cd7be9dbbf428cd98dc4d314486a0f43c2b5585a46707a9901ce64c99ea3f61232627c9d006681104a122036883ac3306d82c133ea08502e693032cb1224c9c4a12e34eec6673b600c686d559505e08122f0ffc6a1722198737b91eb00dce2b445c7f3266d30ce23b771e1aafb589382710a8fe02c5230a4c9de8a6f99cbaba5787b221a2f82d886371c1943d764151dbe66650947d9588c2f844dc2c952ef637bb2900320ed805029aa7352637639694214f06ebf68e65e0003d03086cc4fa61529f69135c14fa7d70659966ff192854c6e16f172efd901a8b6cac8ef6f0c0f9513ce7ca752838039b64ffface76f6e260a55eb125de515b09ce85aca81f864811ecd7b35e0adb4760a0b3b004b4b0f9154c10e54b96a230936638d0a0e21c3cb7d83c0f71f306c5ced8bda910106ebe1ad810afab515c264bb1bff48d50808307af187c9c3e20885429a55fdbfd70af34ff81935f5e1c441e593f1470aa1b6c5c344019b2958b5a54bb606c05c676a53201ac270255bf34883606a71e1a8f3400fab2400014a3cee416900a147cca51e49ca434d84300aeadea7935b3855459c47d9b44adc23ffcd69c506737949e52d198dbae1ca1ce1fc8518727d91a6cf154948e7b310c224165f6daf9a189590fe373a7444ee7e33315d004c67af131826624b1dec9553b0809142036e6265ab38dda816176cf1eb3ebd7d150e8e8c316a0bd0c9bb69309c1bd1258ada5beb492588b9b7b372b74e417e388529e76f63a84b6819699f61e09a03240fd28a65166f12f3ed3f1b14cbbb8bc34b9b569f0d2613c179fe9e3bf7ecf9ef7681700befc4a94f01cccf47138c8e50b2d84a81a2692a06c8dcf577c9a234d191019ab15edc432899c2b0599f0c700bddf00a9af9f2c6d9f718a702bcdff8190b33e8e7f1b482cb026035ed836b0fc6a1f4caea9fa82571fa1520f0bd52a88161056ab80e8d823190c48823118a0ff535c45ed5944a9523c514af415630d8aa498d1436e02584fb0ccf70002f7fc1b93890d700381f7036e7f7235a8442f8d0909e6575624f8c9c07efffca91c74810f6c2f8a574f855290520f5618a8475f573aca7de085228005a571d62b5aa40261ea58ed5d3bfbd6b725b900c987a97499270bd42cf1f702507acb5e9d64fb5e3a61cbfad9c3828513f421e7ce80749ef2d5919ef45ad5891b819ea8a91bbee387af77b864c7e2df015fcae0e1d95fcfa38371f365573a8deb4ea7e7ea679f807864ddc3173e662b3075959bf9375b57956b2b17e4420cebadc9ab33adee9ea7500b8aeed8064abf3537bdd874f627c88859a5d2e2ae03b444df97516626fdf0d28f07f61f24bcb4dcd544552d22b59c23a0c8ede90000bea71cc5306004ee5ced58814dadab013f5f9b4808c304ee0fbf150ea06832f774f2b4aa0b014f0c3b87eb264334d16e234b0f939d9ea1bc61fba894eb688d2dd60257a92ac2cc2814f10d44c721350e34ab3932bb3d996fb424c17a1466a7fb2a0c6ccb5628e2267032b94789a343f7c0b79b3b4e21253246020efbba44f3864cb231dc12566e2cddf0f46c8b7eb390b7a598124a73f0188f3a8b05554bb6f7ab724daa1a05cd232a4a32d1e5936292079ddb1f41beef596fa6904e45d92e5045d90f341398affc91a018f3a4f2c01a854644bf7a53a7e218e07be9e6188a3a74104896340ee48b6e83dea80de509ff1f3f0d239081db6b5b27a78d82f251a218ca38263ea50e09cc964a66741412a9a3ac5d3ba5c1b82cea00db51ba6e8bea42f72f928ccd219fcbe754eb4525243e80989b561c8c5a6b37de4d75a243c9a26a067865a11db2c10622c0c02897b2749c8a3ed06c8c852352a21bcd294561483a8b13060c5facd2a45ba289b6d4e976519c3a9ace14112add918ca300674adebb0f137cf798f260874c57156af2cc6b09e6485795b20a4e9cf11050e3a80f8d2188286a7610142a995376621f64c56638ffb8ff00e8e3f284eda103a0f80328aa51e1a80ddd932a387f1fa96b526c28ada9523f0841d0a9a1e2a2ab21ddd5d98481586c21017d1ad01f5526838ace94c3b65c33e5ad00f9502e89b8d465fa169a260bc8a176ea1a2994db2392d7d9ce40486c13b56020878cf5f535e7818a1b6960ac615bbb30e56b004514e88b50ebc2e6b62c33e96c9b887941b1446909618b3b60e49235741cc53e921b8e8641442b72caa3cf65695350b62ad0d3b92a18164e9114b977bf2474caeaacab294eb241a7e6be006f52995e681837900c3f979242058ebba0a42549e37cb876a2716966c18568416a6fe44e0bdc92c37db9e33e33ed6d614eaa28ce37df4217034ad3dd870b31651423fb1cbb907c17ce893e6dc2096d55a059add926a3d4f3562937e9cc5466b633716f40da36c69bf90957986df6178822807013411c243bb0deca991d287ec2f8af5fe716f4451190e9f8c3c72b4ae44f801644a80432bc8bf2afb80ee173c69584281003ccc9c1224ebe4a20c861f9d4fc472d27365b80c00df89ae49a45573fa00f566c69da692450b232d2d55d787a632ae28d858e7fd426903112750711fee1319e90b43947c817ed6bea4dd4f1af8abd6adadc42a77717169815995ba720fa6210ae10569d03e00f2f0b6a5ce8bb47a9a56ed94c5ac7bd0b4390190915e7007f0b343c1250c61e1cd31bd2282e493891cfcb8890d9e2147503ae29a7ab5596ef60f446abca628d93faadaad58c6be12ab02cdeacd8b9b5f43b02d5963c7d5f0461d4ba1455ea28a029d6020f4a17f82174013f846ee081d6051c90ba78fe60fc9e7b2c3e782074810f32e91e886a8bae9be8dc5e0329b9799e3c65104fb2190ebf791cbd5316230a79bbc1ffe6bdb706bdef47b749d37f19036f23736e9c7f2e650b0158c81682b21eacb64d0e359a8677fe30e5fc6bbf357d88c9b4cdf2c6a32702bcc1f860e21532ec60e68fe571847a13dedb40ddc8249847330da1e958728f3749b5f41b869efafb2ed90b7d27f5e219810c87ba600288c72b2a18316931ec9f1a1006554c36ea77b827957fd40e308bc9799640c491c03478ba5208e8070044b0022f96db92efc75c4513785258781998f1f250e447dc6b38aa8704d60c9c8ae99df4363a227dd3d9add1bcb2904ba1ad22240c80c6ce087a8f69a4450752cf2d276b49bb569c6a816f05c0581159f181d2566112a434c9907277fe3ebf8d381a6bd7d15d0cc54d75662c978b6fd026d59c98d81f17044d455a87c6c92688840e286c333ecdb4f26ec570b49f2ad4c4f6719602e52769498894b4c4a19eab0f5d704ec8e9a4438dd8316b564cb10fe4f22f350683fcdd4eb8f015564b03d3b3979d2ebcaf4f018bc879fb922d3f7c32194c584dd63ff1f996f0fa3073a447e76a893ecd50722791b2e87fdb9004b946207444c821183444f2e3d02c5635b0b3a6ce353e551e87feba52363bb51a130aa20624250aa1c3a103f0a9cd7e0b80a0a40234bc2f8578b474578dcf97ac21bafd30676c1b1db7efb5e654a251a0db5bd50f334a50dc1c2f2f890e96624590ede57cc87b0d2aefcb0900464c06e8562a98a02177383a56d07335bba0f4c4884e3201a0268944dd41859a25d319abd1d7a766c1a675968d91b3278c08dc815108ff7e439ad12ddb6101556b191180e22f45c9f80e59e54574bad84b638f773da4b7fdf832faac3752e32fecc34e05a073b75d12dd2b8a33edbd75435d516c76e4bf17e006463d87e71f51e16815c573517a6dfe183e830a8da07bfc9cbc9670fe84af1e2319bb4efabf20a8e5d98b8d82aa0412c119ea623b6157b35da66fc05d1213027c8083cb23d8e3497bcdfe7eb41bbf3e316413e5142fdf5fdd99e46295c716e50a70727629c67d141c30b0abdb59e61fe8d3a182e736c7c52f01a470aac4e85612674e06f0cec01dc7ae4614d7ad4eae9c6a928fa214a4f6a0cd49bb2c825cde7a943b126e5e80841823b22841400559d76e5169d35f0c6d3d7c04dee96b4c02372b4672ea429dc351e638d445e7274e308a750c3e4d8950260dc05b3aa575cc07820110ba45249f509a12a5103e207ea94bd8ec31076a2f9676ba7b59aa9a71524e09ca040598fd83a14ce04a9b75c2bc3ccc17fc990dd35a3e1c54d0c33bfea67a6210f63c4e2c0abd0a36135dfac6fc2612363be4cb6a8b933234776aef7ab0ee8f34c61e19867514722ec1e2bcfc8eda3743696877f064976ec9e8c897429714f91627d5a684881eb9a90e1b7c472e9fba037dd4924e6f3115bfbd5be3253c2e4c0f5e296d38bf134bc3f7c476010d205c913daa113d82245a74d158230a479e8b6c38d980bb68bf37bed8dbc3286bd183d33657fa53579efe01ab4d8da25b6ab3ae76c5404bb34ab4bc3f42a66c765907837c1fe4cd33d958b4561aecd346912f3c83c04a12fd4c83bf2da1995f2a77e941734e717647cefc1ac323c027cea9661cc6306b6dbf5402e4bac00d4ae08a64673d2bdc7cb510cbd624d8a5cc56f761988620005869d1f5f4456e85e73a5bd849192636cb352497b87d735407b0527fa36adebe6992f838c8455c7da8281553f7ef23692017a30dda4ec8c2b04b9c8bf99f71ae1e58ee2fe1800c2f0564ce071376f90727d853cb78e6b4582a553a8140dde70598ac0ae79f2c5b405cafabb9e3869b2e57b2c92ad6293e7643ffb8fa28d60b2bbe180fe785eecc2eda18ecf9f0bec06eb6312afca40174ad6a12adc97da2526cc97534134003f3462e8e81d3b333788f0bb8fb4987d5b468ea8861a79dc68752aeca259d0756f10aac603a78451c9585728126c85df4283efa60cd7d9954aacee2dfd024e7f18c6fde400afe1678e41bfd93e13faf2eda4206ec4de558ee96fae12e2f696a7664048d8b624c4e68b0836e267067a7829031bfe7fa98425de3ca3daee225763b71b2738c4ba4d98b5fd2c534074e882e13bac5988e13b147c85854b100ad04d0a46d0f2744b02a9b7562e84bed0019e84ab177e2c7c4b75961f8a857fa10aadd8241f782cab1bf943906abe118f56b87182a7548d01320fd05c23f027acef6bffd4545208693a8e4078622d950c9ae090807eba4cd27191424e5ca015482f2502479334ea0a1c8b4fe21410c0457c498fd77a4f2facc7264b3a768aa01a6ac6f7cffda092b8265c66535bf110d9e1fb994d800a045b61ecc1c77655d61a4a6bf5874e9f1093d99f6c68f7f6580015023daf1efe7b8368ed2c211d2aec46a8bd29a158b46d9f41d706a3800cf03eef2b835a6c381f6cf0edd35de35a985b7b699e277a63074c68a788d1c5b4d613360000c9874045ea38ba25609f21ad4df8d770e1955e0b2c91b7e186dad39ea20afe9f3da69cf788dbd32a8a93cf11a5055fc5202e4a1d46b2fd656c66924589c2ffb04d4d3423d118189d7c893a94128cc5d7ffa241332905f7090bf47429de9b51f549701c67ed4f26d7e75d23b7d72fe3fa876bacb49d66883bb5f33dd5eadf50e62aba1eec09174146e97f4a2d011b065be50b7b68b1a63134ce8c4abf8d2be0ab73867484e9b8740e54ce57390449bf65de7a4622d8a1ef622cb942ccca040a07ac7ccb617f63fcfe751a89fe207a6060c8675d960e7a2bcc632779a2c8b76cb4f6da1d982d6c9293c9f74e824a68a51a2255f2c55b999542f0a0fd5dc7784aea3fee2e666c32c53157335d82dcdde5f26bd303a28c04f6dfdcb79b3fa4a54b309fc50d14becd4905e24656ca67124c710700140b8eaac90a7af703ac40ef43b013acba71f858a377df44870e374760b3b7e302d3db6db532bde0c986cd08400376bfb6be5409168bfaa2137a56f47eaa7db08742739e1cb0dc8a795f455b5623b5f1555f7edcbbf18ec9294b6b582d6b601e9d856cd99b536cb445d3daae72fe388929701955c679208f64fb5e415fd9757ed4a2426e9d2e467929374b8ac12c16aa38792d07caa87ffd0357b1ff89e41fbdc0c963dcf19c5346a60ddd42d2e0cfa8d1d62e4314407a7913a7fdf63c38d3cbdd7a4a78b189926b883fc80d9a53c8b8b4f0aca75055f604664022e064765adfcdd01549892a33b927e7604e227b37b97ea3643da86f941f1804acbdcca0e493715a17dcb11fd945a94de7abdc83c0a57772a64a343e76f28382f730a10d976aaff6b2b419330819024623880dd098385e945f61ecf678be69497831830c80ef854eb1afaf8178b3703878e3cb4645e39d1ae1597811d6b569f396bc1c5b0468ea8deb497a740370494a522509fbd65b864a5e7247f2907810524e491c9d86b5105b045b4d7a5e0f30e06472bd3343f935a51088522ef996c491491a200ba33654a99fe1ae79f3dc82625335c6d2cf42abca3d940a3f62b7eeaf1ca3f2f70ca0f2e5930b04a4f6e3cdf5c7d861d087a0947891494b484f3882fd9378ab4bd6c2b693049b97822b03b6576863706384977c7e84c13976e7e17d7a9bd7cb749538853876a0b174925aedc73fe76f090effdaf8c04e6ae31bfb81776b505e5147ca188920cf99f8ee6bd3ffd28041a30fe8369017de4866c24c7d47e37957d727417812347fc271cd39d7b917a383fd36aa804ef9b5f3f51f47cb0af49f539ee6f9ab0a451ddd535260ad494d38fd2db2e6c4e6c3c5114509130603d62d096337211eb221040f1e9013f842c083e9ab7ba94baac661176e9487a7eec6680ec2389c96fc74c071b80d18f9248b0e1fbb14ee3f19ca167f1ea60f2103ff5a678206b72ef09c19a5156d806e4eed65b5df4cf138b00e0341a787078e0b9ae5c043aca64a41ec6ebad27744d775b01b8ec37afa4991aa91b44fe823f790c01afcbbcb9359cec255a36881b8e7fc9967e205047752ff482c70aa361ad86990449e52c17ec022960a72e6b70fccb2f4c87f4d7b4cee61a14fbbcfb03f762c5c6a269a4488fce0f6325edbe087c0b7388d5eea42bbd79dc3934630dfacbc2d11ff656eab51ee54b25437aed62bf04d10fe8b69970e376cb9cf81d6dd520513c3dc4cc51803d49e270c63d55a7ac98a677d0d8678289eee44dac6a830c28747aab2779a348e791590080f76ed96c30370ec1519b5c88f185dfca42ab49a041e2eba64d86c8552ac22c1590e7176d69de8a71fa11afbbb8d567a780c2a02236dffa5ee0468626b3fb8cacfbfe63236318aa0223b54e3c3fa845bfa795d7c085b5d3b6679ee20d565e65b8f52249bef12266129af20db80154e9d019112621e55a47e90d28992d98e93ebaaba5798aa04fbaad442ab5621df27600cfa49e9819cf1963c2eda43401eadcb35bf063b43f185e8b0c1a52c03857b39cb789f99b9bd4ee5ad8e46005bf252537ad87a3c8ba0292140a22cc7518386be92552151da3090acdbd32d2fe57491bebb3a92778ab6161fd7a5453f66245e90b5f8a68f5a4fa5ffb4da554e0530264d74965edc4a20f1f486523fe238352b782bbaf991c5400a3a757f3e8c72c731282500b692e7107d6a9905c8a60d2e9fdad884440c43694177e817264c2de2c230dd97c34eea56544861a4198406192bbeb8db5b4938e3bc41754e45978bfda667a5e9bbd2147583419d2e79c7febb66ac1e129e04cbcdaa17014e9e7fa7746a33b9b6926af96ee3205fa84c5ebcb6162df2cd4f210a4c67cbc08e589eb27e819107e818e47b68f93317ec6642cb10bc5dc8903dad69689098c58a70f1e8b0341bb3cdd9d3eea95f3c2a46aa05e084d2ca9f6a9ff816f7895f7343f30adba16a0c26404bbeb4ff82c5709927c2a7fe03a07b27d2bb0b7871af7c3849085ae94b248fa1274c0cc9c102f9bf0f79193d6c56cc626794f073945d7d827f08da8b67c01a83f208a2615522cce67b2e9bb2cc2b080754970157c6048475c16813394e235c60238fe35da43dbebea98750878dac7c421224d4c2c54453fa9673389d91dc3269c400b2b6801b4c0e6bf7e251cc90f519fe5ed5c5a637c291ad5174337ac955eaf7a8793dfc9c4b5c4b7451f79b9914933811c57aad12ca831c29771e810ec59f728b3c9d4345271035f9998a7716696f54490080f531acbb93bf46419e2867e35be239dd3bc1cc2b57a35a5a8c2f86f651a272b47441d1bd9b89ef576168e2d4c79271f87e161f2e7206acd89c111159bdc9b4d76541fa74022758b64693cc1e984251b57a93978e8a4b59a57fa80756fed2e76bd0850216bf5dc589dd36cb3c0c82727e57b158c3e72c3e3e6bf2062ac78832c3088ab471648d9cc41c6cbcabc0c8ba2a3420c62da8e1cb0477fa1505fb979cbbdefe755f2f49501077e5f3891a07ecb128375a16117281ed0ccf08e50e6527f04377e28c4181df7bbf3103df01393c854932fa085f2d12dee607e4002384f66f1419af9d02a3b3a27a96e6486733e5128c2a14342908b73d40b8ad6d1ad280107871c4bf1e6080f7c23ce74ac830efc6b76b29680496fe1ade042de7f4cce38335c9267ce2a24f67929460a6788a2c201eee3e036a3d74dbb99cf351541cb21c6efd08563daa569e003da4b8729fcaf317107494578e52e25ec4c870f6f5e749e2fa91cefc7787db28e0d72d3e8f91d58d66b37f4ff6ea9dbb33210c20a276097844801ec32bbd478754448640a0ae43592f6749609440e7280840aea8174936682b82f249995f50ded109323aca115404b69de306c01e84dcfb02fe005b46ccb0b7469c96b5043f142cc4cb5dafb023ad62521816fd0b13e3c700615923934282d8e1e8846dfa898d8b017498c98742e6644c3b8db3c4f1e9a026ff849379953ee8681027641e73bbe6af04afbdd09b2fb2580bb81349398218c4c6b966072c1217c002afc808a4842a2232ff725abc569b46c82700c084a05261211aef7e4f00d1fb7178aa92f790bd77502d2d1503aa8d7ada0e6262b972a6f6557ec1239979961bd97a96f08d3883f80ba377040b2c64c459404d3557efc479fab8f66a97b16e50b8c42c17466d4fb91c0946a836973ff636ebe7862d2eb6ec046137dd9b4784cd1f7ce8ac460f35d53ce1eacb1f0a88aae5964935b7e5f4daa39e76daa971dda62e5ccf1c59eaf8e074db4b43b34997f6e46db9255ac7e38308ac0ad0d35eb1ccd01d4b5eb4e91602a7a0176acd2fc6ea6fe239e0a1e6d5d38b57afb8489de1e87eff2676659ecd2cba2c8daa7fd8e41040bb17815487d0c60ba65408ecf9a404800f5b668a5806aec17b58cbb6ae81150b4c19af8ccebd9f25b2ad4487c8cf31950398096dd67304d618964feaf40f5f770d898348f489abd218c72f5c857067adac08ae4a4a4c006249006fc0f7bbeb7beb8e8d13f01ba11f9594f8f7215c77cf168938cc6baee23e18dc7f73a3dd3e01fa0505b6cebc4a2fad7b55b4dd16a667012327c33ccccfdf2080712bb61586ba77d05c99447d658e47bb6ad2e1867251956fea69efc0016033f006941dd0e6e8063fb08ee04ce0c39e5748004c45ddb604544183cf12a352009a1b38ac7b8a9e6b246ce8fc994cb6f42675a518585d77ed4edee615171021280926f75e018273606572a0b6005f914006ffa973b6b43d4b034d34f52ca116ca8d5b89bc159b138b460f2aeb2f1fe276f86fddd8f27c1ef4562a9dd2b050fc30b460aa9316bddba14651484291996a6c6954347abe28d7a2513912bceae5ce264eb959047ca6cb7eb6128509023b6ee4a223bcaef8d0d5163ed580586bf3cced90412cd64cc8f7ee2c7b59685e7802c24a844a34bd5c9b0f7efd6b8b882856bca23a9127c290b9cac4f6b594e2a02cf983024a89eb8ca42a1af47204e902ee4ff1ea89010a4513376f45b43a964c48b68417040165c0c0a922b600f3b3b435aa5b68480ec6a9228acf3f1a3f72a436283f93d93a4f4773b7edd1e4146035b577b236f291c402ea05c74f580f31f79584773b6b17b506448ea829c8d4d03e4604447bc4ba764ca0ed9aacecb2c3698f146c6ccfbba4ac4d536c6e638e48c278a9c8ee4db7da45ddb2dc43572c7e5c16bdcb02e00dc2c36c1c1d7b91995f26d931b3e70efc074480abe1247033c2c0d97b29095827321a703b08996aa22be8aad44196c8a88f0eedaa3be0235cfb845f2e66b1f36d03817944ad95930d4947051f404b4e4f71588b164304c4125a8158c4d783d58cd722e106a78c1258039fb891c34fd5d2a5a6d14ea573ea74ae1fcebd97578e46a59e85efb9e74a705f96102f159343b88a193ee984e39452026fe862591274379bcd0cf6308ee11021239248b7119dac2c912dc3dca0394439889a4e20b922358919e9e1102aefae251bace643e70073851c0970f34f5b0a2033166ef8bd2f8e012d1333951d1cb95c652c8589a3952d5204ada2390b316a1490788d4ac4e1df8121668ede7350edc52f094805b143373fd058c5597605d92af55b0ce9962a1d2e88f081dcfe868b2b848f5ee44bd68deabc4717a3b7d458582e607372689305781726556e6f4f4358bbe9e499f76a8f729c5c13046e2c00827d95a6ee4051da7e41722c4358dfdc6ef28d72acc6b1817a2fff2264dcdccae3f0228104602988ce7f45a0c0239707db0fbb52e49c3b8e98304a487c3ea90f522400f7a9220b4b02ab68292710cbe1a62373b2386fd23b1d4223184badf0ff1ccdcd05e17f4a3495a1334897d2d14ed6cc35774196051d2379b6139800e9c7eaa8f03a3aa2551aa65a36fe2e83d6ff8f71514d0aeb5bbae60c1f12e3da76c18258795526accdeb834fb4d3fcc2325bc4b305296ed802be6746618e6fe27e1d344d4043d52414829db08019faf0d951d3ca6d0fb0db2448de7ea52879901831614dbfce774a03e12e27f9cd5b166e86179acd3a2fb32eee4a5aebe680ec0801fd54475e7c17178ac618dc01413548369d2a3b2f048427b5f6f86dba8674f2c072b0574c7e3c8ccac47c6ddef66fef7b4eb2621feeb68ca78d72a92a9c88680da2e3a4312ae6207112c3f43b57617089f1d23b0307b1055fe98fd4e25446dc87404bd1a734dfeaf7b66ab6e5fb42c3442d2b358bfa04fbb1ab7bd5cac80ccc49d3a39de33829dcbbd19e489937f6ca421be30fa3e77cdaceba666e6c499545cd09a27624fa8630e05d57f24fb103315238f14d798c8d563b5a41843b1ce383d80fc5fdb5fcf6c0228dacad1c2808bb5ce7e1651a7dd77b684e221d6e2faa554bb981b3f3512376f2c0c10663972ed7916568e39952123b4a051936967e19ac05c715b00068bc1c631aa7ebd5ee44190ef4b14e4d7894a2997f7a3058973d31e4b6b14afb3f6a7facb11ce4c548c61c485984d3c1a73882c400cc31497f382590d41a9b074b314f974111b3584c03a99792697067d98e6547d268457971ddc451087d39918567f0b282d39d63f9882b2c212ea439a4a5e90201bd327a888eb383d5ec91dfcf1d7d95cfbde59571f4da0758e688909b616cc2cb0291aeb4a1e44a60564db53758b9a2f0ee143fbefd047a024648fc8c916d78b50e86dac2912e59976058b1aff665374201b123d41338dfd9688ae4a0b7fe4411ea193219848127e4aa78b10548db0a2174526f223759741ece4a53c88a4297d701177ece909e44d770d49cd965579177426476b12ab93204cb17d1d48466fe88968e9a49ca4c3dadd273170f670ca0a3a5e360c453428e18936966214ad5e43f00e75e493a8d0629cc594c073f3fdfe64a1cf1a8f6db844575101bd96b484847ed63b158b22a02635c642beeacbd9b047745e202fa50ca24ce6dac8e212c444691110d7d1314223d82fde8c48e057178d0ac865984883518888dd2599f8450b7e9280b41357910fe397c9985d5a5165362fe03c84826dcffecfcc193eafff38d7ed2dec00c18392566034cb6b1353e5570bca635b620d4c59a2db27c427a0892b1142c4d057df7a06ef540e0993fc08710cc9a7f27066333218da68e63313619810743c1525bd8c1ae2134c86e08e840e66746e1c2c4564b1e2726863133a13b88e158fb5482059edec8c684f48c5412a8e11b48f3f526b9b42ee5124892e44f24319efd28d4afa7d4219345f115d18a734789b0d35848c5122c5f81f37eca75cc4f331201170d3631dd098a083d6debd566a1502a5be9c03abcf0feca328a9cb60ee91da251fa11cf3803679b7fd4e6e809d6d30264ae5a28974fe0a966d15d17827485e9f0931f90a617c1b30f66a02dda7474cf76b5637a631529f7cad542f95b4a77c3541f48efb3eb32ed735c69d65844521c4f04b9063ddaf4ba758b7597a6e83f315f14b36878e0b7bcc642145e556336621dbcf1a906ecfef3278bbdd33986362d5e18774eb1ca1c2a55058759ae7d8f6a722fa1d4ac6ffde6a4fa087410a4b4f8d87b4524bf6e317220c2d86f721ba1c9138e4fc5617439ba399944cca104cc9faba391c30dde2362ba23d200f024da2688ac917c604c7faaeded02259b290ab88ea0b5722b143383217d23c1c331a0c67d7c518642761a2d1e16bddc809ea70e6c248a36299146802b70cab72ae72a29b5a94114aa74c039d7d2bf84fe5732e7777bdce6f35db43f5ef3ff064ef7206a56e0d6be38dfbe19b82eba68bfd23237badd480f54d947b17073977f88c4d22c396684eab919a5fd2605d9ab9993cf93dbe47f075a9a579f9155ac96466387c8279b497dc7cd559eeee6c573c3c36c0c92df16274f1d729ec118c18e9fc1248d869250ee8d36b1a76c0234f2b4839c44bbf5cf40906162177f0c3b4517aa7b939bbb9589a1b5c36c142b52e33a19b2a6e000f5777c77e97b83429d10b7c0d6a4118d244801580aa50fa2496aad82c955006164d56af300d0a9ef43e4500718fdeaa80ab85e39fc21eb63883bb936bde26d2c784c59426cd0f236dddb7b25f6401ad8171e006b4674632cc28fa43d17d10397df3ffa68a2342530f5934d399f252214eacaa142508a8110b16e3419c8dd3dc459d2bcba5c186285087e22dccf25f06dc3af35a3742c863d3a64f018b2628d0ce98d394e9f0fbcc039f1cf09abc19000c54b1e3603bbe5718d45604cc8431ec515552dc8d815fb1fb1d1e0610fd9fd66b8add59b2e5969f9b10412581ce8899f76c6ed6af80b0e6f273adc0920185306a4ed9bc5f2041b00689803aef8de446a73d098af6c1613ee920f9e56a01a11549adb5369652d79d5735765b00d1db855aabfff21373231f667fc92b11ef0010a47622a1fa655ec5d3c8ca97de4e1486531299e93193f52b25413fd413322cfb711580640b6408e89f2894a081b0e64627fb213b8fa252baecc88c55f166c58e67c07abcff9789f49b36c3c34a3dd7162a5928c8af8bc69f9a5ee55582a208bb4115dce23221b285366735120d066d94d5b6b4ad06a98d2442e6033780f0991684b3f999aaa02868082155516c256f2e641966af549bd46e7401f2c27518a6a2a3a94a2ba9e4300c19eb74a0a72312664d2d52055d0b57f003d2e730ec0b583792f405b0f19c2506c3f182531c86dd9374868a884f60c68bbb454a0ec36ea01bdde0954127ec20499fc330687ccfeae5a2e08e0a50c5da076e64fbd86118a8b4bfcb93a8f179e4d80ec3e04efab87ca1b56d5e92c4144986a35b4a9232be554b835b7e2aa8f3593af37f6696c276ddd6ec81a32ae71311e1e40d3b83b4d0e826eabc9046deb4049112f8faef26c01e47e075cc1243681548819fb1a9c4fb5c9f1e8f7437ac460f3a8b230eb8757a8e4a08d93916f3d5c70185e751e7a87789b9fba1704229fd1115da1c356853ad3167d22c7537c15c3e5fb473f586eba73e6f496d186d13177de7a32740859b5ccc12318ac244c5baf1f786ca30e6aec051669e64c601f9578b5eb61ce503ee1764b8bff5ade7a319390405e38cf8941150a3485207abd9f0714fab60ceaa4183ad037b98bf909822d90ac805aabf8d768643582b208ce201888d1bb61398d9b36d9411d5d37103b435c82359bb977334814a76244fe1c0cefc132d48e9cecf11cc0044416cb8f748f6c5a2968d2a3f7e854e683f3dff9d7f3043ab1e47aff091308b6b241c5bac1fa3e3aadab1dd951e38bcbed926a1695fef854f09e5f1d0082dfaef09f7e0198eada01ae185c1e29f40c823898edc777de0911a154bb01f84e97fa69d7783c54f9419cafe02fd4ff69f23d2fd499a93abf3af3d651e3a185f915a83fd42d2555ea3b30b8a9770642753d940bd35f3d85316aba63fa0313ac53f8c105d3647c4ecd55371dc8322e611a01a2eba17e07ac7d5d1da60e932f2151458ad5e285c564929171ff71d5343da584644cb17b6f45aa421bcc0f8d440c1faef0059aa0ad0b2fae3dcb1a48884114459a8092d920a1936093321af0c94559cd2fcccd33ce6aac49781c98ad88f157f24b41d7c86abb5d9689c7adb4febab1d6a7351cabff1f22e0d3f05e022cb4a7ddf76f0560b7af7aceaddae8f636a5baadf2a2bf26b7141a69b3a6a8c83c2e0dc6067f0538a9e3854a6e140a29b0d8ccbc203451b491d8d3439f18beb51d0d4f5ace8aa4905eaef8f5a6c7f0d7f7571f26b84e13315665b1e46f990c4479498ff6d9b74f233e9854c747eeffc8c8ee0fb7c93cc7ac8a3d16754b69f7ac213e71ee79af2e18dcee406edd36484954f6523777e86ef0ab4f0383a49b290f97f789eab61f534efeabfd5c92643fe938ef8f3ead852116565f4b23d63d52b683779f9fffbb9432662f696440d5c930820b26f20dc9bef784718506ef919f79f2f73d93080423ae255c68ba2f8d2946b2a62e89c5d0bb700508c65a0ce81546aa945ef868281fa868887b26af1e603a4642a07890ce642783e148a2f7f4a679414e4aaea2e57b366c0f6455f31c8fe4d47ac511c2d8cbf8c489b8da041ce9ad7ef304d56ffc67cb557032c636fe64243b323f56639eaf6ba0a5ddb5c4513a2c35a5dfbeda1c1afcccb603e11da693cae65c0754068f91a2ab6973176376825a0e24196428e0afc15fdd83aa242087ea1ba77861c8b68e7c165ab54d88352a1416b1fd7e33a03819d30441827d511b6c5fed25b377e94a687dd484728e43f8a48b8f398c7252d8cead971f2882443206473f6244c4753e8fa1277c7964a432e19fc76fc68372e1ed34006a4081bf7abaaf668022ebb01ef5c9585972471528b46f23c842513a475ad2e9a70277b4da0bbc51efc925317e64fdcc804e94ca6187414abcbdb6b8e6eb580f0a832f6c4647f07c902535f8e7fa4c32aa494fca43292a6df8cad4d434b743b6658a389b62183ba5af527eff7142cb2d61320fac35c8b387a7394369c2a9ab43c04a833a5cf4ba68ca2785dcbeaf2dafa3fc9d668f9f85d4ee0948b300955b9f50ea3d750e5088b717c463a2c3953a24fae90247567ac76dfdef5d253b7d9074b876d8b8c52a57fd753854b07982d5814e479197fa35e765a87a5419a0c8cffa9b5c313c64a66d390a6303b4ba755d85eb49d93d03b2645bac6cdc5a3ef09779141ad94f8b0afbb36e2ce99aec13e71bfa1dba7c474868ceff6e5b0f6278ec2c6ac28582e118e58658277a5c312674afac40a41a4eeecd24da34c6439869c6cc12a69e4a39478f2352f7457b152ce5d01838ac2adfcd2a3fc7dfc3efa18723ae42d8dcb048a94c4f44c29496102fc38d2db8c418bdaa50044f8955ab6e989a55642af70c85c837be4e6ea384aaebbd1dac11f54ceace95247a8ab8bb2240cd6cce176a76a02a49dcf977a61ae9882f206e35c7cd9ee130ebe9d29e70800e9719fd9822c272e0a59a4c26a1dd6adbf197fa056da15e67691b8d136b87527a28dab7452c68147314fe64fc9f895bae89a0b17c2a28ce1f122810cb8e180841a6338ed1be6e0cd0e68a81dc32b1f4106dc00ef1840de0e2f9064d3e0a7ae8e9e89ede64a40f21a26f138dd5dbeefcf5fdc237588816be4a792b15099233d40fa4d30cd8e14e767c8f3ab81148a8e9dcc0f182c21de4517ddc7013ac654c6d9a17a79a2e1078af61e9550a7419e2556b505c53ec8ae2ca65234994b20a231c6721eaac377dd2cd4ea5e0ab0cdaead0aa2c3fc8c3c4ce27bcc1381bd789af39f4c28a1247aa0e71399f5692df37ce88bb713b1b7469ed97ac0f0ce3458c54415be5421e4a7c3c547efd5c9a67c8720a8a1809b5577c440e6529f5d822ce77e74a3384d82449d27baf06ae10b2b58c6f42262289e9da809a315e2f6bbdacd8068efebc8a840ea18ebab63512d10286b789243e2a1d11d6bc9e634914d044d99d7cfbfb6877b3752b2759125e5187b14f1caee3409bb6257edb9192359d4aa7e6e2468c09b17a8aaad8a8b2e4e74ee34a424b2555574784a63cf70ea926215ad86633a775a3a3df9b4f699943301d0156a572e46c43353608981961e6985a8a877566fd36a13d90f424eb742198df0c8cc0700fcadf39d9304d0d63dbf977512f29bcc9841814d8a4673f64045678ca27a5483dc5a5aa8d5bc9560927d83644c0bf3093dc1d31fc4a0402de989e4feb302242a1a4a6398669901c9b8be64c60c1a2c6154c6db0211254338e1a11a6c6fe8a256f7a500d7ec1b24a37acceffa014f9621830a2d56a738dfe98613e4a48778d298b567c256e17537d820671003850df0eb980d66700225d370df822c67dde856e067f5158a4920662049856d3c45693f0b899990b5e8aa176cd059d2486104f817dcc61998460869dc0ec1969387c677ac4a36a3513e3534675e3ddfb61ddcba13d9c6559e14e3c8a38827fb9364fc0a5d75cdcd88615190f439912003de540151ad7c692b909eda97fe406705926f6211a2702721a5960f6c42852154e614a4229248166458a2f067a4d5934b6b7f493b25016578ae42de0216da4888cd35f27389b5a9dc935a40fa2d1a66458ab167a479d589c1d87e59b2aa2bb4f3905b70f095594213896dc655176eb79a2a2c1e90862936d9a61bd421daceca1b2c32f5de77ba5a4d0365e7e3cb69b05439ae9e3aebd203352ffa8f562ffca880fabc2d20430acefc4e40c1af8b9641d038a186232ae5e3586c12b6c22198019267f00d4b1b54657c50642c0b27ef056251608aa3b09c3d50d19847398fd5e1abce2c6a55bf1a5eee96c4329ca0813a0174b1f1121a6fd8c69a7552671c5a2b329d01251937f695a06d9e49f48ff92f064ee34f6c281f9b182cc894c8345cf610f6a945abf3251cfc78e5dc9cb9caff9c5a28b1c05da07706646599c822b8ee093af82c69a23c41fc1bbe61064c400b34ae4bd065b8199ad59ca47ec4e22904114a94700fc7dd436be2f0754b3107cafee7cbd650a972d09765a05b11c0acf0040e884be05b0ba993529854121a675878f6b50d2edd59c1d655929463dc23982bbb63227625bb68afc547bd983ab3097d5a81fc557c6915e0fc9c143148befa4a1fa055a5ce5cba385179e709d539452ea376331c752b23be1bea1952e781ccb632eabd57d521769628eb9422df2c92b5eec501ecccbc639f686faec056fc88ef8c116366c7a19dc3d3dad04df931fc758bdc05019031abca0adff4eae6ef5238da4560bf3ebac661383da2b375fa8a2d3269c713450fd4fb2c66cd903123d107d0187c020e2bad25af16e20d14a6f6d75c93bd91deaec3489a8c8ecee7681e8179548b0e1268d3f68e7001f676fa3f33123f70208f9176540abd2d35167741866adb5e95ca57d6419e54eb79aeb1d2d450e75aa38d43ea054fc54e482eb5891db309c0b46c5ad290332258b98835ddc5f0a020c66d64af74cd3a68c2ba70e359eb1c187c1689d0e7abf3b16382f69f3bf3ba2500a8d2f9d0c2547ce80df6b093d2163883fd90e35fa9c29213253eb18824527716d6624ad6aba76a733f428fdab61649f51f0e7992999948323def1229918da65c8d5746dd011673f7bfe1e395aee39d86db9a12f9c99539fe2b2d0c3910f223d64822259f466ace828adb95d5db2da9ad2f301935773a4af11fdc3935a0b3768cba13ec3a653594622c195bd57d935270f83057e9c6c38a674d815108a4f0c51a5245be19b54b75444033e25388d3ad53662b3cb228b99c78760a9de9d0aee01b9463d371b950543a9c5dcc447ab7ac3d51718677a58425674278c4129224feecd69a72464099d131d0a916aa9bc2aa51402193f533fe87a5646c40b21a80f85b992aa5b58871af191f519065d3377811dc9fb0f6cd20c7e29a7948c1dc14f6496f10f52d4e33f9a6d3df6935b812440cdc31042e5d048d0e56106058451de8651b1da6c4431445a16341277f6efe3940e25f0a08b228998b42425cd85e139a484925b239f44bd2e46e4a7031df068854599de6e9918d52e7b2fdfff944c0a26d41a3666059a1f046d2f6de7b6f2953590f4f0fa70d50c4282218f5e64452b1989858462515ab896885e844bc4274225a215e414d9f7845134fb69831a94aa5279e932d2480a24eaef01ee065e13dd982d5841545c97b223e11b3f09c78567859b09a94542c262c2327ac26245115442955056d9258a2a529540a0a0585efbd125ff8b17ccfd279a7500cc11249e5f227d2b3909e8585f42c2e2921d3fb8b4422b9b874a416d29b4e1fe4e2d2f22d2e2cefe2d2123ef87dc7427ad3079d4ea4ea625d89aaa010fcbada52c32c78f0c2e1e5536000e50583272f5ac5cba7bc208a5757e5e5754ffa507fa2ef42dfe5e442df2544a58482c0174fa75348494fc3dff5e5028a5f0af25ea42234e60a4127558d774905a15e4b20a1c4ebf431574e8f72791f3a17fa29a196ef5e2e2fef724a0579af13fd1a2e5f43e54377a24bba17ea7da842a76f7997f7a1d617aa460d5ac3c68d7f5105d508512e3752356abcfc0b4161d08728175afaf05b529e8b3f985e255510f82455107d8930d417bb2a2e3504820bd070419497cdcba7b8c0a8e5bbaeeb545e3d05d197d8bd83424b9078f992eee5e12b88aabc5f0289fa315762d0f01a844314422977558db9128306d5a1f3dedf5d70860b4e203e65115337eaca5f6cc9000a143f683f5885aa2a8892ea5795d7629edef42c26d3b7fc4b8ba9e54d2815a9c5c4720a554230504a9e6885c973048556e8192f4a55a8979b5427f164746a39a55a54412c54e5d515045021952ea67b514451e958fce5009410e9bf575048a5e549ef430dc5130faa846598516f5ac4ef5e3ca962d0a82ca0487ff05e24aa0a4f5057dd7ba9504a484628253c41bdf9c8a8372165f942324e462c9fcaeb0a6c79002a7c0fa5380045cde8ce109fd0a1516f3cfa0a025f07e55356e0a4bb526f82422a21957ae353a6d0a033a3def894159cd1a11173053a03c6a041673ecfc8f75ad251d5279e54a4a76f2aa9c24f0c1fa4625d7566d0d07482015c99d20514efc86de0b585012d0c6861c00e14e9e5f5262886d0f3c0cf13c58e44aad42b752a77d1528b47c32eba2b3ede5702297cdff77d1f151768c21048d082134c61c5023a1f025edff7855dd7c53a1cf0fbbecfa7a3d2f2f2292688c2cab70227983a0a8a2530e3a889134c60099c80578c314504c7888114e1cba78c71868f142bbc0ff409820a50e7755dd781df165f8c4aad0ab992127a474b78b18002484003503ed005110e00c50052700076312ab52a6401be2a9a08412956c00238a9c2f791be2a556224cb2b68d542060c4c1773e3465d553175f46ba5a159ad72e43802d375289428d61b1e4ba7f2c01c31a8fceb0b71d5122fd28b2495a80a697d7f21f5691549de7fbf84c9e4b476ee02c31096fade9358784a2c5d7def3d954a14c2c2e3a5f13275ee995cfc15b204a1b5d4791f0d9d446aa95f496798beefac886698e1f27d20e98580f53b9427869406d117187e1f7eaa2aee32e0c30044fdee81c4f7beaa9c10bdfa9f4a0b2f55539d10f0c30f3b960ffcf0c31628ea97eabacefbbccffb3c9deefbbeaf03411004bf541886611876a9effbbeef6b8182c47244d4e9de54d2a2537917f37d2a21e057598eb84ef75f8aa6f1aa29d7719d25a8c7c2a4aee8535f3910742788baec789f10f00ab4044694d25abb2ab452ea4d198307e2183118c30925702284baa3510229a0c0001538791ff87d52aef0aca0948221942dbaaeeb42910c2952beeffb4452151c8461482a49b922c50a894422954a6338094d472614a5b4d67ac68b7ed799e143453150158beffb401014bd53e82a510c54104a14c5936704f3a258a044315041620925b2780b13284ff52da78a05ea868b0bcb8e5347a15e5e5e7aa06ab0ecd460d9f1cff33caf868d17940d1b366cd870a1c55d86beaa7e48c55fc0f0a640c30c32c400c30b2ec0b4c0028e1b366abc841dc80118647c60dc00047114010c344010043d1034c1f1640a08ba80a92b9a02010e40500608a21086132f614451230c0968208c12d8b061c3060e1c60802186b1021c3870e06081051038f178d042184c80213571a1858a175e80000c2f5fc440860c2e0061862921a0020d380ef02e5aa4bc50d9980280134d8991e34453359c686a8c2729558b8b028eae7c4dc01553c0d842a5ea72e0d2c27232954862156faa1d083e65314299a0381427fc2fc584147e4f4a35c9d1f1c230844154f9789fc445e713c550a5c5f7a53c9559963cea45abe789c00a58bf7082e8538300aa2215b5fe0d980e67890e546182a30c44e00029a042a75201b2e0e5050712644009557c0102230841a77a475d57465d55e970d0c5d44a2bad95d64a6ba5b5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb4d25a69adb4565a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d64a2bad95d64a6ba5b5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb4d25a69adb4565a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d64a3fc8f4bc239917984c3d50b57a807aed4ed503a84f0477c2eec3ae7a401445d1d4529fbebf3c5b77e555554274098f561e7c9e6734a50b346e7471461755bc70526bad5e64e105033ccff3ba90224601411014495d3cf1420aa9442a7971c58b27c078f18292a954ea820acc1747a693e9f44516748a1765e4f842012693c9743a7d21e58b282d6298589c7042899ed1abb3f291fec55310ccebf59f8a0a9587920aff94229d5e5a388b0f015c422d48a697d8e174544c21142aa4d77738b5fbd20bca2bc833eaac88aace8c108a68d202fc52caab22bec22e05aa8e50414ee2e96532f296f03cf00c93e708ba61f432a54aa8ae13bbf757bd29557550472ad411a8421d79a8a39391918882d1f9aa8ec9d4a53ca30e47147f8b577dd1a8538146465f754a2a171c70810a421da18eea0de92b4925aac254f65e41a8a320174f75126f88f513c28d90e491625e1896c2522886611886a4cf0b43d21786dee785e0e7795ef879e1f7799e177ae1e7856129f4bcf0ebc2b0147a5ef8d5300c23f4422f2c852552034017ba88f2821a9e17a3f1bab00bbbb00bcd78e97caa0441052808afab127a5e18650ae2573f21846158ba7551aa84ef91c42e9808430a1659d9e2d1176278eb428acf4a170768d141142944108c920093e7799e17e509c98bc205491ce3e8036b105480beeffbbe087dc28f7a54c84f0cc3effba29c007cf99428649428f0011780dde7f3811988950a49fcc00e3efa5f10548048a208450c3f60a57b41c309554005885274a604784fa270f182a92bcff33c101ce3080441300cc52827083f2a3ee0820fccc06ba5555edf0e3e60c5ab4aa0ee355e402ba52f66d4aed628428852c58b3285ceebba2851ba387a75c1441752785ff8c428d605a9ebbaee280a51b24042094250c601743a6f8a57d7051aafae8b03bcbacff3bcae49d70da00a3be042ca117c108510e8749e14afae8b42c6abeb3acf09a90b575e15cff34aa1170c287d37afc8ca2e855e016c80e27d514e5fcc4aad0a098223f8bc9b17525a4050dca0d8848b0b6e5ebce014763151650504412f0a2f9e8082a396ea5325082a40417c32e0a204a0077e9ff785024c21088220088220b87a81a0f7799ff71940000d78820b09c480054718820e142fd00b1dbcc00f38e105821ef88921f84514ef26aaaa5801411ce0e76d2bb73de50b1c7c4145ec60c2308952fc0a146ac6938a83a0cec9113177c400904842095f8252ef090f88f53b18cff35ef5bffad9c0c0e45e616a77f22b4c9ea3bbc9c1fdcc7e19fd39e48f59f2353a6e1f24be743ce962eae30f125faef383502f970f00d4f039de3b9c1bde8695f9446c1f8021ef4008fd4fea290d32c0f095be8004f99d179ec2b070e369950e47c8d320f1d5f3de537e10ea55fb20f185e41d09edc9d90751013cb5f1d485e5bfc33995c40e6788a744bc11ef1d8efdd8572c505414512818987732dc6f8aeaaafe007c55efbb5117535f1c520589289c2a0805b3554130af5541bfcaaaa055fd25aa9ceea6a255f093534a7dd1a60a124d29d58990aa3e0952d5b256513455104a9ca9429c1e3634cfc2a13ea132810a1550e7a6b4e8e16b1d4ead52cde862ea0318b0baa18607c011adf2e9dc94163e7cacc3e98cba2dba982c7cd56141af38591d3d181d948e0abd42af783a37a5054f47a59bd2b520f51566860f7a271d4e67a58bb9e2e4d5e9dc9416477ec8adc311f2c2d747b5d031a17bc2932755e7a6b410e26ba8afefd3e1d47880c70028368260a040a13a37a5c5101feb703ca32ec6f395afc8e870e87b4e56302854ad64dc9416b21fd2e150275d4c51bda1061880dfd0283c880ee7f4b53ea9450bef6f8ab4e32b8faf5fad7438385fbf5ee9707a7cfdcea8c3d1e177f8fa9d930e8787afdf5dd1e1f4f0f5bb271d8e0f5b74383a40be7e07468713e4eb77523a1c21cff3f587af45be1af9fa9d191d8ecfd7efac743847be7e77a5c301fafa9e518793e4eb7b471d8e92afef39f1aee87084f8fa2ea260a8113da24ee815a42a08664cc95236e55d4c4c15e43878512354414ee5458950053919025005f915b782440594f22ee64705842a8842e95111a101500d5109a9b2a30aaa60fc500555282f950f55caa5ca51057557dca878ec50057546352a1a5550f7444615d46df1a2cf4ac5a8823a305ef45737a86a48552baf2e46a54a753134a882ea91773132a86250bde042cabb18185510250347ca86918b2a883aa157ac6872a8b724f612f29ebcea77a9aa72002c61a3a395d20a84ea080d93d32c504e6a57753c12d8a0891980918515a650f19ef02850c597937ae353b238c2eba63ba3a5a5e56505be041840f94115624003285cc100a91e14cc144fb4d429ae204d818518265005e0e7022f07a72e5c054105c8478a219ca8f848c104d127082a403e524c21a442c507680a23b189c92406a802179c723004299820c514c02198a64cf184184698e28abaf2720a01a244c02485c505285fc1d01c3031886198e8cbbd294d54a1ef39825e07d47b2f5255972a4dfe29278cba1b30cf727485295c80024a204204a6f0041d175f4e75e5752c3b9e1427c028804855529cd8e2e5a9603a2adc247ed0f7f4fbbe0a7e9f2a07e57daf9a86bb57bd77b0f3bca7283089b47a8a0a3ca094761e102827830a68a8a8a084cfa3a8c2033c0a98606230759de73221f8795da555803286c9c5538da1bf84151c88410cbed8c1135a00011a36409a810c61a012f002bba8c1110f0e08430320d80110cc40814e6d62819602bc9071c5095f5c11838934a828830c09e804899e13af20949331ba201806a45601bba4cd605ab6636b66e72bc37946e7ab91ccd4b4adb95c3be3db0da761d766f30c9577c635fd18ef9ab6b5775d9defd0cd7f779989487bf3bd3398ced99b5b318a79680bddf3d0bf171aba0bfd58a02d54b4f170bcb3c29b21aca2f8791da55e9d02e1f5403dd4e1f3ea94d2ae0ea134a495d20e3ca2d24ac3cac2114a411a7aa52cadae82e0aaf4d4abd573423d4a6b8942a152927fd4abdda534a8525a452415864a2be8558a844a29582910b4054abb2a9ae0ebc216ca02a538c48e3ea160a5b476305abd1269473d511f22fd72743bb57a355d8ecb0d8562624075cf6b05a8d7adbcafd2cebf04d02050af8e42a19c3af568a54aa062c581d2fad5da51aa83ce50919e6aad15fc416fa8d5ab94a66b995c106da02c355ea80ba05f75817ab4a35e7dea97a8e7b504fd63548ace5326a0fe51570a6a4741ea8594857657d42aba3a9ad3d15abdaf27d28a7e9486345e0f2f34b49640b1524a6948a98bd6ba830ea4a4ea75435455893a194a32552a86b4fa5067a832743274de3975a160ad94c543755e75a1d64a41eacd282907357d957eb40587524a290c3500a08954a94c3c85950241454abb4a3d3a84ca507bd418aaa986f5a31dadb49a6ae8d1eeeb7ad08eae28899e28a53ad0196aa90ba9e8d14aa98b5290857a837a957e26dad51968d7d5ea558ff6a895be504b944445af524a5d54865a0a3bea891ea514e7a90b5197c3473b4aa21e0c25915ca62160988102c0a3b58235bc148583c63484d24a2ba554c643bf391212502b485afe404030830a10164138e3c7028106082054719f940edc081062708da4c480400f16d8488f0db212002c667042101b034d8f14cc4c0e105a3080635972dc6051a237965a8147953422c0e3c9155ca64a15666055d9a2b26216c0393ca1c12187672d61862a7f9ae1490b35fc898d223cf655e1ef11c0bd7377f7e1ee475c89fb0feebe72d46907ae73cb6e4bc24026a51a58601413b274a4307481147e5d87e304c4448f4a5c812531c73bdd38850238ed8ea563117140800618812d3524792c1619723660544a72223d560b1375070c1f128f823b94c0880722405e0850bd924724e60646ee04fd5c3726aaf742275303a31c7c9cc0e1a2e3442784890218b9405272bad100a3202d9ca22e45c12886005448ea583e21cf005130217a2f5d0d0d4c486102241c6cc044bcb280966afa7c78097b783fdc21a03461e35b9582946c88550f87b0471320c042481331a0628689184f9cc0c8849b3980002c362ef40b23176e9828853dc092d8d2e1f008e96428050999e821c38f3804869d2025d290d30fb983142394c7ba29853d6cb08025d38eca080b1895c42133c8a030fa3ad4474120c0d2a70388c3ab07138e748338042c852eb4fc7099c1eb21b5702386243888ab9e23363051125ba10e161d383c3ee1c90b5ff85cdd0de9e4ddf03e84a4b0e4cd7c3f78393ed00f862ef5b1404312c7aec71546628905120e134e8ca86987b8f2727839c00b18e1d0e201f972f86620e5f06270a9e96468c2a83543bb5927e375df00544620009f2dc871600354a440e1c005b2786289248ab4d0ec8e31238810228824487e7c880460882b47c7ca861a00f05e0a50d0838f1a542fb8103e71410bb4b000103b3db864c07132812710230c0d6ca1451614c0e2090490ac6e70400364422c4109307c002aca990f1d4ae1165538c121e500075c6ce1ea71d3c20d53490c6380e10b2f88b8a4919e00f004d989c0140628408d2a3c44c0810d5c60092549706e606e7831a0e284243e78b82185a0042210012a8cf4f8d0e18613ad42a5429d42bde259792554332a10be2a5407f506d506a41a9c68506350c5a8425d10cd21caf0c5c0e2426da1e2a0375e6c7c35ea0b45792dd5f4952a4914ab473b4a416771e960e84660e44961e41101715815a16c4cbc54c0e8fb4ea10d3a60c2c3a2c66be1940506c0278c3c2224164a31c010c08824004f886e06d3064f621031072c753938b0c04804c3e806114c90703a2998742c4a38fdc0e84bc3e83bbd6003a3d396f9801109a6a5863a7c339f1547384c2e2ca0092f0a239714ea3b99971911e6258d26be1cc49c7087cea5db41dc9d8c47a4871458023360d499c0173c96a9a6a3dec96395827c398402005f004b60d0e9c6e906a905138e50009d159a005fe8a034f19161544390677b580d3278ae930bf8e2d14ea6fbe1f9b0e0086ba824447d60f8d2b93e1c2d1434759f77eabaae76612776a4520c5e1722096bb8f8945e4230a45de8edf0663c2abad0553132ad7860c0a825034cbc801e0c229026bc1f34a182bda7718522e4000731a032850c1ced278d2b54e16447a7071e70f0b90425ccdc807211c3218430d293c60bc69042031534572cc08706fce00630500109bee08016332d1b60330ac06d2a74860213acf0a006344041174b28610411420461a44748101a666881052a8811020e6c4089246032c4804f1a5c5a7ee083253616a334ae2085281031440b2cbcdc4005291883045f78d1012aa63000cc08012831d2c3038317a4c00522b862c80e74008317a8000524188105b280c2090230c1ca0d6a40821188e101264697e4d97961b13284327e3005052108230a1755487149253c3b312f2c3078c1140838a00a26973422003c41767470b5b0783e843260f08215a420046144e90017079882491101e0e1410717ce8e9a981a2f9ea73184327cb0822929404108c2e8001707a8620a299804a10b581144f430d342a30a447e7069e9810c313889028a2094d04c400a2872451a20a5d15dc1b3c257854a051103de052a17550b6a536b3a1ada32c954569743f72cd04065a831842f742e5498af05ca02c9468d1a1dca73616941b1dc38b9608aa1f442124530ec40f0fb3aeaee7ee3ee2f78c9dd6b705448c4af29b3fb2cf36de692782c4f1ce8a8700677171d15b2e0ee36380ab412f3faee9c6cf57fc9529fe5ebf277f93ae4b2cdb636befd8dcfd7e58323408161b87b8ba3c00cb8c79e7696e7ad117dccf3b0c3af78d8e1cf92766548b8bbc951e012f7d8cff0ebf2774e5644abd51ac2dd5fdce98bbb03c051608eebdcd23379a3c01740cfc9f36efb1ae5a8af0cf2bc2a477d1ef89e7c6dd3ce6bfe0cff673ccb76ebbfb4d36617e2bbe9dccab5d1766d33772c4ded2210f719dc451ebe1d5edfbdd2e05e67a044e851f33e3e67dc88438f1e393d707adcf4e0d163470f1d3d6c7ad4f4a0e9d12327270727e7268747ce8e1c1d393639353934393d70727070706e7078e0ecc0d181638353834383d3e326e706e7e6e686c7cd8e1b1d373637353734373d78e4f0c0e171c383078f1d3c74f0b0e151c38386478f1d393b7076dcece0b163c70e1d3b6c76d4eca0d9d143478e0e1c1d373a78e8d8a143870e1b1d353a6874f4b0c9b1c1b1b9b1e161b3c346878d8d4d8d0d8d4d8f9a9c1a9c9a9b1a1e353b6a74d4d8d4d4d4d0d4f4a0c9a1c1a1b9a1e141b38346078d0d4d0d0d0d8d8cc6fdba3b0c8eeaa4e0ae73cb863b8b28b156a555129fc40fe09f55629506f0ee34ee9e72f7992e0b9d5b3a5fd22c71b2999bf1f8ffef5e6570af31b85718dcddf37ae3e509aa6ec7dd4f8eea7a7437b8bb0b8eea5ade158bbdabc48ac5deb567d7fc2fc562768d56e6ff3dbbe62af62ef29aa59d69cb030fd50c777f475532dc5f971b27fbd7e5aded7769f2c461d9cff06f1cfea24b768eaa5d4479d60d37fcb64f5ea1b13cedcdbdbe5093a831c41577d7c61521c239631d77af8eaa4adcbdd5caed9b6de734b2313eb2af907ddead4b7de2f1e471af2e649cf3cecd78ff9077df7039e31ffa0ed94b842c4d3b74f2641c648671f639af10bc6fb93cba5cfa0e95bbb495f906cbcdee95854a70388a3ef15d9a37fdb16d63351c45b7bb696f5a7014dde1ee371c45df79c8579fa5bbb3b87f2d4fd0b94562dbcc78875049c82005eece82a31cca79cddfe1afec4913876bfa635e97ab2fbae459fe1dc2b69b61374ba4ddfd73af332867a2736bbc4330229bdd3d06f72ac4dd611ce543b8cead6d9bcd8c59cf8cd834ed4c2edb2c2bcd8c73be7fda27ef9971fbe63f71b9ed3eafed9a375bf9bbb4793fed2cf7b6b68c676fdd2b8cbb53af37dc6b0bee9505f78ac33df77a8364842b4c2ec5c8e8e51dc9082a30690028fcd223c1e4e8753ef0bf47020925ea77af047def9520bd58522181841224d5f7a04a09f045d5d1eb741faa9400559faa7b7f25407ad6a3238fc991a76a22f4bde7edd48e0680fa476be77de02b2c0a430a060882ddf77d5f0722e1bd3ccf5305557f90760f2ef1f2fa0493bfc9f36a2ac8fbee0582aa20cf0b5a8286c0247638b5096de23139d2c0921e5e42ddfb8b7e134fa581253dbcbaa74a44ff144a0b94f7ddd7cff1ed60f21c6287537a3fa5ea9b28d53925a1447d5065549f3e751d53ea88ea985e4c994292f7a49a62e2bde9692a09f169154fae634a2d21a69af4a0d33d29c5e488ea74dfa4071def9d05a8337d29e53aa7d411d5393d29c5a4490f3aa53fa23aa4377d0908d7119998fef4349504e9a9a84a420340a4a79f44e92bea0443f83dbc84bad722e7812726a507534c4e4f4f2aa3eee95315932494e89ea432ea9ef4241593a3d7397dc72244f7a754124a745f521975cf024407d47dad475487f462ea88ea885f4a95de544ddfb1ecc00084f7a717a263222a5942e7a44a420340a5a79f04e96b12a5a7ef435722a59a6860490faff0a94e1aaf5025a445aebe1639efff63810108161f1d1365f1f1de597cbaff96a06017ee3638c3064c30b9bbfb3b8fda7955bcef0c30f43e100c43512481a1289248a592a9643a9d58585a5a5c4e2c2d2d2e2e28d40bad5de779df077a1f0886a128924291442a954ca653c9743ab1b0b4b4b85017971345bdd440d11ad4868d13bd71e34471782ae886a782580ee3c20b37280bb485164e14c66560f2de739cc0eee49df1aaa1955735c365aa938e254875d691cbd477c262329958bc94f7bbbe584ca81758defb20d108cbe94d2696d1e964c5ab3e4b7dd1495d552f6889eaa554a75490f87a89d7e9bd94b7a47b81af93122fd1f4610450412ee213318bfa2e2727502c4fdff3bc0fdf544fa71469899729c562f2f252fe2a85df87a9ee4155a77a72a2e2044c2c5660e9baae3bd5da7dcbf72d153c7d6d696979169396ea52eba9fea9a5e57da82eb5e574fabe6369a9aa93aa09ab09ab09ab890776817af13c8f65c58be7bd3c8bc90b2b0a8f75c46ae29dfec5a3ffe275c5b2c2c5abe1a54ea7671979efc28ae2e5e57da835bc9793c73a226dd20ba4175510757954cae5594d584d584d584d3c230a3641ecc4ee29489dbebfa8fb1248509611137fcab2c2296519b198382b0a5a2ab18e5847a552490cdaa4922a6809518441814f30798e2051caab7bcfe8f38e3ca3d2a909d289943a91b04005794e3c271d8ef8e489e7447ce23991004aa8f4df2b487c72fa276216e2166206c4371dfbd6d6d8fc2bc3d5368d56e67d3e2ebafbc4e3ac3c6f6d7f2c860bba443f2bff6a9c1dafec63312ca1119b3a2e17d02a86d337cff0bd336dc73f4b9b2e4f5b1bafedf3be43d77cbc4b7394d9355a69be26c2a6692ff91a9b3f965b976769cb775f529be66b87bbc73bf436a6a6ed10970be876f3eac7f286f713ed2b7bda59de6eb6c8b7b62ecd8ff900da21a66f6d93f6e6bfe479f7597ebe43f7fc3b9ea57ef29eb8cf99b6bb4bd70e90919e6fe54bda5bcbf6f6589bf659dfd2385c0edd7c6bc5eebe3f4f3bcb2b8bd9e5e3ad6fb859dbeaf5d76eb6082bdfdabe34bc7fe36ea68dd167b91affd6b636edc640df02c293ad891bcb7d96a6899bddecadb9aecdf68cf7f6a3edcde3c983813479ef786f3fa3cdbb68070305b936fc639b383bbb404edcb34f1cfe31bb4770be429cb8e773807f0870f722bc060c3bf09acd6a8dc3e9f22f897b2e8947570d0fda010df7d56ffbae9acb0533cd72a62fcdde60377b6bb07db5866d1cbe241e61fbea1176cbbc617a5f5d54ce6ebec14cb31482d576490413cad676b3bbe77007a3e0ee441ca543d18ccc86470d8dcd0e9b4b33b3c921499b1d3c6a687266333bb3e9415393437343d2e4cc68461de3ccb8352ecfd4194c8b5b72712e87ce1dd3de1f8dd3e7d527fe71b3cfc6f8c82d3390ae3a6c6a2a0d1d8197240747b988b857245e7bb8435866ff9e98fc5cbeb825afcbdaa656503d7cd0e3053d0e108bfddb9fe1c76ddc6de3f053e1a81c33bc877be26bc39a359e397db325957e9cf6e582b95c3b8f7bbcf14deb5dcafe2ced7dedf4476bbbdb4a20d2eab07e866dbbb4d9f09893bdcc9aa51dd2652e6f6d7f4e96f39dddfc2cd96f7db735ef11e50f79f325333e916423404e24f7e620365b9f9bf1ecead04e9c95e44b662333231b6784dc45779ff8c7c9b371cf0fd2bce56c973a27cf2e75f089a4e89227cf0d87b3907236c3e993e79eb4f2e7c7c63d765b20a63df3dd434e1e5d1611cad696efb64a866c9c116d875c12ff48a2cb22a4bd436cb63e4e851a2c515f5b09345af3768fd87d8b68eb63b3f541f128e2ee2d9d5b66b9713366b9712ed78e0c38edc499685fad33be434218035121ef92d7a1a6ed10bc2f69017707e23548407077f2de9dd3c9d7675b20ad9bf1d69fef0dc893a7d5a5bee7a5693c5ed2fe89cba5c53b46c6fede3c8b69e1fd773ced99ef10a63dde7fc3bdbe6197cfda7bf65a7d8bbcfbe67edf70cecac7fa3199b336bb2d694d59a94f7cd337bf2e1f08cf8fb695b169f1dfdaae8df69ef849f3d67e9f386c7b7d4be3bf5922edf3e4cd3747da9bcdd7a5654b0463a04be21f40363e4ffb83bc4223263294afbe4736eec1b35611b17d352c36c4e3fdb736daf1b5d5e5e7f23eafbefa77d13dcdd2ee0be4b3cdb6efcf2eba3d414068caf88cbfdcc1fa083196b332dfa1d7c15f190e36c6f92fcd66bc7fa80c80d015ccec3b54cee0b87b8bb4fdd638dbd69756923d30584b9ba61d9fbc3fc327d6a6697fe44e5b0463202bc3e9dccd24b1cde582c1746ecdccc06c30974b9fb8d4e7dd4537df4bde2c91161ab109bb63c6339d5b19a66db6b713db6c789c99a1b43bba53eb4e63eed4e67669da9d7111996cb3c9ccecb8e9c123a7066706c7da1e36a30e1bd9dd714383438323b32f8db434994b23cb2c93a1e9dc9295a6cb85bb43e5b64365be244c5bd3b4b0dab8adccbce3697fe460ba03808a1c82c8e188bbd32d26c0858f8d109081e3eeb487030c61c48901202086bbd32060200328303fa84115ee4ea19c9e0082810347e071770a05126888c9df0e1870775a826e891904800647d4dcbd160000372420841a56c00277efa09004233c900114302009ee4e79b0f998c0022a8b03ee5e89ecf43004286e80420aeedee1a0828a12167085183270f7af0109b84269e0ba820fee4ecb80421548a0b10021e0b87be78058c8801a0b827ee09ed3aa199291c9ed32db9b8f6d0c225784b34f6e9766b9915c99ed16b943e51eaf69e21ff9d2ec698bccec25926d4572b37b75b2ad0826713ff9de6e362bc124ee476f6cfe9c169b2411ce3f34ee95ed118de46603926fb6d9faecf3e65b3b7934ce1c4f9e9b6ded47db6c7d70b47276e21f67492bb3111f7b234f9b8598762c33deba1ca26f654deff3da72d6479f3603697dc7923c796e36bbb5cceafcccd4967b9561b9d71c708871af2b967bbdc1ddf188479c75eefe30bb575692387bd2b4b5d9de4e6c2bafccca4e9b693140dc024641105ddf5b6ec35646f0221af245de8d7b487b8710dd9e1fd2de21482e897f644c9ee50f19e77bc4cff067accba1927c9b2f79ad891b4d3bde6c776f1b007777392a77e4ee35b8570fb8fb0e7fe981e906a31b74b861e5f9d2b235ff8b481cca062ab6bbcb208eb22117599bb6b73f8970a6dd6cb8bfb57db3e521375baee98b5b728f98f7bc3723375b1e528319eebe7adae764bbb4e57bfbd3d676c6361e1c55c315ee5e9eb89546d530801a8270771f3245f74f7cbe7dbc7f9f57bf2ebf868aca61c6ca86b39545d68669f7cc6185affeffa5093277af71548e1f3952abffdc2e477bb3e39bf73c6d6d2c7749c3f7244d1c26b23e458e0cf95bdb9afc39778c1cd11a676b453b4a769004b91bdbee11d38e988826673323271106423b4bda5992d962d969e49a636ebcb39288cdd607a522c39de67599db37db05a208109504544c7cce3cf1eb12b6c446b29e07182cdfd2e5d23ff29dcd703aaa0fa5f25406346e08224c8bdba3b5e13c7b20ee8e83a35240a472781bb88ea3de8ad893f76f6d5f536663f90e61d81dcba17cb5c67dce342deeb4b6276fbedb9a7f657fdab1655a1c590e95e459fe49de3b16dd7d69244ef6a6bbfbe0a867791144fc3da2d4cf7a96cdf6a6f51d71befd95bd6996444f0e9577bcf90ed9dab5e11f7797c15134a0418394276f2e714b6e7e16ed2ccfd2da6e266f6db437bfb644af4f224c9eb6f63520140d12a0e1560411cf22cb1f8288d6b5e171e3b08ca368a071f719fea1d7270e062e140db555e447106f7b325ba21b1292e7d2acd6b7481159c26e389c69e4590ac176d13d7d00b1c378935c3d9b61d8cd78cce57deeb8fb0e8e9a21e6aeedd3ce923cefedefc68db7e83ede6fb3bdfd0b35c30a9f44f7c471940c669838f2d6468d7b6de1eea4bd351d8e9241c83d4696309bed2df62d9badcf5b4bde7097c423797117b7649fb7bc95e3cd3e6ada0e21edadc1c625fbc4e11146d3b67b44a961b07cc9f3ea4bb330f2da72393bf178bb5997aba66867976369de6c3cfaeefdcaed72df9f5bfb61da219c6fb7d7254f3cde1fda590a8d56873ccb1f76c6b217696fed8585ecf3ea9b7d4e5ceeb1cc5bdf237876f290b7bce1c6d1c8cdf887adb4e60fd2de5cdb365b9fdbcdc2866e370bcb785bd3c4a3cb4533e423e666dcb627adfc79d6c6dd740964b5edd6356d6bb0bb2d5992a71df5cd78849d3e7c649c64bc497c903cfbbcb693566a6d7d903c40723b8c3789ce5d21582edf213cea92d4b7ccfb6697eb2c6d6db4d9de601b9356c8c4b7f192f8870f1f39b81dc69bc49d52b181348d90e74bef4bcb1628a7f32d67e5c63df7e75e9add3fb4b2c8894b9d6f12dbdd3ce48fbb4f1e218e72e1666b6fff2c6d77977f4dda59ea7fb9bb8da35ca0f1163e49182bb83b1247c16c510411ac2188f896695e226d9f453bcbad7339fb19e6f956ce3471b3bffb9a371b1ec9927c7dc99fe1af8ddbeaecf396e3f9aa49a2afb6d7bc472eedb44748981f773fe22818eadedafad26838fdbb462b6d7f6fb96d3f5f990d77fead6d5611440c41c4dfdab6e168d9d6f6df8d7bbef544b7e787e8f618698107ad7bcbedd7fbbc433bee6ec3512d6cc0dd8b38aa05ebee408e6a81c5dd5b4510b1b1a959e4590a0d41444bdf9ab6a6febbed589a371c49de5d6a7cbbe43eefd07d5dd680beb5b1a93f662c67e5786f5a863c4ba11579da8fc14e5c6a7d75ecde6eb6f631f22c85627fdea19236c34fde9df1ede6bfe3796733fca77d5dfecdb706b4b1f9736d25d0c52db13723e459fe00bbddaccbd5a386070f9bac5dae7b96e68961b6f288bee58be8f6b8fb0d8e62c189b7c86bc3e99b5988b9b7c8ab71f6b6cf9b33ee87bbf370140b331441c4be1a360411df226f69de6ef6cf7b65af6dedf7d59fdb65c6b58db34f747bb2cd0683ed6b9af6e6ee34380ac70ddc53b9fbc3589a329ccf0b20c8ce8e0e0d8c06669384064603ab4932eab2c8bd418e3a77f7dc1d47111c3bfcf17e4db3e6ecc94b3b6d6dbce1bfb8b3dc271e1fef276f99f7e3b000dc91f01acc49ee6e84bb07e1a81b47ee362d9a56cdd08e8e9123403f31ea740baa73ebca70de9aa645d3b291394b335fdb8c0e9b9cf1f690913d7ad8dc8ce3ad91b1e1b125c3d57649cbe5ad4bdacd35d41cee1500ee55e5a81b3e4622353262c2a864e46e64e4d5c83b233780914301857bc949ee7ee4fe8491938c8c983082c2c8ddc8e809376ac2dd1dcf4e9e4bda4cbb21d9da12297779f21c519af62c83ece4ccdbed453bcbbc7f5c2ed84defd1de6cf887cb355e128f3eb4b6e608cbf756646d42233665a6dd78c38aaccdc70e272ef7cd4891b58da53ecbbc8b2eec6a2bf361a303b743be3e45d696af8f76b9e805dc3de6a8972cf67873c6e36f7cfecdf635d1e79f954fde3dde5bd17d5dfedf1ad0eb1083650c8b7d6d97444fde9a2ecf72f63a3ab7f42e6da569bb5be7dc6b8ade9b838cbab4b95cfabc4278bb5c5ae3b6dd3f773cad6975768d565e253220d756ee13772497f1b6e4698b9836df9b11d3da32eed1da9a3f6ae3b6375d02d139eba3af00708fcead9ab6b599191c1d3a78581e3d666a6c2c0d8e8e7107a943c78e1c9a8b2373b7cd5bcb707a466f1c161a6f6d9c093586b8e25ca024e0e23379dff2354ddcd533f7aae33f4b746ed90ccd8c59dbc622582da6c86a48ec65ce5227f632dfba67c65f73c5622fc38ac5c414590d7996ceb3866ebead62efb2099da5f9038822afffe4a12677b7f11a3500c149a2dbd3d277089ba5cd26ed9a667996f8b62d2b679ea5cc894b7ceed1cefe9e973cf14de6ca4e5dea12877d7338bc25ef99ef78ead2ce5edb8f216fc6ab7ccfbfb7346fb6f2634e8bcbf3e296dc6c837cebb72e4d1c1e73a7fd6d7333d3d6aeecc46f923766f6b995deb8c766ebd38a11e13316abf91c5ec74c7bc94bf4dbda6bdbb73b8e56b75eff35c773df9f1aad1c823110691aa9628a2a782b5ffd98c41adbf65992acd80cdf6c5fd66e9baf0d77ee5c9bd5db0ae5aed06b32e3913471ed73d99ea5399b61978cad4cc014eeefca6709b38d4509a0f177ed92bc797c57024077779d71b7abad6062c512777be2666f6fd6f636dc796ba3dd69e96bca2c99c3c7489efb43ec0a15dd9e9606d2d2b113c7f2be3a777fb8e16aade4c9b2f6fa965b57110377dac93362ad5fb827777f2075eefe807b704f152d4e9ce00409ee1936f32ef2ce689c79cb380dd3b975b3913333371b098399a6c5309d5b5438f177e5ac4ebed8e5a29da590dd1a76d356e360fb6a9d5b333ae34c92af2318a8455e167973b9751419f0d6357124b6bd2e491e1b913de2d2278f8bb4d8fc76482f28aae8dc82a2055080f13cf8f877414100ad75ee867fe8dc9ab1b95ca4a39e2080b76a861e6f6bdeee89c3b393873c71416ef6c977e8f610214920e44d425e8d6f5a66cb215bbbb2bf1b0fbdbe99b72623f5b768678969277ed6b77659d3b6f6fa967e7bb4802322567ae86356ad2fb2710fed2cb52e8b6c9c246766bb8331902e00140528a2000170f756ccea63564f747b5a26ce5be3fe9a375fa2d73be3190e38fcad6d203caf6ffd0cbf6a5fad8ad1b7dca5598ea50d9f78bc26795a5bbeb58d652b5cdeb16f5dda49d48a616dbb7ad76b9cf5c13f180319c9dd1f5c4c9c70f7d659ce9876c4e66bf2957313ab693b24f6ac58ec4fdb8ab9a919cb5b6eaf9ebcb1b726aed9f3669bb3e62565aeaddc3e45b648cb6ebb3aafd98a595d128fe785e5f0363a622f64f7c732dea30d725e5c0d48e6e6dbdbd8bde580623fc35b9f25cebcbd8d0e9224ede7f2bd5d6d755a64ee0ac56256337c8f2835ae11653ccb15dda18c73634cee0aad3e57646d9675b3d5b46b5ef2b5ade54e5b0487836cdcb371cf3565f64452daf2f5c13de4896466de1fdc0383c1603ab766646c63d18c6d2ccad836165d98cb651b8b12e08312337737f94b15585062c8bb6045d6f6ac77b9f22d73b6b2d7dade7e382a89337ca8b44364cb514964e131ab97c959f37599049984cf69cd8bc98f593d110ecbccf2d059caccf2509023496ada0e097224c9dd78e86a6c8e37d81dd225091b35ec6e7ce648d2e66e5984f34de3b02d77e2d3eef3daf678836e262d6c00ab16795e6d667b1f63a02b1c51867beb339e9556c9b77edb234a700418b923aea8fd492bf51145fea33dc2c7dd853226daf73c8245779cbe72ebca342e88b4af6f696d6bb4b33cb355425a6ce6ac8f69ef1197ab66c8e5d24086dcca9ab6ddcd433bcb13977d74eefea077b4bee7dd9648beb39c84e7e68dcdad6f6966bba36dcde7c4e5d5d8bc65063a89306962fc83bce4798998e64b23d1a6d5f886b38fadb4e62dc93b665c02d1d71c4f24fbfe902590bbedfed93f356d87dcf1b438ad79f0ece421c23d7766f58944e7ee0fda0e29ba3db9c8bd4176d1edd9d8fc1152d376c8c6f8c8cc88be79eb92882679f6b5d18144eb5bea5b6a6d1b83b8337b6d65f6a9ed52c9ce76ff90270e1fd945b7e79ab732036120f29e787681e48a70bec1c61387cff37569a7356fd75602edb46272fb63e3cb7c4d6cf5b131f6f9ee6bb3d9deb49511e168e5ecf17ed3964365de329c6fafcbbfb21d9d978ecc022185c632cb5edad6c853e35bb9b53559337caf8e098d56669a7686c3b9d5b3f49591e62d731b8773f9e280f8d689ff867bf29ef69ae36b6d6faf77696fb627c243bea56fb8bf6769e6ac8d45dedbad14d22cbdb1a9cf7276c99f6fc5e8ac6debb6cad593b7a89ce56e38efd3c4f866af92584f8d4c4f8c455e5cc98ac5fe2c7fc7043992e4edbee1c4e4eabcfa2cad79fb5cb6fac43ded2c6ff8f65766dad1beb635997c6fba8c59e580be95b3429876f74f4c2608234a80be453bcb93e6ccb87d4ffc97e859bab47fc7d3c8b762438084f4ec108101f5ec1411b2f303eb31c203f403c911a09f1e233f60477680f42089d1aeccd67636c397b479bfbd4abe95b73ef1883bd2f32d5d5e594bcf308dbc26113e8564ce128f32f66b234ee7b2b57f9e57e3da389e9675cd9bcd06f9d62d46e6c47fb5799f7696b57d854a7375b3b64f3bb1f9583f2bdfa14b846bcfd2261ef1c6f9f66359bbd94c3b4b01bc8afce6f9962ddffd63695adbdbf1bc38737696bb7c6d4d99cdd23ee31990919e07fa41520437de9f07c0b770d8e7d5fa9e364c9e369be53e714ff3babc39f3d6f6b6b72cbadf75a7ea95276edb4bca7ec78d11365f3d80a2591a9196c6a429b3ba245f975f5f3ab8d7b15a5bb9c7374d4bf4787fce12fd59debcb1a9bd02951f33cd5228f6197fec0ad91dbb44af436dc4b71daf435ab97d6756d7b4cd230d87cfbbe306f7b3f275b827cee359e62c916977dce05e7739ee3e84a3c6213cb6b1f913dbb932ab239383e53a5c8ca3480ff86f7b853e77855c2e1459738f61e5aed0ca3d1e779f396a5c82bbd3d8d8e820b2476cb94d5c1199955d991d3dd915b145852bcee8310d900529471523811a2a365c78a2d5dd34901c3d041d39410171062ff7ea837beda1959f3c2dd1b374c9f32dcde3f3ba61a7c8eb48101cf9fbb465b643bbaced9889b12cf6f673e61d2a7dc4ac627f6b4a5ee7ab439a38fc636b3c0403e15d923bdbc4e97b842c752e699a2ff21ec999a62d77b63e44570979c91fbbb4954474eefed0ca5da1192eb245be482b66da7227f65bdb6bfeb6e659da9def68da9f6fd92bfb9cb5d9b3b4c5a8c813371b677237950c87d5b86d996f38df6e3646f2c4fe9a5768b419e85bd9ce1eebbffde7d296b28c7559c3e59724699fb4354d9eb8d9893f9741b6b644b6b63e270f79eedc8cdbb820274fb641300622cf1dd3b4b61f8c81766ef6072ef3f5b9da5e22d90859eee082e813973f700f100c94232db6dd225797f608d1ed3979b4be9986b3cfc993b3e60532cb49dcfda5074709b13d97efd07df2925746da5bcbd96c3820fbea7b4413fde823e425c9574bcfca678d37c99397bcac21d2400dc1c510b6923c712c7d5e77b78e1ac2e5ff238ec4f9a661329c49192142e00e84e6ac8d366b970b06bbdbde3cde8d9395799f7824b299aced92883c71b39bef9089b52ec95d92175fa1114692f6665a996fd95e737c8200460461455f93b44fde3d2b6b5a094a4919343a8cb0f9535f3377dad7d796ad8f4de7d668d3b29191b9a61db51232dc9d84dd3b5312c51dcfce12f60077bfe3894f981224dcb5be264c492da7c4c75d498ebbefab95c490040d77d7b92b94c40c54121a14dd530c774ff2c461b511df6e9223774f42c24e220ccb5d21581296bb9f38d888874adc920b83edd226c3e92437dcc912b6af8621b9e2fa9638f09c0c8abb36ef79b3e51aac7c006c898d44728467486e1ac9107718ec05bf80e41d96f10ce6ee308e42e230201eb8fb894b32df1b9014770d03da02f6a202308e3c5fa18c8960b319063237ec02b98601e5b8067a777777711490e839f376b33f57ecb6a4ddd7f653e5870c77f7ca1a3eb4e0270a7fbc71befdc6ddcef249abf37384bb679cb39d41f981999971ba699d11ea48cc6356305db6725708463bcb94cead8db3c96e5a36362d1a19192973cbbc3f09007145e7564d8bc6a6452333dea15dca8068011024a8f155770f1d0504187ee25226f3f6ddab0f52ad0182531aec736b6cbbfbb4d9e268972827fbdb9ab9321e9fd75bfbf87cf2baae6ce364323fbe65f55fa2af8d258b089b269ec9f07867b3abf12de3b6c6edd116ddbfac4bb35bff6c459ed79ef7c9d392d7b427ad347124b6ed229c3f775adb13e1da23f916797326027ada5992a73dede3bf27ce387ddec7fbf5ad58be3718acc8da5a318dc3ffbb30d1feab6bbbbc3fc3329a75331e3736afecf70de5df1ad0c6c99eb4e19fd8e7cc32db8c6fb6bb7f7ceb73261e63f7c43db173c7d2d0f0781e9e86c7e3f0658cb4b76685303661b4b37c5de27dbb595beed6f6d7c6b246642bad393eed2c6d78bce17e865fdf12a2a93971f886fb3bb3fa5d33fc76f6fbb46769c33434343532343435cfca9932abf32dbae6addc26cef6369cfeeb224f1cd6f996de57cb709ab477ebb3d43e3fc37f498bb3ec653ea65fb1b1bc198ff734f22dbded95ed6cef907c4b7de4c43f74c89b9b951beb8d93b46618e79b4c2e6f7dc7d3fedf6d83b8571edceb0e789fe5bb571ddcabcbbdf670af39ee15c75142a2400931aa37ee95878b5e77b8db4c922f9ccb3596f99e9746de1349152c41d2f0df9634cbdabfeb88912347766030f21e21af69963f10dd1eadef38e27e82c482e8e0fe19e7bce393c3e3e7a7755eb2b4bf85acedf1fe3f4b2cb34f844f215dfe89b5bd47be35de9b7ef2666b8e97fcdccef786f3ed55393cb456655d3e8f9c9f9f27afd6375c21dfba4278e82cedb624fe9ab643c87be2f2edb7bea489577fbb57c8f64588b4b4d656f62e6dc3bfab76fb1397b5d8bdb9b65fcf4e9ed7f9b3f263c8d55f6dda20df8ad9e8c0c55e971f8b3dd64fe232d0d676863f766df6848d37a055a8644db3a59118754ca19919180900000203150030301c120c4583f1a8ac27add43c14800972a85868521f49435212a3308a52c81004082006180023302333a40d085b37ba7b8aa16b61086c44ec3283c5380e5464df53158343226fa4799a1cd0fafc3d40d9203beafdf62865df26c4938efca5b28085c412c3ecaa8f5adf66b99ecc8693adb30cf43b38603ea448266f05e6a107185580ed531584a60957d5062fff8d60bc614c4f8022fa85350dc55480cfa0d739e272875de281a39481d08ec2f6187000a6c8d790bca5b51612cbcdb0d804ffe669b09a5425bb5881e941d98e6d35e56a0674df36d5a6cc6e021bf10355f884b599d65c35b79e6f18fe1ada471cfc3024796bf4b0fa13f6ac4a32bd6413866b735beb6ba53d9e3da76758784ce817ae904f17fa51979ada26ea94e38d4aa5b27d7a0f963e7209329a4641834d1b94e5567b29e3e5679c719c93c7d6a2b7382818d5402d9b043e0c10f8cff876f9a69e56dd925bbc389a4efbec357052e28d9ee588a68d4c1b28100fe5af31540f3b9b66b6a113cf20c2571851568d72e0475b9e2c6882db06c5731659b48142647be1741122ef109651059f31b20e998066f66bbca7fe4d1f2c23b88ee55dc3498247c41b0d35fa2d800fda6c04923dfdc5909691c703909acb28980a608d9c307c903698d59ad7c2fc0e6c6b6236e894c49f99abf0ee32a0096cb20772da55db90dcf9ae7a9af93acdfb9d7b6d137f33db4bfd31ced2acb44dd63900361a6c645cfbfd40e800b89e45c938856ae1a2abaa812a197ee85c746d7b94b1176719a02212d780934835a2aa3edbf337044b00c296ead3be220d428fc8c3395a3d6781c6e177e86561851ee26cf020b1e8a746db82fee321a1a3f9cd4e6f10cafbd923874162ea8acf677e5d2908d2e47cd3666c3185427a01ddef956c2741a53557cace9197b72c9d5492209be40c93fde986af6b5a2ce2377290ba0af211ee4edd9117839c7ccd6cd0cb0f3a4b57a265b7923b43e0ea9d820ad3fbf74789df0ed7a3f6183b35eaa7aadc794709002417d1249f2a1108dc8f96e9bcbe8e68c14fb19e610ba6a89ba3f7d01580842051c9879be3602675ad0473da4013d5f3af336efabe2f10ed64ae60caaaf2a4db55ce31e4e5784867a7c072fb3007fd82b1d9fa06acc153dd64a09c465098e6f3268d03c6790c44e8a893670767491bf09c072ac744f39a254736ba65c987e1723d2de3a08a2d08f386c7be06a36f7b4924984207435f9d19bc38fa4512848041d17dcca4ac6fb9603501e3e0cdbc037779e43855c493cce1986121de9b898b15b47eb8888a55175cbd9e78422c766a8749a016d622e428c15479e0500d6397760e03c29c63fc07dbdf293e4a0ea8bdc0b45e5821da3611b6cc644c901d9a1820570f63bd81838e5fe870951fb696688c352f68dad6d8eb79ac8c3a08526cd0c8b8dbc6de9d063b1c0562e0a78a98bbb0b896d588e79cd315a45b139ef0f2dc1dd4831cec693bfd039dd1d562716211e66de3a45c2ba680e5ac1b8315dfad403969d40b8a4d378c412b1d79ad04661ee697fe1dcfb46da60f3b5c202559b2188a442e41b6425aa5c218cb4ba52e0186428013f9e730b9780838f985f0ad916d99aa69856eb309293e3efb3395af69f1f3b9740a7e0526740c87b8e9336971e733d273c9e9067d84d30603cf899510e22d131e1eacef29346fc46e3134e9e423e2db07761207661360baee21b49277758c20f21ce494163cb73fa031565bacd6e18c9694e950c63ece0e30c69d1c1b40531fa0d65aaf22ae5a45a30b4ca9692ad1e79de4e699c3a46fc64d1be2cbcce654562c1e67b271c2a8d8f19c714f2c3356d8a62af83dde41d0712b2a9bd9ba08861e84c30dc930ca4cbbd2ca87c2342a6fdd1a261e5ea85ccf42a0235acf38bdffc9b2a8071e2804f18f61222f38c993448dd37e55e1023fb41134fe710d902c44b54b57aa42689eb45fdb3850731c0043f1416d5873210f89785b80cc9a8bf0958f533d27436a5082c7c6e44881292f3c35f83901aa981c8eed3aad8869d0c1b4a455c2ca9ffc5f0ba301f4b625ef1802560a6534f0c534e7df8463bb92165a5bdc64096ffe113b63134ed220b238b6d9404cea788804ee6a4ec3b371b441e6e25397455dc7c6dae300bb93cc4d82d7c4221241684e04287c27cf7286454ad242a483c1ea233890e7cdc321d8d81d8762fe17593c1b3120be0ce90f0fa9b33b21744fcf69e5398b581b08d99bd51cd664295199a7c81df08f31b4bf8e3c800172bb506a35909f1cdf8dd7049351447b2aced7b65a7a3986c466b1e08966f535241900a01a14c414c2b353777f5c0d1d07f38c414fa78e9faac97bf0fad22fd1efee2a8313baf90a079709ebeb9c7ac040a3feb3940fd0e897e913b2cd5a176bd6d70037d7ea75cc6acc62d684cbe000a14010b8d84d73eff81ccdaabd01cf8efee8942ac6f08a6a567471cc1b58a64e927bc446761c13520a0d1b1f9ed3dcc3a68702ffc6f66b7e1a48b801675151c31624a972a7fa319f0b115220dd4a015a5e6b54e66cf7cc88215acba3e92aba04591046f98cab5dec9de231f835a06375a42839eb52d9d35c2c1978cfa93dde576d5eec8ad1f2f68e3e4454543a4e4e4289e63ef4da2c21cea5de5ab584403722a71239beefb07b8d0093e08ea63814261ef9706b72f140ac1880c9b77d503b2c2b3e8faf5f914aeaeda4c2a70691c6478210fa1fa63f1263f6904d6ca14fd76a984929eaf9634bddfc10286ffa2839a7e6836049d97b0dd3d3eedfb49ac726951424e1cda48bef65bdb804a62cfb1280df1d4d3b0d8fcd0356950d30005d79ff70044e49e46b29161947ca869a0890c252dee489ed6d24ddfb699d18b40511f8db1098492a37a4fb95c1153c613062dfcd4516e50dd070eac99e5c85fc2484a09637404134c9ac1cdb325351ff530b5e43853365597597fa18e3743dc3fb8004cde36be19f0e7cf612b61ecfc8080c1f2aff80f03282992138f8d53d9c351bf05ebb69a5d140bed91718d53b8676e5662f0d9d336e6eecf1b03a14367cb7e4f90bd8347506ed6e02efd410458d659ed5199c4c16c42263d6d17de75362ffeebbc17d65305080b26c1fd3b23186eecea224579b3f3cce4009760db6f95b8cd589d2409892b85000fa0008858e19c5b436687222fb523b81723f93977a7609ce1ab4f3e4a4f62199e851f11c38bc24792c8f04fbfae454c2bf09dc0ba23ac238a93de2ce3c97ebad2ca5773ac4db81199cdf4b2f01c7ebd87992d745aa14ea4cca6bfb5b544591e1efd38a3329de931d8d762f199c49291ec7a4a9f4c26ee98de528e2bf3f99596a99a48d089103377c7a8e122490433846526d8671c94d42cb5cd75b4510fb4921ff3993166ae9baad3ab86aa691c1a3c6eb4e28e737b044d5a6525d3d8726dbc48b57af6effe3cba2183292cc4c61e3554bd1003ebd88b4ceaa95dc36032af60573e8620c931f274796261bec97546fb360257f64eeb0e6bf5008b626775a4397e779d280c5d64c3431831febcb43d9e562afd276bcc8016e4eada7e86d361fa58654ae3a1a3d617f5cc1669fd01495bc17a28c7ea84dd251ce194314efc9590745cce05b0526028b29b1b9a7eb1267662720b8631b424ebc1e9eb02a663468e93c118f12ec5242d2cb1bf45ecda1f3710675fe0721f1a018b4e4c4af0cc0c6083f5623c2e65a508335319b301d1b9c0eac277f5df1aa0f25d67b42b6c48b7eb3897b3b40f0c76af6e4bd461c98d3e1ec10c8cfa2cb1a63ddc8cdb181b2156cd568bc387788d0040c91326f7608edad7a02dba0e9329a42009ccb18044addacd933e52a3185f342d2845058c337f6418e84d999ea7a378ec5b70686b46acacc026ac87a9f0eee396e1868a7b3537ae35bf21fd6f89fa7f81ed9fe0471f5b1788d3f512ca958b831d2fa242e28457e7cdc4f3db22ba43ea1eae6034b506017237d421863f9fc044dd69e8ee128dbc591a03348a4f74642655d3af38e201245cdd6695ec089758851b0d0c0b1f9a16d8529a3477c52082e0b24c5339c4b5c8009812d1f7c737bb6d5397edd8de8c0d7879b79b81fa33238fd31b48721cd0220e93b3b83e96cf5622a9b0546db3f80ebb0b0785aa368a6086a601775017d95426e342cd01ff5639d0e39a479796ae9443784bcdd9987754b5d524530a6c3147e0df05d2238e6d3644e24ca908f74b0470fa13de0642defbc542e6557867e02055a3778be04c99d6ad3d8bd3ce973f42e0e58ad2e3e612c8b7757867784810dbe44d6e773a0f59bb96b68a501b406c55e4fe3fd2db23eed252279b17f6f1f42c5b4512cbb454405a1108c7334440533730197deff3ca3a5fd1061d5300118b86fffc04f01f5fd4146ded4148101d228a60e840d92348d4068036c32b3a9e3d3ab7e9e031e2c7556a56de923ea5f7e2c0032fd78aa440d10706a46255b3887cd23c8e5b3b10f2cf8576bfe55b8e440570502a3848838c67cc2d8e39db46553ef63fc1a84be2f095cd1af2dd8a8434f2ef033999e39fe7b15e6e1880f1241994628cd9b431a89363f0f04322d81328721fd4f9444042a9763ae2ee61259f76f94e1932bf278beb3c17f204038a9666049dd487cf86d3a823476ac701785462c5c888daa2cb6e17eaac5a3120523ef74b5b1ba7e3692f0db1d2b5f6206c884e75ba18fdad57ac82468101f668877fe8dd1e82acceebbb9c98e5851cee915e8d45aefc8e42596da111db5995acaddd1d97239c958dd30aa5f91e35793b1281d855544f8590816d6917c65bfe3c776333fc8a536a6297a24f7994cd6eb2c54a2475b7b9c35f005edeb500590db7df0bef2927403630204ea298c0193eb7b87629858bae35379dcbeca631058192b75933d08420b2f6348e0b7019c9f813b4816c75581ebbe205d61b491da0e2b25369695ca80501a33132a732c3004c5405c4f0613c939d2c03deca3a33d5ee340f3944ea4ec300e282e2f4995f456c0be955cea44efa7410323a0391638918851a44924e4510b16a66b31406b3b9812a24cc9ebe6b1dc27718c36b4aa02228eab3b98a2299091c60f7e79ee39f0d5bf87f39005a9b428985884134eadb214ae01e2b877d0c4c356bc31d95088b2b19eee6735593c50dac7ab02e4331a57c8ccd4e1cae789d4ed4f4702186478ca471a4a52ea7cf2997fbb83bff6675389dcc8c63042795d1193d29b650849c0ff186f93577e6071653c80d945d5e42830602c9c2a9046ed00b37a798d9c52d0d2c39f7b9319ff3a0e41e77130a62d398e960a7c46204e1d4d93d7a3fb6da4f43c68ae7855349fa8dba65af03a616fe839a83ba4866ee4873fd8c3e63daf1dc47d191fb9219d235c0419bead86b0b3242432f94f8a0ec7ad42207ecd21392d262ec9a1ae8dc11be6d9a7c8d3727126b46df3df3c783fe45a8f610f21680fdb97d9d1bfbfed6fe101580ab31e43b752627301333de9181d5e6d49a416ff3206af9ed5b50395a3bfb05ab5c2aca8e2515187ae2088e40c70c4daabdbe12ef216595b9b1e1043475eb59d383642f769dc74a9b219bd54b23ea388c3b7039a1442fced1685921df2a12852c8e62d160b1db9155e0fde10b5c664f71cd8ee9583651d5699c61bea24c24dfe636c278cfb94e9fcea133a89bcb0f684238a5b323e714fb43d662298d8b7cae7f2dab67151c0249c0458a5aceca6666f15c2b11adb93f6e6a3e1615ffb5d5195f3c3cecc92282188741631b806014cf1390006dc0234f05ad0d1c4c98de8c27bdb14b651200da7598473678722b433f6e6053350d75455a2cd95222fa10e773354fb5f7a154596da07301ca82ddb15b540a8845ee35c8987a4a0238390068796ed2c8d5a61b345cb2062ef80c860069755ca23e4725520e4744cb76755f5d4a4927a17eb9be7d66be76edebb50c8637fdc5edbbc9db50ffeeb14a0f905ec5f23a6c5a615bdf5e5e3e2187711af257f035e978016d7ab2fd5812da9d9266b566f46f330c6de3b4f3ab9ddc002ea29c99389aaeb3dbf0f8d787af291d76042797276dafb48cc9b9661c738d12a5c31c32e8ea5926988dacb8cee7688e12f107c06c28cb107e8bc70d73d3a8fe579a311473ddad810b8b0ba505453e9772187ba9a4330a8fb2c7e86445bf65aebe55e02baab44c15ef2dfb8e5cf8d897e1f0e6dd7b2d44a7a47aeac860859b49d8b26456342ba9f61674eec5da106ec1249f72568f82b83ac59664238db3deb3fc5b01063ab73fcc18b304a465b93463fa0366098f92f5e19d3196c920321dfd9bdf3dd56f24c1d4aeb5280371221de78515b7b06f72e23c1d6bef17ef4bbec1113fbd3846e332b17e0667eaeccf0579485bbe03444f83eb7609bd05f84ddc2326978d9bebe6bb41e6c6a42c4c2d8a39ca0f35abeccd5a81cef8c2d1b6a10d74e2923f9968a318846fe52a2b37ef8085550c9d35c0c1833012288800cd7a8a2c572c10cb33161323ce76a71ac17940fac176df0a2b70d8a52f9cf0c7354039c8cd4f75cdcb3830b0115c4d2d61e2acfb71a86aa927d35a61971f19d8ef62c60adc219f07ab05a1e8e3d36aa301f72a5a4edfae993da3336af8e13a3ecbfc548c66c63d3616b7eb85eeb108c45afd1c30dd3790ee355cae81aab9c307ef6bcba4ce56f5ad52e8c626d624d69618c25c3906c7959f7d89abbc0ccc37f1c6de9284af5dab063288a49339bdcbd3740b6f8e219153ec1485033cc1eaf36968ab6dcc2496f9c80ca1501c60747ee721a6f679ad94624fe14861f72ddd88c4893b4f08309eb6db524544493af2a54c0f40dd91f24c85a9a43a263f849dd72fff4ae0a37146af3f8ccc3dc65ce8f03306972d47cb48ebb2c588ee07f09675c5101a22f4ba0e2a3d7dd4b9b6a1a194e7721e3c7a88cee0286f51a71b6b6aabad6142715496dfa8d050ec7102f73c4d7bed03a2e96bf61796c1564c9a264873382aade69e857057ca560c3e1556a748eb8dba0918492578676e4f2e31fa231c057a99416ab2859fdc57ccff2417c0b6a4f7c5565335f4c0da3c29b09c1dc543ccf71d7d34189e8a8c9de59b72cfad368cbfa016c700b9a75eea0b214d8a67d0fa8cb8e70b4454333ff962daa6b98a73de25cd354f3ce2e61e4f424f49a86c674b6600551350c26d189f7f9f4e3725f7a3796b68f0c3316597a47be7f876cb81dae986b064f891eabe98280705a6357837423f2f5693b4b0b6c6dd95f48c727671b6b630d5786c45cdf06bc6afa59f16c776976bf0eb7ea8705d88291d6443e2a1fdc4026aefa0fa202cdb1f55a87269361043573ba872788f0fcbbdb781891768429f22b39683eadb4e3c82804ff75204d8b0fa3b2777fa664a04665e40396bc18af8b4c11f1263b2ecc4a52cabb18f06aad5344b7e9f9cdedb71aaba80a924c33160be248e261e07d21020706f4a45fa8349970bc314a1027bfa026ff85a7b2591343caf936906cf83a78388aa0c79fc921588c352482ea770310dd60313dcbf4ea73c4749f79ab076c05d096f45c1d2302a2ed58f2a4837b0085ea7e265ebc0bb111c5269279a4003711c7ec90511b2e8f9240e9c5abb0a2618198454c689f60b10b198ac08d93eb87b486f0f721f232a69cc00f6d317d95c1d5e9720a9b99f7d4e1b4355fe47d706a5a6d164119c14ecbf4b8881439d301102afeb95d97a34d40a98cc87b8e2760c20e2743b5d299380564abec7a785925e0e6f11816c3921a6fc1e39293a0ae50e8853b1fb55caf104bb19d371420bc9e286f7ed557454a69bcc82576e8474b5ab90ac766fa25ab230ab10356133978340e979360e32e681c7ccbe90531ba52e5cd683239e3f7225bac45c3c34138164dc801cc1e2e224e15b91ed392d0042ca27c7054f808ef783e38b484922fab0f4ddc26980ab5a2623d6990800f8d0cccc001af49c8a7bb88372f0d3d3469a6e6eb6112ab378e13b2c44370933f56ac08dc50a84b637a5146b4fd73026b52529014f771578a062c52207106cb92da672cbed0fc8e0b326f7518dfecb1e65c33b74b5b70c5402ec3e7fbc6418a7439fefe69c4d80179eb55f49827400b1132778d65be3d8a96ac6619d9a7145b8c7e6ef099cd8d98a7644dbc48096e90927247b674fd086769d4393fef0cedf6023cc5e71945ca9f5e03a60a381e76893d7df951b90fd4b7f6a3ea1ae413ab145d48ad8883da94259dc37c3f15ed71a1a16b99ef63a4c957c49d4fc4cad49a4d372fdfeb1a77f1359180bf069982825b1a649a77be708ec611813a5a2e0c79abe5070b81a07a58648cb117ad989d94a9772493d0f9ab9bfe92d1f0aabe4f12d4331cf2d481614246d285ff51b5365d5f935496443a7988e293b3bfaa8497f0d19a8b2d7f09c8a7f3b403864d22f04b8e08b98b3a17179ff01ec2d0b288241598662b9b95705b91bc7aadced17af27e61fceec90b9647ee809e92c0411565afc29f2065d1a927f3de4d45c1773534af754c4a0e2ca4f565a80f4748ce4867e1e4c77a350da24eff9a19d3a33f9a47238f4dd6c8b5c95a9f2a79e32358a95fefbc4519fe0bd4c5767e97138fb84ae10032908a332b1b97020dc3dac4a4b8e9547f2780ac7ef85c98e3b8c4d0ca5170c0a891ea7da500a9f35f484f2e680049a0854984436b5fa87a6f3099a1ec4952ee2b11218395582ec199ba52c1675d510413dd067a18dfd6d2de654299f281d36f71c130403ffa565b3a9c9383f4d6c76f731c964d85b922b32f21a1ce1d4b1969fe31cd418a6d9d9c3c95e45c5832662900e98e49a4a998097d338e1b0f171ec877b0dd3b891551bcc8a0dc4eecaac095981c1fdea988b782cd400545965ac0a499268933076e3ea6e5e81aa610a33b1aec40326a0df35bde5e923cd332ac8151a101c4ff291a84718d559a23f8d0c89c50f21c8b5e08bff71a5a6962f6edf33902f1f71ef4cd08a88f0cc06479f3897025024a2b20b8fecd681f39744622ce48610968cee9bda0a913d1d477311a5be3abb88d93237be5268a2da85be9531bb38cbed51ae2a8ebe77f7b13b9e7d8601a078ad07aaa1dd199b77b2cf81963cff3b669df8a593322d291993e53a18e72c7468f84860a7cc97be3d82ead580d5186ebedfe98f99b95b9ac9c5ae7e39b9b8771606224e53a6cea8e5c0feea301bdb15766795c4e047a93e888bb5d504ea2068700297d8e5def8ed32c9025e0ea4f1aa5e91ecbd70d13af5922689889a26d71e3861851e1561b84da3f36f8a2833c32d5c1c9693fc5f88c9a5419db30f0a171d9d0b95f1446d94c38e8c9ec4a2f3d65cc7f0262d181e09db8a2ee02f9c4229e1ca66b0fae4f648cefe2177d5dfe15a7ffecfd1590afaac2c4b4f59cc5be6c077346f7488f72db9a87276dc4187c7450883e0aa8ae10f883e3c4a02ae1a97ae890319c60989765a1c8bf678a77f97db26cb5f017abace88f28f10e373bdf990ed78e7f60ccb6b4cfb0cd8d02652b53a06cbcbe1f2b6072b4c0abf093fff3e526c831a25520d376691a73afc413e1712606e1308af2dc965b000e55c8fb12ec7fae1cdd1a1ef2bd10292efa207a40896da29c6f0b0c0aa0352dc94b6be2e0c01f70ff1ec9a15d7908f8dc299126a7637669b60a8f3ed170a495087d371ca9932ed6cd5b1518a35ed1bdf10aa9ae8d166b0b57aca387d727a87fea09329687246d8164ebe4b1e817697ad8a4cb982dc80febec45673cf7f60fe7f0e4734679bc91b42a4c20965ad63ce7b2d518144c4835e354191d9eaab9a71dd2b935936c8e27fadcb9f4d2c4e5316a78d9f984919e155815c3eda5199c43875af806286b326d3305a13650bcb5ef01e2be99ffff7e38316882eb37bbb6ec31c1a4ca72c2be0426da6c0f2f5977dbbb1968fe6319c907453cafc37161fbf701fe86a21ed5b6cb9823203993b920ada1ff91a6f4f892e9f3affc2ee1b7055bae1734ed058ca109f40a1e84d6ae575edcc0838cc2e11280980480b849d3adff6a4146f81892b19748eb95f4b45e5b5727a05d3a1e440d78859e0d2a68d59917148a8488cde42bbe1799b8cb534564ed047e13444f7c3c2d7c51be508c40ab169f6b75e86a7c19ef159d0d937a7c6881c9e47ad1cc4ee893483eb41e44b98c487a3efe96790ab1255cfe52fcbfee1f00404bff9f5447271288fbf7c6ada7eb891405da172764169a405716689a546c3660c74883b8bbfbfac42ed597b430f935add7e71ad4f0164704c871c49e4acbfd7b6015995de0393d76353fd7050a3881ad424c1393cb34b1352919bc7a73329734036e80f45b938eaef1ee85d66f9540f579995afc1135b3d2e9b50e3f408b8797f56415b7969275d975cdc50f88528f09e0f23413ffe19a0d7b06091b2a16980cb20906da11da234262256881a803f65f2c4c7e2b76b7f30fd4d26b13a9afc7982c59edcd562504f9b0713a9214979ebb570cc942aed8323fd08b1d27e67c582c10dd21dbbb29f6557c740aa467629e7f6befe2ffca0fa0f136364de4d818cde14652fc8b09df3e37981efd9bb8df787f906907baa84fd1a0ea3eaa73040e499d671047bfa64554c04b3eee82dc7027e649020bf8f9978f2643fddf7317a42336996b66463ef9f5e2ce7a3b4254d2134c8ee24deebd5f9171f3cd4a599685de984d40925ad51c4c86f298b5dc9f822d98035b06818c72de886acf9217d04cd4fec312be36db2a01be87fe42d604b83d4eed82984c4bb30140c590701d0468d878a39e51db787cc9f125412d05b3be17ff796a11cc0f23105421580ed765ccc4c86f96ddd3d18d94744f2b5939f8b6de08df7ff19a1f287ad56fc9dbbb0a5e116d76f43c0558ea4aa852bbfae07238821348d236b0464fce927b00008ed1f15c12577097c48c173f5b664813667b2017f27fcfaec4c327902617751be132aa9e173f5d6d30909f4b52a36786dbb1ef84db4d77f5db1eb55c6ab4bb945e1d60a9c2a2a98dd8f5e207679cf0f9d86add7b0ebb907b386829d5cb97869a56f2881b37060aeacecae3787945a1349ba1d310b9ce626b750cc51a047f062d700492ccfd770b3e036a46dc0591b6dd57f36c36eff69b45da7d3c2658e92da2f355bcbff321ca1813c4d60425bc7516741b98d9c47218563ea6662c40166a2905570ac27e26bfd8c168a0c99aa3783dca8ef9ea27f7df8731eb0df4d1c103b46ca670a273b32b16cdc53e5face784253c45e5462936b26a940269c90d0142577f770522412fd892d5a5cb0574e5dfb1f3450fd5d0751e5c03e0dd0b65e69dd5237f601ec911ea05fbbf662ad91b52f997a9a0d6ab0d57a9ed6ffde0930f636062579a11726368000f0034b35e56a0762d6e7c7f156939a1abf223a0c183936dbeb9cac464b9a6ba34cbffec9608e07fcf49fb85e0618633a92069f1ce0f01b5bf4b88f084900ad8759a4cbf1f03b81900806458fa71a76ff92d7dc05b51d09871543224664cdb72ed546a16a46273097bd23b18127d258481961f6bd0750a2580c6ef3349b2310d843bc8653944e48fc489655c7459d43fdca5304baf0156c8c70f58b167521018cd944818c6de640c93e1c9cef0813d9359be576f0bb90026af3410ce78ddadb8ebfc93d400a9bf6394f4e25859b5d3d57daf0f5555dc1f3594ac859da7bbab08b3e03d149f85b8af31cd8e814c06bc53c0665ea77bf763728e31e3de335a4f3315d1224a8c12e322f4d984a7c1465a3cc89ee5d1994edfbf2dde392516c696b18e39e71203a70b93be4d524ae6fc259380f9d9023f2210ae90d847f47d335f5c98969770eb237866c911b4ebb576c9009334923fa4ed6fc7052d1380f4b2a4f4c8c10e46f042f746e98d21ea971fc899f23d846826bd21cae91d9acf4be4960cffe94b541521f407b29046fbb3c107e492ff1fad45470426efac43b803bae77a1d99eff644bea35b0bfb0fbd173647faddc418ce8e4af2426fbef403167a599dcbe7d4e87d9d5a7a6777e34bef46d54462d4408125c38be001351a106b26cb42a71108ad0965179fb226b43d6ec4c37611f910c0b9d1be1166098f73b41df3138ca5ba885ffda1a85c26a770d2134a3736133bd80cac028b195826e0d22f8446b9ec404256b03430e564b09f4ad605f9e00d44dfefd9df974165cedf9c8c9ce6df5194be61f98bc36154ab3b51188507a5fb3f2effac6634f819378cff9606b7af6add2ce709ffa8b8e22f54c81f00e9bd00e81f16f57b9fa15071ef4cd0f355e82f8b55bfdd4bc3b781b5d7cccb868a904cd2fe1d4146f651c1c9f3ff1a18f751ecfe5e704cea377cf21f7a65d3bf0fed18f9fd96f4d4598fc0c675869c04ebeaeed7a643d053b3bd6622e4678900b50cc4164ff2d4fe41866a6ad98286400700e9b1520047e307b8e5106819fdfb07748918027873f00bfd85da5f408748629ea7fd4c0ba19449b0f321eaea5ea86fd45dec8f72a2721cbc7f9a31ea6d8df5158d7db20397dfb8d41956b3c63d177e89fd1d4bd40833d303a047ccb0e3db8fff6c56fe1be7972974ce5f2daaeef4e320d70e1a9f45cf1a2d45d60d35208ad6bee494bec23d73064e730a7c29499188cfbcfcec50416886eb02db6306a80c1ec430dc185e61a2f98ea6c4ee067fe0c9d33ff1143dc99cc4cfbfffffd70bb9069a521821a8ef5a6afd8bd1a215b2a375b4b4cf3a0039356072274ae46e1b026332280a897f2f6dc431d364a39fd125a6069ab01de9a3acd15519abaa0e47961a60fdbdfc24ef7b4c84291633d434c1ef4a02c58e11912d394ec1efdfe441b1eda2dc16dbc7add7505a6ccc0059113744060e493b07522e8eb682e0603daf40f9d129695f89a759edc436f9416b3cbf7b4fd636b2d40651154770978f195a2f0beda0f7e665de1325c5279ae6d4c028c2f5b482c54efa5764de7d01c533ee16203d90da40b3bf84e0a4742d501641c6101288b0897c1e4d71fad52b12426ff42d50ad547f215d8e08fb9e64086bb1e78bb9efc0c18e85d1c7332395011285a2cd97b6ba4aa4b83a64e0591b07a2ef03d452650db26845b414ad5a2136433f69314bca4125326d5598a565a24538b6b35e7164f6e589ffb2b55e70adc08a48340aeec88dc922283ba34ef4dcee4bc1ac3691947a18de01c93780614c6a52f5cf873ccfce327b85be6c3c9af8ed628f95c7753cb5bf38c116e5747905512125c65d07da810805931b2e525e68dab7ad7cd632554c9ffe6354c6a58c6d8e10f308dee6b2e933fb00f0478dbb922e4e02fd1f1b20c1f3f82be80f9af46ab76e4265fc71a967a16196c93b793d2312bf00d10a35d0f11fecee6f0564208845d1415a3b4575027209ceb0009e872a943a5f74fe0ff316f6277a61fb654f70d5ea95e2e32e1598e83886494e177bf86ebb417785008990d5cb41dfd6e8da77922d966b1a8b3725fdfcd03e60a068bc27ada029f73610e41c04f59f39e57c282ab03d3cef232d6117ec858cfae15e110d0067c4f752e3a3b09a5b49bbfb4a0070cef44fe6118a008a28e86a40c62b18c97cfdb7da1cac5fa4b69fada290089f973854e209e3d48b08f65b41cf3bc0f03a9ee84bc98883d786a6e3c484e0c583cc5092a55505fea4b8cc820944b33350718c5618563c685d71d7adf791c015a37616f27cdee7c84074d436df23491ad63e56f8ac536b58095836f9e8504d484a02a88652ee63c865671e2ef5af30016b64ce1c6310945641cff1f07b932c5354274716041d0a71830a68648803b604608a2748016a9f964e206e3e618e4aee6f446ba70a9668512138353d7e522ad8265e72907d5ca7ceea745f6f9e65c9d81fc2918e6e39114ffecacebd8980ce8c07f95b93f1cb08b63e251957b5ae2d3b9b47539864e54351ca49aa8e88f2b71283a87deadc112fe2b3adb87153679cc5d810bf72772ed60e65aae80b06fd65c2bf6510ba1e257a9f3a2766e197fe1b789c62ad8cffac57188b044d043f0dd3015377c831717287dd530886d6d3c1f348752672941753fcd497c3131d57d5da0a38746d45c738baf2afc9bcd3e793267f8df0ff7ddb91fcd43fb2013eec57f23faff969b92108fa7d0b2526572041a2ef73e6fc8a82f18a12038953b08fe27b43e7297a2aa50f97909362ee85a362aa6db78a3790684e546691da1c5633a893d5271b846f1d6bef047f514331b441718133ded5a03a639d064f8d4a19b21a70ba1bcd75b3d207f601817fa311295ae9f3d6f59f807544865296ca22d0982a47f25b2d05799e4739e89288e10e50bece584e1b2694d653a8068f744648bd95f260a8faab3095236d8f6c8db483149ebe801bc3110ce1ab9233d71018fd282d835b8ff247f18fd7b93812a9399519c63652501dbefa6d3545ccaeae3bb14dfbca98449e4bc7bcf0482567c45ac14ac6736c99f2a925a2f15a7ae56bf3936a3ba96e74fe8fdb82a54149d0238efc97f00594abae1b3a0c4eb1009c7c1feb9e128f3a0db4c6b46a5d8bcf281d7cc68ac79e5928d51ba2d53aa23a1d140c33194e578f23aa6b52a6814f7888c516ce415ecfabce99ba338a690c2dee024ba9b885ea51a4fea7ff9d516357999a1eb329c21c9437cdd89956b15f888b38f04b1f58a813345b37f479a40495fefcc7c5a86ce1611dfee76966a47bf4cb5226a1975f741ea3451776a90efa7ca567a02a36ca9029ec99d1adbb45ec2504b81de7d9506b4ed7b2b884a9fdf19a3d924920eff2e5700600397e826ca440909d9a67421c0013e1186da16de806742b6b66f33bc8f06887464955f2723c2fa966280185ec7b8ef27bb7b5b3c5f6690760f1c92064fe716d151933910d75ad318c655ecb303d02ba98e92f22747a107b5aae0ed0ac3e4d6c02c8bfa56b12aff380c87f828dfbc0f30c3a4010dabb6826105be701a060bba9d52e60d44140eab2201a7dee1c393142d9ec93a2d458a7e7389ea314610f1ec40b6a73e1a9973f65fba0b4fb0b014d26501fbcbdfc81e297c9b3f4a97d6003d5eddc554648c74aed2b83fa608b6d3f80a21425d0078a1079dda33962d7bfea1bf6e88370df0e128590f46b526ece7dc0de71c03f3f6fc3f4c186099bc122d4c5d265106ce4ad781fa820a107b51f309384d1feb8340a005a4cfa415a72494e12112e61daad9aa1160f941089a31f5eb35a01384230f017f1eee9553f79563fd563bf15f9bb481b39cb5c261a5258cefc17488409939820ed2c61f0d665329f2d90302d467438e6f1bb55e955df3b810925c587ea3702b6c2440d8cc9901d8d7ed6d0a819dff4fcc6cc7630710b2290c1cb0c2640b895416e9789e331009b550b7286c38facbec73dc41d26f0d82b5f605d157c48ca8d797af7bd024d060a26768c1596a1b62ceb0641189830caf6a49be7d7509820dfdd8289630c2e6a0d0132cfa79ca50aa205d3a30b4798b05465f2a67a0b34e14ffc50e4b15bad29e5dd337b2a60e2b2feb6bf0b2cab58fe385199e69e165984ae9b9caa615932268b8c7151e357951a6cdd2b0aa71b73bee6c9db6dc314179cc50fe361c61e4da03c97adf32153f0b0a68a98c80733b3c010b71c1434f7a7c4fff84df4573a2396323a7ac20427447b7554a16869f59e816f54f88fa008cd17099e611ee798eed004d4aed19623ba8b9c4693060082e8ee58d4ec5a9756cb61f47ebb5e4e881e9de87a5fc1aedca3261b80465f88735375731c2c102220c8f19b78417a6266d7dde7e38a98f6ab85fb66deb26fd38094706a68fe74f4819cefb0267e97e313d9a6307db668267a8e95ce755eb22135ff46f9a9947d4cc4d43b0e3cf303ccc93db0aebc329f6db40e3dfacd13963152494ab36f9ffa50d3d0154f86a23c750f02f514781978ef40f29b0a16d477046047190a5d291d2f937a8a70e390d5c002c865c82ec57cf838f69be602cca0ab755f370117dc80374e2d5d62fa6508574e9ec3fa387af40e7beb389584aabe0d9d2f06d410585543fb367df68b3d67a2e93971e8b93b730ea569cd1679e972beed8f40745121343857e91d0dc11c7369c70cd01014d22bd73c49392fb2e5a84c3668a56fcd8594345320553b2e0d53f1374730fa96cd632aceebab06fac6b4056a2ce2c096a9f3814e38cdb75233235d80599067cd5a0150ebdfd369692035f8c4d947884b09c74b575d5c1bb5a6a25acd19f33e5041f81e88020fe7fec0832258f0701e0935ff8de2d2f75004fd327b7788bc4425d5285550dd14763816539e4480bd2b17866d29398b75935b997aecbe7ddb5f035182d74d135d9f7464a33b58b1a0b5cad483ea47e10e2344a3b716e029fcf4fb200c4c03af49b158e18e61f0ca1d0360e08fe80117c87d30e9854b6765f5fb75c4a0649fe400b2774f5e4bc4bfbb7bc0d69d976764dce815c131e38c072bdf26624c2dbd2a2292b63c6effb1a91afc5acf79991d9408679b626dd8e04693192674e6549381846d7d55fb6f9b0511019c7f15aa2dd67357103dae67b9822b47ce949b43cf3caa61d070ddb4bdbd736dcbb3805ae83132124d4f028773dd528f624a6599e64e8f40bc1ed84a51bfc60cfb14cd7cbc0e0ebd6ba6c71a23867a82b054440a90a81895b070e37d9a9e67de75575fa028128e76f98723031086453fbd3dcfa357f2789c9ae739587e05ce65dae10474538966cfd370c69e126dd38b428f61a7851a7ad607e38911bac14f64c669a90f000ef4831fda505969600e0acfea11e8f12371834bd678a25043ef392337bee584fa935722e51c99a0e8d372180b2fcc791f8f8a97f30602d2b480fa5bf9707172e1c8080babf474dc9b79dd1a0c96a409debb0fe61d5ea4ee39cc0606746e5af403ac2a497ddd890926037e617c940121df713e40374fe9e53e530f9ce01678316606f4bbfc1acad0c9f8e62158662b6abfc6988debec158285b8725e00d39d28d764940ca051cd9271a7b1559cb2f07b7b1271ad38553666272e343e5520bb1b852282d8ed94cce642462bfa2fe2a991e8437b83aaacbcd32e7f7b9fb34a57bebfdc9ede5ac15048d0219bd6364ed12062fce0c9317d841c359fe64289498ba320a620774da8355befad7c0c972a67f358fe9da5bbab5e9aec5eac2720ddf3dae2505de0d15930cc97a997b040cea633390c31e1a18c5b62602a7979b1964f793ece1d1f58dc515c4acf19f97feee77ae1a7dce9d2a4c4d0b933f5dbe3232ce69fe9a4f768c0b78d6f16df0a2b15c44f27c471767eda630bff43c77a9848dccf9b5e7f07c780180af6f5bf39922f9759e8abc77cf00d43bc955537b33b1a8721a7e7aca9211188bf3f4ee862e4d59aaccfccc168d3ccb7b14b6c23bf69ec947a2bdbd96818b863934c38c010362647a9c5726c66a0e19cca68d71833516a09a69c533de6f0a8e5735292eac6e810a123f3507b8ba227aa9c73ead05ed41717e99488fc30ddd56d5ba78f3191f82913b259bf61263ede18d404caf46465fc85cbfa54c78b4d7e085de4667ef842537b6cd6d8f85606190ef806765fa000dfc10d3f4aca012e62ea359d0687709a9f8986d2bd0b49e4bb421accdc88c2ad2c5b187f236f980f2fea5d67cbf65f8c776b6c99920f713288d0adcee0611be1a2959091f09108db2882df2d0c5407bb7eaf245b8f8718d27b48fcdee3daeaf06c84c06156d7ef6208c8dad826a264fe6cecd7fc97a6b07e4fd8c6ec99a0374d17c8059809da11640d19886bbb97e8d3f61ba067a7708f9545ed6c2de25d2999253d7c4889ca4bdccb2687b9c713bdcb969a804ed395235e9f2be77f49b43f3374fcfc74b38c90b4d14f04c16a3ca54bc0012e88f1e3576c5bde004752b9b81d42b7a0ba1b37594ce6f63d45798927b88abd09181abe37bd7499ee8af25fe128a5e2b590258c6139bdb7f2d749c5abb45c0dcc2463c081bcecaebfe20b910ecb4993e93b247d20068f7491c248a89c0243c4dce8650e6f8fe602f01cf08e530d05abf69c02e5c09602c1b1a95019e4a06328b3e2e727f5967b64f2120e6872d943fc14e3109836e3e6591675b76832f4f149d1e67d787f25829f4cb80bcebf900f94d6cee1d982a2e7eb44f99f15d85005379d1e2ca00cade190166407c26c1378618d3ae63331a3835f2194eae309cee3fc724822c06f5c9d691dc54f7573b87edb28120f23bfc7d3f38336c899d1be604d3c9b4c13f61b5cf2f05f7afd818899dde1b72c32734b4d1333acf82ef8eac965a04eb5cecf1ccc8019eb1bbc2574e67846c30ab0438a9fef0d75ed5d8f3bc09a393586cfb679de97b80c72281ac2bd1c8f15682e73ea472e235a8a5b9b9f3183140796bcfa40e9080b4c1fa78ba2c857163ec71f0e914f37f457b2f9fe1fc33284848bf5ff48f697c12a3429d2128bea06cd9bba7f52cfc0a3da8ceb6b9a4926f5fba1cde0e99bef71e8536bc0ae30cc34fca4ff1f4471767cea197b352e58238e2a9374f5bbbe8e9c33db98f070356de6d4420103eb99e791b37b7c55046803dbeb41b3937140c6d55afc1be5f6e200cf361c9c99b53e3ad02581fba4dfb52f837fddce7a1389830a6e9d051652de0dff49a08e8109d81badeec4ea87fa5fe150667c1047058c2516751b1bcd048fb050d4836f194960872d86354b1e1c9c368155a90dc1f4bb93d245dfa73dc23b9925830302888cded4026d110cf607e8d674a9f45de48507703db9a1226c43a2cb660376a638e97c785ed9374848d102449c080c183f576fd7546128df7a2a1788987d7897513cc248d8b1b0e78e972d495b969ae689c5541f2027afc5ab45ace1f40867903954af62b4983a4060ae71f120b8ac3a80a90397edb35e815f7db137066b7f192c375af4e3bfb6ee4c3fc216530765bbb4cbd079fd5dd260cae439983aa07282891e28bad5d0ee34cceed55c983a584f1374cbbd7e3734d49534f02e5ba8f7a998fe5cf330f3aa2e1f00d03cefbb27cc4706dc038a7144ee1c65f8d4013256b37c060ccc6c5229f0d441dc5e4bd7de6d118a5e3dafb6e24e8ccd8158420da88a8d161b290196111b47ea5e742c15c85609062b67c679f3d28698c45616004311900c6282b828fa4b9987aa4730c9a0910c2d9c5b79bd508338a10aab36a621fbe58596c5a7c6c0e6715c50208a8849601f3323af94a861106275eede66762922820ed49e05b5fd54d374471f68bf317cc3b42db89a26d4d8e457d835fd97508da20b5479c8f2b347e60f9b38467aef8cc07029b67ae981bb825deef3c26aa567f4524be34aee7b6d400f8b64be3f8902f4e07a3cd0a745b7333fa24c3d844c29aaf1649f1324e1443ec134357deda2f21e0ff1aadeb176aeaeeb1a4b4ef7a166689d1bbbff8f38afda7e3b4f08837258dec465b30ef11e1f12c6e6d7757806f46c3f89370ea02ec3b5712dcacf83165d599393adbc0546e054d66d75791725e1164c3d95a5ebbfa7bab91a7313a445a11641030e42e86bd7f5757ba7dc89a6dc66ea538c5bff9efbaf0bee12ccc1675b6812f9060e88ca52b58e422af94d7335a77fe4ab1cc5e9d57bf3a2cfa8d74193052f4e4c4b87aae260b4e5176aa65e733c7c1dfc6fed0eb155c699ded66e9823acb76b87f59ead7bad1b0ce245b52a62257b4a3fd9af6b840860f276364f5e1d52b00a9a3df1dc6766dc1b4be693a4907a96d706434de83f224e2b40089af352722f165d3cd4cae853fb737b3c582239ac6297849e628bfd1fdb942aea8f89a7387d1e321c688ad200a6572a6f6c46bba47ad0442b51c7715b2a0f9022b9812e9ec2ddf3b96ad3bbfc8270415e480697ddac3a0ed8bde277ffb54b70daeb4d5e97ed1d248d8eb8bd4ac2d45f33dd74b0a1d4268caba75d9a86dc8475cba41c16eb2dfbc91b52f3e9cb1001801204289162b4541385aad3029a7f9e511cf9b8e7a18cfed1fad8751ac57cbedfe4c27e965a8d839f6d17674016de8bc577b2f0bd58bf238bde67edfbb1ca6f3de1801d03a1e0d90adeeb3933afd146aa094c52a74c40be93a43151aabb92023cea6cea53d03d27504256da9664f6e444c35f1c6fc4092ca56d6b6e18446ddebd6c595b66ddd43e1e0b490d50c082ad85d505905e6904c4e48d0b8a29e3bd86eeb82fc26d1f9e2baf2e094ec642d59db3f7984ee5b709f2c1f352b70a13724cc7d5b8758c2fb106b23ab6d93b221c160702dfbb0afbb90397f057a636a7639a4e47dd969987aa05c24904423456b56eb79186fa2448551938ed07eab352c3e51ee923ece6eacabab89dafbb09faf81868509b0f5cadab17f5703cbc6a933145f1cd42415cc2a79fafa0402f73a40384c0829d7161aab380611cad3878fad51da6b525e5a1d08e2727832d9de13bd113d19b24d8fbb42af5a07d0d2b0dbd08a38996a111cd34f4708c0fd71072f43616d0027ad725f0e1cdca7b58f06e2cde87256610965021b72134eb18ecd93c005391e0392815f4e988da8df219a6a592d9453574999dbc0dde82369945313788473f32f4fa3761aab1ab489bcd0b59edfa1cc8fecfeaba8ad895d01a84b9da28c2d666f070fb1bfc12eeb69ee0a8a852d0f56d6774dd6dd24d53ca2139d9e7ba4885ae9f02836d6267e77a09ae5503d0a10d02835286d65c2f5ce3bcb5ed176cbfb98e7a0729c267ce24bfccf5199d3244e168854e9d9fd86aa523a1d4450a6ff4754ca62a00ff61e170ef1cc3daa23c5e66271316f5e701b00d6bb38f0b65bcca666c3eebae2824684eeab367ed388036e0200e16f497808b4eb3b56121b4330bc736ed796256c5cfe5e358971b9e43330d216452451511fb326d61a1878f63ad2f5e6169a47a751944c14fdb6c441ffa8754dd12d05d85aaf9b42984b3dcc4c3b29187e02564305e887392490c2f25d4eed3010d3c381427d269db7657b01b3c6a1662d4dc76efbcda1eee3b1a11e1851b865a43db85cdfd4590c146f1d6b8f6c8a67e15625833b055b835aad95f84146f1a6a0f6d1436f3b7d36fdce91cea1af55d8cffb74b9a36da829de85133caf228c4a8bbeddc7bb679dc7534e2848a370c6a06b68b9bfbbb6083cd824d438d914dfb2dcca86660bb70635cd3bfa96aeb54bfa9ef48e7823cfd5d9dbde512ee881d0d52ccc7224edacda3fdd3adfbd623211266587bb05db061a8c9df09176f1bd50c6d146ef237d36ebae95dea1af55d18efb74d34b6da62bbf84143c8f07888abbbefba79b679ba7524628416b78c6a06b60b37f9fba9379cf44ef59bfa2e88e7d9a45bdb7d915df8a03164782cc4aadd75dd3cda3fdd3a1eb155da5ceab6ebdce95c20afb357b3b7bd845da1634388f5a88847758972c47586ba45da8ccd54db6da9f61b52da36a4b76f4b3db8f019647a14533eeb98b83462ea04aa72df79e369f774df51c40929d818d41e6d176fe62f4107360b1b4635479bf59b9041eda14df1a6414d7f23b478635c636053b0b9bf051fdb2a6c1ad41c6cd2ef56ddb6ea39e9dceab6907c26526a32520122a7e4868b47464f1f761b5a85a96dca307182bfc6393a57c4f4e6ca044e8783ada1e0ff8db55ddf6d341d902f32b634a283f61639a323ce03c062f49d9b8c8927a3ddc1047e52bbdfbfc248ea702444a5e0984500ac6f77867fa5e3cb923c7f1ae4537fdcdc375225ae0e4671da5f408454864fd9c6db5ce039123e5d456dbc9c8bc23cb65b7abbcf5bb129747f35c7751607ee36eb3b6616228f42cabcdd2f4e831c631a88d2806ae284d65bcc4acff155484a9d70c1503f1238ca35293d97d33dfffe7ec0cba2d22bf6f13cf67fa63431ab1045dd27fb675f8f4ae0868ea2f1ae9a13399aa046f60adf3fcb58873959b8ba08704185d3ae594771364dcb2bbcff2c5b07374f05c19d2d103e147076107554c7c2e533bcd011d8a66a4825d6aec21afe7e7f25e9e6ba084543b24530bdc140ace121b7467739e93d13c6918cb30e7cac4fb448bd5027bda595085eb9f5eaee974842eeaa8d7eb56216c55e94c45cf827d272112bc69cbbddccfcca7c93f31254143d651c58a5d0f7cb0b5f65aa3a1424a93bab90c9ba6b74045378c45b6bed739c014041fb65dcce2642b33510ddff00c21c11609ac811f1d475356083836d217e96e81adc889f8e83cf1e7fe1a8e4e6c113d9f08ef10013aad95aa31fdb3600c1ce933df6fb46c995df5d2c6c2ad77cce9256a6540887b0e7d29f0cd65506138f38a041f2bb42c32aa56c16ca3427200747a9f6f791cf050c24f15b8dea9292b1ae1da0f9e270de12d4dc9064a91ca16de994792223181a7609329fa79821b56a188444d64c9a1a06a3de7144b3a0bb0d6083f2f986c4210fa2f610f4c1d4dd19b08ee791d10554d9e70ce7a5ddb50d84859b1410d4a7c5a03b50bea8c235588bc7be412581efe16e2740cb5522eee2be741288ba02c9b5ae85f47283d9694965756bea9dec03cd20970147783e7a4aced37f6c48b792cde36f639f094a4079a7fe6f54cfcd1930e27e04b5f63b86048eb281ca6d4cbb5657fe6f661f88fe7b6ce95f22763bde635fa8636dbc40c632c834ae0078851fc10edc31c7d094aa56be7da1969b27fd2a63bed74d92813bfbae4b920c775e4c95800779fa8cd2f4503de4b20ab9ac64db83b64697c385d832a83aa2ee044e90388ffd6875039eab26d4bfd2ff2e3f616eb7bd526559aae079c5849a1ab998966682e6dca3b2b0988910b63022cd1314b3c6939028188655e566130e176da6920b1dbe6e8fccd5583d4c44fabef4c4fef6434a97795a3f993cc7986b99ffb9cbe1afe845cfbeb6ebc365e56b32c2943771b9f9f96987abad50279c5282843d5130c19eb2eb733392d73e44f2baf6909daf9b95dc3174ac94635d6214fc7137e64fbf35031d6366ae90aa75875178c555183fe6d43c7032c6e78f3ad66d003875a891c218444f792450238add72eb409c3a87909a6fc4c73e1857b22d5679e333f7f5e1e75abc3d85fdff1c6beba1faf072a6f49e281bf912838993d197eac06f0b9fcaa227d31763d174ec1d0f84299b69b0b9a5bc6ea9fc10134cd015230800a44ed1dac5c3fd93fe319bed0551790b395caf8786147dba8c885c7f47cdb0d5a4346db77de067f578ea871f02eed6447271fc3cca2c7577a1e67c4d34f7b3786239991ae00422772ab925cbc93ea8544d935afd94237f850bddfcc0947c6fa804767a073fc701b7883e0b850710291288cd1c37922ca6595498dbdc929ea4e56c134b61c80cd548ac112944e171898aa13cd9fd138ca5eb8073a45e45a075991907997df664f0fbd7c4a7872ac7db3217c34adccd01a9069b229432b3bf065feca6c8d6e420b94f9831428a63b94fb764e3a08b4363e0bae9e5d93e52b058cd420436c3cf64ac009a181e4d9874d3b4aa781d4b32febfc81d31150beb1f5c7ee90f7f917333f728221cb47f42c2315366c6909839d9253d40269254dd210f69e0bbe4176ce88a8fcccef07117de67b44765f7e559f46676b52a461f4b7d0bd570f217a56f2f9c7a4e8d65e3b7b2f5559036af93bd91c7536eaf00d360fa25f42e2334515dc54f30c9975d150ad432dce89ee57c2716a5e933ebbfee282d3e0bbe6ba83c450eec46ccf581d6564ea31663e6bebe6e9d3aa7c2a43da657a68c8a7e49a763b18062843488374a6fa53298f4b7a54f93fe71d4d73d0bd7848ee1f51eee9f36bed019566fc2f5131f0f5dbc43bd89f2b6036a2cf0fb2feb1b98bcb1aa8aef3b16b1aeb78237b59c4725e261ded417e932827c0f414245f14fbe322a313406b5cb2b4d5b15f214c7fef7af41767ae6e6103542ef550a2d352b343f0286cf4365185143ad3925b820cfde53807f46b2ad59166588edd6a559fa38853fcadbe59605d5984294309df2fd5cbb1215283c3e691fb9e2e2a8f7cfa2b391de2bd564268fa66c31831be544fc71808f5cdd08748d69a621f1c8bd36f90db1842e3cf8f5ec6ff2cdeb99167668e2d30ad6c2156370b670f5fb45df6fd1321c6b9761d2afdd3d728858ece387bc7fa03f88ca7c3a8e7635fa80628c602499c82b8f39ed321c07fde13a5608b2b51c6c52c0f86a72f125b921fba82779ba6dbc53c2ab36df2b363d331b3497acd721959b622e19ed93b78beb1d88738cae50f48591d378d72ee9c00ba26c8ba0843a676ad35b0220a1ba9784cb946ead2c90104d4cb145fb37e4e84125debdb5a176dff4f8b745eb22b9fa36a12e59e453d288034b86b23e6f7a7ca7158bb677802ab65bac3e98670a515b7b9233cf24249f1c1249f6fa68a07fd984ee22b46dac10d0cbacbf9fb12a9cd1a3f382a70aafa883de43148e0db6611df9c4bcd4acc58472e7ada0fe854b06dc1a9fcde1b8d8884ea4f95cd8f8596cf16b143cffe135ae5066e51a4b15e7b23522368b9c350aba8fc31a3795df18aa6a8ca39dfd15f24aad24c29ace8826764f605565e8f6ae8fd1683910a3a5d39613b669b7c9aff112c459ce4d9afc3375d14e574bc895cd7cd7cc1669af8e5f3bf76c8926b72706bcff50f7e9a2b5c7219e63f1ca442de030d299d8ce9f28c81e1967d2dacf4085059097034fced232bafa01d257258983cd36ab1d5e7ef575c6359079d5e8f01b947d42c6dde1460a4086d82885678e3f751b0723bcbc0b34a5c20f8a96ea0570d60b82cb6d7292c6b79ccb88b7583d41b6106581905990b25f994313b06c01b9f8d7403e971a1a4a9ca9168f66e20c55308d406dd882c0c6008ea94508223c20eb6299dc02365828d651ac212e110845b365f655c856a706f0926896a4d334fe53841314f679d2f6b81207a24350067c77a5a4166a72663dc6bb9df6f122324bf924f47b2e062d6030b45742a9e714bb7e9c881b6824f8e545d3608cf16f1d3301da35d387cccd92624a7c630b6e4de5ac5992127b8925161a96d398cfcc55fded4ce8d98f4043cb36a1161dde1a375cdd0f5351a71a74c65dccd5534562f683b0be3fd3987512df1df511d25fd39088e9433b1b024b1209b9dd242aa0d63e4252dab1526ad3d0a7ce49dd21d4c3e94ac1ab4cf34e87659afc2adcfc49577bd559255c7767c7301291b9338b3a4a69876a3a087b0bbf11c3e0c0af95699bae202e8e5336564bd4e216878f62b634e264b790afba54af13d4548c68050a2d9286690f3c3fb543d832ab3a0116f92fb14e093aedc21a52108f9c27bcf93422c1c48b330614a354f3f04f1a551c67ece17c3a11cef5f9f16c671ea0706a89cec1d8f3e957071d50c45767bf864030cec5d8d9b5a8ae46c1b6c1fa96c64327a199f82393a98498ac9d2d9eb5d138a0efed165a89177ccc1047d53ca35da0a5f39ca12da15f8341b3664f41ba9e5631b6f727a19a3bc031a6ede90a672db862bc1ee1daaff53ed82df4cefb803e40ca1ee9914fa73a3308648ebaf0c76f49ac05d068886364d65ca966f1d98c2382868e8c3349b046b0dc3e41f6957539ece701fc220fcdfa733fd9a3d4f3bba1b571e2bc6161da34a7b233980bed777646438ff5a2f9fbbc9a66851cecfca82ce0cefe38a73eab55684f222335109d68a34dff86bfd5f41e8fb1bc46bf96d898ee7ef44f13e4da4f1665f510386449bf2145fa86acbb37e425bd21aa4b1c50f38c43c1f96eec61c1679c93b453933a8421f1512f755c13a43bae7561a9a69a8c613c705c73578ea09250b580d4e6961a1ac2fde710cfb8e69926508dcdeea396a326aa36c6b51cbc48fbccb1830a55e904427650d22957931a172f5db10d4f1dec4f9e42decff52a6376c8f302a679548d2ddebe51c7f62cf667004e06ae7ff57776701f890ba2bcfea7313199b5ec21daeaf1bb23ab9659eb48b960cdcb78028a3cadc5496962f4497ac5c6326bd9447380172b399a6fb7622b1c07db1959ec08e12c1683c15c5ea8db7031b3d6be2d12e95c7e167bea43948146a687998520d03e849b3c41d466e030a9d21aa386343c2d24ef4b1834850ba0b7611c3d010718e245579f43a92eb8a6d49afb5942c59c0b8459bade196557c1acb219e9f0379c7899c992f85805c265070dd661c14182136d583341767aa4455197ce82ce22ff62a23096ac610720299876cf608f046b06ace9096fd7c55bbcb5e4b715415505928e86032441e28f4b0d6592497ff57eeac6079abefafd3f19e1cbe24018a00cad6c0f536730923a51e0bbb3f171c4ac28c4c40acfefa11196d82c5404d69ccde662c08ea6a220c4f31ef1229a43ba5edecb84a175a47a726b72bb7b341233d1ff535dc908564ff75020e26af09c1786c85207329423c33ed333fcd2f136acc882d25694b220e7b73fdf23500b70541f992ded80cbea9afeb221553ce3a7253bdd7f07d1bb4c60eae894016eee687bb9975cf15d7425f1675e62a896589c20bd5fc477f8b57dd4119b95e4770d9ce85f020b39c3e5c87a5e87a792a1c3e2765acc32317d56e8f77b40286e0fab0c3cbb34a881e5070b301a90871e047b9f074d8d856c695a3e21e10e8e826318ed113b56b7e6ead5dd084ff8e9cf171c3000892477bc0273c68c5358ce78973b417b1138f73d9bb87d8a9a64f3e090dd8f631b7ce891a0b7e3822ae1f2e14691a92f1ce36885082a863df4b2a8c96abf0d5c751660d7730f3738f8047d35eb99188166544009034a48a869657c35371f42c8c01ded47981fab49c918eecb164a6c6facddb7a5abe8c15370f9be6a680216cbed45c3dd75d3ac82e5235fdc2c0869dbd83a2f13891e746bdd7bb513722a48a8fc6515c3d73a5b86cb976be980f305dde72092aa4a8812a8c7b6454d0016a85015fd0c8d9b51174a8c1e18bf470d949c8fe146bfd4f7fd2aa2268d20d29b2ec2e9b2a2aa3f2bc22242e526a61273c150ca2880cd81c2b2a2f1025efaa0fa824ac8698dc16190a24d550188dd240d32ced69233a5111c0480637ada1d5d1358d2705ee4f95b86b9bbfeb9c7904b28a6527ad8865aaab928668a747189b0941814e5bb10582e8deb87b0aaf057af34a197f229c5d7bac81d52ddc591ca1a99fe223ae5707ae2d69a12b6ba64197726bd66950e60cba91cba36fab4480d0d6cb917242cebd01291dcb6afab21aa61b54d9ddc7d9bf4fc30688be4e310face8ab5713d212bf3636013cff2312a7e6f06c15cb7263012afb1f5a937d2c7f16bd5369043f51db10ab6964237e0896b2c4f82a05c269d3bf56717fb7494bb236a69d664d76c878377b289f04ec653141641ff65c00e2d7175163cc6e856933fc0db10636fbf4d92b0ee5d59bfeb33cd1ab8e9cf67b406e0bbac38f653bc015244154689f4bc921ea2f8ad59fbdbcc6e3f80c9572b7d8072f82036c32dff37c393ce0c071f9be10ff053ed5daf83ccc4ec1bbbb1d03ac5403be8545532faf6a6d6a8af3056eb9474de6bb3eb976a0bbbecee391e8339af5b2caf4eda8bed9c7400d0bca1d781d67a36e32ebf80eea66c05bd6df1f8deb827ce0be1063213e48932cfcdb45a53f4674e54895ae1e845627ad74d401a91153da8fe13df77017c53056ae70bcc50107847dc1cb0169715b624772b5c0550da0b5789cb22ae129765d89105da1bda5222b6c80e9d90252964e5c598d9c83fbef158816500ff1e95af6b66b6bbbb8b5bd3b10f1c02782bae062352dcaa8864c10cfe0c740c5d67f3812d356479f8c5deea6fba8e7fbc731d568bbfb9fa602cd6877b567fb3ca9d227c20a00e1fcf234009d5a3aa05e684801c04f8a014012937675bee373b075842da901fc0032a9b9cbfb94304153a4478d121c2021d22a8e81041448788210c0006a52f197f12bdc550d6d9a6b0a7f90b8a183a28364001010a4c072589ce18a1df9d1b72e8dc08e30617fcac1997d8de2f9fd9d602e8a000bb53009b025c1d029c41000c10e0eb10206500721880124ae9c7d3f16b9f460bb9bf41ddf749feb7f8a60e69dcd590f509fdf6785d6b1abe4fb0c4ab6cc91f6d74ef0c9186ce106674867802a5d408da19c207437480521a04ed0c6181ce10b7330413426847004f10c0d911008a7e784db9f6692a16b23ecf9ce5fddf2f5fe51d972ebfc5acd29da56d35cffabf5f0460838ebd23c41334af9a778410811028ebf33898bcbb2344119d20b0607daee771303e994c9ee775fe60104a54c146063a365e3a01d843270040e804c0a4d4ea5aefba02c93c633db760e5b65e7e5d1796da3a747fece549ea3ea6f0b8b264b7dfc7ed586b3da15a644e3451d41ffbaa1300220080850e004c00002294d21f7bdddf358e4906075975ebddd4e7ff9dfa1bda2d7aa2f83a2c7506820b6a8526da0122c883b6367284db530708253a3f6ca1f383124a911cf140203daa2aa8ab3e777ef0412b680522ed6f2347f2c90735acdef1810c4abbceb5e3839253c7878fec59eb0e22c98e0f242a92cfebbdb6764ed2483d893b6943fe96a573c205cff124887bc69593a4ed9c0ca931d9a8883323b73f48d2b288b0d3d475361d93243a148d0e05a343c71bb4438b74a8c91e70b0070fec41450f69e8010a7ae8801e7c508ad554c631b59b6999b11131083f3f4fbdaabf739c7a25a45a9fef4bcb41279cf3a4f8389deb1fbba8c7ceb16ae4bfc56a6b5659b3260f9df23c04600d1fac71ae81e1e10c5b39c683750737dca18b3ba0ee6059555d7dbecfc337fe5c4fed9fdab6db810476f061072728b5f6d97f8cb1ea00813a7ce8b0c615715d812449871a3a08318733a875ffdb4f9236cc42e66022872470393011072ac401047180020e6a8083187020e1e0c161006f38c3faa03cd58efbbfef25e7bf1ab2c6faa3cdf8d5d0f5d515095ad09af64c61b0b41cdfaf862cddf7a77b05591aeb4910679cb1a84307ff930e1db58b42064686e644c4ca2a6bf23730e10626b881056e08811b7c504a6fb6ab9ada7ddcf37d4938e66a946a44a1464a1bd0d08619b421056da869c300d8e0043664c106d31accb00619d8b1eee7a81ab2ba530d75a2ae56c81275d665a8e3fbfb971f697f736e572ab725e69fde9fc4c423cffa0badecc849d28623697fafc1b3066adadff9a4063328b5901c3172e4a4862e405beffd468ed4931ab4a0dfa7861f468ee49934c4a1b437d250461ab0787ed340a25618ca3a576e47d5c5213e6bd0c0053428a1945adfd62c9f0d5d2c34b854bd3f49c8b47a202ae10f593d10d3ea81fcd5e11994886788e20cd7198c380300d22083d21a97284e280f7572f95175af18776d1666e600cbe7fc043e919a069986cc8d3474a47143c45997a7f20fc60c25308319b8194c94d21df486190c500635801e6f9bca596aad2b2d242cb3461fcc33f355fe5c48edbe94263d6c6bbccb30843228a1f4fb60657821831bc81005326851596ec21ffba9c9f021c306c18ecbaf7f6363c620833168600c7c0c633082e2aaa392469a15ca1a085ffd0d0c101831b0400c1410c38d183834ca80061768d8508ad51db5e3dff1265243fc07625454d551378d645db5ab218bff0d7ddf87427db7fb0cc3fd379fe0c9cfaa7bd79a46870e1d3a2c92c440c2304618aa08432a0c44c2200ac387523a05bd718619676ce00cfebbaff6e3548eb1f57d583c335fc56ac8fa3c0ee6b9eb34f64cfe79eaf7a9f1cc7cb5c36ae8f3b20dbf9cafe6af0ebf2aea8fe5fb3e35754765f1cc5c1daa3ed73cb7a369b209b1a93bdf7c7f79f2ac436ebbbd5d67d37536603083522347aa75a3753f81610b7af24b6a1eab8e55bc2239b25fdfd3060cb8fed86b549f3fdca7aee93a5388bbede679a37590aeb351d1a32a47af7c61095f40c217486aadfe46df9357d57f3ed5e7cf53af17b8f002492905426f7881892e58815afb43d64ac4baeb7bd6fc0822491b76ad69baa0bb60ea428e2e14a00b36b8a0072e38810b44e0c248698a4ac5615dd705bab0baa366fd91a40dbf4aa486ac8fa77ec75b55575a4216bff6f7fd1ab23e9867a6864c2a1587e579a5dee2f7d9caff66ab6fcf3ff6f3c40523969cb630da7cea3a1b93a9eb6c545472f4ca0d2dcc00a494bad01b5a48c016cc8882191aa0949ee80d33a430c386c5311ec3937f3e21ffd58c3db5e3ca5764d63d047fdb2a8a3c639bb2b5aefe86e332256bdcb3504616926461015890c2aae6b763ce9634f5d84d2bebd45775cffa6e1d9228d3fefdfbeffecb4dfd34b7674a6932e76f9ee9ba322c22e2b21f26982b8871052ea8555d410a2bc4c10a4aa8f57d682ae8c2783e8e63471e1f495a96ef86156eac00a40a71d099e3cfabd756a10655b0b156e4733b56a1882ad01315884005910a37a8d54f5def97b86f5d413695b1b537a6308429b0600a529411074a911c01656d9ebad7075dbcad2e4308656c80d6189622a7aebad798322c299881e4486d81d1955bd5490a3190c2114a9ef9793e49c1868d4213a2708228040119396285b8db52f7d3e61f6da0e08512bd01051840c1e6096b5024472a08d4c993afc8be53f72f79ea203c61044ff041da90246df8e3d8b1c5d165b6533c81004e3803c911909123966977afd9d63821024ec8714213526842049a00628219488ed48b2b6845e2c454ebfe8a9f7a7f2adbfbd1bd6e8db779adc72a5724c7fa722678412945d11b4cf8accf35b195b2dec3841bf434c94863930106195890e1a1140cad79135ab25a6eda713faa5afa72abfa416f2cc10ceb7eff6deeef197f364b30c28d258c9452bdaba875ae1d647fe7b372abbabf97e0a15adb28410d6add7c6af1471b257c9143095a506b7f27b1a8848b523a86d9867e27a10c9452daf7e364fc7d2613495a96ae33a5f8aaa6725b6d54b84a8e5e31993e1e95322c620a727f884a8e5e31dd18e30263ec1803014858828447821124d8b821861528a5968e2f35d7c1236bbc22573abace3a2a798a27af27ebaf2db3c639fcb167fdf8fbb48c656e5d57e497e2e5f7a3aaa6f2cd389f2cd07d1069ab1846c4b08e6006a5d4d23d95710c4b91af86ac4f56e97c934ff3c11896221e5bfbd71cc101378e20802579589282251858e204a5d4e2ff62ad2b6bea5e7ec79ef72f7e3584eddd56b5b598c2bf1f471b810994d2197ac308498c4085118ca0d66fccffaaee8aecdbc6b014a9ab6c61e88d305261d43028a5f486de28c2088af0004a29486f14010930c6a09486f40618f6061845dc20c21744e8d677454552afb02c2b2ae80acbb26275ae5423b5e3202bbe1ac35224ebdacf2a5c6af7851e8ca9d6bf585761c8fa326d7ffe94a8eba976df6a5b1c62f1f3835f0d591eac08a8d7eff3b12c4f0579b2225f7db092242652ad96da7d9dff4de52a6ad3861fff3836ebff8ba53befcff98d21ece1c610983084210c61a416ff3eaf0c73be1ab22ec7312c45763ecb5287b75bdd735c84e006219821436f082103d4e220de21ffb4a689a9ddf7d59075b38d61295237de36f5bbf2b3ae7abde127d387745610e95c790fae6cd9ed7e526bd0e3b89ffa4bdc4bbd5f68c8b779ce4ff40403fd710e7aa205ca8e07d06bd5151872cbf1fe7e6ad3fe9c71b52391da658d553cdbaa7bb695631b53adbbc12e54ad54b657579dbb4b05a15cacef83aa2018cf57b9adb57efc83f93ed417aa1daf1fd0532d9e71fd584fb5de82a9d65fcceb9b7cefbff9e64fc930d6c421eeb6db8bf270dc755ce4b85b6e3fd45743d5da27d7a488b7164fa03f77ffbeef53a4823ccfa7fa8a7cdfc7aba0229eefe35fed32cc0ae4968718a7de5c43d5ea3887b6f3fca616b50d0d8bdedf804f826b78e77f56715a59d5fe9b8524c159087fddc292df9ce9e18be267956d15b107070f51bd8c95f317af5eb754ebcbf9dbc3b2befaa96c55fa66ac22f5ae961633feef0375f0d4b7669ce3b30eadc09028ea1cb9e3ef1607c3a04e95e36aa201930cd026f01bfb66e5e34e5990524be9676a93524aa2d4a474a30631b42c35eb0a8532b6a1276ff69721f026b4ddb6f4adbb8977c8bfa59b4356fd766b3ecdef173bd7413a3f5beeabf4cd2e3039362607c9b13156d6f8d61559b37e5357d5679c2fad4cb56e063dd735a5e6645de553b52ab7963c39c795779ccfca571d5f7c5681833c0e264fe63f9054c69dff9054c6f65bf86b96ff17cfcbdf7fe368f3da1fc32c7a9ed79f7b1f66dbb9364b6b722fc7965e3fb5f725eede0af474e879fdb9a7d223f774f6faf3b15facf27e0cbdb1ebfd49acc73d4d9e57979eb8713caf3fcfb1a56796a7e7e558b277cffb249873ed9567f6b697634bcf2c71c6f94dfd5c93dbcb6f6a0f0793d633ff6f48d27afbc57c723044e842035d7c79a676df57439dc5cffd38335f0d5967edbe9cbf42ac952d79d5ffe92e48335883d6197c610618a0945a38f6bbedb685cfe046cd2e6558d5e78e0cb6183283aa3240511e033528a531e08252ab9f668f0189c2e00c5a9edc96ab6c61e0050c50940b06c040955fe0c50b50945a59e3fdf58b79a119f2e917544aa9555d4006a5d905a30b6e6033e76b0bead002252dc8cf5b6004b5b81232b20d9570516b55f229b9c1412c2883d6ceb5c9821c169028b55650432b58f27b05e60a6c84a10abca0d41235574191d3ac2aa8670accd0610a72680a48d4e229a0a5357945411939b644c1161505d7d6e209ea70023128a59f04f34f823966cab45377cf3c49500212b08c400ed4ba0fe69393a41d7b68eb8a04f1679cca5f4fce6152bcecd6ebf979d7858fd3757704395b8fe0c7cb087a15f58f362228e324022d3abe2f021e2150a38b4f56d00d8117d96ab292a4a9cb2f4f21b828a546be6a81408d7c8a20580282916e5d7380c0d3f9801a94d2179a215ae6035a6854b53e50a4f3818b5a5aebf2cb0f64bcc5124aad2d946c81d23c5007cd0366506aa93429eec7d11e50e2012c3c50c4a603df012f28a596edc0f755904d07aefc1c73e00c4aa9d57f853baf1c73600556105d7e69e2c0129d0d8c81524b63d2ea9ab1d800289fba3f6979b51a7083064ea0011f94760b3af5aaeaaec914b666693310077c5d3a19c8c9c085813a506af1fd7192b4e7ca825aacfb579f24694f18f068a1868e1664d022035a40a1c50d2d7cc8c28b2c30900590ce05cef0e20258506ae91eb238cf01637d3cc7cda7b875e5f1ddfc1f8fdfa2075e51877884ba9425451d19eb0061ebb3de5a652fa084dd168042c7025e58f9146bbeef6f34cab4f7e3fb1cdb6dda706b93cae3dd2b60c687a45a2479aa15284105682a00b2e6b9af3dabd0a813056e409f025650a052fa21f18c7c96694b22a62d276086091c81528a84762670a9263156f59a093421013528a51f920aaa20d067a94e1270810450d4c857ad6a5d0caaf6ab5e24e0b13ab7269600a55894e105a55870412d192c8a508e2f16224a29cdf91b811d810f04ae008125d6fd7deaeffb6a7db0665c7364085c0002a31962b9e20757845718e001537840041ef00f40b1620e56b4a063054d92353a49dea0845aaa7a31f8e35743b6660bea27a939687fec9d6ffc5191b5ee5f0d7dc49bade7cd5287a01698107872f0e45f0d59f737bf78a55a9fc7c9f9b3acbfadc92fb676ffbd18bcf8b3ede45962ae49d3533198a45b483c235f92931516561658913e24a00adaa08b3d239fc573d86d4d53dbd50bb7aa958d9c8305ba7354a8c54f1166db2759546874545a506a755c3b89f39ba6b6aaaf9fdafb6a0f3f671d56ab4a424571788063718ca0d4faac57f9f78fe593d9862b7eaa16798a96ad7cdbe050eb04e36cc1f983e668393df4a49679763368ef234fed93dd16652ac3225da75572f44a1b28a50ca01d4e026e526a7d56ea93fc36bbce312c45b80f7e8352ba97ec2bb6a78a3428b53ef17bd26e6b3bff2ab8a822c7aae206a5d6f3336b8cb32d4d3528b5db9ae6126a5d986e724129358b504ae9bd4c1b54674d460b4c477741ad4f82f5a85528fdd1c633d9a8883330769b9d1c2ac9e000da29b3e894394832c8934459cf5b6044dd92f2a50e7fa5a640508d906a55d5679a9b2adc40e026850a333a544c800a1d180dd80796ada0cfceb1fab1ffa856134d54d2665deeefa154d664cd36ac9a9ba62d37c8b465e5a655f1073bc8b42ad3aa6a0d26f112631728ddda565177c61f9db02c917cdef1fe408b04d920f5a9518a6fdb0253afebc242e009fa1bdb2d94c800112522d1f91f7c0cfec82b412905423b770ab70577049708a596a8ffab3fda541c38acba22ad0dff7f49e138707c3564a5d4af86ac94961b3a551c38ac0b536dd6f8bbc61102f41b55419d49a6827ea89826134dcb0f1595f087d0b4fcd87fed975b8b1ebfa6bf9a45f5d964ba302a2ae10ff148dbb34e82b71eb9edb6e5daff611ab91d2ff62e0c8e36edb6a6de76bfe987ca3579ab8e4d3f544ca4b3822e9007e9baae53097f48c72bfcc3aec9fd5fa534c78c5746f7bae067a97bb623ca1bb5cac6ab0e38c3d2ffbcf2b0e938800c4aa925e3802eeeb50ef8205903922f745ffd0d121c244528a5f79e9014e0881c8e28e9cf43bfcdf2ab9cb31cf98e2ca18635420123468c8028b57ab63de7bf7b51a655d57cf7daaf9f350d304303c6a0945a5fd7d97cffe951f535a0020de01ab0000658815224473e9e7a9f010fe830608a226b50139f8a98510406459214f11839626dbdf7f3c89a481988b480c887e488ce15c47f554117647db8fd95a757fb6405adc08f4797f544a40e39a30ef982891b33640b3ae4876533c443690ad7213684a441859421e40294d28f8bda866f329960546c6cd468a146063565cda826089a25d0a880c6d26c53c8618a2fa6c8628a23534481a2030a0b1d141774459ce951696656208dcb0f1b1897eeb1d5df785dc7f1f765b58729e3e0c73cb7fe7c5955a99ecabfcfc2b7de073b3359cca0665c64da207303190ac84c2183440c1a3149e8c4e4c4d498228c10640c72a3036409404e202f52c4410a1674a40842b916fa7c18eaf3d42f95c9acef2adb0ce599f96a5d1167b41afa2aa8769ecab31aca509fb225fe6d7e18eac590a7ae64a8baa36275475dd9e7b7d51e3deac7d375a2f676d77d16e3b07c758775bd1dd69ea9d68348cb49dbb90d79d659835684b1ea2a576e4790adcf35c902e3031817c07001636190f8510700d0ce8f37fc48011567403ab80e9e634b14ca3363ddd76159df6de7a206755c41a028ae8802f4e2869732bc80e0857cd95cd648c345894b1097910b8e1628b48ca0a5a5d3e2c4675d559f2fa9b1ae71445ebf0faad6ef787b66be0afa50aacff593095d52d72f46a6eea8a818cc736ccc57f7254b8c6b8873fd956a65138f3958ac6041514a81a01d16202c3fd00e0b102b3be8ac782b2a2b94523ae4fb788d8979d1d64f6d3b8635d55a696d551669b95ed9bcb2f7c482131527079c8238d18e0f2cf838c14a4bdd513fdf27a65b69a9a1afa632467da110ff62ea8e1a830387f5556bf9afacc9e69bdfc74529edf8b041a9d581e20c28bea0180a251d287264287e504ac9d026fc21aacf50084129b728534cd7d9a87436954c9f1e53e861811ea81e3e54d45021828aa83205a5965533eebaaf8ada533f0f7efd6b66be2a6a4ffdbe2fe65b8135eb07cdd2f6073db7a319debfd138199b4c362a4f9aa78d4af8437894f1468e64cd630b9d2be8c4e3079223177f1f0f0fa59487898c4a4dd79942d33cc1749d8d4af7d25d25344a41288da0e49502f0d50afa38e8fbf8d6b573497101f275df078867e6f372de72b13c402a1097baa302f1cc7c397fc77e9ef2931ef72eccfed454d0104fd79a26a66bbdbfdb1de62749b58e9ea0fb0803a39a11f774afa0526fd1c89117dde07a6a8d28d511194129e79aeca706f513b42a8e0c24473c9075e2722892231ce97f8b468ed47ee2b62f362de8cab619a175d7d248d1baa0299c7ad2224029a555ebfebf458f779d8da7faac1991a9815a36333334d9b2581f8242b251b6440600ac0e1d4c0c580f3011606307fb5c63b85e701db9489f1e551f08c32c4eab1d06c27f20461571d628e362c8fabad6fbab1c7fbe0fb3a782eed6aacf9feff358567752d218418a065248d4ea640f6d8e8b65804ec80b210e84c810f7055016209b0e48881d41e8ec88416747097600d9b1001d51e8e8c0404707121d477ca8f0f940e773845ae54a4bd579b575f965cd78a6863e204fd578dbfc21ef7c6b5505892c6d546b5d5915bfd95a55bdefe693b49d9f2d5d67f37d9eeab39775d7e5995a6ba856cbd613bc5eb6a1f7d550ad1d8d557372bdd9e6fb16a686acff9abadfd420d286b8e31df2961ab2b606a93499c3fafe5f3edc61fef7cb577ff4dcc1e3038f0a3cd7b37900d0c941871c30f8ecc7d135634fed1cdb2c8c33ed8f2c3564e120cb3e5a5677ead513a5d20d92cf88adc95180051c61011e5840e989323cb1c513e313a4ce131e27b2e004164e787050a183e3031447ad56e71bf31cbbf3538afaf973778fad55f79af3794e5ad163c30ae276ac2469bdaf66fba4d621cbb2c2fe15c4417cff2a5b6bfe364fbd02e19b6ac9fdf96ae6f8265bee3d095aaf67989b5007e17c871c97debf5804ede0e0c21fd2046fc2a6094a292d423b4c74d161824887094fad424d81f58127f7ee73fb595586e940a530ff30ef927ae41eb79f10789a26dff5d653af42dd6b0f4fbdca3a74ea5515616ab6d6ef55d6f77c6ed6fb4ba8b1840a96f841290d423b0a58430133e828400b6a7d5f25c9bfb604d5effbb1579cb3ad209b6af1f20c37be99f96a270159e82420060990e924802a41032534a0048b1236a8759fa5fe66f1ccbc70bbd2755fb5e60ae49e6a712cc2589f8a3df5fb6ad7b3edbceb0cae3289adde7a54953ff652770b7e4d125f506af1d5dfd4123f0e26fb0349020b99248afc4d12242b07ed246183b6c0542dd341e2060916246c748e88c3113838a2831eec7fb26a8c7883114de818e101233a2308d029620b9d226a50440efdba0bb6d4d007fabe0afac4990b134f8220ce3cb2fa44cd4f5eb50713353fa9d22c260f7f08c7e68963d3a6326996d8660a437d5c9df1eea1deda443a455ca655367f63c915bbdf6e178ee3388ee3b66ddbb66ddbb64dd3344dd3344dd3b22ccbb22ccbb20cc3300cc3300cc3aeeccaaeeccaaeeccaaeeccaaeecca4aa552a9542a954a25128944229148241269341a8d46a3d16834128944229148241289388ee3388ee3386edbb66ddbb66ddb344dd3344dd3342dcbb22ccbb22ccb300cc3300cc3aeebbaaeebbaae0b2b954aa552a9542a954824128944229148a4d168341a8d46a3d1482412894422914824e2388ee3388ee3b86ddbb66ddbb66dd3344dd3344dd3b42ccbb22ccbb22cc3300cc3300cc32eac441a89b84dcbb018d2f6adcb12863200258a6b7f4a88c3cd85e8fd0d58ad6899c72d973c351195267fe5250ba1f4c4012796d293275219d3a0b40ca5275ffe1b6d43e98977da6ff90d5d6a5c58ecca66e15bcbe4d309e3e016fbf88276fc9b71fd247a93bd62f1a3d21906d7b16f0cd6b0664b9edc3e68c993c59fc78903bed43548283d3942514e39464cb5f371034a298a0f11504ab7dedb85525aa9a5283e9818adecde369571df1a3c55ebabc9126a42bb80828815e8716ecd9e6dc625de21c7b79667feca4b6e555cffa0940ea15230a148b3c4a11543275040e9b1e493f99e08df56f8b7739c43e949031890caf87eb72fa812c671d9b5fc86afbbb9daa1e9c2ec7f14f6f6bf8964e3444834adf2209d4638f9384f9216c78be9badfbf79cd0bcd908c2d89aab9f9b4dab6c41b75df65e5b4d273fe9cc9302f34433e9be8aca04d747a42ee993ce7654cd39a9c946142eee7e0973228a599a27447f06d79dc6453814daca0333041169402219591f199c2601122fd2cef83231492137c5b974319f580666f7fc75ea9b798123e0e4962703faa0480144a694951463f50da759ec9f9b6b8b7df34f982a949197662913c3d94564151b82e847505561c7caba871f99b6fab639094611edf6f921fe2fee5d8f1b617c883f850052628103340b0a07039f2fedead99b23ba7d4240c4a57289b17a9cd071dbb3553561d0b6931e3ce4f9a3af6aea3f464888d13215338b1a9e1baf4baf568de5c756f7fa7f4640a4a4dc2c8b1e57e1c9c3a419dcc506a22064ed3ff26c49dd213991c5b526a52c6c52731416ecc509943e2c6a1f404083d5911c5608890125b9225c73cf5afd95f53f32ddb3ec9c292df9c51bd8c59ee1ff75b7ef40f735c5a2e1c92b42c3f64b6c5bd941794941d94d6ee667ca3c37a71c7a81329388ad213184ee9c90f4a4fa25889ff2194d01094d2bab5a873b5400ad028230b39b80129cdc00f28a5298a324548e9c98b8b8918363c941d3bd8233d09bffb55607547a5e2ab3c3e5c552a151f3d69c057834205a92a157f33dd86fcbea6283a463488208210e2c38dd452777eb268b2663f8ab37c2a5b9aaec91a2eea8aa347fd52eaf7554b77bdfbef0faba17a558e93e09a1a3074d51f3bcf61da0bfb84c0937b9ab8b909ac2b4f61104cd7325ae69cb9d484a4d4084a4d6ef8b652522cf8044f8916c50920504aad1abead0eb4200a8e3528ad9d695535b67f0ce7b6db16fe57cbf0c739376320ab9529b8f834dcc52cf70fd36e9bfe9cc52cf70f7eedffe0a5356bcc72ffe09f04d7d870ce39c9b2ff66219c2b8193169b54c6b078d61c83ec3e4f75eb976ad99bad55fbd40ca8163f4d5b75e8b0aa5fa91687a27fea76b183a228400725b569cbae4349801528a5abbff9db3ddf9669cb94adbb2de2084551820eb4d435294cc5efcae3aaa6cae3fec84f53891c4a519420d9bf496880527a5e9526c5dae1940e4263bb6dd162ee3acf537dbe18f43eeb167ed2f7acb9ab0772f13d6b28a55450142438408308220821ac20820842880f7f6ec194fc293cd43705e7af95d271b3f7d183c448fdd12688208210e2088a8244caaefe46df93a31cb1064aad15685a9fbe670d0ddf56ca0faeefc9bdd00538d037a01831004ae965dace4bdc2b4a114428f75219efaee456a5a2871e2af5e2f2a4e584e5e4091404a88082f067c4480521f95e2a1f3bce98e36ad96af9c6967f3cdf33b6253e552bb4e5d6bb5a8c5357e0ef3f41bce39a6db8f9b5219daab67edd7a5fed61b2b605c66e6b5e1cbedfac97b415a4baa689abddf8cb55b69ca3fa195e0cb248562b7f35cb6704e7c1d0b7c0d44c9296b4aa9505bdb123a52386d375184ed761d3863a4511e2094a29df168693429a25f6b0692dfea2ad9fbaffe4cd5ff843be6a4fd5fafa36156f8bc3393e3917bfec9ffac6aefbf38f97b89bfba5675b7e4d9223368045fe67b6dba2587ad632bbdc65890284a9b7defb9118e1dbdaef95610eca0f5fa0b59af65aef33264571e64b5d73b58e82244fa6ddb9caaa63def1f353b54c362af793e9bacfbeed9fa6b19c7ff8b9d60eb2aa6aff62f25e5caec84a92565489ba9e6e74e539fa45a11e0a8502858e3ed5536b5791d4ce484a68d5f1b6e61eee60ed6109bea9d9030af8b65429299ee7796598e3e97b7afa9e3ccc3a7bfdbdef3a7f98b50cb62f3536f96faccdf3c7ab6b8574de6f7ebebaf669ca30c7bbf9391e6e74fef753393ab6b9db07554ba5f3cdab2c51d7f2559573ce4f8db7c5b130cf3ae4a26ea9d68724317e7aeaed1b5bb35a1b5bb37ebefb222eabd9df581204522dfe427e9f24b62f377fcdfd27419b853c096298ae659ec6ae5cbb52a3656aca30279452863971f8010e48800318f4fb70eaf7cd54eba343471d435cab07be68839213a041433804a12abb330bc3ac2b94557a8323b723355962c78913386fd0029b36c50735b8218d37986aed96d8c31ef640e99050c72b37b09193551dd5b4a60d4f08e0861b67157fbdf07152b849a639283559838c8b529a047aa2063d51831a5fdf9aa770f46443990201949a5acb6038de7d01f5c1437d58e20b17cf9886e5f6e7bce30acad5ca9f04f3cfb8679b64057eaa177519eaa789419ae45567cd6d7869cd1aebe3d6ea6d62f27170a5266af8787c1cf74ff1b8f9373f5ef6acb7e87dd6a7f35769f2cb78ffee9ce7ffd86d4d8f085343d522c94f7d125c536bc6ffd9fa38fcbb301fb29ae43ac41ac7f2ae35f97df5bd5b6d8b499cc33f1e6e9efde33f8696a55abca65a332f302f35632b65b9542bc4294d5655e5d5c2c11b973aaf486dfecbf7d58a3643fb6f5ef44ceef2030d1e7c5be1e3781d833d54ceca2da543a089890902a594a49d2d4480526af1fd3827dfd6197738430e2bd0ad37a1ce9f44b75864d7325dcb3c179261b40cea3e3f2d0a0707f96e3bdf16182e300c51dfd421af1957efc6beeac63e919af071bcfb3fe4bee7c9ccc0d4d0b80cf15ca238d1ccd8d4785e97d3b7757fdb91a7a4749de79d292967d7853c2fc786c55a69a933f56fb61e9a98184d1313f357e7ff782a4d4c4c124c131313a4eeb2b4b0256a2ceaff2dea7bd6ec1f425a78cd8376a58254b626412b44d7799e97ff5e3c7ad8b49ec9bb4e249feb7beed12c4fcfa4a2b212ff41151518953c53c2a8807645e5410bae3851b955212345c68fbf4b80c312ae40a995d51df79e4c1706478b2518b1faf37b654c1766eb6e2f8c8b09066f8dc31fd2c1bf5beffd5ed65e27ede8f22478ea16934a8e5ee9bafb391aec3a93e9e33161178e4a1916e9ba0ce79a466ebba9044a6912c8b8095549d8827e482ae8ab4918a2514918438d8e4dfe770c255625abad637c635cd442c219b414f5ee39f2c517095bd4d409fe354b1d22014529b59040a965b33e89f105a51464418f185b586288e183528b8b416d8e50c6279475f6d423707184ef089e1f4bc800ebd675c59768b1645cb251eb6ebb04011d237841a9553f2374805a2bb2fc6db274bcb2b766f99d712ae39bd082dd7a41466e7f8411823068c2284011caa095c427b8a2a9387911425084efab5b17e106c8c8916a818106185dd00fc99123df098c7105563088a006eda7490432a845042c3211509508550d3a042594526b9fba0e6108234a2dd567d56721a4410839108269ed54d69ad7550e22d6891242a5d617667cb105a55ff05859d27add7a26938c8a4af8438290022ce887c40a024d106c58abbeadb9b2f84f645cec81562010b4a06fce00e1c70fd4f881179452fa8322e10f7c50860f94f860a4960f3c14877c5efe68d30332a8b5027ba0a407286af5c0432d1ed4c1ba78b0c4222da8c9140fb8a01c571b1e8c3c0882522b57acfb85b9d8db01153b4040c70b2a788185173abc5842074fa0b4dc3c7c2ac093dbe73fda581faa9f0e40a0831e39a0430e94508b6398ca75b71fe630073d3a392082521c2001072ac0c18fdfa7753fe71ff7578bf359bfc3dc408d1bf840db7a83ef060ab0411ca8f55c735c41960d8060031c1b5835488306df2f4bbc4fbde2fd04797ed3acd6e3d871f71a6c41c51a7894d2e00949a041121ab0d040a50b3974113e4c6660ade5429b914676fbec4b228ef74970d781983c99c840a491c20d0c31cd8efe72183876dd758930b1ebaa490c38d18691404bb223b0f49ab88d5d77c5155658d1757f4ff2b70903d28bb0d12612594c34b237ccc6ae533179014914418d146a18077257dcbe725bb98a357181e892380c1395c26cb35ba974f5d09a658e490b48766445d066a43bcab62c1b711325db480bb16b846522912b892f3eb7230a34618196592bba44e183d76adce85780dd6d048a254e0cefcd48224e0576848525f0962e91865da24b5b99a460f45cc95edba589e166c50c1c4d50c03d268e446e248e4456cbb4ec012627106da19881160bc327fdb571e33531819869dc3f068a300c1b914825930a9870c185a42d1b8dc02765e2959548392625b81a16922ecb8dc091086e18896b6c6342020cdcb61004ff825b38e24a181299cac3c6081193118457cb3071340ab3d7ae12b85d9894890848a27badf8a391764b97686447908dcafe0e53eafd12be59d3752aa14908b2bf48e10d398ebba5ececb6736102022c03c5ab9136cd5aec665b668285c907ae88611b27ba7ec3366b49d7aa834cb6c04677b495c04ce32ecb691713bfa5eb569dc5c4032247cab47b89b0ff2b1b95469be8b431e940089246961b71a3dfc00ddc342d66982b4c380072e015811c291369d696b81002261bf8bfb06b1b6d9cc861e2bd4663d775a6b15b54e7a08906489878ef93384cd3c22b6e57062e46d2421b5a910bb7fb23cb5716759a6020c4326d23bde88e349074afa882c4448bec455614721b2712dd2b8eaeb1eb788dcac9240b8cbbae486433ed1a71db8834ba00c79530d18589ac76c34db4656fae6c4e130b6456bbec55e2accdae28ccaec9462566c370bace04032615c830f112efc8964a97c89632130a68d9e8c1507b8b95481927b213c8c450a469d7287bce6a1b2993801d9540f049184954d244f7ba4cb0b8a38dcbc28c13319b655929f3baced47561e7ad3a46626344e54704366d0bafe73411b65d3024813adbb0a6eb360c04ec865da4511882a2268eb2ad712c297a294c92df753d638da2e93addfbefcef1be8264b3d293b00c248d4a1613695d77e4011aa934022f4bd2c22ffd5fa4b1ebb0e7f55d05878015af5d5aa895eec685a5ab647fecba9b4ca54d224930920862a5128974490f6e2236765d8e06bd9bd092a0132bf0b952a6914aa311560a452136769da77bd73520c76ae15fa4920814af76c59238765d15eff5b0eb4c18e772c9c72f5dd7753757e162bbeec90e9efce6497b1f679fa1090854a20c144352662da6612591b499704291148e4071a4bd08c32eeee26d335e89e20c37aeb461a0dd30bb6da30beb252dfb4b2b8917e32e5249bb63d7e99eb1b7894eeff9b626c6b54dfc0dbb22cb8d306b358e946152ecd208d3b0ac845dd80666a3d5eef9bbaeffa88aac64af10b4d8f657dbb27f131b91b80d2359b0440a416d7435c8659c36e2c00c0cbf341a5d63be440c03c30b725bf88f8d48a3558ac4eb669b0d492227e234d14d21b54dc36ca869244bb225d14854d3dd9036cc02b97b95b6d18b4a962391ae52ea043f868a9b65a31126621ae98a2ef6772ce107b18b1b61a5d16fdb5bd18f5dd775377ff9a36977aaeba218af18da11283e47d2b40de4ae4a96225d96e3441167efb68960e99a722e8c4ad771534b2186e26be205c11003b5ec6adc8f44cc72a24b126d97cd305178ba165573317b35d1936e692b6d9726d2426e54c22ef196b05269746d36fc01621b492b954461b88917a63dd87524f9a18b2d8199165ea3ac04721c2913bfc727fafb17db385229bb230cdb4e2a2d1e664957d3c290c4912ca87159e6800b924456148946a512186e2187c4de1747240c0bff6aa55bba63d779a323ff6156b225ed1fbca008bb63d7818c6c59a9f423d08a3714b58bc43d140d086d582a8924ce96b4f05e501cbb2e3fe975dd8901a4cd8ab68d23852296dd2b0ac7ae632972b92de35e0343510c4b250e1cbb8eb43b75fb0b47e42f86815ab689b80d0cb1edc7aebbab7ceaba55b62ad8909bb12a9f5e47c888bbc06b04625a288a5a28b263d76da2d3eba59862036aa026dab00de4384eb45c5473af4d1c8dbe54ca40d20daf68d45df7619ec92f5dd775bc444312ef5f5108da9074dd12c98e5dd775a52942522666e02561db8804daef3a1521a86dcb44a510d442f06ada5b70ec3a7e63dff4faa7baaeebbc8cade78137211433239b6de05b0e7b7b4191dd9dab60329896859825619715bde8cac2d4097ecb0254ae98ecff47a51769a4d03e775d414ae0350a4936ccc2f082e0360222126fc671f78222d145ba1aa9eba4d0445613ef757177341a6d5a9682c1b60b62e16b9b38ba594974fdb86e069238f002dfdabfe035769dea33aaebc6deb328464f2281237044b2d77665cf8de6aa9b2b9baef3bcaeb3e2e5122fed2f2cd44662e92a894aa2a8bd8e49939f5cece8b2236d2b61a1762f11bc2d23910db35176655909d430ab995842ae9489208903c54dbb2c8885564417c769d736da42d2768944a5d19469a7254d8e5b48b3c42a5d6796b8ebca33cb9c9e0b6d26e248dcf556247258dfcfe26334d242500c419b95ae9228dc4628c4179546220662a5d06a5c891bbb6edb31e461b22208722f2a91b88c0349371bbb6e77ee99de5622b59fe50254ba1ea58b7b4db46d97664b1c077263d779960ac7811a778557bbb2ed8a3878689cd544dcb68957b49138d28f5dd775bd14bbee896ebbe2152f89fb7bfd93366decbaff2dba94ec2dd9cb95c2307b9196dd51d975dceb5c8f5ede519048a39176dd9178b96c64452371ec3a95de296b34226977cbb45156b2253104efd875decdd6d3b7ebbace7402a92c8d8c28c3b63023594ca48db012a78563d7a532bef97099560a2fc86124d27685da76c7aef3ba6edb4aad6d68e0b65da57bb79115b5b0442a8d5dd7755a566aeda5b6e7d9c03c7e6ecf43e2baef89b82c05f3725847849000e9d881840e057c8ef0603c87670159134f24e184d6bb091c9e124d7c98c09e7b4d542796e01e05781270b3f5362534c79144a90024b6eef608ac0923c47e1681793f7a4a20601325e000395ad51540c48d0dc3bf318088cb504819e679a98c476ec7dac929cc99b881790ab09f204056ead0fb8ddd88b8cc0c9f8f06f0c4101e0e01e41022c7964b0481799af43479848d1a001c000001e1f901f3fab6dd87fea91c27d8be241ec39ef31f93cc5b89783f8ee7e1a004d88110763082c99736ff20841dc8e04398fc60080150269c41c989d21b441ca12846ea604300940967e0e24481f8c18713541200b8300e4894522ac40e446080901d82d8800d0480833c6011004a8138a1277c5b2928640b0a79515abbda755da7d63079b9d101e5db4aa126621012e426007c5bbc5bee9127569cd8d8dbe5d3f5fb784cbb55f9ecba4f0d142a7ea0540915c1177c631c5bc609a97fe03fec1fc81ff00fe30fde0f53fcc0fd90043d3139a1e06ee2fd7007d567207c5c918f80403d4c3dea27e7624f173f4847b367baf8416aad351fb1a2e65cec7deabef7851ce0008815e81e26f14920720f95baa3e6273def92da071664e087182028054013f8ad3d7a849bbf5cd5f48312745094db054a6bd71980a2dc25f4afce14880056433dac4fdddf1788ffdd4106d8c0b09c502796aa52732e8b145046d497719f244f194a4f72562661601903c9295cb39f9ffbcdb3a60c8bf06cc835041bf224f992f3949ea82e8989e088332479ba242642e9c949e949cfa748e909bf98d2934d823895cf97ac652ea527557cff1d66cdd2c3531642e9c90272fe9a9ba6a42cc26e326d65f70635b98215c98a6845b6225c115191511152912fa07828f02ecca35bd59b5abfa935c9ab4ca8de2fc957552b92cf3f4a4d967c3c192623c5322ce29285a0c499acb1cbee59c80c499e2f6f57c24b62226378c6689dca58c62c579e046dd73297d43f5c2ecd193e0da5270ee85b9b7a6721d7b4dbc6a40ceca424f776b99971b1a1d4248c939b4cbb9be8848a1b4a4ff095ad1ec88730397f330ca527bf7a20515c128f2c2b32cf507a326e6b527a92da27891251abab573ec47ac87ee9a752e7bfa5ce76b4f9ad632ecceaea958eb3104a4dc2c0c1a40d711ec3b7e138f541488b437c4f29a8b830ab7ca2f4e451b6b4fc04c2a5f8fd97d2932978cfbf4d5628a535323330362c3242a4f08a9c6274ae5b6313942268f06de14e9e650a8693c24f1b2720e52695f0876418ce85e17c4099767a2ae8e351e93a24228cb49954c21f42cab0937422b9b24d7422c9b44c3bc14021e2c2b735f6055ce0021da01da059d02c6a70027a2305a540508480c1b7f557635350ca011f3253356de8a93e03e1518a07141b1f882c2c143e0e49da92c70cb95ee80106cac587524a023a43a9101f3560502a434510820f50fa016ca2f46600947e3d50686610ae76a84413e8c64d0b191a1200d00400d310000030241a0cc76332c17040b30f14800161b45cac601f8ae434c929649021c600000000000000400282008ffd825304b54c84d8116f802f1f54cfc08fa489d45fc0eef7a97bfd5030ae8baa2b6c7f21da5491994f4e6530f21befa188f99e1bb50d136e14fd40321b8e2fa0e98859512769c340eff282a7bf7342648a6e64765bbfa84695ea82097a2597f3e56068a690b51bf4522ca3a7262405263a18c36db737d508c2485a8d1b33b9153b5dca175de94741f89096b55563074b985b6b60eed7e45440a4ec027ac1138c9ea9f9d6632a463c20cdc6f9352136e4c575b07c8d6955f6bd67adbb0e369aa004cad9dc65c3a5cf3ee98eee43b49f7332a460476d9e773751ff726a5b44b9fa9620d32dd55d616710f92d7424918514c11fe5596c34ef828d65b42b7807d4f449b8bde22a1d3d84176ecf424df15ba4f040351fdf412cd45d167aa8f8d20efe0f36a82b4a51a8472c9d9a6ba3aa5a32a7df5aa35155f8012ed0dbc76fbdc17671c2d343aa4c4c87067282ba90a725f6c768a7336ad0d4a85ffe4ef6f9b800e733499fcb9cf92856aecbfc37168e4a502cb4bb3dbb626728e94a7bd2b25f91c68da9b243f9a0b96b0177148a6920a3ee858b439e17d4d70195c8d187b68a331b32e5c6d6a71edd5943c8b4280aeed81380d5ce91e5364ecb930feb226c77f46f3df9be22ba7a1a5f34ad371e24376eacd44b6fa9d04b8fb695ae41c63a0813a7e489c551239357cfa52f647cd4ca1e40596d25029d86cddb1a77b959cf452756077adda3acbbffedc3ffe71d8125acb9ca127045ae5dabc19ef88ac717d2e42804b59c69a45f1644f9537df5c809345b13ab93f242cf6d720e127f76d77fe89b29a59b40340522af28561956d1a2d35bd3bae067a3261f6a991ca75c8c260c53baac6a7f926fa13da247ae2f14171c4f48128427eddd6f3fb2b69bfdb00663a02fe9f9ab109e81167c37c2f1e975c04f10d5a48ae3900c235a4002270070cc6bba72d26eae66088aa1a88d21ba31459b2c249265480cf6e9e7ce30040e5d34c26d749126a1fbb2de9690a04e0164f81e751067126c479d85dc25f473fc40ba0302193d884e0ebf591141bdf8226490bd364155312bf926921e4ae2eb2547a66190516135fe99e4f1dd4017206edf59f31b35c1fa9ac1a815ea7c060a5946946421c38b4ba1c6408826cb398c2928691e80abf4270ce9a0164417c54d1d6bba012f191c4b16f86e2b7a31ee4b46203a681c7212fc9303c593a2630811876ae522665da3ddcdbe5a3fd63c112026d933d2735511f74bbd20ffeec7ab551d6134f305067a9ea90774e73e71e03ff1fc4f778182059915ca9b544c0fe20f9c435235d73b62a2204dde6e5c1e25bf8ada8d5fcf758dcbc08f2c06960703d4d57abe75b689f8ca41e1986fcba470b1aa599a678b4cb8c507b3e18cb6173b750f6a8d597f4afc97b6ebb52c929f5eb2497d3339ef17befa6a99d93910bc962a4f5b2fb52c29da3411c137920f78edf145433dd2d981687fde19457e3ffb596f084cdbf4db772f53834d341d6f177f3a56cfa08dc4203a07996a4c3387b54298bcb41ccc0c1e8ff74b35418c9a840bb5199a033758cb4faea0fb559b8ad14d6b3ffa3dded374adf6349507b613079ed1d7df3f4bd73060267a09d95cb530d2a5bb57183f4839931706429188b23f524276d9d4a3d2382b31b69abe998b5e7a6df514688b2e519e4444c2f6c4ca49d2f55f4c4f175dc9c874a07db1942c8035406b9ed460b7130d88d36f0cf42a74fa90f80f9f8e77a34ce4ba796b291fc1936f07ce9e375b570f84025c73d802cc570b90cbd5df8763384ff5c29c02d5c300fb6bcc96152804f19010bebe6acd43634e7ae1317b8ba116c528e2987280c8855e59485396ecd50a61042006977ba0446bc81204e8800132e23b1f5a7b884e51e757e1076a0fc6d0f4744b1f335c1f04e4cb780058bbf4ed66308ca2e57afbf1bf1956812d4824084363d970a533948f2b66eee6000fa0e7f5091a9ddfaddad643a2391bdfad19d345d563a54206445b32c13628005c151752a1b1a446e7fb3ba420144f953d7028d3903ff0ca94469870717ab3aa58469c1b5e0f434bf49eb936f41b70acd288313014ff6b226025c7908da8b439d55e76ca6f1ea214aa46f947cdda15e68131f9fbb74a0e45a7d1326df5e015e4157190e969829cb4df3f74cfabca8123c30f505781b6e8e563e8762e5d28b9ce129376e1cb0be3800abc5ef93ec641206d8ffbc3805356b5a3ff0927f346d07aa8049d6c48b3355ba9c4a4856c1850ad74ab22bec3e0cdc4a9354e875cee2b8ddf1ca5e63eaf1a3f2368285a52e29edfad5ae99ea4692c491ba7a7fd1e93805c038f5162d4eabf9b9783f96bf4f5616c43ca72ffecb7f6464ea4347e6d5701af5fa700253783a249d975461d44ce1e4b9bc6bd637f61a657b1c794776042b99f23de9b0ec6084c17da655efb7a9f791df0c7aee81b2fd22acb360b9df15cc42af441b20c1b27da5ce69b6ce5e169af86ad4032a06e7df9c4c45912f6256f3df41f0577c2d6e4cbe3d7b7e41a8d3fa44a55729e2aec7d7e33b10bb64c04624e8da5344d5670d2f8fed546ccfb879d88b7e1315d11d478499c811fbc18d1a921e9285396f97042910f69ff4774511665bf8968a2eeb4661466fbed87bbbc17de85711a9956160296431ed6657e7ad4b84ae5fd144df8762fd788dbcf70fab5279b5678ff671509e8ec35eed3b8cf16b14b9eceb2db6bec5aa2c86be8959bef0a6418d723a760b1133b32e91e6e6ead497d1c8a7b24cf899fcbf91be71899f0a91bad2f84cc614faf691ffdcf0bc031d7755b61c42fa76dadcd102098ce5f2b39b584511ef1f4e23c667500b0d63fd6e8222c96506e0e5a28f7df87dc6f049135f5423e04c9fe9a5507fe0b1bf4d3f550c16c6107e48c85e2f157687ea84c898ebdb5171666332b9b00e865241111f9caf6431f0f5f3f2703de647df45c286fe6241a2c028ad8c19ecfc7b73c9240f0c97c348b57474029a3b86d9387e102caa7d0a1ea176204fcb0d6bb85e9f1a8e0d983b372e95963581516a5775e9e7b98dfe0c9687c19651593049e9517bac1ebf194cc3f51c01c307b0646b86c8ed44c2f0492ce92c08f724861b526c5714169d0dd47586f8bb4074af327c47460cb9f23d0929c39860bba862536a63159a06c6b0ea5139a40c195cd59a509e50c3d2aa0ee64801b993852e6f024cfd0171a1331c99d8ac9e5858d70a65c4d61c6c3a082fb2934d6d960e3bfc717fb027741da91b4c348a7343260f70265fd4e511650b5a72a3db17c1bf7fc48b742e6595234569ff344a718140b6ee44986835d2b0bd40fce3814e5a6717b17b833588b1f76b01ae7c2d8470fecd8da8ef03c7323d043dd7888bc30687ea5f7e917c3e3cc85bc6ee33d8f97d101d005172258eae885eeea42e2c4a67b8433b239adbc6ca0db58b75e8e9126afbe7a95f078734dddb2fc15d60a5eab8527a60df0f19d312167529560325d3ddfe5ab6af2d195768844c312293c261136be15a1aeb602176db2743b3248668fd9a795a58b72469e6a619305e9bac2bf163dc0568e3d1667c2f03902d0676038031daa21a3d75315720bcbefd63a288f31d5640110db0f0266fa72651530a2cdb8164925ee846af0872eaa76237539b433938aefdd679ab272f06b35d11fead0acf70a92616a0b13c11c9edd6bb4eb8eb4c0fc810d14ea8c9e846797ccc4099e20f2d58f33d9141fa5b642810f0b7b944b55db5877cad9c8d6a978deb096a7c7632134be5ba98a3b7f6f0dd1a10769f96f7aa225a58373c569f6a3057dd897a3eca33e0f91051a1b822c72674a9803574ceea939e1a6d91ffdfc4a0c30b016ddf30688e6b4f1efa0f8cd62786cc8476cb5721a958a02c7733b931b8e2eee12da61667c3b3cd14631368a65e00e70429edc34848816f3e6ed1b1bc5631672eb7194d9c1ff650bf2e02d55846d978d90ff4bf4243004c74a18ab18fe180e46caa590d0e5c4098f4b5e3e1e0cb91092bb412a3cfa18dbc01d38e0cc850f39954e26f4f79e5a9cafb7ba89429728384c62131bc6c67b0906990aa87154892812bf3ac21ac4abf153265cd308adc7999f68244c39f85ac47cbf4437526e38b6676d8e5ae5807913d1adb44f0f8be61d0cfec558cc2c7a5e924c056104b1234f4680b4130f837e0dd1c8a606aa4c2ed4b6f8c0ac9f8676d0d694f185c95e71ae4a3d0af0f66fb34b3311a79b8043f35a4d77cc4012dde6d73854f27561e0bb2503d8d578cfad3344996bb92b75797e8f9b43a56afd1e1b3fbf3ca052096322def075e566132d27199cc73e54d1c51ae3bf65a992c3f6553e55cbaf65d44906d86189897e6f432ef689c180b701dca4ca8975e4b33900df08e28c63b61f93aa8681f76c59107f3e44eabd81f8f3666fb0fd352a8e1fbc1794ed07fe193ca87b9750b9e7b67d2df80499131ab4c22c7f5d25003a9144897ccbb95b4c08db52fbbeee5d1b27dcfa89b7ce8cb1c84f672272594110677ca0a527a6e946bf1d2bad34a441c2beeba38afce8d927a02be6c2c89317ca79227ffc74b751394d18fdc26da4ebed22672fa990df1eaef588b50e590dc24a127031e0c621e9156e9d8bab4086e7efc703ef3ab3314c0d27a4b686aa4d0b8dcb5484d96eff5aeb8c861a86e1dbdf369a37e90f9dab1bc667ea88b1991d6130ab4618cda421e3b33490c84c0d25985d438964c3301119309a08ac0f3dbcfda3076ef9f0a11b1f7fe8d6c71e86f5471e46160d4bc46634a230591d7f6843c718dbd20123b63acad0ec8e339aa563c667e990a1191a676896c618cea241a2b36894d04c8d2792012309658241e2307df4d8cd8f3cb8f5238f6efaf0f15b1f78e4e6871edcfea147b77df8c88d8f3e72eb430f6fffe8815b3e7ce8c6c71fbaf5b187b77cf0e82d5d37972fb6ec945bcd6de3699334db85d82cbbe6d45a85d5a6519345804c3090101960480230f9c0436ef890076ef28187dcf0210fdce4030fb9e1431eb8c9071e72c3873c70930f3ce4860f79e0261f78c80d1ff2c04d3ef0901b3ee4819b7ce021377cc80337f9c0436ef890076ef28187dcf0210fdce4030fb9e1431eb8c9071e72c3873c70934f1d97541e1d0e31f993b8d3e58de2ccc917c68734468ed7fc80c31a3e74002a7f69e3eb2727bb776daaa65c81b3a94365e65490e11d613266d4931849926840fd9e69bacf57e62d9717f06a1d3388ecece38044a841206246482a22d7f47da933fb4f5bd2ca47b7081e32acc354f02e12d2df0b08948e81996cd01f34da1d0fa03fc9e7d81d33d933c587f18ae1c805586252a99ee132938cbb1799d4e7cea05fd4699bafb22a1eb6559dbf08d09d26828da6574a5883eca2af51aae3b85eaa3b8e2dbaa8ae5c38defbbcbd768913d09d1161544044bc2a274c9a493320daf535771105b813740a73239579537bc9b2528dc1ae05d679fd462722a7c078049cfc91af3d413374ee1a868e14b4f1d7d67bee405a91107208aa0545969d5e60d723bbf7a3ad2313fad24f7534249c87f49f420a57389d00abbd7c4f2404e6e3a2f054092d7fc04415960d9e025cd8f1a021d3ccc93c9f55bf6d20c806e886575918a1cd2abf60cc8222359d62f15d7641559d57cb23d21401186c1ad47789375ddccc0a64db6a19f1286389167abe9f85af92fe92e820bf17155ce56381e1d9deeed936d894e2ddc2d05baed72ffe5784766c84382d9466efc2bf336a9b54cf9150a7abca5200203803b22e1dadff767d96a4299e8e2b2dbaf80c14bbb09e7a9f3dbb2b908ca5cbb12f151d17b0ba3918c205fc16ac5c54346e3188a7f29639460822b6f6817e4f0f6a303a31b0e1451f04cbf3f147893791613ef90802acc6ec0a039bf81472719fc3910fe5a9205108673874ec8808d2f76acf52e8d3df0b96bd2ef0407c49491c74167d842046ae6f175edf35790838bcfb6a39e27e0a041178e57b270c0753485f553ae2e37f62291bb40ea13c149d9418011b2f341c0c2398efa08749a5a728875648a5127400577c9743f3fb4e0ad5d9e51b2b0217c61ac1b7c6d11d0e5a088c2504e3ed3d0b370ef40e5a169468f4695e29a6d1d163427f3847f20165d5042fea6a20cdf986205b09d24098d846e1f4059768e7ae55e7a74bb75f845373dd157bd740203266e5d0757c8d5e4991539c02ebd58722401f342d15ccd20c2c4ab4974b5215fb1034bef3d1131380912d3857f0de743031019a3f69780e61437d4e5aa1367f6cb855d637e5e5010a115bf656b33a7cba87d9437c382b1cdbe6cfb83ff6594986ce8e96c4c8ab0b636feaefff0ee7ec3a0a0cf7a2d30195d4e4980f217398e9edeedf12a96d2921db8b380d7b181896d3fcfe3755f93206efbb68b3e457f79f6bd1b09b78b31305f5f1a047be884704c5dda37f1211077f12fb3803e8bc039db96143672fdf4194c3393e2f364a1feed5f141f073b5ca4e268f34fea7bfcd55d25624ce12151a312ac6a646c55835c2deb8437c5f8ccf7f684d29855ed191b257a001ff47f88f41e08fc70eb4ea6af723883a7d338196b6c70c7ebff992c5604a0537b6fadfef554a9a04eca5c252a2be6bbb351155305970e6f2c974aa73af10b8c066e2a99d6c54dfa4fcf60351b805ca84dc72a73b77ed85ea6a29e9c5a11dba48f0a708fd364fa20de1ae29f4168c1039411f4161b08a6a9cd3b9b9079b62a8d0f4fb4189c5ed802048964f7f1b68b823ef9be2028c101b3e760125529c74c0fb52a9b4d73cf18bbb02964a0b5f8f730b6d8a6224dee5a505fd36382613c380ed1e9c400c77b641f99d34c64e163199eebb907ddd9a3f0a221c4db740fbf3e1e9ae7afa7ed6d72a44227f1c609f6d4f989e2464ff826306ac8f3766e0bf5ff1eaa519fefdd3964aab3965e4bb1e7720baf5832ebaaf0685f0bc516c5feb5e35c91c0aee24d14ccdfb939a53189a8821c829a8cc17bab7d99ca1b540b7df3c27f370790bc2424dafcda58e3d22253f38ce965054a143b700be65f090ee37ba7a66e48a97fe0a5bf0daaf331b5be8c7531b4d357691e3646b4da4d502476e46c5255403e060c20aee70d71de4789735c12cd31b377207d09a66557293f3be0b51518673b2a2662e0e42016c197db3058b0530a465d86699d258d2a0f9a09967d8074aeed9172a3bd6dda0657205e17158ffe1ac13860607b256ecd61e247ac635f622a8ab9b84d7cc4eb3d57c037181f056653baf0dd3ebb83e86e54ae6f527ba9732cbd1b680c4b3ab20093fd1dcbcd0601fea56a97aa5ddefefe89a6f626adbb8a6a790174cc1ff5d866580af804b04a08b9e9000f44dfda3e816ca7e4c421ab9b8a079cbd5bf6c94736774946e5fe8b60e801f0c84191094e5e9377e55e586f9bb9b4df5c5c22bf6b1765dc34ddbab600d10e32d681b42eab31c0a54442f4beb89493faec347dc1bd321b0dfd369219b868ea079a361758e94682b3437427af62c49bd1baeb06341c040c5e324f94814378118bdcad0d47b8b686f30426951cd0dbbd8351fb4c37a9deaf75ca664e6759f948b92c8b36836d5adec07ec41b87fd524754fcf26a6782cc8dcd6cfb2cec5be5eb19817af955eb7618806cf26021b03db64eea0ed414000279f958acaca39b1c7b25be38cdc9cbee87e5101a049158d6a9178c322419bf0de6eba4674490b6327db82de02f6b4ff05d3f69eef99e50c38d4dc2292b83d528eb23aa00ab070f0083326a40b0ae7b2f33a8f5485627001aecd0d53adf26e7428bcfac8fd286da26e69240f6fba2f28b7b0639134286182d13b76b22755d028611b41d93a6bf2fbe67f28a4e86410106cee565987b6417acb72f4696a114a00fdb8270095a275f02c9e7f8b58e9494b70501d8840c61b66cb4ee581c10c72364adb87d12ba60e5610888ad8de5d2192dbaf4b70c729349d964bf4bc76972f74fc963c31333197c8514728760f6c675d635d1e72013f9029c46be41a0e61c3f511901fb2af0bad46532f13a7f3ac3d18371812ea15012579736ab927d548897b565927184e624eb3bffe83b2ef01f61c1f868d1cbb1c5104aa3fdb6648f5afae7757428a49e1e23c9376c40c821a5905798fc492137d60592dbdf68330503eea185d8d183086fe7813a94b4662060ba83623bdca68133de4d5c890bf9f62f3677f2d25a7a6555673904268f0f20598951055ef80cca95f5979ac447cefa77f87933f00f4f3af3a42506624b66b8edd488dd28e860c89f7900f1abee4629c30285bc5cabf9435e3510f2161b32842cff9773d3de068ef15ffe64668fc51bdf7a0f19b43f4fd623f75994ae9822d8e88974e4bde74fb6a4f5b7f0115af4d789b97a245bffc566617377891000caceb440705f546e1c1f12e989a898d85e5ce5b17499b25d79ab8ab339b26e6309f261eaf24839d02c55b87dabe0bd6e80d102080816a23f53170351368dbd6499aef1ab162affffbc9dc0eeefa7dd321def96077a6a5e30c7749acf8635916e7ae77670c3ed8e2d013569d1ecb3cf544e6e1357433f9a51b5929abacf15a1db045b4110b28e2e46528d3ed3dcbdaab3a433957fbe68f38437b8cf9c5e43dd0b4a202842fa10314662d866ebdfde1860d2fcdfe175101fcf23ebafd080fb3db86580ff887ee5f083beca9fec33fca37356e4f87e967b48e8df1b4f72dfaa1a544d548bf026eab5e81afcecc763c181a6a3753666137b7aafac6d693f5d6199a972e746712027cc4c4a998e0843fe8cb47e8f7a44c2438afa007043e38e837cc8ffcd7d3d65512a942ac05b167e78763843e534afbbb31c8ace0f53e047c4610e6e069cbce16169bea6f0f661c3a2c4955bc0fc1b87e67f43df39e57e2a57f9817763b74ef9d42f9e0095e314e4c077f743010a0ab9c9486d1915b1f0f60171e190194db4c3495cf9ee2a080af2d1e383e56b13d39770d18c403944633f76637e5c32701d6d5fed209bad8a2911457a8038ad4600880acb08e4fa5ce5db75d3ab4ff3ad46f88dd17b12dcb7d54c0c26db78d8a32f26fe55b7adb0cda413bda7c08599adc774421f45f60cb9c0c3743cf28d3567083a8e146d01592b9793615883415d4da2ae5872c67d22764c779bee0861116a69e00cdff64c60acd1918e0d86c8f14c734825ec548f44decad2da7d22109daa01d96f725a1bf38253fbcc50b54142da05f618de76f12f09ab81107c829bc387d5e43bc49672d4e472b2513ae7f0aed79c5cdbeb9ff53b3f22cfdc665095c80c8c50d5e52ae0c3c52253bb1c04be8cc1fb91d904213943cfdea5fb9f33594b6d173cc090c28735fdc8a9866f84b9fcd9e2d28838292e69293aaa56c5b81ee4bd5d14feefa7f6e3311640ef43967677fd59fe4d39c25c5798f59990488b738ddeca67c523a29201a59f9b42654b4b09f2943f852b617571aa8b1f894bf6bcf5d45a3b15f79a6d079e9d509cca05afc45a84b776a146ede397f556e94ca9874259350147e486ad949b9361c1d6ba95288a093450744fc73928419d8ea393f4305e3ef8bab836cc522781f399bfd3876e7152b00decaa536752d78daf8f54aa148327a7c8b6e2dc4c9d842c0531c6bf2f0a75a69f1bda05f00e72cb3532f3c6b80d0ef6bae66ecf74682af77916d488b3a2bb69e5ac44bdebb69e2ffc22ff926ee88a593ff017caa6c162d033bbc504a2c05f16786ce2beaa74404a0c26abf3d7369bb2d9c97382c1176ca84629689983048293ca8ece0583bad0d499a606b503184b688f7d995a2bf8066563225f839f0d7341137ff96d3ac6632ca73a10dc142496c8f7b55dcb43daa49eea2be6f5dbeff0793050e87ad57e87abd1bbf3fbf9e4fca236b10df966dbd4eb2e137971e69dee64cfef2aa0e993a1bb94f06d75cc946d4d70530c65945f131b5163f93a5c82207b3720f371dacb9c82fbe76478b42c7dcebc9d631b929994f4be6caf8f709685237b0100d3d4d4661a26865358bc047024ea9e54f10a2d1b612ece4b7d93b41207d7042a8a52209c262fd210d11d4a4e93d76a5b013bc693cc68f6e6fb1a9d6e11118fcc136d4ad7b484d05f1d0cb372aa038ef7b55657875c6925c2cb0e003742f043948b4a44e24c67d4aef9e3feb49dac1c1028e05ffb768bef6eec8c90f77e1ad6ee9004a96bc6ceb92a29d3cc21bf675cdd54b3ace320a51dd31784bf490b0b6b26b9262a64f31fd00476d554dbd2bbbbedec0845dcbde1a4bb81fc5735919582b79660045f8476a6e7e3ac66889ecaed1b9caa1a9c01987fe156c3d3eb28a92c903d80c54f1a904cbc16805073da47be1de98662c4c76453352ea458e20cba26ab99e59d1c1c21e2a0280fe2c01e024c80785faa98e4e906cb1ec99a983e3b14ac47a5dc4899016010ae9195751978a2b5d4ce72c03e87ef62056b56a8a030a543242b85a9438fcdc180c33199a334f37639bdba4febcc1cde8beb90a68be0c7974eb8adb2876a0384b4f85f813434e1912bdcf55708cb832310a03a114405f00c96ea378255a5a4b37ad097232ccb31b807abe1e9d7dccbbd2674b705d59479b53eb0e10e41fe5c140fd8b3ae7d106842afad2a6b383942597c246d888f9188604ba9a88f060f897ef1a453054daf5b4360146a9a04ddab379afc2cd5060966ea45ef5b3ecfcc16b9f16b1fcbbe3bedb253b5267b623e29221ddf61c77ae040acc47cc3bea36a86572b2584e7904d1b6f379b315bf2ac2492a1876d90874bb45ce2d791ff043c6e4b1b00d563e9035df9a9c65884a024e466941ca710af469b7282f2c960075be24183f136df15c3d85d15b81f04c5ff9039cfd5cb1890ef8ed6e865bf39810378fe2aed1900b1bd2e110b33b7c5e34a14a18cc3f6cc79349bbae63177a1a56a929fea261b5e0d270ea10781ee3abcf7bbcc8bbb8665451a1c056bd987ff2cd22459809223dd73b64cb29fbe155d7f553aab424747db5501be10c10a228a51478e112de4e6954f1892a015386ad6b8497c0b8d7807dbf6feab93694237c64b09fae08b918226b6957df54baf97fc59848e212a804d6020c9d27601178f13ffc6e94a03dfe88004c6a9273c824620d4d796274856b2ad4ac476f6086f4c135e7a3d504971ab91a6b521b9dddda89cc2b9bd6c73f1269b143d4739ae948723b985cbba1789965ca5f6ad2524123607540be501e8c74b4a6a1536a251ee5c02aef1971a56a6581d784e5aece73d122e88dd79e93456407e5987c60b214d9f7abe265da417aa253b6d300dbf08e5b9295e26a323a60095f7d878aae3a3d57e38a3ff59dfde6fa8007daee464f99825be1d2451f200727f79396b3b1bb67bb867e2c4898520ac4c5225ba02b9756afcbd54071e06ff1a2a6d6b993181d2be1eef7c4e88a1e4ea3618d861a252df8a33cc35d2e8bdff834f6c33935bc66ef7e342e38b026f3f9f34abe94d7061aed2ae4286f4635009a9657d7bf3785dc5d06dce2202072914a8e9c31e3d01e17a5d1f8a537240d4fcbf028354fe2c142c3bca4be11c4a9b044f8232cc6224fe576284181c08bc586ab39a9e19f0b6820137d303f790d260d07bb7ee8022d651bd1395e14e1e68d10c9759fcf11c96b186fc3ef5997159082f175d584c9fda1f33965507243df9ef4e262f9077849ba776df83a0782db5f9649de5b0b3d05b7f4c3f4b3c9e82e9471ae3d9fed4df13f1d97a55d5c0678b9d66a6048d30f22b5a661079f36ed5e7fcd24d068a20ba35198d1fa97cdfbd6272e2d0773ee2581a56244591751e595b3fca0dd92129413ab1a314334cd4183c3d4d9bc7ec6edde35a6238516f8a217ea3a98132f3a2c253ffca05c08e1e9831ef1a8f0fbb0fe4611696410a30df5ad511870bd099860f8fb53639ffcb01fd467964c57f140b345018f8440b0a0dc4f356bd03db40ce8259e490f0df258b8d1b88e324c15d6b487440eb5e5210d23c64f1d886e0587a44e58e4415b0d7ca49d57222fe8ed7391ec001fa05608af1c87a79c353973b836b437862a004dd1d1116d88f4665a924985add02df27a7a6b1f8e79f9ac0b9a7bb0090bccb8983ea506f178301e035ca174425daa2e906fd2331bdf067687635481b8cc414e6f18941e3698c9b0189c0ed24351688a65d9a8a805ab5fb37c614ccb5592b03b0f3814e39d2e2327a4c067f9885200f77c827e13acc6428775587d27caa9ad6bb946cfb59ed8f1eca96022da2ef90c810ddc58bc0c777ccef8bba6ae3a10a19e6a27ed95d3ee2127fd4f9f0b14509ad2062578c8bff1bdb3f4ebd3068e21cdca392e897d0d9acdbaf2d2a88307f474c289839356adc8413411fd528b5031cd94c83572d33d890098079996ef445add38332f29d76cdb6463181b72daab94aa568221febe0029b266adf25fe176df939aa75b11b65fcfe4f716a399fb1ae81c5355b517180b030be231f11b1a74dc9f73308df70d8a379b08bece614363d7d1177dd8251f5c365ccbd0e128dd96aff40bcbed93c132ed144030c74da84683c8cad3f8bb98c3baf529f9b18b4d32148435a2e4a644d904cab98a20642512cb8e54276003894bfbf82a3719c6ac6a336db097c100722ac53cd9475e2a0060e27cd9b275b21f13b3eb777fba683f6eac3067944024565329664994de0eefeda6f6908d2e5fe25933756e1aa9777298e17b0587308429962b027c15cffbec359f67be8248ae097acda8876f9b7651f775d9838d975135859ee6f80cae45f65248f75bd742f59a1beee3509d7db8bad8472ab03388d8c86002291f739ffac6595f29706dbcc3367dc8436ebebbf0b6e9a51bc36544b1142ba0bade01f2334bbb1da5e1e5ccda9d7d0c3d352d9811f4833d2856525cf3e0813fa1dbc4a6a3e268f0aef1d11d8e86fd235d8fa07a77a2b75d6577916800c00872344659ad91cddac5389fedbe6fdf6a098cc434cfe204dec03bcddeac49490c51d4404716ffb5dee85da7cd6fe821b72bc61f574092ac3e92a6f2e7d49995e82a23cb51aa823d710075f99dad67fd9c41275cd97eba6301e7b919d9587a13e3b382c7cbf6b7c99475ecb27964716ed59adfb6814a0428613d6365bffd92a3db9ef941732f072df6972d4bd105f262ed15e1a58f32aa5d940614b103e8f22f44ae982e1838fb3426d56d36ecc3e65e5a2b722e2d75d9e3548784128202b25aaaefac7a8da085107c77458799b98a93dcd315b798f6adf41dd88a593293cfb8af327349714e7813998da84882b1c7627cc2e8b5002be1209682a807e0a64ed52d2b5b0a979e8241a9db02834d8a7bb9280a30ba6e7e8228beb5dec0ae58746ad3c6b30bf9701bc3a0fc747a4a3278cb3c89090ba3469b62575b3593b0db9620fba630da5a852190c34fe5b781a1bf409389fd5884bc36204e81d25782640516ebd5e79ca9692c424667cc4144d058ea86ad2a9dd97e2b1ce6da3dfc0bf451a0ff89dcf42d55a456d4934c31a470d39062eaa37f13a11a72e773db02ac861f878aba6333080adfaa1a3c22be25812e4ad60769bfb7da0f0fc6d961376074fa9f1193f05aa4172081dc20a7106df72fb6a536783ca338bc070f9dffe25bf33dcc9b0fb4c72e2077c18a73440b310926bde740cfb5fe19bb88dd7173a12749332cbc8885569301ca07c6636d94efcd991761371992442ea68625c345220869977a89f4b47b17380f86fb02b39607b856668ad771d5a1f20a5c9b362e7ead89b3c63004358cc77414d30c4dc351f579ae3e182524ccc9e84054a88532e63b0ef3c0578a1f4be901b0e65b25e81b6ae0b5c1c6258e2463cd0cac8e96e15347a433afc389c5c182c546949c061a330654cde0f947149aa89868d92b36be9422bd689ba0512a5e4ec43bd78a2b71e464b40eb1e19dfe2056803413eb4acc202c9d758443d4806b8bebd2da1438b7a931fb75d257990f81c5b76ccc8068cdec7c99c28d89be9bc8621dbe2ae4d5cd055a918a156ed575135a46f5a6c496d70a3c3711f2b6bc98536a03ac97db84fd03d3543772fc94fea7dc2a5658016bb6b09d08b18d39be359411a4fbf1912eaded031309b4eb1cc4c02e0b67a7a1fa098046eeb2a46aad05a06434866fac31ebe08f6c59bdf22430717789514dd9721910b775d03108efc9cd4f50af4fb25cad33dcd1152c0a0cf1aaf1ebcbde7a69ce97a571d7b1489202f6484dcc201576e24eabe42e49626e74984868f358112f7a69f020c35c5200b498eb898479f9492cab10b48d4ff2cd5e99770ca067df39d4af2c9f872f2ddf5a8534f6082c0c48491ccd7e5ea88fe2b48230f7f4fd7db504313ce504477be3460723f3f45966b49b263da3447dbad41c062cf21236b72fb964d1b4bf251ed27810371cf0609cbc565d5bcb2b42d770494df119c7c2e36b3eaf7198eae1d13a9ff1b3c27e220ea720c75992adc885406a0daec277e670e6f2aeae8e9622bd5f97c280b5da2342e82cb34bbd9383ba48f28affd15fe9394466a103fdd2b61d56d86637061f7e1c257bc1e258854d017dd6556282966a8611ff6363d3151e198c4d1e4aae1ade30e25fa9abd13414001d37d00d5b9424b061160592cbfd59aed1c95b9f1dea0552f9b133bb12e67c541465636ec4b4a40423ff58665491d92ca1e4fbeb301050a8a5d60151588e72e4fed026874109fd35b4cad7e6a6969c05789aa845c0fd8b053313adf87755076daf5632292a75260f6f1fd59e1aca539774075cc7bb0d13236d925952714486440b025daadc8ea34b91688573b229149ec65ccf268ef481d829a01ca638343305b443923a64629244f066d0f68d52c3978aa097537c2ee61908a7376b93777c1272c524b819f86ff5f93115d7b77aa7fa2ee0f71e866026ce7e50fd9f62c039a68f2f3d2e55b544f93c64287df0ffe4db1bdb9fefb163fd6de91cced0e823030188876dbf8901a94ae50fb7c322e0ebda6c1449c4c28846faea0b71e86b732c68e1fdda299260f8bba571045d071de08cd2a61e25b3f8ba1e6e4dce751b5a0f9f5fb580946d8de21bf33ffc05f07644c26f37a8d0a534b649e905b3ce3759e822ea1f9817cb7332e53fae3563cd2e27c93ef29bce44e6b199703a78f3f5c5f57c8c4967b38ad73c80149c5ac93bf61274b51f44fb4a56a572f176715b5d7a517daab59e09f99a3b6b3d2bf0ab44d68af4f7a726d8e855e0d6775eedb4a27547025e99885704abb25ac0dc9faafba088a975546b3508db7b85acea757259ec45ccd9c1033b2a5ad78ba1ef43856547758a43edea66decee67477889afa03b8c25ac0dd87cf0702d5b8900ebca99628f38090afc54aeb5901bf6d37f240bcad74df915ec4172284ad4ec1462fe89ab10cdb8425e6c8d74d7307b6fe4e89cdfda19d288dc32a5ffe5e496ca117d359e9d4b172a7d5b0caac19e39e5900643730513c105ee51fdf38a6611c22ca4b1150421109f8a4c682e69ec1d97241d426f06cb9d83c8ef295335849462b1ea5a09ed9452c3f1311f54c5d875a830f903126d8871f23754202b2a587c0524078f67a012135ea52c8eea887d6b39bed356003ac6f5677303dc146a84ad3aa0e6e53ae704c2b52323c49e4009ab338179f72d3e527fdd50e129779950332709476020432679d6cc96ec1624cd00bb68903a93b1cd90493e22308f17648e8fc27ad74c975bfa5a60e409d33b0c2dfae3e4c564e6d92af47ec02443bd02babbd6731c98214d2f20b2f92b6fd69c3fe3afc025c1a40d521e0ab08a12d817393dd24e1c9cff8e729f27491352cb554bcdee1e43fb4fb5f316b702145b0ddcfdc1213fd25188b64f730ad1ee210d165b714eb210e6f9bd83cb5345020f11b3788e5ff15b7c040cec4c9a142efce2e040095409f5f04e8828b28a06abff90b0e5fdab67d5c7105b0bfc561733be0c2d885dbb830185c9198e77673bb95c8e6c7428c0fdfd272dd81eb0b76cef36a6c67a3b8ace17fd4e8b384f9175983391b53730e0d4b92a3429720efe785789363de50de67471684501f584cec3fb962986da5614eedcf8083ee72e41799d209f894219e53ce58413121782f95fd13a4e2d8b3fb021e34871b785a4e4a4d999c4bf8f0bbc2a8b875440447adeb85fe816134db556df88beebd4b610c719c0973779246c684f7d3f397a6a3ac40a9c6f04c7283955ed8ead08bb78833d783159cbd9ad247f43cb131f2452a6d0bb3ff0926915206590c1d37aeda00006d6797f0e159e8dcf8f2889d891d16f72b427209e88e3558998e790125edc65941b370db17141aa43127011c8c2939ef0c65ecf992e2b1354510121f73a6a09e1a7ee2a5fc91948b297467be2ef21a85d7b6ea96052a9833f26cac1a7df1784667a658a4668abd9d3b0642a3a87a117f5b840bcc69643d1080a258424f85d2d7876b90ac0433411049a98670b7ea5f8295175dd03cde06edd7735169f1a9206de9855aaed1cc9e6e254de9a6f1e948f979c7ade6a5bd903c9e361873464d8712eb535e5ce7122128adb0de4574ed79cbffb6f3428bef367f56a1ab49f334ec7abaa3ab443fdcebfb21cf4fa26a19a5cc7b861177389ce139c8169c860e833daa2f9e2ceea536446497ee91106bc343aadf3b0b62f483e130291169ca228df2e0e1810fb79c3869872d0f4d79c7edce5ec3fa36faead575034057ee84efe8ae3b79778351740a42217eb4fc2b29305573268105198f4b4921ea76fde3adfa7d303ae97919b2197d48a458dc8f837a320cfc9c13536d949f18bc9b186630db3efdcdd54bf953366168f202d8d67b72acf9025e53cf14ed168cf5430eb7962253e754c44919543a64c79ad35a421b8724929a2b25ece4263cb9a0317e6b2c09b0d5bbdba5089b3d5d7ebe468904bbe20ae88c4d4907b0552811cce59002d6321ff6f2be2ffab10e679337b7f2aa8ccd47cb6626eba7be8df1d486f6f390461b6218ffec90517cda342db1d2ca2ad88d9792e892e3727c1da9b547ab2bf7dc11accb3c709035390a5f1ad073c4c2c88aba1e40408c3b2561ab511142777915df0584c5e1d4f35e86f724a4c36cdb1032e90b99f5146c2427d8fbc3036fa9031317e0faee51304722a1981d4df6b5e20b878e33b6312a483117456d792c56747e8ad46ac8b774b07ccc6fbf001cbd7d300e2f59ada91b6a388c43b36cdc032c42770397e997cdcb972cfd139dcedec335f2110063db6c519ccf0dfefacb99af7ac738f57bb51b43ef0fdaf906e7288d09844db963ff69320d120cf13fadffa8da2edea121ff243d1917d0c6f17b72ed4bc0ffba11e60abeb42e990dcd393c9e1bbf6a587c9de3f44ef14b64562e8505565d4f0a3e0647faec0996924dac111295a1bfde137885257b0d868f9f2a748723645dfc65ff93d266ee256f6544336e2a88a736b90c37c2353b5d83470c3212baabbfcc023a19db83dc6582b211c1cd7132baeb9f1ab3d418685b117a6dc514f605fb23b9ca84ad4127639444c11444e7fa32c2553e4b72be7937fdcf54780477ecc7bbe896dd668b83b4431a1be15ec9c0b433db7277ac647279c7f0907d127f0b95216fc13efa563d080839571b9c4f6a7768700a6cab0d7e9339e532db1d38c6d0ee746a96d3deeeea51a7f7478766dd381618929eda0df8ebb82aef3ef30d43b6825de933ebdb2cd2d4a96ba911d2eda12afb7bca933412ea1f47665b3cd136bdca63ac3970b980443056651995a9a42fd7963a8876a33e172303082c353e7f55e5513d02d36e51178a1ac971321799398b0b8133364172c5b16c3298ae607160a89dca49327c78e7a27530aff1e2cb622d6099210245898b8392ec88ffd621efa1077c44c2827cc66f9d12a4b31ebed2b02554d5d66bd337f949b625c35b16f3e5196f357519f6ad5c887d8a3ffe8917c47ddee06d60fe5eceacbb66a5f3eaa6695d8c42a7f412382518370a5dfa4cf947a0e045e3679f21a0874209436aa620538d3640a4a66162fc41d0eb50b1d2cb0591e79e13e51c781f063b88cea12b63e00cc2c82b8b8d038e8e348909fa7f5caee9167854f6583588b70d2629dc07b4624520fd60277a396335f08df7161b9d1dbae0509359d68f0e807f4b3f8ba3a3d982263aa562caa27f74728a48f6589c487297d982b62f80b394d76e5dc0d09f2690ac26c952728c6fc906c2819f36055ad8e49f17da79aba5251883fa681e88e0fc88ef810ed6a75b498254080d7dbe5811cbbfec3f8c78f7c0121cb1225bd0fa788a1d14c51b0c978fefbefcae9db6e435366ca0ac25b3f75e13a674e7c7e1d2a45dc8efa15b35ff3e0b60c6d0087497823eebe3db00ded6ac53f9c2e317f08ba294862971f6a6feb8f2f74a19f89a9c3019cd900842328ea88628235221738db57f205db926f25badced7b785beb8c2c951368d12c86616d446765289771e4eb490f41a58706b7e0cca963c680be6c78fffe4a2074268089b222e2414675dbd4d7f630f10da4824524483aca37d5e9da42a7af3fe7d5b3e9c62b24a6f3793bc8666b000de25ca79cec11e8415bce3a6408636f25ec96c936032688f902e3098824d45dc22ad051a4af779ec369e30c2c6ab8f69e2792135295756d030fc2936e02e9aa729da08672de6bce32dcc0175a3af5802843e00718d6d43a3bbd4348501241bcee1c2999372a06e50a650b39002a6e2915bcb794ddacbbf20de44a7c6e667946e41556410bc37639f398196698ec981e795ab15c81a952de3e27789957f1962c45e19c0a586c4e5764cea489459d8f2a1906516a433a68669e193caa40fb62a366b846de61ec264a14418e66c2287d8939849d0a20d691696c85cdb9a92530d897e33edb4be78dd985c7417083b0f50866a6dd68d3dcc48dd31b97d8ef403d22b654d9d2d84a9120ad5c99b3f488426d54fa3e5b5c83358474a4bb77e69b8f72d6855c829d7c4924bf0a4038a07a77aac898789414f16c5bee99eb4bcf67d032fae4af3d2e2c11602850db9b55875a72f7e1f31d96d4d6886863a2ce200142325b307f671647c25ac5f6640b0e1fa6b6927225fab021545790b58d225fac326ad213349da55646b66d374a37cc94deb9ed856f38d1a7f8587a11d9e08cbc70ab514f44c94af1d7e39d3b3b2c9b7f4d9fc6f5d7e68dfcc0e14030acff6cdffa8d7edc0e3559542812862b99961cb1f99fdc6bdc987eb0cd60aa8ccc075c3e0d62e3da6bcee3e36926bff727874d5d0f5a961178497ff01001c7f6a677f2b508e87f75fdb3ad4d4d31b942c4d86e5f4a9b765208e84bd89f2093517cd386f87f1fc5666597e7ed5d08706c9b6cd48c1f1f7c6cb273b179bb6e3785228ea0928e00cf1f90c4933ca570cde7a4d3ed743015d0d0c34cb8bccce4e9a8237e7bcbf453c3ac88e18be4dc00f6bd4408756a8cf89ed395685f5e27a5362cb4003622b6c195c3ce1d74d051f330391cc59015d65fd4039ce354e41df6ae06b22638ed62a0160e31b86f03663eae6acf57c4797537d6aa956660fb7d02d4925212080a03218341aa39cd46496d77d9a886b735662acd2a9912f29e384ba77e7dc44589c3a0528270f13e6da94a8eff3bbd6b740a03618ae04515483eac930306c987e2ba269e4a5e952a6d382ea284928e4105803d184bb69b13e937a9c7afc8b5a6e5cda3c7a9808b8c52f18efa1686df4fab261fea76d4a2ccf34b97eebffd0b366b37b4c05ccf9848600b386674d161077b1efbbb05d1bfda53261c3bfccaf6601b720aa99c491d28bd206620c70ecca53ad92433539831aa9608afc36e263d1f47ac9083b59d7d76b2139c93bd28c8fed52a3bf56864381fe12da884d0d20f9ccf0ca09284dbff8783dafd178899e2f730e3c98f6c51e37c389edae6cbf433521f93df6622ab576a6c3aba24f98618493ba68ef63e6454b2d51496bc10c66f2c3fa979b4d149e6c5ddd196c340df3573270006d1131820fd63b702b8124d0447d5726e7558dd3ca197f03231c833aa337e0ce6ca38af7aa597eaa9915361559382aaa117a66efd7aaf6d9e5ea88123b87b5783602fae46c71db4dd824aab86f90925a73764817eaf526afa8c7ad510b5cbd5696efc6e52744d859547af221107963073dc6f4fcbfdf39905a1f84d5610ccd3fa01b9a2dec1f6b0013cddef3ff265d5007adde12fcef4e87bfc8390263ae854784d0cfd94d482539b77fb11c62c5daf96ffc3d3d3d17ceb11ad513b832b05ef30d3a64adefe6095142c6b5bafc066d1e23e746ec5fa77fd3a17039e8c3a0da781e05a29cb28963a2e70bbb03d86986e2ec573c3f303e5f6e33be8f40da7ae0f78ff0f1bc6cdb7b5cb108fc4ecda25ea035f5d7cd789e8556b968b3741a603f9986bce7cdfaf96b60e84a67e85ea5869607e35a98ae68493caa483d850cb9222f5d51f6472b8398768565ca5c6e49376cb6def7954b73f912abe3f3184eeda4ea086f533e7229427f965b7ce953efe51afd2e27c9db979b1bc94bb46f92168aad8d58d941e3377b296ee54007057cff8f19a4f0e908e74d053ac34d30989dd717de5b6ce93b6da3825e44fcf064bda1f628a08935f165421d445b28fa1ca671258badd1fe8363f7654dabc4943a5ea040ddae83c6fec7bb49390a25c7617e73ac53cb834582f3ffee2931471e7de1a6e6f7c5392e77982ab29769a2274bf3912f9ce4ddf97478dc2e8f1c692fcd383f6d42120ac6c9fe255b9692ecd40ebc457cc6c402320148ceb367a9621b30eae53b4b7b980cc87c5fea5b45d0e40078dcc39492544a2c7fc033f47c4ae21fe7e4beda88bd86a261119e0ce2f29554948328607c5821118903a69de518dad1a1099cff85d90600169f73b803bb4257cb3845fffcdac03e171c20b263103a11c4a40c5a9e71729b1ae51c7ca48860de082373e159af8fce868ca68799e9a2d411460891ef6750803e40987d97cfdab4b78e359dda0532e9d6ddd061b1d2d70a4fb75d0bb7dcd117346dc25f2999b38ea3204e5d747087d65971ca38b729e6759731c6a4a4f4ad382b5c05f7e46fe044a815f6d98447454211fe09a4627e10361dd156ba3a71630bedf6f94283981f4f4d1302a870fef86e2153d111f588765caaedcb924ca42577d1f177edef355b448efe9572294caf19fe8e6e613c1650c04e9028ffd83bbd0531ad15e16837782accbc893d27d86809a5575d4ce54178c66254ff40bf1f104f22cf6d034d701dba7f8ebb5a4e1456fd7a9998bb08597dc13d63b2790c167b33400de3e32b49cec77f8e44d14c06db50015c373321e4bb2d076c2cc9aefffee01bea8847d902ff2668b14cb4ec34f165827e6c5c2e8591857d00b3ff2dfdfe7a4f86333ff366c52db60d6b8476c557322fbb10a963cec0875e4c5d00ec57198c5bf5d2ea2a4f00b76d163b3d185d4e63c47ab9d126ada6414c152851f32021e63fc6be3f19e5c396da015e32366a63c65b627f289dfcaf6656e59280b021705cca2b242fa844e8d14b8e2460f1f235824128a92c4cecd47c1fe3c6fde81d7bc949cf2b838a0271d72b82dff772377c0c28224e4ae0ddcb4fee85ed827f87e71b85f513beb5dd787f46828911cbd72bdb0afac1313e0db9858171539900990ff242f4d50bcbff283927768c93e2a2e10c185088db296f4b4aa80a4ffa18f4e0e637623bdc6b7d40d21242d15f466ffd9ba907c3fb6a933528577319155066cecb5efe88ac7b8d7462b549e0d7f2d492982cbd910e4b7a8b18c26df6e5604310e342c06f0850131ee8774e9a40818f95948ecc0100b8dd23cac95a8cc9a5edb8e09181347ce265aadf021268f0dcc9cc5789a0ab1eac1aa38e223b8fb725098db4b832b6733878f6df5c06be46541859093e27811ccaeca392b82d8562be70a9c9a2b1a9fdf485544a020a2e2918c3ce5e1b82c3ef9580715bf9c5a6dd90181d8031018ea7e4aa8b796ea8ad1f71e91c85f8f789dbe7b41f340860ce39d65aa74b43ec958195d409513340d4e6cd730cd3d7db3ca9f5d8badb7929882efd08980116a05d629ffdd42422926e2787be51bbd09e649179d1473bc6fa335658257d0f5bf6f5c96996c41af70ea7a35e89f6b110ca071269f8ff2d2623accb34bedcf90f29b82a2df80b8c3975ea34cad02fa6ed0ae93da7fcdc2f614bcddad80940ac98a8dce5c40e43f863ad90c48383c9244c647220dd8bd52f83dc334c782565196d68cc4d636bf23db3ff5700e441a4f4407e71f815a0388cd151b41951796f75438c7f6e4eaa2d14667494dfda0fc5d751a5c029c59eb2b0e824e0135106faaf19e8d69707b6d98e4fec531084e850ae7548f2e4d2c8f1fd05d548db2608c921550537d93167d4ca91f6e0d6e89f84d23c54f5387dfead71b0789276bc51107c3b3ee4f9f00866ac11a2fa1d90a790948cd5c247f18e0290b915ee4b0a3c9be97e36c9939ff7b308080189b22bc68c5e05d98de2afa36e9df7befeeb6ce7b8df98107a1ab24dd249d510658ff50a31b874a066df75dc92d9cf8442a4c7e7237f391ab629d06a81a780c53e4f55888a3bed3ae29378f67661a3c7d5d283e050944f53b6ff75c14689aa40c5ec6ee863de1c5360c8f81ca99f185a6fa8ed377aeb67af429e4686b1fdbb412a827f220ec4af2bedfac8be4f70b812382a85eed00953a204fa96a97f316a5b08d0185d383aead9b067a710516366b6e24538eca08fac617aa1ac1ae3509ebbac86f4cd982fa3adadcd05673448c6a3a03e7228e52fb0a3cedffcb5748118317824978a7094d8fb142d26961a6e0684fe510488423f5e891d6be3e6efd81754de0656e6b72886bf7fc472387bc64e79cd9f6541f6094012db175e04b55dd55f215249e6881f5e41d775eda162cc37e2fb76d1961b0dfb79b7c3f94d1038738342d46e1c2f2fe7a45f00cdbf29078309f2699bbe9a4ca6d93dc00813791b3c2e15fd32297b918174ef312ca0efc86180208a6e095c4835040e8c62988462b92e0311d7b244f9fb4070997c8c12db5afc6a2794a543a56b90a100b0268887a0c06a913f7e0ce00e79e18829652ff7cade3aa129226ca07a4dc1045246a80c6ff3de7e80c2d00ff2bf29e7b5253137bba8bf7c960110f2ccb1e4df2dee02dc51a8d2e67743f61f6157d505093f55e516d66150580110209be3ca3625f2c82e4e716909e7993ffa85844bd86d404c888a6b76d3191409613e3a84db4a7e9d3c60feb4378e4be5a201836c3302896b44106c6b81fc7944d264bc8d42d8c8aa51b292581a2944604f74c8db86ed9ae40c88de302a9634f06dcde724aef29e8ab9685e597c1f6d8aa30cc82c488055d354bf23122c9b7cdeb27343b54d233149b868c6bf5c7c211c5ed818956a0a9cd9eced25d42a17581b3dbe2d4a3c19698695a14ef989219ee52cffc29341b4fc26ed2f4dc8b83aa019465718f2bb15d933268a5fdaad7fbbc2c5247ce6f73c569e695eb745ca8064e30dcd407b1a11c2951538bf2863ec48a4dade3c19db9ccff2d09cb599b1f923064864ed46574b002f0b056df42d17035987d6cd1fc8314a2bf05b630d82fe505399d205c5c5026980db6574895c920f6dbf1a6fcb63dcb284756d851768bf600b166d055aa54b5ce4e38ac8b374fd4458b82b6271c6c6da595640c9f3232ab127ce019d63ccf2b7e4bf8982062d707777d3aedece14527d650ad7a3b45eec94e91732c5f2e56cc25b09d5875caeed8189c4c3c552b7aae169419f2fda5ba39cdca974053317cb425097b3241e9996e361392e5220a9a17f0184a9ef4cf4de8cdb6ef1c9325b3d2a60b0875c9bbb7a2e20595af3c8b829bf792736890d9215fa5ae27085028cc260951cc43f2d1e3f766771b9c01755b57943e14fd3de05b7b1247a2ce60dac72ac243e275373e6096e2abee3d168dd871bc71aec2c40055ebc8c222651004e50130c62f8c3fcacb6b39eac4785595e894f4b58eef3479414015414abb3ae7c37fd9bbc1cd0d442b561735514959f1a308c29985da8752bf1ac49d9a33923efc94a3566293b4cad2fb28c01855f1d8a171d50803dcc51775300d0af60e2b71e3b97654d3578841b7cdf99b1866992964b2c1388173e35a27df08e733f611ef44e287155e4b4edf5e4739aceef6556767ed0ce8723695f7633bf2c5dc1a9f03c324f0ed63199897087bb038350953f4be88b1120a42bdfdd3c41a8a2b4eece5160530f3704c8bcb2c1d3d638216d51b208bcd59f24432b4fcefc981e762126f18f072cead47aec7030c20ea28ea2dfff9783227718d94968dffffdb78677008a87a56fe03e4ae6eda1decf591b7837d8804c2e8706ec130f2ef7794ad80f4979f5c35697eb97f5092e4a9da331451f6e4e82ea0171545a2cd233acf90a5a4c8e0b75de74ac88525573b16c8a5ef68252e76a84da17526cb22ca21cdf789bb3f799528effd7f3b1081b96f271d85179cd02431c846e4a3ed775f2689840d03de1522f260854ee23d2bc4063e1ad4c1b1a1e824af99f1a877fb1855f7ed625434c0e4fe6030bfc5ec9d3a95ee846492786055cb3d28fb423687cc4e82f77cd7c02bf808da0031e365161f784cbf78b49efc8a5bc97161a605c2a47828b460f8ac84d5517d0086149702b931194cab88bb44147dd8b80539a380e0563dd3c01c0c21400cdba6341edcd645620f5937b3215e5a6e53d076660290f300e33b3f187cb182eb982887551085b2494789471c5af9477f507bcffca3c8e368af22c624512491ca09164e901a640916f404beaec1c3f0bff4e85137498fa7dad567ba069af6c168bb1ad062475408c2154b7118af1cb00459b37ce50fbef1a19b07d7353dc872e8923245500e74e5cd90d8fbe50bdd9d5405ad20da74dd48ef0c3799d58cd25b0e1f9924f6a63b8ecb65795716570072397364d8270dfc32da6a5d602e48ca150b30502e7fdb25fc1ba4ffea362b526ecff2a84324322f2fff48aafe2263d6a679393905630fb9207b3200552d77793ea653b6b914736cd2ae1ee4d9f35133f43d1de15cbb83117ba5342dc05212c82687fc358c66211070f9b6b34070edd76bfe1a37990fcba3d3a6760f6fd920f93eee34fae094b62ae263b5de557e2c00b05e1a966172f6159a44a4d57fc520a9d4cd0525c75a9af7a4a24992f1323b6174276e20ef9fc377ceb8a7a42d1c3b295c52c3ae2d4ad321912985c548bd54115897398bd1c15b823439db9f30cdf188e701f7b5c6129e9e66f2e7480a1fa2493a54c67d3fc394941e3f027c63ab0fe097a6b539c80bb20cc2ac0574a1ff3cdf1f8c9636bf3b6aafdab3a6560f0468b2102494da70b43801cd66b0235a2e9df04f89060a78af8f2d79587d1338538a9eb19bd591b2ee14b0d01e058ca58c3025a5d9dac465c0b4b3256919ab00bc2613671d562738dac50e5a471e81e90c818528c82ccba38f50878ac7e36f50bcc10eede91d410bd76d05ea955a1284471c5cd149771d7a46f1029657e09c7b74f14878c4b3f30fd54141fad5395dc8e5a1f98d9212e2c1a1278d56f621fe2a9991deec9334276c5123f78ee0b46afc414d549f1c28bf9fb4e522a2f0abc7224e2e552bba8d244d478b167597031f48c8bc28357a5b1c1aa32bf2d92fcc5946e13790a5b7514d6264451cd45553a119031bfda68cbc7092a8842b9c0981a75aef9c9008f4800dccb6720d9a534bbc0137a86507ad0125bc2d523cbdfcf4638791101a8bb289cd09a9d92b0f23d1b190f87ac4a4f770835c651c8c016ce151e0ec75a0177ec974429785853f4d199a7d0745ccd8325b77d19a4021fcc4a15345bea4b6bb63cfecbc1252bbdbe12f2006f863bba0a4ffc4b422f66cbad9e2aeebe56fd35fc575a5d7c0f19d1b6bd0b6ad4b34cd5823dc4e1eeb99945aa9173a53648d35e6a2506ae0779fd6f611e6d7f377bce63ef0d6a1d4a421d63284a4c2894c34478e7b9569efde71a7d4ee856587f1f1a04cd143347ae4144dfdebd14d8938ce42a41eb91c04aa8bf0e4564abf987b0ee3dbf59f3aea9d113c36c233f22c7019a8f030224e68e1c3fe2150324019baab6c404783cdf20830b86a7d71ba51d668151ecf70f7496b0732db0cc59215d50256d39fafef8aafb1cead6ba92c724877414e577ad85473ca340faa00778eb021ba575210a4390913ed554c34f58219f9f424643eae55e03885dfd4e3730360b095ce2a4b5d859b6b30c2362ba55f3ecc2a52165db607a9ff73fe6b8164f0fff25de0168338c47c3fc44931f0d0cd92afa698c729c0dbcf815fe4d23881cce618346d81ea18b787cece46099248391b9b056a1894fd5d87daff46d74e13aa21340364c51ed1fbf9d6eee6dab4617c1f308e574b9f8182b27be443787ce59fefc3a5266b28e668fecaabc4468212d9a7b94ece8767d64f3171f20d267191ba1ae66ac436b2c60a1a0ff8e8c98d21cb54440b8b015c29c2fa4d81861edb109f8d9dc09f3f0291b47891ca6ed9c496558b246e75910ac434ce3c0557f4788e39a16a1fbc629f6beb9a24b49b36d4441d887ac3d2a86160e70b7edbec25a64b1674d6960dd0fbc5e66686c671b805b72ed8cbe4f146775417dd2445fdd819debb14efbf6e884f39b428b8bfd6545863e9613361a44dfca3729fe731fb87654eaa1335b16bd71c09e5f98e34ea0cc287c59b05be937c196310f628b22c473506020d387652259a55f405ca8642eae3a98fadbae451a7c617e3faa73ce68e8a2472beeb3b8003ed2489301a75d20f52e18e681f47fc2bd50624000fc8b45ee1f75846c01049f606c3314f259bfbe362ac8afba4e5df2d0078b01a3afe169d1df160c7b3eff3a8690cb0818e43408a1e83f5e58198ba7ba0f8bb6c207fda3c2c3309562b69870d61769971f569ece4b9409015775e431a03942fa4ac0bf43735481bd08d93857cfbbc6d4035646d3d32c5dd582c5971c71c400b7394667af4fbbfa22bbca16b794afac0a18b4e964d3b65b4b47cdb5b57a79f5909a358874801e70355562e587111e614c12f1abe80d6a938e29de016b5dfa62a7db2cb2b4485a6ac8663eac1eb54c0ee316bd481703128b366dc173b1cbf6e30344ead2af9501f43fa44b4430aed44f8cfd7d82365932e6f4c18c4806cb53acd8f79363dbf353fec046e0fa0660e556dff6590def8bf99ed03cf60784c5975e0f2ea98bebd1e5f525d1ef39d34993137090df03ab61c8100eccaa62b89d8edd5b537f49f964d6824e92818deb9df54583cce6aab8475f0dab50c3c8426f1fe5780ddeea71968415426022a5751e63954ca89251e241f262b4ee2fd38761986af0d573ebc86b0970262593d321fa668ab251a65d01d3a6fcd2b20d9b2a0c068e09fb6472168e6f765a3c533057fda5e10f24c841a0ab8fa12d86beaf0348cd72005c840eb55d7486dabfbb35682e5eb3a622c87ab7121bce95b017c430e0f4ec7355e77c2e063c8c32c8b59e9b98351841bd873b65a4ebf65e36de6add942c07ab2aecb29bc53803732138d3e235dd396246a6f5a6f214084c50a97e06a9a8c1e504927a0007168e5f2a44b2fbe63c69b440420829f475f41c9d2bfe5403b182c6bf1ce5012b86745c7e8b91b2b14b1282c638eb9c093c72c5a3379e5e294834570a7e97d6723a00fecd7e83d427e8998087ca29a2e22d675fbc8f88b3fdf987ce7deccdba6342cf8b3156a01e39a695538fbc2eb6ec1722f0ece27a186633245e301a4caebc09a4f1ca142cae6ad9825fb824a564aa68a027e324e79b262a5e2f9879f55dac78f138f389ec5e0ae6d83cac6b67f08852cbc7bca1c5b2ff00c1489fdba7e41f5388d1b73365726366cf245a23ca07a1e5f37dccedd2a92926f74081b4c4167de66e88a63b0d660ed4be44978d8214c2d3bc4f6310189ff6fe90afc6aded42be862091c92ccc6351bd2647442e28f6857695dc6fdab69cf14896f78806b1f52ddadea9247889f636c7c00698b395e2ffe2bd4c9c10e5901226a29daed1e8b28a8d740104fe6614656bd2639781a4a3349ba9596e41fb67dc574a7bbdbe56fd9e1be31208ed35f4eaf87437e210a638d071a0052d9a2089a00b72f84f1cc42f26b42f2826292a6d4638014e2659893d27292f4871646fbf60d179dfe54346563f45d1a11672e6221eb46c84c5dc3ddbcf1d1181dd65d224842d82fdf698dd90ed048478287e11ba216c257a94cd3d2fa8decdb7aad7814127de7a153c81745e216d7f895ed4146c3fec7f07283f9a408fbf3e375d927d8e19305870f6692746e413811aa209eb20079770ecfe5034f79280674e1702db555c532b99647f2b1bb9e93f4469300c5da4a4321dc1eb660e99342ee452bc2b886609ec2914a6c17f1ad50c30d031a8c293b33b480ce91e611226bba761daa17d7371fec50920b759980a52ae68bbbc698320271a6e0867a1db911ab0f56254a7fb6efbfc0846a77d8d27ec823a24e724594db77907e87f70dba27edb04ee3b46f0483fe3408533d2accf1672cff17647390c2ebb6cb8448cf4c8d7cae3f68358c2b8234b7533b71ade4f6ec3d497c15b316508ba733cdd42c91fdf8381a1c1b2a48ca369c09debed56ecbcd1e60ae57d3fd3cee5974b376dcb8b11110c7bd9b7c5027cd8f6047e38368293af2f35234218023a102747b6cb222f3726b8a5acd377524af18d969bdee21ecd98e97389162771ae24c59cf2a48432e297d8712c3034ecab67323cbcb5d1c4bd9b9deff9cc789ed687387a0a65cb8f21b409d0b640d2971a5f5d2e83bfc10cf81fdec1d1e7a4998e9399e44798fa18027a951d3e4c8b0de5ead51b4a4d0faaecac5ecd1a7f4455c6ddf42a126aea2866da93a302a3d845aa3b9c302c821ddc529016b15e1888e09e4923854795accf8d0d9a4c57379db5b1d9235357f035e3d8ebb4afa5c3acca111df4250d6f2ee4030d48efbd3f4640dd8d11cf88f753df9e3668a1cbb2ffb0d9ae14b7f12cd69a8a470ba52f2fc1b3c15696050807351f2881b6084a9cc526b9c048c47699e2ee5587a771ad60b2a2209855581e527d8a750fa94323bebac88e7731d055c167cfdee989c6664e097a8c056cd2300013a51c87cf391f3f8402ffcfe3563b7a8256ab0fb54177e35991fb2fd17100f4e86919cd4c934d7ed27f791f8200b4e195abe33bfffd493771d2bf3cd88a69d3f9fca5cbf2d01d8f6286ecbf40750b19276224882f217254adcc44fda7d6e5827d8ffe34a0deb7e17a6dba672e548b707c4676a13a6484f79225478f139cc88797fc3510f4eed9bcb05cbb157cc8f4212fa738a336dd40f388c143427866f3cb255c731b0af14c2cc47aafcfdbd6f6abc3bd7cf4832c80c988f6e23d4d274fe1a275b407ed72572a872722f3c6be289431173f68dfc4d246c3ae6c894bbf65ff3064dc416025dc3525f3637247c84a726b180a7aca5db0a99f70f8bab3b0449549e33fd23ee62060ace995e291062071221dd1b43f36f98fd4fc9f1d926ba877a0a6c038b1b38950472e352be84ab703cae862ab5b39b3863675f6d91c533b9f82cb92a9f0dc2e6fd7dda2bd5843df943455d7f5b04b0d4ea84ef0ae888f411a0540bf5c7cffab675806d0c79ba67022aeed38cf2ef26ff7885d7b0cc5e3cf2166477ad1abba5d9510ad1f5fd1338f9e5bb9703fb95ec4cabd93c976e5c491369ba904934d1e4fbd97208809ae33c2821b71e71dce2740091e822ecc6b60e0b68bb556e460a0042cf3130a71e16f946f20eca30e804fe974f00565731066fbb4af1742ddeee63d621c40e045fe9c070f0628e15349de9431a625020f23be922e909be97bc98e9c94680c6c79b9297f827dbe86a238b8b1fb5fae4894415dc18351c4091935b3b2426298cf617f71f775a85cb57d3eacf4720c378cb2c5b7d62fa0c4e2da7bee9ff38dcf8e1edd81674bdc59d8ce7b59ce2a2a73cfbb88a10c7a9b0edd86f4055a0e4f62e96f3fa0d6c98e0317c3e710d647a6be40d4fd44ffbdb77b200aff6b9f036fd9833188cb301fa4a6752186c37287b445fcfaf076c3751cca9642b3265f7ff91e26369851bcec49a71843637169f699e10bf9b3499e03e088f630db9d13a17475cda92d611a6fad19200c7cf6ce768961079b8c76b5c357403330f472965b56cd0f253f061a6bf0cc954051376fb8c7de070ad5dcf18347189658e873c17ecdfa2b2c8ca34fbb6c816b0f8f2996ff9d9c8084be38eddcc427095eb788f56780d87f65d250c7c1adcf61cfaab539a3fe0e5f8f293b06007c062265068e7e16ec341b37b31cb7a2d74e488a2d26e0f3fbf7d863ccef0d38e27790f6dc3bc8ad2c3d16f871acd1d0c9dd688bc5de02a750e1bf23d5f748f4f4b3351edfaf176fac8789e5378d4c36fda9e6b0f33ba931cf1bc5d27d5519a05a6871aa8621c16c962f9a795498f40c3c4f59ae27a2041390bc10f1fa6835b550792648da9bfdc982c200124b9d4f8cb3de6798ee9b0baee1a1daf0fa7a79bbd04b115593c293329576e8abfca1119ae3af77ba9909b67e9e11be89c86b59d146baa83a4c036afcbdbb00be8597b4872783a51afe08734501e4025ca3e53aa8f09a20a28a736b032c009c5efb8d182ec07a0c77d691036ffeccbb9ec21969f595134b1e433fd6f5f42890a5301f396f0f58392bc588340ef88816a3b9f2bd907a10aff13af32ffb89b3cafa1b8790e5f33d6e259087126d5b14ec79fef793a19f2b59957b23de2359a197eb6b7c110f60b98123a229a40db32ddfbb89f4be37e0d28c42820fcb981dd453b8b240f01d2d084d7416f07411aaf46c8722f1913203e04c3d683463a6b0567772c9d025e0ca2c6a659d060b1c586d5b89735db754553d35e4be64665d3f96c5d368be5f1366b84577515cec88213727554d546d3780284ac2143932fa9877abc212c44703d8ca61d5a5b1649b8c0dae24b94b406b29df40a00b33b21034c90de299b8ffca478768bf8b285382f50d77e300f7f84d74076411ff4557a622b075627a51ffe2d8e71bd98f37501f0ae0292f7f0978a3c6bceb2ff2272c8b863958a6ce4d6fd07c0e93af68732256e2a1f58ac64008a4d68aa4c8ec9ae4e66c53b86fdc6bcc578557897a1b603a824f4056842cefd1244883812673d394d808310e91c97a18671548f321deba4c3c951f5ecc53a34252116ed44543248e705516e9bf39ab0aae1e99d45fb51da56ce3a4097a3653fdf1d03191637939ef15e467a8d0f328a4f82d524a829a22912fa0d98b93b03691eb021d04bad5450b0248efd0fcbb023d381ec0cd747e6e517141b8e0705e3f05a55c9867bdba3957001d194aa61550ad095dafc87905d81c2644112c5862bea5c6e18908ae35b43fe404b9b51ef6664673717735921a681ad55d2c50e198dc7a28e02f6da96fb1af855a2344ed2e88be678b8a84c58d2392aaa9250a3786285d037274151fb72bc46fc7ba72e250847678e64c8763e8f65211825b3de30f198cc8dfb74a3b2850ebdd20d909788f81e066e494f9831cf616066a6be0db15dfd35b3cf3b62c530c7df02fed2381eb10b9e260e6edcd7e225ea27487de8719a23cc14bd51ede34d9f000073118dcd8fbe630ea0b4567cd758924d2a67f772b2c7b988bd4762c967a32026fa9bfa8b2111d98e09ff6ef1768b04f4a97400022af7754b36b8488c0be7d6710be9273c28b8237b536f4b1ac00e8e45cf06be52371c267a6d02e6ea6b0fa631e92aa0eb0224cdbc724d4c981cba0fd0d6971247149b01f06ef7e69a0a7ddcab43784933ab7cb4c3e9a6c4c9453189ca60931566db95ab2e0740298ca067c1d9347b37672323162362112333962d2265ec3331634928d68710540585466c31f8217e2a0591dd5c443bf555bbf03c3f91f0fb44d7455cc0510ca3a9dfb0daa9df2d43cba7d3f8974d0f28b6c583f989bfad8c7e3cec50103e4837be9189d2eec40a2d6f3df39c61fa0bed3e3d2e6b88b416fb9d8dffcc06951161227bad6477f66afb083bc551c686e7d54668f757e36b8bac763d9b73f4fa68e6b5b7bd07e2386cceca96d9f92a338b371e30bc7bd03d2eedb11fe2a1101bcca0f14fdf0102ad3ebe3907bfd64984e6660fdb6f8447ea12ba88663feae5ca7818d8b6e32d0e41cc46dd3c88bb69bb2ea7975387515e1e671c806fab7ef01668c497f2e03e9766a03570d5959f52cd79d172cc6265b221c1c55ab81050577cc1752da50e85b6edba191015a9ce6689fef229311049407006b54b0f761b94d7cc702dab9528b710691f163bff07c98ed47b0bd93385f84dd54c1853e3686d976ccdcc19ca762e5ab6e706f89d9d3b6f8be40f988cc1d33c7f52f5f594ae7ff2e5c144af2bf3bf981521954338b450155d59318abba9c9502839f2cb95eedd6fc0541da74e46ccc8daf7875fdfc7f23e62895f4a2fcc5476b9e8c844cf8cb049bfa8293bbc09526a2461c20e5a4912601e5ba0460fe119032452376652d2818e7c21718993bd2e4d43af8bb36155e8f63700d4851853245bb72835f5d2f88692c14802fb807488122d25fa76ef8bb70a1ac598e62e83ddd1ec0133be6600fc16355fc2619dd5a512c436b7816ff31adc21ea75d5405dd3f4e7385931edebcf13594c5423de73e59975aa9107c462c0ecd00f1f9862725218728ae19b9196687b1bfbba5358e9134e24e2186b5462540b0b63dc4ede19e9819aeec9f5904c31d88bdfc3283f742104ad3d5c6bfc20af26f48cf6c7a48955d1ec49c8e8a6e8d69688954e1239ab4ad9262fc4b73b74b913cf7591c4f48e7f263a83dc4c6b0be89ee7de5ffae39d5329035d276fa1b6d608188c20f869846342ab784e29087cd2f0c4f1c061382fdb83e45220ccecac031a397825fd06717da3b2b20e364b0f9fc1431a0f16f48406ad4076eef0f5046dc5027e57c1e42cf51ec93ac4eee0586ce75d905222f8fcca754c65debdfd0c9bffeb908d94d838277adcc9363f1fee3eb664f4b8cb46e39ecee5079953dc1cc6ba8b784dbb3c040224365f53459c55075291c3011f6fc315c7a97ca422f19e3137cfe1f98ebab8adca1ab04277326fbefeebeae598d75a16c04458f9ec81f72392e2cb96401effe4540f6600f56cbd430859b64f84d974b7c21f7e100f254248368174ced5f8c64dda5c968d5abbbc2f00d5c369d138364f23abdaab859d030ccb7155ca28d92d5407212a6e415aabf28f8a11834810e7ca3fb7843a73298fe9a9d34df81845ecffa21efa9c3a20ee0eed86334b0a6b9e223b6f4dcb2400d27655f9228447c9b85acfbba878c39a9d05b91aa1559da5ab7f11dfef0ead4ce26a910c07f661c073a341518f2f2d85426cb6474f9c9ba32e985bbca51cef9fdf91e16900562c92fe91965e6768186adf2f3c4e5b6bebf6edf60b1bb3b2dee4af565fd453bc4d634c3603cff9b43bc262f1d0fc64a9415956325d692fca8898dc00fa685d72549635eb1c6f5443cd0be720b38175f9f8772fb0bb2244605e5fd6d561bc49ddc374151ab3b72664b425f0e5bdc1709593ece1d06ef0781d0bbe6d12210911e24f4b527621de8f1c1a363e12858c157f29b36dc0c3a1fbfe60a40351c2b1ef04fd0531a14ef68181fe095f05b19633e648c3a05585dfde51bbbfd9d9e9b3786447d0d00afd82ce643fe9c83a77d6db3a3bb16a1f7ddb857c2d068c1dbe43210ed9e1d5406f0383a062ad3cd434151a13d2725770cc419d90efe105f6dd2fd925486841d47041ba1ac9faf6d2de30dc78fef3f2fca98f05e04dc87ea0015a63e59e69ca606cac17c566f4ca686a060a6ed5e2ec7d9321ff98f71a4c3577e6bfd887c97ad59f754ca00da0bd1ac9558c8cc834e1efa95d0e80749f424806388b39ea12c0223da69782e8820df28b7f450fbd9e30ab8c97ac2cc0898f75144e7b7ba58942bd56abc11eeb10e3a03d9d8b44a00f2cebe52c520714281b75006b7a2069b61bf742baa8fadfafd67568aef355bf93f6f8bdd0b2727baf0af2248b9550c8615bf5c738e1c7c2f6a8e8d11eecac82dad5b9985298d4e76e9e2797a1245bb70dece0dfe9aa76add81a5c7d8958f76b24c41c725d23084963c5d892f217cfd703b7d347e788c325f5d18095111877f0cf430efc06e5771b8eb92b323954bbe96e6a0da6fe3c7a502cf51130418f14a6de51bd393be200122fd50745fe32edf350c57aa8637f28aad2406534bb14dcf8b2c993e3ad6ef4aace635f553eb8ec7332773a90fe7aeafda724dbdb062d624e9c723bbae16477f7b913528668fe44971af545f1a84f43fa0e67f71d2288f23d86f6c8815551ab022ed5f0e886aafa05ee06586f0db09120ad773e1c2896c3e06c4b0765048a3ca8493dc7029a6051ca0968e4cddb3cd92e97215918110b9644f2ed8354e7869ec9a83e098330b01dd162eea173f20c8698bcde1f902c95eee89f40fa07d3977e20998940d2b08e715ee1dceab5c0083e4fc05aaf612ae8c3d474b1b5560ae67e128ddde26f9f888cc17f06d55c3bc20c31adf5a13a79cc143364bbf8f4f2e4549134e838b02f180749a26989fe2df268fd584b0a9d47bb7d02435c1da35065f41664f339930882f7a030dd1004f9caf80474a4440941d720a75eaba685124d69e9471caa445a267c8ce8b8ef81919c9b4feb62b715314f8e8cfbd5d5f64bf0cc98d1024f8b44ec0b73a22b0479e2f9fd009c938d8747c6d17f76351fb0813f7f9e8b44865d22aa06130874f577f209bf8d4a439b136ccd75a8bf32e1b6a2417378806e36ccc637f0ee69b16459582d8e08cbbf8c4d89ef6c7dca0bbe08e1be2bb4b8933b2f57e2cb1deac73c7a37999397b755f13881624c7df62fcf7496093e80d456dec18c2ed8b86ba8c39b65ab1ab5b924e772d69ee344d5149201cb6bd6223c98a4a0c41ca6943a553f1deb2a92b787fe0a814ff95f9225d6a4eb4aebf427d52774e432b877ddccfb8c4d17c20822e4fad6432054c306ae7cd969ad7507d27f918fcb6915b71447dab6ee59d77404b8d93ddcef3d75fa96dce17ea8a875c205bb7231e78629995a87766037d866db80bac075c899e836f4ff3fd9a38bf166127daf83568c132750312a62ea5f48971bb36dae018c597e236ab3360975267faeeba1957471a9095845ccaea4cc63823db97e4772babd8a79245c500734b94d833ff1c8f22e3f235341d67e6fc1354bf25fe7d7b780b21e405e8a32922aebab162e6beac0f4bcdafb473cbc04d4ded06feb75a9864bdf18513b67254c0197cd4295b1e4664165435d3caa2d7227a1adc59a8d44ed148938ffd3dd593a136a9232649b66b33821aad9eaddd2640b83c93d0b64fc365de847e58863f586db9f95821e607e03f0fc0bcfe50575ff65a7c5676463564a14bd0ea74c580083bbd9f91459fc73fcd8c7107394189c2368436e864b35fd7b26bb2255cdbb01de752d9a265e01ef404233c44e85178dae091e658f051527b9aa56c78dd170a568a54c3da363fb28b0bbf2d92c448726cf5d18af78b9b261a6755012ea4b099eba51ca03b9f9d0f4bd20df041273e59db6906e412fb54f37a3fa8a360c5003bba71c803a73f49a64ccbe05ec1fc764f6cdbfc77e51740e903d0eee9cb8aea930f6f99e8d7c9e8ae1c6136d5ce25d5c16e6533c57bec3bf7c23aa94d64e0d3eede3fbf253d2b44ce94a39bffde06fe481cd82cfb9292669469b7465b93843fe0f714a90a6994c6135e6435ac75b8be3107eae58442a4116fe3abe9d06d2f46db9a4628f0774016c91cf71a10e3d41f77cb316c04442074d7d3bf683fedca1097c03508332c3f1bf2bf1439a0fe78e37ebc7ff4d80595f1cba7f9d169667a9c0d133e73999ec7e5db813128c9a385d403b5e33cc0331d0a7b619935bb890e57e2813caee75ecabc0ec1b8b4ec31dd48f466b62950e9d60cf570ffef7907b29044e884e3d2ccf962cdc999b338334807f3c7ec57b1258748a42764b3f6314e75078bd19c26bc49928fc5f975b91678ee3a70085e3e23cca33523f565b0da69dae474eb9ba7263dde4db9421bc40714edb36967d0e354f15037036afd0bca353e7af5724b164df93cc8b3602d1f37ff8ab5fb42f04d13407cd61649287d941782c67087ad56f9dca99eb65b180181938124953017e13236057f4062d08678ebfff7f0418f125ff3d32df19e0c405845ca35791ec8ac5ea6caf248efacad7a5fdf13a303518d454695f7b49981c74d3669df8000d18c4ca1bd4ca9d76932b94301e4194aa6ad1a0a88337867836c19709c0972d4babd6f4345f6c2707c7485b4a86ba2999e8bb3baadba886ea12300ba1aeda1155b99b41926eed0df725273ef33abf0b3c3b367e16e8bcea0f4e430c2a838f5260b0e20a02d923f8f1a58c9d4f56aaf4b3b38bde943aece8fbf10ac5b0eb31d796fa50a61e72025cc180a683971ffc42e27f6d25cad741f92be0e4bdbb19fd5a3747a72bdd203f450985581b4c4df42100bf0f006719c23bc6485f261bc2d711caab2eeb7815cb0ab36873632ed4487f016a861d49576f74e76511a71f5b41173fdf9e1b3fcf96c89f85216334059146546548667b97a8fa6eadf4b879ad22412fb3c0f1f513972ff9f59a049b7c635f8cd8d0d72d2fefc91de86022a5a31e334dabfa2d4be6e5bf87cfe15735ed1abd86688cba1cfbfbcf92cc1971f31d7ac78d2634059fe1abee28e01765cebde45912f73ee5bce91b81e06e92fed24c9aaa4677cd544997d32aa40fe4d4f842a14afbb2da44706fdf6bfdd13102974a683f93eaafebedc3c8744c2a14322d39c3b56f5c4966d34e0c9d4fd6c15d33a7396a4c5dbe6c5168f3afb0e8246f11e9035a37406af28b30e04ef00ac1728f5f0c4bac83d5ea8fe1c846f83726a044aea082fa7a50c9f67ff8e0390e3d56474306a5e541cb57249e9b341fc03740382f1ac358f38d9e1709bc43d9fdf5d19ba154afd7c7d2f42d7a8fccb3d2fb35a7f2df7e0744df2e603df3ce49c82a5b7c053e9cdd481582606488e4f0d4408f8035bbf7aa0400316601cd28ecb07917523547e0dcb236a9de7733a1e4dd6e92c325140bae1eed5d1004dffccffbb8af7d30bff50aea49ebf3a0bdb113adde193bc43d5b12a703541ef9c9fa4371c4696708193877d5c505cce119cbec0a337050043afdad746c28c1cb1a347ca964d3039e7a39c8968d78aea74e35a3073b9e715cfa9f8f15accc6557a59f361760f57eef9e7c59dcdbe8efce18ffffe63c5b858f66f698e6edf8f666715e9f9cd8cc28558bfec1ce709864154a6c41429adb24b5d14a8154690ad765b001a5aee9099c164db9170a8a8cc435297eb080e1ab3e3f127d6f123e413f88e5e30b681016c8c74926c9f6b2367c3692d31c7d8031afbfa178cd01739252c7e451b2e1d42f895eecacfb83452e73bbbdeb4a91c13111f6dcfc9e865ef62a7b9ace18276c4fc1a08fcdc7ee6c13f0f1f86055646264f242e0320ec3413ec843066196105f73a5eb87897e0b94dc0545443e8b36efd69c8044c225ef9fa61b97b20f4d2e8a12391850922f382d13e7635ca8fceca38711068313d76203c1ce34cd4cd9b0cff703b31599a60a44a5b0b4b10c8f5dcfa74c349c9c1388ffde022838da5916d31dca48dd8c21779bfb14c3c4a2cb04b65ed54c139e0f9abf6864960826d54b24ac497b641a76f51b70b1b6755f060dc5e1ec67378337d33179f2c5ee02f32f58e0169997aa53380e0fad57c464e7ac32f0bd8b0d15193d0dca274dab5bb53efe051b2dfff38a62fcf18d1e1efadda516093a544634099656c1c9313871e70937d5ff500ec5b476c111b54ba38d823b79a4024f84fc8ec138700178343bd4ad7090ab7c069329235917aefe9ba43961e4f4b82d269a549d5cddc606407816822dbf117c179fe3d700eeaadb8b8c22aa00a6205f7e0eada70cc6643e8c7f9ace97a250808935bdf1b5c5c3c8d0a5fb8419b914cab9d8a5418796c33e32a6ca78e92618ad5c78a21b7ad2ca8859e4935bf5aa729249e1ca9dad80ca4d16c54d4b59490bf7f4cf1bc2cc86cd04e5de31e207744982ddbac936e7a475c2f08e835aca7b9744f4707419215942fc43448625b2057c2fd65055d06c8519597a749540e914a08ab1a4c1719f230b07618f4b6b58d6c913dc6ec1f7f52ca0f54c782b01c9a1e56aa08453f2440826e9d5c1b5495d310064c87aac9d2d5008d9973052753e13c8aa1a221489cda7d8011f58d99bedbae7e45c4fad56b1374d7db944f6f4a716f8744a4420bec81c753d035b219f8fd0058bee9882b47ac17805c6313f59d01ecd9a2200bdaeae684265a394552ad0bafa7fd1622b7a3af718cc38e3c74e824bd2702167636bd7331a48726093405e0de2c6ebafea6994eef8322b6be91fc0145a632cbc7a79610f7ee60ffcd7a4eeb7e3bb4e0479e7cf478f82f550e6460756e4b9236f40ea8e94271b224a3e7782da21c5aec2917e4c4ceaa82ed543c865a2a90ae5af0ebf1c13dda25c49160ff7fbb3544408225783e1f7dc6a9b77d774f1696286ae3a362df7bdd97c79dfaca88f05ffbe541c68ffd48ae6379f37a2128b6a55dda338e2bcca1ae535fc7e058756be3920413c08ddc58f6f49a2418698e471fef853d3c9a64d815e04dd8f65e854ae9005e634767580f212b918a05288c7819413944d68578b0e99b854e4616018df7711025edfcbeb517f9d817507fd790123d1f3e461b03ac58b1cc8835cfa1f228d276680fb9dd6231c1a5d336df3fa4e71e7a0c7b540594165fe6fab15cacd8e7954572fc355dbec9aca401af209706916e6318c55b0d21c49f8e1daf30e0ea831bb5de70b908d8f6b16f7e9bf5734f38e0b8bf99856c734718923cac1494301f9160346fffe51fc72cb8dbb3d5094180b2fdcbcce311a2308a066f0fe10729d67e6179811d5e43db1f36307abe868e15046d2e9ca96db152b8b57b1e0c9ecbc0fa20d00316bd27ec6d3991ad7fe88eab3aad1f0167ed832a2f26c7a55be18241b2f9dcfde1d58b8c51783c51afdf94fa3322edd58c904b1fbb139cca5956689d3e65d07612ed9e8755c6c01413ad2c6123c1e8e6b1c01cd11a368b4e36de14695375c83fde7b5b3c17849a0972f54c33db9977ae7fc57f25a7e76f1966b90b6be9bf56c0eda88c2feb5f76f04afbf92c0710daa9a75b8ae7c1507aa6f787701989313a12418f2f4d12d48202cf889ad3bbd1afe67215f52da8b39d16ebac46623f24afa5367b7e1df8d5a2d796b7d73345e5745f0a9e7ec47e1eb9a3b1c0f6223f74d2ff653025552a003b598c434419ab1b7c6566af20ac5d0f7b28e76cccd141027ed32e772cff09503b1fa36fa12e5e236127907388b46e900f004a34440de97d799d3502bdd067806ffc796f48ced42a8abc4d1912c1f863c43252f8c9b9b80330c41f731cbf70ccb6f658d821743e3f5e9b253f3c89e336d5f030af8e73e01140f948cfac074b5522918d67f8ab538d00858e580b4057055afea32229e36414042e0610d57dc4ba0795748aafb6a00aebb2d8c7bc94b6ed4d594b483584d95011559be2c93cfa36b199334e5e035fd49e32995ecd05a2055aebdcb811c9400f648ee4fb11867d7890b23846e816c9b508f00f3a4dbb3868f01e6edb537914aee9189e069239a3f5e86e37be36abcbc3f7c5cc06d33988361366fe0a6442225eb062de221a970cc1ce250b199dc19791d908b2939d39ea0287ec7515d032ea1761e043ab4d3d63ecea613d7e7d43fb42887302bbbee0cde54e051bcc69f8bc4a64526011792992677d566a50ddbaa6828062fbb62900dd1cada18b05f069d7f389236f828d4c8e83214638fe2a79a28fdb4dc60ed27dc1fc29eefb7303429e2b168831d209d5f74b1fa9ac385633ae36dd8501e2c56457f026561191f2ae1d8f25498000236089c33061abd3d3908a67eecc8addb71a3ed85c50c7ee39030b9fc7e9137ecb067d1feaa52fda5172668ae6396b621ed60c27fab8116df785942506f01593c3c38d25cc625972118cbc3eeca4aec342d860d3882781235be1e240d7d78c74954841e1fc9a261aeaf75f6ff460fc6690f30e05c653bd8bff14518a456bb7a435f585167ada81e3d4e5f456234029cec08dc61515a644fab5905b16157b5a0c61af241b161f3bc480dae57a7039d8f34d9307848cb2b451b066ca8b1bfc9f442bbbf0621eefcbce4c99b4f83c38b6da68c36dae9db78dbc0d4df097306ed748c625af13067fb1dd1eecbf840e8cbc9f21e317e53d76982f2fd9d67600a58a934ec0353f638af064de641d234b581fd664c110a0e3c02ae010a4011379486f2804ef67f541f4e8502fc33b998049097e989b9d765f156228b38013ed4aef79c6b3795359c3b3049129cedd573c0024d30537a2ac35d961ab329273048cd57fd1b4b4dc578b8ea48879dbc84a827dbed25d5a22f04c1d3ff29c2a19c25c2eb37219760f42ecbd45d3c0b29b1a9c2d883c3a6dadfe686c0457f110be40a430757bbe0f583dbf2557f5449fcfda92530ee1d2f3b07c0f4ed43a5ca8d352e39a480b72e823c36c06b6b8b684bd977efeaaf380dca7e0bf2096990270e93951416f3b4e2fcddbccf277e181913e73524534ae03479e755f18861c774599433ee11460f199a5c555281dfd6ceb329561c6316871e479bd57426a4462baa0fbe524d24200aafd37370ba9020f6e0d04eb34b9f2404417f72c7021d37bd12c8820494ef68ee825c819f2d491e03d7261063d94f20eab46b2e7569453350782e2b6656b019d4d11787e10619838bcfb5b781f0073e6dcd735a76511f7f92109268e312889e51c8014707621580454360203fa7623aa5b346cb26897ab4981c0182eed174151bd7977a1e6319cf174f33e879084fdf2228d9502fe03d3a6eafda00e6cec1f9ed9de52d5d067321735a540cf994c0c34f4dc1b1d46a9aea4396d0181f2faa6e1ba62a5b7863b199ab9c4bcd0b9bc7ae0729befb0c9dd08c10d1aea4ecf7cbe1f26376d96e854e5a21546ab34598f789a43bfee2343a4952d3f14d7894902f59c4ca71bf181fa9e91ac931a73f143481f183759100d7d894716f9de40faa454305d96367a1ed18a36b66d540b958633e9250a93a3f6a1a53782ec018110e4367b3f88213007fb9156f4de7639115ed390ed4ad610f82bd1ccacf308c4333d2578ab2a5e5d3241713953257d40cab446684e2e801913d1d49ca3a609f08a14ec33dcc8c7414475d5cbaa621e8e0771bba2af5fa21a2b580333f89d8d2dc366de9471ac3c5ed31748f73f8ababd6df72d0ce6cf488db3b96dba881b39c7e5ac4e87dc37d2fa3f1ff1bcded858d475cc0b42687c2bc0d8a31f0266e7c980043e3d5cea0cb0171514962ad06f40db6fa8d028a3f46cd42d5d88c6c1b8cf3498a1d4d39ccd063629d4632d76b38f24966cb16dad053daf2ca999936779cfb6fe1e34500bce70f9e216e968740b2ea88d94e14cff3d6f65f90bbbc7a5b1bbaea8e975cef66489f041690ae80a01001eafd5f1cb09543ca34b8e289bf409038078c46669345022ff94256be4aceb92bf0e45fdc3373fc42855284e7caca42d87fa81bb319687d8df9fbff0214cbfe8917a25f6645b0b3845e6d23e05236ab47224ecea100ec6fc5028be725c1035ff5723122b570a68720c3c0930b2648d0450d0bc7c595087f30a385f5e7e5011a9c15365e714371ac6bf2aaa3b443864d43c6f3f866ca86189e595b826175accf7cf6bffbe3e881546fb47167be37c91d2666a6a29c6e8a7726c648e0a9daee37503ce20e9bcf2390fab94a58d92c261b88865675f1a185b0fe65758f24f2c44c30f56a8d987487a5a3121410cd5842ca92f07f6727f32c2983c0505ce4c1027777c1b783038b3bd85d2cd2829c754ee85b813ba7436389ad7c4c5430626fdbb4db344d9f304921d0390ce5692cca105ba84e1b008fea29053ed8554931cc6cda66632462978c9944a1018d86ac2bee5f1d84d22bfb8e60f0a523bf19a0397780f432b158bd136fe754b393aa3dab63f4d3c2645d82737d2f8963410e9000537b5d55fa852340146441e370f7215e87615ead5b512a62b6e8e6849edf3c41e78ee0d34c989060aeda1da97d296f2216a065acf86e3f4227493b028ba0c7d2b695e7f2d21e0df9fd7c0716163004ac2ef6edcdf47c755a81689e352a82d69e56534b054e0fd3a304021502731075feb341e2ec61d28030d83f1bbe26825c51e4a861a36c46e67d5f5c48b58d0107e6680a8482fb641ce1bc4722c4adce17c9e268421d6443a028b512ccc0564dc319e955fe6d32ca1346ede04616132504db999da6daa0516e1b3399de43f713da97f3bdc0183e5ba9a198ffa2d49c0af802c11835f84bc2b88f6be2e8b2010f4672e5bbc6b57a3d58f97cda167609113015f4871c8cb6cba4e16d21edbf1ceea6bff07610c1228187cc6526b352eafa1b09a03ba7f69d8f91b7d568503fa34cce7da17cfa63dd29aabae0046e21f7d3731f51b96cd5e1ea9bb057572dba231526a0ef6f87032990de503831ebd39b895eb258dc9bbc81027f0e3d2700ac37a02e63752168fe6550e108a0570b1365df0734a1b0d26b60d736d46b6f42fef90ce47f6085b36ab96aefdba0b74e0f1d724207772d43cae5161c5ba7ea34d5aa813a714f9f0cf8e19377c7344d9938d2e6d352deb3331c3e34448746882ce408ec5654072cf85092ab90d98aaf34c354c516ce0571bb5244bac6debe78162102052e52bfe00f690242d20c20f5c974d14327b39ede0716ec9d00b92bb2aa8b0f1dc962dc769194c610331ad0b9f8e9e130c6038619396987617ff418fddf40879015cba98e84eceed399eb372d53bf615860885db6bc0fe05969f2ca20076cf2247000c048d0d7e79c9c47284e19eb47364934af2869982785998d574eb14a083f382df46f14c58500ade9b473c4a4e83e675533195b29865ccdd83662620c0ccbf4f0b8b5c7bccdeeb0a5e574509d4cb93227ba26449d926c98400e3289f1aa06b1d01ef382315c2b359ef24b1fc65b2339a454c1e8004447349d0fa3c100ba9c11cc8abfeb8c2975ac17f106ac57af0f642a744da795a0d1442a7d667b9a192dd0ddda1f0cdab2336a5617ca7745f5601fdf954c88fa92408293ab80d8d0ebb0178c196c9f633025c5d03aea905120f3520b026e9ffffffffffffffff5f1c68bea1b5c83e413ba5945d299c6a1bfb944899a44c29a5f47b8fdfc03d008043ddd6fa5bfb0d04d90e8d0e010f75d4cd26562e57a1504c40c2895e8eb9f5cea7650fc9260e16a35f9b23bc6cad5028148a10124de0a3cfea5b3455625d854221c9c4c2cb16733247bc1cbc8a07483071eebad27a1ba24274150a050324974035e8d20ff5dbf28b102143769058e2241be3871cfb4ef65728141f3d1e086f90160081a412c68f2a53b233ee4fad5028457ea0f1a307193b3eb0c30c1e144a19249430d96b78c8d7d4546225904ca28e4bcbb1fb24bc7f324824b118abb4934c3a7e50b742a1ac31a4081a428688608d1128904422193f395aca573de1557a7c1021403e40a17c1021409a87094820e167b28f79a4870f771f917a5950252ac347cda6c88f60217184d1b5d3c7537bd3ec57bac89ef1233883a411d7893299d1dcabd6644472dbc5522d1fed63ae502845b288c5eaf849e69afc781135d028a206194aa208b3cdefe8cba77c949708546e102ec66de94ee72042f9cd562fc8f4536b8100590a65a417248740746f6e54f19c2b63150a85c4105a79d0b992b12fda5da150821004347e548814d9c10f7e30064921126b3134a6580da5c52b3d7af8705f0aa547911f3bc40c0710e131520b1242d439e7a4b221baee4a3c201984f22deac2d8ebee8a404804816c884e6732d3d6a802a1a9ef50135a9031db76400208fb43a580c40fd6070d90f0a103247b58849899cccae64d1b3d20cb37661673f8fc3fca83a7a3e38cf0514ab5bc63e4092478d84588c6cb52064d1dbb43257418400813b1d9256374f82a144a0f1990d8e1b792d7ed4d7381a40e88922d48b1ee93e94a3af4354a5cb43a7c1e6f0e082de5c84b211f64cecae132213cbd6d5b12af89831e5469fa36f3b05b51c0030ebf9d50a2c59ce772cd37fca132dc4388ecf00781c40d66f1c3538dcca9f9b2e880a40db6a9103d5ade16b3da6c283b66973736c7cdbf246b4028958d80440d89afd898d135ed3e3d03491a6cd9faec53335d8e612790a0011372748c5bca3363f00ce7e9ecdff98216d748cc60c9202b4325838a840c66ce3a5a0cdd4e1aaf3348c68012caf44a64cb3d273198d4252ddfae49b5bbc3b09cb7ecb22cbe59d4cd0748c0a08b5184901e4e3ca9cf49b083c72244c8c81448bed0b99cd37ee68bed7c9178016d52b45684d866bb245da8b6674f6ba7ac8de1189070c1a4ad3ba6da704a3f5484640be665cfefc624d76cd3023268d08e97f7f6b33049166a69b4f0662faa7521332c282ef9c7bb2c4813fe0f922ba4d74cfbd3fa83522533239058e1705af89061e131775d4820a9829f9b5d8490c963d0952d81840a9bb8aa5f8b2784ab1705922928666bedde17d2ba94426a3bcaaada6b16931b0583cc41959516e3fa8647884002856b947b109e325e1a2779026aa3c8f969f94f3a86051227f897f9e4a78c7fc89bc0b9a84dda7254b428bf09d62061c27133b4acb37bfaa468078f21effb637c816409a97ae7cfee82b91883244a583fedc68bfb6269e9ddc163440d2449f0673eb4f9698ff09c0409cb3ad27368d0d9e553931c01df3df978d5b9c5faf0a00189117c41b77fcaf8c17deb212445d0b396e8d3c15a0c5b572814226bbc094888708dcb3106371152f3c3c843630c17c73e35bb08231dfc44cb65cdbd3818e7a0c963653fbf187a60d829ccc5fca3dd6ef48b46aeaaad5b871f61fb62392939baa4c7d1d9732f52eebe676a346cec9717a7966fce598eea5229ed02ed3899753a66fe423cc6b0a10b3c56c974c236f8d79e8be267b3cf3c4bb24d8b8b544c8b89bc4837d1de6231959af4d3cf728ead2d12fa43e7bc06d9a65c42b0011bb5b05eec51f1f3ff2e4f0be33a9eebf6cb82d4cf2c3acfe2899bb3fb68a32c2ecdf22fc9b04c77b958fca22e95bcf41bed623e60031629657de99a454ba735214182fc2b362db6d421e7f469e97785ef697ef75aeae0b29caa566c2dffc78c3ae1a5b34275316eb6ecfa2f6957614b2d79c728194f67d24c15589e503ac6e8bbdc5c552aceee1f3d3a6c16e39c0c15a66f0df95f5dbac33ac5f9ddafa64cc67c9529da4ed519c2f65298ad4ebcac194c9e1029fc9cd1a3426d5b746d368ae6846c2e53b52818b5fdd1dd7270dd7c28763176a6966aa3cb710685aab9457a4b3a28dba0fa84152a74b635bb93e59e709398f372df642df59dc85e2a0dd38d0bd32d27d6206e4ea91dd7b87813c918a5223ee5baca491328213a6c749c71599499b0adabbad4dcb6e8d3033630914bf722cca52dddec5e62abcb7cad1dc3dbe996e8fc47aae64f765f77258ee95d18bd6a9d9f8b12e7f86b57e6a2f4ef9a846d765b32aaaf79924a22b51003087571b4a9ccb95a88063622914ea374260f275347838425634e7ecb517bf48f58d0bbd331a35a079976041a546ad0dc9b51a3de08fe64741232e6959e9911e6965c12f797ffa55b16b1b6b095a2d153b5328ad073aecab2de2a994589305a8881c3cee59ba9d1829aaa10c18a9237279b54478b561d6217397f2edaa67a3b0d719cddf8b29cc50bada74264de591643e353ce7542b0d9456de9cfccd8598542e901031b83b85ff64e5dc99051474178b532a3f22ff4f4814049d3dca921645073550061aa385dea82146f8fff70a6fffb244be78a1809b1e107fd4bc80b2aec84d0b93ea03b6c9f54d5ce54994211810d3e18b3bc9805b57699f53da4f4646eb7f0cc3d69850c1b7a683db7986bcb4b7b4a79d0c33574b08d2d0825ae22d8c043a536bee9d8a53b78b51a1a4a93965ddc54cab06107f378b7701b4475402dc4c02ed967ee9c2de697518542e9c1021b743087e7341736e4898f1971828d396c42755dc329196d747258d075edfc8fa9db5d1cce29c4804164cc0fd7efb225ae502866d880c3721b4d874c2fe98aef0d4b9d65d93199e5e0622f36dc90e8111e2f7a9b4a8bb5a1b410038e4e2b8f2f68feafa642a1502857021b6c5812bdfa1e83d42896ad2171f9ad1e62476f988760430dbb2ca9daf53519174649b09186a3894c8b4d42b4348b86c459c924372757ab3e3c43bbb15394b85e8ed948b06106346630b15a19c43a53a1507a10e1918690214ea10c2992868d32a82ecae4b5c8bfe8997b1b64b8b4184dd37e4b324dcd818d319c3a6570590efa5c4cdf5760430c29b139c8f0c266db3e2b144a0f109861230c754e9da5dfa2e79eca47ff0e7c74c006189643bd1c6329d920d5f385378a564d6da667d2b5e185af3a4b6242980b2eea636e0c1e1fb0d1859396ab422651df305a2e70f15992d7f7b2cb7ab670106af368b0f4bc1f75600c36b4907df86a9211a3bfbf34d8c882a15a849b6634d96859c10616169dc96566b4b49a3f57d85cd8741f75fae6c430d8b08262626af25ea3ff9c7060a30ae8a0333667667549b378c106158ce9e4b75422e4e5fe60b031854f5b9e0859fdd0e389c186148cb183c9dedbd1f5980a8542840436a2a0f66aaa26cb51b77148196c40c1561539e141a6c808b58d271c9f6dba1f7eb3e618102142b805369cd056877ce9b4a511ea63a30969a97a88ab90166c30c16c49e95ac709d32d6b63095e657d0b5ad059f3656eb0a184cb67465c678ea790b191845f30973d664d1b48585bd0977fdab9c63f1b47581c1d5aaafe51a7fe54a150823c100aa5881020446c18c1f091a653cbb5c84c19368a60ecf5ca51f1e2697ed0b04184b62bdfc52cd22cb359358cf664cab6ff1ca3789622634418facbc6b350374fff17f9329430120c66d5dc93f2f994bf0103a13e7e8cd2b73a9da130f20b64edb61ce694cce78bf9a2cfeecc902d9e938e9230d20b5dd2ea3a2daf09918b17e89459b8d498fd39096164178c4c73ffe11d6b453a84115d5c9f33e4c663a37d2e1749dd6c9b427a4ca736b8409cb9a4fa3fc8d6ce4118b9c522c64ab898ccf12519208cd862d9b76d6e74b62054b7230543466ab10bfbd1fd5bce7bb32d6184160bd6b2a8fd1de9e147150ac5c719417eb4606416460dfa3d075d6e5af02b140a09466481b7fccf8d9646e8dc2a148a8960241657bf28cd829c2d19afc16233e9a34fa585b2f2033b3cb0a3031480c1c82b7491517410faa374daae30747251ac737cb30f7761a415dfe8cc39896dd78659616552d2da4b6bac50166164150bf2bdca5234bbe5d24811465491fa370daf2e271d643215987df00a1bcf413d8a0a6fc43ec4e5d2db629d0293a6a9a747269953ef8511532cedcb08d1ec92b06bd9c248295275dd6f773975fbc78511522c6aaba73d9df2e61e851beb73b2bf4c164644b1e6bc474f675a78513783079091502c469b8d1e75539ecc486104147aec8efdb2ea973ce808239f60c545e81caf2dbb705d61c41369f94333d90b62b2fd91298c74825fd590a673da1bd9d284114eb8596c94fc1ca369c9d3831f63c8f340c8097064134be22557d625f574611e3ca2895b34fd24df5c52edee3137c61923994888b51837c7fbcd9249a18c18610413693ca52c5e7378397d2818b9c439e77e7a9641afe754306289c3ccbd5fecee6ec7d0d990914a9c937a77cdb76dca4f8f3c6af0589e053c743042897a3567c933e62c4bca349bc4a287854ea7ba463739f2841149205e1653669b7f74508a44b939296b59cc7f17339038795fcb2ae2925af1117ca83f0f4a35c6b71c61d8d479947adef9ed8430d288decf4cf8e88810751719b22a00c20823f410a7b4a0638a75310b0c78886064116d2c8f1d8f5a523def8311453857ff23c7c59c19da652411cba2889316f2742ee522028b139935f3b1ebcf228c1c42b918699dd92f9a90971143b0236efd82101f4bbe42f0a2b2b63b83c60e0d21966cf44b31328f69b91e8c0ce2b42e8c96a56ec93e8c3c4a302208838c2ab1b6eefb3bc84820f2d0b310f9e24957ed851140a4352fc8eda66eaf3f07237f5854b7a5d254d712ca912d8cf8c11475ca644cb4c6443f18e94315ffa11ab470ea563e14d66f2f473b1dcf9e1d8cec218f7da576c5af25cf52010fece800055c30a2874f66d1b39af2d3464f0f214582908042115224c88f11248ce46169347dee98d634784c8fe04117a44b1fb5356816533918b9c3e28d2ce195f5bfbfc1c1881d0c6be22ae7bf7a4a385287b42ce665a909f131df9f11e48100d94a7b60840e66bdf09299e7cf7d9a8a0646e6907079e9f3e5e898a92a144a0746e480779d6e798cbafe9f0a85622371489f7bf86e93de393e66502841ce081c7031858ba94428ede35528940a1135802c67e40dce9cfe1e939e25752d951c710332565ec9649e6f7b20bc670839018572869013a421040514ca194280f040236d58ce49ee858f27d4279d213a20c28605cdfc49943c93978f203f7c0051030d4a99d8378de950620536cdc2ddc576416c388d922a244f6470cf61e572de50410ff6415fcecf312feba0640a670e3f4a73b8e4d29d8a9448c11f535eebd20897c71305b3d3e53c95aa510285b39cbfff739ab172f91e943cc19e0ffe495c56d856254ea85e16ce8468db91df3461e964c63f2d4a65061113ee9126c746cf7d66be0484cbb2a0562f4bd7b610a14409eee9cbeadb59e4334bc25ff51f56cf54466d2548f036d43a0b72e32ebd52283982266465ce3254f5dace030c254628f356ea5767edd5fcc8144a8a908e6fb2af21e5eb472544383fbc4bb2ecea93fa87910ca165f1dcaf1a2c230c6d93b56c1e7392f9f3c168a3858c3efdfb72ac81d198c6ec52e917e76ee7028e5f187473ceef7d99a3dbbe489c0b32b5880bcd21ed028e5e2cf3a96fd39d0759252f9c3bd9a37b5b84e5be0b840e1f36c8df507fb22e3e6957295a6cb7794d2e4eb3398d8d352e74d944bcefc813e1a2b7d0645b5cde1cbd1df3b6e0ca4bbbc46739c4aab548a7768a10399feac938e0a0853148f3b8bd4dca679f853a1e4c6daad51673d01a70c8e22c9a5dd239bbd89b2a061cb1487bd81c5c8a5d59bf61d1478fb134d49ae9cec680e31577bd6f3ad54d1fa3490d355c91a88ace343d4f371b35d4c0d18ab3bc68317bea586126118f1ffaf9432f38e05845329338d552c9977d890c3854f1aaefe6e0e3952d7965c0918a66f43cc3b32c66fa898a5e3af5de25d46841fc3be038456e23b64967b88e79c4061ca6e8aeeabbe547f785b214bd6d493b25746866511b7090c250e293e88aae2d1d33e018052abe2ee8b89f6376313ae010054ac84f2e9cdbb5f4c13ae008c57fa5e553595377570205b396ff26f2257af49f30e7942fd26b74ccdd3cd18e963c83c978e96feec451d4bfa46ffcea53ce894ae4748e9717c3f95dc1b1096367d83fd7cbd236fa81431378ce929ed9678c97094726964fbda4f2b21c020e4c785e2efb961efdedd225cee0ea923ea17bfd634bfc31bfe54b293294e88280a3120b2a64db0be2791f3c382861ec92235aa7acdb3d9330b9eee8760a93e7f11a3824b154d2b4b31c36aebe0c041c91b8ac94c877907299d338209116ff4ee7b49de44a2382e3118bd058a2533569ce6a111c8e68f3b3d3ea8b5b52e34582fc0e1a611e3d67726ab46c310e4674d2f3486d3173877f11c9facacae527ff1ca308b36941cb5f32e92c6e124722963ca89159134244de9b547412db76328de3108659b8a6dbcf499754a1507aac0087214e2dc95c2ef9c60ed316822bb5ce97b9c5969f0981ac0d6247278fb146cb2012b7937566ee51d614c4a74e4b77afd6393f27c10e8e80231086689029f3e85afdd0e300442734c3279dc48bb0ed0faf4b7fba697f63e893c7081570f8e12e353a28a55bd0ce791f7e4f2a37669b92a93a7c6837e5cabafbbe0bca3d98633a57b3705b6f3240e0d003defa2ea6311d2ed2c591074d06a5e307d5c1839ec13b6752cfb27a66c71dd2e922bf838d0cb5100e3be8b3417fdd69f9d2be0ee7a79211a183163e6370d0214f6e6ab2e5dba0dacec1723d61a61be7dd73397c2a3f4fe897e52077c7c14e1e5e38dfcf57adc3a1bdf8f3ffb737d5fc1bb091adbf254369c9eb862ee45e6d50ff0f236a039ed5d74e5a0737311b2e4d391bdafb3cb8ac21b5c993be8af33c32480dfa865bd1e349650a350d27599ec55861a6625e3430571b94f224739e0de1388319a3668fb1c48beeb5197e69de34fe67e7ea5a06a49e2a0d7f6fa9274386b76646e995935af2312c8b6897e284d87fa912c3eb79fddcdf5d740fc390966541bb78a32b365a38c0b024736631ef5ce7cbeb171293b1d5250fa5e352010ae0f0421d5ef6e431f87678d20938baf0a851224e6dfdcd4f3be0e0429e74aceee8e261c428071c5bd8c2b39cc2635e870b6b01cdb2e039ae2b3ea8cb1e7064414fa183aaf354b27ac3031138b080ba3cfeed63215eee153619b6323ce89569d00abdc60ffd8ccb360f8e2aa494d2cece2e627d5a2138a8d059b767dfcfcbb0d714fa734f173e6aa470343da2bc7256d36951584c22eef733b61b475070d4f4a66ffad37eef13ce39f3ee59f27821762768319a3bb5790eb711471336d31d21637a69d67d1c4c58162dcb39bac98dd9b4845283ad854e5a1c0b991d14ca08147028a135cd497a7d3ef3bc712481cbdcf4b2e9300dfa47427fa5b37d9c16ab7ec471043f95c67cb285b9ed7ec408388cd06c97bf24fb71fb597014e1b4defd292377379b65ec3083071b7010210d4ac81cb42c4a4c334e8220378661ffefdbe9b49b1a2e1e3cb8210cbcf25b18d923faef85c18d60f8979a734e89f8b938083780a1e8abe98a0dd7fff42f9a4d253fb77996e3a6377cd1470bdb10db8d5e205ad01de48ba35faa122f8e494b5a374407d1a71b89c28d5d98f7473c6bbe77695dd0b8a10bbf5ecce2b9eeb3e48d5c546ea13f68102b323f5cbc5174bad32dbe28371fbb718b3a4993a3456bd11afa19376cd1befcc29bf4962f6fd482ff71f78af130ca0569c168916636a7172fa6417063165eeee896728359e54b256fc8c2eed29b4328f3749d89855b3addc9ccb259e91c168ea507d18e2636ae375e518e6cccae08a5ba4e3ed61852648d2166f8e0862bcaed8ca31f7c5c96cd8d56bc23e6b44e4d5dddce8a723b0b2335c4dda7f583881015acc278c1753e4b666fc926010ad0f871c60d555c7a3b7738eba035762a14ca206ea402991eb488d9ac0f4a77676bbc097698176ea0226d91652f6edc7a48a1f4b8710a3b67f320c73ebf7f10de30059b64ccd222747f964d374ac19e509a4fc789da17448a7efc65d162927b35fd28ccc2293d2ee5bf203f14c5aff25e1ffaeb5f344381ab66a674ddbc7107859d9438951e5d64c554a150d0d98d4fd85b5baa715b3470c3130897f34be29b5c9a17d4094c6872154dcdaa38e1cb9296e518745ce42b040885d2c30c1e7a6313a76dc63e1b7797daa48993dcf49a52643df5ac50283f2a446270231369f54ba9979dc5b996be8189f25ddce4a5638c417d38b871893634feceb7b618d6ac50286b7c0e7cf84863c900411a372c910921a3c5bcc59bcc520972a312bba42fcf6bc6370b9912cb9de4567d5a0b2fd24998e474c5075d4acc28894bd32c73468ec41e63eaae4abc5a6e2061d0c2ca7ff99db4b91e818c7625f692bed9543b62cd789943456e04fa3cc8bc986e4c6c0c23aa1ff1f41dfa49445bc427538a1663d6d42fc82822b9c963a9e83771f32622bda95a3fbd05116b9ba6b8d4a45773f010f7cb1ab2b6b3eb976a88c3568b4c5e1ba27d218ed549defd5f1c194384a83737094da20e6241bbe8a36563e3e122887af7c445e4546d7b02a1b96a6e8797a5b69602c45e96771677f299cb3f94293bf4cb1532c55cfc703cd9bbd9da653355f761318b16f499c7aed21d1f7c51449b667f8fd2e11ebc916f6974e7c57c1a3da0fa6236bd59a367799407eb33bab5a0257149b77848e3d48e70595bb4d37207f7cb37e90d11cd496c87c4b608e12e57d98b771dfa1eeddaf624bf43890e9f0e8fe9a96ad47f9bc352d728194beeb624be1cfeedda4dcb50a3b5c7c1ab8e692ee6de6e150e076d97b2ebaf45cfd11bd2820a73111e37e4886e30a61b1f2d4b6b19a4507a74e1461b96ce4c3c28eb7c3143de070c6eb0c1144a93685c8be3a2b60683f8cdd794b15c45a5066b6355b674e67cb3a501599a6466ce92bc946d8542b98186b324b3b4a9e5d1bbfd9f21793a866dc6bea69868dc308351839dd2a74e575856863ecf8f0c32ea28fd20192e9db3f0d278380643a5f7ed79c7cb825c0c089d74ebf3c89918330c9d6cf6bb0b1d3ee9b2470b780829128404e70618b24d214735a8d5f760854249038d167c60071a0d031e3908f2a30c341a06144a1a68a861851b5fd0427b5c753de1f6a2150ac50bc8fcb751c6f647c9ee46173479a1f39fc7179dc70a8532c60d2e6cdd39095f3ff1597a1f49b8b105bb94ddcc9cdc95d8b5c0badf2659b52f66f12c54762f664136df4a9a2a14ca0d2c9c95d651338dd41e9d2b1cfc64286d9a1dc65a2be4620b5f6f76f23a73a30abd68b247e39450ba57854229a286101f43bec8b23e6e50e1d5a4f47bf02cbc6cd21937a6d0f95f08d31a4ecec72a144a096e48e1a4337d12225406e5e98d282c3a42ffbd2511669d0a8572030a889810f7ecc93c5f76e30998fd75bbf0f2b96c31266e384113b3fae25ee6b02e4b8542b9d10436ba782f6d3c31e18e254d66cfd2fbc6d012f690ad27741ed7af5809575e6ee6bcc9ec68efd8d1881b49d0aa4a6eb5b588ce1824e0699d339c8a7ae14442b8710473668dba58a931a9df30c239fd958b669cc73289e04611baced26cd58b9e7ac20a85e26388101f3788601ed3973cf8f76b8c15223fce201986aaf126b6358bb174148635c2cab36e859f9e4036480a7698c183470f4882b1ecf6ad7afa51346324c040b828a25f74b7ac79aa5028fe837d90fc82974b58c826f5986bf285414b8b39c86c39bab9235f20e9c5f929ed3795f87c59e3c5b1abc3e77e395c6d5ed94532965de69ccf35eaaa50283dbc078f35fa81f06a8244178728e1af295bc47a57e99186902120a050d21032c4972417b8695c898c2d8b5fa4071f8442e931440809289421428690e02217b477d27ecf1dabba6087097e88191e1883e4168f66a9cd31af45cb1a5b18e3a9bcc71a51174f1f6b0c296204925a9854b5cf7a6796fe57a1504868f1e6ab7fa936d85d6c150a050924b3b85ecb3eb5f4a2d8c724b2e0bd3d73b47fdff0b158186e166b5a34bfe051335828ba32f95ea5d67f55f50afbb4a063cb6a1a74ee0aae3a5fcc34b9b0a1a9a881462b12cab468a7fe3ac968ac4086eb0bb247e3bf7c568440b28ae53fd5a5ead59d2edf83480f968c1d3b3cc80f13ecd8b1c69b60c79057018f34968c34160d0ae50724aa584c876ca93666411b832415a832994b9ded89bc2035d240c531add8b9d6cfeee7f857886c25881a88e414c8f4d87541aee68fb2299a9b4f117e363a8a0e059252986d3545acf8896bb9041252a0d64a78966ff5353d0924a3e8b7c74b84524286dff41839028928f04a578d5dbf310b3a150a45c8730d4842d1be1c74de4d723fcb493e6c40028a6d655ed2e575c247fbc462688f9f3e5a5c8cf7813408483c7136d11ce63eb46a8d150ae5cba80005786880a4137dbc04a6e3117a8b97902e88b0b5d9119fe58e8ba23ba6aebf11eace8de8fc72c7a42646b8396a89cfd5145a7e17715abcdcbd24b64d981481169312ff9149fcff9308ecaea5f11d1dabea2162f13de6a4a54fad7dfe21b46c6d378ffb2eba980e439c5daa50ea41a8a310093353a2ff628ea5474264a774101dda61358c740c0225f2dfa1ab6de219415c9e7342544b29994c3b7aec385443123a02a17b67fa19cf498d782aa60310698d25de3dcb9b6969227fb863c7779d72cb4adb0f29530d0365e8e8c3e7513c68c6ebbf7df9a0a8918f715aced1ceb48734dbcbb9a7b76c4646871e165dca164faf9d77b63ca0230fbc494de7c2bf201a204244b083043cd2583280e8c0835ef2711acc53ea7e8733a39c676cebe0f5d06187d3e7afd02c682b29ba0e74d4a190a2a53b9636d5f1d3c10bf75a936ea65d2c12f02812448d4a194472a0630e6ecba64e86bb6c2bbd1cceee71693c6b082dfc5671307a7e55cb30974de570b0374ccde6d6af53f61bf0f0f2b796d966c7ac1b346bb1bbdb35cba2aa3e74b4c164ab73a7557d5a302b14cae760c8a2e163a4093ad880f88d1ef38fc9870874ac21976485cd6554fb0d8ea1430d5707516ee2a74563bcc690226b0c3183870674a4c1bfda0ff662e9d0361a96adddcfadf48671171d6758ce49e9dbf20c992e478719f03ed992085ff3245a7494a1dd983b1bdb21d205e920c32e6975495d7addb9fc1874ef1cfaa9d53fb62a051d62406a96acc33a640bdac6828e30f4312eb68b2630a4a153cccbc9aa2fdc262fb69eb08c33dd0bc99ca1772db2470b1b8f26e8e842ab59d2ad6d0dbe3217ac8ff139e924e6a0859c40c716ec5c5a3ed526a4054b28395a2dd8c5899d053b2e93e753e271f43ed78185fc54559a32f5b1a22b38dac23ba9cd0ae74d152fe8c8ae1ab70a76cc41ae892e95fe4285f46b84cf8a5cc7141cfbdca6c3248564fe6472cb45e6aeef021d5170b43369c9574c5f282b44768c24e880022fd2ecbb4bf404a4a8cfb866e9fbb3dac1a3053a9c90ee9bee1e93cdf24dd873a876b9f81d539a28e86042f2d39dfe2cc6c60a7509eafddcaac5a911b312baecf7bc29cd6499ce2c09479d5339a72eb59c749070988b716f5d8c2f9894063a8ee0e8fa58f66dba7a1e23e8e28e962579f210f0d05184efd7e517d5d64184ad6ab4143a439e6318791493565e2f9c0c1a612cc598271519291fb3603c1afc93eeb94b752e398081a7cb998ee642851cbfa8fce5f11c6bd53dd852c8e10be7e56a69bcc6936eb017a64eefdefaf2dd265325072fd0d7526cce889aceb2ecc26c9e6b427390390b3a5d2cc69fab3f1551f2ce452e6a0bb245e6ec713c5c14be1d17226a3b654c8e5ba493b86ee8d4eb828b2dac163d9ed0b9dc3a7db5b0de93a674f185b99416e6b96f79fef45384c66c16069155e235faf46a4c16679bbaec2dc23a6b0b901cb140a98e897cf753de162cf6f19edbeb3d21427e85bdb2befd1984fe6e73b8021d7adc63964e3f72b4c29c4e58566dc8a688a1908315c69c29c3dbad4a73b38a5644092de8daede45944c002175028403e0743860809b20cd9018f4a0e55d4bb9b7369fbbf8c752a502d26cfa432e37c6ca838ec6953f72c27db5cc120c729f25327cd74d30a85f26359cc7001094420020ac5070f729822914177480d2a428b7129b8dd4d7a936b69973a52d4c1ac4dbcb83b2e32951ca3785435b674c2e5369953a150d0103264f1e13f28941e3944b16bd21c75af0d2147289664d23be27fbd3b64d628f2a3370d1e2ac8018a73163385ee4c6722ea4fe49ba2e4c7e6b54587c708727802194ec7f4e26916637ad4600663e4e884ebe57267770ce2dc1ecbfe09800051430463e4e0846342595aec8891e5b289e46ee7ce057b2d936aa2901e069acd7fd32e8fb860b2ca08726422199363223288efce31d1821c97384ecd8912d16214db2c71defc1d7bf368ad5695685485bf24ca5b4cc6214342d0011e6ae4a044ba9312b2b55e2d7e38894de964adbee132264ac2ec577e1bcf9465b22b148a193cd0c811890531325bf369b1ed7413e480444a7790d3f3e5a2259d47382fe8ec6b41783ed17e1a3f8442c11c8e405c56d66fc84f11cad18893b4efb950f1e111f920427c50283dccd891820ce4604462f7cd53839a49ddfe906311c69a6ac9ded7bcb34b911f1ef8fe01a48c223f3c70460e45e4f94ab7a471a4a78b3e47221837657da644798787c8fe00d201212828a2061943be0809d0c88188caa5963b77a97c11a3436c1a64eafc2acbd3cb10bf68139d4dea85e8b5c517b4769637ade6063908b18a74714366730fe618c4d2c6f61c847e8aa4a1841c82e8f4934e22c3ba98758e40b0f32d6d88ebfcaf690e401416762d9918792ec8fcc19262d2c38ffccb59ca0fe96931690e6da1b6357d303db6a64d9b731835f2a11f7d5e1a5b0a0d6afd418e3d9844b908137fdafa3e7a3079d6f960a2c469c7f2d069b79c635f9664b38b87c375d6733755523f78079368590c756a5d633f3b1c22f47ac8c9f6a043150ac5478e3a2c479725b1594c7df5243afca6344f68c9734b9e1c6c911c7368ef5d52316b211b26e49043d23473df650de2459f230ec771d366b695ad978183394813e24e874dfe826fb8c54fa741630c67297e0e863ce67043755a96378509eda3ac0a8592a30da9f2785d9b62d46628071b728bbbcd697436cbe90a85e2fb951c6bd07693bedddd50e2b31c6ae863fed841bd7c6b144a1939d2f0c776d192cc7ad1b1a121a17c5f6c39e796ad4d65d907b2ec9f804251428e33ec9de7c554ac44ffdab1ec9f60081a64842187190e328b992c337f1e99ca5186b336ddc6349de3aea9b2831dfc000185c2e37390a13cb7d20ea90a21c718707937bc18ae65173f2b864b6fece54d9e592c5918ee1867324c99c7b8be42a1f858837dac01240d11e400c3f5ffb2312f7ac816fec292b0d3b95f428be91c5e48e6b02f679caefd0e12418e2e547e4a86767707fd6785071fc40a39b86075ae97e24369f1650b27a5b43c2ea6726821119131a64d6c102a21422a3e80f80f27e4c8023a440c24645d1683bad0a5b53f410e2cfcf2a796cabfbcb1ea0ace7a6731f784788bc86105334646d5943dadf15701659f54d7de9e830a9d57bcefc797b27d9c0216d21c5238dde78b51d3980bfa1e447244816b7b75df74325baa3a90030abeb70b6af12d9b2bc4870f223f28941c4f50e4f3bf18bfeb5cd052a1507238217d215bce6ca163f6a642a1f060877ce76842a6cc3ac79dedfdaf2a14cacb2007131c2d233f57ac3ab89e6309c7f839cb1dff4709d35528941e3d783c10de31e450826ec2456df7ffa42906438e242c9a28bd9e9fd4992c2b14ca117220e1a0c4bd2ce6dc3174d8731cc131ed632d89b5f479ad50283d2a398ce06a8ebdb74c3addb4150a0508398ab0389f34785ba942a1502863e4208259fdbf2a5f7218e91462a0441829974fcba3267f470b0603999a5f3379d2596b02c6924bc285f9f862de722b148a07f9327878c92f7e41abc65a73bf0efbc27aab92997d65938c25bd4066f945bdd331beea8146c3c0837c192628e1452e95fcfd79527daabda064170b1b83dabc8f28b5595da0452613a563e870319a0b4d67d9e6eea6cfade1e22cbce0f6e1d4e6e09f1e2370c18e33c10e33c103e12c94dca25c1dffd05bf25b934a6cd1a58cb5974ecf3a69492db46febf6d861d45e0cf2638738194a686108352f1556a5f7324a6691ccd8ec7e9efeac20427a50228b849810b757b2478ba39258fc33fa7b713dfaa52981c582e9a74f6ad5e55b4c85422979455a4eaafdbd7e3bbcaf50284384f8f840892beeebbd4ea3d49256b023a2f694769f4b518542e91124051fd8410408900eecd851a4073b289412569cce7eb67bab37865fb28a3b7932f753d7b142ac8a64e6ca5472a30a85d22a1041492aae1ff1a536cb331b9e12542c5a3abfb2cd37fbda2121a05076c8b7a0e41468c963a90dedb9315d649498629396a254aadde95caa502865949422299bf7d957b7776d854259410929ce9dd9cb259daa50282a2819455a501719f333a3b436468928fa17932a556b3a66391c0ab63f644da9f5f79940514911274fe954de2fe613576a85b5ee996ba59e308b3fff6945844eab75628f6677595a7acb379c48ddceff4ef733e6c681924dd4c2ea69cf77b1c50f6982fb8bcf579e25d51820fec34710210fc449102405140a911c081152b11d45011e699464a25cffd0513a33bb674a3061cee5a74ca24cd565965072892c4d379b6cef9876c7428925fe797147e6e45b7452154a2af1a967ce9f846bbcc95082ddfa9857b48ef82c9340ab28533a6b72dcaa0a85b208f15121b263648924124a5a697bbe561f2f043bcce081839248984f9d6610dea739942071da12ee19224b2faf92472c59efaa6b109e257dc3a0c41106a5eab9058f318ba96fc4bfe5a23e6e65c49b426453763de56e404a16c1aa9df674f3ad1f2b22973f8b62eaf499d0599607419624e20f6b772b669620c2dc55ef727e8ca67b39c4a1a5f6dfcde47d5f32238d124384a0a4107ae74a0871ee5cc920eece9508e2052581489487fb688ba7b1861938280184621f7ee3a1949ede39e8afd4a0e40fec7be77c69bf4dcab785123fe4a9e51472cac55c7829e9436759f3929aeceb3af9807ff6ec8c4996dcc902108cc1a3640fb5d6886c41754e7b5af4d0bb947a7243559287badd4dc6d37f359b2cc183dd753eeadd2aaeae923b986fa23b7bdea0e952620753a74ecf4128ef8d621d96edb47327752eeabe0f94d0e1cd182584164cd6db3407f745e37bd011cab22c91039e5de5fe529b49ef2c2571b0a3072966b14133642570405d34ff32791a458b63f02879c37123427e9cba4ad74bdcc06a0ed26deedfdeb221256d60de34cd3a6c304da31e94b061499a5a330deda2b99c46c91a2cad71597a8f49a3440d9ef4f498779d94d05d8d92343c2ae3a588690e427d951234a0657563a6cc8fa7391e949c61519492e12c63cb929a8994982197d3fbfcc79c725d92484919b4ce372eb869cd1d0f198ed38fa9259d319a9d7a88c00145d44043021de0818392317427dbb468e5a174ba04291143a2c3f4fa06e5e159bcc70e29d28310ecd80104c87e60070f0a65c40a256140e967cbe81fdae28a2560a894ccde69cffa3b5e85421922240d1f692c1a2028f942a697a93c9eecaa8e2b14caa7b146111f437e8d21140a074abc701855236be35f65b6544aba90bad417ab3fbfb3cf5828e182268390e974164fa1396328d942dde1f7424b0386122d245fb838f5be5aeb2f1b4ab2a06fde2eeb91f23f4a6798a1040b9e16469e1c97f342c9b8a1e40a6fbd7c320c3f10830cc8999764be932f7bae1863785b10593aa368febfc41003275f943aa16531271586e10a530c30acf3b22c95cda7a9c6545620c617ae2b93b9cf94786163150ff26329430c2f2c28f3175e9309d91feb8299e5cb0db715c2df27c285f48be567bdcc12912b626cc1dc16751dc39810b395400c2d9c1de3dbc9ac2f9e64889185f3645bb2510dc4c082d95662f4bea0e62312e30a67fbb4e7b9a7b4ef5f21220331acb05c52f3537d16e494b80a761453f1a1c2e7e52431a89067534a67efded4fe624ca1d4b2f3df36ad218614da0c32ad7aa569dbbcc70fc488429523b386307d49b61828547bfdf973d23fe7121a623ca18f9d2fe64f9ea965599cb0341f73febc3b8c56c568c21d23637db290eac25f61422765d4a38687e78697c0c7b664ed5910dffec450024abd4cc659791ef1567af4f0000f3288908042597c10f92a889184e58dba9d620ac5070f341a06df83c70818c44082ad334a06a1d263e81c318e60ce3bf91da63dde311c10c3086771a45c9faab64673046214a14fd35d1915a13e4e42c42042d53096655d8d274a534953aa9c086333a5646b8a70173b271896de0cf5a637fe831e187c6dd2f2985970f9f65fa46d74d89c624cae69be4076369d1fbb437bb87ab1c6fea69ae7b8929f178fd42cae86df8d5a6b17983e6d5aae7ac8aaa10322148a2e98cfa9bb65d5b945988bf542c80925e26229ff47f76bd4ac07dde2cc628baae7c2b67bfac4166a1ed5f5c29d6bd05c2d0c4228f5f6abfafc1c2dd6b59197d720d3a656a15072d05f69139cccc22453bca7d4551675679122bd851db91f08ef0301b2e7241659a7eccce3b2150aa5524488078884e00416d7f98567ac31df789ebc02f1318826d9c2c69ae787a8000a27aee05ad0c936ab6978d842dc8c9356289feb2f3528f5092b8cad0211a1084e5471884e52c1a992532de68f4abd5f70820a453f8716b4dae559700a65e3a557695d793a6970628aa47b0693a2ee4ec45e59221d80c14929929fe13308d9a69971428ab3946fb8586bd0563a19c592beccf1393bb8549f88c2a8a39467c1a5cc5bdf064e42f1a6672ff5f2a6321d42e3cb3801855e397b5a9a6fd7cdbe080978fcc927b4f3d98ced9c59b20504279eb03b69f5d82f697e85c88e814e3ab1bfa767509af478f079a4e08413fd08352db92659974f9bd06ec7455378925ea626eace5726f6e268b6341386868646c3a00527984856ffcd869195b3cc25aed1496595529924824e2ce1975cbb4dff159bde4925fcf7dce2e229fd2f6a4e28617a8b9aa936932c1744c1c924ce2296a1557e846ab222895d52fb1c3bc84e22a1e66c4dbe516ecb3e810442996fcea2a61e911683e68de143cb319dd638718417bb5e372736e29ce5d69ec598134630db25378e8e6be9257d70b2886364f406910d85f283134530abd6f1aa938ccf9daa1a9c2442f16c6936f6bb25f122841344d4f95a2a35a6ab8c4e0e816f7a0edaafb3868889ece0c4105e588e76e90a810791aa4137b73644ce58202278c10921b6ee50faf35975fc0753283d7a10a9b080c7901414f9e1010aa5c80f0ec2c920d24eeb9a19b36432f41341e8b9a5f6a437d7098d05c239bdceb811fa74502b2780684d7f8c79efbc5bab3f9cfd3bddcb78ec28f2133fa0e4577e5437ffc710331cc88fca077870d287aed56496cd3c3ef4d94467b5b4a8e94d7b40b46e5299ee753a772a1522fb2738d1c37a19eb49c7bf976456a150580d224e021e2f38c9831a740e31627452b3eb091e0e1d63637ee9c4ea8777b82fced44b67274be7ed604cd263eeeb0875e3d6c1d18b9764a991e1ea9fd021a5f64f8e16f5a0a19e8317d25eb69753687f8d8f2142cc3891c3a5a283cc61e394fc70650427715852dfdddd77fbe6de091c2e999a7fd931ad87e90d7679f2972fd3f2a2ae5028686c1a44c6387103a21dd74b854e1b586d415743c5796c29363827d7321a36276bc0c4cbe8f84de927ca13359832746eeac91132ed2769309a8eda25ade5cc926c068f1d9ca0e12c9a54f58e67e92d9ee16c4987c73a5997ba3d31c3e2a6a7596ff329744216224262705286c5b897479d5f276458f3c3bcbe60adbd2d2763d0934bb1ef71bbed39150a450cbb98426c0ca24fb43ffa240ce611333bd6f1693af645860849030d129c8001af1006d0c9179c31d9776d0d5af6d00b95c70e7ea525a457c98c932ef01df32d77a74567a642a158e0840b4b6a2e5b5cf513da01244eb660271d6deca4579af8275a48a60efae4c2640c1acd02723dc7173f35168c7da6e5e0513b970e9d5c415375cfa2c6dd0abcde6957f3502f9eb80adfeb8bddaa71a4ed7a42055475277d517ab69a3b99c2044ea4b098639fd0ecfc49147cfc48a3032a70c009143a8890059c3cc132f5c13eb9ac29456666c68e323328c0434f9c90f616d15996734794961b9c3481f7a8a6555458bb2c8609cba9fa936d66affef06409b647d3d64926ddffd2274a58c04912d2f9d277d0b54f909069514484165b4e49f3e408cf769a8e41e990aad58911cc2e7f4a4f2fc9e82e5fc60e327698c16304274518c009111631e392de3f557afc19439e0c0ae5cf18f263f06893619c5d2aa5bc85591875a5f9ecbaf9f5e883916b9683767f08910b9800e320eeb7d7ee3466fd542814341ec8f738c18e3178a4608b2c0858400619148a8f2168a0b183043bccd8b10b935fa04106014c7c51e489f8f89146070a60d28b0698f0e2fed19de65e5697fcad5028bb60538338d3b14cbb9bbac8e594a11fa33cf42830c90591353e070f30c1c531a9671ed3b2c74df72d7ea4d1810798d8c298d4020226b41080c92cce6254777b1d75931959fc79bec4081719b49c58c0220126afa8aa5b1a97434bb7fa714532a65a7fe9fbb4bca756f8f89146079ed7030430610556d7fb2bea6539b4ba8a0998a8824fad69343bc89869f908b2f84083c8f2c0870f21453460920a36bc37c8bd5926a878ce639d5adb8ecb58a1505860720a64628a039894c2c78f341860428a518822147b487ba92b8426a010b220c0e4130bfa5e965f633e796e7be27d119742cb2fcbfe6d2788706287c926d4a0693ce9cda2686aa289059864220226989080c92526606289a376900dd7a7949f68520947c4e764f5e37f524309223f44483bc06412441860220922438410113286014c22a18b2b4a645b347bc104031348dc9e4be4cbd26652a73479441b77721e9a3842db0eaa2ee9e7f7a0993462bb112d5af708e9993082f1a0498b741b1db1c06411b520b3ac263152ac139828229df42a6cc4f99b7689f89146075ef0001344a4636a1783980bbab9c0e4109c4bed398616f4dca83ec80f46434853286598182291418538e38c35c3022684687494acb5172f12647b5dc002934120d39c89f06c04268208049be46b12f5f3e976569e42e9f1fe630754300184e97673aff29999fcc1e0b2ac96b210133f107180491f1260c287d6e48f6b5ce506530711f2c30d267bf0a100133d04c0240f6a8712b1f127459b5cf10104c8fa48e3bd4df04000933b1c93940b4fa7c553f8765850aa1a83750c16f6e02b26751080091d163dc90bb2d74643a92b14ca1826730080891c8e31290f7ddbb51dbe1f0284d70c1e2c0b386012075cb6e5f62db11e7f56406002075b741735982e95e3592a140a1a3d3ac0838707f9223d080185c2a3df0540802c1a6550283c7860f2862a6e2d83bc4fba31f21752e44ddcc08b1b3cf7749653c23344888f0ff20348901f6db842b55f68106a21b464c286748c86d1122d65ec308347912fa34264c748266b50846b6cad12211e2f35f82526c5f77cf5b613e447084cd2e0de85bdc9662fb5a6c0040d8adac8bdfc9d93d0ca470f9333a8495d16afe3338edb26666034f8a9b4cf9521edf29e6d86965a1c71c5840cc76ddce0a65db6eefc180ed2aee45adc742f6711439d7dfcd6c6cc3d652a148a49187ad1c476292dcb1ace0643276d638e23ae65b1c42f20af6c554ec7dca03a5e5836ab0cb7b83829aa49179efb58e21ba61aaf572814132ea4b365389d84deccc8150aa547fff01f92860f0aa507274cb6604cb6f59f5a3071c2aa0829e2c387891670bf5dd51ea16cad8249160e9997634b2f29b7d39960216f69dd53dbc6a02a13e2c3471a6a50c1e40a988c375a901b639684cac40a99104daa8009d1840a7f27175f9a2b9d6416af5028144a8f35961f43de640a95104da4c05ae62043bdbc647d9944418df72fcb59d0e51f54ef4250600205b4fa565b68f163d6f8bb10143c2121db23aea1350635be8913167f3be7cf7bffb2e62b264d48ab96796f59a150881421b2407ca4216488d3c084096bb4efcdd2a976dab142a1f43841074c9670d8985e2df11ae7ce8a0f0fb23e7af4bb0005418698282195f31cff337d6d6c9521144a8f325070039324a0c3944a77b1dc638c0b0932068f762128a050da0409c60caae141cfe7cbfb8c5743070f8210981c01b961dfe77a62572d150ae5043cc83031827d7d2f6f0b52e3bc1d081992864911d07d2eca426929a2869035f604144a1a448060428405a563d262daff5c4aff3f869871021e45d420c30320f81f43cc601e66e81806efba693bd9ba6f8608594ca043187bf9a77ca86670f520357aacf126a810d93176b44147304c2f69da07b9594bb6665028ec11d0010c64163cb6b7ac6dccee2fee205b9d9e36c8d1528542f931c48c33828040872fb0393f1d642c6f4f5b21b26354886c858c1d66ec108109768cc1c3032020834261f7c183053a7aa1c5b8f02e3a7bb2d479d155658c5d97592eed8ae8d8852d6c586859e4e5918f0a80600705789441872e7c294d66dbab7df4b102c5821db5821da5821d95821d85821d45c68e3a01051e481a6a14f1918bea33bcf3c72c25b3bb687441072eee342fbb689be69fa1e316c6700bf775c1db5a1dc10e11ec08c10e10ecb8810e5b186d5bde176316e9725e0b5f2cb13b2e462b6d323a6881ce2fbafbc44597057116ba18b3b341377c5f9705a3b2419d95bee8188e05671ecd5f7c4975163558bc41f7a7472ba9a34a5bd0f18ad593ab9b2c2163fe912b7c39e9923145afa87c5ac16c4bba85bb0c2bec6ce2ce434d86c6bf0a3d88cdc20be2ef36c654a1c8a772a9dbe4bd64d2918a63ead2694ba46951721da87846e37487d34d2e763a4ea1c73c21df4969cdd228041da6b84db6477dc135853e7594828d1be6a54df310b204d1418ac4858c3fbe41150a45c728da73f142dcccbe931fd0218aa52a17847c0cfa1f438ae808c5f9b65ebe66946a9f416190bd9e5af013612dafe31398d8dc1f935f7c2751854259810e4face7c174b6ee359da61e5b6441b0238d25c3df87ff10214588c04247270c9d94c9d4a173026f91e71b537f991a6dc2381dd633bd70caf4a48963748e2e7b2c7564a217f3cb726c5ad5c995480e82a851f980101d9870839e922f4b9a5b2fe983a440c7252cfbd0efecb238a7639640b8fd4791ebe29ab62bb1b7c78a6798ebf952072596d6b3cbb69e3b993a44c724509a6c776478d1ddf41ed8d1011e417e6ce50392e0b4cb2f96d59d47bc4858aaa4858bdf1b4cab90f032de5e6a5dcfa00f908ca88412c368280e0743813018080400014eb7365311082050402495c703f2b860a1d60314000141362a604a222c2c1c1822908502a13824108503814018140a446124049124c6d3b4c907914f61cc92158f6f9254d3885cf022e64fc7b179e5fdb6785ffefdca8acf3277914a11fae578a91adbadb6602c28d97af3c06ce114da2a78b4ec743d2da920f823c90ff4fc0bd48cbf7295d7d55b48588728bdcd3143c80d523e3710404452979f2a2ceff34f0dd61091bf2114b57aea0ca1aeba1d005d06316ab3af967bc773969a9099b6f2c541596d73f9fc52aa85987fe69c75298938bc824d0581e80ae21e6339ffc11f073e4ae57ee3e19bdbdc66f891c622bb8221f65073d09a6a2df6512a1cb3e35a765b6a9123181366255be8b8889206634507f50c97b2e2217e26e02f9d6617a8de0ff01956a88a1ac3e52e108843aa401951f9f145c5b6000b080540517e0fe2c29f5735c6af8dadc6a72f43bd42465fc900455482774fdc2062420d61e5f4b951cc264342eae645b5a6e7202ea23f6cb37733e00def27acb0bf9ef618608f11e061f3eae59fe3cd4856fdfa95519252719947f57512fc93ad04b8233d8b5c8db9efe33a5ecf14e2c428ab35a48ba1846c32cd89817fbcf409741e9fb83c58ae9f6f0b5f3e809c40abb4fa6c47687a9be8a3b0b4bc2afd479a804efe9b98f0b55debb7d38a9dd6816e9c2c46c2e5e7469b984b07b5d994506ff51536841e933fe5b3a1ea9b6053a3ab35a5b374b70f0e7158bee86ff98a31e122998226ca7ba360f837fca19ec86fc42d4a254115b24245228f8abbd42e88f8bfa0306347fb2b077848e595de68980397e0d346e5b80b40c73eadc94b8e23aa5f0ac5f67fcba699e0e98573b66059042b1eae675fa4c6824cd1f648e33eb3fb2e13afd821a9eb3f27f377a9896f83a66148a340072b9bf48ceebff087df473a807dabf16477ab5fd81e4a416018bd38a787fed135272b9517d8ef1262fba5a67786937c29413f5bed3ae0b3270262c9768e181e562c531e8a507bf024b93130c02c90c3b4abf68ef873566c5545ee2aec21b7428afdce8d00e5acf6f55ebf8fa7bd5080d0c98093614c9400e383d9dd9cdfc6dae9fe6ab2b9f088d751659877e085b1e1cabe544675017e09f731e543b8ef4a60c2c88d7e081f398b8979680bb28d4deba8d7e02d5f6d0b7544b658204fab905657d2ae517f81e26524b2559f5eacde8fd920db744a92063d12e3e3d19d84cb447447c48e74b5d173ac63efaf21c46d024a9b3e9c2505dce98a34f846f65c000c0c29366005b00cc0907ec0a23e1a19f446c5ce1e51bd789f9b1f4dad06f4c9ed513c16211c66d21f90581ddcb95e837d3f973afe2756b327841d8c6a250c51dfb84338bd81d55989b6ceb0488558dbd8467e773df7eb4ff84e2d0d11f2ca8c8016916d1802e543f001392dbc79aed70b7f2fad31e397c803028f4ac43a8899499037b0df4b683d5488868bed2aa7c5a31dba38cb5146dd5f125554b816f2c92ecbdef8370ae4cf67260338035f912a2bb2bf32f0dc8d65b43d209cba369d4a3fd1c8544aa305ba237b342a307ab6f4597ab3d29dce7d88fa00f7fe0be2622b269453199f669920948d50166a089b442f40050692e1ee87c1f0464b8920c2d4997b0ac1a25aa459343fce334b037a961cf64241bda729eb314e260ae08d455bc6d07476ba421af5d6889bb5d9b3b0f53788902c2f4c0586da53df04ebba8298a49fd556462007a88e132d786af822f000a60c3c1084e6106dbfa230207c990eb6876fae7554c089e5ae3743be7ac27a831d292e7fb786967f733367e3b7c27dab5e42903fc605a804540331a528f1d7a77c4c208f67eb4c6d70908dec0babc9083063d6ff5659c26c1234511d4a59f73183ee046072a71011e02cc0bfe1495f10056eae8293e7d929818225134350a8824f95a169d201636d3a7d812d131882e31e49ded7cc83a412ae38f13809741dd53743a26e484b7e30e7a9982a7489db334df32f82ce8191e0aebd5d40499e467e1bd482c3ec0e793bacaf27fe3c3ea7300ecc6acd43f2a6b67371a5738c45a0268c7151e39b2a7583c376efb943d04a7b2f4a25ab51a78043a05b0cc1f165053cb38693c4007999fceb2a61c36cf0b4834559c9e0a2dedb205608783b0fa8948dc74cd31b1db457ae29112b56322002e3d3d36896c42b572abdee31340eb4ec8ab4b8a693a1961496699073f0187e8c093b0e6a5e744bae9419ae4955cf071ae0ae8b953e9c7dc0a5569ea221ce916e073d56ac5f821d852ed40ed54f92146bda843e4f6024884325e1f699c634d7e41f9f8d5533b73a801375ab9191f6531d142a88cdc91cb706933035c14fe0ce3be84c35f1222b4baebe67a05c9a7d80ccb50302032a2d30967dd7dfd66b038614065e44fd2635b86e14e3e091d70f65e1241acd042a52b204955caf85e32df6a65e1bd120676564ecb908bbaa8bdea60be441640ae8b8e50ac26a731f3ad1107f5eb3fc3c813e8f2845fbd4f7e096cb8711f7939510a0d74400fc9280166cc2f6b6176783f3b5af67ca7f9db85f95c222700fb1c6e42c15ac9cc1e4cd964e8d20f5475efd135fdc443204ba6679ce01f6dd2eb97b27a277f9825d31dc93ab81a041b7560828a2273a27ea63f9844027637a602304ba782e32fe757bb92f82bf786131dc08a44b99c21da14631d474291218b159290e68012bc507ca0e1b34cad74b13c2351285e8eb881951daed72127e6e5abd1cdb9b013a1c88080d2c76df3233a007db2277a06fa7b546814a981da4dcbe2a81fe6219a1bb64930bac39671992f6cbd7fca3e30df8e2c6399be6823bbc7e9d5a5c1786a80e9629bce8391e79729cd110d4c12d64832f0b6a2653012a02a4bc73fc53ea708b833d2fa94d0368143b1f9f1fca8f150561d09bdd647c7b657b8c878ba4fbbfbd00254846b7533d2e805efcb5e7785b8b4113f653440ec1f628f4f1cb81285c2a5daf1277a347935bc82b6617852ad4dc621546517c0025e74e26d670ce35a409e2bf1c3d192c836be7955ef015406b1a5c89c16ea40ce36b46b3090aa09deca9dbae8d7b0633bb1ff082be0330a7d04c2d1097c3e526e53007930c92cfcfea7d6b4b18d998858786ba2eac61812ad5bb9da21ce6e99ef19f91088efbe51ce7a17188c97e06733808a04d1913c510ca5b690735888e793ff6be4ded66eb8a5ed47f20dc8b7ec018cab3a3a5c9e7b333ca7ded9b146080879d49d8eaa9d0111cdcec4ec44efc97422a66de0343e5e3259ba78c015bf7676b02ce6d13f732331ca910e3a1cb12607ec3233a2e96b43af39374bc07be0e945bfb086d6a6b9b1d2c3f5547cdd2f10c4c05f509f6f0b24c791e515ed381ab9bb5608c57ec5bbfa3a64d1fabd6420b050b1fca688d748a53b18394494449868dd6a2ccfd35436776d4296acef5db6c8e1202095446f5ee71a73bf3014ac43817ecca04daadf671fd023160366d9033b4fcde52539bc016dd1b31fb0dc367a021db3c061b0cb2d9f1bf0b04cc18b6a1beebea7a1c00dd3e0c0b6d02789e5b06a6e49c8d8484f794282649710c699752cb14034812fcfed6612c0b01e39d1bfe31ceac89d666bcb46e32b4b88857f4ffda2f1a2303d3a0daf8c39bd1190332020fdfd74006fe2226e614357c317a9a3a69c50c270408aa3f796f78f2f144ec3ea47ad676a57dfc4ad7e7f4591604821593a46a80653ca5c58d2413805c15e07d60c2ef834d27ce044ee35284a55f95b4894ab7878a9e32c9ae572cacb0459c59fb05b9e315e4dc5ce814b897c05194668878af6780531a1776bc6017de10ccb91bf517d9fa48a0434bd3501180c34a63b02b365e720d5e094698c7ebc90599ded25d909e277264ba33889ef314b279bf238a6dbeb5426bd7325460ac48d4361a4c754b496c7d37c14a7c25b7ec5a271c61d00481a239e95af2072b821e3e95e3797c63a28801ed2bdc3b85b9da11a3d8df67590815f24431bfea047b4df0e177c5b691572da493b8ab00ab723728e29b38969ff14af369b8e44ba3bce30d806ce5e19b5eac9f24d21c69715889d8772ecb935861198a131f21096cff2505518ecfd50cc03a585cca44188dd9899f884408db910dd869ed54f57cc8b2dd1a68ed0ffbde828517dcfd349c57b3642b1fee46f2ed837ab1764afad0e5d58517d7d5aa1c19085b9b69fa52cb0cdb0a91e6302f6e16068a28712a8e72c52b10277d4bfe46fd3694e4e76230774b2e79bd4d8c7b497fd4e072b8288fcfaefe8d8576b1332c9d40ff4a45da456f6228fb39807cfa3a4833b25c06d98bd339a87d7e74600f6f66097b7d5907b6d17471f30283c21ea15d5ec4d21eb92485cc06efe1c9d26013627e0600cf17f69bedf1253ff37380d9fa1dc4a848f7c0bd0a09fc6c5ab2be157b30036bf33c06f4d715a1dd92402ca57547be5f04e32d295600317c64efaf7b4de2d90c1132944138670b143d8cc68fa80afdc03013a3f127eed83234bbcbefbbffb1c33f8356c914656da93f4f40959d228583757ea75903b230fac580213e5d7e560676dd68d1c9affd658dfcdb670e981e07259ac92915b0b0826a869194f4d415165a0d4347d04387f73ca1d7fb07f218013c43028e2f1c2a18dc7603a39bb4baf19a1adb141c6eacbd91fc61a68f4460bb97ad2e993678b2e486dcbdedbfa7c2061926c7168280aae5628845b467568f453a3456bae2151d7d82f05d3094c882be900fae124082a54ec53004ed6ccfcc204c7a5ca4f267eb17c3de46c7fd8507ce6f161b09bcb32ddc798dd9712978b62c865ca6249a18c42d9aa89758c1fb41a7081ae29c765e17320801f2ce4a118a8940f7ae0ab72dba27dbdf9d0886c95774b2a8fc40d8b36e2b3032478bff87b379971236bb042dccecae676b2510df813e49bd3bbf2ff58418d609f3ef93b583c3c38b07c1171c3f792056b56420fa021715d59714caa105c946874481b720b258592fc14cd453546c3b657086f03538267025f7dc42108dcb9c61d697b566e28a52fcbb5604bd15b6aa2bd4ae302cc3daa8e7158d673ab4bb8699d281180907afdbf2755c23f54755f77871769f1eb3e986030ba9b766bd8c11aca31ef87747bb09ab26f5c2e69bef25edbfc1de336de6c665e2e514041ef2ad3f038bd93087e6f278da90c3e79778c455b567cdbc0dfda2ce7236dd086aeb69862ff1be0eb288fcbbfb39a9308e4cca01ff3c0fd47a7dc3023285004f77cd3735c5e46dfb37981542250d5fcc1e2078cf743efe0ab9cc9b50fdd6d65ac17bea65d53dbdf88f048de4bc9d347033855a8f305bc221d354941d8863c23d94c9eea54090a81d574aa2ec3ee160affa0bcd4f1c71369b9a417c3985a88c268b7b097fbca4be1721291a683007354b0cf2a8fb33543ba02fb4b473fe2876c90a769c704c1b9136b5e182c82cf80badd28c97efa100b610c210ed322cd998facc902caded72ac8452e7a5141b4d29a63948daba29c66c19698c07d9d168529fac9d5b9014437bf2d2e142f2ea4170a7c462db56ee58a730c8d130839685223452b860cf725b5b1f96748045042d35e05fdee602207e8cec64097dbf855b8679a531b6b25e6ad4c82493231563e8d7c9ae015bcfef013f92308b8f70d2e79d2b6271fc20928accb3c279b4bbe5c9fc6c43a98b610f3c24f39376a091fbc59746f2a3a4ecb960c370b82b3935c07bc56f45b2e1d24c82e9b03be56e8cb7b776545275add941fd54b5efe6f32b5902b53c9489345be3905d14165e3e70b2f49ad4a759b022efcf12822bec721539fc701bafdf4b338187679d6722d58c5d9e27d93679b27aac335b67d27f3b884b659be053f332fbb4b42f70a6009884277de59d44baebf6000b3bdd789673c663fc976f4bf8c5e48e37186eb270a26e35f583212dfab266a479fd484b54dd85c3c9f6dacf10a490637877a760afe611ef21f770b8cad4246a08064f6bc77ecb86e15db1dc4bcb5a1c3b9c5e004f168e876d67cb9d84e015cd169e68e4f17dbfba9d7715a375a85f6a6dd402c191bf0af04daf056f37d8d7935eb6d96021682bdd165fb34729dffc7a1ef93826dd167755995ce8b2bdb517fbf15317ef4d720841dbe52cb29057c88e894e67b4af3d1582804f3142f07c8e4ce0740515cb79b90479404c3302a10e51a40f91fc716d87c062ed0c94cfe65e9ec7b3faae25dc1068ddc3d0c2fe4d8319bc15798a617a6a8579feaabe6fea5e2b8b0b50368f30170e53d330531e1ae4354edd8c4e98ed0740058aac25da09138b0f98eb4db8f826352d1627a586602551013be13872eb56a426459eb241c158ed2364f53a32bc29d179357116c931ac46de56c765b9d49ed855417ac28155b89527bd097481f4b82822cd0606e3b6ecd84fe30d5168bd328e96d8b5750257baee2337ae86b80c410d9ce3880a315c6cd469d16988f5314351a093fa82410684238c0ef3a8c4ffa7432418e460859a88619d361ced20e2f1e06403005ef10f518a8a9d1a3fdbc9ca81030c323f6f18c62df33f4489044b4263e5bcd9c0f121ee573d69f07fe097714810f93351cdde3956808977406ff37fd6e1c48a8acd354c86faa268c7e5e2dbab763035d6362bafd2626edf3302fb88998ee1ec32b77ae5985351abd12fb201cbe89afacb95274fba834af289db09ece544cb4b6e26dedb3b7e4ef31a6b26d379a3444932d824c58df90d0e1fa34ce2931f0e76d48fdf20f1976a6caa859eea54332da6a7dcb6099e90ca77e72bbf4c14d50137b19a12968723834292ce5f0eab2dc1f7dc2a14507d2bdfd898995209bf5f2619cf31c687bf093752bccfae5e8099e6e09df26764ff2e80d0d03d6e2746a1fb881edf551a2480f0433ddf68ec0be902ebb1a425c0a156b4da8772ce49c60c448b2b6404435414529fcb62731c4f7dbbb17d7d1697ab99414edccad59a8937789c977d6fa990df11b695543e8070311b3b1096a2e81b9197cd4c9559f0881a27c3583e81d0124a59f7bcd870ea98a3988b2811556e1a0266e15e525c0085d6236bc1bc13a24f436068bdd782ab7773e0ec0cfd3a87b63edcc4b465e2d1064ca9cefabf9a47310d8ca142765517f08ef3365db66255bd077720402876b7a7da307f8c30fd7875a645a19d6caf4c62868617acf0017f0c585132114d5da6dc51a68399aa2245a9e4e8fe52c083e42ba31e5fee28eaf34ab2b77f76c4727157a8f8f89b569d3c65eb8e92b852ec76e88b204ed0f966e2297078c70b0ad677f94b372174e4288f94d169a4f392dd2f6eafaeb36dc5db35d598963994cf769ab318b95bac201facdc6da4153594786c6e24743a2c532d12769843605de9017bf99fa43068fe26ceb4bf278e67cc9310638452cd17636b3d74100e3167143fc1fad3a5512b4a4671ea92f2a62d0e2e2e26ea6e306b86f6768cccac7f1d7dd0f7a35634dd6615aab895cd87d586dbd8a841ccc776fdecf414aac899687867345ca06977c3e7f90c0c5aeeec4c394a51445ae14e9cdf73dc37cb2375e7bf235cc75fa324fe4565bf98cf28013af8b72c17f8cef6ac84d1b6479333d28a99b8b830dda584aa85d850bee164c5278d2c2488e899f49d7d5a7f884e7def89ec984e17abc1c5793a9e300728a0327c8b3d92dd638c8c60fb850c583a495642f56628b4b7b75bbcc3e0af7fc23bf0e3b409c7be1882fb111a4794caee6a4d22f5c2d8321070f018d32635ef6875787c8288d9dba390fb301ee51ab9a5c7a9f26e023997d6c25a903b40b325d61c3399b77d50a1e88f9c1b5280427a14b2cf3d34a9f04e3d42b2e85dab708a5a164f76a04134f2a34eeb6df5ece060023c602c046ec66b206844cc0db3b76219f9d539f1a7bbf9a67a56d89f6b67abf1885a37106426ab228296eaacac5a79e921a7b39071f85b981d94c1421dac93681031d37892ef31a88bf65a58cf3a74c72a2466060a3a4e8741c25bf922d27a62d88602c8d379492af56cc2ed7f3ae6d1861e9f6e6c660bec7086f6ab6e1a98f1af66753a7f98e50c88ce66767dc4a009d96e63e485c6cc6682ecefd4cb52f655acbda44d163ca21276d0dceb0e873c8ed62c74498aa09c50426119b98c0f04c56f11838e52c06323669e935c33b9a498ffe95a702a25bd350bd790073e978a1ada39d1e25fc1a57caf17909ee19f6ba37d53fed8fe9bf1dbdff7597af809e40c72fcd82ba53b795b8134acc202d071fed795274ac05486f1e714bc69771652ef4e28e8181d033e0a2322fd416818b8a58d9b6b99351d999c497b8c611843993bbcb29fd491e1bd580017e5e2325f2e745f4e4f8d165c3ad010aed42ea8dd0bd0e2da95bce57c94cba3f0fc96d7bafc56bc8af2b512f876b3a2c5b1803d343cd7925d9f5f0d1c0291bd354ed66d83b24f96e836410229d2af3e7e22e82c26063a8e40cbfd0c187d0ce2f3db5357169a549a6773b01a51eb198ce13dcabd0b31b58757fbccadfbe05c8b8ae82881b7fc2078f812cbe9e0aa9ccf1af3d046a4d12b11d677046c38d0aac96c70be69f3167ed3cf9be6e54f2c4713967e38500f1143a68696006c1fbda5089fa7325a0ace58130b7ad2cea1b2d668892bdec043993f804888a2498393c0d11ecf1aeb51a255ea7d6b99487c35a3e0725ddbedc9ad0531448f34b80ef8112305b592f7e76a9dc0685c64cf01f3b860dde56ac0a4aa22f52fb2bdf37a28317c7036c68769d8610c49755f9a3b02be455b6ce50c12f7817a0e8a0ac295b0e19ae0f65983bce29ee1db4937fd9e4eeb2320ec7b714e3355da4026a181ff2cc3787a39e080f001775ce65267f1d3b1e902c3c419301fca08b5ed6e54e8659b4f841461ad45b9b1f7397cdeea509cf8cce598f7cba568732c80c267ced37eefb8d4cf7bc6c127b198b3e2a3557f8720c2491c3a88dcd86e912db53f5e44e7d08100f1628c4b215e109530173441741e233dd9b1f999228a0c2ad643ae864e31561ea73ccf27e29aff38d8bf0c0642d6c09d92457b9a059178534b826466061efce3c8d82b6e955ca965aca3625038e121ebd4633b644673bebd113092fab5c50117699a60d1a5e7690ed63468f14149ce346f18e4dae6cd93221e1ab36aa384c427fec7a3e937596d99d76295308a3deadbe925dd56e0f01083b1b29808b0693ae7d4b78bd82567ab0043ad373263dbc3313d56d1972357aa9d87b8e34fea0cb2bd8522a17ac7f8433bbd8cd1afbb6824f6afc9d5de2c7aa6dd5e9bab03e9d4aabd4a85f53dbc9851aa379d66f382a66a56d1a8a9a120bc11d0b2137c9fffee6b4bbbfda0871ef14b6bc2234c0bb0b9cbadb7e2e35e3159dd394f2736e4631a317f07207f602f84b2d50f0576b2fbe2104f3dd2a0004fdde3160d9781d5991d941b22d38ffd89272276c2de1380cd08f322d0d14948a90e39b435232cbdda9e015b4d5c0863216b2ce4063e16b2ff4327bceb01c56c6147b63cabde1acf60c2b591ba0f149f8fc87916c06b6ab329c4dab8d2f968704151ab317aa27a24ed6a8dc0cef3f4a6c52de64510868a66b94630381b52e3c0fc371c0d4ed0a3a50fde4407ed9d2a1fb0fa94f14a21421486b0d81f24f4d61dc0df9ff24635b77dd90843c06efe20949780ce8af9d9409264ab9e2ad564e3f2ce4783d9f468072206cd1d1c988aa1e5b3cb212ccb5757e64f9a912b038d1e68e7fa529f0b03703916dd2fa302fb9bf60197b8f3eda3d4a091202c31a3b26064691a939806e4994d6653a01b318612c622d7a774e71300b4b9f17294c830985c792a8e2cf0b2b9819dc711b780d4e91c69ffa4d12b2285039752bf0161666c5e12fa1f080e25df43c60ce1934c7815ea0f740b2fbfe8ac29934b42c31fee3bd259ddc8819f14ea99407bcd08bea55ba7350dea9948804b0130475fff9d0e6015abc07095d4e4a0a20f68ba4c920a5fb22983a6ebdf7a18ac9e3106db503c0207f72d3fc8324ea783a6a45e3738502fc8940ca83aa4e414f63957fdff3700ee7d50e01431f1b3ec5f4fbed9f4bf851d73bd3aa241ada0cd29a2a3e6ba6f49b305fffb532c4bfbddbf9efd42ce005ebbd258ce1f706a691c15ba2b202703b521815694c1031974f9ddf7ba0a559b84b4a40105af4988c3d8c429d3d693af3fdf45a74173b07723c4da78f5e265f0d39720fe3883c4c3db99febedd41aff6bce3cfed13caaf803980bbc700d2c4914c75d88208fe5f612ec571edfcefe5a691e46a18fba904adee6921a6cd450ad2a1792053c140ef0032bbf69fa993ef72e07e511c58755b0060120aaaece9a5844f321a9b496519de19d1852aefb032381a9897dfabc6a064afeba1a768679e36353be66a79a43998593cb95bd148e8eef613528f9e2ab77831c32d10ded2b8b6e4312e15dfc7215d1063aa3acaa0bd7ac60964937cbc4f83358c614a02af128fcb2bab69b4fcdca540ad54a421f69290b94289b8d9bb94129535775e2cc88525d1db4ddfde0c963baafa6ea15c5066826e2dfbb992ec8518f893cfaf880631aa8a67cbd5abecf5caeb28db6c32a0330f49c2011f1d8da2c50ba62f8838d0c9745b4daf0cf5f4faf5a151ddd4d0d07cedff0d3beea7c11ef9fefa7bc0a64a49c55dccd5ab82b0b232e536061468cd3a9d7b572399a5a4782fab0e167eba86cf056a552fa4883694f5960de9e1ff7678740b53f4905400ce6b544b75152ab20543dc5dd1c83579cfd943938ad6a37db0999bcd727da6b83eb7b4adc59cd6588b3c59613113a002b4e485356df6a411f639ecba36d3006b00a5c8506d7cd857020c584165facbc47c535399473c7e175ab0e796c78205e5650b02457761adf112870f651f8193951d3ab6ae6eb56b1c99b2fbbe4bc7f38e69adcbe5f605be27440e75e9482c6511eaea35d1a2b5b4f1fb8cdaaebc00418fa581cb4b5e4b2ac0c509d42aa9ba211abe3c9ae939336c921128072748c210b31712d74f481999efd70e325f1b3c1a7dc4545e9baa3484a995d4bc22cd7da7650656cea060b1985e74d32a530ab16d33d453f927aa34f9c2634262d4c741727b2eacd6a3897da3d2316e92507d0069c93be763b523652bb3e8da6749b02f2a68e5c00316230556278104afd64bdc9cf5708ac84e45d94f64f7686da2a6e68f2aff84f7f2f1090df8580dadab681c94a6ee456d418aaeea929f834a9567f1ac649e814e26d0554013518524160cba63fa11e998d30a8cede5ec7b3b16a4a498ee86b81b4380e205a7a173444f6dc230d4370814098fa422c4857ce506a7481afa038736841c095cc94f300c5419315330af6449154f3c4994ac04cecdac53a6dffd31beb13af35b81542a238d8b93c0d5745fdb28fb6e4d82aa9548d2319194fbd37b006aa1bdbd8fcd78edb06493bf36904172149a0112dab7ec815e356b2a0d8e5022e03825f8291704ff63eb74d1e0f18d315e2b4329bd15fdc5b65941750bc6162de1054a609cb0cb13025abe620b823c564de840cb3cf3064f017692a93d0e6937778b9b237927430625fb40a427ab9ad7cf7b60e8ded13e8cb34e1bf4b860a224b991af0c96f126d10f41e62065d6e8aaca3cbebc2e9396f10b5a60b4b26741f4ebefef8eb0cea99b7cd8c18abf578d50d4e9331c245f3617efa0a02540269bc81270137a90663e6993a97cbdeba39bfadd65d2306e5bf63ba293e0d0afed6a41e2e52761a00f83379a69a058e7108c81ba4fd39ac4321561df4da92cbee026d05762f5bce24e3c4527d23931fd4e987e137047098aeeb82413e01317fb04dc4e344d131fdb13146d2276a131269cce44629068b7154f5389c026cb745bd0380177279adec4639918f713457722b199583713476702b14fb4cb13a73731314d949b89d09ed8584d9cbb09d099e81824eeb662689aa8d88e044836bbf310f2f8fb1c73db248e1040845bb1d3b83fe88f41c98bcb21fb4ef542d3a958a74b9c2f499c8224f6fc576d6e7149e491ada983bf3f24f30b865dee50ff15531776e0a939947a7d821de30426be4680721278faf8f033d780624167cf014ad02f05fb24bdd92c704308a17d835b5fa91a226b22ba99f0cd3e01a8ab90253b817fd18bf9872f1b397e61975672410e91310de05f49329a2968e93e06aa9de83b78ec265c2aae5dbc6319a3b0abe191c424b83aff43c1eb5379d27fc39e5a23dbbe6ab5daa46efb810adeae2d2a34adc0cb6dced4c5f582242c4b787c2b763a9092a1d86749d63196e3e7da309072a53e3a6e02a4d13511ac1a73ef6af557b7c5ca87d0adf4c8bcdd621b930795f124ce134170ac0b070912ad424edd67ea5aec5cd3b1ac0a4e42388583e5b7ce6d0bf41a0a23170e3622352b0c6ebbd04f0aee0bd5b8626cdbec2492b89b94ec6fd35ef9f617ed0527415527691450830f4cdc0e0aac4b75460f8aa905ac340834baf2dd01405d5d1f2f30e1e17f3a03f0dfe503e55009307e4f3082daa928b1dc14229d10da6d85deed190c0503a3544c861ff5bb7fd247ce9608e505b97509597bc6b5ef49dcf92adb1916dab2816a6fc475eea402e6f2f804d5ed5760070bf6886689fd838f468db62d5425970f1b0814e6fd64e329c31e022c98cf915a14a108fd36876eeff6ec17cc8e9296bc210ef312588746086f46696111d2734a08e84c56b84804082d6437275eb28d3df07b45cf196e2246fc09b3e55711bfa11e2677d689cbf3410cd810974ac18a0cd84bf02583080d9f0092d8666b162ff057a231f1f99c8edb449964c24e00e8df1999022a0050f42c9ce2a2fa843eed6d67e6563ee63c6ad433651845921ec6aa9f3c5bc2bb571eb6ed9554a232c8fff0357c5ae840dc0edb8e015509213f08d0e23c3232a5ff1caef191eed8fef74016a1111c910c48ce5467eb0bca22e9706507488668cf7501154963987b3da1c6843fdcbcaf37f28a26ac1c4430c12f2abc2aec74f2e6471822023e3cfc680029d04e0f0cb0396705e1c62b21b3e71ddf495892710b8bc44d3645fa5901fa7f4292a6afd05ea11bf2253736b7d57c7c20e68457a07bdc9f2c31aab7e7fa1a45700013b3f364633ab523a0c43cd0852722c7b28ea6d99238e75b469c0bec42c58b7181e812b0e1cd0a9a59e7e29206e65232a7abc396171f23c61a470fb7b94d2dc6ba45628259bf534fbe05d2e6a21e3d5e3fe23082029139915094020277b158e198df99493b04f10d47b525990c0298837bf73c79e43f96e32c51cd9398cae5b6997a667951df360610e85cf34c5d525d0b0d6ee49f204c7c6487a499c20db31592a7dc5deb4901388db473995f5e795102826303b6a259f708f02f6400ee5c1098d5e312d9e637bd7e7d59fc5347b5052157c21e507d7f74ddd5cc3848c912ab0c435ff9a3a5e2425e3f30756d1c31b63212e246d778043f58a3d1cf9e5362740f6f99f8913daecf31f4ab6d8f95c2db5acf6bffe1af4bd32d31bd1450a2e199d6172ec1732909433283e0dfa1cb53ff925a110e4576dfba1d19499630d14e6215d5ab966dbe60d4645c0e24582cef8189c6c64699a9c3e1f9e008c978f2a62a639d280a7c3246e5acaf8088fc03f33af9e6f130352df6eee0cf9241941b6982841cfbc0cab751b8261158f5eb1dbfae2129eaa4451393aeb4a0c0db00af0f05367e1f5286079bb4f727078f545a580c69adcf2238f4833d17b51348a0fe6a624284d7b72d04c6189d64cc48b206cfc2e72b223c2e89948c87bc93766bfb1a0b0ec857c342b148ab67f3f8c17d9553bb3cddd31832bc780090ccc6d7aeeebf7450da0351782e8dc9ab2015951ad97429f6043a92cb721b18394aa088a8868ace569a4df5856d400694f0ffcbb2bc0f095e097015d5fcad111d39b0763d28f3da0069019fb85726b4f3f8c7c0c21ad7e7e643ee44e91945781b627c3ff75590447a9097c693ca5fa41cc99b7c29b5ef71a699f2e512871ad5bc1953c01933aa1d479b0f7360f3d57bb1c5c1314c8beabb924bf9b9651f819c1563ac542b1cb5a5efa11583fa1ced8021ebca88f23e6afba004c656747c168f4a7ab0457119332ab9916d443fae9aff03004227c7a4666d4a5b68ee7fa6986a0983cadef24f30f057274af4defaaac08c6dd353c3c7f4307451f1d9b03b234006abf03204e6243e09b5c57fa150934505dd42f85b9665cb32599c72b5d1fe8411580691bc9f447f1eb63503fbeb4970150ed6c4f2e7e71540255826f4841b0812a54238e720831dec20d208acb5e0ede1683ff46483209e26c966cc831907eae0d140323bec59e69a9f075c5c83de7d2096f030c0ac8b164cb1299b28c41ff293de6deb152d25f60e9429c44312e675ad7c9e224f3940228e3b7ad176c23f751c511960a6c974f78e44c8c6558508dacf4912e4c1a7516dbc0a0065565fc8d3767fbf17a3f8d8f2312397ea89c29d2da54ec80d7903cab31f83cc87c205cad849e894b398125bd08a7de7275534342dc99065ecaa97296da41562e3897ff4863c316bcc01d3d993d647e824b396906aa8bfa1cd527bbe22dffe1e86bb66e8199ea72ae953d9c56a9a246e11eb00274767ebac7a699b856def1828e1b1a2a43a60f27fdab85aa86a43d2b646670146df6750271227d0799324802d8c5e64f6e81573835109e69bd80aa039e1385f783d6f1c55551884a76fec1ebf24819aeff57fe49fbb77589fd8bb541eb17514a01c39149610b12a501b3402952cbab9c880ab38d86f74fafbad067acf497459cf7fe0e5a78671c2025b9779b69cf24beee816c548fce2a2d1cf478e5e98e3893b58734d5967f855260e8a75954a0674e6571f842b1c684839b6692486211c9f7860e9dae0e1ee5e3c024fe931476af4f7054e40c134fee0c54e862f77f046f32a17c8b29886471b6d5b9c4d5e1c528f3c8db4d68f480ad5636c9172ae69b7df0f4f4f02621f6a4690df330b58b8e4389cdc2255d6c231b4d2e14e9444610d70f630de28cfc8d388eaa5c5701518298033d37a0f4288e90d007c0fb3f38468eed40312dd88b723b7183100974c4960635b1840acffaebe5343e7cd1aa12cc8110558e66d4a3262f802f7de7596c39af5b1c3eaf8376c9fc1c7906f3c70fe7cf0e3f6573739b2f14318f4fc342381137a18d9e1c887046086864c59a3ef3634cb63d527bffc5f1176b99dc59f0efcd405c4e23b81e742cc5137e16d8d8f97956103165b7409820d7a756b231169cfebdde334880ef156c729ffac6b544808d00c0147a89a28fab023b78c8072015683052c2432f4d17514767ba02c208f04c1bcc001c76a40b755ab64b87845253bc90099019486eef1aa041d1bc5c3a5bda391d0468529353d2642a94f0b14af3bff03a90217a94b4b2d8b5c948447d28554d555542ca0e9dfc2f5ab82c80d29b1b48ba83ed59c6c19f412947556bbb23c749bf13923348e4dbbe9822e2dea5290ce7385aad0f2f6058d01168641803b0318770158d325350609a86860dba33d9cb2643a976d38b7505db8d2545f3eae5c9665bfc288ac86df4031ff041b215e3ec810407486c178174556d0ccaf199e32903cee43c380f294c4ce9c0a40905c0cd85a08e8669f382063bbf56863f530e4b5ae086c455b8fb0467aadbed5e16c8e32168767ba969c8b9be0ccd002b386ebee80643644df787603f89d93927b97aa3440740e32251565b81152de07b8db7075ef295171ba3c8d64e0cfe9b6453cfafdcf50892a4dbd93391a6fb3bd4cca48834a8ab2b15452e294c157270e55d37c40f1002e82e08b6d295dd88f4a1f572b044eac94f26c54e2b1fb28cbdbde34d8e9532aabafb49c3951a958276738f7b72b04f68d4c0668a3fbe6dba450696ef9f38381f3fc26608a322e0ef017b13f6fbbdaabc81e07d0e1611f7abb610d9ca62ccb80af66206428781bd4cf6c95824fa5cca34e317291f9e4a327cebce05441179c88563d4d15ce60ab27a3f642b0dc9c4048df153c1f468c84dc5c20cf84ef31d428b8726b63633978b52980e4b93b9d4494d568d57f9629edba2cde58ee36da83a1fbff311ad9822aabbfb660e7f0dd82bcf380e5d52e14585f03430446089df0da9274bb5cee0171b5617e2677646eebd579924804eb3f4ba0ce4a8229dc041a8be037471263c27a3d65fa2a56ed1900737626f4a50c3a416f0a552d45a97ae5aa40010532de1b8e3c1db71800ee22394e6cf7af3bb693ac3654994eb60e4bb1a2797f1fe9b6fc731314d6208ec51c0bd23fa67f8fc7c78585954afa1b655acdc2d3c7a187d069cf6db68a36f0522f32fef0c7c8e5805b32f464fe9273997371f677c4607f5e0b229de91cf53557026597e2daf47ad9fc2bb1a8901a1aa058a0e009f88e3b688150bfeed3ad6039505bcf4388b5496c65e33eb0bc783994e5f74ca6e30feac1a8c607ab436ac6b9e898b121f616c7595b62d02ec0b9e6029a632a6f3f4e9f9d52f6863d8df7e1ade150dd9abe00cb54503875b332a72f3880ac151476d91308adb342da58a41856c473b9628e409883297d11b9c275f5b74a627c5fcc2392a4e00ba0e9a5de0dcbbcda65f1677283bd2a13240556084f84dfb038369b9526e4ee16024859908d1a592da6864c32ec4249b5814912c67cc3e3b55f299bdd1a3045f11bbc7d49c52467f6c36c3e669b8e54e2ed0ed9bcd8facabd7fcd114b3f99f1bb963f1e21a33217c7119b1974896a80379b5d5460fcfde28c1475d17a76ff827cef2096f2189ea6f3afd6ea032db03cae96b27e9fa1e7bd3910a42bccb9296bbf2d64e7c85be4197bd2d8e1da692499d43ae7ba871249cfe60180dee298472340584d4386fbc454b8d43bfc504e69f9609a671036020e1964a7a375469cd4328951a27f7d3f3b02b8a79d752c1ccc1bd405b4dc8fe6d70a192723cb057dc8704fe1f166d77a7ab2d79b42e63a49ffe6f3da35f9fd32bc904d1b724f7ea99740da7e735efb08043f86fd11fbbdcf7e2762ab6cd466d095948b69e34acf9ef6ddd1e0a281e1058d07c5b19eaa553469883805afc7f374cd98a00affdf542de913212ffeb11795994e476ef2a95e327d4ec54562bc3109fe483ffa7edfd7560c182445e47491c7bb0a83379df600bab2d5463b50b026c301f3ffffffffffffffff63c711bc99b537335435f2654a3245b9832accd41affeb2d654a49a694f4716a7ca787510000000040f632230f62044004430405f5d100a5b9f2b6a3725dbf9119945312a5c792894dab874c2635f879ec98b1821a3d7a32d9e20b191900e3068d771c37223240759e09b1956cc1472c76d18c9a5d9d9019393e60c1c771f79c9277bccb87f1f18aef3f43c5e8a9fec73383041faec0ab6c055a9ae39ff8578b3373f1c18a935c4db5a43c936a43d08df3b10a3b98e68b9762ba985585a5ae37db612a4eb73b96f3c457e71b1ff84005a7394a673fe6998febe1e314faeffb6d7b6d269963810f53bcde1bf5d42a05f252147927455d8b10170b98c002b4f82045fe2533a7ecc728bcf439fb37c4067f4f261ff810c5e5bdc1adf46328e5864c263a5e0c2eb4d0f15e20e1231477490ba1ae2af4e5b6d062c7ef601a35b8384433eaf0010aeb43ce9be9bafb4e27132e3e3eb1aabe7e48338fb57cc8642283870e195ae4e1c313a885572c93367652133299ecd801818f4e1c5d4487ed901a54cc061f9ce8b484798e2364e71cdbc4f571b23c5547135658e7789babca1de38f4c9474d60a1b9365e870f9c04467a662f20b2ae5fcd3c725b61cdc2c5b5e7c58c2b03995e4e9121be40fd922870d0c7c54e2ae328b0f4aec514cbfe8bea449d6101a5e7c4ca2eb3453327f0cab1c53810f49d4b9f7a23de5062f33128fe7b8334a9ea6300d2470ed51f649542e5bef11fc9cb814a5843619f290c9248c9f4cb608a3021e984c72d8405f7c3882d141f5d99bb01e191b61ae53a14a5376cc0f3f18d15f30b973c2e06311678e3532a74aae9e234594b4e61269a54a04d2cd3205112ac6841c110525975214d92a99930e91984c264388ace64e19a29891ef1e3fffa25b0a71851c0f7ad6b2091d2344a952a8bd76c56852c7fbc72012428b2555cdec8ca520da5c4a7512f5bafb74200c3297e55c6b5a612d209a9311afa9c5cc4cfb87c4f9d85858d40fc79c153c59796cbc8c858f3e2cbf217488e8f980b0ffef921b3c9607ed01eb8d97b346eccfd37a5864b2ce7879d95da63c30526468e9a4767ef378f873a4eeee7aa965d3c71d501ff223dc538c51b5c3a63168ed0a0b3a89a70efadf2515c3c52d15111df0ccf4e1594e7ed6ce1c92ab172b9a3457e82439587e231f546cdccf751c8c29ade7d2ef51eb3270f08245fd5c2dda496bdec0e66c1b297ae4a49d6e48e7532a638ab11c94df0637a891d167ea4f5cd8c0bdd9ff758c2aa1d51a7411164f53473d588a1ab24da754a5af5518611aac3b0b16d52fa8fe6ed00899f12ea0b1c3c6071a0acb8a6d5d7bc162211f67e8727814d57ef942da66f0f225fd31a9d4a28417c285160dd02c78320210868f32649982ee114bc1e5e5ff2083633b9b7f37848fce8ec14bbe31c99361b92486b4e267c4b8c9a5b00943953da9f84c4bdb2a7d80214f27635edbcaf9aa4326931938fce30b263d17ff963dab7ce3c30bc720af73679aad5dae0bd65a6f569f850b88454b597a844eab978f2d5caafc6d7f53ebf2aa852e7a58129652f292a68f2cd8b5265653ace3f6393eb0600a8b5d610bcb8715cc98feb26375baafb60a689ccc59b2262ce81115eeb5ca21b38ef6f49a291cdef24f34cf49580e0d9ea5b56302eb4ea1b183925175bfc439abefb7cfedfd3f4b94c4776cfcfc58ff1f3299a4d73183870c2ec28854a2ce9923afd976bb6c8e50c28aa7a133e8adca6512d7081f33bd2653cc2749b82b622b3d6fce2ca64870c142799b2eddb039134420c17a864ab153e611a9b1d0bd95b995921806114798aaf6a6f733e5d1da8c4823becb0a7e7e524da69611489755cfe9f736cc5cc4155f3f87c6fba4fe53847669234fe5de0c4a8b2442d9ca529977e3e72d7921238208774fbeb8c854c1e45291439c35275ec7d46e38051143f029984c8d7f16e2d91d5d27de64f4424218f4e4f582c7aaab6510899239c9dbd805b1595df88bf00422d78a1be764e5f07f7f04108cab5bcc23cf45e42b83c81fb02c9a32d799eeff5009227e7835cea818d36792ab46fac0a66f775f3e53d263227ce0fa6cd4ec6d2ab2073fb6e26288b6efa0ced08123dda011d1033264fdaec946868daf51012d4610c943a1520a1bdb2d99328ae06113dd17e6b52154dcc81ddabb11d9992b4bc7b88b881d56d9d1dab7ef2c538ad4610d2da5de924a5177072142872a66e557b1e41cd6b89b7a543a15d3c22f64b8175a8c11910332e7fba443ef71783e89d19429b33a5f040ef955367d9753d47f1a79c3d57632eda5fe687b45dca065d9d0967dcb74e13674425538ef9c299c8c61c35f420715f4e77042ac6b3077e518a273ec6cbca8614b17a36ecca5ec6f4fc3d5395b8aa9793bbc194143d9be3e2ce9f3acef2267583e85271d9ab744ce30226660d4be5d4a9b7fb69e32986663f25c99ef8890c10aaa9dffd9a36352631019036e59163cea262206342fc54bd4284bba0fc37e41cc9578336da282c12f7de92dcd27b15b46bee0c9341e9bcd3758f65e483d064b6de68d4817eaa46249753439225ce064fb66d9be5b940b225b388a922fafe9792b83225a286afa50fec1f4aa3d59502da6d3a965feb52f16fa53e7ed2ea3d3fed981c815cc9dda466707f5d182112b2c261a83e6faee2721b32a9c2fda7e5b88071d836654b8633ab1c9934e69b43c8536a918f3e651bfcf272970c94eb763cc1c19fd285c2a6bec9ebb2cdd27144c0fe6732aa3872cd313ce63df4194fe4dd284c68838a1cdd0b6a7a26cf498479a80c7e7512aff52e674b120c2842ec77468ad48cb1cbc41640927cd59f3a624bc4fe52801a9f12fa8fa6c56e52249388385c5142c8a708bc220820434799645d272dcb03176fa1a59e4086f36cfb25ec1abf205821c3dfcbbd841c408777ea83c6271a408e8d0b76b51f244473f428492ccdb980cbf1a371719c2154c344b2f9c9e7e224230f4a64eab37aff6728c9eb1c5094250824810cc554680b05719f9815ea5457cb08d90b5fdb7584988233d6043f65bd63d5f35bd04223c30b7c3fae73d99f5ef1a911ddc9f39dbdcd38390554407495f8fa67e71f5d42507aae7cc326776488f1d336e4470b0a8790ed6496fda140de9227203a3ba9645082236b8535d52d1e99f711a2d446a50f22484fb77ec02f697bc65ca46b91c95fce1f0112ac5bda8a0da1c3bb4e042e20746ec5cdfdda7c6a4ec4351f4f77697dade8f0f7726a51f937e923d94e5b4f74675f852b1440f6e7ba9f1cb380f9191e4c1d9f08c0d65aa40828774b6bc7faade597b13437207362b9a7d2cd3396729b1c3b33e567372d7c159b78e65e367591d3adceba7d62f862390ccc12e197ac4c77800722091831e2b648ba7febe9d5fc70c491c3af35e91f9382d32b6430287375f9d4cb10fa6b22279037bd2b259584fa9aa1bb4a43193a6f8aa974bc864e2ce6d40943c212a796c52a2d285840de64e2b329b9a91bf460f1b220083c604269395ac610d1a4ae7d6832933757c08d2c10f8231780438581082c9e401123538b2f2ed68f617b58e240de68ae7c713fdf16e4643372add58d21f34b57a86327c338eff0975bd49ccc0a71a9d2ef48b78d8372029c3b1c12f34c89307b4e041a3460e10e8e081020919eadcf66fdf41c9df7c0ccd7b69321544625893ccf9fd663cdf52613834340918f47cbdd0e673755bf94215c4e9784258d2f7d10bcf688d49ffa90b68d15be7ae7a61bee2c2e6a24c0861f9b9440705922d14f734a3aa5feb98122da043768f8b106dfa3259a83b54b88b8fd6a72d30d804122c74a92ba69e0f428d90864c262cf81b1c905c81eb8cc973de0ed199ad8056853ba7ac245448ef091954535432853e6fb3ee575e0abae8da59ea1433eb1e854c9e5c11efa2622385c2ad3632a8ca4553ae3ee1349999c23e9ad89f244ed0bc2a9d7e97ad98a909b7e9d99425db3fc8cc8433de4468d937b53897d0f657163d5b134a5c12259c74664fd93194044bfcefc6f45176794742bae374f6752b68cb2447e0f2c8becff92aa9e718e1cea6cdf306ed752a2b42bd15b7dba2498880e6964f1fc784520b920ca1942b8ceeccfe5fba2304a46fa65231ad92205c6245b4b4893c55490910bebcd26aed9c67fe1fe8613e9b1ce11a437c3eb8848c2bcf94dc3dc87a70472b2f311645064dbf40c2033b7fb85d132f5d4186816407e9a01dbf261652fba3036c4ec6c6cc550e36999b37ee6e680b1e090ecce95e4674643dbd758392eae0b1465c890dce31e6bf94115f88a406bc968d585ea60ebe9640428363dc93fc1cf1b575496680e6517bd3294d546c2690c8e08f31fd547bda541b8dc59e2b2d9c9e9295db4760815d926a27efbb356321afa3c78e1b15984c3a1079c5a2ae92d08da25aeea481882bbe4ab92be3272d4274ad502e5d1ad9282b3025369798b8b6b4ce2af0f4b84f176b257f2d22aab0d2690c427f304fe68c15f0ebe8124985f149291ba15472f0874450c157980ffe494b6af814954ca2f516564f8a6c8ab5de4bf5072d32eba514089bef7b4bbe0e22a47043c5f4bdf788a7bc476414a867fb20a47905cbed0511516c99b55068992d5094329b457d2295675736724b458d239ee8eb3cbfebe4da732cd2895c4cdc3a25939d326d428413c8a42986e5ca25a6f14d74e1bcb2f2a279e536a28933aaabb7e8f49ae417c9c461710d28e680530eb0ab4b00031230460d1e2160d0b8e180ca62330b5300010230463b2002001e3b7a7c6000017830b8071837b8c60104b043c7a31e8e43470e0488000038e3002062401a3c7484eca83163060240c290c30602038fdff1851703870d1b6fc300205e182307b2f1360a00d205a4c1a346c80ee602d2e021060ddf02d2e0e1386cf498310301205a50a3063f751ed6cdd51073d66332b1f13a668841c367f8bb80460da6c183870e0d806401b11dcb332b650a69c1025a64ad9bd059c8af80433099ecd000c8154cd9b52c3a00628553cf44c5fc9a31a83c04a40a7e4c29a6a197dff7a2c239ec57a650865d5131af94b54529386a3525f53e470151337a538eecb44a43814b1e948efdb9ed43e875708e14803cc1f8509ab473b8d0310f994c1cc409c6768f95d2db90c9a404204d489c99380f63d722315630638b2dbec8c01732322083478f0da4ffc03b0e0e4c26ef386e08800b204cd025346a41a46aba9550e7caf63b4f52fcb424b0f1478ef5b89a9b2c44c6610f06c86800031680409090c8502664b0ee17d1500072046f34b6ee74108811cc9f969793bc93a51990229474ce9b41554e336f01214262bc476d84167549053284c3664cf9a9e1fa520844088ea5c76c2aeb86ce2d4810524b2e5b715996e2a80304087b58f99dcf740b407ec0ee5f984fff5a6ae117203ec8e594e7ac1473b5e802203dd86c574ca60f32a7f33200c2036d64fcd8a33aaa560a6407798b5269d374eb4851078f1ca147fbf71cb8af2d2fa79acc4e0807be99bcb8289a7232e606c54c0f8fde49ed5db6815b3b6b31f4840c425e83828ff20aa66fa4858d06c9b496494e33aea70b32039456caa372264da7462032288cd6923d7ab2d9c3b1c0465a105aabea54b6b02847598f8eb6f1ae62ba90bce2cad8b832a22e3c6657a4c2452ffd315b5aa6ada872654c7a129f9594ac30ad58470b21a33b79ab6077bc4d54b83379abe23c9b649221e2c36a8e2415a6e8fc5e41f7a840b7f78cf24ad36af914e5ea95941153b2262331852376cf7cbcd347cd7a21294527478a522763a47083e7e9866a478192dbcefb59734e951445d66ed24ec3ee4fc642818e46cbda9aa9e4e3a0f8dd4bc526bf259f30f33f2e79a86829ff9ec8346e989d585a27994eb0eb223f05b1f76c6f152734191795992526f36543b289826a6a7c5e0cb339570e89260ae671633f08591b4d99489ff5ce76dd09a53d98f0def4aaf69297f052c6d4222a6394aa382496584d85ccc83ca9716208482ad16b06334b4d9a2a6d169050a2eb60c96c473bbefe2193c91618904ca21c3fb95816b5ba0d874c263b222091c426f29bb694dcf7ca47a24a774a49cbf6ce1766010e0ae84812487c6ee2540a619a4e263d22913d79b2a1491ca186f14f9a94f01b1536624d31f7bcd69b3d6b8cd0bec34eb7da2799fe10c922ced9df33e78fa9744e421245207ca35f5edc2402cbaa3169954bf88911715c129bd962befe880fc1c994d3a47b8712313b2031c4699f4a64eb66e691e97830c0c051030492423432681cab507ba1cf1009214e527b430795b2622c07911eab0cd273aea0fd9608029fb37072dbcd65e43878dcf0421208f374fa3d91f76f694b00118477a823f8308ca2300a82188641108431df1cb31148305044188d464332a18cb2ab0f138080470351912c0e8e844181300863208641200482108441209c6288528629e9b5030deee9471eca9a3da736fd5fef3fa01b998e526de4a86340d63bb23b48387ea6ddc2a0a68ad48d552f6f4b27ad08fa6b0fa9b5a59f77cd03640d5f9a94dfc96d3a412ab4bc6e0a5781f73c4dc63d8f69fa0ef631715a67e7e22aa7c459f10f18274bbb20c8c7f1eb55ac46166d9451c8eb402ab5c5d839ede9ebbcaed358fb9b4137340ba28676921a62fdec0b0f445eba0354ff10f99071f12b736b3086505beaceb3c92ecee901e7cb2eb372931a753350d749e883e2c7f356141269ec08fba0a35bcc814f0690cd018f719a3a6a06dabc688d69a69db4f654dbbf988a305cba3710a176ec83810e7832fd1b02d7e09286bf10c6377e3712ce2c904c158bfedffa5fa3e7b145e79343182a65ad72ca0c69d131257534506e8663fc82f315de518e02aec8ba90338a199b09e551ade4f14802f4fe45393f91b240510e3244f4fcb04fa6b9f46e9160127bbb784f183669b0cde2588f406ca4de29eb0cb1347af2a6ad51cc862d8271714fdf725a2dda0048e99deab13028486b48a0c75f99b65fb6c9c67b5b6f4162a0af99ef002b64610eb6203885dae21b7a1c26631efa8d449b3d00f93fbab16c2bf2ebf225b3b2a02fcfe33b6bfbc06764c9da6c891865d372fea623c63a2fa46effd63a7e6939f492c6e18437834059607ca63d76ca8db1d757abf69c5438600326eae327f3cf52683274d9ff79305a10766cb9b503fd3b212332a7e59c7ae2b8f77ddd764b4992c71059cfd1b732191126723b5d33204174d45a2dde115880d0728091624ac18ef6fad56b7ab9bd664738be9fe7e45e5eed5a1b927926fd51d731d9126b3d07a252c8fac148437c6ccc9bd104aedc75284153e303bb13b66961d1d4f9a7b9a6133c039aecb90a91d0073be04232b9f95051d376cce5122b8f48dc9dd54a729d65487b29be46d40dec4938fcfa4b804e58b0f16320994931f7414753f28cae4d5137e4467d00f19c6a3a1276242e390b3bb0f928d3f1a18e8c086e558dce10d3105c3c6d418cf2c427f62354eadafb9c4692e9438b0c405fb3fa12338fbec645aee3c34ff98ac1bb815de6f3c7bae8d2516b1dcfcafe5949ad98034855a279652f78d8a56dca5ae7815623a864e60e759d2b121cff063a84a02bf419435775d043b1ccae7f869f70e84287e7e792cc70ef204c0dcbc142a479be4afd91bdd026d417abd5d1c0b49b61b62ff6a29a015e4a9b35e4d7e9ca0b8f506c940972de511d2a2e052df225bfd34c1ed26f5549a63a65d5be012105c555b40ae74398218700cbac039da4ace7312f25e56b344a470a1396420bfbe6164456712817b7246e4e3a82b14935f5a81489bf37fadac0db335c2bd8f870c6ac85c80874c99235482d0ba1b1478e60c0b373b672fad7d7c84e2f70140bf85f8b72636fd68f2b38aba3611daea372c36a5217baed64306700d953568ca6567a36b5e94510300ec194e7c7a66871c80e9ccf7804e6c49d6b78219001aad84c3eeb90e6fc0982424b26558f16858181ff4b36dfbdbb94bfbf8dc04505218976b96e51a2d1d1f2d2b0c3c5bcaacab9c5bad9fdd4daaf57ceb3f790ec80e685d11ef493a01a59be7b09e6c9d93ec3827d04db2d5a30ec54f706263b0802310876e22fa484d1a85db582ab3a6c01f88389afa8eb43e1b6222d38e938a7dd8d4a10ab1382fa09b0fe49a0cefa428062e865881d1444688d408568122fb3111a89b2071a93ed51f4f6f92c6e85af0707e3c0f8bd2b5965f29ac87549692c4285b71d55ce7125a0ce651d7506117f3fe13f3c260dfefb7167cd33d5c6ed0b1e38138fc5c9778d49298f53efd826339d26a364ffd41dbe700a7b50aa941a6fb2beb8ea7734934921c1b30e0bfd11dd0f5729918fedf5ed192abe8684e7dbd5a3972657043a4cdc679be381e9991c1e1105e145b663fd808d48dd2804dfb511d792b43537c9d6eadd3e789d29f041bdeaa7681802e7b45f37bd68679827506a65b12a4fe45be0c8ff8210955239e4b93985f0711b9eae64586eded38c9a7e6177c90f9004e8d9f918e02eef1223a614792eb5ff53798b7b629f2e74400393de7220d1ad38ed66b9c3083c1e2c6ba793b826b0ce4f00140b5d761b1fe722e3f92fe48f35f748645cceb60a19a547c6bd7db0fa2ef3aad4e30c4b4fc12be6d5ba894624816881fcb65152b692c47c89d5e6b478c35edce81631b00f1313fbc144d65c06941e004c03593a02de302f18d8b776f794afca3d7588a4f5841321e09f8a10eace27146bca0451c07477167be76409112d2260f291dbff8ce49b738221629b2fc700552e1872b7672f375420bd86e49095cb98dab303c09e168a7e8ddac4c11a5d38fc98a4a475738c933bc8655bc4e03e0023fcdfb59c689866e8a7b6e42829e111826474401eb4e89ef83e0a3b4de8d58b212dff48604b0d64a4d520bebfec618168de6c351462bdeaf943cee9172174eaaf41f0ccd30bc14f635014c4b8d2f38ff533ee6e911dbe1a2303e9903cf3f103114d6ffcb90985e9b3ac6419a8a5a1db697c38a2f92a3f23fafde513c4eb98fb9ba08b3d5ae0c70e99bbb6c3b3cb6ac82916d22a670cdfa83969a92d06ee5dfcb52d490f988b2e3dc8de703e141f820f64d2bbeded8e2cbe004c6067c41cbf38fe85e7e3719e74c24ee0dba12f602ba23fe96866afff940e426d4a0b7eb05539de16bf4c72f9581c5d596531b15663a4e3b8ff727e221f3ebf3bdf0e874b902b15e183368fb07bfc948a183df58b9a9a5339ab5cdbb97d92accbe7ae0ac10ed2bca05350935bdc379f1033f4ca7a17f6441d5059705be95cb02edd0a2010638a9537354e44ce49cd13ff5ce1e8b877ecfa6aec333369239996670a077c7d54a4a90ef69934c3ee2eca4b2a77ab03b6e86d5fad0dbc1b3e24bf683dd25638a4cd9f8165de58c93607e68d4db30eb5c31ca149690432959999830dc0fcd050d4bf31c94c912257a17152ad635390dee3258178fee8fbbdb335b3d88b4f7f982a82035704ec26db8bfe297ca8d148a8b0f52dcf1a1145b12440c7fe746f48d057e052f9602f58d56ae92b43376b411e0949d29e3894094667c283983628ceb0896209e0207ae4eb322e61875989a85701bb0049b1d0b316a5b3c58e27b8fe8d6c05503daf1e9f438e0f447d85853f4b04da28fcfab438d2f29d2ebab52d312ae467be01de2b10e4ac44be1da11cbce7f02ea6b72add66a693140dfec0b8512288da7d1ec8257d8ae39be6dcd3a3b79754e78de0038ea8467b1048b8fc2d828eec665bad799db4966d7a7436e6705b77493fb2d2db042051e63717fa350bd39a697ea48dc65761be624fc12df8c842984441744cb9be9d1a920cc40ada3bb630f5666a376cf31355f2a5f67d906a928cb8e7804f922cd777de0336db0b0beab249714cc5b7e6023a96facd3169d79ce579c2a9dd8f8c58f97b8d1f05af7714b139f8a4e01d98db44235fa82f59a79a5f9ea425984dad7d21e2f23c77730bf42577121b297c744e1f05403c74f684f64a479c3f1ac80458c2b60822fae4218f12438821d9dc124fd79057511d5943e3b4d29c10602d92a79638fa9c38261ed2f274d067ffe66211b527fb0a67078b79d60901101286a484855beb8c414466c81c62914ce5c766116a60af350f1d3c9ac260dc48bf97d1ac83b2a0aae73f84b6458c6b7840e396d40372388e017a722267ee66b5de17290f14ef4342dfee1afc68e4c96347730d1e6da9f18fcad61e854ce931b423af8773a1af598c8d6b672ddaf1f0ab354e749d7c2ef4a96e318df8bb12467008080204159fac8b3dc0bc019483968bf98da2cb7b554f574ca8fa1126333d4dc3f31d44bb30bc065b80622c76f32420ae8fd92d27220c1af653b550f76e91922febeb791904b3a2707aaa50a45762c14fb737fef838f711864e982d3621904ca778544fa75b6638d98781c02d9c5380945079bf8a8cc3588ef0223943ea68b041e551c92fc4ea76a3072f8922c39e5cbd91c4b39df1d0865aa07b78c28738bdfd45f0720092b59e469c6f1b7ee9bf6b5dc1ead44e81716e6544b4cec181cf65e3f3fa37eec5f6f2731ce375a191528108ed8a71917ffc1745a9305df838d5cc00bbed5417ee04da8a2b92d91f8c8335317a923086442f710d915af10db3cc737523076e3f7fa53e7c7c5b1a9f3398f15c0ab8aafa800fdf9e6c85a3e2821a4dde4af2fdf09dd79c7ade3f7758f5d602942a2cf7a821e831604c139a4814e1409d11ae759cb2000f2cf0e341b30aac15f649ba09d809f3acfd8411888054fb0e34723c6cbd3b4a79b57f106a533dbc06f1546c61292804f78be872e0a5c27bc8cb7f311439af2c6d16bde4ae4409fffe7b853b3f85777eecaa1529c24bca8a5aef037a13f83ab00e6ff4a0fee3b3492fad9eecaec912aca8aff98062606467a99d4c3c02fde55df896a3df1f37bbcaffa482b5115a0bdbeae1f86f01e7144fd04dfbdb177b6c7463b52d03a8e1a02a0595ada0331f88e43cc8d065f88eb53314cea708aafaf8087d905c64420f4d8c5af4c8a1f0f779312491b796fe6d657bff9d60d7aa4d2392fd367cf9f66eb3a7e73d4dd1719c132cf7d31590f87b83e9198d3be40238786078a7f01a09", "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864" + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47" }, "childrenDefault": {} } From 80a0bfd66ab9e23444b4133934e2860cff961199 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 23 Sep 2021 14:29:26 -0500 Subject: [PATCH 065/138] Add a `force_unfreeze` extrinsic to the disputes module (#3906) * add a 'force_unfreeze' to the Disputes module * fmt * Benchmark Disputes `force_unfreeze` extrinsic (#3908) * Companion for Generate storage info for pallet babe #9760 (#3831) * Adding MaxSegmentLength and MaxAuthorities to pallet babe * Missed a few to_vec * Removing `MaxSegmentLength` as not needed anymore * Adding `MaxAuthorities` to couple of missing place * Adding missing definition of `MaxAuthorities` * Adding a missing to_vec * update Substrate Co-authored-by: thiolliere Co-authored-by: parity-processbot <> * Benchmark Disputes `force_unfreeze` extrinsic target pr: #3906 target branch: rh-unfreeze * Add benchmark to rococo runtime; run benchmark locally * Revert unintentionally added diff * Some spacing and comments * Bump proc-macro-crate from 1.0.0 to 1.1.0 (#3863) Bumps [proc-macro-crate](https://github.com/bkchr/proc-macro-crate) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/bkchr/proc-macro-crate/releases) - [Commits](https://github.com/bkchr/proc-macro-crate/commits) --- updated-dependencies: - dependency-name: proc-macro-crate dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump parity-scale-codec from 2.2.0 to 2.3.0 (#3833) Bumps [parity-scale-codec](https://github.com/paritytech/parity-scale-codec) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/paritytech/parity-scale-codec/releases) - [Changelog](https://github.com/paritytech/parity-scale-codec/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/parity-scale-codec/compare/v2.2...parity-scale-codec-v2.3.0) --- updated-dependencies: - dependency-name: parity-scale-codec dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Use super::WeightInfo to try and get CI to compile * cargo run --quiet --release --features runtime-benchmarks -- 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 * impl TestWeightInfo; remove weights from runtime_parachains dir * fmt * Update test-runtime Co-authored-by: Georges Co-authored-by: thiolliere Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Parity Bot Co-authored-by: Zeke Mostov <32168567+emostov@users.noreply.github.com> Co-authored-by: Georges Co-authored-by: thiolliere Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Parity Bot --- Cargo.lock | 2 + runtime/parachains/src/disputes.rs | 33 ++++++++++++ .../parachains/src/disputes/benchmarking.rs | 36 +++++++++++++ runtime/parachains/src/mock.rs | 1 + runtime/rococo/Cargo.toml | 6 +++ runtime/rococo/src/lib.rs | 50 ++++++++++++++++++ runtime/rococo/src/weights/mod.rs | 1 + .../weights/runtime_parachains_disputes.rs | 52 +++++++++++++++++++ runtime/test-runtime/src/lib.rs | 1 + 9 files changed, 182 insertions(+) create mode 100644 runtime/parachains/src/disputes/benchmarking.rs create mode 100644 runtime/rococo/src/weights/mod.rs create mode 100644 runtime/rococo/src/weights/runtime_parachains_disputes.rs diff --git a/Cargo.lock b/Cargo.lock index c887e6fd17d7..91213b72d4a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7811,10 +7811,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", diff --git a/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index b3bd5a3ed68d..09c2d147854d 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 { @@ -212,6 +218,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 +240,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] @@ -305,6 +325,19 @@ pub mod pallet { /// Too many spam slots used by some specific validator. PotentialSpam, } + + #[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(()) + } + } } bitflags::bitflags! { 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/mock.rs b/runtime/parachains/src/mock.rs index 387e0a7bf5e8..1ccf57ea357a 100644 --- a/runtime/parachains/src/mock.rs +++ b/runtime/parachains/src/mock.rs @@ -149,6 +149,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/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 527e66890819..15b4ed1484f6 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -78,6 +78,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" } @@ -169,6 +173,8 @@ runtime-benchmarks = [ "pallet-timestamp/runtime-benchmarks", "pallet-xcm/runtime-benchmarks", "xcm-builder/runtime-benchmarks", + "frame-benchmarking", + "hex-literal" ] try-runtime = [ "frame-executive/try-runtime", diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 9f03cc8253e8..5323adeefc69 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")] @@ -369,6 +370,7 @@ impl parachains_disputes::Config for Runtime { type Event = Event; type RewardValidators = (); type PunishValidators = (); + type WeightInfo = weights::runtime_parachains_disputes::WeightInfo; } parameter_types! { @@ -1559,4 +1561,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/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/src/lib.rs b/runtime/test-runtime/src/lib.rs index 722aab3e16af..09da961b2169 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -472,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 {} From ece7544b40d8b29897f5aa799f27840dcc32f24d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Thu, 23 Sep 2021 17:17:34 -0500 Subject: [PATCH 066/138] add parachains pallets to Polkadot runtime (#3815) * add parachains pallets to Polkadot runtime * some updates * temp update deposits, fix compile * lower para byte deposit * fix genesis * fmt * fix spell * updates to consts * update benchmark list * fix merge master * cargo run --quiet --release --features=runtime-benchmarks -- 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 * skip large meta * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- 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 * fmt * add and update proxies * add weight info * weights * lower minimum contribution to 5 DOT * only overwrite when default Co-authored-by: Shawn Tabrizi Co-authored-by: Parity Bot --- Cargo.lock | 1 + node/service/src/chain_spec.rs | 15 +- runtime/common/src/crowdloan.rs | 1 + runtime/polkadot/Cargo.toml | 1 + runtime/polkadot/src/constants.rs | 1 + runtime/polkadot/src/lib.rs | 332 ++++++++++++++++-- runtime/polkadot/src/weights/mod.rs | 6 + .../src/weights/runtime_common_auctions.rs | 65 ++++ .../src/weights/runtime_common_crowdloan.rs | 132 +++++++ .../weights/runtime_common_paras_registrar.rs | 99 ++++++ .../src/weights/runtime_common_slots.rs | 73 ++++ .../runtime_parachains_configuration.rs | 91 +++++ .../src/weights/runtime_parachains_paras.rs | 106 ++++++ 13 files changed, 885 insertions(+), 38 deletions(-) create mode 100644 runtime/polkadot/src/weights/runtime_common_auctions.rs create mode 100644 runtime/polkadot/src/weights/runtime_common_crowdloan.rs create mode 100644 runtime/polkadot/src/weights/runtime_common_paras_registrar.rs create mode 100644 runtime/polkadot/src/weights/runtime_common_slots.rs create mode 100644 runtime/polkadot/src/weights/runtime_parachains_configuration.rs create mode 100644 runtime/polkadot/src/weights/runtime_parachains_paras.rs diff --git a/Cargo.lock b/Cargo.lock index 91213b72d4a2..8f872b57f778 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6655,6 +6655,7 @@ dependencies = [ "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", + "polkadot-runtime-parachains", "rustc-hex", "scale-info", "separator", diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 3d370faa6aed..2bd96390c801 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, @@ -364,6 +369,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(), } } @@ -1310,6 +1319,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(), } } diff --git a/runtime/common/src/crowdloan.rs b/runtime/common/src/crowdloan.rs index a97825d445c2..e6a9a2f1e4b4 100644 --- a/runtime/common/src/crowdloan.rs +++ b/runtime/common/src/crowdloan.rs @@ -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/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 18121fdb415a..65a18ce5f3a5 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -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 997762515478..dccd33ebb8ad 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}, @@ -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, } } } @@ -317,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, } } @@ -944,6 +965,7 @@ pub enum ProxyType { // Skip 4 as it is now removed (was SudoBalances) IdentityJudgement = 5, CancelProxy = 6, + Auction = 7, } #[cfg(test)] @@ -1017,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, @@ -1037,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 { @@ -1065,6 +1098,135 @@ 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; +} + +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, @@ -1125,6 +1287,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, } } @@ -1159,6 +1341,7 @@ pub type Executive = frame_executive::Executive< Runtime, AllPallets, ( + SetInitialHostConfiguration, BountiesPrefixMigration, CouncilStoragePrefixMigration, TechnicalCommitteeStoragePrefixMigration, @@ -1230,7 +1413,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 { @@ -1297,6 +1480,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; @@ -1380,60 +1621,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) } } @@ -1626,6 +1876,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); @@ -1694,6 +1948,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..3dcd0edaac38 100644 --- a/runtime/polkadot/src/weights/mod.rs +++ b/runtime/polkadot/src/weights/mod.rs @@ -37,4 +37,10 @@ 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_paras; 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..e69442c8a884 --- /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..8dfc9409741c --- /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_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)) + } +} From 5d4cd4ccf085f19262d4ccf189bfde369e8438fa Mon Sep 17 00:00:00 2001 From: Xiliang Chen Date: Fri, 24 Sep 2021 16:11:20 +1200 Subject: [PATCH 067/138] update BaseXcmWegiht to match Kusama (#3911) --- runtime/rococo/src/lib.rs | 2 +- runtime/westend/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 5323adeefc69..3cb61efd3c4a 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -627,7 +627,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 diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 179088dc1a57..196a28d57819 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -952,7 +952,7 @@ type LocalOriginConverter = ( ); parameter_types! { - pub const BaseXcmWeight: Weight = 10_000_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 From 6422e672ba5724778eb0980b498ca3f353cc5c34 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Fri, 24 Sep 2021 05:36:52 -0400 Subject: [PATCH 068/138] Fix broken links (#3919) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 501f115ca6850639476deef8aa33181d0d7125b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 24 Sep 2021 16:46:45 +0300 Subject: [PATCH 069/138] Substrate Companion for rust 1.54 (#3807) * Substrate Companion for rust 1.54 * CI: run with a staging CI image * Revert "CI: run with a staging CI image" This reverts commit f3b51da0a4c0ffa43b576af5482a2be256948870. * CI: debug, again * compilation fixes * tabify * update Substrate * Update .gitlab-ci.yml * CI: add ubuntu-based image with npm Co-authored-by: Denis P Co-authored-by: Andronik Ordian Co-authored-by: thiolliere Co-authored-by: parity-processbot <> --- .gitlab-ci.yml | 3 +- Cargo.lock | 308 +++++++++--------- .../tests/ui/err-01-generic-used-twice.stderr | 2 +- .../tests/ui/err-01-duplicate-consumer.stderr | 4 +- .../tests/ui/err-04-missing-error.stderr | 2 +- parachain/test-parachains/halt/src/lib.rs | 8 +- 6 files changed, 163 insertions(+), 164 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aec817450708..3713d94f950b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -270,7 +270,8 @@ build-adder-collator: #### stage: build check-transaction-versions: - image: node:15 + # 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 diff --git a/Cargo.lock b/Cargo.lock index 8f872b57f778..6bf44d1971da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1928,7 +1928,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", ] @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "Inflector", "chrono", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -2034,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "bitflags", "frame-metadata", @@ -2061,7 +2061,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro2", "quote", @@ -2095,7 +2095,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2118,7 +2118,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "log", @@ -2146,7 +2146,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "sp-api", @@ -2170,7 +2170,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "sp-api", @@ -2383,7 +2383,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "chrono", "frame-election-provider-support", @@ -4563,7 +4563,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -4579,7 +4579,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -4594,7 +4594,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4618,7 +4618,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4638,7 +4638,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4779,7 +4779,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4796,7 +4796,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4812,7 +4812,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4836,7 +4836,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4854,7 +4854,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4869,7 +4869,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4892,7 +4892,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4928,7 +4928,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4945,7 +4945,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4980,7 +4980,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -4996,7 +4996,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5028,7 +5028,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5097,7 +5097,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5111,7 +5111,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5148,7 +5148,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5164,7 +5164,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5178,7 +5178,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5201,7 +5201,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5212,7 +5212,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "log", "sp-arithmetic", @@ -5221,7 +5221,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5235,7 +5235,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5272,7 +5272,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-support", "frame-system", @@ -5289,7 +5289,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5306,7 +5306,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5334,7 +5334,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -5350,7 +5350,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-benchmarking", "frame-support", @@ -7727,7 +7727,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7989,7 +7989,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "log", "sp-core", @@ -8000,7 +8000,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "derive_more", @@ -8027,7 +8027,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8050,7 +8050,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8066,7 +8066,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8082,7 +8082,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8093,7 +8093,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "chrono", "fdlimit", @@ -8131,7 +8131,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "fnv", "futures 0.3.17", @@ -8159,7 +8159,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "hash-db", "kvdb", @@ -8184,7 +8184,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "futures 0.3.17", @@ -8208,7 +8208,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "derive_more", @@ -8251,7 +8251,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "derive_more", "futures 0.3.17", @@ -8275,7 +8275,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8288,7 +8288,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "assert_matches", "async-trait", @@ -8322,7 +8322,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "futures 0.3.17", @@ -8348,7 +8348,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "sc-client-api", "sp-authorship", @@ -8359,7 +8359,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8385,7 +8385,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "derive_more", "environmental", @@ -8403,7 +8403,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "log", "parity-scale-codec", @@ -8419,7 +8419,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8438,7 +8438,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "derive_more", @@ -8475,7 +8475,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "derive_more", "finality-grandpa", @@ -8499,7 +8499,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8516,7 +8516,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "derive_more", @@ -8531,7 +8531,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "hash-db", "parity-scale-codec", @@ -8549,7 +8549,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-std", "async-trait", @@ -8600,7 +8600,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8616,7 +8616,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "bytes 1.0.1", "fnv", @@ -8643,7 +8643,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "libp2p", @@ -8656,7 +8656,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8665,7 +8665,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "hash-db", @@ -8696,7 +8696,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8721,7 +8721,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8738,7 +8738,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "directories", @@ -8803,7 +8803,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "log", "parity-scale-codec", @@ -8817,7 +8817,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8839,7 +8839,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "chrono", "futures 0.3.17", @@ -8857,7 +8857,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8886,7 +8886,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8897,7 +8897,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "intervalier", @@ -8924,7 +8924,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "derive_more", "futures 0.3.17", @@ -8938,7 +8938,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9370,7 +9370,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "hash-db", "log", @@ -9387,7 +9387,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9399,7 +9399,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -9412,7 +9412,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "integer-sqrt", "num-traits", @@ -9427,7 +9427,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -9440,7 +9440,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "parity-scale-codec", @@ -9452,7 +9452,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "sp-api", @@ -9464,7 +9464,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "log", @@ -9482,7 +9482,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "futures 0.3.17", @@ -9501,7 +9501,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "merlin", @@ -9524,7 +9524,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -9535,7 +9535,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9547,7 +9547,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "base58", "blake2-rfc", @@ -9592,7 +9592,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9601,7 +9601,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro2", "quote", @@ -9611,7 +9611,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "environmental", "parity-scale-codec", @@ -9622,7 +9622,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "finality-grandpa", "log", @@ -9640,7 +9640,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9654,7 +9654,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "hash-db", @@ -9679,7 +9679,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "lazy_static", "sp-core", @@ -9690,7 +9690,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "derive_more", @@ -9707,7 +9707,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "zstd", ] @@ -9715,7 +9715,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -9730,7 +9730,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9741,7 +9741,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "sp-api", "sp-core", @@ -9751,7 +9751,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "backtrace", ] @@ -9759,7 +9759,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "rustc-hash", "serde", @@ -9769,7 +9769,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "either", "hash256-std-hasher", @@ -9791,7 +9791,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9808,7 +9808,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9820,7 +9820,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "serde", "serde_json", @@ -9829,7 +9829,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -9843,7 +9843,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "hash-db", "log", @@ -9877,12 +9877,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9895,7 +9895,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "log", "sp-core", @@ -9908,7 +9908,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9924,7 +9924,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "erased-serde", "log", @@ -9942,7 +9942,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "sp-api", "sp-runtime", @@ -9951,7 +9951,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "log", @@ -9967,7 +9967,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "hash-db", "memory-db", @@ -9982,7 +9982,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9998,7 +9998,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10009,7 +10009,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10205,7 +10205,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "platforms", ] @@ -10213,7 +10213,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10235,7 +10235,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-std", "derive_more", @@ -10249,7 +10249,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "async-trait", "futures 0.3.17", @@ -10276,7 +10276,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10286,7 +10286,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10297,7 +10297,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10450,7 +10450,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "frame-system", "futures 0.3.17", @@ -10889,7 +10889,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#eded99055e32c1b096993b94b38d3f6e04237c18" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "jsonrpsee-ws-client", "log", 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 index b089e8efdb42..d92ef3ebcb61 100644 --- 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 @@ -4,7 +4,7 @@ error: Generic type parameters may only be used for exactly one field, but is us 6 | a: X, | ^ -error[E0599]: no method named `replace_a` found for struct `AllSubsystems` in the current scope +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 { 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/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 {} } From bbedad96def7dff8929f7c0634645ab47a2fc09c Mon Sep 17 00:00:00 2001 From: Andreas Doerr Date: Fri, 24 Sep 2021 17:51:12 +0200 Subject: [PATCH 070/138] Remove BEEFY repo dependency (#3923) --- Cargo.lock | 91 ++++++++++++++++++++++++--------- node/client/Cargo.toml | 2 +- node/service/Cargo.toml | 4 +- rpc/Cargo.toml | 4 +- runtime/common/Cargo.toml | 4 +- runtime/kusama/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/rococo/Cargo.toml | 6 +-- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- 10 files changed, 81 insertions(+), 38 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6bf44d1971da..1ceebc13d986 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -468,13 +468,12 @@ dependencies = [ [[package]] name = "beefy-gadget" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "beefy-primitives", "fnv", "futures 0.3.17", - "hex", "log", "parity-scale-codec", "parking_lot 0.11.1", @@ -487,7 +486,6 @@ dependencies = [ "sp-application-crypto", "sp-arithmetic", "sp-blockchain", - "sp-consensus", "sp-core", "sp-keystore", "sp-runtime", @@ -498,8 +496,8 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -512,20 +510,19 @@ dependencies = [ "parity-scale-codec", "sc-rpc", "serde", - "serde_json", "sp-core", "sp-runtime", ] [[package]] name = "beefy-merkle-tree" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" [[package]] name = "beefy-primitives" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "parity-scale-codec", "scale-info", @@ -3789,9 +3786,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", @@ -3808,15 +3805,32 @@ 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", + "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", +] + [[package]] name = "libsecp256k1-core" version = "0.2.2" @@ -3828,13 +3842,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]] @@ -3843,7 +3877,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]] @@ -4652,8 +4695,8 @@ dependencies = [ [[package]] name = "pallet-beefy" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "beefy-primitives", "frame-support", @@ -4668,15 +4711,15 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#71859649338cff5ebc47003cd2606307b20ec87e" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" dependencies = [ "beefy-merkle-tree", "beefy-primitives", "frame-support", "frame-system", "hex", - "libsecp256k1 0.6.0", + "libsecp256k1 0.7.0", "log", "pallet-beefy", "pallet-mmr", diff --git a/node/client/Cargo.toml b/node/client/Cargo.toml index 63dd404ffcde..e2fcecf48843 100644 --- a/node/client/Cargo.toml +++ b/node/client/Cargo.toml @@ -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/service/Cargo.toml b/node/service/Cargo.toml index affd8b25b33b..fc148f3c83f8 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -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" } diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 775afe61dfb7..bb360e80d101 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -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 5d4f30911d28..599b9a7f4106 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -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 } diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 6b177e1f3c82..64a9d2b80b50 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -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/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 65a18ce5f3a5..8ba99f82ac8d 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -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 } diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 15b4ed1484f6..240627987ffc 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -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 } diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index e918b0e1d475..b321c80088e1 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -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/westend/Cargo.toml b/runtime/westend/Cargo.toml index 12edec1b017c..eecc6a56c5bd 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -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 } From c0ccdb5b3982f695765dda9cfe2e68c48241d498 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Sep 2021 16:31:53 +0000 Subject: [PATCH 071/138] Bump libsecp256k1 from 0.6.0 to 0.7.0 (#3909) Bumps [libsecp256k1](https://github.com/paritytech/libsecp256k1) from 0.6.0 to 0.7.0. - [Release notes](https://github.com/paritytech/libsecp256k1/releases) - [Changelog](https://github.com/paritytech/libsecp256k1/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/libsecp256k1/commits) --- updated-dependencies: - dependency-name: libsecp256k1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 +++- runtime/common/Cargo.toml | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1ceebc13d986..efccb7b47436 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3823,12 +3823,14 @@ 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]] @@ -6742,7 +6744,7 @@ dependencies = [ "frame-system", "hex-literal", "impl-trait-for-tuples", - "libsecp256k1 0.6.0", + "libsecp256k1 0.7.0", "log", "pallet-authorship", "pallet-babe", diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 599b9a7f4106..8aa7d4af9038 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -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"] From 56354e527d35c312ce3b943beb255861bfbf1048 Mon Sep 17 00:00:00 2001 From: Lldenaurois Date: Fri, 24 Sep 2021 20:44:45 +0200 Subject: [PATCH 072/138] Update logging in paras_inherent (#3927) --- runtime/parachains/src/paras_inherent.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs index e2dd357658df..a972dbfaa3d8 100644 --- a/runtime/parachains/src/paras_inherent.rs +++ b/runtime/parachains/src/paras_inherent.rs @@ -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 { From 59c9013bb7f4a2e73721aaadd0d2d8a0103661e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Sat, 25 Sep 2021 22:16:15 +0200 Subject: [PATCH 073/138] Ignore `generate-bags` by dependabot (#3930) --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) 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" From f9d3fb2dd25b20c64c3107cd9fc76461d18e2302 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Sep 2021 22:25:33 +0200 Subject: [PATCH 074/138] Bump tokio from 1.11.0 to 1.12.0 (#3910) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.11.0 to 1.12.0. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.11.0...tokio-1.12.0) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/test/service/Cargo.toml | 4 ++-- parachain/test-parachains/adder/collator/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index efccb7b47436..7b62800353ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10689,9 +10689,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", diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index 56517c89a52a..06bd67d5168c 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -11,7 +11,7 @@ hex = "0.4.3" tracing = "0.1.27" 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/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index 20bc3a1c4bbb..281329528b16 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -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/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index c1eccc1a8093..21ab164470be 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -6,7 +6,7 @@ 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" From 8a75570df5daa07711a4aa9d6d676919ebd3a8f1 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Sat, 25 Sep 2021 22:44:39 +0200 Subject: [PATCH 075/138] Fix spelling (#3845) * Fix spelling * Add missing entry * Proper fix for KeyPair --- bridges/.config/lingua.dic | 2 ++ bridges/relays/bin-substrate/src/cli/derive_account.rs | 2 +- bridges/relays/bin-substrate/src/cli/encode_message.rs | 2 +- bridges/relays/bin-substrate/src/cli/init_bridge.rs | 2 +- bridges/relays/bin-substrate/src/cli/mod.rs | 8 ++++---- bridges/relays/bin-substrate/src/messages_lane.rs | 2 +- bridges/relays/bin-substrate/src/on_demand_headers.rs | 2 +- bridges/relays/client-substrate/src/chain.rs | 2 +- bridges/relays/client-substrate/src/client.rs | 4 ++-- scripts/gitlab/lingua.dic | 2 ++ 10 files changed, 16 insertions(+), 12 deletions(-) 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/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/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index 592dee567f72..9effe75e440c 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -225,6 +225,7 @@ shareable Simnet/MS spawn/SR spawner +SS58 sr25519 startup/MS stateful @@ -235,6 +236,7 @@ substream subsystem/MS subsystems' supermajority +SURI systemwide taskmanager/MS TCP From db5edf6f6b9043bc706c89849c0e3729ebcfaa9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Sep 2021 23:47:27 +0200 Subject: [PATCH 076/138] Bump syn from 1.0.76 to 1.0.77 (#3932) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.76 to 1.0.77. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.76...1.0.77) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/overseer/all-subsystems-gen/Cargo.toml | 2 +- node/overseer/overseer-gen/proc-macro/Cargo.toml | 2 +- xcm/procedural/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b62800353ef..36ce01212fa5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10368,9 +10368,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", diff --git a/node/overseer/all-subsystems-gen/Cargo.toml b/node/overseer/all-subsystems-gen/Cargo.toml index e33377db3df8..6c4e7f00eebe 100644 --- a/node/overseer/all-subsystems-gen/Cargo.toml +++ b/node/overseer/all-subsystems-gen/Cargo.toml @@ -9,7 +9,7 @@ description = "Small proc macro to create mocking level iface type helpers" 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.24" diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index fd76912bce81..47af610cd0ca 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -12,7 +12,7 @@ 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.1.0" 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" From cedd601b3e7c527b7bd6a7c3e66b69a78b45a92d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Sun, 26 Sep 2021 11:21:22 +0200 Subject: [PATCH 077/138] Do not compile `wasm_api` module when not needed. (#3934) This otherwise generates some warnings which leads to errors in CI: https://gitlab.parity.io/parity/cumulus/-/jobs/1141589 --- parachain/src/lib.rs | 1 + 1 file changed, 1 insertion(+) 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"))] From 57c01c32ec7ac3618c7431140282d3c6d279a12c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Sep 2021 14:46:37 +0200 Subject: [PATCH 078/138] Bump libc from 0.2.101 to 0.2.102 (#3933) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.101 to 0.2.102. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.101...0.2.102) --- updated-dependencies: - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/core/pvf/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 36ce01212fa5..41bf2524834f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3288,9 +3288,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.101" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" +checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103" [[package]] name = "libgit2-sys" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index c4289f5bbfaa..9153a65de8ef 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -15,7 +15,7 @@ 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.102" slotmap = "1.0" tracing = "0.1.27" pin-project = "1.0.8" From f0b2bf3c20a7fae381685c7f6bb3c36fbce65722 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Mon, 27 Sep 2021 00:38:46 -0400 Subject: [PATCH 079/138] XCM Benchmarks for Asset Transactor w/ Fungible Asset (#3818) * benchmarks for fungibles * add benchmark to westend * fix hex * clean up a bit * update code doc * fix warnings * cargo run --quiet --release --features runtime-benchmarks -- benchmark --chain=westend-dev --pallet=pallet_xcm_benchmarks::fungible --extrinsic=* --steps=10 --repeat=10 --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./ --execution=wasm --wasm-execution=compiled * use skip * fix spelling * Update Cargo.lock * add scale-info * Update Cargo.lock * update bench * cargo run --quiet --release --features=runtime-benchmarks -- 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 * weights compile * update westend to use weights * fmt * spelling fixes * Delete pallet_xcm_benchmarks::fungible.rs * Apply suggestions from code review Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * fix code review * update weight * fix report_error * fix spell check Co-authored-by: Parity Bot Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> --- Cargo.lock | 41 ++++ Cargo.toml | 1 + .../src/weights/runtime_common_crowdloan.rs | 2 +- .../weights/runtime_common_paras_registrar.rs | 2 +- runtime/westend/Cargo.toml | 4 +- runtime/westend/src/lib.rs | 68 +++++- runtime/westend/src/weights/mod.rs | 1 + runtime/westend/src/weights/xcm/mod.rs | 193 +++++++++++++++ .../xcm/pallet_xcm_benchmarks_fungible.rs | 95 ++++++++ .../xcm/pallet_xcm_benchmarks_generic.rs | 73 ++++++ xcm/Cargo.toml | 1 + xcm/pallet-xcm-benchmarks/Cargo.toml | 45 ++++ .../src/fungible/benchmarking.rs | 219 ++++++++++++++++++ .../src/fungible/mock.rs | 180 ++++++++++++++ xcm/pallet-xcm-benchmarks/src/fungible/mod.rs | 47 ++++ xcm/pallet-xcm-benchmarks/src/lib.rs | 108 +++++++++ xcm/pallet-xcm-benchmarks/src/mock.rs | 64 +++++ xcm/pallet-xcm-benchmarks/template.hbs | 66 ++++++ xcm/xcm-builder/src/lib.rs | 4 +- xcm/xcm-builder/src/weight.rs | 2 +- xcm/xcm-executor/Cargo.toml | 4 + xcm/xcm-executor/src/assets.rs | 2 +- 22 files changed, 1206 insertions(+), 16 deletions(-) create mode 100644 runtime/westend/src/weights/xcm/mod.rs create mode 100644 runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs create mode 100644 runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs create mode 100644 xcm/pallet-xcm-benchmarks/Cargo.toml create mode 100644 xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs create mode 100644 xcm/pallet-xcm-benchmarks/src/fungible/mock.rs create mode 100644 xcm/pallet-xcm-benchmarks/src/fungible/mod.rs create mode 100644 xcm/pallet-xcm-benchmarks/src/lib.rs create mode 100644 xcm/pallet-xcm-benchmarks/src/mock.rs create mode 100644 xcm/pallet-xcm-benchmarks/template.hbs diff --git a/Cargo.lock b/Cargo.lock index 41bf2524834f..4cd57cec08b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4605,6 +4605,20 @@ 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#c000780dba99a611fadbf83873073e024be1be0b" +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" @@ -5429,6 +5443,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" @@ -11607,6 +11646,7 @@ dependencies = [ "pallet-utility", "pallet-vesting", "pallet-xcm", + "pallet-xcm-benchmarks", "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", @@ -11776,6 +11816,7 @@ dependencies = [ name = "xcm-executor" version = "0.9.9" dependencies = [ + "frame-benchmarking", "frame-support", "impl-trait-for-tuples", "log", diff --git a/Cargo.toml b/Cargo.toml index 5ea0f98eef6d..1a8407e53a91 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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", diff --git a/runtime/polkadot/src/weights/runtime_common_crowdloan.rs b/runtime/polkadot/src/weights/runtime_common_crowdloan.rs index e69442c8a884..7929c8c16754 100644 --- a/runtime/polkadot/src/weights/runtime_common_crowdloan.rs +++ b/runtime/polkadot/src/weights/runtime_common_crowdloan.rs @@ -41,7 +41,7 @@ use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions for runtime_common::crowdloan. +/// Weight functions for `runtime_common::crowdloan`. pub struct WeightInfo(PhantomData); impl runtime_common::crowdloan::WeightInfo for WeightInfo { // Storage: Crowdloan Funds (r:1 w:1) diff --git a/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs b/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs index 8dfc9409741c..84d3a89e92d0 100644 --- a/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs +++ b/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs @@ -41,7 +41,7 @@ use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions for runtime_common::paras_registrar. +/// 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) diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index eecc6a56c5bd..3b41179ad350 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -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 196a28d57819..e237a473c2ac 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; @@ -951,10 +951,6 @@ type LocalOriginConverter = ( ChildSystemParachainAsSuperuser, ); -parameter_types! { - 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 /// individual routers. pub type XcmRouter = ( @@ -963,8 +959,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,); @@ -989,7 +986,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; @@ -1015,7 +1012,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; @@ -1468,6 +1465,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 @@ -1479,6 +1478,7 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_common::slots, Slots); list_benchmark!(list, extra, runtime_parachains::configuration, Configuration); list_benchmark!(list, extra, runtime_parachains::paras, Paras); + // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -1497,6 +1497,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) @@ -1519,6 +1523,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(), @@ -1532,6 +1569,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(); @@ -1546,6 +1589,7 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_common::slots, Slots); add_benchmark!(params, batches, runtime_parachains::configuration, Configuration); add_benchmark!(params, batches, runtime_parachains::paras, Paras); + // Substrate add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_balances, Balances); @@ -1564,6 +1608,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 c7dba930ed49..afca6434f826 100644 --- a/runtime/westend/src/weights/mod.rs +++ b/runtime/westend/src/weights/mod.rs @@ -36,3 +36,4 @@ pub mod runtime_common_paras_registrar; pub mod runtime_common_slots; pub mod runtime_parachains_configuration; pub mod runtime_parachains_paras; +pub mod xcm; 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/xcm/Cargo.toml b/xcm/Cargo.toml index 8d60407ea8cc..972d28bd1863 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -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..2b1cb31f1580 --- /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(_: MultiLocation, _: 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/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/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-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml index b3e6b6eb9045..d4668d0165d6 100644 --- a/xcm/xcm-executor/Cargo.toml +++ b/xcm/xcm-executor/Cargo.toml @@ -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/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 } => { From c379bacaee44f78547fc2ea3a38d8ded2afb63e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Sep 2021 07:57:14 +0200 Subject: [PATCH 080/138] Bump tracing from 0.1.27 to 0.1.28 (#3937) Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.27 to 0.1.28. - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.27...tracing-0.1.28) --- updated-dependencies: - dependency-name: tracing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/collation-generation/Cargo.toml | 2 +- node/core/approval-voting/Cargo.toml | 2 +- node/core/av-store/Cargo.toml | 2 +- node/core/backing/Cargo.toml | 2 +- node/core/bitfield-signing/Cargo.toml | 2 +- node/core/candidate-validation/Cargo.toml | 2 +- node/core/chain-api/Cargo.toml | 2 +- node/core/chain-selection/Cargo.toml | 2 +- node/core/dispute-coordinator/Cargo.toml | 2 +- node/core/dispute-participation/Cargo.toml | 2 +- node/core/parachains-inherent/Cargo.toml | 2 +- node/core/provisioner/Cargo.toml | 2 +- node/core/pvf/Cargo.toml | 2 +- node/core/runtime-api/Cargo.toml | 2 +- node/network/approval-distribution/Cargo.toml | 2 +- node/network/availability-distribution/Cargo.toml | 2 +- node/network/availability-recovery/Cargo.toml | 2 +- node/network/bitfield-distribution/Cargo.toml | 2 +- node/network/bridge/Cargo.toml | 2 +- node/network/collator-protocol/Cargo.toml | 2 +- node/network/dispute-distribution/Cargo.toml | 2 +- node/network/gossip-support/Cargo.toml | 2 +- node/network/statement-distribution/Cargo.toml | 2 +- node/overseer/Cargo.toml | 2 +- node/service/Cargo.toml | 2 +- node/subsystem-util/Cargo.toml | 2 +- node/test/service/Cargo.toml | 2 +- 28 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4cd57cec08b8..51842a24c2f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10810,9 +10810,9 @@ 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", "pin-project-lite 0.2.4", diff --git a/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index 510f6222bf6f..49e732a0251a 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -6,7 +6,7 @@ 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" } diff --git a/node/core/approval-voting/Cargo.toml b/node/core/approval-voting/Cargo.toml index c071e583cf41..822d1c3998bd 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" futures = "0.3.17" futures-timer = "3.0.2" parity-scale-codec = { version = "2.3.0", default-features = false, features = ["bit-vec", "derive"] } -tracing = "0.1.27" +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/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index 69c37ad3b46f..55028f59a1bf 100644 --- a/node/core/av-store/Cargo.toml +++ b/node/core/av-store/Cargo.toml @@ -9,7 +9,7 @@ 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.3.0", features = ["derive"] } diff --git a/node/core/backing/Cargo.toml b/node/core/backing/Cargo.toml index c8e90d3eedf9..72b88b2ae4fd 100644 --- a/node/core/backing/Cargo.toml +++ b/node/core/backing/Cargo.toml @@ -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/bitfield-signing/Cargo.toml b/node/core/bitfield-signing/Cargo.toml index 316ae45e9b70..01b37b827f1b 100644 --- a/node/core/bitfield-signing/Cargo.toml +++ b/node/core/bitfield-signing/Cargo.toml @@ -6,7 +6,7 @@ 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 0c818fc62f51..24ae96b3ee4d 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -7,7 +7,7 @@ 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.3.0", default-features = false, features = ["bit-vec", "derive"] } diff --git a/node/core/chain-api/Cargo.toml b/node/core/chain-api/Cargo.toml index a0e4100d3454..2580d780f329 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -6,7 +6,7 @@ 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" } diff --git a/node/core/chain-selection/Cargo.toml b/node/core/chain-selection/Cargo.toml index 68d421153f49..798b4cb372c6 100644 --- a/node/core/chain-selection/Cargo.toml +++ b/node/core/chain-selection/Cargo.toml @@ -8,7 +8,7 @@ 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/dispute-coordinator/Cargo.toml b/node/core/dispute-coordinator/Cargo.toml index 367cf9824447..45c12ff2ad76 100644 --- a/node/core/dispute-coordinator/Cargo.toml +++ b/node/core/dispute-coordinator/Cargo.toml @@ -7,7 +7,7 @@ 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-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index dff65a8fc260..eddd78e1789b 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -7,7 +7,7 @@ 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" } diff --git a/node/core/parachains-inherent/Cargo.toml b/node/core/parachains-inherent/Cargo.toml index 9322c203067e..487fbd6d2547 100644 --- a/node/core/parachains-inherent/Cargo.toml +++ b/node/core/parachains-inherent/Cargo.toml @@ -7,7 +7,7 @@ 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..ae0f9ea99904 100644 --- a/node/core/provisioner/Cargo.toml +++ b/node/core/provisioner/Cargo.toml @@ -7,7 +7,7 @@ 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 9153a65de8ef..26c2881dffd2 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -17,7 +17,7 @@ futures = "0.3.17" futures-timer = "3.0.2" libc = "0.2.102" 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.3.0", default-features = false, features = ["derive"] } diff --git a/node/core/runtime-api/Cargo.toml b/node/core/runtime-api/Cargo.toml index 77290fddfc76..fa7c8d47cb1b 100644 --- a/node/core/runtime-api/Cargo.toml +++ b/node/core/runtime-api/Cargo.toml @@ -6,7 +6,7 @@ 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/network/approval-distribution/Cargo.toml b/node/network/approval-distribution/Cargo.toml index c4d620e48b24..e47b5d460396 100644 --- a/node/network/approval-distribution/Cargo.toml +++ b/node/network/approval-distribution/Cargo.toml @@ -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 79cc95a418fe..bdcc1e3832ce 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" parity-scale-codec = { version = "2.3.0", features = ["std"] } polkadot-primitives = { path = "../../../primitives" } polkadot-erasure-coding = { path = "../../../erasure-coding" } diff --git a/node/network/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index e4d56f4c6841..90c67b21013d 100644 --- a/node/network/availability-recovery/Cargo.toml +++ b/node/network/availability-recovery/Cargo.toml @@ -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" } diff --git a/node/network/bitfield-distribution/Cargo.toml b/node/network/bitfield-distribution/Cargo.toml index e531e1c9962f..5b35c7534c29 100644 --- a/node/network/bitfield-distribution/Cargo.toml +++ b/node/network/bitfield-distribution/Cargo.toml @@ -6,7 +6,7 @@ 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 983f03457c8b..5e8c5539385a 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -7,7 +7,7 @@ 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.3.0", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/network/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index 8c8bd3cb63bd..561daefb3d1a 100644 --- a/node/network/collator-protocol/Cargo.toml +++ b/node/network/collator-protocol/Cargo.toml @@ -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" } diff --git a/node/network/dispute-distribution/Cargo.toml b/node/network/dispute-distribution/Cargo.toml index accc229e86c3..7c00302b0bb3 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -6,7 +6,7 @@ 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.3.0", features = ["std"] } polkadot-primitives = { path = "../../../primitives" } diff --git a/node/network/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml index 0087a7d6b089..cd31b66cc16f 100644 --- a/node/network/gossip-support/Cargo.toml +++ b/node/network/gossip-support/Cargo.toml @@ -17,7 +17,7 @@ polkadot-primitives = { path = "../../../primitives" } futures = "0.3.17" 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" } diff --git a/node/network/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index b0e935c2cb8b..19018dc94b3e 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -7,7 +7,7 @@ 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" } diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml index bef2d141415e..cb80ed35d0d0 100644 --- a/node/overseer/Cargo.toml +++ b/node/overseer/Cargo.toml @@ -17,7 +17,7 @@ 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/service/Cargo.toml b/node/service/Cargo.toml index fc148f3c83f8..52cafc9b171a 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -62,7 +62,7 @@ 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" diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml index fb844d3ce8a7..cc9be5083f11 100644 --- a/node/subsystem-util/Cargo.toml +++ b/node/subsystem-util/Cargo.toml @@ -13,7 +13,7 @@ parity-scale-codec = { version = "2.3.0", default-features = false, features = [ 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/test/service/Cargo.toml b/node/test/service/Cargo.toml index 06bd67d5168c..972d5a5b0ca3 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -8,7 +8,7 @@ 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.12.0" From f5b1a454ae805f2570f6867e3add5986da138992 Mon Sep 17 00:00:00 2001 From: Liu-Cheng Xu Date: Mon, 27 Sep 2021 14:05:06 +0800 Subject: [PATCH 081/138] Fix bin-substrate toml (#3939) --- bridges/relays/bin-substrate/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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" } From 0d7ebdd135d14bbf2b69b426d799c2739ccafb47 Mon Sep 17 00:00:00 2001 From: Ayush Mishra Date: Mon, 27 Sep 2021 18:05:50 +0530 Subject: [PATCH 082/138] Added multisig in Rococo (#3873) * Added multisig in Rococo * removed formatting error Co-authored-by: Ayush <> --- Cargo.lock | 1 + runtime/rococo/Cargo.toml | 4 ++++ runtime/rococo/src/lib.rs | 22 +++++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 51842a24c2f9..995711fabae8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7919,6 +7919,7 @@ dependencies = [ "pallet-membership", "pallet-mmr", "pallet-mmr-primitives", + "pallet-multisig", "pallet-offences", "pallet-proxy", "pallet-session", diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 240627987ffc..6ad3d89a6db0 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -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 } @@ -150,6 +151,7 @@ std = [ "xcm-builder/std", "pallet-xcm/std", "log/std", + "pallet-multisig/std", ] # When enabled, the runtime API will not be build. # @@ -173,6 +175,7 @@ runtime-benchmarks = [ "pallet-timestamp/runtime-benchmarks", "pallet-xcm/runtime-benchmarks", "xcm-builder/runtime-benchmarks", + "pallet-multisig/runtime-benchmarks", "frame-benchmarking", "hex-literal" ] @@ -197,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 3cb61efd3c4a..99a8b33a7b51 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -251,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, + } } @@ -1082,7 +1084,7 @@ impl InstanceFilter for ProxyType { Call::Auctions { .. } | Call::Crowdloan { .. } | Call::Registrar { .. } | - Call::Slots { .. } + Call::Multisig(..) | Call::Slots { .. } ), } } @@ -1139,6 +1141,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 { From 0c2a0fd9e75530356656ab8027b4d7f665cc48fc Mon Sep 17 00:00:00 2001 From: Robert Klotzner Date: Mon, 27 Sep 2021 16:30:02 +0200 Subject: [PATCH 083/138] Log info about low connectivity and unreachable validators (#3916) * Attempt to add log stats to gossip-support. * WIP: Keep track of connected validators. * Clarify metric. * WIP: Make gossip support report connectivity. * WIP: Fixing tests. * Fix network bridge + integrate in overseer. * Consistent naming. * Fix logic error * cargo fmt * Pretty logs. * cargo fmt * Use `Delay` to trigger periodic checks. * fmt * Fix warning for authority set size of 1. * More correct ratio report if there are no resolved validators. * Prettier rendering of empty set. * Fix typo. * Another typo. * Don't check on every leaf update. * Make compatible with older rustc. * Fix tests. * Demote warning. --- Cargo.lock | 5 + node/network/bridge/src/lib.rs | 23 +- node/network/bridge/src/tests.rs | 16 +- .../network/bridge/src/validator_discovery.rs | 66 ++- node/network/gossip-support/Cargo.toml | 5 + node/network/gossip-support/src/lib.rs | 454 +++++++++++------- node/network/gossip-support/src/tests.rs | 342 ++++++++----- node/network/protocol/src/lib.rs | 20 + node/overseer/src/lib.rs | 2 +- node/service/src/overseer.rs | 7 +- node/subsystem-types/src/messages.rs | 18 +- 11 files changed, 639 insertions(+), 319 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 995711fabae8..6d3227cc50f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6063,7 +6063,10 @@ name = "polkadot-gossip-support" version = "0.9.9" 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", @@ -6071,11 +6074,13 @@ 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", ] 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/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml index cd31b66cc16f..398f5532125d 100644 --- a/node/network/gossip-support/Cargo.toml +++ b/node/network/gossip-support/Cargo.toml @@ -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,6 +16,7 @@ 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.28" @@ -22,7 +24,10 @@ 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..65af6cb12756 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,14 +164,190 @@ 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", + ); + } + + 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 { + 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(); + 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; + }; + + Ok(()) + } + + 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 + ); + } + tracing::debug!( + target: LOG_TARGET, + ?connected_ratio, + ?absolute_connected, + ?absolute_resolved, + unconnected_authorities = %PrettyAuthorities(unconnected_authorities), + "Connectivity Report" + ); } } @@ -161,22 +382,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 +458,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 +470,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..fc25b137d3c7 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,96 @@ 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 + }; + tracing::debug!( + target: LOG_TARGET, + unconnected_authorities = %PrettyAuthorities(unconnected_authorities.iter()), + "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 +435,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/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/overseer/src/lib.rs b/node/overseer/src/lib.rs index 2fb9ffd359b2..f8e935a7eda8 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -403,7 +403,7 @@ pub struct Overseer { #[subsystem(no_dispatch, ApprovalVotingMessage)] approval_voting: ApprovalVoting, - #[subsystem(no_dispatch, GossipSupportMessage)] + #[subsystem(GossipSupportMessage)] gossip_support: GossipSupport, #[subsystem(no_dispatch, DisputeCoordinatorMessage)] diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs index 66156fd18298..1751812babdc 100644 --- a/node/service/src/overseer.rs +++ b/node/service/src/overseer.rs @@ -147,7 +147,7 @@ pub fn create_default_subsystems<'a, Spawner, RuntimeClient>( CollatorProtocolSubsystem, ApprovalDistributionSubsystem, ApprovalVotingSubsystem, - GossipSupportSubsystem, + GossipSupportSubsystem, DisputeCoordinatorSubsystem, DisputeParticipationSubsystem, DisputeDistributionSubsystem, @@ -236,7 +236,10 @@ where Box::new(network_service.clone()), Metrics::register(registry)?, ), - gossip_support: GossipSupportSubsystem::new(keystore.clone()), + gossip_support: GossipSupportSubsystem::new( + keystore.clone(), + authority_discovery_service.clone(), + ), dispute_coordinator: DisputeCoordinatorSubsystem::new( parachains_db.clone(), dispute_coordinator_config, diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index 691289614d14..3822591c0fa9 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, } @@ -850,5 +860,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), +} From 2257112c9696a3913345116fe30ab69136fd6d3a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 27 Sep 2021 12:16:34 -0500 Subject: [PATCH 084/138] disputes: reject single-sided disputes (#3903) * disputes: reject single-sided disputes * fmt --- runtime/parachains/src/disputes.rs | 942 +++++++++++++++++++++-------- 1 file changed, 703 insertions(+), 239 deletions(-) diff --git a/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index 09c2d147854d..aa7acee6d27d 100644 --- a/runtime/parachains/src/disputes.rs +++ b/runtime/parachains/src/disputes.rs @@ -324,6 +324,8 @@ 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] @@ -414,6 +416,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, @@ -429,7 +438,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 { @@ -448,16 +461,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 { @@ -791,10 +819,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. // @@ -812,6 +843,7 @@ impl Pallet { statement, signature, ) { + importer.undo(undo); filter.remove_index(i); continue } @@ -820,6 +852,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 { @@ -952,6 +991,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 { @@ -1416,15 +1462,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 @@ -1436,52 +1481,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)]), ); }); } @@ -1572,7 +1637,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())]))) } @@ -1582,18 +1652,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!( @@ -1630,10 +1714,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)); @@ -1642,18 +1732,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()); @@ -1666,35 +1782,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)); }); } @@ -1709,15 +1856,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 @@ -1729,59 +1883,93 @@ 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(), + 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(), @@ -1805,17 +1993,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, @@ -1829,36 +2017,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, @@ -1874,7 +2076,7 @@ mod tests { session: 5, statements: vec![( DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(2), + ValidatorIndex(6), v2.sign( &ExplicitDisputeStatement { valid: false, @@ -1887,55 +2089,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(), @@ -1944,28 +2178,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, } @@ -1973,28 +2207,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(3, candidate_hash.clone()), false); // It has 5 votes for assert_eq!(Pallet::::could_be_invalid(4, candidate_hash.clone()), true); assert_eq!(Pallet::::could_be_invalid(5, candidate_hash.clone()), true); // 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)]), ], ); @@ -2007,10 +2241,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)]), ], ); @@ -2025,8 +2259,8 @@ mod tests { (5, vec![]), (3, vec![]), (5, vec![]), - (5, vec![]), - (5, vec![ValidatorIndex(1)]), + (5, vec![ValidatorIndex(5)]), + (3, vec![]), ], ); }) @@ -2538,10 +2772,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)); @@ -2553,9 +2793,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(), @@ -2576,6 +2824,11 @@ mod tests { ValidatorIndex(0), sig_c, ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + sig_d.clone(), + ), ], }]; @@ -2586,16 +2839,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; @@ -2609,10 +2933,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 @@ -2624,12 +2952,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()), ]), )) }); @@ -2638,26 +2972,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); @@ -2665,16 +2991,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, @@ -2689,16 +3028,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(), + ), + ], }, ]; @@ -2777,7 +3129,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), }, @@ -2788,7 +3140,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), }, @@ -2853,10 +3205,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)); @@ -2868,27 +3226,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(), + ), + ], }, ]; @@ -2899,13 +3281,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), + ); + }) + } } From 1d05f779b25e01a1d54dbf98a82662d12a8320f9 Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Mon, 27 Sep 2021 20:18:59 +0200 Subject: [PATCH 085/138] minor chore changes (#3944) * chore: mild refactor, avoid the channel in handle_import_statements * chore/md: lint --- node/core/dispute-coordinator/src/real/mod.rs | 37 +++++-------------- .../test-parachains/adder/collator/README.md | 2 + 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index b321d67022ff..7dd072017920 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -537,7 +537,7 @@ async fn handle_incoming( statements, pending_confirmation, } => { - handle_import_statements( + let outcome = handle_import_statements( ctx, overlay_db, state, @@ -546,10 +546,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(); @@ -648,14 +648,10 @@ async fn handle_import_statements( 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) { @@ -666,11 +662,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(), }; @@ -795,15 +787,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(); @@ -821,11 +810,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( @@ -932,8 +917,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, @@ -942,11 +926,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/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 ``` From 211a4fca39bf65636c69f31efe58d0226434284d Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Mon, 27 Sep 2021 21:55:19 -0700 Subject: [PATCH 086/138] Add benchmarking for parachain runtime initializer pallet (#3913) * Add benchmarking for parachain runtime initializer pallet * Fix default impl for initializer pallet WeightInfo * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- 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 * Use real weights and use max_block as default weight * Add variable for digest vec length for initializer benchmark * Fix compilation errors * Add WeightInfo to parachains_initializer config in polkadot runtime * cargo run --quiet --release --features=runtime-benchmarks -- 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 * cargo run --quiet --release --features=runtime-benchmarks -- 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 * Appease spellchecker * Use kusama weights in polkadot runtime for parachain initializer pallet Co-authored-by: Parity Bot --- runtime/kusama/src/lib.rs | 3 + runtime/kusama/src/weights/mod.rs | 1 + .../weights/runtime_parachains_initializer.rs | 55 +++++++++++++++++++ runtime/parachains/src/initializer.rs | 28 +++++++++- .../src/initializer/benchmarking.rs | 44 +++++++++++++++ runtime/parachains/src/mock.rs | 1 + runtime/polkadot/src/lib.rs | 1 + runtime/polkadot/src/weights/mod.rs | 1 + .../weights/runtime_parachains_initializer.rs | 55 +++++++++++++++++++ runtime/rococo/src/lib.rs | 1 + runtime/test-runtime/src/lib.rs | 1 + runtime/westend/src/lib.rs | 5 +- runtime/westend/src/weights/mod.rs | 1 + .../weights/runtime_parachains_initializer.rs | 55 +++++++++++++++++++ 14 files changed, 249 insertions(+), 3 deletions(-) create mode 100644 runtime/kusama/src/weights/runtime_parachains_initializer.rs create mode 100644 runtime/parachains/src/initializer/benchmarking.rs create mode 100644 runtime/polkadot/src/weights/runtime_parachains_initializer.rs create mode 100644 runtime/westend/src/weights/runtime_parachains_initializer.rs diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index c2fa01f66f36..fbe3d45f93f5 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1181,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! { @@ -2054,6 +2055,7 @@ 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); @@ -2130,6 +2132,7 @@ 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); diff --git a/runtime/kusama/src/weights/mod.rs b/runtime/kusama/src/weights/mod.rs index 0b944e458a90..ea8c2fc7f58d 100644 --- a/runtime/kusama/src/weights/mod.rs +++ b/runtime/kusama/src/weights/mod.rs @@ -45,4 +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/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/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 1ccf57ea357a..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 { diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index dccd33ebb8ad..62f0a8287b2a 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1146,6 +1146,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! { diff --git a/runtime/polkadot/src/weights/mod.rs b/runtime/polkadot/src/weights/mod.rs index 3dcd0edaac38..19842799a533 100644 --- a/runtime/polkadot/src/weights/mod.rs +++ b/runtime/polkadot/src/weights/mod.rs @@ -43,4 +43,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/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/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 99a8b33a7b51..8033a2d580d2 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -753,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 {} diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 09da961b2169..842f451c40ed 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -480,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 {} diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index e237a473c2ac..fb72eb5f5693 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -805,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 {} @@ -850,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 {} @@ -1477,6 +1478,7 @@ 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 @@ -1588,6 +1590,7 @@ 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 diff --git a/runtime/westend/src/weights/mod.rs b/runtime/westend/src/weights/mod.rs index afca6434f826..923245b2fc35 100644 --- a/runtime/westend/src/weights/mod.rs +++ b/runtime/westend/src/weights/mod.rs @@ -35,5 +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/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)) + } +} From fdf3dfde1d5f092dc79c50d5615b3cf72a5ecb3a Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Tue, 28 Sep 2021 03:43:55 -0500 Subject: [PATCH 087/138] fix flaky chain-selection tests (#3948) --- node/core/chain-selection/src/tests.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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 From e80340c0cd70fa023718b49b97ae3f353af9d350 Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Tue, 28 Sep 2021 15:01:04 +0200 Subject: [PATCH 088/138] remove connected disconnected state, 3rd attempt (#3898) * overseer: remove mut in connector * rename SelectRelayChainWFallback -> SelectRelayChain * split Basics * introduce the OverseerConnector, use it * introduce is_relay_chain to RelayChainSelection * chore: rename var * avoid dummy import in subsystem * actually remove Disconnecte/Connected enum * extract DummySubsystem into mod dummy. * Handle::Connected -> Handle::new * chore: fmt * fix test * select relay chain takes no arg, simplification * fmt * Update node/service/src/lib.rs Co-authored-by: Andronik Ordian * chore: improve malus tests * avoid the deferred setting of `is_relay_chain` in `RelayChainSelection` * positive assertion is not mandated, only the negative one, to avoid a stall * chore: fmt * assure the `RelayChainSelection` is not used before the overseer is up and running Co-authored-by: Andronik Ordian --- Cargo.lock | 1 + doc/testing.md | 3 +- node/malus/src/tests.rs | 94 ++++-- node/malus/src/variant-a.rs | 5 +- node/overseer/examples/minimal-example.rs | 14 +- .../proc-macro/src/impl_builder.rs | 6 +- node/overseer/src/dummy.rs | 54 ++++ node/overseer/src/lib.rs | 93 ++---- node/overseer/src/metrics.rs | 4 +- node/overseer/src/subsystems.rs | 42 +-- node/overseer/src/tests.rs | 74 +++-- node/service/Cargo.toml | 1 + node/service/src/lib.rs | 293 +++++++++++------- node/service/src/overseer.rs | 195 +++++++++++- node/service/src/relay_chain_selection.rs | 80 +++-- node/service/src/tests.rs | 2 +- node/subsystem-test-helpers/src/lib.rs | 7 +- node/subsystem/src/lib.rs | 4 +- 18 files changed, 641 insertions(+), 331 deletions(-) create mode 100644 node/overseer/src/dummy.rs diff --git a/Cargo.lock b/Cargo.lock index 6d3227cc50f4..02c0804b7741 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6884,6 +6884,7 @@ dependencies = [ "kvdb", "kvdb-rocksdb", "log", + "lru", "pallet-babe", "pallet-im-online", "pallet-mmr-primitives", 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/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/malus/src/variant-a.rs b/node/malus/src/variant-a.rs index a545bd360faf..8abdf75198b3 100644 --- a/node/malus/src/variant-a.rs +++ b/node/malus/src/variant-a.rs @@ -37,7 +37,7 @@ use polkadot_cli::{ use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; use polkadot_node_subsystem::{ messages::{AllMessages, CandidateValidationMessage}, - overseer::{self, OverseerHandle}, + overseer::{self, OverseerConnector, OverseerHandle}, FromOverseer, }; @@ -86,6 +86,7 @@ struct BehaveMaleficient; impl OverseerGen for BehaveMaleficient { fn generate<'a, Spawner, RuntimeClient>( &self, + connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandle), Error> where @@ -113,7 +114,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()) } } diff --git a/node/overseer/examples/minimal-example.rs b/node/overseer/examples/minimal-example.rs index 6970054a3013..0c4a3bdc6ae6 100644 --- a/node/overseer/examples/minimal-example.rs +++ b/node/overseer/examples/minimal-example.rs @@ -29,7 +29,8 @@ use polkadot_node_subsystem_types::messages::{ use polkadot_overseer::{ self as overseer, gen::{FromOverseer, SpawnedSubsystem}, - AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerSignal, SubsystemError, + AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerConnector, + OverseerSignal, SubsystemError, }; use polkadot_primitives::v1::Hash; @@ -173,8 +174,15 @@ fn main() { .replace_candidate_validation(|_| Subsystem2) .replace_candidate_backing(|orig| orig); - let (overseer, _handle) = - Overseer::new(vec![], all_subsystems, None, AlwaysSupportsParachains, spawner).unwrap(); + let (overseer, _handle) = Overseer::new( + vec![], + all_subsystems, + None, + AlwaysSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); let overseer_fut = overseer.run().fuse(); let timer_stream = timer_stream; 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..4714a1f3d495 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs @@ -130,9 +130,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 { diff --git a/node/overseer/src/dummy.rs b/node/overseer/src/dummy.rs new file mode 100644 index 000000000000..c3d3d4fcf3c8 --- /dev/null +++ b/node/overseer/src/dummy.rs @@ -0,0 +1,54 @@ +// 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::{AllMessages, OverseerSignal}; +use polkadot_node_subsystem_types::errors::SubsystemError; +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 } + } +} diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index f8e935a7eda8..90c958c7a5e0 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -70,7 +70,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 +90,18 @@ pub use polkadot_node_subsystem_types::{ jaeger, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, OverseerSignal, }; +/// Test helper supplements. +pub mod dummy; +pub use self::dummy::DummySubsystem; + // 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 use self::subsystems::AllSubsystems; -mod metrics; -use self::metrics::Metrics; +pub mod metrics; -use polkadot_node_metrics::{ +pub use polkadot_node_metrics::{ metrics::{prometheus, Metrics as MetricsTrait}, Metronome, }; @@ -115,7 +117,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 +143,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 +197,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"); } } } @@ -439,7 +385,7 @@ pub struct Overseer { pub known_leaves: LruCache, /// Various Prometheus metrics. - pub metrics: Metrics, + pub metrics: crate::metrics::Metrics, } impl Overseer @@ -490,12 +436,13 @@ where /// # use polkadot_primitives::v1::Hash; /// # use polkadot_overseer::{ /// # self as overseer, + /// # Overseer, /// # OverseerSignal, + /// # OverseerConnector, /// # SubsystemSender as _, /// # AllMessages, /// # AllSubsystems, /// # HeadSupportsParachains, - /// # Overseer, /// # SubsystemError, /// # gen::{ /// # SubsystemContext, @@ -549,6 +496,7 @@ where /// None, /// AlwaysSupportsParachains, /// spawner, + /// OverseerConnector::default(), /// ).unwrap(); /// /// let timer = Delay::new(Duration::from_millis(50)).fuse(); @@ -615,6 +563,7 @@ where prometheus_registry: Option<&prometheus::Registry>, supports_parachains: SupportsParachains, s: S, + connector: OverseerConnector, ) -> SubsystemResult<(Self, OverseerHandle)> where CV: Subsystem, SubsystemError> + Send, @@ -643,7 +592,7 @@ where CS: Subsystem, SubsystemError> + Send, S: SpawnNamed, { - let metrics: Metrics = ::register(prometheus_registry)?; + let metrics = ::register(prometheus_registry)?; let (mut overseer, handle) = Self::builder() .candidate_validation(all_subsystems.candidate_validation) @@ -679,7 +628,7 @@ where .supports_parachains(supports_parachains) .metrics(metrics.clone()) .spawner(s) - .build()?; + .build_with_connector(connector)?; // spawn the metrics metronome task { 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 index 648528730d67..695d368dc16c 100644 --- a/node/overseer/src/subsystems.rs +++ b/node/overseer/src/subsystems.rs @@ -19,47 +19,9 @@ //! 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 crate::dummy::DummySubsystem; 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 } - } -} +use polkadot_overseer_gen::MapSubsystem; /// This struct is passed as an argument to create a new instance of an [`Overseer`]. /// diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs index 7564116e7141..e8edab17679e 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -32,7 +32,7 @@ use polkadot_primitives::v1::{ ValidatorIndex, }; -use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer}; +use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer, OverseerConnector}; use metered_channel as metered; use assert_matches::assert_matches; @@ -164,9 +164,16 @@ fn overseer_works() { .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); + let (overseer, handle) = Overseer::new( + vec![], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -227,9 +234,10 @@ fn overseer_metrics_work() { Some(®istry), MockSupportsParachains, spawner, + OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -280,8 +288,15 @@ fn overseer_ends_on_subsystem_exit() { 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) = Overseer::new( + vec![], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); overseer.run().await.unwrap(); }) @@ -382,10 +397,16 @@ fn overseer_start_stop_works() { let all_subsystems = AllSubsystems::<()>::dummy() .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); + let (overseer, handle) = Overseer::new( + vec![first_block], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -486,9 +507,10 @@ fn overseer_finalize_works() { None, MockSupportsParachains, spawner, + OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -573,10 +595,16 @@ fn do_not_send_empty_leaves_update_on_block_finalization() { let all_subsystems = AllSubsystems::<()>::dummy().replace_candidate_backing(move |_| TestSubsystem6(tx_5)); - let (overseer, handle) = - Overseer::new(Vec::new(), all_subsystems, None, MockSupportsParachains, spawner) - .unwrap(); - let mut handle = Handle::Connected(handle); + let (overseer, handle) = Overseer::new( + Vec::new(), + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -849,9 +877,17 @@ fn overseer_all_subsystems_receive_signals_and_messages() { 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); + + let (overseer, handle) = Overseer::new( + vec![], + all_subsystems, + None, + MockSupportsParachains, + spawner, + OverseerConnector::default(), + ) + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 52cafc9b171a..2dd75f42614e 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -68,6 +68,7 @@ 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/src/lib.rs b/node/service/src/lib.rs index bcb181fa04b8..d4c8cdc16a7c 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -54,7 +54,7 @@ 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, sc_client_api::AuxStore, sp_authority_discovery::AuthorityDiscoveryApi, @@ -68,6 +68,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 +304,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 +322,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 +396,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 +711,54 @@ 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()); + + use relay_chain_selection::SelectRelayChain; + + 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 +767,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 +852,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 +871,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 +911,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 +921,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, @@ -875,43 +945,37 @@ where dispute_coordinator_config, }, )?; - 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 }; @@ -1228,6 +1292,31 @@ where Ok((task_manager, rpc_handlers)) } +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( @@ -1244,48 +1333,26 @@ 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"))] diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs index 1751812babdc..c00b888e217f 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,13 @@ 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::DummySubsystem; +pub use polkadot_overseer::{ + metrics::Metrics, AllSubsystems, BlockInfo, HeadSupportsParachains, MetricsTrait, Overseer, + OverseerBuilder, OverseerConnector, OverseerHandle, +}; + use polkadot_primitives::v1::ParachainHost; use sc_authority_discovery::Service as AuthorityDiscoveryService; use sc_client_api::AuxStore; @@ -258,6 +265,176 @@ where Ok(all_subsystems) } +/// 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, + network_service, + authority_discovery_service, + pov_req_receiver, + chunk_req_receiver, + collation_req_receiver, + available_data_req_receiver, + statement_req_receiver, + dispute_req_receiver, + registry, + spawner, + is_collator, + approval_voting_config, + availability_config, + candidate_validation_config, + chain_selection_config, + dispute_coordinator_config, + }: OverseerGenArgs<'a, Spawner, RuntimeClient>, +) -> Result< + OverseerBuilder< + Spawner, + Arc, + CandidateValidationSubsystem, + CandidateBackingSubsystem, + StatementDistributionSubsystem, + AvailabilityDistributionSubsystem, + AvailabilityRecoverySubsystem, + BitfieldSigningSubsystem, + BitfieldDistributionSubsystem, + ProvisionerSubsystem, + RuntimeApiSubsystem, + AvailabilityStoreSubsystem, + NetworkBridgeSubsystem< + Arc>, + AuthorityDiscoveryService, + >, + ChainApiSubsystem, + CollationGenerationSubsystem, + CollatorProtocolSubsystem, + ApprovalDistributionSubsystem, + ApprovalVotingSubsystem, + GossipSupportSubsystem, + DisputeCoordinatorSubsystem, + DisputeParticipationSubsystem, + DisputeDistributionSubsystem, + ChainSelectionSubsystem, + >, + Error, +> +where + RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, + RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, + Spawner: 'static + SpawnNamed + Clone + Unpin, +{ + use polkadot_node_subsystem_util::metrics::Metrics; + use std::iter::FromIterator; + + 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( + available_data_req_receiver, + Metrics::register(registry)?, + )) + .availability_store(AvailabilityStoreSubsystem::new( + parachains_db.clone(), + availability_config, + Metrics::register(registry)?, + )) + .bitfield_distribution(BitfieldDistributionSubsystem::new(Metrics::register(registry)?)) + .bitfield_signing(BitfieldSigningSubsystem::new( + spawner.clone(), + keystore.clone(), + Metrics::register(registry)?, + )) + .candidate_backing(CandidateBackingSubsystem::new( + spawner.clone(), + keystore.clone(), + Metrics::register(registry)?, + )) + .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({ + let side = match is_collator { + IsCollator::Yes(collator_pair) => ProtocolSide::Collator( + network_service.local_peer_id().clone(), + collator_pair, + collation_req_receiver, + Metrics::register(registry)?, + ), + IsCollator::No => ProtocolSide::Validator { + keystore: keystore.clone(), + eviction_policy: Default::default(), + metrics: Metrics::register(registry)?, + }, + }; + CollatorProtocolSubsystem::new(side) + }) + .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( + runtime_client.clone(), + Metrics::register(registry)?, + spawner.clone(), + )) + .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_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( + parachains_db.clone(), + dispute_coordinator_config, + keystore.clone(), + Metrics::register(registry)?, + )) + .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)) + .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. /// /// Default behavior is to create an unmodified overseer, as `RealOverseerGen` @@ -266,6 +443,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 @@ -274,19 +452,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 @@ -294,14 +475,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..2033a06a5f22 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,62 @@ 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 { + 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 } @@ -179,34 +175,34 @@ where maybe_max_number: Option, ) -> Result, ConsensusError> { 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 +230,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 +269,7 @@ impl OverseerHandleT for Handle { } } -impl SelectRelayChain +impl SelectRelayChainInner where B: HeaderProviderProvider, OH: OverseerHandleT, @@ -317,7 +313,7 @@ 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, diff --git a/node/service/src/tests.rs b/node/service/src/tests.rs index 34ac69d78cc7..7dc5fe19ecbd 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(), diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index 80dae08825b0..0ac52ee82346 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -372,7 +372,9 @@ 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::{ + AllSubsystems, Handle, HeadSupportsParachains, Overseer, OverseerConnector, + }; use polkadot_primitives::v1::Hash; struct AlwaysSupportsParachains; @@ -394,9 +396,10 @@ mod tests { None, AlwaysSupportsParachains, spawner.clone(), + OverseerConnector::default(), ) .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle::new(handle); spawner.spawn("overseer", overseer.run().then(|_| async { () }).boxed()); 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, *}, From 277bb89f3ee655a8f39e3b6d88b4620ed3e18e0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Sep 2021 15:47:10 +0200 Subject: [PATCH 089/138] Bump nix from 0.19.1 to 0.20.0 (#3587) Bumps [nix](https://github.com/nix-rust/nix) from 0.19.1 to 0.20.0. - [Release notes](https://github.com/nix-rust/nix/releases) - [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md) - [Commits](https://github.com/nix-rust/nix/compare/v0.19.1...v0.20.0) --- updated-dependencies: - dependency-name: nix dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 02c0804b7741..829c81dc64f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4403,9 +4403,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", diff --git a/Cargo.toml b/Cargo.toml index 1a8407e53a91..df4c213640a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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] From f6826bdceabcdf2af2a2ce6367b053759f77fa3f Mon Sep 17 00:00:00 2001 From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com> Date: Tue, 28 Sep 2021 17:47:52 +0200 Subject: [PATCH 090/138] Docker files chore (#3880) * Renamed staking-miner Dockerfiles * change readme stacking-miner * mv docker/ to scripts/docker/polkadot * renamed dockerfiles in scripts/docker * renamed Dockerfiles * Update scripts/docker/staking-miner/staking_miner_injected.Dockerfile Co-authored-by: Chevdor * renamed release.Dockerfile * renamed staking-miner dockerfiles * add label polkadot_builder.Dockerfile * Update scripts/docker/polkadot/polkadot_builder.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/polkadot/polkadot_builder.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/polkadot/polkadot_builder.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/polkadot/polkadot_builder.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/polkadot_injected_release.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/collator_injected.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/staking-miner/staking-miner_injected.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/staking-miner/staking-miner_builder.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/staking-miner/staking-miner_builder.Dockerfile Co-authored-by: Chevdor * Update scripts/docker/staking-miner/staking-miner_injected.Dockerfile Co-authored-by: Chevdor * move gpg server as variable to GHA config * simplified polkadot_builder.Dockerfile * gitlab-ci modify cp command in test-build-linux-stable * fix tests * renamed scripts/docker to scripts/dockerfiles * fix spellcheck * fix spellcheck Co-authored-by: Chevdor --- .github/workflows/publish-docker-release.yml | 3 ++- .gitlab-ci.yml | 12 ++++++------ doc/docker.md | 8 ++++---- .../collator_injected.Dockerfile} | 7 +++---- .../dockerfiles/polkadot}/README.md | 0 {docker => scripts/dockerfiles/polkadot}/build.sh | 2 +- .../polkadot}/docker-compose-local.yml | 2 ++ .../dockerfiles/polkadot}/docker-compose.yml | 1 + .../polkadot/polkadot_builder.Dockerfile | 15 +++++++-------- .../polkadot_injected_debug.Dockerfile} | 5 ++--- .../polkadot_injected_release.Dockerfile} | 11 ++++++----- .../staking-miner_builder.Dockerfile} | 4 ++-- .../staking-miner_injected.Dockerfile} | 4 ++-- scripts/gitlab/lingua.dic | 5 +++++ utils/staking-miner/README.md | 4 ++-- 15 files changed, 45 insertions(+), 38 deletions(-) rename scripts/{docker/collator.Dockerfile => dockerfiles/collator_injected.Dockerfile} (89%) rename {docker => scripts/dockerfiles/polkadot}/README.md (100%) rename {docker => scripts/dockerfiles/polkadot}/build.sh (80%) rename {docker => scripts/dockerfiles/polkadot}/docker-compose-local.yml (92%) rename {docker => scripts/dockerfiles/polkadot}/docker-compose.yml (85%) rename docker/Dockerfile => scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile (53%) rename scripts/{docker/Dockerfile => dockerfiles/polkadot_injected_debug.Dockerfile} (93%) rename scripts/{docker/release.Dockerfile => dockerfiles/polkadot_injected_release.Dockerfile} (76%) rename scripts/{docker/staking-miner/staking_miner-builder.Dockerfile => dockerfiles/staking-miner/staking-miner_builder.Dockerfile} (90%) rename scripts/{docker/staking-miner/staking_miner-injected.Dockerfile => dockerfiles/staking-miner/staking-miner_injected.Dockerfile} (89%) 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 3713d94f950b..15e69605cd8c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -210,7 +210,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 @@ -265,7 +265,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 #### stage: build @@ -358,8 +358,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: @@ -394,8 +394,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" 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/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/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 9effe75e440c..68001b64a4e2 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -198,6 +198,7 @@ proxy/G proxying PRs PVF/S +p2p README/MS redhat/M register/CD @@ -227,6 +228,7 @@ spawn/SR spawner SS58 sr25519 +SSL startup/MS stateful str @@ -283,6 +285,7 @@ versa version/DMSG versioned VMP/SM +VPS VRF/SM w3f/MS wakeups @@ -293,9 +296,11 @@ Westend/M wildcard/MS WND/S Wococo +WS XCM/S XCMP/M yeet +yml decrement DM ParaId 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 From dc52d224217955fe80894489107484351eb040d6 Mon Sep 17 00:00:00 2001 From: Guillaume Thiolliere Date: Tue, 28 Sep 2021 19:38:00 +0200 Subject: [PATCH 091/138] fix master (#3955) --- node/service/src/overseer.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs index c00b888e217f..6cdc8eaf242e 100644 --- a/node/service/src/overseer.rs +++ b/node/service/src/overseer.rs @@ -313,7 +313,7 @@ pub fn prepared_overseer_builder<'a, Spawner, RuntimeClient>( CollatorProtocolSubsystem, ApprovalDistributionSubsystem, ApprovalVotingSubsystem, - GossipSupportSubsystem, + GossipSupportSubsystem, DisputeCoordinatorSubsystem, DisputeParticipationSubsystem, DisputeDistributionSubsystem, @@ -405,7 +405,10 @@ where Box::new(network_service.clone()), Metrics::register(registry)?, )) - .gossip_support(GossipSupportSubsystem::new(keystore.clone())) + .gossip_support(GossipSupportSubsystem::new( + keystore.clone(), + authority_discovery_service.clone(), + )) .dispute_coordinator(DisputeCoordinatorSubsystem::new( parachains_db.clone(), dispute_coordinator_config, From 5415e26d129ab7af3efb154a4a70b04e8041602a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Sep 2021 23:18:51 +0200 Subject: [PATCH 092/138] Bump libc from 0.2.102 to 0.2.103 (#3950) Bumps [libc](https://github.com/rust-lang/libc) from 0.2.102 to 0.2.103. - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.102...0.2.103) --- updated-dependencies: - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/core/pvf/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 829c81dc64f8..8de1d385bf28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3288,9 +3288,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.102" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103" +checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" [[package]] name = "libgit2-sys" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 26c2881dffd2..054d937f55d5 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -15,7 +15,7 @@ async-process = "1.1.0" assert_matches = "1.4.0" futures = "0.3.17" futures-timer = "3.0.2" -libc = "0.2.102" +libc = "0.2.103" slotmap = "1.0" tracing = "0.1.28" pin-project = "1.0.8" From ad40ebbea48227e989c0b3c5242562846aa4b7cd Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Wed, 29 Sep 2021 11:53:44 +0200 Subject: [PATCH 093/138] approval-voting: populate session cache in advance (#3954) * try populating session cache in advance * remove unused arg * fmt * fix compilation * fix tests * Revert "fix tests" This reverts commit e8222b1108e09a39727a38e3b4e4c3061642a213. * fix tests * bump dispute window const by 1 * fix tests --- node/core/approval-voting/src/import.rs | 4 +-- node/core/approval-voting/src/tests.rs | 4 +-- node/core/dispute-coordinator/src/real/mod.rs | 17 +----------- node/primitives/src/lib.rs | 3 ++- .../src/rolling_session_window.rs | 27 ++++++++----------- 5 files changed, 18 insertions(+), 37 deletions(-) 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/tests.rs b/node/core/approval-voting/src/tests.rs index c40d62ecedf1..fe0725384ba7 100644 --- a/node/core/approval-voting/src/tests.rs +++ b/node/core/approval-voting/src/tests.rs @@ -786,8 +786,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(); } ); diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index 7dd072017920..f0d0f5b8597a 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -478,22 +478,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, diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index c2c300fca74b..8d00e8b0cb39 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -69,7 +69,8 @@ pub const POV_BOMB_LIMIT: usize = (MAX_POV_SIZE * 4u32) as usize; /// On Polkadot this is 1 day, and on Kusama it's 6 hours. /// /// Number of sessions we want to consider in disputes. -pub const DISPUTE_WINDOW: SessionIndex = 6; +/// + 1 for the child's session. +pub const DISPUTE_WINDOW: SessionIndex = 6 + 1; /// The cumulative weight of a block in a fork-choice rule. pub type BlockWeight = u32; diff --git a/node/subsystem-util/src/rolling_session_window.rs b/node/subsystem-util/src/rolling_session_window.rs index a7afc4f8c949..1c73ff58c718 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,9 +286,10 @@ 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; + const TEST_WINDOW_SIZE: SessionIndex = 6 + 1; fn dummy_session_info(index: SessionIndex) -> SessionInfo { SessionInfo { @@ -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)]); From a2869fa902959d5f064d0399e8abc29cb7e94447 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Sep 2021 11:57:24 +0200 Subject: [PATCH 094/138] Bump parity-scale-codec from 2.3.0 to 2.3.1 (#3959) Bumps [parity-scale-codec](https://github.com/paritytech/parity-scale-codec) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/paritytech/parity-scale-codec/releases) - [Changelog](https://github.com/paritytech/parity-scale-codec/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/parity-scale-codec/compare/parity-scale-codec-v2.3.0...parity-scale-codec-v2.3.1) --- updated-dependencies: - dependency-name: parity-scale-codec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- core-primitives/Cargo.toml | 2 +- erasure-coding/Cargo.toml | 2 +- node/collation-generation/Cargo.toml | 2 +- node/core/approval-voting/Cargo.toml | 2 +- node/core/av-store/Cargo.toml | 2 +- node/core/candidate-validation/Cargo.toml | 2 +- node/core/chain-api/Cargo.toml | 2 +- node/core/dispute-participation/Cargo.toml | 2 +- node/core/pvf/Cargo.toml | 2 +- node/jaeger/Cargo.toml | 2 +- node/network/availability-distribution/Cargo.toml | 2 +- node/network/availability-recovery/Cargo.toml | 2 +- node/network/bridge/Cargo.toml | 2 +- node/network/collator-protocol/Cargo.toml | 2 +- node/network/dispute-distribution/Cargo.toml | 2 +- node/network/protocol/Cargo.toml | 2 +- node/network/statement-distribution/Cargo.toml | 2 +- node/primitives/Cargo.toml | 2 +- node/subsystem-util/Cargo.toml | 2 +- node/test/client/Cargo.toml | 2 +- parachain/test-parachains/Cargo.toml | 2 +- parachain/test-parachains/adder/Cargo.toml | 2 +- parachain/test-parachains/adder/collator/Cargo.toml | 2 +- primitives/Cargo.toml | 2 +- runtime/common/Cargo.toml | 2 +- runtime/common/slot_range_helper/Cargo.toml | 2 +- runtime/kusama/Cargo.toml | 2 +- runtime/parachains/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/rococo/Cargo.toml | 2 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- statement-table/Cargo.toml | 2 +- xcm/Cargo.toml | 2 +- xcm/xcm-builder/Cargo.toml | 2 +- xcm/xcm-executor/Cargo.toml | 2 +- 37 files changed, 40 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8de1d385bf28..84c09a1068f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5489,9 +5489,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11263a97373b43da4b426edbb52ef99a7b51e2d9752ef56a7f8b356f48495a5" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.0", "bitvec 0.20.1", @@ -5503,9 +5503,9 @@ 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.1.0", "proc-macro2", diff --git a/core-primitives/Cargo.toml b/core-primitives/Cargo.toml index 0e0322d2dd22..a0a43e440252 100644 --- a/core-primitives/Cargo.toml +++ b/core-primitives/Cargo.toml @@ -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.3.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/erasure-coding/Cargo.toml b/erasure-coding/Cargo.toml index b0db6c75f4d1..6bf1e6acb03e 100644 --- a/erasure-coding/Cargo.toml +++ b/erasure-coding/Cargo.toml @@ -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.3.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/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index 49e732a0251a..41da8df3691a 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -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.3.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 822d1c3998bd..374e37c05a27 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.17" futures-timer = "3.0.2" -parity-scale-codec = { version = "2.3.0", default-features = false, features = ["bit-vec", "derive"] } +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" diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index 55028f59a1bf..20df7ace4271 100644 --- a/node/core/av-store/Cargo.toml +++ b/node/core/av-store/Cargo.toml @@ -12,7 +12,7 @@ thiserror = "1.0.26" tracing = "0.1.28" bitvec = "0.20.1" -parity-scale-codec = { version = "2.3.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/candidate-validation/Cargo.toml b/node/core/candidate-validation/Cargo.toml index 24ae96b3ee4d..50fae0d22b88 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -10,7 +10,7 @@ futures = "0.3.17" 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.3.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 2580d780f329..a72612f1bd17 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -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.3.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/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index eddd78e1789b..34617ade2350 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -15,6 +15,6 @@ polkadot-primitives = { path = "../../../primitives" } [dev-dependencies] assert_matches = "1.5.0" -parity-scale-codec = "2.3.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/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 054d937f55d5..6710924bb114 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -20,7 +20,7 @@ slotmap = "1.0" tracing = "0.1.28" pin-project = "1.0.8" rand = "0.8.3" -parity-scale-codec = { version = "2.3.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/jaeger/Cargo.toml b/node/jaeger/Cargo.toml index 51858a654100..736b3c3e5237 100644 --- a/node/jaeger/Cargo.toml +++ b/node/jaeger/Cargo.toml @@ -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.3.0", default-features = false } +parity-scale-codec = { version = "2.3.1", default-features = false } diff --git a/node/network/availability-distribution/Cargo.toml b/node/network/availability-distribution/Cargo.toml index bdcc1e3832ce..4dd6d7ad6568 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] futures = "0.3.17" tracing = "0.1.28" -parity-scale-codec = { version = "2.3.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/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index 90c67b21013d..435670eb4765 100644 --- a/node/network/availability-recovery/Cargo.toml +++ b/node/network/availability-recovery/Cargo.toml @@ -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.3.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/bridge/Cargo.toml b/node/network/bridge/Cargo.toml index 5e8c5539385a..3f4a01e9b236 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -9,7 +9,7 @@ async-trait = "0.1.51" futures = "0.3.17" tracing = "0.1.28" polkadot-primitives = { path = "../../../primitives" } -parity-scale-codec = { version = "2.3.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/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index 561daefb3d1a..799231b0b427 100644 --- a/node/network/collator-protocol/Cargo.toml +++ b/node/network/collator-protocol/Cargo.toml @@ -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.3.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 7c00302b0bb3..eff85629f422 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" futures = "0.3.17" tracing = "0.1.28" derive_more = "0.99.14" -parity-scale-codec = { version = "2.3.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/protocol/Cargo.toml b/node/network/protocol/Cargo.toml index 4b94db56e7c4..78d5cbca6353 100644 --- a/node/network/protocol/Cargo.toml +++ b/node/network/protocol/Cargo.toml @@ -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.3.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/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index 19018dc94b3e..8e6893805c07 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -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.3.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/primitives/Cargo.toml b/node/primitives/Cargo.toml index c425c97613ad..8ae025ccaccd 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -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.3.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" } diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml index cc9be5083f11..3b8db4170c9b 100644 --- a/node/subsystem-util/Cargo.toml +++ b/node/subsystem-util/Cargo.toml @@ -9,7 +9,7 @@ description = "Subsystem traits and message definitions" async-trait = "0.1.51" futures = "0.3.17" itertools = "0.10" -parity-scale-codec = { version = "2.3.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" diff --git a/node/test/client/Cargo.toml b/node/test/client/Cargo.toml index 8e0599e88a4d..1ab03b74192c 100644 --- a/node/test/client/Cargo.toml +++ b/node/test/client/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-scale-codec = { version = "2.3.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/parachain/test-parachains/Cargo.toml b/parachain/test-parachains/Cargo.toml index 27f11923cd98..4290e5b1d460 100644 --- a/parachain/test-parachains/Cargo.toml +++ b/parachain/test-parachains/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] tiny-keccak = "2.0.2" -parity-scale-codec = { version = "2.3.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 49c35c5cc85f..2ed5fd3f9d9c 100644 --- a/parachain/test-parachains/adder/Cargo.toml +++ b/parachain/test-parachains/adder/Cargo.toml @@ -8,7 +8,7 @@ build = "build.rs" [dependencies] parachain = { package = "polkadot-parachain", path = "../../", default-features = false, features = [ "wasm-api" ] } -parity-scale-codec = { version = "2.3.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 281329528b16..52a59506b529 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -14,7 +14,7 @@ name = "adder_collator_puppet_worker" path = "bin/puppet_worker.rs" [dependencies] -parity-scale-codec = { version = "2.3.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" diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 1c36fd0a807d..eee6f8431de2 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -7,7 +7,7 @@ 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.3.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/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 8aa7d4af9038..46f91f5b80c0 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -7,7 +7,7 @@ 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.3.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"] } diff --git a/runtime/common/slot_range_helper/Cargo.toml b/runtime/common/slot_range_helper/Cargo.toml index 7e3ec8a8b48e..ec9158f75f9c 100644 --- a/runtime/common/slot_range_helper/Cargo.toml +++ b/runtime/common/slot_range_helper/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] paste = "1.0" enumn = "0.1.3" -parity-scale-codec = { version = "2.3.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/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 64a9d2b80b50..75f84c25bd18 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -7,7 +7,7 @@ build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.3.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 } diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 359ad454dd48..3fcf3d59513d 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.3.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/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 8ba99f82ac8d..728bbdf9b4b8 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -7,7 +7,7 @@ build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.3.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 } diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 6ad3d89a6db0..1d347e2035c3 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" build = "build.rs" [dependencies] -parity-scale-codec = { version = "2.3.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 } diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index b321c80088e1..497bc6a6b1d5 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -7,7 +7,7 @@ build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.3.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/westend/Cargo.toml b/runtime/westend/Cargo.toml index 3b41179ad350..a968f281101c 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -7,7 +7,7 @@ build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.3.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 } diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml index a31f84efac8d..58c8a261489b 100644 --- a/statement-table/Cargo.toml +++ b/statement-table/Cargo.toml @@ -5,6 +5,6 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-scale-codec = { version = "2.3.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/xcm/Cargo.toml b/xcm/Cargo.toml index 972d28bd1863..e70607f4dc49 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.3.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 } diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index fea1c7cbf71e..8e3d713f4386 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -6,7 +6,7 @@ description = "Tools & types for building with XCM and its executor." version = "0.9.9" [dependencies] -parity-scale-codec = { version = "2.3.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-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml index d4668d0165d6..08aaddbeaab3 100644 --- a/xcm/xcm-executor/Cargo.toml +++ b/xcm/xcm-executor/Cargo.toml @@ -7,7 +7,7 @@ version = "0.9.9" [dependencies] impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.3.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 } From dcaa880cd0bbe50c2c2d58c6fc363db0a19acbb9 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Wed, 29 Sep 2021 13:19:00 +0200 Subject: [PATCH 095/138] CI: run disputes tests (#3962) * CI: run disputes tests * Revert "minor chore changes (#3944)" This reverts commit 1d05f779b25e01a1d54dbf98a82662d12a8320f9. * fix em * Revert "Revert "minor chore changes (#3944)"" This reverts commit 02a1ecf3cacb52d6dd467e8f226a69bae651d319. * Update handle_import_statement function * fmt Co-authored-by: Lldenaurois --- node/core/dispute-coordinator/src/real/mod.rs | 5 ++--- .../dispute-coordinator/src/real/tests.rs | 22 ++++--------------- scripts/gitlab/test_linux_stable.sh | 1 + 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index f0d0f5b8597a..b4a1437d7d55 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, @@ -631,7 +631,6 @@ async fn handle_import_statements( session: SessionIndex, statements: Vec<(SignedDisputeStatement, ValidatorIndex)>, now: Timestamp, - pending_confirmation: oneshot::Sender, metrics: &Metrics, ) -> Result { if state.highest_session.map_or(true, |h| session + DISPUTE_WINDOW < h) { @@ -913,7 +912,7 @@ async fn issue_local_statement( now, metrics, ) - .await? + .await { Err(_) => { tracing::error!( 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/scripts/gitlab/test_linux_stable.sh b/scripts/gitlab/test_linux_stable.sh index 8ba62ecbbb80..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 --release --locked -p polkadot-node-core-dispute-coordinator --features disputes time cargo test --workspace --release --verbose --locked --features=runtime-benchmarks From a7e4e7adc51833f5e5acbe3f7ef5fdb75613fe21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Wed, 29 Sep 2021 15:29:33 +0200 Subject: [PATCH 096/138] Substrate Companion for #9552 (#3834) * Prepare for wasmtime 0.29 * update Substrate * Use Pallet Co-authored-by: parity-processbot <> --- Cargo.lock | 486 ++++++++++++------------ node/primitives/Cargo.toml | 2 +- runtime/rococo/src/validator_manager.rs | 2 +- 3 files changed, 235 insertions(+), 255 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 84c09a1068f1..d27ae76b6abb 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", ] @@ -469,7 +461,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "beefy-primitives", "fnv", @@ -497,7 +489,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -517,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2070,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" 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#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "chrono", "frame-election-provider-support", @@ -2459,15 +2452,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" - -[[package]] -name = "gimli" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", @@ -4060,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" @@ -4427,9 +4414,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", @@ -4531,18 +4518,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]] @@ -4608,7 +4590,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#c000780dba99a611fadbf83873073e024be1be0b" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4622,7 +4604,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -4638,7 +4620,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -4653,7 +4635,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4677,7 +4659,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4697,7 +4679,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4712,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "beefy-primitives", "frame-support", @@ -4728,7 +4710,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4753,7 +4735,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4838,7 +4820,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4855,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4871,7 +4853,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4895,7 +4877,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4913,7 +4895,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4928,7 +4910,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4951,7 +4933,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4967,7 +4949,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -4987,7 +4969,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5004,7 +4986,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5021,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5039,7 +5021,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5055,7 +5037,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5072,7 +5054,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5087,7 +5069,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5101,7 +5083,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5118,7 +5100,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5141,7 +5123,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5156,7 +5138,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5170,7 +5152,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5186,7 +5168,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5207,7 +5189,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5223,7 +5205,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5237,7 +5219,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5260,7 +5242,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5271,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "log", "sp-arithmetic", @@ -5280,7 +5262,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5294,7 +5276,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5312,7 +5294,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5331,7 +5313,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-support", "frame-system", @@ -5348,7 +5330,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5365,7 +5347,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5376,7 +5358,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5393,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -5409,7 +5391,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-benchmarking", "frame-support", @@ -7817,7 +7799,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8080,7 +8062,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "log", "sp-core", @@ -8091,7 +8073,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "derive_more", @@ -8118,7 +8100,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8141,7 +8123,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8157,7 +8139,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8173,7 +8155,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8184,7 +8166,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "chrono", "fdlimit", @@ -8222,7 +8204,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "fnv", "futures 0.3.17", @@ -8250,7 +8232,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "hash-db", "kvdb", @@ -8275,7 +8257,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "futures 0.3.17", @@ -8299,7 +8281,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "derive_more", @@ -8342,7 +8324,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "derive_more", "futures 0.3.17", @@ -8366,7 +8348,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8379,7 +8361,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "assert_matches", "async-trait", @@ -8413,7 +8395,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "futures 0.3.17", @@ -8439,7 +8421,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "sc-client-api", "sp-authorship", @@ -8450,7 +8432,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8476,7 +8458,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "derive_more", "environmental", @@ -8494,7 +8476,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "log", "parity-scale-codec", @@ -8510,7 +8492,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8519,7 +8501,6 @@ dependencies = [ "parity-wasm 0.42.2", "sc-allocator", "sc-executor-common", - "scoped-tls", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -8529,7 +8510,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "derive_more", @@ -8566,7 +8547,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "derive_more", "finality-grandpa", @@ -8590,7 +8571,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8607,7 +8588,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "derive_more", @@ -8622,7 +8603,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "hash-db", "parity-scale-codec", @@ -8640,7 +8621,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-std", "async-trait", @@ -8691,7 +8672,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8707,7 +8688,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "bytes 1.0.1", "fnv", @@ -8734,7 +8715,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "libp2p", @@ -8747,7 +8728,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8756,7 +8737,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "hash-db", @@ -8787,7 +8768,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8812,7 +8793,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8829,7 +8810,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "directories", @@ -8894,7 +8875,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "log", "parity-scale-codec", @@ -8908,7 +8889,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8930,7 +8911,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "chrono", "futures 0.3.17", @@ -8948,7 +8929,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8977,7 +8958,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8988,7 +8969,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "intervalier", @@ -9015,7 +8996,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "derive_more", "futures 0.3.17", @@ -9029,7 +9010,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9377,9 +9358,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" @@ -9461,7 +9442,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "hash-db", "log", @@ -9478,7 +9459,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9490,7 +9471,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "scale-info", @@ -9503,7 +9484,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "integer-sqrt", "num-traits", @@ -9518,7 +9499,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "scale-info", @@ -9531,7 +9512,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "parity-scale-codec", @@ -9543,7 +9524,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "sp-api", @@ -9555,7 +9536,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "log", @@ -9573,7 +9554,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "futures 0.3.17", @@ -9592,7 +9573,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "merlin", @@ -9615,7 +9596,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "scale-info", @@ -9626,7 +9607,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9638,7 +9619,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "base58", "blake2-rfc", @@ -9683,7 +9664,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9692,7 +9673,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "proc-macro2", "quote", @@ -9702,7 +9683,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "environmental", "parity-scale-codec", @@ -9713,7 +9694,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "finality-grandpa", "log", @@ -9731,7 +9712,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9745,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "hash-db", @@ -9756,7 +9737,6 @@ dependencies = [ "sp-core", "sp-externalities", "sp-keystore", - "sp-maybe-compressed-blob", "sp-runtime-interface", "sp-state-machine", "sp-std", @@ -9770,7 +9750,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "lazy_static", "sp-core", @@ -9781,7 +9761,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "derive_more", @@ -9798,7 +9778,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "zstd", ] @@ -9806,7 +9786,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "scale-info", @@ -9821,7 +9801,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9832,7 +9812,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "sp-api", "sp-core", @@ -9842,7 +9822,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "backtrace", ] @@ -9850,7 +9830,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "rustc-hash", "serde", @@ -9860,7 +9840,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "either", "hash256-std-hasher", @@ -9882,7 +9862,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9899,7 +9879,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9911,7 +9891,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "serde", "serde_json", @@ -9920,7 +9900,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "scale-info", @@ -9934,7 +9914,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "scale-info", @@ -9945,7 +9925,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "hash-db", "log", @@ -9968,12 +9948,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9986,7 +9966,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "log", "sp-core", @@ -9999,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10015,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "erased-serde", "log", @@ -10033,7 +10013,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "sp-api", "sp-runtime", @@ -10042,7 +10022,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "log", @@ -10058,7 +10038,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "hash-db", "memory-db", @@ -10073,7 +10053,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10089,7 +10069,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10100,7 +10080,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10296,7 +10276,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "platforms", ] @@ -10304,7 +10284,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10326,7 +10306,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-std", "derive_more", @@ -10340,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "async-trait", "futures 0.3.17", @@ -10367,7 +10347,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10377,7 +10357,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10388,7 +10368,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10541,7 +10521,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "frame-system", "futures 0.3.17", @@ -10980,7 +10960,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#2ab5cd2880b1ec798a7c2a72c29f995f54b45f13" +source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" dependencies = [ "jsonrpsee-ws-client", "log", @@ -11371,15 +11351,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", @@ -11408,9 +11388,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", @@ -11429,9 +11409,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", @@ -11444,14 +11424,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", @@ -11460,15 +11440,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", @@ -11479,11 +11459,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", @@ -11491,10 +11471,10 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli 0.24.0", + "gimli", "log", "more-asserts", - "object 0.24.0", + "object", "rayon", "region", "serde", @@ -11512,13 +11492,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", @@ -11526,9 +11506,9 @@ 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", @@ -11542,9 +11522,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", @@ -11941,18 +11921,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", @@ -11960,9 +11940,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/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index 8ae025ccaccd..3dc1b13da68f 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -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/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 { From 3338f9c7212ad872db0f0179070f1313c0de3f3a Mon Sep 17 00:00:00 2001 From: Liu-Cheng Xu Date: Wed, 29 Sep 2021 22:16:50 +0800 Subject: [PATCH 097/138] Companion for Substrate#9867 (#3938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Companion for Substrate#9867 * Fix finality_target_with_fallback() * update substrate Co-authored-by: André Silva --- Cargo.lock | 322 +++++++++++----------- node/service/src/relay_chain_selection.rs | 25 +- 2 files changed, 174 insertions(+), 173 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d27ae76b6abb..604d32212558 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -461,7 +461,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "beefy-primitives", "fnv", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -1918,7 +1918,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", ] @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -1956,7 +1956,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "Inflector", "chrono", @@ -1982,7 +1982,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -2024,7 +2024,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,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#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "chrono", "frame-election-provider-support", @@ -4590,7 +4590,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4604,7 +4604,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -4620,7 +4620,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -4635,7 +4635,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4659,7 +4659,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4679,7 +4679,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4694,7 +4694,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "beefy-primitives", "frame-support", @@ -4710,7 +4710,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4735,7 +4735,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4820,7 +4820,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4837,7 +4837,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4853,7 +4853,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4877,7 +4877,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4895,7 +4895,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4910,7 +4910,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4933,7 +4933,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4949,7 +4949,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4969,7 +4969,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -4986,7 +4986,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5021,7 +5021,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5037,7 +5037,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5054,7 +5054,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5069,7 +5069,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5083,7 +5083,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5100,7 +5100,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5123,7 +5123,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5138,7 +5138,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5152,7 +5152,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5168,7 +5168,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5189,7 +5189,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5205,7 +5205,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5219,7 +5219,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5242,7 +5242,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "log", "sp-arithmetic", @@ -5262,7 +5262,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5276,7 +5276,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5294,7 +5294,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5313,7 +5313,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-support", "frame-system", @@ -5330,7 +5330,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5347,7 +5347,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5358,7 +5358,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5375,7 +5375,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -5391,7 +5391,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-benchmarking", "frame-support", @@ -7799,7 +7799,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8062,7 +8062,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "log", "sp-core", @@ -8073,7 +8073,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "derive_more", @@ -8100,7 +8100,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8123,7 +8123,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8139,7 +8139,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8155,7 +8155,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8166,7 +8166,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "chrono", "fdlimit", @@ -8204,7 +8204,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "fnv", "futures 0.3.17", @@ -8232,7 +8232,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "hash-db", "kvdb", @@ -8257,7 +8257,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "futures 0.3.17", @@ -8281,7 +8281,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "derive_more", @@ -8324,7 +8324,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "derive_more", "futures 0.3.17", @@ -8348,7 +8348,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "assert_matches", "async-trait", @@ -8395,7 +8395,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "futures 0.3.17", @@ -8421,7 +8421,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "sc-client-api", "sp-authorship", @@ -8432,7 +8432,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8458,7 +8458,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "derive_more", "environmental", @@ -8476,7 +8476,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "log", "parity-scale-codec", @@ -8492,7 +8492,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8510,7 +8510,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "derive_more", @@ -8547,7 +8547,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "derive_more", "finality-grandpa", @@ -8571,7 +8571,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8588,7 +8588,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "derive_more", @@ -8603,7 +8603,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "hash-db", "parity-scale-codec", @@ -8621,7 +8621,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-std", "async-trait", @@ -8672,7 +8672,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8688,7 +8688,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "bytes 1.0.1", "fnv", @@ -8715,7 +8715,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "libp2p", @@ -8728,7 +8728,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8737,7 +8737,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "hash-db", @@ -8768,7 +8768,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8793,7 +8793,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8810,7 +8810,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "directories", @@ -8875,7 +8875,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "log", "parity-scale-codec", @@ -8889,7 +8889,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8911,7 +8911,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "chrono", "futures 0.3.17", @@ -8929,7 +8929,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8958,7 +8958,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8969,7 +8969,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "intervalier", @@ -8996,7 +8996,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "derive_more", "futures 0.3.17", @@ -9010,7 +9010,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9442,7 +9442,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "hash-db", "log", @@ -9459,7 +9459,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9471,7 +9471,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -9484,7 +9484,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "integer-sqrt", "num-traits", @@ -9499,7 +9499,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -9512,7 +9512,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "parity-scale-codec", @@ -9524,7 +9524,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "sp-api", @@ -9536,7 +9536,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "log", @@ -9554,7 +9554,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "futures 0.3.17", @@ -9573,7 +9573,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "merlin", @@ -9596,7 +9596,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -9607,7 +9607,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9619,7 +9619,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "base58", "blake2-rfc", @@ -9664,7 +9664,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9673,7 +9673,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro2", "quote", @@ -9683,7 +9683,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "environmental", "parity-scale-codec", @@ -9694,7 +9694,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "finality-grandpa", "log", @@ -9712,7 +9712,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9726,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "hash-db", @@ -9750,7 +9750,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "lazy_static", "sp-core", @@ -9761,7 +9761,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "derive_more", @@ -9778,7 +9778,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "zstd", ] @@ -9786,7 +9786,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -9801,7 +9801,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9812,7 +9812,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "sp-api", "sp-core", @@ -9822,7 +9822,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "backtrace", ] @@ -9830,7 +9830,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "rustc-hash", "serde", @@ -9840,7 +9840,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "either", "hash256-std-hasher", @@ -9862,7 +9862,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9879,7 +9879,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9891,7 +9891,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "serde", "serde_json", @@ -9900,7 +9900,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -9914,7 +9914,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "scale-info", @@ -9925,7 +9925,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "hash-db", "log", @@ -9948,12 +9948,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9966,7 +9966,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "log", "sp-core", @@ -9979,7 +9979,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9995,7 +9995,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "erased-serde", "log", @@ -10013,7 +10013,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "sp-api", "sp-runtime", @@ -10022,7 +10022,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "log", @@ -10038,7 +10038,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "hash-db", "memory-db", @@ -10053,7 +10053,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10069,7 +10069,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10080,7 +10080,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10276,7 +10276,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "platforms", ] @@ -10284,7 +10284,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10306,7 +10306,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-std", "derive_more", @@ -10320,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "async-trait", "futures 0.3.17", @@ -10347,7 +10347,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10357,7 +10357,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10368,7 +10368,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10521,7 +10521,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "frame-system", "futures 0.3.17", @@ -10960,7 +10960,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#83ced6b2acb82cddf8ae7cef5bad90482712651f" +source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/node/service/src/relay_chain_selection.rs b/node/service/src/relay_chain_selection.rs index 2033a06a5f22..9635878182fd 100644 --- a/node/service/src/relay_chain_selection.rs +++ b/node/service/src/relay_chain_selection.rs @@ -173,7 +173,7 @@ where &self, target_hash: Hash, maybe_max_number: Option, - ) -> Result, ConsensusError> { + ) -> Result { let longest_chain_best = self.longest_chain.finality_target(target_hash, maybe_max_number).await?; @@ -316,9 +316,9 @@ where 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(); let subchain_head = if cfg!(feature = "disputes") { @@ -337,13 +337,14 @@ where 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, + if best_leaf == target_hash { + return Ok(target_hash) + } else { + best_leaf } }; @@ -362,7 +363,7 @@ 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)?; @@ -423,7 +424,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(); @@ -458,7 +459,7 @@ where if safe_target <= target_number { // 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)?; @@ -469,10 +470,10 @@ where ) .map_err(|e| ConsensusError::ChainLookup(format!("{:?}", e)))?; - Ok(Some(forced_target)) + Ok(forced_target) } } else { - Ok(Some(subchain_head)) + Ok(subchain_head) } } } From e721a5aaafb4c3bba11a51b28d16ed8a67f19504 Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Wed, 29 Sep 2021 16:24:56 +0200 Subject: [PATCH 098/138] remove `AllSubsystems` and `AllSubsystemsGen` types (#3874) * introduce the OverseerConnector, use it * introduce is_relay_chain to RelayChainSelection * Update node/service/src/lib.rs Co-authored-by: Andronik Ordian * avoid the deferred setting of `is_relay_chain` in `RelayChainSelection` * positive assertion is not mandated, only the negative one, to avoid a stall * cleanup: overseer residue * spellcheck * fixin * groundwork to obsolete Overseer::new and AllSubsystemsGen proc-macro * Now all malus & tests can be ported to the builder pattern. Obsoletes `Overseer::new`, `AllSubsystemsGen` derive macro, `AllSubsystems`. * spellcheck * adjust tests, minor fixes * remove derive macro AllSubsystemsGen * add forgotten file dummy.rs * remove residue * good news everyone! * spellcheck * address review comments * fixup imports * make it conditional * fixup docs * reduce import * chore: fmt * chore: fmt * chore: spellcheck / nlprules * fixup malus variant-a * fmt * fix * fixins * pfmt * fixins * chore: fmt * remove expanded overseer generation * tracing version * Update node/network/statement-distribution/src/lib.rs Co-authored-by: Robert Habermeier * use future::ready instead * silence warning * chore: fmt Co-authored-by: Andronik Ordian Co-authored-by: Robert Habermeier --- Cargo.lock | 11 - Cargo.toml | 1 - cli/src/lib.rs | 2 +- node/core/pvf/src/artifacts.rs | 4 +- node/malus/src/variant-a.rs | 25 +- .../src/requester/session_cache.rs | 2 +- .../src/futures_undead.rs | 2 +- .../network/dispute-distribution/src/error.rs | 2 +- .../statement-distribution/src/error.rs | 2 +- .../network/statement-distribution/src/lib.rs | 2 +- node/overseer/Cargo.toml | 1 - node/overseer/all-subsystems-gen/Cargo.toml | 17 - node/overseer/all-subsystems-gen/src/lib.rs | 222 -------- .../tests/ui/err-01-enum.rs | 13 - .../tests/ui/err-01-enum.stderr | 5 - .../tests/ui/err-01-generic-used-twice.rs | 16 - .../tests/ui/err-01-generic-used-twice.stderr | 14 - .../tests/ui/err-01-no-generic.rs | 17 - .../tests/ui/err-01-no-generic.stderr | 14 - .../tests/ui/err-01-no-generics.stderr | 14 - .../tests/ui/ok-01-w-generics.rs | 17 - node/overseer/examples/minimal-example.rs | 22 +- .../overseer-gen/proc-macro/Cargo.toml | 6 + .../proc-macro/src/impl_builder.rs | 136 ++++- .../proc-macro/src/impl_channels_out.rs | 2 - .../proc-macro/src/impl_overseer.rs | 12 +- .../overseer-gen/proc-macro/src/lib.rs | 23 + node/overseer/src/dummy.rs | 146 +++++- node/overseer/src/lib.rs | 482 ++++++------------ node/overseer/src/subsystems.rs | 344 ------------- node/overseer/src/tests.rs | 182 +++---- node/primitives/src/lib.rs | 2 +- node/service/src/lib.rs | 12 +- node/service/src/overseer.rs | 170 +----- node/subsystem-test-helpers/src/lib.rs | 23 +- node/subsystem-types/src/messages.rs | 2 +- runtime/common/src/crowdloan.rs | 2 +- runtime/common/src/purchase.rs | 2 +- runtime/common/src/traits.rs | 2 +- runtime/parachains/src/hrmp.rs | 2 +- xcm/pallet-xcm/src/lib.rs | 4 +- xcm/src/v1/multilocation.rs | 4 +- 42 files changed, 597 insertions(+), 1386 deletions(-) delete mode 100644 node/overseer/all-subsystems-gen/Cargo.toml delete mode 100644 node/overseer/all-subsystems-gen/src/lib.rs delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-enum.rs delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-enum.stderr delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.rs delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.stderr delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.rs delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.stderr delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/err-01-no-generics.stderr delete mode 100644 node/overseer/all-subsystems-gen/tests/ui/ok-01-w-generics.rs delete mode 100644 node/overseer/src/subsystems.rs diff --git a/Cargo.lock b/Cargo.lock index 604d32212558..1ab8bf51797e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6553,7 +6553,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", @@ -6562,16 +6561,6 @@ 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" diff --git a/Cargo.toml b/Cargo.toml index df4c213640a2..bfee75c8b5eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,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/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/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/malus/src/variant-a.rs b/node/malus/src/variant-a.rs index 8abdf75198b3..ed395a9d884e 100644 --- a/node/malus/src/variant-a.rs +++ b/node/malus/src/variant-a.rs @@ -24,10 +24,10 @@ use color_eyre::eyre; use polkadot_cli::{ - create_default_subsystems, + prepared_overseer_builder, service::{ - AuthorityDiscoveryApi, AuxStore, BabeApi, Block, Error, HeaderBackend, Overseer, - OverseerGen, OverseerGenArgs, ParachainHost, ProvideRuntimeApi, SpawnNamed, + AuthorityDiscoveryApi, AuxStore, BabeApi, Block, Error, HeaderBackend, OverseerGen, + OverseerGenArgs, ParachainHost, ProvideRuntimeApi, SpawnNamed, }, Cli, }; @@ -37,7 +37,7 @@ use polkadot_cli::{ use polkadot_node_core_candidate_validation::CandidateValidationSubsystem; use polkadot_node_subsystem::{ messages::{AllMessages, CandidateValidationMessage}, - overseer::{self, OverseerConnector, OverseerHandle}, + overseer::{self, Overseer, OverseerConnector, OverseerHandle}, FromOverseer, }; @@ -94,15 +94,10 @@ impl OverseerGen for BehaveMaleficient { 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 candidate_validation_config = args.candidate_validation_config.clone(); - // modify the subsystem(s) as needed: - let all_subsystems = create_default_subsystems(args)?.replace_candidate_validation( - // create the filtered subsystem - |orig: CandidateValidationSubsystem| { + + prepared_overseer_builder(args)? + .replace_candidate_validation(|orig: CandidateValidationSubsystem| { InterceptedSubsystem::new( CandidateValidationSubsystem::with_config( candidate_validation_config, @@ -111,10 +106,8 @@ impl OverseerGen for BehaveMaleficient { ), Skippy::default(), ) - }, - ); - - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner, connector) + }) + .build_with_connector(connector) .map_err(|e| e.into()) } } 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/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/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/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 cb80ed35d0d0..5c5906ff1160 100644 --- a/node/overseer/Cargo.toml +++ b/node/overseer/Cargo.toml @@ -16,7 +16,6 @@ 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.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 6c4e7f00eebe..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.77", 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 d92ef3ebcb61..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 0c4a3bdc6ae6..0ff8201594fb 100644 --- a/node/overseer/examples/minimal-example.rs +++ b/node/overseer/examples/minimal-example.rs @@ -28,9 +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, OverseerConnector, - OverseerSignal, SubsystemError, + AllMessages, HeadSupportsParachains, OverseerSignal, SubsystemError, }; use polkadot_primitives::v1::Hash; @@ -170,19 +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); - - let (overseer, _handle) = Overseer::new( - vec![], - all_subsystems, - None, - AlwaysSupportsParachains, - spawner, - OverseerConnector::default(), - ) - .unwrap(); + .replace_candidate_backing(|orig| orig) + .build() + .unwrap(); + let overseer_fut = overseer.run().fuse(); let timer_stream = timer_stream; diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 47af610cd0ca..9600fbb39149 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -19,3 +19,9 @@ 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 4714a1f3d495..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(); @@ -155,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), @@ -242,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, @@ -321,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, @@ -330,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) ) ); )* @@ -359,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 } @@ -369,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. @@ -401,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/src/dummy.rs b/node/overseer/src/dummy.rs index c3d3d4fcf3c8..09b594867fc0 100644 --- a/node/overseer/src/dummy.rs +++ b/node/overseer/src/dummy.rs @@ -14,8 +14,13 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . -use crate::{AllMessages, OverseerSignal}; -use polkadot_node_subsystem_types::errors::SubsystemError; +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 @@ -52,3 +57,140 @@ where 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 90c958c7a5e0..331bf6378dda 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, @@ -90,17 +89,13 @@ pub use polkadot_node_subsystem_types::{ jaeger, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, OverseerSignal, }; -/// Test helper supplements. +pub mod metrics; +pub use self::metrics::Metrics as OverseerMetrics; + +/// A dummy subsystem, mostly useful for placeholders and tests. pub mod dummy; pub use self::dummy::DummySubsystem; -// TODO legacy, to be deleted, left for easier integration -// TODO https://github.com/paritytech/polkadot/issues/3427 -mod subsystems; -pub use self::subsystems::AllSubsystems; - -pub mod metrics; - pub use polkadot_node_metrics::{ metrics::{prometheus, Metrics as MetricsTrait}, Metronome, @@ -292,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, @@ -385,321 +492,67 @@ pub struct Overseer { pub known_leaves: LruCache, /// Various Prometheus metrics. - pub metrics: crate::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, - /// # Overseer, - /// # OverseerSignal, - /// # OverseerConnector, - /// # SubsystemSender as _, - /// # AllMessages, - /// # AllSubsystems, - /// # HeadSupportsParachains, - /// # 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, - /// OverseerConnector::default(), - /// ).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, - connector: OverseerConnector, - ) -> 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 = ::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_with_connector(connector)?; - - // 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); + struct 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 - ); + impl<'a, T: 'a> MapSubsystem<&'a OverseenSubsystem> for ExtractNameAndMeters { + type Output = Option<(&'static str, SubsystemMeters)>; - 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 - ), - } - } + 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); - // 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())), - ); + let memory_stats = + MemoryAllocationTracker::new().expect("Jemalloc is the default allocator. qed"); - async move { () } - }); - overseer.spawner().spawn("metrics_metronome", Box::pin(metronome)); + let metronome = Metronome::new(std::time::Duration::from_millis(950)).for_each(move |_| { + 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), } - Ok((overseer, handle)) - } + // 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; @@ -707,6 +560,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); diff --git a/node/overseer/src/subsystems.rs b/node/overseer/src/subsystems.rs deleted file mode 100644 index 695d368dc16c..000000000000 --- a/node/overseer/src/subsystems.rs +++ /dev/null @@ -1,344 +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::dummy::DummySubsystem; -use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; -use polkadot_overseer_gen::MapSubsystem; - -/// 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 e8edab17679e..2ab2e01afe96 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, OverseerConnector}; +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,20 +173,12 @@ 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, - OverseerConnector::default(), - ) - .unwrap(); + .replace_candidate_backing(move |_| TestSubsystem2(s2_tx)) + .build() + .unwrap(); let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); @@ -226,17 +232,14 @@ 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, - OverseerConnector::default(), - ) - .unwrap(); + 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(); @@ -264,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); @@ -286,17 +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, - OverseerConnector::default(), - ) - .unwrap(); + let (overseer, _handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() + .replace_candidate_backing(|_| ReturnOnStart) + .build() + .unwrap(); overseer.run().await.unwrap(); }) @@ -394,18 +398,14 @@ 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, - OverseerConnector::default(), - ) - .unwrap(); + .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(); @@ -496,20 +496,15 @@ 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, - OverseerConnector::default(), - ) - .unwrap(); + + 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(); @@ -592,18 +587,12 @@ 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) = Overseer::new( - Vec::new(), - all_subsystems, - None, - MockSupportsParachains, - spawner, - OverseerConnector::default(), - ) - .unwrap(); + let (overseer, handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() + .replace_candidate_backing(move |_| TestSubsystem6(tx_5)) + .build() + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); @@ -854,39 +843,12 @@ 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) = + one_for_all_overseer_builder(spawner, MockSupportsParachains, subsystem, None) + .unwrap() + .build() + .unwrap(); - let (overseer, handle) = Overseer::new( - vec![], - all_subsystems, - None, - MockSupportsParachains, - spawner, - OverseerConnector::default(), - ) - .unwrap(); let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index 8d00e8b0cb39..7544dd8d7214 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -224,7 +224,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/src/lib.rs b/node/service/src/lib.rs index d4c8cdc16a7c..a1005f284686 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; @@ -56,6 +54,7 @@ pub use sp_core::traits::SpawnNamed; pub use { 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, @@ -736,14 +735,13 @@ where is_relay_chain && (role.is_authority() || is_collator.is_collator()); - use relay_chain_selection::SelectRelayChain; - 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, @@ -1292,6 +1290,7 @@ 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; @@ -1354,7 +1353,6 @@ pub fn new_chain_ops( { 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 6cdc8eaf242e..4651626d46b5 100644 --- a/node/service/src/overseer.rs +++ b/node/service/src/overseer.rs @@ -24,10 +24,13 @@ 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}; #[cfg(any(feature = "malus", test))] -pub use polkadot_overseer::dummy::DummySubsystem; pub use polkadot_overseer::{ - metrics::Metrics, AllSubsystems, BlockInfo, HeadSupportsParachains, MetricsTrait, Overseer, - OverseerBuilder, OverseerConnector, OverseerHandle, + dummy::{dummy_overseer_builder, DummySubsystem}, + HeadSupportsParachains, +}; +use polkadot_overseer::{ + metrics::Metrics as OverseerMetrics, BlockInfo, MetricsTrait, Overseer, OverseerBuilder, + OverseerConnector, OverseerHandle, }; use polkadot_primitives::v1::ParachainHost; @@ -106,165 +109,6 @@ 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>( - OverseerGenArgs { - keystore, - runtime_client, - parachains_db, - network_service, - authority_discovery_service, - pov_req_receiver, - chunk_req_receiver, - collation_req_receiver, - available_data_req_receiver, - statement_req_receiver, - dispute_req_receiver, - registry, - spawner, - is_collator, - approval_voting_config, - availability_config, - candidate_validation_config, - chain_selection_config, - dispute_coordinator_config, - .. - }: OverseerGenArgs<'a, Spawner, RuntimeClient>, -) -> Result< - AllSubsystems< - CandidateValidationSubsystem, - CandidateBackingSubsystem, - StatementDistributionSubsystem, - AvailabilityDistributionSubsystem, - AvailabilityRecoverySubsystem, - BitfieldSigningSubsystem, - BitfieldDistributionSubsystem, - ProvisionerSubsystem, - RuntimeApiSubsystem, - AvailabilityStoreSubsystem, - NetworkBridgeSubsystem< - Arc>, - AuthorityDiscoveryService, - >, - ChainApiSubsystem, - CollationGenerationSubsystem, - CollatorProtocolSubsystem, - ApprovalDistributionSubsystem, - ApprovalVotingSubsystem, - GossipSupportSubsystem, - DisputeCoordinatorSubsystem, - DisputeParticipationSubsystem, - DisputeDistributionSubsystem, - ChainSelectionSubsystem, - >, - Error, -> -where - RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend + AuxStore, - RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, - Spawner: 'static + SpawnNamed + Clone + Unpin, -{ - use polkadot_node_subsystem_util::metrics::Metrics; - - let all_subsystems = AllSubsystems { - availability_distribution: AvailabilityDistributionSubsystem::new( - keystore.clone(), - IncomingRequestReceivers { pov_req_receiver, chunk_req_receiver }, - Metrics::register(registry)?, - ), - availability_recovery: AvailabilityRecoverySubsystem::with_chunks_only( - available_data_req_receiver, - Metrics::register(registry)?, - ), - availability_store: AvailabilityStoreSubsystem::new( - parachains_db.clone(), - availability_config, - Metrics::register(registry)?, - ), - bitfield_distribution: BitfieldDistributionSubsystem::new(Metrics::register(registry)?), - bitfield_signing: BitfieldSigningSubsystem::new( - spawner.clone(), - keystore.clone(), - Metrics::register(registry)?, - ), - candidate_backing: CandidateBackingSubsystem::new( - spawner.clone(), - keystore.clone(), - Metrics::register(registry)?, - ), - 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: { - let side = match is_collator { - IsCollator::Yes(collator_pair) => ProtocolSide::Collator( - network_service.local_peer_id().clone(), - collator_pair, - collation_req_receiver, - Metrics::register(registry)?, - ), - IsCollator::No => ProtocolSide::Validator { - keystore: keystore.clone(), - eviction_policy: Default::default(), - metrics: Metrics::register(registry)?, - }, - }; - CollatorProtocolSubsystem::new(side) - }, - 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( - runtime_client.clone(), - Metrics::register(registry)?, - spawner.clone(), - ), - 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_voting_config, - parachains_db.clone(), - keystore.clone(), - Box::new(network_service.clone()), - Metrics::register(registry)?, - ), - 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( - keystore.clone(), - dispute_req_receiver, - authority_discovery_service.clone(), - Metrics::register(registry)?, - ), - chain_selection: ChainSelectionSubsystem::new(chain_selection_config, parachains_db), - }; - Ok(all_subsystems) -} - /// Obtain a prepared `OverseerBuilder`, that is initialized /// with all default values. pub fn prepared_overseer_builder<'a, Spawner, RuntimeClient>( @@ -329,7 +173,7 @@ where use polkadot_node_subsystem_util::metrics::Metrics; use std::iter::FromIterator; - let metrics = ::register(registry)?; + let metrics = ::register(registry)?; let builder = Overseer::builder() .availability_distribution(AvailabilityDistributionSubsystem::new( diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index 0ac52ee82346..0d155dc1384e 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -372,9 +372,7 @@ mod tests { use super::*; use futures::executor::block_on; use polkadot_node_subsystem::messages::CollatorProtocolMessage; - use polkadot_overseer::{ - AllSubsystems, Handle, HeadSupportsParachains, Overseer, OverseerConnector, - }; + use polkadot_overseer::{dummy::dummy_overseer_builder, Handle, HeadSupportsParachains}; use polkadot_primitives::v1::Hash; struct AlwaysSupportsParachains; @@ -388,17 +386,14 @@ 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(), - OverseerConnector::default(), - ) - .unwrap(); + 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/src/messages.rs b/node/subsystem-types/src/messages.rs index 3822591c0fa9..9afdbc0fcad3 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -523,7 +523,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. diff --git a/runtime/common/src/crowdloan.rs b/runtime/common/src/crowdloan.rs index e6a9a2f1e4b4..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, 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/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index 373bb3d662dc..7e489ba73cf0 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -387,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/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 972e3f926829..b222c73a9c69 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< _, diff --git a/xcm/src/v1/multilocation.rs b/xcm/src/v1/multilocation.rs index 9c472553a37c..a8f1872bf042 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 From 71a721eb9e634d2706cc4671c4fbd028c31814ea Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Wed, 29 Sep 2021 18:06:20 +0200 Subject: [PATCH 099/138] feat: measured oneshots (#3902) * overseer: remove mut in connector * monitored oneshots * fmt * remove debug log * Update node/metered-channel/src/oneshot.rs Co-authored-by: Andronik Ordian * Update node/metered-channel/src/oneshot.rs Co-authored-by: Andronik Ordian * avoid two Arcs * add expects * alt impl * rework the measured oneshots * address review comments, use `Measurable` where possible * chore/tracing: move `PrettyAuthorities` construction out of tracing macros Co-authored-by: Andronik Ordian --- Cargo.lock | 14 +- node/metered-channel/Cargo.toml | 6 + node/metered-channel/src/lib.rs | 1 + node/metered-channel/src/oneshot.rs | 418 +++++++++++++++++++++++ node/network/gossip-support/src/lib.rs | 3 +- node/network/gossip-support/src/tests.rs | 3 +- 6 files changed, 439 insertions(+), 6 deletions(-) create mode 100644 node/metered-channel/src/oneshot.rs diff --git a/Cargo.lock b/Cargo.lock index 1ab8bf51797e..538a9e3f9cef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4120,9 +4120,14 @@ dependencies = [ name = "metered-channel" version = "0.9.9" dependencies = [ + "assert_matches", "derive_more", + "env_logger 0.9.0", "futures 0.3.17", "futures-timer 3.0.2", + "log", + "thiserror", + "tracing", ] [[package]] @@ -10563,18 +10568,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", @@ -10791,6 +10796,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" dependencies = [ "cfg-if 1.0.0", + "log", "pin-project-lite 0.2.4", "tracing-attributes", "tracing-core", diff --git a/node/metered-channel/Cargo.toml b/node/metered-channel/Cargo.toml index 2741d95b9a68..53695c30923c 100644 --- a/node/metered-channel/Cargo.toml +++ b/node/metered-channel/Cargo.toml @@ -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/network/gossip-support/src/lib.rs b/node/network/gossip-support/src/lib.rs index 65af6cb12756..97be38933802 100644 --- a/node/network/gossip-support/src/lib.rs +++ b/node/network/gossip-support/src/lib.rs @@ -340,12 +340,13 @@ where "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 = %PrettyAuthorities(unconnected_authorities), + unconnected_authorities = %pretty, "Connectivity Report" ); } diff --git a/node/network/gossip-support/src/tests.rs b/node/network/gossip-support/src/tests.rs index fc25b137d3c7..1220f1a5461f 100644 --- a/node/network/gossip-support/src/tests.rs +++ b/node/network/gossip-support/src/tests.rs @@ -340,9 +340,10 @@ fn test_log_output() { m.insert(bob, addrs); m }; + let pretty = PrettyAuthorities(unconnected_authorities.iter()); tracing::debug!( target: LOG_TARGET, - unconnected_authorities = %PrettyAuthorities(unconnected_authorities.iter()), + unconnected_authorities = %pretty, "Connectivity Report" ); } From d33794f1e3a55de301a662323c6626bb1e3446b9 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Wed, 29 Sep 2021 20:58:04 +0200 Subject: [PATCH 100/138] paras_inherent: reject only candidates with concluded disputes (#3969) * paras_inherent: reject only candidates with concluded disputes * remove unused Error variant --- runtime/parachains/src/disputes.rs | 23 +++++++++++------------ runtime/parachains/src/paras_inherent.rs | 10 +++++----- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index aa7acee6d27d..b63305efb27a 100644 --- a/runtime/parachains/src/disputes.rs +++ b/runtime/parachains/src/disputes.rs @@ -129,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; @@ -165,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 } @@ -201,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 { @@ -1114,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) }) } @@ -2207,9 +2206,9 @@ mod tests { ] ); - assert_eq!(Pallet::::could_be_invalid(3, candidate_hash.clone()), false); // It has 5 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, 1, 1, 0, 0, 0])); diff --git a/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs index a972dbfaa3d8..9ac8e0141542 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. @@ -238,14 +238,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, ); } From 1f0d9cc017c996765702434b2ddf3f9cc6abd28a Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Wed, 29 Sep 2021 21:24:12 +0200 Subject: [PATCH 101/138] revert +1 change to be on the safer side (#3972) --- node/primitives/src/lib.rs | 3 +-- node/subsystem-util/src/rolling_session_window.rs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index 7544dd8d7214..6e8490b67b91 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -69,8 +69,7 @@ pub const POV_BOMB_LIMIT: usize = (MAX_POV_SIZE * 4u32) as usize; /// On Polkadot this is 1 day, and on Kusama it's 6 hours. /// /// Number of sessions we want to consider in disputes. -/// + 1 for the child's session. -pub const DISPUTE_WINDOW: SessionIndex = 6 + 1; +pub const DISPUTE_WINDOW: SessionIndex = 6; /// The cumulative weight of a block in a fork-choice rule. pub type BlockWeight = u32; diff --git a/node/subsystem-util/src/rolling_session_window.rs b/node/subsystem-util/src/rolling_session_window.rs index 1c73ff58c718..fc2957b7ea23 100644 --- a/node/subsystem-util/src/rolling_session_window.rs +++ b/node/subsystem-util/src/rolling_session_window.rs @@ -289,7 +289,7 @@ mod tests { use polkadot_primitives::v1::Header; use sp_core::testing::TaskExecutor; - const TEST_WINDOW_SIZE: SessionIndex = 6 + 1; + const TEST_WINDOW_SIZE: SessionIndex = 6; fn dummy_session_info(index: SessionIndex) -> SessionInfo { SessionInfo { From cfc31ee245be6f85fe65f93575e2093ad778f0c2 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 29 Sep 2021 22:33:16 +0200 Subject: [PATCH 102/138] Drop availability only for candidates that lose disputes (#3973) * guide: updates for disputes changes * paras_inherent: drop availability only for candidates that lose disputes * spellcheck * Update runtime/parachains/src/paras_inherent.rs Co-authored-by: Andronik Ordian Co-authored-by: Andronik Ordian --- .../src/runtime/disputes.md | 2 +- .../src/runtime/parainherent.md | 6 +++--- runtime/parachains/src/paras_inherent.rs | 19 +++++++++++-------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/roadmap/implementers-guide/src/runtime/disputes.md b/roadmap/implementers-guide/src/runtime/disputes.md index 4fb70eb93d03..9ccf3a3923f8 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`. 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/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs index 9ac8e0141542..ea480ad7c96a 100644 --- a/runtime/parachains/src/paras_inherent.rs +++ b/runtime/parachains/src/paras_inherent.rs @@ -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() From 239c65096c34282b0fa3323b3d5d9bf68beb0cc9 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Wed, 29 Sep 2021 23:23:04 +0200 Subject: [PATCH 103/138] fix disputes tests (#3974) --- node/service/src/tests.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/service/src/tests.rs b/node/service/src/tests.rs index 7dc5fe19ecbd..22eeeacb051b 100644 --- a/node/service/src/tests.rs +++ b/node/service/src/tests.rs @@ -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(); () }; From cc24fb87b702db6510d08c689e442b6be384d798 Mon Sep 17 00:00:00 2001 From: Keith Yeung Date: Wed, 29 Sep 2021 16:24:49 -0700 Subject: [PATCH 104/138] Make most XCM APIs accept an Into where MultiLocation is accepted (#3627) * Change send_xcm MultiLocation argument to be generic * Change pallet_xcm::send_xcm MultiLocation and Junctions argument to be generic * Change convert_origin MultiLocation argument to be generic * Change OnResponse MultiLocation arguments to be generic * Change UniversalWeigher MultiLocation argumente to be generic * Change ExecuteXcm MultiLocation argument to be generic * Remove usages of into for the MultiLocation argument in execute_xcm * Make use of generic MultiLocation arguments in rustdocs * Cargo fmt * Remove unused import in tests * Resolve conflicts * cargo fmt * Appease spellcheck * impl Into in more places --- runtime/common/src/xcm_sender.rs | 3 +- runtime/parachains/src/ump.rs | 7 ++- runtime/test-runtime/src/xcm_config.rs | 2 +- xcm/pallet-xcm/src/lib.rs | 46 +++++++++++------ xcm/pallet-xcm/src/mock.rs | 7 +-- xcm/src/v1/multilocation.rs | 12 ++--- xcm/src/v1/traits.rs | 32 +++++++----- xcm/src/v2/traits.rs | 33 +++++++----- xcm/xcm-builder/src/mock.rs | 8 +-- xcm/xcm-builder/src/origin_conversion.rs | 60 ++++++++++++++++------ xcm/xcm-builder/src/tests.rs | 29 ++++------- xcm/xcm-builder/tests/mock/mod.rs | 4 +- xcm/xcm-executor/src/lib.rs | 6 ++- xcm/xcm-executor/src/traits/conversion.rs | 25 +++++---- xcm/xcm-executor/src/traits/weight.rs | 2 +- xcm/xcm-simulator/example/src/lib.rs | 10 ++-- xcm/xcm-simulator/example/src/parachain.rs | 4 +- xcm/xcm-simulator/src/lib.rs | 6 ++- 18 files changed, 179 insertions(+), 117 deletions(-) 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/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/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/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index b222c73a9c69..d89b306f085b 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -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 { @@ -1368,7 +1380,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/src/v1/multilocation.rs b/xcm/src/v1/multilocation.rs index a8f1872bf042..9931ba4a6137 100644 --- a/xcm/src/v1/multilocation.rs +++ b/xcm/src/v1/multilocation.rs @@ -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/traits.rs b/xcm/src/v2/traits.rs index a28137b00052..d2d994124d38 100644 --- a/xcm/src/v2/traits.rs +++ b/xcm/src/v2/traits.rs @@ -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/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/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/src/lib.rs b/xcm/xcm-executor/src/lib.rs index 6e4611b14eac..f46963f6fbcd 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()), 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/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 => { From 80ae3d8f21a1248310fe9429cb4b7e530dbd0cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Thu, 30 Sep 2021 14:16:42 +0200 Subject: [PATCH 105/138] Fix master compilation (#3977) --- xcm/pallet-xcm-benchmarks/src/mock.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xcm/pallet-xcm-benchmarks/src/mock.rs b/xcm/pallet-xcm-benchmarks/src/mock.rs index 2b1cb31f1580..d59cf3387268 100644 --- a/xcm/pallet-xcm-benchmarks/src/mock.rs +++ b/xcm/pallet-xcm-benchmarks/src/mock.rs @@ -21,7 +21,7 @@ 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(_: MultiLocation, _: Xcm<()>) -> SendResult { + fn send_xcm(_: impl Into, _: Xcm<()>) -> SendResult { Ok(()) } } From 52998509b07c28386aab30db7f217a108a1d7a5e Mon Sep 17 00:00:00 2001 From: Martin Pugh Date: Thu, 30 Sep 2021 14:44:19 +0200 Subject: [PATCH 106/138] Bump version, tx_version and spec_version in prep for v0.9.11 (#3970) * bump version and spec_version * bump transaction version * Bump of the default value in CI * bump tx version for westend and kusama Co-authored-by: Wilfried Kopp --- .../extrinsic-ordering-check-from-bin.yml | 2 +- Cargo.lock | 144 +++++++++--------- Cargo.toml | 2 +- cli/Cargo.toml | 2 +- core-primitives/Cargo.toml | 2 +- erasure-coding/Cargo.toml | 2 +- erasure-coding/fuzzer/Cargo.toml | 2 +- node/client/Cargo.toml | 2 +- node/collation-generation/Cargo.toml | 2 +- node/core/approval-voting/Cargo.toml | 2 +- node/core/av-store/Cargo.toml | 2 +- node/core/backing/Cargo.toml | 2 +- node/core/bitfield-signing/Cargo.toml | 2 +- node/core/candidate-validation/Cargo.toml | 2 +- node/core/chain-api/Cargo.toml | 2 +- node/core/chain-selection/Cargo.toml | 2 +- node/core/dispute-coordinator/Cargo.toml | 2 +- node/core/dispute-participation/Cargo.toml | 2 +- node/core/parachains-inherent/Cargo.toml | 2 +- node/core/provisioner/Cargo.toml | 2 +- node/core/pvf/Cargo.toml | 2 +- node/core/runtime-api/Cargo.toml | 2 +- node/jaeger/Cargo.toml | 2 +- node/malus/Cargo.toml | 2 +- node/metered-channel/Cargo.toml | 2 +- node/metrics/Cargo.toml | 2 +- node/network/approval-distribution/Cargo.toml | 2 +- .../availability-distribution/Cargo.toml | 2 +- node/network/availability-recovery/Cargo.toml | 2 +- node/network/bitfield-distribution/Cargo.toml | 2 +- node/network/bridge/Cargo.toml | 2 +- node/network/collator-protocol/Cargo.toml | 2 +- node/network/dispute-distribution/Cargo.toml | 2 +- node/network/gossip-support/Cargo.toml | 2 +- node/network/protocol/Cargo.toml | 2 +- .../network/statement-distribution/Cargo.toml | 2 +- node/overseer/Cargo.toml | 2 +- node/overseer/overseer-gen/Cargo.toml | 2 +- .../overseer-gen/proc-macro/Cargo.toml | 2 +- node/primitives/Cargo.toml | 2 +- node/service/Cargo.toml | 2 +- node/subsystem-test-helpers/Cargo.toml | 2 +- node/subsystem-types/Cargo.toml | 2 +- node/subsystem-util/Cargo.toml | 2 +- node/subsystem/Cargo.toml | 2 +- node/test/client/Cargo.toml | 2 +- node/test/polkadot-simnet/common/Cargo.toml | 2 +- node/test/polkadot-simnet/node/Cargo.toml | 2 +- node/test/polkadot-simnet/test/Cargo.toml | 2 +- node/test/service/Cargo.toml | 2 +- parachain/Cargo.toml | 2 +- parachain/test-parachains/Cargo.toml | 2 +- parachain/test-parachains/adder/Cargo.toml | 2 +- .../test-parachains/adder/collator/Cargo.toml | 2 +- parachain/test-parachains/halt/Cargo.toml | 2 +- primitives/Cargo.toml | 2 +- rpc/Cargo.toml | 2 +- runtime/common/Cargo.toml | 2 +- runtime/common/slot_range_helper/Cargo.toml | 2 +- runtime/kusama/Cargo.toml | 2 +- runtime/kusama/src/lib.rs | 4 +- runtime/parachains/Cargo.toml | 2 +- runtime/polkadot/Cargo.toml | 2 +- runtime/polkadot/src/lib.rs | 4 +- runtime/rococo/Cargo.toml | 2 +- runtime/test-runtime/Cargo.toml | 2 +- runtime/westend/Cargo.toml | 2 +- runtime/westend/src/lib.rs | 4 +- statement-table/Cargo.toml | 2 +- utils/remote-ext-tests/bags-list/Cargo.toml | 2 +- utils/staking-miner/Cargo.toml | 2 +- xcm/Cargo.toml | 2 +- xcm/pallet-xcm/Cargo.toml | 2 +- xcm/xcm-builder/Cargo.toml | 2 +- xcm/xcm-executor/Cargo.toml | 2 +- xcm/xcm-executor/integration-tests/Cargo.toml | 2 +- xcm/xcm-simulator/Cargo.toml | 2 +- xcm/xcm-simulator/example/Cargo.toml | 2 +- 78 files changed, 152 insertions(+), 152 deletions(-) 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/Cargo.lock b/Cargo.lock index 538a9e3f9cef..f612e699ab9a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3125,7 +3125,7 @@ dependencies = [ [[package]] name = "kusama-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -4118,7 +4118,7 @@ dependencies = [ [[package]] name = "metered-channel" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "derive_more", @@ -5410,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -5808,7 +5808,7 @@ checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" [[package]] name = "polkadot" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_cmd", "color-eyre", @@ -5820,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", @@ -5840,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", @@ -5861,7 +5861,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "derive_more", @@ -5888,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", @@ -5915,7 +5915,7 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking-cli", "futures 0.3.17", @@ -5934,7 +5934,7 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -5966,7 +5966,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.9" +version = "0.9.11" dependencies = [ "always-assert", "assert_matches", @@ -5993,7 +5993,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -6005,7 +6005,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6034,7 +6034,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -6047,7 +6047,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6073,7 +6073,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6096,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", @@ -6114,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", @@ -6150,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", @@ -6177,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", @@ -6201,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", @@ -6216,7 +6216,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6237,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", @@ -6256,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", @@ -6277,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", @@ -6301,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", @@ -6317,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", @@ -6333,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", @@ -6350,7 +6350,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.9" +version = "0.9.11" dependencies = [ "always-assert", "assert_matches", @@ -6384,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", @@ -6403,7 +6403,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-std", "lazy_static", @@ -6420,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", @@ -6430,7 +6430,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-trait", "derive_more", @@ -6447,7 +6447,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bounded-vec", "futures 0.3.17", @@ -6469,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", @@ -6478,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", @@ -6496,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", @@ -6514,7 +6514,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6544,7 +6544,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "femme", @@ -6568,7 +6568,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-trait", "futures 0.3.17", @@ -6585,7 +6585,7 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "proc-macro-crate 1.1.0", @@ -6596,7 +6596,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.9" +version = "0.9.11" dependencies = [ "derive_more", "frame-support", @@ -6612,7 +6612,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bitvec 0.20.1", "frame-system", @@ -6641,7 +6641,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -6671,7 +6671,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -6753,7 +6753,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -6803,7 +6803,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bitflags", "bitvec 0.20.1", @@ -6846,7 +6846,7 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6948,7 +6948,7 @@ dependencies = [ [[package]] name = "polkadot-simnet" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking", "frame-support", @@ -6980,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", @@ -7001,7 +7001,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "arrayvec 0.5.2", "assert_matches", @@ -7030,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -7039,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", @@ -7065,7 +7065,7 @@ dependencies = [ [[package]] name = "polkadot-test-malus" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -7084,7 +7084,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -7149,7 +7149,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking", "frame-system", @@ -7770,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", @@ -7870,7 +7870,7 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bp-messages", @@ -9332,7 +9332,7 @@ dependencies = [ [[package]] name = "slot-range-helper" -version = "0.9.9" +version = "0.9.11" dependencies = [ "enumn", "parity-scale-codec", @@ -10096,7 +10096,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", @@ -10457,7 +10457,7 @@ dependencies = [ [[package]] name = "test-parachain-adder" -version = "0.9.9" +version = "0.9.11" dependencies = [ "dlmalloc", "parity-scale-codec", @@ -10470,7 +10470,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", @@ -10496,14 +10496,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", @@ -11579,7 +11579,7 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -11761,7 +11761,7 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.9" +version = "0.9.11" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -11773,7 +11773,7 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -11796,7 +11796,7 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking", "frame-support", @@ -11813,7 +11813,7 @@ dependencies = [ [[package]] name = "xcm-executor-integration-tests" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -11842,7 +11842,7 @@ dependencies = [ [[package]] name = "xcm-simulator" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "parity-scale-codec", @@ -11858,7 +11858,7 @@ dependencies = [ [[package]] name = "xcm-simulator-example" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", diff --git a/Cargo.toml b/Cargo.toml index bfee75c8b5eb..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" 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/core-primitives/Cargo.toml b/core-primitives/Cargo.toml index a0a43e440252..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" diff --git a/erasure-coding/Cargo.toml b/erasure-coding/Cargo.toml index 6bf1e6acb03e..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" 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 e2fcecf48843..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" diff --git a/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index 41da8df3691a..9ff9621fcbf8 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-collation-generation" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/approval-voting/Cargo.toml b/node/core/approval-voting/Cargo.toml index 374e37c05a27..2b12c4279210 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-approval-voting" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index 20df7ace4271..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" diff --git a/node/core/backing/Cargo.toml b/node/core/backing/Cargo.toml index 72b88b2ae4fd..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" diff --git a/node/core/bitfield-signing/Cargo.toml b/node/core/bitfield-signing/Cargo.toml index 01b37b827f1b..eae0881d2da3 100644 --- a/node/core/bitfield-signing/Cargo.toml +++ b/node/core/bitfield-signing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-bitfield-signing" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/candidate-validation/Cargo.toml b/node/core/candidate-validation/Cargo.toml index 50fae0d22b88..334166bbfb2a 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-candidate-validation" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/chain-api/Cargo.toml b/node/core/chain-api/Cargo.toml index a72612f1bd17..ffea3a4e559a 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-chain-api" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/chain-selection/Cargo.toml b/node/core/chain-selection/Cargo.toml index 798b4cb372c6..64a84cdf29be 100644 --- a/node/core/chain-selection/Cargo.toml +++ b/node/core/chain-selection/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "polkadot-node-core-chain-selection" description = "Chain Selection Subsystem" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/dispute-coordinator/Cargo.toml b/node/core/dispute-coordinator/Cargo.toml index 45c12ff2ad76..0cb6bcc2bf3f 100644 --- a/node/core/dispute-coordinator/Cargo.toml +++ b/node/core/dispute-coordinator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index 34617ade2350..5b1843d02b9c 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-dispute-participation" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/parachains-inherent/Cargo.toml b/node/core/parachains-inherent/Cargo.toml index 487fbd6d2547..4a40d3f1e383 100644 --- a/node/core/parachains-inherent/Cargo.toml +++ b/node/core/parachains-inherent/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-parachains-inherent" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/provisioner/Cargo.toml b/node/core/provisioner/Cargo.toml index ae0f9ea99904..a5313e348226 100644 --- a/node/core/provisioner/Cargo.toml +++ b/node/core/provisioner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-provisioner" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 6710924bb114..23ee5fab4308 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" diff --git a/node/core/runtime-api/Cargo.toml b/node/core/runtime-api/Cargo.toml index fa7c8d47cb1b..ed730f70d492 100644 --- a/node/core/runtime-api/Cargo.toml +++ b/node/core/runtime-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-runtime-api" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/jaeger/Cargo.toml b/node/jaeger/Cargo.toml index 736b3c3e5237..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" diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index 8bb9b6d6a3a9..94ab2d33ac5b 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -10,7 +10,7 @@ path = "src/variant-a.rs" 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/metered-channel/Cargo.toml b/node/metered-channel/Cargo.toml index 53695c30923c..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" 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 e47b5d460396..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" diff --git a/node/network/availability-distribution/Cargo.toml b/node/network/availability-distribution/Cargo.toml index 4dd6d7ad6568..1f7d89c5ddb3 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-availability-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index 435670eb4765..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" diff --git a/node/network/bitfield-distribution/Cargo.toml b/node/network/bitfield-distribution/Cargo.toml index 5b35c7534c29..5b951bd8e030 100644 --- a/node/network/bitfield-distribution/Cargo.toml +++ b/node/network/bitfield-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-availability-bitfield-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/bridge/Cargo.toml b/node/network/bridge/Cargo.toml index 3f4a01e9b236..7758fd7148c7 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-network-bridge" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index 799231b0b427..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" diff --git a/node/network/dispute-distribution/Cargo.toml b/node/network/dispute-distribution/Cargo.toml index eff85629f422..11443b069a71 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-dispute-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/network/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml index 398f5532125d..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" diff --git a/node/network/protocol/Cargo.toml b/node/network/protocol/Cargo.toml index 78d5cbca6353..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" diff --git a/node/network/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index 8e6893805c07..5573363956f7 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-statement-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Statement Distribution Subsystem" edition = "2018" diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml index 5c5906ff1160..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" 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 9600fbb39149..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." diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index 3dc1b13da68f..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" diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 2dd75f42614e..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" 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-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-util/Cargo.toml b/node/subsystem-util/Cargo.toml index 3b8db4170c9b..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" 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/test/client/Cargo.toml b/node/test/client/Cargo.toml index 1ab03b74192c..b6aa140fece6 100644 --- a/node/test/client/Cargo.toml +++ b/node/test/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-test-client" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" 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 972d5a5b0ca3..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" 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/test-parachains/Cargo.toml b/parachain/test-parachains/Cargo.toml index 4290e5b1d460..cf2f4415628d 100644 --- a/parachain/test-parachains/Cargo.toml +++ b/parachain/test-parachains/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachains" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Integration tests using the test-parachains" edition = "2018" diff --git a/parachain/test-parachains/adder/Cargo.toml b/parachain/test-parachains/adder/Cargo.toml index 2ed5fd3f9d9c..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" diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index 52a59506b529..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" 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/primitives/Cargo.toml b/primitives/Cargo.toml index eee6f8431de2..4aa5d00a3a7c 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-primitives" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index bb360e80d101..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" diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 46f91f5b80c0..48ba8d36055e 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-runtime-common" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/common/slot_range_helper/Cargo.toml b/runtime/common/slot_range_helper/Cargo.toml index ec9158f75f9c..aec6b69355fe 100644 --- a/runtime/common/slot_range_helper/Cargo.toml +++ b/runtime/common/slot_range_helper/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "slot-range-helper" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 75f84c25bd18..1e04a113bdfa 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kusama-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index fbe3d45f93f5..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. diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 3fcf3d59513d..c281269b8682 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-runtime-parachains" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 728bbdf9b4b8..07558ef8881d 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 62f0a8287b2a..3addbf6932d7 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -105,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. diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index 1d347e2035c3..294cb062a225 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rococo-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index 497bc6a6b1d5..c621fbd3ca12 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-test-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index a968f281101c..356ecefc5d5c 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "westend-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index fb72eb5f5693..41c9d98e4076 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -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. diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml index 58c8a261489b..b6ae92a22c5b 100644 --- a/statement-table/Cargo.toml +++ b/statement-table/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-statement-table" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" 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/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 21ab164470be..296240a705d3 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "staking-miner" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index e70607f4dc49..6c4c319170d0 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xcm" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "The basic XCM datastructures." edition = "2018" 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/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index 8e3d713f4386..08f37b515ca7 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -3,7 +3,7 @@ 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.3.1", default-features = false, features = ["derive"] } diff --git a/xcm/xcm-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml index 08aaddbeaab3..ab2184c81d1d 100644 --- a/xcm/xcm-executor/Cargo.toml +++ b/xcm/xcm-executor/Cargo.toml @@ -3,7 +3,7 @@ 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" 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-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" From ac28a7841e5f02c40f198b54221d5b6ee12de0b8 Mon Sep 17 00:00:00 2001 From: zjb0807 Date: Thu, 30 Sep 2021 22:08:46 +0800 Subject: [PATCH 107/138] Companion for substrate PR#9890 (#3961) * add on_initialize_base_with_launch_period * trigger GitHub actions * cargo update -p sp-io Co-authored-by: Shawn Tabrizi --- Cargo.lock | 345 ++++++++++-------- .../kusama/src/weights/pallet_democracy.rs | 7 + .../polkadot/src/weights/pallet_democracy.rs | 7 + 3 files changed, 198 insertions(+), 161 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f612e699ab9a..2c37343a4c21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -461,7 +461,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-primitives", "fnv", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -1918,7 +1918,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", ] @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -1956,7 +1956,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "Inflector", "chrono", @@ -1982,7 +1982,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -2024,7 +2024,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,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#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "chrono", "frame-election-provider-support", @@ -4595,7 +4595,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4609,7 +4609,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -4625,7 +4625,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -4640,7 +4640,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4664,7 +4664,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4684,7 +4684,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4699,7 +4699,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-primitives", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4740,7 +4740,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4842,7 +4842,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4858,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#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4882,7 +4882,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4900,7 +4900,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4915,7 +4915,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4954,7 +4954,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4974,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4991,7 +4991,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5008,7 +5008,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5026,7 +5026,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5074,7 +5074,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5105,7 +5105,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5128,7 +5128,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5143,7 +5143,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5157,7 +5157,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5173,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5194,7 +5194,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5210,7 +5210,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5224,7 +5224,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5247,7 +5247,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "sp-arithmetic", @@ -5267,7 +5267,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5281,7 +5281,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5299,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5318,7 +5318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5352,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#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5380,7 +5380,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5396,7 +5396,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -7793,7 +7793,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8056,7 +8056,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "sp-core", @@ -8067,7 +8067,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8094,7 +8094,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8117,7 +8117,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8133,7 +8133,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8149,7 +8149,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8160,7 +8160,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "chrono", "fdlimit", @@ -8198,7 +8198,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "fnv", "futures 0.3.17", @@ -8226,7 +8226,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "kvdb", @@ -8251,7 +8251,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -8275,7 +8275,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8318,7 +8318,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "futures 0.3.17", @@ -8342,7 +8342,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8355,7 +8355,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "assert_matches", "async-trait", @@ -8389,7 +8389,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -8415,7 +8415,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "sc-client-api", "sp-authorship", @@ -8426,7 +8426,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8452,7 +8452,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "environmental", @@ -8470,7 +8470,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "parity-scale-codec", @@ -8486,7 +8486,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8504,7 +8504,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8541,7 +8541,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "finality-grandpa", @@ -8565,7 +8565,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8582,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "parity-scale-codec", @@ -8615,7 +8615,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-std", "async-trait", @@ -8666,7 +8666,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8682,7 +8682,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "bytes 1.0.1", "fnv", @@ -8709,7 +8709,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "libp2p", @@ -8722,7 +8722,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8731,7 +8731,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "hash-db", @@ -8762,7 +8762,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8787,7 +8787,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8804,7 +8804,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "directories", @@ -8869,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "parity-scale-codec", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8905,7 +8905,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "chrono", "futures 0.3.17", @@ -8923,7 +8923,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8952,7 +8952,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8963,7 +8963,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "intervalier", @@ -8990,7 +8990,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "futures 0.3.17", @@ -9004,7 +9004,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9078,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" @@ -9436,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "log", @@ -9453,7 +9473,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9465,7 +9485,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9478,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "integer-sqrt", "num-traits", @@ -9493,7 +9513,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9506,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "parity-scale-codec", @@ -9518,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "sp-api", @@ -9530,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "log", @@ -9548,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -9567,7 +9587,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "merlin", @@ -9590,7 +9610,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9601,7 +9621,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9613,7 +9633,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "base58", "blake2-rfc", @@ -9658,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9667,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro2", "quote", @@ -9677,7 +9697,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "environmental", "parity-scale-codec", @@ -9688,7 +9708,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "finality-grandpa", "log", @@ -9706,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9720,7 +9740,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "hash-db", @@ -9744,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "lazy_static", "sp-core", @@ -9755,7 +9775,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -9772,7 +9792,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "zstd", ] @@ -9780,7 +9800,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9795,7 +9815,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9806,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "sp-api", "sp-core", @@ -9816,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "backtrace", ] @@ -9824,7 +9844,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "rustc-hash", "serde", @@ -9834,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "either", "hash256-std-hasher", @@ -9856,7 +9876,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9873,7 +9893,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9885,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "serde", "serde_json", @@ -9894,7 +9914,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9908,7 +9928,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9919,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "log", @@ -9942,12 +9962,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +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#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9960,7 +9980,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "sp-core", @@ -9973,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9989,7 +10009,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "erased-serde", "log", @@ -10007,7 +10027,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "sp-api", "sp-runtime", @@ -10016,7 +10036,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "log", @@ -10032,7 +10052,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "memory-db", @@ -10047,7 +10067,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10063,7 +10083,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10074,7 +10094,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10270,7 +10290,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "platforms", ] @@ -10278,7 +10298,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10300,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-std", "derive_more", @@ -10314,7 +10334,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -10341,7 +10361,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10351,7 +10371,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10362,7 +10382,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10515,7 +10535,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-system", "futures 0.3.17", @@ -10955,7 +10975,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#4ecbb1f724801d142d1c0cd30ac30f4a62dca364" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpsee-ws-client", "log", @@ -11507,8 +11527,11 @@ checksum = "21486cfb5255c2069666c1f116f9e949d4e35c9a494f11112fa407879e42198d" dependencies = [ "anyhow", "cfg-if 1.0.0", + "gimli", "lazy_static", "libc", + "object", + "scroll", "serde", "target-lexicon", "wasmtime-environ", 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/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 From 261a124924641bbb41fdb1b321dae3b3861c736c Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Fri, 1 Oct 2021 00:04:37 +0200 Subject: [PATCH 108/138] gossip-support: set last_session_index earlier (#3978) * gossip-support: set last_session_index earlier * gossip-support: issue_connection_request never fails * fmt --- node/network/gossip-support/src/lib.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/node/network/gossip-support/src/lib.rs b/node/network/gossip-support/src/lib.rs index 97be38933802..0679c3ffe2de 100644 --- a/node/network/gossip-support/src/lib.rs +++ b/node/network/gossip-support/src/lib.rs @@ -208,6 +208,7 @@ where %session_index, "New session detected", ); + self.last_session_index = Some(session_index); } let all_authorities = determine_relevant_authorities(ctx, relay_parent).await?; @@ -218,10 +219,9 @@ where authorities }; - self.issue_connection_request(ctx, other_authorities).await?; + 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?; } } @@ -234,8 +234,7 @@ where &mut self, ctx: &mut Context, authorities: Vec, - ) -> Result<(), util::Error> - where + ) where Context: SubsystemContext, Context: overseer::SubsystemContext, { @@ -295,8 +294,6 @@ where self.last_failure = None; self.failure_start = None; }; - - Ok(()) } fn handle_connect_disconnect(&mut self, ev: NetworkBridgeEvent) { From f588fe6086ff65372bb935aa916780f3fa0e358b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Silva=20de=20Souza?= <77391175+joao-paulo-parity@users.noreply.github.com> Date: Fri, 1 Oct 2021 05:22:15 -0300 Subject: [PATCH 109/138] bump async-std's version to remove conflict for substrate (#3981) https://gitlab.parity.io/parity/substrate/-/jobs/1151852#L367 https://gitlab.parity.io/parity/substrate/-/jobs/1151852#L369 --- node/core/pvf/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 23ee5fab4308..51f4c8a7b173 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -10,7 +10,7 @@ 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" From e59b7204c7b38352693f50c4a218832ce79bb89e Mon Sep 17 00:00:00 2001 From: Pierre Besson Date: Fri, 1 Oct 2021 10:57:44 +0200 Subject: [PATCH 110/138] add new rococo chainspec (#3976) --- node/service/res/rococo.json | 270 +++++++++++++++++------------------ 1 file changed, 135 insertions(+), 135 deletions(-) diff --git a/node/service/res/rococo.json b/node/service/res/rococo.json index 31017161f205..b12bed1b3fee 100644 --- a/node/service/res/rococo.json +++ b/node/service/res/rococo.json @@ -1,6 +1,6 @@ { "name": "Rococo", - "id": "rococo_v1_11", + "id": "rococo_v1_12", "chainType": "Live", "bootNodes": [ "/ip4/34.90.151.124/tcp/30333/p2p/12D3KooWF7BUbG5ErMZ47ZdarRwtpZamgcZqxwpnFzkhjc1spHnP", @@ -32,161 +32,161 @@ "genesis": { "raw": { "top": { - "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", - "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", + "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", + "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", - "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x3d8e18726f636f636f", + "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd00581cdc045e16c60814551058a98a3a7c037a036ab2e620e6db16f9338285d687896955fea4742a4267dc65a46c795cbd660ed6e779cbef538826fc839e1d23d37573ca31989fe75761bad91569b93cd7ff3cded45d4bf62e217b6f2953923271146813aa14fde68f67ef3b7cb159b387bfc761a4993e08523187fa16bf804a2a57388921775fcb4bdeef48d3f3fd26edf7f82569b6649754ccc1cb6ac319633449cb2007aa4115a8da9ee1723df983279ced53b19dac196cf2fb26ebf73d0dd2088cf49ce532f8df831d5612597a9034c34f42ea422aca402baafbefed83630d3f925221dbf0234df0fbc126656cb0305816df66cf54fc263b8bdfd31e7ee4e99ba419b4a19426e34b39bd82caf13fd2fc5ec68652feb093538ee26426ff746e6c65fcd3d31e649d0cdef0ec9aa0e3851f49a5905f4a9124ae5cb972a51c1fbc5da977b73339a957b295d897e337bdb5adc9f4357f2435233b59b389ecef71f054331565a01495e47bf0ed00825e00d6d0451aea8320f83d0db658434fa69487f93d9da1fef77ddfd355b4e17bf041f044e20cd6f044523332d8e189a449c8a08727922e2183373c91e237e97924a750db1550bc1ca5330f4f6a161ff44423a3f8542c328ae20cd48c2c3e48af7b3126b30259fcce2792b691c112193ee8611569a03180c1b2889ff43f7142733058fe61c9fe60890c7177a9c3902cbd483ef909b3bf296732fde9c113a539e19748b3e6b0447a7f7af2d3657fd353f1868a466edcd34e3ab1c9fda089741243ae34a7f42169762e3d58c390f4de4483f7e1d750249dd42b0308ca8d29e5510a49b3e6d2f7784f8324cd25923e89a4ffd5a75d9f56548769b370ee9a816a90d8df11c0028cf53fda3266168fdeb1d9ff8b180ab2ab9638d9ff0b21a0e31abd55ff71583cea11ee2a7d4fdd55c2efadfa1f3bf28515236011051b58f181ae76058b4ac21f7e9c956a7c1c168fc731655abb82c6eb5887c1129d6c5adb2c4f8055a2933f4b5ab9dfe48f6719acc4bebc1848a7bc42e6069bfb2d500deaae3f00bba70fc6989e70ebc32a27f10f9b557ba7a9b75a1895ac72fd7ac7fcbefbbe6fdf54b2cadd7b0f76a447d2a1f1fb7e2aca70bfa73fd28755eeef5cb4ecafa201a2d45cb1c53eacf2c549eccf60316d56f56a27514b821599d692d0848f4c6b6b1c21ebf87d90fa182b2edfa7666dc25597e8d67dfa559ca1e62a13c1a8e3aef7b76fed7fb3b059b3b524ab8a3438c6f977578579eb3e362bccfc7c1f04694822eb9466ddb7a459b37d273f326cd6fd2acae0e1af59f7bf7cbfc67ac7bef7e62b9348d8f4ef1eecc80a03c25861f93e156920bd19942d89acd9c9305bb2f347aa9a759f8a3278786cd67d73cc97da7295e5fb15d63bdddfaf53da35c260b021cafbb677fcbbee5b94a1c342c62f3b39d3acfb600dffbe9334e3b48b9677d5acfb3d2d4e319a3af9d67cbf480fbd436b6b18e5fb3fbd63ff3e10d5859aefd32f9b3a7ee6fbd45db53469cdf6261d235f9a46bea549d5c81597e94dd0add70a589fd22134d3efe91d1bc0a8358b664a6390bf376d26bd19666a02c9f4767f4d25abecfdfdfab45dfd268f4ce95b52d5acfa201dc048bf48811a29f041a6a27f4fd376d113068321519a33d93e6d172d4d9c6c8980c4099658e2881c194528ed7fbd73b37d5bc40bb2c5a6129d4cc2ab66d5ffb000c69a6936c7eca2657d8ffc9a55bf236db3ea5fd286b1fea8ea1d9aebaf7ac77efd99deb1d88633c66816cdf59d1c9b55bf4955b7ead730ae323da77c91bb4cbf80219171aa075483aabb94292198728414232936294b4c812e60eca7fd768cdcff8523105001637dda41e85310a40018e9494408be77fafb59bdd3dd441c91dbcbee6e26607db29fe2f41190668a638eb91faceff5cd3037e8f59378256d1673390acba9f399a37422e821a543ea9b66cdfe358bfece58b33f7d2ad2e0f86b968795f42c46e9425c8e129ae8902715969dc490ebf7b768000b83e5fa55b46184e5fa61efd0dc304ac74c6f82bcb611409a69ef98fdf46d7f7d933e6d166d96fd9db19f7e7f128a69b32c76dcd3415d0f0052008cf6cd55beafd33be627a477cc91d53ba64ebe7f1f48efd87cbf10b2e5fb33edeaf23eed1dcf264fbef7c7dee9bfafea1dfffbf7c3dea97f9fe25c9c849e40df3ba665f58ef938bdd3d94fa11864ffb05d5df2c89dcd99ec4f759480f4298ea993fd414a6db3287d6b80fbf47b1aa464e9412a82d80ccae053d2fc4cbf922dd28ab2cdfaf1ecfdaa77baf79f013b12099ba4f79ef4fac8b17748dffb87a4d924d3074964cd206d56f855a4a166dbac109be17b4f22690ec91fcfdf83b569751389a4b9fb48daaccf5d55bea4dd327f327d4a73cc30d3f707fdab5fb50f92a5a7241565287dff85600d29d93d48c58acda05c9f922ed28a7af363790f5a915254d82c9c66f9939e36ebfb6f16097fd8a46fbfa77bbc92ddd3b159fd5594a1c33237dcaf5f71ffb524152bfe9ad53fae2849f37feeb230180c062bfd597488d737717432bd092ad53b03a98f11a42f8cf41c6228d37388d88f4c4fd81819a43c233d6156649a69eeafa20be309db229b36f77ff5bf8fba8b76cb1c737d73cce697e9f7dbdef19e3eed1dfbf4bfdea1995a2c64bcef91f73bb464cd55bc7f3d9266b08a36747fb1d97df760db1b4eb9fb9eb664cd1e49738b32d8076b78c9eea9489b65aa40908a179b40e4fb1e697ed9fb8e34bba7cdf2bec73b92668f346d47d24cc58b7f3c5b6c9bd5acfa14a7bbda38f06535d2a71d487bc7dffc327d5ac99ac11a569266db3bfdf44127696eb2e66c7ba73e7db04327eb83d54519ea831db630fac7989c18ed8b32341632d6076fd8627d2a5a6ca9288363daacfe9ea6620d343b497350d76a05a44046f04471cc77d96ef9d307a98fb18a32d066991f0d35d366f9f7b46becf707c7dea1d91face1d83bb459f4fd55bd536b36bf6c8ed99f8a32d4efe99e6e52e6862ff77fb9b1cc0dfdf6fb2dfea9b962da2cd366fa54b4a17e63b3bf7e4f77ad5680140063bfb9cafefeabdea1ef3fd33bf5fd6dbb6ae93ff60efd828b26b23fed1d9a4d55f6a7388e937ca63741b5d200d220232ad32f4a60cb1405522abe60c4997e410503d9cbf40b2a5372cdf405a43a3f467a41da63a4577c4275011a69944c4d9898300d2116c174849813d9109520eac004331561a222ae21aa212641341291200641c499306092621212812096218e219221d640b481f885698a48035106620cc416885c20e9410cc167845008df1144108441107310e24225442642344025804900d9083510ba4094891ae86450c281d884f881921ae05178a5f3a29484900aa014c211845508ab0849506243a4e2c520ec226401f884b005e10bc02890a608b7e86050528208ebba2049515a43dc8224045210484020e9806423e14868906ea41e9078403201290b710662112014ba189472a21360ce44843825a4855c8427290a7109d2ac64f318b8170e03efc24f7f81bbc0b9f02dc424442fea15d58a4a82274e9a3059a284010400a22706184c46884410a7201e894f10d110cf107f209a218621e22089299e405481e8848f8baf07e295ef07612c2cc29b4288825007df0e3e22542084539478204641848248055108e012c026804e00db0099d042e119a017600a3c31c01080528051946a508ac101eae9e5a02482ea034f07750724267c5d7c39f8581086402c1259408282e4c45784ef0851e80bc267820ff79df199d1b06f88700ae2d077fb78f091113ef189f1f9e01342380ba1e8a4f86a103af1a140f4c017835a858a82520f3e17d4277c2d0891f8b40833f079111e1162e0432334e23bc1878478fb70f0d944297c18f88cf8aa7cb1af884fe893f211e1e5be2c422a3e30c49a678657863786074683c0bb228a9802510bafca7783100761181d1b5d123a24784ef09a5091f08af0a878647427090c920d3a30c227844e089b1032218c42481442213cfaa880647427e8c400cde87410b6413242b705a9894ea233403a827744758117fb640096f10181c404e9899a816f0a280393f092e0ade1a95137f0a5e05341a884308a3017aa202cfa68009e41320aa5f8685f18df184da563350a550a9f0e44291d0bea0fba88fec0b7452882ef8bd04a554217c66783af0c7103df0abe197c30f88abe34be217c2ff84e310b91f6d5445b95a24ee121c13b42f702cfc82b42a7812e892e031d12dd111d063a23ba2a5dac2ba2a3d20975533a291d11dd1075061dec5eb955b854b853b852b851b850b847f709d709b709b78dcb84bb84ab849bbb6cdc24dc35ae1a1709f708d708d7e816e112e10ee1a67185708370817071bdc445e39e717f70cde829b78c4bc6f5c1bddd1e5c1edc1ddc31ae0eae183707d77671505770c3b837a831b86054185c1bdc1adc2f6eedd2e0cee0cae0c6e07a716170bbb8e77dc17541bdc1e5e2b6e0b2e0aee0aae06a714f704d7069178b5b826b4535e292e08ee0567189ae954bc515413dba535c295a891b4545a365178afbc475e232713f70876e07da037789bb81abc4d5c04de222718fb818b846dc2ab7884bc5597085ee943bc485d92bb60a960a5506760a3505560a360a160af6c83ec13ac1b66199609760956073960dbb8655a372a07ea03e417a010805f804e8c40785ca039215e0146112ec123e051aea16de8266a2b6d14395096d442885ee406fa035d018e82ad58c5a461d42ed410f518b50a1508d50d3a84ea84da8b870057509950a750af508d5a8aa519150855089508350cfa8647413f5567150c3106f2082516950bda85d8828a82f680e542ec4155415d416d4a20ad410d4596da242519da8515410540d5425ea12d50315033c109980e802d1043748608732074b05b0665a494320b5fb40314201224d8cf8f4408408585d87253e44889468f5514201233f4b7ed881c8cf119f2748745882840811985218148a1224467e7c7420e2e3b3438e121894c90e4b901009e289cf0f4e882069927f96f8f81084111cbe6403ea7364099325448c1c59c2a4003f4b7e6072e448a629cd804281e2a384a674a64a2bf081002da522fae30365071f9fd2a5a4021d981cf1d1c1a674020a25089f245082f0b9210164290b244d721050900420884c9668414a58e0944a4081f059c25222011d01ede10893263e32252bf4c90f3c20d961099323449034c93e143052b694a8a03b3061f2a4099126487a80f2c4674905981009c227498e5208a80e3e4b78400265c90f3f468e308982e407273e447e9e3069e2f34448690aaa0312223f3e509efc7004a6240585e283e407c913263dfcfc6084080f449034c9469ae8b0c4c8131a6a4a51d020284064064589cf92263e3ce981880e4b7e6042812548a0f859c2e40811273ee8f00465b2434c89090ae567894f141f10501e9620d161894f13223e3f467440a2c3122347789486a88f0e4c8ed0943c409f30d9018a0f941ba50e50283f3f34f9f981098e1207a8911f233a1059c204890e3e3f50904079e2d324476903148acf1326478804f1834409120a185182c44814235f52824269f20393273c10a92969804279c2e4070a931a8c3c3182c3aa6404ad009226f9894f92274c186000b25404f5f1f9c1e78703e4a0830f0f3c18c96147690a8592e4884f0f474a4350283f4b7c9ef8f4b004c997604b90ec2043aa023d8204ca12244f7e80f021128492264d8c1079e2a38312243f94498e305152ce90a8407d2062e4c7880e467e7c0880224dc10248941841f2836409921692136892234c94508088cfcf0f477c80f06121b5419f300140b8423884f7c519b94c83407ac260b906394c67ab60ab509b54cf0a11d243480f2194525abbbb7ae75e7b5dabe75d698cadd555536bbdedd55addbbb76b7b75cfebcffae759ebf9bd37c6ab2cb8df7bdd5de5b5f78e7b5ef5ea5e3dafee5e0dd2b500a95ead77bbe7793fbc98f6bc5a6bf5516bf56e4fd56d49f7dc7b78dd676d0c8dcef5bc4e55bbef45792854edf6505f6d7794b7c7828d41a1509ee77d5e5128140ae52814cabda6430fb582877247b5a3501d0a85eadcc3142a44d5ea1eed6cd7ee39edbaab9dd759f7bc7ad6eb3c77dbedb953afb5ddddba3b8de779deeeb5b777e7b957636b6abcb6a7524ee35d77eed63daf7ad6ba7b6edd6bf75a3db7aa6a3ba75359af767b8ab6c7c3ddbbead53f776faff1947bbec3db3def5a6f6ad5d16279eeee2d5fb772cf53792a95f27befbdddeede9d7b9e7775efaebdbb732f87aa73efcedb6bf13c1c5ebdddbd54a93dcffda67ade1ecabb61dde2749ee735d8378e3d4b3d774fa552a96ae7ee75eeb9a7f23cafbdee545eb7ab542aef73cff33ccf3d6ff7dcf3bc76f7bc76cf73afdd73af3dafdbf3dcbdf6dceb5a696654ddedb9e75ebb6bf5eeda6e49eb795d7b75afbbbddbdbbbbbdbf3aedeedeeeeee79aaeab5d6b7a1b5d25a6768adf1bcaa52d55a2df56866be96a91dad1e43abd79edb7677af5e2bb51ef556799e974aa55229f10922143c95a304b38a4925396284024a943079a203c688cf9318971a171812941f284880f049f9c084e503c90e3e4f9ae0161917283e3c2c31d2c311bcc4a7491323333f478c405962e4c90f911f243e50e007283e5088f8c0448725469ee0d50f1422499e30a9c08fcf121c100aebb25e7458628488cf13234d7c60a2c4c811264a80843a205162240a11282eb4870f487e96fcf004b7ecf0f3034d0b103e3d10f95982e449132247a020f141e5434dfb3cd981c813263f468e3051a2c4c80c901d1a209854e0a726899123477c92ec04f1f124213e7af0b004490f508cf4f0a99f27467ea0e4f071c3b284072450c88ff68012844f1222479028a1c00f4d584fa0a0a80f1d7ca040f179d2c4072647883cf189c2e488cf931e497682f86872c4078a2bece1c88f110a10e9010a92254876608d3b2079e213e5a6851e4182f8d0e1c6c9e7c7c8139f253e3c1031024587233e4498fc3409e2c9911b538e207c9210f901c267090f91871ca527467c941c21e2c38391274c7ea010d14109921e8e10f951f283911d7c7468854a7ca2f828210284111f6c401e982821c2c312243cf0c044094cc9070a11207c74588284c81224467a38b2c30e4c88fc00e1f35196f83889f620b2840912284f7ca210f961c2e409111d7c9ef8e8f08409919d203e88f8f0496244090588f82079f243e407081f1d5196f8788a76104f98f8e0e3431765898ff738e19ade202f2828e8020501d922142828c86910588402057945a8170404140404041414442a42818082be22140808082828a82b4281685010901709a2415d91a01a54bb08050aea224035881609aa404040b50805aa45826a502d4269901701020af222414040405e04a8d2202f428180ba485005aa45806a50755b04a80205050505dd223428a88bd0a0da45826a5050901769c1355029a5d507284668b61b18865c0d064a95366fdae070300c4798e64d1bd90d8e0196a3e68c21c6f2268d91b79c66a6ca260ca751f687a1e62e969af787e174d7c7f291b23f596c722c240ed3fc61c0b9cbe6fb7290391b72f6367c3eec6ff08b94fd6993c3619ab7fce62e9aef06db308ca4b55ef6379f03bfc81c693b1f6673d70baef919bec1b29727cf1a12f6349cd341daf08c843d0de7481b9efd0ce3f0e7c8d35b8e6d1846beec71bc6993a391a4eccfb73d8cc427992367e4e35e46621b86611979cebcf9b9ef6724c69118061c6fe21c0c7806036d86b4c150c4c2240c434f2b65f3851c0c43472f391c9cd40decc636734376c30683cc5d38c01bb3bf91e1c8be1bb81b1c0e7ee1d86e6037b61bb21b361862ee92b97133c3c1e1dce47066376637329c1bb81b1c0cb0179c1bda0dda0d1c1a4eee05e7bc3971c06ec06e9c38e7cd8903760376e3c4b9a1ddc0a1e1e46edccc707037399c1b9bed862c85639381c9c86e6ee0be594a96c2c1e1cc626e6ee46e66df0d5a0a2797657068b01bda0bb6c740a9927c1307ec859bb7fce5cd1be70bb8376fc064f00b466fe29c2fd4bce537e7cde60bb3ec6fbe50cbfe2f10b96b855f2fccdc05942ac1b7653f71ab19ccff85d35d2406c1c761e148164cf6e1a0e5c8b16c670e1c8e1cb0178adcf5c2cac5b0643968608e198e1307bf582c580e190e5a8edc0b3477c1e087b166a91c278c0dc7a2b572d85e70c870b0682d590e1b0e198e1c8c95e3c461c38163b1643972cc7080ac33078ee5cd1cb098998c4d06f66fe6c82183c1418bc1c5c864683966384e1856eee54dd62c26c729830387c3967ab3057bc1c12f0cb1688f5f90e5b0ddbc10cb7df805180ed991cc7694fd796eee7addb0b92b4593fa5cf6d68cc79793e5523860d95bb41d3212c70396fac7af566bc66396e321334ac9b2b7ce6fc72cb5c3a603f78f03bf74b4683b64381e301e9cbb7e96bd652377d05e878edc0d5af6162efbef386fe8b0edd0d1c2ed3875d876e898b56c3b683a4e1d391db2d6b963b6c3a643e64d1eb397bde4585ab96ff6c9523c608f7b81b1d058661f2eb5c3f6b297a725f9e60edacd9b3a72e7ec5bb6c73c31d2dc71be601ed90d3677c05830cf100ece9b3a6c3c336f398da983c60303f103a54a58f69c198f33c783b89c0c2d3b0f1b0b30d6cbac205b61f682cbce826c055aeb5f724e1b0e0d8e9f9965ff154e9c8ec7e191cb81d1e0156c72723539b21d4fc3028d07c6af156caf9cdc2b47f6626107e6417bb18003bf563873703c72def2d78173603c5890ad40cb69e11cdb2b87c6c3e62d6701b6020baf305b019633e371ae9003af906be15870b0198f33b7c24c6605590e8d878d05d80a341b4ccec903275be1c4e5c0563c722ccc623050aa64c13c356ff90ab614064a953298e7f496e7c0609e226f798e6c857968de721e3410f310b140a35d1011f1c0ba20ba657f930796fd5dc0b9cb05bfdedf859bbb5a5cbe150bc8c20964d6e2c3d623b73a72976aa5d299c9b060eb41f3010342533d0b7ee9c8583881cc7cd87239779d54b4ec2ce07a9c2720270cd461c1d683e603068466e4ae10d43959c8813d6c2f3ab81eb2181d9b0e0c973d4627d7e3c32f1d9b0eac074e27d763a673b290eb61d3c1f590e9d058c0f500d203056446ea91eb6c3a3216ce1e34f04d2034920f5837bbb67b9a60aa37819c3a3416705d0fdbeacd1e32983775503a2789855c8b8bcb9b3d702b30e6cd1e3318ccf2a64eeec6d4b19d7008919dd973331fda76662eb0ecbf72d1401ccdbb9cb298ef59fecb6597f9d42cfbdb6a3e86b6036321ffe69f74e1de257b396d9e6596bbb9f1385c369cbfe182dd3cce0e0dff4d1059101cf8e5ba815f2e180e7eedd06ef02b08c64170247eb9708f5f2ed96be715c40607f9f0cb9573c9e0d78e2d480dde810981b968af1d5c101abc231322739d3bb920337867a6038b7913884de603777fcc4ca0e9076e8553f998e52e8cf623877a13488ee48316e25a7ec05c7e9ca63781c050416061986bc140a932e6f371ba60a054b91a65aaa7e5c5e68f1228559ede0422136139884d76eee4767664414e2130da0e6ec7b6030b42cbcd5ade74c976ce20b9203397375d381797ad05e722d70e2d08ce0c22335da06577a1c85d27fc82a1b92bc45766967d086ed6e15ab0b92be67e4a96fd636cd9652db6ec8fcbfe27fc726136043764260437abb96b854f1fbad03de95fb0ec9d2cfb3d6da74fe1970b325b0b3221369c0ba7bb54f804d3f22eb9ec7f667f152cfb9f84d05a3861625e2607f3314368ab87f9572efbbfaec8e1e55742662dd064f06b480c7e0d81c1af1656f825e405b7f01292f3967f0b7e0d395f43602f21b416ce970bb0163afc1a221372b630e2c45909e7cdec0c85136d2599676b418692996ca5d373c1b600433d2dc337879ca62130b085f3be2984767a53086ac47fc2999633897815e25c34840696f048c2f9cc61a054e9e1afec70ae79cbdf6c81967126f2963f2d2da6deea3785ccb2ff6bacb9dfa45d10d12e6c99de045da05650f5ba832c408a63d69ceb7befe98feeea9efeca5dee12bb2bfd25df921ef96af98f7cbd3c50aaf4c2f7fed581dffd4b66afe9edf989fffd8b7a6b76495f1a9f444f7f6da5d4b7fceb8a1c583e852ba1bef42f9a6bc1af2954c4f275450e2efff2af29b118ca96a752cbd71539a8bee55fe70b7e559ab7fc5d30955ab6a8708579cb3f855f15e72d7f164ca59625fcd2f1963f0a37f1963f09bf8a78cb7fc4546a79f1abdabce57fc2af7a622ab5fcf06bf496bf88ebcc5bfe1e7e516ff987984a2d3b0ce22af3d6b55959d78d77467ab39ed6d63dc53d2dbb37753c9abb4fcbd29b15d73d2d4b182855de37e949c240a9d23e2dbd372bec7b5a7e6f565af6eff18ff4c88ebce4ca5bf52df9deaab94c6f805441b53d1b78a239f54f7408fdda02d60b8cf473c5667542ff0263142f3ba9b00c25283f710c85d21c93e698355792e620c6fa418cf47402c2509e293116ca7e2ad686f2c478949ef251dea752cb8ea13c312b437962e10ce589a968284f6ca686f2c4704ac72fef633f42ca33259653daa7d295574579625e0be5899d5c284fece585f2c46c56942796a36cfcea3ef6a3a33c53a478654ca7eca7e2a5c522e589b589f2c44a27ca136319294f2c06457962b8f4a7cf4279623a4ac7affbb11f1ee589dd92272692284faca544796234a5e589dd282d7ef9c77e54ca13fb9af2c4c692f2c45625e5897dd93c3156d94f9f529ec62ffb40a9d2f3baeb3cbcbab7c3a3e357ec47e97ff1e7adfab11fe52b555afc92e257ae5c714cbd551f2855c67e944d1fa8abb67633fda28b33288d82895c7d88ecd8acb04c45c74ee8951c853483327deaa466a7df4e16417bd0a7e0cc9667323d675964f014049e4cff0a6443c9de34b2c54efcca95cf92f0920f9bdf2b09ca22972f5ef2caf6eb7fefa47d2a1a808621cb1fb6d28140d9ace6252d7961ca99ef121a862cdf372d903fd2c53810b980851ec0e00322fb377d4bfa53f1014d941ecce58c2ca4180166bf5a81d120218225664f6eccb0a8c17e9ad034b215180b3d80012cca0b534e202c90ef5b2182a6517a1846d328297ed1075af244143e18620a3058d961d81418acbe9b4db23700058433a8a882942b574afaaa06ea20f7ce0bb065d9bfc9068c49bacf91cd0ed7239a75840f1df244275ba11f4489f0f529c5164fa19253da8fa5ca237a4795fd634c508ca6925c8f6896bfce107098627f18cd7a44f637e910b2ff8bfee8ada09236a1091540a1021a0e062bed57d092b4ac24cc9220035310210517e5142a3965fd58aaa453a874793f064359df923118cad71539d47fe1e02dff6acbfef65f57e470dfe2578fb7fc2f7e5d9183fd8a5fef2d7f8b75a8b7cc2f9bf43ceb9bd4469d50c41756d62063044010c334c548cb200e80c1c5134f74713301134a5ad23775727818acac47f44e8e2a03eaa0eaf609b7d6fbee7dffefbe776f077624bd58e49505fb7e5ffb3ddd5d6bdd76f3e048144025f5c9998c161995d0176b0ee990fafd9509960ee99efea543ea7553c9f85df0eff7f7fbfbe0f7a5effefdfe92fede0b92485742bdf2dffb67fa85102ecf34ebfb5ec67bcf9d653cefe909851adf77244c9bf579e4a539f4a968694ecd14e77a16501c91fbbb27a690bba7b9bf42b1453e35aee4fdeeaba5b8dabf220ddd77df4fe910da4f0dd07dbf4726e9be69a81d363bd2a4b6f6342569fe48d3ec9ef4f53d3209e9bd6f71064fbcc17b12014a4fc2e697495f4527404c216208587e421f4a9013b30252a0c2950c85da88963022830f252883d824fd473281c89ef7f68a3278e20d256c0291bd273d366ba64ffa2bce50ca94a49944cadc407192ef9dbcb2e95ff6cceeebf778677a3ed1846c3fe75ef22349d54a0184c0685bc05a6dad1489e90a30d3f30929f26a06a44f564a69c5691d40abfa5ac9befdce7e671f00e37d21dfd843ef74cfd33b3677df00a2dc7d04da65cbce6fb9a331c89d90dc3d157bda8910e4ee677aa773d7bdaac3e96a6d353840ab924685e5a647467a5619235758a60fb6cb434ab35961624cc10075884cb1596122c551484a87c8d850caf64dda836cff894eb6d8c929d337e9956cfa53520163fd2be857d1c93b1973855151b148c28cfc0090ea30d2d3883672f75e1f04396044fd386084068ae0fe9e7843c52277dfc98a925023d340cf24ca80526ba099e2244e9afde4e7cb4ee8957cbf1367a0671265e4aec33facf2cf2a7b252b1254644a3af12b57400b52910627f54aa666ada41924436dd2a42706a664ff2bded052e4eead68839f463021dfefee5bbcc17e7f634a73daacb8d29c7eff4b9a9ddb46f9327d7a1a1145064f36089192cbe60f1ab001cee60f2690628652ee89ec845eb9520553367f8270c60a8a6cfe10410106219b3f180842a6dfa20d3bcad0229b507ca045a65f6df86030fa5dedc6680205f966913d976d72fd0ee0f2c949cdf7412ad2d0d8acb9ffbec526a539263d3d00cbfdf6ad3843bf7f8f9b413237dc2c92dc19cc9a1b4769f1bfa4137ae5ca1503d8e4fa159b41978cd26234434dee9b4576f2a7734deea7e20d9da4fd5d9ca1febdf807ccb459263d399046fee9ecd8ec8f52b34d76d226374973257fc04c3fe8d656036c192ae9630d6dd824ad28fb39ba8ed28aad747fad19b9bb4dd0e9a4903b2faca4674a522ae48eec1ebcded5d28eb6add6e47d4f93f76bfd1e073d83397267f076a1175ef28a321819e95bb1c8489ffea5976463322b9029ee7c49da46a6786c568eec38a802d520eb560b0a8cf56dcd32b8309a9fad52cbfd61ffaa2de9e40c05c6fa14064260b44f47900619edefc8f48b1f54911f8755a407dc2d495f1a6ae4cba3774c56d775df64cd38bdd361ef7f3ad2f774d7794f7b9af67f0f7e242591f53f9cde7152afe40e3b27f58a139bdc3dd8a4f794343b7b6fd6ec7d4f53b262b33eed30a53c3c6cfad3a662017afca938833b584519beb001454e5bdace35f48ec9c2a10177c7a4b501f44ee7fb3a44f93e90767949c7b0b49655d9d4c932dded7fd0fba94843b728437f156ff01bc40edf507f66d53bf747555ef50e3d6352e4fba30aec489a0510f482ae23eb579186eeeb53d186da910d1ba2fd69eecb023cd9d07de7df79dfefde7f7fddaf477651ea0776a5edbd47734f7f38c9f7f7045611043d34c0c5e18354f4bc77fff28395946952c6bfc907abf7f53fd29ba1dffb8fec771bfabdffbcefe9fb4fba4b227dae237fbadc3da92391f7bbee7bd0c99f30fb77a4d9f7ddacd93f4c290f9fe1be77d80ccadd7ba4e99fe47bef417f12fe939f2e83a4ff0973e9c1d0c33024f9fb7dd0868acba4074bdf3b6976fefe7ee9beff53510041998429e5f199357fdfe20cf73fecdfe35e7749b0821e3ad92c7f8bc752fdb22802d7bf3ad9076d3f58455a512359330daa3507b0f4e0e9824f9f7ea4ef75328944ae3efa7448cd947c9aa393e95f1bee971e2c9166502e7d8725b2f4b7a74b24cd552479dfa966706c16e9bff7be8a3294b019e4912b12095e324acd668d523389f497a4d976753739f12c3383e7ef3ffc34877ecd9724e124de7f5f2269b6a2938f00dec9b2e857d101ddd32fcd50f3d79132ddefc8a0479ade7f246c0665d297c88f3469a8b0eca49edff77889ac4f22fb4dfb1d7652f3c5415eb56d80029001195276e084145c9c250d8708e99d2a84a777bc5cffebe354204f4fff7e271b3026f1cf91cd5c1fa47488a9936fd0ada194efb56f3a3681b2bf49a242c8175bb1ff94b47fc905b0d0832eae94f49d345fd9cdee95043591bd3781f27d4a5da09405939e543a907f6af6f0129a4676e257aee40e5b79d1070aca22575a0c335ff962d3df24e5fe1e773247066b6849fa547c000d4356d21c99e2747b8b0182340cf2180ad2dea9dddfc2683fc6e4441565702c64b4a25b5186fa55bcd89ebe4ce9835d152d96a1bfd2809e99fe4787dca70f5e20cdf223b24e7d1d777defcf7217e9bd59ddfb0ba1439ee674ef4f22c76e75ff915fb7ba1f7bc77cc9beea56f7fe2ba727146d641348f67fa1436af6bf64cda047d266754ff3253bd3736685fd9ea6151536abbffbfab57b19fb357796b14fcf1909323da160a3fbeb61daacae664bda66519a43df813ae876af01d240f32ad353680455a889bc6a56256ba65d1c8500bb48bf667ace4a9057cd129dd84c698e937a2593684efbf7748bf42b5933259dd42b3238b6e44773fa631030d253e8886c863924d1213477ff478794323d856079d52c54a6e71436f2ca8695ac6fcaf49c0284bcb2de955e136d16f55847f1ee6efffaddaadee9cf56f2c77f3ccf50df49bd72e5ca159bebdb5cb1cc0dfef5fdab756cd6af6780204845bfdf3d783b1287f1de5f403f3683b23f50e94ec506d86ffc0a2a5ffe5db6475af21554ba2b5470660e9b85ac327c2a2b5b3dbd2b57aae0831ed480099a142f06a4049f4a98041e902104286a64947d7a627880072b28e2066b48f1eee9adee1214de139e135e131e131e08bc0f78de7b1ef83af071e05be2dbc0a7c4a781cf3ef5d6f7dfd3243280c4111830a20aedd15f9f52dae30a296f113ae5a5c22aafd097774af75456e595427b9ceeeaf0942952ea95b27b2a5f7987a03dfaa98ce52582f6e8ffbed3c3e6aaff42418738a157f28582e6f4f75f98bb3a4c69abfec5e637e691b6cc555eb50de551bf93657a033413d44035c8dad70148714c1e38202a11bdd5a33e62a1466d548b3a561bf0d5a33ea24ffbd643f4a8d67a58b5512dea589575ad89eaad765135aa1ea3b52eaa46d5633574ad89ea4d488db1fad64340d45a8dd5a34a446f5f1f75ac1651a3551bf550add12356df9aa8de6a4c48d76849eaa26a44ebd0dd5134b4e3f4187d1c6c911bf9d08d75313f72a27b646b77c816b9910fdd5817cb79d135ba4436666f7ee444f7c8d6ee90d1bddd226be4353b746bf6c8120df9edd6ec91251af2dbbddd226be4353be445d7e812d998bd79aba9cb8dd9a2dc6e945bf4a1dc5d0c7587586ab9fd28b71375479728656fd6af51ee5b64ed50edde50b4d479f3d2b2f5a63d0a2d9148bdc5c29b7ec33b8cbaa14c9fd5a9ba37ca0d16918c3c23d2adeb584022d21109bce57ea3dc5fc2af92115864d419916eb55c8a91bea3ae96fb8b729348dded33f256d3a7242252ac547be98ac0988a3454ba0de5460de57ed250e9067644a52112112956aa754560ac14237d475da928d31a2318231558542219a54837d2670473538144a5a314a9f61d958aba5a29962a22c56ab9c158574494bbe64943182855bae54695769cdeea8e28f77fee024a95a0eac8ab754724d5edbbd1ff192ff6d55c542daa23afd6a96edfcd5bded057d4723b79462d4333f8e5ddbcd867d44234b2c8ac3e221797984b4bcd23f28e4c2d319a96a32f26f30dbd5a62deeaa32ff60d799f4baca5e67947de57d4e219b50cd1dc72af8ebc5a77f4cd10ad5432b7dc5eac367333b50cc91879432e5fd14ccc54f3883ea21ccbbd6a393ac960fac55ebca2dc9887ec3372570af7ef98b98b65c790bb50188fe3eaa5e808d55294dba596bb7f4791bbc2706534f34264e4b26a311af16bf552f472d45254a3b98b8453b7dc2f432e43a415516e975bee9511d18bd1aaa8c588c85d20967171214add723fb81a72712932bdc45e6a32ab988b4bd14beca5b68ab9ac6a2e2fb7d5908b91b7faf632e432b42272b9ed38dd05942abb45a614d6c421d10824028f74b0496f35a599f0f6221289472ca5a3f051f815d6c421236f351178c40236690e2634128b4cb11ab0160efd0c7e853791482c1dad804d6aa4c2e19158330da1c05b48e422c660c49b89c805340a8bc498081a8545e19158330d81b79028148b4c31b016b6b04971428854c8c1c5a6cef7596c0af13cc7263d3b5cea3e079bb446835fafaae3554b1d391e3277d55207362bac62b3c67860b3cab2b963680736eb502e913b623b641eb903a6e388d491f356fd811859a051831c0a886a434660ac397042810950f862a8747423128f86bc094657b480821a4535a322b1661a0a89706be4c638030d314af0161e3d139cc86228033d30438cb586c4388209a124d44a5a76a5eec55b0d5c5083260c818123884a5a7edf9b262213cd8a1935887da003a80f8ba830c6141ba8610613252d3dd0fbd2293694fbc722d15494fb74cbcdc2f2a721145138d64253ed742242158d37d3ed74742a42d5462393d1183bd550b7f1c874340e9d6aa8db78643a1a874e45a8da6864321a63272254d17833dd4e47deea21d45833d54e46a7186a682c32159d6e204b0beae82bea8e5c6aa9162354d167d47946299721d5ed23ea6e2f432e4437976e35947b55cb4d5d8a50ff127ba9b9ac622f1e45a417f8f555fad2e7bcc4177760f3c18acd5529874791e8b8a8df235b36b275fbc8168e6c1991ad9cb77270022eb8b8010c8a624537235a5b82084ca0028b2a6a43b5dbe9a83261850551a8620944372294516c08e7161f00030c2d4a93d1a9080346882153e224828c79aae532303045067c200503252d458cba515903b7041352382a69f98d47b983c46a4f200216246043ca38c4831d84c08a16209895b40453452c462c43aad8489462396221520da162a95b2ac6a2224219a58c52432c35d451ea28c57253b1c4524729969b8a2596324a0db1d454a8a3d42d15635111a18c522c472c44aa21542c55c462c432a48a8d44a6235591d1d01813876a2c472c445e51ca888528bc81b1dca9a1144b0d75943b5415e54e1979aa1733759412532f4fcb2f45949b8525f5b444992cb7979094ee855862584ae76a94dd0bc1baa9f04b883755b55c5fc72cf524ac6316ea781da81dbf83c4f2244cbdc5e379a85a4f4b21d2ab70ceb7c80b8c15b75e070e95c24252c017024a95a94fbd100b0b8b50f852c0177aa13e861c16220c85482f05ac4f4ba114d651f3560b41224109ca418ca68e9a8e9bbb5870bf0e9cbb50fd3afa75d8dc45c2271d35a05419434482b9d56462323798a2dc2c314530463246304430473964626a304331b119992319a298a118a353cc508c914c114ccc06cfc46086626231379923169621928121823992198aa9c9c4646e3045314530463144314732356ff50d6606e616e372945ba6961ba60663b48a297289c9dc52452f3047b9636a3243b9658c60886231b7dc3244b9658e52303331433078156324337aabbe4c516ed54c2c378689e57e1d3377b1a0c61c6c7ee18a07364712de81cd1588a9b7cc1d67eed781cdef6f913b86684ebf10a3d9b2e57eb305cbfde68ea19bcde6f6436f64335453cbd9183d514d910d51cdcde6f6436f6433545333b239aaf9239ba21a231ba327aa29b221aab9e16a86be888cd9d41c7dec6be4504dcc26f6b1af914335319b58cdd01791319b9a239ba39a3fb229aa290dbddc72ff908b11a906de44a295910b516e12f8472f465f918bcd51ee1aa2dc6051ee58ee9aa3dc2f9b5aee9aa1dc2f1d1f10c1011e8451c51a2a98ff58ee178d81182ae8801525a40021e58285f8da0abf841c118518430851c100cbcb891c7a9dce4063064b98912ba2b47921664c9b58888528590f942a5d8872df8815e5fef046d1dfa8b04509942a85c039c2359228f7cb8d211ca29993e996fbc9229ca2dc333846b96f8e72e3d78d18b2d682531b63b9ff848d72dfdc72b36eb973e00ce5be31ca4ddef0110bbf706e39f00b6708077edddcc02f1207e3a317597be1d45e38b117bec137b717bebdc8229c221c8c6f708e708d24ba3144621ca21b44376245371effcd0b36ba376b62378a8862457f23ba317454232aba39c2b915e1d470623737a31a3d829094db0e7ec045494bb0f426ce0d0a6d50012b025645494b95f826ce90875144042760506841f9bd796354a3a2c6138c58e34a494b1b0c94c2473a58411420188212a6206fb9bf1573d70be62e107ca2dcb5dc44249aa3dc3343b967e0af8672df14e556d10ce53622cacd825f98e8a64673343414cb7d434413036fb9bf28f70abff0d04d110dcd0c514be6aea3dc37433347b959686a33b517a3dc3731a3dcff421addc4668c686af0cc8d3cba199a39a2a9cdd4f00d114d8ce636539a2d610c2b78e08223a21a11510c14c010a3073f40c368a86888265644736c4041a886c4941b8e11dd0ccd1ccdcc408b2db428e208073435f2a8c2400944c0c086041094b464c12f16ee4dd2c8c2a8d0a620a20948bce84d6cc485210523f8e0096094b40ced8bd89c31a25eace00952c87580093f286949ba5fc2e6cc2d771351f40129ae10e1849296207eb16e40a9b2247e5e37847a1258c271848308e5f22c2899191c371afcca31835f398ebcd5319855f3563f0c7eddb879ab6b2ff89563c805bf582d38870abf5844de6a2316fcc25184c2af1c376ff58f38472cc4af1c35127eb18640fcba51c22f1c47deea3f611c44deea17f10b8791b7fa3ffcca51e4ad7e0fbf58316ff577f88563c85bfd268c234653941bc7506e1c46b98b72b362b971c47213e5c67194bb969b3594fb287751ee58ee1cb7dc2ca2dc46b9c53771d472e718ca9dc32837ab28f78d5b6e31c43b8a70dc72efa011e526e11d44398e72ef98b16ab9770cdda8e5ae6fee18cafdac9bb370eea2e5c5e65b6cae4ac7e6984dd62df3c0657a13f401dd0459af4da0018eddeadbedf5ba373dfd0fcb29548494df934a6028aabee5e97f6e3a8da814cbcb94b1aa6a71f9295456e5cb4fa13296313f85ca57c2fc6a0a159d520677acf2d21ef5a750f9d2d21ef5290d529f7e0cd9427bd4872155b447fd1599a23deabf902eb4477d17f285f6a8df42ae688ffa2a1286f6a89f223fdaa33e0be9d11ef5512489f6a83f9225daa3fe8904698ffa2632a43dea8b640ced513f2465688ffa2039437bd42f9134b4477d1259437bd4ff481bdaa3be479a688ffa1d29d21ef52f79a23dea5b72a43dea3b89a23dea37c9427bd4078aa96e03298e49bbb0e59ed15c999f29eb02e313165ee7a990e73d50aaf47bffe575a9f4af6bfa1cd44bb12f843261214a2421d34bb117189dd4dc13a339feb4143291b01028214cf583184d7ade3c2c24c57ba1b76fdf2f16baf715fb5176f805942afb6cda1ddb84854c2613d8b69a3b99fa6c5ab58d4d5c282c847a29de0ba13ec4656f5805f1ab6daf9af396d75f41a8f4523c2c84947aa5bca2c7d352e8c37fc1a43ef6c3e55f1fe9f2a5d5b7e057f85ecb93f0cbf428d2e73cd1f91e4f221b4736cc5bb32ad3217b46ceb2c31c564b6411927e9df356e75ad6b2ea9138903d3064d3aa8de6ce9aabb80afbb6c16655a6d3b896551ab5d1cea148159bdfb36b5a019bab7a76d45b39d81c711e36bfdc737358f6ef415e60cca17996c88ad77661965672af75f62f4e96fded4972bff8756daf0b7b599ae35c7676d8e6b2df7fcdb2bfc9961df52f58f6a765bf57664fcff9acc85d5e0be95f30bffaf1635ee6633f4aaf05b7fcebfbd4b3fccbffc77e94227e81f8e5825f2df8d5f2debb3cf8e2abf0eb845f217e91f08bf4f6c33fbdea3bfcbaf865c22f147ea1bef4a6bfdfbdbf4e47de1c7967a4459116463a8dec642fcbfe2079cf9733fbbb9036c792cbfe2da49d79a4dbbe942dfbabc80e46c2b2ff89bcb4984bcbfe216971232efb93482b23fdb4b2ecbf22fdac25a012827303474ee06c309a6c060413908182213ef084e770a78d2605241861086d0ce1603737bb348bf333080ad048638b2c9c286969dfb4b2ee084fd002065150c34a494b93e9cd4e46031678a185191d408305252d51282148f7b4411630326450f06056d2b2845fb11f250a0bd1e59c700426da9082152b252d3d2cc4759b5349a30d1b0bbaa095b4b4f865c242a08052a5c9ceb213b9ebf540a9d296fe4b76b52a8d23156ca510d463c895e6c702798131a7710ee9246785a779050ca573c89a3b88f1a481d6c29c4eb8ecb9d3fb70dfccbe68cbeec13c9beacb7db33fe15787cb9d1f4e664b1f9ed9bf24cbfe1e2ebb25c13e9a885f9d07b37db9efd479332f1743fa4e8f96fd579df8c140d2ecb379b46ef6fa48b3cfe62defbc999723c9beae845f9eccc391609fed72de5992891f6ec48d30cfe6cd4a5f4eb489b211673f9a478275a73713bddcf89d96d4d15a3c1af8c1569f6d24cdbad979ebc1b9eb75735708966c245a58821d85200e61c2190c7896c0928c7486b4928d440b65b05c982acd421a680b6dd93f973d04cf5249463a8ddc95c2b11fa50c0957a2b984a70b0803713218949172a513cc853650e62d27e54a602eb49170255a788220ae340b6920c95622d14a3018590b2d8cc191ce92ac65169eb652ee44b29566212d04411809577af9d59ba533250386b637c15c4b8ea7a50abf09ca4ef8e5c7cc870c9c9d6cd91f97fdf391f33183094120b81f381c1fb410f7f283f601c9fdc8058185b91f301c20b01f3440643e4e11c6e3c70f1910998f5384fde0817fc882c0c2dc0f20b01fa78f10f70348ee47ce47ce470803f203f763e64306ce6c3e70def21c2b134dc489b613ec645b9d64a653cc9d70e2793a994493381b61279a4966c29966a26c949972a7d3341365a3cc943b9de26c849d68269909773a99449ae9243389b9134e3c4d3411279e60271b29279a6827d8c926dac49ce93cc94e38f134c14ca7d92927d24c32d38936c2c46c9a65533e9d799489b27e0141f05333161b0b6c35e25034100465d9594e542e35da503319fc4ab1d858461c2dc54243e170c61325fbc7af94ec448d36d48c25c73243d964461a0af6c28263419de36c64c1b1a0ce7136b2b0ccbce5a811054bc1586828dc78a264232e3563b1b1c05034d46cb4a5642c272a87c2a164e39982b1d05866281b0a36d2587299c682cb452cb27ca2ce5c1b73e38c7601cbb10c53d954b014ad65d692cbb3169a0aa792b9c052a7caa682a5682db3965c1e7291b59caa5ccaa69ab5d0543895cc05963ab32c857399b5d854b41698ea4ce55c682db2169cea4ce55c682db2165c0ae7326bb1a9682d301759cba9caa56caa598ad6926b99a96c2a984a963a5d602d34154e9553cd52361759cbd9626b81a968299ccbac07e742eb316ac1f5e45a643d47aab3e796cad134b2494fda2dfbf714f5d05e702f329773458381f5d856e74bee65e6628391bde05e642ee78a0603eba9c1cc56b615cc05f7425b9d2fb997998b0d46d673bae460682bdccbb992bdd85e6030e76ab6cabdd85e6030e76ab6cab9e460682bdccbb992c1cc56b615cc05f742733961602bda0bee45f63273b1c1c856e74b6e057ba1b9e060662bdb0ab792bd9c2e39185a8f0ce6ec195ae57a66ab590fd18bad27f602f391cd1870672cfbc76014036e462673c6e4606c31b31ed88c8c4d060613439b91c99c3139185bcc2c86a3199a0c4e46061373cec8d864603031b4187233a74c4e6616038bb1cdd8666032b418590c6ec6360393a1c5c8627033a74c4e6616038b99a1c9c8c0e46270d8666430e72a2607ce6268323898d9ca06c26264a9130626b7a2c9e062645232b39918db2a0696c199f3b4e1186a333331d86468aca7250b8ee186cb1f8ea1284616832cfb9b311465ff1886dc2573d7f7d5c068682f33b81c35369b590c3477e1b2d7c868ce1b1bda4c8ec4af1a180d6d0667b39911b98bb4395f6a7235b38f06466323bf06bf6a703534276d2617c3cc5d24cd0d1a998d0d46d2e06a683434399a990daee6b491d1e4686636b89ad3464623b3b1d9c0686a68674dae664603a3b179730677c366865363bb81d1684e9a376772376c683835b81bd94dcd8ca4b13d0dec86cd8953937b5ad6bc6903cb374f4bfc660d2dc79b3438994db477e88902364cb673b8b80127b0b993bc1e14a0317e4e3241cd4d60734722892933e0000dca38c1124ac05f68a088ffae77bddbddae6f0e1607db490607ae7f42e01736d880b78e101d203d3a26d882e49d84ea6332f5e208217c55d84e8fe1beb08192f5b298793d5910795e4706e0886ed417541cf504a08788d29c01a34b27c6184d997611461b1616da606075603098949e2c609ee75858d12d8a826e51c7628b6e51cf009dc2133e90042a4be0808922905834814303726896edf094eea01478a00828aea09d400b2294fdb94f2c861adb563db4a3974c6130abc2e6538cb125b0c8410e5450461b603861a302120994a04940c21544452c100208c4a829e20a120962475e28a10a613871051551d0983152c18b245ed0060d72a08411501c41682686048e4ccf122c810a50c462347592f8410952d0a850820a424042e68b22ce98f902b60111e8b8ebfcc026d34182d73a42748008c9e93801bc10a2756e3dcff35c3d579cdea2d95a77e974d7dd5d821fe46eeffbffc3b4593a3a3d2598795e4706a05915891c37e08107ce08630c32c288c9ed051751e01a7a5830ba4eef00f96facc107376fd12e706046be99d67c80836cd2f3abdd0e7eb03949bfbf1976f7decefdbfd15b78459a63ee3fc00d35a498c2461455a240a3b4fd60a5224cee692086c802045ec4e00461240126f78fe2e7dafd05855d11822f8cd08413252857d91c2b12b835ba22745fa6a70950e05d80f4572b53955b18c3665151060fb2b57e0064d1db0f7295c00bdcbb2d0e42b0de39b0d090801538f7be96c5a36a319ad4e6404c21b99e32f5a20829d9cbd48b2d5c904d16ce0a5bd77d2529cdf198004ff6641243f096487786efa6586ebd8da239f6d2976cdfea646b5fc73e106badb55627db7b479a63ef8bbdf75e6cdefbb909d775d76277ebddd54a736e479f75ff7ebe7f1fe7fe773fbc63be7defe7db3de8617bd8557cbdd6441a58b24787b0e4db755d87cdaec3de7d1db0e55a23c1994f0ecbd58acda2016aad569cecd11c7fb056183a647ad99f7a262b536cd61ae4d5ccaf78d0b2b9cafeb466062c9b5f76121065ff1993c5233be85ebfd6e0865dfb7b4573fc2b36bb7f4587d8f787a143eafbd72fe890fa05cda94fdfc5c64ebe5cfb3d3ae4f6a08a3472ad65fbe0a9bbad5bb2d6684e677a32d11c7f91e6f88734c7ffd6128cf424c150be5f8d7ac7ac6864ff8aab69f4ce4bf61f6bd95fd53b9d7d04b76cae705eb219b2644a73d0a04358b23f98bba4596b909990b3061b55b4a1d66648a3a6b3420f277c128ca0c6126ea8341882016a2db424cdd5ca48bf5aa143a0d429b95aa139f48740a95fd01cfa950a2af2c5353a040abd41a634c7bec5a67d4a836c71ad55da48334ba65f6bd5059ae9d71a60931363ad6573cc564697eaeaa98207b4457baab05116cdfeaaea424f15635016ea4e4f15675016cd664df68f314131d614649a4d16182540ea33fa9bdf59c599ad6d4bdfbea53876870669a6568c11c79538be88e2388eff926223e2584c293efdbfa3885f4062cb83e303913ef5f4675858bc2b7e6a3ebda80adf947a20d28ac5f39145e65f4024bf0f3e7d158c8ce7551996967f01a9de1f88f42618164f4c3dd0f832f88af61e88f41e63ef9b9e4aa97cc1af1813bee27ba0fb1e0c8b4ce981c437c5b8e01750cb9b42d57da0b1e55bf0152853487aa0f1552caaee81467c45c5332c28ac1af115276cc2a38871fa81c007f11525fc02227dd8e22b3aa08bafc0570085b69abc2380d6617849b18929ddfe8b4a57fa3bb19162e3e5a074fca2622afd632ef6da7f49b1711c8b29fde9ffb5588acdfd584c19e3dd570a4da38ae5e9cf78d7bbaf149a58c6a7bfba24cfbbaf148e0fd4a2ba1e48f2ee2b99c2a73fd25c8f243e90eac119efbef0815abe64854606e681ecfbaf56588a4de73230588a8d7f0fd442a3202b6762ae47024f0fa47af15f544aa50c966273e5ca95320666855fb198f205bf80ae47faef5f40e097fe05247ef82fa0d39b461697076a79d5bf80babf1e09144fa89607527dea5f40df5f8f048aa7d403a91ef52fa0d2df7f0101999ef42fa0f1c17f01b1bcf82f2097473d90ea4fff0242bdff0b28f5ddbf80ec971ea8e53f1712a783f4b790b683d45791df41fa53e4d741eab390331da41f45861da4fe48ae3a48ff891c3b487d13a9ea20fd22a9ea20f54372ec20fd20b9ea20f54b64d841fa49e44c07a941fa3df23b48fd8eb41da4ff92381d24487d276907e90792a92423f48ef7147c4a7fa6777a677cfa38bdc3830ea9d98959c7d164ba17044924cfebb63f5dee9ee59d74827a2acad0e1274e9ccc308393d33b11dfc90ddf49e99d7cefe47ef737d85cb9f282cc824d8b9dd84489c9286c7a39c88e9dd8984eea952831f9f43d3d9eb0f9e29b446cce84d85c951e2c6153f53d69ecdeebb019de6fd2890d36a3c4648bcd2831d9b1a9c4cb41ee377fbadc388a4bae1887a5da19f8eea279fa353471973ffd3ae42e9ba75f4f77d512e9e9f7e02e1c4fbfcadc25f3f46b91bb664ea6a75fc45de4d3af3177854fbfd2dc85a34a3dfd06b88be5e95798bb723cfd4ae4aef1e9eae6e903e12e97a75f67eec231d8fc72ccbf90375888c78e5fe15b488c856ef0df78149983f539bef52249e67ccbaff0208983856e908ff31f89030be5b43c8ff748192c9403c7ebf88e9cc1f99b27ff92345848e669be491bace35b8fe3614821219b9fa16715b21cf32a1e658dcdd3fc8914b2c155769442e2dbbccc9764701553f93f838560fef434b84a4b29e4bdccaf665ef5a54f914233aaa77913cd9b5e85ab7829f4f2a727914234b84a4e29847a1ad397de9242265ce58552087c9b12ae32530a955ee6677015552934f3f65948a11d2be02a30a5d0f7329f83ab7ca5d0ccf73b0f5ca59642aaa7f91db84a570a99dee65b70159652a8e54fef420ae9c055644aa199bf2d5c05a7145afde9591f92422c5ca5540ab1e4c0554ea550f8368f035711520a752ff32329244528a8bc81abe4288566de9fc4555aa590cb9f484f3efe4a0ae1e02a5d0a8d4ff3528482ca1b5c058652e8f4365888a442fdf8556a69f31857719542a497c142325fa596e47dfbfea4d00c16aa52cb99b7297d0d29947a1a2c3403f3ab7f79976ff92ab594c142424242a737bdf8e183dfe33124d0996148ea2dfa2b92e52dfa2f240edea2ef4202e12dfa2d649d798bbe8afcbc453f45ea788b3e0bd9006fd1479115e62dfa235989bc45ff448edea26f2285788bbe4816f116fd90ac316fd107c94af316fd12b9f2167d12d9e32dfa1fd983b7e87b6495798b7e47d6226fd1bfe47b8bbe256bf0167d279b788b7e9375c85bf42b594f6fd1075205552018ffaaa8b16146ae3f566a7365038c5cdfb6ab550200c116467ff0647ed4c3e187cda0fcdd403271c8e09791c1a720f8e08398d29cfa9195249136d032b20db48b5c3f34009542ae1fda40819067a068e48a9dd42bb954335822a92803e98a0308ca94f200bf922649aa24cd32509609fe6703f8b5fbcf0020ae58a67e0953cafa9e8a3790beda4cf23cffcec16a9db0389d0f0491a00a4790a008122c6185122e5f5061041b6e80cee004038a26d670c2951eb47c51051737c8a1011170c9f4b432826c7eb61d086713a6b6d6daefbbb250488f101e2bc45d2c9290db8d56883059128bc5d3ac2aa5ebbaae4bc195dce11e21cde2c1d3138030d3da163ac837532f64f084ed1aa13452f3436573cc804aa5a2623041092c8a500257823254a428a6b451850bb028e303687c91f2810882d0d11a29062511e020ccb48b299cb84580b45231521b0eeeeab985b9bf37c71819f7bb5935d837e9198066d5f772685665e5ee2e3fdc001c72f070874d1fdddd3afd45ad05b91b637fc7336f7ea28ebbc2ae2218ebd3fef218b923d56e03b8cf0b15a8c0f690705dd7759dbb2ec641cc4050094e2380b1032118b1022b5834f08405adb5f7ebfb3575532125b7f51c7a6ac8a1011110c199cdcf7aa7053de1e8d9e32ed2159e496b9e675f073c410c6e03a82d8766e1e0aeeeebdbef71578771e88640798182357068566d5b0e3d9fd7e038e4d03b35d76f40047aa79a6004549a38030a35c2e8a26c54ee1ad42077eea7abdcd363a6b520e4b2a983bb7ecd60e275dcd5e39903cd0328a618bab151460ca250f67fbd33e6fed18adc4f0516b9b1a94487454f172d75be7784989ff9657ae6fa3d01a86100aa4c4f115891c14cbb98a28a6c7e9d82959255765fe5a0f33136516bc211e0e97bb023cd247d67f84a9af57e3593dcef66b86f2b6976ef3de891b4561949a4af4dea3e89cb401f6c51060f0b19ab57451bbaafd84ce2dfdf7d12ef3a32c97dfbe089f60e2ee957d19f8a177f415ff53156f43af1acc7f9f1ed087e3c657a4e715a35408a535d08859e80ff3a3a4084f0d06f4aca8c1c145be0c430c3e87446210507c0d701dffc401004fffbf12231f3441537508209518871854905447ce0759a0562b36690440ad101d22c9d775709eb74d95465fb54829e103201194269b021051e885ff8c0e80b1524a1f3e9006135ab7e47e290df2c9d5c5f0788101e1d20dd0a339d010872d9d4c9b7fb008be52e21a68e0a482da447088f152015dd141fb046b2ee6cd21b28e12e99d68400cb36d3730a0e8401521c4a6bae55b7ead3ee4d9b69e8a1bfbffd7aa7b1bf477e24ed56ffadd53eb514c7bde2c06bf5ecb69201521c93da72fd2a1b4d21f985b88b65dfbca9f9400adf3f1d52f3b32ea973df64651e98b2dc25049b5fa61e36290e727df326771fe66e95bb27a90b04a02cd4efa6a892bbb71f3695e06456fd9ac448b3109eb05d2c6fd577acd3acfaa62ad7992c24d717c2533f00bdd3358c37999e521021fb20dbdc06a74cbdb0a28d76d16e7dcd7201298e39f2f084930c1b1036800432ca309b63a6abfefad47ebde3ef8d79e45a3d50843da2081794910311249102f08b2223c44c4f29c0c85fa65d70a183eea7b97a75991baa14a0b55ddf6ecfb33bd63defbbcebbfdd9aeebdaee5877efaeebaedf6e9dcc6a162d79fd75f7ed263589d42452933cfb9938b9f45fdb9defebbaaedfe7a5d277dd4f734a5fa98ca5ff9a557ada3b6dbbfb767ffd7dfd7dfd956cc9765de7b60bbfbfeeed76c7da76c1fd36eebec7ef4f67eb6edf7477777777ff42da3ba490f68ebb7b09b49d6d7777af5441d05a6b4153288aa1093c954612ea63f1529deab658177fe9158cbbc798c4102c91be930986e6d0bfd7bb6de7dd667ff7a2777756fc4c26daacce766dda299d42da3b5dd7752dda1deb2168aaf41482f64b3f8a32589f6916ad6358a98c1527d39fa1de675ad11cfa1dfebcbd6df6b69ddd5a6bad35c3dc5577dbb9fdb6b6adfd7ed05a6bdbda6bbbafbd7deded6b6fdfeeebf1eeb63bd6db05778f347f6cf6effa4d6b9b7af67e97644976c7bab5f65a6badeddab3d75a7badb5b7862780437a680e7d1e2138bf52855f6d176a1df2e1e000e1d12cfa2c77777777771cefaedbbbceddbfce348b7eef3df8dd953a5217865d187661d82cd2f4effff1eccf93bdb73bd6495d472a594b02c2a359ded721c6faac6679ffcdf21e0ceb8cbbbb775dcfd8079d34ed8e75d2aa599ebbbbbbbbaf9ae57de9c1aedeb6eeb66fedbeee7aa67eb3529ae366bf3fd85dd795da85ae2b755d49d52cefddddeeb877ed42d775d8f3196a1642733c92edde3ee824dbddaeb3dd75ef3adb5df7ae2b79ed91a0f79beeeeeeeeeedebde9eede757bf7a6bb7bd7a6129edcefbd776fbabb77dd2b73ccd45a8bed8ef576a17eeeb531f5f76f7f03f82731bf5cebdb5cadf7edbeba77f83ea543ec9bddd3ee763458770ad6120cb0b3d8fcb2f5af542a954a25fb4e22cdfa16f73425ebf766adb57edff7d55aeff7e119faa3577a6badb5d67adfacb5d67b6fadf7cd5a6bbdf7d67adfacb5d67b6f35eb5fbb73df1fac9edb1deb9defe7f7fbfee87b05eba5d9e9d36679e6079a3f37d7a75f555d013ff092e697af7f252dee205b0dc0c3c3b30447094ef6ef556eafe44fe39457d4b75f1da7bd6b18359780fefdfe2417a43bf5b363d3e6b63bd6dbaf5c69173adf9c845eb9922bed9d6b9fd221fee6fd4b5622c69aefdfee9f8e21d7f7ea4100298ed9c9e890184996fb4d948b7acbbc43b9df84c9f42b755d98b7ba5e60f4bea76b253f92d21c539cc126d7f74827def7347f1e59737d52fb3fd24af7774679ba283a29ba29ba107422e8a8189f8a2d5156284fcc12519e585805e589a9464079623324a03c311c2b284f8cc7bd82f29480f2c43e2c284f6ca4519ed82a0bca137b13509efe7b02ca3325a653b23c155ba650407962560bca130b534079622a15509ed84c11e589e1ac80f2c4785c16509e16509ed8b705e5898d5c509ed8ca059427f62f287d8fb83d29b624c5bb72e58a7971292cc5c3523cefa92785ea800b287c524aff8a0129e122622847fc7ac148f855440c65885f4156c0a088d44bf1a4783f854a5886a4ee5f56559642122a248dfd2166f9501465fe28d28ff8e5b8930a8fb2f44108b12096450d5070a57c151143d9e11750119a206388e8b681528ac782bb1193e0ccbf625efa67dd78f3383035dfaab26bd4bf70f06bfc1bacf3fa170e34e0cfe097c55918f5d9a80a6d32af6f2bd5e031e655263b13ffd54d835fe3cfe02645aa8c0a8fb2fb137ed99ccc692debd1c1c948630c4eb98cfd3418fc22fd0a579ab77ae6adb6d9d9d933589d852e98f4af1890d224f6776dc1afd2ab70cde1da666b5a3d69381d7001051b58c2afc64da11296260cf6c78094207e9170e71a96eba220832784a1850d86c0d5212188a0083db002d4344041164ae4600a4c94207658ce69f6c4595b4e6671b0596cccc968a78c3453923ea5aca8c4a7159926939239a50c8d08c960104001c3160030301c1a8e85a924c8b57a14000c639e8266581d09a324cf7230658c318400180000000100d2244c00142cf24abce15a9803189447569611411e5b1521c43bf29ac26cd9104517f3c3e9ede2bbc58b08146fd43af3de03e14f33bf357466b7fbb947c4cf0545ff9a81548d27138253ba43292dd522f420b9d0ffdf677e8a0d14ad57048680449dcfb89659f916930624298249b123195aa502d6e0df43268b3e8a0807f63005313d8bf95c50e65935c0f062a5e7c136094ad8108a688be005869c939a5addd0360684cc4e17546158767bf69ae3eb74267c303d5ad19777e6bbd36134b2c8997f48eac8710a42f38e939cbf82405d0178e3bc81dc283d629f8448068d814f67b7449c9575a1c8dfcc910f409d50bb9b7a2ed8f6dc84f4315ec0758ffab30f75a5461635a21bc760c988554799fc4c5e9d69da55d69d4f55569efc6b627e6cf0b19e3c190aafacf955ea0e990247c3e2c74f4ea24c5dd0efba999c07f6478cc3b6ae5e3e55d81f24c6717d06e8fbc14b9b17c7bd87a9135ea0e7b00f6b56e999b0f04c60922bc46ae085bf94413681092f0e233a2dbc0a71d4314f4ddaca94228847fda589ae6b14bd52b1be1c30a98b1c678c4da667dfc2b0c40904b2d21b4d926ef6c79152ad14f702cdd8e0cfc6d9da0e6eb35b89a3f1f2a5d560404f950cb4c2fd7abb82586c920cc782457d2abbcb6f2204a4699c63913753ea30b33b85136b666bfcf18add130a341899cdd9a5a1990cb28f7ed124f2376ac1a7e24740ae39dc5059510465cc90a11bfaafd6e35b153d6a9fba33a2f088e881a838faf9adc50e4f77c91cb533f44658536cc427e237f20fba9bffb2d0a84272620224dbec11ed9dd5a6b3fbde076ba2e8df46280d41bc08a3cdd7c2405129cf1c8e83cbd716904ef7aaf9cc811cdf85a31499d173a9ded47f716e629a42aa24c76b245f4883917ef28e00e4fcf35d6a17df7771e4fb5ba28b6b704b6ef38d0226b3b133602f011cc3c3d439ec71a5459a6274bfb42ba0ab6d484606023d120d2283d2408966e0de23f1a2c0c736d63842a6a190b4a2f48a1895ea4deaad0c22093345d53d18cbf41860c241ee8f489e0b162975039813f927e99d5f97e401f3818c278c97166ef70d6a7618a3dd0a9703ec22cf1bd2cf4878214b899037d63710abff93ebea8be41331488687b5276a809e50ae601dc0ab87597450c116022a2926ceedd6c940e1fc1fac9f31429c62db5e0cd8768c569a5e92c7b070c8bc85f333c588ab6763bd520caa792b0b1155ffdd15af0bf67325d700b4864f312493c64adb7dfca0cf0ce7c298f9416cd673029985ca60cc96ac97fc6c9af83c31c1053e85039c44b0582c75e7090c105914cc5bf860d2be25b9359cf27851b682265bee953f16a530bdd8f50e7bf5a6345ebde290d95473dd8aefe1bf318e973c81b98f8e5af737e32699150723b0cadb7e00d5683434f3237e10c87c18e171c9a856ae1493f657ab8cf092c7cbcb3491f17d09cb2a8c9711fc8297965c527df629523c310f6f4f9bbd78c73e83691cba99ea7a88c73b3c6526e6c79d3d183c58c622c4a0239ca0fda7de91859eab3b5be2275ccb743fab607c0a70416decb8efb4d1790053e85b66fc133396a4dc862aa3726b634ce71f6ecc385bc248122b06875486bcad06f07ecf1e0828ca9fbdf786b6fc2d6bf760946bfaabd15b951db28a3f4bf9ddfb72c439a24efff380ecd0a36fdf739ed61293b1c9ca4cd67dacde32619bc4afde04f07896ea35552f357cac5a396c46b6436e777b1c64b3441ad1252233bd541dc04ed90712cc38cb8fefb87a38ab60ced762e0d466c72eea0e679a943073e4a83aa71c38a1c0e42c435a401ccbba6dc0a441117c1f94e55deff255262a5e91765d64d467d72bf8e573001670e5bb93323d4a6f98567a59674bd9872a8fc07c7faba9755b21433f87d7521feaaa67bc3ffff3619f1cbb353e12faa6e118f129505d736a7c7452372916ebd1fdfd4af71d3fe4d76e75f58edc82ebe2eeaf6488b84e1a68e0b7c9396ee0ca1d09b9e1f041c8dca01fad5b206065b28fbae919852f57913b2b0fa58a7fe93d6612fbb819b14f80f6e7896016b24c9597166fd67c146f0b2da4b8a98293b002897fd7dc7615c9870f515add568e94bbcc24805919a9483ed73228b51a767462edd1debfe9bc2fc4b5933abbcf9094c09999b4570668f87af28d5ae6375aec76a3f26eb2deb4bd18251a39aa06afba471b848e51b84f10ba52b44601ee32185f3f69170bf997d471307e3556f9b859edef266fdda8c79ae8559edeb65e9b5e965eb6dec4cd1bb21f3201328b70c1ece6ee84066f7f13cde4fcd34279a0b5fe0352ebe6e82066f29b92cc8b62ac07cc39fc4dd77d2811ff5e3fe658ed5359dea1e75c7a710cf5a25db003eddbc555c31fd2a3a8b86805bd7400a67aa556eaea7502111dd1d4d277cf18bea66a324ebf78f4b004d07afd9e32f350de98e4cda642e4c525ca80fb161673366bd44485e6d5b3b3967ff40f84815bed0ced13ac3377f53c34df96a43bbb2ea8e4049b5c50dc8316e653680ae0286c73a4a433c83af5f8b9fd941c6c467081a29d79108e78c8b363e48eec14fddb6f907822bfc262236b8db209accabbee610fd2c9d0d9defde0fc6604f7a121b85f23196dea6c386c62f857338c6519029c8f94276e3e9cd4938475288d118151e1c4fad5b9afa66941fdd3bdeeff62bff0b90e4ef2980f25cd59cbdf102a0785d278cc08f1eb2b135c333fab45869c7796888d9a77597b5dfda5f5daeaa5ec0d62dab427d220ee2babaebe61489a5789d59d1568a5c1514bf73d9aa1b60f586aa6a8444bcfe6a41a64c8f685e07f7352e0a556d7731ad760f7d4225adb1fe013d639bd5d135fa6a499adbbdb89ed71582a930d91a12ceca5a378a265be121d6c485ab57c1f74f40d99fcfbe8aa8dda57696f17ca2a31875ec81a0562cd65d9a255260ac49a502bf1e5dbfd8993ce83f2b5c0906c0f58c616c67e6265a38a16d34722846789dc7eca833aff071b85a58f774ae8bcf231acfb9d9a814c88c6c96e2d91339b1fba4f52827a421022cdf4e9c2ab598f61bfa721e2a04280e77a43bcb3b348a228b31a9e3733881ffd743e1fd6728240595e946634b260e4479b1ed1f2224622c0c97c3d7d32c2c2599bbf712d740f95e02b6fa6ce2874259673bf98de9b296a81040e3312240ad9d27c9a3c005679602032c9d1543a0f15c995631f7288ca49e673b3cae900f1d08d0acf8ca747c479b89c9aa72237e103619c5f477c2151e8d6a76b7cdebeba9eff4ab99b697a5293fd01feff6eb4fd375e8444130c7717bcaeaaec815dee3684e5e91a46b2759db235f58f8e8aa3c7f02eabc643b887e2b7d2a3ea201e84815b51526bc5cc126db8d200020ab81e34388915a8ecf2813343bf3276148ed7d5c6b207867b0d823a84ac9631f09dc66f6bce11e1cba6b7d5979bec0c1408a8446169936e594ab5eb8f5bbf23ecba5bbc13a9067526b3dfdadf6d5c5d44746a2e82a2be62be5e09a314d9af9579e95c161002851c97b519e68280b102e92b42052e7221d2f9e2a5003113af3c7f115d0de6cf0d5f133d135999d7952f0ab1f497c6483014d48d0fadc37e5f377f3bcca2e4f1eced727c2ea13d236453a065f97d9da86f13a4453c8b3413b12c5a5e1ec21bfd8e2b2044bf4809f4f5f3e88a1a240bbee2a049b6c496682fe22dea9dc3bc6ba640f937c2d3194c6309d14e2354d57aff8d8b1dc4622faa3576e14c12f096c38717de64fa163a280b9e9cf82b148adb4ae00e9eb7abfe1afb8644dbcd7af0bde66687965b4f7062f4d944017b664e3b238225988d1f19a95c1c430cb3c50f2dbf868d78a32d1569c19845b7126d517ca8fe7d19c5965cb1c77548a5876bf64f9e321bb6274d7a0ca0b16632af8ea67c499cde33a0e903b1cf9ef52e9f442bc26359898e908a458456e7b3b02eb040b1b11e957114b6cb903526ac43282f0c81646ab1c4c6e4e059e9997672a30b59defaa286f10b3dc21bf60cf3e9dcf207e1134667bfeea08f2ec8f10f1c6552f215c973fc40a77478bef6b300e9eda699d9675c331a85c5d39830c6a0dd4f3b8dde63337c27a77a3ebd7a7c4d6fb2cf790e6858404a38747cd4a9c4496fbf38f1d63dcc984737923f1c6dfb02c2ced167f0524a662f0a21cfc408312e2049c5de5677a6c6e572c538d0679951e91a2a110f67ca87378210b0abc49334d9b23186486af3a04e5ecbacac9498503b7f6c5b605346bc747966163062bfabde5abdb1081b1bae8de7f742a150e19505668ee5c9119395e44a4872df9158b9b8e6c5834165e397dc015d9c424cb23950ddefc423abaf3ceee33634b631f694b11c279104a19633b3f54e372b0a1d91d98c310545dcfb40688778873f78bb62c9413aebca5f1e0e8bebda98dc312b09fb585779543c70dd646007838f93a6e0e9f1509eb6f493a3de9ffb16c9436c1f5aba8945513242bcb10c831006a741b45862a2e0098861d7563849cca5e5541b409f5f58d12ec8fcbd1e8c0eac8347c84d5b5422710cda87a51122aeee0aa53b9f1b1b5e99989c2525da6d7f5592f20a2b5270b62352ccaa3b06bbc47a549d8b546c09b09d0d68c11afe6f1093c338db7dee461a367a86c0d0700eb3422f6ce5d8827c07cd1e11d3be4c2b9bb373e7e48b492e52a38b67e871da9fd5cfc316447a43a5891542f382eeb89137f45dc9bf31367b215cc944f145316cd64e93ece69066994348e639dd352a67515490631b303ea86b5c5454769a456f6947ce7418a4439b0458672ea8d4c5205dc57bab2b84bde535f6166a352dfa1c5a001b6c89b03ed4c2d85ccdb4415705f55d5947f9106ff9b9f91d4cf85370ea8a1d1659bc5ddd84ddd66b74925ac7fd6dbd0fc4a4d617c737a17c21692406096c363ec2d6c4d9ee6003b899b8aaea84dcd3ab22d9e3ba0219e086a6a1514466d4e81bc9293ce7a47e0c22871b661c0cfa72ebececd618f429261e61f7888890e87fdc234b6882d7592dc69a354059609a97920f3623a79f40c640e7d73cdb02daff93cccc2f0b8a00674310a986b3ed5bcb39adf2f5305b2d579f97ff166290622ba87c45c38cc04cf4945d30282f3cda0a19dcb00520df6aa1ffa5bcccacf3b8146628c7ba91a921014d0aebdad970173ec2eceebce7ab6722685e07b97d2dd41d235e849d81b7b795ca04051a6fb67af37a891f697af87153d5c3bbd10addef0c02bc9e335992f1b89efb1adcc8d44cd42c5416b692b0e9a35de8d6f25a680e9351edba758e345bc411934e51425efd1299298af5b5be569d620f3800467f8523bf989f913273b359664e16e48f7361350646b594744d3891dec84e5eba9a14674d67fe9d58c343c35a6a48cf552e22015bdeb247bef4d7beb9ce3a75ab9fec39eb7bac563cbe3ad43255c7765e5d7f88d5847c977daf69bc1728bac6f017ca9c0a15e52b3bb40fdf0ebd0531ff8d9c4e87a24651d8222473684ae69aa798f3f7b5cb775399232f5ad3c8713eb02d168516979e15a2cc12aaab26b060a823ca539675e56bc5ff782d71f0cf44379f04ad51a84c1221ce2986e65031b4927121c7c5c187ea7e8edd203cbb58eaeb9a6a5d57cb25964fb4dfd92b44f72ef257e0201761bd60defaafacd9b52833ef6b15f5540834b5c4a9535c1e9d24476a1351d678e096d0c22624ac19e6de83715c6176f449d2ee9babf3c6a9634d159291c241687837b4156cd67bf628635437d9722571c09c91ae47df4e6df03d78982c129e68d4a9a64cf3d273820b19f67c567f1095eb62e2e16123d91b6d8fe7e9f4eed80c44423b409c4a61cf3627fbe9a467e884d8d70a713b9599c0de3c1cee4e9f5d3164ec8dca9c2c4297f9cd745088e00657429c18be844ccc1c1a1dd84548428aa9d683126235877d8f0c9a73b80463673166d6fb013a2c1c641f34321dfdb26737479fa195a968ddbf0dd64b7d20718ded21090e644a7c50d7521606b44c6ab927ac01a3aa2da3517e661a0002b8979fd0132327a12692230d3cd3dc00033dd4d4241fec9a868303b9d09300dff3df181dea39b9e87fdc053d37bd54bbed606214afe7e4ccf88c9eeed883e3113cdd16adcd3dd7ec0f52054eae3bc213c3aa947f68a9e41e4f68beb6d084cbc80013ddd0fb0b6aa13a5193bfe0b0e8fa2d8824ccaea624fb01486920cb8f5370665b3ce088621815c748ce8a22cf60303600516514f4f60432facf6b92728d2cd18fc3d583009e56e2393db4361df82d4c67b339299900b2bd36bcb6d68daef83542e31811969c949edf972319266e18051634f4813384fc58900e31484599b239eb8700fa26403f09d03701fa45607d09a85f02e94b40fd2050df04e82701fa660233acb24a7877118d2364bde3328933389cc327d7e72930b34ae59ada0a7b1238634a22bbb1529643d19301422cffa9a74dadd26dd4605808e4106f42603a58c8d077c7c1c3df4dc76917f6517926c9ea03d46e71b68ed9f1aec0e040c8f55cce10828a1e193ccea4ae5412d2173e061149891d2fa144d41a45e1387fa9f7de25a6a9d94b8906b84dbbba056612947d35741b5d0c03a6c0d540b17505410fdf3cf1e4a2661b0c243f7a26323d8c6c201003f33578879f64a5f3e182daebfe82595e61ec1a36cb6b911c9df48881ea7f587e492b257a1b11822060b9cd055461c80aedc1f36336601e45dbe1e633d119b9f80628772a37632ee04785cebaa042c783e3ac0b96a76d2d25638ba72cb28a762a2023cb738df16c537d4b0cb2d0344fa81c330ed410236c46883b6deafaf25bdd2f59ddd078305153fefd0ba904876a105081951d3ed666c52aa7c26c82af29dfcf3fc444d209d82dfa20f1130f41db7e5e3171194d3110ed31cd1d626aa0e0fe8ed8713eb92a124a4f82009c7ca18bcb6329c15d17ed7717c98a54b55d25d05a26a67736e66ead5584fe751a9c539e637343923c01af58ecf8889899625a7d05d8680b032a8d20bad13d96102d2c43e1818bec20d75e4599d8314d0764a27a10936676fa75aee5d4369ff5d9e0df463d5b478f8fbf63bf7b58003c90cd11ed106e26d0e5981d03006875f07b1a5ed960f4aba58f0a0ee4cb1a0e7f4b609b17d8971b5abb843225a65aed6e8c348d1d595cc5406518ebcc3fb8d7d1e6133b1dc6701a3c435f191bbb8a243af1a1a4fd966b7b6bf10cb4783efdb648a8a2c66a3e36cdaf92f4ca82ee2fe061ddb9a581cbb4aa95a6c958f602d2fe420b8a7ee9da7d66254866da76f1f700a2c2d8406644bfb096ad1f4c146f6b43f6692b8d6a810bd3b2dac9545a7a180170dd82fe3c35ec50f4da40c3bc0579fe47e943737453d3d578adc7110e86046d136ffd8c3f42fdca37f71d387f5575b16a2d7a9f7c483f77b2e9b10a46a34a8d73f450eada7fdaa2881fc98abc617843b0fe7bbb370aa47fb8cd1cbbe343cfad922f593667e06e6263bacb6068111f0bbf5e854965ab2bcbae3711bfa433dba507f02a4efd179784479c3828aca1cdd8063a64ef59c49198f53ffe88fa419bc99f4878ff8456cf15a030fd88bc6f4d5c613b665bdaaa852db5b195565b6959b604d3cfaa406a296cae7ab108efd7854293fb2dc2254768b5cebd219f31d0e5dcf4617c77bbac0d8a6073904fd1b51fc866c81d3e8d4aef139b9407aa98e07d931a61a8af0096b0e7d480204404be27d8d0d410838e82caa83a1a59c670e95942a52d21e0dff6430dabe51265e825457b8a9f44c871aaa0fb8d8f5c837feb380008e8f961e86370fb916d847040494a8568a080795ba6852a957520dc094d2b8713b756582a2341d299b4f28e93a3a1d384209b062a35c1c623e1aea7dfdfeb05049c6ebdaed40cdfd5c995c46fcddee43431a96f9124528db673c84520ce14c68ed75462fb70b71db2403f3013a07d4ed684d61efdf7d83908d2952a915ac3c8632b19185559008fa4049b03ea91ea937b7888e2f5cac055c1017458380fcb998cab3eed4cc50ed7a04ad13157ccb29688b34bf3472731fd77a24a6207f95b785500b43924024d19cb0cd0288e1896affee51bf2af3c10b3603341cabe260d11fa31dae9b3e608b643e33ee7fa5803d220a06798ec4429870692ec01d83aef7e28c2c2b933565df6b7c46e8a943dc4210f09262ea817f95068504860fee2e7cfd16e09a1061ef3f8b3e8959d9a302d571f77eaf2c2727d05bd321e6fb6f4417b84cdd69857eb95bd7b147f0c9b13a06f5e70b0a2b847efb658bcd0b25cbe0d3322fda94a11d236d62f28f94077191452522614e3f7162d48a5f62cedc5fac02deb273f7f757465189268f9b4739ff6df02f023da47fda1377f4b9da42e390ece5d197672fe997cc6f4aae5dcebbef9c1086f17d055b12e60abc8e7743bdcc32431c8a2dfd668d9cd7aa6272d9851d42fee6fcfa12b3f274fbfc2b211ba97ec645c5c1fb05f9cb87c11490b9f99459de10a160468a81cb0b830f3c659d3206c337985a65f25b8790fb9b0412148d3d0ba7f09f19d881d56265f75f55a1b95151d85f2ddc4648ed0e82a1afa38fa767056d932030a6c75edcc10b8cae1586a2626c71ddc67062f769d18a724913c2a52b85afea20309e1866e9111d2dc8a41ce8d7f35bb3f3f1aa5a555bd359026e1b609e27cd8bb45e59b8845c044cf71423fbf341add49323a49b3173da13dd02da340ef29886e7b33fad674617ca157d23febc7d40aa1d2e208082a5216ce7b508d00dd8c20a7d6d63b0427dc3f4102de64e56574d3cf091de76b8c7e6007099d9b588dd16f33444b624219221a32f4a9d06e20ebd91833afe211d9192efaa6d43f931298aabe684f6489046514b722468e8331699a621ea63e1c9c73f6ccd2ace6d6a1bca97975c37f51c1f922c8e462b10b7db843a507b4b6d1f31b425a0c780416a173a09bcd0a5988fc094d1dec0409cfe7e7b0634e3914d3e66652a197324217a1ece49aab8e9ba4dab94e896aef16ff5e716ba382a1e2a93410e9fecf035219f6a88ab364ee56220c93e6b0580bd6bd9d2063bc4d22410c4564f0fc1184139b1012beb26c987d3ced10a4f02cec4e7045000a9783e23a815fe70edda481fd25dc29dce906669cbb153895a0bf44cf10caea6b688a4007e2b6f541c563db7cad4a72c50c0fa23eeb9c9d8a8fca75f9e930285d11aaa5e7e047ffa3ca894b95a40f068b8327c07fb75f5612330757eaf038126e3132e60b2bf4a16d6a88e0ef02c7209bd089fc18b83c14ad116f67e4a4789a42e92d88511fed2da2df7dd7753d18724ee8d24d0a39924009545185d6801c307f8e2cfb3748e774a58187d0a72aacaac2d4e51c2cc41ffbc231fa00eec2ece996762cc6450a781e1087e09e87b9bb7efce5b04c158a02d954e7053ab132529b3265b0405436b87f73f4e1284b56d9ef7052bbe1db0954ff495d38a8fc524bbaf584bc00c5b33670b5451bda1b7b8c5dd2741ecd96385e269a464cc7ae0762e696afeb913b07d6b870f08e1c561992bfa2b820c9b285dbc03675849e72d2aac825f82a57957f6701098c15436df8d8cc7c4e72a37bc986e67b5d1d8a049e0a335ee276ce912c8992b8a53aed4d90f2605b589c723a284ec4351b38986a21301c995021474843e42cd0ea77e75eb717bfcd83d81668f91be098fcb4bc48cb78901b2dd5f7079df0560dd7fa467fa89fa5150d0d4bb8a5e19e91135532db63a0bfa09e7cc5757fa3cb78415e7dd3b0bb2a01c8f2f7a25057325a1391c6eeeb153dc989da62795fd7b5d1c34ad6700ce644569f8e1c64601f6ee95be5c524d45591199e89832e457fd336671b21d6644111c02e7b9477e2c4c682e7c6dd762c903d92cddb7a505d4f2dbcf37dc0026ce41f88cc980bf1cb183e05b0458796973571cb4ad3d02d5d6f04e2cb13c54ad3eba4715b20cdb53d45ad2b2b4d9aad13eeec28b9071340a35d73d445bf4831b3365b69d6d0aa99050bea3f91aaa69a89474023914e3ff6b3f826198e03e17b4eaeaa98c303eae12d30f26406c035d9313737eb38ef3d3bc3dab0f6a7cd11082591c0bdfc630640313eabd5fc779579d9e484f39673e73a0b81736874c691f97112fa8e792e1e96b354c9c45697cb5d2594e1d89656f1cdc2499505a7ca42e5208e7a859a6155d369f8807806c62aeb5a8bbb1f8cd465d74955b2cacfa1a8dba1d4a0553adc4adc381de7e5e83d0e28181d69f446b9f15bad2227b4525127a12d7acfa25bd5761c8b614ff45fe8c812d3c3e4c87135a012a05c11d4956329a877c97ea5702f1ba1f41a2c5af101b86b1d96ac23a552ed128b01fa56f5341a0bd05c9005eebc106c2171bbb1b83ef92b4e46e65d2ccfc0109e858866feb070a5b5f8ba1607586846c7dcc45ac3507b3b60c349da9e41959deab224bda9e4ca251cb0a4cb622cbd49548f285bb76311cd6e158b2b8b10b90c874221cd67e7abef3d9afcf2fc529ff0500c42037d88f7cc30bb4e2b28682552f479e014e36de390a4a90e8f7e350b254533d65cdcc9e99454df1aa5d26349f28b2578447fff129d3df61c30ba7a55eed81095603c2ccef8fe69f19ab060c9b15c33220414fc429f904ce0e66b4026341b61ffcaea59f2aaafc9d44f55f06ad6a803a4054a466b3c9d648f715e4a3b52d8f7a2bf6cfddb05c4c4a6b080cc68df2c5fd6dc7ee998be582f45f64c4dfc0d48e0eabb1db58176ec9dfcbe59ea15df7ec1d2c6557240bbcb8c35dbc82add083bc154d37fe781e91b41d3588d25e11ddecb71fd6f71b2708195d97c304086e15d5f5e682c56b93c1bc24dd9c2283db1623ff9eba3c1c38a59c86eedf049bd7a0cb69f2e655d3650feb9c46160280a06dc31058147e3540f32b52eb5758dc40b0b86cdc052ff31edd41de4377bd656af05e16820609ee2ae27a1facab13909d2548ad35d35a506f5654e96be194ce8e8a836e780784a225279db2f23dc759580160d3e894bafbea45501f9fc0e14b4a986a5135f1e7db31016fcbda47c2433e8d97c07b5a2a76d31f660868aa99ea7c0d3457972cb55ad2f526382a9a95d834c1d8bbac6c730d793ace52b3871d97da50da567497460d3661ed68f5b464d0cc92f87d1a27aca1736d045560e69815c845c7e5837050e784ab2e1c697708cb941f5e527f7ca77e3b0c21e4946fcf3ef8613d394a0a09c1a4b3e048b5af84132921d9accc848d38f4a0f8e3083f42499007d627a278b93890423605004967e5b62fcc28b0333742a1f88f2f96875f3aa5fa3b3c5b3c437ef8bb819ed07bc0d660099667bf32fb6c61706759fc954b843b56312668e926697776d42135ba4d610f1ae0b5bb559889cca6255cc4a3e352d735d9f08afbfc4c5b3a87a65bbb4fb1af897f16dc45ea883bf2cac1a706d7fc0c6980191fd6e41423531b734c13d75b4f78fbb77bcd075e10e6459d884e4db11723fb0c4e9e8bbfda06733548d8f60a53a356b148516208c6347d10f5362fa7fc2522cd085c997738c583af3336e62ef0eb25cd0b2f350d928da6a64676c22754fa9429ce71e9fd3255ce268582f6574ab9e8e50440e533639ac6970685f071057162ba89108ef5ca3c161947e1c664bacde144e66a91e7fe3fb97176e7b11efb6ce269a7c8dcb8bdc0ce5bd1cd3ff161573e7b728f3dc9fab583aca6426de01d496291ce6375ba71320331f47b52d5fa1698d8787257593d49c0584bf78a18970cb0b0ebe33f1236bdb4963c99b7d3576b335be9ce071be1cce6fc83d69029a8d3957f0e1afc870c674d1e80e4e2a8573539462ff66409f6cafeca270c2cbc8601304541fa249c337bed1433f3539ebf005a39ed260cfa6260f294f7297f4e3d76ba677434dfb30a4edceec1d0dd6d792019e18fd64301132f184d8cde42588498c7bac50a23d8e494ac29e940d6d629dc08aa9776413286230e814374af101e50361f754f9ce8c54c51da4b7eefa1f359670741351c61056a1d755051a8ab931e33c61aee265d240a3f29290ca8f40f6b151341c548de87f02989d0ed71c6208bbe5e1a0d5c80e0706a67689deecc2fc26f218b34966d0b22569a5e830c881441a031e309119685759207f1148b72d54a4750cdbc999a4eef4a24e02e3e2722c1f94e0a0cb1817a8b516a527aaae012495cb36bb9c55f731b4ad08d2870e3fdbaca38681e117814d8b77ed849b3bdf144129067c2e460f7e5b0b932b87740d0a71a2d21e5f9f84eafcbb2db634859843d7be4421ef8f8f10fae3e9e5455506e81418c0c833592a63614e20da60f2487a1a9d0933f3e55aad11b98e46b5ea2a9334e784a0cb4031cdefa2214fcbd55e4a0519bf0ce0ce2cad55ba35e57251cba6ec3c5e37059bbf00f3aee2538f57c03df12800c9a9f325cac4ab3648169e790563cc3a9ffcbd3e79053b6335611c7f95aa2c13fd498f93c9214626c5efbcda6c4e665b95193f39106792e2aa9d617b5c24c262e3a8e8d3c01915c5cd859c2cb3340163fc2a98b2ebc96fd66a95f32453eed2631830cb81eb49ad9c7ee8e819eb01b7918a2a79877c28bfba400f94e086e945bb92c34dd7f8580d25270e23407061b18baa0c938179791dd5525cd6e2e7201bc254d5888cb3797936b05fe04d8d5223448a47260d9f203bfee0fda48fa4f7c676ad91029e96063db51c93c1b4f1d84919388864361c1413455636b4de3d92d1c7e07213684611dc5629948c32194c96ff65d12d5920b1fa6e0e21856e2839ea5a5ad3b98057547a2abb0d5f72a4cca1bdf2e4f123251b143ff23596418e261ca2733f556c69d6d802af14527e12cf5cd6c37160ce1871e0494a0a95a2ab3ee0ece314c7cfe4099b1e64ea314875cc67fb32e0bd869f5e83e70e99be1f0426ce74e5675c0ffafcf4def60552d24e57ad48bec3f3d1a8ed2474f8d4642799931d5b101b1b5048ae456e04029744f7753118f2a1c3552f5c2590e0744e32bb6c85e5067baf657a643a0a08681e3c7faf8aad3550cbf92798484d0b003cbe7843a85e829a6949582cbcc479f8d62b318c00a28a24f0ddabc87729a6f90f4b388189d97cff220dd039a3268223a47d4f8824389cc97fa78a1ae892f289c1b788d2810f3f5a6633f2500b61e3a3f28a46c3c5406465df29b72c9881bb78088bb4185db45edc796a53a15cc1ee75f28e1c582703f81ce9dc7780d3912ad8be694baab21585aed38242f04db102aa7a38a148e2bcbe622ce2d08eb9de4051358730a33ab104493fa232904d10b97cb053b0a2a6d6fd64dbbce9d34933b1d43db6abfaa80cfa4207c5ac98a9fcf478f9cd3b1d9a0a6f4fd73e5fd1fdee7bd7d41f0c74bae661089e62a0d3a9d86e6af56a1b55ce6975082a16ce5a2e7299a8f87ca2aba5246a2d97c54dd426c121ead3536f31d711d8b08a6a4740a90a4484e360d9b6d3b44886bdab7ea8e9237f0bbfbe48d4f759fc18f11acc69517da41e20d1e3fb0649b25a22a0813fae250505745bed868f2172cadf00d633016605ef3333d2f8f22be9454a0277fedb5e747d83f54a35402a9392704c1111dff8fb3616e7a7864497eb003b4ad9a67b82a5f762114d36cdc2319fc6ab24dfcf6c88bcdb998c5c621e290c87ab3a43b951bfd84488ab6a8cb5bbe3a4b74a1b0f98d090255d9793ae8d38cd1e8ac318f688013eec11741d874ac5e571679ef41cfc0c00d206d776427ce0b1decb8aeb1adaa420a2c6d4572bc1ac0c57e0981e9e705c443f03901c4f16d3f8607b01d8868cbc2e531eec0e9b99d9eb1c2b360b0f29bb0e86be206402af401c22460cec755c604b7b05933ae19917a1ef8b26c1187b0f6ea11f16f4c2400d07e1dc441adcd9b8b4803811d6b5f20e476d0a62a6fa4d6fa914f10b9e80f47f68c2d48bed453e115e986cc2b5a3ab55ec3e65e2bdf07d361e5bb34fd644dbdeadf670ef84ee5e0de5bdf24be5e07382f3be5ab6cd3e9918cd17a2c28e52d77035449de9824d3d3d3f18eab6fe304681f394522443fd295b034f4218a5ffadd3154de8b95300460e0cb262dea41e8366b2f20430658c78c1c31f25695bf8a8f5bf38a14872e1295bd02525065c7e169d682aff10c3fa7bb18b7bcfa1eae88801658525c82e65168097ec48d9f472c5e5e70e52fa55af724b5d15ea2014594591e0ab41e1de176a59313c3d470927c00718d2c3185fc75b0a60b80d8111f80f818d5156c7b93c30323e7514066c97f4372163d898ad8bcf63fe1d4f1ff69b503d566f49c7c31aca818f210a248e53781446a43d48068229997d2d796550279fd5579b44c4ee44b893c922b093cb772e2c9b2743c2db4d4d4a043a497179a7700f4fde376af9b58485558f9043bc349815f9f4c14a41d765bf20fb5110bb4d73507f02a45ef8843695c754b2f1040c1a005f183d0fa55c53eb3dbbf0b7d0d7c9036d7f0411ed2703752f49842603716a0c87caf6ced309e2282d3e062972b28b76025835c3a46e73ff7eb79a56f4fa53e272042c2f388532a7187bd5d36d739c096bf0a45317d902d8560a5a71cd406dd12e0f0d51651043c2ec700422a8b1ead76192ede363650f8a720d9e810a3c78ff2e939589733a06cebf4ebff66387cf7d4ffb694bda3788dd692e9fbd5b5b3b853d27f5fc750e80e9156890c7dfdd0aab69b2a3c6d7054eeaefc9b4e8b788ef87a292a0ae4ecb64271fa62f89acf3e5f4dbdcd764c003e48c7c2d75fd55e5e5baba5723871ab73c0deeb4eb6ae8521507b07b1fe086c22b1e9d1132e88dde5ed7103207a9afa3a12c52ab07f1902ad2452fa47d8850c89e0cd493a40c8175b7c4f34de8f7385b5dcd5f0bc1351b3a9b48ee4da33407d31a16f3f3bc1696ff8b10d594ddc6670d0371ce51076fdf74f83f9de02b3b681b2bbbcbc3e1c32c252ab0e3b858d69d557e0d04252b911c17de13bec0b97ebd2992e01aa724f25693f91f1bf8722a6f90efc001545bddc1aeca6b158d41c478a64161c63208658312cafa7c926f9631a8432aef6b9e57afc17884b8f05a073c82ae334a95e688128cb9fa55e6ff74b356ecf5a3f2ae90141911e7eb6446e9fc83b43d35c6e955c2590bfcf1959e1c6c45f54c325158884cf5f11982bcd3e1881216033b5c0281d14ff5ac303dc5e69ca2aa04d9d0f85479a8b459ad7e74790cd9c61fc8f344533cf06152f2a8aaaa622d7d890989ed2e865a2c72cd41313a642872cda8ba7837824deb372a4bff09e542d0cdbbe5e8df5a39450ed8baca489914f5beca49c2730f31ede28451ddbd7402f74de42dd1bdf791372ef76e40790bb9f7c69f8edd07a2856d96b2f2a288ab14dbd9a25d35d4061fdd2e51c1cdfecf14732d24469c2343b6d46cdaa9e5fe3deee603eb2c51785eb7ea8929ee7ae9545f613ca6e46e291ac003bc844d6523bef359eb1b749b2d2f02f19bd4a3c11ed829f72a31ca8f5a5beb107998cf83adbfb954ab350f1e64fe58ba437b6225170e72e4b39b766b7adeaab50e36672149770f690d854c85f78f2729eff1dfd3f871829a9822d5a8c16ec8fa4969a2bdcd5ad1a6af093d9aec87cb1bebc7d1424f2808fc27aa21c07f24ba3b14b811471e251c4ca50b992a6c623aecae69c83acf9aa5d91a07446f44edc177ad2ea2b39b841bc38da7d119492802382f610ddf7620cdf5b569cfe6ce7f7716c9f010fb85aa11ebd635fc09fd64930b3a2d4f2bae4af5ba2b081e7270707e07e880611c1a9bfac38d00cf460dc0a6fa76df02c2d13792f7c06d486f7446a7d32fbcf21c6fac44d4a5237c1be2f2785fb98116d69037f89b806d046cdb5063252e5d15db384b1196d6a12aec262d7f814d2ea88da0e759405f52d99f247fc34866b88ebcb429993c5b9d655d3e8c4dce8dace8de8564e8e0e46da1f7867478294cc12009a50a88943c915283821c1a0b6abc418b54af39348c8027c5225df829b5e59633bd28838acd745ebf64b1bca5cad568d7d692ab3af58677c0f9d0e5bf1f0e8e7cfdbdc37cdf925dd32933b27c12e68e3713439db86e6c040ce1f415632a590533ad6be6928410fc35a32ce96bd6787e15fdde7eba74305c6a444a6469135aa00f7e1603376fd6cef6ae4fe2819a109b07bca9456b4f03073c2240fdfae3df79d0304651d6e1c7df59c317138eb40008868eba27c73fdb2ec1a8906674e9b58877cb6d67ad6474d5909c11d3f6219579ae5c80b45544b5a7ab716ff9c395f9b1a70c3e54989c6022cc2085a2c9fcaeb372b10675f3de31e2a4c1f6920d1ddd994269e944d5145615ae0453be4fd94178aee41b00d7af60d52d6e9f6eb3dbfdb8b4c08ec20f0299bcbb3c55bc289efccb15932ad944cb72e25722acecddbc6cf6c0d115aa815c3fd5c67a99c5d42bb10ac1a02b7a32abec832f119efbc5b01647879f036a0e8ca6a29401acb5d707dd0decd774ea090ec20a2c3e7590dccab20237852681f27b4ea5264f0f988d22f647e556d4e8d61aaf1e0861c00e7f1609b2e8a3036509a7177d826ba129f45f79096c4510722142695fa1b4f0aabd37ff6a95990f3f19ee0a5daff669282fa5dee6420322327d5326072d95d589508b67e18d72f725e827b8fe15dbb341ddc6a52d066d8da50056e110d1c32478ce1d30e4f0a736a1db018234d68607b5b9a7f18c2d61ee696b1319027aacb1980a6caea4ab4a2abcf0b26366c07bfd7d08d022d29549488444ed3d736f1111306f3f46d3b8942923d1b1b06e3af89caf7a6db3de5ec1361a96574903d448fb7cba31962e13a4405d36b0bf3b21d9c61e956b27f96362e9dccfba7a03bb387ec292c9e593781e19e887bc26407c14b4e7830473860724bb60c417241e4069cf584bc8053fa1d12e41dca1b707ba56cfc97f7347f310f133dc8fc3310ed592eed3514e4e5da6c54b08b110f62827b30e9fd35c3a20079133971ad5331ca450927042a37fb3fbc0f0bb20887a0f9a2aa0d3cf8533f5198698390e54cc9b0182a48e19c8f9beb9ee20c3ef5edf6748578721941e36fb0b871b6a02d926415669d79da6f35533c8bf8730d5d61482805d147b02ca87ab2c5862e479b9b88ce20b6536517a8d690ac844f2cd2ecbb5165885af0ff0a7c5d7638e1a954ebf7189c490c6a693bbd1062b4624bd1ecdeb5a2200ba58cbe69024918db2926e060d7b52c3a844c3e80ac4d5390d143c0886fa51380f4de3a8fb89b606a63fdb9559ca95b0b261d028c109b7afd49fac0fcdba54a57fac73014e25ce1cd7a4ae47a8c255bf609e5169227c0fad00fa4fdba8f206d35f6f9723cac713ea62d4846e2becdb77723fcd086628063edec61cbc31d578595d3cd6ab2959ac503f7838dd2f050063672c8e3303b4f42d57462ad7af4add957d47caa4ba3392c28a4e9460aed5b01c259772a1113a48be5a9987ad8c79f18f5dbe438b558e24df66c801ed907297a0d21858e3022e3355af4bf235744fbd65bacc545d2fc967d43df596713953a54c5482a15960b34cd9ac284b734364da0f8a9eab86a8ace88d01e6ae4e96315249af18a15b512fc6cda732458946deb035793fecead4fce26ae487ee5734a7dd1ad41dc4e888b2e72a921424692afc31c26566d575095e946ef87184cb4c9566a20282a4094904cba6a25a8a0934511c46b1bfde5eb96288aa456ab13f51ae0475a3622cf6e398269192741506ec0f15572eeb4670f8a132f647a57d28f64f35a5d226970a2963ffce4275e4964e14d10ada5bd5509326883b88571e830eb49948122a72e06384ae7190c0e8f38077a1e0c2023d506315699788ae11cb34cfcdd4b97ed8f3cccd2ecde4be2fae136f5693403d95d87aa5f71ca163c0ca3c11de58ba9c4fcdbac72da840da3b533fe55207d8f28bf52bc69e93f2fba25a3ff26ad99892f51c533912511998286fa0a451201139e0d40989fa543fbcabe31eb1a9e754db5986b4cc56225dc017805a434d75f7aaf2bda85154956e97f3c64d8552a92640a5aad4508aa119fcac303f2e9fa9522e85de038598a42f4940ca0404deb5e8378551335d4daa7b61aa486e925596f9cf5afffc13fa857c7e8fc05fa3891a464fab921cc54456a570fdd4db975587fd54e49995a1a5e47cb882e924f400660ebb1c82e75046d50a04492be347386523e1beb132c2920a73cc107371a073ffd74e028632b42750336942a4bb6d3e0a1a4b8ec5b8958a549018c58ab13f88fe42da97b3ad2c7dadbb5d138e85ca54a121a9ac747d2df6b8ca35232cc7bd960bfa6332a079331cd432ec7debb9536cd32185a03b1968dc1852e4745a541f54635c010b5d41c02ea529bec49592b09a0ae9c7531efb24aa91270c843780a69384fad562c0fbc79b08d35f5abd4ef1d86fd0a5bfef2e7f724315624c3ea43e9bfaff5219eab5519c74ba6d8d452f98251877f8e5ad2279a3bc31ac6f15eb36dfaa7aa4540af4fa70e6f5e50160d8cf6a23062e648d87c27f03226afcf007a5381111254546fbb3ba5bb9c939482cabc61dc4750230c07adad1595daf5d52a9f0575b4ed2892626e3b2fa4ace4a3ba1965fe4cb4afd0b70d8113636d87bb0b2ca4eb5edbf70fb5e9c8e348031d69cdf1b594903542b37bfa193a1823806890c840a0c45039289a6a9639bd5ef8f9096b7fe72bacf6a614bb53bef394d88756db2f3db768b695c106ba7b3322668b829562c116bf26f83c07e4ae23cbded8cc0050c025fb510d838c0a085b080a6e204542f9e3b69243e60cef556992376ff7ab58e1425cb3e57fd7b1738ddfe8d96d4f059077b5c2a39ce9df66d06c1a8b80d21c44d3a3a7f624442a39830e15baad2dc45c8191b5073cd73382f35922444e28030c88e0f65888d064910bfc375421b82c42537407317be88939ecbd43005f7de3a1da41c40143e366592d6b6e5264ff0e0c20909c58749c744e9a1481b284eb76b729fbc3e9d24bcddde08a5f3092b83b12b22e243db087397bcf2f96161892bd38d7364a555d3516e64dc8353cc1bb6f660d8688c16ddaf96e4c69741179a84c204acf42e0c5bd8e01cada5f53189c650567482fc59fb746218792ce8864cf17ac20fd147ee93d301d9bc363119a3d75a8c35f69217875518f08e7760482821ba9f62999b22fa231291ae6bad49f95a0b7313e7edea85991149bc05365c92e0bac2ae1322121ae2a9bada84b8e8a73ad3d7d0f6edfad00818a45a01698eddd523d31410404e4b684182ffe30ec9d8358b4e6ac335b2a7a8c9752fa77a860e8de5fa4f7aa62edffbf4e588c859288dbabd9e63b817bdb090a77cc1254232505615470cee39fd27f08b8f2474e4addc5dcf8d8efc417478e82bc7d38f577042a0f352b072065b1055f4eaa57367cce91a7ba861882d8ed7cc232a5140668d0996b06fa6bb32afbf86851401ffb0086c1cd2bda301aa6071a274dea45d6b05cc94e74690e36757c5d949d4dc6386effaf8c70ba42c71a719c5ddebc0428a177626eb25cd6ea7eb6173e2957422850b12b0c0f3507815f4b25cb6c0fa09972b5c929a250718b5782b0f2fe0103ca96f62862b7858bc60510b6ee653e69f8227ee02c2c92991256916a3eda9f3fc74de4b60948858d0d9fcf414455987afb81748232c4f29974984bd338b3332015b2ab0528c04c7471cf6a791fcbbce9de7f2c3486f6b18567a1f9a4225757d60e5eab1a6e2cacde3a7cc60a30e357021afa42c2a48d17d71a5015ae9ee81ee049ec2a08347a59a2a2520bbe09ca3c13716fc37eba8a6087ccc0f2790e87984ca92c3c2fd37708060dfa63329e0f80df86c783c5194884cce924dd4584c44f11e924af29a850e9df4157183cf7e070f9773dbb27a27103a4cde68aaeb429dcc8343e42e8485c09b1007a35073165b33e67337ce2de7c282b1a7a24ea653c1052e85bded9891ca8b01c109a6c157fe5160a0023557b4905167d8b9a5a2a840c27edb4b2b1b29dae6293f0897a4d49dc1623c614dd4c1dd112ea0281f73fa5a859d7fece1129b46fd077f2541952ce0ce75e1da534a8ea7ef25a89dc63ef40cb66ced31072aa3a5ab12d289f968f85f2c417fd10e0355f28d5116dfed22ea09798cdca80408f90220f906e57ff06eae05154146bf261e058c64b971ce3c8468f75fab48b791b18367908b8b72bd05a7c19cc3f2bc16f7f3fdc795a495fe388dbce050cfb36aaa88a440ae7bfbc725c2181c44e8d17e073c172ef908d06d914dcc68c27f14f58dc4138dcdeca0f79b4e2f2db65c1a631f534b4fac12dce0e2b4863a98db3f0a09a8d76cb45e89addc948762cf5f32d73a7cae3d7831789f21485d7053914e74fbfab5179c9d28f3c86acbae8c8f9a82f19ea691542a16403ed0829a02e03e71717c0e5ba6a5d569b3d5c67616761ac06cb06278cc483e4386a37f7bac3a9d41995f878e7d6ab6a462b0d20ea3df37a08cd434d13bd1050f93395b1f7ef168af80f750e9e62d158a360e0215d653e22f35454b04a00356fa3d91702a68305c217585bfce239a543d1826a808a0e7a449619635e1ca741beecd5651d6f563e20ab501869e801fe57287f752de54981ae1ba503b4209630626bc201928c910860dfc63866131857925b42244686a86b00eb3a7100be203b954b9310f08b432dc0518a73782e1b3ac96729fc6177aca49de61fd34e62858252822472ce6a0e0e376b193421cb1f1483b2599d090dcfe189af2833b6b04875790a2140712857b5fdffd67f0cd3b8dfce08d7df70bf9563a4fa761c2e7060f12847eec1296ea741ccf4c34207bd3a268135f457136472ac98ca413eeb1d60c38343eab3694168f75b7aac147e5e9320ba434460b82c0bdd67c1c460955fd014e17f0cc67973843bae460bb4c5309290db627699cf2bbccd8d6ea0598f9bf413912de31b9493d3f463cb23f630ff18bf830ed841d3ba71bd6ea849dc97668a69fda3e5676c8442a48964288d9d71f1375602cf23aacab94958548921fccc1d0d4cf5e23906382563487092d58392604d1b46dfbaea4c978fb12efdb0777169dd7e6a6203c2cb6c1e3e7ad31234d23bfde29687c21003c6a76d1e2ac8543a8a91f24dac66a37a05920f6862beea2211c0d979497b9f1439e3ee48198bbcbcdd89fd6d5c7ad3a483f9edeac61e2e63ee64f1e7334105509a0b69df0e5374dc6df08d2fec038bce939607053d1dafcd1980de9ce1a36b369f0345ace9c1271c0bbf37b80476c0ce18532538bc1977c7c5f12c62d32fe4bfefb13a538a6c1ebde421dc25028b43ea3c27cf1b2fa12862caa250f051042b3b4802ce37b96dec99b3ebf4947ed0d9c29c5911306419234e206c0061c1f6783b3de04b1736b2024b655d43bd45a2413b26a048de36dc8efa0b4a43034a2645c087f69000f09964fb2d8324079011a65e6e165d393040da6cbf819b31bccf8f97b8b0bb2c3701aa8bf1d5a9f4b210e2c41765b1669f97c868554e04621b5df973d459a62b5031d51d7fcba08ae8a5324da2d5281b5a4bff130791111d4726460511e4a930edc66dd14bfd1cc2893a25ebd126e1e47023034c18ea7433aa088681ac58de7fee48282e45ce034d290637c37606fc1c99a92b1de603ce9b4e2de1d43bfc1fbcc8cefa8e917e1e74de2a5574f4876df288d3f7aef08ff3775a142288ee53f972ad738377450d64ae56e8585774f8e6d38a07485f6ecd0ed78d8c6da678859fddbf3fc66e6de379cda1053fae47cc0f9f521d5012b63167b97b2e0eb095effbc32dafb8844820ff1e06484169cfca4580d80ef42f203f220844780d25f94fdeb611b8a73a5ce4a15a3eaeeba7141ac09187be29ed9afe6f138ff4e4922b1cc2636d70451833b089f605e9e0156e89f13c2b5a786d3e7200668a14f594a060fe8b53a68cf638fe374153480d1914e455708573f2ad84c9d12bc9780473fbbafba0af3065094a1f4c1682efe44cb31b8475a3f496ba4fffbb8408dd4b5769b2462816579faa50b279a54014ef6a5c8e419c2333645ef268ae1b0a9fc1797f78b96531cff659ff4963c732540f3f7c1ae783887f99a02eafcc1095eb0b98a5d949c5dae262e1dc6bf5a86d5bb59c2eca66aa57f27cd6881b39fb27a444c7e780de4ba236bcd0559f218566f08426d59844308d66e13d881b22d47ad958be34e54bcf3010910fd11fa7af0246be815219cacac249bbb70e4bb140c80a7c0e3bb75dd632a66c3dedf26d910183c2d72d21bee3ed248911aa2b11870cbea13cd36256f34fa5868fd2b857cb0ef83b25e2058354fcb3436637fda04e518cd5374bae9ce7f04620d206e4cdd2648a9eae52d80e16fb520704db6592f491b6be864a230d8b3be304e74df2012b5cf4f60da441f7390b1fa9b06c124ca49b2ace3632727a952507314c6ae55a8c8b2383b6d816d0c0c34ecb013e8287d4fa6c78df71958a16d5cc8a3f3006d904b21d10d31ee53010efafaaf6b5cac84314027fd8f446e2c1615539d7206bd42ad168a8a6a42de1c80909fd546e3695a021bc4d099431dab47f8e51fd8d5d998ec684c115b27ab98763f35919fc7266880e0109773257028a1d9e1c0551b4460b3dda3fb257aa2e07098a859f219143a992bf5bc4904760e72dd4b4f30172e0cd57154e3697b2d18a60b7f2171d11f073d9e09e1c5f25300e0c8f8962e3a68bb23b92546d3c73461018f42a174959923356a630f4755c38428028746b097565dc174d49915dbca20daf67e238132a9f0561dc0eb7d9dd063c9e565707fc897f27029680a8627827506837c7acc858ad40251979b1a5081a9b8422dcc57801af405eacbfe6add3a85868eb745df0e8fda7bc41955857f8a8131ad82bb0a84ae64aa432207642d6f49c29403100cb990bd91125af56ce203466eca1380704f7a1c5c84dc8446b04572a0bde02391e4db842cbec0b5f8b189750e5c9ebfbbe75b0440fe2cb92eec9e8c4cb3d10163a6e7da2b06c90182fb3e2f05e0b460cc8873c665ab6c70c6ef883fdc209d14beefd1a4cc18c6442fe070ab7e36970c1553c0b0a593991acf2d9efa61bde205cba1db7af5f3fa4ae2c78309daab020f02f78c2c804b3c2631d3e853a30ee8952949a897853e0c221397821653e3bcf6a47cebaa6261bfcd38883417af12a9621ecaff290270acb6bd1350b0f49901fe41b7370ac70f96bf1ffdc3147ec5e2bdd37797bada885fca374b04b8b3dc4e09fa580270154f502822125aabeabe640f8f183049085f2459d65e58650eb62a88cc4c190328884c04c73313c4dd241e2673dacc0b606f0f4f1eab38b2c01f37d5d997f3857aad0ada4dc219b87ed807695290dee8c6674bf3c4c030defb0fb34be9bb3c5cd6844afd644bb181b20357054adacde0787a93bc992c3a252e3a106c9ce77635f7fac82b5800580cc8adcf01e7369994242495bdaed2d2e388e03d662beb5b8deca806106b40d6eeed4667a6e8de64605c2b9fce7480b7f6c24ec31965c60185441178ea7f14632dc676ed6b81953f3cd301460db8b5b816e095a244e204d4c1e9e889a414c7e8f104c80afaaeb0dd338546c903550abbb7bb644ef35425fb17207818989a6395a63fea839748a4235f5b7bc506b280a0b3183101875c87ef83bc2f19cec71064218be0665bba671c2c1c0ac1e90eb09eeeb9f69ef1f0582d38fed5a24dfac8bd386d3825fb5ef9bcc19b82a6fdc2f1db834df2f4edc86f0eb94cc281e633ac735c4cc7a505407e3b0fbd0c872ba6f45a1268f9c5656aeacd27086c405a631108133b83fb878917e27113f487fdf71fce350b6e83d830699a48a6027b3167e4a3f8061cafa8484403fae7443e286baef2b52204bddd435990805c1e4438257e4f576908be0e387206bd20cd11b1e2c91a58009f37b0e220272ef8ad8870e4e6b92e8a5d8ec07132d92edb61139e56a3709101735a9ecc619a4db364d6e9dd329d284b045e9ce01ebbbaacd1342ff5fc8018acca944c745de6322211653e941995a6918a3bb799c3d939070e28f7abf24a18a48bcbfde48b45de72a94ff80a4910f2d4fb5b07d007e85d2dee133975ed15f0ef00c09714c107cd5bb56b5ede65870a0ee59723f0c9f2dd3ad4765afc9da7f233dd16277f99446752f63a8aafe9941004ed9880578fe8baa1a295b7ccb55c774a8a52b1d02122ff8c46344d1f2227e092115f03a8f21e3438f07e9b5c7b415b2ec61ceea7ef3be1350bb36d68b558f9c390de047c62f4a32d3e0f4700b6c213c507bd1c61eb719144d58ae3af32f5c6837bd882629b3bd5bf3660339fc551216b657d122c424963a492dc2d28a49f699e747f9a1d0c259e4c39626ca8cbc83c37d766d4b4912faad0c7d5ed72cd8d611a99e2c2a70ca7b6ea120f61abf108069dc48122392679ac24888509c15058a784dedd2831b0bebf24e899ef5802e178723d233da6c66c9ca28c3e9119d6e114c9c2cead7c07e530b534971e768ffb5712f4461d3b5c98486ac204d7467344fd49cb2f107c1fbe3957417b80e333ac5cf685101d0c6b1929b61c90a8fe0701af3f94f28d6c5037a85809cfe63fbf18fabd11bb1010b901ca466261276857eb80def240a02277ea9d75cd80d502a2cd42efd75c093896811b650b3befd1e8d1acbacc56ba80d19df68fb31d131d283087f365e8b6b0a3ec43090f87e9c07bf82964f2da73f570fed52136ee1ab2d6fc8bb7e4ccde9b76b9b8522818434cefe0f93f167f4af0f46055cce31b0358c4fb59c4fe8c3a940b862889061f4d8ea7fdaaa5c11b1bc487ca678827b5d43eb753ea8631e4dd3742eab0c367d06317d8c291cf4257be4a07369e738848bc84859a29f8e20461272019d42ec266bcc8342c8be09a676719e5bb6b823f001c300bdfe56e2b1b64b61c2577d2866999a3794a2baa129a6a0cbdb30d9dff8dd5c60fe3482124e36c6f6e02bbd1105ba49658dc44cc40e2431c43033ca417f48e08d82c648847ab5f36d6e6ea8adeeea7586c34679f3ee79bd1c7a47ac6f9bacc773f2c2280d1a92bce40e8e3a7a685d407a302bf2f28e821904ac9d6022315ef6c7e139c8333ebc0a0c504ef4280ef6aa557a0986cfed6fff16f4b6242d2af08bd09e355f7024177dba5944f007a93f1c622e32b23267bcff0384ccde5427a229ee7e5d4fc2a2d9f4e799e240efc2b4a444750e4af5f1bb5e6a8d2d81764a61ebb5fe8bd3958498efa645f0eccbf1f0d7ccce4435a315ae031f4548a50858741fe6170fe77430b7adf57f1509da44cbd4997efc5c066d76b190a36d80d104a1fc6762a192a54cc3622cb2069687a19d18d89d75f23fb287df02f3369677761f7df5a2ba33bbc57701c4270c40ca0ab9b04a6ee13093754ff6ecda301e4ad77a74d63d8c6c79edbe3333f32093ebee983392dcc4b79bdb81bc6b2fa53622bf2627217d33aa4bb30fd619a71ce12c450b419dcc9202dd3ea029e93d9ccfba5eeb0e208321fabfd1c2b886ba7ed91416f7e09f3d56a9061e263c19fa95da386fc2444e3230fb68bc2980dfea7442aa02f5e035aad4f01a5ff77518bc274d0d47c5cd68da74290a27bbefc14ffa7375662293a92fcaf77621924dc7c76e53162e269d4731c5b5c2910f7ae2a0df244be23af17b5d989b6251d10726aca603f6955d26fcd53f2838a8de9c666ddc004e6726ac001e641b60f673787ac955e02c970aa3b5fa7bedd54d97d72e4331d578aef2dd367c0dfd21fad33828b7297731a56908d4ff863a4d5da0cbd57a797e5cdc4bc4789016ada15e44bb1de1cae70de39f1d10321c5f585086521a528680a6d5e7444d6b7ac897b4558bfa91772c72cb54a103fd59ceff7b464a38df51a9a008144c0ed967b1b33ad3472378300e8277ebf8fa8f7c04df54d1f06a107adfe0970f79e41060e18bf9f3fabb1574321f33ad071f7ef57e5df61ab07a590818370d5d8ec6ff2ae4ec213d38c1b5c1ba67e89eb6f0de8796204b86e446d91fd32cc3883442517b8954e70b0e28fbc58d0f605911549eb9a2d158b589e6144d66c736adf76c72be5d3f2b5ee3e827ff5535cdb7a960b92d48d02a44f5452524a6e748ed5ab2529968b05e7617e77b8f3480406ff4566c1b64f6d604b46a79dc460951f1b2868220208c88fc9960922ba422a86010e2f8d6355b2029b237489d6f72aea3882fb2f1687f2a1e418faa63c1b815d7f2c8bcf4ea520819bf9b41661d06ce2a809a459ac86c507e6a287108e5c7b199acb73fb79068da40066cfa0336217806017a3e0ed43f0ee124715f21adfefc8521ff9b5af01d9cfecea49a8ab467c70ee1bd1689735f8aebb079c38df5f1406ef50e1512efb2ac0e8e075d7464f4ec5dfb221d4e1eb584c478e1a01820b77814807f565407cdde8380b25bac8b84ce6cdc50842f47125c78fafccec66a8dd43c03c7b0c82765a2fb41d6193de83a898aeadc45ca0a133e3cb15b7b90e52b7d762e0e1c056ef87c333d2fe4fbcb8530ee8ce501d3c86d585ab207428bb472c03033130b15d2680a0910894e8875ab37aee0afc22055520c64a284fc5907fffc5a8e89e30fae8ff91ca2620e9fd6d55e88738a9defa98e45bea7c991c98b72656ea8317527316eca2f38fe7453ae4da9ee15d73a297ff66096d9658f08dc813c89a95b247be394ddadb42c0bcc73f612e4278b58b281409a0be7e667dae0b2ba14cc2d0bdddb900f671e8b11172ece6bf525e0e96af066c27a59168d3de900a5eb5c5ceff0907372ad8fccbaa1195619f9307bd2e0645a65fa8953c7aaedf4dc22f433e0206a95d680345d97481c23e6588ff9018009761a2f6e8e4dabef3ce09229ff9945665ac7551499cb5163a41edce9e02fcc60488df1285bf64364034fe719483e750b90af656f0b14aa7669a8f25b5c19d45f3e06233887207a55e61a638a00924f6c1670997ae375199d0a49f5f413bf8d31c16dd5967dbe04a35ec73a74f21328e2bf0c45e69bce1278b232455c778dc27268fb0978597e5a67ac93d44e796070e9b8cfe6edeb85a8b9ae426432e77fc622eafccea59b331b54eb8dd96fc750be1d7feffd81262884c74efc90effaa1578926dd683a7428d52aa7b63653c705e334f895f614b7d7d92ff8b9392c54429a541d889474353177581b6804efe6ae29c5c4640484e2e9906fb8bd8b2c8ec77b0a8274647e5013683a5ff1f2240d10506fc18729fee635b29a6f3e3c3b1b105b4f2310a88e90544e1022ab6068f5b2014b2a20e8d5f8e2d557e7beb4b8362c74ebbe72abd3e472957b2fcbf5b455063cef7ec94f7169156f53dad6270a16630a1135081e7ae17df58d758a925b25310affb13d9e9727db6970769a8a9a0912e217b37d97b4b29539232e5080109850862f6bf1466124b58588e6079b260a6b2b6cf584b7bdfef7d7a6fbdf5deaf96eea054a766cb44131240b1c936f9a789d8225ddf9aa90920259668824995175871440a30600206527a7672ec8c3b468690eda907aac515128c6088299a6861040a493b4449a28754a634268c4ee0b532a5316184b6d324cbd86eadb57787f6930b7ba7672787edf08e2da8491628af3f3f683e82dc7befbdb66b4bdb61028b77830411c280987c7ade1248744d94dc53a6b4262a3005d0a4045d7b0f974c694d3ad04950e048072dac74208a134439e1bfc6ccf11e9ce285078a4f1c19a1b0b1987c40264a5215618c44364554d9228b2684a8028b1e4fa258fa02258226644259d8008b0f3a6cc163892a4b6cf1e6d79c4c40c128420f78200118444424ed18010c8430cd8a94c0034ee8a0882b96b045f18962850829385005cc949684045410b6294d087d565c31f9c044098410042174e0a683a41e9a13168499d29282606500763030f2bd0f504871c405462600421130286034a125edc0090b78d82206605421b3e2e8072d786a5c985f338e493ba8c29469942650be4ca35041a22b2284175710a18b2840a06205b193a5239f6f44102e2c5191bd2027847494230a1350a8328de26488efa3d567b4f84f56f7e7e87df6bb9976e539e2f264e5f2bcb9beb5b4611f88ddd2d21dfe36072a7e9092edd32fffb49396ead45e02fa8cb5c22c8d7579b252a3d092fa3b7c6c497f91ae35806e49ea6dcbb6ee5d7653ea947ad3f77e4f4115c2e84fdfb3ed750e27bdee76ac7d5cda3227d7bfdefd69bdf6b27adbae64b5e98dd9cbb0fbd33e6ddb79f63d04cb33cc6ebffbc67f764fed77f663e84aafcdc62e4398ed7b0dc2d86f3d5cb115e0cd16f432bceee704ddeddfe9e93f7772b48702182a49f4e049144a740185094c18c9b80b623b1c449b02c4b5414c80031e60912d41c11339e0a035a909096ab3792094c74c694d92f2e9ddae0f684c30914f9946794110ad4c6b494082054824f8410e073db0410f376a34ddc28b2738185c21d4031076fccd367bb461c3014ee0a00b2a4d7001021bb9c80bae5c3902072278828b1d62358a180191644869064b3710424c67c781b891022c80c082045e2439c951f9a0092634f8c11039a882c64d938c7bb0d626535ad2910f8bf9353f7e0e262849c8c114208e04918419b52e92a22891c54845097e603b0b974ca32801c42953289010c203e4124ccc644a5b6289ec651a658a13b4cdfb9966262bd5e48cac7ed727e5b663f39c61ee576e1efe355f21cbfd2ed3963b16089376c550b6994af1a289d012109c084309098e7e90c3a935d1010a110f59cc344a124b1cb1d382a12a4696cbcc111a1d76bfbf8f64c11f97971cf28476e889dd1ff262b6a3ddd3363da3ce9e338c0eebb724f5177d53f97d3198903b32065c5ac033fd3153b105ea834c4ba3167e1c282d8601fb18b896c77abfa54fa953faf82da56e9f8a2d5a06ddc725101a7b21052f77ba48fbb502a43a46fa44092df364fa44c9073248ab6dec274a6cb93f6c56903f481de60fe479240bf46d79d6212fe6d83ef891b8faff38b6e70dd9be97d4bbff955e8d21953119832d2de0f9be97a9d8024ebea511062c8ff5f630c2681ef7d29a691861c49cde4befa546fe547c210522b548752b046b7d8ada58ff7a5645a9a5d45a6cad0d6b95d0524aa9dfd0521d6bad5beb58e5d43cc751957279e75ed72ba654d014d62b466b2d2b535b3d6f1c4f5676faa2efe5674b9363f036bd2bb5a79a36e95bb7d6adb5d652cf145a6bada5a6d05a6b2d35d9ea02a50547f9f49630f2a4050f18e913254af9f4284d892cb96bd78ea203910cb7a006b80d72736e3cbfa6dbe80e1a60afdb9b1cb634dda42c30738282dc2a60ee66bb59c8f8b5d69af78e43a850753748882d08cef1ac0f17024f7e80c2c510c018ea40ecdae47b694b20c977878921d8669a4bdc2111b865188638ccbcb77bef0dba4a0491ef5bd56d080ca64ba6528021cb2f99d294e0219f66ae2302c1beb8f33eef234f4a5baa48b82e52f2595fdc799d479e94b654912aae8b5aa92fee70479e94b65491705d84ff9e94b65491707d2da52d55a47e5f6af2a4b46cc5589f5aea7d6eadf5225efd9e00690de8337a619b7dd63f6d49cb186c253d2a34b7bb17254192c59342a3b5d6ee76776bad8bd65abbdbddad0d7231c65dd7799e0d42ac04f170d7759ee77ddff7352eafeb3ccffbbeaf46450a087ab92fb0e096a4d4acdc946a54a4e0b05ca9519112c43bf987b5bbdddd5a7befc5822dc6de15635cbbbbb536c90993ce765d9625b7d6de7bbb2e8b673dcfbb7ade92bdf7628cbbaef33cefb3dfe75dbf8fd65abbdbddadb51763dc759de779dff799acc9e45d4d265a6bed6e77b716775de779def77d269309b420e85d4190d65abbdbddaded3ccffbbecf6432812018da30f4ae61f89d583ea327f1fce873f2d172ff9794fb4193c904d6402ab91f9412863ea31f85ae24f7879e44b4a2e85d45d18b723f969c0bf990cb7ce647dc48ee0b2cb8669244c55653b25225c9493369a42c2deb234dd4b32c5dd4491a49cb5a28cb92949a959b528d8a141c962b352a522aad1aa9b39aa41ed5a26e238ee44c72bf2ba9b37aa41aa94341a8920c3447711de4862c3608b15682d87c46579b3e638eda93fbfbc1eefe69534aeef71e36f4195f04a26d5a71859a5df4da7bbdebbddf894575fa3fefe42f02a131cf5ffd95ca486d99038dd558bbdf649001489bc7a95fbfd7efbd7eaf53bf4e29a5d7efedb63cb5dd7adbee76ebeeeed8f258bfee5de8eededeed5e777bb7dbca9ad14abf6ba57fbfd27a6fad95d24ae9b5f75aa7d4560f02589e1e88afa5b4296dcb63bd6fd33fbb9bd2a67f7677534a4beb67b7773baa4e19ebfb571045bf29a5b4eb760069dd0f36d3ed72631c04773e502a47284103255330a902053523a8a2fcf1d3410edb014d3f3f24dd0fe7b8a089e401630f6ca1848a27a28051845b0ccbc8184f198114197fe54f9bb63c29945c7f7e5802de9d1f90b4b4db9f1f341f3b343c068900873bf71c3ddf0fb2aefc217dd8d207cc0b729857fee01c709831935ac63f782768ca1321f8dafbe707cdc78f08ac84ed3f3876a618a5e0b67b90101f3f5c30653a45042bc8623ebdce515adc6c3f3b4a10fbe7c70f26b3a04bc3b1f301451d4e797aa20a36b3408764f9cb3f866834facbbf93b0c217d9333331e18bac343432e18ba439874c5569d39f0699526a734699b20d31ae8a56491ad652d22f11c896ada3158cf56562582b981755caa565449dc41034b55c279c7f91a66c9667111c92521d2b02e1d2fa0d79b688b2bf0d79fa941af21c6590a75992670f91e4b9ba65ff274f9923647f1af2f42733e439c6204fd3459e3dd4224f9f2243a65645674c51f65f91a73fc9e7aae8fc7cb68e4e966a75f6cc853c658690fd5bc8d3a78ce4b993cfd6d1d9b3132992270b24cf1845e74c16a799cfd6d1d9431d798ef96c1d3593e6914067cb489dd4d93a1b0d5257a48974914aa4e210a9451a1cc009409fb168a46dd69288f1f4409fb1d66f2246cf5d04aaa38bd6de8bf21947114886ce0654e90d486767cbf5bbc95865e86cb9bf8a40b67adedda70c4dbdae034f94ea844af0dc8dd2767b71277ae1670243eab0eecff106a319fca5c4588744a32a6b23c6903e05c516bdec193d976ba8b60c672a68c16b56696c093f0608518261c84d8608b4d98f6b7109ad1724c8e6920a69d7ae474f9bfd3d3e44f187e6c28f7e30a50a2bdd619f3ead3c1526d4fd0e1febca2575fc2f064cbe549100f5ef8397b46d3ecdf8bd8acb1c6df65371a793181bdf902fa52f7c49cf9dc10ec7aed4ed097f08a6c23662b44acd43596115570980b8b69cad129055ca69b3df04717407f85d898a1cd67d5b25ab549154a2b32a592b0df39278455ed1cbcb0bc6f4f19faed41d2d7b4505f8625d19ce9030f98324a53aa692b6f9619870153acc63e190ed53d3665b5a6ba55fd52bed13fe8e3c89462c7ff5b71263fd93b55aad62642a51abc691c562c9b46ae8c5c4884032d8a17c3f4604ba0f826725f10dae94fd91e48a4351ae448c270e4538109d8ecbf62979ca6087b2bf0d67600b748594f258af27701e9588dae8f01c81c259bf60a4495cd25ab9e5561a623cbda2dc5e9197a461e1917e75386bb3998cf5cf7096fbc1b10565fac4137eaa43bd947591eb335a8014c7d8e5b23fe833e2303bbb68b4f89b94c173d9d2daf9fb9f2dd9daf294017710b64d2164ef5d5441cc5d696554c7bf5530d6ff715b43ed163cdb3cefde83f6bd4c45fbb634ba4f45cfc596b45a2825e0b96cdba45dce67c0ca5f596d561aec4e07762811a592fbc3bac3c7c3121442487860890e4f1821832ba234811264288825381102c90e8ea668820656d8a0bbbb4684dcf6031d062d0969055634518329549644a18244106e352bc6204f07af6fdfeeba2b7f30c61877d0e7c3c70f17acb001f6ab841108b92f103994c062095684a056845a0ca2a8a0f48e0eaeedee6e8c31c6b8b31709a6ea7560ca101643304082116a49885929b2b5b62b7fdafce183e6c3744de5cf4fe9f908fa7ea63cf1c2bb36888f1f2e4c79b20514a1afbf16bc2c28a785100d7010214e546927acb41357da092ceeded871dbb063bdb8307a93c9643b38e172adb5160a122849a02881c282f250a4983bd65a3bc407318a2f866e183bc6186377df9961064630dd8f2790f81349dcbab5d6da16b7ee3ec39d61064428cfd1e304e72417b483886fc018bbbbbb3b761b767277063c9cbaa609599a116b3d80718d24a08872031e948cc0430c4731058ad077e50c37d890b3e1a76718e2b0af9cc15ff567701b2ccd8b19a858122285891427f6dabc98810af116032c31f8a2236df8400c2b37cc507f061b86c030e476830d33e4a064b9c1adca7e8683d362c5335263f4821a4841e5065910014592269498987c28006f600e4ea7a1f036da4e1ef086c8620547f440061f40819426926a5b28b14a4e909099d2a87822c3644aa3a2888f871374408899425163c1141ff0141e7af4f8f151e381098ea850f338fadfef61a4ef25ada1d73c277eb092f776fe1de999feb2721dbf5a9ea6d26bf33e76af2bdddea73f3c297ad260ad618c674f8f8655faf24f4a0b9598ecdf327ef91c5bf239c6e473f49a1bcf9e13eef7f4a03ba807c54845be35b0ded59e70c625a53a7eb500bbbb9590bbbbbbdbb61548ac304245071980200adc932ab6889d5ea63e5c1a3ea16e1e08c1a8a8053c00638818145a13514491820a018d91121081881e5079a2e8090fa040428870088c1e7a48c114445cf480835847f10416539c40650ac594233eb053850af7fcf43879b9b676a4b2f7de7b814839367b5c530d04a632d3da951b6431539a144bf86ee00d05a21129bcc88d9d90a0bbcd4c6952d8408a27a7dc6d87e2acb82e08dddd9f281969c15d39240230340cdfd7a7410efbca21feaa3fa4fdb613c510a14b59b27ea3f041d541426c41843c21fa71db102894e082b1bb3b4dc9fa85418b213428ba70b11e14481d09439b75078c67502182080c19024390ea3d7bba30be64046018e28daa19994a710415788d82027606518ef23288ea3288c21944dd0ca26c06519e4118981718d50b4ccae505a66544bdc09cc4107c81317d5e875f605e606a4e34a490e9d71a03909e30521a0b90644a1bc276cb9496c4497619dd51b12cfb0eb93e7dc1fbee83baef5f30fdf741df5311a8061a5e001f7f10fef0c37203e0e3507c2c964ab97e102ec1ba24abb85c3fac39b0ac367f7d0f3e586ec0f4df173e18ce40221352d277641aca958a2fb45ee8fefbafdc80f75dd9f2efbe488cc65a41a6ff9ec6a84803101a3395f52b6d41bc6f05e1727d1c8ac472b93e91181583b4bc0c52caf5bb5bae2f0ac1c16b5ac565fd695b03effdf32ae51abb64eb05fcf76f2dd7c7f8310edfea503e6ded12dda27b546f7f5a5caeb18eb44a65eb85fbdd77e506ec52ae4f633416a3225050ae00f6962b0e382c79a106418929643122568b25327a2586cb1c88582d96c86232b7d2c511590cbfb5e1eeed9218ff2d91e80dc4e40bf7f14e3e6d0d488d517f9d663e6d2d7bb524efb6e304531cd164955669a728ac9862268b9d748966939a87d2b8020c1d20c9624ef3d7ac46642baab4a37acbf54f8b94ebbbcc612eb6125c91c5eafb90fbcc61b6e6affab63ccd9d7cbacc9368b97acd6d375c2e9f4e972a4d96ed50ae0f66fb4e9e27a50dd143ce96d695b69f4e5bf34a7398cb2ccdb33587f1a022095aeca664ab352ccb540691af88ed93104ea63426bef09a892b36c80f3a516a48c8f8daf611440803aae081cfe87e4f0f97e7585afaea2f6fe997b4c93e63f56c32a530f0cf18d9ff7cc97f062a56cccbc621d6ec89cca27ab4f4e51be353e28f8f7ad787df7a8f94216b6abe6ccbaf2b63485a25f7b348daa64ba922699b6279ae48da66aa8421699ba8b285a46d8ee549696179f6e4fe139923f783f7cfcee7c7883113fa8ce2cf8840a89f091fa4a1a1f9d06774f9178152ffe20a358f0f92a1cf789f1481bc27c515cad296a5772dbd130da8ec5f0157b6c195fd3b36aa32fd9315fef9e29f35a83fcdf1cf1c973f77527fe678f913ccf43fcaa3a6da68ff93de5a547fd29c594120982f24f597aa4ce5b890b4cd96722451246df3548a2149db04cb93954f93faebbb644de5f1a2369a06d5b9c9eda53903d284e3c862fd9be6ced9934d93ea00a1f3bed3fdeab02f66895422b58889482de2b92620045ab9e5b2d4a848a9ddee496a54a4dcdb28776b3156b252c5dacac493acbd178571d7d97b3146759de7597b5118771dca83e1fb30aaeb3c0f9523c76472a2aca44d8ab442cddf7724a94dfa262799be89499bf489daa448323dd2269d65fa566e5f2ce55ce642596e57ac2875923e72424baa5191d247ada49314658aa54d5a73990ab549873295e5bec0d2b33ed246725f60c1552649546cb56e252b5592aa93caa422e1d02695d52395a871a84549327d475265550807ba94a98f362903daa44add1168936281e1479b9452c9d4479bb4a6d6efde6993e6c834a74d1ab6493daa43699b3447cd52d3d2dadd8da3b35428332ea91063fdc619c8fe5487f5ee97d9a33a0eebbe2355fdeaf1737f4dc36c537bffa7b17ffdebce05481db6043f7d2f07b13aae06727ff50f52bdb2d2d77781dcefd1e0616411400d23d350a94e13b1981432b484869e1c83998bc4bc07a9c8c2f734d4303229e4fd0e4b68e8c936f80da7d5ae5024f7d7ec913476499a2dd9e44924f77fa4155b48e5fb200eabd882d770df062fd760c3e8d97ea536ecdb2ea422013c872efae3102fb1406377efeea92b2dd0ded54f18973478bea5b54480a0cf689dbabb3b7677ecde5511a8519e578184211261f444156a18f907cd2001baff9e8a60792a1a5b2d1c3192fd2d901aebc806d231d3831e76a43b108f991eb461475a6b81d898e9c11b76e4bdf702b931d38338ec488c31c64070ccf460177664d7755dd701e962a607bdb023bb2227c2dd30521f2de5684977a8cabcae148b309e9628fb2702f162a6074db4b6db8b3bef7416c96ed455b12b5b2c7cdffd0a5fa744758a642a76a20a7608bf750d2c657f3b94bd94c17a0e2a01521c23e8f9785a99e94f96bfdabe2b39ecbe2dbbd11b1a6bb6619bcdc20f96a7672acff12b4f96579eaf94bdb75604b265d8663bc6d87bf73c201dbb6597f39792b1bedff26989724ba02dee70e3b6436e87b2f58af08d02a435270d129336bdd6ced6824acad0d91aa98d186dd8489dd43cde513a27d97ed784f234ada351188fb7dfd528ec84b7df25d11d3c6f4f5b84c29f564661f7e62f2250d3ff742b58509e9bb3330af379fb9688c276bc7dbf5198096fdf711496e3ed7b8ec2606fdf9728ace7edbb12dd61e3adfd1ea23c38de7e1ba1b01b6fbf8f509e9db7674fb6e69f66b66de2fc0e8551d837e4a23c35defe4861dfebed57ba43c7dbb79467c6dbf7284fcedb0f290f8dce96f137529b9eb464acd9997412ad79bea38e4279be23a8e9ef7f6f0e0b6bfeca354fa8d4e62502e50971404d14caf02e65ff6fc861a89c13396c94f9cbcd12a7f4075f642b83357c91323deb5977a251177551872f32a66c4f346a59cbbeef63d9f8be17b9cae00d5f240c98a52ef983387c912f39876c29419a21c458bf68d33f146bae76e18b54e59610506ba84dff534b1624b3e42f2023c6d38b4ce51eb2351bbaf91bb2c6769015271ad51bd8b4f6e9e543d2981d2a40c768644a4ea1cf78428d2814ca14be48171e644b26b34475fc9f5c29ad6caba415d2eaa8c85f31366f1353bed45ea8bc549191caa5acd4a46cfef29a13c85aabb4d38a88eeb0f1299bc3ae885242a144a36aabb6716c7169696909c317d9e22429696c697149b9b8b88c99073993c3511d1a9aaf463b6ac99672b8194c90902cf96af119572e22d00aa94d9f79b0aa2af5532a953aca4ada7c91a80c235bb2a51c8eeab45aae18a21824314962ac682b253333e39191a84d3ace52b65415ba82964b2aa57a51a96a2d4ff9041e3c3d4aa11d3ec6e37540f578ffef88ef08e6cf0f899604cb41cae47037aae31fd6562bd69fe12d6616732406490c0f7255d43a92929c4e964c29e594295b4d525434ce64fe1c67295bcaf652727494f219819056483095fae9e545047a396ad331264f195e2b25d9ffa75fe42ac98b14730eb225935992c9511d977797f7544c514c921825aa556dc5649524875c15bd9c5e4e67caf62165ffb04694c7df41b67cc8560fd942f2178c67065991b4e9950827aad0b97574c44beb286c69790f6fa7ae3381acb21b966cbce89075f6221ad5217f700c5f24883a52c264b4f9cb490b950bc5507c9896f0457e990609c3909b0c11c0d9b01267f0075dc217e9e519240358a2107f3015bec82ed3207dfce4902efcf09f410669d33f460c0255e18bc4398734ba4f83fc1ba4d08ddfe16337ca25f64759f3cc647ffafa6a1f7f7de178b015fa8c38f0ff34689f661c1f2302e1c041d6d5cb882cd832474634dbf4377b6444a31d1d3a74ccbc5e074933918c2bd5b12f2302990fb65aad3662bc390739939bb141cedca80ecc84f70f71e0d9f4fea152f3506a9adec13fc3dbec0892f0cf5392bffc4d205749fae5aba222c69a36fdbfcda3b1cee4e88ed7fbbbf8ad2387ddf7d39f29db2d5745aba257abe50a7dc619efca7997089483673ca6f1339e8a40345ea4cde3ec45b3fdf2ab34d2f17090318adaf4bf41c648d22fff1d32869236dd96bf3f5745ad9abfc6992d6705f8623a65ebc8a8dac02e578cd0677c7d0c11288608841f044f6badb5d55a5bad7d7dd7f8d75311a8c6ff740c71859aade71cd248e7699046431fd37954ce61aba251360a35cfebfdc7a1e6c138ef8946d45f495e644b09d9426ad3bf06d962d2a6ff2a78d666e36f0c7304c608cc50cd56b2f7276824fb9724cc256186fc65ca396c86c85f3e9a72b3fc3d49cad0649248991922379d664a99191231a8c5c145526a7632339821991992cccc3bb5deb6484a75bad21381ece939a63c634c59722af9048dc820c928c5e0428616a38aec8f82199a2192999d7032493233991acc91ec7f7bf4fc90b74aa459373c8020aad6dab6db6b4163c9eeb84cdf6fe397c378faed5e8bb167c3aefb72183dcf0bafb495b1be1cc6d31bdb0663fd50546126d3368d643a8ae215150a250255ea42892bd43c8e2d2dd6c54504aa65ca25d532a650a9542a15938a41673bd972dadc69b3fdbb6354c961e0d7f79bc34ca58d764ab25a8eac3113090e75b523b0287757eb3238b4c558ff04874092c64ce468848bb895b6f7f5b1f77e04ca63396085b2e4367384baeef3f077ef7722d0adf9d69456fc36fbfb3d3b04ceba1a38e4d59e6cd762232eb3dc55c01a6c3e1d67e4799f4cff9134d7faa6fa3fdd35a13cdd136af677272577bfe31c4b579e9ecbfd31af5ce2ffddd73206fffb1594390531fad36cdf735b33167fd0ec5f4516bc0c8fc69a3149f37702bdf254f3575ba73af6dbab6fa0a98e052bb58dc9ceb679ba6e0b3b51e9d7a976aa559863e957bfe3da6cc735edd3fd769961c749b92baa990e9e1d98093972746ee098f1f62e9da68c239b1a37264e521334255c17b030f711396cac9171646343ca14bd6cc898d7f77dacd70c1ccec6868429026743be64936c6169337753b67045e06ca4d468ada42bb8f06643a6320eb265abd19290c82213c81acb6163024963b4d30935a250a89b0de9a2836cd15a4954c75dae182c22d66cb5b4caad70377fbdfccb8c0a894635a3e1c1dd703825ba63c6ab66ab1b0e37e3358e2d2e2d2d2d616843b638494a1a5b5a5c522e2e2e63d641d2201db55ade904b86a325211dd95b914d8b4b4ee6c1aa4aa552371b12956f902d5a12d211d561b1625832199719ab8c4a6dde94a36aa63ad2b016161c0e77c3e1b0e4725770f994c7998b6d979149c9a45ffee5f3e8d8f99af892527f7e34596be9860ed9423a2a5252bdabfe65b5e42f1898a70d5bddde922aa22366a99a8db6d59fa34d3553cd6c6e70371c0e4b2e87b3c1d9d860b12157576e36a49875c816ad95d442a23a28d4c81a5a5d69d3df2457b796b0a54835a365ff50c961a3cd5feeae996b0807d9cad96c37ca160eb773a3c2e15ab8f0747a0f734539336eb7192f1b12145d337f61318145381bf2cb38e68d0de9e51b1bb2cb38e68d49e2bc0d89f358d43c364a1a88c8b28d7f3dce639cb7388f6f6e70de5a9ca7f9e6a6ec19716e707070ecab468d1a36356c6a1e6cb55a3837eb9034483433489a22aa03cbe9e2c37defa63fc3dc92bfaef4cb5bb3db8d0689eeb0517d0b17fea99add56379b1bd3bc797c836343daac9ae12387d1307a1565efcfd5cd3544b672aa57d9c2e166e0703636386f83e3d9248d5e8ff3fa71e6b0d56d2c4ad23c36ef3f1e8d4a9a07e7dd866c61c9b5beb8c9b8bd6cc8b6212b0e6743d26c92aa2338a48ae8a654cd6eaad9ed4ac35a587038193635324ab2069bcfb1a8a5e453685433d58cd56af2647533f3b9baf9941569f33932b9f993540b37d2b27fcbea8622cf1612d9ffd4c2e148563e5b381a21b2bf87c3e5701127e21f0b48400ad68aef65217765a5e6bd6d8166c1ca64f8decb82b7e8e00dad053ae30771e8a2003ce3ae2b69f0fbfdc407c2ac5ac0d3c78a5181a7ef0361562de0e963c5a8c0d3e7eec9cca042199727a646199767adbbb5f6de8b31eebace73f7646650a18ccb1353a38ccbb3969451c3c64bc60db9732347c60d792fc65dd7799ef77d9fc96402dd3d99195428e3f2c4d428e3f2ac2565d4b0f1927143eedcc8917143dedbe1e0c1a9c191a3b3a161e2c8d1b9b8984c20088661288ae2e97442a12c0ae55d511f08b36a014f1f2b46059e3e774f660615cab83c3135cab83c6b4919356cbc64dc903b377264dc90f7763878706a70e4e86c68983872742e2e3e3c545821f340c1e7070b3e78a0e0f34f45a0000ce06b0d800b7f02007e02e0c23f78a9d72a02c10ef02d0221e03bc883eeae80b722d00284c0fe8a403db107310dcdff745bec99c2183321759817b302fbb36f3d7ff615207f362ec89f9d3bc09ffd0502feec25217f761605fce9b205fce9420da0df5810e0cfc6417e170640f3672b71c162a954e31886417f3a5101fef42203fce9472ffce94809f8d39318f0a7d3ba580318b00005244008025e384010030029400f2c88002a7c99a6fc01b8f0ef72b1582ad53886a1f97d2250001e34853ea30b6f3281201886a118fa8c01785104fa17691e3c9dece9e45d4f336684a7d1a58b759200fcd947ada4853f1b29c9853fdb094d4a8d8a00e8b7103d44f6e181425661051f3f5898f1671771e172b1582ad538f6ad71b92597611a01900080fd09b1ff39e15300c0bb90c2f7f8f9167afcff0780e6cef001ea6101f623e6e3841500a0420af967470f149e07cdbfcbc562a954e388428940340f8ea1cf78c28f22500a3ff678b0a5a525f62e221000dee5e7c154e833d27c4a04fa4fcd7850a5b22a957755613c862e2a181cc342f367cdfd9ff58b1d7fd6a51e7fb6ec843f5b28853f7be8e7cf3612fbb36700f8b38f00fdd9445cc0feac5de42e074fc5fdbb582c95aae7cf3ef2f9b39178fcd9494dcb7f76cdc79f6dbb33807c0020967f5240e1841e3c76f83c4d4f0dac54e1cbb8ec7872fcbb5c2c964aa5528940383ec7bfbcc0c0c0ac562b168b851f8c89b13131de35c6c5e5255cc5dc18131c7fd6242726fc5969b51c7f562ab62a4a5674d0af48d4176452c6cdab868d9c9d1b2eef72b158b9a596f550cf9ac8621d248db779f3713e0759f326901d0eec2ea4cedfa0d99991636383460d9c9759d6dc7432f0bfcbc562b1582210b6f9181108e7636a1e949191a1f12d71859a4dfc2e11a87b97cb833162d81831bc6b8c7b63c2968dd12c555685ca3feb50cd9f7566f3673d82f3672532ffac48f28c3f6bd19f3589ce9ff588e64f9a844c1f03ff9e6b862eb9fecf9a44fe596932feacb5b3daaad2596feea2934363c6cbc4b9b1a99151921dfe1a9af296de8cebdfe56ab5442019d7bb5c31628840dea74699fbe0777d6b3d561325d3cf327fd21aa5d2fa93daa892eb4f6a85dee8158aa35832fdc0530bcc2a9cdca8b4aa5b4a821c64a848460000000023180000200c06045918255118ca3d1480115eac4c5c54341b89c224465118844108116300010000000821c62044432b088a590a1be880bb2923038096e8657a58b5417159d329ae1bc189779f63db04b68678155751099af60b4bb443374216f43782cd81b43af4cd1e5c374565eb55dceaf8490c759b6e7d56be747019a3dbc470c89d7e77192afeb0819e095e60a2b440a0ccb952c4368e0f2d337c9116837d05fabd513e0434845582e731f14a684a9870f6a8ab42cef508ab4a2b53f7634137bb32b3b4ae5469ededfb01d6a675e6d3bac5d24f30e34f5c317f080bf220d930a99583b4ef69a9f307e060e1217af5074849adb3959587febc7fe8297a6d1e723eadbc8fdefd603facea0716bb4983d03b62acfac1597456195cfdfa50a05c6f0b0a592c7a92dc81d1838de9cdf77e01765eba33216dce352eafcdcc35cea61e8015ee15a24de3f701670048cd0aa41e37cd4d01e0d24706a4f6b5a5e262e682bfa1cb8121eda3203a45c50065a7bf643e2c901fd2a2228423f34df81b8e152c3e18b1ba72eb419ba39cf954afff1940e9559b110adb6bb65642d3fdbccb8c35caedf366d2a10fd29a578ad6645946ae42f339d15ce573535b3f530f5d2fc07ba372e09236a56de3b652756c21a09bfccd86251196f42e64ff2727a54d29bcf517d4386b98fc6b5af15dfc32a57a6acaa72282c235033676fb9baffa1164cd3223a1e3ac143ba1127bcbab65378910131bc70511170d7c3e325c73df057713abe8173eedf77f48f7f94ed9c7b562d2b60e2311bbc2828e3301813a1c0a7ae2fbeb0c00cbd0a410ad0edf486cbe5a2786d71d013da9031102e35f292b5b91c3182700120abafb64286e75a3b103a91e03b2bc22dde6190c8ea1c5375712b25676e09e8c1213310842f60e151b04f2e870bb850588690bd8924184b3dd4e0630a0855feaa9b679597d17fb1b978e15c7abfcbbc78a42713150462ee760b27d0fd51fff6ca3ded6b03d499fd42f530a4f59132bd3a8d34a818c799f465b82e3b706efe839a6bac4c7d2ddd8bc079a0a9df4673f17a356b823bed9471469c886376baf050aa940a7b09cd7fec4444ddb50768434a859bbf58054c8192b414fba0c6610624cd62f34682f32ea0ea2dfc26af2f1ccfbccda4545ea3205d2dc1c70661fdbfd195adee5764c9f050f70d9db1286623abe280774457a2cd82dd23805c86e579165e427c09e96db6828d628e9b85a03ca0393ae27ebfde043e17fa332c5810b4dd2532710ca92f28d73d1d342fc8451a5b3ebc300aeab2f41a21ce64341e59eb52c2e39fde6be25a106fe309972b5d0c94290302577f2cbc0ec3fd64275331ffb24f80ecb88006f4254e7593378a4b2372f9bebf4bacfba28f7efe80b0a25d6131198a383746f8434a09a25dcc1cdbf117007123266052b5bec0520ccc49c8139e0b99186bdde8e20cc51b3c8aba5cd27e5163d5046a24609a589a49a223486ce898485aeda38b87f9a48304eab39644d24dcf7a8ab40d1fc6b85a8d61e5ead4a568893612e9051baa1a85f2640d32a13fa77cfe73221d3033dd26c9820fc500e41e180b2b04c10571738b503578c1a75531a70cf39c5915540912ea06e020a6bab808daa8ef509711263ae169f05647d02cc3b0141774f383738e6d720640c744c9f20d2117153dde1117d468c943e8f10615fdd89d43fe8bb93dd0e9cbd4e312361de7d778b1aa6368ef896b38f05a9f56d2557ffd4cdef287378562223b6af52ef1929858ab2a3af990bc3856ef0b1574c6be03efb51d5132433ec19ace804a533d020ca8fd852fc0f431beb944ec0754731c216f7d0badad00326b6450f05e4243a332c904a58a9644bb4887b8522fa57d92388f7aef863c439e0fe80577065c4719c5dcbc0137a059a6bf061d715b453c937eb8f9f8dd201884c78ab864d15c1b6a8d6d0ae4507b6a92dc77c8944812a936de917199b3549c4e05f3c2cd530ed2c202d7c4e2adf3ab4103158f535189e85a2c2c775d286a2deab90a8fcd195cbe8ae950559473ace3b3708e4ee6552c99160f76d80dfc03a8a105c60cbb10b12abde3b94edaec0851e8c731fdeaa04c25ec7558940ec331c547ade07f9fac7d880e2a223e3ead1b5d23019451baf3b74dcca69705e3db86774aa0929c45562075131a06ba634eb8528a3dc81d14b9de80e6816c626a2bb1e207b7b105c10b038b7a8c6a894342d2ea26a96d4930b113bfc69182c7a361815f5b8cb3c3e7c507cc397448957955cf84f0ab6a46236bf80c91683d2678a4d0fe076b1ab202255474437bae201bfc05b2658d00d26a0c0cf3830609361425152e224184f094a3ddbf10b130d87645de12b408d638b39309049a19aee95082708c2194be7faa1e80247e3ca52cfdff2a819a801aa632c377662e096007b298978ba0358808f06c039aba68841d1a75a10dd8b01de3ad2a8b1ccfb62901b1306ae186c122610eb0eda808180535ca1a7263e1579f4405c40b8e7bff7dcedd5056a30e5758fc350cfbe39ccb1f65606c9b63191bc66777d405919586bbe48c25cc8de99b6f6d0d33b5df75c3b2b837915a6992e4c858a98907aff944dbb518b7c9fdaa9aab74a521b79f4b6a24021e39ac80231dd4009c4640295ebe953b8a42d163050d683b88d55e1621a24996152654b04700947112bb884f8278c44009006de2e1271e4c0025adf489b210d3a2ebc49ded210d240f70d11f2246da52ccb789d60e40906ad8a7ce6ef9404016908c6b56ba0c24c7b555a609519d7f0c8ae21a75fc3ae4fc6a9fcccbf06a18df0302b888649943448c16b58214672cff01fbc8644e848e835d0bd0243efc78578d5d3100e6c18ffff14078262d7e4858fbd0628d535c490353cbaec88f81a08062a871d71a884220ce81b7b8b80202d7780a261950e84092a75c37f30b5151d067b92be0c30f63383ae8000b68f0d9224fb28ccef1d097c09825726724bf17b0a27798285c35d4bf612af2647057671dd285daa516d3f68c96e0ece084fe92c5f8276ca7df6286c59d60e6e0447f11e8a07e106ef53b3d1e1afb08d5d0dbb1369960acafa09b9cd9f957603505ee1c65726cc2dc9dac3a8285222da0f7c3da56174f1e46e9b89b9e209a4ae77fdb870ed35122904565e20e6d526823d4b71e3a818222dda0f6e79a57174f57269976f6780a5b5a03aad054bb1a81e3b7a36b86370275bfdf1823d503169c7c7b889e3b732dbb61778b65fb270786d40ef91522d657205a993c494f198b8feb116bdf8452b02151ee36545883f4cf62fb97a0ae764e57ca061ae9fa808a6e0410212aa5681113549778fa2f53d963ae1d9aa3c1f8dd2b19eb12eaaea63d01ce041db752e3abd772e21c89bccc1215ab2006c411f28e36d474ae3380c1e9824fd96a2be0456511f33c5c42053f46e29b45deb6033d4ba0282ee0d674b93e634e00787113f2d4550ae90035fecd0f6a1ff8c31d094ab7f57422ae8abf55edec9eaf439ebd038fe6430a68146dbb3759ae9ca3eae64c326834a495f15e7902c9ee666384bb40e5c5b9cb7e08e9f700ebd31970d4eb13f641e07bc105caa387894c89b5a3364e298e9fd29f054dd66343d55e9977f7b4e1aaf6ce25ba90f63ba9c21384080023570d961d8288aef0c03b8729921c2a67b291fa891061e0cf43720fb56d0a956a3f742f10b1ae86b7251c6dac690a1a0af8a1436a82256131563e814c835fd7910e27baa6f29196209c428418b71d6a523b075b4024dc44c115015abc5003a1664f866aa663ac341ec9cb384d6817b8bf3467015274010bf38420801bfcf45a7f74b462adc8a3f8a7cf588c32e7ca7eef70905161fcd577d97d373a0a2ef6a7df6db53235adf6756e047ecd269114471e0e311e13aeddf9966a87f14f6d5d83aa72588f47baaaf61f81fbb97a802723d6d1160ede71dd0f6333a9d1b766e0f6b06b8bea9db1cca9a87993967c996039736e76de1f8488078bc51a09200139a1fe0b1489e4d4f2c648df398086261887555ea721e6396a35646f73d5682f5b2d784d6ca78e3082590d1adbc54470050fd11a709a62012793dbd0af503a89a1d841838d2db755a403a04ff0889a50f50935d238d811d441dec3ae65689f5d05eadfcb1935c0d0d31085832bb18853d173848ea283f8cb785b9fd06def84c311029cc14234a355b18749beb80ce1a3883f103c6a1df66e4733af7c8a634f811b95d6121c07ce2b3ff854e5c5f56266ae3fcf79464e1ed9c1937a061cd8cd93b7cd384ce858ee6ded55e3f0b23bbdf0b5467561061670004704e275487f1232ed8e327e4eab451ec3f9954bf63152876eb9e12754bb60b873c27839a0b9acc341322391918d3a481ed6d9cf67c31fb40da90429d71923ab03cd8142c83857773334e296d733db00ede6d7c7050725043b33681120f3c143ac49e356c0dbe50d91b9eb1ee87511b1444afd2043293b0ae12b894c7adfe28a9c529d80f8feb0ec06dea7c25fc0e66df7e7abdfcf78eb8a0e3b61e720a64c18d1b1bb30be944c13dd7e51d00a96e0ee2a7afef248e89285bd3311be0265522649a8d88ec05c9f25a664b550214ea1fb0c8383049db3044f04c8da434aa207434407239bf2f07273e9fb1627121fa1a2700166f98de8239852bcf5a1d255da404bca3d84da6f972f8847b7b4543a9334e6e2a6681169b4ba67f1495292f84988399c4de476593be3f369d742c3a7c34d1de497384efb4c980c6b1d30abee50711bc236fa1ad7e82e5fafe18beff13c1dcb0fbc167fcf68bd8b03d4db24f02b8a2b52431dfe062b2545866186c6ad54efe45a0d20447c535e8fcd4cd07c34cde351fcbb0060868d5405bcba0d219e8742f5499ee0e1c61eaa0ca2486c43f173a410b34710f392b017c6f8f5f9e2f02ab02fe88a098a9d99f603edee8f503d36fc50cab64b46d2eef3207af21b4d143ea6e39eccfc7931195d65f293fe04648acc5d6d6fbb50411018ceb3c0cc81a2fb4a9603963df860b8c89f1a4b5ed601bd665e7ff6162fc14c5ffed2b820867fd74e436fd892e3fe8d19c7f8a3e7d40352bc825f68022b341a9fcd2006eec888a4bd0ed0caf033926784a506c1a27d2e27821d88881d6733b1b81d626ac55a013866f85159dbdce385cd42052f04c473ba527ec22a09edf041751f1f6a4be404e23de9393c26d3e3e831b913c7c5a89afcf860a02473aa594de8e5ebee70c5c62948350d4c8cdc31f271446c9572cb9f41552262c49bff1f346026421def063a83d6f0a630929edbb699c89918adb42e34f804489be2c3f6c503d823c5aa5ff12c0b2e892281cb157ff2e17dc7fc36a5c1231b6052d47e1ccd61b3b5a11103edaa2532960638a34f61c92bdf74b013cb296f437284a0956dec9ca47d6f6c9ab28c5ca5bf10efc9f9de77f4964ca2554428c8c8cc82239b28b1ebee5a4485a020139073486e0d0f039f3474f4d197cd0a75b140d53e241d154f910ccf3d494911b6839b225c088b359a27f414a68a392941ba78e74837fd6650ec340f950378e9d624d76ecf7dd8debea28afb5546f7c96769192506951c55d1cbc88d3d7446d79386e030fe0e72c72e1cb62baa7c01af5241db20c48757c2c439e5610876d630ed8eba49168209dd0f20d6b71b307eff6d2b2adcb7b1b0b83d610223dbdd3c74074ecf1a92a67f7390fb22fcefbb84acd8d730b9e2aac3daa42704c08d5d3fcdbb97c9e6b03950a0a9eb00f1662114d2098e9f51b4e84c8bfc6fe8158300b096c67215dcfb9232a09512a7f5c091f9135472005ceaf536a4338d70135b1bcb9fcb9520c6b3f45e85eafc93664c70c96a79ce202197112d2e65eaa147bfccdcb64ef8c2aa06e38013a8c01b02f0f5d1143428c1b0a404b8f2aeca58bc23443502e9bfbeae28319a61d17beeeab019b9deaeaab0e1dc42acb8f0eb68aa588576cfca010797050af8810d99e17f605a9d5133a4dcd70a5cb696cf2f4ce3aca477fb7ffa0191308f7775018c4275d15ccb8736559e98663beab06b6ec3e9f88a534a23ed2086939883eeec87459504249e66ea0a6baa1c86490f2bc99c890a6fc8c57d1f9889746082b96ae486e7f1837472b15847cb22c04d84c20fd87055bd90307f820fa03e35ecb79d0d71b91588ed1edef141285f6bc127c23807b4701221fe16d932b1e05fc51b32c8f0011eb180f470ff44bc68e29f51a807efdd1fa6e875d652922838250cf25906a7d9b039746ea1309f902a63e6f7d90a1a9771ec3fe3e4336f497f9f4530af12c2ca78cae8a23762c2e3748f4b22ae75f67cfc57f42014c80a7be7fdb20ad601e3057f58cbbc621baea27bdd528b57051b8690dd653688a121b6e25a789012f26d8065e08993fbff2a3a460651130b66702475fd2e761989e3ecacc3d59ef16bfd597c59b95dfc29173446f60fd06e79c8b6fee45e9dd40c83727e10321d97b3788f2cf81efe43ca969bb6d4e73e693239fcde58371a22e061e0958491506b318414bd69f1acb8388cf22909e95ec09c596740c0c65770311824a86b2837f9f4848c89951ff9677fbeff219d41215cdda64704e65df87d353852e98781b82f32bb311a2db6f4e9d905eaa91dcdb097168dd339303e69eac8cd9efd44bb448f7f3529e3de03fca96c552438e0c33956e7c46a8c256458a113a73c4dd495eb8a90aba6d6c8d225c987502b01d97816a28d6d70ac1c736e1b0670681a65dc85fd7f80dbf5442299dbebe6432302194931a661aa96cbea2b33b1b0acf4233a4503ea242c62e0c028c43f1abf0d904cdea846223c21c4a0902f78d91b02a2f344031636f876f70bbabd5fea06370ec61e4643e6c5e5f90bd225a918e5bd9f1cc47c7f3f315a506918a653cad2090036546b040d0c5e64d5883e2bc004d870e0f22504122f9547befdc5ef7c1282611c031ec1dccbb3dad5832138d5cd4784f9f2d8811bc4f6a642d20d222f720f1de6573e05d081e24b786b338d4603b7a478f7c2beb3aa1b205d371025de63c8e5affb29bed6023b6cb46f93ac265e1188a8076f916f26060c3418efde970521721e4a5d395840bad2367de892fcb9f28ec9d1f033b77245c98d3c84bb00e6c3fbbbf6371606c76b39c1db53116e88c9d4ec868c3dd71dcbb07240285d3d1f45e75fe125bc3e3101d1ecb12b38e510a62f12bf881c6928e3e7a12f9cd8f681456d392de24a9ca38f9861a64b137e0511388cd0301fb3d170ff7996b6a57be4f23e75185d48e7f4edf18c5971a32bd8bcb7b4d8aca29deef7b787549b3d9a3259b700031800512158b7a209e5872ad8abb6aef4503ddd1b6311879e415936a9e46e89b80b53e775a0bbcf59905e54ca09f8ad550407d470e99cc3d1aafc35068f2b2810d27ba9c2f33a38324106009b43902552749a0cf60569e2be91627b7a722dbcd2146f0df50ca93220632309848e850a0bf752d8172f3823e04617bbaa1a170b9072994178f0e0a5643079de072d472220b6795e35efc413c84b6ccdce05fdca8e02e0a46722b007a06e9767782cc78bbe4fdb15e89f1a22870dd938e237f50d5abaec618c22ed87033c448531c359bd2062cdbff5f042573fb9b72cffed5db699f388da1dbac50ba3c2e1b3fab19d4a84523641d8a2238388b4595680c6f1992dd85ea00f8ba41e0d8478d88466e0d0fe061e9811c1e21fc84eda818b787d6ca19f4ae93d867e871bbfa4a813161813f88ec4d9625a26148195741746c89c66898f90ec67468545630fde0d798711731629c60243da3d8bccd4106cc76983b99c5ae6be07f0824057780f5bb8080c7d0be6931167102f93730f43135c98913547fd462f90f42c34f8d62045f556a0f41b8548bf6ad51f4ea4d8bf77c28205725279bfc35e2c018508ce6600361a3bf5c3c6a77d38698fdfba8d2c245cd5a87f690946ccfd166477cc981ad3a36ef611a6fb577dfb68dbda44d91d99acb012c9f2130169217154a84ba32c7a650ef847c4b41f90860f0f283b61a8c0dafc9131f60b5d81a166df5088cd45c8263b77dc4fe6a9d0923efb73340c6575641299a5a72ac93d0b82c56cc32aaa6df735ae524d36f7ffd840bd5c36dc053e76027d361124b2a68496083264c93a06a3e405c27502b4205bf50a9122e7f164a868ec652f4d59a8a055fb2ba31cb0305d8866560b06d84d8f26f3b3076c66bc57fb28b3c0cd58c1510fbbf0c9960186743957dc4805b94bd93887c38899f2a5f0047aa043e2a81254f0791a17e4f40440a0622584e49de9d612b57e642e976652f0f0686940444adb367ec2efcba4e287747517fbc0e580cb7a7b715ed02e4ef6a4cebd80281fd963f0c6c0e07ba495618f9572d99b1bfd530963ad851abcebe87e6ac3ab4e9ae5299aa46271b9ed964a858b1cea84dfbc508ffc716861612e5ba94750347c4f6bf11f22111a264847ec6bb1ac57f58a01250170cc02b61828f3a81759cf318a6bce151f0acc4759bf146f6125a649586df61c54a0b97a12c384f0a457d61e968d289cc0eb711fc24eebfb431b0f2b633e0fe9ea80b4cc01cd31f04e8cceb7e166df5cc792330ab98df2c55fa521d58e2107c7a4bfa0c50029bd6ef4534f6d05d20a00f8d7dc49d0f5de24872ff5d5ce617325d05e853e008add7a8c14d67ee6a98d85ab1b62ba5c74577cce6f8eccc28e7844450de4d1ec57fe9c1c405c1a07de639b628787b03a4d5d00aea5070bd87680c3edca9b1a680ddf13650919c61da285dbb51837a4a64ffce6e4bc2d0bfac44aa1feca83bce0f5f97dd5a1d6ff3fa4e9b64d914e81054ff6859f4f3d725d871a132cae3bda9bf944f0510bdbffc681a64aaf3b05fd9f88ac32660bb451161e75ee0f1658b5e834b360b7f89854bebc78f5f8635269b5c129a3fbd37efdeff416f22fc3fa2d95fe4fe8e8b61be9b123415e457e3fe85ecb852675960f19e1f0ca6ec5f0013375316aece7e73afef01a6b8343203f4eccb1760bac7349f9f8358a836506e014c27cacd1a160b131b804193b958ba3ec13eac8da82b2261973bf10e27de589bdc2a5ecdcdaf9c0c115011696710241f3831827e87d1e17cb72b44d3441e628b2f4480ed19e8895a6f503682313a8b98bf4587e39a89f66eebb9470ae079da12c7c0d714525542add58782088a0f1a9a67a16d219f84c93d030d47b3158726b686ceae549bbdb7e9cf8c540b7a2fa99dba4e873e33b2eae61950cee90c42dee5124532c2864804d6bc5f22bb171653809cbcbb8011b49b38792bf3e1e4394f0a94aa6ff2e4c78d3864b8cd7525c0baa6678ee5cbe6bc18362886f54156ca76e2da23f6938b8994f0b61965f8feda791d828e9f7cb9fdd6b00068a4bf00c630eb2c8e2b0ad5d2696349916aa007cae1871eff0a77f5ce6d6e63679932ac6156b21f8b8c0265d5148fa77acfefe4198644fee66277b7ca0b77b496c87a122148ded5c2d31a630599c609b495a9984dfcbcd1433fad1bf5642da26e6e033d9c26d00861e21ef7917860bc25369446b3a25ac2df751cdb08ee86c65eefb08d443083378fa93993a9e863172f9b019a2b3baf2d69db66dc88189b2b262f7af779b4ac40e4376cf87c6f5b1e3666529481a5403edec0fd55d56e5e3e5defd35588010b6f806d0b97895c9ae2a5ed23b96da4dc3ceebbd3c5b98f0df68c09082bbecf9d29d97da1cb955fab496a899394425809fc380b0b8a00940d152b54984636b9ddc2c2549fc5e4728df3d806acb5a000ef1035f2f6b90efd009df94ce32b9f2af11bad4fb4de5c93c70ebda440999ff1d43c0985ad097728488b9097c842f7d7012e3fe04715001eaf13815105728276cd640aa60e4ca6a640a77898bc8879ca4340ca41a1f12766ac8861215298f9450128b4e45dfec141491f7fe356f43bde2fd0881d7debd6aec9f0c54d25f92833b106f2c11555ce7661d4a79d26ef9133625c35a853d59d03966be2ecab46073865a3bfd359532bc16724cf17b037117ddeca97ee908a7b91c56559321fc0e07d423dfa1ee79eb4db0d0807ce98661558d1f429b5cc3a6f2f127d0ee1f5445d443f137dcb2a116e6bb3d67da006dcb0363560616b0a2e3120301543edf9f85af92eb459bd19af28d527507902076057807790fed78b40a6295fd1f6c7f22ba9195e9dc4439225b78e6e06cd0cd2795e1f6f98d864eb30a733c8357467218ce33da975b75bf826cde732a986b82f454236e3f93c4aecb12cc2bf3917816fd216e28b47f7a49f9892c240c603f9b230517b41fb405becd00b28deaad32326df9e37a675b27eb9b3ec8a97810fb8457113553520ba6b8cc8b25dd398dd18902716bc0fbf315b645ddb601bfb206f653aca7e949b118f38707b32a98f158566f00bb792c8513148b03e9fb31ab5a25e768b6bebb976a38bd6316a86d86971fdcc59a1fed64519f56c3ffaefc70271d322354319d2cecf2536c13cb4febe3e026e21889629c5abf2bc88ec89619b8c152ae78345168e98cb41e8b7d47c8413ba4f16f34129c7baae017a10af6601a7c2b9dcf8bf09601ce0ea3972de0ca0b191cdc1ab6bd8ae95f7bec2dcafca77186b150f7d5a7c5be83d9d82054878d726455428e844e4fad728a2cb0e6b0fab043eed16d79fca6899380d0600ba5ddc8c723c364f0e115199636bdb9e6f83054dc74bbdba104fa14f3c3fda79d826efd5868676d3d6e1736b6b83b6ea26331ee490b82fab5b25cd904539eaea80f062b5828b5bcfb3fe0de812196237a11ddfe5f26e96b3bb6b654106110fe816352d77b842de66853bb1a7119fb371dd3ad9c60e8825d040036f867768a3022e2c5d2d129d8d04e1451159a3bdc6a3ce067fdae5321cba507cee4ead6a514a1e81c05f1a576226d68c4d2009e422440994d24ff786905ed76a9b8ce446efbf803e77ae2d0512a6970dfc80cef9a3d6fcaa06f496ad74e375d06717c0741d31ab75b2d27be7a1bcaf1b297407442aea2745ecae903301e6223145225841256cd1699d022e26e76ea52ca206d0a14f7086aa3b2d52a38df16c51322b77cecd1bfe7848b8e9a4820b001ab1c3bd99a3031d53f03c40dc39131aeeb969cb5100613fcedc27f2b13da9fe1a1bf8c4797d90e3ae79d821870f090bedf8b6d06e34a9bbe4306e86faa2ea59b460be1a9becc3fc0520d2869bc8f45aa8fdbf7e4ebdb27613c8a9cd6d3f6ecf7afea6218909883c3fd1c51f7b9492aa4c633d4271a8187a9b4a3b64f8a23949228c59cea50503913e1ee8b62464558896ac876487120452a0f551e6d66a8659522d9892583765add0263dd658353bed579da720c2ad2626cdb99c3617c806dcfa62c3b421c034046e6b5473f6e0446be6784ec8d9340b29aad3a2f47a0d7e97183e148848379a2610f94fb1d4e2ddda36754b0440703181cd86d32ab2044b3e16dc85a697dcf83349e3ec18fa183096494caf780db7cfe1018ffd6f70f895ce6f26523f5590520389ebe024694740a6451f53d7c41095fb48cfa47deef06ddeda4ab75e8da3eb9c2af90ff9693d358836429b916ccc205c4a0ee04be30b0de5d61f218d84f19ade435017ef18c0d146691ba88454a2e50f1c69a2892a6870a89aa5c938b226984c70fc6495b27eae33ffeb53e15386b2c29aab4ba8ef488d4a2fcc3bd0394b699080d6c5a036692d7995234a0fe8f3efd265f40c159a2a90a4c722284a52b4cdcea9c7dfb260a709716327c04eed37d6d0522aa9342702ab1da0549cd5683160d03f8aa273156b17b601c29f54093bfaf66b763216320644e9d6a5a2f6f4c4c13914be9f2af3fac8fd06f3ed1d63f339f41adf6280e4f4970f94d42bece88c7094bfff963ca92c7d7e5242ae47d00b925d85772f0180e84ece4321d254541eaa01749f9b56b613c56f86f0d8ec437b1e36d29951faf6f59194ad46ac92d074d5dfd7a9b7d626362f912e03277a558091022dee1588f10aca150f0aae90f81aa1bd023adb1ad4cb29189c8a37fd0e417f368c28cc555d56430591fa3b041b2f312db3fe912d10f15611e498f6f1e8b4f592dd535aa6a90f94ab3a0b09b3c814111457b2b874171f3af994f2a5abdae8611f192a96855326aae13b8c6cdd48b4cb50c608f661d6418ea9404e4ded827d2022c932d4f62331e9c182e6a5c00aeea6c321f0a43aa82c587409e8836a3dafcfeaad37b27ce2658f84c3b9dc9cb445e8f4b0fa1c5fc9f646c16b130ffdac5c4b8fc4b0b6bcb49b9c21f1e88a9263de8c99c642405e775aa3b0aef571c82b0ca7b80fb2fd3ea093023aedff03c3f4641f6a01a9bfb77e528324915c52e874ffc2f7bb6e88cb31bc1a314719461783151709fc384ba71e69df44e042e6113a5aa9bd5ac70862421e2a77a21ac7b59390614a1bcc669601cbb8133258b156954142c81dc3be3571d6887fe4feb5798dec8cbe2f10b40d8d403cc23ed7c4f829a9eb00f9a2a4a8e81210ca7c469cb61885f348b460d775349f7a05dbc057669d117ba66ca1982ccde39a4097651c08acc30981395a384d449b7d5870178ffa750a860e488e7bb358acf543708d05ccda0f6329c9a7791313a6bee4e89fff06788d63627c5d14935324a285e077a7e7c4f4b55790fa2333c447036ee0fec3aed4eeff70a5713e07616562a649f9f6568d5268504ba129cca7d594b757e9bf615e6a7867845027cbab2a9a6c07e93b3be997dbd501d22814ed681756a3ecc70507e611c97bc68ccc6701cf1160522a1012d0f82b5acbe402629ce628b6a03ea45b9c643f22e5f3637aa321a2fe4fa637f9c0ebd03e796fe19e7e64871bd4b84e5bf66b6d7f10b60a0fb83bfce86fe824070642075f06ed3205a586d0a41de01621c96e504c4041500eaab4752bf827626771afcf684212c8014d71cbbea9e4102bb4eeb411388995b50a5fa1180be6563c5d4f02b57d777cb1e33b5494ec379e648fe52eb8f6b85e1240ee1bf2a079ba030a4b0bd05dbe71b30561b8353204210e16f741a53643d364ff63407fd21cb1f5f217fbf8cfcfba2b1f4c16cb49c8ee383f3ac836c6c9a95ddf0ee6a2899619f26b2ab673088dfd8e5a59c0c7151619cac51f4b89d9f5214f4dc8c46a3dfb08f46d1935b23f977bd18e00e36fab8d71b87cf1c6628d559bcd1478af95f30fb83e8b902b7e62ad2a293d8e67237e74c229ae02a547c6e4fd15a56fdadcc0220996a43473b6bc1877d3ae5ed96c806538cb07e418e928b81d4b4b4840a0154669b19127136044f8d0f09a152bfe2d0091c2ea30db8de14a5dc161b28d7b8859f087f253345cc5bc66ef65b810ef70cc8d84c959f7076744ba742db7d6a43e5962b5d1d7a4baa79f017a0fa2fec6783ada2dc610812e188cc619aef6622c1bd5e887007c302b92ced128f8a9a024fd3478b20e47878884c844ef2da910fd7691b17b8a667a7be96531aa5a99d0c9226174e6279c878b33ed8d71b6b316e57e1fa811bbfd8836a23c2e22be95017706d77c2a38ea921adaf9a9ef4771814973e8b8a4563fea6b6db8b45d669136be4defe612ce3472618083ecbbfc1855a0f136b5058eb9a31c1473f7d589ed5168900b6e11b5729d450f441c94d1a90bf61f24a939289b22662fb7134b1ef807cebdf8d2e4a22dc0787c01466220c9388a4c639712ad5d55635671cb0b3b8af9ee2d51694483d924f4e163828d44613189d74e323dfbc1e1b3994718c1fa94042709ac5c8dbf5fcfb1282c02d3e6271aa71a9657913257b1e6c3d69a34076ff26109837b678e3e9f944c434eb6b6c5b81e74e5d89b4e0cca9e94d0c4f03c81b29e352d0c1349138e34279684665de234a917bb059d48db32955bf20d52ca790f97d811e9aabad25d1e73a43d9321cbd8e5e74a12398dbf8eef0bbd5d6357bc3c2218ad49856e54d3c1e2294e7f26b806246af8fe1763cc5521add02aeed0b00d2aa155e8cc5f201726dadd475bb06c5118da39938734297a7901de09de39c47141423259aa9a7c08b8d61888d98d098fdd616820d97104a9c2fdf509b4584ca48404b7431d11fc5d2fcea30eb723b8cf0d35820a88278a434b3aa661cf7c4d32d54c1a3b1c5354c63867e0396481f94ddb4aafb6646cd7b05a5923d531dbf658e92c4c12020a4b2f74c622598b4718aa9db1313be94d65be14be1c42635f0e01fa8f9ce28bf76594c10d78f5c7190793d1bf46382e081384ff0f1fa662447abc1092d51f86d93e442c0c4508738eb1cceb52789a22a110e1a91d7f5871ec33b30151014150417b3e7511c49b836c74d080767682ba80a0c7bf83205e08c8c95a46467d0a9555075b4b3eeb393b0d25d9ed579b30b230afd4c35f19da82793ecc41547f5532ff709575384fc19c89d800ba0f61b63b27b8dd5d617ba41eff7f64c7e03ae388b8e7196b4fc210724861c9f26613d8ebfdde1115e1efd6d1b2c9cc22aa7475777c7444525e092433602792be5504e817577aa7998789f955140c796adb6b8de59e41635c79f15b5c11afb80c63dd99d441650e2ce2440eb997eb0e0137c73a505512c4f2cbba01d2b6dc2fbc71124e73b610846db99238a0817109cf7d74fcf057256e3edac7871977ed6229daa11de1f78629df5ad3aa5c93e6af7758e75228401917dcb3b2d28c1ad8c2ef8e52799f880f92732c74ae2225a6f367f3883d4f8dba66df28e0a1814b505a670a85e1d4941814374a3414b39f0797b518b0c23bb9fad2e39303eb0a1681e2e1860f9334d6a9d482a55470085a87e1ccf820c89164f45722a10307f9c6c057b199c0010f47896c50db97fffeca6e633b9e59785a4307cfd3af2fe44b9a70380d67c72cb6d91d92339e0e15a15f23588605717605be050e63d6eb9ba412c9ad405ea76f3a51795dfe02e918898a10281fde603326c56976ac1c1661df82fc138b04065fcc187dda4ba589966fba864e40160e56dd60fe50056dce21a760048e2a88d55c53d95e3ffea65705ba88457b2f641a3d00bd8099b34ab72dddc3ae16f4b4930e5b973070a2e9df811b770d7b8961fa16a2052c6baf05c50266a4d7b72969c387f6f3bfa9eb4900b490becf900ca504a9f1b298ada4b8f0d888d7d60b8d9ca2303a9c7224711dec8709d382e53d43569722aa22e072c78ff089775308ea21c6812c6c12d1aa6115334154f65c8a891c0cd4f9ac9663ea1a40b97b6b171ca525d6d123565dcf5bc5c84f76fcc7dbf2736f7decc5f1fa599f548d91f94e1c211c66f1cd856004098abf21221e811415faa198deb1912c27c57dcbc9c0880b8ee47090762bdf7d1c71befc7c5094f81d8076893dc8cbb0c02c45bf8e06db85e55cb39d62f72e4a7ea05f77ba60f39b7fd1e28e45eaf1f0d74288a26f8a68e275433f50a008fc44f8b3085060d8dd49c1efc4461dc0e13007d55669af810f084a688ac49141f33f7c4a1a05e9aa5b080c457ca1e533c45dea57cc45eff1a03f52b219904dfa0a7032ba99845ee7465f932966d156795fe817fedb1e0396aa44f93b4ed47da85f3e0b09a46562f3aa3c380048edd6a0da12d9e5d284175a8df0b0ede93d16e88c3d74b74193c24a048843c333f7cf4de6b80a40a68c81d88963b8d408643be1146e598845fabccaa8955419be05cfc19e180753e79511ca5c1c2396c3955956db3707d1344ff4581f85de50083f9ee4e0e9016c7db64900b52a88bdb0bd3c9201c8f34d5e449bd0aaf418098fe0d0cacd0eb80287f9f02a7198006288ef5c421239854c642c0381e314e45b0f7fd08d5b3058e242eace1f06584c34baddf1757e8bdc3c06f194b89a6b2a2eb496e46ce67b6c1af422b1545fba0f5d2d9ffffccea2477564d9f6276056660837e3814ce83f20c91dc9fd14507e8fc9529854962234f23ecc336ffb072c4292e127ac63b2738554bc560086f5fd6782c958bb47a71a9bdb3b47a39fd7e0c0bf9a3c6ff39ae5faffacd3ab31181903a88d8e4275d6191932f762aaa8a71a954b5a213d921f760ec84e9ff1e1819e4b2f05a5b1fe8892be4798c77d766c1c980a93e482dcd797b00847479fb64115f0e27f8386c9e73306baefa11d13165bdfc52347206858ecdb99f5bac41cca6cf159294f1386a64017b1981d004fe5c25713ee88c54147f1892627dce59fffc5547863b8f2bce260316fc8bca237649ae8d5081d3dcfa4ef62047a95045cdfa7cd08e6573c04a4a93ffa4bdf74241f19218a490ea1563884e8eddd317385dfcc938c844c123f1bb7a856f55417f31ef88f2765f9dbc0fc4a89e2faae628de61fdae062954341ba9b5206d6549813a431eb99fd91e01040a0a2f9a3468913462572b74153d3ccfb2f2e0a25efdb5d6adfad4c141722d071de9a234848a623bd4b7104e3940517dc6a4f56360f28c6b525147c29c4cea8b7cc8ca723e68f0f618b508a1a0bae05fd1956fbb33d8ceb722da401402cedda925fa9417da9143c4e268594f90c661ee86d179c670b04eed67ba35f609874b144d5dfb67d56bdaf0d0b294b17831d7513fa56c2147932d0d320b68b80e1a2f14223ca86792aed49e9254c5a8f334b56a33717bfef06b9280cd2c6d6f6392cc94bba5d687194465d728a6cdacbe267e1c7d592ae140f477deb56561133375598bca199de915232cc837bc4a0ad0077c219f4194df6ce029c1b3111b1fc87bde6c4e2c16f6921c642c48ad96d1e18854c2f0f2fd6027a92453cc86e321affba4a975cf7c5a3eed68072a712708d08ba1ce28700329b41e8a2f7c7c3857331496e89ea5627ccac665937cef41506a766516d6aea4170d1cd72b531d6f83035efad864be0234aa30c44362761202f49c3ce024299796e1d25d1585e4794278ad60a1c7268a3d2b4dcdc1602b9e9b4f85dd864b1864a087314c9a7443f09b413a567e5dcad05541cbc7fc44002ce2070b1f4c94cf99e09cf798316d6e0c22be781775321354405c34fe6e268616a506ffe691f5ca841883dc7ca1f84b54156039051edb54ab9dcfea3ffbcc29dab45556a3472c9f3a157c0840a44a0e7dac8bb2323cd26877a92b2b0c973297f327695d773c92007e7438ec2a30cf70787bf8639642ecf6ef0860f232ebeff3cabfc275808afdad36967d2f9459f54f096ddf5cbcc8c4130e0d36bd9b84a9abcf0c688b46db6d34e3a6c1a67e40b053aaf598a5803ad243f2360e587d34112eb50ed059fc5be21beb32ebf25fda6a5629815afa2450c787ad8c5c7d3b059495cdaf58df5bf30cc80e0a78a38faf9a1bf468cf03ef544894d86e30ac320657d90c6989367bba8a444bfc5a2cf8ebf323a17782f78f67b470aaec7f5ddcbf78b6d29183a85f2d8c27404a8015d4c88e15898b8c99019b71a6a05a818549660e069cc4849e5d2e7c4c3379d5b25aac867d2202b4aa236700c3c0bbf1d65a1a8e14db14fd428673970c94dbb7042943e28c5615fb4f95a6e98c405c3dad56e56a4a165eaccb1777707f9f202f8f420c740a1a8062a42aae968a2ed5662c797937336534d8582eeec7a0c0731364e6eacd9099c2b5934f920e945653cf160047b8d1a9955ccb2f0de49aa1fa9c59eb1015e307e8ac16dccc3369e127a830e0b8d31cc98a0ff05906685f474302f30450ada617c149156bffa8f0a502e35ccf161b1aacbd47482e325178ae9f81bd610f65aaa82ab5d774c4134acc50d36f4a828a836904a7405b0e98c918db5f2c111a0988be5d6d0108d1e56f0d8ed8c808f9705cddd26dba362079c41d193533e87673cdba5836c687ac325ca21aab54155823887c2a8ad8d2ab293271b89b3a5ade18e0f147b1bee49210c22b897b402145b68ea1758a7d7abc7739b8eaa5df0af42d8284957729f67a880e08d0e0db0b9f861e9431801458455d93a327a6aad00d31e9152a1b91dcbd1d7418952f8d8c6cc15a7f79b0a2322997d07b2967e4f9009be3e618ebe639f46da634b9663a8736fe984aa06b85c4806614fcd63062a3deca39f7e2bf23712687a36ef8a773ef30a21abe0b2b25812af5bdafd32572bc82b89f48b8c561e1602e6ebab51404cc83aba2283becc4d51fa377872fd9e6668e494fb8d95a2ed956cab44bd0214f83511b025730fd838af8a5eca807264475eadbd1a58b41ab0198d7d25ad44aaa8252307142ef68a34b8d706efc3a819862ec3a32246b1e23d797c98c4f9156db6b7b1997c18a2e0869c7d2085527e70178fce0f4b009c8d14f35bf24abe5716ef8c626d1d7b4f4a407313a8c41d6f4224225fdbda66daa0242d894e915eacaead85896bc8b8f047f288ec22e4ac3d7e4e8665f149376b379de102ede615cb7aee488015d8e24a111acc068c581feb4cb738cedde0dca954a5c4666f710876bc197071ea46538982ae7d7621a1501e2e02e853d7bdbcc55993c0631397808c4313cf9540920d1939f7927472cda32561140e5547aafb8105e6fdd325e639e6bc7629c5c7931e16a24a0b38455ca38fa01aeb46543f44c4323325546f37bb21dc2c3a695d24269661e4671653e559f8316849c32e7a542686f95d9bdac80cdc9d17d833283309a5c4b8e0163230542ddcaa13a36fb9e4b55d13e7d60f444e7e343bc62396c43fa07d97aa2ad32a5469e55f851556288aa31fbdc186233a10d492faa5121e9f70220dbab623e2f6001bb7090b75921d9a4151050b87933b162a3e0bb588ef4674231cce7d4ccbd86c01731c5ea5ed50d92e75ef7c30dba232cc76041dd8d18eee464ae32ee1614ea24552aaa81c98e625f9d88e9dbe5c4ed481cfa1c47e65a9f635a87589bb4d6c406e027b0db48d4f0f74a6425e74c7921977010b7313dd72a605556896102491c1f8dbe4404f1f21eb77d575130c756022638c080dc6aa863213ad9d5f362309f2875ab74d1848015e752be93ec19a2a5404581f0ccd35788481c2891497dbbe2639a692216416977033e064e550a24ef58934a8fe1b8ee2893a97b85afadecaedf36cabac4bc464542d35b11f69462c51a2c8f1233ea856947d593a0d03ba3340a01b06d43d8ee30e198056b127a663d3a2c3d9218ad39095caf1a236bb797e5c7416f8c5d4331ed53f948188c0250ab38f5c0b2ba9f0795c0d451d605f94226129375e726fa67c0b602c73184b96482be2746fe98fb311e7b36f5364cd86325a0e7e41c7ad980a13fa114bdfbce6b6ad7a1bec698894777ced5ae898ce07280df79e73c15f99ee93c01d7a221be8fa7d1312f8216d00984e355b3bf99504c8b552f7f05f5d1ef744a1663a8bf7f4f9cb236374cd6a120fe753cda899aef755366ff97966d78ad1d77619b83570622ead3e6426d86d1c2954e4b5c16ea720cf7fa7a7ab0eddc97f30ae9902bfae41b50600d4dbc08fde770d8e36eca30bc219ad441d16010867ee2b207f11d8d0985872030308dffc6b339f2dc85f17a2db8326b4a1402f69ae9e7d539123a3be7bf849784d9f2853fc83131c420580a52dfe8c82ed3a20a2e50d50d01c70fb29b824b8945e4e91107fa5369a3e3af9dfa964d1da5471f13ad5fe8ee686fc50e469e7be820f942802809db62259f552dad136327205d404e6f78ef3d66c69b224188ed419472da6736e34180cf370de1f59691390383586b201c029ac36963a83f928f035748f8586c46f5f18fce2dc7b26bbbdd25230652fe386fe5fa2c34ee8cc2c75367b87aa0d62ae078b6a3afc209a74c5a27978005dba6ab380cc2c524f1b85736c17a44e2a2fe317e9e3c73a5a53251149920961557aff023465ff7cd500b3a633f53ff8220ac38bdca5d63e3e3f239c1690c27fdd683b40f3d4b3f05fe8a9b7f5851446fc075e4201c20ff8994b8a54fa68ac916a17551fb24ac2234d48f3206d7025b4c548d144e424b810a4116a7c36402f137d512e6bc1d6bfc0ea8d7710342863c580e0d1e47d3ce7fddb026bfc12f61d1b19db74f587a32916bb7d0610a59e8cbe15db091a9960746ffc62e731cdb8ecf1eec832d2a1140f97a9510175c133da19d3a121e74bb1716647f2feb834ee5963563816468c0f129179f512843ba043f004a48581738e7829692c69d44ccc3dc65576de69aa75cf6327eb4dfed60d426beb5d88025685764608d6d141c1a1a0abc87f269463bc42fbf579ac085faef5c9a1148ed1a234e52be6cad295335c50667b751760a4d416b484bafb778b200d744ae659ea23fbf2579bb50a0127c74bcf56309aa856dba4d5e0f259ce97dfebde66756003c80a018dc79769c2fd3d0d9bd848e9e97354bda8f4403d0e3f1b446ac6e117e53272d421625fae55fe0f5c4eba49cdf4f68cae2ac970c9f94d938a53d47b2cab3c27c8a3f43126fb4ebeb5aa355c811385f23940580a1c38c0a55367f26bf6cf1a34e010a681a60b08054ea54df152069c75023a67227e59209a556d0e0803b34240c73809d0893182f488ae28195ff85822f918738483553a09875dfac90dc8fce5ace4360e5e4ca80935751c0caaab5a58fe86cc144edbaac9d7f7f4ffdf8a72fddf6cbabbb6d664d7ae5cb9a5945206a907fc07960767d667d6db799e399ff9cc5a6f67d667d6db79e67ce6336bbd9d599f3967bd9d399ff9cc5a6f67d667ce596f673eb3d6db99f5a9b53eb7acf5b9657d6aadf376ea2d9fa7e6a3276f1bc6f7de5c83d7f3887d2c5964cb5926c47648b08f2da5b57e9f968355ab1394507cfc281cc74a95ca2627d407d6c8a9e2c33865da19e438eefb32d8653083a8ef4485ccc4f426a89e7fe8fba3adfc75c3be0d885c53563669d3583fcc75c7eb45362f83a3e908261e53c88ed0217549a7eec864fa5028d4f765508ad328052a4ff1795aa65147407d27294e1fa23edc3054113e4e7cf5f4f6fb327804d4779242347ddea69d67e4d4b875cb7983547498528dbd5aadbdd7e25814f56d7d7b939ca86feb193bada84e7c5a0a1ceb4ef609fb847dc2e88c9d569c5838998085ae6fe34d9ac24dba49e7791abd989d50b7df5d8eaf3c0f6b1ad672debceea8dba46e75cfe9d34fa2edc4f6898f5e1ceecd4b54aa51a4e75cd69d81c671f4a9a7574f52a2adef405b5d15344d2b693906be6fdab01e1ffeccf377dfc5a60dcbf9d21af2436d288a83b6f3bc2cbb9de0a751ac43d3d601b561da98f3ddbb71f0dc117726f6553d537eaf13ead4656301632fe71b359fe86d5b1118735ca954648494746494a468895192222436e8086956c40d8c679d08ab962bc1676abd79473afd0d49a7bf119540ebae66a14ba9509d895b9d889d89bbb55a6befbd18634dd3ae86c2f26514152d3c79282a9ae62e362e964b0c6fe1a2c62586e39cb76dd35a731c572a954e5c9752a13a13b73a113b13773514962fa3a868e1c94351d13477b171b15c62780b17352e311c832f5ee4f622064823f3f22206f832ca9d1a7a29830c1c3c374a1964ec991a2d34cc302387860d1b38346ce0d0a0610367a6a5c60c1a6680c9a1c18005282001083880010a40001c1b59c9cc0c34cca89143cb8c9619981c1c1b346898a1c68c96191825e00e4f9f97355c5232d3f29b9a60665a60c08d7ca191d9afe5cf0b4f589794ccb40060064649cbccbf8aca6a258a4ac01d9e3e2f6bf8fb4a303334669831d3026383861a332d30df511166a605dcc8171a99fd5afebcf084350cec060d367a8d1964a0d13283958032342fe46b7bd9c0fd2d33303432e4cb066e25e00e4f9f97355c52424f36b8b5fc79e109eb921210dc4a4025e00e4f9f97355c52b24170832bdc06b5fc79e109eb9292fde232f20dfc163c2a3985dec792bdac61ad04dce1e9f3322e29c9993e67e2c0299794e82de79212bde592929ce9c8993870ca9b2e2929292929e981899e8c4d11e78c820fa9eb3745af6f23f629c2571ffbdca49b74937ef4dc2e843846c48963513cf199ddd1bd1863faa2c6eacd7b74f2e64d424979fcd887e2882638f8e9579c5e96ca54e93bf581a8c7ffade82bc4b1be7dfe6ee346f86adf705c1cac55a3a9bfd3687ea6d15c755c34db1c775db7b906c56776479bdb6e9ece226eeb5888d6dfd7bdb9ba5e5277745975a8a678eda74f9998ea3689a6a41daf1761f34ca497ba234b9e4e6777743a3f4d5359ad34d4d6e2f76d300cc3cd6fd7f8e9bcacd369492284f689cfd4b2eea889eea83b92f1c0d9e8baa30ea94b12bba3ef2675f04d360cf4e935a9e3b74e7cf8fbca7bb849a83da4eb377151bf1f9ececb1a729af193c9867de3e924c257df3ca5b4e9f4dbb41fffc9b469f7baa353917ebfd41df5fbdce9f4ba793a71ace2188e85d864443dc2e6f00741dda9d66a6dc5d65a6babb5b65a5babed016f4443a8f81ec16c113f160b5f0ff7882375fa941e757a8aab55d6708e6161f6427bba494bda5afafbd7e89678b5c1d52a9438b5c1f5b833d05fc3669d6b6edd3adccfafd11fb457262aad41d088b8b9daad9475af8631f7f75e8e53eac23ca25fcc69bf57c3f8deab6918db6a843d225b0c845ab76dc3396fdbb66d9b071b848deacf629c31a63fc630841ae49cab766fbe959257cbf8deab699f33c6f847da1aa9919c73ce39e7acb5ce396badb72de7acb5de36bde5d96cb6cdb4de667a9b65bde599def24c6f7936db665a6f33bdcdb2def24c6f79b66d7acbb36da6f536d3db2ceb2dcff496679bdef4b6e93cdbb4de667a9b65bde599def26cdbf4a6379d677a9b65bde599def22ce73cd35bce33bde559ce79d3b3acb7d92ca7a0b3dec5f6f23bbb4796b44a7c5ac3f7355cb3a6b51cdba65fd3f0d5fe7ab7e38d097b69b5a66c3becde7b8168176f36e0463384e0b1464e4ecec51ac6f86466c97b7472ee706294aa3f1d6647d3061c2e312b8f29912ce54dfc23738d2eebfee3c7411487b3b43cbe4bfa06a382a3bdc61c4bd6c8e9336ae0b0af0d890df4b5458192f765ae51ca35eaf73b1d4bb8ed459d8e152497455404e5a41392199d9c283ff8353e7296ad9f1cad562b1420cbbaaf6d98ca88f223842f8625efb7f80143ab35a53c0c8ce3b0753dc4734a599b47f7d2e6c1da58398390f2c97de43d5ede483fb9f095a3330c45a22232942013136b6a941fba776c173a21a23a29a633e573715e5e344e6e58b77b7c10cfdba6bdb7a6b25a797b9b4e955e534a87c9da940e4b5edc5df80a9215be42b445e1fbfb1b92ef516f6e46428458f8c9593aa2a699e9b4e4bdff7d2c31f04d9698e9349d29db744ac5facd3f3da780faed2cfce4e4c3b2c3b254469698e9ecd7749a6616070508e5c792d7d4a1e4cd1203c2e7b1c42c795790509d14b008cacffd8e25c6124be9bacd83fb2905948aa1e8774d01da887e39ed1d0702f78cc9fcdbe6c15d7fa7f1bd9ff5cdb5e2e8783c7a358efc3c9e4ba7cf69999f5efae6aa3f4eaa651eb59fdad58ea7d27b4ddaeda00f28dababfb361a81f3ae6b40f74bcb373b59d0dc33550aafdd83e83034711b5165173c8f87a7859407fe954d76aada799cc233aa5adca3d11734126cec9b850b7affdd4926382baec5b0e082ee896872565a069de8e3d8df5e949ddfcbac969b26e7fc72e0ec7ed180c8f9c8f18f0dc0b805be935e58701805e5a79a9bbc193f1e9d0a2c1e1060e5d0e5edd98eb592333ae18e3ac611b8c6bf0e7b079f038236b39ec1cadc386c1806f3b6c98f65c1027e3649aa7f5b0e23827e3822ed0c7bdc905d5c0f1b0a4d57e7fd6bef4f93b6eaac1a7fdee7ee39af73cc8f8baaf5b07ed69ef3ec6867563cea7d5fe62e3a05d2be5efb0c7bbd2773c7832be52e95f6c58a9d462871d68ef76f030e78270d01c0ffbf261c5057132adc586ddcbb1cdf636bb87cfdbd8462356369648b141fffd3bfab0d23bf0dc37cef1b02cfb3cec1ddbefc80559d2fe7dc157dfe482bad5b4172d02a01280bd5a558e330c17021005b0bfdbf1d78a07b07974bfdcf68de7c79b07dfbf814180cd53478f005bffd095d75e80adc32dca02d008fafd026c1edc3b03944cf9795429d5ea448592a25251a9542b2c2dcf4795cae505264646e575254ea5d25b56a934d5044cf9594c7a3a7539a2c6887a048e11f60895119ac6592e3c817b2a35c2a7263da1de5b6f4dfab4133eaf22892c7d1badcf91affeb5f5de6b29adb6e21e269cf7acd5da7b31d6344bc4896351d85a6f9213d59eacd0ba44828ebe50aa69f6622d539d12c643b5d4d531e7bb6707a2f63b6a19114dd2dbd49d649eac939dba4ff675289927eb2c5839ed4d0cd3b45a1282859f72dcc91a513b94679ff8f0907d512dbb58a360f0004dd2b2a1a1a129481b00ce061ec2442c898b743c6449fb78280c43d16a19d5d1dac7c6ffb2acb77bac78989898a85678c88adf974aa55627d553a9364cb56198d2fb54d33a2d3be9502ed6b011f090966999964da17d58d20a752d9342d6715afbda793f555c42de362b888c607094e48c71e37a0183a6a6850bd6eb656bc1c8c4bc5e644124d975244b2606462606460932473063caa984934891a1142149ce6de482a71015191222347edfa8325225097ac1ab0d18312f624ea3a1737694729eb32446315c31e4ca0a0b8c172e5ad4d0a4384fb5fcdf04d942ac177f5446e7c922413014c3301c2244081886a2b546670cde2224a3adcbbdc90df9f49cf8e4048b3f31a19028a6e4163534ac931394941499181820a29089494a954aa5acddc2d0c5e56f62b84a2511c60b172d6a6858262629954af5988b31209951fc89f15631303534acef43c5c8801bdc2a3f2a3e4744442dc694f374c19c46e7499e4e9cd6342c232316699a755d508c0c0c4c4cca0f99941f30293f6478cc6f36364ffe8d89f9fc38060626e673c6314f3b0ccc98f3c5c0c4c4c4644cb65aad9856ccca4a4c0d0d8ba654ea6894f0e325e5147f8c8c5e605680b0b06c18cb86c9c0c0c46c332437239263ca79b260626264780ff263c82de625c8968264f4627492e729c345a0182ec660cef3e5657319f9b7b0aca8a4a09cac54291331045127d3f6ba161c9ca71d01d0035c04897138714579ffde82af97394b5fe95d56e9291de5a4779c97f9aaab7ad77999a7ba49efb697b9d83b939779d8bb939739d8bbcfcb1cd53bd0cbfc339940f44c59f8c3cda3bba636323ff52ef43237f54ef432dfbd33f132f77a97f232ef7aa7f2322ff56ee565cef5eea443f132df72ef54bcccb5dead7899e3deb17899dfdeb57899dbdebde7f22d2c2b2a29e368d29ee61068b4a5bd4604c72bcb7e1fcecbf7fcdac5176f34f8811582374c67c64d8e8c17305e38362e5ab86890ad2d068b6686464f2ca5a3d47041ec8fe5760f1b7452530ad275ddaaeb543dc532b27f98749611d38fedfbbe1d509278c84e411b0f3b0e4ff9f149e9493a9209431955908a474f0eaf366404217338b5f105616fd3c96432056d1cd4b999a9e17c949183f382f102252606c5c5450bd74b0b066646902d64f3f7513e2442820a0282a11886e1c65143840801c350341145d1daafebdcfc978664584505afb868e16269b5b4b080080991a190289ab47c5753262626396ffcd45f305ed8a8a8acb868e16269b5b4d0ccb0808842262629552a95b2d6d467e8dc943a65d7a964e4e0bc60bcb059ad4e5cb470a1e8b44ea7191a25fc204d292111e9e38789502aa55aa954aa9c7787f1c2260c45172d5c26ad199ad4297542c9c8c1d1fa35a6c86e583f521bf74a40748a4ccb7a6acfee31848dcaa686d71f55908d779f8b162e546b669bb66955c3c4c6b93e73f283e6e407ebe4c7c67567a1fc9849f94193f28395f28366a605cfd1a2c5f699fc4c8e2e5c6cdcc5af36cc858b94ca36624be691aafc50091223468c2763902a1bb6b2b232a375182f6c5e749de7a2856bbf50c293a613b9b2c2c2b2612c1b4633f3ac998de3ad470de7a285ab54c384cd8633a69961b100696969d95abfb5be866da1e13d6a7ea66623836c2dfde4d892849a96201bb79d6686f5406866f886b138908dd34e33336e186b04e2427ea9939b4c0ccc8bcbc8bf8565452505e564a54a99882188fa4ea6ed75254ee3cdc6743af4b082b5d6da6b9435adc277af15ba9ec79b445b27d579cbf9055ab6c211f2a6f5a6b72368cd695620d2364cd3740cac778b169eb761f7b7a7355f7d3dbedc036ec334ad6e78b3dbb499bc53a6a74fdb9aa7f5b699642830144da7adbde785218a6d0948d09bdef496f596f596b3decef33c733ef399b5de022efb19e5392554977d8dab9e730275d9c71c8820bedeb95c7b00df460509807a4aa7548c200cbd6e1d66e858d3b0c61eae35ae7635ad76cf66c3f60d3cda476e724b981c109323020b37392a4c8ec8e4a060e369be637b877de9d1074ad4bda57865c3ba2e25858823b236dbc66c767e9b0d9ba106bdb5dba82fee7296ad9cbc32f8f2188dc364feb25deea2b577f9c8f1d2e5bccbbfdb3cdfe52d7de394debb79be7eabe75dceb2b777f98a49850777937779ca573fef721414cabbfc0404bdcb57e1e52a51f42e4f999878979ba452dee5a24ae55d1eae56dee5200fee27dee5281414eff22f25c5bbfca4b2797057f12e37b1b4e07bf9ee264e6d6c7c097d5bbefbd2c8e25deeb5b4789777ffdee525cebdcbb971f42ed72e2edee5dbcb8b77798681f12ed76262bc2ac371ef64bccb2f497a975b16abce6c1edc6948991898179791b34cf96d78d4be3606d0524ce26fd22974fa08a0afd2d32f002dc525e30780ea40cb70565df653dea45674fa36d057f721527559953769159d12c1492b34e86bf5f47528cb8bbe546fdef41dab2efbae4e35256c6aa9c9c24f54e96ff2e68b9874d34d2e080add3e1f4d2b2eb10967538448ff43d4ed8f2315dd7eca68846e5f655c19451614d52a08c955d1ed97ace8f6b7191c92ba633c33ecd2681ed14bdade3ad0a1ae8d957b793a1bd683d7f1eb6c5810fd7ade5f4e374c87254e877a4d99e0707b49e35e2bbdf69b534a7230360fee30cfe35c10c783e334cee675fdde77dab3c1a7f52ebdf61ddf5d97e3c9f8bad2d7b09acb86751dc7d93c78ac494a46469ac3f1343cfae0796f9f93f10df3c69c0f7bb805b7789c5771763dcf52c8bf93e1c9f8b4d62d399be78e1509d7a39c1c1a601eb5afedabf85a0d5b0b732f17141bef9581e9efeb8fe939c29b076b631b39590db0662bbddabd373c6a5f52509c1dbbac24c89cb085a4d0e9167205d69bf5fcdeacb37f938a818ea0d3af26a03afae9d713d0d2e56162deac3a4c6fd61f4aeb8e97af3ba03af74bf2abace6cdea03f566156abd5985509cd39b754825d2e9878096a20e1d4bf89bf40b9d7e076829fefc78617c937201a8ba2cd0164a14a0a5188b61814a21e54d4a854e3f01b41477ec285a79933ea1d317002dc5a0eab21fe4049637e912785497e5a1844e61b41465d5657f8ad59b34546f5228ba39a3d3d7a1a5e803062d45a1eab26fde00a92efb668d6963ca74fa30b414855497fd93375fdd9b2e94d77e73a5533e4465c88448a745c23753266f9eba48a4baec2b85424b7148484b71a8ba6c2916a92efbe2d3ef445eff046fe31b97a85a7fdfeabba9c9cc1dd3514bd188111dddbef8534b91a8baecff00d5523c7204a8db1763b514915c415bb11db5148b8a7674fb62502d4523a3a06e5fe4514b3189ac96e2e9a396e24ca896e211905a8a484978742c684b26fa104202d2ed8b426a29260da9a5b864a896e18c482d43a422b514970c9911e9368b22ddda7c163fdb8cac6f7d5f033e79fa6866fef42810f527206d7cdfedb0c4efc4ccfa980d63b15e6a9158912031524b940e1d46886a89faf9213a524b1410d01124b544c5aea03aa8248a6af92d595264544b544f8f51925aa27224e9f6c5b396289feac282eaa090a0ad592dbfd96c7654cbefe8e8a8db17916af921212175fb62522dbfa4eaca82ea7c59d0d6925a7e45d5657f49b71fce6af9195597d1acdb2f09ce82ea7c58d0d67756977d0e079465df26e98166a2dbe78630a415e976877641d4c769288591c71366b1ccfc248b948971d1305c7b0125ed6b3ff6a581f48bfeccb5cef95db40b4a074a47b75f1af9b7fc002511fb01d23c6bfd255c32f397f41296159514540f2a070a09940faa0795235bfc5cd6f84b5ff7ce115dfb1a97334baf9f0bfa66b36e1fa53b59a98e90b2480272d49740cabc541a73ce997f4543e84428e27ad04a9adc0fbafd900bc20df98c6a49abcbe47e24a925a52e93f341c782ea703ca0adb3961c8feab20fc4a82fd193e4e782ec2b6b5fbaa32ed52b72db294cd37b078d0dd39aefd80eb2afbb83f2b8832c6969f0dd37776cefb0a43d7be94d4d56c3ab96c4981e75fcf7563cd6d7af71b307fd336cd87dcd774c1b9328f119db06bd77d8970ff677ccbef4dbdf412f1ba6c79cefea3bde911e617a84c77ac492f669ec4a649fc6ce4f63c7a3f5a5e137457aeaf4372df753aa539f7ab9f4668bbe84e6decca14338271cd49b14c9f721522df788933e925ed698142275fbb4e2ecd80a857a6ebb890f71ea6e78346cfc37760db6e3b98f9af7d8468edb40e7beceddb8b1f1c3b4d2575dd259086cc7836dfc3bbb06db715c8736214284ecc0601ba61fb66bb09ad7f1dbb5ec0b0a0ae28238be0d5dd68913d2edc3f68ed6f358430d1b3f8e5d8385f5d8c00caa4faf3ed507070e8f67c3f0f3ec1a6cd763fbcc7b989ee35f326932eda7baecdb07502407a048381eb28be3a3dbc701d5a30e76b41e038096fbd5df4ae585c43a65e9e9c3509dda69fd6e1e5c29b6a6f071085ae1839b09ef9dd29b44743c9a5af7f6e8617b637242e0a65d0d9f9ee33d7c5636505fe242e87edf845a82fb8de7f0c9b171dafe049f0d539781d2e3afa4597b379aa5cfafb9e603cad381237ae935997d5d8b831ae965f1b02485617250747b63724eb04c0e4814ddfec60de9f64b7f7969d4be7b6a5ff531eea5d1bc9f7fdb3bf70353f43b43e79ae54c46bf660cd4d18b7ecd16120d2a8b987effa59628196fdee4bc6983f3a60c8c3755fafd7ecd948e5a72f272618ab5047bc0166f9afa3577bf608eaebb402472bf8f6b09fa5497fd8b932ca9f5e8e0bbbf64d47a48dee37b1962702036f0417c9dfc9a181fc4d781f816174277197e931fc4d787788e03d12308dd6bbe031c0821be5ef3417c3dc6438003c1816d0c63180304be031fc4aacbf0a81db5047554977dd48e6e1f15544bf007c5a39620108f6e1f25ab2518ab2e25a80e98046df9a825b803e5a3db4709d5120cb28f02524b90070a48b78f12524b508612d2eda386d412f4811ad2eda3866a090ad94711a92508c4031f44915a8242aaab0aaa0336415b466a090e09e27f4019e9f65144b504877e781f46d3da471da92548c487bfe148b78f42524bb048755d4175c02a68aba896a0115451b78f32aa25488432eaf651496a091e49d2eda3ce5a8248aa0b0baa035e415bb35a8245a859b78f3aaa2568440375d4eda3906a092669a190ba7d54522dc1139505d501b1402da92538dba825dd3ed8534bf088b30fe6a82588545d20c8d1ed833eb5049390a03a601643f070465bf63fc0432d50d23ea8a396e09212bc103a7e6a19f6900004aa6598032856cbd02709aa1322b1a396a10e7047b70f06d532fc0183ba7d90472d43209047b70fca6a19c64059b70ffaa865b803f4d1ed8342b50c8340a16e1f0452cb9087078008a965286b82ea844ad0d6905a863e46f0410ce9f6c1a15a86423dffc3685afb20915a86408ad432145205d5099ba02d23b50c875417512dc3a123b50c8f781f887423fe062322f89dd1b4453cec48b70f22a96558e40aaa1356415b45b50c8d18d532244a52cbf0c859cb1009165427bc82b6ec13f1378a7a089e861108be95a4dba70167b50c8b8e6a191a21d5324c525d59509d104caa6538c4efd9079e1b4d2bc45fa46e3ffbf0413cfee13df0dd8c27e3237f66c37a98d9b03a86b39b910bbac1ccbe42244b9a98b561e48748f665fbcbdfd1c45808dd6f5a4fe3b5987ddd68b1db71a963ee4d54c7fbcd55c737de6ce918f6664cc73b6fb63abee1cd181daba0e67855133c7e90beea091eff097d5514bcaacfe397a1af9a82c76f435f1589c77f435f55c7e397417124506a657efc275a728f3f45cbfdf8576879e3f1bfd012f6f86968b9f3f85fd0f2060a45bf79f2bb1bae915cfbc9c177f3405fc3dec07bd07cd541f334b8593b8defaa0a78cdbaa6aa80d32e01be6f4059f677f0ef3c0cf637fc8d1b5f55f07b7fd5f11cf775059ff35716bc565bf01acddba794fed716708e07b4c502cef960059cfba1835715f01bf80eaf4870ce8a1470ae8aeac3b92850c0b92127a826a83938d78376930bbac1296dc13c8c53da8a91791ace3981b2ec7318efee89aefddd7b8742d1b5d1c49f877ad7aad49acc237a86651a9cf61bad456e1b3420fbf28142d1ef93b1960d23495e57687e8566348242d1a250b446ab83b5ad8f7d70492dc325250097f4d452eca924e8e9f6c31cb51473dc77408e6e3ff4a9a5e8535d48501d1109dad2514b518703421ddd7ef8534bf1a701e14fb71f02d55204624008d4ed87b15a8ab170472dc51de18e6e3f0caaa518643fe4514b91078f6e3f945525a88ea8046df9a8a5e8a38e20f4d1ed8742b514856acf685afb21905a8a408e00d2ed87426a1354476c82b686d4521c624438a4db0f876a290e896034adfd90482d45224510e9f6c322b50aaa2356415b466a2912318646bafd902804a369ed87476a291e01c1181ee9f6432457501df18aa25a8a45fb872832aaa568c4fd0746a324b5148548d2edc7f000e79a405df683e09c91eab2df01ce41415d3c5e9cf361c91ace09b1a47d203837445bf665e01c114bda7f00e78a58d23e0738b7044adadf00e79e505df67fe03e7008704a5b2e1f62119e331b3663e482703083c03b603c7ac037604472c033604c6ac02f605cb28057c018ce14f0091843a4047c0ea3f6a304d5d15c405b281d393c0e23ea0787bf614401ddf03b2310214d7c4b761e36a27a607f6344e5a82efb379ec648a44815dfec3bfa905c21c3df18a1f1ad71c69363916894443cc3d7eff1e639a3189f9330e0b525ddbe067ac880890111891e3187e883c59e9ba3db0b58a002149880044e4f33017002a84f02341138893395a314a4f1551e02b3947fc038be0346cd057c25c5bf01490c184ddb577e010a4800020e6080021060000208c0ccb679388ea3b1e1610794ed3f1d50defede6171502327bb2c144ec8ded83f710e88e5865017f63fce39416fec8b9c8b82b660b0a074e430fee0f00374c36843123100f0e0a861c9ce081b51396e8c34a090b0d16bcc30936176f4348e907ec6586691f4a28e8c1c9ca25abe8a8c5235a3697bea6fc693d668da7ef23146187cd38092f63f2cc8d1b4ddf33e896b339ab6ab5e1c4ddb57aa5ffde5dc102869ff05e75c702e480bd7bdef61ee718b66efdce78ee8976562f233d7c4e48c607254981c91c94501c56ac74c996e724136dde482ccae9b5c900976930b3a79d17e4c4e0a3b64e125f695af7d618c53522c526891c2d102d16cfbd3edd88ecabd57c26f82ab374f4edefcd49b32266fdae8376ff29b33ba105fd7ee0dff7e4851e82be6ef734ad2d7cbdf77d197cbdf7fd157cbdfa7415ffff76fd017fffb38e8574b5aaefe3e0b2d4ffe3e0c2d537fbf8696267f1f062df5dfd7a165a7255157ea82be124c0ce77e5049fb329c0b4249fb2f9c1b6249fb2e9c8b8292f65b38574525ed3fe7aca0a47dce3924962cb22cfb2bce07d465ff84fb515df653dc10a8cbbe09a7b9296897f5a87428f1687a246488860001000400b318000843511407721c09d3aca80f1480125782605a443a97cb42811448411c05511083300c8300a28041c428859042a604eb6a2c59cac2cd8950074e7c907e0f3c21f687a912951366841574e90197ba27fee44f358e2c5ff928dec18681253ecf132248d80913b78523d3ae8ea41cf3de33f823980f8c0e1d76b90f39217743b5e3b522be42c5404ef733e4a027302b00a3ec6ed0a4ccade9c8bd43422e3c884b1a1751663cdca3fcd4f41ea97ea7dd70e153f0f74105f174aeb0bdbaed3a93c28b44157a78dda0ff3d273a74792a75d2e953a11f131d44af4c776bc6184515f2146b087428046de8bd4f562f1da8a4073ae2ae41459e9a6b0d9bff3d4dd6524b0f98e9cde636200e833ee67fcf93b5cb1eb0d089c9aced3a1a948845afad45243ce2a6290d580751165cb7bb88ef3d4b16466ccd59e7347518060aa7795cae5ee3503ab0db42a7e8b1dc28f467d1730ea1344ff033cef8bc65116ffc50e7537b4054347176291714c90e1a6fd19b7f72f41c864849ee448d37dc6356293a5050d41aebdc7c1dd1e8039b685f5225d548d80057ede41b7bd1cd95c3f302f7da2522565cd702acb65487884e8f44c3d1eb6d02f86bdf72089874040f52d0a7634cf698e1d3bdeb2c7a16ba4988f71a4a8e35be62ce3801facf6926d0daf115c244907f4240d5f12ecac6d151e0eb1ed26674a9ca552117f43fa5dd2f6f1383e3a437b5394a63ed4b95ee7a5aee16cd2c552803e89d85b9698eebe6cdf9d6c74d1c868e8635c6a3ee5b97bd5eaa6be10414b0e1ec71e44bc80f29f4446ccd24206a4500b145dd1dd9101956602f5096b95691ba44a1bb729379adbea2eaacc09a56be8f141282196fedf1e68ed08691981c7b14c747b7606aacd68f6109d3bf035584323b1c8b964e720b10f37bac185a722e64b9ca25e2f5b428dc7153763edddcdf510f23c4a9abc2a7f2c87a9ce8951d907b872de3fd32f4b41865f01026770b720f858d9202e4534f85c8c3a0172433e350bfc4153307b011ace7b6470b5322b8f734f471ff7b9ee8e7f05c42f616d72b039d167c084a343bdf0498f5a0a80ee541b60d57850155bf5776ed22f8122296efde9703db28dd920cf6a9cfe46257e8f7965958e851e3ea05b91138ca096f759623ad9a2d8b58bd6788b565fc017a1039db681a23e893a2f70babb9cba8604fcabce43ecd70e99e58baaf412f1b9d5013463e45668fe34d8dccb48ed4430d5760c07ecb4d97845f7a6b05acb51360ada049a13bc9b270efcdb02dbb2e8e42356e57740ed111ef32e616d01dbc003042e98157449ce81b8a97214fc0f294171046ab111805ec76a55957afae68a7685a7e1930e64a7f8aa6d7970117aef4a7e623c2f3b96506f6a25708486b240017aff1a738f4433a30b24bffee1900b3d5bbe5d49af962d49dbdaa06cda4b1556964e2a469a4b1d14b9be89b5db69b591eb5376a050ec8652293d32891d2e12233cb244e8db5267a0e2107a1269cd16488023d2fd912f5509c87fcf89ec643ee10ab6525a617d96a4345c03906ede47eb726798cf25295a6952f39e96bbcb5d49fcc8f6dedc9162f94364e2203109de696b9ff550af53b97e6df80c58cc57a28a75de7b4d7c2704559b991e16d1381cd082f41a2f32ba67daccebf40749b9d898a2d70c2453edfb8735b72c714d3d42c48c1a3918c2806ae8e4d047f32dba50064c3c3ce3c8d5e31ea3435fcc354a126ae43fee5c8984d3845ea5cb373a0b674b6f403c614cb508e63cd67284c5e00189df8266840743ad1221ac8a335e972a55a95fb99f5594dbe3ae413d4f643adba409426e26d0a495a65a5b484397a97cc7567acdec7b0d98d789dee752c8f4e58cc5117e5c4e5d2ff2e5a58e1292e62c1f86ee9ced7e44b2260bb2060e76afdf91f3be98577973179fdbb9f46ef3fad43c9be0fa94a49dcdf131db3fa6148159a10a35b03b62036757d0756d68a71b42b36c229d0f7a2dc8f8ab182c1466140093780c63236185fecdfa57491e28bb824f1a0899c55026f4138d55b46771849004a2e1f3e893a4604551c39d5b0641e8ac95d0bb8b3c37540376518ad0d8cc35e57e65f4aeb1c1f8fadf9bb4e57e4d885e62c9286d5a2bc5ca9d458395ec26c22c4ab76366d4906ca113696e30ba22cc7e74f32514c25e278a92b8950a72c34c62c13286f9d1325b0fea4b97643a833030e4f91496bc1c2226b16eebd0bd0441c174bf4d57111ba88b7bb5b0c5bf37e7f49a0d1a6aa4d127d49b11b83e6903dc1bf5e7019649a5d3f9046af34abef176244cac1e43b96695b3aac642385bb193a14d200ac5e02487abfaabb7e219ba9dd73191842cee701a060127c4f639d6e3296d9c776d5b0da53e2cd7857c38257bbef2fcafa9d06f3c20d997ff45e06e4dadf1ff422b890592462683ee3662b4337c67071215608aa7c02214231362e4a0c4982b3a3b944f01285e01dcda8967cb0e3d99ca3f35356c426d46fbae0414393fc61f8b15dca85d5f2308931af418cc93fcdc2c85d306054bff975d1fe8ea8a99d63155dc3816a242bc8340ee3bb220f50b0925c440f6a980f30aa92ba80e0cfae60d0b1863b103a403c182a0cb71872e61a9c415be1856d80dbbf49f1c274118f4561293991dffd1a0add544ed7557527fef735a1658778a6c0b699dd44bd61e183f863f9beea70fed63c199aa6aabe52b9575a18cba157e4f3839f01b06b962b606701dc4c0d981d8273fdcb5e432d0ead11db608c0d961b5b4e86474ccda8b33d9f4ff753f8d2c9623dceb6f3ea130e6c376a4ab9a87be24443e066d630ff1b8f049323062503f5329b2a35c59c7130b30c7616c1cd34d88c80bb739c83991d783de32aa8555db49cf19843b03a9cb187f0ad38334ecf0d305f7dc7ff41f2178d14eab17e9fecf78db0e7446ca210688f82075859ebf84f07ac30ea40f163a380d65247e54faa04e79d794f7ba463cf9565287f0079f85381e88e5cdf115ee311951d70820e731b7b47cc99305f3ec63b4d3d778ddfdee75eb8270311e90b054bd1797010e4ff5ec5202160884f6581947442620a2ea7bbdacce9bb485d749306b3c840df2f47b16ef1f5b1fb88a94acc5e4fac070dce8a217050d22c2673da7b1cb618fef37028caeff7dfcba121c3004e38f3f6af6c8cb8b0beb0592f5b866eb5de1b85b185d878964db234ca1bbaa091e3c451fedae4d6b60cbe7baddf47b7ef000c06a9b3264c2c6db08ac9b81553e353134a2559b6ab3db290cf50bb233acc676b7533f5c4be03e5de6818e086da0ec2f8bc1145040ca2b37be5b1cdc6eaea64d1c61d0a01e463798231a7709584be6668d9f89078c38fddadcc25a18103bc24c6f83884bb8eef6ed083561f465c4bf0ce97334916ef3dfd931b13e47643a9b4651436b723d71821149b1eef861984d6b6748eb5dd9cd1d606b12a17f6c5b5aeafa70e012b426cdb835b6d335d2e2b44cc3ab260b8d1d151763a62da98b84cbfe2341de1fe2ecb1a0b6e0b42b75ee82903f6cfffe72f27624d5fe663ea2e5e3f35230e6bd7980ba332fbb51cc64e1aabb49ea54cd2a04de738ac384c23d3ab139ab5e9aca34f71c8545a72fba6569dfbbf518c5883e378e5afe86bbabaef4a1b35fbe067092ad11657f5efff806ec65cd63483569dee222a2d3a049860ac765e2fbe6660aea2d63f6a39f3e53401baba2acf35e179b7561bcb4fd4d46e5579467725faad9782f6d433fa20e679568f53b1a6e332c39448d8ddca59bbaa4a05ada5df2a312502538536ad5205ae1c9374e7450e2a900ebbe0ae642c18f558a11adce6708b0332f9aaf233258296cbc886eb90c7922d93a83109557a8f51d036233719dc3d7e2d9de85af96a3d988a8d1b88f88ac93849dab53b497d4e6a7e911f52909261ea33b09c77b1d7e51175da474aef60932001a63b701010e42d34318b9b810b64f54b5e0d09b741e8b8082a96839a8a22293874d2228f0bc3fbd2d87fef80ac69dd828cd73304161efac6ba3165064da37a814db64e668637b8690abe7a3f37aef15aa30ad4541e6be332dfedf91c5238931f737d101fa303cf6d473617a4168c1b49df00059a60decf043d7f213d17ce8de8bcb01a091c544e319b3b7a7f01294138b896955dd1d52abd37ebf0f055d9653a199e2e82554cd4796929a7d99405c49de207736fdcc9cbf75d86eba6a254e63a88112c865dc2ee4bdc8a8c769d22766d6e257d09d44205295f62b53c9c28392c40164e0169aea396da8374440e5e37a95fc98fa6dc6bf81d2735fef71a8080f273745e52f32c98fe7744f6f176c4c3bbe3fbe6164477a2731a9325a0a185ef99d1deff3dcc1d143048f55cda8159accc57fb7fff845d53f4c95bd930e360423c7af2629711d9f1a445ec855af0bff840f2c9e4c7fc0f25d556a3a62f850423c9d789ca24fabe9ef5b7230415021d568905a6c821d91100257f724dace656b05bb04c975663e65dc688f67f0d41bd3122df8de1a02770c3e2651623910593aa146e6e956b036fe0fd9640f2fa915a32e8b4c42267a9d079acb010c4263f7f029b0595b68db238c7824987eb5a871946d76457c2471592da324e602d662f30345462b99fd06b621e9d86d103f6e838e2757f857f7126c502256fade027f9e23a0a903a40a6130421b6cbaa9001535673e64089fcdaab6789e34e5652137e618208d1e1c06573e00210b76b057069cc064e4f481a3788f13600ed2c0cee090e28054900681d61cbfca0503ed53e286b461f9cbdfd3850e7e0c30802d2910bca31e5d76e1238f73ee891ed0f45225155a067d98ba1f67e02b4ec87a5f8058d3a483b965069a53649ede5a2a8ec23981e9a109e07b9497c45d5d09d0663df435d4bc297062decb7a7ed78a33b22606d516c955dca9fb6369b107519eac3a1ae7b2ec15b69c1684f233b0c904cbbb0be8cb9f242800200b5cf2cad59427c877d11c044cb9eca9bfa205d6b10e7b12f928374b947ee7a8ae9ae888fcd9b336adea19aa280b4d8866c41393c78268b5296a8ec4d4fc49d0d16ba440b82f36f23c8e334a791d637692c7e341a790f31ee22815e519de84d6475138b31844f60aa11ce7f00be20eac265f7f8a6205cea9a8917a94b392ae08cbf324bce1a6f23a30985e75514fde78cf17e5db15b99cae32356ae4ba4df1cbeca6fe891ef702730753a87c6eb30cc8f6f8e29795aeb7ff1e7ea719bfa61b41250dd331058842569ae3615826d09f6fff9f245331154387b5502b3ab2ce23e290461e838ce7b8096c3d6333a415388d572b2691a9be9bca0082cbfb4a330e0b778b79dd4fc55955a141ab7ebce5e904ae4939d37c0d14ff37162b548d128249652a6fa6c3cce606db00f26a29adf439941d1854d8ad1512006a6b06aea3b12e69aacbd6f96825b537ab068087386652e29db3a8de916abc051cc22b65192237a1a012d21421ee9001e6a422da89144acac2bfef7701ed9d0616b470433eee67ed865255342311d6c0b7df712978d29f8727e8656dcea5ca4a91c3b29e4d7e92bac37df411ba1944f3ff11b1ff01bb7b8db1392c00605d32ff404aa10cc40d729c4ec87ebe7d4217edecd6ee7517a27e68a3085f9e2641f2d842fee1605f41ce95687b9b341b03ce6c855ed6ee921a153a9aadd24bb2081f3aa2f0b755e0a3c5277f41b2880d1a182e486e36d6b2df0ca806c9178bb5880286f52bbf4c51c7d608e5ac2d64bc6a15554ef599c95eba82b0ca4513a5b04782d59fc3965e752fe6a2e0f8ac22b221958b433986b67235ae46c6218b582664c6f732abbede8d52126ec5570aa36cf8b84f784543cfe3e19cbd1c7e2541fc79ded5724709e826c23d1bb9bde252ee8bd6b9a4eed6c9acb4cd378b283f8891831168cca162c617c472847eca08e5b17bf21290a1025c4f0da4465c90488614c7ba84677b1b2ce2140c33d735ad6979e484e9447de8d6fa5d0d26ff13aaf5dfd69341d3584af7ca704e8613647aba7354272aac57c2142a01b3d9fd4ef997711a7d57d6fb2017396d2d121a40f328260432ac7efc8199231a1a8ce303225a0a50491f91699a665b7f563139fee34328aee52c78d9edb4507fe602ef2856ccd937c3e81c0d2fbfa4494dac141c990f28c3e7c9a97937ffe2a104b31cdbefd4e737d68c303c1261086a786c00b9940d4a2101d43bdb931c604ca7b6bd44a08f5166a477c07c034f8dca6995bfcd4d44f29d04e71528f585a88e57e200ad38b821a932089a89211b57293d68447390a7746042ffb962488f899d40a9b90bb05c780305ea846234bf435fff7f3b754115b905370c8c9447a4c029923474f1cc46ecc2eb84e84e193ca197dc4a722899f0747292788cbd1fdb6a5b47808a2151f00d1d8ed3ce7e4796a321644f63c7342dfe863616afa2e9d5b528b333cb38b9c5cb32615fa950eb0911beae0201d7436a062239ce2a4732b2815b5119651d690200fef67c30e11e230b268d4431b3b68846550992a8fc9bf125ca15dcdf53d49e9a87100173fd4652f0b9aed7129a11d1fa8ee5272510488d2d1698e06ad72b6340818fccd5870abeef5660e2f10236c81e4cf6602ea856e366b86ea5242e1cd67fd0da8bcf963d421688a739c81e2b55d6c7a1c53b1403f33690fb832b9fe1090cea28850519f03237c4da0a7ef3fbc78a247fd4236d9626491b8e2bbe0c40404671c55775276364faf3b7dd8819075ce7dd1f1dcab63af3cd086f435fbfe584d280308d03d3caab8b1aeb43147b7475e813743eb9aea239c1812ee36008496bf9cb546f2c7a631cd440850ad29503851d7438643a070ff4b41b7a6c555f0392db591fd811dcf2c234eb4d31f438d4dced2c1c96b84766270de513e80dc635359ac2c0a22d6fda2a22d8d062bbef16c1dce22c361f771167b77b9c619b982e1b28e7e14fe0d701b7d2a723ea480de8f19facaadf47e9b74ebf73141f5849f028ea2eb4442192f7a321a5f1ff1d39cc5af021ead9af4222d4237e2674599a440b1896f531447aeee23e72848addc2045410fe5bc932368631358e7891a66ec859c310e027c6ec2c8b748542cab9db72f88e805f7385292f381f2eb934507ae66c924cb1ea37549a31800b22916fb806d368e844a0e914bcc11450f0ee5d9cfc11b2d1cb87bcef39029049b8d647be6981416aba654b0714cd557c759341b36075f342002873a983f89bd3702682fbf502f6b96db4c75f453b5aa783a3a2ae190d117229bba5c3c0f5fee203d898b0974e96eaabc67287422a68e9c57b376bf71d8de968427dfec373352ed559dbd6de1f7f7066ea47999970022f04d48355b847d824914033e0d910ac83b72e1d38125135e0717ae24c33ce4c6c4788aa91679acc2812e3c763d915ae93a621c0db305059619c7b23af55c1dce392d16bf7c83cf15433784d6fe5cd2909af838d3f03cb7fed0d8603b22d195c5c7b11ed6342e2ea65190b33c111cddee22f369c821da386d0b57b588ad4eca66734e954c0790434190c7e50896894952942080f2d8d2409bf13845cf3e0ea3f870cc4e6ea94f91ae083919ae37c68a179de22953756cc68d0ac13ef2af4ba80e8534f5fa04e19fb54ead513e0774587c4fea874bc8e4b2097f994ae87d1bfc42974a72d4b18054af1d505f3c42897a490ee14561ddbb853dc61c02f24a71f233050c453dde2183ff10fe3bb11f237d9283edf4a4d026aaf853749d57ef1f6264b0cf38ff9739dc6ab8f07c28b01160d6709ae1713c98b4071b9d1f81c0d7d534bb156fee452bce0ea0a8f01caecc73667396b3db0c9b10626264ee15ac417f43dbd1daee6650c9c520a29634b55fe046642bbe1e9e603c60f8180ff10d5a733178030f562b01a766648cda0f05a19d096acfe1cabeb4341f9f50945ef76bca55dc0afc4ce1f367f587f64b0149649c6b1380dce6758415e3941556233df53a43d54f61a722d1abcc245960cf3183dab2317cff9e31f5fbc5b0c3bdd197fcf2c50e3b8b759acb419e257d12ec920abc36b732970ca7acec308a20abc667cf216b502c23bb2e4d089b4e20e6179533d794724216981dd921c1093a9d70b157d879430619df6fca6751441789231009ac37b455f171a0af0a659a3e83f406dfb0cb7579c1396d934ab5f2d4f0b2a55c2ab9b5918d4742655a9102261cb4b7a0868a4825bf44cc2df4e70c14a2c183950b8bb3b06ed0606885937438f79ab253b3c964cc7333094cbd42c216aed2943474c88d7fce9c73b3bf0ee8fe09de2d8b91fdcb7de564fa9016a3f9e96f7f33d8b402bd44ba75389fe354d3e90fbda2c74209d7a9a7efbaace7829a734b57f038bd0a4d27171b2dbc5bc50ab0a09a00882fffe96997f9e706da5486e361223d6ff4c76ccac1caae7013500ebbb8f2369566c1cd5deb491ab05b961e027f3c6483ffd4ab9a515ff027cce3761bfe03c5e0e3f35f26edf2dbc727977726fcdc8afce02977e4153e94d14f472bba74bf8bfdc3496288c86a4bb6d342404967cc4b76129145fcc8b1627a7f13ffe46dd124da41f647d8b799756efcf403c14294023998f05f3bdf520038ca1db2c3bcc02af38174cc9fd42f68796c1920688a45ba141b0aa5401d43376142daae6430892c3110cecdf9b2f38c3f2bfadaeffa53b7604e592a441697e16c2046aff229d7ebe9d521d843a00675ffbbaa8f1dac715187cd950c9135bd225493d58ee1b055ceb96366a1101293297d4bc214b068a2d6f7d4169fadb2cd243774a8ff2ab60aaf701d3046ad109900021841767c682db57077c4ee7db7aad9dfadb877b7e23004dd6ead6679824ee5a46cb40799f83f45af8949dc7b40767e751a7574d94bf8521f0bf1d3bae92d4ff4b3ec639d0b894e0a60c13fd6548b402f16b5ce6430131af1f60dba034f1672bac35bf06eefbc7fb1ba82cb942c6e8436275d2cb5d00741cb904c670e11b6d1961998958b5b3fc66423b64b33fbb155655471b0a61250b4bcb425ae633f0428f1d84627f077d33d5f02d226988d13b0953b769d4d80c06cfc311f388111b9f4b6fe1288519b9b6d6fbb62171d65d90712d512c491df036782403278b1bb1e64213cb05ab9fac5a54807f0683f96e7ebbb18dd906267d5839e88ea40e4dd330aa07b130d7b9b695543db74b668cfb36296a0c049e06d3a177cddd699082af54caa81940678a90a941cfa9a5e564b5a0a5c697b77060c2c046493d752c2379745b230906467009c040a7af2fc67f9da52a921bbc3572e3985ec0c90c65f5d4b4a8fd7334000e8381ef1eb426ad27cf33d5b7783647c0e6f2de9d25ada227c305c7181258538f0ba1bf83b4fbe98e90696b01a76beb2c11dc9cad4ca7302e1ab80fcd739fca30fd28cd59232a7b3e1d136a8cb7ea602cd06b3b95d92bcad2239f15931da06a1b8e980511b23789e6327b92442c93660b1e96ba16e7449ac1905ae00bc477445af9c3a65a4e1247acb0030b54d6623310fcd441d78afd706f115803afb31025667a22d94c4f1bc90752ae6f2dac0254495d1e8374ee7888bbe814c53c165d220f50c5386ac47f06d4f7090b476848b3898238217a9403525a9691046b5c1fdc317652075802876a794308b48ef43e4d702c1f37e3eee1559f9ef8cae732f3c124ce3fd2570b5ac551b7c9ce9b305b8ec94270a85cbadfcac9c5400819a2ea6b2f8e450ce8881c752601bc88d943690c6c9bd88b1b8622dad47fae726e2f7596637ee45921bb4c12f7a939509878671c19e9600150f710c7667fe6b590958eb5d903991f90004688cb20204212eb203338eb6528f2f414d24fceaefc50490bcf0fbc1ac92864cbe1cb6b6ea8c431b8a40b32c8bb76a9acc0cd86b253e373a2f0c22c25f9bdce5671f9d302df45f6e75e33d234d3efea1e11bd3eca11f2f2b5e17fd3fa6cb975fa8bf7a317e7e76999d361ba0c695cae6555b146a979f7d640ce63f209a3201812090527db4b5d47e54cc7e850b3d70580da6cc8c41fea339a5f70c11373d217954d6b281383d5621d38a6c703dac50df5388c012c8a425ef05ea51bc6068f930934e3135b3ea54e2814543064ad713f439dd8b430873c0c776839ba408563d7cdf43cbc5844f3d0272c8a59789393c22c7db5a61e9a58735a16fae367a60805e07717b035ac81dc3a43a39c6595709cc32935c9f64d51fd35689a67b5b99a9d920e1491b8005640324abd9c00e8d00130a0bd06cb0a88ccd300929461c6191b8b2812611f1fe39c3403628e15195619366a24cd0c015e100abc3d5d3086373ac852bf16402e1a7feb2f7aa424c96810d5879d8f5c34b3da2ab8be946d090268e0e0e241edc49a0f93038a0af00e6030fe6ba298783d184130803a0c75741f2f78e518ece10f109a4ee536d1d8dee4c03532920b2e9813eaf1717e2c99112cb3cf0dbadee980ad6141433a5be2e5f770d72cb672066138e522908956e6e0b5a52b4ba61cfb1c5c187af4136bf4ded5b7a48af27f064237d93e3bb06b9e4f6025bbb3105337c1ed3d0d2d147e464de96f6f5dfba619b9963173757a0e36bde5aa46bf06624b601486c0d726d07db60df7898c534c4caa11a58331afcfdf73978c93ce8bd0810312dc07b856a3980b21cbb87f949402951fab002d5875c72849145bf42a48ae2a1915dcb1df93555803c04a32d9bdeb456e179c888f01c16c6420a3e30698cb52c0f45c31afb97133c441065b23c4e7b503886ecaee4d8a3e5867e2799dc61886a922b5f970bb19b6f61d5b57895a4b9911fbe48587d6b16e5bcd798f53340fe10c6720f94b3be782c77c02157138bc94f6307dd582576048041e3376e4ca5c449bc0b14819f152830936f3fb08f9db60787803c33dd5cbac72fde65040a50b95ad2c2171c45dfeada41c32d0d2ccbd9029683bedc311314fb8da31f19e6605b2abe1ae5b7244af44741a95e01a12c6576d8b298941c656f322a7d9343d574bc85548615cf4153b248831127f8cde067b1f4af37be6513e077e0e6fa17b48b2bc1edf12a5062e23758b982eaf67a95e84d90dfd74b185d21f6a5cf16d94f67a3ad89cd14b815cde2eeff2ddf4341ac8efdbf6e61b4ad78de9475732efa9a5986c4adf82ceecdafa53b80c47df57ebd855195621f3a4fde9695b596bed9ce70efff96efa1f775b78253a35abd90665b4af74b8ee1d6c66ea9bde8b4eed42566fb1ef7934e8339c2a54a170fddea21b416cfeb4f5f62b5ef71bffdc4c3f7798b1432bb50684bcc6f062ddf20ca4abcc649be19bcd1fb075d919427f0eba47e1db0352423fb01ceb295ef73c2b574edaba30ea15e3f624569d1e652245cab77a6232ebe1c3fdf5a0fe0eadc05b97ee38d2f1f5c2b2d36576454a44a3c57981755770eea7a68d66b263f7c47ac96dc88daa3c61c013ceb1823b715ebef73951f5520f2d597a0a9825597ba5b5dbe7fa7bf132eace355ba6e0ef440695381d73d6624b452491eaf4fe22743179cc5d12267b3d9bb8413fa27dce455240fd0ed1cf02c243d4f22f88c629968fbbb9592d702dd01b9b815026db49ff6edb5b64ca2d6e111481e5f1f35fa4ae472ad8af14a333b2da75a27b6607bb957083d300e6e2ba7eff0e3afab5bc917c87a2e09ebfd9e3f5cd35828eb4abe988edb2e0df4ecc96bafca879ce3ea57f5ec40996ef19248f88382f735071bfa78557d1fa2ef6b44f2de5c3a39285366256c66f7c1d16552b5f8e6597b0db2adb038cc8bb6134eb421a978cb7deff8aa0db296f57178e8ef47e9801b39c7180ff6a9fdaaabb11671560db0b740e9f81b79db8dc6a6ceda5e29916821bf904e86cebbd76b64050fa96484d4a93a01eb15a25f640efe7e8d538cc8cde026d2f813304334bf46f9db463e83ab321738650564184e8339b9e8da576ae31730c3943511b586b816b016dd81e2725cfb858c964d650b77a5f4d9f2ae5d4b4d052ac1b759f448a8270df42f9c043895ec8cb5d9d8fa7f6432b62c2ca8731c4a940b720c23811c9f2d75f2d75703115f9e893ccbf7d8ccdb42d8c0fbe3a305a028d73214c1836b5cd0b87af674de0c60b2a51e40df37f479557db63fc0e08b3aea2dcdf6d528678f349b5a3ff6412799815ac7283f585ccaea2fe45a751705e0302e12fe2a6539b80ccd71898d69f0b21ba54f1c8c0b4c834b5a236d1863652c1ed7371ccd93cec642821693d805c25bbf015ac7c817daaef2bfc524e2dd7b3c16c5fee54ec79140eafd59d89401dbe4c596ac7332fb2d43d07e2d4c547bb194f29097467233c0ee953e7da7b03802c90716cbd4158ba85b6c48c74838fc8e0f77eb2f54715a24bcfccd2022055fb66610e19da02a52539a74d5af5192a06fec88d703dbda5746cd4478da90e44a0394f3862ef7dc272c223dffb088fde1a119b16178b680ead0d38aff1a62821878180dc39a58d52734caac7e4ea1adb14a7e5d5bb40f87d7f775f80262198beffb123a96215128916a3db503ccc1fce82ed9a6655e4faf0c7c753e1e3bfe19bd0105bb8a5e434bfeceac922dd7d37530fd9f37b968ba1d16832698b7dbddfd57bc02813eb6c688eaee10b463d83ad17d059398b6d6e237fa1b377af400dde3dfbdaa85a36ee318efed30ece54df3a42cccef5296524be9a157a92a28383456b5ca51a8021da23c63e1969f472d6e10dd46f5ae92b1b6d89919b60419ab351bc20caf86d07a24e9d8eabd84df83ebc6305696ed78ce24294c150aeb3581a13b13ee2617b26dd92e060bfcd263d6e69e52347cb148b3dca09d131789a0d6c544171b1a172a2f16a6ebeb04dc51ba581dad7c92193372b192dc310ace2c2e359a54428bdfe1164b1c4a95ba92cc5a4a2b455da577e5e82b7d749d1a825aacef002a7c5e252362aa68b172edc45284b358e9f205f22d8c2a700ddca12247a8ce2f2b46b44356fc4c387081c421f5eeac58540b24b61ae52eb1a58575c55d62888ba693670ef6aac3e38a6531436ea529b462b9121a0a59eaa7e996ce23c98ad53bd220f61066edf6e3c143c003e94e2312bb911ac1d64c1deb98afc78799432b622103698dcfc2de4ab8e8610af50edc07e22975d4c9ac3db0fe20c0c87e2fc837c6760dbd098dd5e073f5badcde21d4f96c26d47fb4136b5a26fa09833cbe072d8452e42195c678db25b495d7229dd63be75dafd85edcd950e72aae2b80ba52605a84ea9395c05b45709f195434ce3f68daf2b513f29d93ce91985dac6e63a7605a6dab62ef33b8f1dc7aa7bceb057b137bca48c9b7563b61add7d056ae74de5aef9cf355636bafcba8d29f0d2de594df0641cdaf394a4d8a486fc7b9ef9c39ae1b941922c7d50a59145b5a1a6b80a23c87774b1f62f91b10bb67502cadcbdf6f716f3016ea04ee002aca449d17a5c176887c031f04a56c55e6f961404a34bff7fed60f4e68cc00687333d0cfc19e17d1ed1b428a8d0d9662f5264e74866660dd1511191aad791581392642bc7c8319a40f26fd45bec1d0f083d27c836d1c80061fe0eeb144c4b5c2d333177fdca70f1db36e33f8bb365dad6fa5151ca4301c0ca55ade56fe49042d8dc19d1f603858e33962968d93e2e17b98a3efa2d9a7b00475ab08f9e237805764f4d21c6360ebaa396cc411a1b761b775787c02d13eac6fc77dc64c1c5e2f7f2db3484dcb45c4818f69bcd54c234074066f189baebf89833fc7579592c3a921a2fa71fe77f8550d0e689d21b0bb1b28f7d84a8bf8fe8da18586d990317ea7eda2c9a7b204dde6fef05bcf691e646a089838906e311064bfa1de08c4d5c2eb998bd616d77f305c1f8a0fa74e137c34b4d878d8eb44efb55d34fb14b6a09b3912beedfc9279927eacb8f5e3a01a42d7913c7e50745c2dbd9ea9686d69bc0718f1cac13831345a70a930008b809cf49a90feffc256885a69ebb742ddb5de4418d17436fc1edab32234b43dd819559732055a0e924da6bfcfbe23f3da2a6787425b628eff69dc2fe7720e64f27d3e28c4bec3514507a16ec24c324e4f05cba9beff843edaea4c287430b00d04a899c18b0c85c9a38134a52f51a85d1d3d5701b9242b2b0ca89c4afdbf0e09016794b212e42b2b6255fc9a44d9eb92c7c9140bc59a3a7e2d0991464723fbf61fac4473b1bac2b2c8e9d4b3503de3aae92cf90550842516cedbc79de07a3083af692f5f191a423d61be8ed33c534b15d59319b5ec582dd99525da1fff096da1412206605186bdb286a11b16d6916d78f56d2e18a4533c9cea14bdafbb8a0574b8aa5aac2316661168000aa9aa8424ee322fe7cade2107f5b026b8a3394173905f42e577cbd5845cf3511f39f907943d60cfc0fd1514112219b82de9f536032103b15d549abdd77f1810cf7e341bb6e7cec167ba4997e68e8a133661eec04a65bbd698c66309d50aad9011a06ae4e005a153bdb68d24748a33aa4bcbe627fa22abea7b3b80838d4e955c15d05b00866470585942c79028be5987dd9008399e02b0a04f59bd6470dcce9ed64ff25a41d07adfa736d70c01c37d2668c763dbeb0ab80533e1a2b76b9612ad2616580eadb896590edd40afaaaf234773887ea2c15bc04be5c2d1f599a9aa6f5be5df109485090292f025019f05dcf1a5085dadabc4f6b9666121676b3e52dffa7032964c6b705ced1f00256b3af1a9392834548302e2e4628d802104b4fe3e84e14e6582edaeee29ca840d3291bc9cc07c999a6a30131dd232eae872c30ecca7ee1ab97f7b7c87f9cbd20d60869cdb2f098f492041c3fa6775247e8fa0472fd02d8f8fd32a2ac3a6b348aed3711ccdee1183811c2224635d8b948c1c083f4c6a94410cd501afec74ac3309c01669c11a7eadb5e307ccfaa0decbbb20804fc784ba73986f2fa91a804f777ebbd16ee9d0a212350376fc1776f055bb65dbf2e61afab652e06ed0482c6554db0f4fbcdd2db3321c23749b8f483c3628877d3d1b5c269ee428d7a9f3df50b4265643ad2b545aeb4f6b7dd87c175e33ebeadd61f0a1706bdd82fbb852e5b2e8343e5ca284898f9c9d5d5a61ad49dbab7ab43c61367c7dfefccc536dde672534ffc124e3573cbd81e9013718d630bbaea104b602eb40fb154283021c22d6cb0c4fbe1ff529fd2ec55fcf3b9e9e45d5ab85774c865b5ce737288f25432fc82603d8ec17a12b25c3c2ec86ddd40c61cef1f7bdc2e1fe21198c5e072cf1e35e271900d78b5d29ce01a0f50180d3bf900c7afa6ff616d75943cc4d1ed899620dfce5477e09495461af36db91e1e76e82981698d41c8686f2f37d5cc05923dd91a0694fea067dbf08ea20e822e8f521b95ef0ab2cb726a55b6a8bc8e368a2544f91487e45221b3a2ad11389b4f05f6193229c8565d785841f51b457e2584344a3e88951c4595ef819249e16e90409ba7d1f11c73f1e233eb6a513687db0d2c3a50b2d6d65efd2f9d4f96844561faffe1974a4d8b8bfe1a4c275dd0da54c051baa0f87a8b47efb7693af69405f1e7a6e0f8f668bd30145ea036b78e0c64bfc52578408dfc95e2ffb3f5d3122f8d48f97fd9fae1cb1fcc5afbcc8fdb2bfd3952396bff8942c747f9d98731fd601d3e516d5733382efe1220ef531e93b49c7386e5b5b6513b886fd756ace8d5a3f6faa7a47197a8f1770b8af69cf9234c6d1b6b555a601cc1c02fed419f395876f5c145421de7e1187fb9af73c69e31c6d5b5b6519f0dcdc29378950cbf9bc41d5e9af8e2f5ec0a13ee2bd25e998e36d6ba30c036bcf3d7df3aa0db9b2f450df6f87a7c7229476d10985b6c4fe6e50f0133f0e7b6d24ef2d6a9874ed9065ad51fe4f9c95f21e277d3358e3f74ffaa2e8215fd3c7ff3704cf8a89f4411b1ac930665f74cba64592cd57b1638a5026475d3ab1d1cbc4c40e7f49e0b7cf51abfa1188f1e4884d61a034304464467ef0392c1b575b3cd57bdf6a78bb9f0dc2cc99f4471e4e6988f69bcef7e3858698de0cb3b24d3522b55da3ef3ccd7036c33b64f0cc9d51ab098fea0749bff484803818b3bd179af13f1f2e684d8ce29fec4b7f1006f5807d7dc27fbada459d082cac9f9e887bce910936f371e2d1d90539481976151b9b62e10fb388f5924b1980aa9aa73f7a2857975dfe182fddb7341b4c285cc05ab36790f30a5d409b684fb8da3d5db1aef2d7f4f169f5b014fb91a90217805d3c893d1918ae2fcc6a6d8470b3cc8dd1ca5046b0c2d796a84b7e1ad27d3f93bf2193019d69387dde897d09971ea460077aa86496d3db6d9f320445a921780a03ddcc2f17ad5087a04c61ea6baf0810cc6c1a0966f55e097ea2a5f83b4ccc02ee9ed223ac0b3ae19c41cca0f250db33988dc93f0c1a745e8474a78806cb479ea7e09364037638c5baf6f030067fa461a73d4585259f55deea26d16d49505d19540320561c92e0fa525230bc144cdef69cb2ee6fe171ae9972dd62ae9705efbf1a49def8f571301498b7b4cd9219df079198e8f8989b260f0a548ec56e05d69301c9af24e72d5bb0f056d2a0bd76f71969ab4f751f212c837ecf438ff7ae7266095de1fa285ee0fe5d0d0cc0898ea2b207f3fc9b1dda3af6a2c8e110b8e6f9d40b2894c5f354f290cf3eaa03d293a78d3eaf5ffbb3c5bc27334e2a412ba7b68290051ae7f4b69841ec99d51b58836deafeefc15220f35546334f335e615740d4cbe2c0fc3c34be6d4ce3b0e886446d1a4be04d870a4a947279fcf6c99295b47a641f326cec69467fc3c623531ac5cc6481229193181fea29013fb429acb136cd4a8e9d157c7250af9d5964816a710e1aed9fe1b5d50eb4f10ccefbceeea2bf23c2508e9091631d3433a9f5386c369c90e2bc2170bad6936fbde822e83a3fbf71b9513922c57ba153765b3c625a606a97aa80877239aa21315f9cf80944ea249bccc2d8f3aaa517d4d75ec7330abea6b6426372ab79c6f2d65490ee5f03bf0961af126babac8ca7b7e4bbeea0a787f219d49c97f01c5610f965b4055470ca0fc6165a8537c760876cd6b9498f7208f08f9e704efbf4d9a5c53c307ac667f5678699f5d59f6cc8026a304e6c52206019a503912eb18be47e35e14e06fb9fb9526ae32002654d8beb6f242853c0e838eb6702292ebbe1000018b84af9a0861a0ed6beb82854bb9be8a4dde256f0dffe67b3841042242152eebde59632a52465e2069106c906f2853476c2d22f496da491311de760eda82f715090232c85a52431648812449a4817e9e93142db8739cacf0f33656eccf69531633ab62124247f734eaae9be7c0a5e37ee6f3cd5d4a7774f33c3e9a864cfca6bdd5137743ab8435485619312e17c3ccdab687fc2117a919e1e37e2e33e9e64e52b5fe24c8eb812c702a4ee045eb7ae043b11f624a80ff1217d4bd663a13f8d42f29148edb05e6489460fad0bf120a151145d4a2ee82db032985171f9e7162e3f8b172ebf15062148d41dcef9b05d575cfe335cee23d4f78f43a8ef8b6a209214951fe99f9fdee2a21d14749dec1504772304770489e862c2bda280511eaec47692d5aa9f50a2a4a358b2a49d3c39d24c9a764399317970f9b719353835ae9cd574fd0d1ab7437bdc09733b358d3d985baac0a5978cef47a3178998e596bedf337069fc10bca5b7e82d3dbbd32d699bfc58c4a5df8fd52b1fbe244f3443c6c89f959ebd841bbc52dbdec7efeb0417a260f2671d5f5613a1ca754b440cf5f2eff27137fc99b4f1be7e988cd2e185541561c386b1db7ad232ec7fb21f66e1676f4ada9fb9c71ccafe61574aec65a67da43efab1977ffd89aaaeabe450a0b4fc868fbda43ee0cbcf4e5415638912e1036a1ee5a2fed3dd36ed446df8680fbe1f783838a917adc81ce8bfd5b621d22091a6e1af1512e11a3ffa7dd88b51f6d055775f46883c212d5fe83e82d23e52f468358d9be938070557921f5cc11b1e9c1aa99a9741bd54d3bc7c9886ffbabf8c708d1a99976a621b72deedf219a15022cd358d06571bc5c1b970d5447d38d395b470375c9ae241423829726eae8344dc166356d48bcc750fa363f62f8a9e37e4d2ea62a23485c9e587d8c983280f9e6002feb3f0ddf2f6fe0444f6a9347277f84e7900b951dbfa2f20f7827e5988a444b3f821cb8a49a2159ad0a23c2270df6b19290f2018908b59107894f22de9c30fd3bd1dff2d5a2ed7bdbf9df7cd535c8a947b4befc12ae0f74d6cea832f74f64275ea40dc3f00311de7bc5ce79c78762f1f6793a43e206a3c6e2378e6d94e9b60e495efba5eba7d2e753d467df89d9f65ce39947db4f14af91946559884b09d389dc844c63cb9d9e573046f247593b78d503709dd9bf0c721b747ac87d0e193d79f8b0eba20701e7d5dbb7c8a3025d6f2a25986a33a19639471720ae2a82fc61f1d74e3bf29b18ff253988b5405b55ea93cf43e134d86427def9ac6bedb47ea53b5d644a8efb36a85e29ba698a640229088d391cf7fd1e77731a9f52d38c5f2a83e99aab0f99a9cd46fb6b4c5dc6eb9bdb158b172bb840667235dbea7068750211c25311a298186534983726b402598865da64042c97552d460c8dde8755358a1874b7b9c4ee9b58ff1b0078b284e0d406080a2c516b82086fa9b2b43174a57304971b2f39b9bc29477a3f31b4f900e8edf82306d01c46dd784e7372184f82de766a7a445ea761d9c4dc368f90dde286745bdc8f4bbd39901baf05d34488453b0c74885b0c704f42e7800dd7f958b0f40a90e2f6456625efc8e26f33a8f03e76fd81842089e5389da8b0b0e8a8f1c77ced2e409c59d4f9fc6a03c5c933bb50dfe899e9e3e10d6b9546b31ecf66e8c9fa13efc9ea806ac011e0316013fb2a1cf80a5f1226b3d05ace92d605bb219fb6828fd19eb2ad837eb3963f95e60b3353c6c6666c3cf450fd1166b813780d5c023c062e04376f4346c06deb2a237590afc01ec057ec6ba3be1731ca2df530575b00e8ea1d234e81243552e2e2f2f0e4803d2b4b7c50bfa82e60fb3e1e7f810440c8eb6f18df91a35372ad039189b140d0cfa6de9cf494fbff5ab3c9c5f7af827caa3bff43aba81dc9245d9ed5dd4eb689475f70506096963f918348200815315cbbfa05a07706690e952df856a47e0b0e0b0682c0406e52033a8ca3d887d8bd29f1e06e19c2bc8f61b17d9001be11c9e27b192217e632684e03786c2047e632a48e037c6c2077e632fd4f88dc74082dff88a207e63a019bfb116a9dff8898d9770fdc650dce627d4fcc652d8b889cd6f3c85cd6f4cc56dee0287e1368b81fec666b8cd3ff03756c36dc6a2c80e6e6fdc83227e631cf8dce0f6c64afcf88d69608465707be31970e0377ec1ed67216f67b43202120990d1ffa2381d0bfcce057e7b6ad0c06f0f0b0c341c6e67e0b76787db79d0a1c06fdc8224efa6b7170605fcf6b8a0440bb7b7f76401bfbd2b3c6185dbdb9b228701bfbd296c4f0a0df8ed451145136e6f0f0a07fcf694c00409b7b7f7c4037e7b4d3479486e6f8f0908fcf68edcfe67e4ed8caef08830807e429c4ecb1fe0b7e782db06f8edbde036027e7b32b85d83db347e7b3ab8dd83dbbf3d2160e10eb73797071fbf393a3c91c3edcd4d21e237f7862ada707b736eb83dfa2df0764650de0dff18d670db59b1637364b0420c3f5db8bdb92a6e8fa250717b73596083abc2ed0fc0db1901dddfdc1774e4f8cd05a9e996230dcd74fb6e948103217d68592417b407e3a13edf8cb850fa7059820bdda5fc6b6801fa5eafe686aae86734cb2cf9d07afa9965ab0fd71e6bc67f7fcdcf7c9838ea05e10b78c10a7156d6b4b2d7c151ebc0a4948642339bf76645b2628c211c9c1586437d78641c1c3bd3275a30c6c8cc6dd9da337d6447224424f5e94c28df836ef420eb9f4718f1911ef511b567c55bbd2b6a4f2fe1bb331d4be8be05d3f0d7a02a874182581ab410cecc860d1b1142082184d647f896a51941de2da24319aa721fc91f49f8b0c6aa068d5f8327b6cc26859657d1c8ad783b53f39fa0ecc7adf02091e869dd993ab47f275e4b66eff688d49cbb30eb2773bfb09d1ddacf037f30cc52c223c4e4a1fd42b85cb26489103c3c54e5cf437b30fc19f5702d22eb92ca4379c06b69120d977f8821687f0e289239724c1db4075ff89935e911f9969c3e4de33f6f47fe583ff20145a64fdb903f6fa7eea03ee15aed81fce1012fd45617de1062882bb6c432b7320b2d9a65ce66be53157da79a7b43be2ffbf758dd81b3e1b76ce5c1bbe1bf6cad3e4aea92cb1fdfad3d45fcb2a40f91434a2339a6cca3ea0b69536ab526b9fc3cfad695b3e13f920d319de31cf355087fc85cd83af8dde9d336aaacd3e772114e11410755b5168750df67b7797444096750558ca81b80bbdab183aafabacffaf7ceaaa1aa185976f0c01d2b0900aa32620580aa2a567d60b76ccc569fdad3a316799a592a6dc6a37fa0aa2c739fd9ec331e1347b5da5a96a5aa5161b5087cfeda5369b88b7c17a91d81ba50370014678513afb4b508d3f08d5aed8942a83d100786c70b0f8a5aa1dc87981ea61eb4ae6a5fc88e063e11d0fa67692e0382aa627c1fd407d4a68f152680085d0abe00a80fbfd66703e01c54657d3613630686cccc0b6dc6ceccccfccccccccc8cb4e2cc0c9c8196b601b9312622ed513e2b1891d1b24c609031376a3c84536690d58a71076c045f676e2743859b117c21b4a242d5070ce0b75d42cb08be511b015726da39d7dd468cd009e5f5182a1dd139a224122dd159a2267ab22a4faa8a9dc50aeb25da39d7dd8d1db97a09f8e0126ea49d739dc56a8976ce7516ab25da39d759ac9608415a83300c1652a265c1410a11293e52e88d9a071983142952a4a45229999addcd4f35f82f2e67f4f0bf6dc4877f723ba691cb293d7ccce5981e7ebb9cd3c30fb91dd48ae5765ede4d3facbf5d577336fd1b5ff8eeedfcbbe9d495b6720a4a7d573e47237ad3db49a1de4ecdbb79793b389ad3c97136fdfdff766abc9b7e950f9942bfa2757db925b8f5df8bfe55ad88fafe290c7b156de37bb2395caadf6479bc547fc916c0a5fa497601239b53937d3fcefcfe1ad7671fd236a8757d68eb87ec06e486fe06e754d16ff02f5108521e3064815c68dda55647d3cd4dc15de1ba719b53b7b674da91f88e1e19f23ba276446a07132e03e00ea4ae6b3fa3e8244b5de7643be23e8d59723de281e1bd1bf7ccb4875f773615467eae5d7e20c71ef6b087cbe34108869e2855e69e94d241530feb3a67c3a37a71cff1856593aa68cd0f19d5d35ccd755ce385d9fec0b94fa63ee629ddce0c9dadd3b2ec65ce592935e1a821a7eea9b3711f0a3d6696d1deff70529c534e24aa75e47e8473dd676e9248a55255997af075ce26abb356d36884e24b48dde6733ca22a12c988592a31a34c279515aaaad051cda887ba421b902b8930b1484313d3f49cbd561f2e3877149f4c84ca2da8fcde45162bb401b9a5ac84954aa5d2254ba552a9c40f063e9929b85f10f7c9511a40ddf71ecaede5d3fea45c2538dd6167ee22f94efe704fae04a2e4c5ecddfe704f2e86394ff121de5195043ec3516bde51558d9c77f4002d703ad80335e7db1ae195e71dcf3c32e477905e07bb3d42fa0c479542094e39fdc1536e7c4855510549f094fbbe91509f4fb9d70f1ced0038f7391c188453419c725122269398c76bca4881f407cea51fa98a3eadf4198efac301cd77b7647fe0dc8e5435ff05f5e716b4a28870c9128bc28ef05d8cfe2f4209618450e3276454a244325fd6958457ab0bfa7befbda63e30aa729798118cb28f0f16e3c3988e7342d7bd47183d1363ba0f8d5cece8ed315213731673bc594fbf2084535a8631d2eb21b87d79c3173dfb4c42b7e0cdfcf54bd14ce774689b5e1e13f13071f284e4a5779f51cba3d189fee9f4f3455688e891f81d228d89f8992cf9d7fa24d2bb3592a885d79f53eb574287fd32495571be453fa3a7396715f4f4843ffe8c9fc59f9f45518c34468d338602e572bc3e3e262d19e5c7ef7aa507314346953252033c38a2aa2c13711366c204bb304d4af995aa023f4996a8c136819d7bfcde7bef3d78e3468b4b8b0b0b0abb329795959550144384215d60788c54553d60ad7434fe9116c0baf2692e935c2e2112a9643299e6e984442524e372fd635836b32c73b1f00585c29064d9a4734e1791a886b258cdd191e712332473d210a5d425b4c44432b3584d3a5de6a448422a444422178bcaebba9e1e81b1ee6c5c5cb42d052f2124a29677b1eeb64416d48acac954228daa284467865d5b8b93db6fd94d4589283305c2d74055c844331365b566a3998d3252566ad2a40917322c962c59427bd6c036fa2f1ec20636b0210b2cd61025ca935ca50b21cb1c15545091061f5c91896626ca6acd46331b65a4de6ab4f17ee324dad0863664efa4841fa01ea0340059315ed14140d1dd593f5870aebbfd0c518432d1cc4459add96866a38c54ca2e7777d84e404214b01d8a52a9db614701dba1804209a753b7c35651e976d84e40026c87c257a80a76b7c3760212603b14f14f493011691484d0fe40e9e0eeb64831d2cfba69682e11b3f9dc0ab584a23a4f177665a318a36559568c966559288c44a395cdab06cf119a34010b5254310517a26c35f1b3962b5a985f567a964d6a5d38270d5993c698cdcbc2b6dac98daa48295559482a66848abd48843d84cf4d54f83afad92352075fd6af658fc8c7a4e54198b6c91be30c42f52a38c5ef4f9e0055ca83f21adccfddaa4feda13c32a00e61d39a97ed2bcb26c5ae396928bb6a1d914434831042887d0621545d2f93f3b20c1d3a0cc36ed47ab3cb3a0f82366a110e2d7139115551a13ec7a18751ec2dcbb21ea32a4b8489a80aaba3e7386485b0d18854a22acb08f5b26f763314ea015cd3c81e1d9b78e274ac8f1f63fcaca1dc1ffb26e9483b1bf824aa0a59b7a3547b4cad021e912cabc5e5a5f6d41e252f30f149086d33aff8bda4aad7d0537003ad2f437567c230312821aeb48199bc30955b51c9bb4298cf855aefc0d1f007a108f508990533798530e816cce415c262118b635cd427b5a7f6d49eda537b6a11ae2173b7daf3d2b3f688a68f07d5e9e341d3c783e4f4f1a0e9e36c9c982efef97c3bf1646dff691b550b49297f7e7eda8607350d7fadf2a9deed6fe85aed24dcd06af2474a89f688fc8e3236f57e21aa825378c4dca7d51e3344eb7888d68535841ee46ef8e30d7924bd96e963519555a23cfa3661ea13ab5c1643a1a80ad27f2f7b4755f033f89ed566798285ba1225d8377661df5809b330877d0bf581691e056ca1bea4455a117acb0c187f96fda1360d5c6a7229d233e9df8f4bab4b91489c91b20b73ab21adb11165b14398f44949a73a5ab12e53c8ad16aaeab63c89afe0142914ae84047122a29e21438cf8ac7ca26d2d1a68d540d17694fef9912beb8a8db9a43cde2d22b22db0aa9d4c7034fcd44e246e0a611eb1d309277f9a2648fec9e55b34a57071b7e93302d47daf624750afa9ca9f50b81cf7525b05c3e51c315cfe2de66e73c53644cf3f7d38c7f4fcd308e7c0e79f4ad8868be3197263877c7e7985d3e9e79768783bf1f96514a7633dbf5483cb794ec79fdfefe06cd4e7774f8897df503ccef9b0d52f38a1baad3f70362f5eb8fccfc5b5626e2781069aea14ea91cb52b4ede19ca8591f4ba8cf5480f564d7a938e1f243282eff8cc2e5a753b8fc242b5cfe131597bf6e0188ad8681f2738df212ea31aa6a61b17d512dda06e496fe3d8b75ce06659bc98a93922fe92a9eac9e5cb6eec0ddf4a06d0542a80ae1f26315c9e597d589cbef950997df544596169968214128b69ad8aa7d44ab9e9e2794ac94583634605b2ea5e5270cc58993283f3fac0510d0142952b6789483822e73142b6ec264c58469942c2c2449a6d34865a58ae82c5978357ff18267c9f695810183aa4a96ef8a15b2b2a2f2232b6434527918aa5251c192ac56a7d3bf50d5e974c17802c6caf4e3c2ea52fd5504c303b3484f4682417dd40b61cc4c1cf5122225ec16188aa1aaccbe5bb2ef665c24724fecf8190c55611836636466657d1623966cbc7f83638d2c7677ebb731182d2b7421086e63d1a560b4e2c39be1f820314703a50f21074484b233cbc29b72179346099a950c196e3d86e960673d5684f56d596f41cb7a19d487a57112325632ba219c417db4c64266ac6660ad357c5754437db4f6b6a859c51a9b991a416cd387c80581c724f5450e2207dab8e151baa5619b6a1bc367208c18a75b19cb9a6e5fc8e956bbec35dd7e864db72e2eecc09c6e63289d6e61422fa2d074eb52a7db96d168ba652191a65b54a934ddae984cd3adcae934dd9e5454a65bd3caca745b42a1a65b120bcb743b6a69996eab8bcb742b7a79996e43312e6060a65b2a2d13fe59b4cf32c1edb6625ff84f053131d3ed74e162bacdfea75bccdae9f6d2b4e956be7831dd5a574666da7861c0986ee1cccc8c417db8ed5475c6f82eb4b6d7a5f66efca5dd52d741e677e3afc5e7a5367137aba4f83d6efbacb371acbb2586f54a24c3ddba637774518877f8c577f346d3d1eefa82aee3e77a0cee1edf7b2fca08e5287a955deaee767f1731c6b8d9db324a8eefbd17657cef3d18a50a171a763682513aadb9417a3ad23a1bda6db79a12e4697af546d6fd2e62d3cfbadb3d67436bd4a850f7a49bda4d9246af341d8dda26811bdfbbbbdb0878bfcae7f805eba1be2ecd6601730e643dd4f78ff5e05c944c75c28e417d7e92ad2279c51be532d2c51853734ebf1a9cf2f6c68150bbd134dd1a8c30c69ae8f8b98639795b91ce5008a2442c2cce326a697908bb0596321708217479ef1a08a38c11465639adac10e03d61f11c6f14ef784bfcaec960ac185b8555ba4f2beeeedd9353ee99507f1d6a360c1a06959f6b17777796da937938e5bea6766b5544847b72617c12959a4e4696167f990c2363bcddadc856992697e92f0de31df31c2cbdcc1612faecddf67477774b0774e367124a18374208a37b9d313f0c930f1dece7e1360d341f46bbe15c8710c35145d93f91b6c9ad52ad3a1affee90ddbc5bc65fe68b3eb3a2ef17d4f7ac05a7b267204e6554db8044e15229c5859fb18c31c618bbbba58c0e7f3829ae73144e6556702afb1e525ff638aa7fe83749b324a412377baa6df53a17b9990d16f224aaf2283793a9140ece8d1b399e9127244af68e73a4cccd9ee350b3972d2596b9f4cfdc2bf6e4fa4759519f62e2fd02c79e44378249c5c47031f330ac8cf6e285266361fc8c8b1855e4625230342f325c6648aba586c5064563e54605e7e483e9871210a41aa3206a8ec8c60cddc04171ccfadc9c3ad90ec673092187b072441df0fa8e06c07cee3c42318ec9854fca5a51a8bf9d4ae1e0dcb8c12447acb9aedba1672ee6db17549d48d4f75273ec3d2017b8771d5f99368908a9efdd3ed7519bced9b8acae220bbe988e732e67e3be59a0c9340c863203e3db264e8cd92d6837379ce86cfc85b7cb4cc7396f9d4d4328638c5146d9118637c39914a73c7a7b777c2e63783f6f7798c9cc5e417d1fff39f273a8a691feaf79e64168b3971aa43e97e2e7facd5c3124cd4c59998ca9fd40dd7e7f1aaaeae737d48ebc87fabee1f49a96d2aa4dc3a9d7f1f5d3ae86b301b9deee1d6366588c18978c09415e72079ff782f08fbfed6f06e71c9e30862ce6e083355c71f9dbfe8db447a4c2066cb8620e3e58c3cf65b7db63d2232601075740c365243090021aa20ca690821401442a6cc0869f4b878cc40283fd86aa2ad76d239348a2e44b4c7d3b7c4daf065fd4b3b9fc72002e864bfdf5202e7fd3b8fc314e67e6e5edc8bc9b01f010c139cea59eb6b1dc773105172e62a410130323050ccc8b63f2f2e292c3c5a56588961616215858503c28d4caceca8a8a8e8aca09c7e964ba6132956c944aa41c126914c468546bd42a0242240afd100a511f289d387366375986d1c0b0cbe6ba648d94d60ccb8a32628434175e78d953d763389dfe9f713aec6cfaf9f2cb381df792535bd438071744c1e2622ec8361cf0b71f72d0a031e3468c18323e5c276164b860798162196da44d44cadc8a9c03ac025cc358332e7ffc01c7e577806b7280b6b1057137c9e45a0f653f20f2ba1832f76efc37d155b9ee74f9372c13b9143b9bb9b95c7e2a726d6bf9c00cb18020a3a8106073c5882b531181c44e23b02e1309a22c95005a2413781cdd13a8220a985fe4fc2115487a84733a2ffe743af0f9652ce2af7b0104be8b07991026dc23217730c1ef2e1f819a6c1a117fa855406f6b6efabb2eb908a420d735b6e04b67237ba86dd6b3f5cf9ad635cd0dbfd6b365b1f5cffaf8f77a7e0bc3306dbbfaba3ece0b2deb253f163c8bfbf1e3deec110ce4e2fec2f59b7ceb5dca2bad5b847ce9524aebf97bda8fd47d4022bf3b2ca0e649f8608c5183fe2edc72d6a5f5efa3061db4b4e85c739f3779efac4b89b2dbcbd5c1a629816bfdb3dbdf175fd4e2bb7c470b208d8037c6a8c997067af2b9fc2bddfd2f09a5fca86dd775cfddfdb9c7e7fedcfdfda8e15538f932e91ab3e65a3f2b8870d4de24bfd336f7f133e75c84ae6dd5397e4e804471fb9ddd5c93ebac6859daf62ca9b94dbbceb2dcdbec8d43e58731c63819c6687b683fbc07191137aefb0cdaad5ef8f2a5b371fdab22cc360d7c59254abed436c86f836f69ce23e4e7de8f1bf7750edc73ce39e7dc7bcebdf79c7bef39f79c7bcf7a672de7729c76dd73b4007d8b70ce5a23f80dd569cfd9b9340288f57805aebb5d8c4a50826b71043aa2734449245aa2b3444d4e38e144142aae50039ce6a854cb1d4735ecd00c00000000c316000018100c874482d1344e24b1f514801162885068683a144562490cc32888821808214601028001061985904256e200a5f261a50a812a057998f14827a337c06b870c0744871e8582b2aeca4b5d64c78738aaedce2e9a7fae5cc50124d24bd05b28cbc94ce9505e4bf53efa1daa49d7512df9230c3c4b83cf373a1ff509f155d653e96eb82bdcf62244317ac16bf406a00e4ca3a3c4b6cf5d70311db793f47c9e07ad911cdb4d82a47d364b62eaebb6c76b8fd48962f11092092b6ac779640cdd71018f319927793815a41b2ec816102e601652980a00053566720a084f2dd677542d6f5465fc8a7e6654d8cdabababed6cfb38e59ad9c4dcc6ace6a3069689a6598612d5455d77bd382721cae84a85527b36f29c1de687178055ed14bc82f75ed89c42153f4c4ece1a79c8d5c999e71cd8c1c8352408e2d6f5d150f9b339d13e63ff02bace7df6c0b531f673d8f7829dded2d955a48544cc16a0ece25bb570281d3778312fb2ead47b52db6f5409cab4b7115ffecbde1bec39e401808124ac0a2540d91f3a8aa45d09ea205db2cbd69af162da4335e033fadf271cc43ddcb720700abbfa073f324592b04ed61c19eb036375579175f21fed87dba48a358aa816ff98f2516a4a007f262c0d5b18500e3c1c2635af2b89a22514d2975d6c6bc41b37452aac0e9c66487aa8ad909704ba834ae3e572bb626e65cb26267f65e3606713359844e6ce062ed0033329c214a2225e6c9bc8af99a0a131a7e35b1212e3ac919820c69b14c79150b754d1729f916a103b5e4a9995fd6005182b50c200876c2ef20d3e7eabd11cc9182e66815b9247f05eb62c10cd964bb847ca33058eb103fea922a5f62886b18da429b238b55350388414853774a31ca2613e6cbc3fb5f331607a0d6683739259af477285eac5d19fcf30873759f6e37bfd361f062b25d4e855c7b16b4fb2fafd9079266adca2e703338568beba7960246c6e98ab6172f9322346a15460e74a3e3951d13a7c2bfbe27cdc9f3cfada7b48842dd8f15535995a084e876db443dfc1aaceb870490a736a61392466354b822fdd46376b41e9e2ffd20f8d9d47bddf68acadeaa07c9ca2ca8f9ccf2b261a60c6efe34c81940be1c0d2858538b56a55071770e6ef84f8fd15e03b8d481f9d6dbc95094c117bbc3d1ee48d9ef96e44e9566086ca6b88c71398c11c1b820d3711d44ddde486b61f656241617e819173eff8fe109c2367ee62191dbed77beaf04652de8aaab243383eec7bf3225df2dc35b551b5a48013ba901fe47c3b84f673afb1430b910c508f999050f4124c6d2b4bb50007cad3e9dc0d62f77900d1f282c086a60ed4f8f9de5a65f361b9e67303934102f441a191a51884e3fb03d14e790dfd6b9a7ae184c53962b4f279012e100ec7cefb3ea279d52733431fda256ec6247f76abce1ebc078aa16acb33e3dbcf83a45dd0eb19c71854239b9f61bd89ebf26b9971af48ec5580aa214ca067bec2430f4b1e57945a91f82b0f3d96bcaba5298689f54ebe67ae719f82970e4015133bbd92266c6d73e09f0d8f3e37edc9c802026725fb7a5e8c2dfa9367b6c18f9bb27ba2e6745c87e576bed72264201fa749684bfa6a8814079ab8d7142d24533ab61abeca410f4bcda710b371e83623949a73cc4ecbe4aa8cc1110b781cf3c03daa554c95fdfdb794794563aaaf0893751221d341e0d7e5c980703635c09b87bf53c06e1dac5441140a2eb1119a1f24113e9d1b517c0cc722271d6b3a476b62a27a7f5f664927cbe1111caf2c500922abd2f74157c8e704396c360167ffb3fd79b9fc4dd60ca36698da4d248f6fb2033ff5d6d47c3510f62584d35bdec9a8ebe3ca53784f9b02257bce89a3696ca2d0a2edbb7e3cd6a001bb0c928755a80275809c04ea6706a1c306722b40d2a140dc0f2e9830c44f1f3d04b14c13cf16e590583313841b5af08e21e48dbaae1399335e6e2f73e775099b12630733efba05e524dcfbd01567ae0aa8f959309b7d17108ba58b37fc630245723ddced720b323185a46b87d2a2191ba78ce2c9629a2eba5e2556f5219063d7e5de787db445417180fcec4cc403f3cd59af15fccba8311dd2b6476232a96c1f1a6f6440a6fe89d264ff5ee9f5156df689bdbf7610a644de7c131f01c5e36b1016833ae39917c38a261c6b9b5e993f6032f532cb260b560f907c5c7ae6a00f02a5286ffdebc6801cbcd6ee974ada0bbc681ec38ee9bc8c73f60ae782f384ad4b6e37088946b003ed33cbadef2b5a80fa80d75e4b2c41f0535a56fa40dd1453e39127a513ad355789f6cb4cafdb4bfb13f07a7914b287a8cb9463851e8518787d95dd4b56fa36e3333fd170f3fde763447fda3f38579604d7581462096252e256b838e19b20e2626569138781d8b0470e05e2f14fc413fe400c128ae0125279cbfbf776f7da2e13994384b1718894da53a51625cc8176a0beec414e48ff36167a6f50e46219e4108856e83dc13c35a40812472cc7d543f227d5264aa058c2bd9d01070417a8f75b5b505a60c60668d94357a7d15dd6f47cdab9709ebaf8bfcd262b29de0b5028b08e1adc1eb789992a34fc5b23e5978c2181cf1d8d18dc562cb08686be0050b15acc5493c61c7ba24772ff0723b94fc09a63052c2be3cac3ef684586a6571a9ba21c9e76824d35e3692177c46d7936631581ed28c3e9c9c89967d7e52c26f66d1576927a5bc84b38b6bc1b3d590b05f9e2bafd4e94394b1bd9dbdbbbb355732a120ffb26c0a81f931a98ec150590853cd462fc475b8e467626f7385e0992325b50ca0796eb69a5e0c8c2d9a77c4ef72d266c3a9bda92b0e2ed7f454fb2d98392e03eb9b6f73c1a57e3fac0a8f460644d59da88d142fd8c76460691a2e40019c6acd01a25e92789a03bf0d1400d48a80334e5bfa710a1fe9f571d4300af7d30488f77b0ff12fb8626cfe7a1c1abccd9c493152e63aefe1bce5f03459dff26ef779c3a495820a33d75c38a9abfc3168c65888f606950753bf293d83057aedce5b648553a91aec4530d5875cd9eabba638df47f510f7c0cc441897cec03caa2f906d22692543d7d2cf113ec5c1f717e6e280432b6758c1012365d59b53bc1458574641172ed44cb47db6b26644b1e5bb40658a78fe2a54df1d347b1a50fb12c6d13378e75ba215eda2816a7e92c8db1ae698049aca9d083701db3e69ebd3ba2c354b45e7a0776d3a7586943bc4dbb9d6e842524cf6c4e39eaf5d066101356d3a7d8e9a758d386586943bc6943bcf421def443bcb421deb42156da106fa5df028fdeb82e14c692fb6979e622852b331876910bc712a0bf676037210ad790e6277f654358fcffa88ea105506d7c5a2d6d8a9d3ec492768a9d3ec59b36c44a1fe24d1b62a51de2adb42b4803da7de010b7d4d1584e45fdc91ffb5000a9f220c882e54c391314658d82cac517149a973e11865c9f7acd35d6a61cefc3b9fa1df2e557db084846339830acfd1466bd94452d03b66d5334320e17585b422c9d8665e988a994c9d4f42fdeea263b63eb559fc5019f52df8521eb2849e99aef07280c50d442feaa60994b0716adc067abab64343e3f1ef53aae9a40d3416888db47352363a5204491b3be810c9f3d413ddd171c076caf1d302ec1b8e790c1b98d2720d6855da01b5f3491dac79880d458cba5b9185b121890010c4596ee063b091c235c62ded32f040cc26faddf13961048cd1ecd879ee0e1a009aad0f20c6be0e426727d17b903ec036417681adf2135343fe37399c61d481cd57d3c004402d7a7c4f3b7300edb339d358a99cfa639e810eec469d589c929ded93465087566acd20d2fffbe60101eafc934481ce7b0e9faf952a45a8b5630bde83a1fe10d00b74cd9f53ec2efc984d8c6830b96cc3aded21890c95e4990b550164188c256458861426709d3d33ba030341d0be497727f9c2503bd1408062fbaab0a73c7aca714a970ca2a0c1bd4cc12021611b800b53b8582ee586b8b814a12e584a9ede2b80e0c87c26276101c7c9c571be3a748c9ea58623de8c87830299848daaffe61e8aeffcbaaa4e9299541bb90695ff8bf7487b336f927ba360021f9370aecbf49bcc6ba5e68d80bf97108a7024a5b477b57ddd42a9f1c77827692e521d0e35a97d73d3af4a2cee1cc654d5240309ed4c91214bb007478ff64002783d730cead2d1af9dc9f544df17006c5084ad495bd0a29544d9753baef3160f30f221740b6ce14392872f4d5e09ba1df8c2d7ee330407311c194b8f8184ea3a5cd254feed9cac5180f8b8a73fa29ec0cf47413f2acd4d3849acf9d8191668a25942871b75ae0baaf4b7aef94383442ef60dffeffb9ad00c33889d8c118eb83db959823181a9f7b09fd413496e9f4d4c4a8175d46d9b3b480d4519ee4311707a70c0a6f7de16092fac8c3db2870d287bf0cee029e04317d1aff18ebc13fdc2787b31bdc81ed0b554bf86279ddce386fd9fbbaece40e25a36e988e078fb5dcf83ad2c02a14458ea105109ac47706d5d75628da0fc419fa5a0527541c66515706edcb66988075dc20195969b6d2c9c0428e48c5bab4f1591bd79557618ae8d7983f9b4c17d41602817edba9d7a4231e132668190963e5ee9ec43de007b178e065f0dc8ba4330cf74866e888862209cfcac81ea44b27d688f79e8dd97114191e91e6101a5f885cfadc5ccbc86e567f0554be603eb9ff028b05448712ed6a0a304ed014534373da87b3988410dd59e4fc8f0a26862543effd4e2727ba136c0894d98c9539eb8d0d794dee8089d4e5398ca13207b9f0f7573e79384296f981738868ee4367823a1d2cd7638bf0fec6b62a720a51a734b82412c842b5f3730dc17468da7e4793f8024941e12629d6ece536e8dce43ffb5c900f28a23e67da910a72ff8a0a10910e7f703e09d1a4a62922f4e9870755ce1c94cb2ce32eea1f3eb2298d01684589fd6adec25f1fa5cee3b99056c828addba837055561a9959fb2d824e324126f1f22159e0794fb46ad541195844b8188de43ca3da756ae884ac2a44865ef0061be132b55446565522492779072cfa9290b2692722190d27b0cde83e14cdc53bdb4d1976310c2aff2d9603600be9f22215310e2dc935b2243b45a5aee8d94d9b81523e6b87083c8de50aa8e093985a86d46c6606a6cc08e0fb65dd83e49ba8999697e12d125bc7aeb34759244e80ddeb687b2455a627bf0216197818630918c08b7d2b613eac0ed653eb3131e016a9c9695a0e8899368f222b72aafb14f73702e2f1326f7baf71e87e763571768a41ca6801562137267cd6c09ebfa46ad0d8c56a797a273161e2a8f02f9b9ee8e68e29a1cf7445f5c0491f56828307e37cba463859c58ec164af1b345efeee0cc9f7a2897ad9d4240e94793f1e0c41dd1fa0ca85b91455f1983b16dde5419e33c044fef2b01137605ac51de14a2bd65e88d7a1d2eaf7fd555fc13ceed13aa1e1003a97926860a0bd947db7eea10d28be5073a0c5630820e780fd04550fb3d08d5dca65356ed04cae157285f5a7f646dd5f1a007a0d9f73742597a189d716750cba203d059f706b51c0d049d716f51cbd04106ec36630578a6887b24bffe50c56c0877867195c98322d66583f52f1d5d14682fd02066511f290a3014c8d9fb517c766841ed9685df079d7013bd8d45dabd8fa88b8a6942d37d82780a9dcf18f70941f6d8c312eaecfeb4ebdb604c626ae1d136362e4fac9b5ff9c93a7d095dfda6438db5d65e57b3c430baa45292f5889e2cd5d321a6485bdb6cd9d0a4a124e18e04f730a10da746dc9cd45ce3082e260f0c0cd31201654da044b67e1d6e7f85a39d7164ab3f99f7418770a8a3684f2fa54dd4376e96683fc9f5911c6133ad052d738e59ea4129fe3056108280ac9df6a620138e4c79a28e49ff2b8c5af274a3b2b8f3140e69a64bdcd20d858a794e1e36b8ffb19652897cd8bcb23b91e5328e1de119b9e37063cfbe9e73dd8de16750774ceac9bf2e8449501fc95b205e92093b976ed92c3016efc61e0b88e60933d255f3cb885e43a82724c7c277bdc720aae386f88541e73090ce40d761b57ae40d169e9e294df41072a0bd035a7900c0f53f462e2f62c1249dbd0124dea5930ae4f4b04080c5dc4896b954a2ebb26a048155d5dad8b1f017ffb88e8761e1d8f4e04e5f373d62e82947c959e591053d98eb1a8ea865f0dd80405a066bc2bae8370896b3221c38e0e8eadfb84c4d062fed229d5e69c2bba0dfa546eee1e515af046301f57698989431723be4771323fbf5100da33b844b3a051f6e7748b7aeadafba04dd0b48871abc40c540906d8555ebf625084b6c58667d1ebb54fff334e776187b8f4862a772993ed35bb8ad078d9e7a10a5c716e8e483a0acff53c3d8ba1159f4e15a363f313da4961d3a09f29065955fb25fcbc638ffceada98ac51b7f59d4e83777c8d05c0848499fe6b2810a1194e2a7b31a0442e2780e52354c56e4cfa60cbbb8fc2122986f2d1e4b55ff8f6e04310af7dccfd6eef64d1512408a6310b54bee0172d0b4352b0bc78a72820b2b7381211de773061528dc20e0a832da867d68e00c11cc4d7583ef8d885e7698ef9d8adbea1cedd0be09af65e941d680b295461665775a91a57d348ee82529f39e4ac281b7931c1c6c8f88a9726ec4ba5c6491db06f1ed889670b300a44dced77976af81dc45879c8243a8c877b083d830c6dcd3b1f0032c0be43f688b222617c98d7f9010e2fd65d37a06388820de9556dd298fd45c23424c263459d7082ba68dc4bb46d6d0d4c4a2c3d49c0d0e016f6f374445eda0dd6240f537220a9f0100258134b218e9985c12789976c6279b4b64c38c2ad2d4c992630a73cfe4d755c93b5b698e390958d882094f532d0363be50591421b2475524407e19d7e42461c3db13ac5d6b3a511d4b09c78c94e1ee565330ef257084151b430f5fa95f2e7c3f9eff202c3d4a42222e328054081d59d93965ab93ef71ca2d521b6214e49721410ebd505098deb9998140c2c55756b030853365bce9678517f366194875b30d31aafd816f0bc1a52ba2dc01863ffabcde6692545e90d00c9382c0ba0e7278924a1b7b5d56b21818248aa8d69952666be17dec0e124592d0809dbff7532254617a9fa5fc8bee992d3046faec681789b5fb5909e25f697c896f5b23b26b3d997bea88c02a4159813669cd117769439b739098b99908ce2387c24e6811fdea5059cd0140b060bc812e2a723680dd2f31b4bf33ab14e945ca91e6488a078e8f0900cd9f8843986d0c51e5cebccaf4d4dc89e4b26f21180c84bb4eefa22109a5f16164ffe10e8a9b662564b0a0ec08d326b41cabe21e93ecb8389c9f55ba7aecf5d6ac7e0a29f99f2faf56914f21840f9f13a9a554c8f5b1d6cb0af42ed80f514f5363e7b667dbab3fea35b5f76cf526b0345cbfe7e609a96ad863415e719132551053e89dc4d5295222ee8656f95e159cc0e5ed5f6d4fcee7e04bf5f1e00dfd8e948c15ab3712200472cf89ddad2e5adb5ccd1e37f3246a25119b95fb7f068845d9651c868b586981c743673a1f6fe7efecc962f1d874f7dcc7bc0fbce6ca5d5cacffdefebd0a64928a15b8276749dc96ee311837537656534b86003b95ac840281c71f227e8b20629b3d4394db9053bfafd13eed4a6d13030e98b648ba9912b08a11a2f23daa44b1f7095cbbd2381a12010a2c0b9f542cc9b764907f081a15a8206b3043d5df25c413030514f7554d72b0eb0952561d9f3cb77f9dfccde83fc749fcbe8ffcb24f6ef58b94ac472538af6159b575be74e6ec2eb4e13f964fe2350fde47b2605dbaecb0b8d92423dab11de5938cf9a7ef752a0160d37d728ef7530208f3beae221f56467efbea6426a1fcf36e5621cd2192ac163f491f291cbe6aa47eb2882b48d20a6427fef642920d5b81d82aedc4534a57a72dee739d5c5adaa7deebd897110d552e56e9f38119d7a16a7d08f17d5ea1aa4e3e0c217d5fc070091c1acd827e0cf562bcde50df297dd3578ad2825b75db3e03933605deb767ff06bd369e1e760a7d7d00565492bb9b94547db79ef556df6c6794329253e71771036dcc4b72ea88abd8fa59d3cb5a6f047a8d6e668793d84ef401f45ead70786970c5a41554aef4181368626b822d37afd419ae634a44b2fef40caa2ab9879ad4390e135cc91a4452b39180bba4ad6726d6ec4da2d1eb5ba68bde702a8e8faa15d860dca9bd8c6f8c223d0891d7966dfd1852fa3d4d28ad269f42493f3e66ade3ae0cf3ded6379b8bc595de353236e909fd18e9c548bd3424f159b48a76642b96421d3c5a5e85fd6348ed3e2450e57076d3744f14442eae22e3eea1683192dacbb3121085c8ee0132faef4a5f60c567b5c7bf5dd6d02b2c9b19b318477973a27d2b61918c2a79eb2ccf32bb31585aa5ae3a9050e1e674b4b5dd6fda225686905e4f0a1da4aa48e9a2bc1c8faa3cfa88804549fe82daa291d95f97e1485871e566443eddd80a0a4b5eecf5b8ea38ad7fffb1028b068f8f5ad8bc7fa5c62fd5413cfff425e60720df9020e5f2582479ffe0365da4499d66eac1948942e7477fffc5141d51ac92852be828edaf4cd916806f864f9052f8e63a0a3fa214b8a8f80cdcfe8ac7587c73c199f1af9241763252a1f357aab275f2d8a7df751142cf047cd8c784d5e5b5857c4ab450ba9caf56163326368de14a58aa8be8f3203e0a38476319fb377780552e5bb61568f4229d2810063e0b0987aca716a1db5a9c5c7166585bacb52e4a054bb11afedf695065a772349679e776688969e3583eb724c562f7e4d503465db944cf4ef0a985ffddf594e915cc685a88033e7875ad209f2ca96a7c2a8b0a994f71670b0093580a70bc61315943e2997fb77b68aaa35c81bff88ea51fb36f01934c0a8d59e96889f4af43325d9d081c3219d533fd30a1b36d8b113fde3f027bc5b5ba7b63192b1d136985a283183a2bc8db10ed3de402518e2b7f2392a40ee570aeacfc32a15052738af6d41741c98180f46bd2f4e13a8f1d5cbfd1fd30cff1435cdbaa773041f788e26d1523b0a67711ddd32b54d0c5ad7717af35eb3dbdc5d438da9c750511a5b913ddfba12ce996af0d09f4cd68392f5b9b910984d84de1d92ccf2bf5367557bf1020a86576f6d89f0fc290e9149d9b3bced9fe99a7c37ab9254ee55fdae0a2d9fb60253f637b02d2cc6a97a5768c9bcb30536ee83da28b66464ddeaf714565682dc9bc3a09947c32552399b74e02953c270e5a7265f29df694f620bee7f68e8791b1a39a51924cf058109c3fc6da2b9798bd05604d5cbb9ad754791704e08e3050de41c67d5ff167103edf259ad59cbcab91e28bbc52b35cc77041e6c6781d007738b52c2c53d4261d00a56133156c86a2ef3620184c3bf1fb2af4083c85d9582842608f17d31be163a10ef5ed247d054cd097b02b284d8868be93dcb755e26c36154e89913df1733dd0a21414c2bf58a4e9a9d5ec53c02493a8c14f2840a8b2142f4c3ebb4d5834f70df131a5b70598dfb4fd44bd99463b6e43c02d1e2d94d91127a37f6bc7a003ec7270e40a736739ca9a1efe98d2784696475488039adbf0bcdb50d93cc26f20bef6d07beefe17cb5f17b020055911ba4d3efa51d1daa0b2f944930984b2b8a0bdb9b2f82fb87e5db0ad029e52c9ae867f9dda9323e8589be4ace8385a376cedd0408dccdc8c498c04c67e19e35bdb5a3867119f75405be8ce6007c40fad61ed1de87c112a1109f6aa9104d1062d03b9cca05db67a1e960a50bcdf858c2a51e9b1435285348d976c64ac319a60431769571bc7c80f08255918b0f8bda1381a6f1f57d641e31c7bcaff8d486cbdb6900287cb3adf8ba3ba1d9a73bc19299201bc04c51869571dfa1b3d925011cfd0780aa9d2f741d84a91489a8ed07f24734730d322c6f062c139c27127e87753784a8bea4600608d5fd115495f9edf941ef86fbe4bec2e61e55584834af74f7ebbbaa31ce7e2113e82e3f6244a30c41eb4dd5bae05a3e5867aa2fa8c3d09fb04db37a59d700d3713941285eb55d283249cc9ed1658d2d3dc71e54ac635ebfa9dcd1d847ad2682730ffed7cc03242f0a9b3e0e8d6ab5753deda14b048b6204dadda8c53f1e64ea8f7614b420ec9de01875216c090b339e0b80839dd5a757580b7c09a2bbf5a823e2961a4256743dc935a634fd0fbb0f1474d9e485ae689c9ea651408d2a1c3e495bed4036f324187f86c3dd68951b8d118a11e79e3c94727465fbdc4c23001dd822138423cf0f4d701bd433913d2825ed2b0e67c92df03c064c993669cd4b93925b09649b202a4329e0a79f06fba34a25c7641ed4daa40226905972b4e674c436700bfe96bb69f29be45362d4107bfb79ce6f526dadad3e3001e5c13ffde5a7280cd2a4315216f661e50b1d954cfb3c988ff9f0e771dedfef6e41918c1ded22de6b201c4e22394cb56e12dcbdd796c577e8b84c1145cd7077607e341d8859c57504ccae417b6c8fdbaf7497f32f11c575700f6cf5b9f294087b0713a23bacd9bd085c97f21781a124cea7f05e4453ac3af1231bbd5b91a94cd412977ae8411296ad873edc194bd40fb3ce2bb1dd70e01673410a16b894d305d666d33cb3a2c2c44d1cde47bfabc1d7edc49a722f9be18a47be90d4e08a8b3910b70274b4da9cf8f61dd7ca3b02ada90826c0b097b0e0f5ae209dc99258046caf016a9c3f112a549571cc97ed351b3f62a8aa90653b49a0b58f507090e15871c22f4c5b8406e24154926486a9b58bd4dadb1b245587d15c5522ff1bfdef720d16d1863bd7c7f6bb296756fc2cfdfff8ea20a3d2ca2682c095ad6376f6151f3628dd4c021ff11ec0273f6f9d32bdfe2704002e21ad62b1fea9f8f8e8995cf17913a4396310b28bb0dcbab8ece5a123d28a7e5a1ebfc710b201dfb2fa83a68558f8a01aed0164529420fe5ffca519215fa7b05cdba20508d29ff972933aefcafdcc9a2c1fc166b60661e539d67459ecc050f7094932d662e63aa1917c5a072166a26667433085d1d7fbec658c94e77986f970d22f6070c185ad9a14ceac40883e4253049367c2fee3b077dff2bc9fc402ea77b7885297bd260d0a7057831d06439604ef614cfb3ec5f1e60d1721584fa2cdfb28aba9b8dde21fad8d79a500fc8e4cb670fa60438f29933f0e77fd9d8abbe60ac41b6f6e0cca37687e12773286ca19895a1e650332ce1c3db239519b848309f20fe0ec587455a2e9f5dd6ba2ad7f8883ee34aa6edfa37b06a8057630c6ebf36418bbeb018f313e235dab21e312228156ae219eafb8c02d46ef5db245e77cb3d9b050856eb9b251a7264f5a18c57ef87a16c615a395da9ebd51f73ca98964af11307e86f055e92f011585cafdec350f3fa0fa6dbd63dd3da26ff7a7b5ccac02061cb008c5c22c8abdf1f5b97b998d2f5ea5372678fd8f3aa97081ce3a2bcca37132a665a4e83b479b3cf199ec847310598efc37227a93bc3014c0098d3229543cbe8a233ebe7343a13eaf4f008b7009a35331d454891f392ef3a3380ba8d887b1a88e115b7da1b10c1ee3866db05f9d8b9f2fbd48061d33873e1cbb24dbf2cda064916e93b4eb7d95f9c841ceccf1b248fa3ad581d685a2d9d531d746072da96c536e3f483a4cf299c1226a2624d7fa9b15ed71b79f7845f757c2aae0bef1628c546bed99c6d90119dbc2c6d175acae454ab8f7cc6c526df3e4c923de62ea6d03cca89a83b5c4c3db6209843dd97a7ee9fd08511ac9601cccee41a155ed4a39c577a09da4a5d5f0ff2541bd94e850619509bf644ebff1f387dc79f063b4260539b466d45e1075a7f9a0b589e5eee8ada84a0c0d073ca7805ccecc8a293e6208ff28579466df646154c97ad89be9fa3dc6871d23784c39ac2a7d9dee0a0063ab5795c7b598e418ed0b6a633fee39d48d9bf9c5f4d0678cb91295b8104911561d995327614e8fd4dfa10942c5a641c463cad48240dd0f8f818131d92379400f3c2c47f3ec608c2d9951a9576d062887543cad8828a53af98dab6e09b1762a0a57cc35200f2cc36d026410aee09ef6c9808fca378826bebb3d2594d67222d51ce86d2c05ca20437aa3c01947db5ac66586c5238a67f67fff9493d6aa47bc6ab4d1007a4e9a249f03b259eda87ddf9381a85596b33a4e5967b0218a13fda367140ace13bfffc3256e340203d359f155eeb28f4e7ec33627b9faa707da7c90ae5b8ae3660b8188610c3d9482c72a0433035a7aef3f8dedbac420ac053586d2337728f48b3989ef0cb7c9393a63b12bddb4847320be73e04feff5d6fa6bf1efcc141b5282d6abd8f67ad04923df700dd862629b66d482e22c688ab91c5de3fac5448b4018609010c8e91b47c9fb416da5012483524323a3ce4f0547a27c8f774c24f4ce654f24eadf45027e6737ac24e24736af24e557ad1279ea78355583e30c11890ad111c6d543f4d74d2956cc31ad174338ef325074fa57f623ea724fca44996b54ea4de66b05313357783095b7f7e5470a02ac144aba29b379ff4ba73c212c4e14d9512456d6f02e3035206a2fcdc9bfe672fc857eeb5a8f76dfabc7ceb285bd76e735449590cb4de162a58e6fd3ca0d6299e6691e435599b04426145f98bc40c98c138aa234114e6c973cdd762e656fb1eb2a4a5827221f99b15e96e661f8921aabb19ca34957643b0ca7c90b006d5da3c72a466649509a30127b914dd9a926e795248a37873fb01e0107dde2c8d5a5ec1027d006abc42e3c904677c77b56609effab27469e8bc323827db1e839133f0620e043dc3f1701b718ebf8188328a130dc599f1e6cb6c758bd4fea0fa4305fa5c6e30fc5869ff8dc8196fc9ac607e8fdb1a725b164979ffd6496d5cd9c778fc9c5b703bd7d43972c22a293457d3468d8f5dde6876a1a69b03d487930b5e3997ecd3952447f1eac0957de898a67a38ade9760ac43fcab804ad0eb4f1b85c116dc264e1b6790cf197509d7a5f331c53f0f4b928166deaef8115cb3db319d0b19a91b3fa6ffeba86818d0e8ce05ba7098daa6434205d6ffd9c8167edf16487d5e1f7a465d80abc0cf0952056f8eafd5978ed73e94e7382080e476e027ce5755289f50ce00b7389be4d5e15df7a4c17d281069bb7390724ddc6e15a36160c6defd62f3407fe6112fe50db12c7300f0c04f415659d25fb9f5264f3de40973186069450e6cb3645462a9358b3287aeceff5fc3ff711691bf0dd2a7e10e8d9300b140f81289669ae2e4f5706f3b9ba5058ca258c26ad20be4f2351d5f65b1e8231baf0283109e21b9821e8e4d85cf4adf301f145e96802247e25ae8f621d6e02e2bb6e2205aab40a8840cc86353b8341eac437577c79b6671d4ae820202b1aa9b8c6541ce8d49b6fd2fb2d7f4874a0f2ab36306a9ae7f5a141c0b09d33b21a44e39b9abccac751f8bcfe38550b34c17e4936c7e1bc466e34a13875221959e56ba95885726ca74e369a40d69aec152c0212a6bfc6b741e68c0b2086420d208836fa0006bfcd34bebfe5c011c121bed15a1bb5168029fdfeb3436b4700523114d5fd905d77502ba4a6e435b9fad3f8ce116d190d5f74620cb9526b0658d6dd8bff619036c8906d8579340a564d6e999244615f3fcdcf80af8e208d6f9fadde8b65214a1fd748ddbc34470a31259d39fd4335be2ba621035f15f7bf27e20bb4a7a09c903dcd4c040b32fe9f35e87e83e53b03dc04887243e96c86ee90f528e5dbfcc7db567335e5dbb4c9aff9b91d49ca9ff0cdf321aae839b2366391b83c1bc476948c7f5356c5d29c35de56842519a850fc9e07ce2b038867fbed0e65b18fd81825ea1eb6a7fcb3508fdbe419b0616e670ee1e72c1de83f84eec846d1ea51c18d3fd2f01e0d596d408f0de92ea3d7d50467487c460b28c3960f376a6d21d5b31da34bc4045c51ceaa67133176483b901925bf5297bd8c6950a8c3feeb930b2941f68eaeadfead689510ab1724c50066d2c06b8094016838f38344dde30e2042c02c0167d4434cbd1417933bde07f9864970149ee6a51fd30fbd73d1e794f97b7c353d115853fba4b427ee27d7a5d86f69d9684034c47205aa46278804d6480ee90862078655a21eb81331bb469c8dc4b986a9478521e4969d7c34848967f980c80f15b11b02e3157670484a7308f279d02ffe7ea080925424e5bb4bfb9391075e55f7f5566da5859e85099927560239d239e81f2ef3fe1aa1a73e7eea021da8093075487eae604130b2d9aaca9266885614c76260578a22e5d215c523da8431b7c08c5330b52f522d8f56a41129e42291c66df5fd71afb2a4eed9bc14c5e255e4dc2b05227cdb4a4b5b47923a2a232c02ec0d0c813ac21331873a2f71caa91be6b4ff725cd2082cd972bf1fd633da5a960bb0a742312d5e9610b56299e1ef5e632160f1cdf71b1a5ab4af8ce80bb08c53b4e960cd004f341474a1cb3d2ec01883121e92290d9925d921ce2b95f2a19ff2c54cc85d8961468bdfb32ecafb6ca198f36bd40285a377551d1333b4a48fb27db48b659f553663b853b596eb1d5fbba44b1ec65bb8dd44f620903a821d8f71da888f187b5d044300e76ce8e7038d0e7c98bd43228dd4fb27f0659cd54aedddbcf07d5fc3b0e7bec5eb954a66c43e34a788aa05b16dd3822b0c1acb3d606386a51959cfe16d6f645ac08e33ca5d4d7266c55b20d4861a4fedf147b1c31ac3b05ce36414db78a7d479b7d4b3a6bee16e1c027ae3f80525e4924d9014ab5c07980f6ae40445e3b53d9812b29b3586a0e24b3812d11b79770c995663c14180df9f62684bb3405afe98e19194663cb4c47df4ac57170d028bafcee05639454fefacd604a66e36515d85786e5890e85423398940b5b89052a12a2c36aa49931ae795bc2906df23a628cd4da7e4ae1f6c33658e0c440a0f2af3253b296f6eb35b57af0a3e205adaed22885e397514e1b76857558cc0ab447ae55872fd5fdbb578e42d564349fee7978bd5e44308e1f7a1f033ddece84658aece77352e9a6c425e94d808f7d283d9dbab634ef6410e301cdc2359b5bd824f643c69a7b0c523deabd3a1a31e696ef59d83b37a673e3120ced7cfbc0383afeabe9b240ecb24e83a1f84beba702e039246a492fa8d358588b5b38fd6009fca7cbcf196345a996b0281c22201c65bd26805d724040e8b84186f49975a397db556f08a80289a2ae8a3b128556779c3fd9bd5f91661a5e447062601f03cb987751c930b30e68cbfda5076fc267574de70d8a713bd8065a0e178eb1ccd3bc9c5b352ad35abc245f80effdc27c592f17c8883b88871f6d6e8888440901b70c92ef751356801d2f0c8cf51750f3dd05398a3cd1fc79f493984d0a41aa76c1a623d9c2121057c48088d7afe0162e50246c79322ffe6ab885ec33c2275549cd5570522703305f248b9b3983337484f677dc8901cb4a48af86fedeb7aed8b5a7036b5ef1c49b742e4d27b1e1020f7dbd79ad967643f12e8eb74418fb40e8f2f4e64a65927d038ac8abe60a11dff358ded1390025080a63e1235293bd4a517df24de14375b28c527b98c5d3f46aadd1318c96a790de191a095f4b393aa0915eb3a91e3d34a3fc3729667de02d39f638cbb72a6103b5a8a30123d7b6f40dc48ca9889793680b75bf82c6bcd361352f75dc45589088846718909b08f4b477c1015022090b21418e21ad35435f38f35aa83d03c6dad83bbd217ec16277489e98e4135d6c2de3e159ed7a2ccf6b4acf858d75c22ff4fca23bac90b6feedc64e77126baf50e9024710d823ff04ac466dbbf6d9e586eabf228aca4b38315dcbcd5f76667bf8edf09bb8840e266e19b1adfed9a74f08019b8ee3217836a1d90697907782cac3205e70208b3e52146fb496559ba111bfcbf21bdd2f059b002d10b3bcccb9c1c57ad9ed2b27dc9b3dea312234bee0f8730597be021326efae5c3f0b8f31c0e39d0c6932a00023fffcf8dff5977af48d88f7640eb0c4bd7a5f53be24828fe4e545926424632dd2577891a90698a35e84efff2405e042e1e644e88d3e878fda5064ce19f3c7073d8a7caf07248b425ee6225787226a9ac13489253e7a96ce1a601117913f212866372da5016acfc49a8687b8d41b88bfe5ee327ac7dea79055ac17d52db2a8be5085f5939327272460a825bb17e8c59916e4037fc0796905c7bc8092bd075f2c1eb4c37f1261444a1fd7a1572870e7278b12135a064b82917ba801b4208738e467cb9b92d907c8b2d989fd67c86b14dc8df618633e3f1cac9efe0afd6e23c02f2a917ad140cb221247f10ef36afe876d658abd0850291552d9cd6b85fbcd02a10920e6ed3140dd52493fee2596a9f6d899609f11a0fcb00762ae038172b2134d25f0b14174536ad562a4092bc8c1769259afe5e17711d6d8ad078c3109725c636ebef81179764bbfc3bc40f78b1bc6514894b881e9c68bc5c19130f1c714461fac0bcd6c21cd85cbe6905340507f1887ce9ce90110ded1d1e5de20aaf1fc754708f937234589454da99b923b9cae97ce1665878fb8a99dfacb1a0bfe7ac412deb64efa5c4fb701910dedead3e9319a4920b77363990c0fe90daf905cc918176df23bfe6f17edfe0ea11a5d62467119f7b47189e1bfc6f8041d4037a9605095c030c27d59cea5e07e6a9eb501992596e52f8927c37c51459a35f42272dd189434ce936360f6e26bfee032c3ff82020f13cf87a9a193ef4f8b166c0ab618888a9f25bb0ccdf9ab328852b86f8e14f869eb2876aa201013ccf2f26fcc2727e0feabf7e172faaf59a7ec1b9ffee0e71a7c5ce92199cbf2329cf9ae2e522a8a6d08540140d2d28cc1d3f67423cf9e10d015c8a2bc9def21d095c6b9e5d7e83b44f23b371bd271e26582914093ab57c94d148c308bf623eb005893458aacbf8b0e5fd217b8be861bcbf8e5480f7b1446ae04a1a3b042769937cf277b8fe2d5392c9d60acfca251d7e7be22a255c6f95acde9f31f05b3594d2d3a9ea3d3c6a9b6ec3082a9ba4fe650095377a46efabc964908287fc8a02902be785622afdb1f34b1b49bcb7444b29ce49bffa03e42dc238042542e75be7c3bf9dab872fa3776646a4387ce113f9a25e49404926019b4141a1b080f012f54b99cc6d2de84e2dd4d336f3fd3a403ddba197387da445d0d7a12736457c7f633775948b0a26dbcafa1b03cabe15b49b7d30252416f6209ae03b96a66652d1f1401f0ed9a1bc7973f9f09ceebce7198c30373493cb3e2589eab122f9ba385d27c8362c1fd7530f2e8853a8b6852bb2c772937da1c22109713274bff1dbebbcffd1ab2837c35b75bebc32ce82a82f9c96ca18d8794ac4470d5140cf84ab1f96ec0c35dbe3ce9855eba2adbaa585adfa57b00c4a18f431cac8fc1b8590c63e3b2962126276ecfe733d3e57cb6d0f50ffda179d739d1b2cd21f9e1f8dbd913fe92dac875bd74a38e4a00c688828821f8041f5a75cb9f988e83d108e53eef0d27b82e94cd03b78c37cadd2736d68f77facd3864c0bdc8fa5d30d21b1c9835abd95b7ba881078326d9a091334fc4e0a9add5e4c852e524803beb612140dfb71bdadc1022e59bdeefe6660af52a5168e629bae848a2351e986fc1bbc66b8c1fe03053a582824fc2310f42086742a39dea81b0da295e50f3674d8db041e388da84090afe88df62921c761c7c7fdc90cef27a92f2707ea0db6b015ad17b961ec475c2d2546ee9c27a5541554a4b1db4a10e5439dc598d9b55c1575667a607507c7e1e64c7e2c877c330d86edb3ec8f02ccf6666151d18532471a129922a389237bd769af3c854be2aa59d92cd50652a463b56351067a62125230a5ee6c5258b7c2e4fdeffb18b200c21d546ef1ae3ac7b4cc9d20ae156995295120346ebbf73d32abb48122011f2705fdab786ff4608bde689455c9f66584a5a044fb5f1c287469e13b069968516a79e24042b431bccbdbae43238ba13c1ddbae80418bd33c87060f8562bb944eb397e30fbd9c5fd0d8222e414eda216ac1beb77316a0abe9120d028e884cefb44d94430e607dc8d790fbeda89730e6233feaecc32a5abc86d2e3829d804a891f00c89eccd309802216948f2fe9412327e0bcdaff317cb783f385bf6cd1e45e1d779eaba08d56a65a08110689f9ef9f9ebca0e29c6c873a2b1943ebb55921571a310da94c2cddf40b227193cf8de2749c21dc6ff202ff6d64cf05604a81f370435bc900cb0360577e2cf95dfd4fa150d78ef02e9161ce175c183fb98bc124e452490d9f2efcaffb985cc882b7a1e5124bbd52419e4ea74e0c3b5ee9a4361779160b2e958b3cf242211a1de4bd97f14ed1804ed07140e2af2424a94614d91e012b6d6329b6b1e95a52be33c216437fad89ac89e07086e90b31eaeb8895310ac14b8ec10fd3e57433598f66abe79b0bd6688811d8c8762674978800cbf5ab3ca3d97f2102d9886f77c0966d8eca6df49239500311a9a7e655f01fa56334d9d39b88b80ae650a3417611afe6be5e2106bb91395ea36421d1afebcc9502e9a5f2e6fb96ce60aa80694305810c8cc307316730449ae8cda0883f6b9e21a39fc59d86d70b8f6792dc95e7193cb115b06f9c0288c880da2c5f51dffd5d8641c8849108fc732c06760f195cb9803d8fa7febbab5f00b455a2e397c806259b41f7031ebf065578b4a99029a2448052b8a965ac9c27113746d32b1b36e7664c998a74044404cbfb0d2889ad6b5aa189a082314223a58bb2dd0b31217e217a57bb312fb7aac5825f98eb1e5f37a18eb7d86c60aa6b7645ee92df9a434d26a90fcb760590d07c557e35de29d73eef7c43e2c1b8bc5875d0ce81b14f24e444d48aca1928e5a7d457cab00db1cc224297c7765ba446c725e01d39966afa60af2a54e7eb2a03b4f79e047f218d5a171eb8bc653bfc73e07a6cc8816ce6a071393860ac18d9dc8dcfa5285e52a6552c19386f74b6e524c7a3dd5719949be1a0a723909803681a0396c48b21e5fc3c64e87d5298102d54dfeaae0fce5516ace157c970a6b535f5bfa55036e4d80dbdc8476ff71b84c9ad33b708cfd128b421eb82ab8f8aacf1d88eb81c94d2953ffa2000f34c0a226eb04a5e3a1cbd57d67d0dd8e5c14322f5d5b51e02e8906c6058c08ecb3319dcfeac8b7c1d949a3f723f281e8a365924e4ff1d63c17279e3b761584d475c5755ce7927daf8a34e2c14ca6e94896e008cf48a8b8c26b1dd0634463875ff6076d72d9cfd38abba78fe96493157494666e92d4c7af53f0e1ab4003717981e3be6ff3dcdcb8d996187264aacd6cafa102991cd271064e98f161a3d6a02f11525e2a6725a3f80b94a7062228940543506e427047a16db03704317c242ec1f6b08e664f7d0b91e9b89bec6d5f55690ad64f8f20d05f305e83e414e3eb5050c9ffe8edc82af12c402cea23525083944595f932414301fa59933c342b75fdd56eae62c49746d6258ec7722724ade37966b76abf3b952e2edd504bd375fed51fdf642b45ad2fc961dd6e302146723f8fcefd48eaaa4065454f8ba983f20a7e99a7b2f8074132c07e3aa2150f4ad5e284a6822b7991f4d8919971da990c9fe23b57e5b1923b10f1056d44a40f2cee3450b53bcd49d3fd73be83bae01b7c4694eb4fb647aa5452cfa864e10be5854ded2623426913421857b2366bfa0f83e348b199a880cdafc4b5fd5089e9eca7d6f1007f3db45108239d30c63017367b40003290ffde2c1528db818383bc606c6fc77972816cc422a561e5ee69133bc4ff1bc1df6a2bf93a552fd2139968b0bb0fef6f62499020be6674830b7792a01f8350149c357b06cd0a74716d605c58b3db1c7c5cc63fb848c168a7ea0a4af71f4daafa1184d8f8ac8fc838a9453d5b40b962042f18b93302628d1bf13876c5898100547df19bac16db6a4b9a4d64719fc4028a00243f0868a1dc3466c5c608660b53b09e515e6bc637ffc02543a61bcf0b91b2accd98f955610bdde202557878c415ea3ffa3d4f9f4762eaa923fa9d40f93e4ce36925b9e9193808bda7a687c78a9277df5217a35adbfd6a37a3adf36656fccbc1f88935f6918a8d0f33bc989a4b04655b0a770ef207b1a971dd6c372c5e435c9db931c8e1e2bd44b278030b39617b4376f47c268f7f4f3316eff771dd9bd09a0894619027f60c80f7050fbe09d6148c876fa704986c2343b7178a5f413f93881642db8cb5aaa0598e1ab0a4821fd1140b85d06f8916f1e6ea088df98dec122e9d62bb7542349aa32c1058a6f00063cca78a839f05395fe47b0351cfd8945b29cbd2e8cb2e0e54211f86aa878959993ba08ff8c12eb5aa9a458198e922142ed09916e112773b0a86a63afdfc39be068ea048d250fdf511e7240f2e4775ecacfd7aa8687eacbe494ee537d038f6d539e807ffafd3c7bef8948aa7c2d26f51ec8aedf8151d158eff048ef1d5592e43e6d3b4a10a0f1b0d8b7fb64881650208fa6541467328ab83414b6fc81abd87b43e6b90b1a8a79e4699000e3f944e2f441858798b2c666e0afead0708c6e4a0addcba13d336704b624d87d76da3d39f802b9fce4b30f90b6b8b96062b02cf541e7af4a606a86fdc0516ba1fb88060c6e199044dde2eee64061b16bdb0dbeca5cb4ce07158b19228c26257db9af56fdc5c5c7df3caa28b95a66f4c91f94d53aa61630cbbd7233dca7d5106c93f4abd62d307da01498cab0121ced9ac6ea7ecbb03aeb87cbb70399407575b1c57b6ca3a5451505298d1100cd1ef73f585de76c75ffb307bcdc23c3e31b9a9e97fdd013ac15706382c7a40e8e81f1e7aae8c487c955ac053cf8540e8acfacdcc718fae690349e9ed3445f419c863324fe109657979374ef12e8338880af14ba761989832be9cf9a0c62fd43f5e5ed61dd28f240cbf3240903360fa5aa62b7cf613e76afc60d2d50ff0c9652882f879f849fb4ceb0baa4dd7c872d99435ccc75130f15bf5401cd572b547f645d5d9ab4c632564d3b5bfa564d45b1105fd37eb22a508b7f549fd09ccad50c73c551b7c73bc0d5f30ad93d36b6a3397fcf6e5ac74074ff21a1ad79f1b3cd0508f90bbefaa8a4b2cb2693af3a0af1fa2d8a1bdd4afdef5d978df4535eb1254d829997e4bc78845b695f05922e803a262d9ef55b9257c7a5c6b622d658c377264f98a105a15b54724297cde290af9ce91cb3a669e73f4ea07645ab6d4a853701e9d4e00fd10ea367b34792e098bb7909e4fd6bc3635e2e8824a756692ae900f0a8002b85e48396c4591c4e78bdb65bdbb416e8b47920a09da07eb06c98d62ced184f18f5a5aca15e0e1afb6a9c48d7eefdd94fe7b45d417e704106f0a78e7b4a81e7a078faca73f13c41d193a89e28dab3bb71b6e60303cc7e387ee7cd4d84a658257208fba0c245d99f547a875d9478c7b525c2697d8a78206ae127ba16b3955454e6375d25a3e767f29c0361f07ac8be3554521c2a694455e644bc12e79b4f208340dfcebe52deeb9cf739db9a4a10c8dedcc284aed18ee9c971439f61aa705065d93bb09e084d34b7cbe1c11272fe292771789f580054135c1716853bd1e1d1bf218063f7398322e28f84edaadc8594373e444d8f27e0f6285ce4fa10cc8112c1b2620e77cbe1feaae220b7c6f0716ce3624d5e2f7b2e814f601b33eeda190c7664e920b7c8a6f3c161178d310d57991903c25db8b92e076e551127ab5ba9d930654c7b40bc2d7019b85bf21fe73b58cd73a8286e63cd9166d36a9ef9c3e24106838c18c5be0f48642638bc2f0e8f7c78b95d05a53d88a952175a3eddd6f7d0f43f86fe8fdc82bae20e86676939fc91ae54454e73ca51d3092def056daf616bfec55f315e1e14c75cd27a0b0bb0c5682e2a462cf25bf2e47af9436cb8125f62c49b98f9f4cc2ac6359e77bb252e897c40429dca4c29a5c95551594c99207e13a6393a044f852aa7505e79a3d1d7de685e28c0710cf370916de297692dab81dd789851c41cdbebc06fb7e7f9a33bf0a1d3efdedcd6ae31707255dee3a69b63d543d58293e1379652583413b195a9a8b7caa8664ca2a786823a8103f6aa83bb3231bf6883cbace68d6bdafe91d6d2ac575bf262f9949eea8ee5e0eba1711e1655c3ca43a84c37bc1e7e1a8d24d4fe9c443cedd05767f5e6fde192ca6e3dce3349fcb27b7d854b37dfeb4b847d4cb6c2bc6ac32b45f7ea579dd214abd4d7db3bea5aba05892771fc7c69034701cd45b1bf065b6ca5c3456232851f2e86cfb8ed3732ff6e5f7310eb407d749074b715708303bbec777b4e006f72c5fda59a39093e270840aefed2c093045ec4df32d2b96751f8bf7e53757c78743f27344167beaa9af1627d38c2e4ef0c12a0f6ef81268b27e97b0c339cf129a1fee292dcffa305221c4e5c6137b089b00a346a036ad95a93562056b24a07cf01daa3f6c0112aa69e6cb89cf19f93fc891ca729554418247151b05ed6fd030324457b61609bd50b6b2ea31c0c91ed2b3b3f0a6e0574e9df0b15d725b1762bdc80b121336c77237b6fb2e5de5ba694649a086b09360935cb62ba98fb627f985dbd3087f12aabd2c1cae055665486edf7255e655658a7dfcde055f67233aa7c6ad8feae8aedcf8c266c4b6684c6ecc184a561fb533308b63fb33281307930cb601d34e61a1e6b1e298d60fb9bc96656bcdfaaf7f427ac79bcedbbf7dee9fb7f2fd613fd0bbadba3e66f13f6c3fc17fb7201ae72991076fe1038343bb211628df583ee59a77b70747a300c3ecde1e382d34c5bd97e0f64aedbc6fc9e654396399e53a4534b27f66e25e9b1331f90f4c879ada2f9261c1290ab1b1ed000b93252468c27c7cb47805c1df181953ae881610d90392f3c201011b99241255733b04eff1d62802036ecf0c0f0c4bccc5f174620560ac961537f6360601d22303b55f2782b213a24cff7f267e4aa87a626e1bea0ecc6fbd03556f3f1d7adf63252a5e435eda9e4a1afbd275534af3dcb958fcf44243dfad0013089e8034d9582655be1712a9325dc86b5f926d4debc1257716b14bb9b6969e5293dba6c442e427df437baa1d843d1ae26ccbaaeebdabf8ef364bccdf33c6f85babd58dbfaa86f53af10f5b0685e6e1ba59bf705518afa3e1ab62b34221739ce07a40f7d29bc8828a40ffd6e2b943d4fe1a2e6e121ba7d5f906489577efc0a3f9eda30926b40aaf80512c9556c06bfe0b219369595c0509038fd6c068fefe7359ac7c7f7b353ab6876fc4b9e96c7df692f9b61ebf7784953d955798a0da4aa7e3f2bd5af71f98a689f3d90d3176b666fea136a334a6dde86bea64dfad2dad8883d20b5a1f45d3e1aa8385d3e1064507229eec5aad98ccbb85a8b180b3ff10d7808b6bfe6ab8126699e206e90f8b06593e6258d287413c48d9de2cdf75adca023473883e3c8f61b39d2801eca58e26a91df680c0c592a5eedb36dc8de009231302fa00c3318c0062b5aa41217d14933cd9b1c07a4c79d12d87e13d8def9c0c755d87e6f04b6bfcb4288153d5488481f9602065ef1142b42988a1e2e9a5cd4ad1cd94fe95c85657bf917e458b2baf63af7b8ca9d2825cee5ec7c7f9edc6ab55a9c1038d3c86cb55a2d16974d1a1cbceffe8827767f443a4e3ff7292b7e68d264875843acd6b82a85fbae4ae97ea6ac804be413cbfb0bcee992c555c942d51b5aaf5acdbe1a5cb01996275d8069358fcbb49e1be799bbcf2f45c5276d336db2f336b332329594aea3537bd760349d7bc3de30bcf1834c4c0064808881c989b100cc0b1098205e40165e2e00ba000054e292c2715992fac61493cf5be1c380d7fdf09a74281f9d131477837ac2511b4e08ba8974884dab3eb5d067d66312914d1e1e65fa8e2ea2269cef3cb7efb46c738e6e9ea33c182b3f870c8e1e72c4e19c1fb61f87f4e151135a174220a10fc9f9a338f17adef64296c3cc5f5230bba5f46c2679dc5fdbb22834304b276f2ec73cf69ebf20ef354dd3344df36efad450af799eabba97a08cf7a86eb514db0615e44a4641f2642f9f9f205793992079b8974bb0f25909724559a79fd5e02348a7a02653c898bddc52d243b4d8640aad43695393ac845d420839f673b20aac016662321f41594ac1f6138f574da4d8a682eddfaa92e6a1be7df6d31bb29a7462ceb726bacd93e9b19b74db7305c2f39a6e5e18a2549ee57efb8eab618f1a00d9caccf9a8d7aa2662c950b4ce2f0885ea4d665f90d397699e203c9bfdf674326b3edb3f9b3e08c3d0458e9ec9f92ecdacd475b279b2fffa9d65df83794e2d9353ce6c7e53f7e95aaba3d174301b91c3436666ce704c7f42d3344ddb64dc087631cf22c7712286f3dc0854d7c1a0629b12ea657249328737f0e9f3361710a4a84dd3b64d89725b875dcadb90640e7b2800fbe9c79d8bc7699a1be17195bfd3348d89eec543c1703154c673255c0925b61b1e1b01f677119111a07337f36f383c4702d8bf699aa67993cc794dd334cd9900fb3566665e9239a0e56d0362126dd308cd05f66fef4680fd949999c11d1d399a4607cf1a4f7eec4e80fd1acd17c4df490059ecd79e4539c4f1c3ba4e4a97d28d7023bc736742e39ca0eed37dce6c4e2696ac9ceed2e7f4e427e52472a202318982a474e99dd7f5e7a58638da60d69f76e0db6073ba13f2f352fe1e0384ae939e7477cf3a8e4e255c89962ea57bf255dabb53e76e662debc09c534a29e5dca4e64fee3e3bba3547dda7fb4479f293e225a2691681fc5f901481982e2bbf93004a8f4264af3731dd1de5efa29439d2e52993999459aca52f39ceccb24ccb7c6a33cb667b0d66b784a3dcb780fc19e74850f7e93ec1b92da14dcddda7fb9ceed37d52e7a494d27376f764879214065dc7c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c434336da31c8aa266a66d94dbb8a6365a9a99b6518d72531bcd4cdbb2ed898f9a326d6a9d1a52ca27357a766a80fcdeddde52b694cd71aeae7324b8b77bfb1a2ea56c57c3a5cb76a29b3cf3fbe79c3cd365cb9625e864f308e931db766ebabb65d8deb56844e69ecdeeeaf5d8ddddf4359eda112dde0148fbc437cbefff833679322debd67ad55ad6adb5d186966959b7db276ef987326e28745926a59452ca2ccba69c538bd26336b399cd6c66339b3dee314c4dcbb65e829d9a9679cc356d9b5996bde3c02cea3812ccb2e93d9409717f25a836fba9446156f2d27d4e9238f259bcd9f7775d6df6f687ecfdb56f713a1b699e6559e6dc9ab1d92d9336d1ddfd5dd3b44cdcaa685e80fc43c0e66d29d674c31030a3dabb285f734d730ace1d5762dbb6bb6ddbb6853f826670537453823231d3a59c52ce396596a5c18140d3b68de336f139099d4be96edadd2e5eed37519ba2d3e44d13b3d9de431af70a50def9e75fbbbbe6d7e51732c9fe30a77796b1e6d3a74f9f3e7dcea96559db8cce39e79cd99c734e2a6ad5064d03e29be71ee75996790e454f8f72f2b826a4d3b43927a573aee89cf4e90efd46a12a901ea5e6deb7a5344fb1cc5c28135a264eb0f327c0d963d645dc01903ff39739e7f4c9338978b2eec424b2dc51dc9b607fb2ee32936142f36c8a734e770e74ce44b604c8af4d51ca6c5a36291af6ce99cd997d3358ab518d6ad4bd47f7b9bb463f4abb2f455db64a5450929916173002510d9a46c05405336e004616618091821818b4500314d4000c972e7e6250051934914262e18b0d84f14514dc3fa7821f5ac4208d32a2c8d2c409c848a2228c2412ecfc4c0115a6684ac20a25d4e00969032e8010061742d8d9b2e408230861a491b232a90c0ed8ceca241db461ef4e5287d4f1f48c529f9c854b703bcf6d763b6e580832c4e5861443e6c00756326d916a4826442187145e82a16010f0f8cb54d8fc652b6c02d6e2e62fb3805fc05c3012a3c04a4ec191d78fbf8c8564115cbe02488a24970c1dd0f2c40c444a1c188391d879c2ce9310250859424f53cf1160380306349e07bf246f60712095640d80f080323a32e118d6d88451a081641f5859f98c25fc8595afc45900b3d9911f620f3e449fd249632a5288ea4927974e4032d8f03d78eca8c97684f4c000038d8e1ce1ccfc9b1108101c376462601caca979015d525f3399bc42e225993e644004a1795ba80821371f82903e4f644e13d6a122799870358f6c52f293e790919536433e7847172bd8620b2e5c0558608145962db6d8628b2db6d8628b1570d14dcde3d43cfcddd4a3fc8e8dd1c5518f328b12f0c84aa4ee97e7b5951ed1904270407b2fc0904a5a25f10108254d86e028dce223523a8021c90b3122104a9ae41802c6a337887284f4c12173780a32893db079b4bfe001e4175613c11edbb906793af72b04e085214882c0fc1592e465e503ebf40a08d6e91e29255f136f882842486660fb61c400bc88436c03e122deee57928305db4d18946cd8fe21763cf10624233123bff071a13ff3c1c3f60b491f1c517825c33a1b18c3b618e45eab1ca869acb9a68177c87af645f48616af55972e1dfdb1fd547ec153f2589dda9ee5af08dbafc23261cd26431199d32f43397e8185223250f10ea971c92bb0655021ad691958a7b9202816341978a5bd0d3f04d0be63586132b76d4570df2c5b887d647f5d139da30004bbbbbbbbbb5f5e5a4aa0eeeeeeee6e2cdc048e85abc0b360d15eb0d044276f96c4307d66dab6d16caa62fee6c81a67fa128e26846bbc2cb9a4814a719f4231731c2ae3feeec4d41ebfb2a3022e5bea525b2ad52d793739761cc1d14387243501e7ee94f75ca5edbc8e535ab6d4a5be2d95f2bee999cb80720bea0bd296b41a5413e83ff9f3a529f6d2926f1bb8fdbda1cc83d2c1c3fb9b638699182b616c00bdee066e65e405e68567e0d511d6e1151223bc4ac23a9e189bc09125d8fe6e420b417e48b0fd2e44b0fd3d1c01091a13903e1d0499d36f06ebf4af61fbd3b0bdd43c59eaafffa77d2a13af17f1f71ec86715fa2a9369fdb52147d5e634ba898e25d3b6979e614227f9bb2ef57ddf2f2e376062646a58a7c1679dd67ec89c2c136f93cc7e9ffb0064fb3d50877d43d4e1e11f197ed4f4ff4df7e665b5bf2263f3802fa0cbcf7f015d1ec887ac4b4dd5cb3625ad0bfddce8e256d96a6293cc66224d0d9e590993e16c0a93436919f263650f4f0b3a0018ad4d0dc242879291f1c2f0aba971115fd680a29c07cd1730c8ce088466746e322e9fd7a1c21af1c31a148af3bc8e7e41764620df86da4617980e456710c9429095906a273b8f901c3c56b60000afd9cf9951ee4e9ab13635e63eaf436dfdda22c8ce0824f5a534efafe81cdd418d40bc769a86cab44ccb3ad4c65197944bd619eb644d3bede97c7118987aa38538605e5cba1de641a1787add03f54475286ee4a89601d9e1110264270686eb4d0e7a0333761608eb7410219d0c0e8fbf29f680fcd499d8af1e7bcece59b64bd6329f7ed35fd8306c571b05726c2e6cbfa0b58cdd0220fd0a227dfa043bbcea2e6c7fabc002b1fdda2ef7424d235735e126c0c2518005169da3a0bd682fc410430cc7c20b2a3a7973bb98edefe81820b7b3c14e4edf1abe86bd74b63627279973c6e6e41e4b62a7b73a595ec1cfcf59fea6715a7c1780f2efef38d1c1407fdab6340e8b5b8c0caa05d8d45f91af8a8e6d31c7e198cce16f2180f2ef16eb6056da7414fce5cd4d1559fece614c7923e2e71474265928984529390e7f77014aee6e3b5345cd849d9d1fc826d9249b9a8d66a3d9f8c2bfe020af573251487e41a9cb9b1e9be3ea12c929e9286d32afa45ca827e5acb91919cc689d72fcf88b027e1fa5efe275f37bfe0eb0f1e4cf45dfbeadfbaefbbefb36d4d66d346ca227a577ea93966eb4a3de17f4f5a6678f3c36cfc871df73e26d32c7af02886aee5d9e725f4d510172eff27daa4a497d12cf4a8958b8afa3dc4bfb3df7057d620fc87d1cf7de470327ca744fbd2ae5d889de5bae7ea7f170df3f6e28b1c9b49cf864dad9624d8ffdd36ef5a6c7f1a3f0bcb30283c1c0a03205ab632518546c603b1904946128516475ac0c832808ad9282a58966f99bb8f5254ffc1d60fbebc4e956354f6edfac31ff13b753bc43feb3060635e0795ee6aa66b94afb9c879982642740610992c7250972458f2079522f9f8b600446038cc10cc1868e63445fe05188f449a3927455913c330ab9ea413e3fc14ec81512d6e9670ef006e42ac916252c23e143eb1e31851e3676d618b7bc196119e0182a2542240f8e9e2c2e5c20f6fab0120c1e2dc81567c901805c31d20f1bb9e22e7a489e1b2fbf86579cc43a3995999b797ed98663de40b5ab8a911512642f57155415a3ed45022bbe650832a7ff136f7bcc8960fb5f522ecd923579c55a9a95fe790c86c1481fce41e82a5e729c7e9abf14bc61f8f7c72cb4feb7a7075e75956e8b84576dd49d8457bdc5f6fbc0ab7e5de9d35828715587f64aa7fba3bdd2493af5d82b9db2f0aa9d6cb220f1aad910bbe0557761fb3989573d05d60143fa741564ce91ab1c00e2a538e20547f1862b88f77f8877f421de1d7bd3474ebcf2a49bb771628357aec5e68957ae243e9029f0cac7e82a481f27c3638ed34f29088638e20dffc715c43beefc10ef8eca87b79278358d6e92b4f06a5ab1d162fb5d8957f3e54ab6dfc7e0d5cc820ce9334f2073b4f0ca61ac03632db6bd8c17c7e0952ff5106f5b86f1cacdc84195366a2b3caaec106fd73416fde2257a86edd7215ed008a1bdbc148abc34dacb4b192ff5d8cb4b21cd4823ca167fc8a6e870e5a892e36b8cac08a7844f33c5e5aa9263dbac30ca0209b6bfc34d0927983d90e3e7cdad663f67b6fde715d9689dd38857f3c80aaf669617afe69151162bb691e609a4cff442e664c1abd9c5c481c4e9f7c18bbd13e674fd69091e9b5120ca8c984599122eb613c6e4c511af6652165e4d2d48bc9a4ab30b5ecd31367a5fec265eefbbec68cb62fb02968a3f784f7f26f12a7365495a789555d9c4a9c5f64fa56d8ec1abccca14e718aef9b9aacc216499096ec854a71b4624c84c308d66fd646fd8443ec276d91bb292bd21c3ec0d79c9de90c8deb0c8ded0656f58536f4f918e1bde46bae1e5231c37bc72e9caa7cb48aeeb31dbef75444c427b3b2226a0bd5f12136aef96c404b477285c82c4fe903212a5cd1027c4431b0fa121433f9cf6031174f2e67a926d967495448ad126d0e95b23d1d24ecfef8c345482b96b8b69fdca9c26124b1303bcdc626962304b13838845ddc85f7e8494a4d4a2446051e87aa3f175b4f3343a7d5318933deeeae92dd6e4f4e42d222f7abd5eafd7eba5a4a7a7a7a7a727f6ea71ad8f909294604b2e97cbe572b95eafd7ebf57a29e9d74b3acdcce9a94554e46a2397cbe572b95cafd7ebf57abd9c5cfcca260b89262985b05f1a633b4d2d4a041685ae371a5f2e97cbe572b938c6318e718c631ce318924b6b5122b02874bd11cbe572b95c2e17b75cdbced3e8f44d610c6c58c31ad6b08635ac61522945d430222f0ac10f9dc889a8a788c00b5ada49ea49ec3e23e852005ea934830dadd23efb6eedbb4c0bda644edf344effb705bc3bb6bddef4c89699681259ae6de587c3ce8eef70cd9e279195ac6f0b78e99743b3a60fc04bed66fb1bbc40f853ff267d64d644cdd7d0c006304b9ffec73952a2e7c51c27e8ef6c69de2480f725a2c681e525bc8caee562b1bf803886bf8e64d9956078271f6627ba5ed42f9ebf7df4c2df4612f2b7935cf8db4a41fe36ac8597fca4c35d0484f92533c700c0cc452233bfbc7c6499198663572ec53027f18ee5fb967d4ac1f2fdfc4b695e8bb90a15a4c56cbfe6e42a54930ce2a502d09c6cff46d43cdb1372ecefdf9690fd5dcb551b6589978256bc600824def06310ef1311eff823de1dbbc11ca79fc2205e0aaec40b863ee20d7f88787fec11efa812ef0e25729c97ab6892e3f4531ef152f005f182a110f186ef82787f0c22deb185ce89ee8897826018fe8fa31773157d729cfe9d9d710c4310f421520a8261f81f77b4c335b9cb55a89d9d71fc0f65c41b8238444ac119f182e1ff388a77125997ef6e5466a19c5c2505cba3d6681e2633df8f52c30872d57d3f6ac955deab49fac4dc4035d9d6663494a6651d1a673ccd96736b58fe1b4eae75689ce133a82d96bf43e38c992a2dc7c335f10a0f714bc5805ada992aad64a19a5cd5fd2e0fd4493c0bcbf7dff3bf7ca77d412f620ff8bdfc82be07ea97ca36ab6ce727599bcb555dabe56ab95aae96abe56ac15cd521216d30a40d86b4c1903618d20643a24494826018fe8fe30e4d7295f77a25bd925e49afa457d2ebc9555e8c3ba2943e7931fae4c5e89317a34f5e8c3e7ddcd1c71d7ddcd1c71d7ddcd1e7e29a5c2551463b3be3f81f8620c835510a8261f83f8e28a34addd5b2fd9ba56d80b743b2fdfdb2fc5fcd9c2cfff55eb61fc9f2d336c0964ab40df082944b6da04b504a47cdbb547047bddb94496475d0d488414c22abe30ba2117b401dd48275ea10afcce799437a1e92e37831c781d1252f1673754ee0832e2f7f3dcbdb77a9da590f0d7eef0cb94a3d7f87e42aefe5c5a40f8ee7f7b6344fcc87320f33c3cf2ccad499c751351bce3c7fccc3cc7c47bfa018b1079c89999941da19310b63caf05eeebd70d46967aa191ee387915972b73255ca9c3046943db68da965b80e1c07382adb99988c78e5860853a5c551a50dabb4a98ab25ecc55f3f9bd2657dd7816f92737673f235749c182e3655e78661ee6fb3f2aa9efff402057a97757f71d8efaf23155b330292ac097e79f79999719b1077c997961991731a666303332eee297f9323842b738aa94393033a2ec51a64a2b654eaac6e8dc17cb6c5f6ec8d425422d8b43bc7243ecb42dc53255da982a2d4c95292eb539b59f8b53a814f552754b55cdba5477b55771eabe3ba584675fb7792fd5e55375ba3c3ff85dea0b02c51ed005747111bd5475db715e0ae5a5501cf552de6b9ffa9ebf22dedbcedde5a2c19f6cb605e14f75ceef290af9130b8b8bdf0a420c0af1506f3faf39a7a54d9ab82dc22ce6a048150509177f1a1e5c143a6265032d60d08650f699b76ddbdd6016a4b43798f479b1fc5b19725b925b6c6b6a9ee6d7a164791c3317232be5f643408d9b73d2e72850d3cc1f027a280678a76bbaba4a976137c052455b12a765f8b3b0fd1409a9ea59c2760fb8c1ac04ea2ed3369d1e80d19aaf651f15aff8677506c7e9ef71958bb4d5e9485501ba2635af455bb435b96d6e2a9fc136b919ea108b7e9bd8d33304e4efe6dff9aa01787b6ce3c03d340099eb10707e372a81dc6cf1523b0390fbb8da793c0498144e5e8405693ef101235a198fe0084a20d26e70c512963621b852a044c91081075edc13aac4e40dd0d841ac2be3096c288d1cdd50de5293520b9490b439c33881139d5970dda612cb71aa0561b85851fc85bc8a96251616ed8758db36c46a322dc7d16d63e92aeef11880f36f8fe59e8af3d5734e9701a87d16cdc3e29369b979364e6b32ad66b56f00da2f916df067da46b91935ce686d598f47c9e1e28b2696d00c1228d32f788dd22060c2124d2c2122492c997e81d905543cc11cc7c5288d44151bb858423c4b3b96ab70c512732e46a1f1c0118c584233482cffec877a1ca75fe0d14108d630624511d2807003a31ecb2fc419a14988e59fde194bad09a36d45460bb64339494611cb7f88259f02d59e1880b76772a8cee3ad8925350ed54954e77d2917f065d3a8f7b19772015fbe94dc5246a2fc48491a922e0cbec0c4c817098529d268b184b4268c58b25f689818991b38664220ac808c2496e4d1e3b9d0c2a88a36373e7eac30e2008005203901b8c2ca93ce4e0b415c10f2028f0acb1a493d437c80c08515b0185ea20940486245119261818b25fb05219a466b74550b4edc208975a306c71862c820a986a64897b183294fac9e220c289a70f48cd21a4c1c0181043f40923b90c10bc620580113b4e88113d30aa4d0e2d0062a8881530e0e6cd1021d5a5a46dc442c8a229624c3892c4e2c57c9315ee0c512ab5d45d3472e6842095a2c21540f5c2c2c3435c82d965f6eb12c4aef685c60b2c6616bb474d270b15cc44243033fdb21bb03860846ac28423a3d00a3c5f217123be062b928b4b3c4152d26421060acea495779053a02bc3d9e74d54e0da080c492ae8a6223e58825b435b164bf206d501dcbcfeba4e491a24553888758a5065b39bb7e96a21b80dbc93a345232c7d0dff5e75d8b703ebfcb24679ef2e976c8999f3ab69d4bcb4f7ee752846b171aa6bd41489e9e92dfc996cd9ca5ae909d32a7c6baccf17af47a94a2eb8680e28becd1e3972233121c56065cafc4b0e3fd0b6a1f3fbf20999f3cbecbb24cd3be20f1b5feed0b9ad931616adb24b5730fa6529ba44a41c20509254936db651e4cd56c922a599de6c1d4cc769b0753a7eda80753dd2649f25d9f502b4339142a351fa88f5429583a480bf5ca91ef3a9ada4ee866b5e9d1d4acdb3c9aea4e9c7c56af3079224c7e89132de1366cf81d8a43a152343f3e3151a4d496d24ca45ca86da5b340a27617495ac6c019ab432175f877544952ddc871f87df410ab771143f524c7f181ccf9419bf1379549ed98e370117505858d681e3236a1937a030e38e490830e3a1831521f872fc8865b9fc31704c3e7e0a3c317b4c2eb50a3bc912f28036fe41b005b176c7e872f6885df41f23079e0c19b79e0814b117971080a8ef8e389880922fef81e3742e38d8f1e45bcb470e3a387542d91b1d79592fc11f9cf63c7cbf7244fcdcb072279667e5864d204b461d7b5ed918a844ba5b66bafeb66357ba44a5637bdae99ed32afebb49de675757ba422d1a38d23df6d1ea749caa152446ae535988d56cb850c64ff63084a90189a1eb5cd886d61a385da53f096147f42e6f0efa80e05ebf0d7549fe259a4772147fe54f52439f2dbc01045c421625ccd232993b88c3c0552873fac5b5829736864fe862fe847e871f8825a781c56c8e10beaf139c840791dbe20185e876f006c7f0c017fdec817d4e38dc81de60e3b78f30e3b70a9ec615245acc4140f98181f1f291e3034e14c149c3ab32324c2859b991d613f50139919187f127909623389f003b55256652aafd1a3f20ab55b42b5a5fca8cd040cb5696a1bc91c7e98da5678d4cea288daabda493df2fba8ada5477e9fda63d4907fa676ac47fe1db5b7f4c81fa5361bb5a7d0233f11d55b3df2bb505d4a8ffc44aa4fe1cf40f52c7ae4b7a99ea57a173d720b55f608a5f2282259fe18fe8a33ff65f905c98b64ce92e42699c343c81cee971f95395c81640ebb92952fb994272519bd8e90908e5e46de72222f7297bbbcc889bc156b727a7a726a8ac1c8cc549212cc495d82292519bd8e90908e5e6d14c2c8cc6e654dd44532efa4b6ab8b9aa85b1c23d294393d3d3935c59294604b4b30a524a3d71112d2d1cb885b4cc445ec6217173111b788843032b1a610e69dd427a7a68c8f7c46248491491991f09d54b964f997d424f548e8aa239f9a323019913025de57c04ff18e091865c4bb13c30e8c787b98f484e20d9d8444c40b2e012d8b3434cc5f0f4022cf445e8bcb4a1a682152c34a1a8041c5827f43dbfdf100ec88a40f94efef94903eecfafe8e03bce228bebf63a279188aefef988a29bebf7bb90a0b57f924288b41c01f78179797ce5250e1e10802be7fdb62b4458d6812e538232e898ba15aaeba0187ef4725b92a87ef47c55c65814ff2375cf27774f27787c9df9e18fe4aa52b61572e5dd974a5d3954f978980fe729191bfeceae12fbf90fce5a3277f19e9b2d265d8e5a5cb4dec74f9e936d1eda276dd7edd46baad741b767b6987bfddf480bfede4c3df7eaac05f27ba7fbde887bfee02e2afbf74f8eb478e9443751c6adf505b88da48ed7a62468a00041c508f34800108a8cf830e40fc702be0c303763880010a60430d04a061860114099241002cfba40723401498800416a08004c4c0c4c9922a1d27493d52432895b3565c61c5774ca54e2ad5a9d4a652d976736629991ea7d06c06c5f4188ada96afa834b3e27f9eafe02bacb0e20a6a8508f638994a959be50fcc6728180ab107fc81e2e7fd074ad5ac08a566768aca4655ea1516014351a765292c1165b1089ea9542652e62c116a59a6f21d5341058ba04a39f2493ceb8888e5e7e7a13c1bb191d803febcfc827e1ea8d9a8b2652a2a5b287506697fc490a9a8d2769907a5ba95a262e12aa460e1107c12cfc2c2557cc7505487a28aff790ec177a82f884320f6805c45150fd41c02b63f95a2aa10c1c9503015f5ca91e72af5a9b014cf53882108aa142c3fcf20f854ab7978caf7a7a4340f7ba079d803fc814a1d673e4b51398a2a59074aed9f1ab2f753c156ab65bbf67e2a6db55a1ef89fe729df755f104f117b40f6c077ecf114f6c08f1e10777a9ca9f953a5ed360f4a65cb50c8ede7a1546a3bf6a054698778829d68e2b70e7c4729e5259efb829803cf7d87f28680fcc4a3be202e1ae23bd9a59c5c75e4fbfbc955407c6f4afca5447fc10dfc0d93f8fb1af83b5a1a297f772c4d12122f47fca516c688bfa08559e1a5ab0cf0e34b571de071be1bc9554bf8c9554c86fe82366cfda5360c6784fe523bf3c3c7cd4b5725e05b78e92a057c9097ae5ac0bb6023d62440df15f8fe9e23ae7252444c4c94bfa025e22fb532321980f2d94b5715f9efc1e367874a02eff3d25513f8d54b5751e061f8f6027ca2764445b563a276ae1ebb2a3d76463d76567aec5e1ca85d163d3af8ac84782948245e30dc8078c34f42bc3f6a604b6229220c0931c976f408f1d2ce08f182dd534bbc7448bc5e9190f8b58a68590f8c225e9008f1522f03a996859202aa9b1123dfc12c10c40e30db200ecfddf01d50d58e1cf92e06c4010cf0de17e3806ab664c97744dd937fdf8742794fb681eaeca187ef88fa876f6ac3d7f0047897f78abeafc836507524481e70e42a26f707f0dd0ccf7d3400d54e9224a82b725591eff78eba02323cf7357545607f409559b35e71e2e43b224f0904b754a75ec97691e310a55a579efc104fbe2372557fe772950f6fdf85f5dd4b5709e0b92b31fc05be75f87ecfc95546bedf7b72d50edfffb55ca5e4fb3f2257f1f0fd5f91ab107064c9f77f2f5725e0fbbf235729e0fb3f24572de0fbbf245731f9fe4fc9553d7cff07731503beff5b725503beff8bb90a03dfff35b9ca01dfff39b90ac9f77f4fae7ac0f7a75aae6af2fd29225741e0fb5345ae8ac0f7a75cae4af2fd5b92ab9c7cffa6e42a09fc04be7f5b72150562f87e6f72d593ef77275709f1fdfe24447de2a41e719cfe2675080c54466252f969496d25b5972e503d88ea16a88ee438fd40d4fea1b6ab72052afb502950275025509354e93811a810a80fa848aa741c07d4065406d41eaa749c055405d404d423553a0e0f75876aa44ac7d1a1e65071a837d4035403d402541b6a0d950095863a431d402d5283aa0c5500553ace8f784756958eb3e36d958e53f34055b262a8a1e3b4cca1d191e3c3191c37bea3944b853df6ff10a93f6c61a8572eadea95309f7aa592bde1954e3d37bc8cc4532fbf5eb8e165277bc3db4841eaed237bc3db2f7bc3db309d7a5b290037bc4e04a45e7fd91b5e3fb237bc8e84536f37d91bde76b2370ca0c3a8c40b1a6a921c229a1100000080026316000028140c0985625196a5599eca0f14800f65aa52605e3a9347e33487611843c000020001000080c8ccc8cc4c0400d289492b76ef421b1e1371a11537dadf5190ff0cfb6f7c92a0bcf94cfbd26523c3f17ff0ce2e2b7e88a9707d92a3db017514e9fad5caa95905b610280b8d7c752a6637d84b896c46d6e8af02f0b4444c9aac0edf201c0dcabaf6ccb2cb07299c1dd93545a2a9302389ddcfa62cbbd9f51d90049732685523d660def18bc9c2cc476db17e504cad58d474fbd8f87906a49810a49c6584f0d850c1110222420c249625189c7ff13da43a08bcdaeb45680be293ffa9ada634f5865d82447220c45058db8cd00671d476dbd9d19dec0303f344440d61e0209192ec208fdb5caf6b9b2219a97642b38063bc8ac4df7cec7f7dede6195d71803f534430c80a960a1c14c8d492f793de51b178c41863903873bb7a2df7528a2268f9a20d27fdd337fc65eb28d23a0a71364a6e0fceb2551780e91cea10ba48ea09e68b17ce6309151f69be10945a29640ebae83e068af3ec0692108c1a53fd9a1c317687a993e84e43d4cf1bc2ac159d50d5f2cadf2ff858f6c072d1838b9eee277440b9d3e6955ecca85a1b3591add1e51572b23aabffddd420fd9646880690599a31bc4c0b6f24fde6929dfbf88b3483dbffcef9ec8bf05d0c1631a90a34d4e07a04f433b391e4cf9b358294f03ffaae77d04973afd9679179fc281a80b53125c40a1235d88b04f3002c1f3a5ec20958ed49a964e8578c6ad2bcbce406df71eb89bf505331b6309d19a69db26130c223d3d3b53e097c801a2c41940eee087e02f619fea3027223dcc2cb3af804fd14626faa629eb985ec7a354430dd4eede4259c1c317e44e103e3061d2b73d448ec2892b42acb285f70e2acf236963dba9fbd2e31b0da89952a15c5c2b0a6520ca7032162cba8ad9cf8004b23ed060bb03f3529814756d4a86ea56df9d1af4d8f761be2f7a7d2479f5850d8a0c02f417810376688d2f1093ef816c053f2a8482305bf04c143c0edc3800bee4e290301673ba912cb12b18fe2298cb7512ae7e234e162d227e90fa00ab0ac08cc291f27f05f703dc42e221d0bce227122c11abf1f070d0258ed70ce66e98d2057f421d3dc356c2f6da6f0c981a9503e978d16fc10080775c72c500458a20086c2480b724caef1017c08538407232ceecf55d5589259ffbfbd6a0dda8502bf010720a1952241f6415f9e1cba2887feee57dea2a8cbcf67606d416930b06959e5a2402f6bea408be675f57d7e48c1b12459aa895a679a8b0c83db4b0627dfb23d9a98a13c45c5775e56802e2dfbb24082c51b03490361dc428cde4f9e45fc4d1cf4b1911b172d6a4604893145eae341bf5440664f29c6d4759b788587a7161c4b5f1d4091450cf1a5c9871e8b561c55d0f44a90935e61526e5e2e2537c56274a3752e8dd30a44b124beb20d3da7af253e437b49e02c7e5c899158ca7424ae8198abdc8dbc7a6229fc24aa6173562b680bb7f86bc438fe4aeb034880517d06b840c2c9390615184712a76f8acbe213be563add54c4263b091c309e7599c75d7f1a17bf769c734687b1adddcc440525254b9dc754d894874c740986f5a16043bece26a0ed11511678d504e0aa2bbc2e7a963f0e41f7530e293bbb5ea30c6634828f048a89735058ddae83282682f814a83f3e52c37306c7bce0f027931cf057ba030f1fb2d3a0ac83fb6326487036a34c51b788887dce22645644803734580a7dddbbea3955947430a5a05103eac01f4cf396d718e30f70f519e19efcae22a6937b7039cf20e0c981e7c432e3a049c1323b63b5743a1c393819cf6ea146941cfc3bb16835237d1a0f2c2317fab9db54076c8a815f511654a541c622a91059302c5867553585ea9f4f1983104031e5a052c2c00acc5bc8c12ee4a28a005b1c75c076a4c9485abe2d84091d0324ac845f01ee29900d96e562da34d168d6bbeaf17832767f49b4752bc1aee25bf9025193c1df00ab2f808fe3404a2fc5bf34074491682dfc5b896b45e8a5ff796b2c9138e364bd3027c828ad8a6ef57372721267582bfa96691ae1c7724035a0e8212b0aebf3f378dac90844ff81b43a93eb6486b4ce27fa3c1108eb075d620dde127b76b3febd2b778be98fd59456144746bdf5633b36dc0628ea2f2ac4949a160ea79887ad831fa2d2e019f8d5f5560c5bf6ef49145e5c31fa9c8ac8c0f9ba923a9f48092b74f8cf2a55d960efd6e300d2c81bed9d6b5d12504da07492c22c39e09a8256345aa4bccd5087f569ef5d54c4558207b221b0303f54d78fab95d88d87d6a4e6f63e387bfa23721c1f168f655c09d9829ef9d88ac3d0865754a62b0d2a0a20a743d20ea154ac9903951193e31b66c878b024b8fb1ddd03702a03f0d80364f82bdb99c40865af5649cfc6f6aa065dac893dd650cea204c5770a8d8ee335480bfa2ac1193fc8db026014963bdac91f78a76e7aaa88dba6a52444f42fe40673438e3b59d4cfbe1e59dbefa6d968bd490af90b0ab1876fbaad1f384f9078090fbb3f73bcbc49130bbbfbeff55a1c289042aa15fef1dddb4bcb386dee4237c4151280eafb53147bfaae80dea32d6a72c9442a3386d97588074cb5be8b6abca6108e2033a0e85550a8bf122c309ba95c467eab691b3d71cf131a6bd685edd222dcf7810d196d12357fa0dc0f76f98b60c33c033ca6a37ac3f74a546f72640dcddd29458141334439b20ddee5f4b8438edd63e2b60d1a84a3832e210087d05c5f82880d295b4efb2059959a12197174e364762a434ee0e04f1a7a4f616eebb861fd7f33faa1f06eb90077b39e4979b085f304282c9c627ddad3c34afe7a4cf31ff42f3ce3bcd2c1850967a0753aa0ecfbcb828b0e75de0d61a2cc912b9918372117021a5aa0505962bb0c41a1bba60c06fcf570f848ac95072f7751ae09232ba0e5744dcd620c40141039032ed43dc988cc52a8f540548ef7194960d048c6d180654504da400f5da6dc55f2a4569d6c2e88aade1290f96624ac91d9ca2674e61d4085d61d668a4e202e39982a53ef6a1d616b9452b0bcb07d4217ddbf17774d2337c5f95250f6efea221eaf2173e10fb0642ade28248267de43868a2d1446054e7f0ae9667e9f14ecfa1ceb76c7bec0d2a363c98c7d3f5bcdcc09453a48f5ffa707714a5e5f8580cc8a7fdb4a20527d7ab3625b5b0158ba32d92643cd57fc3158c24bb1100ebe240d968b148be24696468409115fe2fcb8b8d02368b18bd3024094aa022d243f2d6e742de1291802ae2f3e8297402c1702da16cf424b10fb0b89088cef0b268c12867819c6631013a1545b7a1efbc6ad9f1f5eddc1682894c06c0f6214814cc893b4c313d4ee85717df2842f10f4704e7f4de5e981cb51d7c4bda60f06d9126686787f91968c3d37ef237ad9a50f07f095167e6f75ec7b8ee6d83bc3f7adb83d2e4c7b56d226916cdae40a306ebfc41865920db9749770390e287908037be823293176d07d4670ee87c8f72254cbb114397bbedca355d07d6cc022670e1341b90811e4ae1b820865e17b742521c88c41b4587b965a518d4b9aa3b0c62a028042d65ffb81498b1b10951c5b197437ffd59b29d9a1688ea7f2529c4a4f4c0f1548af10e3e6fe096feed937e90d5286e891fe435e358e6f69bf114d8ae3912643596cdce2317641998c71d9e41c0bcb625cb398f911c5cd03a4efc8f1b0bde336f62844af4c74f403c7bf66a87e935bb5bdd5820b633a14b9cd210d02741500c0403e288257f14b25a0b79145d059cac6fe61889c7df0859766aa5c2ddebcd4be4444e1b6451b3da6bc5ad34a2e40599422bf8d6427b04728b2882016c4850889b1c44f7122002000280802404044be79b0460c84dd58db1992d1c07e5e2e5bce2ae13a3aecad1013362fc95859840993f3dc00f5e4450a86198626182d4dc7a9537da768c8f35a57363e345e546554232d1655e6a0475ff6251833260d190874863a6a1c306bdd42814c8b7909330ccc122c174ecb16251375274d37525f7035448330a2575e9605b34fa042fafe99750906cfc738c6ce2b9af9a051aea3a2ef02bd32be853131468d152361ccf38663a29327e3e978124f0753c8d4514079cc044d42d3c0249a2954481e9b80a6980982496288ecff5928a7df0308944d75f224b620a23a114d5ee84c1c61e2e48a920c3db0b90d93c9610f4d5d0e3cfacd6dc307014f8998db47f42b01650757d20495d803d5b6da5a44e409c50c04d19a5724b4fb7b6533e398a41bcd278c45f49fe03a7e3d0c054041100080253d6ea70b420350100a0650529fc3eb42d0001244741163ec94a11388314c05b0db020dd2086c10320083ee00195402d020e925867b77e666c924cad1776b42a58b854d43751f066fa2ea2c0d8945a510877d8cea5464a94fcb950863fe5d2dd83b53df3eab136710f7d615ac4d11b3b4dd4059065f61448d28e36a94e248ec6aa9de19db34bd6e08fe05b6c879e1869f6f1f64cb213f16cf74ce34d37706699cb934df480e6a8fb6231ecfbb54ae1cd74268089015d523bd42043db242041a5dee4db71e25f7445d964950eb79c50800209df1b00330546946495247e848024a819200b148ba562ccdd3eb0e72af153112e8af2a40dba40bd5b034945c05d05de8404ccab918d7212a4a9ca2311a2e5125eb99d920323345ee55109866d7238d55e085b05b1dd01547ec9724f5c337f4580099bc296fb60faceb4ff07298510d6398a6ef085cc2d7a6b422fe96802d5149a4c0698fad37d8cb9d7e8e75c707b354e361c0802dc48e15f95e2027539469c95d74b67d4343710b3d1135d41fd668b5d850d6104006634160f172484bd159b4941ddc8cd2b7830a11930a45264e47541f1c8a883dbc16252ddf119d2e48e2b42b2f66cfd226cb26ae706d061438db02ff84c02d11f40ad564c8198303a872acfbdca4fe6932241f7daf0bea3d2172c97f2b59b8008584fe19d65ff8cf4176b10aede660c637ea57be4d687734704ba4784e0cb919f2fde6235270796f0c610e5f08eb4663c2159bccf0e3ccb8ca131b976059113f646530dcc9dc91016b16e0b23011c8d2eb195cfc38e4da9aec8bfe959b1d200711fc3e38d55791204532e525794e9bfa9c956d293afda852bdfa068a5fd742a3f84ac7f83a1b0c896472929635ef2dc9a21802f84132586cccc30526c06142157094d5a5e93fa2d5757aa09588c17150cf92a6d601c6f9f4774dacb420c0320d4c11c992377d54343704fcfda5d32431374919198417a8b95ff60e1c46542c92763bd1bc4e3a59cc0fce745abd3a3ae2eef00cd94fbe20176254a4b272c6165ff988229ec2a50b6071e0408cf1422ea51ea57f01d1c8408ed81ed4949421959ccea89547e581f8b1e851b86c11437b147306ddb18db8bf0c61aede2a46e4867fa7f373618fdd2272c67a97777ea7e0fc709e0435b4008f77b52e69962216e99f80fb91b389d805e0572f28118f1eb08e5fa1f8d571e8734e5750c77f50ae1d2db3ba70f5578a45714c4991495c3ad0323070bb930ddd87bab964906c5ccd0508019f3c13d86f5b401cca14a0155a5b032024d4a5e718604fedc64c4fc09393510f2ac03b70372cc32d16c21d4a60cc222f9019f5c67d2bc0dbf688cfadc5f6b5c0b48399a8c515e3db50282d561de0d8d18260007c682936eff1ebfd1fb0401959316d34e21f540106eec7cf5662af1fe1248e5ea0b1552ae8dd99cd84d258917427a1df76e0d3957770c7fb63251d46a55db8fa292391bb06b615055037fb7db7fdeba171ed558b0f837d738c30c7c1c2d8193d5fd485f257f59ef629f6a71b502b1ed0959e060b81274f0a2c32706546a40908c4fc5fde40700ec10f94139e5d7595f09b40a7e6bc651ccc659784797795e0c5a0d50345038dd7bb3e0e5832d47f52b7108cfee309e190c8b62784e284f9e8c2324a18902ef4741554520768a6902e4e0dfa1f273c004a227f1c246ffa93638937fdb879169b8f236dfa9547419bfeb1d0f242f18c09e171576d9efa2d360bb3fe564de3e4756aa991fa9b475c076901013830f16fbdfbb3044c3850f7fd286807b8c0b41e6bf44ede3b00fb3d5cd1c4ffc85f75c45fa75d64e1c4276677a25a1aa1c77d9742c55eb92a20d2c1e57e952f5e945603661bb14a8d6ed9bbcff29e8c1a0136684c19968d3f487ee8b9cf2a1405feb2dd95c0e57c7d9bd9b19f5e8d6e224768aa38f5902ddacabafdcfee25d6bc116de40d27c558ed611263a20ba9094b0b37487ee9fba3943aa26df341eac2574c14bd7ae300266a92135ca122dcc54363e422e98d7a15d48b155230fe8abc7505560d1f1132e9e015b29128d646af8210ba7e38c505f39b063038cd361857f1fd5db0b97b0e3ba69d7e0f729a4bec38ca7a15cf771364193602a753c43bc22ba9ffd21fb4942e048fad035e3e6795b8413f10a0b4b6310beb896b162194ec349691092300430046008c00c01f6c2ea0aecf79822b54ae96446de461b1125ba2f2f1b066c4d9deeff462f0d508955c5676186fadc63abaae289b7cec9b6e76d088a59c53cc56728d3b634223d84348c69002a20d388ac405a55416c44cdc9af6db477d4116930f8bba99874a8b9b41f2e8dedfa0be32fadc8813add96f6b1681d5a3a486715cb88f4f3712f6ade9c0854422b382ffac6d237fd32c5b3c0b4d95c57d2bcc406c7c912c1064d3192368b8bd03a5ccdd23721f011ce2d26318836ee4b66a92147890cf1a33d61f0e1d1640ec8399dc9f2ffdfb820a5ca6845044a9ac51366475175372d69b3a0c3d051619b136795ce882d1c5fda1546250208d3afd723d902b4051b388fb30292c44641510aaa815306664fb381c256d90963277dc02d115ec2e2db66d3c779c4929402ea22c1572efcaf3e9970a5789a33a0a99cf5036067622ec3036ae71276765bd3c789ff72d6cee5f4359ec5745c07908758981fed86ee7f7df5e3af96c25e3dabf756b02a86973580e2474df0410b715d7c79438ce7142d00955e917cba70079944a929684855b200640757a70423aeb6ee89fa20fd9259de14230c25d479b2b35bf807ded2b77c3b49f54a79d1c162e3a9923340b706d69e8eae8094189c8572c38e940e609f43e6040a6354b70895703e9f25fc289a32f4be1d15c7e6c8e00da16821b9d12e09745772b1f42479c8965605e2d47be90f74249da5403f6d623a17ebfb082e7af52a4c1dcd9b94378eb2fcdcea628a96bd7618bd40edfc87371ae257ab8a50fa8a20ba20bd62720fe3df4b68de28a5b6502778abf0162ae22f1a1070f17d4e4ccbc5574913dbcff7ec4f30c1980d65ba5f52ed8998c5cc2dc9341d2a8cce3b6aa79f46cbd9c08aa80e1e6c91900f88b5d4712b74768a7e0203d479f1925195875d1c58e80b2b3b2fd225bf5d1fc05b5b07856259ca41c7fe0500b21c747b1f5690102a09c31fb3403349321770a885717371a96a8393793ccd5da6b34ebe8463cf5664bdcdba8e7f966ebf345bd42282d862184fd6e52747a17c41c610e6717c7d0b4255a411f309da0107a22400133e6009dd5a79d7c54edf1b2a2b8cf3b8e27e451fcef745b8d371f51fd665a65551a12ef8c6fa357d2669a8b09561e00299d2a916f23a7d82cd5e24026d5c10f47420ef7a05a31da78d8203baa7489cb3578831650d6dcd2fd5a0d99a6adc4bc52b4fd136c56cce97361175788499c01bae03723e8f02c654e2bf3eb621d3145b68b94b8fad8be24ef304415ecacc3dc1087b0c9b4b3e103925f0c43a9e3ea6cf3c7e7211560bd1bdb058845b9f20215af041c8397e2895fb8b4c3922385be94cdeec10e025f4a66f717bea0d144eb7858fbac4a42f62a6b34c10b126a306918f18e7079fc614399bc56690c8b01784c5ce0632cf8a3a3d360566220b5451d3538b4f4644bca883795ca137404d7b08435c48e4946e5576bb3817f2d029946b3990702477a4acde1040708bd662d4637882faa2ef601d8ce306b4b875fec4704ebd798f82992e58678686474f8df9d693acff58e41c298d8f04ceabe61d55f7468a12d355e5e8366445568317633dd2c1bf27866bfc87855e74b749855f92e3324635cbc1dc3ecff8ad952f668248143becf90b02cb362e02c97793630f0cb450bac099976f1159c03a9c4712adc05168fd8ab7185050743bec6308dbac376e6091572e909d5c67ceca03c6b34fff6e67c36803c3f528412f94fbb1a7b32ce57f99dc9c596b54434904d9b62f57a497cad5d5a03066ad9f5cb2c628b1d151c0584f68ce3f09599170bd67b30f496c3314ab729b5615a530a3d9725e6fa3cc9418afbcb9f50884fa692c666956fac088571f21fbafad450ec2b2c5365c96709bb7cd008148d7bdc066e227f1155cf28c94001010e286682d89d815058240ccb4278600b799cf294a9d25fd8b7e39f68e9800c71fd6e1f85fa2f1cc43598333c202d5490120f0b614f05abe75fcf1fc188a1cf67fdbb21d6236268d2c161180efb6c4693e945884181f9e98d9ca8e074e6321a39509510a86240b62985397af01dd6758625999040b1da87c23d1c153e6ab9c5e452c9b7687a7aeaeae5a702dd946534b5088b83f09fde0490a5f26f6d63d2ecb38c25adb80cd8c0852db9a296ca0828f257dc0dae3366c37140d87ad9cba84ee0c32e6486feea59d367f0339a1d51436b7c9ec0b9e811196f6ed4dd256b9c1d46a3dcd187ab4d269a026529838b21559ae99a16b543d575e8d23ac53c12840b4afe64a04b6d34faa9c196e8086bd2aa0a9808c0e986bc69f9fc7f05ca05d5f2ddc1f8e48e91fe43a4ed4fddabef7b173e2eff45350ff93fa01d39b68a938637dca53e555bc20f4a446b414f7c1900c9b608f6779ef6bb406f921e60774e4798268dc8102ad5bd13f33e3723e5d03915231898b4062966d50edc7e64963eaf1345ea7a497cf0f22f2c6346791a85528a7d347509aaf0d7953441f3ddb25f85975ba76f3ef14dd8115ae48a1db910e82664a972513c7f494808dfebbdeaabaaff15e89c9ec58f91309e6bc0a4bfeddc53289dc39262ea526855a605d9c9be1466c976d9cd65f2b77420262916497539a1471da9d0a43dd2fbd6e8e4b3b72453f3ce2ca8ed1d380e5f0b4ca2c24d4a3a9da0c7e7f8a0c7c63231497361edda7ed48d09d9ee76b502693d8f8ef2dc09843126721e280222cccd43d27aa4267c0a118942e325903000b7e0c0d4248d4e505fc218402e7967f21ba7db570fe489e391d35f9d34348983709335d7999d2a8ef40224a45338e9a4d5fe1108d4edc7db88118ec1aa6b18247115b49f482978b11520464207199c499b4cc18da4e7291d49b72ad3bea784bb67f31f20562734be98d4ca09d9404a34f87e0cfaacea15135673ff1c9ed58846430070e7f46a86b12ca16cccfe8a4c033b8820510e3e0840ebf7f79ac275da787b1247fe283e40b5c5a5169a6d2aee74626118e6be52e5fadf1ca25ea0582cbc6c84644c6e35424f6b31f737a10a96fd280626645bcea4dc7a226a79c0f6fcb12104a4a348c359297c1e091b21b340508b51f6661813d1fe4738699264f54af010e03d0eb337b68a800aa1fb52e514355ecd7925f5dacaeeba72faf6c06d39096cc533b8490eab9168fe1b7bf8e8f8644b80d3e44da512cca4259a4b4037e7daf918553e201d6e7ff6a4d53073849b582c9fe8f8421ffd42b6b8a76de4469e2db8c331c97912162e77396aba8c77c7ec4e0e3809414d2ebbbb62fc9ec0d1cd382903e3193b7e80a3fbfdc4c222aa70d51b9cdd84caa137c32fefa6d577312bdd6b52bbbe5c9cb67a025d7ec59d23d4dfcaeb684f1fe36afd558a8c99c75f689c26f72f4f1767276a8cb3e80c4e842d3695427590574a946508d75ae7e6e4b2d1ab94945934ac6fdf2410faf68f41d9cf5cd930b3a71fc38f5036b6116f8aad3267363e957367c9c168b86c4434b5a8dc5699fa8864d02636dbce56eaf669e46f97527561d5481bcf45c5d6d0b1478d028f8d8d6051fe49e1e69ee245fe47e250c43cc607a1656e38857ad8c34aa896e208e95add57a12ababee3314c7fd817c06e7639a423c265b16d502aa4b149bf28409383d7c21abc0fa554c6a3e84f4a3e6de0ee50139aa2ee2df74827e03c82127b23b37206a7706f67caaf1a55316fd0518d80f608bb7aa6fefe73458a804e4fd07335d13d2162e5dc1ccce7859fa833bfe8b3a2434185c818f4e2804105b870d14706fc9a11cdffb2a5d070f1fbdbaf1aae19bdf53204ac9cdf649dfb6680be6aff7c15a9728b9c920440c144a0e0b5908c25ed9b4d3e8f5646da75a939fc9790969a629cc1bcf03c2220c353572c73b6caf6fc64b5915c56b5bc8643d96ef0a5067d80ecae01d75a0f82181a9468f12036b0b96c28062bb850428c19331da20d6d701f3f6322e003afc5eced5e5c560a58a6c486c71de1e5a10e9228f57448d86397bf61caeceafafc47763bcad05d72bfb5f29672aa949fa4ea965e84ff8626b9c03f4d022f70cbedafb22f0fcc4e2c8d5be5b2acd0f04f81008601db1f34b300171919f55396f195bd2f4cbbbbcbecf7427ec934d0edf8caa224241be96c56894c6d2daa679cbe12f717b53da634d76019bd3a6bbbe548aa95283de1c0d291bdae4d327989f3647a35ab760b082a2b11d77b7971642f86bd2b99433b1b0323fcf2011ad1b66558ecc0c280ab8832fe32541aaf688c25d5852f8c144703bb6dfce83bd78e9fe5bb8038aeb03ebc9513d7c4cf7018d838b4f69616021c2f8c094e0a3be21e6f1707d3ae00a0ba5b6fd23b0b2d0f04bba2a37fc32a2ca30675534aee32a444c58e944a68393ccfe424a1cbe55873d2fe7b80c49d1ae689a1ce5322f5a91078c37757b4612ee24b5bf3abee2e97bd0e3ccda79dd327439e00ad482f3ae5e88da33313cf3f6e58ef2ee825fa65404630f9c82ec703d66fc5807ab3acd283a5f73e8c8c38bc453a6736219f8c4b40c09ef1bd74f8b35427531e1d908086d3b0eaf7d8fffcdf7db918be3afd0b9ade8a6dd7f77c3f651ef25fd62320604cc5c952bbdc6698f7c9947f43929e9e3d369db9214b6a8707b5d683e7c88025b94260695a9ef54ff609b24e1a073cea232dd7f1a6c4640d8a2812a73b87bdc8abb08313ce62bad4fddd64c76d6147551b47dbaa17a6970433cd36a3252d7061349372dffbbecf88b969ae8159f5974f706f3f511de7f5aee8d2fa22a8584b6fa3f6e7691ccb0774f21f7d4c767e65e4369af153e9a83c0fc98c5df22b1b95e0922a46fe60537dada4c5e7479aa938a3a4dbf9ed9c4a585655224e609f39174b4b7f894355ab2985a75f08558981e428fb45c10d7ecfafab65fb2e1988f1d83c652a800d20e05e24cb5b4aeddcbb83ece3a2c34dad9d0b2ed7e751a36e19087116f843f2829cbe3fe51e48d2651e4acc1c0ee18dfcd188a1c4034aafbabbfaa676f7e8beebc0ee1fab9154a6968df11650bad976640554d0a70207641075609c6101649a03a86aa625fa85852206004f4f1782204cdaacbfdde6a69f106be0995fb57bc2a2621924660aba760c3ea80a7de411a560f11751a666e914bc793a8bc280d4114fcde17711fc6aa8efb8a9cc182821ab3914280532f9fac638716055b713f720aff52f4e1fa7b2e889d3907b572c12695f1937dcbde322090e4ef78bfeb5fb1917879ed7c111c51d199520bd39e9452c8e08b8b231c8ed51530d23a8ee5eb68a5e2f07673158852b65e609d59b2aaf38d6c8fdc3b55971cbf7a2127de441eeab65f79faae20edcaf857a24961298bd34b1dcf194bd91fc1fb6aa18bc6d585d5f753d713893f5afa9836c9a452aa50d109f74c4deeb14ee0ef5497d9893926bcb90c8df0a5bf9198c791998aa26ef7bba18dd07cc46a761830747b3f84e92d1392a7a789288ef46ac5bbc8309be118dd1c2ad73cfffebe50fc0ff7b4f8ea5b6498769f90681a5e29da6d8f364f7ab758b20104c1450f7bb9b6016150cd463df7fe7798b9d2d8cf7a3f1430f0c18cba919cad11d0d76ff8a8061bc1407da618a6f3635758ab44df102444507438ad3696cab38393dd4627102611ea70b369bdae9f646384ac26147c016334eafeed7507cb5fb9107fbb8c7d05028094e43fe9b5c075206691f1a362a408326f624126a8e09163342087fc3899a33557fdf9acb6e03e70c750d2cfe33dc1a208b7f4bf25878722981e6eb1de70360508e614d18fc5528a6f62e895f4c888fcd7621675b7e25c16a7e0536ee742d56236bc6d16e9c88c66476ab9131cbd6fe95ebd4c040338549041500a77742cc480e783f1d932a5a341597f9cdb2e0e017464d224052d47f5251e9db0650ab8e49a6c903bebe48458ead156fb016d176bf957f2d7d1d84836f882fb474dd6bd520e4609a4ca432eaf52008be910007b65517a4bb8a24f5c14fb261cb3dd87a4d4e41f02d78667d09843dca73e6574d517c8bd77b310aebfac5a8ed0429b754ad98ef9779226c58473ebd60538ffd5a68209d45f87af8beb1e706d3d2068d04ee8288eea95f1a5bd8d7a3241417c8786cb14bb1c4035e34de51af7b7968b20e0954712169dbe6ca262aab710d23e9745fdda96eb9750dd3b85bf9d175694e439b671c3039f5aae69ad9ef219f07161a93b902021bf8effe4ad7add4dfc73d0b02fc8cb3b825e967286fa0b58144d6a13686d015241461655290fe465a8e78777537fe14653e3205c870e924962946b923c314c7d3d92ecd6e141f9b98b3745821ff9c5d5003c245665b47e784f3ac97ec9492a0f7a9c66eabb972c6a5e1f01af1986925185863803e0fc8e4b5212c5ef92a487042e7c86b655893edb20b22cedc35e4ab2c68b7abb607c1eb3436874b1f95322c00a87ec7d24d5ab25afc3f8a7999a040639a4d17a85a1996a0c807f4913b385b08103fff55eb01ea5ab0273a5e7eb8f057d0d0f397c5fd43e7e7b5f9de243d7a7a2b2b4be9164685b45cb5047e8a5a4707e7889e3456c79001af6fabf803234d5542613e979987b1f1b1e9b4f1bd0e7cdfe952d87b03cc70dc472c0116dc1dafb72fd0ab4e4a57ef79d29f6520f3c5e013d1ce4536a9d505cf57a2666f60939e7c35540a0563b144f35ed005b3d35caa6e79513e44deb921f6850ba60c4a8afe664fed5b4799cc1293f05176461c02e56550da8a27e542b99bfda1a8e83b8ae52cf32a5d595a6ddbdfe9c6bf8abb0d676798fa22b1182c16c2a4f40a35ad48ba47693f1d47e11544dd83c7473f7b8e106d5b44ec32f5ad8707c34740e498772902388263ebb43dbd0b48c0f1216d79397a2370b550ade08992944a9c357366920711e7afa7a9fc0d081c9b1d1e3d9b16fef1232be06bc502d840e338db212521c60c1ede2137fa2679ef6c8e94a22723edc0b113b20813a4269c1f98777b7f5432a5e9fbf98a36f4951d2744f53293343b9684aab644db15ee7769a11eeebbbd7b9402f151695b88275f347ef9e7f4819e7d0a0b956296529f8d9743220e95c498fcc4296a052fae1bf529f9be596eda1aca494c679d120a3ea5680fa27c6c9c2489432a2a0370a3a9f39921f429c56aff32c8df9214c93ca39aa2b1c6ea2f4e18f9bcebc315f83b0162efeec6097e6c1c5822e7230f18067f48851d4a9b1c3aa56bf6ee2bde3c66e7986b4f34e3c70cf82630eda6172c15ec69442a80b818734ea410d5035e9e0675ce686f7e81ba7d332abb3451078b820590dbcd6c1b6086e0d5d17b9f7c2b794dbee80a3e7076b2f766b8368c767373aa6d79c6aa547b12586ea2f41bb8f045dfa18169a275756a02d16cf5bf05c7f63f359020c5caec0fa99fc6e5e887b92abb4e5804c8a9af457de417441eeb7daa7eb492e8a3c11e7a6668d3e9fa85b52844ccd750ebfdb08ea976d7db3449f7147bc1942e26d34264e4fb369aeaa6ef8e1bd8fb15bfb35898fa479aff60c48e65377ce85a8dba08c45c7f764114f004dd064a545d146a142607de2c6def5757f9289616bbe97de5758ec4dee750dd05241026296d9f8aa7af389d2b7ee83d5ad3234c5aec53900391e61b5acc6986cc5b50e13ea992e7bb6cf8b164fa68bcd0030283a84642468c172f2cf88a5c31c4f91fc7cc68cdf222d855f3c4dd42cc63e01a3956cc6e0af9db918bae2c9a7d46e906d0bcb98f3818b688b04e9a78e71c72a430d2611a4500bf506fe296e50cf661f2abd11a707fec2e865f85c88a34f74ad9135c517a0c5c8e83812234f1f435a078ff35a023304a492e8f4b1f863087eb4b000e68b4c14f044e28c09879fca50296bd7ce4424208bdbc4581bd1792a16d8058856f34f045f853c2e427f23984d734a555cfa2ce3eee83b74ea9611d8b1ffe85b450220e650b46c8dc2e67a51e65483f8dcbd1c3c549934a5371cd578d4c2a803e45cc44016b543b745659e568e158554b4cd7a409b1e88d2002e0a0b7c0a57b463e10800477d088e86aa6c082319b2bd9f850a32ccfac29ccc5a8b516db5ae7affda54d1ec6ec6b7e06083c9ef8e82193ad59d7523d3e6905022ecf84802c95e4082a623a39a52554c1c078a2e9329eac51519f33c7d48687db1100fe043dc464eedbae538d15f75241f6f80047d4aa0ebbddca4872896f69e20bab938ad733c0b83a3830753c1d5cf121bf724ef92f7ebec16f9ab43941ddfa19cb5ccb3527312aa5365abc694c9ac487d91d36de1f73a45f546375aaacf25f70875ec3f3955834e677133cc9299ff84abe8717f91ee855ce0dd01117f0cf033c970958b123a073af67e676b677200d4cd56be5e2277c80528609d0dc7f1c1b0eba358238528af78bdaf1f8c1dff82ecca817019ae372dbeca9469a6b18458f6410a30932171e3f23bf44a171404aac3737fc0877d8a129af388da4478ecdc10667d0835a3c253459511900e10d003138aacf47cfabe40910caf3f7ffb1ca34810d1ce52c6b4da11956234fb1931ba7f0ec07166a1fd7c9ddd48d92997f249e3400fb84755dc2cf00733bbada94143e761a4afb83885e6bc0557a715f21ac9cbd91d41c035ee8ab7487b98808fc059d4452a209328c280f81076916bded31cd0d12c0f7c7c41d6fa622f4b98ffc7ec702071ef873d5e21dd5cd5a6abfa41b5650b943f206575b986236229c19416330e7466900754664922285981882727b3798a902ef922f902e331a858dfce94951abb884dcd2b06c1c89e99dba1a5c0381db4651df7635f7081e33d0faf22ba3480bd3ecbeda08bbda2e65795fbe222f656719d18a1231fbe71673dbaa7d0392e5c6eab7519732fc3762fb80c6626281bfcd580ca0996c62d927bf4eb9f2ab39cd969a356751d67d687a9694c7f46b28d4856e7dabe929a224fa5932818384e14a9bac29a5b78e31718feb023c871f2891e9ec2d3da0982eb22d70a1f1043e23ca13768b3114be8562c79f492c8f11f7aec6aaba1d3d893d27189cf2b5691f5303b3d2bd26549d6850eaa473b6d84587dd48fea02e09cfa9225a13cd90f79230d6744813ff2951bf9e20ba9d52f10a19956105a35bcd41afea5325526526e268bc5f7fcfa68a0bae222af12df5a3bdc3aba9c93be0b88df494919c0039ab2c5ec91805ae7616823a6cd76d1bf2a23f56f2f1afe58542970f9778680481e8e84a961eff64f06517d24786802f025508ebc82967942c5bb13734d997ad99fe775c62d0e7073f15083cf724ca29aad65901b03527a91e68ab5007e27ee488b34b81b908073731b23420c29741381a62c47e0440d4ab4024e1c8f2d3a6592c75afacf057313f3744b9dd3c913880900dd9e80e4053f78e3f42e0a34411115fac732d0c14d1a445475558f0ac7253081eaf44a6ac572e5348ec4bd9167b39491d7ac55d94debc6931a8be5c795ecb8de996d27af6a13952c03a1a9841816d15fa9a7a585a52598c64f1ccf696bfd8d40a91b8c0b17eeea600aa6f92592981490361f691bbc5ad192bbe9236975602aa02374c146c564f23986a16b7691a8a5839ac32735251e8441cc44f1962d56200ec6dc343408d6c0862877fbb720584a34acb8c5678a71d9ffe9354d2331006716891e0c2d64f77914011764163c876857f001398e8abcc0c3d26a8358f062f75cfe39d4df0713dc1593c7e148af17d5a3f417cf27aaacb4cf1c8c0ff29f68166639849a27091b558bf1ec50868a088c6179df42a867e12c43123f0594c20722842020d915ac7bd10d2cda81881964bb8782d24e78922ed1567166e3bbac5d36934774c1813ef4c45f2e9eac58ef6406274eb344a1c65df893e923261dc5a55ad7d7a8363acbaf688a545251aa7b151d943ac789163013b0832234b006b8f43e99b0b19c04d2a2841705afa4c1ab06c15ff5889499eee12f1790cec0e270a91ef8fdd18a1efddb8c58f79b11beea2698103651884b546c4e1eb391607340a5485eafac498042db0d4d5ec47741395e781bec1b4fa67d61b7d5b9bdd2301e304ba01adfcece3bd4439c4402e81c43a0261464529f8dc65343c8e1199f22836159b8ffbc01f70d7d428291d19638d2902f91a29263c303e49d930cd055826673949453c05a811d818b17547b4c893d09d86fb69e8f6a5a3e5c8edd038b6ab6d7adcafd15a54bab8d4062402b4e8c7f1b6b0446006bed53f9d7bc4e8a7e4b42fbb4fe53b9e654a3256ca1e1a1969f40b8136841572f6217e3ab689c7d29a0e41e1da10aa8e6fc56db29c6635f7e68331757ca3bf11e1f50682034daabc820cd40c6d87542e40e37075462d948a25229760de36009a06b4d1410b2ffab1d72018dce269635375b005c3949b14fc1f26f97de416a45f5a6f90b3d723c33a665cc795e4396dc68d4c39bf5fd61af61ead44d234ff051eace3d7017a233aa7fb4578700b77114479c5fc4c9e70da10bd59f84f60ac4d3d1b2d23b9bb1b1813b93b5758b4419f25e90abf8607d725847eaf563cb418cf912f15687e139c0828d6489b82f81e5202ffb537b8a3dfe71adb724f27ce628191b0c13d6da81483ad0cb370db31855b06f8834b66351520dafb4da206103d6afcccf9b13c26a5bf9adf6e00fdb003cea43dc06f2c016cbc9fb7eb67a658faa7806dc541e6ffe52edd35f39aaac0b64a4cfad5dc5f20c6a7009e386e92d33afd96ebf73c3ed3bd9d2cc07d3f7cadcde6c6b6723cd814220f4e3f35ad01ad5d07d919a464afbc8c2ccc6907921a7aec4e7dc8d74fbad224495777073b2b9e50a399afd677747ab023cacef1cc400b30bf0e32b3f9bd1a70cdf2670fb0c91bd4eaec76312e47020a91248d675a917dd7470949a5c3a4fc1f8247632c6c36289b10b6953311f07c385b3b7828c86cd016c94608b55565114ab57833da44c1d99f92a08b4460f14a6dc26bd4a810ab5e281f79c760c262412ac7fdfc813286ff55a593c05388b7e36f49d8285e462eb9f6b646733a1f6e3b6089aef7d9335369db7042a7a49d31833ecdfb4cdfdfd46e9d13fecda4478931414a7af40cdd856a7f0499f38165298fe68115142185f658822c0e6369b81e4653dd6b65bcb717029a8310a9b0cb47ee7bf60da62d98402670bddfc078c38644ba8e520439d00600e4417c68fafafb1e7b1dfe098f3ddf9782e101919c29db06f37167e749c494f41c50a0e6e481de33802197000069e0038c7465de9bac0309d3624577b83ecfae7ce8d62529881d2d99054982acacec5f266fa5f3f526d5e02df08aded539ee9601efc229cbd62505c9042034e452d1230fb291a40d613fdac16fe78c28e8b329db9456a2741bf155b2b557d546bfd2fdf60e1cd189429cff4969d7476f2f86750556acb60f7f5e16005c5f7cd9cf320d422b2010e40d034d30cb312519fb982e71c83509251e0bead36ffd4f99ffd37fbb316fb335e73d91117e3a33d6336f3c5cdd40289293f3da0df1bb8d5b7d21895a52e8c6e7f73c80341927282623df029af91c0655c8617112b9111409802b569a2eccbe065b1a3e7e0db88f6c854dcf862a1944d4180bd70c027e9b4c30426804083aff087608d7fed6f01a852bad05aa17b6ad309cc7e209b96cb2bf7a1f4312286d86fb4fce43bdb1c309774cf9608987159790bf023a260482048b28c227ba5e4a8daf8ee19e445414b192d9b2a84173e8e66f3191b14ac437c0ad666e8d269b765d90d766e15a9b15c740907ec4bc47cb50bc3cff9473f2b6bc925a0ad01bd19bc630489d1ed1e6341275222b048e943817a73d1aff40dac809f575e91199b66b48c887fa43720c485c1a327b57cb0ba88bef72e82b436f614ea26bffa5f0de0149987b25f6291c4cffaed04caef3ef53786c773c8f45797ce470307339cab550c656fd4ced3fcf123ea84fbedce6876d8052f8d22da43bbebed1eb87a3791b7b1227dc32cda01b757aec2cfb9013e240e903148fa8b47d2053b9d987b781dc01056e902b9537bef329781cdc7ed761cc3f543dcbf991731b82a7f8daceff92da116b9b8d9deb7ced051ef74f6a62c9bf9a845e8b2bb20e594c5ba5435a7327945cb4737151b507d3c61efb886c29170d055e6f7c71aa27e264f2c1f0031415474afad116665bc518eefb617dbc73d3dcc22f46b0e449b0ed7c9c52b1c3ed7e5cfcf43401b05f1e6ee8388b844ceca394f205fa966369d8d690e716dd5c05e0ad1b113bc3ff1f480279b3243b8d7c2fc17fc3ca9a8ab75e2055649d859d4da20e1d90c40c92ebe7ce3a2deef3d1364a0221b71e02c7a4cb725974476fd1e05a885796e73184a1b9d2c189386cfb3a415ec9b51eda35ef451a61b51f23efce3edde658c8ca6a10cdd7a27b12d5e8a337ab297223b201a8ef360baa51b17ad19b1297175cf1e826ba90d68b9476cf96bca6e21e8d799f552fadf510640c9385b88767993c6eb0e597bd034f718fbd87885079990eb53faacb42a415fcdcf116d3758c5ed9b90ffcf53d703011f1b0e23e521a42547b18ca21ad560de2ba563c84fddda1d08c0e31f65eab32e23de443bd9567cbbd86ed034d9a24321858924c640f544e8012f199aa00db9fc8fe6aca9c41266e45a5547ee7242b3e661ca54be8b4c5006927a993e4d598cda25b9b7f1c8e31b3e4097b2b77a5c85215b70526ddbadca4ab502886ea5f2bfad6a5ab18fba7f3b496a2bd20645e2b5d01409c82a4a1b819609ea141f7e89e9e91464c75eff3332a306c055dca2241c967acb19a21213bf5f27ff5c927d18558395155f1292bbefa5123fdeb1d9be9da02e30c71469146ffc202b0427efcc7be12d4cb858d8b8bb860455981ffcd5d52af0a38e84958bb30077c329a3a4a576cc84e8ab2787a2411c3b37d0702c0c73af6df76c7840a3ae24a3789a5048fdb77c2a75f42b4c91b38db702d5a5a2321338fd0914dae2c6b4dc04455a20ae9f496b46e3d33efcb3d0df27bf68c897bcbbeca083f43c5203d7752cb94bf98328f2a79ae2f9f04bb384d89ae1dcdc763d5ea0e3026e75d3171ac561909cf5cf6ae7ea214c08bc932e993bb378f3bb85126a7515bc144cfc845b844d74d10d0238d26269d433129ae1fbfad8107cc17e40ad9222a565d5f160b4d918fc2e55413a1e9105e4757533bac857b14679ba58dd76ef8ac543ea1920bdfb51a6d9a73a1fecd8ae55dc5cdf964b6af10850717c79bc998f40f2abd9d3d6b7ab9e85b728474557619ccfca58676487a359a5107f37b3c0f09a16509149366a07875c55887f1381e9f94a06405144b6724de74654083f95c9e879450e4242aa337221e60b35a5e80acc6416148671b530906802da786d4023c19996bb7303c7b2fb766186e4237d260be93e07ceb4e7900be7c2a37ed05955254d0856570336a0c648a04b6a6a44cc1528f940a84de6c5cc1dcdae5d697db61ed00f40b1296fff5e086545a96801f59773ba3fc150e3886320a09d440217c20998810576fbf2dfb0ff48e2407566281823f2083cca5f03d7dfd618937f50f5934f99b798a7d7708e0fbf4279b918c6482bc429005f11a024aa7125e79d1c9f55356b53441b35950f022cb179cc07c0c834321a44d20e3126c857a93aea8cc2b2288076521869194ee0e0c4fb0b633d88e43096f1801cc236a24151a01fec83e1ae896cabf78033facc57483809efee8c0b096d77cf4b04e552070490388f55656fbacfa4cdbb75a741f8b06508857daeab77feda33896899d2cb34949682c468d176022613ac62e5fdd26a8a02c44b420a44e3604bbac52944f1f83c3e4e0c73e4506f5de0bef737f9678035357f01f26792792acf84088bf0d51e88e61ab3982677d5223a4abb8796a29fd717658654916fa6d386a063c6df97ee6d455dd39c098db62194a91d0c9a8e707b15e8f1ffa10300214c4bc9ee967b73a6a561ecbeb53ab9c474fafd39f6201b7d3ddc995136aa5b99a1e1cadfc2851a07dc2f8187702083ef1186c293b140717f05361ea177e1f69c578e906a4718070c5adfafa57923b0e40f28265714b68ad74f63d480fa42cfa121f7f8bb39725af184fd0ad89d275fd44f518bca9174e0359a663891054e94b80bd31c710fd18182f71ea9778be0aadd8baf438ef0c11234617ff99bb22d3e0b5fcecab642cd6354d24ac36b8f6d6816a4c331d7cd00d20a932c5344746a24970e6c1a5545dd0819f5154b2ffaabf04ddd63f90b463a07d6f71f2dc9602ee13e8911aec40ab1e267affe0f2c42560a42eecf2466217b2d720d8f2b8763e4ae84dda4e7d4987a01f41639ff54ca33a14d29e2f17618df90ce40681cb8926e35fb47e0508f9fc07bbb86d8f17a373d03617f5def6b4c3bbaf084cd0eae165d1d60cf0799b5a826ec74ebcb71728f37f8f7d5ccd4fcff8256d3d8377b34b0c3031182ba573b40d911bc62cc456f99417d1323e0ef564c26d0f57389d366df79626eb3e9aeef746fb546ee8bf08941aebeb794c1f77eb80fc1f637768d746b76205c622576839db3f02dde1319bfe5b38a95df48aa819c1fa0edc268f4385e6489f39f38af07d60cf9d6e013511950972e3a10a5997912c38cb404b04405d9b54eee1b8cc4369122462bad92509d99cd8dc521a964e70d76fe062abbb7ddf005151a2ca26dabcf001d03a5495965ebe4eef0b3509c9e67615fb42110033f725df616820d0412b7014845aad6d45658ebfbb715b96568bf5b0d946fe3b0985d91ee2484aeafa2cd53a6911629096d067ecc110dac9ce00bbba46df520738c5e87bfd5655ade01dc666c6a3473c819ce501982a9e922f0c10f322d0bfca031fa989ace703f421f04fbbc5c8d677bd52d13b32b6a9dda9d18d01d58272eaf173e1a8645ed5c49afd53ce0bbe4d9fae670c610cb25166c1a2998dc59aefc3e0c7eae7f2f8c1ca2202cab5664e7d693da03b7de7560b06648771b49de3c19eb07f758ad417461f346b0c1e72f9ce032ca281e94f9ae9a36e6b54a8fb3112f0a99162f882efcc406896e1d5051b59ac2941d3341a2c5bc9e206c275083aacd0154c56b0c06aa935332eff3587bd6103a58227aa6e28c22098063dc838122ec56eadb121b21f9ea6cf3afd37eb290ed1b279904fc0b35120a0c782441f7c0ad0d2d8b695d08261c86e661677085e1660f8989977ad91e0f738976a394622cef966a461826d2b32482a52cb6a01136e75f2f6b42d28ed1b7d4d6c7f8be226b22a27fdab0c6143ef67dd254538ab39d7c4bd83e16f1e8a49d07f15f3f63318257fc06da3f2f918c79b6bbcc51ac61603cad842ffec7188ec5a014a2e392e2aea448fbd9a84c80039f1600175142cd6b2375a39ed4975cf553bdf56567dcb4ff0351c9cd01f570e6efe58264fc311092fb43f0ca33d18065d6492c263a218314e36949b0d30f01c4fd37878fa49be3027868ae845ad4ac05ee2dc2c936041110247f7b4580e5cfcf64d872fd56429ed2742e34ae7d8fd400f5d323bd0178a507472a8f54b53543fe2a476105361081888d62804a18a5d9d96b081176941827d7db4556959bd00e6661ae38fbd737a717a2e88ae29cbb04d70db6feb33ec5880a611e14a3407eb3d5c90a398a0520a5012739e6aff9d5389f2caa34a30a957553f58bf14f5c9f4c513904f9fe89550fd241d4efa9538aedd993ea823660c7f2673d1000d00082b2e894c319c2ac5a142bc56d4812c89a1130b6f9c8e3429b0c5f739f325f8a0d9d6853b04ae955723f416e0bb2b01bc8312a720cd4468dbcc813ccb5580010fffb04206fbfd966f641ff0943ad9430fa8aac3e95faddecf26ea2727105fe36adedcdf00022acf32a6384b26bfbeeb2386befa00fb54c62b54e86aa7f62c314031e4f279c5e140045bd070f9780dc9fc25c0d22a97d6643f84e779c49d64c2f0f61f0390a5849f795fffecdb98e43361758e02a644e25f7c4b54c39367e055ed95a040d4ef410eb9013f2b7536a3ddfd0a25fd5c9464115c4ca6fd4f587abc1a1a55b1424b509722a47d771ff498e3854b4b13b1fc9ae0105f89924f6b2987f7d1a400328992ada6eb0bb8eb7b8f7ba60febf0777af018c70878ca78b220b5e362442585bb8d5dd57e886209c47512e702e56f107e7da09c3c2104ce8b2f86efd681c2477089a3e11066e83665b83f267db57f55a952a527178f4e1549d2e0cbe1e30d17948b3b2d29cd570e39d64ad013472e6333c1c70a3df921f68121a6e4769a503c1f28cd37c565df95fc463d4d4e5aba0ccb0697993be0f100469ab7bef95edae00d888e5c14935b6e50d7bb27819d3e468bca107672f9ac9d1ab233eac3538f3c06a648a5f6dec9e084c495f5994b9be44500abc9dc2607e20cbac1ccfaaea2e63261f697fd91a53717d614e9c1983e7cc61176ce2b45833646d16c5c9ab27ae7c10ede6838bca47879d6b74a16f20203cbd562a17dfae41be4f2c3dd0bea0956a195b9f12d6c51d90ae26701e51d5dd562e6fe2e6abfa15f51e49c8fb6c07fa38bbe5b37ea068099f067dc4419dcfea9d1aaa9490141e058dedb231f7be4b8f9e437c8bf732512cab9cfe155e34b5067450a77d13355db99790d379ed1fdb7d18b5728a28deb73f973c6a77b8ba942235bc07ba8dce7828c6e420ab3b7972d32ee23085dd9d54493f384eaece9b44ef5f9961f53a9809b618f7db5aa0bfb37575020ec1044bcc04e851166b2d710c01e59604046939a1570afeb84b49e055a1106b9b9a86d5e8c70f6d8ed3dda7139170d44bd1cc527153847ed3d7cff9bd89f37e3812491430c071867f61e7ace3afbac0780f65a3e41ad43ecbde83727f40147878129c52ed83e8c5eefcd1d97d59f74d79ada78b6904d3b8685ca15dd276c08ff389b41510fd5002a0476cae83ec366f59e41d378451a2f80ee6e27a4e8b1f9911aa6172f4978f6c3dab60fcf58a5d8c897ba08cdac6c96e7e7f69b013533bc74e443c122c211a5d1c73d60872e8712b6757d331f59982888ba454eceb2005d362503c64c5c1aabe0a853e650d53d6a8ea3eb9149344e945f460cc04cc2ff7c0d010ae7bf8c0105ee6f1cd7b382b067c05e4cf28a0c8c606ea29a229e51038145bb05b72856a7ac6dea59f722804ae391010d09234256b35d8df92dadf3a116c423ace42e5d8b5aa03235013e4a71d66f00a203448d5e0a8793125f5ced398ce2a634754dab6e95cb9351149ced4245c0d5e89ca9840eec9590f8e29de8fc1addbbc883b1b60a4ec2eb1e949ef84f70e6a09eb67304da0642a08ffdcbac56b9f380b5732f648ce11a59ad3be59f5078e5a5124b2d0c22e9cfc61b9b2547bba7775db532d7e38f590eeb77716ddea8c1e75e9c6a947cf94c7f3a731c9bed972eb03dbf9c40514b3478c4f55ae5543650654fd3bc309aae43c4f53cbb4526f302bec86628e69d9a6e827d09688dbb54b72bd75abbc995590e31cd721b0a0ca6e92cbc0cee9eab5bcd33a6033e4fa3ab70191385960dbe047b1f1f3621da00939ae409d86fa5eade66c34a7ac4b0b7bf962d3a7487631da1a42f512ec0c68a3861284aaa27fe3a2f14124c7793a520a8243088e3710044931592885519bcb62a048d70b38644bd139306ea3192d47839320dda1f987ce2ab558e24ded45b7064da0f750678aa6e44a6b0335c083818e8a45f82fe98a54e61add772f333714b3b85f36a3c913305bfdeb4d095ddc34d79ee2d44dcdbc926cef33dadbedf8f9267c468a4480d7178a346a815808616987fe3f2b658a48e39a55808a2111c67ed42caa84571607b8c764d61b4f93a6d70f375c3f7e68bfcd27bdd465d5ff32d18a5244e228ef8feca59145dce8ac1b1276a241ba08e0ca2a0a098003438c63f94fc406004da252640016d51203c24d5abe78601a3a741072f1f35995803fa23248a9212757061fecf622c93da3cf08ca2920691a88a02f996b682784db8dfd98de08f285e79578f34c592acb5677cad5cfa4c8b5e8e69289894c09feb82dbd0207a4dd289cb83f9e31b745cae53b0cb2bfa93f28c0248bfcb6d8d41f55d1f96bf4c3b26a4a3fa4739bde0d3502da05af8d8cfa5b598f56acd0ab32d7daab920b4c75516775e696b33b14c87e3e19a50b3fbe5e4f5f73911876a68a4797fb6d6822bae0b778297d265161aef5e271e40c46cecfb1f9ae80037bee56c634705120a00a92213e3b116860d312a093ab87afc81a5e0a80d304bd1ea3665ee007ec3133596a5d3e3cefa5a9c6a9e06b07187e7c0aa1e572e4ce0466eb38590c2dfa5fca851b4b27014b1a2fe4ea5a867f0ef8309c19fd037cc60d1b783ef2a6860abfad2beb1e68e9c244506f10ab00a7de36a765f7816d04da395122faf426750c6d594931d9358bdaaac1b216afcf54c12758937b99494fdba378366a86455d1b993719756f25edd0f775949c4756dc8cea0e32773d399fb2d8b899d69e6ae9f267bb82359239e38448aa96bde706c98ffaee2a6a567e8bc0c20145054ebdd82916255d1b97fb81b5437c033aa278d73e4b2e29e7baa7ecacc0d4a672ecb047cd62b4a0a7166f0e8f6a0ef049b166f30ba94f1a6c2e39e76a80480f09500a66c0b34abd6ca36ad45026df70d68ca0618057a29b7f0b8d99d5329f0ef82eda010f6ea0a2ae2839180526210df8a8af0012307f125a877232272c9c19077f9f6ee9ac94333d88f477f97e760100a2908704f0e448574189947562be9f3a3ad52f68b9afe877e6ba9ce713cca2ea76afca01b23af3b701fa4901101e311402c1d1b337370bce541466733cf5d765d9513dc854b854e846e245e220b3711cae11c1fc5d9092c858c35bbba385b1356acac9ca9b73744943e9a49b52630f6c159f9c0c394315768373c64289cbfa738b9e26d02642c91e7cd46dec68864937b14e1619930136b64aedc5e88ed0bcd61d345ab4145f90988b5cc9f914ee02fd581887cf97543c950253554b70d530e62a07c861ab06ef869bad658b1e1ac74cc57cb9cf94a60358794bcec8a29d243d8ab8d55ebbdf884b101bad9feee33315bea54d19e7549de0f1b15568f530da4da5f5086aaccc71345a41a297018f8e62ca17b9771aaf4859438ed181745f685ee2d2f773773d1ad60c12d2b75ed377aaed297b711024d88829a45f39d4d938a5c3edbf1ecfb1a4c2e29d2feabee6cf2a9505845b985335fdf6a9335799885478ff6662d9ff275af6708729da1e1d8dccf584c92d123ff1a1b341fb176845b0806edde877d07dd0c7e2d196c5908acb64c713ae3ef682f7510af314d2d20a1c206550e6b54298fcab9eeff9975ba5d532349076f6ae13538173e2adfb8fccf95830e8bd726bbeab01b4110f3547868dea08450ce97d27f85e3ed01e9c70cc7a8c72542fe554b5e3d22544c6c5a1a6253bb75ded15d388b5e7f032bf32bfe14684874118b820e35878e33604d32dad06a67c1909a03eaa65359a90f4a6def10657c4bbeb96ad132d60849446d8ba18c230c5fa6bf5b4cdad5ac5c6674315e51a082993f34982cdfe5843fad62d55f5a9ebb50bd268187c53d0c07a47bec2ae38f0c50f1bde6a4edaac6a4914987b2d6ec692e4748e58f5348a33cac1f497a96d5cc49af075eb32fb5a0ecd5cb471287979fd608deba591d80fa1d6ef242cb3713ebe14bd9c017254bc39c009aa4c547ff019c303901af96c354dd693c0151203cd6737b960ea161efe10692f9f16f109979616b344703cadf629c5e30529d710ec9aa96559d53c98c91b97655cb8ace7bca0c55846956d5630cb6667ebe9e0819f4c28e3cf2ab99893c2846308bc7ad011c60d152cd1b47a98002668f803ffb9983bb894fa0ffedffade0bfdcd799c82daeec7669881029a50cc309c609b7093c16270c040799e9014c6b568a9874581e392ca927537938c3ec07f621237b617eca43320e3af49b8b642331bc30f390a1f211185e9891e06425321c80c40811214a7295f22a264a64853779bc5eaff7fb1ddfe9f399bef3f7438142448142678c425c29aa49d31ed10c33155152cfc7ebddcabcfe4194d4fb0f0683c1e007f9f5515b7c680df7a6cce4e1e9e9e9c1fdecd9bfefd8c7c707fb9c2698b06285b86285ce7805e6b1d874d895a29cd7bb65f15829aa495319cfbd460d994c2693c9b8ee356af0e7b8cf12f06689126dbbdbf55b1a7e6fe2c409d78913058a134e104f3841677c826bc7518ee672d97834b0218fc5369383c762c3f879ee3d3dffff8f13f0cf75efe9797ebb8cdfce067933c5e9babda9e2748d6fb2c0383d59ecdfe794e3ae752a8ab78efba5bd8846b91d9acb8ea3dc0eedc60d96e3209fbe6035bc79c2a9c3bafd092e4e1d16b6e15dec767d1734bc385decdfbfd8393d8ca5bf1c7713c639a344f3a7b88b3f3f308e6b788ca6f8067c83fa36601a848080808080807e42404077aa07c7084e648487188890a721b848081bcb0f0dc74996007fc0403cc150f26db8e46395d24b9a21431dc949986c9e7d6812e52486181870cc53887e52c2b1820c3e7806ff6de52be49b8d7c7381c7e886201e1ed630b37223480e0b443d2a1f2dd48069cda8e968b1d9015d24570910901647724d295721210c01de9fb84f091635300e7c051cdc051c0de0430fe044170f3110fc34840108d821c8b1c971927c5bc2c24b48027674c0a4bce07c901a86781e4212b1e1f9080cec0d363489e2d9894eb97d3490d0f16e68bd431fc1553706bf08bec233f871fc84b1798dc39fe33cf86fae14f0e61b96c0cf8a0a47e02ceac143545a40aa41b39af1424ecb0a41780c58061a968a33e5b8abb67f613e8cddae0fe38cb1dbdfc7b0c99091f4b3e5e7add030bd99f36ef19037f37ab72f4d2b431ee747ac9fbd303ff170fe7e7ec0ededfe7e1e7277b7bf3ba417e623385e9891ec78614ee27b615692330ec00f41bf22e8b61fd00d06e68534325c0dcb8f17de2637ea3ab952b8a6db31726915392da9b91e5112ac24a6077f21c64fa2e4615eca4dd9470e726323c3016280e167f0f13a397fdf9c1199f1e689132850a030539c28f6ef53a850a1c25471ae58214386284386ce5846aef78f7b44b9981eaf957a4439559df1dc81c0192f3b10089ccd38d981b3d98ceb0e04be08634dce7147d13759b068d1a2053ee16cb17f7f0276e1c2057671be788153165c8d4c956308572373b96a3a9796916ea7e6b454a4dba961cc79ee3d3d9c73ce39d7bda787f3db67fcf64fb199e7ef65b866cc988102102802813a63608abb2ac3fdc839e31c43b81a99ca73bf71435555557d9ef22ad7fdc68d96ca9b29a4a0820abb5d5f8593c6a9c2fe3d0d9b0e0be681bbc53c1ea8feecf6f73f356a88356ae88c6be06010ab3cf6a9e9dee6c9890009090909090901010909611c7011190ec031062ec6501a97042fc9b726382adfe0c731c050db7199c1478e4806aa874e0e2fca090dcf508298e17af8c2f5d20b6777a301595ceba077d831e3860fdd18fc369c08cfe0b771232c84e3273c040f350e3b75fc38bc55baa08ad34fef460c0b3d680bec110cc7093f183432769b4289e6bffddd6dee45a45cefd6432929d7bba1e8ce8e6fbd104bf158dfc34e7f1f3fb9bbd9e7a6ec63e985d92903c941f494d00b7194dc231f40a6ae3fbbc1f038b2e1626b381dd7498ea21fcda60b0e35bd8830d30bf1d34f911db0111efac55018094e82952cc14c9470148e1f33323130ffe2f2f7cd16c73dc689b4f0260c18bb1d6d529a37659c31f62ac33c8e58de9c71a2b0dbf55190e1a29a1a8ea5d99a5e361d8de9f56ef190c8a6a3fdfef73db9c57317126af1b20b0909bd299e2d9ed2c92ed46ab5b8eed8076b3d7f133551385dfca670baf8c52a9c2e7e699c2e7e31f074f18b5dfc064f17bfc1e0180c8a19075dfcfed89a0e9557c3b14535351cebba7103455114e562bf71a3e57f1cf7d7ee4d1ab23781273681366ffea4df93cd1f9a9f13731c3c31c7660d590d1300273efa9e6c0280e54d00e4bdbe198013732c0b4000c6000440cc3800b8e3eefaf1dc83c1dfeff7fbbdf8ee7f5cf76030f63df976f4e6c68686130102028140c01f2e3223c33110b825203130345dd32e49cb8bcb8de726514e3294207a2cc1584e332ea475d841b7c0350e8e2f70633006f00c7e19c73be025b809cf4d8e205b90e9e70692c8c2eff8f052ca030804d5ff5fec5656f43060dc62c4207a19bbe5e164b46f9930768b3fedd56cb3a4a19d9a6d06fb18a7ebd9d8119a8bb5b0462bba580bfb7271dc63ec76942163c60c1476cb5293420a2a9468fe596d98f66ab659d2d04ecd36cb1dbd8fef85b8080f2ffd7d8c81dbc34a7f1fef7077ec5fac44f742bcc4e88598096e1225d2c0503dfc42bc02dc028e7ba8d61a24161bae97d16e453822de8d7283c043dc849df030dd49fa211d38c7e326ccf49807def1f74d1f0b6f8a7c245712f748294b1d16d29baa13b3d47c4f365579ffde5cf1d5b85a8919af4ab49b3aac9715a93719ed89783819ed730702f2f1b2030101f97c9cec403e9f8feb0e04f4187db5f0f5cb1eef52edf6f72ad76ab72cbf7271dc77fb7bf3ccf973fff929bb2992dd244f5114b9ee3f3fb077e11fd91c558e7fbc4b55aa5668eb7b7022345e9583c11c0ce61c0ce66030e7603007ff177c1beb8aa55cfcf616cf4f4d3c3b8089e707dc99213af0f003078bc18e26514ea0e45b107aa8975efa8712db0274a45b6101ff7063301078c647a6c1b30c875b260afae9a5c0580e35420a7217a78b172f5ec0800123468cdde23e860c19bbe52fe3ce1067ccd019cf98a142f3a33a91455fb9db0c7db55e9c2f60c0801123468c9e6dc68cddae3f0385d8f354d9f3580d8ef63c368edf9363ec3689c7cbd82d567a193a66ec160f91762c3d0a39923e85dde22112abf3e10dfd7d22a3bb6b79fc74875c2478889bf0026c80fd56a3a3b4d6b38db1e73c329e4aabc105adec7c1111919f3765c8d82dfae68c19bb157f060a28a090c2a9c3ca7d0abbbd7d0a2aa8b0dbd7ab7069883468e88c69d050a1ad87fd8e52a3df0aebd96abf158631c61863b1f534f85205d057ee3c3cddd4e7c853c86e8ae7c8c76e92e73872dd7978de2c55f5c808080402813f4e04f82b302be9f8d37444e2f80986c283e7a57ccb3e8014f97067f0c7a2b21328410c715c2fb586585a5ebad9edc70137e6017866485a4b926f495869078f1a84b262ae07c4a148c72f60c0881143868c19335ea36ecd8dbfd78cfff87bbd3996a8cbf5bca597b1dba397613463b72c3f43c7a3b05b3c2cdaf91476cbf2295c15441554d019aba0820af5d5283dde6dd2e3a13773ce380712516fa5065daa408cf6c2cbe4425d2757eac93d7f2f54fb5d5fb7fe8ce75c1bf4cbc3fd7d9f1277077b97adf6f7cd94e31e35166dc55e3fa3b4e8b7be7837da6f7dc15a6a5459cbc374b659cbc3788e6525c6e26af8556444e3dd602d5f33d3d9767a444331342772b415c3d558b4157bfd8cd2a2dffae2dd68bff58531c6186311a32d552d124720304d33d110ace56b663a1fcb4aac956449939dde2ba5dd78642817713c604e2fd0426d2469e119223212f214945f2a17faad3a8fb80806f00e4b9ae0a8f1678386d8773bfaec767d9f9bafc46eff4bc4daddfebe356142346142676ca2445dae179baa30de827de3ef865b63b2b7d55a2eda2ccdacfaca286f8165f4a6401f77cb7a5489b65a2ba32cec29df86cc7cbcc4fa52796442e99a710c1119e59b10fc6463a471f5f764eca241c355baba8f0d17f26dbd5334f2768d303436bfbbe232f6a198068d9186eac4d934cb95e9c2aa1b836780540e63b3fe6cd0604becf6d7ee36fdf6b7b6662d2850b46032558cb17f5bbf15974b5b6eb6d78f359acaf3fa13bb4565220cf5bdfe55a0bf62b7be5f7159882c58e88c59b050a1ae5755555555d5f5bec77122343e37ae6350d01814348e41416350d03806fd1a94ff667bf964365ca8d15a2d1cb50163a566416d76c5beddad09132776cbff440c058a142954882a54e88c55a868a12d9bace583bd89ddae2776abfe092314287a9f62b7b84fb1ae106737daf3d80f95d9f05d531537136f3f223f2976dbd2bd8adda2af825db1dbd7af68c93d8bddda9e45eb5bb4384185fa56754d716bfafbfd7ebfdf0ff5fd5a26ce5a1ccd95b942f31b1dad2990aaaea990d09aaee99aaea99010904aff15f1ee5382458d156c0c11190df19290a7212a580df7b39a201b2caaf6807ab73fb6e54decf6c46e557f62f6285a52a450b1dbd9ab58a142f39fd8ad8c96a4f2683519124b8f5693a1d82de6302314078bf1a29d1c2cc647143dfe6845f72de3284b5279b49a0c89a547abc970464a3a78ae68e78557805bf0bff575472b2dec8cc746846f433541a28c56fbe125a93d2416578e21138f1d4bafffe11e69d36ffda315ddfa2ed7d8c212611b3b6b19aab9b1b3967104425bb0d89b624a4a59ee36fd7254a9c6d56e577e35fed677b9c61756f1f0a878789a7a048342c16030180cae424cbcdf189f122c6aac60c3051c3766e8c61019e1e11290a796920e1e034ab244e354c3d7adb03cb6a1a01f9e0a84e150254741a171e4987d14bbfdd17c8adda69f6246858a152b5ab4105bb4d019b72851d7d772338c8f703c5b930e241ccfb61473c221eb2915c16eceec6f86666587d1c869b7205d0ea2592d1764611ae291f483da70bc255887eb874c0ccc8b0b2bc671879de76e7f34bf779bfede27709f79133df75e1f553955766bf42afb04ee2b6faa9cacddaecf4a53314d75c66989ba9ea88676e34c2d969cde6dd2502d37c338168bc562b1587ec55a9e758efc8efce2f41cf96539477eb17a8efce2915f11e7c8af0811a3081162c622467e696f625547bbe9dd12bda6ddf838deb8c1c2bea9fe549a37438498f99eac86f8bd29a2a5b6ccd5685df99eacae23d811e3881162c623c660f0261884a1363633344020100804028140201028c3bbcf9dc1cf7909163556b0e1028e2122233c5c0222e4e90236de8d1e483a587839e190fdce524f7563f009430bd205596e7e704762538b904f29081068a5729c62b73f15bb4d5fc58addaebfe2e559b070b98c44b10986c9857573fead66d20b8f7be42249a284893aa4cac153d3ed38b58c7004c5262618d7ca4a9aee36fd94e54cf7fa2caaaaaa678810b0d165248a59848856abd5daebaf78c4881178c44982c48f2e51c5d5c8c651e754a4dbc16124ba5cafd76b849dafbd3e6c8cc56263ec6cd9edfa2d32992893e98c6525ea7a5554c75114455114c57fce779b3e3fd993eff55951261367bb5d7f56ab89b59aceb8a6fefcfcf8c61d14348ee338eea0a053480848484848484868052ac122df6aac60c3051c3766a8a6c340b010fc8487cce02347744346094be11f3010c3251f40f25376c08d07a41daa153e79e08258543c452ac19e8e94981e7486051eb1b2921721a0105cc56e7f2b769bfe0a16bb5d9f458b1627ec76fd135cb8105db8d019bb285197eb85de9c7f6b3aaa3c98f270a672bd38eee8eb0583ed367d58ec84edf5632d2d2d2de7ef76fd7771115d5c74c62e25ea728d230f265555bd5eafd7ebf5ca2fce5996c5b293ddebcbf06c36c3b393468b8911636274c63125ea7ad1358e3c9854b556b3d9769bbe6dbc9db6bdfe6dc4e17023ee74d9edfa2e3434220d8dce98a6445daa6b1cc7977384394799734c5599bd8e2acd7a7323dedce88c6f4ad435bad471545555555595862697db6dfa39dd99dbebeb6a6a6a6a4e9bddae6fb3db89bb9dce7857a2aefff9b9e1061a6cc027105006021a818056a19204ef3e2558d4c8b7156c0cf1588008791a926f452e507443878985a5f00f4fa00c977c007972800e3c401dc94932931c83ec430d97a1d8e050ad4e182723979f610dc0151e41728812e0a305a41a3030cc08ea68dab1bbcd9d97e38efb15bbfdb1d86dfa2c80b46871c209bf172fc4172f74c62f4ad4f543b399915288c7bb6d799cf366cebb6519edd722cbc8c989e900f773b8af7f5c1ea6e1ef6b1a6e8fc4dfd740ee4ef7bac8d53b5c6d44f3a0a1ae0e72e385fa495f406700f75b814c400699b1c67299dc26513738864b4dd80903c141b010971ff528a832653fce192c859f4cc1a4d05e5470663c8c641e32543e9291ccc04e2fcc4c72931c959df49ba5a632941e2507a1877aa95fdde41a2102024f0d78000310f05848021e07c1353cbe01db90437f138773395d5ccc97d365afff0203b35b998781396362783c91c7d319f3f00e0c4626d1f0185ac16083c4636836cb81e77ee3460ebcec376edcf81c72e064bfc1af4f0e39e490b9efc67b133b71dc5b5ade9491999999c134e7cc5e9f06e772399c3b753a9f4ff4f974c63efc63e5a8a68856a46347e5a548c70e0ce6c4737fe10527ece4e4e4849db8ee2fbcc0be13bf1de7c06f4f22f2664d8d8d8dcd7873daecf56fc6dd6e37ee4e1c9c9e1eb1a74767dca3f23beee81199b29cf56e677eac1cd5d4a8319bcd66b3248e89fc8ceb5ea3c6c338eeb4216fe6e4e89c3a3a2aefd4d9ebf37a3db577eeec9860826882093a63136e57733b719863a9dde0c89163a98da3ad177bdc23b2b9ece811d93086f1dc7b7a6030180c46e378c8c35e305904def4fd4ef5f7660fc662cf5e3fab1c77ad4571b7eb8b387ebb0b56cbedc41ccbcdebdde2c8b1d4c6311854555555710482c1564c026f9a604289097c89dda65f02c8c338eeebb726762bf326602776bbfe891429c4142974c6294ad4f5a3e88271dc2f1018e3580240a03ae2308ee3388e38fc981fc804569e53e4f8c58b5b0c991f4449bdff21a41860909a8660c089416a1a92c9b08e9bbf9f63907dc84dee4ef751945e9883e8570fb56ec2392af8c22ca5be301b417d6146c20ddb4043cb5d26e291cb0e6c0b50edf823d4e5ddaebf478710964228835002818492770338bbf9fac9a9bc63bd7e32ca089365b6ccd61ec0d9377bda76599a4203a870f1de4c56b8fafdb66da2ece6dbb609b19b2c90511fdf86eed56ab5fadb4eb16255161409956ffacd374dd3c4ed1422fb62c9232b0e2c2109d5f59350e491bc83eafaf567fd2e46f24dbf5e014bf5a47e33e66c6566b412b2bf5601abecf857fd86c08908fd5e9cb2cf9045e8fa85b7ce2f0e397571fa31c6f954926f7a95ba3caca4eb255d4543ff61840e74fdc2571f7177dac8bde92fbf27ff7063b4699aa66902611afcd7a7d42960094ba98e24efccd77f26c9bbd5eb0f74f1856c17963f485d5e7efd3d56550e9611ba0642d76f5e96eb28ae9de45b2e39911416b3a6796e54e5b256d27b59d410225a2b2cd6f29491c6249591071a9877261c75065837e77c2faba37260e97e6f4cfe9efcab46012b3f8bdec0d222aba3f22dff18857114f3ce84dff38fea4bd6a87c15de33565faede5cf152e3c6152f5fe433565fb246e6af84388acc28df648dc8189e7c58bb0c82257c756e668c2f2e5b7d7d307eccbef2bd19afa042a2eb93b789f2fabc760b0168764c1ab37632ef4c5f8c73d61a09e7ccd35a146bc6310f11e9df4f1c47924c4929cb51a588d4a1f4c2c2b151544585c55a594955a88aaa30f14889927a32a9cb35baf0998a23768b71f8114312246edeb55b1cef62a9e51fb1db6beb4960478f08ef0bab59312350d382893b452943765e98c8d01bb1b7373167baf1626e3c9defaa22bfaaf39a67cd66bbdd7038179717f1e54567fcf262231a3af1464ac2b9b8bcbcc0c0c4c4c88832323a631919152abaec3635d2edd4f04e55251daa8ba9c9e51ad3d1959635e7cdcd6e9753a239a72e97920e55656ac2a238fe56174f1a14fc519574b4c0d4d493c7b22c552b2be2ca8ace78c54849c76a659aa6b97f7feebd51b465d4420b2db4a0a2c262b158fbf72b699ab2b0b45a62aba5336ea96a881021449c21f6ef45b45aadd6b9ae2448882448e88c4900090909090909fd8084846438800c57f3634895c317030cb51d27a3a59fd80c3e7250863a7ab4e8e40ca139f2c2d945398112c48e6eb3c1b275452a387a3752625858698169a60778049bf1f202b3dbf56168626264647e3f434334849494898690924832252565ffbe54a954aa73b5221a5a99e6799e1b45555454582cd6c8628919b3368aaaa8a8b05656d234656161195958c48c59808040201008fc01018133322c8e4707af48ea072074444d432d2f2e3d9598a4c4729a395919ea2522cc7204acd5dce4b005774c3fb91b483d5810daf1b500f40203838b899191b9cdccc0a878c7c8ec367d9971e548b9ddae9fd3fd7037b5b7a3d714f7bbf5d49d745d7fb89baaa6ebfafb090583c16030b80a0583523f0041c315f9d8611b1e49c224063ec45a8e744639780d8b8ce70751eda7970404caa12c20055f606062626466667439b41583d9ed2f66b7e9c714c9c8ccecf6f633349addae4f93c3e972226e66b728cd6ec5a7e1b9ddb63e97d3b135bb6d7d8d8d6863a333b6b151a1be9751d18b77a3bd7cad22a3354da58886605fa3ce7c2c2b684b2fedf45eb45b0b8f0cc7c59f9407d4d510adecd4f074432cbd1a9e0efd560ed76a89d96d0dd1ca0eef677434bb65799a5e6eb7bccf5d9da8d3e98c753a158a3e4c16637f6ce1722d37dbab467bc960be17fbb1941c2e685d531d6f67a9c724c720fb907db2a15ea2b5d6165eb3326403a6f2cc845e60606262646466666076fb31bbb57d4c4d66b7eccbc46a7e66b7b99fa1d92dfb34393197d319e7722a7485b5e0642d30ddac85c35031255f2ddf1a636b3d5aee07e3e166497cc0334d8218eaa51c65ab6991e9c694c6cb6e5598ddca1e86c7ecb6f531abed656676dbfa994ba3425dff4b6b6ab0d4f7bbd15a52df6f1475ec4b44c7dc2c26a2630a132cd5e2bc07f2e379880e3c1c49223a09420ff5922ac3a5b0db8bb5ed3677db2dbee16f46b8ddee3c8ee6f22ebbc53bdee5e865b73bff0223c2c0e88c61605468fe9b8d876b18f2586c3339782c361477e22d7e101e4c35afdb23c209204aeaa931484d435c57bb69c959ebdde2a8e174aa38e253157fbaddd66a767bf3353536bbc5bdcdcd6e8bfe8657fbdd6e71bfbb38220e8ece1807c7acd9adeb7743229b8e16b3d9adeb4dbcd34fcaf56e3d9472bd5b4b3afb1dcf674b462bcf6730574e773a3abcddfe9ed7eb89bd9eceb857c34bd32424fc5b6b786912d23892e46ed727534e72ff3ea53ccbdd1e7d599e665ac34b53d56a659ae6b937ea525151195554c48c55d21a5e7aee8dae688aaa98ac94b5b292aea4693aa6a998719aa6699aa6699a020181402010f80302026764d82520429ef00568ba24c39f9617975b2f498504e4c969c677f85692fc90b11cd504d986764cb91b3d58f81d234b489400816a6c6c6e6e763b1c1c9b9dde4d4e77b3dbe1e0e4e4e8e8ecf472babcd3130a0683c160f027140c36313dad08c70b82f1d831b30d87b203f203f2902334c910af416209ca6e3f886a3f69123006943362c1e6e686b6dbe1e0cc72726e763b1c9c9cdde23ea7c68b3d4fa43d8fd5dc9ec75099eda7d754c5d1c4d9ed2767b72d1dcbdbedeb79bddddabeb7b3e353a1be555d53dc9aa2be96281a6171054a55b58868b874f30db10cd1810754b6b203abe19ea7a6c5e67ed41ed0e6e666b7c3c1c9c9d111717272747478bc5e6f47dcd9d119efecb8c83207c94fd901f90128d4911f7cb1cf365e4690ac422fd88c3f2cf692b12db0d8ebf737bb85ed76cb7ff738bb8d3d4ece6ed9cfd1d96dec75782af427a6ead8f2a12e28431f407c28cf434651857159ba2aa171b3dbd7dfb4763b9cddb63c8e2f67b7eae7e8883a3a3a631d1d159adff56363e22f753d0cfda52e323fe5516dc97c2d3af0104393bc7ef9918c35bbb5d9ed7e9b9bddd6fccd6e3784837373c49c1c9d714e8e69b35bf5558c743b35dfcd6ed537f1163fa5479433f11ebf098689d732fedd9875811db1b41b0b89a5dd5ef924cf1d9feff7e3e1e9e9e962ef3ae3de7d433bb6df6e75b91f0f4f4f4fef3e3eba1c56f5c8e3ba3631bd8c568423e2c178ec98d9922c01be9694f230b7a223075f6b586e3f6abd342906841ab18024e4fbfd78787a7a7a67f9af7796e7ce9a60428912bc6d71e022f802b04fb244ea0720a0e43890de8bc6bb015b64aa0ec5fdfc78769b3ecfafa7a7771f1f570ca6c71fcee5b35bf17d62be17ebbb265428aaaaaaaaaaaa88fa7eeb9af5ba8eab0ac885de6c4f623218100ce0254df22d0acb330b125a7fa2d40f403cc9c3eca389c6ff76eb5ada2dcfb0a7a7efd6359aa042f113d7e8db2dedb75b9bffe978767b7b9e9e1edaf7dddebefb883e3e3a631f1f159a7fb7e3df240dd57233180fdeea23e178b6d8b76acb926fa7e58b5afed7b3dbde7d76fbefa3b3cd5a6e2bb6adceb86d63684ee4682b860b2cfd81beb29d989350f9b6f222be27935097972180f789b2937a09acab621511e90aab04e2f26a28797077e29742b86511ee2ec4eb2f9170774b50295d15d3e5e1d741f08c7e7285d515164e5b293732043d989c14c1910b756396c0c2fd53fefaa0af55fb4b0d9577217ec4da4a19b1b69e9e481293ab6de292e519027dedd94a07b9425d03ebc2bab7527805465a4d041deadef42b211b41c281208e208141e25d235ee3968bab82e411df2a3317aa9e4a298d4b024bf3a08f682579a7975c1ecebf722fcb8aa2579074204a50fed134458ebbc8aec491d7542b110864104821dc18281a09ac946f915fbe8b7d12b36aeb23b030eb4a81cbc7acebfcdb559fd4c97fb3052716bbb0945ab12edc553827c948f24d3f1211a34d2bc877e5db0770a7a07a5e40d746c819899124b820c745b2821cba8e62f6dbc3065a50f60bf5822074616652922cd9a98bc07a265d589a3322b058347a08ac946fbd6bed2e9644598e60b1d8dfabf1f3e3711c4712bdc5f39b2e394ff20d0a8bf598aba430275953f906eb410441e83a082c16c65cf5ad14119b63ce19e3fc26373f73535cbd29ae4671c5433c1925ef485d8e78218bc40bd7d60b6f2923504caa60b9529449dd7cf349299455b1ad9495f8483dc49b63ce19bf01f229ae5638932ff215c9f6e8ccf18f3cef967c124ade99ec00687afefd1af75e967bffd5fb5fe3b47e3fcb6e379bc3ca9f1249c13ca9e722f9c4bba5f1a9802b05f9f9339bd4339228b96500b19b9f2406118574617e03e46e8a26de2ecc175de38b41ba88a4f76433f3d59b1cef8067f0af585c24dff0e30de0195398d443fcdd6d8813733108de80110d956f630a1a2cc92ee490ace982b17ecad358591a2d21b04aa9ff205d286e9325c41d1be942fc274eeaa301c67eb278037846d446340f22586159866085ac5e6e56b8f6927cf3ea9b51222929609f143608f9bf0629852ae513155e4a0581c5fa14982bf1f67444a90b67fd0620b0c8962a77732516c1ec587567b010ee8e75eb985c42d7f84b1a1b4cabd948219053f7a6ff867379c1acacfca104a2e4c18d21b789b263768a65fef865c7acfe016bf5e28f6f3e8651d2b9042050404fe12ef3af4f56e232bfecba8fbb355ffb40f780959f64cd0396b02ca7f20eeac6e817669789dccba911fbe8cf5c1544be4101c1faaecf7e7b70800d2e3842176626b7085d87358ee338e6bd02776111beb844312b8a31532910f88165428d20c832bc58e62406a458a678821db0ccefc9333392013d4af716131db04c9abc94f2ad17ce18c0af8fa9c322af4fe6393be99ec22b709108d1413f77ab73c07a325542217310292071c2ef989f66cd762d20c2e02c9a6336c72c8ae2f8da34cd71449273cedfda6dce432030be9884909c7a7a000488502003f8c711ef715ce5bcc2583846691b8841a0a0a0a058c012965218877cd238fdac240ca16bd58ea727b2484bbf0708a29b5ddb706fda8611075d8f51e45311dc7ba1ece1f25e58bb08eeee7cfd2409ee4ef5fac9135c1c7258922db8640c50f834f1c559a353f81ac1c3d5eb9c436411ebb044d63583d0752984ae5b9ff2c2124ad731b831fa33d73edc1819dc18fd2d9ec29508c0ea26191723d44cb28f86e2658f817dcaae519077186a4954c72f62b7b894c2bddbb5909c22a7a6a6c892d4a74f594add18ddef0878f002b15f281804e9c2cc2408a259aa481b56d320b7db4abfaaf37bb2b942375f3b617d7e1c71381c0e9f7cf4df5bbe90d5f3673687f53d4751e9b7071f39acf4db830f2691fd9225595658ae1dab7ee40618cb29153f79f904072c2923e36b3cf2dba96fc02a57d6afb717de30398513b38b8863321272947bd3af85e49b16114022a06bed032b47111fa7f5aa56698ee398a7c63c9577da0814a8204c1a25952528e129e18cc75e5ebe3e2999eb9ec7a7224f4f4f5809364b6dc48812a8b25c6f09d6eaf19bbc5e0766c092cae4a9ea9d5353535353abd50e0fe6ba8fe2383e169245307761bc84a91d1bba0e724b04f495136d0396b09422a17207ba30338962b1e7c93e0505e18e3b397563f4159640b8aa1ce2893bc98ae759f2516ac5c7a8b2fc9ebce2913a6ecce55dde7efce3e5a12bf25724b92a4b531b599d1ce52fb0dab254adca956af5da081018a77fd585a554591ea1eb57e9e8fa4d933c55e789b70992244992246718ead85050180a6a354e9965596e2d5c718652025503962bfff551b1aefc296470ca5174538e424aad6c8e420356f9e29b3f11d52f204fd58a355920a8a854a44992795419f3ea4d1539468d5163d418a583ac4c956accfa49072169c02263b18e314e28a20bc961c78f5e1c5286219eb93b5207bee9c74f5e1c9207c6e9c7ec8b6fdebd42b55ab1ec16798c22c957ad38b5b849965a4810324829449346585a438d43bb38fc3137435fc73ffe60bcc188837107230fc6258c45d033607d179246ba1e5579ccac2be7dc4e691c6de443ecb694ba31fab5118d53fe7071fa4d56b88eda08107ad97513d67721f9544aad7e1cfbed41031cc82f3e1e0e876314c996e5f531d935f351e463d4388e79ccdac8d45496cabbac850548eae3af30fba2530f40886473345997690ec792e444527e7432468d51a39317cc30d4a1c47400b201a4027ab0921d94d085b3ce6fefaea0df377558a20fa9d433eeb174fd5a062cfc99155ffbc0126a233d8f507a85956f2ef22fd40470e8f85d246b2277f26f093c20a4afbe94ca3b6ca4eb5705510dc938b822fa4b2879774350e4a9ab96ba16aa9abace4e454ed0852aa7ae4d2515b821a0800e5da812d2b5b08c9282064ff2edf6154f4183263c050da2f2edf6a88e24ef84e453cfbbeba4e72e2493b429682095e2e64043e1be7a5db2586c96d238cd009601c62e00fcabcf2ffc9eb9902cb2fa9e5cee14f8575f4a691c728500ccd1fccbbac6bfdd853eb1be0b0d30769315e27f01f7a4befa152792f22bcd437e7dbb369277229b4206a77cbb5df39071ae8f2ea5341356118d93a52eee49e3642617a75f6a2d9f52fa2d41077aa05fc380b5ea170a0623d02f204fd5ca2297400661d54921dc5d11ee0e7dfd2412eeae64cd90c2d4f59b37853cd153387655e5726a17e833cacba997881d9b30a76e014b6352e3904a2f72986ffa49251202e430efc827cd82dbcba9aeb50ac67e43f0c304ddbc1ba59d262741030f7a767149e064d2ceda6ec5376ba7c955fac86f0810b0a3e7167d6291fd4231c1a19f5d7cf376dbad0b67df7fdbed264242c938fdb6ddb2de24a3e45d0856883b19c5fc32ef44bc19e2596f86e0248b93530c608580f23d79c4f7667e0a2f9f645cd9818cfaa8a6b090e9dfb689b1af883fd03ec83d30817bf9e4f2443c164106a27ea894c834f72cb488482000000823180000201006a2301648929c42c80714001856a4724c3c2e0bb3244a62146594318400438821c6002103033333ab00cf2b508e0caa18cebdac9066c87002036f7283195aacccaf00d89c56df7760628c965863bb0fadadd39a8772dcf00a55401fae046900df1e4640ac68f0a0a2ebc02e72d9fea78349c2de48bfc1f65f90f362cf9137622ff13a7864b0e6c27e6b3fcb3a238b00dcc84bc37c8747ff0813e00f68a8327eed8b01e66f854b6a5eb3d4ec5cebedd38afb5f3bc25c43d5573030205bee49bf88c55d134cf294d0b6062d2684be3d7616af5e95f3a68cc9e07c6193c1f042d29d9eb6a0e421c3c8bcfe5eb5f9e0441d032a6ec7bc34bbb94969ab49047b567628d131fbd99ba5fc2c64322f81fdf5faab6a13524325906a0c31eb029690edfb626822c79d16424cf422ae17b9a44087c1b0b66fd1f86d81e234abef9d3f3fbf4d75915c1013fc714f6e01809f5f32ce4c96bd8388c1d9b311772466c685fe82762b10ae0266251eb046515778487c4b6e334aacf0fa2ee1bd4e6003de8a171ee5801d449f5edcc07837556b100090e775ffeecba81156182124c626c00ba35e54c77ba5f70538cdf74628f3ec4c53b72876a5fb4941bc8132e53f3a0e48738a9954ca4fe01c542917e6ef4fc9ad9d615851690eb90f2595621db16fd7ec2cc835112f4973b0c196f8938b865d5fa4c2aedd724fc05ee5336ba2ccf120b035c4b94994b35457dc046cb4a028de2c80d11e056303da6f65fea0d358f0fccd74e510baaf51f5e74eb1b28e7004d7894e2f5ef8c3b136c169f5b968dbc8c328d1689036dd0aa7e5cad900160bacc5af5593493c5826641825842bfa439db0c1e1f9e0bae16acd2600053cf09a39838cf0ad82d6fe5aa9f408d064d0ca893129eb4018efa60129ad552536d69ceb133a135089e236d563687c3d25f9a0f3bc459e29254db52208180303ae1c1915093b4abb1739637eb32813f7f8e69eb43fffb3e4ed4b1338d1053ce4ccf80c3671582e3e0539c8c5f2da07168d68113d295ebf6e6cd2b92d1b0c53bffa6e6b41b2f61a729296e6deb169c5ca67675ee432a16a3aa046b658c73367311b1da5d83c86b80d4adb63c17ff8a83f3603ae04b2f3c3997cb6d5c470a3dd69eda044758e6b002394ba02c97c0f2eec755ea0cb6d57ad1fe337839626099483ee853f812dab85cebfaa94f4193275ce30ceec797c580fb34e25cb776ddaa49694dbf32458239a11baf3298d05d348e01b95f2091538f22544f685f23cfb237857529ecfc12dcc57720397f72728c01d7cf757cf43d070b5fd414d45cf8a76b1887d1db7fb1e6d94ed9f47320a29dc9f54c802126d1332326ed37a9555e4ece173340728989e802409c8e3cfd2f9af70556b4d5ce1ca1dc931485ff0f35272ac09fcd98d158b6b80a55136138b40468d4b7334e5cc8a371306209f90fc3dd5df5756a2b24e5a705e573393949ebf4c122d12cb5e3c4b3c3d916d9fd08b0fde38bbc18426a6eb6cc13e492b14f3a6ed48234ce068201b24cd76b58351e0c0886bad882f1d27d647772420d99bac036ba93e06c876214cabcff3dcf72918cf94e9462b4ef1fb843ee5851a1ce34a43a3df3a65b340a1499243a900d82c74fa0d7d80671fd6e2c707bf39e57999210e7c53264a41cc6ad1e280c6c0acba5add61690c0e28d9745d8c0472ae6b81be8f337e34e9a4751b8ffc9bd9d57576b774c13d31ca92637d1aee1cf649f634680686beb1bfa0da57b46693b79379a98e2e8822a7919ae559365e5fff7fdc129de806737ec435e38a47161e59d5c19d86c127de917496c3e9ad8028c7ccc40c02c5f1819a191845b709f8a7faa3814077568dd19ddc04cc31ea2e2c8d9998162526a55ac8ab6ba78382dacd8307a859797e0d55e6ff1ea68e188d064f045b4d303b428c9630b3a67d6a8595dfa1129bed721f774352c0e01ca376060c8ed7f7953e5975b066496a72da757f9d14f44d9aa5baee9b915ceb8f268da70acb794df7589efd5643890fc1ca4ff2e02a0bf45e591e9e70893a31acc8d156c9bafa614aad74298c024aca74bf4cd6150de01594eccc0ff6f8d2e68106296e70d55ff17a9e3fdc627780c4e6b74cc3c0b3788686492b6254d754fce2453be17f3b3b5a21118c23e9c39ee02f8db7a6f54cdaa205f5061f45b3cf1194bf3c6c1dd01141ccbfaecd3bb2517d51ce06f14ae4c221e20270b0d9ea3d0d35129750a39d1d0314ee6fee5b4497234d353e2b3226911cea72e42096da0bbcfb4134c52177d9a0727c034fc80ebc44db52b1189cc5ba162a9ae2cd85645b2f4ad09d0552b96f2c217523d9c11b31497a3f385202ea25d501309da28ab6fc9e6acbf02e5c1d714ec7fff12b8d7cddbd13ddafc8a8dca07d505b034308749b293435b77097860bb662d5e1d104bd9b9b4b618b9df9dadbdc42fb39ecddf256bc99e229c04215111eef423b43cebd4062df973c18b344873f8749d24972fdeff191d3a091eb7a31ee13a6f51a758cc40968492728856fb75b0577479671c610072db161ae47cdce0714237d447c68322c9346df2c85ecb93dcb5784d1ffa74e933b73c0b33186f797c99933aca8ff51623a358b28d2112ce0766cfefc47567ae2fe6dc7799f8396de70d4c2a110dbc1c0ef3251eee674cd017b10b508d70f0e2a5a93177a4b036239deace0c6b0a8fff98cd2409864600cc2af2f0b46e8364bba2f25daffe13fb7af18d115206cff79fe9bcc8861c2aeff29d6ab9fcffe15abe61f5d1f1f140265865f6c6b0044a03f71b850e636624af33b395c6b89d71c8db13649abf7b0438181af00b3e9f2910c555dbe10e1f37fce7e2fa3c886c7a81106bfe8454b71c93a65fe32a181ef9d2d0f74cbc568b604080c7cf1e60efe032e0730cb9638b80ee75a052237ba4ed189dff409c18d144afc4967a71d95cb101b1b214e0480bc29c809520d776ad552e106d953a496ff8222c9349cee6c0288e9ff2a42a92d1fac51043895bd8201dec611284162cb9d878beec88e5ee540f51053b1d419876c5b998bc27f1277fd879a06909b96634ed9f9645098911d7f90024d163a3257beeb227e9114f0b85a816cdf43a6c272220537abad632e713dde536ca95264acd58352809fa6976b660d6c50b6312f43f572f8be9ccb2ffafa1d6301e0faf80a8fb044cd6f6549ed543b4bf3950334bbd5de6046b83b0dbb1c9138e2270a6f26e84fea06d897e422f88c2f06cfef234f711fda2b7c9016442523ffe79f8b20145257ea4908afe4c2e31b29cfdfc5406034f2ce5356ac33a0442020334cd682f3670135311c4fa42b5cd33e8562dccb84e103fabd71f62f3b60a8b9719016920f62c547123af15d2d850431490afa2840bf369173c08868308689a01e52fd6d2ed4c785c038b22c9128c4640bfbf8684ae274accd51d1968b386589a9d91c95a0f93113c217c8799987c617b3183830fa9e02b7697839bac95b3a472dd0e3b1f45e371532a2e17eb5844db99f7fd221d064988c47833b9613fb00a4d1162520139738fd677e6b2509b8f4a60423f49f978c2fc2090a4e0c1075fba9ad998212222d64947e535f81203cae51e334d55505a4290cfb01391cd357887345f873218c2c97863f787bf6b4acd35e0cdbd3f83fd738a09b3b4d80b482c374f89a682f57605eb471410104492bf6cd539b9b9ba42f82284a617ce06fcfed9e75c478dd3af5580957a8d0cd1a4f21f5e870cfabc84277a37d8512466fb40cfd406aabdc1e8391a4a51fd3c8bf8eeaf5c58a2efa7eee49744ec411163c9dde276800a16842fab0e276aeae04b8523476166115bb9dccedd038b85cb2f8805e1c314f971682cea809b80322739bcd19fddb35191a0bd7a579b1c190914082a80478d60ea6a7b58e7a37a13e3ba24983b487e7ea418720aed201baca431d97652273d73d19d52c7fc3a6d01605b91a05329abab76f603f778a880f60fa8ba0a417acc0b8f95728bec75b522cb60c201b403e3e43df7bd91609960dbd6c22131e94fddc1c90e3b39d344104e0a77dc971c7331c7d87882e7ace3831b30b8a0d1dee35e172183836dca497d94ba3b60260f71827850d8de9a7bd8fdd0c001fc3b2bb376384aeffff909f1ec1ca69987449122a0d0dbd7d1cd059ba6b6ac61e7d6b0490afdfa0e313afd2452cd675a2656cab9af2df3030f97dc8ae50fa0dd081731582585aa6c91e200cc9c66533fc3b06d242989a80db1760524ec776d31eefa13d94ab214db5a7154275740c7d7222ad14cb4d7a55a6661034d10ecffc402845073d5b9b0cc1ebcb9dc48e28713000ed6b2d0991536bb84f47c440ea6a14318b82b37a0f803a30e7a8378ed05baf4aadd3fb2cb1471adadcd3cd3c982e21a798b006729272516425998392c835c119efb9e4c4b501897e2f7e3a01f24ccd1ce4a3dde7ff9b1035b368079e07cdb0d5134c8fd4d64485b35557c200281a604205553f50ca3216da0377b082b9b3695b188cb35d42ed2e3df6e24344975103ddc32678a59fa897130ee35bfbd2bc35ec55abe1a50d0b88667a60cd0b03c57bb63b4e1d851c7bc93018f0d7cef5482df98e0a937274ed039c643705915a317f016178ce557e9fe8335a89d2550e865bef80dd69a76f5a52a833d6652f3913e63491de7eac2d34f5d0aaaa2ddc103ef8baff58cedde5f7d6f76ee094176acd84206c371370b41591e1e1e429f1178c6708ac6a312b360e5d0160a68e0b1dba114d9b38fa2af686da9643ba57b50813fbb89ad53df4f0c0ce7258d235077bdde73ee7737bf30437b69810fbd48631b26f5689b0cbb25b2d559bfbd2bccc8c6bbdd3b112ae0302ac9c2ca9392a16527095f7f42f85759bc892cb04e45d2e4c0094ea23f4d2861437bdcfd2f31ca00c899a24c7e58b100f82d31c753d8fc9dd017aab3c4930e51e93a5cac936a618b728a3f7782371446e3d9bfa85efa58867651a493c22545fd349649f44c36f6ad6089ef4c75e0bf39b6a0aa3f5021fa5022ce111ec0ca1d0452340e38166cd749d673450bab03b04dee01518bf3c34f42bdbe219408e968fbd80e3f968037b96e53c23d0573d5e4467c1c56786eaf0c2c57fa784babdb60208e8476264e31cf5da875b576fe280335602ba750a36fd2513a84d0b1819ab916a9d8dc99d0556e7037e58b4e7dd5bb9d782613844f84472948ff3595412586874c8a4339a6862347c0373bb7adaa2502b5b8124e03052168b022352b4d5140de2a8f8258eefbd4c8b0bce8d95d8d381204f5f90b5e99d6b91e247ca417596ef5fb8b6eb82f59c7e075a750c5531dcb717a2e6d09b26b0795e4a078eb5cc43c80247f721947fa331b34761a41f32a6530630dbe76fd2e1b13f5fa75d3185fa8f46824061c2122a827c2430a038739e0833df5eeffd84b370b889d7e08fdf1440bba0e588be688d50e20a427617d56ba32389d4c8c034ec0b5942a1c7c773e48fa3998f782a7589553ca88e0dcca911eeee738ddf4f7373ed8cd8c44734433ee135952b104a324dd1c2086245ca2a84b95cbb03b03833549e9615c1149c151f7638d89d3990c47426ce54dee3635b1b53e7b020096eb7041e51054fd0c015ed69aa72316f2675a567874a395958616883f00ee0eb5d194e0fbc3fc4b68e08d5cb4beef7a3ef9cf6b0fa0e6602b2769560645ca37ba21ba933f3f10f47b03100f6365e583b4d967eb178eb24a52e45be02e317ce5b4b3edbf881ad439362521922ee6064541eba6bed3b3e77e8be7565b7303cf6adfb0f76be0955a0ee6557b4b72025acacd8212006213432971cad9930a452e8e1a081c7df556885408129684e6fb2d5e48a0ef8d38f75e94d05df3db864e34fabfe5b81fae8176c88fab3ed934c23b817a7deb96e4296d437860090e3f9100aef23e228a10535f9071e9bbf26267b992d43f7ba21551660a3f3c156d1ef5fd1c7b91337e96f607627ef6a90d9d899e4602776cf6d1ef584e1b6f46be7fc0c84930f5e447a23db02b9c7dc5f67db8c29ea9aa2323dca5976fa0da901ea8e6093692d611ced8215b13f44d6b2a09f5be3acd55b0ba400cb504d5e113334851fbabd41c3d82f51404e3b2713db633b6bbdf564d789bfe94617baab12d053e3225d938c21cb71ace80b64a19d7d0ab70b1f5289c26ff4d73ac9f0cb42e3ccc01d9a59243bd68c786cbfe0a843e1e9ec539394dae7bdde1315d22c28f394576a8dc95e23d52519694d5d36045bbd7083b1baf03bba68e53a7b569f95e46ec80b313f32a4a61c11e192ea4a9aea63e7dcef7ae57b87146c7e9be4669afb597533f53cf0ae64b1ba3487b8a52d51168b91d8d28f9d15388c3e62f0093b46ab6303f8c774d001d6fe6f3a91792d440b1811d6d09b910f01e6a0dfc6dd62f1db58542654e7449dbcc46b605b15ff798878aa313bdc6f3f92bdaa2b724e4d862f395bc405a2b6a3b58e032d2e6b9f789fcb4ed23b6581e0d1bf8e12bb6acc0a2c83d7dc0cf487b74649ac0e491db0ec9e3085cbafe9beb2a32e027af688db8dd6d994a219f3b3b56e10df65d9126497d3df1f76aaa048e577bb1ea62e55d7f0780ad5ba798198def136ec5fcbfb8814b3b145e016910c20ad8b7f17e21ae4714d123b3e816ea65ce6c2b5a5559c775e749ff863390a4538f76071e5689459f1f8967b6da172cfd2f69171b2b5d11a188dd26d1c0ff5a38e790127d46c902c21bfbbe05911be82b63d54001d74e9d7d4458652c4e4409d91134287fd9fa4c8f68107b5e40c436f7cbe101d34b19a1a951eac5552e3a8099d9c46b5e057020bf0b4e5a79ce550c2d42dfb182585bb97a928cfbf2c551b46a90fa1f4757001c8f31a888b7d47dbdb363c2b5292bb5ffcdfba8ad66cc1763c2d2c4455c01567dcc9bbdeb8e505ef065aecc177c47717172509ffd67df7787fe3dce82b6c2671da18b026e44f215ca70ca2623deaf6f85f39abce23cdf737afe735bb11c0b6618191ce8daf42e4324b851f98d2bac5efa0358642394b310958f89449a974184ddab38604294bbb28e10ddc19780f38c65ce071f6f4c084455014dae8a4e5d94de4a20f8450716f92b2f5d9c9945269e8aa865d7cc850e901d033af2259f5d93b6379ea8a55523f33cb55980249afb9d0e6e974dfe44013c5cc94f68d117697dc12abcfdc31f314cb31376e2d96d7d834f5f64bff4bae7576666f34d7043317eba62bc19385e3838eb0f6963da9dafc455d678c07a7800867bbf1be564b9d293307d9debddd820ff413de6ea2aac9d769d004525a14662ad0d5a302df572502e8ad930b7b658eebfd3c6aa83957715369f993f04c97fed967a90afa458e189baf29e1c86ba5022ccd9cd9ee3c9f05bedd9ded3867acbb903e15ba171dce5606194574ce53a643961e8319087fb43410e70f1b57d871a99dace99f09f8f74adb0610bd31fb1cd8843b6ebb0b92a95be8aa107c1669a524397c7d74670c9bfe0ae55c73a4eeb7545ead690abf58c63074b6ad1b97d7ff6c1a62e8c70e157d174d37b4234d1897c1d6fc6137993c980568ed371ac6f10fa9d95650bc9691596e46669a45d6c4dbf4493634b3d71f4b0c6e053eaa689c8fbbe0293bd5ef5114d95385933985fbf6cc50890dbc1696df68f988fd21b4a979a41b50bb24a2cf8f2621f372b9f09f51e38403750516f0c756df657934d244e007e4ec74b0cc1887e7455bd68dc8c5ae3f050499d9b2993c7a0762c6cc220615db2c3d1d23880e860868d192b4155f00870f149006317876386e4cd338931c8122b4176ff7cc26efb69e989e167a32a0e230b8a785d4689da879548c35f9396f78da26a541990bcae0b0f434a803a81cb7fe05cfaa9f8ca69987382447896482c874ed7a3c06b9bd54551303616666444579eebc0a8d4e74a08271274b0a90762ad10a82a3a73c2479ae0a0771ad9c950654300613538b197cd4d340acdd02cbfb4f4c141d5e54c36e6a6c6a027edea221aeeb50c2f85248556a382fa287105b57829c14eb3cd24aae711139460701745e3a072789f61d579ceecb1d40a120c417b0f539531f56b5e000839ad95ff70a2c14ae7ed4e241ae1126bbb8d7e06c6eebc972d9445a908112438b0584011b83368018d602ae097fb8aab4cb0a6ba026652ee5af50753a5e82aaeb31b35af701d4d4e07916797b377d1e7605e6abf193273f6313bfbb0ce6122c99ce60eb30446b6890cbb85a45f43e8f25d8e5e5412320c157b8bca6141128607ae0c98e0817533653642d77966cdc160848a26247d5522a9e845d8347bbf9da0f2cb596efc51108e68abd9123c7599761865b278e491af2b25c508c7febbc7a2f5c6ac6b654dae6457ffab90bf39f9dd3762ebca04ac3fcb424ed6ed91476887a9edbee268086fe3073f0434e8056576becda7e79b2bc0ccce5f1129e75227dda520f138703e37dabd86ca888f0bde75308eb28aa69fbe2131fc640beac843892a152e5c0ee950a9d1898f97433b3410ff8292f59b8637f1b24bec8967f3e1eacdcf2521ae804a3ef97b122055becfde46043b04cabb5f3bd0225fbbcb70289339fc929b84c5da5a18e4b5171512dc96c9501a8d82e802d489c91519f6553086bae890a0995f624557c71f90f1f88d1e85e9bd62ddd8f652838f306eb98c53e4946fd8951a86ed48aff4fc978bbac913755bc998607ad8268fa6b5e306b4e1e5d83ede2271277fbb4d6f2bf2204975022216d4c3007fc0449c87bdb511918a7b7a8887b010a8829d328f65f6f2f285d55d1350a8d03314a267747fd3d8e0e46f995c72133e4c86f53a540f911a8008cf2472b8a77c3268a43bc76caa89bcedfb8f92734149002a9e1296c18aaceb2e0b06c654a4a7250d66f13c3c5fc0ba5b907c5d671cd590f8f76c712ef73474fd446660b13f09bd6bc14da5f0aa75ba06abc8362493e9e83b12e5ceeafcc9e8d629ac803653ec9206b80034fa3a3c8c877f285f447fb063a38a0b8851a8917e5beb5a5df972738b3822b63c5b525373c484e08fba9f4d1fbf505bb4b0e8c3fa1c11d683b610b3464751d5b925897f063b79240aaf54f0c0112a78369c118e6c478417f68dee10d97eb458a5ea52f651a62063842f2a84ee17f7f7211c94adc20bde427b75c8487ba2a6425f96898a99bd176a812c111ab2263be6684a11dc23559da2982b879f2254c4e534abd241b64fa67f245670db2d37958c17821925a5f3435afc9c04e0cbc1ea837d667d3bfb59f4c812fa937057101944a7c9d1e01df1550155e0b61bfef220732894073394e8ea9df7be65eb0944d9d9f5b6bf417148a89c56188e3dc24c181383ff2c36b1c343f2c75ee593c7f16d5d6343d1b06362569209f7b4e24a8b781065f46f64e5878c37596664cd803bffe700a943ae1ef67ef99198e92cf8104581c7bf1a98b9f66730a9172e04c2d32843966afb20906c2da3c7c6ab608c343739886488f8a03fe4d43efc267216663a364a053f9a3b7d85eeb046ecba4e60d9a77361500f4199f1cd9c47c40927f6e381c3f149245a8f7a09aaad6d250cc06a244c33424ab9a9a24e05781e5afdff8545d38c84ee76105e38548ea1eabcc4b32a838833a10514d6ceb3349b2e6ea6f08ebc12d17541d56ee198b98fa0c9ac8df262c8ac03edb397dc761242f2191cb135415c850551bc01d224780aae6372c5646226518f2c8785c5fa7e0e5a73d5895ceb527f24499a222decad0db0efb30aa04d48ab7837a06181643c487bef1c6769d0ce2a039ee376a4d716d6fbe10c9fdec0b661c12c58c4eddf6549bca340e0d1e566870279f3d2553567f078f394047e8d35e2bbe3e37f4c70f0a3795e5470f034ad0ebc0738fed02b135d5c981433558e937b95f9dfa177ab3f9fd6e9caa2bed26a3e9912265045219711d35677b6a53242727a37cf07fcf364e30252daaddb95260924b5fc807fae2d6eaa7a846262152b9dec5022d5a4241e1bca86c306cf18c6938f627f8d5b080aed2404b46b0b349c4846e0425bb4eadda0646b1a33ea9b823c455870a2f368e06229e321f5ecf5d260bad83d58e1428890fc3de970418fec0b6f17367077cffe50a4d2c434fc47eefc0f76688e77cfadbd9f4ad71ddf631009d40bd1239df197cced0ff5609163cdd6eb44ea2b117e313fb970ab7fb19ecc5824d93d10ffb972408f0150b89fba1bb3aa9e6721a23c3eaad7e415a6dfd65c3a3068753f79744ce1c4e8414d1d65c000a329a1241bd2eb170028970228a699fb7d87956cce109fe3f9df539072b0c758cd0e9241aa6490b40099268aa10368104bed41fa3c2b8a421c04215e2612729f7aadcd07cf9272abc521924d7484bddc3103d13fc31f608a246d0554eaf3845878696a3983938f0a03ac5c60cbea9f7a16e1684d04f59db6130a4a46ab90c67a7d49011da9ae309c69c7faf5ab25fee101e894554ba9f4a1e031f8438d99841e3afa0e97a1231136b62f33102a2b85feddc135f9070b496fb70d39bc65bad2e16ed9b279255abbd0036c6f53a42c8ec03f2b83773d9dc7bdbf4320276ae562da14c03fea02d034fe0b44998c72767c116c488019d794ae19257269dac3cfa276ba48008dba9fa492ac19d071e8884a6a0c511cdb2f930e38f941a0aa48b318b65b2145576cf78814a6902fb266b913d3a9be0a24793bc81961fd02fc15c8a42de1c7f729cba56c9715dfb091d95d9e03a23c1469ce1dcf688e202232e129aaa6c66b866ae38955747cb12727c47764d13e6b77a66ab11730747f4d01a8f2f699cfe0978e6fa48d228cc830478d8ddec67c87a1ac0c0a3b06de6080306a29435b40f0132213c47c0fde97e0c4fe2194422b46d0ec933357777144217a2cf04d1182f48425cfdd015d2a24ddaa739700ebc48ba30fcdaa0d4e1050adb1b8b4b8f4a455df6c3423e81b430410c5d1ad9d80545e10219839ab472b2111e74277d34e68f86c9844015091f69ea0c55dc239b60fa2678e38c31070254f19460767e3d19ed0a98e3f2c88aed7704e81f82f469702afc546a1c784019f6bc145f4d6d42afa518fc8bfcec2b08ee9bd86a7ffdeed4a3e7164986803c59e86c9716194728b2d12f007468ae803f6cf8fd8140d7348dfa1a0668ee19eef3992f2895d9de882dc2008438d2d8154d9e3a8e1397995d4c51562e2257e28a4fbca2d4e61052fa4113f6edbc5c5c09ca1f3d5a2c4a8c157117aa13cb3b7a9fcf4166947ef09bb7839cb9bb748f3fb12046741efc1e5393ec8bf5c08eb8482d9d81e053181c0aadf27861085a6f94fe09c7a3ea1b2c99aef581f54093f8d0cafa704613517a6004da5f89c2ff127b4e310a96f5a2d71eab1ef71b5aa072a2f463ab07dba7c3b54cbf9bb9057bfde2cece628c9a3b62fb625d9c50ab4ef8be39066ee72fa8b153ed9214d4846f60ec909e547a35c5cecf57a39885c845dde0d96164680ebc4a628537dbd404d82fa7b09675958bfade2d505fc68cbdca6232f3e9f9c1dc05c03fdff76fc7ec77b9835a3e33196f1c544662cb1113c1fddb674c97323f722303314652d24d94d9701fbd5d6623031fcfaf527c9a6f62ab1dc5de7df15c0d6c0c3d8195182a06d0c1f6d63afa8f05762027abcc03805b35e5eebfd8d8e0175bc6be3795a005b08140a81da86c09f24b602203414b35ce06f27658dee02665581a8c8f4d20589f890b484a1a89de9184c691cd2d1ec104139c610a403cd004a51fe2001059494b20663a71c0ad94fdd1420d37b65fc6ee964f0010f0ce1b576cd1623257fe3be732b8879acdbcec8dc0242be103741e077c5e3cc0f8f3b1599040ecd6eb59ec4f17ad0ebfdfe575d7f17175c5e83837e00099182f5126fc5ecb08b23255fd23798f0c3a511dcaa89e9df5e0ca76919771f746ebfb8c156233c14beba56cbf7b05c9bbfe0f1cb298833ff6691ff6799f90127230cb7f192fd8bdeb0c500867aa3fedb3084fcb8895c7591eec19abd8e53fdeb7cb4c3bf37059314b88639bc902c1b2ec1ad753fbf27b77f37bb21f2c302c39292f1e5d63e16f2caa346607f167800799d891bc1006b687debb9b04b342781549de9e3ea9385524bef45582590d3633140c7a928b7ee72b68cb1a9dc0e653d6202aca70584e0e6e010767b760a67091f87aefd930852bfaf3747ecf25b48aebc20e93f1733bb7fd0e589fd813b2125a6126b4980d369262a203aecd4a8f50168663f46b012e75aaeac42f9a3c4cb2c9a360cc3cefcf01d9d1844f1eb5a16628c971f25ee5ffe306327716e3fcc49c0be175ef1e3aba3e3397b918159fbe5b1d3d0c9e70e6fdf24005eae7e14247f8fb84bee6f31235ad3c6e21ff100e1c08587840984e1ce7457aa9b46576ab53944bd6707a2a9696802a9c781bd2b84113257e0d220e1ac86966e257723d95147932f0c4872daea738fe803fe71c9c2b2ce5f707325aaf22315079c5a9b517aa146d3e6718c095b922ac70ab2f860547eba857a7ff7ead23f0231811af6836706adaa058c698b35fc2c274864f25e54c66dd1f0068649d2f793c934d07ba3f1cc4a6b92d376c35e4c33a17f2d020344b4c6d260b326ac39944b6c8c297427c349ad9f1616f03c298bf5e3f98c81eb75934250bab8a9b98c0f830dfc4a63aaaddb1f6625a584bf4261f8046e7649b35fa03359f71ebd14404bc3aad4d31f70ff440d4706d6d76e95ccad366ee1de6ef69265b280a79a91db557866743d0d3490f4e3c3121226585ca2732ecf7eea4c904e3b51cc6e8c9edaca9d2fc83c89181203eee0099a850d9699c2eeb304b345f7ec308f08427409e32bbe7c440027dab4ca79a6f86930d8233a37dd7bb887ef82cae43d298a876638e64a54b9cdc3c6e6c944bdf51b670e13e5d6420bea3c24fe17db875d1ae716fa0c21b21760336a987acc96e6e68a3bc6a27591377b2e6867bcaa80e90b0c6c1d089d90ec3a4e99499a072499f3640d5211e4a7ec8f38a2588660a12c43806084b707ab0ea7abf14184b0e2c3e10bce07181008d7de79901ea9d20f02d056bff145d9bd68cba094b87c7e221265e8ad40a1e53c0290a79d9bc3140089b877b0571b5219dd319b7dfeaf7e75d28ed91207e3c9b3932a7f80b0481fe10d7c17e9242cb04188793a7c3e7f2939901860a956db92039c109bac0397b30974e7708d9f8746fa550832f088716111b3c10331ac8d2b6899910d66eec8ebf339497b9348fb923f10223db46c0eeff98f74670adb26ec451dc49ae7612443f92075b190fd9ef1b2be957e7ca3ee7c410e45cb92ccff0a74081bd977a7293545e73d85cae9a5bb3ede1f66384d45382802df221b375aa93dca8a26e4145080d5980d2926fb706c7b4fba3fd31de96ef18507275b8eabc5582a31df4fadb5efc2b5cb0e1b339ee7c6b1d050bdc31c741929c6cda13a7e8421adc79ebfb83e70a7759bf6ccb06a13bb30169444b7d52d848f82186d08cdce28b9cb6272df5a9e818b7af27e421d35f53c70e12b23737f5d5f86131cee75a3d3a6c899d6b1559f799d09f59b2ea740472dedc983977c988c2019bab539bd323d50704cae99120b0077c50d02f9ba80e01e14f763c235932e417586c342052cc255bfcbeee4a73b08af8528462acc1fcaa8cb0d4d8f193deca83d0f633b7b4af5c564e6332f8210a576e666eb6a19d5cc0aeab126d0bc55d0d17ef6b94e9c84026c36aa4d51a8ff45a1ece814a8b32db1585f6ff653c2b82f64891178caedc46ce3e1c693d3b80093d5668056e7a01a50baba3ab946a0c1726238a67a92efb74b697a87a4e7c3845d23ed58f079171bb07b56b4831a762ed01ceec681f51e91fe594cc8d1c463b216443e6bcca6c986c11c48a497a26bb32a33c091f0820d1724417f22f68752f8cd7506b5b68dc09b38b10620da3982b888e2d7def7b7ea02ecfbb9aa5ef254e71dedc339fb2cdb2f6793c5d7861ea5a4fc1ce127b9894167928d4b9a51de6523ddf7027fbd29639b115a7f2fd3accc1b04cf77a1bc00cb946f6a7842c5a210e47a73a049f180d364afb126525c0421522db666ebfbe425c33af61501bdcebcf0e0d31a939e5c1a96406540a94c40a02fe1dc64fcc0a4c4f8ab01d406606385b558ec2a838a343af012bc36a4f4bad924caa3b00874ebdf032c118dc6206b418f79818a765982b94f5173301e5b897ab7b0fca62126406db9789433737c55dc402c48a1f18d3e0c525391748783b6b7aca4d189a40e8c5333302b557b581e56097c090702fa17a001e87ca0f71f78c0cc7b29ffcec8962eeed104996041b39ab1bc6eaeb2232e594b5ab4016bea12789a8e74266ca2aa7e6c20ffd10198cfecf186b761468285329f6a69e194904f96dbfb531444e4d8fe0216a8cc74589533cfcb4ffb9a067a88202fc649653fa1dd053c00d2945ac7177a938189f1100b17ca163d9b0d860170ebc570166248b3fd7b5b92a4b307931d39b659c215b560891af472792ddbdc58f07f8c29cecab6e5df7de713ab45b037d3620556a5dcba404fff99aeaa11d23e4d8c49a18f1bb81bdd13bf726a99d54b89aec094ec5c9cc1cbac988e9489e5d97d3fcd1f4097e45d00ff46609a6acd276bf4fed1f8cfdb1d0b4fdac5cbb00e0f84e03478f099f35890178155ffac8992aad4d6396a4757eab0503fd64ccf1ac1debbf161332d2ebb9818fe5914915f42bc963a1f633d10bfacfb58a85451273ebf84257c77bf301d5c85e2e20de09e7905589a8595020343264d5e74d8f446e82f100e1b21064aae3e2dcdf5f051270953eee7c166932a6b482913a93b85520e3771ffa9553db73b62e5f2f01fa78b97afa9d89cc4646729eccfa510594a394cf52bb3babd2d834a79c5ad6af160a909f3e2c3d8c72f66f8af02122f378386d36f8e605db588d49ffd5b164cce0aa4fb87a9820d0de26e060d6936fcfb257266caad6e4ea22e50a2a6289820b09967d6dcf048f0ddc7696e19cabe3be8d8457e3e56ac865dc91365d1ed79052738e37dcb063cf4c3818425130385390e925b84ad52daf0883970cdb1847b82a6391ca012bddf464242b29cc744c7d318ad441d875de0ab72f3a7419d05d36069d56d5b08064b53dfbe23a82de3211e9fdebba5232a792e96750ca2e9d8b559371e92544848ac4ff2e1d0ad95b067ce9d82688dbc0d7d0a152be98ec485f81c78a127fa4f2bf067e04481f65852dbe870371bd6dfbb5760d369354b3f14e26b88c52e43022cc7005c321ae1318d08433e01c5738e280ae66f0c3c8b92e1e12b6288183f6603cf152a44db9f1f8fd34a57eca6b11c269a4ee045baec88775e623e6545a0cab1093df86511f23177b78d0442c5e36b203b6980c0ac8638b9fe2b0b5705e682b005b9898a9e3d345d6316c38df258dab1869879e055cb27e5d04caf4c79bd34f4dcc583ec498a7df2340c9fa350b1bbaa206c90f412c50106b7d3bb52b78ca6dcdaecff9576d06bf4bd42e8276fe07a858b77b90552274031c1a2bf851e758e72713ea353af42764a2e0cdf29535c39344ea9d231d6a7569c27b94438a17a8400597071577abee31a3df968d306839668b456588ccb8f463a37c7a9393e84a1b251de83785ccf29077c20d685542fa23069c29f88602a89047073a54bd39b7fb022f5236327ad99277c3c01db382bb9071c93032d38ff8fba53edaeb8bd87998511163b505265791a437febf507c60ee6849a700e5f2cfad3083c6b10432a8a0b0007e626254ab0b6c6f3cd2892f55e81fb7a95c3a6370ee11c56f6b9e7fd3ee39f27de3ff9f0b299516b521d1c48639651c98fccd15a0f1c7453baae2a39d50c2a3ac61cb4a25dd78239fda3cb353e1d55ddb7d2b9c485313b5792b9742f1e6856e5a85e393d643e3375b21464e90d1667cc54d1d2e93fa4712949fbbd1cb1b25c712362e5ffaa7fc58ab8fa27f9b69a0ec3915e8be051dd1277bcb55c520439ec344a83717e89f6ea06f6082f81414b46443b905f3ddab39cbd8f5f040279bd3531e27b57cdce3ba1ab9d270bc73144fd75b94abe7eec901b5087ac5a041b5d1157d9639c518eed042fd2474abbf9ec08c08568aa1e05e718b636b97ff649664340c3f57426985b97a5820c54891ff16f31c42fa1d29a4fc220b400bfa25b516e6bab378026673013863651cf3cf1e41c12b10dfb378bc641ba02ff7aa48836553b21b5ced19a7f609168fb9cbe150cb8a1b5524c2e1ffea3c7c63ff37a8e8e6bf34f38df17fe650873ee8e6e0e64422cb77e97e8d98bf10dd8b630b409636b42a83c3e99b1fce331083d022dba4d5c6bbdc19cc5a1c1fe9a45f80fe330701fd8a8dcbcb8bd65a03271a5c2416ac0455969e76dd5cfb64a6e28bb8993a4b8cc592d0709b7525624c9d4022a0c0a9f086aeb2c5b10452ad153850003a65091cd953a250405e7a758ba0c83670abbba4cfab8906ce29c357cca1c8062e45860b06de070265952c3cdf70d5d5eabc5c485db1064e96826b904c045db19827efb74af4ec1e145c94424ee53594f21bb8455dd047b7f2167552f6606bb39354e89a5803a7ec6bf3316c0b454e7754ac7c19f907052da5f501d709ce93d25534702efe34d2639e4c538b3e2d4d38ed45aabfca3d4c12e7c3a348ffddb0acc485651f6e4d7432094f3e55c8062ebbcb8c7181d19a8c337e2dac8e307236f74a005f584351a75fa68cf5bebba18b0722c5d7b0fd92f56b2540a6be5bf9ea6ffb093b9d59f1cd1b0537b8f5c2e1c027ac136085f8e0523992af9555f8f618eb2b9ce5f17513d6d6be39d15da7287a602e9070e2c20d11ea3a7d46a3afb489b18219e66e60901c9c50727fac6e45d106b715998058485cfa758d700d3d54b63cd18607522d3a9f240442801f6f2bdcc27f00785d9b8ef1e14e99d6fed79abf396e5bf395e56115f2b876e539d8b9869eae5d16d996f2e0dc8628bf42191975eb654b913a8bbae83533b1ca2d31f19bb41e393d7eeb91933327467f9c18416fb21a7572d66959c3854066e007774b61f5fa56987541c838e029708301f9a18f14e39379f3bb2e64721bf1b2099b75cb04575eb29dc4c527168a0943961ff6cd3a939ca798f16f7da2c383dabcbc899a641f9956844c6f222e6b21c3acfba99c5fbcf7822c0d4bd15dd94b5acf4e77e10354cd8fa959c792999726a599201ae8584c49b7fb261c4e7761d137b4cb3ca473d699025d4dcb2530d4b19d758f95f5045f1b15de28cdac83019d30319fa97ae3c29154b6bd3bb0ce1ab4a8bc8ba5d8869abc9538e3d6d78aa2220459f12b6395af4319bb20f09df0bb10f25ce14e76f682a5d1b23367761a03fdb0bc4267878231a3a1b12357ce4ee9a10274c80f405363c910b8f3d8894696621429706564cd76917c1d4c8a82fcb24176ff4996d20bdac1d5d071911d7780bd3834fc493cbf62b482460f575b8d76fcd8ae46dffc271cf39a89b563665f768fd495ad43498ea948e3e4a526e21a75b5138c52848719f381595be368fa2ea4798ab2b179b89e093e941729c9b62713955c8a69b0943269b7e2aa8c882fb3db6704c349bb0bc54232cf6b7043b6a11dbc240ed69804c507ad5e7ee051c33feefa4b59699c998461b5e8850adcaed519a002fac7cdfcffa5d2e94f1d56f153c0f41759da57735ec94dc0bd9ef4ffa59dfa60e154479119054043da94bb9397328f69a999b7461705a5438e3234473abc29baeb46d9fe8dae31c70843476ed3ed71472edf1c4974545fd10d0947c8423631f8978950142e90cb8e88d4066914421e3a9f802af344a74685bcfe52744320fbdc7072952b9bf7b511c789e86efba2c36174e19840e01d5da2d638221ddbe986931664ec813cbcfe2962cf552443c458b13c4d2c6c0d0f8700737b5b6f213db1681c39d6d6783b5b6d9df549ca01f7a02c64a28ee8cd8e998ae75b90231afbf34dc0e71b1c6cb3d2d766e05df187ae5c9e6daf69b6e9b8f6a5834c3cec4c06dba9adfa079acc80ec1095f36adc522ccc0389f33e2b5710fe69d17520e8ecf548e6f547b020d0bb902345c995ba8539c4e4c76b4d61648b39a4e55c7b659dfc69996c77d327a1c1d30dbbc2633e87746d07bf2a6ceadffb8352ff4842ca7c9302f6dbe1046e3e1d6c397a0b068652f1bd20b7f68d66bbe34505c04a1dff155edd99a2bbd86f17cb75d1affd8564151100c44044283354ab8b59da38d60f19ce319a5945235b800c761a330192d10baab006da42ae7a54a80e804e46e5cd3f1da6263986ec2de776ecf8b9b2a3998a46b40d7bc603d7934a2c74a423ebea53313bef4a0bfb5e1f84f1f6cdb2900a9f73fb5522e536ecc09f83ac23d48a182b13f66b79d837da524cec4ded7144094512d61eb90e2ab180a84d5d5a277f1cd554cfd5e55af3350fc017bc68a3803078435dd795c929ee19b0213c9c9a2573a91c80ff1250ea65b8902c507f45714a167a4fb4ad7876ad3f0e704f9f7b7f2d9731c589a17ee3a12dc0350eea98e7a22905fc3b30d8543cda9485be38de7dcb2cddafb779161e042a549be088d4ecd8b4cb9aee1594e170291cef7e0fdb6fcb2ca24e81907756b5ca4631fcd4cbb0dd3015b3a75bf23774c006e8cd9a405583f725b8b3cdb0d220959c8d21bfe6c1b668fd0d4db52d9bb4b681d236de024f272b87b1009d739da4909d162411329e7b2ec273e564a5e91b9648f5b8ab3cffee346f959f109fd0ad2c1edd6698ac04387e6d12464c08682bdf67cb0eda7412f6ee4448c1de68aaae77b393a7a20161b0e40a9200c308ae2466b5c4baf0157102ade80963819fb69f4a59ef026f7225b9319c32f59e6c7b57b9fcd2aaee627a3a8516577dd87fc263302c3ecf711d1f31e66789b683004d691ee47097eb7cfbe50c19b226b25cf7bfe4ba3dfa4c858e91d362b77c214bad2049b380e770b9a1d0d62915bdf09473a7b8573fda9a37a934e6587db4abdb88d253eb9255988ae67be38f614da226cf534ce49936a76e8aefd97afe1cbaff7f03d1cec48a4eda0e3a57014c1f8e8684aeb839f5d18b54514d0e02290100462aeeadfcc246b65bf1b068f054d421d209b3a323cc4e4687e35c8e2a2a2c3fe795592363b3a6afebc92ecd76413cbf68ddfe89fb480af23869e6d111164eca03e21a16b4853f860d0a86fed544f6ed33f1487351488a672bc9f875b673514b2701b1982c1ecc44b2de5ac39e272ba731f70cbfcdb2f1250b872032801f5da54e42c6cfd3eed3605adea71565ff688ceda0468ca2c450734635c003dcd02a6269581ae175522c2c951d09d3d1a1a4fed536976c3efe6e911c74ea6753db31ee24dfd48b363e932a0a9a2e0fd68b97e102309e5dd3a54ff1b69e43c3353125549318e757229b6a96280d8d63b822fd4674bd0b778d7bddb0463ec9b1c52d140fb6729c5a52ba4d20ab7a7546e36de2089dbee6109c125e0b59111ca507c50f5cce3a3976b0a28d92c0912b1f1d36065c21abfb6b24e2d7b76d109efd6b5540a6be9ba9d5d17fecfbe03eae9b6f487315031e8602225dc7b83423e1b574a2a38f2e8650a1c2910e71a77fd2ed5c99886cdc114d50ba358bb051a34cc47f2adede1344e4e1e7aafbc111b28dbf467f776800c4a39968bcda0c27563db15a99843cb066e5c4b3d045bd69f42dac996f7b3b371c0af40488458462c1b60cca21bc5410a84fdc9b8642e44d1bddc409d0666f1406cafa22a1339f2084983195a1f82e4e414c3db80c7d7b60042d3e7c553423a83b69de1e609f2dc676c2652a11490d617afcdf43a041836bfb9e0130d45cbde5bdb877fd939fffb78495139d750bf846e50ff3848f0c9e64899978830dff7f1a9e8f7124241cb4399866f1bd5b38e077fecdef0c3aaf4334894146400d74a825d4adcb18de1f3b3c09efa064dcaf242c35f126cb1f99f8d8e4c6a31876bb8975b944db69dcd265499950b9b4966756321113ee6e6562ee65c79b98a6f68c494426629760da6f31b9c41c6f30521629abb1737a0c4aad8d61da0ec8608989a3415c450a84c79a447c7f19264d41e3fe17260e82102c8236083f36033af55552cbd6c71e84703401c9f3336eb60fb78f22768eb19600a0b92364588510f9e57540f24194a99010b24c2d113216475ef5a6b4af0b1835e5b17de6ad033e7ee92cd9083f8200c11a0b60e19a66f307a3319c118c1e289e982bf10b20f64b8ca146f052d4e43ed5e4b7164bba92dab46cbf551073e9ea632d7e6b9bd61653dbed08b31dd9bfb0fc15dde7205b045baacfbe710bbd54b4a42cf02f726787d864bb38dc82a3bbf58061dc0ab7d211e518dede1d16157ea55c5a557856f07c985a99b88b4d189319950786b10084c1561ee6cc2656da058b8d8152128101b3cc9aa7197489606c0e0874123f15a55c19dcd8f4c360067cc898bd52080c3492eb7150fc50227f5ee42cdd1c063bc06dadd5606a080a2bdfd8c3e7e25cddc3059111bbdac9bf0633c2be2614ef32a0d707c98983cc1f8c096b17c66a628a708d92385998ef45043be89063310628054926deb4e6f7944e4388cdd4718da303b554b0f5a906266f5797d0e7305d80bc92a4ac301a2a1474e65e51294affd09c8bbfa522efa734b7985752c7e5ae07b3454cf887588a7940090a39bbd7b70374f2c69b785b429300ab8c7bb11b6b71d2ca7c3131b3206fec376d2119fa22fc80157b12a2106cd08d84bd2b3c277a8243b812f58471be9a48029c68ee6667d0888ccc0bfaa0d13ae8d05607a46b5ec17a379c364aaa590fdaf3c6dacc0609e153202867705c8d0d5d1e02b8b5578577ccedee2451ff85d09e8357c594f522035fc30e0b063a57dcd6baeb5f507d11a911e4cde441388f805322f99627c13ead5cba2d1dbb564229255514231e0a666d08f8720c88a6917edfbd819285ee420cc50bb1381de77a120228d9b65ebbb56fded6258044ed5d22886e02050fdf6b53762e000fa9bc67256c295e16908f08c000bf889a19e5752902bb72cb21398b3a17412b3a509f1981992ad218b3775c6d4e8105b5872e55b691cc6fcea25891890290d345e45f3d4b6b35f839de4c2a1086dabe9b556a163ce61d8511034aaea08ee29ce85136dccf2d8fee8674e3897ee21cd17c8aaee6a8b44b01ae0dd1463e46e3cc8d6030774fc91b4297bd6cf17f2e52e31f205ac03422e60f61cc8efd6f4c91660282cf62281b400955e2f91d0a748c77d8c84a211d4dee10d5fd466eadb84f57d77a42187be4ffeac23ed512efce40df4a4176a54aed53e196ecd8d0a80287cfaa3df573e0f8be7778a83adb3b891dd0fcbc97781fde1df8b16f480dfafbc32319ce4f69677b2a940f78325ea6e4e55d4a7ab502567a5bc37fdc11a2ef39f45789fd845bdb5b8612154511b05c26f669c1ba3f3c3ae732f7ab14db5db3536a9a102f8be0f32dd8a658e1ddc25e39d3df7192be1f015c93b46dd8a9cf4eb5b2db1deadded7eb71bdeae89b73f2efd71e5d2ddb1efc657fa03c7cb76faca8c6f0f2eebe7f2ebcd4930c8a3a839084f2579610356c15dd362d21553fa3cd7cb08506c5d21c390a3a46eaab0a00fe30338fdf211f181f542be32f70d88eb353240423c4dc73e62503c08a879f5ead46103ff667847ba5ce47a5e263c223a23cb8f26c70b016ebbad42b922f26f2da0327780a4d1f025f5622212b78538dae4bcb05a568e76cb317b17e1fe5d9486e3198053fbff20bb5b89cb911837b98dc927e95ff3eea9b7c6c44dcb70554d7540a9bf87a416511bd5cd68c1381b4c5936e00ad653d6670d8df9987f2cd35298c7bdd8238447bd232e7527b38d3b7673e0d133cba30f6efba01ab5a6e8806fc58aab81bc13c8e445c39baa5420d417aec30a1d9df9e8934459845e8fa1c7a3698589b15ed5e8a967a8d07cacb0977a1963b727a31fc32e197a9b21a20ad28046dec670cea787aaf84b21b4bdc84df08206967f961e38ccb889b3cf9533a4e1060fd3ca1906deed8e5845b02433f1624e92b5b351db3a9a876ee907d534ecdef7d6f46d4b12dbd61400cb5353097e53c970fe4cadc9f70423d8c45f3405cf2b340b6a0124c67a931dc699e5b66c456c4d683f60d97f4f41923a81df65bc3f86711e331f5445c7dbb3504bcac74d4d1f78940d94b6eff1911d834d84dac2fc9f53bd6f546d57e5736151fcd9bef2c1443c71bff59ad2212e08a39b54efe330073d76da089d85c6be7e015e9f66e388555d559fc2263ad9581c81c63a6d6107fb8df49cbf24b0499ba54d5b6ac3e404b5a7579745056e7ae3667fa720fedae869cb360dc77ec19ee6cb4af9e1d5a5fc271c29dc88d22298d9aeaaed12e85a86b95df66b4ea05ee39f8804b233e19866c5e269786d0dd428eadaa4bae97bb1b77d25e29cfa99e2ee81cf7774d149b8c86eab766f4600914eae07031519ebabc7e85e62bd3f4a6cda495a65631fb78aef9e1d517babcf000872528fbf4928e10248882c30c8d5f1676002b06f6a7aad99d47937a6b177b17ce9808c9d355078df3981ccb3a55a8ce6fb223cb1c299ff65fff39871a2e0c9e92aa65313b4a5bc5e73bd5f78ca3624580e10b19b0531c095c7851dcf10d7e4ebd4f367a79b6d788feacc82a81b881d7252e1da89ec63baf6fd294c362b83ace8f9555ad694c283f2c6fd6550ed0520849a432001a0c3a3abc724c0d40792500d35e1c54c1ebcfedc1ea6480105903007767663c012d6f81fe464d3ab13403cc714161a9de45f3c2ccf4a96b23d0ac196de667ac2584a581f459f64fe805e83bbe7284c70080dc76223c66490ec465efefa18d0723507552ec28281a0c246433206fe69c58424d41f8f6df03f22686531ff3769b90b481c23434a7fb1187e40f11198a5e96d1a1936678e00432cbc6918cc00aa88f05fa76f39e985f0266aa3d693b073f1bf10708e0bd522228b2896b9c15b51f86114be582b4d8f05ad17555a34ce214b337e51b9c6f74cb1015e62de2075a33d8ecea8a089b7782c85a504fd71827f675b51fc7e23127b921e874671b89f474ac74f475dd38bab9abc0ef62036ff7176fcd413589313679383b009d6fe9bfe057526cc6d5d2537130132e7252851c8964b677639095ff3170dde08ffc4fd7bb54983f227572a09accc0526adf88aaea15e052ee15942bdd483189c906fc997e0cdfa0071c533804a60afbc2bbb6546e22fc098004092fe72e3172008b5a30584e7b38c21d48f0b670a1b5c2de43a7afbf738d1a2711a39d20027f0e93186a0f89b9005e865c8b2603dec499bf5c7b48d573531e7e6d20f8526bbf7d7fcfb2fb3c46b110e41f0f1696b36d2f46da7b9b8947cfc3878f27f4775f50974d485b020712da8b3f5e3edc46c68c43d6a66ec86ff5ab79ebb37b4f297824712d4ad7bf724663fe8db6d9e47cff30956dc5b8090d82d6dcac1c1b67b93fbec1fb50180cfe58348cdb1e1c28ee79100a1b782630b6c7529827f7624181719021ee3ce93c3e83a7b6d8585da3e864fe2ad3365d1c55167b9691e6c172947b45dc1565dc5715dcee5557ab7881307fb5a5317d23deb4a99b2dca7bd2cb12b3a0ae0040bc3f4a5d35f9ad8bc8e750d64c55451229cdd4621478bbd1258dfb21b8543aef0252b4c320ea7059494e8d36775c6d2e9ecae71c231df71f95c40ea9a5f2baa0873b4893b6770140f4b144e8588031a1760b693a0c23e1987a64368ae7645985af85cbd5752314f7756b5d0a6cabe571c1bb5fbbf793b02138b08bc930ab90ae1a0e37570b253ecf791e08d0448048a6afbab5b30d819a7037d376b45e648d603f262904331ca890b7985939b4aab5dd55946656d3945514a27b5b7d814984f6e28a75e0d08153f00400844ad07f19b188ac61118b99c9d881dff2c25788a68ac3df0bfecb6f7de5bee2da54c5206d40ac10a880af1e4d3fa9f9fbe790e88a79ce9d3356d664a621f3939a46c933393a7cfcfb499c1d3c7478e4c8e91e76adab408933a937c0ce1f93172191f22f2188fff43260fc9e2a9260109a1ce5459958aea046b8b9fa118da344b45655131f290e647188bf2821557bec833af490875a6b99232542009c354e2a767a1ebfead76a533847986b36ddbb66d9bac40534abac9518c3712f1d0bc639d47e73859bb6bad190ba0eed70dadb73714aee7554a8f077d4ce5e2f21205cb797138ba72ce71b9464f47953b3487e986f1c63bd0e84ccec3c8ba8979a9bdf41a126792f35e3ccc1b8d6c46c2c55e5b0e2d9779d8e0e32cfe51717374b82e798b5d5ee22a6efc2731ca0e29f18b474f47d89ebf602d788bed47af0132bede62968f5e0e1855dcd008edc147ef069949d2e3f75ca27b4ac50f1fad96cc72ef4a7e71fd0b8781c93453bf987af4b4cda9633a5df272283fb26adc80351c460eaf7c916d9bacab6da20cd82bc2305d6253f81da20ece116ef526691e3ba74d99c51e14dfe17e0d4f2fc7e616df0fe1880414a0effa35ab59fa39677a46c06cf0800834283fac2ce9e292eba6033c9f4e71434c2597bc200a1d78356cbfbded46ad653e4faa4faa138da33f7773d724f5e08cbcf664cba17d61ad89f664c5f2f161b1b0978f0f2b0a8b15c5c7621528eb105bdf388ea33dd4a25eadacc7da7b47230e63ce396fcc877bd9179765ee999a49264e972cd74175a6260e4e5073d1411dd45c4c9cacd6a99aa90e92122f86336da287b13aa8b968afbe79586b88b1da8354971d5443b5564e02f976ce375697a48c9f274e83539ae07a52ba147665b5cb3c535d4da9b8245b9ef36989ce9621487bcd33d5e0543538934c55979ae37c738ec353355333e5f518f2d237ffcdcbb1cd5497641255167f6c284381a288282ee79d65924ef9cb74a952c2c5ad990545174f5dc5bdc09434f8733997de5a136da5c2d80ec771edc39a2257d00202952f4ad6132838140b0bc97547b10eff827d90b8b298ecec34e9e979b25a4561b12885e24a293e3e3311e80812437cac51b4260d4ecfb4553c45f9f845b8d23b632a6ca74b1253613bd80ea6c29460aa8aed785cfffc5029aeff14617457baaa72b99ca43eac2a970e4072508220240168870a344144135c4278d862054bb8e235a4c1e919f8001348bc62500e0ece111d9d28ae448242857305f43eb473994ea940390d4e598170aa4b85a9aaab02d52c2a5075d16ed369509ae0e2487f395a79a961ac6933fda7aa7e9068327db34e2842167eb6bef346a597434e69b53ea4baaeb2f65e56a4e18384e24a2a7e1a9c2e8970430c67aefa374abf7144e288936f4feb79e2e2c419443e1d03229aea15d1663a86135620a069124dc1555ff525885179496364b070438e39122b1db0a27842b332dddd9a85a15229e9c17698d0d6f5414a991807656246ee73d551da4d533c65a82c46cdc61879644dd32863d30607791ac20da1bae43976e4a737ce632c0c4a34c5604c604f3c3645cc48946581d12dcc5ea872dc4ae72f7d33d7a07db5db57973a7f1e765756a4212b2bde983ffdc3f363c987feb0fff3186560f1f073ebdc87edcb62ebea761cfde1f82c32deb0d6e69bdbf2eda53bba9712881b62af95d564bd582e26602104229e3a1654335db19f5fd772f06d90f4651dfd9f85d15049fa34fdbb76092a68f1f10ad239b75e0ece6238660d77e8bacdb1202a84bb6d2e65b640f7d28328265b524937e76aaddd3e544809a17cac9802232b8e8f1559782f1fa0235d3bb2b4d8a20a4f7f664c781818f77cc56156603c1ef161465410691c18f91d6111c61c89fb6ead0b91aa673e7211265597aa1e1bb747462041eba5d7c38ef832937a603ef14321f55fbc33469db821c612e25a2ae5be384b2649a02c902062082850d0209e38dc2fa594d2ca2cc3fc6da5a7a371c3bcc448a3dd0b69d8f6822335f122083098b8d5b9183eb73a37e34bdccc31106ec55989ec4214176892a0790189176aa0d4c8608147dcea363ff041d03489b2c97a92c58734ee63830010802701a0d1835b6908c0889b0900062730d458d518000f0640801d10a0003a28400c4d6230400e0c205332e1c07453c48d8d1e1b376e7043061bc83003cf4540e6d3b9190ec0e400084800f6aae3f81afc89062705cce05605d0b0d334bc9ad8c0873e3a9763490d928583f335870e19e8d811835b7d070f25b75eee851cbd831b6d5961c42b7108290c2ec55c4afa82cbcdb85081a40c9d319c08c3f49981a8b4545c7043eb92ab2c6356d6fecebebd34c7b81a688e0d8642ba3a8739adca26c54775a54b4a9b52e728a5947673cd75dcc6a9ac2b73ce91308fbfb9919f9c8f12507cd82e2c5d0d5291ae4927aae523124ea66049d101c7b30597d41e5f7aa55c50835cc8200c089c599405aaea76c3d151a976767a7a562cc9fa107b21f9d434c520b0ac40e19ca66755da74332eda1ee912923675d36d9236c5e04cb74abab4d3f3334ef9f861a67aec95e1648d0b2e73395ca0b12bb8a175d1242a9575aa822b5d7a25c997f40fdbe3a429b8a1d5b2cde10805ac99b2b4c30eda514d533ceda42ee57cab95723166e80928dd483f449e7926722327eb8a37b49f99a8310cc3308cd32ce730357c51595d9360756379c473f87be939809ae08a7c898e9f464e978c9c935d278184c973b8e5a3474b70b1201919a0e0a027282691b37a790a2d17218653b3e8527c02abd2a6781ae19c910be1a751e6d91c53a9e8f572501a8a5e8f2d774e8320ce6cc7544aba9457ed3207f3e952632ccc07f3c15858148c55dde35836731f253ec0920208526458e441f048e7b248e6f0d074adf20217dbc8634830825b3b299d6aceb59c345b17952d639d4b6c5f61675f945e1fe80b992ff3125108cb708e107e12659ef6f9edd2d3c179f7c3fc30032f64e625a2dc49f1a144dc50267d4402075da062b0754d9bd74a13419fdd137c86a74a47049f94223ec314657558ac8ac5ada4415583d365d0105cd0060497243d4e9bd04f249975f46b5ce09c66132e3d7243ec3503c3991bad9c0ca9b1dce45a1d5c6ba9ecf0dab66d738aed132e9597941f3b69b1cd318fffe2e5a018d6581a175d9c26eb72399643ba514ab12e6b39b42f3e2281032c8670a96f16db9cd3360cdb30f918d5094921c22b07dde8072ef52dcb681e5ac7825e6e3d88d5ac66add51c734ec358d00bab826d9383f17260984b9e946e4e9ddb301684bd308c55d93cc8e658deb62d63411f622f798a3ffae893c40ba460e2c3fef1a448a1474be201dcbdc41109278ebc084f56f47448cf3a64ee24a906a7a70080049545e152e7bc7ae73e225b870e412db65dc885e6b89a2070baa9ce0d9a6e35540e331c19116e148f1324edc08d274904124e94a0c239654d85b8d23bcbb95af9264bf3aff5a41abed64b77ec32d9d9b11b75814a856d342f540e5471a5d7f654bc2144be8efef609f3e2719a421a46bd3196044c7ec95d1ee52d831bb852524a29a52bdf0bb28a14220cd3b99a245834886b9da3395666ba2e7599c9846bbdbd1c3dc4292f44bafcf66ac05e4eaf86ea5c7b3dccf8e8d550bf33f576643dc4295f7b98f1350b69975f43f69d739e5a5cdb94524aa90bcbd4714ba57bbac915aef49aadab7b42e99c75d9977d5997a5d22c57a5b23e4ac84063c20e0edbb41a9177c5a430852db28c550161a0ea82b8d4b949050d05b184b11a4cc51bd245f98e46ae2422381d4b424ba2a12082d3da7b41705621b3968a343670dbebcbb990e39c736ee372e8bff9b496e3aa735bec01a4f6d6ed5ee82f331664824b81b8f4595da2eec3da80c604116e1c561388f848bd87eca71697cee764ab31f6d1dbf1a23897622b089e13b11e2249cf4173cf73b01ef2e89164c6c173cd73d0ace710cacd1ab29db4ed144f3cb2575deabcbb47e00791deb9f4ee49c2ed30af87f4cee76a5a7bafbbd061381ee12bce5e7a37cc7c8771351d86290fbe62eda5a76365c7e6d4dbebb17996492bb9c775ea3bae5337f2d1d3719d669a4823c33e0fe967587c0c777e71ab4abcc1f9f49ed2a6907bd33b0b3b53d314ca8dd21a95caa8aea79bb4693e79f1c2c5a5eb7aba54bb49b7cf76c5952e510dca5448a944a5642a6bb5ba356da663cea124128992288944a632ece5c0b09eabd0ce283dad564bb6bc81a669eab4a6a9835a412d9f23703e9c3aac2248d163bb62ee331ca168a1048fe1ec5bbea649f6c8966cc9564d4d0dcd682683ca1ed923b70cff607fd0ac73333a0dcb1eec331c8ff012cfb7982742d182ea352f8774f9b23ff73557f3499c361bd0ad1e760fca0869331d091b849f3d93083d36365e7ba69aadcc71f45c654a6612e615237c63ac96799d319d441ad389d5e60a67986cd434c968235db32b37a6e2b871db4b2bd299e4c11202d0326eabd6868d4b697716d2cb216750de6b1bb62f3b1ad268cec9e839403b61d6b90dcf8f5c8cdcb66da15095d730f61c4b17db94f335163c1f06837910f3c3826e8f611e1b5762f254310f693e62f1d46b9c50e38ae0742c731bf773259ee2ed6d5c7c9ade139b58ede81733ac43a104de3a8e6e6c1fe3bee2b844173cf80f4b201c1c1c1c8b290bca0d6bbc86661fe83fb9df7726a1502424edbd04f31928967dda4c7009b7bd458a2849a9b37cd3208eea5d7390f61944a976eb61ad99d720d55b7c1aacd6656b5c23c77133c30de5ba45aa96569390b070542ac5ad999422a11a944ddcf00bba29cdd0a5a6517e3a25a148a82ef5df8f506240822fa84b39bb68c86d5c4931a9dd7ef71f26b5a330a9b30efcd579e2125d18e179e2125dc8e0b98f06b79dbbfd83db1f963db3e3a9bd1df96bbe89424bafa9c94ec8ae215c7a5313346f64e0bc111bf890b2a6044919527ad9162e7529b14659b3062e1f8e271b17c6cbb143d6c26c402985e9302c71a20f4e113f63d5e09cf1a4411bcc58cd60cd587549fa8c2733b4cdbc49425994e5b2a9b9c208460c188e71e8ce1a57b7d3d8a23293fa69f172b4638c31cc7df9720c3f007b13a5f0b3c67581f819dec8182201d144ed1277083f732cc24fe7541773cc6fa629bba6cdbca17981c6cbc1b98d5b6ba5b4d65a392ce7773bf6a76970c32fe8b7a71ad69e93d273e9e5f0bcb1f714c725bad0e2359c3dedeecd3bef7cd481d730fd50639616d8b8a10d6ebbf5723471c3eccaae4c65b68c1950e6ca64345156b489df241d9d11c5b941ae49bd979e4de9d2e6409f4b2b5a5a1ceba5ff64efd2edd024a26906459bf8e92e5e8ee68ab85d43a5e6d5a56d9a686adacc3b9271fdd0d434599a4a85682ac43ec6d5b2cab9ac9a41f5e9cb33582eff30868bc670c59841bd8d3b430a38a3f5d341af07f63340cfc78c1777c40d45a919ac695a7197f5993693c5c3193f3f5de67086cf4f0f67b4b26b05cb130baeb9b8a6356da6f599a61a960f155dc27eba24922bac19547ffad4b4da24a30ded9a5657f30345bc31a54b338b083e11659857441866cd13b12423d8fd353f35ad1aa09ad60a8ea78b63765571ce35cf54baa47986e9c78270b3f40ee794d3e19c42f5298e3e381bf8c6f5a32733a906ea9bc70f45a91fdcefb5336d7ecb1e9e81bbb9f1915eabb5dd0e975d99e368fb637f325b01608f607faadbb8b4c6156fc0fcf4b0a64a0d1779466b06d583bb9d6933bcbd86e3125db47ec3da5b91e59e064c1aef90b5ba9e6e67c3d2c973b2dba20f4e941d62cdab864a83b3a6cacf9aa01ad78d8efa372414c7ba618b8fabc5679abea02f4886b3249b75f45bcfbcc6d5a5fad36ba874292ed185ce4f979192a1a44d510aad9a2a5d8a4b6c21e8a7cf4f0f65e4fc0c6b5e325a15cac0504b5861041fcaa809fae936eb18ae2e855f904f974299965697c2182e19579742ca6a91d2a508c54f227cd832a5477d1ccd5d9c21fcef90b5f217c473bfa08f8b7c71c29a28fce48cb871892cf47c48427d166ed8ed7c41d9e5d3ed744cda3443db34f804ea322c2cbb70d04e9425492812eaa757516aba0cafa1ac1ad7b4b133e8c18270c319d40c6a9a30ff192cdf6043b8618dabc64563480074d2094c818b34a1655971a37352ce2cee34591d202d852ba466400d529cfd94e0b69416d5a5a8d3a03dd2a0cca6a068b6289d98b51a943ad3a2ba1423136cd398fd64545871c3d1db4cfaaea6a837123c1022fb697589a463be75ebfd329b42c5cbd5476b933428ad4dc9609fbcedf927a99e2e8576a789749bea92db242d2398b9f47ad0e75ad2384331d2c8e4c723f3a39765ab433f6077ba24dd32e9927fcda1a539cc82beb30e8e70695066ae2c689a6c2a734d93d58936d2ad8e4d591dcb494e08ce635dd2cde1912d5ca409e3ebba5c97eb92c57520d3e463624d6e68df04a4c634f98836d2670e6d8d8f355eea208994f7be8cb6afc009e0e6f0740e4f1c713be2d370be7e4ee90a67bc9437c66a597473ce395bc6183ca3c7f99a56e0224d7863e316c27318c6d38c5569b0561b37b469dbc6b528e6557c0ee1b6db9775d59a6553ef231422709eebe468d42def68f4a3ce7bc91dbab78ecd2a2ea639c66dd40bbd42f388b98a36d36f122ccc6a33d05cf0130544fcd4867875d07c851d5455327fb75d725dab5b2a99cd700ecf86b9275d3693a315d00ed04ebbb4d35a3c1bda56388ee3388ee338bb6d96769a0b757936b4613acf514a29a5d4b32ffcbaf073156198eea4f5353efa3869c1732c5bbc7c8ce8f928848f3e4e80be0a2e5ec64728554c79e9e1802380d72973523cd5d0e2861d6402da01ed03d6650e990f11ad4e228f9e0f51c6316d6e1a5cc2fc88c4ea0a548896483831228a0f486995e082f38286a5ab4e86e03455cf53a7d9670cd77464d31c6a5c0eb554f68a831b6746e2587b6f8c1c3e669c08f60a2f20ea1052c01e6a29f75053c57091639ccde04c077be1ac07673238c3180b9a36d3719c369566da2a68da68a9bf89a13393ad8b9439560c3c72eb8ac1f1747a450d27a8e783264e55b1a2d41d5a55bd514a69dda92a252a559738253b1bc7451f96cbe592fd5355a2ce4d321ed2e4a02707b5a74bd50905c2dc25b65474502c6e88b1927043ebaa409e0f5e0fa4ead4a3d74367527507c413c9737841758325ba38c93817c3a7673ad334e3996a9a32c77298a1481e66a96ce7b39e6c65318f03e269c637ec6326e7e4c4b8c873469ecde078b2ae696dcd3e4899d44e7223275267120e2227f90f9193f2109ef621312ef2ce3f329771993c64c4c3391192c7ccf868e4334e24c649239f21798cff98f111c9633c87191ff91544645c14c3339f40d7bafe354d44787e641ec389885cc62791cc63f874f943c645fe2306a9330e322ef21c62788649eda376ee3116cda17dfd4c1b99cad18c7b219d269ab21854b8ae6904f69a2b09c3742d6041337406065d65c65856dc1c312ec23680e1749e0eceb69d338471a318cf3c07918b3ccb44787e8c3249ba8fcc1d104f998f3ccb4486f0e430ca44449e39119e1f22cfb2911391181ff98f6c9487f0c8fc63e4327908c9473e44269e623c9e38e9f95083fc1c1a93063d1b144f313893c944627ce4a24c84e7474c264997f1181f654b8424330987918b3c0799ace968a21ca74d962d7de286d80bc3d13c478e6659c649dd2fde121d3f896688611ab9ede2e78b73365a3943d814425d1644c831cf870bc87ff1b850376708f39a1b2fc9fcc5c34b441e8324834f33389e64703cc5604d539186faf85182ebc37f52f9e935803c869fbe4397c2d802d2a5d0ead0251f3fda144f9ab6121363c2de61f4e161c38c376c976826d5aab89ed9d0208d9eb90379ffa6ddd1b31c638c3c1aa44edd078df10bdd156f711b57c449497218ac17651ba867f9c58b477f717ff1e23ea070b14b0e81bc8b47eca34b58966539c49c47833e301b1aa478e4980b16527f871fea9316e0824777c1630e02e32327f1901f7d0146de0537f22eb8e098638c81fa2fce45ec83c707896e834b9017ee0888e161cc3e78f8e852c4407d1764dc673c3b769fc9d8f10b7fc12f5ce6858ce368c72fdc051c64e43033fee21c0c0e3d7b68b187d73d1c3d0c4c74cc331c243ae65c74c95cb24ccab25c5d721833d75e70e8ff52730eed57c739bc5f3d83f3e5fe8b7fa37f81c1237fc1239f193d00068f3c0686817fe00834489d848134485d06ebd020f5185c810669f6c1a1e046d68b3cdebc28acf1a2107c91bb8845e4319a784c1bea226fc1a17f8bcfc87a1b37beb84b0ead0b0693c3d16318f6e292b31c8e1e9c36d479d867f11859381f200001ceadc5bf96161c72161c5efb2b388c1eca42eacda4e8f16443db50c7d11f488a31f320e286e0d39b691a81d364a30d756a37f069932448b8d235e7220e1dc8635e71e85f63f46abd62cd33fc43d5b49885d4cfaa93b20c731e36ac9e7a06644e9be2eb45fd479722142be83cf54869743db54213f409253e8c5c3c8d3f4f3dc36a8d2e511f510f4097faa9531a9a83489457441ae9aa084af774ccfd2390af3353ea58f619db42eaf46e8923ad3f5b063f5429a43ef549ab0ee93d24407abba445689f362ed860001aec1a0db6cbc8706394ef1b796a1aba148237eda0299e78a86ee83e60df06bb4bfe40467036ae6cfb82802feb895dfabe2fdb89d94e973e979e31f1ad09bfe2d2a710e401a4cf204804647532116f5c97ad2ee639457b388d60ca3c9c4940c0f47012e1003a7e9a538acf919e0efa2b1e71fcc1a679e39c76eb2b2b2bbeb2b2f27d9f67388804684b746a9c3217e2e6c4b3a4711009b03847881a27cd85b839d91863beb917c7bfdff77ddff779f45664a411fdc31328761fb7e8dae8e300c2988f36a1cc47c7b08f0608b78f0508431fbda32c4008638090e563d6f3d10523b68835226786022ed2842fad9fce755206d924880f3d96421a70c62c0b59100ef1d4d5dae128b32408e01ca5e3de511ddaf3d3ad0fcd26959281378ba6ac8b9805c5c86df186c6b2d2e23460003e7a8ca5900a4229ce43a9900ab22ccbb213c6c4c5dc4ecce79262c9f6208276b5b23d88a519a33c596ce50eae0c7db333b0348834a6b7605b834863fac59649834d767ef60cb14aac0b22389de3b04e6659b4ab5497da354dd3b49e6fd734d7fa06f99dc32ed5a08cf112c7cc38c96155865cce67c1d108bf82e35f1c595724f11477dfdcb6b99438c8531664b3208b7222c47082be3da43a3a623cc5d1935e319c6ffb305fe27e21ac258277d4e0244570e2204f9ec5a4f6ce8d9c3889593f3deb22763eb1f4240b9aa60e8a973b953c35fe61bdb3ce59520ed639e7ba9e9f6ebb1d29beca6ce33c123e0ca528a5dddd1d4acdc99d741e95fa89334d2114449be92ed09901ea4345a442a94ed5ad7e96fc6514ba6ea75349253b5d9232949a3635773bb953dd4ed5296953e3e0e0e08ce0348f449bf838acc88936f1259739b6839b39c5a9e12c38a154184ab1e4fcb44640e2279491933b030d77491a64f950aae37c0ba56828354d5e0ea540da4cef5ea0c3b17c184a519d100ea84e0805dddddd2808b920348350112127dfa5ecca571206e919a7ed2083a257fdd46179e238db456f47e69d271142a978c3e5a78754f186a6336d26e9871dc2b97523278ec3a41c38efbccb3435adceb49914359db861283595b861a7fa39b5ad4a2883beb7ec49d73a15c6dc869d7790404c9e4e215c20dcd0ae5295ae240cd25f5ad3480360082ed2849bd53209856cb92e3d6934abb2312ab123434814929e2f7793492be614ab18569b6058265132d553b6b4508555228ace3287a36ea5f390c6e587fbb9d0e79c8debd22db11fb6dfe22e1ea32926e43487f3c964d5262d9955cf11c24f230fe29bde402e0e4ae75c60b09a8d645e748dc5c8e1c9dc7af474dc29a2d9a846056520a8676a7e59966559268a8d82a994d66cedcd368be309f3cd7531e7fee20c636de36258e9b65aad164c13eaedc5b771b9951687e93a6e656546bee8ace2b6388c8852ce5aceb9e83560c5b91c84c5579e525f7116a72e62616161711919164a579c526e7a0d7871520d9dbbb84b0e123d7ef4381989a98b68bb0f42ec57f741c8fdcc858c7ef30e935c3c3e0bcb8aa8c561b2ec59595959e956ba959595b073ceb90ecb55833d0d4ed9237b64932e512f7130284731da237b5e4c495df0a85fac488ece69e7643508f6166e3857f2145b4f220d1fcc1f1c1169cc28a89632a3b5e9ebf57a619b16d77a955753d179f4e2639f5fcfa9e6b4b19e527740f2bc713f11691021d280a2a708e1a7d806e896e7f62d8ea759c5fdfcc6f8dca473de4c696e3d07cdbae63958cfe5552046cb3cd283f8b8ad07759983644e9768edd48364debee1c901e17a484cd2bcc4c2cd71b8438c1237aae5f98de3111ec3f233fbf9fdb22ccbb28c4465525ed779dd7d6488084e6f89a225a020e0c0cf18be7c38579fce91de111fcb3e796f0ea967f4a3f4db01f570b44e9e76a5f94c7d7926a919d6d2731bca97cf0f509f808f3e3e78e2dbc39cb3eee1603dc7d19e5bcfc1739b35cf43b693cd3ea6cd74cc310fe1b9334f1e8ed306eb19c218fef330002f9da64dddea5cfac5cb996a8db61c8e6e0e6f1edd4bda3cfe6d9cbdc433bb61e63bc94ccdd44c3277668f5cc2953e75266aea4cd4444d9d7964ea4c9d7964a25ed4a9f37abde48bf4653e3e88d283ea418d80e8202d0a659bf80cf7d78c3ea0a577b77b3a26cdfb407f07b07f32dc2d25dc50a2beefa399cd877385df660036240a8542c9d88ef091cb91ac2d64cfaad5ad160a85a4a7661fcd6af034dee8e9e9c1befcd26bc6b5d4cc46e640f6ccd5f481f5f065156fbc8ca8f0f3093f9560951845f1d3b52043e6e1dcc2cf2a7e7a23c1e8fdf6cf6d3459fff24f4f092273fff494599bc87b9a1ee37ee34635d8a94675aa538d4282427509eb19db2854ab91b43ad5495a31bee9334d2e2ea7b07bbeeef99af57d4e136f48ff9cc6e99fc3f0727cf9e6822fb144451a8db5c7324cbf36aa91d06fb2e66aae1af57d8e39f761d81723ebd4eb255fa9998211a7ce4c4d533cd9699a4ea2cd74289689f944a4311d4bd2a592fff42d8bebd3a550a2a044c1c547e912897a9c52a40c190e1a8800c1879115a74e904b4b8b0e54bc21230de953c2c0d9a45231d26c34c5134cd00c00d6355fcd27d367da8cb0b861b77e26949f9389f9c41494838971cf89845c732231ee79d8a48ec3520a91c614228d2d228d2adde8cbf2e5798c13d13ce4443c8ff1b07ba447c221e49ae710e31e0e9a873c07cd437908cf8f90c7780e9ec7e421db29946b4c9be9a31839c23c30e1058c3ce630ee95e4dd40452c2ca2dc63dbb60b03e3dbc53ed0182f07ccfcd826293fa55ff0129b7b0aeeb0fd151ca168018a97f108ff558fdfdaaeb82dee9265ab255fb24a0b0ea5d3fad36abd7e6a75eca735a5d59af2535d93412fd9ea9e99b616cb3060c08891b1d0349e4e303c8d983d984f66e68a08cf8f905b27e2b9e644426e3d94ad49854b84e787f59013d13c5b7091c6a37375d4e00b1fddfcbc99617a0c60005eb4299e5604e0a1643d91ab263d92c9ce4b25a04c75a9c6a30b475aea74097b7499d325f738e3d18774298647cf4097607874215d7ae1d179e812c9a3efd025198f5e812ec5f8c8a303e9528b478f403fa04bd7a3fff0d136348fa60147cfd03731d400a709068f3e9a2691470ffd5f5c1c064c136d64b800f08b6823c369e05104657800b04b04653800f08da00c9f81bb08caf017b08d3482326444e0290d0d0d0d0d0d0d0d88e5db6019c1175c060eab069e86c648e30510c7978143f92f38c5a191a7a9c1120411944e44149ed2c8239186f417702841f0d2697058648ba7ee02963a3127e2c42131035148e42182d25fe01d22289d842b1041e9325887084a8fc14022287d84231041e9226c03cc9419a28d74171ce526c610a38df48bc1084aff308d4750ba875f44507a8747d125ded8451b2308ca234f7572240e1741555e545c5900452abe1a69f2d4230d4f6f62f8ea3f9e8234fe62e472bf56fa35f730e4e944d2a5b691b660a49110b63da1ad652e77731e0dcaab691ad534a758d336d7b6cd45bb386e8d1878f0c011593578dc7b2f0f1c12070d3cfaa64664e130f2d64727e5ce8f3ba4d39612c8c6e0f5b271f6386ec2e8a34397e2133370926bdafda341e9998f0665c4b6411f3fa257a773c648b10f1a638c74769c4da59763ce7883036806a02840d1a583d1278a163ebc19614464deb1bb06257d415de0edd37b89e638ba412dfb90b3312aaef5ccaba183d0ea13d34a73d8fe837c9ae1259a67d87fb44973ec45dbc80c93a30665df34286fb7631ed62ae74d83555a7b65a5b3ebd29cb37d7449869db5a14ba41e1df67726651e3b2864868d1ebc8936d26bbc6c29b94ecac5be93722b9d73ce48236ddb285ca4e17e2e5d62c9491a1aeceae282abb974cd250e1e0dceec837b40973abaf6b9a6351597fae7f590feb9a6793ba25bd770755b3faff8fbbe1f6d9abed9b48f2e6d3f361c0df2b0368c2cbbf1e892ddacb596070e1a583868e0b14d2f47ad9a771fc696f46a7450682eddc873366ed64373d9af85e4cbcdbf7cbf734ee25108bb8cb24b8373091017fb1a313ca04b3787210fbfeffb42f8015dfa72e81ff2febe3b6d42be3917c20ff0f1a3c1f6d1a5cddb7f3c20a46d9a76135b51ca7729b41da5982810977e8cd26711aecb471f258e9072b3e81deeb8ebed35a24d7b6f359a62db3528bdd00838cec68d2edc1c9ed806681f40744ae59cb3d4720aa9df9e6d916984b664021769c28e023a50a089f812d06273ddaccad6d3801488f2bb2cde8b023a603c6a9c822715742ae2092175da5c4a6dc58ecd43e4386bef95545082131e562d7c63393c74b26616f36ae011b7f8c983e78078f2bcff4aa79a47e7342c4f3b3a34409d8a8ca2b44e3cd2c31b5696a6445c7999755aa4f87bce7236ee4ae74aa0e284d4694891d116ac1338058ef4c6322a2b96d1965260f10a72a225abcca1f5eb24997bd8d12f5d7ae720e175cb49bc237ea5211590af2da4be95a8aeb4ae228d9aa1d821d2a789293da721455ea8bc4e3c5caac8d6833ab93877826b823a5faa7cc95307db72b458ac4efc288aafb5fe20d2986e713d228a86e586493f34df7ccb43b43c4416210b13b84e438ac48c00e884a30d307d48918e899e938b1729fd9c363772e24a703f0f6fe6ce6a9ab40ceb2c94f839fa28b66cf5d339247773cca5f8f61ad0e2a41af163a8010393ffa5d783c549357c41be318b5ba72ffee1252e59c74f2ff15d68aeabd5945a6b9d2f3d1d99d7d5fc8a634b9e42b846e1726591e0ae76dc95519d62eae86060966534cb28a5dda9cc3b337179714a73d8f90bbed126cb6ca412ef06ea324b260d7a2d2e997449aef8ec24951f9306955c0fa592eb2b1ded0f59c944ba5475a9552b9d4aa658248a65aee416c7d1b81d4729ffa32b5886db5b5a7648ffa17e08e485d40fc5cf425f073e6bbc69e1331d984b974abaf465293d55e6faa4c1ce43f7de1c1bacab5cbb5c591c09ee4ae7cba6cef77db5456b56afa8b5d65a6badb556afb5d65a7978619683914004bc4d025a78589eb88d26e8033ba721453628b468771e955774cbb7cfa44bb225cef549dbd4d5050267e362960837acab210dc40eb6e0731a526484c5ebc413f22145b024824e9b174100ebc443230e9633a2427c8255c24f8f61ade2957062049dedacdb5565f1e9554a9758f24f97482c5e3fac517e7a67ed8aad455c1b7732993d0d82d37b0bb30793aec7fffcb3f9fb564e5a71f92cd8e55eec7eb9cb48f40009969228202f852ba4be0c79285132e575d5379467774becc3061ed6a5472c5e7a6ef112cf6d6893e7d37974099348da66679aa68ece0e0f1b24115ce315133c8625a6425c1bb7658d97ed3bd272564787ebba235cd1bbc1d216d9d2d2e2c2755644011d36f73cbcaf43977850604679f230c9cb437686c0246189ea34a4481502d069f322a2d5894776dbec59c51b2cd507d134754e10c17805aa2a519d88a2aea6cd0962a91e518f783a99789f9ebad2a8eccc209a6c11d7c984324d73675afbf74e9dca5aedbc48d44202d5633758af95b5855565854d714402c912a71593a4532ca4bedce1619aaa1141a8110646ab75156f4895569370c5cffb84954ea4f4eac4562895899ff5899f750a0f03a29b3d691bb6f1d49dbab39269c0740944a01b600509c492163ca6898718812ee930afb8a144559fba5a4dd49c5654cf7c22e176b4ebb8aed1a3ea381aa9b437a0f3922debf8299eea93b699b9ae7e6edd8936d36b2ada4c9f73d6545d75e989ab4a9b6040d52853d6293febcfcf8962f2954af5f9e996b6447529ac3b32b5b32391d49d2e5599e46f8859d4555d511d99979305ab3462ddeba30b58116924fba108cec6ed76ffd836eef43984eb4f801bbd89a38f70a5c7c62e948bddb7bf0e75df2f94797b7c0d93b2ac63eb3aad73cfb90e5b0fc7ce69976599863597ae6152bb160a6daeb9e621d5eca69763863e39b76e7df465a1cca70df52c8742eaa841eab452ea354e0f65ea99e6988c1d923f33696a98e4a449921e31a7ee120214f54a3dd2504f6659709126ac21bf2ca4be942d1b8c3a6c3e7370be61ce398e8b710dcb9709b1e0863cbc90f941641c86c320797ce1333d00f9209f7bfee1cf27eea47f4ea8fef3188e7acd65705ef319bd1a58dcf38b43207f9dcb7a88bc2385dcc5bdef7e1edebfe1e8ef9743204f0a6551f6dcf3e9d771cc8bc3eb9977ce45af87e71f8bcf4c0a39fe3029e4dfbd1edeef3abf9914ca9f4fef3e8f5e3d1b360f79f578c8dffcf3ceab7399f418f061168f1e03e46f9eb3e4d00aae97bd7e39c8e6a11c24867f2ea47a594885e15d0e85d48fe1d16770489ff4797b3d62e4d8208c1c0a991fc95f64da20293be6d2bb41c6655cc36191d7be0f53ae7660a8c37b5e5d7a37849d7f1e0a992f934322d5eb71c397a990f77288798cc931311f139343f996eb7ce650c8e4349cab39f550bef7aa5e8f09011d6e64420ad06fee6ddf7d3804f29f53af01d3bddc39e1769f6b994f7c83f69d73d8f3e879378746fefa8743ff0fc66788c565c545de625b5ce42ff7c545a21c8e62b4f95c72388ad1862587f7c359fe417e978378be797b3548df5c7a3d3cdf9ce3e2c775e7e1e879b8f9058cfce75de713874042aaebf23fe76cd7e1cdbd0fc7e7426191df707c183d9485d4df3c87b7616944d5438a0fbda15948fd997f902fbdc74b8dfeb4900ef7c20d7101a614a8a46d3476492d19a281000000004314002028100c8783a20189542ecc31fc14800c809a5078561e88931cc74110851042c620400001038040600486b602defe9a6d8edc7026e1d6b6aac0b5f8e47205fd21fd0c98fd9113654645c849bddd56cba9fa470f5686081ce3ed6620b804d11e907dec1379901cafe7c631e5c9d739a0a67c6febd1cd9323419831305fdf408afc134570ad7ab4aee27abe822838e94f9ea81ee13024e953fcc9545d853e9ff2fbe79cb5aa7859a3eb0315ca46289003a1fc2e2bc403328722820bc67ceff969209fe2e605ae86f083719b757d02dcdc94ed87d6eca9bf149dce1d09ba29ef0b74b6aa56b8ced69787922f1b096c142dca68bc2e40b09aed68f58b76eb5338fc128281d08885212a97232f2b44f10335b5ac69cca30ccff625a1be325f7d84afeaf54445037eceadf947197d6449ce6b59607f5604c01bb68f1fdb29da8d270a386088c9abaf27d630d7b127a22d5f0cb0163f477229e8f1a0dcc904581eb0cbf5bed8a6399ea57bb3743f84bc769fb93f7e1e2b62f05769fcaa786fab76cbdbbea5e1f96de7b247eac80469404a7830894099c5d463de8de1e251a1ae5cbde76f015fec0669abe5616939669e0d7a41bb427b433e6329d0c3fff0c0b278768f8038f57b72ae030729f1edc205bd3f7169081b86c125c3bd81b082d20758c777365d1d8cb9a2133e1cd2494700d27e270536f09271b40c49bcb6ccc2cb80c833fdc2fa1c0e6c2efdf919b541be3b62cd207a788c92d9b6455664545510457cac1ddbc76209598facba3d0e09476c868fe5eda84859707471007984311f89abec0c5c29403d370eb3484b762166aa51a0d93a0be9412f045b98b5c76a982a826bef1d5510edce833e5a1d4713fffcff0f8f9afe0e37c021c61d28e0131e7bd67e9339dce75b30c86b1d09f364c6bcf66d32ce4ebc3869c7751ab8f0206de3c2447033b13542477c8bf4dd085bd056e28b23f4a45638136c87a77a5858ff8e6d086c4b5c8166b7c40df1fdebca39e5bf3b54820320564ed4d2ad53c1650d28b32d5b0695b94817d361bcc6268ee421eda1743666ee60c42cda70498949c81ed3d34c5c189d2552dc33dc122f5073af4e0a03c193fcf501869c7ac783b0cc5a96da8da340fe18448ea9afe5e1e8f1c21b0dac039c0f6de7e57a391a606f595fb73020b664ccbf86b2bcd0d891f020a73af263495edbcd572f046da7dae1078178b2335e5b704cde7b60861c7d1c79be9a3994a59aec3e1067f815840ccdb4f5c279aa704108037e9457f8412109fec392d6ff4fb41d587846aaa76c802a93b6f8082a37c4f0a117db5e38c0183c1aca2b8bc088786f0cb1bedaaafcd86cdb07441d1afc2e8c7b306916cd3ef3ba970d50a5ee308403b496c7a9bcf7411ae304f53281d715698671ffed67c1befb49f99b0d7fa685c1c517f25ddf6612b7f0fa28d3d1981d1f5d0302d986bc01045619146cfdc79102433ccb983fffe2c70d6f571acaec2000c6770b79f27746fb313cfd43e01b43c66e0c05003a1841aee3a4551331af9664140378d38ebd89b3f5151ef19633dddba9e3b18ea3e17880edbd3a9b600a1e3f5f473747daa2571d3181270144334d9520d05b48bf69d714f876bb1af03b831be1c33ba3870c77c43203b90a65afe6748401c2e437e680c5e6efe11d0cc2c20ffe7a223cabe11eecd542243d443e53b82fed0a1c86f62a729970c2b4b46615047ddc75f0eee5fe68cefc6cd54673b84ac681af0aec04895f85f47039f9daea6568be20b8010d0f8ce26a1b72740310b5c5a857e3338673386a7f3280ffea12a919e7cc0cefdf2ab50c7c45aff845be7359ab8fa0cb7abb0bd912737c1568b1caab841cbed37f534372caa8a108154aac01dc6aeed198ae5e93c7fec125a4a0cd66637311188c3b489cc4e7a26b49ed82fc5dbf052b4755f2beb471739ac87f02808ea3adcd639581005365a779d832907af840e167afef2f20ad0f0f0f44d5ca78805f23dc7b0cf9428a63ba33e2ad58de84870af37db3bc4f860694e0f35930b0f6686c48a6a3d6142f48eeeb7e1863be6780c9b7741e70ce4e3aece5180d4b8163e4ea304e39108201d69ffc851135b482edfe950859124117b4730ff59816c0d34115cc1057545873e99424809469c83688712530edcec06f8c4406460742e07dbc14b9553976b77ca98e5565953a0ddd26f9338a55ad7afabff6cd1f67a5eccc240a915887b74b190cb2dc14d8c82f1b06466083101df7fd6df0230311bb6aa53048f628d5c4133ce387737bfe4f7aeda746b4d61e1b68d8aa43a7390c2c9ecccd4045968e0bcf07e67e9abcee601fdb7a12f4e13ed6b21700dae701164688a862a21a0fae51226e383a427092aab0a02b8f686506afa2de9e93a686d1a0fdef3fe395eabdb3931c7da2b3bb4a9991cc207540784aa528ea4137409509fc733f6e70f0790a97370718a87ecbcc0be2f530a6ba6f4818a9737e4f2a7a1895fcdd5e4b9966176c093dc9c7509d7ee56578d0767a73a656d88f792c5488cf5f406c880287f7f6cb1c8c4a9d796025e73b76985010967247ffdd1f5b6a0b5ecfce9dd9f64d98085b6a0f1929c00268e5b9fab10a97508507407996c59729d6fdc10f97054f182027f97ed72d5398cb981707a46f7a595f4f93cc95dbfc988c3b61a92c830768ec04dcbb5b9876011e542c4d615cc3a7b76d97e9000c38aa8f20916956f93c8cc9a643e011a99c76fae82e17da5edb2f6f6acf2086b1c54546e80f89ce370137009ae42fdc427d433a553d1b538b53fed5b9bb8b97ad60ac88c201bbef520d441e30570ef0671214a0a48a93fb0f388a37dba6985cc253fe068e196834fe15a9b49ab24e2f0475dbda8f4d4542ee3c379580fc3bc7e4e8128162c8d34115d296f2aac93820850f85cbef544836f58231378008834d6b84a9b76c44a9ec9a8c33ce5570ed374c1a546b3ad2513bcc18b1c633ff5cc6019205108fcfa5afdecd96af98ffca3e880e9b6e6303d8a9b08efd40602e54083cab186c9c54d0597c717204f1e10a1b0c839fc005bb0d6e9cdb0c78df4a340d94e6324d0478b318fa94902597599c0893bbb2a56094f6ff6e7ddce7cf28478a5fb32b5c761e490d7214daf0729fdcc2751a1c86565f474cec7065d2d08cf6bb394157e5c16ae1cfd422d31ef41e45d6bb6d8cb010dfa45ee898df95e54eb8e4f82c71dbaf4541a331233d7a4052b72ac2433b86103fe9d750282f76f69762d293c711625d446db491189a64799ae8459a7dfe28517b85a70b5e679f25ead1c4495842ecd1076447394c6672ecb2352642a54007dec03565f9a259fae93966d8591ddd45abd5498078e47f77ce91cd34d1e2bf6fdc066e7b1c0c5f8dd75bdb46e631838ee335dae2fa887e3569d85c5d4322b62f8cd20b6c77251320089d80183458a55eda305361bc46fe9f17ed288ba854f75cabd9410e25e60acbb6550fe875c23b90b004c8631712f90b480fb939ac13f30b60b4bb260a997ffb75f46c6804f02e816b30da3ceed81adf30ac002c23b315b31b8f0cfe0bd87287307eee7056c7528b4e83609b12b153f254595e36b11a3b2c45f9f14b28b5d061579767ee0b34f0ec0c5b56c934e1689f9bbe45c40f4051c79fdde5e669614df2970163e72b768aeb64fd6f1c00f402c3c21333851e8213840656f7110d5db6eed4ac3d2673b99c974b037df3f3a6f8cf6cb1d7f452a50e387c2a2dbe3e1f0867ce95cacdb24cdb416709ce271f903a44b0ed3b28002db9184a73f4bd04d82745fef27670ab1bbd59c519fff186015980ea2c42b3c0021423b25fd7e33f087434ad5e81184c00733c87645809c11cd6a42823dae26252c90934afc22ea0f9028d6334184d875694e3d9c0b2852a1226b08bd3a10667cfc4e3495ecd28fe212a856b19320d018f45da516f15a9344875097bce7fe7b3428b82a7d95bd119e5ae7398c847903d9af268fdf1e75adc402eb771ba7fde8c370255149fb1a6b99cbf8e4581c39951cb438cb37b6648ae911a2764e90fc728a0180319a53f984a04af5a84c05988b201f799f81618129488f49cfdac3e03cf9821d21023b6da3e24bf7d91a611613f49e896c8c203d84cb8a0eadc923f458a42e9faa9f41e55cf627e0f9947f2850cdc708e094d955c5cf3a9273e9540bf3472c7a524ff4d1a197dd4350f5f5fe20c28247dc46b1b58df6506f73fe4cca197740d560b5c38a6d604eb094e7b0c0ae5742a498fbcfec73c0cc286c5f3ba6e5302113f221f50bd696aff126d316d0792324ae8211b860a9b2ab75d01d3b0f688fc508174a2b531c65f5b07df895cec1580c56cfc92f883cf2d53e624c5dd92e9c6db3c888deca75a74f94fe483353a74719114dc4601b925fce38bf58bddf98f25a09ec34fc67d3f20b2308b1999ed1d90316f07860607aa6a09cec703c54b6081e80175883c0f12e399e610bc9b5534fd2231611311f67d305b2719222f70ace13e2278c288c840e125d58f20e27fba5fce2132a0c43e73c4108508a5c78e16d122ff999f4968feafa9e5f699cbb989cfc4a7eba14f9723070e9120a6b09bf67bac050934ec334e2eda01fe4aa4a832adcd19a13beb3802e8f28d7fc5db81b62120c8223535a8bb8992af829f2c33e8bf37999715073b6c8a35261108b8d7a94c0a96b13f74f0f7646c044daef8f9b28a13cffe7a2afef345a2ee5ec4fd34f12096f08621964e39918be5f112c12bebfa1ef145a2547ae610ce69dee31dce4c2254f208e0e9f5cfe76578f4be7de7effe1ba614bfcfd80134a5ae6956a4ba6ee149a397790e92df584562f3e12b179f28a978343f4f31e240c861e257dc9ac837288f95bc42146594d25273498a42e3b66e91c8d5002e990472204e25ca5289f296034956dd7663904727a0fdeb966119b53c1e7b1a4f04dedc39f9d601b99ce148882f86802442e7c7300aa8c71df03825d210999b062eacaf832e85617ec1eb5cd3379c64fa7c2d21bd2e37bfef8ae0789f36b9b78554f22e85dbb8d3ccdb911364fc7340561c83a6811b7812177e21fd71a902f5f27df13ffc9d1f335c8a0904de5e7d7da850cf2387530acd8bed510ace5cb49acb07e1bb41d39f5797937de197014d1b0ddb91fefc679df59535d994769c6531f5d171d0dd627217ae6669a17e148eaa29bc2dfe3200f88de927e6327b7d83866aba64546c576c9e8b17c7fb65a379fef19f8e44fb633193663f0ac10de0ab8e1d40d995b84d77340395405aae770ca80dd6631c6294c1be79fcd482f11a37d622d39fb550eb16761b32beef44c2fb4eb4d59fb5ecdfab2f498beeff9af7bd7eba3273a102d89c18b51a6b6bf0f87c6bc9825571244b744c81772c3e67933139ba1ae851a20bf5ddca6fd08d12b56bc04064e0f6e4a2ab6a3fd865be532443c4d353ee44d6f889f83d9b2249cff1a2594a9b4cd6c5d05bac2ec377c4785e14f2a36bd549c24048b16647ae07c298801884ab7bdd717848154f00a0ab840d7204e7800690025c1e141c7399cfebb133d2c3f438b6f1ec66346f6aaa552248e133186ef0aa9500cab36bf930fa22bc1b2cc107e6f87419b2dfe69ad1ff2a65ead796773e683748063c1eff6df6859a9ada8d4dfed8bcf4372e44cc20c8b9efc4e93f83da26b23305525e9ed391de5d1a98442fd332dbac82611c08015f1464195277962a03e7492a5aa7166691c63372232e6bcf73b045c41e50c90a1fe233838fbf3ee019831c5541fe507f564ce11a1c1c0142cf27be680c84beaffea9db7b1e00a26472e4f281df01134fc438cc55943fd13d26d0d235e315ea5aa674abcf7fcaca742a0127ce79849e8423c5401d0704768ed7fce270e5195764ec429eee0389aae567d5255b037723003af692e84e897174d8dd4ec801f7b302f6f7ffe439b96c2f76d44ca20b62992ecf9496383ac5dfcb14bcf49ab6bfe58692947eb2a4678134ad20f7ce40ea0053fb243f669fd8bf14213951618a1768e54a5ee47b380f47ae5f667dbfc4a926df84c9db2486336ed123539459382f10d87ab28500e4608058d5582bb9af0509065b008a8e6efc97dface3c342f1e7a4a0aa698948804d0c2f6553832f6528b24bda245bc8d80d36e64d920a2e213e43380dc30f70b35dd9909f54757ea714d1bf6e1171a1235e055091a0c874e2567c497ae0d54f18ce36af910f861f234a393a06829242977f93df0181d341204331802890f9757b2ee83ff80694a760911e596b7ddd442beed7fa06e29491fd6fc9c0f145f6a1eff4b9c51871ff1564f93827be13aee1fcdd4e4ca7d19077e5f4748a1ecf8bf58b9b86418ba3394786e597469e4a12cdaf7e3af54a6eb88acc5a3c75da850ba4712028df293a0d18c0e563251689953d000383cf1733e73c6387424f3cd64345b29f97730ce2b945b3776acb191113babacd1bd99ec9832448fd149d29f5a6095929b3643979de0394d90b5423cd131b9d9f26f7db39b444c5f93f3f319bc50e0308a7060ec5ce07101696b8bdd52154df866ad3ae4a2257f0fa3a2462d5f6d5d56da290a8e2475d3f117634f2b1af5167f3eecf42b08cf2210c7e8827cfc45a0c5efdbfdb2b033a7ab0480ce103c0b1bc830e64608972f945abf6cb62f7cb4f092f256f0d147c7514c73cb463e7cbf59d5b460904a1c1a7c9a414eb65b8e02a47167015c31cd8fdeb3d49c9b8965a93f10d967fa688f88ede6f3555eecdad0d6290798e7274c49745ea16c8728aff1861a23dbb682d66f6df431a4c0b876124038d2d657d5d9501e72fbfee4bfd18f634e25abe95785cbbc0de0b47de42fa4a65890023b17a736bb2f9965c4be42c65b290c929ba643d42259f6c8fe32fa1db14b771a15654215b8e501d7b453c63122ba0d0ae3a20c104bd01fd3745d669bc50b58644d0ae2a5bf8da19aafe9ba734971ed9a8e1cae2bb6e702f1112ad3a860ef5f3c1c30651edd0549543aacd892606459ab0d907ce17d9e4678370e4304760e3830e4600b1c6fc286e2a5b8643cc277d1fd4ef3075ebf8a13d1a75ab68a92e035a3c85d2966f8bc3d3875b90bfe120f4790d24c0cc9f212155175e62a5c5c429b922c962a96b8828b11599ba7a280d2249de1701b184fbbd191b4bbc1dbf0a268de34c71c26046be8162f796da2bbc87e70841b7f1306cc1b3e0fbca53a4d39b6d9fa97ea2974585afdb891ed46d2d3dd62fa78d1c554043ef418a0a88fa6cfdd52436fe5db8c89af9ae6e01ef0132b30c3241d3bb00b0023226021751d3e2075a3043ef4d6b0ba3d01fc66e4a7aa78a5c74c812ffad3fb3d3926c87c82902ea4711a001b2b222ac56bde722c0bb0af20eeb3d28eb32aeda6014e3d9cb87e6729212494048f4559b69cfef4bd67cd26026c88083dfe3f0762c50f22fdc6b3d46260774ee72bb5f1cc19da53dcc3f6e3b23994f4101a184fdbd987a6c0183fc105f5a5610a750a9bcbc7f57dfcc12f1e32bdd554d923f467cf73f23aece7f1ecda71f0d5212139862d0a862e85dff6eadf39078669820fb0e654fa33a039ed82c4deeec0b4816deebb8c0370236e25a488f00b83ab8b3eb2e5197c1a2f2c2845fef5115af06167a615aab58bda96c98120f3a2a609a7e24252388de76bacbddf623dfc0d387b5cb21695053a321feada6009b16301bb06d0b460d247f542b5b3578b49fe2c1cc5fe31cc9f90acbc9533746a0feb53d4fbbe3f33c58933a2cef2ed1e3967b9dfb04f4136665876593e21667309fc59bf06471a3900a567fa79875bccd37062089e63c32e3e699f6a96a42683aab81497bed91631e682910ef0c8fa3ff1bde8fa68866d4b7b43669e959844f39328b8fb9329f63ae8127e8991b0a700b04ee1780cd702c7a793eb66f241aaf0ffc0d1bd7274d82262033314e5940962456a50026a75aa713b7370b670e6c4836398356adaa22c32a98709bfbce0b8e8110357f4127b55e518d2d35edba194142d3c4751a6a82b21c3b9cb47539d4d61520a4511192016328180b56a5ba24c08db279dccf16309a7e3feb848e4920e37590884066de4ca54f4996e80714b610736c504a8d2c453f379c0272df3983383a4b907ef9405991fb2c963897b942f7b99b5890d6a98e9130665fe868136403e9260358e047a6b4e680729a93a7e8049d0245fdcc448b5f302a5e5b34c5965d2812200bbd11052c1d48c6f651b448ffc325950206624ca31a98d2bd600c273d2d640dc08ce44e43a8442f6278877b3fffd9ebbb3381eeabf0ff191ece0b2746e35e747f978df45a1dcf94348924ec1ad079f23d73517c7b0c5718cabe28af12f7337938a4f0d682a4c92a64f9c9b94908661c4dc41f988460eac534b030fd97fd6142986785948078e8ef7885b3ae3804b13560fb8f2cc5902e39d4c411dbeb9bf80219e07263963133337b9a14253d22d97da13ce5b596b4322b986385f3e61f4130a8bd079b1b28f3d430b15442c20f6fbfe1c2be8c0dee02ef9547f0627c2092f13b8989facf5ffc032833a4e6645179761fa2ab5e53620895e60f71d22df2ba13307e988157e9d734481d28725b6673bc73235ae9fc727aee7c94200b968038e89f1c7d31269cadd375dc489d0b89df6076097a9d3074020397e71e12e8993015a92b130125a161df8a717c24ac6a5d7bb29461d98411c14eb05bd4fd085d2fb02832adc8b1832aa24625506de79532f3783b65ecf4e33cf5721dc7145dc5b2e25d34d802243f381198e01e809f7c0034dc31d81570493c606503761c46a72f06248af100067c948b55c5b3bb382941b72e352c1727aac01f8b5e85e7bb2d62869b8536f7695fae77890cc3bad627b10700a6f9ff79ce7030a16c4af600ac7ccb71fa80b7f6e1a6a3d4bb8e0f0036df2cd7842f808551a2e477bf08d7e406fe45c4c0ef230a7886a11b6241f9c02d55765acb8c352b4eebe801ced1a135204be007d133b9b1aeb1025b84d7b3e2d07cb8bfed577c177c570504c75cc24144a8ff33e484b96ddd8c4f7d55e38036832c804518ecae439c2ce2d027d3d7cdb237b547d9a4fd5488d1850dff13847278d05f0d95b160b5fcffc2592e8cdc8a178a3eff21af488d4728c796c6d4ec1cee48c5a14f8959693a4d9122f52365564fc845dd8b0c9060005fa32f7007b50c699cf0480a7d735b5b5b067e40fabc59c9715626e8bb314d8c7e8aa4d4b9e63eb9fb6d5ef3ffaeeac9d18904aba64a3bd333dd311e3e00753444e80a58ccd02743088b89292bc88cefa2a878271f22f42a09d84b6e2e703783c657b4d1f1756bba9864008b52aabe72b6fe2a1a9f1bedd601f765fdbc698f45dc40acc89a4158a2f0a2dd299de4f74be95ed1692d05e4464b4169ccec291d12a58b21f52270da93eeb3b5d955d6fc9748db5d51b791efc4a12b55c4fb51fa3e22766c04f4d44feb97ff2935fa52ec6b967fc29310b4f1bebeef6232008a3d29830661ad6ee7c330e0c79953dadfe43e491d2e0f82f867e0434c0ddd69cc925e0267c39e6290dc45daca50b12abfe5af7ba981a21e0681a846aa676f01b8b3e67e3e91c5fd965955492f0f6010d8d0c4301e2aae90a94672743c7ca81cdcb23ab9c966751b0d608c9779aa77be75b16328a119fc3e12a1f16f5376d02cb2bc070b45d8d30b8c04ac22179c72aa3af2dcd5453e418ce81e1b971d6480a60614c84b33cb9fc487c79fcda23a3af74a51d54d496237f24eb58e09dfc8c5163800e45f7dacb7a63172fe10f12b003a847850fe240802b20100c7fba88ce9b61801e9eebeb72d8c6ecde8053a028b2523c032c1ce03c484e0d9a666cfa27c6f4cd26b25897086a819c64b2f75072d81002b60dc7d91040b2fd36b3e1bed10193cfca96b7303216f5b61a91ffe02685bacb36866a0cc4ae815383a3eb4d14f03ee6f8605f7bda56605ed1fb5f489276d134457c64003a5b2cdbaa0427183e5d15eb690c94c0f89b0f1c84f905d5f5695e0d2ef0920a42203ccb70fc52ce3a79a710aceb8f01becefbaae59afc38ef9e919119dc1390c3f4cdd710a35926e995e27c5a3b849ccfe344267d27149492080470001a5e090eeb6b16bba83476b3d8762fc8164a8f3c7b038291eeba873542ae0f5628c7443e71f78800aedd38243d6e1096188f7546d1b4e242d6051c53630fa81534008fbd1be9a015a445c92f7bb9025e43dc3d2becf6439f8a4ee00d6e2b7b1bcb1a600a2294e998f857e4efd39f75c89c94b5102be43c12651a9885893d14340c64e818dc7c74f2dd46f6fb180da72808eaad52558f1caab3642270f3ab5eda65b0e792eb8193943824087d84bf2913b0dc9836041b337cac91ea22c19ed824cf14f118782efad0e89e05a5cdab273c307766f759c13a2ee744412118b5facbb802e7dfd59d4bffdf2ffc29c0c8870fe11663b1a7e2101c4580c2c3b0276680b1239f469b3c50491f35d74f89c4a50139a3674abae66b7ddcec50e95a3c015711f708d7efc3ed117f53242ed32173f21180c56a3fdfc32dc29fa24307b4b0741c14cf408fe056db97e7a5eb2d390c90a7e18d45ee62bb6564e27224191d4558dffd38ac49c5701ba649771a0650ffdd3d9331d5874151dc893d5c723c5a130dd93b00784d3ba373ae474878be63e20ba33748aa6b3022f88f18efb5cef1e45949a2ba7c04ab36da7afa95aae945a702be906162616d155e7d341281ae75dc1c5f67252a71a961c744668d992002090d60b6f55a14114f1b4bef4743a06b406ccc7f55113d72813e7956c809567fe7eff0902302aa2c451846bb0277b07d37f0a16d8ecea1e91ce6cb62f12e00cf91d4b6751926d1ff80161438e0158d36d552936029650639936d86d3b849007858a4cfac897ecdb3028ec99d65ae5fcdb91aad2a312917c9e1551103eb08c1668132feeec7041d4baa94e1e49e8ef4d6367af273a5d7ea0d33844f7654636fdbe55fdeb4b2920c7b303e8c69c41a6e47d1639cc9e17c975d9b8c335517751d3f7e0c7ad4c70868373695217821e69dc0aedc3b482f17e986b8a75a88091014be7ab3e1a4c5f5062df08916ec628261d88cd1cef5f5c7874f7cfcb455c399ed9eb2b752dab71e7f53315c33c84bdaa38f5a06284f5cc1d47ceb80c0da297e389304223d3a5af835dbe63c644f55fb4f0dfc27d9c58a1f9d04a78edd132b25c22999405be97d61517297b9ac2e689cf2e3ef8cfd3595bdff9fb95162efd2eeaec1fc4b4048a909ccada78c024758e8223dcbf1ab3661179290e106540d127f42f83469b9d4d5eb46eef476b5712185507d7cfa0e62b29d5941545852d754052888ceaed9bbe66f1c4b8adb9fc82ebd39af39ec412fc74176723e57ca15d1f3e14435880e9bc3b7f4b659991ba1b57a1d04480ade740443032eb6d0a637c05e3a488bc55436f80d61bab8d3c695e637b48443b071a94a118128a89a92f8bcf6c9619149c4d5ebb9de3fad7f5c9b7ac7718b9ed6465f2ff58330aed448cee214606cfba3ba02e61c00ce511f5e70160d132e448b88a5b5da624f45bfb80db03f0624ea6974049e85fde0f4baf2c0afc82ea923825535a1610b6cd370e90bdb068f6a766182bdb249f45df7a4d5fb367a1c2d26da17bfe6abd8352e008bdb135fb18b89bb2ba166efd98c88af80ab99aea5cc1224f40f7285f743a5526a7fd76b9e0924a214d21d0804099884e494f9cd25149100807d260ea46cd472da5823fc5b7dc846727834d022a450414716ca1bad4d58c316068df6bc811cc807cbec5712ac999da9bff71a121855042c43118fd9c7c3b91021efbcbe90c95443d6d9a1cf9b5997cb717fd9d879fc868d8def26eaa7209614cf7e7c6e67f0f44b312ba942e63ef6452025631bc93e3b2b69bafbe2d8bebf5672fe08b6cb0705304a45a59baca85567855f1257aaae47ea96e370b9ce52793662a4917482a616e62d0fbe2025f5d82e94c6fc4510c8b880d0e141aeeae800a09f690d757c6a0e7810cd2990154de7cae7d9391bbca4a05115c53f43f7f1a40e07f90b68e5df91e3f43bfd734dbf2b6ad5183387d822cee004d5e38bff690b21b34e82ac58507c9a3a03ec7099d74933982350cc73e9c18f88ff5546e39d03b697dcab0da10c53f6f4dac6c7d6a799417598061d21cd4f40d64dabbada26eb842a68bf044ec221f8258d80740b5131c2c166b0a9f61578aa2034c53bc46c45df93fd6ef3f40f7b1e8b5f01bc20cc00e743d4d1b244198add2eeea8b4e4d66dd4a0422aad5b36ac3f2a6be276db9dae1ef3eb88ce3b6ec43bb2e605eb32d0b300157d430d53a1c37fd42c02cb0afac76aee32b22683c18a8156b9b2bb61099573687a95a68e8a3ec9dd3a56e8233b454cb1223e588b20b43f3cd975d2ae361bbce6f6635dc922d3e1f7fd3cf1c99d5150883831a066cb96e3a93245612970d849059da6cad204fc8922ac95bef6ca46797124896cb50e84cba84b1ad44bbec791ba8bf9f035090bb017e26d0bb176adf7b2a4132b03c3bc898e974b39540daf3eabd616880ace12f4b1d8fdbc83510af720b34b5f14e8aa1f2aed3e02b5d34057150b6a6a2156b00544ed70892cd68a3371c479cd39e32387dd36bdc2c2e9e96c5277adf721e6513a31ca31f9970d7356503c987ec64ffc080473a34f066b4d2e672f2725a7d5cad55ce5894935fae6af6818f502de1db5eea69e2a9963f285497c07ad39d9f18bba0d37ec88d38fac8b43b87edf94b8930063c460ae438d2b3c88ca1bb31ef0553bc16353f8bb00af15eee2cfa6bb90e7ead9a084f3c6149eace7c69d38c17b418c16fe9d2704c7baee132a9abe7800353d6abe3dd1fae4ff70c02cb21d83a42d54aad31aea119a05f26efee89f6dc42310587f0ccb94e71f2de770a232ce1f77be10e2b79cb1c9614eba55d629144694c6a4c1c77e7c5af2d2f28f52689124980a52dd08cc8cbe7a9640a4c7fb36019408d5e605a075098800148fe0815438814459ee36e6d6c2ef1520a72a504ce2f67fa7c10991a65eb5445d8a849d6cfced4a8ebed37b528a8f4dd11988a8adb091a7aa10b8cc832c73722740010899b3f3acae9c871ae4943fc637ab52f40cd940a64c16423ac8aac261c8d1b70616a4891400da1db2e752dd80592dcbde1c05a0456119f4740c20f104e10494a3658d7f4ad19918d420d241e354219e5c12e18da32da504eac402f806f79f07f35b295dad7a3521120d78b9c27551f8ec792d8cd2b3fe57661426f075e44e1ec13addb30c5b24049d00b56677613476f4040343028c05d87bc139ca91898dc05a059fc387e068b848482552878131a6333a7a4c40daa1ed76f783fcc111bb8264a24385542f95aed47523777e52250332978894b93866500f34ba2b0d3bf7a8fabe5631092c772f370e312b7f20aa854b25cdcfc90eb24b00c0e07214a1442103632f1b05346743eddb6474eea94305908e4c779e76325d5b332e861db41354513ad438a933b4774e157240180d3bd1b4469b7ea5fb63b5ef7f945bc9a75c8133443ab94593ec3f8a252c3dda4c005ff5257b0448069cfe18b0cbdb688a3194453fac11891ea6c98b54c7834e395c1c710d979b12a659c7bb87e3d51ba9ee43365896b447613b55c9e2d4fd9a2bd929fda928d4abfaf4d7f7df6d0576eec795938c9db74adf05431ea53498a26e35ccf33efc07f1fc43e29a2f9e4f19a346940296dd60efa6ab0a1286b0ba5d2bc2510018bc4e860f8c1e24a95e7c5b39092fd01ceb8573393fb83a4a370128a6541dda3dc424d3dc5565d14749f269a1948e4cda36e35010dd410308a830c7100ad21e51d700009120061b03a2323a8f1c4c99f4310da685790bf7f3848b56f89489c32a0f44728d818430daa879b74cba58b1a921ec49d9333fa0ec9819908ccb82e9b310949299d1dc1bb75d9c6707aef6810583c59f518aeae77d0401f7801d8adc55b118017c345514daa2784abc6b1b38c9266eadb82806c42182d4c6aa3789b5b0f3861891d499e054b684c362586f4c5ef2a42723f8494c909d091679537d80f51e57a6ef19fa2f08876d82122a86c00cbdef208cd3945fe9c71939938bfd143f22083df2b30524b9b1ca265b491690b8b142305b52167647f93b172118d23fda0d832736e594e5839099d9083eda12a311deb36b762606c90087dde78b2b93eab95935c6625bcafaf2a153cf1f7b8d85a1b0392218fd9914a56806b1347743dbb5de6e3121286015a541b1a5406564acba2f01c6eda8c23f055eafddddf3b9e90c4919b8636ef0220a2026f08501d864a8882119b8ad1c367f4361a58daf3386df009772311bf5878a6117952c91d66e6b55ec78b5865b4c8a58668698f58400163b7601c1fc5f3edfb84c06839ea8294824c497a393d89062e373cec2868525105adc97ce42d3441d685d7a191f12c68b6ed021efaa37d61dad5a815082325c4fb97f9a57fe23a053efe5fd6d4c3fced4113732c0677627280b3063da3a97b035f8f62eb6175f53e5fe70942e189c60c0366e11ffe3be2583cdfcff9cf7c3518e144c0fe54bbef44786fab8bb75dcccbc560a7908f2245cf03d42c048f1832bbb89047be6face2b66779ea79996f7f13c2b8f8cc18c1cd22bf78e588c887fc39c5036be49b0ed20596a3a152d1a5f7e8acf0283cd8fc361e7fabdca263495014fd8c8e09148f07ad98fc8c4924b9d9c66f5a5c798d1478f4c22cb2eb828be4198d2a6f073929cb89478d0d1d000f3ba868c331e1a3afadb5c8e8940a8c35809ecad188522150bb57f30d24c1f3b4d6e0e03eed606123f4934ed335afa63c3960872e93b4a3b90b3c2be5202db37dda906fcb0bce2475f70337044374bfc297f8ba9a080942841129af4c8a6bc82428621d82d23641f46fda3629c779a5e8ff6a4544fa1c114b98090e6fd6fb502c7b3ee2a7806c6d2f6dcabbaa3bcb5b0b77f442ad266e33e5f4d02a45c921980c24c1c78c75aa97eedc515f0cf6133efd92fbaef087722e06cc2269ae825d08320554131e3311dc1e8c889a516b9345311dfbb415552891889180a3d31f5a5b398a49b1f85910b5c58eaab1ed2abc8aa64649f2085f44dbf843290bbe8160f41b0d9e5fcf64d4d7745dff3055698f37f1d2b97c5da57169cd8c3e7c11ddd3154eb072da9361e3334a1d784ef5c8741308bf5827573c0c9b578bea179637cc98750a3d073e96334ce252fd60bd55c4b7b444eea2d8e94da47f8eea4cc28dc4152b24f951e0591da870fb0620f49151a8b50406d1d9c84bacb6286049c5efdcc3512fd738b51ca57be2448a0a67b32fd75e1b24641114d9afce594c27c70ed444ac88e2dbf2509366f8db1a4669dbf162149d4a7df4c6e1dd524743f78a9a70f3d3b7b0708f70c06b9a384620e50b31007bdf2782527ec95e8e5985ba9831002b8e3ce53c5277f1c6bfb6ab1afda1b7905e99fa7674096755042eb863b2d15a550de658780c6493d5094c8b20003871126ff452b04f1a79da58d18b9b908cea6cdc0cacd5de62fb78f5eda22782421a9e8b44c9bf8c8456ab644965abc3e4168fa79e19725b66b7d68e7b00c6758cbba3cbf3a4f0119dcfdfa0cf252b074af74a5e6d289e80a2ae28d6f8733ac741b88b942e036f97539e15f615227a24712468262a90fed2e848a2f74c37168db20a8826b766a356dad125524f834f8d11b2408e4ff572fd8c524eadc94b26c774cd0371fdc4c50db55cff412df7c081575bb981847a5569e16e7e193686cdd430b4ce284aede90536834d3b75879cb286d141002474e4d6acc7a76eeda6c51d4bcc9b7290efaab639b517ec0a70b1b17c16bcb775b21178f067a479958e402b986a15b8d96f0e2a6b498251a4bfdef06c6a7958f720950e9219e4fb234ff3819e9b2717874628f243c304c5fa04b0b99a26e20a4441e69a1abac70f094c7f6798d5a4491aeda1f09a998e5a9ed6ce9a9eb301245f478525a80b9d3a1a0fbcd9728efa9903b74910000b2afde2fa0f0182735913b95613d3448df5844f3804d2f46854472ab2a26d40f275c771ddc17c3e37368a265ef98799bed52b8516faca7b850a4448bca71338a2e849aa2a78d223a1960e9950dd418914ba7bb3a73a2dfcbb462a189e4f1897b82c382e540ab0f8081bfba8c0d6445d20ed2d4dca77ac034c7a97b57b47fa66adce43e061ec98b9cb529897c9d8bdacf0f94ef4afbaaba8cb344ab1c4cd1fc3a56089a5e5bf9c3215bfa25f4b0741ca807f4266e878e7fbc41f2a9188ab35e23a75d09d9d33a92e27e9120bc5527d0a4c5856b049c0978381cfa7379189758c18a00aa94fdd440d40935de68e095d0b3f249d44e82424868644f650c464a6bcddeb629f04942425adcca894b43e70a5a4f54c4510081ddeb2dd72bcb6205a224d2669377999c3ead9f9a2b3665b865e34b797d0e3793e0d5df389a251fbf14e9475e1d41aedcb543abb1d97d6401383403bb43d70a744e34e6bcf1e5c709409ba3177033c0e7ea2101f7941a1999b868ef7d7c86aa31ebd2deb40def7f9f660a7668eab70c1a70089fb889467b37f0ed6949e3285624005e3b11d76e23fd1b0c9dbe0764f086325e4411e3fc2e89397b392e5669f81a5a16031b10caf367100260db4540e502f70a02369f6c00a3b52b78f948d89152eecd6910461863a2ea59560fc7c1a8108b34e6a0a3320e7163c9443f9b891665fac758b47721ce168be4a2cebfac7c95a92afebc39a1cd8654bacab85f70621d29fd49af74853e5fa7097f7a831f5e9d6456908eedbeef67945efe690fa91c54c58465f8fe9f2228f7f9ddfe50739d8364e61a464587607660f79fe6a01838bfda2f8e0e428a447c3f136a0fa9d1620eb2d75fa8913f591abbe8e9d7f54bedc3d491a0eed874aff783ef3ca841446c1b0cd95c3402cb6041374e07cb1522843aa36dd1c3162d548833662178bf656f7dbfce555347e7de0f34c05acc05289119ebb027251b0b2eaf1c7ace78716e6eaf3dcb9accf7ae8dcd4fc11eed7da978347158a43f8a4d3bc6eb8020ce29a4b590627b2a5c401424c5ba5dbe54f6e705e8eee2547e92e22e4e38c72d6ca0ac6127f62fcc44d52699d9c1bf65be7a83bcecb3e1920e26254eb606aad71b0ad65abe6fcb699b112f9a878f7770778a19272837eb1cf99e82a1e5a6c86a3edbcbdf15bfb147f995d6d62ea549ecb7459b21484a9359bd8973cf6390499417628cd17372922d8afb9d66775ddadbd66508c471f43b33fe90d9f47b2b620a2d068d095f893ecbef282f5c69a0404a18f47a22bed2c15bf12994311aed87a4c37953d6683a69e88ee421bab2c8b3defb74e128fdd784293910f1a794cc5f5e33e028180d0a01eb6829731c0f69ebcb699896e075313b9edd49b4d6c920fdad16dd26f17f73c9d9e3128c9860193524723f84793582dbdb0e2e0828556d3a082195321a2735ea29a0ff51d882216e5866f8db85a1fd2be57289dd04dd1debd02cf81fad0edcd7921772ec1f346b58d7dd1b54c911597f3c5ff8a5c93f043d62db1520d3f1c96545f171a2c11904968e71b72a0a800e58f81b954009b9500bc98a11af25fa5ee0bb438564ca4aa0056fd774f4f9e2bb31204edf8dbc6be09820b5efc4d85cce63c5aaca09c041966fb13dd6df97cef1810e38225c2a1e416309617373d8c48536f21cab184e5720155fce4f387f6de80b6d03b54dc647c749049ae03d80852715839912b844917fc09b4f328b4cf5cbd60dc83a376283405617ef80f485a9bca92ed4d5d962a81987fb50027dc12247cf8ca7ad02ce926a6095863943f4c9c3c38d73cbccb81abf4179b248fe784ea8360e4df735c1b08d60f990df0623a561a210b6a3a9bb75aa593fd2eb6938d2f9079429fb5a0780ded118fd83b4a7b7b5205cd2bdf2042d8e8220275348008e90a6b69263bfb47feeb59c896f1ad592e41fe868ddf2cb38fdf991e5decfa974292ab9fa5e112f26b4e7ca33c6195b115daaa9b3dc42cc821709c354c57bfe739cff95de0f3ffbc4fb3106e1cdd96e6773872c6ca5d0216493d2cafee209372025e4203fd1dbd27ce0d8e6d40cb6bf5316572127c0b00be3faf127329bc5a8b4679e75df4f95fbf170a609575f7a9be1fb717e77656a707cdb4412bab5befd77a53965ca5fac062df55581f8723907835653971bb506bc3f14d38e4a3c989a35eac7fa870fed68ea3ac9c75d9ac48fb403f02dc5a3fea36a672bad508462fb4c22ebb23eb9e1f5bf6dfb38def0f7fa3de679f7662497a2cdaf88dabb696c5aa8acf8fac08636cf189edc8309d25ec92f50756aefb6a323b9ee32e5a40f5d20caaf17dac9b09b8b68ec3e93e26470fbb9a3d32902b0fd47ed456809a960322c2df1aa4c98cac91b2e24cf10348a467944393c302c41e4ce9a09e3aae178aed3216132fef9d1ad8d8b83c2db9fe9d28077a4a35bf9e6e61154645e5c1b25d4341428ef2815174b32f0d4143a69443cdbdda6d0995f67f47539d8620b848780b45fc52470f798ee519a0c06632d6119f2daf04f92ee4b49f32fe8a890f4c07f91111166bee6a2d276fb6abd267eb95ee672ba943826edbb353b68afc63c7c863a4506f245e22e4ec93b8357c491cc9dcb3f9ac1ebc7610d10eef238ad164114aac9f145a6410e8ebd27a7918f5f390b396d50f17e15f3e2efd345f0498e9e664e33934275e14535009e9dac4ace3ec6463d82abc19f2b15411ed50a212280e6eb6d2dbf51a37c8810cef9ef1638a8da934546399441aebb58fbd22c64d4a3f9f292e631cd1c2a437a6505dafe0290bc20b61b2f7e2906121deb29aa8e5b7d6769755353b151e9067bfb834da0fc596d228dab59e4c095af663e682e308fb9935fe2543e5bb8996d01c37a5769c75eff83a61514b5d7849003f044ed765dd1f540983989d5a1d0f6c0da8cfe8737b2aad5b3be30c64d83fab1cc788ca63d2f5546b196749ba55fb41b3de71b56a3da87d272ae15e874851c2511784b656de16b955d9e2449a29c7f2ede3824b7063bf46e63ff9c4bd7a36342e498a4eee0fec33624ff67b2a7cf0fe7c450d1004beeb0db46429214dd2af33a4cfecdf3427045d59610c437322209269452c6f2a389a5498443b0ef5d2efb28a1fe89b62859ee2342d450320d4faec979a137b2aeb7bd55ca7673824d8451488604b530471eddb070ec07dbd504e25d3c24cc8facbe556a5f4710602dae5f1594100d492a49a69d7f53db5891d284c7d899a80e59c2c463849d1f08a3b8aaab242e796515446502aa3690c7473ec5f665d0b81a068ff6da7e6dfbcaa31002e0659803abfe3fb592f970eeb53c2b7e14a6a2339d0a9c35e60b6772971a862a3d68d86df75f2d28d9094b662744c05dcc406e5aec8eadb6d3e89d6a3337cfc71aee1a8c196f631295b2a852789d16efd351d6bfc2be32c31785bf43083a8fac04804310e812b815a52ae662a0b8025117e72ce7e47201ecc00d1d81ddca0ea866cda914af46bd3f1c5f2b1044eacf69a0697482be69978c4eb8bcd25126b125b2b00bcb1451134e3dd2f555a7c90c06614d448c77dcb2817634e35b0a153cd650f9b40fb36b51b5aae401d4c9ffe0f69d0151271bcd835003dff4f71a52b81d186331ca282bbaf427a91ced97d1fa14720a17edbde3c6834d579eded6d11e2f4a0272b8bed5c33cf325798ffcf416ecc3f30fd316d36b2d79b6e6d8d934a1dcbeac6a04e01e441eda054433f8b5aeb2730aabd7295fbc49f00c59d0d83ded0c68853eb20a1c115b99527496ab81714fccb072d0000a70dfaebf8aeef89184ba5179f6040b354236b8d984941447782bb667b547529d8a21d25824e699f26b0a9cc66f3a538547e9518f688b5b24983fe9c75a41db2f359852722856ec6ffe1089a9f5e5055ddebb8424b345b229e7b883f156b4e0e0b5c3c9ca4ce47ebd099c6cd37de5c2f4d0050ebb6557865691536cbf559910cee956bc16c4d9055835b2f71694f22c0eee403e5d973f447b9d500afe02e346244951c9ec5c8b3b99b3a91c1cdab3873ee2684124b7a874da078ef6f885a49a964afd9bdae550c3b9d712943fbd16e676af380ea26b4b111ed38df70ca66c4b38f4f66555edf168a1cca85a753463ace7977b394886bbc9f16c26b06e2eb77e17d5ba361164d2412d20ff7ec7642c27b9563cc3f77b03af23448e221541e41c0fbb918979e0c58bc38e516cc182a7b3943ea1c52ab3ee4747f42098c8d93c141a801342178157f4ec82547e5cdb950b9b6d67b45c00c41a4166892c813632f03b1e7b3aebcbc97a6d3607c5932ddfa2fc137c3e78d596a4092e41f1db280714c98d2fc745af40fb4d3127bfd90061f3a30a7b088f5b0d4f4545645779bb7942ff39632bb5ef0f2a6ea40afd8b125a8e5a57230630709ecb778edd4f21180f082254f1f7768f3ec0cf4a155d509c4620058ceb32a33c429925dd5fed033f3660c6cda64cafea0018948b0a7c2f300e9d96536d2145858951a3a88c972a5f7870d15b9e1b2c73def13b2f0439d12991d8a0131b0aca7406d59357afaafd7b0a43c694c74b788bf564f485ddd9656017028fb4c4f1e168cff90731d8175c6bc9454c02abe0f4c40747023787c6374d159053d8866db1d9fa10988e4b744bea2e3b8a424c99d08341f1dcc07147ebb408a12541ccf56c0d71e617270deadcfac2ca906eb34b007f58c8a9afdf5307ece5cf8f560b62e691f4c5c1e7145d32296686a5b505213bf21078076582753eb89169b6a2b71a7ea9e7de187a1bfc810d22214ff0656390b4b77530ccd3f2c5658e90e33f39c337477bc888e0ff2e4b012a33be06f9e09146b027b9d0b5002cdd0128cbd02632ea0977b6283dce34aec80221e61147bf294134bc0ece86e3c30535199b3cbfec1696abab4fc689d5d3e207bb33ed92fa3fbe7d8522e1c1f6637323e47c56d7e87ebce276550ef44a3d64023e1a1e6fbc04b31db563f6c2cb9a6af870df1b83585880db7866879c12d281926e868a9438013846a6d43baaef608378f41e7736bc1504ef27910332ff08a16eccd5f772814777c91b035712a8e8ccace23624d7dc9051bb66f430187a34d40ecc5d40ce4cb77932ba4f09324c5cc9da90a5b099bd261ea997d154951a1b5ce39c5ba34acc9ef6a795daad4b0934a6c7b488ea0cdac2549ceba731512fcb19e774c1280edc57a4b6834979833f2551b057f55ae7d165833495dc99c9755a7e5622587623f27655e9e08df498cbb02a54f12a52bd09319c3ea3e731058d902832dcddbe7a88e24067800032c306e71f4dac5d26fb879ecc0425de48d75ae3651ef1d3f04ee51134ed75e69c194bec52c18d2bf0e55e9be3fc8d48fe9f86d9ab78e793361d44e72fac0dc80f6e3e4ca6841d20b9e3e8ab6915a6a298071d0c0205d8e406f59ab333cbb64d88b9a12b851f9c1d1215a78c9a8f50e3a7e2a367caee0182c828bf163f14bcfa8a2c5a3606e8d63bd92be1a8df20d6d04f534ad197713e09e2b1f1aafd470657b2b38f6361de58bbc9dd235136f809872564e03ec956709409820a9ffb3286fced55c77434c31d0627b9100c699d79860e66e49ae86a1e3d22ad2508d7f4e5fbea91c97ba45a7a112f1a80e94ea1b1915bb91e3610711725473bd52e3891113b5aa0c20442445037d17184bd85474c1d315825872d3d9eb144bc1d93d942e394c5c21508e19166065c1978d587b947fc81f0bb3cf1622e4db76e70531a4482c6ece82f6f2424445ff4cbb27ee4a2832279768bfa7b53ad54b5049bb785fd0daeb50d77a78dfc259deffe4c4c1f18ef7540f262a011664fba72af3d378f498a3af148aadecc97027c51ddd52bad3ac639f9b574f76e54da49559d54fb36365decaadfad0bb911c74ec2f1d18011cbd94e186784d1a793c7d1591643ede8c71a7d32fa8b7bc6699de0276370b38e5efd6e4c8ab028b7adad756499d7b144e70b20f2910b172fffde4af1b6fa26933a3cc02c5d5ab297f192373f8744330a009fc9dc0cc3daa464b42e79dfed948a92fac4def7f87f2b3ff637b61b35298d504f74739ed2b603cddb493663400e256db8518de5297203e537787ca84067cd1933564e118cf2c0fc088e7f8143eaea3603a779e59c885ce2d463607b325db0dea4d38b13424e8240d176bacef6157ae99b2093edf4aea397ec029f44365140494088110bc1e3984cfaa359eb44b6f4a2f73e5cbf70444d20c37473cb2c56cd62a01b3994f6fbece27d2419fed29f7b8b41d364888fbdc87285a303f11877e76628836dd1b1698fc92196b418b3803c037c249c7bebfef0a8331f3432ee3b3efb8077390b053c673e72b49302e56d0110f68d3627d5c315db8d6a69806138f6cea500fa8088b553600d8a88a2c0b38064c3915fba16136d3496e1872e282afa4f65568ac2005d53bd2bc220842877fa1b48bac4adafba635208c0688cb236249d978b46ba0ebe5e8e1db23b887f0917d7fb25452093b443d5a94ab9caa1ec8acb5f46cf81484b5c2ae682703e884e11463076d23089d69e1d4cd3ca824d39a15f4e9f7659f6ed17759f8e0fbb0be103e56943937f57b5e624fe314b525b4a2dc090f23b7fbbcbfd3105c15655bf2c14805f44bd82c9ea58c677214d84fd352b984a283fde896134a0d1600e90e1c29bfbaa1467b332af4990e922da96b7aa928cbd4758159279d987a01cd86131ec0f22c45453264658d3ed261b9e0ca2d49c5bebe504a5dbb07f5ac0b948e250bbabf38784c52caae451492a4bdff316b868f420b28753caac156f453e4b63e1a620e887caac125cf62f3b6ae680ffd8e51cfb388236e15df28e5a6f0b4273c1de77f26cd7063751cac464b968593488283982cd99473296806398834de95be8b7993ef35cceb8581e1873688b31e44e419a0bb61f61c79cc7996acdc99ec18ba13df76e5db3940965e7d08e81f7b2621c8bfbbf2a79027b0ab2471852563ab6aecbdc2abb16c0587dbc6a668fee683cc11f07d9bcc63a20d712078c3a363b246a2a3afce1f7fadcb1013431025eba47e8f1705051d61c53b23d384a2a97bd579715cfc99cb4b637c422ddc71d12b3a4e4626c4e77e8ff3846b026e9e040148b3de2cfbd7137cb280661d5eada7db7dc1da3a52ec9371037bb685c4e7d9bc972ec25cbd981451987274a7e5a34e9d8b7a5c05131b9cc8729794099e6b2ae7d889d4e0f47dd05e0c84c754a5ec2399a004ba84ff107cf3f8cdff2f7b91bb0cc908871b5b85fe6edc0e22869d2eb2de71b2a23e67610258783dc88d2a8d974ac7c6f5d8deef71f245528c824c56eccac6b2b1ee2817c12b2c7dd4e6d25e2213d29d19e509535e9a6002c2d2f6a4e0020e74219d9a6cabc30ba37b0cec0a44db03d7571f88a7e45c64a25404006a9006b1865badd90257c34505adca58a5f78040297e587160227d6053d17372a7a18b6d602d1df3831fdea293e3e5fa336b5816b96c40c1a8120e204c28d67f87fa5369cce4df2ea991897c7b46fe94ee640d5bddb68d37526476fea72574a2994f5095b4ff8cd21d71f5035b2698f2f11e919dfe3bf4347c22df4350c8671ef074fa0a772cfcf4d030595ee45e21052534ef56460ed0482396bd28533cf1b81dadcebd51c9e918a3b1cb1598c8d7e28c8bce952f01fe0050fc6f32286756f3273c126c6781bbdb03b6a9dc0ba79b423812fb119eef6dec4123689bafb9f8aab3b7b797346b42dad8cd540b804d9d609ccec5bf5bc14216f722b12f64b3d6302a46bad78f245b2b9261152d67c9f5637878893595b0c574ad972628d6316abb9712aa27992ce46035792ba0c9604a733fcbb23f1305ef8922510e5927af2d530d9b110e6b50c50c110f3baa057ad00ad4d94dc7242fb0f7a1a4f793e73847aae21f0663da776247422a104ee2fc61f4f11f1e41f757360cd19444e291837ab958cf290d9773157b5bf75b99cd5d59880743f4b3feef400b76d60dae898594d0dbaa8f1ad540337b2f268ebd3ed90daa62bf898da4a4f8823e19f3b69bc0457b383688f7c39b2e99d2554b88a604ac7e0824ccda989ca516f3b8150f38a58e4a4c592ed77d116c6793e24c0408e760f611ee8ad12ec7ee180527dd9216c212cbdecfc6e7b3789ad519c0f50ee7309e0ff211156241b10f0ab262ba6383b1152b90418b649be9bcc5a96676bbe9ccc4d3f3d2d287d5871ca88bbc902312b74134441ad25f18b95b8e1798ae037be6d8e43fcbc53ddf0c33546fe3a2323436910228b24464e61b0997a3903227057b1c7e1a1b0303bb335d1c3f20691c19fb6661a97ecb02dcb05557d040153586745d8895d13633318e93e979cc8afa7225f3795cfb22e3a619a22179807dda76018af8cb317f68560d3e72bced12432b819b5b3604d7cece0ad76121a90866b135df40671571dcb1df5103f617a1a0be35ebadb62dea1c7b33517751fd62d96188c728c8a0c46e68da9ba064757cec00e4b8fc2864b0190cdfc8e582595633ce8a5088990ef6ea8963b6731d595e9d87ff5c87106528a99182705967c55ef129176f0490d640a8c5cffe5167004e6d6e252daf3da288f1bc8c2db5744e3e3401e3bf2250e55091072b4c40f3ae183036651c7a863d280e921790d4411f2bf180aee6375bc14cdc5b6354b6fd794ebb61f983b4d636d9a24c125ab03e722d7c53b70ae573569acddb459f675a3f4b493c8d53880e3cb6c2e2105b8e9aa33dec09ecffb2cb019f96906db472d66a4f21c40408730d8eab3e04d1fe7461c2a36c64f82c29217a77b9a13731db1060ac1771267108bdcb624bcc9388d5b0b29e677bb1bc4deeea3dbbb5f9e49046483b0be55663be718d04a603f5aadd5221e424373a431c798882e71cd720a3f7d08d9bdde76625b0f6432b69481c2c87c896f0072c77c60c72c16201dc9845a9b44a27e20aa3180c5e3fc5a533aaa778249b9f93978b4fdba3531276095380a594e463813e1644365d85bbe9b519a98a12f51fe1bf0c7b3cc9311a002705613234953ff5840cc066e0f0bc82054174494becf3a235f0281932f6385d81bc1031bc09da3cd3693ed6d8164d284f191bf078c2f140ccdf3819ea9a341bf6230908f4a5f3c46f1c917b27b8554e6835cd047328c54e0b707142da69d6fdb9580cf4c380b3c66a64343684a9ba9931570d7cbb00d3bcf233a3da3455bb0c5dfe69d4882021029d3e7fb2227aacb1d635edd6844ba375fe8ecd443abb4dc1a12f203c06ee5ac35190f55fd1388c49b1d08edd9a5f614e7888889cde7097cf1a8139890b5af164c388e1e46cc7fb20817363ec8436ecf0696cc5ffe08a6627a27fd9b81d518dad51363f4463b3788f725c6bb08f720632538a79dc301ce952f46c677d442ade98383be1c0c47417d35d60ad3a762f7b70e3d640235b6cdb2a26c7ff4e7f87667335cab05b8084ec24e405bd1b9da46c589f26c705fa403ef4128e1e1c87787b06081891a311b711dddd209eb5d82051a8da7c6312c6a0ddd015f524ba5c1ff318459fe10b04ecf4d3afadf246f6952c91f42e3557dc916f20e289cbbb39c9e9540e417894d3a33b16a24c681cad7067453c31b2b8cd10d3ad7697a72c344eea13fc7c5bab907f5556d15cb7fbba4f437802df4e20c991eb4ceb17c0dd1e8373d4fe21c1b82a70099d6b9561a1eb839d484fc59aacd842d4a97a95014ad3f092df51a51e191b8032b10b677c36d5823e3593a462b59508810b7c9b968d953ee4b836c0531701ff3c2e02f819b7666311bc21507b0c24ac3e637e3f9bcd239c210e4e94c7ba050fdf51a0e7e403def9a56d581ede41404c403fbdee9fb91617395dd7aa891bfc44eddc9e3767a0a60f9e4f7807ddc240881202523ae9605d2a400e5535d7a0ed2395a4135f7874c9c12f400f1964bbcac6747bd4f079860a6095ea9023ce9da7bd414046e9db702195c3736fde609d38aa9132ff6fc0c94fa2fd47ad0435166d6b017094bdadc1935474389e5316a9f28ea4f23783b04f932898c1c289d75be2edad3517806d1aaabff29f9e47ab3720b798d57f6e67b8c208ec4ca38e82fb6c1880d2584ba1e712fbf454c7c6506754707747294e6d70e3df42c419b7b657aad12dffbbc93f44c9c7d3303eb2e6a84a72b958c0c6a050be95ca532f3b434a7d05ee98effc29259c286dd8f0e1123ed8e7fefa122c01ad4f4d97de8d00c31d09ebb835230066a55091d7ffa77ffc00296e4da18d8042535bbb96008e4eeb73d13f4da8f6008381b39a38fb32649a62f3278b0c2292e88429a23fa6abfa5ffe6bfe5cd83d38245a3fb05aa737b0f500429293784105c4ee87cb336f9c348893bb52ccc385eb5190e2b5298a70467ea1a8e0f4c4ca258df8dbf7e289159eaf7d9a349b99fb80dff3db4ca20421588175ec159cd3d96dabc26c3d11e6e1f9c486fb0bac740516adfaad78dcc4198fa431fa30d54f41c56c105ccade13e905a341c8d3f8aaab538db1c90d0ca1377826c6feee5855aeb23829a6c4164a6e8683284e61f4c206f2e290863d82b2a3ee3ea4ca6ce6ba2f8cba0f6d31c301dca022d49f75042b0b0f897339e811986d45a6434f51fea84db2dc5c80d46b403158945b3e0802cbd8b0024c405d2f7eba33c21b568854fa2a04a4044672c304142b554d683c17da1089f9ca361828072a9c7994411e1baa4c09d7750d15dea69a3ffb5c4475c2ccec240128e877e5dba024d965c7b9a080b48bd0a687facf761cb119f258413e3fcd63417e8287ed847666dcca99edc01c14ca2e8cdbe1d5256962156ef9fc6b821dc839c41ace4cad18fc24091cc4ad874b8282c36a15f3222b5728e02ba305e1d9b24b1e83db60e21b97b0c1d081ddfd86c805c0ec17ea6bb482db2536e6db3bbe46d8cdd7de5b689d649cd33f8329db6ef0f158184673096a06081a516ca2d1354ff89561fb76e5b50b215cf717d6adadc978879f7e46ef9eb73b83dc3cfe79235deb0d44121202852b1166591b3b896d48a744379c6368c5aa736a7d3fb5f0ae12cd3dc04bfca0638ae4af66b29d23c9cec73c285f70b7bc195565108c0122aa5555bf8e2553c4b58374fb82a9f5fd52e0a9f17f7ec5dd976cb13a5c58ea3bd1f2c9b1d0a1bfd532cbc04325f0e622e9101db6790bbcdc307398810b88a1d16bcb3ce37463e9d3299bd1bcd129a8003a8a4f9d9836741cd176f16ab1a06052817a087c8056c0f1df9109af5020dbaedea4829d20dc2ebe933c3dba1cfc6b6247fbd6b932075d4a91d918d875fcc3e40b53843aba11be6e1a2f47c6925f8ee7cc1a1ea781d1fe612cb981e9b94c889c0da0c8a15b75219e669690990fdf7f92fb4b01b34a07885dc626d0e777d6226e5915875bba06ddca34eca273e87ddeb9b9bf9c9ab1d4386a0a0dab32e7c39111467e46fc6ef6618a81d47437def3a3a4b32bb23db72a23aaa716d14ceb2bf02d775b9a6c52d763905b6196ccc1bbaf84297ea75033a709516d23787ef711f43806f9ff9dc46bb9b4e035f0eed4dbc81e31ca321b79a79c921bea227dd9903cb6d212ff2d7adcf8489e2e406356c53cc5c8a0347131ebbc78eadb2e6bbb2fd6018b9dceeb2b6586f3633accf803a5ed3c24e60b5685ba55a3c2dfe39d322caa0894242e27ec3f3e186439c8611149c84ea12d8a42817d5b21a1191c00dd3c06c15906c129398f7b5bef5afe8ec3b44480c267287e34db36279e14f1820e312e364fc8c4d6d0c44195af9bcbf7ac72370cb61ea04b51b86800f30c9f5d9d68d5e1fb1cdf5d6401494f32af52365bbd8290f00b34aeece06dc24d45165203798665d2ba52f5d317b6e9616c3af068c845a3a6407a7f6d560ec9cfdbad6e86ec37e47312c7dcb5483ee99998f6463b38f27656cc3513aac3b1d5a794cb37da65cdc286a3325f8d134bbdf862e299fb09b05ab649ad365e561c5955846424884c4b8acccca44203f243da11a388c3e2ba7ec679deaf016164533718a6120e2d891ce8168681fb8f101a421b4060c5a56e47b0ce0096cdc73c645ae81e2ca2d45622c283107dc3df73e3c371c0075f5de84867f8bc7a77a41d7363abf930418a912eab33aafdcdd5ac08969af38584a2ea4fd8fed36ee4e56ccfe7c0dbea6c6d2cd4a2bf14077635e0d0f937bafeca16ddd5966e63d4d9cb14a078dd7d1dc4f7bef894884bec842c489474530f195d1f62e86ee46169da998090b8d11a7aaf7ba401b5fcf3f0b025dec8bf460eb72ac6fd67a447ec23e43a3221250eb5be3c00ff7f4e4a820036745dce815972fdcddd90ae0a563a99191796a6e3e9f7b4654aa29d9fd9b155039182e89e108997648c5102a7da99ba99003bb81306e7446513d57949e4a929c2cbe3103d5f2eb1a750f1ea13019c39b4da8221b1f0f713057bba578f15ea7566feae838b4e751b2d1cf02c11989b2eb4b8f5d9ff8d6212eb529562ff984758207a04b2ed82f524e3d1314aa5a2bee5213280cf6002f0a07ffdcbfa89918e25e2fa595e5bcfe607e1f3ac7a4d8e2b7990d54578ed5b462d433e683990b5555a9b668197a6b67bd610a816b47095a98150f3864286602ebb01bd10727702f84e89957396a1a01b6f0e182b3bbee65f138a387ade4f3ac4e994077148e4ceb22ece169575cb67c8bd0750474c19b408e1c8b2efc5f279b49eaca9a24eef8fd96bf796473e01bfdebf73c0b9239e2cfd171120f00f7fba3f5f88111145d4ae9e3d4765e72317b29095bd83c34ea1d4767ef7bdb45adcdaebb49fb73e60e4513c2ca7e37fa309bcf83fb8febc3c2383790cae747852b75c31c01fb40b2b048ce7b8b048a71f9541f2512552c9eaf54f1e356e1870660aec6fd651253e02382d14e8946a6c4999dffbad4c70303b2613598ad1ab36221a78f22459e188168b7cab32ac6a1e2e078f3c703d808a4c393832c3d71a28eefb6e83b81cf80f90c1407fb00c04eec13219a88797f140396832754985dc32a479383a3899e1d6bedf50e32e6e66f0928cbf5a995606fc1ad42b81d591158f5443e3fe54745e258efa2f2cc6ca4e938878740f3dba1ca21f5aa603e79094699f3688b8efeb8dc06de03fb80c02edc1320cbc8797796039ac8c03f9412843564dda94b4f52758a9102e6682507038563db0b2e35c59da4a5b472257fa3a10a9925fa73e88546953c7e0e1571ec02d7d325473fafeeb2858988617d7c0db1f392396b996d2f15f0863fec569cbb610544a23b817580f3f1972159396d64b8922aa7e2e515281f940c75327d3bf2d11cf00284993723e45a5d72c2e7a35acc76dbb44c9a87fbcc3ca3870f58048649abf71907e4e32e94ef71553d9473525f8ed8d7969c69d8f9ce68cbc0f4e27da5ee870679f53788220593bdd46bf39449d037ee38faaceb602d73568d95f55b9da3903c5e69a4ab9d2807c5179b5c76dbedbd14a1466c5995304c618f5660e41baf27e66126bccebe3df29698f367c3d7f6aa4b98c1b1c012df572184e3ab590de3655f2c3c18a59d9906aa013db3b272b30d89c28bb55458dbc2f39326e5d3b5267115a8089b79d720be2e792bab516cada435a475f0297bc3af787dc2ce343d16d6ced000fe8f5a6a15407c1928775784428097451e4caeaffa2b12927764a2962459ccc888992c7089efb95b0290c21dd9632c79c428f9b40a438cc2aeb4ef3aafd09635813d1d1e544aa868a7d24e3f614499cc0f0461a1412f5ef2b0e88ac9454ca214b001f25f4da55023529ca61efc1cb0a190d8b1367ba3f903d935c5621389bd158ebe537ff4474eeb379f8926aebcda211dd00fe90adb0eaa572b7b3b6d07b9c5639e649131f2bd7368be1acdaea0245d98527ef4304c3f6803eba174bcb43ef5d469a34ceb6de0f7df5b98086bf0120d4587e1eb82264a60780fb5d3725b2fc365ba08c88b613c9602c8125881bab49fed2804b955a74b61b464605a70af41699c0ff64c717d7dee2555354dcb7fa6d41164833de0332bacf489534d66c665ba2afc567c6a9422ca3584689939db7265e8ca18a7ce9cfd3dc32dc86c4ff20baae50e179e855765ebc5a9882f0cc76dceb5be798f873777f6a148d73d340d0f2dd86425b8955b599d60d9cc9bb3bdc946ecbd83f88f267347a1f889c87d77b586cf89116dbcf58b2fe793ac02a5f6c7f0ec2794211315f6e901adfc4d82862efbbfa0c6a63c18528af1721b1cf9fd9d9ae358d5f6c303514f23efe6c2e92aafcffa9dc744c12900f55312d1c9744d8372f0519a91699e4081ac426c39b9a22c268a104f968ea501cc21d9986088e1f5ba78d23111563af8a136861bc8686d383f6cde3711c063f049bca1286c5113882e57d5c6d368cad45f97cc22b3283e20a4bb78fd18cbbeb935609a43ba74fb68fe4d3120fa9109ebe5680a56c1ae440e3884f17afe2002614c5c65b1b168db7e32c06da0ab80682790e3541d1b8085fb096fc1c21e3216cded5f5059ec5a7325f47cf7e223cc55ae721bf0fd904857c031daa3d078b378d7c4f66a147d9532f745e28f98ed6ec4750c0ae5cce3c8ecebf22b05c9b745c70afe1e9773664ba5f6a57f8752904ecf75f1d170dc94f7a22edd02df571e076f4bea186049c0fca6bbb2c8058adbd877a37de8ef3bbac1903e2a3efbe18a03fb8a722c6c2835d5822a462057ccfadf4d4aa0e4d906ac44d24049fb1d7c039b84cc205b5b472870754063771e4192636f2287a96e3304190de7c22e1df3d1c693870051903c1b81f4859fee0675109604ce7b35c3b9ffd56baf72e4bd433bc69e09a3e28b9bb5360e26b67da4bd3163de79a2944064d84c9ac187f91a69d2cbc3a85dd3c224701a0c550bd6cedd75a117e71e615b44a27d81e8408044c34c46789bfd0240a11f4c190db671d95252591d8d3c73d148dfc97d0252ae743f28451a87126084b5caacf035f079ad7285a481f7c2d193da59c4a29c579a536a985c02b8bd4bb8c672c990975db906c527286c928a2df303e09f264e855ddaf9fd2a0694f48110467cc4e37f731a1c0356ce750e3a00de8eec5d9819292bc9526c149d20ff158093ce6830df4cd7c4ebc87e0926c980ce669c7d02c00a298d07db5250dfd9e4e33f2e99455fcef83bf5535e3f3a2c1a9c35f36362e194c34a5fd3a26f18d5349198c8f6094a68dda6461e3663c903a8462c966d0a9c0f89d756c1721b558c7df3410f1db468c2c92d2726a6c232a8220d12bcf3c8a4dda8df027ad09a8ad2217aa8e948037ee6027aa1433716225c95092bc14b200602ef87687bc4bb09c14697316c61a48ef348f56edeb85e896a13901b13f35042c3300ed7ab123952679f904ee7dbd9a89e486fcda2896ac625c042a1082d399122e5127a347a802c06c72c0388a6f5c29a584bf54a8deab540d7560cf3fe18fad93066c1790aefb8caa51ad1383db1e697624bea54b8b67abf283729d5f3b1bb783e2646e850df4e409ba5e1edcfe3dabc9e59a5487e28290e2e47761b76cc1d341b94c65379ca9c9fb8ce4b86150201543c82362fd77eddf8a43c4678285b81491be54e10fbf3cd325668d0dd13ec2e0a8c24b0426bbb36866b3be22a964ed43f1f85576601cac8e7e49651e7f34cbfcdf1cc4005037c7037853a260aa49c8d897154fe34e96dd8da477a9ebfedd4b6ad71f8d60c1b42dacf81a9bc21ac6688733fadc0f1a56441b1f0d6cac145fb10e2aa04af34cbc0a170bdfd48a55043a38e0cd8a193362eedf8bd49e8e350ea3188e515b41713aa07247636c3958122456bf95d9dd415b6cac22bbc945c33a1d30c93cdd664409501b4f3ba936647605983e1842e9e0560bab3005450c5467c30e9807feba5606e4b22bf8d082d4ccc54ba2adb47980d3045e5eb8e7695aed40a438a002b50275554e05c1ac9d8a4b3e0f8c6b05e446c815b224e3394fbca124f745f8dc106abc5203dcf2a5d69bed847004616bb214daab016a25bc7d08ef36de6046e7386eecffe09628426ef3f5f76c4de8616b7e3fff32bb1a531d16ec86bb8ab5ace797da384f6d77f240899d4a51aad2b43604bfb652178a3424598a52c72021b83057e8fa390cbe136e7d1b23699645a1cfa9db8466a19b8b6e66779d57d82c8feac9d498cb8adbe768dfb4f4d35344e7cbc342134d30b76e401339d7c471de25422200dcd103f81bae4a592d59ead8c457b96cce09134b6589184e72b4a0a9df990e13dad29ae71a509f9e5235d5d32873692ca67fbe2a0da41d9e30ad2a238e8bb9222cf089f7b8713c314292a9c657205dd008eda7df6a06275e0aee40114f7eeac838a15cefab8200dffa5403e4f4be9547078c197ac5193a4ce54d46a0cfcb764e148fc9dc6bb891c1792f0365e596ca9cbd214a634a576b28809803a8ade77e0435b8310e228ae4a468765b11c1ae3c42834ea63725b0798b104ffe35087d4bc2ec36273a8829a7a0732c277725e2a37d5f7282a5b3aadc914342119bf305364202a7f2bd96a742949ca7f45de20afe30652ca81e78dfa574751d84c3e15460a58775af6ea44d81b2d0f0a3e54feb2341e2483a3d93d18384dc69169fa61bed0b2f7ca2753594113b849ec534e81acd0b37192503acdef910b3d61c40ed4dc935603877bb892226823960048aa00c5987b013cebac9dd9a5c3112508d4e80edfbee158967fd5f4a21498564ed25432dcbea40beec43ccafa979893cd099ae1a0c377b1b37bd759d8215c76419b1c57c372d22fa6f404857bc9aa11e8d02c48f75d57ca6b8ef99244d1c745d5f447227a29c012d07b2d461d704671f267b049490af1987c43ac24285a186f56af83b613430233c1b5546b757503cd6191a0a42eb29bf74aff3f6198fa1546d976be4037ec8fd58be6b8d0f8c75cfd08d2e4e28ac7e880cb14124132c97890b3e17b0bf41c8e7f602e0fed79d74b2f148825cbdaab62fcd7bdb821027eea0130d6a21080a10b63e811d706ff188081e5e6d767516567d205e33a5d1c40068d35d183ddc34f7252a185dd28dd5fc5bc38483a839789618b758bd410b4eb8b4d71340277c0c118141a69b453292139903517cf9948af660996efa226645ff1898c6d565f41c9863327d1c451361a294cf5b3c2d9d07f3552389e0981eab46bca98cf9bf84f17e8c4ce8ac1119da8c221b90911828a8decbf24dfbb960ab18a381348ab3e99aaaf31fb325c64071fc5e22349d8c8c54b872bc80c7086b8254040f429569994f6cb299bc2f7988242331286477fe4f13261b96897e6aae21b08f8a1746cd33af91509d1b3ba2018870d01d6948f8545fa8ea4d47f2d9c5bb236da3b9f96670038a6e4046606841791fdf65bb7253259cabf77664ad0edac8b3cae059387d85a8e5fecbdcbe175f2fa87710436a1b431fadff28bb2ea906af037eed8cf15dbe51528066d951909ae730faaa70230eda66f6bd8151c99d800595d5f04b951aa851d545f11d540c06af94de05e49cfadcb56427741386dd1bdf1747c6ce415bf35ebccee22a11b991104e0584a41e2afa7bb803a2476212e19783dd07cf8dfe6bb7d775ffa735b2f59a558d63e825c01d8161ed5cef09040fbb02f01904dbe92d7a069c59069648e4d5444a3d18f76dafa2b22f668714100b45a4fd5d82282bd042454618dd669f258478cc0f761989866adffebd9aaccb9d4d6d838be4aaa2a37f449b34385f011e0be6677f9454c927819bf33434ab15eaba712e9c25c16880d8db95011c390441036b20fe379607887794023f137c559babb957b6dc3ac009feb2a3828f5328ba1719fc07738f17dac7dfdf18f32ce5db73122098b683f631f1ec52eea775ccea2b7ae9b23cba052c27c2c750de5abc64d20dfe7c926ee3fcb70e848e96a4fe169a704584ace2840f10b129ebe99d5a9b0a2b9a8d4de36d864322fd3df054e45d1754f279e77d47142c4f2b3649780936da0a08597d8831c68b436304e5235ccb161ebbc90194f1043e3a040b0d58301a594d3a6d81bf22d73378ba6d901eb6a86253e11aebb6284b4e2245bc1ec12969db991cb0f2f93e6a3808e82a003bb43d00da6e607b8411c069ea8ecb004ad3d365c0a2d81b0de0d8fef1f86b2d2164136964ef2df70ee60cd90cdc0caf918afbb599de48344fe96cc9d5c41133a113abf1ae647a231012e844108a64d8ddb87988a848d32a874d6ecb7488f4f31f8c5d22c36ff422a15d0d991bd7633bf155b96da53be5b62dc6a12cbb184fdcb2f99a3ed3a7e14e694be1e2a91e6ef8934345fc78092952515969e1eaedf2868a50400f681e42a1eaa20ba50b7d22061a0630401aef461c8c47892823d1d014ed5d622a8738f39ee2e9b15102e6e98798a72a1a134d5f9046beaab83ce4b6f8d1c594603e990adce2c382edf860ac95d39091d8a1d7932222ad824da20fad13a16419b11d8c27075653b15558a462ab3c6aed21c4d526020243dc56fbdff431ad58c16db1d65a2b174db57ed80c6a4fae7237db62b01d288394e5b1244264ea0412fbc952c3813dc5b31ce2ccab7c087a167c44777a154c7fc4cae7210e1396cbb8ad02b1b3f2ee8d83cc5d9bb3fb92a30e222befba8bad603c8da593f648b9f6b579befb8ef90eefa0c776644a0acbdd52ae7db97cb2711a1d52001201e5205c5b4b976cd29ef4e9e1e2d0284836e6fe4d9f1c5e5e72d8aa902258c4e9c0d5d80191e5c6d80ea4919fa787a206ae1caf4aee2a75d29ee663b19d975c4d9fe9337d7c5e770e0dcda075e28b0359be052708c1d4a1dfe6b7ca3d83abee9c9093fa8f0ad56f983a31992c904c6d980e51a199a9935e41202af4fe86ed40191816822c75208dc47a2eb62353d812595e3b62a593f6a40a10c090e36dc9b013625221c7c30e07e9b14691a65924e47849d99329f9926f60bfbe66033b7a17c9159c22083068c20b2d28c2198870e47187439e6c66b427afe5902e7cbaf941c5508eb766c906abbd3635e4215630d01052e537cda97c8b37db60b8ed663976344e095879f71d2beff01024db87ccafc8d68eee2a78087d87eb7dc92edff4c13274d29ecc9a113bfa3777e0b6cb52821cef28d7fb92fba4631ee61d3990c0064ab074708030dee1818909db821db0136489b5204b6c064c7c9d239d5808208d08b01170172bb27540649fec89a2084de47ab15cf129e35e424082223d66548703cba4d8d5aaa13890ebcd368fe3b63c7da60f9481f5401a26e00a6b013121843c031e603f4db0dab9200821d75bc28af42bc6767cfa9cfdc771dc3f6c877bf5698f933fdc0fc643bad84e116ca755241ebb55529d75b62456a45592be94c8f242b4db7347e0c214da2084129c6c7b92a53d0931b6435d9906b95e9a4f473a8c042402c24172ba91bdbee6f44dc9251fe47a03fbc9f4d29e3cb6139425b6f3baa627729f451a72bd3137fe46397bdf53e62e74e2c70ab9dece2fb247ae3011c4943c0a582ec8180d5a321a11c6daa08c9835220d0ad6038c07595a1619268385000b01b683ed603bd8ce56874c575ecb4618d5b2ac03ca7007244639b3732266c40ce20f2f3e786ae3c6b361e326fe604376c318638c31c688314a30549d2ccf6db3d4aea094674dd472d58db28ce27649993282323aab82d542960d86afa5a0fdd892a91e195d32f523532cf9c51b7b64aac628a567af6fda3f3235dbd5452eae5f72357109ef603b18ca148777ecdb255731cba4500a4e5016ca433ff247ae200e5096edca5e71fb74133ad94ba5522ccaeea3d43eadd3aa127495a0ab045d25174c69b775a2146545515a67dbea21ee6cc7a748ab7ee4e714befec9321382abde81edda8942591685b2289409e521ebeaae1445bb7a670bf6ed6a157c67c4768dbb05367ce2b0f8fa1eb9eaa85c917e15299f65a676c9d4e8225100d431c24488a4bc4fc49e3eb64bb66b6bd789c33ab0b8a38fa58c7e043e71efe7e094f00e6af111a48f4ee9fb3be81b0f4152fa90894fdcb112de318790f089c3a704f4b10f113f9acfc1c9c14152bfc5dc3bf2b3b97732216b03e2cc0b719aa7277fb008c34446d8864c491b208a3dcfcb44880c6579222de49229f9298585ffdad58faf3a14899913472d56d8600ff1125e0a81324e31778ed70054459db62157a66e1b51214990f007a3e4f8a801e8c5dbc8ace9dfbddc010b2f317411815127a314ba6cc41d532cf25224c7c7c7223ce0ca641a822e52c492f0e467188513a008d2c9351946f18427642c34c92e328c020b4c6429a6c85c6eb14951247b19461134450e6a92b7cc7d7e3b9737ecb562e71e8f551ca4831c07e94c5ff1f6aff3cab1677285837e658b35c6185756ce09418f7dc3597df62cabf12602d9d27608571bf74cae52cee1afe22f761d8e9a37cc75355c0e23cc5b8c3dadda68c47ae1f665190862af3ce42aeeb49ca59b99fb46f1172f7720441fb4733dfab692838457f0d71ba74d7a6eb4a2e5f042e9231dad601cf123ca43233dde08840883c3a7d1b157202d2b84b8b13de6d81e1f5bad4a127d88e770e7f87a97cb75355a3c621ff12bdf5a54930aec75c3b616b562b5be7635b6fbe0b6fa5a5b60d7b61286b9f2162fa594e6d18d2daf60389ede9824c2a0bf91395cfb975bfae9aedc25e57d55be492e463c3ffa19631c6dcf4639b2ad399748cf43ae587cb2d8c9020391d8aec09fc550a654e016fc6dcfe44a7ec3b33e762cbfe9edd9760855d8b74fa8d2bee1ad9efbc6827170bf72443a77f1a93bfdca81c8d5ad9df1f42b9704031b6466eef4d928bbca4db924fc05b9d6d5e0ee63c35fccba1c5ce6feed9fdd461cfe2e9093e34959967dd4d1c8b0dcdd98ebfd3490b77f1ba0797bbc33c32e07cddbe38d2d67bf3072ce1c694ec6eab72b3b1adcccaee564f4231a81107d8099f648168644e77494c50760b84ef5e325cebc171886fd834018c559866553cecbf76d440974f3c5c836316298e0eaa6617afa6cf56f0f1b80b5d11e16447b182bd773ae23f0e47aae723d88ec07852af77aa42fc743ae1adb9029ec18770905cb03ca28650cc3201b32760e633b193bec2219c3fed9903028f665e376e29e728843ba27eea4439c6d7635b2cc03d26020b0a4a73cfe83421c3e25409ef421e449b87fc487e8a7e0234858bb41763f9b9c9dbbdf979d6e23ae26c0467b9d10dcb19ba4fde7e5d1579347cfe4e823bcc55c5f23088bbfac843b1cbb1a1507479f5d1f3f6cf2f61f36f9a3e7aea355f5cbc95f7de95b76b577f74676eda3fbd9e4d1e837329bffb26fa3fad137ecd8b512d8d24bd847762ecbce1d213d0ba257a463b7d1aa518f4e651bad1a613cdac3ca60eb31af5e3b76977f9a56aff9d03eaa694fc3300dd3300dbb86bfeed9b7ee7aed61cfee61dac39eb19a1d3b8cd765a3436cd31ef6af265f47ab82c0b01f3bf61f5a056de0d1114090c439ec63c327537bd84b7bd86767c9067bac08b9b2c1033b8609650cabc9d8210c867d643c1966b3d4810dc26c4df069519b9084db842fd0c8ca42644a469ff6e49cd3888c3a31ae204e9c43be7852d43eb518394de3a2c6711c17a3f6060b04653801555e8dca05f4640dab46d3004c490d0bc14eff45164c0e6dc829e3e6392ca4bdd261b627a5a4a4a4a4a4c0b4273b1d327401816048e9d2b02cda69d6f08ba93d0983e67534c9f22521ede9d8314fbabccb3f1289f40f1691aee9688fc422b1482c124ba6baee461d214360919056719a4e67354e9b9a90560d69d5bc94a73d4de4265a155945108136677cf3c86f3ff73899c2a2b823573aa01013ede66be42afbac29ae321c592e964427a0271f1434ca601630fcc1228a5be068021baf8a33a7a50a283608f3cda14c63e684245e7ae40419e8e022c990fdf43dd36b8f5eca51104c7bf4457b6f8fc2c48827ab274218fcbdc874e2cfcbf45cab542f720a7b578df706b5aae219345d7215713086bdc17ecfa7b769953cfd8c5671a7bf813260a6afd14ebb777fabb6f77cf6eb4eba8b3da9762775f741b2244b229148f8b3afdf6cddbabad9b86d5bd7d90eb600a6e86187670fa4a1da473305f67be92e47fd87bdeb307ee94ebaa794c3ac429a920d163b09db95959595951552f7d21e2c01dde0abc9f41b0d95cbf9d8ec9b2e98569d6ed0dc9de60eb3d4125898e97431c9f429b3a73d26edb15a654f4bffacc56eefc3be9baef62ca6d4d25bfc954efa56ba93d51e3de9ce9e3b97688ff6b48ad49548d8c676df30cc082f23ea042bc46453a7852663b0436d274ea4ee15cfa0f6e8e30aececf961b56a89cf48a69f3fd3497652739b4c5764e82a020db21d22e87c0369e8a7096c7fbe7bd37337ee6c37eab4475fef90f6e8b32ba43dfad1f5648a5e3b076b96a43d3a7de46aba668f5ccd1f98a2ff662bd3d993299d3fd1890e5c67f8c413dc90bf99bf2cf39044c7ce4818ee78188a7dccdad44505f41006f6684f1ec22033370aec078522f658f13ce421534166ee1b1b38d84cae4ca69ed1ab7a799b7a7b74caa65510df60e29a01318f1358ec114756f4c1b0c8f262f489ac68c448f489f04d3411594dc0960c5d4ad290bd0cd9cf33222e00422d80214bf9d10bec07857af4ca46b66a9465e8824f32fcc12028597ee4026bc4cc5f1605cad502604a5e0b40608066b0912b8803e4ca32880716c5f6317cecc3301376e8b50ac318068530ecf7a53d697a39062194a62fb23e538c13b2c8d0a58427f26703451ee1139c45c8950d0fb9f2a0900dd79f599638268ead51974e30863198a4d88a984a5082124c61643281094c100352080c070922737f39b92fdffd89af63fb2a88b0eec6c42da5b7b49c629f977639e63738580cc3d7eec67ccb6f24c4545c2a24d3e4cae7cd40cc18f641dff2ee7094def2d8dda06f012287b66017763572f269f413e9dd73f2089fb26fcfc9739ec277b7c6bc316b8c6e8cf0fc9671d86db909de6fc5596eba1f1239279fe04f37b067af81e10c43f81af803923ffb153888cc2d8718bd7d4b56d1724b67b95f11d97ee57e42b26d156c63539e82331073e9b4bbd1924bb7f7a6bd8dfb4ddb9813935ba661747e43ba4b37a56b63d382edc3fc43ab309c0199b1d3928c8d3f0c749e38486712770c63a073878374963f1ca9dfb80b7136aeb7ae77e7385a4f297bd3b40b258649faf9f668cc326b2136253647d89c12c2547ceb008239f14d8cef631d63c77e7b316699b571ca9b1f6cd029a1f4da3bbc8197f12524624677582225472db0f311ebf05e743f7aedb5942d9b479452c70e1e3146d794b72157930336e26fe638a33d6933a33d8a6fb00d8e09ae74b820cb4371beb6ae11333d6cd94f72671af4214218b93339458411a6574004049e7df4cf83c77aca6bf883aff15ec063f80594309318ae89d88b38368228a2555996451b458ca0073de8797054c4250202434440a08811c48688102aa20904847834d961035744783590267e5e79ad4cc5774644b12e10f58a66e050fb2733a42d8de86e0477edf4ce21ebb5aad331852d7dbe7f26d586b212096718b676fed81fa90265749e1d459e73b613249aa2329f72638f8ca4f98c72f1497b937bff34d0277d646ade2bcd0d9b2ab884b32ce596ee72b95cf4421cd29c7376d928c54727cfcf9d3cef335b79fec8d4d4cee1f8ea9f25da236a9536ef62ffd5aabdde473dd73ded55fb596bfd81a9f9ed9bbd91a8bd1777e393a9719f8f44b6398ed370b3da9bdae30a6cf7c42853fbd4a636b34cd35c70158b5c999d4376e5f3b3b3d76e2bb953089066fe409a198b7efa877bed46af1c3e75d928e5f3b125572a9f8fac49e7ca9c534a958b44011047e5f6ea50c1448860a727523a49e5429cfe91ab582453f359d6611d5936cabe833ec34390701f8277904a273d07e722d91e345d40e78720bd85646abebba3ccddd6c9da85a363df313a868720b11f223fbac53bb297f090eed6cd747432bd48e0135ed80176fa21b053fa23e4b10f414fc247f4e965e66ea693b738b9a9751aa77d6baeb30b71b01ba3ce4e9ef3719e8736479848866dc8d4b491a9394fb10e22f21a910a2d6c40c4ecd9944d5ed21a488369cfe06a74eda30cf32ca4386b4f4a994dd94020a22f53ca9e29f7340f7166b0113e92f29b961a915da5bcfb73260ec597093bf6149c946fa3cb97c9747a786f64a189e9c6571c6a6f8af6baa5494e2ff3322f8b36333ad5d7ca60e54df226d36f7a31995e1e5d921b4df11ae1382487865e72c6b6d7438c000020e60d83bc47a0997ff0b5c3a38fe9c53f38847a7c10d6c8605d917e946223572baea285e57d2112c2c0685ca46460f05bbcdce526015cde46ae04f0be4900d72453358f11801e005073a14cc1c05f06658a067f3008ca940bfcc10b652a85bd0b654a06c7c8140cfea20e94298c6f8432d502e7805d308b081487e847d8ab6915c54cff30ecf3b0d3e8aa31491b69236d6ca4e9a36fa65be3bdf0467944a9378513cf8993564598cd1557c5bd69b936585654525eb96f6151d4c9fdaecff5b71e99d26e6c65285b1b836d26edb5c4dfe8f4f36ea32cc7b49d65a311cdbae5e93c8d4171a8559fe915a730993ccf865cc52198ea47178cae8eaed848d81cccc5a5033550464b29a594d23b8cf722fbe7d990ab0dd72cd33ccf65210dfd9792e95781dcd4d49e6cfc225737aa90e56d984c2f3550464f24b01cd973c9d61f8085298855582462cc6183309fc693e79c734e39f4d91c37ca8a7d2e0b81fd288b526d87c58232a256244bb8842544e184109860cd22ed499edc4148d3f11053f2a37fd766ab26f31057f3c5e14f55afe18f87fc791fe12f267f5ec41f4c822dc07c7daaed31d5e341457b9a605b7eca00aeec377790e71138590057d9e5270f0aa00c6a03c84496b7234c6920036560981a8134f2d409216449670069e89c33c898b03cc8920a617a9046fef372bcc6d348744ed4d4b069df6067308bd8683401580494c165ed3f601ab2a6450f64cdde4576c196aefd47ab48d70ea455ddb507b1bd4ad13e772cbd10b9d20e44aee4b5c71e280366ed45c8555f33459e3cd2e6571e6bed6f3f42be7e88ed2bf888fe9661128029ed10c345401a6dcacf0f213ff11148766cef1f512ff109fb10243b56ce323f44bf051fb1bdf109c347fa2c78c80a1ea282ad4c699729180976ed3848ba2d46242936491279746dc62e746541891c3b214ef67189f6b8244964ec42a030cc20c34e8893c540748e51dad31e7bdad36ae4aa0898d2aec194f6d940a1d1e5b276ec66ed8d5ebaa43bdbc3dedd6cb637a26f283c5086ac6b18405081c010658b914486af106793dc768b9029ed35f6401aeddd9158f645c8d5654a7b965993e9f7bcef9a0e48a3fda69b60e9218c867d642c9a4391e89c48ab103cd0ca300a0fb0f267caf43c6418051133643ac222f46eccdc3864ee8f223e92c55822486476ecda085573747a9bdd113e61188848f34dd36e810e2a3cc04227849464eda314a98da4a6c9380696136d24239429a353d5fee35431109debe84286764c91fb3a5a15b38adc0742a45744389613536843eec722bd8265e0e9d12ae8c41498e43e1172d538fdaa8dbed893fb7d38852c85dcd25a93e96f08678aa9bde86374aebdee868659da8b2f9026ceaa9d9bf048f66d74798843c33b628c3a302ad888c9510d36facdfeb38169d5f6946befa743fe5236fa1ce8ab0f532596281761d0434b65b4a030b68032e86df4a10896e8c30f53f401c84bf42108892597ded8024372bf88e883900883663fa20f4346f440a20f5127c218e520d18748e40390861ea317829d52fa2119fe9a3eead0a893e9bb1b47006560a5f10350460ca421127d808930463023ee6098d2489b46da34d2a691368db469a44d236d1a69d3489b46da34d2a691368db469a44d236d1a69d3489b46da34d2a691368db469a44d236d1a69d3489b46da34d2a691366d1a1b050365d00d1bfd3a7af48ac4f3a29569ffd0c3fc64da029a0113f2079bd4643a23d36723ac61d79f902c77e4d9ba94c4067bb0dbca0998cabe5a2d69b87a92b36f0505b3d191db1a2c50ab96f44a450727bb54d1c9b2c2bc2494a25505b8fad1824a8a4c834db9ca91d592f6322cd8ba824d32953d65cb81ad589a605ea81d98975cad58328379c1bc562c293f2e57794465b54ad22b08b1115cfe563aaf979cf29b560dc9d58a5cb1bc45c5b3bab15015b1b82a2299ca6ebaaa974c655f71554332955dc5b561f1b25cedc8958a8ee4912b96675ff5c8d5cab3c3940b656ab52353d9e56ac52359ae95a9558f4c65dfbe72573a721571b2ab88e40a7b7655d155af5665570dc9d5aa492fd12a08bdedd9574af4aa48af549ee1d54eabfad90a68050405bb028232ba9cada2c8d94a8a9cadaa90b3951672b622cad9aa2867363a39dbc9d9619eb497d9fcad80549e7de5ba302f18a2f6645723cb1b9e20b02b6f79fcb7023a2520e52b1f22e52bf808243b58aef2234e4ff9102a6fc147b0e0d3868fb41ce2b05ce537dd726b642a3bcbb591a9ec2bf7b47de51027e59e367c4ac068847d051f91722ce5d88f50d97260f15793b37745eca74294558864f6159e56f5215421b22153d9556e671f3de50c183d0543996200767989bf2058aed981c855cab36f302f920cac8a4e865baf8ca810ad7c562cf96fc5ca99c45f4e8a0a94f6b294a2fcad5c397bca5d01c95476ae0a56a508ab10b597753b96f44f8568e504a4c9564090a60b81a55f014929d790d252eca46052d80caf960871a35e7639eaf7c326cbedf277e5ba2ba0f6b27777637bc59fc43ee471501f159f6ecc53fdfc196cbfde1e97071b84a816b839860a6134579016385512190ae57ad2adefae84716cafd8c78623e99bbd44942e046025616eeb6e90f63220ed6544197faba09c6d51a8217f2aa2bdec30ff682fcbbe0a922b202b20b98279c154f6ec5b09e5ace21550ce80b093c1bc628703cbb00588c83e60144019863b20a1e568ed62e9cce0fc842a799ae59bb60dd820dc624f11f4cb6c388350b04198afebb855c9c1748d5b7747a3f46d04a158c0c65190096302a84924c98449aba20c1ac5074926a7c36c4a641039ae0802c5a1e9339db477eaab3c47ae4e8d4f09e8bef21ddd57de5fc1439034deb1b2f221f3dd7370e4b7ac661c977d87cdcb5b66939048fadbbccd0a424f8e37256f2ca388f3c1bce4898d00db9917e26839d35a36c32929519b5b3906d46a5971d3b7d661b9241d8eb09bee0a152df7b2602853d8cb071b9a98d0296a128ad5b86b3bb01fb683f9c815ad1f614a5af5238ff1480c6bed0cc954905cf198766c512664875e593e5e964c6ff300c10d597634b611cefc4d6f594763c3237c8a0fd2f90471b0222c2038814199c27a362cfb87ed504ab1ac05149264842919221ad274f04303d104d6fe6b9691f6698f25579aeb04730f3b1a26172fa2964316871d0d1641b27db4f707977938ec68f0f01d562f2915bfe90d4e0100264d805c45b0286b238833684a2c11d65eed450bcc1c63e788a5129046be9200cab840cc2f2863cb327c0831a6c15ced614d2461f96844b0323006e05d7ea73dc94399c831b7cb51a44e13b5279b4993264c805a15db05630036327ed31b0a7f42322ac6de130efb9ad7c0fcc56cdf5d8e15b749b0d8c3381422789253194221022732ec70587c84057b3647dd20d2e6b68cdb2f18d73a1a30b08d8d37039de36104e9ecbd7635bc5b407a871d0cacbdb42158190e754fa8779e39e69e50679155b2cc3da10ea1a80110f286c242b03566463de61fc68ab9d0de2fa727db6f92435d99656047a38bd80f9523ea980e0e110c2525d43a9bbb7fa6ee6800206a4f0070e707ac46a4bdcea0bdac863f93e9f7b417eab6508eb92c72ec50f874c33b0a85a18bdb0b2508daab553197d79eb4ea5e5e236a0d4aab605c5e2b6a15002eaf45a93aadaab97c2552775a0573f9ade6c6005c0382f5ba3b1af6a81c271cf136b7c13e7a783ccc303f9d2e0d8d0903d199e67498a36949ccd55e281800b85a9116a5e6569d4aa46a3fb0ed1aadc17697f9d740da138d687535285ad1ad3bdc4aa416a93cb72ad15eac811972cc5d916197c2da4b4b62657e4aa14f5ae5e2d2fe3bea9f29e69ff5fe6579e6b067aeb95c5a853597cb05803597cb63e056c42e31f8335914fe6eb2f8f3642e7441bacb9da101d05ef81a4175d864d27b9822afb8a7c6407456f115ef0cbb17d25fdc2fe266b591b74ff78f9accf5ed21891c7373c83217426164e7a53bea1bec4a5b576b8bcb7281883df20f98dcbd1fb3c518abbd9c8c4261ccc7a5d69af3933f1677f916630744fff9ef0b0426bf766b8bdcec68c0f4db25654ef3fad90931f34e7dde5f3ce2cf85cc1bfb00827d94de6da51bf32e7e6bceded8b7f46d72f6a26e3b76ec08936b7de95604d43eea7ea520bcdbc3c67746a69f7279c30e47ccbb976eccebb5477d3d72c73cd68abf1e19757beb51df6297a31e55eaf0d723a3fe958efbb4b311b37754cc0f98fbd9e5f0ded887778b7da47ec074f8074cf6704c9dc56187c3e55df1478383c83cf3fac6df0b3c5de02032cbbcc24e8819fcc52cd3dd2e467b5a7af72883bf236887a7c55f8df546bb5ad52a98ee117f41e492dbaee8f2d26777a371c9e52598ee7de3ec72683eb0f55977a35ffa8dacf8dd5d1c5aee1eef07f39229f9eae20048bde6b0573050a789f1665e1c760400feb21afc591898870bdba3c1da0bec027fd90c4e692f0fcbe0188cc2dfb38c306771dc611f302fbd3b1c2e2f3d7637605e8adf62771dcc85b93eba77b77498aef47abf1edd0dd8ded723d72300e628c9f51f11b976b7732d7d876f230ee6c2dcc5bf3dfbb7d71d2027d71af187442e9dc53bfcfd80c9f52c0e53c23087b92e3bdc8f4766717cbf1e99c51ba897601bfbcf2e889cfc9981985d0ebb1b2d2e97df2afe6afa7e3099e539bcc53fabc33f53ae3a78b9bec5859dcae1c266b9b049effbfd80c92e67f17849dfb20158d27fd4648debb8986b7d77d7fba3266fd1087058d936c9b95ccce7622f97c6f698843dfda63123ad3a610ac0e496b3901bed68b0c036b6e55be458b49c27cbafd894c8f22a6e8dd2d980b9051f6139ed8eec1c87052301838364bb0cc363c643e5f6805dc431c889fde0901624579a19d8906590501c8a2fed957208b59f2c2b10a2c89fb6d3f637adbda08cd8f8eb82ba265f45413d41082c1b348bb557962f4513c64e1ce1042cf2e77547637ec03e7f9acf8f5c693b307bc1947cd47c5e9a8f10a4c89fb603340519e408064823bbaeebbaae7b770d0c9a19b2d4d850395043d0d82487ba89862697724242e66448c49c142c4af1818ddeb4d71c3cf6ec1647f92f3ee3628cb1db07ed59169f35292367e18df45e601910f44659966518fca12384300959d0a835a21f61b8c9d99e0cd2f35262585f98edc85e62f3c30c1bad8252dab8829d6789b1a93061d022b21375a29c2fb034bae6293e655cc62306f19059d4893a5107ca8010cac71064d9a33d39caac8c11bb3cda1b8d3e28347a6c11916576342282477b423c7a1021298d3f42aeb8e4732d59d22a28e52ab6624fcb06fe8b3a7215390053f221f809726c41962b8873af26ea28c1c27348b0f0dc120b3fb1c581859f34b03a413f1b8c618172432d837048898c878e7ada4854e263c44845020fb216d80f0e1101019e960d4f4b06599b4f163800120165c4dcbdc30695957f100c26b962c144c8ac218e65b0191caa36ab2929afb466a7d929563fba5bc52a9682d928c9814d0221003f7ac445b4d74330b6da8b3fad1a6559165ba3ce68966519fc89adee24f187cad1888e4a2525e02072442c1ce281ad2c77ad888f9048d82453fdc6a076881de22f88ec6ed78d7c8c46971d10dab3675fa497d847f1db0ebf75d84baf48ef9b4877067da11008114536c32786408520faea682f6208715bedad69daa149cb344dfbe85b36827104b3d128b6224fe4e1e169f1b4785c500c21471ec9cdd31936f883c50e1f89d8a869d0c298b1b865af32d7af863e628d69dfb6e6eab5eb03beca0e88eddb1744662dfb4d63d72e7608632ac2564d0abbc92561bfd75c42498419e40f06d10ef4a45fd0c9526220ed49499bb6f484009140820889f144405e415a25842ba27bb42731113c728f6e1bb802e22de14296907e407235319cd83967986c8da93d39c2d7b1d83f13fc4dc3b46a74136cafa63dc9c4351ae1199c15ecfcbc84524209a5cc320b6b604a4a69e99c3cda93d98b93cc498f1bb83225a1096c051bec01d611d82fcb3682a09242092150c494120e7910424934042d6bd77469b0b4a7a3bddea16987401906c314ff7a301ebdf68dc6b0b461c4d930ecda370c62411a078c431c28bc06354a43c3597bda0e1d261b4a318a2f5737714915e08590064baf321d1d1d1d209cbec562ecd8d72e8410d6c8d58d340191ae903f1834b7146051302898643144a89222e0410c82e248c239259c5966328db09432aed021c7d1e3218c71421921be0e2db352962b4c32e291842a38619e349a5e24f6c106613eab93e9b70821cd32b91abd5594e93f0dcad032cd9cc8348b22532932a5947e1bdd4c928eccdf34ed0e089b6ddaa3c73532455916e2cc7f25a2d185382522b99a3e4499fe945e3245fbf1592b4bd22ae844942a64fa6ca8554f7ad5d252d22ae844d12bd31a269906651a89a270820bf9cb8432a54051c090bf6c8a4c6dc662d7d0d20b5641287f1ca4022dbde46a9ec21f20284307ca8099ce9f256c632366bfc0bac04e25edfd180165fabe324f254b32edbbb4f7f9d3aa3662662366fee64fc659ab3dca042d1195885a05a555721575de56a77b4b6273996f65537bf04e48139f73010b5d497c32bc5fccf0461ed9b98442e70519e2d8db2836d883ed6f99cd584488f5c0c6fba2bd58e3bd902a3973cb27d8f92db2c10772761011763ab04f4c488ed9b5b16961f4b7aabd117e7b1d447b7d982179e66f488e3682d03147d82386813e569aa69c42c38658477b31c67818638c714239219d10ca96b31b5eda80f89b3633da6b1c13cf5041dcf8a6bbbbb9c00541274ff4a00b1b8c37dd5cece616070b3f8210d66fdbb67dbbb4690f9e47ab36b8c18dc79577477b5047abb8c3d6d1aa98e177f0889d9437f03b78f480b77159f127ef3db765b705c8fe496cdb838710d370a74687b1214edcd1295386bf690f1ede040f21c43ee0101dade007fbd2837d22c94e8656c8f0091f34919ff0c112793ba5a12389c871c07e90289b56f37d20db362f91244a93c792de95f09793374ec7923e5160bb156b572c49858a4a22a9509175345ab08d2d95deddb4820641da6b166e062b2fadbc742405088e3a32d52c6ebfc59d97f74ae92f5f5929dde59bcb8d3aa77f51e7f497aebb51fa4be92b67b93e4a5ff956626979f795cb72d8e16861c15fe9198899e52eef56eecb59eecb6147e3e548ca5f6e24d25127e5729d7ab930bbdceca70b73d46955f67e24e2523a9012fe56cef25eb9cb3f169695b3fc83442bf7c1e222a4552cf87b7679b31c4253667179cb37972b04487bfdd20dd25eaf1c48ab5ace75345a80046955e97d21375dc245742c02a455241618aec076b48425bdbb95ab1496951695bfab0a5c4f7a974add4b7b7d96bb62710988ce25ec99c09230f70ec320f2cb726c5f8c39270ed2a9067202fb65b97560aa8980a9be4e0687783a874322e6345df1c03692dfe260e3e8071b9bec80680fc3dfe8434652bef4be1b1cac0c2273a9a4921263cbe755bce5aaf80669d8fe8a56ee7773ded4ef7ac475f7fec4dfe9f25827c48af76c398be3acbd680121d987c46e9ce0fb5f768297108f4e5f638469d3c3d7780ebdfd015a3e4200c42418a8fcf292be6d42727cded3e8f0f3f034c240dcd89ebdc6866f641fbd468625a6f42b36626e912761120cacc441a4ca6197a3e510fb68f908fb307d06919fc4d374fbd9e128dd306178c241645e71f8b1c04164ee84e8be027f3177fd0d9b93be363cf6d9e1ef88dc370293ca1efd7450d68deba8ac1bd7d18e4221a2875d8d239d2d9146b26e1c6ec25a6bb3ee513a0905a7278e246a4f22d139235ab300bb9675e384e6618a2d91ba9675e348259b22d4126a09b5845a3d5b422ca116ab15a5d09a2c5b22c19675e3583d44452da196504ba825644b24dab2b29a682d6bad9d2cf96a6f8a212755b6504ba825d4126ac559e5c5b2c66235713d212a126ab184845a932534592da1c9126a4dd6a8fec0145b22754129b644ea828aa42b684957372e066944e24e8a2d916cb22ccb322641d2d5de126eab92b2b4fa4425c5964875e33a265247465149b12552ddb86e0693fc499d924d5189d2455aa5958964b9a68b35b52a062025ad82cface9c5d3f3d3d3d3038122787a86ded303d4e30a121a7af1b07a7c7a5a3d4a7a847a7a7a7a7a7a7a5e40ddd3b22948b1255257372e0645296a156475467ceac6299961d35e9665591694bf8e1224d4248849173551d58282828682828296803363b9a68b35eb13582e1db99a3c322581e4925e3169954a5013a1569526a9e5c6751f7a11c95565b9582e968be58a3bb148a7e255526c89b471dde4690854adb52ccbb2acc9a393859a04b5c76449a7809a48a6e23b6e9344a476b9582e968be56235cc93dbeae4892ea1f89323c47132f4127209c9d51412624d2319675dacc9724d176b764e262b114b8847ae6250504f13bd8a434e86a678b58a343b9d56c9bad3aa8d6b157c96c42a312de99d2639f2683c2c9e1e1e9e96504ba825d4120a02720515e151a287c5c3884f13ad243f4a7a349c023e8150609448a446a66c321e170f5096b5b256d60ae2c9b2894ec5cb1d998a4f9229b14b4c4c72bc6cb2c3c3d3c3c3f39a62c8898f4e911d223a328a8422d4126a09b5845a34280ef1c8a09da1a1211e9e56abd57a228964d19010915c75ab7986865a3c4bc099b584e4aa795a423c422d1e56098a0dc27cb395e337ee03f6ebd764c5d7935611b5ca3e5e42914532ca24f259a455ddaa7899a455f01990759982a4506e9ea11dc923571a90a99501bdde01014f85e42aa5a7d49e4f8f2672fca89524c7cb1895e4b884881751914edc893c3732156f592621569e3e393e3e1e2873bd82727c0f2bf3b1a42b8bae847225917cd25e92963c3215cfc56ff155891c2f79722c3289e4f892a9f8df64b22937667b632edd984917e6195df9c229b428145f2ca1eec9f1f165b23840324a7b71eab4177772bc0c43ec98c589a3110f588ccefcd91c81fa2557cd82a978d6ab819a355b9905c10661be145696b0a391b5baaede1f30284f084b3177ccbb6377c786407b34d2877332e89b932b2a867dbcb8ebb608b71b9be460f7c1255fec77b7f4ad74bbf7104e0365b95cabcce3dda2573ff378cf73f9e73df57a4fdc5d1ce6cdf3fe692fcfc5f3f0e7f2d4b98b83bb0bec639efbe6f2e4f584c825f57a425463cd61f0f0172a32743d0186d4935a53dfaacc63771932d819179176345cb8782d214add2575007c2675977ff495ba0f97c70672917f3183b1666666f0e77217df5c2e75f1e495ba8b13b9b8c036565b82f5ae4561bd08e3b598c2ed7abd3c580303f3805fe0254970e1722a44c5b0bd99a76eefbd66ee0781be199f4d8e91270d196c426dad047634e24d3750feea837469eb4add4b6f25b99fe49bde6aff4418fd92adf1c23c840843763450b7950c21c2a8af8f9a4b0ba251b1c6a4e4b2f52589858e393223be595072ac418650c8e00979bb11dff874a38374df0ad18f0712ff45db5ec59a126cd588aa12b54756965c19e0323232de111d7ed39dcb5f682f17d788509744af19544a7b752f669ed1c1057fa8a75077f997faccb7d40ceaa97fb4e523f58ebe52f87b7e015d5c5c30960bfe5e7ce6db8b990ef599e751476306dbd8aec350986a3e2c484818410b7c7239c469818a49ddcc1ece643926a64b0da14826c1850bd475b8b353280905966b32323232ff6a08beda9365650d41801b00f74ba664eaa87777b60a66d45377b6877aea2cadfa607b28fcfde058daebbaa76e1cc2f216d79260ebdb25534032b502db029f74b0fc0896e7f002fc079751af3950d8b6d7614d095a126cc5b03d8b5d3c589ec36f240ec7e27e5a2ec0d58153e02001a7c0c9019fea5b1ce210e0ca3c87c32e478ca9efded7477df70d758bfa6ae9f665c68cc3ced4c3fb332e8b4b864f04610832097d27ebddeb0f9a903f6d2709b74669ef25539ab6934161535fb5b88c918346a4351aaccc9b0cb6fed362773462ec1f31728d917dc4db7f3f62641fdee365bcdfb4133eadcce2ddbdfbc5ec7de67e392a52bfe8eec6df8f17b97bea2c9748e3240104763958bc9b9ef66a1787d2258334bd95ee0908d44b47fd08cb566b576fcc5dad4758628c18b96bed567d351d101d8e99e5c67c2bdd0eb65742bd43bdd4e1232cff661e2ff3bedf8f18395ec66b9cd2a5f98bfb599859a0686e73c01acc32b7875b19acbd4ef53dbcbe050ecb73b810e7a56a4b78d4d9c8b079bdaafe42ce9f97badf1145722a762e343966ee72170cf30cce80cc2f3e3a625fdcc5979367eee2c2116950b4222d4a2582f9b8608c85b19a95cdb8f8a8653fed255332c66757d967b2a9f1bee7cf945dfa3365ebe3c22f4c16768cc9c296a1f9676aaf8de4be009a48a7fa53c054bf48d60f00eeaf5e2bf8cba0e4be0afe6c94dcff8e5c452330d591084c350460aaefc4a6490d93dc57813fef057f77813f5392dc77c19f6d22f7671a6889dcdf017f26256c8b0f147b7f80a93e4ca7fa2c7762c230f08c182f729f44274cf5a1dcb0a4797161d36c0dd4de92f6e95ed229f91e204e0329b19fe6030432d85cca5015559d94cd7db8485417c0fddac83562deaf16f96a135f65529f7c5b918d49de9e64f994ea9bcdede1322ea4aa0b73adf5faf8d15032ea3f1a0a0d95cdc52e63081dce824f3b589ec373c04372380b3e354e40c46139c469a1ba3e509fef0e581d6e8babe570b55718bccbd8e049fdbc0fd4eb3114ea37bda1ee1733ea31f7cbc931973db00df3d66dddc5771d8e5aedbbfb3594afa1e46e28b9df7d935dbcbd31c7af95e4eebe98d763ef7a0ce6383a82fd4cca931911c16a48b03e2250afbd806eba7b86cc887a776147230677b55a7bf13bd8d1a88942726781980bd0dd0d22738cf5f69bede1e97ed3ad44ab3a9c0199bbeeb153e6c608a58bb1cb11f3471c8b50b7759a88fd4808d6eec0e2291a172fb617dd4cc70e25f36d001675d3184629a574c401b5aa0fe33c1cc2f897651e9664003c8ec1c218c9f71fc6922bda9229f94cd2166d51daa2b4753b149eaf4934a1cc282d9a84fe28a140740975b5c78436a14226b0dd402723b781b0223cb03805ed703526570bc242943c800c81b2c0cadd3bad8af1643ef34de6cedcd689f9d73a32b877b6c8c9dc1822282d28f50d75b5a0d4d55ca87f9a4b633204cbb5b0ccd55edc121ccb0775614edd1e3e737ba8cda485da494c17651765ab7a68221a931eee5d985ba7553de026628fb0bcec6374b52a75fbc8a4572cb78f4d5a2573fb28d4aaeeb66febed639156c5dbed36e6f6b1a7553457f170fbe296c5eda34fab48b7a85b0be3b6816aac275739dc1edad338946195c140fa271cdd652e837d9c5c1c669777f8e41d6699c3d43d75efce724f1dd65ea9772eaef7c29b49d91f0ed097fcd6247ff5d6a20a85a83eb99567892ccff5647914a93d1e88e4df64827163e6e1c21c7361ed1b338b293277a32bd3178b0514836b149abbe9ec74f66e4d8c9a18a1b4274b18d52f8de8860f0ac87cc2511f1f61ae380332d78f8ed88ab5220d0a131b736d49cc2bd5a0b09ff6aa7f7229d11336de62cd455b49b4a02ee65fd7b9bad7775dd769419a4b63a2b9ec3597c6440ba23ff4d5cad4b5d3aad2351797712d0141feb49d4a73792df5e29526a1b975a7be70873f93a9defed35eaf27af97f516ff60cc87c7ea1e2fef12f32fc61813738963cced0f6d25c1a143ae1666acb65a15b3aad20ff35981e5a1d657a01957603fede5b15aa56b2f98922e700a6b323670227fd9cb49ae31af3157236aaff44f03f22e8bfbcdccc3fd2c002e8cfb4dd2fd72f20c3ed9ccc047dd1f30b9e6b1a35163a33da98112f32806b647fff1a2aff6a453f2156baf19d84ff349122507b0a3e12246e6b168086cafc6bc6fcd2854246aafc8098bca817a436955e30cc848148be2cc3197b69234eaddd540a1686e819c8a792c522b115c753aad0848ae5d6f90492348aeddbdde1f9c46d48d4c609beba15131c75302db58e631578612a52e7d425f588b65845b8233c2f1fcb40a859bb6daa33f3eb031a34e7f50497ed3aff662886462fee25bcca544f4e5c4c63c26bede78bb571a7def7d535f033dc933ff1a487bc55c985f5c97996bc4e49264f9d40d4273e49400b2d508d644ab1a5a21cb634a501766286bad9945e1cf66cd47a632d713534081cb5d307d4293d0dc5ed27799f997a5fe59997fa68c42799b771b0883818db0cea4644a8f8979e6a6aeccfd4cb97e3d72f798fbc164985c7b09ca43fdb3d9f30e51d88898bd77343c6c639f353070666061035184d22b8853b2ff01935d945cfca65dd0051d9ccf669a6d83ddec8028d9d76bbb1aa5be7d7740f43b988cba7de99e560eb3ca4d7b3266cd08f68340cd6a2313f76f64d7acf6461d8d8adb88113d2491fb1be482d88cfaa623975e745df7a226d7d2b7f66995bcff5e60b88cb15432f6cdb2b77d02ab98a8a40c96755d4e3a4533230000005314002028100c88c4a2d1804024cb82ee0114800e8eb25c6c569d87410e43c8184308010000000000000022c0800100b8270de20ff0272478ec8213a1d1ef774fc9d82953d35bf388826188b1e8e57f8fc661a32a27b3eea5a7bcf41ff6c77afea131f368d9ea9024e95f8c9530db1e7be368c82e60f51c6a152b4de9298bbde6849563b1dc117a3706a7bcbcc947a397e878282e24dc8ce089ab50091413cb4a3d08c0b7df55b678eac5e648b949490a618ab0d9a892866a772849bc620e810a1f0aad98ffba6de98037507f9d1497482c65a95a29435715fa9cb7181bc8cfc5e331bcefd38e7244207ba4d93f4135b760ec705b35f2ee8003acde49b32b89f305ef0d4ae9559d9de92962a18c2ec7761ce587a078af5201c06a7182d83b7a8abd13d053baab87fba613295208c183b3537c898a41fe1c43c103916bc1c51d8fe359e282a708dc5ac42132d6ad424067926d1e7638ca6f16ee57c55b6ee88e6e032f50edb57da17f3472dfa309391c3d0e35791c253d504322665220596f69b874bf8aecb1dc2ac50132f6b5625067922dc020984aae63baba64ea50a1a3a704e3c4aa62c1a4147eac62a13106ece58bbfa6506a74f721f7db4718ea02f781dc33e8cc0bb436abaca44973b94b9f6631ff428bf0f4a857ebb4e503ba7b89aed02d62db38ebbcbe2d6b9a2cf432bb01d4eb13b2d2588d4c89bd7c6d361b48cf419908710f8eb25901c004927d4bed46f3b705262ec77e43948f455ff477884105e8192d4578ea0c634474a87a15792a6508ff38b8e6be80f4a9e96caf153fe95e8cca08e457850d2b02999ef0bb7b1f7323962958fb2a08b989bc531df3f37553124f142c364882c5725dfd6cce76efc9298f842da407b57c601b213d23adb1a708813c379c75c2858a06df0050adef3f3ee45fabf4f8000afbbc15e82a7a59657ac706841f9547e86fcf74dff7af56c42e962ff5924ed515cccb2ef41fd15f5609395b85aa18ef55ef1bfc2bca0411f3916a4eadf8f19fa66e2b054f6b0d33565ded144e59c54a5a3e34f433dff25a07c59a654d8ffefc02cf7aa9cfe56b340e10d5bcbe86d9ae15476931aa626968cc692fa017cbbd522a8ed5fdc8bc883b526562b8ae2926d34b5c4aacbe4b0c278b1bced95868b9faf629c7fe808692acfa2f72895cf3b7b105625f653848bf488f6a54c2af5e4eed6a3dee8121cec7a12f7ab906b3a242a02b7241fbb74caff0d40a23fcf6f3a5a9e10432a4c3e756ef258ef6a6afe881ec46790f8b7239ab75cddd433fa427fd65b59b95de759a551d9772546a988f8a2f6ba8ae9915d9ad2bf9f679a3a06c96c62c5bdb39ad83703272de77c15fdf732c7d1725e433b86f160d1bef4de3758fcf08dd8b861300910ad6e08fd91613701f0c8223635109dea3d29a8f34a452b8dc354980a5d9cdc942737e2bb6b54d2022ad0f081335ad7f6ce7c571d6b84d8b2d1bfb2a145d1d18bbdbd4852c2aa651c2b33d92bb79ab1637273609b94be2295012498d54710433ba1cdb71947ceaa1c220c714e5d377896cd671863935f1a72e9f1258757b711469cea1708fa6f32ef8d925011ccc26505a3e792c8f5a0a421f05b3dadb7ef04d1813cb8332371128de4d75f9383abe533f08a1608cbe0421217fdcba721234d8a2378ef85fb34522af0bf58bb0f3c53dcdc85b0976aceca00e00f7bbb9b413e96678885222c5cf292fd880a09ded70790171de8a5c0d9d717c6aac8510c7c75dae380e1b31c2ce67cc79e6783eb8bb9dba53047f1eb721f7c83c1b8b3ce5f5a06cb587693915b7abbd7229c2f1539d7967c64cfb21e52a4c54bb5906a0f1456005a0cbebb13216eb23e0b187616525b03f7b0df00a295f81417607c6822fcc15bee6245fff0d25ba25e01d4b0f12d766fd6f5fea13b11f7c855e42ae98c4a3c522951c50b37b9d37cc097f33df0ef55ff34bff1948b7310d499d6916109af12867caa129801889d4c04fb827214d3051aee31c558d97bfd96c3bad5b7df60dc33dd07bf9da24a2b39e00975ebf8df91ce76450f9baac8de2e7c000844303001c5b8e10fe81c78ecd912483d1f7b3e9c78c960ada65b4ecc0309090b2ddda6452b03a99a9fd291e9a20a6a9fc14e192b6db6028abdaa77e15b46a3d53961c62b001a1aa9f3e6af757a35122c56363c5035d9eae921fd83515dfb020eeee8996187a61a00ceddd1eeca5ecf60caa5c87dec61028b6e06e976000748c2acd84c6f0d2cef27e3aece913179218d7741c6fc420828acda2628a057abd6d0270d51b730bb77072ad5e6048d07109c170ba89fc4714baa2d70a3f108057603538030db67f72230232641bf7a59de52d18e806b791b6e48dda2495ed01c910977192009f2d29128c3d4bee09833194b43747307635744784231e38fb798f7b9a3e43c236e812c3585e79fa38bdeef18559c20c5bc3f82ad727da85a9707e63f14ff8fcccf5f57f7e612f821813d09f12bfe1756a2e44b013945072d719131bd9c12e8d4b0f0461faf299c8de3852911b0d277a8b27dff407415e77c0b76e2af01b4e078a950c65819b9434d4b9a18bcd866247b8dc7dcc47d4d29ce045f81d43de50f6b7ae847bfbb96aafc00895e3e37fe991fe8be0ab7315a2f32509db207df4c4ea5428439ee169f05f578807a55a792aeacd9c449ff374dca820f5b1c0102724a5d78147c724816087d4daea6aad8e452428848f88e724fc6354b674ad1a6107030f11462301d05aa5b00a1698df57c6978adca801ab1e1b46f146562fde1ef57ed05b09cf068db5e576699bb7ca822fc457626f2cc934177f20810eabf42eaa50d2f37810b1aed7def94f0b5ac14f01a0aedbc073c82a423b89ab6f0f7bac63419c941b392a5908c6f26aa562cdd95814c93c47513b52c298079b9fa28d6a9ee8c3dbd9c122ba8c46c40988d85ecce94b908641a82fe9438289a7de85d42d30814ec71b5b2c71dc8480482be4fd15ac8afc15063eacbbbed448e5dac01397695fd050868595693dad8e284536694d3023aab7cb3e45e9b25c098e24535d71f77bb136fa6ecfc0c7ede435773ab403e4f245bcf02f905d3b83cdea18abc0629d4b74d7d031a05f268c313bdb4ee84664062c7ab309bbd7f729a7916ce08865ee57e90ba476f60121dc4ca71bfac9fcbcce4f109b61546e5f6159e945db442586e215224525713435a036cba934e63988b3c863140d6e2cd2c7584e3ce2894756e8b180e5b27f9ba78a3e75e08428b8d2912391c1cba3e6c0e244e4f9d284e6375e11ae94a113bd22e8b4f97ca7b6cf35b4cfddb72c54e8efa4caf7dc713e2b523b14a4219210265ea20edc57c85640859d0858d4b7db8c800cb97486a9645de01f06befdd5db4318ecf9a1c8af5d440b79ab049ea396ee89a5837dcdd39b1628df4b071790ea8e8e15c780658cb9cff961ca3986b063174eadd7121bf76ad644d009e2ee51710f1442156dfd68f87e858080c2791db06017deedbf8616c2b752325be5aab8b08166c2da1363849f518bd5a45ac9a6bdddda6524e7acb3332ed511e1fdf345866eca2a2a9deab636884f5373db2411f2d2081367b3070c34d8b6e2efc191c9f51132c9e9a6a32d194d3b3aefb24c388fe9cba268540dba5438a88b09b0efda67f538ada30ee8ae10022b33e72518ea3d2d8f0224c54ab8af905644ceb240359ae40c3725641f6d1dc3fe0bbe5c2c74b15a143e837120f31d7f8bd1549c894e33dbfcba6d11dff7d4c30792c423fd335d4c9285f518cd80fb898146cdf8475ce30837a1a1ca9158f5bcc91c43887bb3573a2a303e07fe3c9e0ca1491b76b8ab67279e73b8f0d1915566fbdbfc6175b1293a60b1df585ae2be1d9cb097fb6553c43e72fe5b1f7af46d004d530a71b233720cef231d33c77c5b4d911397b98dd111b4c0e2fb097c177b4ae485d6e3ae82c637edcbf03e2f749625623684916120805fa1d20420dbf9a761f6e925017de5e5680f90bb3502288814a301dcde04f27956172446a69f3e590b76d1b887b978cc56153c4fc533ad4fd07379476e5e8b8573e35eb1f100fde6259876c2dd403077d50de94ed18e61daa8a340e16f59d0ad9f4dd1aa56d0e3a6f26f27ed62069294c29f9f974bdc5b95bac203e8fca3187a9bd1fc603e17a8b46acdb7118dd43d14ae182b49cc60587dd1f562569f19fc047ff5e4accc2421c154b35947c0b1b4d740d17ae03246f23512b105c772043f594572cd1c8f8157e1cd02526357de25a5ab8891d58b5443009510e629754acefd733b73feb19edfd0a6dd56e53c1095ebb4f9780481d417619b627bdc828cec3c587785c0b841296afc930af7b709e1544a8b2a2452e5984882033c26daeddd7313265b4459a618a48e98d88f38ff645c93e89206acc4800994173e2012cec44f716fa64b511864469ec349ff7e6e62c32979740e6ce1233d4fdd84d23c04d4ee609a51db8ab02274b0e274be9e3321a508fff8d85aa852883a7b28aa272181933a2fe9f17d9c318d964652aa783132cd4f71f4ec51e2f04c7ee15c94ec7e2210d292f466c8bb8ab484ede6be01e966414df36aa61238783074d3d9b2f1b357471498f67a9277acfdfee84bccde295ba9e6d7be1bb5bf578d49afe47958ee0c91f8ba2fa4994253fbd211ac70ab14dbf61e8129205af6fa0a27ec078e450469f5f84d8b97206cbb3409f2bc57cba184e379f912d0f8c6d2f6c3ddd51e1d5467173aa43b380ef7524fc18afbe9da4c06d30af0d5539238d7c46793ebf965a22cec6d535d4aeda978b2657599933ba918f7e43c26b693a92fb8375734b5ac7a6528535a1612ecfb24f2f0361bcca86d517eedae7597f6e1fd87b823c001295fc3943b4771f86ac52557dfdcab620921bba10710ede1d340843da259a278b3be3e5e6168d6fb39abf1636f1788533e1d1194390deea0e61b8e26ce5b534cbd08668b0258fd38be8112b5b7aebfd413db77edca832e6eaafdf99c3e0c0258a58077f03cd045b7c8d28d89c690bd304ca7a50519354d204bcec00f82bb391b6d08768b224083983b0dbdcd5cabf334fc5c0094cc86f1b32aae8211a7c235c4b9fce84c32d5e91a0e1f1f322d4ceb0b7514f3ea55afce2d1a32f0d48a4d72267bdadc609366500509f8647622b0aedfd749847e5c20a162e688a1a100dfe50a0d4435b1477b4d44aeb72cf001dc8fb66643521c8b6d51810001400b4960bf24807b88fbc1f652b10535149116ad26d079504c95d270bf527a466849ce7e50e0089ca040655633c706cf5c58bf661755dc9b7b64d928e5266b0052e40dafc697a311d4a15ecdc9bd204690637c3232a04db4862be58fea44982cf4206ad6434d9cef85d45b8c32cb42a5862c2d0b7444850bbe3cb126890faff22910e7f767f5af32505a426b0317c1cd21e8d15f08f16d99ff57d0be2c0b80a9646d4defb3a48c51c90c91969db1a641582e35b846df481ea8dc03ac6279129202ff82fef89956dc39ba4e28174d2aac3c87788177b1d77de5101832487090cd3722bbc85e377fd4636faf60a4e8a9bc2b211b1b57fcd54001d7d83e10bb984f99bd6aa15a6cbc2bd772c404cc787334ee02cd99995c532fcc1cee4533217469dd8263d67867769f3990e82b9ca7177fdea7370fa489b0f93ff88948f7a76dbf021b601357dd3080a93404d3f12051650637c0af7bb93841629c03336d288f8916e9d8c922c8ba4a369d54ad5564ed290bc54f61f64d4e145b135609cc3e058f329ef3ade827e8a158e0ba976bd22231df9d1b16e887a8f22a799b00cb62d8d4f7424dc8047cacdd9e2fa64601f0e1c6971e48241feb6a15c9e24847e0983133840a92b4e0f6ff9d501fc8b547d66ca9e2f00b8933cbef141444adf6009ba78579d753508a294104e3f16954733741492ab6245dca5ae3f5949489fd69b78790603777a9b429048ff1cf1b21141448334b0a37c6a2de5b564650f0be73e22c72b80591e7dc97bc9de2bced500db5be2151b78d241099398877a164917a662f3324e590f5c00711d3277de809491bcf027fab03e6c4bbfc37d0e2833ca6e54b98981f54f35ce0ef5ccf3ae791944214ca9a4f17cad42c3f81b23040f1504bb038a6d192c07e18f7b1be6b9fce31593dd0acab88ac9e99e8019228d88e659ff701954cce19e3bc21e9b10439163e41353984996bc3a789fa354953f31b4671f2ee8ad4395c255579ac2bdc079c8feed338241d844bf4ea2ccff87fcaecde7841cfad3e5c4b95e92ec02476ccf430050ae091ee6dd02dd5c0b02628aa8b29bf848e3c6e8e6191f8b45c19ed42241946a5f65c53f4df42a635853acb478af61d940a4aa661a1cda0becb570411274dc252a46960a0b81c54a23251ead56fa851c6e1d51489b8c9ae517449658fddd3c6dcb52ea88ac7c5fcb668b7174954ac8915f80dc3c2bfd46f0a92211332e397beddcbe23388fa8b28a38386dbe64348aae6aff112ebda62d06631f3faebea1380f50bf6c0bab4aab82e09747066bc56185519607becb7263953acf30d5e78088e6d0af032ae7798466135de6723875662c552e44105e4901031df4e93d30cf07183ef5a391a2ae930b67624acf592c5be55584b3c9e4f9a0b9e4d0c8b39187d238cf5c8c0f4aaf858bba4af82e7f42facd99750536150922c2e6c69200a967e6d58b9c05bebe4fbddcb8c551fc75d2b6423fe5a1c1dbea9e71af80f4bf5daa68d80fbdacf9a3bc7fd3a1625168178246da0ec0d66e821ba247ca56d97c29a15fa7d1a7905d3b16d1325686e2d520c5345b389be8191d175f1d7d49407a80b4f3259b05c52e2ef7f1b96a83a80e23bb183d91a6509533238b8320b93b8f594c3b801ea559046dd092907766bae4836ea281542539b2ede456949b51b58ffde7c2f74a6eacfd660001e02c6882dcad00849a8892cc68bd5059b1189a884db8016a684b080ce0d904102f3be0e4663451be18d34eec048f69e8fa552443b7718d18aea25dad8dd1204a6c8b924ec0b6143ecbff54cd1b9d7da9b4f129bd408e353e43540b26d49921482299d12c8729094871304b6915dc4a48737fc895381d65d7ebdd28d5f4722db99c9113234f2dba097e9474c9668150bc7c830f09a815ebbd2743279347ce21731e67fc68185fe4a1ff48a92eaad4e6503b0dc104a1254d45fe9647bbaa2e9820ba151dff2579253b0473f6d4723b7177439f7f96f5ce5bf840b053e3b4e00e83da1cb91949bfaeeb01f168d19f2a8886dc4e3658f9d0328d5134970af8eac658687f0ea9b02c7be2a799dc76cb95ebfd68b13217eee17bc0b9d4170b21ef35d897f7b1745589af6ae073b5231ca7bf83f248abab65463d7d21256b0fc2d2f01b8c81e7a66f40d0864f948b3840a4b666b94d4866643cd3da7e1c10897058b298221a761d08fe11ee43f6acaa146ed4337c408a686fe6b150e80b466f7f7fae5c8448fb8dc1a2327d46fa7d667dcc2922594851c0a071ececc62c0ee76bd6c101e78a97544441e4ddbac6d08cd15d0e5704c4017293f8ddfddc4259e7253d829472a3df29713f09d3143e548f904693ae384fa3d230e04140f9cf47a01995dcc2287a627bd57c7ce9a56ae9400354d4f638a7d9b5675c8befb68e07cf01b4abec53f9693d01ec57b093d584dd59fbfa6e77b37427469a1aa5ab0e0537275b91adcba26d6b2827c3841a04214f204bac1027f6e8188d41955510119357c7e77823409070788dc17552ce0c32ba101a85ebdd22791a1d276bad4eead9d9f87668c20ced7927e4868c8a6a5a881deedef3140137f7efba6b486e51ed1384bd2b14bf968e6931e1be75c05f62cf001b88260cc33d1270aa0ffd06b993490bab4917a0b0b2e34bc007cc0d09b2fc940685462287895226f35990be134607b4df1227d34298a4482ddd7d999d5684cf659c7f990f0349396d6fe6a3d10e88f85e85a135c659349c797744f8364dd5b944edefa2466f00a74140aa00b69b6aaff1413361b1fb1c92792da85ebb90bbbc1086affa2ab386b2bde3fb71cb7c54697b246a23514ea729f28e794266e7f19f9fc5c556920a6b42cc58efbf8da6f9daa2f08a5153bdb68f4b15be76138c1aee37459fb579f3ba3a1eab9fdc61d2d9c72d4934e6aab389a1f03b3d6bc968673743e966f88b679947bb996b5aaf31eb5c77a171198afcccb09c027befad1ab70111ee95a0ea5a4db40268bf19f3e44417cad1cb150c1f4af6a097e3a9a11da766994ec2c4a89930e2d6072980bc972e298fc121ca2a5690110a784f63cc7872cbcccb50e7585edea2301a22724a5ea10d7e830919b0213ecc00d4c0e4bc172f8e6218edaa1e454bf5a01eb93af748cfdf4baaa9831be3a0eed50f40dca5f89908a875d8f1bb6808c1b7d4ec5f73db91418be3dd1de36b2f09b3918b1fc1f51f13c4734db23395730474ae9c7a69724d84c05a44c4ce85ea0d013c5adc147a6ec14939e8117b9964118d3e34b1de5b32c786c27a9a89a42ec2bc64e6aeb6157260e3e96a9ef2ae291a40809ddd05f9b767386646e8a5413236bd55114350e60ffcdf38a77314bf49f104209404651836cc8e4a1f43ad9a08dcdd8e19f33c08e69798312e9d98d3276f2f37a5794408d6d25d403e24761060aed78ca4b6d3f59b90ad746ab502f6d9642884cc6f18d3f2f7ea612656f1ec2ebabe0cb020b85976554ad030cecf786177e5390641a7926d8f2920f46b7be332e65ce9e014702edb1769a48d3ff03902eebf3743cbd921431013aee4200ac3d6c95d4dd52b8b60cbc2a50a9cd4da55091463dcade2ccfcc1eda1d9290fb8926891e8c72f640c33cd600e29dab28a5450c4c047fb2b6730a41778d12e44d04cdd824b0ab1793c90f54dd9185c1cd914e46c735901edfd9479e80bf19289ed91d218019b5fadcae32de4a7fff98a7bbbbf14e3eb48437ce2002017b9bef580bd851ccb5d6c125b6cbfd1b5e311609eac517254d9d5038e704e897ed91c1b5be470c30baf7b5a3ca3ba4746c85c3df13162e19e656c45253d071dda80e68ccad10c00fede0a6994972d655cf7f823651e00e3402c1023002037dfea20bd3066928a952666670d56900c137e1d295c0c1dbc8b4a1f572f0a50636af29ba4a47ce75292fd526033714f29199f8719df407ea1b59d4b3a3ecde2044570b9e7ad80273a52d5e8ca373e3c34be29e285dcdd6667ba5056a6abcbc5a212dcb93045834afd95cafc1e3797d85a297052c164a885cc69142cc1936435d6252b273c781c91213a10867116a9eaa1fe53361ff17029061f537ee97fdf06380f78e7ed1f57d2743a667d4aea168edab2438afe1f644f9ee23ec637bc22a72884cc6645384122ad260327721c4a96e6ee1e7327d2883934f7eea6ba1fb61e538b774b1f25e5b043d1da9f6b6453d9ebb8ca97cf240f9e97c10598823d2c7276326433d677e12e8548c4f1ab3fca9efe5e642a6908615d202c15a7eec88ab3cb71c7f5437b4fb88bc230f59f9309f72536b02c62f7ae6558a05eedab9b0f6b7eb22752e04bbcc9f6d361521f44bc7fc1b65a1141042e05e57f80e5427d5a8619071ed8ec0d4fec35124ab153be45bd2b63795e2a284b41b47ce60b3fcc21da44fb445fbd238dfa41eefce781f7c5a3c48f590db51a327bcf1034e09f0992855723c8a5342800320ed423c0016b1a6a4bf5a8ae728229105b1d8e4177f112cb525d8d4089c354843f82606856f763d866f9cb86f83f44768f5d140143dbaf6dacb9881587827f659ad8cfd17b749089b663fe977493e394724a2012e69d44d8ca545994dcd5fc91beec550cc3bb09691a8ada384a54620e55d39994966efb1d54e828c7417a4d547f43c090bfeb8e03f84949440fff0ca7f932d463a8d06c24fb23f2bddd12480be0db07ef0a9d353eeca8c368cf181814a4a7012857bda1a6455abe270e48eb1220756c2bcc49bcad5e74b5a7aee26b3ede5017855bff72a38e9f18d64d89350515e0a6c02d6b0329903c20a660a4294e63cedc8376617b66a385ebbbd545d5ce8a4e9b69815114001901382a0a3bc5500b96abc0a9f579a590bb17f814e255899a6f680de921e51e8cf7b6d2cb0c309caf70928cd430e0f217823faf47121ae64b675230c5351e5cddfbf23ae44e112fae4e16ed86fc6809ea4e35210b63a0b6a712b5e9c1ee2e704e4e68e23876f4e407b8e8e27a4659e39f0faf526f39cf577fa3686fb8862c46102f0886793eb67503b3b124ac2f9d8f49c9d9c03bd95862acc6763c669a8672ccaf5d945c1465a6f1ff6ee81f7658791ca4d6742969b43327cc4ccdb8b07e0cae5441f4005c34b90fa2b1cea735e0bb7b63a93069ad2a5abe1266c360dd9d0226fc377d75432ca5f390a6b23dd34eeab07764fc610099fe46766ac39db214a85ab3a46ba99b9ac5dd3a05de5d711fe800743f31712332bcd978e5fe23bbc8f28e2ff06894bdc210f4a966bf0b04380c71c9cb9023d1acb6b561d3afc59d84c08641ec896af1abfc5d8d05afea90ccf44e25dd3a2a23349300be7c1719f2d96acb611bf59cc919e365d230d0faf0fd33c527f4eb6a1db8ca8dc220bd0c25041961c4524294087b349584b209d426d9eb97a7dd385dc5fd0fbe67e10fe9cb6b7a3e342db3a37c8cfbac67765a4106734637a5d602ebc5255da098029808c6c49229f779063280856660691c9e30edc9cb08d67a01b4bb9be64d3d0b52f762bc869d5943281861d81c18374ded0f970d6fc3d8df6c650a253c3f4a27c555417bfa05a71257af1509eaf408cf5ad4be2306ec5ab4b3e7be55a4a1586e73c6fab2961302b3ddbe5460c8dba2c7a973028795732519ab484098d547b9a22a6991317dd22a7a65ac50e2f09edf615a9e9835a35fad27348d29ed367d00985c739a0c6ff3061bf8818220f8b59d4b8d96514d3d6e92e1c73e74175b71b6bf82747735e3612fa56804b648032f2718b5bd4cbf27051a82aec8b8fe3151d0f7249b86ba92e70cb277cfc87b0158a7eee3be9e2d0f285a4f84a4d959f0b2ad7b3be7c88d8b6ceeb220fd446dc661d85b5b433d99c659c97538b68d3b92057938bb82fd4b55e280b6a5359e55fa11e4c21fa562f627fa138cf45960233612a664915cede196b417e0f622c12ea587982bb824a2cc9599ea82fd1f72ffe4ad876ba48c1e5761673a76ab29db4d6c5c525bfce8ba7b43376d1941b09741d387ca55bb06480b2a9c11bb41f50e60a5c98e65ae26c9f07d28b7102c896f1cfedc33a592128ca984b769e432c585d96c673e13145466c2b3ec1b284ca25c5c4f53514722cbebd021f8a88152791d0c94c15c152e8f99280d938af2d647a0f2903d40d68cf06f436bb62fa240b422440ef09ae6f5e67832101007a84672705e8ddfe22c228b304f488f3d664389047ad6fac2e10c049d888f4e7e2c208dad84938d2938882f6712e8aa9c175f98a37abc801f280d00b3dc1180ae8ce3342841e407b1842910d8f00fad7a77b547d6ac165a426d85205e878cb8591a7192a3dbe95822b477c5c6165cbaaee9d8e16d840875919852c836ed0b36de764332ccd00b7968fa8e9f17d8f35e21cb275a8312e3228d34b4132d2c057a78e0ee175e440db6e7292b25467c5412057e1453dec32a08c30fbc4a1b77843e7effa2de43d45278d80049a2ee5aac190155dfcc526ef23d47981a9958979ffde2aa33f12d160df8ad08e83c3d4e9d9df6d5f9e8f5a10272b2a1d971ad36761dd8105926ed4d799ef9dafb12861288e6ce9c391e6152c229555ad31090631c0938de68d070782a3362190956282ca0508a8a37dde065cc8849700df95455d34d583e98e741db647c9fe937a162a33da23a13887702c0e8c94d85265f84fba810f051fcc117854d14c35a382d3c519ff0778d1d960deff3aac74e14cabc34abe48a1fd3f28b183d16dbf57b7cafab38849c2fdbeaa3c9cf619cd0807144304e68a01b5c5366061b6785bb4855176c2295b3f4c52d6a8626282e6553ed205be54d80c59d247f373e959610db2a03e0cc86e01459c173e335f1e2043da2810f1a369e17391fa84a14b8b8c0b8523e2fd8be28213d1fcab1506d35d89d0d0cd4a1cc08c709f0c5d1a4920cb84e648853cbec08e8292286017b101c8ee4b0a5175947f377d04940adb4bfa1ad329cedeeacf5a4d072e9c038d9ccd1a2207e65027fb2983f26ae25a654af79ec78cc61e0acc81a21397b5e87e3f9a20bf42ede9e60bafdd95e0a5ceae4dadbde9660a90f759c39af2cf78c1125433240d845c07d575f8a8ae0fd6ac0e30fa95e76ad306bb1ee02edf15c0ba8f63380aa32445f0b321ef69cc188e13ff8fd3683ab03aa8891a492e7225030cf79143dab7cc1ee0504e6136264eee9084064661927f06cc53caad2b0c0521fd349303d14449dff6384a76139a617db987ce8cd82a7cb7d6537f9f3daceed9f768b0fe0e7d533e27e635f427eabae5f0afab01fdddd001b9d18bbb482d54de13eca6bae5d2d7d0be7d2f1e6051888236492ee12a2b3ffef32000a82731b8b55b76c747638867e2d224fca1abaf0b7d3138393f4961a1afc94b8a65cacd6b4ee91a10983e43854dba0343e68c84f56b2b286bf2c6eac9f3126229caa5c71b4a672255e4253c916cb0c781a00ccb4bd67d26974a66c0a3ea66f9ce3aec0f4789f939ebbb81c5218fec3c44cc55d31c2576a3806236a12785ad61a9cdebd1a505b0ca97006908ab539a586ac4a1574710846a0f0ef989903de5b87b8b2a2b2ce866dc0bb7b3df8b93035f7046caf7b984ab353de5957718d5fdf7b70ad2a1758ea64d1e7f15ac2aade0fc0f8debc59d6668af16ba258f19925c5f4a2fb1e6af8b0625305e7e49fadbce31c37289536a44233e0ac80779a9d6fe77bf4638768d6833ea77cd13b18e42eaab251529d9c78e8924d4ffb799b5d3e477f5e9edbb8bcadad71170dc8c34e031c57e84ae2eb1d4d61ef062f26f506adbbb296b73305536b05937fe74785d7476d693802578c4cc99ec66c8660882f45b1c11f26b90ddc9056b48c88bbb8d477bbada848be541c260ae67cfe2b4be96b3fe2cf0ee237c76a88b269a02e3c840f947b4075be6377ebc8d22149767ddf927f91ac83f1567f2b727431bf1840020274ebde331f4c43408c8074fd3105fad5d038306f541b1cc7ec1617774ffa2cfceaa6b847dfc3a94056d2040128ffbeeb1446971135c5c8a783a8d8f7854cdab1d2dbdf0fb84f024963712a621a33d560b5a91c6575751337423f4bf0d9ff852ff323983aa2bbed116db869f68fa3a465b738d6fcd075c82b8241c687ffdb40b86ccda1ef38640dbf10e60c590f220235e943480d5ba226f7c042894aa957f761284c426f395dd4657b9ae2c90b949c625540f3ae87c1b664a5df5b32d183fd6ac5a736dd5ebd69d6fe9d98324d309d564eb3bb8e523e42feb177455064f7f86790a0d71d59c6bc2a080c024b1da103102d5bd234404e6c7f5617ee5fd4da1861a54e0523271121ab00ae54d45ba5e280df75723d839a0f3638cb245ef069dd2f552f9aa89c85667607c7afa7a844465c8a236a68e6e2e3941046d482aca179089ac451630889901aba083c32583dd20f3bb8aa75e48148ac433176c9250bac44478939cdd6275588ccbd12322e819a5417f8aadae92d4d0fe857b5d1569da05ee6142b7cc9652021ab4838e4fdae3fa83d9a083a032f2bc13c0d4fb3a284c518f44bdff8bceff46d1bbf38a974889f1f425e7ed1bd3aab882c2e0e71bde5124f2d94c36650ba1d9d3527337266c59f06327ec929c1108b53d37c63d984e1322502757adbdc1418e7253193fa5eac625ea01990304c6e57b05812fc385bd1e446e23328bdc8f2e64eeb3ae9d168269a05117302e7525637ae80c8ad65a40a46a1edf0e08de00962581d032a35ce485e4b70856cb5a01d215910b73bef1f7597a5bbd9d851ef856ba7eaa78decc4d9ec43a2b47c08d3a0cad7c825a0d42974b7d2ec0fdb5fe59f1e7c1b923940d86ceb778309e8f9ea0382319ddef0b744b423171585993721a741cad71f8cb7df4ed40fe5113950025bad0b30dc18950ef866026be6d445e89e5adeefc186f20542bd684376fd322f3b808b871136c74ac18ed1aef8031f3a1af20bc075772502b19592d1bafd0dbccc32d90f938c22ea020f9b74f0eb3d1b5dd2bb91d4221c4513f5813d2ff1781ccaa1d464132790430751c6fc986a8a0a09abf5bd68087a7d945f9e9f7e27b8a534e6340a5d8921c5b0846c41d9ad58f1a3216a55b7c3c6879b4225a05b36432c70a53ac466945f9e32b10eed513514065ef99b01a8e3cb013b88a070df8623e941569990760d4873a32b5f5d2cdbcbc9ad91648b13bcedb1bb01fd396860f4df0c82b33f08cda9e3f13e52a26ead60b0e1c6e700fa8d32b4e27b11da4949d50ec9cf3c2f5bea602f2cd4a98ff41e5b7da7bcb0a53cbb2f91a2cabdc855e4b86fdea65ed24125461e6b0f686164b1ab1d0eb2df05181c43c51d36e46f78bfcd43377b579b6173c98a0a744b85b0d70fd95e85974bf64aec91994eeb47873a5390928bdf948ea5fcbc969fb521405e8c90183201b6dcfa3e7f974a9f4d38f32bcd63d50b1a96722d6252b99c2896f2329704af0b70c63e1f5c779518e6e5f82259c749bb8972ff69e1b94c1c0a59d788154e851fa0dfe49a93735d71f2284190709769fd7f183a08a1e3a31c9b31bed68201e131419cebfdace7b3cf1d8911f17abd0e50829d7cc400f73f1e93182af087bb0c21112aecd59fd1dde39efacdb3721cf7aff79111344203fe93b21ff14b3b7eaf42649cfaa405265a0e158887f6e84f5bccf2448a672a5820f1228b33e1eb7257b1e812e98e95414a0d836b405d9c36511a6ad32e24c4417ac4455eb0c94581dd7fa1ae01de13381bba9feb4271c7d6a3e8fbc0f707609befa6181699724a3c3581fedb06e416a30fed8656d18e402d605dd531b479311bff3d557fe5c27f6c359d3b7e2dcbbf813beb6b9ea68aad0ebc048b90ba4f7268fbce0f3eb60ff7cbac1a3053860687314446ed6f8545e236a11582fe7d535aeabaddc2120910869a9cc46226007c0d091b7310180aaea06827a870bf902b9f192e424401941d15b48e6cbae09a4f38c6d026356b45f073518727d15d142fb9e09e77308d6797be9bb85ee87928475a4f3966e36c3bbd1587f7be16c0e77434387efa5076bdcb76268badd3789aaf05e8f1a5a1591d0e1b859499761902fe1e510b4e46725054a91172d00364cfa3383d9d2a7eff4e76bf91f673224a1e31bbd7a1205bbdadba9dea41f887f0efc3438d4522efa0d1082930474755b95140fe06b60d03ac4f23bc964ea72f8d90e88bd3a9626258ad82b0d13aa8585d97bd4aa6c4ab3e7f9b5bc3141cdde40adfbd4fc6cf65e62587faf1a808447ef9d5418eac8398031fff7619abdc88ee44b273222be14a9c09521d7173d10f184f4fb3bf4ded963212077b43c5224fe6ec31f2676b808f77e783d322297ec07fb77b0603223df75804042849b17210c632984ae4e9424547a69398ae81b6abc38a671e49f89ee39d64a816a5b2f0ca259d4c94072461b2763cf549ac6bc23c36dc12e45f6c7606dc8ffcec30090202e4f2e60e6551e412aeb5233a7708ea2f60e3cf5de083106a8df8627d040347eb591f7a6f6de58c00757eac371e3e925278153761d644147a90d4be87fe671001ee31bdf8de788366f7ac3803b1048edd70a62146c9958884626baa93517cdb7abb6b4c2c1bf6d08ac430565e40fe33b2f32c6dac9d4a44f3f0620b2d0370290575f409c347b6300c889db32b7132a4c05a1d745e8d7d02b1d6d5aaa10535a1f961f4bf48689365958115e0c424c9956b849df7b4e2d9852e3aec0db7e393d442e8fc421db126669d897671615b1f868e6f83a9633241a390e76be17e9ea6d6febaa4c8f22f865a06d718be0b48d15f8b37ad028b69fde63cfc7eca1ed88cdc815e61df3813541483a801f5eb0d7565da022f54c85445c35e204cf070477d69513a2aed834f202c2332469dac58e8d595bc42db3c41dd9af4e15559869b1a6b17ddcfaa5a82895e856aa907c0e274a52d046e34224d7444001c323c94880c60c3b0bf4839e8947d76013c531198948a913ebc928193bd1fddfb1b8c5a2a932e403c926d2cd610383ed35382b6fd1c38c83d5290e7aaed7d7e357140f6162533eeea6580678ebd7e0e0b5923134d86b2e3b2b668593dd684dd4a518412b2187454cef0209db1d93d9f3779fdd82d14703861bfb68d64cb2bf5ba2933cfd41ee60e6f74b71030b7cded91e8b7c4beee2ffb235c06f700c8cb13c0456d145b7cec8e62a1e04c2ad13ec3123e5043fb3e6d786d8e06ecb5e1b3ac50ef4805ebc21787bf7197e6f484b9d65983fc23731eb5332b38538826f4081d3ec5edff6edfd8cddebd451d0f62ab593e7b8e3319240f9da8dfff256faa6daa3c066ce78d74c2df2e33b9f8c8c7f994d93ee63e1835a81a5be6c8eb9d5c31cde8c7dfac20618d91495d03fcca88a8486764e3db4cf4cd0ebbeb5549e0a35d66f75395aed2d739b79c2f95aadc5d203a4cd8884bcec040dc99f99f300a84e83001dfd96b48a6396b64e97047ae15d8d3b5fe9c6a3671917f47b7be3d42d81ce069b11bc13312df2c3b6bf704a2cf1849ae9f9e547032aacda601b7990ed13f3000d956d2e985dadd23832bd53bee88689c1a631b527580aa79fe5c4b262d0aef730ecf342e7bd94b3628feecba5c6c8dd0d5788861e53d57ba452bbb1c9a4265750b87e81ac847e8ef78bcb31c25391a99fe441c2f59806dae901085b1476ecf033465fc3537797243add06060051230300aba0d06a19fa2f26d2748754002eebe0db07dd4c094c9553ea5f69c47bfe20aee722d8621b4fc57ee0fb3dd0ac830c36a1ae4df08911d7e484546ce14456040c08c631c3830208c625999bf3e58fe08acc474b1985b423704d63383c3877c438d97fc3726e7517dc226b9507afdd5918da8b2ced1d9194184b86ac28eded3aa3c211badb01b0b22a3b69cff4ac517e18ec775c1fa053f9e7b25c2fce1fd946fe2010ce12d2b5fccc076f4197dee28f824c335decdfc4c9a078caa14dc2b05a6bddd0a5979ee7964e3fc868f934a1513105e3d6d85da8973d5ff617e8ad11ebd597088de0d488478e0fcf34e2a7516ec03baeef14a5d01c8aa642bdc145d566a9e7aaa5948e1492c4c41652ca49c93a1d96630dfb59469931a04884bef5b9d1d4a28b891efe440d69f9629ba9b6cb2a88aed98304e719b23e9e5118b857f606ee154c6971641f8831485006349e8004da9437d0fa6a6bb65b93a20051b6e67cad485376fc6dd2e0728c6af4a250ac67346cfa2565dae4c5270b90a44d23a35586c789a3a5555fc52a28fcd46713dd74ebe1d26e8a1a5d9cbe6d7f8e2dc624cb1a8112b5f10cc23f2fb3f530f72f316b0a9734306aabaa99439ef88b1bf0e18f3630b8eaa52f698670ed64b4d59882aa4bdb95cb0871b48eef2343e81a000381128805d1ed2c7bedabd2bf28950c4aa91f5a585d9c061f9b4c6c7b6ad6a242362b77f9bc06265b9ab59d65d247199c45481992e25edafec1c1930537f2647adc6f24195a03b494e36e60180fd6a3934b497c7ed7b39023f16554ad9458ad24055f9a7ef80bee15722bb6ac70a2f893dbf52873b80f263d3f427e8ff4136a9f1ff8ae640dff288dcbca613766a00a1041addeeace9b8985ef32e2d4b89bbbb0c36389b32b7a066bc0fdd65ca233670a153699156c0a451bb3b80bb86820818ec90eddd427ef545cdeb0dbc07ce6b00172190a83099d60dca0403fef0758a4aa8cea1f1369982a5ace856901dd1d7bb37d0adf98a20d38dcccb46af74d56af255e151dde3641bbdcc45c8b0ed3f029dfa577e192685f9237c4a4401303248e5e33d8f7270dc1905724bc7aa4aa554cc6245688e36e90d72a2d54f0c94cbbae6c62026a4eb8ab5f6c3b61764a5cbf7e3cb03ea129dbbd84a1c729343a50c9f12ad5e804c7393188c73412e852cf087906ba384bbb962179a19a49e448660aba562247eb005628ff871cf39cde8c3e2c9bba18959338e0217e8d688baaaaadae4423b761710a15c6f3c79443af03e6724c39f6fc8139460e25c845b46424a7be0b433e5822c83115a74c0b62b334ad85d9e01d1173d0ab69d1280926fa640f986db8b8e1b313baeb7a177f7b7e5f39a6747bdee9982b141970868ae7a4db65b059be061fbedb2a90610baabdadcd85e4698e759299fac69742b37f40ca432d64ebbff75bb5b53594bd63e5cd5609c091ff599c6aab0c094ae8bbe984daf29c54a9a48cbc4069fabe5c106573a1f4a18d98573288d03bccfaa192c694f0938c75db7702ef20049157d1a18bafd63881f1790026dddf2cd7a65653163b585e9e15a319f33121b98ea5a614f0f78fb158a8fd63fca2ee5fed04727df5aa6381ca5e20ac1ab1a71f10a2b16f6cdc94d04601e8d74549ef8c401c0e88912f2d2d4dab28b07fbe3d38c51767265794e3c2b6d3bcddda7d9c6e3e0a99ccf34ffff47f75236350092edd59c2262d28de6e329663cdd78cf221bdd31c1f844a18f0c452016f0e3a0f4fdc2936335a8fa2e4b496884639cd45749a358ee57382b944d62b9529dd1ad058bce9ce24f329264a251d1f784e1f309521b8a14fe1e84d506419dfbd1c0930edd4049b64c80f0f1cc18a101d3b2995b164dd18e69e2267eb164062267d9d23d79f729d4dd01a8a8fe2c91e35fb60a0072cfb0f7a4b00a766df6428a26ac864e155470828f380e7aa68054e8fc038a75cce4450e5462b3886e544896b048a405407e75eceae6cc4b8b34fa21fda47a7fda4855ceda30171ddf85481720ebf3fe3959ce86ba5c0df3a6cd5ab04f01aa0bf53914d5c3e0af356a4759b7cdccf753fef3825e77e71a074b49f68e4824d79b9701636b70349128ed6c24b073d423beb3851d751cc920c998a011d9e2c4ac27dac35b647d7893485cadc637af1512c18e041ad7b93712ef2639c4d9d17f1ed165449d58fe18c87c60687e4ff6e9ba0b8a0d9a9099ea4392100f330750a0d50491d5221cc23ac10179bd54044729583cbd0647c5b139810ed52a8c5c5d324d526577e108a64098f5e460ab36d0db01cc35e6e81687495cad66da6bab7548b4b23b8a6750185f204980196b334a2b8202abf9d37b0c01771baa1e171f1a701526d2ec41b0ae0eb143dc216cc0cefe2ce7bf292823e63d5124506dc02af032ead5c76665a0c9eca65d2cebcb02836ff4d05fc8b5eeae46210d435db6f0e049c88b3fa93427cd898f9250e5d9c9e7b84f55abb65ac58d167daff2ef4fab51a95d9325c4b2f946c29d5a866faa55796b1948cace891a6969af016b7ec2eab79e04ef87921584fc9a7a7f24b5abd169cf001407cca9bcf3da4229fe501818de8f5bfe87b855b6ab87ba1ae8e2c5213abfec3c9867a9aaca9ddbebf4f198a332f69e18278a367e59518312cfc9fb2129da8b6d8fa779a7dd846cbc4f42e6b6e6dc696a48d8eba37c9854d047168690d806fee80b62614d8a032ce45519885c06dd1f846d0732a0c4ef26fe8949d4f776eb32f61c8f5e3584082f126f60a7343ebd660bcbb6d5360f52d120cf377f1e70ab69f92285d4485b0b5e85b5325fa4b2c0b7c135b6b75257fa33b16b4accedeb0343061002493e2f33a4db6042b9b73d142f92f5644671a5c7e5560baaadab9024c684c8655e234b97c9896fec09a43d958ab05ddbf61db31b04a6aeb8cdf4f4e841462756b91613229905794ae751e8379e3f70404d2ebaa0e56b7167848b2299023264a0f6d05fc6ced14d7857953f16a30ecd921edf56c572bd1e5c534a8044cfd51d6c9f7af38b2b8b1a526eee72cc84c6388a7ee0df58c087be4e528dbddc1a18e293d52c596d91d21ecb594d5a7083bc5b4b8b04046a0ffa642e7b345f8f44298e1ff4ded68d4b1b305b901d0513eb7fa34413457cab931c74799173c71bcb444869fd512d74c8c09b00ab5cb6e2aff5ab6d5aabe93156e4473ac8aca1ffc355fd5c7d3bb62b6a93290cd0dfa4a650e328415585b822dc94739056b5d00fd647278a5f138306fac42536de3ee2b73d884d9ebab5db533cdf0615ce031138f0e17f1224b249365e897f1420441398d702ad15b67fb1ed39bd0c034cd0d215d0c8276ccf1fd72ec01688233e3eb1dff91ee93d8296a2bc14e7cab8dde2abc2590989b90620476bff620d9c2e0821b2c74b6592e3e150b74e6919657ec7fc997c0ca3af730f804505b738f4158d08e2940409c97428f69874b3400beaf6d39b7d762c702fffad0421f91b913d01e961cbb13a02cf1c4869c0c1bc51b6203ca5714fd951cbbbae3c793fb00e7a8ea6e724e41997adcdfeebfe73e187a335fe2c216d713cfea38a47803e04dab161596f6a4d352b1e251cba8795b545fc9bff62893bf5f5cd34831ab013565f3f111a58fb88f0367e26a2ef505287cb4ef7506808c78548e8055c938c0e9033fdbfa9582cfdb4086e160819c7676407eda25e8e4cf73e61b464d2439df60b0f5a5bb2d940f27d80d44b92fc9884074dc73e7405a385a059adb4bfffa824cc12e0e6cfa0d535b1c907c3919f0a93dad2d8456fb0cc95a4616c013f21cf82b07065057b55f1bc5a5e6f69aea95817075cabcb83c3a1f1cd44eda87cadf76baf9078be857d91e624a32e850b0b0a4881527b00bf0cf928b4886b74399c2c961f4e706cf267c6a2b0284753b2d632fd2d5967932288190bc4f5d874382d65e6d751ef1a143097892f0b0ceb53ac3f8c4ecf73a1fbb382a7aa58012228bf9bfa7a7042f4387069887f13b242b4ae86750dc8c171c8119a8715eeccde62e17c1257c38727e42c1825078c40c2dfdd6921f23b31424e96a5961c02146a66a29d7d46c0764a06e3f57a1ce7e9223f36f28bae0325c80940d60447aeb5f6d9c1675d17d0c47f8c959e7c35952ff497646b000df3d64523fd6e06b57418ed71ed3ad04bc75351b8483b613de23861b2e2977d32684c6793779b695d39f434562ffa9ae8eadabba4af7441f1f23754fb73f95611b03821f1df2381fb58816c289e85ee7e1d6f9394d033080dd8baadfe43124f9e5be2822e8ef5743d2daab378c7ee6e88f13d43794c2e847373b55ff22236c89283f40e04c2de5ae9e33fabff81d4af7ec85846479bb0546bfad0d93a7097102d02557db656465bc51b081ccecf4e4afeae47857d63a27eb1229b82740c98061a313bec14c1b5d8de6cd64042e0c24dc6e47f543be02c4a99487fb1b99e5cd0740a791d42bda3944c1400e4f2f98189226fa7de23a0ef670971c1ece24775d8abe1a702a128e357d0bec4b50faf94888be90e2fcce15bd22dfd037c65de8aad96e0ec64bc51b0af0500da22b894b9a523fe135325b61be1f25f622b0a70124c5de53e0fb43451d70fcdebf975517bbe083ec5f63c47659ee3678c8714795143be1565750c5e3573703e30ef1c887280376e90849aefdaf6cd11ebff59de805415ff0f597afde0e7edfdae3873437ef5cd7bc46d3659731cbe39f5affff916598fcbd19a25ca54bbebc3e33acd8bcac2797a1a9ea3d61687eb8358e288c89e35967859bd3a2c267a41a05d63e4a79fc3749f9a4a764693d085cbb1ddb81c82339d48b2568f6d94725652db6eabe2f4642c7b1f952f210bd2d625716711b80087aaf3c762da161d453347f61a07f1604839308f9953879ab4157f59b9f553a8e56d4f86c6f7ea821147d4cd1a9a5f5b8eac9169c5a120a33108b87984fe5a80ad9c204898780674b13bb39bfcff3cdbadc60c0a44c49e2ddfc291c7bc19d221eb8e035c2effe6d876bd105d0e654d7877ba0e499375a3235aa75c3e5dcfcfe5a2aceac5745f6e61f04721a8dffbaf9f12baf42b9f9cff37d80c08ac38992c98ff1b8557401bae4fdc4f5e6671490d1ccebe84d629cada62e609a9059fea14c237d28409f70c9bd1413850bbc0711a995087af06c9bdbaed8a8e37f566a7e0cea93fc0f5910db1d392b21f9cdcb12d6ecbba4896f8beda521c97f2d37b61417f9955f4aa8fc3c911478bf1d68ea7f2924357407e6f883ec41e0c255cd48cfe7eace2461d55fcd5474c2b6ad5c7924abfc608cc30fb9794d8a61e49246f9833565bfe29c821202d7abfa614a09e477e487ac08296b06e9bf8a6d903afdd609cff4db27dcd2a777e1550b879dfc95bc2f6a89fea6f3738bad32f48b41d1ca20168b99bbad3cb8be1e9edc8fb99295c36571ae656361512c3463d22a2fc6e3fa267b617b53fee62553abea3f3948719928efba33a4796c3e05f5cfb5b63e20885e40ce19a4ffb6fe53dd12ea14d2a1144ce85bb3ce6f48144e463718746b3ceaf56bbd2f16f6efb51168f71c6f45e1d9eef774a01dcfceb6c3c1cc86d59a3da3b26daac628bdc5711a5576ca2fe9a636b4e922b2cd784453be3c3a43df40a70acb0cf1f0174feb0c21faa4d1a549e0a555001bc726161524d635391df9d818f3502d2b7aeddb23ea88364d5773391f22d7bb2d27be8209164757778519c30aae7379b467f1538eaf9b49c723f93cca4a58db01e9fbce760b33947243f8eb6d1edc806af03d54c2f5c78e2a4983a38dde5f92cc8f36bba1350990765ae041384168018643890404d1d3c99c4e9ceeac09c7044aa43e12ac1d40898444cf73bd4d8d15e9272e0bd63dd03c692f811e7dbdcb911d91f216a1d184f76665064da1a8354ed4f2fa35e17ffa3225563e81fc61a4915c1f059080a03451224a2b4c9237bd9eb7f8ca4637c85a4de20b24f194f0d3fed6bd805217fe0fc603469ff5e5634688b07e6dfa305a5e18c4b3dad5848b166aae4eb606825dca49e3cea829899988c8726628e4e307bde4e520ac4d0cd2347e53c68ba26d3754ceb58e0f52656c36b3204d791b7088d05c3dfb96e2a29c6694104f4ba9e18333d2fd4218f582c87552faf42ab374a0f3c2793e9e788c791bb8766bf6924062edb3f191143b7afa556827ef0481c64749d3fc427d38c18df3ce8e15b8bcff654c10785c7a60036e0dfb6f8bcb8fbd021f0bfa9cd7543868d97498f68096c55b10c37cf50db5559052fce8a1ed8bf9036ab8028146c82e45e8f72e89f05c29eca649e74c1188875a892c9e76c799c3e31a6b3816400d645ab82183b6560928e214af0a927af68d4758f21f5a6547eb1e4ad672151afe54c8d8e3ad6b88f23c3eff4078d29718f7e76d66e10b04a805e36f7d5d75301720bcbfd572c389927ab58b1aa0f0fc255a5d834e3dd04cf4853d765652b34e91583a012b766e8f734324ae6cb201fe354f9f7297f71763fd26315084920e0555a908ab2e848476cc880519bf033e3fba1fe0ea23c7590147e1e129141233040ec97fc5926480ec87f4197800a7d4758cca122d8ce52948241f2f5022c032cfa04f19ba0757be7c7da17c6bfb29435f103e03bbbf3f3ae90b52ae55bda0c333c7115a29094ff614c137352c3c2ad4259bdd95522c6301826d3193cf8173fbc0c96cb22996e04dc93e3055d5c4d527e8b41a34bd12ae8bee50df3afef1bc5e7f0b1e9f7c4bcecf41e28265e7d4121b2a37cce04c205ca6b7e00d937948cadd025ff7620403a76fdc2455a893b42014c62545a905cf078cb1144a641e49850df6af3537d0c9e84fa63b1fcf0bcc2acde62a6b212c32fff4b8e0c21e5dfa2f2e85324383ac01f07b5a9eb848da815666ca50aa1e29f90a9da0aabed14519f1caa59b6729dbe26c930225547fcff43d41dfe61a2663d717e7cff2919a13a8d14042989adcce47fce563cc0783f794a2838be7e1018c648a3bf6765de7385666ede5b01d3e6913c820a1b46b992c3160726190165993bdafdf46dd9f9bf4278d12c21c9909fbb4e971823e1fa629eb39b98609616816e3c5816a81dd249426f0c11f273a769d2f137c580b8064915a758f87564ee828f5a4b6096769d95621a4891cd120615f2fde9157a54fe6d9e003a97014b300454c042bc2eaa88046d3cd8e1660ec643b7c8411f1ee16ee33f3b80d12f3c2cb1db849c38446c9691211b98817a771ca30351fda2de2e276cf5f33413f5ea90e43dc4cf9e524def371274aa897d248971c723485caed0eede667e0b9ec2b84ff7c8b85a3f00551cfe405bae20458fb612710306ff4ac84b3296d4c85cba314ac0a8617b5ac88cae57017e8475940fdff7da20ba1cbf7377c40c067c15d2a14bde98f9e8f55f4831e06bbc13b7e4bd2e52ab930cadc70163220a2510b9a6b3903af1c7402778534f114d4b43dc29ea84668b3c206738150b9c406a549cc4b54c041f7eb55f849e51c4179f2da54b0f1e9b27c1f68122892fb538d903e6bb22166526e3420aa6c92687758cbd9aadb09e513fae5b6441ef4715a2ea882f02444c2dd459e19ad38c40435a9395bf7c6c4b77e9ed7853b1b54b4d699106399a97981844109f1d4083fb4a6cb0b7ab30c552f18b642a6e334fbd723c375d965493b728ca2b177d0a6f2b5052720893b93f3e688842c88bcadd10aae4aed7ad0adce0bbbad7ae6d3f03f9570c7011dc0b389216c36c72a876d6f3f662d29847ea8275947398b116fc91e07d09cd79544829c6a97ab42b2ddec0615056fc3e1e784ebb54fc00df15985985522abf913b40190ccfa6b173aabdb06749af6a7180e694c9858e0a5a21a922dcca2a6a211b28ce35959dafbf26061175d260f5a084e0aa48f0f76647b57901918525a6e9a4fbd68994a7c42d692b8a46aa378fedc94cc989f04f4f10da8189d573f9b461316ca003057ec01c73abfd801f585f41eb685f4a9bc32cfeed81a16bcd69db98cc294228a0b735156e435dcb305329cf2204394bb21d10addc0e5b220e83b98fa84e8b03c99ae01e5d3d5ca4357d84d44113a900d5c82ffbefa9026530ee783937d3a52b26ec93a76df0a89ab7025891380369bb3e0d97f56d6108fc9b5c4833f49ea00290600f0552c486d585e3fbf16518853ab0cfd84e8986db4521d0a506d60311f448f4f49f7e5e172db42b68c18db4e0795971755e1bb326f814fc70bde815dcb46322e0d0c03012fb8fae35242aa4c6834cc3b570eb70c75e6a3a7540ebd9b067cbfb7329fe36e06ae97129e1fc796b602cbac6b2eab80cbdfa81a325b4b726ce3055d6e52d7dfa7d67f438c703a8a1642c1c0ae69013811d009c03d95fd53e22dd70c799c415b32b0c1261b028d9ed9ba33fb3be3484896367b170aa689983dfadedbd42a3b3c231a29df0799ccb2c4ff19ff3a23e91f6a5121e0a6ad266ec7719e69c9b5f9a6d5e57fb4170da4d2fce887cd6f646164441ca60532a0626dbabd9c9d2199566859d676401ff2ae1a62dd49cacb694f32076211fc984f1a2805be023d3199a768e4980ab79b585b574402cf59bd761f4b3472dfb77974d8026c3cdf2f57af9af4547956f7b32503537a118957e3796a9eca11e06fe35c212e8fc7b5d826b21a50d090d6a368caaad72cf4c1a7603386a67e13655e5fd8cceaa2c2500b6d3299d9bd4c399d9956297cb7d7423b2cce683f53d39741d287afaa5e5295ad6dd5dc1e7a5a07550567aaddbd2dbe1468f96055684354df0112cd58b82dc74457ecdc4407a5d26184c8e77b856625c7bc556a0db35e2365138fad94fa99f9ff78d08fc6103bf826b34d1b381f77d264739b146385c3ec8a5cd880b1f6ea5038a81066a3c94b92ae219c1b330999575198a92bdefa0a3fb29a01ae7f3929bc63c0f5186fca5bf10d83fea544b5749d50efbad57be1f288cae6393aa6187b3e30360b1b55334de17f768ffa666baa7e4552bfc5b9b9a0a398944bfa149e8f79bf58741f18b41da9445fcd0775e7495d7597572ed85c3353259be33a7d8500d3ef8d0fc69917b931f9de09149d801501fc56360ab461b08990750f48199c0805eafc8a83977317e04002e28246b0a1ec3bf17dec9e5152268256300fc0359ae19d83483772344d84251023d1ae21e9c6b0ac1be46f26b2a63fe2113f28989b8c7136674192378500125904cfad79182589b6c27fc29838f6db7336b937dc39854c316c48f3a4f4a14509f885d8e00cd0f05b0bcfa0bd938996bc33e63f90caa0e10cb8c7b49489004021e5898cc5379fe7a4c49753035ded6ecb928ab820a4c10b8e3dad5f3b73ff1ecc8767f0b831200c55d65fd36260678d67643a2be18d0d757199a1048e8010527c9f49c4bb3803b5e188d49d344c25b4330e81448b526412ed8e3b466b5331e440b800bf0f334e826436d5d282076431bfc93a43b316a66b0fa2091fa38ed48f885aa5202b81b60c0ad9b87fbc61e1764b8bf58c1118294a7d06b03b51c78205c2cebdcc1de0a03497f4cb087f4aadfe445349f61d0481bc01fc8c1afb64c47e8f36b173475ad1bbc8b3c5714d3b57bb953941384ef6a902a7a1c5baafaae4f5ea7bb9503dd4226cc7072600f6ad98144be59ce015a9c820be5853e8a4b8d4372044ef80b9afb62381064ac024d021a8060100afbf03fa4d3f00804ee44145a7d67797993e8197f7c8273dc5d0a04ffc60bc74da3c9c3fbe677439a662f769d5c6b16a650386641f02000e3f97f70ff3f61a7170d692112b40a3a1dd0d440dfbfb3531bdf64b9d42cc2cda6873439c9ce786ae5ad42a959f826bda7b2cca3b3d5107d80b9ba4f6897a1f01012727b4498d06df270d87a2a468a4e7ea1d5aabf2ce024590dcfe65d45fda63c86068d5df13df5db9c12d00e87d63460670b0944c6c05be85d552613de795ec229dab78f52968b9923c47ad0c0b94da77f4998e593668f3b44b82f05237c3757271abebf983556645d585518f810807d6745f52d757d32ef41fabc76e7b40018debed4ceaa753aaf0c2d0da138897034f05ef6a0d4ec0da203821b22aefb45e012ec8821eb57b3b669cc3ebfa6274bb1ccf2d561fafe9651620c51e5ed1102be34ed3a4504b6bc18abeb6a415df0a09fd2d93c5b85cb20d8937c094edf85babf9eb0e881c5f2eea9f5d0e040c583f13f580fd0bbe105921a88a01410b6da2786cdd5dd052650cacc815c4777ec3d33572cc9099c31284c781314df183baa8c52888114e06202c03608863a06a267d9b3ada31a67d702695401cf3d7f21a6b952d339eb370b6a84d67516a60744f3537e8cbb24c4831bd17dcef39bda27b663a4646a454626318c93fb2032b9ec3090b520d90e56bbc9badc8eb18ecba32e7a01a7ca952846d69cb0bf1a748d559a42d53d270746553ef200eef0540b6bf5ed015c1d6aca7dba26fba2c6f490817649bc439f844893d22e8d741e394a0a856af4a7b2714c1158393ae317b5cd85e17bf28b3b5334d50e2a6897373455ec1694af35add660328c74c81b1a26d33eed50e10cdf5e97bf9f3e3607e84459aa6ce3cb6a145c37e24b02d2338c04acc2e8d57b4b6718d2b7d589c71780c05f2020841c9d0ee63552940b550751707ef9eae67129bfa84607c9aa4565ec28576283b340cb219e90c8b14b310dae1e4699f8d4a1f88bc43843b0a1630e95c1afcf7a3761bca5059b75aaa260399333300bef083e3d263ffe30c54a3aee07b1d20b3409006fca33ef6417c30fd798e2e0de14b7544ec0a79ceecdf7b128d938ce2c41ac544e3ac34c358febfa41cd29c188573b68f00c584a428a4073440653e3466e1e506d476ea862e86f11098f4f5895079684c11cdfde46e8c5be63657c86c4a430d1438adb3561e43c553dbb2d6a505ff794cfea704bc56ea5ed915861410031fd5aaf56b490138290a5636710d173acad868324758cb99f3e6a99b58719a78cc04f7d066ba0e42e95c429543a440755d92922ac8cd7c3b2d4612db7f1c44af19bfc89c3d106bb66e319234e12cc144631cdda37280128b5f9e9424c15718623c3e40597e0631ae11473e38ba4209a275a4240f1f95c101dfbaa299a8e39a0b9fcde2cd14dadeda21bf6203cbfca89d9ad8d845587d08ebff3a3e91848d51da4cfd23898e3bb955246d64d1513211e68fa8188269979d4685c0a94514a8f2087103be2d5347147a2ba8ffb27b416cf0fb20ef3d0c107265a01061e08682300efea59f57102599525a90e5e539c30dd8375b56f61d60d2897b1527dc877f12d588e254fee72dce0f1eec9445beef5b6bc1c0be6f988175c1dff92967165a8eb3a1f9f977aca0e9f8b083d8b47758270bca6d303b6c16eef80151ca8cc8616c7950a4d49eeb4754a425d039487de901acc09c54ee6685e2d3b742d060c2e4ffda627be2844a798d358014b464d9a65e3fcdc88bef125defab03a2b71352eda0a1abaf06e10e6b608a4be0a14cf81ed4f1e726d1a9fc0868d0cdfce5b845dedb389909320511f2341b2ed166c25ba382579ed61f243ca6b24832516a088008c3c4954abda4747a1313862229c69f159d63ff9dd6de893a3a0d672eb5788e849ca366c0b07f29fd3c7fcd2d037b6abc6d47f41a0786e4860e3f1fc7b62e08f62cf112209ab771c7db65d1293cbf7f3d0def124bcfebe4a46eb0bc74fdc80fa363616eed243c64554567b930aedfc27094e2cc9f98f92ef2c02500eeb8975c5c965de31a6447cb501e798459ba2a47f0cee890f655d9cdfc992a71115309d9621b0e859583a64cfcf211ce6c48be4ada2e54260fa98247cfe89935fb408386a53a9fec8e5a47660ec8e4fb20b3811905b64f9a8b66ab21e3f35aca60ffc5dc53c3521e06e237795db9e4cb2c5c81deae6c048d20ac4f4cfe68e208127c880ae0ff123278da3ad0a636b2b0d6a8fdfbaa556200ca0bd997de0594a4a2f965abd9ac01417fd078db71ef061e4c59a3969f7ee5f94d1604ebe3b782228e739cc4e5ea720e9f42ebd2bbe25e26001a63c9dc3d3d4ab517ee544f97ca17d32ec9c7f789e905d6a62701abc5cff0d2579e80789d12182ce1f037eb9d46697ada85100cb66a5b31a5da8162134fc14fe4f3b55735811c018543bb02e26a2df9a05e976ffa8f4c99e5ffd118673d7a31ea53fd086d64d5890dbc363735e3568e161c9c389504ac198064eaa6ecff28f345385db118504d135e73ef1861cd5382f7d907b635982dc536e5551b355858d5c4e79359609f81479555c555c77f2824f42ab78931650386de0e433c77212881603511c2428ee13a00c7cb127074681ba8bb1a3c6288c74b930d62c857b6484f0d220753b9422eb3d42b4f53270debdf26d5b3a860f14927bd1eb7bf393910415ccf91d5d6bcd68344dad9ad025d4320e057b430fff0b18eb78e317968e5ae78cb7c3adfd8e7c7d2e622815ce4b3d83afb558621a352d290e20fdd80e74947a6a115e7de5a5bd720d748a26a2e7af7f7afa61cf9ac5a182a2f0415f4ed36da2096cc3a0d63f3908251782f71e989d2fa1e9c9840fc4ba22ea96e3b60cef0e567f7587c0829bf56d9632b36ad64ea29ae452d3a9bac18011cca1b3008986a307d318e8bf14ae455a6f993e248802d85f29faa6a976a73357c66fd392a6859a9e75e995fcf196f196b9173d0c9acd4f2c58dc1b4c3e9eb6416c9478dfe3cde5cc74b66d5cdff04d6bfc5c2cf1c1c63001ec60bc32ff286996faa34afaf6f385fff733806296cd5fb2a71551497228e461bd6445b6497ff6f9310827f1053fd6741001c63830114422fa8c255fa564431aca38fb06a9e58b866630a1f572f74699971873b56207e868426372d1aa56cee3ae18a710cb600552a57d8cbf7adfaa0a520665bed1f7c9f7e46e855ef06c63287a8e69af5bfb2732c20ba49b3cdbf13c3abbf41da094ef8bdda67482296a426a6201f4f22aca4c5fcfbc871f0c7cbec5e20f7a4e568bd0a53755328ad6034fcd7d4a3e082098c7545c3a0f216a199bd694d44761aa14f9b5b458fafbf25d32e37b8cdc043252675f33d608c055915f8b7b6a3eab7a24e7dd708bf05686d0723168b2987e811dbc397b989fb40b23a2ee65d1aabd87f62ad7303c6e6aa85076174907307de1fb3262986a82e8e9e1563a112d2b510bd07fa223e049eb157331d5b6d8340ff12080cd46145a209f4ac81b9adc8bedd6ebbdf249db4992e7790d8d200f960583597cbfe407a365c0865308fd213e8026157de4fb0beaac19fb3729d8a8fde35efb0f0f2fff7fc0739a4d13468bd009108cd993e29e3ab349889395a5af9f4ccfbebab36f524d7fb573c37dc3c44bc83e1f440d14e8a6c042cceba3877e6cb6243a5b4af02d7cd199366c090e5e072735f09d10d7e726f0a76b783def85ca0ef5366c0d3dc3472289ea4dae0ac4f222452d47b51a0ba81abb46e4d74ae0f0e7e9b9cd968746e30035c164010863be11047c6064a61c82c4ea16ea6d1d8a42ba62854192f3171e862a7a27bff0d42a777d8ed11a7bf452e0329003ea624feada32723a780ce1e4272f18996b2960718eb624c2b7fdd1aee86c17ef26095e3de6787af89c0849f0f3fb92e4dd841f8ca3e0ea83ba4019ff864125db77072fbc319f2d087822ce76f3b984e78b9259e3c6f28bad063d2a7e82fe057ed3afed23bf7e13f28e071cac7ff24a25e40c233a0ba6780538c0865eed8fb6f404b3a478a310d0623f205ddd7f5e6b620a166cdc3a74968ec4f0182f7d32240ec745201945843caf6804cd8e4292a6b38ce083e56c225c038991b56c60178adfd3c1d5fdcfadd9c9da994dd70b58580cfffa2e47061483409dbe8e019074ea471d9f805af2655482329bcf7cc2371a13a7d63ac7a1acb16b9e963c8b1cc353708e47a559eb24cbf254f15fd3c9a695eaa72ab72ac1884b195f46808b39695cc49976c298422bd9a9715c9eea93be176a50298d9d52c184cba31e28dd8b39315acb64cca2db751ab611180e0687996ea55b3e8eaffaa72e32bb76a5bc0b96e2aaf2ee8f84455771bc354f6887847b71388f7fac77055192db8caff357124c61c08ccd94cf0c84c3d31ed6660405fd5c1a57c28cd99c324c51b48690986092e6734c639002ac310398e4a48a4d42d6f8d224759c07b2b8b7dc4d5b22cf51594710e3e06c3508ff81e7c556b6621225728901316622625cc8c0c983e8edfffb11960656ca635917a55c2215619858b7a808bae74e570f7fc709a3cebf5d6b274a4d21aaadf0068d63a6c661350a75e4e545fec93cc9908141bdfb548a2623a7cb8789eba3ac6a886a8622aeb7f2fc6ed2962a5fa8b1487b0eeafe3d9fab3a4627e409ce13bc95bafcb362e20555778d9f050310ddf3f11263636485ac61753380f63a524496ec3ebea5d739210282adde306e9120dc5299a4edc435ed94626bcbb358a63a86a860e4d0b206e140d58f3274ea2c23fc9f3c26ab671d1394fd833a09e3a84b8e8863a0915e37eff3f13ca441d4839608308aa639d50614d86a014f99c79159ab253038444f94e2cebcb713090e9133653897b5ff26ce5a8b4a10aa4759a3dad6f3100a59f26e443e4fc93f43c08ce6da2f2f6aac1b6b19bfee46a847705ffebdb2250d95c435582d9c2dec0c698956f93f59ed6283d57f0ed48e7a2bdb53d0c10a0159a3b4915cffd76f01cb3fff51d8a97dd783aaeb9c2fe7ecce631a7072af2e296be5d6ef0d8144f8294088587f35580fda9b6dc4e3c73954b1a81e82224972390998e9884ec6fc8451384948ee51f3211abb41889407d9a558cbd89b963b71763502ae6b3ee0256b86277fe051774982b4a79d26d0b04803c63d99a5ee5873649be56688b3139d8b0bb2796eaaa506429e1b7bc3fc946002ab0e24487c7b373085d0d95d3fd378e8faee93ee666911a6fe145e0b273573274e98b225d386ef7e5673fee5e92d9be9b7724951c2278c8d09d602f2c2501739411896af3140e3378691be87b35ff35e8fba9970fa96ec5b074701d763c8f1264837c615f324018a4773225c9378e87a4c2dfab7ca6a406af8111279497ec716d40282106647bfcefb792a5241101b0ae84c9e7d4747a227e78bc5b507077cd84c3456d8b483b05fb42b43782cabade153cf268b5ef36a5cd181e629d49841377c350baddfaff5434c9e81339fe296e4235ca6ba77b29693eb3e31836a2d948eba8333fc022f3812a42bf42f388fefde34d0579f19e73a314f517d16076f0722bb86727bfc33966b71c7502b0881c2929dd5fc3c4b0569df8294eba85ec538e309144085b6d0d689402e91ea1921e66212846bcb4b728bbcb77bbcf2c3cc9c94322b6c6eb5b92c57efd5f28b04eadaf7378d2a7c55ed26897a5444d4daca559b1df911ae57151904c84d1e2f9b192504e05dfdf804bb4ce9c200a4dddf4a9277064754a48539283a083e594a8a22db949e82299ffb91af6265ce1cf95fb60ad769fc51bee3cef840e07b10cc283421b098ad8bb63a4e930d027929a05ce163047bd9c20a9704db0a0c03d65f4c835a762f0aea131297438084490450452296b417d4ac2a9d8adac425ff51c509f0233d3a0d138ea8d7afda0ad9b2a5ca90bee0c6105fb6025f8fcfd9abdea660b71beab35412537207cab60b27e4cfee1a25ea7c901a6564948149858dfe4c04c3471377952b1b70247b86d82c73a0b621cba628a3c8d981d4230fa90c6ea941d0dd6849678383c64cbc5dd192b90e54eedc7c486d06a8e711751cefdb86b1954f0cdf209c4d5710e5b6542f1b155959bc631a9aef97067b7699e9a80a0896361c701bad310287b78bb66f735c8f18c091e9e613b07e683afd40c2b14f240b88e44fe2540cbff125c546deb68eef5b2e7955bc703331c03bce94934fc97f053441cec319d8a83407a5e5b0676733910d55310f5d141bdf91309f35832691101936438b31eba683c17b1688b70d5cb3660a2dfc74536656d4bb4b168b1ed7604905e925efe70cd1dedf776b431eb85aa5adf08b67e21c42dd73faf82477594dbd32cc89afd8d4d83a3ad5c3657286a1aa05893adaa46226036abe6a7a3f89112b82dab26fca3bf4747f99a11606c3cb160cddff030367324579afaad317ac15e2a3f3dd0dc705cd2c1f581793c2aeaaac6866f274ec69f5d6f1f3ac0ab7a53483f032e3983a597cfe9398b9138c2f51d8ba21c1eb8f33a5554c6b7f9a76043942fa91ebe15a09fb97942a5812e73b4519552dd3b71fc0922303ed76b2115bbf1925c8570e9ba44e13204f61bbe2d354e9406ba78362f1072577bebb92d2d9e542c1f5a29ed3c1018a7e2a5438ed26163aa9012736c0b27e4414dba98306094e8dbdd249b96fb5732e6b4ddae67d8cb59b824da2a2a0bc24612503cf731ef79a16d082334994349b3da9c8c5f9bc27c7ec38270f8046a64e261ce8e5546702f02c3491914e46388c7834ae9df3a19c01562491ce17a4035761b10f2848c4a8ea2654bfa21bca21385c0b08454299d98f1ba9280b277a358bab863b90fb50414ae6ea8013d72f3c17228a471d9731b3e02c0c8eef184ba0fd58352a85ceda556ee08e5e5201721f605e553ef056c62c6bccf7fafbe117d59eff51309f1355115a159fa19030ba2d24b5f0991412c934446c550d19680da61e4ae4ddffe5441f514e2e2aeaa45719e0e51e9590cc30f7137f0cd56b22e05ecf1a3cc21cfd406fed4e5c1651de016fe7b5fc744f81d30e0a1dfa59f8ee78df0fbfb123a32d266a4c1d373120ed121407e15f0d5ab75b0cb670f8d8c2224ebf2fca2e6a13a9852d58f25076a58f4588b644fb9b4f03cf258e1e483f8f169bffc9357ca7a33ca007993978328643fbd51c3302e77d55f9e1c996b05cf5d4c5cb10986e8aa9e74a21988abdcbe909680c5b8497e850566d6a32d72f527526ebd815142f7a29a45a6bcf7d9c4b8cf07371a50401a126115df36f9458bba481601c10b1ff7b44daf162fa5b7d2bd7c97946db69258ae09aaaa633bf067952642363277ad001e1a77e9ab0c08110851589fd3b5585bb2696c1cf563b70dc89327b817a79d38f72b01365e8129bd2c556176e65270cd195344e48c2f8e4e8a5439e5446b548dd5e08b9ab98c8f801db5a23363498f4721fbc9a98e72b3a0db9f4e624674432d9a3a8a011b7252d478c7d6f7eb15123326988cf5116196056f2699e514591468b1e4d51f8a84115a7b05cd36d9fda47e876d2bb3b4e0fcdaa04d36491a46327e63223df9343b733096c0483883a158ca9cc1a1caa20bcf063d74e1d648ae9549e72b7f6f0a6b0fbf72c3a4404df01d6b89e1fd765b43da1ef8dd9a45f5dc445d33c1160d8d372426fcdb1ac5303e8409496be985096ab4666332c993ed6fd41e0c4ccd37950420bdc5060dd5af0189fd2d428f015086c6ffdd1edaab39313da99fe5ff12308fe6024cf154069d172603f2c64731a7c505a1416f186a72b92a031aa31ef6f2ce83c0cf7bf18db2b80514947ec8406620f14344cd1483d9b498929f9aa7282b4b6ef7839de034d6b10cd70a3869eba5c30941953525f191265257fb9409a21f2a5b86cff5f3edd1516d67f717acb5def89814a4cd10248c8617da7bbbb16407157bd869ff6022afe6784a2d7523a11f3e9d4012cb667aa9e8ff2adbd0fd97d24451e09039c7c42e736b4452cca885898bf8ef9c208bf29c003bef5a3610d3d1cbfee3f76071f20bd2a5a0d57541c94d7dc5c8aa33b295e43a6ce7b9a53998a5e3bc17d186a48bf4225232836fcae3f0cb8843fa1974fa499700595b10a8da41f51185c2fcc82845c042cc65c2518fa564907e3aa323e02f4a92c1313ae3d0efaead64cfbaf9f785356377fe869e0b528e0eafb69c26cd19a4dacca004537cb980cc417e58c29d826f954670752692e4efa796c6700ee6ffcfdf98304ccb546bdbf14feedbecc5199d52845e273f6e070d13e2ec217a6980d7f8fa8b07a777c29c92f835a23f622d8fc8b6953309de8a95776d5f63ecf0e3db9f6a300d344ed494dbc9c8f562dfee029b093bc5d1d1267f87f5be8d3b7d79b758757a2b0553ace1c345cdcee1ed3b9e46fa527dd1e8e298b213103840f7033fd644b3d45e4fac51c6b4f7aa1ae6b5e6d605d043d011fddbf4d3d70f075239664e184308a5ee7c4c554a541f5c6b5b3ee3ce0cb0f92e280221d77c35c8f171687c6ffac84781086d4bfd7cf6003b751a61482c22f52f871eaef1a8188fec0d79c7fe14342f49b3a7bcd30ef57f6e6b4be8aa1fbb033237867c05644643c3e419028e703da03db2f7b26b1df5a741581f299b4030e513917c2fae669a8c7dbf0fbc4a76cfd8aed0bb872918ee7341da6c20c23bf06c942195d22326aea4e28082c97fd1f5ba80516b433e096f321d002520460f4f4977967f060774862bafdfdd81ab390c47e3a0cee9595c98019b4647c349330888450183dac0adbf2b4da0d15ec503aaf11c3f5e38441a62902a42ca19edeb2981c640ae8ec4e935031c83cf921a72151fc05e53dbc61c73af3536a5de1653c6deaf1903c65cf22bca321250ab9988169bb7651c564cff7d85621bd4dce19b3e0443acffcd0cd908b605b16cbdb268aea5e06ac9e04ce0a73e529833f10080e5735ccb5741501a6b617055796bffa6ce7907ad325dc7ed64293521a1e41f6195aefe5fc427ff7a8d21ce3d32499ff589b6507db6cd5083a8eafcd81ebdf7a945f60d93e47da6c87af1172e7e91d8d857c64dfc9d087d48314af1803e5a711b7970985e7a5576be810892594154dd6e6b81e119890f4ce8d7ac5407eee9814177fd03e17372cd03459ac13dda564aee1061c35971a4dfc5a5a860f29f45b8efca606c5b2614f0f259789dcb31ec83ee7f707adf1ed06b88024b7be28966a7b49e0ae441f909ca22373afe67d5fe82ba4284a3bcbff4bca5359db37cf860a09a47847f58f0cd1afa24ffc3c1e3b19b47409afa4601cccf35a19729c66b14a3b84e8338b2f28610e28c9ede588e87379acaf8730df5e8e125fe55ff2d609d71c0e2bfced2f6599cdb8d912fb70147332d2c52649285971d53b8dec44f7c3c045a3be9f904f611516bbce015521d8bd77c2045174adc20fd700926fe3dcdf00cbad5e83cf1c2e1ce05676a38bc0548c2d064e4bf3125630f60cc1a451e9f193be04d8cb89e4361cbecbc3d411488931dfffd865a91ce91d3cc131aa93e0aedd6cb1d3c16b4725d0072bc1f1df999bafeab0f14aaccca63856cc2b7f3ccdd78d3275c05774cbcdcfcbbd14731210f8facda0dbda66338caf496de62ab04c0f1420d70c7417bd288651ac5f67e4b3f11e83cd68942c1326cfa1018f290009cab0c67ce3afc6a5d56e0e99c393c1b6d46369c2b8b66c2f30269986f5066464857aab4348a94ee89efc9581ab18d9420e2f26c68883bac05b37fad4908fbd2801388eaec3b4c8c9ecc5cf084dc42c6fe04a097648ccb62948616394e312b6ca7b92078058567b333b390907ef05896cebc9f109a11e6bfebc835bfb757f5b74f444c69cc34c4391775616ac8d6c5eeb3316700d79ca64313307ac1e052a68a95b135795c79016b49c1ddef2ab80b36e81a615288ce67c83426eccc0f62438b2ad75b7f384b1de898dfb391cf2592acad595170bedb0fb34fffabb272808d8b9ac8b0e108d9f885fd61886e29d54c07d59c7619b737afe92fa808bbad5fee68d2a20b4853447481fa0e991fe5e448e08f90023e04d858492105604495b4b49a795c1126d8955395802e711924db503f6e25de2aa7fe926ff4a24a8c2aac308b4275f6d07fecb23a7e6cf8f2ea9338b578c5c926f32f2862291861f48cde439677fb7e547b7a90d62e1d552906f0756d2d5a034e9a584ed9484cd69376a917cea202cee3b1045cb64d884a0c54bffc83912a611be690581f449dfe907a1742a2b130dcbf73149174952d1bc0555219fe133177278bec75f474a798d68192634cebce8acb8180a69f9d0fece5dc16748958bc2acaabdabdd9f94c44bab4214ec8f8893892f8a300cc30069cb2bd2be1c6dc3c7bf1abd63a9a4457d95564931d4ff2ffbee328149fb3978cec741597933926174c0033c08e3abd3705a581fde4a4dd0d868e1023b11f5e3656504bdc74cd01b78d09cb7ff20c210fa66450474bdfd9bfd1235a7a95cfd00f7bfe92c7259388c9eb36152a74bed7a9b2ef12dae91e4a034d55b7ff8a549b9d0a5ba4c60a0d079467b60ba715f82d58e1172f522fcb2c7a78e0637483d1a3b72c8c308c42c8077d851db5545120a907f1f1ec94318c331d8d5097db185b4c0e20a6faeea201698bfb96d4ae50c6a6debd8a57f1c27508b00ad4f89d8af7b69166fd105e8e2906db6e2e4244970bacea3a2fb5d18ab69dd0326770946c44ef00f6e864969e5818949d179751cc39051bdfdaf3531456f29179f9222770f8efe53b0d44aae809ec43c1e7cf536f1078d4e1d6ccbbb3297c1281d504a78d81ecd25f42e7efd706e81f2c6e2b7db0b76f92f6acd2c43a26c9723f07ed742c0f95c88e603ff1384e8e3050bdb0a4bef4b69149d00ec217d7c7142839969e9f96a36fd7b6527a41d89b6639cb4e83a181f2d03ac10f467586cf2e9eef2640145fc52cb33ecfb24599e6761cdb85c2cf0c7a5a6d1e6c26fbdfec6d4ee05d08318cd15999335bd1060c165c37ad8395e557e3bf486493359641b11f04346dd2c8ed44349b2e99fbd5d0df0ccb9c4b49f39857098d6c8d5b8addb1c379f41923a2157b120e2b20c500537aed95311870d0210a9793a5a85647e141bce45f518de6c164de01243a785e1fd96a7e7cfa6061c32e4d745dca14becaeabf359fbe80fe1f064782a865d1aba2739602225b6140ffb702b6c18179ece13b52dbe5644359bc8d137eb8af046a714d92672db1285ae32f206e613eac55f52849b6a66e7441f965eae53accd1ec459ead3379e41009cdc9c3d9ada7bf5843d9aeb6b3e4bebc9d92c50293c74f97423c216caad7f61315a42091b054c84ef0d9ff1b6360e54d2d106fafff2a8a77fc7e016802a498e50cf4aef02a42823183408dad1631bc5bdb68c73ca23af0ae38a424e81e04ccecd9bbbd592a1474234eaf0ea86772810380c5cef30af492eadbbe0148c1632e0813081aaa41e6d462a5d4532635280ff1eb685422297edd297da2760ab452787b60a6b1fabf5cefe562e6b1c9b192d25edc5909bfca63f51b71875f5a4d625f5cba7ef11a7003cf9c071c6d1fba5cd2c28fdcb0bff0eb81c66e7b311dbbbc3ec65270bd00dcb701f96b4d5758fc0766f6b5c1ea77fcb563193a14d198e46b49923478a8e04d54a86ed62e43b45a488fdcea061c9dc82ea45737a9ffa9c74fbde4af7705fa6bb3b7f59fca6b81eee3360389f4a076fd5e7a7be97dd05bb72804df038a1393a05c30902ae21c4b51c0e79e145bacf3b4ff11ec9583958a1a0eefbf3cdcb28bd5b756a99335c5f4d3edd3e58e274020856759ea0008241504027889a2cc4fbc07266c5292d6430d8cbe482aedcd9232b901aa4065edbb7f4b915bca2465c509630995093e6faaa1a1a7ef2b241367dfd0f88d3a63eedb9784e1857dad0f2c06b8244ea983e36ee9a5b59ce52c87afe34b2bbe97d6dcc98b6dec7b18e39bbade039b75636ce3e3c6dfc653dc631f37f7ba1581cbdc8d04f1f9cbe5491ce6495c307a851bd976f655e4b2283c2a80ef72f7be8963d3aff7af85722fc696bb0fe4de8b49b38e407072707276ce355e5e0ee7ccf1d47d20f6b9fb3f7c787931e9e3c6cb96b3b9a9fb86f770a192365ede7d7d7879ef1db2eddb5ccec687bd7fb519eedaaee3a5ef4dadff50c1eeee2deaeeeeee15c8753c15e435c8aa2e0d1f55398ba2fc59dbbd8b12b55fc9caf2dab2b8b230c6fed559b7b6ee0df26debf6ad89aa2aeb52a93348f2bdf7de7befbddc286466538edadb67d29f5207b1dab3fabed6560122db83cbda6c4d6c5f50bb0a82c5e7792ebaa33973c2fd900970a861a7d431d6110a97e4ee638eec7e2e2964663b4982f7e94a87df3f40cf496631660862553f6ce7a5d41484eea81368e383f283964bb6496dbbd2b3def00d2dd199aa54d938363dc7a06130aac098a88e1c1d94f47614a263e74c79d87dbf864155dd8ba2ee6b29fba660dfef88a02a16ec08f63dc136754aecfb429c5609c202bdb5e0e5f5202cb01044e675a399bfcbef9d125f7eba6d124f591203be639ef2ed3e4221e7e7c610181f1296920ad8f7d780920ad8070fc0bd3f470ab13bfb5bfb28d0fdc257c04231c308ab6efc75639c1c12be19bcbc354348425ea8412313aa1b37bff199954ae88bcfec5e35f63bd8f5ded4d5c471dc5bd23451cb59fbb97b75af911d752f2f3b5877a423bb231dcc14528364d4bdac909a6d59b0a8fb2e634de2317fd25759a963e95aba95aefbcefb1c7be2f33e49f7ba2bf7234bb66e12697af76b127fea333b873bbbec9c5f4f3d35322193369f8eddbdacaa4671d47d11cc85449a5d6c5fd99e21cdb79623eb2d069fbf470af1f27e277a123ed2cbe0a9eb9413624719a8bc208397b7236f99bcb13c655fdb8faa42b203b5c9e5fb5db35df0f7de67a041434af8bc77fbde7bf6b9d105b35a12cce4097583dd832b8c5eff0246a4fe22bb23c115461ffa058c8a38377aef1e5959759c018a1de333694deb588d85bcf8cceeb5f5cf575f1445f7ea091745d1ed9ebd51ec67b246b1b7db4f8d5955f857bbc462217929ca296a44528a324db1242ccce0a915afac7d3fb7f11de00b9fee5573a4054ff9b7e0291a32895cb89b1126977bcb619bf668e53d1fbb235e7e2ff22ecc9be5cb9b3a7a7274f026cdf6717b071bc79b2d3571773e5504c761ab22dc2ee88efb26cb767f4daebc1d5df0c60eb632762f273eef8f78796b4fa967dfc731d6326879df3456346a793f66ac6bd0f23ecc58ddf0f2fecbe8ac2e6a3e2d7fbfda6a0f96ef48d32fe7b3efb36039d2f4efde3cc1baa6a8eef368bec082973793e60cdb8acc6a064b6934716cb38e31dc3fe2295ff9fb1dcc5bd13b8464f4a1d108015f056ab625bfd87d163c5563b2d0938fee3ce1bab7eee0f29493d7c9ea226b8bd65675e158d5bee6ca26759bf49544faeef70fcf4da64dffc6cbfbe3c9e73dbdf56649b396e0a9eefecd8f90cd769481db1e7942dd99a4770443dd9e00efbbf77de3768400fbddbb8f9f4be8cd2ff4f20e29b20abd69d263a8ca7771423f32a176248f24aa2318fc4b0ef447ba23f65579f9de901a1fe97e102fefb3e0e5bd1fa241e847cf82a76c0b3ebadfbd3c75c4bf2ec9bedd125367d2ec98ecdbb3ef7ba5d109dee3e5fd1b07ba698bf2bf7121e88efb6f55dd101575ef9b2a13ec6bc4be7fbb17dd711f06dfa5b446f9a102e4416eecfb21daa61edc90007010894433a61e5cf706f1953304116296401e50bfd4a13f88905a5f069f5a8ff84a67209eead978d77f80a7dc34ea70547dcf8ea5972ee8277d8da73ad244532d9f3fa42996cfff427bb010b3f3afd094cbe70fd1d4cbe7b73405f3f949b4470b99f6a8491c4077d407d2bdfed27bdd58533e2975b0506348d337cc68018a814a84ea38a005d1d7af49ea0309bde857eae8750de2298d499cac23e74b7fe3a511ff8d2599540d93da60d74ac3aea50eafe93406b88dc91c2f6badb48693f3772cc1cb6a6f7ed737d52f7796bc7619e321267450af6f3abdd7866292669afd668ebba4b5e129c106c8996373da9cf59b9080866dd2daa94315dbd45c1094e338ca71dc473f8efb3637a35f89e421994d6693d96436b7214f348232127921eb36994d6693d9649cf53ce3465dc813654c471977214fa4475ae485ba51a77d32b6fdd86c362edbd0ec8824fe2d7126cee382798afe0bc7f53a6947789225a687bdfef5badd6e36d7abdef46772561021a658eb337d329bcc26b3c96cb29bccc9495f7fa677b9b490172caafebb66a77d7da677b9683c2e9bcbe572b9602e97cbc6d269ed60fb91d96436994d66ab2d8be2f9b1d9787e7aaa8df35e705df57693b566f0b2fe1047b9abf5c1603056cb32f1d9093b6127ec84dd606ffa6037d8ed768361180cc6c4465f7fac5a8cc562b18654ff583408e85936d6cfc762b158b1b3c6f261c5582c168be562b1583cf0e8af06b16233982c2828e805191c55ffab4131994ce67af1b87605bd82828260349bcc26b3c96cb21a248bc1828282826a90cb6a500daa4132994cb6821a7d6d7f4cad5346fb9949b63f980cf54d2d0a74b3d56a2ddbad75ce7a5ab69f59eb557f5aadfa537f7eea0fcbca57b269d2dbd0a25956be52c6aef25b61b9fdc864b295cba53396c938994c06ab1d908bbb2f2e2d5fdfce3cc57253b627e46383c2fa396bfa6b07f31547c786d2db00437a716961c916873cd1e8b2ec67dfa24c2cdb6c89cb686536498de63291677daced5939672f2b235d7d235d9542dd6df930a1e133765916a856bb2c0bc4d5cba240310b14bb2c0be4ba1ab845ae06bc48c67a0dd98c76d652f463b19f1c20315a2df6d9979d99fef5f3134b1283c562b1582cb6c3c95af94aa491ddc155297adaf0b8987c12d311df116da4d67ea46063e3d4476b180cc66aede0a8ea41d61ab147ec1136c9cdb64ed8093b6127ecba6030d80de876bbc14ed70973c14a4cb895af44721bf244a38c7d62967ecca4027dfd9548d9b10d79a2914f2c488f7e86acc7eaffc462b11a9bd1328ec5b8582c966dc786aadebed56ab55868c151f5bd6597b498f0f4f8b85aaf56ab256b9974abd56a39adde5af5d6aab7560b56b262e52b91466e439ea8da2c0c26b3c96c329bccb6f29548a3902782d15a0a5e7ef47419b1ce03d3daabc2ea749ea20e839db01376c2ce9e1fa1d1e6fbbeefb33aa56f8525c8a2d0a02f9fdaeb48172d2c2b5fc93b4ab2ee8946351f1237724b72cbd1ce9acc06b3c960b26e04b2169695afe4895aa4fbb2aaee432d2c2b5fc93dd188c473d69ed0b7c2d212e2482391e7a596d24849a7676967cd4760c457be1269e4227a64e52b91b8fa3ed7884d6693d964369973ba0b8f7a1ce7715e8886382ec48dbe43965a8eb3356fa22bae56bb244e4c9115e9633e87f431e41025f7878424112539a28f7922a38779d25f32c7f4e083e4900e4822a28f79d317592911bdf72f231125392212bc1ff3de7b4f644482970455083dccafe0853ef45ead9bab7135aef6317d490c33d2558c69a4ab3a56ce76e37eb6766dfb3a30cfdaf675623e07914813996d3163feb128fb30a38e8e9ec55e46ba7219e9cabaf0a9ffb42acee5f8c467c6a7ae4a70aeccb938576e6597a73cb7b22dbbb22bb7f20eb9955b79074fb9f2bd256c5dd6655dae5afdde5bd56fb33467414bfba5f75a566e0b974589e46a2c2b9fad55f73a1dcb363cea28c9dd7b2bf762cb8db51be9caae912b8bc562b1b2cdc7bb7375b1582cd6f73a665576257f685c21f3676b255bd3f7b9eb75beadbd59241a411f8da093a00aa117fd0ade934822a3f75e441251923322bd2742dbf643e5c66e5a97db74bc6651a82b4c108d46bad209bd475777ec46bda2a5eb6eb1bbb15bb9acea85ea8d3a66f168d9d8dde8ad30a96d74877d1782bc60557a6651f66bdb5e9214ed7cfe40b2cd4b0bc54b7bdffebdf766dbbdf75ecc85f22ddbb89a26cf1a57e36a9eca3f689ee5193dbd12ae32eac40630761dedd6241289c65d5c3f1c9ac3a57befbd5723a1633aa6637a8aab330bae029f3aa69328a17a89fdf38414dbaef8c85dc1614177644177f8386a8b9c7c36cae3094dddd34b6b6b5686071218396ba95b0585e2245733b32debdabe82f6b81bd8f6391f4f5127364cd996b3f9d6b62aa0dcd353fa091565d2693a56f3f1f274ce695ccd4b8ec6742c16b3f9efe571daadf95e8fb3d99a9963b6988572b7e9b4d8ccaaf20f2882b69963342d8c6c93daac4a9ba0a2ecab403bb16db6ed9d6df38a8884cf7f656554452e1dd331caa38a5cdb1ad1585c619ae26ba28e4ea85b234177b8bb6b247412ba09fb1873b77ee9562ac2690017c15c15e2088fce98f96efbdfaebba2f6b7ab5e79b3c669a6797da3635ddb774df6a3b507dd67bd62dbfa645b6bbf9a5a08e2a917e2a9dac3599bd6510cf573c7751dee81d6d3618ed61eb99e39735fcfda537fb8551f1a4fad55a0ea468db2ed67ae522771776c6114f2af479345d9bf5c7cf74d2fc870afbe2f7cf4a4273d4f2fad167d337869ef0355d6fd99fbf7de7bab8daa4cd69ab6ad67c70a61e140a86f8bc50784f2a0db2d78005bb7352106fbf74ce20ec4a29c3e26b58bda7ea4a05f9ea2d8fe7851a74e9dbeb4cb8897ee7269239e7ae1f86bd77697751735d12054454d6edb188aee8be4cfc1991ca2449339f93b72c890ee8b8ce17da0fed0d3557d2056056a1254017ff72be40f9144429fbf238928c9097dce4fa47b4c82fae90a3f5d75a31eb57f1655bd137cbfcdb7d91cd85a10b19dbb1e8524db38db37ef1843e863e83ebf1d75ee5b4b7313342791912822289f1bbf996bde0da5591416a94aef9126fdf9ac6a068bc25fda648ab5d6b5cf66a2b78d9f9e2577f75207eeee5f493476307acda2f093469fb9cda2f00c56559626d385926fabd56ae5efc86be37a6e9ecafaf1e84dadb51e69ad47cfbd371aefedda2e946bcb17cacd33c9d53277e69c73cef9efc8847c5bf9b6f26de5dbcab795f308c77f2c0aff6cfc1ee6dcdd7f061a448368107e1fc500865a605e7f1dc160420cfa3b120cfdccaa488f3b788c458fbf16185b8c756d6c61e44c9bb6b5f1bfa98423ff6755a6cfef75d0c173234e07a5d731fdd7c1485738c8aaec0dff880343244e0b097adf0243825ecbe794bea54492399f89b435d2d22c0a7f919512ef2d4c7fa4856dfc9e68ac2b1c8445303f5ea0521ebe71c661e3fcc3c659884cc3c63996651b971f3ee2a5adab2bfca11107c562b1582c8683ac8ad3fafb4ca6ffb2aca90962b55c2f586c63d90fd0c6de77a48983b0f7a3c7deb3bc391a793f7a1746dfe19697984553aac24116c5f2a1f758460cc32f2f8f78895f2f7c04c3f0b3e09109a150f548ecf2123f099f8771cbfc649ef21e3ff5f0df2d3ccfe3462678b965553846719055e11745e18f99287ee1d7c6cf9ddee971a7c79d1e777adce971a7c79d1bdf3efc7a14fa3c6237bcc46f47d6c61cccc8c92c0a7fcbc8c12c0abfcbc8cd2c0aff17dbf86346dac68fdba03b300ea23b308e89f1d5c73174bff2750403f72b4f473074e405eae69ee5b99755951e3f879f835955cb63d2e4661b7fdeff7b9ef79f5589de7b0f06e643230e0ca9a343faef7544dfb2ea1ea68381218728e93a9887298d4a584613079546252c5f5d9fcf0671624890fb920b097224a8c2f7713f84f4df73644ecb97bee58bac32cd4bccc44bfc37dbaf94611bff0a2d9f5f16851f3f4cb4b3e9c80410071c3d0c382241154a0ff339a5877921735c1ee661c8219f458ddee58bac4a3f1ad991ae4263dedde8ac9d470af3a5cf81f9123944c9cb0fb90f43528b7a21734aef420eb15f22a9458dc8abe325bed996fefb154aff914494e4d8ff9ec8fdd2aff07d0b49c4fed79546bafae8c63196918a466a51a1118e5993e9fb621beb1169eaef3399fecbb2a6667b36de53abba2d8bc2efbd675381b6f1df9945adcc6bdbf8c7bcf8efebc6f0df16a659fcfa337d59932d6de3b366bbfd006d1cb4f158b7d6df6732fdef5c63b9c67074f0579b45e17751c6f8f1ebd4d9695158077f8df97d4b92b9062cd629312af5d2af6de3a35f5fc7f541e95712878e405ca09f63e3a55b6bade5acb5960482e3f42ba537640d7d1bfa3f28cdb14ebf090994d858479b4e70ec987e547513451b5a785400f5a6f1698aa1f8fccdbbb5fe3e93896a7dfbc1d124bdcfdd7b494d693555e7779d49eddc4773bd403c3c3c33269536ab369b1f5b8552672fc8e05f6795098f8e194fd1cde9b8335e7a8d971f6c01f0d8f549aab2b1323465fafa23e5d1c1d787f18f008e5dbf449f85a66252305fff52cdf2b55a1e2e946777af4b2f3e1d2f4480a62a10b4f4af2e2f6b8ffaaa22d41ef58890daa3c2aa08fe5abfd8e09510d01dbef7115e3a10345591d0f2557b541c217879ff7aa4f6a8b22a02acf6a84baa084cd01dfeb0590763dd756629cd36bac31f1ff93c4d2bdd95345d5e03db05173c3ac1e557be22a1a9ca0212e971d498b19e414b7f98b192516b95f957262a5967404b7f7f214da7a22dc27f8122dbe5dde5ebe8f2ef2977a9bb8534ebb3bc593ff4787442fd9577a125cb3f8b99813c3ac0dd2befe94a59c85f21fdb9cfac636c9fb2fd47a359d798c5505d87a72ae05fd678adb4529e95920a509e8daf6569a016e1ec888947ff3d5a6badb5fe8f5a53a6498729a4d49d56d794fe0d9f7b8d8d63ee725c0a5efa2529376a8ed3f4de12bcbc94d424b57f3911d8ae7cb366d393c3015f23c4067f8426637cb1c1f701fecd0836d864834da244d9e0a700d21a131e08a3e7250d6f2c6244932f987002871f1dd208638a0176f83a8cd80e5fe4a9990f7c1b710909363882e8a30d2f70b0451a35b8c5e8cd6bf08ec6a7755c7557f55a01ba64be52d9157c15682a4b79ea3e3608bea9837b7326bf196ed065835fe329bab38411a16d8eb0c1b729c153e1838f4379d40d7e37e29ba3eae7913a0a75c341bb3e35f506bf0d3e254d21d4b6653eb764c68bc627f3666ec990d97573e225b73cf5e40eaea2ab3afe5032aa68a520882f9cace0032b30b67d6751b16d880455b46635eb551fcdaa7c2c3981112bc40843892e56967e5165dbbc2dcef154f8f681b0b0b2edbfb064db97c153a4212d9ac61b4f10018225580ca1c3cac660675bbdeb8ca764de7e5963552ad8e00c364210658b19d85637486c8b6bb6012a08024889126ce1851b2bebc5b6ff81608bb62de2890d82af3d05bec8537483ff95b1c17701dfe429dac4882536f8a1a768cf069b8c80860dfe8ca7c20dda7ce5a6b4c7079b246d3edf9ac52ae2c81eff7a6adce378cdf84ccda2fd54208ba21be422c8c57ab560aed84b7663835914dd1a246f5decdfd9ffda04ff7fd42c6f0d20daea35cc862dfe15454a532cb77d3ae596556916cb8b1d7eb0c350b73ce5b40fdf03c751b3b40ef8a666812f925a47b7ee06bf02b158db0449dd2235cbcbaa59ad9a55e52a02245be6afa746d8324f4726c85c0e67dd853cd18854fa56585a5c5eded41b84a9d5ac1bac313f9a4cd003c77c820f7ee6f1f2f414f8f54d90cc27cdcb9a69565557f5f3d9c1a859da346a9745d58f79edfa30b05dff25b6ebbbd46f99ed4ad367fd926dd727dd76fdd14ffd106bd7ef5abbbe76edfaf9b5eb635817dbf5ef58c3e7b07da77c6686ed2adef68d7bb79822d6de304e4fa4357d3d0a115da74658ea43b5d6ba73986ba259a4757e3d0ad1b1312ec14fcac3ee949b7af504cc76ab3f2efeaa357e1fcd1f371863c0b5be2e83a3801f06abf58307c022adbf6e1dfaba433326d5a7daee2d3d8afbb8cd4fef711f18a5c1caed94f643ff8d973f345982e7188dcf4bf09446e2bddb18ee16526e3fcff33cfd45a31b7177f96bd4f2addce4eef1975cdd1bf1f27e0bf9a5bfb19d25cdcee5467009abaeab6eb07d8c6facca7b1c759f9e7ed29acdcf55d6da927e92d587db99ac50bcbca527e1ab5fa164b767f5f1128a7eb3fad83459a1f899c98fec3890d424b522925a9447d3feddeb37cbadfdf3ad7bb3de6a94aeab9d7e8bdfacdb8298cca116650a29b7fd6c6df776eceacfadce44dbf4b34486bcf0d73f9fe91ec57d5cb57a024651a7f7c41ccaa6eeb22af0afa9bf0b92a4c965e4b4aa0a645197f47eeb8f887453d61e4f694f44475a97bce6804579447a8f34de782dffc35325f2fef6992532fbb41d078be733189333296d73653bcd77e88efb66687bb94b4f7a3dbaa0ffc74d175fe95128c1cbeb4bbeef712cd96e05f52d6a791f66f418d0f2fecb7d97d17f767c567b502ac2cadf77264ecb2bd699eceba3fe7a5aadb71d9de0f53467d8fa5bf08d6d31bd95d164317194467fe34e2a75231348baf3bef3480d94a3726bb2f68cb0bbbcbcfe82edd6cabfce3ce54cf4d75ab5a769e7b578cda1891654368e4d9b6851db9e15b98f7bf5846241a940a1ee1bbae37e0783cface7e9dee3d71485ba0f0a48c09c2f79244b897e70050e44c23d5d8151b6880b3676d826a57da3a98cefa69e14759fde25d2a8e747caa3910921dbe7b22bdbf72f168d50c0118d16f043345a80c7f3c3a2ee87ee8d45dd7ad6b3c75394962e64666b1f28fb3ea565d2b4b47dff42f930796bd7c75337c4dad4032fc261108470ebb9bbbbff0f1b1f23784a8729b456a4b55f07c2e3aa5f6ea414e53e7874c62cddb67dcfb95bfd7ef7e6cc765cb9bb9778825e5137def0abee7d7402102fad2772f2993a562a01195990799017acf7d6be7561f474151a81fe2222a11ffd0ade8bc8d1877ef58266651bb63593942f8c6d9fcc20a86325a19bf89ad02ab3a4c7a459565badd5d494e5bfe9fb6a957d3292d65a9362f46b1752cc687f6a2f2e265acdcc9ab6867bee1db34debef3399fecbb2a6266653d3b15aad86abd99cbb66bb71a6172dcb36fdd2307cdeb3a776efc5e7e9e5bdb8864fdc834fdce3a98af1bdb56cb341b9e528d65a2ec652e26ab55a59636391881e8f18d018f830307a231c1ac545d73db6ad7d4fc10072ff1726c6c503d2fcd3d66cb6d76cf2bd921fc98b117dcb8823227574c027bdcee85d381f5bcc4c461b811c89237a21c12afa1cd28bc8214aea0f217d25735c5ef42272c8086654c2bdbe9c8bab798ac260d74b7341b62c452f4dd8d0ca91c8f4371e33e2a0d1886bf84c61e5ebe3512cc780624c2e3f5f499f5615f3cdf20cfc562bb760682b2fc7722c86c91fb1245e56d2aeacd013e798972b2c2b2b2b2cffbdc732e2e01f29e0b07ca4cd873fece12ccbb39c99784abffd4ccb3cf42ccbdad2ad9aa7eafeea615d0307b6c983962fc94c233ef1cda2ec68c435ec8281f6bd637c669ecd4a1c649f1bc5f03dcbd7110c60e961f848b0e4427a7ce29b55bdbc5d79fbd88dccb2aa180f4813036dabb58ebdbc7ccb88f342eae8c0bce875c01f7ddd2f235dcd4a248e0b0996de85247a97cf11bd0b0c494449cecbbb3c919827bde84b64cee86148222f4556485ede342ac1ffbd3c075b81f91cd3c3c49060e9491f7a13c991435e48b044822a849ef42b78eff22eefbd89e4601645f36cc6aa2dec537be82dc8a8b2b7c94181c564b34d3bdd65c432d29d679996cf6ae218892c755cc8fc937f44a392736dadbfcf64fa2f4b775da0eefb5a7f9fc9f45f96353492f56a452788d1d2bebfa4a8e5eccadaa69fd054957939faaa84d75cf83c5da76b2472f2650cbdcbe8fd88ae2c4e1430f4faf47a4953eb33a649e4779edb7e5f08f426604da648c244b238fec63d1ca3adbd8c235babd56af5a9d5d4d241ad58cc66da84b8f04d7dea98d51e59f39c168e7425db7ad641fe9655e92057cba563b5d6daa1da3ce5bad6bc556dbada6aed56fd91dce5658d83e2d6559ac566669e61ad69fb8ae15dd1e9ed05fcf39ffe131f66241f1cebea8e5447e6ff75c63f3d38d295cc77308e4f1aff4de3094714c97ff173fe4519f1898c5ee6ff2f99737af24972c8481211bdf8a72fb2ba7117df45f432bf820b09def77ef4e2cbbc48f4a15f614482f73ff422d1af307a975f41f42fe4100780519bb156a27721892811e5882f22879c5efc21ff324f57a1cf23f53c73377357e65d46fc1cf4e4491cf30f50bd7db6665ed6c631da9afdb1362b1a2fcba25ca38ed11d363ff774040378ff3309de985ab32a1c6fdf9adefe655995e8ed5fab6331f62d9055c1dc977d8d41f0f58803923a3ae1935ea78326249992441b35100268c9cafcd60b93354a1df8461ec1b71d35c8d8a2c6351b3b8922108bc5e28048d3648b344b9c000917dc40882a33c0411469b08d66c4355cc33ea756abca67e656eb879f2d3a00051740043102c2882e8070a3c666635b299e3e1045d109d7163fa8a124b1add63a89a2d8036c87e7cf0edfc5890f49ecb00b1d76088613d7941dfe082175f2c3b9435cf3e186f8ccdca2a9a7f0549ec23064028d1d76a10478ac180376c4112d92b8a12433ed7280894d130e54c9a249cb056f34c1a105a630fc6046c34af91facd0d0d0d094e506d8d8a2149ddb16dfc564c3125bfc50bc81872dde30c6931a16c85c2c5043810b8cf8a2e78b296c788fe64443133ef7810fa2490d66ec68b28117184f238aa5288a6e6c512cc924726842841120b88042d411459a31bb6868d6185fcc41163b2cc30901d0dea0526331c1b1c3ff262c2d523a90d084069e2b6834250d136c549a1a4ca9010e44a0434b42041ba0a12949539be167da99695c10dfa877f014a56a6cf1af28e2a0892dd27090032d4ea14f9903099f31c2604111573cf1915d631b697841b301155e908044693750e2467303881b10d029bc42fc1903768b010d5e78408786a45e9ec8318cc2045b145f8b9a4421832d761185085bfc9f694243638b58d4d86c1d28638a2ea818010ad2a8d1209e9c48c137fc43733addf6289ec61327e5e6830d0430171851592d539c4e220d0dad8a123b6aab0a24388ce146134f8208e18d1791460a2af807dff0cf8d579a1a5d3cc9ad700cc3303c391182f04402e7e2e1e6c488337cd426a8c09c6a469a50043b61e818c3300cc3b089273b6c09c3d3781a9d14a10386e197e369070acd7b228d28866158ab70b2c77114476e1c21a0434f103ab060081fd8c8c136bf2288d8e189c43f3424bef5f0b1beeb76f0cec89123ea77495c858355bf5be2a9ba2b1d3b9a7eed54f18300b628ca3c0820fc07b4410001842f41000184a73b3e724084931deed8615864258a20782b7c329683273e50451b2cd0618a95f9e1807452621cff7412a20a2986700960fc4c1200e287315e6b9c6aa8e1060b0d250d4dcd8a530811e8f84a9a5a8e4b5e97863a79a2862931787282316ab8c1783a857fbe8e6c51144fa2e843a583288aa2b8840db6481245512cf51645713c8d271a9a1388335cb0849e469e98e286179c4164b1c3d75123c40e7f041b1fa7079cecf04b08ffc70f3bfc14ce0f40d9218dda3eb74e742cc3cfb4c3dfe14a280a439a0f5bb043198634343948d94287283ad8a2b8c537e9f0648b1f7a2a843f9166dda7b0646213d1fce8740a638b7fc5d739ccb6f8a2ef445386a50cde3b8da7130e4fcc9c66507678fa913c9d4e38f420024d189e685630c4e81486a0c60b9010310b8216850d461a320cc3560c02b045710c431a243b1c618b279a07684e6ae881d2046de34fef8de338beccd3d109636ba7d5c41665ca07ffda6e9407dd22bc796b1bfc7b82b866da16e54137f8f7c5ba3c97e629f0efecca6ecc533468837f615695801670b1c59412081133b2024378f0af8be6c1f71eafd9288f7a2b72430e42407b1da10310112bf01dc853948d0dbe7519b141960dea78f0ed11577df6081b03dfcaec6cc7836f69f604dfd6c09a0f74e08c1a8678e38d3256600d3608ea0d82efad2251a88003593c5943082a45acc0f797a7e81a1b7c9ff96cf09d89d3e03ab7203638da200854aad420f09d4579f0b84af78026281bfc2aab33f02b0dfc8a044d611a2dc906777ec06183a20d7ef0e05723e0e9c1afb01a13e22acd7254fd9a3769950dba013e1010c4300c031a1ffc1fb62f421bcc343354659aef22477a7aa0810742c0c64b8b155865839f5b35a408a40b76f9b72ccbb20c21045c73c1360dcda6a1a1a1a1d9b1c307257ec7872c5ea043473dad4ab37a48b2452bb678832dbec853363b0c795862cbfc95e961035be6459e426d1040e0e103fba43ff8002803edec1074e23670a23fbbcaac0adfcc1f7f64d9e608224f115b4686abc1532752a767873c51b844d8e19bc29d28a2d8e1cf943fecb00bfc23ca9c8a0071c612b41754714a0163a5c6364d47b4c17a6551c492294856e6d300669b233421c11461886f384a78a23d42363814356c192a36fef1542873c6136f24f1406c0a100568f0c2034cb8e106074c4033031a050d646446fc836f228e827fbcac95db7942b6432c00f0a8d79e5ad9a8ffc4d8a86fa35028d487a8dfb962004e7448d871f2448e1d5e547dbd461f488c108da1b86384082e197109fda4802fbe078aa08c8c8ccc0e0e38ea586ae326850b368e4c1963656aa06d7e982241818c48b3534306c0e7c8f1df06768e1ce2e7c8f1339e1a3fc797355645c5c8011334d8a20c259634b1ca91c6cee1a48720768e1c391e488effe1399ee6e081b641123e9937c30f65c697ca43c685eeb83bfc1afee9bdf0241386e5972569867fd22dad1392baa575b811dca66685e1aa86db23e1d33a5e0a3125e0ee90d43f2e94070a7453ba43e6c1ff4e0fbeb6e0bf501e1a047407086ad689344dac2d439afac82a244deddad5c90e38d8a398a3b6c25286442383c40537143103308c8c71031a32ef853261588aa2e83a9127ea2e1a325c71a28c13696236bc48011741e4d00228bc38430648c9164eb0c0c5fa00f0afff3f4ffdbb788a65ff7ff8ff658dcd4dd0fefdffc353e3ffa7f00fe4ff77ce60edf7f6ffffd7d63f9525b6f8f7746a52801ca8364d0960c78c1db60c01b68c4ce8da41ac2ab7386e7409696e642d2a61c5156a984049951e255444717cd2acfb1f24336d8a14a729514a53c8e425a342c4088ab82d3143cba0407c2f1cb32bb7c27067ca1154f8d271c28c2aac294690649cc2fd0b9010c91f1d8def5f0a0942d89192c5141f03c0e0e189266c6a1891b2801e7eb84181040e7c5c2bf3b7f826a549f9c9db1c618f4dbc4eb9f537ae59569569220982608e1ca4293ef89e38e633d3328f28fe9322697e5bfc7fd214c97c92df383a016a51cb2e4fc93c357d8cb0c1e7c9ae13995b547f3b3f460020fecceb99ffacd833efe2a9bc677e66e6cb9937790afc990f5dab993f02844d55e06baaa2ab6f06c7aaf06dfc930d94b881808c0d102165657e195a068aa091c4b727334f7572430de4c6374f89e401bef0f1328a07afbf737be0c17bf0a5076ff254f81e7ce8c1531164715241032ece2aa6e0e2ec81951b8c99ade8c8040f489baf66db589566d97c134e74e2ef84ffef85e318bea9595aa7d260c7969109c9b1049b6d8ed0862823734e018399a7fadbd9e4bb983c25f3e4874f7e497e0df9369e1a6df26facd8e497e0a9954d7e8ea7c0271f08f93f3c253ef92938f9b44a0736f8b749952c36c8b3c6079aac61dba9c110a52a04201a4cd1430d35a8387718529512307c1a65831f8ebad2db7eabca2d4d8a20087631039e2a68e0038f4ca34b9e78458e1c41eb8012358050100419770d17e561777da03166c082eecb52683337340882201a413b4ced90a6810229d250830768053a56e0daa05884091d806a3b4861431055c840535ad55442c005953576c8ed908a0d76f82ee19bcee8d9e1876818b1c32d4a10ac64b44c89420a33745ab0c3ffc27731838a1dfa3c9d75409c9951c6193aac80043a081145ca6c877fc326528276e882efdbe08c8a2d6c2086cb8664cacafc0d82aacff4b14d1b1c639be50af8f774f2c34879705b147fd49042068725325118ae84618aee4b060a4e64bca00065e4402b838a1cb48c347afc9860e787cacee7123c94c8f08049bcb0152421c93c08822018866118cae08d183a038149a454bca2d0a932048c0c1f316add3240b2439b16c3f0a9fbd8218cc562e510866118cea8d86128f321f8616832f50e9f7a4a260c4551146564643e8c304210c3076f836f0a5f8c2136f8334dc4f06283afc35306d860a42fa8740cb85545eb14aa01010000000083150020200c0a0645c201892046b16e1a14000e718c5a6e5a2449845912c428a58c31860002000808c80c8890cc56010ec6f301688a71f3985cc6a5aa2a5517b4de38b917ba0b4124b5709cd68d5bbee7ea1d3598d8534967c743a80e7f07abc6b4770098c295492e3850138b5ae4910b00e1af20b7dfd617ab58c11ca1cd554bcb1ba69aaaaa84899d7379266054abe79d81130aa24c6d936146f6cd57523ab55d938352f6d334b0606376a908712421a6ca5ac88bbb876513b4a51d13357d792ab6b9052f1177302d6874260f9415fe11b6517f58ff52eaff135419127e65efd5f040ae2e3e0f9727d220499f9e1960d947ec86268e4d57e9ed13db74f842502fd0008f20ab9cd2d9d1747ad66e1b1e8fb9214645643c820612758590f6e3ba43826bbac69d60bb1ca1a22c5ba407abd25e78d883e2a8fc394d4d4b4dc3332c59dac38792ce1ca650dc2d0fc33477ec24b67370d908904be27aa6b8d8562866cd93d97a8da32add23c749568370b96cb8ecf62ce3a01d01a6dda23b3cf13d59549d7f3bec5569211e276b1ccd9782b5947f87533e610000434f5507d326441955a728649e041312b65bef576d5c9c4e9e1058e4b9f69083c11e0d1107e80d86f46c18f5c658c4a28287c951c84ee2bcea530f538b55d412909c8aa56b27ab00619039ad32bb5705b92cada0d10ce63ee4f472073776763bfc99573255f7d8ecacb62b1d69fabca74303fcdd2f1f90b47c66e2ec87ad480d6d7d4d96dac378f69c8b717b47d89dc5f20bbf7822bac8a203810eeda4a85184b6bccb932e884b6f075b3bc1c75341f82293d18a10c6780e88f73741b016841c81b20da902803d184b9a5c87b45b09439d595c1f299e97f9c84500fed0557e770e87a099980900d795260d3b1245b08fb4a7554c261c1670ea66b5033310882be51a58a461d026f96b2120c9fa8fc8c52a3e3d20ed32804ec63f7686c4b6f7f775f600f0face3f5e5f1c8bc2350fc0b318dc3b28c2edb24e8e2e4512ea658e59e8a03f8b77149c8def7ae5d781d06f06b14eeb208234a28de6388976faeac6acea02f16d39409ecc023f5c3b31ead43aeb1f4a8de7047742fa27245c51d79c6641fe0ac6dfc36e9a4d6bd8152d19a7f8c09ad30846e41a70a93bf54c75c2120d877554595d2a65585a6aa123764e47d51202cea65f1e7bafd1c3f22d81f6b419ba4086c0a6959674999b0f7502ba105b15118a612995e31574eadf197b3bf5039ba3170ec0c1908465e54c7b3809fa43097a71d705c4779a704085a0716ed2a823a573cd7dc280ce21722b2ab68cc7d7b7694f375f01b29f0c8a0e0c1479de6b8ff5e737a0ea49b738c8cde791b3fdb9d90d41ec32d796118ba7ad2da198a5c1bb90cf45f779676de5b7adec22d1f7116a3aaa2c661f2507e78fb01539cbf7ac23582192874b789d63f4ced942c799b93383b0938867e6ad298e66feb8a0344201e783fc619ee50e5c23de78a6ca1cf3fe75c17e6f74c84e786301a9ed0a23f2977af13f6776daa4dfd9745721ad751b5bf5eeeebaa11567e9dfc3b83ec6862d08efb00edaaf6ae846b1301ace82bb191384e0e53cd726eb7d24e488a8d809af48d6d90113854d04109040e3f5d303072ea571f030c18dfe89e37c8822cc7489db58838f0876231010acb405aa37253351feff853ffd96c59909404b40a68742370611e0c4715595224444f094995ec61dfb1e0559f1fab33852d283eb9ebe21a698e738c8be00a5c5c420031c020b4ccc11337dced34878bc5e3c3bcfac8808391b68c253ae9b5697dccc144f4f3553ec2ebe58925c0c5994719243a91a91db134d571ef291ba11a9d64aa2834f1e978b0f82183d266930436dd4af582b11bf98b8da55bfe2276988b894a4e40c4af1c56c9382a92728d2097f2f7069409c65ccba318df9108954df86fbd31e4bcda01acc6023173ae46be3259c5723cba842c5167ad59241cf32e0bba3a018a5ab0aeee09c66d1fda7dc5608665c6f342ef8e2b539252256d888711cb97264dbc77ddcb18f1a51a5f40e8208305de77b2a339b130d71f2be9ec6400cc3034fe32f6700f2ab498ec2ade1374a2fa745f37709d54e22ca5d5d3802670db2622342c1fc76ce1d05826a565096012af7d977538331161a68a47c14555615e18c865c30b4cbe3879cb0ed0646d8244a2dda5a74a9b09a40987d462d6e9db3ff248c77c58812bb909e803f8d83dd09e428dcc7e4cdc9243026e7fe008e32b0427190ce6aca92cc28de64eb452dc5e76ec26a90ab41851a7b83b21e7b7d43361c81d6421ff059d876123fae9f150558562279fe96043c24d804441ce04a299d2dcb4ce180a10ba8ab3faebf1215f40173a80668c314c5909b6865801cb8343f87bcba494f9d628068e9e427246a22e6c348218d65941095c33cac643b0a5ca08254e72e87ebd15d9030dd15ba1fc78aef8096bb320366fa631ba643497cf15332ed43d9e14c0a870cbeaf2d647cdeaf283142f0b3b3901f589d2e15124bd556d9b360a080bc0b6250327084683432a9711a3c7d858b42c4915e8e11e6e6a1cdf6179eec372a6c8f8fd1cba27b77deb731ee5d136040e40071b3931b20bbee7fde7c5bde5c3f824b8c490ef2490259df5e7b923683813ab13e56b736ffd0582ae419cbc94d1e24277e43cd739ff3ab5d965d5739240752f8900e7e74140be467da4d34921bfc5b78d13385ca14a4678ec1dd48e8fa9a53454fd8b05aad5dcd0477938b723e3a58c30dfa1cbce8f992970ade136d2088a67e6120a6c056b12aeb23c5b529079279d9b063c299cff106dd4513a6ecbea31ec40cd026f8335664418ed6efb44495efcc012231ebc10b812982c2b4fb2fd57e0aeaec89d67c57d13fc00ec2f9be2b2121e50ce70a18ff1abe8883fb46a9d33b942547d78308ada299814222e5093eb2fae4b8d29212f8f813b49e3a606960a68a905aa9544e76465afe042f53e709aecaf566244f40b6d4719cf1c3de39e57fe9b59528617dd84031a8dd0b889640da3b2cda7bc5869a3cd30e637288aa677ab2ef22b252126066282e42b339203a633b360c2b40c1a2f384079f989806895f203aa6cfbac8e42b18370dc6c55494005a86091886e0ab16250dea1bbb2c0ad95800e3bb783b2d1c40ef40bfd2c9a3b3522de2a0ba6c07ac2548d65c76eeaaa5764e29e4a851227236dccfe1b7fd622ac71dca8a3a20b31b64d2c49fc55263cbe764a53f8da3c83dbf7a0d165475d08703cdc0ee6003e0c6e239b23eaa9d706c0d3d380c5eb1148e39c9611e875414b1861339e2d54a91a70db7bcdcb480c4bc6c6a14fb1b308642b7cc8cb2728f88ed023471e804699ddcc9a9350147d876929070fea9411964ffdd00cbb2eda2e8e21e39594302012b3db21dfa7ed451a21dd3db185c1bb2f90ef182085c899c4efe3778de67a8c38c9bf0247de200b5a9668d7e1f978548cda2ea8fb3cb230b349fe54ce96ba9981beeca3f5abf42781399326ff447a4641121c4f5427c1ab90dbaa3f4d38ffd9e63b5740f5452e22ad35abb475c5e12be14b4b9b297dc4aa1f8fbf97210ab41ae6d21f0600c922c88616d3a8cebf2e14e42f30b49f41fd9fe3a7980a2a03beb0001e27e7c3858fd2cf0de495ac0cab5070df348aca80e94e260841e892f9c08220a8b447a4342740f325ddd756769ee8a67583139f1fdbb7c4592c6c449e83380ff79929720010a5cc623ea01a20de5cf0f25dcb09bcbf3afd8f89a1e3eb6a65763890d5cb9c672f71a8f57037939b066adbc6675d86cf6d4a77ea7805b326c4af66816dd0464b1d621764d1cad17b7c6065a4af5eb4d15122d668e929052c3c0033a54bf02ddb98a2f1074925c9429f607ae2d7dbaec580a9ff6d8d911eab66d7c7a357ba1faa6a9fb92461f7d0476ce2e5d988d1a2159a7e5f9054738c5e2808e006425fb4f8abc586a41653787d08adbc5b884165a95e1b98c633c715758436c2de432b8bac780e55ac41897645822b8f4ed7271508e0c933f901b824dc44ffae323aee8c65e2f30d69e619f1b885a4785e9da47bf1bbef98691e410161044eeddca5179bccd755ad8e684fd44260dc9c8c526b7837b8826d00e81c400dcfe6f738947344d65102e537bad4eb7fd81da0d37f986ed127373ccf3c0ecb832f91064846d276cbdc8f6c872f69e864bddb047b88f8a52c21bd43e59762214cafa17fa0d954aba3ec7b525550a44e9d177244acb0fa3b7f78b146d2c9ee05c680b6fd9205c2b766523217680d133a0426528f191c0381ec5d53fc2a30064997d850cd8f9e8816dc073a2657809daa5cfcf11a2276743f399d60c8421f4615f513170990fcd897b140a84ba3748a6908ef418dfea6685c33792bde8828f69574f876acda44f1f9363674175f4276e05fb3853dfd957c2b4ba3badd8287595996b0f7dea5dd2633f23402a4b8ae92d2a194b4d94f7a589feb5681e5064cdfe8f116904961e78722c43c23222942d1e39ba6eec26b31f5b64b1b687b0bdbc82f141697608b410a34d5f3e8c21156ade4a9d74d0c07b1f166d48e38967e72a22524dc1c07e0d79f99cda13020e87d646d0c0415fc0381e4dc7ee0cc03d9d60f53bf1799a27304521927c72c21d02a3f54dc9678aff06e2effa9830bafd049b4c74d6d4569f28d45495eebdae19ccae4c4c17743d02682ce897a3d13640c9bed0eeb3cf51c06b27ce4ab2bd3cd2c0c77d0ca549cbf5e272c0a1461f1990439c8bb12f426495aba23759f1524fec01f2e8c5d26ccb1fef58728d2a4bf3e6a1e63f8e4979793b7c275744bb9617ef44d5da7ff11d98a876b326507ba9d920694fb3ba01f3f7499d1bce07ff170066b1d5611062741b136567ca42136695553300cc6f68a289b5d44d34dbf58d28a4f04b2a277932c6774972824f34ce127caeb74cd288e0f21f28068478cbb6c9ae7c3f70b58222584d64f5ffc56e4d8ac03e89c354715b96f5d6ee3c10768f968e8205c1d398a74387cfdca60fe8a60c28e87cf2d8c95e8bfc28d059455570f74ea6e68c488c538400cdbd12a0f4f80d3a5b9fc78576f56de9f28bdc8b7f11619ef6839194bcc80e470c0ac30cbb57d70ea8217e6f774929fed1809d1095ff3c1fa3e7ada77276647338ac500c3ab345016cbf7d38fcdb79947855a66c140de6926a7d440e4102c3f57d2904eb20850cef56ea290d588deeebdebbc68acf7d50f030e4815dddd2850d6c73fe44038b6ed4c0a275b28fd0b6e60fbdc2e53286f7f02e7f29a86ef98d5efcbe94f59f1b511e787ff806904a541525f341056c6a452ab77323070fdf511b7be3df7f501d47a56f7351ea8da514a22bcee9b63a7d40bc0fdd8f7c7715af154d086da77a694e2c3bb71d8ccc9280477f101ca9788ecdb575386e6f56a745d39614f5b5becb06840a575674c4cea34a5c007408accf8c61d8058dc20c1a05eeb18498ef0b4d210de60cee1c13a1a1347fcdb770a0137573500c1fb29b237db898bd1ea339a7de47db98aaf344c619a01b643ee5c73614b0c0181efb1636df91e246414aff6dba7ee6a542fe50335ae225a23ff9c92151d0532b4e4bbc4e85f74c4b41a32ca69337d6102df6ca3f83c7d39b55d4f7d0a50d24542ed3cf70cbc93556b78cebbe909a786b79aea84a0515da9869f28e9987b5657fe410900af7597a4d8cf089fb459b78e1ca24cfeba7bcc891c072d90cb6902a1d51f2b79f7781ed687c70e5458b6450f5e4824b389e2cdd219f3699a61b7c0ad16d1db74e5285a7f11c4c5ac9e2957b88c8fb89dabb7c7e5c205a28a64c3037d5c07b775b20f7f129bb26af215e0882875743329dc312a54b11961b9fe08042158e1aff587b3121cf039b72bb3ce4f6e57070d456897795a15cb32b66c920ea1370a9c09b1769adcca0bafbfa01afecaf0a750da9dfae6401f62a507973b060681db47921d418457f1ba1da525726c2fc0e146a4aa201737d48a9419cea33bda48127e271601e9d689ca66b8e2fcadf007567ea8944a5d99d94a0143e29e18ae303019f47bcbb65d52612e530625cac49ec8661112f9c94a6eb7e93085f39cae0406c0a0efeae21790f76471bfdb06334383cc9861430f0369183075be84af207c9f20a58a76d598522f41f1ffa980544bc85bca2b03a517ec27bf571bb4b522a1a22df1eae73f3ea3226770143242d420bbe6533c4e0f138a703154b09cb9a55971d26843a9f987e4fda8d5ed90e780929e635c4d36ce60976b9eed95b492842d460342b766d54f7deb49a2523aa96b3196a82d24534a1cbd36834e46633d01599e04e54701d11552e43b5cbdda7b45090c3a37eb9d517b8dcd65f6254d2156cfd5f530100436833f8710c171b933aa6bdefafaf792914076f685c990a225734cfe4684632cc335e6c8e0d8f43c944482ed91d4521f6504c3fe8e3da0ec86fcaa40e90645ed5786390566a4b366fdb864dcd6cfa764459756605c33da4e30be17e72fbf9924bfe54107546da0e5314863eb8321c069e8fb1d125c8b565e80815dda5445bf8c03911e59f044a5dfa3ee44d0ff1d04dca6ff6c325cb792283fa7bcb4b2a369f5ac2d7bbe3e51d17130383762bb5ee309bee01568d53493af9931547220114efb9d01677981d7376ed9f6947b63473f7ced280abe9c1f2081adf5960d84f20169e8f7edbcaa821648f162f92f46625a3069bcd1a9b695c4f3957736d6af25dd531e8318132139db2c29488920ce776f95b027eb74cc7062cda0ad73a45ade22514bb567e305de23c06eadfe4dc6e8e7ce65e17f06a3a7a2a8ff23d0b06b81d3129377e404a6afeae9020a099f62c63c0de2d950b42af5c2045d8c7c088a5f543ee80e49a569a4313a2fe1643342db5501939c6e014b16f1422e4d6fd818f93e0ae5fd3e3dabd0fd28a6e439b0aced4dabaa71f342fafcf265ce442f6beb30c3abafe1880295ee5c7d681e35b7175a67205fcb5d02c0926941ae4dcd96390c0c49fae0e637f3b2dc7008ea28e6e9c90a1ff6e0b990c229e21c20d4c40a2b47ef8b7842e20bf3b636084e4086eb0f0d91cfb238ab1e1ecd07c7cfc4f03a2ba4d209cb12eea0ba1d64305872b14df71f91fc6601e2adf8efa0e660242a2b236093e337ec3f89439c2ae478c5e65f093c146dc325d8de3117adf3f72a3f68ddce8f61f27265d3a02dde4d33b8ea2a77d4771530fd54eab9b89978cd2ebbea3fb5e269b76e0a3ba232f414e3c3b4e5ed3320ea85dcde7768eac3741454cb202a23af4a7e888b41273f0be6f1ae2be1916b81729cee5838efc6e63d34d2c8b130362173739403560183900296e297609a38c0d90ce065c23bcee2af6d70589f2081a8937c69628c235db3f9bc36dccb4aa54ac5c133cb507da32be530391bb4ca275bc92afd525c1cc8c3401ccf8445cabce144538da5589f5f7e0ea006578f15f767db431f61b65cb1efe32df28e47622302007eddbb95d3808bed7ecd521d27cd3b3a9448424e3e2f3ede41af633476ce1cdfe14db2f104d53a48701d931c0dc9f8f8a134524eb409802948a993cea6bc372999a9a200be794675222145d26b79f663c6bcee1b682f334bb9cca6c3638e54f9031370f679947a5cf3c271ac39aa699967a5b8cad39cdc0c7d38c88583858a206eb69685c3f0a8861e74c565c420a6ccad162609140c8d0faf6a49e2e726937206578d4204b79ef6d942634b4346f24e6b2dd56a8ba4b440221dcd78febd63b9af5dab4ff1f9a1c589fa18d39e27fe0266fd079676806e5e15d1872025ce7d2d26e027bbed212933fa5563f3b51c53b07eb0a2bb2821392bb855acfb8c117da9590c20375f0429bd995fe9b88bf791d96e6fec59dd8dd8f62f31faca43c357d03daa82988800dd8079d9a4e9c90452f39a06a3c917df48d49f727432c34a236ccac239a892290668234bb73a7de3679da51ce9f66663ad5fbd4da3709f2ede15affd276cea706a44a295131340e8b68bb4fb4017290f18131649200f8a7068a1e4651209c98ea4242a44a4440b5f0399aabaa04544ba82a8f08fd399a69ab3e2c40350bcb2cb6f3318a2303aa5dda44297a0f03d5d09df641b25254a10dc74040352c4c4cb8eedf32e5f4e3def4e44012543342437b22dc33df9d96c26996504d37a7be217b4108846a4cfc54b3f49c6befb2bb09d5f4cb19f66678defb56489b8011ca87d9503725fed115af98b5a9335c637474188f42bf26c880bc303d8edd08b777115cd186c161606412405c4ac7e5516f138251dec02a69a0ef07462c42f184b2970c8012a111ec0408a9cf60e4ad9bf6cb8cb154a6b164d5652a9c8e7b7ebebcd68ce92f0bc14ba71a6c50ed72e04289868c12965aad179263f6957ffcc7bda4f7cac6a2aaef084aab65969b46f5eaaad414e54218c98a288f78241207f92ac42240856acd986c86d3ff64a27e3a45c7e3855d205490d26cefe925fb4c2a51f2a8fcb67229859a4c5cd8eca108f81bc50a29da964621e7acadbc88270e7c17b442ea83f3692be71dba24c07e22cf1dfa41ce6d9012b6ea5b670e9772af9e95abec10771683206cdc3c37c19e94d8e3ba06c69805e663e8abdc4286c5f3758d80982b4426ecda60e87ad4652dc99fb12754704ba99aa26c6c31559dd69fd8d2c31af3f05195da1e9cef4ea1e5ea432414b764b3091a47dae23a87366de25402daf483b682a30a8d3f47814d1bbc1931d86eae872d49ee7ef9d015f72f80c8870eb47944c05a600110d65f6350ab0df2e11b40e74a754a8cbe70d4b0764d5bf9e42fb5194050a2f1d1b6927eb11b1a335d8d0e1e717c39a98d4b9b5ae847c57c02616cc8dafa507b995f128e54f1db187a0b8387aa189e246da1cb9a7389abaf2ea30941b409f26137d1c56fe4c4c84c2b2fd4553f18a38591c9aeedfd00a96b1bb34c0aa331b46a24395cdbff68e91272403c0f41eede9094d131f0b393f164357cdc92567b2435463c8d8f077233d899f80a8460d12ca225211c132afad2bfe07ff66c0d36fc2fabbee6afe4e7cb5b5ec56f26b5920cf4a98eb0d4d80c00da811ded101be3c7b567db19254081ec3808176d3b331e814aec78d4a014ea0f1c211d1b3fd4df2940248241427f21738bde8dc8019fb4ef1b17317e90ed165a8f4dfe6c94c7592ec93599be1ef2895856ed00c7d0b9a3d5fa7eea857a484b3d21ddc29dd59e7d994ba38473a0eb1752daf7532a9d671b5112759139051aabada89dfe32303b335958d3b24763312144e779cb08dbfa42ea3adf1bb21296e250b27feacc9cebfad475d4a2f877f14a0512354be9553cc1403c0f9a2622863ddeeced51d34c221b3695e1ed379266150227219f128cec5d64727cd6f0d842c826c5ea7974b162cb443e2f7a75f1967e50e25979793acf65d16de6b70d772fd21447f5da956c2343ec975f053ddc12172e178f2bc9177f3dd18e0d52e8a0ec5667d11de98de2febf7a198942efa4d88f02ddbd965c2d64d75d48da6cf390ccb04b1d81e14322510fcfccf05d845f3041e613d7d04f01a2ff0cebd8655b004767a55407e92f74d28f4de947ea3c0c55f2463db2079671dcc91949fd9d683dd584cffc02ab9c21d449e5538f76020bde323d33b39a2de4c788ea6c2822625834eea4512eb2385190894cf440fca2aca74c24505b6d684fb9621a77e6291c2764809aed7faab7fb23d30be8a9f2ead1e8f92132a388711b52b3df99cf0826838bff4c55c4f98752c343eac6251df354461b7ed98bbad66fae7cecd4082354122137e2a6fc236db022e6af4f292762f40e27f3cc4746771de7b4767bd99c37cb397d117ea463711ae4ed105e3c0896a0b802d93e47b5292cf1305dffb15c2c2d6815ace6069f9fd18cd7675e9501354145d9a4044a545a743aa304e4cabcbb9c7e118a5d655f66c907b6c70d3e878d7f9835b1136febada34909302099fcae2fb61d69b9d21c6c44c1e1528d40ae47026e4c61814aaaabf0323abb27615196a6b9f96d093e5348582661448af4b0b43e236e5252ee2343c426393e290d2dfc94cf1f041d815d984baa164c5df3642bf48a78773f592427d9394ec5b1f9baf81177799afd3a3a839799db5515f9cc42e45864239c350badd6bb58bcfe46d356cfa2906824edf56cf633adb2a903e3b2249710bb83449bafc25c810ec4e5ae1c1d83f2606a52d3c307add66498d4346bb5735135abbba389ba1e284bff15033caac62bf13fc38fb5f609a3a191f71fe5371b292509b53842d495202c6ccdee503c17046af1c004008b2c05d5f1f33f854774eef96fd7906173cdde7685046ee0d9e2483780a28f9339496c7ed1cc87d8151b8dcb28cc0f5875f98ee9d98b294e74b7f4cc8fad1008dadd50e433c77088cbbb519a53bd3270c71acc1c037f108fe29be2c3a990d26bf5a63ec45022e93c9892de9d47f5390c2bb2d945d4306add9ba53845d92d067002d220fd9b21c75091f2279f3539c51b57b3341a76a7bf11d795424aaf458e07c1ce261ca943caf0f95ffdfb24c79b7ca67c3a37f0fd533c11a5bd39957ffac1d1c754593dfc2b8293fc59b7b172a5cc91fdae8be606cb90dc7935af564cf3637e83f18ce281808c3386e345f4a65430821ea962d0f4a960a82b4452fbb265fff1c1c93a8e8074ee3b2be05e46066c76154bc7becbda87a5f3c94c92c1bdd0e22d0b0c73d24072dfd26dd715788a2e4916fbc84f344d02d8cf563ebb5261a7791a391404da9efeb75684f651522df598542d22c194916396cd5ca16d922d9d9f5e7efa69036a86a0ce32f491c76b06b07aaf6bc215fb44c122a0b5003b303654a5ccf96e266fd3b34e88711ed3f1a0db1a1d6e8887e25a185a88e5b4aead8e6ee3959674e3b4575ef1f2f0960561089f64fa37cba6907c6c17080b9a025d8eda4b83193618ea4c6bd342db5f012002912f1b2e5bf1d6ba8e02e0c0b657e5ecaaaf972d1f5e14322a22c32a0cd3580ff5225ce2530bd6a63fbe75a93aa28816993a6214e14867150bf1f464d3e90949c377f17592561b899b93634949e1e39a43e861bae5a40ec4620eef9f0180427c87793db514b73b7285a7b4832da2202b4794e229705445d6aeeb41a837cd02ef4e8df36c2ab333ce5f1bbb45cdc6047a7caa8687a1a7699a4741ab9c8b7a2ea9e8e9cf1cfa76298ecaff823dbe42b162fb72ad34c6bb17df4a818fdf1b47c429b6bdbf26c9c1d190bce129cebf95de9d54414b82bbe663c746d578b5cc67820dd364cd12d3e79a82021a23af6d0e93f96f8efe87c9ca26e8f6d46bb1d64639faab5f59f1dc525d080b5444c55fdb66b04fa0939ddbf94412f24601a0bdafe051405e1db7e9582e697a605febde06ed812f140d49c398d79ca5c705055dbb81f8ff7ec0346074a3e0b97fed373a375be5056ca991a09102c379ac9733625e4c925851c6135917013703fe22fffdaf2e3b5dd299572ea5cb6fbb283afb690425b02c41634f4258dff86bb4d0d353bd74693935680c2aeabd074fa68574eb6340c5d8da996db32c15aac655d20d914212b4172eac06c9e9df50f5bfb3eb5be35db38d9ee0c5514b0fa189434edfe8770a15500ab2bdd25a6bfb29a14a48bb11c8b62615caa42e51535d0caab98357d16f711f10d9157290af795aa45ba7f7bb1382912e8cb0732d5ebfccfd100e74d7f71b96efaae75f35aee92f3d2a157a6bc0d313a447f999041732dc1dc923d6083df3f09618b862f6b5648a00a739d1d8caa0c4f7e77a48f596498c9e8ef298201beb709975625d1945066c71f98af38782a712e168908c515457132ef8b900e12522fd189c224e5d68b4dbcc48c301c6cf6921b221e0e53cd0826c1eefdb7017fad61ec339c239463689927bca86301d639c7d90751437c851935ea1e0c0fe5127a1982ae7a449228b349f4438fb0910a04e7bd0a5a011a40b64f416b94bc865ab874cbd9d04afa0a9e0121fae4e3ad67bf55703350f0acc5befb61e491e8a8c2b627b62608d6a1888400df0151a512d3457dc748b6a1e76611112bc1440bc97659a0d7d08e115b5414862b0f7c68fec9603774ead6677daa7e0ed0864dd1f4a2ee4474268dae30194e654d10a2ca0b87144f7d51e64bbab7e5eac2a4ef06a3fed9d7328aec330f007e88955ad8ffe8a60545194ba3b30c6d864117e20561a54cc2b984bf83c73aca99dbb3c287595593c717fbe78702b3977d550b2eee08fa47cdaa6fe43abd623c3e9edcfe822e144b930652e5298c0eb16a37a2b5428587184994281247ec715cfe8a3f8914ad6763a3f9226a244d5f6db16ec481dce39498e2c640cba0084dc196698b3643e930995229c6b3097633a2b0c0aaba599e7b1aaaae1fdbf377bf34cb0c4e203f2b0c8b6e21267635861806008b56c2be0a076579f9bc652ac1690957a782582fe5b25d1ce0f48a169bb3c91893810a2d65dc29e1c71f2222ca67d1583084ed0ca1e5aafb4a22e82d12dbb9684e2748e86537736fc7834ed8ebbf116d062caa553f3323fe5b24254e951959911f91222c9a466d5b618683cb9cead099170a3484f41a64116cec16be937011e9ddb1691e8c1e4c99215af2478a7e919f8c5d201a9c8fa71dfd5ed2b979d93bfaa78b9b7d05ecb4e1b265b2469879d37e58f6f0d1721871f8f8390d864dec3f20d7193581f6b31b2277431dcbe3667718e12b2d1bc99bd19503982e1268b77bd55b56daaeec65168dda90ab16d6c19ac8d9c4870322560c7a79e7780e41c726908946dbc48ee6a262fddde927b0bb752da4c71a044c55968425cd1b2dca8b77957dc2d17595f72920d7f0de1e9c9c6c7b2f6d4815fd0ba78db16854cf04758f2c5692c350d3b5f6c240e890cc8ab55067a1279d1d50cc5863b6f8c9a350b549a7fa3e2c7f47d4d0fee9124f3a8d2f28d842b6187c86f24119ec1d533ed16ef93a0d38c82112088922a8397486442004aea638a12980c1b8d395c459ce4cda708b8e7a0f43ae46392453b59ff76cc48ffe41f807085b61b1488a88822e297bf18a42414841808e0cda22a02c53fa2ecbb790c9e8bd04a17a4f469780505a0d911612ee1b7ab93096e411d4809e2cbfca4a0c44fd2432b9404c3047fbeb344550bdcbb60455e35de24b8f20bb7ac909cbc936e86573c11ba87ef6f7a9097afddbc127d5260518794968614ab895acd2aaa1654a2fbfafa641f7cd1871a07a9639f897a64175bc3a682eb084c70a8b5b9009998facba28a9a50a3f58a017074d5a4c24b9af84152607206ed04bb8c52b95f8cbe37b633d2d297bbd5c5f67c0020e93a8d2ecd2b2c7577283bf8457b2511e9a498f020f984f5998f715fa336100cd789c62a162ce71ee59e4cddd24462ecb39e8be8da43b83f1c9dc8b74d826abf36eb6c84dbd69e2480e6d6c793f1f065ea433ea1d830dc8ed266ddf05f8da1d42f6877242e86002380910bc0a2ccf60a3830ad713bea0c3b5137cc3fc50cb8cfe29cc9412009f013981372bd27c58d75e67b7761af084a4d39a6b904e7693fac8f9fb0c66698822a68344b19b62f68e283d3bc2096274d4c33ba700457d61811599f3aa2f2cd4b61a9fd451d02198ac4a048e8de22245bae7b7e01ed0d3ce460c15e3521a43a67b69e356719c4f3aae866805b48bf12026b8cba0a5b062cd6926eb2d150e2eda2c5c4b1cd2f3e8044172eadf67332406177c6617236fc95d3eeba1438b3c723c636f98b001fd514df3e0caff59a6d10c6f84c54ba1d000ab2a5d816f141a6c2157300a1191ae99d4abc453d61d870970b16edbc309f4e89bd4b3c83f133bc6c23168615371a946cd74acd86e6ae59959bece10deb84e068b970ff77b9c57034ed389e7e9eeed9c94dccbd87dd046ba38be1a1df03c9384fa9c0f22290df58140315ff09a4028f5d34afae48f6e1747acd6a5a19a1544411024aa98da8485ea8e00cda6a393d778f2dc079aa776c3463c818725b60d6a9424773f983aec61029d52c40161c11678111dab8df8e96b543d7a7e12594ad028aeb27daef3e09a56ae74bcaaaa5266360f75506145ba4b30c3b95eef130f5f0517f45a855df3d15523a782ad3b10a9f4516c5c43a5166b7541030c65f7661874456cbfa35a3d39c3d097016dc6799503589b48800f0ec3799426022697a2eed1e49b542c1b970e1d227f1e83d6b516b43695ca2ac44499ec585b52ac50dc45a33e851c61627211fa4a4a182d59b5613715c0e545a621d3a0b9661a2b3c273edada1eccdda7176678cd73a9f7f1891edcbf99b78892856b0d5aa69e820627cac8a978ac8a86bd6106f742973e8a09d20689d7c87283b7b4faa86886bb8238949582516413a1140293b7751d2781718a848ac91aba2582b96309b8dc73c66a9ef9b2956288617c67ff9863b5a19a44ae23a5e41275c533aebecf5fa4be53ea1eea92278c927c9dab56353b9910b83ebc79f3e096dd1a9e29e41b5b8a87c19ac7bc7816939ced541a49ba2947ecf9d2ec26d90c32fe0cbcf38082bdd55065473a52ae221cd3c7f1ba5e79763735f52910d8c2fe18a51996b891f2faaebead87d0f1c2c29e963574d52b081d9a30fc73a5faff5f0b9831c2f64bdd0953ab4a0d4f0203c16dd7ca056db95bc03a978dbbfe4b7c854f36809a0cc1d15b1457bd5c623aa642df85e158067321552097bbc7500f8897ac4b4e02883b4b1e1317895f269dc9ab667a2a8fab0df965920d605b5bc7c3bfb6def1da0c035ac67c4cffe3eb26d1b0b339b9e7cb13bb742fb2259678a5e1b4da8d70b0439c15208585a9a75d886d61fe6ff5d3625a0956360e020a7de04eefbaaa83868cf65e344164e843a961e5f5e31efaf1e9b9af4ff0acd6ca175f46817b8e0df6763cd95c5ad66cd9893bc778653f655819cad76d68e20a8eb779e99681882ad6606366f16385741490f1c199cfbd421bd09038b88a128b6039c130f072b88f4d10e6f35b87ab12c7cdefd8003dc6212a3df806ac76853ea1b20626f40abada2fd093ce9855c197154bd6c80e866fec9e0aa4c45da55bc80d6e7e87343f7819fa4431945f7c2476ab85e50383927ade9dcb4a6d68fe22567cd62a97af41590ea317b41557f32689f7974d082833d558063e5864d700650811282b4f8716407540bd97009802b2f1ca7e189f110a58076797bc3b2755cf3a8b18a4f2736a64e90795e6c1f8c5810455bd946167f0b7b9345b73b0d80676aac76e9708b2a66e46d72a0384dd4e11af3df9bc4f8fe78ce6cc679ce72b002e1904e4c7888e5ecf0c2d46e4b20f5a85d4b624bb91403944a23c8897a14242508cf050929f3c3fb7d6c469814a24d22f595b25aae890b65bc88182bca8f83bf228e605424283dac43a81b33ebdf03c48b43371cc8b78870c403c422d4c11c1dc92287b705dbd6b28eaed91c2311d12c9bad45aae6fd46c22e878a443ba0bb8248e3da07475e83a37ef1671220ec1b97bb4bbd3494e58e2b33c14f8c5b81341ec403200eed76b524d110e70c6c1e2abb1b6982c52986685e94164adb2576ebdd49b6e335883be238cfe642855cb315f06fe049f13f3d31f7dfbd4faed6229404869da587da86817fde773454856ae914c2e26c1f209d7f1dfa37e9a51afc044f5447d4e12bddfb9154839fd8984756485497063f69b5060256430658f4a0e97c3fa4286f9b97269624925840a1eeb8f962dd58354587d9c31a59772067adba9f047399b4695e4d2093575f539397fcc9d8d9d004715a5c51fb1749e831b7883b16f5e480b157cd7f0be237adf31cf33264b1803913c2abbc17bb1e8dddcf81746e4bd07a23e55761f2163d1a3d68433a2a54e82de33995996e3673d3afd21847078e87d7a597d9e3d7f02d3eef9a0486b7432a6fae15f6ee01ea9c964f2e9e3f7a9b19355df32c981183ab5bffe82d6c1dabd392e8deeda6b071496706eb3457a0d87f729a11426c0c6c9a1634ec252a5dad60ba07b2e29310ddd0fe2a2a06fbe841941cf2eb89fcdf1f713dc5594ae623146cac9d2a5ec85704140348a068c38f0c45eebb9f4450f8168cccbc0d18a03c787047967d6fa1d2ddeb5171eb713594c5c56bb214d1a98c72b5197c644972058bf4cb7f1f61a21c8f3b0000061cb6023051eec70776a302a5a6971b667695d3860fa26d70b4f251aafd443647125f54bca2af32159abe1ad200acfa67e52ae1629c654255f642ee9766a2353f7f1922051c97ee30c25ad579857632aee4093bb8b2461b5ad3563790b6cdbcb8d4ef800a0ca1a6b9efdebabe703f9409bf97de8b608d6232a9a3ea596414b4e6c75ec8af57989328ad841eee5a4f9aa981814788ae0d5cf6196052bda5c66767e0d36a1f98c7bc4b12a24a7860711860134dd1c8a607fe23d6d7bedfe5ce4ba51f0c221ff5743db8c4a4b8e2cfe099208c1a76485f2f8af98b87266e5f9880a7fd5aa1a45dfe28458d90b193ef14a3348a66bf9da9cdaf9a60c5f87e04c757b1b67c159b41b9a8579e704ffae25a2c7606c9668a8284940bfba0c7be18909b90c120f07b21b5c144cbbf6ae138285546b8b3180f2426c853e95ec9eb5fdf9e49b73ed1f9e5ca3e37e5a5b3811187ca6482ac6714554f99a25078bc5e7f003f6bc1ceffd1121e0ee24363b1766b083ddcb0555ff77a44c0cd52676427b7a43f6d26a9f08950fe6bb82fa8d51131b57e0d5f5c34b206d3c3235fe58198dfe12cb2fb25c61c6585c3ebe321a69abf2233fadf4c078dff00b21d0f1e5a2ef1bf4309c065fc63dc0e59c2603d37bd9ed6d5e1bc873080690fd255e74b83768d4c7aa8d56f7430abd17b027ecda63196a95e0ef935edf3985e19e9a106ea684492a5ee0b8f1ac69862f47868bc160c75894dae3895eb064f94c101cd977584175071c7cfab8746f170c431fd30119290b9c70385c6cfab71da8dade1680127b0b4aa2c04ec873c9e8ce7425e23eeacdef9401f1da13461685c099475fa19b3cbbcf39a247c7b38530ce29efbbdb9e2c18262e24d197a04ee01fb823da60ecbdbd9774218f0eef5e91245a9e7766b582822c0b8084681e0efcb21123b6f276065a5d7c9490ef22b082947b45fab16c722090e45f203f4efd1c04fe12a69e150f2f432385851e0589ef0493798206cfe05999274b7821629021f8644f4a6a15aaf74962970b5557b861202a9dbc6e2b650bf82fea26a90d2fba3409d7b4748d6c01daede7ad12c7f87943a1669a504630b04c85071cafd8ada34e761ba8ca9a2650c2b870014738fd3b9cbd7c31bf5f9573490cd563c2a73115f219b5dc022c1e5c060ab1be3d5726ec36d476b7aeb454d7e8f080274596cc07b97475e9aead87111b3be0d0bf794993bef88075bd227ba07d3e358c2165f1a72160aa769b4146faadcee0c5ce7184c652f7c691245e0974613502d775e3089bb741365d884e70b4d4bed92e3ae20ee2d18e84be508cc2c80ed67dabf4923849026ce5b5568704f39616b8fccc3cc204877cf6578c75f2ef232374050b00e5b3ea35c303e9e82b85650bbaa5897349ef03b596a3719de284b2c7899361a401b7ecee0dc91ba0df292dd30450f59ead2e6de3e784173e5c6307ec6807715cef8600882c8c4d0ac235f95b97e7dd07691e7be1c19f0819acb1e00023b8028003960544af4fe566fb68e6566dc33dfa7fdcb8cecfe59f288d6985f7141cc7f0318915478de2b7c4b75f409a82dc29a8087b15c5f6d685d0424b8bff5d2a01264a81b14ef2eb697228822738eec435d9a7c4e9a2f51a7c2c6f635c32f464cde58eeb6ba7f46e07a7ad02b156d298b528bdc0cfb57225611c2a2f8f83709134fe62d6188a0a29ca1c36c91055ce42d4c2dc8f40edd4fc59942e3ddab0ff48ee0cabe025ecfd84c042e42a0868882427be8c9290a6ae67461f35db1bda895e0b181879ac8aa812957668215d0f511bcbfda4230fe89c4a69893bf290afb9640e0255f8b84aa4107a27da63543ff401da774027f3d946ac86705da895480f41f620a28a2426bff2f3c5071037392493b94be1aab0d9bd56a19dc659d7bffaa971f649f10038751ecf140445b97f4c0200f2af8b7de2861ba9c72823f19eabc0257cd74551e9d07d484514502659d848a0c2527ebfbb08291474c95105ac1c48df2e65bcaa386e19cf1f675f85c8d72f92e9a82fc86bb97a03317df4946634dc730fb918f4b9b97d51ecd215aaa06338c9e12718a2a3eab4315031bf96041984b7f681848bd06fa556106b743634f27f130702a850a19d3bd4953b77223fa3e7f9826492e0b7cddc1c173263d73a188c1bc1257153e1aa0976eef6b57681f36752e886cba0e6fbdb95bb02279053bec9d4e3ea270d0b63ae904659af98a369d41ffa42bc1a562558737e9f7a1c1725702f7d8a9d769fc8ca34fb8a61097d16f83f226153e1f95ce2c835a91521012398f4f74c05b11063443b859441512b911d76ca030a36eadcca0f9ac868bbdfc0232161912a8e9fca31c80668daf3e095eede926a5d698e18a38176950550fbc1dbeee974fa20b3d08a19ea02048b67072f5fc98c621874d4579b2724773c25d6521c1cd6058d1c10eb2a243cd3bc955488b3e27532c53ef28887756058f7ebc1c5e6ab942521c2a425e3994de49be33bed994603f02118d80b488299cad1ca1e47720773c9f8fedfe5b21eb5c47e6dd3dd2b719564e9248c756cf93c120f711a39d5e216ca502c0f2bb93cadf875940525d05920fc5df70f97de07a9eb395939e430d1540b6684f8f616459e594f25726b76cc02977a3b46c197815106eef0af6e5b0c373add1785331e0576b25380ed8a986bfa8ea9b42835efed2b261c889d35d4a3c6f2841faaf784e7fd4ba15f286d5bbc843eec14210cd99340b2b9804d74d3443854e311876a9a196da20e10807d0cfd30dbbed41c058ab4a720c093e0b32d58805aca6191fea9d2af8794844ada450297b1a084400085b81bb9423da1c74d8bc549ed3e32b29fbb06766da508f9d11e20ad51c209d4621ed8b2834029b468643ae51e60003927980f77af08847b18f28df744b48236433cd1054c969994decd07a46e911965ed07f4fb82e59393a34ca9cc2c50ced6a7bf26c40918d1333b0ef5d0a79c9c08203e845a91303fb531858bdc0424f477de90d069685d760c32fb0511fb4e5369c3642541f712dab4c3f0b853d5bab556d33bed0b331aea73f56e26d05bde2374c28d5da8daff8762a105751ca4a582644a0ad7a63db41268ef80949f784731efacc09b278c16c9c5b8010c9e2b33ea7e6a41b43de7b81b84734f41133e4b3e36b25dc8a93c22ea0d4643f4e76b64c290c949d9f9298f6e966f1b8f3d549c1601cc6035604bd08f4fc8610c2a5a32bae3c39a37dec9f5f81358f2a2b8fd5a3185966b111d583256c1f86c08dc6596768e886949355dfdb183a94848e592478cd1f33fc02ff52c373400b236bf370bf9a8338bfe7626f643588d81f5c53106c65e5b2438ee6fb750e3c8fda8442a88a61ee146413a2902966634503528495ebb9845ec891b29c55433bdf528b37b6a8d5b586f7387d8a86c940ed971b4ef6539b9ba803c4fe927052d4c54561fa1d3d79cd4b6aa46d6694a8ca68ce08b2c0ed63749b4d5ef353fa8206bcb28fc64153d4f3722c1e7f44c51933570f4bd7e9567c817ff9e13fae68ff5685ae5ff8acd71f87ec9b85c8ea5f98b3fa32f2991d638bb69a09cbd15be01a0b58fc4555c84b27b97174774cd674f37595d49036017555f8cbaae62b901d8ea1c24e4b7f990259c462d6e5c1e7ada6bde2ecb32fb377b8ee7466d16665c7e05a7c5b4d6c347ca86b6d5b11736818fc5e53a2bdd0189bcedd35176f1e9a9ba99fdb8bcca1b941aeacef1bd7f4c63534a187993901820db89283dc87e395605c58a5ffdc9927fe444a0a1b7713162cc97ba644f7ea1b2e802121260b5a0784586e5916b07cb6c05c87d6d3cdf73747def888cba25530448178c768e5c5a495c852d00fa640369223a8ce5270a3772e16d0ba0978870fa6cdb444dc6783e6d74f7048423b7071989dcb9999453b2377e5b5305a1130a05fe84c35bfd9d9798fb975fa70838ed903ed5c0ecff426b8fd2f20546ffa12dcfa21151cb8b82a0e59bdd741e0d0f67134f4c7694aabbe27ad1d0b08bdfa4b3a2a272b617ce09fff1250c9c250553b284e55c8c09ac4f1004ef5e7d1787a8201f974169d4ca8d7a2e42d496bf83670d5f2f0a196d727a17233a2fce57ab332f11e56628787f27163aa1fab3859aaf65925002e637a353fcc21ba2d1f24ed6b12bf3bd8b21b62d1befe6e365d2aafa83b538f3799d9cd15f72bed694fa7f32ce57ebfafe72db59bee56cd59d6bcff9dd1bb6ada5ebb70591861f3877b721a4364912696b3f9bbf8fbe0fcb6b61a219b27c2bdad90f8b68a64f365ab3d89397f20bfc498df5dea5af9e02aeee83d1043af5703aef55ea7a9315960f42af2319fdd29ad39b68665b9dc67849b1e01dc55e4039c5180654d7ac149f2b52cad9cf402ad5f9d796f32bfd0f2776da7fae686a2eb90ab261abedc0083b4feda41398f69f9363543518dc7e3e7c461edd2362972f9e5854d1ec2799ce60a1faeb83ddaa88500390bd7b76223869c9d01251f37ad14f83ce8ed550c3247ca3f06940d30d389805e214ad277e0f44cf45f400ff2024a7ea5cb1401071b8132c4f58035ae673bd7d3387311a8f6756a05e7a8433bed297c7a26ce38a4800040e7ce02a6226f33b1d1e348a46109a0b466fa2ea0eb4ba4955ca2c3c8ea3b366188a053c4bf4c594d9ab284abf39fa04e4b0c5c33a0d5dcb1c71da23644bcc685d2fcb9fc448413849dfbf03de278a69c2fad08ce698514a8c2093eabace58bdb6c9fa407b3cbb890047db5700d0d85b22d173bc48a59169c219ef2b4f6738b64956709a47a2c781f00f85211d2eba74b1af8b6ba1bfd60f0fa6d2d0aca8fa0e5d406f30bbc0e45e868fdbb00c59df444d436df32db09e348ffb91ca5d1bd089fe88a6f14247a5ae04e157796775e3510cb2d5855a394fb0b38a29322bc38cbadd8d1f81a467e91a6feade985eaa8c798cb6e6a82ba4b83d8cf6567e5a10a286938c83887b159d224ffc8f69ee406f61d1d04f9cf191f710c31e9b403b566540c9c860b8f84e376d4a240911b7b1d14742687f2eb0ee60b6b5c6f84d657a19239c2f6fd0549ab567e8290f72cb2d0790ce72eb94a86782c95a9e11683bd318f7d320daef417acf1effc8bbc19de87d996be8f60c3dbe7e2f2ae49a714f82a3662624d7ed330806719572f158ac3f563bead8124576adcffee4ffd99f6eaa635addad00244ec849ba4800cb3a6a2868f23f0240cbb2f57fce88901e2a704f68d2d154e3e293ad06ee3fda55cbe152a3a51fa26446a540557c3bc778a08db428951fd304083c380d6396102a95485f8c99aab8fbb53a9868f13932f46095eb7e0d469a0ea39da7c6a971f0617d05589898526599e5626ed455cbb3923b12ff12722f171df3666285a57b5c50234d15854c362d8b3b5308a58e6656d0095b101c33a5b6b714e993bb627d216a54a3db6611d24304c037be40ad63fcaca1fec6edce5739c288b7eb5559b601a3b9344393caaa0e8503e2e20d8fde4c347405bb3671251c6e8ac764837937f57986d7441bf98afc9da7508265b17018de7896cf176ddb823f857747b448e1f7fa61dc3a6d2252682ce7e6eb3a6f02b3be30a918870f0c275210bc844387b9dc4dcfea2219206e1fcab9b24c0b15ad22c107fdbe892c1803b5024131cb3e5097b8d5f2347c5fc1fd8c039d31f5b790c061ba68a333315603dce723c119749453ced133bb16c390fcb4fc4bdf649b3afca80cc28c69b7019e13b73ae9116e0206830a2520cccc9575f18cf1141eabfe7c1c92552b1b86eff701791a1b867cab213fdb3f34d75ad37702956a21fffe69d477a712b2967546178ffad7412b31b59026cbb99decf48fd78472783ea263eda04c092961cbe67c57051fbbb223d10ca09ebfd955774552a764fb3727de2d739ba0bd3dfc404c6cd799b99d366ba3ca1b252b78b19f722c632f9c074ee592615af26eaee0a0757df41e3c9b4854904c79a5c8289ff4ac4fdf7070640c2b52f4b734b82bedffd9035e2556f84011bb47fb64d75b905733add17bfe7e1f305504ac0defe9a55c17b5cbf580a0a70214c95bef16dd8b6207bc563938fc0a4d29d445e8d07c97d918ac4c76ef60d44f4b79c89d4c89f70f196acbaeb09f3153399f37200b752e27e231ea83af10360260940c154baac3c966e4607d03f8f9371b5c65f797c3d2c72e4336c8abfd33e7008bd9df92dd2cb6bfe5afdc8601a4161332ba60958f7db0aad303fb65f02a6bfee31d9e2be3e4d409f948c193192fbbbf0db6eaa3a2159a266aeebe20b547753b5ddc9ca8c72889b498b42bdefb07275eeb30492e1ec67b27369c3b96ce359a7071df327b5fc98655a0159c1654d6904c6c372ec306d052f91671f5b334deb01c6a0f4bbe200dce4810d5333a9e88befcf7ae739c17281a7b2248f7bbeaf2077c9c4dfd77e90dbd4ee581c8ee3528d4cea8a4ecc66154c1d962c0103ecc4413e0f0a09cc6dcad981f6149852f759cec7e43209cf678310def0866032c6fd305e07bdfd8813a2782a8e3941a6a75f5af6ddd578c6939c5bf854d6f55b56a24ef1760bd95eca14e66498843e1df6a185b8d56d34b4660126d15134b8029344b4e59cd3279be8ebd333cfbc72c32344d7a67eb538650d06da2ee2a3b11a4ec6fc294bd2b2e9fcc4132eb0ffebcf83f4069bef3b2f1d41808175a2ee79d8489d4ac0db8df311b97844c9148b009dc68ec54b8a3dec3016e82f92716308b337b2a97e2d29fb9012c43665329d07d6744764664d69e89c44276a06f7124734d240a89a9e383734110513b305adc49407600e4d9742f2aaf059e5eeae946901aa834e56a65f9bbb89ed48df444fb2e76f60ef2c34daa027e5853eac845e6c2142445e5d727c0a2f9972d94552c257be65d4531aa000c953228c919a53f9c53c70b32b1a64042ce5403bf44ae5653e8a2036957b3fb3a5deac0c414b60ce754a0b303e9cba078ba53f02f49baa40eb89b0f37790391ef943f1a92ab80327e88ce42f2c4db03da3fc88cb7f37a998ffdf001fad71624788ff8a11e39d5109d44e1c4973c6436b3eec8a782e6001f9f622bc0215fa2fce7df3bf8e1b76a6535a187c581324531202c097fa53921300dcb493f822ad942ea59759e91381415325971ab23b811800370dd020f6df0010dd9bfc233cdc199c3fc9b26f2f2894da146edfb48ff099bfc27d8dd45d96975b79073216ec20abd19837688521f8a2fedfc36e8a3a3a7b28383289a19efcebca29418c5b3ce1782de4d2f4b9853d2249d4097fed094ff5c46f7007042d2a8834a9e8efb879f0b0ac50076b4a0fc375ef31893a000aae961abaeaa36a6d019ae9abb82e51671109f4196ef1eb40192aa75db34f3a00f5067d1ca37554e6b69332669e08d42f6ccb949f43be5da85dcd80a337bb100b69fa605660d6b9e9981b4a258462c4f22ba841f537516d76acb1900c81d9f573f093e38a291cebdf0bbd4935bacb98330f99a99393b247a53065aa250c43ed2db7775df52569923270698a5eb9654c8ce326eaa25f2f59e8675e693fa59396fce84f6f025c277d117ce3d586e989c3895b11ecd00cc0cb5eef9c715a6419eb2506feb73f08d4a4ca39f2def49f1424785ea05a585ddc0ff3f835108004da41413052e4e7a179541f3972285f2275f01a46905a76cf99d8a6fb6aef0cda0486949be91ee013bae17479b655edf2a2f774ac4c3a85d2100b273a2842a72965a81b53d35f9187ad5ef3520840c4ba12e7a23532d93f7bdef6417be02b444350e65c3bfa36723e8e0eef3d057079cb6d3cad21744ca88844c64285bb0e1bc88595bd3c117967b44f5e48520e76c0b34630e9c2cbfbcb1795e64d6fcdd1abaa1d894bc968b8c629a694dc0de1f93c522d205477351a28682868d6185ee2b657187223107247af4a4436356060b8ef0b72e7ab89c438fbda39cd2ed10b61c4947d72a30319192385deb96a5afc5d579697f72799f203a1b4244e7c18497e78cf5a490428e017bf85f5a962cb35756835c750120d6ee325bd0c910413de13887d45e5a44054f1e9df497a6940b58993bf449fa65a523cca759dff5f1d50189e8d0836ea466e231c4316af5f1557122de8da8034dba07ad61f11f458a85533c1176bd6799ee55dad5d2dbb82b3f6690c45a24e7859cc9405f4c47efa506d58cf3a743c2f7e7f7667254d4966e0beba3feccf5b342944589706fd8c1590871d5e093c3c49ca5fff7d3412624077955842cb2ddc072a85ef15bb62b5c20a229b4799863f2dfb611b1389f81e835a0a04b516f061447362e946d4b2137ecdf2367e18366b3308e37708eae2b8949104028e120308d4c22f07f48adafba68338d2b3b390e313976908c3343eef4046391f0d3f912de897c8835cda44648eacb09ae03d506f5263ded1c655fed9f60a499118e1cdd599a755dcdc3912c947090b3ae0eb02f4ecd666cc397e88b0618eef93448c95ef9ea3ee42f02e5b052fe69cdeaf7954b8b7ba0e8af6692c6ca5d3247c7e215d6c6718631f3a686fad5385ba5d1704d1a8188ea9f5a77e93978f819bd0f994b4131e665ae0f7a2e575b89b5be10565d9771c929db215fe0b35e92f246fb973d390b9427f934f137c3fdf5272cd91839913126fce200bbf895bff8f0ca1122887e5060acb44f46d865c5f5969e6d9b7ac058c0589e88626914bac2efb5849ee4092b51b08f5664c66be6ea88b0197b33e52a9da7e23c5d1d9fb12f9866f06b158b85fa1b56bd89d0e54f9ef1c6230c8c9e98260bd17f064de40577b0f01e8cf60258a54160b6ef402fa942529dbe6974a205d399a122cb251565a03d8cbaa265691ab5e10c980d166dbbbf482dbd0050c907eba0f9475ddf4c5f1286b26d1bbeb801a970cfd6b421cea90caa4ae369f086f0f6415f39dcc8581f646d716a7b44c8c7b8978c5c9b768e199e12e8266d9a40eee3af2d0313a831f86c90ff9a93c744e97a38a914e4060b494b96c8389c06b4f7e6dfe44e4ed6a3391fb2a458dcb06abbeaf56dea006aa2e6f1a846d5e390227623f9685e1c12270a7232c47f4d1eaacdbbe87f9727d75ff9e65370bdd1a4a70b7993b413d6b6ade64257d78899d6bcd436eec9539f638739a4569b629a1d38ae891b2bedc681270ca7f3a3d59f46f1560dd0ebf24605ddb8e9ece72cbe67162e738a832bb4ca294c31cb8be72c7753f5e6a876826ec0dd34523a9187168dfe1320bbbe7e8bd53a1246d16a7c99577565eb8485952fd69d632a1df8667963db3bb60259178ff8c8e677c59bcf322aa77bb800de753e59090d9b6b011f2c7be1810b6c09e1d2dd7bdb0e20d07cd1c14021f770e43b7de702117c3bf48e5637e2dc0aaf42b89473cef5e5f525319b55e8de51fc5987d8fea07c32a0018da66fa0a9610cc2d1ccd3340eb47b80e03ff377cf78d061808b8a66127c09c91a291ebf5aa444573457c41f31c50abeddfda38cccbadff805b122a1c634eadfff2a375d6bb1e01a3f62ebeb364ddcb0cabff5cfef3dc20d77f3eb68a9b5efd5cb1e287497aee437d33eb247105677b3d3c7adaefba79e6c6e857736f6efca7a19fa01efd4a6bfa71feaa825c92d93dd10949a4f82da90ebc010c087d2fdef51041b731da8104ce082cd7cbf8bc52abbbe4a1ec5d5422945c9dfa9dbd804ab8b8d5394b7faf21b2a9b6389b2ab5bb90e224bf0c4979119cbb4e24b82fa008e6ff76344611b3eafc271da1b6b4e8425f6030aaf8e632eb7443eb5e5a2d8179b51197f6c602caebd0a08a62618a06ae0b789bda3bd51aa6aca5a702295659a6cdb57560182f35d35ae4ccdd45b7976c8f14f139225d0bdc60c95274832f6b09000ae7409fea11997648ccd57a77871d2eb1e352ace9442a33e7804f6072a83ff90801cb8a43fe9ba86fe524f1651a8e68387013c840a66128c1a208b6320d9ea8e15df6fb94239089c74f7263640e30e05e157f750d3bbf11c9873e4f3012681c4bfd1ce1d34ec96f1b893b848c80e4fdd4a96b94b8db2cd332c5a1f830ace5b817f27b652dbfddd10d5014d7e14ac98acf845c88584859ac9bafe9fad253186d570e638b8981565cad485e62b3d63d1356fea8162b0d5fedff6a4569e6ca0c31b793fc6aa875a2ec02ae96a902e58d43af5254151b2b3f7a482f722d192b1efe6a0d62e10f55f27b8b802b5759e98ec99924da5cd86e95b6943e56ab66895ef203c41c54422f703a1888ed25da6c2be8051ac70a97562e2fe481148bdbee4a8a1a3ea5609503ff15ad02eddb250fecca0a57c0afe62153bb9fe35e4f4969119664743434902597d9244cacc11abbd4297462c2574aa991041aad65fc7493da6ddf766d9616a6008ee9dfdb6e8fb63b20e31935f25e8d1f330a6b8077a9523fce55df43775560532e50523a47a013d08eac9cfad48fd2a3034571c0f996469f588e29a5568a869d682a634708d0cff29bbaa86142a7e56b5baf954ace728eb7beabade5add9ed9196a9ce258796c88d75b384aa58285a6b8dc596624f48a5e59b135b195d52acc5edec12a37cffc8b40850fe5e59e4341e21f3b2dea31a8768b2813aeb965a76d47bc5a978802acb0a821375b90fa8b77969f56f1530ef3e81f234212d198dbf31c1a72ae2f616a44133b6a7e210fab4455fd528211e7f587443658a2e3f1e48141d7e573ef6bd4650da7fe2370f0ef17e971eeafc8a0e0853ce51c9fb51e37bd903faa1c776ebee7a3081f951da0912627bc696e6e9dc5081d84c47740961625b2c07f18299c4f69fc1c39cdc87e10f00d7b6b39fa6b6fe67cb90e657d80622ca22f1391ba8f19b66ed7e6d8d2a39a1dcf8272912ae66c6af04461ac7178ea15a455aebcebeb2d3f614dbb9ff1d0fdb3889474264b52dfd38cd95a6ce85ab880855d81af2296fd1b6e33ee45f9cb2c74086e2cc70a276f832a7aa2e2c2cd2c6e3b2237c20182e6b5bf3c448edcd38554a013b185af6754c80d96941e75ae1e5cfeeda89d41b652883bfe3e9dbdebbbfbbcfecf6f26f345f43b05e858cb0727a77e942b3427ac2c0707483205ffea384cfbad218963cf466c27d691f2e6f0bb27f882ffd4e2cbce7417c39985c3b628602cb65cfffc707afad01699fffeaf1732f9f41c4620a342efaf59d08b3f8d115fc451f50407a153ef80c7d7f0b79da21206527c816f28baa9cdd42408bdf37f1045d74ee3cdfe46a7fd1489d28eb70ebf23bcf84d0a940cda347824aace8df9e2a34eb73e4190f3375c97da527487e2bfc1bda87d765a2c1eb232e1fdaf1dfdcdbe6fd87a48283e64a0070c0ee9d6bb456f1031da779568f1e14f670b3094c6fa4418aabd00b645df2c399846cdf4be85f1afce318fd9a9bb152efe938def17f86dee4db75107f4eb14fb1a4f173f1bb2d1105502730f46158dc416f03964310180252813db0c6f41906cb56b2cf37b9e0f0e9a01054b615ae8bb1db043949b378eebe522d566521ef8696be87a3c40750f29ea30c5f4c51083fe44a4676a300b316343a5790fdc5d10d8017dc09181e650e14f0c11a74507aadb7cdd09b837b79026c68c96e12084136c4701d570e5363cdf7298807f18f71162caa0d39845a0dd670357d5bdf60b8e064ddd896088a1fe212ada6ff7a41cb876527a600eeb30613ee6851448407a0d6a9e8f235b8d6398637657eed1d4305461668a3a83a7ab20d326ccc428101abe28f83bef609982bca376eef6882ceab76c834062725bf97a04f3a4695423662d6d3c0acc0c07ce225b72479b935b5c850031a78eb15c4047efbd0f452dc95b969ea725848b611aef82242efb6af2604fb53de9a808fdc24efe2d084ace09c1d6b6259d986edeffb50011c667928a7c57c3ff5416fb499840325dec73d65a2e716123dc86479881ef073b4f0899e927f5a16089bd4e45b1108575b34370770227bed8a6ac63c7f7980179ab89d1dfd7c70113864c96f2253cb1da4238a7c40f01083ea1b71de28a226895e35a77443a3c8b54048208031d3f66bf904a9b20942c22f6d8964890aa6562ffa242b2ebb222f631f281c646864b49ad560bfbc160fc524af99c9cce2b5910f70f35c9cf79f0040bc129912c041489df0cb39e7c5e52c914d22b454768ea4c748a95e310c22cc493a2a5143e84dacd6edba6989a1ce1989834de91b7ed79728371057a00d91dfe101c730eecdef4cbdee2965763de6d4ba8262ff08d3eed25a540d276a8cd658cce84c3a1dff752728fdb9bd8845a27298580d64b0039f4f7d3420f4d0882c22c7c34696c3b1be17458ad52788e353aacc788f219aab5fbd1ef7418621bf31828679f822e9db3e2dacce793f166e8c6bf43a00284e3346d7df5fc13dc6d8579d03ff21e1d64df18e1da28a759b2ee0f2a3c4213fc618b2c5309b310634e38330fbb6431ead0cc8c1aef0811de3651f4b152f65eaa4c31840562c48c3cc94da58c43b353b19239bbb315b84f381e9f847b02ac728767580c0efb5eff8e3f2c002a131eeb455eaf9a6f2a0706ec5a5d04a0d5a53521e0bf28184ca17f8383b8eeebd01c5bfae5cf0ad254357dacb7df42fed72d25e9df619fc08a1a417cbdf947df2229c78393ebcdaa2e9f11cbeb885268ba12ef046f78e7b278e6be30b7ee3a346b19887f0e2b39d70a18f2e1d631364b22bdf5de87448acc3ee77c680750ebc878f77379bf360d937e806b04b211aeaa711133567c651a4f2bfdb1b8e8c3d1116a15163aaf8f2b5765c6f71a5105dc92dde70425b8207c494da13736a4cef4ffacbce39f049f8fa804855dfb45a4c2615ad3d92f72a96891908bc9f4009274cf219b347c99968bac4d869a45ddc7dfc57e89d5a698dee5808bacda6cf9b95108b096d914f904ef8bcca98a6e4c63e4dd92b933f4a7423abe7747455a67c23975867fadbec3f8415d4a46395a103d08d02db2ca12089fe90616f5036c61ab40bad76c5dd3c84ad1f02ff432fd4df4771eeb2089f7a5eb0be895ed9ec01b54c224ba5c72a5e17f21fb94bfcfabdaa782c68dd81d16450bfbc8fe3174a55a8c7232ece2c7efcc558227463cd7bdb49a37967197f4bbb58b3f17d094b3e3279bff5516fc43f353434f779136beb4ffc2b4c1ab8a3d2d96b1dea18995bc6145a770ce0a848d3f4e631f000eca57ab5e1fbddfc9d9469e8eb9b43dc5fb11a805d32e168870a703497c3717600a7945757eda78c2a8ff22f12155528a4a6d1d1b5fb215a3aaefbebf29573545129acbfda64c9c3a7ae44df53c7ad920eaba78e1a1f68f07b8dfe7e35ff5eedccf591f034e18f9d1c3fb5e1e2245ef9bb28644260ee60fa55838091ce9941c84195bf7c33fcd135aba557df5ce594cb5cb31637e1ecf3131ce7a49b5e0e9186ff0d7d3a7c341af8abea3f94aec29a7fad976ee95474d77b1f3b57d776930175abfea010a42cffab4f3bb58be4db10e21e0eea9012e0e5d91c2e237f78b3c00c878eb79c3dbe61015552daa0ad9fd8dd2ab66e6a0fa834b9b8a86e233a2f5a8e82343545bec81f03cbbbe93b76faf24f242f9e136a1c7685ad18651121811b0bfc49ad9d0b624439444c3c5777a9166d5d31655ad7f7434b785c26bc795c21ae25cd1bfffc13fc0791ab126a9c035348b4a76277737415fa57456d8476a7127aae100035c68b956da7d496520f4648518281a339cab075533d1531922d87f490847ddd2c3b8ef38defa5fc58822cbb8beb6928a9897efa86df24c2d28e771d365acf0c4a77c7fb139cf9b8508a610caf4b8f47d4db983247e40929a76b372c26851a1b61f7b4f751325d8047a3559d2dea6030c11e8009d4a4d78d47633bca5a33af21e823088734e44c34cf252506a8dd7940ed3621eb12b290df1929f78453d0b5f73f80007645554f005c118e93423a0af8a11eaac02a02c30c491aaa234a45e61cc5dc5453b82ac3f4342744348d4f296a0f53b86ad639af7443f9ed1ca8d03a19f9fcc99eac627844e3c7c234bd32194e526ad92454b493283b5f34200b0302ebc439c6ce921109c58757da83d8bfb07fa09075a1a1337de20c2997c94c320e736ab902779deab744fee5c54e26416b2162c3370cfb372d6cbfbd24ce25421c1d15b66f66b17fe729e9b1108b2e89cd3709edbe7370c0207c5603fa04afa85520ccb89b0ea9a0d689554ac166d0775935d0ee18200d33412b48b8cb2e71f48305b136e5f8c5e9b72bc624c271179f0b90f70e7b76ceb6fda510871954d3d9630a6aeff733956c46fe22ad870fa86d7bef2d939401a60a330a0c0ac3c646be3d5f65e18d5347cb0a122a3888600d1b6f6de1be1b57e7b60ab8666f6bba2d6a73bb4bf9bbe922db821655b8744561f9611cb67756b7b8c8370657616a4caa5c31336cefae6e31916fa7122c8c54d674c831e2356cf7007996ecb6bdd1ba45bfbd6bdc3629a935787b4f75d55dea6f25a5be53a6a0b4502326cb9b8a61e3e46d5b21a7db1eb7156fddf67c3bf6ba2d86bb62c7f0f5edc35df82a0bbd3d0b0168d4bc6e28b102060c0ff90fc478b1648c941352538658c81415ae8afa2ebf273c760adc76c25db1377a75d5571a747b36840e128c1534c30ef21bb8a1e1e4065491629e61fb50b738ebc629a29665eb787582cdb0817c1bb7409ddf8e72f021f9585fd0c7025936c8b26c185d50ac8b470832b4ea34f911e5e4816c12f632512109b7b11363cc0e31438e0c89381f41dfd7d305f884192f289ea045d9d03054813464c8c8d85c8881822584c5c6841ada09a3053aa0187d34d1e38142ac396a5c8859016163599665d92496eda1eb818494c4b26c305842cd03716c30d82d1b94808454648f24c692c7125774ac910496465252d20985e281570f7421e0110acf03cb9cad525401951c12459583655996655996c713d767d172aa2b3feee9fe5896bd4b39187c7af3409665599665d9af26cffeb02ccb26b1ecb3b8e3d395070281178ca130a34bf2d4d3a235453167c2059eba0621d234ca47009eba0a3814d3ab179ffa7c8a81a78eb55a4f8d478cbcf1e9854f859e3a4643f2d4f11a6e4b1dbba56151473ef536a1e4a9b754ea4dd555a99f58f2c16030e8ba351f0ca208fba0860f069594944cbc782424242413601ec985904e1479244fbbc53d129250282c61fcb66d31c020ac8489e7c08183bf0004e053d2954f719e6575503c9e7521d687a0dc3ceb294ba2ec592fea9600eb05175c90e7c703bd04028179d23cd085803ef424e4819e02813ec3a4a4a4f43426b144e08cb913c62becca0e2020d258d073ac8a4ea1c5a4a424258e8414c29d0702811738929baf38556631b210f93124fa0f5da1c027f68220928f88c3a57ea69d6b439c3495857708c443e6592fd910903ceb3f2cbbfe7eaeabf33f0afffbfd58fffdaeb09da6f52cfbbb6281e6ef02819e63812c8be44be2e47fbf5fd0f105bf24bf20e8034bb2e27fbfdf59049e4524df0fe9fe82bf244c4cf5f67a818f78ba25f9d8804020d083be19548fe4251212d09764d6840d1a94534206d903ad2435a1020a3a304902927a264f241252c93501c9711e311f5fa220a1ba10494a8d521d69100ac97f3e2424a4a08ca8070281484024f5f69a6474c77071998123068a245f7204d77ebfdfcf993a29671ad1e19e7a5deb16a78f8341aab30702813f60d0aae717bc5480c88011f54609902238808ee43920121009582c16c3a8b68a5627e2aaef399ec25977e9eae7205cc4880da4847c2fc2f77abd5eafe71cba9df0bd609afffd7e68d147c4f972e0f8d4cb3465b7de5c5bfb01bd6a0801df4c646151468a91315a56fffba967f2d76f7452fffba968b1e8a8144e7de8145a2c9ed16181f1cc18972124b207fc01fdc7007a5d5f483f24a4239914ff23fadf2f45f21a7363c408d6548e2c377ebf9f03d5f54c7ac01ec7b049bbb2f04476a5c074fdc9e89dc833c9b2ced4c0f3a9cdf77a3dff715d8befb9504f0ccacbf79c251e25d10afab140a0e77ac05eeff77b0a7b96657bbfb3374ad31f3005b2486c904df25feaac8f98f44b759f4e893d697dcfc2f77aeb19ee0903fd87e4a1e7698ac406f4dd5e7bbd9edfde512aea59963d3a127bd2e38f8e8e7c3df2a16e7b7ee4e9914b59f2a9f0d3b4cd78813e1c994facf9d4ebf9edfd7abdde912942743c59539c3224faf77a369eb87eafe73d0f76dbebf55896657de8d4cfcddaeb1d1db148d3b0b12c9f9e89d2d5618d22e7533f22a3721446e6962c43fe6e199eb323964f5d03699859904f9d83d443d0419894a74f5d05dd0a9f9c68e8d8d183078c255f2786b8c6abaed3f2aa0b758b7bd587ba3d72d55355f535a8ba92ea4c5f5e750f20ba5d5d750d540fa1ba0855553d04695e7d9575d57151f51374fb73d555a0ba131bcf7ad96d06cfb259ceff7e5f3dbe807d8590ea565d191a4e2dd7d6582f0f8056564dae6b131cdf53d5f54bc74f6ff59cbaaa2acb329192b2603896752faf57bd54c198b478358aeec8b1024ca089e282a222868d21d13f65ab4cf542297304e6a523c389ecf68c97bcf1bcd5799ef69ce72bcf834a4c40fee7790e42831022783e62831020791ecf4fd0ed91f35c05268a788a27e179c724d8f3283cefe73cc75a3cc75cddaace73dcd5c23be4f9bd2dee7fbfb6a88b90343d7639f3699ae267592e65be57267f5d8d5f224ba404a71f707ad8014bfaa04382c61357266f47472c0be779c72d52b21cb9589589dd372d52d854ac50e1c1133c83e86311d6266ea7d1b79e5551399ea905e9d895659568c9adb8754d532c610a60f53c17cac2e6799e1eb5803dafcb7a5464fd685d5796c5d24403eee2742cdec8c88752235f8d3c68e44a46c636556fe41eba9df0461ea2dbd58d5c849183e8b6e746ae81915fb45fd7b5a71b73c486c5a7fe93a642a3b22b0bd162d9a56447500fb346c63566dfebf5d809a47833068e112a88980c7325b1ae69ba80a9a97a9e9a51cd1bcbe6d61f68112daec6344f9e87bbba323232328ba1e434721a0284079d2b309448c1a04a83c4180bd2a58a10ac303121670ae0974e4f148b7f903903a2044c568ca49b3576858d81f3f968f23cb11f525c74466c92206f27767c997a8263a0275888199538d9f2644874186bca0ea03cd1587670eb57d9a7696a94a6583e9e278665a682ae2c66e18974d2660b0f54087240903324ba84174f5c85ac58ba134e0c385fcfab1227c5502f5db9be2a18f5d6d573bc95c72bdf68f99e916794a6695ae6d901a4a9d1da4bdbb09ed756e54d560086dada748cf13851a7cb933a43a24ff1f2b0d111cf341e2f8c914f09f06998369f4af911d3c58a21939696f6a6fb40268c12341e74542449d3d405055e9a8e21f97405e3c1f3c024bda4699a9ec0bcf444f67caa89914f4f4f2cd813433c1eafd7ebad349272b87891920bf3b2e5d3e307383ef5a2fb81da4fd8076d9f7a87d499b44408fb4286cca7de34f6e9a761685a3e750b848189f1a96ba0db0c6b77ca17ac156eded888516bf1636403d9eb92e697a40126284dd331379fa6696ac425ccf372615da4caa43c1e8fc7e3611e8fc713e3f13cde35320adbc2e453352e393ebdc1dc955e94162268672ac2ceb60c19197fac4646589e78c942e37962c2b280a0742679697a24cf8e574664c58aa91b45deb0786432e5f9ce647a7675265960a1913ab2a5815171e71469b3a3071d63f2294da5f08a0b3ca32327b257dceb191921a790a0049fe743a9178521dd3cefca8964e21601685dd97c20a6a30c7726bb35f2ad3c166805669c1cb3a6a8419246c513d77545cfc888f5a538e880e5e8c260286599647822879445168b4529ab3131387a48c889e1e0124bd162baa6699aa627d2f4449e49232393065ab471878cc7bb01f6bc2a62562dda3369c1288c6d5d79f869c6152c34ae3ad04053aaa20a530547ac06f28a8e9c980d2158ce24eb98ab8c1a3074be80347991a64f5cc7c858df995c7d27f2449e6a658fcacaf3d0c46408095324129be18335f2783c9e3f8ff7c415038f755e59d8113a75a4a245d3c8f4e19e3c031def47d42105dd88e7ab8f18f4dd5e8d1cc947c4017d44ddcf471c7a9eb3ac1c1b6672ca1445f1e6f8580a9b23e6180602100cd0a91b6bba4dbd9da88dc8ed2edd2fdf4e949685a79168eddb89aeb2f09ead39b296a78616180f86ed4459dde238df4eb4958519acb0d494e05185e6c9b09da8ab5b0ce7db898c596841163332c49068e30167d84e74ec16bf419e25bb6d274223aa71dbf3c87984c8eadb89a4bafd793bd11451557bfad642dc13d0894426be3d3566e10dd305c32b460b31697386ede9b15bdcf6ed29320baf99aeb21e77bea0d292c3f634d92d76f3ed695a165e2f765ae039e1c48d1a2dc3f674ad5bdca6ed8a9c16a2c3f6d4ebb6678d1ae9d7b7a75ae956da7597d2ab2c3cafd2ac6fdfa565610370b0cd9902d656e7ccb07db7d62d66f3edbbb62c04c09a2048c0c2c4da7019b6efdcba4d9fb2d082363bacf8700b41899c617b5aec16ab99a24aaba27c7b6ae5e5b627d409b543fbf61d951d7297bc4bc62c3ccfddf1db774f59e8540c83b216c5460e9b9261fbaed8ed6e2a0bef9a1266b4b479faaa2a336cdf55758bd9be7d77958544155c8c65505c61ba0cdb7759dde2b52dae5d57936fdf7d75eb53e7b6a61d3b6f575978c500f17afa8ae3440bd6b03d4356b718cdb767d8ca42232827c0cee8cc60b3366ccfd0d52d3ef3ed198c5978812c78b2e0803971a41ab66738768bcd7c7b06e4906fcf70962119f5ed19d032b46750cbb0a6cded2e69f8f60c356e6b8e1993c1eadb33486598ca5075977cdf9ee1290bcdb50cc563b2dbbbd6ed6dc3d005ebdb3160f0baad696686e1ebdb316861d8c2d07597d46fc7709585669b18dcbabdc56eef1415862a1ddf8ec16ac8cb6d4d234686d0be7d88ca1072287997fcdb878c596876751dbf7da858d5edcdeaf66e710d75597dfbd057b7b9ce6dcd1a35ded6b4b9dda5deb75f48cb42f3ea6aeddb2f5c65210954a4f860890a336e4186ed17b2bac56adf7e612b0bef1ab01e5e82c8788104ccb0fd4257b7178c59e834f562c79230382ce4e419b65f38768bc920cf925daabefd02da851ab7356198301e3bf182d5b75f90ba3075a1ea2ef1beddc25b3bf182896fb760cc4227acac2241aaaa42107365d86ee1d82d1ef3ed169216d2b2504494ae1d6a34427863366cb7b0d62d4efb760b6d5d8adf6e418e05afdb9675ca3a16bebedd8256b747de6e61cb42d75d22fa760b5759689a16b2bebd425a16de0f66bc21a26525850c24c3f60a6bdd6231df5ea12d0b6f9b09a82741c66c90d01ab65770eb1687f9760b4f59a8214d9b580f1638be7a0cdb2d14bbc560a6a82c7429f1ed16ac2a78b96d39a6ac50814ab7aab757a890bc4be9b757306661b9963760aff0948517f96586e6ad6a0714d6b0bd42b15b8cf6ed15a6b210288cc90a216b5924b886ed15aabac55fbebdc255163acdc05366c81210a6c8400edb2b64758b3fd8e2aad055e1abdb9e3ab72dcdcc1ebbd09a6e79de2ed4e676977669595822915759e85495656685da96195c4d86ed4259dd622f5938828ed90b1d437e8410366c17eaea56c898854e37d8503991a2a3890f2dc376a163b7b80bf22cd96dbb90508ddb96464a234256df2e24d5ad91b70b4d0955dda50cdf2ef49485659750f1db2918b3f004554f7490dd5801a4cab031976fa780cc42a71d5fc2b03cc19192e769d84e21d92ddef2ed14d2b2f0823047cd8f1a59ae0c89336ca7b0d62d3e6b93e3d66d3b85370a5eb72d6bd4a0f0f5ed14b4286c51e8ba4b18b2b0bcbaa290b5d69685370ada54d81b91322bc3f6096edd622ddf4ee1290b3d10a54c12a93434b8a40ddb2914bbc559a6a82854a17d3b05ab095e6e5b42955013d0be7d029509c809c9bb3494856539e158aceaf666757bb7b8ba8d50e5db277c751ba1ce6d331bdbdb9a36b7bb74212d0b735bdbdab74bb8ca42270fb69ee2b8f001828ae4b05d4256b718cbb74bd8ca420b47a0803d6dc1d1e5ceb05d4257b718f9ed128c59a81eef644561d5e8b21ab64b38768baf20cf92ddb64b40ebb6c66d739660f5ed12a4244c49a8ba4b16be5dc25316e62ca1f8ed3a63163a9900b20348151227616cc376ddb15b6ce5db75c82c8c6004c8549d2f2049f20cdb75c96e71956fd7a565610a3c70c32589591a1c4386edbab56e31953632396e646f3aafdb662f2fddd7b7ebb4745bbaaebb54e1db755759988dc6ac6f8f909685168042c304859b216f9e0cdb23ac758ba77c7b04b76e6fb1db3b45a5ab12fb769d55b7f9db2378b96dce11d0be3d029508c808c9bb24f4ed118c59987384e3b74778ca42a71b517aa8888a2a02c28d617b8462b758cab747a8eaf666757bb7b82274757d7b84af6e73756e9b6dd8785bd3e67697287c7b5032ed5b17b4f6ed415759e814848d080e2a2bc48ea80ddb83b2bac566df1eb49585370e0ead1f46c484d1ba336c0feaea161fbf3dc89885381d79ee24972461831ab6071dbbc565df1e846c0f3aebd6fc36436528ab6f0f92ea9668c2b707e5a0e2b7031d93dddeb56e6f9b1cb721df0ef406e475db666303fafa76202da02da0aebb24a1db80b240d4b822e3234d96b5e3b0fd67ad5b4cf6ed3f6e404f5918014d9e30723e0003c76bd80e54ec164799a2eaf6a71dc8aa5b2fb76d2c587ed0befd87ca0ff227799774dffe63ccc24efe3c65e19d03e6a5cad91121567e0cdb7f8addfe4c65e102c8dc6063fc1245099661fb4f55b758cca90998b217532ee68cf518b6876d71fd7475dbfef395ab73dbf66aafdcdbb7e7d6e4da726e7729c2b7e7d2b2b08d6d5cfbf6dc551642200ced49913a506ed60cdb7359dd62b06fcf75757b8fdd5ee499914bd4b7e7d0bacd7d7baec66d7b47efc8e572b9aabb14f4edb9a72cec2c1f63162640889b1f79d6a6a8c0326cf739768b8ddfee934ccb42a72a2c4ec8bab2b27eb419b6fbac758ba1b4c9e916c8cdceb7fbbc75eb75dbb661c3e7ebdb7db47cb67cbaee12d0b7fb58b5102dfa60adb9f9147da6d27cbb0f550b75c3f61e2fb7ed181de3b1137bd0bebd874a4f4ff22efd7c7bcf570b4f24ebc49eb1625556cf56f2db7bb85a3861d88eab735b5ca7cedbb701f0765c9bdb5dca7d3b2e2d0bfba91d77958519a83355040f8937327c0cfbc9b7d30d316f6e703041f2c1dbb01dd7d52d7672e770d971abe35587cd9d613beed82dfe429e25bb6dc7a1755be3b678cc18ab6fc749e1a6705577c9e71baf3502c456704971c2861b30c376f4d82d6ea27205790333a50cda92616326df8ea665a19311e38a156a59a0b47019b6a36bdd62af3639dda258def0071f3c76c2d1a3ce8e3b5037d2b00ddbcfb56ecfb62cfc60654b11146035e24c19f692efa03342d2ae9450e3f66588954c51550941afbadd793b8ad58e6a754be4ede816da75977abefdf4725b0c0676a27dfb49e5449ec9bb84fbf6f3ab85f8788e15abceadb26f3fb95ae8336c37ebdc160709f2f60d006f37db5a78ddee129a968578abddcc72fa41d626e6c54e1eb3e2b0931cbbbdc8b324946f37d1cc1ab7c52ff00bd394ea7683b79b66d55d3a1f5711cde2b701ca749173a626e488d8b0cb645a16de3828d2c2ccb06151a2c6b0bd5ceb16236993e3d66dfb7c7be9755b14d479ecc4f2ebdb4badb2ecba4be6f7d3d35a769ba2ea76428fef09df9ebddc3603631eb7672add7a7b4edea5f27b83b5e6ed9813230ac9b585cab03d17bbc547be3d4f65e12d43e2adaa4b0a2c794a04d99793ae1af5b09063262566260357ec174c54e8d848807de914e3c48c393a8c2801e3362cddbbed17625372e08214fe8a9120f2417fc5485c9958a05e1ca5a89032052ace54558e136f566c26c8a87051045484c944772fc16107cff7fc3ddec9fa81c20470dee6a465b1e3a4d8c2a96b875671ca973c6546166226d44c7c80a24497588ab136364280233526e6389f7750c295a9371d662850ec18962ba448f9d2857c25e3e64b3fea1607d70ffa7b2433a69c51245a8276cc53f6b9bf664d34d05d33256b947879f7a2f5a87df519ab81ebe9f19c2ed7448deb562fc22d29a3c49620cb68e1d271a5ebcab264ea087fc5a24a7ceeeff14b0c1a47d73ed4ee1d16acd2b917ad47655996655996655996a5e37c3a2105e8bc683df222097f8f6f60dec2df239e234ff460d926d7b8ec76eceb6e54c5e50db84f629ff86fc63e22ee73116ee9d3651fb1f4db4cbd02ec647636cbe10b8fb1f0dec7ae005d77f61dfdf5b3890ebb4e08fbc5b53f1111358560f270eaee6de14c5918ecd1f0a8137fccdb6426c5ad7119f70049cd78e15525e6cc102f192aeed8c1b200dd35fa3cf42a3c1d3765e1e963c22aee58296b93628b1b8f61a7f8765dd4f7f1adf8dd1de4907d223438de497ba1bfc73b549e88339f4a002979c343e6cbbf473c619c5a64b50062254d9517635dbcc99bbc491cd31df3bce106831c943a042f85326594ea86891b1453d2b6d83a6a2a08d5cf8d1f272ea184842c4af2e47a729ecbe574407a58842035246a0895160c0b665b3e7fcd8498f8a0bf6641406892bbdd763e7399cf7c5195e8e3e0e7b33375ae2c4bdf59b6b907f0a6df0ebce94b658900fc440eabe9e6bd6d76e9bd9e5bae8f88bbf7afe3fae624506ebe49352c346f27c26074a1d07102c7a536542ee11c566f82e58833411706a6a242ce38ccb4e4f22a2932a10c2226aa4c45181c4cdc4e34652113ee7a38ade4bcb945f71ba8608911e3c58ab42243a2bf699aa6699a78e2faa6699a5e6fba9207b32c73ae0afbd3cbd3712bfe3ccfb3c6d69f9e76eb26fef4a213ccc6963ffda8db0c3828b5f8d33b30dd18f3a77b381d8415d79faec1792e41e15345053c93b09d42afab2d3ededa9c7c2981b2e94e2f6ae11de279b3fdf1f1a649e3ce9b8e93589d46d01459bca93145e29c01f6a612339f21231445d10c74a78bf8b9e88f4f44af1857e6193ed2b30ce2f9f32ccb326168a90299398a181445d126ffb62867195457ccb307855227e79ccddbabe9272eff64a01ce46690cf817c44dc8f8fa8c39d6549d5e651003c8afa40d38151e57813897dacc9a1e038a54c101064a86535545388d3b32fc4799e3e114d4d22de7cc4a33f8b7c9c98b630e744a13fdd4353989758504ef5de8037f4b8d289a228ead3f58af187384f2b6feace306d9698498120058421d1ff4c1f43e0b618cef3444f57ca423fcf7e3acfece779967e9e3ed371bdea4cac735c8fcfcff34471381f11454f1475f4548b5014bf8a8b7a3d7dabcfbd2c6350fdd267dc33354e7887d90997391873b788984b7b7c660516296c861a56dc8f4ee82f06455df654cdbbace6dd05e7cf05526f12a3a92ad1e955cf65a0eb39deed84709ea19d080cf083eb55d7739e4ae4a0e877deeb75138df0a10ecc4ba573c6d7bcc727722222676a22221f91030edfeebb34cd69a7449e6b4fd59d6795c8cd347bd9f6e615cf3b75a2ccf3dd5ed3acde4fbd554fdd9da95dbd6f027d507b3ea2d3f73c4d7bced427d087d47319e88a58f79d4a74fa9d889dcf47747a9fe788d4fbb912e8c3ae993a63aa27ee88b2ba730cc4538191764ee459dd79ab3c47813eecf0d463e333756ea7ba13a9b88891b2f344f4aeb10a8c949dc889724eef9e55c7547ad7be1d46ee76bbdd6eb7f31139507a235f8f54baa49113f11153c159dd5fbb51abc6e4ce316acc42f4ca6881ef034af871b8755d9f30d087b58134706aa5a1073b05ecbc773eb46b3552ef5b3df633868e187c22071c883b770b2cf0b2db760b3c47d46ad9464454ca79e2ce3be8e7ed9c48256222a007f0bcd59df3d4720d466a275273fdb3dbf9ba0d466a1fcf87ebd502dfb5df2ede07de55b717abdbce3b8c729d69a79a5aa49e6bd4b34d2ddb7a6ddf11b9d3672752cb361869977a567bbe5353cfe11f5eea3bdf7aeae9a6e14416d1aabb54fed2fa19f805fa908133354a0500dfa944be568958f7f99cd2f188705779832994eedcfd764ae45b725789439ffa9e3a28bf078052a152270c5d071f41f944b4d8c151a96eb397009d42a91e7b978f3b28bf8363a004747011dc0e6e44bb4b60ee00d0b68b841d3bb9f800cc0b90ad2744c80c719e5f728cc2119341db011339d07319e834e835dded90a90a42d0c1ef762a717d0d7a4d3dab1c04d3dd2eef7ca90f48a41239b8699f1de817e883076edaef7c1d007a013c07540be018a81b3e778112500007fa4e05faba3a062a113f064cabff1d007a7591b0af1c7ef5a316a24657ea76e72bb1c3afce74970ee0aba7dd0a5d8313fd572fea7683af0170e2faebfaf3ebea65b7435f1dd72debaba33ef48a77853fff28ed949ca993b2f37ca7e6a235ab43e91779920731b25b9efb884defbe5389c1a2cfce5389f879ddc61e6a448daa1bf91c2d669f639fbb05a9baf3a5c415f749ee6a51d1f33c077da726394fbd7fc425744127e2631017fdce7191ca41f0839ecbbbbcf3bb3b8b861e043db741c51f801e0e8e377010aaf835e09e7c1cb78e59d583a35706706c00bf6a11e0f826ff835fa00f1f9ca973b90c744a1d76bb9df33cd73f28b25b77ccf39d8f98556287cb0e117d5d7156ddfe5cf50d6d9163ddd1920637c23de990da883c170015ffefa8881e1551fc538fce291d11bdcaea36008ed50deace8b34a8f7fed0b6317cdc115923dfabbedbeb4e1540877757dd77aa00dcd5fbe811694297512a1dde1dab7eb30bc073a8ea0810c0ce3fecdc07c47414a8834fa95756bd2f6c555caf3bef517579c3ce7f54cf1b769ea46ad0ebce0fa08ab8bf9d73506faf4aeaed75a8ee90bfc3401fde17ec75e7409578d37e87817a7f5509e03bb59d4925f613d12ba2ab449cd66337803a8252250e59a0127f7c2ab1e889b8a702a8445eda0702f8947415d4be83ea81f507e0ebc09203e05cd3adcfcfb47b078b0cb62e3b48be96e0101e7b0e002a71e74b3b1f71fd9df7fc5e2200008008003ee2ce979c29efd4fb3d958375c9871323511c72401d1e693cf0ba4a3382e771389d6e68c8fda95bfcf63bf791f53b2f5a33c50d152b73da241912f930896357169f1400c972e6d864cb548e3bc6302a82a4f26059e10943a4c8d18e11949f227686a8a043d6860a4b9d1541bf9b0a018463d4158e1273dc32d0ed1c87dd878688baf7dc491dfed4a793701c6344b7c11c2839aa981803e6ca7047c7e7534098339e9776220feddb7954babdc0db79485ef22edd32dfce336621dac6c189bce3b7f39eb2300564b0a2a89043a30b99613bafd82d06e1db795359e89443abebaccd0a963753c3765e55b778ceb7f3aeb2d02947191e74dafcd001a3c9b09d97d52d96b3c5c5eb3a73fb76de57b73d756e7b7a79bd7d3b5120a824d1d3f43969ba470bdd2402194204084d59c89491c1a1121fe04c56de707143a69aaabce1e2864024c140483bbdb4a58d580b631af3ed65779765590631918348e520543988550e8295836805cfa0e9024eeee4a014454d5adf6ed1f6f2dd67699666d9d373aa6a90a5197481e707650261f40042cb94962a2d575ab2b46c69e9d262d4722cbbd8dd5a4c9469299e655996658a2fbdc4097993086408116c4fbde1167153baaaa12bcf5ab77ac365ebea0df78d2c4a80a644182c265c5ce158b2c6a66c0dce4975c12c43f649e1ea5e8902478b8c8bd49c144aca905ca2d80cb95096d93a3221c370990984d10388b4bf6327d6f4598e9d40539a5937624a4a9089eb201cba7bfc1be503b5b24fb344940fd0becbdcdd23ceb3c4a6699a30a87ac3b5c261e9b47ac385c1d51b2e6e3d55182dcc943031336e2ae95326a0ab2ccd28262d82489921b1702529eba2719c63223381a0924c6b7327a5ae09cb0c872a4dd98aeab12941ca115f40251308a3071025a68c64d011477ccedc24021942848aa42925b606c3b7c1885ef1082620b9b2476c90a6810d3cccc81a91854c392dcb89558541d829e60df74dc7a1be111b68c0a7811159e8e3e31bf1226a840fe74d6450dd082c04dc78ca1b2e2ac5c6c606131658480071e3fa6e321b6ddf27130eeb69030d8cc8c2a6b4a3972b4fbcc8b6096ac67bd48a5036894086108100315765130a7ea32b6fb866d00a51378940861091ec0d372d0124d6744830186a32e412637d70a3d51bee3365615369bce071f044be3e17681eb2d4725308a1f471d1f748e60da72a224453f6e1703f3a211c16fa0b3645e6cdbf6660619e788d3e2850a0e5e1b2028f581592314eb0644181d646ec088dbef74c4ae9b0e98dcbbce2de6b9639edafb7897b0d904b08d2e8226df7983662ca3c7b7a7a7a7c4a1dc21bd3c4bd08c09118646353c46afc30724c533545469ad964ec613a16a122e02611c810684f7737dbf7e963f2d0e3eb39c95c94417bd2cc2664331da3eca019edee36f3dde3674fcf39458238623cc840982366cbecdb87b67ca3ce94517444cf0c10587933e48cc9539b1845c6b418a5d841d39ec388a60dd27213fe96d1798a527be245b6058de5725815a2c39e8bd04f227087ba6ea19f2b2454163f77372e75f7feae97694e20248a0b3c61c242c843a4c528318796e81b5ddf7b6f79c79a05d199a9217672c03983d31e88f8ecd7d76f6ce670eedea5c6f8deb2f1cd45288aa23ee2cdddf2de5b72b0fe3d7166b28448b06c61c44790a02b05390475c11512bcc272260b332f5c5d6312a272410ee65f30ae3a3d578c268ea9a73ccff334dbe0dac8956f5c7922b9985fd034718830b9827ed0b3a68d6cc99c1e348a89056543a62284263e17d9e326cd8ea8211ad03968c4acd8a8eaf5b0a9594153d4f1d03963cab85475296112a511238605869d9eb40d1a19183538b81d1b2f6434ced87a32b4e112250436b3f2420f1b1632123fc8b205d4cad89716b15c616d4a9992345d3921b44d8a8d2793421ab3312f293a7e24bc21834ac205c679eafee4e0d303678ccc2a452e421b18d909a41da0203846b12b2e8e2ba6e072289b276374be60417dd634c183f6a06bbacaace048e273bae12ab6b8596ee04a94cd91273170546836cb3545ca926c4a1fb17bd0153de6599665d953b6d18a82e74e69e234f89c7f3a4ec8cbb22c7dd410bdb20df131d683face262135e7798e89c91282c9031388f2eff14cd91371ef833fb0e54c23b91b391b994b483f09008b0bc7dd83410e4a1d82a50a2a644a410ec14c66960bb60cb3284f49f0905a099fa1365fe1efb18c972df7ca0518501fe39c73f611b3fa39fb77a039503950fb0607980459828446093861b4dc8bd6239f1451b6a230c981b1f959f18486041c67b8506901a348d1078f1e02a50c1439194a5a9ed2e24ca2c55db77a912f069518b01d4f54a6c0201392060eae27059b121de54dcbeaf1a3a012937b00d124a2740b749bfbb2f4fd0da3e1f5b8bf6134dce8c464285492265a24bfec500579a2eeef500dd6d760908352871ebfa78930386e389c120ee74c1dec41b7b2e08268d496aa60d083fd9818641b1a438d6c678ffb6b64a372e29120a1003f6366e6922913cc7804e95812e5e76f98190fe0e4b10e4a17bb37ae8dee3ab1c887ae505689fed9cb8cb677f9bef25edc91098f92346a57505424c972baf1561433458b8e1c6340a4cab6c773383397b87b661f56891de46f2f312e330e378cc679d430645d906296aca5c8d23f5c601f94ee3a2e7d1d98657996450ed45bd9121d543e8c244ca2e720aea5979c733ecbf24895a2236fbea9207132c14db3fcf2e67996e59112f9d836450acf918d579db3b184ca285072cef92c4b235fda344dd3344fd3d4f266ce399f3472591e8dccf8c631e9b285e2dbcb3e6ea17db7eb84865cf735c42ce2e2bb48190d1ce03184c5963536343a7a0c9509396a79f0a6e9b8a837fdc7831f5c3c78fb42a48b52c70153b3718cd3c24c777777378f16eaee6eb2aaefeece9a7ad334cd2cb737cd205bdef4d47417c2f5a617ad2cdef4a32007571ad2e34def601e87bcbd99f4a61914c5081036a3210913c498fc7892f2438a17203dbec9ce0db069b3ba1a03a70c4eef30cdb22ccbd3d770da78d80167edc8e383b41e4cbe07f07dec31e75beddb1dcbcbb717f918f2bd250815848bdb8c1232c8745cfd6032ada65e45b0d1e5f3dcf1ede5559cef1d517e43177c51435123cdcc982e1d397eca9c3ababefb6aeadb7f8486527772e12565eaab0b079456e7882046254b8e3c190c992659540e21ab04c05449f2e62acfd499699aa6899a2c8e313c6f966559766b8630cdf3c471e7fb1b579aa60753c9347b83699a74de34cbb22c9b90348a7010f9f6b21b03374a54d47873e60d1a396a56ec052af8b2cc8d3be81363304f451e48192bd4bc4973e3e85e7cf18feecff4f46137317afa8efede8be23ce344101225bb2567462e2739dc0c3730a0d6e6a838b1c6898d23688ed8a16075cbbc8cbce82a51840c961a537e784580815348212126e5054e2734d48488cf1850599665922f71391d58150a5f45344a0f31b909551caa88f19981821a59548869e15833d5555b2114cb021c492176844559966549c588ee7806c990af47c1f4eff10c0d20ae1f2727a87a55299ae4b051855cd334be6e7cf51802c0dfa399379fe1efd14c971f18d470b9a11466703260d14541025159c0048605291b9a8405d5f932c8c8da8515b80b87111084a0ecc830d603c3969721b32813c6d07460602a18211a7b2b2a3ba1614a9d1d591a0c655e2c7045a140d6c582af284549ca0ca100f2a2b2c405062ead1fe38b212551e90ab1301f922b4553b65c7852a68212b21cce82133a13b8bee47a7a7a7a80a6bc8872f3e510fb17cc47db4bf80be6434c2b2677bbcd1bc68c5f5d5c5b5a5958bec6185f65ab5eaf59e2f2628c4dd39c922a6213bde227159ca0831070b081067465e91bca1baefbd0d3b3cf74f38ee8d50238e18943f30611219a3400e181a983630ebd5eb3ecb2ccbd82762a7b280c1bd40c3c0481b2145af0d0899ad2326368f7d72826cf03fd358a8193f190689247098a28594ec0649c2930955a1a5d53397921e66447599665599625a6f057ec84981c6ce6262540670e06392869d83ad16602e1e1e2906663fd9c65ce399b5d5cd9cf6c6633e31cfb6dca429c8fa9a1c48ca065f466f9b9faf6d2854ed343b064f2004283a3da5bd05fb113303ef757ec44d4138339972697bbf3ed6b9618e3ce1297b72c4b2c370e941230329255a0d4861d43f586525202eceb8e1b0f943c81c136a23b77607efbca128fa0fc0ecc3bb99c73ce18e7d8ec6b5ed37422ce54ef0331e0e6c963fa300e9d4fa8942b5aca7a52226348600402000003170000180c060785c2e134ccf334757714801052984e565846920683a2200b511cc53008c3186308210420620832ca395507012e4f39e80144176f2442c2ddec55acf49fa334cebb9b81563dc08c0c323ab7c4f9b62cc6fb270b47447fef06aa98e57b14e8ac24ade344023ce5adc64cf3fc59b5ad904ca5fbeecbc4c73dc779e7e9e50e7eabf771ed5252264d48cc0febee607c8ea8499c3760eeae9192f03fb3928cbaac02b5548f2cb1a414992aec848f0bfb69f13c302a876c037553a1d3a32e2a02fc26d710c022bcf342cf90e25cc5f7d117cc912a7fbadfda85b52dab75d7d3f3437b258085d055621f8257f805a396ebb9e967725e3a4da9f92d1b89fa77c1b00a9c6463809487343f3bbf4b95192e4b67f92662ba73bd60f250ff524613f8430677b931603391fbd87c462fb50d0517b512da349abcdb805140d7ca69d5775b5830e60bdd7fb492f81c4b249fd6c477ca0d27fceac3c023fa2ea5a531d0b1afc85bb3c09f0e61eeaab4d9d8e9e82229cf2784d0ff2f865371d1fff21be6165d446ed6ed1a2b90c4fb6428f2ed72623192aa5875d53f3fe1f6a4112c24cb84c13cf749283eb266dc804ec9d8d838325469a5ebc8dd577ea017f62029a5b6b9d51b88dcbcd6240d49d2ee4024746fb99f5fd9d306a3d32f7b8d4141a73967eba466c6c1cad0ef94371db890123d3bbc05ed0d2c09560dc705a90515f24d705f7d8d47f7c8441236244a9c7c989b4f40c6252637c109fee9aa422c7599d2b148eb0a2bad841195209de173d9bc10fa8267d8d249d46243b09eec89ea9156fc0821e717c25da6487a0faf41356cc9cb37fc0b1677b5a1546c58887a93100e92be25a2b7804a457ec996b56c45e8d904ba1df0f981a48526b975cefda794eff9e0dd631d40ceb32e20e1270f9e88f139a4a022e6180fd2ee05472994df5c8bf5c4aaf04ed2eaf140350b17506434296b892b7a467d6e13a059d78999f161a6b1e7b32952fb76601658832c03ba2b5997e39fb65b7fe144beb62ec72ed3dd1792392ec35262b1051c810725b1bebb901e772b13a5058033e39a711119a0892ac38c08b9331f228c62b184e9e89bf0146fe3ec258900f5af543e8498a3462e5d2cc1da50060ef9d275d0da3820ca83cb09e4ca04e4a9c5cc0381684488b2be6cd9ea2a9987d645e0390ed8687794c1e21aac96313c279a1d4a1f3ff74d512e9145e9c849009245db10339bfeca5a2aaaf0c1e580d9183348aecaaf5570624c41fd8cb86eba2ad9a0f11d24dee153e76423ce0f06111f3259cd2e21629037c846646b028a48d4effc4124d300ca85435016f1b638b9a56e5829311a5f65386f0862f805eccd6955fca8fa6d8167a82c14ef10a5dfcd7740e8782aba78cda333ba25532b113ff19e51715e4c874e64cf59152b60ce87aae74fc6ec3a10e014dc0da78e4d41d86299f70b69c324bb6f72079bf9e59a5f2cd902ec6914e5ae6cefd86c7cbf3b14d5e1cabead1304ab52372df0cdf62a1add3dea1318783289125c318982f151ad9564c3c111d54514fe943df493743ce78bec209e73a8ddfa28e8fc8be5e95d0a7d2e5d2fa8ec9b3ef845266804418936db6c8708ce91b67ac4e3ca07261a1ace40d7f717b9762356dd0ef774ef798d5fc5840bc84cbed84fbe8920482a00cef8a8e3a5382b6712cfe93f6a2fa9469915871914751700b17098b46abfb6248b62a241506d8cda9aa9d73b51290561b1a76c35262bbd29c59ab36262ae2335368eacd164619a1c55db54842d37b3f4c438abff1f8ac910f53fa105dd1bec5a1f8c2f6004083dddf2229ebf4505a9e4ca3c8ee5a2e0a483323879065212474fa820a1295850c30bda34d5b9f6bb6ecdc8a6fa1ee7b5416d5786cba5536e369ab887c7e0a60aefc0dfad260552667236dcaf698854777f50ea2830d3c37a20da5b94fffe45da6bd5962b214a5403df618e5985b3752fd64a07e1693fde3627a2117a57e0de42ce53d069a13f47154c322a8ef046f3f1507380639aa3f350a0f61683f7872039e6204254d8f000a0b9a0af3df4e9e356e7e4441a459b5075ad645307a781e0b862e6ece827468689ccbf4afd496e129b902c3f0d8d952c5c2c6defcb2c5bb03c49e94ab0f71ec7fd121cb853d087d12a5c3d3c1cdffbf8c2014fefca3569c2e0137ef3926922e4c064163c3b8171398fdbd318b1e67127eb7ac3e2407314bc20d78c939f6ea4c2a99a61df7073140850a04fd11fb46c3d6200fd2d999fc344cfb481aa42994a7a2dbf67d2bf3bfc88bfc6576e0bd74aa6a403e2488d2e8194f433f3998371318ec968ae1a4d99c523264ff0c9af4d9e2f67b8b1d259925ccb25e19256111607ba929a39323df6416173d9ef5e7430936cf937ab70aea6f7ca6b6ca770826477de432f911456907c889026b5dfc02baf8b8746662f5b8e845edd8e84055644012e5e16dcace23706c54d8e21189a2d793519a2b0ccb8af678ec2fe5c645cf93f664b527e428b812085e432c4e4990ab3c40c64e93c757619b274c6556b9a20efd4d172d690dd4903f2cae430f724835ce313165bd0b2850556190c4f86a02d8582b9acd248c29055a6c6b30fef429f88e002517fcda4f9ab2f5aa51152f0bbc88eefe638fd1472ec429f7932b528fc0dc6adea4e360f144a0b7825243b7915000d47d5d21997e3324b0746ee17c1c93ec8abbc0e90e0ce47f94427fac09c85fbc4ed0d8670a56286900a9162bd0681c6ccbe086195a043d160e86584e8ff291a987a955e664a5f949411e8e485160faa40408b26d5fe480e2a80169c8ab66366909f95b81513e03d286d2cd63a08ebe49213d9025f432cd30039bc9e34d5286069a3572822a947919b68582a11cf608984c5347941ed09035015cba0edf2bf28dc5293fe5f106eb89740d3911bfe23f9854ef9a59f44fc2fb7e9dbb84cffa5d6963aefc1788271b66dd221732fc3419d1218e4376627410e63b00ca9f1e211fb48564a4a447bf37131a19e683230764b0ca7d525d4787a129c3823716df1da9b1cdc29afd0e32b1778cc0a12dd3879304913ec5d32ca700b1ea3c391504a4abe49d6df5e6e93a9f423ec25fd582d899462922fa938809bf86b5302a0005ee4617e1f8855a611e26d155db4d0984fb0d762150421665ce643c09f60c9a03a8d24e066bca51d85f9047b2d562009c2d8a247d13ca1b9be787f7bb99bbcd20f145dc271562738a45f0326795357427917173598099128554aac3c8e421586dd528f6e6eb2e8bfcd4b220edeca7bbc2d1948ad16c9709d7a089a8dd02f4e211c7acf323dda7f4254452f04690f691177ef6283384c0cddf87326052090ac6f38ad94495a499c2e8b42091e048f172dab9a3be5bcf38b25f25bea0485132a72de79be92e61df51d14ae88822512636524a021c862f72194802ebe47ce3bb8b0483c801130ea585435e01e4c44a6cf4bb44173e5410f4602771943430242cab2c5502f164b7c1c9212d6c2094fbd37892ad52c8f71b4409fd40f53ed4ae7e664a3c3525e93069e8de7204bf297b44d1c5ddff5a0c748f09ed51d9b93d91c0f688ed471875441aa9ed1590e7cfb7c90f9d1ec1483928445ce1881dfda6e48b20221c3daed5ca738f735ceccf32b09d226891e8b71d902e9f927f52520371e6a0803cd87abb8ebe167e8243f881eb0f4b824ed0ab90a5847fc1fe71f42240ce3a84e46d1405f4e8adfc87ed62769debea22a7d705cfb39e3ab3602aa186ea5b4459153171c8ecd3caf49ae18ea30e1e2eca121c8c656520a0f2fd4e10683b057b12d7585e34a3df928a52f2d764045d74c383b1389e774ce51a4d0274c924eb04f95929c790acdefdf77a047967058bd9e17eeda3d8cf1ca3b9be250db90bf8115ae691695d5c3d253ba95f5b93e865ba6ae73585fb317df09b56a074526c35d1a4df6e633950e10ef9477fae2f81ce01dc8b4ec94b0e19de2c2210e159f83b6b669e4fba96196c125de280a39eb120c196cf3f9a69400eff5c7a13c170ed5f3f03206b640e6316941f91752ddc088f2baf813303a30c89087cc7bdd22ef67a88b2a48b095d8c362ac825d18c1b854ea908f16fa98b945038790180ab005b680af42ff2d0b4300363bd4d4b8e1ad73a35df02e5d6b0e0e14289029a47a508bb3e26a058a2c390cc26958e29ffea87ca0065554725ee5d9869467d4560567bf141becf9aa78ebacaa7af678c68c790265c6a462f89f7cfcdb7a7a83521048e6fd09445351103c50f2ff23c2a4156c1981b6b7677848b8ca235859307704204e31694bec8d1a094f35708b1c1ee6740a11b79b16722caaa4ea4f8d88c86c529e6b813059118c85103dfe9cf349b8d5c7f93d1ab5a5fcb264df669ceb6a3da01df9fc6ca3a3aa970eed88de76d840993def51a5863f20d09f5cf4eca4fcc9c099b85276efe38d8d0a221e0ece739eb3792510d25020038b154d1f72383a49a250fe02247531e9545485e7a88b3860685d505d8e181b5d72278ffed95b15cdbf337767ad03984634e81fc1f636860a5ad48129e7d334be0c43485ce985b6dd252743ae10841690400eb1241343f80500441e37258d74c019a62cc66447f50feb67ead01b9c490c911927e4b463aba3caa58a247c142757acf2c783d6c001606d53f7ebbb73ecbd1ed17b4b92b7f0584d4a33dd3a4cc704fcb729cdb9437744af55558ac28b639d07ac1ab662b07ecf0c43cf7c54fa2cc69d30d8597f33aaf945993d5e1da8d30b57d9b5aa8ff8a6186d2d4d99c5034279e59a998f74fb45b68534dc3193b1ac04c85388c3ffdd0cfd32359b686ac93c38be98dad84e4dd84451e1b4ec1d67a799c7bf82acfa1e2bee4e03d3ce410e3a20ec9691bdc50455e1a386b59f5e8bdf925d9e214caf2b96c1f2f17327e931b4b6cc842e49503d3f8791c1882c225aa5d234c346d5683965ab8a44fadb12d9df8c77ae1338681443f191cebde3dccb78074198376fd28d09981c7742b242aa8f106a518efd8d0b519989a3101a281554ce798b2d4cb62cfea33c56a07cb8b9d21029fd3fe664898759171c11151f7c82f56d83e83235ca4be5ba718ad5cccb1327774b2d07240cab61a7eb652a48ca86aaffdbbbec74a556f1eaa6f722a239834ed393c88e3b6c0d2f067820127bcfcee1b87debf0eb10ff27db801c2be1eb8ed7ba57949a2f08cdafb8afa16a21eaf2ea3fd21c0ddb0baf29fbf8d3db54a1e0c9e8850ecc19503b5ace35cb373833fcb4e7f7f5b759235f19566c8b6d27d303244e152c99c43e1dab913a854be86ce48769839d8b4840fe246a47f1756bdfe88c4d3d5ac423743617c40942e791f60da53c5bfcc26069942e3337cce5d0d6910d47ea6bc0f53ae559141669a909ad8068c8c5134ee692c43100832abf328406bdaeb192443e7f1876c0267dccf536ddde0a0a7a1ce05092d4382638c344d9c75051b5f6d4d5c5d8011fc0e9aea90185399e3a045ab7b1526cc9d3da2109b4614b3bb64798e8c0ae3417591f4270b9bb854e925b29f9725fffce4502606a6ee85c55a9676663a1726178b5611cc6f76a16a62f8484a1f738378ce8843f7e8d27f199da51fd3e91504b2741f10a15bd9230ecebf316aad503582e47b9eb3f6b8100c361280d00c13328905810d4a50ea470882bfd85b02d7d1e1447533119f94ee72c1ba092979fd0cdc3891ecc7b1e1bdd4d663365ee14297c964e109a8f5174bc76c435297dc8d05d7c91539de9986f8fc4debbd6e159515772982334cad04d21e0673966bfe6b83c49f974b0916c76ff600322004d276e723d1110e92be7c87315d5b5e02cf32446e1654ac1cd044f846ce87b38bebfa3aeeb2adc8cd309755c2c422fb0afea41211f6055980346c32c21612291a300a9c379e7bdf83cca7e65208b308ead22f2ec08f788407909c10b00888c1258b3710292c20c472982b480f21cb2c4c5feee95e4b08d9a51816b53c554c4ce4b619f623fa959f247e3846d0339a3400b0627a14493ba3012d39d325007336cc413f0c61034ffa8c45fb2f55ee55ff696e04b04ed4f511e93104c73591141ae742cba3a17451b24e9a2e29c6c0da5bf03559f419cbc0bf349d4514338945c6ea06d93e9008ff0c3eaf46aec18e0e63e5a9a7109bd099209a30df8a300e961693172a4fd587a63be3536dc327281572f75fdb17c760dc147ddea54058742ea6187fde615b4711068a26839f3e6c9ca724c569565151cc1101bd3de4bc9380c594d94097f91c8a23131b9bc9ab08049a25da5c53be9111110cc04d098aebddb2f3508aa79dd12d7e14b117c326f08238156ee0aeab541935498f9e2925c698b89ad4a48d07c373c8550361101038ed50e9a949a810ff8ef6831ffaf90f42f8880c4e5248d4a3ddaf7b81e06cec52628c13ba8f08d645f616636db3a073a6b00c361a2ce401f30c9b09c7d6d7a13f0207b8e648f01aa1e144c287cd47cb23384cc36c69cf7233ed56b529b811033a6173638aefd185af88f68512c034769a4b6fc4562787704404655882186dba6c64f387c3d27a4ee266457ebbb9845973e96b20faa94515036af0e50972ae4d2d1dc4f519dfd166642ff076ceed2df207c309dd67583862cd7cf41760ca270cacfdce066cc961bc363faf9c3003287145aa77bc17e08c1da5e14f19757478f182f4d1f0b05189c4f4c3130510900545f173ac5d450d23d2b91da5b05f25047611677d40a0918c8ad46972c2af8138cb66227979ac026584383cbd6606214240fcc2c001e6702509cc526c051d41c7d90642b617425b4a42b72a34891ba7361af1a7bb1c6142a2bb5a4dcbc852ce66b043ec620d5ca38232a5586854741df7183d60963c0b1b23360f18f60cc4554b99376b4a1f53d8abb791e2bc4d059357a81c085d2abc317e0f5bea394451d661211d9ae3fe719157c8eadc2912d570d31f392fcf4a752570061914a25439d3903fd284c30a89d25a36c2754e053dcc30be5afd58fe0d4438c6e0205ca0ed9eb45e5ac84770bc20a9c42471176592655b6f07c4efc44588201090fa848ce019c046f0488b0f8e3858f8e79aacf0cfb07701003bb3d5c26060be706adce2fc319d759865b8d685d3a69d5aa3fe137a4896af8c619f1113a9274ae1ae6dc093037dc7fcb4c4c935ad0f1d601f9bafe8620d50f71419f7533b18da2d78e28be3b265009e2f89efa8f5ba40484e4b4bd647e43c2f309f8cc583794040154f697810dc5820bb5a50ee48e14174154636b8b7c5d6d7fc199a0df372770364cf62df4083c7d99f8af6c310a19b565c6ca16503ce0728a4050094c19615dfd3118aad233cadfc03d64a5e0bbbc8c19851e1ab96f70af1ae78050b018812f635035a8c6d217dc83ae04beca9721c085c508f8320a55f474e3ec23c0dec9626701ca8ea25099d288a3a61f8eb31cc90c62c1f5ea3d841fe3f1d453a3f460445b319aba759940dd58260a40d0885bbfa0fe8cc7adac0c35f6cd7808a873dac7ca1552386025e91028829c55071d0de9f12aa15dd114549e23494d922b12d9828c340da07b879c4805cc783ec8bd3666c11d4c2e8f92580e4d42688343c09b4528553a08b280f9016030e971b2ade07752d0f83f992e92191656d6097cb838d0158da528a17b94e9d4edc305600811cfb088246b10af699fce14fe21d32edded2b5dbd1414f930e20d5876513d6a34d8a280319eec44084addbef7b018fb72c8615dd52f57babc63499e48434704adacd3182891632410a8b14994a38791005a2166dcc37e4c768bb3ddbfcb67744086e6d28b71bc563258684bba5530285d1bd58b1422d20124e8e2f3d18aed9f712651297de7cd4f8ae7ab26e95eb800ba1195d2632052a8d04ca9d2105101cad5e6afd694e8bb45979cdb19d2ea778cf595e37cfbc0f95df17755310877e7088b82136c21f7cc0b363537534e98557cadf3a6124387b7a16b547f8bcb2c9799c0fe045f30af2d0139b7d8eb69d7e07c831371a7c5620cbaaaa0de004850ba58cfb88e11616255412154edbc9f5c1e87166b471bee6616c4e42015b780d910f16123566131c014cd1b640e23da52d0d949f321b98d2e0def8d431dbf20499721f716b8fb6d010b25349be41bf9e6ad18893984eeb3d2593cfb75d36627a3f524e2f618e03e2d6c073341b8b788e86a1d226e740c9a9bcaf0a2c287f974901f64514e78865e42b147e7e2301c9c39e1ecdb9b2d5b4de1ccb4922b311ff0f4290e92f30af55e2e9c7cb6b7c6578c13a8cf1301532be6d92743addf0745c0d182b1303144107606811833acca15b4ccb9436038113cdc23cf3f1520a3a2938d57e50b693186c0ca13093d3c14341df741c36839320a40d2323a3247e67094269efa8074bbc8264b7c7233c3618090984ff11ebda535ffe8fb1a0c5c32f91d26ca51307ec94286eca9f6ca1e9352bb888945d76130cb1e1c448ac8b0070b2d550bbfe2f44e4b70b22e32121b5ffc3530e71c860dd3ae6cc6d0c5424762c888c506b0571fde13cafde4c68a81779ae1c499e0fd54723f553fe07624913858f1d45e828300f55e13f1404babb346caed9a198f582a12aafa0a14736ccf77385a1adf260ca3c3dfa0c66676f7966274d925ba3885f63a24d0a945e6386030343676609e626c5af7d071d868c52a04b3230c002bc487aab408035969525f71b240a569803d4d272c98308759dbfc2f9e8eb26f846420c7e1dac6ed6989e3acad7b08857195bb4978692a7d90a2d6623e7d2467c61f5b7b8e181d786db1fd7f48e16bc776add7f78f5bf69c6115dc94e9416e015489e6b3c5b5ba44ccf41b1a0c38194735f807bbab5e64da1687151639457f987be21fd9bcc562e66444c0991d52358597b1cb9cc8623c8ec983d983739c430b9770a0cb512b7793793d68e91de750aa1227168e2a2435a1d32c5b2a95afb6aee45607cf1bfdef69f8c6588d70b121aca65a6267651d08e3b65a1e194e602dd27506a303b142ab7a25759551af5316b4255b2819295249041f7fbe34482bb4b1b6f6f848ce0e2d8b4560342cfbb66933be662b34e72acf3e0689c574c5ecb83b2ff13182498cd439ae96ca552413cb79823f0ce3ea9edfed0e068284bef4b46ea3d85b9592966efd14e07832a4cc1976e0a20c73ec0a5b43059cf6f5da3f11306540f7371c2a78d28c4329567d3e9b52532988ca977dccbfc74cc65fdfa87353d64361780b880edd10aad0de656776aa4bf7fabf3b3159991bbe09a67ada9746cdc2c18895bdc13402d52d16dd04be0a34820dc11bf092006dc4898058a693ddeb0726850fa7d5b6e98e2ad8126152c0ec873406752bc36f59a7cb261b4083c535a8aa4066e9a66541d8dd166f51a42d641d125520af46f728ed4043989703ef76d8971c99305fe202327b95dc5f64fa5910b01a16d50e96141f5901000f73e400cbb319045473811658e8208a0a4d5af7ce180c3e3d9c3c9db65e6532a1cf0f34d3086b5a3dbc7ff228f8176fd74ae4336665262adbe0b6f6c19e547cc04e264808820ce4eeb035c4b8c430fc09fa3ca1cf02b770c5ae3cc6373db81e20c100ee3622200091e3bfe3998d87454824c5419e1d79630e25c26a7e2288a3b41df43cb70e49507666b0ab887883fcb9a0a4fa957107aaa11ba11235e2b45d742d0219252b2e90b5755a2ea17d979dc6c9dae80916581beb20d062c3e1ee3e23d8a425f7496dab1a49154a7fcdad616232c5a5440328d76e75ad740cbdbc7c9f7f1c1af8c6334321b8b682b805a0249e8c66c8faf5b2b2b794cafc2b4323f7dea35a1c304dce22c14598d1ffbc9b466dcaa6699dced4da9906b67d8b53615439ceb70cd6a01c3a9ce7484f91b4a5e1f1730770b82706838e719b2b0288576e79615f018d57c649f82ec01b91655f8b74f2cfe5e460b1197b4f80eb4788a5e348fced17751a4e740b0422eca03afe5de1f3f93ba47ae118afff8158a007d8a9c9a3c47c22404e3cbd4fe6ba797af6afbd49d93e3502cbc054bef1a6152aa60a64f5c7611f9246e6de70477d8d39218aab97b94e72d9a1429e49bbf741660ca64be8c238651cea9befbb4076eaa3dc3aa71f575c2cfa5f17a99a30b7e2443f3d6495ed56201b843eccb81707a7636c287aa9582f98d904b66e32db4bef2f9ef7914c391c84e372f8bc6844cd49382f7757d5a4f6a5fdd445a7f97cfa0665fc1dac4ddb838d4651b4d47bdcd0ef65bec1b6394494eb59185ad4364c7a9e05e1893b0452f142ee86d1a7d9b24251a2e122088bae3e0bd156f9690d9ab6b09770a8fae8144d55e82f2106a06dbb31ccd1a1453a0c80be4e72eafbb51b91320eba001eded06d7fe306a8505e4ad3393bde6b6dd2261f6905851851b0d2961876388701a014acd4f8a458c37ae2eb0103b225a0b8d5ab8461c68ce906466eacc4fc7e978578f16649c0d987ccde16e81ffe4403742ffae0f30207258b70ca388f92db514901f068610c4b49816acacc2f1f7b210116470b5aa6f479917a0281494a3886a1dccb0e7511ee648ea0841970124337b5273674810c5a96f20f4629db01bcba9d367d4458f5e2c4dee16871aabe112bfac7a9fc86c1cd440fd77fd2e246d00f4d8678b2c21d8b724730a56579e094cbcedfa5df5e9c57d04182f20b09ce387026f51fb31157364d35910b09eb520369c4cfe39fca198deb88dbc7d2ee5b3f7ac6c343fcb2d0d8be13a6c9dde519c0f4d6d469399d96a78249d1d1ea744127f65aa6c202e53ee1a24f9cd95a2b1d2787d6fe52b1e21f653714a6cff9fca767c02b7e5472fcff39d954fe9325a75610258d79cfbfc88220cd0d222cb7a201a17dde07c7d35b2af60f6b0a40d7f4814f5ab735b3b56560a69726eeca6f7d7d2ca5bd79fd0294fe9a42f6b9d88df0e794fbe76e847d58dab3c3f43002f8998b4aee5f2f454168a613de7df8a0b4bf40189ac25ba2fcf2a7e39f2400291e93b3022a154d1a00b30347bbcdede06286d1104c5bf182565455465142bd6954f2a5fcdc12daea26916f783e1372f4365be1d442bbc65c54df55a31b06f1ecc1fd7c3118cb10a59786ccbbc6901230e60a0df43fd26d7dba9601e1ea296a97d1394411ed49f1f467ec861a611c716f1163eb7a87f05e28f592ba14eeb26245918dfbb9ad5fcefaf11579f2267bac4b5c430590c571656bd9aaa579605a89f66b268ee22e092fafe2cdd14983ae3c79e0bd1b5add042a3a9253cc0d329765160f958a7cc121d446fd1d69055bf9b50791750359b69caab7c18b8970525962232f996e85c502067c1e2ffa18c23270246b0d83473ff31ace04073403a48ae7c6f69660da5bc01ba9d57fa53d57f9878394ecae539d64e55c4c563f2d96197db1c6568e90a866268484ab2c488db78176e5cea68d81ab1be553d88fe34762f344f8b71326555dc4e2ea7c05637bdd2337532262ef01cb5d1c90937711e0443bde0daadcb6ac3632122e024fa486596342193a1373aa6db28981941b207ab5e5fe9ea44eac31073ca9e8de8f4c0ef9f97d19d7153e7824f7f18143367e7fc4d34e063d33e159ea92f24ed21258f42d6521e6688f448107fbecd0fed10ba34d5cc62af28f3c4a47432cff4de4a2062baf3eaa2ae45048178e9e7523ec306f18576f21f75738a59e025499e1f2d4bf8311accbd5281def8829cb44c705fff155910f0c83fc9e354d574454bb3104cbc7d2476e73c4e7da135b514e881fa823888e35ba7f2609ee0582e9fb979212231eca8dd5703e44c0cc3423ee76f53bc5a65d88bc2a25aa3fc79f4b648ef565a842feec6c6446d68f59cbd749e2bf28c8b580e4429aa4e9dd37e14cb91a80e96d8eca5caad2009e83ef9caab94994e9aa34c377930723fd77bebf4fd7b82b9211130241f8319952f83888f49c957ff9c6f7389c1348fcd4bf6e38b42630b6012d80cd1daf388a02776e7ce2c074fe10bb8b9ae86839d57fa0ee572040a57b6e7b35c30d0a06975a30d6041d61837477c381c0adb94b60e976cf68af18d5525552b3dd9c8f853fe63827e048a5ac475167c6326c13e8993e8a0f818bd214571cc16050a33e2ec9ded02664e3b84311e5bdeb7aa62d53705122919e7bf5c6c882ba6a82b128d006e5280550f6bf18a2ae46f4b3733117892bd2fba131e9022dfb0154bc7371f7543fe31d2f8572f5dacd395e430fe2c459a3b5e0ed9ec5d213ad8d263c50064a8cf594330d8dd8ec60a3b193779b7d69ebe7c77e33b110354fb83e6ca03faddaa00c4309cefe291a9abc50581a582c5c74b90b9d4e1f0b642f9960850606e5ee37bf23f5db59a01f380b67177fed5347fb42d5589569e08fa43654396cb81746f4a9ebc9757cdd8e5edebb22390f979c0ae9d228cce9922160b185e6c126190d8c02b0dd17270e1907ee2dd652bf963163306dc9b3038dfde615b36e710100bddfd6e2e3c6318d32aba65f506dbd2f35293c6bd403545d04a5bc511a06ef108997633f5a7379861ccb6dc6e9ca4ee9efd42c52d31c249c190aa8a500950b36fa742f3806f986773e4720d7a6e4a6575d5c8b49d14d1383ca0cd1a70a5cb63d0ab9960f95c63969668a19ca45d2bc841194fef8c4a16238504197b153b543d87dd0c8d3b9d6c179e24373b5aad1b57379d1eed34e9a51e37d8afdc171abb09493d35ff171d6b46af1d634929d33f09624b184da1ec542ebb139b04ce88b91b5abc53be9309ffd19a6804cd5e59b6180c47c9efb6128d3c2a270522e95bf81c986878322bf867461f63291a4538e3202383f2cc2062bdee0aca5c549b3a1b3a55328aa3690f6506e013fb73996a32b52ec6c4059448958a4a80b8c4add575778fa99b7e1fb326596f3a38ee6d5d727a6764fb96e8e7be77fda16dfb3ecdf07ff79527c0b3799658e3b9151bf0817ef161c7a4cfeedbccb0f826d8f9501007dd5faf75428c7a9a32b363663fc08c312ab9152e117294d74b03893f32bc582daa6c5b0af9db0686ad368002567c71e56256208067b45b4c12c094aff04b94a988179b2e5341221e37227b9dfc43a19db3c3d5aaec7615e790f636707ece99cd6d568c6f0f8bd8ae5de9fcc7a68d9a8051918c6c2e30370ece35e920c98724d5327757fc9f471dcb470b061401116a2970cfb3805d39ec020c54e56d71d41a13e9f74a52903f1a23470838a5077f82947bb50432e638c0d7e4432acda6500dd02ca55e6fcb862b25fa1e64d75ac4c96d2739c7221cd7a9ee16af826abd4aa1094f4aeea4bc0aa6f7b0ce571dcf67540fe8ca5e831a7d8c1704419a82c72f4b98e7a72187d3f77b66e58c261df2de1a926977d2dbb5f6565b3dbed6d9e69187b10008b52dd2d578b8f8556671a09252da36f6988608baec908996b518a37adadf3b1ec5db4230a947de7f08be2b8fe596a9430076044a35ff053e5a8c7023e5973d8efab7059e1432bd3bf06979ac72306fa3e810f3cf87714d6b1f61a63f29816f83e5ce63e11d3e917f8f99614a64c99c3af10d5ec0cbdd6169d67a7223b24768a906ed524a3eeeb3a92e9dddf4989898913d9e41f8570fa705dcc109a897dfdc0ff67b04b0d85aeb103026e0a44212fcf6e1cab245d6f1653f817f3a83ec038ec0d1c949abffafbe49a195ba18f5119a6579afb5b6e8e65a4c631b1b9698bc3bd35a849852ca3e9df8a58d08a32139216ed75df01aba014a38438a5089204aa805422a4dfb35302742406d78b152029225d0bee83ed7103538677ff0be3a3c050de0866ed680c683b6e63782c46193085ea2150269e8c2ab92d6319b58f485a2bf8260c21367a129d8f00a402a7557db78116406f4934cc7c72d2568e84822bc3e9bc85653b8c1e6306bab7f2c071ec6f89cd91af00d5307802e65520a9529b3bf6161986a47758aa5f96546ac8b331d859c7f4bab0312fea6776b88ec104a5341a2a7f203a75ecd91c69d0ee26b1e8e9e4b11f53be8c05bd0a0e1e56137049658f3fc0158060586a2833b23f37f843960067aa9ddd029df665bacb86dbc1b010fa70437038ced8dc0d19adac171818e185e9e6b195329c7897c777218075a6dc0e2ea5c6533c37af8cf4754577cdc579b26de792647c5572ec6e7471a159df21d67b21242eb17667bab0cf73701b9d1e90e50c224cc2c60dde8dc513968ffc9565a0d356e83cdf0c286df8a5e49cf34c7d6a7d0c330a95f571178a80c510737c5c9951f7579bbcf030cdb3062052e1ce5204324374ca17a4313ea2d3ecd68659306c29c03aa884df88c752fac6c15446c2c93fead77bf03649c30745443e91ea596f36d2381e52dd26833dc0edf636e5d4a7ef0a9f72c38edea09979d1d4c2925d225ec6df995148223c39a85264f23da06ce1663e0d01da1ebe66fa3808a0fe952b6796f98ad490a861d8babb5ffd5e5d592fe8252d29c13c3ec75add6c840c61392bc5033c3ac75885a878890f0de620d699790abd5f15f89e9d7a65b3eacaba2343d677501b5ddab4c23c6effa60fc04f848264fe5d8aff111d9ad229c536057017a464d1c0faa8a81717794d1ef6e6bd9c77e22251a99204cf49e07619b608e46c33512664d283b20fd84ed85124a713c044d00d8e7878883e6f31fe1799a49253208a07168928ce67f8b8a319885a5c7059568ac613c81d2e7988f6f04a229c1903de4556de0e202b089b059a4789b378a8b8818fa251c52c87d403368110bf8053026e12edaf2d5abbd1d0d8a2ddde04488614333cbb5a4548ada4010c6072ae8df93e96b23e369f8bc2e2968e018323fd6a2e5bbfce765d94d9e86905635c271581812e2c3960863a6957a0b2e41aa067cb788b2c8744d7310f13c35812890e46315b896e353197743a5efda1da376ab0aae0fbaa9609550ef79f6561cdcb70d5dc1b636937e778ba59d40209ea564059fb0dccd847bdaab0e25f7ab21469cbba765c315245f7b89046ef016f6f626a9893515c3d0c5b0d9e658095a36408eb61eff025e1bf9879caad895369b3f1ebf3298de1729f05b075c918cdccd8102c22a17daba4e046b59616ad06ddf7adcccc5ea3088afa525abd875f52623cf4c3496a356853d64a1b84cc85a790df6a58d65a010cb7d8ead7dcc82a5abf02e50ba3d3ef2b6998ebbd9a69218068374e97fe353801cfa6a99136e34345a222f2061877320180fcc9c2df538ae7cc9a48773be445355033729bc7b1d9aa6f1d51017683089b734c0eb7ed5a0863286272292583c0250100a025abbbac592e1bfb654be7517b2c6fae354b559bbaf4e40fd7e46a617aa91c1f6a7bf37d08fc4392f5eb868bbb7bd823fccde0ad42f34312b447726bd68c196e069f0913e91137ee3051b1fddd1420982b8d7c4133342813f6fefce742ab9eae16c02d35b344623074fb9f0df5f35258a29c7294f72bed6464fffda0f17cc2d6da9872029b5bbe1c6991d6fa87b5cf2a769db1a54299bfd985e644c25c0dc2de7df72857202cfa0cde570fa1e730c90f6d3b9804f7d2056150a329f8ed743e6db89f88cdb20d3a92cf39556c31934e6f8bb18ec1f2dfc81e776640e6708358718bcfaf708da5097ca21a2c733db7ed3f2e430a07d527103dd0728620bbbca8e546b8c2f8b611189c2c6908b140309cbe87d8a6489bc1ca3409ca23b448c48cc3f38836980809f8f1401f8d21946252dfbc4fe95d1fe6c52c29c99b42fd0e8599190fe52d6e1653b975f9b070aa6a94bbf723a0d09fa5aab2c40dc3441b6d2cf8888186eb1e71d7ea60d66ac48cb70c6e0aa7551c678c8a0acd0b9d82b69f6279afcf604cda63f4dd004d29b898918398536551ca9a67ec2f6506f5cb29e8f93b7047621f0e7f111a14d2d2c2446b13fa11a530d5b89c08405cc44c77d68d4c3388f3efd332194480497fef869c24262dee38c79980faf925a8ead70a16bc291d5753422c6e71c9291cb08b88897039016c4270b3503b0b2ca7df9b5f29a2993aba371969c0e7edd51e7980025dd4050064d95b61134be32d40b60f57f1a347eb61c1097847f9e12bd49701a97fbf6fa8363d658318eac5579fe0af027beea035db76b15b013605c300b8bedb9d716a39ec11e93fd90d676c8e434cd87bd6ae1f6b6131109d4938afe92225243f1aa969f73dd58b7c12e8dfff58716c1510383f0de4a377836167a1bfc877555701b15213ddeb3fbf1085a062a210850ac3539bfe20a0da12ab49677e641c47404d2d74805b5c40eb32bf79401913c092e57ad067ed291f27d27e9d1708cc90be0f51c3bdef67d8c4573037ed29778f2415614527833e16d1ad94c672b5f8a8b25e41ee9c9a05cea28e63f0acb5e4e39edd939e8e547df0945f5d5035f838d65d28689235a8d0cb379de67d92f78a6d74d3cdd60af01dae58fa436b602140485d37de59ec78ee2c91aa3ff7d73d1ea462f33e94b0f7b3d609fe432a352fd35a6bb289db275941f787e6be8eea1e1a11da4d5a63bd3cd1d49920f93c1d502321c34e5e0195ff787087fe0fc8c8e5eab80644347005aaa327b025129e5062b91706b68937faccd89befa72d01c3ead05e1474e92768c52086814eed30a7e2bbbe30459d2f236d5f2eac9f6b60ac6154ce46830e26f0f5e63419298ae9ae4c293d6cbc2be5a8e789197643c4c83025ec210d5c8c9ac1b5a44bcd8c3f0c3205a44811f6764006c1f388f0b36e08c22bc50bba982237496d44e216aaff14986e317646ab5d8ae4709311d15e6b4f853f20b22f02a50cbc023486a960b0679efc2dddc6caa045d869cc0f31ce9517347a526887949fe14459fefbc3e608902a02025e21948a8b75e40e99797f703101bca685383385eb85b820ba8b3d6ca5129266218dc95f3240a6c1f3ae447ed490eb41961a5222b21a9d71895cbf5f0b32bf8798a45a3422f9512f109fcbcd8242e0865a9a6b4c7bdfe5409e396e247c51efbc230c614a2dbb904f36d43ae794d10e43ce88b9881843f01faa9b7372e51204a1eefc66ffad9405c18c0e186b9bad112fe21a113013831affbfb49942ac8ece43856f31cf08e995a0417fc10f8385bd5c09a93f014a1195e9dacbba7412a78734558f9503c34e4983b6e8c79e6c881f3794405956e683bc270443705206e6e003a5c2ff0338d07cc9b7419c631f4320848a0778961c15dd5cd80db716db8cd213cc2f4dfc1775d87ee7754a11feb4884630df467798a1669b261278a38201cc495f620c48563d56203d428356512e24986803bfde4e61fd05e0a9eb329b3b7c48916cff67e20990fb7adaeddfab1f7cbc1fa63b157803b8611c2230277bef2e97206732ba508dfbd9101d8afb551d07b52f26456d62471ebd54e3f87417a01c1968e72e3f66c142e49a5536b1093801013e9a7ed51072cca0f579ddd8f30df1245716dbc3de91a6b2fa5951d4f2bb257aa766453c447d3b834641dae8ea5cf9f0d44e14b88740c3c8778ccfd5954a58d54508ef921bf7358f70fe53513e0c0d5eb570851af669852add02972c738b57a884fc17ea1e848c706196da3739414a8f26ac5a912267e68ec138b2c3a95058d59a57362fb721f00a30d2ddee1c7533f9494686491e4ba5d9e0e0193f81a5c1b3ec90be2c191be33687254f22d8c60a2457403b520405924dcc459ba4a468180d92d5dc135c11867c04c0ae61d9aea359e13f473befea616f95c8af002ba14174942b22b9d831990494953749622e19954036f6c24fd723e3c654a2584a0811c332046579849018cf6cdb6627e711fdcde3019b8bc2ce71dfac1cf109f2d54ae5182e1766eb18202f4666c7f7179d9806d574f9e304dc03640c94f15589e71c6c4e9c0bf323851243414711d4510e85602a131622c7e99f5b25160371c65dfa189600c090cc5d2394b1343d1f94f535128837cde210e86b6a37d50bf675b7664c6223a11ace31639bc12b3d9c591625b032ff70bec7f0fce0173e090007859510a11ce29f303b9f312033d59170c2005fb27cc978555deb4026f37672a2a0baf396ce8641171704d5056cc5583faa5a8b5112b8291c476a4664041c149983be9f214d6577442c1784ac7feda8f9de7aa02324a69cc779be44fb24c1543991eec7ba9b9f7b3571af8c17ac70a4560dac3ea0a23ceb7c15220e7fb8c5fe819480a1576593b498180e2940c3b624ac748a09f3103761a977a2efae9732207cf109c608cc8fe76750702dd024fdac9c1e8e6a6148b67c43f108276e88b468843a48a814063cef2ee8374b4b05767c6f2338141b4695177c8af100c756b75f60e0c68fd0c68feab9c4796b78247e94575820f00da5e75bb45201e61af84371856758daeccf456fe14a9a05b52ec450e4b7c12410abe51398c7e1e0a0931e7b9e7c42f77d2c0d9fcacac2b8ef3cd9999725ba10dab5b838e5b26726106066b0174f4472139184ddfd7eff0e7561af4250a6a1e977a3584349a8c87c9f07f43c04160e8c9b457fc03588a468c068c8d3d19da5f26e84a78d4ee7e307a9f21f78a4ea34e8d4d2efec5c1e7236f0c2e925c79f2827bacf0dc1b9b2de32177dfb7b993e8a68f3bd32c3d4ee57effca541bf54c2e11e0535347a73daae45ba01976cfb6a2856634e091271c092a2dd0d70f8b23023f57a8bfc2616b741d77527976c739091c4019386946f72f6f374383b40a60e09cd657b61d30ce2c88238faf707feb22a6fd8971ad04800a434d2b303a8cf5ec9692fab1ec3db4458fbde87da70e2d98154e1cd199d3015ea05f7de79c151db8125482ee6edc95c99d1ef5d082c515c1141a94d01d239a9fc4270711cc78f885dea8444476b5d57f86a4fe9bf0e7a84702e4678b830bdb9a5f0fc0a9b6cab1f1ed55c633c87944b2291112756cbf7325dc2b0b413a08e3308b1fa50757dfd23b401a3beb23e206db2d41c045763287d1b7c2dff0c700e8def0d663a0a0bdb3bf071a00b692f8ac11017151f68d5872a31afa5f670ec132e127dc94f974bcb67567ea0f187471820a8b3c7d5dcfecbaf895ee4a65a727d027567b09ec7913638199d530e1b4ba5d99ab5a6243294da8c4b5445991db50bb54cf5bf69ef5cd9a4a87d2e7d1ecb743e29df4dec070432b54f129ff2578e292f807a1c31b6481eae63063e388746b423c25be61990b534631e1949bdcae27386182703238cddf24a6828a09a6e87cc97bdbf9d24e529b11fc8c0daa4452f47316dd3f4b4db1bf3c8c0f3109232cbbc79bcfb8961084e18823c20bbf2a2f91f96f3ee27c90cf242751fc12ae497e43e3a094cf1222fddfd56c5412eef736b39acc4757b1ab2bab79e7bf8685e49ff756f77f585fda2fd49dc14871db08a4ada8c7de1f9691c13ac17686b7f6362c6039bf902501d6ca691c42cc4249df6e4c893761ef5547a95608f1454863660c418f8ad92193d590b6b145c04f58022f95548066039b58e2d41720a17566d054c7868c04991347512ed2fbc70a9805b8ea2b34775c96a7022e480f8551f738ce44a623cd4d8470e3cd700027002ca79f2f4a4f1f9a139fbe765fbdde3e88e3e746b1ff1046f4d11871c471714dfe058c12d9853d66e59bdf6e5340d04a58c33a194c6a5c8ba1956f748a2e6ad86752b090cd72eb0f71a374ad9891d3e8c49f98050d6529a47c84e6847a883850c67feb6236cfa019c9e0843f7105f0c70eba4a2c173155f12f5d4601755fc3e48092f71796e5617806028bc3cb3ef1a63e8430051c3c3eb88e7945e40fc65c42a31f475cc26cc6bf95ea1882fba4f0921c4b3eff18462c02916547a1ad638d809c2ad41fc6c530f038d37d032a4a8a0df8753ba620ddb9efe88799b0bbce354487d01d342cb580bb7ea5e5d65e39115620cbdb780ab1a65a61b4cdb4208a03b6a3a86893bec973d2d29ef1fca0f0320356b3ad870c16c7bfb0414e101b6bd964532a3e4e753315c85c42fac501fd6a7f8a2f85e9e153532d86ab36f91827bc185691fd1276eca8e583110bd4abb3fe52da53cd6e364c2a5a2b68fa4614fd7380f66aca8945a9ec566106891e6fbb9d1b0d9a65f98c0bd00fc5915251117ed779f27d5f106bd21127b26eca7891a5a0bfa0c5052f38b388a670a769e9ad5bb59b02254d4692a7626d602376a43ab098bacdb5e75bfbdbe2ac2ba55b9356b0003416c2af87b5e080cc6bf9d0b5832347dddcbc16390533545251afd7e788c0611a6781ea05a7b47da0c7e9a346c2011922a85e96c92df07f17f07e1b3b1cfd73d0a65dcc2f7661247042859c82c1aebaa847d7205ca45a20cd69d8af7695b8a8b84ee85a2adea2dc6a76aa8e2e02607400aa44e9f98b769d12de1eb8b6131ca2e9ee7d99c1135ac25b044cf2be7eebe9212ceee95b6620e3730daf82d156d63269618c38cd29d2c4f7365630623910d25b79bd2419671a871da7c3cd6760e8ae647e78162ca86e0f2a8660418ce25782a2b827a0e9a12271ea3f86f903bad22a71e84542d7ea78b212f9ac046ae8591765cd01e1d6e85f71a97ed4f6f1dd0a2724ae89c2a606a464397eab0036b86ae4608c9ac2beec79688f258cb481488f6aeb5c1a67f00915f1ca98a09e771ec39a488c32c251c94ea824831d0c6675b114adb75a5be6e5c883ad587ff5711938a5581f626d19a86be7103fba8288273ac3185197de0828ea5f0dcac02e27df4eb2825e63991fb6323f98d22c35a24dcd0de3f2febd1233f1d9e0fc9401c2425fd8b416d1f723588d3ec45e6059ffa65320e9478ac2b106369e39ab77167c3c733698b1052af797136c4194d420d154d30bf603a17e9b17b541732e8aaccec35efeecb3507b0017a53297bcc78cd7736ac75790b59964b490a3d5535a0cf4ec5dc7e4adef41bafae162fd26f5cb310f35b748115eaad23ac93283d0bd03b20ad77cd2e0d4543c83b205ba05bd0eedbce294bf1af838a584bbe6f078ba4bb054b6d948812aefb54945fce4cc41bf1b26aa912237dcd9f8ab763041413488378827e0d0a5301c1844dead0494412d4e583055dc037034b0f441f69bfcd8ec5f828a5667a9441cfd542b0acd4bef20e6f0c572cd5926c5bead6c123205047ba90ade8372d6891adbaa1c405d5df910a16df8fd568e99debf65785e02f057c0d4e12843ef730214085bb5338d3c81b300f24ae70d16293a379aac8a196b3c36b6a27f7afe4193e0f8dbc48088d36b1a8319ad6c89381a2b217a57bc24b8d21b036d37c13a089afd8bd4cd4175b0f7fb03ea6e37ede09093c0537edc712ad1fdcab42a03079847dbb27a4372fa31553e3056a6725552c3e44807edc2fe565c2476b9a4b4e0974150bd03ecd1252f15d960ad872317e6219ff3bba1320608d955cd20fbc8d099a61729bfe084a1c7687ce2d89048907bef2208ed1a8e51e2e1f48cf03b8b18a481ca072a67be8472bd71ee4dcdd5cd5c9cfae2011cec270ce8eaaecbba38caabd9385c42db8ad19ea57ef5860ce98393d7171a9e34dbbaee13f6751cf731663b3179ac78e4e976144e4bed4fc5dd752ad02cc0b1c967d9684cc18b3db8caa7e90f7e2919130e7814a855d3ee9c8c3fbca14ac8ca3bedad3144e788be3f72ac12fd573182a662a6b730ff84f63ef36cad6330b6bbffaf27169fb6e8c06549166935748da61c0b8c7ac0c59aa9e26b86b00fbccea37e706d1251d437373b4b64ca9599257e06bd8445bac079b5dffac612e5b15c28bee676ec69e7d38bed80c440ca772cbd8385b4651b64804a4288e84299c09dda285fd6cd958ecc34a1d5a28ac2b3277f334c86238a8b4c65bf8f11d0ec16cfffc7adb22154180f969640247d972688c364dccc0dc1433bebd5e8fa5e7c0081d28be31913757cbaa245e9c8147d92977bc56bb57a5954af06ba46daaff88bef10fbbc92cb3c75b9261c5eae056098dc01aeb095428680ca81c0979e85baa91d2e387c92add2cfb0de01fb2baa6f0f53521c8636e59595257e88c5df316d9b10a444db05460ef549dee696a9117cca212d85f76500b366d60d6c630d189b9212160b54d6449255dff848ddcf220ee8cb4c828d0769b9262f2b59b3297d12b62c71e9306c5d26a7685a6e1e5bbf1c859f754b2ff2a550c9176045a132e613ffa710df69c70a45e1c74c984d404a67f919f32f3ccc9aad1894219103fcf364e4cb23398e275e5c32e72453566a1181bf341728df6837092ed9143b9c53fe1e53002ecdb06609e5171b5e4ac2287ec64591659270633802dc37c09142ad174b1c2a9eda2d3b4a89a4bdc72a8ad5704dac5563439eae96517d93aadc8f4502977ed41b0bf5effec60d32b9941082cbd11ecfa68cc041e0cc8e6d71d4facf5c134c929ea5c110690d3ea2ad8684c243b25a81b4e04dd55ccc2b0a3e0f97f181162c0f377d798ee4b1c902fe31ce1c0ce91ef64ef41d7f3a5a0fc91d7dd5d9f8f4e022e06e4b9f6dac48dc715140267f3169806c26b615be4bce3a03b2abbb19c142c215bdbe21a0bc040eebfac63f4a12d824b7e2295be8bc4f3a58adaa0a8d11c47c0e72ce062ac915fad7e11f8bcec0edc4d4628e590a8fe7f88a689d7b24e0b6e656a766291ba30d525512e796a925bdfc4a071129c80f7493d09503dacaab5a89f70e2bd3a5d2423d2e936cc48a3c3591aa1fb82bc5f11b8ee5a9c1d579f76999bb4659b53e9ff930f026385ae20734cdfd62342d5687b285772ee927bde266a0215d35ffdd7d72cf3514dc17996496f55cfbe4799695b33477d54fb2ac1151bf7c7af3c84127aa5e6ef6f70b5e1c3573748735b920772d2cd9afbfe7304a91af5fbdcadbee0aa5db5111702939f9d08b5a3045776fcad1e76b29de3501b97e422ffc257bec0f1429d10f23ac4a4839adf6c32958b8bd66d939b4934d5a3808117b8238ec030444333cec7f7f6edc23c5f2a415b61bda3e8e5ff16842401032eff95a2d491fd0fd490cfd74fe2a54623d8ff924749baa3a8df2538fb9ecb8daa94fe787bd055c43f8942a8ca4ffcd791841f3a80d0c5a35c36ed0270645fc90234e9f5f36793c182eedac4c438a2c4921793110738784bab114be766c70103845b1928d8a326c7eef1b6beaa00175c274fa35a95870039aa2ca655f2a844df9fca0a91ffaeaa1f47df3f7738a905b6661296f37f42acc59abbc790b161e4c3cc2c5f3ca99998a91a53be94597438d5b9cc3938df13e7acfc710a9955a352b885c8a1fb16005e19cfe9be334252e7819f46b1561932a536ab25f6dd6468544d3d7b8f9edbe3ff28662120ecc68e12bc6deb82a34f0b816fa063912c0c9fb8232018024d49a548f7ee1432472635879352a6d73b79efa9db03f5769c13d69506cfb8d9bda427271a27fa07fa0f7ae5962b20de8a6c5fa2e1d8ca48d1ced819e266627fe34484b501ca321d435e7008e15507cab59783f6e9c09c4f462ecf54e3d3d5dde119d2f9ddcec45846c6f26ee8cc9f4dfbd348cc4c7f937371440e40b83c488208836b92076e49734b94af69d9d8444fe23d049f8b85023b3d857dd4880f8f0abaedbd654ac9ba0311044b040204169c6c40b9bb0fc65857de3b31bf905396b4a982a2ceee3e737a6a85612656ed45568f4c0d21093809a1a2438a8ca824a12a3b6efbc2e498c084615bf3cefa7cce9a88a50f850bafb91697b3c9f0b97019f2b30d01f2d16849bab46495d2902922b19fa896b338cbcef0da1a62696bf491197f92e89fa6539221f34dc2e2dd3f8439c52949f063389fcf230c339170043fc71a94c40ef5cad0986931aa902e1a0ce006146857943f2b97da94320213c8b38dc158d1f23e595558955b3e0d78726940a1e8d182821fc220c2a8f79e120b54e551548a41431ba1d4c3a5e6032a39b9d4ae844a1ab846bc4aee8b3654547a656a34802c35351566a691c50d97e2fa3a249827be6e232edd66d4d3413c73f6f347884b76f596fa666653cbceb0cdd9be56538bc35d023339edb4e948a8db7ff576f7d2477a1866fa804121edc830cd4c4644e0c9f2cea8a449cb99b2c86eac7a4b43e89918021729ebcec7d249f7d14691cebcd69577ef8cd0dc4add99d9a40468865d091860810ba4871fae5413ec23483bc3bb0dbc97b7dbf90b08a0c891a44615271e4d48534be4eee5adb835891790f252e9a0c89c54480c33dbaf51296b4060dc80a4a520234c8130051501c63d66b8898add6de0bdbc9daedd1b960dddddc8221e5a995604c4ffffff18638cffffff1f7f4e915255d0d3bf657743ced3fdff7f59d530f3f4dd1225ad34abb728cb6ce39e53decb7bff7f8c31c6183fcebcd83be5c4869928860d18e3ffffffc7cfbbc2380a3d9f7eea1350fadab50654b733b17bde7af5bb254fa7a7342a5782638ae39961f7f276baddeedfe6adb8556a03ef0dc007b22b30a70e082f8bd592753ca86a8d5078d98d556f36846c944a856894d181aa31b3e672350ec00924f4bbbbdb80ee7f07bf97b61d591cc3181b97ec98e15892202f3d554659f6d3bbbb8f338eef4a6f7bbd1e8a172f67c7726238394caf0f6726862033bd26dcdd65b19c77d6ec8ed75c8bcb35c1106aefd68dd0a661560b67eede5245beb36261afd73361a4b2e3fb3c8133d3490856c6b0836f70098c31f67e77c6a864654fcec73839c8aa7f132bd6334dd2ca2cb21babde960d73dc8adc8a6f70312810445ca79b55c4122bd61caec5a11ad00cebdae26238b10b52391cebba5ce0b24452af0d0127d0d2b21babde7ec426bfe67256bd0fd07e77771b0df79f4a4beb2c594e9899c61174a44e67fb1e2b0ee9ce676f661e9f08cd307e0c387cd322223094cc60c8091cca153c9e9098e127c019f6c6c9d458b26666227528ff83bb67964d9122d3eeee45805d24d845845d6498814caa22be2ac9f7b673a7dd8d81d1acdb066d1b9b165318662ab1c2525b64f5fc541740697bfba7544a183ccd9c6686210c338b8ed419488e218001b24a463c7a0469b2a467478f20199569b180263d60802004f8b4a3d8c2776c3141f6575f56736a08ffaf7bb7776238320a29646b934bbd05ed20b931e31827c7d6d3f1ecb8ee3b54c299eeeea7219da72212f81774e6acb34959aaac3322f9d19c9e1ed51fc9eed6e93ce8da751964ba76776238322997a647c8b201db304801a011061740a80658bcc664140b1c0c7f1768c32103543ee3531306f642cd455ef0155934a0a37c7f5c5051081f00f618403a6063622d08a71ad0c1420ea922a1ad143186cd4ce350d205133d324d58c119465a29713561f96a24c104f5808a6686daac2246aa274b3d295c3aaa30cc7c551dcb8c01a7832a36338d21f856e89618af1dc87ceb78dc1d9e18bf184031841a030fdf6cd8e19b95c472a6d75c8bcba91d88dded3dc202ae816031c618e3f6eece164c389d45bdf92c1b6636ee10c3fb1be98334c15323a2a34c462ace9c7720a27cf0f4937c27c47801530ba1b4e1f28178f9500472a9566c052d5c534b251b3f5fb301f416c31dc80c8a16d038da90d1640485038577dcdd6d03c2bacf7cb304098386153ed8301345c0cc541ab2d9c952a714d3ddad4e19b67737c618638c1b7fec8a1893661a8837a7e7e9b879be6341680173a652588c85e83006d2de6e77fbd8c6bcac22c7054d94397aae9088a0f1d2acfb284538ebc6fd32f59df10029f4c2356baec5e542fc42001555a060d3c1343381e654f52a6b24f428df57024d4ffbc166c608864ba6674381989a143119f3d221b234f202639b8ae264e645ed05a3588971b14096a0e01242d1020b2db50fc3224cabc5728826b55950853c02f4426b3da5d2ccf9f35d45b9f2d0f20a89cdb31c687c860fc5acb14e72195b7aa1ec6e675cc06eaf634032b4edc48bb1016626cbc187075cb4049899462a3f300fe3054916b899e1ee6e1ec386998e31c618e3fc44bd0704e0a1e74416c0fa8159130db909801aa425a2820100495c19c11b07d49ea20c56001954205686070d60c0c9a14d11168158c046bd7150c68a5e28d03839477c47805fe4830203b51fc22e8aaab0004d46b1e8c9cd85e33b0385050bc9e20ce2050574a0047b46b2824e94194c2ad4d86ab0343a284081e683a521746182ed8748a34823a1c6624923c9008dda14a4d1846646b5b2a46125a665662dd4b309f9d02f018b51b184358a0abc7a35a00a006303d1d6b822f3a2234524fec8b8707296c417165cd49bad03e2777737f1474d8b7ae4128930d0a2212189580ba4b524a39f0be8ac7b334e1b556f892627871298f0ea91357af2f29a15a5d108318d9343e3808cf954506fc4d7738cfc33dc77dcdd4bb3b67194a651d6386c1fb41b67483e00042ba443ed06f10033d3f8c28366d29eb2f4f3994360cd70eaf2c1491122ac048a3d8c3f44585a5524a162c412a2b4c1082fb05215184c218870319cd8896662b0e51d7777b7ac3b050a7061d461c7d5939324cc1e5b17b8f5e7f4a70511d133c79042bd986f94e6c4d730b37d30531329f97132352685b2a048dc565664a6a64379a26d7d705a123d0b5f619c6de36d9b8de58ddeeb86afe606d0e646f0e686309633333104019e665961988955cbcaaa8dd08331c618fffff376bbff260011ddfa4309f39e46bd0d333dbfecfc2734a3b60fc2ff7f7f77c7186719eb94cf254598bce65a5caea8cae78db1f4e4e94884153d18795cc1c4dddddd6ba4ff485fcfa1ec6baec5e56a55aa5c779e88691d8fbbc3a3c430d3455f1f7347a02d6f7dcbddddddfdaf32faa3d772bec7aa56cb5bdf72777777ec68ca9e79e72384f3ddb5352179ba1d5f3fe77707a2e4602223813683a894a34a0c4defe732539322946183323126864430af26ca1d2e304896e98586414fc7062d2e1d234817171b12d6e94a11978ae44ee8112ae998d2c27270057d688c148b50a08b9814ed0d18a4b186866259c4824edb2a1541a8d061e813d336aa3026b28101caab0bf1921bffff4bb1c230134b474a96ae35c4fc57147d362d61cdb0cdff746eda4497616d015d5dbfccf55bd240f7ad03612ef14044220989580107a79d1695bf0e29d872761186994748479b4fb2310432c0a07f5deb24f894e82c535f3bfccd3a22d799d75c8bcb3141c247f4d5dfbb222c5aceafed58d678f4feffffffffff1fffff3fc6f8fffffff1172121e3308a601cc178d5b4ce5e732d2ea732b1fffeddeed013cb6eac7af3e0c8e601d26aeeda0d2f0f63bcfbac634f28aecca2e371777868388adfb2d4dd97f353262c86994895497be60c8402e5fddbff2393239e4c5da55e079c3278e50e41242eaa70d8b239bdc8964a4c4d58f4d99a145b1544406406443133d86ea48e17c76eb50272feef36bcbc0d56edae35e8962b508c8bb0c23013cb2622eb6593a0a7c646e7c2f09ca6547afa99a664ed76ed6f7b5ed0ca788707890f09b08624f862d1b96b82b8f1d258593d3fa01a2be4eebbd6db5d77fcc318e36455e75de65db5efd80928a1f9145202b324376fd794248565aa052497a1f8ffffff5b5a472ea9068f406dc775a7cf4279af5088ce0c18638c73ce8ff3598a75bb45aaa56664d82aba3850c2f8007f5eb42757886b055228c9851684f812a1858b9a41102d3699114323aa727552116376ea831924c63234c8deffff470c33935153363ecf9e47988c7bc2ded073b754f9e8c5823ca221915e244cc0884225858b57d98484e129956e49c6d08b55312c11b4fcb0cc5aa18115a3083013930a20120990a9303b2e702d73c8388d490ff9c22fc615f00965c34c54f6220a857e77775a13e4ff906f81b611150b30338dcb1656aad661b2c63bffff63619839220bed79fd6a683f209b9bcc520d95d4f4afb91697eb11c4305338547b10d7d6a06b65c66116857e25450c3359a48e92d698ca4ebcf2b7bb7b1586992f0a64f9ead5d882f86c6e3cb7b72f64643756bd6130c4309388165f2a066c8d4deb88c18aa0f3021c359965cdb5b85c5149d1aa889582184091ea754f13f2999e4c4b5633dc56586a754b3dfe7902aa0f2518665aa93eb07e7967c5c9922e050a823fc5a54d2173fc5c5e2b2fb564af8de2ea7777574170ff7174d0d23e7a522d296418a78fbbbb75a27cee1863ac74646586f1e30ebeee56c6091d1907cdf8a9e37177784e260fc18c81876fde657e12bdcb6eac7a339986f4706fc78401136f77dd5d1e4474fe58b3bcbd5eaf440d4f1b27c75cce4ca71e3d4b1e5933fc243af328b87162d98d556f2cca997924029c611b771677efcebe2416a760d145c291484f773bca42c80646365892b6edc05eafa762031e2d270b72661e2568594630656f6ff7073a1103183501d2c50741385964b46b37bcbc961f098047092890a949960696c8a874412ff29935b0d2006bb781f7eeda0d2faf9f45f1f26b2ea9474bf2c93209f474d98d556f542c15d29d0dead0d26baec5e59451ca296f4f11501d8fbbc3836cdf75ef5e65101e27a7c6508da21a4719fe8d8f1f7f7a953fc513d405128699c79a8be48893b723f1667065420fca1b336fd3ab76444904097b4466f9ba80c61323b4de10303518bd14313ea01869ab375a8c634a1914bdae8c32162b243c4e8e911f8699403623421e835a8d2c46ccf411c3cca4ce5414eec494054b534497a9feb94618339e59f64e78e750e57ee68742d70aa668b2926d98d92810632c270e51337caa1d9bbd687ec5372e2f1a63053f2ac8317380c99e425adc36021607d46098994a6d32c6c224f632e499cf3e8dc11976f7ceeb4fe944d55b939455c7a0be48024b7737cac416e5ff566b4553a8bcfe86de678a1e91c819c60585b898e123c119fef624ebc22463247aad576fa88d7b7e190b754e69e51f7e679c6cfd45f96f34833a64d98e93a9b19c32616323b266147fad93083dde855a81382cf411869948c764f7ab7dffff4775ba77db9dac03b6144ef7eeee2b440c338bacd7ae2057fc884872e18183291c4184009baefcb8ae811e60689505b63e1b2cbbb1ea6dc86d76a84066e9eeae2236ccec9cb6b9753fc6054e4fd1b3c4109021262032ba5ba656d0f102e6ac9560591bae20c61863212bc4e56baec5e57a82ca970e3e90a420098d817e3420a00e6280ff4254605a15d13a8580745539330f9877775781a522abe70724449b6028e727ffc700f26a11be16016c11c16e4f5b2a8f21d5725e015d095d0d5d155d7d70771760083b3a29ae6bf763383c3baf25506b566e9c9c0f7a1866fa803a1f04753c3b6eebbdf5dedebacb4cf4af41a0bcd08255d9571ccf8eeb7a72f4d0a2b1c6a5ab981baf7148c5bf50abd1917b9f3b3c4e809c083919caee16cffcd67ecb1a899e87c0f06bf2ffde66d6bf77ec25a35e35bbf76fffffcf239addf7ba736794ccf9dbdd1d4711c34c16d9aa3894be3e148a9972f43e67d86de0bdef314f8d8ab47072825805c14a11001512ac8801c481cf122041367077fff42aef8c94e43395b3a804cc5f88890602531a040c4105821c89d2daca890114800815b86c7cb48c704818908621414034100743310cc4500883300c04610c4801395199030261bc0890efb4e16295ed91b6dc31becd6486ca33e107b16c738aedfc170ca585ac09cd2c8b49234567d74fa149a0189d89d71187e9a0ba819368b88aefeb499d1cfaa501833dabaa99d361406772b2427b53015db2e9c0b5fb413618456c43ad7a5bdf345e7603cec7378f4d96669bf068c4212784e54e8d31a7bb7f372042152500b8e1ebc561536a409636153884f7e81cd510e1ea56cad28901f3a30648017d7c7b5c0b8679621e751d4d82592a45ee3348181b3f2a8c81bc701bd4bfb6829cc5fa0eca84777f51f6a0861828d3079c809369238bcbb46a32bf2acd012fbefe23a341079a4bd1452245a253612755377c9dff2dac8edd101a068e715109c37aba9f7431a4e23df28e8b4fc837a7d6800387308156a52218cd5bf3072687faacf8efb7992f0cb921511b689c3d414dd72c19d52ae0cd3e942ab04854c35e54b829cdf33c40fde8b372541e7e663d2110a5ad20ac7190499f30d9d25d5fb13310d5a2808eea2ba9e39b5d61e061405463e339503855d5662525388a5eb37da40aa9b2500e85d722b9a2bb7ad385b76527f7be044d55d725e839b48ce71442a9b9b8aab5ab28c0c44e9e36faa5b67b7762f3d232d0f8a80b950aef03538b942844f2198ae17fd08b3241a0ebec2adc10e354142d5146c1cfaf2c90fd089108cce8296fa9037e335aa08e6bcbe0f2e1b420f66720dfef9ab5f5262ab923debf1aadc961ee017c909d0662705d68303f6c66f6f37326b4aa6eafcc97c590713090d0bf9cbbdb623e003874b7f74657dc766b762846d04e485a3440cbb6593525b5c310d94c28d9f49c1b0dc08b788c5cdeffd7071b9995ce795b5e8c1cc16b318500afcd826b2dfdc4ff76d0747b7ae8bbad7279ea012a1a1b5c681565a17cb1443d5e60e84d0395ab1dd4ae2013fdd9ea698c5bfdac0a6748e122b352dc7c318d115d6e5b5a1b9ecd7616b3a7a6d78288d0d2f1f1abe4702791191ef92d6ed370abdc456b1d590e18e14549d65da6057e9255f07a628737c5ab83509ec95af01f9ac41632d8c5d713e16bf1c9f9c97cb9d19cf95643564e609edc4919461fe0b6c061e032a49dbea5c4b6cb23cd704b94d3986908dda91b26fa0cd7b3038791aee6e5ddaf5c7d064222e4fd1a05ff37ab36e1f437420a718f3f54f10941df291f854d963d9f826edb299d7f072ecb69b68089f06a26d8830ec5f33c8ccbd8620f2cd35b3b41aeec4492ba0313309fc89176846ead75c0a09255e4237463f56a74abd0cdf8b22a053a61eda1d3faceb42a74d2ea5167e2276d5cebbe5a2f20558fe958dd478941406799364c83350c4bfc62d8f49f001b5baf1dde002820e4fa6b745685a28c8177cae8467ff3991d68440418d1890a62ca43518eec6c1485d6d2b7d63f9f48456e021369ebb7af4b4af8cc63cae3b8dde12f8168fecf0880eb6366e33f8b1825d0985b97b74cc3bdc8e80e01ef1950949d3ae7d6b97619faaf1c1218debd00d774229988da5c7b8dd34e7a0740bbc760ea88a4b8e9c812c3cd1e2c648a5894d882ffaafa31808d769a6de48e6cde4356d7875c9e842da2061da3697fef244a4fc27e84e2a3c087aa11ed3987e0dc726d2328c77bce6e7ce6966d328fb444d22947cef620758a196296a7cfedb722b96904ff7b6e88023fa3d031c5a2818fdbddbf26dddc202f1c39cd40a4f4ce735d657a74fe7b43639c9044414d086524c578f9ec7ac58f2a10113d890dba377e35ce724b4940049d49eca0d6b0d1d91f14aba759cb7b089a55aa94cb12c7b9dd1f721976ba975b40a2df805e97025b6c92d24d86396c36986e16bc87ae607f64f917e75859ddec24a0b89a80029befeb323454080947c3fd4fb9e93534ea2c167f959a306f69d220a527af293de32b39d3b8aea3bef039793ace0a811b4e3132e0f2071b4077b33fcc1c1dd8d300cddf0fde757afa5778f8297c99dbe989946190b37dd06a179fac100dc51380fa0cc24eea5a41efb492edec6f205e71b1c70e3c852f9d29d809489f0266b280b4b7741b9a905cd8456db7bcf377d9e81f3a563c729211215e0f817524ee169ec34e347a21566418e549304b4ef581549bd813cfbae2feadce34e939b0cd7a4d093fd54f0e11240d527d29c461a416fde6dc6f47d2a694261f062ebee719e37e4ecca58ac1b701fc040e67ff886610071286f89bf12cc8456061724a1a817338c15afe0f791d0a05e01c9631397b1e025fe98f73230f3a2a146ab197659e8d05908039ac3e07b0d745aeac92044e4534ff454c27aebdf11fb2c8403808d446026c7e6e571bcd4d2fbb23fa28311b96132236b2fc2b70429f18060fb652c722b2ffa16d56995390cc24cd67e94b1906e4ef4ba39e991447f575da60300c7aa1b16aeedd9926623ef8ced6bc9f36bc4f17e460ad4ab69c4a3333e698306e9a667cfaeb9d897925b59b0087b049106ee08e111c7c2671e82342fe31a7068aa61273e1e489f3371475e28f3e3eaacc00b8e5a8495bde8204b2b5e95c7eaf08b2d5cba677985544f06186d2cc59c5cea9c889589ec8ffdfcca75235efbcfa5c217815d0d1a4857c9fb3f75b1fc97a18de4372d45737fddb27d792208a3e1cbf91983f964a7ee52c388d236cc28524a1fe988072c2cbf21a2c6b4d8a0cf14e818ea4557a4ab0639db31b10c24080465d5eb03f4e3086915ec7e03036b5d568133b4523e1a8870b838271ed39894d7968b93a78c77388c771dc7f599d80baa88e4fc569cd31b80940987d896a23824903112b34f4130a4905c1156493b6500d2c7c2454a44244d209480bbaa6ba63a5c0442ca28291d99849ac1749b0213f37fc72d0d8102bfa710430090d92655bac4f518851eb3c3f982f3da3d59f189b253255a19b292d9a15a8a3186ea9d52974c740a8320e6990518c9943698fe6941f00b48c136146678baa92472a1b96d805dea118cb917e1d046c27e466f01fce2f81787f1cd16043af8bab8c3c2aeaa2d29b92e58e5b895167de2fe599180b06492fab2b536678d1a665a79e9d16272287b93340bd62cf26f4fcd25ed35f0c74523834b728c10a6570951107d6c5caaa45e0587816ff0e433ca955d1249a03c153279b5fceded141a4c002bd2e72ed439d0b99ead43117a3d9156ef7ca9e3a77dc2d7126b5d63ba7825b3622375be832cb67e4aa684cd26da03af0d82761c480233a8b63955d561cd41692faf984b884a3675177c13c0179421ebba5b35169be5c2d886b036753bac4d9aa95c1b5fa39d0e32c5902b7deccabb86179429765596c2456e137eb43bf25aaf45edacfc46aad6c4c350c65cdab37674b2588a17fa31f465f910e051fbd0cdf1d6e991cbfa91da7de30cca0a6722e620e37fa4d8131d5bd0eff3bd9b8e424a0178c3eafc8123b375ad3c97b58a7d959a0aa20eb98142b5c5fe8bbf10417b5e6ed73be0bbfaf83c3d2f59c0608d93ee6d890c1036d1863e6136ade2e36cc3d37cee336e49fd888b813834e6295afc5b008561ac3c8ad744df8128300153b7792b9c8874d550f23e258a3732a4f36e6e43e4c99045e98581fab8b045adfeea24a118d49809c57576fe86ee85aa6d4128db558aab7541c9b8cccb108d6981027e25d62574bd7dfb557df8fa8d8895a3dbf404bff4b05f893e2cb72597cca19864120875b747d4965510d26218f392080be5a06cf5fc3e3b4a146f13d84265efce6ca40a378ab6707b8520d523a4034e306ac3228ed077cd999542f1ecd2ef02c3f4b4dacf80cc97af4738ea25c9fae6f053a3a920357893c8b1dac2739468224404f66e70a9841e2f6adf1883ee18bc2f30b9fabfbc02a2e20112e305afd7b428192cd356200f4c9c1f963a015b5071b63b065f7a632e61109102bde0668f1a41fd8f67ad40973c4b65684051be185c6f75bb9b8080ca6fff72a20dca0959ab162bafc8aeae78eb98919ce731ece3095202777b508ff037d2ba66aa3609d0fedd8a02f542d749b6c2767374a89f40d200f0e69d357c3c98855bf844ba04e13d3c962a9e4a3bc4e297afef46d851ec20f529adf107099ee9105930f418219141cf1aa34d26ad42113bdd99425e15e0a9725075a9baca74016151c751a9b1f10d70a81b8fae426a6ed83ea480ad8f70a769c8e21522ce058727a34a9306fdc2b2efc44294fa5c56bd50f48f73852f870a04acd10820f5919b9500de6425c670c7486c99440fa53e4d26ba6133284156bb2e308c0f774b8cd3d872ea8debcb67ec6d964302bda8079b6b5e83c4e6517108415a2da66944ece74ce5c44541ea21ab5721b44e07f860a00fb19a9650051eb804395162c7883b5782b7f156aae8770c59277044b589b24cc3716b387be9d440b87a4c33151928af28fd13cc48d33ad915d068f9ff8e8890dfd9f2df2ec6e0e29240a984a272a8b29c51fe360eafbf8ea3fe5aa0274f4bb19db57d6ccb2e70b01aeeac93e70eb48d27203a113f1bed4c293a7036fc25a91c00da18656c548612ff00566fc4fe4dddf8ebac55eb78a106fc4c4e38a4eeb215abd6a3b752f1621a66ac631f1e5597e5a79d744de0cbc35a2dcfeb832db4400e87465956d41ceb3c3e7f54de88210c5367c04749ef979740849e88ee9134f859e066d9c513243e8ce04683280bb7b3662d00d11159808a1c2264d2469f872b2820a74f21aecb8edd78ceeab3bba03746316a11d62a4b068ba8f13c74876246d381c626262585e781009ddb340577808ba8faa7a82b4b04eeeea3d7a6fa57b23dda0efbaebb803d510745036ca3b08ed6c564fc3701f93e3f2887804a3df84b2d2264bf599996bfcb76fef8039f9eb250d1946c3dea799b553a246cbc55a43686cd62c63193e5af61a75b68327202652a1f9d1acd0a538c9a4344c45fe95675b98e4e26cbc076361601dd61454fa2b30c5d504d3b240acc4ca8ea50948c365c530ad785893c9be3a0a16961bbb2531254b02e0800bb3c1c89de8a5510b2a1633f55d36b1abc61a2e0944892859842a8c413aa4d8a90593bbdf15e231f2f5a5f07615867062a53911bb2f29817fa5cd10c6eea37987a50d52c9c2f4990a621ffe8f221b2ad81404e115370c83876a1e9cf6790c55014da6f6015fda45576d6a7e0a4ec42d0111cfc1523e525deb53920b111ec2d6a52973c43ec7b9b42a16e2a99a03ccdb95039f88212e5c9d64875de14bc118d244ef5ff26e3fb32e4bfde632bb6c78946d9ecd92f26c4d78a2ff73084c067661ac48dd7ba9f361daf2efbf11d4e831b2a1e03d31c2f5c0d50b2d1e02c44adb5c21ecfab699b140436e8f717bd38c17e84826d8d0d6c84d41319fb23268082dd3944c20ac894111ab8707c7e76259ea81121bb3a7f4b8a210ce7a25823cb1478805cdce3e6c6bfdf851d84400bbc6e7b3fd8663adcfa02342a6c9d178c29112131184efaec7da179d231c68407b6679acdb628ef43ef9e0e8577c94fd4c07a4589f12a97711a5b68956ed2dc88772f5d28bc6e28d723f82e7a49ed195102cbb11175f6b142d0d6326200c2b2a9244528fc728ea9aa5f5fbe29905603b5028626fc3baaa335a397a88639e87f11d166eb51c0e1dec603e2d7a27e4e17acd9387297b3e41cfa473d4a09877d1f9af7d432bc21a48803761d8bfb4ca530aa111bb3de4d55233b1d24d5ffa8db7b86d89867f9f829e31e7e20d47a859e7024db45848899d93a0ce92d854582a4941f5f1223ba3614b85b014092270b91ffeb8e17141516abe4f3ab83dddf5fe70a386f6f6e6be3354e1261c3acb904db3da4c77de3d12aa6a07388300530efd0fede2226305223949088608f66415e92c823d00759e0b04baaeee9f04a0dd6b8dc85bdea2eaf8ab3c71efafcaf2a54bf95cd22b90d475b350ded4ebc51d09ce3d54c3a8fdb1b52e4204a31d71c8654083250c3257dcdd4ad0ca71879502aa7472e21d03adf771a0321474f5c94f6093928b2959284f6c1be361bb155a282bd2534116c27a6d9849a0921aa9e5e94e1f2e5fcb3038dad9d588e44418572438a8033b878c603837827afaf8be02bae14a9e4b6a22023651483272b5ef0d397bf019c6f78036b7c8a19d38cfb714e9ed5b4e96bae61dfa93aabee011347c83f5f0eda9dd5b10a7fa76abb16c74a3656b1c7dbac6f34e16d0aab77f4bb873e5ea2f37316eb5ad7a0f14836e95833a909ac8efeea11c0c9ac2d97fd40e7449edf045ea4f3510e7aef078cd24ddc887a695adc298b0ba0d4495188bbc3bdd8ac44877ca9db807711990e80ef6f956a0d4bbdb63ab1edd1e124f4e280abb47b37e24146aab4bcf70492887ed29ffab6fe11dd8e7d090d8e2bb90f002dcc417475b18cbb68b18165b966e92ac5d2622efa11cd0a4f01bfcbab96848873d9be1fb771ed375355df744afc84018812382ae402a294b77cc45511d8cbc8f5398404f63cf33eb8053117bf90d225a671e497ef1df019fe17da0e900c8f5b4d228f0694145fbb57818fedea62b5b6448a6b4574b999b3cb2bde7d0139d35eda59703c4904a1e1c1c5389712828e0808a3957b3267db3c0ea6b3b7e1f453149b60635825dd7ffb7e2eec99254e88405d82135749db8a52a690cb4af7c0058d00574ebebdd2db35a209ce02dd649050605866f7377602c03a43294030f57e69eb04d0081088a9ef1d4f4060a73910d10eb401c550cf3d2d850825e542390c93ad7e1f1265a5284690a5b4d3281cd4e713297e2cfcb2f097edd011c65ac56a04f150aaff3d3c1604b594cdd3e2e56f538989c18e0a733b862a3854084ca4b90a970af6e979a177be89bb8ddf4df81231b5c846c67c2b01c5ada0d104b408dd3a78605ab77e562c3a96ea5907bfe6ddcc5f7023eecf8638dbfb88d3d0a10ad1e3d31d7bf34d0333f310ed4017b66175ed5baf5b0263100846c0811d7b792846fa035466d128a540be5ba93e7590f559a0accd3f13a66f14d39a11050981a611e1cc300f40bb7709a3ea93b04c1afb9752b9e0fb2c17812139246cd1da69fb885df4c70710b3707af6ace756cac2d3fd44fd7afadd773ac3732c2efc742000d84c42c12f44c05df114d3336a576034f8b7065da412f607b3abfb7a19f97152dfe126b6d92a62de8daf9ca4a417a9bb1ed6cf918f96afe60142caeadf7d427d18d2cb74c6f2edfa04c5f17a05d14800f86b220824c72a20d9e26ecfff15c03913f26f166a648a4f056d2fee61a053243f6f6671e280a26870f52f93f7e26626f3f4e280a4576dccf6722570c59e1e0f8d796229b9ffda7058387a216681a40d5a30659e7ec47d1d94f8b39f2710da8190c8b007f4e1352e70c39f7f8d60432474ac125c2daa7424447f646d9a43318ad018bba281f4c88d6a683aaf261eb48c1da70300912a1eac0565b4234384ab8858912c03d11e349e1a79c4defd1efc5b0f2b379ceb19262f238f79618f54d97a89a6bfc1b2a1b71bfd5505e501e3405b65ccf941400f50f7bf40cce0932dae5da83d4443c808648bb0e14c16aec2744a207ae588770657ca67221ba3aaf0d85241fe15f4c4f1b8b24391d3c1de6a233dccc5f7d5a868676a2647a5952856d0167ca7a41369a6002d88df70aacb02b42ccc68ae6eafacb09a810aab4d779df40b021cd9fe5b3621155f805fd47a6e0dd8aa705640d47aed95477bd6fb5230d3224560cf817c8aa40e245aeddd4f96ddcff51358939dbe5b1cc5a753b273bfaf312dd972c00afe944a2dfecee0e682cd5283298ab34ce9b5d0e0a13470dd0bf2b94ee7b19962dff3b5f20c2104ebd7a8bf3b7667a95508fc985148957706d6a5f846e0dbe6fc16fd1c57f7aa1228e50778cdcbc8c9c3b8cc43114821daae1724b936e784860c3259617f886e29efe6d5ebbbd0d023acfb0f1566d783109ddb3c7576e08ba8f0ab3a0d50d92012ad08df5b7f3dd802e08ac050b5323fd7f231217ebb0277a7235ad3cac28e0f2709d0b282a41816e2cb85d77137441f082f0663eff7570d85697996aec8815d36206a4aba07b88f6352d70d82be0877cbd2bb33e310b24123acfec5dc668d87a3d6570f741af515d578d06487fef8a3b26408fc2c30fff59bd70c7a255aaf789aac39d3f75f2dd967cd4720508088d79e807df1cb4c39e717b3ba65e2c869b1efd08dd5c86fbbc5de6bcc985a29c78d6cddf697ee0d6db2e120aff1d3bcd3a0467c73142281b4a689d6d44a04780d9c7c9957d06330b60992e82831835e63f9e28e42127a9fc61882b0578b4d7c30b01a234f6bda5366516f58250a00e91bbc3c369de9dcec6bf95f493e4e4374cf533d03454320f3134639323e7a045c44b30c3c28dd2ffc95537a0c3d1e2ba1e95aab427ca673036494305fb58d931f833c0746564f0a85e6b5c969ccbe63ec40a992b6ca3fbed4e808b25e934cd40ea27befed110a873f485ea02250f804f4ef41d3569f46ce29c23255cf4828b574a8d8b6fa6efd0c947c8077d924826b143a7871b87fa29e2b75a1a7938d33d25809aec50fa1a87fe33b200a42c813226754d5bc968fe6f15baef2761dbe28676646d744e56d635f4cc51e1b5c7b342332120bca097c0f6a0c3640ed4a6e82f997e830a1552444ba7135336e77533192474cfcabdfaf8982169c13d6afbb7d6e59834888d8218d3620210554bf4a59df242077f6d0674d661d7e220770edce906d1e7052e73627bb9be10e66e998cbce3153c45ed016057de6ee6cedb70d73d7ce47a9aa51da076f0d689b23ebff4ba63ca21277e426682df54896def8acf1251f4301c26f7d41d1e84bd2055d4f22c27a53a01cc2034e03240c2126d1ac64bd5b10edd523389c6824c48e054ca18365a1f50ab94b95328109c204f181412a317835d1a894546008ce4d88ce72930a935dc2a2a46eb92fa3d817f21cef7f4933141041007e7818c3eec68fa29ce059e48bc8d981ec7c2ac961b045f5d14bc4308a28c5407ca2929dd71296068d31a0586d8caedc1318edc24c39db1708228dbea646de93c09438efb6b6de37cd99a0e4411e5fbf558de3effe8435f2f962e2ff6010fbc167c50bf531513b2431d03b0d0f1bfe8cca82b13582c309deca0666fb39f3429c22df20dd30adee36356abaaf5858902804b54336c0d80e78944eaf9d8971c568e561f46ffe59a8d0124889b299e20e5ddb7bcf69ee65b09f860fd4df4f876cd4f8cb9fb164ebf1082eea1a68f570382e5879ca4de17f9e6032652a093d696028ca6b5ffd23d73671f467d7ecbd68bd759c3b5d51549f8b89c4d015d12a2deddccd339e3020b2a74688ce90f1d4314717eff0cc5d9eb03002de1fa2bdd0ac1823689e7cc9638746f4e72f0e3dc0bbc05029c949326432fb8b11b82238c0ec20fc7750764869aa66e1554b09ac8e4cfd4324f3fe6e4f263f2e3e8263aa5c4c3f4059bfeecafb302654b16a85e0fa11a2b9b23734c736a0b3709d8e142690b0e428c26079d873634495ae94dc5f930ceefed1332d956b8220634b6c4e3f43273440ce6acb7f1705c058f63591a223bbe4b935c889050982ea94e9b40d265568814d4c9add3312791771cc3a7760c9b5d18a5338600c26f45cc9e52f6f7bda68fc7504fc0d4dc004068d695706ba234d35182367e952876e8191e2e3abf07e82c277d9630a03cc22c5c59e06840fec397406cdb18c6f4443711372b880f287f294641ce19246660be7806878e85d24f1c1c564a6f70e858a8fdc4c361a5e89e8394d05215e61ff4882fac5ad2c0aa3d6fb48325117b15028229998a5d2a2d15d1dd9f658a2b8112579832efaa749133338418cca7de6e26abf4fdca5709676568df8cfb606cd4224d932f3f4a98da6af3d37036a29944c58d2fb1efb32d04c84db00056ad4e44f787e8099f9defe6259662252ab68457936a984efe2701ef16159d0205a74546e17d4631b600318877d72793e83d5ede9dff25eb56956cafe9186bddb7749a5098148130fd04f8017d97a01320c82271dd649fa6fba2987ac8e78f304df39cdd3cb5d727a6873fde44eac9b00b6909f54a19b81c263e43c68b69e38d448c14b9a32f41ec39a3884ef0d537278e10bd56334dc83646c3d98e390205c9032c4a046c51b16f27c3c6f6773c3da82db51a6840cbd1d7b92b193a19f17ba199305d95fc9c0b08b2acc30251d0a4a66f9452274e649be65eec14190939b2225dd7866b070ca3bf1612467e7e4d8a83396c0fc7dd5f1e397e833109c39d78d7c93122a50605dc99407562e1e5681650e1580d0904718c0e221895402afe220bf9b3c3fcd2eb12a1acd28ee50499e67956801284c2c7facb8a76cbcf3a1749ad043206ba4d67a58023b9f69d06cf6e1190bec910a2a7ad7b92707bc9021bc0a145c483c61249d27b093f0a13c925af0933ee763394d926025ae0d286168bacf7f3991d2a91a256dd6e6e6cca8198096e1448f0ace79e20cf711cb98fee69172f184c0e0537a7009ce22e7f8f87ee7ecb0be64bbf15c4a675b7665696389c24c9141990fa6a50d673a2d6c65127ac81f7229b1093e29c878f890de802c5a73e7c853c3d24d16f972d23fdf57a166653b5cb1b1cb6054581655404ae3c8fae2bca3a22054c4216cf34a9503661665c039861d3e48deae5027b225cbb52af7b49878e4100143edfcd08168dcd8dc98031a76b40bd240565614c8ab21120d182632ad8faf23974f55ea6ae53307804e1ecb45db07e9e8c7758350e8208a5f521782a19a194da09ff9782abb0a3ffc43396d657b7f320f560ce1910b84c631dccfab4f76517cfd035814ea89281aa7e49ff2ab9879abafa3adcd8832032d161d4f00d9309f05d3e8ed00006d523c3178472af55eaa1f0ed831383f83104786a05060cb09c9061953536928ce241562336532c9c2b3b28afdc56c94439a2845d9590db799edecbf02802329a30de7ce83f6d1734daad25f4f32f194a05e660ab8a4a20070b2f2ab1d568c983de579f5283a21777171dd8871572080c7948daa852d1b063f0571c1895f8e6a83df592b1d990ecdf890f52522f0e0d56011389d7f5f516e51e25e67edf1edd75a335d4ff5abc7d77768e51cf31c38474a041b58f85f3802480ae257fbbea5a8fd57c74193ae944cae7641ca0d3569d66e337f57f3841c3ac04f2e8f655a2618c19eca454659fedac95316b4f714a8026110c04645ae0c2a47e32a3877b2556ad4406944be46c5ce046b7c6e91157a01909995355ef8f0b2e32c725f7a52f796f276e1fdcb185f7827672697b227158205e4d687e5e23a4dc6622fa8efc9390f1f12d93748103c46aeb15fc12731742b0cdd90c6939f1dbeaa1d0b2d0d043f800a62042c71e7223f3f08380358f73140afe435b83aba5056953ca6a81bc1de942be35bbc430c50389750de08c64c2041a8c3c41408246dbbdaa2084d9c6c308afa8651343560c04421e963970c4354200334cf861458cdddf3e43ea97bef0bc12331c1bc4cffceb9c0c7a6782862ae2464b4db2f8cd956146c1120c3d55662a717f891e55ae254e483f5ade5089387beb69f6494ea8b1f7b67a1ccab86cc3b4716cec165bbfaab8fe912fa11567c411bc092d1bc62bbe9f98eb1f3021920dbeec13a847e71311880359fd564bfe72d7f5e39427da2ef784dee06e1718e3df766d9aa47cc36e3368f342f74549c5ad5603c9cc4fdf57408e0356e94290eddc67a01e0043dd5a49d62e05cb4687609a23c1c0c68e340a55e378690c538b840d89a7abddee008f3c591abd04cdcbd1890edabc4a4bf625ffa27513a8f02e359c0e8a46ba86d7d4caa5280a0bb39736849d7f774fdc9e5ff2bf59cc127f4c3b2e15267883730327b52d8d0fcff420c064adece35c30410d968af62d3a999a733602e367146e1e73974f9001c94a8c8a5c01d161d1d56cfa8688ccd30668c9aecc12fa3bbd5e71c1961633e9160d68fc27811c9a0f63f2f665f6d5ad6938ae5ad2f016317fd5f0ae7bbf30d7e40e85fd73209b036288f7f9226942122adad3121e255390fe290aa5f89d0d7726fa51eb83f4c44f56a9a4041c72534f42b1b0262d855f1a77d7152951a031ed31e1f083a10d9d304871054728add348eb302023287a0da10c38986b13697b8105ba0524206976af6342cfb92887a548e801aad903b803dc362f7bd8da01128f86a7e473c81a231d1dc2de848d5a7b66c713479c5533762722e9d26adb69d3ca36486813cc9b23c38555f871725d92ba3f13fdcdf02b9989f4361d263a5773e240df40a6de3ec13fbc45565a2fe23cf475898d61828f2b5b6f290816d14b96e202a9a297c44aa06f40528b33d41a03ae4a74eeda93a788ab1066f4b3c0c315711225cfa59f251f3571358d02e763a2611487eb263a01be3d9126cd608cb2cea3c11477e0c0f628a58961c4510ae04c7f2d84614575701b80fa03ba3951524d3c9de47b0d7a9a404a7529950606d6a9b23f26a31bd01d7ff1d35b96c25623f50a531ef6296a75f4a18809b64301fe08b6a4901e83eeeffc4ea4476197d43f42275f97dc91df19db30ff44f09d12c0fd953944f0bea55f163bb9827991a839b6c865b953b29c8e3e83c73cb17ec681ceacb74acb1efbc59696edb6b2aad8e16f3faf8108d56835efce56010e17f9853ca7149267a3cface46f3affb2416ff54cce96eab017baa66a4562fb36bd745470bf1d69e4154ee7d4fc70924c66224be6cfee3b0fcd8f142c3c3d67c6a5a87ee103a031fe9e1f3ffd77f0f4b9df2cf2f76fc5940928f377b0b47f070fec682702a467390f80ab79c7c6ddc0ec7675dda2d8d6e9ed8b8ef60b30f19c916aeba33e9e2849f89e56299c21a11656ad838e88d3ec8c2c89975f37f3609ff78f6a1e4ca13f04b97f12a108cb4cb8fb5da15e1e9545c4001684d81b9b7bc9c3a77d96570dd9174d23952cee6dcbd8130aa59997208c503fdcd1e2dec2bd542ba6e16724278b4bdab92b04f15a9747077d7ecef00a7d07481ebbc6cbd34335ee74a9943cc4b5ec91fca39fde7f584dae2f5226be18d25aaf9b139a8d174f765518b15319f27609a982ede82c24ca346ebc3d37b9ae284a0d1ed6882c0e8d58767e00d421cf30739c9e4e944653612b8f5b5bb59e590fe2b1a3ed52e9d45150d8ae911e130f34c82957e078c1ae3314db83b8d5685d9e698bd5f8d57b3c9dcd3a9a4f5334f0b6920d61da9987189076ed05dd6b7f4208e603bae4ef83bae3956c30a7a6200ec88b51cef103f87f24650a153f100fa95a3ad9593fa1194101f1b48ea5f9b9f0b702cd284e35dca8786f30a78bf05e8ceb6de95fca2a52c245454752cb0397a3c62a156eb612d10f69453ff6108e7d6699afba1e3eb1531ee265cc238f10d4fd93b54ffe30ff33966873f020621631d3b1f681cc57250aed66eec862c33cfda115385b28d3aac21dbf4ec7f1348de60a71564891c5f348472dd06ca8e18fba3cd12ad9a76c4b9ca8698adec872c8238390490a379d2de72c7f1e7c5d1b349c34f68034096218fd1bd64264f2d8a4a0515873d54f34395e04e64a01c36b8baeff9b988d957926c9973a9ce871cab6c73dedea8516aae396af8b719a3c8053cd1a8c1af15cc99dc109ed2ca45f0b6809ecbd7aeb412bfd4eab37924585f8ebea486ce88895907734241303fa4766745a30d65da503cd429d06d8114e3ec91fb28b84f4cc9239ec8ffe9dec4cec32f899ecc2b2363cafbf17287df209ccfcd5c0701000f34c2cf30a4493601b30a59ba2c7350b40b76b2fd4658d44881042b6ffde5beebda59449269902c507a00605073964049d8b78737df7857eafcf21ad6a869d8bb8c3f752baaa663187ac8b43f4611cb5bbdd4ca48c63c2c036fde1ca8584b88a71c819cc6651318e4632733ba3114a8d8a71c8a0973a27ec212e9d1302c1b94240cfe3afa509e09d8361dfdf439dc3954e1db6e90f51b78b2830bcc0d53efbb02fec2e86616f3ffa5124ecdf97bd2efbb67bec9baf7d405417c35093aea0c33ed4b0b7da0d7e2d67767e7ebb0f48b3fae3c783af0585f8c5de6e32601f4dd0d5205bfdcdade45d3a98f6f5e8ec87da0531cc47389f629f3d9d58f7e135edcb703f741a68c17082423abc406bc1a87d969a0e30bfcbbeb06bf69513da5e7bef9c8f455eba4d060f7bcbd762d84724bef560ecd8e9cb7e7ef44d1ff7dbf7837a22cff3723df6857eb1f70114c62437652a1277aed72ccc024c60d8d73e4c4472b56bbbb46bbefdebb5c7aef91a08e37afa19863d86bd0fa0b883bd06621896fa3022b9d97b1f6a93417b0cfc817df7292da3299066f551d9bf641426fb988c5aec9bf7ba30bf574741ece7bcdee330d047b3e6f7f3f2449e677baccbded2b798ed40fb5891b833434c037fd8af8f3d18c6380366edc72d011af614b4180883fefc0bd37e5e20e7a41322affd5088ac03b87efbbc07c07da19056ad2c1872a0be8f8f45e20edffa74eba9f452ec62f5231299716c2e8c5703613cc07ffb06f86fe0908bb9f685d8cfaf7f3dd2c53ebed7178bf8288292419757180293430fa939c41c625b03fc60bb0ea59aa9978baac0623ef12caacb4be800a404149f6b2f2b21832840ee9e64c48318dcecb21191144c280127618b1d98e8011629a070425bd104142235ac1aad262e77b9288b225cb020c5d57e103b94110aa460e4bd99bea3224a35e3352e1b112189dbddb07bd9504c2529ba7bec80827779d42d464acaa2b4443d4989a6878f231a7cc04009064b31f08901107655b19a5092a06481a2046549c8c7eb157437141d40a9e2d49328c64498f0aae7e051a48307966eb111b470e9f2c44fb718c3b145ac1cddee157437d2152198b0e2039f72d639e794e283cfcc880cddf61ac4cd16498854714203249a5421650915b77bb6cba32831d4860e133ad0a2e4d393dc6d9163e9d9547af5e185623a786881e4f6d7c97952b4d0614e9f3ea90f41d08114226c618b7c5299032b9a4a5c89134dacc004505c9973cec9848a2b36e8410393aec1c89215951f2a47a824a1d2a4bbbbdbdd65b7ec7164e407c5d9d019e24ab7188b11b4a81e88a95019c209e9d2991053371d3c88b4107121ea82c48facd26511524aebe1e388061f4e8cbac5473a9c20c9222ec5490fae4b29dddddd5dfa3ca255b6ea3a786c29ea161b5d3ab61c75aa24bd0328394062010b84f0c3952a507ea49452b620e1b4a8fa60a356bac528b872a1004bd7495b66953614118aa1d7c5022457baf48953a487ee4202d42d46722de982543b9044f9c95222650e8600c2142d384214240081474eb1c5dddddda5db6054c404d5eb9c7376e916ff1c4962802b9acc39e7166943270829dd622b575c4710587cfa9c734e9feeee2ea594524a975a74d34851b7d8e8084906234973ce398924653edddd5d4a29a5942e67dbb0c31557b5a17365a95bec033465a00289574a75b040148aae3822020b9670058fcc81d195eed2673f51655251b7d8e8484712d20554e443103f0c41491352e071299ab062c47529a5bbbbbb7bf798924ab9c30e4cd589bac545464748cf427242ca9e475be811574a29e59c7332216252c4c4689e40015564f164cb91d1148a00e14ab94412707065a5d4a7bb7be6190f4386868001152421a200c1048feca32b651352b05c295d522135605ba4943618ed40036cca242ddd622e3d4a744922a5fc4bca294a5071e5ec0440f1ba383a82cbc1a348078f27449953ac121f25404799114a3a8a584ac28665890ba7e307443a4c19ac483a81aa4b14204c522e092ae2923208691e2161a594828b145d8aa494b28a2606a8e2490f1a5235985ec31341bc542c078f221d3c6a97a0db52ba74296b987226cdd9634a2925d155c4924f8e5ae544eb14243ede638b571b9ec8e2c22846e50741b7bf4e8c072a5fcc39dd9f400237a734e112846d41533b8002e8d393dc6b132d5ac9c7c7a7071b9ee082b90e1e4b44c188e8da50a4450d4f5081932e411c7c08496edbb0048511ad62ad8307129020e16ca1de0356b139e7c4a40881e5f6bb674548b88e68029d5004cd293438b24493b4e084071d9070e0850f9ad05110718429443c61ce39e77425a208c9a1a3070e420480458b1abac89650e0d293dc3d9b59b08b760994dc79988204c9556b265d1e49e914a9ab1eab40d22dae62c955455027875029cd24c0454a1444243189820c1a8a2820e1d293dcbbbbbb5b369d27a8b2b95cf2a90453a4c43a61a928c8ee98c1121586d0968ec060b0840a45960b1215aa5c445498e21a9a930a58549982a2232892362d3845567881750e1e453a782cb1c58f9114b3041bbda20d9d2bcbe525b218ca32670986a064c8c7c787053d8aae4032655d72994a9227b7975cfad13097bc40544414443928fa91a29fc862842c5b24592b45384458c20449473988acd31a2e9044810b54e141b758ca8e2a5692945802a372ce39a70d926c90c5064add9195cc73f028d2c1a3094a4d5852f2e99480544a48be0641f6f07144838f2546dde2a30ba9dbb1244955995892c4f47944af2258d94104758ba35c431d91aa2788a2974c28c5303a2508255a70b15119a338ea1623ed8822c96930852bf16adf0ff7da5b8e4a4cd3aa865de9813b9f6de4fbd6439fbff5794a1e976ef5dc715d4f894917fb476b1f1efa1ff368a110db3c36da2b724b8e3e8fed00fd32b69937b4e64f4b5df6ec1b41193431666860c8d0ac686868543431dca6599a0ca3a1b968682a0d0d0d0d9d4e2369683ad2d0300538fa313375c825875c350ae1c8daef65d0c4988121b352c5c0a4502713733377774b7fe136cd66d855e974d9ccccb1b9991bfc5e064d8c1918322b15c8c93e69b1b65bb6eceeee97e0e56679cbeeeead873f19bb6373375bea83b3333bf5c1bdfdaa976c358ba544622d4b9674baec78af0dc42f2ed8b47bfa472979cad931b28cf2ea982549ce225bfcb6dd69e41cad7aa13e701b6b3e7deb993a1bffe5d4812e9631335f4858c7fdd2008c8765cbe955c18bb9d2975245e9ccd806631bfebe6ad74b243333cb24d942ea98d0c5d77ee8f2cb235dfc4b265d7e1573c715c1735cf268969411675c9e22a994b47ba7e38e78c332f6ccb8dca95fb41d8be8cd13c60c7dfbf96e207e71431c2eb3cd15d3653316d9861f0835a49494bd29f5d92db0586cc3b4bd65238047f7f7b04d6c4740b372a4f41997ed119db152f615ba5f46765ddd988cee85878d66b96c8f54c6c0fad26ac736fc325cb7a3944e972dbb7b89d855b319d9d46db8bb4ed1add1acd9bdb43b955df7d29aece81a77154647166f32cc3074cdccd479ebe6a2fb0c895dad72c7e445e78b33dbac24cb6e8fa8ce65377b0c9d57a5dd9877d3f64951cdf29c96d2bb761047b628954d7b689cc814865d6a94ba6c6676e9276666d9b5171b4bb3384adb4824e8e2f3b79566f50c2e3f0c9dc4ec91cb2ff93330bcfac9e5bf405377d1c566b170707474dcdd67108f68a1eedd45474d9d3bd3eea6d745f9bbad87c18edd7cb20d0529511d59725933765dceddd73803dbb4572aa54b4a7d7ab7e7e0aeff024329a5f7902dfee96077bcbabb396c5d7eeb973bf5ab29a5b1f906df98dd0b8e6c31a5dc955e3e2fb35aba94d2dd9d52ee2f9c2ab6e1ee2ebaf8f4bdbbdbdb67d86aefc050be6c2925f7f7b5055d7c669bcbafb14d7c911fae62cb2b4a299d7217dbf0c7182367d492450674fca594b26fcf15aa57bd0d69e346eac39a1bab385dcbb0eef4714ebad3739cb39ad5cf11a746ea310e5b3f6ebbb6add4ea67af75ad7ed9b553ab1f762dd5ea775d5bb5fad56b2fad7ef45a4cabdfbc36b356ab76d3ea17afe536cd66d8c5bd70cc36b593f5b93f3daa4fa04e77fafc72df0c75b0a659a8be31d32d89ea9ee91cd4cbef4c6038e49a9efbc29acb6d3937c87bfa5045290543ee637efbe86f5f3f6bb79e0dd4e94e7eedf76c539f7ea866d5c74ede639b0c9e07ce34ab5e76eb313dcce790a64ff55c0daa73625e8219a8b9301f5ed8d61303ea74303130331b0ffe9a428135cdea1847942e88df7eeee977faf0baa750bba73f81217ded8bd7f4dbbdba726fb3de7ab4aaf165d4e7ef977e42a43f78c52126cfaaa83a0affde85883f20818a03416192a4440e9c5c81a4b168c26708ecf40222224d20b9e00524e0f12b9230a2889984113a5cd3e5246ca0c485b5d1699a7d1974fb2de572e96bf6f4147b219d518febe2a59d32fbe95c57a7524556910b9f80f9d5b6066a893bf3b30cf39b348404741464844d50db0e905dad85d75ed5398ccdb073e14a9d631fd33ed5d663c119a0b0537dc80a716e2ceaffd6b39e051a3fe36bd8b5d8bce65cd4b0d5beb00017c0b06ffd17c0b095ae76557b69af633a795c176dc06a2ff000557bdb4334cf52c6b3fc02f0a0007e05762d364a37fb16beb07e96e908000060f8dee380a1eae605308b766303be60a3234da767cf3e67bfb3e00d18e25cfaf1050d7b1b3a6750059d8b58948279963056333ea6e6553fafcf216b7cd9bbf0c97c0bb155d85bcb799786d98fdf71df2d2072954e2dc369ad858f6fdce2520b0c2f1618762c80a18a0618fe0c3064a9be062ceaa115c0100707044316eb5fd57534605cb22630bcae1318769d4af51d166d00b101c4864e7fccd7d8c13ce799fea47d88a9c00368f629088366e998ee2c30c0bf6167497516139845e70486383860c862fdab54b1b5bf80d8b8f64320362ef699dfec2f0cfcaa83fd75759d4a153eeb628f691fc11047a67be742fb9a65d9d3ad27a3da472fb5d7bea6c5ebfafa854364be4d6fe3690352734f9f7d588665598ec6300cc330d36bab379d3efc8b61395a754d6f3f21d33df2e4ece76815ccc7a43e47b77fa8c37de3e5bde7be819a790efb18338ffa5eaafd986d3c3064a38b3d8c8f9b25f371b3387085fde9e8626fc21e067b15f629ec3130d4fe7a9daefc3a1727c4991a8c19b2972f4306627fbdfc2137d2ec03f405069592f9565fccfbd6d3e464f23a938f0427d87d41269d757e971c41f78b10e7306f3baeeb2013b691622cb9eb6e9dc61fe7db39a53629477fb6675ffa82e0de69b94c93d3a7f417fa05994f1ff509ad6c0c9d5452e9abcc6a2bcd66b5d6593d4d7ef2a23ea1d5db4c4b9d4cd5546badf5693d5d1f1dfb84ae10dc0bfc419b5957bec53836b7b50423dbf84a264625a38a59d1cda95f1b2a7532719acdaa268564fee5138ae175170e313e550d56a108ee047fd0f7558c4a4615b3aade741bac0bc19d1bccc7ccda50a99389b399d7afa6d34c39e1c5d87d42692ccc4a655c01ad80ba1a2e287e41e64b79dd0932b9b2b79e4a65ec6610f9f5ad90eb0611d2ddb9edb8ae04995cf95ded1395d26ae0d850b1111f9dbccaa9caec8b3da9b875fa988fb965fa42d63dbdf7853eaef7aaefe2d6e9653ed505aef7dd355d26307627af7272998d5e9ca62fa49d82a981a3b32ae2b553cd58eb1f263b6ff5fd10e13d91e7593df7f9fb9b7ef8779c93ce3d7fbedebf6c3d9e07dac0f1ba8fbf79956a31955ef46adf4fe72d11b9787e883ccf0f918ec78b0203a0df7b020ba0dfeb8207d09f6d0cb87832d0536200d48bc77ecc533f60331fdb7aea536c669a75aaf5b66d33f8b6ad381490ad761ce71f775a571a9d908d6a2871fb4317f8c232ab75a8549594d196d90f59dd2aa3d73ba7d2c83de99c54e79cbe63be6758266ee8f6ab2e70fa50cc327dcce7dc32fdeaeb80b4a99a6866b7cfb76d733969666595b76d70396966bd7a5faee356adabfa5cf5b8ea72d2cc6e5fbc946f96dd7069a5f592f11a730ed7dc19ad16695c904ab502aa5df04d2351794e483971bbc97fdaa475865dd5d84933ab7119a75939d9a34f4b7936b7c9d9719aad92ce6dc7f6610e576656e33ee488324e73ea5f38822b3fb0e3ba692639775306b8c905b932f309d25b3f216b333b61c2c805a11e41e095f6074c31c895596fd906760bc5fcf6f9eaeb3ea1d5cbd56a826176c3ad1f9ffbaec78439dc0afed85eae86562e24f3f5138af1abcf5b92ad7e55cc4765645ecac478df18207938900211e3e3846a705b26b3211724336b34175a7df70971af7ddc111f57036ef55bee07b77f5b819c10b7fa25f7937bca21c1dc1017724477c6e3d2e18cd785ced876fcdd9e7edbbb6fdde6dd56b71dd4e9ac2bd46857fdfc665436a5b446eb1a5cce014b69a3b6d2478d84e5724ee2d6257424617479c0430708300207976bd1c79568e6c88fcc1cd5682b6cd7616035356a36166b468d8eb833838547dca9439528def4135949dd130edde7cc3a7df6fd644fe479329088ee2d0d6dc6d6bd8d33d98c9a19dbffcc51bc999162064bdcf123f1a63b2cb7bf0efd0cddfe4a947dc12cf9fd3352785cac0f0f1d98a5e0f68756871d68a53163864663ebe9decaed00f2a6fe2482eb31b34ecfdb0c7ec11f9d0ce7a4ebdee4ddf3f58fe19ded9ec6364307ce78343655a812ba9d94b8937589374455e898b895e8f66f544e3f925521eb32b3751b0b1d48e30716c01a0d068efae1a4f5d2fc881fe19b7e7a5453947dab23ddeaa7b1f5786f4ddf9dc07eb9f32bdfe07e8632ee9c1f19878c9fdf8cc37fbee418beb1fa797aefebf7e3f4ad9034abdffb56404ebad3872b201956473e47ff2794fdeae38ef83821a679fbc9c8deb39759f6fd1c1783f618ea437953a84f3df7997ebac5007881d9bca3f9421937e4825e6ec805851c51683a127a5d4c3c841c12b77ffb1cbd02ea1ceffb57473a67feb533d2cba4a99a40d4e913b26fb2bf7d42401d8f7def130252f1d894916c7577292379437b09a68c82c2941104b8d5cf091179b8fd2624445c0d5ca5a087bcf172c315d08b5d01795d6ebfe9e748f7b9a7d4394ee97bb2befcf8dbe7ac6d07fd6e04d75362c5ce21d6d0d0bacb534629a3995996a7d4393c3fbe4ab2d5cf05f5784a557451ba962c391a2f4b6b564b63be91d91b3fda13791e0d2462fe0a48deb02017245bfd7dfd983f27cdd4361e1ca58bef75e149e1f6875c4ba1d582c6bcfa1f2217cf13e978623c170353cdecd53a55ab85cb1fba50e36fc470d1cc877c04e343464a7d8e8ef5b24903a9af631bd3c7ad27654a813146daa66f4ad3e71e9b983e7965beee1302ba78561fe303ea7856a0c7ef3a30b4e16e739ba6afef0c0c93e9f4f1bd6e73d517f3c97caba7276f690369acb5aabe98cfbd5239354fe9da66e8ae838cd1ef165cd0589097b502e29bfe70c6951fd27a69a8ecc31a2ed2486b771dc87256ce078801b035a1ef02e7ac80b889cb40b739cee18298d57f6197b3ee437bb74e756f68386a08e0328e29305cee0f03907521408f1bb528def44eca28def487adcb4eb04dbf7c1b885f5c21eeb32ea61dae91accbed87f9bc28988e30b34293096e3fcaabc2edef61d2e1167953b84e300e0f0a6cd3df9f328a5ea59ed2fc93fcba63ca6fc8e90be25cf41db189d705dbf47b9fb7856dfabbcf7302db34176fe9f65b9fdbaf99806effcbc76c23b71db1491ff60d63a8979f4c5ef752e75765a5d7c7f7e34e0fa7a1fa9813e83185db34f016e6c257a20598d56fbf27dc662e2e2fa10213883b1488374698a5c04c60a41a3aa7ce90bebf4d7ce961cee99206c7c0c80398d39dd23999871900e1903ba753df6690d7bf621f11b39dd2f9ef33091b6544c1d479d598bafe6382a89bdba71750404e269b13064c5e0d5306bcce054f03dd4b0b9d0d2f5ceb6503dcc6e2826c1a0b1b07344b431362b319b603195693dd805d2b601eb82a78e150e9573f402908a60cc631fdce10388d8b40c69023b8fd338c637ebf479f53d689556c7e97aa732e7bd9f9f3690e5755b19f525e735e13d4aeeb620cbba16ac52ad5e4fc6506b6631c52de98dfc5cb2d25d72d7fb9f5f4b377bdc150032dbfb08e7148d9d10b4a253ba5cd92a043b1fe5c13cea11bdbe7c7fdc5afd8c5752d66893b5dbc89ef6c13fd7affb825c625704ef61eddffd2ba06ba39dae34ed472c59da8a4c59dc825dec49db8e405832f910355514bdc91474a71475ee112772452bc895e300e99455c8a3b124bbc89bf6951e272a3b70f0c5d95ccefeeeeeeeeeef5f9035273e9e652fcc88bdcc8addce85284e8f8432fba9131fb456e51f047b5e262917d4e8559f13187e2c6bf9c8a1bbfb124ddf8f28a4b71a357b9f1e3cb2c188733c136f1a34b8937f1aff81337be449a5f38e4ceda74c8752f9a4399c482b09885a193aeddda49cdbbaefa7caf4fdf565a513f7366d7c7c7326c6e3d58f44e455d687edc32a069979380593732cb9f9fa373c7232c23e11481521d2eb8a6b87d390dc2c4a2c91626bcc01245bda22a6982942a5a32ac625aa42471015667dd820743742bbc0009548c3459e2329814414a0fa8cc1898922c9638228117d88c0f5864b1b4e582812d414202022603041553a2f810042cdb2a0653502141111e03c411132512067bc2063d28d2619e6a0f465392b0e89e2c31a507a0cbd6a01ea4e007253a98a203978a2939828a0a7cc8b0ab56ac053860620a56985c0e44114c9cc0882455fe40032b246812858aa0015861b9733ef065bcf0cfc09059a9626052a893c903d9fbf99ddb349b6157a5d365bf7c20e84bc8baaab24eb10b9caee9b04d932e06899d533aa78337cceb2eaf7e4117bf5bd3babc11277bcbf956d8d8d227ad170b1fb6cf8c0ffb272649f2c5ad8102efc4254bb67013b84917343e8c4bb81c146f5a093d642bca357439894855c44746ac231f8e4e78274704e2f2471f38b6807774c49bfe15704c4154819158e4328c11f00e0ece1737f08e0d1b415803bca3a3d3c51262886195133384cb1f017e00efd4348017c03bac78d3cf02421523278a584a5880cb0f03e77000f846e5420b2fcd1f0366c539dc7bd7c439db6b610371f9db09efc427f1a63f68490b782746f18173ecb30a2e7fa7a057c039dac72771272eb59ec49dd8e502a3cc20036740a4c8e5acc58a47b066631cca865ccd63f61c1872edf5d9e790da37e426893b71c993dc2e5a93264d64c9fa92c6c2d74668cca859c187c84f1bb197cff5d9ab46fbee3516c1ad7e2492b81d72162b7889083e376e1181e28d435e0cc52eedc303019766c1ef65d05c1986536dd818b4ea316660c850cd6a9ae521370e7ddc895dbe7d5871a77fecd7a8517da58a9198f5cfba47fabeedc0b22fd4de76712776c15433330e93429d4cae696ed25c03a5e9877ccb712776699f9fac81e24d7f17d1b42ab77da2123e0e60d611ccc529d707b7bf7f76708b00c59d780307e484b189d883db9ff58ffdecb336d33ecc1eb31f5f0bb3af8f0d85e0877c9fce8a334ad0dd2dbd0acb8c23f22ac66555b3f752b3eb921c5de8770c8cd9a996631c306c1377503b35742218ae6e8cebbb4e0ec1d678517ae7f52baf752d56cee72571c86f671b7fcf616e3df2ed4bbc986dfc19c7f5b28b19bff143447d22bf32d2a96ae0e8709191b60292285aaf3b83060b392f36d8c8ca4c8d6a1599b94ccbacb6d26c86cae1c26e4826c92c52e94918c3755a37f92c1c23ea100c51b376c0ac663f0243b7b2adf9a07bb9dc972a32f9a880e66aca243867e6680a293755744d3ede92bc3179845c0432fb98878b222d132e63734a2bf0d2175cdd7293d2351150779ffed91be35346abd492545094db4f74941aaa41292bb7eb266d8caf93f966ae74ab678e564047b73fdee09e740b06dc936ef5f714b99aabaa652acb711b7dd37b1be56baa9976e936c3d54274989cb55e5a0bd15d59948d0118cf4a880ba218dbd08f8d510f5c6c43290e5752795d5b4f57350cc338cd3f9a65d9cbd43e140a88a6599bd9ceafad9f699ee69f5452c9988eecf0eb29c920dbb619aedbbd35999a784b51bbb814111774d2be145125ea1c66d604c31412b7896e1619f3e4869c942e5c1429c3f1e0724457886e9360101de3a09e12af80267b591807fdfe1550d1edbc25559779f4bb8d7bd1f808467d451521301168bdb217980f695cfe9005164fd991f12133c14f44c153f09520a46a6ad88821e653469db3026a5615ce59196156cb4f5ee92c39dbe3c236fd323eef0934df1438de60fe95e0f6d7b832c2395c0c98d51f23b8c31328130c87d42143eef6b1942df946defa76568e43029efda8646c9ba85ae8d0cc0000000802a3160000200c080705a3c13c8e721424f50114800b608a5862663e92c762b11447511445410c83186308010420848c42083aa201ca4ee61b25fdc1ff2915b84ffbe5c371272d82ab9cdda15b40705842a72c097b85a01c8684c572f9c1a3d57452da939daae3c98ce15d0b8de19a473706032ef1ce66efbacb8e1590b25d8fce7fbfb94a6d0535e12c9c0638f64a85dd78c390823381a1e5b6cd31c2c6b24fdcf986be3e89e2320635dea3300ec2065242f2fdb5eb33ee9e2617bd6cf506a70a933728750882299b81e71a94a2232848e73379712978dc86efc214d8ca5424e48d4f1e62ea4e33efdc5d7c3def229396eb2d614d6f1171d06a87ab6481ca9d3bbf4552cb337e1c78eea115e9d51a119082e025780ae4e99c7aa63d068761f5413cf70d02db131dcefe68be244c70fdc45c66793cd789c0dfa58f399af808a00d63469ebb4bcbc456ac7e34262372a00b97bd6f27dd1e7a6891ca0939b282484417a1caa9d6f3b64689fd5ed803151ebc27f0250f41775ea69b85b19bf30f08117ddc732b79870c23bae55ff9df79d28d6c9e6aee2f47530bc5a3d96c25b924a8ffba7ddd9095aae6adef3635c1309a33ee9c8b08b52ff7ab8fa48549aadb98cdd6c7cae15ae0b6812dc38915f5f7135efe3431b4d60d5f1fb40c18104ee949f26de81554febe055e59e20280d06ae30864f423f1cfe0d95548e08cdbeb2e46ed1c76da2857ab81e813c4d3c15342509c027b7a39c413ba366827dbc70eb0db01f344588f6510b051075b06f20a29ef956a872fa2fa923eacaea17c01ed9320405584b285679055a157954ce9cca8caa85722a5f772026b16309357c0a60a307a0160c1ad6f12b843dae8a940d8a4c19ee0a0a02f6350ec373126663f28e9b3a468c87a9c02d61d0065d17cf38c647f8db6757c5a38d330b4c826caa0c2ed7fc26e408d1125355f8189593b9a74c50f23e41728aa333d8fa834d6cf50ad7f9144545d00db5992dc0c583bac7caff34b3242431424bfe982daf3d4c6911da2c814010cba5d1961a85600087bee47ce4d0d23757ca119a627bf232bbc7021608fb898ae78857beeebc1c3e71e1ebfb8e8c8bcf11768c1d08fbe8cf696ca7fa9cb7cee98277fc064fa4cb44a4f2a0577eadbd8eba04f062aac384209b9a7205a0ee99a8b13c13908622efbd1509568196296909f7cc99969869cee0f63f0835059bf80c51d12cf77c6fb3e84c766e5210fa20f537c6ef635fa07f71ec4f4814eb41d4a1186227ae3d83b68327b7bb3045898f2c1e62cd016bfce89196db9290e3dc055ee2d02f95fc512b2d0fcdfbd42bc28bf166448eb706325fb48a1460edb70c72b78b56340261a84013036a77773df90630a68b14afda933fa039d272da1d73ad90732baf0b1ff4448e6442c346c9374f786c2ba7c38a82a0ec80e8e7b71240c683c5793d9eaa8aeb770e8c89192492a182fb38b2c7792353c4b407901626b24d781a7361021f81fd44d8fa7151edb4c5c45323b88f42ab1a10e12790e769b1806f2633f9796c585e8136041882f6d8c173d333b5afee9cf6f58c61ead60da952c9915093a8270f42b0aac73a181d29ac01b3159b5216f1864979662c9959fd05d3e6a841215b5e6e8143532a5151006e7c3ed809f54a5ef20cc7b39cd09537fea233cd13d23955973276c500a128168c6022e946da62c034379f3267d09ce896c5c19f019cbb9dcf54e08342b4b9b83c7af8023d79ca3751d0a323d2e4632824392e41332f0e630341e96bfdc8948a61d7d758bc0c39d8994df89c1dc9d93d409f877135dae287d0064e297515de2930e5bfe5a423757eb0d7e190b6edad4fd2fc37fba0c37881ca38bf495d4026a5bcf3987b41770c86e0955c18b00f3cdf0998dd21bf726d816579d97cd77281b145a68961731965ade5908df20718f44f63c23d556a710e51a6d49a0ce3af19e81d66c4ebe8d449cb7d79280c7f47135f25152f55949d545ecdbe5f33ec9d384fb028d72ad5644d5f5410813737e8d0f274ebafd9960fd7c2a4141010996a4e8171aa35d12ccc82d49b39015fcfc4d45f20b08af2559f31da3774b82e984b76de6a492fb914c252f593efa4ad82d43a5d68d594ac511a3b6c4de224a6d31de852a89c7bfb0e05d829097be9e496b84b62b4efe5115debcbfc4779148cdfc0d852a59cf8d0875727d35251ad3b4a9049d3d55dd06ac80106305780975c9be8bf5b08253253d825003319f2f6a6118c7547d61689be2a65c1274b0cb6b43fa59534d41440d01377c4960c368f977db36203f045391fa276f2c822892ec5760a2b98db704f71154017489ff820a0ade10825a02ed53859bac1652cca980353d4a3cc5a0e9e0b1edc25561e8dc1618daad83b65639c7615b859c0a168ba8ab25f111ab7608e576b6cb0233248d5040a4c7558f52a413085672a608b282275841dccd2a344f40d8c8a960c9fc94e5aac6fb5d5751ec3f6fbbeb356abd2c08c4b023d0c455596cd339ebcbc24c2067066c6383d5a90fe312a419d7f6c3f0cbc20b3fb5c146278361d4cee1219c0e53b462fd6bf417e8e5a53eb1b046478a95e5549d8f55c57cd3a06b7bee9f4a08017b754bc441372b2d1f753487f38f69ab7ef2eda35a3e1dbd723018c66f476937934af9eab9ba7f978bc4c3c289365f496a3c5eb119916fe1a3eb9b702b99721d36816bfe42e86d4e6536641d8c62c1690ccdea787ad6b497702d3e6a83e185355eb482dab31344bf06dea177048c3a9185bdc83c398f214d99ceb271728898460c371daf76bf341ec505f98f4eacf4b98e35e9f4b0def2ee5c8225b5549d1173099148b30149c8d08f8bf249f9f0458763d28731bb68e3ad6f71be7ea47dedda01931780ba6d7a2eaaa72705be7cd318af5c8ba8440531c59a057d58cc6acae4da44c151ae5fed3bf7f090c46e5f38644b1d4d0a375612e5dd4a3fe6fd9af2dc3af56a379b1127825761dc0e430fee068d30033a62309740eebd9e6eae99413d58eca0a834281670404c81bd62d1e52f48a52355a076485eaeacffa858755ccf26d194046f26e7ed0f01f115deda3e89405aa3996ea69cab8ebb4cbf192c8051802bd3855a949ca509ddca7579daaa0162bcaf860aa336a59424752eaa3d716f5000fe5cdd56b9094900d68afabc0c3e161b50676c92b36268a72d78cb17de6685cf638703bbe6668a94bc384bb3cd37b77291a551f4dc7890d35e53c4cc4a29bcab1bc8693824268a9288d96c883326c2fc0fe489d846ff1623b6ae942f49b6e08a5cd353f3040bd7e3e00210bdc90a587ae48fb3f21b6db14e887f0a10318caa7931935ba9b7d547235bcdae503130665284de86b109ab13a7c828fd5e4c0131151885f708c1bc8354e4c5bc8cb3d24f86ef3e561f4d20505d02874b655c8472334ec52134745bccdb5e2403451987885acc6a6653cf1e4049ab9bc52ca67d6c046f524ced0a6e1605a94824e331589d149cf77dbf5a69cd0f611689cbcc48b74ead486d418321b60d28243837dd62c55c23c37d2c88ea74d858162d81727a6956db85c7bd05594e63e5a6102d3e849760e28d4fa2ba32be81653d0bcd0481a7f44737081724893aa2025325b02ec2855933ec6fb1b7cae3ffeab7229418e1eb845d355a05c46bec5ec91fe8af291ad7ba94e5f3ed10eb55002ac35df4df3073c23aad11f7216a882e8ccc9aa91e75adb89a039886e8cf4122a06b4d72c81661065a0b37409252021f1a4ad1b5970f3ed424430852fe4c122b02c88799dee11558575692c14952a19030a4b5334d3379a6e254c21a2a2105ce49f57effcdfadb70fa946b805b773e539d67ad5f876763f43db52de109724c4e151f3b10d1c6644a1833c2a902c0bb38e93db3e5b5b7c9c5c47f521aec4ce793eaaa7dba02664dbd2a609e1bbcac67dad0c2d104370dccb08583789365d156da91403abdd478bd6f62551fcbc69431bbf65a92558019eef823059821ca9ad7569a8840325d6afc8b5c8ca8419a1918e6ea719b585817a1bebdcba7f24ccaf8ae3c9d4596d24375e8254bce1da8209b87b8c888a28687d71dd61a202cd09b4e6994e5a4126a537c449f48bff1960c3003c08a88464e18e505cdf8de5f01eb52cfc6464a0a56e8f4f17efef2341f08c83e153001cb4ccecd2a1aeffb0889db87f420801dfcd4acdcc011a0fa006f35eee304b88e0136881ebbfb8a094047940d37f17517ef70bea808c8ba72ad5a44f67b01bb336db2503280cbf9136b1f1a403a37dc57934308618b9a7901a06d5ff295123eb029780b75d55ad0715a1147b4a7ca482fd3159de545936539d1dea5b0d9924ddb83008639dcfdef4580590014487f7f89309a9f88a1c08cfb34cea012760a140cbe67cb5a5d30742fed5a121f77eb3351604ef62c0d8ca7eb39fb2c03774f3bffc61ecd26b4bb6cbcc6188aadb31f19e7b42bc48501049289f3093d7b60441ebf283a91aff309f87f867716ddab1a35abbc0d34602235fed3ff1bb3494c3bde9b031d69948224d2660eb59277d5c89aab458640328c162b7d86dc29e7c99df330363fb46155f043a927c968711ee7922e57838170a37ab8f3b31bdb129ab31e1c58376f195d633369f22fea01df4087978205bc6f0fb1c3e0bdd413488b0d887305244fab151597cec9fbe7e8bbc95a6e0893f1a5be888850d85adba9c03a47a1ffc18493a5f8bb0ad46332ac688969be5c71a747f0365db41b23dca93ff50102326371363a7a55e4ee9226b9d806880b5a27b7bd0bf74864a0ad9fc8c4165e333e2621ac4ee0ffec4255c6c47261bdaeb0b902c858558a087c42580c0168825f6b68ea28db1ad574176a5fe126472657416e75790f24972f1fcfed1e385ed1b34e227e75ce94749b0ec188febae531d8281ea205fde012529d706459165eae128f8a9519195f63d2586842c5ce804d42cf6b5d76a09e7b4280101d371cb2ac29646844958790dd438d1a172fca52a71520234d6064cd238014e8a23f6374c3a897d047def4830ebba6992d8cea0f0949f31ccb6db4d62199753aa61c84d3b7b421ba641f8e20178bd025d2a6473e9eeb236cee2ee2fe69ec120a8c8c6aeaa418097602e3076896c662f251aea86fdd50ea8538aa8acce173548a924b00ee3f1bf2c9abdf0766e2e7797b5679e33b32cf916f156589d4c94917665294ca1b480dc79a49c63e3f9d38ff701a6150dece2f419752a6a7afd62e1c9125bd80c7a4a33456b2f0bf7019a056fbcdc422b4d1b5b3caf1273e6207a7bcd596a22031ed99df9d263b56409e953a1223723869f8352ce6747282ff7440b6879b0c72e47a0abacb58fe79a2aeaef7d370fd62cfc2118c37a1962ffc196174b21f2c575e4bf66acb3442058a7ec49e77a90440434d0f908124020f6268333a146a4bb5b30e81b93aa68cbfa5ad05974728978fb44866c19af3b718a39dc66d12dc0826f473d3e85c48722fbd67f97fe3c1d04692cc8ee63c3b8c9092171d563b45705845b97bd38ad258f5e68ad1078a052357b23029132e8f3029ad4c8e804a15ee4e40ccbd020a8419b1f2ef478882a875ffc3e5b47355103fd4abe1922856bca3c736b04e1e96d7bb7243273d7cd431b805ab16448140b8503d2f31373bc1b01f9b6466d5eaa8c368de23829c5aa73f691e3b78a951c84381aaff65d69dff9d8bb85d07e0ff02d468372a147998bd2af2d2d749d93285461a599c8d879a57c9221a064990e0021a24c4ac4950c4e7d913dd12d5c74b6bcbc367442691e5a508728781407c47f9fe58f90bf0b0a84c0e686b748bdadcd0968a78f1aa82a61fcabc3520b83146e5cff52e948cdac8ca1dfcfc83a981b003cdac767531668b1559f3d7780314b1bedf6990a132327d8395049faae45985dfa5fb5658dac712f62243fb9f29511182b4de61528da42729c6a284d6342d58830253c4eff985f661c67181c415206818e1edc84a84b44204866f1defbbc4b65893a5ead0b425324987eca025e86377bd01c1845cdecce9a253c0917a546c358391036edbb5dae3d6676490ec4e5d674983a2a5e16cb86a66585909d01f7954a2e914351acb40777298dd3a129e81b0cb0a9a2133ce25b79581a25bc10577ef3a070df5287744826d46a271c0ccdcfea1d422ed72434b4a2d78d24afed198d9f393cf6386f6fada7645754cf5e0fc06223b20d4e3311f4660f9f0d2feebb76fd9942270fe9e30cfaa41750bc8a22a9f0921ba18e4116d0f4c34d48733d47dc3d9c616c4426e64fdd33a750501d9435a606e62d6ac887a30f2ca2fd0bb3471b1e8d7d1b6d0796c49a4c9fc9e0a60e084c48043a260010d5d039b845d820d6a86c87ef6038de4afeb46f7ec5adfbfe2f15298abddc87f6fd8a728ee0b8ba6ccb0921ba2fe65d0e9ab3df0429f93bcf086891f81e974121b3dce43bd3946eb40113a29ddd32c5d6f6f138fb86c16c310642feeeda974727771487d0d1ba28268bc9831218ffae33b07a5995c472bae3515a398915b4bba0d07c79c63c1b47bc6a3a5e2333dc682e99430d5e7ad8910f45eb4b8dd4b9d73fe818c1b1c71fcb0469863f8cd5ebc9f37e3dabd4e42a94a6034b8623341c132f34287f9e7ce29972303850abc18d1b393fdb5cdaa88a4c5993fc480300fa62ed736b7149ad816affda510a6a944ad47a0e6f517bce438ede24cd102dd6fdf80bed8a39bd29ad2b7bf1f356a4305be1450676a13ffa9d94ae944cd8c433beed51517dd01eee0152b9e62925e06d1d10fb670522983d7c16566097c9167489c22bcbd49605cd0ac0c4623da21915c57425eff36e41299f76763e82f3d645e5afb3a2436f61e4abbbbacd2856531c4d1416234573f0f9abc99344be36358aa6d9ebe23dbd097a4ce85354557a78a8afbecb1a0a36187b97c5214d48bd0e62970112100c44df6c0c75856abff9405d4fc557040014a98856592dfad5eac4b9895bb125fd85245209461dcb846334f5dde55d54206dd51fcb24acfa99158ecc0ac15d7d9939da2de9ef12dcbc1ce2a0d70e652805860a7b4dc08a2e61212f1dea8ab400342029e72a47f5b0bb96acd4a3c237d5048dc1b2d5dc586b617b103dcf0f4876fbc20831f8eb9273ae990555650f4c57fb88d96c3c8cf4f92f2c517f278d9ee0b4c7a9641f300c7ab041e1f9d2e0473747a227f7334957881195de44613677373d65936f10b76b7408df0882f05173b3c401a9b9eb951b090891435f2286b7f8cedbac54e8697960c653e1c0295b3df6e81bd8b1558b190b962a001086cf8d14272d67e75a59229bdea1af70fee1317e5cff862f27208d9f08ccc0117f52f76b3d4bd22c39e8c141a053a0de5b3bb2cca08514299b15a689f74a61cc6af75bd06a0a4c0a9fd21f247be8a53119198106673f638a5f69e1d51b90be2aeb0c370015ffaab6ebb474321b60e77f0e87e4d1fdfc88e005762cf96113ce2911c1a77528487977bf8acfac693927d89e014cc921b552fcfe20d4310bb152b01709e74741e886e2aa1d74ad20c626181bc12f435c0dd6d489d9b29ae09e43c713e22c5d95f1292188cef18dd193f5ce4e32620db0c5d301e7432c9b6daf5ae7e813d0ef272e8f7352f37e18ff74cac2ab645445ad2a88afd02c47a30a546dea9590b86799bbc448140e00b3a25ffdf820a06ff1566ea8cb65e7342b7151d1f9d00bbc0a630fc70520ac349f4cb58920ec056a256906b410bad1d6a17fea421105c5936ef4231e1cc5a58701e6d8f3064cf3213dd3b842baaf33c981d475483689c5fefc578da66ed7948ed37978b577317a71433e6abbaaeb2516a1fdd4b26e9a25e7da9323de27cb8a59203aaa25780cb7f7cc00636718fd168edec98dfa235b0abdd0d0defc5514ceb1c24a93ba6e4062df7146d5645d430427479d1b9d88d623007fdca989e2cdf6edd05a8305eeed7e86d0b3a47bf446a15c0b33457b08940595a5a83596333dacdc44fcfcfe6732b9c14978f6bbc5a95ce5d09697dcc7ffd0e76f9943f3c91cbab640c1460d4b588386c6224157e966ee11366a85a4e4effd07cc155736a5fda8c538ae6a3325ce50515bfbe5cb00c3d32d18049112a02a103c5f099b599a25f5ec0ce04ab79870ad97752c75cccfa862babb42568c35e6083f72fc35c3b275fa7e76b53fbe11453b3437abf561ff5d7da9c8949d960975bd96ee992e78362b8b09d513423b1854ae90aede8c889459e731d48c182da4e50ba9b9748011a37df356fe85cb3511785e98ef5619af9cc32187102cae164027215414515898a820698b142b187c446880e6ed7856f140056811c2b72bcb0a4564df219e0385ae2d6afc81caac22614a5909221acb58d5ad591191fe459b7413fb9b6bb4cbfe2d66170a4631fdf1560fdcbba8c0964e610e845f05278756b68420d85e5772abcca03c6d8350ce23f1eb8dce1ae04a976054ceda4916f12b7f9acf055ff1a0432b483a1cff432df6727d1cae7633ad257f9c3fbb0cc28da9f7f8d5e293772d5ec02a9862ff12bba39e6b505546c1a0ba6c96239df859708878c001ffe071a36c659fe56e1524dd57641f30b9253033de8f056ca98bdcb911fd9808de2be4a605002bf4e7da400c1a15a55bdb113940e9e70039d77ed104dc0ce04a1a7567aaa84d2950220104b78b798a204e64cc9c43dcf71506cd4610cee0b6ae8009d38b9b65664b666ffad604778c44d35fd5faa02cc5d35181214e6bb11a30b8507316cc5a15658c064d0a60f302c42f1b1fd60d2407b390cf2f82b19e4ebfd01a22980d9bd30ba25980a8b25679d4bb0e4bd8c6cbe9c2014b0f1dcd2ba6a3b93909e6c7333f96d26475be671625d4fa4ca4db36f47926f4a2252b84700513a28527575059f086dc389d06245f5802213975df6c4e1c0cf263ffe2316780fe1f9c184235f124b8e852b260225c5354011c12833c9b7e1f4bd6427e2fd2b5fa2eed4caa87fc01faf42b0dce6f4c5b1c395a1ed55b6e020071d2e64022fb0e474e4a8af61fbf2548d0f3c92ae3741a6e2b8f6023d8c86dab6ffa93d202efe9f2a2464b2e46a023365d8dd4c4be967906104515bb5bb338b10e60ac1795e17e3f4a405fb54e44b5e88c7ca2b13b83ea2e89bb7fc831ad90c2a1fc2377ec6b084a8f268a59d9621bf6e8026c90a09fdc5589721a95207b85916dfc6c3f9e0ce7250f08eb8874e292e3a4adf39d88baf45472dbf427566d23a00ac211ada8c98926b971d3186c8b9a181e11ddb500decbfe43e637290bb5998bbe875ea235e10470e521fbd6aab67a01bd5306cd8ce82e1b010d02bc816e84f42154ec50d7e0ecf703497c2650a842c5eb0d956b842033c5dbe327cc3ad32c6c6a7c30535aeb5b216c6a919023a177815fc4c309b5ed32f687720ee3d4cbe31960154a1a5d680be9c7bd666e8987c1f2d1cebfbb08e8958f34db0069f59af273dfe01a8ba8443ef54382295335c3b57f80b1fc44e53997fcb002426ce1853da283c85ec26c2bdb8c65c586482032c85b4fe31e357c606afd5be85790d1404dc27814c106e76f09d72b3919b6ad32a19880b2d5a307eb35382bfcb5efbc050432cbab6ae57e395386f60f4133817c2dcbca75656ae7f418affb8f00b1650d29f2a0c01f915592b415c1911612fe1d7fa0fef13bad31305a910fdf6f601b5d19adfee4da7e3764d882bd8439d14d09487302b38485aaed006ba8d76fdfae10d77b63ea0e27af9e4f21a941000f702e9a0a61c7ce781454470ff0f6ae8ea2c278ab412c50f005cc63c69126cf1dd1315b957a6c08823aab5ef585dca5a215186d6392d1c818612264433f6f869942159a358310b5ced6674589c12d0bb913fb63b1f5727b0046052ad4e81e8dc4aca693b8147db359a5161eccc414971f9ae14276689a5c4fd79f3490fa6e9433ed8d9403a8f3422736ff7fa73d74ded7565e85c8ca90b7089b8d75d2aee013bca4665adb3e4543a90c7b3b563eb6377c84c2288ac8d15dda302869f22c05e2277c09f372ed77c7941dee0d43473cfeb00212c035c9daf700b2e2991af48fddde720d9b1ad87918fc3b83a65a3ed24d63109764c9b860e196a18002345ea0b434a612b3a2d2a86c0e0e96086dc0e5170e1d1c05eb555450c5c654728bf6dd17422156105fd474734030b0dfbf66763a9002b379b0728de54168f282d02a2f328ac8d724f23098a843b1d59ef45459088ba9f8c6e0d6723046e06596241080656808b465f144adfadc11c342758023443d677610fcea36221325c25f40d5e2fd42f1df8e4c861f7097cbcf3c23d50325cd37ed0a84deb571bad0d7a48b3ed668f89ee467b3df496b5b4e433d9636b6a9793f692e0045084e4bea4401bbb750ede1b7c2ff2bcde246e2ff7bb9109f30a85c8c7cb83d6e7efd82b014d1efd1385529922b458ae02cccf215d969b01aff692b4432962169969f8f4faa999c0386b372adf2373bddf057ac6e0267c66bb59526af6a27128e9d053921027921b2ed64e6bf009fe29ce10081cae4eec367d04e23d0c1aac7945c3db646a500a3cf2ff25ad038931de4736cc842c040c08cce14e7c1b1aeca302153fc405acdf67e5d91b35c12ec748e01b38e1f19ec62ae30baf60d6c63b0e36fd682d1f1b109b8b6ddfd1d869909578f0f0ebc34249fc7020b673af66df77efb9ccbb56c4aeb354b6c30ee306d571b2d0dcdfef67b7a09e2855394bbe44c0478900acee73ec88f3aadcfa3c9fc74dec605cd78850244413666fdd8c23d08f87490d0c34a7ef97190e08f14e7f4eb3609117d1cf5be8ec145003c83e9aa50e2b2b0d3ef4c7a1f8ac3087e42bb89653c5242259a09a70574667a76a53435646ebb417965ab665dcdf50cd75c9a378bbd90e5c1438aeecd99cfdfeaa8513b2ddd2670b54dd9f4dae90d63e30202209c270da56e86e43811b1bcc37d7ef56e37a974ea0114961e8e25fc575da5784d08fe89403f2aeb0c1fdb35dca7a858017ee2a94f0b67612407e2ff3c96aac83965845df6eeb4d3bd381a3dc863943f44ca5d58f8fc574f2ee870051317e2f195d4bec86f07d9cc2a6a7b525fe4e6ba3ee96c3e29c942e4734c1d689fe58429af2c098772da93dc72c0d695aa22dfe7526fc49db4dcb35f151e70059911a2048f0aa88e72a70d8178af39814b9de82c66b4768b35e8968715fa0c35722549cd700feadd525ec9e921fce26d7e49c5babcf95fbd378a3fe5817259b3ada40980addd000528a52e3a62415e879fe2c431d6afd1232e62302616b2aa7146fde5ad096806992649da6a84494d651f3b28612c600969e344bda9143a8a43024dc6680ea650149b8ad965f8166c20d28a38bdfb1923ea241a21556a4bef12c542b5953185310157b2de4ab42e36e1cd40fce524677f576a97a0f8ab050ebcacafbe9bbb06f344e296609473abe0eaba5cd8fdedd7a8cbb72700e39e3d59a6b7c42fa9b8d7331b70c6c8b23556fcf1141f8551792acc10bd0216cac3baa3401620bfb2dc1001b919f0a08493c898345303931860ef39e2aa45b37af0c4534c0c11d997045f98ebbcdab65658ca69a8cd1b53d052619dece444467a11fb152377b8ae0bf0b509798e9d44b1ac829bc581f63fd638051c0d1071926d08ed2315c0335748286fe8e8080239ccf6bad1f91a9ef6944e1e8c14f5280869ae37d0d3e3663d050259a98f1f45d84b70ca5eb5443d7fc32017b15ecf6ac10e7809443382b91e2b6d3a56548dc7f1bc36589dd61772ece6c15d27393973a82917da28d3cea089916c7aad0bc56d9f615a2f2370c4559489a2345e7ac9649c009f32c5c8b761293e3d80694b445c47c6c3cb1fb4b23e6ab53c32230d924ff9424716740205221a2877dedb80ac2374e9e9093d7485f1d89fd0bb5621ae3597e978b44d1d4dd0fa2474177dc880c53d042328c1980361bc3f08a4304816e28d827f7b6df1b22111db26e311aebf1a763ea44b2885b6d9f0fdb8b457390b376ae23608604678de5cb982dae666a0f4cb19afeb18223056d4a2f5aa325c2096f869c02067411bef8d9c7475661d6bb2b853abc9f8514fafdb94fd3c6214a54c809a5140950827e57ec73ae8155232cba6769ca7d6fd11b61014894bc7d7a072a727373b04dc4a13b6ed60887d2dd928e8ea669c25c15d324e9122eb61d73754767ae41b7051fe148011702fa6c1e3acb20fd86a4336ca2cc87d806cdb689e6e4d087960ac12ec3290029635af8d12f2bdc65c9d1d1a4c6089d63f995e00f98adf3303075e87f3052f263884fe0efc6a992c1fe49d4de687805dda28c050206e79cf837f4880aea761c741bfafb533eee1fbecff9cef7fee3ffbef3fd7cf2c50c55b4c91336133e32d2dd9e425dfe092a34595ca349759c60736e5fb06d0e788560c0d6dde3fce1f9dfe77deffbfef39ffffb8eeffdb7fd67809f300707e787c49f8cb215a37df56991f84f40b56988c4dbffcbbb823a409b0e4dc684d167bf5fd1598f25608ec3d4420fa909886b954ab12ff0702764276c4206b6f441972d098d22dc402e898d978b50b6711f1268223bca0e7c6e95f82cf3dbfa17d0537f144355c0134b517004179716939dfdf5f93653e4c878f605894aee0c9a4665f821f5953af00da968944845c2a973d17729ac0d3b091ad5f6479e040a0274b0e5eebc87adbb34f52917234b3718b11354255175d42228154b44525285748e58897c258dad25de9f96189e540e239c2eeb8c24a242ad193e83baa81fc4aba88b7726ef2341ea27cca5e9a20c7e88598887da27df0db592603ecad7b7533a9dd45bb1b873bcbe017d13d4fbd5d0be9d07285ae60e492eda62da660da9ff570d8567d5a0ad196a6f4d0c2af07163a07f9c55e4ea10fa31743e89d9092964229a475d0212d82b5e45d7829a056e1622ce17b90b6795c31a06bff764408afe388415bc2170f6b99d8d4024b7e722971eea42bab879624071e967250a3b06542608bf6e20f3a8e6cb408f9f0064067844e065c61b174329250ad12c736ab381363f27a65940a8810854edbb54f126e56a3cfedb7e3226c1d16e57439b22b729bd930657760395366f31f9363b86cd39c8a2e412482bd0c2392256d02cd0ce7e14b3ac04e9f76967a93e808cdc35ef4f513a410073dca1863f9bf8a5b747b3caa10e1babf5f3d6d61587d34c84433c53d99b49f9f17294bd8b5550340c17dd323cea6931f8268fe5a20693605202d4b4dd0e919f4e818607568e1d73dfe9e5519ef5c166818449862489333e860a96c1a6458ab611db580989be30542c71c68fe39efae7e5ade6a797a5d34e4c02009c2354125fabdd6cf746b66614b80540d9b750f433d5d571128cf919944764381421385c9f37ac10ba187052e8d731897e009029cdcde392d99dfdf27216b57cec0aa18b1bba1e7d647ac42907e0a5b074e48d3347e67b04ca7e5c0ef59786522f0ea0e0ade14de76eb6c03ed47698a508add8a9a724fbdc5a47571707c42f8cdd8c7e2ab11fc8767a057c250b883e8fd88bbdcc0120fe9e1da0ab4b6bac46f675012451217d1ec2a0e6a53fb2d49a9e7a843adafc5d16711afcb42e951ec3f0549014de9832f2df49ba099bc41a70f58d60c987043d4120c8ae70156beb82686f4137fceea1919b875f521c4ea739f4ab25182fdb9af48f2e0a838fc86a893b2e893cfbd7a9df9f136cfe39af941fb56460655420c11061971d70043e73fe22a615c5c69f0f4cdd9d9e21efbe042dbc802b66907e5023c2f45ab681e1c7c81592250f50350782bfe18c58c6156162630facd9bd5018260efe1dc103e727435803188f671761c74ea1c937c19a10c47de745ea1848f66a088f1459d69809a00cbf9d510d2e2830b4296446676c4c476c54415c07738bbaca2a1667f5c1094d5cacd56626fb0bc9799c89642ba0396053fbe19d1ed7c9154d39c86e6b1c791319247708b2bd2561f22a287584440528fcbde107f9453a94da079321ccc222222cd67c6c343d2bf4b27606608533f140ce0230cd0ad20fdd1ff1b45af521db3f0cda3f87bcf838944190c5e79374dba901f01e185d5ee44359302c7a599d7e50fe3a6f30fd141b81b28d7d6b14bbb0116d40699a8d828f5c3c3a5cd304919a5db888e079440a947a76ff33246f1aa087c0365934effce3c51198863576f4f1fb424a6ff3e9c8cfa8d3d45e70e26dbf1b7c943d493dc332ae2740f7cceecde3d86c514ab71c29c5d7d2d4a67b64fc9fa43c11b6f771c96d2016f7c12a60761c0ea8de2e92a79ad394d59af997c61d358e7c6e013d5527dc467178c2e8c785f529a4b7e980dcdcfdf675e4a018d9e011dd138fdfd2831208338e735af072b1b437d454ead230c491517e4d70183b05991083b9fd34ccdc3cecd9a0261074065df19496a969993577bc5e96fe3b8c400574ec561d5c2838ff7d4eba140989e2e0b3da8be027af978ce6e115953a62c175dcf8d1fde6067ed3db74cd7d48f51018dc720f2c3d07d2c2a92a281639553c4ff5dc5dd1b90379ebf4b62b6beb890bde21e83bf50201464f1754c84ef586e3f754849f96a409b659e3fe01c428893047742ba59ac507f9e2f9e20b7760dfe3b402175c5659add14087d7f02a6c25053daae1175516bf326b8f8f1ea1e56958ca01d30aaa0e8f91305bbfdc755c72336ebbc79e8099a2230a580c0ad0819326b8994154b4f28695f87533e3be436f0a698651a1fcc4ed9634cfcf4d72b8b7d65b60ef05f0d15a09a92e9e9ce4358a67d69337b82b5443c5ed580f5e611868324721294b0983234c4c05d52fd1082b05c6051efb2abde368df9e4108bafddb0d9611c641511882b50a256829f8122fbe4eab5b32e4ea8f6e43fcb75ad418d00ca1c375ef1e23a65700f9769e1c7717d187ef8a83640f25b229a8ac782db495b32dca810d446167d832650d34f710a751b29559cc36a3ccbb45c3f2f77c014282b1a2b84cc1d5ad0117757da04d403265af10184ad1b8fbc98d7a8a678090f7360014e78ce30122d60ab582d190ebc58f70c73656d204649ed603576e9b50b32774118a5f3890e346d6f492d5b0e5c4543e252f71846ad3169aea7f2805755bede7729ce8f4a8ef1c69f1e4d5df69ecbde6a7ce061908177bbd145320047b6e06409b48c81aa8ebe5935609c21691a69d89083547e61b0d8af441d249e22c43545e971613b440014153720b1ebaf004e16d13abd8d9b4610433bee9e3229ac35c8e92bce13cc7976541312d4ee8d1eede17cbac5cb217828852c4d0c5067e3715b309ba1a6717e011c195d069179c79cc49411fcfe5f5373ff43fe09e218b0481fa77f3e495e37385ae7ec4e4fc18ca591c8352d0211f08d7c5a5edb076b9a855d241be961c969080ebd5acffccfd3783fec515e7179be746518d56db010a1bcecf99aebb7763582796206d92d6930f582758af0c0f0fe5e9222d3f34a141caa081c87a23a97233c78d28c462287ec671870596d84d2c20a0146023145d94cc69c15128a72f5945cece428f35af775dae9cfb6b0ac2e4417286726582a757dcbd571358e0fa67b0cfd8ff49ae4cf916e7d65e1a2cc0924759f828f96638907730e1061dd86180a3f5de178be8b1fe25823baa48f6c9ddde511d37b8b9c46782848ce6ccdb2399e7ce3ed923496bba0aa7b031361cf0b841f0ec08a54eb053f6bfd862808eb24bb2e5e6f6a5ba27449424b3e122b9b2649b09716fa6d1d0d66f00bd04f40b40c5c40db80423a21923331590d2f6aa203461761e049472c58ec95b756d031fd6be4b8ebca01ebb7e4b8388c930188e51437423242a699a357c46916d31797eb153f62dff9e45a0a7e51ce4240647d5bbbb4db2ad3fdb318fda062bfee35afce464efe1e79ce35e02ea271916f2269bd66d431e6af5ebe093c1d2a4de46749886f69de6c814449dfc2e6ca59b05c8f8e856494aacb6f61774a214e1e2bf2173f80b26d1a895fbefd108e0e2a4b4313769d844c98288bf687a976290e4312ab7db2ac005a8c515fb6589d0296dcdbb129b46eb18e18e13f34a5b610b72ff53d03bcd3c2ec272fcadf4793796ee8a1e0196f08ab31aa68b3d0bc9dd71fee9f40df6fe6d099e0841fd28671e723c7bdb1911ccc26d6197c4ae2c703e2bf417d5a0f568343d46636534e0b2974a7cddccd816dcf0b65420dc3824b5ca2a946f8611575a2b4d7a056500c34db966f27106e111b9a6c1cc3ef61af863a179c8cb2622755664d503774e1359bdbe1e13a3980311ae355378253ec99b8d7aa96d5fbc4d4327c94cb6903502c463f49e23c9eddae5eff8d9d5e46ff44d82cd6ed9dceb7edc06410e4d27f3f125120a45f69a70ba661e9e7b2766037cc0bf2aaf76dc075d1a54856ae2300b2d52fef3402798feab98d7cd2f562b3dbb54c641240587c43fa9ab3221e91fde81107deead8995042a23e29d4221c014f04fb5f0852604d0b489707defd046632fa3446ac4c147837e69c3c5792447a998bd6495d5dbfc364a8d76e0f7a9aacc1d6187e0fdfb9a9a99740661098724f7e52be75f3ebafcde444faf9aa8c326149cd515921f5eb09b404e6e35fa0fbae01324a3a4036862faa94ffa38f2fda198dab9fc68de6e46857434d916ebe0d0fdba0057589951c6df742ba1b206468fd86276f1402f0d46230ced404cd6519238af2685da32328096d7726ac193b4ac847846365416ebe435b53416a0e886b637052e6e81fb021530c2b93aa0872971e91883aadaf94b75d77dd2f4667c4c781565d91cd627e4aba818c12fbd16d447f01d069f1425e0ad6689f088a6f30fe0047bec1be3a50869b61f23d5ca401021e9feebfb204ff8e407f37e4a901450d8f5135f3391772840b37c9e5b89dd13a1ae56c16178c8c08a3726e3cdca94b589ec91c731f6d5b91b4e1c2e3404d7b4cfbafa0046bba8790cc0ca451fd75b770f02410f3dd5f1ad5ee8f3bd139bce270124dc543690b5345a1844e52d2cfb813b173ec859549ce5a0978e6191324ff85236d9c92314979d112d55d4fbc2e7a4029dd40614d8c7d25431f8ac82c46a99841c0c8cd868b32e9b5d366848edc6f54fc025b35bd6af1e2ab4b34d4e940b68c6a3ba18e9955f15505a4cff79098c49bdcd1a023127dac736e4903fd962cc5080daf8b300d5fb0139e69a8c98b0099b8ffe115f9c8212f21c024299335b099c07e56edd5fa9859df726a9dcebe2be1b5f97e50d4bc7052c5bf58eb8ccca4b363bc34cc91067e5ed91dfbd9b613f82fe63eba2bafc30611827afe94e048ea29de06a39da441b9a4a9bf82becd3ce91ae19d3ad3e750b3ad2331f2d9d50251eb2b4a176ed632549b0249fe8d63b24f66c67c49c0a8a7f0a3a733d2cfbb13b9167dfae859cbcd7beb8609c8621fbfb9cd95c65f4f69c3931b60ebb7c883d675e2738e2e284a8fa508bc30daf339c143bc1bc82b2f95c61d8785c8177e96f854a94294f55dd0a78742af086ad882d6fe4f2d2946a33ac6790007609b35e7d2b88023580dd4d7f5e865b0af98bc1e701242f7ebaf71b4b297c479f8662c58a02c8e5ef5b15051b1c1f9ba0d5fcb74d6d81c3ee878d427b2b5cc18068da4208b04cd535c565ff7cf1788e88513c00b5e20de3a4af02d93e6032041a40fc10900aa601a5b0ad75e1c2d2539d626e84ff223659b3b1135bde1179ac0d307c11d598a143500fd32a09364af559fc762f49882e6629a7a3eec3b587936b5a57e9de31d2b59b48754281d2343b272814bd766e2e4bd254a6255568229e4730204b451abe967f7319eed1b19b91dab7d0c51e188f70481fdc7bc16f36077d392cfe53eecef64fc9d6e4699c1c7c1d9bd9f5656b34039992b9c739186b78a0a1c386a1f0be2d263fc8d18f822470f957d361ccd6c4b4f393393e248095f91b71fbca64ef0c95e3e61c2500fc25f675fa4bad66d9eb6c5e28e794d7136e8fc2ee53ed37bfc933ca50d3440f237db7dd0e6c44b1134cc6ce59ded23ab9a665b50298700c93b8b8ba2d856b1915fd92c5fc5ce0b8128b864a1c18c8fac8cf3079852287aeec1a263d45cd50dbacd21743fc0cfd3580a38274b3c5583532fdc7048fc58d5e2c3b1032db77278f00d43090a82ac064c5362f4596a2f76982f2a0027936a79e63ff3b4360eca3e666af5ea0c3ce2c34a23f0b59f812c0cc1d0488d12c23f44c2ef4286d6ebace5b5854d8069256391c7953abde303f51cdaa04f837685b36c20deb92fc16ce6c8c78b6ca63ac9fca4cd803d4ad2d40136868a8905ca58cf693ad8e374dd337358822052db85108eeb72b12fce36dbfea75bfb5f02907d19d12628a6e26d07f722e96ae46deccf50892e195eb09ad95c81ed42416c401f2575b361ce80de5c8999f02a748498023e8c9c7700fe131deb54b17d1b91c0713395edcc90788cadd8e19998e1586e62bc810428c48c0cdb4e71669564eb89e563a5be889b87273e78eba9c1b697d32e72d7598548b6fdce915963f5feeb1e06643ab8c9ea5b8b8941b130169d770ebfa7efd9e17539af52dd28de6d889c0941d1e1fdd365c467c6739d8aeca886d1870b0d423ae08b497deb80b343b132c47968201b188bdd76838cba32b1dbb266ced0b829b01e7f2ba6d6802d452cfc20476e18eb45b6af0dddb01b36a86eaf968099d6510b1b76704763d884c354925bb0b42bcc10f18a123dbb80c46d2b34cca7691f5a6c8704d2f2c0a14575420f6d412ea846200f5b6516fde3a0d012ec75170d88c3aa40418885d0661013915e8355fb9fa3e4368fbba2dc0d662f7637fbdb659fa36050c91f1dd04e1c38f97eaa5255e8db0df1b3bf9666c13161dd4ee12e1fee77a755d0df77e3664f493dec4bf6a1c3513959adef1be894635a02d827367fe219b40777660cc5e4fbf51e263c59d9b5e72a3fd448cc1d3f6d2954aebf6d3c6b2170dfa829075cc1e22c0aaa37a378e7f0f9d6c3490cad60f14dcece5bf70972ddc92a9c0bb70fda30d3bd111f4d665696ef659aa7ad93f4b423d7ba3bfe30affb7082def19b3b4bdfdbf35df565a2e738a63961fa998f69d15ed6d6ea33daf04da4f9da0b417b6c287dad3cf8ce836af4e48c12c8329fe54836b0c439a327c136c78e567f28f2bb21092d814314e8fcf68441241db59f9678bf7730f47ad0148423e914caf16c21e84f05e182db71fd33b2e7f05b14b8bbe82463786dd4f57db34e5e8f3e869d0a79aa6c288892d189aa6026b628b67a6fe9733c310c7b0c934553694413011294897a1a5075efa99c7a2430ad863d5df4247009604d28afa819937fef121d4dcc7bca377e206ee3e30e7af4e58ccdc0273b5fdd618f560410c47d5042c088a099a5f12962b4f38c1a42bc5bec2ffff7bc05e0028af878580412034bd8b18714da314ebadbafce18a62ae15df43a0f4032e8dc3df3e8b5f6618e317467ddbb094685f3d50862eea23cff8d2d0d365a65fbf60de5bc2f25988137ada2705d69de60a52c1737dfda3bb170234cc180e6b908177dc96e2af0fe27be280430677bfb6e6032a607be0374b6c387afce2fa0d48ef057cdbef92778e80515fc04080c71bcc24ce883ef181608326bfdcd5da564f61ab809d3c61d96c28ec83a684119788f42999181b3c263474495414d9131bdc35829a6bab27df274656434d228ade40137acc3a3a2c144dee60ec518026f8dd7fcb9b947223d23d32c679285dcda4f90819baf0395f9a6a70b08393a794efd048c71670d02267403b142541e8b75b69d2b8d4e57abffe12c3ee9134a92067c2c00c53d513b38db9b5504a07ecb4d298ca07988a4a271e7704b3be4c5a4bbe6b78c72d4db42c6211ec191990ecc72d9134c64b9214f8c66272fcb3e9832627a46524e278c5e903d61456a09ce3f4014e6b908afa4004b822461b140bcc7121d4187aea2cb94ca3baa8de64aecdd1cfdad80936d279c58551b939a422d6004422d4823db6ae11b6da3561ab2c4488c98e693dd7833a23d7f9f8bb161da0c1eff715cf49f8f2549ecbdbcb4e6c99f2d8866dd53969cf9c305ad20fe261ab4b14e15c63922d2804a652639a32c5e223cb10bf021a4c93b36b6f7c42257ee60f48a69a3f98d35ee80ab933d2f0f36cda81107ee257180ce80f5a20a145353434e74dfbbdd9d822c3123a2e83af13e5373f10eb2c5bb8beecae0d4c5081b32a6a2514c4881e5c744a6ba362386e33d60405272368000c7707a3b917e20820885e4b0061e1e3f2da9100c2a2bf71f71a2a0644b7a4a8ebb697d871f0b1a513a658dbfe4042d47e043e7611b29ccccdde860348c442092119bc56f0cfcb5a7540289f2dfafcc6e734e2a349c347cc7759d020f2c8a74d98a25ff5d0abeeecf96ea07a2ccf2e875084827da4db6ff611759f31a5acbd4041807d5f00028f246e94340f85574097af72a98405ea0eb3266b8d76129cfb232e991653a427fb10e9bce3f2bb55493f021b1281de47dd658ae00a355c09d806b786401c0bcde9500cd2ca7e30bceac600275737bb38e49998bcff00398fae99d90e88ff3de02e07872d24ec3a1c5a91bdf1d61733f18ab49e423b9f598cc2408a42085c21684dea961038f82ba760a060d6f15f59f719f21927bfb10c25e7cdf5c67c078791abe6dfc208615e0b17b033113fb52c39f3538b84d00de2abab3d7b60604a42b0191fefa298d09210425ddbefbb101bb62f447f5f7329106971b3fa875153174e60f4fc5a0353b6b770a0b7ff25ab6a87a0c0ccba178399ddef59c1cc90b56e775bd03a7ce4c2cc2f8fee7d7110a94d3dd3f7c379241da0d09b14c9cda839f52f16b4496782b072997195dd5615887cec34e709beb9c22f10e538bf5aa59f35bac64f88cf7de6fd84a6f38ad3e17c00c668310b0a544d6de4fa4a883d6f787e7b6385b223ab0760c6d4725305d1796967d3eb1519a734162ec2ec97653905a4acade8229a6b31df1afcebd4edf015223a4295308576b902d34a3ea147cf60ccdb91014b92e18b55e78cb591cf827a725635b688d8f71daa780cffb44de864d208a616125f7bd876d2132a7a6831032ae7cff788c047db404972e7666d9dafdd93256394ff6da826487880448fe4be65315293c71b2fa282cf06de4d8ac2e574bf31646e857278fe11c12ef602a5bd5427ca1fe38e59d717dce3e484914b228c4990616a6e36d0b0a9d6d46d91e98ba8e7d360571ca35f824d1ea758b5770d4deffc663d8730f7f52545cd4204fb70f2baeac48d32304edc9e5db598fbfa892d08485fb87448e6999c3b99019830a83b30769c8099e39c6191437cb58df564e36ffb2c6479d92927320d03c0a4fa0a80f4fb4b70ae64f3dffdab1bcced38a37535c1a3e9ff6ac05104f296e10399f89bdb15e36406566bebd0837c1af7703d8808dc0ef3ad219b9d25948c40ea61a1834ef5f8c6067d31723a6fd83b90482c0467407257d5c8521a377add94ce25a25282d7d947085b50f0ab79014df99dffde637bd25df72c397af5e5b97dafeb46ddf9a4786cca103ccb585b397c69606aa7e204807ea3f00f8ce8a63b932ef10acf6b53f3343f16f9f31d1ee0c8c94044392f1e8636f471c99bdc85cb044ff67a69b71279cd85d80df2ce62901f1abd0d088dc1245f96990e591c4aac229ca16dce0aaec75a175a85f40501d43ec3eeee85310db889dcc89a6cb8fa43b2b5f42d7236f99e9108585194c00a34c0fb4c8ca2395e0a8c1bd6022d09e8605d3ce6389a0932955f722759679f4b263ba1ba3cde0a88738e2a1b51c74062ee7d4ad99b7d85059bae38a093dea61ee6864c1039b7278dd37d2668f7e542ea7bad0e53b8a4f7926cf2ad604e1e8231b45f5bb3e9b4099d64166056822d7accab8b7b188598e07a62d620218cb2a71b116b9147797f4302885a3e1574455815b84ad80f0325c11e4306c67bd34d5bed015e3e95577b32ef21760ec0e035b4ad16bfb5980bb3327dc374713a800111aeb4c4d78aef7da5416d2a4a12b13ffa3bc15da7d4406399b85706e83562f17425ce89cc0ef7aab7d4b48837b509d6904a0ebca2fbd4b4983f17f258b1685da3ca70d7f60d87e212875e801bbbf45e609d121045e399d397f8589853a381f9aa18b625b394e37566d0d2351400155a89c7e6a0306ea2fa20e36dc7832bf54b5dc03a77b4fcba7f345ae39328ecc029878025afd62f3c8c1434651a7f32afae547eaca69a2a08445d69bb747eb92f0cb6c9a84b13a12f3b2b785b6ed5b3106664732c897a252735af9fec3e8af84146c13691c003e22159e80e78930a15f0b5ecf10555af5a1054da19221af112584ca435d9cb79801c1b0b1fe42ab5189b9b86948e93fe77d1464d43d0ecdb525b6b328822276a55324ac0276cee332a6092e35d599cddd8c45e9b36845bfb7ce55c62c94e9fd49baac6fbfbff7f124be02202b7307c55aad2707e660b959ecc1ecb46dc98b8d02adb309956c1b5fa48efd34caf2672f51df8405d0cb04c50b195b92add5b53858677d3e49e71bbaf3428cc2985d2e2f9f2adb6f119edd3a0b8cdbceb2b5d6d36780f6c0cc793d382904736af214c162b3d529b699c306318ad8ded88961a756a22ff848e4683f37f550ad4a7d45119a0158b4d673fa019d45d76086f0a48b8a57da6daf31f2b2cbb1a24d541e772e31602904349028a00360fd724e78d8407f74cdf81b451501184590c9848c2a129034932c176442780fece248cde27c17485e9f40c83bc7b098e039601a462c4ca409db6f374b85409d5a665c82881c7726d49fc22f3ecaa29c3445711bccfb87141457c41aa29e500e11d498eb254e4be666fafc4b5166ba6f72d1cec98576701cfa1f87f7e26da20e6522fd6b0b68bdbbd24a420182281b5d6aab8921d48d1cbb1da38e7db1e39df4bc6ec4bb46d1ff2bef94eb8127f3803576a25f2439a70453ef968e065e8e4437c845f67d826b7cd5431f2c18bab0f2809ee71cce63ff71337fd44ebf3952abe1a0d6af558f3aedf58495a8cda0a35a67e51eb40302819749229234bfa893a9093f83e895320e107fa3fcb2105b99bd27057d2fc2e20de2771261fa3a0429104451c2a86c82a7591ab32a5f4569c0574748ea256c002e9639a534e6b6f013a0a278f75fae48a004ac47776e6875825f3a661b5f5e8510cf14eebc2c79e153ae689667c5d84020f86039209de5d83c531ffc8d0582ba2064107cc81342b2ad79931c996acd9ef2ff507566562946ff1e0e2e4478378b27339af08280d382c6b8a3d3cdaa4ae94e7a1ae913ce1e9fca5deb4e1ef88846ccb9136e7a1bb39b9e321d966a925fff7b897aaa505f9036c6a3734ce546c04a16f58ee3a4004b0aa711f9a5be8219a88eeb8074801f1e8de6585324d7e0e4044a988918b8ddc5eabaad7ffa7615c5c2be77607b0f24fae784b4c4851e00c9a8c3583dd8eeb4f607d52ada056ab55af6698a7794307c00ff17759a5302b136183688fbe48cf05c4318e5eb0383ea31b5c6edc74a81ca846e54937c4f0740e2d3bc98fb570324a63c1da638d80fcfff176940d7d2c86a1b2f28ca5deb925ee765b8f52f3b45879a509f6b0422a63b57e8bb6c180cad7d88844fafa6cb496f3ceba306857fb0121fe0afcda9127e0cab0ad193d1ba7ac160b66818dcde5992cc73dbe63c61e188335fc9fc2dd3585e492acd607ef118a4348b82dd03031e4b260488ca64ac3a4e945e5f7aa58bbab0495a4927032901788a051d971a10f89aef5f816a14a61d603fee1075a5231e94059ae8f890f8e67c30f75b74df4d3e44f0b71182ea5a23cc8e977290db23f6139bd7181b403aeb475f218b16c76652a87d56e0864767df0748c9cfa4e642b1f7d55b9f29800a96661a43c46fc2825e72874aebcb97d178c2b8e762f67229ccb05c8ec39d1771091620692997cfcb65345446eeb53e35705f4af9ac19cb4b290597824e868d11bcc12dc697f39b77d06edaa234962cca400dd61c66ccb76d82f993b22845fc9e2eb0b8c8f73528d8a4cc0557c83982624d4a077a348dafe609c4d7e0f269d1e416b871b84a8401607c0cc8713483aaa00a1b989ad95fd27670a3a5fff754619083fa4d6d545dd618b820b35078ac49ab65d2d6a6e1cc5c62c05b75f6fd33de8ef37515ac590107cadec24f46a874d64b871be9e3b385f2829080192245ae3ed88e6224b7b028ad219d4b899aa770eec11465b555ffac85a69260f590a1d6ad264200ec362c638b9a64eec6144ba9746fb0f4d930de621f81f9204592cbf7353acd60bbed03e28ddab390ee998119367e89fa518d6e55040ef78b033b0ce6b53f8dbb94f3aed2f018053870ed2e16b9a4937d98cf0ac6a0a1dfac69805e2be6817beab632f217830c968858c8613baadd7c53391bcee6b9fd84485f6319440d264d5df15fb381b1b51b8e2236d1b2a8b846d0267928bde7446de12dc0839f019bf221ebdf62bf3bbd5ff8292dea080c3dd51f71849cef7e1e0862bbe91d8c2f70e938f0c51b71f384b1f6afc3f42ddcf6bdfd711ea62b944168b8fab9f67b219152a766fb47d2c1463baaaef825c04048d28f7a9988933fc72cc80d4677dc36580831f394a42d791506416cb7de22721b25c20074ca4a147e839f0fd1204cd5719d171c7f2789852f47aa6996b43a61c42d3f3b426f27e77428760ea9081b42f2c95d102e58c7fb2ccf288269e314e6847afac5ecd557deaa6634a56c02753cee23014747966f000227ddf6866c75b0a0afa02639df3afc85c011411097f7f0dd077b305992349336865fbbb925e608125a47dc54f54189b4437f7a2300a3f85046bd160a4f5f7bae13b4a7c8a0cd5ae2df9efc2d5a21700c1ab33331843b4dd741f414236ab8dda496bf32081a73e3a9373f2275881dc90d7120c57b34fc80f977008a4227af179722308f7268967c9cd7e606e18da0e33aac02ed40b69ad372e42dbbf82b033ed308b063ec0c8cdd723177055c1ae62f9f449824e372736d7e6e40dcacc43364b4c2031cc236952ab927ec81ba90fe1be54a78466f9f526ffc3960834f1016a89f5515d400abb4a07cd574ea3d88dac49a7bec1462c069d8f300086594aaad59847bc6f1e2fdded8fa5c99651f85859b7f6ea2dcdfe19f267e89c48978ce298f2dc0b20f7ac194531c9d664da8ff4fee06465c83cfafe7b13b9b7dc724b99920cb804d2048a0579f5f6a95802c923acdefb4ad4b0af46f4539e2336155cba4c1edff9d233b9f3e453115b29620ed1f887495271f518af68287e6f357e1f0ffa342840432c8164eff1e73d690557df93c77ef701e1c75e4f071b8f65106a813c1855fe62c0a465fa37ef6f374a29cd86663356fb4dc760f5d67bfc200b33de67fc0d16b2ff0522fe4100221ea2497f1bae1e114f197d44adf7078be0bc3f58f4b5bec6583a002c008b64a79eb7c241f20cb1c409a2a48980a4fde85c6227fe5a8d0c70650b45e9b4d335e3ca75ac325d6b69bd8cef99bf64462fbd564403bff4a96cad5365fb5ec1979e245bfba53bc9d6a1466bad0476fcbe1b7bea630a3fd732f6cc49af44352603d618f5b153dd68694f18af3208693cfe80489840e4d5e30f68f5f3c350de0744e3f1570e20d3c760fa345404d3677bd1df992f9aa7cf336dcc17ebe96f62274e276de8f7dc66375f324fff9b33f3f53d7d181367bebaa7988a1f8d86f8cde897dfeca3a23e5fad23a23bfed70686d82b3c45144fe8d00310424c124bc145602b35ec7db5dc11adbad53881bab13af951f96bd5bdff37f3178dc75b47a3a3dd88647bba59afec8868d9bf020a440cc5497f1d11cf10311527fd47114b3946c2f10422d6e2783685f38ef311d829a09c71c524c6971d118f1818aac454d91f57d1d2e22f90becfba6e6b8d5d47d41571d2bba2fa1bb84f17d11dfffa35ca1b99f5f575f80bc6cbe6eb6f6227a13b7e637f157efd568ebfc2affffe92f9fa3aa4bfbe29d5157947140beb971d51f6225d447d1aaaf14d123c058e023f3149ac03ee01038185c052262e6292fe9f88ad4cd2bfa1a87f47e1d1f37d0f04b7ce180aafb08779f01dffef03b223865a12f697182a973889ec5564ef8af8ebdaf7ef88fcc5bd7f5764396ba5a654069ff29c1164064807791b1fc0f3a74eb9c572cf8c7dd560fc05fe5c351758cc5767c5845d00f4eb5a30bfa1e8d9e492e7778cfab46674511ff98b25c384813062b15f16f82f7b853cbf87cc97cdcfefa08689304b21d97ec97352e53975b8cfbce138fc35f3f379e62bfcf964f2f49712e4ee974cd3f44f099e8331a1445191ba3279fa6b540058d002a1617e1442c33c56ce1cae64f2f4dfb0f5158ce593ad3c631cb588df5f82938679ad650d73314f660eff62f2f4df307c9ab559abd56e9c40e5eef6c64e9b621a99b0a646b94f91a990aa55b97fe5ed4f372c5b5f92aef66a5f1a46a174d31bc158de30672cc3d6c718cb27c956dfb4d7b4bb678eda01280da3524da56174aaaff851c3ead3d391377953ee77259ea4a7a67a6a6a2a064e8b5a7af331705adb8d0d0b7bac61f5e9c99b7277f77777777777777798707e75d23ecc1cb54a3feb4b6f27b93718624fd27b1f47a06fc7d2738582fb6b548dcafd35e266a448ad52a96c479b5191dcbf156d49b99fa63f947977dad8f3b73f9f7ad48a954a356c2bea9e7e292e998a89dcdf0414450ddbfa9b8bbfb6bf22f79714047589eefaef96dcde6fa2e775e7fdccde5832206f330de0c46eee503b21b0d1b9c58074101b201d847bc9707bf5d75cf98474c71fb461ed987483a98009e360629947cc2b3540796a9063be647ebe4f0617e87009e0c35fd6c84f81a8d33d793361e46bf5654d18529f10662150083d843eb8d1836dbc19a9cc990d0c16bd76ce6aad9bab613eae071eac218a80e9d32d0c519f5ed2c21296d83f4cd21f47ec2873e7d592b98f5d7db7eabc5f827f9634e3b7a20874014873eba2ef6b7e136bfe462c83e49b0fc15f35db5673f3d5fb786c3ff33be88d08246fa28d58f334e296618828dc1c8e50135656cdcfcc7aef0362f5fd3898b9e6bdaf839acdc3b8f1ec6c0e67a8ccf442a99b64ff7bc35f0cd071e1983a3ab98e644bd100e920b58243f06c0d84ae199cdd51856ef5c646ff7254dc5e6e1b77549d29e5c3830f406821ad31fb934464ff1aaee9505eb609befe7a40cd2394508694fb1dde4dbf45fa9b78421d817490cd9b86192a2a56ab15aec215eb2a31b25016078b83cdc1e260a16c0e586676b7d30e6ca6f998adc290d6daf6a4208d6adb6854b36dabd6debacaf96fb15aac9c7bef8a8a93ba354887243fe773745ab4d65a75874a2c0e4a94e08013dc80a7bf7afa98707e735b0d493ac99ed3e9acf3699d93c706316365002c59706e71ecc0917560a161293b5441bb3c8390d52a6d05d2b48d8ecc84d5bb85feba8fc33efdc9fd0818c736f698389e2ea193ce9e78b6b26823f7db264fb38189253900d18397da4f49c7eb64ff84e2852dd5abb4d3ba59ee769e378168953b2e310cc39f788557b87495aed0ad5cc712fa131e5e7dddea03afd4c735ed5c0230a273aaec4f9b502257a112f572287068b1e159b27fd9936712d9fd8828ee721bdde1550c92298865c43ceae4a98e86938452a0a7bef775e021c75997c1e1c6d51b819eeaf5bbaf038eb3375ccdd0d01a9a1aa7cd4c753e286b3aa573e56346abc12c1f17ddf1ef6451305637abfe3acaa370cb6e5fe9a40e6e3473d4a5cc1d7f2b58b23fe1ef51def63307964de034cbde4eeb66b9cb79d8d20da7841f54f42b84b2ffd6382d313332797ab4d507721fdd68555122541238b83f4a20491c74c7e5dac069a00ca61bad2a4a844a0207f7470933de777b1d7e11680a990ea1f91593f4b7be857b915d88040fe359fc9839dc8ac9d330175395b5c8fe515cc7dd8eebae4c58ef8ab2c270bb5c06e1f61e2ddcde5fdbec72d636a7d5b204998e4edb12f68733dcf6a50efd927c715fd658c5e8e6375ee112bc19d5aa53cc1d7fc7c243405370dad1add7bd8a6663b4ed6bd719769651f7069264916a8a690add6d5be96d5b69a743e7719df5b8db95eac819f0e4d0cee3acc7d97bbb7b690064dd57b17b75cfd5e751df522057afd50383a7ce9df78a1d91934ea754ae5f6bc5f67b6a029c41387ed6a1e0a978422561d5bdca5d01920a661f55e75f32489f3609a98cf7733af1ea93939646a3bf6d1fd0cadab1c42209ae1667c6e08ae45659a695f3ce837552f315ca5f76741ad97e62bae7cb1aae2f491b5f8ad90649906d8c6c71b215bae0cb9a6c894c1efbb361e050f7f866df7a4fc7fae46485720a3d2763fdc4340c6421a861209150c3c022430d038bba87c8cc011a4d1e7f9a4f4cf65550762c64ab3ea09bc737a2a5d93c8cb7357fb16a47ed438928e02931d09945e02f671234824cc54ccb9c588c4c6d72534da6303295c9f426e99e08966c99729986f5378f59a2adb9a53585acaadfe1e051c3ba68f6f8fb1cc51ad6495e63e90dd53dfe4dd91f4ce2118ca5677049c37aaa7b3cc692eca13896a1ce58b6c297602c9fcce1af3a221a3e1e4b57f85e47d419c6731f0f7cbfd5d388f5f6aa9334ac12750f54c3ec54f778c3be19d1d4c78546a419f70a23e12d1c0f4f308160c6d4443bc184446f6122a29b607ad25a98746826989e3a0b1392c6c294d4534c32f4124c2cb4124c433a89a530485c5a6badb552ce2e6171c412edca9213569694905a2ac288252855963e50c452132a4b1b20622936656906294b18885aaa40942362863892851047ba4039f2441047a69e1c3102882343c88ef4f0c311273e1ce1400f4796783842c3078e10ed70c4023ac4be80ea6e4c0b2e070fbacb713656d5350ead6fe558bb6ddbb66d96d6181437c4b2388959f1402caa49ec071b62383cc598d4106bea40cc0893180c4b622b702016a444898b0d28599144290a244a5a34a0748493d2942625209894a096946a38a2a48198129292529124a50b202909394a0a8191a49a5192144d43d2962e4a4aa26748a2d219480aa26548daa18b24d9d031242569189294fa85a40c3451520bed4292506300a98b6e01c94bb38034455f0069d6449096e81590aaf41092106d01241e5a05240f74059094b410d2911e8254d442905ce8149054e8a0232fc61c7df9e2888ace0b2e628eb0745d4885398ad285c007304737745c747709b785d71d3175578b8ed65a6badf4724746dd97a317ba2c8e863a2f46c6745818d9a2ab19a9a2bbc2085567851126ba2a8c5ce9aa8c48e9a83022ebba18c9a19bc248073a9a11a74e0a23471d088cc4d04561844847654408144661b8187979c2a8cbcc888b134659b6185d69e2724653ac965c5bdfcaf1eaeeee5ee976376edbb62779fb7afdb7add65a478edbb66ddb368ed61db234c1a2646a690923256048c288081246428e0873c58b952e525c8cc852e54a1153a83c216287294da428895a8a6234040c42d040048ad7d120e406d1dd30dc13aff37281e872b929e342802c1a5c19c0141d4f603be4689281121c4b3e462f1830282272a348c8056104e0c5461717979e2c01b8c233a5c61300ec6041931d25e4120da30a60a06006223a3308991166f42276792e136491e04a0453729ec8d82146131c25ada51b231b18606480082b03426ac2d07899e9127291c9025ef9a6ac9e5cbcc3f53cd02db94e5c929d6193b280a87a9d0c2b5cda517a5b52dd954108e7ad6fe5749752ae457d7cd816792bd905d7b97ac0d55a6b758de47d3a96971c6fadd587942259e4fad55ff55935dc67fed41a5ea0b472b666dc6e31c6eebe6d9ced6c872f57e977cf9f9969e5bc0ef53c9d96878e715871fc4b1db286ab7fbee7afbf3d5e7d405bad15c432d35f659d97b35bed6e1478ea1015c5923c41c9a666b49a83091a8a257982924549d16a414344454f50b228a9a0a126eaa28eb96a24ed67ada9508a0eb9c86f85376ae6a0954876eb94ecd698ec569aecd627d9ad138cec56d9ad77a80369d4e469d937856984b3e21ae1acb8279c154f9dfe7965dc9f707327eb3b69b62212efa17ce6bd87764a5886fde38430f7949b471085b7672a7a1e51b899a35377cab25f31f7d329da9aeac93d5d6a91c4887122c8092127849c081223068c982f5fc4800123460c982f5f6a5faaaabed46a5fbed4aaaa6855545455345a55158d8a6a93c1b958b60c6ea4fd01f96fa20c0fb609cc6d6626a0dfbe1d29f0337ffb203f3be88fcba8ef4f451975e4e18fa938bf1e53b685aa0c2283c7946da1caf44bd99659a62e96414c68d9162d99d216a334850d504366e852e54b13b90c5d708553060910c1450d4324714942c9b5e420430e34d421554a0b5cb2cdf3c90d4743701d4b1072e5b6fbdcdf9f7f476b9d84d4ce86c253e76f746e38e937e0cd0da7aeea247d99dfe138fc058e65671c3eace9b383eef86f9406d6faedeb7c85bffd9d2f9bdf7e357532880374212635371f8a3f4eb819068651b38db8005104273db346a6edc31afed6767e40375dadce5ba7dcc6e570745523deb4864c3066cc982f827eecb3864c306b6e6ebec6e6e667b6f9fb01d98c38c21b9b1b7bf3f7ebe066645d133a23b1a383091be76fde464432d4fab11fdde4afaeb3a8285555157cb2a828185a5151b45ca00f264f97aedcf7555f462743463f3df5f7504deef9c383fb086122c29a0cdcd55bfac8ae123227ce0f4008e1831e2a82ea39c54101bcef07a1cb993bf571c41a73a77e4bd4617323d787c1125773a77e8d38e70e8d78679d647dba81070bc8dd09b9e351331e4d9840eeba118793375cdc23097f8723593dfe3af8ccadc6ed4371f554b6ccab434b849fb7bf5beb863d0ed1a64684ddfffe1bf7adc4f973c78a252c7b686ce5f9c409d5c67d7d9afb9b052828ee53139b51b69835e54e925bc6e4a77a08df30ee674a84650f8d30f20c4288a9039a5f36f7ffa819c7510fb9dcc6d295fba7ed5876518ee28273bf122fe6440774e61e7336df9fb2a924797e3d6cee60467121d7b7198793dd2fc20720f4735000d78ded3ba829d99e242c3ba8835a68d3b1dcf8afb28736e8a2df9ee050c3d66acc729fe626ec3ef7d55fde737f575c2becee21eaf3018814daef1eff157f9c10e2cdda39793a71ce1e316f4fb72d6f2cf7993f2ecb73469006728338e676bc80b726e1fcc975128f779274b97af401e8bd61d8c359b9ec2f4747e7e9d783f2e8c9537d0855a0023db6da83f6b0d94de0517f7b1efd75e6f498fe61d81f8fe9d96f074e9eda160ba68fa908e432d9d3938dc5ac842525cacd7d40d64a983de6311aad9f321830d64a3841b1f39c797e3c68d4e4996f8b90a134cca5370365d9411d401bdc3f868bb263a25ae2a37cbd294aef4b762c941db380bff4b0c835b9f466b47693cb2b23f3251795c1ecf1af113df002f88eebf01d7f1ad1c6dcf19f115d0b006b7249f6f8c254f27c2a65be2e0806acb9c256ceaf26cd975f9e34359935bba901cdcf9f9930faf387d23a84c9c9e3e0cccccc0c2873d2bd9a3703452b1596de4f1e25d983466e1b9d4dc1eee151d500451e1e95930e04c6c2cf3ffc87e792ecd139d3af87f7c4b83379fc411368eef76693c79f0465578604f5660dab43fe9af157f8feb3a45f2816d94b5afb846adec1282763982ff0e2b10c7564c7ee79e71ad42f6d0ca0c440c790eba77ee943bfcc20a300cb37e8d21d077ba45f04fda8707f685e85f087f597fa704f7427ca5f9ccc4922e68b0be2868bf26652d4c79392cad75f95c8497fd51826e95f8bfce7c77d15fb474644529fd6c728dc6c9f86e687c8b0381a11dc62daf0af11412d4ece9cec628255504c18cd35b0a31013fa2ab47e986c99395008b534ec1b51b8a013f3b57a7f708bf611b2ef0f7e3173c854f50098a070ad983a98a0d002af9839be7713e89831193f8d48f343e6983163c6d0fc0e6fb1737fcfe29ea8cf05a59c0c62bec0232639da704ffe9e14f5016b9ed4d0fda1f92b053cc287bc59f6076bd4c76b3c78666666e6af93331f10fea111e7cfcd2b1109eb6b442442f6ebcccf7856a1f543f3551cba3f424364eaabf04034a30af7a73e4b1c6afdd471c81cf3536b4624347416b2f2caebae8e213de687c936ca5c507e18945deea73241140369f75a435c210d1173882a4292380d89814acc89a8312b3cb10273482c204235c4510e2f3069e15ba2bec8e2030f34ea4ae1815ceb3f3944aef571c8a4d092c15c6b9867540c4119274f99144652aa90d9b27fe3fba56860854c7349e6ca55272f7a8ced2ce7f4e50b272abc70e222c6094b174e52619ca284c0c907304e3770e1b4640b27262d9c8cbe38bd9085d39097a63158346d516baae28a262a2b9a98a8a2e94a5593142a9a645d9a7298a2a903b42627299a8e40d01443144d44a89a528082090c17a62b0291b9a8044b1a4f7a16aaa9012080007316002020100a8604e2901847c34c09a50f14800b7786425c60368f06226118c4501405310003c03c0088018000000c200001c213000ea1b7ea934ea7f7f290fba2a6279376e0254a4415e9c14e591dc27b047fa6b16c2a347467703123de8f4cd1b0062a860bb0112658d26475db2235ad71d03d581503c22ebad153a43c8da269905620a991ceb46dbd0c3dfe988987f54e2e0800d9888a3a4db30c20d10e884eb9b4ee9f218ff650a9a05d9500e27d06421dffbfbc4100f46af900a86ce6aaf7d24b4f5bb4465933ab0f93ef07d6bc9d9084dffacd30328c20faad08a65369f8087213abf1b0f0818a4fe5543848828b979f70a3577002c5d9dfc807b4c3afd8fe0ee00ef8196c17fb147c55846d6f8c95b5efd1a63779ba65ca5303479ecebc94163c117b8f199b9d0933aed4e166f1370ea8c630cede6534fff6d234bcbf41a63282cfa1a622e2e95a3967ebf74b08bcf630c2c21ec46c908771330d58765870f854c34efaa5a4b3573cc2e51ca2b57f3aea0da6d891f2e1f189518e4989bef869ff6b80e79945a4c9328bb0e2c78f6d815e39b2a157074971efad9edc1f16c2470ee14791bd0730c41177decac695574b66fb93c260c7f8f5c34925d616cc19e671cb1feade0d7da309ae9679a1551466e191b7f2cd2c23e52cbda60da408d5d74ea5a48c94f1a6caaec639b8f07790d66f8f9da638e8e28ba7f9010e67d0df91f79e919ddf648a75460a8710d3c923bc6aafa4ea3cc3b62e274a1c460ad17729920452384b8530ebd135ead5f3f9ccdbc0e059335346ef5f03c6e278f4c6a4c424906e6d040dd3df55c63b11b7d73eed40f7ae9ca720a335456cef0634d38480cda41e740246b27bebd5e8b3544f34c1a133e6554069ca9fc3eda047f958a421090140fa4350834f8a84dab2ffa7210e24f74ba7a380132d6ef3060b107a3baf4682fa073c120d0f1c0afa1c067ca3232304ff2223fab0b8d0026cbc55c8d806a0569791587315e2a2a6fcb89518b06f116182f502649564e65789a4514a8023860c912e19a1732d2248edb029505c06f8241fea81b4f3bce8a10ade19e569787a8865d604e18c0cc84db308aa42575f4a9058285b576736313be63d2d101168994a09f438693012d5cabc21854ac30051854c05fa9b3774c5298a0e751c08f34d84fd8c620d33f6c0524899a2a1d1e162b39c6f2f7139fa6746cabf274b3fc9e66252de38346d9fb749b04cb5048f7480b7e9e326835549c98559b06a1a69edc24a9c171004c2c7bc8d2fae29c0ac759b81d2760b4c046d9b346a9c9e6b321bf0726acf660296a802b78275830e7a583685b1a6263295dc0726822b216571e572e077c187b030640ef3e6ed1075462804a733faeab7237be48dfd826f02562ef9ff9241774893fd43f39ccd432f74b7d7ac41986f560aba1a4b4fa286cb2b2c913ff308cd4f6f48d16705f8c462c7a6869573a748e47eaad20058dc55bd32127f010388655e2bcbb7491fd9633eec04aa0253ec8af465a9c034a5126104281dc9e25fb63a442f2ecf5eda85453d46bc80de834b4739675c7376ad8d89efe365f1484082c5998c3de7258b40150c8e31ebcd37af8481ead905429be232d121a72052f9acc2cb1e2eaab4844d2b5f4f42b9f3133918665285e3ab18af0d5704d4defdab2eeeea8f06207e600a6d571b035f333393c626d884ee72f6c832b29f19ba728c15aeb560474669cbae3b1958e760454f85aa3fc960524792f8e06201aaa6ea4896b32fe840795e08debafc4b336a7e28d0525650011bdf4670835996b2ccad8ac86b70b3998f10b385ba1242ee2cd3298adb0c13bd122c9f31fd969ba4b9997d5e32bb9810306f91abf09edfb59d515c6c7982f627a2dd4516a498315d8c92f65771f6896a2c265249e985a98816eedacef8e61ddb9d94ec6dd5e4872dc19dc0c9be57f4c13946ceb857dceb20a1101ee9c1388d9d6b3b51e3b5a6db0f1d771f8bd9fc68896b7f3f50b63c9742568cd8bb6ec492eb1dbbc12923a85d8ac4744771543bc1ce1eb0a9606e6d565944d7c6ef46f0469bd874194ef0dda59a450c60d344a416d135b51dd7c4919d5e9eb0d0a1e97f4e4c1db19d99d92894abb0bb25a88bbfaf7bc0c426eff4acc9884012b58f4fdad6e5240dfb7182436f310d8c13772e8b3f2d8ecdc0d2e9aedd7ae5b802b89f1034921f8f021cec9f1ee3f39b7015739d1cb4db46d35cf6d4b0b6fb57fb385865ce9d1c35feca6f51f677329a06d93d3cc1be3a4f0d939292fff33c39cf34a5d7d0fa12b9b15d2056a4cc99ed192a1e4d93cf328b68d4c6b65d4579e783255c3268fbd7e022bd62eb561abb02d048a0602ce34940e147b17d2045c6600bf228d23f3896965b17b740a2c11277c7f4d4b1e75ac328bf49d4923125ecd8867148a07e92cd1a238f9b72082be90ab2f2170caefc17a5348f7c853f522b449652c1a39a1ce6e4e34603f465450f22e10a7959f90e0655cae6753c7b27882f74b095b13df2a3da28f970fa39ec0eaa422d8736af794354a3f0dc580921029cd46f171dfe0ac6be6defdfee201c6fbf02f6fe9eff985e5a4d25986d618f3d3f1cb6bf777ce5d87d5fe9960faa979db5b57f391ddc338bf7f55287515016856a5a82b40c3ea5d4c2ca25bea97b17963d36fa614ca54f9d8094d2c13239f4398b6a012614c45fbbf2002e3e4ea3c2164514b476446067113160dec20f9a56e5451cedd56594238e3d4616037e0a596da487db0ff902793e86deda31c7b8bf9c79258b9345d952d345543e4185723ea3cabc266abbd608baaba9f271a391918f306e66bfd5ee896a9da1926380cb7b6c9e632cc1b0f99374379dffd6e71424478db053701cee46ce20932a15c199544f347258d1225f2e9b7abe02c7a5ae2d3a3a3179990eb180c08285dbd34e871fc397c9f871d19a46923d614e2e49cc8dafd04352422ce19e18353f5ecf7cbd153090561a30ce03d662d62175ee109a2cc1038ef20025cc55589554d35079dc221987704198a19dbc3121d9ad2eb4fafa4261c106e848d77865b86c3158b33b00d67d47097dc55326988215ae13ea1abc08a1339bf650542f54244a42a329338425f66a60185913c13e340731bc8aef3c3ece6aeef3d502da83d90bdbcb2168d9386cb01ef726cf5ea4796d341df9f77c395dd2f9df670e5ebdef9342eabd4b48ac26dad987117c96841ab18caba74be081d8c1667029a54106b27f51e690c310a60ea90d9ca1bcf54f310273b92cbf924f0cf9a52c31179b40400ef4a4f3ca84e0ab7234e2f9fdc12b8e9769f09b458249dd92d630dac39094691b91f08368d5ca112dfe8fb31735f39d31a640cc49f4e58a202fb27dfbc76791dbe2d0b93eb9d8718cf52d17036a9cd5adf024c703433569df9fe6fe6c9a66f6ca2a0fbb6ad60706aefe0cf1b8b3795a808d2850ca66aefa0dbc7210a69facf47e5617d0d255edf220e4d3aa36bb7963b1cd5da3d772155df9d602af7fddbe0e6e7d8d46be14cda3f595fbe5e76586e534fce6ffb87298d13c5d7fb95f761e43acbcce37cf972bc71acfabf596fbe0cd6745e5687df37ef97299e13c0dbff23f6e1e66544ed73fef972dc7109baff395f3e5e6b1c6e56abdf33e78e5d998e5f92a915b9f90d7f5951c4494f9fb94e4784ce489cd25b7f2310f1a2af91d50c0c651d0871af87a9857a9cf64fe52d605fb281517370338b2bd418f49fe06211f6f3fdf3690b345e7c5d197b7cdf3f7e2e5e31a79ac63b91df8fcb8bebcdd79fe0e2127b69d67632ebfc3e7c7db97b70df26cd17271f4f36d73f9bdf8fcb8861ceb386f075e3eae9f6f77226f0f4a618753839587a811838cf03040b73f55c18dedd478b102ec70cbf622b0bedaa8a56b2348d320ad7c325b6180698736d8dea0cf247f839113dfccb31fc8dde3f3e2e9cbdb0679b668b9b8fdbcf6b9dc1e7c7e5c438e759cb78b971bdfcfb33397df21f2c4b6e56ce779f778b978faf9b6819c2d3a2f6e5fae7d9eb7072f1fd7c8631dcbedb596d76b464e048cfc5a573950d5e5ed5a91eb31912716ae7c2db73c906ae4762ce4f59d95130b5e7e958b1c0815797b57e5fa9acb130547bec2210fd45ab9bdd6f27acdc88980915feb2a07aababc5d2b72bdcb3c2e79f94046aabd12beceb4fc5a4cd25e19a27e5e6e5f30d35e09536f5e6e5828a9d18cdb9cfc17d57351de979fdf95ecf83cee23ba33d0525b0ba289f74af9a43a1156c21c53fbd9760c5bde798597ef5e67c9f52f38f3d8170c39fe2b46befb9a41ce78c9cab3bce6c8f91732f2cd0b7c79eb157ebe79992dd7bfe2e5f15ff0e5f8d778f9ee6b5e399f6d3e272b27683fcf3a96bbc5cd8bd395b7c0c968c7b783191720f0ddda590465688f1884bffd278b0f4c8b6ac1622c23fb99a23491b080cdc0a3c94a5d0b7810dca811c93f70190b28ba7af9579d96fecae1407f1c881212d42698cac64604f9ec9fd11783154939b67fbac3dc3dd68ba7cddb869e4d3c17dfcb6b3b93dbc1faf1da1cfba8b74573637b3d9b31bf83f4c4f639eba9778bcdc5e9fab671ce1ee9c5ed73edd3bc2d857f3244a45a5f8c700f498d798324eafba27a2fca57c31b5a0113cec6eb08aadaa32cbd44bfc043865234cc171af53e72ce4aaae73c73212abd3de5bc27e911e5e7ea472f5435b7a39aef959523caf56aef5c48adb74b9df7657ac4d95cfdd40bade7f6a8fa9e3c4734d7ab5f73a195de9e72de97c923ce94ab3f7aa195b93d55df97cc11e57a95772eb4d6dba1ccfb123de27cae7ee885d4733b547d5f9e23929157bfcb85aef5f6d479afac47949bab5fbdd0eadc9ea2ef93e76861a77e9af79acb32f589ca39fea42796cfade30583017a4a967440af2b54b5197ac3a0db524b01ccb9bcc470788c993fee58ea39ba7fd7427adb424f34ad50f40c93172e06e77fb0e4f06eb270a07ef389ff48eadbb1d0654b270c13e6bac0c94232ed901322a099a950eec4a551ef50fef733b27f052485e4fa370588cfaecdd92c1b6d388847ec74405c73d559aa59744f2152faff137361d96a99464d8368f9ebf94e04895b94483ddb9a953f66a8bc1c69a6fa3507303927e034a512b79c9a75ec4270bb3441816562857668c284cefbc44d70cd61a2af010db0beda74704a02f6aba368089523b90bca3c5e0f90b002371440e6fbf852afa6894a77587d944484e14160c6222af1b8108acefa712a3f32983ff6317d5d879216898f22ee03820816874201f523a4bc614ef669c2d5a3752ab6c53be7639f3ca08b234008c93acd7a62a7d18fda30089d608a3f2551e988164cf8cd20b6d008219735145316cebf6f5a3eaef11f2623e49f7f1931a62db948405a0eddef79c2ceb3a396242880ee7fae8d097fd2035162d91489bd4f1f38c526684c424db2702934eccaab0bd788a1f90b209b132eaf6b56e88cecac6bebae2797227e2d37cbe95ef931aab4a670807e88c1ee1d38cdad8715a59ef2f79118ec045893d46108f640247bfdbf48f2b2240096b4c18f3537c5185392fc08be1378ee4a1c8622908f1ce1e881cd471e3684da8f82901f3962f3a8238e1f91e1d72d6f235d3ba900eedd50ebe8900f9c2f3b2798895ff0cd065aff077751bee0a88f2665d2c29d20b4c2970843523ffed0ecbc8a38010813222cc45bde76b8385e3c1cf55fbd2795f5d4795471e6b8da3cd4671b0b03a36b5eca77c35b9de26439b0df4a615136326f11c46005e65df5e6371f94ab17022797b7299dfc7828bc0f9ec74c0df793374927f07b03185710190117602f2a6b21bc6696f1653912d490696c5e0ade66cb3b18705abe6935879097a0da636ba61307be33299c4b33f74fa14ce923b0ad9d711f3c8b52e6e1ad782e264720d849245ed740dfc031221d37227ac165f2f56742454d62c9b0c6bae6bdb02a8196b836931d5040832b4163df1324775f3215b692e45f38d6198e3e0102214b91e86cfe25d118ff77743dcfa1114391b906601950e9fbcbf0c07efa7e5fe3d954bfefbf1bdda8caf21feed746d346ad28f7b4a04781d7d742a36da53ac4c944c13544ddd452a7efc6b452a9c599f182bbbc41e85a6a4694c849d75fe34aa990009dda8c045d081cb70680d6975e79ea80e5c87d325371f6b955bbd2e786d382465cf3c55c7bb120c63076c0fb318b5df68a1aaecf9fe026368a251507b260556bf1c2afe22636cb259204ba628dd6f1e2b7ea26764a4a9602656d45ab18071ce75ee0b6681c5f9c5a7d696635222d75c2ac1a1f134b790ee208ad11d8f345ae357ada44ceb86db196d53a216424b2452f0c08392970826136ed875d1aa26c3d00a5e5e90a989c76a7b4ecdd3204ba402877477169214b6eaa11589371c613dae616c1b214a36408350e5c945b54bd818a9affddf774a83ce2d31eec1afce4286928558668965446df34cbd434a3a4a1c389fe9fcb97790214775293418e020d9015caf0c331d165a9d9b0620b4ee413a4e43b0741e438efacc1d971d83d227761871a5cdcfb4e6b007f50535b63d96136a883a99b77511a13e05d55ca74eaf8d62e87bb65162baa101866307589fb282ef6a087253daa8d2f42c523a3f26962d54d1459dee9aaa13172b300a612017a3ab3d07af85eb8b4d96679cfaf075328731f0d04eea238fd3f15061e561c9c2249214e20afeac20a7b47e4cf00d7ea7487482062015094bed2c558c6e3eebe55c336bbc8757036b95219472cd9fc9753d1020c98e9260442c1f3a8e2a67b36aa8da2cb616c7bab751928b939ae59e26537d5701cb22e5fc82e06f8401fdeabb846f8c61732877ca88c7938992b1a8deb3b688ab9fa5f8ef9ebb65e04c12ff469e1a8423ad5f25a6efc23f54ec8064903ad09a2268c5b4a95bc3fce808b7e6b39e92fc644f64a70447a9f5e018c55853fce003ac08fc556d6a8ff419e1ce4161546283b3610126c61089cabcbba4fe3a16084f87d0fae07bf0f7b4b059e5602bf9bcb8167140f352dfc4f1c478bf2758cb4466fad798ecdfbe00132263f0f52d65cf55bf3a303f95ae467c89cbfdfa08baf015076aaed34172dedc9e427bb6b70ec4de50a1cbf1ad462aa0ef88e1a42831e0e461f78ad543dad711665c50874b3311256fe1b2cd7f50150eb991cd904035a263838e1809b5a1c0e3b1e4d8501afab2ea34e46c8d9fabeb94ad55b54eed1d000059257a2a35fca8223afa5fcea94b4e3a7d88ecb0aa8923d30627de1d71027c9b6965fd09adc714b690ad30c1f4d6eb82d5bce1aa8c2474606726271769ac3bc646b3fff7fe6c619d0c0997a70c5453abdceb79d08b7b85d39f9a8b4348e4d81dc6565454f9ce09c14c5185deac2830bd298ff66ad4cccd9c6174254e2ee37700c22cbb83b85a10b6eb85c6d25a5d46ec8b81f6a751e554ca3717485c28974f5e7b917ec4a83bb7d42c3b5626c1c05466d341c38fad9d860c7b725535c59ad0aff1e49b80ec63759e15e4f9358d9a48b783df3e995de2c9fb7e51afd23b19ef9b1955e69ac069fc41893208ad5f46ab9ebfd6e61d0f093f9627fe0f59f7b644016e276922203d8cb61faa47efe4adfd528db92bf883840775abbec6f568d191d8b0741922b014866b296df9de52bfbe61fcecefdf529787e894772516177ff46be51a49f13577aca53f3f6b0b1d29a45e1e51489a67216b0060c16053110da11ea694591e124dd17a1321e15e589ade5712a7b26d8b499173122f800552a6b54cbbddc6be79222459a598acc7a5708484ae975ee7f7a0e575f274aa526aca1e0ec8f990cdb4fd05b15143a276e68902cc5370f9bc33106f23ba506b2a23190573911cd5120aab67d40bd6a0b8d2af749060a253c069845afeb6b110d09d2f5705eaa8babd7c62ea54cfb93af4406202269b3f84957d0e5a5e99e4a4daa7f18772ec7653fd79aacf044a43da1fab77cb38830f1f4f214dbad6e04777f9f3edecdba792246369d3e29ece1fcf233e79ae0cc6d0fbe63a30186095b31262ef5bd04bd47ff3233937670612de4b0519246d22f7c237d3081bc30d3e686fbfd43a44c70db9b728eb86e91d611193f108d4780de28e7aa9bba25cf0f235310264d15b1810d1815d28b5ab5bf04f5a26099bb9a964ba0c00173c495ad4cf774d3307dec736caa4ea64f54aeaca1663c49a5014e58ddffb1421d72377ee5693f268fe464cfe2aabdd3b1c29115fc2cfd3ba7accca9e544a684f90a79d07d6e58a986acef90eb57bb01682170a85ac36809f632243d5d74178b46f45f203bf2b0082fa593aa4db88957603066741fe648f99938c36e108eac1b63e38667fb1a69d6d567d77d4cbfbae11007124c7a9d5ed0f0ae70e9a9047c5f51a7db9cb64d84423b1d8ecde7ae81031d6049bdc0c0379d42a5296d6ab8755260f774f07f9975954ca0742e0ea8931fcf49c12827c43b27d3c9f46a77be18e8cb6184ce1aaff07d68343b2f2ecb3778e2e8b80dcefc036a376752a8458f7a133ed1c19608157b518d4efa7331a8005d66510898e59ab7c773cd0c20e37540dfc7979503032119c495c4246a5dfe461e124f07ce22e6e5506ee207e69d0b894ef8b6a75ca6f307665d47d7a1e88ffef1422ed96d2617076cf94b5b03b55517668ac5a9a308958bfb1845945e87369551d4bb5aefb13843a9ea5124af36d8be73655ecfc74adaac01c76e9cf16d11d9201e1a092a37134831a7e70bed9f70a934c54e2742bd2a3ed393e72bcbf277b32b0a64909c642a0fd824a55c0a6c006b67bf19d8e56acf0c5b5e75fd342185eedb6c91006bb105c7718931994d956b70d1dff28983d7a7cba6bf9a65652e137124309d26dc825c97f82eafe264501ec27191b5db58b43e210faad84dafc6cb32a840c3ea3d410044821c83f6f2df809c007cdee2718a3e9336ea2074b806187b9811c324d80dbe2489817cb4ab3d79b93f205b5ec7eeed419007279fb17903a2889256edb71f0aa988f82dbde13fda4fb891a797cdf632d5288f712204386ddba277a2bbcaf2604e9f7d4689ec81274e7dfbce01336633cd224660f1e19494da89aa715e3e008a9988c210174a283b73661ab31a5c0dfe077d77209ad2b1ae241d72e880d0dc00f8535829f7a9b71f0cfb59784cc66a587921134d7c4e6bcfafdd514e1cf1306374632cac370e43729b51225794d7a919d583ae55bccc5380d8574006b64cea23ad337b93fc7d8776069c1ba5075a81726254b08c981c87cc41e9be1bbef012967d2ea1a571b1e4040533ded01f75576b4fd21f0de0465802823968f3858cb21008098ebcae94ee9b86e16a6b8120fd1fe746deca9ff824d4809ea42014a13c1f29cca1fd111533cf2840870102ffc5ac522fad11a9d2b8fb875aa0622e7e6d261a3c6888760a3e3b042e1ce39a400d7d7c2c5a57b39eeacbbd376040331060e673dd47409d7d9683159b57a63be2878eebc49d3acd1751c5f5993d1633a7e71e22680d0d7b8c580360b294071fb6a9c3413f1e3622801fcdbfd50f1c29b11489c289c063c24a0548ca983a6091dab4e3add71ef39fe50466bd0069f0be563e40c718850f9787e0783287f38dfc7edade7d8a678133de50c8f155b90820430c2c7fe51bd77ca2172b0e8a5f9b343c2df377a190a8fd02071d3802b4f0a8f8e1c7a2fa2e24b02ccf5c855d74e985e01b286d8d8fe1b614373a14dd4767572b8a863996eb3bd08143d16bd421797516462546e25cb4616ffd93e30c0ae149c5bd930ef3fbb5154e41cca6e76eb52eed80088cc5ee36710c36a75d2d42b319556245cec127c09cecef0f1646f1a048d66adaf937e74e861ae401f443adca9af2411dd0086748316b29be711eae942992cf2dfdccdd5970f1a9ceb79a079e6b7243e586c432bcf16a87406edb1e134fcda0a20fcd540944fb7b9776d39444e1a7923c0d7f7dc57f706abc3b44ab3356f22b34225cca63e8dad81f3774c6970ce83adeaa0fb93c9157a1c302912e7ed617721453f795526c4516900ef110f36a3e8ca330d7b33ab5782dc5c88f67716ce3b928a1dfd3650cedc6f8653d861886e7a67488815e00f45b68a7b97296b3c05ea3ff1a8a75e3b0b652cac282a404f0b83e672cc9966946b249ea499af44b7210363a077f0727e3cfdc4dfcd7357a8211abf88c52fd5d387f77d7503ac60d3115c0ddb4e1f1190395382ea0d886f3967599f0d574ccd5017bbda5577a83c31a39fd44094a50434add8d472c19a43c5cf38ef7ac34a7e46c54f17831114c69f8d22b99ad8d681a515bbb819a1834f096f7127cf9ae83719a00bcd99f0d41bd11c85d178f27b28bdc28451734358ce6d40f5660385f978d54a39b7745f918793d2e639648db89aa7af357c6530d4eac5332574847c43c1222271fefce86ac03934f27c23739af5352ab16974aa3ca4c5eb21a8837a167b1fccb546480a238e39eeac7e38e9b9501d9a5df1d86e275d2fbb3540aa683e9cb3117aa1def19e4bc1244295ca5cdd954862b77625b6c66775f9ad1a6c4e6e73e034e8c62b0a53be2eda044c03c31cf4e7106113a14b773ffb58728bfa698240d04d51d3c2e8fda3cf796f058831895884213cb7da30a040f92127b686744e23b15543c2e0aebc7a9a44261d4e4390e4f7108f6a593c78ecc02804b340b2ef4fce7307e5e072a3b40c95b69925858ef0c38b5e298f09df72258a21a20dd2a43acd94b81436693026c2969021b2918b147b7f0c8801ac997a2f94d85c92032e750c13fe8361cda794b1895ae2d69981e948dce8c25e06f5524c6c9588de39d9e0f1a571e0614948cd475505396738f040a5348210ae46a0589b7f54913ee40418e7db1b8c2d546b9082e6c04eeee8a549f3118f035f8dcabe9a574d7fd93595388c675c9ddab5c58dfe3e85cba13f21e3e3644362ca22469cf1493b47d800756a6d3b4c230db25fc0d7334e515b1871f906881122560fde64f53c36a64e3899dc8fa626c3cbf427d3ba93d03db44b81bc58c1aa875113203153a6ddd418edfce9acfd2cd9788c80f50e0929997bfd22891e40ecc97384e26c5f0ee9d6fcd8b81e0a9bc8728c7fd16db0a2edd9c4c859fbd7051a0c4eadd720ed8a38856b40301d1ca876b885142b5998e48e30332056830e35c656ad8c7453bd05c2dadae9405f950d82a200d91c163de6de54f176391c39ba3f3717fac2d84d3d5529eb1e45ef54d774d2513dfb232422e1f1ca50e384afa3050c377dd8868656b1b4cb3c8862a0918399a548cc9b8647074fd767b934204b77cd464c2dec420ad9c2f3ab5b3e1a76cea210246dd4376a1015c1dec12d2bba1138a9aa22aec21ac2d9b053833efa3127bf5a589521491b722884de2bc5a17378f714be32fd9f52aa78de64716216cbf42b2002f366b474624aab26f1ac4d144bc62cb184d7e7477e005daf53ba6590ca74e638835206b06bcfcf8aa6b734f8b74d750cf7f5fb0c9d2b70613b47b5cc00b6a3666092d3230db9195afd73a5ec6edeec3c82c3e51eca045355a5068e7e09f66113ae370a0ce4c8666b93665d501e9eaca15ffed26888461cb46708f20eca201b9827869b236252416106ba0d1122d7c459d53f8d8efcd61051cb98451301a9899766a5999e3790ae027fb6b42b5066260b49df3653a66232946a6843b83847078101c204420e4d39f1ea637a41d098391c81f0805aa35e049dd0af533817d6d79bd14a2bab5b0d7889ddac56cfa381b1c17603ced5a0f1b8420af594e7755b85cbf368d2ad1ce65e19abe742dd5b03521ebf34ebb63f3d2988de25ecb420891f164de3803954cf25a4e717b0d6b2b685e2293789b349e1f9d7c7c4f7fc740dcf1d872447e0aae485cd43b4812fd2e797754f08e24bd58f4a1ec33c5544cad68130bf3535dac1a95bdd1b8276dd89a114a77360509ee3497d178bb05579445836b16bcf594c8bfb23a6cb912c43bc0d0e38fa8d02938adf9d40b9cb2c81705270600546ff7e2aee26a3d062d19fa0b518b95ecd76485c9780ae5c6d5cdc9589288d6fdbc2667284cf5f9c3fe41dbd7c023f61006913b1b2c7eec306adfe6883eab338dfc881caf714e565da52f6eae189659ba47de3993717cb28ec0efa53ea02e3e1666e317274a1c3513262874f014e99714ee218b9785944c17e1917ba800c162c53fc166c243831ebc45655f3793ea7449fcd5c6ee1e1ab7f598bb3f4d9d9bfff41cf58c6c17076bd771ba18e095b9baf7596f8a9be56b3398b5e67b2fa7337a87b6c51ae544647c90a5ee77d421b411824476252ee667d0cfc33b3554f2d39fac3b42eec31990c05ac4a147a6ddd45d1f77cfafd4dee65f262e3a4614de49bb7f03a9ed2384d1a2f4dc3d14da8931f5d0398021827b9c3a8c5c077c2f4aa59061ecd8d2cb6107e46cd53b4955e50e9a76626046d9149ad90f4acd28f55d3f58ea0eb34f9bc7a6b465f778a09279b79dd8f6045def6f2fa6a10837d9d1ff003c19f9bf5e65ed8b27001638ce828db144fc5f8e90fdfe4020a795aee41b47cb6f0359c579cfc0d8b803edfd6ad9141a98591d9eaa0012080b306aa9dc8119a15f73d7c144652a802a76c3ce8da5c070a7ff6388d9ed9f4b96314d7e4abda2596eb8c3d1f731f823577b360944deced1111c8f041e283424929385e27121e43539b924ba7b9aa561122e657c094d4b19914e2dd9dd60d223b131e8063658c8d2a55447311d5f0887441b46a3f6b3b6709b19b90d69da08ba6ebf5e7e33824c73a578ba12b6b200fd27a3c597f67d41a4bc39e54ce8e3ae575feafa87c1aea360b92a1fca553bc40468b4381bc80bb4ba3e9d5fe9a54323841c243a6d7b4dec6bca2dcd5ee01ca98d34a51f5633c8e4fe0a426e53483df65769c311a08e46008b5ea9c35a4d87b9a9ce50b72d92554efbe7526cf5707025e2ef3d89049cbd09e65f74ec080b517a59eede21d1bc9056caf4c3c14667be3808ca163742e117d50dd283834a6fbaecc7f80028aea84ea986360282776f63dc760e7cb588d03462d696b0eb58aa1a9f17457f2aa9884c8ebdf9c3a071534be1dc9f090bd5cb3f346ec13317fbff82b34ff23365ee466747cdd3f01b89bd1b6066f718f21a192004654b893d59753feb39f0c4949bdc5c5cd65b4186be2aef37ecb5c73c0a03b7d71428ba1bbb57c6149d01c2d779519e505682ab79ee020bfab2db54e906f5f59b0f2d29810d72a3ac14bb199344e514bb4e20e5ac60dcde7392db9242d817cc45a83fd4c75f292aea9ced611131db3b0947590381a5fd213a688941417fb9e3185801f4d7aeb86092055f018722c323ca2e3e3476e67d12a55e90ea6cc74366ba2c1314d557f554bf6158920697007dc002187b3635c6625ca7e76ccd123cccba5766b2c630c529d449b1b25ddb7fa6b43319794fba9fd68d766c10e2efe466b6a0742fac41d8e9b18c90dcb7b4244cc9fda51609acee6fbc47ae3b1b6fcc364de379480d8da27e8ca7c71977cda759305e94187704999af6f5d156b1de0ae82d767dff796d4c5db1edbf45cca6f9e16a392fde714fc4a5788f7b5313372ecd611ef7a1d2816fc014c2a03121b0f535210c66c0297faa931133d677ae5f77bbed699361863e5760151d839042387c13530664ee3735e691d139ef520060b2a620b62387bbf446ae988d3fe164a2d55e60f44ad00dae7d5ac579d49cbb2c478d62a279140bf540cb2e404e5bcf8e3f52fc858e07b50319d2c317355da01adb6321aec52e6442195999468436631486f533cbcb7d7f43a429cfd214ca4f736d87e63a1655ec40ebf8c86a4e703519599baaecbb465cbe5f7eb830df239b71ffc464b7de83351bb2b3e321970811d38c6ccd6cf6fcb40c920201849be254a0cd1ef2a1bb91ff661038489b9dc1b4224e19930981beee46cba0a2a20bb0011198428137ab05e1993e20096f7a968c27c0fc5a0064f627e03a2c00e5b13de1dc7d2962a3b4d913dacfa08ab335ed7bc691daec4eef0c846a97a570ddd6e80edc2b57896d76dd2eca9d0f48be05682c7975ddaa3fdf15b9b3732c3e54c7aff23910e8023e35cad7d3bad9d486b56d7a832e9d4d4bc1fa0d37cd04d2cc91a621c4cd198ed2033782295906ceffe697ec15b43e3b84d03a8852cc0dda6cc774ada581a45e44f35def33b7ce0e5f36654b2a81976a87ceae2b470d48e2143f599ab9b3cb287f2f0c4c5c2add744b1d3b474ef4691e6225e4dbd99d1d77e8ea9c2eb03f4115260f3cbb7f89c019343c76c2056d8a8642393191fd80477253edfeee97cdde4fc22b44787551ef8650ddc43a1674ee8d121b3da5fe42721536efecae339ce69931f85ea4baf2440588720913dc2dfca4fbe6cff98a51a41e9318fba3b841e6e2b45d9e19cc80b41681299f505e42f27179d0266d5b1f77099059b7b3a26732380f9a2d643aad0c02508e4c13442e9abbd277cd40f0b2960bd966dda864cddb3fb42d47d6a7fa93189a1acc14453668e28d28bbad575feacd937449900fb3591791e34867c64e1043179de9e893283d8749a009c82713f3d033b6387b8e0761ca49114cdeafd34bf9edf9c2d40a425eaa77f07de7ab5715fa5c72fb6f46f1ad19abb15f320c0f076c22a833c680d16a86fccd492e49c7ffc69064c3acac69fff9722a24cc8d1fc35494f5b5779922be61386c15b461d7e95d85362304dba1d72c26ffbf607bacaee45c1e6c97ef141360118e037953232c687786bc1ee97fefe9f6ba455f4be13efd9668e200d8a96b034f5c9d0a347ec8a55f67e302d8d1f3911213d6dc391fece157af9ccc175c471445f972aec7619791ae654a0e0cd9d56596c5769db600603b9b96090257ec21e552f2f6f36bb46867ddac8ec000d06c6572ab73a6fbf038808ccb5049278e85119896e13115282cabedfb1b0dbe104193b895a18fafd5f076f1c41bdac95234d245b797d79553d9757c42c39261a27ab100ca1237bd9cf6603176b20727a8d889788c42105e3f8d44cad54827c3be85325cdb2e6510cca941938c76055e15452b105410686635e940c10b4fe2be668906fea516e30d82cbbad2f19e1c33c780bea2bbcaa7422fb856d091391c06d8eab5fef1613f26bf5d093d115e9f519be6bc09a5f6bdb10e8d19325a9020dba4b7594208215bee1d4110ed0f37105f90363a8c339805ee2a8042b86db520100567206841a11fdc77010ea54c2067fa0a6106937e5cdda50ce661cb9fc39b8f514b191cc2dd6a8521a571f129e7970afa3ed0d5dd21e27575f5ba3af145be8b97674a771e17dfbb5b246c5d99046699375a03b85fffbd48fd7779a670e701afabfb7729abe76e11f0e1e569b9aeeebb11d5bfcbc49422a1ea46526f79cb65227c4d7b5bab9f3f841251993eca08f710eefbd020212ad3f55efa4365503fa18bc877d56fbeeb9aafef91a97e137e9fb748cbebebe549b5bc47967a4d8356ca3e508829035f5b3e5babd1f7fa22dfebc3cbf3dda0cf898e899be8982e2253f6bdde65a43e7c88fa99ff3ed4cf0feed75925aa5942d3d159a8146dbc7c317232fd74a52c834919b5b4d5c29c0a02c121e0a70d67b882b6a682faa92824cd6b28056509f714b8c117bc00e75415dcf3a7637d05d452c77235ea92524394c6e55dca522eef1299b254508a663a72b9b7ba8c5426c2d74bd906de84afdf5a767cd548ceb411a551f24152997c5aaa47d548daf8de324469404a731aa232fdfa43694c6f090db552f7ee732d3a1dd913522b3c1d85391574e479db6684b7ad65694b9940da38c1fc5810c600b70d6694e604b4f512ce9dd06988d280df378481280d6a89caf4bf2f0c514b27209c32a241a9238c9444bba2ba2d84b913e221945788600bec02cb2b4450c33585aa116e4f8136f4c6bc94829cb11c14640e6d5d3fe6b76f33dccd70a53f397544c1212923273b9fa51c9839cc4b3720676a84e33bd086090aafde8136ab8f2e2e2f2cd6b66d96098a0a511a85b2a243740adcf447ce74983b29af5a08733705eeb714dc53890f37f1d6a086199eb7cb42983b22dc9fa2f110ee6f263a4d2693c9243ba186f5534194a6828852335c3d146a89d2849426bc75d66a790e514be2f7b55c3029bc60126e592a25940ac24228b16b888fe9a7b7e0895df3e07b64e08ba80eb65cf579c1cb133ef51e59aeb3968b84fbaafb84377574abb245aef9f03d3223d74cbd88eaa9cfa72ecf94798ba41ea66eea4a2ad323eb91a582a4acc31276df21f157839f5ecf7d9bb7bb42783f212ad3b8bbdf901567b8d608371029cca9a0ed82440d43a13ccf03893c94451935cc43799ee7dd8ab26011480452018940a28e7560a3bacddb50470d6b90083748d4312a1d53021bb402f7372784579acd1995e9d3ac2ef5b74b8d94108244a4ac9a8eea12553229d5a56ed6017541b86fea68df1786dfe5966064111542d8a7a676221545c3ac1066fa7353410d6ba48675e73d775d2a08a9615d775d673aa232fd2e454b05a5a26858a7823ab6d11368b36d1c5723412aa863b9ce70a7a2e8d80c0a6a09b7c4354a739a4999a634262529d36fd3116e215001e7d30cb749093b4181605252846d849132fdc1cd5521cc290e092808f7b99a8c91ce26b69eae033284dab4fba99dd1b0ae4d37199d37bcd1903183c6a57165c8634e068d90d2c8781538004263a04a185d9670484d899499efd055e4f2c8d3f7c8320ccf29cb2117c22ca34637505d455efcfb7779bebf788f4cc2c8ae194a09a17cad31372a2e533617cce53c9e6ddb60b6bb64bbc4f585e5f93ec11d176f3330842e44d5850866b34b5c6c5c5ed3515c7f616362eed93caf5024262ede575439c22ee7b6d9b6d5ba79b5d195cd2fdb26846e5c737789b15d8639135ac32e67d91f13bbb8b8a85a3ec11e6d93a035dcf215056d5c7c655d74a3cbcbd8b5c6d4b9ee85751075ee86e3fbb6962471b77b3d382131efeb6abd5dad53eb6add1ebd1de63e58416c57d5dfeceaab731314d2d7bab6c79c7bcbbab6db43362c2f018be14efbadd6451e13b356372545c8ddb3bedd25acd3bbe4e5db2d135ae35877bb2f877179b9a9cb81a8f1dcd88da337b668ebdec8792d7a33c7b55cbcfb66aee5cd5aabbb587d73f98a03859cf0f8cdba388bf596e5401b17aff44acc3313d4378bb415e111bc675fbe594a6ff63c9b678c47b45956cb4b49117aef2cbdd230cfbb9098eb5d1787d9ee7897b8d8c01e2eeeea3514b4f9e5e259b6653b88098f2eecf67a2f958290d670eb9ed7b29975f19e5562e2f12ed9befa047fb87cf5d56b8f9e6de2ad6533ebee50cc04075e3dfcea10e8c15bcc3d4bdf6a3dc60aa1f7438d76f5f112bb78f8d1e626f0ea12ece1dd209c61fe7299d01a5e3d3381794ddbac5ed3a39dd8c5caba3cb47909220c73d1661e1a867958c5a865cb2708a407b7cc1f2b739d823d46ec526530b6c714acc06cb36d06533d8f09759d87466b2f0839d305420ee69b6542fb0ddac0dc653f9fb6dff7f3fd3c0c1d06099bcf5409f85985f4d15ac38015085ba5da60de0fc2cd6697223cbff5cb8fb4d1fa8459c231973206b32461f3312fd59bb2ada3845965d4ad0db4195d2ece854308b3ca68ca4ead5446e35da98c1a3655555ea812b04fc790a035bc1de60d7369841bccd66d1dad21416b5855655319619587c5137291d2b157b1039feea0107e3329337f84e70ca398684cdb28a66f364a3b01d430ca626db3b97d1c57afb7ae6fb56d53d55448e1b66d2fbefde41de5a8f0fc0b8d0a789b15e918ac5aa1178630d725d75fbc4ac754485466aa90422457907da1f50b9486b910bd3e5fdcf597a42f6ee8426445da004318f398fcd22e54e0f9d5481ba6eb76a2fba0c0f3759e608b1cb810491b2c3cef52246df44b10a579a98ca8cc54bdbe52b85231f3b078495ecdaba15ca41c852e43d7456816d2bc794f699bd5a2307b352c75c9f5cba03436bcdf8142b42c4c43c8711f8dca14f9ee7a7dc1238449f6e2bdcdb6990a697b5621d12bc2fcd15c54892e356c661723fc42c3f3611ac2fccde647695ec4b87841d571f51811d8d036b48501a23256f8be18172fa68f35ae624420fb9cf8809c68d804c260089b36962489b124a9901aa6ba42a473eabfeb2af27def91f55b7721da3617222af37d3e0d9b1f94a4d9ba5ead615e523f7bb5bba4ef61f968f499e3bc73ff660de3388ee3bc24afe66169d8ec7b2d9557f3b07849a94fe8fbc922fc685ecd4508f46a2e421d6b7cd6eae587d2bc48dd85c8a588f6c2becca8cca4996a0eb7590e894c99eb35bd3dc6be009dd01066151211ccd2cc615e759552c7ba0a785e95850a49754555eb58bf695c170fb3346f84526544695cd78588cacccf16cc129e2aa394141e779722cff3eebdbf0a6f6ed5d62bb52e45d685c8ba5099ada3409b960b51c7266e89bbd53017a2bccd8aa8b858d1b1f0b302a1cbcb3dd1c6bbba54b8a0052e5226daacc2a2b25945063c9f7221aae50d6717978efe9b9d642e45f45bb86a852e445e0dcffcd15c885ca8b854c1f35ead6339a44109573edf9dc25d857455481dd771573e15526db9756aca99562161d595c955da53725b4a6e3e0d9b7569cb75094fd40fa5f9687589d27c3314505dfa68dfccb5f5cc26a6f7216008540df7c10eb008b740b108bba2ee0ed9b87fffb87fcff248c6f66ddff66dff6e36993aae3375ddb93b64dbb66d03427a355e2dccd2487eb88798667037b585813b8ff3642ce13ea36143a608bbd7501a5646c336263066d0e898e49a090cec79dcbf6ddfbe6d93913f9a8470c32196543ce1011c765308b73796303632d4ee082c438d094a1ad8c0a221a422a31c5c310de9e008434053004101458b7685225ca10a28b061080d4b40a1218b26b4405415b1806a152aa882032e66eb6da3431c2d081aa0b55081020a8206a4d01bedae140b0ee486a6184148891a069352863c8c3ca3a512e4145d99c4e069659baf354254c3680c2631789eeba386d118b4bb437920f7b6d232b29e759aa8d90263634c1f354c22d59f707bee232b1bcbe68959e0bff11f6833be16c11da32d9318f874026d6028eda33e6de6c1b01b841355233c8c2a3208bdd2052866987273c9ce6134ac51287a5d3f36251acfdb552eea6ba10f7c1d6d63f9501e783ab55dabd255401ddc51a7a4b9c293cac867d44813039f0ebe9e6c27354c1eb45df341787aee1ac6f29a5e59182d23df4af22d7a730873c77b5a98db682ad131c8d854ea0ac858dffc9d61c6e871b48cfc7673cb1260c2e4dbf2606f9030f929064fb63c374ee5c6aadc386c794abcea528679feb78d1a269fe7bd6f93e2930d968e8d178918b58e81492710ec8ec1c5c0dbe5ee0a0c1b265f435903c0f2a2cd3b60f9161b5a271e5603964fd9dc1870b2b5958e21f13e6a248e9b324636c5f5e3221183bbca8d69354cb611966fa322936d2a4dd430f91eea293ad6b4066a211ed460882ac1608856349388948a8080e60d398512152ba61296efd954ea9f4c816692fccc729a5118dce0880a181ca1094438c9a2a289842c2c601a02ba52695424410c4043500c492f004a8f412d22c25215df76b4d15880aa51b1042b2437a405196667a099e1045898c96812c2fec4f7b66d0eb99855b1022179b4822198805680061c587ea34df19ca26112a861148a24843408a861f2dc07c22993a734abcbf3901fd2453a76a463a8cb2b6923fa888ea9c2cb27b1d34bf0746cec18eb12e6d2751973f9e2d286bf2e7ff949eb98bdbc979f12c665002e0770f96945c7662e097099c3a58c4b1d2e77b8fcbcd2311e2e675c7e62e958012e0fa3349d8b1315c938a558349616c6836d49180e9f6163240c8717c05ec270786db0493f8177b84f2cc11f1fe66e3e6207bb92301cae830d250c87cbb02809c3e139d84fc2703801ec2661387cc64a09c381e3388e8b61a784dd701c6ce6288005f0be610079e21b04706a23802724ac3f822e604e00af9b9c9d9a4072a69fc84d8001730f809d4ec8f923a78f9c331eb984dc91494858ff856572841112d687b14a86b4906aa44cffc588c68c1852a6ef6261301ed392ab10f54958ff643709eb06c29c133f3e73b6c552164a5992b0d4e4113e7d823a64113edd2649600e070d0e06e331ad5588c2a64fd3a769c268fc86c9d3a1a1ce09e1bc71041b14c9de77f6dce8a5014d4a6b8116945a20b46db48194823a961b08d3e68d09346ff4258582e59b160d511a0a2465e4251dc2f258663af4a39524b8d5867ee05561862d68a0a680a480811b8400ec68434554088d4105289156bb32d4032c32002d2d054a4658a071a699163f475a1011d5afc80a5eb8c20882b0aa71b32da2d01da5c102128a4981c6230e0a103a284957d0e9a2f41da3581e46152c3fe448d36c33f91819070ba80a6ac0352bd000676985f6a4431dcb14884e2129d011b03c85a2632a1ad304059b983d9d8700223a4f2bad40d8cf7356ca75dbed9ed3e689e7fd68077038ae315a313287ee0a6c599e9e93549e9edefaedf6659f36e5ba9e76c352c69c346a6b4ae9a5a41b0f8937ef0455c2c85d84e7caf3ce711cc7711cc7715c77cf3281817b0aa1c412775884a81b1e750b8479fe745742298570625711d4c322214f78bb28843d32d47b64ae99d1d10a3c5a154b3c8038e10a782a9a81c12bc242054ed882e908c848074a3523221388e11b691ccd069d121531b862f2946a55403141370484a10b50a56ec8e89b11410b34fc0cf5e0a44484332021c8a43491c0591567e082c7d119495170b3690594d19532a880038be84c0a5f0081ae64008a37db808eaa784a541c79215c0d29418a103c4ec68c9bf923db11059281088e64204508a78eeb3acf449bb511d08aa22083d9799cd71d0ac8e88a151309b5d90f68384f2a21ceb3f3646c32269eefa010e6600a9c126dd611c10c21b0b264c2f31565279005c21a61a36c78ce6edeb9d7971a966feb90c23c7fb82a1d6bb9f8f969a56312af3e5d0e73172f29f0a6f9633205e371acf81bbbbadc8f655dee65c7cb0159f17208b041dc8805f203581f2f6279dc0036880b61819c88f5f12196c785d8202e17c402b91cad61f43fac8fcb45d130fa1e96c7e576d813d6613b2854a00859601beb19e1270a36c040586a820a187d01ff60bb0e50a184052cb371dcc36b6e3c878d62e3f24c998dfb60a3f470795a66e3386c941b9787ca6c5c9f29352e27d4304ae372228dcd3d788701e3c7c76ceec1e38dc2832cc23cd82905f80c5b931a460bf0aad4b102dcccba0e1f75b868f3864551b4a352c7a40e55a926e97089734dd2e162968e895789c6e2e96b52556289a328de9dc63a5c823b9ae8701dcecde839ce094c9f392830e58230e5a270f1cc41d90126a5021dec9783dd6ab501c498214000709081dd2000184613cfe0015889016025c6c108c36ce31b04603b1c80598361256e234a8d00702d4d4278af36657283a2e83ddb84f2361bcfda6873895e06612870a55884e248b9108a67895f5dfceb79b512bf7af66a4b561f3fa186d1d5a5abd58a76f3ebacd7173d8b7ea4e26bdaab758c753a9ede4b7a8dacf1e3fd86661da33e1dcb1f55f26ab58ec9ff255671857509daac5ed374293cfe7d5df10454692f6c8552a5348cde65eb50c3e8616c9da261f42e6c25b2954ac3e8c50a86503cebb9d2c6d3564b1ccfba53a96174696567164ae35ddd998510a5a1159032f41bc0f44f604a4d80e985a8d04cce501884b9d266584ae97273a803299b06389ca712a69f59883f5c0048ce889732f6c3059c903089c54b0ed7741d52b4016d4e6c3f0da36fb19b0f3805a64749c1f45508d39fa060fa8ffead191191771a422711a591b22f6c6d410da3344cbfd9c6940be187288d47ab344ad3d5a40c3dad45c39476354c8f9ad568626e4dcc1e5513b3c7d5c4ece9502d031dd08d068e1a1a3268e0193470740cc77dcec924064fef848346c36a502b70ce6b6b9ac64f38bb41d86d9e7a0e0502691810d0c67322cc301c1d4322067bff62dee779374ad7713160b861315ae1aab6d18e09463cc8820780a5110f8a7095dd198680b00c2ca9a0410dcf136dc16911a2fe2d75cc855bfab268989214a17cfe948ea034df119599ff3e974b3b2dfaa8bfa3fe8e3609f6e8196e6aa36c6f1be5cba269b6cf336999f929758cbbf8cbe288a5b04fef0c6ad8a451cadd4c4a5b7606cd20ee534aaeaf9219449b4a3c9450d785e28c82f04473530c6d1ad836b9d154df2674069940caccafe0080678d600cf192467cc502b5108360d3499b84fb108bdbe1b14c223e40e7860ea4012c2e3eef39346693629b680f51eef45ee9dceba3c2fdb7b64f5c5eb29c2bab73aeb7d8bb462de7a8f2ccfa09eeedb8d98ee6d67ddc8e69d754f6782f5ed52563d9677ba4be6eaeb22c2ba7723ac7b9789294562de3a13abb36ea41593f37257dff4f19b75f5bbbb788d59f5c8625c8779cc57cf33c8c5d596952d6a8bb87877ce12717157efdeb6c8785ddcc79b6a529092451968b3992ce62e5cc4c4d81e990bd64f67fde4b23d3298d6b7b7beb55ab647b6b98c4cd97626a61471f1d6a58c0917d7d5f7fef2d675f535f272ef2f9787678a6bc8cb8590b2976ba45b224117a490c2683693b5ece54dccbc940b42296b51194aa50338400212b0bc5c0bd4136bf6c84e2e239b8bc8949db6771ea051d9e988760d29b2ddec919966500f3e453229e3c6959554e6883ac516a0fe4561c109071775bf130e664bda52723fa1c433888b324f1fc5f6dd28db6b9af6a4a9dc83bfcf6e3f3f547ea86f5279a4613c807c5c14d8776506491b1c961895a710edce202ca9407a01ee32847906d5f717427abf5ac3a6a5afaf6f271c6602c3b261b91e4165b050974538f174e9c610a24e3f242b1fd287e5bb82e7fc92407c64e5436ad8fc7714343f95f08c62e62fcf9f2ce6bfa38e59691a294b4d1ee2e7650f0e5fa7a4226e092f903b839e1002d1b0f91a69b44918ea3c80d44f54131e5ceb950d3b5251f726e9887abb75700225c8a41945db1934abd88112502aa8561a362f5340b41a11836bbdec5a6b0cae9d18c2234a73444d6a35ac5e8236dd32f5dfcd53084f5cfbd2e7af7e565a669e6211fe3beac2101ef1a882075410755884ae221d8fe45a5047dd6564db2e65b2b3926b41599404775c09ee4055ebd2218d3a7005d7e70dd74ba30e20e109daa05e435136f7349958dea80356f0665d464e4cc82478b35d5791cd552f65ddb7ebaa97c8f44e37c8b39366b7258e90494846a619960068c2d4636afac5c8405d3d4e522a21ed01c279d93ce420a64a18f93484b77f52beb658e90de9252c219d9d1ef44def664aa3424bdc527f4ba7a5ed94dae806f0469fc01b3501de2a80376e086f2e9f45748adbe976ae6b6ffc77efbd9dce288d6894448b3088326d9bcbeda58f6be96eba1906aba2e592a8ccf6ef0bc356ebef2529eba519de7ef00684b720bcd164b593b6a44d096fde45bad2b48e7de0b7d533081ebc90ef4bc07b476a1878f3f1eadbf7f592ccaba35e57b63ba8a368d8d641780bea283a46eb9887f2bc5ac3b6464a6a2949dfb77d734298f44d9bef47d2b49094d99628cdf78561abf567d85685ad36ae90b4586aa1165aea2527de41133de85d97a9a3477d224d976fdcb76ebcf92ddb434ad34bb3a5a58fd29cfe7dafa9d4577648eafaf89cdef7a9e726eea5ef5b7299ee90ae47466fb7e93ca7f775790fdfdd748b703cf5dc7579574d415df4ae8b48f7f045ba8797678a771efaeede2dd2272b6515e51a42c1eddbc9f416da6019066b213dc3308def7582437c6ea8ccf683b7d310c541fd8ee5bcedddb061de4765b8fbc93eed398629e795d3d19c419be44c87a02804445da75c118228b629d45816d16080a59c994de61a30a5769333f286c0090f035b08669836b50e08e5154f2841610adc47750c77585ef1449209cb2b80f0810e85e5154f5cf13ecfbbe2892af28a2852e056c3a6bcfd19a1ce4b599d284ecacc504e532a2f819b2c81b77f3fd8c216b6b0852d6c610b5b403901d504d9a82639a6b8b6ef809598984a0048583fcfd041c6b7d9bfc1c3dcfb974199c8b899090acfcba4617d2368f729a361a10c03a6619ab8a6a7356119339a66021dcf4f4923b1a083134c1982187c10852b64f37dd3b199c4123d3279e5b2fc6120ed81b0e331270cd36178f2f0dee72e0fbbc361ee75b343a451c778db96b75feff208a37062568123a05905b0e4ee77c0681d21cc218e9146373c288d0c29d3ff9ed800ce73865b864784f00d9b0f9a9d3f23e8101e40a677810ce9589e77088f86358f219fecb9a49444b9ed4a75223fffcdb0b4d276332c6de32ac19314c26c934223b25402d2425236a8e3584acc25316f78ef3b9934ddb9677906bcf594b132870b00c90d00770158180961964a73d6b1300935847903d23433e93c7a8625cb2bd20ad542953b84ddeb076ba37aa9e47d5434eac4aeebb6d04ac05d2f7ddddb4ea249a381bd39b7b905eab58fbaae3bac9740ae9328cde9b611edfad953d7755dd799baaeeb38afbfee5dd775db9d4b6dd4422da567a8d4330a857a9e4ba86f2dd430140a256552ddc1ee5bd755708b147869841bb86db5ab5dd740d5e8fbc2b0d6d742d6bb4b30f59aaeb6ab34ac3bedae7fac10ce77f374e4643bea136ce2e27ed425d864bb2eee424899d707ff8def3eab74ec88d2d042ccba349d511ba54c0fef335129d9f785e11de2892dbe4878f1a929e0471ba5bfd913e03edac27b37a2fa675ddbbfafee59d7765d44bcbbdcc8e7e2f2cfae5cae26136f12af6c277db69794e80c77df94104e2b7802853f17c0f274ef3cdf4d97c7730d112fcf94d42da27acb794c0f5b2ecfe92a9f29f6fbb9000e6fe47be89d09faef46bcab2e137defa9e72fec52377fdd513787e0e5d128d9c94ad9276513a3baaeeb3e6fbada993a9f53d79dba9bbaafbbd775dd5d72ea7ab626b69ec9bd340d7b343e4a83ba3cc9f88efa7714f5bc25a84cb52195f16eb23db2b63d3209ee98f88886795d194229fbde777197321777df30ef302ae3bd2343b804a5b9f1ee49cfe38116709648d82b6a420bbcb7a561ab50e82ad2ff92a0329e4cc2de532d08a54ccaa6ccc3f0ee92a6f506a56e4598e269fa6ec3d5bc8797ccf75db5be3c6f2b0c6b961089d26678a588bca45426b711a64816086b87259671e32a528fba944665e8eb7515f178be4b87289d51196a44529993e95e8f0cd56fb088e9dee5f16ebab2ed94c1a8cc6d55a3292910761591f7ee5d9e89d423ab92e69d7e26229cc313bdc97e7622d1775c08e5d0ac6609317d67eb94724ea5d90c77d6d5a3cbfdae07737446876894d219a62eb842a98441ef125ab475bd41edefdc374ec877b9ad696f6d27fdbe7f94c3dee6a1b86da39456019e66589ab084f49b6179b0f6cda84c5b4e687644336a15851cd1acd56a214ad4b0fa4602f7f90c029984c24c817a86b9fb154dfb75b3a00ea8fba911ce87aaf911157d541ad64b4ab89f4afa8a3a76a5e81f51c3be22a279bf222a1cd211c2fc1165aa86307f441f1195a6f964fd610e89d248228040d6e784b823dc9c51472bcadc101157c37d9dec8499b302eecb79633e7733dc5900f7614e44441d151aa5410d75b4aecfcdee02ca88bb025881a02d4420bb0ee0cedd05c0db4cd04ac33a03e13c77c12370089c42a50253161c42fabe3004815216443a02ad1c1d75ace336d0a6eb2678d4b10c1ae17e06ad00ad8046e015dc078d402bace81878a354091e9d546b58c31ad4203b5d262c407f3a8ff7d375193931e1fd74a7b8e426ab5605129132bac9a816e1c12329d3078f5a201078040ea1ba60515b9039f451469406950585056e5492112a8b0d8b50622713675412eea3867ebe093484fb2722dca721c0289034a84945206909648c5bb520092a339750262c619e4158ca2a706e24cc203c5b06d6a8c7aab2c1a4a4b8947476546e3149e77ccfb9c977765e76d6d5639bcd70119ead86f008f5eb589654604a05eedeb4a33d67d7c160b8ebba8ebe72dca494c29033f316983e4978d223a8cca4341448d614089fb450258c3cc6522a90b0a6995605b2861b0a52a65f040a3185905e629a84704b05758cdebe7cad851472a005f8d4e2907e640e27bbb5ccd6c275d6b08e76ddc64d2b80a87882c621a536ca21d53ae6fa30aab92b1d6b2ce0c68233a745f8d30ccf3a66fac97e1f91c97e432e2253f6dd65e4bbe9a62f4bcb340d51ab2cdbbb9b51ddb99b57dcbd9b63bca32eeaab9b636013ad694e47b01887d18a59e16c8ae27414c587374a293da58eaaf01bd3eb6f4eff323065535cf3464caf3772fa77faf7d3bf33617a7d06c12426a68c892945be9fce44bde9a6d7e7989e73fa77c3ce0ba1e9a7a782c29a0f135336f03e4ca85eaffac9745df37b11f0bae6bf9bfe7dbb455eab65027cea9f0daf7aa55b15829898b29d09d543265207dff346540f6f2475d0352f11d5c317513dfc36bb21a9202cfd9d686e4294a67551422d1b4aa84e9490fdbe30a4df90fa9a6e1804d520a776b082941108845aa2d16297b6bac5eaf31bf824d3d15ddce3ba9411a681732ac8c54d05ad2e9884baa1775baf17163e154469c0ef0bc356eb07895234a1a14eaca6a35412ee9b8eda84847bbb75a961209865e6d525300935b3a8595daa5bd4a5ba54b740cd3850094c8a2205e507f5b3519aef0bc356ebafdf05701f0c9fb245568f1d660ee3575fe1dc2e6946c3c6d7d0da470303961beb41093a66fdd29cd71cebdd3c7b37ffedc437c7a27532f18d9df8b4af6339a7f76af0ed20870a4c73602065e873de81363997467889734c4161f66a5972929ac475081badae8e22aa8e9598870f2b31ce38be9e503e6c85c2faf89ae3937c355eb4acf1888ece6b9ce36a1c75cee395c7385e47c74e3cdaf99ae368c571ac28940f3bb14e0e0f1e97328798070f1e0f411b1e93c57a92af842039eb628ecd3c38e727d02607c783b0ae1ca7f11cbf615d392e653d1c8875f9e0c36d58970f97b21befb01cf9cd6b9724ae9e67e0fcb3befa9f753e8e17675ed6c7679dfbfa78d6f3c413e7eef4869f2463de607db5e29167b0ae7810fc71c2230adca173d6bb9a388ea2f8191d036dc40ada4cfb978c79638e9906ce419cb5c3bcf1ba0f910821406e6e3c9e889b7b06665d760cc87310f785f3837511c7ba5eff5741c68b37f7182f0a192fb22e63de10cfba33700ee27f9e8157d7b179629da3c01d3817ef12f1ac579cbbc3cce141dc9dc6411c07e79e8230fd4562c155b4dccb4e3ce79cf32fd6dd61e6f02b7e5a193387f91aeac3ae0ec4f2b80ece67c5b9f8ac33ea8857ce1bacfafa5f1f9fc71d660ee2716e4d8fd7f5cf8b9fa38feb9c876d13b863fc121f37cf0f1482c2e377983746f1abd5ea2dd066753b6f277e8d2fcb61d17278c4e3377c2b7166dee9dbdc83ff2a5b76aaaeaeeb07ebabef607d7557efc12b9bc5e3bcde83452bf1ebee307398d7b179c3f3c676b58e61d961de90784aec32e306c767113f6273cedd695cc4eb5266e338aeeb751a7fbdab71f1148b1006165f231c7f199312365efcca04038f376d55c440c83c4be2234c595670154c5f64c514988aa629428941d6a775fd60c5a813d6307ad78f1a172fde257f8d4b4cb5804d41a586ed841a16e5c96dec27a5656c7ab0396810eac00a2803717cd97865401c5fe264550d8caff4a3e28395d8c372c37e527cb89f901361ee6a23fdcb7a501ae68347bb38572c1d5c417584f9e435ddd3c36ddc786e61d6cde293bc077bc3dab052ca6451bc92d75051090e2b7907da24b93442254994b8c4f7f800506f200f8995dc1d0e23f906ee407224f764837085649a85e273c55930bdec072c981e881aa6afb982e95f054b01c24afc8395586625c656e2db0ed7d8891bdcd1d84465756dee80be293e222867f88a3ad65ac0f49f15dcc809218b94a1f19eac988a6414c65b6bad272d429d9b9cf9c249028fa2288e7667c3abd5c7f1a2288aff6899a0bea10fc77e54bea22fc77e46df91fdacd09316e148d4b1ce02a6af54a48d89e738ca711cab1862b18545f1f4d8069c3d5a57c3aef98967c8d0225c9de55511de08ad58b77a593a9684f8f92249ac3e5ebc30ecd5963089815f8f8197b0febaf8cc24065e9273d6c59c9c1c9b27cef9119b7bf091571b9627091bf3489e378c739c699788cf93823afe0367de2c5e8989e76fbefa68917c5a241791d40dd5e327ee71d6caa124f8e3f5d1e618dfd8921d139f6178143f9e82364d70c03bf31353f00787e7eaca86896ff007978f9c759debbca625d6b1de91d70554341ec3c3c259d1307a97781a176fc3bac4fb0955d183210b84393f6d7ebcac4f282b3993d57f09fe487224dfd06a759ce3dcdcdc9c8247aec432c9f388ddb13aceea3776a7f16a89922351f29bd775845e1fbab1f536ff38af374fcc9a177bf02f7e5a2638bfc1b9fd863e219ce3fc88948e1d11ca1173724e411eafa13712e7d89dc638e76177e0fcc8c5b97962253709244ff29ad6b134beb248207992571a149405421a7782492e92af62609d4bd04647fca47c434d86d5fb0b21eb22056dc671328981573ab666511285bab26ceec199f5f92ac1f1e69e1c038bcf480e811e9c336b9212ea08e17cce73bd4b728ee44b72ae938304c9738e24061e933a469f5b7dd35fb3eed558d64bf241c8f2b0b02ecee58df88b7f5d82acd7b4b8c2b1f9bbcd8f817372746c141baf599ac6c64ac74a5c73acc435cb6a05ae1fe2c78b1f458b04ebb26197ab8d368b17c7fb0979589ae693d232289487e513ca81ca0c387bb44efc341985e26ddc9aa526ddd921358c4e511445918a0c70664da37c42a11fc9f1a17809ce5f378ef379d176483a6ef2875fafd78ed559acb13b8a62e3b7b265c61afab2381f2dce6f6c1e8fb3435d505a86e25cd778d405901cc9e990f0e591dfdcbce19b1c1f954e40c351f26f26a8b4baf4e3f41b0b44ef9546e9cacba261b01c3972d474a5608ff139727c6573e4a893882268d4f0b2f096a48df1d4e652def86833077a1bdabcf109c91ce869e3ea8305e2386ccd6b58d969d81f5e849d27c2e6588dd7f19aae40581f5e63715c666bfc074be3d316f11c96888f55a84681a944d1b15c691fedeb41236541ea864255091b8baf55e9ac25e37fd6f3865949ff8e9a0585aa124e2c22758c76471dd24891a4f8a4b0fef26a4a8e335fb62e75351484400ee4e22b105a870509922bb9f943f2df1c22f9f809c919dad5bcf1d2ae46eb923a2c5dadab75b5b10ae9d4a5ba843202aa08e11521cac8878fe3f8f8f4f1150d4584503c6a08a178941042f1282b4291359e752bad61acbf943cbf5eafe7fa52f252f29aafd54bc9ffaac456a15aeb95d8bcd65a95946425cf1bfeff5a9bcad5375007f8e357c9575689925b952410e13f7e03858cff78d678d6ebc89ae3959878f5d7c5b3ecbfb2ff06dafcbe6c15720fb4a9793da126ae53d621af69206ccd7fb0f3a395b8ab0db9b9e63fe41e3cde66bc4b6a84d4fc0759cd2596c92e8db0465653730fec51737178208d3c5fb36406b135b7cbf19a23c7a511ce1c735e206e8705ac117a79493aac870535beeeeaac676fa96ed12c4f88c55ab1682caf26a4e4fe7a1e6d641d8a50cb48eb989762e5f0f8931c67050489a2b4270a25bf9416c29be3fbb04e26fe61b39705d30761f3468fc43a993c6c0f1b9b3d2d30fd118b0fc4ba7860200da39d15aa454e922186d0c1b935a963e22b949a54b3348d94dd4afb2734c4106618c2e6d08695326cc37e525a861e5ff1e3ad3421d166f1ab59695ead0acd396d15aab40aa5d2a65769d9cb285a8d8a4ce86a36fca74665baa16e8a8ea8a3d2157556705530a59c154c29e5b058ca65c19453c294cb0253facc6db184e937234a6986b49c86de77aadb290afc935ab51009d323dad149d493ce886632775030a554c62bc728da7c2c8ead5618b26e1eab50a5bd4211edeba3ad423b1c1647511c698f220f5240bdda2cccade4d5fe4f70c805a88d0a45fc3ceb661ecc122f153f6fa555517c8572d156a19dc66315aab47164891b68c39a9d37bcd3f8236265b1616b9696a1bf2cf12e166bfc27f44931fab0344d9da208532c059cbfa3da17b6c0f9bbf25981e959a3687b4ca11664621df3622b751650e0027c0cc2141f5c80c794a86c98285ec671c495d8a08eb10a75ece6e6896faef3fce5b46efe7a7dd94a834238b1f89b1b96cdbfa89323e2b0ecc862bd709e3ffc7add3cb7f0eb75ee13c2b9f91bbfbae3cd3b1c5e5dc66fae101864751d3e5ad6cd1b1ec7df9ab4d3d8dadbcfc3a84a35761e2c4f8f8c87f1721c3fe3acaf6ede691cfb8c5330c878a314e00d0a29c063516cdc266c9c87d39c9be56963a7b1c8cdb6221a56185549729a6b0c81d4b1ace44ac77210b58e651c583a9691e423593a9675728efb9045c7329013b1d4b1ece3456cc103470e5b8f7cb01f120efb01d5b0de110deb01f9f0f122681c089013e1c375747ee4c8912079103f5c09930ff18027d9a1c3e6db0c88d36f3e38a7df7e724ebf3981a363b947aed982581dcbb28dd6b1fc6383d2b1ac6413ea581ee2cf497e13e4f4db141dcb453cc7e937a28e65225ee3f41b95206208b1b5e833fa665e51c3e881b0deac61f44458d930225ec3ca86d57811453c478e2749f22186b81225972571dce4354e8e0388061cc7d2a22256fc301a5245881fc04ac772cec7d38c73d6958e65037c559b583a9683fc95d4b12ce4cfd2b14ce4374a08383dcda263b9c765a7191fc7e9e9161dcbb26135af431f91d25087ad6c183e0e2b1b86e33dac6c580fd98958d93022176265c3843c88950d0b720358d930081cc7ca86e13cc7ca86e55c082b1bb6e443ac6c9803fec3ca8621f1638810a7d900a7cf452e9ee6037c3c3572d6e969141dcb08f8eaf494d6b19c8043e95836e2afd353a18e6505fca77901bf397d942767c069def911a7394a0f8fc069ae52a678046c15dab115ca11f693c2005b17603d0558cf08eb25c07a35cf88f50e60bd22d63380edb2348c5e08db0db11d96aed6301f7e2ed43ed8b83c9bccc6e98dd3275752991d6437af88668e9b6118b50f4f7cf0e1e6191f52fbf0e43ddc1d9e3f1c37b76adc0cbb711af7c67250381a170517d430283820ce09aed23a56e3f4154ac7689c1e21a5630c18ea588ed3d7a28ef970fa7ad4311c97bdc7cdab051cdfdc52c06b6e8e29a2d28c38119596800751693507526945dc47a511711e37e3e0e1e3404eef65e95810a7f7943ad6e374c869911f0f520b72213521275223722535213e44cd004f523bc091d48cfc480d01d7b9198792d3214e939c2239bd37d4b123a737a7f78e3ab6bace736e5ee51ce7e616ce217073ccefe46618af37b91996c4cd31587fc0cd33987834f13fdc8cc3c9e93b2c1d83c0e9bba48eed9cbecbd2b126a7499cde9b758cc9e90f7fc091b87985c41d7073cb015f7273cc92e79b6134e06658030ec4cd3180b8cdcd336caee3661a3877351ddf71338e1bd686e584a8cccd3d78c79358253ccfb14726f097bd59e2a35dd9271e1ec28eaf21ce8023af91c4c90881d7cd10370379922024502347021438129e21901c390d1e1f47f0f0d8b939c987e0698284070fcf2bc9cd3c3c1ff7c957e33ef968f8e0f124144872b39223a1401224f79902e46620a74181206e0ee23e28700403ee3385c7cd3b4fa2e4e62647f2218e3c470212c85122812124a06488fb4c3972338fe748c087046ad070722510f810d779f244e7399e1cc9b9cf94249e3ce0c9cd91273a370b79ce1305e4b8792281e34c4007e701974de0c70226d003899b73ae3301074c00e70137cbde6302e1045e3937f7f07edc279f02ee934f013f7a3c470239371f398e047270ee3325c8cd41ae000908b959c87f48e062c067ca0214709f293d6e46e239476e76c071ae23fb6efecaf13aa27344e73e536437f7788e1f7f3dc9214be2471e709ddf8eaf1bdf8d9bfb4c61b2e4c65f3edcb8b94fc2042cf9ebc9e712c74b103162897cf3eb5fa2014bcc25f01246dc67caeb6622def711f9ebc9ebe69bcffb04f5f29922c4cd42dc882706b8d9004fc0938b019f294624e03e5388dc9cffbab9b9019fff92fbe4c31f111f56bf19ff9bdf67ca909b879c08be99c87df001df67caea6626bf196f5ef29f6559466e56e24420e06623112002c759ac8f4adc8c8047c0c889202202f79982e33ef1f0cdab8f372eda271e8ed2c377809b717c35363de8107b106b7ac07173cd8be8a188fb4c196fb6f1a68cf79982809b0ff022ee93cfc8cd457c3aee13148e7263146f8ce27da61ce06623d771a3889b1170226e1441c47da6d8dc6cf351c7c5b3ee130f47012202f7c957f31d000710f7096a75331067dd27a815eb3e538adc5ce407b071f3018ee33e0931067ca6e0a8b9cf941f6efee12b206e066207024e9a24f100241cc064496ec011b68833c012f105d822ae004bc48db045dc28369e004bc4bd9c12bbfa1096f524763c122bfe885d5dc7b29e63033409dbb8d9c38d3473fb0a50c7ec670eb7655c1d6e67d9e1ca86a11e2bc0ed2c6a5cd930d3678cdb5b4c216d24491b300885a80f1212121212520b8197bbf414e97d336c2e9d755b2e0cc7206c2bf6e64fbc396c996e7ebd262cd2c6fce7d29d4b346efe686e0e6337b7f00b1e6e3e7e31e366187ef186226d4cdc37c37e647a27b2082b0183b3a7048cba0477bcd6b08635e02634dec4f426f54db83719c09b6c07d7b0863574141deb1ba3f94e8779f8a414a6bfd361fbb96d2d34f4e918e8c2dafe76a263dc75b2c3c24d5418bc939d14cee14e9468dc646e81b9ef7498009f6fa08ed5eb6467859be4c0f54e765058873b5162c34da61206bfb361199f6f283a66ba4e76443ce34e764eb80077a244879bcc225cbfd378874f548ba89b7e3a36006ee64e763e1ce303e8188deb64a7859b504c73e94e88373993ba934ecea4bef3614ecea43e1fb353cea4ce836d3993fa0cebc999d40b603f3993fa0ed6246752aff6246752d7c15639939a491db4a09c493d079b9233a913c0aae44c2af519db2267528f61453993fa00ac8b9c49cda4ceb2a39c495d65597226f5cdbec899d45b6c4bcea41e5a177226756a61e44cea30d6256752b73646cea4def6859c495db436c899d451f625675237d9cb99941a300e57ca99d45316c66526908908cfc36c46dde07209c0e67ad703f02530106e973b1deb8b042a89255c56e200d80c1ec675d1735e94d3bdd3761d60317899585c01705df47a3e210e3c40e4f47bd3f7d1219446ca906a3249ca5cb8b64f59ebb54668fa3139610232fd00794134212028a074cc482a8146ca6453f6c940c64c3e80c10e64acfeb3c18ca53e4d341900619640c2666abe4e17e0f92f0793053190362609e4cc149a3726148722050af0bc38801b0ce085830d70b041a606322f6043b0981b6870834b003310004c00a604c0050c29305a009001005e6e0c2ecbc2c08e17faea15e5e562c30b6c105fb8e0454b0c9498d0d502970a86053029172b7001b6682dd48b0a5e2a2b05acd328c5685a45b1fa5c50e0e2892710bb1613b46090c353478841d5a62281b491a2a911481b20063fa19036507286766c7e12467fc21f6ec2d3e3c3e0950df3b668980b7abda596e599b2d33d2324af4ac79e84b40313e06cfa790294d39685f093888a0a82a8ccbcc10905d1a862257e796992c3939e109e34941744e7137328688a808b019e3a28cd89fbec1ba5752ad432db2744650eb4e302a61f6a0aead8cb33ca0464faa942a00da5db37f4f239bd204ae32d09cd1b1c52509010184a555bfaaea19b0dbfa5725079b1a98fb6a3d2b0ef9b52f8a82063e31564acda60830daf1bca442945fa53afb75d51ca76449f1d9586cd0fc9f4217d481c922cc2790285400432f6f2f95902191b3f3f51206340ad5618c650cf2846c68036e06febbd254ae319510e69dee87e660ef31c129e9fe029376fea94689725a90261fe3aa4efca57a3b44d07bf1bc88f061236ff623f1918d1f9ee67def884660ef3335c3d7f33b76781f0abe54fe8bbf221791508b3e9e7fbe998e9f326274c40d4046ea275e2e1fc096555cc04ca2a9c3fa409f4ba790e11154d233cdf1175543aa604d71585293b718e1b810dd3bb53c11ee0b76e0d619f862defd52768e332ed8b6b68c2d810c4f5debebdf87673cce90d02f3be33a849127849fdf67af0f56dc1535bdfa090d4e941dbaf26537da5b55ed0f494cdf5e17ddcf44c6fba2929562d2f1857bf5af187f8eda0dd4e6d4e0253fa5a6dea5bea75823e7ab0351d654d471dc5d3077ba06e7ad581ba49e0bea9a63307f298f8076da6176f4a8af01b28e4dfee921fbc4b5edf5eedceb6e1dfedf5f014fcd1d2e36583ebf4c5dd622e0de2ba796298e6ced9ad61db56dff5d67120ed19f472f30e9d410d037a51a2600feed696d7fa17eea96e0de176c17b600f0e1ccf6df687e92575734f1221e64013ea2eac6c19d4cd1f78ee2d7bb2b2654c377fe35f1e2a31f17697bcbcbec11f2daf9f608f24f0964a6d4f6d5bea82df38bc647b7d4d7db379268139140abc09bc5ceae0959bad7fb112d7c69c65bd9ade23654a7d7b2af5ad619b10500798bab9095c1fdec43d7ceec1f8c5b6b06c1e82c38f362781c3090575b92d5b2ec11e236e31fd8036f76090e6b4b5dcf4a386b0e54ed8bce1a62ecabd9a80ba86b6f0987e3a967a6ca69efad734a737a16ba8e950652598aa9d795cdb4fbf13e8e0bb3484a0e9281b85de9d3edd0945cbcc9baeab7f2710cdf433bd16a5994fccb7be09246766d86d31813aececcaf4b334b79e3fde925213b4e7a589eef99ae81eb089d963324d2cc2808620fcc2d2e80c53c0b2e543d17397b67bd8df1786add631fd0b55c38dfb70fe308afbb47987c3db6548eb86a2f2c6766ea3971fdda494526e5786f4a4a81206f71932a4d10da5f48b2163c60ee10c7a79da3d751a1d33dd968c899f8f91a3bc51335b64cce5f327195b7d9eca94bc0184276f309939d04fd8cc81729e5dd2346448119a5e851841228d38a261f43800813a3d93490f3b9da2283d0fd5ada1b3864a266419054cab802995d1b1eff43368ccfee665cfebfad17d7ec2d81a46e96170db6a7a4f28c9eebe8c2e62d2b12c03081933bcd8e9f9c529ebcbaa5a6fc0e68c99376230a981cd1b328e6131aa80af8085dc09b8ff6181fb9ec422a3502399100410794536a1e85df8ebc585970d366cc186172f925ec4c46821c6e5ca820b06060b302e5c6071d16a5da1f5f262851716ab0aac71ac8dab1515562e2e537011452cc496962b2d61288550a58a822a9582420a04914014ea09a85a9d504fa7269c4c262ba6ef63c2e7794bf030875bced0c61c6e39c361ee42a48d4dced00df783a09462ee417a823a1a730782e50c95b329ee5ada68d0034ad8bbe7b9300ac316584a3c83b06b35dc12862c581a85e10ace014ba330486927ba6b3f4e4ce9eed3bfa6094f9f49492e22dbfb37dbfd9932d3fb86373e19c82133fd67cabe4b2a53d33f33005f2eee65e9980df7586f1db4e26b84e06bd8305dc85a236c015b5e6a05a1e9dfe96950196fc9e9122f4181259658957bb0a872015e147f025d6684462ad02606e94ac3bcbb5cffc020a7bbc403838877c9c99e6e0b8f1325c2efbcb8ea822eeee2283048eabeaa7a30e8fa0bdbe48597c45ce2d03679e198b7d825a7bb2eda977561e7518c04ffa1291ae6ddf09a2eb2523f5088f8d3cda77ba010d5c19bf3e942a007874f5df57a0a9fb2f34510979b4f1f182495baeaaaf02adb484736f32c11df229ec2133825ec242c3597eeaebdf05e5fbcd8583fb17e6a7961f38b17b517b6936a2f5e60a925bd52a9138d42df7a8342583f8137bc4121e26cf9e966f142a007bf38f83a413175f04b3eb8e5e26b87026dcf0d073750482a88eae6d333f896b780df40212f7a887f7133280a200020f8d04e5ca780aad10717789d1899ef1bb94cf4e765627e3b13f34e499d89fe76a78041c4b7bca66097a090fbf012fcf1e22f2e41173075015c8242ec533f5e9eba4b4e7f3908f39a0661b68764271e9c61fc86c3d81ff62fd7c5feb87fd1f2d1e61e1897f8865f1837c008806d28305ade02ee686901c02706c075fdb8b7bfb7893c2c341cb88cfe740bda9c903a06fe74d5c5b7958e1dd50bda88a2cab69c5a3c7befd55a7182424e17533fb5dc480b1f2c8d96b2c0b96bd87b0b4ba3a52b78a9cad210b636db87297c9a46ef40212d10e80992ba78d036cdda16525de2dc34ecbd9a50d6ca289cd850d64a4cc11eaa9f2e553d52174f57a812e0049e5e9c5e840f2fde9cba13cba5762a5119efb54ed0886a4665bcd7f40602994b14069412e6fe4972620908090a2b828c3a8a8ee589057b4b3da334debcf799344fdf4e776597ec900d1291b2beb279c813a98388a73b6b41c0bb04fce9a71b99210b09f6385d7533047a2ede6905968efdaec018787f59251ac3dc06ab44e397d7694469fa277f5e9525f14af1a79683177f3a3d358d1ae6bd672d76e76433f8d361522a08771aabc09e2dd9b9c50d42f042c0a7b6e858ea2ad138754fe5a554a914088277891844bcf3a861d38a8679483d7339f8b9c5e9debdd716d0063c6df8248aa7f7cf5c326a27bcd343d0e634bd4fef3deb98eadeebe9c541abc4c4e04f96c9e9a7bfb03f28069fb24c52e0273ebd86c6fc641bc75c06c886b9bca61ba7522a08612ef1e921cc2508a407c3b870e142fcc462eb2da04d6bdbe91d2cd6f889c7bb44bcead38a1418447c056d544f813653a861de53a08d6881066dde30b8026d720f4e5db60fb3fe767d64f3201e7c0aec91baf974d5552ddb14d78f89539f3875d0e6253b8d5517df58c07b6fef1e288260ef389daeebc7c4aa4fac12ef1c6a98f749d430efa19d541ae65d656751c3bc833108ab37b7006510e6fe21c2defb87d2cc9f254a3383a47721212926d3174bdd285f505014dddbf6d3291803eff3673ae15db60fa89ffed59f8e6a1faa9322f3f4f2f0b4e6954165bc3b1142ca4e65bc371142cafa5ba6e1bd56cb83ca784759a3d7676974336526efa9152075ff2cf70912c1475019ef29178449437c96a032a7d39fee82b0bb2e90bb2ef0ba867453c67dca4ebfaed37511e9ed464ebd9bac947d76ca9438021481eb3a2b6d1845c23ad5e10b49639a7721635b147600650878a2244d8bcacc576efb68b8cfe3285d85f4f68ce93284dbb7bbbd61b3af6cc922af053d9bcd3778fb9c9333d953198ee32668d35d823d6048c03e393f2ecacf65f43601934de9b97509aca8a20756700d2cab88a2846b95285391389eae9c4e490d839151334ca3e8681d50074567e503e1e6019ccbfae64488e34307c97c45cdc2550f7f92648b86514a86d0c66f3c7f42756975d1cef186fd845ef733923347a1f891066545fbff7a7dcd247ae27723e6b11b472fc9ab7958bc241f6c3c8bd74bba5e6dbb79ce9c56e749ac131d5405c22186a025511a1b3a486c85d2301bf713d2f986c471847d43e28e4fcad045f1e61d5a6fab100d0ab8635e878833ad785f3a3a365ce2732ee648598e0d2bda4a7b22dcae7862690ff6e273ac488700ea18776891f323b90e1dc2cd6f5614d4f1fabce23fa74b7489e771f17e42492e92233a57988a10d6d01c8b731e56bc0f6b239e656f8774bba386e55c96cd1b66fdab9baf56af8fe357e36fe6f8d597ac6e56375fad6ea6384ef146143b717ce19cf53a1532d020bc70441ccb7a87c4b2dd51a5dd0c31c4cdcdcdc5d71ae18af5158bf557d68bc53aebff5fafd7cb0a0d84a30b6baa61f5f9d761709e5faff9d797bcbef26a38a75f1224f7858363bfa14fe893f2e358894f7825bdd51c63394774726e2e5e978e897fc5e789610c418508387bb42eeb686cea704dfbb0138b49805c82432e90c3068e27df51c346cb04f5556918bd95222b60e09925094bed4ac3a8f85ba17c485f0873fd8c1a56d4301854f0140dbb5214e79cb3c6c573a08d6873fac3e9bf5ac7f063409cd6c84ee3d1684da232552e154c6b52ed7a54af54a15a548daa953a54a914f1afc808f7693938407e237eb4ac998333bd9a579bb3d2727026eb35bd4a9b07f29b3b278edfae6c11af35c29c9bfceb9c9ec37fce75acc7e3d711f22fd1b90f1d281f6d0f16459c9b7b30ceab94124b90c56265f13b8d57a3153fc1b9fa68c5b3ec74b13e034b2cb8a6ab685f5f5919338731ace2a8044cb4e6b19c664ed108000100089314002030140e8805c3d1783c0da340a81f14800f8ebe50724e1a87418c42c818838c21000000000000000406240000662421e8bb41e3844c621174d3fab92919265174fcb41565f0fda040b64f12753bc18124c6c0e76d44fd242c124b9648c45f3abc211101c1bac0721ad259fed6caa33a180dfd416ff3688832def1331e2987ae96c8d0b1a354b9d6478288bc4a3b1f64455baffcfa3079495f0b709f6489b475f03d848db3cc9ca1ff572f2517e0427a7bb84d7dcc654a16bb52b141b98b5e6490560065ffeb31e9433d530531f5250f03f5450710396c37a8bab0001e0f5d2f2f0ca457821c636c6e1674d0b1c583e5a20080b423a731b5574975c5e9a91c7d388882b210b1bb9b78eee16e25eec358dd8afab7f558e3fe7defff29fcf1f13fbc3bc7de2a6e03369bd4d8c6e18ebcd4dcfd0f658f43aec85f2f867fa30794b395855c5f33fd27dcab0a0a1cfb8889ca91a5e8dc869e7f8458fd2cce06fa650970d76f15fbe1ae9761d8a133259a0d045f3189c150627baaa122dba91cb6361567b75232c5ef13e1db02e1f1800c833528edc2222f72148792de4693a3a21410c117eb1aa8d0f7bf7b0f382f90e46b86aef46b1e138bcad72cd0bdf97ce907eff3909c371fc7cff62baf75c5558e9958ba84269a9ef31c46ef4b991c7ec50f1ce39c5864fc053ed1117f7c1f8014535389fd8b81e9a68fa18bd6864019af3547d78cb1f60e87057f172f1ff905ee7f3207c40fc79ab94c99924f8a2fb7514c90ed5829324093e8e414fe1a752a6c4fece1ac5bbb51b0a42419855444f74dc337d986d28e2afca14480d5ccb9c16bfa828b3434358c27111e796a837c82a3ecad744ed50f46fcdbb05c63ec0237e9b528d4353b13d8b4510166a522c4a2c6c0420b318b88a1161541565a406c640c19b428b228116a2311cca445c0468d90858a62861283362ac0ac548458d418586821661131d4a22268ec40c5f2e7f182a2427af58a898d5687d84c8d7fdbf555ab91518b15ed251c561859678afb997173b048cff66d1e1938823f255a1a2b3c302f50f2895f3607708b83090722d415ad9224ab3374f75d62cef5715df0073c982fd8eee03267054c06e60996cbf45ee5101bd045c9f71c4c9d7e1d7586cc0477154e830382ebfab54839a756ea65de90b5e041a4c6ffaed96d6060aa8a23f6cacd1e99c07615c1bb49508e0128382e0ff5138337a3ea320feb11608146a9be60864afc7ba337ce2210860d3ad1b87cbb3867812d359ce96c1fba0a534902109c1f139b427984d9fb014b897a1a77fb5eb080564358d9afa9aff1ad35128628caae041e40c5d9a3c5a3333988399f9394aac938ee5ab1ca32da6a69bd48d2661ce129102092d669cca5a111af9dad02069695255b3196e72619319935c4845071c12511732142a10cba625878607cc9c34148710cdb8af2d3aa2c8a103613aaee387400b9286183d9abd5cdfd26acce9f221e7dc559abb487d5800b8342f60735cfcb520d7059f85ce78f3b43c6de21d3ce2cf27498ab2a004f71f679afb579ef4c2da5af74241a15e779ec6dfcf598c8e2b33f2f8d0bd266f65d7651e4e11c118069624f64a553daa4f47b2bf34e0748be83fc39298f9142a635c90e1d7df2aa43af0c0574e99bb2f3806b280e51abc83d229c67d211097dcbb27ffd51f18713088406ef6f29f30673723fe5fa60e529a4cd0fb3047b06c98b3dd81245b3780ba1587b62b7e9ac93571fa369297628db0c36f5b566ee655ab24101a6d0f47b5692397f10cfe2f5f22bcc2f7f0cb6f40a9457cacf0fe10c1b4354b0fd06ac5b3c9a7831685c77b899ba4a6f9f43a7da6b3849b2c453ba0e9e02fd906c46f53a058615c5c2b33a1b6154026adcf8e08cb8774bb4ba8e70a100521fbbe34259f1fd3a38a26604e44bc00926e00e1ee26788d758a67cdde4081374876b9f3f420c15880b45ff2f5fcd7e51086501d53c8368180382adfdd326ecef8bfc3b3ae3992280450cd30481162abbc93f303db4189fc182d9074e46b3b7fc577388a88d8c0599f162f1734249ae3f7ce4f2554bbb762396b19987d1f83b9d994e26265caeae608c890a6ca7113436ccc8e85e8e4c2f22fa1c0b93bf48b02331e9cafdbc4469651230cf9ddeaf079d00abf309b8f03b0553fa26df443bd522623419de18b59bf221b5d00d3c996e4a9857bcff31629f9a2ee97495da84cddba3b4edc5897bb4a70ed8915e8a52a5bc03b86073fcd6e2e09d731d5227b070aa6e117e8703290d0e4ae6b51846a78fc3214b12ebcb25a1cb84de31598b62892351856b87dee792e9f913ecbfbeb91f5e6a3ad6db3b7e35295e9ddc030f0a17b0530c4088decba31efe0cebd04d54bc31be9d0f97c4a2657d43fe36571b09be6f82250633c899564ce2508a72e8fb4d92ba21e60c37484abd4c719b4fdfc78da408435d00b08bfbe5cdd35b1b2633ab54a498f26fc6f53a52f7617384b444bee59c60b4f2da6fc1494f4da2b1db4841f74e2788e6f26bba00b831cd6ff9f396c13dc4040785542257eb51ba50ff97de299107d10ee9c3ad17cc8a0cc836e39252d8e96551cad7e01461392532fe6c705f1105564bc72cb8b4528d42e8b3049e6cf634b76cf8ba17a0ed0c468db8277a46a5e8821b8103dd5bcd85f444e017e6915503d965cf6797d7e540a7d30172c0d04a3157fc86ea40f7966dda6b4776e1e72465098ad02ad6a92bd334998464cf23aed8cf5974fbd1e62a5130d1bc740a13f137b29031b980454962b0610dfaf5f87d7b946a91014de859803fdec6bff61a38a8a66775a881720021a431b49a4a4acf8c13b15c008d1ab5e4d68cc1db78d701dc1f3faa41684f222da4a98456b3a4fccbe098b1d17801d1634b63d2b3b5e45c3f5a4492e04cc335b65e6c474dc67c5c44115976173167449a4e93d50bf1f15fc5e680e5ed845b789c6956c471fb7e8cc071a6dc30ac6f5e6fe4d67f3f9e2e8b134df6c97e9dc17c4fa30abc8d05b42b5dc36f1a426a1333744ef02028964e3f33c67dfc8db39f58fbc99ae380b23575a934d94137a2a4ad4a2ed36e8918546c80d89aa0ce178c354fb2b712bab68c90ad501cf7c9c804bff420281c53007dee1d852a40a23984770f5b358a85fc5ee9477f48dfcf3014693dff3ab9a9a3b9b7d5bb8e45dfbae1b81c5870aa8fcef648a7101c35e01cc655562c4e9335ca63b73e38726365c8245f537e41505bd2f03eb2fd29f9361b1893443266909f781b04858e6c01ab8b6a09e6946d74993e1a22f8af03105292150ddd9cc357bd67e0fcd8e4a81b1a3d644b54bb8f952d85bc45a62a62dda1206044f02020e92a11448d688345f6532a8ef28cd8b528b5dce7350b72c72b24f0c82a2a124b94a97f3d667229cc38ae5810e401fa63b607f65e32bde47269a9af371c77e262b4a5b4ab9c5276787ddc5a2d35b7e437aecb6b72703fc17a74295eacc2f89e41c1725fcc17b2f06d6887730ed7086a5dd50ed15aaf46e9b8cc74697183f2d23c268000fc56d80ab4970d8318bf2d9a0c2c15e499becaf083492b5690fdedfde21baa6fe002cc66c917025e340152dadf12e95446b8f51d364aa07059c7517496188c334f9865a002691c740c4dd6957c56dceae71cd9c6e8a28c2e50e4a1a9b8ca03a178b380f55d30d990ea33f0a16e84dd117a2c024e0d26d07762b1341db66700586951fcc7a3af5e117f5454a598089ef83c76ca95e1fbc38393298a0e8a994117a5f93cb03a00befd0b2e02fc809a796ce2a750c8f290c9cd612f3fdc73a04a20cda96cb0cdab80e7a8bece0d7efb9cdf9f6f589b2cbf7654a5e9745d3d68e837a7c225f798a73251c88431205d5d30c0cc8dfbe3665df525138fd59a0ed5b8483a661ade4c089b11fd07ae335e3cd07eac43e7c9d833c5faae204f3beb4334c0cc6c4eee50b29b9b2cac39546da898ce9049231eba225317d99690fb81163570c15784cddc65437503cce46481d7141f18b94b04e0d10ae550e0a464c12a5c6881338d39f9c06f53abc32df2e08e3259d19c0ca81a9784bfeb1313c64f16acbb7a0d9e9bed6131b0a6ad892951574d268e799f89c1d5011e1f2eeba0bb7dcce68566b605ef3a9da5068c61af38fbd2d0bccd416154c77040520f947fb9aa6be2755384c8d49d53005dbce5616d723c6212318dc490cc8a005d88c3d295e3ef8e0560c3c6be675077de068318acf31eaf390c3d40c19414980ef77428fa8e31bcd3c1b803cb6ff9800934587142eba19fc519871bc7d80b457d56401c6b4230dff31f6c2092f704f38270cd1dccc18e5fea49a667eae42ac5aa2ae606e7d0673567b0bcd08b853d12b0c3791605ea052b8ec0a2dc51109763efe7807f35e18223f502b4e65361fb4a879ea230c33ec1a9df4e99ba30b5aa8e3f0987da3706e3ff5bfa0e039eba75ac8e5131e5708ccb2008aa27ed40e1a04de41d41883aab1b80e232534e1c42ca545f1880ea43bb40385213f54630a0cee58680b89a942b863031d50f0681faa42e288cb441bd030c9173752150ac66e28a8386ef262b0ca4b10057a49702b1e637c259f726bc60da022a44c9489524f568c35a45737995997eff0a5bf7d82d45d48b87c0c50753671453f677bf57fcc7b00955e48b53a268edd761c4ed48a3055d9e644b49ea6e42982c40c0a7bcc5c06aee964c9953822d6c1264501cf82f013de4d2f45c11892c2d9d31c4fe528c0723001180327cbcd9b8061cb70d7ed4d3992d30497555e5f636e56a68b9a94710702b51731c73098553ab55e36e99060a5cc9ed3de9d747a3113a86e3b92bd9d9333aca170720c22dd6dbc56eb57febc4b06eeb2b7e96c45fbee8fd31812a8ba97453615cb7ffe4b8b983d3d67e5cd601d97c168eb94f4689b023e3edc0afb474879d3d279c511cf280eba542db97c972b826bcf8b8de14d11d0adb59bc7a04431365a506eb76e8bd026b5bbd571f01c080d4671fafd41aa8244b28e02743681343430bfe127edef6bb8b8956964eabe18595edb59962ee16ae7e0bb9f3ca73de3912270d4a92d0080454540dc0cf0178e4a06b13e38294e2468cc46c67be31e8b752a86e48e37838987e69fceab0c7451a68915f8904d5243e3e1e1e65afcf4c7e9be208e60361ecc8daa4b7735b6e85b712ed502ba74ee6a608c9509c9476367774d8a60796127eb3c4756e3ec687fb02b0abf83e64a622849d311fef739c1e4dcc0c9af470f843062367a200f3364885b915220fb47d54ad2e56146ace31a5eb2cd829d1170925f01ef8e52f4d54ac98ec620aa370e00b91686cf9dd57ee01caead22f3c9ad6778aa3a2cc051657eb51602e06ebd8185e6ac749346eecdfa6e3eec573555ec21cc0c473e7e461b91086e18bfa75cb57a616e0342c37f1d568911b75a33010f24761733aa74ec19a9608f92fd4ed0101950958e3b4531acfc389f59dd32ee368aa00a26fe62e2d5fb87128ec9fff5d8bd1e853dfad2b6a104d97182c0f233d96a0260fc246511dbd55ad3013c5079969b3b42fa6baacd7ca6d9c8b49898948b5365272984343dc023e87449c918a3416c2599f90f1215ac35a82eaad67999ce018ee220a18f3477ad00310c35919c88aa98c20bfb650429bf6406b0618f39b2f07098ef14d5d67bafb1d3e149e6b13bf622e7a30223f90cb33e1b8cd3393c54b52d8b77eeb2af2261e37ad5ae865dfd77174c13fb44bd0a6159debe525d6cdb8852705b35acaae080870fbca7a5dba15d048e868c7c0c3ffe89f350af6f832a260eee11f1707d56cc8f68d6958177c3163330b8e925e434376a9b856d664fbb216f40d73ca1781e0cd6b58de5ffd32407cc442e76ae1133c2c2924934c6814fad8fafb4b709e00255d7b419bc848afd544902a4e01c8b86094957c1a2da4e91833e3f0919c5409d918bc68eec9dd8f4277c129b83685370520b858102a0d9c0d22f737278cdbdb1bd79fd308013ac4e3fde98bde873c0781815dbd64277e822f47a750cd1a941a3038fa488bcb3b8f7e1d5d121678a285809c70081e272560c450fe4f2629b05044144d2d6bc374293f9e9e19ee6b4729054b38cef40a48c321fb2dd1dfd901724763f25b7cb8fc6b401dcdfd884c9515ff9b6e69686dda43a4093cb4810624306e5f90e0d4cf166004e3ef8e7452e85f116b256a94ad067f56dc452fa5699abcd177228b6bdf1747db17fda646bf293a5d6b88b735f0a7230902aaed7c1bf67d51912b7a3d3ebc2dd83f4d72cbfc777341f261fba775536c9d86d9d1a58bb43e2208283196cd8f62273b25ca6f88515d95d588b62459b62d899cf99a1996d3c52bf08966d6161b88346a6b60e362a3242ab48f2b7068a800e2f1d384590aae7fdd5c958b162eaec01a21ddb2537ccbf3b69ed94e50a89a2161ecf75b8e8629df4a6011a88502d9d40b8710011949bcf488752353caa07f94bc4aec1a4d6975bc909bdc6cbd5a277397c892a77f8d337f39691bde10a67842e0affdb88603acfc1c0cbe84fcc3b39925d6784a181ec0f7bd8a043d2423d44deba405ead2673b1d86e5e3571874ff5c16eb3eb03fa43e437392782a6cc97b14f984f8119b8ac86e5db258705f333fd74b97b073c2bf1a15adfd331f29dd07bf1ef3739771f7b662bd62b7a978bf089953f79a2a83b38fefd8a9d43b06d030028a77ea59d49a9db948efe9092689a89780a00a0baa3882685ab6b2f2dbf1530f0d52c8f5362d8de3a73e687a88a02c495a221f4470897bf2fb34946ed063a7be603d57df6ae9c92058d707c933c7209bce87ae24ff2172fcf349a38cb7924cf4585d8e84a988d44a3afa9fc5b42c7d49028259d8ccaa45fda2a1e3f07231d932d2e68fe3896a133d68308013263439553af7bb9d7abe8463337230b4e408d53c17da1aeafe585fc3251b413f6d2a736281198eafd4d4be42c444a15223bda118c5f16ca5f2d3ec94f89c1ce48b3bfb4f3724f0bdb7e6385ac86321b6adc3e3c1bfe61c952e2e8f442ecdd0c691929b2810d9655821d6f2138ad571bb09c4c66a45baafe492fe42887873f85f1e9decaf54fd83d2e92a58bd518d38f7add1a83aeb63b199a8e26857cefbe935625a6d5e618c214402df7f93a6f7174a9f4bf2f537cf3af765f0bf3367c726e4bdc262b9d1c91b7fa665d93c7fb30ac6f3a073a6f4763e77a1e8675ac92aca97d918736c285836ac9dc3ac2acbfe92c750759be7630e05e4b842c439e0edc607323cfd12e79b54c2945247d161654be7f24a5ba136f3f5bed60473d5c79cb2b894faaf220e74e6bfddf815d486a4cbfe77838d4577337278dc6f0ac7a6c0226f9e683d5f826a20198d30660eb07741e5fa4246dc816069c8e2d9a60f517355305b6874d187ef7c9d5cd7bf41cd855da812b1d667c9e29cbb1fd4a12b52cc730c8924d65fe5f018233585483a60440a9276a35c80e5880ad85f5329bd7be051025a209880978182863ca13b77e7924658ba8cb700d7d0c92bca3063e1d24530cf53fe9ab60059112d19639baa5f6f8804c406a66bf75f1f339185627ce6657e3813ab3243a1cc6e79d7b9de3c5f09b675f2f02905de897af03ff02d36d25dde36ee0a36cdc884e5ea99203d7181301d412119607cce32cbef2b44d8b035cc41695b0eefc4b4a41fec622bf0260dca6f2858bf8212dede45148e893f01145eef9a4a1a9395500e5d841c19a7e4f8addc274a5a13cdad0f59306c82dbe573b1dbfbfb3bacbc24f5b05d392f7ad0898e6cf68de273fcb9e4a6014f86667dd0be05d85c2b0ef03890bc959a051690177ae64b879f781e3970b876c753d5f5e5764e6d11997404332a3d54073ee940ffbbf8868919f27b9a57ea1485c517dae728ea61e1e55bafdf09940a1235691814875c1901d8e2a43842ccc14e08c0e47dc014e4181e81a228b6e2cf70f341726fc1eca18362a2e65ae8cca62b39893268f9a7bcbe351a842f2c54305a843bda2ad49267fa9bf3e158bb55e4791bed5bf4f5214e77382aac46029ae93dd72053edf36902b9c837a8beac7512580465d96dfe4f0d68c982840e4e3e35cf969e68a31fff02b95522ef4d6af852bf5b228749ea5af1279623056a2f50b42953344a552c88b323a6fb686c0afcb597304629a8a286e5dafae6b1501a5ceee5caa929f3028153e2e4ee385fbe591a2aacfe80d76811ffed01b8903fc9a94d363aac3caefa8338df78bbec270060324a6bf8e5d2ae333af2c12f73e270cfd6b1c8ae82c4dbf8b86f56ad9a5f1cd825f22024f92b94a3dea55e1c3468cbcbf7a9bf49b821d12a6e236e3d2a5f417642c26a204fca688d7fbb035ada05f54a2a2f34d7d0eace1fe9bcd962456675d13933c41ea7d5e990bc4e4d9d6727de36a7fa2f9dd116cc71acdec9f7c6e7551583c8ecdea4677d6f09ba0e4b644f714ace34b449978283e41bf2e1afd742395932f4b21d7adf3c1eaf9e10dd8197ef09601acd1e85a2411125f0e6e3df197063cec7c1efc6661f6ff5c641517f702fd9d9f1e928aa5ac035976797f3962ac07a71f84c688efeaee8a2b72a48ec7f501dbfce7cbfb8637eb18d1293e3bb5a17dc053cd3c8c0fd0f43004818e9d40ed3ae0d1751000246d55362afa40c4fc1f6fa70eab6bf4b0613e82dfdf47e3c7a9ba7312fd92d2d22965995012f9649d2cd389f1a3ae048ad8c65d50d2fb0587d0295be2f407266b61f0fac73826f6ba28461fe6af3718fd06e265d3a8d85ea650dcd69759d05d64787411fd09a554a2b2b0730f340eb40a76f52a5eae9ac9f0fb8bb6a17ed8c708a383ec715b44c39f60693286814cad68c784f7b6be5692155b0432e1dba3d8b14ad35106e2b905602c896a85fda46f9511a1bfef22a73959acd6d5234fff4f26ae2d2b12f509371a2a001eb309cb5f45cc6ed3e2b15064445e14019373c3ec33d5eb274a3a4aff428726398027b29abc32517e29f9cbc62fa88d5259057ac3121c05d982352b9611b373a5e97948e0770ca4d09eda41f7a3f7d2fbc55c1563bd7ebd7ced6dd8de46dc7001c8123d1a18ccb65301c49a79e9792c0b31a05005aa3ba84e8d1a23840d084e2862407f8e6109ac7b13c47691a8fa2f4e3cb472790c59435afc806a757248dcc55ee6b087ebcccec591649173e66af370839cbb319a2670e94c266adf83998965d07c9b0c5c2bf8406eac397316a8985957740010ed340744d3056945d5da73b5b3ad07199635ff48140bd60bff6072606a919262fd9506046fd657f410b172a0a575c68f006418b3a45419c542d368b82f806c0570f196c545a1934ee8f3b0a37ec404741dce52d4873ef5d458bc82ee389dd2d285997e8218ffa0d598f68d95f86d6ebe998144d1b3e22e5de5f906e411ed95d9edc2389dd825e8c2e14d83ecf98ab45002799a33b5108dc2c9f7f56e61a5998253ed60c1e0315fbe2a165afa0bc6ac3d36bba8377b24bccd8ee843b4acd59246607d0e0431800730c7cdc67f9a27647709c94a1193827f42a529a2c2baab61060e40168aa3a8cb7831996430d7b531f0203467c4c01bcda4ec6493bc16ca2c7261cccde23d89f0294384a03843bac48874821969c5538da65732ef425e6058d682ce8ce04c8e2b363d7d29d7c3d6965a09eebacdb225d9fc07851e467eafbddf3654a07c8eaecefd0bb1fb70f18d9064dab0682243379ba69c922c448d5b6bdedea5bc259846bd7a47170dde67195a3a6642be379eaef02e1a598821071b6da0a13094322a1f9794d22fc26d7bbb325021f3dc68ae683c4e92d7e4b33cd3ef3b58dd3f94064ad0eef9c3a4621cb8f1f0c5f360a4741307d0c40f04a2c60485f70b6ce27c4682b5d1094e8d52589e538edaf0494760e6d096575359f621b67edf98410f7504edf1b43bd9083aedf05a144fc10783f4f54fb73c4c1e3741aeaea0ed31b4438e5b7dbcbded29b269f878627b3df75cf162e9314297a063bb503436583a29385292a2b019dc8280b90114646605316fd8fd90a380da78f81de9f7d7bdbe031feea50c83423bdc0abd141ce0893db48cda8b12db3d7397a0d2e503bd9e1b9e795a4b6218064056bef348503808019976d8afeab26a4d65955ae1a33b28deb112690a6ff961736425893fb898639761ddac258e6943d23f896d11581bb741e5d834853529f6ac304fdb0892d5dd0d9117a219efc13da6564f568e7a802cd44c0db6f1f119244a00ffa44a228b22e8cbacc65f4407e284f50fe022373084595fbad0d77602063097ce6246cb410eb08581feb87da17a12f027cb48df370a457fb7e4d97d3b1defe63ccc0e12ece9987d4222e48d493e5a71ba22886fc697084976a1d574041149c38c373a03f798283735c48192b14cb1ceec3ecf31c2ad53226d648a2bcd2769bc1811025831d358160b1b005ae1b1cabae4a0e6a003028d251a3ab4b40e938e5fdc9d061a423d3a4d8f6e917a1cd2ba0ace20a125bc9818fe339605ccb5694b86acc176e9dbbd8117c6227452f9b3c95daf169b3822204a430604e8135b053bba04d8e119642f11d509a82ce16256d2c0465caaeeb233d2d9b53755b3a56afda963295ee5f44cd9b589cf0eeac5048db8398951837d3c6ff55bd1800e2924112a48948392ea56d1cb9d61f49a926543553af0d9d620b9a9a3c460c0b5f1951790276d8e0a778060d97a8ffd201024cd63c2bf13f68a0bdf0dcf04ac78ac3a0375d558c42394dcae7ea05e49cf382476c2cdbc69c2dac78884a2e643850a472fd4876afc9b76fa5f18fc5395cdfbce6a72220f91753afff77baa1a8a7947e5b23b035754416196e4a6470fe2ba180bc998019f914a47c0ca2f8b1aa829f6f34269c7ac9d51e52b64a532db3af084abbc832badd593aa18a2ae589e6b67ecc769d3e87a4837b944aaa098c9d0cec967acec756b95f55b6496950bcbca92aec0ff9cb607c9dbd0afeab59e177abb53f970b29cf1ba7919f8a4e322aa9d773dea64fd8d270d18f950ec3b549a04acda87915f6b119b5a7a1b08a52ed44dd6bb4ac58e98794edde2ebea92c19c0a5b4233525e7a8f91323e38da96ad11c5d5e944cb39a6241319febcb8e44b6ccbe480ea09d8cd7e7b92be31426312501e7b5196c0621e8f80f54dcb88d8ca0880dbb51d1193eed58b9fd4d4000aefa0d0986cb2280a5e88a87325b7b07c5d30d99f3b8bc9024dafb8dad99004de2c7ee0d246abda59ab0a33fac4b85f1d5bd1b46d1a12fdeb11f1a4b09394c91a813d896024d2fe301e2d8eeb5cc0122923f5503c34349c3f79bc726eb3c5b3edfcd68823624fe0188c4eb90704258e871c89542aab394f887131c5455f073544eea4764eccc01606028e10bc4c7152519efeec01d3dba1469598f30053d06a19def8c8238cc215730239802b67a3fe5bec6f45149801c1319bab5a49f510f55a9227222f6a6d5330455523de32d15ce6780c7f4ccb5e177a84339d234a4000880d8eb1be66a1a25a416c926e017a24f2745a4bf5add86bb5926382ff996e34587b46987e12e8690e44447e2fbc85ede9ad0700501b3135bac233483b99d65c6dd7d6d4df3b095e2e81f89153c6d1cc1c20a87aa941ffb3a89a4222c6c3c27442aa082b66e0e2262898029f17157db850995b5023c4db398833903146dba6c8d66c4cac208bf226024d940f3360b4f4c1a4fa2866462a5025d41d456ce7bc4eb4f0ad854232659700e811f940fde44da874656e6cf3f14c9c9b01d444356afea1928966badc51191ead295ed4205abe9a64d1b7625354c9cec140225e1825a2ffd2b4260098efdcdc0f54c65c6c8cb85bc9d36bda70f15db9eef51aef2a0435d5bef20837ae0628a11e79a3ab333231dbfd22b1041d9f04c01664ab83187837e36ffd4085b36d08440e6e13d9bb91f587d3d6c1841949781f13844e2e2d9394fa4acd2367329f52066f7f3dfc394ee8fd685b73978c01b9568645ff774fb676e1c52a264abbd07170b73a04363a1511767afd3853ead98fdb368588b5e5c69076b8d017713a84f6d2658b5818a5ca098544c2c75f57730fa27ffd7f5d75ada285ab8155a1f0d05cf7b3031d4df05792af285cc75295b549bb4b6fee59158c9a8d9c018a4fb165304dd55b9eada050afae66255c75a9ba1fe38847526c8197f0127178601089eb515f8b9dbf0dc3ed659c391b53383e6edef7ef931d94c2648257ad15d0b4e1ecb12c8505c9b68c89a55ab8dccb6f5beeb740f019a296396c28dfafc3c6d93ff992a60e6474c6f47915f231fcc53fa155389b2d87982aa80c1ce8da4ebc6a46d8f0a9b9c03ab69ce6024ab4a3954505168a492625690fde85d6c62abed5d105b66332c2bf4b54a0076627920f2ee2978a30a429452d5a118d934afa37a9f01fb07828c46634fcc9fbb105540338160e3e903c1875b9253bd60bd7ae61983f03aaded4fd35413356c257a81abd4bb447f144bd1c692dd52a0d8a3d92ed8f6085b7c913cd9db0cb4fd26deaa8455ce8a2bb48130903633c5904b67dc501ff1940936fd74a7d006cf138363f30e30116536bba07c60c8cf7c1c021352eb80158614b8983dee0a8dbca0b809d0f2c1704c99e798225ff55f98da17c04dc1c13be901f08d951a44e571e9f647a445bcaa031709f5ae3c4e401e3109f9f8ced0bc9f65cbae0f240d828325d1841cf24181bee1dce9f35a1f6219eec1218cb8e7189baf1a9edb8547d30cfac06b0dcd66026aa0d509f526d22d8e816ddec060b4506dd247e11bec2ca16b8ec845b9ed3d1bea65fed9bb32f04e8fef048feddac9ebeffdebbcee7f010957d87502dc959cbcd3c2368689134dcf20a7c80b1d1e8055d7333bf813bf13aaef1f93b3c25a118168770b5b056e6135b4400a7c73100b682c6f0c7351849c28c8f4444136ef92bb04b14ebdaf3ca6117d5eae375184f4de00abb40139b911b4e5ffcc0cd1cb332486c438ddbbd717cb39d6116e04884bdc79b2a6abd47946bb1987db29daca2902b9926400a6b01ea7a83dab611473490c5c8196efcf64e6e851a62b94735376d8f7a1ffb03e56236390fc793914954aa9f0d4544d1d2f17271c2a95a02b16c4bdabe9afecb98c756dc45bed552e4ffbcd5944e0b53d807c1bc88f676047bb2a96f4058551f690a1f677237b0e322f8d6df820de048e37cb2197700a1f277168d812dbd923abd5437a52917c98e12359185a6318894cbe33c5ed2180dd3e2d93fc86bb05571ea286e1a57f41c0e981ddedbe6b1a395e21217144bb2bd9e03b463661d6bdb5ad5f91cc0a7f33831f546291a45ef7d6c1efbb68f0eae48216a73a08b79faf209074731786093482f8c4a4dc37c23d415a2d86b963d33b0aa41355f16a2d894c68d14dbd4bfe6547fe104616c03c79ce0e698315c28f5259aabe7a6770d4ea7f24150ac99d634b8ec97779396e0bc8cfe17663212375bcd28036b575ae143ad4628a69e5ef7a685d7cd22503ef35579b39bc653255cb994ac4d9a205c317cc9ca615c9b83d18ad9c6503943c3726b09377a39a742a66ac0077c203a08d1715efd9046fd1c666f40f1728daea1ed65e42ef188bcf924e81a7043135a0d9c85c98ea1563b03f9cd54e84a48a5eeecf275e19587e5b2186d8c8730c0508a60516b43785ffd4ec6051c7c50c0ad08827c6ae87f328a5aeef98da40119de3550cc6173ea334c5b57b71142d2588637b6e3e65740944875e0a1c5a734442bf0d05e66248cbf999f93a5f4277b8c80d64408a09826a5eec5b9c22ed1486ac4c0c0176dfdfc4e2010ca40d28792932315eb8c587867028e464e219a734d1ff5f501ff23515bc2d816100627203daff00f650d4b23ab247c76d98e454260c78c442440c6701fca99008bf73669ca08920131721c0cfac4e5a49e358d9436364052cf2d56d1f075cb80535abcbbd2550791609d0cda5e4fd823a46a20fee144f8344fa22dbd29e66d0ad3a88494ad0b187827c9ae0674975f1966baaf3a63147ca94eb7f101b128fa025ee88b82f1428f2d3702e41f1d8e94b65ad306dd7c412b53eb8d4355e5d16bf06066eb14d384046f14f7176f842660a854e9e01dee67e8161cc994463b5e5ef01d77c6269f024acbee4cba4f944187abdc16322845f69e9f1cc5291c0715826a6c7e1874b0eec604783d092201afdc01dc65565e99b5d148775b558662db7bd256a81d38c0fe1e4c73ec976fa167d49ce6670dc3a9d0771075e93e1bd83e41a5009432ce9024c96b68240843c75a5a0c1c30efc75e9f77a81d99465d9cc2705425cd5191315692ffe05c8c907f672ec49778f9ab40fca6fc6dc77ed202ecc29b20162b4869b3755565458bd32edf9a8af48ce3562cec2c4df95f103672b864fedd7bbe207bc2e409d000f2259ebb020d824b355b60cb4c2895788c1d6c0299e637f420cc28c3b6dec636ee9ae1448aaefdddcd4b6d89d39c30e2969ed766ad02fda06bfd8a11072cfc4672dd3e406b8343e2deba4847b32712f926c7bf4ff89c40a39e5f2c9cb9cfc271cf0cedf5efe1e6f163b25185bc610b1c082c16bbbe408946fcdb907943067554f1c97bcfa381951e36615a44052da9a314c35a549898bb1317d0912c2a798ac63bf67783f1d0f3c81c78a34dada4c9dba8ac3f29e984cac358d131b8d3d5269132df10acbae3c521b5bfaf2f9e9045592b1a4514c414b92ed5b2828f5aaddd22db04d0af7f679cd52aece620776e0b93055e1736a6fae072836607cac3bc55611c0d1c241c9cc911d66497dfb1496a4e6744662f81c4633a5036ca6ee7491081c9f720b0104d1d369da74b35473b69d50e3249b409340219290640d35ce1f08e915517a370397af2b47a7cb4b10795b21e0e3385e0636f13211ff92fc2af21446cf1cb95b080b2aa57187980a988c0100b111cea36df15e7d5e5f89197f371e0b276e7206598ec63317f0f2d17a9f1bf4a88145220a861ca261f80a966abae89d7294d4dcbc669362a81b846e57254fa3be8ad9157192978b4d861be99ea4700e7b0e6d70e54252d40799e015c8c41713612eefa73baa18802d6f102a024808d359ba64021ad6ae1d8e0e8ac13997f160c2d870be6c05b352d3296921600a15cbaf8a954906b646234c781d566de5a676d643855395aed6bdc61fec9e4b6b2737cc307728037e8314029ddc79f41fce0e7edce704bb85b3091236d394f83562060a74f2e4a1ac3fb84d227c6d327c18438d4fc7fb9ce17727c306731bba166456a5010a8444cf668454a7b9f41ec32017e411c052a17bbe919d85f43e94562b220d821144cf70fb39967435c1477705d48cccbd9db521bd3e6bef892c34e5ea36dd95c780c7a869c66ab511d6005d1e68340afad3287920f726d879dac9095db22f2bfa8d35a82da589dc505ebf525a3151dd3d1bb0b859dbbbbbf60ec5ea50bfeb553e112959bff20df13c3f5ac77052138b2d1779b631898a0dfa07822fd54f94f2a85f2842710c7d6bc8481f367cf5537aaa1965b03317064741046d713aa06788c12ba9781d903d30560d4096992d227520bd103016a187cfb79545ad9f6453fac55b504ff902a0b912a592d08db39e4489e7c654a1e7d25c63bdf77cca344a3ec592654f994594457d90226839a486a38a0995073da978ec473c706f7fd5bfe82b59e11370c26b8bd7e1beebc3532123c63efa27d6fe3686f8636317e4fcff30039e3ce95940c18083d7e185291cb49ee11c0942a3f71fdba9511fdbf9423a5e781be5355278c5f6b3baccab54ad6cda2a28124afaa83bec1b3a7d006354fb88fd46979e6d556f79d07bff5c3c8eb677423d03510ce9b42753e08970faa7304b271869cb78f97e5f0f230514c7b227996cc431c8888ed1e14da734aa5007438bae252a207083f5a50306d2c525ad611bc0536ea3fd27326c1b4680a79e562345b7dfeb83ac7aaa9ae89f0c2e56e961484f90eec4146300f4198430b20848c3d25c4d2810220cefbb03b98b1e2a470311728b788707994a05179f316e2a2d16cab67adde9e1ac49f9fa840da793eabf6adcb2f3a12325447a6fd85b11bbc65807ef07bc40d1db97ba2545019a8e920981263de946f4cbb42a4814b3e1665c743468302684fcb009a6fd1abbd2049c8ef0d73ca98182d1c54f304a63d2612a9c395f93bd5349354e388808882ec446a5ce986dd70cd8f38d0fee873267011d1c0cef567c616b012b6032d204bc210d0577f81ac6137f0f6de5c286c6a5bef3b42952e6997b79101f6f675f8707e49ba37c6a323fcbef9de738afc304d1889c6f57ebb9a2ef5bdc8927f3f7989104675f34909595a8768119e9f8113984d1b8744b28d6c42a6e7a8c3194e7da4cf0a6ca042909bdd117c22c266f11389ce3d7920a36fa975a92d5b43dc2a87926a862a22ed29bf114ac348337f27698102a58833cc58f7917cd76795d2e5c0d30b76dc31239bf7920418b4cc0b4eb21638c3320ff472afa5e49ac09c689a66bd583df87ccf75fe5f5a7141abfdd50c4c6ff4e1126c6a133a10e93a13ddae53949efe7f93bce6a9daa1e746de4b1e220b1770a44680deeee3f5c8dcdf62516058a38aa8954ad83535d9d391e2fbf36429947d5c8b50b771c0450fc7dae8a3f94347b0597feb897b472e8d3c56eede7fb93f9e911467154cd3245f844c55ec755269845aae675cf14b95aae9a6f0e68770e801047a718662fb4544bf1fec2c6d2e5d335876449928a72a6591d50c92010fe7a048ce81738830d157fafbbf40f2d0f59c1a53fee25ad7c58b539a810dd6778b6cd47fa269f3f4f08829064c351138858c48b4476e75583e48169144d4f8304f8b0a2b6f7c0f37788213e50458918d2e4a23527523d249f7314d62143576ba3e2e7b1a55690474e830c476a283236aa9814fb9901752840cf4929d9ebb9e2ffd7392aaa1ab43285cd7dbdd87533177448f134c3d626f157280c584b718d193c3d0d9fc806f8cfd490a6e61a4d647097b5c8ffe3edee462bc6a6e128095d8730603bf006e35b24f25464c5db8c60034625491e21be05bf1cbac4e74614e9c18069bdca919d8668b5d6f07714db9cd18c56b47241370e2a99bfbc1eedad2b3435a3de55a8e926f48dc7071a4654459e2aef51693d2e6e5c64da5c870327db06fe9fcb59b60c7003ee7604cd57b2ba4edb48cfa2168d3d60e776058aff631ed8315e0576df2f2b53fe7234ae52338c961c4e6bf7f8a8717e441b0886b8c1b5fbbfe0b6fb3fdcae217f7aa9399a032a3b4a86f805dc5312d20b2351993da7eef79bb2d85e6c673982e80def591303954e4c15d5351ae1c3448415045151f572febc3d87f29cc2920ec4af53c44f40b0e6c6d408cde9aceeac12bb524bc2eea351d8a860305a387a3956e995de30eb3c959c89a28df3b47b474ab8ce3d04c0f2285dc9154b066e01bb8d7d5de60258953985319517d6a305ca18071b3dcbb1e39d96b7a9c26fd676a2c657251acc2488af0ca7192001c2490d13313ac68e380b1cd9c87150f2bfd5587ef0ef1b062cfd585376124622280b105dbe9bab1d6e6af43eda49d70a950b0432a898114d81635fce83f1a261eccb0eb53d1517d58d8a52aaf549de9af585088635fe223858b24121e0e5e1fe4d5b45049978843c5befc7c3122c7fa7470cdb624398907396cfee12ae8fa7172bf8dabdb348e53d4918cbe008ec4d30f06f289179a1275f0eca9003c938c046c796a284643290c77f48865ece5f1c667daadbfd363c3167dcc5cb1259ec2dcadd16388e060bae15472159891c502d324990e23b106f02b92f2b7561aa7180bb63f98876e304c164289dfe8284bf039d8ccf3d0f7df38ce70e84b034154bf529a2ffcaeffd95bf22d8f475b4a464f72ae67ff0f7a5e554c34f9852825b2b5827222709ff43d70a457897d115337a106edbb7a67bd068fe8e97f37cc06aed9c8b1fcb48fe43dd7a1f1a66f79b5b8ac320c8cf912c8142e068e82db317a7ff3ad27cfc65f6240d3fec23abb3e477252fedbb34d6172ef277cacecc028984b05e400fad56cbae3547953f6059d59bf1bf808f6ec6f0a49bac827c4ab7d0fe2c118edf348f3bd57199583698ee049e02653375a4ecf68696372f52098337b99e7ae2bb7a1f8730cd2d22495e36ef7c3af5408c0aa3f52d76f02ccf6897fb87b87692ae7fbf14d26c8c7ecc9ac338cb6be693bb36ea474e182c603720cfebc6ba887f76cb718e89302aeb4489a09a3a1496c01a9cec8f03b6fa49b36324e9492d81e5f6337c8a339637b219c7f70524c7471aa19b36dbfc68978a8a7a3f261ad0da247531813c83053b7040af5c660a75d6a555355ce1e2d02aa4f61a2a728e732680208fb5e62a59a0108158315772c9ac9b327b1f436ab9f4614a8655c07b19cc3cbe395b46bf3c92add3c7bfe6120058210c62580e27b09087b735c3f71572bf0a1c4a56516cc7ec262adc26ed0ce67feb8e05002523c87d7146763be935cea9029a43588f5e25cb2422dfb34091d3e6f35dc40420357b05633b4dfe115cd8b89469924c5ce33c91ae965b8b66b868e222ab8bc754470da64792a11aaefd8e86f6b29640a4dafe8c5c36e393db399c7155f73b9118525e117d698882ffdb2100c3c71dee9a4bf60cd82a3c08e5713c27070a491a08516a30971125cec76dc5935e93ac4aa5450fe8a93c7a70bea893329e732dbc6c23bf5d41084f2f0256ca6153630ff8e0e151253fff64113a8c61f6a5a4f811452abb53ff15300867484c333947876bd7638b32a87451349b63b0be9fa9d0ca869c298a064aceeda54afec5f306964345579a95d66677bb1d6198a18e4a3e8d3d36f7c3c31f933bf51c5ec4caf1a1153e37dc777b995bd459777476a1d66a5843183aac982256d1ac6e61ab9193ae77e82e85e4f339abb70e37cc905ac84e23c756ff3074499f905244358119dfd5a63ef31a4f286bdac8a075538a6b4a5583c82840863cd18b6be14b865f3f52ab4a7c9a6fbf5180bb87755b35904ecc99e11f930b4050716c2ae0136a81febe7c398700e433e0c67be2fec7fd4d7c4a018217ec7906faa9f266fc1c933a55e74ace4c6a9c7e398e9084fbe59eaa84f1169281501273be2688501b868164ec32e4001a05bf20074650c4b4a0c4d5dea4c1ae07701446053d2c4661078df34ddc4c1b7b445df7499659ea1ceb4a9f2f1875fc87bdf47a69e5683106370e7fe2d9ca8cd90f23341e6b9f6d200dd38bc058508873b8c3f50a56e582965f93468f7a9884908875a92156c1bfd646ecf8c74651024ea85960a9faeb5a7b94412bb121cf61f02d413aeea963d3b1576974d1212d275bb80e537f99ae8acfa58ccbb13e7e3f5adfcf3dfd1456314a36a0eba097b16fd11dd9019b52f904f2422fdb9e0e0af9a80ac9fe9aa2ad7f2dbe5a0aa7fb81d8ca9521dbca8816b2ef62e88d8b1d6f45cad30d019cd556a44c87c0f7007f1d8f6cc529e873be9afc1cf9a488953b042efd150c158fd28c17098ee0a85b9c289e31ade896e37b3d235d115c8640b94b4d4785f2650457ee324b22e94f7b422d6c542a8ddb3029099c6a707c8830b5cf9fd229da76dc72c05f8e76b3436b0d6450a45bfea9c2338c0e5610ca2282710c4e81e3d8490bb701bcee8e81b208f94cf86316df1faac2387f18952d452d8c7a3baa63f308dffb99f8ed8c5e3e14863658f94e6716436bf1eb2acd75490d5b07cb287fc120f9139bc3860d4571c472aa640c30ef0e28e683cd37f9ff82bde30d34f12e8d8891b2ed31b555498b56f50a96327932fc4d64dbbe67b30e72c689870204a06d8a3fa179c8f237be42216dde40237e0f85ad2086cc883e8df8a5da8f755279cf084190fd53c9b4c03c9b28d2a46ffdacb79072c71bf06bf7839cf7641a21a4c49899210665ddb624ca4b972dcfe98d435adf4cec1e06b0021f3a8eb681ae46be7a9bb0f5b6b19db720c2bc02d9425405b8b5cb9fe126ac4b977a69f8dd85206bf3b48da26e20a71206aecfae6f584e557264701ba1d0eb867719d9b785007f52fd6841f144495c6bd727b2afac4a583e233d129f15444c3f2780b193de4ff2799f5a43796e69d024c7d398f2e4eb73179a382a548dcfd60e0569fa973c5fa23fbbbefc087af2e8391d65277281b09da1407f965b476c668da891fe2cbe27fc22e615cdac372986a6338392039694405ceadf16ea4a428ae940c61943012783df89ef2189fed0f539f0a02345fc10dd30ac030448dd3bd415cfbf8101e9b578b6677342bd842787773c8840f42c587c410309020daa8e33dbf99bcf70b61699a465209288003597486f6d32a78377239bbb10e78d9a7b10dc5a7b03160085c189ff340ae77a91971be2c93c87a188f91ca38d00b05ed54e620a5182d6b668014e035699d3590b4b037ef7d591730f0a2eb35781b2087a16eeac88d53cfb990c8abc04d53b8dd64b63c9249e3bb13c23a45675d36755b94111a2158946effbb786d1fbf55b4bb88b4dd843c37050c6b0e059c29de6b03863c88936732665e5ea2cb650abfef52405e5ae311043d9039185ab125727e5ed3a112d25fbf084b04edbd0e4aaf5bdb9d4bb2d53eb85ca1d058f88c3fbeaa70f50af39e127479b9d8540343e95dbfe9559b24a60305926812bfc83031bdd5a39b1ce1a66148c0046ccbda36b79159fe20fe5fd5ec0524169fac6b2bba2e354265695a1a74b83b4918493ec3246276b0a00ed8fc3631984fee2bc56609d4c6354064c521f1f7c2c809d868be329b00aa96c442348c318f073874fe1bf27441c9187a6d959b6eba7743c10160cfa148b839badf337635d8490fe8a4b77c1299d8fa4992f68c992962733b39bc04a81bede821f16f3f8362e9b5808a60ea4c16f8c1285343a3dd32616035ddf7a1ba8be204b0b96a1929095103ce8c488a16ec6d46c9723bf2ff123aedb1f1f364aa953f8433d886bf3ed4aaf51088d7b4fa34ed681a4d192562214cef7e1505088a51288a480758ea5f436263d57d7c86fffd24eaa5cecfffb902eaab6f3f7c4f882008410d31348030e763c8aa86910de8696e46fc408c2a21849188c1912820fcb1af3414db1df387743a6f173208231e160f505857dce3d7d5f833d66aebb4350c6d353fc4624a6651942313740e2cc0f5b0f30a816a32cb27f6f2e99169c52cf780fc41b15880d275f085aa4a8115ce32e35a296a7fadd298585404338665a2a199fc4128c28c675f0acc820a33864000f9d7682701014f24f166ef9b016816ad57bda2256567559999c52af476ae6f4523adb6152ab5e43894dbdcf0f0b5398a6f00249adda891536b58b0a6a9465506184cc209040adda896491631d5770d926f9be128f5be3034e638cab742c6062f11fdb276de8bef01062d914e13485773b0bded0a804709f62661dace63b6045955ce280d6b9b1245ad04d535510e6dea064df0667a7fa5bf1a71cef65a2f16a96878b911e7300603257cec64b8c060924db6fbc07bddd838fe1f5af284fa25d95284cb3a0cbdc803f1d9f865175c5756799675b2646954adb25126368b026fc211e5398c4bba43209941e38a9ac33863168ffd638422c2b99ece9f8bbeb6f1c536f5184c41b05931babb0da17648daae0f566a191113aa8b29038e35d27cc29404e879d9f04582a3c825dbde0b96ba5a7a685aaf7d89f454ed3e4a56df7b8d33ad4c70cac9cfa914dc1a44c06251a0e0108fcea8f49de8555653c07f1a1262c7a4b350be2ac411a72c26c6be45432c334d6afb4f0a71797884be19c9c7a903c85dbb10e2e1038b25a9021adddef4640dd3d92b95414f3366c822ca63602d827f2c8b6a1aa5cbec843eea324d51e43ea27be484c398d4a78c1f08bc35067f34f88dd2c38993aa792e05e8abaacad0c720833b8705a60c182b9318b65a9646a7f796d8cdb40c935c9281beabd40271f0c4ad1d233908f9516b5e5d170f93b2fa7851e43f0037d610d5af71a4bd0228ac3a75a6e472a54b2111565bb6773ccaab533ff925bf639bec5fa11297e27d3e5d0f302f5679ad4152cd67b10e94639476ba33eefef742c89871c8c8517b8cb870ec129a6ccc3e5cd0bcf53d24c705e88322e72b775352737a3ddbb8b052e0ec07a50f585a61b44bef6638478582c3217b3b1f78646d9cb4cfa724c76088298f5bf586701541711a334ec5981c9d5860d51d87914fda43985103399cdd4900525fec796700252a2113b3049994a26d578c4e4920b9514792b30057e9ad841b00dc7183b4be7c1778a625d19a07844061da3d8d8bbc27b5954b2a2599fac24d062434d07110a607eba6a05f0a866fc8cf57420d7fb7a9d7e8be98626b18a4854a400dfc1a887aa6d892498334406a415f54b85e7f8d3838ef02aa8055d26d1016e3513f72e0bcd82c05710b47c05edd9047916b7022c184481054f538e3ecd162e9f351408f0f21f4cf2b4da1d6f0172202777fe8ac36e83df05042a46f3bcbbbb1dcf216aa7a6f9f7a0438371f06495631c99f5bf5acc7398978e29d62b403bd5108a41313ab87a585b4094ed87579fd96f844ef6527475de2a9583998542ec09e99feb3128392b60c86bb5e985cfb84e1400d6ff07fa4e690705e7ab56a457ef39cb7c50ef0a893a0852159de6fcf682f46ed5aa0bf60da2a97d2f7e5fe7d3866a7de2bc866b87595d46c8114548d5373a14192c7a53a2a687577fef57f97053061d5f988fdd27f4eaad256a56af1ef78395fb4d66d4a22984fac11b9b8cd6e8a35abdb496a59e71f1dd8efd00115f8a7d63945382b48a77dfa517498fe8131f75559ce571a182ca7db2f0a9ddf665b77ec1f18fa9d205cc0a355481be8c02a4088a9f2f8cf859357b135538033b1d48aac69a4e1b62a7a1ac5eea44f0f3cb54a168e05e800eae5b0ba9d671e6b7b281db67e52af7b0eec47b78bdf6d4222a31b145bb01c77b466d6153fc229be7c8ed740a6796473c5d878d0751fefe96575d96852e43c1589300c40a62f66770581bc05df850401b55b24d7670b16fa2f77645ef1eb6623679fb9470a3c7fa2db26cd7a365e7b2d86ba463f01fccf9dd2fc87fd9d318431c4ef7f3cd76ca15da0fe4f0bb1da470f40907fc7bcfe5942bc558ebcb993c543a561a6ad3c7010561e94f0eafc7dcfcebb253f8775b80f83f61499fe0e16fde08c54c2a75018797b1156e5a1b16aa6899c7d4a56ba8fac37b64985225d1b6dc6712f15ad0e4b69b71fd710b1ecba1868c035da54f97925a9cdd50c67832bd95a0fbe9b4e63840ec14ec98f1889e38d168c548af659c273b55a89123c5da8a8c317a742bd6995ac69e1270eae0dd7ecb069d4d09fbe1e4d5e341aeb5afb8cf7659db80a08095402ddacd74f403a8b570393e3efae5da8e26bd8d94a8d9e42b182231bbb98cde663c2457eed51a8a2d68ae7add6b50242a726d6a47a6c2082fa3120e2a3c2bda1d0def033236f271cb29c81c269bf31118013860c2ca0cbfc7aeba57f69d7e1e58103f29f91350f897b6a15205ef06f04f6b6146a36ce3d629e8cf1bc44d9a21b3797dcd48b28f930b3f942a60fecf43696fef2ba0f896b63d0be31a060a76b2e3df6bfc198b114939d6a08690293d9a2679db6e241ac8685fad412c6d4766388ab6a810bb105825cecb5e473ab0ec1a75d8acd06057a108c2c92985a28848047e373b389e4eef32cffd470c013b4cfa64ed0dde49fc88673dd2fc0b275d1e8918b26136b89a85ef0bf2ece8571c8e46f2c363d6bb61583f2eeed8221c4def01d0e1563ad87bc209b22eb570071d469fc5890f453f01734755ebdc84c44d4b28424d8166b1c7ba193df6dedc3d55d213a3ac77c1590f8d59002e7d56edee266ec44d821a2198e42d0403b6b60fdf415720df61532cf1ff71cbd9e14825278b063216ab1c09f172c3e0b506c1b4915bb4d7f8bdb531773dea813fe44fd12171b5c0e352b195ef786d6b8b86021f7615609c3dfc62a6992353c7d04a90a55c3aee00647baba27576c61b8d9b471c198318baf177ad82e2655a565b72a7f985a026bda761bb65543394bc83385350ecbe803fcc6a3dbe45f1da8678e7dfe8a683d3f912b9123ffe8124fd7eb3fdb03918fa06031d9e548b7015d07ac957bebe857564ec55ab7c29cd967c01cfa15cb24693543cb1349aee6971545c8156f9469b15d758af40c349413f807438d0820a1af3c4a9dfaac23b4f9cd4b32a0bdba82323beda73d7bc16fef303d914859961e9f91b97ba5f322a671896172498497af145eb0febb63b5a6b7703d855be2752d3d9e669ebb699fcf4667209a0223530088c50d04268a1594f40e62b413351821545b060499db18e8c70fee70a0cd4e93a4f7128c6d2315993f314075d02b4638326c0026b233429f4abb449ad97256906a655242b4da92277198e58fde956d0741d1999c6882cc99cc78e59076a307db675bed0085702db36264362539c208aeac8d851612053c6122d80e0ed1b350e2adf586e4eda102493bb74a77f6b91cf427bb74a88bc803457b445acfe4113b0dd222393653a8f0e5f0921f2292d9ac2085204ad95bf07d935c8988d8ea706cce230a2c6da0e843ca02735e89bbe5002f2d20b46327028b07405fa6e24f46f40417a9c2e76f2a1f51b1c2a458c8a11c1c68c71ecc199ec9765d37148d435887adce1b1114a58984dcc991d6e46b06038039bf9ef399253ec82224b4549c6ff809a7c789af9e8412797cae04d14a8e410f36608002e11aeb91201a24ee60ece232c47253c0d7c71b82ab008833e9588bb66077f673c2500fe0039f360078641d8b6d01c293c9d06d1a00301336ed9660ca17be160b52cc346c0819b2dfda5692cd4a9103cb3c52e05710b1f8a8f3d449daffbe7ca6f3f3eb39cb645edd3d02b802dc6dc7438e849e4eb0bf6b7fc6049c2183d3352aa2a4ae5b4c12a05ead94dcd219a105a70792b5d154a01e6b9c6f969e128fa360e0e2cf576276d7cb1e4de15982364972fac34c867536d3ccd80ca42e7c58879011bee1c37642010c67dc0284f95202ec63333340ec87540e483435a56c5743639d3d0fcac79e1f2af7c224f17ed6d763a8775826c8d42ba73edb3b4ba2518d91a807a6de26e4dbfc5fc9a26d90c6d8dd2aac6863582b7403e41103771e3ed11505f83610b430904958e142ffdff15c2885f927baa1767bd61da7d7fa56b2260887fb7686abcd26be034b35120e8ffc4b018ef7668568b34e4f69015be478f587b5efa31f03918888acb956446eacc32bbc6ce270a038a98ab3998ac1a3e2c4a7d8736e97ca2de424a9dc7a58e241908f501d78bc6597e418dd06334a7eb9aa7ddc25adde4311331b487340d4c02d93e87fd0fc3d09292793ebe0c441b20bf5183a027495b3f8412d5fd6e39578411e370a7ac0e7a750fd18274a8f463c0db9c61db483b0026e267c7f6c2c45648b5aee0ac55f0d62f94da5307944bd430f01e10d957b478b46324d4bec3960910634f428c4cea2ced807de597bb2d0b911645b1fe2a68590e4b3bef01a4ce1e05d89ff662492c5d2740ccf7f3739d1864a855280510fb98f0a42747e51ccd43574b5e77755aeda57aca1701a2d18f24020d9b09ae31cd8896b53f00a2e2109a2cb3bfd0ae207590692ead461a509800911e9484f0b1e029ddc000f31f10a519f71827ae23526f1318b018a6c1a56790d1b823859b19f0088f6b3cfc138231f4e6618c4dcdc1d850367d840a1c52777a320de1df90e684a442f503efb60574ed67700c7574cce7433a8fbcf7f4c14dc7fc52f15b8f71c3743ee23226d29a7780ea9fdcadd967253d6983a5b9017c5c080c9c4db8b1aedb83126b59c671b3f80ba36840758650ac9865e99e9a6bedf7ea63d8e8b016d99f7f334717657ac2463cc4d520a614aa0fc09f6db68abaf2a8f79084a1b2ce9031022287ac8024ea9adb260f3192e0f1b32b31826fd149d79ce3b7c7ec5fe914d5279d085721f70468ce6dbb2dfe838935ffc47155aec998dc431eafe2380724ee92e4e68691a328275df5e255521a921e3500746e8122fc0087776478f61c289c32a869618274f80423b6db000450d0f93b45aea34a7103bd3c4903c5b58f986a291206458729d932a4c5e2a063c33189ef7d969eb123c207b088b9e4a8ab8cc0eb77ef4c1e8b5eed9297bb26c4d548c33213634d6d7f6eaef099f9a8edf12d55e8a937913a0e456ed99821f03c4eda3a4fc97ed6f8b2d655e2797d664c967d6c35cd44533a13edf6c3edd91c44721e8dc19b0904168a8a2db35dade667e3be52cc73398ed2c0fc4c43ef85505b67d993df07901fc2863788a2ffd3adede94071d8ebfb09c6b357e9e92c3882d5863fdeaf81b5017d89fbc8a9ad44e2d24a352d41364c6b79f5d22c7f56ddcd43e63b941318664ca26b323d030c727650ccf08ff2b5e5188205dc7fb39bda88d63c57835fc3ba6d6d55441a1ceec58c8d91b885dcc697b02f210d1a917e2b462bb33c30d75099f7d613d766ec7543579a965c8c374a1e4ae2ae2818822cd15883443a87813cf2900ab82d4a39bd90c5813fdd5056f13486c6792a8974f7e31ea0c61f38eecb90574870ec62227582c795864342d7bfe3c07a6cfed7f9e853193ad1e14689d550a4c774690326e80d68c2abb6d79b2a61edb825410f1e5a90bca3361c1e21b02fe8477b112ddb7a9596c7d5422aa04010ec54e015422f69f3422b1c35e922337c9b9526df448f790121871a7a831eb318ad88186236e579cc075f01ea6314e23554f80fe998a8d23c2660042c4d20072cf9b6b8d2f498b7bce5a2c82fc62cf29bd3898b0f9df550715c2e8640ba112b05cd8d2909de32fcf7da9497a5ea7af557014ceef2c91b2ea28dbe0836b9e7da8c8f699cdbbbf56b510115aa0135154cdc49dc143fb0d736bda81077454143a85bdb72bb381ee73e84e4c9cf42b1b0a5e8389681673ee5fef0a51619fd5b06c034cb9a394f4b97079ad93c56760ca3956373d3f0222629ab1daf8c26a574d369bbc874e84e5b49a1a1b98a333c8f64594bfe06c80eae252f5bfd59119ef266297b39963ece3e6ffe9bd8987d724bfac0cc38f8496551870d5c2c6feda418f23fe5f8cb3a21054da674eb4022fecd3cca2688c01eb744cbf5f7e1c499f151b31414999b4f6e3f8cd85d3ea585ae4258780cadab53bbabe47afdf03b64aeadebd3fa4f9d94582e3c784a03350dd10f52fbcc4bb177b7e170e33bbeb4f9ddc822438dd50a82092b49156650bfd40b2e448baac865320b7626b91d8e209cfea9a050c9c0dc83dd219c459aa8cc69e8818bdfa8a8b05303ad157e501527a17f80993fef8a12400c6623f1f68a3679eed270b54222d5d789460d867c5aebc18e520cc1aba74df961608e7e788ec194d4eb845c97eeaab4565d8bcb395b12fa068c54777bf9bb38b9fc767b2d261a8a782ea29c3e2e05e3749e9febc3b32b8b07ad38a7dbff219d3c511c44b457a0562644eeb3c7958603002ca020f43196865e58c842bf91de3c39e89496be362c0d3f674d3f46fb64c9d7e7f9e5756cf5ed7c0e1109fb8c8b22079d9c2487437fb1879b3f38ccf46195cd28303d98835827ab79f9b49929b470ff037503d26bc365770c4b1c9b0641886144b94c53725e5af313b77f98e3e97f1f0c37626c70c94c5a9e63883a9d3bff696d54e52a77d90c102fb34d349829dce857d0f3120d8d23b384fa4e110bbe091265a8afd8236273d416d0d1e53bec67f1ee0296e2ade99e07b9f2c3fc3a2b2b79321af413043de9a216c91300523e7ab985f6be9170d48e64df6ff5e7439710cc5e07187475449ea876423835d87f1750da9a7ea0e1ffcabde3282bcebff3fe33707d508165f61ded2aaf4c31d8fefda737818e864e3c66c0d35363c9a00801f4a89b238be336da2e5eae6e86987d6588f3217dd1b5cdf0761854bc458d9e1ca2a4cf86886ee9495f22f4f245322f135e888448d31dc07198f65886dc2a7aac636d184c7c36b86e7343e4288979d46d690aaf7f1331087c00c676ccf90a7a5ba170eaa32b6307dc532642ba3524bfa5c0ff0e504e8a991e2d77a2eec8756176f824800b36b100a53c8280756ca5655589bc9cacca983b9d14cacfd6ce14c34d80eee4b2634ab37092b43e80565bcb47ec4217453dd31e8340fa8e9b700046c6aaa0ea25ced8769066944839cd58c7067ed57d438521bc4b30284658fa08871a0e76fefa8d091934450b11cc6383c405b4b66db2d5b06f047e2b941883963830205ecd82a2e5e436938caac3550c0aee46b766834efe2f5d7e36f89dd42e7da3d40fee25e536bf9f49ed5a8f79c4f9149341ee84205788156e7d72d48184f72fa6c956e0fa5a6c83c33592ea154106957272893c8ee1eeb5c0619640613ea3de2cd409fd3f26169f01f0ef9384420a5f5b1809614362232ed24001392f4029ad0d7ad7ffc23d1901e8c6ac5b5ae01beff6ccac3c62442f2002d8f2d8a42e4f8fa08d3d31f42a579f2b33e22ae24237c1a3f52fca790402a2b1b8829fe367faa9f3b6af0bee3867ed8d53a04e1c399f8980e6deba6c83c140246b1c0361fd9d223a2bc7ecade2bdb2875e280e40c4cd02900edb3e8e36d84d16e228adc85d475002b238211465f0abc971d77cbe073948b83515a272d85fd6704009cc99632b8d0c3436b5be54c489e39de9c41c38d8e3f6fc003c8dcafa8f9ea89c16f5612f5b74a005607224e419bee123428d90919148637c5fd5a0902841200611a1854bf9112a998e34e6edb633284b2e8966e1830355141cbe9b2f53ef21abb489f338925a4bdd1c4951392b18670d90417fe0ae7c2ba7c024cef75a39dc050f8350fb36891cb672725a2d9e5aab21c4178603b9e3fbbd4762a45192c7abde074da99c3d4925677d462f6c9bde7f57c0c4669ecb8c76a3446dd2d1e8135ee5200ca480661e8371528b9f8974bf4adc67b9adb6721a52ee56b7aa2ea0436aded4bc739d0eb72e65ebd45eb5bd0dcce8b42b921a467ac2c99f2e7ab8dd30aa158e82b6cf761e66e5d8b3ac8136dcf5a0cb8aa4dc69529b331a23c1d0fe1801505f09060ad46f45cf563924f5438fb63163d74091ebb0d350401d3b14ee42749f39859d6580a3b388e347003a489263648723f6ad63dc259368209566d5069f8672891399c7faedd4e22660ef33f23f3821bb7a87468a2345e5547c0ed3080e583f74a97e5f4e4a4f9ed4f546cf922471acf1b87565c9c1dad89fe5bbcfaa3f3250da795c215b6aec886d5d2d2db04602a357c87fbafa65ab0ea2718a49d5dbef2c7338c77feb41557ad667e65559eb0d7128503636781b9bc985d287f364a49e8ff2f057205a27355878f7ff951dadf182ba2e30f0c678b7db3fd99a8cfb469ad278485e5013b36d6278b87f3336ae81473090176705ca3e6d7d37ac5d17284aba1ed17bf6648df801f80dd872742dd97fe01eb395d074349661748225ffc65e03e7c6f0eb8c19fa0be243554a154fc932f9f916b87ed31f74c9be5694eda30a7754260a45a084f2bbe86fe2eb8265e55186fdcde2da73595af2317367461b841d4b3b63d9df170a7309a4d4e05740134df2aff5e01febad20c8d7cd5736bf34337e820270c74f406ceb9c60426439b723fb12d61e0707f32289d792be22e1bb9727478b6d6a18524ab48718a3027a97e4e55245babf9dfafd593cd31c2d8ef9879595257a8cc2de51be16401dca0bfb131136b3830054886abc986c30e2edd81098c0a8a3c20ba8e7b0f2c7cb71c86599624f448bbb97220bad84e93a26d5151c571064ff127eb0d6c6266fcac0a64c86d1168ee4950ae0b14abc0071994bb2692cfb9aed7cf4ba2c3d04fa8bb4934e9d0e96b28a8398d1c1249ab6d4feb949ed41df629b0b4dc331ae86a9f746200387be47a60b2f486abc06bff3c46ae280da1f4d88ce1c625c3b86d3a860c8c52148d4ec353022d69f04abc3856d1b4da2990fe3d5f6e9ba10c53f5431cdfb169a718f7bb67a1f916113a8b198f1cda3880791482f3c7cf4b0a35debc79ef2bd78e3d79960a6a9b3c53c104f61e588968c4ab29246cea69813c209b72c918c3761e62e860ccab9db12b08345481377e19b235f2b5d47a655b94d5e238364a20f1f4626dca134434faee597895db44345747fb5239e26664f9a824faab34a89095dd9d8e23019c2abffa0b6dc7cda9b94ee14fc48b199eabaa337288c32524008d455b26349f993e8da12810ace0ba530a0c14afb71b552ea62e80cc90e5507280074cdb98fc5a0353d64edebce080b703b3b375c89bd72b73c601da68544fcd85be71353dcc17cd3b20b7f7be6fd000400bd3453d6cbf3d9024a189b5c96fee233fb72d8e066c6181b9de690e0ecc0db7665840382505d60691e67258fd1c314fa24b986976f19dbe8a4f888f21de859aa6d21424b58757728fb1b1377acdbccfdddae7fd28acc313020511fcd4c652538e80999b2ea6d68ae79cf4cca8c77b22453f35686f8fc36efe09bd227dfe50b6b116002c4896741209310976b20946240d402806f93316eb7a700df23b11e47a97e5c4909c4d02c8bd6c2f97e5bcbe4ea71411ca634e27ef2a3c00e0838afb1ceba540f4a653becc8922a3ca7efe47186d9ebc6fd6599ac74a87e2779bacab634d496291ddcbedfc3857ce9703b864f069c0b7b32edcd0c26d7b0005c02b543007c04213a45538152d3e4b7a4440e702ef906aab3f330a9666fb929f4b0a6ed7a2db98252137cd713aa184d1a82d6c6ee07757ad9d222c3e938cf86de0475460bf1a2d512a8044fecf0a9f90624c552126931a4351edfb21ef73b454bd75411ec512536212f4f15998deee08c763b69c64da2d39585ee198ede4297eacab27ff4b64d4f864b1e4a060c2739178f4644eaafa035a02c513b7c224fa009c94df37daa0bf02ae2eacb595a82441833477ce4b983c2a053a2411b001c8db10e67c27de196206848b406df84ba947618eb0c481a574bb46cc6e938a6367f357404d72b5cda18c402729b3def0a3567d0fe7c5f6b1436e563e615b8c1ca874e54829ed452c5c8e1982b68292c5ed4cfd5308d5104023ec54caa39b25aa14a40234cd96dc4335773ea52feeb8450d270bc0a7425dcd1ce707308d060fdefa4905c1c013f2b1d295370eec82fc5ac7d0f4c0930389aba1aa98c80a01553482e429036f8829a6a27b9d2090bc650ef530d92793cdfc544c3a98c5cea7d7e5b7defb5843d4bfaa86dfe37ab71a8a170129fe9d4d60ce605961a1fe85dacca46912b351ddb73d22282bbcd0812e032d13ebb4363e82ffde62813398b090709d14a2a05c9b3fffb6e26f40b7a6f4660afc6be2ba8d8325081550d24c8fa2a5cd695ee1f6a4526719acb4a2e4be6ffbf625b8baf5282afef9dab8fd0929e1683a58d8989c6becec43086c76f20766488b045098ecb14a6e43b95d3f31c148a51d2cc2d8005a7c716f09e7067913c97527bcbb2c5d9485f03463f5190a8805ef0a6aeabb4c4cf5c0827a708b8cff0bf0c84f007d7a898a6db5944dd8813655b97918097b3d5749fbe9ccd790f962f62abc85a80cb78b52fb9130ab68d38973817053f7aadcc04106bc4a3a11ce3a528d8d1a42caafdf4fd9a26056a8c19d95e0c8649b009196024ae0c2b4957c2e1d719e9fe66f43ce19d8e4c193a899712e0c63e704d5a9280e5af2163b23942c2382ec4ef4cf117c76933da35ee79473151616269b215113726b90923ea9d2cf6ae383f7aa2ca5187455733999db17435ac0273986bc674640e13058539e2b3efb55b26d858b8649e6d9bccb89d08869e5b13b696fccb1ab85605c06d1a6e0d386cc892481afa2543dfb603ebb90f80959bebdd15e25ce8e2c9cbaaee8cbeac5293b3ea56395714ee7cc945ea5b7aedb8b3e6da2f21d2e0e7a35684b9a3031e73d522f8f6dcec9ba1c347d500a9b4dcf8374fafae85f1ceb3adbf81c6df9cca9bd7d4d9c2d935251c15e3f1ca43632c4687835b798a6e76d56f42471d8b30898a6c8446da3a6556df1d726f4caa22d33c79032a7c01ce0ac839da4bb1a6e12ee7840c44f7e01b58a8b2710c59d33827b53894f0cd9340698c0d691ff7e6eee844135ef6be6cacccec0f7010ce1ad55a05a63809193eeefd660456bb721f126badd0f6c730daa95487b75298b1b1dc4be18e8644ccec1b16e21b30c3f4e48b5cf0c53e36153ad51a5fdefc0afc295f880791a150012b7d70e5f0e6f2e7560076274324feddecae740cdb2961e2cb1b1b653ffd896786a9aa07f0e6bebd533faf74a7ecb83fd4c607cd76ce7b17b7d6778ca03320831643b6ad31065c41397ccabbb4bc8dc05963c9af67c0780d97d89082e7c888753280a530676eb27924b46fea3697558bf60e3a618d59bc1dd5954d5ca9a77443995fed85ce926fcc43b7755e09edc456a5c3246743f2cbda0c88517d8a2f96016d2c724d9203c75f71859675bc39cdbbd6282abb190310d1322cd567434611376c02e62dfae61ad21973221c93b6306c4c43c1d5d72a92c75ab10cf9d60d06a1d08d896306652f078884a6e5588b3645403cb8a790f3c080ec4552a3c9c40d75f278035e507abb9402c0c79f0a5278e9bed8ff4487ad1fa9d48d8f481f01419303eb94973a0e3cb909cbab70e7f1c05aa78561b264444734e57e31e02ff3c1b49c84f4c3e382705fa9db5939ffe812d58e5f8bc43baf1f383280e96df8119ffe805321b2ee767f6074f68335cf84d7385bdc04e83604566c878a86e185bf42780695f29193fed075d73f29cdd027dd54818068251be8e69b00ec06b01ed6737dc5954895e143c80151e6947ab78faa34ac35579b06ccaefda85230ca9a17b6e4afaf0b2b0e0a7423fe3c4ad2f958a0ec2bc20e96f2c0285c7e8fb87c566e4c4c80cf573b82ba1d695e12d65f104408bcbc11850485618ecc0c97a8cd61a59b2859dd16b3679490138fd9c01d64b40005c911999ecdf6852b765a17a775220ae12e0451e11dd8de05d779603e0ae98c4af16423d2a583e7005a77684e40b2fc8a773a279afb61349a97f821ea397941e8e376aaa3d2ad5456a49f5f2419aaa163846bc1e00ac9790dbe7ce4a331b94edd9f7f062ab5e88de726816ccdad51214e823a4a47c6ba29abc02398f897b16eb97c78367c106a3b713b1706f23166d8220049caacd5d30e160d957528fa5be562368ee9133f36d1c39b632921bc91b2f23f5086346e1ab7adcf0142443308a1cb7792cce9acab4668425921627e46c60487371734059292badc01bfab804d1cd190f5d7d600dd8462b74708f76ce85b89d0f3913180f22d8810bb5c58b1ae21e60019641cffb1a6991c2ae3419503279746be519ec8a1abdd293a924c097cc7d935acfa5c61b19282258a5925337852aa27b033ba48a3b7c24fc22311d727baa9b53d0808d1df1fadc9af66100b9a7aa916bf131f4214a6266356d5b0751d60ea9a01479e46cab0c1108e39a93dea933b3a93f7b07cfea8e1b0f490cc35653990a0791fe6c9bc6aa5d0a698d05e9e40eaa02b3c9bd5227241b1a68c0f8a29a54acd2e2873c9d04bf91303f3640aaf0bc7563690d70f62f6315fa6d98e1e0604617a3c046b5fd9b322c3425ef9784f20b3b4ee4e059b4f8206bce9d8cae777ab885f3be288c20e974848877c7650d714c0f26c600dc0b3926151ea8df6456de32ce279b4aaef6a3fefab3681a39e736238f0ca6a343f1fae2733de8b33fa276590f261ce5724c33493defe709ac9e0f05dc3a075e5af4668e851b351340b73c9f1609a24adac50bd9ae1b53b2d08832b2d77b8323adbd25db7acf98df7a63d6cdebafbaaf15215d7138f52017c825da56e39b76732c2bbcdda489815adb91b13224146152858b668df98540e37d7b1c21c580ffa74f036f83c5709249d64c781daf50d5ae7926add22188460ea056f386e7530f31380d26ba928491ae391f0fb1864beaafaa84533eb4fd348b5a715f76301c360f6e0bb519a24d8bc01cf4c203382ed0b2cd15e910c6f268f91740f3a7c0ffbafbbfe4fa31988711097d28925c4ddfb477c430e700d8a877f3d0ebd78629167e61b846186f9e760ef8c7991cb53cfb3c075c692f3aba4b992ac45ecacd8ce5932ae4d2c77dddc5bf0e237a69355cf1eb248d6794bb2aa3f44d2e46fe3607a2ea86d41df6badfcfbcf53263d31ec4eee0fee9e8f5a093aba23cfad6c7a69c09496c04f907be77f7a4b9dcc19dfeb2b39afe4a478d40576f7ed17f6a683193369dc972b965b4e0e661f26bc6fc4810905b698e7361d666c4db0d9d8dccc08a43bda5a9e2f2485fb29e12270299741dd321ffd738321339625c2ed1da51e9baa26447b7b63318ffcd11ac902a7c3591031d0c77ad4f27b71fee0a8e0b374b26c4c6f1e8a52eb7e64cdf70fb04580e77c18127434529599e852b8883dba5e061749473a4fb96025d6b687f58c2988d8ce79491a2024233512150c5b80062003cb34500cfe9822b658930d059a69c8d1ade98a4320d3b6684513144eb13d59a99c51e952cdda3d2a5c6a54f417efdf54f00d9c4a7c5d344a73f62f106ce8b4bcd675697671022b889bc08c7b7592d8be86ced960bc39bf442347b34da450fb7c9089680bea094c4d4cc5514d1d090fb39996b0a5a2df496a65abcd5ba5865c6b554a27cd53de2a4a52849a284605a5c9f6428681795f5f5e0793243fc9faf67de291cc011acee7daf5f11bd29d7e8559e84dbe113c6d2e9c7b41a8c630b1f61223b5ac72b0bd3c39abee328bf0d91e2183cf0d25e248c2e353c3bc61658cbbbcd4305e2cc139dc04d5e03463c5c2906e17b81948f964d079b40bd42c9d119e4246ecf407e670039f4e702de9dd8e8b411b498d1901e6bd3a096d1e8f950de5a09776c0088d909b03ede54ef159144dde01b074202fb7fba81a6d29ce0412b4eb3534e630996b3aa17df54380eae37b4a41e098d36860e19a19bc3b94191096caead48b087b6bdf7931c9382fff9081d6cbea78e70e4c397fa463e320e2657a4c7a0dff772a69f500b2dcf601709ff05fa64b95e58b3574a552d27b46a5a6549eff36791bf7d90a7de02ed01ed732439f3326c63354ee3f42bbb658e137276341fac26df5823ecc480f672f2952eff19a0adb4b26193f33e570e4643a2c9cc2a477d9a0c266906002241642ae9d8df8a9fceae31b54fe38cb4f108c1982ae2c633a0e43401e2b1739522e587b074b8561cc2cd054074cf450113e40a713b1ba69a843ecc1110db407d1e38a0f91d525695859c6c200755e2e9695814b9439179da1892922d63fa839b9eda276c14a70f8ebc5765bfb0d628ad3f32d609c01afd65b5bd4747e2793a05cb2a6938b11983107cbde42917ad81813035d523b64ecbb1f042959245cf98112fa850a32265b570e24eaad05635c99f90ca195e6ec8450e547768976e5ab39329c09439d7cb3c100fc659b6ac6b279d30492e77bcca9b958ba609f47dccae6e263af212ee51e0ba21b4a0f1794adcb85aaf708706bc2242e5b88f0422c82118b040ff93bb4b8294e8cb85c40122ddb59667177b9e4587cca6ab7f1fd5a0ea8750f1b6886d45b7c44038d457235b8e82644213f2fdfd38c3737ef5e6eb612f0b5c98dd209d9d5cf4ec4da371a09405c4dde9ebe825cfca7fd6784859175a72b7d58b6a13c6fafcaa8f19d6a60b2ffb7942edd19d1a3840be727dac72b32ecea8c937ac0fc81741f8daf40d9ea335c2814eb3070b9505e6fac98e2a2dff6674cb01b1a1abfa40dd0b20599b43afe8379139e451c070483cb69e2cb22afcc627d9224cd5c6804dc8cfe1f854753bd14e59c3721690cba26a02940f95615f4ae4f52929162189af42863c63c2717ca6e42cee30a4fbd779a225d9d8722cc800191ad8cd5976883e9639552c3b46850d0626ace2278231856f21afa3da3be882edd503ba4177ce09d36d94bd5b2dbd4b3675407543d1feabd38f71e8d498ca070835f94c3fb9dc68b799700ee04b579805e7ca5984ea565c238955909b0271cbdef2b86c91ea3c2516b0d10f4410b5dab9163f92a85a71a2aa01397f7f868679627d089d27936d5022741240d5ec1662d30d7041d002549bf7ad9b4b558c0c73d1e853b0e0def1016f5d190706bce8c2183f1af2f7385302d9987c076c3d1d1662162dd74e861649a2a65ce5ee116b08f7f868ea64ad9b78b68e2dc16613826e5140e7a4bc5a3f2de816e6818647475271cdddaa70ae38ee21364c53292c901d56ada3994f1a3452f66e78eb1061af4869a2a006d5d47f3a1580dd66821fa2d4ad84866648dc6b176dc201568a00e05537985dca491129aaa71d028012802a8674d8a059016aee68b6e24d0667c2ec66e6e74e538dfc593450476fe7e3097e5c33e512858054f51f2f05d7f65b98b4ccf44a2abecbec4ca9f96ca41bbdd1883683dd0319d957b3aa8cb56cbe9aa3cd3ec5ba4ff62938ba9b53ece5461cb81913cf42384533b3a56ddcaa5ca0989ad8edcd653ee9218fac556acc3a8084e764a3f33aee235373de870fa7c0d1924b3d4e23ffc5166b8bd2881064f01b8a582966b155382af177c86bd4d387a2a57862f2d97e3db9ac8940e7c0b3dff3a64de1a8f94e15b2e2da062413233f3a42a0e217d3d092666e2178afb1d0d475a4cee4414d1aafedabc55a8a506cd1c283bba748b89e9a3bf33fdd8ed92a0d5d1447c3995417aa78c540d2ba0d693eb341c44f0323d9f3b8894ff022d1be2314f0485ca83cf031e98768e2013b2a234f589047b8621653fd9e3c0b153a1804a52de62b8df9ed072cdf7537415028fcd29f64344e44f4e3f2f54ef58e57e91b9f28626fe8728413710ad1b17cbccd462a1683d86057f0be9610956053aa3ac875ffb1e23fb41f9e59caa7957c14a83e700bf883f05402c766d22f418045e6556bb8ddf20861cb627f94e22a24c70738c8ad52077d5fbe822407718a2a0ac2d1c5168b6f8ad7b40c8c7e8d08d8314f940ef85d1987818538b765f767f227876a8d154687c25f35ec100834ef4192c0db87d34c4ae69e53bc91f95a45d5efcef4ae64a14c57c6062bbe04727b08d8436a7186e90c5aadf809e4317353bf883abeb7b943bff7c6706c1225ee5017812781ca0868bd9d2962803beeb234646c146c6d4e6b6f51d1afa21576ed7e8db9a80959c5aebb163a99b31b1add1584a5a6fa96b5c33cf63ec3701150cf9e276cd2a8bb40134a7fa3977aa315d72b8b97b62fd9f60392d6ca376106ed25bbc17f2b19b6bc0581db011801ef7295e6e26a83ee5405c31df81bc64451c28c0790022ca59250f4b81d2839c588b112c134ec98e12d8952ab765ddf0f62da7b0038cfe0dc09eb6d0945bea721b343d76726518f029e84d7f4f165e0770c2e5d28836d897348806c6d88b1e663a0641d068cdb4d6c79f57fa1e4630265611ce45f865ed36a155912e2911bc81fd7a91bceafaca1891a3b0f22e1ef3933e5c8bd3d3b8247667e184b3067fe8bf1238e2692e92a1e6451ab7bd3ac3b3b45f18e782b05a16cc479a1913a0e776404a45f370e9581356e001d4d3889cccbfb0ad4808e2d93410c407e1a3ca0fda59620fb6cef6e91d6bff2e28b384979307b31c01a4efc8136768c34c5084559de794159708eb624916506824ca8d82438ffd001b25e84342a82e84b8e54297c8c86dd26b4dc00f22f4a04fa2e8b4ac6302ec58d3ada9d8cffcdb028ff5962835d07e86839b5aae1328314443978e53d3d50c7cdb28607b1b1806fdcab12b1b010089273dcccedf8511bd82535dd40541e4fa2ea494e89eb5d90396feda144e7b606eed8198677b00d2353f2842e79f064150496711bc923b887b9baa4fa1b336fb144fa905da540b6c5e2d3099b540a49b308947fc2a6264b4c8d8d070bbee0e32e58054e1294f34ec08f76343b682f555fcbde7852a69bed39ab5e310c54f8b6ec3d402542bf7f7c133022e913970bbcd4d19fd6bc9e9b63075cd2430a305c05c2ce36bfc6cc09c5e760fb0351a072f71d8f4553f8205ec35f40d299afd3aef61c6246711664f5fd2c06c9980a6ec00bb75fcb0418438f72c9660e0f05cb463b0e2195660d1b15a43625ece4aeca8ed98548624c2ece40d5c905d166dc813c996539c9c6389c041b187d9566932be44cd86d3141d8c3667e2555b3eeae608730ea77d3027f4a110d1f323bf3d965e939ecac68d1732eccdeeb73965f198b585a65a417a79c0fd97a6c4da2ef6d60a4fdffdbaaebaf7a64e41c888ed1a42d0738074c4c4c2d0c4cb6fff6bc1a4e701c15f952b6372ee26c4498e9cc1373c6b0f572710d40db03680de2f7cbf15bc60cfb0deb4c819cdc9fa07e8a7be68c1d2440cfa9117ed298bf811f086eab3609e8ac4272001f8ae5d3cfaa728c3a44dc6c38422738a2b9627a23ccadd4cb42c0b3560edb1099913fd090ec6fac4f1d45099306dcd997638d213480bdc95001e0467f3611313cfc5dc2c1f561a1da362834c1f4e76929ed1444ad7454c377099c8acb68e73f0ebb766a476239fea938f45f0ae71a836bd7f8e61910a1ce79b7713dc814d4fc23b7c7301056164da290c4577523aa28713fe5e77b18261bf465bfc57a474a05d8878bfd8cdd0a3b46a773bbbbb8415435b6dc4eaeb7a857761a56e11ef3f479996a8eb69cf26338ebcc0b273834fa6f4539bd1758491a985784f71b9559895096f89329642475315f3874f9b30d6c15202b01389bdc6070fcb0482395cd798beb583d27654a04fa5c9f44c1f439555555abb1627eca89756ade4ebca0a0d11341d4d749a8df1cfb04a3ee24ed8ff882569110508e2e9bd467e3f531c3c5ff576b5bad258c4ebc0b6dcb0d50522a025596ad6c0a60f0139f7b80455050c34b312bd81af4ca3fe853729b9627cc7eb0687f5a880651e780b16e2f5e85bc3e1e5359ef3f35d67d80aea49d386cb58cc948e613306a50a26c2ad53ed388c2fc445abdb65575d4f58637b251914c2249b04f7bffb87bdba90f97d410003f0bdebd42b45a7cf37611ccf53eb2b62a68f18687a8fde177014006e8a8edc2ae487b1ce636c6652201281040e96231970faa8465386554a1404592d5db1eee2b4e0df298bd165a000670230c5380b2ad17456a4bb39f22bd6cc8e47b27a614b000a5c854317f5a8626da86add29a5cd5a2175462ba7c19308972af4ced0d1bb015e6880c38257384c0116f4341992a8a2ea7f835bd5e1e104519e1e509060dd39c559b55de78b891095a0829e42cf0a2bafa331a06fa404b05184fe47785cbdec78169e6f14b99ad730e93d00a59e715715476f50b84987a23cd6514ae080920a52cd6453935e12dc87a208ec5177bb2379117c7871e462503b58bc1faad01d7e5eaba09e57d267b84b18301b58cb59197caf72dfddc34313a8a43708e2037914df8f0342baee4d04286541874f3f8a6f93bf8012cb02095694185bafd805f41e9016b86b8035d7064496bc88dc23f86dc8137af3a46d2910e696d123b518023d14b8b2cab63840ab216aff7305ceb2828b4584bfe04173ed504415a403be93230def58296aaca169c14e0239403d8c578638a0ae044ea9537e856b091f2b3593b2087db14b657684461e9891247c5a12a948f1abea84e983c7213bd8475f36a04ec988c6b2741d597cdb5a14e85d7248a1be74ec41d03b3df9448e8e2fc8e13d7fa2f19b5a473b7d511d5712988f25731237645a163ba211ba017ac7e292c544e67041231dc5ec502057c0a6778c50bd6c968285c3e1494efc707519e520b7162087f350112fa7897ddbdacd4ff01502069d6244915d6403055e52c4700d55205c95493ac97090c41c2864198d74c389aa98e54445500c3949cb86035678b01047167c74765c95f69e0560482bdbc9c9b46d6dbc666c27a60008f41c398455b7bd783614a1d606f011698d10d2082164ef2df70e930d410d530da61498d2ac0f8a5b9787625387d425b939f556eadc73abd53af816a7b55aadd6cddc5dde9027645dc72a08623475c10ec907103c0dc1973a98ba197cca13020fbe43d221d83ad6baa9eb0975429e768bb0d92f774718d35a076d0ac499ad735c77f94a1c77daafd4b9eb29794926cc75bfd4d4ee21c9e0b5eb1d29f192fa753a764fe944f14c7d460f49065fea0863ef8e3a24fdf29e38cef4c1e6ea0496550cbeecf9784ff42b77473c203fd3c3ee05c11868653a049f65df6cfe81b7a76c0c0923036d6cb9c00982aea74093e956a0b7de6bf89a0d1f8899b836510ca65cd6c5c48226d8e41f3639ce4c9de55ca4f179077f4aa5ce715c27bd1b2c375999de3957973ace4c75ae9b1bb7ee7a674a9d7bd69e4add93296b97cb322ad35b2e9ba5cd270e743d46deb4ee3ac932b875c16ff6e4e930e194e7ddd0620efec464bb731c77b0654addd55baa83dc5bf9a452b9b965702baf2e677aeaf93a5ad8c4e2dedd3580d4c19b73a4a46744ea600b7ccb05822b19ecba76f26e9c0e5eef64b3ec5697a7f1ea278abb772bae03bd1a2ed05693c964329d6bdd18124677c19b6c8c8461725d654fbad34da99f0e3e6ba7a734d0d41d6ca53aeea9a71e3d1ddde966f0b2ba9bee32a5b4df485d07e59ebe79467438e572b99ee2d570811273a9d4711a83b6e214c5ddc9d4759dab75d76fb4eebaaeffc0a04db96c066f3a9dfb0f0cc690304cd76ca6d8d4655c967d32deca3fbb12043e7cd6706be52df01508b43508bbc3073e57a01a04433d756387606c17da2178936b729c99d988ed592eec65a552ad960b172e5c2e2b95c1c06432994ca99489a65a299aea8c9a90058d4277a45f58f8a2cd8631cc849db01406e6e0f3c03b24f484e64c783ba4e9829deb92fa85b50ede7beb99e2d6cd3c8dc1774849becc03efbd7597d571712ed7cde07ba4e9de5dd603bd2e4987d4afee76497a26e6602d5716e4f341b1eb7496f788bb636779d786c4de23e6de9215c8b66ed6963ef02e9073fd6439cec5716f711cc7712e57cbd5c25aae568beb3810ecd105e910f3cebd75f0ca107c2068bbb75cef5caeb7402e03418a7b74d8757376d03be709219d5cf79e7b741804ad37e4096524f8b283cf9e507631d061970e78971d121eb49e909e0943eb09f5ab85dd6523f684b4d7ba15287bc1071eecb2e7aeebbabb8ed359976599cb956112632ecd66a0c3ae0a64a244bcd6cd3cb875d0e60e834fd99cfa4cf1e0d6edd161ee602b73c1d73d7b0dd233e1b15720eeba528fa99bc1b77868688144a1b9768c20a65207411004b7a78ed35ccb9e6cf0b59efa665bd76c684d21c5d475eadd70b9ae8ee9ae287a2806cf55afc676693eb0f2d01b9a7687848f9e49872bbc2cf031a7066917ec261608de0ad482af7b76bba47e753783771d03df3dbb5ce05dd7713d25d4a10bd3b4cf75d76374b55ab64bd92e498718789cee90fad53af62e4997d4b55a56e2d4f5863ac4ee092161ef90c00a9422d42126a443ecf4061ff80ad4afecf9e40e29a85f992ea94ff4cbc3ee09f5ab3b764f48bf4c8edd1b0227860d511f21a1a121224488722b01619f55609f57f48ccc71023b0d829d3e21840d612c06b411b792065e4cc84cc3f70a145db05322d1056bb99ef21a0adc44e479e84cbe172d47b07c8b46d2483d4389d0a3e982ddf5dc4edce7ee27a46cf12cb10012d233748904d2339e8f4c2291c823d2882c22a59050c8276410e944ace20a9c8fb1a040cf7448347ac6136ae999567abfbcc7243922894764c8bcb0809d5cc3975b889006a27d96c89c914ae47fb37605967771f327dfe20863af4073460a892ef25068527c458ca8c8af2e26afc24e97c83b816590fcadb0e7336728d021cd191ad1451e8b559437c124920e292641c2d8bd9676519a3334bac8cbc052e6458865057e9db70447d70faf89fe7127088e667c871d13bf402383078f1d341816e9a43c703aecee96333be29119a65057c14d221d173ef9792790864587dd2f89f552d00c9a401d06e9b081fa45e79c40fd04eecf9f0964029940136802e1a644b8d8524d1887655b8c31c68c768d367738c6d8d10737161308a64e60790c2888f480befef6bc694bb06f3e1b907e69956a4bfd9a4f82f3240284e52b929e699f243f4a80aa08baa2e58160f916a27528853cc2f2458c60f926d2a17c2f75189f7b055f7cd638599bf00f480f532c1d610444eef0d38433acc007d3732cec1164c171ca76a1981d3e298f64d2d19c914ba20b3d5dc9234c354c97d0abd33e5170dca4d3de18b518a3365d20902db64da9c5f431cb6cb53d2c9e5fdf26e40face90db8bf257c893f09428348052438421d80a841066a30caa206db33279a80052e106189147558c31bd2708731dc0109f804e7c754ba864829a523c01475822258e1734a29a53406c4d405910c58084142144e2061481668700215467718ea88b801d3af6eeea15d266cb90c8d0ced03571b8e456748430f4ac023696804599460063050da4a909359300dd275dda4383470e028f597e8578eb1400fe904cecc3a72de74e961b1f64c059fc4dae53465af11e6085f0e956454aa164b29a5b559ad02175bb2e4564e37f8324fcd3c357668fa22bdd9747af4e89c1d173bcf9aced993c95cade6bd9b796ad85e9f9331893903a29ca4dc185d4ec74094d393326dbbd62f4e5e7a3662873e7306e7bb5933b9f9e36e5ecd635e0dfad3ea43ddac9d4cf73ccb1d67668abba9692bec4621546b29881d73e80afcd1d2078aabf9aa0cc117dfaf2ccb2ecd3771c4aedcc29c537228ed9af6ae5ff4da764ed3eef40810b1778e7ab4330570bf7bbc3c73b399e787cd2f5acc6cbcd82946dfef7aaba59d11f37deff7a393d3073d14cb6eda94a7b10df99d98c5177c3a468ae1d0c01176c774f799c8f18846f6123c27bb51540bd49873f698392a59e03d90e8b07974d8f3f2887e754f0cfb7874d817c3fedadfb7aa594ca2c32fc7259f123134b5312a2485a79931343290e8577e8ccc5b5ae2ae33989c8f134795541666c4701eab54c0f3fd043c7fa30d0022ccfcfce58d0c0963fe78d2a08e985c7cc1858b165e68d1a2d585568b05898585c505166b650b2b2b2a5a5051592159ad545950a9525848a552ae9092021e81208a1550504eaa70726242051393efc8f7a1a680429da4703a7951f0bccea8eb3828709ce90926d3e6846dd38c685a464596614dc093664e9a4967449b39279e0740b4691a222e3fa79c26245cecb022b92dc17146ca18ab80653c02e24d1112867c4c4a8284e7e363fac5d2d1a7efcbcae2aae563d1c0d5cc4a6666fb3922da440cf43357abfc39b101b5151f05fad97e3627e41378dee7be1bd0f6d3614e1cba676599042cb30482bce17a077288bce1eecd8cbadb766674d3adeb28edb25a297dd7dd08fb3132eaf0f7d54fdb73ceba524567577ee6cc8e78148f3cefd3f6a93d79663431a225a339e7f442b79dc8a516b8855783ce634b4ecdb5d795a3165b8229d1674ca90a7ae2bc6e3b215a5a5af2bcd77c5c7ba77358376d3f7a354e434cefa121a693ad5b225a5ab2cf44f0517cea7ea3bedfbab519438252bf56aa58525be7b65eb1127f2dab04eb997783f59d192d16f7a3eb38bd44bf583cbcf8e9668b4f67d9dc61d659a73d633aebdcb43d5c4281c509cb982389e60c90f6890205453326224f5c4167d77c1de60f879fef408c2710a61f3c1f3e14156ac5a4f5b9607c3881e962b69968e38307c3de7766e01ed026daf8d841e19e1411d1c6c7cec43dab06e27d5a5fdecfb4ed87f7b9ce87f74f2893133025b55231799fc5f2bddf22daf47c2ea24d8f662fccfb2d2fecfb3d449b9e9330daf4985ca24dff8797ee7d20600411837b5f26daf49c0c116d7a4cd8eb699a68d3d3d5449b1e8aebfb37d1a6e72423daf4600088363ddf8c68d3a3e1d9c7a2cdcbfb28d126f57e9f876863df1722da70efe374536020ec06c58bdd867eb09b904dc86e4fd82d2888dd80ece6048cdd906c47763bc2d9cdc86e463a2cb25b1139f4ad9c6cf04525d8e579fbb961bf73f29dee3bfd9d49edca49771d2dc876db75b420271b771d0da8e374342736af5e47fbe16a5f4703e2dd47678105d6d17cea7d74f6d1b3824dce83e1cfbbb181ec08f7dd7191bfdb93c22b37eb684fec487bf310d37b56f0c9cd9a910ee5909bed66ad0877f31015ef664d8a0ee57b5670bd79c88a3ef360785e27db71717386e7ed49e1beda1019322e2a856272e9836ffb913ff85ad784441b694fba4d29c2c8731b51bf7456c650a448113b14151931626474e4c8d111122448fdd2d990b248d22f9d2d4916596081e5b7a47e358e3626f6e13b12afdc8d68e86b4d22009c66c66770fec21f22e732e77eb03636d0c2c7c707d77c67e53b427c27c67782f84ecc77607c0788ef6c203bc22fdf402cc23e6a6ede09c07b56f0ca777cac08f15cb30911e35988eb68416204f11ca30b22e63988eb684ec4c0788e398101c4338ceb6840ee0308986720aeb3727bccf0f172989b7b56f0cbcd3db22be097679beb644b4bc280579e7930fc727b52380037eb684fcc2cb2b8035ef9cb33cc75b21e33b2b8c31df0cacd1213654bdf736e0ef1cdc7b97935e3e60f0097086b4343282994c99765599665599619654699516694196d581624711694056541595016a444a4a4a4149130a6a4a4a4a4a4b4624fba0dc38838a2157bd26d442f18235a21b24427441dd186fd603fd80ff683fd603fd80ff68384848484848454912a5245aa4375a80ed5a13a548796969696969696969696969696968ca8111197717bb376a3626444c4d59064dc7b6f100da24134880669f6a4dbb8399580441be9e19e3f34c8540a28e9d98818e5c4660f60ecd9494618d47313121ff5bdf167dfaf7338c7a5a5ac824d4bf5054b6dd362f698612d2b509e34217fd4d9b140cefa1a57f0a94af02ca1445884123c3d13739068171e9b1348321dcad99a7cf8a8445c62042eb6e4ae08cf73912666bacca778de7610a5ea50aad40539da718f2748b66347273f403a9cdbed7c96ae30c197b123a5969696160ca9fba4a1898909b1cbf57cbcb95caeadeb5458fe82b5b1be59f1656c6e181292cdc836ad0976842175cfd851d7ba79853794bd9dc59030241b52d75d0ca9c3706253a95fda9d9a364d3e4da3f37257748845f7d96d262c936ba3b1c9bb63552041822d99d852929119acf0013203238425e9572c8ac3916ea3e9d76c01e2adc3db69cf60472db87b0cd7591a167cdda431b15bd111ea13f516a86bcf80beeea7a823f28ec8e9132b8a284fb29d4f8773e8b153a910a762702afb4c7aeb9bab3fec6e0e637092eda692eddd9d4943b9bb49f7fb6c62d2dde43a26df8ed3d7e47e9adc6b727f72eedaa9d43349c94cea3eaf8d789bdbb6757712995574442c0fb7a53d1bf2715528f56bfb0cb14ab5c2aa0fab34ac7a6cd566830d470a8cbd08c6dee266cd08fe8eac90e0270995c45481697a0867cd5a8ccbbadc5770d3dbee8cd8769cb9d9942155d642506c6e2970ee4f16692c9b43fcc266d30f9e67b1d93484e7556c36196593129e5fb1991bc2f32d367346207002836f9b554fbdbd1ad8b7961b5e997e65a00563dfa2942d39f4299b81a9c4c4d8e591787559ac937716ebb60eebba9f74c76c278180aad4370cb39bd16604bb9bd19d26f8be7bdf92b6eda96710049fa5cf761df05892fc49a16047d8117694baea47fa7408a4c3e9a3ba4afa00f9c1b0b91519d98ef8985ca2cca1a23814c1710b3816c141092e8203129c922a954a45797632acba43568f5e0138bbb240a250dddcf2d44b707bce5ad55b6cc41c68b1d646cf060e939b1c47c4aa55f474985c954a62d55337ec70b3acd4cd91e1ab52bda66c9867805814bd1df58e6046928faada12843951ec48dca33a66332bf588bd83acd4b59161d56f9619bb9772150bd43ac46e62bb0eb1a75816f89d0c7fef99f8bbb443efc67bcd66cd65ef4f6cbee7645f8b156146360b6e1b87cdb76c3783c009bc1db35d449542dd26c235c0ee9bedd157841d0dead1ab41241ea9b0ab2e4e63a883d8c58c50ac788459360b6eaa9b35bc5d3b4e63481dce2950b08455c784b0a4bd3971a68d33c531894f00be48450a8e60ece8a85f193bc24830a47e452a508045a422053e9db321c1f3194b42450a8a60161ca9488110e634893335653df828ce94e34e9df46e68df8ed9ed2aebe28e19f5cbde79aad9af9cb31633c28a843e7bcc88f431825b4629bb19e9a468157ca86307df224575ec289bbba33a223ad83b2952ec84a2c339872611d5a7ea4e221d86730e7544aa63573df58c1dbc1d119e8a5de730db11a98e1dbc7927c3e055d7c16e47248564c3073e65b72222b023f2d5409dabf952de1d4ca530ab7acfc4aa94afb3190f3e1f29ef8efde45d9ed4cddfe95eeac7a9a3581f3b4b609deef24cdc1de53b1956dd9c72bbcbca71acfab1eaa81aa9db336ba82ecaca7bccf606505053a9c3f9e207eaa0ed7ed539d0faf0406f476210fc40db9893e0dd91b8672703dfd9cccade337187b2acece6c830ea3b19eededd2c31eaeec82cf0c93b6b72943d79f46e981cbcddf12ecf4e16238cea66560e0d63dd72ccee642cf03db3e5279605de1c5aeadecd48cfc428772a99494656c897633c235caf5e8d1d897de850dd75b1243d139f2e86a4c3f97b6fccf1e8a095d8da888f1df9a02d6cde8ef07ccb16e51f4430f6cdb2ce6269c66e8f7884c1b33023fdca403cc245fd5af93c66e4793556563c0fbc2f95cf73347a669b22bacc47e1c815f0ecad0b781ed98a302c626468542c2bf3aeb0495d75cca65429d539e9a5f048acb29995231671aa835b1146a98ed39b91cda85f2a1a8cbd07c3453e54e799b886eaee6438d5a5f44c8c1d674e257726f14cac7a7b3954c77e51df91aae3f44b751f3b1b8830de3795cd12ab2e6d1c3bb7591fa9c708b3b3811f38f5b823eb53966727c3971867aaacc49bddb911b1dbe8703b76b7231de2a4ee909f30a7de6c07df917ee599b4392102208acc4abd67e26d468cb7a3391373001005f82823ca888295ba3934bcdd1d99c57732bc4501cfa3ec6624053eabbe459c52712aabfad5517dbb8eea9b114e7a3a547733da2e45f06d8f38df887827c3d87b26de8a362346b44fbfb01e1bf6cea26c7ec1a86fdbb7ed1c68255eb215653af8543f61364b8ca55470f583f7d33342b5ba2c2af41dffe41f987fe01423ea86a5581678efe0dd8a72f065eca8089f98dc993487308a4f5b51eed15760ee9bb4e18fbda5afc058384d366349786e9d86c5be2287de28e4717a264597a3393387a2cbfcc494e64c9a43783ec3c197bfa2930214653088313e2924d229bf2434ed22f1d18b4487ddc7da8a4fe62170129732312f21121d764b87fd246e1297c73bec24e4121d3231d4af2aa5cc52882ed1a1d4b44fd6cb2129244428522bf1bcd2a72f83a4900472223ecb1fe90450bf22bd1248fee0befcb1409c9142425208f7ed13318921cb8faff9a694dbb31bb7eddb8b8c8c16ad5f5bc76ddb366cbb59bbda8d5865a1d185e6344e6b727e819ba7b4e9653795b2a9945947a5a4f928ad924ed954c8449b6e96af562f2b162ed0885ae8210594189d10462a2215be1867e09865cce0f821b46fa61430f5d83dafbee8d23dc5c6e8d21db49d8c843169248c150e89724f426e858d7694c01c7719794343c2a091373d240c19f226c491372b09635611f6103a703d8d69628d88e1c4813a7973657e7e353fe794893072ca4c21228c9c42cc181146ce183388082367103326c2c8193361441839614c20228c9c404c98082327cc7c893072be4c397f9872fa30e574997286b3870823670f534e1ee68b0823e78b2967cb94d335e5bc534e3b1f61e4fc9c2e668bd99a2c933557e65459cd956a62556a16d17d1e07186122ee6c4ec15907d7be3b4c4c9968d31a3569941792e211fd7877bc34a5f1385d6df8a2f5927ef2661e3b8e9073caef3842e29833f4156fc6a19132e8abe9c5a1c13438ab38b3430edcec90457a3c9048824788e73c4df822034fa4a8c40309aee6eb17294f299db4861d7af29e7db16187b3c6504a63c2fa1cbed4737d75a4cfa44d299540a8f4e970d6f025464a7a2a81805f8773ce4b20fd0ae55542be078e0ee7fbd59f5f5de278f59d9af675f8154b8773b56279dd11919258c94b3f9750a25a1e9e259650822a3197a089333c90422c814c4bb8d8af1b1177d6229699760b46b888bd7e6693d6f98c62d8a4c7ec9caf575bf55d2581561a193834319f4c2643cab63c14cb4c06cd4be26c7d315944bb6817c7173e1ac6b0c3bee14b378d0c1c29b5be2fdd0c5fceb2fac07a052ec6a0f3749ec6d7acc0ec39e79c1347119366ce39a7902fff2d48c0667ea4538b13b3b92bbdda47a5c48246064e8773ce39e7a4c9ab2268646852f6c49048c2a33727d13c3a9cc7eef0f50d248078370af918eef3eabcb3dc8dd1346d522f87bc9d8c271f23efbc8cf6797a1e482441b3cbcbdb43b176b30b7e31783e46266cf98ac5d4d808b828f3794b30d6dd3da71671f0c5bf6869f10c63af41b224492d9e33254a18cbaac0d8834e36f85afcc5c173b285c42dced57cef41e5a91f4ca6a752a9ace11516c7b19cb59272c1b960592f8962132542a5f094fac57233c7715e1267a2443c254fc94bf29478495e92c94bf29478d74bea8e56aa24d37fb01e120fa95fa8b3585cca7a482bd63b4a3d7b4748705a7691c5f2d861ec90f54ef2b1dcc523cbedb8b32cb7720f69c57a4736f84ccfde114e4d252be75e81a6771982d7538fdd637ca19e59ba2161929295b356eee299c55a39cb8895ebb05cb0b07bed65b16e767196732e2c8ba544a420b27296bb60b9341f4784fb0acb4bf24c388f3bb6b26229111196a552ac5c07eb52293a24a27865e55222ee52224488fa159fbd432942f6c417e34d7744c2c0fe0df15aa45f42c4903888c71803e3316a9e0f8779f9c13eab81e783d2b48c061fca4fce75483948539b1273316c7ec538459a42d82cb110a74714c911ece6c6df65ba2318bb10b61689616b91e7a305a1c5dcfc61edac0be3ae0001e3030f2f3f5ceb82bb3375141fd4e62a05c6ae7d36573360ec26366b78659332c52a362b81f38fb22c0d773cfc2d1e7eef66f7743b4ac4130251e05d35a80655a01aa402a5a43cb5016c712d1b31e7b211dff5d4532e57cb9a52ad180903bca9f59475b9acf7d321e605f9748801e910033bc4de4ab5aea7d4a248b869852f7fa9b75c2eced225422ef7aec599f0dea5577c18d481c23ae0bbeb6243cb81962e59f16572a95fe0c5bad3259da54bddbb7b577458d7755d47743a76b274c9e9992e399d5eb1d92a4587a7edf4bc5dbaa45dba842ea944e8125aa45fddd5619dde3de21f8ebd16f5cbbb3aacd3b5d118bcf7885f8ebd1a8936e03d21fbeb82f518551ee34c87c4a1b83eeda0ad46220cf6175b7fb0b508125681eecd2e70767bb30b1797e5e6156be5e64fe5ae2ee7ba79f5109f6e0e7136832ff5d6a547fd4a9de8d189229d4e274b91e81145428f5ca7f48822a1489306340aa7d6e9bb76eeab4129d7732a656b50eab902a56e0de2b2a77336b77e0a280fe5799e7733eadd3954473b8aea3acab5a7836b2f47111dcab374749f9f5767b69763bebbf24887b2e324977974c89d67e2aebb49f43b8fe33ee7f0cd7b371f731c873a3da350f3a8a3de851d72dfc1711c8fe9c21dc5ddb3383ae4ded9223ae470f4cbebce7dc7a93b77d2c5ee591713830f47bf6414d1afac71e7b8e3c890d1af3e770bcc191c3ce64c185db8731cc74deeea482229a519df17ecbc20a5943139a491a1118b9e00c5169a5a3a079c178c0a2498206a31c60784f3aa3fd339dd54f64c2c3f2fcfc4f3c6fc8e9c11b704fb15334d8e30d52611be7a9c59bbd6db036f55e34cb9c3de37db038cf54d294b5204310000a069f59a9d5d3d0b4c0bf74c8a8f93c352eda27783d36c3d35aa5274482b91a988a9c82485898869a843aa699aa6d54021a4c6f484c95473933509056935269fbb2d5dfbfcd16a4e55ced5b04caf315da746a546a5a6a646e5ac732a2c134b8565ba0fc04a3d9a2ef4374ec4eaf530c76024454635b7335229b284c5af9244b5db211d7548bf1929122246104160cd0037f9d49cde6837dacd7388b57cacdddc6837dacdb59a9a031c7104ac569a86358d889a67cd477bde96b46baaf9341a831504abe6db9235f9d4bce62c216204717bb3f61acbb21b16269f9a9abb2d99824c5b51cd59aff99f59ac9ab39e37225c731dd6b52da843168dcb62b16efe55cedd6e452a76232a425473955f85a84891acb91b51d65e3f9c7e33d22f1c22ed0600c6ca857134673ea47ea192f44b4b5a7d316efe82d890583cdc14a4d9063aba71b346538f56ff1ce248e6e6181f7cf0c1879797979794949494949494941e7ae8a107193264dc143463c68c1928282828cf2bcc030f3cf0a0804f2c7c19a6354a55744bfab572faee8a7ea99c9e089b80d758225e5373693e8989b055a348dcac690db8f9fb1870f30a88c79e31e2664d23c01dc03d29e2661a1a1d37c7c408e0e630cc71f38fe3e6d5aac6cddfb78a7da271f36aa5baf9fb6cd6b0cbc1d66f005aae1b95d2dcbc5acddcfc7daf9b356ca3c56d0c71f36a2573f3f70971b3865d3c27c6b5f97eb3866d5edce6720d5f9fc7331f7cb7bd42b1682415fb75a8fdb39a145f3605c1b8b4de6061d99b1ef3ae48bf6a4e4dafb92da44313ce3459986bb9852cc0e61e7ad1482e36cb4e623c6c6e1b9b698ecd2d366c8e466296a713201460730b419921a38794171f6c6e203cc4d8dc43389b6cee9460fa04d8d0e61001369b9230fd1136733e98fe00367342992bc2f406b0b9f3c1f4d8e64e08d3ff6071346cf3be5998164b612e8bcddeb5a41e18c45aadd59a6c0f10a752d790b4a4d4a396a45fdaed698ca425512d0500db4560d3b9b96d1b6775b4db43c60676d37398ba946da10eea70880866aad4b38173d5378bf398baf49fa6dddc03c4dbbddb411db61011beedb983ba22308d73a620209a1094040929c934d4afd884a023339d638262e9085ec1b1688908e638d9755d4725f66eb679ceb9ce7ab7b11173e036b6f3ba7b37d7bc3b8e886bbc017477f9b6d42f977746d838e7799ec671375af4767c77043392bae3863a17db33b1cb6bec4e865d6e43d1217579c49c4bd7ddbc3b273ded299bb5db336fec4ed6dd788f9e8ecee328bd71ee93a8f674d8388fc4358fde8d9a73995086c51043fa38d348d325da708f6f319884906a9cc0178b967e3076f23ccf9b02e76435364b5cb361b161d12af84c3e4b12e71ca739990dc154a45fb91e692b2d68b55a3d7a3672906c8e7f7801ec0e4bc4336f00deede1993780ee36ce655d8d95f1e8dd98f11c8ebbc6612d46186dbb31c0d7dd87e3cc1a22eccabb6633abe611a7deb16aae8d0c7bbf336cee11a7c0329ef31bcb612eda656939b69374b85d868d1dbe3cb5bdc646ec6259dccda161edee6419912f9b828230d58c78d608f0fc6195bcc22ada009eb5229e3fbc52f3bcc22b389e69723cc708e039d4f17c9be71566650db39a95c30283a585456369d1ccbc6e12e2e63243104d17fa1631382daff0f387ffcb357c01b8bd4624a365dc08a296710210b58ccf20c2f4da8c0168335e8436e335b7e635ffe166ade6f8e6afe63637af6aaee3e6d75c00378735cfd14835c771338da4db5bbeed3937aff0168489728e0f73f15d2efe49cec19cdfdcfce53c75f3cadb906ca88dcdb96b73edfe70220e809b1cf374d878ecf0e5e65682b763de0d1bef99b8abe8d087211fe79df3c146ecfd86ed69cc7de564031fcea178357cb8341fe703d771366cd8b89a6759daef33217c356e6602d338c7795d63317dfa8a0ee9920ee9bd56e2b86b9ae5a155744893744839ee9aa675e76c8fae9182f0a59e1b497be7d5e0967c4e6abeee4887f49d57a34362d415e9e04bc59c215ff7bc2de19b67eeddb55b12efba28f724ee7943e2ee96d46178ed1bd29c9139dacc77d4cd65d968ec72b93e6b7aa25de8b9ee9962154ee1149033610ea58b9d79da3505d98183c2544587f49dcd3302308d23300d9ce6525d96c1dab9ae5aee590f3eeed5bb597bca4d9e0ded37e76ced21834dbfb13d6430f6006ccfb1196f3856f37298ce812a29ab54dd4cd9695bda30576f0aea17c5f4a627e84d4626243d2323c924a45fb1682908532429303d31059988307dcca6224c4d4730ad42303da5795bc2448d692bc1740d3877159822cd89a421793632bc2141f13511112428c2ed8da48b84da539f71b35482b76d0988c7795f1ee7f5e1b20d5f1fe1ed6dd4e1f6bcc9b8b981e0ed4d146d4c33e0e159855ff0f08287670dbfe8241dd22d4987dab91bd4e1c6ddbb79f6bc1bbb056d4937a7739bdbb6346f9e72eec66e297643da927448537e9382b425895aa621617ada72fa2d6953d2afac2d7957db8a7448bdbb15dd8d886e45e837a27e69a96bd730ca4d82946426b3935b477bc664128aef82bed4b329c8d3717a2b7548afa443ca79d76cd6749c1e3bd46c2345ec01e14b3dfbc197aad12af86c6e6ec1db65cdcd524803892edbb76f9fb9f9c3adedaf6b22ea57d09cf94e1fe30c05a2cbf6ed43dcac6d97b9f9db2e448b1837afb60771f3b73de6668d4674d9eec2c5e540dcacc1dcfc6197bf98825ceec3cdaba84473b93ef87a782a3c8d38ecc1defae817d687c42d762983f85a6b730bb9f5415bd81c8db46c8e4a586c964058364b212b364b252a36379095f521b1aa7ebbb1eb68bf721c31c270aabe1ef58ba5610d443931a9487a46eb723dea0c80583bf54ecf6d9a36e4fb6e13604e14f50d843ad52c4764ba505334c24ad0cb231249cf28a19755d0cb2b7c70c4cb4181ba330d26cf7ee01cb61bc48573c63483e8429f03cd079f69083428c2d0cce60fc3e23bce9b2908d39b7ee6cc46b42d4da215dd88305d618a5d93a326fac78c26e48fae2a510597b15a394eda7c01191fbb68b35339cf4dfa230bcc61f987bc000f955787be76876531b3f1f3e62a292a471c7d48497f23e29e89ebcdf40726a70db8c6f1f2e623c0ab27545074476d6a891366476dca122470c912dc3605a3584182132b78904ddb76057f47b6694d1db5272bd4c075d47a56dca1eba8ed5880dbaa30e775d4723dc06d59983b75d49a88705b14de8cc220e4eba8d5f06cfbe10c4fdb16056348705b0f73281db5d50d63c06d8f3970dab620e6523a6a270cb85447ad0ae6541db5114fdbd604737115554ef9078d456f8802b765c13fa6a44ce0e8a9f5d12365ad3b19ae39308facd7307da4d6c725ce9471da88bf2e872f311ff8c98418b33df53b31c2c4b36c68183b4f953b31c2d0cb8c8b36cb26f0693c76acdad038e923cb64f430396fcf2401a6b4888b2d54f32e2d76ee74ee3b990ff9d3e599787ba7bd67dead7eaf376d26473d62eedc899672ccca7352b33d1ad6b814db1d3bf96633789473dd61dda307f660d730a623afe1131b31cf0966794eee4e86a58e7cc43fb0cc029fd89d0ccb474f7bf4b6a97ddbce73daaecee95dca370b9e4ea648c110ce31b89f5f5e14379014718a14fce0be4c15603e3976697d9cbed3844f96b9097c72ead990f804bc2816fba69d7c6cdbddc970dede9dd33accca9393ed5dffe0ed3eb8dff2d2afeef64ccde4bb3c13a3eed98ee6d0ac0f9d2dd37eacf9d8c1b4777767033f3076593634ec7d033f30cf4e86bdffc03f708c305d0df9036b2c1ddcb76fe76c36491f9a7677b2472cb9d971a76b967bcfc4dccda7bb93e11a318759baddfc036ff7cecd4e7a1b17b73a7cb1094f2cc1391a35e10925dc2f2222c5245b7bdb3deb03c3ee4e86b56f367b0f86b3773b19aec7aedd9e69c26ccfc47667095c6f33cbc432dd1c19d66eb4d9e9c04e86b53781dbb3d1fd9846dfd91d99056669dfc9a62dc266967673c4a288a94933d1e7ed5ac426ed793bbd387674d8db75b66bd7d95e04b538746c778756df83e18aa388ac67e213103820250873fa40b067f25cb43ea68cf3d18b8fe246c47167cecb6316c88f2b670471c9055282e73400a2c8acfa9e89e92396770876630f111febcd91e1f99d0cd3d33ba46f8c41c8cb9b29909ce8dd881186469818c3f8d844ff98549ec173410e9760423a11bebcc8b4605acce998fd685ab00c71248c9627524a9942e1286f8a204084e96793c90b65d370f70e09e30809a34f809322ec1a31e278c81b0b20f18068938108d34f3a42824d6cc42a1836f967730f96bfc9cd5f12f246090ac81b1e1f4209a3aff2dc4a4cded2aff8d9ec012c2f3d80e5d5f98e5d895659d91f31ecabac2c810cfb292b55e0439f473ed1dd4593fb654b60d8e466f9449f44a2514a242c89da877b59c2b4c277dcfd434a097031c69ea818638c3146548c32d2a0629452ca28638cf1c638a59432c618a59432ca1863d4ae8894f68b67627ad3e535ad5f3e7276ed3b2e70cfc4a67340c39809a3c7b8e8d530996eb600f66c7a35b6a9536f018c5a6d27b3808ff6c1dcdde9b63cd1ab61babdfdc0d8a61d3b6ded9bcd58cdb22828e18998591f94de9dacbe67e279698726594db055eedb2eb8bd5eeeb6b8dfcd65c01ea28e186658733cb0c89b161d3270fcd8e98f8fac500760872fbba18c0ee51b70872f2638464105579845e0624bfe6227831d38462a55c33de7dc91b42531c40635a3916145a6cd44a3190566d6011fa0e10b4b8cac010548dca0822be0e6b1a3c36b84d61dd8d11149d8322a43739b054330516c9aa0bbbb91b083c7114747ec98331c7777b4a0db0a555071063a04210c434b72da0adc542481c18eb91dc51d3a4061b44d9b06243b22090ae0b014b1e01c9f44a2bba909c729581084732c5a626a5089908c3f32f00b1c6170b4c97e1061fad93564717c668944a71fc91ba9052c441bc90589d4215112bd19c58568d3975a8837120b09a381867e403120a0cb9f2c0da47eb1740d8985bcc1b188368873bc19e5e18e30f20e3724c6f1f972fbc40cbbbcf9c3d1a51f05ad0bf96808adc831b8e780699a0e9f10125914332352eecce872cc0d4deb9e734eef46e3186128adf9b0257c79d5695b67ea6abe189349a66338192c29a5f42fb1a8ebbafec1d7efbc026c3971baf4f53c49a577e3d4f50f3e5457f3a1bc1a3d5052c9d7adf47d9b9661f5a3f3fbbeaf65449df20f9c6559866559cde8ec4c6659963285a0d65a6b77ed5aa5ecaeb3d65a6b955dbbd6d9b56badb5d6ae951ea1ce5a6badb576adb5d65a2bd6ddddcd8410ee1e7c990921dc9f8dd5aeb5d639cff0758faeb3d65a6badb5d69a1d9d5851061a44e569b792b2bbbff9ad7e9694b044fb034a34880a1a54575fc2d7632ee1be3f4b4a58aa4ab89908c2f5ddef2b7cdd632a7553641a84e7cd3d28066810eeab237f54b9f1e02dbba5b773fce1798b70f2b18583420ae927a60a82a800480daf78e92578e54415b8cff222a916648c498edcb857983846410a556829a770020aadf16a72818bfda22c1b15f727ae33ca9e271a61249546d0897f4c19014e4a3ae72725edd668ffe0a3736a92e55f812b9085d249e911289d74b684e159ced2b2aadd9c734e292ba5b407fde9b49ab9044b2680f05cf2c91e72d239e79c739565d9119e37e678528473115b1c7d6ca9f9aa3664ce7b3f2051f42dc173b41ee2932430e168f48227a0624bcd9779cf43d468313499ee870ee66bf978005bd9058e40f470955536c9a655aa3ea3b84aabac8f1a18c4d06de1b30258e3142cf2264a18d906d7237557f8a480eb73a402d7cb608111c3aa04d7ae0bb89ec302ae37d9faad5e2302d7cb17ae7f16828768034484a9af6f91372f12461d0273f3b5afbd3d1b53b33e280e333b04437d40a298f4fdb86466340002c72800b1a2e6cb4cfdfc61dc39d3dc664ce7a669dee09bdbb159e794afdf6a9ae490bef49ae832d0e18ec6a1964ff1d5e3b4d6d13ba4fbfec3e9188d3281b321711feb3ac43ac4dab6befa385d5836249657fb6e481cef35e19bcf9a4c01e7157d2d3e2051f40d89575cf5768c600657ed8d88b3a52ff3541c6ba525f856df11493599ad0008e9cb5fd13c9a2de0ea66b12a7ca66b2fdb42d2b6102139d42f7ae5d06d2121a10ce30c578c590cb757831e33c2972711ae423acc62fe4c179b51e1cb1249066149df24ea9786ebe7cf9ce99caa9467115c9b9ed542a0c0f57d14c15054df50f42b1ab92029b3f4501190f679814f6d8c4aa47ee596fca2d4af9a63949801675905ae6dc09945a616b1a3229130ea6b9529c0558ea00e6f9041d3a5d61cbdd0e515964137c380378728371fc5a4aad4af5412492291379d8308a3d6a76e86a94fb939acf52837afea4f6efe40936bd33b8830750bb8f6e86a78c7ecc41886d91e1dee5a28c2d4e37436853a3113db4037b90dd4610775900e6b077590d3b3eea7aebb0cc1873a573b08a881707d03755057730bd51692c2c7619857633b47ad4cf2f6ba539b6551f83235b5507d45a2b59eb33294bb321d564ae9a5b931f5317346e6d4d364376649b84aa40eabd167ba48b87eb32da4c3fa9a8ff65087f5da6da10e2b0b3b1552df42fda2385cd08518469c5558f8a4105d22c6e182264497885918a731287cd81bb7f4eb85bed24a2bc56c6ca92912650a1c1763fee2a5f6fe65691747c4da49e83b4f6dacbe2b8d2e3da50cb8df7c598bc28f14b8dfb1ac9a0db81f2718fa65de18f986c397639a46d64a57584a6969bbc4a29eb3045fbf7c9f17a7434ba34379715c1a30f8722cc2c109b194ed121f656c913b909191a1a1a1e923dcdccb762ee2b44c8dd571ba85f26ef18c0aeedbfb5913be1c97545a0769a48c97e0eabee1abcfde6cf8eaf39712535262fd991208b79176e92ea2a181a38d56cf313873b138433dab649b166db067cf3aacd7a79e3dcbe02c7b17651a1cb96c8aaf66d6535e7bb670cc2f70fc49fccaea2c171c554f913e58fe6409843b48e200f7533d6854262be3e41c4ebf585ebc786ef1f09c4279b02fae0dff18b3d7b9784683597e3ac7722afa585aae75f19b5de01c9752bed9d6a544893e59a74001128e61c0718a13cc014b4f23fae4b37c04d689eff18253525e97e894df94db94ff72b58b36bfe098536e8e57b9ca464cc14faf86ead9e95d58ecd19e64a9bbb0268f5e8a159f6530eba86336e533df409df594a72c2b5e1ba8b3ce7ac4299f361ea7571eedbc29e5d19edcfc82e353b2af8e333f13f7151bf164b111ab5636f778c1dc5136f790c12667fdb399098c72731c3162d5a7bcbe856d516388966571e599edd1e1142bfe2e218496ed2410954ec5085e441aa2ddc46a679d65539ec2ba4b74d8292b1b71b5319592c5a8744ab9ecb2cb44871d978668c7e925e68c76bb68b2e2cd5a55b1e0082e1133db465d94b59125e6cccd9aeae66325be6769d2478a405317b591f6e2f5bef8959bb5d5657ddfea92e6e03bce344b709a56aff295a8139f9d8bf5d3b3c17aead1d3b1526f8eef91b87ef55466555eadcaa355898f394cb44bb3e24d8f7709d5b5c0083ecd1b80c4591c40bc43b4ee204a9189f551e3bbf20a1b8d1b15df595676d3cdbe5956f698a3bd764462a25dfa995dc20234738647a5b911a98fc026fa078659296afd71acf41d0cbebebc095e5e5e88d0c8c0a1913f500441214323834646862643db5eb08cc10270f901cb1704905fc1065041c1b2c3320112c609033696166d4e64f0760d87660a1a19df05206f1cd052c07d13931726b07c9f0006480003e44d0f942a60142cb06c81e505b9440f79c38484d15f49425182ba4a98c4e0864f1e7a780358de481f7923a160025c7245073076754e8e5dfab020863190368852480fc59040a088319140a038b9b42737094193633f0151283d58760063e7b0930e6c18f5cfd23804ead4ab21e310a81b6258fec81f192c656430762591ae09f943f3505074852b14610e15e58b44b2840f2587a339b3dd069a2e5193d98ac83241f561bf4c5e415c69cf68b57b76aeb31d94d906eaba7879345de2a377f3a7c47c96d8e4f6131d46eebb353e4ed4ad373b00cb7b37f3c0f2c6089391c0d2478d791b36bf60ed6d7bc8b06c34aea7971b87441e7518b58d0d417a4622e906ea80fa95dd7e224876e511668df0adb418e54f8cb17d706ca1cd44046e9e4345278c88fd782512969e11f2ca9f0e6394464738fe9052ca80e3a23c82a57c3133ab4406b2eb60ef9acf3484a7c394d2f7e8307d0310ac82e3142748c2ed6597a55d52eeb2e8634ed72ef3945e4d9ba703e86397ce619bd7ec9cd89db37dea0ceae9a6839dd2d8e6a4368891a189b1400f274e62f80e5bd35edad33165daa5b1bbb1fc85823a8e0a96999572cab004394c311e7ca2844f763c8a285ab94a7f19e55f5e029f5c3af10024545690e09b752d2dfdc29e99c0276f26f0c9d54139f6249234d00302203f147002755b5a948a4f8e72f21d6582b227252525a59615f875284dc81f759aaec8e2290bd8d5382fb10fe9ced168833da6e088e3637cc52ea5f398ed773307f1851e3335ce4c50abe3d5e04c17a76ec7b4cbc21e7368b44b638f9958d1ec39e7fc9c73f6cc825e7e019c20967282f25ee0628cefb674285bb853b087fb35ce682f5ee01867b86bbaf5d62b1bf78cb5d61a55e2e6414ea63822e108316802eec71718a79ba03fb0a6416abe99c96b339b12a79560794a292d9a218548204ab449278db1d67ab5dca2551d6c24f8828cb1484744b694421e8e466200ead92d069fd39249e7340a43525f0547a3304081a288401c8dc220e4c3d1280c413a8cefec0a8e33c989d5fbba0496403ae428131dca9f0e39fa2a7deeab7422c270f33ae88e9c12f7509c95c0d54a1cb1bc383aac310a0d75fac58fea705927a59472625e0dd43f1b85364fdf596e725dcde79df36aecc439a7c64331eaf5d476af97e21e89bb7bc769d43b8bfa44dd24321ba04ebd1c9a6784f677b4abde73adb57ad5abb5d69b3dcfa3943ed2386f8e4af248776967f701d04ba3537f3a4fee3e6dee74a066c4a8acf5e87076ea5ef0f5b94afbd53df3610f4814757e7a46488f45bdc9d5f83ae4b8f7d0c721415f31bd2c5c38c317cc1d47873be6bd73debb735ee77901ab5ba8e4cb76b5b99e658c66240000087314003030140c088462b16834a2a9829a3e1400108fb2586a561d68390e33c618430c01000000000000000064060c0000bd1fc8ac5f84dc9daa1c72c28bc088466bb9acf2e033975bda129d34f00789f8bb4b0a40675e2e46774598e5f34abd03f5311908580c1b6018dff0260f64c213132c6ac173d6699b0de888cef975beacf146bd10324e0cd3185317a80d19427887216f1574651ee3286478a123697be4e980f8c9e6a090804a686d7c133c5603973d405c542004defc3981463646bde9b12a077b7364a48c4ae21263af6446a5a6796b6a1a259ba1352ab570f311f253e683aceac430476f6214a72af82d0de58800bf407175548a5b8c684554cda3ef93b4a46b0fd0c1bf8a565ab8d9bdfa96fd4f137a5482fc4d09631935586aa80afca1179d2512ea9f1fad2571551ed49e353cbe358fab689522e7633452ed9cd7d920ee6866fa49f18c4341cb2a64aa41e149512784dc260616033cfa21deac1bcac3badb78391db1a96f0495b702df78b7d033fe214445c2e242513b7b553d5f6910097c1277825de73a90b05ddae2906befc878e04272855d0048e9e27cd5a5fd96fca9a47cbfbeadf6547156cbf86f815e78199647ab6367c2a7cdeb9ece7ba8d7429fe634f796b612235bed15fcaea18a0533b65817c405720f85877e6c0b2f6a0f1448154bc388b37987b6f58c9c89414ee0ca9d0658c7f535ac9838cab2ed7db0f54c3c1e041e1319f505dda3f5c705b6894cf0cf3fd3b74736fdbd9a07b929ee855c8c3dccc7049027059db3e9d2e8c53e93285f3e4a4189f86854f5ab3d044fc6e7f2829cd2e5a7d980500c8f69309b722e60d44d86a88afb2290e44dc2a6981d749bec9ab5a2487e9c0d22a68b3d0b305eeb8294d003dd3af87ca7b58beaebb0a55d2cee5987ab7fc5e5544157dfd78d3ffb3e65c9bacc0c4c0f27d888989adfbb91b5107644b3d95b5009f4ab1afa69794de46bd74010c492e65ebc86f7930bac78cb140aa2ba0802812a14ff0120513d1100d959122d629d0609406f1483f5c02fe74e9cb68cb931b2488b828efe48116911e242f2ab98c11dd4b7bfbf07905d095bbdb5cc8d984b684a88965073838f51157570eb78baa364399996bb647b981714bf703b6e7fe2620aa640a75917fe2cf8a5c00553dcd0d37729751d4ec42099c4ba6fc433d39ee1d5a09550f954d9e535e61df2a200a8f8befe87b7668b220b0ed0a2e6688ab2daa8944f5a760f95b70afb0a7d05a6dc001fa6108cc3860833b6a3d92979dc34982cc7fd3facc79d1cc65750f338ff2b1b3fbd4b69bc51282f30445eee5d80f2150a150188e91f528f7bd8c1c41a7063a8d697941580078883429413bbdacb34a6c2d432491c44e507ac854e66053a28538703ac5443fa7361e0c400252be647bd468e0add3db18945ca1cd82c097a31a511ba1ee8c53d90f35fc6d0ddccf843862a3bebaae05d1d7a8d064d4f4798af1b20ee380254cad24dbdfb6b457be51e00be5b82759da17b9e7e3b02eeee5f96399e304d0304037d67ed4c61e5e00bcde2a93dde8acb326e64e0383bc80ce8b7225dae60cdefa4bbc6990a06423a8f67d202f18341de4bcba939835116102be4e5a46355f9993a16f1bc3beeed4ab3375efb94a16748de9a5f34e5acb522a0dcfd21a1a2563c2441493ad358ae50814b1d767800a2168e58652de7bd2d6fa4b5e2b696f4836c4553d1e7e6cfc5167fe7bd3743bb9bfc4caa19274bb9e4cb7763596d200fdde4d355490b963b52a65e6794d1ce143fac541c9ce684bdfda44e94fae9491544accadb4feefea4ef165e87bee604a7fa2d0ebab3d12086cf6c28d4a1eb36eb6746c8ca3fdcb12ba9a3561f0d42704cb9707753aaf28ac130c5824b145f84a8e5b615cd3dc13e00287ae67b35ff8a875f46c530f408e1da175e285b084d8424c6bff5ea2158cd723bb6cacfb746afa1681337e2ac095c0947861d897f3ceba77d8c4cc2888dfb09f80e1cc2b516aa2d5a56b60bacf0f96763e8332210344d88962347f858465e5814f91891807d8f502d66dd641e6b8060e9583d01046923e22493124a1804308d14c13522810cb53a92084c9530430af64a82ae8f3d6d86173d3754d0e4200d80c9513438481013d8ee7928a27a211f2b191b490998b7dc0875270a108174203be699323df2964ba62cd0d21c78033878d4e8625df38703db76c6527e148d9a8f86d3772a2d48ad43f1f5e00ac8b600fcfc4c47923d464e7c08b523c0603c8820330a0c6feccbf3b98a805226a426c73a66e5d6e8521919eec1c6bfe7ca6e105da758b82dcc796a9b646f904cff05ecf897f137b882e7082b0eb89892ff9abc6757a4ba29082107925da00de4161af2c05a26535851a57400d6b3ee7c62261643aaa6480326229d007bfb25f8aee27058ac1ae9a40a7cf386a65bf47e2520b69dffef731982b8ed830fd89a1374ffe6e477a6ed5229288de059543b1c3a158603fa424fcd609b21ee7a838cea50d244ca39e267bbeed60d3fddc52e27e08fe05c5ae462cac4b1fc1a933df8da5d67546d97a3b820ff32ba4f09187bedd54074ae18c56664b1151ec3cd66458e4e504979a36ac13625b0428650b87ebe055bc2009279d7e34c3e14b298be302a365703d1c0aa8351fe30eda6a4ef04225a3303e33cb8ad53bc888fc67ade489b1e4184b72ea92dd4d7dd2b2f845da641b9e888ec1f5c69c30e55a0a4b25933d56c909cd91dd51eaa823b23621ea7a5a37f976ecebac02869f7a5a48b9d4f2af709ba720db67a075540455af0918ecb5f43be356f8e031204e73fa4c39f964face6631d18a7dee18daaff07e6a7bd3a56395e0770cf0eb83b86e057553839980bc3dab065bc75cec00a78f820ed53df971c9e4e561266e28c0beba38d5ed26c30a4ea9bec5f3973b158da2cd7c8bbf836c07b81aebe09113d9c1e2de20905321ccd12bf2b843f04136c0f64deaeeea7ca0fc284ecbeefde2059eff8418ad0179c0ed5f9b9d0ef58dfb3e329611bf331eabcfb40fc335c1c7f665fdde0d529de98c0bf46cffd76e8f9336e20774abc2693de06cfef8f2b8c450802feec812f894313e7bb65def7a6cc4a7827363183f1eb28debd82b2834f7f90af017a88acd39213e16cdfc64a508661390f6715a80529e12d37feacbf3ebe08b52bef1a2d62381ad9c0a0df1480bed7a1a86b9b910b43359a58e8a1f3aff1cad6dde8ebc374f2498bd7a4154d3f5b69bc5909b7e80d466f2d628967c9dcf6cbf403747dea9c2aa22c6d8d50dda4242025b21f4579d851a1b5ed9817302b8a66fbf3150217017271dad0d97fff0e98715de6c50a62dbb44013719c7a1eaa32542cff7c75169e81013945ba6a65e7d0f71eb4440f52d65a04bdd5a1aa4a0f6a3b05592e0ce46ed133c02001a76d217524ce6444556b00e2b822f7e6babbb906afbe5298a481f729f1f0e937fb30656957c6d8452b2d1205e8edc4cbdb4fa700829188f357a7cab9adcd7274a45095a13cf4db66702326b24e535055302c243ffcd64ea80a1f072e825eaa46a754503d6ffc45082b65f038bae78061db07b5e90272efd5ec72566f0a77259e26cc18c82fc81a7f7bcd8abe41e06ebafedd7b82d9f89afa090c21e31a56b5def5a244dcdd95cafba9772cf33892da1d4cbda8bb114dfe1525bfb56a4863a3fd4dbb07be78d4a0063ee24a9958f68165cbbff042eeccfb4e5cfdc72d5a39ae107b0d50dae31ee879fc535ea41693faa6d102781db09c33011015f411e53eab8af96bbdbdf0055de733b25e048731e5c01a10b83d4d6fe3796ad9a8f370ab2020e44f371d60df1cd43df34af07274a1cc41d37856234953539e699b2f5b8cd5a743a94873cbeae362b3ab44e97220810cc2f4c2fd68fb709e364c71f9b18334c09835d24fa82772d604602de61ce603d5598244133a8992d47db647fac23817661ced3a948ce6f4ae2eca92a151b892d6a45b7027965b5bbc0524ed08ef587fb7fd495a059dd574983a42b5f01356e473d0efec92d6a2de28bb0df4cf81f6c1c17e07bf373771a1a63ffd6652afac0ab7c00a90c26c1c1c58b3da8b11dbe5fada7e80780e57e51b757dabf74dd044f84c302d7abc5517c1b45a27d8c077e8e408f9b701c758a0efd68473d43731f5524cee86ae7f944307e4a98208e16e579f791e984285ca6fd9f73fcced13c23a0ff912e370682c6ea098eed55e4c24fc01fa5d28ca14fcf987773d3c4a12c3fa1703a4740c2e0aeabd04ca4109c01d2815084a9d7f8648180b2bb7905c111860b353fcc68725ee72bab2b81edce0eefb0287d211720559f45064983692f496cf82f5e7441060ebe113c67c52892643bd884976a7ae677a84debc7cc721842fdfd3ec3ba77040509ce7b097020093da13a87d3d3bd6d01bb2ce66a969f5c005f5f3625704c44159efa0c2d9ca6669af83c082029e6d63046eca0a8558e21813190d504621b9b2af3bf5b2068aba706909eaafb4d738d3e9b74970e235217946b099a767b970d74b9b6168e3450d217a1e39be3bcc5c4dc6624b276b221490ee0c1594d13f9c0e9a375c926ea7a8f67d675b08da2a0a16633db9759aa9ea001ba0f8ec5b5d0be21d6d5d36b43ab48ca6163126bdf7834964937d9098347c7043a3b2e606392982cc5740b805912247ca11c0c64dd24acd4db89a50ed045150ad7c6737538f16ce7103660b87894418585e4c31e2bb411d1bee4f9d961b3b5f15ede1bd4961a4d2262e4d292fb622128867dac92a0e50f8c42c132bb0b6b183ce1098451c7a78b9bd5b3a80008ec661943004aebf324978626c50470b182c73070bd9f215b1c21b09d90221cf6e1d601c7b1d1cebf5a939f1f535d5c2d8df8beac7df028b06b7e0c9f336d272c77f9b7cbe42f3c637f61943c31a3f23b936fcc276f39384180008d3061a5f10e6f460eb0b2ea5b910f217a6414ea63d5de3a1c6fde4cb6f7411e0d675406894b2665f6a5d8100e80843360d90a5b00473e8f13cb57f5d43fd35075a478807705d022d9183d9313e8ea5f6324acc8fd732baf3449dfd7457f0881ac2dba88f5a4b6ee613fa027049dfc6174aaf015e962e61fd88c1041ecee16a27d4100674af30ba8f631f0b3c0bb2e12b0500f394108a379fb10d4305a5b262098613b01e6a946815ea4c7682736da36dabf459be9cd33dd62f747cdd8e5374626eac9fff65741eb8e5aeeb9a6a9b95df488902fb2efc57f6465db483775c182b02714684f4c8706014209cb13d6a7a4b195775477937fe5532271bf0b7e5e155ea170c82bc2acd6213d7f08000436c254530bfb73495afd817795b626b2b9237cf9bd615ab50970719da33f24442f165c74d1d00da186ec2b65b671aeaea46d74789236b846d2dc07dacb1f30a51bc434925533becbeb86168100465faa3cb864da8b465f467089a169ab70d5674c02e0e8e6a8fb424c64c8b4e34a5eb68cd6b93a4b542885f8db75e574dac6f64ecaa3c336d390b5b4cad3173fa36903b81221ef712237810213baed7656d993ffd6ab18a266d8284b4ad158095ecd43521353415928b9d92256a255b8fa287cccc93b4c6ea681db51ef1312f7b367a2f0a731bcd0f5ec8d164994a70b7acf39c85ea4617d7b3bd7ad34684a66d17fdc2a8593ca31cb38b2f6d771727c2a3b45c6196fdb84b9b2f94adc8600187147f612560cb3de6a4a664dca2bbb34720c1d41480f68458a49167f580c237a250ee13443eadfeb58b1aeb3f04c15b7527b6dbfbaa4d5830220d4501f14350b18f1eb910b173b7390bfe33343c5167d12aa00e2eed1aa5159adea9a59b2e9c464062625cbbc09031220453cabc968c5a4acd4d14b7c4a41c565b8589c9a0641946e74f0c6f9bfcde0627b20bd8890c782c0f5cbe0a69ebe597bcc3d2ee5c08a9e322bb64e76d008e614adb5b2cb526327ee7e4d16c26cdf5b35596eca03d5c63277e8c216517b232d033d93acab40e7925f49a68c40882657aa0b52ccf0781c8a5b200d73c988556b237d116ae2c25afb556754e5d0dd0e1a3b02663da161d33ad9a17c0edcd77e61a7700809ae24fa7753b023f3ed2cebedf492fa656ff4abadb94e289e8f23e491ea480745cf2ce592b265ffbfe8b26f7c888b80ea5241d7d55c9be30e7e3eee04b39c05941f9b1730cc54b6c1f46104cbd3d4aa88cae4897bd5b730f492d96d0605a51d2511e7eb5b8e9ff9dddaff15a5f8eddffceeeedf8261e129d381ff9041d873865ad650a1fccd119e90b52de74d779a996e667a1a9c4235dac1a38c11552c0101c85509757ba06ceaed2d4027b52e2327d5bf4e66641c89dd743a1b9465ab7ca9645c7202b3e8793b880a73733980630103d10dc7780c9de6ddb24b01e7b3a283a601387a65a6bad23f39c17a0e26faaa76155199368cd4a4c7b808bbfa2234902af449a6deb6b842ea33cf3e91716e659f9f62ea563657cc884ede2668f8b276c7b04c4549ca28067d7a1b637c2a528810e55a7559d3102a5dad2d6a7b45cdfc7cf0842dea35ff539f068785c80e74691ee25f4c4e152308ce3de661031d828063257caeb10a4bdb4de4397a5b15349ec754ca52d408d93991e01fd4daf6ed704a0917e20eaecc06bf7213092aee258f2948329171007c673075b3895e418f620da841b73a82b4bef2f65b39b2b3918952fe85145b428488819b8a48c8c0164b11571b3a5a17b1fc857b8e8324d92cce1dcb5805d4bac9e6f85c1cf1b6af9a41c76561969282de225839677103de2daf41209188f18fcba6cd9e4a197b242f0bc855b8a28adcda81c1a778739a3cc5dcd6a2dcde1ac540d9d5cd30ade11f1d345316d328a2809a9b0e755802f494a958c6629938b53a9951bcd50c9c57ad204b9b899b09a88354479a3fe96d520c4c146e2e8d4323db1784d22c0dd322ae359e656fab0541cae0c034604f8fc95ae91dbcfe2e4c113a4bd61e03c69f76e7bfeab343c94f6af06a1d3296d5b134480681f436051ca3797afdbad67e47aac36be0b48520d1854e5efe67d21f81be3fe25ef66897676d78f3801e6d4b1bde60a4e64c800e427245f316e511db032f29c16f8c2b1937eb45672627ab60328b1c27a9f93d8e38426195626b18cd8776b8369b4ab73614ee8b4935f65a3d7c2c5803d22844adf491452cc7f5195b1362716627b65b67291325a3abb73945fb5606e04ba1fa65351e68594d6dc1a7c2c2405f7075da531a485c42609b1ed3ce520b4b6e1e873279f6e46779d7fa24a7890f58d65da0dc4863a5587965522084eff6c5c5c9f01f250bb0283b802685f46b5794cc0e31d5bb4adef29a8499fc61cd45be98f1256bea03a566878be4aaa20dba4b81c9392a963d3a06130d12ce45b1566e9ff8a4285379e9eefc4a73fb33fa054a2c49d7e4670c08f1887645ac12e2d8cc50e965330af12102e9b96fc0e066688f435659a2e84e1c6a63e59eaf32e3cef236fc1dc2d1c26a5fb58639eaf03d64f46c31c4a9425874daa480ceed6517a46f0dd7c1caa895be02c144ed9eb2de3a0b1794f76d4c2d6e99f6fefc7d035dba17925e98c25f99806fc94239f90c93ee908608de36a8ba8584d8f58bb653649a4d95bea22b38b1602516b6007dcdfbdad8d358088a7815191cbab65672ec9d1c55a6d2d4212bb01e43b2bd276803c7d65233febb4a10f28095c077203c82e8fe8e2c7e7c9a9878296fcbc787138390001bd0c1e9c52bbceeeccad1ee4f1d5f35ec67bb53c18640064baca1cb89cff115d9c45f04ca406e0da24d5bc4407207067dd3b5b35589fd9b98167f280e7a305221733a6f3cbaffb5951690c8d97935559ce18e4b09dc4ab4ccd3171b1e24139ff0dfc2eafabd7bae16599c32d09b2a2700fb22ea879dac4b4484f37ed208fb60823fa37eb4003ace879baf2c0b2cfd3f613ee6f173d56ba30648ead07e53aa6e72830e9f3093630a42b16e8e2e901f466130f9643ad7acd236d7fd99dcb14468892aece3630b8708b922464f2c474f9b1c8c2ddbaabe95ab9c6ff26f7bef82cd1aad1f84b253ea8dc8270e081c1623492ef9962967277f2ac601214ea1808e95131a42d5896e1304e715ad3627a2818a2faffea4c6862a435fabb0550dd18b23ab4d04d8e3c8fc2e881c6c6564ade7d2e931658b1e21c5b910ebf25329e62b3bfa50b8adcf2c7274243b8166252a73ef5f589b19613c08408ea12750f6a3957bc99bb9dcb40570f191bea52820fe97f1f40ebef84aed401267c02190cac492ce380471d07d9d13a34083372840f4d517000544837328007b3bc1f2a0700df987c907da57d42665e5528995af6e0238595d3d6d23fbaa5a59c7f1eab96e323d2174d2c57075a9b86923fcf3a97eb3200061438d4bebf901411d1fce2b05ff1f8e4ca72766dc4e5dfafe3047c8d2f0e519942628b53de7994fda009c09d07793c7040097002b4cf800342da5cf207eb2ae4f992c02872e4b8b4f29386e47b374fd3a3dce3142b6cb64805f057aa6d4da0afe426ed607cf78335aeba705cdbdd53b32c5a6237de0fcc138c88ba6654594089c90426c3350ba376396ecd0fae1c93331ea5aeb91dc7b0722d38cbd88e13bb68a5832ce28e9d29379601db302e7ba6227f2d19d539680bcb3788ad9080664e58445d8124d7832905c16413735058dae448f050e25427e25c142f2a4436c862a5d344c097ba45b8cd5d1266a3e0c9473b32d9c09dfc0568d1cef33e40072c217bb078013275c82a5378c5e619e6c4b33b297a6e8de4e5a5923042f649bcff184dc5b35ffbd035fe2e4ee6de659bc479951c1cf08c5b83bc5fadfcb90432000033343100c161a078e2acfd33817cb436e97357d2f186362a0395932c5696b1d4010b8d02251e23c1fd052a5a729de558c63e1d03936be1ec8456e0e0731f8d47e5e1ec07c0cf5067642f582af067ef2cad2b0d470dd13bc6a6563edbdf84b3b17b7bad411305969b504b7d45f353d17dd2094109a5939e28a0fa040d7ca2300b252db0226a3e2a4d93310017bd93fc0405820c50e97820bc7281fdbeaee4297ab79ce4c551903f91562c74d16043983813be7f2474990b40a05e2593c831d87c5e116cc04053f9862623601f2e174eabba7e36b15c00f9394a5af88a53c5b32db9399b8c1a79c70fd7ee0b8b1894ca02a719bee0ec309047e6978eb297179e6ea1f8420947431dc4eba4dbb027b760935be22029e25177b2a83b15410a4f5fc86ebb80d361f41b86901caaad50dc9645ed13c1941b69c27ad566080a72a243a1bfb86454d44ee618b47ab72aa26b9aee4d1f3f2f18d94db1b1d15bad9f4341705c304305a6cd9d07857ac0c1998f2e74036445679fd18d4f00a7828329b52eecc99a502d5cabe6e464422abffaf6bdc99b8e4569cb0208978d8820eb42a35fee099dcd248d601105fc62ea095d11416f86c3e5cd020f61eccfb1ae7c96de879776088ac6f384b2c216b13ebaeca5c1b7e6c45cbf32d41670124a27d693ff7f44a771414e46ed205f85fdc985a6db97a0bb48e20b9b2e69f2f1b700846a638f7ad5dc6bc4c28f8f170978718e6e7d1cb58512eba8f6ef32176e97514f83f89968b627be7fec7bc5803733774be291c6820a3e0e0e8bbe9349e606bd2a54c0a872a8a9201643b0a7460b87882e1e1c69c9955431b4382db6381dee2d0ec048a3f404cb3a1256d962c31207e1b5d85ba70c77aab81843730dacc50500994a8838afb416cb8fe2167bd7c56e12ca2459b7f84b19b3062ed6a56426df576d461b90cae5e08ab7fd7268ac597c21e52f0d7e7e3dee065fe7b600cd543751243d8e8bad88b35d1d8850f570501c162c06915bfcc74f2cb0449c8e0298b9c07d4416bb07250558eb778bad2c7cb3b253486d1a418affe2e3897c7ce3fe1d6dae793e866c139fc8fee2ff843c85e23e5f9b347bf610cbc981e1594e4078cd92f9387a911a396b7616153166b33c6ad6093d2a7ba949848c3ed7d0a0762e07cd858f7c3d582dde54a20234a0e5e9a40e3fc476460eaa41241f56596847a7367100df514fb10047444b4e6853592a750badf9552f749beca00f55129a67e2d7497858b4a00d54d3307d9c677d2d1feebcc1dc148de124f9200f191da84338cbe4f916acbf85e9a7c4709d4d63dd0a321f5861c645c12eca35fe890d8d586c9b011425c87e9dfc35f63e51c9926ce77dc77d0db2561abf6a15cd27a059312a9c33cc2c68e1e854946e697d0a803ec3e302c678432b08642756c4f3cd986fed4262ec404ccc9ec8a209653d315eba6e7ccdf8258867d0cfafefa41894f354e46f50389b7a7ce235e51313b6d9d0da2ec3d83ca0ec9fe760e0af58b30df40d0cec9c15cc4f274bd0294d5f4f14662a29f1352580ce37bc0e3e463929e3817b0d8cf32c3b0efb8c8e3d4f54b92858ec5189625d932db8251d3b138a30b190651bda29bc374834f31241900761f8fcfb138022587dbda1f9eab65a08a42e5bffbdcb06c7bfea65cb6710485fd6e504439b7c0ec32dbea59bbaea321a218af496a1abbf80822a886c7a9c96fd05fa52378a1d091bea50f0df37c25ba99c2108f75a70c970c6131fc56a918b8237406dd6b4377124e02e5a71e2869750aad6a48e570e3e314d44ca628fbc1bb68f5ca9c7ea00e7390ae0c30035c509c02c2da33318f12401c84915c4bc9dd94a268a338e26e20c4a9521245f08d1d47e594f26d9a662db4dc2cf45b1c93cf85324dadde6440191fbe90c14f0530c16c1993ad48d40364a562dacfe25f4f84c07058a56d3d3944535d44ea9c21ce450c61cfe71a8d7f061b7d03c0efa2fb32488ff38db2029d2f8758ffcc5956599e421625b59da20d3d17a155dc950af3919fd852fdf76281a2f49c876a2b7ecea37826ad326c235cb5bccdea315895c426cefc7c414321f1079d9272be2c94b80ce2ae964c73fa1b4b1142e9bd4eb6911bff6ce0f6767ae756840bdb3398d8fb0b53d985abd107d1f2ea56db0f32cfa90de3e2aa5953d9a440fd2d947fb50d98bd19287e905e8b0cfce92690d7718d082e688b9709e6ba2e7f93f8f9260d31599f03d8c82cb1c9b11cb3942728b8644bc57c550d8704ae3bf7ee45208aaba45307c856bf5a7d4e83d6286ed6e4a214e64f97fae94155d76515c12f6a1edf204cce2d0d2c6d7f9404229b4a29f0c2dad2830e441576e00477a083f325234c0b271adae85f4635ee8d0e47079ede8d5313507b9918728c4f5067281620cda2102b449586e931de14e6711dc86be98ff6c378b869b1a1c09d993c367350a0ccb880b0d7ce05c1fa60cb40992cb0ec85e7f32b7a07c8fd47169c1e8430acfba879212eb0dbc78309b6d70511496cf2d2232a8ca572ce0928b23ea9af4c55b2f3f84bee9f28941c5f49fe0ed831e9ae643cc7b3c9cca29ec9b7dc5f7321aadebc9c766db690d6310cf218d0cb00b6d1435cc291183a147e435c9fcb895392997242e262c20506d039a74e11b44dc42afe244ecc18656c07690e1f21be5dc0b7c8b4b08e1a192b26c5f756b746ed4e4988f1ec8c145786d86fb53a25a7cbbea2e30aff44a7c9aed873db0e515483e2e3c2e54e31551ebd32bea72b396b04dae50a25cd08804af651fa189adf05619a62a5424e7fc9aeae20646e90429062a4245316dee8b28d7ac2bf923331c4cc77bce3ba55dc18dcfd8a9a227575b81eda5010ed8e893355a5704902c69726ea1df962c4b9abce442dec859b732bb9369cf034663e9baf459012f210db7fab638435d385106e4123fc60aaed0778d83d691844f19b858b890cd391e0a4df20ba64d7f9a5d8808cdc31b62efe9b4ccfbce4e481afe513ad15d5f07867947d1a4356c41829490f0f03dcf1fea5e4656ca5a0b07b18ec0e1e91a9fcbd5393dca41d2d150f0a5180e4488bc0cc3c5893109b51021622ab8d85ec09d84d38b899292e670781ccd81e044c1b21285c9c71c4324ba111aca6f0e4a36cabe772255361378c83de557950ac924450e98438bc45d0975a62720bc511de66d0fba34a37571fcbcad7905db6f30469e7cc2ebd6c2d53c6ca824aca12dc52b37c9f49e84b27e5084578763f685e1e9b5ea8f2d7ef593cb76ad2af2fa9ca9286d59762168da02499346ec43e077aa9da5aa53b0c6cffcee0c78554ad47009cc40e95927fe4f2304747b2a357789f974b0f324c497fbb79e0210a3872ad0a08b66b9df36cb7fa328908a95604cb37346e533b68fe0200923812cc6e6b139959701d2c3e34d72e71affd216f78c6e14e23bf38c5a10ec233b85f7195e7b906f2cd2c8c555492ba0d4b2565494b1fde628ecdad3b52df3c8488b3ff3d8917f4d56218fb05a73bc2a7514e57f7f2c3b95b526d8856dc8377dc801dac2d10ef89170f962ec8a191cc035d07c5da54b61d87077cd6ab71e72c351fa058073ace6b45e594684cf769a1e377d64b51cf7eb01feac151633177250050a57ebc6a29c9dcae161b4d3614c2e53ecc74c81011d9ad7dbd2a267a6f7a06e76444f27eecb92e137b1a02577ad1e30398f4705ddbc5cd1d1d5843e4b17477b2f2e081a7b8ecc13840a40f45ab22008577dec837a6710a642f090ceeccc70f3e49aba95b8916e9ba5cd102f97c3371c62bfa73c1a74a596457a3b59099dd3a999b5548d2de16b295e29aa13f4d501d1037229b925fde5434ce8054cda2f328c68466a6e2f12b44b326c9f98fff4e13e20c818e9f2551256dbffb8ae2dd18aae90d02390d85a1e40f72ec8c5e4274eff3ada81061547f88355c2a118ff11532d79e0d9f0d2e2169abf9be0c2bcb928890eb43bc5507be3e093a1bb86a50ce3d0597c5d32961d2c3efc853743a3631e1a2cb1e9891fc311190b978226120a98c0313b8ca1b3a1a055a08c166932202d39c85a4986e61e291311c75cbac15fdeefc8d8a22670b2d053f537d2e95f2e08cd463ad42657516b03c38df58782ccbc867c8f70d87839e0084af0a2281a0ceddbf085711e646380a20fb524fff104b8630d8a82b3e3aadde21fc6ca617ae1d5173635816f25e50e561174c465de17f630781c5d86d43e27f647107c29d0f69e2512c549ad046d05a4be157d28da5b7a363cf75f14ab560ee75a2f12d8c350501d590e6e7f4a4c2da263287ec477565e061b540fa3cfef61dcb7dbe59571d58842cd5eeb8b19cff307f6f54a9d335d3fdc4f412939d9dbe13831c128f6c1b1d7e0de8ab8582c541a113b1cf79ef01fce520b700c63c7c9a13545341af530118fad8475c9ea211a53e6e049782c6d60a987b1b27c5b9c4e560b45ea7c22640ba39a07a4c5590d52056f38b572b5a2071a2f33352161138918ddc4227207495c816349b12dc48a20d849f70a48247b3100fb483a5de0755859fe35bd92fc28bd3fbe87b3dfbf747572424e6e9405d6af34e0190100297a2c3fceb3c2dba3b01a67f84d8829339be980d46685608a36e3af1013cce895bd04efaa20e9a40be314dd57f4f5e19684d87adece45bc9705828e52aef45a84943688edcef3318eac2ecc1a4633dfc7a9779fd4914a517e49ae7cdded77e89e7d7c32f06912a60a25a002e12f2303f26e440fa6d50f528b22c15fe5ccadf9ec4f81027ff00fb0c740c74543bd66cb79a5e522461e9366616b236f41f7038e6931255788d309c68a35f1ea52997f9da5598697f301f731c3a7a109c8b5b9392d2769883b5f0ff86489079a3ed450f8c845b7672135f4342bd1e9d6b4f0c4a76e806f9054c3a854e797bb0a6f4a4273968b155c8c9c7a9945af8509337d0c288f998dfd09457317a02b17a0b68dcfe50e6e63eee170069215125dc4b88e8f434dcab0f7638e1e215f3ced959e5443c77de678783245376361851eee780eb9134ce54d493b3255d706c82df6e3985ec9fdbe28e09d9fc7ac0db63b4bb2d82c8685a59df0758ce4835e5418054ad331c9dbfa11c5592e656a0bef5e00cfa7f5301ef55c725e2867da8033dd41eed691a19bb1b920f9548798eefb2af89349841110e93dd2295ea10fa10d00957247475a75854d3797f8bd298f98697a16fcf961d6bbcc676a6fbaf1e5b371572d5c9d4b0038737d714a21f097e0b32da46c681abbaddab9e0994d63820f2d1df5d8686a0ee905795100fe4e942824cad8ee234db79d2dad2eba3a61b9732b673a38b20f1fe9a8a7f19a1ec3fc57b4f92291139c7cf6cc6ea521633e85fa11a5dcf95ae102e2f9ca622e0b04237d2625e8130d6be4f58f347acfdc730f8224f948abe6df0f58beac86d863ca15b9401f2c6dd76198616ec1c536b2d7940f28f289925be88c3e76fd640a8ae0dae531ec2a005cfcf78088ab94d75d3b58d796ef75d7c48ec5f54ad3233c74b73baf09f98e7b722097452ebaf508e966c7b2066e83341a4a0c78b0cb7994fc41bdf9be23f0946b85c622ab652e5a75a7b376b259c8b89650b8d6bd44b2c8d042ba806f5d52f4814bc10d92bfff4ab66e989b5faf6a68002c86c83b76803419e14044ad5abf5dc543d723099b27bf12649164e334d90c9c0597e5b4197a243ae6ffe8c40ededebc225899979d54d9bc49fe1f3ab2641675325247826e2ea8f5bcef8fa52ea60233779b18065a44462a6284004333f5125ec8b6aced9af3d6706dd9f50f1d696f71b16239e97281047594f049df809ab724b65b6b01da45ae570fa03865f8e6798ce8562a106442de800e835ecd17e0a86b4885b5237770e226cd9fe5ed4b0a4e927309e263b4801ce323460410cb717c89723a20a43b9e174ecce998dbc57ac174ca9cc276e94879d6589803ac1c13d548225360a84a2089a225df5d6c428c3448a021d6861f194ae9faae16d896676e23928b4d42b33d1696e1fa5ac892a5dfdf26825e9565f8d0ec0261bb98dcb42fd1b2943d2de9c3e234819aac351ac2f20302180a4db37de168b97d9d012aa4bcb3fe872aa58f02d9a9f117fcc19685d06ca3dec4f2f8105e42120f7cabb38f885b1cd45acfde0360708ba3c737920d0e6eb1c1e8e435cd72b7888764f87a5ddd7b5ed90b913b19cf55f73fe0c0b4b953fb09d5a7db21c75955fe06c301707ba552bf9bb6524b4d556da1874397cde0d7427707c3daf396e5658eb3922fdc1cff1b1f8f40deb8e1f557574e0c1a9a742698c4c0a79866fcf84d1d3bcee964c74772c8176de3fe27fbdae7148eff58485deb1f2b1d10bee29ba653f50b09ec3164802159114d7a665e0d702f5334acdd714902fe7484b744ea5d22bbc6a3905f773d150e4d9af37b54ef1df5c9bbe06705b4a79bb34428ee846af935dcc131da3607753b55b3ef6ea9c3dad56aca480a9bed07c01d54c79523fa92119d3a370c3ad96612ded595f20a63a12965b22bc023070d8be22e25141f5e7e7b52629dbe87471fcf29cf4d0e5491214c0e34c0ebacc981b0959beb527428ce23978f667b8e17a91c226272fee8e48efd194d52495f75724f1d480f9b45275925f84c09e2484c9bdd61d0585883ab356d927429143c7cd3ef362e21de7d60ebf35c884134bbe49e352e8f54ee68e2a41197250bb42ec29db782cdfdb023561861f074c2076b63871cfe3e9ffe4467dc9eb2d93fad0b731bc10a0d593c62c3d01707e6be7bc03e7e37cce4995dacb7be06400efcd0df3adbea655191375fc54a0bda94f05b6016238276070917e3ad1bb99718adadee5be5dfe2478067e11a2b93f421c2c4fc78ad60713d9642202f2f0ff8e3d7abae3f6ecbad4a6c8923940bb51b5e9a48b0f7cfe556b9bde8e49fc28940a6aaccbf456934258f60d77659b2a1a9e4b2c54cdf12dda64350d7e8ae1c271ad0f3e537281f3a80163ca249c46c56924829f6b040ffec2e4fc24d20c27e4c9575a8e8ec108b6b6b1da24b6894395f0280ecec5173a645350523ee0326ce84a5c2bb9d383df33498ba713cf2fafe72695654456c9a98f500021c1829c15e357df82e63402341e08e38e78bdcbc2800df2a167f0f1747f49185684386d18975e70f36185dc00c3e17e656ad1ca6420b6b1d531190aefe731dcbc9be251dee1051ba73ad03f3f8f1147539858ae090e721163d25993863f1bc85b46925b9a17a05266f069a8bc28cd3eed2702ad21bd081f6bb38d5ffd833364681d2a06582e80f1e970ffad848d621d1db615ee690342f7861193edc7820ce7cd6e07f34707cb9ad95225324b2b4b5f292cfba221c3a8cb8501de1047848799b4cfb3c8de0478df3390d74a6823882f36cf694d6e08556667b44655e9f6d759b4ea6bb821cbcf140a848c9b16aee5205736a8eee9d0886c8f94f7634cdf3d15889e9077830a3a2d13fe982c6f6957bb5b2387701ec98ffb96b110b7e7078d7ec8180e3683247904bf6670131a68be507bb4c0c7ddd43cd56078386f05f1ca3b41aef110e38a857f4fbddf324aa8c85cfb1da21dfabb1048d6941f0fe1e0fe2afc958f31941e50d215bee10a1665cc855d9d055d2d3a27aba39352de191a898ca8438b0e31febdb27146afc9d71887bc72083339d7204a7f14396f218944bc9d8d40dd5e965f8c149b3a135d2d5d1e10f7ae3cbe7e6c2c9e512379c9c30eb840a54d2ec9355a3a5ae7dcc12050999cebed2ae0cddb51d3321b7e2b529ba0277ed18ef94635342a33e0849fab46cf71d8b2bd078e461cc6769333cb5c784d1d4369b2d4fbb87a1c30f2ff855e740defc47670823918db22645bb80c9b3afe50791aca46d20d97eae468e2b63417b58d8317a353c0d80f552dfd1f3d0c6a2835a266096b21839537446b89509c92263b31a995ad1ca2314b9017dff218265907dbf9076f8422b73232132509ae611bade4736939ecb14d91814503df693780f55f899f201a7e1c707a69512ebafc50a3c0a7695d2e1c7c8960a156c43f45a417c553edb71ce2a03aff616772436b3caf9768548af637c2514791980822cc12d3a7d0bfb8c26cbca09ac16cb1b05405c2f71f03b383d0e9cd3e65a11f7adc66617eb539b5875f27660e538fc1bc232c98fe9c8fcd182938b79363a11352641fb1b2e5e193dc310d6e982524cc76b1f5d9cc81cb86db320310c1018cc986f55a6c34050fdf1624c24612d673c370de0f6af1a69fd9f4208660ddf59175840228d3109f9afd04cf514afbe8d2e2c86ebedda359886d1137ded51c1e2f8f76108ef34e11b0b841da0e8d590e9b4ff5f500074ffe0b15f82cba01789a9e709ed6f6f8d0b26104003b636721846460fffd1ddd1102831d66c35a10ce1448a7b7bb636a19772aa94073ca18b105a6c4209ea5ff47b3960d0592d32309b10a7d91757785486468d2bfc49d79053b81725bc84c6f1a14bbafb14b57ccc4dcb26bc2285b8fad044f64091cd736de3a29e23a1aacffb3ba67b848e284c939182ff18533822f1c7c13d4c5ff7577274a679d331c36c9ab7433ec5c06af4fcff0d4bcc13f211b20f23d0900f658e1484cfa2636d2591aeeb22bf09a6c2ca0de8b4d057ba13b75db6f0b29cea890da1c113397488093e2dc254aa4d91ff7c3ceb6f43a6c29a4ce48013faba1e3df39922afc04171935abbaed9d42c3a9fc7b040138a6fe84bbbb61831cc58d2c7ccf5ef8bb3cfb790300737762d691838bf4b5c77e755086643c8236674a3cb26e4b77e8e06874c05e9ff433d92253873ce1b49444ac821c37cbc5c4ea5d041b4133c844afdb11bb8820889699ee3193e35e5272ae3d45d95615ccf7a32bbe33fc651c9faa51af233a02dd7d17eebf50daf58e2373cd12c859d7fe8b01d5195f165da980229a6224f6a358ca274601a0d9866e99762b519e9cb2fed8575f4dd17fa04b870949b6f1bb47039c3a893fa631827f88ab7c8bcfa4c711564c891e93064e7db31deda7d9581ef8ab8f2d227803188db55e38a4ceff2a957407f5eb3d8afdd1c826c39a0fb7a717ba80607d75ec9e917594fb616965ecc821d1bdc3bf71977b5ed3286c02b0e0354fde30d6b0f91135ee18b152bebda8f83bd257bc3a8fa184e421b36773db03a0b79d1b1e424d79db5fc97e504b98fa10145fc222ea711b4959258821ab20c309da78bd5e1d014d53e6a74997d1076697c313eb1a8876864d3b366925bd7ff561c7c1270ee433b3e234e0635739e242056c0c984d0989c1c468547a18a649972a106d7207d8bec4b14b6b20e8019f3110e6f3801e356522ed472f588cfa0619fec6794262c528b9e3809f0173e702cd7fbd8f1526e8a23ccc82f2b71d3401f07812643740cabe294a41282b729c891064356f5ee408765d7fff217ccfe40c527b33ce7769a8f89cf4da310d02144a3bc329d42ef2c26360aebbc5ad351dfb6e19057fb5162a3fa69b18046ca612608d17cceb59c3c90ffa86aefdba650c9b362add2ba17f15b7c2f25a21992e888fcab428f141f7a64da6ec49532fe0071c5e6bd17745e196b3cf026fc2593f05fec3959309fa8c837dbbabc40527e9eafda0bf14b0a250716d5cd529be05df11e42011d415771a87c8c7d5d3b0b0f1384049930b894a3b96b5f334f94edd3540b615cda5e22a064a2d20b94b8130576cb8b9f2785d5cd24f927a537ce0ebd55a58c6708806345d2acb5b6055891a1826966cebd35024014ecfd322c4f034daf208c22693ee07fc494c7535f1c3f2fa04c4b26f34d38811a7cbc5be16045cffe244422a76dc2780ab30d0519e730312e6fe0f1c26e28c24f5dd2cdb8916db4584e8d3d879b6b8ccef1abe21671ef21bf975aa8098483f1a94bad565f545a64b8157a603938331ef5326eb268e351a59adf23c096cc94c27e86e65c2c5322a286fc8eeea5e176df5f9a4059f3f78d26e940fdba87f99cbebfea2796a6b5c50b9e694d7fee25c9633690233405294894ab8f06a6ff34e369937fdea1e5085338d49428789dc139db086a94903594e560ac5046cd428b16b034ea4dd15a8c57c72c40c3278a94649ae3ee7db52c9662bd0bb1ad75c3044bdac2a49a5a0a0769be17f956a378c5e0418c6a043640048c451210c548605a8ef878fedb72fbb47e875a69f6e6bf6b2023ec0ebee5899b9630e3142d3a191a39c8c79d734f10bd5ebd9b4c576ecec75a3d0b85f41bb6693aa7a81125f8ad1ba6fc080f37908e8dfc16aff5f258437b8bc455dd7d99fe4c0066e087090a110dce062295f90a4e65bb2b72c9866e8bb98f7bf300343aae3dde9c5e9c2ce14d787128585fe2d204ad4eae1f075388a922cb8b936e062775829107989b6c9504e690fc9df2515c0cd1316111c72919eb793c99bb52d48490879ee9b69b053aaebdb833cafb8056d3b3670c550873985324f3d38ad71cdf3badf9f07e5ac7779a2a8f25c1747355d6e320969cc658a02da43bf5a0b6fcbfa30b0e91719a90a0020d1669130255749cd098444acd90f6ad12f7fa9be9014303fa69222a5e56f26d93f27ea0087bcf86aef3a684d1f325c9b338421c676e93c6f46d7a0be951a939aaff261a6788e4f563721343dc0fa696ba6dd9d16910ed027b5abc1ac0eb5c2b782c785961e489565b958b8058bccb578433337a858e843e2479defef818912130f06a942ab5a3c5c56825419d6b97196dd0ec31438d8063ce29306b831b6e506cd9cfa4677e763d23a1ca5c54a9ead342d4ad789fbc32f317c433e33d19307ef5c51909ab365ae2c4251366d172f8378399c9a0ea9a4dc425c4c6808ce714c4d8f0b61f5495efcbed70231e58264c1a6729e2a03493afeeaa72b18abe3af08321575971265e663178c9ea8c62331712932b7dc67dcdbf5c65de3b036d276711ddd0264844493f14fdd72ee3b5dd3dfaa1dbaacb84fee49a0234af69eabe38c44111c3aefc31d850f1a008e04e558d327f25d309d46cbb4aa2fc0e213a6a9a60fda54be0cb66a8685b56c3db9b3184c8fb110ca10311066a665c275c13fce9a704e1ce66ad755df1f0c966d8c0d097e64d5388a1c6f45f341019a32095a4c8e921dcf9a07d4f07439370afce985f99ba4535b3b29b804127d596f3cf377c7e138000958bc929569ea5fd7569e696d4c48f82d0cdcb394ab7ccaa6ed0f261d640b797d628e649a938b628a094a1ca7e7773731080fcfd3e2710665b53590017dfa2c654b4f247f108e6bf9a9efca6c4b556eff56115b70c18e496c8516ac74ec1ab5a7b2a41399a1048de6539a6d56a59abb57d008ac9f46c90bfecac4bb368f695a97d1cc99261bd5380e0d94e9ca04ab5263fb48b4b33ddcdaf859605213c9bc58340937db52638a5d2da91b3052c8206ba8ac97c86bd47b6e87e11d4df1e481dd5863546740ab8f9392477eb8a642dc1fd2797df397515ff63507b8c13343edd9f3dd5ae606cb3041447c50de848cfd317709cb048ee290904e034b62b48ee99443d087314218720ea83a59db3e4ab394a4e292b05ab6ed1566cc913c106584bd563a83ef7fb9fcc80d8662f1eb08579137e8e446cd02eb651cd66357e3dd59463d5a84e2ce3b81f173826ff4e0aaf0b40bf590d073217fe3c557397fb590e4cbb4e28b506754679eabc4a194722348db902bf6a1849947d5268c70d7e2a49fcec6c3fedf737a51e16965cce8d5d84b7a63160cbdd0cba8261be6e6daddbc872a7ffa32fe598b3b5ad0287676643a3912cfe32bb279388f9990ce72cfe8a806d850d38da9022c27c6a7e68a82afa50fbfba311d1f22e67e5a0c59c76bc7c5c9fe8f93d90300fe4fb588248a08ca175389e29671c0220ed1874083a4c6f23e8b03cffd990026e4a12ae1c7adae29d95f385d0100d1aec215c1cd5c5a866b800a997eb8559271b8f7e68cc279b6b8af2e50ff8bae56312c9762597fec3ebfa7ed527cd166a22785fd51a20a4bf1ac5a0e770393132c5c05b1bfa4625a01e17a32e827691e841c245135263ef5faa07db362c44269883fb7fc342ee371f040ecce0a213e172fccca272cfaed3737388cec71c40e0217f465e3dac4999bc61bd4f07b9d159584316519f691042b9c8772287106eeb6f49ebfb62f8a89a75f0e9fb3b20fb86a8113d2dde9d029ec3dd0bebb3e2692728e1fc603cfb033c780392e6016fba7fd78ab7a5757d3c3462c3c84c87a58fdffd50b2483b5200d81cb423d6891ad5854c14af936b3be5aeabf375f68ab28f51bfcea246df790c40dfd77cdc06ea5368763e74bb698d3961671c53141c96b3312093cfbfa9de4eecd96ac87a9244adcb80ae9be9266e62f9abc76e7a4c437bd793f3df04b4878ecb6ebbde828fe5f9a1ce9928d96d444774003a6e308f0df4161f93c4550bd8f0473e2f3e3b30bf65f59a0bd7eaa0ed83bb93b9b1a0a2aa08e2a0a41dad1efb8ec1f8ae756979ed4fe69cbf0f58e1522c01ec2d625852fab723b118de6530e02b862c068c9103d0d49ae7402e168de06fe69b70d04aaeefc51a5e0345150b46126493e208c1e4c1727b83deb165261df180ba0f8bb24ad07b0fd2feb54715c29f2b8fac32a8e9c7ad77901e752071c7686dfc8e8c23639d0e37836948bb8f0746a490dd1d52eb12c1bef447e664bd232e9aa2ed07f147ce100e445da90884cece830c3c21611d974815971f46f428b0c70ef4be606fc865775e316172ca7fe92baf7c0a1e941a76c7f7c488e1f91bc91aa3423553e396c084f107727aa4949130aecd74cf76f05075b6380a4d4457fdc04cabf4958f5f6d40552f7ea884eabf46dabde79b5f2f724ff74c65459b66adc296de5b1b16a7be4cce3f671a5a7130c7405c5a95a29b342e815c06d4ba7a8f3ca3c5ba43ee014c4f2578a038ea116c26e0388f0761bfb248c1b8591cd792f5908eb06566f1d28484bfe94cca3f25e610ec37eafb601286c4fd383bfbbe3b57d38d97b0ee9d234b2cf0bb77168414839906c05c08d058215c95ea71d077467a67c7f8d2bf674d2de9654f62e3ca3dae23dcd3c5a90f4079eca116a9b974d2cd124827a8b3fa426bc82a999075d4b1f2b825b99eac82b3855be189c1061e8e7f9dcc16b0ea211a7abc8446ae50f6cb1b7f43aee9abb8970cf12e57a16f52c7c2f474d059c3d1718ea8eb553f0b83c22d5c55b19b52a04f125dabc6422fd1da6607479741a4a15630798f08800f481e352ba278017d41b017f0bc6ced8f8fe696ce4314b78ede7ebb2941c09f4c671b5330cab58a23b1e23f8a3a4554616e8c4d37c7d03715730a8f87a35a02c4d739bae0200f21f1e8a7f6c5e67eb6dc854a2dece4330a32432939f65c7213bc9e2f9909da94f8f383129b47ada4b1c5520875afbf906dc7ed4299ed99c63120a98571764e40bd9cbb04590c927d1c09bb97d817247fa134d02d5dc04e1e397b52726cb694ccec2a76f02a375714c3baa5d0f6cb8e937950e4abebda8301e82d21fac1300d04d117bdcf346a54116973320faf5c569f94a835ed75d2790d4a42b93c3ac38d6514ba65f68000a41f22a99a1564663c528e3904f04ea9d579534c626f135a95f750ec4432ef8c0ec5d5e02a0d9435f6e47140c961bc784a26774a2107297abd1c6bb49c64ced42ad985eb8a38cc960a390b4c4b8eda25319965b923bd05717dddea70154ecacf3903dfc425a062277953bf3828fed939b81329d1d18ad5c3960d078cdf7b5fdd76a5f60598fd4dd3f148b3b19db63866ae065349f42c562db73ce38b42d0ef5e0b7bb4284d219a28ed847b09eb8444356b265da987835e023215fe28d501c78c22436351bf649437f09dafcaba0a514a143ec903d3a324c9cb9d1ab721b802763333d32ab9a3f29fb60d34269fced4179c1175cbfa8035a897dd503b987be063eac38c849f455e3ea1db418e796f2b8e5f6a0c6b777d0fbbd8bc43472c059851f9ae310d55e4ce182e7a8aa67258ffa67b1d972ca97e62443b5c8442300cab84a4f65577ccb19a816636ec89c72f9c5b1b51004b49fed4b69fd00b1ec2fbe7f1d17423a416f833623b30c0af0e3d98dc9acbe72eb63099ff85f30a03a7b0204674e71203b380d70ef8a65485412172a30ff60dcfb924e4e62e70bc85bdde20fc33c7294c1097b7383aa015f5c47b41e3a2fe87d15632e6d038f6c24161821eb633d607e775ea52aa775577f5081ec0ea50d109cd8ce734b0d174a0eff33063534973540aa2cb7919bf4d3e550a07f61c6a6f65b79be265211469a8f5a70936706677f49fffe4c3eaa2abe18c7d156e9286fa7aeae3f5228d4fba67072160a09008f10a930351186fa2bc62f396aafcd0e1aec823a47958cbb6fb7e8bada1cdfaf7a54371b13e78c12e08f5a9afa19e7c5465c772aefc55c1ea5be16ace4f63648ce56415c307a544bf99ed50e19ce5001047699a9195307287679e67b53a71fd14a5a8acc81650fd297759807cbc4d916da82ddc957b1e094e5de4a6788cb7fba5e5b8342afd6e8c4cf5cf874dd2dc4378f77f2210051ac4e27c870dd1875521344825ee37c7b77d8049e2e39933b99b95395d1fd8ffc3124fa80cd158880a4a48ed2ded29bf38a436e3d1c41b154712788df6e8c8efc5a1bbf908a2524d03e2012a8f3117bc0f5557e1147073010757c881a6d46cbdc686d7e983ec2af6abf0da0659f254250853a4da2c9b7227f25f916ec3b0ff9c62a00eb9024b0aa1851569313e08317601e85be2fc6f28d19faac1ea577df377594a9295e703dcae1f89a70e79efc5389bef2a53cdd2c065905ce3ae488564391b128452ee65efda38a9782fa22804c8cf38a755efd8014c0bc004ebf3657c02d1485b2866aa1f75c79468c2848a106de73ce2effd3765d203b63aa9d589a7b6fb22b7cee5ae6c82d4cd5086c1b88ce38b6431f2707b338b02256b29d2e1f59b2c463a840e8905b0229aeb9b7fdca417e94b632bb05171a49ea32174a9347096bfdf04207c2a671b24596d4c2e58183270ddb0d7d0da9460a3361cb01668fa23a56c4f035144558d18d99016315720c7cca8c6fd2864977ce8c2dcf4137e5b81c111339f5889d8e016a1fcd48da3cc25efb282d48f737662922f57e52179a2bc5da684286c819ff42a09e609468d2eb3caaabcaeeb0eae3afbe2e629f9a8f6218c44d9bbaeab259922752714686b32e731a2fb8445fbe3fa459ccf4b9201f9236e5257404184ed598b018e6a21801f086385c9195c1f205743c70fbc6951e93a11566c4c2e3edcc6e1c79debf2c033aa05bcc6194280045a842026bc6f7fcfb88d45433b180bdab745e31d8a8590068368a4047cf56b49a9f30cab60e7b0fa01b8a02b9fd85c107a4082d44a096601395db77403cc7b138cd5f4139ea099e0904137c3603c81308bc92589b0c269a3bdda233fd450c0bc971e8f8fa01e3cb3ac76021c80f359b09ab071138d3fe238eeba705fe3ae6a78432e0a70b18a7443e81a57397842130c2aff0b2c1fc3b20f12a0177ae09676963d33e0f4a7a2a88839afc59244b588a4489d60489ea0d5ed5a9a749bb5b35490093626c6fddb07758a610cfe83b277427f288c8e31f61923e3a32ee3a78c5bc85393033ef4654cbbe0dd81c9814c121d82030a229d171d719ab5389b1e3abe9afadc42c38647f99a1cd1d703bf63d6394d4e4c538faef086ac804797e6ce54b40d355a694baf424f43a23d724ce6b16a4d527c7f9c8fb60b618a3aa8a6e28e87a837155f0d14c2b52391ffe539c6b0596d33df5d7074700d106556fa5006c00f6b260f82b949926f5f539584ac36832e1907f118c2e4b9b0c3b5bcfea61b43206931f5e1ba67dbdd3012a2fbbaa2165e5e1dea32932502a1d6bc57b7f1a522320e5d36f1fb3b3fd92277d5a22d664302e35fe2b38d69fa4a5c3d43fe04b80ef448f49bc0cf6faae12dabfe76366f82df57f2b15f90a4e80a362381b3c482bd0dca7cb71923df6471f8b0275dca8dc3ccaefb862809784c8f51428a9995e24c289ea9a5ddfb3568cbe94361337a926563f954d0a18817d549039bd8ce2b3c2c55dbf81f1f0600bdbef77f19dba350b3742f9bb201d6379253d8736b4c08de8d291a5b771998983b0c3cb3b7692b005b9eedcf8c64999e4d7f436bbaf2fe178f13e1c03818f8979ba5e7c14387d5715421423fcb3e24ea3e2ba46ed8deb93d03863adcaeddebabab316347eaffc9090e2e16d56d701416826d65bf8e547dc6250d0b721b1bb38e0e5b9aaca395763133661a7cf624b9b715fbb635e05e3df6f4b1b2ecadf4389465dc96655f83be1a639a58f6d9f555e97733cbded2be6a8af8e943ce52963d46fcaa25660f2c1c28967dcefa55ff79cfb2b762bfaa82c82cfb75fcd593a2ccb2c7a8bfea04f9e32a378a65dfc44c0a268ebae59979705c9310d322fbd4f1c337556896fd83d50a03a49c657f3ce33a963dba5a7009b3a7e9f9035af6cd08f917552a7ea0af25876d8132911da72ca15549150567178bf004db2bcc809e2f0ac9162ba363b5d6b075c893315dbd348baa05912b611ca340ef7253fe2d19e01695225a0ab34291459400b89da4f7bbf909b7af017e319fa124489be1aaca5643d5f0bb8e5f0ba6a8a3655f6687b5703e9090b6b52e9ce1b02440c639707745b71d87088a3103da5b8db500b44c3b2fd112ea116a2fa90b94a8427805cafa21060e1518e995a59fad8df2a0c93aabc5ece2449cf1ec3b8cb5b614034bb1f888d4654dff82313808ff28a0c241a4ec67bc1bfa65489a32a8b7fda187fe3114607a5146a8954b79df8fe1c884c1ad123e4feac53683cc0f4495999a7381b92e1ab6ce288f41ccbbfaf92c95d5d921e72ee9d04662d0a1305028b8446d64056e377a22d67ee327ec37d9391d899f7f6da58b6e5b49dacef94af8b9fcf7a10e9757cd5fea61d3adea03586205d14b6df479d9c9605f87b4575e82b156977ed061acff766bf506ef44b88ed4da779232fa9f478c0406999f8bedd01351d1b52a1dba3c4fbfc248403e0bf8eec298f74c396a728a0cd22621b7a3bb5e4518ac8b26277e00c32faa1ffaf2be28865e4b1f5c3ce2b7407ea7fca428ad849f7d1e9ae644551622d0570ba0ee0d1e99fbe9be1fc65b158943aa59aa37c0f3de9aa5f1c45df1b39d08c28abae5e0b3bab8873693a7d05f2f65f96757f9a8e9ffc0cd7dd7d5983c4042588dd22aa3240d26d15004da11b409802b112e0b82971c38982f6314e4bc45c7631dc0738b2ee80d146775d5471fd4d45cdb698feca6d177bba045073a77cd992f46a320cf489fe0c21588aa13f505604644390d7fd9025102409f848c674024a325e1185097d61692ae4350ce6395ac3feb2a191aea66a0073b0706aef2c47552b1dfd62d6d33c04f2288640b71d2687a3a305a72be7b65220d0e30c4f16a31b4b811d00d5fe0068b35ddb200fbb9ee0901274c2cc7a35d449ba351dedf191f5df5a33521fe8812738f6e517121c909bbc64f1df4406709809128e63ec10447c8e211304290c478532d284ad95ad1eba5a1cd1b3380601d0530f25d0330cfe6d0993a9d1ffe66d65aa27b0fd13a4c55cd33d6bc1c61d92fcfca50455571d0998aee8250db431487c105cbae6beeb627594fc1d38074ac70e5e60e48bc26336e87f5a01fdad37ef3b0da9764106b0534fbb56a2c6df1d023d491588b95642ae6ead6de960bcd27072eb4b7528b6593b687419aa4b7e0bc5fbbf531a451a120b006a509ed78bba4920c891878206cb26d3bd54eb63324a0c6903529bd1366e08d315704d440cff33bf313ef90a5ee1cc9813953872b9ee4e840643a1f67ac9a69c55cff10a04c17e2f50e441b489b5c806bc0807ea2e3f624f816a42f96c6b16cff43e52a988baefcd5bfdbc285c61a3feb911190aef47d30152c13d9812e35cb3222e4202e6c8128e380d9e5eb7ed4e4b9e60b7d6c12f80463e8cc6659b84caacd02bcd3d51bb4ab07a6c1357b39a2d80b44aaa32875d4e00ab9321d5e20549537ed4135f23c6483b8f2d5d0ac30f59a1060df3fcb5f9088bb4abe17680bd68664c87f6a261846938a07e6b1be23621ef3437bc7fc91838ada0c69aef63155ca02749a05618ad34f0eab188e8751f995930aba19f5e96ae56106d8519bc542d681f6334626b6a7f2748db94a4d46e7ce772e66b28e67b03e6d5ba7bca5aaaef38f5d3de1323deacbdf59c706a92ed717578b7b415ae0ef8cd9094f74ebe8df5934d7421bcd7d0d107a25a1c976ef381b51fe6487b460e22e7c020e4d6ae7d23ddb0dd1e9f412c0b12a1ee9f1ad699eb9442dc95b9d935a71bfa6f07dfce642355d15df8a770b13219574115a710dc8794b9b028f8d5ff27978649ca0eec62a23f58a81c37861823ec4ca3f19e84f68174e43506af63c2a99cc62f52eb63d1810293fa821e49777e8f97463cdb9ba9eb8f58ce0d2b0a62a286b338a9fb51344af305b45955637cda3bca804f3da489029399e567d51c190d72033bd9e1e914bb20c4ba8a116843c55741f5aa6e2842ab98761135cc9c8d983a314e879093b284f27f485f3d80ae7f339eca3833aa99f9855e28b2594682d73c6d5298176b1bc7a107b3f596c9183ba8f5aebda463b0525bdf152aa166664a2b15e54d78dc2bcb8f307f5d593559159d48f5d54e42789244fb08472134143e27bf093375b99b8cba6a71730f0b2c27dc7ecaaa8149ebdf379bcb54e21d8198e67be87737e9009b09a6c9db01fb5825ea7cbc1c66671596ceeec302d7184a8ec250ba32ef083021523943846f0ad378d834741efaa8d2777d693a752b11923fa98ef90ae19e99c14673009a0bbf358aafdd42abc6b18236f27e41db1f5570c8ad24bcd3f16ccc6a3bd86d08a2940ba638f3d611ae998f0217780e459d5a56b8deac18b77af49632cde9b4cde01255f229dc34bf93539eae5b3c4d70b50fb33e1288c279796cb4556dcc41024d3ce348d5ad24b4d4471c3e1fa1e2b4118f3adfa32525c64921be92af033c38156413ff8581d80a97849a7569ced3427b0a51442b60bfebc9696c5b828fa5bc55de2430775fd4eccd70d77d94607e6caa05fe50b0457bcda06fede87099dc0cd70282bc4317c02e7fa849b81a585f8fca25471b504cb7aa96802b7b3a7c02efcbce15001db22bac9a37aecb4028968847c3846b2278fd2521b8c2a3cc39afb3dc8747a828848b8e411ae403dc34cddc24fc0a0bdea2c4f41326cbd12c7552dd9fd345f8723347f0f9d7eeeaecfd4f86f6e8097863967958e554f85113809a5e1044731f21ef5855029e3637857fb416d5be62e22b94cc28914f4ba2a08c1f21112488d238116e58b366184413b3fc921bddc7083de771194265ba4739d65e17d113f702a09833b8a2ed40358b73b9e375142961b19ced9f01ad389ea0a53659c7f6f805722cf3f000201cc335328f258a2d65863c00b3dabb26f95435d40560a3d980193e0550c4347b6714f3c4923fadda5729b90f8e5bd501351da40aa8439640fbd78a9dcde3f5ce60382dc823b5a6671bb9266dcf9d09f562a4323e01ccb7014de6be5b304808e95f60113000a83b56925111bf8b538aed1dd7f770219a351c731b708dede384b44f767181783cd80031e39f8247238eee8eb70c3bec611afa495cb3014e933f6baba8b7403d54f1f0254e7b7caa78af59c5829bb2a8cc3b0ef413833227077b647ad22ccfd124bf3c6ebc64e2ddb1034c13ae8ad0aa409273500295e480ba866f1162906a12f5012ff26bc2f50f99519942f6b96a3c26f8c9be9619c44e773a1d163e7abf5054ec6784aeb05b23c6093fdcdc8ead372c86a6106f6671890a48375d5d6a3e0ab0f41974969b7255d305c15a82bbadbcbd10ff26549819a49b9c2f929e40cb2c3031d41c3489dde24d9c0be6c2a7c68666d437c361c5effbacc373d1cdfa1cb9bbef54d26c0da05362d4834ef7d89d795f8f397aa0b46b06baf89cd886f6a2ef1b243dae45d5672998697bd2b3d14c8d5033425ea4406e23c5b54d2a0a993a3d1c77f8417265a2f4bebbcccae4de81e0596345ef22fe6c7b3c7d0fe7d47d8f9a0ba2a136076514b5b42344f276ab98c01f582b0a2f7318a01eec8bd1f3d77bb2cdcc77f5771d5acfdc4dad80e269b273e418bc1d1599ef827d21c5b5dbb5acce66ecebb322b2190bef9eb15fb7755cf7bb1cb09719255b0501810ae4eef09b22b6378d4d38a079ab41f1e4bf9008eaf3894208f58dc78aa0584d6589ba482e078cadd6d246d79900fc2b386bff3630bfb63856fd06289efea2fc4c8692fb34fbc3ca32246ba70a91e715c1d3428d3653d2a9b2f2995d402146ec1e6c2649f60d5b3b686899586351b59d2051197ea09857202a8b92edbf4189cdecb67cf44f89039b4b1b700f5564c2a0c600a5d44ed3520a28299c6c31a28424ad0f1b4e78a1d644dab08786a0b0d656f618aa36b181156f87ae4661d348a6d657261c00c7cc7fa11d786578a2ef4bd4ae3a9cc777f7fbe098a7d669f39aa0c2e0635989b77121d4f2ea4e7aeabce028d315c4eaead2f9c242bba866c13a6e013fc5f54f3d563e24e1981e1e23c54c337797231d6dec1533d450b0662f2ce642e05e000377f906c7584750b638fd5ec772d77bde2274061a783a98cb8fdd3157c8e0072047fe156dd0c2a468534c7f82e4c3960e1b2bae39da7f296180c7b093f19dac765bd6eb22a784d4099249cef021bf5170693534749e4e863df1f842c58a654d7d293bdd079ed78cd0e96791a6dc5fe2103759ad6305813d2e0e8ee890145207b8ad4da7bd5c76aee4a31e0986f84e0f0a953d1e3faddfec3e9d5b0d66874ad343dd2207fbc7295534905ea5866268c75cf3ec516f031f00257d4908152490023e5d81217368cfeb00f197c85d417abd820238624c5a45d906bbf1b84772de1f394e6827068ce4453897390419751888e083c7eade8002d7ee12190e1effd7a7fbda706b682f4605576189fd29ebd081cb2b3a66a1a0f11e3e2b8300996b4fae06e3e811c9a617ca925683f3ee27884c7293c980bf3d50703b71c8621f85e2f83f607d453bed86c2b0ce10ea722ef033c11ac603dd65c481c6c1fe289833a061425c4444d035408f4e36484aeaeeeb5b6cce725c8b7c24c6870b591c86c44bc1e477549944760d4989d77f7da5ce742dcdb45a36ab3d9f0b7fac1932d1544fb05431363b61accd1d60e1cbc2f64fd2dd9618f11353001b3ce913eb79122fbd996448ed6a47f58eb212941954dc4b2ba44a3f2b6141edfc34835a3fa81d0c4424628c8a0dbccc74b080bc04b8049c70f98fd0cb5135329cfcbbbfa810e015bad3d9fc42b1d301c3fab1ff41518e9a97e207c811d0e4800f7709d3f48ede125ff1c387b4fafe9553fbce5cdf2f8de365e5d8d4cfe7a739833f878a9b47647d885b4422b4c12ffb8d55e5d05c8d9c982df4f3e651de63b0cb4e4f7f2024c76c8563fa40aa21d11970f245a1c1c99c3393e17bc3e70839adb1696472c5a72cbbdf9c3baea8778ff7c8aa192b99b98f83f0dc887ffbe28305f82128b1fc90a25d6843a8b66268f84e3f535a13651d4c2c18fe7daa8014a79f8bbe961d7cbcbc59f79edf05d87de6a30d6fb9ed8eaae322ed75d2f5ae3502239b73bf22fc93408c2d0fa8f1d4e63a235a162d8c031636959cbaa7b4a8a220d93edf43cd486006996a128f388a313ab63419fd61b3d111f0c8c3266ed3cf3d1dc6505346d2368a242d7ba7de5df65bd138151b952325e47c5169367a115b7608df03a2daa7365d9e5f30a200cafb8467487b4db66566853ed6133d9269c4d44f138b90d00040867d2969873d95a5c5740801c079ddd3972c21f49feb64643fb9b54bf930088c21ccc75a987f56360df1df689200fb4634c8e74e2a9534620b1d6c98ec961aed268cd4b2b6c974e71ec0beeeb4cd9747809a641e5015b45ecaf0967950048fd7b8747762bbb29ca5ed4e20f2861a3461c0414a54f4ac4f09fa2051648c1da2e0b793505cb9615378234539e06d35b3e5b630b48b842a19b1f8f9e03647036d1cfa16151a8dceca5ea3b409c1970a1a831cf8c09c9d62054812becabff2734705e45f3bd2df2550169995b8bd52dcdc9d7fd2e4ab2c08deb6ee16d729af89164f98d4c213cb797b8aebf7dd2d5b5ea4f55163760ab0d1a426598e0a347ccc4a8bd0711fee1ba181d93be0820e7252c214fe2bfb57d653b218b49273f0d32563bffd83db7793b4129910dfda1fff4d35ca933f1f5ebbe3d46189b262e05eb80d1a347f8e53cb1917936237a6e09221b1bd1da243ba3f825fbbde45dd750f44c82443c3e6ee27b7a0811fa1eb72c3acdd10a201b3218fae8401b7524c39c4eefb40b09bb42561bfe040b3d7c1d8959199a015d5be846dd587cd660a309e406d4c04e4ae3338c5142afc3de7f4286d09fda74d927940b71d17639bbb52dd2f887d6620230a2a561d03460427380eb9a179fce3df503d0a3e8263acb1c663b7ef45965c49d277ec7e2fdd9bf4f29afd05eba4f0742bd71cb93a2086b5d4c0e3af6d11c369662851a8dea838a7e5766f9840a37015306ad2b55709116a99fdcfe5f69650192058615aa395592bea6f1f16dc46e76a08c513edeeb0e8fa4470c936f62f335224e7f6004a31d59db4553f71f3317e095e27837a473003d11eb886da085481db87fdad5d36f0afffc6341c0b423d804bfb6197e13d015f8b55763eab376750c757fbb9b90d244b008f5134608ff9d2f766e5e1d234a5c4d6c4e6fad212fc2283e588b87d68c2e3ea3900a1c5d7e42b7d7d6a7973ee62c7448a0c5921172b53d072b22e5d9a6cbf0b61fac9c5f87aca5b2b0d4d675776e1f8c7acd212eb967ac8459d48d46f85b19a047acdd37741d7856fa2e5c5eed0c45c7158bbdd90ecc7085727b33d572d575fbc6e25d085fd4071c1724c4a5d600aeb58afe6adf0e3dbbb85fbd0487747b646ca214aa1661c8f55673b114cf8428a04c94726e5f384279b81cce5f12acce9d9d32104f4e4ea97fced0b001ad7a53aa8b3325bc4c500ec7d8a616eb95612ac084bbcdba89a75d38fb00133720af7fe377e48ff774fe0806000df290894de8afd4c1b8fd632d34676e5825db78c20807a3c4d4440bfc4974c6a8254a528ac565a36ea2a62305fea401420f80e278fe728b2fb65267976ce303e8cc46232c8485f90a7504c762c647c0e5c07647b8cc5a18d7cdc98badd99ceed841bee8c2151584496e8d2ffe32c19ab31507c5176fa1dd3014b5c52eb0439d74bead4e2bd8282d58b93f75c916490b4dcebbbf4c5d07b7ac929017987f0b44768929a409759de39c32dbaeea9ba1dd3c7ee604ae26616133f80e3a3778e9b340f342b13c9942c636361c0bd9d6f3105ab3e68416ffc5b0eac2ac393be7bf48a4048178717f813fca12dd758053069d5373e2adf9d2407d6a4e087c7b746ba80b308698ead6004386a15e436cc897d597111bf25d439d1f012fe416fba6ff969973f78b65fbfcc69c6bf56df07218ccb98c2845da1282af0492e7bf287e45731ec104c5280e32278eb3fe7c04a50b8da5a37cf35287c2da3b4ea56a74e69cef9ea71cc6dd9c0d0190a52989f2673ce7e65fe42b90d7dda0ae031a7633d1f273a6e374b4b91f2b030f5be289e640c2286cf980cc744c8261eba173e125a646e2587c5294a613b6d8d3eb9c2e90ef1133b830556de61d0fddf91502ff5f3682a3cf8db82d0974c4dd76bcf12a0f2a3908ab5e2ff9d838556a47a3c5bec7cb2ef20b667069b1c4d6be32a1eccc35bd8b17619d4c8c234d787a7268342ad877d95f7e94913d9ec56237f559b557c7cd55b87f5bf81acfd020a3bcf1e7b0a3cf68028169653830f252458dd8854b24a2709f1d8f346495507e0c388c03ad019ee5a4c4143d9e2590345e2f2a3bc6ae040ac078087e58113bf1182bb8cab10e0fa1d42a5f811513e35b18a1c043d0e544de966b49d506e6d0c6bc75fba8cd6d4bcca73bc462bbe1edefb882ab5d60d70fcebce9d33f3d2c502aa7a30ed658e90e64b849b9203377a5c89309c28357f16d828076f3a37dfddf6807cc4032935c99c73c0d34f53e5eb8f0d99f1593d71e2955d3dfafa4aacb191e2c1d2e2d6a8d9907bc65f40bb63c7d84f7e057ef20426b1acc0928af3d0ab70d9979905bdbdf68f2e497d35aa5e1276205ca1387e358d2269c00a3f303b01e9e552c0d6a04b364f93de4db985e5c7e05eb35be42746ff9578e55571d71cb9d01dd49eff19e8a134e5b877da4ed2b0a8812522cd23b68af2c18b34dd8a6a43e5e77087f031dd2ef2785bd97e3ff9ff28b00d0160905eb62fc5bcfdbfe99b0146833e82707addb32b5e1231320afa8b321a28f61970aa0a2d382b2703059ac97075748952fbdf6b91b31880964d20527e74bd8a181a3d92737439d269eca12a4c2c283efd58b4da01f4f3f84e4d95dfee384ff6a20079cc35031240a7f6203f3c0c17eec3cfbbe8aba3d885a006b884984c606b03c96b6198cab2fefb07acd83dd320f975b119868588843a72ba35de2234ff778d1f44d40ff229f0f6649f8fd0a83f56023797946aec0134194447c3a1944fd60ec8d081082da9b036c07d72d8acf238f607334ff8fb2ed27291ebf042366af0c61f5504fd2e8837067da8c85e13e0b57ec5b229b6be828d09d5ea411e830825867e3141010da52f5c8742c5c8502d231fb8bf9d0fe4ad39522654b7320e8cfb864e60676a386dfb931ffb07010552cb3c6a150d894982d8755f2463bf4c386cbbc00276b75b18d9144819b687a5080033a55dc172cd4ae6fb0541b3f62c1ce5c4eaec243a4535166225718f6f96a88b59e047abc8246a0c6a86856b1d5084eab8bc3297da32272b7456a4f21f06745d2b402f472a18c8ac05d566cf60c83644af2cbb655339d6d744057d237561bbaad2e2810d2cf2880474ed1af9d126584e72bcdcc3fd1fa73ea7774c038bfa4efd44f8662534c2a381736424fc00745c3d84c281e33a9b1c16fecd03fe1fad5d2133ebad4a9f5e370174e663d8b455c411079f1bb81f6a00a863e8106b3f05136907d4ca2dde92c492301d4e4ca299b48b13c0309706f832163f8bbb519294b0a4cd13edc6368977d0085dbaf99212519c48d09b7b5681c120daed7d9a0ffa196c1db83ced8ef2eb1024d8f4633eacb3687472080e50bb5377a831d64b035ba128342783d98b426f3334697769f31b6fefbffe1fe339ec74e9b28b5f805f55bdb107e7c39c42996531d346735f0d21392531c06e13a52c7861c7d3e24cd7525400ee17edeb098814f68e3373fe2910d6ffb9f3b8db57e48a09d834916af55f712ba621bde5ac77a7356764114fa2fb1b7b9c696c46d0ddca4195ff2ee6adafc691a276520eac5e04e42304e795f96c61b16752a1cbcd83ef70d0d0d110dc8fcf261e4e51a01710e68a569bda1751c630227db40dd246e62af7d2a75c7ba28ed7619653a6a444725d2b68394002937a25716f6924c06fc7adf38992a0f286a16214d43665f0337cc80e00465ba31d28576203ecc03d084ae00be75001c2aa533f7ed0a18d7676bdc692b00c25957a9e4157d64922ce22d0c6ed4249c1f9b09e729120445bbfd5f9c39b40cc26425d68b489b82b330406a4e52af37794cb6c639fb4f539c3d0b13e689eaf0faa6d7869135394b36a243c60431d2294241ab6a5188b98c6e7b256a63041d59ff2217b9da9b788c4c5cae0eebaa3aa80fe1728daad4f1ff299a8590a2b553066284f6ead55c25b707b661a4e6d2e4647b365217b2bcc8c14ef57e4c9a62ab2e20ca7b34d99b0ff1f30a212d72558926d50a2833d19c05941166895d605f7e5637dfd40bbd7913d37f7bb36995042e06e42f54e72ad1a72f8c58e7c6a82728b090827d3aad8839bcf3d1ee8f7446fe6520a2d073a365eb6eb15dd19aa83a3ac619fcfe5a14faa5c8412301b266b14cbd3851bdb8a8879f4c304579b3abc88b747ed1c46b7628616e9fb1b6c83cdc595df69fc30234bad61c7c75f8acbedb6c30f47ce3b30111e4499daa6b5df3029b9e099bec5ea58c34aabad77b40b040d43548bb879c059f5e1cd6f50171b9bd8624e0c67c9a6f554c2aae0da6e238f91b409a71bad36c5373e0298f54496ff9a8fb7f72af3c2c30b2e8d1033e647084a1da920985ead2135f6242aa47e5f672ea027889376106fc96e223cc74c341a46010191cf67840cf33a436b6ed8221bbec4b37786792246e9dd6798b71fcdd1a3a14e0783b23defa05cb80a22b23591a87e7c6afb1ec7ece9dc6f20dc5ae0374465d66d7399456fa4e507f8737e619741b96569fea2191f7434e62cf91f97f9a698d592620b004d179a1b849f4210dd9e7d02fb0b8e76ab6f427d8e23459a569a3dd266412d01c9239db9e699e278f398b85ec96234b89355dbd90e91482746c85da166aa98fe889f9558662c7a31dfd230717c31a3a1269e3b0f6b661724df6a30ad2b755028726e51b82af6ba47a64fbda2a6199d4373732015c369b53a34365c84eccb3ee16fb9a55c878a017e95f6a7fcce58ba59fff223d4deca300d9f1ba18aa395a003c121ddc32de32ae3e72c2266aecdc1c89b601db41170628401dd793d7085bf6f6577787e9c1c06c293174e0c6b94aa72f42c1c1c7d129234717f986c901db827a11949479d5d3ff137641d40fc48627673c6c15f22cfbad05575af15fec8d645a9b06f8e23cf806a88d60c94630e854475bdbdc747f4fbd338e517eb5f28a2e2b8c4c94a7959dcb579196b40c51e039306b19de79a570b5e0af53983f73832af4579e84dfd326aa60a9e381c43633adcd63e56a2287b2b7dc00498d6ea15a037063003d02bc5fce3415994dbf2240342a02388c348e6ea8b1e762795d39a19deafc44babda0f0bd2050b47a11b230aad544a18c45ad2c9cca305123e5e6bf95178f73c90b4d02ac8cbc3580ba601454426b48f970801efba182e63f77101a0a07d017cb342a386dd79ee34f37ff86beeaba05f81ae5ab83b766df21b3a76b0a911da97745cec83f736c6bfed53377b9970cda933455dc9c9ea3069fbc5c31b4e4796de8354a6f832fd9ffcbe4f32aacb632db2433dff983d7caac91ac771bf91df82f2bca524bd1b37aeefe06f833e2353ef67a07789be318052e2a8668c89907a49e7eec1018665030e82486fe8c9860bdc9973435cc7e838f62ce2cd82b914c476681b3b65e3d5fb91dc450d660ae6e30f82009a36d44cd530a91a9f322781daa1ddaa1bfd0671f79d4e060f356eb17f48758d004a5cb8c58a50968d9a3d03b03c2df2668a764f5a975eeaad252facd51dbb369c45390d5642eb434798c0fa322eae48ccb0ab99dbad8a9148419fe024e990bcddff3462f42049de30b72f26a35e6ea028ad347b010b1cc3a0c4254bb109cfda22fbe1c96856aadf8f9da518af6e3ecf7a8a4166769de161120693248ab7696a6a6d8fb8cb5c7b7e3e2acfd61ad37fb08022b053b02b2788adab25aa31402b5e51bf7f3532b797f9e7aa87d839a2c9d14b5a3c8cb53fde7a81e6355ffb81a8edec52aae6aab8457acb296bf202079ee4d9aad622ea267623dd0b79a8930d60d3e7243bcbf779d0cd7b121376b42e09d871311e8a9d0c482025bddc491d41cefef99db9a6ee978fe8b94160d527818eb2e62ad347f119dc7e69a83cd6c5f50d08e5ea12c315dbc5097fd6330eb62f9d4cc7c816262f84f39fb2941a985b2ee3bb55315dc424acf9b413b5f1016df0586c09b064d47a6fe91264aa841cde5090edd085eb26765ddaa2c5602289111bee0a0088cd77a12ff4176a02a1a9712661378be2d66c37efd96a7c43489663304a30f4c0c4b4ef8a8df8146830e55b9517ae608a1292b04c47c98b6737ef30ffd87aa38b58be0b92ba230536e66c5a07a55c189c5ed0299503baf4938025f9a2aacdcaa2e024325386a4bc417f2aaf1c2fa105a216f91e10e6d5e5de1ba18a8488c656db9890a64411c365cd3ff4cf2bd024a18e70b77453c2c0eaa989411cc4ea0f82f822a7cde89a26b5752f1708ce518cdaaff1474654e3658cdf2b5ed6453c525fe69d3f443bc50a7e0ee911680a42c6bf82dd0ea3c8a104e11f4d11dceac62049b63ff634ba098823f589bb800a7bc12bd56950558a620c6009f796d277aa029b505ca4205ba7a6b6cbe2130668dc6d7347a1ca30d71f20c4ba9a205c397c5ac456fea379ace0b9043fc165effb0c460d7d7ad56a7a11ae201e5899723c9df6782bf08876838748f6f4278288c8d167f9319c05b386ec929073254b0eaab0f4f5694a179d2422885b77899761463ccc78c29de448334ffdc4e666e0c0ddbb19990d3be6c1edf2ce000b70c1ec0d663da465980b63ee6bc30da28ee381ca9248dc495a03155c7aa2a464bd00cdf4c16ae593801b4222f94435bf0b5ea356e795c00adc8bb424f5825c99628dfacdd3c00370c4760815f32ad2b74d94b95bcfbd67446c84a204ee6b736914aef7e943e7402cbdd3f68ac93b43e8c0ec6aa41aac62b0621996b86ffdeebfad8c67a2627952669303a1ee8145dce9c0cb166bf65ad01511c2b3d1351830c5846d31773c49e10b2bd0e0e2444d02734b2181628127b94d722b7c785c8c325b73d0dfb29315b1869eea86f56ba3712ad979a17764a8438d04ff5951a094f90de691c017e4ea9f91bbbaed10f76ae022b68c1aa2784750ac7e8ba9ae1432f935d27bd20ba4fb7ac224dc5729ad8ae0761315613f669fc4b44047e37a6c3f6e9758d322e1880d0e78b93b646ab08298710c4e7376603336ea70ad677a7af4bac776d053c09c257b44a192c06bd49f12ea53f7d0c687516a3d58de4e760e8ea9174879213e7e0afabba849de435be3d8f479cf99a9567b1023295365fc70bc0d10ca47aa2d62cd5e4e0d3e3903f0f1c6d4fcb8d56ef1ccd8b1578e074a305326c0ae052826f62eb68db3215d2d65b264f66807e245242d8389d879b14a8fa41089ff293e7fd17ffef61111e4eab26b97e1f8a27f996817c7eb18b368b8336d85f50b765046e5ecc1a15df9cd35f015160e20390ba9909d64bee233d02641d544b8c7a48120c0c68e270558afd42c578b2625062b142e053feaa3402ef99e99b583a96a0d88b8fac6b31f4117bdce833883d6a6c428ce00bb57468a3032453c2b2b2f9e41e8eb0f9554a301a7d3eddcd8d225c5dc1d6d81d1fb114d5ccf2da85cd1c3c46be3e110b8336e712f40ddca4fae146637ccac0b5bea6076a93850f79294b1007a22ef10937df1d90e17c5b75a44038c9bdccc1fc5023ec9e07e0b27051b0de8ab06e4ecd8aed5326104c425f0d4c7f89f5182b948c09589df60c8601db9413a033092003ea75ac36b688d5c7568fd50e1474cf28c150ffdad505bce29f00da64df203dd7d89a17b298a2752f7c0ca7d3cbbc59953037e0aec4f2b1a9d826761ddbc5a2b186da3e3ecb568561b7d99e58965d95389f81c00eb85378014643fcfa8b7371e3e984a3679e0daedea4278dee2f21d0ea2550fa00814d904cb1dc0e3076808311f22c7f79553af10b0eaa9a42bf4e1d7a14d59201251e0d2aed0c69ef979426e5ea68043cdcd260dcc26fc03de496b014609b40d2850034159000d53ec61fa51e6356d1817f283ae2bbe76a0c88a2550bcdc216086964ebedee85c84c89e3dc5ff43e070a4c725d1187e9e1c128fc3b03ba9b76825b30d859a5035a53f52553b96f950cd3dc6d96a95928cc10c083a1d4eb5341846622b74617515dc45002fbe9d8fdd2137ff240c100fe80afea2903ddda5d88336b2976cfee2300c07ab9a4ae8769b899d84dc8de7b6f29a5942949198b08d60706083d289d744a97b400fbf8f1cae107a554524981cc39e79c735e0864be8e68467bc80008b642669d42252755a840010cae24010aed8313294fa7ed51af0f258ca40180ec9084fd67574ebc7a28f8c04bc749e5c0e8c412223cf7d0892552ac98f2090c74df277ec0a40a52e8380523953353bde2a9f78338a07407142856f0bc3c3c359e78c1670fa13ca104159291822274e0042ab060a2080904e182953f482999d0011340f0cfa61cc73baf12d854d0c44b9c1414269c3cf710ca932946acc088c136080a65052aa8d34281020694524abda35c830bb2fdcf4e2a2027c40cb238220a13100911d14460b0e05085e85013020a4a98588942054b78c28664a9e0092835a0a2062e21f448f24145104ebcbded01c4880a283aad2787ab861c2e55865c5668998f1faf1c7e20d13c60031cc48009187c0005366c96b733c0c100475403371c79421121b054200950d8b09cc5db191035a1f21584135685163dc14a9b51202e6d1ab958203b2409a10690581506d2ab9e7b82195b438eedd51d5198a2b7992ba35492d8b631783200e50926a8e4c0062d3892840d8bc55ba415c458251cd12a1034c415231640410996111796a42794c828950cbcf4a434882021747045164d8062c91459ae68e26dd38c6634731f728aa459e6a23201e9e3c72b871f9ab5d6427932450a5c5b2b64ed14980cc900092ca83284650a446f2595544a6b7db0d6b6e0ad5112586fa51162d8c78f570e3f2495544a6badb5d65a6993585a6badbdc15b98b799dbead64a29655b6badb536bb3d2495544ae9937de8a0d6ac562f7a354242135fbf7aad758808329882068a3002445211362a4be1eb510bbe3a210426be6a36b399c5a803e915767b54206a7dbd5e2081a40ac08015858d7ae56b855203d7d76a2b03f12177e054b4af24581f4269c2078f81ffe08b6314a14508690e362706ab9db5f2b473ce495da316bb9fb4b74e3ae71112341843275f50105621643e772fa808af9d42171d3a9277bc0323460d3bcc0b6487a41c4238c53d9ce2e9d43f2927952ca5dc81534238c54280ec40bbbf09218410421b685b4d0d9d2fa81ad7b209539a6b1efd6b7887237349421d6d42e0539a4bee46c6c35b79a5acd4db967091a7883dbcc33d35e0f00ad5aae930a7f4d5c0681efa0ca4614f90c606034b71a7faa6551a2f14d52b9e564d1eee7e287a0dc0292cbae936d288ac786391db451a5168bb2f91463c1204d499ce2ca6a1d36391275efee3991e8526f73d5df368a000606a3ac6533d18533108388306a87324d2a801a5a0f8ced973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cf39678d5963adb44bea4a6333e0e5fbe301de6f079e9f3c3f84f0aa3454430d2458254e1df5e3d0163b2820676dd7d170ece70a73da9f92b51d0e66bad44b3ebd52a98495364eb10cfad9b3eb90098fa62b494a29bd5a29256dd9b2562a25ad7c7b60f020c1173be370255ff73e9983537d03a73ac6d8835dab5e0f4e718c396ee8c197a78bd3c78f1cdd4b1faf114079ebda6ee0a9910056350e57741f8cae4ea1b39f64054d746800c929191dd688de32c69e555822b82507b40d7c9e62f69640d8e6247252d65a5badf03f691c4e75333333c79882618096d6c21e06e09d86d103a31b1eb5439c9e2f983162fb17638c4e7b20953576eec2de3a39074e7192901d76ee8feb8353118a2e6e00c60be19df8eae1c3ef07915247dd4727810671be52939fae31db80cede677b85f9d748fdb23f3b0b552a1e5e3ad00e2fa7f70fe04e1301a6a64f29a64cef7a85552555c94f8f49d8e3af87679f314ba23200cc0676332aad9ace34e8a67f19959fae7584f34e68e1aa4b7ae11de832a2c94f875b07bf1a289c39a57c2f3d5178e835b6a5d713657b7c18a589239620e58a1331431461812baebc80081c40410808524acc4ee98a0106142317f4c0e81cae21280122ca0e726084136cf01368067c98796864e589af0f8d9e50041e41085a810a7ca0092c8cb0011056384208218410420821841042b9c5383746a2c37ce862844840246016618442df0bba1861438804440222d1c578bb18a56c182144628b3136124840ac0718134d8927303a1ea744b82596c0c518d6770f8d8a902481a092021368454eb0a083810911218269640529601847982f1d25a9bcf49493285e7a0e0ceda19113231be048dee12491e3d5e9b8478331f0748a7554629ca1ba224caaf5acd36b33af175acf3c9b6ebdc9eccd54f6b5b202ed36e86522dde17439a59437b2752ce80b8e348101240f9bb80096cf79d8c40570f09a89a783d0618ac60ef185086598019b3095e027e38b01461869f0105f88fed1c08a2f441890462cd203ae70f0208d8805ce401bb853bbe53bfbee6f8f89346294533441bbd18848f185d836d4e8e15484b91f1fb5600849bb4291c656a93d1d19dac01047865490524a29a594524a29a594524a29a594524a299ba84ed17dfe96680afc50db67ed8daf1b91ec73b743a4d1ee1f3f0f91468c125f60c51869c4be557cf418630ba04ef46bc547c712a380294e4df1d15b9610ad24211ae15b0067c4a24823ce2847f8e87de4e28a8f5eb7c8e170e1e2660a37373652b0b1a9b952534313051a9a165068d162e6093333282b28948c153232314e888981a90206e625e9e5c5a5092e2e27269c4e2d4b6869e9aa749d490926532909a5124705c76d54b64d4382a66553641976040cb352585b8d502b2d02a593083fbfe747875246016774f710e00ce6280438237ae56c409ac23712c5d611ba2e72d2f9e65fd721755bb7755dd7dd6ff37e214d41429aafad6374c5a2a329f1284a14def91a0082970e4f45787969aac397a25739fa6a8efdb6b993299c6746e8d8e58d459c9227ffa43c7938704a9e3c9e7cba6291134ec538fd34635174125ddc484845af29510a49a4ebbce576473e410cb163cede2307e6304abf8177e475c096a3077bf2a184f01bc7c60227b429ac8acec33b356244aa45e89022d20f88404515481129d24a2ba5ab57d64a2bad94af5e592badb4f2f5b3be5eac17ebc56af5aaba5c2d57cbd5fae9d3d5ab6a6dd74d9faf5e5556aba65bdb75af9f4ea75bfba2ac17eba7d356afa88b51a8ae6bbdb3cbd9c52b6f2752cca767198bc68c9bb164f0dc8ca5a96ec6e24caa155c2eded19ef02ae3f8571efc1d8f1f7bbd5eaf19388fc1bde0366c0733612a578bca5d3ca098e55538a69209be8bc73f83073f86c78fb55a2dac0503e3329e0a2d1dc68a81b15c30960a63d1e45c97138d073fc7e387e1b734566573ac0c331ecc8b5b1aabb239ae6697896919f8adb53606185ccca066bc87adb5d6c6c50d4d0b9a77e1f1c7e0c187e1f57abd60bc606353e336dec335a776e5eaa950e3e2c6e387e1c17fc1e3afad56abb6008043e3b97bdec3959553595d595c592cbc68a1c255c17b98057e0078f0713c7efa7abd5e3a2dccbca0ae5e65ad564d57ddcfdaee7e28d74fd7521e500fac77e1662d47a13ad8fae928ce8628824efa97b17efa64c1a7674578b5824f67226b59f01e4e79f05df0f875f83516b61c8fdd054fb6e0c52b299477f385b7ab3cad054ee56875495670163c88fce99a6a93bcc31e9cd1ce902143d654cd5854cd92e4d4f494079f8515361c4f05ef7a90559e37ddbd79e34db7a199aa19d82a99e9311ee4f9e25df979f220ab5a8efc2c4524d3b5263fa7634e7ebaf5a6d14fa7de742d678b1cb717a14e08ba76ce503dc4a0761185b0586feb5d352baa8034b83db2fa877a6529c3cf466b44f771123b81230d764a5ff0d46dab6bc7fceb21202098dbcae9b0cd56c095bde269fbf0d446e8e9cbc8448d237e9454a64b5241621074d33bd22449939e7a8b8f123dad4184748fb9a534bbf2d9fd64842fb04ec5aacd34ad62b666506a307a6c05d67035f9ea9c44eb2bd1ccd7f23152ee4692cdd9b34454013909ce68224f692775125b49e21475fb812ebb4984dcc6e6d5e3955e45ec7ed65ea1be796d85553472f1f274303a09d2968d53997f9ca451e724b6629db2149eba96d9ea6c75d42bfd5a4e514a6165959ca0411c8e359a42ead071a8c129ea3cb688eeb3aca7310a45562c52ab177700c23becd485e8d8b9c107d288115fa04e3d079c519d422a1d0ad52aeaa8578c1f7cf42b309228151a848ffeed3c9d82838d43920888a521968fb1b1082189d09b64f44027e5b58df31de83ef950a7a543e97d2da76010124d33c9e8e2c629e83836c60d1ee82da3eba48cd1061ac7e07508623dcfa6924a4a29f5cffe4c67af1e8d0dd3d983feeb813a90c6878667a7e1e5f438e3842fbdaf07222f5dde90cd40f1a7f7d91f76c897c68786874ec367f94be3d30d2143c891614f2a45a60cf1a987507a20c5c3162dca47133831ed8071fe8c4ebd6f7e900e99c33b707b18f4c33e79f0bd40f1db87c4efcb3767c6d03979eb7609928f4e8f7ce6d44b10e5673c8452820b7c755aa377c6ddc83c73bad11297f946a9b665fc335d48fcaa7d9aa66d9b67db8538af799fc931d74c5ef34250256fe3148cf2d63b2ee2c85cbbd0835007ea68ae51aff3cdb39c822d4e3de89987f35974cc4fd65bbc6f9aee17f443e443a8835920209a7fd433afdc8e2c723ba26bd4bf0d4a13a2bf7908e504575ee39865f78b4eafcf8ba750929082e3ac43e842228d39399cb2de4fbc5ad07fd137a7dc8dedc6cd23e414844238eedbacb44057825ee2360fe773a00e9029bb7007f56abd1fead51b72754637c51213e9fdd32e39b8c119d3a1733bbd5ffc1ded9c4fbb1c1283668c2b88443ae8ed91fa07e78540a6b78e810e3a743d8d4f377521f1a5c71b23d489fd4a40214d28f22e3c940113909abb417fae0fbd128790f876087f2c40f7756fc374a0ce2224ca9f9c0f3bb3bcf01aa103dd97732313e2d40d2c5fab3c06c50453be2200e6d041a3294b3cfb8b6b10011d349a72c4fbd709654995a74ba63cf5269040a2711b86b5400caaa4f3c0836c79e194f58884775a7046ec5cc6a43762c7c6f97458f52e12f10ee743bdbad65ef5be99c3a9969810516cc5fb45252fa98c47c4cd4b348208b14ffd7bf128c4a9214e4704220ee6d5ad2724bef5199378785f2f3b49eaceb5b879474ea23951afb44b44148d88a2517f34823ad2ad063a99ea2efeb978da512a9dbaccf428837249a4c978f1086e07cea3648c514dea93c36e71d89d4317d77aa39d05eb31587b78f393f7d9ee43b9789f8b9f1ff65fa4d245a4fba250c743f285bd97db7926d7341839329153273b28858e409d38d4e23d6c89ba2f0abd8cef721a72b93cdde97efd43e2d74be3d359b2fc541712a9f7f3c56efab4dcd975d3042d073a0dda0d745603435dfb178d5e7a34d25c7e11498a1da2dd66a063e9fca442c83b703e2249a2790f5b0c305107e00c20d343a853ef179f89e08cf8d23124bcf33113451af025b79e9dd621d18b4a8e78f94523709ede241c125e71575697b1483aefc48f42f1c86b301bb37f33716e9cdafeb37293f67ef0c9cb7a2dd49112cbf3fd1800b1a4a205fae25321fcd4eb053aec07e8a7c647a7d045ebaca932046157819d345badb25612b50a7a07516985b089d0fab2cd533675d73f85734ed910da20bae85db79164711fe9e2843e612dfae9f0424e4979822ece382784944b4268f68896f9f8f1cae1474572032064c94011581459c0025d2448055752c001258250c41092aeb8e28a0f689648071d564d02914107b8b69d734e6666664a293333333333333333333333333333333307aa06e89c73ce39e94c9a3303f3c290c105b8d2183c3084e89e1cae1a724c4a29a574ce397d504a29a5015a1166d9e0e6bac909b80d26d6358b55eeeee8fd58c79c25f0d6eb2c59de87afd666097acbf1607fc9e110c0db0b24001cd0f518eb31d7631728badebaadd0861637e9b58d76f14ee4a1d9558991f9829a3c3bfc52c98130ff7878cef91fce531a7b253f6ddbb69d32c7ae730a26e9a05b078acf797748ff8f127721ccf958e3fcc605c29cf3d2c7ae794fb3a94f9e8bdbd0c267bcb91bd5ab8dd3f88ddbb84673f29b04fc89e606c66bbc181b4fc66bbc17a7f1be1e7f72c8b538fd00617e72f825ef190feaa03c1d382f739d539d8279f1ed43fa7f9cdcc5033ab9f3768130ffe433e79b3327243e6bce017d0fb8028b2c7f721d82fe747568b90cb0452440e4bb3b64e63337790f9b2e84a94ff3d2e6691728bb497e906e643ae60f210c38b4aaa30d8944afbc1d875ecde993cafb03ca8611e9f4fe606d183162a46b1e321018c14407341003285a367a80484ab03022450a1e64c1c406346204b6ca47afe6ed5a055d5e54aba07fa85b2aa2eb206e6d094c72dd5d35b62e6be69807bde27c06efe7584f3be6b17bf5ea4da7f035b9714fd6d32914a6e84af30fba4ca99ace302b5f831162792aa47bce0cd67899a65bcc6b86596f935580c9ab3379fd8b5b26492d6aa405128da48cdb1613267d92f549964be945a6490c23233ea25ce36b25a68baaf7ebac65666666666666e6199aae5738e0d0abd8c4485ea3695432dabceab1d79e7d92159b7c9205d3244669b65aad9cff5a09ce7fada46605e42506cf7fad44464a169022aca29ed17a8d6ac5584e62ee275da8fb5998cb9997acc9511c0f936715c3300cc3300cc3300cc3b01b18e4786c5e63359b3a82eee3bc5ef684ba5ec5262e72c6a9c726d4672e1fcdb8dc0b5b255d3e94743dad6cf2cc1be2a963d128ca1f21792aa774529638924bf8e8b220120e48fd94efed125077eb11d26825f105ead60e91ecda491691454e2452cba39646d2255df04916d88e25ab9afcc3bce45f2fc1eec752123bab24869999999999999967381e26e73bc4db6411c6d936b63ac4b72eb6c595c233501ae883247272dab96c755bcb299ccd2e69254cb85b492bd990e29528594d9a3c96ce4a95a75f4b41bd8500a911aba8d32898bfa7a4a478141435ea259e7a34b24631cebec226a36353c964ed0a5b7b26cfbc92639e8b57af1f932c9acd169c8fad5e9b4ab5629e8b5b1793bb58dbc2c6a6928b43e8cc658e658d61188645cc318b619086e381d960315357e4a9b3c0edc0f916c93bcc5258d84cdec95b5c5028cec7deec4ad5b679d5ad076d4c178b75e699297320d3675ee3bba412db615f2bf9309fad64de19ce07bb5f86e2785837dd8f1d93a554b7e9888efd07b39088ee93ac22bc231fcaa2a7d2c953e9924fde762ef743a14cf7e84bf1114e0e060c2d8114b1b49e3095234da4f4158904cee0af1ec3dda83016e323dea1d64dfe592f7910f92f9c4fd6c296a25eaaa74e4a9574936739d54a4a57898b664fddc94a16ab80e2bb385512a395438423859ed630f9c75ef24f1679ea362e6ef2e6ac144ef9e6d63be214755b442759ad84ba2402fd932cc9e2b7ccd0ed6739d53091f389711b3867379538e76214a323de71b9f14ab799a0ebab11234bf2e45b78d84412a26f0e878bb7b8d69ca914e3ec7c7f603ce6feb878cb1512e31130de8b275b5109efb85c2027cedb6052c9fba0144c570890c88a43918827a7034752af1c9f7cfaf46e945a5de7d67b9871c4f8e696c3b1b98c6b321e391c3440f1331f22ab979cc63a90e9ed7594731c0f93d73b84ddc5378ec78bdb3b841dc67b1ae5d1e8d87e60ae7db9f2feb8dc788553263f792d9d07395539224f23164ed1183c5f8d678f57285316aa19c22162ff58b5d92250b24a1e018a8f79aa95a052a91ff620927ac6f960afc196ed74f694052072f433c7bf1a7c64bd4b3d74c1bf8dbef0c027af564d78a555296e3969b558a66d5cc9d4b59c5c5e60626450332d686a6c6e5cc8e876e0bce65b2ac90a2d78d375bc9c4bb4c4494794b5b296dc5af028f5ea2eb886c3dd70c185179b8e97d3a2544497e33aceaea972723c47c77bb887539eecee9ee132bcbbbb39d7bcbbbb797ce5dddddde226ef6ed71118efeeee203332dedd1d646706efeeee20ecdd3d83c490c1bbbb83d8b877777777b7c7257827480cde413cefeeeeee0e02c383e078777777076921e51d44e51d001a4d430d6c868c980a00777da52100356860dd303cc3832fe325e3c5bd5e3c9aafbc170d93817198aba5ddd42efc2d1e7c1e0ffe6ad5d22e2e0ee37232954cab969e9169e19f810ff3da99a1b33276c6b68b5f985e78fc0c7f8656ab154386927d61dbb2b5a1e1665033fc36f0657811030c5badd5e5b9d0f83d0fb65eb45aadccc58d0bd60b168b8583a9e0f1e378f0e52da42c7d419bb24be5425541004cd7999ee3414e692b6c2d78d45da89ef2fa658b57ec722971357115bdca2512de09b2e32b2cbce2d74b1691473e39c4ab82989c73953712af9ac5ea17aba9a882c4f0195ce5bd04afbae5a4d54f5a515e15c4c55b5ce53dc4ab76b99ac8d52d979257059171982abcead7cb0a962e4225c7698c782559ac231612ebf564c6657055abb5a4b544cbc9ab9c5b2a6716afa4cbc5422e1e72311116183c0657799cc22bf97a49f1aaf2b282e4c26d5ce5b1885793d5aae9d6a5f23804af66ab551349eb0895c7255e7018aef238a4827bae28e48a2c9503e1d54449d14d51f90dbc9a2f06e038005ce5395e380b8eea78540eb9a5ea54dff62a4ff18ab2705a701d57a95cf094ab3cc5dd505d9e4eba9e59339887f9c5ea15f67ab15eacd7c45cae96abe56ab97a85b55aae96abe57a0c6bacb196ac5e592badb452b67a656dd65a5b6badb5d66aabb4b55a6badadb5d65aab95b6566badadb5d65a6badb5d65aadb536abb5d65aadb5b6d65a6badb5d65a6bb5d65a6b6badb5d65a6dcd329a81979e3d395c35e4a0b406918028a6ac80045388400344366a57e06badb55a6b33e9e3c72b871fb5d656125a4eb030c11113f0808dda3f7cad5c5ba10318210b206430031f9a0c61a3b6d0d75aadb5d6d65a6badb5da4aa53d9a82631f3f5e39fca8b64a5b6bad75075f5dbe566badb519a556721dea71822509081ea8420448680a08a1f1c0080b7c1802a20657f404243300b0c4a0034f7e20b2812b0b16186123ccb22728814da20425b049d813d825324d7a50bd1a4eb1531a67e4a9415fef47f90ba25ecdc14fafdb34e5d94d5378277abc353448293f1abef6a0e3e81507a697059ee335bda00edb26745fea33bdda659ac8244db349d825b27ea8a8f1746266d99c52cab6b6e79c73ce2ab1a694460f5a6b6badd18b1886b5b53d67d16432db4e6b27149149f4ea6559d6d6f69c4593c96c3b31dbd3bba722ef547472c2ab7a63679aa661d66215b3daa6cd2cb36d6dd7b633dbec924eca993df592602ea393b5b91bd60412c330193dec2d9dd1b36f65f4eadbad7a3736a2479f7a49da67bc42a9e84a469ce25e75ae56b11b19b110d489b1bab800ac3ce86a3e6fd1cca443e188f1a5578f3eda60bfd4775c8f3e6e95071dfb10a47c8f75025b19fb02318c3488f3c5b49e7967b3b18f1ac3e6d17f99d6dd95e8547472727255a2a6cd5e89e00ca45e59f9d24b92797ba5a356b1cf39a9076bad94d268ad955e5b568f49ec224c28b66158e4a8538f376e9c8aa00ebb974dc95eb60448bc631485775aface279dfd540467c0f982b2dbec6f2f49e6d613721bd99530e8be535196659ed10c6a59768342e8313a3bd1458718ec61092194d57bb872043815f55166b91bf36648465df6958e5efac8d28f5ef4b65ea26bae74f4dcd9cbe8bac9237df16792ea1977635e9eae93be091f247ebc2523a8c3dd772afa4e47bdaaceee62eea15b12744350874f4525a35e558fa5531166a3de9251abf889eecb90b26da31ec66dd4b33f4b1bf5eacff6b2e608e5a4d56299568a69c59b241ac4d1204d09bb43663e898d7fd3b312736972121f6cee0f366ee4c633efe19b9b9b7973bd553defc7c34fefd5cdcd0dcdcdcd0be6361706bb5fcf4fe768ee17d46448ff8fe9f0639cf37ef15ec178bb26d3fd24a9de79e56e50b7bc2ac2e447fae6a61881a67f413faf0e17bb9ffc169f5e8cf745c0f5310e391e276ff9620c52afc0228b2c8f39900e413fa43e76b5ba59eb71c667e6cc6c213393e55b9468687cba86f90d763f2037362ee39057ee9e5f87bc7af193435eb97093d796e92fb3f33a5537dd06f52e50f57e9da96bb9a539efd7e3b12ccb97bc257320ea1f0fdf7287cc7c75cc4bd3473e10751d7e5a7cc67f5a7cba36b37981a87f58c933ec0251c73c933d8d792d3e5b3c6bb940f526f9c1c68dbc783610861ab7b1f19714843a358e44f703ca869117b7f1f654af6c5e6c5e6cdc888bdfdc1b7f79b981f117948b1bb9711837a239e7465e9cf3761e18bd72f1f61b0f42558c8d07a14ae67e414d7afcf41aefe3e103f2f5fcbc330e3f633d843a2dee3773a76713553df3af7a56ab633e3d8c47f5c11c2b39e6c12ff1366574087ac8a9ce63bcce4b5e12cd61bc17cf85f350ad623f795f95df999860be790ca88f953c629e4dce07f3ec7ea58bdd249c4f8ec6e7e52f21c5d73c345ac2e8bff80ea81f34a72b499487dcbc343ab021f1ed6540fd21edea61720f1dd49683314283bd6ae849eb3deded5a15abb71ba9f70342af110855df0e3aba67d82b29dd485fd9b52aba9176ea46a4cf30c3c70384324018bea0ffa0b3bc10c2006de8601ea4b7cfc8a455cc3228ca39850663a0d3835067baf430a7994b3bb1f8313667038f9fe824285262f4b2e8ad3751f2d6bf206bbb0e8572182f659cdc8d49a3373d1df1e364c9ed883cdd5ab6913ffa8dc1a99e2e5d937046fc3e0195f787504e50838f8e49c7aebc742a6ffd8b9f02a4678f421a4480f43a8400e93609d65ba7d2a96993d1591a1dd167b7d5964d46673d460bebd479e00cf8ed2dda698b1c0e3ba94f4f4a9fe991c6877ffa90057c41d1e7fd220ef6a44b9c9f3706ce6b2f9bd6713b68dc81cd1b4309a2870f3f72d2b5e8c9803aed1c843a25ee460c4e75f65f74cd85c8f7ea2ddc8e28a977ae69764ad73cba23d690b2a7630f8f79b0e7eda2c3703ca2cf79e3959e42f2befb5bc677f7063bb823b91b54cacba35ed406e10cd9426bb141de01a22efd934fef90f8b32b1541dd56ee86209f171fef0f75eb3aa45b9f9c0f75ebcd01fd4c21f1bba302ce90fed5ef454ae9df941c8f8031344c5198a2eec2659e9a9ed2d44b4b44d791f9cb79e951c6d607ba961e591207ee50674fe5c09de9fcd4ebc9d35b13031ac4f9e6109c619dbd54e5e706a540b7dec7fd705ef2e674703e9c973688002adf39d639c6ce4d798800144479cd6b1092defa96713644d7dbc7ec0fe61da72336e932ce07eb3c0c72ca74bf9ac7ee67fd7bda7af0a16b99c79fcd394e073be793f3d9747075cd35a83543187b96a66f31be79be1a2bdff55f1f7d1bf1cec4e1dfe2f6ad5bd74e9b6db95b677acc4d260fa8b364f93e3a9a42a5adb08e101dd1c4899194571579657e1bf10ea7a39f7c2f1c77a3ebe103b36cd0c9f1e8e135dbd9fbf16baf67af3008d9d55c36c9ede8279caa69a3f82e1cea310e745fbb34b75ed4ee8779e578740fa10e0ff6eaf305c6294b45a84bf79e9ca8e44b5ae97a9c31442409008200e315000028140a86446291589226c228db0314800b87a450625898869240c86110c40c51c01082000008000080c08c890600e40709104bd8cdc4991c0cdf99468dcbff1eb2ea1996c3899d1e046570b30b7013baf5a6f011ae345e59f47151c72ef438e35f68aadf80f163b974f1b28f07df2d81b74a5d782c9dc9cd0aa01f6dcec9cdb9a195269f98f32f5f7d84f040ac6798c69803f0d8d62988931cf079df4a3d3cf829653691968a1c0df727787058bc38b7578867059e8bb66e4b68acbb31a15cc2507b92a0ab3646ea3abc099d56c0fd9ca1e6d4468e8a7fc3ce2aad0e1f14e637841c6edc4d4c7ae4a84c57c093e4f7302fa620d822ddc0f4166316de9022393a4f59942a7f0a1e5363875d5750418ef2995a13301ec716d12447802b9fa142f23f49bf8b1ed1e40bf45eae5191345c8f8eda7bbd5c2823b6f87ef800d1eb9ab0edd91edade6af1dbb3458433961cdd41b88912bb1870ba5b2736d81e2b473504eeb421428a5aba85ae1c6d95cebdd2e15cb839807d8d683f6bd604588ef879aff4f824c7f51bb402eb65fe9fbafdbd939b5000fcd33a903ef5ec41ccc928b396801fd5bc9403e9bec628d07ca85739eabda3e467a4e5394d4549739d8f82cd777daa02205bca69f49ee19b46f0b088ec4e4586f994d61dd37f276674767898f7440a592d904ef44cf0ce547cb10ef67d688b3df8a03aa4c10f3d7a1dbca0b7470822f9a7e8390963f26982f25a01e13f1e46a205fabaf35dca27bf6161dbd6a0b2046e0bf5dd3b598ffdd9b810e774210b03902c6ae9db71b1a68a4da9e0d5168c3c2869c734139396bc7d79cc0ed1c6565c59fcfd9e5d3f7d2fa5a2110d9a42a950966d472743aa49d358e44b64cff975fb33cc3cb7006d2334efb0bd4981e20202a95bae0914659e8c6ff8a585a45bccd6f5a2811acb7278a1f594866e75aa60923f420f9c776c50f1f855f3c381523aef04396642b79c1466880cf6a22444b702cc650677a15bf4557325c0c05e1f1037a05bf5a58a380df41e45ea197ed5342ed7dbc4f8ad856db8b303dd8a5709dbd68f43b76c5b28e57c4a3ab5397fecdce574e62453a2ff60ac42cf6a1807f56d02fcd6c0e2b98243b7b01235a3c6e59f35279b930d4f4acb87202e88885863ac96931fdc120cc9b9c147973f4e480bc3ecac16785854d1a59505fa51d804b8410c248d6d61ab155e66b5c0d409997bc84526139f0047646d90adb6b85ae8c23b19e428981bbac6822f37d568908b42d91d48d7831d1cba3d6124ff5b74495a64ee06f848599d7a2731822eefb4adb300ea472aadbe973db34ab8546a1778f87367c8c251fb16ce66d1ae11a44f01503b6201693cacb34d6c61ce37909862130eea50bbbc1e0d3786d3472159aba5f77efae84b600d1cba2868c9d4f07b7641eff139948f5402431beea21120db0367d8b2f2e0a2d851a7aed62b502c1b3eb2c1e18a3e66989395700d29d1f579d47cd90feba58c2a59eecc0201d5f4d4730775d11781628d8b45001f0b4c34a37b317daa8087febc557dfcc6caa011616b0fd94664f52f0c2c9c483f9898583062d2629c66a9b8af45658458930ac7defd0e99ccecb845ea6fee6fdc36695f33bb5d7beea1fa3b13cb243579b544c4f362c651524c509e86c6e1af47e381de354739d707b48b395a58a263053bf4a44c8adda0eb317937fe92b4f7cc50284492bb277fc495e79831399d558cbad93cb29f47af8a42fe022b5ee5f19e4068da67938a7f82305136c74aa8d4c8227007229a4c2a011c6f7d77b745ad16fd0d53a96f1147e42e8a24c39412d90118076fa8a8ac1d2b7d69820cf68dd7dcfdf9667f8bbb59cc74f7f752dd29c6d9396db55e035727c2739f829af7f4ada35cae2bf00e8b684402ca07774c2d390e4ac3515fb9e342e54f0f667bcd5cf240a1661eae4bb5baa30c88a30973235ae3a7def05554c6bbed98a4d7d21f0943b6e495efa094c44d81ac9d04bee14407a4c17f4623cb87565411942e041cd4156c0ceb065a08c19d9abd4b76761af3cbe6766bd3dff87e30543d54ee7df00570dd7b28cd9176b57d9723acde439ca8a1090004f03af226824760dc073545b7c6a54714752d29fcac45e42fc7fab7633135879dede5d669eddf6eefb94351ce3822819087e28d2f966e441219176b4b284b9f02675cc7e68424e6b96ef8b6694c15f641249873f6a9d065a0ebd1a97055b576925d443317f621afca04aabc935daaab4c2d82d41afee9d87859de8c14ecfd267452bbd44e4450440335a1a5c13a386a93751c66ff8c33bf1df517e5bc906b11499337b77e03636930d7b695dc59b556a672c816835c7bacebc1fce495099518baac748de895425783df9388fc2ce6225ce19500b8ccd4642fb8ef583be8c4554a6f5dc08c4a9edbde057abec11bdebf1bc8f6ec711b3fa43887519b03883020dd7029992ce57c69da4ed3ddb350049052db5d00c26090b2462845076d4e754543038f1d6dbd4e4fd2a45dc2db3a5534295a065963257a35a5ac1ea6998269dec17030685126ab1510b3c733dc9f542a0248517d3572afa01f7a9ddf40faa7b915d9416302b1de96d2783103e850172271b345010f02aca48951c53ae01c505154cfa64943102df51457bb0dd3bf317a5d14b7bce124952a6c0edef604509c065d2d66c03617c608538d6c9236cf853fdd6702e8975c6b05e8dbca000ef198b6359a91e867f83b8242006a5f8bb43a2ce1da775d3cef1fb441a8a533167cd0016065f539cb77076b8759d53d378b6efc524aabe0dbdb85b0fd976ef68f41ff4968978e21a56847372b2892dc49d7eb8f9ebcc57ef592152416038890bfe04fb4256dde0e0f233dd1843aa2785f61624b131bf0c243b0957e4f3544695615ac63801c729d904044d8f4c055fddc68b85320c3e47c224bd3bdd1bbf678db2b7e1e440f8dc211e77068448e1a9bedc9355f8c359d495fd0b910e201184fc06ea0c8f2be8ea0d780ef5ac00c01184ec7f8ae92c04fb93e038e54fb72a0a5742662098c55c666d04eb7fd7c44e66e5b2c456f8b63e1a115a09f1713bd2c78a7c21e66fde519b5f45c5a26478efcdf39f27148cdbae4cf38c96b0a6c4c5de18b7f295f29c1e615a66ac1f34a23573f385f21af9a1d0c9d469ee866a937457b1b5d7229ce2ea51c934ade0c0a1b3ee8e7e90f74f2e8b2c0faa53c7394bbea2d6b3991f169de014a1900a6d8bb4f9750c94be83513af9b8a8be4b380bd20a884e42624afe87e9ab377ac0f1878c09d34b6b77f92858b679cb5c389bc3f57afecf46a07db63e8667845af7b86a43e0e88f60da01c45ad6f559ca4d3a2a5618c3b3a1bdd84882b2a1eded8dc46abfe2349fa9565e7ec46962778ce2ea3355ecd76630a7d54bdb061b926185643a63771c7c7c086902860228b0df45b52819a9f943fd77bcc8c2c62fb82dfd184e4e10583a4ce8270f1b787b0f04087ebb0aa11e097a05426af25c1f798b6b57a58e84c3d9f03d8e2c8473f712ce7d122e6cb8f6e0a2bd5e26360de5fb38e1265fd4998d1841d9a06f052c3b6aae206091129153e331f710c38d24d85d4375dc3cd58de791ca8713fbb3e75cdddd29d8a7ef019c646de5a353208afef688807bd4a3dcab1969b5eb645064399938f7f6f758d2b840e7ea4a05108d70ed3092a8fd16ff11132deea744945400fbc5ac1d8fa1c55b0a9a6df2af7ab2b972cb9ebfed94e36f99a3c05ccd4043332df7551015094929840d3bf9a956f82d5933594101439e35f758f0c2ed73b922f1be7458feac3381131ba41ede7542ae1dbb35888e905607dbe5dd8d6981f76311fd54cb76ed17a89ece56d4272153d0ca601adc7084ad33313bf3bd63c06aa729836e2bef47eb5f008371cd368050f766200f46b837f461234d791fe89d2351d0f346cf5fe8f959dac707e471da2ab4ec80390ed809301d5eaf696177a5ccc8d97be0392b362003b6007c989e5a78bd6268027855cc98c2c2038e2fa87e8cfa6aa686ffe80f53b21e07c2ea0c41ca81c0ca6f73338597870a0c9bb40496841297626429c9017fb778a87986875c6bbcca2b43bc56e0b0004a88f4942483c26392adf1aa6640de5364444c56394ee21b52b407217ab2438ae6546b2416300154287f0bd9afd7e1ca3cd25611e8cca32ba56d069e621b5a426c1c5583cb056c1066944f08d924035d16e2ec356eec6128b08552f1bb434f10ba68e28dba8a289e0cd3f44df25aa1d18ffd77c7ee231cd9c4afdc189a4f752b1fcd3addfbe768c9e647149f5d6bbb00928f2d3b8402d4d26f3e228e6cf8a249a2828a2d2492024825415458ad20b26244724b3d5a8fd31a1983a8fff548806f5667bdff53af75fb2400ef59271236eb4620c84ee502f9d90b0a2dd6095eea6fc75e530233c5439a6f7b8624c4fa20524fb74a909836286fdf737a40a16107e68439706f324b3f0c411b123c42f0985c27d8a0a4c903b13dfba946c03c644809f5f32f595f2dc68a0f38f481a8697c1f3a9d9be7102da82b2badc03fcf634f93f0211fba05dc1c1a77609b104c1d58d3b8db155520850bff200106318e9abc2dc11fddf08bb98393111a0c2171b1cd0addab6dd970e464e5a2e9d4319d94a31e589c562f005966f414aadb7a6884e4e05a4be33ea3c6818f4c0a52391fa7387010d62ea5880cc0572aacd4f429d7da2670ad1aaf77b1ec730764f34a58d584ecaee75a0621a3e86d8caff68d450710206de59c3292bc18c1f799d8a609c742e87b7480be6d0945aa2095b3b6d474b741ee6e55e33e426e5ce99430f627ee2bc59d727180e3c897fbbf2df8593a1743dc427ad2aa0a9f5be8f3ff916007288bc994cb547291a72ae9ad4772af1c5c02699493e6cad3399f4a02cef158a09f8e6c61039c6cb004a53673ce81f30342a03c71a79022eb881867e9d12a220d0c51928bd7a1dc436763783b2942344c14f168c40164341e4db103d33d4f08884f68d601f2c57b97836a6789ce4d08552d8983c597bdd81d66b05a2202486766498128152e2fad9c5c48095bc71649003faab512da0cc1dcc7983f24d7050cc77068aeb589aa2a8bcb47d291637314233febfd7f6ca0018ecdbe11a15ad8bcc4e83f8531ceab6b9dfe7cd6a21085675b982778208a707975091e8c8bbfb3d4543c1ed460efcdd24f8c09b22300f665b31a9f7f42f6a0163dd5cb5ac636c710fae9564309c4caa20862b0fedacc4833bf9f944ed6476b80280d44aea97677797a92f588f6403bd0412d99a4828bc4431fa786605f1e8b014c8f82b169d371c602b6e407ec1085e2d5fde84c5f07bc5f90df71b6b516783ae29b6f06095b9c59840ac0634f50f31ed4bb13fcfd8cd02e266693de5312f680a1f4eb98723fca28c933b3be31e3488f1f5a32ac762a7c688706982ddf08afc4ce0626746b34b7da23659263faacdf8bcb1c8e42e47405b7380cd20700e17fcc29d68d311a72287d34794437058ed1ad583b4de34ad9293252019684f1f37e9e473afe68ffed9be9d2b652ee814e9ab0280c5bbcc4a797f1764328632c50cdd3c4955d76dfd49d4c2155116000a5584c3f44d6d633b72d55c4db4954c4cec4eee5b9e4387324d398018fa44c9821652e90ee9aecd5798b033290c78ba81fcb298362c757a33965144bd9697b16b3bd2c386037ede2049fd83c53fc3b2648f86032ec03357206888fad7eee3628f931ee5a2855624cdc4dd593b760aeb5730454cdc027528408936982eaa2352bb4ffa86000a641025b2186672a682dd100be7903c9a82c075625898b29dcc92d1224bcf41d0088bf0d84082922cd05283b325ccbcc30e3907e15d081902a4659e949eb0b435694885a392b5db39f7541924a131e119b11b280d4d6e5c30e411676bc17e8319aff85748f72c43d7bca5ee7c07ef79028452aae2d9af9839d733f8f82e2f49142f0cfc20166e78cdf4a9b0d1c7aa4b26148edb5f6f4f5ce5eb0bbcd053d4198a0e44e79612e541a0050f1c1427393e8209c3b22dc6915032cb97dc8dd245b71dcae15565ef2af6a47592fd881587e48f96c0130df02b0b3d428e62986deafcc91adb61e88dec2a8005ddf3b56c0375e35948abcfd93ecc125535c749c2d2710664d109c23e6183cf2f4318f81c72ddb068852c222c7dbcf30033c5389321371c5e864e1cc9faccd73698b9d7cf4463bc989c22c7ab6173a2a2b15ac2fde60c301612c88d21af468f35e1bd0ad80b5f44db23b63271f8f932cf5a2319351d3971460709a3a700a9e4fe7cc940896628308540aad9c13604ef3b6ebfa03c2407633a91c5c8805ab4109b937cc074b7e07574727cfbb7345a9719285a7bda3eb2b4db70f65280738bb4ef93a7a98a82876e0cf34a887b37e80ed6305bd97a560cf286c03ade07a42d7d89f138d1169bbff467253a6030a59ef3be9b3a1888ef446ef2e9c857b261918422b6eb839e1009b9a524e17e4a0e9de69f1c736e3d7a63de16d4c5a4f73b93b6d7cffc53433ce81eb97100104a63e0648051e38a2c621015c8528c3088051118abbda961718024f1da0e7279aaa17d722a32e383373c1b1fd3151d95c7efed08789b6069fc62d7543d294c42893b1b0c892b1e4f0ce802175d451b009d54db0e717a026700e823e2e74ec988d8c8cb64c81ef5ef7e42c405931c001de9746f1ebab008dfc1246031cd2bd009c817dbd0d24670b31864c8029655d04b00305e85b995f97e4fa48ae8c194574f9140e6508e619d15832a65a753ab3b2a64c15ea22e28c22d5ac67cf0a70be92e08342dd003aa00574e13d914fa148a5cf1bf9f4964e4c8a81963016cee30ef852c69e166566c5c6d40522690ec335b83d1711b1951447adab54189dcf73b89532417574e00653404476b9d00e21fe39869e89ef47cbbc00d5c12bafd95d79025d88ed35ea0bbf2a64aa962449b11e80968648098aaf9fc25089a293dcc604ed94e590d6a186d9599be76acc16afa0301ea5a69e21b6b1dc5340767ebf4df2afc1a25e6d177a87b449d782602d5d3f0ea71ef1f7147221520db2a1d672faf7451ce2a474dd45ab768ee6e619dd0f17f01921ad82a254c40d99a5ac33c6e1c6052b766a37503cd21db756b80b10ee514bdb29aa3de68abef62fecb64a53a1c59d3147e1a199b2582034500c46d0a848bf3613f847b5ed1577feb48fc45dbeebb2929fa904d9c8e3ce85d10a9107c29852c34170481034bc5229029a7b7dbfcc9dcb74f874bceab56cfdc86a20c624fc933c14de78770e0fbdb86dafff0ca24f489deb071f632827ef2912c110619b4013eebb728432aa9e963eff1fca810fc4d3429eebe93fcc35b19bfe952488962d010384a3b23e6a08dd4ef76c0d658247ab883ccf23df3f7f842f6ebd80002d4cdf42b7c1a88bdc019aeddd1d553a798ce1d3667edbffd83e470a2378c540c0e0381382417f6aa7595cdbc5d9c62c6e170235950a9de17e183a4547a61a1137fee97e876d81d7a1f85cabc951066b28379781fa5b9782886b57a107663419f8f1426b0d661cbadbeef3a017b89b1d04df44351ea73194b8374fc9293d3ece67e90585cb663cce772dbbc4faa12c019faf055314c3a92dd26e8a5d748e268d118025551fd0e32dad5317852af75d510f5431ee254b8e70ea6d2218fbfa49c705119ae0fa64a47c18a6211145b54609bfece504b2e5301ec8b143dd0b079ef88150f0250e912304be20b9b29819600eca4b528f17f1fe03e32efb7053af7aa4525e9c0d91d9dda2b8bf7b8b7a5718224b8442e33dd2f847be7ea3a955dea852bf9c66a43a066a80a5037950d66fec70c66fd4437153f1ffae2b8cef4c85e31d25b3bbe658b528daafda6c52100b899d3dec208c6cde1f870c58242ad81164559e4c3e5d02302209366f368d41f347a40affed94c45d46be9f1c707a48398b9a5bb90912a3860f24d15c924d4f33797b967179c37af76267758ec87bcac5021883b8860aba8f3d891cdad900a9b64973cc9a0d47652fd166b547159a4c43ec2bb80d17492ca1068f73b1c74a9c572808fb6c7ed19d1a618777c10e81d2fc66c87031ac1b4ca870e062c766eeb67004bf236c2915c8f692c64a33d24e6ef67e303cbe4adfadf602a6d29159e7262a5d3cb24b2581fbe3ab381c1abc3e46b4c1fcf9747743e9c827dca6e4f40c3771f378a4f8139dbdbaffebd0e54634057b1a3c591e28cbdcdafdc42dc09473ac04c54c75064306f6664e6868afb1d8f0f5e26a9a9487498656f26530f8a8c3b0100709321a3ee1dcd03ebd980d052e12e735d4aafb8e19b78384d0ea3ee2e562e5f61d9ba3fccbfd83dd60e418270ab22e369169b55919d701521fa3e13692a090e46c869fc23f0aa9e16232d12e35e8f21847a28b61cbd95c10b83c35600cdd11030e2d554b5a313eb13697346eb9f168b76629dd2fb1366096d349c6c7cfefa6905f6e99f92af40de13e9ce9c6a5d70a45f7b521e0bc11fea552c0f3f1b7914054272469defb851eced269052ab5614a05f512fb67c2464df49ebbdef9b5454a5462877d5c85e914bb31ce155e2a705b27f5de462841adb8029708e607d8e53c3c42366da9c698fc09c9db53f29b74f260ddc5213acb9f2ace32f5a5a093b972db14379af8309128709ae3282abcc0300a716c23f965a7ab3beedca5c1d2468f85ecb24e06a56117a9eb1f45475ea837fd430608b9250668ffac05e9f54f508ac5233c23ecd369b62fa2d3dfe495442c44810f8e626273fe7ead796ecb9e7ce6554ed2052d6b098807e25d720925c0a875ce105aea9fb213052420c06bab3e527f3f08c4fd2e967ce7d39f16cc2a61f7955a46977d1deb534d5e747168d547da3bd303166b474ea3d3b744acad540c5eca0a809878279e39c0c4e384a4bcc934057f8eb4af7e1b264bda5ef38b4597753200ae467e50746aea6f169551e269257544a82415e8f6f0c3be3482b9eb7836f30cd2736fed1f2cf1677b8fc7ddc8ad8d8f4e02db9bc5f380b1b8a5228dda7370283cbb6d0f2ec1cb773972511035ec4e2c53f360639080c6786bed2ad6b1836f8e6e7f0bc5a449b8d4e8683f0b27c46084e44e941918ece5bf4234e5a6434646031fde1be9bd3770e1d72a860ee30fc13822fd2c48e6ff67d24d8b2adda010d9a5a24c59dc1edf6181269df4d265908008d6f01667d9e36be927e8ad0391fbb5a378a5d6960be9b3b50fa108d69fb7b0bea6f8af8100b91f352301499212d04de751dca27fa484817b19faaa81ee4c4a8552df528ef11d946571b668e3866b303c01a615ed0acf0d7b9cea5b453ce0ebbd17877b064302b3ae9785c34179d3a4aed7ea825f3d23c0808ac47cef24284d425dcf4fd76aa9248b2b3b7faeeb853f4c64095a9177adb34f3ce54aafe998637253e9ebf1f19d8bb61a1ec99af2b0287d882bf284f9dcd6b6daf239a1fa241e289a3920ed605906856bc226b9cbaa6d185fe5a8f5fb48ecbfd967bd5e58ec7f28ba38511b912938fd3a1b9ac851f4502fd9fdd021a2d413a82063715642a99c127d9ecd72ef2f407772e856b2c5dd5df1d6901e390c3928205874299d55eec171346640b7034a96372f2cbf71f3dff81d1c1647fdef2d0ebd74393a5a27a4ef653af3c71febe162265df2c1b6bceaa5089f8c120878c19693b7eabc4a539657dc23bc0b8126a7d028a718b3c659ea792ce57ec535c612bda74254e03ac6274af7fa7bde7e7f2a7803e4ed178c34763747a931a46adf97f4c1b826a9bde050b7b81dad1f140926506e73e6a4bae5233acb4115e374f8e9fc2cba02f5742222f0f82772c65914397b4e75f28c45d0d5f9af49de2cb0cb4ca9d3c7753c553ed0f356be6c00418d3a878c4e9285325b11dca40a462934674e2da25a68942ae00a60f0395bab3b6b77b80990599978cea040d32520aad67f9c7ba5149770a6b83574fbe2fa59c521760e60cde69fc4e0f3a94cb86a5e18e2c82f6338be7dc0d40b6e83063258830f441d71c835c01684737a864293914d33f21d4d72646bea4ed3f0918c7284d04b431a0c6d203640269c050df9bf970e69e3f526e422c843b4de5be776f75cede74e9c550d2f7b72099a5c310d755169b398de8b89025cbacb1cc82d5ac59b2c01a4b2c58cd8a6596acb3c08255ac5866c17a962c59c16ab0ec65a99bff600200c6c066ef2c411c15a13279298372911e05c01859fc4dc520a50a383dc88ef179e2c04f804e6667019ef78f0f322bca528b37a7b16cb3548e4dba3c447ecbd97341b2a3c2b7d4fb47dbdd1de887be653dbdd1461c9bba1db966bb061670ee9702e1c18cd564a7c6cf9b10fd7c04b86f94c8e644a2a4aa7852b0ed7131edb6160fd5366529bb24464cecdb07ae0dfa629428dba7b91805658a68964741b92ecd05d128e5437ba951f21ac1b78ec8de3c8f4f8691e65393abd5c86bc44604206457d5658ae49cd739d90af43dc411862e5447cd4421af93a2f9253cfe07973d92d7cb2a32602fe6230c1d32902aa6038908ccf4cf91a3f35ab0ef54a0bbc888e6a00e073ad248693752671c15e4b5603c9ebbba4b36ccf6ed1415413f0a8e11e5f5aa30485888312f8fdfdce298411455114b20529cd7bc169e0e6788f285bcb6b306d8e9ae6d202f1d2ffdc796d36329d7c6f9c2b9d99d36af91d6ca3ee875bc7b6fa537db22f7a0767fad79d859886a97d2d685b713b50e1c19d57c1e605a9d66ca6e9c7416905964ed622ca63b3f8c1b8c2d2f447269a906eba295584bc3fda77ba91b77c5962cd0e6bb4f6d262666d065fcb26b9dbe43bb422d4b2d0f8b5c51f32dc3c25cebd571f11601447d8a3af4490f619818c83674f988b991f349dba9a7020cb889361f22f370515ef67dad05ea8541041025d39461905eb7f9c8479cee86c1ee93fa365b13f3bfe15f2ac64ab9d9634e17d6baf57869f1391f31ba94b2ac5464993edefbc3f230a321d07018baa1084526e6ae9fc1847f631b43064947d163e59579783dc6b2d6da0a5fbc58008157c5bdca2cd2e2e23fd46ff5918f38fd1b83ad5f45da538012d1b2f28187d1fc6f8d3cf89e4019ec63be7bc397ac114bd2028417ca2e89c5e90be5a60d92c9efa4692707b24a2c4c8a09f9ebece4fadcc57301379712b0c0d438e7fa7207b08738987885f497542827f66954c1a6c5efffec952d13870c8e4504868c504758b330d84429bf201d17bddd87da0b3bbda45de516252989e09a5f68ffbadba335dc5f9213e7667e88d13503732ab011c8268f24af2d7994a41984807af586846007f56b743024c314ca54f514c13e1b92b65404f0e144fc566c74e057347dc92a7eec408c63f35c213a94b633684d31bb7cc77b24ede6272f546679e5f9d8c4fd56598d6006f3c1deb8e46e4fa6a31c7e1710dc1c335eaf180f978a3b19c8538a275b39a4f3a4e8c0c56729e4af6b09f18bace4aae6c29da2a101d3933c8589c1e9bffba4b4cb3862d894acc08e8cdca74b802d77586f1acc85adf56be44fb02eb38ee13fa0b6a1fb2b38cf1dc661a7f0f907beb9f57c85e3b187f8d941614ab05c23936d7067a6c4383fb0c65cd33e7ce15838d3b629f8da2dcf1efcf66ce645d1920e1560c174d20801304a8541a8382adf5a587bb2f08207cca2c215788198371234989abac1c34f385a63b307ec86352033fb0f31d1a4229e4c3547f8d9801ca8d75d9b972890dc0fce4c654d27aa004ff241e094eed7030c7296890700568833236d34e248c3b84cba2f5cf62c99ed9a8239fa01484199891b6390655574b8b52bfeb757850e59c1a683f5573317094462bc14d957e6c40d0b5e78e52770853ec821a088986320c3fd704eb4957bc9ae644d75730a24b9e150df361562608158ff49db8cb5823a8d3f4ead3cd02ce881bca923ae352bcd2715b7b32ab2b4e9f98fa4a5faae240167b27d6899694f583b10520cd1896ece886b6a080c2cbdd8ff2631259426831edbfde7fd3338152a65928d4772ef6f3fea7e83cedcadbcc5b564fbc1fe3f3d8ea513e3c60dbb45ca36d3e1adff4ed77af1b000e2899b827e8a0d7ab1fa34f92db8ca9e54ef298cdff855f7129451252613bf4702b80c4bc6412eb5ee6f10b342ee578601e5fa918f66a0cda0050b42a93280198c66a0b62232d9be5b6b6e308b94f008aa38d614d0343b04b8681e38edeee3bbbe1e33b83fb39f4f56d340d9cb57a8bab3e49a19c6aea1f04c021b1bf42cd1fb76325167e3f8b04e94f792900e22263350e585c73c3ca403d8a106496b5069383d5015cd3dd6739649021a7a08ecd1a76172b0f15e8048ec5bfb77c6aa743ecc805015a7ce6d0da7cc7b05a7347312c067e9278730a09296a68e9a95d5a23264715d4b9670a69851397d8a6840a131600a48b8660afe08fec7d6fb940d153485593ea2637bd4bee79fa2486a84be908fd55d00223433c5aad391f3be8903c1c6dd203434f02a599fbe7e4083b94e5ce8f7427588908f96507b2b7ed4b500e61661cc4e1fc58760eeb902c554f3c0464a9d0a9350071c8319e9f92ecdc619d492f9efb8bb81fe708dff6f128e00b260d3fd4a1bfa3946a6fc71a4ee2fedbfe0d80eec231441547eb07ac55ff8d391b407651cb1a690006c0abdfea2f49ef831eba22a6c05842f5a24404dd7be33b07deb0001e8437bc998c580beb6befa3796d8fa350a8632b40c76fe7caa156a82c88b7724cba3bb0589b2473a3d8489635e4e45f2f3dac1176a111195f87c3aaaca191e4addb1b615f975230dcd2156d024b15fa8d123fc528e19abe9ba6dae1bf9869a6c7f83e02eda6e1661506446596ce6a1e671c14b25cf3d518f0b3dcf45da8d53cb6cad0e03c2b092930a925fe0276587f56314b68cfaa3e84b90ad1b2ab4a73c5ee81c0bda7c414ad73f914bd3e0861384acb5f9407530ccbad881dfb0eda1fdf0460a05f187e523934f814997233bad3880d34ab6d0dd0f0fbd2674617d4908a9a94ac5790e46c90094b45e99bc78a8549ccb7630b7c2dda8ff5d904ac508ee4285ae52e9afdd43acac18f972c2a9635e181dbc1391c1e20eba408f13583a7c0b8027404744d0088d2842e902a36970e8220565111d32da94134bddf7a246701fa34d72ef73aee5e85e6373d2984c77a068ba1c12fd6bfa43c328dd63b809b311a67587575d537a20f5fb34ff83720a92f4588103c7aa56e3bcf2438ffb5035d6a78e31019a6ec4555004014ba011ca21bff074b488f5a95161156cf83ef72a18ef0c3a10e459fc997a4647cf86c567fc6daa7b2e6090d83aa235d5a2f6a089d05ff6bb294174d821512009746ec8ab7fac56703eebbf130de3d83c671080f4a2f65928a6aab00f69ccc2f867cdf99149b625a70d458112327321ca06be88bc7c05211a63adbc3817976fb45f7eba3037402ec0690038f608573d349b4778408d2364705e7953d0f13f380fdf134cc506e58a7ceaa9bba5fb1a01416b22246b598394bf33cfdc26eca0aed6de10584d172d7a1eb75e40c6552e54156ede68b314cd3074d2d383b43848cb6b7db26cb2376a6bdb54b598f0c8e571d49c73534b2ac615a656a14f9d630cc132743641515b11ec4a660eacf50aea77a7f56407ca20f5535f27d35d229b6539769cbe84a8f6b92b23fedf5c76e1d6843e2cd1621c4c8f0272592dbbc6390f812d39ba53c748af1041ab0a9e1235be7cc88ffb330c6d634c304c70089de4278a40855b682083adca707fa710a6bb9eb5fbf3706ec891043f560f974bacf17254010401a87de90125a20047ff872f2bb9a16b04fab724807c3929a2bf7fc676f25707f353c4d5c3934912693eaf145e117bbc1f915e6af77c76539e67a36ead76f6e5f5bb94e4fb6d97bab3301da66e83a9704df7e7af8034ee0dcac65e7803586b00cdae07c4dfea164fb1771caeac2b3bccaa4c139dd0f5506107bff235551a2c01e42174e9ee6ae5f6ff627caaa2aea652b62f05e2b22278a5861d6022a45d32b926d1f6505ce8210434d3bcd062a363c93c8977f08939ab04fa5c98be0a10a43a94288249e1278cfe0eea200b17bce3e8a815ed67c409734988af20a5bb9548502be175dacf9c7d71c7ef718bc974bba4ee4691e228b8096e248e69e96be586616fb8e5c0247596a403eb477f222e8da63f297075c309026b70241d2f7d1528feb9d67536a0179bd377c92f6f5a90c61892c165555b0216de579e59fef7ea656205293fe400e718d8426f230ae3e8df96e80efe4bbab6e49edb2ad1c4d8994d29c981ffc409e8404ae55e516de70c823134d247fe7f462615f3f1fffcfa9ff0be67ea839a8cd99b080bfcd9e747ed77276c7fefa5e9104db8931ff6ef16fc716d1c6b0280748f440283f1c719a8dd341babf0e3d2d0ff3b09fba2d99f0bf95460086e0c3fe2206840b43c2ef1a51985091da92894e7d88322dc6de66ccc90a4a59be4fd6f3ed6db517bdc529cb29f25e47758a8df55b4c51da0d75878a5cade5c7f5a0522c3edcdc5560dddd2f3089af2ccdea9c108714ca0325282ad2948c4dd9011a1bf3c8e0d335a0b81a6bfb49b4b52ba08e8e9df91c9710663ebabdb8a430a514997624491032aa98b535d81aaae1d40ac18380834efe2cf0058f7070a25149e407ca93aa67d7eccb9acc74cb2d1d4c69f9f27d60804c5a2bb7ce7ac2914d5a56743dbaf810ce607b60dc3ce8d288eb058b4c9be7953767798a5ab2884074d3e082f548458883ff8b4aee261838b047f62114d16a413836d2c9bce38f487b72f83d4d911e5aa9c0f3ec2a0530c55a96723836ea2874eaa70166ebe714f2ee58b451592ed6eeedfb073a99fb5ce1c3f44206c803768b491a1e1b690d38e4a2db4319511612ff0d430c5ff04b54e9492752e31001ba54d5ff718148c42938d455776813fa2f29f94155f9afdc37658ed6461a42b27583f2060ba063b4d75b3ab9765b45eb5786116198049b2910488abf4673ab41967546499082eb0c1130e81cebbb3f1fe454143bdebd49d186c6c625e30ad86a08071653332489519f99ac070696640199ca1a6f7b41bb5cdad403f0ae8f74a10fbbe42a306d027558d80c65687df6b9df35642ef014c2137805848d3ad7a8ca5c777c1aec83ae53b8d89f00f6f6b540183afcd457abd4045e16a566366299068ea08caa7b77708b069f8ede57135516d46287b71235eab74918063111fa93a720eea940c6429a4cf7a184de2e588a52f58eaaf9ea46b787911058459ee9d91e59cbb4672fa2474a0147ac96b7d178c3df4b4743fa308e39f0b05986750ce16d1c9e6c5d4928a62fa7c1eb25dd5ecd9380725e1128a125ac527aa667a143b945a956860e419e6f7107944e8c48d1bf2add6e3036f3504552df75dd4aed3abd54ec39b2fc92927915dade0e450007f06ae26585bc18dc74b8323d44843aaf2b100392391f54db677db5beaa3efc10cf44304184f1c920e07c5e9b4c53d730da5abf5d7bd88269015a6cfbf26a69bd0804c5789f5ae48974e8c89a18c02fbe9280468f92be641db09ec63ebac341e3ac86306f6310206098314590bbe7c3c1a3e26edfdb19e57a0da0fd5223eeddc0e093bcbbaae07e4cf9c6f8211e8b4b5e0565457ceadad9198aab82b8899242d5db197b837f32c421b21b2758ff8bd8ce43f0f87f292299d5e66aa298243f87c983b8ce2d06d2d68293b88e3e1605bc3710312df4505dd3c9d454708fb913525adaac541075307f036fee1e215291316d3122a78e21df797f4e26c86decd529cce296cfbac80b77256a5f7c56a7598d1a7ff7dacbd4f9576df4bf26bee9eef6f03037d11904e22f562e869feb9a624515a7232dff2166a2132008e8747bc6fff5e1f7c3c76a2091d151450050831169566129740498204303b298a629e424ebd37ab6b4c895fda3c1a9f0069967d2b9969103f6f31b85187b227e87ba73b7b91daf93c078779c097ac5218fe400e2fc304373de86f1ff681f69dfa35f0321d7969c2c829a2b28d7a9e92bc711b88a7507826b5fdc4dac81f31f2ce23b4750bb0a96542902fad35f47f4192486380f54a0e579aebb2a8ac2cfba27ed3a6de94395dcbdbca0d53e1c619f19468f131ce4f12d6300562ba449bd4e9c66d0fec84bcdd64705375e52d6a591623f53b2e300a877dd20209d8aff7cdbcabbe2b228f696a63729cb3afeac98af407c214157c88e8826ebaa3c260a6e1c481de58c70b53588feda5294f6036bc710c9f9bd26e8aead909105a3d4c4634b0df602a7f4828e0399b3c35647963d2ff28aadb94cd5db87bf8e0ceb45760868957eaea028aaa94e42cb771df638ee77ffe203939327e0ba8c6758d521e1438b115a38fb0af226ca1583863efb708961979a07d2502001461fefbf15ee5ab65bdc7e3bfe6322fbd288683cdd993f7af07140c12a38352e45c9a43bc38666256f9ae4f7cd0742d533e82a85dbffef8315eb730cbcf6debeb0624a5a9bafbe52e0962018624b29220c29532569482adee9f326b8aa48a8874bb8fa903c7185aba96d8ec86f261c773dc21306062bd65cd428c0f24b92900f587c24686b6c15ecdfa6931c81152f06234d6d89eb3f1cd08b914cf1175664230859bca3ee75364039d1612361b26cb9ebb2987f5693c590a6bb25c3b3aeead08c34ff000334cab78751ce8ecc160a9d4e48199be109fbde39f13c9a3653e0d2f60105a4df560436935f86e1554e9ca14ebadf0fe1035ec532e6452e67eb1aa417df05da2894137ba942251da06b20badea0edc41c1a93705017ade4b1a2382d0fc52417c52068bc52f9bd8924dacd4475b2bfd07a8955784be75a9915a8d3783728729c012f188aa377fac872d13803c60de038e44fcf5580553311511692cbe337ac19431efcecfcd3694e771cd59506eec701766b179d98254361749757b6980a66d0b5f408b99c13f03354a5511b557fd63029849023ddaefbd835fac77897038649b74a211c7852fc5480bcf22f6e4b3e6ddf09f50a758947cc277c6169ece897c47ba6160a9fc05a951695728d1256ca7cd76618df039afb20cf038f1667611a93de5e874b134e3e57ca768598b43638021738c39f3ee8b35698cb2b0ab4fc1d8cbda2d6351c60f927f870ff873f857eb3b3d33ea82a6f981b918bb4678b9c6835beb36e78c1f63f3248ffd0b0e6fda94b16af91988a3f18adb1092f62e8347a65d9399ce9f814c0fd1bc8e0c7d120a9799fd778a87a3522f24ee205c452b6fd2954ff7aad44748661aeb7801bf418e70fbfd3bb7decf422f68dd53b8cd6f76a8b97d940aacd58fd07d009c8d03614d2eafba7a8ae3d5072258d04bc97397e61ba10e48ab120c2e15e1249a9a340b41cf65bd709a96418c6311258a02b230002517a17fac28baf03ff5e150992945ecc237a6f7148209cb0453078c8f277e3c9d97a37b99d39627677f0574f43c9fb309f0f4a120e5483bfafaed779d160ed7d42e5d16470724c5dad5d696075a019980c73d1b1a1e8477587fcdcfe4f862e0f0a82e707cd04fd585de64d4432338ffcf1799da19b60bacaba17da0e2845afafa21ec4b46b1c520f0ca602133ea5aec05ef47dafde9dde22bf54204b1d7d89cdff609bfbf173f0edc249a03dff487483a3c0f5aa1d5ebc4f9f8be55484dcf15f986302ec2e0bd0e21fd4eeb894960c16e813aeb4468f42dc0c09faaa1965432674d3ce6f50783f92b065ec92cb28da0859bb739cc142096720d78f6e88357ea09dbd8ca68ac7aa64aa9132ea9cf9954d60bbbb19df553d48cf259fc9c26fc7a0966a6933663e80cf5b947599f15f5b4c044fd45c039156fe21443c84bafaffe431ed8892944c12b83f48529d082650e794a90996fec4c73440fe1032b22017fcf697fe39401a37f67aa2005d12d1f09c664887b2dac3c8d228ca6f62c4786440aaadb22a2bb60859a4ddd55de10750ea77e97d8416e821d32fae869285119ae229ac23a941a0c7b030469140848b39a0b419dacefbc9499949265763230ec2985ba8a92252313f3d70ce68dd0ecdc428264b843c92e6beb872fa05eeed5e9ff3f3fc5908002ceb54a98cfd54aeb670f3c7723c7113d109921cef4385d21d80a4c2975f8b1127a6e797310e038ef9844a85b9498910d082817479154aab7c084cf146086778bc103d67ac9056d246109f92a6be3f8c7408f8fcaf10093ab31df12e53ee8176a89c6b95e336db951a8a1728c2ef1bef1de7e95c65735e046666972a3329d1b0a1eb8bb02da68da2f722a6c1459311ef1355b0a40d72cf09bffbb7c598a2f2bd90b3966237fbb2045104d93729bb32be384fea1373cbee0fb4f21e7773eb02dd2b1f47d269e07ee53290603bd7433fc36ac019121f43ce643f20ed0ce8931148a4edc4906a5a5355b3eb6c2a5b10f87355bcb62428f1c755451b16bb6e6e794fc4d96458aa3661372068eae61c1221d4698593f11a69222cfa4e89f7abd0570c7379fb0e49ff024ddd11fa82ee10a4c0445d00c10ba49e8d42f2738e490b787c84987840b1f27501adb553a6332c79a2a5319d3c26e4447b725d9b7f4e24e5a5d792b04ec2f1f4a1df923e6806e0658a1ea6eca982d31c0c1a54280f4dc71e15016c1717e25147e2c73a0fdc46e29da206328b4adc6de33f5c586ddfd7fbea3c8564fe1eb3798117385fdcacbbaf57f976c31162e3097c0d22be570180a9585fc361180e01a82847fc498d3ea2f028073d74512bd0efb88e89e8e5312754a141d461cf7df3814641ef7bf44512c1bc0bebaffa418e91edc5e4c6c00358cff2ec9c9f73277638270ea601417ec9a10693494f7092659a79f936628a468703b159ed9abbd1c08f674c91c7a8237de7c11e9f1676980a2c0a8e8c8209cb9ed9bc069c4f469e0134fc64e58ea7c585a8a3ec7b9119998ffe68126013b63ce6745da82c70ec71987d3bd28cfbcf1115db4c3e62f087af9a7e7498ac462149e87c2762db2f24b4c9622795d51141cd89e50f9a0722bcf4726d6897de97b2603c286f0dfcd32dc00b156cd021f1a38193053ba1b1ed86a3d4c717c8596ae2b46ff68b82f4dc0d854ccbee85a9da28ad0382e68fb460b9aa9506136025bb8707fecffed36311cdc0e5f55356278fb050f764b3f64331c94293f8714a7930fc57a3924868a67bc3b857d3eccbdbb12b47b2d5c6072b1d4be98247745f4ccef8ee3675138376d616f9b788d9d1b2dbb23abe2001a83f8874c951f44e548b9cd19b78e9829892bd3cbbca1002115e07b3a6a46dbf4551c55f6da00b3cf38692ef9e99e54c740a7d3b27075a10782c7d772a40f66ab485abc5733f602e784b0cfbaac3f9ab4311131385f9b43cc20071599daaa846422019f22fbef9be989f9f6d1818af90c37cbc20aa5d14b6de32b54982aa7fc880696a1bcacfa67f5990b26459376888022489dba70d2610c1130639a7d55d453da4ca4811842daebb1b6acbc0c8248ec4e128fc349b6a33240338be6376ef1bf7f2ffa8bb02e6156a7a8dfca3905d309974f2e1a1ad7337d9cf96c35f14f62b05894fef3aaa2f266d8b974ae9f98de7e3f3271aa0c29186af5504f5b50ae578af9a254a3ec250f15b9c9716dc7efb0456dab01595c57a3ebbafeb2e70b7079ac2321c1a7e96373c0fc6e22ddbdc9ee65a7781a0a822661c82f224b459e04b034a9649a309d16e64994c0bd23f2b65622d1302336c9cb76a882b2cf0c6733be0ce4611b5238c207769a50e317fc16b8cefd86c756695238aca20b56ea82f60ad0aea84d4d427ac994eb35b1c1eba8bd1ba24c8b1c96ee2a3233927953a4611a0bef9fe2cd2bf6bd4526ea3318b4c0118e3da33897e33257a8c22b98fc15317257d4b613ad8224ef1ce253019d1f3d851a19e18cc2c101da5e2c4240716b3de8b04a84ce95143287b905228157c07682110c0bbac955c2a21f95f9edf9225ecaba223954e1948945f1e4296de1930c6bbda6893b1bafdd0d913dd49fce970d1f0208d62f3e6603ab205436337afd0cbf473230663ab271e7783bfcf4ac32849c6c3a60f1d9c088ba0f0f2ddc2f73ed1416db061059e6cd24f5c38036a3845feeccef8babdd77d0d7279b82518deba855c8d5ea4ffb394332ae7af5c2c9279014c2926b4fac01612751554e520890fe85288825a58dba642383e6238258496caf17c976566a0ea64b8187059bb4e073da996c85b83db8e50990a08bda065ddaa7ac7912da76a9221e4d883e738ee92fc70dc1516b6c323a3479ab103175d426d2b27de7ad1a59af90c95446b59c52c3ea6402058ef1d99d67bb63a8b952b4f0357a1048693631ead70aac42ed7bfe53cd93baaedc50945b14baa7fd8310a2e53af7b479cddc3ca82fe2bb70d4c960c8ed1507e71d8cf8513955a11d15940c9cf1c8e48140352982750227bf42f01c7d012b8a8b75915361861b87c39ff25dc45fb7e3a263df0fdeb407984a4bc0a2e8346883dca69122eb4e73190d63a2fa09db5b40fc34915f193983846e1ee8a1d29a69af94b21e7278e491c0794143de0780277f50c1f00f3dceee1892b4bc51b1dfbc694c55db1ca9282445c5181bf49ee667555732af9c049ca91eb288013e6b6ca88f9a44515ded623ade32c84304b7ccb3a2b9b9043d746ea389e095a0076150b30c0ae55812ebd8a1894cc257325d0400953516d4474da0a18e76309d71c748461ebf5dc80908e706e8007a7ab983b3dba594c9cde22208fc7505976ed69f091210c35038122701d388f0a31e55d8138c637111a952bf89d2fe218c0a20420bd1fb2e812f2cf1137856167a0df84d526a0a36978a8a7f5fc8dbf927bd8bdf51e11425bd5cef210c7ecd8a486b973cbfb0779e46972f6ae316cd4283492ade709964bf24e488c52187992bc029010c56952eda2ad3e7acea79ad9d14b6d025c6b10397f3e6c1da93cab3ecb946afb4e25fb96d99f155d5b5bdc0d050c083cb421cce928cbc447bde71a4a4602afbfc494f57de01a77286286e8f1c09ad5200dc0ebb7fbdc82b9ae446c67a012e5855949d9f3292c059f3e1ad04d1c545080eff77f3ebf14718b2928d464b54f391b61537b3013553eb415c8afb4397b67a1df9deaae1592168449237222a6296894c2b5d86eb81188e308404ab901670501f9836bcfe1a9e15aee858d54287aa2207a2daed28a31e1d6535a2d0f5083071c0f516ff696d8b7db039e2d359e92a73c73b4586c689e54dcfc89e3b4bf234b263190cc9acfbc107d8ce398455e8db8e45c1f850d9db332bfa880b9b4526d35ea96424bd83d0d3297d05175faebd79d9ced51a442bd8816869d66532124ff416b9005da681cc63edebab077697a4a79e66e8441e918fed788eb10dd70777352ac9e4ee0a11120d58c9111ac9643129241d904883c07af4697e947651b82093292effa58554c28779de944c4a3e59e1283ab996c447ab48b98b54d1038ca96a2cf4ee04bec3573f9a8174f0aee9016ab156d12fa2075100e4e41e82f6b79b3e4961a74391d891b2012624b53ec812232e351861034c3a983f9adbb03a31568cfef2fccebe4bee69d32be719dfec2bcf704edd6cf1238c63f380cd4739e3e829b36cc1da02e1c246d386bdd1771dfba8988ca31f9efc486b32d004de225b977697a0a640b54ef16bdb5a64a39a7c93b1645bf00d674e0eb0dac305aae25ec57b4926c008625f72f4191ca962b6b679fd7f2a76f1c51cc35e3eeae38a58dcc1c9cde31b9e7908fe96efcdd5dacdb6107f6b0b972b52fb79c950db91bb9e11df6eb0374d1866a95d19457eb5370862d4202fa26cf36f4af042541e0c9caca5401bb2321a505d7e0909d00e8616952cbc6aa92b37bb8326104413d132fd7b2b02a09f69c80318a72039b1b059122222e5ac64f93b70acfbd94547e019fe48d2071e108d1495649fdd04b5715176dd3ed4a3ea152e7c13c20246a8f8b8174e4a42277fbe622d17517b054435d458dee9ada4cc09db6df170b3661e808193fc44ac3079ea8b6b40a0418f94a3a42e276cb9c19034e0f9e123a18bbe966dfb713b0fc1b4ebd55c191927649c863fc6a5b6f4b3df7e47f039364dd902ef9e3ac6013388738e8e5b20c31ac31dd56a1bc69de9993329ea575d2386a6f93656051e6d7127e4ce484b8aac4e9e7917c7377c3ea34a043b90fa10e3e92d49ad4e3389978efb218c0667b356e40d3b87d59360d8468edabe393a6cc1ee4639f7725f37a429382c6ed1a575fa9f939c692a7e580dc88a8b89e8cabda3c3eebd4d066bc5cfcffefd461a7408ecb000f60d5f9983e58d18343d304f5811a24b711e1d96ee206471fa7dce9b5813e8973359edbda4a112ce6d5c7689e520c3420cc3fe8cbf078cf76500e55852448e70909d8d402f77b8e54eb32cc10ee1926858af6f217adf79a78bfca6ca74499f459ff53d595372a5eddf9bf7c20f92507f3325f81d9ee3151886236c17ebfaa973be10d465b0a725a9db4d379b0b4f9fd43344199221e00ab570f979aac4447b69bedc185b6b780c93a05b0d4812d19ea94491a99e21197dfce5d9428f55ac8dc6149167a1091bc2f299f091f8205638db002d4861d20525712bed0c59d541161c2c14dd4b5830f77a5b66a04839368dc188396b3326182c344f6686cb7d7e9c55b36d4e92da27325aeee5dcb8e14d6364f20e7810fc6d5cd6cc5ab71a2afceec612f48b66725c6cb9adc1f709b61886be411f03922dfc5e075b125cd030d844a11961f89da5f537ad3db0031f1dff7d1e9ced83c8248a549dc5424246b747897242edca0b942b4548aa6da048b53f0a82cb965338114e2079db27d9c645f5c8727838af407d0698ba23bce2ea052193a2bb6f6959e20980696ee60eb5bf169277370af681298d07dcaa3e61d5377c4b21eba647c6483cd266202c6bb7224304a6e376563b3218d3d2203fe8125861efab78c0fd850f50d220e5d6b824ab139a58b5307554b9c75f3da0467db26d39815243ccdd74b2ee1363a318310df61ad991b140125b607222eb3e02df82bfab03cf4902c4619241a685b4892196cc9793767977476a5d661f0e0c7bcc68e92dc0190af00c952b031112f7a26026de36894035d2159590f2950413f9094b291f88e04624c6e334e5a2fe0276be8ee20a26864b44eddbb9501191d370884c7a0a183c6be18d1a222b5935c3aca77cb92ded43c8e8d20dd7c1b8829181a8e9a95a020ead4ff0215cd82452fd0689800a1b4f34b81590952d9145c3802b6cc13fa40193f54ccd0d5727f44338b4d377cc1a0a024f83d9c12e0642e1133bae70c29069b4f2c98734eaf88c60464c2610a6d61f34f1a158d3579ff22739f3046b76da3d9b263413947fbad9923124bf8d5aad7c1196fc69b4450744d729d7c98e976e1248ff9a8c6a620eb67a210c00e42dc542e2214b177bb79eff4c0f7b73684daa629fe984a9fa5fc5d6b60ebd354416a9ff5fefe9f3ec5cd17869ebfdd34a8917be84c8bc480b135bdbd5ada8d3815dcb2ac9291c5647835ad58fb486582369ebf4b25b1416d430d6d019150a21e8252538b2b52aa866462ea7e1cf15f7712fcb113936d6458ab5880570750018ed9f7bd991a9de622296d0fd860e26225edb277766d7b06d02b17560012bfde59614999f41a2570281181fab95b25a55d6d07f26d1109519c456dd1ae512469189b71c84c62203bdec33c29796ec45da25ce5e7c6c9fe21a9c7fc7ef1ef97353fb17ad23a7a45ae7ce49980c45bb0a171629e67993d085c61f575ec98bfc5a6a829223c552ef241a41da36e68f916b15372b996721e90e7c45114204ac02876511879c7a996a61f6e219899002bf8c201899116754fcdbb7c75865578a324839aef76e20038c1333a85afbcb569d7799cad08b70892b292d7a8daabcf22870c8e66aee2acbfb455c1bcf72222165f11f3720414a932ba79cc4c274477268660ac77d9f259dd61a3187aa5e9bd5fb589d0e33404754b3524c25337bc9842c9cb1230e1898f34d62c84566aff494b1131b27e28956ccabfa167a5096d8ba3fa40db4012d3b2e7de2a2d828b3e49e11da8328dfa70742b7e2e5be4c4359afa7b9eba7db6748cbc857bb96b0abbb660b5d044032694d396cc0355a130a39f2e0cc275df3d237346dc5f9e28892d5b4f67fb83c61e9ef5935f319cbc32b3eaa2dff8fb8dca18220935802617078a89d724abf5f55daac80e0ef92f480b1dd2333e24ac668f1aa5edb7a5d2c62c30f6aa18d0b57ea62723a10c2544a536bd32660ad7cc1942844f6acf0737cbad1c24ff31174afd343d379364244c3ba6cc2e4d7e0925c12205919cc0629fd8b73b94807cd71b3da8c8539ede2558b39106d6360d0c8e38d7f7984b91409a69dd7a186b8f04164e07c101d389f8904b24fe281f085b8407c4d24f03e890d842fa205e63b31755e27ea84ee4d4159840620f2cb4854e8651ca8e8d1e89d6675051b9b988625e8902153208ce88abb7603402a8fb2d4cb7c846d4131a6db484a2a1bc32e80838e0e53831efaa8aeb8902a8a78508d201d1524d1e05aa0fb7fd26b3ede820a545fceb690dbf63477fe8bd6882d3b4b637802b8df0a2666264bed651c6245ea97127df8bf8c41fc99feb57244e8fefff4dc29a8245f8fe0508484755071cc86493404e56aaa59a2aea55060c5c6d4907f67aa52f89908c1e6249dd61c9acca1bbdbff084baf29452890b57de1ccf911f66346c5e57da5d7fa42540c3f3e9b62945e7fe5320acbb76a309fbeb426990fdd6f014083dde6f51647abe232bbb341b36347f3f6c991cc2ce1781a64d4feeace32609b6b1778fc4e6a0dac81e474f1868c686fe32010a754365ffbe78411fbec0e299516526760cf2902dd1f7732518ea714bb028d2c0828e58cb66a5a850bdd119da573948fb61e3f543e99c2cf3751ad435282c0004bf91c793c5f23ad4e13491d4b74d7d40611ed82a842b227c0d3cf8855b59a4cf262630b37c73ac09b6a8c2caba3b8a8085c04d50f94bc9acf3783895e0b474fc337916ab68d9f81462bb1c25aed8326722db99ba492414069df1d309e9488b9ac86549800fc1ad0e85cadfda09ccf85544050195ae87b63d9006d0eeedbba236abb7a8b8aa2a1dd22df0a2d9c1d0ab1992ddffc58c9ea0251c78a58409c692dc0910e096b96204b4cd20099ef52dbfa89cf6b26956d3724d9633c05de8a1e931ad39cc8ee186b165c49d49d5421bb7be1c1f65e077f29b37544c957ea0c3e8c37bdfd1e68affe7c74a9ac99c4b943573365dd39bb8c4260d923c9336258ebdb315fcdde70e4bb0ab762b6614014cc7de0d00c3a2fe4af57b8db90d833c25c2f0f9e512b80f53c053b28117c0c3870962d221c871ea0acf7205a90d0ff48cba2ab72c43688903a5c692dfbd210e82ba93320cc1e88459722d07a171e847720db4759288ded448727dd31cbb95e32741d0c648b831601bdd1237a6716fcaa22c74e8da2d3c1646cd7d27b2319360f74d07311d0fc5f2ccf0936e4dd051db78a29e74645fdd70b9c46866620fce6f8a26b564081a38b22f50b16419cd27ea0d816f4bda04ce73698307fafe91cb1a29fd1158d18fd22d80d176fdbd0983326a45802caab99575d4014daa803d62fa695b329849a279edd618819a97d108601b7190305d73e2e27f6b59f63a22e1b2e6aaf4e81db014807a271485d7b0466fe099467f7ca0a969b5623e0812b0648a39a90da0a6d56df9e1e1f714bec4ab2a59452262965fe051b052705f25ae1749b4d380d79326cedafa66f8fb6fbeab8b36fd309cebb3d2cd0bd816ddf9e99cab028f3fab61ea3dca28f821ca0dd7c3ad1e789be2ddb7e637b7ec6d2e3c4f8de9007646bdd957b7a1eeb996daac9ce63b7e7f6dc9e3de3c424978d7d9a035c7c2dd991147338b0eeee9d47bf769476f844c3f42ec63ddda3a4de326ba0e544f1c5a694d229335014a902064272e8810e4e44ea639e7b1d8e1093ba7184914c90191553044a72e081d6c0e4052fd6476683b83029220f91a207af1e5e3b4db025f087202220024f0d50dcd0249b7eea868ccccc6b0708db0a8d8a0cb0a0b076e0818a123418827a7521401c81c488111f864421440c2ce0c510f00813ac08822c880b902047074b00e1459322201198ffe2b352b20229a418394204122a58470481c4942045a8020816f885c19960e011ab000f18625238b14361ee6d81dd21c5894fc91261a5d91d3e96f8bc5c58e8234926c1c0235681989423229710d4c4c007430022042ad0d981af8008292d500b0c1bcb0604882645502145117c80022c5c0551a0b8c0b3e77bef3dc1be57b35b5db1aeb9166adabdf4ded1be33359a666bcd35df7befbd2f9c6bee5e2bcf14d0bdeeeed6b57b35aa59961ab2eeeed935d7424ddb4099e7de7bef950282bcdd7bafdf4a7db86c06ca45eef5a2eeb8301061dffbf8de177c870fad6a55cb5af6aa390bf6f1813006cd352dac8e4e870bae695e5da6c6352de7ebb7d2aa8da0c5561d2ef028c0054df37befac62df24344dcb5abe57ab9ab5f7de7bef75cf5a76cdab7577ff4c71d95aebbd93065ace42eebd95f2608b05a94e1f1f0863c0d6bd5218b4fbb9f8de7b9fe27b3ffa054cb105551f219d272849b250627b3176011ca470440e3c2481081f84b0c053205397d010504a290e015d628b999a0228016efa2d25fa4f3f156efa37644679dbd10923b870e2881a2e120cd0a00630881f74a0928302cf2109244908415af283cc088a912c13faa498c088203a14998d60898e124050233323f332d408a529d4600958f4a8608a276637f4072396308267a6a600358480846847275192e0d2e4882e8650028a2345dc072236b85010844f064e2849c1111fb44a37221208c328b01d848425702332a85aadb556ad0130191742862882c8114ea06db6d2aa713eeb4c4da5557bf14915e082a655ad565a3507d1e915e071adb556ab9a4cd59c564bc45a6b2dd534ac554dd36cb5d7b509e3d1de358d5a1b96d4dad23c88011638d881a5640626780d5177d4209c04e104aa23da5f1c86b029a5796547275f0ae615f4084f30f1c4131a5a32150441a02801143ecc0001b2e0091436b87670434b30059553be885450ca03a57a0817e4a0bd5603b5f124891f4c27df0d9b6547273d28610551c6c4143444d1031d9260f1e53065b0e77320e7210113223a599c00882c7a28226ba061ea707d08b1d5e9444e3448f244ca0d35d0a2861b4b82295a59e8605b90b5d6da2c78b6ede8932c9adc10066ba5d081ecfabd97be8f1b6217259872c50b8818828b2245b480c5a0c8a559f8b059bbaa22930511ceda991aafd6d6f02ae1855e29a680fc3aa15a3461ddd2ebb14a73602da59688b5d65abb23022fc05e70eaeeb55eaa4db1b9bb5b6badb5d6a953c7d85a6badb596c617dcc7142d98b3240426425842430a215bd8800b2957f4dc30050f4eaceb3841a59208949c3a279e77ce110c11591cae5500c55eaab1e7a76a742cd9f335dad1c90e5decd08e4e7620c2f664620c8345f440073e30c28b227e0083115c213ab038c20a1f9ad460881cf80e4b342184d21a991999979944e810214df0a00a16e4a0c40dd561b5040933a9989fa929c013213bdc60e2b04169c1671a464c10516514a5ca2b4a1364c0e0073c78e2c4ac0916de5a61089d1a78e14ac209cb73d07640526405ac1e2a663bd80207135e4c101141018916123f5c214d10317b4862f6e084125764193b3aa1c40bb6684727947041d18485841c1c79a208112e3eda261ca69452fae4a5834d73ce1f4a29a54f9a10c1a6a0238ab81f43daf1850509b6f732974a11a37984086eb8e1862623f062ca153f10e1851443603b62cf1128a53e5a688e6b843a0e9b52fab9f6daebc329a594d24b31c5f7628cf1bdf7de7b039a4692a9ca1f928b0b8986cb057cd1ddbd9709ac7d344d1b695fe5ecf9a69293964cd524b94c2e268c7194a82552ca0eb5a4f3bb91462452cf9e2418e9b5e7bfe82aab3d61482e940be51262f46444fae931e17c64e3a341d23492d0709940d3cecce1d9f8f60493985cf34d4b6c7cd1269a40928906d8ed4c14cf9e2e9f711cb5b327c9dddddddde549daebe1825ae223b95f3ad69edfd20dd9f34d5d6b4f54933d512e574d536ccff930dae472d5ecd9f3574cb03db9d79ed3c4b3e7973a138872997e50ef4ce04c4d926be6c03f9fb484b4336980345c2eba4b3253f333226dee8ad1e6e55d3aaf87873b77e00f9cdc2eef75e07671d17293465a8ea0f932ca2fd947ae5b5c74dc1d38bb24dd8ecbd78f3a268d6e67cffb18844322b5c49677d151866f9348efda73590ba1edf2f21ecae5a2e57647d100f7dc2e9d09b4f199401b5f76d7f85f4ca027c3b77bb8c6efa2a3e7dd34b5f624b9a6fb672d5a0d87f2cbe9d3a74f9feeeeee3e7d3a3753d35158d16b733091638cb712dbf333f52abfd27d3512edadbea00ea554476b6dad55de7b2fb65889fcf7fb19639c573927b3e2c59ad5384dc320fc59cafbd6d2ef097eab7bd02fb445c431ff7ed7c84ccd248856338717da62cf904a683673549939bcd016d1264e21b87c3f83706e8c71565fc7f419133ed331bdbb9fabe66f3cc042e13572bffb85b33ddf5efc2bd7f106577aadd571635bbfab91f80a349be0bc5528f49f0ef32eaf5cc54328c45adbf45aacf1a658df4dafc548ea5b9d736897f30c382f14aef6fc5018b220f74669f529edc5f19337d08a85e921c7188f4567cfcf334729ada633e5d47ecd9f4f973fd2809372cffa9e0c2d3b9fb268da4797792c7b520f93e02a0bf50a1bd8cf2d6c5bfefd4116dbbb3f60c29e1f65978dc0792257f6442e9c5f7bfeed228bceed4225b7f8335e20d762adc4185de6a1cfa0b4b8bcc7d97c3e7e1e69bc9990524aaa735f378a48e7e5342bdef5cf235d29a5946e13cccc552b304e5b74b69bb5201ceeb51bed7394534a17974c477a6e4de728c1e0f64c3aa6cfd4dafedade8c170f30259899c3ccea36d277b768cda361b486b94af7e8d8f6d73d2bb0ed3142171d23d4f4276f39e791d459c1f627cd70d171a6beeda1c0183357f9b3e895afc55a8181d133186fb2b7f7b6adbbd5cce1f8f386473f4138a3cf4cb0d6335da55b99ac49f499fb0cc2e1b6193da0193d21100884d30304dbfe2eef514aa9a4944a4a5bde457b3d66d8606f23edbbe5dbfe269591ed4fd2d9fe302ad05b89025365aa1c66e62f98d976c9f7863e33603e20cd068e934f38fa52b7fcfc80ebc2985c58b7d25566441171f84bad6742e8d98c28449ca8ce8822dac490a667bc3ccafe41691723a4a450e87e088473f16fdb48dbeda291bcfca0db9bf18ab21d25d2d9fe261d83ca4ca15cdb7f05dcfe241d6384acedbff26a6d7f1d0ef5adbcf614828b11ce141e024c15d36ac6cb695ede6384fba58b01337be2077591f6807943eaf4cb55fe9b110e663603ca54c9972f6a791108a7e565686d170fb3a03d3c9c019ba1671187cf78cd382fc68cd7f647ad660e4fcfb6875462cc625491edd7b318b01ca367bbcb3c9899b7c1cc9c467bf76066d1e9afe8e8f433a85a100ee5e7441a89f6d9e5a1ce451f945d50f6d679d906db3feb8fa6a3abb08ed26e14471c4ebf4d69b4c1db69a7a240e60c13089e4102b117051d30f58d81fa5ead8e611681ab3db62ba514d93eb6548b91c61835102ce50eb2cf724bc96e39a7dbc079188473bd6701766b367018e7d044c2b5a504f5d8b4e03c1ca3c76519610a2d2b3129bcacd472d22119bdf272552a47661260b27c2d9edbf3c24e235ab5b47ce6e282e9ea350b800bcb8d00a4c23f9542db4983b8f76e28c2a1453aae9ab09e1b5a748216e109b2421ecabf3dd106f5f36f485733c7e9e7d39c994355e3e7d32119a55b881b850a1de16a3cea559fd2353e936a7c04e1d490fba4e546e916900b71d7e854dac69f74dc2b9fd2a29c999a5f63e5558aa150ddfcc8eda4b7fd1a498c3c9da2ab4e3a6f91cf5c87ae4aa1103e696d3b69bc65d093be5bc6a35ea3fea4eda63a47098d6e0333ac368db7c1c76a653abd8ccf30201c19bb3bbd742edb49d71da3ef8eabe603405f1e57753a47c49a04986f838f2e748355721a9f75c179dce9ff24236daf91c400bd9777443953355f6bfac9d0a2d54ccdcb136d50b8099cc7e110ade8ce2fdb493bd53e73d5fc4ed395ab5ecb4c2f5599be721afaf39457aea2a2d50dd6a97b9fcd1c72b76cb9f92c54da4e7ac26c272d4f3aeed74862bc0c8dd25ea50ae7d108433b9df4e76168ed4d3e4b797467cf278956de739cf664b6275acd682bb53d9fcde8901f74c3347061bb5ebc23a8c608a20eb33350203e839c2101e4a04a9f520a968207cbe4365332594fe642fc8387b74cd69365b20f6f30427ac39eefc1d85326b34bc864a12d967097406fc832518f4cd693b38c8587869ce3c729a5944ce664e24e299318e79c33ce18638c31c6285f7631e2582141b8a71537767b2ecc5538b3990c87ab1b52d268ef61cfde0d3af747e728f1d7f17215bbaf46427f50cac2d83a0e354dab9f9c7369737c1fe728911fe46fbcca24c0b6f90cbb57f1d94c4df199df9c73ce79038140dbb6b1664cccf007e48eefbd1a07af5c672ab324acf02adac44fe8ba5bcd6af8d36d5364176fac50b41e5a85567bde1ed4abcc4258c776399c82759c86d22e873091cc63aeefc64e83571e96a218a36c61db483e8f57af3d1fd623f16adb5e0e757218e61054c467b24c05a747088483effd2aaeeee1b23ccb54b04ec4317318729e48b627d6d9f3af16a188cacce1611d7c299d2ce10c13c8ac3acc31c6fbd69ef5ef0c38f972eb3c25701ee6d9f6314fb4c952bb30096a41db55d62aa5acf473f2a92016f0ae2f719512d78a3dccd3f201d70a0d624f8fd321881e74d8d3db5d0bc805e79578c03dbfc48379228e89795ac0fa2d5c448e319e286c2995b88ddb5a309672c35c4c2af5a73fc594e6c4d41da7526b67142ef688d24a29a5941284633fd77a65f49047b1d6653bb8ab65f6cd32e1e4f638007abe84e2baedbeab4983595cab6658e6c92f2877a7ee2b8bf57c2f5814bab1161971ac7394dcbfb1ab33692ecf9ef7e5dab1f156fffc6159db5d906bb985e0f297bf18638c36c66863f4cc431e32531a68c72be6b735e59456c88f0ed52286643b423157cd2133b732abeabb3d67ffa03bb334faeda0aced614aa9b3eebd2ed2712dfadc378a7dc665d156b56faf65bec5b8d6c984b3afc3ed857d4038a21eb4e81319112181f344a027ea614f3089c8255a42453d50eeeeec595ad9a896b15e1af238b0453c769ef00a77062e6cc7ff806be7bfdab34cb85b738781fb567adb96d1e6e4690e62e1dec7f8931fe7eec2228efc3a26a6c27917b6f39bf24b100ba71d3ac2cd8ffe21772585b38b1c633c14567b7ec47bf42005a98dcf55f3a5c5548221b96c7c4ed375363ebca98dcf043231bb1da7b93e279d3ea3c498c5a88262b90a357f827b4e2826d0dd1f306f4c1d6ab519e13cd40ce5224d4d8696873a1eba74609764aae6e748a9c3084d49664a162b69181ed37c41b99c068677309ea8b5d691ae9ab5d67a25914825f797f756a2a0b4ad562be4c10384e38079739f8737638487d35cd06fef4956688241f6f41c1980f933b273d64c4dce8a5941fcf33d47ae106300b4883baf0ee97ec8edd5d59e397bfe16d2f4e54f500b13848304c7fc111300fda79b010604e4cde7e5cda7636d37a067d19b9ccf07c137db5f2d6f24e8057a03ea82d820baf9fcbc99de0c9b9631050d67c7a756ad8b13a78246803567a6266b7b57bf158f7923410d00b23b50da319436dd1b885f6c09a4863b02a05a4b04ebda13075c2b46a79dbf8e695b9b62c9715e893e0f9f3dbc850347755cc7017e533baaddc0c9184e06e0d780b7366769eb468906bcb5e94c451a8fe0ac8bbe288bb258319ff9cc6702f818e6aef522c1c95d2ded24d732bf34ddbf3eed7240697d4aa90f1cad3a66aaa6a54f29b5dccf54107b29b5d74e3ba723c932f82ae66cd923860231114b39a9d31e31b38b3e440e11f156cfd49149d72c4484f3f09e61ce2a70222a25de6a0012b33509fa18e816bd273db025f759d71d3ac2712f1ff4b9827040202eee1148d39da7dfaae7e6f26f9ff148c46dd9725a24fa951ffda67fc4c0ed4d03e18c467283749c97cb9c8e31a43d80370fc08c57d3765310cee7ebebf08fc6af2d20262626e496096eb1c540b87f1f53edc56043473e5fb5fcc8fb11b4804d03dba6d656ed3e7d0ec1dedae10141100441d0874c98927dac2672de02c39adb0382200882a08fc8d5d4c8d4f48061cdb4139cae1d9e17ecfbbeeffb3e10044110047d805e6593d59adff77ddff77d320682200882a0ec932ebcc3f1945e0f4bf5c8c4beeffbbeef93b1584cba3e199be115c72ab562fcbeeffbbe6ff6c98429d9c74a3d1c0cc7d784c16018735c49c64ee1f2842af8f18d01d9db7f3e5c027a525ec50920aa437b6aabbeeccaee484fea80ae590ca547980d4b24981596970b8aee0ca7f3f0a658015d023a8f4b219ea0e33435dcee3caea4a3f34a8f80cefb037406e87a9cc647c9a6f34aaf42e77d4de7a5683ad0552fa79118735c69a6f34a3f80cefb94003a2f95428731874217b32ba7999fdd719a099b3f6385633a0f7300e83caef4baf3fe657436bca0d3b80caaf36452313a2ff5a7cefb12d7d2e197cec31c572a3d4ce77d2a55ea583b7f1e6979435b4e9313e46f94bcbc921f2c2b3f9fe2309f8620ae509a459b969f8dfe4593be453ecce70bc28181a9750526ca05572d9aee9791872c24198b6f925e893315f7c4518abb65a459481d12974ec7bca1ac186dcd1e57e5d731ab88935b76354e4331e66a746aa84e0dc61c572a3ded8921e834b5d5025b600b6c812db05531e6ea4bc6ea4bc6ea4bc6ea6bcfcf69eccaae3e8c39ae54fa4fedec39594e63c32b23934afd974a1c6743d6062f7841e7b9a0f35cd0792ee83ca21bebd9f3edc65f705e6dedf9225d459aee6c91f68dbfe0447a6efc05375f6efc05e771170ce50d7f66284b0394b5eba52c99795545c80006a3f3806c180feae0a05fcc7b1e3be13d9f01e03d97ddf847e9f764f67c4f6e195ee965e7e1bf9f4f1ac6ce723b69138539e9d23e9d34a90bedd2c549b7ec8c37ad737ca709f0284df327e802fc49b36c1c5a8903e40d0a394a50a71b863716a3e54d013465f9ec8661ceb47bd6bccdaba0c2cf9a1a156a6c4035358ab6e9a30d35b9114cab68d345b45121ae60f3f3bdcaccb1c20a3a461b97b2e5ab30842dbfc6971073d4682974e53472166f00a06f68943e9d1ef5349f43201c9aae86a3d172bf96db85b84f1d4a23a17fd23908a0e92a76d22b2fd445419fd1165d51564b4bc985948c0c0c8c4acffc4e4ad778d3cce711086766469477c21d8f1272db498f06b0c20de0a4b91b5335493a9fabe6ca55786565dbe84c0a806524809316bd60a29ca9027d01981aa8c40d38e534ebd0900000002008e316000020100807c482599225311ecbe90114000d639446705e3e0f0723d21405511cc420c410430c01c0104308418829466404005e4bb3dfa846327b7419700a75911989a67a46c557b607727af801e310989c33f133b2874e945405e5622e30792a75f00ac33f920014a32057a5a83d1b9ab697348a07b077d0603bdf374c9b62e9c4a895f363ac6afa9b1c6207c6f5d3bc6e1cf83f77479b48fbe4e119c4b4b04c338660b6d6a5ae5b79af837d161754886804cca22a5f2c00ddc4f6a838efd6d5bc0ba7bef4abb88191270fd79dc8792e87207f6cc7d118166f511c0b210c96bc740d1d0350837f7602dc2f5f32b5bde291a1f3390bd90f24d8f16472e0634db31c79e7df350ad03190da8e27ae5aa163a61d7e30750e215e468470f46a2464787e0000c0095de96a7c8414e698299ad18454ec24423022ee133afde6de85d000513a825c248d482bbce412ffcc6ea7b129072c634a4442f54d09b512b20052e44cd9d24c1011a9495a9a5aad134c40ff389351e560a344a068bbefba5ce8d806da429237aa4b9fec0a1fb36aa8744c8ad512fdc5a082fd20a143ee1dc2b8e0e4020688ea735ca8ae6e21aaa6dced89a3a4c8c3bb1194e5eaa90f26e7ef30de0f31cdc1fa61d91d532ecdcbfc03823e6f0d2e7210000e3dc169cc3812e17d422d58452d16368d3da2e246bdc984596afb3a22d872eab92e08e95cbe74172a37a32cd711430e82bd957270a0bfe7ed6373ff9a332fedb519216d222efd30fe34de2a6386fb3003fd86b828c2a9e131423b4149aac9eceb90770e6e8b8ff10dfac3d6552b7ed9c047fec9150708d07edcaaae0cb672d0e952f9014cf0c0c980f9d274700690cafded14d5923d0f244702921eb2fef0442157391162dde8fc91dd52452e7304baf323a5a3fbdb88e537c6245a1017406b4c690f0d108e3c05ea6c1c059edd832285acd2e85066c19a6c4ec93069966a5428aca67f9f574c6e45e44b7a713a01bc69824a0d42e9bc39bb35e2b7d6387428686f04068c5d4fed99c509c2b523e50206e7400f410ecbf25f585e04c98f9f9243448b7677d0339de9cf0461142e4802a9917882249b09b20c4bc71c2836c6239d2ce30e83dad93b1ba085cd24e53295b94993e8e230093a69efdab41d95b8cdc458d12bed6b15ada1f392c3388dbb7cd168aa2440c0c003d47cfb22b6a7db3c50341bf9a313a6d6b0e22dc224a4cbf0e81d9892e2e45f5d3ba9942286496d5e467dac7627b3a240415c4ed410c9ba388e10ae5c95403036b8bc7cc5a83fb3b5e4ca39548f8703e757ebb521c95ae97fa3af12f219388983958a359607f176eb0b6556ce574ca01399dc06882588184c84983390fa9f533de6e02e6f8eade0501d77d287f6cbd370a60ab6ff0fac2b64abec6a85258d38cc1dd06c4b8f2706bbb8467edb004c99706e75df9719adf6a3825f0c081fa1612368094554a6a30fe037582b739dd9266a33a649c128391976cb38b3b14c1334e53d0e26140a911a6fa44ecabc0b6973793732c4eb8b7a6b0c593ff2a6ec6e0eca48990e9e25ed8321a25aa63b2b6cb20012fb0db2ee4e3f834f08ca2df5490275d98e02c48d63df678df157b753c62d8ad0c12044b9ddfb6b9a08a1dd2219de0ad8081df0cf10c5b3392a00c1258178a4c42f816687de91c3b33df7e90a40f468480a92869033b7692805cb20860aa4a361e93c349ab256222626c954a9b3be851393acec3900fe8daa0b49890ba31c1aa304ffd703656448f309940956a69864b1eba9d40b98301f6e4397851b3e799cf84d69da3785fa57efd3e78e49961e8b75a9c4481765501ae832ac5cd832b07666ccfc9aeeb26dd6c92c25007f6071341d032fcb50f01ff82dc8466c55176eeff7cfa652ed1f7a0e5a9f2447c1c481a9341e3950c5ec1a3d29888d92d40094c53ae10c728a0ab1a585f5c0781adfc1d7b647834a14b09804612012c51eb2b8446140408226b9a84c0f44e9831623045e2678ac320183c01805f8c2921080726ecf61befac94bbf4101ba884118b49c8f2309b12c054b491a205362acb606eb1183d2e036f0f521aab0e673441e1a8a8ffd839df765424044808a221474a0134a1ddce66491f8a680aacc8b9883227468aecc331a74024710478f368c06d8a2c1f5c0ccd1068605026a33c470a84001fc392a0c1eace80376933d8a16ace84076931864d8c312d25427c410181310f42a0b31047904ca82800e0ca1d907f4adf0ce4eb0b10c47d8e589642339b2f3ae6fb6d809eb17bdaa0ac1314a15133b52501807134d5bcbc3791b43f34a789ff8a81d93b0fe23ea23c577fdc7c31f4d917fd9a1c314025b3524a446e0e1aa04188165804227eca38df18f36fd75b97cdf63eb07c7989b1ef678c0a3810f0871b4f87af30b6c7b1e86e4d5a39e1478224985c7f45be2dd8a151eb170a57b44584778dae092fae02775090dd08ee5903d10c5c76e86bc9eac38dfa030af20a287aae5b05f5e928d0e7b38c08bb42fe021d5baa02b41b305b686900db505169e4547e494065a3468a474a650a0484f0920967234ecc932a536097c87512ab3764008bbb079c00a4d8bc53e78758402c07372e0f1c217924622e1637d2dbc85b6c118080370592dabc0bf6bacdcdbbfc81373ffbe0302f6f4d9c1800a69d86d852a61f9455af76d5857d8cd496e8b7ed47c61a861233028d2d2b2e8a73ff76518c5737c391b5be653b6ae08a09243e689f3d80c9515828642cd852710c2b0080864a2e8a253271d5a6b2455ac48f756a7e365e5493fcb6ddad03e402a0116fede44c4f86841e5e733d89b743c0584296b85229296375ef0d84a762bbc369c51f7f739a352263114fee6046711204c2856b4c314e9f13fe24348f8394295794250899d08df80c4be35051001f65c393913b1399b50a0371859cbefc17bf359b2e421e2e49d8d38f9bc586113c9254595966a65c39b158fc5e16da9ef866067b0a9c2f186e0e55f6fc29334056b2b8833aacd934416762cb6833ed39d353cee5ce6fbb3c237046376a544f307c931d30ba42024b7a16a73e273d7a94ca6af53fb4f3a3305d8939faaa18d1179639a82f31d48069f8d5647650da50d83018c95c37b00a4652bc39999a4d4e80dc13e5e42c60c5d6cdb1af2de771a21e02e1b404903498fe7478e74da753d5cac362b73dd680595d4d99d9fec589823fef85547e652d3838a89487e7593543904876e5d941939ae38aca6a854662a03a46db91fc2795f9e7cc8891a202a26c15ec4a14350f74f6f11f340b7a972b0d0807e545bbb01d511f823a953f40f86b2b204af0c1fe804e29ddb6f13488391d23ce51b85b4ba253fb06201797a4d0a1b9933f56695b0d6e85f94a03f02b7e5d1cb9b4104de070ce65b219db80135d01f7800c402fe436a8469be9e8c82fe4eb51cb8eaa8c9a2830ec1c9ce924da2d4e689925678f017a141a92c94f731096857616dce3a410ea08ff3d70c9b37cbed587c3d3ed9c36b44e6ff673150d26edd9511dad34db83fcbf95365022674bf9294012091d545d2f9ab173438b08c6e17534adeb7bcbd7aa6a0c7f9bb37f29b99e7d89945e3738d11650339bff025a759dfc9e2daf8b4c04072a1834f890f6cc460343199c432a3ddf2813595f53bb17fdedeae2612ffeb034c8960ae526e1176f97f373bb6a670fbd9f767c744329889c073e2d0c5f306cc68e1f386fb91f1b39b7bd12298995285805962f06ab4a592cbab0d2c83a0de7e5a27f114bf05bbff504d0fbcf364035bfe9b9ad0919ef84c9b4c1fd93976188cb927f2e09fefaa8b071f1a78f9ffcd821553052656a08b67fa94415a5eb6c1691b8ff927aed5fbda85fa47137d9f5dba76a570c502228f2efb922c1f6f4ddbc824062bd336abeb6d5cc6349c4bec2cc4107667644b8d044b9beec77b3c01df38cdb74edb16a7c9023a12afc6684491c66964c519e24ce0c498cfe544fb29e87ad4f358f18fed43060c1b3d1f8291cf0751f389d52e63dc7ebe95ab95b168e33563635b3b349263928b346a9aa2bde2010150b0f231e42063466ecae213942f29659187d345f81e23154315c5b4129f19860c01fcbfe318562a3d3592750cf1aa2730b992ab0b2f42501de1d76fd479d0a6cd20c30708bd9d1bc18bc6d25e444d43f0fecb6c3a71671654363995991f51d798835e26240ef7ee1b1efadb31002df56b06645d2c61165625bd65150b6ee40cb330b3f6c801de4b85da3428cd6df1583c0e656ee84a01663b9d95d97e5494598c88bf02927e40ec744d1131fd10404d1df5d6f95e4defa800ad60155b4c8a2218b1a0303683bd1de2b8fe14e27fa52c27afbb55e05d9a6c28a2533e838f20be7d11fb6f3ccfd8c27062c41e283a7e40c1037353fdba2363423fc36990cf494c4136505be7a098bd8e915e9133e4d56f3a0d3a8443e1f9e0ad6253a0f69a4b1284f4badb7f03c8fec42b8c0ad169da6bd2796c76fffdfc0b34a1f08da7affa0e8e3a057d54ceacd65c7696763bf5cc0463767d147f2f3553fad6c5e3b0ae11ad04bfb5aaee7e5797bf7f4e47da422696ea3e26fc6691207a642353c8ec2392baf2cb3131ff9ec4f16abb38d72fef6a4658ad474ea764f6841a0b1b67161bfcb59b011c29be70575dd831b874ea3db9b03d292b8018707ce0b085ebcc7d36234c624094990c2f18b95b123cd028f4e9b49b8918d758c800e11e26691434aedfa4198e89e3f623ce2a15dc2d0e9470f2e09f1f00abf929e05ac0dd05957d1d007095fddc3538b5e990a922fe06b776178b787f4456525cd741581ca796a1340f0c517e4631f697b1f542a43d12314ead0ee81169a8d2b58b263ba955dc25ec6e6fdbe5afb9ef851546710326477a4721d54163c1686256866d95fcf65c03f5991212d37890d122326dba2c136c1eec82e0a0528bea01e30fb4a0bb3e838a42222a95748a4614830b47564033a97947f975224c151fdee398cae6ae6b124ef7f516a21a7dfbc86123e582d9696a70d8770af392482124cc82702d96c66ca0ca6a56c2ad41f8567df25a96b60e4a940cc4e78da5252ceaf4a3001c2c07247cbdbdafc6f879020121bd6db0da514016b0f40862d182612997c2cd355b61e990cfdd5e5b79ba22f37e1d0e7cade6ca5c9567721f192213565f50e818d123fc83599c76e09164761cfcd7f574c93409de81b7e7bc7163fd23f36cfe05f327b2ee57721d7ebf24be50d227d75a8001edc599d1ef3a273fc12f566900e7091f84a18d01f7fc5b181d227b4272057e083d2bfe74420843eb20a8a4477a081517004957161b7d6b3102447bc54f8b19305636edb3bd1bf39f52a856f39f6a1841ee08583866ab85d68beccae23d78e08d48acf9029d09202a71780b0982917d42413aaf88b034b69b67a031799069c0f453a07479ca5adcb043eaa33c83c0c0f164c3be1bb0fc0469b53c6904c8d2386ca1c7a22c1c84868bba4e5ea95c990dd1f0f3bdf5fd0a7df4b2ac38e67c9474c8429884ee973505fb358e99c00e12537108ac0413691813fe10a3fe2759d6ba8caf593f15e763692bb5b88cea29aadaf5ccfe2b9362e51550a05b03562b71dd0d04d761f1dca9579d748bf90637356919f72e0896f2318f0dcc53c0ac8a06c46adc33501b6b608d55e2b0061f5bbdd14e30dee541c96f11fd3d39785a8631101c86c8ab6f48cd7496715214d40fb2d7460d6260c2ba7bc8308d17458d8d792d172f80f5ac1d69f7457edd76d8fbe2589d8d7493ee45e04ad614b0cfa1cb914b3f8a56f69d83fa21742f17e2247850291b9878f48494ef5462b8fa221618c3ab4319654aef3985ff534bf48bbba76143450a80bc60df27437a1509d1ad0bda222baab24d86b82b76a15fa9790e5d133d6efeff6f79b9b00c881927ff237d0c7420e882e07146504b06741767377e40d8ae4b4f6c58e5228a7ae38815416518d75726ac8a33b49c8c3a061afec885cab66e6b2919c55e059ff662482d3f0e2a9519bcce368ab737f416d470abf00562cddfdfd8fc4c247df689caffbe85c7b407407d5855e382259b26134d4bd76f11fbad8a0314133eefea9378874c7e453c502c4134c60fc93905dbf6c4a7695168acac1ae50a5e38041753ebf7c703f01ba2e8e7abb63baccb2a130fa0185a63588dce9686738d29f23e470be03002127a2ac85f7800febb3d4bedc798965d62bf9a75ef4fa022d0744bbe2c3807c8160293c0c20541f3b524c54996e998cb7641b91894b79a93e0231ad670c3afbb72fcaf4c1fcdc01a722c8f04d60cb0bef605127a311991ff14217d5ee88356c5df957256b0008172efdcff8e59059bfc78c6867638b28e339682f68428f2e9b3764cff6629dc140215931e37ef290c2998281db72902a0ae2c02a8450ef8a5c1166c38706e00166a91d7944ff4c5e4d3ae30598414a53c507a6fe28138953716f3344a7685d6fa9f9bce384c67ade98c362da078c45203be83d5124331b2db9756fcd2035d81f00466690ea1158af073bc792eb1cdc10dbeced6a21ea47b5c2b847eac75c71f6761a6e8e00815379356a26ef6f4c86f1e373ba9cfc7f9ff57aea8a1c78a970c2e721a92a87867f321013bbf055eca825111379257e2260cc354c1328f0a42d8249133550b5a543b98c6696520b61ea772609abfc3806264f72ea2bc319018c366298335173c126aa2ea661219814720169422ffe65f4871e2996422e332fd1f896b1fba0b85d2986c79d80b6cb93307c728e2a334f664f67229e74e5327c83726effb7611bf318216cd70752c361c3b37101f90368a0dca88703f07e00d88377bcaedf17a7e92b1c2122e8df526e0bc525b04bd1bb1857f314bf4412d5996df3cffb24ba6a65fa29a83ebe1124c5e56f56a61ae85f5db368d523689ae9d5aa431854e8e54b149bb0cbf76793c67b97fd1ed8809323c77655966340adbac0c67b3cdbfded4bfc298e6e66085b78035ce0d6d198e24f608e8220d58637ab12c7a048b1e71888b0f71a9f2721b8cf42a3523e42a6389d0a13516f6502be2ef597aad0f5655692807904e6658702e76d16286227b73c842de69bcdce2e55bb9699df76e8f220c808edeb4e8ecf7f2f2449cb787b5afdd1299f47760c77215a6c468e5a8b3f82e1b57dcde9d63b39116882ce1f1a5e1f3047f1b9adf8bc1ff5fea6d312104fcbcf48c65fab3a4e351e0eceaa1f48f54afb72e8d9ca0f79815b147df55bef461f2d631bd627a519476ed4959ac4f8b8bf4b8807d52e5f951ad97423c83d96de92f935ea0c11f635c3a9b319129833a2611173203e61b2e4ec2b6fc713abd659e7ef5d8fbeaffbbcf8f11d2e6e8080b27ae0933539161ee4470133e0c5c528c662cd813ed05711466a09ac7099139c1bfa585b5c79cc0f2311741a2df1309b739fdf153df2da9491db8942e399be0b81e4e7e34b0bef976d14420cd0317a74cdba0e0856ea94d61bd0c2a9cf9b57db1b1cf4d49cdd986dfcb5461092ec65a888a1c964b502094acb12cddf77dfdda74c52d2b1f62297ab96129b751afb9f5dd8dc2764bafd2fe510dac7c2358fc6bb2321ee8cd7830a6e6a5f95af39a5fc707c68e6e5bf3db678a77569f370faada7f5d700e6e9e92b994773b80ce139387796b582c7b507e87425c555ae710d41ec2fb4d3ce6fba7b4b55b436f3da3db8006ffb1c7e4185cbeacb989768cf19faf8a608ec9862f43c1bd50a45caeb90e35489c397f412c169c536847596f8570b0004c906fae4fa9909463c1d9e11813977ff43506616f3ddeccc1788b191f8e0ebc839560d6f494c4f7e208cb91c2a2f9473f0cecd2090454f0654cf4000b8b0569528c76761d16fe0a22a23b04e7a46aa4444888d1e3173c1fa15798739f4fb991d3cf5e3d214982e47dad6e618d36125ebe5d33d9b7204a43cc5067155f0d4a61add6718790aecc12b666e3c36b7215207cef718f51594def81668c543ca61da0634120640db266e0da57b203f70d9b557c039e16b001157bb04de8cbc515672ea94854c8e0a77c94eab1c852e99ec424377daf367ab76e44b8e9c330e86da3965cf067bc5b816b426ade5c3c732bcae816e36684c36b55d24389831122e3b91637a04592b3ce590abe1efcbdb95b576e6f0bfd3437eacd17480b8c2d0aa356777a6b2f43d9c44c008b0f6a9a4c767b83faca48bbe53c87c95df632e16b2ed95854322c7470153650f3b23cca2b7fd095c1964d4ae1b570a837547d006bddb77b83cb63e0219729cbe5946cdd5516969dbccef305b8f962643866ec89c690ac099a29e2c90335782418e5f94dc6edf87b4d28d127f584ddf7c29df142f14cad692aa975bab633ac4428d5235003944665ae914d31b8d210ae0c35b7f25fe075cb4b07ab3b002da53317a0754b57ab2e2a05c431642832ccc4191c0fab17567ef1b20af59b6ebae3a89814752804c60ed5df41839a97822c6d4c675f6783b850b8053af2997d3aa5e01383978e364fcc6985f26c593b5a1f3a9b74324635e7fe74231a362c8268096831e3acea047bb98205514df97d0731e356521bb9458582e044d7504c312e1faa72eb17472b9680f783386b68be3b61f79faee2e38fd6a328e1d2f7821505b8dd14db0495fa5c02e6e86791ed3076579f126add3c6f02bc44c59af7664c953ee7169f7432c5cd56dd53132be59b63c97726cf1e3f501904e7745cbbf3a266a4e5ab523c63680d0daa15f0396997616745eb668667cc7f288528031fba3158ff71c52643b760027be9d1387ffc3dc7c8a20cb5c0bd94066c5ae69470096c0a0603ae372ff329238ced013ec6ae3c3b8549889f8ea9a471921eb3908c166275cff9c31738d986a6a09b416962ab290265d21af9cd0160e8b3f151eeb5c267b613f0ce8a950e2083aab224a7a4773f20c6e557a3efd5962bcf433ce13184a4ec0c4283846a32452d3a5b3de5a59cfb70a93f437b7c8f187f2744d5438584aff5414f3587b09ac629cade30585ec1ead6a45d6deb09a1c1b4456a5669e9b5b510debb9dce13956198795eb1f7e545ac2137213c12b737bba6a74dca1c2af421cdfa2ed380aa8df28ba0658c6d1bc1dbac18af214c84e76403a96deb0a9cc984a49ca9195262a876681abacdd6ed7fc8a9260a371fc6721293972ab77d061b686f1d456993a96f2e6dbc14d775f5b8654935eaaebfbe7e55b76c78c3da5f6b4ba7ab0f36b8ad4afac4ed9cdec48969f43552ca4c963397a3c8b0ab64c3027bd8f73ecd2da3cb6e1709263a0ab9436fe4bd9536a2cdde06e981b028ab1cab15c414784382e8c60ade79c8fbb0e00362e8bd412e9f31211302935f0881409f345a750493b01b9d8d0976f9a52d67477b67b4164b6909f0616c260aa2b41ee4c4190aea4785eff94198e692511acbe0e0eec5b9067987179c1b3aac07cd4f79fcc0863337f87dacbb118f8d2d5d472e0fd9b017c49d415bb127505219209ec2f0cc2be1ebb11f053faec2999059c87bf96f3d50db1e188b098ebf027cd9fd7a1268df3fe64bd5aea35620b7f233108c1c1e3fe77a400fcc0804a45278f1d452202694fd78dc46b01c140025975deee7cb2c5e4befb8cd3f306b3b5b5c7db290cd5063f5e982dec21fc6fba2cdfaeee7cdc99be5746b165285321652c10ade5442fb2601044b92a8d0752e8cca28a04b02a655b478126b88ec6b23444ec2c15daa8f00c4dd3ac438d5b8972b5e777a3b3be697700b02241dca34735ed4ed06dce1d3a62257c5a2ce5f6155daea9b09ac875929a321e0ac841858f584534979d4058ea385a094a9ce367d0e40479524a0e242485d7a5ed407d9f9080c124093b5529f3b542be05ff214fdefe28fde71829f677a1a01fb3d027dc331d1f98ea7b2995fbafa7f82df3d471e62c69932254003f057be4e6dc46561aeab43c40bade4860a91d0abc2aebf42787caeab1e65c4db11f97333909850bcbae5a56b5438c717660fb91678dee04cc50aedf85597a39504850792450c689eb0182d0138754eef66c087c17fa08b5b213a2444477eb0328e63f20e0ab9b81312b7dc1345e93281971d9c6d5dddd1cc6e00f5bc8720368e4df3b7cf4da76c479412d692ec522867c42df0011f17c34b12091f933f0008c2decbfca179a8bd7b1bd6445e91605c54289f6fb3d1534b9019233c9845815f133df220fd83f584fff8af4fe657e6bb00d1f5315ae95a13808dce1c9a237c5d72175cd6b0435a75179ede4a3379b22d973e389cb6ec0b506a0e8d6dcafd8dff1f29c008181f5d56cc6928081c396c5dd777c7fdd2a13b6505be656f2c42ea93e36d6798137c3496e39ee75c85de08280cd5b266df25893ab09d4bacaaef786a4b31db75592104cdfaf287af872f266653cf061744739ec8e1c8b8b2722e2499e7a32a416709f812110b96f9e5211041a0953f96109f6f249854715419b378a2463275d5a3240ffe8c766d0c7775e70edca3f2c23ff4e794ce13eb7fe31c847e7b5415968a87106967978c1d4850f2780fcf05e023711059626daa95f84d122e55267ccc0f39e38f9c8cdaa6e1a2b354f6512f062425f30e28d2aed774334e5de024880fe13ab359d2e0c13a93008ba3ec0c21754ce550ea5d3644b023dd3c12da7465df72ad4cc876dd55949d206bb32bbf8e7436721525a260c94342c1cf4af023bb4d21122037ddd2732c5c4ad7ac7e0a60456d77a19d1405b3f10c77cb6e052e82c0ba1b51dd6d937b11ecfca89cff352cfe2f134921dba1a9c4b315964fd4ca46c0b6e22cab27eb088a9356d7a0cd8afc665142914c22ba4f25245498ed532bd962860c4453cda5c0d89dd0850337b061f6645ecf61e081f0fb5c9fa2d73c13b79d33f7ccefe93fded277ff96fc17806be0afa3991a39332b887bd112a147e5ea6929da6b54d96f00fb586b7d24e583e6ea01ba510697d99ef1d897bc94b87a261f13901664edf1e3b97d1c9e34f8f134674ad91ec1161a91c3ea8c3d5e232b22ae1da81ea297932465f20486cf7a6cc1cae062058654affba6929e985a853cb007036c1540498fb55242b6e1b144ddb0bf16bb19ef01528b1d321c16ed3b245cf604d21c1a8e0be7d6a92a73bb710af9128096513d55984ff72ad98403e0f9766c72855f41742248e2c83c4e9f408108ede0cc89b2c2d489b9cd6fb1ccdf808c3df7bdb421af7615e12c2d0819ddeb629a218b3572d6ae1e9c1e86e7b7a3c5ce112cf5f12f1a0536b5246086d8a4e318a8959d7728672614c6fe29ecfdfb4d2a137e8f05e9da9c077fa00107dd18e2aa96210cb8b50aeaf73f536e0edf06a1543400ecb81b0ab54678038a473eb64b11fa27d08099a6951b955391ca6961f9a782873b6f79aa480d1cb7477316bf28b668ac6f1dd206a9ae6fbe56d421a39f36ae5d47130645f9fec4536f75a8b1af05b8e339a69cc95a6b9218eed3ba10c11473dbed329fdfdfc832e1cf6fc82846af1a3375d6a2282c78d6d45f9020abbf59bd899a6328626778a320fb5c82f3361a9fad2118892b49c570212eb7161645641f64908bb17cc83eff56ff568b4e21093426a57002fd326e7ab2cfebcdea9ac81baf63e4a2e9db0e8b415a277d1941361763539cdf57438dd8ba2626eb94387ee040b70e5ac9e95cb2a98e3987aa0ac8cd0e93f1b406c24b48c96acca4c586632af3232e4e25fff1be327ff2c970560ac0ffe6b6663262f22b16d3418095f986edb39e518bfe42b69b6a4305104a238980d4abba0aa4ee207337501249ea25079be430247711ccab6260bc6ca36eb6920fcdb37644717ebd698c678993a3488b7b2756d8326f131fc2d441e84b2c034be85750732c66c04f9629c5f3d910f67aa54e1d3cd2c96b0c6db1770de11f7d4df8c19301f24bdb5d40d5d7981b6262ac121e414a216899aa3800f8cd3434b840a85e77d3b5ecee19cd297c406d505fef087e30ec55fb0d2a0193220dd4ed6e7c30253677551c45e8dd80cc50ef617d6de0be651fa791deca47b8a123634cb8c9d455e6bb814b51a85fb3562272ab3a756a05a51649b0d8deb0f433d2075edca2fd09863845245f45597503ab73a68f300342793362ada8180fde5a9f9b899142db2c897ca4ad90e1793997774b4d26fa6b6404e72c42c74061707a78f60d07ee3a2649f574ea7ccd61962aacdd08756abf50c8885989c78859859a5bfc5de2dd6a61b8e185e727edbf689706a9fa8a12d662e6a6fd1ea3c7f899180cc3c47d32b82ece2292223b93684b5395b407872af7858da491dd729a17f51b8a88bebd3d7ca254adfabc196acd6ab8d9a2631fb4f46b6c4e05a07217d259580c59f8401620375d8298344f838040b6fdd523964bcf73c52a84fb170ac8007121aae587c447d0616e98044bbf8f7811ceeb571b15382f8cfbeb03d0611818a572c13c98433506ca04c3dfbaa1dbb13dbba05af10ce40e243394495d3a6a9bc479dbb68ebfb99a0e88cee2c8a5595ff32213616212aaca14acdafb70aa45a44e06386589666ac8c14ea32ddba3bbdba5b5e84b51339c9b8a3cb08df5c1dcb03990a8879889cb37d52aeb4b9d9d2dabe0959b99ea6a438c6a899dbf87a12514d6920118ecdc7bb81881038682aaef53ab15b294e084c88098c47208f58f345459c57cd0da4640b2d09c4a03b3ac2e80826a493280744f4ed008d17415d89598c46f18acd7afee01da0e694483d0d0f4143abbd3a626645d9cf5ff8a346711c460dfbd5bfdf3fc11906670b0ccdee776a3cc8830509d8a28b3592e379874cc7d477a320a074e761ac19aeb7103d99c39a6d1d6da41a2be528cddd0ce7b9da21431d0bac779516ab1db8cff0f0dc3900d62506f23aa9330c6fd8d661f88101b30787bbf883e8f189a4a9c29dadb9042b3a2bdda0c9a1957c4dcbef7162881de75db7a85c192d5caf3d22bb3dbcade1e1cf0e5f49bc469025d05a3ea77b43bba1c6015da9502157976dc6467ec51ed9e62886b5a4e4db80330b175bf6d0dbbf7dce7078eb8a8ca47612c55210f1c776009aa5fbb96862d2a4e6e6e849521221a991985315be963ba9cbdc79e7a064f30d13d562cf2be19c1370c458343fb9261e07b9615d698c56655bf38e43e304e2666d80914755ead1157a2b4191a92dceb56befb6a1806d042f9b4e5beeb951355fe8305f7c2d86268a61a27c0b8bb02be93f6ef45621df69cf007299ba6d60298d93228f90dbc81309eea329208fa2bdcdc0c08029f22269f1c57e482e2041a0887cb606f17fb4cedd5f5900cd1e9692d991201de6df0927970622b27e2d324e551f659e85248382ec2756018b1c4d09dd1835543623e026e0601e5763286646b5008afda720cd28a0b8e0f167009df0f942e1e77a097fc85363ddc28db3b8b6d56557ef99faa66351b20466547614aba9ae0df62e7c7dd1daef26bbcdcaaa56f00483312082af35da040c54e832944509538d94b0df15fba79088ea1155218dd976c2f1db6e4e474a1550ec77162e3f8a16b5149c73d02f590326ffe627e284dab29fabb06a72174b53d953a616dea52658aeb6a0ad9a252c1f88d6a7d9d4b5ad68516f727555ebd3582c25f69fa33d03f9f491cbc1a573e13d0a1f08b233a25ae58515697f42250c731b2d744e681a10cb49bcd2b4785e585802c94114ef17f2eba3ae5d1761f6b5edb0c955d12e1603f5bc36676c89dcb54f114c2ccbcc3de564142b5141a277c0c27a08e2ce4a30bc256f74bac99c6be11414f21cfd0779ee424ccf2975cc6cbe1747657b5eba906425038c21cd5fcc185adedd1abce2baa1d463c95382a5fe31fa5957492bb4bfd7307fa94e7231dcbc6c80ce2388765fd4d0bc87c1f80f9328a17a78124db33b7f4abcc82763cf72a0c8554a2496bdd8c4307b1ffa5aa50f74c7c3a638e01fa165ac5f1b920a5fb4b308e26e83667985b88f8ebd0dc8c702a01314fb837b834affc89d5f6f3cb50621285e6921cc9c89fb3717a8447268c9324a14a7c84c29933a9bd35bdde90b90f8381c827f10c6245869f42b1533df37fe295fa6cdd62689d82f08a63af877a6a4b326278612a6ccbbb151f6de8a76b1ea9d405ee94b99231a0634d0642ca976c15ad05811765f356a07e713832c06d9491eb18650ed6a92cf8eb0f9ddbef00b994f9b8682b9386e8187e841048960a1591d94006b57ab5cce9649460a4fc9666cfe74870a27fd62b91e62eaaaade8da30d66055d03461a23dc918cf515ff099516115f86f4afbf1a36409baa59c40e6b3711b0c7f26d7a1a03cefceeb422c7f054184e2c9941806c401e3ebe3e9254269c820892fb4373b430708bf6a1c3b1608e52c641739a60679b1b283a8a7b968e8a068f77a7aa299ee2e65ff755f4ba144baaac4e34603957433c3bca3a1c37633656266c0b7aa02910aaed97b5c432e777214120e3b14a6cb65efdd799b54c81a872b768ccb314c82d297a71638862d2ed7ae863257d8ffd0b29f96200d736d5913f9fdb583c926804acb4d79d6cd760f639dacfc0ee04b4e3c4d9ebb8086edd206609facfd5df637f482b7ae0a691c7748eb44ce71acb5e3838fb9a08f5d74032f2f982f320ab98260281205aebe6103df15c721ca62620768c974002a24176932b6ddd5c5f61d63c601c1cd6ebec9278b32cc476e6b2917d411343dee16634233fa2c1fdb4268d0c2e90476b2923b7daeaae8d3046caa0880eab7ca10f645fe44b454a3503f5687a8382e79609ba43953402246c35616891cd5bee94cbe372a1e410d7a1df11c3563e6480c0764219d0973b76c30ac35904bfaa1d65b92b97360c3f638cc4ad4879d57eb62c9c455a6c5ab1bfe0417a1a5f3f8e0d9eec567eb3cf7b3f20bb99031b5e73472ba652fd52bf828b0a7eec1d2ab6bc01ae8a43a048325944fe25a542a182151efca72fb75936da3dd6bbe204d7ff58503e76fedc34c90b16fd16cdc2b32fbcf498a561ef76cba72937d134e92909c9b03ec7b5234f4bfe623151e0dfbceae2007d6bfa45fa7513a9d9697ddf88449ba3516269b4f5a7936d5db4b7bd82575b2ff95d318fe49d7029bd43f2739ca06b47725e3a916ed25c110e09b6e4a0781f5548e4c5a3287622ef986b719da4dfc836423d27a81d5354a8e9de060693753b2547dc9b9f743b0091e9ed02f63cedfadff992d015f2195976981d962134ea6c7ace2570c284666d257bdfac5914d826448656eb980c9476c3161e99511930c51699dde257624889cb8729d60bc9abc8287b1540e9612cb8df6cfb6497966e1c4df6904fce9a1905baf7dff28f33cc04380f1a55948988898aa43e165f6e43e308ac13bad08e81b168e4613a470ebd4f96416978fd8b1d3d67512b8d6b3815cbe87bc1b631c5f6e98fd463659db2681d2e98ad8770556c2b0f93a19bd09482e74e1c1c52120163b54f3ab378c0bfd1b0f151bc20f65e90fd42abcc2d12132d95b88d033ee2143046af4465d67ce31151a6f4581451348c54524a005a4d612c0c2c9aca964c16e04c33fe98577381f6137b9f6cac4337f43dd10d98080eecf1c774d3eef95ec91807872115b703108786215ea80617d370574ab7afbd6df25bde51abb0a09c59405b02739565c261f2470f5baa63c422fa19ca4d6077ce289501d6fb94fe32210d080de851028311ef5cb0291cd82a469922eb3a78bfdc22dd2a26670db6aad139f285110beb1ff9ca8e8ad7c01264f4fcaaa25a4421ec59e6e3202b5a4ae0645c8ceda1fe11c10dc293c9f105f6859a63183af5ce0a3aca6b4c8376cd9acdf1d30a2ae4e0e8f88185f92be691881a777e11c5ace94e03002b6fefb102a3c691603023dd7aabf626c72e0660b93d869c8525365d14a9457bbd206ad773173d8fa75cbef4691b4e62d4c0451c9baebc5ec347de0875229204d97953012a690235c04c40aba0a092b02b118f9092b2ce57620dd41ecca24a7c01604bb5067819e90dcfe905d5efb3395740348f2290b81ad99040929a16d26a98888d84e61ec7328981126c4277e0e2d5761c511a3986606a45d5de65be7af00fb85c7cb93a044b3be7823ee3c0e159f970f28302bc20591a74a1d31df1c7ce8cb7f6ddb7f71188d2ae1c668f2bdb40ce5051fe93aa722efa724711d38f98a6ba774117ddde87e2b30a7f18592128202ad3c0eb3ab58dceeaafc557aa79b40bc20d04607048e8a0500e104f85b33c29a9323cb54601a233ad44d6676acb359e8e43101e69fbad9cd8825e201a6426938c30d4a8efd6e31d891fd9b59602f5de7cda2bfed105af555ead3f5d9217ce95413ab4373d21c22c1bf6bc4cba6fe61b40314680c45fc4e55c2cabd89933107c11a02bdfae9d6b04c967e12fe698f2ac03265c1cf92dc19f9320eac1e071fa60c06a4a25f4e553772d91ba3afc99303e5af223d1259ed2d9f3436055bb3a9310f15933856e9d917ddec7d470edb94130b86953e4013f264ae5bc3c53b6985408891a41106e15124577797c5764ac1211c91e7bbcfcad0d8a4a46e0c45434af9d72bf391149505e161fd2b02ad62219d582bbbba9e311b998612ad80aa663dd6e6ee945d2a60fa19812069f0b739ecbed8adad88b1d6c4b2d69bae4db2aa1c16183f0573108edd82fad82f66ad0a8dcef0071e269868ddae2beb7cfbdb28e16a5966aaf54f7d3f8b508bdd738a2629b2b29ea6cb45772a0ee1ecca3c7cef7384a161b20cd60d2543d9787103d4794eabd53c6aedd7f267c76c4e8046ac9ad007926aa6b611d69b3f2767c409fa224a19fc01813f5667ec6f225782650be3df61a510a3429f1756029fab58c1e6a4efe951c16574567327e792142a7bd5168528581732701ecf943e258e93bf82f6a31d21d2f2744b8c8dff04cd2eb21ce8b0ffbafb0a393580eecfa38a89f4c5fc963d616f0d32c83be5b2ee20e9b83089123c4f6841367b2e294b6132bec2e0d34baea986780a0166d260d5b02280041d74814cab23c175fa1561366ca1463b766325318f7ddd7e35734ee3a1e09e377814793e742027e0cc7ff74d01a98efd833696518937c9630d21dba0f5e25ee2258b4d62732788150aca1e70a2851432bf650f2da35b44ece5ac36fa55ec55873116a520e21ed2a8ac1a3cf9781a0b7566b24516c6f3971ec7d1baa5a83bc782b15138975a2cf1ef903840a345afc5f3db24a557b053dcf2c384a610635383b6049238c5ff7416ff6c6fc87c4b43f1f898c2081755c7051ac5358dad84aa554d16dad42e943a92b6b3dd4a53b9ff1d1a1e094fc865f539271eaebe5c54d29d35ee252b27c8ac26f23f97ee4963a2e875b6b942659c752cf98b9408cbc2b887579d96df521f85d310fdf6b1aeaeb4cada616a4d52d9db1f7c48ca3465b846a823e37f2e194152f310dc3ec46080901c149a555b1182781c2b085a3525ab3d1e222de8a821808c56b6b479fc0e60a852d6e51bef802d0b7db72e03598162b708eb95fcb722f3fc1738649bf6802171a369b23c3c4688a8ca01fcaade15393cf87ef42a0ce0b205c91c1ff968c282bffe675340dd156382b26f0e63c9ae65d4de303e89194537b1225d3fa74203d122387d68c43618d5efaed27150ef9b51682ab0ad978e86f741f2d59dff3826d7c74bfaf162b6538a9ec118f3379b31a360815755dbc22ad74d5f73e144df21e782e5af8d4380ba02ff642aa0af84d090cc1fc4cf16251382176f0e2ee512a38caa00c2d9af4f0457f9d8f18e3a623f3c03fda5b3e2932c73ad3377037363a9d4a158135886f0d1182d5677b63a2863292bcb8eb302ade12bac9772a29789ec03340d68d49f22130241927121cbe818a6f02f628aa383e2065e47bd3831211a0b2dc188ae78d2cbd7d1728a8a874e1e3778655461a5dadcaf3225f4399d97aa071ac9164ec502c0fab001e39865ac984dfa245c88a833c34122abf3dc028f099aa75e398d378592381139a3ff14d63c9d484a52dc4c87786e8903eefd6ad9f21046787185d368f0e57f92c5602ec5e2fa650b05adcce84c5c2ccfd640f61d81cbd22b3c5c40ee87f1d2d75455d6ba2752a800c6cd8db6fd5386856335624b59649906fd61b8896b10a5e87af71c68a682baf5a6170a4c07e96515a8234c6c5f696bc1db40d3ff3a4067053cc2a327120086f230814d2219eb027a7f6e959ebb259739a498a3dc495c527b045fe5d77ce5ef2299f2fff5f9bcecaf70ed232a604977e2e4cc80324bd3abe54b9e08f0d5b9cbc2c1c42e24189d4e525016d587054a167e4a4b0e9153129a7e8e3922b9041b2b4fdb512f9952531fc2a2ab1ef2cd4e66f2aaa591215a5d707c9487e9a4b234e6d63a9c89683306796c4aaec6ebc946dedf3c312ba57de8e54e599fdd5d332e3bd3fac08946d6f63d062cc7c1820f8ff78e6618d34aa6d2943fdd9cfe0112c216bcc3fd5d6a61df9241191c1e4b11612f37718cde34aff3875446ac7058110ae12a8142268daa82092ac920caaa4eb80b3e24d740f2edfa8a8ade43596bc2d3cb41c8005ac9d946bb2262acca68379a3273f63ec818f3c61a2968feed64f6861f29882e391c3934f1ec3ad1ff47112e4648230708e6a0a6c4d5507aa33f970be444b3b6c7ecc57534a67a72eaa48921c8c6235c8b0d0b2b1e1da45d144c988c4baece5134113fa8bab0e896d99da8dfdd82898227eeba714e78c0e044946fd4fff3b23c0a12d6446202d86a48d4938c4330220dcd23d153950c7b99aa2a6e04428672f6e795b315f020b20937fafef8e39f7fc5024ac59639d6014f15a1e3b0bd3dafb91e3fe0db1522e4aa82cce77a87cd3f6c9b1dbf8b34e9bcb5ba4414ef87dce3f396dcae90725578bdadc5cae8912f5a8d198bf47193ac0c6e849a4956c66523531d074beb5a72fa29685d8176543a86e2a132ef008341ee20e0adc73ef1ced9920957a24c4c790216325503f6ceaa6133b0cf8635bfff7ae4bbf7feb3f0a69b491ac3a58b380a209b68de1277bccd046bfa5508188010714d54dad514b0bc8dd4d0c759af0fb291fdff514dd046cf26b49f41271c36c679ec3af1d095c5aeaede2ebe21eb80ccbdf8265cbc17cde03224bc9e71e0d5ce7f04bd0546394a5c4ca51a673c20f836f0651c44c2dc3fd0c8d1c85c79cf1692251a2832450f1aa998706f0dd4193413db348838802982720be9562a02aa032793d54622fd7019f431757c40084728654b4bd36624ca301cc27056e0e44920c56205e55493ab96d31dc43291142ca0dc66f2f12c65c8725edabd7c470b6c2710afc442380e0b2e2d6690630550087920a9f3c07bddd34ff57b71da13826cfef7fc905e5bd28dfada9635bdb766b84904608217b4bb977570c870c830cb15b6d429d73a14f1eaaabfde3a13afdeb7068df91823ab8abfda9d453f6e3a1baf0d47e3827cd7e46005df8eed7c5558841ecbae6d531ef55e7d5e66a7227a0f1a6598f9d80ce6336f2bca669ffa290f64cd354b771280ad518c487883bb10b9b2d6eb58630da894290c547b8126e4744a06cba20d9600cca5195d6ec2a075f3b0e3ed0c5ea27b5fa616f0ce8620c8478d3dfe90d3210628dc853dc2d72918db6c901d13d55b7ef74ec80e8ec1015066e770cd57587f058aa62f5a72f172f0ac66f1beb58b9caafaa837bea5bacdbbb62d78ca069d78c40e5e6a35739b6534144c9c5e1422a88447161b7d91d315e03225359976bdf4e7547cb51df6003525fa182881377e52aa87aaa5f764fd8d61d853a779f9306380e437da7777c2cd7de7d7baa4b39aaae7cc09e3a0ae5a87775e5c376eedd77fcf4f5c5af080c045d2380eec942681351ab1ca71da9633fd91d9ce93ea76f9c066eb7d92f065dd376ee64bf784f4739ac5f7675d04398b2f327cccec30e050766aa3b50ac8f784f3f7d056f5ac19f8eb28ab608687db0a7eeb39dfbe91f50d03d591f9d6273d010dc93dd817ad7623f16fbd3283506dd14bc41b7ab3f3d7639525f39ec7c54bea2837e636ea572cf525779ea2a42a820123b1d2b37da1d9845c205fcf6459773d85d2a641666bb73d7c0d591c2ea87fab655ee5c8e8e6e9daaf1db109585ccca3470a1d28de7be494ea5a69e9a9d0efa935571b1a99fd6ae3af74c878e78aee3be40e3610feca694ead8b7ab2a64d6068fd54f03f7fb79aafa8837fe8b3ab6dbdde8ced5edb0f3417d853df51376da68c58eaaa7d3b98aa14e5fea1feaddb7ba4a591f96158a9e4edfced555cae9b963758572d4b16ddbb653fde297627d58be3a3df5947f7575b23ea9a71cbee5f4a8ba423de5a76f2d75e52c5545e55c5d794be5ceb2623f2015584444b13e285fa19e3afd87b23ea9d3d3e1bb6f29951ea5a250c72a7d4ac58e5253879d4f8ada0f0865217ba718dd4ff4c19cd2e5051adfe33a762d7ea77d566ee4a01456f9c0b47d7db295d9f5eb7acb2b932d39e5253328e5255966cd8c7df24efbc325d8a0cc4ed3aa7205fd70ae5ce580ef5f68bf1f86eca91a624328b4f258a01fce67f4a18cecf2382c0022f3f2e3e1329c13b4ff1d1a9961939c0384880fbef34a9ce7f76a1ad3a1d91fbe157b5fc64a8e3ae8ee689b80044537059aeaf3571af6174fc2e370cb0647b1ee14b6325dfb78a99f0012c42d216eb1147511205cd11129b0e13224c3103c22052b4c5a1f5d6ec24fb805a3f0abbbb13114ec359016ea20c92cfe141ae9a26283325f0741014511cee12998358fc4881546498e9620315182056ca27421bdad84424a777e785151e120794d073519e2bbf28d44b01763fca187241d1bf14444a023f418329f6ad8bb0cb7be0c26b509829098d218a50ae8bb07d2d86efc0f9046df786859655efe697c842d38ef109d43614fe7e84056bcce51152790628b1d10300e817e5916d44136797d728d56f2d5933fed65b739a52a04b4b90c10a9b3d8e9a1b16bb02d072967b1d267b225f9c247befdaf9b33f86519ec8e31fe308641c884568425fd2d3e5e980108277c84f0f13d3078790ce34fe61e584f0fbc3c255ff9b65fcf77cb96378cd09ead7c60db556706e6657be2a7fd6c0fec5ed78a81b2d86c889ce345216a64e840232438364cd9e9a6ad4a78c24ebf7e9d4c262ecb4cd89561a6cb44a9099aa4e4b4d4764d5eeca6faa2526d1858f96c9ba6c96bbaf16bd60773a9ee0617f9668f5dc31ea77d8b9de7691cb3e2cb0ba7f5e01edc7d6319383870fb66833d1df6f83af0a22ebb7bd8618f6f84d279cc8a1baae33ad369fda93ff468805ba6ec9a0eb9851df50d55319005baf231fd64b2d8101a8104511cf499103782b822a87388681653cbc7000a8575375057f703d0cdec4fdfec575cf964c78e61436804ae561dc0de1057502222a0812ca3c7bed15ac409a3278c52945657a9f7c04cf55ba5ac0f7653b4de3071318bcbbd7b8f93fde9815d3db0bbc2acb7c2341f7db1c03109ed10da4002e32182098088c96a3db08bd9b804067e9ca0f1b24794016d8628a7f8e0aaeeee7e8c3d3470e7052fe3c98034e421bc9956af67d7ec4f5f97955b128dc761267c4f26e35e6a2ee365dc4b8d8452c84b3706d8eb18b4d34392a5202018f8e11cc8d3874474965168e400cc0d3cbab9c54bb6d6b6970b2fe3d5e07c322efc74ae4acb65bc339f4a07042104f3ccb4edc475372a5555a097a2ba29147a29ff81c74d9dbd94af54083d95b3f840efca8a8da9f76437e57c941e20faa2fc871f37f51f58b2770395c4a9e3b62ad9bba149ccb28ecc8d3287ad18df10b2c42c898d9be33e7737409679ecc1232e3eeb9c7993b526abd98faafe3564968eb30761d703efa9885ee6c24c0712021bbc8734f81a5d1f5777bb24793beee4e3ba90461171e9fa40b990461131e8f618c08d0fa241371e32ff608332cd84ca88521cb9910c361883262561a24854c42d7891d86356c2ad799e33b2e56c429e9027647154c21e5292881491b8d5b1638c46ec311227597299cf302722411623110d25c92b60b27b01fde06fbcac0a955645455573c6983b60165c8377cc49557ef84295cc604ef6695594ceab5089a95c88030a2184506657093608010a8f48618a9b1dbbb22bcbae1882a5ec6ac86dd9b6c52590b66ca7076efdb0a12ed8dddd383225f3eb3bb067ffb0abe64d6af0a04d94354b03bdcef313e71816b3aa3a6b88f68d3913067308c11033a181b2a04dfc5e5417eb8c051b0e0e87332176288373806496884e8cd1275a8ebd791bb1cb747a4aca0364cd1fc9aad08136f36a82eaa8700b2671b3608331684329c940e5fbf3adf83933edca5f1ebc00dac07b799002c8821a07017276786d0c94074208218470061b8cc10335a981420b71402384108a608b43f546bd3df2525e5ebedeefdda18d3cacf0723ea0f25f943c826a3a03fd1e2fe310ab417e2a9166dddd1a408247785094c33c1f420827dc0f2eb9fd9d1eb60a64bb12e7d92c11ed3a2693d589da61d4ac0df69ec82a56756ad8eb693d531ae8f9dceaa87ae1d66f5fcb5acaa9c4a61df26c59853c3c747a74569c56579c5d1d00bbf60598b46fa6bae2c1ea8ae338fb1161aad8906d019167fb86b83b7dd5afe7f2d0814957d4ea2ada53515f3be4996fa8617508f61d863cd9103393b17b0d2808bb21ab0fa70ee3783538dc9216c763af6f8d57852606226c4163c39224254a92962c494a5aa24449122548484a922451a22409129215484747485658818464c5d1d1111d182139a283a3233a383aa20324477460a4723f950a7662608ce303ade59c7362426bf8420c966c6083201414f9010aaed6a0d05a8609e6074bb4ec880e6cd0173671300581a3832323881b96182283279810011b84b40e305e8299f92a2a1020114210b8233a28c1e52e3ca28324aa00c18584043978e27e99188e2440e1112894dc2f83476010bafc2c32a40209a2cb900684aa1b619675cf36d8904fdbc9ae72603f1d07f6d3e94097fbb8675d35715d05ba9cc9c6a8197b91af29b9725de42ae413416e1fe8daa0fac8cc42e8fd905d8e79db07fbc8a0208e56870772ccb7ddae1e9dc51320621637da22b0ff6417e8ca661f7cb1ce4736c73e65cf6c8fbe58033181b0d821c0c171c2e3af7f3c702e76ed7c7584d0267ea7a1c589e7e6eff0857363b671f7ba7ad9c631a580cae3dccb745d714a6b019cbba3f908d95232210ac5c81de72a87bcf1d71e85ae663a7629ade93bbc65d0e60827577edbb0cb1aed1785b22b6bbf6edbd7b17e512866713f0d421bf99de61185eef6283521741e62d88661a60a25c56014e22132ad05a2d0dd213b684a243618fb5ed8fb5f5f59f481dff7d157c68bed886cd8a0cc27f9c9fda406655623542354a3c4ec1aa15b63a406484d508d1253aa82dcb03d56082bcb496f3c500927108c91e56177c959e1b95e9167fcc5107ec6abd88350966183321f37c4a493ba20d8cbae12259d93b58018fca490149242414152281b621ead04f493194200b7954212f2f431256c4945b321daf6937c7201ed24f793b779b49223a42bedd7f391268826e8f6bc586f8837fdebb2f6679515aee669822e4d91cb7a126fe4b1b62c27ecc9ca7a43bc91bfe40bb73ea06e259dc33c7cc80d5d8c01e9bec20665743829eb29fbe7b9cca9325173d2d9325553ce9799ba9d9fd9318d042ab1864cbc51d53c064aa65eb6ab469e1651c7464d0c48c30768c3cc5feace0bdc1da9773ef47ef24600ddd47554f6e3fbe9e8801e9fd605c407c00850c0071b3b3da458a354ca7ef3a8c7d3e54f8fb8b342c9833ad90f687edbfde011cafde0d1113ce2e669c7197578885840e74a2b518e884052666778737e665e66cad46f71a572a9769543e62f7f91b13b5c54d5bebce0f0979797af70b097ea2f77a930d5eeb84ebfc3457598cfbf4c9539bfaad1498d4f5c2a07b9a81c330f5339c84a9df3990c36d5552dd529ab5457a90ed993df5435a301555d65b317fb6514e52eb5e52a95d5a135dec8b1277fa841b0372f95cbca9ccf5cec975195fd68b7d81ef6e6b7cf39e79c73b2b0a8c4a522308ab25f966d26ab5d33bb2676ad5a8a40082f55d89341dcf8996d3837b408edc7f110773eee74bc70eef6aedbacdb5593a0a6c30b2dc0d92b66a653535569b203c2c58db1ca2b7b18927dd61c7da7d73cd07919f6e4b52b68cf4e0f3b945bd80b9419f7ff6fd31bb60d7254e4407bf7a7a669efaa65d99b02fdad47b7a671daf6eecdf43e67ea2e47df143b1d9a0e9c2740aee9c9ede6019f988680344e878f479046e4160309928456016b44202aa109c4e27ef18899c478f4c5a3f88805e7fc0093347972630bccd969166c99dec7606b6b6939a8a7de379202eca1fec1325cf805f821208d7821bc8aa2ea8f1f5946691f09c19ee97188a993588192e254f69fec9afe4d1b8b7278e0ce772d22bbc67dab1fb7a4a35ecdf6144b1d4d9d34a1e06da2ce41d92ca3b4898ea04d7c8602aad2447ca43d9a6e32f1d2556a26846e8f5765e551c98a6d398234f8c6778e6c53a6f5b57833949f6a5dfa5cdc8f3fcdc482b2752c9ad3c6a2d4b70d468ea76c66916b2e1645ed912882a0092e1649a21b9b48399decd7d7874f6791c56687d01ddb7fa2a9eee8ca65dab5cea7a5cdb21ea21f547aa48f9ed2c79ce40aa1f1303b016d236e21e9ee68057b1185a2fc6b22a215401adc4d8ff68bb789208d0844f74db106bcf1da4d9d4f5fdbb66f5a8d4a505f74c28ddaad8847312add6874b4d3ac188f50b1885b31bbb121c523f6b0d40b7ba77fbcd49d97b8093b89481c17c40fecc1967f301a252b62de78c42dae89e2b34bd44433fd16fbc13042006e9fc5d2fe8a8d477dd4a6538007a401b1ac731ce0754e0f64f59ba8b0a04c522c5442331be8652855077afd54b50177a0d7a7d506ec017a7d54a59da38211883522bc695573b71b3201a26fb23adc0f5f1377ad6625a0998d0b39ab6df683470d878036bf3ebf79afc72ceee4da435c2e88cb5d135729c0df7af08dd820c7bdab66b996875dec3ebca6ad47779fa5aded6a329d3b1dd9b56f71eb1aef26313bfb53a66b1ae92469b4b019cda1cea100542aca4e28e6523add8d9a96d7ecc6aef8abd678ec2da136c67996d8accb5e465ea473224f57c41eb37ce2b6b85f16638c315e445713ec71d60495f7bba0b8cc2ef19791781591338a7845c11ecb96ec98451657912b8a1823668db0c7571446b033562f235711f658fe9a45b815851197689f509535824216b78bc0fd6da11696151bb3705198fe92f209547b465908b35fb67d5a1bb79a55955f35451621e2527b425599448828163d8981700bde68a41545d0fda29288e446a12814852684cc5f2cc3655984bbc3a640e7401e0995da6ed94637d5969db927a171d9b52dd3be6526ab659e4e8e2c2223e37e19928b5925bbafee880974758b252cd3c5c5c5a545d7d2b5e85aec122d57259172558b4a85a29e84cbb995732c2cdf30eed4b1a4beb2d26118b6f2d14fc592fae75d148cb2fc2c6756765926f754e772c839296fd1e2da535caea5ae1da59a2c948e79e5da3b3ef61ddc75fcd9f14d6c7bacd8214ba43c25e51cc7a5704f623b0af5941454cb534e9bcb5b9e0484aa279172d5af940a21ab05eb377597fa51ecf0a250fb6159a52d35886bea3a96954adfd5211b97751df7c9d92370323e8281322d0505cf8387b76647bc37df0383d93758b5ebf397a669da951db3674fabc287d323da6821acf9a0ed81fd8bda27f6f8697b6476481ffb3966410f5e5ca8564b423b36bc502b469ed92f66ee0a002f67b52454b66429b68d077af6e0bcec35e79c3d9965f3e35120533629bd0a694c8e658036b2a80145b618bb1b2ccf01b656de48cd92efba6e4945bae8251a4823b6f85dd84ff56297545f5978a33a5631c8527da536f454bfaaea2a55f558e352ac01ef8645211719e8c11ad86a89d766557537628c2db1c3d172d56fb8fcf328f54359b958f55dacbea538c82daaabeef2966f2bdd8d16ab43552d2a15ccffadbbaa4a96d56af59716ab556af5d212e7a985ca0a073190edc4a9aa644fe5f1f56be120b7fe717ffddff5c07b15abd88f0777573de255b90f79e37ba06eb4d647bc2af6537dde05878adb5477b98baae5ea321e751715b75a2e1f6b1bb1275f6b23614ffeb58f5ab8f3e130df620b1d2aa64e47cf558e7ff5d5ed0ec70be633e63ea48bf35f56ef81ba2bfb16d73a1d7d17d647bc31f68b9fcf3a1d2a5f591ff1bed82f7ee53b1d615a70c058170ec6b7919e82fe83472d6a74c29ebc0a036121f6e45b2a07d9e154954b32a041b0279ff22f2efd905ac1016feaf1312eb55c52b13d6d0f7bf271695b8313ee74f4e37ba909b79c401a30473fa2f8881705e51f77aa71a9084c7b86695665b34c0ea956866cabedf06ef60be2f6bf6c3bbcdc63dbb6ed4600ddcd1aa1f561fdb06ff070ab26784d18668dd0a0b53d309bc4fcb494da27a162a079440371cb0f6c50860a3488d839d8e5bd1a6ed1cb231eae94a1339f8d8dafe5caadb9ed4ad90f030688776eb00be2a67a70ffaefbe84b81d4618fd453367523806eca1a71e21e4d47d579234e3e5c2ef4becbf69876086697c09e44966559760dd3e093c0ba9b9e44a76d5a966516c218e771d89b524aa09e9817b0e061c3d34cd74bbce989025926def4a117ffc243e67a6119196b783d7e5c5edd0f1e6d26adf6311d1a6f76187ac0d0f3851ea51e2ff474a1870b3d4c7ab6d0a3859e2cf424f560a1e78a9e2bf42ce9b1424f157aa8d0a3a4670a3d52e889424f921e28f43ca1c7093d483d3a7a0cd00344cf0faac8d1608332b0e395c943f9af5d6ea0272f29df02d2d041156bd4c41b79790f65e3ca7fa90ba50b25b8701193849818982a60605e8e5e5e564858ad5a1ca1450b1723b8b8a890a8542d54b4b4b014818565e5c8ca8a0a3452514919404a0a8a005050520148a5a80d4a513550a8138dd3a9e3a1eb381d8edb72b6cdd43299b4199a96c9c8320c001876c5b8aeb9c395f19e94379046775f791d200d66bef2369046bc570369c06ec62850a99a989573466679ba9e1605fafd5e2ff0b2b72af6e48b133cf332e84e999b1de981922b4f5536a972494518b7d815005e8ebdcb6a4968ccb21b9f8d0b932052f3e90a24991536202b5e831fc53428d0ef43b46899038d209d1776c9e35c2717d0ebfa6c1fc0972b03aff6041adf7cf105a9ea480fb0b81f3432c2d2ed2ec68d0b620f878788761ea8fcd9a15d560ac46fef11ad111bd4b4c71a8f30badb65a7033e6edf860127d0229d19a11d61d2b51a129defb833c45477861cb1d775ce12f3495cf38246102234c5168e6054033528011ac20d564085330c7182088ba41d293021c5132594210657e099ef47a5ce59227b12d8b379ec1a40117c2085156ed0840954c033ed122a9e24b05f44e0911e18b9985d4235538268c108492d38d205243c3230a88213848804290114788868efc7256ec1a02156dc2f36b9d1c96d069209b9dd4ec40b8f96045d9f2b9870ebfb2092cf154c6ebc9c667a9b22e4c15deddcddd04c51899684f44dce736526cce224880359f40090d5cf42d2172b0d02dab49450a097f781e2744ef6cee6633f22754e66856056bf2d44ca2e26d4426605d1041a7d586597e3226cd43938909154cd48b4b96c490271a328692468fcc7ddefbd048dffb888950feacaa3aeb4ab1c433830ff23ef90a0d50222cff5c87359218e675ac85e430eb2310e860384299b99391b0212c11ac490e40d4d904248089a072e98b207710c6120f28411206c81054f88215202283013402b50b106a2378421092590610721b0a2879d1ea312c8e09e2eaca20442ee9705c5a80627977f5ec3e5e344365cfe0eb7c105164a2083154c40c3187cc0c34f2e9f083e05b815dd70e192933ec2257fbb352dfc6139a310762724b9332eacc2094d5ced2847e1a1bad865e1077427f7ec3f0caf2c5ed8c56dd73f1e2ad8c1599f19cded97062d10dab7adb98c5bdf85fdfa780a79e78773354db31f367fea72982eec3a1cdcb19ef0c23905b7e0e797715755d467cd4e1d0e4db33debc746f78339c6408835e23199d23e9ee2629b8d3cb6face19222561acf6f9ef875f6c8e891dda6857f15168dba6fd7ce0a78e79cdf9bd3cfbc753dcabeb70609f76c7fc760ed21518f3bd58987f1207fc0eccbedcd4e9e02efc3b65b1f9182b2d8cfde4cdec4b86c5dd669d97a6699f578b5b76adc3819dfb109db3b3b26c24de7ca75dea750c055b6e7ad762234b646a61875ddbae41adb33bb0a73a06020a0aca29e7401e14fbf1505dee1f0fd5072d67775cdf0f43cd7e919340a402a8a2a2cb51cc786e7d5750ffe0f2e115c434ffe8635425ce1323468d423c83cf526310109ec1c7a93148ac35bec658f4a2b22a646f465a8c48ce80126144da07e80bfb7990f91cc4cc0cd97e58243151b284f934187bf7c38ab8b53a7f8b0180c3c4d49aff363f754931ec975dd64e251a19f31730a2b004cf0801980167208b28bb6aa6f6e57796d1d0d86f7e877f2a79a2b93456ce987c98f7ea0e3eb55a002a5defaccabaa7c443a4c672ecb1de25750e6516ebcc3a0eeb96f51cacd6f9a0c37f99bfea7018f5d3b9f1631d763e3897885b36676b81ab091b19895ada7809e11601ce2dec07745bbc09cc7bb876a459c1ad1ce71d9270cb46c9921f98f0352cb815c4f9da92d644e67ced09b77cce87dc01d19978788a51560f590701ff7012f0cf1302860260a0c0d001060c5ad42cbecd700e19a7e77c80d44b4a4b6d49291c729891c396430e326a74d418a088956e3c8e778479570c3b8439f21f0f77ee10e31f0b00ff6a8d7f2e36fea502902380693fecac0ba006a0f6afda59778366e63b4d53658ec9540bc02377e672e61d7f593333f2080f111f5351e7703cd82ff3b98a53f82623d539fb6528a3ab8302eca712c27e4f80fd3c04d80fa7653f9dfb998a3aa70b324a52b9149d8a2e679b91d1e517fbd103d84f1544e524ac842b320d758e296986fde81624c37e2a19d76100aee8ea0084fdb21feac905f4c5265ffcc58fba1e785f5846622f7aefdb7c9bdd0d1bab436d6a9c8c84bd38057b71c6629fbc3434d863fee2347ff159b7abbbf1c2ead017dd036fdfcb617dc8eb1d8bb13ad4fbac5c84bd1c15de18cfa6c22bbd1d2e3b1c3bec60d9c81be8674a2a80fd321ffb511eb8244ee192ee934371e355a2a028d4c5cdea5d10b738029015dfc3139a1565da8bfd543d49dc824354c9b03216eb7cb87118dbf7e13075be45bd717aef7eff70ee771d1cf563a59a5a84cca17ed814d892cbc7a91ff6e4f26dfdb2266e36c5973db9fcd74f6b829df08100ef2641b8d5c36fc4abf4607568ec210689920016b277090115b9f334f58348978663af716eec56410873284684bdf84cfdb21b912e106ebdb0168048776e3c839865a39093eeeee9a4bb1f9928d6904197b989fef1653c7062d1b11adfb1766721dc22376117231046d48f1dcd3c46f3ee6eb490db48eecc2766773a5668827883cd4ec67e4057e6586d21ec6132a8d469aa023877c7e928df36082f9d81523f9c8be25d945f14d5c5509e71cbc58ca3a0a09cbb1b302d7ac6371e68cd8cfa01dd19ef7f30e9faa78af1ef00f8e7d5f88763e39f4e00fe412301fc834703f8079176fe41253787e7f1947328b35a89a766cc6a56b700ead165968d0a9955a3420640851ce32cee8088f3349f014474671ce646e75d6fea17efcd7da0b15fcd7ff8dedcd47863cdb748e37dbb39cd8ed8f603eaca7a1f46fbbc38cb7a30fe22d2bce66d6bce34bfa181d7abdf8f7b03746fbe3147a3eadc1b198fdd0d1ebef140b1263a9cc3a838fd1cfabff9ecbf9f03fffd693f1d1e7f7540e4603feb6d3eedb7c3b43d7ec4d3bc78dbd5ccfb34b1ae66fec9d58cf5617de62c3b6321eb352f40fd8befb001662ccd65c080f1193b1d6d57f17dd62afec567b43ef1de3dcb7a6ba61e8695316377d4bfb03bece7eb0f57fb9acb2ec7cdad853ad89fbe39dcc6ca1dec4fdf03f1039183fde2fd5fbf236ed37c7e9b9566b26eea99d37c5a790b048d959665bff89fbe454538ef9e8f44152b0aa27daca89b88008ce32c41189f3787f1cf8af35abf1fb77e763770be416e7967fd341fcdcc67657d349f6155ef2fe4ada7690bd9a3c1790dcbdeeec0919d0f8efd8076baced41d303ecfff0e6f93c3a9f3b063d90fe8b24e53bf1f97e63333343b3d5369ea57df3aec6eb076ccc378ec72dc1cc6617cf3f960fcdd8bd354d667eaf7e3cefc45d5c1a27985e1e17cf539f7ea77c48571d8f9d0d89a57fbc317c66b702a04ba300ea3de3c5696f7f7736bdeaadf8f5bc362ea6ec8b03a94876fdd0f409707fbc338fa768850e5d1f98d1d22741e9d19b586997983d9e124a5244a8ed8632b82403f8ce8ecc1c08a5cfc9efdb2ebc57c7bf1edddab1c2fde6f7ba98002091538c0e26e1bcdbb76e7c37c4d0e3e2a7ff1a242f6622c0c1c2cb9ac0ba960e2881d222d6496779657615e536572b0357d1823e6295a15c38a626badea836f1f4667ea70b0dea359871d0c8b110181c6fcc388780af67a44e6a29ada25d58e49944a50acc8624466d08c681fbdaeebecb113985c8ee6de074404952eccd629716bc67e8b11e634ffea99a85bbeb5c0e134f69317e6f3f3dbcce425746666da2e893d16cc7718de990a6fac3ca0d29df9018d676e9af399a8c5b7991a55d7a4a0ac7fa7a09a1dac8d7187c7ca83bb38326c66e8500f6fbc1c0ebb1b307e0ae2560edc6a9d7f12e2168cf34f41b8f593106e79e7558ef8f96977a43c1e5e9a6f51423eade6e17dd1440eadca4d70d12b3bf1446528b848146cc407142b52036d79cc6f58332aeb505946e52251ec50790a36aa4c14c37de395ac4bea98700ee48981b98bbffcfb5dda25c985e6c5a79d2f22cd5ffcfc87ef8c0eef17dddd6d6974d0a16f8198b90eb1760fcdd9427650dd88d94fe65a97c374633feb70d85c067b0fb51094ee46f3d6028799faa2a64587e7f08df5ae9f8c33d136d1a5b9f71d6e13c41aacd31c72ebc67b9ca14386fdf8e31672697090f1686fcfbc671ebd7bf68b9106c3e14d6357de5f7cfe14d439dd8c1cfb511d4e416d3f9ff8d611df347d1a7b597ff1af857cf1da5ceb70d0bced8ebe0ecf3a1ddc8da7b16d8224d373eca76ad98fceb02f685a588783e63b58337ed1fc0aca564c2dfbc9fb8266c60b152477eb3a6766666666eee9f0c2f631220dc6713e537b28decc7ca765d41d7e53efd69cf79978effd4fe6b6859d0ecf66e6ef1c009c5fd3f21c0e008b117d879d13c366cd82f19566e1dc74ca394cd42dfebd6b72785b99bb83e69146e6b2de2cfbc54bf3c9ce687bf1168f9e5ddd7ce6f318118efd54302c91d69f91b9de0fe35787c3fb8e68713e3b1ddcf5e25b300edf0186d7c7999f37e67653e3a58991a6cedb3435ca7b53e1f5ae43659bca4d54cea1b21346cd2d58d6e8f24c1572bf99bfa81fd07df102e6dcdde00195ae8b33ece67cccb9f389f90f4097e63456de997b67f190b99e6d13c49b99c3a89fbc332faacc672af60d72cb04b106bcd8652abcb3855cd8359f8d702b665bbdc5210ef65325f5ab294955e3a2c6b0c80fe776f77d553f793f53e554a7207a5956eaaa6f4a5db5f5816f33b9a7a7eae9d8096523117bf0a5c140afa12b686393fd5458d6b14624c12de2ba455c4dc49b5e4deb03df7926e2268e3809e77445b8084497efc7459799d90a8ee2f267ecc84450d00f23226a825b478a3074afa0a0a1e6eebe2e7fd9d57c8b119e1f2d4678ae37f334116633d64440a1aa595db7d4394c04bba4cec158c5445110c1fd30a2cb2cc85e1ffde0e87a171e49e1c4fd81910b8fa4006273e1910fa27073708c10e500092df0c1139af0f0639703bb99d5cc40e1910f9670e315494e499a3c828172e0ed8716644606da5c84bc3c746e0ca28d805bb007f6e077d8e3cb06cb187f1d4e8aba77c99692aaaeeb19ccc17ed98f7907cb0c3301955136d723186872f6026e351111a000115148c5d30d93767a2022024c4870e12313b14544f4fa7005c21444eab3605ab61d9e0e33e8a1ce527550ef9f2bd4bf8a529494ea5255c6689d01bdeb3a3cd8c071e7fbdc32a0cd3523c79d3f5519785ddfaa09bb1c70276dcd6b5a1becf589e89c2894d15f98242f227109c8ea97e0f6fb465108daf4756eebd8e056cf4b5beaa4eeee4e8291537901e2c84392528e3d66e66e567299638f3968c39eecb8c931aa549ae9e22185220b4187655c3eda6ea09aef3abe2084b1eb70c4bb9d1842be01bd1ccf4b6e11f2466b043332ea42870410ce109411d558c217ae10c2078e383122451184864e3d9882810742a064061c24e1046930f2810d900004ed9a136820c2134cc2a0440f926610c5d10ca0681c04751782d80a3d30c191134a10a168094c98420f9ab68d1fa0fdf100ea1895685dd098684c342e684cb42e685c788a4605213807f200dd96ef46bd7be3e1dba167b0eefed6dd94d253ed4129a53702e8526b44f768b36fdb691b82fd54bbedd16e7688b4d794371d7b12a6eb5a86f5d5f37dc579e140c639af1fcc961673ce795db3a585cbe77c6a9552a552aba99a38ccec73ae3e55c7e133e62fab9867317789391673554ccc9c73ce0b06665e308f818930309f73ce3961601ef31b2e647e9da57e2c2f38bce0a0fa0b06131373178781b13a34062626a6cac8d47861625e5edee2e525f5f296785194d5e774f97c7cc2413087a990bd982a65626464643e23232333e342a59a2afbc5fc8ab98b982de62eee22c6ee7051fdf3e573a6b8f88cf98479274b952e25fa9d9ac413c79de6e9743a49f995240ef54dd6152529bf22ed24b272e28ee0510f77f995ba5ad9b8938acae5c3e0e11162027a904708099e10b42183714f15c6ed51cada644f4e8a108236a8dc94ac52157a35a1a8051267d404288a34e108f302fd4e4f9c3449e212dc952d408fff6542b28e33a1152f406c25e9747e0f37a565b292d44bd86b269dd44cd8e3f9d1faf5178e30f174df665d51cab1f2c91d428eb35d25c27d3bd515a5bac264252975bf952478777845895ba9d45d49e2967ce1e1254e200bde4fbbf211e6dc254b9005afd19556acb84326775e7bb93f704e54822cf9a52b39e87ef0e8e59aece9097b522e519eaf8f326e232c0bb006bca6cb5c1b711c5f86474b58e2d613ce511559c12d786489d2e53e1a8ac2e5963086fb759346ba9cc4b6202fedd505faa19eb03771f0c98994524a989d3ea07b0a72332120d811a71c2525710d8f7a609395eef4c4772a82478e10c5959de404c5c5b2006ff8d81664913e152561598035fa08bcd902a4d154401b7e66538c8c34eb745a09c25682b4a09f30ada9d2c952258c2a695609d225ea24052435b462a912765d0c7b200d78b45a05b18a371d88075e0400f15c07e2b9ec2ada2284b86eb23fba5f4700e4311de8aa5893cb41873cf4a71950c8735dbf6cf7c8d3fdbac912b1405c0a0aba90e70804b48d9885a87358863a8736d2114b1ba51ce5a91b2fea140890d4af0351b9e92b8942a12e8fa2f6878a35fd47ca02f16ca6ba92575d49294d76058f3a10cf0fd82c685707b86eba10d74d8737d91f44a015c27494fd61b2fdc3a8597c133c0e78538e289d92b2a4a4a4a4a42496a195248a05e75ced1d754b69138ad94f459fa02c6c9666bd5490cbb65342324ce8f283a480b0479fa482a813f6aea06bbaa4a05bd6ddc88a5c7e149759a0600f722c4e48092f5972401a3ea80fac21cfef8134625371c4b404cd0edf419b62046d50822ecb50e7ac14e95e2952a408cb50119621a5221ac49a34a6b5d6524aae354dbb86d50fa8b7ee8656a7a61db2c77dbfa7cfa23e41c8399287b39f84377537345377035a1dca5919743a1551a5ce59c9324a55aa7f256825e8ae16603d60fa75c803ab074070bdfb8fceae16607af7ce7aa0fb71bd3b419ecb9e8e9a858068aa44563a36601b411612121212920a924a2629a79a2a452a45978fa914a52ca550ce264d9b94b274bd6b126aa33e6aa45ed24a9afd54eed746d002f1f0af0ac4832d31f6845b42904654b91f96f49351b38c4037fb9d968c502cb0246893056a84a48f3ed3921528ecae3db41155822c3e84dc46271937259d739d2a6554da8f46db45a6a5ad8fdae8a24a9d6597134c4b6db4925406d85a09829713600ecb907ca273aef32f2448639e57906892518166e10ba7a2cbc9c532d4393dcce267d947552c43972a15ddcb09029ae7fa0ee78008880c8044708ee999d23d6a16964406e85137d0345cfe03521fb85407a4058034684fac41534860e109bd140d4e809abc5661b70ee8976118961d654037ae2451a5cf846d1a13f45b49bafc399b67a5486c9e95246e7d2b452e9fbf5264258a1526b3b2185d40f18828b521c09022e5e5f528f44525542a1e2523938bfab21d2e721c27e545ed609db5dcf8ba2666a766b1731d0ed3a78c4cb8857dbebb1b53b31cea58357d56d461e79c8b421293a9ef072525dbe1388edbea4ee7d067dd7162973108ead7df3938544a198550578723654b39cda356544c98fda286c98b7aa6824a414d21a8671d0eeca65314aba1aafc4e63d7bb76df9abb4c524aa9a12496e3ba26639fdbe2348b519796da0cb31f0f8e07c783e3c1eda0b08cb3395056da55866323131f0feea27efaca7fdcbf18447e07cacaefa050f63b5908599cfd62903b1f998835a4fd8cb09189c884a95e575e794c7e5ed3b2e01111484b51c18c58c65139796acfb0f705676482c98550867989d7411dd4845763a38328719eed74e9761017557e8267d4b0c776e703343e11a3e5279c080223c771b2e37f380ac59bc89d5bc5c39dce813c1c9970979cbc84fc4411c75976a247006d24b4fc4407813691089ee3de15258510cf6375d010345a01692c01d24839dfa404fdb80895a5bec1c3b31316859fe0c87c3a92a00b8f50b174ed8547a850c2f5583709fa45131214ee302fa101a96f877601d4fe886028c243bf7d05d9e3ac0bf45c643b08b2d8d44114de4c0a2b6007bf588483088815f59dc67e8a4517cb1e916c968b90a09063bc94524a29a594928b8aa21351e6c422cde2ab89e60e8226101435900e92d7d5dd1d54d4412dd4411ac82fa3d24baccd166460082154ba1fff8739f8d85db0c247269785dc1dde380a3d1e1e6e6a8892bd5f694f56a57d335dcad44ddfeaf64e89162a7556d5e070cb748a5c472995b57edcdd3ef90e25e5a60a74b79fbe283632116f3a20a92b719e9425a23a3f32d175a7373aab43237d3999deed307dbb3caa9e5c404def2cfcd69cacf1aa62a7c364d2ba1b9cd5a126ce6432598e7970aa35ccfa34704dcfb00d5c1c80b303373f74f080cd1135900677eee426d9d33e007c31be1db21729bbaa50f69807cc4ded05408868998d6e089fbd31ecdd31c27ff19af5d8c3915655c31ed3ce0eb3aa83591e3d742fbb83042d03a5d37a9fce11822ebf460612ece9b0a7c22c7ef1a80904f4d3b181d47d216d300655bafc28a40922d9a594524a29a594ad42c433f8d710e2241aea565a724244bc2466e3107b4c14a390a30ce9dae9d84b50c9b11b1bcae43b0e51baba2d1f8762d0902a0ec5206e43c1c673ce39e79c73462d43cd438bcd39e79c73ce39e79c73ce39e79c73ce39e79c73ce3937edb12b10c7ecc90663509a215d3ea7b2249df00cfea6656104b4e117016df83da00d3f053ea00d3f03d086ff036df8f1d2803fd0c609b762944b4edaaea4f5215e0cdc782f2cd04f2ec199342f9794321e8d09fdd849544a82361c93b2a3ce9931492e4d251a13f4cb94482e0bbaaad8e223555179216c451a310ccbb0a67dc1179641e2c95c10c9bde40ff9726bd893b92e1b574a9c531e365497952a1fbdaa176cea4419f958e5b7a892919721e2f67f667784f37427cc42d29f1e244b29255fddb1bb5b76cbee777777777777777733d6ddd8b14d4a79bb63ecee186d774368d3382d654b29a594524ac910490c01e5f79cdd9387fcb43c1f85287f8b56b6fa8ad7bf18e3f52fc64ba7b72de31673c32336025591e1646b46ae31ff498e73d68f87ce8d8fd3d6d3d571f10394ef3177b5efe7b69536a3f20bb4460551e88b4131e889cb8f40b82523932631082331611293ae98146dd2a5404c8a4a118bc8c489067ef0c048b04109d0fe971d894189cc32282327b015b95d5d0469428f60e8768547ee1685de70bbc227dc8d9740ba5d6bdcad45206f70bbd2dc6d26b95d5fdced62820db7ab8bbb612bb85d5bee9615b95d61dc4de362855588600ab72b0f7733994ca72a820cddaebf71049b0b054204c2d3e643bc1b85d896a250b2123be1163c628421f9e489d6060a8db4a0743f56224aba7cc68273228f137ee24382219e012f94f9b222979b4427f1c994918f53087b4aae77a1d1168adc2057e642a32d28dd88b4742a5a03fd95d7d64051404f175621b474a5fd7070aed1168a2e8c0b8db4e0e46ae189fb72a19116825ca48c4866449d93696ca045fcd09bcd2006f0c688c91437e64223264d5ccd7e409fcc755d11c3b8b92ccb5aeb706837e23529a5c934afd9e18816da343c166ba0bcc44a51d0be440155b9d0880b4fdc1b6fc71b63e45f66ee370e0ba1d737fa2071c8d99d8a68bc373b1cf6ea70cc1bbf61a7f81d86368b4d3e3b1cf15a9c4244dcca02d59cd01dbe9628f6eb0aca8f9795a650ec1c56824aacd457d0a4a03146b6526a525e58a0df14ca8a3e973ac7f403348fa9ed0797b2c32984d5b8c4634949ab31293251035d1a8a465a30badf14e2d6c74a973f4e622653885bd0480b462e7f0661a5ed6a97b2e2e01eda7de02b6510575e26b1c74351695e817e405762803dbe92d00f2eb112fd81fc44a887a48c31c6182d3624c397ec51b8746710f618c618638c31c6282b0f19cc4e216d89493485e69090198405f4a3dc72825b31e741ab089fc110618baf02892617568104932be3c22a90d0c19db7ef36b9ebd4748765e00536204a9c67fe7a0fcfe0cf1a04cfe0cb30d02fcba6b044a7e0441574216fa859504951b320235912440f127904891546aecf154a5b73f23aa181eef00e5f81456f91e3253e5724710b5621d4c48577e308f9e4730516dc5ac9c72b6dff60a3028a2697c9fd7e18f5c9fbf1e01a48cec3c844bc0972f991053a5c87fa7ae337642ef3177f718a48454344425c6ce28b4f44286291280ee35f9ce276348a486e472be2b3186d262b90eb317e1e6810f6d803419a07b47970932042d86324ec10b287598814838290df6126aab056965b96c7803c4f5cdeb0886133acfea8e4cc75c5510c9daa1901004001e313002030100c084442b15838229224c17a14000b9cb25476501c87394c29648c0186100100000000000020491000ec832c0de614a017f6ca6831122ad3b95878372889cda6f3a8bee1bd3da258bbb0f04556664a536af61d37c142e32a98d3a8f54b623f02192ebc7f37c13983ccb92eb61af42cad4c2953a07f4ab3fc9c5d1fba25e9e38c2618d761171da960c436c6630b41308b98530e653623c8a4e5f71e0329d014f4895f67249299e0883adf00692895f6f44990ec464ad81d454b8cae391415c65448278d09797f89b9b03e695b003cc6c6963d6475826c0b7818339bea411d8d78072fb60e51345f11ac7cff989a1992cbfc97c9e2c31f50beed3afeffc803ce4ffc7dc38c9b7606d993d7f76eb834a933d1fb2c28f31c0c68121dc51a0f74d6490d427c67b595129e5302c3b1e42cf6f3b01374c1e4a78e7ebd6ac3270bdcd4bb34da5024dd7ce5cfff77f7a3a3493fb246bd52e39c9180b3d5eb97d06b3749181472911379f6dd4b458473c0ac642f433dfdf31a12b3e4ad934626e49490420dab5bdf2206843cb614b9cd2f4371c20c8e60b2e5399c322a1f2e5cc5c63e69f793f119662d110ee737829fd1563cc9de5dd6b5ea38a685b8cccb2425f073bc527b42a0ae56405de06cfc60abc51db5cec403ad2c0dd7c52a330e86365403337fbb240efd14a930310ce68f4904a20227b93cbf38f4ec10e3d326ea410c6133af18378b4dd76c1f8928c7a99556c9a897aafa22adf94687f8fde53025cab62fc94c8f2f149594bcef26e4dc8b20136dd528129c25423b4a7678c3971931bec891e7f73e8ca3ed97f82298f14f7cc5747c2d503b61fa703518ec264003b3c14312ef3e9324c427c2ddc31c5127206f8b6dbd82b40e40ff32f85e3a22eaa7b2a8f8bd2916719144e3959391def1804da5fb5e988b2213076389e9551cbf2b972441892278b10f18a4d3b162ad1b91ca002b51b6e280da70d3bbd884521ae18fa3e98260a2d29d4078ed039b520e56b0ea2df458850f80cf9e242744d56cc14e29ad94a31a9fb26663604160cc82b05642ca75592161a54c883551c6f2ea4a3f61f26a3f639b9f0622cd94f948f9b9c26d352aa58e534347b45bf28d6ed6b4d741c2fe02145bd9e1e76349fd804d68c27112bf51c8592fcde3067c4137f028853b8ea549e52890b287302fd65bd7ad8382f84ec094eef65eec4e0e764317987662b9c57570b11f74fc474762450d0687b646caf68d33a9b4622dfef843bc21ebb693ea63fb8049fcaffcbb1bd5fd055677d38605d6d930db9f4c08b50f6a4233001a052e70d815f96c4ad1874287bfb644f12a1fe91fb642fe2a5de41a9154436bb30eac06386d3522857fe1f9c8a50982c8496addd9bd04c0062e2d7e8722041c684a5bd500f24c3853a3c11a2137b93c69519fd8b8486ac878bfc06c566f8c6607b6109151e052d7a8bf64e8126587e95e0957d52dff600eed34be87f86d904104c721ec3d572668acfc84c6356db8e8e5502a50859c725938b7a7716445ebc9c257869494102beba436d214a56876084cf5534ca381f9df8b337e61e54f9cbab1ff6bad0c9c2f13ec2912108b175a26fe513bf8f91813534fa1f3e137b432bc1abd73f35247a27b24b7efac941efda3077a36e2b27a24339ee88f59b7093439f1bef5c27485e3cc2b6be0869fefdf28435e4124884409fb186ed52a3461bfa0876e835753e7f180c41faaeadac56f952c3c7196cb37ed83c7bd3e7f840150317c72a9a0095a5749de4291f5de4339159843c0af417b804bff5ceff6eef4ac6e5ab496b2cf6f513bb7fd8afdffac77a2dcd1378f3a410c94bc6b0a0482375fcbdf6e4a5de147ee5d54b6f8229a2a2333e56a00f6aaea020d84fea35b1f0c0060139324be9b33f8ce1d53ca1bd9d0765f64ba6990301f4e157c3421cad1364105c190b9fe418741fec203e9ed57caa68c8d2da70f6630114d5859e29bdcfe116d54fd7b92bc5f02d44004bcdd03e9b37f4e96c0e840aaebdd13b04aab5af1b4a727bc951c9e5e8e99a6c4860ca5532f3ec7c7de50fc3dc36d0afd19916ec3e705551f8214b6ce35491c47adab2865100fa130848d0a1cdade223fdab8c4d39fb1d0f41a321720e1c5b38838e3d540298e5ec3f12908ba355ab19756772d317a1532f2398982ef0a7c3d67f3461a81a6944ab66a99aa8b76f0aabf7d0178e020e50ec7443a52581cc02e87a2dd181ef04a403b6a24d2d960dcf244e14da8c6cc6d3821b2d7a313bbfee7ede81c7fb8823ba9946a28a4a10747a1cd6ab8c837f678091919145ddd1594df33f1416c6b5cc109b9a891bec2f6f47aa2d7648f1836fde292a2429c55a982d77134aa1286a6a770bb0eaedc9e48e4c211965af54a39935521c760d345e3699a9947f89785f71c146096bf9cc38998b82da65fa7783e15fea43811d29031ea3a3685953a5dc7a2f0cc88b9dc0447ca28c871d0423ac412004ade48119d60583249e5f2a700aad489c0fb544c3eec89140fbe86c81156152fe48db57d92cc3f734aaffd9e3243d7bd3c7552877d422089d5e13a9c134ef0dea1cc81a80ce96608445891213fcf48201009536262080b0044129cb134bbfd0dbf32ff89a9d6504c3ec982aff22898d852ea8b913a4995d04805da08be48892844442fc74bc5fee8332d4fd183b178962f158320d0d27ae4bd540743e537997b76b76819122deee81bfb2626a87b427a4c2ec111512cc6a48f7e0c524d1b48696e609d3f2cb43d96da0d2ea4976303235b2e49f0b92c24a02e2fc9a1fd422fa819032fb12318fa2900ff770e4f143b5a243995a95a1078fc9843859da1607184aede4f2265ed6aa3825ed2cf26618c252b919eabdb4743c578e0a6d46cc64a3eaca6e37685c1de748b4541e787bb76273816d4ab03c117588d8147cf88c07ba08229918aca38d2e8b77214b338a893ca9c3271e8fd974b93618aa6b369d15297e31e8ebd791d4da903c41ac2cc199972d7f38f804d6264456a74b8ae54a14c330127350d2a5da3bcb8433da4270a9c06e135edbf1ee61f4246b5c7ec88c3a7756083d647fe5d6318df7d758070603814aee474920fabff4cc04fd946894fd91c8da2fb9571015504762a6a13c0fe500ac0c84a63a72cb468b3772c6c1dabee1fddcc88b27acfdb00b714648b07a0ad479e3d8adc98f94f52f9816d28d4fea65c38ec4530bbac807d91d1d2e4ba28d7158ffa14704c5aa385eb9b950ab48920ffcc3ef71b9e676ee55201cea14af1f11111a061a8881c66afc5aba904881c08a19e4f5153ad160e54c5bb1e55594cb40b65b2ee5eb09d66bb14d44b1a257d94cc2ef87acdc1b344ba689d6bf204eb7256b34cb78cdb1c690088e28479282d43234c735141f0dd0b6e7542f293464d99973a4d189c7dc826af41183cd19fae6455bb27ccfb91e4e3c9037faa4782cc16a5d62adea08ab44f5508b6d13e15cc53e947bf9aa576f6a92028694705e64cc866df34054440a8a2248cb8719065bc620f7cd7931c1208bc7aa5b052a6a842cf134b8bd9fec2f65624e19927aa8e4433dd386c68aa743153bf96728f2a5afbbd468a0210c279e4541837aaca2e5377500c8c3272ec3037291ccf9a5e9209ff5d6cf1caf596fb6951ad5c8530a189123febea3b8cd0f6792a5d99f7ee137a4355bce0bbe07f0367da800c4c30e13c3641ad1bd01f6734e55036dec7422442b3619cb3e1a3aa211dad2e80595593c6da2a7b678d23c0da12b9f5a13ab750e196687fa89094e1488f031054b2c2f5550d0c93ec48372526d859c4f251223fa89162e0e31e0dc3340eb756f16cd5a87ddd9d5626d611442425ac12e00ce8b348c63e3f1f740e1e5de28a1c55a3b459d0b0f774b95e7235a8238724de1e5389d835a4afff2a24359ae27735426c20848b0322dd1c8c62c8038410ab4c344e7edd6df70bc65551c4340620aeaadda36197efc1cdd23df18bd1e0de773c1aa8c61ac721c384100a56d9d2ba6229a52606783760c6f046606ff02a1ef8a3ca31039ad804ab6246f416513c96e8d708c559eabb0ef88e22ba972f96e076bba9aba5984b8003ffd1e0c4e14871756589481b61cc37b264bd6bda24cceeaf82edfb771d40067212e095b860f8de7b356918a498e7e263bc606b3bc0bc32d4ce8633cfef90cf8a035fb97d57c312991a5e57c57b25788aa442e236035624f386535d582ca06bb81909c50b8c5be9226de933acfc2ea44a1fec546c71342e21529ae0356ece6089c81a5c6788d3cfbb0778dd285bee72786cfcc3e6a082d8ca43e35d40eec59f39394b6a36907aab2efae3bd22dcb10e6b67dd5a6c924b8330e0c967035299e4fb1de02a8bac7ebe03d133bca4fab41f51eed6547a7736b8d2386c6bfc98647cced9434f4e28f69caae892f518beb9478889dfa143579e1e790ceb766f285395a9ac4c26cc6b480193ab6ccfee5b6225b5ef8098392ec5607a56fd7f7f1a4270fc802809fa7342733ef8c4b3ad932136f219b149db2b703f8f1cdb3f74c51277ceb9107632b5fbced00a0a8ce58bc2a3c592fb08e0f9cad6fa59160e39c7d279800fa890a18804ce999f62d705032df8cea20d722ca622f7bcff25e4457d060a4f904dc8e020c5dfeaa9688c0dd9d00011f48bdbc190a998823f638a82059f50ca14345d17aab06fb48043c25f9b054493d8dfae5594b3baf7b2aeb1fa575ed795432160de9122f00624d5860f08c3c26ac446cea7473e06ad0b36c921cfbf38a8d23c647f7a25f50f7e3e56dc5a5fa182d7985bf6d44a84851e354813616bdb06668d3f0f662bfbe9b433fe720891700d61f823144f4ae82cd18bb2a210210b1c4a44a7f551935c6f3892acb9bdecd05e5383977d60a9d9f2d3ec39dc77a0c0c4ac7b9bdd24051d19bc1dfbb928d6839831ed9430dd2ddfb5590da130960f3d59988a5d752da3fc3d1c41ff21f00c7e39da0e6dccc69fefc77d7d56b7403df0ddcda2a797d5d16b4e7707b75d9edd416293b0a35fb51d73cfa67f09d76855ad0680130f73cc4a1c76e6b3eca17997a3445914aad04dab90284f557330f88bafef0f6d1f22ccc8df235eaf27fd43255d7b04c88371c00aa48417ab1f497ebcf6c2ab8554a84333529949b63a5970f7816357440c88e34d9cf81a2b5b0df912090ab79d014c4e60c5b2556569f9af99fb81c842cfeac1e77c7b8c84c6b8ac54262f7b7c4b33e6d1baab095ae01755fccbd2e9ae78e8a14f1c582ea50e026fbeeb1c61a21d3f0b1aa08c498c62384586820cf076fdee07204125aa19688a91d3f5fa34992e7b4d98bb8f16a1193812709fa2192044cf1df8472daa0698572e56afb8f0ac811c6277cb784da45dd4e12e17d8ad08227f384594203e103046c7982ddda23d6ae97c0a48b9a0058362b37d2db6412f162e1f27adc826773ab7d737c09ab52c7bfbb6789859f0de4adfffbc4989e234cdc4dd6e500b3669d9b040e44b5bbe59bd05b9af0decb724763210483111a1db5790f21d386e41e02fc50cc7f12c330188a0ee206d7b6e518bae5af85e4fb54e04cbe7843d56cca69046ff3e48e5527babae695c35f3fa1a5b437f595ecb0fcdc622cb8c93e5f31f061818fa26fac47dccfd2228d80fa463b20a7c86227464af6043ad1da70af8375c917ff96126143035a0100c827ca0f2485cf5cfc1b104ad9e05f542ae800f886a4b0f394e625e8bf2a55218cc0e682e2753317e37822067e8118a9900b5fb0c700c53c71a962c57195f42dd3ef7285ce47bfabb413fbe0667b2c0e737b7b9de2c992fdb9d04ba53871923c8db2c50c608856769d446cb0c975591862d938f583c9048ae7b1415c550469ed64bc09cc98c0443f2b7190802da01eeff831406b8314ba5344a5fcaa50ca5315d3db0ac5ef99b12b61a5cb3594a599939104c4bd19835aaaa0dc9ba93e094847106fa53ae437d50b71272d18b88f27d835d30a090c0ede0c74e7da6422124318865b4b5e1a167ede0c3fa553acd8be9ae48127ea19b83869ee691c2a065cbf957e2a84c868a531d4cd84b3417bb6ba8b47e60c87c916c9a0635a3253df0dd091060bc5d2e2210c911e8e180dac9222f79ae3a2c9a63c76ac231db36659b6f029b829898282884b7397c7bd9e70705a89020870f46f6ae50623800c23b93abc0e8a1a733a53c214a8bdfcccb8931c28fe44ce0a04d69a1bcee344b03588eeb295039919d699ad74da80e915900eeaf2b17840500d1bdbce2b5c6dbad9d799836f85b53b95c88baa04e7a05d8b2865e5d31a7f4730ca6c4016f775e65e1f07b0386cc5cd3d02d7ca1e95b0c50ddbe0188a1fc0e9c5ef6accbf786fc4daeb4113868c1c5e57ed921bb1f415d9ff84f34e55483b1a6840449771c69d5ca8f998ed3fa064add8a36c52cd1b44f596b360c8b1518048a477751f1150392cf018c3a4d79a6088c7024fd120907e664f8b50f7822fb7d9584d1eb01281f08abb63bdf4b11fd920e281f00b19e7a6ef36ac2bb343381c09a715351985b848c38d25824315474266d23cab69de13e4b5004b9f04ab09525994d75920270e2d2b761cc0acb579c0fa71dfb1dad00b8509ddf70b20585e0d8d0b7fb025899b62b0b18f399b3a68182a5ecb4008aeff4634c0af6642fb3adb3d07de2d9adfbe6c13b203ad1216d51954b04266c177c8aa0b7e57d05e9a94ea52912ff3857b383fd38b6282002971a2f18273a74289e024fcaa8aec9a2faee864083300ed79f171dded200c286045d053ea3f3ae3e3d67d0513d5c7ae7468a9b1b1ee3aee3bbb60ca6b5a7423c3e42ae9dbf895bb79d736878e308ec33444f6b6c700ae8f59d2632b8877494a53d08bccd13c0032e81cde57192af82574cf64ce69da777c70698f6ba82b34f774edfb13534ed7ac5b39f779cbfbb6530ad355529ee11162463137a64554a3fc01063f1878539a0e6714e96fb4f9ac6f1a73eec7fc141a4c76b1812ce4869018bb11fcbdf55ba92a5d457a023db1e564e7e96ffde30c9b37369d5e6224de18a91a4435593aa547b49dbfe8af387178c32f238b44b1935fa4f3ef4a56ab9f8b7155e2a488e3c60ac504e1a7eb379b3c10ea714f6358c6770502599d36c36c3d437e1fd157ae52e5925807fa21e2b54451d6215135bacb6be5f14ccaa82ab2f8124d648ccb18ae88af42a67ef796c9d24525b4cc120b1daeb4ceadf5fa978e5a11f31ff13e72d0c0e199bfd398f88878cad8045d3c3b6461e7447324eed56dcb93d5eb1fd4fea55331d0a53f50d030e73a6af9d78d1e1a197f3af5c8af69d6c6a3ca482084940e99c0c5daf449a36e3f4a4d6a454d06df635043cd7978ba7d60e21f157f1a6489713f48e6e81e50262009f12d5cbfc7988eb578f813d500c2addaa1f36b99aa9605d679916fe95f29d128424c1a2a1c560ec35cf62a4df839db75a2e271077c1b507c2476fa4e25eb96972dd1f4358f60fdd419b13bb9d0d8bb5ad0e5990ac79373fa045e4422989ba61c6e029e90f5ce02d66d1fa1f8e26342514e826251b6b4f0cea1257f6c8a82ba09a49a46d180d3485358edf15ca10a785efec57574f527aedaace579126179ef05d580fab8e6ad47c4680b958e245a5fd35970f8c957c2a9795418abe030e3701aa99dbbe3d6d2a5eafbdc04fdeb313d4f3a7cdf7740667cf556f7aaf185c1a32abbf05455447632a07edaa24de046f04bb3db1a8c18323e6a0efe322f78c4f4eda3d0add084e8149609e64b963226868d14a4a99e242c98a903a07fc65424bbe5c3313afc9fef61f361b0fd4b1193d9bc31703a8b7423477cdf4965a0a7cdaddd4e421ad8ecc53adc0545c4ea7e55954aadbd5ef4206f111744bd99b2026d8c5b102a8209f2883b3423a3ac30fcea3761e136e1474ec1b0f0e06fd4b8a5dae89ca433e6d454d1e47f823f5f0abafd6e9d753f48ee76ee342e14ac20af680083995bdaa93aae7882d39246f1cfb93740a09459f7b49ef460442967e79ab5d49920167488fcd8f5dbf21ce1bb639d1b3fd6913e1c6e777116603c6ba38ebd1085243e48057ad3fddc68e689fd28385c69d54d41bcc8cd9c3659d8c623a0045d1640e7cb48a84abb82a053a48517703f9cda62aee5f6ddd9c5d4f2d0abe5cbd9c1c5ffc8362ee03bd3dae59e2baf2a31507f7070d6935b3a89c2839fc25b26f87beba3d05058241b95333746abc0c74437af2f106cf4b69270cf5992ac6439b84438f4a445dbd5d2e86a53654549ac7be2a5cc9be43d99e1961ea8eab01aeee0acc71d16f564db8eab9deb5bc0f831e865b3356d15c0b2ff2eb40dfed52c815a935cc6d4316ce0159941fe8e2281fe871fd8a62c9d2f05c4036ad2325a949855c7cfbf96c693a1dd9fcb678465b9c3fa992d27d32c324f8a5560b98d67ed206a156884b3e69647371038888d6310308aafedfcc7a154890328f1d6e7f92d19f9131ea154f7cf226e260e284f91627d6e9f2436e9c8088653c33d78fc7145c853ec469952cc3e3a96c798f0d41b30370fe8a0c6cd87c22bfca7b8b6c0af843968e4a3c2469c0f66fbf70031747a0a785d4f46dc748ad494f3c218a0037494671c6addb4a46f682145303a4fea42c47e6739619071bb1ab63f3f66e57cc13b32c06aa2cdbd07b00a9c84e25196506944b833aa7c77399173086480b42ed0c161ba27a6adbb5c9e67b02329ffc74287c6018c898e82fc6a12fa5ddda68ad8963ba141b60cfa9ab9e7a07497a4824c985008ba0d3de11bf1e76d28f502c026c77c51cfd62202242d4c37f4488fdff032161759f7c05a36775315e76c4249bbb47365c8ee26413c0f929f8633cabb704684a341fc6cbeba66da5d5ad04c77d656a340493d0dc140a118be31500c45a3639e5b42ad8f88d13223fd877c41c0f84b7c8ce46d823c8efe9ae3b195a5212152d49d6a202458971fcf2835929ea1f699cfb755bb6b069fd8974508b550b3b8d5945b9e523a62dd3067b85c71abfdab60c9e86ceda6350b14b1a6136e4c0d32cd9e6cd1f0d22949f5decee3aa6436df9cc0f355d67965b6c6dc33d93720aa7607c4288fa3e9e9b597b534570ca95eda8da460577f6fe3a57567af8f596184908925ae41901e0b011f7fbda0bdd300339b2d768ac220f3565975e22a63052dbe59b6b4ae8af7ab21b779a82fdd00e6241c496df6b04da1f7d8c5bf18330e7d975092115a73b0dae38fb4da55bf5659f08e1205b43c1053792f9c2747dfdb81c50e0da2db5551ec0ad187ca092a47ebb49c76de378dd98ea489fbab9449d3b09c846684263711f4cb6d69912a4379984894f5556a4faff5f919c5f3abf49abf79588de8368c9ae5988d24771b3887746c4a7d35f8730ed0782e8079c1bf99068c8ba6223a60f3d115635e35ab81dacf2b9a9a75c2dc5836ffacb9a664e08e6dc0c06b659606c8f355ec04abead8dcf25288506270afc6366b128e8760b57617dfd8f140f06dcdd0e4f2779ab74fe4caa6b3a4f4f9de04b94ee4731e4a0322bdd07cf0d18114b5878f1b436b528909f733939b552ff1da4013acc7813327b1988c1bc049d149e0321f5559052650aee4d44fffe70cac878f650e2b05604e21bc16ea73c69a5f28f20ff541f902086f866c556b985b6a610611146780f699b0ff795e0411c60f22cbb863a36c8e52d93644bf078cf217964ebbbb05e6a9beb254fe8875100c155cdcfbf23488d72e2891d9481ac7539984a2e513d0c99ce42a472b86c4af0be141abe0f607529c9dfe89a2d6cf02a6a391e6279c70e80c8328cfc214b4231f3800289bf08e60427a5440203c82f06d9f3014be07ba03410a66c28113645b410f3b63ddc8439d51c736560c087b3ffe0d34cae27254c60162f32a5fe8426c873214a745e6a36d445d0ae384080200ea88592bfde1e8fe98ebf2168964676f19823f2830d13635b2916d5b84c3d9d9906b884ad3930b514e6a8fea91630fad3b0e6ef5dd43f3fc288e2cf585d5311635d0c49970e0c3359ca699640040b24357b330a46e2366b88a618c5621ad9694b2aa47b2251f0512030216fb274b4140a42ba8a9b4c73d08b85d061ce7b7d55fa80048281c88d3f71dbbbd61e247ffd8a6f2b289ad3cb0eb6c403c846f716f80c4242642d10300f4e8d013b119332c29e7d007081e07be8bd44ee691c4edf614f464b124750dd432424284aa13089efbd838ac9ed7a695a4640127bf954d456d8097e617258ec26deb481ee8740c596035a79205c1f17ea41835049c9c24ef5c883f3eae77e061b230a73ea775c8acc0868bf718c2058fe3a8970409968b7dc7086c9677d03deef1aaaaf95e36bb0220ab976d84b7f966d7bb2282e7ace2631af12820183c72e0493b57e2e26554051688b297fa926ad0df188006f19d16bde65fcf3cacc9d3ab3f23e53dd86cb8770e60f146ee6a4de6da7fe0350204f2956b158bf932abd3f3e290cfef5ccf83be87a685620db976f3280c7c4e1145c1bfc91faa487b06861db35475d8a99860a3e1f1a27218cd552563c5cb8c576c10e4407274cfce21ba2922f411686b52dad8ea8431d74a136f50d9a304662e083c3472c81b92d7882253a865b64e04386c3870f7c276486a13f34246d194d7f968c19c660916acd34d30e17d40242a23bd9eaa9018d98824d9af8f25381b60d7e9c5a1fa32cca1f87098de71deaa0993bcc2d5b5e8bb463fe06329c03242ccd37993c092e71257ff65fec8571a3be206713e979e03117a8c2a859c26d9a493437beb3f0cdc6e7b89cb41d3cb36f38c16910c6b2fbe410acb6d6aa5cfa22e08e7df2f2e5a4ecc6f0347f422e960f68f33148245ae7b180bd140a480eea8d2bada41114b4b58225dc6f71f415c4dcb8bd8148e0fee797e169d3e1c3157ee0e8994bdaa4a004279ca34daef2d6bec101f3037c913a06e25f32068bd91d533bd442c13a6460c0578fd8f39b2f06f9ac00ce6542f3f791412fe2d64d6f71947fd52d644b46c23d70014267264de600d4fee7b3c2971ced7f6048130d7804198d96d1ad88d6096be7171e0c6f879250a4492761852d23ad5d80fe64786f92439b3761d23a96900ab1903adf3247902e2e55c2508a16e3a156a74acec2af882647ad18c33a509908e6a3a8fcb6a5a9f22662ae4024066a84d9af5a11a4caaa1e0342cb0de7fec51d931f1b7a1e7a2160564f68c8edb9e3e0b1f5ee58ffa00ff6f47927f1b5695085f3f6d0872ee2ed230ab5e55b2680f2cd0b9428affc46408645874ccd8483392077f1c14b2eeba70dfe5ad42d609711f7602cea1d5ec5fa5816be67ef1fc321ff89020eb216f19946a28ea3b6a5460c0d055efe115b3b90f3b80e8208aaae275504509f6fdfe6afd1c05cffa015d8784149c6c050ee11d597be193e6c0b2a5268ba6fe930fb2abe5cc598937e2fcc9b697190807618b755a50c1020e3c7bb59a3007c0d41b581dab30f9d564a1681321cf23c1e196ddf479fdfdc1492114cc9513c37551381492793437da2a4372075cfa6a2933d26ed68d513c6e8b6ffeaa6173b60d368a1237f5c37b6c0505f6d91810b3a33d425e76f83722813b28c3396a6442d43758c80694a5b73be437f7f300c5173d68d690db72b81bbf92b0e5b1d7710282799411dd8fd4acd736557f97a52754f87b1cbdce0d8d614fe3a52996646cae4ff8da1983c666cfb988a66b21e66a064f680444aaabf9d09a250849edca04053845d686ec92794c385f187c8657fb04da7845cd46cd5b73f4f88976a529c389a0dcf9ddf5c57a6a3dd99132d73bb988adb701c0460541194ea33caf50e7376c0224dcf3c290fb5c010502de815a533138ba62a407272d546f8054835fb6ea47b754ab7504e1114c84e8c22d40cf7919305a5564b9055b1f59fbadde177b74e704338e4897c5f85b4c2b9433b74883c232273bccacb86cdd790e7e08f355435a133f42e61c3ea1832a3c676c1aece0339b5673e0c969549f534fef4d41cb3b336ba45495f6cb178547951e739121ea5f445ff4099f3989de0c2ddb639f4ffdf8294740311ba852805048300707e142a1adac46eced943a74ba05c47f3e281568fef8746be40ee78086f2d45198204fca3ea8e98bcc7cc83caa29fcc2db7775cfdf9dbfd0f59d387af5e8702c9af054dfa443e5d95bd3538d897894e02339c14d08ac53f0cffa5d146ae35b235ce837ebca1af21df37a23f3a4342b7076f309b64949d73e4d1ad883f70057e3b1cdde308fe602eebd71b285d0eb4bcfbcdfa833f051b405e29edb0de09c11733416f04fa3a6e293a6aefa4551fdacf125cf3737b8ca5b742131cb74d9bdc5006f9ea31ac6b5186e3ad8fe9ae527957ebce7e6b366c7692a6019be1a378db2c9a0ca036b4c7dc28a46492a3a3d87d33d16e979b1cbf86d0d6cd221b8a0995131eadb67168006659ffb38b2cc24385f79ca95559a1c794422530d17264ee3478ce0092b6b9aa6fc3620c01cd2b638d3cefaf33c60a7e7ff7a7c3037ba63a72f01a249ccc4415f7460120f136ecc03c82816d9fe67800c51f02ae0db678b2093583d138870c5bb0d05a1711c0f27c74cdade7d503aea6b26790ae2d391ce6de3f5f59faed961561a01f8cb46ce10de9859381ff3817101626c83d5104735e2ec0f59bfd31d9a52a6193d89f808ce794877fb5d9c89ee514db94573ab71b6b453262f8153ea01a7ab4e45783be412ba2b49ecd2370abb9c9bec58b1e5a68f2da9d77aa87c16737c1c4c9540e9810a00375a2bb5bd408e617629689ee66aaa2f36eec09a93c3f84c114497497628f608e54ba352b104ea66b2eb49f2b51722da74ed1ddb0a86c4720a4ecaf6e4a21cf9cd1dd40ee018646777d6de9ae2939dd75b496babbfb5f75374abdcec8da552b032a49bfa25db2fac71c6c7797d94eec78da21517df67bbcabe8482a3ca4647645c2b02a313504ea665d9e346242a3034d97155d8d8760d5dd5756a33d9c9fd28c9fccaabb8fd5f22fabee42f9ca95091ca88cca8b8afae6ee5705f2c71781f6307e1a8708bea6f1f0ec071c8fcc28a3e37d6a32586226e5dc3f0114494e915f04c397f16305fa1186597c9d70fff2b29f738b9da4230cccc42c5e4a3a6c898a9f09f925eae80099cadca4ac1fbe162f5a997826b8f603fc52a89a9bc984aa8f46c48777560cf329b9e4bf1be5a09b2e806875bf7bdd9ca71206957484f93e02fc0b2b7c59ca429151494a2ecb788f6f14c5484a909fb38e9c6dc9547b28c862a04fa01679608186e4717567344fc12d0f92b66f043eaf516b1a3a596667540dbd200a9203d1b1d761a9cac93dfff7999516502de6ce9342e098a29aa2008d09065cf983a555b6d541a8fc6154d72ee37d76f3f11560891fe3d638d6a0fcfe9a2da4202c3482c46aa9247173144827c9bbd1eec4cdf9a9da54ffa1a7ea8e0a892b660111e96d7de807ac10f33506fe4c8cc31e56d233db846d9c8b23ab1608f0d3b84e730d20dbdd9166f7d5af6450d4cbeb42dd5db6b0849f0bd4c791211dfa2e831b9f1248243cea3f5a34c6aa3502f79275c952fa8bd65ca85c1bfc630494427e00b0588b0b539a4dc39929315b9f237926fcc6d687c4d7161c855f1c1c1b44949c8c7cb0470992b5f4a97ac0b0e8e78afa58592eb977f1392ae4bc41582290fd9f56989ad86164c96a80a6bee6060712ba2f3f6530b9dee5b5bdaa89977ad9383969cbe66d0fe543bee44d4b1dcbbae03ce1150a0154b26bad07eda88c0042e6ec168aa17a2577e4a6a65d89a9ef78e8399e40d5146f9dc482a115adc73c02692789facb118caecec0fc1aae81b85ddd79a297f532bec60d88ed86f06fee68a21092cf078c9c05807addf5a2eb2b09aca7cbac73cafba968af02bba17bf920217f4115095edab8b2c8b555f346af386d668647a1214b4be5cf06fc3fef0d3b98af12560c312cf91cc6458e5ca9cfc274caff5ef5c99908865d0868b01986479a5d4a6aedf60a17c7e81c757e71907ec7fafc628e3ef6d0d61c7fb38553a78fce762e510ab452fdd372311f27200a9498857c59aaa7aed400142125990c4d448a2aa9857c5056b01546fa1a9d9c23bb2810c54c02013a43ee585f6b824f28db2afa3ad993b66ace7d6d1a65f821374bd0617724e1cb0b6a79aa5ddec4e355dd083c3472b2c0477f17b9cc33092b3a5b38033dffd204ba623abf3e39d4e9009f3407d8ad4152bf5f973eefe73697095a48a1f5d7a06a1a9f754f830e698ca82aa00dfc2e11550ece635e34138a3266bff2526feedcc647b2aca3ad98ba18d6a2fd588f19245d5cb0e5505037ab38ebe12b8ba1655e9422274c7d062ba38a107dd5551ae977a71dd7a677abbc5a93cf58c603f42923abe470cc781377c90bbc069e1685e95d33ec94bd37808612b593ba3d452c64fbd369fdf1722fc760464227b275ae2c65db245c0db40b04b238d38a1da929f9547e789a1f1230d324e6a97733e991f8061d0bc8ac8a3a571b2003c129dd469f7bcae8785005853207b9b63c961dd69364384d1b716bbec55080367b7201b118b11541e7ec719ddcc3eab9027d883c3a5dfd7589a72d94141dd07f2173c7ec16dd59f1728856a77f821497cb901bc0d17af8b4cde456950b699b01481b46123cbc76a3562702259b3727ab176a8bdde284a961ba38fb99e882a3f2c9e0303f9a6550f26d3f9f43bf5c9ab594e39f6844a4ca8594a54f0cac7571bb0dd640a1490b1240cf79ebf5672a5c7e92c06ede11665f252a4c448d8a0329d71286ad20a865758a08c19e9256ec6b2652f3fd596d986c71e50650e1f841eec45568d75bdb837bc43cad697b74bc6626ed3e96a958548badd4cd8d7f6d308be8aa9af026d30fb915819910e258972719186ce600ddb0231fcb08af48bd804da422434f6cf3d57d4c5512219a10d607275094fe9cbe4a1ba8240857b53155f1fa82df5529957daaa674336f8ea491016c2ec90cf8bea8902c03393226ac5d656817dd0e990c53525cc98abeadd17e6405bc43328d5c70c68dd19805c11e46fc04a086c475da9817d76cde2b641453ca8ac498aafcd689563491ddc287931f090ea2057991001c5b222f6003641e0b8893292fb5ede377b0f07989ebe4a297a1c2f51225285a202ba23212eacd971c85f8254214d269ce150f25840f8b7e8a6e309b4e4755d3fd785dbfaf4cac81d43fdb73ab03cb4c16d9a05fac6367da78adb16def56ac3fb171b9cfc5bd602b4310d62d3f104131738dd0b5b5a40f6418d8ca130b41c5e92ed045d83eb7ab41bb50fead730dab1457200bf6c52976f22aab628b1a0df558130fbe86ebf67f72120f9c298210a9bcdb58804913711c8968848cac9d5ccda242e5c8ba09371970b456147c4dd9745d5818a92a0a44fda38b417c94011e104017ac7b2c7d0aef4af9b522dc23dc0233609f3d967633c7caf149568487108332f1cb03cb8088c2208305c4a04b99207bc4c9015439c69dce1c3848cdc069b85cb550641668f4afb6bba33ec5fb7495ef57972e08d4c75bed34bea4f2c864315c3faeec0ba5d0b4ea68b1320a0474ace26b6d6564544cc14d9dfb78e52489e7565a4cd51751d6b134a6996a535026d92cd72ee9726859834533167017dc0623ffc08080f902c6bb0a08614f94ea92c6255e2c79b75f2898da947e34e6c089232989b09c48678992d6c079ffbee32f85202f45738a9b6c8ed73a0f860e756d3a46159f65fa0354b02cad0bc28a4242b06a04ded43bddf94bc3374603e0c37e480834f1cc7ed4aec72793215160eacbf222bfa1bc7765970914e826fa63d9d4cdb560ee76ea75c3257494e43c2c5e87c22ac29aed59837b1992603978dd305b94e283bef71b55162b4406c9e4e4c9ea0b00cba025d8c25aca00706703081ccd629176b24126c59b86e60551b2f8556d9ea8ad61020002405512dd701b1a242c9ad78bb078dc7df6e9609bf2cbe7a069b9538d8cf007c75e01633ee2e284f490e667ad3d2cde4725de10dd97f844908f268c3fbb8e0ed53dda145c03133204467f785ebd493473ae6c112de6acedbb36e0331808b1417d03ceb416c5ce8f707331946327bcb54dd75a9c7aa66f0d7cf2e9611c4edb4f4ca8d43f1cf7a86e141c091c6a932dd54afe3474304f1338a418b444ba591496aabe7b6bd65d00a23d8573c1b9864fc3be39ade1864363e4529ce4a1af660e31f386b086c551b0fefa720bad973a8fa5164ff21e4b6d828c4526163ab52224cfe5eb4e74da5437f10464d03ca7448436020abc53641227237fc02a155069d22769f1a072f1d68884df8a1e489717ff6077a9c888bb5189838b164505e06f3a071f03206427ecde82a58c40cea25e9023cda67ce7e13bc6b799f95fd0bc0f3cf3982296a16557afbc6ff7b23843a0aa9fbb651f45481434c9e3bc417479d4d9a5ec94fa197edc203b8f5c2426653696fe0f5f1dee3a2b41521c7f38cb44c1881fe7919b3132e51a49b730aa688a7a721435fab444e8037e1e8d8d3ed4dea5142a677bdc8f7deed3698a35027fb054adb5e01012d352f69998fb4dd65710532cfc26e0a8b6d4ccbbbf0cce4c04f101ceb92293699c94e1aea9ef17085c467ff4b9a5098dd7051d61c04ec4dadf0a1191d465362674087cef1a9a720f4852b33add35980ab2348a617e961f0f64ecb6d9711fd9d2b0ca3767946afa3ea10a48350d94d3c5263b7b2c9d650dc6fca3026c2f3b6ed96da0ce9b2e6349efdde90810dfbb79f991a41c6d6a761fcddc2fa09f056ddf0a211b236f5aafb27ca715066fd884c70add73d01993284f368474c9b16560f23911f01826c9bb2e37efc8f936d6f9a6349b9f26a8b6729522cd6eb4782f7c1768a4a8c517da8a0bd4c69516284aa23f0597e3029d957bdeca01501f3acc9319b896e0abc1da57c7eb6cbeaac21326f9234d79c4ba3642a0810bfa11e78633f8ef6710f2171173645c058ede0ebda67ac2ad91340023ff4edf00bff4487db1420f66366f13cee01ae0fe4371bd7e8646ce3e86e0ddc0da98e495697595e5758d1e6f14c851f2e18d82821fe1219c073f79ccbad1701eae873e610408c55359e84d9c092616f28679385253ef662f2b260236bf4afcb66d47e472941251f870499887620667005e36d173ba0f49d526800bdb2f0c3c7a85da915a42b7861c2ea01aa9f7406f44a903c7ee12730cab82f3117c6e4211b58f407466bad49baaa021504eaa4a3dbd1d4bd05a06152ce8361e723c5bd5778c608f7e5185021091e635a2761468a1d7513bb1fae815c3c0702b692737663557f92dd8928e6c3381a68eee80e05f9bd43516b848f436716f8e7abb573a0eb6cae4c5c0d9bffb718b37f4f83bf8ad2366207188bcdfc10000d6d62a4390fd369c406171beef6c64e50a7fc1d568e0c3a051a5e00ee7b14843c0a8f0edb7306679d35e99aa013d0f4616c172b4fe26fe10e3ba28fe933ff2513ccf9a5f2653035a74dcd4808ef7205310412f8986884b6003243e588fcb7c42dea095a96395be48903392a026b4a3623e365bcebe0b8dfa88ef48b66b335d851b6848bb580c35ced2f469450d42e62ce0dd47c2a71590517f15c482026e55a632376855641a913b51f3b15a5da1d6c7f512b0006cc0e8b3bf417c5b91505710130ace841df79eddce4d228fd78d561a3ea80ed04aaa761c7d0bdfb2ab1f81f3120ae0550018622352904bd8adbd49a2b1a88b2feaa0246e848a363da9dc1237c1b2137845c29263d6d9d8be074d82fc34ecd39c9af0d978c473e69011c0e48d63399b9d88386230ba700cb3001b80c3b773d1a46477d5a313a7669c17fd855f54c6f1e64b1b5b06e450216b37da119dd8b89bada09304736db9a32ee952d4292b7b0fdd80581f64ea20959bc0aa555609694475da3921cc298ee77d726266f20d9ed2841a51c91a40d79992f89caf100e9c6c720f6ae48023ac3389f8d11641fc013086483d56da7cc1b697ae2182c40a65d3162e3cf1ec4e628cb2058e631a502e816739fcabec46e130193862cd776fc12c859c5566d3fc3d3825b84640ae53d4b2c576cc737dc5a1f043bfebf1db78011ec0b064f364dc8880df05590f191d841eebd47932050d20b07d22235640988367bef083a3c51238ac1ee30326da44046095f02f2118e3edc1a89b0113159f1432b30fe40a9ad9d6c7ac84f736e784b3ab6380bdabe93920e8295918c3686beee6130885eba0873e88a6275509a8d3045a1ba3e01f8d4e56b71b65aa2abb254d564f39a1dcdef724732903d23f173034f7dc720b3893422091c8fb5dd41ccdd54ba57a8ed80892d1a9b01d183b4b3057da5f4720695f1b31b79a6bccb84400c0de29e0d2d2ac13476e6545b61dba9cb2f8b7a288375e0a781581a710e705773b0073262af390d89cec840c57d31a2f0b238bcbd108d15a8b8d530808114153f7f1b21ff9f270835ad7b6d948fecd0a29d40b348991bb6e036411111ea7aa2bdaf71809df1960a7b29604a98b417b810cac6a80245ea80c59e4d4ebeca5575925289d55c7744021de014598c1cfc3af6571255b4c2f8316761437793704fa8694f176689d93768ec785da93178794ea747891b14e69e2a5d67193df166fd10e3905f3df8f48e4b8d0b92ee1ab979aa5328d0b8ee86de0d877dc221a49d06a3f304b2a5484f00d3fd5b1dd93de73b180e9f426c4140ec8f196e4b1e1af499ef5b81079193c58ed1472db05bd96d48e3b0a8ee0a3794996b876559e6e1e252efa0f049a004e2dee5e30d74405db4420f966af63373ae1c441bf7685bf192ec86b3863c74d5c52d55a39e5d2c55d1f7596c0b09e116f32eb58ea3fbda46dd03620304c3f1d41cf2a3f8d182ee14ccf4b39b330ab9c5d9ebb51260b8e62778372492d298de42de184860b6647b159901c2b8f5f9ad7b25467b63a83b838f076075969d523d0c1cd662d880e01e0340866dd677c1218caffd6f4faab9465cb8571c7943f4492c67bd9eede7fd99096d0f0a750a90e9bbad492e64eff29ab1b4d04a8d922d48609db4b509050479082818318758739a4bd83d021dceb98f1b27e4a8ea6da7ad01c6c0470d7befb34200c1d9267679b97db3ae659d921590640c5f2b6eee9705bcaeeb4c5297b64cff6ef16aaa4d2c700915cb7f2150afcbd7ec942221b8733f532a71fb9c5c32e8b47155dd2c4d877fed450dde295e094d832864be59c172bae331bfcb13eb6d967dc6fa527ff324680d4840dd460d7a87a55e190e129ee3bc7efa3813181b8f4a44211320ebd391904a0694415da7cb6af2f439ae4c82a3b274c4025686875f63222201325ea6759c5889a4ba2d18216692ecb119309ef661014544300a7da652f23a6216fd818260a1b3276ac11917db0f98b4fc9711595f16f43440197d6ec56f5c547462ad687c1993fea91515ac0c11ed0c25453bafa0641f5c1f8a77e437c05f5403ddfed01b8dfb8c73d577786f743371a6df8b9bd9dbc9d4170dc7bec43f06410da21be64bcc79bc7b24bbb8fd18d154c02cbf55e00fb974d7f765d515c4ec9f90e7c186c83fd3ee3780c4221baa0fcca61e97ac78440667ede011984f69fb2dd7b9a4502dfe9530641a0dfd1dc996afef729b1b0e13c1c34f583eb9c66e438567d1a67101a622dc11ee910fe78b8bc8d4dab35dc1771b8b1ca8d6a8e0c100c5f4a79681806210527f5dbaa25a4d8e0575aee04f7c4a2d0bc7878deb2fbbc6f72860bb74b70549c6804839078c679f8fbf6f6e9ab6cd4d2d956181c55da806ed36f12470c42ba0462e56b0c02ae52ce20200b6450eec4e3e9320354cfe7806700141236480ec8a83c9458902bccc21683210c4c9c3108595f9ff8b29bc6ae2753b3188451a3e8a1a4d2f776108a5ac25c2aa394d6614ad976a769dd8a64644695c31f2c453999550c61959778ee2a8ebdbccad3e04bcbe1a7fca3aea8cbf8ef418fadb961dc9e646cb3ee36f34e5b0100fffe1909182574f3c4dea8c6e24a991607b8c0b9f2a0bbcb0369675c204977856298d9c946429087b6cbbdbb58d97dc87fde5775aad07e265727a0a9d7397d390ea74dd4695d655f4a144f0878ec7a397b6e7f3218292170a3843581c4c85f6a398b4a487bcdf79c101cacc0b4da22382ad920d5ca2a5ed03e119fa609ce4becc40e049382afcc01420762a58c4221d910923e3a100cb0687669c20ebced67a8a5184f88329b72220bfcef5b6de0c151bbf0a541e2ba65b1f15503f71ae4de52044779ef04b3309aaad6a90062b17fffb09aba9621cce4c9e6b4a9dbf205b5e773e0ce271a3774588b6e64b75f099a7b81f741f55bc90605acf8adb38a32dea145b972c56039c98661e79d38efd278a2ea81bb081f5befc1ca8feaac87a36fd9ea3a312cdb4fd58cb12f749820c18d763e50daf224ddbb7674b1cf67a763199213eb2a6e82fa7daa726907074ebc96399842946b451a7695d6e518ef8a11eac3af2022c054e90fd9ff64e262b55c689e76cebacbff03269454031b3088d7241538c754b0eadc464392d85a5f61b42f13a680d8617958918ee9247c32c4c35d4931679f04c2e3764f75395327d1134b353c3664dfa4284ff2e2e1f792d89c09b678a2dde288df3ea9a225f887409531818c32fa50f895872ed0d177d03fbef341689bdd242ed3c748fcff85c17a2d97acbe09b216da167b960f701b4a6651f7a99f4f94783add90b561da613ddaa5a1ad4a762a1cf1164c82e78affaeb0ad9dfbe8285059c25013090a00b293f33d96da7c825cc10444b4763df0e3f80964a1b98a35f4fc1519630d8039730a55a77c49707de0c8a221fc26dd569fce156733ef08457c242f82504d6fc2745daea6aec2c2376fa31c423a6e22ccab27cb91e2250360f41a00257200a86c92e1d4e059e90431a01882d832b0f1a4c79e0b47e46ea42ec884ea376a00091f8fbef27d0b16b80d414208d54c001e37ad2c609d9bbbcf2960c8f193d83a1e9d2b147894a7623ea9cbc337b1d7348a18c981c8d29cc9a907832a4e9338156b73ba90864fd2fa93a8835290c9cd19aee217a9f12589b0929ffe8b8807fcd1ce4a7948e08adf2fc20fa3e7aa8684df5a95a699f1e817b0a090b33662c51f9d59c679ba218242ff27d5724aa86b2ff1397ce78cc91060b3c78160d40f059c1cb138cb1658dcc24b7d8471a5f60d5c252143a22c951f3ff0e985afb800a2a5c0fc92ab5fb7ee1ec8bcdd51de657330669fc277d14c805e12d72db3133d7655bf5d22da6dcf41581605d2c85f964370126d7421c331d403c18e982bafd24e95588a9166cdc9e6cd548b0ab7200f750722a6b61487888a78330d583cfc2807ff9415597d9745b488e594e1dfee15c4f341570e816a961020117ba321ece58a7bad8430d69229df3163c2ddf6b015215115b3560aa02fba913183e2f1b9744360a2080119a9efa56e135529002561621ef8010b089d6f4cb934b402bce0d38328a0591bc08e486ee5b557d068337f6b8afbd180007143ece645f103ecdd4e0328bc60e771e45de14521100d175e7793f064cd8620fb87f3d82a2aeb68184d25fc7c61ddbe05917f1a6b640014e9e3e5d772030a4c9e3f772b43319a0d01e6b6d5f056c40e0d5666f8acb098922562fa2d24b3be1a05e16c2314fd28eb0f5bd6e095cab00609a4687ce14695e500fef4d4d0a47c82275f360414946dabc9ff962fa55ce58bf377e42601eb5fd4fee4586872c4ced955c3c30ced19f0ed2237765a72ca84338f4cc84a944f5823331901df6480eddc9b2e0e4953c32b7a3a3643a96c08769f3914e919035708aeef48203de665780e87cd86800f9d92a873146b874340e056240412beb9a8ae9a25cc7c4b806bfae534e75d9baaae62b114580812f553e53d3c04cd3ce0e8973c67a1f39a3700e982d66fd1bd90bed790e911e83475029e7fe7973ade516148febc8966186076312c824e7ed477681593ff5da55b0d2fbb981e082cff547f8646c96d0f5cc67408588ef7b5c9b249bf3e054b0096faaa325926e736f062dfa6e3f945394ee34563b4e7ea00a639b6a621d497590ffacad08c453a28ae612fc89a2149742c4cf9137601c5c205d451a553be56cbae83784d2b803e2d188b00462f291e736449c94cbf701f0614de997e02718a9bba099d2734d998b0581c6068646a123248ccf54c54aa68d71e8d16520fd7c9e2fdfbec9da0a4542b18a9663a9285670f7cb46722b765a016b74cfca1099de6f0ab910c85cd6567921cb17a1f58c63b487c6c01d0c1cbebe988c08a14e5cd334038a8f0b7ee879944d5a41e0c139e8d551ec193f792901b5a1dbc04b31df53b51ae23cfe753bebab570aece11f19148faa833d7d08749a1420c6a9058a212c3031eedd180cdc927d003a5af4cb29ca6c04879b51dd6b8e89d70d6bffa4c25535226365c91a6466b7eeea41991389d410992ae44eab4e28288c75dff8a8a5da01a660ad95c9861fcbf79c37adbbdc57b6b66e069e2d615d036ef7aa5fba5f06a8439130d16abb147a2412dd8c5b67f5ea68592309db8acb8a111e9bde0a68ca28baa58d6380381047f14fcc17ec0438316bdc9cab076ae30d646b3476f0d00ad5c352478c016b4a0fe4580edf1efcaf7840ef270784d34fba7b7f8b448abd383ef9e530ebdde1d518bde4a3a6abc5e6e1e2407d9bfdeb68893a74eb7b4ac162450b75c30ae6b8346b5d101000d7cda9796b92b4ecf867d2682253f880d291c49fe4f1f6e0895c6e65dcfbc9fab36a83f389595700674b2915ab2645ebfc21b1e7e3611ff524e24c6b82b46177cf4dfe097634e2b5d57d5e29df5e1c82cf14b9fd07a9d3a6bcf3e41557c5aa8258bd17a8ed9dcffd39dff6f9db2ff3df853dda6df72d62a7dd3d5884eaeae938a8915588b0fa07b831ba94ba20d34801882cc874cd62664e7642b53c5da5122d7c82f3e330e6eeeda06fc1e6016ae9ad3c4d1d36564c8fd971e26684552717027d732fcfcf0829e1a8e61622aa5c9a99a23d7296a6fd84f4788b3a0660c28c8a7b3f6d3978d32ccd0f24a3758bbe472c09802005664d78c4c1e98e86e166a6e8e847ce499065354046a4d45d47d3a10c7566505648c306a1044e81a6151cec082d1c1e883d281516f9acf1b7376603f560f14a9796385decbfb34e9b8d082069b7e40862d5c7dc9a217fb541fe945672e824c1a29d1e89edd4661aa0ad7ab49642462efe8975cc322bc0a9f5b20aeb50534c6223e54bd751476e5f77c6ec120739214f5105ee3726f717cf3702191897028b2bea60543f21bf36a237efb0942575c32ad0a9b266c99494701cd1ff15f4ec72f0082e3714ca0e85f5479fec58716e59e13ff120bd6b9a5eb6e8526e3c2c96d309a73c8a59682fd1f2e5f11426be020a9b63edb0b22598b42cc7afb0195495ab65f7ed8ee649a2df56ca95ea960b2f35110fdbba57eeccfbeb781d1ddf7cc5867ccaff8b81dd7357bdd0f1c9b11b15b478bcad16e6337b2f1d48b4a1be4e9b80c2657492fd52c59b60ecf2e0fad55fa6d6a49bd1a8ec76a3f622bcfec408f849c1be3069196d132ed9e05ae71f2607411764befd6616e5eb79f3301ba703400142040743ce05c1255f2cabdda0f40d9561caf7a211830cc580ec17b922fd6100b30a658c0cc9405f1ebed5c0327a1a1186870670f32e95824eea41a7f2d5ac69d8fb082b77455304b04ef20dc3270a0bed109d4ef0b84ba4e0b082c918b26e6da1714996263e2987bf0cf5817b27b31322b99d4d80d923913642e91e7e8324749a4d70e8c891c1eb5d764b8093122d7af0c334c83856347b452851305a34834ce1f71ad99242ab81f76b34bff02427987100268e798ea9b6e19cfd42a24214033e02b01c473de890faae75d0ab91f1f88507def92c77d7c602654992b807e715c2e514aa13a724929d9551ab9911908f5b899b0605eee497b7a09a30b350598129af0e518aa83caebd18f5214ca4946e8b6c9632a70522dbd382c3f1f3575aaa2048aeffc6dfe74de5b177ad27d7f2a48b68e148f97be338e06dfb63c4140d5df1aa09f8cd1840cd18fdfbcb1313a86a73a1bb234379870a454e3090a32070d18197a7aecb28e1cf27fdd184f2f0e5551c7bfa504c6b0cb94ad22c14f56f20dbed3105274d050682f0db6a9f4c442ab7559265b0fc1460573d54ccf9e6e3bef8ba59e3627a7231fc8977186d61401652ace6d868c5f3a5b6aced433ce1b7e108e622e15522a7ccd185f9535810360f8031ca594bb42294d424fe51e65a74c7cb6e57a5af2f966e185ea00e2637ac23e1c3d8373ef8f6b9e6f3b287a8e2c12e886bbdef861cab31e4080062770111422e9029986df3ca4acd6e53f106dcae8eca997fa87da09c9505aeb0534827a909733e8f8e3c1416bb6375f99f969ff987ad052769ddc3bd0220720704e9944750dacf6cde94de4ae82fa06f479198126550a83903ecf4346f819dbbbc2e6999fb161e8d5a19674793e238aac007d46ae022535557554b4a965f1ef72e5f9b4526ea14219d0ebeaf93c3dcf6b8dc0540ad759a087355108fc37178f24365bcceb380e2cd83e9f219ff1d3444154e00337278bbf081aecf001a433d1222aa389b588bdc4773086c4fcdc1e356ed6d44137ce80fb6eb6fc5c7f500bbe731cf19a08ac21c19ba8118e55bf6944d1e45b38dfdfd071ec27d3bbbd644c9b2dace07a91931e212fd21817b52c2d6d56327b8441e3549c59b04208410ddde4b323b94af841ad82e6632fca8a0ee7d51e7d7d1001a68cb714951a7e368e6916726984b6e22bd28dc9093dfcf5afe13faf6ea143a1d4ca3a6864ca3dbad976b5ebf8027b793be15723d4cdc1a31f1cc47c0a6d0748006cf5e6e78084c2e12c155ba61e1c5441364adac4dbe1af0915506826edb1451d51bc1293f98ad460a00ad0dac68793a53db040a2348246f249b0a0b64d6e3ca28d82995e3158bb3f6906317f4dd209e6fdd3c6cf473d8e97d8ac567223670ea6a12d3aebaa39b026ae538b9b2aaaae9ec7290b8b3fbef7dc7003ca568c0635e5210417cda1b4a50e8698f2280c498b698573a801ed1585f039fef6e4c4816e0590ea5aee1f9c88d2c9a3373915d077cbc9a319405cc25b9ed2688bf4fcad3443590201a3028819e3955d561948e94203a3442c7be311bd3594f17872564c0838686a9e492f7e7c11ec769a24c9d936008faab882540cedbf80b7a38dd5026528bfe9c9f35a742377efaa6992cc7036d8e346b245c9869201ff8825bb148d57348fbd8aa62cd48ab2e3715eaae4e9f7ad8447702b47e292925cc7ead81b594263b63894c35a58931d6c3a45e7c428b02cc5273fc7b223393fab46077106d7c46eb699e87d73a33819ea0edd55b0ae50b20ceb994c3e6becce0160fd70bdb107ffe1386d29e244a513f49369f900ab445599d41243812c580a8af7026bc3899fdf2e88006a74973986f6974466f12a3b461f90627a2fff2ec8fd6a391dafecaeff380175b0dba11d52d383e5c46f9cc55ff0c768eb294513492a3f8cac3bf80758957551ed329e15acdef27e2269cfd549ce2ebc3352849a0a2859224a835c2e3902d19b8c4d519bd1f863e681702329a11f06d79985a74244e7ecd63ee2b6ebf44d6f175598f17a6ba0bf05138c6aa44cca1c13529a801ebb1a1983574fe669ae941a12f77f0b0e9d4d48891f2c286a66765f022e1d014e52d36dc4f01e46fe3a938ed656b20270b51fa4f52601e534422b4e8d60fa935da75fa34dacc778b27c5e0ca35b109fab82c5a62096e7d262334ebdb2112c92e5ec2358e859b8bc9eef3e2556e9486c9d5939b400bdff98240a5f616c8b46df3753ffe62ed98015e8a9c1f05be665db803eef7fac52c5f4d28a3790ea90b52e9efe6e5095b0dc5d4ed754ecf23d68d5e61f0b3b85f21bc01ac98793302817aa21c3ed69b78ace6988a10c23bfa296fc780bebfc878097e5533b10b2c28cd9a23be1e9f2951af8879ea25d6d1bb113acabe2d43770205eb1e28e5fcf687a9a23548e99047ad84ee4603bd3a7e17ec3c923b30cbd38025351f0d2d86522883a74bb9341a60e01d8d0ba1af33818baf0555786749c8f06a5cc19e00052d941be01b30b9012711000809417887b8cea04eb747257709013f1075a88bb7bca2d072096021e7023bdc18a19b994614e9e037d01e38cb1a47fa749d19b364aaffca7b9a041b97b605f9e462986efadfba73be7ce2b77587f552509c8e594b5db1458d695afb4e228ad47eca66463d1662340cd003ec96207fc3e84c4dcab0712a6e808aefa31671d68e72ebe2a164706d8b1492071741959944c452378fc56d6c94271e05e55287f8eed24a365fa8b9e1389d141ec0e44db486d91eec31f72d088deeaac2fc98cd885c4d771a22326b961020188091ccb7faaa230e9ed9653b08af969c116c2baa2fe6647237878ca7d007ed6720ee9fed25939be9ec927b93b127fdd07ef464dee8fca245384adfb94ed6f5d00f4312998b44081032c8617dd7049972a5de0f30b0642392ab15c81435d142030326ea98ba66527bcb71d143c664019b38c1c3d9e3cc8d140b26302e5b77285c2f03264a3f84fd9545e66c646efba5f6d9e1b1d6d8b3591b9b7dd446fef4cd82b20fdda6306617f2ee8ddd9b7db536219b18768a18530abf90337a5888427d7085c01277d1044801043631890d2fd664949956c0f5aa86064b61f549e3e6c7eef2ef9c620b420b87b997a738f1911aaacdefd620011a553a078a7d85922024bcf9eb34c3683c9d229ced0f5cf8b85d5a7e305b85298fc2ce97f79765a5f53c8b894e164a93a44b4f2cdd9232a3098dc6de6c65deb49b26b577456dda6da296f6e9045d76a38e56ca8767960881298158cab6586adf65a350ef69edab1044fb19ff6623cb8c5b077259fa770e57a01192d69a70dbca95fb8728ffdddf7f7dfdf79fffee5bbb7efdebe7ff9cefb7bafefbebffff2dddbf7afdfbd7ff7f2bdd7f75fdf797feff5bd97efdebe7ffdfefdfb97fffacb34af51b66939b21cbe83ed5e285a9f5e44458f264717e5b26e02dbb23d38d10a3e426691233b86942e89ca3b200da0f07d2b4255d9359c6de05eb61463619de02ccd08b4537dab939f4a8730fe58ebfcb81cbd4e7c965582adec45c00eb69d751cd44425507f95b4fa45611e9c5ff25f9e1c744fcbfc4dd7e5adc6719fef637c3febf76677b2ccdfa037e97e8899d98cfedff01ceffd9cd73aede479a7779df3704df7b9f677f8a67b0dee77669bd9fdebdcc763df93351ddf38409739235a00001d4cc0e8eda70f39335d2cb592366074dbb690a5142a339116e10b4926fe629e098022853c4591b0adc76efee9e597f79a5e4f1ef856c4a25cce4809f63ba58bafb1ad40280914d60a50d42b51305f3025a378a24a7691399ea224bf67dfd9d13743272e665de3317d806406230e4afd6b0b2ec391df9808f7bf2aa41ab7444af5aba4830b63aab18cb56231c1f99036a2a32063a99ce99782bb5f52b6fff7608af558880f71bd9c11f34104f6b301c295853ba88e6cf62294a835cc3d483d2d795bad4d05213a86fca68b27018f69c5480eb6f90dc3f9e5963bbaef35425de209e4e3b1c1e3471e63abb011b2d17a4d3b116ddec976703cccaf31c53a5e784851a3e97d03d71134cc9f98542a91c3c87edbf7c2a9589562ef46e960e5369e51114a7a794f50ad012c58202691de998e84720905784dd4d588ab3e8c9df3391021880e836c9291d9a0f0295c0ecd7e4d8015310b9652cb6c29d6cfd2a839262e785aea4d2e0385e47f464ad8d099611e38a1cedde6caf8b91f932cabae2dcdf8840e9ac36d2e2af2d35717b4a723575614ef318f2e9649ac60e60b5f4a6c7447120baf7af5905649327435f493d28eb25e2da6460fb4b1adcbfcd202fbefb92cf48f2a7cab445020fe45458d037cb0456dcf84807f6847efaaf582563682d2564cf9551fa38efc2c9e5415da4fbc3c91e9e0ea4d0ac3b4162ac93a8dc5d4b4d1b7d38f2fd576af43001e9ef456b48ace8d27d0db509c1f81347e0aafdcceff551255103357c3081081a91688fe9b7018838ebc1d6a94274592edf4a07e2e0ad4e4ec05597e06cd6d24fb85b0c528be6279af614f5d298168d3d37405d4c19390930bdb9f81b350491c278e852f98f6d6a8a562ec711de93dd2f15f6d9a544af66367da6f8662c89fa01f6e1aa156249ec5414f4d2e122d7f0c922ae2e1d1aa36d18aa1b06ebbe64927715e463baa16bbae943283d35b8ca20825110341184de78ee2c4d1a7cdb46d6076193ca1a6d83c8d61a8d8073d120b5f3e609b1bd71a80551fa12ed77a5ebeddbea1f094511902ae8b933502eddb1cba68f5bd012ede8503249a8b6273ab2143299c1ae11359750cf07b2f6a05f79c5b0fe378971a9e9728a86a8d8467f5002d99d1070d1373d861e320d47160efb39d068b5dbb47d15f136d016893c780104ea6e28fe6721951881255d592bc68b25ae77191b459ac03186d5f074f40a51cc49252c3373e9ac502320fa014fb448ae290e0b4b2b41e78b61bffac5e54eb61ea5ee194a706becc9cf50dc96113ce11951a8e33b94ef80de09eaf787b95ce4976995a45305ab73774eaf337486d50dd41c6fd6e4768d6efeadeec971671747686c0de860e70fa4afffef1bb60a661b040bfba4abcfb285aea914965f21e00ee91504e58caf60f230a1d36be709c0a453198236973244fd17a3871f8adfeb7390a722fff8d38c2f6553075d311513a0417c4033e2916aa74e6a373ab1b67339f2122c74b2253197e0d69b9b78e55dc05c0281c67a5cc50a7b16edc48da26fe844437ca2a72560d53d3bcf50b1b48299435dad6ecbc3aab996d2cd29d16f34cdb2b2b55a6b7c521d50015300a3c16cbe4481502e7b6dfeb27feec3bbb6ae2b8976cf649c14ceeca71864e4b4c67aa16c72cceb73d4038e7a0a5b2e2563884d3bc2c39c0dd5d614b9566284fc941c4eb5cd9d13881ee7c041b831638b7e2dcd6451c10976f1f8a3057d903d1f2c86611e619639b526427f6a80b6a1d6e3ead2c647064d637d8154c33b9a1cdf873ffdbe215e80581f0f8de3e2646c19d62a988b9a522dd98a889469cda03a6660332ff47a23062b53c0010d83d0019faefdc2896f1591ea3fff89d11a02c71c47db480eef992c3a3a0bb69872132d2576b5b187acc0017d1ac3f42a49160a53f0c6dfdc13a7be7af5509386ac959fe33d4837bb3e0f1ef1afd5699e25b2137740a454405e06f53d216ffdcfc58e07375c4fb3ba7e40efd73cbb5ac133a0ae0d3eedc3fee9451285c8c92318353055a3048b84d7c0c565c4df71157156849a9f52925b14d5461a3d691dfdc33dda834aaedc9beda7bb2312bfab6217486d9b4bdaaf35b3b6ad1ff918585ba1bc177989ed2b34988eb7985fd9c77d9dc6b0a4b5a19c0d9efb9222c555d616302fb4fe09c3e6c1102b0d40c8c0318956099389510f830c1ef39765d9c20c5911f68b9ee1a9c4c2aa2b3c105c76691d27f59358c16d1d8da6c1afccad7f26f0bb4c7659af4d7b056c948b0184ce8d91502e0f3639d911bb999938ff4eb45655d2e395230a43e093472ea147a612b9489c35407e06093ad134994d1de85aecdf26c4d1a7478e298031ce10823d5de226ffa7709c2d44fe2f8a364a9a8549ae1e41df8a14ea785ea3b9c98e8657b243f2aacb3646a3f1b405763904c90b5198b2a420930a9f304192a5c17e781be169ad63996fa2f64fd627a07c65da820ab264db6382ddbc45f9362fa54306e469681ec4381c9786d4fff00f0e5799e0b3634d0c596d5450df818c7f94e116fb77263fc0355e5b094f9f4361811127fae458eb7147873b5d8adf7b686598be8865fbb1462980a5b6d18bfb95fae7a376bb537eb08066b361051c1a667f32503ee091732db943302a4c9ed83c11ffcc595a0a0b19b58578afb35979938dc270bc02c07be0ca96088d6286232f06ea39857be5998f33e36dd4ededd45b723a05fbb42478446b2fd3313f83fb162800f18109845f6f561c152fcc5014fefab30c8e72760f321cfc003910ec119d75c9b1730095d5cdfb261f3c2f6af4ae747bb45dc6b028e2f5ebd3613dca4a4bb972c32330788f5ec83ae1fd223720f70dc98d945ca1364722d0b3343cda92bc104c10162c1790660b9a8f5e2efde268e685b901dab0ad336b68839a2598b4c86ab30661b5721fc7538c9d674cb7e177c91b5ed1e3fef5091c96e51611285fcae62681e3a86779a25be9cde57f19bad8f873628e81e79d9d690f911284d39d16d29d0b8b91394d17205c8aa1902f5c3d14ce8b368d83a4dfa9d20a8f7b24fb1213b3ff4d5a1e1c27bfa22fba196d9674411cd1ed46b899ec528ad090fd20092ce86f8cda832385de3ac59474d06a6281572c1b6c5bde68c4207d095e9d0c7f9f856da383da48397f34b058e52237b5f1bb706444ab197aa49e66df8000502730a2917328b1940e041104810e0f1132a1130fdccb33c2517c8684a68420ae8ee258e7b550209f78fca597dd0f72a77a9486b6fae9e5464378b6d2d138b13c652f68a22bcdd20b9ed87b4da4829bc6ddbbcb48580f2823761e7e3d8b10795fd15ee61b5e6670e7d5fa2149674fa0023f8d19f5a1a95421bba5d3e3c1139f1c21b2802745cab2bc8a8e6302d58dca44a3b8adf7692cc84c9b8ebaf8914a36ddd61aca8b1d6c2f268df6c92f217e7b28a52e2119de2002f23b11d30cd01c65e6fb8571fa8e27c2e996da55ec0c9e3c417b85df99f79999c2a2f4b3edb57240effc4c83913469c69e7b82b17b1461615e9faebe2f0d6e12879db0339adb68d29aea9096b4aa86d2e8f1841b31419dce6cd7223e9db689276a7cc11eca88b7d2bf236601941ad80568a226cbeed8d6a9b0b06f76ed8be01f00531b480d7bac91ce7db9d4010db1885f02520582a52462ce214c14b9f864204d5df81b1d41387c3d0cddb6b2b8d05432e6218b677ef9a691b57efe4c0889596f8b1cd5ac0204b57874e742bdffd973c4a3d4ce6eb3c1597ccff5837f96a194604b6ada530f0a3172537694839c7facd359e015d6641a6045d57ca5d74e80381bf0306126955a2b20d6d0840427387c12bc7fcc160a72f850b882a8a650798ca030cff3caa3e5b8b9b3322164761d813d02e8633b65bf8be7eaec4aa03c868e8ab9843db7b4514c447071d2bae5a231e1a014bbb7c34541ad13cbc453795e28f48aa42354cd51c8c95d7ef94a5f01b855e0cdcc3cae3b679bd0d5f68cebd7e9512a6b18a8e93b2b7e6d4909a4ebcbdbb24acd8b6437212cb8f4354869ca62bfc72ad2726ba560cd1dc19ea50ed6e958b04d0f434ab6413e71e1d7014ed4143bd4db7a562e2adc749883c52814055cd7224ca747290db8c51a91de6d9a9d7dae036e29b64748b42ed148d7c4bcfb591eaf0474743bde0945472421b795d1d600ee81c423ab3db747431794c9f602bf1448bffd59ee6de6d6056ceb653e820325df22ecd6b4028ead4901812f046d4484372ff94d2c452e475594e4c629dacda93dc2e04da49b8339645ccf50df491f39614a32a1cfbc44f62d0478e70a7c357d87578c7e663463641a370cbdbf72be9c401eaf80e5286cdee4e6363085cadd13b1544a6c29460a15adc9d4f3fa5b6e837355494686b2d5eda959b91ae4bd9ebf5d42033d5b10d44d866a95ca5641480fae69896e74fbfaef51e8744068fa740747f9caf9666a158f75754fc65c458e8ae31d019fd77ee145648175231762066e0c2305588d9267d3fea5de6e54fd3238f22fc6e49bb41937b811e8755bb9bcdc3d0edb1c1714862a543477c0e96060ff0120b70e71b159029f73cc86545c577fb5dc7f0fd2098e1971e89c7e438a02281102a3fefe2e9f45750be279ef33c9f2989f0f5b205f59b98f63f1442faf9d9e67266686dfe2dc63b24ed0b4a074cd23a9f43d08190259713d75abdbfbe5df1cb1e871c75978981eed2db790ad59c25a6fe7cfd4c5d0f53f9e4f5de8dc6196e09a800d5ac46e09b78775b87186273a9fcba8bd7b4e2f4565607ba6138715b64202da087e944a23821732a7180e564799d0ade43bc42bde2fa8a436ab67be61a49477b04caae2220db6a8cbe3a6fa5fed7db5a2fdc6fc4eb3aefcd4f04552f94e03500c9e549d3b580c3b11fce13c0e50c97c1b69808ea201079ea7699d52b66800d4fed55c996d641f92ea47bd19fc16aef89f739efc30300db2b74f30999949acf835aa8da27ba0fb2d7cc15bba721ade7b5fa444e1ae13e1558d4aa61d382375278be9e8ab599354124fe4a56f208cae9e0c035bf50b592264d133c4f6ca3e5e6202c1b7c38e94b2d02b18ca2c867165bf81a98c89ccd074653b7a803af1624d8c33c8a376b82150adf9c75046031c1f7dcdfb279efa3d02dd9ba79fc583540cebfd35a481616c991119182898d9eb4c46360be7e143f735eb3754b07c854cc7d76b3a151b8caf359a308a5d5148d8a445ccd4fe5d869b0d70a66361a31c2aca0a422cf52b214c65473ef9fb0a5aa9694c210309be246bc682e68a6a185aff33460690d45d8433b1f4af191bdb924b47ab0a128f99de388b872a997d4d9d02e4fe1120f5dae74b7f7414da42e6b8e934a3d702baa53f58388f9334f9d2b052a3c36b9bd3c19564f9d57e0f0b358731be7090d267e7ae2df9447a4c2a8b3ea08bd92447bea780a13dfe4ee555dafa7ce6db9756689e0e7dc98266556d1a29e3add494f1dddf465d00ac4e1614e6eb7712b8003473d1943ed94bbb32447783b2e1f59002c8a2a62a4596cad7d859369eee59569505ef3e2c15e43c2a585a3d9d809b74c3a61d7339f2b72a655cf48756e9540b5a31fcc1143aa7310013da51f3faad303eb2bd44d634cd72d686a19955b5371a8dfd4d76f0eb94d38a296431bb47c02b021d571400ecdacf102de58548ff53df2e299e50b168cebb3ff8577e95dfab350b0e03e6dc75e0ee598cba23bab95601a739f3853b0f4adc57ab27c7b1d15980d18f7525e144027c8569dcc53098ef73cfda04a4029550261a22a8125aad21896b3ac1268a8dd089b8e45392e19faaf13b71b9eee5dcbf8902fe147f132e72812315ae9d5670c716a0bc90bf04fb4ed91d747fbdd60a58826ce4534e567d4fd1dd9ec8981e944fa18249a9f30cd482d64c774749da73f90758ac697da40a03242c5837aaac90c9cd14aa0941589cc3a021bf6c791d5604f58c76feca09dcbe182ca16bb9b405ba71c4ffd44fac3b33ac851383050e57dea28c4e7ff40b46b33796bdc676434fe701722d54e4205434b37575a712a96f97f8af4dcd317704e044739a2256bbe1f064667e14f60b6e753ca5be0579fd4c73b02522918f290e00c8b148364350bade90abc7f4cfe473c61038a13d3b12b050d4c9d941e1d43270885fb2347ab274460587edf560752ccbd21503e6ffa72c73a714c402df5d3d40b2558ec3c51f72f29ada372b9378ae74e079ffc135e7c536901fd7699af47e831bb86b8141066729e64e831353504473827cdc347215a466bf889c50e80097bfb99b4f6935c184754a7ce6312e943e7a0ccea6d98712a1816f1688b98f93340002d637e2fb4e01e0dcd93d80e5342fc2612c9f5282680228167e6b344094ef04209285b64bf8a82047d44423a2d7902f35334bbec3e0908e093191fc1ade4c27e12c0bc06682829a01e4bb323c2b263a5c177ba819cfa9916c1be91062150a802387aa2bad7ac56671701026607fd28e18b7603fcb1c2a1d2c2f355c0d44f260af2160cb7f9a364f8c2f23ea297f66ee93244239e96e053f3dccc0827b932b4d661a89458b964ebebcefe6893a093914a20cbf040d7eac3ee3dbd1638e9170a177784ce9d933fcfc0502bffb43941d232717fceb97c6d654a751a1529da6a77bc2580ea7f8ef2378330181d7612ce908c809795bc5034c8af57644a57da4241a66b9f68d52b34c43dcd3c61d2ec793d193d2e7218898d434c902ce1b8d7cf83f95b5450a76d7aacc730c2c09a8dc1b360067dcab3d3e572c1801e249f182a64b761f84fba218528bb8710da8f15462e57d0feba49ddfd6116f526e796654a8358ff07d1b1b534737ad5706563bc97315e823f939a6434115408cd7f2a2b2b35fdf68c3805a94c39a59613ea5638ca39e1b862d961c3753cf1282db43d67ce7fc5a3ed2592ce8afd4d2117f17b3727d9aa2868813f2747b25d66ecf4b7d09025b501bed1faa671c1ac01a66db1ceb7c5d01bfacdb729ada4ddd2cd98ca3414f5c093bc6fc274d3615100bba9c125c426cb58bc2c3f8fa3e9e70bba470508956e8610f4899b3388283268b32dac4fc8f6ac8dae72e76409d4c16d546696896c396efabbe90a2abfb74d9fba2302b67d1253b7400f0115b11ea8f560c7ca6c6d53187b0bc750ccbf26891b70b91dea44c2e024469756fb6fe5e53c1164db9f0d89fe4454f735b755bcc60d9399e23771391af386b484c6683c7085081950c4fb0ed2fa681806ce5d817be13cb398959682f274a3e5eab1508ffda5e65e1907ee408c8e0590c25a4a3545dd47f0813410abe34a1f9d4011d795655c2692d0f0dc5a81f09d521565ceefc325b76e0ff43c47e8fc1e78785c079861500d0435a67aab9ca661a1ed0029fa37d215e3e42bde19484fabec5659db4802dae0e0d3d2101cbf9ec94920e6f6ec97ae3e303aa13a52b25eda59df0006360d14ea1321f3dae008b2b78632ff0c4bff38a513a793dffbe960d802296badbb53cb26fc2226769a0a296226c9ece47ff58efb505ade878c317e32413267f890ba4b4cf3e204b17bb04d3693674cd1a422c6c6fd28e128a623cb8cec1888a6925e8a88a14123fbebf1b0b48ba88706fab543316ac5351fda498b5ff8c6924a7bc7483c6af5449d283a7a9005e009959acc8ffc3476a0313709036a5e1dbba519fe222f4a664e6df389dbc76ca0ebd390fb70e9f3c2f8a0a98e9c42a6d284cd0a18045a41f4fc88edf312b5220db80d661a9be8aff19432a7d4f36f3edc6e948c16ea22a81b915d3b1ff907ec4f800eaabaf8c3dd63abb7dccfd528314daa2d3980a9a6b4078005f085bdd44e12271ae8a50b6777389f44063b9023d3e221d10f0dacd50cd597cb58cbc81be84a8be70704a45b02a0428409e7383f2660dc2c2641bd74b3488f593cc9b301e35508aa9fa370cc34ff409d80b80abb8ef2d8386ed9866cd0456f112dc618f77d4708cc59fef40381d004107b964ec0a01295690a45263a44e86529e712521a00fd9db1caf0274c4793f202ee624990b342e0d4f9c72986ec5b599e1a09d752a5d0c2a1ea50d9bb57cbdbb11e10cb2fdb2957f26856288252ad8bc71fc9a189ae10847d9b752d098e4fff4fab106c5fa80720ae19d41fc991411068ab3b0b494445ee0e27d3d920d76412fc735912498afbfecdb286bd77dcd14382e736cf4812097eae982be3294b4052e9b64b0423798d7b30d6baa63454d212524bfa0814e3da2aef6ad2e2b7498b1d2de0ba80029d113837ab82720bde92beb02bcefd994e2077a50be017b4ac0191598321d3f5da36951ba1eba532c5a90a64cc3f7f7dcd99ef9ada8fceb8716d69451d1941487ffc6a55cc39e5ecbb56a1044d33ce42267eb58c7fb263397f5b04d3afc45800722a4005637b662893133a354a89f5d034394a7415173f13ba087bc2a88a2e35885bf061f1f12b3b978a29e303b5a4e88f491a95510b1d3840277647589fefda808f75ab525536a0be6db8ca789e530560958733b08b0f58bbc1720d794b358f6c8273a7cca421ad709379ce46b4b55a0de83978193dd60446a97d21bdba7ceb754acdf3ede6e90806ac25779f32632374bb58e6780a0c56869bf16039d1437ccfadb655f3dd213039764bab64c8b4d86368d2f690cc55c00456eefc3b349e2f5a5e9d6509eb07ffb48e5259aa92871c470a46c33440b88659594f8e4fb783d64e4124940309f1b8f5391ba264d4ae3aef12c03c419cede5896b2d99ea6388909b38f550499b78f4022308e56b4cdd09729b5cf40245a2c34cf447e4340252854e89abb2991aead3301467328dda72d180192d761dedea57ba977dca304dd044c2bee76c823ab48c4162a0beda54caed4872e7251e2be80dd761401abd5a7d3d0bf4765345a43ee76fe07c49071cce4063a03d5cd5244a73e0427f43d221cbe38f2ded43e635221e81c1a8721930f0305a22f5bf1488ba6abe93328e59c4748b986f379a3fbac4173c20e84db6fc440858a20a3d374b0c01c7c2961eb5738ad69eb2bdaac390597b424efba5f783eeae3dc3369794662762b64cdceb807eea74f75ff1e8100e0c321ec7314a52b349962cf9c27f74df2c2d7d96eb801967e7acc6a4f92cfe45922e8b5d0dfdc3b99f5f1b8e10f4248015f88e16b4a8be70b8fd0d71a223793c46434860939e9f244171100c5cce0b1c78b39e8679176ab7f0504b6d6614cf147bee24954a89d1009b9e07cd89b085c58be0d034c3b457f423659f6f19625dfdc1eeb7f7d186f73f6426015fe4b44b4560eb5bcf4e13e711cc32df6d3a71e3a7401c01dd61499c05e5b6729da1b288bf4b399401c27ea875ad1dae2811c28baa278d04f58a18e8e20e3e3a1038efee8f4d625aff94211612ccddcf630f8b6204936268a55c45780d380c9021a1926558e925cd994af6830b8e2f352622cbb3919cb6f0aa238188a62a14490cc5eae5c285a8f71cf7ce42478fa0a7aca0f1110481759ebe2819e67a8434a6939bddd4d9ed037e6b71e0c6267fce13a8cda3875912f50055bd76347507ead0e53c281cf378a852cb2bf45a011a02c5cfc9ebaddbbf38c2ea774a9eee25835c0ac10220e0c037ff480b829eae944b213ec53a4ff6683d46d86190805e5ff9f3e161a2503ebe5a05e156f353af8eda1bbd37625160c5e8943b508d99a439ee71096c947a21bd134a37a0a3c83e4458b36c64967539a6b7f0584ec9e643817b3334eea35c7e32151f8d4c54a565fdf830549a2ac553641c9aefba25a4a49ae2ab54a9300e7dec085d60c6f87e86dc881d4b12d56f3254de78735f5181958b37ad78fba628f4f8a1252e20ac0c09df7c6acd9324f2187a819992007fb75e2dfa93b61fdfe35ecc20ffd73d8d5073b624dbdf5ad7c0fe42ab5c9895afc5f9b01d06d0d2c57b2c41aa6524717c3aa8d605aadcf9bba14763f78f0809f9fb23d91e75eb2412f9643c37fafc18a2b9e92fefc9aaf13c7f7e4311dd547e13fa6d7fd628ce61e4e007cb077195d7ad09e8f202dd799900353e87849a9f64041e11e2eed617cd248bdb355c7a9dd6ad6e8b7082c030058c15014556b66e7f43e295a6289c020bd8731cafd62650c9b24595b819417f584ef7db844dcc6bf485c35634bd73bbf1f936f9de3eb5b6ea5a7b760ab1b788619b42c7a40de33a849d8226255e91ae1e4ffc47b988480901eb166b9b4ada8684e52a1219ae4f01fa10f11535b858f60f364983f5b1b14477bea3cb97684dd1262c1508e4b0160801d4277c9a9208107b8f15f630c7e2ac0cb72457f1bfb6937e1544bb115638a78f4fc60b840bf2d51a6c721cd92f3c9c75c1bcaa69b28a42faab0ec25e517a5be8f5c4496c9c07508c9b5f1ef96e93f9fc6d722c3d97ee34fdb112810403402ec5d144df12ebc8b1ee85a65d0292f15cb410449f9e93ed4d89a9631e0b9e76516151a938d3a49e4ee5d673e3989e8e1510ef6945bad864dcd7304459816073c1b95443167dff5d257b24815da0b6b3f05ce5dc16cb8f3e9dcc851461f46a5322f91e5ae9424863e1f34ad28539b9c725a58c19d9aedee5d438f45141fb19aa485b9d4178e311dda556300347600a22dcaa93ca79b0e8de534f0bcc6d1ec9ddd21c90707932eb994f68ccafa490b0b9f3f8eb1f7ee6e2a59fd5a3f2a7fdf056e26da0b60ac0c4bad4fe40a9207fd7f7e994c3febb095095c7d0c02993ba88e1a68c549e6cd5be1f7c136cd8946641df16a036eebb9088682989349f548e113fbfab09b36106b886e19ecf51204447d9d68338e1b3c5d494a529ba3df560a75ace92c97558bb879dde8c387e3c8499ae944685a8e67e06c5e48d83c744ff6510651c2e1147689a2169b31b367e0308f794acea59a8233bf280a1b6661598465c3f1e7321b12fb6fd7b353f906068f42f90a463098eed282e3577386f70eed9af98dc1fd98533f8d041eea1969f4fd8cde87cd610d5b352959ae206a864909f64c05ae10108fbc73cbde257e761b7a7638059cda7ad27e8b3632f37e37990a940aad6e7e675a1e84b15a484833045b11299a786105b975a7e324ffec4bcccb5d4396298c609348cf341b2ebd078396c5d01588a35bf3d259229196cee0a2f53279129b8f2a6c31876064748483f87f1710cedbd6dbbd5edd2deae664e6433b14c04a870bd26445b24f974516c92a9a757eb660a89394a4efe820f8d42625cc1ec9c06491c51740a518322ad1e71e4b5df37bdb0580c8f401d6c81c6159f4c371506582a56bb04ea848b5eb239de5ff431fba1944c463748bffd35e7d0a31126b501e0960bffc87d5973f15d3890ff228d32b9ebd8cdebfb8c637c2d0cd46791469bfc3aeee6faffe320be1707e25b64a326b7eb0cd80dfcc3352d80537123fafb9f876e4750472b03dd0be161eb703bf21842d82d9bf2770b4b862cd6278edf1ff711d62d946e937fd957ff729c1f59adec73ff7f30bbddb39a46f24312f568280dc6b3ee30a3ab7ee0c4317e0d3f9aa80fb004799f3f28d2c8d3f5ea2f241b37f313f22c47708c2cfe5b0b1fe71958affb20400a5ed42d47d6f9707b89d199ef8e75428bed3538452c784343561ed1f62e083fab8d9e9f1f6756406e5e90188048b27a8e56984a79eb040188166fdc0c476f333d6c749f4346b6257cccc023085df2132d2a5c2f8d8bfb8ee395c32b1edd8c3adbf8623f8f0ad6ea3e0fba203f91b7e91264f0486f43e497a45a7b5c0c41a2523c36b1b8e450c65b197a2e9f25a71ca59994ab4bd59a9f2d48a2f70180d0ae9eb4ce61a695ce8e97183cf8c02fec01f546680460e581509b1fdeb35e147874a27dbe96e2ba819209c60e3f12f7fd1e22dfe8c3966f5c468ff7812b3aee106af612ca7697a4b9d193b62e81610d0335fbe28f56088a39af51f3a4f9008c19d0d14702bc7d4ee8837cd5cd88e832b24ab84bc8eedeb675f30c4c84a0e5beec7cae05f660f92ae1562c95f5905602df68378fef288e898a5cb01afbcb0a05ce48ac71e40f8c084e61dea6ce84adf3fc69b4926c00562b6eaa57d7e06d8c7cabb06b3ef24b152a65aa3e77a394436bf21da757772672dd143978f8e2d069292198a7409023b34772449b3a969f37462ef58a4b63a1d55277a63201d0428fbd45d4628a8b042526fa7090e5b2eac73d4912d473ef1adb0ca9cc65b928ba344f6c6ad241a2b481741a3be9404ec4b698d42bd749adb72835f1e2095e20658c3343ae8c988b6d0bcd70bb2d0968849836465f709ca07d644114c1f3d2851e0f051ceb6eb1a44203dadffe2890c053aa65df1ff164d00776d95751ef90447cde06e093982d06142738a57a50de2f0416364e8104ee2746fdda385612cc627fa8e92e562609f0c1fac58af0edc960fcd6413450646065d795ac7916141eedd938abf1cf4a0fdea283bfda99461b9d8fbac6b11e02d592c67d61808a81de95cfb4de0f96d1b39acba2a960faf4bc9f1af7b3ff31e38f465571888fd5055156d107a1adf59fb7be8468a2d51c6fe531955a1b03cc75cceebded797abe069b89fc2187f616af8d804ca1170a3474b06a930391a4cc895ed19bb267ad701648719143d67e13803ecfd19d56706881f3c2015e287297940a1b4c171a863a09ea228a91e71341237484cdf6c1da66274dddf94062a72eb6f8ad73888f7b223977cd3f37f79746b6827a319d7000eeee789a842c4fd2946b2187a45358706c2b288222db36f3ae0eae9352d7fb1c57591990d9975d498ea0832404bd2ee8d4a524f8a6cbd0a5b80f076aefaf5e40c25c94408247d5910cc52bd59d379620f59a3d90574b89c036a4d971b9b11da7f4239a64c0ef891ddfdad8541cfb986ec10efb623eabba57b468f27d611474f05d1c61e5aee43eb29ad5294cd97c1e5b13d500d1106ba291e037d4dee76b1bb64eb301121ee50f96cfd67ef66acd43933c4085b2497e78f3ce067a1fb2f819a37a5f92e2dc98b04e4a41e2520aca28517234c479631ba6e91840664ba22b2f2b1508d6cc13ef34a3d251dd106b336b3e6308ef2e7589b5c2c041c9b573219ce555b668e10f94cd765e8ab2ceec43496d81c75fbaddc049ff2f7f21291fb47acfad49e352282962a621aa2bd624d0752800311eead4a292c649974acc063124d69154f3e8105301b01e98fef0c32d0bd40ada72328f44a870686a445675e8d4b9708a5177f5dbff4434297aa681539d65079c8fa71336d4c7e02092cd05cc9c3f564bec0c4fa3458df1f798f2f697ee483c14bf2b03af0a04ab57bb6eb0002ecc362d5d3a3984ddf8e4f2f23ea806c0eb4a59a0371f966db332f7f0a3de36328f0acee46ed3bbeacb2e990d044e45227810fb9105305e036c590270cd74a4d894b808db610a5d7f85f2f51754f66130b0c776d4e17aee7ccba18afce66c0a9267340aa5185ebd7fdd1ab8893bd17ac0a9a26d26adf34264a2fc0d5df3601fb9be5c78a9f85b733cfabd5d2e9990780bf241fe6e9272d6b49b9286e02b40727a349911234324881062087e1b9403921aee72971861de42ee77a2b670d46e30d59e1d4e6c150b9501c68376a37e5fbee98eed61ebd6cf30ca18f46067a9a7d90d4837dd28de77399a8ae145911e790bcb4f6d0930cf493cca495a70cee20263be28f7e27d5b9a5f29a3a64ef50295fca6a544d5658d215c6d6b2b5663f429d65b3be1d2ba95b981fb7e20b81e9c86aed08d69de7ef61a03f3c33505c3415ad0d42253d0199fc3e673f37eed69fbe4ca78f43ab5021b9f155c7dd4905f67736eb7cc6fe3b3f7ebcde96a8659019fe5ec3625c8824804be037c1cf50ed55572b5b6032aac05a364cf010954c1288cee8072b04f7830b79f7de44d293bd04ce3f24f5ec561e2540772109284912e147e30f2cd77ecb6183269797d880ae33e463a86eb9a31d03dce1c64c543c78ef32507a21635da1f352c6acc57a859740fd6e035ce4b24e7154af50989c74e877302d9d68dd2e4035cf938fdb15d8fcee3d9ea69337a9b5628977fd3973e5cc46ac61d412d6199133c669bfed2c5e708d1e62394663e72c4e002f66ec6222615e2b14b7970ead41b504003069c0468dc3e6c3f599434aa5ed4909c1c828cc63260a73c5d1743ba44fa8f8d9b2cb0e151257da8eee43a91db40078a325dee7f3b04a42c059af5dfc655205cd9380755e1e0465ab01c53a4c2054bfdaa98e870cb656872ff71230d491607b76356371b15e0094d6d350a8000a9a018c010e7cb2ca10b73a2dfc005f9332144432a9ca121befd8f2edf767777776f29534a017b0c370c610c229148d41f0ec330dcc2500be9f4b0c330247938991872cd8193f128dd908b6bf86f3318cb8fcb753f2e317c7003ffe3fa187155683faecf7e8c7c665cc504777327abc5cdee6a9a7722a27bfaf463a4b354745d7719715513275ddcec27e6a4ffe72616727d6ee68a93cd908bb9cfcdf5908b93ade870f3c613400ec008458b32975cff23acd5d038a95181e340f8cf5610638354caede894eb3354a34e6677770168112e9c683894cec7d170a0cc224f50aae168336da641f11c9cda77d4669a56c455fcdb6f5683e2adc16cb41ad71765f4b83075529ed3a66c335b91236cb519106634a66946b4232f6d76692c33496f4f710bccbce22d62137015cb88702385d640c0557e4bc6d9d974c45073cb2e327b22810bc3c8b1db54db36cd5a1a84573e58369335c9c22d59d6ac39758d5df304e400cc56d7c95ad73f34b5d0108526123ccc3b10a6f1b5aefd89c74c2d83a64f2de51afe343455724c471639d77f08271ca3a7a6df5dbb50470a09633f77f95b081d3d65280d1d57652143024814979293e32aaae2d81b9eb88ef88aab60138bc312bf999946c649fbc655a547b9307f02e5d674e3c8d66b928cfce117e1a4fbf8219c74f5835f059fe7caa3f0ef27509a8b96e2df53fc7dc65bce62cfcf2915fc6986f788725862ae3cc7617c93e3b0e79e9d8cec0f9b28b7bc7ddd1df2143dc76126271d88c8372047f1747a06091c8ca5e96ae590dba5d75c6a233a280758b02e5f5145cd0f97afb8e2e6ba942db3ed9c9339c78338d984902646531057f537683272a78b260763a36034f94bc1398ae800abbcf787a27320f144abbef7cf00e70012c3aaf0fd83740e254a275ddc702918e783bcb514d1397ecea86da73fb530b322b8fee0f31b980ed7bf5b82e53081365c2d300e26b8864fa18d82ebcf3933278a2c8e5cff96201e23068c13c080f1c2042f5eb4b45a5a4e25389d5848c0c2b232829515d38cc9541241a9440a01893402c168246a9648a4d2858a4aa80ea110880e20d038651c3f73f87c3c72f078c4388862b81386201c40f07bc3f7796ef0bc4e0afd204e3f88b3e1fa3bfd20eef48338cd00e3989309c6e14130c0389a6b0411c2384cf6c53096a6308a207335678cf237e598d88ab8067733f6872efac1b4e96973e76c1b8ff8ec52823ad7351b979b3bbbfe74bdd9dc174a29b51fa3f49abbde3e54a41e4a6db96d315897bef8719d97ed5df6124bc14877f76dd379996a4657a78218fb5f3ee266cbcfa7c04f7d497d6cd9d55cfaea49735f5cb5d19f251883e897cff6f9d07e71156fb67c79d94ca6cff62970ab2fdbdff036aa4abda46e34bde164dbfed44b99ba2f4e7a2a75e3656a4fd0db59244430bdd7e13790805e875f7145ec929e3ec9a20d4d2e8cdf1e0b32c4b26843921b80cb59b061a704735eaee22bb24892bae14dba255d386d796386fa7069bd74e5d2cfd347710e30c636fce97bbcea5e1305aa3cc7b0254751b1d4d20f9f138da04fd2bad72be58d84b39dc8c3ef66a7cb7fb51c53efa4901b97becb73e20e6a6f38cadf8509a5221a4840a4ed499d2d69d05a4e9bd96c56337bcd1d9d9d9dc9da99ad9b6e8643bb17cd58637a51875d9aa23298ce0e0be6add9cd6c86b33351361d6c8cc95c2f574dbb5c134563ea160cb6a3a3cd26ca29a59cf34f4c4e84781753cb28ea42d78d4b3d733561b039e7dc992badebe68e6baeb656cbd572b55213e5af8da3c9947aa5ec53d85c6daf17ec057bc136d9963351fedd4e0ed782cd15376bb9ba6e7ccd5c73c5cdfe4da6717475dd3882a6b033fde78947c0f8ed24034a1419f5878cdfe18318bf9bad1586adb015b65ea1d02bf40abd642a2a3215994aceecba718cb1e5dc97c6bd34980693b1e60a8c71b318378b71b318e8ea58a0ab6381ae8e05bab41cd05dcb01b59cae1b4793e97fa6525d9296c9348ecdb5ba0e26a3962b2fe377a844f030e34f3c581e7e79f81dbe885416527ab0a2c45ccd6c3452b0b813f0d54c77d38628d75f88afc02cdac084871d66b8b84be54b65b0fcf89e1ad3c4e95f7ccb73b0f1f35dfd52835d7fae08b1cfaf7c27ee383d678471fbf8a75e3ecbc1d85dd18afeaba5b7b57ca9ddeb93d275afaee450bfba97b76ed9bd682d854c9b4bfa3f11d11243ff644f3cfaf265a92722c6186a4f9e7fbedb89fef77d4df544c1ef3b3a75ffe9405225a918e7747115b54c4c9bab912adf913d6de047692ff16e42bb6903a3645a0cd0b86d85d0b8202e1503c151345a318ef6e4f9be65ea32cc874bc2e8a9a696389852ddab9bd486359369069aea5e371ca575af1b5b4d4dd884cd55f762947faa7b4d58aa7b81a4d63804cc98725c553a8983e3049d28a6161a5c2801c984736aa00a7ab0bbdb9eb60755249e09f4a653bfe7fb8e2df641f5fbae3c1ed4fd6fa2777ecbcb8417f4a509f43a26a87e7efc4c7aeabe7b239d24b4a7eef94e338cdf3a38a6db2667ddb0a3380a270863696ada38ce126d75349173d5388cf2779689368ed370f3eb02599a9c9073fd5b18c645890684bf4633a6fc0ae0f4eeb907915b76b6ec6dfb46406c7be6d567cb8ec77173160f4084ffe76c8560c9652d4270643ebfcfdae22837bd936dc369b40d57710dbfd1367cab31dc9b9cf416279d24910560d25f547934e9af528d60204aa868a46e7c3fdad2b91f5de54e43176dafc399c05bf0144c2defce71506877b3227f51a8029a693da3caf682edb3b57f23e17c18b5d7e1637b53010631b64feab66b1d89d00e02f2e8db3232f70050ab294253c49db5e3e48b27e8c4d4a6d9f2f0cb218d55c4190b168d52e4fad31c1bd812cac455f308d75dd57352c1f21d9fa21a71f349e9d9cbf1964aa51c277d3e992f6f7ad39bde147b7037f46eca8e942e4a1428344a148db9ce285044a6f7274eba4ff129e5c328c7a733264e7accc94e325f4e76b7ede88471de3801df3f068c17a06547b57c675bbec5b6b066da533ef10a6bd67fc25cc5b0256e0c9d35612ca98ddbb84a7bdf5626cc496fcb762eb171f24593846a3961338acd13b464cb39bb3e71aec8963367eaacf86c72bdda7232b93e974c5bce79aab39e46e611fad6ee386a36575dd98d27f61df1355b8ee28c821dc5557c43ef4fb97015e85d7c9893364b4e9fe7eb11bfeb4733525bf6a432da15c5df01c549ffd24ffabee353fce78b99403363c427cbc5f2c14c3269cffcd0ba8553d2199dddb48ab4111a45760594d965395cbe620b5188f2893b4c5faa2618367dfa7e5b5623607cb7fcffb4658ca7d6521cfafce233ff0b9adb7fe2a7d57b8de5e769fb9567aa697489cb62cb2596e8df7e34396cefdb9eb6f759eb697b3ae73c6d964eba15d1f25ecb73f5d440f420d7220268f55a9ebe673d3518a9ed235a5eb3312defd99817cf2fa3b558eae48b0ffd1489107fbcb05cadccbc309e3edbf22d8d61c4e961d8f24fcdcf736ebfb5f6fcf3644b2936f1c7d4eccbccdb94e2b8aa714cdf4d719c9c3514d0247ec996c42f957ed37ed6edb952f188f99bfd68c6ff883fe697469a69e35a7e8caf305a58b8abb634ddf9b61c2f2a86dde196153bf2341bb37d49fcd2f625e66ddbb6955003442e2fe1a9296d6f5a79d26fb59ce29674dc32f42b5646bba5ed435f12b9a5bfa65215bf89d4dcd08f6ab9c40d692a2a2ffe27fe185d31f4e20ed1ceea3b3e65052385c258bacd35f56bb7edfbcefc549206d9594aa98d584b2a1ad1c4006662b74f3f26134c6cafbdf7f389eca4406c0b4545f29d80fc8b14ec808a1a16cc67a7f8fe7b7012318099d8a5efaa01ccc4a84532c56795d057a2843efd3efdf001ccc4ee1489d07e2b7bf06de29918c04cec6ab7ed297523b5a5a0e652225265e8e2528b84c50afffb290630138361857f02d2fdf79d1dd230270658293c86f918f07d684f0c6898f01b26b4439424806142f0ac01ccc4603e7b6a18256d4f2f4238f902e47bd00e39e9f011eb22a801097107124a4c9492d3124e4e00e6449f613e9c1aa436c15d8bfbbb8c451172704b6f519b28586418e9cc6d68ac0d1655c0e09674e6e28eafc8e833ae72ea2818bde5a42f616ef1531b27ed8eefd0b4bc8893fe2d6fb96ad24ddc31278579abe5aa92b2685c55c455de2d27bdc5a8b9a236adcbd477ac88c35c79d78d2394d1a605826eedb48ab45a2d3a7392717c8735e374e66e73fd2985329a626a055002b20bc8233bf309480f216245175d74d1453f1118b0431a86accba02602e9e7899a5f96260fc1587697becfaad5d30fed7489dc1987f1fb26c694e29c01e4e6ea0444a3270688ef79cf8bcfb3c5f949c6d1f5604f155dc096d0c5e5c1dad272a7c9fbee1b3bef888faba393231d9dce2a7cf8d9a524c5ae9025428ae3836bf8cfd89475311271801f53c633c63bdb8c39e932279bccd89449b10d82b1bb7358b6cd26d747ac09b855318221378584b7db1d041a8954914d8f9babedc31fb990686cc9926cf90193a60663f8c22d5d07055a60a1734bbf2982cd5784b1ec9c8699f95b32965d17b2786a30f68eae7ca7cea46972fd2715dde2fc49336d0cfd69e7ac930aae2fb5745231fbf6a4992357ea5337de855906c509af3c344378e10973b179c1c9dd70708570949b54219db40821b844ca924ea6481a4ebae8674dc968374c35492325aa26da3fa7e941952e71a7fdd1e869fd68c629a319d177f4a49e6179faadee27d85cffa6dfd1f7883b3cea6931a2e358be6d7972dbadf91ad8238ebe877ea7f2dacfaaf2612d97b86148ab27d183afcd3943b65c628990d6d67eaa3cb527d1d33f89b8437b12591f7c3d35e3abd452f4e2f62adb87b6bff420d72202fa862adb7c15eba9c1188636667b151b23aa32da6629f7e24f9188d16bef2dd49627cf4fcfd3cef3d443b516bd46c3d7be3d761aa1592a9a3f9c7a2c56b77af42c9665f42c2cef513a9fe575cc697a5a4b225ad7f227d79db690ca33a89a3ed56355acc864a1e8abd918ef59de452246cfc2f220d82511ef4b96ee6e96f744bff2218bf8222ba35d96173deb7975b422bea9964b5cf19b55b22f23896465b41ef42d147d473fc51fa33b5251995c18128dc2d1681433f2541a37fc45c7104558d25b326edf2a7ce29eeff6f4c1177d29a381f5dd9485d1b401edce18b0bb5fa4f2e1eb98140aed86ef89429530140a35ab9b42f8812f5f2ef11951eda1557ccf63a1d04ce17332da059f137b800f5a7ba2b6594e7e43184bb20bbb6ed6b855113957cd62142b762d49034e318950185f48b98d949a234b6e703693b9a72816a394f68fc9d4c54c5dd408a54f7c3562d19a25b40646639452ee358f508d52aacd9a6e90ba34968dabfa6a5a4c6b72ddb59beb3fc49bd533a4a7eabe9f5b97b6e66ad67cb4d259f3a2fdea24ae9a5fc34ff6ab83189b39766171078b9c35b445b59a92dad0d6a4aef9eecf69cc2edffc6668c7ce5f9726d18e5c185017675302c19399ac0b532eabe1f2155d2822db7929a1a363448a8f22a04cd96a36d913989439e9482811850ee7c48c50718b68f634c12adc38d9b3ee09acea33748e9393c719729288f4725689aec2c7960ce5c6550d60d23b89e8755a78cdd50f46f94f210baf2fc45e73c53036af980f232429c2870e65194da769ade3c97ce8380dcb7c93c98068bfd9210da3c1bcf83b0da3fcbda523a3a9d13c29006794cc71da6eef2ec9cbaf994ca671e4a6e5ad76b4d32c15e2f2fb1bc6fe348cb373d5d8d1aefbbdf244718f3d3527dc8c8c83ce4bc3d442e9c835da3b46b50d47c631dfa7e08528976597aff042913b6b589027cc2801012eb4e97d4ac692670d9ba74fc929fc694ff39b70d9116f23d79e6617d9d902cf9041b8867f6f81555c5c80497f25be24b4e4192d41c3e6aa018cf22f030c361ba6c4770d81599568161ba74327679d08c4fbcf0e398d264a867104d5f064ea46ffcf52b317afea98056958674b53e3348c6c1c25584e648666003900e38c638cc33a4d6c9173fd65740cf164ca741108f79d1d72ea46ee2919c60e548369a29ea4c1b1d44b13ac83a325f149ddffe5fa70f71b4f9d52777777eaeeeeeed49dba5377ea4edda93b75a7eed49dba5377ea4edda93b75a7eed49dba5377ea4edda93b75a7eed49dba5377ea4edda93b7513e3e87ec24add7849cda6904aac7a0849532f22956f21422352490768881e0fd06414b77d36f665d4c7bb1f2043f808d9d2412eaeeaef6edb98110993950093fea45a81263120e351f40064c893f1b7d0250c6658c38cec48b259a08e0937a9d41637bab04588eb5ff6a59ac9e42385291b89d730e589fea6855d38825a45f2755cd976ec6e55a2fd575b0fe33d989a2b8f51feb3a666aabffb7ab0356c8bd051afb14c758cf2ce766ac90e6ed9b13672ee55f12a49728b24d79fc62b09137ed9d8ac1ac6f93e571a9a162209df23836be2ff54024a11936e73cec993528fbdf1e5a4c785b1243dd629817384a115acaa62081d04ce216a1b3f609567f28f10da7f247dc6b21ed6cb5994e5af2d8ce5b411ed06b41b33df662e6924ad8709a73df52309eda92d49633696fefaf9914df6eb45f6cba55f3e6d9cd5afb6e19d836c1b3e601c937e5bb10779fba70d13ae3f5b9b2030f92fce9570fd35afe2fa3bcb91705fed44b8fefe3d300e0702d7f0246dc39fc9f59fcef2225c7ff1f0041e62ecb0c50e30666831e3858bcca5454616324ed60996a536a1ae7c9337c560428c120c2c60905e5cf162d4126b119dac38a9b02c8125b4a28415908989692c25a1f4212181e4191d61248a60a250c5082a60a88ad0072a02c81b978cdd87081fce3304cf260ac15f6e1306817180140402e3f8a62b611c1ed7a0ee491847c735a8ed19fb66a90ce00346bfacc51652b4903247375270f164e6d9241a58e7350ef3986cb6069b49d831eb56c5584e1b37e235ee9a507869ee7ab1e6ea592c560960a68f5d7bcbb9bacb49af795da746783096da6bbaeb41134cebb826aaec676a63fa295bed359f6a499c9c6da996c47acd44d5602c3beda5bdb4245a0cd4420b28cd5a9d906ccf30da53ae4c66a91b24506eb26cd3fabb7f74e14987847b5a4725b4f051049420c62e1c59a684fb1dc255656712a20b49ce89eea2081fd4494ea5dc85a26014ddf2af98f140a4cd2d06a316354c45cd4e7e37fd831853b73fc78965c554228d442a21d0a8519a23fc7e671ca2e7e9f77b8c6332e3d8be1fc423ced17d7fe9034f95a5f6c035fc57aa0f6c836df8972a0002d0aab6e12faadcacb10d7f50e5b84617324972bc710dda36bcd3751b5c6d1b65e8fab3e7fa53b0c7c79011038685f1a2be68f996538c130b0c9695172ba61653e95422b190462b239149a45252099142a01168148d1f958f27e41141623886e007fc3c9f277a5dd8712077fbd3bca63866ffc638dc6fbf46dfb2748803ce285111fdd7b476327332a5df9cdf227f27fa0dbb9d737538d8bd64ebff9e7947f7df277e2f52a93a9c0c79f44129a53e58878fd8104ea6b66d8331a9624915dbf63a7ceee0db723b188cb976156de3a3f5eb5ec7103ebaf33ad224dbe9c216feed451e3cb71f79fe682988fecb88466c0ff20b7a3a3ed39f203a52d053db5dcbde1ef4b567f972377acb4eddb89bb5447c977a628fd12fe92a1ae6aaefdb534795df9ac92d5f3c83be559ef41eba3decf20acb7bbe73d5e93d56a5f47c292404d998ed65bc4c5d5679168de0dfca17d6e3f9f16737fdee259da39f6d7709e3c7d1e83fb1077fdb987ed07b3cc717250cabe225bda38a8a8a2d8584a93b7ec72acf51aa3276ce05bb6a9eda77dbde031a6dff567b49dbf0bc8ed952e793aae94ff5f32c35f42bb5f4230f77dbf9fd1e7f10e888d0cf1e795a0868f43a9c37cb1b7d15d0c812a1d20fb265dfd17b9e24fb3d9bca9336d09b2ae84b3554a993e37f6a47b265ea7a9e137b6c1fa3326e9b1d67570112774c70b4d1a9ddaedabda3d07b6ac34a22d7099eb329fd29b2e4c6bf7d0ffe4d89bb3d91fbe387545ec576156dc3f3a05ad2ebf9b19634aec723bea77e5f45e7e0fbbdf8d997b161978bc1a83ddbe9751e779af4d4b60b6bc86ddb269d749bd4a9a68413502db46f8a26124ed144344dc6928e34c9a274618b12d664e8a59d91b124ef10db6b15c9f6347cb53dca4927321ad3761c0b46fa6d753033f33733fbd03104c754d3c79c265ee988755218653e6437d7bf08a6a227b39bbfab90904d2dee543b328e461c8a437128b327773371c4b9a2e350ae478a230ee5d207b99b3a94ab7df760a886524ae9a4de5a53fa211a72c942359f28daf2fbbe2fe4f95b8ef88ef3324bdd90333661d34614df29a5e2875c620dd5885f865c624943ae0f1909d5cc0fb94235a11a235ac855c371daab6a5cc50d7aea879b8de5e7f5a971510c45f1bdfa894d9428da528843b9dcf7cf8fab0623f7e5c76504f454efbe9f58f79f91afc6c9cd27272bbdc92d43aecf920f6b7e3eaf89a2bd1a65ed2aed9b36698772c159d93fafb912417194bf288acdf5f1667e46be9a9bfb04e5660d7e5adccd9d96939d61845dfa3ae60e8de65344fbcc38013c7bd29e613caa3d2773e22477e324e99f97abba3f3c05ce89836010e387c59f99328c2197abca959c1027731272858c849288da7bf5037e5aaefab49c74fa8a5dfa1c8c6372a9ad9fd6876564a43fc3c93eafb90a7d5e54d3b89b9d1d1bc7751d15d7dffb5c5de7846bb847df7bc2397132889173e2e40d0886a12f61a41c4e287ac2cfcee73385db0962e476c41d42467107b5adb9a384b9c3ed58295d6be466ee83913e484cc2830985418c5c941097737d6a9a3635cb45a11c1721b1475f953088917ba222eed0b42823a5f5c9750e0a6823eab84da3a2e90102e86c3a2230199bab0e06e33cd644d9b8caab719208acf274f0a69969f4a6d74f7f0cbd24decb49cf018a816d3815c3759ac32831746818dd40618e8a75b2f1a6e552ea5d1a5e4ad6f007fc72d2695ffa5e125739417a493c1b6f0913c6d27b75d80a7f004271948585adb01580cadd0ba0bec79a2b10067a81497f936904c2cdffbe417ef117f55cbf2cf8b38251fea01264bc3f68ff8339e905567d4960d25ff51eaa86459c54d990c6b3612b6c5d7f2a0b8b842d1e6c6932ed60cb71445918e20e568394ebc3652db8d0830bd2b087ca0f44a546907c2f80fa1d8cf44c823109c6245800eabcd101b34cefefd5b8ca8331e9ffa56e569a994ce368faedbded51bffd0edbef60cb0e65cbd1b37c8471788f9aab1aefcfd2f930572c7f597ef8b2b3f1a569fb9507407d99a8ed53757b1b75fb1feab63d8deac3b3af687cd9dd93e86e7ffa1a155569546654e76d4fc396a732c6e1bd3f7bb6e31a4c96423a128f007b187ff6187f7bd0c52478a278c869fe102230df4bf17dc338416aef30b312a17ddff7855f073e3bc461c29f6212dc873f638c83bfe5c142efe52ad03a518a3ce87b3b74eb925ab73eb0693c1b271d4563842571c7e7bddc4b22a469aef8a58de14709699aebb18df1405465a269ee1773d27e4c3ed8a3befc60b126ae1222ca9074cf5566de1d1d33a37ea09e51cc53fc71fac18f7a94c540b7aee6448c4764d60677784fabe5144b5cd59689a6f15e9e0d594b6a85ecf02be20e9187ca2de16c404d03a3a49fc8e55e263748c139c01cb6e1df604e7f0478e5c1268a71ccf82e79f6cd5a3c5f610a6204407381515e79b5eac00fb91aee75847bf50d51203e7bd87a7f0dc6ec317b1eec3a95511995511919e357959965a22f3fb7a4b3d97181ba8f46a3d1e8a3dc7e2ec662b84d87dbdedefe1e87d3d4962df7074c8ab6fc99e946d6ea5aadcb59ce86a77ba8e544fa846b895cb75c309654c6d970acebaf2a853475c2b52ad7727161cbb19c74970a7a19b5d4aeb5e5f784d52d678c8451cb794bef896ea132d12da9ec6585ca4435c65c28a917be26c84c5a3f1faa1c151ccd91e65e9f07559abbb923c6ef4b8e46448227aa3f6ea67beef96fa8759be566caee87c558b68bcaa81327fd5bfcd2fb6013e51f6c7eb05286f36ea8cc89abd842c15d19bd29e77b9af67d9f76cdd567a5f840f7246898eebbef2316c9f731483a704aa261ba1fd230ad0e844f04a66138765b74801d42040649f7c13ed95c51d9079babf9dd7c302a9b2cdbf6d3ca60578ce5f7c13e265f9d4d1ce5418c1edd1ac9f759eac451fea0b8c3b354a6642c1d069b6513973b463189e2c23a98abd8c6fcd6304abf8509cc6130264c441a8e080ccd8b91427777c7cc85fea9c369a5944df43f4b3ded3b6e0a71fbe77b37e7d434db39d9ec9e531d7f5aca50ede9644a3b2e70dca53fb9f9a1b3b9f02161f4a703bb010d979f021c05c73463d38d9186cbea27ca47cbca5531ac0a62c48ca1cd24fd39e98ba143831b2ad7f041e9749171ecc6a4755270efaf84ff1025d43e8b0cf0e7826cb60c72e96b9d93bdf980553de38f4090ab1c3e57c5072bf7613d027c171df0791d931b811c68cb2944077c2c4f90959963e949e297842f0922e93b50d798951f815f2a3d6954fbc33f1a759bde7b6651f423f1472a3f7a662e656cd997e7ca8e5ec7dcac0688dcb6fce38fe28fec89888e119ffbb631e183df772da3b840dac39ecad5d201a0e746cf55d16adfa28aa8624f9eff4e9eef5719ed131eb1db4231456d6346cfa3ba624b13e9fb55442e7d835f227dc9011f91f4a552e9f4037cd2834ffa8442952710d07f9eaba1288aef01f29962ede7393f9527a9820f3e5779a238eb8031882207aa3c450f90d0c75339ee3d9e2fc7171fac27cf691c7df85c3d897e7c8e0424f419d5936734fab19e46d287eae7f361259146220b24f4a771b44040404096274a0c51b829fcd354cc00b2cb4485e365d1e9daef4bf032cbf8658c11f41ee7f89eb7207c526de33aef0343d1f319412115d1885432adb09c5a5ec00863dc7015c7108bb06408d7996d809e6bd07acb0e5fa6bb4fc88c9707d7ffc8135098ee675ba6bba195c0e5de2b0c91c77f0c245cff17228f183160b4883c60c078711279bc78d16284ebcf22f2686939ad883c4e2796225c7f93c8838565a524f258f127893c4ca6d248e4512a9144220f126924f2188d4421918748a40284eb0f1279a8a884945cff51e4110a81441ea0fe018fb17dc0e3f3b9f4bb07d73f1479782ef7a97e896288e4fa7f228f3004790082df0e787c9f77c4f33a1ddcaee37270fd359107e78d83ed729ff2aed12ef77d03c641354a6dc038e6ec1a300ee71ab6ca086fb88ac31b29eab78dd8100c62e4c6fae3834041dc1a2741b58aebdf0921083e681b477a0849344cbbae184b7771a9d0a61ea4e20e109421fef86c2843ec6634bba7fb942d89749c8bbf6c34f50dab18fb411d6202c837460dd49afa9c4efbf62d67ce36754edf2b4fca5962d22af31ca9e3aab65a8e4e8ecee462ea74df60616149bd384987eb4f5958486dd395f45952373a92bde1a4d312c94412919ec53ee9753814921413171d85f465cf48f625959ac235fc532f24d3ed0e620a2fe9691562baa4541aaeffa9aed439c549d6a8f35931d2b923c3ddfe8de52a86429b4265b8dbbfc97412277be6343de2ab1d6aa6143a3375688bd250233b3a4bb8657877dc5e791f92d220bba0cb58a461490d1a68eebc8c051a507041e631f6fb93ee3e7d77534a670e3d3d4e94179481a07faa4cdfa30fa39b5eb82b20da394ee2e04461d1217d5667c5866064a1c2c915abb958ac46f3f7b342c75fa3f96c6932919cadeb849f15e344c354c32c036bdddddd5388be95f0005a1f04ffee0113c0b3a3efde631c6d13dec9dd596a978198cf9564a7a8be664e7b8eabfa2914dced32148b20c25df0c30fd8a13f711514dce5f7f71bbf11c51da44e94e1ee7cf163fd89933fc018f0dbde80ef4477e14e7c9eb4b8a3d4685c395ccc294bae8b3c3c2f7ab09e56be6c90865bb5a1f83adcab3322e82e6094fc93a083a9cf60ad607b388052bbed7dc9ddeef9ed7dabdca8a8bcbaf77ef42cf218d1d979cc641cfdd84f1fe43822fa298984451a8e6091062aae40f264138f207dbf9680d1b758b6e56727a53a4efab713fc52e894258c312c7ec12e8451adad76ae8181e06256d2bb0864f49e1d722abdf70dd3f220bfd399ab54a4bcf852bbad14cc8b2fb93be777ac82f1f39b09f082bba7dfacdf9caacf9430f63d7de9275bf6cb757c86040f33438211e6c5771fe3a5dccf973d4d75c2a800007d579905107acf6132763f26c11355cad0eb04e9f9bfef62484f9f890c39952c112c1f33bf0077081118efa5f02c0994385180cbf20ed3302df36745f281111081f19e2b92ce76c0b3431a6608094450001829ba2f000c1118ef754cb0451e48ba9f16c907a4687929605844c2fb0e787688c3b47c12a36ff99e649d28fbb23ce99d85c514c5655b9d20919e644b4b77ba7a7afa94253c893bba25a4535cd52c945e128b8d21fde93f9677f107c9c6b07c1f71aa50d0db364e7eb61540fad3cf1c5771e12affbe9b9707e94f55865ed237e93ba69ff4a4a7e28fd393ece9875fd243610122972f157f9c7e90fef424bb8179f989dc7e2762589e4ed3b354be74e5e9149d497748e28eaf241641e4b695e9d1bff25058e04484dfbe2b4fe4829eb863e541306c3101a39f555bb19acb54b552d5a820954d7f9094183d4faf05e39cff738a6af9b496515cb66e0356bea21abe8a1b261caeff58cb39e5fa7bc4b62ef3261ebbf127478cdd7f4908bdda30b4f2ed5e8de28ede49e9dc296572e1a48e8eabe8c5a28b12f07083451d70a8ce2cb243e3372eb8e57479b0e8e275cb7964521d2530b965781d877168da6dd9708d171246cf0e190111180f782fc507bc2741c3789d95e203dc93a06138ce9ef847179ecc1c9d9c2224b9e5ccb95ef60bd5ede0145fd6e084d55d5048bd74da5174dab80a4ac0546fbfd339fb45e0373581483886311942c7cc588ee3d5e68685d9c4d8ecad1967b13a6f752c574dedca50a661b1583890ddcc703e569fc00233bc6c6035b33569727476706437b3d8ab8379cd1c5d35e787ae9ab69419e768629413596932b1606339737226179dc9f48428d7bf853543c56ce16a4d3dbd859d755d559aa8cfd01edb702332cd8e7b6de3ba273bad1bc7310c6fb6f626a24bc931074727e77c6ee3ffd969b6ab3752db759d88c5e85a3b0d96682118cb698344e3774a69c9f5f2df18eeba6ddbb67e3133b7b66ddb38a7f33ccfb315ec6aed3aee26eab313d676dacc25d3063669a6eb4c942936c22e8d8da96674f9203b13ce38b3a179a1b9558c1b115eb00518eeb465cb2ec8d57eee092c30c3176e19b0b91a9fff47ec876cae42aff2654af4e5cbe84b8eb11635329bcbcf1205d9e527dd8c64229597500a448e9527ea6312c72763c953a0a1992b669eb63cc2634f3efd7f74e189571e539ce4ef9d0b2bdf98fea9bd0745df39c3eb61317e11b1226c64979dd85cc6820539e031c5559e7502cde5a74e801303b60f3fb4529cb46f98210d13b2d74d1962670ea1e364131df77a22117fde8c49bc805745d870123449b08055ecc408462e7f1144e05512349d93245cfeaf0aa31126320a3497b7c0113ffc03e08007c0992b23d6c0287e28c4210704973f0a26b8fc07c8d1b9bcc5cee550044d842fd6f0db42abdf6b4a617c2374e66afbd962021866476ba276b09ce4d19a287e4a8626b02ca806b036819dc0bafc3c5873f5bd0b92cd9dfbaf4e18f729d03481e672c953a0b9fc6c8dd09928fe8f0a63c95be01c00e700516aedee0a71b99c8531428aa34eddd6081d30700f16a3780aaccb6f840ed7e00d0e63c9373a50d0b9fc49b0e6aa070b099db95a004dc953685d9dcbb016dc92b3605db6020dcf741019a7f810995380dbe74cb000320c53f0bb19bd4d470928d05c7f8a339bbdcc49a67e5c69cf166706656627946ea2260aa71b67d6339e331c2838331adba28cdb4e1c74264a67d361d98cc6665c17407629bd2863d936773a394dafc39b3557f4a72947d59a17652e7172c29c9c365c6352d744cd23e8a5967b4dd47c1d3ebfdc62aaf9ec326d8c77e352caedb5c12e8c0953d1d64409fff6446026f36bde6b3fa47bee89c04c3b7ea8f0ee9e34544c979d2e9a6e2bc348a970d1700ddf74266adbb95cc539f5774f0426e7d4f69404f7da03e15efb7ecd0e51d2f6e6fa6b768bcdee26bbbec1b869371baee1df83ef26041886d9ecf62a3718cc6cc2486d495f9bf5d4602c27cddc9928288cfd94d3884cef5c3a4d44b9fe3249344c4b1023b7d4ae6261ece709b0b06d228a0f22e3e4124e5aaad384ab681493d220418ca15f61fcdb7de007142235e1c4063810050f61d259e7c39eb07391515fb4b090462a3ef4802279d861868b0c5b3f068c172d27961553893412a98440e3c723862c2e66d17507f2710bb19b8091655bb0293b5308621c7d6fc738f89a9c7471157c76707777d9316d85a42e7d21a9db74d239d98f0849954252a9542a85e332dd450b4dae3f9026647ae6d3cd243199287cde3c0da980649c74dea136b509277d6767ca6bc9a482274dbda46c9a7015b5dd8748ba6711c8c822b7c3bd0e5f754f70df73466b294ca70dfe76758d6d1d1d22fa4e167768aa76efe848a1dde6cd32758d3869ed4e6bc79bb1b542eb35a07597abbafc8c5a7adf998dd336fcc9aeb6b619deceb77ee7775adbbbb41197d7b1ccf084a0d73dfdc95265fc8c6adf9bf12c2c333c21e875483c2fc366ae70485b8e30de1b1945ab2dfd968d83447c974a99a45faa1d93f4b71a3249df7aaa73b84fb15246d1f7d49051f4c32a62923e584ddcc2cd36e8cfa874c761d46fcbfd94fb3b3dcfed3cd7f0256d9fa0774e8f5528bacbd92c79e22465175fe22ace3eb1bd4c77b9b213c097de36da12279fe89b86f510fdf63d7b67f9e894dbdbe87b9c1680c9a296e3b686f9bc6010e3e899647a96070550c30740fd3e555dde46b5de6c1973ce5907a37232aaf7316a8d7f51edb754973fd52f0cc3167df045f2798f8602a8e107a07e00f02e35f5b6da0040fde15375be8deaf2a01696aa280aa7904831d728a31092ea9cc6e1d58c92c9a55abadcd2ec66b394c9d27c51454c96bea59a982c7d8c1a32aaf4304e2d0c44693e58f9720f8240e28eede9f7dd6a5f2a7a25d1979ebf24020415451c09c3edd3622c5bc7b694d671d29fc5ad8767114543ea427f781a4e805ff6dd01d9f614d958b64e5f99fa9eb8a387f744d473edb02211bf467d16817866fc135cc8d1f870d208e7dc7ca0f1a3fa3468f8f044f8f67fa8333ffcf7a9026094bf5873b0016c4db50dffb0fef055112cf1c3732118b92f533786abf4095d54d35aa7f156adef527bc8b112806be5fd3dc9387a923bbfa28a784b8832c6a53f59e5c3d3e758153e7d90573b3c7d1556d9a75f6295cb53fa2726c0f7f449a00ff53fac3e5401f08a73b00198f477a93d02c00c8032c62d534084ff3cc21aa0a36a5fdf29750e1aef3ea09e466db651fa5a2993a59f3564b2f43dd48ec952c907942d55fa3dd4f9a8d2d70757c41dd5be8cb36fa9f4a352c925f499cee18348e367aed3a83ed45999c91e6a6546d98e6bd097f12d7abe54f42519affd90d38ceea5e8be614619df0f7aef30332a11dec7d02fc0252b121efe2b92cfd3ee674522da0e7462273e1dbbef40678738ccf83c54afd270d2f3b422d9c18a6c65265d2a33075eea5d5a6a32ac13a0d76a69a53cecdb1209274ab0ae94a03b69e0f0527767c6835d4da2f38db1755cb54949dd1933bf0a49fde02366542652d76b9cb46e64fe8cd40d570949a590883fc5167ff0730cf3cf193f67cc79fa317fc6cfb018485dee895c7e8ed9be7fface74b165376598c818f37fe36a89c4a5df535cc59689d4d59eda7f50141cb108229e6ece297adf33181f76f4614e5f3987ef3cfde61c309ece174fdfd4e204383db5a510977b33eb9b7ed237068c0a4537bf854524eee07aecde89ee822b374ee76c656fb624725954c2f394be602c7d67cef07353e873c3582acbcf5a227139dba5aaf22c75f45d80eb6f1a95aaca936a37f17e42b5bf22154debbab2efb42d73b2634e3bdb364bc497e203a2f83da51fbaca7bfaa3afb6a73f53b709277865e2383408da04bee353c010d494a39f9a9a2d3bd0e582de7726f80daaf3cb6264679fe22a6a9970b994e30b721c651718256c37a0ddb648ccd5f83eda4fd779ec38773c71dbe146ea24124e4e71df4939ca3f657d876f46d1a42257b1f51fe9f6737bb6a3687bbe9bb76dbfd9d045dd65157d7f1cad9aef2f005679174c4e12943305d777f064c13cc1f52902af830bb2283202ba43bf9fc8ddea13740432856f53f8d71f202198d19afa9c4ebb7f4eeb447741dbcb002260eca74ef2f3288472ef1cc731d134dc0e249b90a6e93c07a49921ed2221c771eeaaa695cb812ed7bc9a4718e5cf8162ab5bdf7bb89ae99a2ed734624b9369e438775117e3e09c13bfbf69b8f77c495d353c65bf0c07b68bab7ebb88afe6f78f9ffe74d145173033dc7eba9c34e228df6ec0ab7675a5466ec02aa7386014772e98b29b469ca4dc7b3c9ce635ae0ad9b26fe8398ee3382ef49fcbd597753808d2f0b27875382809f75bd5ee744d23f3c837eff73d65d5f8df77acfafcf7cd393c94c23408729e0fdff5e1806db88b1a71b2861e71f24571c036dc690dd7b82e271d0863495d25d58147b5ab556a84ce2fa98b7d4efb99a289f454c902043fec068e8373c952380dcc6dc327b317b812ab46cf0f83552195caf3d36015e95338509ce32de77039b1e807926a7c0ff327c13946fe03700e91116c00ce61e2c12f44e7682900ab3edf758e54c9d2ce7183da6ec50ad1e16d5389d326f8e1347dd1feab7382a00b96e06bdf3952a59f25d248a4129af6a3f4bb5ce882b6fc9e894bbffc7e3e414137663ef83a3cf16acf19b854b325f89a062efd2e3f70a98d0139fa03d7e0ec0dea725f3e1a3f300e02708deffd0615ee93981e4cfa5b817c79c225c010413eebb1171dae02ad76bd67d096f4b57ece03973ec1a4a6750ceb7ce678446643570e43a138d1a14267e6f33dbb9422cdd784911f6416629a3aa5bbddae4ef4c79932cf491d369b309b300efa59c1a4bf7633ad6095860526fdfb96ce05e68248348e09f0d88d103d9c5aa68f13c5c9493f18b8691e2c87c3c1f16073f5c1ece620f82294adb5e6066d8723da6ed641e9adb5e6ded11ff954b67d9c7bfdce5f7ab0f95c8eab9a7a24b55118871858b5dd6c5560d2abc0aa6d0b4cbaabb699935b68edd24dca7ceeb8463fdb72d3b9cdba33dcb0c0aacd0b4cde78a1dc76ee6caeb63530ca9f63b5b8991aeec8b6065675365cf0979bce0d6f89c7b19ce4669ea06bd8b8f01557335135628ff1f9bfefebb4d04537631bfe9ff64d7366a69b5166a231ba742d5e125e784565bc9a316695e8c1268b33369be025c183cd26c05e9899690ecf98f8f9cff3c4c99976d3cd0f36e707fb987c399f145fed50f335f160df936ff6e17c5c7c320fe6aab29b95da8dc7a49b693773e53d28825c1bc635fca76c4e99ab9cec6833f4c98cd128f486e6501d3a85ce66cc8a196b18e3a0d71d86e4aa5eae872beda1f22e0f6ee156c707999b5b3299b9ebbaaeebc6b18e4c6edfb5a6a84bc1573b466ddffd60dbba1430179b65f7e2a84d85d3b5dca54563d6b1451b7f7b2ab40ac40760a6fbefbb9793defd804907828ba13cb24b01a3bc35fa1e94dcf82faeeaa8b46c16864d0c95a21100000010002314000028100c874342b17040281846b93d14800c8eba547c529aa7595021631021000400000000000020902008008e97e3c4a890b06a0ccdcc5bb000c7744b1d5fa2ed3c945d40800c644051946158bc996f8a215eb82e7e37d7aac9a5eded3a4968af4c555eeba870471c1cc57898c263664a5d0aec9637428660722b6f6e2d280193ec467ec850e594eb08e8117297da037099af66f9fd682e506162744bf829e842cbb3d72cc72e6abcebee6b627282ac76fe50eadfa21e719d86d8a1c0c9f8c294880b7231dd640324e0910ec6f45549a6082aa38b5550b595fa80a173ac15007d7b6abd96d7463754c1c0fe0d14e0950fb889a4287a3c88599ceca173e476258a84e0636d0bc56814a5a9cf4111007e0126bf09e068e235627d123663a6182830931bc616441bf559245b098eae583013b6785cbe4b5fd664d37e2defe0c6b8344a92d1ed420539292712de7f5f5c6c4305218cde6b83dc4e526af464ce0f0e66d2a71bc633a8653e528ba416c9a72ffd1820cb3d8629b0a2295c241efc3c5b2c5cdd41c3e22f7fe6e74bf28c447425d198635ebf74075333d9573bc6443330f27cbcf705b17adf1908e153867324c2707415b0930b84611d8384417270d3c4461c4572107be44fbf8592d01870b26c1df71de19ad386b649fb176bd9ce4e1b186859e4706c209e78691e6310733ce069d9539ec0606cf197d8c3437a608e856b8869a3970b45fc64024cc0c9b2dc0d2527c8430c2f4718206c084c412274add0761c11fe8d78031d6f0d523604945b41a90df0e4aacea326209f7b9c951d251d63c6fc1a5d57aa2dceca22f8e370d5fba434b48f80e9e3c522e5aecda903f5794ddc51c08fd8186dd1473e8f65160bfaa7abd2d25081774592f4b79c52900783d73a7134c0b287e4489fce77e628074b4e3167e95732caabbce20b4c87cc3fbc4e18c53fd09afbbb1f90bded5ee7df720d318083c528dcb4d1fe65730c5a87f043f0c23b1a706055914316dd80f52866bf15d28140085c0a94f0325d5410f03dc24ba2912bb3cf54e74e050ec3e652698eb0d9a04a7beb8a152942c1a274f4039ed0c53f25fd3a7c37fa0b6b61132692041cb96493eab50da821f7576072ea5929382b3e5a597f972caddd501a064ff921135c5c1de58e243502cfe8479c2ceb93ad0e54e01c24a964ac1e0bf438ab372832bbbf90493cf26ee092b5cb0e1c589b6c6ba05838790f13c0282135106df50c4b3e63d094c8a0640466e3c4863ecb57e40b04ec920400b89d3633d83bb845becc21d722023d5969211ae41835bd5b0d4bcb3faf9d8e625003d04c7fa0fce1b3b74c4e29831752d8c8273bca1c633a04a80053f2b4342889b145227857a648a275fa6e98a15c64220f85a320518d92520fc05690de08ec1b0fc4cb3885feb5cc3c8822d510e14c94dc4120e47ee151aa9bafef481f5a2692983bbaea0520e503b8c5990356177425d4f780dfb0d302b352cf65cd96afe75da741c1596ac214183eea0868c48b59796fba00ac5d44f1ef5e5a047fb109ec01f54e6ccb49ab33737f483b990d82eba2f95340c992f7c19093c221b2199c4f4040d7862f617ed66bcd5ebf120dca52a890405c6741718b07a000f6c2700463b50348fb482093780728fc78999e77257a40a729a38d94083b6510dee794b262938cb7b1a3c01c88b38c25248d6fe17dc66bba8b9d42638b4766b7cfc1f8bd6098390bcaf024076dbaf779121783612944015de6a19ea3f0cca16f7d995760f300ef18be130b8cc954dc4293a0637406ee0e582c5bba7e4249e986e05fc02bd2648c07c12e6e445e76b0023f7f6bd110c39c4145df6eb3862239a81639239d2995cfa4548d14bb76c2246a665bf73ccbed1193aa6a6d5b9fd0e83f9b3439d99d66dfef06f7cb18647dc5f2e61ea672f631f1dfda5d2832f062232b46a9b13cb25866a823f8db24782f94c551d262585838102d2845da187856aa29b65e1033ee08b907b0b2c0162f8dd83f5d9a187c582ab17ebe04b1fea03462faa424b1ffa4d462ff5129c4fab912c5f893e22f34025a1b5532f3ff4d2816db564ab735e9f1b04b5e2b94cac5190ee835f612d0a58c4dd4b1a7feb8c32959b7f27808b7794ca978ecd4d7a5910464731979bcd0149b63290036c0579099697599187ee0e6cc5c4844a6f1de24dfcb5eec3d87c9de019789fa97c014df061c4f7b81d18a145e973b24f6669dd5867fb203113ca5f233f4a06ec0a7c888f982287a07ddc97c588365aa5bdef6e10c7069b7b6e0d206ae00095b2df1a966d89537f9c2a559c52d2c74e386f4e6b83d3d919ba19f929bed1937a543fb57f166edb5ffccc26bb08268a7e3f643db8cb3557f26541ee019ea05eae0f9f6d265b2b479deb059dcdfb2b68bb4bde9665e5c04ff17f04de7a0a98023b4ed2f3a66260322ff93fb15683e1420dade81007dff47fcb015fcdb201104c520311155b7e01d1ac533457a3d8f9aeb843d2acd44a4459568c6dbffc88fd50b3ded9e63e0c8ed6bc832402ec5388fdb8720b30d0b80a39fb7f4584b6100500bfaf7c98da3a251c2aa410bbe004df943888c0314faaab0f372b62f82eca5cd82659736e2a5c55f7241e1688d18a6e0a2ef560a9a8a09d14ff9b400af36999b213e2edb57822109c84517e6058fb0faa2c410fadb5f622fe7af9ad2c8ef1ff8d18b0b7413867d2629e36286ed05d5f6c0a602153125c0bca002a3ff5a1d6dd08910e37c0c593015e0c238ce403c2823b13b067a4ddd6dfd300da5672d81750baaf65c71760925d27833727c61ba4e5728b7a28405004945eb0246895722475b3a42d11c343fafba7a76bfa9327ded144cb220a84f4bf1153853a6e5a4b2338c0ae0265b6e36330404f6c3fe745b1f5058bffe458ae7565fb8caaa06f2c771492aa873faedf6393d685b310f6e4aafa2159f76353dec878be6af66237c8aa2bab8c6a446f3170b053a94639c811faafb7307b413165056ed16d441144cfc86ddfe8ccc29cecef0cd2f8481b109a024d2950497412ef53db1086380a585b5f7af26c00b002a00a8f100d9cb737940e12a140ffe7259816a422cd656f508186552b6fc10d23f8021e13bddc760a8c262071a065f5d45a9aeba722e4c37073fc788fe365e8a53af532aa34af801954c20496720d141a8a01390eab6e0b8cfafc452729877dd09af143ebaa1016840e7d406e7763afc8061c74df5e69de375c03d1bf98c7a5e028e53c179741a02ad01bc400ad8cdfcba6a9d5b28367cc7889912b446da4390fa32366f86ff3ef9bf61010fa0d85191a5f9c248b39e0072eac24eaa564f85e032056b11ce7f602e5753652c8743eaf0f6e5535d77aff2373a1a6ced4418c0ba84d02840a7a5bacffa2e81e4c3e8fbe0a8793c1f49c9aa020dc17e2c14bc755ae579665a533d11400a26041e5c9d68a180c433f61e35deb532f4a2c9238a5f461c380991fd89913e75da1228855d32e7d4b79a044b0f485d73d89d81305a0ca3829b86d1340481d3be6f14d82bf7f6dc2586c39c3c8f5a11803bb55eba0022a51c7fa5fc3f421225ed192b5bdf058cad38c9290eaa99162ef809a7144873963d07580c539361152e9c9c6ba6061ed87de484d567b80b8adaf2f7799e5f9c373ea856fddc7e8675d555c07676fb2bd9ff6711dea6f50f1206123161fe2c808844549168f0cbd213af1e5f1c53f6ebccab11ed85d62432213d61b61b9be1178be3431203eb50763e2dd6274824c9f6f35e135145eb012a3058209b5cd1dfb48630ed5fec591210ca9d3a95f508e20e7f9b55ad11a932945279a5a13aca4ad98c76aa26c01b0858bb87f67315efff270ecf6ef995710f34dbb1dc95e4353558a3cdb9e83d29ca398fa01dab4dc6cf6121b29d80266502e3980d018e4eea763fd4434c31a0a78b0a3ed16efffa9d5a954f34dd1d519cbe20b00b0f8be8d1a1d36651e3485820d993787ee8c1f83399be0ed0a6c4fb47e544e124853b8e4738c6e58f5f314d0498e11aee360f64329ba6edf04bb29b57d04c44c73d17d771a85a33588e8f8f0d5658ca9a161165119ade7c26505e3ec413f511e52e8ea4bb5631f583ece50e402c539852a86b6113a37ce4ff00448f92900e6b0361c613be264886f255dc17181a89fdf4052a3305365f53573d68480189f765953f83d667651b5bdf133ebad6dc38143b295ec7e2532b1f249e75f3bb71e33d5e26cda03bd1e83537656eb99aee8fa25068acaae26a225f8d48aebce8df787eeb17baf5f4aacce24ef715de2cd1ad008aeeb701d5acf219d6c377bd4c5d467e317da28a518f7943cdbce84eaaea4a5f06d175855ed67c0cd084b9bb56b5bf4d726d59558895b75afb3a730f6e5f27d159e0e2cf3746e2ad37e873400f8794a09d63e2c3bd0cd5f4e8e74804b4ec86fbabe3ca2b5c49cda3b398ce68b5203841e962bb62b1036656fe452822d66785993b976cdf2e8303d3bb16b5aebcfe3ddfb1d4bba3d0f51e1c9de36ec969f50085e17c77f212b0b3d66afcc128dc9d2f7678dea276a2225758f3eef6f468eda7dd31d0070b40cd34d6ff7d8be322a9d23f39daa03d36d3c54d237426402a4b6ce000b3981d924167afd9abdcd8cc50e99fec721c4d13a6729471d370a2288cda4bf6ba550fb6bc3ae52865717f2e618fc96d64b87e16a8ffb860142e9aa9388a41af8ccafd02d60e51149ecc55fad23de51f1c1cfe541a008a010c62d08b1b882375a0408a1d76c8fb4b1cda55917b1e3988620807f8498a0f129e64f37c1d3b3ba2837c7bc73a22f260fc424093e3c020d1a30b7a884e6c2ef745f974fdd9e50b144e71b965b6cc3fb30f5070d79eac6859db17405b325d37d12e752541710d8031ee9366304cad18f84ff9672d44d5674ea6adb4a5c1a93d4c5457d8d03317763856225e59617c05097367cf131c477b033cccb22fa0d21358e640c51eae6b6f54ee84f2992c86282216c00fb694d31d9313762bc17eb534ec869ebc232fe999e5145860026bce5676207f1b5c7a58c4fc5ada238a37f6314ad00f979a1f6b50f1f02b39a2d1ccdb463cba8a02f7d9155d71131f181221f497ddcd4134a3831e1f6a0936f537fa86f1185f9ba694e00bfd5ba22c470dc202fb4853d8cea197164b1e3ce8dc4d94b6683a0159accbadfd7213782971888ef39f0364ea05eea28f31ebc2fe1446424827c99c5e08472673baf493abdb58cfc70e5f06b785c78c959991caf8969519e914c28f5ceec1e4e860d7c2ac3ff91161358ad346e21d1bf68b3f9630b849967385858305321c2e456200ebd2380d4c935d7f7264a1c36d78e6ac70b2a5f3a6cdc9f2a8b93870c31bff8fe6893c0b630957a46f84a20a97081444e499e8dee496edfa909df95a0721c9c8905d99920ad56ab5828879f8f55ac49de34405fb1285a3589ec244f27b7c271f3c95a0bf84a8904d327c85e553735058481f6c573286a682571915fc584ffae104ee47935f67a002efc4047b5821ddb008fa7e1f1f1b70175e22a451050484bc553304e889d41dd5f754b0c2bf47a980bffd567e49203357641b2ba93270c7ed5d02af068d5ec94b46e7109b6fc8def98547654ea9a2d9fb13b6ddf4e0f112b17d6a793ffff24daa20a7ed5c7efd6766e48b653d3b053d28de2c3067f23152c7edf43e71fd8011a5673464bad4473b60713646e1be46f2b2d09f16d730055e411078983cffaf7793e5eef7b947761ce6521d297c6d3e9374749281d9daef442c486ced5a52cee15c2e7e7cf7aa25f01accb183a8d7690ff5efe2d67f0d54834b53d64681cdbb7321c3af236f4e5642d6a825c10585ebe2f820d8290cd11df42f712470c5d6c2b5a4b6e1d2d4b1a7b8c35816d39e760b34c861a075fcd73709130c4c2d2e93777afa8d827e0b37185df68635791a97f17e9da88774c1964f442d135c98a40712f63d8f11800aeeaa02c1d295cbe9e125096f2320a4523420496d5bb635db0ab5a5e8a296fcca5cbe3a9a74b4a7340d3969c6c8b117174fcd010f4aedb4ef593801d1c3e88af5297f91844b9fd58a3c7310d42dc833477febdcb11bbb7f33259367bacb16d0f5901fd662fa7dc5e8ebe2c6d71592940ce36217cb2516ebb43a33b825b6aec3463314f5778d9d09517ff9e923717cf004ee06fac0377d7c095680cee6914e92b5482ec2d9f476190ecf5dacf47e59c1a77fa655d2aecf63c9b43043a1d99428cb650e6d2859287626c32982f3ab0260c27ffcf66244064979a2b326f1d81c7a24035ee51d2ef4b724320a3f30d505b91f663e671c7c13732bee2b53af82ceeb1ed42c8f913972ae4a97084f2f20204ffc3ae391c399fbf952ae1d3fe715d268f96d4597b2799032739a859e6d49eaa2b4fa4e558876d8a1244c7371c1f8a01a963ad55ce8a22b5d75ac2bae570789a8c2517b139005a2a05f19bbc1026b4526a55aa6d5775ea5d15c3d2ed13ac4dce1ba6df73b228ede255269444e5366b5132d9d080d361d3f0a8645231b40689f4b57cd967f624fbe73e9ef9fbc26056e25f30cd5ba8c7ccd8567aa237349de3c45523873d6672eae624924b5ad6b58cece8cefd4e6d85e725c9406b67572c5b556b5c85ff2bd6a70cc9ddfcadf875c330ebe58b7d116ca8c59f1c5fe1e458f2dbce4d7fa9eb57c74771f66613b64748e322907edae318f295d73ec4d9a1cbc15f0a7a2ce948ab0162dd7e50e85a50629f10360cdde6a93719c07cee0e26949250452d10b5ea3f43921fe760c52ecefed5780364ea85dc91b0b0969c359e56b9a0e2714dfa63c52ef2f68aa9ba1b296bfb18039682c2ca369da4c071e021bf3dd1467838821a12edb1e70c2d3959055b754e98a55ba0caf90b1cc1e22b5b70fe0eaa3bb0dd1ca3e99abca469ef4a1ad4b6bb6f46bb71b897c690fb8ed16bb253aec46656e6d1306c5035ccfa4aa64dc812636a53c2ea33843363c7d28d99717d14c958ab081af3375dfebf8afa66a6cdfb5ac61b4d855bfc8b8f156ea574f1c37df4e4017ddb9abe207a9c19317bd7587cadd7c67e3e9aed734beffd2ded69d3a79d6aecd22d420cce73fb7af71c26d0c1678cb4a3a215c4d5a7813bdc19260610d98ae5aa0048730c92f52944b273ce85f76ffc09d98ef0d8a161ac1fcf63ce290df16ef4fbf9cfaae64463d5e65fb5fff20307d0ddcaa670246ea073c35a95ac450aaccb574872b5e6fb933cb04f0089384dd84bf887698bfb73d1a2b7e00f2b87a97db87b9cb783857a1c97ea956f4492d54fe8da5cf06b6d04e0aba55f08da43d99a810efa28f08768662a368feef7abb5649d1fb0441a607a3a3091d2f0ed4daf0d91fd8eb9767d07d9124c67b7c7da0f995834a43b5653ab1c306b76af8081f3108702b2abb4b3d042f4ac65b548fc63514a859fdca933a8ce1e67083d3140af94b3834094d1a3c9dbcd03c9c142b36e37ded080f9a4cd174b199f2c77d35f935643fc830bfb45d8373d9914182101e4acf8e0e18a59782378422b715fb5bd6028ca39798d5e7471bfdc6ac46f68ede211bb2fb105c1c3998c4f6cf05a05715a99314e83e5f7d3e3dd5cfd72d0fb0c05d533a61509d1530c502eec2ddb4459b00dd12903c4926291885fb9bf8535cec6f120ae9699563db5295e946ccdebf70a73716e2b539980d1923a1ba5eb9713722dc6d163d58e1c2e5460d3f5f3184cf9f908cf07222c0c48a29456175edd41561f0cd3ca4ede5f2069840eda45b5fb94bcbd39306c95783588e6a5c21e769f23683ec0f79191a4506815a3bf120a9be458942ec8a748e9616e46a5cc748510ae3158ea940b51ddecba25a016ca59f5fc7c7700a205f02a3f7eb8201eb12c5a7a2986e418f68631cd5a372553fd6503d11bf0512fa18597f0429126d149e0c84f5350a698e66a49d422e66f1c9ac7c7f5895aec079c03b6636cd1b993701ef185c35c9595c838e9c055d5f7bf7b931d3294b72b4a889799141417fd99c005ebe0385fffc4b166d9709885380a011fa55f7582b0fd1b60907825354251175b0ca1ff3f38bc0659a37895a322a04ad8d6ee7b3adc26f664f21ad0e682be2fb0fb74c5b8772d7f3df6310d69f1d691d2642682dba03edb7f7916a534ab80b207047dd29f1d736fea46f656cfd0755ee5658fd07cdef000404da3404acffd4de5afc87f7d2d623df031f64cf8b24b9f4676995cd33d42b134bc3c7ffd09f41944da7d21155ff7cdd64b6acd579de4297068c62284de83b820e5d47a475d2058bd9a45bdd9f1da0ded5c6ca49c09859b59a412b90a36db5e6c57f899dc3570f373d13970f5d5dc4a6c636b272fcfc193723529cdbe3c7ffa863e2b36091391002c9c70fc57c6ab825e46e9f6ad21d83664e68400a56c28968e5b47e8f2c2236d68cd8febdebd5631cfe3a00f1408ea4478452810582d7411313e351b7d9d85f290c2c3bf646709219b5109171d819dee90a54bc3903ec7c2bb054aa1873d5b2d6179a6acd2a2ebc1f88dd01915061a6b58d258b0b999489d3fb1101ba708ccfffc8056176fce7e423183b1df24336a56c9d0618bd372cbb43ee0f4d8dcc1e221a6794d4bf6ad20eed7fd17a134e6f08891024d1fd327a61b5f9c6661653ba0dab47012e5b8a4bbd33f1fefba90c0d1d900c57044e0163d4b48f44dca3d50e716f865b284b52c41693b90cf84fb00818bee9482d341543952d91f1a1f80175b2edbcc09791d7a1af1e85f9157b90f00efd7b08fc2d6d2c038f0f4891f131a3eaff74d854ee5fab6c87b00842f8055d072fad05f98e1a8a0f3ac93dafc8aa36e53f890c377c3b71cf90e56c0c5abb6720c24c0259655ad24fd8c92388840469b115e56674561823c08da114fd267fe5c2dc5e72f9526c97f3b6b73f02fe67c72019a76daaed0d69915335f37d913e649d58078f17400251864e07b978854d05d2942e5e410e343d0c7764edf29acbb74364546184058a43b9afb0597b209625757a51beee4a5736c705f9a52a398aee0911bf193ebd647008ca51e67c20f09ea8391a404ad6eecea5a57248ca1b2eee60daef99dfc1a35afd95a04bf3004a077c0f73eb50741959dadfd8b75a148b517e644ea98697ddd340239aed8c4346e488b149ee0dd8d66243ad5fa623d0539c236b81e20a684ee36ee28780516ebfcb0a02423110a0ef9247bad38016bc8bbbeefe5beea743e993c771ac4204d86063578c1016201b9e3283c0e7d607acb94dd0de971b2b873e46c7dd8e95674795dafe3a8472f70ef5457733d31e708c02fe8f056c28202846bf67bb7bfdd40703d4140cf05e22cc64d53437c09193864e8b2fbf1aa9281345e288b1e0726cdce0ed12fc51374279e17bd9b83c5fa5dafdd9b88803d7a41161a6906833ec9d50a73fb8e09514975654739b5380c48949228cc4e57144669463dc0fccd5ac989d5e50880a16c71eaac92142741761f95798ae7822fe2152698aa5cf4ac35210aef1caaac0952f1533719fb92d8c906437b2bdf25b92071606c29023749fa23e11b14f81c5bcd262da8a66dc1cd9437b093fbe7a9a2418f123810da74886ab53423e6130e079d11e50c4cd23ef67b966d8928495eeaef278af5664b5ca73b1ca2b1c91341d25d88a7bb536c713712012f63d236389a4e7e31de5fff89bb04664698111bc28ec0652b517639ce8c0db5ea50f2df85300939d36a19d5e4321ed69531611b03b76d92b765c09c6446b5bda463789b0ebd06586216f8c147b59db4adaea21d23c9e06dc4c075e430e6fb2b32855481f5b085647fbb2f3b3b9a7ed669e1c4abe0a1fcd932487f1cc394d40731516096bc1c659e646ed7a9572e367186bf897855665f4273cfbc18b8d221f6c8d6ff41805df3be3c968607e493030d9bb587922f6273352fb508cc655066c82702e7ebcfd7fdca26f43177d20bec55dd34c94f49825f56502e612e8b3adaa1b25715b48b631e0c2eba420f9d6033f78c7ff79a968739ce87189869d59841ee6d847e8c13da53c088f62b4fa844ff9db42145b8eb7edc783d4fa8b1334f48875bdc7de6a5d8fbf417f6f773e0f97e9b15c1844d42436f8389037efb6f2fe868426fb806faf4861180e23fea867a394bee14872ebbbd73fbe51c46203e23cf514ddc6f4193e8675690022ba86fb69a3da9b850098cde51971e39f87d03ab126cf24fd8599284e000d8641b4ee7f67135e2b6e7b72b152e3caa7d8a15550f521a7ef7f62fd1e4aad3feca9080bf3772cf89188c491bf43fdf50747ad9a9d37250629beca3c9e03b1f6bef65d84582da46e47c340489fc6d88dcff0b86c711db286313fa5977562a49329aa3797e1db8f485eefec4a1dd16fa9b7bc02231a4223765a742861b5dc7bd04def8374ab9530f77468ac3b78a4004937a12617a044ba4458a5b00d2340d7a1d32751149cf79980999d60e1e8b831ba7ad514150f8996f843ab36aaf7e5b61fa4968598c19525fd771ebd71b158f6de666463b0fb52cc9836b1c811b4a54a4b22a66291bb98d039e8da80b9c93ed2a0015d76cf2cf21991bcd1bc8612ba6738a122804053b44fb83b132a60f7ce574cba6607c05e5fd73970e7d7909f4e328c54aeaed518c5eba548619541f5cf5a1b5b4f40e37edd904fa9f53eb889334a460eb1bd5e4630e050becddbd7072b01980b0e77303ebc55c3546feea00fb0d4c4e4929ce3feeb77a17f782bc8a37bf219de6a2f5a66a43bc0a641dd337a3bdcedc6bc17a04238c57c78bfcd07e2d3e77b571d4fd94292effcc057b7ad05fa982d2c7142ab0ab1d35f9700a75e0824d1cbd1cd88950beed6ef7c971ddae40de27eb4a7d597bc6dfbcf9716ceee4a30a061e62f8fcefabcc25215384ba689a176388f560c63371a28fa1c58caa0b8f9de56abe37e3737f6a237df47c7918fb24e3fd07a99fbd5118fe530b226ebbe537eaac053ebe9e247c8cdd8b3b87605c455f5cb705fc4697eddccb13e354164ececef71080312202bbe55118cb97114152ad170be59896273134ba88de9a65f5bb9d43a84de1c663a5121b8fb906a8a5acba11125759351c7dc48190724a941903ff0133580bb67db44db6cf0715a68e099ef861de41e1e340fe137334e3da52db1c852ab3b8f8db152b5a4c1841a72fe0b81be714b0d519355862906a61930ed0e0330dbffc98c499c83ba2401a492c8e470be66f9150093ed1a778219dd1966f0f55b4326feaf21be60d1d9079f3b568c77753c0e92620dcbcfa9ecfa7c0904a0077290f77711fce26de371da1ad2b60860c83f41d0399a2436ff211ab6e59af55db7a2b10098520cdbdfa21674b71d6c8ca7d27b8508cf9d6798af6711a4333e21734dfbc3ecd92ac9c4a62f59adf7d82fe7d57e77c8560259b5e9aa3b2a2dc07e29c7cf650c47dfb3d78fdd6a7c409152875b7388c15a85a152774621f144d8eb9fa8c061e6385d235dbf44373dea356c2db27105a3560cc2e9eca5e90d8d0a83ec92b512bfb9e55c0429648aff35ecab22985b12cae7a4d07f60a39393b6ef7cf8abfe62057f8a99db3fff663fdc5406daec7328140f8d3a2e83dd4640b850f6f7b515f3009e8be28e1dbc66b3f134dc36bc9bce971956d4de490148a60b76fc4d9c4626a6259f22da427d468fe968886fd576432324ba9ad1ce053d4cb28c141702c27fdebfc828420976c433c90832491a0936d10920d302246f7ecda6ac12d8b8f8f697b042e088cc2e033a5ae71510912f31b8b5327044b8ba5e3272e591a1561fe4044ada0c88a08b47df7d24b8efa22496330563ae392fa889494fa0d492538b11a3a65eb773d1d8e4e037b66bb1cbb7a2ab783dece9c89e841f1a99998b32f6115309d77c76705b68b5a359c6db681015608fb57b8dea1b29eac72a5429234541357fb8010946d15fd8a658694dad2b8ec5f184efc421f803af6819bcca87317f968171b2c1bfbff762d58fe86d2418fe1c9675e64027615aa81765a449a2106b477a0eb1db04a61a157e887e42b340c85cfea245a233b737016b30a8a29a9a8583c1583bf4c1301ab515355e48a7bc87861d30dcccb81160deab298009078c7cada3715355234e52f578e9642c4ded7cf6c28dd676cf2b1dbfbf434254fd9621116399f0b151597c213e0d9cbaf06293709b2e04eb4d7088990ba0416907e9e044f1a54fa6e5377897c73bfaf5e0f5e22e49105fc4cc4be5b257770fc9b05d54096276c32e8df679d5846f20c4a570c300bea48d91e76e8dd5941f6de0b3fb80f071e26a0700341642e95180d2166494e4b8722ec951a5d32c477d1a4b718168d08aac5b6526fa8883052f8abf921d76a56da7dd32a7297b86b37a5dfd92c216b95ab7a451ee7101a8c96e38b5991ab4d363328ee56f675b7b3cc6617835278b7c839c4cc5322765c39f47b32066897a2f5e42ba57d6e8fd3041d3319891b655ab1309bc31e535c0a953276904dcccf9c6039681051e2f0c1e867ef7096687e8711156488080c5fb2b5f04b82f5adba4e7fdbec4d125fd8efb5583f901d0a0ed3622b543dd1e08d0e1e5b38e60a982fc529d8918a197e0c01aa94214992571af99df616300c8d2b41ac08f9876a98392a7a66c703e72d7502e5e17c14b6db3f7f216040f4efd9381c5ff562f84bb4a6c579e4d17bd05069e71a5e50799c0f68bb2891bacbffc006a722de47c71d5306c0fec37a4ee4784ee0c996a701f402eae66d2e52c60e7c5ea92dd593e36e096e280d12d54a51522242e3e20253dd94e64f778318d68cfe31a1255fcba3d3d3a93216642fb265d9385a97c68b8468498fb1f2e03ab6521d113e20d02f56e88c9f4ea4d548df11b71f2788158c382ccbac225ef57c52ebe6a2f2516b4083b643f1bb82ed0699b49278b91199329755a162ea68bde77c92b06f0afbbcbada433161e78c0f1fd936b6803dda2bd25ef24cc82dc96988d325f8cd226f65b653d91ed4f6f1f9bfe5ed60c7e0460d7c7c1cb52446356ba0a431451ccb4cd7eb615715c981bc30b96c6372dffe9b0ed876b48d0e87d7740b1ad0c7820cfb10651f6520d2ea9fab2b2486664ede774f85e65be635f96b6d395a597f8e4daa651b9320e976f142e3a6757c6856de4ae1a1bf6f41a4fa88489c67a766c6cac38dab9b866fe4b448de9970e8108a2573041ce2596723e68b9822aaea2fc094cee1d5df25f42a1ef9d10b6cb35a120fa8e6e686d4937ada2eb91bb6bbdefb8279090d85dd09a7fe122e977f4744ab9ec08dcd04993ff747b56f122b1cde487299ec94f8f46ae73539f88c29cde54c5e047bcca7908a16c1da7bab306e820b405f6e1a3d2f9bac8f81414e5accdeb07b281f1803ad5f89e3e9e690dc149cacc54cdc3b27490ef9c1d0ddf6b682af2fd61baef5ac4a11ce715a3f6724ff0872751d4600096adffdf98b478c6a7457b9f07049e9021e77a9bff79c961b3fafe5c925fc79b303d843d1178a71bfd4fac67a4b4bedb9c84e484b9dc3181eea8a12cebbbb5e9607dd1bfcfd9aebb3e55bfe5b6efc59a6e21c7c73db9fe99ce676a0575236c34d6a15f4e2cad0fc7ea793fc03eeca24e8e326261a9480865caa07725e913f9ce260ca6abf46641a1a831e64e74d0b3bfbf32e6548369b8ef0a876f464e9e9d225ebce4813e55df7d314be8513cd12f0e618f7c5065da1b5fee7bba8f6d5f10d620ea5131390389998518cb73d54bf29ba787265d341c20904a1851558cc9adb9053d7862aecd2b5156cfa8ca82eae884483d23f826289e4f109499645ec3c7d60e64b7aa5e349daddd1767143aa25a5319ba8d75edde2db695e43007654b5827ae6b17512873adedafa12265adaedd6af28eaf05422727a2200d625bdda894f0da28b26fae6bf764e81f2410d78f4cf116859d0bfc52f0f19b9fb282b55a54b15db16be79cd338dad9f5159e54570a77555568eeb93353179a7decf8106ce7972d4a944b4fba1d7582ac305993be85811214e1cc76ed9433bdd903fc262c1161b0f79dd20d33d624e8ea50f22cb66b97e684371e454ede7ca2f2cd2a7b90d0ab1e76ed0c9c90d94cb40a734800d4efb85060d72ec170012f3642f2c59c78f011c00e48d3a556bb76f87c5702fada95b7fa19293be443c15bdb7adf9d201dc625d8ce74c1160bb6db389f2f632410741954d88ea9065dc96f756ded434c3e71c47645b41c77d2c16991af57cab4a6a534d960a92a52d62410c835330d1269732fb6a357087bbe9bbdca6ed40ca3c47637e072007a6d848cee7fd26809707b8f27b61b6b912b1280d5087c6c25b6b3a14e2046693a2c89ede84fe4b4bc6d4bc0166e3f612beffc4f6c67ae40e693bc71f010ef800710faaf549dd86ee210e7281d91003bee4662a626fbcd7293c4765fb506abc5e05c6d1cb9001aeff38fc7cd3e74945c4391ad1e2c20602d8346fa1add5501ca482bbab5a668d94b1c8e72b1a43ab5d6cd5be7aeb8910fe2a082da5bbe4731ba03fc6a0e861e79cd2e23359cf1bb95fb8118ab07daf83ee0c7ee0361642fb0e377803da20fa8315de08fe90d7e8e8adb6287e058a2e1d30f0d03999a52bb06f2ce3a2fdec30394a42c75aed2ccb47046ede8a470e5c54dc2409587da85a72cf843ea6e91f41d2b864ed038c76308f163b75a58cbc88e2cf28dcf1551885e23f63ed8926f63be0eeeef80e5d880b91d52f7c64ec17d76425fef9db290dd14442541a43e9a86ac810641e81b9778d7504651f4dc67e39be5ab285bd9dcf9473b7e2b7b9a13f3bfb9297b51dd24569bce8194665a5b8e41e7d299f31b08bfcb121abff88b520dc45614ae1a7606222f164ccf5cd26b2f74852841786351941059c918b395442b7f9d628f4851934c88bbe848bcbfdb5c33479920ee46c55caf11d43a47501de95f5d4b5516b92dcc0a759ab79dca5a9a2efe92d5838fa5f95dde3c5087cda1ba220c4f8532a05f6d21583b0c10a81a3c9aecbceb6b0dbd87986c368f5f929e3a264233ccee0a12b7a9646549c850bdd391445d5710d1684292dbd04355f7e5a21fc7ddc70469928e1533ae7119f6cfb5d731dc4467e9d3a810134b78bb775048315e53afe45d04d2ad2f3904592b5ea564b2a487e92c29eb25b653de334af966f17dd511e639aabb92bb69ffd008b7a9b3d1f767254451c549fb0cf217f14cd44880b0d063dd63753ea1866c8dc914bfaa8e05234e65db4c8458828fd94c4f2f4b2069fae6dc6b1acd6b1afd3b1acc5ba75182b7f3623d68b0644c7f8001198f86240844e1a8e7dba786661b8d82ddf7004f4349390ffa1f95137b9bba130f6087c6bc3e8175b75e0feaba6cb7902059500d9ec693ecc6a59b419142004d36947c0d1e1db8230233459f1df044d18e0a72f18447c353ad1aa56adfef515278307b47df8b0dfb25ac4ab19973a862c8863aec88097258185edd8cd14c20feb1d7cee6db406c90687ffc403c641654ebf3ad5f7434f07abd4e7b9eb78a6921e5f6cab1e1891f4e1c11218b2d25927c774aec7b64836dc4c80157d4bdae13a1c92127d7982b11e5cea4d0370f26fca11895b73d124d2906e831e1e38dfde365c1760d173d6d09b15bb4cd81cafc3bc3075bcc67b6b7838ef1e4a3fe729a6a399bb5592e1e6731a78e0b87dad9f6935fe90ba1b7875812165762036c8242e3687e3c2c165aca4793334f895d3fa8d8d5bfe53aa694a58de04cf8fc799068b4841f8200d647b5120f44c9b0ae9bfc311f35f2f07d7e47097a26c24e1181f95aed89b8568ed90ee6d6bd605a7779a6821ce172e6195b45cbdaaf36b7b7ef41ebc053c5639531b1097a9c52e8ff1443468b1c3529e642cc3ffbd3d2bc315ed01dabc89b2e0ae12245341fbf822f2900ef5d62a1d1a625d2cdaccc623bb445a8ef80fc80e1a635ae7a41388903e46bc8fa3f8b6c080e45ca8472bad6b3f3f8082240089d0dbc167dfe6ba0f5b9a83fa62a58592d08b4b93995953e20b2b93a2645843e8eca96da4d1eabc431f5cc1c1e84e21cba14700e7a6a8a36d05a50d6b0bde007bd9f4c97f6be48998528552c1b51c6ed5a1f545fd6b305aae4c20b8bdd668f2a73da69f7fe934bc8ed585617a13cb78a8e9481323ef113641c4d068d606c26d422dd291e473426330cc1c9aa617fe5914a4cfc3418f0fe0a7b4e3be956e24015e2d9f624273ac955b596a6458b26c576a4b8a24fdd99a4dcdc525a56c67c904464b934a13f6ef9815684b226baee683d13318997e82ac2074e526cd8372f70e966fdf27150f7354b12ff1d0001d69998a2925fee896ad6b47898fe8c37c6b5e8e81185f2f35a368377bb3265aa84ad5ff313e4e47b89d40c8e7667c53bd208367b12ed4346bd95aaa58ef3548dc7f9ec130a6164f00c832c357934ed84f602da8c462147c720cb29e8fd775c1480dbcabe1bccf71bdb4a1f8fab45d9e2fa1521a8e450f9da542cdce78492d333b1eadc00281856f1717b13f9b2b78c63d57f4ef2b19be90d71e0de03ec04cb6443400493d2bb7e277e9c4202573249a4dc6ad14987d9f9251d0f72b7441b9b53ba14409d24554180e191500d9d001274829e99f36edef2f1b5b9e2ed999af4335dc02d5d3f931194cdb06eca7900ca559de11596ea84d7cea544fa8b69748249ffa817815a934344060fe121d307879b758b7d3fe5bcc97c7b2a1fd2dae246ce7db10408894d0e13178ef39114d5b000a82caafc6b083a839c51af89420ca96c2421ecaf12358dd2f6f65f37a7f70a417df458f6fe6826d8c555ef959d7f0e83c054da0a5c0de15afabfb2af4d380a80841ca8ab18a2bbc9fa1b06151272cca1b5f07a8bc5fe0d34d25535a1f50e6d96eb034b9d72915d85d8beb37d0490ae499500f179f23d28b8d31ca360db69840db51d1acaeb80af2cfc94a662644b5909074e172c48696a0881cd72b925f5d379cfa829a2dfc2fefb6caf8d93b1c1f8b71de7eb228ded25388b4f5c68c547adfe886cca3b2b8577aecb4a3470eabb1d6f36af646be4d40df572d0e7088537193ae7ccd039650b670d8249e66946fe2b3c8a401ea1854ce0d73ad33ed6359381914c1781fc001fd60ab89a33c6e4821f9b3548e1d777c0221f7078636e68f4eaf2a243c03c5dded4f154e6e137b3478a3e6fc3950241e2be5b57734c6b56621700ebe1d61644f962414b791c73b1fbf56caef4349e022e86c6a8c4b9a6194aa992178a67d3ff45259bedd7a6e9ca9ca9545d3620722020e1ee27302a9d7e6ca9c08fcd47b29033737e437fa774532c9390dda1d3a013b03124c0b793f41bf43d020292c5375df322ed6164dfbc72680f82bc49d5dc4d98c78bf19c1d157d6b687e4f336f94b805156bbd11f4025d3ca4ec9d491c0401d67c7bf5fb13dafac843641bd90e60820021d5034120c34714fe5e74cb56c83826ebf4126ba1d8af78c14032aff502b24dc7a289e06edccca3af9e82348aab8a493ba52c01f1a110d068bf1e7c674e0b8b7c742a78bbfa8fc732af6d4e6db211d264597452e20f112c643944c44cc356728b86a731d373e30802b3ed700b0892ec5014d4444b8cb0e7071dd7a881510b45b5959b735af296aba4ba6f2590c078ef4095d1dda20e0bcdd2f93d2d9a7b16b42c509962b3455684956973c75d2e32ceacd1178d906b506eec9105ac6d038326ba8db7289c0d538c0ab40c0dbc275ce1f3130287481dcee9812d835201c10ef97e5b16cb7ef068cf73d76ee8e64e601b322e7221f3e90877066898ee13cbba9b2db7949a53dfd3bc29a1442c7bde3ea24a1bd755c22a0bd8a99e70d497353ff0ab3411cc8ef625e52f7afb32991d72bf2f91d73149d079c254d9914afb988fd2348db465d10ebe5e39ff5c08a0e5a97412beaf879cf41060f3200c238edd394f74ab38a214cfca216d3a15ef4743a027d859cb0e60995cd0c409ae07e2d064da298de4e7f3545398b1384e168909cdb87c144a825b4e75e6c6e1b1bf3fe32cf135caa74f297ac944a120359634766b1adff3873859d20c37e613e8532395f49566daa7cc2e9229fce23dbb230676c625ebfe1fd9354971e3c9651b392456ae77912d146ea0a4022b76901f3fa4ee69d71e2802803f0f07ce93cec2a8d93e8894e357264b5023b1884c81d122c65891e3cfe2e0ed883a8e5b86ea51fb909c795b4c74fc524113d94cfb9087c3466abba7bde560969a78c6c8d3775dbc9703ebfd2efddc58f3bd878cdd8397d1ed5720b16e90269e99df0f9fb80f7b4a110443a3af871d1905f278b0978fbdf48f3fc130696628b08d191fc65a066cffb42e1fd7ea3dd82b2e903aa4cc93ba09f3279c636b7f8d9aadad81258256328ee76c051445956304f617b2d6aa8d42f60a9626228b3b46e4eef3cd5096ba376e6d7f296da468bc77b2982a7bee1e264bcab979d5e87115c4063f65dca164340b8a59c04b0b424e88f9ebb3c54bfc1e1ae296e10c96086554320f16ce8e635692efb5966593a8755f932ddf63f896c462c834238e38d859f429cd5243494f66fece39c797f2efe4e961cdab3d24459cfbdddbd1073d68aab2d654340889418925dfa30bba1be4f43ed7011c9dbead3b6482cfc377303bca839b3cc03afaa0d794d377c5180366e800ed06398d6f750b78477f78eb2839f31655fc0d420e8d2cd5a441a95c1833c6da56f209bb9a15167bb11bcd413f0734ee111973dde3097ebe480f20e633aadfd7d2e1c35058ca95e1684d949b88b56f8d987d63d989345db1d3a62370d8819f8c423ec94403a930b03f36707b11136b6512b5e0a9e3ae3629c3a228c3d1fdf93d32de89de3c56798b7a3a5bb17a55ab2cd70d39247702ecb744f7b00d660d4669ee683edfcc96a199ad363d27e5f35352ae146c9de0c1e7fc65fc2c2f7184a0b92be9b11b73a488ccf44dcc1e568eac5a876b8ff8e99b252ad66944fd31103ee8e7abf64c9cc256418e4aeeb31eed4dae033667d8d71c14a9ddf693433a1db85c5b90106a421e9257c75e312030bd1ee066dabef662dcaeb8e1e81b5cc0d112922610392e6c3fdec4f30f4c8e7f9a54d9b4b12cfd68e87bdb6a142ce943d1892eb464057e3c397785d75816daebe2a58b23def0b501378c28d825a5f54eaff70d5c02992eaeff56fa145fddcc6ffc4dba7bfa3da665a34579f1532565fa1576822832f5d885a68376b88582873a148f8f5eb99d801202edb7ead37cf748d1fadeae097ad481f63081882cf546aaa97e43c9c94e7c3ac2ea55169adf83eec3dd0e5c10aa0bf94b2ae6560082112844acdb5e250e3949ab56e78063dece6f54e6040e93720bc35fdb3bce36d793786a72b5b67b2381e1e656805d82a5cfc315d26a865f3763687a64c06385667902098f986574d76f0aedc4134ad89448a1499926be0212f4765c526c8cdba7ba2dd697477b105a03f918edc568ed8bb829f437cb5e10b6e447482a718187f06a67bfbe473f7ea256eb7aa7f7750c2d1763ea15306b6688659e30779d7231b12d77f9b476f56b2aa0a3aea5c31b8c53994f11fde5074d3dbb67fe2a3dee6939cc12efc62e21efcb1d95be17ba4a839d029ecb51534af27769d26b7df5d6852005dc1359674aa8db2b587100acfb6fa3a3240be2bd97951787063233c01165c6b68a5e9a8d0094d303929aefc9193bf9254645967fc572e1eb8d0e5ed918daa9a05edac3792734ca7ba9cff2b71f21ac76fcaf350c2f3c67bc343082f6f0154a7a0f4a9e6698f2d8800c9b83fe5020f6df9b6d2600b2280c948bb18e57a61cb7c66d0813dea0f1dc54d6e1948941bf758932bdfcb0b88c94f53ffd8ef765f4ff6e79895001d4bee84565f067f4526b14a3611053e335bd2d60aa54e0575ceebb4f72a73ab57232f4c7997a70a6c2f08b8e93643c4f740676b974bbd5ba742579f259c9e63c6da40b9fd70c51dabae006e1ce13345fa1883aa4de61588dd4ae3e13de1dbd84523b9f9e6ca9059267d45bea8ba3cd246b1ada22e648c4c9a11b50ae2fa026028ba160ecfcbbca03f960e40900abc8f369e621fbd319c3451b786c58c29cfafe7d6622e6d009615e2d7831529a2542e49283d14d35e53d2bb0fa0e5683144c3564375444f0c17327780ac8f24e8d24bf5fdf2a3a010a6a2204b6d894a29c4ee6762016df17f09e9a0f7b157a7bb2f6981b2113a4b18638c58986e75d17de6ad92181fc4062dd743cef2ca8fd8cc6a075963dded4d36587e5f8eb1c8a40076ee8c8b334c2c629d3e95a579ffd1f9b931a4402539d5755716005278186832c7114f798d85ccd48f3be9621c51232e63aec9807d369e39e77f9668da6f37c28f711ddd908c2351fb87e76d6908dbe6de201437c60eb9394adb7ec969a325598f8fb40e244b741f9e3a97cf6c248b9e5b7f5b7bc0e796dde8d9bb145b6884128b7f5df74b8a36e5bc88b62ec3203871031bc361bd7e5db1ecac7d95398bafcaefc70b9f7134cd2b6de70dc4747188e3f18136cca21c863347ed220facd1e8485ba88cc6551e97b017b085f453d356ada41581457f86e5b0fb52817543427826d34717a5b5f679178246912456a8f7a41ed5af1af4d8b7d38023446427dd28cfc0cd76d323b2f103bbad3ab8355ee54ba2348e1b36b5f6cebcbd037acad027f6e5d883c091f1bb172f5021fe888dbfa7ab15e3d031281a9d7fd656940aeed0b3b785c33c4574fce26a3d47a0e550deb8f64e23661e1dae77a14542fd7e98a88c493f71e5bccf8b80178729277e919ddc43682abe80dd74f5f26bce66ccc756e0fd783b9513ea9fc271aead57db8de0a9409d3f934c024b6fb032cbc4ab804ff9d888d890cbaba3ffcf9e6887e058f28b5c8c41aec9aa3242b35a232f1925b8380980d8e408a9233a01090e024d40853e4c1ee6d38acdc15eeb15bd422ecc05a78b1992213464f92e68812fd0cfcf2c6d166b83537097a3d532ce00662ace4587cf494f6c6f838b3aa8956af87f91f9401c59959c1a196ffb900e0d818957bfd3a9a4c9af2b712e8e13cb9d77fcac549bd20e4babcf402d2dd3e5344e724d92a07d06a205de05d2f1f1e043d704f5c2a7f9b7b3999ed617ed79aedb91893b42b9a3832bde2508ae3151a8379b09c559cccb9126a163ebc199bec07b3c3878eb4c7f1569af34e973b70c9bf4f7bb52d8f471336fe7ca878eb69159b9866de1a461d6960f914fcb744716060fce34926281f0b6fd750d61534bfe4f469bffc5b6a5fed25160a3db3c16c5a88e1290d295a7ef5219d79ee8d5b24a7f653667f89b4293e4d83a7f1ea5cbb8a253ba63303b50ac199089b79a098f11ff14f929076f1f82cc2ff74ae219afb8a4f75c12f5a96c588d4a0d866003a0d4fc8a60092b73b69412383e481ff5c418d7a324b0ae723a94fc8f9f12adfc16321bb40c66f0d258988c894b79b574d236a9eef0830d818638388cfffbb193d139532d050711360a8264647a0e70478f11401986eb64357ec116a533bb0e616dcf4b2da388325e8a4493097b0c204488fd4bd21231399348988c002afa07a9f29eca7bfc7040dac4cfb42ccc2e88f65518424a6c4cbaa42a7a306ea0533ddd502d38793df3e0b021fa546f651f7988298813f75321504100cd117ec7e2aa7dd4568c01f412420a1d07a47deb1c8beb3097592552c82aec3b7febbe62f22ae9a13aaf7677fe17bf2ef6e48dd2dd9bc2919964421523c9e5bdfd4b065d9627dd63ca677d7da9cb41cae1a96da92700dd3d6dc6cb7e4a0666ebcf1ca971c5c243d6a25a167d1e4f09921957a61a266abe4e2e36027897973a586a530f90f66e291848bd1c683a25d8e874fc2e3a22912caaf24c8cfc98df53a2dd0a975b424418cc1729b1e1bb9c90bc27917eeec19a9d3d2a35b2bcab3b2b206e69d91b38696b1ee719a079158c06c6d3aea7165f28339dd4e65a892be0591e0f3521b22620a281292afc1773601b06b73dc378218e23bf8e627e858e02bea99d18557ab5108171fb810e18a671c95e37c43446a4a08d1b83f67cfef4fb44fc614221f8d1ab377a35d22337a008cfe7679d5efebe651d0c5b0b8e19aa4a79edddf3de219fb95a08369728e10141db612c1a18edecc735409887e8a29b88fff6c3706632d078ee896c988d6773c7ba3899e3ddd3b2daa759a888202162b54d6ef89805c97e819efaacae3112f98cb18eb5d7d37a4287f2781248dbd9475fba4f16604b4721e6f985f6c858e9a8da9146f3ba34b4d6e5f514c1429040223d832fa0ca91a1cc964c67fe43c24f4a5ecb66a888bcad49aeabe77ee7879010718109ecfa64cb4ebe3a8b8c8437acb8ad3603cbd87e1c00e688ca7ae17126562f10b62e69a2fdabe71a4d0919dd2b2026f631d86652e082999dd1f3a48703740a811a8160eba46e2582e5dbcd63cb2040ff6721154d5c918eee95e33e9e53ea97485f9c5e46aa74f8aed10f5ea9acbeb72131701e1591d87b12f2bed6565af529acd0c32b36698c9fb6cb80497541e69b01038a20cda79033b28ca04f1064006dc757fc3a0c045a598a86d15c4c5ee875e870fdccea813a10aa471cccb10ac3914fef4a959d972c6c101e25115477466e860ba500a248baf3d67f17a68e9d50c63aaabfab9acbeb3bbe24a6f81ce8abd623fb55d50499151f42122a1ffd0a71ec0f9334937cd064125458ac1cdbd2074be2cd5697ad6dd5ac0d8368610f402d50f6a01217974271c175542be1cec2c6d1e2e639f1c7520eba02f38dc86c62dcf91ca7bbcff47bbe6d29861e2dd0c47ea2ad91082e4cca6205c58bf0342e01f8d2ba4a474772a631b2605f97b680577c1223f081c4c4fbe8fa4b6b557aea8fb829f243c623446b5c2b51405fb3357d8501abc6ffcb7182a724af139e0ce213d4f9b06bbe8e59ce49b0143fb77c5dab42c1c8cea569d28022c5e05e0cedbac56fd24fc6f32e1a79469acd83708d57da6618cdc1d633a31c3b8bf8de8f37a6bd8fc4af9222d660d328d02513c2ba4289c0fafaf83d66fce667caf40de87cf40b93d609b307e4760388ed810ba5c3ad7e0f21660daaf823268c4030e08b0a88af6c1863785120103f05946855a33419cc027dfa25c023d2e0d434b38cd1fc75e2edff5e6140d997dead7267571b2f1392fe82ff2eb5962e8750c34b96f9446cdfe12c1d784d832ad8193d3b93d69b4db1225719e6b1fb627c8a0172eccb693e3278503bcea31cdb98d554c22a8b0e744c1b0c6e5be9c0b14ecf11f2db760b13bd8af03f462aec9e7e61780bd8d34f9e704120d7952a2a1e4c82d3ccf934e381350d1ca98ae5b91a6fb21c779e3c782257efde9d41a333697b7c6d583ad597b7f96998a99854135511b9470650879907a33608d3d53011600cec93adfafec9d44547fbf30e1bf67f8b0bd1d7a33a9704e4c1033fec26022d163ca3317005a0cc61adbadbfb807a292f51454d0d858acbf6d0a8b02b078d85de27b8216ed9b2e92e8f28db2f08a492ec01454491b57e3a22e48d40958378bd2455e5f895b827ca6755ed8142543442c068b76da0ad70c6e7951057e5b8a16ed8f2ed5abc8f861e8b4ae7f7ff0e75dd8c4b56e087f54d53bd21bed76aafe1ce20dda291b00d1d4388a772e87188626e5d8184691669edfe1778f7f45e129599e9db3fa10d21917562e4d24938e88a0311f9a726e6a189eeb72682c8978b9e0cf99686b2d63528824630ac0b88cdac039de0b8ed44baadc5adfaf50d48e8491b0ea5edc9d44a924e12f251c4796c849cc1a287928250c35490a3ca6ab0ea304be3e2ae20ddb0977e3bf94d6a052c5b106c19c714276b5a276ae060651d05661c08590be693387b49fda59bb87130a4df0d2231d368805ba0185b45622b90985bfa7b2573d9857baab38a9c6cb5889d30bb504b7f4f29a2f0cb86a9954969438abd664ba0b9a76f250b24dc23ad92e86a6d60d7a8b94d58ec7c956c530a271ce5c25c6f392dbb64c0d19fac3e20940bb4506eedf95c2fce299d42069950e344a5c82c3683d926a14815623b8450f4edb4d1a11421b1fb28182d9d8ac16b9741d41b31da5119d99b1b2f0b214328faef84a213b337b60450aa964027dfcc90033a6ff62b50924290cfdf096c60526d7d6bad14b50305c2233e58d0598de1846d44dde4f1ba02fad754a24f690f946e1c0f58ff7f07f877cb3435afeafe348193d4a7f2da00a5a786ab802c73dc72b3a0aac2b5e5d38f95dc2ede76aa5b9a9e00045004dc4f5bbd386df49034bb229c2a040fd536358d45c499346aab09ea5ef8f0c62ad4a04620def34d48dba4feeb93bf9483a697ddcfd684492de1bcece38acef230ca8f22567c7915767262da309da32d7fef00a09f4c9f0de12852022a423659023b625a2d1e8d00e8754767e061ca9f3907c313b998620960f84d5c90daf045f23b574daa96b3fb049c9822aedc83f1db0bde589b7ebb60ca2ac4f70f2e060a22cc86022b28e6a95e0310b401b5576cc49a339319074d2ce0d6611633b945f51d9f4deeb7e4d2bcaa36c1b3576cc3b8bc158ad25850e4a74833aa7acdfc9da54b65e62baac07f85298c9ef047b088cf235f674f5806252996d9dd9c34b00f691e644c18a8e413f43676efecc49d89cf9da89955558279a322fedbccebc3d7b21e9176b9e75c5655a29a9615e6ae2263c60115c8edc80fc340866e59abc29cd03cfb5cf559d4960f3eeafdea0ea4c1d48a61c174ee6d371fc8684707b1b1c2bae1883c4875d5ae16699e1cc7322be469493404087532309a723a938cb1e2c7dd6fe7a16781037be5ad62b1da5180acd3b072a2341513cc1ee6d85f446c8166211d3707d134a9e43f21dabd3795e3e9565a76adf274a33e113e00f8391a62548abe51f000d8c887d9464431b2afab03dd1b1279a7df0aa4fd9daba22e90be294fd0510cd95d7378c7aba1139a8ce42160328ba3c69e7f1b76a2ad1edf8d5010a3bc516228d2618c187128f19adf8df94a349960313c5996125055c6bacb62bbc86df7f3e82be78c0cbf4ce38ea4fd4b36f68c9f55ea721685e5c0c9263be42d790b5900fcbbc8d6f3c4ee85e1c67bf09ef85543933eade5336ec6e58c07ddbe616cee3dea6318530ae94b94e68598961356940e753ec3789a68b15701f029fdec81f1cbd4f5fbc1ba24fea5b180fb6b9b75b8492bf89b409c830b0f29f0856f2354280989b5522c72e95414c3b435efc6ae74869b5cdcc59beed9cc40a2fb3a1e0b62e4278fba90c6a279a41d120d1f350f9fee591aa9e30763138e8adcbc8b6c1bce456e86e390ca3a8a6f643d0a70a1849adf0cd22a49ffa0aeadc2d0305b64acc92fe39c1d9f038b920b85da8749749340490c6ea8b614fee8475721276ae749a92461380767d50d6ec3ed43ea258afd641331c558a02171a15c0413b7f803191011dcadb5a42c35e252d7163b1331dccffea15b4a9343862889ec2ba30ed11515abe21a8746ed82f11bf48d7bb189380b891bad66544f94df4c853f17432a62699e57b58c1aa9715da6cb6a12dd440d236c51a5b48da0377c3c046baf491b42466dbcea196408aed19b85deb61b5200e03e9705824e7901e856a060431aa442f919ec21fd427553aac16592cbca5d2b9235715e3c30475e4faf601487a9765b10752323cd76be8bfefc291d41e24c1553ecdd4c2210a92df48b66b4a6e5679fddeb718369d81553fe1afdb49c466f944a8506723629f62805f9bc6ec46829b520ed8ed08714b297ad413cc6b32f068e7b8d18cb0bb11634e2b83ee260f4f4d103aeb043e3429b0f519fcee02e0d5e681bbc840a7ca23773f42dc5e083ee5006103525d0b545912e6b7c2f7d4e00a85fbeb89372814eb536ad4046015e98fc263a3080a32fbac469bd4b18c0808dd7be630f2862c472ed08d8d630396401082de9b03f4422bd0c48464e22376963eb0eb3000213b3d93f053f8eba664a7ae5f4f6c6980597b549b4073cdf00c03db9451a24c90a3e250e59ad3e487bffc48f39c62e1ca279190ad39c5a64831b705fe79f1bb6bc290661b054246111d4b69bc51407b7709039578cb305122b2812b402030a7a75217e604227ac078f831388a356c79244a0b428edfaf57eb0ae31711f22f0504aa4141b94c3349421031b10bd4f3afeec6870805010c4459ea41c34b7bfe3d4a58ee19896d2731ebb90902aebb35b8935ab318c7562c6049d578f85860e433d374febd42301fd48e5918ed98e1c455a78767ce936ecf385dc71ef709ab3ca182ba3ea129e1a05dd5370b4656a7fd75ffaa2cd1bc4ac580e2bc7f116935cbb0d4dfd1668d26febe65ee680155cc787c864d08df0b5f152b49a512fe76175297d1f937073c1a13d1615255e57f26e18f82887a07b3f60c17ef50c67e4acf6eae00ee0ce06344759fd527e89dee5aaeb89b4457f05584c664d531f96a239ae26d3b4d0bec9150f4fef6365bbd9073e4f249bd5bb3274c75e76ae883783c91acf1c4f2019fa3564da2a47ef558a7ebf59d01cd33fbd15486fbc1169864a4bd3fc9a9f4f4f2c22ad25fc7e8f3c4219598c805b83af6df6a8033ef1c031880d2a15a3126b8d68f0907331d63609a56505796df2ee069b7c9675d644140f50131779d42cb4e4c67cc09a8ace03b147e1a5ad3ccaea0985e4889f2ffc7caaa04acd7fc37b139662d81fba9d35e6b34fcbf5f25041bad3f2a0b0f6fa5fc6fc237481f5020abb894090a639f6b14836b27961763eccbfa5d6679e320cffaff7b39f45fde77e8b8bfa464176880da49ea62868e7a666256733f4f70253f6d68958937aaa138449c16fc0d94fdc2a812104bd09d22f848d00d0b45dfc6699b0052f2e9f6b603b91bf0277354ca8acc7e85ea5683d4b354e5f820fe0178215b4b5fcdb73fc55aaa2eb2abff01114af40621082644dbbc916195f07ea51a68947afcd8274303aabcf0860454ec13077b47fc1e6654d7fe7954e67c63f00ab885650aaff1beb1b7b6cb9a808dcb7c73903cbcc36a248c0c24a90b33cb405de6afa97de68702d2fc2b2a64fdb70293f75f68dc551dd1608cd1b441d775feb2d984ad3347ade819dee781caea075affe4e9c937f9c1e0896b03740f113251b9830f048a1467321b39e002f9926640c5380d78302a267663d93145c2a68354524f13db2dde2912ec5bced4e107b960f82ef7997ff30419fb4d21d57f407ff9dc3b8e8246125612bc08c586ba7070bea4810c999c9b243b8150884b06773672ec70a673e4457ab763a674e96b4abfe5744bc0f5fdbb7a5b10b4d3ad990ecfd4fab62e24725777c7e9fa9a64db51ca3048577e51d8e9de2fb7357a9c02abf194806bd52755f8872c47a34e47efc31fc410c22b2763b89936bcad7e6c7700e04deaae0a2f78b4dcfa374fc0703eae4321118792c10453f032a75cfb3f078acda70913ec124b213356a678870021c8fabbe4dba5406a0a10e532586d3a8de237ed1c655886d0583e0e2b3def20d282a35a2b6fc2520af59904b94b250c3202b1c19ca8bcda6f798f785524faef1f726b1c03e9bcc39bf8881ac9b36cb9ca3f4d2bd92485eda629f1c0414f69d4b38edd5f4ee0ad5a955facc3cb3e9e143baf6200536a8aa5f8710eceac0784679bd326a9d00d1a33f2cbe46eb8355c3a943a783fb9ebc6f0968dcb5264a5feb6a168fd15a8ccefedd33c653290abc0816839982aac20d84f9f08805dfbd4e3feb48e38b58c8703a778c2e27c8201a022dd5bcbcc646656dd0e35298c01398ffa7c4fb1c597f6516c38b3cf80e68749b1e06a05ec30db1af45527bd23c9e8587552c9da09bb0ea3e041176939ded70a019b0a902c05e11fb6acdd939829c95c32f2f7ed00d4dc7bb627ddbfdc8dc43a8a62b24301d266d15a9910d7d3d487e7e98362b7231c59e318792de5bf2e26732f8d103a8bd431d286722e0499c333c2b4ff00f69aec06a685b628996d454aa01b0670ecdeee0ce7abbc9d61135c6598e69906a0adb20b23ac8138fec086818f3108a1815629c221d9f7a3bc63604465491991729af7132a6089def1fa2f1f104d61359ea03b2abc417f690e4b75ceb4247e342b988a3ed8f7527458b66b61181252c17b57f219abf33ce78941cd5a8d1ca0176d8d8ed7b3680190f190ba94c09ff0406e52190db747f06e094c5968fd9b0901ee5cf79045e58c8ad3351a5dac87bd9b05921995bb4f24d7f79a4eab650ef6d62563c2e57acda9c59a46cd56778a54f2080b7ba59bec96eddb2be98a4d9caffba89ef4a9b88991b558cd224f354c458b6f8be47919cf5326fb709cd806744a5b6d0f67d924dad0da424fd66065f9573a71ba97d1928ad19948c873b34de2234b66d3911f43565ba9a1723189d989be8566c756b6a954a35f0738a9934ec266f7407df9f1f1c31dc41f74bb9c4a14101e4569b5f90281fa308aabd5ea3b0df14f1b8ff2acbcb3ec6745dacf7d894d76c07a46a0508597406e2b077c7a4f94700475951dd869daa45ef60ac35ebc394d44094b12363bac67742713db7c14240fb3aa4599e05b7a97fdbf3b959396e18b494ebfbce6511cc3177e06902a77d26881dca4230df37badaffc28436af86c9b6384ce5824d5bd8922594893c266f58eaa9ba5553ac32e3f41a0876a6cc533aa671ea7e6b2305132ae4025168040fa9013af20aa5c31eb5e4aa95717acc3313122a1236de2fcc9e144bf1758c55ca7958c167be9f1a0bdb9550194185c96fd235e0eceb555f6f6d0eeebe1b9aa96187ada548ce6d0f768b805d6231d2858871d3544a27e93b9f4e493d0664a4860faabdb326101f2841256ebc9fdd19cc8d93b7e32a3403064aa799cb084c336c343b5a3c03962d80fbc2b2905654741a2f15fbac7fe9a08ccf939a0d5121f6cbdf4b13b1d311cbdb412f1113104429d6a24b4e473c718df0b8dac9efc86d07c9e77bf51b5ff4894b8b29723690964761ff41a77db0cf58429ddb3ce5e9ad24d954b425acfe1c0a569c86c00d767586bb24cd86d284070e48f7368bf86eea763d6bbdbb47232f03f1460a81b4d3ef44a70bae3bb03260b21594ae63297502913af89103f09b239a25608349ec454c640046313d45ee8786b19c2ecccaf436730e5434d19b9985a5af118b4de4386c3f0d79a357b9ece13fca172c01ad1626499afd027d3c1cab1fcd93acce7b4b1fd8268732eeac75f5f05af71c8de73342e9ebaa88a3d723ca16986315affbc5b12560e4b951f294e6812448ac8a0b47400930aac38315e6a8eb54d530a2f6ecee8137403d89f0a3d1b728cdf62d4b8209baa308e6e14d02a8c1b9bf426c3d716af71e31f482eb6c7dd05e77ad9f763311fa7131f4ab816498ef512c236fa7b345081c4d43d1fead485e7c71abd24f9de545cd3abbaaf7df2efc64c20249d3f24834fc53c17c597f7f42bb465c4ff9f5f1de008fb3a9b4beb9332d3e0ce7825200abcad97edb197e90d087bed9b3d5baf2971cf8f159db3b2e3826eb6871b2f08694cc4c6d1c04f736759278bcc43050b52f0bb970dc9b8b3968f9302603053419cd1006b6657a2fa5486a0b1e10ec19b84b3911647fdafa45460ca2a007366bed8191aab8e3b0dfb8c1042b97fd885d5e1a5890e59f87703ae03685cf217cf2bb7aca005ba2d35f2727a610d0e668abc6ecbaf2f63ae5ba0893c4988bd73e513eea124a9aed120c6b25db38f1eb4982bc89d843d7cc58ee48723ed7d24e06a6f2a47e28c67167afc0b104d9c1eb566d5a0d8486bee68dfe4d7e309159cf12d9af61270aa09cc67c14ce96d66ca201fce3e569db789d841ea1bbed309a056ea7469604ec783d68521e3ac12dd39f1a62b4fe1bea807b739e9abb75888b2cc67d67837d6d252afab07e6d6d328533806b25261487c05ffe822e0aa824bb6dd0228acae98fc3137b082a72ca9c88a14d3934e4e9eff84a108b914c4659d92c0058bfb76a597e8cd1ed1aefaab40c90920a5a9f0a57cf7489826595355836688ba510e3ba11becdb247ea0f4455753f85475647b15527ed167a3cb5905d538c85f73de3741538cf93fd3ec52f74ed9c11346759ade1b243778e404946c2cf05681c87fc2a1b90073c12b17010e490ee6fd85e721e726892c9a4e63b57c3efd9364540369edcd39228b0850f399c659809b42824619d5768a40b2da509b4223acaadc5a469e9778f27466dda746d98c1e232c90cd7833d7fa97b3fcaadfba37cde8c427c9df3301b5f89052e64a87e3ed624d9b691acce67b1d74f4f893f7631b3940550cdbfff990f881ae369ee8571bdc513a7666a1a5dd3bc2af04c7c459983a1659bb367b7de48d28a9da9c79157b35cdc73f113000d98403a3a5c858d9c8f2f8c51f16f9b9aad76f6ba7fe3b998199c4116ba705b2ac9d5a9fd08ae3df67938b270f0392dc1547ebd2dcc43cf5c552a70ff72839b20f473f4ba222177f10e4a26029768e48ddc08b0588831842c52429d1e42777098ab80d845f6664b1f8e9cdc9520288c100b506a65640c1169c16f69b22c7e01d6cc8461c4b309d9da16b7d7c516486e45108163d761b520cf1f9a044a84e6ed8ec7e1ad44cdcdec48e7d5da5ee2731a89d92ec22f7dcc47aa7b838300ce298f2deff1dfc93a536f3bb19f71c3c533db29bc7ef1e397a6ac37ca2069020c19051141bf7fcded35459460b9d81dfbc3282fb86a5e8b11ed0cf01eda2ea25e456e4ac7bfd894961102e91371109bc8b96b3fe6af482a7244f8b7a4a2d610db46c05b6d482c61d5a2b127b583e0228e2ec8c2bd96a5504af5390c78f7a802a5119fa3addbbcd6f057924e07d16bab66921850896fe0df65d52b7f721b27281e98d586b7fe31026e2b4b108f6c45d2471a861dd4faa27fb1b8bd128c7bf199255903852a752075c36be25b91865fdace8761485ab4531bf7ad6fcc8833a2ba5494bf4872840458a0c3d7e06d86995441c74cfa2157cf495c2b94a1993173cf376c0d067263fb1bbdde972bad6ff7963d48c7439fdc336b080f09a3d8af0dfafbb1f86faf8441c5f45d3b0f733c990aeb96d7a6f4e6873d1400447c0e52714bd2111cd6c647c92e35aa3d6dd8eeb7563328fe4092618e043a1ea3324e787b5b16ee3808f94b3a8e10c46b3cff29676e03786162b8b36d8dcfd4097f24317ef7a6ce990bbcffbae55899c68d3238511c3691f87ab5c585346324eca8461849bdb0deff666f5b2b7cac6e879bc3965b7c3bc64d3631386f4529b26f62e55c84ec19ab1e050c66e426255276711b793c7883010d5173f6d2bdfd4c01619e8bb93adfa5ba0a7b53c554f60d5850f4dfb51aa7b4d3924086452da94ca5fa7aa49134d3671b8fff6cb348f60f207bde67137c94711528e9216ff42f3589a5407160f36817613fb8a95f2a873a98368021dcd29712f30ea1e599d9776d180fe1037f056b8dca5c263119f43445051946c884b853c3b7f35d9cc3c19b111b618d92b265d069e02d47783224d943b88b699eda593836a069aa28b4a742a40139550e8f1e983196064c64c1dffa2addcedc56e7e67b5b3899ce17a2e3b68692f4fc4a5016a208aa62df4ffbaf2c530c26d303b7a40a88cc22b8f53bf32207a63ed8f4863318eb3db163c39b5e2035e327379ec802c399c506ccea2073a39121afbd0fd44db05e8066a079a716276f5b0aad29e6f1940d6e37a615ee8d00517886f5fd9081c577399c8287604f411ba7d4fe389a700d21a76be008643dac89353e0514a145211ccb0941b319f4ed8bbfe5f48cecad9aef61bd48d574d5ba9f6f92e7c3b9cddb2223fd5443f1eeac450f37e1ecda7831dc1cefdc0c07fa7c07bb55be4ddb617ff85fcf035232a185a5deeced8ad4f343c528f2ac03830211c59fd83167fcc33ef1f5aa819333d85c56bfa479ccc64a6f72aab230cd21b79c13ea76f093d0b1d41d1f8a1eab736fcb3ffec39dbc504e4ae346a1d8610132206c5970aa4c6cad07836ec38cdd05e706ca2921cd6f5aefa834a2a0c20f36ca5bfe572c57cd106c656e0efc794c72d7e876c22a115e97895d4080d7618a9844cd313f17ee8080576317d0ec509d093859811142d389cab591f8304318ad6a7dd55125f31601e10e036bc36522d814ccbf60bf17c72e34feefc522bf5cf16b297f0e5652943204e2575cf6f7d5416d1dc163ca71df5663c71db86c63973d3a6e4753c186c3e0e9e7d10887726c5aaa10532ad7a91baac9184c919247d1b2b3696fea144b9e0710b08bfc1e03552188772c5951b27070e60348659b91144e6fd666fde838d92cd5ca788011ffbe0e710e763d813af717b6d190e14e7357b0736acd4e3ce69620724cd966bf77c00fc0a548a738f22d97e458e75170ad5b5553336941cfd2bbae2dea3f620daf4ee949552ee32a5ecae59ec876a219ea276c0fe29bdf2752c9aadf5060a25941b829a9138324088c796f421f0a344f3c578ad44edc7480c6a139f6da3ccde029264f85d5f11f6e7748a02a097dc155c21787e5b7f7f4ae98589f19dd42f27707139e1c1aa912033debb934afb3c46ab6414a5138938972e748f4efa3cc6075b3e4f179afcfef495fba457186d88a5312d004323020fa235244e08dbd91eaa5b461bce15036f56a5e541ed4de6dbb5a355e7c621f5018eab344e8d36248ef312feb3dee74b5f6e4135bf95ee962634e307709e25da2e43de61c31cb501df917d36d7cc11b24f021a2b185ec547a9a5b77b5b4b88d9abef3ef3fb53a9a583ed299483eb99e0f2556894f80657d8fd97f3d2d278e2125622d01f02e86c9e1e39ed3b0f3f8732527b6fbd55bc127cd9f22b92abf67f0fc52e7df586dc33293c800267b1657df947267b704c28f617f2ce14799fd5953ed342ce6a5b6bac6404809701057040101b328ce4cb9118f49437d430a9a3c0c892c4b10657aa473a82802d9b995bb900125238c2bab3605b8cc9e0066b779c8879e334dd49583e9e292e576f100f1c9fadc1dff2dc6c0ccbdc18b519e324f8ce002b3ff8a823b8d1345095526820a6a46a6a7c0413e2eb9a4e087c8d4adaf6d080cea1695c345b451582417143a1f68efeda7761d3694276357101bc1f47b2977dd98e79930cc959b8e5d89664b1fd684b7f1cd4454b06a56303f025b3ff6dd9f65211e568f20a311c9cf7ee7958d56a8d852ab68f7b222a7fe994dc63d8e164380215e040d66d946372227400d6f91fe7f26b23dc5602a37c22fcf0651461621ba27f745f837f9a4e30f2556a5c1c89ebe7d2427d907afd86c14790d005d3c0e0d5f69f58193c5e878205099e6b5d6c96b42d0e3d494dbf389952c93510665e65d89cb2f1ea0ab7ca353a0613784461867e801ce27b8085adb4483ab7942f77ce7f36a55f5f804d61b62678c7d07145e55e28c518f3b41ffcaaec0c02af14b0ed1690e4496db2273f1385d46ef89a7e072dbe05bc53f6796345569c2cdd8ea12b6ac4b4176d2f32ab6ad6bfa696f7715ae8a1aa22c19b716b99f05114b3d7cdd375788263b2d187668d7c7492301c4606574c5807d712d65de800a26347f070e0ae7e668dab7b734fbd4ab03a385c279475028bc7466439b7a0b99651af70f64bfa83aa3d7810a7cab9b876e5912d0ee662ad6ca8a09e9b85238c10553d8611a9dd48e5f78392ae8045fccf1d5224a3a110d50ed1982e01810bad91c905f8694cbe0027da03b4c4c624c5e4807622548de20374ee16d327dde53f802e483571f751632ee9e7fc872901d537728d7ad04ecd859e59aa50d9837c73cf29b530680745235e3bd4fda79cdc781b3d035aa1cbc5be7191407c2a14c2cc8642fa3c86f16197c6bc38b6a28e0994c866501b7ae43a2a180075696249b27681a90b3f455fc220f41a2c804053ac2c8e331a9017493940e923b5a877001071cf525c211f4c0e190c43ddfcc9949086be74814aa5b319608debb0d6299042bd98fdc42e70bde4936f6f774fbbe6546879a6dbef660d4cfe3768c3af690794abeb844cd7037524c623225b4189768e602ed9f9c70507960519d74d2d7c18c1a077cc58da07eeb825683f0311ec1a06a0120d7464c9692e190cfde909c0614cc7feea8b1dba53aae01f7a758259962aa78c7d2de736b97020a1b082efb62a506371ff5124827ed72872f789bc6cea2f387addcfa2ea4dcad93e9b25bfaa8cfcad3bbe9101286b080e1dc696e403092382d1a7a376c4d7182382141797d5d4ac62089fef8d04da51ec6003226073a90edeee8acf517e3d91466c30239763f3117a8d0553108d9db11867a30f5015ddd37b1b802d611589e2611c58d132f5d9b5e06760a014a8d7c71384c16bc49e9b63d2ae702d232fa5c164f874bb50d2481e8992e6a559feeda25541ae5bdb16aab27e02966fcd692c0ff9a164c54326c4d00f96302753596658967993d96d4da6843cd3c320fab05ddc81d1161b4582f59c4c677e94d2f95d9446d6974a461a7fead6846625648b8a7e2f22f862068a9be2d0f0ee566202ebf9c81ad7d4209e2d87fe23266f5e545e0697a23cb229250ee61dcabd6d7db01ec417b867680ac78b982f771a25890ecc3b85dd24ca17652bea03cb3cd7621b11a533093fae16db44a261b40643466f1367dc94513ae8c1e0049e72eae5eab1f16c10fcc30a48ee95b83b0fa126d868bd8be026224347e791991802f38d2c5ae194056f23fd336b59aa3314d5e5b255207e32a42206e5174a8ae6ea5a3886df3a35b2ae092723f706ce993127eca533bb8b188be179422a4981e682884ddc0df546051986a45fdb12b0c4d0a520a6571b7cf3ea2eb3448f329dd6b8ecec74258971c37901d26f6cc5da5830e46d82beca2113a1e459d7b4af5a12bb2dbaef700e2ff478c39c0d19f526382673965c75dfa1997386a6fbcca5cb7685d52af2beef79b0577f792790a980f5e0af59b2d73bbcafe38c720c3878ac9f3eb718a1e1001f01a949b856ab2c910b56bb2c638d87b714d72c460aa2abc36b27c139b3240eb67db5b476bab3311e1a1847ccbb80b5c781f18044a1461f9e8effb857c28a4ec7de19b7341d28af89ba7aa905e35faaf7b267dc205888c527015a74b11089acc5baf8647118047e59dc6ae09b825be5d20b1938558b09f2e1456cfe7450012b87b35242f6319ace8d3f01e873348c9d2db068b843daf189f7aed19f4adb4acb6d92933abfef29c25f5289140023b72a56f02c8025b153338684109120aea9232c36b8c11d99e682458f0c645e6b182e2818665335302ba3a1fd5412f5d4c43a2f0f8eb13e02eca07796450bdaf7d446e45c4c1af5bc3c62e4655f0cbc2856c264b30de68d9c49b6835db16f7aa4e8a2587195ff03a4d4fd44a1d5f4b0303d2fbac287a0546adf04619ae9937eb23f49b5806254168c223111f2298e220629d1a86402618205c85e63aaeb8034dc3319cfceec9a61002efa50c5b0077f45f0859c50b4462c73d5af6f6aa06656d1803ca09d948ba3a58f14f75f2fa2e857839ac6cec04ee0873afb6df99bea81b0aa4e1df7e32b8b52b583f91e8922cb4ccc5ed623d42c032e5695a8dd0a4ab905404deb184bfb057b64d257ff36655319dbc5439a57ad3974e6b95b6b7c432f7071b57a71a214e438180ac782c0c62f879ef009c711001ab4566f2144f1639912d39d867fd726fd6e3ad32b616b1c1be8437ccfc63e464dc5c1c513e91ccfc7c1b6ec12791939ca8e221567412b1c3d6ad0d604502f108802322102a8ecdd4798d746d3063ea5638efd4c2d0ec3f06be80596bddbc66b947b41c8bdd71903d53baddd0e14c6ccc584e1fc8030c10ce92dff1960a4bd01db57927f1ec536830d7a301dc15f092eb536bdb267124796a58c4527b326f92883951c79827c8c894a21c76a475ed43b7d55658b3960e37d131221dfe2caa611afc87d24328f2841a1ff978a148f8beec78b80c7c4e4eef9c31e2410e0c4cf36222de3ba18b102ba8e70425c382eb03feecb5f5a2877c554b7d54d4a5df52f36bae2505fdf1898cbd5e26c6833d75ac171a39f9645ad21198fc1ae577cb2cc708fc77eef3cc3974a7d999d33f93e0ea597ae530f71d863c8d6ac1a75c98256f4dfcee054fb41ccf0ad8187ab49c14c34aa5cc7e509968018ef0a5817f62bd30188637d512691880268c358ca5ef58b54cea699384250da8d8190ed93f5e801523d9b83d6235bdf40a94e199528e4834ea1f96965238b30520d819924ea56dd68669be2c2f844c7b05af504432a78035f5b8726a5690ec19d643fb2e12d97c487a10336bd2c010acfad88c5cd2bed132a2c2f5263a70ba13c4de28b4afd2588611df8967eefc6baa960ccbf8672faee97f295979ea03b4aeb1e79907cfa66b959298a9c9548e1135db034e47e263a7bd66434aceb96391e73f6d17c906248d2be547e441c8d13dc1785ac61e767ae8e51adf4832ecf77929d1473fd176f94ae21a41baaae02b3b7bb3c6686213d79abe92edf5e5af2544ab1060b158a61b9bd9dab7cb387839d3af401a9fef570c185a8f36fa2a440e1f0e3f8b643b4fc167f53ed44448c1c8793e747b3bb8d7ab1b19f69ad7eb93a2ed3e26abd3d663164e8d78316c22dd6a8ffe36d4d716a8c93c56d22b0dc9d4688772f1a307caf0435bf0c896a2e2fdb73ae181c8c5a6394069b16d66f88792d00cbd4653d9597d75fb6572155735fd0e5f2a1eee959962065c628a4e294906685bd21688cf96467426a48894845b135d3dee786c68e8358b26d32847af9f65a05250749c8d03c0a1552aeb1e762dfbf15e39a4fe934534be7356d4dc293b6fcb2033ecdc659e3e18015c78b699fadf1375d887726d7405b7a91446f9834e597d431c22bec2a6a0b39875ad22c2b4cfb80c89148e581a3721c543c6600a824cd71102e80e7eeefdff60a7735986110a370c6522131b3d286e3cc20c2e75c612626872400b4b9becc557e63cd12c742207a5bc9253293ce11441c50aeb0021844127fbf7f60e70227452f787a4bad860dadd5c61c71b455ad037af0038c17ee02e6148c92a76f76dfc095e94bfce45943b9b55e351c7c3dbb798915955ceb7e90f0702b7bec42c51cbdd405effcbce0b97f7e9f73a1445258c280f60506fa2ac1c7ea3c8231393088ad816f7ec3aba6f6dd89389ca4276821daa9e4da36daab99e6e2a4bfa972c26079d6a1fc23feaa1f80cfbb1890033b45639aa4bffe15aaf14720542ed9cdb76e4787bcee188c064175e114911ce18db13d3ccccc3077c4380379160e5bbc3c74f2f1888bea9a544744a66a2086bb545a555784edb981fdab3a2cb79988b72cf566836336fceb3123b1c8c5a2ceb261064285bbd05518ac08ab42d842dc4b7e26f05b5c6e3ccb6cca3e0a0bc94500795829ab2117714083855911cf0e4e20321813352552a0da928b55cf462e23735ba131edba811737fcca418ecfb675962816ee4719b16cf43aca18cde3aba9c8a48a4cf5c3da27004c58e51e0b7dbe83dda1dcfad3ba4130d1aca47dd86e923c2ee281d92a6783de34ceabec4e7d483dcfc272e2a136562abbd5f0fd850c20c3de1e64f6c703153f214eec9cba0ea9827924a5d7b69b9a8754c1463b7db1c82a918e0fb94e76147d99fb15d92f380bbb6aa14422123f5d09ed5d088b9f963341ff02dbdef131e1be305205ee47277d21a4cd5fc78b3a33dcd9490048aa502a6d5664674a5ac2da271ae53772562aac50b9eb7e5efc5428ff978cd1e446646ec4f26ce39943a10d30c92ac14b37b1faa9d09a792a91e7e400777f6e4d2f017e2f65f8693311d98f80565a885e7079f77b0be68f3c6987ab64c1b5f387e318fe8ddc498488601edd3c66a92c14211f06a6eaea52ad4668b2ab5ebed1e870937e4d0740441d503e089ffab100156ff9dd6618c5a7643185077abbc00b9ab351953b224975e8655d418021980c04a066eddf817675cf9fc3058a411822caac062db2d2ca37f3e1f81b51438e764ee8159392f51322d993ff4ba9692b697b180fcc501e3c11ac9dcbe2dacfc1343408ee77b3f5629dc9efbc71acf874484781405ab60972f38b72da3cbf9840d8bd92100e7d5498faa8acd1075e677be572e6253f9f9aad8f7ca333b41c96e1bca91a96c228621c2ff0a35c3cf44daeab5e6364e7f2d9a2699a4ca433a890b09ebc6b13542920ef5c37c9a044cb299bf8e649301d0be065e7c58d622f693512c2ba2ea40c1d320346244207e9795a1e483c81f5087f9d4e3eb41219403d84c1f6dc3a2be50268d25a4d659b3a9273d56099f1c316c4ea695fc85b033ac7778062880ad0869b56d645430ac6c26055586cfbd88265fe8fba6c64888db490f7acadacc0c6286aa3f096024606ca673254d89a16357869d823cd3dbd35a561a6382eb46a6dbb936fe31f960560ef6228b43c70ebb37902482b864e2f7f71d478f7800d0c5adf4d8eab585d3ef14f46e2fbbea37bdaa824c58f914d342acc84e412333be572cf02ee9c3549e9661517d2693845e1ee1694736880865d8967c2e39cb2fe510ac1d40d5c50d22eb2b91b92426257e7929b0757c06e9eba5542503a3a95254003b2b8ae42cd6c9d5d55b336597ca553477db2441e6761ee0d2c4237e847e86cd54c48a675079e5a5e547f937184258898fca428e3ee18007cffe6f347e8e2ad930d50c64bbdac591839fe86b872e039c7d33ad74cb1578ac49c2c0df0e1c7c315cdacf59f9dcb7e2b7869d81123d5448cba2e59df4a0af7e89b0509587fed0c673b6599d9df760e7d70a50d5339b30e3e5013fe9191eca00b3c6eeccb726c02d24e300da25c6fc57bab8890e10d72854a18412e69caabfc9a3a8d644a725baee93246c9dbdf92c73b341cefa96f8d2f94440d05b56ac262a1cde99712a7eed816283cac6d7d36bda01d7f949e715c2b364da4a9b962c066c4faff7aa4d239b59585246d6f547172175a975491e1a9db62b5899b80d74b0b75d65a8a0c59b2cf4d5980240a468fd561681ccded06aaeedd3f5f11e74e199987d7fc4be10cebb3020c2190e7a9180c0118c8e0cf68504e54389a2aad764b10ace51a8812a81a307df0054265d3b7a4887a77b08c00abf97b906ec39b89eca79aa1356191d1aeda59c5c36ac6b827f67c8917352fd70deb0dabc9fe332f56a9595d159a9978911662be6c5ccd4b086b06b7242b5b0da7404e4029b135bcb53ad220c380c11ede594aab634e3a53534ec4315ca0ca93e30c70c5a6dc2b49cf6f2fc41c552a506a9a0e0e30a4d52aa4c20dbc6a5a24c1ec037c19918218c03ee316c187e492a6b356f59de95e74c39417b7b2696b07e8d2938e853a6f9c035b09b8166d1fe9538d66df0c58bfc99c5f4c39b6e02e3a7419c9fb185546ada7a32b51a5201f40103082a1b4adf71c20066119419fd09984c2432873121c2d662d62d84688d24fdf7af0fbf7ad48e35b7cded5fb88d5640e8398753908f1db35831575fdd26dc94d6e58e4e7571c5b97cb35393dadc53c882e54a44c218ee726ffcbb589d6fa2f409002947b4b17b67e3a05c04dc31933f0d13a7e1f6ae6a229497afc67375f39ed44f3e82350d830a7ddb2f5c71935815af1b13aed2abbf7bd39e6cc429df0e4a6f1cd1ada498ca21278ab64d1aba4274d3a545e6c3dd7c188a2e1192298192b9d9988eeb606cb64c73788af7680cdc8716bc880e7c76ecf44df74bbf20d189933b9bb397ba799c1229ed70de6b05d2e639b702d03b5b30b0026500ec964da41010f6dafa031888274838507013e23221cfc08be1acb6265f6f3ae534657d56d419331f8895be10051c020e28713ac94ea5b3bb68b469e6e9691b544f19890a3b902b5833eef189e10605e888092825d9241139f5a474233c30cbe135fffe602daf183eca9ed32bd331d9d33d8f65b65e8964f0def1274516364f9448e3e2d6915e101b9cf1bedfe543f6a9fe791cc7dea1c6659a530e216be9b06c3b587feb9ee1924161ca487392674829a992ad88a8438484a90d1b5ecda2b9447f1819b95c9345d1336b1e12c004bbce405a00ab7cc5caf6a286bd0440e96afb92e63261e73995066308a8c25d81b2c5d20f0cb4351168a0ad1b05c9077ac48929d3300e11a7bc75ac55cc00593c9e0b97c89e93644ffd2e522dcd6a83ae6b9623d08c5ab08bb63269ec9347dee9576d70153e2e5cc499eb597d7da733452e4201cb6aa3b7ff97d93ff40f5757c400630554471e9f112382d864c053954ce453424e006a51cdf6e4065ead9c2994b869db83086740af0e79993ecc46353d2bbdf9a74cd767bcd62e35c052c0fce687a2593b7ced06a14f857f80bbec0254a66756f08ef8f21931feee49aa86f414318868285fa78416dff7e4fcc95f7c9f4106e0a02d7a72a6aa50ee27c79dd5594b47c6ec2431edcc90ed57e165f8c0cc954f2f422f0bb1c52b72064e42098155e55113336501ec6becc4cf28de208070814ee16745c65e9d20772d1a4271ea4071023c3b0c43ab30e4d63c652d25a009859036bb30f0bdd3cef38a0c72881cc6c674168a1a716cd488c88afedc9c745719c686ce2dcfb6af8df264a941c94e056d0c997b373f0b9600d1c06d255743d527a31142c8b32ca09de80fd5d82581f2c89cb7ae64292166e50821cee3c5c144159ecf87ecb802e1badff738f15aa934b18a33620122bba61124a46dae1ca630c25e0253a7aec56eb3fb84d6c6401bc0973c83bb8fbc3ebdd87f634e451d9958067f55521af8bacee334681e83df3851eb7ef7e165c75a1cbcc30ca08afa9a9ce8bc04d3ee3c2b2566ed44d061d8ff34ba911fc8a3d718173cabf83a8a57d18c8377b48cb23906460ef0281cbe491699b89ad6c92bcb6c071b7ddd15c5c8a167d7849b010b15ba07c0f64473a49ecdfe4e727681f0b751b219680acf0c49f939cbae0d065a4e4705d3984d17b0826a2b7b85050cba04e75a093b69b2497038a1b5aef0bd83d9e5a91a9bb440ac3942da4df66e4807a2510c054656005206e9d62f2d2361349bd6f614d954904f4019e894a0061981a33678d3f8c99b550699c53a6b39747eda3b1be4e54347a6da1c037f1cb3fb5990e878da3509b0bfeac3ba8ff78f1924c3a151772712a36c3799bed6b7a4f4524e044addd6d538a46c6f5fbd356c6785aa4a14fc8356c4363e265756e052d0afb111d1472a0d3a0c2cd03b9cdaeed1332f6071286da90692b98c5a6b1bc993ac2ec4db6f6ee66addb60f686640d4bb03c43f146c9f603f92e1ddf565304659de21a692b72628c6bdf9a86f9a319e361b2c60a38564e5671b58c11e2078cf58e22c8180e6ddc56d5d95bd4077c247ac5ba48ab3b9efdd57bd400f26fdf3994e7d84483b71dfcdea108465001b40ca6dc43a9b9627c3ca0c57aa1930b387398652d277ca7e654aac4fe7bad5e412e627752c9619b7402591e4ef20a38000e94198ffe1998131094ce80502d40a21c546550a418186ca8dc2198dde856f9bcd19e90c32e756e9e571d0561ddccdc8a921e77bfb99937759a70660fdf167e0b238f01f775d1bc3c106871aabd17782c64bab4c19f28883118e0c7ddefde14db7f2f605d5f54c53f8f953ff59284f1798b93ee64f80ba6ec654d64a40165076c12438a5a06d8e71e951897c8957cda70f5c96a7ffe4c22982414f7ccd5e502849a47ecf7dedd594f1dfca603005ea49422b7013cedcc9b578b542dbb497f99210f30a67e93559d150b2cd2c309897ffcf4f3c43010ef901ec534e9594085e250cd814cb301e74613c4e66d837c71469877dcbe40224573917b3cb1ea294339c40bb4d9a12ff97c509e82e86105cfd400503f96c6ce530ec9070139fa4c313965442462b71b1ff5da2b9e27e3607948ab58425447d6cde661883b95801afcac2dc0beedbce160636011d51e08aa5cd0afc640fcb4e462c53e9d8dc5bd4ae56949303215998b77a99b6572783fce3406846504dab803c454107065b43a08869379384ee72c95202c289248d2811a85ff9c49149e8a2a7ce6594fdb621f4d57cc74188e84e42ac4b0426edb2114e4e90aa8fee496bccd6c3b42436ea0fafff8f64f644664f6ff64bbb7945206710c4f0cf00b6229badc96d7854d532051fc99b76397ab2fa8e8b6bc2eaef42575b7ac056d694717555c3bfeb7e39fe1a7eb755d56d70b5ac4ca96b5a4302d2c7749596cc7ef762cd3a2be5ad619171957ebd2def0b3e56c594f1757ebd2b6a42d2ea98b75715b5a5c5cab4b4cca72512defe8c2bea4a91794a5a25cefe8b2a654febad616b4a54db5b0dc05c6c51d5d2d690c9fd528536fb6f01ca6b472de6c59614c1774e42e6daad4e19588e5588037c01fe07f78048cfc4f017c0f3f8027c0fb9083f3e7cd9faf3f67fe3cf2467e870fc0f39023e44f7f2ad103e485e83c903f75feccf9b3c7fbf81f7fc307f9598df2d4f33af07ccfcef3fcb9f3e790c7e1897c91cfe167354a1df8d9c34f1e7eeef073e74fcff33dafc30be127107eeaf033879f39cfbdce0379218fc3cf1b7ebef839c3cf991ffff5378ff332fc8ce1270c3f393ff9a31ee6635ee69f9f2efc6cf193c54f96cb7f0ea9abedf8cf302320edf87f503bfe03ac1dbf015ede8ebf006ec7ff24e942922af92bf9f2922f3ea01d3f01d88e7f0068c72f8097b6e3ef41ed24faeca3e44b4b721eda8e3f0069c7bf034f3bfe236cc76fe4edf871c86fc94f499e922fec48923a90fffedbf1f790645b846c3b7e1e926489b0bf43bee0e076fc4384901f84543b7e2024e9dee076fc3a24ff41a21d3f47922bf9e2835c3bfe1e2f6bc77f04dd3217256239be1dbfdcf5d4cea03edcff9f68c72d4bedf8536ec7ff76fcbedc162b4c3b83a6a34cca9e5aa41cccdbf1bb1dfff353067db52d541857e63d32db32b5e37fb5405131a84cebb276fc52675c62521956667da9336f8c0c2ba3bed616680c2ad3caa42fb605cc2bd302a62563de9797dbd2629d41b997745fd096d6a572e9c97d81795b52570b5494695b625c32aa49663d992ff5e57109cebc2d6fcab09c0c37460b8375a1ceb832da18ec2b7591be5865b03016c6ea027d016b63c05061ef8b54c61a438591c2dc17a88c35860a2385b92f50581b03860a7b5fa43258180b637581be90d1c6605fa98bf4c52ac38dd1c2605da833aeebcd98b4bfb8644aaabfbebc5c7d6949f4d94739f9beb0df7e4aba1c25d79757bfe5fb9bffa650a7912721df06009c2f5fc39b646b4af2f23c6a38c9070027d9d3c493b47cd9617e56a3045b3c8e37df75bd8e3389eb77e8e06039f34ac4d2469bb6af1a94bf4ac432498bcf81c355b97b4353237d79eb8eaedae20fc3d98eff6dac2e35de9c6fd1b42bcccc0d54c6468c0d9d87e16b0d76869f37d0d3067bda404faec36bb09c9f9cb5b1d6a06973788dd5c6cbdb1a346e0dd5866b43e52ecd5b23b5d1da486bb435287f5fd48edfc8ba652dfc5dbc26ad6969a434280d6be467cb5af01ab5c6a559df8ebf26ad6969a434280dcb6e19c96b561a95863a83865ba3d6b834eb8c97869125b6ec8526ad7969ac335a1a6f0d4b03a5c1ce606ba0352c0d94063b83ad4193d6bc34d6192d8db766a55169a8335c1affbacc585b32d4548c74848172af8bdb9aa1a664a4630c947b476eab4dcd48471928f78e5cb14db960c71928572296ff2a114b17576c5fb02417313528b7d1bad2518d96e36f4bfaba2a776154d7c6cbdb1aafcc2abe49d372d49b3750d69b36d897376da0afc725f9660d96af240dfa92b25a542ad2b033edcbcb42b922cd3aa3b670592eaa661569d499c765ebcd9a168f4b973769ac378fcb7f93c66bce68536fd2a4335c8958921c9729b3866df1d23269a0372c1793068b7ab306da634a29f21eed0c3646e5aeab1db1dc8cdbb2f2d4d58ed88ed396154675b94047325818db12638581a1cabc4847b017d6b670256219d363266385e14ac492f74863a8325c8958ba7af8c0485f5c89588e1e9720efa1be4049bc07ba6118e676fc3d82b68ce32eceb999d318eec248f631921a9919093282c28ca83ea2546564751ae9d1f668b7cc48d08a9bd88a8a9bd875f1226e62a08e9bf80d32fd8cf7f432803ec6e32d3b7570619c33b8897f647013b3dcb481c14d9a1ee8969da819cc8fbec7942d1bf1514a8a798e8f5c769dd191ea407bf88c322f72fc3dd417a543109be6785be87875a839dcb5e3d78f680e1deccdb75c1dad8af32f4db03ada1dea8e37078bc33b9b4307bb23edeb0ddfe1763587ab63ddf1e23bd01d6c4f73bc3a5e1daa0e77c7da75a43a64481d80481d5c52072b1b86df48d0969da427fde94fff829b3ffad1bbe0e6caf4a6877133e49e7b16be84a08edfc8942d23718e935a69c76dc729a94d4defc4a11db31dc7d0d38d58dbe2a74d2a6bd3367dd97b4386b66eac3136c54f1b74c3b02c86de60dbd50dd91a7b6fa8b155e6cad4987b238dc95c991a736fa4b11bae6c8dbd37d498ecbdf1cad01b6b8c5dc2947ea34d65ad2c8dc5da1b2c2a6363a80c8db13756d97be395adb1d87ae386eb42f642a6c288b93162aa0f7b23edf88da046662f257f25626963f3deb030cffdf976fc297e23e99695adc76fc467cbf01b516dd61bb48df9105547d6b7de86bd495d991fd3b5e5f22f2e6d8beaba7967be95a3b22fe4731bf79fbc595ffe715afc0b8e8bd3727edab8243f6fd6e7270efac24f9c161ca775e1a7cd79a39e37ef9933c37158fcb4616fd21b3795e138abcd7a83deb439680cc7b1b1796f589c1786e3a42d9cd746b5796f589c1447cd416dd61bf4a6bd7171d69cd486bd496f6e5e160e9ba3dab4638be67179426d5c5c9a66372b2ec314ad795c924c9cb687dd300c84e376fc3ab85b765ad932b4631c2cca76fc6b50db718e944d3b7e14078a83cd81b239ebabb66ec7dfe26873a4392c8e5407d501c855dd1c6bc7afae3aef9af3e27875569d17c79af3e278735c1d55c7cdb1e25073a839ad0e0e5787a5c3a25011070be640b99c754451a988a30573a45c0e3ba6299d56c4e18239542ea735bda9a3eab82d1c2ab89edecc7159bc3cf17356a364bda9b396a6d3e94d3a6f0b97a1f8e10a725c92f8093ee94d1cefa8c8bb6178c425c787f8e4bc455cb28815b248bb61366236add425ad208aea50513ade114b4a73bc3ad610151f975c3b5273b83ad8c72598b2eee957538e76e44ac4b2a5a34da1f2e392a4b2b812b114d95789589e78136cc7262ee4cdc1767c16e9ce22eed7388b58f91b679176f4b2b3c8cf86611dd62de37891910d376964dcf448dce6063743ccd6e0e68a468795b076fc4380b66c7cd62b114b264e4825f7e83a4add1a6e66947b14dbf113afdaf19b9c40db1a5a742d5397869bd987033f243db88e9ee4723f4a5bcfbd6cf8287ed6c002e0554bb49cc1cd9c86e28f7f2ad1737a5135fda90ddff404eafad05d477e3271422a4f257a52cf8222457dea09767cd4a9444fcb8f7fce6a942c7ed6909e006051fc2cdf919fbd8597223f6b38f11300267e0200e567775dbc5cf959c3ca4f00b8fc0440cacfdee225bb61f8657033cf72ca012bba804413b2485b1025ad6ebba37c218a1d2c01031950f625a9291b06a028d00ea0487857173fd192d0d19aabd040066810831d98a1c4a51baaa81a3089811251a8e04289cb108522c5914417a81c21890c24a1c425387b828df17922090c68e089084a5c92d2f7a5073f78f2021db81d287139e24ea81d6f1780c1891b14610a56e830c34db41dff1076cb72b012839bd88a0b839bd8057ac14d0ce4829bf81de2b365a712b19cd5284f8f86b64c427a907b183769b8f0b95771d36664fa91f8e7ac46299ef8a9e32d93b07013ff84244892c811c9b26e18fe7de690c31253d40dc3cffd9683cf86e1a7f1f0cf63b6e3a6cdc6ab00eaf87b82482f8ecfc4c98728562a8759eb5d2d2e2fff4cc077e295a3c7dff36e8ee43046e42c4a534c0e6806b911398b12949979b5e8013af19d31ec8861c708f0f4f85f2491262d48224c881841c409910c103962870c3b65d831c3ce1976ae10d100910d1079428403443a40c4033b69d841c34e16449610c100ae3971130f7911a189a950a9f8e9f88bac1cf827311c53a81fb1a39289139b92f52d578bcb0be9b9297bf42437c1fcebf1175962cbca59267131cfc4c9aa9479264ec2b2c53371e295330f3efe22ea9619b19938a1295f9ce70aaf92c70ab8063f13275ff25401d7e0e771f50dfcf85b903c62c035f867481e2c700d7e90e40903aec12f43f28c01d7e08f2179c8806bf093489e32e01afc30240f16700d7e4ef26401d7e027491e2de01afc4ff26c01d7e01f913c57e01afc2f248f19700d7e1792e70cb8067f0bc97305d7e077913c68c035f85b244f1a700d7e16c99305aec19f2279ba806bf0a3481e2ee01afc23c9e3055c835f2479be806bf09f481e30e01afc1c89718daa86a566f5d9062166bb8e9b4802107858b8e9adb819aab8b91271f35f341b23c1cdead7f1cf13de96066113ad4daa5283907bd10bf20c42ade39f2b2da8c1d52fa00dc350b85a14648d820db26e192ebd28d8287e7ed6f687fa63ca8f75cbc0c7ff23daa4862ce89ed44f9bd6167c4f6bfb694f872878624dee9bd00fd5ae3d7d6a5d42dd1a3d2e4b2bed4285f877ed623f0eba928466cb8fcb8f4bbb65b8fc95cb125b76aa5697a7db6f555bef597ad420bb7a4fe2e7c91d5b71557fb64c8fde7fafd7b2a467f1f3f48ee9e88a2c6add2dec96f153f5a83f35c96d55a3ea4f173f45756451e28b72c5745c51a8e8a25a111dd5f1dda7d8a240b755d7d2e975539a0db51fdab5a7491a85aa1e972c6fa2dacff51ea7e0e3b23345f5547a5c8eddf7ddc8aa1e97295288bbf4c75d402ca112779dde776928c9d0973ea4bbfff477faf59748bca534fe49ebd2934afa47d5b35ea5b57eed7a1797d62ccfd2ab67d1af49ad5feb9fd528497eaa9e9faa56bf0b3f512d7ce5e2670a6df133c5e2a78a859f2b97af54fc5ca5f89942f13335f2732572d57ae2a7ea05f9b922f133a59e2a95a742fc54a5fc54b9e76ad51ff2d4ea7197f8a6d8d45ddbd09b2a55f5b2aabb7a6faeda34f596de54b1abd44da11b09335c910283153851e2f2e32d412ad4c906acc822280b2594b82c8578cbab6a6b8440822964e1040a2562e9f1162035e7a00c219889010468d9f11677c3b4d6548200052b94a0034468b1827a5bac74fd679835fa2e76cb96f836d712ae916b095cbad22d0b713e219ee4e32d20344cf1a91f4fe2f1d6eb4df178928eb782f4bbd68e2771a1495cb30dd31aa8ebc72e9bbc40a89142687f8150025d17220fc180ed71df38042a109a2df5a7eb571266fd2eaf4b1159095784b61d600c2291ce58c7b45ee1181a6f58d65dde7c638cb5d6ffa2c710e2d77ee71688704cd6d9dbb20dc3368cafe8183b0157d1318ea26f36b4acc32e990f1f5bd6f1cd81d8b2dcfdc7315048e3ad97f8105e53d0586123052bf20b304cbffe721379d6a7e018fabb27841b866ddf21d077f6ba7681be33de9b96377fbd9108a870bb8e993808573a86825f0815ad4c97f8084c3a7e91f79b78851bdcfc78f58592e0f16e13f2058ce3fdea3b42f327927a5e18f2d80995fa0dee96ad5661687ad906e12fd1b61dff4fc752a41d3fd771135438d1c58e7fae80a07f1d3741850eba89a7485bb4e3c7e1cdfc83a5603bc652fc48d19a580a2b52b8580a202cc56b6229828c4002752c2721a5d2cd3108ab5f4182ac1b867be40b844358c002bce54d3fab519ace16d387fc3471d48f2ff640c32d17697f94882550ca0d1f64859c891352a9440ff8a407f9ac46394a479e2b6cad589ff2e9f839b5e3474de9f8c7b5e31797e8f84f47609390830ef54fcffc83ac5b367afc4196d832d3878f3fc84f903688952d733d7e21e896e978fc42a66cd9e95bdea47979d3a6c59bf8a7bf89ad6017006f62201c6fe237a379e6f2664eb34f059aa0601ed52485fad437e129dea4c55b4d58495a303c098bf59cb7583cc585a0b89eac726cc72bc76eeb4f0f3f8b5f993ff1ebe416c7cde90d58afd9cd1bdda1d59cf54ba3d3cc3e40bbafd1ec836ec3fc667547cfb032f97da91c15cab43cafd845e1f7e65f2e4f338bcaed4d46755ebf5a45cda0723499c1f99937f52ac3933421e2733ee76d682223f36676b912b17c719d2631379f2426864793988f7933a77cc7ebf0244d384fc2393752368181791337e16f04f7383bb45ea7f5e279f91832e44f1e3e000368b5582f9ebfd9e1a7cee3ec3c3f777c9313029fe246a6e4e0499aa4de08d439ab5112c193e47023ec866108f024a94f71233986403bfe07a81dbf03dc8e3f08b6e3df214bab785249aea9249ed68edf24bd1dff024c25564c4f2b497a4d6ddbf12b40edf813c0e2ffc1e4965af1c4965093bb61a5f71559913db927b774424b0438a12577006ec74f8414d78e1f07f2d4f6706a4ba9e9e5017f004caf12b144bd3614ff7679f0a3500f24ed3847dbef8dabbef8b9a1da76b7361da276acb5a8ed5d5f0f849f5baaed7773f76bed584b5f7fe2d7613b7e75b874b79bf66a2a97ee765b35574bb9bda95aab6defe669d1d54dd51b3765f78baeaded555b206f6aae966e0e15f2e6b60ae14d4c6f7a736381f026e1abc39b80e09b9afab8cce14d48a43777cb9b8c7a7610d262592f0b870565697db47468a13dac95079694c56db937a41d3fdbf1fbf853edf8df8e87b45a6a2b801fb276fc68c72ef4486bedf8592e013e07169695eec04f177ab6d693e5f29385009c959ead96ca6a5956017016da6aa52c961e38cbdb6a5b286b654959dc0dc32d96f5b2541694a57dee47e787c5e146d826388fd344c81bc17d93530837b26e186e42813782e3498cc859944d800840e78978087c045e023f019d1c1f7f3ae083f807bc103f444e0e3fe44ff317f00c7824df009c1dfe3c92c31bf933873f7d78027c0f2f803f7bf893873f03f02702fe874fc02be081f8598d5200fcec819f3cf03300fc0cc0e33c0fdfc30be077e0e7117e1ae1670efccce1b937f2477e872fc24f22fcc4819f43f839e47382f0f3067efee0a70f7efa789d1efc14c24f210fa4c753e002a110b9ef54209c80daf14b60edf823f0423b7e22d08e1f02336d8c0a5b7bc8172a848441819033ed106bc72f84daf13fe0edf81d9076fc4190f88390312b4c6df1c2a43ae40cdb00b6e3479276fc0c503bfe05ccac1d7f11320696b6704918754600640c1031ee4b01e4dbf1f340b66013d082856171c8991401306cc7ffc34ccc01625a980160688bb6002dda8e3f071266e5c8191f60d68e9f0033415b7603fed81507753b4eb9f7b176cc0af13815083f3df763570fe5dc59d77638dc8a5f05b2b22fa70e41b70c4897f670ac106f05f2e78772de97e2a0762fe77d69a7766f9772acb776ee87766d8772eba7f278e88de7b63eb65b512e8bbbf1dad6b7a658ee65712f4f6d7d6aaaed508ef5d60f4d755dcac3b5371edbfad20170256299e23a1487331ab521147f8a336243a9f7aa21b55dd7d0eb8ad0d01a6a45a234849f1589d2d0f786d8cf15b12234b486da90fab5a2750dbd2336947a2f2a5247a33684ba5edaa952b0e2080c84410cee8aaa6c0b45053838820c1fc8a2c42f9baeac7b451a02240459415b756d4def0eb280013044c1053a48d92831c841099ae042597ad13318c1c41292c08552649dd4400c52c4302b4fee138a9003262060020fca13aae30653302086255a284b2acb7a55b7455796e555dd34e7cd968af326abbd799385bede645975de6cbd3adcc88ae670234bb4561c6e84756fb8911fd68b1b99c2c2cac049126c088250f585b6ac146ac0842a4b48808274555f773dc316b260052c7c5c3685a1ad7aa34a14aac0040d4eb0b62c5a20c30d9c30c315524a57083b78e2064e1041147650beb80834409990a640096ac97663d08209b03883142965eaa40a58b43b68622d591d919b8eda10eaa52215083a6243a9f7ae2fce68555f5f8e8815224277426d687d7d6e0e5722963afc1cf2b31a25cf9ba256085722964070c9f2f1a628dde14ac41267c70cddf0b3c7cf6a94393c2e51219e22add5aa4a5f23cf9dda169015ab526f5247be757a4757888f55dbb3f2a43bbc90767c7d0c09e276fc2a36a506e07d882e0a1d5264f51251b538ac3cfc903f5f545a849fab53d59ea9f5145f8e4acf957baad8942aba01e0a855ab5a53a9d8eec0c79755a5d0d37b848fee6a55a5a8f794f2b17df11cf879c32b114b1d920945852af7e7dbb18e7a13bec274c8b7f0af1def905620a1ab13a2387c8eabeee8f03d9eedf8c3167c89fccee805d31e3790da1f21eb03748b7c0f12daf1a337f093d49e217b82ee49423988eac04f127b862df88e5e0ea6a435744374e4725025a9e11ba6a3211c5c49a650f482ecf7bee8754947132a86ea89e556177554c5f79472219a5247575c4faecc9b61fbc2bc09a6fccdd13bf32689e58fcb1921a436e52283f366c8c6c4bc09ba8f4b186e8268d9f34ac432a57253224aedf1dc88b26254efb71dbf8f6785eb98c6e0cca45cf6c7c3a42a4edaf1a750ed0d8f6352c755c84ae551edfc19e48598d691ede1e74a3d55e8893a4d2b1f5920fc5ca5670ad59a543eae2b34e5a25853fa838faaea4db5a835e4a3ca4db128b0e523aa43a9f34ac472c62a434d3be65e18e80c1929daf1a3dcd745e667a432d0b7e37771d1be403bfe18afdbf1c7b8605fc878735c9cb6e3bf71b1be6075f829e33d63b8278cf674d1c35fb033d0182f0cd7050f7fd1ce4865a0305cb43bfc853b434d63b810c25fbcab9a02e13050121a03b6af7253ac8abaa41faeaa37d5a256175635a568ca7549bda8765c4daacb119f0dc32a3f926e1846618ecc360cbbfc08ba61981b0932ad9fbaacadf4847ab996bb2ea7b7c59ed414ca5398f16db5a7965bb98a8549a93128f424ba2b97b3f8eba26a3b5722a2786a7d5c8e1c95722141e2dbf12709b110d05ce2f25745da2d93f9b97925013a867a2eca98bf2b43c88d3fa2f8c17d5f61a263db6726567ebad14d08b2fa95bf8362d491502ffac87dc5f41aaa6323ff8d054bcb9badfea1fa578ab9deecc0284efd1bfbe7e619f94d51fff0f75afeaf0638c6f78d8ffa8d64c0f6dc8b465243913bc803e1b8afe857de5888e2b760e17900bff2b7484f04f9959f457a27c0affc2ca497847ee55f915e0df283519cc0ae0446d133b8fd476e5adf9e4337ce916cf89efb4d068d73a879f68dc37d14992716bcafe8d817a4a1281408c6944ab480a48288e91be7523c5321e5291cda75ac03e298e858f786ac08b1133d40bbd955b1dbef4f3b85a265b8f436fab36520ab635e7e0d85c639bf8adc53f48bebf9bd2718477300ef2c3c2867c0326fa619d1f37b66084d90057fd6920d96606209efc94e4398b937d32ff3fbaeebbadf7650f6bc30ec7be5a6f75eaa5ff939d29be9d7931d9adbf289c483e3beb469a87e991caa79cf7d2d58f243e628f4eb27dd22b0f5fc200b42a163e07393c823cdef9ebb61f93defb59b51fcf4f1a0ec85a2b883baa0707bd463d2375ed19c84dac87710f728deca6d15fad5e2307ceccdbc275ebaa1c6dda6b8e97133ecdf7fdcec5e7b8ec49b371b42eb2622b6fe69bcf5bd1982a414cd5b1ff766de130dcb7bd58c10964864764219c2dfec5e791e1d3122352b4253b3b22d7a8e848448d3bcf7663ab675dc441394f0a0d0323c8435bf0745c7701356a2e83928899e3f1f018b2c0506bae931d1b3e6e5df57326986adecf6acd996dd38df688f12ad0c94afd0affc2d1df6e62ded4b4de2b247e737076d1816c2fc76222fa01b96f56cc3f2ebb40a5d432975dea9f621b5ba61d99be51d84b959cf3b8843f51452af1b96b5fb6ed94e378a61f977bacab90c4d11e298cc1900b662ee340d62d0be2f161a1ae59d826a3375adc284f6240dfa79b1b8f26a4cb49986b6eb0e1dd35e0ccdc80b5f363a358cab6e6317b779f6830f40643485120549e8eb8eecf4f4807f7cfc00840f23cf5b3516bb5e1af69ec686cea8dbfbd59ee898b95dcd67cb9868178b1da4a59aaa51b912c5d701e998a92d51857d051641efabb134345f77c4068dcd8e0f3f20d1d9f131344174ccfc2336740c37a1842aa47489446747d0c7c0c0a3d0f36cd0d064940999490f3ef8d8514310adb5d636369a877b76d40e06daebe8d8febe9d617cddd63eec42a1ee7dc4bc2e7bbc90c2a0f9bad5e8c223b90ac3987f1f88b4d54662432e6ce9d9fb37be63765df75aa7bbaec326f7db8bb84ddbdba6693447d8918f2dcbb29df6f5a49bb80d4120b221f750b81f25c23aa67f87de9bce59e3bc695f0837f798db7bef9216062696a8c2449525986062892a55aaac54aa5059ab5459a950a13225092a494ca142654a124924a14649228a9a44126a9428517ca04481e213258a0f1428db8bc0568f6ef1d6de48bc99b07eb536274d4d9398d463872ea265036e4209509490f64ce2b17fc7de4a78d27316b610020a0185b4908550f33ace79f58210f45e107a1d6bdab6e590e3461d60ece5ceeb3a516984065108280bde0b425b0869219405ef0598848410e3a0fa7eee09c6c13be53ed0f708f06bbf966e1937dbb011e018e701fcda1ec0dd4c5ba2a17d036dd8deee86ed1d45686ae907a463f83714fafe217437b959dfcfcd728e4683fad632d61efb748c3136310c21b96bdccc9aa6699a86356d6f12bb25810502c90380f0794df9f1894205c847102090602862364742d2bdc0a7d1e9d9ccb1b9b9d1b369a3671d1a3dc7d8e29b327a8b9e5d2d2e9f3f26db30e3a3a5f5ae9369f4685e5a135e306c724e9ee527a9d4a3f84866fc1a3f26ffde76e49c9cda8071b2086ac839194a9eb17f6fd487fcc45b7c26facdb2227395ac047eed17c9ec82fcdaafc99c02fcca9c01fac5df9f45f064f4fb739af76728a9fc0495d3eca3639a6f918cd1af0d44e90464022a7dc8cddcc1e77cb20f48e25eda2ce8fb47a49961d0f78b4833d3a06f6eef8da1604751151b95ec8550e7e41ff38cfc229df3d6f4d65aa8f1914893dee6ab55187a580bbb0ebbdefb59a57ecceafa0a2d0eb70c97ae713f21dc9f4352d83aefbc575b6b54095b15cd04d1defab567143837b6e2e91cc1e5d623cc5ff4da2420608f212179fd203b0c0ddb221a9aee4d97e92483736ee0195b267efe188c43da6cd8fed39bc88ed431ef45d90b4d21cc2432e31708fefe181d332fd049bf45dc5c7dc877a9e49548fcc896e1d10e37920db95300c7d8cf45094d5950df30742c88d76b3fcdd65a7331fab5b54ddb9ad67141cb39190746701da3a108ddf446fdc548cbb2538669ffbd39ca708685de74c5707e79a72cf36194737ac833b48fe5f7b8c9451fe226ab9be17fdc3c753364754d8f46fcc4cabc9bb1aef5907332954ca56b4ef03e6e7ae14a4445a6af2d7a5ed75523f1d85b24d28ef48f6483f7a16cc5f3acd8b07b88631cc38ce999fb8f44f2ea3967a1691b9943569875fafb80480a5ab67a3e7325f9335702bf929c65b83ddc1476f4cb46276fb8c5fa8fe8d8b671cf918d71e63b6c7a72f6f20bcb765a9ad6d37020c2343ad28479751cd3314675fc2d988573bc148e698f5fc439a3d2e753a963ef0583e605949fbc6cf0141d86eed1315c22913cf1e114669226f23a10266e7bc83924273800cf36cd879e971643fe4de6df01e2db3b35e8d78efddddbe8eca8e1b9d5ce3bdef380f8956bb572bd8f170cfdabdf14c0b21786e9573ad2a12588b08df0eddb0f3070e743f73e9326c7e5170d7e18faa56934111b0df97a851bf6e5ecc30f401cc9af73cef93196f98061daf5f2bbc6b753420d9a931ddbb66176d3b46ddbb49cb3ae41fbd0f0c658679d73ce5a6bad7764306429fab55fafbc3115c2bdb7b69fe3388ee3384ddb51838f6d739afd3636fbf5de3f50a8e007a29d31c640396b8d457befbdf7de7bef8cf36b4e08f1ff0044d61a08fdd2bf493c7cd835386787aed1f5c7c02e724e0d7a26c3e01c1f5aa6eb7fc1b1ee83b874fd2b14ced9c9334a6faa62a1d75fca393d1dce3982734e0f3a94378e7d3fe8fa4f35e41c1f3308a282ae4bd0f543f10346c182aebf146544660f88209fa0ebff3a6ecb3ac86c0fc1007446e2b937f777bff5c0af2172c7a41edb078ca3bdfe02ecff3e93a99bd87d4dc732b7473f588dc0d3b151cf69b809f7939d85a5ef9d3396e5bd714bf3dcc9be4317a1737e22c231a6cb9b57cc06bd401dbb1b035db3a66c18eacdc294f59304d18b44642e5bd6942d73614d614d71f9614d697975e513a65dcf3c2f0c5b662dbb65d6f56b2397293bf60e9d575cba402d6fd7eff2e3d26ed9f9c37da781c6b1a443fcd4ea4e73aad71d2ef7279a77b4952d03710efd79d2277ed26854bb19cded033ebf99d579f541bf39a557adee9494723a05379a55dc8e6176f5bb62f7f3ab5b52664bf81d3f8d6a97d47a192571165289934a2e23a92da54a2cad4a6d2efcdc5a6e7d777be225f6b44bfa35a76a56b32057a1c0978545dbecb672a8a669e85e55addd5e8dddefe6d26d6b55dc49534bbbd5ac56716ad7da5a7259b62b5571a9c6965e96bdba36d5657bb5b6c4e2f2d93057cbe5a2724d41cf75c3b476a51ba6958825aba4d19145732cda73e942d6e4e2c3153f3dd6eb5ace05ef56aef5ba4eedd82ee5584ff5da17ef5ccfedd0ed43bd2ff55eeefdd40ddd30adbfa549e954fa78930ffc3ede926e98f67813ef8d08813c89f7bdc75b661ba69b746f44e89b24297dd7847b23424d9e27e19efb96598bcf969578c7f5b74cd9328eeb6f495ddc8c7bef4fcdb16c48b321fd2755abffc4a21abdae55bb9e9fa235e486d2111a4245a1903a4abf57d48ad0d048fd4469881dad5f2b12a9a1f663b12a91da7e6ca955ad28579486d82fa4476a2b4249213d4a4ba2551572bb4685d210daf5e8d4ceedf47e74762f43b758d9328eb7ba19dcf464702be188b75aace0189efed2977bd19497b63cb743b794a7765edba51cbbb29e66e12c1edbf2d0aeedba95eb5cb08c2bca6996958545bf4a2aa19a25ad2497f49658d2b7924a68a925a1604a624b69c91dbd20692da9a577e4822b492dad203a6a419673595a755c3b906dad29775c3b957b5bae4b1d476f574a4b2a107c96166f92dcae5d6f92deae55dc2cb1dde392f5addcc52b114b55839aa55f3f4bff4ba85fbfe8162d7faefe14b5296c017b17b0570b17fc34c1f4da829fa7190eb6e7a93d4dee6942cf508687ea19a2fc3cb1a63086876fd882ef6935addcc49ad490054f9c9f544e7b0145f88016c270822b48c1e5726d60084ebcae0beb0d7b5ecec11877ed8dc2aec79cb3721d19d1709f67e8108ff9b8796444a3b9178572ba7e8da3ebff38c9039661afcbd1633846ceb1c103c7f5bf50f1f2e28204179796295a5a5cadcbd592a2d5621d81c56231020bcb2a8ad54a5504952a4584540a3504146afc19475108a2780ac2e9640282c914421186e013205872a254eab80912a963763412e91089423942a10fc7f7793a9ed7e5745dc7e91cd7f50d8d0d8d8c26a6ddc0a4be128af2280da24de37e7b9d33479a59e338aebdc9f14dc34f40430c97bfe71761bdb79733fecd69481bfc268db7d9d02f9afe363a96696ce857c6fce3369c66db649a8ee4488f1cf797b518883003304c146a58e46d19aca66bfdd267084dbd248bbd442fe9f9370f29b3dfb812bd24ab5ef555ac80a2e32174dc8415a02ec20708b1135398e8dd6fad1e7d6a2945082a35d8f6fca129420d0ae1f6b87fabafc5df266505a11b78fba5dfd7384debbbddae06a47b112671dc2c8289ce61284838e0ff482fec9060287ad7fab6d6f71a13b8e96d208f4b9141e806deace4f23bf4ea263cbde833ea33d69ac40309c983eb8042d39b1d81635a0d90d08013dd47bff218a59f01cb3854a48110c563e8e95707b4eb7521d9912649f6ed3db2a47623c943f45bee2d20df77dffdc783203b12b2778f493d5a1fef1d13510b52f022d49fb8713c795e98323df822107cd293c09378e2400f044110044fe0e984229f84e2f8220e885e841251641064f7df917888348d2c95103d2a2ae82294f824144fa7d34d684a71ef4d9162420f5e53ea45a954ca944aa552a9548ad380b88150ecdef33caf092baac8428ad340981a51a12876216ad4b49498d24098e2c162329952a954e6f6d77d5f0ea8201e7144a769479c4e2793c9c4fd20840e5747e2eadeb76d5884a637e35e77211cc751bbc87de5e31af7bda663a8ffbe1fe998e8bf5fe9d8e6eae37f41b3300cb914fd23ff426fc67d61896e6e3084dd9be998c83b5de936de523deea078852803a1e87961ca348a9ef52c11277aa6543872224f2412894422f9a303a928be089581f1f4a2d3e94f28d49801d4e9743a9d4ea70cac40d2b51245f1347adecc4bbdd9467aa9977ab32e97dcc7719b2ea5a8c744c96ddfcf07a2d033157afecd24e3237ca0777f139a823a8e5bbd08d4fac1bdf822c7bdd938a6c26d0785df3f0e1d4293c02676511c226f241ea22662ebf1fdc7bd99e997606f960409a27cc08372c4ef2027a1e9cd1dd44285af5dad3533c4bc7efd0bc6eb743a994ca6fcf8db54e89edf53018eedd506f8955fbf8e79336d031cf336805ff97707a300a3d0ecbeb27d368063e013f805b21fd93df8844702fccadecceb3a2725dcf62f718226fa492f253feef9e018544026885e68c0b2dd628ca397d0f30ea202cb76d06e42cf1fa22214ad661c4a020ee54a545ab78db56cc8bd45d36dd0a478c8b925de6c6fac17b158da0d38801a5b146f6fc2efb7141f6a5cebc1ffde23a5e8ef48f3bf0d85e4986ce2eb8f73e8f61defc637bb6ea723d9f13cbef7a291dc3e3b85927a3ff2f0b6cfb7f16d65b729f744c74c5cf8f3c4073ef53bf41e813fad1fc3b1651cb9d97a10fc214116645b0f42a15ff9b9e9852da1141f79c84324a9c9bd6edb1a6e6b26791b10d573af7a8e336df047c75eaf0e76f01fcb3608be3a11a4defaa1faef55bc3516d13b20a00e48b3d1b1a9b276405be61de17d0088043dbf0a7afe0e2877413d7b331c23937af46f7ee6721c43a87ad3eb2e84aafca95252cf7ecdcf5c6e9e59d1897502c5174fe089059e44229148241281221608bec989a36afb714b85a8ed4d6fda46714c85a871d35a1c552293507cf041501485e273fffd0efab88d6ca11ef7d1ddb2e7e9d776c81e3c0bd2d21d92b98bb614a1c75b9efe079040e81750f8f9e47e4f44eee16bb275c4072ba29c45468451740ca3def47cf2ec49e696e8ed451a49c8f727890705bedf65f0b89013c88c6626e8e8751cb7e41bbffb7250821339238ddcebb814aaebaed0af57f746bec737bdc844764056c2d60fd39ffe64da426ee45fd8bd3ad75df1ea5bd73dcf642a4dcf917898362948117de352f46ffde3fbedf90eea220c84a974cbf6150eca3fd198fc4d987a4ce2d02561ea71d7642ba73e39d55ad39cb85a7362891bb0fc0ebd7a91af5e1453afe918e953af9178a4b84de8758df5b99b9b0c3dff9301e3989e84c44895f2dd2434bdd9f771efcdbc347d321a6d5f36b57ee21f69722cee47ee06b4bd5b50ffd0befd78dfe78de3f718cbb2ead3bf6fd63fd4f740de1b06f5cf9b7d6faebe4f14bf1d18f67deaf1f7e287483c4eaaffc8d573effdf40c647eb3fe4df97e7a06faa12283d04b3af81b08bac85d8514fd2a12f70ef4be7b6fb64d64ee22b2ff9bd96d7933b35955fdea47d26fdb7352e8b89bdc0ed29010f485a811fc912cfd8a34dfc4ac895d33a32d26879a99ed2687e6eeb70f7b9026ea4b56bcd6db55e8d8f76367760f3e6a1c73f67804b6de7111488e4422ee47a486227c14c9fd384a60f7f131f72309c4f72221be8fe3b810146082812568c7391607ef43fd877a8f34438efaceccabacabd001756ff776401d501892dd15dd4b0a4590c4bbb703ea804031e4d0ad03d2b16fd3ae06daad06d240dad555d0ae7675153410a7b96da503ea803a2cd0fcda94ccf9fc98a0b079a1aaf4bc5b261cfadeb78d6f6ee446911c13fdda4c2b6e9a38c7710ef5c290c7c7a15ce791bbd5af6d45c73abe6ddcb6711bb769dc6e39f077152349a5e78fd2f3f72121fc7ee3bbd5afdd7640dbca6e7715bbd531ee635bb7bb378ba003d22e37e39eb48080ff3df8b8ab4636b8026b4884df6faf2111ca3a6ea28a137d23bd274d086729fdf35ee749d12f42919ad53fe3631c46cd72241e28d4d6637c2174f0086c5d8749fb8a86e5ce7b91868edcd6a2503d508f6ab7cc9b8d9ce31bdf3e8f34df9b99f8cc6bbda8b50661d07a49bd687b0fcbf66f1f6259e8b71019921e867daf498c61283d1abdffbadfc8ee393377096cddf4a113b175142ac553add6cbefd0a21712972dd29bb5a2f8240328997e1847757c5b09676e4b0292a47f2bce64f7eff5672540ef89be9175ff7e07ed35646bf0022942d6f73de17382f544dd6642686e55b32cf7f886422149167ac9f77d1f6912b1752412bda49f4e5bdd534eeae9b72436750ad7eafe470752165288d19689d85c78ab433d12a186ee206fc6a15e949ca7b8a2457a0916ddef2a36a4c42548f4922e8a64f7a27a49d7ee76b314501c23ffcaa154c0312de4d817708cfbcc45d1b0cc2181b90e642e03f8955f4fc1f372e931c6317507556fea4e2afde9f1eac1c7aa2771a8f77bddab7e6da35de513b90d981c084c8e043d6bd7d45dd062e8f959e41099851c42ebaed0b120f49297e3f412bda4737c574922abaa8e8d55e8571ef9cecf625115a30e65116eefbdaa7faa32bf88631c0a34832618610c4530c215ac507eff611996020d982003179c618a2b64a1fcde84733014aee8dfe3ef3f55e7d0aedbf2876edb6f446c1d8904b6deba61fbefb7f15b3e5a3714d1b72f628bc0d6b78eebb821b4be71068cfffdb875deda46dedab4ab5d14a926a15f1986941e18fd7bd1a72181d1bbddbf9fa9a6e7e3a55dfbdcbdf675ff919b466a280edd17a47d5aefbeee3b528fae7b11472a21571ea0a51120aa4410dc7faf448920b86ffdd890ecbefdf79a04e47b8efbdc396ef6c0fd011f44ff549fbbea376e76fc2150440f22d455488460c74390b282ae21118e3a1e82141ae81f53aa5f50b82826ee0987ea576692840745bfb24fcf5d16a1e941094121347790e8e337e1f6b92377d06fdfa3b8e9f5eddb5ce0770dd531aee328f789cf89df739b94fda2129298fea1b3d5f7d764778586e53799505cd44e1aa891348d9b486074d4779f22451dd901f52044fd15e3934691f7f838f799b4a57ec74691b9731cf5233984469aff1d908e7557c4f4ce35f66ed4bba0128947b783b66c848edcd4bc99e9cd4cdbc6716ff684f07bce416179cc32fdc8cd87a263664e91b963fc7d1f115bdf9e7ba25f1c142b4629e7a0ac5ba65d8de39caa637984bf4ffdf6664cdf3492f38992fa2ff531e0e3adeecdbcf156c77f60fd32b5f7fe7b09e4cea59e2353fff148e5e77cf42bc82371908b212750213477aa712814d086e55013427307dd84df7b40497c330dc35de35a56f600d530dc51a570e5c2f3c8c714cba34c969966919b2503e9d715fa856e9fa88aa8c40a16358bdca91a110000404001931500003014128983c221911e2731983d14800b5ea2728668a18a84180b2a868821068800000000080008840102004f41fb1db47cab23682fbf2e3fff1df1ddf4f5c100f95dc7d91e07ad49ea2c3377a84a5d02ec6bb49952651dc4cac76da1b45a87044b691961a10f124fb550f9831e08bbb34c51f588fc3c818bb30cc19e1181e5dc072ff0af720baf4f9c5276f22cb4cac8e8525d0a6e099389e3af9ab10ed03389c82389b35c00c4c307c3e56b583ce823234c2ab29cf311f91eb1c0ffa7faff1f631eb9dbc4f77a4d468e825d085a05924758ed10bda3e485a47b89476a7e01938b24ce691c94f88f5841e091e15e06a8d5b9a8a432cc83421dd77eba43f9156fd8c2fa1b78285f990302ab8e0c032fa1509541c4820e4d3fc90191ed00760e11c5378c27c950d18da573c3d682434c46170e321845b8c8682bc9a586a125879a96269c64369a7493d92ac2c10c5b090e310c25f9e3bbc93ea971ceb4c5f7497d2ea663d96e7c9f7b3cdf55cfb3b77b75440c2831290b24caa8a4a9ecdba13045b6001c200e10e490e6f2cb410b40e0057748ca436939b4147f112b72fed5a1253aa9a05409112d30ff1f95282b0ec32d71c02a5d60e0c659de6de98207701003c3ee404891cd22d548423b0d6231dbf6356d54862a21b1064b0d3dd46ee3854f8da8bebced8b0676afdcf53e9f03b9abf94ee55900fb2640c92d31c7d53709898b80ab69c0089a41f13ee5016b2c8797a46d33bbe797f682af2f0c77d20f24dc3406dfbd5eb1b55ca9b9206103e765973463e4f0ff4058e08b840c21de421ca61c593c898d32c088cee19fac9f7fd68adec21896c32fc26f0599e3dba2125d9a61f4c75bb8e8500efa04f1ea8d982e9352a03aad12ea1c73e8b8801584382082a8ae89997aa584960aec0cbe372242cf840a4c81bb9b51a403eae7d0deefd88232a050c591a4a9cbe42b2acec2dd5c4a4a6ff3b8bb9649f60bc08e7ad28f1af26053cb2c13331e8a4d9ef405be444b5401112d6d130abd24abf1d244d237b057645ae9036e5d64ec8019c4104160f577a7e6d5c049501a6c7219958704976467896dba9a6b103167b669fc116888985e85115e2a593956eb3b505684d0d871383693489bc8e94cf4ef64f887a9fa490ed4986a5a4c70d25a7a30dfc9f7b6024499bf7a0bce23efc1b846c59a883bf0b10298e2bf6d335a16882a56398a8c626142d01936c59b7ff19fcb17ce2242b4c518bf48a8e63e1b06b88afedf9c95be2df54856c19e43f1261a5b72666960649abf18b3efcaca49c3b6ccd29f85c5cbe58008e595a1f7a72beb0552895c03960d3d2f0f8e40aa630a89d03e1c688e4b32e9978193b0ffa1e03089bae5f42d7925d1f8f9f05789e72cb989dfbfb93c8a29d416b1096ddf5f9e18b096a244bdf7452c2a44da79cea22399aca9c43344ff427a708e93d51c0d07c1c9a423c410bf535263682cd38a9c4cb33ac67d957d668c68d7d0da02c9c533dbe8cee75c4b4042232f1b7c33b237eadad52f1a9558f7f153eb3572568de140c6fec09fb0bd6c2255f460797888c33802049969cc45c51d9113c4c12b0af37dfcf0090d05c3e072bbd170b4b7d3a0a160a42e294c54b5d53d31b2a47715a1d4fb4d70b70de8def25c5046e8ff3b1c0262a1717864825c0c8b9bff5bde07479993e4492397d97c6f01fa2709f7278da98541e3846365ce3665d62b4df8e461f7ad71b1790e660224315852b7c57a67d229c0ec3c25b34dc08907d16b514c5efb947d230c3b14fa22af7f5094728e5639248a773e8b8c91326b3a39bf9baa0c19dfb90abbe1930272fbec8a07ba29f1a81c19ab18de6a5dbed968bcceaf68c3aa57f9a4afeb290a5297087f91ca92e2e3d440d105ef52dfe2c27355f0eeae2b79a3739fb46289e689f6f9307b3fa290eaa2575b65aa57badd68c4e748f3d7bd5a9009ab1c3777f1f0f4c6e6d269528671b0f5144972663d8c6c2ed7def9cec1371641cfaa58f9a32b5f0acc37d8d0287a78da7cd5d89d43e79258b4b6f1a903472867ac10c9b2d26627daeeff26efd5865dba58af9d017b8248a9777524c8503b7a913d962bc1593a23e690539e99cbca4feff0b676557d72366ec567a57fa817b880f5c1c2c49e3b919b756a4a68471b1a9f3c93f7b6d9d00566aa01770e36eb901ec911d5c84dd8dba3d65d6dfe693a0cfd6caff60ee6bcbf5054f30bce1fde102c7a73bbacb00a8a4ce76ae6a0d9fec8e543fbdd00810a07dd6b4e299d810980a8b39004a0d5571f3f5df14b66d9eb52c8bcb05eaca3d5b43af06aeae2f14df926ffe9f6c7d5ddf73e7621d4ed76e31bce5f3c805401320ecf4dee8ddba9c1855a5a2e0a98caed938b80575fcde8c76b0f9d5d088b27bd2b67274cd8c572f5b0be116f4f3506ebeab5e314122a73869b7dc85507792580fa55dce565fca9fe49d2d35f12eba21e527ddd9776d59f17ef2bd083c1e1205ff81e2b37b6ba02cac33a49d51a06ff68be253255e8c2dbdaef57c4957b61a624f2e5c6f8e3c08180a6297083179325c8c761cdc55fcce1db2fb46cc98a22bfb123d1561f9f733723bb03188cfc0f529d15f87ec54ba851b470662cbe04e2e1fb35aa48a3917777f49848193810ed8bce339ea0d0718b36c7c134d75155b354d17114503fd15b1839d0e7c93b7d01342d01fd21aa6516042a701bb8010885af00c18ea99852e12bedf42c593cf9ef43f46ae21795bd08e6a0fff232ba0dbdf892c7efce53ca4ed11e827f69cf363d189c86cf57330d4487811f4b22e24494674a879347a04ea6fb47a22b76dcec074c01b013828a59eb97c713af783bd3bdfbce1bddde8aa3f50ce59c65f85186e715b2008ee911634a2b75cdc62657546f2645d199db61cf7580fe43634d9d2d7023d25bd26720a1f209c9271043521f0bdbf0c5152061e58e492f813c1d2d5d06b59a4683d6b2bfece20e2e4025157a74622dc04a3c1102bcf13eea368b85d1db5d8bbeaf36c476b5517249cbc4fde33f3602d8536ac741e4fdd3ed250a92fe7a3005c8aac55090548f1a24159af3c430dd0e92b194788f8ef3ce772b843b4e82da180a70ed55a1cd089057c14118c343e504300356bb5929a7e8a7c0ba0c124693810cdb78088ab032c3a49c84ff5a81d004afbdd39809e0ecadd9d277761b3d639e9c94acc55542ecb2b060d7b25cf52c71de6f13aa49a609f94ba50c3af7377f2ba4ac6d2639f6d2179f4880a6fc5c990daef694509054a7df2d9af5740e324c25ed3241ae74f4cba058666fa74009a0e6b745d64d45c3575a94a2acd8006643596bc0dbb91c4066f351ec3790b7a0a1436d90674f8c04cea19fd92cea332098cdc7f8bace6bcf218ed3862e592b31bb103097d066faa8a25c790ac7e29560a3d65604e69aa9deabc7659b64a813bc26d84569ec45c0d8fbb2066fc30f30832d513d957959188b14045a80906ffe4430a1c29b8e161f239b61ea3af201ab8e43f136f1de29a3cd91b229cfc06fd0c318e405c617c7f99238fe624eb41d8b280f6175f1eb6e1c5caed16e53020146e999ecbf0b496e66021a4bc3a7e05ae56fc8defe8300ffc163524dd9661c932c2ed170ade62407ee016f9eb1ca12d418ae5968b911d360c156572fdda591f01105a0507ea59bd8be4bc0fb4657b600cb502d8c0cf7a748606b3f2cce96840cb667b08556bcaba2c9590a10adf959e1292e31a9efbbfde9df459375639eab87987c4c6a28aaedcb7ad2e0b662e47b36fc4d07c0bd9f2c16b5d0013c405c4108da0cd21ce1287439b6421fc972f3ea460368ee62974fb09f9a29dbd2665581c0d2c32c33600c0a30cedc5ebe48880f16bf76d4798cb1bbe6e054a9c0bb024dcdbbcdbf1db7218ee42b10659ec19b1946e2ec1ace7e51d453949ef5679d3abeb90d4bec59172e3678a607ab0b4041103f7cc0a058eb23bf2b002171192a991b5f769eb315681d4a37085ce21d6bd2f74d1f4c7b036b48d97a8b53be44f21e8bdf6077323b28441875630d606618c65a8eefed0b2480134b43d20198531283fa47b7ffda650c5ef5a388d06900de2000bf639897bc6dd4da9ed468ee315ca92d4d285f5ebf03b8867889373e252e895c6bdbda3b3d760e69f1cb9e36a248d4bed03a3acf3a7d5234309d1e5f158c64491386f0b1a54fbf8cfc3122d22db8b394fc24d5966f845ecb820edc5d5edf3a93c8815961af8de2387fe11b369b72c2387041907b9143d3330ab8e9aa54e04d13638715162d9af0816d0fd2fe1efc59df13e64b2a45588dec40699d39a4c110d98c6fa86bab16d5d3b85ab9e57304e9d57a4269bfc360d51ee922ac6e46939eeae6ee92e039a8b0649b07d2b64354f52fe8edcc5dc8d5a27280eae196c477faf152bc3449d2c2814ac6de4cf31afe1524510119a0f6cd6f504d65542ab0247df041c88953a37aefb6f85a8a561e89920f0dfdaf26a1ba7bb17bf29a5c024992d914c05ac41e09175872798796764fc44064df501a62e3ccc89fa688b6bea021ee4997180228f37054d942492329f045e4c3af691255fc4920f4c32c4db54c848548cd2ef6636216e8b8984cf483e71d5d5ac63ae0c3d604b164387ba785b1a97ef2b2cdb5a8353e7125efc2f90fa6fc8cb0cb1154a4653aaf4092d209eee4cd470b8b624235d4778991e4516e3d54f044ba95603f96e12ea600ab448e65ad2fb0fa57a15c91c351644c108c3a2c1d2cf502b4d2e55c94825086e5ac3175268904825ba17b61ffd58f410d91b7bbb6b9af24a7ac56118564e087143508d51ebb9b56d05a30d8092e87f8cbbb4958262d9070117d05187e4f5159a05f56584efe1df1de541be845c6c4e818290dc48b0b8c465ad6db7c15b58d729470f1f367028a726eb1089141dbdffe7446c78a44ea7290ef4ce1a594f2775f43c57ac4a70f4cfab31ed1803ccd0a5753f28b93ff18b90e28fd570a55b2485a11cfd9edc7a80b0c2f8b9e0ad5f618b8d4f621d980a2c442ccf0807de594be6eb3e120d73b7cbc036a49a72ce6a352ac33656c2c692c2c8040982d2dbbf1eb4415472d6efcac5aa78935100f7df39b3e10eefbab95fbdfc966adf9b64da2f53a84c44b344279856600407ae96c1bd2d0d4b19f59034e8a5898c46570efcb84e2b0c79bf5ba5d1d645cc51d72382b44f9e30c0e24f178f83bfc8d7fae20c8906ef2e954738cc195668bf2714733d20c902a4a2321671324aa8307690d9b4d3ebf7b2daba826f44957124e802c5e9a457b158b9e6cc6ca0e351aa94dc44f6ca4b7042331f2ebd315544d835b5e59af3aa0f24276212b6df498c62d6552790c968ced248bd79de4632e66f8f1d94a52ccb4f418f8009fbeb6c2e62b140a6c1b7307448d6433e9680dd5654a3f51ccd080a427627f61d15fa408902031220289431f28fb4017feabacb614a3252e97ab463d5926e3b158e60f92aaa3b7f4249c6c5bdcaa059bf38e6e686ba3b057faf36c4b7883667d2b434fec8b007133e4a320730e2f4214d41444ddf6a2ea51a15420cda43cd9dc1cfc73a458100d1c2eeee6f138a711cb51bbb7078971145ed40b017ef6f3811749448265136f58d581f7e6ab48bfa4e48396fac150f6b5b0317c54b5879db46108ed08d26c19a38baab982d42c66a2a8981ccefa0c1127d76ba762e58c441a08fc76e0592fc5c479e06064c1898778ec8a5f18e5478fcfc8d79a321ad59fc123b0c6c873338cb0580e42c245980cf9a710d65c1a289130f989c37fb42c7b9f809cd3e51b110ae8a930022d2ad587fb0465556c6c2886e0a5779157b1089e8e02ed9fb65e198165accd215c41e75aee47ccb43c7566a0a4c60162c0a56212730f3654cbcbd25645936be23372e014b3e1d16c71c19573975cbf9302fb6713fcfd939acb4fd01fa4725a1e007e5abccc321c690c4f66f29bb0ab5213f9b7f08bf59c368f5fa0f283dc70f06b0b1ef9d3f9b45ae49da8fa74eea463f6446cffff30e2e733284cf10750ec6a9da3605fe2caa18486461a08e97b8b4b64059196593096f0895e0f8dde4509b3497e984addc0d45b551e9dca2d089f09668c582ce1c20001c16a381d130b1181a417848a6bc29adf0fead516445d8b872da33070aaeb21f59dbdcede070459267afe059bcd281724ce5fbbc94d4d41815d39f36659254aad82d09ee38d76b64ad7c451cc25267f1ef31259641c9655b93640eee2c781c00b18312faff8a6d0c087ea001df0fe98af449b5e0c530e5380ea56ef73c83ce5dcca8c6ea585dd0b76efe40235df1ae2b1e6d08329fa8a9d4f1aad00e5cfee44c861b4024591745d5d089e92abf3d023af21ad2780634c2f96beb40533937cb226e920a58bd22b0ab01bc4c2d9296ecf6510903565163c13a2ca3976c874c9b082a44a534ad31334e21e7c0e2fa5dd98736c66c524258da5658b8f0d089b40894f2b7bd1711326a1f4637cac457e0c08c7235234070bbbabcb81ff72ca45f842ba5df5ccbb19d96837d5f65220422627ff5febec2fa277bb5bb47618cee250918aba873cc1e21c136906b9335c09cee1506c50128fe63bfce1d3d64f1ed7b3ace9abe51375cd19f1a34ccda2bb631a9a732174ecc999483b298f76777ec865c5999f5451927e03de46934729c9d519da1443636576193a4a44a8bd04d8863959af30c44038b5e646509ecc9111d0c07aea4637bfa6e2d04b98861a354875adab9a0ba890adf0cbc87d69043dd8535dfe04c046729c8b340765da55362e0d7d8d9da5d56140ec3041f9708e0d699b39010e31e381cf1282c7b318059baf1779f3bc73f842b4961f0b3f49415e6c8b67e1030f6dbcd1a2961a2f1bfafc9dc49b38972d1c3fe250bf5727dd21535f289122c56e9eb4bbb8af6d01cc10d1e371b2c78392b8fe7f8817edbf2f9df2ae6351b8b303639fbc4fcbaab35ef67c233e99fc6a3fa9ea9bc07f9f409763c6079d300f8ba0a8ec87a5a721a399200a53775322fe84e5cb2f61c1875d0bc35c5455599cb0429cdc8ff1bbedc31affc4531db42fc4106634da1986242957f64af7706ab344745d424196e3df46dad234bd45f369d7e2462d3d293ab9e4e0425af181767df7fa0f6622c49e8218986086b78957898ad9b201531adc100534800a646abb952d97fbdeb49850c356941e2d3936744bf077d8a0ed70a4fb19ce3d5f776ec872e8394780a350fe5a3e2c12b721492b00322213311160f983ee2cfbaee3ce9e23feda4b370e96fe15378918f42f7327895633c4cc8f042b07d10c0d4723aa25fbc6c937afced1cedd49ff1c0021eb3f574bec72a781a9ec01b35959d6fdd1dfdfbbc8896d366dd6718ddbdb41431dc8c746a349b68e58dbaed53b0ce570e367da02b6fd001da98365cf95d550da0cb13a9a90ca87a4a1df976555602b1f298d25555a09ed71e2733a7d360d463dfca969981dcd133e1a99f08614ff83b5fb819d51ab486c3e5279d737d00a1ebf5fc1750e57269d54fda28320469a6c973857ad6939f4046755fbf0bf3dd8f100cb6e1b7874b93717f67217d52b01c7a07f189f9a522185b766a94d6060c547f4ead4d341310c43d8394f67345d6340eaff8d6cae0095e98555e631d153572fb4ce65970d9b5c738c5aa88385781648d84b4dd1f69a5b70c5cd4530a0e369369e16549db56d8b5d88a8dba0dcb1d66449e67893542693f938348becfc6618fd56a4b25128d53aebd007c6ea18d05b55386f8a9bfdd5f4b249ede7d0a956441edd815ef40eb04fdaa8f17125bff0ced02e6a47cdacee7a8a402c792abe32f0b768d4e030810ca8aca5d8601186accc0b326a40e1bbfb722f5303b763392beb195697f09ee8a196fdd989d1d32c60129e200bb6d03181f933f25165b5e1b9a90bc4c9ad947400a013108e6d3b661102248b4a71f3f4fc7a86efdec0baf675b17237375332e8e5a5e86fa1db296a3945838d7cdcb1893980a0335375ba8a17ea9b72f1235000c761ea13839ed2cd80de3120434e257ff11ec3fc4628b91301647b1f68303586379ee4e7c810e41bf149b1235915e0788105e84541f1c8da92a8656d30b096e741a00681c1e706f21a3e25922617e921d1c1f184a6df6408a03c64d16e5971f6cbe41002533aa56b987d23964866c653a0c5811e76ac16bbf1420fa073baed347ba8de4cfedd3eb98cea136f3135badbdd4792430eb1eb61c057a9008650f101162ca69290018a5b2c74ab235772638aae9eafb93130266af558385808c7fe67d0b43c4e9ed9476dbc1f48996180d43d077dab506c921a0b2655593b832d9fa0f398a994fd6dc4b0bdc04b5be23481867c36aecfbce64ef8d29614f726bade2b55a50171b0370f99b4ec679b4acbd5c42e34e6526c0749545fe8e7a9dd79ad2d9cf50a69cfcd44fa74914e2878a9e4f2d47a9c005b7accdfbb252a372962c7f440873a20378a671df9e2329daca75a7708e90c6312c8362316ba1b6104f615ff0ae4720dc55a2736c724003dc403da4c2d141b24e50de22255e7f38e8819300b6e00b9af967ffef28843ae91495109dea0b6934ab9bb681df8030b774bfb89ef463dbac7b728361df295a0de8f0f152433a0ea213914b1db9368900e903a9d921c4f4d704fbdc302938208f4c081b97d8505b1e88eb13ff9eabedd2fc339401088f783a0c1d7b65108e09a61d70f487969f288fb5620629943f39bca97d31bb13fd7dd96e0ef2e785190a12a724d09ac8c4bbc8978a65cd9e2ea6d370c41148af6741475239c65d706a03a024a4789cee50e52173692cd8530a24c96cc57d9b9eacbfd1c32ba36983028a5a01419d6452bfe9770de7cd5d7b158c0a5a242d83eee7190b767e1b95de18eef09cf0a66e12eea91e2dab8a2b390de189b990714945b055d8cda7d1a8766796d1981fee45fabf09e07286d404ce91e8446ca0a35a14fb968cfe5514896963248448973cbb8542498870b4d3ce2c5af366f8a7c4de7c1e829f75245b2eabf836dd688f8ccbbbc85581d74ad81d872c21172bd56fc660aa08a5f9f65b100a93ad5e669d4bc6e6c66706a3b135942acbc51373f5c33873f0630c4984bb8a39a8c13e219a72c4c7f2383a5b3181463e562875940851bdb0b9abbc4932afa881789a57e2cbcc219e166315d6b6657f3ba7101b917edfe22016421597e1e4bba707ad3e46f517195c7f1de32fcf4cfe5ad5f2c54cc648c85d220890d651e01958f2df9e2dadf7219f416e46e010bee9053bb45619b2d7613a3cd0f73dc3acc80874f22a46513ed97330684f1a4dc52b30c688b80d7e41a1311e902dba3627e2708aba04d0c4da1ff9cb3889e4808eafa04b3df628c84c584fcac765312b44253909a257af68c736fb80d17c241dce29158b0f31d285776855e44943b86292b8fdeb5857d5c09ad4e5318479bef980a6310fbd04d42aedc549514a0df992b8f1c3855b5f74b89d15ee70bdd57a08ab3c0f5d1c9ed6c004d376931bcd9b4c82d9e036660ba08a06b1520abb90f3fde617629ecda15a0ca72787e65e93ec835cb0ccdf7717294971dcb06af30f916e34cd580551eb995f7d331dfea25c7d8d681495269f8a628e7cf3d869bb4d32a71f4c7ff9074f51298986bd1a19d9c22159cb051479f78076c52209e3d7e3ac9fb4600b2a6a403a8b8efa7a27ae9e7733e207e423abe1620e6a1a025e7928a6fef6ff9371944b14f14454e5493f0df19c9611233686e10a0057cbd8c6f303565d74a924a015137039ad68c14476667ddd542d02b51b72641ba2439101b57542fea58699a742e81db4dce01dbde71c7ad2e34f1d8dcde8bedbcb6ffa1cdd2dfce0eb5b252776fb363a05152e6b537072e2422a39a245346e38034734de230dac25710354ccf8daf27358d630b149969e1fb59356fa7ae82b3840b3fa4d00e0c64955082b0bf218089aebfc989b9e741415b6ca0b1d545e0a9fd032d8a00849cbafa0d3053dcd4ca57a0930b0a48c7b687fe06fb8a9a68f2140cd36a75785f1413fa4c0b679ec998cf5c0294e8766cc8e378470a00e95e523ac3f3148eec3cd552d2a68825508b8980a7512099d260cc47464a4cfef66b6ecf63628b6022534b13b5b6d3a3b484b564b719c6661e4410c4100e39a6f0724e0d8399a8b966e75128b66a26015bcea4dffc0e3dcb02a63e02398069acd9f1b734508337fd17ab420e464b28c4aa6bd28ef8e6745accb34551eccec073b3faf626cf9213ca09dc226f4d4cdd5b20f9b3494eb50f31f1af00de53d48d6a3f1087696ee254c1dcaa1f4f439126e4cd143e6054aa4ff41243a40da72f5256b0fbcc20f022d72a09262404816c42e1939bcc3d92b7a60627047fede7dbcf85b1ae9669e6f81949600910afa13ae0b5f86e20122dfbfe0a31ab07da0eb389991ee2bd3746b300a6b55602c7beb46048ce684e0d40f6101706a7d1324992806badc905acc3652ea31887900b0c16f90bed422cce2f6a3ffe0d85803321802c6418e90f126204dad378632f6e43fc183a07db372af0d7a7001ea23a7089ee3fbd550ebc3664a71910e0c40b695a15b23628993163c517cb56d1585867dcc7ba3d28074b1b35844eade7004abecab458e30061f3371b5efb732581c1047b75b93574292b89eaad0bfa18a773b45463e2fb4acbb75f3ba243002316d3cd0ab77706f3927f58082906da0a40f4f79fdd44f7ac96a47024b0770960c03af98923f333e86db9259a6fcb0adf8ce75a9ba0d43ec9b1d7c9fffad95693a377c0999fc3596b1dbfd7b700caadb253e4ef65fc3442d71b21772d817643e834817a3fc10c1a7c606189fc69b0fcb71b03b3468f28ebf32e1f2e68e64243ff337bd0200a61a79257ca97bcf9510f561cf85c6ddc7b471277cd1aef5024e4c006fac74ed3c5444e6d176c8c39f7280a223c5ed2b4630d2423e5be4ca8e98c21384d809e95cdf2835debe6ed3c7fe479488c04323d1b615e5cddd8e02768082d9b96f16b1819dd9309f63c02b08aac18aa6e83520470b06e79de8a5b4212c8c7e745548bad2b043f0a201c67a1ff1d66c1883cf4ed3983632801cad64409a91653bf9227557882a8185a23f830a3b470ac39010d53e669087ed809a96bb8f46fa9da5acb0713da553b513c54aeeab0458e1a94a623313384f920c257af5f5a4c2ada888f702ac14aa85e997660a4150c680d5e5c447eedcdea3bbca5fa14c26d0dab87f1521f691889396cfc0ed1e08d38eae2f6c2fd2fc22db53277130873906444c0763f570dc1d8569173563a02581481b6ceddda5f750c2acd36b6816821b5071618a3e64023001ba324c768cf4ae239c1d169ae03a0d1463d554bcf2064bb18587581edeca991406a29c96a12ada2452037520cb22a0ecb9c646599f35572b508fc33344b866ef4aa979d648cc594b63f1317cea13da51a4171afd2910ac45b0039a07611af5376f0887a3a9c75e1ca5f119e445feb9ad28aab4c1d2536a664be892aa3d5c2b3188737faf5a80aeb2f8468a78957b2a44cbd6670d698a1f6308bdcdd8a6d26981a6bd455e506605ed56836bab8519302b8e38474a003ea0067770039d0781842927a0ec758f5966508180050b02320a30a48766e8140d62e5591267847d9674f0b4296cd9e8bb7f50282e1597cca1edf234f3a81983d59508d46829952d763e04cbb3446a287653463f9b16bb3d8f771338a9ddb25219754c9224f839ebfe6c19ee2c3e8c0d95b306d58aa283fd175e460a5607f16d75dfb478e79b14b4e5ebeaf52f3501cfda32abb60686de1e542634c4fcdc8c7fe5db45f4702fe117f29c2ccecc9d0363d42ed2d37324e5adfbc8cc405286e9c49852eced89a43042acf9cedb71f1d159be9f171802baed69df874bac26d4a84a40b206456749791f538cff0b088681ece371dc08ea90b2cf8ca5c0c7087f8e5ccc6e0a119783c17fd4f1cc7a4bc72274de6e70848506e8eb69a66c454b13d2815ca12649d9983404fefb1b213d09f576108d4d121998bdd978b053fb68f3f7c4ea970a93c1b338d9344f025c1b94925f4d6b11b548d2d9e70ccaccd9e083f58ad15c4a097a0acf6dcec86a2d5ccd538668195a1d92fb130d463da63f0a63fb1870976faa3c12f81ce257ed54addd2aaef0a7a80d9c9f07cafe8660ea002f79ccc62a0fa50e5e582b48ce04c3db2f9730410c605c9b0b238ade0c674a85d630437184875059f93dcea599dafdb6eccade5f37067aa46a93ab9977194b600afaa9235addf2254341de4eac4232d0b83119af598d5dd1551c47c3011711e9b33e8c058a903bf6df5d6f05b62bf2fe57ec4c134f1a5860eedeadfbda9f8ff04b9fba6026d0bc7004109af7874744651ceaea492a4da5d56998b5bf8a9a85d823955fe66d20874945f3420b7330341292eedd14a27c7b6b2b64164589e0afd4fc2b1e58aaa5f7e456d683e90a95f3a20d964e6b3592ee7e125d9292b7d776dcb76b3f51df053800dfe340d467995d065bcbeaa90286260140e623210b4ce8cd44869e1f00c725c8fe9626f2a97fd402e7b346ab440f4fec702cf54d8db20088a51b36d2220ffc2cadbb98c638e27852400ee7e8c1c19390b38fbbc730aa0ee5290a8950b0fa308c95a481fd4e2a3c4bc51b19030494800761639463f91c24fe871dacf3ae1a02d23cfc1258dee01427adbff1268bbba3d2315837bed3ffa5689e231f8d870b5c0e880618450c3c5f4871092ac4612b990bc99b01b39aa0e934b08ffd1a8ac45674620675c3e837a67a03d705f857b5342689f725332608de6ea7c00abac7c8f46dd3dc6bfb2878570768a1ef343f442d117af66f491728bf1da8fe63ea12109e8f98cfc321a2ed13ed328ba51140dfd9863b91edd066910e32f7b0ea2d87849af8f8d0841ea0597098084a9206b1a879453359fc580a0d47d61a9dda724576b4af6afda1587f4e6d81422355a3813b2a7571222f57da694a5958428ebe13f304207801a0e9b94ac16a9c1d16d5541be3d2c50284df7ad546ffa205d74a0422cf691a6a450f17938a3ec5400daeb577dd0c9225dc2ae8f912fb28c4c892119b8ed2cb29572cfa0de693a196a0089331d2a6cc34e87a695c8877b2bfc52e73f3194dbafd1064612a929d546a085578617705dfb03237610a8f160bc027064b9d46f126186a63e586319231f3b95eebfb35d2e95fef786d24aa08ccdd0df62379a7d562d7e54b703fee724947a1270070ae55af608446d8d24b958cc69440cbd31621761e0bb805a62b595f5efe8fab0bfa375a5e8a543d50f86f4878e501ea64dafd7a7d0e2118077a1d0f2ba06d49b3fe642352d201f2de8b85ebd91b18d99468fc325a4b9183c0ebd9c024c16fa4d7fc61c81b487f9332758a3459ce3cfbc9999fbaa28f381edf55e741ef602a863aa60fb7358ad0316a73fd31cf567fa52fc73e233b0fc350acf80bfc1e8a426c921c8d716e831f6e69f39c94d00b1b92a6dfd3307ec9f19154820af62ff756a40486401c437ff191e45fd67ac17bb30c4e6893ad316005293fd191e4a743cdd9f3932de9f99387c23300affcce5a8aa9bed0f2cb35612d2fe4cf378fce26926d218c5300f3af7087bba16458957d26ea5a843c837b4acc3f7c37f4fcf3de3b9e538a46ab7964dca475c1f82c012c8aa7f1b40d1812a9a5529c8815045f00b3d576e2c3914ca7b3f080e93a34a268a59d65404b1dbd53857860dc986052fc90a30fa440880d9914429939e63ef9cae501b86b702098be42ec35fdcd9ef1c83ed1916bf240c43b471f2fd24cf3ae4974c070c158b404a93ffe38e59c40fc12e1e8582590f35437313f201537c5997d67edce54fa1e477563c7cacbd9b0dffe31f7a030fff3c8d43fc89cbc4ac2beaaa2fb7c512a1788185f9c5c23024cc675579405fba4a7c77fbe970502d9a8144330af1f7b353fc0095c51c080787ce17a5dff9700086623dce72e75e5b414d4707c65067e7195cce1f95e86939ad498a773699c1c2dca88c9ecadb24e9b8b3b30c2fe68e4af4b5bc6692c69d9bcd60716ed4474fe56d937ce8fc3903173947ada0e55656f5c793483dee2cef5fa6bbfb549b2ddc8d17064ae856fc7ece556a29b0671af254097d65cc01d112a67f77d8a8d01c3410db6e1a1d1034b78d7060904136d46ed69fc8abdd8ee0d8af84caf77974fb6507eedd7501a682d18f6f1693aa3fde4d41c75ee985f2d57936a706521ccd8476463f3b3c2cdc07284441bbcae1aa4d885903818765d7c1f226a089d524d4ea9eb663173219fc6a48b4fbd1fcd3249c045cb9880ebef8933292fd1b3eb5ab118f4df22152bce56105dd14da876be99e1457551424cdce9b671d916bfd4efb9c9f5f56b27f0e2be92412d0ad4a151af52930e14e9fd80a91cdc291bd9ad98f560e077435cbae831392fa363fd270b815fe6d9bbfc7257eb50cfb626c7b37bf80ef6fb0fc99dff3d6c26bc36d8bb21aab9e4eb9f05d52fe789a2f26f4b9769723da05d16b73be155a732a805fd68e9770a0c9a9f5dadd40ec5cb880536ba1419020f46114c01d0ab19b340f67499737bf1a724a1577433d46dea861f8bf26b56135ff5cd2a6a634d7d866e639db2ba666dac65ed3abef1bcadb1257ee2da1d2679b04b5bfcc7a826d64c965cada520b92b385ce79e100b540f49c925d998bd6e40cca39bfc44956b5e1bdfa0962a2fc33a27a9a393f92a0e6f46b778b45dd31fb5cff0b135d3a5439deddc2315f67318581e6913ac3683d9aae9d325e68fb7bd1b9b5f8d988fafcab2f86028e3a9ffc29fd25a4ade43e81bed3f9247ecfb098820133cef9bcd7c1514320574b467bb35898183f21da07310b248c9cd3bfe26da181b1fe04d39845a488a4a95bf0119decda2274753512e9d77d9d7b616c969ca628729b2541a501ae7c64ec844afdabcc003aec659af05eeaa04a76bdbb16dd8ec99365cb4180d587d9aa40a02d5a20d9858c461c09fb8c6595e12264a74c186e50979289c20a2e01e95de59651c8f331456425e1d68d07252bcb9b205725667a36301e4c0eba0b28d79165b7e77e665720790395f2cb93b3cc7b92a9e4ed5fc852ffc89a130e18ed19c9ae786286ee3a11fc583dc73633d747ee16c240730574fdde9873a46a0632904a26ee601f13d918e506e174e1598a2edeed2f277793b8ef1a3e599df3fba6f73865171338254ca93b091b4e82388b996a128a2023de17406d7d8c027e626612fd4936f206217508557938b2b96917824953317a0ca6e17d1fb9738d59af82838616641d589b52475120db1b902e5afafb87b9723f346a9816873473d02650f8823b89dc257cb25914958df558ab9a0cbc16e31b0fa09fc8833911c7635067f5788d5542ff6aa1d56d03b45e9e45a068615fe2cf811123d2a9a85a572ca60ba53eb4e967435736e5698f359628e662957b6185388ed7203a8c1c5bdecb2632d7887ac2a69234126c0d1d79f8fc4a3e62b0d69e3287b71c0d5a1ada1644b79245a09bc8e81394ed9a4f2fbd4d1b69923905c2fe33bccad4d779ad6c07777943bfdf3ab048315a0c43dc62354091037ce7dfd87b5c41a9c844910b6803a2e368d52bb9f0b2396b40f46217b0ea2fbdcb3a9e37e5053432ad38e9862a46e6820646c8af6f17837d7bde6f9cadf7701db58a46b2750f63b2748de94519fb7c29826f693d2080349b40538fd54e66c2b57c26e5a7dd0f365c8eb98961b0ef10c287cf355cd0f3ce8a506c04ac5cc0e6b993a20de32467e2453b8a228d447062e78102971d05fe89b7e3e8ea6f5a9648ae4ea3e15ba27d0a49c4d65a3dc6f328881dc7321e1b0dd336c8974b6ce4762087a61b29f203c4057b4ab5e52274762b828f1f594b8b612c84cfcca36f72062804b8b763a93326d96d1b6d20ad8de298282929cbb0be371cdc1d58e35d0fa68a42190117641b1680cd1f0afdaa995c8021865c2251058c28196f524c753e5f19aac25543dc447d15b08bf5e4df60ef4b422d16d44b2239fd930c3d26a90545992e061f50b90ab9d9a577d4925bb29f298a8fdd4fc5d1314cb73e8987238a6cd6212c33ed232164f78169ee07537797470c09a011280e13c2386fe817f5fb78a1a5fc26f6548ae0ba7aa323eabf0b652b9db91c10c5629fc5640d7df647ec9c5eb1ccf4811983157d31b77a0704cf4cb0a1aa7dae98f04c66756cf4a5ad049f232006b63bbc490e426e2d22b801b2a44598b7dface3e0648340cf068bda84dba93cb106cfa4d7dbb2c888051c48d99277e6ac7244830c5760652c4de96e44416f1b84d84044ba753748e172409dbab5211454e3d18d92bbe6d6b80a6c8619c9c55cf7d8ba37f78612bc71ebc2e955fa80e9a49402d014a91f485477b6f67d8f27658826383cfeb7b9147c4dd37c3e60f7ec52788201acebdb2f198e07a18e77a841333869a7a02754d5c53d0e15aa4af4f27d56fac11ec230a760dfd646a2b6c4416f2d1def6953077e22ebbcaca98331403f31390a78ec016bb1a0c4e8647fdd234aff185ea9593352f30585371577234ca74047afacb5e1a9bd009c969dc60e3656d65c57f6c55a3c71c7293e5995bc4106d12510914e9bd2c3d796a0db17d3b48db28b6c988cbea8927fedb44f138fc51bf0914aaf25e22129959c3290460c0fa74c051f3a69ad92ab4b2a9c3123257ff0f5e8575d972168653521a60b792df294cc1e52a825f04468d42755510650223976964079122b5570abef7239170155555cb3a82c783f3eac3ea5506502d5d97fb578b2fad72f632d51472759a6a7da5a189182829537503fea88249d699ef6911c07123177a093c6ca16ae90668a0f9f509eb87a5009a251d371133518f87fe07217403aa9c1e31c5b594649f17d0f369a7a88b101b40e024888093240bf5d038804c8085ce81ecc0248425a0001c6e4881ad94c0ce3538ceb3b963a885356903c84db69ff048a5848e20b480338e8761db29114c8cab2f5a4aa70bf22581f34b554959eaeb0c6a698e722ccd32ff8692f6a210d83dc4b44bcfde7571ad0488af93088831c5e695020a1371663161d01debbdff240465a167d0b4355ea2c9d02317c1d450a1a87cdcd21459959531e128f03b640762c77e93b522e10bf36f5566c2029999d40be2ab12b690d39199adf525d71e6fecf2e8e2cc95178610db777e8754294ede3f72e2b3b2c3f129c69c5b61aa99180534c0aa9054c5d5b2066e5cb89001b0a942f338006d52ba4d72af0a3094954105d99cf89085a0ea91a93452c92893d95bac84a7cf885a168e7767dc67ddd4057bed172a2f0855c58b4b6a306435ab558515076be4f53f5fd6aeb61d9d03b79b29bafd2e5400a664423a941f26ff70a5a829c08115ffbd34228bce0b3207b14caf05fc8f99c14d2067111ceaf4786d64d44625511a250a720654ca63582049d48482b4903d407b2be1e29cde2db40730c0f1a7443b33ee3b4dd11daf33d12da6f2c81939f1c3e573f3beafd333133eb17679286cfe2902554983b6a1439a2f1291fcbb0538c4816ecb05810222680b20a5419b284a844e270b5556169e015e65192d883e82f4f096a9afcc7698f30b61e879775e4bf084036da557b44a76540a3ae1cf63a378a1dca2a044e5756ceb64b1f1708c17a17f5e0cd3dad8765aef88a14ace3cdf963a8b13c2547a20e8a1f0fc63d2108e141d9b498de4f8520143ba70029276e5876f9433a315db1c75063231d589120a8b46ad6031326a56cfb5e809cc98768127d9a24c318e9404ee41b38e9258eb6c1e3b5107137ffcf9778870bbbffcb5088a53bd403657caf3d1faadbbb38968f7047433c09b4bde3ff4c19e93d588b0ec918a085e4a302b47c04ad80ed1eae2493468984983c2728a9dfde861ec1515237d5487c8e63a97d66e4247eab51924d945984bc10d6329dd248a939b7779bffc848a63c979162ad48a9896983f4c157c9d309f71ee65ddf51610fb917f4d87f3ac72c39902e3cf09276c1cc6be898e01920fd57ff11cf7e025f9bce68a73be94551d2e09a2ae9abfe0d20706f58e7f6092a94ff8da3cf14b8ff53494984903af7cbd39966f19a11d8c5cc8ffb0950170cfbefc63167baf7389685b631522ebfd57d3979356695dbf3bb195fcb37f7f745c8c48bd168cafa23ec2a1847a14089b89f4375c0c4dd479cf0f3acbfba3c38e58008fc79757dafa7c41210c3b1ac040c60604a4021d145919eb0caed1eede18e2703dd90f6eae3dc01963b3fd4a60201be0408d3daa1f1558af65a8ece4e7e6e2e93ff89192d07c2e843299c9b6db6bf28a6f4be9061e565138cce8c08a331884de42d651d91e241c352b82f59a36988afc174a5aaee98614faa4b924081e67ed1c77a9e540232decb94a9e965949226609f59ee3097e89f80d0e0b781c8d28fb34c317c6aa8c158b5f58805d6ce29225d83410f054eaca3a7f56a18ac21bbbae1a8bfffe47028f8db9816cc7b9e9ec506f6fd02851a8b2637508a84275b52f8c94683d1c531388ae2581228093c740d3e6f01eadff717160f91ea07a569fb5f4835633ba87d6271cb07a0dccc95d233dde1e4e7e5a5cd17d14dfcc079ab4c37da02e5478e0ba09a260fc038c3bc11e1b7c720b8f60f24fd7cda9d91bbb1b3be84ef6cb07e969e9989ffe28e9feb21e591074c0fca85cefec4685dea6ba9768023811710de0dee0c4780d89d70086e465d4b91bba6453f23a6858d5179b96792c5805a372a62919af8849af938d4059bc62013d59b1d0ce0e0d67145e9a8dfb0efe2c2c8dd99aabceeea23beebb9ec4ef729234cc829545bb01bac27f8d1bb99b2315d471420731f77a0bba7afe70eb323cf1a2d6d4707deac4768b2cc5e1da6389cc723a5fda071c6db53c02b9fe6cd8ec04bc52040c71a077353f78fc6098add236780514068724237dba287be7b687f59083ea75c3de774b0a3e7f027999b71035deac90df15a0115e9a204765b167bf212ce65c0a6af0855c142560a733bc231a2848fc10472511154d92682e13a7f98858226c9fd8abc73e90723af8ec4411f5d9191f33598da255f34a28fc6ea0b80843c3e1708736c5f4a3f66f0f3bf6723037f82476c5a5cee18a025c7b2677f07128c8be567829a432092a87bd2fcdf5dd807fdcd8ad2216f3b0d8493821962eb1f885e456ce46716d94b69ae0601a15aea8b54b3721145886e7730ed1d477c39ff205864bf99d92df4a153bfc5e10f90149fc8c4ed726bb78baf0c2e711492f15edb4d42673cbc083f4234d84cdbe3e3acc69a1d623d68cebd05f1d81116bd63588f0002b4010a4c827d1fdef0d5973c23d0f77bd8709d3128c00f58da85375f695e22e27d271810d1616b1bfbdfbafd1b117df50a73ea54ca5c4fb84f81ef8ab46976e4e850976005e6c97b0049003e8758543698cf83af7a04ff62befc03ed108ca84d7330de31fd0afb561c16ba3aaf5844db56031354a12843c8a49ac37ac3c88004245f4b45df78d747bdc151671e1c0910a5a66c403eb5f8966fd928b05dfcbeba010fbca5480e00f275c174588aef820a97e0d8fa1ca74554b85c6608ef85f78ea81573763ae0fdfb4aa63459083c8e5605dd3063092b7df9e368ee80b6d5e06524e477cdd051cd2b3b450ebd368510efbc476629920daea9e55670ba32017a2882cf895ed9a167104ccda5a095d686f19d34171fefe3c05ea7220640f315bb5d587f258bc011afc278881186233f0a90eb3658bd5625665e5b69080d19728c84ada117e42af4aba51c49968632061c062a61619c3fe51c0ee59946c042513149ce94decfab11af5d039ccd6403a10ecc80382d4299987890947716c470f6c8794b3a4182453a9f7c1e824d28d4cdc759415ad007c74c0ed3f37367359c27789c53054dfe2bbd6e7aee113727f688eb310d77378232e06a79908e4acc710a52922289163d659b2e5c81a276a3fdd712a2758a4e96c0fe2d3a43b2c1a94b0d303521b02796839e4a35014f89955931724f98de3b07f841d320164471adc40177c3d30d2eb52c5a4d18b806abd0418624a77f135f1443e6e0663e2c2c3030073041a4f14763ca97ca017ef3de44cef58f799da5ce525d3ec01dcd4ab03f50047a4fe3a7df6e9e32fb1896f1811ffffee222c17bb714d2c52f3e8b8c735787f0c7088251415873a420d7f8e9fa192bdffe58a13cf39d542ee2b568641bb7d20dae43bbe6e098f643a46d29ca9518e63c9f875a573c3ca86e2248d2d0a7902f7412dc6a01d43623b452ea806384e04693a73576bb533a3050cf0a864eee76b97d402705d07be9c79ebf8cb17bd44371d9b9f8356acfe5e69ace4c02a8ee0f28098599df3a0c88279820730a6f5ac4c74134090e1567aaf2ea44d6788450276a775f5638bf527b78ea73888992cba3fe3fe2a33dfcf20e29a9801b8651003ccba40629d170c1b75cc2a861362114876942a8f41e2c35ffd54473c0ca8b4a73abd2e35de1bf61bfc684fd72af2e83f2ee89f9bdc01294c312cddb5cda697093d6e6549a27f2b0f21053e00ef0cab8a833abdb2ac5301355e419defdd2d48fa9ac4852dea0b18cc9bbb737b354f5bd310b623e3be763e8d544508bbc7a98cc4da82e02083da128451e0340a93f43f86067851b84c2d93e35702c7c98a3f2d37feaeb53cbf4e99f1afd4e70484702375086c92cc8cd40be5c49d2fa9da02107f7e44af108c399d6e953f6d2279c080c570c0c82be99be8abd9ae0ec684bd3f8dacef041a4a3ba3228277605691737b8f210a701c0188ee94bc0fa1363737faeef1892a85759280805f18af524f4702f117be2164a881aeb243682720921d028a5e3e1d9133f4865bc75a5eb6886ad7502f02865ed04b311ff705543cecabf22e63bd86d10f0efcc4a0fdca46cffa94db6274d34ff52055a9b61886cf4a9e7584e8ae89ff49a614c175052b86bbab33473ff87842fecfffc0b27996e49f131b51278972015c941da17d80decc37f6b0c1cd689a7c272e33f8130c00d050a78ec007cff43b609587a01b7d13ad0f19fda48acc57a3689b1be8b62c16e705bea1378c16234dbbf61144e421aed9f9ede6c26a069538a4984541fd3bf6e9aa2ee8114bd18cd9b930e42f1bbe44d017d3a2a057f3d30f1005158e2101f7b8211f3840cbb7ee53c60e287eace95b64cfa0f5bff4e80201709e94914a32f98cece96685ea769e34a608a746363c8b21ad0a2d08054a96413fb42f7a8ad206c5d380b71924c98d849eb53c48af509c8a703ba76f4b06db27ccbb094b930039c8a4d64f69164d64b26b431bb0b3f0e9b1b3a14f3f0296c34aaf05c526503c8072f82508596d6cef9f0e12ccd5c6e3a8cb3f22f1a9de36213ebee96915c6912c1d8fda28c5582b77416c610371be03d44db7a18c21c3f247830ccceaaeb6770fab8938959054eb24fdadfb9e3560e94f37dbb8bb4f7ecc09dab7ec144bdf39881316e613307625731f6a805cb8209538f3e8ed91758c918b43bdc617f6f4cc35398c0f1169dc0a0f1cc334d72996aa101aba6a5273a9c61c8128f77129d4659a5b220f42b4ba911983963894d7703b5316155fe127b3808466b288f758077c2e20bf63782c4ca8b8e05930c97ae5c4e401985515dbd61ac1863d580d879f0a0e5c95ccb445dc186b113759a5d818662e63cd9cdca24baccb33bbdd8ea6074031b3531970c881550be77f57405a1dd0bcf53fe2e0d3b8adfef9be3f6b7c13fc5021b2763cb973ca3b80c5d1c918212b27b04d446259f799d15289c9e0c98c42d28104804c5987535cace482ef5aca0329def8a3863a6647204187608c8b517b53388ae82e676c54233f71befb232f8c88c34c89e2038d99304106d658564dd749d5df32b4cdb2775ef0efad1cb45fcce481683c7fcfb03b33924415e2383e1325d0398d44482bde8ff69759e81c5d3155c19ec606ba5d9ef7a3fb824dfa311af70fe7e61c12df3af4fe35f1642d88a9ac91b8d0c5a94c4a2b6eb5039dae293e2689a30d948a53f412bd082b4e9150c1428fecf9570fb06c096aafb1c726aec3dda9584b768f1b3f4245faa161fa05515f86ce97013e438feeac6c9e9ba5a46874b21d803fac87cf27d12a32a26f609d9b815d2b19b96815990e5a42d6c31afa651daa189eb9f9f0297caa498c8d1ef0786ac26b72d067888c6570b3b65898d401e38ef6805350f57701bd9a26cf0956823cd991903a48f06cf11120194d9c365f0a11875c5096197667581c01a9ee8463aca6b4dce3d144f019acb8c3a6d07091811d5d3707d137cb095c5cae89808c4854c411b6014d6bfdd748483a82846e50c5d9a53cac0bb5d5adac76c034400f95e1a3d51a658080fbd54cb82e732754e108ce0bebd70083de31880f24e63a6b637cd0ca027df6c74c4fe6905c24532407315c2322bb4080582e02a52b18d5ef0331e4f9971d53ce9b786ddac4c69548bfac0a58967f3e2412e1972565ec715632b8234fe15c52e14932a7f13940cb3a0ead27d4fd9d11a1ea74caf429ae01a34dc1635e9420ea0339555c72749303b56de5875ff62e7fadc4d75e5c63172686e0214117d22d75d64d87af20112d558a5564f1d3505f534a9a3c1b08ba81dcafb66578437bfe1791c124ce77617f6d4e14bca662da784a72062cfd59294eb0795a23e01506cc9a2e84edb5d0aa9340bb294f9c7853367256c22f30aa971a5265122337f2ce48d8d64672fe97b73e465ab6f3d9d1498d0f16c1760f585d70d42436aff4a4e8e133ec1b2a3eb678fa08f2f8afc1ad85fc058fe839774e2babb78279422f59e371787eb017a9c8d1fa72037e10f1efef65bb271c504dc43c6e4c4476d7b3806ddb0b4171b3acef7cfa1ed156c3004c828c1cc8432dc7f0e4cbb1f83ab3e4ccc9860517e016fbf045aacfd4e48eae852618d6bfdee6770dbe34a133efeb893493a4852c6f63362d8fa834dcca15354478bbd52bde1e1f4714f73588ba380107de64ef13519b075f2a06603250d775add3a33497b7108ce77602b70a46efb57e3b08a4554b341622ad8957374e58cdfd5d6dd01443f5b9adc975cdc02828c77e9ec8a0aa90c65bb7d67c574265ce5f589f20f86c558c4cfd75c62b8e9d737f36f928194addd5b6c72c97fadb3851f755ba08c27f42cdc223120bbb8037194033e4e6fda2ef7ddd6d82c4a2af2d099bd7ebd88def36a2561b2b34b4da8d0754c140983b8bb6ab33b72f18c940e38565502933e91ec54368d2d3cc564cdd5974fad49de1f307bb9d492b50e2b49387453ed556d5d49417abd8220042628e014bf20d8919689584696ab04df459a7a2fdb35a7cb89ab25f63adefe64512d55ac940fa93065f4ab4c8ead4ec61a62840f27d940f82af9b0e5657afa8bc4c0ab6beee9ce5324e06a8b9cccc425b41d224458916c30e18bcc87d6b4d48cd4e0ac3b9bc3ed103179be24bbb822af5b70f5f6736e7dd40cf5849fd2b12e385b90380a7610798ecac7ec1730b13256df10bd5174c13f98659a9b8ea100dd881a2fdf50745729d191fec00779a870e4e1f6aaee59c803c6b77293dac869af3fde238fcd10921e698276927d45a405021308b37d81fdb7743adc3266fec616ca1511bc33e03e7e71247d36d7d44445eb0c261ce1770b059eae19bd3305b9521d132bee7b9d99004f6156e723b8032e2f285c0b9a7ecb687b5126e6d2d77e38aff6caace2e4720f3c1aad9dc0a67004b31c626504219d1ba4b85ab47b0d83d3e39491aa49c35726a22e330bdd4f274a21b94cb15fb0f1f1965da3716d5362f53c4e16b83b2509441f074a5859994a83d1a90dc88163ed1add3ac70464da347320220e45d25f9426b9773babae442a79284ff350494479a8471dc7f7ff35e430d798e1cf6a4c1bc39aa7c5ddb90d4fbd3f0e3424b2bfc8572fc9f4a71b60578542e69e4856153e3c5bd3dc5cd783646743e65e52e9c8642132bc5e9600639444653fe9dc3cda4eb4ff27018c8f11ff451ca240535c54883f173c43289c2c9808a52004e3447311841b48cb22004b84832220991a31eac326b9c1a0a05658d0b1003a0772cc91f3eb61cf916927a5de436732d2fe60ea8583f2f02f854e2d72686d212085168640aa6700e15601e010e67d19535de2422fdc27fdd327aea48824dfd343ef0534c760a2647ca8c76046adbed4c56f1ae61680487876eafdffc77d61eb8080d0e502475065f0c4df07456499c05c5960bc3513132999f71e0a31c8c7cb209237a18a70e132f03e57a0c1aca8abb2b3fc0afe0907c6329c4067a1052688fae4076d31076b8cb35721b417fdf9865af30af5f4c615c2a8ba62ce5ed54c326e5fcb369437ca89733a116c6d8aa06d36c5f14703b4be111fad93392abd9ec3b147e88c5750f64360c0b8048800eb1b3f8e2292cd3bccb3d090033b9e7b096408988db4030870001c6b22a30e555cc7751c888290f0d8b5740719e3923e96ebdc9136f69670c6e5adb3484c214d0c8ab6eb6c30f150893cdc7c1e6f822953b830d310e9be2251e341e5f096c294ad52cb925bd4fc81a25336bb506f417a53eb659c919c5e88d552933da0bd7dae155ed101aa94edb30f0d38ef2d74e8b33081cddc5f63ee597a30be0316e3bc15dc95f499464d035874f425cdc34d0422f01245b578c86bdcedac408323a060c4f82937b66661d170221943c7c64cb4a4ea3e3862201b21e9f2ef3b0e74bd568c52887eddbd550376ab3b7e16311013ad8d228be348eaf6f7f0bb91bea2bff4e9ae92c3029563c08aa6e9e8d7d46ff65adb212c8a31d45e49bf32f145f3ca185397eb96c995e18aa7b65a084c5a09d21eec56dbb2fb0d63a06be47b5304b1c4ca33f2b66ef04fc62ec0a543d4eafdc09d3dac1536f72107ebddcd8cf93f42c1dd9cc97c0957d4c09f0930f86e2658e3b50547f7d3847d8969d0aeb13da02e049365878d1dbea29d725f6d10f617978502d5a65a786f5f0e72a99c781b3c7ac6e58d11c11111a58b06f89f9fcfeeb8bc9ab5854a48c114c226681490cff0c101e0ad443c35960b4b5d7e97c09560ad1fbb82435db9e7efc75a0311707bda5a23baadcd2a8512d055d8f7cccf2c04618e28d298fc7b7b26223ff6e85ab4ebefa57b2037f6b0b560f7b7b66c8ad6f4054b53a87e2c06e2227b925e556c4c21539ec72758b6cb8625ba6c30655949ad63ad118a75286a2026102e11432fdb3c964b65e1e85f34a5c2e1340867faa6fe43d0729960e52094498205d744e6f8312a126918203253c2050f9a3d603428392ed0cd8f6fca01298a9e72886094a2851c0951e5c3326e8ad8102876b88a8f7349e894774a023e3c51d7757da16807ac371295744fe452772d32223b6fc313b229642e52b4b279a69a88eca2284b85e4c05bd96e4202c35a132e7f12d7c7016449a8dd40e26cb3a11090cda551731538e617173a7b8a4ee951f3d3a9cdce11310d334f541b8619e0b14ddd08f9dd65fe1802ea7d8e006d73ab5dadf2454c03e88e7e3b281d1c9b911aed04e625157790567095e43fd006ef6a70018c404250e9be13325c58e70b194ac8fba55ac8d2926fea0525cdf980c73755403a674b7521a457767523dc343428065335ace9991ba18bb1a4cce126850762bbdf24448066cd4b76e302f3632b059e26544b00e17a456cad9e52776ac44532fa669fc479a4eae9a622c9fbb4409d28e00b4b9a18edcc561a18b4c686b1f19bd71f73ea5d6f13e15c82409513ab3011b7475a5b7d800a27f364cd372c0eb3c1850dd147c6dda2f72ed24af0d93d6f2940bbd9ad01b053434a0c5e57cc604af0d027d569644e5597088d8f3f3e9d993eedef428db41f6de40522608c4b91436c642d2533a703661b95e1c94f4b9cad7fa18e46523d4598f1fd8e4655c06033c3ffe4ae149e815d48b759581c970f9847b405c80402218d37ffe4d4f1c19037130bfc6d55a6088de89a205e5107bbe700781eab32f3c4af15627f6a1c31b4f0d7fccca554f1203c008a9a9336036fb3a36e2660b1c958967c0ebf1d18924e16d0a3946be6bd1b10c05f1644466737ddb14b4b35c5e4de974b9457bfa5457839fb6f19adcd1e8d0feee2458110d639e79a6da8f088dc0c06fb326e1b2f3382deb06b2e9301bef1506aa709762b8bcd62190b665789aefca523d7eaca953788cb13d85bd984aef37da564d494e4708b37bbfda691a22fced8c64e2780d853cbfe0ba5d34ed171702134334866068f88bdb2155ba424a7ac05cda3c44fc62109d7639a84451cd0163294665bd25f6ffa9568d4989af4e04c043c3676db34cf10a0c0a427d1b368819e267940c245f1bcc47fd5e656abf5d4a2df20c732b7a2f825db7acc6c65e8191474e2915ca14ccc6c09049d9300bd411fa4e8868daac29ee2b87690ba248084ad9a5cdd23c383d8ddf7484e85e19a143a1845166b9da7086de996b91ea79f8d429105f012a95d55068202ac8328a294e84b85ae3f492bc8a0d600eb230b660222d110077924c3dbcfdb5649989fe8736e7b4f99ac4cb1afd4b7b368bd1547c969363c7d5c88edadb6364b0ed813ce3b832accfd82b3a5bb9d8943b054b9a4bd9d25b09d86d0eeb61b9d5cc43e1f03415d3acf4fbce03662b679e228fa9a3468188f6ad774de5f6a287858f68b7839b50b8714ad8bb90d617e18af384e2eb0cef701e2d7525e191416baf630b59ed6ef067750bb0a2ad6474774ca209deb6b72ea723e478f4fe1bbb73c7def7bb856a8769baffb308e8f489204215d2424747c245747473a91c6b112b4dc20f66cae6a2c01b2ff2434a9473e33862966929c2add096e8aa89018d61c1930309f1895e460e448e3e84c953463405e8ff842dd648cc883ce6e6ed05a4c5e606af227366b8dca100eaff227fc1a480cc8991b03c0aa24e5d1e5081322092df5c62fd464ca6027d2e892fc137c4251a7059c9372b8eb893805ce17b99ec03f8c029dcaa57c98af8da4c05b79115b7e20ab0d1920d0a07b8298ce32204f76379d049d2ad1b809ddae161322547364f5aa852c5bc424a54b8e041e63b33a72f0089f2ecf39eb93276324f94a9a4c1e75f167984226f69b39b084ef8425c72952525a00b5fc2bce885a213ffc1814a269a9b5424af4832d152bdaf31c663861e77170459311da0834c44353dcb04a03b0d27105cee6f38d457ae49aeecd93c6dcea373f5b3f2db27f024f4dfb7ce621442d8d8904ef746cb0c12bc1031fccf41df2b1f5f91e6b891ac030138da3d8d4555bc2fb2228f334d34b1faf33ff4bc1fa4642968ef784f4e6f970330a0648238a3da7018f4383cd94a9eaae1b581c32a0c5633322116c415e693ea0c51b19be509bba6af0970b7e44ac1bb1fa41cb8c8bf050127c84c80cd3fa34a3a5396f2ebeefb018cf8e0d648d4e89d5cd1d5a9bab124d7481ba268be5b7abfb00bee0d12852c16af8569431ec4a0b37819de4d5e13fff16b3dcc36ff7d5f0cc510052a17c8bddda83e128d2538445680deeb32bdcebc94872aa09af88e2d20fe481c23a3af2140d76c9d2341ab8b0f76ee490ec1c6123f37bfd1d0eebc595014add5686b0e02e096bfc61128b3760d367546ba461b33bec831699f7f721c3df9309f40e6a12380f8c48908851e21be89a30835ab55f8e1af73278b40addf10dd8110728288d35123ec2b6010aefbd77ff551841eba326fc7296deda12e9722881cd355156488a10a9770cb02750816801237856aae1dc2e0a4947bec8a543aaa512cc53312c5ab6c31022d377bb51062df549838daf59a791227d8e351d32a740fa6807f35bf953de1c4123349ecfa72a788c8a5a63eb6df19498517e7d070c65e301db6ea02de24b64e2f8beb737cdf938dd30335dfc31e052d828d03c5e793f716b7ca61db69338b1dd3792ed2ff68fa2c1cd038f37b97fb361d5eb0d7818e141120e69a73c648976ae174405e2f28879ed5e8935a107a3cef75c4ddca86cbd9336bfaee502ec98a3af920c8491d359ddcd870b62168c64412af8c571800b47be3341348722ff08ee161e2a090d290321223aac3ebd2f5a40c85298915761cb8de7030ee6737415281c9ef6e9721fa15272bd90cb556f7917a0238b6ca185f0d103c3a831beca80f41c94338221dc3858e4bcb79e4c9fee530e309101578230989b161e7725083acbc66c2604b9016e9807f021046f021b25f1f90cd690ee697b30a6bef227ec99f747ea7d98e186c58ae11c6201331d6704f84e033beb15b19c7aeb747cf7b0e7b98cf14ff37b39aea78cba14b9b73053e5eb68deeceb3adcb374bb74a5e95fe5e6c419dc6c8b41e0098337dbe657c77153b4ec895fd95845104a53fecad20866a9580b94d2ef9a001d1cc2666a92c20f4706db28bf32d3944742f98981776454df3a79536a6f5143c76982f49bae28a891ce831b807f26e35c1b90cc44de9d32ea1293dcc498534db7247f43eeb7e204f2d3a7c5e7a9ba32c97437294c0aed53cca0d0238262f8cff391a51c0b068dc0c6a8b0513a1d9fa2570aec0e4160f58f376ba2abc84b5932b5850f2a1a3ebd5d904ff05c4108ac12cb46194085a2eb22fdcb904aa96a9057053946ac43baab000a755d3bd941c83e1707dab3e6abf7f35185b48ef009c64344076fcff44de02aacfe18e6f0c88329ab2740f2faee62dc68c11779048174738727af0a7443a8c55fdb98e5f8d801353c829853a771ec9c0c01e3e1a113d209a950864ae8b5e1197191f2d14ca6bdcca03034bcce50a41e27f1bd22e135d581bae968f96881277fbf0caf28c39607c7130a58b4665825886244bb7bd4026cc1bc98eb43f91f4d9cf67eae74bc6238398070b61eabcc4f43289f21404ab41af9ffd33a761c4e73cf70a711f3e31c9603d391e48e3b791408211c4582dd4e30f22f3f7f80f9bf02f5050eb2bf509f474d6aa8fec7f50eb8b91172fe667dfe6bfe4fd74b0676e859bdeff91fa8b171504d173e4b493290062302410bb1cfc463bd656066bdc9283c5c6ef61cedfdd1dd4dc968a95039ca77f8d6ab14c7265b832eab4d541e3867df2250be6bf879f37488bb6c8824d4dabfe3d2a49067295b4f5cee4fc841d3c37b4bd1515ce69007a01ecd24153e2d49178b99182f08f1c10596da8d31ddede8273fd67d102b8dd984a41f209110b237624c3911a008b6a235f92505d607c97811ddf2e2099e40a5ffbb6e7f1e7da5f8751974517eae78eed3a676c12fdcece482bbf96e6e1d02dd4a1b1974a8820b572b6799b2df02e466993e51173d369519de5a3d8695039b39789844e2d74cc34f6379d75c8e0f2d55f06f210f5514cbeec0a59cae3b6b288c2b3118ef205520515beade053f79e75a32ec64c420c874ce4a419ec58b6dcaf27c0a9759e5492717841a3533dbd10bffcfaa1c7cee7301e95dd7080e7e5b10163405e877bb9f02366a892e1e9e023b01df294a12050e94013b8d59616a011dea8cf3be3cde719d55d86278b94bf7dfdd855a758d6e976083dbe121d51c2b6204304152c36158fe1c8cd82352b7b5169e3d566ba0fd21e6a07a3da36b8148dce9827331108d79b540fb449407f4b66267c81b14389d4c3b549b955a6a7c7b5262a84c4b2c5d81217a74cec1212a549c888e026711a0724ac76f1628f1c32245bf6033bd00549457be065be32e08530cc8750eec3c2d53e0bc147015c76fe2daae2123447c58cc94093797f6efe746e126f3b015140eed2cd6446ea945ea98e9b14886fbe503483615f099e1a8da059700b804d4fb02d6b5230c383f7ea1d150776c3f18385fc2a8171b2680cfa9696634e8d163222cc21eb1cb4477614406c91ac11d02739aac5655728f54e419564da0a348074f53951e74856a9ba74cdb5d37fe02dffd4495afdacdefc7de8bd01a57b656f02ec7d94b54cd9aca7166a055e09355bf88031ff8ab26dd30c441f744ea92ae677150ed18862c532d948f71760cdd0f535a8fc576cb9388fa128d5fcbcc3aec44c8ec6b4059d482cc0cab0fe6e05807d11c28a0c22c43ce06f45b7dfe503a04515e07441d4cdfb3f79de8ddde60a32f625d72fee3d2728620b98282dd75941b24d7de572f426cb693cbcdd39a4aa188c92a3c260aa02dc2c4a43ccbe489220760285862210205772c8d6264163bab0c8e8b3807e65c94d8bd91957ab8c00490a0f034bad308461cd3aca9fe95d3397abf1a1904534889a9f039a592a78b7f2738e5b04a47a3a4295fe9de883ecd9c800ef7f40190ca08a0dc811cc62863158b25ddbc9b592cd33b43e107a30e24ab403911dba91a9efef38d5406d024d8c523b507a7d379e883bef602ca580b5e474ab93eac40a828d97caa46e00e5a19885893c2f6769930f0319d3cc0a7cd1c3348ae31ea5adff1bcb3a6a5250af102ef82a0ef5ea490dd94fd029d6fbbff60d3deb6d89c62a705f6baeaa0ad07dad9ff64765cc01943d0a3cae501eff81bed3f0a216746708f16c9e938cb0f1ccc7b434340dc6a51b5551d80add0379f0eecb170b7e621ede648878d69542db4210acd47076b61867af36859207a2a577c1c86d801ec0dfc59709756d8d30a474d0d2c381ddad0634509c72aa048d1cf42d4073d5f44e888465b2c1e9174b98b7880d897bcb69f308b2b8a7b1263157370157315d61c33a6633371303d5748ac71d38899088191158b536b457895229f9ca4d57591700e24849eef88463fe182151099fd055a534783e028b3bbb2b3ceb782088fe204424582a466f9cb54ccd1bfe3570a1685f7d950f0f5d5f007df30f190fdb8b49bb10ee49ff93273d7ce0a831df928895c14c0dbd762b9cfaa3bab295eb83cfc72f401f280e5574c5f8a8b07f01fb66d27621af949ddd66c2fea2ab74f66b90f10894cc63af1b478c93e7a75178e31744544e5dd979f8e528396b83f196803cec8e2d3b88fe865a52e85e85c25e626b776df9e3a1e554d62affb97f1900cc2aefa2674485bf9bd1b8d4603716bba413ae86144249c4fd20439aac1672d7e82fe4abffac8f1456b7f6548e798821cdc78c32c2504a9c53720b78eba4b5736258822c7f53a4023fa37cc1c49131b00261425ffc2dee815e8f47c3ebe3586879a0d0d9b7a151fac647d61008ca03d0cf913de51f3634e42299b8df5d7c8c7d5f54c9f12617faf56e1e9ff3dac8896a6a0745435802a8b0df44ecf426532a18715ece58b7f6f186193885f5efc8f4b17fc7d7191d99dde996f65851adad9d7aa18c8a8f0530dc6a3514615a9400817797dd32cd7f13d96f37e6c2b601bd572946271cbdf4fe3ccb2f48574c2ecccd203254ad019b26aea4a345cde88b0e1a32927553f36acfa2c17fce4f0bca688115ee64590e77c0518125f3ad0fc2c7a05d2b53169897d4dcbef13aa6d3022455f2bb4b5f1ca7794e85f3a6c41c588076015e06bfa5ccca67d2c0f0dfd6f3eb8f0ff4b2ffefbe2e5ff5d7af1cf172dfc7f79756d5ad7f32aace18d2c855d6d5f9098b0ca3d3a217f08aa7345c55344e95c1c6d68e646d4c7dd669b2b72978fbb0ced5d247a6129787150ce4e7826197371a52fc79774902a0ece11f3eb14241e77d6ef16e68bb8d510a0479ce66ad6d1587bb482d332404285782e4024406656c3e23cf61a5705a2ba71c7400a882e489de211e4a620d0bf3755787af02122977c8bddf08f3422820cea2422060a2a26e59a22c2387f15e1950587451c1b705dc4c17cd7c648b801355143a35562af5284eb1a66a4d8f3dcae18d7ea5b3afd73837053931587c2436a844bcfba0fe3826fad14ff2b0131b3adf1250e29eb752d3a4354c73236c83578cbcdee8bd0f2b6d631c813a5bc6d4a893ebb8d4dcdd96f1c9d25cc56cc975c09b66ebf60f268eb5e1ae5374bd8144446916698a18b02b2e50a09c3d883bd2bd291c57ccf53d73ace2f670d59212468193c55bb3cbc69b91a6b69041b581ffe3aaecf32e8380aa3a03026107ce00e1c68d11bab80a65192cafee231095a45604c12146ba732e91e2bab10f8b1c48e7cf0e97ef00100debb20aa302f65fb1538fc33e1a824ccf9cd34ba33cbf80133be4142500c832a225201e8ca681c94696fa4269f82783cb1eaba719134e1c60907469665f17c61f1b508d88b6511fc648ed1fd428b78755bf21ad6ae963d9807e640671b6e2712a269b3e09c5bb4216ab644a88a3745c89c3d62d2f3f0b7184e6414778ade629fa7bbf94717376ce80592e61863c4e8c5161c91d4366c04614013632103c2e561547a98b15a93722f580d1ec27495d92c0f546aa64424003a0462045e865dde6c60fa7c46a79d488d2096a985048e7e9cbc46bae37af50149b4d395be8e12826b2684a30a927221cf63e57840f91d3ede6502ea606662acbb3b054fb3194c84d902ca862fc6489a970502c3a40c040d99f1dc53dd4efc98acf072e6c89032103a66840f50a5620f6cc6713e60384d24eca8021dc7d6a5e1423688dc63e1b807330ed8c36e0705d6bd11f9182acb0d48d1756535accdda41d033bec323b3642ee6422880016d21de98a557530a04fd109ba2b8fbfb42ab9ccf7e24e6ddb0d8e69514d4d8801926b0260b5be93439893282e2e521d34e1ab6a52d5dd43ef8413175717283a501f6b6bf23dc1beb41e7056c79bbfc61d16f972b4eec446a8d06723568995786aebddcd2cbe4502c5439dacd0b3f5ae80c01a0477f1bc92f330a44f61e49f2ec0c01214aecb8b0b7eaf38edaa3c183b2502900cd4e87774308e1ac4700c9f11ef07a38b70b9544d8c0462b6ee92bcfe646ff81ecbf5b2a76b5a05391628e45e03e08b9aa06d48b882245c71a129611223a55e4b286e9cc8c4a2a32a4c5642288670090122a20e3ca6a62963a79855bd54aed227425a5a48e8dab23b4b2d3093d0af35801145f01dbf0dde0577d1fff4f76d36ab685243858418b137606f3c1453b20efbbfbcea187d6871278b201cd82e35827530a628e604e3893936dcad8de6d09447dbbb3d1923332e554e94388da8165bbc52fa2816a735fa935f82814ec06448b9fbb4d8a4e2fddbee334286adf44b37f1b19dc85c82423040aeed1e0a8e2220bf2dbdd224d3ec4ec90bcc3c7fe7ff8004540014012c79e09f5de707856b88c8d150ce3955b32c062215fad1410085f01105a81b15700a15cf4025cdc046e2144fb0c51205e15a903ff5170449c0428ff631027228f3a0d15476720e7001a86ca8038c775a4bb03e2c66215d5a16c02f467bc5bef9c752344dbf7202e7bd0caa3974a126f803df88dac247befbdb7dc5bee24a50ce90c170d9d0c598d3f77240d2fed220b88f67ac303e78eb8b0a03747447bd84d1635ed7fe550d37e498946a8c9bba0fde51691687f51d31e5d47b8e1156239a984e33a4eb2f6c16cff661b62d90f432c6badd8327739c9fe662d575f5e5e362baae7e26d568ce3c98fa0cc898deee79c73d61eabe97d87b7977ccb20a6e74bbb431dbca1d19ea53c29dc0dae6ecc4fdae7e3995f58c33c5a42d3c2ef91bd96c7d68d15ed57f24c4c5869f65aca83fea0100ada5093f82efa6d63e00d1d411b0c12a1a3877e8989e324ff0c7b375725c4ca7288456345ee0c3bb1bb1dd8bda4ba97944e85892fa90ca5eb872f29ed2c99b77defbb1d99dee06a7f1fbc1d26c21b2ca2fd53b0bf50f0de60db8e9eefbd0441fbcb3ab29406bd27e9c8061b2d8faca18836809647d68002575ef8e93cef5f4228c95f7a337b51b8d9fb73d255545a7e6a5939c9bfe58a6656698558e2bdf75e70e579f79360f8dd9c6138e79c1304cacc2fa5b86de33e04caccda6d5b2ed5eeb7fa1e502614827fd0b1e61aed7f41199ce26aaef82f90091a93d1d0d1535244491821a0cdf71204572196f66f59591b7ecbca5b56fbfd513a96611ac3ede0828f5374f41b73928fae1b2fe17c3c252ce85862d1d14b3812c67f824a8c4a469d2aaef7121c5d746482c6946e9c147bd1156d8c92fcc5e76aaef8a51b6f7e4cfbcf5a3fabf6e73f93875153136aea6aed2a11a8ee67672b9edfd5593b8b493ba4181d6bf713d7976012a42ef237e9f033c90fa323a6a1264c4347ff1b9bfa8377e9b55d678fae1d994b6f2c443b0ea21d03d18e7f68ff67424f958553d434318df6dfd1de44fbffabb2fc04ae3ce7396d2ab8f2d3e8bae00a1c95703f2aa1a377e36b64a2fdeb081b5d748402f597d4cb2773f40440003cd227a9090499e062b43cba9ce4af81e1cedfa34bfbcb94846919bd58114245f41f3c84cb0b0032f0733a5964c7d94dab2c610c03cc7050f80c685a174217b6d0879dd41ab4888e99964772aea04574e462a4936810cf33c29dffc53c3e9d26f1a4cb7e98aef33d29e9f6a3e607906ecbd8125ccc0b9c649b78648488b138231c9c8f18c732064557fd4225c85611a2ab0cbd45b0244474b55148aed5fd16c13496d64656efa93f3afea188bbc9d85e88602aa3edc5b66d23aee5d308105674e45aad2bd2330f570631bdb90eae667fc33ab2ff2daec4151d451b213f6e57f316573522166db028048bab27dc2d8289527ef452a768284fca949414152cb527a3a2e22a2a2a2a2a1889ae4a8c88392b3ad603dc5f42c7aa613afafa2ba2f744f8755277466ff5bd894747cc1795fc8c9e58c4828e55891657228b8e75f4594a8f30d5135c82b3f65e91e89f6b8d5c2b860c9d5f92a5f48b9aa6d613bf05654459c6d5b42c1573c5dcf2d67e866b6d98837937777346747dcf0957e5a712adb9ce119a76970ade335ae5358d07a7ed6b9f82652945c7ed1bbd28a546af692fc117a3edc55750462ba5740947bfc5259a0943fb17784f3d4b283a6e2ff07c6db4fd6884251d2b28a3927f683ac674fd11071371357747d64ac152b334e1763f74fd8e86dbd1959504464d53734c74e596e8ba3925ba4e2dae9c5447798beebddab3b62bee7c2baefc2412eb6b1e91fbe2391c3a56991799c3c256991d1b876488e37824256d3b85c83bec0e8c8e395e862b82adfe10c5cd14ba8a383bd05565a562b3c537e1dff24d64bff25ccb4f52cc982b46dae3f06f791cd9af64bff23efc5b7e733a9c8a73f9c9c7ca675f9f6b5d7163e5b3f7d1f2fe9bd319697909ff96c7807f4bc640f62bf96a77c85a57e76e712582655f83999895af2f8abd7f0d66625abebef6d3487b2cdaf8a9e5f3df68f9fcdae7dce30a2ddf58799c7b64bf92473dfc5b5a7e26e6edf674acbf824727d56fc14cb8ffe24a92eaab24a9fe8bac92d275083051ccae46da96afd8be077ecf634b6bbfe596f73c93a3b5bc37cf8a8bbfe5b708266e2225560525826958b4a3eb7b55dc2daec41535c913981234f85bdeaefc94e591f643bc8fff95af79a4e5d112fef971643f44f6d1f2d9e7ece38a1b2d59467d1f387b8ed13c9bfb797423fb95cf7e255bdbea91e5118eec5bbe25fbf09f89f16c5b4eaa7f4f404fdfb33959b63956c7b17539898636e16a5c6a6e6f754e30f7838ef5b91a507dadce07e10d45434f9243618e868e3575434dda57118c92ea875034ccddd07174c37b7036d9e618a1cd4d9b535b995f4b676e9a11d0d7a0a2d7a470ad7d91c8be0af6bc21778b9c8d9f4637b2f72c7333375656de5bc1a28d93aaf62b1858f15ff9d1e81dbcd1f2def25e0bb64e1ab5dc6879cf3db26ff9172f5e03b51cac62dc492fdef3b8cf6ff867b987124eaacf81431ee0a4fade12ee16c1a83b96311b7ef11ab62f5eb810ffe26b780b963142e0fd228f2a8884f633e7d8f2e8b52c82d1514a98d1d7a031143482e5475fc357b08c61196551081d5930a3b52c12a11e95924e31dc31d0db0a6773434d2a7e7a962aebf794b09fa5ab8dac3955ca8b2b3963fbcab58c60d15bb6789fbc0a965a84b78e93e754d494751d59951fd454adad3a0b401cf96a5454f555562a42eaab10a1a7104bb4c3d2f555507eca62e6e65cd01f2260111147c4829a641a6a788a887716c2db1601e1cca56bde56d3fa56c7bab81fd4147e7d0e454d617d9b2363b81a8e46d756d65fde1667a5abb5d1c070b7084699e81a6b65a140d46ca895b802658148826d05e20be28a9af6b336a7baa1a62d82e150d3e65aa210df82de2211b1886721ae3e355afb226ec8ea60db6a7bba84bbbdd6baf3b7b6bd65c4a7466bd9be5da2b7f71c6fb90b0f7afb4db5ad369b8d0835c998debe7b75b02ed6ed50d34607bd7d88c30a734224d4b4d5416fffd9fe53a35f70b3b5bcec06f72fd01a485b278480d9327869ed05375ac7d6d2db6b787b2f6d7fb328940d340feda796201222ad6529616c96d9aec04f38fcb3ec837bff96e31538a9be08e627eeeb3f8b539d34610227d5e7b207c026e8585f8bfb026aaaba7e8f970d3515a127eea6fea4a12699c51f509b454f146b06f506103ad07b12d13566cf94ae6f3515d44b25454d5bc2443051136a926ad0f5452ebd453b2a34baa6416f965afdebff8562ce6456d76156092361646662f544c19547a2a064d3f2c814b2d0f43ff9f48af977f2e10e381927675811179e644d91447bf42471133787fc1905133226cba92c26f31d31b467273c7a48f67b466ff9543a4a67583a69824ebc13577b967408d40feedcb4971ee843b45a9be05f654054f0343c12b2a5e16eafa5672b4365b97e1af65cbb7e118de1a7143b6c818af19fd33512cdb26cabbf5971fd5b41b9fca4a9be9fb4771add8492a6c39e70f7e8668445f737454638d4d4bd7f52ced066644f533a9b78ab5ab6bd67efbf6d38b3df673f3f69efcff977a1483d9f4fc3a32294344737748c428602ada8c97f82703abd4142403620221aa405499a0fd2c227290d79289f17e4ca0dc29942d3cf50196a74a3e98f84d0718a231b6aca7e8e6ede57749c73cfe86c6be90c537d412358f4e846c2ccff7c707736bad1f3a5572321f474512854142111eed6d23b43793edf9686bbb796de201c99518a8ed33dda04275e68f70cc29130a00d169da13e1fdc918a9a36880aa3140555419e1ce6209cd10f3d47357aead85a7b04444f3f48d27c10156a6603989f329424d1409e32fae1a06a9be5329760e899ca21b20ada813784fa84fa044f084edfb34ad080011efdbe7bd939a75de8e81b8e0025f9cae538ffa969bf4067ef997541787b6aeb35a8031e906b741d1797f3ef700e4abdba79549d437bbba77f33fb0eefd7dd775d2723bbbdbd7db79b9651d2c4d2dbc12d1244c790ad7a647a1bae6449194fe9df2c6f91744ae97c79d26583305de77f969a3c1510bc1fdcfa1e0ccb7435821ceb6feda57252fdad6df1f95a3babbd660469d29c20c7faf53555fd4fd670c46c574e08bfbe6693ed40d7af55c3011dc9ad597d8e899c0f661c0da70b377b0d47d7d7b0a0e1c8191f5d5fc342cea0bae6ad7541d7306867d0f5a54bcd39409896436c59b52b9d79ddeb6eabb32880a6c7296a5b1cfe7647a6b7d5b2173acbb2ccd6e8ec3520992644676fb31490cc776613bdb320983ecd9a109aba217b9b52e92c0392d5d0317ba1331c5cc9d25aa67d26599af69aa6699a6635ce4ee96514880d3c5efda49cc16da1072bbdad9693c65cd140cb2d939a55c4d564c4d0f5a5b5f76a354ecabed6aad9bc695aad73e5a72c8856937d164494e568e195794c676f577b28e2fa7b41b892a57d6e19ef9e5d915f797aea8528d270055d874ccbb28c8efeb6d66db3599669d96bcd928e5956069d3a96628c0e909180b144272801b944478092e803363a7d523178d265c7d0d4884707590883cd4fc7ee4736051be4b0fd1097c0c51262437aa069e6a045149f144cb8020d329a192464e1862958618a170ef2b085113ce408c20d5686c10a37d882c6608292ec3ffbb11443105cb84114b3da209abfd601ac357ff78ab5532f608cd3e0897e8ce172af9fb27c82ecb7e85e8d0b5bf3cd51e42934957147fd26a8c2dd52e7656b28f5237859f65ae22d12599ba59db7ce09880f5a8f959af766a3e76f2b3f8d6e000000795bbd88efe13da3bd2ab5048550f7be70a9f5134bf671457d1fd9b3bcf5b1f2a3b7d9b3fc8dace61b2b3fca3528f71573d8f3c2ad6ff1ad58fc0ecfe80ddf4cea62c2105fc4d1a2b8ad2edd80259b95cc6fbc173de0d95c4d091dc1bc44ab7cd25f8a286d6346cb1c62bda442ac5af1494a67295f11f74b0165748ed0b44bfba7804a7c2dbbc3a138948dd19a32fa6c15f72bae5d09e5b57c757ecd3b32cd3273881532424f77fe0ad5f3b9d74e22cb55409939ba3a1cd76644cf0d899ecf6d2c3df1769d5b0447cb23456c34115a1e89c28e1ed5204fe0ca49e01848a91c5214ac3fe0e81368e309f1d9175fa76d15376b4f08cec8dd36c6699b4b36ab0a0306f85ef619ee82bdac2db262e8f8e988cc4f10787ff0c64f48bc3fc8f25304de25f0fe21ca4f1378ff70e5a724de3f64f94989f70f75fcb4c4fb7b507e62e2fd3d2b3f51e0fd3d2c3fdd787f8f8e9f2af0fe17e5271cef7f577eb2c0fb5f969f9af8151670b56500e0b7cc698dbfa58bf45bbe88f82d61323653b36600bfa70ac6ef6913e3f7bc21c0ef895380df33c700bf67eb00bfa70b01bfe7cbf47bc24ebf674cc66f9a2ae237ad99f19baa36b549c06f7a437116f09be6d01675d157cc6f0aa3314fc9fcf61a237ebbcac66fb779c00657384d60b700761c985600d31b9852005326f0d459024f25f04c02cf09600f3869be047004f03b693e121038023bcb49f31f80a5936c6023b074920c964e72006e00964e8ac1d2491a4b27d5c0f319307f01583a4901583a290198c68c22649cb0f4f9262c9d8480f907c0d24906c0d24905c0d24904c0d24931b074120c2c9d34002c9d04336b664a3a89082c9d441ab1f40060e92400cc1f61e92b78ca979415f34b6a748df625b52d1e5d12c688fdcceadd7dadb5d65a6bf6566f5ad3557bd9d7e14c7bf5ebb06b4ffbbacf5a2e1ca27dcd79e137358b283afab51f2ddf13e2eb5e5708d088177adad0d15dc8d6f2d3e8c6ca088736aadad672d2fc999829e6d01109b8c291bde65db8db6f4011454dd5af5f2615e7d2619ab6df6016985c4133c18206a5a0fd375805edbf412be8ee61459a30c1c23e37834fd8e0c96fab2b4ebd426559261386ffc8076d61b6c984e1cffdc5990f827da17c926d8cda1d3aa2381acca53ccc4dc1e540723b9030fe1fccf180fbc1fc5812c69feb38ce1249d161e9040165282dd81a96ce1b38dba97cc1bda0f7a7b7c8e2a2e881feb2d05f163de06ed042937212a256dc5a6b45629b83ee5e822b2819356fcbcb36610223d1d0d149284a29a986f46384c98c4d98c89ad5ea74561bdaaf416d1e5f1266881933ea88298f02822dabd9b2fad773339863fd0f1785f6f7e4bd92b7a843efcf01a138901c157286cafb73357206489cf1ddf7b78098b60b39e3e4fded20a4a93e4b0f74de201dfacddd40c3e8680729e2b1091d77364caa812401a1a3bf8834a5872899f4838ecee1215afe1af489abb707e127447afb13fc844877fffd8a104ba81577088ee3b8172fe4a8e32e3bec10788f3af5b590a37fce38ef5215faf32ed98c5d8c81903458765ee4510f93460bea0f8090333edf92f7d8447b345a68260cee8af21ef9c004256fd1490e65951c152d5876268d47826aa199343ec984e10f62d951c99b7e2d342a5f9030fe2d2a6a7a1d3afabbd47ccb453561f8db928d265285b640543269066317730c8420b4ff070809f3070903e3cfe15107ec6e38ea61c218e92061eca028cde36aefab8d9f5a529484434d2daa2b4853cb10e4e82da996158bc9a4f1482c13ed6f6193c6b7260c7f7fdb64d2b0ff929a305c644d186e63b6c9cdb124f7debfd65a6b5f82f7dab74f88b4f842586b5f0850c6862fa949e35d9346fd49e3958c6ba0220bfcb760760962b3cb6ac2f0ff9bb3943040547c18d530b2617c8384f11fb918c75790510fab910edadf0edae716eeb6b12f0b697211f2b186d8d84bea075c0f240d17222d3798345c6eb81d703c90333e7f32051785a4e15264c2d8e1507246f8311bf3b4103a64092e442611edef7253c4e50a37a05cc425c97471a97c392e415693864b4e106d7fa5fda91577bbe8b874d8250e72f43fc12e739030fea03fc4b46f171d9797f6175d98b818d92e80d02e5c68ff1ded1f66232e7bc8291d419a5c9094567286fd31c83dba6c2c8f7d98a66d0f92864b122ee40ccffb8f7a90333eef3fd661d270714d184b463ac819defb8f5b481a2e4a260cd7e48cf041495a72de9edea32be4a223674ced0df1b5a85a86f048bef5491ec9b73e89f619e3a2d3833bf576d1e99cd0f08ca14f4127e62068aee0eebb20f9dedf650cdf875c92a8bcbf8b0bf4fe2e4a4e5e2509c8a5fde495687f193a122a43880d2138a84ca1fd55be2067d40d87dc30436b9030fe1e1c528384f11771e80c32440609e30fe2504bc2f88738942361fc2f0e19a163a87b91e5d9846cecbd0ebfd01e856b9f9aba2ec9dd2f29fba66e5aec2b3aba8deede869a5ecc3c44fbefffadad757a59540dae58377ca9a1a6ed75f8a5e68a6b9f6aaa2d384fefd2644de2cfff644bcee8f4fc16cf4a83425c44b47ba08ca785fb1dc75d51aca2586b1662756fffe22d7231ba80ecbde65896475716ae4a88e5a410a4e28631f6c2cfe2675046ec6aad5d68b9ae33c2c3c29d5fbfc33bb21012ed6fb18e2c158adfdff7a69c93babb6759566bad93ce0cb2382bae13eefe97dede93526e73862d2b272159515375ed2ff34b2a0cc330ac3547d7fa12ab9548e5f0d49ec812594b7031e22eb1741ab6e8389a857bbf0399903160ced7fabe24746c812092222e8864ce09220193845f11170c43171d93804a42d0c6d4608b8e9e33411b54832c0903da68ffaed6da6550081d27a8f7a8f392dabab8d57f7cd9d8f6a06759ad55d3344ddbb66ddbacdd3eaff11a97ebf58ac5581c28a391e17258ea7b6b4e45528d8036a6aeac51270d5c6b105afc8ab8dc8be24bbb0a136e89f617411b53ab38e1ee97d4a8b3c72df40807d80836a179172e1637fb57ca88177acbffa2a32bf62ed5dda36bd4a1a651c9a8537f748d3ad434b57f3d7531fe07e8b44a4bc52567a841cee8b28a8eff85a97c3eef0a37a37ac43d89a6fb7db2bffa76c77eb1588c03d0d16368e92f120ede3585f6cfdbcb49a38e2eeff7a807edbfc73e681ffda0fdf73808ed241aa8fc26d980f48384fa4d9ac1980709c3ffc3a31de4e8ffc1e31cde20496e90306b98231dc5bc595ec9a411663961bc6bd2d8834b7bae83f657322aa1a66a848e2ea9293632d9b726a94aa6b63b77475659ad12eb753e0effaa01a2fa38bccebf6a80a86a80a83c2bdc2db2422909e31f6285422196addc66bb3c447b0fb4313d476f91b50417a36591e524bfbf451618ee1e5d77c680394ef2ea65b87b74c9192838f4092e5728151975b6b149f87b8c691f05e1fd2645a1fde534797e93a4f84a389a7403eda41a68679168a07ddc71313261f87f72462ef6b887d24ac2f8bb5ca12444e35053e90872f425e84fde2320fa30b99030fc413cea6071bc8376185be65c5893c6b8076964d218eb9033698c5b4818fe7cd0fe1d8b898b11ed631ca8de2e393aefb031757d1bae41f7075972c6ca4ff3379885e67e835bd00e1ad1bec11ced2012b0a5c124da419712eddf224445b38c883976c6703fb4bfdfbca4a86957d60f6a92643032ba32ade30594b1dc77dc0b68636acec6c42ab5e85d2f0bdf411907656ee87d28be57c5cf40191d1ed3e167a04cc8e5dd8362e156f139ac1571efd75a6bad5cad95abf57afe7e0d5a411b538720556955eebd669596cb10cb2ba6fae25189e7053322d3a112403cf50603fdb91c2d27befcf05e6ac2fc924ac2a5a67a1a9550927f45c2e6957ee0a8048fae2edcadd2aa5e35ee466f120a7bf0c88415cb19c2f2211eb2128a2a49a829dcb85a396dcb342b6e7d6fa359b8f5471d1009d7f7bd6d87fbd0954a18519c1246fc09ca5c506a959678f39ed1584a1831abb4549294aa90a697941cfdfd050744b4976c582f3fadbcff28350b9e2156481be2db87fea884b1af8132dc4fcd82650c87dac025b898954cbd703d3b250deb5328f4f7f62b2873f2de06fa1a34d32aad19fdbd3f084b0963555a49a8e9cb3015fc4ce8e836ffab7ef7fb5fd54867a4c5a63ef7ce715d884547cec6bca565d522848edeb26a11d2623344375bba50ce0feea893a1e15a2d72293fbda424c9ff5f92e49f63a466da68150ff10d310428f3f92578bec3db1bc2f3f988e277dd77c1cb598eb3f6b99918ce7220ce6e271b6755329dbbffa54321961ceed49ee779d25e5bb9bad5b0d6393fdcb849a7e72bde3141b00848e4f5e1bded785e829ff81cb70019b33f8ca23d0aca8c9658f9ec71ac7c96718c7e548246fb25587ee571b0fc4ad670acfc28fbc87e850cd75d4a70f5849be117a968098ae8e855b89c977db21b75dde81a9590522420e392b1c9a84342917e7435c4b2b13a6c748875150f158758d8c6c2af4197bce8e8e0a8332ad1a14347afb5d6dad55abb5abbb75d1e958c4b42ece1dcf95470812bd00624424df72567c851677cddc8193821163571359cdb249478dff39ecf7571710165b8ce7e87822ca5a70eefe52be2da7fe1fe0594e17e0975ce5167d491ef85a3301b4175d8bd8d5153d5fe7627a6fd399b22f414b0cfe71d7fb05786eb284dc59018fa1a7e71285f506bb4a2f2f541485a5e7c7d508e9c41bfb27cf8a0239206cbbff493e8c1ed816995a758d32f549e7e8b4a4b9671555af0d4135479ea79a952513c2f7acfd74cabac8c3c2ff2885c8fb0bf5eb47828a6bac5f32c1e0fc5538ff010945f41791594ec2f8f877aaac78389b04786ebf98b4ffe8232a325521ee56fa464e924942c9d74c3759ce479e9a44f28f48eb7bb3c2f5c7fcf53bc7bd89ce03d412f417aff04cf680abaffb95fc3c5ebf91ad483b90ff10669a1eb839fc703d39593a0db4f7f20989643f88c983d81051a3a66a90c25613ce624173a523ad2bf9a521b4d9f65a5e9ab9c54df5d7ecafeb3a6691a8b8a3a2887bbad6a454d6066e327fbbd147f85c5b2f193c8e644c4e2529745951273920865e320d087d906a42bb847f62c3fca3d469f3d0beeb1f22c8f62995e119725081da915a176552c8d9230f44fb088068b527404c5ac4d8ab501f570b5e79e5626660c8b122c29313fb13cd5544ea2db83607eca9e3e28e6a7d1d3ef533e28797faafaf45379583c2f4ae9abda22d416d55c55b642720dea58a5e96736b1abca50aff38e695f333a4eed45f141de8abf96c3f3363ca0afb87afe7bf760a93fd0cf150adaf0d44cb5f73da36bd6ae96f7cc0946625249b32c038d008fa87805594a5b1616f03f0cd647a97f12aa7fe26df5ebc9d7f7e4adf2da6ba00450be7aee8bde9377ca6b99459573aca0e61ca0233c497c5ff3e8f3f53748c323edb517f1e8535fd3f0e7b787c0fd6f029f0c7aaebee6f9effb092651f348fcfada8bff79cf7f782466235efbef3f1ade32f00f6ff1bb074c7d5ffb308744b85ad65193b8ffc939ee7f3947e83d3ab2d4d6f2833210097fcf3b7844284b1599333ad6bc53320fd727af3d052570f228156f2874fd4caffb3ce27715f49ff79c689f9cd1d1f3202dba4763595113cbaa7ecd9b876b96156651d5df2caafa3d0893df7bfc3ff04f4e5ec4159401df5bf184bfa7fe84de93a08d4fbeefc1a05f0989e079f1a9c7834ffe137a3e19fced3d39cc39c0ff8e00f39ea9e1a113115309703a04b1e741a0ffe022dc2ca541ffd957a5e9dfeffe839f98df4f10093fc2f3dfe7f3f9edf1783c1fbcef7bfb7b16cce8cf7f06a13d9e0761700fd7f3fb833dfb85f8133f586a70df0d85fe0601eee16e17c0f4defee6ed9b1afc300b5e2c2a6ad2324b103b9f98dafdb78c9a5240ad9643b2ccf3af4250cc199a095142515a9262c2a0259a12aa9472c28cf47791ba20ed906244a09c8a5008977aee721d7ada945012fd252f26b0edb11dfa326f1e9ccb582aa5b2cd88f679f55202b20400010204088b530b2ba54a5234e0ca236cb8221cedcf424d99f6236c38d12ef43f8ae94f3ce9d770cfaed6fed131c6662d9a84942c0b59da33bc33ed7bfbaf6e5fe6413d5b330faa3f9bb3b754a37cb681487c8f82b75a5150befe97754fda9934ec77bfc756fdaca6655217dcdb27c5483b9966b5ec79db5bccad78bcaf7867fafb88a0f9de9e90ba9834bcb720940f2594c449de54d78f0894b62828d9c37bea8af21be5259862b5e77d464d27ef652fc7f7d5fe4ec948d4cf2a26753161d83cf27e7bcde3a94fb2f56dae9b0894d69ee35250de4bc17bea4cf378ea6f29daa66929db77b67eca739ae7439ce9d8eaa76c37dff7fdf73d45d9fe036dd8ec6b7808877f82c10761efc50c67daf65aa679720efbdf6b4f3f52179346fdcf5b3fd1ffe44c7bbfadcd2b6111bc9c237bed6db55fdeb36652025f2675a1c35da3edeb7b1d4cfb9afde691ed31477b3924c2d5f13dbed8f3e4edcb5907d3fe2188333a7e79eba84fea427b2f93ba00653a0ebb8b8e52d356931fb2b41c02744f2ef19733d1327bcf43a99dd9f3c2e5de5d3a483152177af0a4cba62c3f753f1333f1fc1bfeb3c7155bbe61b7fff4186d79c78df9d713be134cc8981ef7c59f36f7b862e39878900218503133f8110e1a618082166c86c2beff8c065db13de908b78693302b067e1c62194e8a91ac3c5d4ea2b2351363f14cccf71dee7ec34f4c245c6f28fb5ceed1c3033b9890314e3021633894854d1927a8dee66ad680aaaefb1a0e628f5a3cb7b7b8fb0f6ff989a9bf07b113547f3ff164813b6eccef728f1edd77794e26640ccd7c9a9927cebc91315826c6ea168e69be34ad79b6b24c595a0e018536e3da76c4f33cb60a5b85ada27b5d7123fb6a9d84678c0465762e7da773524aa518ee18c8983be9a4a246bb94149471c2c3026c109ac71469fa1ee5baae62cf38cb596bedbfe6bffc0548fdd733a124ff9754aad27f45e1bea4449cb5d7ab66bb6e7bee9de3b6a79aeaad56ce43466cd7d95ac5504b441262812110046d57d760c42ed94246c01b42a26343211bdbac9853df3b314764714f35d771e31ba63c8d2e36481d07ed5f5f527e028550d0d5b2f25cb2cbb6b8bbb2fca4dde166afc9b0f6f59252a23e005cd9f99272597baf48f43f8e3162c848c3dd2d2bf16e968b7172ce396d4c2549cb8dfd8ab836c5a5b4db1dbb43c7c9d1845800307500a68dd6228492bc8588f69b96151aeed87a498dae908b8e3eba4a38a2e7f3fea5221ee84b4f9034c2bf2a1f2c7ae2cf07dff3401930cbf840f12bf800a9c52ce9abc22469d60f96d22366d791e3fc0cd3f84b12606622761d104b0913ba1af41ca2bd47fb0f761d978499db83f07636e83dba5edfa494c371dc7bdd0fda75b484a2e3accfbdcd968edc2864c4253ac3dddb4e92309cd382ab2dc3dbcf39c389c3d04199907e2eefe6b6bce7842b93dcfa928e936654e299e1d66f62bf0fc3bb736312e6bf6dfad7025e91ebf207fc2d83e0572e43e9ee39ec95e176285defc683d33797a4983036141d517ea2b9c2f33cac0ef9df1d6a023d0f7b63339eb8da7bd1df3f481adebb544941c19eaf58d3f541ef7da00c0814bee64ce8187e9592157ef8db5214ec4ce418c24f58edc9fe9263f82b98c6619200e1d3000a54ccca7beec1fe3ac14f580dcabe448ee17b1908fb120913be17071dbe6f216184efd5101e92b231d9a3647f3929fc95f03dcd75244cf81e19ae685fa4a0cc7dcfbbaebbc1c2d2fd4c4ce7652fba6a85b0a3ceb884e5471947f6dae318b164d77152f859f617196eb86d2ecf0bb7fbf02bde3d6c74fd886ff18caef8c35dbc35a1e30c6f205ee03d2e7198b63bfb0b00761d00d8a9fdd8ca66cebe5332ea8c4c2cb678ace2fecacb98dae58a63e5599e45fa60f99515683096acfd4ade465a1ee1f09149b0892c6faeee937e12020cc139e7fcc00f6bf99ef899e06a7c5113d53eafd320667e0c8f0686bb432c0ad6514926c51d75362eee0eb1c07027fde46785cae763848e5dadb51373c4d7f26b2dddf869e5afc869d6daefa17dd6bdcd37b26c26c676795bed576c07be7b7496ecd16563d9cfcfc5227eed91c9b8e493c50f8b5df636889cc8892c5dbbdad98fed3ea28fb5723a0db93ce2ea7342e8e8d5bf88db715b586bad16dfb0db3aaeebba2a92b703c2e4b65a6bed6aad5dad5bd7d9efb00e8f81363649fed6ca1986ae031d594acfed31cfc1ed42bcbbd7e1315dbb07571d066dbab70185fcb81b0c3368b39252c687645fb71d4a721b1bc3dde06a03855092cd43b20747259f81dba41eb6b4bf922e8772244c46c3108b8e2a290933baecce75dd1755010112e4a5fa7c3e3535f7db74fc947ded66d76dad2674dd575b33babcced7660af41571bb07814099999bd08136e0446d70355199a69fefe67a95e57962b8396aad3535a914fe794fcaae76b35687a1d19e617069878e0e83d2ee495014c5acd6e498f6924e6989ee5e5293f7f1bc32d468152d8f90a189164b529450259a52ca96a428a14a342554498a526a04cad40aca54f0ee5013087abe84a2a6f0ef9768260da96f29454df7c35f29e19450252932140fae244509559222c402c317310dc30e0c0dcc0f182041567e7a6ba35f1b5ce1a0764aa8921429a5947e595153fd971f15091ddddadf76e8d8d1e8f91fad26a948b4ff7b1e929ba3fbaa91c8341d5fd404a3a630534d044a8721136aaa61f5e41c978cafd728876438285773776989f6e76a2eab7e873d9f6db11847ea62c2f009ca70ddd7ed2b11a8eeadb5dd963b5b9f646dadf6eb9ea9f5594099ea71f87e77f37e528cb43369482d1281a226f1c36fb9d14778da3dffc69c95b008d75d3aba2e24d3d55c8362151518beca4a7b88a5456909b54c68a94969473bb812537efad76f70a512571e2946ea62d2903afc152250fa65f5f2e3457cefab118a51fa99ec8f697ffb928e566e4d66cda1a38b74f6fff253965f52a3cbfbd707866118d25a7d467b60b8e16bd96b7f237bed7ecd37b22ccfc4dc2337fc0d0cbb300c6bad5df7dc57dcd5aeab350c472d425a705a70e8b8c71cbd79641bde3aeae6596bbfeb2c8ddef57950cded699ffb0ed7e7306967c2e83cfad5da755dcee8b83d972d1db7914a12bd555ef5379557cef5fc6ec9b9bbb26a4e6d79e2e86bae5daddb8d9e5ff38ddb73f444a2a7113d89e8f91e6863eac904367fa228a540f46ca2e77ce9590467e6504a95e83971f49c73aa6a76e88a0a0942519466276624674e17a594899e73ce1f3573ce15a5f446cf227a12d17302d133e59a4c5e94d2241ed3de24c93cc08c412965e96944cf39457ad29630a3a78c92a64baf21cd732a600a20795f7ad58b78e6456add58997629dc6cc3826e2c3afa86051d7d33a2fd6b50fa1b8ee3e16e8f6a6404d56e879b79f6ac3c2a8fca7329f6c06e3c969f3c2aefc64fa09a1cf719f4b38c3307bd636e5964ef46c2f814d713849e24f56c8fca9b384cc2f8bf9c74f302adb42148810801b43c5224103a5483943350dea32295f244e1a1fe10e30246074dbbd716fed26553a1e40cb4c1697b457f037b454f63afa89be9a0e858998fac4726832c06190cb22cc6f89ac76f110b9c58810a5280021d39f6094c500212240086ca5291b79d3a507d3f73a09a3f54df4f1ca8be9f37a0738aecb5eeb441f65a538aecb5660db2d79a349e4983fca5e60cf2979a51e42f355133f94b4191770c1fb9870cf2c78a41fe5830c81feb052ec83bc613798f2dc8fb79e42d6241de778713790519bc5141066f5290c11b1464f046478ebc63e43d9e20ef3741dea212e47d4930800c862b305c8120e8d5fcb654fcbe3af82dcac1efff8183df31bc1bfcb653fcbea9df221b48f17bd45e039adf9606bfef0c7e8ba240fd1e7537f33b86ee5e42f1dbfaf87d7bfc16c9e0f7c700062cf86d79b4e089dfaf3717fc1ef5f682df31f4b6e3b775e2f75dc16f910a7e7f0a7e8f28b03a7ec7c8f17bd4defe13fc1699a004e0ab3400edca19282fdf567139bd673409be06f5547efaac5635aa1515aa950e54ab1ca8563f542b1cb4ec0df2b6778abcaf2895b7e86d90f78f52e43dce1ae41de34bb12c4ddef6d220ef2b9a41dea28f22efbcc799bc63e8fda52c1479dbeb23ef2bea91b7e86590f7c720ef110679c788f9e90405dec47841de314617e43dfe1379bfa805798b2e8fbc2f0bbe98dd91b7bd4ee47d452bc85bf42ac8fbc714e43da220df9cc0567e0ac5d091778c3147dee3efbc5f7482bc45d70479df12802f7b4502c844e47015ae3eab305c85ab7015aec2dfe38ef171597baf4874f2270faaf1786a3c359e1a4f8da7c6f3a01c6bef1589fec7f10425a24494881251224afc1de304c7da7b431ffad09fc0fc443f468c71fc1789ee0dd9dc272264b361e81de24212e421f53f2a3f35f1f44357a8e327184f3f7cf929c6d30f637eba809f30f0f43d387ecac0d3f7b8fca481a7ef89f969034fffaafcc481a77f71fcd481a77f5d7ef2c0d30f3c7d51e527103c7d11c74f2178faa2cb4f2278fa62cc4f23782a1a65c81cd992ae51c2c400cc9aa95ac003e04e9c97d99a2e07bc67c266cc85d61cf19baa20f09bda20f19bde44e037c591c00f3181dfb495c4872ffda4c4e7977e5ae2378531f19bc628f0f8a59f6efc5781d085e3ffa59f2cf0db85f8ed3823c06e2302ec29faa239d4039876004f0ee099336d66ca044e928f01fc0027c9bf001e9d24bf09ec39385a3e0ef915c037b0c44bc857427e1213900012f22120ff8807c8b72183a53b60e563e46bf93530031620459f0039a30819f24fd8840069002cbf00583e01b084816ba7e303c8dbc2e47d4b798b0490f7839e88bc47d093f286a177a733e2ed6169fa01c000c0fba2f65d69fa2e785f1d71a5e9678cf116753e286769f92ff0f69596df82b7a33665e968f92a588453f0963aa16b4bd64aefd0b5636e19bbd13b745d96a61fe24d5d7a87aecde91dbabc467778539b2d6af916ef0dc336d5d152a5a50c3795e78c8e98bfd548189d93e3ad245a72860c439db0894c189b304aa90745470f8defd091863aa04cb8848e34544247da9230f2bd29a756352d73aa7561e83ac3dd1ebab69dfd0889ede7f673ce39e79c9af5dcdddddd4748e4d8b2f4e69c734eec544ffd7169ae8f4bd3f9b8b4d7c7a5c13e2e2df6716da88f6b4b816ab415a846b301d56837a01a0d0754a3b140355a8edcf5a561a09c182847438172b4142847ab01e5a0503828162a07d542b9503a38319c8ac2a9299c5a83535538273027b16cce6d895c0f7be91398bbb61a3923fb1838e3cddb88569b4a15bac6183f8afe86ae4de5a4184d8b2d46d3e26a319a16a01c4dbfc6d0cf62342d4e70347d8fd1b4b815d3184d8bbb25abe219a36911936197211d0140719a21910024bf2cd355d39ef66d5f86adf6388e0b874ced2b4bd5e938091404b4ca8a6438da3fbba9b506d1589a11edaf8156202136a60605a1a3835412c6d3da7e7b5a9dcb495db83bd4e95c3a7ef2588f2ad4f1a8421d8f2ad4f1a8421d8f4a7ba813eac8199b76ed5179543286b676e7ca3131de9233402df781275db6fc8d859eacddf276f9b49beb39e166fb9b39061d33a7a4ecb31835ef4fd31c83d29fdf04772dd35cab9aa6354195b8d152e2461399bb6c29414d5b461337e49c0ff093fcf9222963cad0f35571ee7c3181bd7efea787bbfdf5f2d38c91d90d1d533fe848e7d4b29b148eb5f78593ddd0ec869a32af9eb96735d94d4a859315a1a69da1e1ca53a69224a9f297a6d9928fc9c784c57230bbb9a9a0b65a793e2657fe067e4ca67ebd6231998f8936427a41566ac58da9985ae12dcf71f7698577e4facff73c543e5d62c6482c25385a42fbfa376abee1997a662f7f824a4c5089fa022de7ef1e2b2ddd9d4e1dc4fbb668c3677b6fe69d67dcbfd24dcbf0a6dafbad6edb96ddf37ef3e024a0bd274b3413b56d5bde3c6cfe40243ad04628e79cdb5b2cb76cdf71cdf4a4d94a3fb497a49834b277cfa6fddc2498c4cd9beaf9da2ea5b48bf7bd9c695bde5e6c7a1e655fdf6edbf6f34ba8124db673fe2ea5ec87d8036d7c7ee61cddc7d6b7dd736eadad9f9a65599eaf399879fe6ddbdbede7dbcfdb37a714f4f2c0f644716fdf664ee7b0bffdfc4a524c18338feac75e9ace771e9cdedebfcb91795b0cfc7046c74c0a16745f4295a4a875dbb69f4954bde93973932f43f9465d128666a90c656df6ca70eddce68c9e5c09559242a67050cc99cd3f294fba6c0f4c3b8d27e60a8a2f158348d13554f812740074a05ad181165e0d5a45077fd0271e684ffb28c647b4b76da1139bde3e44451df45706fd7183f6b26fe291f6f2484d1646da9f68dbc1b4a77d13bf27376943af8984f1f7f800ea89e5911a4068cd93e327cef3f2e868f7b8b4fba4f56f64f47bd41b590feeb33c13437160d4d4c48b7d3438284db56c3d982a8ba9e133b774c6e10cc749aef22c33424d9ad69e526a9a9a9c5655b55d6555c87032d615e48c2574ac82a4e15b48185e05699a72a43463f949ce98395f8633df613bfa9b78312dd3c07075eef660ac0fa5610f9be1712161e4c9d3c314323e0278240f46fd2bbe99c85a0fcc4141c82dee9649b47479c04ff5717dede58c0b10409e30c0454e1db2907050d11e7d440c5634216166704bd22572920fb999ccb2fa118110edfe2d0d5093cca1a2886ea1be514106ff8cceb17480048c254a3322271b848e2bab92d2f3af8eb59ee09066e57e5dad0a8477642acf501ef39dac6627ab91f17be975ea2eba9f8032feae81327ee2d8f31f7a424f3ef9e4c5bf9f7cf2b494fa9c80a1f7425ef639c1259a4f09e5984a4f63b1f6de7b3f1e2c8907b64139bab2e0fde9f9f9bc7f0d2a524add3750861ab938f494d2fba11fba3484ef3ba6d4aa6c10cfd7f7aeb8340835dd480f3ea1e39c56f5a149b8e7332986a5d4f2e4ebcf493d3b74a420ef331535d1f74ce58969aae9e783127a51e8b3f24e4eb2fb89d33ff97c4e70c84f48a1134a3d844f9e62cf764547aba263b541e878434d57e5527f6aef39e16eab2b8c9ae8fc3e2854443d3bbabec77a62ba7a3c2d5d4320dced81793e3b275f837a5eb82794d2fffc0dcd843e5fc33d2a9497281f954864bf69b674db3c5fe22fd7a494ba3b75f72ccb6aad9aa66dd9b6399d5b2c4bd5da4403b26d5b139b59eb745a58566b65c918b13135169b126b2d97715cd5346ddb366b2dc7715dd6754e6727e79c945277cfb24cfbb46ddbacb51cc7755de7659ee7747a9bb596e3b8aeeb0ee0799efcb2ef733a3f1b0659711c77d3755d100f8b95cc07da981a049d4ed0559afe6bc751b11793259ef21f4ef362b244c7480eab950409bda14528116a13a33f680d4dc5769a50150d4281c4769ac058495c2d96112c7496286119c102670699aba9b2994484ccd4fc3169264aa63597e850aa91b8339148648e68a494ba8b64e8e6f9ebd9978ef559e8589bc4e858379884a9b5e525e849e16e0fe8a59f36f1e3ef2a795b10e84f68de9fa954d7fb1a7483f909e56b7d16eb9ea94e2acddb61fb6a2f46472b3c51fc09caa8ccc4a0bce86fa0bc28f7b8c2bf87e851c6d68d9447f9949918a75e153dcae83df53d4d3cb195df99eaa23c304f0c7b76e828fac29d29ff9f927df810e591bfe88578219e661f2879e479b484102f7a1c4264d1e348799447f9944fc99bb87d5444ab1a928222c2342625bb8b0567aa6d3b0fb682f7a5d99f87d2ecc9db9305b89c7d19c46a38c5dc3b4ef9ed3a6e551eab36baa6e01983824122dcd2f5adcaa5ebbf6c403aba7e28f41784848eb5051ea169508e84a94de8586374ac9eaa1ea8b4cc72a7b9a2758a4800000080006314002030140c88c4a2c1684c22ea81940f14000c93ae507a569ac7599632c6186200080000000000004020401800164117a52a34091e456b03c55d624c24b29134747822b967e2ac78ad1ee32a0005e2086d0a233de77f1715fd8bedbabc8ddd39cc6091d5d6e68e4ce1423ed725fe4ce2e1a450c64740774a360d8774799e089a95e232f34f3d0e77755829c8bffa93a28e52bf3a928439e0ec7d9b4c715bfe04fdc923992488760ef4cad984ca8d3745a94b3d86ebcb9e36f34951ac591e5ef77ae7f2e7240922f15f54d8568a5706bf83852aa349f56966bebb53b755b98e640a33dc4f9882f345e0d2c8fb24c205d6ee94a720c3960703ed284239188a2b252547640a94c897f509c4fe72475cfc6e4927dbac5b8e135361279ebc29158195ebdd815eb41902a25971e27617c03e7df41a70678047112343cf7ffc3eecd064d02247208d3fdf7395c58f48b29ad5d779f2185d402613c79ae7a01b34924a62756baab3fc2d2bc205ab628a1f335ceeffd222035609a6209e8470941aff8a1c51eb9bf1fdd4f39c00cb0e187068ce65a070c7ebad174f180c3ab6c92f636db16b21b3cb903ccd145bc2b931e10637c4c06e8f447551ac31bfbddc9ebf31803a8d902eefddd96fa2594e8f8587964af26cd44feacb8861c641d9b9881fab73d52d77f5a1e56674ff9034a9a426dcbb0cb7e546816702236d82f51eddffedac78e49ed61dbf3291f07799e0fdf2d2f08680b253dbcacaf0c41decf167e40671635dffb8216ea4366e5a2c11617dfa3c45d2611a07818a76d4fb62cd0576e70792e64589f8c5a0b649bbccf96850610c51afce2a435b7836784ac36a4068a36afd66553594d440503658f750b7fec35af73f627afc5f6b9bb0c4368ff11a95b2f236d99967632e5e783f0a57350b6485402bc7e42c3dbd130d57e1885e43f9a1aca5aad1f8442d7afb9d6bda887cfc2e376aed21324b4400bb0da3441d2a019a101d90ae24dcdd914d1c68f7191c07797bbcc975f4c3bdfcb9776a1439d349703acc9fc3d9a73bcdf472cafde79f4fe5c2b94de3798ddd397b62502acb65f77f4f7eef788278c31be231bf9082cce8ddaee7218bda5bc58b2ffc10475639cd9a18589ecdc9cb63984bfde8d7eb329e59c24e8c6ebeec0022142de353405824de52c08b9834c211624f099f351b040dcfd0a4df87970ce4bd062d6aee2fd62db65f46fd219cfd647548ec93a8f39ac2421151736ac0f29c9ea189c05724ac735e195b0dea8a562cc49557af5f1102c9b01f40ed9dec280b4ad2532b87000ca8900d1e8b2a0187b01341e23a61a27a80eb852f829cce9d0e8acee120e638673db6db1c6c5349738d02a0cc91fc046e100ff74aa0130db37e4c96044ce3817e4e45f168c01f6eb002aa90356579053906014ce7b3a1741926758259292d2dd33bffa92868a4f3f1a8c2483b3fec2cccb73ba8d6df10605143db83b184d75da280338caf33debe2a49524a5175eac560ba8c413986c91eeafd69fc69822ce184a009748873001bcc73915cf68c79e8e7171d6e0278d1b0378c6b4b88f6d7e6ffcf75a8e8076c449fbd5caef2826255df4c1547f5859e7db2f119a7480140fc1524f48cb0da076fe48588ae4c1936f8621d62f07d123df81ec3d16358cb9f3e3167c7c42c7e79489ac9cf022d3e5d68f03363f70dae142c7a3b9a3930668589067cc3f628c20e0f3f027c141310cd20c9016ec4e3de4723188a8ddfa892a97b61af4f13c02175091a03cccf05c16582950face5ee0573857cefde161afe05fe2ff96e2a638eb636cf9b10c612682652807ecabbeadd35ee431856d598eb6ada919fde8dc1ca0b20811d9fac08b10ccdc494a02387fa74f9063d84e104fa6ca8c1248b19426352c3d02108bd1df0d28e7586eb4245db072e59d5ca0934b3a18241767310bccae302ee58b6ee6824bc3ab112c5d4d5d8de42478a470a6256d88b11e12199087e0d747d74426c80f4d245f0b70c23026358111c3d6ca26b8dae0294fd0a3685c27e1da7f2228be296b37ac197039dca7f7eb4444a46a0373c4ed9310087c7af8e5946bc68deb794de72d13e11bc2d21c480c3e00c5af85c911ee37810bdf2b1bd4ad7b579c52b0f92ea3c2e2306ecc365429aea25030fa218ab2f106b931444d80553a73033100b1e8819807858fac0d1bb0bd204c7fab4908e7bea7c6297e79e8f6650cc27239fee6f718c086a2a2ec714a15e8c39022dea11c3fbef4d87f17e24950cdd26b090bb00a4e0273b81433bccbe2e93ebf5f2b3e09bfd155e5fcfac0fbd1993b8c5cfb4c441b5d07281b02fa6eea11403f8ea0f9cb887180dca9dc13f640edd58d0fbb08046d28d9c5cf9eb7f2a23fd15916de1eda54d74ff658d9dde1e7e931defedd953f2ed4106f9f6a3642b7c7b80d38c6f3f61c27d17a08670efc2b87f16e53eda779d72bf8003319c7b7b93ee2d4e67b0a312c1ba478bee64dd2f63b9efb47b9631ed7ec41b40bb371aefde28768d2716347e61e7f92b057184711fd1c8553138053cde1ed8f3da1cca38f1ce4b4eecd4f34cd25ba35248e7ab18e9abc2991d375bf65e3740ea400f52d53ce9160780cffd5cf88724f6fdbcde3f35d557b863e252736079164a4bdf63efd0e98e4398100d91fda9d535e42ab6cbe7a0c5a09b484df6d16cbd0e83e9649d4d13865ac1d9310f144ca9d72b9065f6fc38b84a1d8ef93a7b4840f5987df63a523deda414ff817ee7b3337fa9b608edcdd06e24a1dd09c6467bd1acfa6e028a44cc18334796a52bfb57fd3d2f50f051194fd1639c774ebeab27082e63609ab490816a17978114fb3003f3354f985e5c56b161d203dd195d737ce4d31a46f6f70c92853384481ff9f779d40d6ef1ebe0a07cc841e96c477476fa2e2c2470d7d0a84afe5a7c8382b2ca6de4723cccdcff937715847d5a810365a2077034b1d5e7d045b392b63f13460ee5631212325839a504e574f1aac57d3afea1eb754e1d8c24b2b14d0b4872097db662700c088bc8614f2f1fa5224b9bb64978375b54ffe9683edc551da4dcba306e7cb4768e185f473b70af5b0d08e3e2888e988f34e5bbef8be86ef379d89c71d01e83e87b9f3def2beceaed136417ac4d575c9248164275f8a85400c069f3194069da0faabd1f7ee4c949e51b4b7e1dcc2e6945b9208a21b7a206aaa5ccd95ebdb8b55e81f88d2740d13d876eb78dcadd79f0784abc68a34288399b489558e92e6388ddc6738a19fdd8d730d3cde105e53c7fdef48cf25eab91057eb354a1ffac8216ddaf32dba9d14d8547d2f636197d89715eb512c8d180ff3efc6fc7932e145c0af4c74f1f6c34c1ad05bc3532aedad772ac79c28952428ed75ec8655af035e5a03a6548ee52bc4050317a4ddd11e7d8415a10d05981068e6a714f253089fc648ee366c48c2285b00d392404e9473f917e8bb19a5307a66babf7541b2b14314b32d8d32b798f70607443e98a6d48377f43569cc1b05dd4c6a40e4944349cc6e046042980b7360adb282922699c5fec43c2cd856668576b99055690a84a0aef923c4fe6be27bf6a9da36c54b36e46758a8d681c06ee926c03a52e60c4042ceb81983d80b70747f7871a00ce7fa31c741c5c59a3cdb5ad3096e03536a25ac3fe04fc4fe3b7ffcc1d7c7f610491ad908cd375255633f25a0e025f477cd9f13bfe2815cbf8f8f5565822ac07a4e09c244e8f5424048eb88b1030497e9b962ef0b6a23bc195823643a1701c6c04e98559bd8fc24a8ef9f54b90407722e1ada95f6baee8411d9d8f61f940982050592e30f45786473739479da20741dfa3e47f6bc293f43842b2551d7638a75832bb0ac502d9d787ffcdf20e452347afad1c82a505a06ef694fcf9b4ec135f712af1f1aefe2c43aa95501129d1913412a438bc53840350f450a4fc2e73b744163f8d264094e6a60a264ed3e76e4c56ee9cd589d6b3df93743b527bc77b176b43395d70bc9cf9cf45a48543c08ba2e4d0c28669ee967325c51daffddae69c076fb185d9f632e7587541b5493de473392168233a41b0095ead0f520d248d03bec18df91a5a14050bf33feff8d284dfe42594a03ef94793dac68e0c1739f7dcd55ce863aba8e1854484d7cfc21d554d6799ad56f33f39a53f81361d331694790e30a0b859fe81d60b53627add2941eaec819929cbb3c2703210f4393c506104df9d60953a6bc323443d5c2426685a4dee7794d56d7f055f6973a1a5c96bc54648e7fdb871260215a1b9dd99554f28245769b923a614d7f98f14389cce09693f839e521c3e84967e3ea3394013b65b68a514d7659cd4b9c1aeb712d06f4fd513e51e71474c3949f76a1308258da6d8c3be5e436d44b3428081dc365b0d246ce8223098eab28535160dc1346a35ec5a033fb137070f1967db20ca6bfd0ec679e24c41bb4362128faa61bd652f7fa13c3b51a5cd07c71db308350451fde3b9263f4523416913df68034f8a75dbfbceddadb15ddc98dd8d5e4e8ebb3054293f8722225122836b340a75e9b95cab709cbd3ba6797dffaa1705494fedb8fc60ae614685cdfa8b46cefe14260f459f1417ed3ce3247a750ac0f265b8cce1c823fa3a91eb62a842593a85214d9ba16b08b7ef8c7df804d3613da43e443ad726b91780f2dd051ff7f7d367b810cae470f013a07cc0feca3fb6bd32a3d3795d77ff224f7e396af91de0c45578e76575586d63445095c607ce757a13e6aa7e3f4287a33764f56ce58ac33a29ab9872615d673dac227c88a64abb2a10a4fde696ac60f1ecfa6c106025c927bfda1104d69ef1e9c67dca4937541ff8945226da7f301e6a631208a6e40d88e585d4d065ad262b971a5e97c14f222a553547f84f6f7d043dada74fc1485a0e090bba8e8da9df90f32f3488365d3af22e3d986322041acee9839d98904d198c2f92540c16bf74a07d72b369720959baf3179991d0328734c9495d3adc90ec2cb1f5f8203a3dbde392d7c5f95be689c5a4e714dbdbbc1512beaf7ffd91f36f507b845c6f0f932668d97bc460da1dc535a9d74e075357d7e0a666c7991c36f1e519a1494398a9414155ecd05510de30d7d986361514ea07347f104f51225737b71ad2ef06dc3187cb2e168fd9e81104dbc6b7fbd8820eb8e12bc020e62757d652f08a7f52c840040886821f15675b7db9be01ea9e8451f3a69b272b0405d67efb3c9602e50f4db5a82fbef248d0e29a1c84f31096630055999bf47841e66d0085784294639ecbde2ed2c5af6e1930d9fd012220b40cf8061290025d9388a0dedee75c313baff38867b70e00749fa184769370374730bd5a16ea8be24e5f0f5c29f95b5748fa8572f814cbe7e76316cbaffdf2d694768fb1294861f840723c3d633278dd0cfcd5313b9c53ca67254b4102807102ed2a692ca2970e95f39767b45e312262b3050950bf8102ff3b7328f1fc1f8350952d31825386dad0c7a2820c25ea022964da72dbc44bdf5007cd8d6c95decd678d05170a62864028d63d0a3c058b9f985de4463d83b601b1836a2d18e4d6d6743c4fc4da5875aa2086dbb32b9ba651a8d7051475b4ede23329b835f8caecb1c472ca257f9f130d0242a1c4a1664ef55e044d311e059532edc244defd96b2508ba3d031dac6f59d5ff9af5311f3ba03017599ae3191f5ec285020e32efe0a91235eb92f1220f551c24806a54712eacc1b69d6742ba3bc6712daaea466f94c3ab8c6f7c34e8bf334106d095deed1920e4788d57177b9f0b70c1002b4d500a10d71825fd6bf301768426fa23210a391601aa5ad59f642d5540d021ba56ddbf0b42b898a67fe7825ac21ccc3232f300bca0d8c94ce347dbf36ef8d94ec439340b12825c6aed35cd46287a9d10d6c8a958bea1302c0d5d65c3f3366686c037f0e82e3a20dd80a1c0322e79c7399258c3380485347ea18e57d2cf7e2ccca95b2b29d9c11566c8e2768fbf17f8e98d3dbb225ef1d9eb90aaf33aa7a50149ef7ff6349b7b6cb801d509be54ecc8dbeebf4264ac180df4e92216300b3937fa93ec63f5724e0dd0c9c71b18317b48461a7c34dc51ea148c3e5ee14241a78a2e042a54ec7323ad0aa30917b362d916c92ba7d9866272d2d765f9040875ed732a0bd78d9e7db0401be71377476897e86c02351c1cc6e5c30579f479ad05ffd1b829223835ce5818b5c75fa557d615ac6b19e90eadf36f7a151cd08d759bfcd63d70d25cca212b1884201ff3574dd1069b0a1d3396475e6ab06c71fce009448623673d0bde7bab1bcb04a1d44518214b53b842f82389919892b515cb37e94a0f7a10d5b404db2f3a1e2ffd7a299fe6f28c9cdb81e313485d11250608fa4e5dc377d5f65bb8d800aa552b5e801a368b34fce39a12b16f8b1b65d3d4df848fe739111513ccc7e7c23e709d30a4fa7e5cf15aff2ef4b3c6cde61bb9016ca6f500353deb3950f67b8e6ec601e70c47e715c452ebe535ed3c0751b74a8280430d557d69721ebf7168c579bba3496cebb7681fcaab9ee0c02f3347fa616ba57d00e40ad6fa0e1e186d09ba71a387f412c2cd6def3753bfd8cc03fe6cab0c147c0dacb304cb98f1da963ecbe857b5b7dd06e80079706ce0dc2691071a05e53e95497b800c202cb56ac9417642b845395fd8100cd659af36e9641a5aaa323627ed0c6a181cd9b7a2963279289cd79af91c216b775bc506ed8865a763976fefd833ecbd60d874e3f20edb901a326d2be6788f4754e50034523ce20819340ab9e6020a8589b35f803f00d1a8aa7d42ec6fc48eb5e10a25f3baee3b8b8066d2e02f30fc375b4f23b593895e54c7eafb1bea115ab35cd2b609b1778dd6d43cd484e35ed9d154f353dd5e5bd8331c1c72ab2ad78684b69f9a37c2a367cbc2dd14fc0c61f9c6d401bce38dc956a837f3140e2d316decc3a5aba4fb9220db5ee8f2001d57a5cf75099f873ef8e2053a4dc128fbf53ac6359f7ec900c89fa76a31a8655958cbb70af62c1bc929466c3510b84c58b13b681260d3338a29a51e463df8259374cd2e675f40e59a295ea550592a67b60f3355c1e25588acd5329b6580e37e0d4294ab65909f5d93d8d34a0b6f84abfd09a183771f68e01c93d39f9d678a95d6745a8663d889c119e021bed44746472beb807800edcd85b42d99bed94f68bb123207867aa87de3ca880dd298798c9ef9c165d94d0b9f4b7ac2d37746de94a21f8ba2d149530444d96d5d71693cc014b380e250d930ccd283b101408411bfd6f0e19a55aa92849b857857b41dde7064028ac1c9bcc714d90501047f867fda4d4d389447101067c81371066cef1a2ed03272fc46fccce90e0aad624adf1cd00171c4d61f5940cf0c16daace70d857cd1b1c09765e1cf115e458e25dc62a2fa0cf47038b0bdbc4e64b74c460cfe196598d964609b08fea3cbb636aa980bbd38e9fb182bdb2c87fbd225123960faae24a86ea94b08b0501a0c73b5ee9bb7c386ff20f52754eaa8afdf3ae6f096d2d58bc50ceb381f7fd63f2feaac4c16cf88129190b90178c45b77cf2b2ddde4f8d2532133ce0d35c8e87d71b47302fe0b7516e3d90615deedf04ccf0005c0589375af59df901478196febff3402aef800adb6fea3ff3e15d5161e9ef8d40619e8ed1a0400189626c6c92c2844206655df57702603e140148585bfbf734aa8546ae8a3baa81ad207c6fc12b922e1a064da111442a30d053ff1915fe3300a8b255c9aa4edb0b55ad20c45011459a55b496b56c38c95a5137f830f4a1b6cc76105a46aeed6b9bd8e829784bf66e232bccb0796e272c622a5119a56c7ad49857e9f1d6c54b5644ec40e9bf14ee988c2f048f451abe4cc01db22bf8af5ce680a03792a36351cd4aa9d97d41182e9029200eb72b990f4d49a31916240602659a4e8291c6ecd8245ad06dd445d6668ca268c11bbda32e458692e65770b83604d2da033791c062298c70e9855fe857992fbc7e4ab16d201f392c12ce4353b3cd8118568b9af88a75510b73a6f227129af42821c6bf40ea119bd498626018b68d5117458f6f1574cfd4fd5883501c28ecc11c5cd8c0268b01eef212690e3d24166bd64e26fa48e5bcb5b0339aab049550e91d5f4a7e273bd4c744113132941f6d3dbc9a83c1026b13d62189450c4e4fcf511903e17f8ab5d38f646af222101f3696ce6a62eea64d61f9dd398cdd17e75d184ca4621702ac849df7db8761c18b01c43819319948a2625a04ac1d6e03f5c3fa0119bbf14371e64ea06bf191449abc047538bab49f527cf518654a9b4d220849e100ea88ea0fb3bc0bad940d0a4e7b0ee94e208e7c9d55435c0bedf9f6e9ebdeb41a306a3ff16eee7e8239aa043b8f74452710ec416b60cd1d12c305741b6ffc036517293100c8b34cb9842a2feb8085b3b7e0b57ad06ab5f0eea976fd0dd1da714dfae220ebf457e6c2534c24e1bee878983c06376fc51556d528e337fdb998ae8d9d554e8696e388b905ad841ba2fb24688a7ee0edc6c884f718e49dd38a4053402fd874508b100a8df9585d0d9c545992071ae9b4ae73f44d865374fa430e9efb31ce1e1091b0a29b3494811b41ef2a15104515429b818bd57d2b3586956f57b92624be15c7b00fc45c0d572893ebc683bce6339b7a4de76caabcf84737155759dbee7cc2a8f677c1e7f26d0033ea19fc54530cf945f88f30647a037e33da3ce79c8e866744aba4741eace9eaad53a6d6e6dc5ea3eb01ca077fdc9f7f91bcc1d02024318269bcb4e6f0efb39cda0ad33e0ee449e20aa6ed68e932f267fd93bd1c45b81dc2a3a17d9cf64f223de6a6c7f2302106cf8978e3104ea213d32f19e608ffdc80132a64bda19daec10e9038b2478d88909aa6df10ce81cf0d9d552fcb132a2934d7147a203c99ec0cb7dd73ac1e4389b251ca25089d865ff578d6b5c7eac3b9df5d7062a74192b07b6d2e063f2897976576156aad9d53218a871e987a7c2a47ff5cf882a0c86851af1ecfc3ec0f6b63bb71db1e4a5f3a31ca5bfb5fe7e01ec203a877c5821024a0feb19c5817280dc947fecbc645a68ef837fa3a8726c5b9b2413a21687e8958c423319f378f2a25861db1fa502d225c59c6d29083165c4223928ef4e590a9d1a47f08072f25e7cf643f8f5b71f7c8c707fe149beee8172a4f5d5d13d7bd4b64611fb835e40fbde9124d76b37e3536d9ff480864caec7e18bd1aa705fa0fea416dc6e776eb7cf47defc262b2a4b0644f476667394daeb4720b11fb3045c7b17b8c1e58b0658478561485d80c976b688e8e93f748f5ca597b318a9a47c49e63456abf5e086c8937093da575fc6e3adcd2d2753c0693eb598d20d8e1c1ea7efa517e21eb4f46d1bdec57b903d3d850f12d70530a38303b5911b76f4519dad448ffeb2943c6b30d081a1ad226af4b2b1fc2c63e533fc0b8686a1b885b9b5482f260568b1870e1e48a8acfa45b14086f6f9c95cb4d48d4083903d43a6dc6010224810262f7a69c8f5ea961006bda7ea24f25d64aeefb347028b4fcdbc1fb25827ad3e182bfb388a124f96ea0b6447825fb1b09c3479ced5b18c10c1d03c788b188176e8854de309a6571e13e97a5481dc2f230c16318ede3b2c40fe04b71f5665396af6561731cec7ead24eb82e11ef6fbc26915a02c3a1f90c6d81343a02081e0808e24b3ec5f4b8df97488c88fdcc755d048820315f1988f38053fece4275ab0736509db11ff03bf4066a4cdfc92df94debff74c4d038ee5106a61a91c0af38529677d64da77a8f19156200489e97cdcf7b85eb11aa8a073197f5a1544bc5cc4ec64d05965ae543f787df1e68d603aad3e1916e52c753f9845ddc978d3f46a389df8a65d49c5d20a28d6ee0c0f5cfa2f5fd6bc45d3c7966b77f844b2e6382c951c654663cda6402e7eccf31cef623010de1ff865daab6a183fe412b7c8de7e3c4a4bafd6431d09041be9397c94b0b3571155059892d87b799918848fde1ace54088a9df567c5d3667cce8ae21af8afef413c119935b6b8a4f3cf484636f3a6b55a2896191db81eb9d0bb3b5a28aa9a9fc9a92c90cf58971515357567035652643337facb8f44c062e0bd07ec3c1e09fcec5aa40b50819b0530a366cf3802e24dcc5926086af7e31816fc9ba9988e403681bd33064c506f614d9c88d30d18ebeb93cbc41d3068ad6b7c3b5c66a93a4abb849a70603e60a022084605a515644ce9af720ae001db32785fddacdd9bd320e25e10683f6037249a063d8b67afa70bd18dbc2a59c941a2651250a3153f6050c4d6a48b475084b419ea33c21ab01e0fee5cbf1044da6c0d599848dcea0ead2e693bcb8b4f6614a2182a3622e526893f17e9323669c8ac4c6e7ce83d751764e04626113132856b5a9a7113a2ad1cd59aaef083b34120725f4f017902fb9af09045108b094b2668e48361f79d70393d0b891fd8608dc24fc5321f207c4b10c47ce4e693cbdd07fdf0b0e4ead995ad2469dd4f195162cd793f5791f61e4b9cc102f9482480062be513642619414cfebe4aa71496ce0a4d4e81c067928025744287d9e7f67328a6316b979367e5ed954f7232de0e4cd3d5b097a355b63c2a09e22566c578f19cdf25282189de83ef5da86933905c8b47eb78aa123e76107236618a8ae9fa6c491f97673d24ea685b35f0485f2d839b0da87251ac7112dff1b88a16bf214eaa51010e47d1da84d5c4e70977c8f7fa08081ef8f1ed90debf46c0ad730a9884e77810186f222a583bdc4a25ab146fb18200fa85d22e24abb3d112f5eae7bb6fe2beff1e24eaaabf7b135275911408c90aa663e68099f880c56b4f2ad75d32bcc6d2b128414304638a09d3311184a7b932e93d255423cfd3a2e6a7ec8dfd46340086870a89168c1e002fe223c141713617b78c7decaf14f2ebb8762b3df40f3a78957ad3f5946b3f798acbba3e1773fbba669bebfce8390e3bf70646316b4fd0177d6427854907845c69b50646e6fb6ec3a9d5b0b5f9aa550df371358a79b558ab611e85eb5b23a6544e03be778839650695614ab2ce7d83daed04fd68c63212d6708e05024e9a879df2a24db24d9d1b604de8ce1123652879224efc21e2dbe2331bda191ef9d88cd57468d666c0989d23872b725242b4387d3a0564c6ef77f9c1b8aceb09e299640d85a36f5e3b4685ab4b81f9a052288d452a0594d08f0ca478632c747bb2fa227c17a08604931b6fd4952ae2bf82100384f3226d2387fb4b3cbc523a36608a8c80530a887e367935fdf54aba32038cce87ebc56dd52b053ba03d05b6aa8a3b4d76b5dfe3c93e44b1c36f16a96081c3f69e2cc7f12e93ab6f2dc9e25241438cf64e6d50503f6f620031c5c8f851afd9ed545c3d85227c9ef92b334a6b8267292ac725fb2f0cb871d5df9662901a01f264e06b9212f5d2f3c5f80f0ac236a3dd1454251ab881e2aabf8c8cf04ba053b1b19dc736a5ed8bd545e40bd990a7afed90c0a453cab6a04812efe9df35de8db481e7619a48b33e2288d2235efb20c9c8f3f2342f500f792788e6695ac1633a7be9cdb590f6bbcdc5428d1eba942d9f9fba2dc2db522ed44a1fb6ab768811eb4da51ef08ee17fbd2f724b0a1d0caa06c0eafdb3376cb5dc4b2e87d59fc3bd63e8ec04b2fa8cb6007db2d21ed42023b374c1605a589ae45091c76efb7355cd20273d1647381f9e5472fad3c024ffc91f1b1b21fd443fabd64632e88c47b9dbf36db25aa23781763abf11e5e7d74e48322b72b68baa4345e526bd2182540f70846e762c49bdae1f61c642cc0a247261046e17da52fd59c5562af6438e5d45397f22e5668ea664fd7605a1c3de35382c57e33d290b6b7d250befd51fe28beeb676072d49291c92b5aa872c9f4af131af51e98df17e1ee5ef840fdfdddbb01064035661c47f1ef14da5ce878e42de83d7d47442905442e472094615f38a6e0cde81adef9d8794d2c2275751e5050bc134f6b8707bcb054471fc77eb1ac122da27a6fa3c351e373fac6d65afddc57e49b3feaa0fb2a8f54773d74209c38f4ebdfca055a1791c14f7b51d5b14c7fc30faee8733ece40b7f566b34a87fcd51e21fc99afcbfc127cf4076b7cdc338fc96a4bc8670169dd6d2c297a629db1a61e588384ff0767c9604ba214c44092a36331250b9ce9d852812081d0a45f048c381736b33f6fd0d0565cb23debd31312d4defbdaf36ca0ea061e5159a2ba261c111529f50c41819d61ac57ab22fd105f51feca7d402b008e13f768b51ee61826fa3a0c2e6ddd5b18592f88dd37334f0b7958ce9b199f08c9cfac09748ad2a37af5266450bc4dcbb3027bffd49a5417d274025137a1551f4ee72ac4fc9cc0cf5fb71348340284375cd8f60971782b619b1a21d25e233006e23960750a83ce4d9854162e6acc305d0a061317a688b2be7d9c480ced9ab439a32a91d9ce18431a2f63aa00149bb80b2c6fd87345d68bea5e947022d29d9abc89838273168a8804776c65ca4f33c79c49eb4790eed3abb8663c8b3bfb961f1bae57479dfb7880397ec296977638798895c0b253f46b72e32bbd0046c41b3d9d2406e0bf17dc7e8010f0679b3a0619a81332f0f3e9325a70a2d0b5b7415f5d8678c7e81a5e2e2a6030ec69bc2c296afa863c2504ea4f341d81f2d4e800a316a4ed3079c507d13983711aaafe1ec41c70e3c59c845664b48a364137768db5c8fd802fe4ffb8d092227c42d35e58005458163d4ab4ee54679391243f2c001bf249540a26c61abf6c564092ca7d3b2e0a6fbf5d2386d396d5f44546cd981b1d662ed51bf35c60a639d3c18d70322feff9587ea34305c1f7e32d36d605cc622b2d032148d37f6f0c15a79c4a95b43fa6a124390f4b0137f06984e686e4ad2552134dc9fd0f645948cd9c25bbad597262aa6829fe0abc467b7707a52e8ecf151a2bf98e2b7a78310136eaa6c12476ce45a523916809518b6fa0fb858841667b0b91f3e17776d147491ae489a5aa1bc747f6a583caa60d33e8b8d1810469121c16c7191c0daca62940e57d33ebaaa60e8a1f03fe7b2e89f83a316d789da99c57cf5d38a5e94e7d6a8143f5164580dad86da68585e17acd6a251368db152c4d46afb8acca14181b2a687b465712de56bd20a6230b568865e9671bc5503e0c75dce2766c153e544286e1d7a1ab3c1b6708039f9b458af2eda45ea51fa0bf4a5baecde94c7075811b31474665ac53f6068d99c7832c60bfd4131e9bda83c8631cd791d0374c65eddb039612069c6a6e224d0742a2b2e650b2af6c9c5a1c93e48e5cace5bd0184920cb08b275312311eec09085148f4ce5c874f441cf1ce00d8cec4112c48ac62244aeb6196fc94f086e570699d0947527c46958d3bbb3a11d0f784fe1738d6d8a57d58e4cad983677eb3263dab6225e86ab0de98b74b57cc5ea523b3a4ddb79c53bc3afa4c8b696778f770f8bf61002aed8cc1d00a4e4b4bd94f7d029ccb59617868f841c8b6391e7894954e478cbf875b2010e0d28934b82e009a2de19467d16ded26ce8eb3dac46c8b64eebeb5c30fc46e2be229631d71ca01b6597235b42b0ec9ec0d243f16f0399c6c1ad2fee673a5bd93b98f710eb7dacd0c448833380237e9c5c1c0e026923d176a73eb651dfcc866e9d842c3e5f3602d99a4a122e5000a05daecdbb278dce880359de8841fcf1a4476688abe5cfc675fe840be96a8aeda0ef286be123184d63911ae8630bd0ab54f19449822e95559058ca526ccfcaf5014ba1f8b3c7e2e4985c3b2d59129f41209641bd7c01a90ab6536788ebdf815a094d834be697a0200f1125cb069799e7f74253d1c651b29df754e28073b68df3164094ec446ccadfd5c3d0a164e96cdd20b0b1eaecb74d9f3a76bd8876a16cf19d2a11fb00257187d23cad312a9ef1d739d51703959b9792106dff8a2a083ad6546eef452a598fc07e6cae511808252ef65c64dc1b2af59be7ad04f901c91fbbc2d7920ef19003496b7554f9184919004d2bd4d12e30aa3e08c48e2f9b0d33e82643c10c88a0d0b15c983785bf66d25e4704a3568cf9b2da57ccb11b8638d93af04f8a2f1cd9ac3656e5424884f6604a644bd2bcf6c772be12cde7505aa062b70ad5117c947e46b453f07cd62922676cc8168ca006b22ce60dd929751843a818c5865e41982c8da79c044eadf9f0dd1571258be7f13e8dcee8fa8d6cec194a2da19c982627941b2d33c075a45af49d71b57f955e1d70b42dbba02556b99c6d4db05bd41728ef16be91a54fccce3f82300bd0b017d970e37717553d6137b8f13b0d707296575bfcec42e6513c05b357658a1581c366adf2e07d77ae14f36946ffd7566fcaece793bb4df25884f9fdfbc6ddc60340f5617e5ec706396c7a0ae219bd1ede9b7fc1996d094a20ece7e91356bdbe909d0c9db645a7ca9dc8831561e902dde3ff73276e1ecc779b32ece8bf1e822dc0637c50dd4ceb27a449920e74504f13515687cc25e801bd9d21e28daacc07067ec67d67a3671cfa37f5dc2dda9da0946b7561c1b3188e6a6915f2eb9fdf80a8d326fbd56ae0affd43ec61a2bd54cffdf01f21cd26ac9f9ace197eaead3e678bcdb5602ad10ab8d897f0e00a070d17b487e00dd5ef4da70f39cff9e4eed21541bc2bf6c25726e7060bc0bf28671ff94dad10477de3ec2236aeef5338820290a0de72a82b15ca4eb2931885110b912ff20627ffa57052c1c36090d1955599a350c8c84eaca7ff8328c923466aa3dc90c18f37b6d4be41d627ad87b955568da71892399c99adb45ff94232dea8fc7d03037b93c5cc09694f5ec89a627f2fb6cd26cc216e6f1c17006e0a0d0655db15e12d0ce197ea51b4e8036c3f3a63fc57cae0e13126ccf019ce3721c1b9b93842b0d972fbe287778d80416ede61f2968ce04b6c2b466337a21921648d7cd814dc4cd6e9984fa942b062952e57de39489490b92778bc8dcbce2ea7b4b705b484d851f02074c52197759224462cd693b82c79f13067737e1602b3bfc0a32c305b13eb7e917b04bbed8b94ab3a3ad3b23c740c1e9768bbf98ce4c054bc8e92654dc9931177496cdf59b3293a6089c1b7f0155f91b56d9091d32c42e199533339bebb850c4fb7aecd35a866d5574ae38b6502b3112c7fbc043bd72553fb5ae4c6f968bede7f0684e6eda3af5d09cedf0e81d7b655754b3786272216744e75bb4a693f9622baa6ef80d71f482c5accca5a1f8acb9988eff7ec28e793d0cc164047dc7d77745e44a5ed1adc8df7545ad6013c5ecdb913f0d62fcd088a878d4b15180c5065d6b95bd90c3a490190044c1784f3709dfcf7fa992fdb960797aed4dbd9c1115d19e57f40549f3dfeda58ba556160cfcc5d308494fcfb004ab8cf05d57590044344404c2a07c752d394c3973a88d3a21a9c8075be0ead90ffcfa0c1328a7e7d28c84159dd57f18d01074f9658e11bc6c1b98724708f0f84de49d53188e62a0100d245511d77c45e992e6e993e89db5974928a7b0c56746df88114bff149342440a7f8e91d633ddddede38e60b321b1987803b0bc53d9d1dd8dc79431df6f68f635d92dfe50333a26a1f7bbbd8a03d05af69660ea594e09390971426e52a839d1aa715cf92ede5adaf0f31ee8012023ce049127738db7e9ee7588d329547e3b0722f31ac82e05dcbfd45920563668197f8d34498964c27ebc4171cbd29f37a3de1100cb6cd84a7eff972d43662650030a649df3cc4024d96dad95c60d6d429cf55354afe3a23cd8b0f5fe709a4dab6d3a4224cbc88c5a49e750590593bb223fae19aab4bea30b59edcf58beea83b84f70e0daa277bead9ab67b63abb4c2449e48abc5a9cc2025b34ad1376ad2dcab25ebcf8860b74e9a83a9f490d41773f1936ee725333c9a33297f61a58e728764257d2c82cfaf8a210c74e8330015a0fdfa232bad581c28632c036f0c21cdfdf15ce504f342f9db88c4678591d1a5c6aaa32343178eaf9500e4f84b329561b68727e114012888084387c0e69f4e694050602e99d9a5cbe97ec12b56bd08a6e8631d0cd8b842692f396bfe799bfada3f6bc1457d707ac37cd12469ca086059710ce6cf070de187122539c3a78b009c2cd8e0ac97021a26b247fb3b97df2164349880104d182d77e6acb059259429426ea7535280ca0dd47809bba4eb6481ab12b8bee0a7898230f51263e2a7b2eb59b8c457a8d402e29d0070544b510968f419625b2a4a0ec6cd59fc6f422c8e781929bf29580428e5bc42b6a1258185dc6c4edc3e20a80d23c1915575c55599874fd14dcd235a27fbe09eeef5320b12a007b988141d1d6a73b964a0110e751cec2a2ab8ba7fe093164d99153850a9f0f4922c5b614718a9dba6a86f428b2999bba0fcdae0369ddb79d3f33ec1a85af16e4654d516d43d3b858482766032ad11013b8c34489d0554fe02415b936cf2e85ea5554af8666b8dfc58a6705ed9aa02f15f7a12a9008fa1417498d270763803247dafdf33cb021d82e1be8b2d2a8c67f43cb73f334b34ed56285ca948bc7f0a640c44a9b2b656ec505af0fe9c7ccdae7c8dd91e1676597a0a2a032013c3e4e198469f0544d080e32c4fae9cac3f94fa482fec356ba65d6f20d59c8fae9865b76ca9e321e0ad00690ef5e9b018bfab8ab396f264a1cf3e9f490d34256433041efeed477c911870568dfee20cf7246171132a3e862b3fc2b7ba635d3896edc9459b6acc0b56879da962f0320b30929b3ce4be51714d25bfa4863e51765d6a5cbdf4098a5edd2b8ab2e8d4fd9e318a39aaf0fd427655f23d86023a74cc257672275b2cacbeb6c655f8fbd178ebc4b1a9ce583eae40ff3fb6440d0c83c2fc396d3cd89e74498fb2b2e59b28c39e2075c2344c3fb7ee3b4ad94da3b80193e508a528a36a2b8eaf3991b106923fe9ad69ae66a2079e8eba7ae7923335df929438835386f418607b6470f806acc48d22d6400aa55d694734326ccc35756c63ed7603c56775e7fa0f8c9fa4700198edf27fa83551934b34f044d000dfa4ad889bc3165ad8617b530011488f265aeca32ea268bf25791bac31d027faa3c256a8617cd7491cf79ec1457daef2fa46af35d5d0598ed82efbe660ced0920a34eff90d67bc99162a95dd30b6c7153ae0047c652a7a72d6e124a450ba2c1f6eb40e3fd7636271d6e150346d48c10a9cb38be2a222c878e1a29c4a92846af31ccabc03093f57773cfb43e676d580c15ae7b65cb5fe2d69d48eb0066955f4056b7413491c2d03325ff5b8f4e97b49650945f0d5585644513d754c24fc80c582064f72c423d08a59f75ce10881ac27f3908b5023fda1f71dd98c512fdd10af272c8b98460069546f3aab629dec405f4aad80e76018a988c9f1c4303d146c28631aa8e810e5c65ab405b00a367381da010127780408bde834a00abe5e7a29d5aca731a016a3430c21cd612a1324c392708c405ccec786e6d612dd65e1bcc40fc0f5df336970194f3ea3b258234b7c09c0cb7d69a9415afd46ffb4801844b084f02309e5ec8c0f6f596364b68ef29486aa40aa10262fc7df5db026309b50d2ddebead227283c6ea14c6488852515b488bef91b07314c83dd2d0cecd4f28ab4d8a9ed1aaefa8926ec129c5460520bd5b3ee787d8b9f1a3552500d8625254a5b21d6bd362fe1e67606dcc5a04a968e07c902e371a2e069e12c8d5045e235602f319c4f61d17976cdb3d01b02c02105b474a45de430f6b34e780effe41005889c2270e0a51d1e3be4c40a7aa1f65b330a5e4e4fdf88fb672f83301fec724d08debb05da54f794c36c35b93cb2d3c0e654014a679f8a2c9f704e505cdf58becd681b6cc16272e5bf03aa5b1711b91d96f1830d1707e4e209f174b8911d9f007998ab470d9eecb6adf6c4afc0f53ee63be5f76f02c57d5eb6256e522f944e9592cac78f5d7cb440d170f811ba5e17a5c3467bee99e48371d9fbcc0a53c9b56e7a12154c5fdea50063e1b71f025851672a5d4a063da9ffc30af434c55905d92f1ecd35b34c6811ba30dff364953c254946298215dfe9637cf154d06fa6a1eb4301d5b7af56d68bacb65f5d1e6404bd21417c9d74b78676f84b5fe9415e4b583d89bf0cec20e5462ba93823e6a7fe44b6b80447b01c119de4421ca4ef61ea4f2ff1463a3552e3926de22882ea35773de4d196de37149ac4e001378028a151a93da0473244ea8054898c1cc47fdd1b3ef3dafc2684d144965368ca1ea68650bb899947089d0a9549ab33d418a50f7b046d7e9c491673c74885de85c933af447e30506caf38a3e1dfd1bd8f6d5ef33928a297e3b3a91324f83480301fb6de19270cebbc3d55dcceea6d3155ed836fe9160011593467303c3ed225c4703990ceff97ce8ff0e5615bf417f3f81d9163e0fe5736f112752bca622da7cb9386184b3de35411ab805b53ee51d2f17f4d4ef0f11148aa9fe371616c324483710b9b33bb9062e797e782c3a015e966a96b32ff465414a31494104a7b7a4f28d2a5954e418b0c17d8620578e827516278879b3ca022ec90e9a95c636915f17069ce5e9fa0ae81101502368ed48e6b5ee1120b6ba983bff45ce84d040950a043ed0ecef75e313a809109e61f027c412f64ab1537954aaf40562de7f285b177af7dc483a174f9b0c11365111f7b884cab309e86d47e5fdfbf25a363d89e8eb04f1c9f9fb26b43a2d59573dd22b1381e67c69c19e852c3d5fd5a6867c929682f143b60192a534bbf7d2c271471453869699083a307bac570935321a55fd40e97ffe75ce419b25c079a0fd6345afd7c87fcd0dfd1bbbbca0b537ed12540c730e5da04181b66f4980489f4cbbdebf35b042acb75f5714902bfe64e724cfe29959be5fbdccc0dfc596e6c4d0b98e5a3b0f4fcf93e5f6c09404cb62ed4ccbf229e0af060d7d48ebce8d8544872c54832a3d22f10f7600b43a33f471f3fc8c32c9b818612b9e4820f3ee6cfa6b4d0a9f7d94fcfef05a98f3e6d8f65c0e8f6232ff6b1cdfe1d1eadeccc2fb08391e69aa894bb5ca76b46bbfa1be82e2c1b98412ec9c9de06231a6688b202ea87823a63dad705ad4d2674282e4b736307814abae08ee22cdde0d014b358e6b486c376b6e0fa31bf53fac76ebbfa48c2a65a2507d8a44043bfad0a4bdf3c20a416c7702837726649e0a6aff41df41336f21a85682f188e6cc39952e560911f091aff24a995654619f6988e77984d9d6a07992b49970256371ae4a96029f81641b0147bff583be439876ee73ca22988ce2b421c157b1571470b4d10b9d3d08185f07b4f1cf69b1d9791a4665353b5b38332039c40da3e09eb88579c8daf604e58bcde6f588569cdbc8fe3c4db747cdc5639c9cc122d2a1dcdd346728ee266e796014282af823e191ae6db82b347a227a2cf6cbbf3f910110ebf31c19392f4c58508691c401832ec395089a3669b2bf9b3c51da5e6141636ca9ec1f1f18aecd7eeddae8f6af8f419b84726d09843c882ac891a55fed9fa616518484841b344b9b82ea54e7d6c13f88f3621b970c5c034adcdb8e40ae780a4aed1ffa3b9bb074e4ac3a1b080970bba00e7a38ae740f5bfd66425c345464a45f3661c8a8327157705ac5b2bafa118f23284d2ac66b91ccd776e7cd29385c6cbd8725ca36b1cede943ae6d4d37b956d2f004b7bd79ca3b40c9ee675935d19cee86285cbfd4f75f7a0ed0be93e8848ac191503258303d0a3e7cc4283cfa3609eec1353e116a1d8c83e3ee56dfee28694d833271ca4ce2e65538512de4637b7ce713102ec8023028bb14022b6a39e672338e0be8082def0bd8f154c19c21930e0a705a1b306c61d0055583303e48c823e072e1dc5af1fe23b54adc6b6f5cc63024844006021f33ab0bd342f8e4230542a1751cd0f232ab0912da17d059d0adaeebf58c5505edd2cc5b14701c0cfc4dd839a4f821eb4a6f36d7f7f808f9760d3457e002b0cfdcd7f1d5204e0e5870566998f03f7182353b815dabb95138e6cce5958ff4e7769aa44616ff340a138b43be9809ce04e6e7c05a13e58971267059818b0e73f62ae2db63d4aaee2910b09cc1f963d793ac674178fdc53b39a6d1b67fad3bfd70794ac1efeba212bd2cc5e0b6245403de90bf8c69ec8be9c3757014106d9d1a48bbc50f4c924c063cc502371f67c8218a85456204822925d18c102281c6a253e185d404d131eedce131844aeff4203c0c0928e357a1054883469d5279759d7da327fc2f8b1f438ff4efeec36a3237536767848dddcb9a04da7e18be81475145f9842def803749dac86b492bf7d93dd250f7eb61dc30c6c0132933379794be2f3a23bfa358db62c0ac612c6e7b256d4aa34ce98f9f41791c17850ccd5292d8195fae4a95bfc8f1c085dfc74d63bc3ebe5b81affea09281993c83a9f224f0ac7d3bed04e567ea6cdc4f0a871c5237463cc0a7b7b185d3d5fea4c9e8ae74f2629d519bd8dbea5f66e4812e9e4190c448edae608e72dc148bebd88586aac4dfa00131cb8ef2b247337329abac66207c9b1b7fcf119ebe75fef889a5ea4932033b456a3a4ef2ae171e7dd3a65ba216212bd9119bf1ad66f60811c5210925d94ddae38adc610a236108383d40d9eb5512fe54472017bcaa5bdf27c4080b3c302e2ab9e1d53868480441a324a6598b9e9e076cb93403864648e33d175b922bb343383c5283b245c5e9d4155a2367f7a1375dd8cb574f0bd024bde5d1df446637f775749d7bd02ba82f38d85937f36c18deaf1b609ee9aab006e48d8185bd47120c99fc8dfe607846eb4b8d71b405e03bfd6498f814ee3a35c5721e0759de972c74fa647b846306836347f1384aeb86fce6cc305d7b9b773d34f61926086aa826da4e831b34d05c70c79dfb637543226780c87c6a21b184239e32848280f617c3c8a6fe344326c53919ed9a8ab718e323212af00ed3480f45c16c7d9d62366d8245016b2e1ae67ecb0b3196ce459b2792e76ec4ea107a39882b258430705211123df04c53bd85b7df935d2b2cc77ac413aea731e71e7908b2384b6fe495fcd83e7ea51d434c9e10f4928e1ea68c784098559bf8d93754c09b3640b5bc8822db790655bda42166c61cba42d22357b6749df0a931b0c2c78384dea1fc04c96ff00fe5d32f561a4e025e1c04597546019fe91f3e2d91d0511d1daa2507b3250edfb1ca1b616729c7106141fb2a7b28be57d9521f5ee34f6a2b9f8bee6301d683fe2b2532c63149a0df8526fcde570588c14a5728c6471796fddbfb25a99947a1cf518618ec5ff3ad88143bc263b35cc21bc6adc4eea65c4520a6484951e3dcc3bcf8f35a127bbaf012cb6703543238268d9b08ec20977f49bc22b0280761c9dfb49d039f56390d5634541a8e57e331f2cab626f1f5a78aa396bbf0e209f619a18b5115a2cf8a547c6b9d270b9a0da2c0a7f5503ef622989f446422fe5d9ad86fcd20ab91dd39c7f4a62caa92de4d0cf9990c9354b964bc07366bd85c00c10af549e098580b177cfe451ab2382bec6d8b67afb7deb4ccc4160ad227e96c3a8ed02a978e23385a965f5b1b040abf3051f751c8e7f839f7de9d44e9fea38b1edd3c700aadc634d6027ba80b24935e9aebb7f7d4f624411a2650b3dea6c85db822cbfdee5e4b07b52148220b431656b3e28c7a16eb27697c729cd6dab0e3dd4c3e8b24a49dee2e7580edbe1fd43d0235118664344756938e5f43f3cb10ae1be0d3438e36542dce995ca662cb5e839f9812cc461a1dce80b38b0dcbd6da21bafd096fac2b511930abb6d34d9db1e07bf08c12128097a6af05e6519cbb1caed59e8d4704db2f4430bec17107a854a69463ee6ac7a3c842315ee5989c77ee183054eb73df779171f2722059867a872e3babc1ae05c4bcee29f6d057d1b647c04b375b845fd592be4ff052e3db7875fad4b2f014feaea96574507414989a7f512308bdd5b097041d2352a899b96d2a2bc791a9d2c1dc8834b55a09465b553ca452d19c29aeb1ca02f958f3281237224d21616e650fb8350ceaa774f8992e21dba886789e551343fd09c89157cbcc8c01e097586c4ab862f353817b01ab87c7a64483151320c96e031a28335d95c1171bafec6d8a26ec1abbf451c037081ede28859401c03c3247286ede8031fce86347e832db828bbb238f2619cdb5a2d7dfcc79d797bebacb5013ec7608cf33c5aea250fddbee93e1a88559cbd43d21b3b458b6c3c0a5a3497e4437b1ab5c6dad5384f4efdd42d9bba73d480c21f9d19707f79603d854f27c2b7455932949a875fcab4a2d21ead5462795d66c921612637697c2ce4fdb716b9c2895897889f82ee6f3671d0076610204870c080eabfe3dc82c089272dbe8602c93385143cf9b7e8364864efe25d249865a56192440cfeaf069183bf386cf248bc1b44d69c0a12c01902e35b9d4cdf17529058eea6d93b620ecac87a68ff0ce3566b52b1b132b07cebd5956d55fe2ac9508e842db2b5d735a847e624316e974f6f196b679043819e81fc8506db047a39ca14292e938afeb83161622b44b19488b94df630b81c8e2a044c3a430beda8c234536c80c6b36245d8f9645c586c2f47aa9dae3b1c45130f997559ff085f48cd231b89b3297564969a49d2e6a2d02080bd8649393b3bb1ee02b131495b2d934c43a2801daad0151e68e75993c4db156305ecbde772f055aafe2cb48fa75da4b537b45dddb81d4fb9075c3b199dfbb6ee6fb3d7d23d637716deecd81c72a970bd363402bd4d4e03d7214f7ec492e15259c5279b6c2923102e83080bc4ab6194dc855f13d948d5dc838480aec14d6c7b911c912b05f9bdde2b1a132a64206c481111ba024f0687f8e50fcab963feb884186fe81d7632dff4b178438be585e19bf677c3183abd58d0381b4057bbfc5f519af5278902a7c8ab890a499cda01feabc5ac642d139a87dbc358de3e7704ebac9871485cc20a2763f085fae68029a7c6af17231081607601f0e6e53a715470199bcc73607d26144e23c3478aa2e4c7a69cb3cc02f36ada4fcf5eb6d18c3e74cba1dcca35d4a880d97bfb4d10b1799df22169741fb354d620acd5cef904b78e2d4b36fdce325fed63a76d21da4fbee4f49550846c4a3edbffbace89887b9d0600cf0b06ec188835474480244a664d6140a49a806eef88a40b30002ee56719e6f3afe7799ff7fa437c9c29100820a3b83b3019f92721ce720eb2c54baa73d37b51a54d94d6efd7773b9b34f8f28de9ae3b452cd4bf6f59ab8ba6a81f2acc32407946d0d15c9ca023e2c9d37ac2ad52f532084b97e77d0398209aa81152192002c2263120a8b6ea914cb34636146bd68b46133fa6f3664dfc1361a44d30f66225ce3230eede4bfcc61365c4ddfe7896891834e059c130cfe347391fb93047972bc888fd181431b1012199c76c2f580023915f39f5060f2d17b945a00af0f320c53af10120863bfaf7c1e87564cf59d443ac13f4f27cd27b0af30f23bbec2108ece703e4e4f0ca72f5c9214e1813f7a0b60260363311f29d013b9bd533e211a046b980baebcde4916cd9cf99556c9c29d93522dccb32b0cda8a1ff294fda5d34d31d837039829ee9c728df29737a14c5ae38ffa2dafb8f1c92ad28ab18657b19b1212aad636d8fea222085ded1094dcbe9781dd44b53f2fd04fdf7f2c1139a677c6d416dc0f6d2608bf24ddc6da778a045b989817b2168f794c69c50a2313e864da410141edd23ff3265913e36b03fcb7e49cca699b70e1d07bfc66e96c0363b7a1356406af25009e42e711d6286af66e2ec05cac9c7a452401e6ede53d2e989d013a7dbbc3e3801873d339f405c6da1c7d1194543b8057227d709e233187b60e3469addc8073b90f8f84e397d3926a82ebf8cf0664630ca851383738a70fc23d576af64b57e3fed296d8e1510d6e15b06915723f8cbbc95c38eae1414fca08929e5f2aab9d5e85b1fe6deabf4ec857db54da4e4d60f648259790555ce3028ee0eea4f12c463197c0c52cf6f058a5f6ca0d697bc834cd03ea3d096bd310dc4a06b9de17613266f953ea4b554297f1efc292c0e957fe5bd4d85e9c1a7a867bc7f4ae93ef906b47d4775d5a29d866fac17a8868828cc4912c1d7d76432e5bd8e0735ddcf06cc84145f113b23e4f846abea0c9b005cb419802d203cea81a73749c71b3bf590c7b2eaba71f6d630ca4717d1e046f95ca48730759055339cf1d2ba1c264cf4f48638dba031dc393334772a5a4dc4f34402bf1469f0189ba198fa381f44132fadc8732025bf259809b5561842beba0364d885bd4cd71597f7dd97dd4667f60189a94e42137cc34cbb5c5938080e211687fcfd23065f55f6cd2e3d9ea0294b5b849bb44682b967ae76568911901f46899d69116fcb67f2a433019e473e0c7d9b70ca65a3695b51a8a147934be5f7e26d0d023cb2b9f41543daa2a105d24b56b21d8e8c8bffae97011593334a670b8582d61125a6d5f61571ea8b1a510648807c192c49dae5b2f9425c87da44f570aea5a3497035ee20598c6ee1960dc7a85132f7004d77ad2f5d34ef897b19f1dcb9ed51de85272f1d0957b39a1f2c2dc3ebd67edf0810bd13ab311200e31d599d5f5152266def0891d0be07adfb2f0f92d37e0e3c5a81a33070d62fd73d00b6ca4e969c8273c17cef06f815fa267b360c2eee1f58b5179096f30e9200e08ac69fe372f02f3ef2e7e7110814a9848e8b8e20d88649abd2fe2b337be574ad470105d0f534785aaf130777caefb312c1a118d203e4618696355fbdbed122501470b46864a18204623b3aa04a81c854fb786577281a3f21ae4cd4f1e9f586a07b577e9297149ce677d7d24c8d02efa8225307c3fbf0a09eb116ea4c16caa60b791629f81dbafc9b62d8c32ec3e0228031a38a2a3968b1fa90d25f4d37519d20c52cd65da9e25505e54e23faed4666fb1fcec1e0f777abe1bac17979c3fa5c53777eb18b9cf8ff33d12575a2c20f64273622485a619c88a93d40f0738f2e022e0e9308ed848db04e807c04ab1856e86ce699ee10220ca1837235d410f1414587033c98dcdbed3f8419cdc90ae75174ef325e10f8d09c9f23811eb765d7a7b1043a117f89ec823d6788061bbe4d6074ba68b7bb62540f98c96e1be74aa1c94d491e42dddd050482dd38a57809c4fe067a76ac8363b522e2270c4205f0f4362e7a1c78f8b8e454a65a1201c60fac27f3b3ab7083f90a3787784f626bd05b6f084adb0f1be9cafa05aa0bc1b1265a67619a280cbefd03a309dec29eaef0d0731030a8084177f40c3a39510f019a56889ee877f4d4d0f83a641c1dd08b3ee80efa4f73005b41ed9a02940c369b8a3d23d9cad02a4caf308b1e2ba9ac2547e8e0b01beb6687c2a6a4a9582f941aac75faebb77474cf8b1c4390b59d184b56b4f45eead40a2989c069819101abadba4d9f984ad3057f703fbcf509de3f2610481ad7f59ec7a4f8f13575095b8d90723b73ed6975b50cfbe4983ea041648dc840ff5ae287d665c04cc336c7f947d612e5bbbf2bbfb4793ac203815cdefac4182fbba749f874247c9e8ab875633454a2461976f2ed4c14fbf29c0d6a571023079d76211af45173c9c0b1504a51656058b74304e272a39012cc1dbe4a09db0004e3a3c4d3f59eec7e7da80d02c4b2c756d0250684395c222dce147547581bda530e0d1b5f861c9017874150b3d24b86b8d4cfd47ab224554dcb0bdb8dd388f9127ead6a41d0d1bbdcd269ce119f5340c8522c4a9e3b53e03f1980ebe0ea76eca3adb12fe3759a444e245570f8c0035d8379fb9c1d5d65ec4335180434c7691923e05f4d0a7b75d315f35d57206ff85fcc462ec0d047b2a6a77c3af310d6e9259537de989ca6094c845db11bfed1e39f498cd6d95cd3eceaccade27c5c065c2b5b484a144bff3f406b5e7fc0982054412d636484241409510456baa0ae0d5c7cedd811ef2c2739d319aeb5c643bd6d8d8f322f281dedb83bd8e45eb806c1f0f5cb87b7e0b9e372a92d2817992361205332c39ba979b54ffc88b73cc0780a2d802ce7624f09e23a527055a1c03c5636cd364a40767f60b868c6d9a772ac058c955ee384620baaae9f39848c842a41dcdfe5005a4bb11a613cc6dd0eaf12ef8168d47e685744ed2670f84fb54d694de4cf7ff1b7952c38a606c9536d71fdfca57c60f83f33a877f2f0af60df753156b46dde43f9622faba915f7abf0c5248e21c60607d41592db9814943c50e2e272de28df824f1f557a66766fbb3e70062dd2618cd2c7154dc9dd8f36de40aec147bba1998ffc5d4cc54e536a150a14eb19f59c5497720fd591340ec300e0f5304c0e81261f37a0a551481beac870cf62ba07459e5c729602fb570800fc688dc1445383396e78f7a27b4b64b5d9569a8bf8ce1631cea9643504b34d17c0afba3b9edaec32f7fc7d6c738cb37f867ff84d5b2f72279151b372b1e79d3e84766bb204d5aae013b3e09cdf5042d4b5c1fbf3cf0930ef6920af660649dce34df3076116f4b7f007f51990ea6f066ee0109eb2cb52587d814d2b23a3dc252e52a90c06eb22ba7e774a1682aef1f48e5114775159e3595064aa8c9af8d9586514dad095a1ec42f6e33863e64107eaf5ab9097c02a03edfef05dcef01c97d08636512194e76b0014748a4e1f70ebdddcde50217c0f4aeb64239f6fc98e26baa3d7b639e7f977b0f4d99759fb6c49e805333e0daaf4fe2fd1e4a2896737ba0af4ad9eff8662e0705f104b9500b2cbbbdf16813d355b4742fa763541fa53cc6b847c10bfaea1265cc7b361573a8a7e74e77abf72d04385f28bc57ea61fc9486bcee528f944c8fccd0837209e7e30c21b1f338d639cfe975e65b9c7f95064f874c7b6507aee93af96feea19dca28abcc16c2632a87eaaa7d7d44bff9dbd16fda5046eb4e21a8aaf603fd56c045e725174de2af727f0bc67d6cde6e415a52e321f25b19e5dc94e305b1b2dfd7a71cbfa03234f7432eb2f4c379289e5c8b354cd47dc3def88c5044ec36967786658d141f9fe42b9164e185341f4ce11efcc1f0fd2554f791cd6cfc94e60e6a60f132419c8bec286ae3bb1a6e62f08f7ec81f086e72071ac77a680c61f41c8fe26e2136cf61340c18ae32c49c0fe948bd548175860390fbc224469e32c8cef4609a85b66f6f296fddda73dd5b519636b4de4ba63dd5244aa3e63eea4cff8f0e9e8e9b8b5b2aacd63220b009d1b24764dc186f94bffb0a43773fcf7f59b0c5342e33ad3c3c41849f5eca520127d5f23a7cb51f6aa63201380235bf3636db4f8020689610d667ce5b2656645c95ecfad12a235e8735d711f071d89506bf008935b35f76a769d303cf96bc74342bf2e1b9db990eabe61dc6aad9c2753f9726c9e6342b0a8d22450b4a2f938981e14e9bf3bfe88e09b6b2de5e42d309048e932561334127819e98d6f15a5a0420c7b2bae26a8480adf95b5a6637f4921e215a90d9f2e1c1d1413a1af322fb526f906dc8fbf9041fcd1f086a239ec30e35a562c73303923cc68f32e8813bb9298ae2f9bc7bb79b38e719c60bb21d584ead7c477763ba6c3f6e750deb45d089978ac813938455363f9d5230700381d00488f9da1c6cb5a9ad98794ca5a13bfc9b501284959f6aec32b6ab7fb5bcd24954ac9c1b4719c8624aa6265f06589a4ae9d7f6f3dd0a34c8f3e7948ec823f4407f43e95388351bf955390c97ceb5e7a95ae31c1860a1ceb86e84c94656d6b0cc12b859090a1e8d00d31ad46ef992ff10920cf1f72bc6102868d950116f228a26abf21a8463d7af6118e00bbe86c148030510a95140cb90e5f18baf2eefe149fd79cb71a1a5870b4f12d54f2681a6aeb5121a05dbf31e45c294da4804434c2422549e01aef75176c005ae570dc967bb99c9ea27c08885994c74b11228d09e27868af257984afa864040c09cdddd541c0982b99d27724e0eedb2b8518f944434b209f614f0c660a66941f8d15756767e320c48c2062e9515b3b9d91e28015c764db8fb24e143009eea5e6d720b057a1ceb5a7b58433d368101450f324cb9f5269816ab71b75ab8d1f25edb5287392111b8e4e01588216f90ac3fe4028f1b2e12796e94329ee1a876abb3dc7baa49da3193432f76ea82b8e7591e7a8e4427f24317305ba481dd1cf00623583f8bf64c652d45bf807dc96bc89022dec314ab269ba4932cdf2a1aba5e409f8fe175881138a5edb7f8ad43faae86145bf832e3033af67def5ebd1f531d0f608b0a6400cffe2a0a1fb891e5eeaa70f84d4e29059fe43b1398df1160fe7f28f14e2347703cba20a626f0f3aa38686ab4777196ccc34b816a430d3d7cbaaa519b6b21d0e521ced02a771bdcf568b6b6c940d21e3583f7913ca4ac7852bf0706d3e11193cd896848af807fbd8c06c1642ea72561ba7ca7c40e2abe2872ada02b4254dd3ebc942270998e0a66732be4569fee566d868802573b61471a30268fe8ba9c5c99c463e3794ccfb285fa4f2899f2a4b5acda3a4d05a25b44853ccb56455e9e2f2efca8f99ded1f8855b5589a015c389fc8f70320b70512d4b0f30d34caa6e306b03b1923ca51d81bf7d6c4aabaff56c9c630a98d75ce90b71376efd99ed1e5e797cff26d3821b5f75a559a83f0e93383bb91afd0d0aaf6120759a51516512c2ca1bcab1231f9b289de897dfa67b4f9a4f352bad2a889de8782a70f51d9205d0c05a7be38e15586e704494a920d09c56617817b3e37475b90b80f4159bd7528e77444e26b30449c983a9ee90b52657addfb80497d6b3c70bb143333ee782f071a8a3ba22367c43e83f3f8020e1883bc3293904dcfecb5eb924c407261090d05e0aec513b23ca3326f953b7cc826f5c2b14d5dac40cb482df38ccee5ba82a8148d07c27f794fa6fb3c659f5d98474e6a0bbeb38c7f813b25a66ae55396fdb25662c50d07ee40f299e01d8c43a0fbf5e09f1a2b953b13e7895fa5a646dd1fd5539184bbc7783ebc70ce2f7bbfc2d33c8c8dccc1564b90d37d925ecdbea4fb79fb7360bc99024c74320efb80c8b27835faf7661f16f16b86f0315d96084081113325e6862e859fa3f9f21af62d67a938f5650c316fe95772bc276b8f75e972884842d5566522d4421c92d305433834d573b5a123133906de68c8d48a28d1ab9684138b1cead97c3493f51844a20179f2aaa88a4ce25af3acc9a38ccee981559e65b1b02b8283951a03522a4746cada44a5de2a751503f086e2c5d0361eef247a1555d5e6062fe61078a4c27147644ff212cbfafbd5b03f089faa8242b2e2988aef827df219c57774099c6e95310498171b24c9c0a203323e2fa1c024fdbfc89a889df4feb7050465ab48802bdfabd9052e2860fd24775524721de441a4f6269f6db1bbad8815ac5e6fe3313d49f9a6efb503dc239f29accebfb98cd28df93898e95accde3741e9532b8b7d8b42af23cd6c85c149bca86748651286aa1981c415a3330991bdc7da0c2e230aaf4bae23a9956eeb65da723809fd82642dfd3311712e88448bc37a2adf5e2d63f606e217f83875db04aa6fb85b734d6919398080762200645721886f304e68682a4f1c4a5b803689016dc71128d457af58f31f0e4acf0d7f22242ca5944cceffaaa9d5cc49d1c85d601cb6c78324ae63268a9db323f7f4379c7a81938dff6267c8ebfa63f11446118a611622f1e5b586e291df8892929c73be46f074d19e027e5004aae7d65f02bd3690625ce69019842c81bcda144db92fd8dbc958d3089f6ee7f947ef81226cf5a2d0a77f611e8ff61dc46835842a49a17628881fd3d1a7ebfe7003070114d73d77dd975eb168687de23e7f2f2bb6e286480aeb2371d00be2363e3690f1897a3021e94579bb84a89a9690b52f1fcdb1b48aaaf4d8ca40373c93db44a1f0911b05bbfd6ceb271cbd70ad8db45e56fe22a35b1acc37988ac673ae88468bdc76579403aebf6a082872d6c693ebcaa4072851a43b1097cd7e7663a3013d841d8926cbabd91d3d5965c0aff4c17db2303188646842dfdce2e1d8f3529a76b2a69392f730f9dd81de525bd5b403e34d5b14ae1c57c2ce5ea6c93d0b02ba1d64da4c20f5083b7868d5bf00abd923c773651492fea57f4d2274123fc7a46befff40c8d5cab11ab09cb6d0c420822e65d9eee9812172f9cc9b1bb27d6b0e8a224a3bb7ca00e9ab6fd01e5476effa0034a5306815e83288b9c0728e7e33088f87db90a18fc438991b7f5e4ea388e0985950817692ed25ce5ecb152c794e2cdaa254e02d401b246e67094623392bf458c9174fb688df87ef0e5711bc198bb950dffa464efbb597f571f46130f5a4f229c0e3255f82a35acb05eb3050b270cdeae68a4f73eaf65cb23944fd7cb898dde79c9e2c1a98bd595ec9c5f42ca8be13610a1d121c153646283b7c1d51783bd933a7ebe414e36a7a7541150b5dd5f31a3782a7923e7b227ed6fb4ac251eecdbdd16746a8576fc544bbd245b820e09dd1c5809ef8cbc01ddd8358ed38930c82465526b1d597f07f53b6095e0661627e6eb475851ef1bd758e9e32579e2e521c0d92302e8014b0ac5180d3fd2dda8208218826d4811305a55c80be1717448e5481034a2bff306f017e70618322e8e2ee2c653be782a30a5108daf91241676b3098d79aca13f2bc4b82fb9640fa8cafce55bf732c9634c2059767e4131cbed5c1fd87ac2154b1dd71af5bc41961898f8098fc960a476d37d8d37ed99160eb05d35d2ca966b2cc7c976abfd14e228d51ce14d25576b106cb21625cfb197bdf68686cfb626352c3b24c30a5510128e8d45d1dec32d96132031af9e3000ef5a7294ee39391a8f4d136a791f916f74c7da886c8c97c9633b58445dcc3d7ad0e16e9bc9d06f0a6f852eae29b2b0603fa893def76c585755872db8576e7c9127b05010383b7d8072720b3859c777a1bda1f50370dbaddc3fa6cc11047806b44e3a189d48d420e4269b5925565edca13256fc9ea55870ed80c0d14fdc091232ea77027ab0e31fd8830cea7aaaff761b220d85683c93bbd91003891c33ea17c7cd31326b8abf1ae142bb1099c6391141693c3cb5af7ee3baa0aabd1047732323ade4311414a3cf0a9d42784b8aba97da2b5435a88efe5334115500431b3909f6a8e0be6c792492ac107a47829e9c9a40bc59c463d1ac7a6896575d4812f6a203a69d3e996725ff298faf1c391711e2b485477b7409b577f391458aa580c72f2e73ceb9df18de6780d4299d9902317a52c40b87f013e0d4c1adad8d01126e58c80f50619e06fe1f9969fffca37f07d78068d36f3076c3ac8d76b6168b659389fd5d8ece08e9df8a30213380f0763a84a47509f78c9849ab0227f4e49e697728ebce526167c5469d41ff8c53c1873a1b47139daf7e0cdf01078edfe6d576dc928d51e890c10e5aa21ef2dc330b42e6a2e34226f1a9d5d5fdc7ddd62821c33ff94993611ace0a21362ea6a51f45d7f6c0bb040a1f760888425dab25fe8a338d35cd1e5663cbde2ab7f548b5b96b74e57930d042d6cc5dd6495ae70ed603e4d025566835cf5f2e36fac9c10623d375c9038f0ca3b6e6a46008c537b05e6324b27e2f05cb71769b99f9932af4a67d3db278bcd6c66f10ab93b922d9ab64ba1aedd754643d3cb77c92e992b65573d6d3854aed0f789b38b0b70ab06334b611ad068d62e581754201d668846c4315fd60cb58c13808ff75161f6379a301aa85c07b247cbdfecd309a07e8be2d59c8f8b7850391b524d3b8b3e321c38b049b5bac49ec768a6a8ed03e090e37401f9a8e9dd739ba3c242a924038d91105735fbd1ea85dfa04571272eda87a6571aeef50d2e8c0ca18d3823a1c567953a2cf44ab4353478d3fb0d385f0b7e979061d61493bce47300ad67c4193d5efb90d6c475fc0d90350d379eaf8a1ab4f48f57b1f53809ee64658ef30fda2b13fefdee959c3ec2d061c749ae93f9fc5372e1343edf17cc4f0c7d29f306a5e809c143fd125d9fa33c52ba4b6a046ad075deb03f356497b4afbd8b00cf7081e3e49e9e8a014ba597aa1f9b85d4cee0a6e56d2470c381d70078b168baaee103f8bbb7b57b2cbe332599e9d55d52dec2b9459cdbc3ef18c00e9c3c5a995596d2d3fa3764dba3512b510b714f6028479a9099bd14e94b39b1c83b5e02e9b0722e2c0781a5608fb2826ca156afd08dbff2e8af98714ec57782011e5c878be77a430f9f6226035cc69f3cd3625a6905a73360c46ad6e55dfa3853bed9b8bd28f26d2d35a530721cc3e63bee53e0404a2ea567899e47f6d0a6a369b8559a2844cb9e56fc4411271e44bd3bc92cfac343c9bd73cab29bd479ca53862d2f19bd3ad27eee5989c6fc24f55a1c6de615404f1ca5dded95cf80359352d254704cc6c3865dde4fa1241cc0e0b57b16cd99ae4b3e8a7cf98431791d0bfa9a8f1ac546f07c033a55b7a0ca88533bb29d12f4e8cacbf7ff00adc5be11c6e9783d2ffa2841dfa53799bc041fec464a40c90357536cdd0cff5f46f17c3963f2fccebc03bf3200ab35b607b7c6220b4904157a07f1ea9359467007ed0fad9e4fdaeaa7ee39e3793fa4875402acd148204d3e20baba11653833e3f5dff1c7fdca79f1bfdc0274f7850fc129353c18e8f9ac5fb94608220a15c325a1a77f008a0ba30348408d05009f773a5d31334c4c30f46408ba96c2920aa2ab7f42d95a5020a174d15f4d8325f58058993b0f7ddd0824ba0a1e0a3357d1b6c5de00a0dc7147b1bc102f17b40ef6d75f14f46c0f5ec901cdf78371c6994571039611fa5ff3427b499254952fcfbd442d1d339e01c92cd5bb1c7187c2a91c4269f77865dcf15505c2529e8136eb5105261ac6e99129ac549b971efa8fe5675fc2eca1af47541a7987ea25380df299093bfdd52e3a8e88dfe5bf0934c8e92da1d193ce356e2635629c6883556ee6c794ad1757a82cc69d879a171a3d4470ac2d8b953aa6a0cb0bf3e2178a38103da970d730b7866827f68c9d09fc514422e037e54b58481af412bad84d7ca6714441484ff5cb78e2ccb6ee3bc52dc2553abd8b97bb520eae157c0d422b8faa22fcc4bdba9b27e863ccd2f40e4956fc58a842b2d4eff25279c7da429c03bfca76605fe56759c3df46aa44e4c54f4a84d30b6510831b7a20b7830a1a5d9ac85411a3b29f3d54f00d5120572b9c0f55de91a10c9af27045992db07ad8911eb468cb823552706a530e7663d653667d91a59d4c66a723eb6e050f6dcc51f54d93e3a5ab8d7b044dcd754cdec0fe9de4ddeddcdc8d32eaeb96c33eef7dca4cd8747a32446e7ab1f34a0228842b0ee43a4d7d4f1ef044aaf082369207b114a11b6c2ca2d63fa21c2023281ffe36720ab3de55c64f0406dab219ad7bfbf446568bafad79ee692d528c7e1cdad91db1b91df8889dc3509e59ed9cfb2eda2f5905f39f7026aa4e27a6ec753c17c87ded14f3d67cb4c4b12d21bcf90cc115a042a367bfb81f6835648003d515d21ffc62b3aaaeaf3c2d6b7682c624db499866d862195a734007bb53421d828a1ea3351416c7a25f2f15803db5ce7e12a6d54ad5b050f92a299aeb02cdb2b66b0531d5cdd3031d9f6fcf892c68420b05f45d12f474715f2ec2e3d05e67f35818694729ea11514693549036f5da6f78b0660573426831d2ff5dbf283f39b9f284e023aabe2fcb8b9281f0ab8eee81a0557b7877841d7ffeec42ed73ddf94a26716acfe8d3c08c5a18652d85ae68602c0f5a74645dcfce59dd0d3964e4c8b1491f2cee6bb75d8dcbafd41a947150d1c67315be52f8da9ac4f43079da0a09f40b2a05c8372676ec42106489a091f318fea5cea0c9273177fd7543774af134955f2872d3e5422f1faa66d1667a0cba25982ae8bfc00e01142ca1cb2b6375226a2a281dbec706cda566298a0a16a26824c78f30903dd00e8ec64f3c97df53643328535ab26e7679a256fba8ae167ea949f16cfb57134d014e1ebd84b4a65350dbd4ee3d70d2be12d9de0da23ef40507430cb4cef0679eb983f92fa0022349446c16a2a0b024009afd6a8267c76c22b50195f29fb7b61c6b417d16dd47086e9907fe847f5d2fe9299a6aba20dca2766da534fca750331bf47da67a8b86fe8a66a35dff33ffd93b4b38472086f6c2d352e5208de282b5e2f76bf16d09dec1de4f63859b35c59e94041e43ce5271d7c91ce129e8a8c052e392b60de25f6754dbbcbf114df0d1e3d06e8ad584f5abdd84c1e95f59695593f88b9a2d52ca003ff3e5c201621caf552dd2e81d3b7bef8fb263beb8978c1392b3375b625303015e8b06dc5d9fbae81583f5d586760508300449c3cd56e2a1b9500457239d917f5e1309ac75fbe88ae2fb20e680423503670961c34f631370fb5154bf20fd3fa003e94e926698f577ffc84f784defcb88309352c746c87ce66320896037b36658818dfd62f0f13ba13190f5dde866fa70dc0df5c225ada80c384028ac5c18887db60654c370cdfcccd3568a171bbaf13aa0ab2246c80c02ece8387e8effda98e0b60fbc1e2e12980442b642d987b06de247e456ccfffc6a11b57409232a501fc7e3ce12d3161c8cd476347c23292555e3cf1ef86273dd7c96b9b8f6228b0319fc8c675563671cf908a2ad76a266b6d9dff790b48e86e9bc80767be80a0b6eb8087da58abb09d6f9a4ac28881a74df2bcca0c9301d0efe16a77b6b81a2aa4713af659789c572518cb0f3f5640a7be85133c70bf5da0ad382634ab3212ab0cc79648cf7f90d79666f65400b4ad7dc5e64eded47103df6c37c0cdfc9a57275a0a384d6714444b1ac26b364fdb5c06116b6e74e0a3ac8e8b23f6823251929e2ad6b347b4336237fdc2bffca0294268407da0c7a46e82a95e77bf229df307a2492ad46433d778f48f10695fd2f9818097a8b8d36b9e1b5cd87fde597aca7eeaab4ca19c48eb1f0f23319b1b6e70885654f8d492ed50041cc23989efb0a295de80dc09e5752393cb231ee1da961320645776cc30663604a7bbe5e357d8afd3c6cbfe2725362636c65d38c62602ac1bd23d88fbedcd79dd0684d87958b184181cdc34d0b0932b3c231eadf74a74f3b2931b10f443135604d118e9432a948c64cd789bc06041d18c80e50b7181362f0a0b7deae4ed8537aa7ab0a0a57894e1c98d1738f34969bda8fd331279f4da1d0b4f45d752095d53bce5881503743bb1f5a3cdaaf947e76afd48e0a9d4ecbfd561673afddd9de8c5af9eadc8407c9e04d8f55f4327f49138dc9d89519787a0d63e49f25b4615a8a4614fee5c34f8f95d99c13d4bc724290c3d443dc2d357d398592a458761214e8217f707d229c6d027bd78788d9c2df221d24802c37482cd785ade1e8f70319eff62b318d86d706eabcbf0203bec796bdd86a26d6797203327e473ee4f12656af1c6375755f0d2d6830dba44d43e1728b5d0320077b407c0a4855c895469ce2dd050671a732e3325e15373ec8e985cdf1f5f4c7f7f77aac1c7c4350b1a1ce54e294627f7760f7e9980a684c3046a405f50bc06164fd26401547ef7629a275fcec51c2e4573bf58173236948800be3409f8e7d47d0701c9dadd4189cce75bc4876c245c9525b461a384c27112ea2d7073186e53f40fc561c8267262462f07f7d9aa2e143e108d69f57f8740e82206bb2eeab5cc9551d7c1a8560edb26d0c120fae02859f58abadc3c473ad3c1b0581bbe3c112af390df0b627e73eeb7b324c0207028325f0cc1556c63d66e1851b971b3ed3e5f0d0359d5215ac729b6949289421f890c9025f6d983d09e98832bbe04d061472b77a65a8062682c22d5177f591472753149afd82a906cccf422c1a7c98fc3d092e917dfb96c9853d09bf8442c0cbdd15f62930fabf77b10cee7fbeb4c041f774238ad4515fe803f9a84b6206264d9a20832be2ebc1c6a5c523f7eae24084c5d9fa15cc24ab62593916c099f160792b86a495499f221095b709593c2ea9b7dbab0211873ff1fe02a1d17a717586c85e1afc17bc7ac2d7095458ba9c4e6c2b8524afbf70e9dc60b58882160c23c8230a0be084ba97498384c4315da81349b56c91a160b495782c993431e0e2992ee838516d73fd6be01992a194cbd672d27e9038c07afa06d719938d09a014da8022e31130b4512982c2535c70437b26599280027083db14b935facde0016d6157e5cae1a4f15b2c817b7f205a82fdf5c3a2787ae2c0a9090f6d5df603e217f5e905f6531364c660c955130a3018602b0f1679400cca67afbbf539b0535212695766456965d375af21fd76e4d64e7afb98da60cb9cf2ec065a48ed63e4981852215ae1ebc35e115bd1cb87cfebb4b5318e78d0914198f93d504a8821ae1041bcbdf69472aeaff4852b6617ad97540c09b6441543789714e257c3319a54d7628ade992476ee5c483bfe3fd9f1f9a6ee7dd463f605a4d34a5034d68c680e0560b281d7f4615c2e25de705cea831fac1b89891dd5f5839cc22eb56b95a43251acd59fbc0ead85aa14e0a5c0873a8d7515b5ec4e2c4f64427902f8626968852f2bb0858a4a51632765f4d0c2eb8da6488cb910db976208664583646df68b5361705d518e8d83a2c21ea77ecb8b451bb0d1fe2248fc7ea119b4a61c657d7bac62fe3f8deaa44d440966180edd011bb15d83e0eb5ef04db979a760d728b51f18b7013351a4c8821aa0c0d85eb050ea1439a9011056aa808f63fd629490df9584912e34fa99da3078e2bd76fecd81a4a1fef3dd4bc688c62064e8aff2289b52ce51cb3c28cb5876f75f7ac763154df7db4791ec7cf1a65f6811e0ab3269403d8abdae3a9aa03fb2b03b349211b1424472b436b99e7e65c7d90abe531cdddf72553efdf4fe15cb2cf63a78b400f9d41dd62b14da32837cbfa36b418833311c4b8fb2ad4f05fa8e469c021220287c957850bea5244daec94d6d3bad10cef0cbf8f7f7c88401c9806cb689a21fd4973a9b42bbf27fcdb1b96bdf86298b7e0be9d10fedef6d7aad929851a706ffb88f40694834511ef565aa8e487acf93d92bf21ef1e37b6da533e7f25f4a40152d2a6ddcd39db13631dc0f20cc6debdd6da197fec05cd3316eddbe306dad0cc1b35be45fd01007707837f5d92ed55042f615f95108fb2d06f37751df40d44e3c13ccf14fe106645ac1f1198330049b7fc6c41a8780b1fcde2715d41806c15ee8944691765bfeb4bb06b94f6f35a5a80b94dc714c2686ebb0aa053e04db9c4ee64f146611b21f461f55e24f30329370c04f10d2208c4572548389cc761cd64c08c3582143fce9dd0b84410d3e6e5543ec22631b6b630a77321177e436f04f4b39d35bb3cd4dd951201cb7790fb687248299cbcd9e7c65a5fb4361e050d0edf460226f07c03baab6ad87a680251666183c384e09653daa5844502ef874e1b7bf0caf065026304ad5c115ef505482d2611c8a7350a0a038370bae9ce744ae8a875cc1513c670cfb69cee08a36d120cfdf352196fa6ddfc5cd05fbe1e392b75c4f66088f48a5132562a3ea285651ebc72420885b321b5049026c6e75e183c02544b033a6b0e7c5520985d4d07e66634e0790d491c923c023ede5ae4ee707bc8f27793088d3832b7196f57d474381588b32fe0573fecb562f37fbddbfc67aef0adcfe7f30b5f1f1e68ddd8568b4f4f9b195a6c6b7bcbbda59452a624657e074407b2072f67d15296bf4466d9dee906e13b2dc5bc9aa79d958398d4c41f4f9424ceedcc599384c41ec5f4a0e47a0440d965569344ad7faa59ad275a3b8da23a2da31885b5eee46928d9bd94dddb2e7735af9a245ea4f4e9964b275058fe68e926fdee5fdead684fba9a7c915d95d3c4215101b7bfbe7915ee55c01b2a923e47624217ffeb22ee362fbb33f1d5f4d42401ebbb945ab99d7a6b5e3549546e2742a9a5abe9914019cae0e9e29dc1145ce05fcd72f24f26cc809bebcb7fa9dcaf7d2d0cb394de379bf5b6ed3b8e43652f6f1dc7f42f2f7f5f1ee57d31bf68f9c5b9202f4f3f5b4fba4ee8e69f4cf832a1e3fe4b71b87fc35db75a4436a464358b9863732dd577656163723bd5b5e4ca82db899b133a1baf8f274bc8c597afeb9407b7ff767dfa39cc97d543627a5e9048fb834cef8248692517e404a1531104fa1b411cd708dd2e831b6394deddddddddddddeed3430d6ba2985150d2d22ba87b82da27a87f80862cac234ac5dea875148f90babbbbbbbbbb6d97fafe21ea8e88ba20a22e89a81b22eae28ba823ea1c77bb490b53ded82ee64c71f77abd5e4e00f1b73f5ae2981c8398b5a29b447d53d4e10a717058e8babea192c342f7d9e466d96b59ddca3141ce69bd5a665f7eebf4b06f3e8b2ee6d3475af1d53293e738b55bce819cd7ab65f1fb54a45e0d1e95cd83dd62b52fe51f2daf1860cb76cbdd92fb933d5bee6290cd045d0c90e36c9fc927cabdc94f65275a2253fdd2a767447e7f853a3026e69b4fade991b5bd97bb89055de6c96cd624615f4317b2be1808b325f74798a3dc1f618c724b815d4fec7a64846eea5edd92d2db6bdbb69729055d7cd9bdfaa65fab5503b8f7cf617b2438474262eb5e3cb165bb75d949f931f3e4d9bda8c8dff69a595a2abf7e10f9d5caaf5fb717972034cb8f6725a4beac1e8c9177328238fa1aa193af29a79457ba6eebba57dfc82aeb942028a0981274455ed95eafed75b3972f7bea5b29dfb6ecee253fab58fea55bfd6ab3fa9a9552c3f625ae594f954c00f5cd4b099473ccabc638f14413b4e41d1966690250be27c8a20fb16be98b0f3f999934fccf3d269d6dbc9cc044ae9161962670c9fe918be9167cefab46ee6fffe4b911373299bcccb3dce6b9e75e76bd0ff2f114d1bcca24f32ce2570f01374f4dca23f844b7fa0494fb0474fa99694abd4a74fb0a5d7885ae50b7b8e42ec76df3664e0de4f4036343bf46e8bed38f10ada71f54d2e967da697bb6ef0a9d7e4e3f572809b564339b4926a48f74423a21999862a75ca1538fe3f8c927f7127985aedd283542bbf48db5f1fad136b3f77fb4d6b2231649e967f8529b69f66f46a995dbc5d9536ced6bde52f6a46ec51efa1c8dc203c4ffb3f11dc3440903032525252525252525252525252525252525252525252525252525252525252525252525a51d1350e7dde9f51a1ada090aa24cd8a14c804490a86175417777b77ce9544e6cc37938d94b5cc8fa6accad488228e83e477224b7c2c61a8bc15ddd00f33dad84c4871f24be2771887d72c7c1a59438c839e7c461524a29c581d65a6bad385420f2ef89ebd2fd1c1d75500725250d0dc5577c711ed7a5fb3acbe16081c8bf59bfb747457ade5e10f79aeb9510fffe987972b77de242d6e7b0ec3fee402e340473771d59a42e29d54bff6af5f80459a16e28057ba2560c26d9b8d4bd523defd3fa096a201ba4d6d11ba58860f168e8657b3a9fd4cf03c5a02864b3d44a7aa4d451cc06c25a396fd3e31188f740e8f3f3e3400ee4411ee4420e739813191d2165e8af0c21843008db0809c2ee19824123a3a32324a12108e34f0cca30690929090942082d1098e338473629955381e4e4e4e424719c202bd40da592289024d6765d2af5df6a25d9b8d4bd523d413e13480c0a0a0a0a0a1ab2b08e28157b2c81c4236bbb2e95fa6fb5e2d1cbf6743ea9e840fae7e7e7e727c906a975f446a906d2b11ec7b1b169b5fe53a9aeeb6caafb54ebadc973b45cc8721c998fae6f20c751c0f7f016f8d8f9f09b66e9a3be7bd3eaa1e3d4bcca450b1938c68b1b3566ecd001e473e0f0d103878602640208e0a1e34ce08548e083ece0f0d07130f0431e3ace057e010f1da7029f80878e4381dfe1a1e370e07578e8381b78083c741c0d7c0e0f1d2703cfc35b1a74d14597fa220fff16c1dfdf892b9dd29bbaa00ee8ea9b654570963f4ca503ff2dc7e9c0f7db380e91efcff1be14910ef480a1bb388037a0810c600c60e82e1ebc0b60e82e0b7815a0c0043074d70e9e043074970e1e04bc1cbcaf97320e5e033074d710ef6ba21c17e02900437725c04340fc0360e82e21ded7413988f7b5d08e5700efeb57f6beeec99100ded73efde3c3fbe2510fef8b48318906ef8b4b3bbc2fc274785f24cae17d31168d6e785f048a4135bc2f0acdf05818ba4b467c0f437761ef8b3dd05d313ce8ae17de177f56de078f728c2e3c190c834430e62e93c7e1cfbceac11895f0908b40587bd663c7ee097060b8de449661162428d15d71ca304b9630e414941109a8132dece8d04d2c1c8858706f8f8edb4207bdd8ddee2ea59c73c2186377bbbb94b2dd5d4a39e7a494c2186377bbbb94d2a594734e4a69ad55ce3929a5b5566b2d8c3176b7bb4b2927a5b4d66aadcdb20cc618bbdbdda594b4d66aadcdb24cd3b4f8d60e6559d60af74a97df1f1b36843d7d0a3b9fabd364a252a6ec7f34cfa23e600c921c0e03f3030a75e4e50549d725399d94984c4b380e886d63726f109ad624cb9c58fba45621288532e53b95486414e9479c08ef1fba0869c423be73d23aa5d442adb54eadcabcd094439513bc95fe7d41c1741c03e247548c3246af12d3a2854c6cb1bd70f4de3b3f4a3b55b3a6d5ca5c9defc2a6ea947207157beefa2e7fa5cd703b734ae9b1e8bf85b9696a8350a759ad1a1b8fd1e7c728e573b1caad47b7fd0cb764e77ef634629ecc659eb32cde2f723fbedfdffed25cbfabfb3173dc0d50c8f5364f567138a529b654cdb85799a9de2a89253bf2eb4799e2fea379d6155cb490ff5d540c921c5f8bfc41a498fc412437423d1888c3ff73010393c50f2814ca0c475e5e5eb040d2755d19929c4e27322831994c572ce1386e09886ddbc6c0e4de2b8620344d536a9265591727d6da303ca9b58241084ae917a0cc39f37f3069088944ca287ec41de2d0fe87eedcdaf4bf94d60d3e0e1177412259e822c574e6ebdbdc2805381d368dbb010a712f87b97143b86a9a2fabdd34cdf4493c10931785572ae98c3401f206cd04e19f708e0d843a5367feb6554e7b23508712d9b89df944b0e7ce9016a1dc5fee4d5ccc5b8db75af47f34ccee15913d421c92e3b8253bfedc9b3669379309a7dcd5b96b4a879d7251fe957263c9ff2d5a93895bb2a3bd65b56ab42ae4fe4f860f0cc01c2d4d1be801096cb5cb630f50e7c806a20f23300712d2490922e149a46fe626b9cf0de012f3e48d88678b6dd47ebedc984fef9c104dce8fd9ab47b52861a64d19b5ad67b454a952a54a952aee55e847a7e2c6762979d8d8d49093232775d67f4dab453ba64b05d5cdda4d4e6f9f308fdd4ba784b021eceeee53777bb79fba5bfe4877195dca54ea63cceeaced4ed22d4e842e5b1dfee71edda5bb9c1042481dbad7aa02f9d13fca00d8275547ae42500875289499630e210120a3703bd9e37022b27f9438f3e3fcece3fc3be59c73663168d26cd6acce89ef67d99cd23f4ace00f3691179c2afe5ea2bbae6b2afc9bc9a6d9a0552a954af973aed566b2ba5c19dffa3a78c2eb321dcd8377e8403e87920f62194f2a14be8236af76e38070400ae8939faa98fdc2f48baeb7d3a5d92538f9312538e690987c301b1dd6c4c2e0d37088d87d624db9139b1eeeeee10ea384e4de624cbf71900fba4eac855084aa1cc39e7e4763ce0445e6598c5882b72730c90998af55a39a04efcf90d2101e0324a960f714c1c9de7fbfc9b518e01f1e95f7a9f723bf7c6d7eee63e583a343c07c402612bdee47e1a354d841a5a34b4ee8d8ee38b1417915b779b5cfdcb6d93a35f0375e2f7b77c3ec7edd46ff9e9765b97454b05f6df6eabf4218e595f7ce0ee712584fefc2572be7d885742a857844ad7bfa473f6998700f728f59a78ee87b952c1960addd77d0b388028be55fd269ee97fccfcf85d0f200aebc54ae9d3f94d3c4fef53e53aa58b4bf75ec82db1ad04089e6c1f2a09d2595312cf50f1eabe929aebea7a426abedfc473c5412b9e8f95588f497bf19bb88438266cf5cb2c7713e7c9622301fb5105e5b144a53de4c8c6698396cd235ece302d1d52a3cd66830229e47ef9318e632369f26703ebeedb6528050a68903f1b2dd62a6ca1c342177f5a1953a3115d7c7843fd882efeb7e5093f421cf0e58c815d0c0c4dcaa957eb4674f1e197ca10f68dc736a26b75cb8b11b2ba055f4a97d23757a28befefc9ec040558c5d6048f078450840518943002135bf023908005ad677514094e8a2b48514596def75ddbd4c8820eb2fc98d40b1611044d2c618a12b03e0b94bbbbb9210dad1bf911d4b90fe5436db355c8d0af90e15f2a3a7f287b7a7c363cff629a658cfe174f085db2c791a00eff0d73f123d8d23c4fec471087bfc44a8a78b560969d637598bdc5daf4a8649e1fd51a638cb1c5826fbfa9e83e236e24ebdb2a6fadd527fd8afd69adb57ad2b32b20eaf7069f6db56ab248a10658c3923815fe3fa18bb6564a1f72d49545b5b9e242784ff2e5df1c74a7a5bee15efe098bee95cd2ccbdc9465567a57b2940f6d1090bd70938e3f9fe1fe72d88f7aba385742b2d75ef3beec797286ed13dd922bed61b657ba255fdd9216a85bf2e3c9b2275bdcb9b90658696dd7a552ffad968d8d73913d8ed43731e60c730e658ffbf3647f7f9ef90ed4ad6ddb6c8dc9f4fed7a7bb57e31eecd69440dc0b26e62e39824e5ec9525ac9524291e527a534ce2681fa2666f9c927b2944e642999c8f2e5ebe538f6753232795faabbded7bd5e5ef6537bfb729c97fcc9aeedd6368ddc25ff0a75d15ab7d3b939e5fc59b91dcf3cd3bc8cbb9a6bd7fd5e99e11a295acd6b627f2dbb3be8a46c6bedb6bdac96d36ff265f1e75a720b34ede7ff68ce7d6aceedf8bcef784ed76e743f6d691c08e4b474d270149dff067d7acc5df2339f4e736dfacc4c9f6198a377525edd92fdf4b7ffecebb4347385d0c9df5ea7a525f2e5dfa6d1fb7dbd8f893c199db69c8ee49cd3853a1c74d127769f37bb38d3bcd351b7e4c9a85bf2b4e594d437d6abff464627232dd293a7a51316b2ebc9f27d7ebf0cd1023856003705704f00f70eb891dcd52f01ec3a608f400b02360fc0391039208683510390866006e005f428c027013f08083a809090a11b8882c40c60b48364032e0006d2937d7efc10206800420218aa81c80736ead148399d84836f7a68f0e1f1b32328003a3203728df7c55c233f085de4a0d07d2d542f5eb9bfc5114d924a4835a482a962aa24c7d1808fe36460263693b4f25909ad62ab241a1fc7d9812696ba61c3d5aa4163068b011efe18305ed0ac6654367caa00ef42a6450c0ceaa586ef7cfcc9c46d387fb5cc563adf2607eedcd50f000cdde2a8c130dfc05fcb06fe6cf2a712fa725af8834430068d20124c824bb127fac49f1814858688be183352e12f227d31292ef5b4cfcfd741423dd4441d43eaa4a51e9f9fa0fca984549f4ae8458f1341562c43193c388ae8c173c35b0849f05f490fe6486df811837b89101fb2b0480923cc08576a62b46204f7fe207101227584386c95d2c75db0bbc75d50767bb7475fc28de8eeee2ee53da5cbb94977776f08b7114cf993e1b7173ad82df8eeeedeef4b74f12584dffd1e821f6ec497ba6ed95b956b756077c0fae2cb2696d4dd493a05b9bbdbe6eeeeeea69476777777777777777777777777777777777777777777a3a04e13d012cc1f37c06cb861524a29a5734ecf860432531e3949e69c73ce4967d29c93ce1e81ffb80166c30d93524a299d734e1ee80fe956a43cc0a40d41ed4ce79c93ce8973a0f4d2ebcd39855779709c2494524a97c8b433a5499e2431e9a1d4052b98c20c5c807129410da6e824473cf47b12f79e0cc941070ab8c8300b962ab2d63847490802edee2490f0c33b404e0dad1a9b6196221dd4e8554c300353223e0a29c747c150595044397ea82254cc7f28a31ca3d7282c45e6517f2b10c4d151b4781486c9f044dd487dd0c5f813c21b63dce1fef6d6bdb35991de15a12a5483ba5a6b57a7ecdc29d407dd57aba9c67cb5181c457d186ced9d7142377d3c39e66aa55d2d376e6e105e087fb4668a524ace763ee1284e1ff3f2d75a9bfd356d17c7dca3cbfe5e6ee7e53b29a5ac52ca2a6597bd0c05815bbdd2bd89db319dfe62985f6aad9f910e05e3b2bf2eb60c4b18beb905a67272d7c953653336dfd556730b1828b6175c5f007164a8a1dc347c55884acf034179d05db5eecca0e0e709a030ccfccca020f7cb6aa56fbe1914401d2885ace486c1ee76b77bdaba53c705d1b2a43ee83e14cc43c122fe4e40b19865ccd9c3c0d45a318adb99f98138fa333c13d4adfe173c03c58c100a868af5cd37f39361282c28a2a2991fa8036b0df2ec8b6ceb08694cf5b52dcf985a10bb0241fc85ee43c16650b0dc8f94676019cae02c2b065409304b1878d0842e84000a294441094830022d420d661232204a024217247ee0022fb2f2022b33d801151b117a20842c5d959249900256069b2c56889b0cb0b414a2a21823823f45d07d918828c6fa06f60bc98a6e759cfd8a483d76ce49f46a29fdea57df78c7a48e1d973a76e9b8c4448e1f9762972ed108e2f4eb656241d73e46be85d860e83af64d40bb86c43c24b3140fb9e13bc8a51f69d998e4f9105fd83f9f46c9f673e0dbc83c7940269da14d3f95df5b0fb4508905af52ba6c776cfda364e28de5cb710af98a0e7e7b1f841076777bb74d8c37f48d0d393c60518e9fc38307ec63644804fb40fe204c0797e320b7fddd2e11104010a5bca08bcfe1dc0f089e2cf30b02faddffb67b5f7f9398e59f24ee9e5e6fe50f81c83ee195bf9022220f6609d4716f8a3d7dc37991089291910ef20984db567f3af8d795bafa99526765093af8f1e2ee7a3c6a0a3a1d28d0b475e8893ddd7a451e724b97d279e8d609a4f4cd52ec89db13fff68824e91b8ffdd84892be694f7a498824e9884057442a820a32448a3e9287fa8b10ee858d43bfa37f4fb27f4f0cc09357b07e10fa15c20f221f7a3c8d3f269ea7d76568db059f27affc83502fbbb71222df3f88f4200f8dfd3aba9fdcaaf57ed8dd59e7f42dc4914fbdce6e9d3d699db55be75e676d37a45b31c6bf2d77f7ede1df0deb808738d461bbf97a0fe99b1ce0b7ff0d8e238de8a0e7f8474e0dddf29cecd7aba15bf7fd7a3fbc9c9c1f29883324d6e1987ee9f64af640ee85dc0ed95b2f8a8df8abb1ef89101538838a21905863cd29403ef58a4caf931d67a0c5688b16a32d46465bb61869d1a2a528a6a528a62516d3a2255654548485a8080b51111151511111162c58aec0b05c816181c1b060815db972653e64dd4f723207ffe14564ffad6fb6ec43900be2ad0c00a590c195ec0fa590c1506e2531432b52c8c04a8ed51cf4000c2f8099e10b3e4c584a02e703335c236a18a108c6859c0d4d71218bc341f7d9e4f8368ed3dd9de503459d232426a06f3acbab0439cb30cbcb06f9b3544c20832c96d083042c185d01a49190db045da06224a5094558816799129120a5b94869df4aefb21479c7a593576059a6d8cd899c68b353d26a83249a61162a3015465414517125cf0cb3506125a7a8a0d24f5c68e5e3129ef8c64202f12e65edbfb4b029b878ffc782b8334b72b9f155d093fb6b6a60c5a46ee5489102236725b1fa067a30462f4196659ed9ac66349b99ccb2ceb278ea620c9a9f61c932ea99cd6a96cd4c66596731cb54d98c67f4b32ba467eed2adbbbb4b77299dba4b777777e92e5dbabbbbbbbbbb4b77777777777777777777e92e5d4a7777777777777777e9eeeeeeeeeed25d7a7477772d831047c782aa2ad1c7110ed562c59af147b86e5c4bd2bac4984969eb354b9a93a0cea4f24ad192a08e9b342cb424ed0b50477ebf0686e883c9f76b5dfae69abadb7399f0febb3ed789fb739fb840f7356d06f3e225d3ec0d1aaa4cb3d48a95559b3674a64a28aa155b83b46c46c6dbd7feab412f302f2a964a548b6aac0a512dc976a592d6de64bebf0255a00a54812a961a5481a6f44ddd64ea8c0cc9a4c81122710bd466da0bcc0bd50d1af39a3a17341e0c282de7502d56ac197f84eba6e614938ae1a406566283861ffae28267860b9a17238ab45cd0bc34e14486cc6a88776e87098dce4d313662c4a4a42861c5a44c733bfd476ea7c6c799bfddedceed40f14ea88d5e6de9c505cd0c9ed82f2e68dc058d5c3297187971413383e78816f51717347589911717342aa2a2223bdcbc749dccaa9359c9ac743ca1d287ce098d4e66659ff8e084c6104c78b8c91493dab123868d76534c4ac6a4764c222811484c31a918366eb076eca8a698d48e18362c11484c31a918366eb0a428991528c6ac0265493310d49954562b1508ea78ae5054a0fa02a843e4fb2b0ca28f20be4fa83a54afd4f8afc22a964a548b6aac0a51cfb4161846bbd9919fdc8e7ca1ddac76765d4e1b0aa3ca2dee5cac1b5d1b9816190c57a6ddffdc08a605fecf93baf8924baf152876a5d2dd6b73aab71ef398c7bc8b6b714e6561b8880481a1c41c20c1b1ca131cabf001c72d2cc1fd0223b8615033edc2b4c02f8e48ba9d50335fc37b4199a698540c1b37584abc9359c9884d38a13104131e352f2e6866f01cd132a24851acc2189133188604464099c1303528950f4db854318670a28a81f2971492233552305e7a90622305e3659e6494309121b33a2d79b5645627fa91dbb9f1f1c5dfee7ef2ceed10a1d1c57095db2acc0ce6c1431a890d33837d06f390404c207e8099c1d2080f141e3c28cc0ce6218d54207e8099c1d20809fe5319e5f08041a154316e6e5c3ea0543154316e84a0f243a962b87c884d38b9b941a962dcb87c10e243a962b87c884dfca78a6919a287bfbca460e8d05103c94b0a460a868e22a84cf292825103c9111b3a74bca460e8a881a488242f291835901cf94f155369313a9d64563b76c850729259c9ac767880caea2799956d0f3439c9ac642861f29f2aa6d262443dc6acadd749a573df31ffb93b13a00e11dfef4d883ea27cbf6b897124b7e2c67f9ee45d7cc9a557d7feba733b33de5bfc955206f193db29f277d32c172beb36abdcf25cec1b6d99778476dfa8858b19ff7d52975f7a2cf0eb8fac7fcc63572a6935d17cffc73ef6b18f7d9737fa9896bec94c34997b471011c5034d8a4822c407c40fb8a360b5bbb57031e3832852b92ee605eb068d2744e84966a584496b89d17c49c1a881e448f7384a15c3e5c3103d6a6066b034c20325a783d0c9c4f87c281283864c07deb99d1e88fc9592dba1f1b2e6636892205142c38af9c1c8111a568cc3ac9a04e164e5c100b184c9ca83995a922909351365881b331825c413283318454db0eec68fdc0e4f8dd48bae88776e8708997ad15594cf476e271ef1f1ff7677f4801136fecaadc5cb1647fed463323168f4e851e48b2d138386c7a0d1437e607e20099918348a7c3e10e9d183cac4a0513f90844c0c1a457c20d2811e26f0a96056fa46a6066856a00a141343c3e2c1434992181a160d8b87124af4c4d0b09424417284078f181a160f254994e889a161294982e4c80f467078b8d492b4241898957773e3a409ccca5b79374b2c01029895e7a449104c6e6e6056de8d93264b800066e539691204132096e4dc4c37c14c30146a06a366f00cd611022a8780a243076a06ebf84f050b0113a8197c23ca10508478b2830e8af269948f4a081563d6d66b96340b419d49e58eff5458544250c7f38bff54575442aa1c409d3882ef5755893ea208be5f65a56fbad48b1affa9885effa98a78fe53c5545a8af84f657443c47faa2d34fca73a52c16a8ba318b3b65eb3a439067526953afcf75c3e06753cb7f8efb7c49e09502792e0fbbf09d147f4f9fed7d237a6974772fdf756e43ee2bf4fcafd5d3cf0df2f612181fff02bf77f7f645f25e4ae7b5bf5ceedb4de5dfc955222f193db895264fca594dbe19e66af12f2cea07039e98c2aa7d8fcc782c272ffb1a6643362137f379690ea3f9695dcffb18672b3ae20f11f0b965bca7f2c2c3900ffb188322b28fb17afccfaf9813a598eb6abd339258eff5850e4ef593f50c733ebe75929803aa7ef67a920fa80f1fd36ad14ac8103ac9f01f43c100efcc7ba925940b97f584f34eb07ea449b411cf161602de6881cc011cbfd33706e0203210116c2074319018e3910018e55428063154ce0b8852570bf0004b861a0046e2a7a704701e6881f3f809d041047fc9804f626608ef81986d9b8c0aa2d3270fc88048e527000b0883a60e8ae7804b6f1048e466009e017784784c517e6c1456022f0110a63ac63290a1e0243c1b05b42e02778871beca4491098497c20f012ec9885796025380946828fe0f83f602318a7c67d62601a3d7011ec032682e37700f780a109762b76b7bb4b29e79c30c6d8ddee2e618cb1bbdd5d4ad9ee2ea59c73524a5d4a39e7a494d65a618cb1bbdd5d4a29e79c94d25aabb516c618bbdbdda59c94d25aabb536cb325a6bb5d66659a6691a8c3176b7bb4b29abb536cb324dd3eebdd6a108d2b4bbf5e87ca85b57dc4ab7a2ff742bba13dd8a5b8eba2c251d71d922058b232e5b8c7a4a075d810d111561e9a086a2a7349015492da55b3dfd4aea6245fbb413cd4452172b90a295a1a21851b7d1162d4357a2952814a55bf1159d883fd127ca94f844946e411bba05892860d43658b1811bba556443b722ab5bf1bb6dbac5a3a65bb15b5bb722c4116310ba0c08e40076a20d6800dfe0aefe0c602218c091071c2f8003a359a8f40b5d095aa9684400000082022317000018100e88830249182471a6d77a1480106da04a6056a78b2331475114328a1903080122200200000383c1280098ff2230dea4155dfaf9503cd164c2cb6918f7e19dae1c22659231483a4a6480259bf27e8afc2c18863a1705e3ea98eb1ddeb19b3032a3069f342b470a87eaa42744b68c2629d74995624d28f18c28a082bb6a1663245701a0a41d9c6df30426466f53be164746354d4657d249a5a94c2b77d3c322101d27dd39a68847aa294d5f48ce714fe96133ba92bbe38eb6ba3fc5654da5a140d36d071d4858d63e137087d1a7ab70d3ccd8b771364cc087890639db3819c05a6a3e63278002a320c754a0ada4a980c7495b5d14b0da6016c11bcf278df3b1375fcc875272ead192d2d4293aa8807f438a2f81921d32404ff7f4624d701bb7d2f48f51d38817d7b4fd06a9497295ef34a86c7780c8036c826289dbb2e37cf435e7fbf8210f356dc1afa436a70f302224daf7a37b6b6dc2d2b174594f4d8386f4e027b7d3a771f93a19fec43d2292ce9613b3769c87862889fa680a484d3d5695c9f14fe6dd5bc293963aac7fa5381d2f746a8293f3b646c8bc66871a6f020e0a8585b3c31580392c5f314e6c5c1e5302e000790b72aa52b217682c873767be80234ac11de35a19514a3f9aab46d7baa2d5d54e7423af0d0735e5a5b3975678017f299d4ac330716b13412268cc9d80f82b403187d14a44f044112c5bd807375604ed8be961b5f02cda81bb2b2e85bfa3ad3695e5c4e660a4a756abed6bd30a0352d808076c7553fb3d1ae7eeb581ce8924a54c3916f6a48a81a95e1ccb5c9df12a41d9046306ccb548665c58d429bcb573b0bae82d05663aad643fb558ebd7ff0d3df259d6b0a70ab4cc940c05d1056a5d27bfdacff394e51bb4336bfe05a0b2d5785a1c734fadb709ef3fd2141e533c695e0028e806867e94334bdd1402b0d9a9b7a75d6f72bfa2c4281a042c3bd553c95fe1864b607585f516b8e326be4f6a1f18298f04e60be1da0a2c2847c648c2153c7727a9085ba124c7e7b3984bdc129c1a86d5745a0eb2527a887aea72bcf81203d84289309f11cfb0cb8d22b9dd63f69423b6167099a8e68366157fdf1ce5bc7264f55ee2c0ccd34cd0f5050ec32fbaaba4552b78275d19a192f612ef1243df13049898f154e500b189f77a5f59318bdb6ab42cf4c0b02f4cf7542eab457059b209b87bc4d07ca02fcc255be2a67cd8f71025d46c00cb9268efba53577538783321afaa0d9e060d1ee0accd7efa105d87b2570301d7965a3026c63d61580c2900a397784100a5ed2ef4b33b85efc49acb090f082eb03805761156e1b1c201b5df5993fd9095c0e01626bec723ea7dda22159928ac89b5ed826b4f7dde196a1f9013d27603cce167fa688a395f5ce4002256f901d3621e1449c9b3394789be4134f1d152ff4664c35632fc1b71a85931d4c3dc8841f5c2b29311e742631dd9a9f4b19c80a61251e1fbb2eef5c603766c054daad7727187752f26984d1321073631781b110ed18ba0d8451d0b84fb8d63aa50dc7ffa1317137e5694890baac3002ea60600be8a0061eba16add49325f0c2496be7342d51bf8fdaa1892683f5496d9ec8fab88e79fca71ec52af8dc3c4298bc90bde5a139bed18cb45d77e73d3b3e27fc2fa3cfba665d00fdb0aca7bcfa49e040cd86e66d4b846bc19a678f5fc9a55e884654502210d76334c91c5f13da99a6837691e6a0633da6e1a942b2b0c3c0de02f8a8a7d0015fc4ef2ff6be357f3749bfe5ebded4825eaca6e7d33bd9495d554485e75b1351989031c47f69805e94f37791bd8dd414de740264a4d7949991555759162071e9aa770d65901bcdb17c18acc3373a0a3c1de9b5565412607a7fd2b30861da574d8829e61aabc209aa0af74817a194f29938f8fd90a4e3d79232e64cbc8f6fea1bae0c09e21663fc15055cf7a1d5567e9f65b621c1ba57e58a22663cabc24aaa0cdea699f4ff7b71c6d38d199da9c77e240d80674ddf510d485e0932577bc42a97037204390cc1113e7ef1f56ca8c2d2450074bb8e34c95174411e4350bc789e4d92b351ca059394be370ec737604525a78b5255361c81224b6aa4f8a1ffd2344cb29d2d1ec487bb271f55385e635f7d30f9f63fccf62d6b84ab8f6389e4ee90c07a5fa20e4d4e5229c8e8b35cdbb373aeb27e43c82f2b23a26f50e630f6c08d015228ad245d02cceed23a39d888a6fec07904feb25a9428e9326973ff1b0d081a8b407ce48a002e2a516cdde1b4b2f68e0d61f8874514c8d1781c9900225283ab127ac1735e718dd723718244050a694da4fc783dfb9fb3e9a8ecbd8ed26b94b96abfa68c39fb88674ba3dab7a661cb463138c1acdb81a46c01002f909c8f37029b502a6cfe99bb1295f40485abbd595833d53232ab102f431c7b2d80d50c1a8c9311568333b2ee099d296177a3e3ae3beacf41b05e8a0282843be6db35686487be341f4b6ae1cc193b68209b2b3a5c8c8bb6ad11af1b8d33affaac73bfb9a4f5e716037fa18c006688b469bc9a7e9d39169dfac89e95f4623efb236917db488d061be8fe8d16346157bf2129e1ee31beee1e70687bf46f06a24bee9e88c94accbb89185c699e4ee700997e2af3183005c8f71e48bc6745ad367715ed618c8f478dc1e33c9f938983e66df8f3ffff1d0806c1cc8b27941f6714760cff8256695fccf9243efb11520fe78c9c85a3079db4c86d373f503d0649feb26f93331abd34dce8f6efc381b164a8c7f9a4cacf0b8abd7401e62bc065c6c206183c8447289d92f931d8933a9fe097dc7fb9d525e0a6ac44427e683def0e5e125b30f931fbb711942c526ab6403f8ca726fbded37a2e56df0c2139a82aa4a49555b3b8e70a96c1a1fa01f74f5faa55162602a9420b20d450f51c5868ba07d985b11a052cb9ab7e7c8de4a2edd74e2ce96869d68394d961d15b1ce72048f195859251209be0fdbf82f8ae682e57bffc9c89016297088f6ec81f75c723196657951f19f689958fecc33d8415401ece9a26300f527898af847d28bbe417713a795401da4a64ea0484fdf3d043953e3711fb67063f5fc6d82894e90e8d228fc0c687caf75657225e34f005dfdf5c3b489899cfcebc01785f31470fe268e7fbf71e116df6feeb0c3c88080c1fc7c598025356c601d693e1c9572bf2152b044f4a42de5927aec194a401d1de94c52d2d90689cbb482a8cc592418482875b0473ddb14b1441443ae0949c58e16bd3457dc413d9bf8d61dc26bd24d10ce1b09949b4497bb630c94aa02164b98a9833dead9a68825a218724d482a76b4e8a5b9e20eead9c4b7ee105e936e8270de48a0dc24badc9d0da15415b058c24c1dec902d51734cbc794e1c984ba208fa0ac55113e0fba75a631a59ff739389a0819d270f291897eaa051d299402a85f70381e625d9a570f287e19aa2a0f73e5d57da1262aeca6ef9245fc59bf6c467c0ea4d785fdf010df88f3ae70563fb984b1d6ec4df33f0aac67535ab47e79742dac110494f0ea5481ff143f5416cad117604c6d555aee473561f86d464f519473585bfa7df69dc49f1a9bf7156eaecdd32ee374ccda09232a75b4e33872cbcbd42689d20c68e0f7460acd4503a6625ae1e53d9934eefa560534e056c166fdafb4d0968c079d4b92e18f76302f0700dfebc81a31ad7ad59cfdddd9168272242e4c81694d4f188b2b9013a02aa23122dafb1318596ac057a9964a1fd6350c6c808ea8685f4762fe0c0e534fe2b763266eeb5c7e86bef5302eccb188dff671e033fbdf06b93b4d2d26fcc84ab70ea9c5547e054e6e5dc96139cc282be2cc75254fa384fe340b2950d98f62eb02ac31faca6eb3813846acee50e41cb1dcc9bb756660776aa13958219e7084f165067ea3cf7fe3f20b5823c00b9cef134444670c3a800e72a792fa676103b012c1825392605325f4402de95cd3d84fdb778cb5cfea3ab02bea0c5d3f01f211c84e5f4ee2b0ed5844222bef88215d172662516af4898cc9e63c27ddd81e7f4e702d8c7bc59c17e288998d7a74c6b957b3d1a37c8960969e3fab5d999ed0d452af4809ca169fa805cf1574ea10fc5c5dd4070009ba03d2c4b1f437ce398b89a205a914836ef646027caa727911de43d47a3d8c1f314bc2cdf289fec516da63fa87b65c637c2ae9511c4174474d663fb15c5e61b66be797107e04f679c949e2c97d4da933d46a3fb351b5f32f07b6e7112654d2f312fc17eca43844b9bcd44cdf5445e857162d7fbfb429fa6deb3ce3ce8649b5962dc33f742e848f40f8cc977021408b77573f0794dddcce69b882be67f5306d63e81ee78eb5056e9fe6303a8366577a4b0acf6e4bdf548085b47ae596c3407cedb342c44c28b3e7e60823bb8d500ea647e3374f5541ad76939d0cecc095adbbe305b2fc05961cd0a9e2187bc762300db4a2c7b2519322cfb511bcda5586a8a24f5357bcd4546195d6abc5bd907c95f51103b241741f5aa2981fce63528c7adb7a9b2a952608728e5d38c1b7f36376228cfbed6005d9f75c20cb8a1abb1b06bdd05bc2be2b712d5ad8d32f148f2c93374061d4ddbb5de4ce129de7824fc1bbf99985fe235e2c78177caad646b75106f81f40885084627a1a3e69506cba398b5c2b61857c78798198e8713e6d8970f3adff2cd845a8002f36ae2d30979bf84c9586557644e64539e9b52f50016f0c4ab34182a4b7547a3ba6723b5bac9e61752c7707a535d0e50122268736101913b455026f201ea0626a606169c029d50339af547dd60501c718cb21b729b5411daa1cd51cdf41edc96eed0531a74d5fc088a1854fad1c625aa859461b263a424fd20f0b960add22deb7a4f1e63e6183aefde916a956bce2b3353547540c6e8b944c34ca30116ed20b212ed04f47ab07223e80516498b9e1af21ff3bc38c8830b3ba974d311c6dac95ef8c3101e50d1b244cc90896b3684a9f5b40cdc6aa24fb5fc5abfaec30580ec04fd7ef9c1055bce00447da9fb984824dcdba681cf49d00a06a086123ba5e807754b07cbd2bbfc9c4e06085c88eac3ed8d0767b98214f595e239fbb94e07000a6369b9b8c7ecfbc9e98a99cdb014d4f35e9991c6e0ab2c96e89dd45e551f80c10a96650f5180b27ebe8415a07bdd2af192e91066497c81be3f68688a60e5023615aaac03ddf818b90faa90166a020bffaf59b491a42903f89d8d644bd00516ecbdd09faeb12ed043546c2e6c397b2a43a7dd0151da38e9c2172d8f3b1699e4b92772f7a1942be9e4986b6fce4163602d4a90a53ae3880011f2db96e9612ea707a9c1ea217711316147408eac0a1135937408b3ea4187340a2658bf8c41ad1955afdbeb91387d5bd24bf893a050fd2b2211e6648c98d2635ec1d699b8403169261a352659efc34197e51032b8fd0563840bfe74c3e019c08787244fcb4fa681785467e8b8fdfa545311a3e103c5914b44cf09b898dfe33ee72184259dfe93d33ec8b4ccee126cff7976a8849833811c36bc712662a16c9b9590457c1b2b4d39956d3a555da8e828f7a37d669ee61643970854fcb837a09c17fe316e756e1fca83f943053b225b56c07eb4faec47f4c8d947742171743db85af1474feb8eb1c784d407fa7d5e69e33a097bb3c9453d01311d52431b28a77fdd28617d0d510f46e32be9fff36502784e35a3a8e70d91b30b243bcbb154e15a614e91054b1d6b442c9b76bc5acfee91457a29592a9bea314570d54cb3d07dd84667adc30c3a585e158ac24acc4a95a1bd7530efeba9896f575616e752b5a9d7311ddfadf93737c61b9bed1cb77e393546be8ff52a022687769c2fb877871c759775c0e6e36ef0def57b55c615f65483c65628e11a45515cd8ec197c4dc8e1ba23860b5a295c7c8570e396c15da108ee184be06e44b7b37ff9db08e5dba592b3b4cc7efad66ed0e726ecd642a173778473d7acb99b9bb52ec45c7d0c59eebf552e10502eb1a8abe1fbe3c6426989d2c645e6560b7cd112b1d0124bb567335ce8a31aa2106e7044b5b5eb7f4802fd29a4667b35ab7d47ad332a8d1a19ffb26afc694baedb8efa346f3c95f558169f933b7341d991a2f2ffb00d2e355f16d97cded8f7aa08aeb74181d4eed965a7dda81fa5dd508b46bba72e0bed46bdf8ec06add1d93d7569b31beb5966376892580b0fbf9601a441c8804b0f0a563c86c72e69c9d5b8de81e2caaa85d8f259d2580085dd209ac26e2872b1ed9ec7fd80d515845d8741a1504ead42d8e5b113ec725c6c0b814fac81ddb6d918a70f6fee1e9a7533a9432405e5731fd382a4a35e64a570db7ab98ba8008b36d168144b03aebe42bd95824f39d4c2a03bf93ac4f5e4b2705df7062a685b2ce36b47cb535355d15e13330ddb1b8351244e4042e92955a18048edeba5924f8c60af1e27e15e7cd794dbe74e37f466920fef6e2fec2e23c2715c6858f8a9b9fd9bfc568c8df03ba11d48e43e772b6e83082271edd804ddfcdbdcfd745d34b126e74c45e13fd87e27147572c31bed3e354765939688d27c89118da68b81ac9eb6124c171222aacef273447d758e1484204aa8380da7e0292a10140b712489d7aa72e995c78f609c11d8bb75502a844d2fd3687e73adda86a19cfcbe8d1b14ca9dc0190d56dbd5b87f11359acc24ffdb8644690cae2a18d20ae3a2bf87d4fdc5142bb5491fee2ff6b1996c9355ea8fa0586acbb6349aee8d10611383b51605055c0f669c45e57c1eb434e8268c31e9a7e42c43bbda570a3f6b33a0c4adb4a06f40895778d97be594a03c3b76f94d07c6ed431c2ce43103611314915c2e9f33b2e1cbacaedb5daa232fa33f808951c3cba27a3d8e393bcdee7c492dbc44e8c857a1ae160dd35e20282d576b12be7d77037341850c9144240c943db4e0bf12a4698b5f8eb082df072bb97cbe7118c14044f68793d29c797cc36384741c2b67f9fdce456830a1569314635d089b4e8a0d2ee4c6d3c5071f6a1379311a58d40b362c9d84ea7511966fb447ec505fb8a1ff375246fddc437a5eef324d6e286f556fb9723566c9b516c7fa07096867100b28e26ab58ee0370985e959b4176bf5e01a7acc157aa6f04d75c495df8197a082a841faa6ea1e84bbd3dd5ed204bd367cf4b384f2a4992e99cbcfcfac603249e82b016bec7501da2f0a5871830513d04050b6aa09069df3b4f1bedc69bb99e8e4c1b104e7fc5266a1d9c57320bd27f471db7f4561bfa2b4ce0e56a5c0a4afc6ad75899bb4c6d2dabbd4408cc2cad3a5b7a72fb15260c01127374f84dbabc0554fc69cb7ea1c19a886c881b647264da3cfd24acd0a1f6207466de84cf54883f2edd479190585b6e5d73da87fd1be2d7af38202aced0aed75419a29c15fdddbcabe107ce6bb8bc763adbae7882f8adf0c4cd6bc3b0d2613dd442b98da6122668e238aedac71ac191922b0393a56a1b6671cff3f47065b13e4784b2f79b2ee78f6f976d665f33a4747b60a97f0b2c4565df16f121a51428d428ea19f9aad505ad4567cd95c21155ac78ec42a532ca2cfb81cc0e99654bc337d1b860083c9ae1e5c1606fa39e5d5d55d03205590fd265dd9a72abf560db9feb7e569b411e38b66d84d3533ddd03e30f77e720339880911bbd499b252c22121678546f50c97fe496a819e01f30d8122e8137294387af3265f2bc39caa774f0b3e976265bae402bfc0db21a90a1df9ea950376aae630decdd8ed83c091f81d712d0f309a5bbd2b8ab0d09fd01f1c69512eb9f029303495503b48ae089255f31499c4d7281409ba98fa5fae1dcca8e1bec025d99091062c6f145a093835ed42387de9e3eb932b5ff69e781551f848343dbb0a5c9967529c1714130eb7d7709674126930bf429bc31a2db167aa2c9eb3136afebdd704056999257787b0ff9b48efe67307fbfd5ec5541c5470e7a3b4596076075031ebcfcae1c8f3d5c55a9937c8ddb7e1b166442fb6df58d9e0584d723fad6c0f6737a02a69296ee149275e13c6dfaecc40a39f3d3a08a87a10320f08a3b3be68ee87ea2c327be54308c9ea79931c3079f628dbb78c5ea4bfc82625cfac83f3f59e04e4f4ce050783d4d4416283adbe573f91fabe92386773b02573d03f4142940092b3403b1e9f565bea9fda3764caddd2e84d1c835546b1796edd10dd3da1f1c4b9cc547808dde0d75cc48c389be65d976463f5737317270565d0c5aef0d7388c2b28ae6441a41d272b202a7fe9b053d60f50512a5f2df77f8e58aec1ef2372a702db7201aff99b6face72ac1f738f0d16c5ab2bf4d7b224373736217dedd8b3b55e353c6354be2e7eb5017a94f512ad6108d8b4d9a68d70f21d0d4a03bf6338dce8c09d51c4504d3f36171df6f12f5650529b6b158a2486ba844724b690284de95b67ebefd201b48014f49cbfd407b9fed4dd6b46453bcf28cba9d77c1fa20adc1d15324f40f664a7e6d15766be838dbd94d96aab33e8b083508ffd0c1830062a23c28b4652ce2854355c1a2e0fbe2a2bd41b274bbb77753bd61cabde8e8f1cd95f349bc274ac1b6fdbb0c2cf4657f2f3912a0849476c4d8411dfea3a442015732ee89c62f1bb276f08ef88ec6a9113b0ba6d289a4e4796d04aeba1d6e615bad5e1f45e82bede8e11fe7c6031bbfe4fba0a755f9a0344712fff8947ce36bd4b5c3668bee13e4504fac2d913654acf50eabdf8a123ff713c8b4da4744193f096e6a69550014c3d255838b05d496d8cac918332b0bd24b23bff8342213ed5007e1ef313262e9743ebad24a90a5f32d4655c54bbe49718002639218e0133f6b226eb5c2a7460998c0cb81e68cfdd6858e6accaec8f55a50bd67ae6d75d9d32a1ad11e71111ec79cd1c3438613f769dd2e302c4c82d48420e763025330f004c3a7ac26060275b499b14367ff6e7ada1df3331a0681d815e47870bab9450f16e16c052ddc2f0316d9d2fbe14daddc646ab7c53292696bb1132e58fac580fbca41e2a0f6654fadd94ad94e4bc3f162173336d0a2b7671126de91044122e6c4c014348a527fed68ac1b536138126b19c2da229312ceb6f9cc391c8c22dec7bbe658ccd183e134f55e51cf868eb3da176a807afa41641b7cc9617cd577aa78f0e754a551ffdba948eb0d2c917b96f987528c25f587dd171ee38c399654cf56e23e4875de757ab1be08eb5b89b53c96a9d65063ba5743a79824453c4f2e6cfd8f0d6d25a22c0d766dfd24100f8e28d5277ac2fa9228b349a5e45952562be7afb37119ad95f3a42fb929d5de8374f46e33856c1419ce537edc9e3e2b8c5fa64bf8f5a2b01e0a955566129c970a1964f7d9f35206b94eac41afb07a7f171a04f447a0de1fc051ae40b5a7e3a8564f7f2779e5d9735acf8701553837ceb1cd7c9b62f9581145dfad5aefcf5d8b41632085b51150bb5c4618ac1c43a9d91a893a7e2cf94de49a6d1dc660640833312ef1a1f46f673eb933f48a113924f64ef36b2042abf21a4153cf93a5655d40904774f380994e1c81308b80185e3deae04c3f0f4235d80faa79a8fef26e3f7a764c4a322e12fa2f7b036220b64c8cf6c18de78a735126084d1f31324163d3c36dd2a56b4738a5645b8829e391f1f2b52c9b2a15d5c12b060a030c8a7bafc523152cde62361993c24b02d67c92b72db8aaf56b98913309eb771b26619ef12b96a8f534165c2bb5a868ecca7c1dfe45c44ab40bff3b150a4d287e7d5ca89b45f989ea25422fd89fd707f483c20d9ee5ec633576a8e5ca3d49822fc8d2d9963cf5e82c15aea1e936c1336fdc3b3b5e68e6f9945add1aab6cff9087007364e6adc5a8d8ab1af278492c87f4363efce38abebe2b9b6222919f24725c63324239f2e659b2cbfe2fd94a8ac65f7f73c0fd2ec709d8db3ff3003af3172db28622ab8653e483d29e9b2df776ef166aa37488e709d639db896f88ffa40950585726769f49810c9d861a51dc3154e9fac516857b7a9b80a43816971bf1972ecdd94d457f6036b89b0387323185fb11ea6eddd26872aa50dd3719f73f8d116f25785dab6dcd31c9146bfbc40ee1567b0717dae4c3641b727b7e335908985364dbd41d00fbfc26626af705d926e8e4d2c9b6dfb8bb56a1a85d6b518819076897cc6c9b0aa5317254037ac6e0786955171e202d7979f3427aa45ebf145b9df1d8da182a41a8f28fcf7486736b14bc09d77ffb2e645d7e0a274255cbecc19e03454c5e51c8bf5b5212ea17a104e743e4596776434642bcf1e881cfd8be71e8aee23494499f219a7ff6ad05d896698ad89bca21f4e8104406f7e825c333ce05e29c9e8bf8be1911a98087f3df3a93b055fe103133ed16c2adb2db56ba8c8688f9ab2859c8a12abf9e4e1a4898f3f7d0a2081e912c11ac403ce03240a163eb85358f21185bb49d310923fc5c0d3dd1401a91c58884967489870def4aec9ccd42c762480ce68fdbc6fdb8d245d63a5fbc2586d9c38c1a8292b2f01a8864b16598b3112bb87b780345c2f2f1767f3b9a9f2adbef35b486d84b3cdccf6c6c1c9417c229a8f1f9ee420768aab4f4a6fd6d032da8f4cf1a8604fc43512729d24bf1c3cd53abd985a28d8a81e5c6fc833b9a9fbf62e51e3f8ffa745639cfa114cb42427c8f93f0c887d1f1bd74c8dfb4e606fbfefd716d893e8ac0a38f02ed0db3a89fc01a9d795a096a314e2f9b0d585abb085cc4a5b2046ce78d1407b8fbf19113164d2ac50321b440d269740fc40fe053e461a555a89cf2a10391cfa0111a416b678b0c1319ca04cf1a2cc25955983b8506d23b8887f0171871a74c08a1051f8e008332390e24be208b30458c6d2911bd06a5b5ef74bb5e1885a61900ce05ba5574e2a8656bad5b36772d0d055309bac1e24ac1efeeb7b76fd0ff41675511066d1fc54bb5f988b35c1e5743fb6ae73867c180565d08768da6caeda5e107fb946c71235eaf78e89bef92a09108934736926dc80d5359ec1d867cae0ef7eb3df7633cc0d9945c1ba5a27c39ad008b48b1f16e393ceab00304647ac12a9aba843374641c4f57842bc2b8a30e5632c8c02dfbd9a64911aec8938e3a59c92422771967934655d8221f3af8b12093081d65fc254d54611769fa8ead2a0580cb4ed60aa371ec528c2908601bc45d618feb200ef7761bcc6f215526f18c0546d6c86bd3e712596b3b03a85fa9f66dbc184c1eedab23993226a4815d8af1a062f987dc9474c15369324056a9809e22263a33b7592fee341bc6564d8073d84cf62c73046d950b5c7d818e888f55e90ecfbafed872ee73bb7f8819be3168a68d5dab36754b94c7d226bd63c28cf6f0e801227b58f75bb1f1ba54c6e6e4700212f7612097a9eeab7615e1ca8b2e137224efd0e9a072a5828b776828e0fce97e3bd8c38e5b547309b2a6cb93b426fa1ef0148842dc1229e8d943398a9397aad3c122b43b9a4dd63f0b1f0030f711a5f37b5446faf74e7b2aa2e2b7fe0b399f434808d05d14c59485f69d2927680d6f18f48637b0f862a1011016313b8a3915ccc50b3b62ca59061ac2130ee7035a6ce5aeb735afe829833037437f9208bbea93404e4cbdfe1e2bd1c4a420fe7bfd877ef0a4a9d25afcb0090b5396c48ea4c567b30f874f7cdd9a125e922f1450d0585ba4ea39a9202031d989a494adf5290e5f7696214aea5db656ba386b2a626b9c8697060e123a1642114b08861663a00a59c2d76c93015ab743f5a59165fc5731f281aa48338b6d0c02c879fa0adf42d986b73c240ac679408a6e28fcdf731783553868ca7ee1d72a4846b0834ed4aa89f16872a82ff026638e87737f4897f1f9386aca758ff9ecbfb0ccb495fc47ae0cb51406df64409e38097b286e6c86a2d3bed90849a8c4a0201d4d1fa1227715b2c3e79ea77a409222d4a346a4066c8b1c67b69c5d64b6e026befcf9602b5562e4074c7f53c4ffe00d40a783dfdf6f412f602ffdc3a5ecc8c649217e31620ef84885b646a81aaefd59a142823996f5a895b1257946f9f5815fae28f7cade18f95dd33d8a686c805e37ffcd6d861eb06faf6fe48636bd1bba85da2e6eb60331470286f5b8c9acd1e109a62a2a5095314c56eb9d770d4d10566cc752b38cef0231f4a8208170088b051595272d8717f91db4297a3386bedfcfc998b05de459231d580768d33bd3d48378ab312a8ea891a1fc9bebe5044f15ab462611794204be86f4aef494159279d7be0132f133e6ef9cf818abf52769ac2527a06daf1510e83428c9d376098cff01b97f1f758c5d85ec7f6a4932dc197b8e801d1103f1c31d6274630ab05ed56ba43ac2588b304c57af879fc809355160a17054940270066907944770fd7ddbef88812711b24061fab7d13df5402c283a201ce14046370706380de139eb8ada9d51679a8026e81f8063365322005f60932005cd5e5c9737912c7609c2ad08ea825c0853e6813aa68064d54a755d09127bb82c993323716aa58bfa759b0212603b506466110620388a0391ba192fa792bb01f43a691866e7ad7daadf305f2b3e2918e1dc11e1162718b5fd43fe2a22ae252602cb05361425bf82b318af2ab01b4a9a80b63bf218597a8697b52e55bcb1729603f6076228497e0f66335d6560b35726836fc743f77b6197fbca0229a235db4e2f50ed81a94f78aea4c59b1e0c98dcc75304f558a6cf5bb930d42e14bc77018784754eb44ac1ef254e8c2f6326166558105132b4289f58877ed3523d32496fef6a9e8276c6b27e3acb40b775ead6a7701272765f98c67d635691a5e3ab71602b89603973a0523468a235d04ea2af4f342345c4ff6aa435a634d3937af1e1f54ef8102e247318039ddc299d1a644db9573e19b2fbcaed9db4970ad213f62134c3fb5069e39eb22cf7d8d99891a14ea806a7b4a5ac36ad3b86f7092958f415dee16eea6453394a32f0f4ed03a0d3cbb2e9a0439930cac72e63112a6180a772f63be277f4ab5fb3fd795b306f2f1f0126ece5992c9556f0425ca375f6b33303d77f3122ed875d2773d0f5867ae8a444c4ea997ce3b2dd739faceac95b7f587598c0fa614431e67be483d5ba72fc1156b68daf72a4abed9a0caa5447a3917384fa9ccc33d9d8bf1393759e888985144d168c2f816f2b35da9a273f1d50dd2da9478524c2e3fc65c03ee4a0111e1fa02d175041946703533af3387875e6903572d5b206733e086ab47fbfe3d092d78bcb917c5003f64089195d6a901106d6e5cda1982fd75e46b9355d34eeef179cdf3f23af3a86cd1d0db2ea56b21a137cbc5c5dffb6b3f9871d23a29b4581ef30df4a065c3d2ec52db3f59281f70888ec284ae3647e32a07e7b3d878a025317f180f659f8f4a65b701f9a3f87e8dcce10751ce8749a6bba316db8bae85efb78197b5005ce70ad806460e801d5a556cc5410dcc206d7cad896074ee96fca65664dc1293ebae28a2c717448fea65e677b109df2a329f5ba958c3cf445cbe36d00187e803cf6f1c9c3b0f7e3f33c5741171c44dedf936777c97d0be807719c88bb331242c9272540b24efa337b054b59377a6eeaa365a726a4ef82329ade295df962f7e4a8a8b392702f69d12cfb0a2f6d752a526c60193f50d114a4b4340ea6daa589bcbd57c3da96ca59cd1f4531fa39fbbf9e6c41421fa36cfde78aba300105ea879860ee043fd296915e328014d0d8930d56cadc1fa1552005674f67d3a145e25bbe9299946762a204df8c172db90763c8d29c8d493959cb8e84339d376c15b052378881000bf3772c39907d9086d16470458606d251fd87ef0d8f4cd569dfaa8761f38d4e23cf8c3fa5d0c76b0012dd8e9f272e1653e2b6855cbe91516fb18ffebb632e6be3096278109b0855c0de64b236debd5d82fdee588f218eeaa40c00e6fb80efce5ed2c6014d210906a992666e53a1d3b0ce570ff5131919bc6488a57f926c98dfda34d945dcba5f16921d3510d1116a72582827d5dd3d17f44f411b98df9a46d159cacf087a68ee390c63114df75c41728597c98938497f6bd020a94d8a871e3c7b138a35824448385f84f102e18b93a4be46df0da93ff5aa03afc17afe0e56864dc5a98135fbe356d78573bb7a94218afd74671416509acf54ca882e5bdf7255d359a11592adfe7d603abee7d50346a109395b3fc2a3d621f1988575d7e258bb93ee234837cfb92f17f1e75f422dfce55ac307a70e4cd240f5a01c821edbb563c8a33a9c509a32219ef5c93ad465eb2fc22f52831b702ba20099a464e5d31de8e3b3dd6d9f38abd43bee5ebbd1cfb88a13ebe201092fd5642480bfce9db1a367d47d159cc14459ef3deb56d66b3b672dacd8d77a6428db838db46c7507f7255a19ee7d89c04da6cb0fdbb4e063171712277e0aa9bb6dd8b2a7f19d2c73f7b02c14d513b8403ff0b147e00454dff26668387d96dd9fb281fc3622180cb47153508629b1dfc09516f0a9842193d4c724da35e10fed68c379bfef54272e48ebab46a07596934a2dd622d150e9a6d609528f8fd0d2fc118ea652157afe48ff12f6526cb8af1d939449395753babf553e1deb81a5caab84520e7fa2a52379d35d2d5b8151a8813422db67f921049e689f198c8a8254d738fb1edb23438806f95c3e31785acb3075a1936ce32fff01ea6494b5e3bf4393e3b0a58fe79f8d2502d08b88e54016d0df494c9a7e5e2cc8e27d92a6207a3ea779193cde18a1752920c67e1d6e165218d0c62a244bde57f5cbc2640d2493eeb4f8190dc67db8bbf72527e1821fcf9478d1013c9282b61b435b65656dc47e8c4325e80084ed3c2a770b50bd260453a63ca804889a7a0be44158956ed3f2c162d7060e6be9addd4afc5b56e7de30b1cdc9ab1034aa1fdb820704d560e38d11fd272d766c2accc89e13a8439381e64ddf4443efaef8056440c105790e9882b698d08fc119b7b9ef2053c2e4b3be84238c9aa38350ad3a43f2f89567c2d4bd32013f529dd98e9ba1123b1f03c8ea6ca2a82b7c520876b0e350592897c6691ffb92b04060caf3937d6887bc03f0c25a14f5201abfc675823a3ca9862df927922106e4a3620d2601d1b01ab437302269acb1337cb85b00179c746bed39e917604b02c41ac7f81fa77ebd7483adb67007a94a744091d1bf74af881aad88ed0959164d0f63b8b92a17545dbaf35cc134661448b1b95adfc9562843f9221579e2ef882b5244490f2194ef0b6576576f73f10ceca381041a5ab96a9aa704a40cb3d88a40da3b9b586754832ed0cde981c77c7c98f8eb894c2d15f611f62d6983d357ceb6ddb4843ca28980e1c77e970ba6e6f5dfb18dc5087d03b11ef8e78b3e4149785f88f58677dc6b535a9ef14dde6e486f4d72838ffca0fccaef9f7fb0d7abfac2e454f062811d0dbc43a226ed257679d2daab4ad3bf12711d55d1724f2b11b4e445bda82f94d194fae95916b18d4db3d4fcae14b45eb32e62a4d99f864faafa6357a73ab3fd308e180581ebcc776bd0c8d8652b791886c42665efa65dbfa56d5e82741776fb08b838c0209fd35581165ccf2f545696ea5251cd09791a2c4bd1a104ade25c7c5fd2e16fa89774ac09c431851134c9b2b9bde522fba799d6a43cec85b29655ce659759e2af3373b87a224afc4468f6cbdaf63c2670120eb33c5e116cc21711c2a24ddd01e1aa430dd85dfab89e381768b92d720b26e59fc6bb50e20093db16b77c0d3b50bdaf4c295654060ca07a98878d9837a8292f127aa540c1f9a4ffa0513b95d4a5680d958c84328212689c27c5c39344646492890e5d1dde9f40ceca5cd0aa68f520b611b6c2fba7da37cba3d47e3ca6eb894303db98706477a96a5f247a695c49496a4e042cf1fc81a33edbf29223d33f15b8b0697387f6dc4c7146e30392876595b0fcdb8ba94c976e1949097103a5bba6bf7838b8db897162dc0e180b1a67dcad5442f959049916e2d7636840e01c730b1c09cac5053fe48bd12af73a3779bd4efca8dc8b4cafac79c648d8086b1973558b49ac3216aa8b2641b7de3135a712f59e1653bf000b53cd05b12a3adae7a2bf55b05128ba2c0598eeac36d070665050e3839c9ff8c460b345d1cea0b129007bdfde6e2b5c88b507ff5f41ecc6d0fc7e73e804e6e2e553b111feafa88d3f22ae3ee6f2f14d490bfc0abc6a2f87b21bdafda4c940f86a2d89453ac25ec1509eec5e4fa5801e053208e1a0d30a332ae36d42026d55aa559f295137a14e663c4d9f2cbcdc90867fe383cafa29b8240ac62e9801d890c7b7b365bfb1130b9f8a0781a2a9c1450e9f5072212b33291b16372c183898e5f95a184b3287c2f814e3523d90e068c8f8f5895940020a3d216257d52a3c53cefc9b30a69365891076a544d3213cb9b25f99cc75eb3b82534b3877023e2b2ea09595091e990ec0e7a92d620c4e9e5084c4d75d46bed056b49cdb5fc7676c9f8406f398dcace42755696997e40d6831ce4dcaadfde5945f49b8f623e78d2b73beb15e9de757f0f61494db013ab6e900edc34458f1aad21a4038f5ddfc35179b4ac868b1f7bb57303dc418f5a886f1a72b7120b382ffa0f014dc92baf59fcb718fb0253f608602048a07763e5d9a1a292dc7797102a97400cd0fa0a85a402bacdff84da868baef573285a4bb63120b55f3342d0e8a721ae24e870c8d52d00ff210dd28eb96b6db13fd0914cb0b0b7dea6e8ea731c5d50e94b65588daf81f88970bd80bec1a3ce11c60c12eef331f1f34da21aa368b0555c74919bafc9ee1d0c26194127d93abbbdd70b001637d80252fe4ed523db086a6fac8d90c4ae0053cd54a3d2a7081479933d8bd6d58afed2f737301b7a47613075abe25c9d6180492738c52c330e94f823924acf5e4b749cfef38bf766f7b22220c01527ae89842dfb704853ca6746afecd2464d799b64558fc3a884611f031cd1e48d06cc3ceb274c95f138a63c3cbb3ec6a1a21f7056318f988e0b8ee65d766536c49186670f50b3f9a59ad43a2604c86c1bb9a0a1cb6942096de743589b30e557c7a1246bb38786f57d3d4d5694983eda8efc718f7182ef0757be640ba7c65d470f7492f87b618c3c05cd9e414b5418bc5cebeafab2ee25afacb5e0827f5dd8cfa1602ff42b9d4cc4a734384faf9872b810dba0a4cfefa7479685f1dd798685b55bcc59924036627dcfe53eea8f469636156be77b9bd967c649b197e24e17d6855ec99c5eb6d13a1a179f98c3366e03e514a04b4393474c305f47bf6a9334435ff4db4ccc3c37f0d261cd9a5b8ee327d40a7515d5f438a08fccd4808594b2519df7a729ddd78f1e8cf70c5090906e9e5d42b74ac79cb0a560a7a61c4a6839eaea6a58ff47435d7c553e3a1593c2f3bca82eabe19dbb9b9c8bbd2878a4e2804c2837ecccbd3fbfa517c49cd75fca0215c4e2b718a647d962fbeccf81c45750ddb24decd1c29ab1d3ab1b876ba4a5774bec8149a3490e95290e8ec394ba1e60a71d04aa9444da802f4fde7f85744a00bb6668fd362d5e6798e217899128d42e360e262237827acc487929312b16a864cc047c3b1438ea2bcb57456b95433508c16cc0e50eb1c1af8ae09d1b9adf4a736a2b3f7b0c5190041d9ffae6c3770319e2d85a562a12c39ff618c42241ff8ecad2687cd3999b7d28c34e0b0f88ec9d190bf4edef45db49d4442a4f04de624d9677e2da9b770f453fcbd129cbd81a0b0f193d00e34d6a42c0d6e225da47d4495e3d52f7716f6b135387dfb3704e7511397214d1a55ebeac860d284e5b1ce82c89b032bbfcc1969d9b9ecd050d0fd830be0311e4ac5123b9ae4fe3409753461623f56af07766f1cdee2dafda9d894c90feead340869335b1195ddac64465381da8a608aa62592e00ff25540e1ed2adddd4e8f6717ee47639ddefa84a703b5ee2fb8f12be9669bb00872867c90642261e5220052612fec56d2fea328aa4ba426ea619a4a574ebfca2e04618e1ab4d6177c225c995ff705a6f52777969c2fdfae53c3773e8f1d05bba17679456154fcd4aa97cddd97abb60cacc0fabe7b8a0467b1e82421368529626329d13b01e6f2bdca9f2056a809c0580f068a4d6014fea9c9d6fea63a0d6f441aa836d244efd8097daeccd9802b3aec41de6536e025b5fcd56790c9a5913e810d055acc4ecf8248f8792b5e0b938b99e09afecca4a8f1a3cbb1bc49171eee5410a3cd856417cf37b2d2b9c6a47889296147d6959a9693de6c02f6e15df24785c2b70b8f243fbf5b2b1251041a53897ed48deb8d1f2d6a6d84c1ba309d341bd7d8ea4c3b83b6572ea75ac8d99db5d6bc8a83b1cdbb4903e4687538e4a1eb4d94fcd9a2cd97c63ff982d584128001230cc87b315ab94bc9603f1680c38891a1b149946ea525d36ebe3d9cdbcd427bf020e8121dc9cf870b1ebbbc5165cf2889a135638211a46c5009c96d6ac489e457d884f3d22cc9eaba5aa09e38add0b3764e04f2b5586726d26271c4cee6fdc5396de3f337fd4adf53db0c1617656196563d8028e99c1302477f007a9ba9b2c32b65f074d2802d7fbe975987401e5bc28245e1dcce9c20ac0f7c60221e08753501c560aec24d1b12347a166c4f1a86ba3a40653c458de35a321a360ec53192a417b9033d9edec6006ad6fc18348aeb364cf26f8dbd039619823fc116071201dc55ca96f6a30f719184019adb1368d61134a744bad6fff1a64900502668782840465cc16dbb645b3fade88da35ea6b8bda6e2c631fba89493b71a005539645192754f630b2e21b9944d691a8ee20323166d8bb3db48a62f08a4ff731d380c3424d559505c278d440931e8780748774bd7a6991641775888e15fc4f5128b8731f4bb8b94d299f554461a8d90eb8d77c19d989cd00dae94dd3d8b0b6926499e780d9eb98f39358878fa83437eeaf7c023873eaa0714795a610f7c9abf62ddd991b3777c8382447602cc84377ea777b695cabb0a5bfb9296613fc8b0d3389ddabc64742b9eb0130dc8e675486bb0a408a7f5412b7b03d8beab0a402db077d51c1f96124f000803bec59d8fb2f30bb267470b4cf614bfaeb70e25350768758a79f7a99a617d1ffff563a94895141d4e3f1399401cccdc247c514126bfe21a37a916d6381f574b73493a4c5057ef95b0a320870e7c3ba11d47fcb3afe8265c59e753e3ccef8a682ab7d74a99a6b70842817ab4c57c6e8f33652f8b4274e1708aa2af9e48b03c7fb6d9d7646e2d3262f33f3328c5c8a83ed398d944ebd7e6d091207b3301481ee6e2c1860219a230245d4fd66a8bbe15750755592857db7683e09899a5116c4112fc708b273838bd1a8812326f008896a599565050900be10113751c7b75db07c2951572811d5dfed3fa85b66b0f5680bb4e696284b68b84109cb6a121e9bf9130f6398230a80a93bc7713e781607c6079c8e1dcbfa37695389f0014c6b975c41cee88e737454edfcb16346610e294548ea4430ccccc7488a37e742ab5f379f1d9145837c9cd34597427bfd740aeee75e877558dd08980a81f888721e6c9315b84f175e69ef21cc4cf5166e1b5c25f0cd3b79559e936e3b8a7cb7a404c58d7517d0cde4b2926b379f68149956bba30c5297bfe94a9685cfbfb7b695a09fab790ce94966a0e7a8439eaa2ebb26585df19f2f725012d30fd7dd45059d942d194c8e6c8eb1c02caa8ce0613fad3149706bf7087fac048bb9d2f63ade4c70eb7479965728272f4323abadf0663bb88ec73d9ffc9720b91f50f7695108aed0be3b1b1ae0d95e7bd0e69adf36a72dd8931d31d82d3ecde16a7d752555ec57c76c4855c71995af7555ca8bc737237a6b5d8a1644f43b23f9a73cc2dd4529a1306d8c4ff3ed4f1daa308f2f382e0ac51cb074892ff7f048708a3e5342e61619c8ac1dd85bf0f5b3a4e914c4559b9278b5e56fca8c4c540dc81c89218b5839cf32c468110021cd918b53bea40cd0d2381a8ba7d23efb3bc8e58fca81a62df2537f8d3d4aa69ed7d9b3e50ec6e470be0017665391018104f30ba7f324e385f0a060961c52458088584c590a9d79a67b5cb02f97524d56bbb1e5e784882c1d516f1f46dcd09876d47d7b7defb939880d03e158c162ddfef6afaaaaa69e286fd6c57b3e02ff8c381be217b29c6460908dcd2ff6c69640c46dc5b00fa842291b19aa883dc4a99d775bb14d92fe0a8e8e41f9085cec51bd3cb0d9b104d9aa78bef169bcb3ff186c95ab22daaf88b7e37675d22d1a2a1f7384445a9f1fcb0fdcda953741e9001ac91e2a11b60efa6a8d404c75e72648449946d4bfac5b5dfbf40e0117f532736ea8ad54e70afc608189a23a70056a0969e8ec8524b3e10e8ba33b1295fd1f758e7596ed44a4172b0b7928a471bedef15df698a2eceac27da3f6363ed666684316ab04e9a48c606689b2deb2b442ae5ed79fe182d52d69fd6289c97858e08765de2ea1107a06e1a698ee397e061a1648574b70631f95fbba35a2f6a703631dde2e73ce5090fa0a4e409a4ae0226a8889dcb942a0186074955af138f337254061c9ff17c59ccd4ee2e2c6a6008a0df9c3ce8ed2c265687441a6f1d98cb61266125d6883687b614808e29cf6df0505c671e56a4535be60bd12a22406a0faecc2b662f67819499506ab26fdf55f0fed5f0c8e9acceff45930f6183d75d1a5d77129b6a7bbd2e371467ea21df42d18a8d561491d5da17103339614de4db4dfe4d1c3bb970ba137bd44986ec7f08db009acc8c6f294a93f25697ac5973757ea24feaf8c1224f2bcdef99fcd8e3dada03a1210734c43255ffc2ed1d53a3b82239a22f252bbb318a208f7b88e87e983ba00c63ec2f526c8b6d69ed79909ccfeb1ce7f48929803486e793f0e4dc3362b91f697098356be6ac67ccd76844e15a4af8cae78474886f49bb60c3b04a79d71128ff8c708b5df6e185c6efc41823710cd94e9562e9570932354125b53ae86ca61461f18fc1d7025a62875c300f58ee74d9c52ebae842d75d75dde52eaaebe73c5db88623b94628c315e68423b366c22d564d5d215feb284a489e169ca63ea70531eeaa80b88ed94b14e2df33c6a207530c9a79eaae4c118710158d004803c436ff600a7663401c8c2253b0d18fe8700c2ed97ddc434ffa68997af9f07c9a95c840cd35d63d60f548090ab74e3e77c932f1649dd402bf7945237bd18b20148fc2de6d6a2165435d8da3d2d33230f5bba0b8db835f19e678d01a250b85d61c5f51a8acd83aed578cc8a595f79e4f9b24f1c33ad8b158fb34fa810b92d7f53ec2be81b53bd573609a0f84c3d1d986b00073165a8303511a86ce0c9ac108c7ff0c8e9f62929f468c170b3e29e08cc9e4f7e3bdbe7b52230a63e5bc7d54c7fbecbce12aedf3c8fa629470eb5010bc290e8e360b5eadc2d5da1387f93acc1d7be829ab4529f79606a9ba66faa37110169876417f9256351bb7a4c316f1886ec91774ec4414827019711bc6ddbb4fe16d801321ce348f0e4436416c49aa4cb29bf4e3828f0c3cfc9712b432cca744ef30328369725de8d9d3e0414f49928d2502cb05e7fcc0381bc015543f2edef7ee1c7ea044547234492832555fc0d94fdb074c6132e1767e061408fecd8941c88c602720658acf73b061f8bb21a23407632b36cf2a4d8b46cbf1c8209fa4c2d4cf7c2cc86c3352571e8578d5e58a7b2f9aaa99cd3964f8b06d5c6420c9b763bb9c3d42920a35a39b4854a8ed89b0cee01768932c2d4d94b66540d2028f288f8229f540ea22db9f3845879fee0d8caf8cfd1cf7ea13fd2a212b019f78feec77da53468ac416aed6817a4fa3bbd00914fe6fc28a5e4f1a0c10c26db5f35c5939e9e2655f78f82904ae631cb39d09f776183dcda5c36ae1f971bdc7f8f8ca538512d5d29e8c2d8beb5b369c05d3a34e90abfd5c9efb9c77cef16b951b29923002df8337442c5de238333ad9b4d91a2b6d3268488b0ee8e837561b8cd4962472993a82ab99256b22aa33b955142101e41238a7f3c864e07b9d12654929080077621141ce02992a3ad71a45fdb0a4f0cc08f183d5e824de72a76615155827a557a27366f1743fd4fdc80b04b2f42243bcc8af5c87d13c67e968a1e460e758601722a29e2500c9214aa2d16e8c37a0074318dd810aa951209865776a1aa5a4fdf986fe21a2e0fab8481b9cf745fc29c40247e7452294c4f3b7ecd2172e6588299030502c97159ec7b354ad36b1e2fd68537b625f551d504ba4d80151bede0c47775c2c9a66cd2d5a0c6dc6f2351e4e681399d8a2850c4120584817d288c0be90175202b29409adf5616c6cbd02e4fae590ca0850102900216f0edacfcde677cda3127475315b3a4216a67486410bdfac388c8fa48506d2d9a127dbefc476799fa411a1279ae21bd4b73c8b380e701f1957fa0679f85d8321aacce9ed864610613ec2f9fd9c0976d7e53f26c491510922bdce6546173d9476a942d2f542766d016e0bb063acf1d22d0138ede8a09c578a9574909cc29026e5b9560c78c8e536e6ea0cb2df9b9d6605e4f43afcc02ca0bf42034107bb8d75e7177f165850e3935c86eb80463082a480549c09a4bf1825d0c257bcdf28a0d35f35b7180ad967d9729e1e5766509224b0af0bb014b92d4e31cc5ec3e3e833368ec8bb2ff790ddf14542c25cd660d9fa23c5016d8d55ebeb85587fbec4cf616d9a522b5d7c618ece0de94660a14b274248afebc1cb5195d1af4b37120a25063487b97aabe49da7317f14fee3a5282c9ad215e045f63cbae27a4527798a58d2b6deddaec6c1a326367c9b44a4cf5d3d49ea2e3a1265a47384db98e467d014ad10fb5128347424765d805bd9af8a90ea7da1ae20a47dcba064b9a2f9e4444b633d09fb6b6fb69b29ed962656c2249a0fa864cccefcbf3766dc7814ac21fd3641c71e05badc7119554843d3cac1c3a6cc1319fb5ebfd11091e2baf855793d9e56e7b589efe3dbdb5cc5856de43ab16b21963226baa93fffc08b6a5597567ec34728c74b1cd4fbfecd62fa9bc295cbc5d99e48e4e110fa89a16aa2f9b11125df4bf0b1998c5f1364ccaf3f95f4336a18a8e21b2f691b59475c5a61d7134a87bcec3b9578839cfbc1f8a00d239cc4ce31875a721f46bad66ce3430fd096dd9aa1f0ca8aefe62fcc4b250ee1ca29522c6af91cf8eb1ad90050701045096399ee32123a8a1776f4f05ea4fa254ebf6b4a986a21b434e812be1143aa57b47f66d0b9f693e3a32bf33961ade30fc144e65f98b8c83fb0a1a7e2d61314a6197b6d1c6a30864a8d5a2706039a5c4b5ed31d356e1dadfa408e4260d300f9fced12f2d496806ce65debee742753abb9e3ecb3e0e4ed6ef83292d5657549cc039d9244c657056b1b8ca3c62868335f3060c5ce65c8b24a68f3be9f4d8c2d909b73f823fceda71f8d59232dca13560e18683d8c4422ee90e1d5570794f8ed330799587f832ac60d2d956e43114c059e7f73ba3edc4eabe9ca3a732259d801b6d363f11a44f8281ad74058f79ae447a0e722f62f91eb8d9bc3340feb4372706d23f13fd62e873297a114108a7ca56454ea95c0a550ebf9db27b315c7d461865bd6b87a6fcb1a53f75ed69e2cd7bc95b5a78e390e64ecad7b2763ec7aef64ecaf7bef32b5e81377acb3958215baa437d7bf5d2e9982d2f9febd6c0a229d53901bcd85dde480225a003584078a48e30728fd14549c7a2da02cde245ceabfda088a087755c38fcc243121a82bd48a58c8b93606a8241b5e72302a7e2bb416f3a2ecbfc8674b43bea6daadc5af067e608bef782a977aac409f0f15870245c67c904d68057d92ccb6b106ab3e17631d23898b14cb49b4d19165882bc6c905869a6abadec566ca5d3a38e59b0b5f2b4683fc70f24b8444d0749da6da751286c0fdb93a5e0747750cdae4282c977e3294688239c6645a8c4cc19cc08f959432c618beb2e03bb24fe7b042ecd98120db54230144945b0647ba0d183ccafb76fdd7c51e9a6295744c4691ac255c827f045ac025a327a208f8c4f4684af84973c3e3223e435717be4fb89ba057b07ed80cb0682c9800aba07036cde63c67298e449dfb1d533fc5beded06ac0374873352fee1c7c0a6871780a08c7981ad281fb53b2631a5fbb8bd0f68daa3474f4da27794b067c47837e356a756adeca4207d1909e819a7ab56f64ec793a68a038c22ee93b597bd5af976e28eddb017f0653c19d5a4ee1b224a8789bf6ce28a5564c6b2a44bfbc19755f2a621309be2433e8571699d4cff56265d3727fd7100c2b72de7b4de0162c37a9c114ce329f98c3384f772aec47a117392618d2744e7ce594bc7b06818431a37e1a5d9a13e4b9f763326b4e183c0cffbbc4435f1b5e00ab6200b2dba01937ff77b04c2b5a2e69e5794dedb59b75c917907369ecd4f402520522ad99db20843ab4d8490d05c914adc2d45393c9d1284c7e73e2ce846dee1d93ff06928cbca6a3ef0b802bec251fde33e2faadcf89652cacd029a3b8e3a61e09586f6d0600c3d65e5ee5c5b9831bdeb2a57b5f824a04a6621d25c23ba114171073ec85a0f52790517fc6f8d81ee4a3e0a5513b0f09698bf01b8c6caaf90c573de0540ef85d5f39c7f30cfe18406d1850a0824540197438e05818cf2505eb16428b7dbc27dfa966491a1edbb56904cb4755282a8bea8efb5398d83935d78f5c29aab932c7d5eda73537ae22635c9816ad13dd0c86e233571fd78d0e4c36b91c8511adb3191393a32e2fc2ce7f8b937a08acc92deb93274d7737ec5bafbd7e0756863b6465fda5915e444f7eeaeb827e260f65ff17668a7bede50faeb5374ac76db51aeffedd991485ef5f108cf86ed2ce00efba1d86cc8cbc2e03d03cd7eb80cc25968fb090f5d261fb5aea5c16e72f0d2d79d90d7ce3df45e565c92ec571e902ee068a0ab408d89702fa600ebc77ddd17f8fa8698daedfe1af44a2fb274363d488046b996f0a78d2ffb6fb5ffad9339dae185ef3e14ec4da2ce8ce0e4224d60dc6ebb094de30db00befa2961142d797b57fe9f4b80a409de7c47c0332c6e714aa46329a2129e4b86a3ed8fcf92d8662efc9a4cba2cadbc22997e45fca307f158027a16883f5303e0ac116546047d6282beaa303ee178a1bf1a16eb05af3fcda75a4734b42b7f7397d2e57dd951a1bd0ec977024bcd2edf61d2e493569c75a930d2c51e10b34f443ba53716fa7f3b89b9b72ccc861bf43087403fa88514f99f5476793b49de90d9f809488d49e844ebc3476685214a20b80e461ea1be1a3ad947525710ddcb47e80871b5e4eabae7336ffa5ec66f3a51b9d4300dd89579861ff1d781932083d6e0e9e0b7d7e7e88ca4a85e15e9312421f5f2e756dd295e8bf2754b692c7681511eaca81cc729f407c6fcf07c48b0195e868c737db7955de1f1634197c30392daca59e0a60a025317da2746a51c9cb48085c406e77b6fc2cd155b3987000b90a6e58d4229f88931ea4faa1e7b52dca0badc05eaea0811eac46d23ce553406d18e9c697853752e8422504a0ab6f7f55585cad7516acfebb65e31dc8d80db2d9a4d075ef2cde836091c9bead49808b9f0073e9d8e261d829dc071883bb4c43fa42d7ee582f4bcf3e6ff637b18cf99c83dd3d18c353e2faa9ecfcc80fbcf22cd9f6e9c100515831b26db992b6156f051a56b10c22dab4ae50f6b54f87f5b836ccb4b72e725f300a22c9da99e8490ee846cf3b5aa153935cc28ac0bc50c9b9dcfd6352f65b6f17e7c7dc0e7d63706152d232a5f59f98614a384b4568234c0236d2c23759b22390422c16d6d4a41361c722438064e7bac899b05af8d882127738b9383e0645c6f321d3ad9c49cec6593d3524d880eaa535f73be8e89851ed0dd5d49eaff3d874d95a13027722643671229215a72e9a07410310b43ee8d760b678e0e9be9554ddc244055cae006aa904cb950d5c3420f54952e4f199f2c97a8723e61139c15f2f7cf9207802ab8d41d4ad974c892cab4af6662bbe945d94bdd67945db16de9def908caa6f99576d5fe968f76a2f6a86daa71e45ff96b13dea359d3a3851cf2a82956c407e1b9b77f87e11c6af32411f31f8b980f6e779d189f62aa778247b901c7d16a8e49eddf8d5a806fe45b4f7a041dc36e553882ae7e4c39c75176dae45973961c2d3397a3d5cdd1ae42e80bd9021d991d4947b843ea28f1d83a8a931ded8d9eac666d3b0ad91d6da16513b5f47794cf88474145c3d15a4a7e01dd77c4e4025d25e3683ad7d14f1e39ede6f895958bddfb6f148af04336da9e6c3c66b4c8a36db542c01f8fb0301390c946809a83cc759fab2f56a424bb2254a335947e64441148bb9ac0d91d8453b5a2439cc3631a33b2bad02cd5ca32e1c603a1d7773e565aae0cdfb62bf657cf79bbf129ae447e40cb21fb2f152230d61dff83340d7a7f9bac7cfdd7289e118b410d1c5ac248becdf003c1d809a4a0a1989296bc1ac05ebd0d4277d42495c8a3c54c200009bfe258483310d45f15c4a27165592a8d6f12849f6c2a9e33efadfe26d7a830fb066f4a435e7d7711cd10f7a54aa7f78de638ca1d64f4d11eac2f53e315d09cf7b2fbc61f30265e40516605c52860f15d9e58f944d34095272809db5416cab037efcd70c506a9811feea840121e9299e715a59971c3d79b7bcdea8509ae001e2e58800a4fb29613e302623c8a4f1f3c87edc51fdfbc590015f0c48df559e1a202a7bc0d2238a5f70cb96af76770f82f702afa3a3d58c87e2ee19941664ca00775c69e36de2cb03ac0783155abe1b0d52dded6d6ad1b3f03ed69dc94c7a8034c176c1015e0e9c26ac581614b002410d576194601305f60012b80a6fbfe758259957136a2a63f6e20c32b8086cb2c0015e070f52afb2122c439ff098b79d5c83a8a9327745b24f2bf8c52b561c4ecde8026b80f3c0357a6ce6f8d6744cfbc7e09cd84d42fcd673342326716ca46d85931dfc9858c3831f2429d6a56bc7c018cb603eae43e965b2016566d0eca613747d91828c920596b27fdbafdbbb9b2906a14e4beb6327f6e3d4f0e18768784a8d619c529109a474d11800970667c83405c5b86795351467c5c907c5b700425b3b1a434c2cc3cbd5fd7d67677f7cade52ca24659e09dc08200994d225557817444a29a594524a297deb82e86fcb5c7ebeaa5ebdba38e34f4d18ea525f4aba38455b024bcf7f4a5fb4a1191e3335678df46bafb5a2bb3f55f9755d4183a097153bb5082e21c210ed3debd660e80bf7999adb73fa66a7e2b5231a3bda4078906bdd0a181c30aba0181d9c75ae56380240593c28cd62db15656df9e98d4dbf06d591d24275903587d5fe5ba13a503587c556ac3a1e85b2724ad511035975e810b3d2546605fa623f4cd9a0b631a86ddf73187fea82c376aea481ae9e87b3fed430e5226685d516dbbe85d9ec879323e426070727270747c8cdd090101b2137426e84d80c0dcd8684848666b3a1a19990904c282848482613129205050105fdfc040101050501fdfcc47e9e3cf989c57e7e624f9ef83c71e2e4898fcf93273e4e9c2811a2094c89104e9408e144891030254234f1fa670bd5da9287ec887d377dc98a80620899160d76789a80c08b235c2861821fc207446001c5902182ec164b9464fdd6897b4f7037a554c6003635a02f749f76fb57aac3003633a039e8f67df5769af3ee1d238af68c5b4a75a0fce9e34887b8a94807f8a7f8a78a8eeecf953f59f29f2df8cff73efa621fa504690efb6329a22b9b03ff484cd9f6452adb7e68daf6c1d3b6ffd94e6ffb9cafb63d7389a3dcbf9fbe00e053a915522d2d2e2d2c2c2b1614ea06ea74b27132996a984a2555892469902b2b7a4545a55421919e9492924a414169411947967134428d44f1248a4426511896421024c1ef5bf93c4fc5eb3a52c77129bb8edb7edd76b4edf6cf18df7cb77f68f783be6ddd4aaf7babf4dad0ed57ffab957a48e94bd54b5cd75fa724c8054eb4cc9c7022892484209e221e279c48c2081b316befdb52e4b50ca56e52362db31f11af1411f9586b454d7ce5a00cb0544bf47ad9548bbef88b52adddb39bd47283ed19c72223dbffc8f6ef11f1fc88569f5beca7562dd217177d3ba2c867fb29da221e1195a13662980c1d6cbe17d860e58f4d0b91ee5c86e8efd1fc35eb0d465ff27f29c8397f0565c89bd297ac4316885b09bb57453685274a78957aca8ad6fad91cedadd5d85fd74a9d5ab7d6459e3702b1bebd38d6ad5bebb8e224785485479bfe5b9347f6befa7641bc5fcba72fd67ec91bedf3ed7343e26adf7741cc9a16c9a72ef6579b52d3bf56186af2a02eb60a13ecdf36e7cb55e17d39e752874fe52be7b41d76fe5a02b97b5b22dcdc62d7e886da54057a97ae3ebbc10fd467cdf6fedbded3eec1afa212fcbeaf7b7abbefeba7e97b5d77bd8b69f5d0db35c84bd6b754813b34fdbef26d65867fe69defca0c71f39c1facdfe507bbfc5e0ec11e59a75c51ece8aadbf93727da5eb50277683aa6e3b8e7aed6409254f96af5446cc78324490ced1c9b2649a207dbab4a8868ed1c9b2ac1f1627bda77f261bf3e106ddbb75f350ff58c33ce986d6ddbfcd400057d549c35f5d5a63760af057bd8bfda473de38c33ce107d8c964e8e4eaba5a3d3cac9c1c901bac9c1c1c9c9c101ba4902c65012209b24403740374036bb823bfc3d091843bb0e39acc2c0b410f342cda1302924b82dd041103a3001f7827148cc1c59c20862400109214b68ae1325547c58c0000741b4dc54118342084c164112a628e307364028420224b05e477885f14931e47131302dc03cccb6c2eb092dc4bc00d38212a270855578141c12dd3b326309fb92367d9991b3c94d5f5510ba41a91c143c41065f34a162084582afcff088c18df8c2881ce8e8e4c88800060d154704a142e88a1f9040042e100304281c23668ed000192fe0910109aa90042368342fbc4d992041c53e731556d8febf8239410d6044e841119a0086193bb041588010375beca009ae2ea0b040a04b563b18822d020a63988145122ce081911fe8bc8478087e24315381ab08243e404273614caab019a24f6fb729132c4c30040c4cd3aed0b9d8ddfd8e80884d145b3811d433841f2d5e2cb06228df5083af6298b136dc1001715326af1aec3363313c9d1a84143090c2894a924ab8d9a54d9380d102b7f1a8eaf45adbabb8addd535024148958df8232e4cdc367dffa586a8164b36b53d25a69496f9ab0b8f462a49dd5cf89e7152876cbba35ecb9ac9bfaadf686a70f5eeb06b176c3c1095230e425b6c136580b1215997bdb0f605a2e433c555470d6fe6c41c2d968a5405491898a386bd36cb4b088095111d110910b766a839d1b6ce3fba97d3515f1f8aabefc8021da5e4532757badb5e1e6ca4e665d8adc34517f88a7e17edb8aec0cc1392d13dd901320572d6b95b417df7bfdc3f82bb2ef0eded12ab561cbcbc1ad7bbd9ceae98cb6696bb9b91529e2453c9cb21b7217ef66be72d6a9434ba4e32ced5e706f389aa669439edcab6935849e9581a143a5d14a94cfc3c143b6d6ca716b3337a96fb7b5efbd45b67f137b4b11ca3ad6ea76690e45432cca133caa3a6db4e8d92252e2bcde8702f1dc60302a93b5076760d9f795d85ea2b65691d1971388678b4bb6f3de60f4c57f83390bdf4d45a6ebc37c855b7cc631cbae2df5b7988d96aac4e3a41895e176cdbe592d7649429b14a332769362a4235019fbfe2424541df8fd49319857b921019162a41f67e1787f52cc621c3058eb424edbf048fcb40d977a38187cdb60407c471e23e39091c8b8b3c1701d28dafe1c77b82efc46e20d309814f32d5f1836cfdefb8fadb135b6c6d66864dc195b367b76d3e0c0dac675e137126fb09c87a2227a1f872a91bc8f238d2d8e48cdbeedb14565b48df11d898cad5187e58d2b185b231254e6f4fe2309461d677145462654fe1c79462363cf78641c878c3a634bdbc21470cb9a891c6d59b3ce657b3386d1c6ed36099de4f09561c0901b57b42dff19bec0308c853f4041a12c84d9b1557dd3aeb679277affd015ba4257e80a7fc257e85ae22cdc89f0b8722a3be001ab6d190c53462672003838ef13515448a892008adc4f6c49ad88e367439fc4f1eb40129502865d8dd204869dddc69d4f1c07308095964f1cc571002b7c3f71a525751ac0004a46c4d2916de5f289e34a4bea64433b60005fe8aa95f36cb77db5eda23258bba193d04565ec0e9bb842245446f5fe6192aae3c6fb874b9cd58161e8133e41fd19c6c29f10280c0a6521cc6e5b1e954499db683c29731b760e067b390ca3a96c77c8bbc9dd8c83118d3815962d737f7633d1c86b793ade8eb7026f8867834357f54dbbdae61ecafb77b24ed6c93a99a7d3cd3a9990b3340f45536151dd5895f506150778cb9c685422d178db81610a8932d5280380e313c79596d4c9867e12c3291cb8914a217958a14c2145e0a8aa711a496015f216dce1f22309b45e88d22ba1e87960d5128a1ee6c2972885ac2e4a216d0a7973c0f7c88d5213a5905b0e2410a590290edc2879588100011081e0483aa9c09134927efcc00038924eaa1a0f8ea493eac7fb07da4b8ad928eb33cf58accd10ebd3bdbad6e4195da3cda6d6d4fe1ccd97695f05a332e0ae9ad676b83edbfea98ac1b40013133362cae2214511744537a5260f298450177aad936f5b4fe5c4c75956c3ecf396a5eaf3e752e5e4eaf3b7f795d3a7a7553e2a58475d33ae8239cb9a224d7df766aca9fa0175a93f845dff0861ecfa33d6a4343ef4451b3279544e7c55357deaa19dd7676b3ac8a654a44f13b6eb154a6090cd25ddf8d2a3ebf37b19e239baa86b5ce2e66843537369bacc97aff2875fdf53c1288d297481389a810c709a705ce2abd16c9f2a9fb0fe3704717c8d2e5f813822f7cf71bf959e0b62a772c27da72bc8fdf72708827faa60e07733be0275365dd6e57befbdaf54f9a8602a272a980ae62cafab5ee71d0f950ae6ac7374f9384be5c459aa27666bb79c95ff15c550ce9a0ae62bad54c166e2d73761d63465a6cb9a260f75a96f9a3ebb9a3ca66b575366f2f080c3fe11635335a5112405881ac402a1057120aac6e9b002ce08e782b4244d13271fdbd6af4510d2b3499b2a113264db16dde68d5bd1c906eefd5dd79c6cf09aeefd83086929a14503848e1ee0c045736a00f7aecf89486d4969eeb632d82f85bb7ebe960affe49ff217e29850cfc540bc7f669cbca4ccaf32ef58978a9ac1e69d8f1011efe84d65cdce9a765a88779bbeeecf6f5344519f595f6d8fb8609f1ad015c2b66ff50fea4141e6a2b13331085c38619f35f68194d21df2554dfdbf67b26178a9e573d9d282fa54ea5129d2ff7b56c80289f6adf6b2e9477f7d98747ed48f3ef5b94cbdf515599e7793fa7fc67e597a52cb97deab5faa7c0ab6dcd9e97b1bffbd97a7ef294d8df75aca2fcf9afdefd9961ff7eb36fde86d69b2e45b9006d4979e2ccf207b944299eeeb77b087b7e8eca3ee96d75fc11ebe5b58c8722b532d9ff39f5265eaed9f79ab24a07c9b49bff2599faabf3ae32420f556dfcf7f7f94ad3e99ce7b32fd2dbde94b9aa2cab3f4fa0f407ad4cfb8024c7af42cffb724c91a1aac3e99de7ee9647ad46793ee61fa7f94369da5174da49ff15c9ef7491db24034bd7d96a7200da437e91fa447e91fa7cfa512886b20be49fa6addf2f9a452fefdbca24afd4d95a9d4e847d9e69235fde873cafeb5a3fca6923e73cb59b6e5abb7a9b739e3d88836ebdc9281fc4d46c9cf2d4fa64c25a93c6b36c9cba91f95dea3e069fa5c96f2397ad33b48c33feaee5c927ed4c3969e8234bca6be2a69fda394feb13df9337ec11e9b264de50ff2f37b02b89dca257d06d9a6a7ce4295d457a393a43750774affc84f7e057db43cf90ef6c84fbed723c8ce279942fda82cbda93c6bb6e951250d253dca5faa249f8233e4ff9f715379925ef45f9e406cf229d863e4c33ef5933410dfe4535fe99ff15459f746962d7f4b1b6f816cad6d989486e506dd40dd2dbb45ebf2ce7c35e4ab6a13838017449aa408139b6e1b057144b1cd9df913f10e39c8000b85d302b8f76f00f7ae7f68c286eefd7fe07403fc35fd43a749cdc940fc93cc22e9f457affccaf46cc8576f42fd693299fecc38a6b79a499fbf515fdf6432a1bef41eaacc2d5fe1e49c8c734b1655ca56b3576f5a7569facbaf5f5d234ae3750d3cb60ef73d9f2b32c5c3573ac420a03af5d0fe8cf3b0a68f64d6744d7dc6eaf3e69c3313cf2abb6fdf0a61d7f71c2a434fd1f423d368e8ce9c65437f65c619227ec62943e4951e833b50996bd3ef8a101fe5c11e276ebd7c533e4419415d65b58c5d9f404d6de6dbd4befb3323b16b4ec1ae59098dfb913ec599eec8cc657d8ada4ec6d170cbbad89ccb1e940811da5489909fd2a64a84bc76c6a132980c7cb3abb5d6da6c2bb62183ca98bed66b53d658c63267556d88c6041ecad978a6b5b41d8d886613bb36312a5377cef132934aab859877c661820c2a637fc86755465feadb5c6d0c4962464c03ba56037256dd516554c67dfb909bdb90bbd4218fa4cf1c36e951e5496e144a84fa19dffe2412bfa6aca93437beaa20a834198706a00ae1f8d06c547aefda7dff7749355a19a98c46fa2c95ca3a2bfd5965a5f25556ca57957fffab3367c9aaecb2aeadae43f5be7ff4503755fd57215f5520eea3007af4555667a391ae33a1d23b19e2e9a3959551997746bfe2b3bce596752989bb947769f42bda67a3d2daa84a1f1a8d5ea57d483f8b3ef3befaea57d127a9ff3e08eeb8d6c659a33fef8fdebb65e9b3fba59f7155995dbeaa6f6d542a6d6db4cf7cc857d567f987bed4f799b571162dbd6cb603d1ffbc36f7bb22c4d5e87f64ba36cf8d9e7bf24d336b569975a9efe299711efc8c43654a39ceba9908aa43f5f573115466e5eb6724a80e95af7f7a2cfafcbc579594e61895f7d297d38ba7af1464c06905635deafb17e26b529f79d3784a697c2c97f6db4b94b0eb9719e7cc61eb406efba85c86ef95a70ee4b6a1c636a33fb5b36a33da2511cf3bbbb39cbbaf3539e7cffad481dcd955f70704916eab81eae87fd82fc0eebaae669cd2b6a38b659fcbfc326bde9975a95fd2d0a768b3a8f529965708f1fcadfafbe7b5c142be52693cc3325fd58e0af174fff4df9f59c8b14c9f24a935b527fba417f9cc59f74f5fdfda5099d4b77c7d8b436558fe4f2f08aae3517fa2ecd389a03a50f7ff51a82fdf03bf5cf630fafc9e6d3901eadf519977e84bde3d00117312bbbe27fa72d903dda92f3fd5c282bada3d9527906d098eab09423304f74ee396fcfa75c8592b5fdf6da88c4ae94f6f9f550a5447e9abe94f140f82ea307db8f19df5004434953d0011f7fd91a5217fc6853698029aa37ea9cc48d01cf5c932b7e88b4a8932669ccf096bf512299f3f45ffa0bdeb9aee87e074133c14608f1e081a14cf75e6b0ca7052f6e9b302d4541aedbaff2d97e074079c73eead5ee2033f68ff030d056bf00eb8ae711aed3599b3e819fbd4661bc8b6add6641a100fc40ae4acfbf5b520cd654d4dff80f507fc87a8346eebd53dbc7052352a88277dc5cc5897985d81ae4db51a10ad1ad0ae31916b531a1c10ee9e04aaf0d65a6b6dcc0b76858344a5b84942398b85ae2ad6cabdaae78f0f6cfc14d39761d7a26683b8afaf30765bddea785475d29b22a248d5e3d8b8858dff8479c1fcdc05e7af0911ff996baedf6bc3d6b55e1db6031c17c7f51288e3a069e2e4637b250238024a699ba6d6e56a4d531a4e36dca740eca601a4c17ba8fb6a20d6f5196403d532a1e512383ff3157d1b849d2b74bcd6bc49f149153bdbeeeab3abb8d9944915ce127dc0e48a2657b8eca6f570b85a6bed06a3401474624aa8a2073824e8c20a9b106818e7ad062522b8c1f6bff9befbe0072e88c2063b2310e315048d5b226cf72b6038db371c4376777777af305f5cad74830502b820804d5bf800b0a9d3d4a69d8ecf2a1bb91a61fb8f9a857daea8cf8d1f6c7f31e545ba14a2ea0bdb1f443d07a88b7f576680e618c2f6cf40d8feb8d42e077e08b0b7afab5adf6e9e8852998a6b49b7fe51374dc97ded6a2fd6ade5cff65b8268df8fb0a94e65b11d80e040819c459124ff572b9893fa442085d66ab3f339abeb96c4c0c357b6fe59b3ab0577f050b1b3bce3feb9b79cae25b7b2afd234bffed922e067bcfb7796fded6b76ad3f360f04d4e0eedafbbbbe562584d8b694c673411c77c6158c43c69d8771d6391679d5b8b3edc8c4b833ae80679fded2d038471ea7a1f1a7d2d2f4d028471eeb622948836aab786c36a94feadae47b69fa5a965ec5a3da7505b3eb19d353d6f89346cb9f2c474cbba2582c7faaec8ab22bada25d9f5a11eefa559fa47d55cf91aa43d5a4e6b00f53594165545cd017fb357aca235b9fca4aa32a4bbaf2a751d6a02efefae524808f5d7d9a541daa27b0aa632c52737041654615d0172755c7b85373d82f5fa626dbaa20b0eb39015b7e39f382afecb79404a02bfb2c250b75651f55de5081eac9f6f6c722f9ed8f3bdcdb7f93ce5f1a8b3c8d4fa55452650b0b0b892505753aa19c4c261653a9842a8de4ca8aa9fefb6beff5ffbdfefb8b2928282a28e3481a45235144a9fff5df3f0c411004bf4ff4795ee875ddd771db7e5ccedba62ffede7bfdf7efdeebbfff0d1bd67e8d52e9f4c555efac6a7a07779468f5909e4a3f63ef9375ab94274db2ed93cad43ebf652ccfd33eff5cd9e783fbfcdd6d8ef3f6f9e33e5fc5e32c9a923f9503e1241e6dadedbfb9757bb5cc791167dd8fc78d788f1fd994e6d35d7e04aac3796a0e7f4f82ff6c0a447d8b4ddf8b40591d11a80e37e25c500f02d5e13d3587bf6b31850f74f8919ac3fff42699ae46a3af40c4f2e2910ffb8aa39a1dde205f79a8af833bc01be455a08f0920d76d8158df7970101b0be1d9f64661fb7755d8fe5c898d4ca1a7de27f81454e63281be78d571836a0effa1ed7f4261fb7b4ff7b9ec3adf3a7de6c75cf9819d2fd0f6c798eadbda94469051cd477854e579116b75ecdb16698790281cdbbe656288b3ecdbb7446ccbeab83e1f11c7e638ebddf2e0e0e3420b430be3dba205f10a2700ed016c7a851370b0ff5b4acff2f8bfade66443587342d135e307a109754d4df835280f440e2124b1a1a96982e59bf83e08cde63f969d1922ddbfc3d63e4d1ed6135fd5188be5c45775aca9425a5bb868422345106f4df89e0b22026ce0e1dd12f1547df65122fae0cfdae49109f5380be76cf26499af72ce399b3d268f69c4e4e11e34794c2366cf27e38901e0852716036fbc771fdf2144278825ee48ece7c47fb32974dee734fe8bb539f395ca8929cb27c68fff07fe1bc3dd0a77cfbdd771f772f79aa60b22f7329e159e7bee4f93279b31198fe822e3e17156e94dd90d5005f3b40a16011c9c45dfa332be2fce2cd97943047c55f333a0d9b226cb9a2d15cc25234f92cb2c998cd258154c25d403dea70ae6c2c3f3123b715f5fbb46cb5795d27443e2c982b1602c27ac27ce0272961dc2aecf0aca375f934705abf163c366d7374d6dde7104c11b3efef3fefdb0f759217e8f1ffff7de57e6efcb1787f713229e23088e476ad0f174dd772c2c5ff2f4e9c3f632c761adf251c12acce5ab7b4d97f93a338731d6346bae9830845f7ffcba5f3929b80388dd2c3e4acff21e0b0b0b65e94a1d4a5953030435820d6e6c68c20722d44db4a46af833fedd881f963761ea533f5afecbbfa1cfbc6fd8d3fe55c1b87b553e2a980a9655306ddbc112baf57b22b2662c99af703cbdda94f9aa6655cc59e2efd03ed233852d10cdfac3e6b72f25b4767e2dbf56d21d2ffaf461bfd8d1895405912a98ca896b8732d5ac7e0d9b1a37f56be4b849633cf465458cd44697b358d6a78717405f16e2a9c2423c55b08f897806d99aa6bf9758a3c6976a3c596386bed46baa606726f529bef6da5f6dba5aa68ef97216c9c29f2449fe69ba48164ab3e52b920592fc93dc240b2c94e6cb74994b569e8515d3e5acfad2408dfc19375b2c98ea3516cc9a3788fa64692ea130847f5e6dbe4cd73ecd25a6f6dfddbf2abdb72409dd8b0662b51ef6f35730019acef66afac4bdca877b55ecc9f2c4bdf674e33065ceeaf489d32a1b5fff2382a83d4be62bd6cc59da65c9b4195f5d5dbd15f4d5ac194bc61262c9ece7e7328b25c49a398b6a9a35697c7dd51367e9af6f7ed40504b5154cdcf8197ba34cbd8d1ad4a57d0a88dd2da08fff96f75acaeb43f5a1b59474dfbb5327ed298dca494ab7d0ff8488289e9742897d9a3c34c8e0bb468d170a58ee5105a32ef5512793875edae4f3341e3aec60cdf1c7711c5d33f4a5fe0d8118fef864882e44143ffcf1cff1370dbb86f1bdd75a6b6ba574db54210f05d8f6f7e8b2a6ca38aa688da4dd749731b42d6ced7bae3c29935d3f97fe2b993abeaae68eb34a7fe2272b4a39be569e315bfbb3054d85324d570a0ca1a67db6a6e935eae6138761fcda69abf2a4af3ffa84427640599962b81fc1bc544418c9baac4bc5f9654d4a33fa5893d2a8f0833f63ef48fef7a5f2f4bee495e64e11a2f7a7d9daa68eb3348d8198ad993ba496b7a69708df8240c4d034e1fd102229362937b11fd7922144506c506e62e38ff6f63deb793f24a588af6ade18a8455f52b8b6d9b2a6b9c45dea57fc5ae9919fad3986ade7baaccd9608c4fca6eecd96a9e3ac0ceee8744cae3ba3fcf837a08c3afc9a50d770977c107c0aee98f1b10ccbeffb52a9c4813ce8ce153c2d60fcf06f1875a76f5840e6b48984bed4375df4a53e488488df1cbdb287bbc127cb336f50d35eb4e6f8da53aaf570b7a6cfb124ad8b0d43188894a60917226a4fad4bd5beee97143c9bbea41872c4365d48368bdb75db9efd2ed6be2de710636d8cd90c71a1c46c5286384bd3e3f873436409cacfcdae444898987d8eaed60e4f0fcc4786326bedf0a4f45873f466135f5598e9f25525bdca485f85548e2e6ba6e87f14923ce96cc6ba54413c4dd3652e319b983ecea24fa84ce528d54c4d0b95d2a14da87aad3f9949164eac7b164b2ee9ab2ca2c05d544a9934c9c95b0c9aac8048185d6cd26bcd3659ccc2ad3b0e921e7bad5d82cd455286f1c426358c2f13daa669af305810462b733907c9827e5a4e6060d080eb386e7b659bfcb5a0f3ba0e8c11789fe75d26332d0a7165d3d717657ce0f76d4982a6d8fe8518600882f7c9b521bf1042280a435990911b44247f9185481489825ab1fb24dbe43040208e4431c82603cd465f2dc911651cb9a02f4361ec02250505c5f51a2308e595424a49f962df18b03c866b8c9e920d482a24d053f92a1ea3c8182fd8e51839db0ec9b6d7baf3122a2b2a2ab1fbe4534ab042aeac34f15c5a14176808f22b9124b803d317fa381d0fcc909d97183879d39718365b0a5ec9542aa924c1743299489bbec0f0c109753a85210303093dbd30e1765c029ac4605bc1ac70741cb666ccb9d222014d56c0397ee1737345c2c4c4bc301303932652c06e169e0c07263114cfdddd1d6377777777cd31acbbee82dd1a98f000856b21261bb163882250810a48c8a840051b0bc1154f2ebe4060d2849835ed46d3341ef06ced09166c0d638c71d0ae8e43814ade70c82146818ec3776372a319b1e4894bd35e4cc02187180538fc841079668b695a0daf2e50b61b834687ca48011386d0d12209306c6c4dc3b7861e843636f34ae2e130f3a2c2e290438c0238c46892999714d7061c7288a56cca040b176c2a6b61027802d0053d3d3d6027cbb0fde4f7dc129ab7698b2bed0ffeafe43669cd9c2db97d2bbb6d6316665dfcbd326bfbda5af6b5ed54907b0a7ade5aec565917db9446d52e13bc930df7eb575d736a407dfc58ff4043ff7e109a5b523ca2be3a59fd5ebcbc7879f1f2c27a91b36b0f3c04f73a194f94f1f49e71c5e6367d9dc1c512cfa3d57d8b7c6fd69e779ff54f32d0b75f804df5a9070cdb3e0c9bbed5a71ef68c336a358226398e91ed8f72056167ab7693edff1181f5cd102fd0dcc7b93418634a818836c7f3347c2da5943aa54ea95b2978797f75572a126dd1d64e3eecfbfb76f77d6ffbb4afa08f18d17e0665b05f03f461ef6b5a79e25dadff062a7006a19b823d30be8f4bd556ed20b85a57cce213638c2dbe18637b71c516e3157efc55c7fcccddf87dc6635e787f92acdadfdd61d8080cc4e419febebb5b5b63fc697df1e4c39df09070e1d765ed3aca44aaa48ce2ca864a7f8b006058c0b1824c0cab05170c2f2c49625375502b6c367d1ae00c9b07b6bf5743c3d786e707b6bf67c3ebb87cc3f3c6481485200ecf1fb6bfb72257544829285a7802b1fd3d974fb5b0a04ea6cd5bc16575c3460d150d9d437f0f0039ac7ffef01aa8b81be1c33ec54d70fcb59ab5d6ea136bb46e5ad74a613ed0d969b57674747676745a50b4a0c08122e70545eb0545eb0545ce0b0a9c17c51412d543ac2f922897715326326042064aec537cec42bc05781e1155c7d5451462883b1618830c9d16155a9c600a9a6b041c24d1028b25786299be24e1b851e99640ec01bc81db988dd9d8c76643424243b3d9d0d04c48482614142424930909c9828280827e7e8280808282807e7e5e453c89bd8af87915f1f32a22f62ae249101c23330822b2041462c0bc802179894a179223df23e9b9292135c080d48224051d0b921687a202e9a40415930f586af291518c2b3510a910d94830171228292e9790100506c384918a2ff20806e6e266a870328a2de08b87d0b4278ed81aa682a489b68631c61805a4908a1170201536e1f785c9db62d41d297153c0a094a72882dca240d2c01061013841b917098a7523a0d77003cc863b73b3d718b41af02900982a9e70368836658224091b6fca0489172f60384c0c4c0bf78899121bce9af62925d034ed899f944d9964218320188611da6e0cda08f0133bd82e8c13510b43a6a8e2043d53d80228668bd02305e670c618636d638cf10c0fea8ae15e8c31c6f87a0d17638c6130c6186b1bb813b04c1002214928c1104a70c4932658bcb8c271efbd77c69b30b1ed12bc3c84251203105ce17d5310e9d36d86fa60b7d65ace0877ffc14e4bc39cbb5b6bad75dbc4765f228326b667acdd881c254e5840bfb8e27e9bbeba50629f302fef9379d459d4d2abed88f57ddf5b3f30bb38232875b8383bdc2dadaecf9ad31a21567726889ef2e9ec2b17397d7b7d4565dcd29777fa5271f51c63acab3fa536149245091c084bf0f516eecdd1340db6356e73df72340de70933b2304157b3102c668e440f0db08882236189e8412286191e2ebb55366582c514444e03d1e2f7294424e2e96d308f47d3a51422e7c53e3798571d753b17db61d6e43c1eafc77389e7e6da9b6b5b72ef8b5fad16e273efbda76b2a0da74f5d109aeca2c7e3b9acb9c13c1e7fd7a7f7da2ec576cfc81d42f47abced09e24992569fa2161738aaf386d581785e9b1e5bc53ef0ecfb23dadff0ca132922ee72afc8c9153dd9fe57e42382651bfae2f8665bd26bfd8a3ddb5021f4ee5aafb5f6aef4582758cbf7ed63d8cd26e42ebec952479cc563e453dc905c73ab9ad9a6baf8d7cf4254b352991b77e9f69983b81bc6dabda9f6dee0d4fa228753ebc8719932e22e9ee2f1150e5686e420a8b9d273ae105929b2c2043557a8a02efe2b54d0fd2dc1c659753f11dbc1144fcfdde79722e2ab51aa88b32c4f6a88e67f06d9b6ee6b533c2a10cf6cc3b3fd81f69014116b37582ac757f7533aa996af3c85e32b9abad2936d54209e2b3d3bce3a579e48e1ac4041cd4d66577a5239db53674a677b19d4c5579ea03274675fffad8c10ec4d66cd6c43b3106ade1b77f1f79c22b6cbf679ed7f376c70ca1166b8ef2b18182b8a0e6a92b4e00cb6d297cb004a3303dde110d1b5eff3197a98618619a80c54542fcd5c485feacbad1a93ed5a989bab6ddb7e559eee766ddbad888ed8c92c2677bdbf63d34aeaf4450bf1ec649dcc59b59b39ab747b51b089bcf73cee3df13b20767e8f823dc0ec89f4e9432eed16cb33080da05ee27bd1575df75df714a421fbaaab4252f43d5102bcf761731cf8f6a9aff4f9c3de5e240213e0e925c217d1ed33430d6afadc7f2575178ecb9cae6005b5f7b6fa3dea6fba07f515f73376fb9b37ecc3ce6153eff05d82bbbb3b7577cdba505f5d8d7b505ff9eabadd82bb1181ef517086eebdae3c77d89dedc4b2823bbe1d36feaffcc1fd7d518bd6e57bef67fcfb449dadcbe7e91fdce81f106aaf1ce9d3871db6f755f45a0efbdbd13d201c75fa0442f44f8b347def43db79ba8215cc0f9632d4e76a57f6a8cf8136e4edfd8ce5de39ae870076fd73874d1f972709c4872f1211a5b5deda43ddfef6b507026ecde6fb59ff38f5a88f5ff3b0e90d5420c8d67406f003c11beb0ce0dfc068639d81fa40c0cdc376c6196798b135f725dcfbb8fe7d4fe479d5a9d370dfbabb6fec4ef8e0fb80a279a8248c58ac82182aa21100002000d315002020100e884422b150948581acca0714000e7baa466856a04793208871144529848821861043080102222433a455002becd5f581ebddff802f5bd3ba34888a31b9f201ca0645edc5b9503f2b9d5f926098fe833ed60c779c96110b09f18d817c996ce79d1518e6b2323223dcb5bcf01707c3ffeb4cb1e9ffe1e775de5ce0c8cf3eb095987d2b67192b825f9fcca412fd44af8948db352283024eb64890a9fc3d98e0dd0fcb1a553d1c997d48fb0fc7354f3b13fa00cb12852a2da248a3149b066432e7688de91a774991403e2471271b64f0cc8d1f06f037cd8221284b97a17d41a98042cb9d4ac6128da061f344f48565a01ec14a5f26214af0b46c132c8854688c2766763616ab8c3d581b2b356a07fe62a2cc578811d06065fcb8d6cc60086758086a44f50c3877a646068ff3fec76bba0257a335f6f75ffe4aa9087a33289976640d27cce6aff0925fad4377f9000a4026c6f233eedd39ca153a1365f3f3261ca4f8dad546189c4ab5cd289b1ff5ee87630dde138e17f2669402c0ff8e13d38352aa91c07776406b68fed0ff2e9362d6a400be2e9f644838874c0f2ae30f6b1defd2e18c8163404d991f21dfdd5ee2eecbf03760377cf238be417954cfb500089492f8eed82003665291b379b741c68fc5fa962c1a2449c4dedb9d91571a7a3d1ffdde0f612f62d45b2e45b20d53713c7dfcdd3bca353e19a9884146d045f9f319a70677082ede8fc67b7c0d1dc908f9e4e043e231f3fdfa62a31109dfb23efb61d96c8d0905c0ac2d5b3ebfdb8afeed9eb60054e93a542665deb13591c51bf51fa5f53c24b35b6342c61ef175772b6f5b8bab708388bea27afe137aac0c6bad3e5ed82736310cef594b7c5b21667410a896b5b6951363a649563286b53413a8b54608929230ad78577ce0129499ffcddd3eb02440a9e5d0b647307cc172a8987290cd3cb89c190a6f6301d11fb28028baa36b19f0f5ade552da1d10f79ba61a25ad7516f64626140a41625731d2d69ce2c79f3594d597f72c6a20dfa9bf2874d690c0c319d71fc1c17b679ff2c6e8453ce7e7148708179ad1b91ae7b2061b59ac526b3034c7e4de0c3848c4ff091d18319ca6176f5ba0d5ed848942aa324bc16395ef494b97b660c8ecd59a4d5e596dc1453481663241554b26e5e2217f682a41f2043470a95c68729d956fe689597050cf63c6454d9ef9e99849850709f9c951daefc1b8cedf961936cbe8707c2d62fdd050995e8887185bb5592e9d2682593240204f0ead3dcfd83eec481cdda51f07b3fa1346ac5511d82b621c231528cc975a8567ea331d81a40442804e21a3240f7340391af56083921cf9d0c03364fd81d5598a24075473d39f2188d809a450d02cb40d6b3aed86cd008f9f8ceb340d6e83a9ad515d005d93f859bc07355f8c9703e4dcb9ea78d69ff939f672a0562e421a8a2e9964ba0db95d7f070688db298b4bc5dcf8e580412550885b147553ab44f8d51e5338d067ad3fe9240c42942fa6b4dbed8d39e66d18ed73e2f08192e955975b5a0c3d8e357b3bac27af9e4dd4d5c3a1b7d46c1d0491f0a83895d3b81efc455224ecc331e0afaa9b488c2a6c1e63cb6ac7acfd57917dd0a91ff774c2c08e2cd3aaf0bcf48abc571b7addd09e3ce7ac8057686cd5c70df610dca1b5f49d782b19f920a6e4e540c53cfe5d18f38808d0b23ebea4ca52a3037f30308cc60c0f2c58527a621d4398d6254b2321b897854bce2aa6ddfd7c40ce778504f11114c5561e751806dcb0908ca09efe5e02f391429a3880d9e8b26ae7d3ec9c2acc99fd372ceb008a1bf45026974718f634ebe794c04962b188171f65f2fec7d8fa4bc9d8f29303f37a5819137e9b37eedfe6c48dcbbd1d089e9391c2216de68938993df3d810e74d1da301a2b0d49613eca31941b0576e2add6ee8cb9ff269e8e6a90042ec86d16096424271a45c4eff5e482a30491541c9a76dd0ddc740c3816c06b602bac02003254a170dbddb1ef7d27054bcc004d5bdbf7fdffe52277280ae0b76c7be6c7be8b63ae19ecbbcd564bf1b8d025a0e6e05033bda3ec2c5f968dc757a9a42b1cd3b90be5189ec2e6b4646c418032b26c0c37b8b4b3ff76d145fdf6ea53c295e6375a0c8e8e5c57dbbfa6c15c6ff6e258df55b15bf01d8a046f4625e69851d5a18b398ef100808da0c9131e30702d6f8b1d8c4111ef3bc529ecbe418eaab15c5865ffd3beffdf83e8cc3222c90caf7a3f10d08ad441c11e2f2c558527709b130c18a933dabdf72c5114d2ac608f7703f628cc2cdee959e208c05072d2c2f04b498f3a4804910b765d6406e2f10ed2268e7e765be99be328d41d6a5c511aa9e384ed1b6fa4bbc466c4f58407d8cbe0d84fadea69ce3874e72c9ecd4097bf11701b204d744e6d8ca2aba80f1ce228b4a98ead4b347438a32616164a6881a80c9884fa13c8a186e329074a7ad2691ff5371de8bf2d6cf3fe1b27385193ba5bf86f3df4bda4ee3e82425bbbcfb3f94482c2c50479f14ac3a1a05d8eb84f5da7f221839669d808526684f9bce50d7a4e8da2df408cf5b2eb80bb0790a2852e1df59d328f69da8fd909cddafb4758538a5c16ab5b2e6c1fe67be008d1b97ed78adbb78b9fed7b7fdf6e8bf0669adc4cdd1ec05c20e282c22bc761d98af7ca005454dc1e5d33ab870083f127f75b39f5b5d96f1516c1acf1a3dec8cd3ed055e7b7e3e7636c4526d341a5c9c799b0e443f344c18661dae2cbef91283b7869665d135b8fcbf245224fb45a1394ce9e5594cc79bab2b2abf5e42ec8db9da51f50085865224707c4558753849ede0f585fff05c47a478c66ec366ef363b16103e58b92630947095aab1575fd9eb4639fa6498c04e64c373f9687ff88cdd10a5d1f8781b1c79592bc10eb886c18589b4b54c291806c0c4d11269f92d035ba17aacd0ecbed3fa907da798d41e88cf6c517dc9aaeb3daf2a4823a48a663c79660467ffabd5c70ce6506df4419f43a5f7211dd7889d71245a271517fde7e54a41a6bb856c76c6679da98c84c8aec38b8ffd46a5b5338246eb351dd73971f166db968f5588ae4e0da8da672d5b366258b016ce3fad8f076eb9d516daf72cd6127402b62ffaa09e8dc5495bec2b71589f85be739abd5e414f6d1f37f43e6ee4fde4f32beec0b3b5a994e0a4a34ab49221474fc4bc4498d1e01d3087cc4516ba59e0221de30692882a802b1df382243cb4746d77291f75fa85614443639b450a8dd788c088fc1ec21369a8da3a8542f17c5a05633a8fa3c01c172cb502177fc8aa2833ac3178e678a5124ee26619f90dcf258484a42a3e12edc95c1ec9f858f59e217d4d321778e1d6a59f3e62901fe22684165f27d8f6558a4207666b8010a11094d1cc86643d2b65d88d6d95456f36af20e7f232cbed6f4e86ab310933a4d898eef64bd867319a733342b3542e699e14191bc56f14908e8fdc94208abae5337dbee1c179c6ed161b8a3b0ddb522a3503414f7b586424eae8a888930313d924f5e4b290edc466913c19c5bdf6c2f5aa263be3ccff009dcafff881c6ff4039371e3ecfbc7884c2d3463e8974275fa9c11b668af81ccd95083782170ebb2a33b916090caa08628cf3581c03ee6a1c4e6c38ee938a50292f25eb44309638336d1372903fd405ff902908b9dda60bc1a483ae12829e9e7291eb2688934ea1cc5223812035b8c5ad02ebe723859db2816d4f63def40c25963ac33264115a4fe85531079c054fb068df80a4f92cbd66695f5068e6ac4eb06a27986f3aab2758b413c8349dadd72ccbbe09993c9f6b806a642d46c656e43119acc66869f16105f94fb923ab4ed8382fcee8c0ed088ec22456305b0ebcc1ca794c2d8cdd80e51d590910beb543bfaad61c0b553a28882cd018c17bec7760c7c0176f01ecfa80a6e685c5ffbec67b81a8fb1d01377ea6bde5c0491b9cee94468be0d51eae7e4bd3b280a71d38f13bfdad829b36b8dd2d9db55842a293ef00dcfa4a164deeec9915cc32ac8c066abd3c55cb624d4b1d78c734ae77786dee654382062c4869281374ea10e9152832464ac30dbaa0025f744fe1df7a85732c2fd0b5839519b793d15c03d226e505ee680b2f9d394070ccead1a405bce47313675dc847c7c1fdeb87d319fd03026f0f26c5c308962ba1cc63493c23755061fa88c145c83043388c19282cc256761070018d47578e765e994a7f74447f1134188c71a8713a82579bbc619c53af624d8620d223fbc6d4e69b85b11f2aaca2f55549de243a42c429d58c2950c9404c9e888636e5c84e22a612725e11a9a02284805f4cfef70ba44f15cba2ec8f2b7a85a04cee25437c6e1fff7388a653467d77603558202e59dd5d0f621fba49d0e1de410518249478c93e013d52f5e726e77c6fec73aa2ab1a0691a938db44a69bf77d4341fa924d797228adde6768a22d92249453b0f784763aef58f7336c1fd25d97efbbfc50eb7cf321869acf2566484a31c82a2249557aac50f23e6d8bf8d29287ca0bd39a59161805da40f349fd75862c3935d00c61a8677c65a649ad3c21f99e55fab3fdeaa99db06d4990a462f433a78c3743be1e777ed81a5f5967546157be5f650e0fce49d969b61e0daad332e86542c3720086a915235d14816e6de7496d3dee2acf502230762d4b10b38cc0ff188653d30435284195ac1555946505a06588d70f56200d4480dd41b73037460707e6956c3b49b102df8ca2cfec15efbb48edf4688b87cf9e764040f68ae17beae6d7a6417f42dd1e1a899605969088931941f118d5e194b2bc6b5c481b614d566ae9bb99f93af9df6d573f34f6628aa89bb6dffc528c3a8605ca1307f6fb135274294f25bf48816a1c507d48c5b4478e066816aaea978144006e341801f2a99564bfbe5c89daac2b339a99f4db62a219d271016b98d80a272d8235932f573015704bd1793c34f02e4654e4269335fc8e8ef48e49a463c45778ba4e491297f451305396aac44bc7d89aef95fe6b58c5c30f0f6aef64c15850f693da7c8498676d5a5179a8c443b8c2f861ecc5435c06fa451cd6b9dab3f4d698b0da87b6123fa2015b81c3032d046b074743e205daa9841da159c58f584459d6fb0e224cfaef4ca5a84a2e32aa6be7bb335e77db8a263219e0ff5fd2757d1902d577b1cd4c5204e3d8606e4fda0a6c44192f4d2b23e8d8a33e7621af4489d103c0ff5e6115962a5bde9fa03a0736f72738ec501f18c00729d0f561df1b37406565380166364e0e706607c94c05e885b5a0da1e7abc15b5d34e0ae57b69fa16ecfe86cb6470e2abfcbc1fb4813d6444aeb73194d7f731d7bc80a2c86e89ca3f46edfd68648f60164c25757fa5458005415ba5f7064f16af98cc0b5c857b6ac1de74887233b0e6e0028ddb78b1aca8828c9b897a0c286c2a4544c8e74fc51506a7b1d204997dd9c90be1804895a1e7e39efff59bf2a970c824751ced2e507624ee6bdef668d761c152693cfc10df7603a0ac533e4b7f24fdf395e24c250fcc6e520932a9a9902e742fb1493a3e71cf802ff67f39f1db4885524f3d73818c9150da205c5a97f1d7498cc768c0bc2f59221231a1e3b325b26b0b0d325f59f3a6256cd747e3c50ff8d41b66e45a1363174c2a956dd616d6298807c2500664f8f99aa9e6c76b0d028e9445e450884c30114ef54d5e67914ca69f57ee8426f2fc6383346c4d9549546dc7e43b8ad73654628560091cd33bda87286328e876b91442d3b43cafcc86fb6868c516a95fa78a26ba25713483f55d84ffaa15b1fef208c140acd44607eceb966f59591e938e1eed5694fb219260c37190ac80b2d456491f0328ee667ac07ea0aa158c40ca640484a05bb46c27491f0b53d7be25493478da16698f3afa50dcb304f3d160bada0d6b66978baaebdcdd2c848978d1b4609e0da261f59500b028a242ec42dfd60a32572382fa3738e0e0692416abce41c62bf0ee043db84b7f73041a79e6e3fa976f48cace386b7fc5b61aab09fb98673b79e84fa800f2e815f930a40a34a9a83702bdbd2c57fc549bb62809d47c61ae0f6c26dd3a0079c3db76c46136e5516d4459c73f46104a2c6344570bd0e17c76a4bcd65b1120bd65f94130f032c1489663eb6ce6f36d9a61bf09051b933d691092338b1c1ca8603d89831455875947ec8e9e91fa05ab3cb5dbd11e0aff7c9e28cd3515fbd6a9c779d8888da8bccb55b5cbf7d6cc5b0319542e8a83ca1310ea32b8077ece252235b76b2604363e179b851ceb4e5bca51eaec8231ce9f8b38949f71890e8a3fbd700d1f2800215dd578bb8b1447d36b19f18279ac19baeedd9b4e769e52c59543b9f6f1c5d0f486e7541b2ad4b354021e2c933593caf409ba6fbd9fff0c2749fc3d6fdf3d3c7d3017c1304ca607c9c3d9f37e6b229e79b4d04e57e8787022dfe2f9b49da446c6e7253709c241d83fc9746032b644eda607303ac5f49dfbab3050e193ea34c3369fb7fb2388dae68d6a42d0be297158be3622e8a81a5771e6d2a0414bb27a96d17324e8c6147b46ad12e6bd456848c6e5c1718446daf572ff49f8e2e0e04bf6bdbbd822551c311434b0af06b2cdb429166b3615bc8207864195f0b89f43acd72eec85308437f44c351706b1a519ae0f9c98ddaebd07e83374cb21e9509c612cbc9b619b0b9797576763fcb4b10e6494b4a3af2f2c3093f37af404458eaa0d914dd42d31a350db90b04f75f7dd9a48556af7ffddd1da6915a5b6467d3b76dab0163f0dbcd46346aa78a61915ef00db1882e1f465df2f0e606fc8c50b8443fc4aa25c9818ef6ab40fe17a621cb6a3c0a8e0e6387a91f82b547839ebcf2550a90b87f6f73452cc42fb9c65d64aa4ad6bc596ac956623d62e7c48a83830ccf9f9fdeef30c2e2d4b218c51fc073ce2c98a3f06dba36ba12325a610ba519e8841ae05ae0d5674e51cf4658dccb066a07c3f0071c68ba58084dc6b254d3b135f836ba5f05d028f86853265f16a4d25beb10810085eec2376b4c0ba9a3ffb7030af1627cff891ca798ea6a5b8bad1574db82417746bde192df49e6c905051fdec4e4f29752708490a7dc4520980bb20c566ee8f35d76ddd3ce82c56364e4f8b8cedf2307938728c01e3a80d4b4dfbe7f0a0228a387ce8d08e781b8cef6b2f5ed29c54a11985f2df320ecef8af3f773528fc63c76ec6b62f74eb7728c3eeb1b857c9974066666f64e3ed600c614bc40d17af44644c00b7c07b9df40542a87895ad4d7240951e0abbc7b32618f3e0eb4c2fcc12f0b0b4247dc062729b69e60f1d650591bb039d387d16a0ce0c6ca2e29f7ce9a3e065683e2e12fa02cb4d6cf876c17c5dabeadf2947e6af5cf99f64a4aa028a696acfa9ceb580b4065f8803bb9f667cc8d96e5f19ac4bc64b9ebee7048c6d70c570ce5c47e7eac56f3800f7d1b2480ea5f7c6d5e0529cc1ac89eea8b373c4c23d8ade1a1f19ca65fd7c993633169f228096fa5dff417d5094b47f61b637ca934de4aa6310ef2cee526f40554191805d3f818fae2fbde02cfe63a908348a2ea2b1f5f1b99272e57e2403f45d082b5031a0b7d81ad48f3841d46599d6fb13483c6b32a9bccdd31fd67a796b4c698d5fc17593c119dba388c497a116571771698a01edb2acd9a9349e3a611487b86552479119bf1267444ba2696f043d298887250cc529923002645593b8ecf63121e0a3792945ede39ff7e4602723d8afdca6918dab0210fd531ea00d0290e0788c6f3830e40ce56a9a247e9e88d30389408b78c5f22bcb95dce6a6bd230ac47da061e6ebfc5a7a0fcf6a172348f62ea2db90610acb18c6a3c1e05c07448d9d92b33b199314d8fd763bccb4473c7149d051c549306420b27adfd63c3508919f95ff5f7a54de11d3dc3a0b0268b619720d79373e662969651163e159b65d54c89f09ce9c80033bd3cf4cc3034fefe61db0a5591936ee7019cc79744a3f1eb173965e844b8f8a20f9d9828061b314e935c8df54f703caaba9837f03465d0507c94bb9cadcf2cee2675b1f5041507cda7bd727656127f38e0147db389f385327fd061731407f40fe73c436181fdfdcd7ad739ed8adabbf534813739d72d9e06d80378ef93eef18b913e1a6b1b1ce028cdd4df27dc5a6591c8772a03afc80179d1dcdb3fe5a11196cb826f3b88dc0c0d74b72761addbac5bf780014e0c8fa01a660d94b945c2a72cb8ecececde77a1e124146f881ed7b635dc6e50c51c24fc270d62a06cd8fcacbab85953001ee4ca89ed83ba251c8289769bedb95e29c04be28395e2bd2b9854c309473ce02e77c873cfc3838e1f620902071592e445342ffccb65cd5012b1390ded530dc461da1918c0531acd47bdd8506e6bdb6e06fea8eba5d8431e552d419b130afa0f7cff2ac52343a7218b7870284405189a4e5b900d90571dfe7244d2646b2c0c6d9500e11efe8f570fc1d4bb40a6a8bcef1e4e03bacf12fc7969c3a863c7efaa143d599a39eb58b7fbb15862781187d30d90405979497b7ffa0e3359cb09fe9046c72a40681b0d0a5c4ebee1a13309592660ca525a018f0537dd155c2a20cb64ad56a4da9f494e58328704399c4f602bdcc5a262bdae6156914cf72c4ae43d37753587efa547ba23ae626e9d211ccb0b1619bb3f5ddb61ec11175f7cacd1153173054d81ff8b8ea5c27e07d17a0e013b11f0f2ce92e8c8962851e7a252e22944a37e2e8b98790a8e31026dfbb9e77cd1aa903d29cb9ec96a39d233ab84256c1b87f92c1b269bf5ce76d09acb83518e1cbde7c78e9d136def6b4688aeb663345e72c0e55e24228ce3d178b15c8ee2de3909f48b1c57ae348b8bd06c4a3f9c67888877119a58a47e7e5a0fdf7ebc14506f78f213560713826a2b33e3412f7981ce9d485ba10ff4c5693bf1b7f5487b4e1ba6c06c35002565950c65f688e20384b66fdca3959257b4dd6aab75ad44fb3620484609e637919640da2b14889fda3ee85afbad1f08f81dbe3a45cc6944d111bf16e4e29be6b7074f5ae7199f342526471a7ce7c48ef829f0a35201cb2823bb01248b3831e6989ff35cfb90d78ee22436beada8a223a2b4c9e342057224a37307afc7b968913537030e0d861a6212df85c560cdb38d2a2e8748151b6cedf77fd9aac30f7cffbac3569e4136070259e85cdfe53445cee5120faba33b19a384bd8da5202f060de1d5c6c7b968b45ad3c83aa4c29460c95ef8a253f643ba05696e644ec17963783f187e00715d4a0102c848ac8424b83148ff928f29259e3675bb9b1773d3b2da92416d0223b4e31f8b4936fad0e2b56dc85644a5cf193ec1203ee4168c00e1b17a46e3b6a4f050913db078224879058c07e890cd18e91464174d89bf661ab2743d85770bcd3e4a7182f68e854476e0331019de75d41d78653df012e744c1e7cbe14a0fc28594f90d263a0d6f4b4ee65460b81c48cbef46588eb51f0eaedfb0b84803a4252639a4ed9245c6010d7d677f7a9af1ea98587977224adf4ba7e2426bf0831e6a03d336baa26f8a7921c7b6acc8106c88558c76d03c0d4a46dc78cf720af30ca7750844069a272c9b0b7392148c3987a6d93d29c028e9af0945dac5fbc2f81db25e728f5f0e58f36d038fc13a0894dea1cd4268f43306df35498423658d7de20bb0f08ec7f912893e00c6f9e8dd8bd23771087d72824a4af01f92203a02cd0ef6f8980698a8a5549644465a4603c0d1447e6f92c8be3bea6e0f7ed798ea11463ac025421da42e181b97b4906e75b77046e63351ec2dd0d56009eec00f4b16701970263eb850961d81d43f95a811a700044ab3bc83b4c1415089c610edd89396b7283e10c6933a9795973f84651885a03f23efd41042f163358d2b10fb0121860905b273212e089fc42648a41f1bf3c5d6755cb10fca8fd10f1df3c156fcf823c28a92fe93512f20424359c1704f719dff90c8f7a7a71b4f3bba782b4d9a318046f6d27afdfdab58fe3d5199980572a78545906177853586ce2928f238c20adc3a5c30d930b6a121b8171785ca2f257951fa06d98ba194accf513e5a0a55c4650cca7915ab380b5fcdbe1440293e18c52a754485026ae35da627f251db092a95e55550c57e301f51a2c21654b593c6490006dac891a14852c1af417eec08244fa58282a7223e9136df82923d1048427939ea9237c374044ddcebf80ce408e6228565c3f4f7aab2a01cb5fd658911056bb8ddfd77c06650a6ae711b14b89dc0afb5eb6cda82797188d9d72df21615372b17c24586f8b5e90cca8a59d8ac65c4719a47f401491ed3ca5e7f8d7460b18fac87c6f2c2775c4268c9ea30391174c2c26c3fd4068576d46beb3f42172a2d6ac9c159f3914edddc85a39b5003fa1e7135da6a736f0882a7c3ebaea7399b52b755a3ede8695bacb8fb272082aba0b469fa90dbb9201e7dbb0154b148365149741e23ad5e838a0911aef2fd61d85a6fb7282049344a0cdd9df17e7b2d3539c64db91388c81db3e8725aa2eb7afff90645fccb351aa61c3809c26b8d344276f61f4a82e2d9ff1b6c716fc4c63ce1beb2178e34591c0eda471dd20eca070b882e194327ca06658cd738d013c4508de339b200c09897778bbccea0e07dfdd549bb2321ab395f40001d93846f77c2663745c9acfe5c0c831c234f7fa006338171367da64f80eb84535ec45953b9b8a5a36fb8a724c1a9c70a58ad5d52156eec8c98090689971f4ee8abf25d8dc26c3b4245fd2eec2809281e157cced7c8fb4049ae232a62b9ea068424683afb2f5b5f9d8ebeb8c1dfb0a81e460f6b6051c205a204c0a5a574437ecaca105d0904823beaf867af7802b6821c5dacd4653143499c0827bad222338c235dc0dc711b7edb714349f2e239a30bb3efab4a132f64982c1e4a8d9e65af6c2ae57d5ea6055bdf8af1c23707a30a598fff27a4e176d0e5888cc2c0529e4f08682c93fec9412e34a235826631c791793c00c758181d25b72850198b62429eb910e41ea880b794ac90017777d163f17dc72efbc5cbb870cd53334fe07cfd7383603eee1e0fca083834ad65bb337f648f7e622a419991d60bd7dd170d6edaa4cc57fd2122cb78912c5d0d8d5fdc4ab79aafb9619629bc648e52ae65d9168a67299d7096d5e02d218173562a02cea01d37f6e960b20147f00dcaea40de7f46105cbfb86ade30f008c825b149c7023cb865000795b49459b57a80ebe204ef49dd29d28bc468f3892a54399ec5ac0164b791f8728ea4a2ad14816208ab56e4c3922d5bdd1b305a40444e3d87e4d8c76b3a39cd366fadd421a390606da5143ab6c289879572954e0aae9afdda5c852216bc1eaad0b74047a4139f4aea97d051eab65f05b0d6d238b039df62b14b5160e9ceb4a80b5cef6b20317173827f159f28405c30aee1a78c218b25c707a60ac527568be31a15fe1f5f7f979254958b037a2e51314f2eb3a55ee47df63db507611d4edf01dc84a83d411525958519ae0cd7cea33d9b9779c0c5e3517cafd4377cf0e264ff5147ed71c2c15e147d41d8a9b8ed14523f22474747d8b43417cb2e17a7146234cffa06ae44d1d2621298b25c7f9a0310399601a6b56169de882bedaed5c6d1c4eaa2e6ddc80e1807a438cf7e6139a32ab0b1c383309ee9e90418fa7eab903cfde466021611be072e96eb45bc8ecab1a1dc5a5c0314094f444b6b2d32a5bc06bd2b6feaec939e42e177ae5d93bd405e84737818e00b72c684f3799d1814f55c86368c08b56bf2f58b66f4ad9cce6afd26b1db3d67d1682bc16fa074c4ad049a748e1df6064537112669a4c5492bf85b5fdcd1ffe0b0d04e8d9a8116f853a83f2b8a23b06406a226ae0e4362a9221096925ed223ab0a8ceb98710fa6d4a6284ccd15142dd173a1840c9fba1f15171c2f2faaa3a48200f262afd4c8805c8ac9465017e07bb2eab9f2cc40a34a2d0b817a503153100b188a61d7adf69a181400b08d816c16b417e189d0f8685265b071d49aad10d448a1e11bb94fb716d86e45746f9b1414ce7ee31b2abf28fd1233b3726028687372e2bb1f6e1aa4ad1d41f2aa7448af97d6316d13e699982b62ea81928c9dcdc313872fe3fb903d3d32b1cfdc39b354103f6c04d0a83357310db649558e9892363f7739621af44cb34f33f6c02b97c1855c246364348957c52b33e767efc11c2279963f8078114f93d8fd613ecc0ba6fbc117a73b11fb12bd6f8925c4859836da400e568c70d64ff461100f50c3f5de717b6b03b833555cd494477464b84f47eccac462fb848e822eb50e8d052831760bc6f46a37d0be4b813b82c4804dc12529b98c8fdfde5375916cc99d4cf3ca86ba3fee01c0ab31068aa89559d4df044a2527bdcee21f11f31d5ff84f814e09af117a185e6fff35a20e5caa09036afe7b51017b22825c89f9759c3a37e68cfd92a8deb7e4d721385e4d565d0948c89f1ad8579290876da031c2e37fc9c37b670b89e26414ee596fa814270cf762fc9690484b7cfe08d9884c84d6466714c3ce0e0be3e3b9761e6ad1bda16e7878b291a45f276284a72d12a550b9633b549c8e23ead81e526401bb10107511c7c9bd7a3a7a0c2636749ad2c71af4254f9b19532a0e3351549e2252a3f4fe469837640ab4a6c8e0e51ee3db9251e5a7fe64cb2a2776c7e15b74be70bba0b48a136649beb4e6729bf2773475bf2cc7052db7dd233b4e86f805946d2bd993b10014807b54f8f527b2571fa11931cd5eb02a6e4d49421b434969c0b723fba08758b39b9b0c60f2550372a71048be51b8e6d9d61f4ac89980c0acdcd497f3ec75c9683c4f4fca9ac3366b296a73fbf7d046ac9b4c12ef31ce5d3fc935135ffabbbd28bc06a00692f77aeee62bcce0a0f7dadf2c58f3164b0d49c6258818141725a1f8a68989c9417ea7a2263c0bb89fd53a204bbd1df244af2416e93bace73545f8866a7eb0161a5f13e6b33203515c45206ca0c37a8afd1dad27efe3c9464ed048a1a0bbab7868a2596e16b330b5471186d4bc0fbaca29426bc5c75c3ee7a2f5d5971e73c7ef3cd53bd8a80d2460196dc114f9325ff9e54284488209d33a4e73f6011fc851a4cf52328f42f4c7f1323448bb604fcab620d2ede630f2e3f2d28aa3edd8161cf745a138ec89ad8ec957b00580ada3996ae30e7671d5152c47318e35e8ea48e354ed61cd144d98d65d27b2b817b6cf0e5ba01720b0e48dc748cdd4fe20e8f27c912c29cb0c7c3987d728dc309a7d428af29feae49b5958670f4c05e40c75264b714ba80fd7908cac65955726a06a72ab3b7e482267ab3a484058bec3c28efb21c8218cb91034cbf8a33951290298729bdc9a9c5eb7ff2021735eecf7e945dc8e7e56353ec70076c1c518385e652c98676034ed233c4c3cd2056273235fb1e85de10e1e5343ccc50bf9a954735342803f028f961c6c2c02fc6100496e814b8ec37a0f88a407211d94da4593a2ca5a073b4999ea32b5a5538aa90284e469cd589c37c2958a9a079f71813e98c5529418b5054208b03c411b2a46fd30ba1968e8c1c17c3d4bc1c707a3a9f8335e3bc367b031c0bca3888439f78d3d6078b7a30aaae15fa1ce7c6673276dcd16fc8c213ff3d7fb3fd41ba3616a5a75fd7dd71ae356d1c6af2d3d0e55d178d6d61439485e97736dd36549def9f29a8711273790e3b9f7383e1b184347113edbba374840d64975e68cad50b488d3e04d0cf688803a9f3e23a638889914c373899451d2859b8ab8c5c58189b51ec8be160f74c777ed0f77d5ec90208fbbdafec8e7a788eddc591ebbb6b053920ba92153155b0304f80246229325630397b2ef29dfa2ab5201b5107ea261823a96fa1dd33abb26e72e8944c502ccee445ca8e9130bbd5a90137782d5cead5d65440b7e56a4814e65f63c399f881fac7ef59e7905abebe0e24ee1cf5908d1c504d16baa390be1c65c5c60b3bdc5f68dae205a42fd1827fc84d9a5738a21ba912142e194b1884f3c7699239fa010fb0a654d496dd409ebddb1bf3990523d419559d7e8936a35e8fe0f1c9ecb813bd63b24aa3bf055161d4f76ffbf6af199277d3503954ea071434dfebabc3d569ac463a835926cb836e79301e886d363cb3803bc12069cf439ca27c9a9907a3cd167028c14d1929d22196762fba2c3eac2a7992947789cad498d610fd456131a40ea83d31640d34f6f1a2b8021cbabb61e113217a2ff59b3eb1792af9d79c14de86c72be1e06649b42f2f1583a5a28b250567f539341cf29fb547db4e0b0b3b3629634f61e4389c9ba8ad7e418c98d702c7f4514fab3501366a4403d9d2e210d4e54f4ed07c2ba6fb6e53a0e47a7c891d7442edd82db6a55ac4389c27206a514bb6727a346705e5c2fc5b227f139cd6865c26f1305d2de6077366f7b87311c96f1c4e2d6fa602877124cc5fb6de63dee5445343ec33b53cf14aa7361d49aabcd416f4563b7b34ac1c04f0420b444dff7f3cf27031eb8066a524e76805c6e2eeb59353d2598d9080f37da653b462c290d8d53b952be3796654e3cc621a3f54a85dd7579039ef68ad8af575808a4da8438739132e72f5a1944337f61c1106c56d4054df470539cb381b1741805c738850531c354b9c00690a1552058ee8aa3ecc32f7b72fb5c40f719de2fbc0bdc5a849aacb02707f2cf8d1bc5281a1348ae345b0f5a1d03fb7633665802e367b62a17665cd40b83a60ebc9a24a1d87cd6f0fec8f68e8b2296570bd6b300f75a2f0e866c5f677fe63de7ce289795f4277a2af993fc35952f9c889e9fb9d9ab13b86f98d235eae397ceaa7fcc10a0ff1428c06753e55af1b84191cc3e4595fa10586ff1ab757729757a94df9d19ec32f12a800fa58b2d72def15d1f0a2843dd69ac21623cced6f473f68152ec2ec7c9ee8de28d394f2999eaea948065129622acd474ccaf863862b98a7638f47b320c8b6ee0c1339d2a49a511b368bbac0568726964ee07f0aa5e2fd99bba49c627aefd96a80ce831fedc0015265a4d15a1b01a512c6e4015df019d498bd49cf1e24e1e56f31635edbbac541fc656652ee82f3f8b309c571d74b2910c3c6a5245702dbad4b7668c883cdf6e065ba6c150d80ec6c8309aad295073a6e3c810135bd0104a801af5286e0e0c132acaab2839688a77f5d2ce810cd2d17846e91171950b470c1f0482e4c4c00fbe17938cbc947f7ec409c8a6a64cb889dd4c43c964b49e2ce2ffaffb55fe847cc61a99d8ca8004b3fe8b8fe11e2c01cc25973f2918eec341f87511a222bd56d02a40c7719da995d913ec2ab44ee2389861f6f4d784c1bfa4c2c104feac9de906637dbd7e2c714a5d1092d1531ffec5a8b8f57d4d38e73c1b1ef7c0f5362254bc0c2b292567928bce1d72e604547eba9a6c42f59a12feb3721449391487647a1cd6a3a4f6eaa8708b773a9d0b00b136bdc009f86be17e8c2a29c78475a3091bccc468542d2e9eb6b31022e414a119eca13262bf2c14998552351448fc4e4bb7498a3fb10410d27b5b5c1a5c75463236b0a7a5605701932289a1ddf5ed5d94226e37e9b84b438bef464027803e2440a3967cd0a9fe12620dc06fb5cb2530dee7c555fc89a3475250f59f182e4a3915eca9abda68f2808c769cf74e86ba9294aa5c1383990db3c0086feb279da25bc7b9a23569f41d57e15cf9fb1df41e71fd8c5b0477089b53cdb280f9df43468f3e8b5ce30ced89ed2a4f8e807bb523be57b81a85eb89e43d9142f5f0a7035872289137410791d97142cee5d23b086def8da48e79d295909e4806a9c2b7116ed43216cfc5c6e735f1ea5109819dc0484350827f4f732000a2c21c9f0e422872227ea1679b5ebeec8d5a274bdb0e210261840cd06bd0a587565962e6fe4c6321b7971e1a156c8ddd637777072892d1a5bc2f489825cbaef2791a415b363b80c48653a1f27c80eaa14980caa524395f99f77d2a116deb9129edd5c2d25e812ac49d1ff8294b2bf8eb9066d94d46c234331e980247499b328e47d059ebc23baf9de569e3366f8bda59d55b2ed53e92f140d6300c6c3a24e3411025a5f31d0da1f3feec875f550c3f348dfab778e7b149c0e369023abf37fc07681f631fd705930ca289795def87506aafb9de10ed03c1b0189c4940e6f19dc245fe25d83ce964ebc2c9377e71561785e4d44d52abcfd0c111ea3accb8b484eb0d987f5b9b51120cf1ad7097bb3f88cb5f4c64f2131d16885235f619f6e472aa311511bda870b64b44c53f2e18ecc0caed043cc3ae0a360456facd1ff3bb4ae0a67d361875e3af0737067ce6cba47219d097f1291924675281e0edca5736d862b763d12aa23c9fd4be5bda09850bc601bfcfa11301ca774206e5c9240505843176bb67d57275e7a806bcce268b970da57d04ab4d4614d8aeceb53492a2d067eb50f988d9db2ba94e5c77b294f14915264a320fd7cd929c5aef8c8a4238df4ba2ba0f6cf0122244ae0911ed0190578db1682abbfa9d267979b536eb34fd0d224ef443c97090798073e0403d304482f9b24f5931cb2af1a29c20ba5cc192c6aabb62d58330e5dc8ac502e8350406399a13b1c79430b8427f0776011a0df97d15eee7a6acfd9d64a3a8ab85485f7755b167d5e502448f07a5efffd575995c6b58b8484cfa0c967f22bb3a6970b749f342bb2bf7a185f8099bd0c95140c628aae47e0892d8d5e2b0f47bd4a0112eaaf385035d5bc38617df8683e38c521c9ceb3701ec73384f170bc1471083804191b3ccda4c44f084079ae00d0dbf98ac3987e2b48a10a77445ed89b097e15b938b575cbe9ccc43a40062e9055c027659395ae9b31b51b24aecbf210e908db3347b45bfaf733dec0ca7a7d3dd29a60125d6383285e1d3a694fb484d8225c1e23a213b632d89fb25ba1eea2aabec7b6b54757e6c64e7b8c6b48ec4b3d3ab78b3a4c63ff9b56b418803e8c46e811b5c230b184403187b6807c49f490c1887e1b183be890cd7c3c489c36a3c2fd66f06f5d914a2d8870afc3f1e76357d92188771596e9d37b90d4df95ac42e352a07269d687768483a488f51be1dd8e59a5cf099a65d6e5afb1a8465c6032583d3cad239b535879bac55a687ab933ba94a84f5f5a72c6ca17037056a69025934c1d78983fa6b237c81d9e17305be34c0408892fa063805598d09c0940a74871887213ea676b98b94c03053f97760085fe49d7330c413132ba8f2a21e5f58e28f272302560b4c6281b1dabe53002d9e384caa85eefbc3f81db8cd4cf93baa5c3498748d230e3aaf9484914922f266750f7f22488c458ccc8b381a06c98923352413caa173a3598cc3d87bef71ec70bf65f68e56ac30610e67855bafaf952054238349f86cf5335f87c9db992d92970c5fe917ba5ff34395a176f4cb32815cde841b0acafc897dd79a2cd793cfd3d3c6d8cde90dddb7cef858ad758188495737e2f12a06d6137d9de32c78efc5be0778bd60b57a8b853d6abb0d668eb27bb7370195cf197b54df2fea9e427991991926f42c0a1fbc805022a6fe7c0df94628136544b368c81719f6c6fafbc245e1c41f9844f7c48ad095066aa9b9cdc4e9a41b72984894168625958d8dcf4b2501a822e6a493ab61fd347801010229dc488d0afe27074bd2691eac0bbe12a4f053478d6bb262185a7312ef3506a27be281d9ec4698cb030732bbdc10d4af6ba8b9a563049b9405ac3627b696f3ee9d0700dc2bb1008db29159ce423ca9060b1f831f9163b1e44eb3564721ff8c9fddd6db0a189f334400d115aaa49ef586fe4f4531e543723b007eb06273758408eaa3a6e9125ae7ecdac380944ddddaab2b5d1b474833e78a3d5cccb14a66934d5edc217d311980244fd7118e4270ddf166ea07f263dcc7f99b88c5d53bffcce86376eb51707ed8035cbaba48a6e71ce7a05baafc5982e65e2c1d35cd22bdeb0d4eb875fb0a02015ee4283822633db130a0f07284c0d90899e0d87142715864edc1d1855052c99667a1d470b0645b58933c3b9c8ed41ee4e7481dd64f60835d749d51b017b581f2a11b9309e80d81ba21300500ef60437f3176598952c99c45129ad39464d931989b4e6cee72561dbe924e94f78d48a295c7959783873689c76d92d74923485c71f5b35849b3f64006a2739ccae2e6bdd928d4a742fb34b79aa850396bddf5ae603fa1ebadcac59036aea717247518819d86be926607c360541c5ca9a4f1a930989dcadcb594fc50245a9c619b5b28f0235517f71cc5459dff617874503c01c9951048bfdb834386146397f0fc9b7383a8465473d7a97433d6695be63f92329d1a02ee06e46742e416522e0d21dc3edb0c805bf8692e2984e9b64bb029235821ae6293f844769eb76cbefe83f802fde8c269356fd17aad63a59a8fb3d6ed1f6c276e8836a41f6fc60eec2d17714cef5aa6fdb5b7c22a184f590cc23f9060e510ef0531bd0111a3c800b39943663653f73dcfc0b9cadf6496705b00bced240aea64db6464bddde1f077027e892068697f2205d34a5063120f932ed60c515e466605ebd90bc42a9242114de81b677b609d25373e7891b9e11ff67cf32ba5e1d21262fbcf5f21ece8a4a481a2ef759d4bcd150845aeee6cd53582ef9c029b3d4c7c952138108ab5acf03cf4aa91c0a150bf06dde6fbc29f1e9c0481c529c47eaf92ec07f027466ee33850d007d28bce1dd2bc357201ce280134865eb9530b7b8dd0e90abae50e721fa2ffe606aa12c690eaf1152095bbe00c9a290e39a75bf22d48bbbae24c34f8585b7ad8193fe853dd9203bc3900134343ef2f47b8318b290c13363ea17a9709fc20fcd9330167b9898745c46228812a1805d0c4bbd32dc07fc7dcdea3f07c77560a4ed38f7b9dfd7480a4e42f9bbb70cd0c3fb7bcda48bc6fed9491a006225d98698427d303a5fa4af14ee1d3d27d67d9501ddaa94a339f70e3c579676a88f45b928082f5193cbcb4b61a86d9305a6f6d68b270983a974ce85716ec80e4bf6b7058661db97fa48e19f138c0075bf49da1df122c1873800f1f385430882e96b86466f6fcf654b8ec94e0c4693ad85012c7ce5d6bd4ec327af14a1a2ac2d81e9dd602f4d452891986044d4fbdfd88582f8f434a19b20726b666594ab64cf2857b75fc4e5584123ef770af6efeeafdf9f0e48992e73014ca8a401f8b88fe2e4bb50ae47d6ff4a7d5313f980225103a2d09bd3e454fb9c405e9c6a080b852d02b56f88281f3a05e3c0681ed3629369f921567f69aa969619720324ea2e98c85179569a242a45f3ec2e4bd8e1100cafc28fa98052ed907811b842b566dc649147e39d0980c836bf0615e82aff5ec87b92a3011a0471446e95b4e793e34bcfc46b0533c983b30268a38480df59b8b041137f26a310330343bb9fc059c341c7df732ad02d075f5dd6e9c03c8f8e4e04f6c93e3407b75f51867c1474eb9c285ace03af9212c4591e4547f5d45cdf88dccc2927fda33589144b27122896fd01f92eb8f17c921fa0c9c9fed4b2424082503e0918b35cef6f7111e76e9617859654d5332a166de32784936fdb3abde04f7c20e97921aac78b5502801468b0030145b6479e186607090b9b7d8fc059fe800195ce1a06e351c4666be85fb098941ed2e1ade64d31e383f1198efdb93df51ef4a8004e3e855be17b4e3982d7b969244c72201b1f4a425afe0135b16e504e7585a810eb4176dcb1996b563a93c1fedcbdd233ac361c14e9169f6bb739b0e6758a83568085377fec1b02f5b1828335f416b955702571318f9309d41bfcde9cd25e91b5bd28c1313bbaed6134dac5db858016eb21038e48383578bf28a02f477965138ef78138b9a5dd20f8d131c7d51b8a342e49ac80d6aa564117ce56a693bbb60d16a5590ad8f0e44fe3b92a4951994ac0971792c910feaf5e0b8c042e2ea034e66d377b269fd858d8e531b3d49fbf32fe724a5b20d51c0c815e00658b74de86716a323f72e8a392f1d80443f3096c0631420ebfb18c9241e76d491b31f1a7f5eaed170b2c85c947102f641e2f76727a5feca4329ed14a6b98b2c1ca3a37cf4f49f4e53a01174d5dc712a22dc0e25385cfe235ba1c848705ccfe403fcebbacee0374b169c31025b9042052651b77980500e0597c4b0cb742f34fd758b7252f214873eb0f453045603ae6cfebf9c39db2704ea52011587684f1d6577105c81e1e4c2b1f4c4d5093261625014423dbc87de6193f2e5ec2f733b4e85604ea39bf4ad0610c940b0646860c2fda2b0841ca1bd69e2decc454709e0c994ce18fb130cb70ca2c556461e931906878a32729d0b17acb9b9fde216be65ff03d71d5b1e5862c623de6dcec2dff8757a0c072324923d9fcc942f92f3a735b228faab1ad6fe76d3e86986237717fabf7ff18a3c9f1d2070f5ccc71fda7ab3fd43bf8d8f9a6c6fb3c0efbf704696efb4be642d02cba541f56e0be30345c9e8cfe3ea1470c81b6b2065abd5351f2480d82d339d7018a4c1bc10b7ed5d8f96cf52572b7fe05ae553353dd5d3e6fa05789acb9f4db104eec39a139c65fe9b39b7885ba00317576b353bdd97c66cadc06e1c38bf10e94c788f3f9583ff0b267161f0bb2360d072569f00df99253fbd71cb124668a127303ddf4418ebfa8e921a8b65e8527ada93cc5730645e30d465e934882a989344bf8a3f63220db6dcb39e4521ec8123f4e6409182913dccbeb174a767760439016081cb19e20ba1d4ab902a0824b34497af8a1705dbc2d87621123bfec1ac230e2ebc999f0fbe3b471b3006f2097bb23207594d795b2d2823dfe62619c20eaa9db53a4a32f1f8a56dff83f78bad787c3031bc802901762d76af199fd1be4a89fe5a241c650a5b6281fc33f9bc058621a39cf0598f76d0092b2e56b7f43c73aa9c2d93efb224bc6a9045359c3debee013ff16fd1e6665619e5decbb57f15eade31e12654f4c8e0947346311e893fbbb7b2a538ce2d5719b9cd15ceb7dc1e2373d746657935b8ed20c1d34cdf34ece3c13e9db324bac0d68ea1cb7da2cc535d5843dca267f3a97d1e6925cafd6ff5e80247f915d133baba6c6c424ac50919de22a22602bd469cebc2cf65a966175b98f168734c361095123183d75511e57ef7278c65db1e5377edcbcf3cfa00e6b272bf3ba2687104590bf106e346438fa1c8592cb6adf20619bff7e0561cb2b6ed71efa1c764fa6b40889d84ad851e13a563124be7e51db7634c60587f3f712813258d70d4883e2b094b38ca431d2f4a3d06f2b902ab97e4cb6a94963dfb797f97683b6d33523f80288a6f70fe0bcd736376e355cd7923bb842522792c4b9fc0d23d2cbb7509bbb4ec5c8e55edacab5c969a1de5dc7b16c1c50e304b3b291ea849a8364862f575dccc58d67431cdd32d7756a21f60ed7794202f5367e21a13b43a3dc99c5a5972e440683c44cbdb13ba042645d4030f483cacc31ad174bcba663d3def25ca456829a6b6bcf5b60e0fe0cd14fced55048b1660f000d73484ebc9e31227fe7407770d6c1dd7def5a23b1da764e46784f8709b9e48e77404b84f3f4a3e4f2424eac5bac86981779b94bcfd7dd499c6e720abd05e371d06ef425716e56ec41539997674dd83642d658a2cd5f89868debe0f51df218f9e9db7d0c83e6d0f9ddbdb739ff1ca3e0f60c5fb4057e719acaf0ea485d7b2c3c43a7b0b4807eb6b6fc51101d6e75ba71d9932603a6905324e35b7799e77cb99bbdf5cc3ffe0c8aced1fb0eb8ba38828d1560f05e5690986fe1a2bdc0a9085db47c815e499b5caaf7137f240a76cacc654ff7a7aa75017da8a14401cb61c5e61e6aba4743f099f322b1be76249a925e2f2ac9832aedce61f6a226158f282cbbe3258c6eecb45d1caee4f91394299aaa3d8dc3dc02f0c5e0c7b3f78b58b7f553e9e405c83375054367c1f1b1308a2a0ca5940f912168d51c47e9cfbae09fb73974a9bb7738fa5048684e00008bdc507310551779c171e20db1f3ef824160385944dd8b7023b1a01bbbfed8f8b1c68862bc2f2f627d613c984ed4a1d8efbcc50ae740b4fedd1e3a77c9576cb97eae5303b82767de1cd4b236f0f5e22b966e1c6f119d28380abfee26e9de44e7d412187a4a08850fb65b1cbaf35eedd32657844e6a7c38ce28da35dc982ae45616695a4186378e0609732936b91c0a09a40ec28af39ec2219e49a206054298f318e0747762103ba1685195509628de0651c02ec86192ed631ee2389a8821f85d54c30222c73725312cb9ba40709d19b8a1e78af22ac1228e8925524d7975ff571fe19a2be0a5ab9e26b0adbf6f0404bf0be5b029285cdd7db4c8d4000010aceeeb3b4e346f697622b49454c0d13888bf9a389211279af6b209289b30d7d05471261ba0c774c6c507028952c75e4f8a4cce2159623e92b928f2af984bea44f14dddfac6ecd4ecd6936dad7238cfda519a538dc0e584cd800217298ed5955ddd27e854546d415ce7b1eb2323efeeaa64268d304cac1b9c77ea46026492c506979e09a6ce7d62380331224e519dbc6f831fc521fdd3875c8c15bf6fd87ca9b4c71bdad2ab932f4ccaaa231a0eda8526ae89f163bd6dd6e7ac613519784e33a187df618e3e2e822f92093e40678c33822b70eb8c21edd0819f58d38e931e8a67dc5371a3e6aad9aaf341ad188ec11f1be1dcd67070e780ff64ccca134f94d6743b7a08c3133ac60fce4b712623a64839f0ba91a32f25eba612973e76b1dd7023d7a3fa9940cd3fde80daa028c6d95983bc89c37cd055c54b5759a8d5ed4cd8f36da31640a95f5ac5c598f5f5d0f67a929bcbb112a7d851e9d22c836308f53bd8f4ecfe2cda35d7cda14a2664e06ffb70c401024d3c6c16aec1dea27edec007403248ae24d8dab1ec0756435bb65baf23e3d0fc9b58e1d7cb7259007f0c3208a3b41b9421950458b60f10b8570425e08eadda44e1a3f5a6029861b00301794704430daad155c2f1d59e7038aabf2da6424585d27742bc95786954ab7fb08e8145b99103ba49f8a74b6e1b803f62756df9a39ecddfbd3b6af065883b5a39a8c21a47ff18a229ea10f4988fdf884900551d996f2afe1537cd4cfcac6022817d51f5f937fb93df5cd52ca68d16c016ce2f13e3267bb4e9c3d3613dd9becf12c71a094a42df0ea75cf09aa1eb4eb258a2334ba484d338eaf7addab308961d69e870d68f1e17c4b58a7ad98eebd54de6296e1e8ba71536f3e73331cc7a01c29116d70b7ccdfaf94a5dcf47a621cee0bb8b8c9bd3f1b380a842d344334005ba0218c796d80e31426aabc2273f9d602b34df5c212d75ce9ad364e0d423a8a98dddb927da892c7094c48c8020cc9567d05881e553e5867787553c5f4181b976700f5c85d985d6eee896518dfbef757f3087831873a870de618e820e1dd5777fd52c89cbb316499d61c72c463bd1bd93598f1f4586e345f789b2b64c62b268090df7c0b215be81abb0ddc9fcc1744ebe33eae01b1ee3dc9701e1b6f61e2718df95b1da048c37ff523dfef2772f4c6c74961b16d0c50a87445a39914565fd3881bbfe2f2ac5e4c8960a6fa6af8a0f8fa7dfc326ba6bfa54ecb5361dc5f87f715328c71931f28660bfd2d81ee25030782e2d934a1893347562a95e8df03c0f2e1ce1b2ccac4b8485b455e168c80f7939308212283ac7a4d3e64b5a154d24c9d06d8f1e027c600cb5467bab2c49a9d3099bc3598857eb94cd585f4dcffbd8f60809a89f8bf5501e41a59c71496ce0a9bcf1086554f05060af4fbfd43f7a5b22fa2c822d4eca26881423b54806db55b63a37ae19b852b8114b8e2b43bdd0433cbd4f0721c2ca828ede02235a790aac55610b0bf9b058b5e934a7ad6f1a5abbd5e88597488cdfc8c80acdb884625fe74bc61ec0e068f3240d0693ed2697f59b11bfcc6832535aa4f90f25c45fa2faafd9aa084feb726dec4775c37fde8c455d4c9c5d8855ce27c183bcc6f267e2d52b46b9c2d0095d0718d25033a758da7db76fd0276ae7137796e01f262ee0e499618da05ae97220646e501d4baa54fccd41a78fe18b52745696063dfeab27e54831d31fb962d173f0267346f8621b0804b3f176dbe64dea523a27164359adeb6183f4ccf6b643fbf47f1a765aa28dfe0d3ad20460d98d65b1dc036ebf83490d2c330db557be7d51bad23bd562ba9f690d0f2ecdd758067d66876a727bf985d13c74429706148f9aead43ba39449fc23e60091dc0049ee7a3846d0ff6c695e4e1e2069418f78f636f8f4fd31258c78f5e3aa7307d8921a800df2bd370a08a0edc176144e8aae71a381b42a7331bcef43f0a2fc9055310ba9a9995dc14e2042cabf829793f8b62c8008a55af189627e5f81e7b226758cc36e42ea8b4e48e320b260064aa209969e730f2f808ae4fd9b440f2b2ac3a10e4f1b74db1597f82a6112523b85036c22ce8ba49688e9b06958e1cd84c23f2e9342aed70fd973c9a2f1cfccd5d4d04053777367ab07d668f282fc4ce524d5bc9e041cefc0182822e648b5b2f574016ab2f61a8b84a4d1d44ef4ba73d25bf3fe0ab975aaf17fc99ae872e6c67d1e7b9bcfbb90aa6fd8bc938dfb45cc88b67cd5a8ac7d4a9a466a93311df174c5cccbedbf01c89b5dbfb4eb2e349d7caa901c8801903a67e30082d1887c1d620cac71a0d70b5474ccce3ec18016b9aa66a907cb3f86a2a637623e027ae91ddd5f3f2b20dd7e596ce710c36539bc67caa60738e810068ebcb058102cf810900f0a6873d2dd08d8f5ff80ab8bbf32703f78e8cdb591c8d9de3ff58a26593525d44fe84a5e380f68dab8ae889909f8639ca3b8eba2a0b6314890d903050298a35c2c350df200a783d3ddc1b271c833fa49abe6cd09dc19ef8b0130187e722d9b54c4a776c284add8174c8d4088daf84dd46fabf111bebbe24e0855baca47d72eec4eed5d09d4e435f3a20ef81a272768fabbf273613d27dc61cf75d8635281168c8d570140f02ea30ae9e76a47eb5e399eed38ff190d43db6ae4d8641c3072acd0c7a663b2a9a3176d4b99e564090b19e44cc3ea2d18733b12b89924e0f3fa33f7db13495300d53d742fbf6dc9c1c3449d6429a02036e5e8a7d17963f4078d152931bc6141c583ea4ba9175c988456c2c39e4048793058637057cdd084534262a12b3d2fddec6da1a9b85f71c33a5ae4107419a384b8a435744e4dc3938a39d5add145078e3d085ec419cd4e0e620824243212c68dc87c64b1f1f35e39e1abd447a3e0e806e690cbfbf9f67957d81643478738e59a7488dc57cd2a57c59df6f6fdcc8eca53bd61297d8a1f52a26747ed1fb2879788d8ecc3a71882f5a782808639fa9fc6c6fcf81e75a7850baadc9cc3a495b95651a911debe5d87ab00241eb243b96211bd3e9ef6d95debf8a64a0adcd4552964dde6cfdad5f7c5acfd676914465bb6ea0fa5df604c2a324cbc4b7a1b3724d989799cea47cb2733d21f12d6fb9e15ed63f8e4dde2d2ffc68735bfb16fa7458a7686aeadba49545d2eff663eb03a03401dd46c85b7b7873184866f8b18507fc38b1c2f086b78a473825f1a6589cc516c170b9077ba83066c775494ce4cce0c03261c26bc2005af6f2dbc21fecad1368ca9f740f6178da183e93af69f1a235aec8eeedc146f3efe4185d46497e979211d6d26b91b8742449d0fa3e237321b83b404402872499c061738bb9c42bd938088a18970598e9d599204831dda32b7ee9cdee9c0d70d882fc3202ddb70733941d1fa745f1183d885929c8084785ddd5482353ad6e98b7a18beacd62a13aae29e07e26f9c3ce8ba68d97a8b4224aa605229a64fe445bc2e692debeb62271efa39759b2b4b981ad843123bd7441a15eedcfb6f86c8bf7a9c825c71f57aee32f1b545d50e054afdae03df35b009919206d6044c8268c682eb20c666f313143c201bbeebd15017e92fbe3cc1ef2c1c05e7c40e6fccd2940b9d246ab1ec88c0853f2a51f026127429f9af95152afeb4ded9504f491de26dcefbeb53b4c3e2f80c15e96fa73ccf37156c70b30ef2e1c688fcf4ed9814d7257b6b545b9e006ee3716863fd53dc8122282e359570480882303b3d03cbfa286713e6c2a1a4592ed1180b2143f57b247b24ef9ea042d934e31bdb27d485c6cb69f724eb7bc965f8bb64d4defdfc71f1d642dbf35615ba209d6e7d1cffed1d9c8bc39c39fe4bd329c05ab02e993c14185161f6625144057fcb6a224dcf439ca301ea927e3f830947b2d854885f55acfa330854e9f6c91c00d2770ffbee99dba310d0fedcadc0961f54a208082cb7d90d4ee09992af26c6fe16b4fc96164ae788e38513cd34fff9967f4c0a958d27560ee03d5f50a2faefa297b06362db76b3b176550162ca8e9129eb4f4b0664ff5d37247824aa1a89fd89e860a8c34ca2f9866a8a0a90ebc1a3cf894c866721135bd49cab7868b53d3ab6362db090c054b17f03e8e17543cd7ac02fdfd26215c6b3679f957a8b2826d90d56cc6b47ecd28e46412f88124adc8f777c21dca207b2fe72436d4fb9e210e0cc14ec1227ccc11b036bce651ffba43de82e4f44d4f934bbc098f9bdf12091ea2ba85775039a50ba9c9a599a551e39488f6f1e3c269a6c17273a685ceafbdc2f035466224d7c5898e9eb52e8b4431b676ac3d5890f2ed45a9583bc7c7c95aa2afc817c133f11626dd50a7ccd46b9ae58830317c9236ae1c1670fd400b6566d6126038d3d80e44000193f87f801b1a6e768b2c6ac63b75c8148a522ed85957432fc8fdc22fa2cd0153c5736c46f7a7120a36edb84e40da540aa6563dec9bfc84e1bd0325e04662a30705f14a236305e22ab42c98221807af804329c3662a37d3d08e0d36e897014c44f40b7e7f256f62ccd56559cec37f163569e91882d2763e6ceefdab1d2b929acb6a388fc07fc50d33905969060342923141eb480ce4ec412a390596f38e2d6dccebc2f7f9741a8cd1d9250e21ef7392e58baf91b2f952ba9eca0780f5b39ac2276b7e4aff659f5558c1f2e605e3182aaa965403963374f02c77ee5ceedf56e235e504333b22b919c574af16d160d2f40c51a28c1f9f7be5f1a3087b1eb41b71b42928c63fb72f1e61c1003588a5fd61a52824693e95197f563e6f02cb96ecf57368f08f1802f4d91063fb521a36ca717f93176214e6567d3ddccb2be562a4879b36ee094f7b13e909df62cf2924af8aa063eb6d78314233cccfd0378128ad5828a0627ec091ac85764ec0b17b703488aa9c9d71cbf0ab1403ad64fba65f97d78a25fa486b89faf279e2dc924b55d43ce8e9bf777cda380fec5d4ff83321089d9ff819c337fd47266749cdc642f635efbcfea6f8d063e42742b1166572c2dd2b119af6016ee9feebe85b3550650add94f8f17235d4edbedf13b8dc7f20cf03008e4df88074f0b87b8c7644db4c48a6861b1cda221f287d5a966f03c9843afe4d197fd7c80d1432a4a4ce88f6285f78667034a82a9fcb4fa9fb8060493152972ac72297274cb30753dd90f50e89a6e2ac4b0468a01c89752e8a0ffc7932528eb103a8fe9140b8bef6d7d10ea8b4251d46ed4064fe2d309d051b1f6f462f3209d808c1299e6233a3fde36b28f8c9033913483e954b465af25a39f8460d40e30080f440199d74cd7e1c14f2934a1d703085aa38288c6cb85914b334d3fdc71831209bff928d963e61b1ccca230e34bca1d5df3cd68c4fb7746d878dd795162f9089bd47c9999a27da59d416a5856e49c9d346c3664a750e82f10672303b4d8c1b94c2ebcbd3afe5d480762add80f850ed9a1f995d7dcd6b953ffdcea3ce3f02919c2ddba3731343c44f4d5d2a95983dc36ed80b52d3c88ddacc51857c83887dc55404aeb473af6eb33b987e4389012e8f9000fcdd8218b50d447d62c807d3a04d4bc337d1181894498f9b46c951b11278e821bb77340342649409f8be8fa6c75595759d0de13743cb3bafe12598d92f012e2a2c6f1a51432a3c29de2172b7e59c2d70743d6083b0e399be7d090f20a58232c5ba59bed163ab5927192776343049871b6bf1ca4e0f4424ffab06d1e9a6b67c3518d001d17a676cbce133abce2e49d663a8545266ea925ee1a5760ea32263f8e0bc4d7fd185f22248bf55a7ec46490090d14afae5db26285a054ee3afaae1664e3e6a13c9dddcc5a4ad31ece05a2e47853b182037af1d10b5cf0935531408641a918f034e580819b3480e3d814ba69b8960a98f2c396c53c49c4d7249308d3553787ae4208b7b9a30222af86625f4ebf0fbcaf95cd85715abc5e4c6ef4580116d3c389f491a00aaebef44181868c32e1bbc3bcd0c335149a1518f386e4e1f631a5559e8a37b0a8cddc171e00bc8b29d760260d6e7efa987e50ec78cea2d1e9be703be73a2cb096a18b563d4290d4bea8551a34e19ec7349ca1fa8a90ef57a624f53896478ea88a9325b9e6b2bad8e64ddcda8089f5001a146b5df133d781a7cefc3b5ba2abe8cba8e5317c14c5012067a35db4b04233118feddd68a10d92f0c34a2b90582642f97eea7905ac54a70e31cb610aa5d25d8051929b4505ac8452e9b66737d2f75caf022eaf27b21d00af40a0ce8fdf16e40ae0ca79ab9739b450183cf0a9b8c83601f91d7ac0da520ea6118b3e5fec4353e2e247566d9621a2df68344c6ef6d5b81cac1cdd98c46ff130ec20adcd1d04b41a66db82b0987c83a97cb761b0c3bcff4e58b6d64e897a37caeee433d94c56e9626274a0c42c395529f93776e5a04ff1f8423d26979f0b964f71a7d7ff950d29d4575fa92e439713de397104654d429c7e2e724f6a39e0f82eb688b192df624dd52dc2203318ebae720be25648f04027b6d6eb37ddf9078179a236acfef21d032f8b62efeb7d59ff4fbe0c328acb0cda073c5e0276424bd61fb87e11769f6c2e78e5db64ce265204c043948523edd580e42404626eb777f6a58c6eef83b0ddb65c06f52bee0b845a51c8ded6c6082515f58f3204f9a60e886e6c674104271422c7d1a797ed3dc8470171b269b32efaefd182804a44aaf5b3130ebf33bb3cdab1da695bd7a5ec6206bfa1412f9793e3f0a37215c380ba32e4913e29bc18e39c2741b9a7a4035fc2350d3791c0107061b5f57a37943ad447592babb845072c991df4aad0c4f4983b222effe58eef26036921025ed2dc6b00000806c41c910267df7b5123190878d5925b354c3709f85a61861d4e33a6c352b604dfc42fb195d30e8204e6c62514fedc4b5a485069acf28a5d369adb6a0c3596bb0e1eb60138e6ac210f4f11e394f21a196cfd95a8413c2a382068d040c7f58654771122c4cd628d7217d9cfe685409c7c9d0e1b63478d17523ccca8cd594f75f1a41c1de44eb88e3f4ad4d4a1a939390088938faac2a4b7d08b04421c0af84704668683f8cfd944337286c8f7681b24eeba0eb80bb01c0cf5b1997144cb48415e128125c1703ea3697ad571040286b7362bdfd92b0a287315ecc52ce99bbbd65ba394220d517435d965d8cf1826afabf410a13d10160bb0da3cdd8147ab1697fa9ff000900aa4abd31fbf8bee3faf7713c9cb7b52bf143078ab6de5eda444a29650ad80a170a530b4a1ac06fadfd9ca7b015c18a7b6f7893c018638c31be49e09b04c618638c93c0b4fbd786dd8cd95e2b32a8b5d639873ad4fad35a6baf29aad35aebac755e69adb55e69ad73ce5a6bad75ce586b7d44053645ad999181d35171438b758771007bad9de1e27bcd6cb99fbf2f70c6b88c1765b628c3266b2f9d9b3664b6c897055f16360cc19d824c95ce790ccf193261c8084106086f8620b9c9cc016064adb5bef7deaba9cccca083e394f9e2bb7a4bc61b98d112a7a9cc169edda08c177196d60429c346434123eab0268baf0b41a8830c4da175ce396badb52653456a9d73ce9a2a88d69a486badbfacb526030414282748e948dac722c00e19375d9bcf1385d0a08ffe7cac34f8611f418698a18099223c1bac757f6377d85c518545424d2e8306678caba8b2ce7a8c043add8541e20b0f6b08afeb90e881a74c17eff33e24301ee3858e3237586b41773bc60ab2cc169798b025021db4196d483006c623f8abd7558ae106c7f027d2441e1b237bb94aee49a15f23d6eb2a7d8f5f9e1b1cf3dce09eef3f117fefb9e9ecd7e1d10df9fdf77d6e35b94ae018a30af77ccffa41a4e5b421bf8fe186fcde3ffcb98010ef686931d290f7751e59df8c36ba8836697453992bc08c26a18215d0a085040948c00a907063064dbe57867b7d03316c01840d2238b3c517a5ab02f25e27c87bbb9b97d63495a902f472ceb9a94b431504cdaa6b8a5a33f3808ca7a9b4a7a942b08c045c5f53d49a59985f6055e5ec1ce874576688214770d76136487cb10001b2be9deeca74e9ba8ee8481f9175ee7457e686aeeb8ee4ae8379392fe96f5aea6648a1062758000e6c30d044124a5d0ac66861a688acbfa6325bc0a6353038418526013f6c1183381f50ea667807ca0952ce90b1c10c15b6460a3e2a7723c6b2f172d5d03017279f54000470c5052c7e330d3789ef13c5fc618c7972cefabeee3cd0e5480c085d07363a02e201428fd0fd1e1fd9e33de923934432e9c7f88e631dbc0e0f606f938cf08e8fbc3779f2378763afb71ce0b0f1d72a3d2984488db73c3276deaec131236f3f72c9fb12918cf29151dea3cc527814de63bcd5f99cd63f8eb1565ff741704c85b72bbc1416ca4f147978fe61b420232b460270d84dda9fa322f2dcb73918795b186941696e23f6f27da2b55191b5f1729932d23e12e7cca8fb34c69086fefe8fcf5f2f6e0bd6e09e3440eefdc1006b601f74f000d82f3041be09c7700e87c13d177fc14258373886b9c0a67e8c28268d75e366bfc020c169f0198ce6f59706c36a7872e036b8c70d1772bfc038f9233806c5488dbf4fe367e016602fbc78d92f30297c1466233e8c1fb2011c16e3ef7311af98fd02a3c237e158cee123d9610eab9afacc05f75cc73db78adc2f304e7f04c7ac9d41006e646df013708cf5970603abf60b24fa5bf437f6172984f7f122fc7ddc05c780fc7dec05c782fc7d1c06c7947ec8dfc76370acc8dfc7543866e491fc25e1af92bf4c7ee9efe33638e6e42f94bf9fefe7291c33e1ef672e3876c2a7f07785672a7fca72c131d94cf6727a7db8c7d5781a2923cdab527839ee41613cc18428239497e39e27639371c97ab16e46188f8c46c404f931d2ae9a3421bc1cf7248db4fbc25d48fbb117e682a7700e53612f380c1683c7dc35978de31e1d23edb6c13de3f8cadda9cba586adc23d32469a1d69369733d22c17db05f7642f31b0e08bef6d324e8561ce67792efe88f813fe2634e2a475c75c0c60afb56a7cb8f8deeb85003863cc8687ac73b66274d09dd66e72e8bcaebbc19770f325fc5ab665df3d9f009aef927e0603354ca06ac786b0c50156e87608d1feeb80f958fdfab167a53bd26a9fd7e980f92851c50b1d18f3a50667d2a0c0ea978e6780b873ef3d43040ea4c539238175d041078d772185982b68300515308093054913738081eb3bb38316600ee96778b05c441a8c0c32137615e8b44b41042be7205818b6038b86afe30106cf4790213c3c01ae0943335d058860057186871d78a08107186c16e10e30b840113b6871616e9e995a13040fb7860b087ff7fbfe8e9d50b19410c5af118248839d9932c363755c23daf7f76f7c6d424b7ac6383f2de66414210c68abb5eeb27edc22a29de8d3640b6b7bb1b8f93b9c33d6d73611dbb93df7ed1222ed23affeef1ad12c0b8c454078c5fbfa6d7843ccd259ac2d21083558bc2d2ce07c41c402b84041105f78a1e49f0eebc2728b08551055feb2e409c8efc2ec48154419328f3c388710bf259dca8b1892e7c27c6c65e7e1753ae3ab1e8197d03275edcdb9f1d145fa991c1bc70e5e9c3da7e64c8e890c44c873a307084c31850544e0051a2038b000e8809cb315e2166477c3940808206304122228019b2694b209aae22811e70a1d32648e069cea85332e800114556d94681f2e0149137100ed00e00801a70419a05aa20bcfc5185f1f6ae0838d7b14e4c8c7118ec16680e35a5810cca7ab7ac305ebcd08de4c91d9e03249631975afbbd187f44fc43df7fed7a4032d14b0a50b216610e20aa57cef7bab255e28623c1eeb3c5ce3b923cbebc923c6568abb73c50828faf37825bf1eaf78effa22b6e04a7e8b68f63bda47def5e2f0aa1890807457ca2f57b22d9b23574dda910851b422be43e4744cd41798d617b923cdb65a3f5ae315235c7fc588ee5b1fb272de5b2480abee95334eb9ef728dad972bdd9793ac977fbf5e12f283a377effee1f7759ee791901fffc521c0e2fe1754905ef5051324edfbe20812fcf2450fa457b9f182e421bdca8d156498e338766555d472257a9c72af6451fadcc7b4842d7e8b6832bcd2877bf07b0939abf1c32d26fa7da481a3378a5368defb85ed90b7c544ff146f648d9fcd499ca45d8b9d0843247148ec5e7fafd5e75691fc61c8a47b4dc3a1bfc088ddbb2bbfebc5d7d42b89efb42ba4385ef15ba4ff8af858fc16e5bcdfa2fbfa714b892b71f9ebbb2ff0755e4aa166b956e20abff5b9f5cacf7ad1ae805fd6df8535acee6c9040de16ce532e13bd2a066f481be24ce566f2e23853f0db27ef67bfb00ce707123f8c16d840eaffdabc115f0c6fece8f776bc9c4ecc227ef8e96fbdd72a9285f6bd4be745f39ef5e28be64db14182fed5ea5b2fd68bb6fad5e747f23bdf7f236efd8d5611771e31becfaf7323a4c1f8fb4cf0c31869de7f1fb698e8ffc6afc5e47b97f8416eceebbc682f1b24e8cf79fd39a30d125cbf7ad77883a6dffb1b4b3058a529188028b90bd1bebf535e53c00ba3e9f7c64fa3206c85ac100cc3ef6f90e148ebc2cf79fba2fd97f3fdeb63ed5c985db111cf761f695f78fc5cf66221826d40cf1b6922a9b988f7fdc23eabb51062d751b9a4a73d0ffcbc1177bb6ec465528fd789d0a6839c927ff51ebe7e5d981647da12297e1886e18ba683145fb520321cb50e5964188e341d3ac8d50a5cadc4f77c7484592d0688b4a323d7884674e423c8109d17efebbcfcc2c457e87a85b0307c96fe20f8c117eddb21ef15ada601cc17f461b6affc981644faab1b694164fe96eb57630c22cdd32ce9eed571797c7fa53feb9d107cb514708dba918a26bbd5d8792f518fb620724a6679c662b37439bfb1ee5d98e98202b9aa8b2f5d10404be85244af6af383f739475f58f753baf71e8927d921412ecb9354fcac6c0349cee530e92d2462eee62c09167126723952eb4f5bf036b91cb9c220c30f358bc522c3efda905d0b4048771eab67fd6a95ae1d197e7705a9470ec8168090d6797464e7ee3e45bcc71f7ead24599420dd7d6898e57944308bf446db6a80e8a47eefbb7bf4f2f191960892d0760dd05a0389e2de3b86ad04b4bcb412d02a40cb8b276e3122ff88bf18d290f76ff8e0171599c91b4315792d962dc26cd145fc3e3fdb678a5b77fa276aaee57a6edbaedd6ce6af6699ae0f759aeb5ada52f4e94b77eb0277db0277dbc6b3bbedc2dd63b8dbd4dd4970d1a9d4f447b6a9305529532059aa02c9d05aad04924acbd4c9acb9bb76bf41ee7ec34517411258113a552e473a06afa821e4f117431b62305f96dd12daf0572f570ac3ff58af9b3f7cfb72e17b7b3fa5f095e57bc90044093ff8da326595f0cb004429ff65b15e5689e50296fbdd98bbbf7ab15e535689f5e06b8b0c4094563f6595c0d7ad26af2de1b3debe5c00df7ea30b464001dfbe0babbfae04bec415cb86f740c829f8c148dd77aad06375ac2dabef5e5b589635e6f01617b0e007c71c7ef0c171cbd42bb11eb752c0cf7ab98005ff6accdd5693293b6595be5fbd561fde17eb5b446c34c9cffa14f087dfbdb67c4f5c8965df05f0af0b2b575a81afefe5bd558a437ae3143052f7c14865fd5d6be97ed7b2d124ff7d28f843db5acaefad25fcb68b008f686590216f9992e1c3b1d55fd932f54a1a4af7faaf5cc1721f3f16fbf9b180ffbd8f576478253d5ec1028e53af3462e9fe1ba75e09bf3762e9eceb1106fcfe583a7b861f8eddf7f04edda9bc652a8f46d897c18816809053f0bb5391d88450bffff7720d21e6f71112b1a41e73166c47f0b1fe412e1aba9108ba88800692a7052884eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee034e18e6b8bb8b9fb523166b6d9930bfebd0e1ebf73c363d74c9970c7d723e53179693e595b9e4f5922b567edae765f5ac57fe15ebc330e79c5facfc62b17ae842decf4668230c7d64f03ebff7ab1c445a8e97cfcbf7e50b9313b2c6900322ebf32afcf2833e5bc8bc82e4d78d98e545056998205fa49f49e385244128a6c70d1e77e42ecc3e1eadf3b863706cf5376b0f966695479b33cd53a35f3d6f3a6b73f65e5e953706f7dcf76c5cb7f67376f120d23c356b3c2baed19a6e741c8ad114b8b8d5f5b8697dcf9b16ab95f32098137a39ef728db41cdc727dceebe4b842dcea81d303a7074e0f9cebba590abc86cca2d8f366c71671476e47ae074e0f9c1e37e2f7bc11776c1161d076e432d93df83062ecbcce4883318a4f5bb3cec3f89d178cd71969b02ad205be27f6c0e981d303a7070eceb97acad5e3a6e7cd8e5ccf9b1d5b1e7cef053e6d15bff3745aa3ab86c33074bd8e2b747d288e35ac2627c71586ab71cda407f6c0e111b17640e83a685e1bac45b8fa11b4211a968b655dac0288def7f5204e015f93342f8dcb4be351c1b262cd35c2e21a75aeeff1b3c69e372d10ec71038e3d707adc784c78545e9547e531e155d996f6aad0603739a0d68edcf71100b3a1caf5205a9286d9602d701bec057e93eb81b363cbe7a5f1d278546036580bfca607ce37f6bce971c3e66381e33762363d70bc5004ae55d87da87db6d86ff49922bb373245fff7de2afc90f5e0cb277731183ec8baad07c156f8353aecbae0b35aef6a8de1df57beb0efc2be91e6751adf96c56ba6b0214d07da903b483fd301267a20ad0ea49fa12247eafc778d686e69d9c57a9705dfbe683e367cbffa3cea969129e0af9458b2f5416e16f25d2c96ebb37d962be7edb3469ae8fa1ade0ab23e87f52e91f5aecfabf73ec735921092ab91d63d68e3fe975d361ba00a2f1e50430e917ec6035fc83027fc30ecbebbdf875968d6277795e44cd2bafbb8ab820b0923fd8c07d874dd8be50a42a4ad60b7ba46a684ab71054970a465f13c5acee9c73cf8cbe52fe72b252cd28651802c31478c015facef7d07117f5e3e2e349e97932e2e9f17d6e7e5038b10f31df18db946ac0fb4ff5abd5ac0b645e41bbf1e2e8ccbd7e5e3a2bb5c23cf86faeb1246116a1f192c5038763a642e5c440b76c93f5ca32fd7283ff642cb61486c495af742443fd38123c8ec85c48ffd4c078a20f17f5fae11971ef2171f192c50b71a7db658209f1cd9028e132773f191c18660470d7adffd686df751855c34580572411380a846bcae1b5c37b86eb8168437e0e7753ae34bcb390e7edeaa0520e020078e1b366ad0e0992163831d2f02e112d13e4f0c183a5f842a885e58772ca088020a2aa040636424bf2a725c2d56b8023f335a641d82a2c0980b28d05caf1b922f695ff88ee042c6052e704055164a970bf23e4c03e47d9f202898f0248031c6d7cd1a2aafe2807e228cfe6c0e200d5c3000192810030c78a1d46d417655387c63102fff128e796390aeeb82dc3443d22c2981872c9d4035e4481217e967aa8058d3e10e88a3f0abc2016b00014d5085f7de9b9b08f305a1eabaae0a063669bace092f3e7defbd5fd7754e58f1dd30c423fdcc136f5420e6354118f0ba20f7f325d2da832eafc40439423564a535cca3720e38d1c5cb53592ae0c30012608498095000055a8c5100a973d0ca899cd67a08a8c7d040eaec51a5595a41a7b5668106a13c618508040feeb1ff8d3cb86767e7c2d684d8febd414130980e1d4e783016c5efbb7727b7f0983b1d3778fcef1bf1d16621c1ff1e0af81f387ea3378ef65e3b7e607efd59c2d079726c1c19bfd6fd550bdfcf9fad91fc77fcbe3864887398e3a4d72a62ef0a676d3d0741d7fd8b2567c917d422d4fa6f9b8f0d1b4f6b160beceee3fc79d6929da7dfb3d1e43e7e28df1d63f8b290f7f50826df1756d36ac1c67919e9de7b0fb774f7de7bddfdabaf127eacb1c64a38ebacb3ce4a586badb5d65a2be14e77bad39dee74a7843ded694f7bdad39ef694f44b6badb5d620fe7005068f7a1cb374afc79613b771c8fb7225c76a708f52168b736b4b786f11eb30fbd6619ed3c47a0f16f36b127f9843c4e545c4df3262a43382c76b2d1c37f2849827c25429c1002f9cc0e2b3c2ba3b812657d96bef1831175fecc5eb8233ce4e4c39916ba24db702dd69fd79ab2fac3b9a26a8aeb54d88c14d84711f47205a6befbd5ab4692d812f88343c84d6baebba2f7b23f8824813bfef63e51c0f7987105f1069df1d4264b55a2d22de5a8198c77789a4752471272787c78d585214451d1d1d160c169208a345a406a345c43f77777777f76cddfe78df4b43ea8c59a2ca2e61e6e27bbf3c062fb180334b18a0d37a092e5434384395c547a5860a0d159990ca01545f5a543ab8a860e0425402053a3074742e60c307830a183160c0508289226228e1c38e123828919351030533743cc06386068d05d43893440d363688c18d9c14e0a02207cbbece5c60090e7858f6f56ac28a570e0d614b05672ef0c319336f08a0a3e367a64030658119c4a08a06016894fa28ba46a965d4276d35dd5476fa6afa13a596514040419bc8c98928084868a80c8af59011cd7af4203a0ada311e7b2dd35575c2a940ea8a43a7c876940c6835a18050a8b49401d54a195a034a551c50945a462525ad297abbe154a66d2bd3271d0fdc67e54ef77e6252a5cadb5ecdb48a53500ef7ef83ef47cc59143892d0fff834c5c976acb0f259c1602ebc0bee9606ee7606eef68b958fbb75e36e65e06e63e0eed96d172b01fcfbbc005e4d7fd228996ddb803c05346afaa3a67b5633714e40abedc9bdc7cbdd87727e70f7fffff7f9e083a49bb3f0439ad382ff5afe6c4f919967795b714aaaa0698a2a7d5253d327ad7c9a9a3e697ddab5ff5553cf1a0565a6ffebd3aec19a3e69b66b66f9a496ee8e5dcce180e5624e8c1cebee345c74b171174104d5fca6873acd734755f99e17c1c7c344f0f1a709b59dd4f4a75ccb1993bb09de26d7e49ecdf3ec9e6b1deb798ed532accb7e4339e6b8879cc3bbdfa733b6d6afdb261988752f04edd7adb5f81eb1d6b3d75adc05e0da6bbd2bc389b59df5fcdad60fbe5d075bbdcdf7662e365b7b571606d782ae6dbe785b4bbbd6de2fcab571ededf2b52cb8d676d736b133acc5f7cb80c69ecbcab076830f5b2fb6bbd65ecc646f5e814497657f7c56ebc044eecd42f828c7c88a090d703dfb6580cd1896f5b5d83501ac09ac5f1745d1addb6cafe5c27e7787b557df8baded6181ec6759f7dedb09b11fdc9baf0dc23f218dcf03db8251e3fa60f5a561b3c5d6efd2fd95cd7ecdcebfc9de80fd9501ebda263971b1ed6cf66ccbe22ef77e49d81e617b6ffecb0261565beb0565203a41f6aebaef5a6bad676d92bd5704b8b3e0cd988a1d6f15ccc382e1b59f676f909be3e2c038b063b739b6bbd7b6b288f3a571efb59dcd4f16d461437dadb6ae988d3b421782d73a7d2cefda26f6b3165f9bed118be322dd1b37bcded516db6b6f78bd6cb1c648165b98052dcb5a1b82cd7157d8b35fb6d7da246b3b1977c7e66b7568f1cd6131be37df6c91eeb535eeca82f6cbd75a9b6471dc95876dfeb2b536f636a70a06415b6c419b792c0826852ad8c8610190edbdddf5b61537080a8f587bedb5d6f270cf6feeee3fdcdd89bbc3dc612eba864451c2b689f2e30fa5046cd24011c2045a3c294b10d4a4046b7ce91502675282293693971920960881325952d2da8c20448e1714296f0421bd78808e4ae07240ac6ce9301262658d4a5b83a235718228f202c779aca1410e9f3561ae4fd31028085e827680f03e5de458f3ac1c5e66c0702f3156f026ad837f86c11dbbcfcebd96af8aab2a5654aea63fbbe654aea799de80f60c959927aedbb2ea4003b91eaf8541cfa3017a1ae30d5850b42c193f58b7fa8e326b87e5a1c05a710bb73e35301c20d7b9ae07669f168ea307e45625b066d9c7a5e512d9d051b2ed7c6020274292213a30dcbcca497a3e90f318ac4eba69b9b906e6e1811c084b316c90a3140336a26500391aa009ac9d03e48acc383f7515835c130fa207e2969e9267b041cb9775b010075a64a0007047155b3e373eb86ea883e878489984ad8298176268d8aac8ca83a69b7778482f2021849117a6c801688b191a98c885b82704c0d01acab116c8d130d2b2f290bad5e7c2312446308e55114f0b128e27df111b448aacc023ac27331f543931fb18ad3ca418ad6e151219591822b7fa8ee470aa21a7b1a86dd7a45be910ba1d249010077ef01de9561e0d97909c1c79093863e746093b3ed812271e68597d3f5e8f568f1892258f95bd1a3a091b81acfcc107f1406f95813409f92888d536f04bcb08023f1946ea92fb5632c098162e391b127db0ac23ebe888c8ed70e5211a049d03d4916fe408611c2fe47e802c7ec23c32d6021859e0013dd14841e00169a8c44080882f346471c18a3ae569cb9a589092c209254479b29464842349473d601e740080cf4e3401e44707630d1a9e970da001334413224092706cc00a3b26cc9031220c982f0b10c20b1051601f20e0004e2974c10513ba430ee6d38f10565e181db8c44010a86940982424a3193be1eaf36ed8b04005a4ec1993252320294224081c6618008c35451780c00388c862420931239e9d3c459a1794f0430423d0eb12104410393059f223840f5896067706f78beb26b7792e2e9b5b02bdc686e07ee056017a8045c59de29ab95330cdeaf870e81b2d1a77c6ddc0eee8c4d030ae8e15b3eb867a75c1efbbd9626b3b77772377afd1cac1367012b97c432e27e976c0ac88362d3a0cc869cdf23c0881962c84509ec1fae2808e865c4e02ca58dde0812107a29053c039c2b5637d45bea36e858f766820f78dc9ed48d102c6f00d5b708b0bd615391d27a75935aac8b1561e13c8813caeeb85a081740f531b84347c7821db90cb79898f79e8007d3c3a715ed0207c479e0f9c837d7c2be69193007975abae881c0ebb1ad92714c236b3b2cfaa8806c143a1abd1ad3a1a6b87b503ce0837f050c03578a1ab81c5bca0ab721dd0b2ed993ac0919358399d4eb698071692975a1b78d733c11375e7e9e024bd81cb7621d6998531bed8c31f06573732f6a278307296563a5ee759ec65a20c94ed4703afc985b02207e45c4568d1e9b28d6fc80bf98a1746a6f738705200023553a4395385837a12078e0e5c8828011121869e5d7001f48198f3792aa4c064499c2896a0e22087a02e3e0439c0151f90e209252c000130403f1e30011500b7e6a0a63068411b2b3c40451314c882850529299cc0648991221ce49821630666ca40e001585c60c271033d39c8715d4182166cad5c1c38328881141566c8d0f9c0134e2ca184052a10811c7098818905144c60b20489145138b1810b74392282104811c5134d2891c4105f6a88018616b4f980079448c28c04b6e4f60c09119d569b2cb0b8e24c1365c81cd1001d6ed833139010e9d1694911c5192010a0c3963d6361042445888490e46a65cf020b29a280c28932648e88400376c061cb0a2320112184a41891500f0c9dec71b2c08204509c71a289326422d0801d74c0e1862d26a000d30a528000fdbca1411212725c23c071838b0d359c604290026ea841ca8a11be72f70e5c5cd1e0601c0c27d740d3e0cee0734026e236e082b143570807d99f90c7f5c120e097c181c5716f7835308dcba3675819600c1830b098735a2eb1b5c3a211de58e980dfd779b8ebb4c6d6863bd37255b317eedbdd6db8a83bf79f1f77bf2ee634def44fe8f7bcba572927d8ff9e99ea69be6afe6a7e085269999651b22f7f45cf57cd5fa59c3a17f312eefeb9989170770f5ccc3cb8b088ae00b8bbcb45574de74d8f0b07770f5dcc53bec2cfcf8f0a1fb5429dbbf64fe86f9959533f459f66e7fe0d7596a9bb8f2e667777d145dcc61d09e9082986648454844484d40369084908290809e9e8e82876647454744474d4e368e848e828e8082976148bc58c624531a2588fd8504c28161443323a328a19191915191119f5301a3212320a32422a3a2a8a15191515151115f5281a2a122a0a2a42223a228a11191115111111f5201a2212220a2242ea71d423d6c3a847510fa21e3d7a0cf510ea11d40369e8682836643454344434d4636868486828680849e8482826642454244424d4436848484828480829e8282816641454144414d423682848282828e85573c539fdabe68e5a3f499d9d38d4e99fd05f71a8bb8501ceeefe2e5e2cdcd54da5dc496666ada4722249d122e736f284a2e9d26caf375c9aa242dcad1744768aae4fd673afaaa99ea8ec4422b5de6c444e262b8a3a59b71174bd49a5b2a42475533157d366a63726a9a7bd9d56b37653bf692d9bbc271bb87889dc6ba509c345ebc64548b77a9a48335cb463dc7dc745fbe5dcb5f7f1dbe967351c1aa57ecfab26ecadecd969fea682da76ca742baba8b24da5e5ae752c917845c793bbcb70d12eb99afecc501bd06a7bda292a032a4b21a2a71e4347bb08e9492846349b15211519c964b323a46d2434333ada48444e453d884a20d9aae2522035fd596d4f7e8db83b8f8b1ec6ddbec0ddadbb7b8aa6e9feb30c5352b4cabacf9ff3b7d34b95b655c5d166e5cbc8ff81329d5e35ff9fd0df4950a779a6a5096bb99dd6b4dc47d4adaa3b9dcdc8743623cdb58653b29a363309d469ce50d949648624dd7b69afe5fa644a8a5659f7923d3b71a8d2cf0a4deb56999a547874fd1d252b65af96aaf952e97a6e75abbf5ad967cd2cd73de43f45df54674b6a25ae856ddb2b924dc59492994f66baa9fc1732585134fd0d55a6e8faa4053f33dbaf2acef6abbaa1cc212a1832e376062b1be2c2aa3094e4a75c6262fa516bb552f6b3fd4fe889aab55a2944ea2c95a028944f9a9de694f7f9a44f92a9e90f100f9bcc0a904d66e5444d3545996c322b28d39a6e2a272a4b4ab2c9ac049509f2e22e534d9b8d2929493d51533df76a65a77bcf6e6515758a0cad316d598a3e954e3855ea569ba136f79be36ab16ee87e5752ab592bd714559232a9656ab3a1321ea9cdc603e889284846148404142b4ba421598f21a74d6414140b8af15837d4ac84e2b1a16666eac4034a4d7f8080808054534d7f9ccc5a52126e5331d7928a99ee19935ad66a2553946c2d9d6a5b769642dcdd86514003966294a98ab9bb05b2830a4cb8cc00841977b72748c101313c5778400777b762583440b10181152071775b030b38e849b50f07b8bbc500ced28111a8084094bbdf010060270127e8000a0db83b86c1162c48a088260cb085bb5b116c3f14e0c3f58180bbdf2444806451c30735c8c0ddf10639a4e1c2872e6638e0eefa00047063a9488213c4dd2d1630d0e1ca1b1f4e1073778c8026cf00511aa05d71f4234485070fa9d54ccb9b4f107700e4e0f3e303b382a64b52ab5933d728dbc9b6956c2ae62adbb51a2a24dd50e5592a792a7792d4a644ea696fa5d4a6049de19ea4fb762b5313d019ee89baa2b5276789d66655d054888a23d3d2891ae5661b92eeb44ccba5f5dce98e3a91a8b89aec449296514fd4322d977050e6d3890a394d283365b254de6667991aa99532334557d53ca2decc28753db74daa5c52cf3285a2aa5b66ce4e24375bb9aa4ea5d293259bec04f70b5eef82eef773bfdeedaebed9fd62f77bddaf8ffbb5a80c95a1a92ab54978dadbc99ce1ca134a2dcbb4bc9da8cddc4ea5d359a65043e44cd0b3e67375dfa456a69e2bee56825254c86992908ee0ee21b8080416ee8ea63b00ff847e8aaa261573f665ba67bbace164b55276b3ed752d3ddd506959fbb732c3d9f66a5a296d6a79fbb30a9a42dd6cb8df516b11173f4003830193c1966031b8fbecc94984891355c5955156889840244a919b2d3d72b3a551eac6b5b09dd4f6b96f4c6eb6f408eca15eca69356de9befd5946ad296a53cd1307537ff0b0b2ff44cf2f1f5d7f3db7faaaf9301bce665a296d28d43e61ff0ffb975a4d59792b655fdbe75946c9ccd58442f759e5cb5f52e2e4c8efa8551572b183a70e7ce8604807587820820735c40ea010c1450f8038d1e4c11577df2b6adb4e6aa50c4da2ce9e9e989c55d02150a709759ab3b4449d4e26bb269392ed27334999964be93693925421e97e7ac22905bd6a4aad37db6ea264c84bd54ef45593a905dbcce745606202400a002822006a7072b65774c9acdc47aaec254f66e53e1265cf5021e318f4acb2cf27c7dc13fa545e3d713c5c1c87f8cccca6a69feddf51ebae39954d4c5b665249b7aae25eaa562b716769fbd94ef75ad67e3bfd59cafea756e266261573769a7fcef696ad1b6a8673dae1e208be4ef0c241c9c55712b57ca8d39c9dfbf6e4afa9e1663b4aa6e27ecf5059ccc5f7d2343399cab4bc35fd4f99964b5f96b31b6e56ee28f19b7cdb50d98a43755c7c21ee0ee4e2eff80a527e07c054dfe77dcab4bca95b86a6b7df4e5fab99557e46c5dcb29d6e2a65d4b6a14f38d0c2dd83b8c84111ee3f4a849cf0b7283a032880c8c1151f15a4d44adc2a2b579c6c5bd9e9a682dad0f4e98770a044e4e0480e2fdc7d05293fdba9896b61a7ef03759aa759da76fa3e33f35590f233db51b272a7af96555eb5fd2c2dab9c55d0d959467d141477c7e1628e23dcdd878b39acb8fb0cc9862a55752bd95025d38f263e64bb04a9743d89ccb62d359f4e5436dbb88d6b6107c05499d6ad3e3da14cab957d9a3753b6532b3393e9864353a8d9694e614af7ecdcea8f28b53c322b771493ac05db7ae2501913946abbddcaa424212b44565366d66e3624ea5e57526a35d7fd644709a99554d0f47623f7ec4465fb09d4694e91954ab3d324614d51277256ee281235b29e5bdde9d2899aabcc4c57753b419f4e24b36dde703219939da2426c665913322b771ab59669b974bb954c546eb7922945d7b256436549494154a2d4328a69afe5cc9c9da54cdd292a633a7ff4ec14b7962794f9e47d56dc4d3587c0d672557fcc900c914a371554a69a33759be9bad31f3fcc5a59826c97f0638684f421db25a8527b0ad37a6edb0965aa6a9994749a6594ac4ccb1bd38aceca2935f426db3354c88f1f47381fb25d82fb75bbc4acc6647692eabaa1d2128a949a6ef3c95cd125fbc9de50e5fa04ca5472a2a69aee126c7b453213b2d7134919f5e59fa66dafe6ef1ad469aa4fbabb11176bf0f80f7ace441a6a5690e2a38294ffa9d57615b57c1fa8d35cd5d47cfa2714c9ff48d56ab8a7dfebaedd6ca86c66ce5eddb37f423f4ab6964aee0e00176918e1ee515ca47182bbafe7366527295482bad572d7b6930d75964e663fabbaa1a070eaaf5150a6edf74d6a2d3fdd4e36dcf93b6af559418a0a527e47ad361c545a46adbf5774c9ff7c95bd84c61579c4b8fb932a7bc9cfbe49adafaee7a6428409cf007e5690b2a235d567769a535490f2a3ee28b5aca9bfd75266d66eb8d96cafa68adef66c3d3795fdaa1905e57f56b4a67e8fcc7c3265fba6f2989de614d8ec2cbf89e9444d55dd6ad3beddcaa86f9a9de694a63f371513ea09fdd95e53f4b6d3dfb2733f3da17f96af9abfd31d0545e4d9eeaec4451e9e194cb8af68edc9b6995036ae85f2c664769a2430dd6e655212925051d150aa2625edd3ac9d2893cd74a26e93acb297ac2065dd2a930a52fe67b6cddaed5656d94bdcbdc8c51930ff996d1b4edde9072eca70e3fe33db2aaebcfdb9b7d3ab65d4af5b7da9d54cd1a81557fe7aee34c5099151e5fe92da24c8cc9a136ee95128428488d2db6c4c4cebaed5ca9bbb73e0a28c0378105310d35009414c414c4225c85453c9de45dcaf3cbabe3adb50671925bba1bf71a7b99ea8ecd1f567db4cd7c7a128fcfac1a96e74a69a51eb47c9cca82aef0355d69e1eca6cabb8c7a12830b100babb0ee2066ba6b0bb677797119391434d7fb6139aae6ad04fd0cf108fd3aca5db06d463e848b6919c664848434632d916e26143653f4eb8a8d584924a57d584daa947b93b141777bc701ffa09fa11a24244898913284f9aacdb30d6ddc6b170dc6d0ddced9bdc6773392db955ce3d97f39b739cf319725e430dee2b07dd7dca9d869c83b99c965c0d39f71c0d9e7bc1dddd1d7d3a91ec599942dda2ac6a99c45ccd134900cc5a799a458848d56e3712ea34d3f5495212d34dad952bbaaeb2f26643852425c9f60c9559296d3f867ae0ac94b61f276aae3726564a9bcc544f335dadec1f3ed2bda4aa654dc694eedb14195a7362da6ae994ee253529c912e1ee525cd459b3ca769aa2b25fd1f3775abe5ae5d37f327fb657d9be59d9af9aff3b0aca87d0c494a24c4d1fb59a557eb6a354f3349f5e494d7fd4d5b49935db5e5529777b01bb464199db04a721db66ae27ce89548aaee5ec2c95d4ca74df98d44a5b8a2e51d5b226244ab69637d51ca24a954bea46015d72adef9d1691a9a62d29493df714744d4a52939254dc5aae4fb6ec2c6ba5d29a069809a8c4ab18cc7ad4298466060046020080006316002028140c08c52259122379a657f914800973944456442e9d0727498ec2288ea2204619638831000044804186c6660c00b93a10308f49df3eb4940c9e051c0269c1d3ac5028b05439e1b7f74644be947c3be7704356c48fc0437cc16c56bfe2d9402818b33e7e7380244ff04f6a9d2ea66265595f893f9265e08ba412a67414f4ff1d565ca30cb59e77cb012fce3034ca81d3fbbe42d89f19994ce2c050c91749b679af70b63dade4a3282d65ba9c57cc7294cf8223e6aa172848db75b6eeedaf40f0938c4ad48ece8ccf614cc66930a5948ae006c86ddd4ede203dc590b3dbd54df695f30335b6b523f2e84371440db3cfc7f71b6ba426db43522baad9fb0edc67d2023e50495aae374fc8bd051e460c6f7c32ee185859802ad66fe707553b3cce090fdb6e0a4cffcd42eaa0dfae5dd8eb8f029c3e000c0749467e750b4e069f84403a39efe9a8a6c2eb0524427424e77d6c089a75ec5e7bec64cc39897dec1264647db8f99d96fe296622ad0b50ba37829c8f234a92e4cdcedb39396c760e671a617c405c0d5a7c7ad02c28cfd9f57e98cf74c2ee01e60869926c9375b1fe087facd9e884aab5c91c63d9a8837262b641b9675af2c9e516085db6661bd7ebb037441aeecfdb3e9b8d2e05f2d4b2d74fdd9dad79b9edeaa1c62b4d8cf93bfceffa1fa93f8248cf6c203da686a9d0762cc5df6243719fc7d20803a5b88b9281e7ed031c00dd600bda5c1bb0bd19ad8564f437715a65689cfb14e5c3d9e5b5f4bdb7f4f3c0f917dbe98987aba3f570ffa19cb902fd0f132828aa81107b8ed67aa3a5e119f58aa1713644cc0f72b9720a2ffb51b2d02e2e5f8d080473badd9f6e848805d2055e216b8de30693a5755330447fe904482951a5097e53a745ddfd768afe270ec76bfc1da9ea207b894da0009bd6389fafe5ff01021114d9219d0bd238f4ddaafb48008360062573f885dde2b17be77866075252e4d23695accadaf6514303096e667f42e6e7a97f721285524ad6108c8bcade2c1bddd979c62046c84d6e5f10715450d50ae62cc3501fd9d7d42368ea1e4f0f159f27da6a96bc2374431b6fba55abbdcd0e57d855980958cb32aebeb2313dd727a46e1de4803a0288678d01dce15c6d5e84b840eb3e62fde2dd36c07659a0665687c5960b80cbc3e9c03b0fc9ec8c6aad0caf3e973dcff148e4877b479ff142e44dd26925886f160eaff17b7c595152419d9d4c7adbdbb500e4abd0b759e92873fab22e1ba56e4d422d1fe66f42b5e28bec4d500e602bb20ce7ba957d602db7ef84ad35190f07028abacb04e29909502683259f0e0a9fa3696e37c4ced95247f043284888d5dda9073fa4b6106d9fc16bcf1fa5657b295b632259202076a9aadb7ee439c611a5084e1299f1939e88334cfd43a0ea7b5e5e1190bf679031abac23244dfb359a2dfe7227d19c9fc11cb24b46a6800fdb95b4a868ebcb0eb3e7654e5d261c9658c0877abae38b36d232daa432883d4b66356b29f1653070e78160324b8ef0036336ec26e767a9a58e68716bfd63a7235ab2c715dc111f5268dfb71abc73be1dac15effd6db3273071a186f9052431f85fc08c25a8a14d71ae56571b74a433cb7cbf860f9b6cb9259c6c21af9d7513acacf6de50fefeb4f6d8cabc5802a6bf54604d89a75b849990ece8aad6e6e687a2d70d95ab49584564c1fa62706352fdce23a0ec7eafde53499ebb743343098cd6939589fdd24715774e2dcfa520154cdc005ec4721198f9636e703d3d0dfabf3fcfc0ac589084028f4e5308229c7f83a18ab3a5cc30278d246c6eb57d732cf0c1298e602e8120480ea519533230c3dd8b3f9af58219fa03f091fe4b247338b8f6e610085b17367adfe9c3478a0a847cd432654760efe8b84104090e181da9a0f9403a8906668d7810b069caa0b528523deb0992fd48de1a76381820ca299533587a3b5e278d334c39fc8ead3df026d5d76a6325dcb8857db47cee7e561ba417bd1fa31a6a53e97afe219bbe8ead5f39ffc323dd182aeec6c297bacb98889a659d8773fb21c4be4f44e33fb4cef8c6d572bda5d2b44fdd3b04cfac77ffa1fee219a2f73f167f00c3ebfc7acda67e092d0dac9a95be7656af4e5f7c42e5aa68cfbeacf3a18f89d83ffd507f7026d6f4138123992cc6584323c8b6b2cf951a5bc1596cbd71710c64610ece2cba337aa570cbb91921ac9389db13db84aefc8ce1a86efe07b55f09488e2f2e895c24b8d4bf98ec904ce1e246f53a0ce56f482dde149e24c86d50f8cc90da3b96270efe7eaae0f24be33a7f3cf844547e7b72dfb81fd113fddf7294b6cfc9771665cb1a992eee071c358d3a30e21ab671f538c9f3b6f218fe7b9e2bc84a44f5bf0e2ab8be9e3dcbc0538467d1aecf3d455623afa4c9ee7f78ec6f09365084db9f87245fa414d68da35d79319cdd30be6255ff5dda6f4361ba8b300356e3fabfe47c20e9053f9df586409b8aaec22ced5f22159377aef6599c83d48b1a3d4e132fa508fe26e02b3301b497ebd3f5fed10789e76f5fd4bfd7bacd00eb6ce976dc5b842319b74b4d704f7a2b55270acd7aa42f8eefb18dfca430a57337446cfe516f5b07b1cf9004269e4321781cab8bd84aa995959d8a1582fa66f64a6fce0c4accaf7485b46344fea3626abf5003fd008bde0b36fc6151a3faac22b5ff5ab4b8ee3b15f47cc5f1a746d983b720ececae824caade5a75f693b32856bb3f4207e541f385bf88c332d3df27add927b0a696be1348ec73df7c56abcaa09112c3cb0310dbb070c0b135f7694dfda06b125e7eee331ee73cabdb1ee8d0479c843cb9b7c5a8315eb5199e3b162a1b36c2a07300fdc92e23fe39e8bff7a7301bc02c9ac3a3f7828bb2994e90fff4697a6781e97159ab355fc1a81da489d29d21fe3fabcd886862dac91d9b143ba1bd75312a75b6a8db1ba1aca30cff7fe6733ffabb92d8b322b96e2980964304f87aebd6175c6cda0a4d4f2849a3c3efdcf0769bcf4fed3c9ecc926f5fa77724bf68327fe868dfd3294d495c82c11ed6c5b6d96e8a73ca86f3c6c77c2c1e92bee1f831870efe8de2b974476471708722ad63e8ffcb72a9c8d8382ebf2f248b4613d48f819f7e34fb9b317208574b482de22d687e752b3282eb6cea20825953099aba00a2b1608834b1eb7e39fabe7a80447b097e15dab25c017911c25b97dc8a11a55b8469da4e59c93f1a0482aae80bc4d31fa23dedb0ba60390230898c4125fa970d0c7d3eadd61ce1c0736c1e4d181a1fa520cd2d00fd6f28361f0583d19d0874e9a4720c9f5f5a5399442d38895864ae80b4a94d40a92e498242f2ad0fa2145e0330849c980d0d9bff16f4fd57bb5191bd7fa04b08d37b9b7b14b396c5e1416afc1234fb715d60d0811ec17445e02ea287daf534ad96e5481410c34d97b3c7e753ca706a3e6434ce35b39df199c19b54aa60e69ad540b9ced90d938adeef10f5d3bb66a46621d3a5d106895c35085157a22132356650365bcdd6755738e022dfe120172edd2f80e00143dc62f01396d641ee030e319d35076094bd4ac4c908b35f5fe72c8bac171e0d126d81d84be76a6ae3b400959766beabfb42d492cf71463c9dd1cd81ea71ebb40a3ade43b7226d3458e1d94cd8c4fb1b6d029e6904105876161211113b80c860b74478b61120ca63bacf83e3d23c1e8f8c1229151804904af09e1251ecc3f068be27c6e85e1f0647f3793c524a445168005022c3fb9504910fc7a3f81e19e3c12831f9d83c212e606200791968c1d53c124da42a115c288f844a2212620714586cb600cf1801457b4cf3f9703c8aefe5915022950283801219ce57200a3e383ecdf3c438dde7c171691e8f474689940a0c22607a008a40e4e5611272304999d0c0953c124aa452909c100f895a0224620714b36c3611cf3200457a4ce3f970389ad7e321d102aa028380d232cea7248a3c382ecde3c1181f4689d1c7c60375001781c8cb8c16a6e29169025591e4807864541211113b80c860b74478b61120ca63bacf83e3d23c1e8f8c1229151844c0f4001481c8cbc324e4609232a1812b79249448a52039211e12b50448c40e2866d96c229e65008af48807a3c4e463f384b8808901e465a00557f3483491aa4470a13c122a8970242b4d8e1e869f8517e2022e369a0c7022331a0152178dc5c5e504802ea04486f31588820f8e4ff33c3106531178af9240f0e17034af07e368be078ea3f1fd3c124da42a64002829e3784a22c187c5d1789e8ca17b3e383ecdf3f1c83481aaa04100898ce72909051f0c4fe17b308eeef7617834dfc72153450a050609317c00452072720849198ca4cc409b696353da8984bbcfcf1ee86509a1f5364c19890e9b6b085f986aa149d65f5b5d29682fa1f2b1a9ec2b789a3d2f8587426e339eaf8848a94ab4ec05804c39dceaeeca3e82c239ff6ae5e8eb2d3b59d7490e41a2f4274ac1feb9913949955e1539b8701f840a5e3620f3f11d6a318ae3fdbaab1859e6fdc60d5554e9c9c2f4a7fd27de9fb922cc722a1e1d85a857c8d7e23c299959e04cd28683fe2d73fe7c125810457c3995bbacea4b131b2bb901ce76d568fccb8a462ffba3d085f10164c77c6b1f6ae9960bcb784f9bc68ae464d280cdce158572947576bbecab36e53d14916edc87682efd728bbb15b454489be87bcb87f8bc72af8b5bd176837fab920913fc840595d257cae713e1620a492b3ab625152b9469b4431ae249a0f7a474d8a61c3189ad5134ee7075b9a4a3f71e18776d21f32000915f6c4cd243e942d034bd55cdcc8572a7328989662bd2b54a01ffc547631345475f8c3a40e2839697d8809b487dd19fec34864040cdbb9ce54ceefea4e09160a913092525877b00e02157d0078399db0825e80fe3f71c475755b02eea71209b7c264291957834aae6d3675769fe92bb1e2fe2a12b0517f97c28ca426043279751544353e07392d0e1bb6d2e66ca4567a6dbd84bed92e6b8bb922e2ab2c9f2e75e70ebdec017274719bc85cce8d57876eddc7494c0de9d387dc80aab78621b69898e28ab8421d3e2c1d576b43d849dd6e458a810453438e60dff1a1df6d20c3ecf7275eb681e04bc9265c8c691f582419584e461537a37b9be8944b712a42a044c0a4c9f315a67580d97ec350422e8886550b5d9856ba6f5e1e0ae633cb41ce61a172e6a8f4235ff2c66c6682903386d9f05707ad6f1074b3469d6931250dc87cbc04b0f31a0ba5a053985a4fe321e9f24140a0a5a491a6d386ae31f8ff0e82a09c9a974852dc3262ef5417d86540f5c7393b0d28d87a9a9a3f98a00054f5a9e74999e75c02b37cac34375cfff1f4f7a75961a4c8ff5f7fd7cee7d122cdc46ec741bfdfb6c22835620121f086c8d76e18bab5f64e92773129cc0dc6b1bf97c8662a98c203851c64d520222dbde844a1a419069e42942a4040dc078d7c9019cfa6469c58800b7ae93fd2a7b69e3678814e2daa0bc470fe8afdc0c67cdf754462e0890b25602c160286071a212cb92e3150a8f6e76b42243fa2bd4407e4aa23d14e99edafe363bd443ef3d6088943aca1de6bc992eb9e1342a19bb31ad2b6ef257bc61744a1762b42e60b38492847d8534ec41ecec9cb955422932b216ff064c094584436176df17b9cf23241ed57ace97500a841f2157a1a0b5c67197b52b94810dae4ea9befb2231b3302ce6000409096fe8b112ad07cb3873269be7ebd94961cee29fc7cbd3c2287232943cf853d7ab9aa8bb5fc203d49584e2910d5e8bbcfb35b453e4f5c808a3f8b7d08e83d0f5dc7114aedef1f70744dabade1f4b5b0e6f7aca9bd8f476fdfd88661a89373b8b1b0e46d7d878beb2dc55ad75d1ac1012d7237e77c373afdcb73e520878864a31dba5c8070d244880694003e47af15acee632f0b88ac7d773b3884318df918568a14b012e62a4d8cc758701a2af17f03fd5835424e8076544ef892201335ce191f06440f99facfef5d0c079cadee46943f71c98683e87549dbe214044652a84ea501c153de9a9ff25a13b278cf015018d33f4ee6574915522e3a0bd8e4e4e1dcc77cbd7f231ec4fe517a0c0f9f781a503e57dfa1e9e5b5bb040702222a320168dc2c9027893020971156a92fe590998633ea7e74c3815d7df8926f869ee0654d4fb483a4b3f26908f531e496df27c2608d70ae9a6a3375c2526d839c6c3042e29c4aae30b6844d97cae3f43700131e98c623c94cca732b0fec3b58e8ec9ed21587a66b4af545784eae84aac49c2150607cfed1eaa243a1e2ff74dff7ba5ec9e64918844f7a1788fdd840c08578f929b243f818dd34b91a61dfc5c97f9711944136fbba3e8bcc615dc8712b0abe9ee1c7a341e7bdc4efb48b6f5bd6705ec73ba8e5724810de01899f1f80af8049b902a10d09730f6d8284bec0930a9641e03d649876fad16bbcf94450455a98d97be0f21154f18978c0bd4724290d7394ba40e9356390b47452ea53ea15e534a3d2c65d20f3dad14cd159eae094187c1da3f9b4ec52810f3ac1fcbfc4dc1fc1513fbd6a28025b1a9c316eb614f397116718ff996542691a7e2c42f8a215bc228473653a0089af04da8431d42eea11e1b789b0d74c572d34bba8948653b54194da5b749e545d97f00c462537b96aafb7a4f257c3338a08a4228e420fc26decd089d15348cb3292a91f683675f33510916fb2be3d8874a6c14a6e167808788b54df3d0974a2e95a69870b68970b65a7615b4eb89f02a331025852d18788db5ca2561f3d58f2a12fac815e76b9468176c598796407bcf61a5514a930165b6543fc4ff58ac22d8bc9ead17d1df21c8539a394cfc36cbb9a1d4bbd5006ee9e30533658c0255fc4eb4471d1ca50e3abd7559359f17626676665c04575e7129b5e051160143a0d8c8479705c8730aeb4725a06909e03d868440e39b752150f09ba67c8423a5888c50d26c5c229af2fc38fe030a38815f2602601188e542c6b3d19e7442895c4507951d384da6da6e874792768a51ea8ad01b671f61c71637c154d3a3e21482762b8468160e1af57a7e57391c48e8966fe17d8a1ec84947f2a7424bc6ec867f2c6984044548dfd4b79f01a26d87c74d4ce1bf877e635024e29c69b0b80a4121bc7eb1344f1a57f34436c0bb9d43a102a1b8c13467f16f5b7ff05791650bee568dffffd1bc60ba60ace3c8e23e72dbd019fadef46aff63a904aab496978664bac4d7e9d3545abbce86d84f2932a04da6c85c0fe70ab232925c8362860f4292729475fbc7fe9e516e88a37f1d29d7843fc3272b190f2e75bc71be60da068a9d6dc06080a5a930cdd29f48f63be1ae89316f92891ac246ff919299209ae8887e312fb50f0e7a20faffe6f5e317ca8e45daa9904b5a4d050e64746db4bed2028b4ca68ce53ca5ad0183ccae3b43cc2631f4cf3ebf2be8003a728004c7e53dc742af4db6e99efd7e0ec811e1ed6f0bb650b0693db9a17ff6fb3900ece89a1c0e05c2e813597d0e2ff881f826a8a0b006ed245bc7cff23de0e37440b5237a9b741fa6d3121bb127018b8fb1cd2cc22cd791bf6898ca9d1852510334e4e921602c501c7452bad1fe26a5919a5e8657ed4edbac2d5f6fc6925775dafa50669d79c222f0ce433050d88d5f4b113a49438cb31783ec3944ab6eb356057d022e6dafc3ba047c744f83db989170402dd73a989f9b7b5a60aedc73cb3567eeb9e4cce973ae50da5de2d21638d5b219d26c474c356c439d07f5a4f94c86599e05c15c5db1f5ba07aa9fc07567fe7e6e5d37388161f99afb404e7c58b89eac4463fc1185f21ce8b00e5ed80b36d2fa0403458cec5d7aea7f9a043972cc995b8e39736c372f25606112128e165cbbb0c2ccc9f6ff4f6c87d9a28cb2bdbf0cfea5d42cc74176684ba35c068e4bc1251770677be1d002e8bc3f7aae2566408d32e7e28d3fee2ab1439d8621b02524f44485b529f3507b3d3c9ad50c14f06a2fcf85482caf60a736831ec2db16aea7a2bbe3e064520aa3dba5069d62ac7e616a3efac8b54f6d14888598eaaad092dfa632b7d485023f5c74eb6195dac286677282f7a278cbb035f949483f9d91ca1e139dc5640c8c3ec2bb0aa0b165577b137dd1dc16f0d3c814f856c7e1fe3676acec32d749452000c42d455f6ac36971ad63ee3543feb2a257d7bb4b6a94a0081c7a5ac03533fc374dbffa63c2ca262842ceccd138074e18221b1afa593d4ed9e9fa23f7a6901e90aff8387abd2d640641ac69a0f32e4d4ca9e7d4cf8aaa918cdbc1661e9f395c0527bc7e521c7c50619b182d5eb3bbf23294b60ae0918c03aa26de364631ddab12a99e6ad3e5ee0d0a025c2aa1e155a698f7801f585e4239acccd1ab8bd18826e6d896e716fdd70c4ffbaf41a158fe6c796423b0affedbff5043618bb8c6d7e66d5bfc51e1e4138fc18c734d30f2f970b85df61db5be6b9b432a64f0d9b4403d711e7cc6d1d8fc494b71c3d718a1b62d0ddb92ade8d17dd4781cc1e573f81d569c88943ad2d3e249d0ed6709de16c7f7bbf2cdd68cbd9a681878d04e07f7604e1b27500d4b36ccce60c9a3f3e1e2d632d10600306a9598d4c9d6472a8f5b626f06852e5afe0950f041228b7f10f4d172938ae14706b7d7205562761a4dbcb1dc04974a8226d4e93298ba55a16d06d8bffacb64829b9722a870e00b98a59527e2c4d983dc1bb02170f61aeab9b3387bc61f53245b9f68c0113e07d620b6a28a44969e882cddf12a72e0ea8403100c7a706a6573d7e297937bcdb44ed69dda44cbb598e045e251dbffed929b0116d0ebb56f2271dc4b83fd9522b8656d2faf01679c9d9832b0d10d98719dc8ca742bbb56ba34a7d58fe03fa0f5a74e7e9b034e866fc81bdec3bb3372461c18fbb2810e7f733e1cf8afdeee89eaaaeb87b0643fea46ec86ea1bd44a1127dfedf8647d4acf9080520cbf6618363475afd2b17e5eb8e02e44feb9413c8df575ac9d0b8be54b8f6e2ab0b120f9145900a2ceb0970d23a8d546a35c8e0d4f8c44775d2d7fa238e07a4eb1a1c7b5344ceeb9fd5d7aa09b378042bbc5cbda2d17ab6552410b1075e1a279d1b4a1a36970cbf98226c9a0399747574f7e3d69c4b9d30976d73eb797b2c7b426afe9fcaad5b2ca2d2c0f5f3dab558bac1613244b8dd00956228adfaf492cdcdde0e3acf81c2e70330f7a76da10b8dd145b0e6fa2d924f984134061dae9ddaf3ab0e7fe39935018c296cac78aeeca07d3d9f09f6d5ba6d5810860148531b97929ea69188521e5866354c62be878e571e7aa81d5b447e49527bbb06d292f5b9b8dfca77303ccec0786bce5639e0ff1c6687f60bc01a5d3433686df04b0ec8e969bfb78ceedb6d60be3802b7fda8ce6595a95c4f62d0bf35a500d0b01f1e34d0e09d839231f5ad9a02e9e365a56f2c42c6c491e9b182b01ceac363abee4a1645ff555f3761337179993a7017416fd3c8737395d1c98f4509e1ace89e4fa05fce564e25c184c62531e33d5b6e2388bbfcb6bfa5d5da6162e7f95a7d5bfefd8528476da5b5ebc78420db6fa788c78c45941fdd802b36e38b014d437a232b31f6840c52c00eda760b6da75cc90a841fb3e1e47c268e0688b86417a4e0144f8d6bd557421b4d094a2dcadb418dfb76f16d7828f996ef081fde19e3429cdfa88d704b8d34173efcd294a5379e8ba4ab8f3f1f23f74f07c019eab5b98ffad45ccc1cb82de5a15501d6ff9992daf72a89aadf587f036dec88b0d4df57cf6f94546196ebd0e48398003b439e17f83d06fe844c68197f7ba24050087d792e945d47a06995dab4fc8546956915aa1c6629ac83550db2b6215c063a14675ff219df0e95502dc26a7e8e43e12b3b2cdeafdba7c7d20173cf146aad41a3f18b26a026592bccee1a863862249b91e301b1d980191e40165d77b324aeebd271ad2ef992c988128f7f340fb00325399a412af87da620a080d7488206610150728cd292ffd9013df0caed1a9978a42606d9d24860910ede716044b845972aeb50fb6417a4c95f51107b10612276cd1d36331447fc28af51df1d19cc57fdff016531c4c133f7d738de7c3f01ba5788c7e3617f8f6b25f5d919bea75d8a926e65a2eb01719b5bd92edb792504d2b78638691f44cc301a300294490cafbf82cdc0f35d54b426d1eedc5a2c92fd4a44b90d9df014441bfc9fb2b491ae521f862d8214dbeea44a953b871e55bd82d3e13972c62b4d544e2fb59b5ba8576d1df659736c8b0456929065acd4eb8d64537b18a6b738cf325fbe4a1a303fb20147306178a313cc58bf8e68c6fb4d0fd854cfae8e54adbd37d74dcf119baddcac9f0224a095f3661c5d22b45138279ba0d272e28af81fefd9e0c3f5bbb1f493470805d4d7d14d257824605836dc3a80a3d14c152e9eefee0ea3a64e64a6b8daa8059c18fd9254ab907fba1791d439355dfac9efe1129a680b81f6f681805ccff7c83b206a3ecbaca30982b380f2afb295f4b91d4d51572904bf2351f8253e68c0444cfc3e443f8d8bb0580c9eee792a973462750c6d6dde000a6438bf257818e8d5b5afa60019feeaee2601d39295df6aedd2f4c9096508f50f215e848dd4c4bf2b0cf16eac0c15f0d04009f9c15e9b03abeffcd505e7c1107856e221fd83e933820017e984f7ffe9eb52aeda30cb3c5f129dd2cd04e743762ebf33bf0633fd051f2729ea35c2ac412cd19a7e918a47e7ea8246e62ded3b9a8aae762bfeae1c7ea1167d44e49eef547b1c85cf538e0ccece7c6706f979b27c64e1e0758e892818833d344585a03c3e8b8594897a6a3e9aaed6f196593ba2364d8be5bd0741e6ddd3c094cc2e0637b412524374419f8b51ab49b4b7fc9156d0e6409f159cca4e4cff3b980c79ffb63a852cbaf1819347ac5afc8414b5fd5cc43582fd642ac16961630306ec4440b19b440fc08928e123e4841295e1132d806ecb1c45f74d4b2ab75389b990b8f6306d53c378c596da5f389f8884fd4c09accc814163d3fe6d5f018b836e4dec683b58fbe1035731e080b09f995248f95cbe6dc0ddced1253f9cdf08878ac5681c3e1d2357a27c7cb7def3ee2e5a231d7ccd31e0c8aebcd1ba3b4b368800ed8d7a6d2aee19af9dd193860c241b7edc13f60e14f1bd9d1b5fdc1f72e76c9db5df10a6c6e6277a169c8a5b339eafa5dc7035e898e02f1a9f9dea212700d2e34cb005b292dcead4522576a5a7f394f85b3dc2cc0756000465db1839b520897831bcfacb6657942ab49824806707c5ab26f5a6e325a6a9b7a8722bc7b33c542eda04df16265851f7661b26b2540fc0467ac19f43aeba806a0cc535c62d82909591a3b14d0d74546c51fd2bbee169352fb3eb2444c79cb23f000ab8b14d698b7a32a19defd97199ed732c72cfe1eb4e62257d2fcbbe5cd0391f7bb884642ba55684fe398fef4394d67eddf7ca0b06177b9810cb6bafdf429c4bf10887eee8296bbb9b5e1cdd32c3dfc5a5d7460f70ebc070d1a9f0178edc7e7b27d9b834ef876d14aef25520a8fb07ec7a83f0c2bceb09e43782a4375ece6cf8539177ab0903003f5ebf61c0e4c882a971bd65619ba9a6ef58e9280ee01249fb29bc04ff29b2ac56abe72542c5fe231db2fb55d130fc418584b64492d0095e367f4c0f72acc56340ea85494e6bd13cd3b7358165d0575432a3a4c53e1585954d7a8591c3a4de1e0e91a24771e20d04cd24af03484b6a6c10c89882d10e8fcf5c80f5b493176ba00cc915ae067fb57e90534c52bee67b9bf1565f3cd55e85cacad0c7ec43dab4dda2007a66fa5571687f0a2c521d168b0ec6841f95d528e901edca89089c4878700f4b5cf03d71cb6407828e89d667a82587b797c028466a97b35310c4962193c6895a77e37923c5f9b0f9e596d9cc21fd05307cfe4c6074683064763974aec683322bde27d9941e55eec8fd459edd71d5f4d6fb7915c28859a0031f697d8aaaf56e0e3e906c98ef64b16cda0c09237ab4a8b9a774b7998993d9be037330b740c035e35def4b41c4b7d98a75891262b2e9674daeddea685fafa7d79afcd70b89292b1c7aa8b76dd2b528768d7c971d7761e6eb95a97e6961b0e8d41394b382dbb7240df0bba6c5f857c5e75b2415c18886d2fa0b5a4688af262e1e3cb5b17a75958e5ef4143554ebc9137a7362b4b76e2c426aa7c8e0114835a90d983b98b52d97b6535dfcbd4db2738d724028d5c8cefb8bdd9782526a79898f2e2268c0447457591de00af2d64afbf236a6020fafbbd387fa08b039def54f836f5f58f3199944e007d281a867803650d195a98ada56498cf2a101acecffb59cc25b3cda6bbe8537763c4c54a39c5c05a1dafd19aa95e6fb29209d94c59fdf59ea448d0c761688a84fb39e105d03b0456826ddcb029f7a64f7709970f52909772fb79005d31526ce9d92ae714218cf0eb71eb7ecbd99e421da043d3c386c8db0d6670c92f404e0fbba11fdbb30cd0a08c098846823b85f2ec8ce0a67e29f5c21c6d4f4c6b714a656e41bae9030df810a2a0c5f8519201fce26abc873b7eb5e526f7985bad8aa3d1d3a267a445c7a883189622107311081588ed699bf89f02f94831cd9dfa18cbb38daa65d84129919a4f3163094d1853d21c84c0428b804346c94760e48336812bce10063213368069cce9c94e8ae59a1fb2bb5b65b26b60f0cd6405e97c2469acb8f05cd13e1ea6c9a5c1ac686021cf00734f40409dfab21b068d244aff42e89ca0b4b960ef8502fa7dc0c278612b8778c8b540b10415c88abf43f74a465ce0959c04e4dcb19bf3b7e564d9ef9ae339fc63923454804b9e125a4c9b0880a52551eb7d1317322839203abcb7a268d96833e95851fab4215fdfab931acaef0a323e40e05c13c3dfc21c1b1b336462aa12022a566a856b35a6d12993f78cf98a0afa8bce0e513b6729919cf20753b17e47fc63d6727bca98aa024daf9a2731277d7bc761e4dd3babc0430d78fa6c72e4dcee833e6a3202858769f5daabcea0d90697ed80da0ee7f1272357b5d96383624395f942ed1210dd3963b8e291680c1b451149b14adba5a8be2ced6afdaca026a37e06b4517a40df991fb27dc32f3462b4bbe74477be3fd2fdb9b35619e9e244a6443a5a83a721dd3daa354817ad240648476b48eca3bbba12f4e8027ced059c8e3e2eb79ddb8a25f454523fe3f90dd9d16663e757c7f80d9c1f62e99083dd4a876ae00e7b298f0767ae1bdeb2fb41cd4eb14ddc7af6238c34167bcb00e791358aebbf44f3c244d357c1c8bf9a942ad24020c343a16f520a604b98b8c61f780353c85881a3a80a6ff053ef6d7e6ff81b5bc4a53d8adf204e3026e26452e528a4c847b1703e0ae8c44da1efe6e2645f8b58bdd516aa4709352ac8fbd19e55e86d58735296ef28e43ac2895ff1fa224e59e0f7091da529f006a4168827fc33c8270dc42741ae1509ee16752c7f1a88b52125bb222664c19bb0882002fd31db4d367b0bcfd54dbeb86e92dc7e24118145a0918b4b223e8f1e11031cb5993852e12948909b94e649bc4126c8700bbb811db3dc0dcd9f65d6f1be2b6238e8bf76bb726e1594f8f1c8e8bb7b93eee5492db2a0289a624f3d0404a07ab2dd52465f8a044c4b99d7cc2d8c9d2807a669e1bb96027d35a6545ad952c6838ec595658998ac412f343a06f7b8af4719dd790091989396a2686f2e24858ab494152e20f3f3f2e5670fedaf34a69a42793adcdb68caedf1d18e8f5d33b10421ffe10b647b68517ab95bab5c2e850015c52db9c0d6cf7cac580a4a5f9ec34e46b776384aa54486f60096a27804243b4b907f134f7e814b562d1b6c3e8bd274e4200df1a2e452bd0528cde09c0d69be642e3d08bea47b13948e21668cf3718639535b4956c8ed23db5ab6064e7890c898ecd4715a775a40c009d810c0ea6eaa135256dca7123632e95c89327769d662ef098e5d468d3d25626ab631f554da4bdfc2cca9ab7b5cf5ef6f5030e7f29e9d2f7883f74532f3a0b723d23845ed450ebd8a0c6e33b8938fe471dccbf99f07fb661d7e8d3072cb6bfad7dec45f2f183408950325113ef36486a0b02db1d0030e616dd8237401b3782019854de12274f3696e4415f702df196fbab9017b3d4057b80575d2277dadc62e81f77ca163f04de807e2d661bbf424139f20791526faba19a12b0db8dc8c7e4605d9f683a06ec5312db33b54634815d0ddf24ccaebddcfe95fde785a2803a4286ede4c6c2554df01556af0428d245bdb8b5d4720d3fd009e31b1a8d45fe0d55829974cfe730eb59947977718542c3e4e88602344553254e8826253278f4076eb94c754748f36150af24d03cff01da8debae2946839a79363610f3e48bd1fea70c47ad31679a55286178272469980d6987065aa481cd7a91ae175e6680bcd18dbdaf17d654346041045c9515b0da9a118430ef7be22a1370d3b20a532f2e869677636860a2c8370c5326cae3fb7db4345710de9157a5df64a0923cd1e2dc3b17046b2a602b5cd46932dc22bc3c95949dc762cd1afbef106b467c089f0caa0d95bc39ba58c7df01e0b9b48d6dcdeca400b6787ea32385bfa84e180b6d570f0f22a465a97659d381810b332d05a9cb561f1a29b140308ae853e2dcc4c5ced6c2aed47f44206ddbfab0c4aa38bb03ce1729f11bbfe192e9d314f7b69b955e7a4bc91a289b8f7515b74d3930b5688ca5cb3fb0b15e98839b23025876cbc4e4520f6a9ca50d4cf9be3a538df8d330f0736faa9a78ab5d0ca90fb366c84199b6c64270e9be15c4e2c6919ad2f2d92c5906d210a0a0b4b4039bc02c8b8702e73e447d2f22d403f2a4fd878b47c19c5971716d79707a78ad3ae3badbd4416dd410254af6022f400a33690c7a9a0ccfd0017fcfa744991586b04e9a1b5dccef18d7074bb9405f8be9bc1c3226479b892057eda7932a38822af2eb0025f7683fc0a882c471958e0c79d9d8518f12a39980e58bffcba50006b974626cfbfbec3a01596e26fba754b3a39daec18f4cf965fb8ff87e1385829f2f002d0cd6caafa1df1111e68ab15e00a123e49cedd498e020afa857dd7126060b400d1052bbaf02a0f80e85f046bf467d356b80ff9c4741376ebbd62e58716362e75034604cb3bff0a5f7882aec3453fff49a412172755897af29140a13b147ac902a475b88ed3621e676bb7994bc397700e2e7dffa998b8f05d4da3961e8edb140d39dc805cf1d0965e68c573f0f5b909a40bf8a964f2f27f50081d16d2c677bc5f95bd1b43aa896d8973dd24be3d14f31e808b79777c276650deee6c5777ea680cf2fe4909d6bce7111ba845dda920d9ceef48703ea34737a213132493cb7185d96677c5b3993e6ecc5a2fa0de5d4638f7cbeaaaf036b3561c250583ef3c5d90da02f4be1bdcd8fd50ee252b2a31a17ae6e052602f3e8b5647e18ffead46a98d6b4c3a7e0c6919a99662b7995a562887ef06175ae487c9592daf65f05bbb1c328127cd55f7a29069892761f2c426497cb75e5e3897fd4950421690d3efe9d607f582b989537c23bd500c2218888ed6e46f112b0cefffdd44784b96cc9da9f499db355e8d170df50e51df7bd32074c5450cfe4fb320802139703d1d0d2ce1e831f2bc2c429245c2d7a375b0c1bd4ad60c47be99590dab9d9aca001c7de80e5f913c60ddae758b25012bb6900ea1d685549cf38d7f696b5cf17fce9175e0067ce4690dbc9c110235729ad81eaf93c6fcd91797535f70121cfa5c8ea8ce71c2e964d95ac85765d1f909532a1496525be48ca38aad79632972c196d5fa2b7fcfaa93d048e5b0bd3bbef08e9ca839ae4bedc7465b011799ed34bdcc592a593e844f7396b7addd1d415d06459a5165fe33ab3eb78a0607f3b0fb28234ab26b1b09518fe59ae56a04579beea109049992c4aac0d8c1e697a74f7c1ec1a2cee5f396077fc6e385860c90563cf81f0f34fc9a998bb37de8549740de471b2b7ba4eeda80aea112c23a8a535ade0935fbd01d6428471a1be8ffe2c7af43c08d8e7c34daeddbb8172aa40d30e7370ec3471079956f075b8be959454cdfd50802f3388a5b54b9f4b887a7fe45f8f76dfce8954b665e1b2120b5e04205ce4ce4a43d8af38f69e243faf48af16c5601a61c9a4af6795a4cb0efc93fc36f4b61bb260b498172f31503661dca927eaf3fc815333ae70fff30a3858538a8cd2ab7dfbd28fe7818e56d39e13a4bf835dbf0c39009d454b10a1002697fbdffa107209694a7c74278fa534094065eb6768297b4d7a50424d2cad003150cee0c5b7d8ea4fea0a6192599a5ada0d531ea734edeafab9c2a23b67082f6933118316c0c4e81d1bfbc350a7cd196693d6ef1ce6d10c751ac1a7986ab94a25a3b5a3e411470b6e221313ea5b450659860e3b682e49c2bc798bb8e5a90bc15864882d7acc52d96f3e9fb33cec028c2cfb6650a9aae72e4fca641eb86be7fdf514db6bd2322a108a700ef3740f5e0e0e08c8ab3ae725367cf81522cb78597baf69dd316c2752b2e6655bfaa4c01addec637f2a88a8686920b68d022a04bda90d2c33ec66661a2b18a300e0927464e139289121b162a83134ac19120928ecce3095917203b101df27e135a0fe8da2b350832d11b4debb33cbb89c822b669d73367008bc4f623db449984e5627d85f2835f75c5a820c4d25257f9ba3be869fd6d654fa90916b2825829e9253e211a7d0531275e40a35328e40eed86b3dc1cb9c282852f57bfd0510477d28435d50ed77f0708d769af4aa8dcd4beb46ac9608f480b70bd08ae884ae060500ac99d3852afb9655310f1d794a350580f3cba2b527267fdee0a844670fe5ec589076059be2655a238a28354f943c41c215a81bdbe4df71aaa18eefd801711e35f34ea2454a36d9fdf7855d05306c17cff401559830f1576cf848435a97d1f32f9b34802c8348d8dfdd3d27724c23bf26d4000d4b0aa3bdde6915afadde66a2c1a9677926aa76268e3d90f9b8128f730ca08159116bb3f0849dcdb85b7d6d2201490a72c7b80052b7227f2d2f7ed656459be3d53b3dac3835a5ef7aadc17ba5e70b54efab5cb255cb341183d66d5c4ee45d610e4027a1caece91b14f0301d56b7da585487f4fc43688817b2e30c52a727bbc316216a198aa5492045d8676c0deec3733a2ac0023053f1eeeae4013342435b891eaf2d55aa7628685cc8271fa07907ecde16c7b4cb154010ff9ffd95d95abf5553c8cbf70ce938674cbf67c661953a73db61a05322437a63db0bdd2dcb712a835860c440de23c1b5b75f56af93d9c9c14512eda0f9c4da25c928b894cf32beb155add718806cabf8f1d68c0e1e7ce49201e2968ae0efedac82e77a4c7bf5a4e7a23037daa76d10fa9a2ef6c5409e2c8b16cbb3e2c1ce1c7ef65388cda555b1b778c5829dd50f19477646fca7779d978c3e5dcd30a97d90257efc60ac121a3d83b2f87e177899f220217497020a140e56741d37d402625c329dbeb997c906f82a47409b4b2fa534d8edff662b2cbb4180b8cee6c797265724090b01e7f381de529c638a5dbc2566783006f0ec80ef592e15e9ed9efa33bfd5bb0b4080faa753a6bafcde679c5611a2bca7fb20e43068560e72a6b0235f2981211892d4cf3ab8b6b45046b0e890d4a417b1bd8db6c505e599de58e604d8102a60708d3dcc913e0ade0c18f9079b2141af0d6d1593f7cb16c780217233c9cfc235c6b122bebadc96d27d7c7563d69200c23929f58c7cf521d2c7162f278fd150c28cd1a3a053c3020838f55c577b5dca56963d1d55b1b4f74d8fbb775d0a881ab92fe67ef021697d52b902e506a2f79ba2f42c260262e2abea193622bdcbd2f328f2751ee44633b24c8bcf83e6ad91b2dd3c710fe16745d56c55a0fddc8d4eac5dced01e11038324b38d02f323dd42a8980087422c29c2d0487cb92e0be9a43fd52d3d90fc7cd6a848ceaf5e1240d53b79303a9bbd557d039992580d4c100a8f4d103ebb8c48eb8c874b394dcfcbf03a1d0fdd080292cc761e5b987ff65fd382ed5e2b0e324ae35de63d2426d47304d5402c05d4e535f5b652061102057c565faebf194ba9d6e032e508fa80df0f3b76dc3df3510cac319f182b3e6eaaf8f227f091cb1e0f0fb9217d6ebf161853c336ea97995e16a62dbf2aeda9321ba81d356c81b04d4bc42384b52eccffc67aab65acf2161cec0e8b3bfd67a60b4bd58408191d5bf01f2cb786ff6eabcab6f0627e09ffa1b4ce566a37c2fa720b5eaff9659df489d155f5632a382daaa1e4f32d228ac243cdf2e9f78de5335cf2d76b7896be639c92a999945f856b309543bf4d65e28b79f61aa3abf5545b1ede367ef1bfe2f071612af01ffb862f2d1cb2236a39e429c671f26c3f356d25f85c690af76045f2b798aa2335e609b611dcb82524d6c67d68e5f4029e26abf7c07a6757287bbf18a2fe489f7dbc07185e15243f18f274542e6d9b06b2c1c00391d06065812915a8d3b30a309dda1b830befab6c2e9dda9aeae4de82256cfab8bb03eb64a10d087e3acaf79fcdad1b3fcb74a18159a1566282054c28f00e67f3e38320cf3645108cd94dccd3e8f02599bbdd00a2db163ec112fa1e5d83b6f98dea2088267af0498ea179984d3053bd9c0026533b4db4c7b574059dd3eb70ebc3c130b53aad6bb42917f6f1e6a1824d67e5543e35f8277589d1e8290c9d64a19d22b388535282eb972f9b343e04d5668fd963a927249f9ae1883d06d82a26908607f719da5a5e550ca0a523b17303da955ec2b1a35513f9cb4e886d0bcddc7f6e79ed37cef0d1a95204cd40341dbbf54c818409a8e6c06859134ac4f30ca4988283a015199c7c7c78a25d751a260b557030e544804bca37a5017122a2c0c69d060b6487356b8651d047bb9df9db64f228404d2d9644bd0aed5a336d5739e9075385d3edd9468de9f1ef61607169372af48c17984351cc81c4ef1b50101280a7aa1110e0613b51af260386bd4952f3e25567e96813b7c1b90f2ae3b702404c770b76f8fbd661a75aa00c1128b0836185980b680f03b1c84517124cbb3304023394dc7c4f35b9a1ee012ae477b33a40ac4afeb2f0b39e35906333ad87ddb03c7e03bcdf8e527d350ed33123a06814477bc9c9adac1343140492b18570a09e1ab72f1da9540a1182117739d666109436dba31d00382b76ecf1b31834d6c743f14e4fad4291789734dd406e0d3f1e00379c28944c5a225b61ed4324b6cceb520116be1724178bd4f0c87b76ffea265d8f00bbad76a591a3ea76b120aaa31e2e744293f90e90e16931af6687b446bc228f90e76d2483c40ce29ab08d5a6d9086f557dccdaeaada95ae91f43b1a224f04496ae6f1079e8176c84de3118533c147a7a9c027506a7a626320be5256eaebd7e7fbbe71c1cd989c1021627d92ae368eea791c336c596f52e8a4b67638ec3c22a496e9cfdb69e40d1f2579745dd8e9e908e14c0d4a33eeb65e29ac48918afad00aec6ea8a68a6a1a429bf557f4a665b3553bb7cf4a2299b920d943396f5046348ed7452a09ccada7a1829077eac6cb7915ac2f086b5a0279fc4e23ae5129515c681aa68342b1cd706a4690d9816212e96585530dbf6f634f68a5005b05eb405e7bfd4068fb1886effa70834f4aabac88918d88e75837e5adfb0bbae824bb646ddde9617fb78a05d48ba0d8f352e58f0b3ea61249a3b557dc9d8fdddb2aa82bc80a9c4ecdac5311749fc2a6aaa6c4b058f2df15d3d4826fbc276a8809d0e768a221542f7ab13622eb3fb81ce4b9095d096fad245352ab06bcc836f9b4b485d4c575aae01e1da4de73d70cb617d165a216a3fce01e530e672709e02fb67e34a4564c67935c7a7df3503026d14db9ee7662fa587d39e3c8126541a99ad94f2ae237968304a26d7b0dc83e57181923566d7f3c95a08e971b8c3eca87f5404189c414097f3266385cdef52d55121a572801b4ddf3f883c1c733dae1da289fabcd439a01852577d2c81c565a32ae0c28562c50e3a480b308443bec37c98f056134d1afae24ab3ab9e0bec26709e3a7db55a4bd16b598cef2efebf5e3f46a0e49b056e1444ac0c4c1080479c0e5c9c3a7752bfacdf5ef7f7bffadfff7e59bfbdee4f35b7d6da9692674bb96b2ca4ed24bb254b53a35b58f007dedab037e05b569ccdb73eb3236c68b3c6acc64617f1a703073b52b60bf20b270d402c976d95b3568fea95f1eb654d6969d70e16242c76b06092011f19184006846460869905c09e41c8008b230ff4017dba575f03fa5855833eafaf580006d07005c6cc8f51ae1072450498f94fd3b3ed4dfe9acc817979a0ee36bc5ad42af0d3f0825dffbee6d5376bddb4e24e126b7a3b73a992f59a68dddaca7e134c0ba9c5e43175c96a225947c569e976ad67218cbe85a9cb4d59e61847bb4f87ec9b62f6b2bb1cedea7354f49bb437aee34fffec6a6b7df34da3bda232fdecc6f54f9975ae85e26f9b4c597b6966a7c43e96fa816cb5fefec94fc7df9158b7d17a6746e9e649608d8aa80686e2c7e99c0c41d853f605c5e02069efdb63d2f8996fa7f46cebaebadde8d66f6a2baffa9b95a04f7739fd3a4fd1d3df121429b14992d36fa6cccadd9fb47fd5212bbdff9a36fda04c0e911a1823564e0d0c0d11989255633393e3720427a75463e362e1c0bcd41c81a7175deb18463f7abded9fa45fbd76d28bc3a9e967e59bfa598c9ee2672b3a53a229e925f2465d9cedaadbfaaae83de75b8aba2e0f7db6691ed36f038926edb7d9f7694ad4fd94cc3e5fadf769d2aca9ed507dd5af28aa4336a317bdb46e7d49d4e6f534650548347d67fa69f56f5f3273adfd9acf65d89457b6f5cca4f9a92bc5726c6a3aa7748486bbbed44af4f371e75bfb53a3717a9577729dd2567e97fdf597bd49943d21f1498e6c98653205bbd2869ff20b7fd552a02ebac1f089cca4f59ab2f3d5ce0b21045e9a95e0134d29bb4f53c2bcc95b66167c729df8ebee636e51d6eb75e2e86ce209ae31d952bc26efd559e62b5ff5945f9b78826b2b2fcd4e73002743c8c95dff68ea269eb84090b67fd9ee8b44ad094270a3bedea050f7a94f5fff54779f02314a0a0d2819007888196636314aaa09f349e8870fd0a707f349119665594208c18cb22e138383e42f55bda5d995b9a51bad9bf52a2be3b3346626b732b6958dc4e4a61322a0c835aad0a982085f8e8ab0aa9a528455550c0e92fa736523eaaceed2acf859e6d75a7fe9ec62f4eee50ead9be5a8d64d3afdced7eef5557c8d6e45eb1fc3b860a6d89416e60166fe6bd26965ccd67e6661463a4c0833d6cc7cdf6239d46066db7d0ae5b5f06230effc7c2f98b9046ca12ebafd6ffc4aacb9a256f729eb9b60e6c95d5425392bdeb2222098a3b4ee5b2bbe81edcb58067726eb23bde217cc36fbb9691565c92c2c2bb498512c2ab17108b365451e1e1bc081ad4a31eb5ac3bacc60e64965ac7f81c16cad6b0bebdab98304b87eaad29585615489f5d7af15b6d6b504db2b07b3690deeb26d73663600a398cef0ebd1ef6ba6324c6130b3890b667a69ddfa72db941dbd65082b76b4a061ca4c2160e6304c28cc2712d05169ad8ebdf4e8e222ad9bb54cb44691bbb81729d38cadbb1f77c0cc30ece9c31b9eecda71faaa4356cef4b33337a41e3034249c98e762dfe9b2baea4ad48519a526d8de5df62ac902fac07e548e6c5492b6f55b62c651179a43af8c3037e3ece344d9f231cb48f171ba2c7379abdfac3e49fce8d27d119ad77d0aa330730903fb5affacaf6753faad7f655eeae73ea5064149c4c96117906e4bc2e4e3735dd68dd66d731867607ff6a9cb6b4ebfea5853db5bd3ebd25469af7e3e959d798cded1517172d8a45d65ccb56ee45abf993371c27ce52e173367aac7509a13274c96b956a234076673172aebdfbcf537526da284e162eca4d285d6bcd09c2e3ad59ee6ad749cd5d7cc19fbf544ebcd9ce93cfb17ac22894eb3ce6f327f9cd14845351a59663ec29da6712ff7ede3d855c9e2c48f91f42c263b743d928e1f3f64ff52240fa3b46e2deaeab57f4deffeeb2febc5984f22c07cb204f38912cc2749309f4080f9a4994f9060b6270e80cc2747e4787ee0428d9a4c045ee8109204c8062a661cc088113c2136fbb2c404aad0e20339c80106666e34ba64fdf9a7f8f3485f8f9944f508c706070786f9a401cc270c603e31028b550564b8fe9d3f29f62fdd0eaddb35393a27e9af7fbdfe722659efa4d7ca6b445db98a93c3bebe2aa3d6ca78657cfa29ba3d264b3419271792961222206114253a6c811cdbd5577dc78f6f8afe28e6131e0b5040025282046162e5386eedc7e85fbb4f599aac9b55fdb36b041df8cc3bfec524cadafaae202f8848f4995f567401245748c2ccce284850294c5c20484ffb59a755bfd12ed46874f200665e8299883ca094de204416a08f65e5eb3e659da684c0896d7d97d34c4fbc20415e8ac814452feb651c17a51462b6d752198b33a94b4b7c5b5fda0e9397bef838f1b34c16597d8db57f5d5c09878aaeb456182ad06066be11e244a984b22e63c4ce8fd2fba65c6b7abba7e4a8c97b4567eafacd76fcead9f5b1bb5b7fa375eb248438616d129767db572bdb0921a552c7bf3d9e48bf4f51d5947e3dd28e3fb9baf5b51f33fae9ed3f2569fad9e7ac9b7a6425d0fd505b4f2a51f02beab6c5e60c6936261b143ffd36f3987e3008131c84d476e46aceb59e3d7ccda775fd6661bf6b69d66fe2ea9d4d77dede391f751bc25563b2df727ebda9212894ba68d6321ae57c20eadaaf7faf95d6af9e52b3723aea7aad4f53beeab3a6576697e8a24e326bbba259e61fdbd2ec92d7ca95c7e8abda4128eb32a351cef6f5d397dce86deff9bfba6fead394dbe634fdae955943969c15f8a81bfd6bacaffad97f4d6927d75da6fd9523981c9b9a7ef5ab6f4d6de61db21c95aaaf1bcaba4c3f78bfd40f7465d36b7b6cae7dda366a739a507dd4fd13bd7db9ad2dc84ef99936f34b73fabdcc54cfb84bde29b38cc334afb97e2b59ff7acd199a63e3fff55be9f27a7760688e465d6ec639f62f93d6dcc95117ec71687d0b4c5a030019300056c0cc15e01d7d31f31194e6b62d1769cd477a8d3ed77b870e29c884c1cca3d1e68f1a6599c4ec9f7cb3367f9475df5aeb72f423bdacfbd67a59af65efdb1d897dddac2c93290b75e5ca4a55d7bed22a551326f32f59ceceb793ba7cbdb994e2bcac39f60401cc2fceefb2eadf94e6bc4a31e949faf5f57654cf93b4a98b667d79cf465df7b1db576a26ce36bd1d136384183362ec2004910810690033f36014225410818288643e39c00ecf09caa4d2246a6f5b9fca4b09f25244d7abae3401c0063062c474cc0176e468829903c02831033851098311661c6cb8f35aaadde9d5b9d3af3a533f909f52ab7f3fbe69e686d4fdbce9ecf8a3375dce2472e9e7b67f85d1d08a6619c54cf45e8f616fe956b93b6567995b0e95d30f742fdff9fed09ffcdac63ef37d7ec7e9f1339f279971916a97a5b5bbe95aaf28aa5397d7dbf448bff8b5aefa51397d9a324e9fde96f64f7a9db3f39b92fac1afd4b2765c7bd047778fec7399ab9aae6ebf7dd47dd495df18159da6f4b6a1aff4ba93666feadb43f6a3722e9d1a2dc1ee3259bdd24dfbebd2afbbec920d7fd21a38613c25c5899ea2539c681f2d61f447798ad2cc3a4d69e5a377db5ceb2abd34e9d9d5a729357a6d5c6394d42f95a23239ba71fd98db1ed94aefe558dfe9536a34252545459492a2d2a12e33f9a4d61fa79fadbff3d9266fc6696d35cecaee67ef5b1367b92a3afa5f3be547a7d5d4a28696049bde292ff9955e3f6dfad92c23f50f465999023384ddde186dee72dbe568f3c9045e454dde3f69ecae3e6705caca172b5cace8e058834f8ef0047ed2d7a80d5db3b35f5d47112ed349236b344201a3480113df8a96a2b9a6976ed65e69ea29fddb320e17511198359913bd2524358d5e9da94d9e49575959e5a36e77a65a1ffbda21535ffbd7b36f224bf1ebc74ae7916af3328ffcd718af7ef39562df729ab426a91fab0d6673399b7877fe4eea32672ead7189d94becca963973650b9d47763ece998da39588c430cece999f275972b9b4c6afbf643eeb5f993963254daaba56ff7a1299cbd95897f9485d90584913fd6598398551a05083994f93d6d57d6b2b7d558ad21c5b5f262f97c9cb414184f87fbb96fa37d75f5ebed26bbbfef6915e71ba95f6e79f2cbd3e7a4fae4aa71746d8ff15033d7afbafe9b3be8a9e9adedeb8b63daeecd0bd18e9d32ffefdae6f8f89c9a6b669ec5cf3ebd13393b4936ef66b5bd92f337df9ab34f3e9a8cb7fd28ed9a3fa4e8e6aa47e96f6e62b7bd3f1eb77d1bf66a43f55374269ce47eaf272e99cee123f755123aafaf6712eadb12856ffb797c47e7e4b1b6b308bacb4d6b726b56ee6a86bfac802faac689792d78616d39bd4460a33fb2aa78d2efbeb32bea6c9b66fa9951daa336c448199498cc2c606d850c2cfb92d0f69f0b3a2054d9cb5e2c7cfb2202a3efae624ed4315cbb20e2748347ddbfc4e5f756c8e76a9cbaf957583b039da511147bbc6665e96f9f598c7b7d6b7fa379331dda4917bbb75fc8aba5f42c9031879a079b85903106b78c1cc5430ca1aa53596c04317f0c0050b4b5bef9c95951ddaf2840af7ee77555e796d5b8972073398f905e91fefbe8d9174872677d06196389313677ecad38461a293f90541381d8a33a10f74941430cbdc057e5451ededd0861db860871d3b2cc1af52aca48618bcfa496f7b37c1286aecc499f895ce93548307336394cebe35f499c927d7d657f1ab1a42d4010ce68784ded4218bafd27efc55d3b82831c97a7559757a1bc216bd4b290e4d8f206cd1a37151d2ddb45c7711a70e1460661b46a1c31fe8d0063a7c810e5930338b91f82b3bb445bb948c4629aa5743071466d3e55beaf2acdd6e8eaa7fd3ef34e5e568a5b1ce010dccac8451e6e00166d994de390861863d659c73c8c1ccfc4ed68da4a1845958409f95fab1be349a79852554694c96b9cb6726cf3277198d8a188dacf9314a942537b7363b1a61d95bc8244a2bd49996c0d7ddeadb24c54110287130429cb171c8226705b3198d725858b2cc5d566628ad5ea9cb577ab1c49995ccefa44d64a5a8fa717efd95ca59afcfe2d75fa2bfccb553fac92d5bff565a7fe6f433faa3acad96cd32bf763eb2b0e0bcc8acac5c8f04651d353f5b71eb65bdb6be75d4f64da4cd28355d9a9d7cb2e45c72a3777e93c7562a4b111d62e990106e25f3af533691d9cab4d16656563cdbfc2a754808b792f24f72b35d5eb12b5bae5bd74a23dd95f2b2d4fad2da8ab22e2bb5d1e87ad56814715e64eab3d4b008e13a9462b24646a395eb915cd9522966d9faf1fea9fa65a9e990ccca9c9f59b652b7ee64b954657557daff8ac5693b9f2c2c279a8d462c37db46a239a3d15fafd7126dbddfe42d2b6f7253a571a6bb32be955e596c46a393d5aca3665217353241a50e21f95c8ed439cb47ea32a95cfd6461a959b9f3351c4ddeff7afa6861d8d3cbaf475b51d66550d6512abab1046182bb6e4516991596ef9c4566e5255ab63e21d43883add394b50018a390418b3298a9702bb57c32063ef902112753ac74945a0f661c6d60e61a4621438e284e84ec28358159eab523cdfa6a255a31fe67268ebeb0109ff891cb90601c9799ced426bfec95a1cb4dab9f21db6f7e13d9366614657fca3bbd496782abbf54eba7f966455db6bd2ab31d3f76a56dbbe97ebf74e76b56f3ad9439bd79d0ba3f66c28c430d2770004a616a2bef9fa448fd6fd06a77d28a59af7176d20b3ed0b5bfa21984f5ab85703ec8ab6f1f6c6672b46626bf7fba7ff2eadb379125dbd74ae8df6522cf328a5a39cd1aa3515295dbeb94667f475d7599c91dce7bbaddee956ddc8de907eda32e77e9674bfd6c6266627acaaefedee9c1f4bbe48966edabfa2a9b9d8f7345676a1e79f6e7ab30efca5d97f5ab2d47e98dd54f5f1bba4c3f52bfaf34c75ac959fb29d7386cd26bf6ff9575d5daa36e63f74f10752904bdcd1cfbdcb7d092fa7d13a9c9bbd17ecd6b8cacd7dee9da97fe63fe63fe762dcf511a9d5d46b74a37517d29b4ae147bac59ba47b63eb93990eb553f4e96c0810412d1952d2a2aa85185162406318841089103661e31ca18355634e5d71b6bb3579a64a6d00533df6c8a15aeadbfd3945d28b6ad6f0aa429ac3073eaa27efd657e13fa35e6cd8d4b519ac5bfb4a6fe5cd95c5af3f6c89ca13577fe74adfe4d544923f17a95157f34ba1ec9f5280c1959568dcd4c0907068905438484639353b2acd1f3127034a171686892c0cc2846694215ccfc6c261d4359ce9e4cb122c5280a21503cc1f5e968749a32e5d75a9bfd537594cb6b79699bed834343834343d3ff914ed0a77168685094e2340e0d8d91ae9ad6231c1a9a66b2a46a55d39e24e308321ac04fe512a3b472a2cdaad61ad9991133979c882810cd4706b6684a510b6c51bf9f95366a04618b421004a2f9c874a8a543aaafdb07f6484b4d99b95041d3b6e7d3977e70e7e314efc1fed38ac6295719adfd2836e5f610f6357134f6943d7e525167126118ed3169bdf2afabe4cc0da9ad6c1c24c0310221cc38a2e0acf8685daf026227cd210ad23e7af3cb8a19ed29a668d067f3eb61d95b662cd894ffd616554f6eba02871a5092c0025b5fd534265e8a4834a58b3e4bd5d744a6d4c5eccc100961306f74db711a9bbaa8911da799b1bbac2f5dfd54695ed32f9e426f6949a336eb6e92fa59f78cb356b6bd7272cd7cd2041341984f8ab877b3fe2fa7295532236dff456c7765949c15d2c869ca6b1f49bcbe3dced7c7aea546aee55ee2af689c3095de4dd6cbfecbcc4669cd68a4a252518d462a99b9b5fda71e9b5c8c149bd2b21aad3138d9e7bcb5a4f8ba335dd6adac7f39ca527f4ed9eea8243d9a54feca4e6f7aa7b7954ed32f56d3e8e4a27ea7e991369d17a64337300f826e3a34f3816dbdbba1853310de40518f6c834c9f7e76ca06f9a7dfbf997e1fa5eddf6cad1f679c0f64cef8262f79fd7abcf958391a59cccaebd6e10d6c51bfca599a61b2528c143ff41c8410a4a443d607aea01208415687947c20b4b047339bbdd6ed25551d678bfa5d392fff6be76f14a339382eb4be05be892cd96b9fb382d4f9aa7e9c479ac879c4e54efbf4c565fe6603eaa637263f2a8964f535abaf79f65534935eb3d36799bc9e4d299a54d2792fc7fae7c74937d1c53eeb374d2bad8ffb9d8ff6f8b3fe35a9958eb5f506c5aff4d3f65a39fb5f669b261b349dcaf99c155f3da65f73f4bade6199a3de346967f14158771f7b698d57bf79704527842afda32dccfce3affababf66db7676cdfb25d449ca509a13339b204c1c41d2dd57df368dd452ed4e194310b6951a46bf3ac9fd7a7d8d9b30d753dda7dac64aaf98515477d5a9bc536618464722ad9b1e676e7d3b57346694ba585b5fc501c3384893ab371f6ffe9ace593b5369fe638e58eb32daa5e4312fed7c942f2f6bceddf91afbf3af1b59d11aac22897f554a294e9cb95fcab2c7dcce23b6fb2276e3682582ba32499c1cc5b93b5f7377bee656bf258acd1994759938f335e6ee7c4dfd4bb31291bbf3356f1d7533a97c4dd61bcce6ee7c8dfdfad9266b0ecd896fbb2f7277bec6beccaac3d897b6fb227c3282fb53f6987ef18908548062be561ab16f6936ff7e55d12dfaa3ae89599675df5a7f4dbf966e9a6fd6da71cdba1cb55e93d7ea4c16bd2cebbeb55614652d3aadfb1675a35c598fba2cd4a5f59bb8652d6a61556559f7ed8e6bd6a67196b5e3dabd96f54da4b5d4d2b869556bc7356bd3e49477fbebf2f91b7d4bb36acddfa895026666c22828d0020e01ec40220c2bcbdca296b55f8af2a5479db7d8fa56b0029e6f24cb48cc272a29409ec87e764dceba6f6d7d9b56519b56514f45d5f47a5629567f9b9cad0f88361a454649c10b5bcb6da5f143b15a2b2d0a8860e63873e7ab60568e63aded36ea129d66008039810880d4bb710f504e3080fa774aba759671f32df65149574551e7d97b5be9d333d0a757260899808709745c18c50423e82958ba473a4825c84a10861290c13c67283667e2e46260beded4577d8d1b896f69e68224feb3d6e452e5a837f55faa6abb658f3245dbef34253d4ddaa17e57a2aca348fd6cfba535a729ad95349722e9b2ea3094e6d8cc653689b2dadf99cfae79440437ccef332e52ad7d7258fbe65a6bdc7cd4e530cf7e66f253e5b6b75ae4410b35d89718ff47c338f34560ffa79e85d6a4b0be1e6f6d1289fa4adbbebc76e6a2d692684df745a2edbe08ada1353192becafb3834a7fecdcb68bd96ebcfbefecade4a311f3efa5157becc90fa35463b89fb3609907d7965262fa9d149afcfe274ad3eea52d387ab17f6fbd35c3d50e8faa74796f31b5aa2342792acb7ec38cdcd8ed3bcf516214f40947519d821087bfa132a97dcbafbe9f8b03da3289f5fbdf3eca3e8357931da9ff9d9037d3ed26bbef5a38330013be5b761cc7c0e9523fabab5c3dfba1cd818bd764a2edb3a08133146efaefe16bb4f41d007a3df445a8a5a558a753bafaab4bbba1dd73cf4d5ede9b38f6d1df5364e8ec65c5a7369cd67269f47a456ff86d6c47904cbbe446b6c7d415440ae6ab56bc7da71adbeacd54d6dad6fb63e206f550b488fe207297652b82331787353b9ebe27cf8f0e1e3d9acc8aa03abd3ca6665840a0baa2b54426cf7291367bb2fc244274a08b92df87137cc90c9e64936d7565c8fab057ef46ac157889d47ec19ac0a2ceaa7d3ac9ad12ea9eb511509d52b8b156f30d1f9afd85b81b202e56d653033d1e93cf4a14a97e8f4dbb2e84cb43b93fd6cdb72f0eb3cb3deeda516bd4b69dd4210b675188a86096807688a7d1076489b39338b1ed666de70098608e9c6ba21c1c834bdade2444a134fe56dfea8b63d4cda5b4b327d92d364621e3187d0d8d0e8a081c1cc96091108aadcc0cf696612b51275cba72d132d821d82209a1ec14fdb202d7a7f724d7edd1a560e36311a61d482d1bf42972a17d83fde8fcb46faea4399dbef8bb3937e353936f3ba9bd15b33a225402b223342664526932920d5871418a99c549136aa9841152ff20f3d904de40705065416cc2cd2d4b6c72907339606833e3da625ddbcd49070887446c286806dccfc26f5602993ebaf6e1d45cdf82b98e5bd10e6b7a219565f459f472c83eda992bcfa0da4585cc517bed6e02bdb6a955e5f8589b3fdaca8a1e8442f335c20b85a4c6b986260428169859997e87810dc03ccfc1abd5eb7a730bf5a23577a54ea7ad405db80568057f09b1e98832badf5af4cd9c0b6da606de1d3af0b9471012df80237cc544ed1bb3ff3206cdb234e0eabb4a580713e94c2ea47ddc6a8480ad9a2d19f3cc3a68f297d845ea57e01663205264d606262b2009d3474cea0a3858eeb28b1448c255a4026fdde9465a4b60019dd8120fcd82a1d143f6d010e5800a60280a8801715d8615622067fa42eab9f59e6713a26afdf4a3d82f6d3cd07a19550c92b21401237242143120f30334b0c0e125a83440c667e32e32c928d5e24f6abdc76be8f90c1ef0817ccfc3c47b6e977e7618cb23789b2379baf4a3046873dfd72a52348e4f021a70ce618fd4d7a7386bc58535a237313cd4ef3b71217cc108e464e337f14656566f26bffaf4a4bb284009c307c0a870b1c14ce1066be10b6e8a1608b6efad1db6515b6e8417a3b34a50f1f17c9878f1e11a999a9c12125795d472afac0032a8e5041c44d15ec4ddbb861d385cd0a6c483608b83b5f7fae7cb3f551daffe530af3935406a104053051a8e26c4cc44c7481846fe724c964023dbca0e6d198de2ef50d36854a9fccc6d177983ce226230335bf6cdb7f27a2ca284999928c20f144d92026850600bf69726518063e60ab0870247bc9b16bd11a945a37f134627cdfc2b6cd1bb9d69e60d334e98d9c18ccf3c606687cc18325da0accb6499bb3c4a2f91323c44b278296d89dcf0b3b23b7e0e91993e4d99bda5d7e3677f99ae49a400314a88b13147c4c09801f34508da1084b652080381c014813d82a0221f1b68edfc8301cdcf2cfb3e0d6df745ba48c3f48f2e0283010fccc32ce0458d172cbcb0e065a534b3e2b2f3e874b961cc26d43e46d687dd71ede6e663f3a28f87d1d0ed904bbb14c06588962db480a02512c19e960bb4e460864cbc8994c24c22a1f0b33bae0d318379c8160c75e09bd433a48a21291088966648f7a9d6e4ab64d6b7fb229e0984c1cf7a2690853ffbaaecadb6d19c090ca1a855ab74c81e210aada2f29c60a247b2883d4214fa09271e1441de7a4b3ffbd4a545cfce505a615b09827fcd4f7f0dad68f69542f86919ff6bcc9b800158f8c0a2060f8b192c4c6021014bc632c4c382638a31a6c0c0144d4c81c25f316bf5f3afcad1d268c47249eb4646a39c159902521f93420c96620b8ddee9a81b295052a4308fd2e01747613cdbe33393bc53924690f971a34fb7e31da38f1832e9d012d82fbeaf4851b0a0ac33d1092dd1799bd7dba52840108512667ec2892032af823ee57734828dd14f57d09bee97a60dfc348434b033bdc951a16bd24f51d594510ca1078f901908b911d2008f100140c1040f14208042058a2398996634ca59d159393a9f9061e667e50ab57adb52dc37484e74c10c99584be08bffd9c6d5e89c15f4b69d4e50277c3471c6cec707b168268dc57b1878e91016ef61a0e35a7a498f6c0803b07f52ce0a981e419a7edd9b442f08136d822d7a1f152510047aef13fa045102fb4d2f3d82d77e842d7a342e4afa341ba39b5fd04269fb3f26b34da49a58a289219839c51e2660c044161e261e10a40c66bed813e48334c0a33286ca8ef6575ad63fc662ef5bcb44a7e9b43ee537a6902125092990996990b460362aa020377665528963d399fa278d383032393330a3961795ee53969dd22f6603ad842018a4a76009a27263e563a24fb70401a9dcf48fa6e91fdd729af252d5c6550a82417aa53f6d217c5d76afaf3276a5a618815801081740de0324e4796ebc321e089ece6b511b222378442b518c47648010194260845e10221292000b7b7ea461b1b0b0ccacd04bf2b1436787ec771d5aa2f3b64a5bfaa0021097a3afc9cb0212c2754808f7e9ea47263a1d658738dab1abb7d20ebdf5d394ee201e8048007ae28306bf6f22eda78b5fa2834d4afac830330b4bceca671b97b3723d9214a5b769e46c933ea7f873b6cbc9750f29f4a0410f99282d263a216b6976391aea15cdde44eb37114d3a4912a8834702339845d823812112f830d159a2d3d3260262e43c190125292929a11495fed150f4402d2f36fa57232d7a20958fcda51407d278e7a32e47f244a00111186209353c4bc061092e5abafec6d9262dd14389382891032522bfee56a27909ecf7314a935dc5789228833b142787c17e9526b1c3cccfeeb896840c8fe2c89a5e5a04431076086236716664a33f8ee9a545ef63a3b4ba4f8d46165e4baf7eb6fb1404a97c6ce0ab9fee5336090640800d08240102260f049e80c0497fe123c09ee6c1ccef318abaa68bbeba2041064326f1434be06f36486c48e430738ca4fb1652d40a36120cf03c001034723b1fe7a61df13cc0016df038400c7e48b0c7013bf3afaf0e18c2cc6cbdfa4d7c53779e7d955986ba97779799e45529264ff33b7bceda19cf113838a2e608667aad8d7b3f6937357a356782d06699d3dba197f84e5da39723791a408406c006f060001accef72dbf5b6cd0014b38701322ffefdba6526d89f63c41b4cf21871c683af49e8cf63040f3c46ec303345ad4eaa20ec31e2c3fc6c98f901ec318241360990e88fd32a3d6a7969d1a44754440f825460db2b3598f797675b4f7945934e3f496aff6b0c8f3078784081c7113c3c60c0c3f2a882878c8787033c3c4e1600c602bc60e61bf62c20e74dfa60fd2cf34b34b2d6a380a880564002123005764f02a240c01b9ee6080883995fd883808c991fbd211a1725b0450fc4b5956ea27151f298dbf6f62040000750c301b460661653e79a8aea4dde2251176741f0c8c3f64f5fd965939aaa63d8771475df4a0dc80e26a876a8dcc1e36983c763038fe702ccdcc21ecf11cca3510ecbca0e6d79d66f50366699d54f94147ef13d0678c3006530d159a2d3651dc90059f0eb1b660e2dd17977be25190034c39e02a0c1cfc76bd4fa906252d9653e2e9d3eba69c6619c6dd247d72695f37ad48d2f21a4356febb20c9eac065793148a1fca7c7abfa70023280090023080005360e625ec218024804580010ce00c6616db95b44bc98b6fea1e9e017c983988ea6134beca6dfd9c010080998fb047006130131d8a5a7d5aa3250128618e0fa10052e6cf93f44df322cc604f115fb0a7089937a947071acc3f63463ffba862e10d04dd74cb5affcafab1811d82201a4e6b796911bc59fd6c58038a2f128962461bd2c016758f6afa47dfd0b4124a3cd95fdb5e68779c06769556934fb69cfd2dfd266cd1db24aac7ab3c3a34a0e331b314ecc9d1468e3472b0c09303059e1c32874a00fa00074f00d0e009000b3c0118e209c00f04b027000bf010010522444084100f113c98efe4284b6459fda4d333c419ccfcf576f55577be7c10f46995163dd0aba49da31195d666e1a721a8f4b1813d526911b4a65f0d4b30d20b3646a10b84a052ff68978f0d6cd1eaa767081a0c4101cf10439819853d43a4788630806788138f1043f008f146b0470823fc915eef357969bfc9abdf30730ff69c90c1833d275dd0eb3919c2ec3969eb2b0f0e3498f9590f0e2df85d1c4278f5f3fdd5d2c368b487b9b832c27858e79da6047557565a856ba249e7a73ddcdc2a7d9a92a647362f36390f74f3a96f3d49e75bd32ba50d596933e9318fd66f926532493fd8a207537cf5b50747bb23fd4010f63bbdffbce6d6b9933469a41e41d8a2d7ed7c86bd4a5a7b2d7d5585b01de7d5877087a2ee67263965bf95abd557acbde7cab7d220d818441106d1641039836041fc41105f08820b4190ec10882ea004e28a407c02418009300a20b800882c987934ca61a2039adce72b1605a3fc218b4c4ad21f52fcf0861fca60666e911fb4783937cccc9bc80f49f86188e7f2aea437bbf3a79cbf6dd4572178396ac1feebe7a496a3401faa208451fa70823e34c1ccd5ab6f4fd6eb8d32985821ab433514a5b504bed7b68757df36eaddb31cf5d51b55bcc1c2073bf0a18b8751cb8706b2d24a3c97feeaf2b1e95177e54e8b58565a890782d65b4623d8be75a64fbfb6129b7920bf9f86b04777fab597cef826d8a2d74d9a19a7d3aa3dea6af4ba890f0470630b286e48c18d14b831da831a7b68c11e56287b00a2073d30f3f54898e850d48a84a20721ccbcf3718e4639017fd97fa9fe998bcbfccd66f5359b5665e2c797f91d98cc5d525432b63e663fec08d20533d758af5efdc64df6d2544dbb5fea9eba943abe7cf1fb377ad9b6f55929ff95956283140c30339fd0309f18613e2962994f28606f565f73e3d75f4e66984f8a3869892210cc9cda44da146155d5956274f60766d0860efb17ed786720831941e02370cac43c821d3947309fc810d1a1434711f12f68493f2a47870e1d45d85cbf6c8c5f05ef1041c1ccac43878e229e0e1d3a8a00bd751390f940ec452310d5c7076464b77b511f2676496bf45ace45870e1d453033e51d21c85cffc6fe693acea559c962b49598a2219086b01fbd4febfd0a555ad452a4b4954d64a9d426514a3feada1e9ba7a8804426ce7e9288f33b096b39ca9d6468e6d21a5a133f4e98cbd9c413e69f1fdca392ad6f8edef42637ede851b3a38715cc6fdb2101c8cccff6a459c82b47ea4a63fa79aad255e56805fa596ef3f6e183faea5bfad909dc3fc5ee53a3df5c03b2b9e63f78c71219d8b1440f5889bb43891abf4f93d9e82f63fdfa0b8c455997d97c558ab4c65a1ba72cd2d9cd6b0e159a6f25ec7126952ef5e33c626df48f5c8c93eb4b9ea8911e6347b3c1cc9b56652c6663ab11cc38321ecc38528cc3073b90688d964eb28aaf2d454ab3b414f15196db6c0ecca65519974dab3216c7afbf506c466982f1ad50e91f5d056c29a0ec95ae02f28905703c819987601c7828dddc18e99596f08b2ad8cc25cbca144e626050d665ea477f94cc5f93d6a4010d6d301bccacc33b1aa093b2f9b59abc2baf419e8aca4b11cd15ad269475145f0cb8b751d665984f5e06e112da61c4190c9730814b3ac404def950574e49653f6fb755bef7d76cd3a46d0bfaccbf53ba2649fd2ee92baff5bb5daada76a61ed5d63bdf4617d1537bc3eb16ec2958fc65c6ab6fb1dafa5bc7558c74db92c8b6b4cad7ba9bcb5d518650d69940947599aee52375814b542feb7511c59799ce5e3f4b6aaf7ee372e7a53536afd152a494489691ba2bed95dba492d48f256725ce409615087b3446dbbd73eddf7421c5918eb9b57ffdec90afda3fca2c46a9a14e1cc59e435d4e4ad1b63d6e5ce911a83fdda366d2a3253b7488b14307173b746cc1cc40441b6769d78e452367b5adaf7efdbb79746b34aa6f69d7ce8e1c28bc733fd2cbba6f597fe994a9d20e22c2b0830827bc58128d5ca9fb225146ae6404ef2042095bef3e452367df490b69c8045852d7efe4488fc9999ff29cb7915effb28b7ee4da1be7db2efae3d81e577aa8df8aced4af1e465b7b54fd555bfba49df4b2f1a51f48c5729f8eb74adf90f4abd2b706c1f84f3811a4837cca3353917eb63e67c591af5c263d26ce2fc5cf4c3e8fd4573d8eb7446f29d19a58ea518faefda85d3b569c6f07d102a691b32b8b46ce5a10aa1a429b7e201f3e1a75c9b68d0231f0d0450cdaa05d3b2220dab5030801fc010b7f9002465554a39155518d46727391ad4f450524db3469c9cd53cc28beecf183650e81a39aec38c20896dc64a213faafd8a5b4f681df5bee6e2f33405a5af427bf4247fac1d5cf3768f0c6113ef0c1c38717f041881b7070830ce6e7460ab31b39dea7e8cd1eaeb00730de1e20f31e863ce1c44bf9b4855fdac3117a10841ecca0073298a5fb222bd723b1a234e941016d4ce175a636b2a02779db101282f0925e1b0260c30d6c7cc1060bd8a061030179b861ce430e665e2362b23b5367d91ad81a1e3cbc010f1b1e78f00bd23f3ede410a77f08299436efadce1a68b8e9ad3b3ed644d9adddc41c50e67b04308ec90f2d4488399f96d8c356ac8586a2c518736d4e18b2eb38ea2c31de8c005cbf6d142a060e289262d929a293243870bd0c1850e3fe660873998c1d27d919cb64254823c28402a1f9b08dbbe3dd22378a299a5f2645dfd1c96ccc1650e0548c30d698cc1cc7fa90a14e580861c66c0cca5b75c4f59611cd810071fc4c103ccef528a5339da59adaa1c050735c0a1067040020714e6f78632f865e60dfe06147e356e78a3af6b95624de3a2a4726ef0821bbc70c3cd9f3e932a59b7bf9ef965df5ddcd08632dab0c3dc0619e687516bbd057613c6b75264d9b0073608810d1a1b4068a0818608d090a1818f7997fa69f2522b33b7b4f3d9f91aea1a88ac01006bc0a10620a861891a84a40110fc3ad7bae9694809f94c43116830031a4ac0cc4f6224349c018d174aa7cd7bdb6d4136252545858abef6a3ee3c75d9636e3bcfaca3ba1f75fd0c3967108019a260860c98018a32dca10c5f30b3655dfb26ceb23936367f998e9c618433b460cec68c36139dfa347276894e9f418632dec691a10b664906549341c818de184319dc18b660a2d32f33a1253a8f7674941c0305c4a00766ed5222862d763e8a61470c43deb5be89c164ba52fb30a4210c46e07785e1bd4a4f9352db5d8f24ef72376140020c6d008317dad70d0c9bbce4ea7a090c44c000812f4c81df17b2f8c210d9b49b3765495e5083c70b5bf0eb4cede2051e4cafd41e2aa1c4ab74726eff638058259468d8a207a4450fc84b24b5124a3c33c660c616cc78811941cc48a20b65e8020cba50d3850774610717c2c0cc4fc5aeb850c305147e9768467949aeb4053218fee8d3943790a6b750822d24d942112db8a1052d68610b7e103636d31f5d0b3584727a87acc65d555e5a58220b5ec8c2155948c1c2193c581883d9515778e3629f75285ea108574031bf2bacbc4921cdb848696270905031b23250cccc95a310c27e538f59061156688215a4157298894e874237e36c97dd9871b40a57f054618b2a0ca1421acc5c69e68d51a7820d1506d0700a271e29cc80f9d14d0a4a4e9ce9e3a649210747210daabd16852ff8b9ac4f8a829250b793b9f515090a6f30f38395ba40bf60a0f003286ccc110a4dc61acc6c21937e6464f160fcaf9b95342e4ac8b079821b4f308359b44bc968445776680b129b9bde71ed0990398638dad9274ce18438789c508207613b2185793acd3acb484d58e3cacd7eec2664d18421dca14a6bfd253afd9a80d2d33d6b6f3b0619cc446735c6c62fceb495638c81c26fdaf4083ecbc116c91ec1d7b996f390096f48031354c084254cc861020196008625e460093bac8433f829e10bfe8d2a41869995f0e1c43863f5b3fb9418221083460c1efcb46f79693abb3aa54d8b40f1439fa6b2fafccbf6b595ae3af4c463020a5fd954a5abb6609c5ce6d7722f38d6eaa735e968346dbaede54cd19a7e5910e7f59c69d1fb523fdbf5371ab2f3a545af5218ea01ff635e127e90042e091148c21048d8820a09481c418d23e0e008364798a200ec39021023b8c1084e300266040814610f45184211aa28028808d6a2b7431aadd8129df75b778730872114610890f9bd2c14061bc2e8228c1b4f183c5f085ff0b3d07abf490890ebcb4c10c260e62064f182003b080d0434f899801046f7291a39d0a7e30c09082f18823d405801105698f9f9f5d86088c160700146ec7ed756697b340be8b97a3ffd2a9979d3dbed5787aca33acbdcf2cf283535a947a257a2ef5df73b6443b676d37dfbba71b40b794ed7378540b0a74d4db799c9bbca3bc188f9c11b3fa8c20fb61f38c00756f0810d7c407d60f9a0003d48420fac1ee8f8a20cfe42003c488346ae64a169729a462f7a776078a0841d76a0861d948059567668cbcad2d50e72b00ec2c06fd5519a1e75fd4d14b6286b91872e97516bf247dd3bdffea417b60884c5e99f4da357e8654664e2ac898b5f6d942dfd40afda794eebafbeb947f9d36fc669d23e9a7d687420021d40e1851cbcd08117252fa2c8411c7280851c703990000eccc041157070f90652b8c156fd65a64d9c0d7dcaefeb421722e86249174bd8800c661b6861830f33bfee7c832df2587d552976925f5f456da0801a48a10647f0d420a706240f0dd0100a45f9563418d12007333f27cd408c195cc1cc325002d479565f457bca4f134fc589f85926539b3fcaa5454f894cbba877f37af438da45208a28dea3ae338170493f4a065890810764a0c9a009190c118331c4c00a31b8fc60f0063b0703186c3d6160c083fdfa8bedb27b7121467bb8d869eb74daef3edd6599dff6d3942a2e5a5e1088178c41e70b78b8200d8e5cc95472011921c7a40b442e90c20542b4800e2db8410b6c0b8e60669b9f2b6a8de68a6e5cb3c0593064058158c1172ba0c2b38210ab400b152801124d9b0a98e864fe4010823ad3a7419fd69a948223a4600729c84941a78099b780cc5b0c61bb05f34381198fba5dff52150a8680028b82274ea0076616263a1d32811c3c2630038b2413506ccedcb78f23faba69b0addd24ea34a5742901194ad084126092045af0ebb2ccb9e934fde277f54fd3e3e5e816fdebf48f9597043b2448a20b23d0c008422238233a13f688202534e9c699e895395ab8a1c519b400811629cc6259f94250467b421043c083f9952695547bad33a79104022980400b66aabdf632bf660e088430f30301cab31f7883993f00992f9df5034298dad307b83853fd33170f74e181217c92280ff0608e1d40a3035d749e59ef800c07c2782de3aa8c1c801e0e7c98df5b6e5229a76b565e803d1b208337263a93b4012eb8ca64c1854c1690598a088d46a1959799a6351a40839b64e00bb9b22150edd13dea569944129df9a45afd2b3a4d9a7553ad4acc439b6b6d4d37b4f92adb7c6525a5388f6ebec2e20f58ec008b2458f0153eb802e78a1d1840033363b48401d02724ea7ea4f8f54da111dca888cef6110489be7eac4b298e652b67d2e4cc1ed5e40c4d6ad044054d6e939b26dcf5a0cba2b3e912b04306c62257466056e91f37eda39b6042c80bb164a834f3c6d6a99a740ad10800000000431000005070a050281a910b48d5fa3a0014000067c05aa466230a629a630a194304040000000000008040029474754383e5ec4733e3d8504a15fadacd483f697314ca0e6ffd60b21f79d80d781f385297c5eec24a6926365bb5639ea8b526ed21ff0323b159efa357fef02a13800501497ca27518ee7b7da4a360e33d413ef752333bbe8a64591da716f7da716982627ee702a2a6f9a33e05eeaf7104025d621c715ecaf16b465f39a80769c92adc7a53e1a47bffb7d9a12d795698b06c050932ac4fdd6a6d570de1a2fbac65ab73a7a213dd3fd417cd355489739c3d008832a78e046e40572b9ea0b8f89d08d5daabe55b3e4d7d127968c5f9138c6457ba82e01064b722190bfb3787654025509089d2e7dcbf43f1204f4de68c89d39b5ce2122787399dbb1223d42126b258b45e4517f0bede42cf88d17b4a2a89bb72850499476c8363b00d1a044b76eca4f1cfa0593653991f219ddd1b769ebd202905ad153ae1a554a5a5bad0c85dc2590a4f87fec513c2a0b1eaf6a4c7e95aba75851b651e4db686b5d8a1d1cff20d403f74cf01e887a8435bfc18c0840139bc08c41700f8571760996c046424bdbed0af9c34417bb9b2edc79763779cd5a347b0972d605d1bcadb9c7899bb16f504dcc7aba9d535a2d26212578e2dc166b27c84615cb8d2d81369f4965dd126ede43d7c03fb5197acf075ee086e0ed68d012e3a2031af1946372a273459f00360b8bf5d1a82ee45fd7b6e283ec12701be00a2dc4aa1bfab85c6835928e26aeba916c4a447dc5d25da182af1d4c0844f974a8ac878a814196d1c3183bf2c5f6285dc7539b939e50210ebc5b08f158ba33826e792ab986dfdbc605583b5b918e5be3880eaf86722a5bf5b01670d294ea37294ec831a2865947b5da670d87b9af933de642c05ceb2b4a0941ac3e433423ecf86957d900b203dd2a1a05545dda91de42d1f1d34199ba24114a4d8a03920aeb262eeed43ca86bddf8bcd082737174760552cbd1f819f76cca5b4798db7588ffebba82b907eccbf74a5d295e926ee815a329a50c925bcdeab0ff76e31659c507635d8d57940c6af3a2754b745181d75c021d21352821d435e65bae1197a9ffb856420135b186a26e7cfa36bcc8b233c01b87beacd34b439bc27d6c584302f8400a446897a66c72221da4eb3e5e0d24663b27fe720d38d3e1d650e6f6530a614c2355ae38246e33227084ba3bd2025c4e7b33a5a57b63c9812d07b935fdf900d40882b978cd22d6679cf32741c64e102475c0cdcb231489808bbeb02d7d970359f9a4017c718ca6942d6e797dc46ccb228fe8e6662529820823a8aabaeb9365908a4d547de1305d6ab99db695d6c4b20d906cc68128c428e9c840a56b6bc2b5c62cd2603823e0de078295c353259fca10040e95a43118b54a8d0d74dca2e3d29d6e12b4421a8f600d4a4e55b01926d03085977f44f1b9ba7c274daecb4ae7646a46640e80a6851961cc465f314209198724883d9477a4926e704db9ad0d532974ddc8cde4cf6d28ae72f991b5f6311d7dacf0377e93e80ea4ec6318472a07951090db14b6b85ce1d39c9cadea4249466dd0a5f28b335258fefeefb9522c5d4b8452cb63e03ddd55b6b1a144d6f88301365e27b4caae373f42ceca7ffde858e214b9679f0a79e56939501ac4f00ffa9f91a04fd3dd7506f698a350adc7070b0d55e9f655c5fa19c2c1985671eac0c5b7c2935a0cc5df08ee46644c20978d10867a50055b010a28d8be92c0f18eeba4e36073495dc53e4d704eb9e9db89dfdf20761383447dde51a200db5184dcc00730dcdcf1c0393502837bfcca73082d17914ace337ca00a891375746a2112f55fe199f59a5bb8dcb056af7a186efaadb750342bd9524750e9233822de333d6b8d8421c5b46877105c1b2e7e2ce3172cf16414b68000e1498fc4d4032c998e132a9b92cea78102c15345ab905464c764ae0728c644a345d204daa8f244c2d8f74d1bb11f2b849598dd53f786411e539500e39a8bb14503b0f412ac4ed1dd4c8fae09e9d0ffa2b60254a6d9543540bf42ea1969326f57b4356d9dbbc9183edfab231b3d2d043d6b25e22080f1199f3d2a4fbe85d04c0da50371b50f2a137c909f4f829d6241896413ec89752b9f793cb538d9668e201b75237718821ac120bc25c3767d8882e6b50f16ebffae15ef40336439dfe69285fdaabce93e8c785fbbcf59bac7d1a2d4c8b3691d7532a43be7df7459daf7cabd487f1385ed5756560181ff8bbc2c249e8e33bc4dbada8bf7624406e675e6c28d44748baf966568bed22b72a856827ad38ed0b4173bb3a5cf6ba096e9484deb535972c08cc17a95cfdf2ee6629baa5539b80d7590d8c11fad98b6abe7acdf6e935d72afc4a7097224181c3e66b1e2c9d07cd4d2d0bfba2bd2d3c1abab3089f0f2704267e36c9ab4a182c7c54ad772cf660b26bad9275175172f321288d6b1147bf7e6498272eba65cf90d9ea390816191567a52cf5f7c886183a75342333161931fe6f22ee15ecb818b520498fb13c537dbf0fc3c7efecb29478522c9483f087e7d2b4a900b40d163a23bda181095aa9dbd0dc498fb91595bb78c85c7f995d5e873e126ae42fa65620d9a41838a894816335290e15f6c02dcea5254910d547080a9d606c215e88af4fd4aa2909369c1666351e2685e26a96b8e4589f8a09f4382f81e2aadf09836fdae0c7869ed01a58d68123cc7a4e16afac9d2315fbc760cca5592544af6a97be91b718167f7426c74d0a635a858ae3f9b898d9b975e07cbdafe434c9884ca96897057df00e911dadd8179340ad8e1c4180bd072bd5534baedea61129852ba233afe21422de90fc71a0e6607b4685c1580190f99badcd51ec322df50115e987f9ca5a6e3b69500fa4833bde7c204df8e816189fe33cffb11b03959340a446a270f92a187449e0855dc4ec9667fb1bb57f3f2687bf4168aeb01ed5c977cc21337e96a148fc848e6c4f7da2b979da1e2767ee4853353b3dcf4cf48927d469e17a8635d8bff6a65a40f9af30a3f52a71db18cc720f511d1afeddce20cdb8abb025cb3adb47d08117c0c4992f057e1b18e2afe76919e7e4aea117fd56e1708571e9d91341d53f42b5613e1c0d44544915e465d30fd1e487d2bf968c3344bb78efae3422b07fb6fa7d55f7c9d67640f7084756f2fb2d7082cecbd0b0777e01ecf1a919416e7adc0ca89d3d3db77207e6a34b7461532fdc6a59b3b58e073db92905d2d36975d2081694e7570b4d1afcb989e6f36db7b4ee740c3d5dfacb7447e4886f3089d49cec9b44647ae25376b74b079501cf4ce3d2f2938ab2d5a0f07a0195f12fc2d34e7fdc0294de427373c6f373c40dd59615b2f71bf42ede91b8741b30b0ae4d68c3862b0fd298c9e0af307664f0e3123190b0ad4d810d4bd2efc968974c88bf76e435db5dd0355ce9bf9171aa7dcea18fb32a44051c1fe246d2ed58069235354df706cfabfc7dc844be7d66eda48823c72f0f2003248bf0e007a1bd94e4ac30fa748ce0d7302a49c63a44f9a8138510f2c4b3f1ac877d03648e83e7eb212a4732f1487fef2b3010cfd70483494ea9b412c3d3ac84f56282365ee3c26537f21ffc07106eb020bd2edc67727871f261ee8d0cb350237dcde07dd4695c070ccfdae794c8790e68c7c6f9b41a7d74bb15f0ddb1d31ea77788899ac26ddd73a278b27ca21aace9fdcf908387dc2717ebf334c141613f519bbf78fa49b0197222fd1079d55b4729af1aa1c31cc5843a9440860432b28baf3da247929e1497d7c6d95329f238bb0e99313c51d198bf8ac62ba779a32cff36e6f2d179347ebb278c6cea2fcbbd4b94132a6586d10243b7e8db8442405318de1916e6985a430c28cd601bf5a211a68f5c589c7e0af9d5664bce9f8ab8ca1557110fb235e302c7c7e2528ed2d44fc94dab522568c8b82862e4a623cc71d89c43d45524ee61fa7b402761442efd7cb7429e936ec14c88b6530a2559525e74339a3cf343691c91c826626f42acbd05626582e5396bb242c18577353c459aed2b0afa320a411173ea372bbd093664b4c4be8eb2507b90803afde7b1792469fcb8b847e5f8383240e45fb95ec583f6687455d68893214003521a99e92006f6d3d14bc4e796d8e5cb410b7ba1f4e4b61e634a5dd524678e14d4cc700cd4cebe292779c770bb0fc4df4d8987b31a9d06d67c7020351b04193dc898a78ff62e6153dc1e1940e09c0e74e785feb603a72b753865bf50b91400774b4ae820c0812b240862c18684d50aa448058cd7a352d1217267d964fa1df5e0551b36c339fe2b75e98c95d04534f8932e4c355168ac380ca0d9c2dc7c2a55fe78fc215c9f8f07153f9e37a9ccf8e2315e2f539fa324b5dc64a53429d687432fed97993ed95c95da63665ff15dd0b02824fc82603eddb2a98a245c9c0c7f5594c400bf52af8b360dd9dd199bf0b08636695c1386fb2d1ff8f03f9a04678e8bbdd007853f03de5bcc4e56780c243363b4003ef6c40cb72a66de47fe36dcbe48d48a86c548875e23b298c981c4088d70840416ddaf905a6bef572bfec4ec71695d408b66d99b6399bf73089a7ab0403b0a9acd9133e71fb61d78e92ad170c0228d64f3f69037aef64590d4d74f4f5f9a6c6e980fdc029f7a73d1402015adcd1ef82aa96b5eedf889cf49ca28c08c50e2403c1b8518fd77a75aeae612d650d17dede1c0be3ea6f3aacdd47dc4c59ed3045d6b1fd9ac12f3bf374363fc0b0edc839f2903a967ad3a7e2e876426e8856659bcc2143e0bd451e4f5ee5d98f70c067e26f555d51feb22d1d648bf5dc016f2336f357c32fb78a54e94af86206d3da894bd24c3a9c5015b0331b653ee4e82e5179a927a7f4e6bffcb76029f12a7c55e8b4a6d8fb20ea8ff9a6491d5eee5f5bece7551aaea84c9b144626ee0c169e5c2b27903e32fa54b38e8720d8b0ba59cfe2b2143f8902d0f1390498a9710b2d447b557b4b628b6afc5e179f68c3645cf3d675bcef6a0ab1adf978b04bb3a55d501a38d2de8e86977fb7321ffa72fa631e0f931ddcdef2916bc3ab4c52b8576ab44b24bac0a33b04989f06c1cc719a17c9a0fc8927e4b712194b3a3c8e3440ada3eb228d43f8a22bd84fa478757658b534c8b1473e3cfcde672b3bfb90c787c3db7c4b4d45d6362610ac23c46641a3b50f3bd29b5461ed27649a62f2c2434366226bf2da8b1dd73ee5763ae7bc367bd4222601fc43b2f35f39f2221b0f9e5ec133566b30bc12b3a5f8a9755b30ccd9bd039c71ee417cabcf4062f9084f17ac0ee47fa933044f54015dfedf79570758aaa2c8f79490080bdd9e832a89e7d6b647ef2e45389988f7e0c07b375dfde94a5ccf751bb1118f2a86f4cfcbf8cb56873e6d3176a5a380ef300a95fc6ea425af91b2585b5299d8469698a37f047637bd5388f13175b5598dd8b4a6ba1e18921cfce61cdcd1b260ad48671e743166d5d626ab1a7f30c7051c7da61c49f6eed9263cc20bf60c379c58ca2ba7bc1b61963ee638a3a90132674733527c2f15dda6d8f8285b944f75868131829464df091d50865e84da094086b6ccf03ae2f6acda028fab72c7fa3e62b5a235913f7e15735700c463e5b963f828a5e0335c5d5741117dc26bd515d20ca06a4e24bddd22f62fe8d4c2fdb8483a2a7ce187023d3301af06ae89648ec7e1089d3dd32245a81ef4de8f31b899024f6ca0ec42fa8397d428ca958630b91de2616778523a7f222657fca43e3b29e6431b3df1f5535080eec68b45c01b5163179198861b83443f33f90bd1ff61888bbfb6367234dd3fd039a8d5385ef1f35d385d4ed6ab02e217762cfcb143b7aa892e2e2249c4d9d641c6a0236ea0fdf529465f8cb530d814ae9e0d884576e9421641aa8a62093e5e8a1e1016b0146c9307e702ed43f97fe7218b2e632386c80d90c5c76ab2cee1d32823b108284b538e4d6f42e1f5e61b2586a7d7e1a0d33322f93b96b78fc4c9d3917e66d0170a205b27f10fd2621d370ef2a8ee63e9f170637ec124d3dbd07dbfbab15c06fd4750c0c2199261468c45fc0c972671cff436fad00f113d6c576343ba2944364a48ee27f79a0b0e4223fe2c8aea1a1c6ebb90067590db1b867d4c285b7e341300f256d2a1a4427cbf7470f8d3a19447317fe3a4dd9120761510d1dccfb6137bda81e4f2a4346ad0b07005098cb25a428f18154cce0125d74b224ee5fa7dd45077f64a88c3662906b6eaa6f51e52f58c15782fcae78009d49e44646bc647b27b48623654d916300f0e334f0c978385b878a887afe04483c09303cf44dcf0688a0130a726db1d278529d0d289f9814c24b1ee4890819965f9a44f85a64c79c8124d4af136e7e346355f8119f4cfe1ebf91380d1a1476de074ee6c9e9cbfef1d184b0c104bde675e4994c1e2fb0cbc0c3ca83cc67810d004a7c3476a1ea155f066affb8e9bbe9dfb94520e2e3113a4a5d8f82d152321a12ca970a7b739a3c908075d6ca8d141300d279d9c9c35f6accc451c62c1a90dce90ac2db09c870c9d7b10f948968b987e0699a26a075b18f0bb9df8e0313a0cd2bb8bd85b95f20f8af012ded803875b7f31d96b26eecb35a75afe2415c35af14c75516e845995773d9e7e679de40b44ef818e5551dd1b379d2ba637a99c498d04329b71bdf25404c5ed43389ae36fd5fe0b56adadb678cf555544caf2316df3f6e8617878be6e4983eac3d9dc66346911a04dbd716d2a8b9d2dc87b1b548842fcb4885af717b6c6c138126e674b2e48905ffaaebed6caf045e98addb16d2c937577437d1f499fc01a93c3cc60b06d101cb77ffadc049ffd77cd88cf491da4a24b3e18e62c3251cbaf5ffdbeadaaf33459dd2814d2244de726ef896ade1d9e3c8535a47a501336300484b1d80689e825d8b7595e262e21c388a9dc09b33e685f62d8b7653012edc7e58339e5cdfe27842716e216fe87748b921876482ae25742367aaa919f3af8576a52d069883a1aea48932415787bc088493f19272f7c2e7f4e530693d893a5360bd6431f43cfb067bd57781f2fc3ce301acfd21829713d9acbead1fddfaa4eb2720dcd91ac6fe6c131740bb9f11a0c01a7486099002bf5926402b043627d0c16d2be2132c0a4dad1ee4dcc1f7bde38b274f17f253174146d99b80a374a968b4c29acea574c67dda5555074980d00471c335f593f5303669e3cb7e2dbaea5bd3e3bb1739c6284439913d9930b06047e6201569a4c9e51e707590cd4b3380419c77183b8da7a0048082d371bcf40a3c5787f5806f512e05d943b5c8bd11c5c60fb4e2e9573a05aaab71d85f77574e079e438672c954f4d512fb590abc830c6b21773cd4e6e5e3dca663ed7b10e0c2825bd31f3d0b1559ebbe2b91544ccde9b9dc8173b60759f0fda1901a652ac84b10e5f149ab4b980462c00da4c3400f9ecbe839cacc077dece50cdde95a3de029ab341141519a862aa23d8def3e441d55e6daa880cd1637cb64a263f2f8ff0aef7f10ccc5863607099d73e167ae69e3958ab31ad21d3843fd0a91653cea72624a23026bd5c8fcdcc5679700e6962a4d7d0dbfdc86afd30f5a5d9c97eadc3414c5f0a32fc9c6a31af2247317461e0f91a318e275f9ba7ac504a7dbb057c3e220967817bf3f6e443ea43ed395d33c7e44f95522f7ca0e42b6bba4362cae02a98c286d13380984f5a3921578c0282bb60b2e39b5f7624aeda2303c8d58c461a66a77be082d29fe5d00cc2443f3a086909d2744ee483aee35c08073d7852caad0b53dfd94c409626f86b3601d5650c0e5f1fe4153685bfb7c0e11de1a637606201c4cb00dba7a49a7d913e5aecb8c1be301525e4fd577125146adfb8da765b95ff8991c55556ce48010b0e52d3f765a31308d401647363156240609193fe8227bc747755fadea803baa34511eee839a98444a691bfeabb5e2b5035d705e792eacf75083869c39f60c69ce8372e864ebc2552f70bf7e1d317285b8c26da6ffdcc69b8ac7ca90da668efbee62ec2d388c7731577f8ff5f419cb9d45662544c3b0d29cadcf085c1dd720f314ec34075bdfc58cfff5a49fef7624609af02f5c0bcea3a86e8d44bc5696ce0b4ab369a1cc20401b368e5264e49a89fea028c1cea4b969dd0cf0942bbed8516cd6eee8ce57d67507907e3f3d753b533e5fdd02edfc17d4d4f840a2f20fc5d6d2fa31af13230906067b8660ea6f892fe7c3404d685f8d1581bc1c8691f616a278ff62e2fd7e7e601a69412f04ff43d1ff1e34f4191d63f5b3f069c9fcf0b081e9f9d1091d845e6c6620960ec0bc4ee28b6f2b8510920d5ab5eb012b7f55434e4f8959c902dc015317444fa4bbe45f38bb05789d4978ba94e49752c9692fffba2c3f8f845e5646bc11e3c7c8764080721e6054e535bb9a4ca6c833d51c44250d4933913576615332f25a7212e6eb4d7a1708cd1ce9e7fae5e428cc422abc26af33aae33f92fc8af2b5ae5e5d9298d08b95de9c11547a1c65014e495d96509249c0da918c37c60c9a07f414808a5e23a0dff55d188df0e1a04fa7d13970b9a48fc8d58f72691af4c80d20d5360a8e24e09fc76f89b888942216d788572c63dd4646fc0d32bc4c8a59a9cf0b7ad1666510606539c94615e3ffed12d62d21cc6876d0e75feb23db98d86976f30355ae92403336bf398911348523273875421628bd6fa76ca8908b5e672041988e0c12ccd8cee22c29fb4a85368971b4d42dc7eb2e05e2873a1de9fe58ab60460277d7614ff0e0d3446f23703160a718f4ee8638f28e7a6b35063073cb49f2d941c693e27efe73aaff2ced411bcb5c310fd16cf38823ada7b8cb916b2072e2ef4d2f6d96948bb4f93aea8fb69443c2e07c6fef136c7b510d1fc7f7039d01957e19e00a958c0a3c768d9c5bcdc3eff9688d5b66b8d7de069c75a29790f82012ed271ac79282408cbf0c6c4f352d554e2bb5e9a574820bc05d76a9713da7e609c400cfc748c81db9b83cf66273c80f37bd6859dccf69f2154696c0b5a38c6d8b30aaa989941da28a0b2162d2359026a5e8ac6be8fd3a0b819efc44e6b7105c436e0a6f89f1022a7c304d1c2622917b0d59b3283d903ed318a8346308be767cc5491c72b17205b8aac7a7c5833beec7a7b0c0339f4ef0361bf7aaed9a0e420273b3015309c3e4c8118b0f894165c0dd3c130bdeb0bf11f91fd1876524fce54a064dbb980cc47568b098c7178eb1a247b3f515db2ee5248b64a7b85b224758ee3d166d7533057327e1d818b470b8e13b94765dff154e12d51c992c0842a05fe9cdf10b7ab04ce40d3f50bb4ff254609da8c40875aab841c17cfff1ba90d203e083f3f46b8d78fa4ff24646ab2af319cab8f4caf7fb7ff798251814c09cf6d5e695dee0e3b3633dc528d3d1b0f058fea6d7e5b8d48fec68f90bc4db853fe4ce1ad504e6430ac03c81848483aeae376673d87ef830ae2870e486662693a1d8b217a67d6d7ade9766bd94fc8a063d70201e086366216f5fa094cc9815d9ad4233bf56989eecfb6b5ee1ad1072f5e754d5d884465c092d8b73ab4285dece5e0a9dc7307ba0c6fc68f5ef1ceddc3ca798454a3ee0c54c2814181fcbb553c92865473597cbc44b5680f1914b268326f1f60382ec829204a7e457b393403878f519388add8e2e6a3f0683d2223623856317aa5828537871a2a21cf97057f7355c17e93adf3872dc5922cf9b066d278bd11d7ae3c3a8f8d4d8339a35834e2f8c7e030e391fd9a00975cb186ffee56443a3159655cf507a87e66e756445f81a12ab3e7beb6d109bf08abd5c6d2ac39782affec0deea5014487ccd0c78975c38deb497360570d484299d51627eba522feb19f36cd5065d5fae0edd9b69fe050c4df293329d43de06a9536d56d5ddad163e99c93a7e484425065c563821e8c13cd9cfd7b92f8e6b2fa262bab6676e9963ff9117fbfbb846f0ffc68a8033159e7ed81bf27756fe81a7751c3d18422d9bfd92d1b31b707eaa70cc8194193de30c0291c106d7a3dceaeb4f9d880f7938635ad40e3d9623ce7a3ecb175d0374ac28f04531572d1ac91377e9c2f5f543e125b0472acbab43f87772432b0ca5e4f64ca7e7e7fd84fedc07dc8dffa766715320fb5adca86373b2b19e4ecee975c15aba6c9a7322c559442ed3265df14f86556321f722830ac02d2e8565bc3ff5a951b9e30389d924a4d4c5d58aea2fcb61ea884ce5cf295fa9108e56f29ccbc66e59dc101f9d73dc4c51e4daee0a3608d3c09f8d3d66f567bded95ee9b4bffd09b0c69127797b25524ee02d03196f45aac48782e253298d4732fb0fd1a33919035d4856aac3b0207f0a4956ca9f84410c27ed1e7d184444cfadb1c7d2c195b180b9500eca9b3f85e31c10c0627cdbd013fb9e7a8ef69bb41d58bfb888b08cda528dc664ace6ca9f686f19bd3a355c5972113458110463bd46afa3c5ac3628a6f83a98c5b401ef2d791d6b522ea821dea7dd5882ad891293db45779ff8ad972aa478b7c085a09408e34fc3e2d84987134edcf1267149a29c6f70de5fae53b6fd6e779964324388720864940d9df2d055a6e0567fd33bf2fe123a02a0e420b459f5b2dab92b2437d41f033b44f00535a26f9b46ee3c407db1c1a3112b7778ac209afb682ba1357875ec8d5a59f42958c0f2f76e6238cbf00d2bdc17a5da1a73dadce421941a414804a706ce957f898b3410f6f03d7753d27d99ea7622dde3d3612995b02f8f97ed91a7adb19c857b8b933677545d718f9feb3472a254b93b5148c8d902565ceb44cfa2504ea8d8bf812a231c25a675b032e66a41ab962bdbc332b903555901a392a9a1e8c9716a241cb6dfebdd3eab01688a07c9aa5ca4b0beab772ec5b716e6be5c820a60c99a559fc8bdf0f79a4d0e8a78dd0ebb73fecab92a575ed8a1fa4da3203d9f4a09ad6b910eaeffb2c860ac6a6042c44dbeba2136efd3e29cb2567a1a804c31054728827d1203bd9aa679f10c075ccbb76b059fd293dbba4e5558eefa03918efd37ab38704040e515f8f4c16c0b71cc67eb377e78c858b14a8ba7b562dfdf707c82a0ffbe71a5b38e80dd8063293e2b7b84c5c3a433b4e442cfdb1e4ce69add5c13e7a6b6aff55332a050905704b281837f907d3da2cf85acab6b4171f9e273495ec6321adef5a0a8a2394e74fd78ecc7134b065d26f9f1ea484f5cafc16dbccaf6fef8d0876fcc4e3faaaca1f6dc45e9f82166b4191180626a59df418c042319803a9cda6c254eed4ce886893325bca3b030586ee4f48c788de656388dac698150f6aa41df88dac03dc9f288e223571c3a754d55346b85ea59f84b005285a2d447fd0161e642f892072c7d47920f0433086a270a69ff62eabfd9a12868a41f37ae464e9288f04171116ef50ca20d663a8716e77f8a5adcb380f4658f85c79bc6320353c870b9b10401941ffc9889eda28a5a9236cae589d454d9e42f3ae8e2e85572c3ae8ee1611a64ed6de889ce5c0707be627260194219e6630e5da880fbc73e15fcfa81c9c2d97da169381bdf9b4e447f63ea047b8a38db9ae4c2e91abbd7afff9b8d1b27a24b36b7136fa58dbc8a484dd1b04edd1bc3b48565923b610b2edad4e65628be262aef83f35363b4f923f179df99d2c374a2b95873c02fca826ea286d8afdaed064dfa55bd3ef45ea11cde67cc9a988526de9319a66d9df6b6dbff1eec6eec62f7b0b4bf827556239b311308cd279092a11c3609bc83036d8ed7096c462a7dee5a03a552dc1bca550bed7c7e9dc4b1138b5afb9d32f33cca7fa2b7d30006294d7e2e8cf4b167b3cf61e43d95a56dae9cf040af200f8c437e67d1645ddbd9e38f0f62816d8aea4420061419c16028486d913c0c70080e7cf3cf6501c7a7fa3a9613fa25ed840ae004d0a922b45b7fde8bb5ca35abdec9b9261a31d8ae9a256c62379ee522787bfa1effa29921a43314c227bf8a025fed7dd21ec942ec3bfee6ebfee13f9d9b2a7dc664792c0f372b21075c11f9e1208cabe7a2a99d70d60af2bcd7e145687874b3a67ec41dd4ceb6bc2970d9091b9ab1490c86105802d8da93fb425e41b184774eb0c06c296bfe20b8c2fba6ef7dcb3f23c7e0f42b5efeb352d96e2b95bce9d4b1e5c7c975fc9a2ff0484b48b3d9f250feeaf3e2853e73c8d6640ca63769daf6232fb8c64679f564030ada0041f0841cdb842b407c6d4eaa324f7eecc4a134f8c56b0693969a424a117ef05bfb259a24a55056a8009654bdba1c7e99a5ae3561170fc53a1da2478bae7c6319f272f693a23a8e5e081b20ecc237cfada4c5019eb3e080e1ca586cc5f8cef5f023a68858cc2235b77755b7954f7cb51333daf947dc96c36515900853635194b43dc87eb8e93b306b1ad97cf005bf5a63a8ec37b2f1a8f603926b6066f8a307a54919b6814783c332cfc2b0c6860b5770bcdc36749299c95e90a3c0b578a3c386f26e0d35c9a9eec1346644dde9c430379073871bc4d9e6de0f6b8f4c82d6529319b5fb8a8d951261d7ca1628852e5edf358ba8542cb034b8a4b92a8373385cd105fcf83f7709f0ad465e3dc9550b800e843b0000a35979beea95693137768894017c29e3170aa7a2ecfa73ab8ade98857c46802b17d8af0f79788655e8fb19c027ff448d7128153a490440e53ff69d2669bf7da9b5ac73997619c13d4ca7d0bfaf21e61c22c37b14a999bfdfe7c02b981e054eab9258d44642a8d6ed8f126b712e25996dbe2901124c6064d46bf72ad48933eec341af20c83db2d3b806d65003f5f743021de5f668e8d2338fe402d8df7fe2199353e7bb3d0572242072df7f98a0469d1315fc9903f68356d6aeec08a6caddbe949b2d24196c8192eaf7c493973be0707ca96905504c47cd9dedfcad6d1cf425a1f5c03e0177efd79cdd6d2024c94d8d3047d37774181bc7910f3e0b4d8eafc5a051e07e49acbe1fa4a93418bbab7faf92e900f328c9b1233e6d145631c57bbd36a6f74287a98c94eb18f3b1f30d0d4d30b995b24dbc257efd7d9e3b8c953384af4166ce9f2d8413342b0ddcf337c017f5219273bac7857432370f3491a71a42e0d933775b2bcc727913cd7b0d1d4fa67dbdfdb01b965971cf931dbf609c6d87599319d1002243d828f45a43c027e4ccd4b1fce0bbc7ccf3bde4823378263b2876da5485f166fcdc88a5474380f17de429315cfdddad3a9965f08a3e6f273ebde0853fdeec9df081b6f08bdf6240d96464f83e2284f1f1d7822293dd60bd1d9fffd97c46b43c4667ff8262652b541eb74e0313042ea498304d3f29a539d1242fa1a7a1f1737ef86f4cdf1c578e623c3fee5dfa2e2cf6e028a01ce2375a9952a123018590b15390714a6f5bbe23bd801711c5d43ea61f026a062384e7900586e8f0fef39a9d90d978b34e607657040291717c2e327ce5699159118f1e47f37eb28015444f3a66a1bcfc33164263e09e3f6771dbb47882da54a9211bf5c6d1bd0050c6684621dad7efa97016fa1f77b6e0364373631b4f021f03cd08cf84ac1445cf3367224cf855dc49a5671a864ce4a8a17864551be32ecc5c2b857f8ef894277f260af8616f14a75c5660c184214fd3f5217bf87c57e9beb55d165d944f286ece60c45d9c3283809d34580806af98faef4e992c4e4a5e35d0b1ea446c72bd21a9d3826c6ef55e80f470f2c7dedaffd60c25c2179ce2a11ee42df23f822812c378e7b146ffd0448429a2421d6db7c750e6c06e927d7f24a95ec297e59f9706718e3298968cdb2cf6299b011ec505015a8afb9a10261674fa15d764022d1541b13449d7553af27c888343f91c3e912e24b1ef426917159daf8dbe57e1bf8278d71767432f366369f9aeedea0c18f2c56871b3e9e5c0f10677bc5ac394f291cbdd66586da4390ec04a4a3e0fcb6fd37ec5e204991de8d36c727dfd0f8c1f2300b508801758e38034454cb7f9dacbe2db4712472aedacc5439617062262280cb3d0bce1eb774905605ab9f75000ac79fe54434fd125f95915f8161f465db50d97f776a003312f0faf1955878b5ced8e4444cf082f2cf8efc0d5ebb711649cf58aa5337ee35d897986bef3a917db8c1ac6381ff42e275488ff4b8cb51a22078ed816e14552e47b04eabd3f88cf3db218d5f6bd38409edf087e23ad163939b45a9afc92d52e78e6c1296a006a37ebfe710a1fa87c0b7d7d4024681106e66435fa6cf512553e0e67def1fc0360fa932d394c8f9c3636c49bac7d534b92cc5e3eae71348294418dce7875c9aabda4e8e669690c69d2031ed90b667d9383229e92dcb69a281c6138cbe2698788e0ff39ecb751182dba00cdb1d347c0da75e29257d4c514980aed29dadca2d2ae194352d25195be6cdf721b355f72a388e810fe105c16e0aa3355512d905180ea3033e7747a75b807d5380ccf1095a61bc1b313078eac9cafe267782c31c9b61718d98bc18184a76087850fa1b8da4f6a23395ea9c3a46de34427b2d27cb93b0100a6bc1a3a22e91e048d93e5e6e1ff597b305527be9bd74a0e9b8edb1bf253b2a77adb35c095030e73bb604ae26a10a50b47120c5f93844674aad06e2b1ec428224fe3e27ac66d87a7dc16bf6fb3d92a347c0511c14eb0c26f00a6d5d0c86653781fd9ca447c04fdcf3a0694f06e9bbd59a27a41ee0bedfe954a81c6870a957e52e3c1279e5d32a178cd14404730bd9568f755382c51a8b01b332b78ac6f6ae50daced1168f6eefc7694646766b69225c809ca499f781f4eee3c0e4290d346873f75763b240a8f82c92705a14d05cc97475bdb0b0220775f97258795f9cf0945a3eb4e361bf1703bb5f1c73bc70c67ddf85efdc05b51c6d1037cd23a79e137bf86cbdbf1b07396cdede01ab4137ae022a9499b3d9a008cdb48c1274cac6a57fb10729ba9c4fb164659aede39ca1f82a5d474acd07aa1de952f863a585d4799c0e7e7b27bb217f102cfe1477bf27cc02e6f627f0cbd2edb5f2a29325acfdacd6455c4bb6753fe93cd2f9c2a1352c1b543fea0a8d8af738c705b2e41aec52e0917a923432d51d883060d2b71bea2963048a08ce748aeb9dc8684a11c4d16527831f5c8c3bb48f6200ac8da0a6ef5d3eb785bdc18ad75370d6685647a5cfb42fb95c6ce904b3280391cba26968a73f3cd99c95db3939ebc744a50c8e888156081a5af357d9794f446ddd21406812bbb1b008376ca854b75290eb1205ad509c2e88ee0460aadd54671e4276d658bcd2f8e6f19b4a6f86e4e69f9256e3e383a09a28663dd73de55ab47796ed7ee69dc159a4b3413d9804fe9476baa23954a826ef03776872d558e6e3c8f06257eaba1ef7a2e0609f75105b365d62dd773f5fd3c800486cf4a89e81ddca42db5b67f9c0a32ebb089920c8ac3d05bec8859e38338b5294613fbd0a8396bb736500d6c97bb34e3d3a84a60f423e82a6308f55eb0a2c31e602115b990de8dde140b2c65d79060683ac18ab4a2be00b334a5a3fc0ca8e732e8a1767bfd9048be17ebb9c183748944413a0fc8181fa21240119b876cb4f499a37dd16b7fbf3327e11d1133535682d9426f0cb33f257b8025ec6f83f597c4ee8dd4016b323221cdfe0482fc1aeb0eb12f7dc30ca57dcaee232cee6f7143a8f6181d8785037fe1aed20292349a528122e54c1c0071513f08cd457effbe011b61c72664d66b56e055b4f04d939f38afc6d401384d11cc1597352d4fbd32c02ac9d790397071f1922204083af9d7c369e63196e4e8206b455525f1b8a51773dc943f92f54d3768243d3dfb830db0157d140c773e31fbe72352a3647ecfc6745f4f209a810856ed7836115dec257d7cf5a72066def27f7079bf7888c3830d16cc3012a14df93e006a2146f7abc390ef6beeae1bd8f583c29aa0d8fb035fed1b4d8b7e948494ccb25bbc3ef6075fd6c3a06258012a7190a0ed825aaf2bc6989d8062bde3eda1b2c7922c87c5c5c2ac370e2e0a126ff258e6a583c74fdcc733cd6e85e685ebc4318ae31947fac196bbed42bae2613f63015d0496aac85cea6bbdfa1bd2b8f49c87819066ee3e8a37ba7fd60838295e8426b30c958ad00cde15c203d98e9ff354d32f394ef88e5febecae3701be5d1752161b18594e4a7d1dc018de6d19f0d4f63aa5de7e0a1a1d7f05781e5ddba1bf47b38b012a2b61abb5e8dcde199b4785b20e142bbc7cca5e093af61263850e83627e0ea7e77e6bf86d8db3673ebe9d834af64c90318a1dae391371be37747066b74be296680c0d6d46e0f0f6c047eb1feb29f2b90154488a6758ee8bb7867c2de0b8c42684d7cd3c330456b3bc1522d9e601a14c43d9e54ef630bbbd41309c41caca4a821f7f4cf53aede3edc9a0da61c7e1445d829cb139f099c97dbb1200f6d68fadad0d9df6083f8f9dab5dc66cc9485709491e1969f01f06dabe350e85d3046e797e61cf8d5648ccf0a8cd5a1d4660c219f91c2028d74eb5210d157755df8a418ae18c2f65dfae696b0660e9f99e79be4fc1400cc0c01e5b998f50dc8ceb8f414d97274c05fd736adbe266d628b75c78fde6fcba852ac7afb30abafd856c9582dbda88a4118a3d9bff8364614aeffb607c4e2e480fd4cc9be8f8b53138b03c5676346dd8a6c631afa3551913eb65c02d2467ead141621b40d7061894310dfb9814c18fc99dcc4ec03cc10552a32f7e7a5e9e05c5aa2685deecd1e0cfe23e220c52109ad4c3ac279fb97fd3e2687e5baf3d0ddbdd263a846773d6bda99ea9e5b41ac7fc504f990bb5a8f940a2e6a39b714eacde96730d36c8df8a9b83174dabae125d75dd35aa4f40610c58158072436a6aca4f98f51d6f2d50304bec2b4fa24bedaf35bc3a7a092c01749fcc38c7cd54fb73b7eee5677e7f9bd9a77af038371c47b35ea77899446ceb0f4eb1cf26be0b1ff518d1267feb8e00d84be479bdf16792040271aa4bde216387db4e1a8bb3b8872340a310ed79653b02d2f0c0cf7b20e187b3eb677c8a2411cbbe8e099164468b082e84b30d32391dcd18cc5448ab7ea8052a28f201d5dfa7f9c7a6953a6b43634b934566c87e765762a2e5e41fda5d0cd59faf77c0310d5f02507b770c7964462732c0c41095f859d01adc73d06c3af101ccf7456714dc10dee253144aab08528234ec3ad677c809f6fdbd55e12ea16d6dfcb98cc2b774033f7288f618491adcb8b7c85ce6bec34be776022bd73806500fa0cebbbf1ad407d2df8cc980806cbb6f0ca8ad05e8dde987692e318c1704d389b7f8d86c11c96c65a72c642578ec95766b4a7aa450a6b16a6dbd269119710e5a13951b0921739c4cdf756c0de7490344d12c3605f2ce5008222c6c052660521f78fae4453c3dd3c7bcdf1bfba31e75a01382e1f6cbbac7a09c40d7a77a87a1078ec5b8d0d81d5c9065453a36857ead8d1d934352fcc3de06c7b04a307b9d8157adacbc9738e68221d0fa4db9174ef9d57e2efd1ce9ad097c245ecf1e17b24017f18458560c8c6f4446004b7024489c5465c66709c648e06dffd0be8eb4a450321ef87b2aba9eb613dddd3514025484cc1195677003bdfbcb55f7923e121743e4b9c33903f3c88ed8b25a99f2066ca5d60b8bfa3f1a3ce1df20c245b3cf0d5165f2dda9a368d94e667c246788e5ea79f6195b0e8fc34d8baee5153a2a9b9811dd3a1ebfdb8985318844a3b7d3e8e78bea326ad6b2b1c46a0ce106fabf1af054a4e63b34803d5762269c105235e6521273f8705a1cdeeff0b18487dbbe7b8288486ebed2704fc169482ed4aa663f20a08adfb65afc0b3a6f7462774f411489478757d9f90f50d095b7aea5bb777ed29cfa2f5db1515cfcf13a40248f800db8a19380ac94ff159b1184daaab70e9858477297233b3b0efc37c8e11a99762876d5d97c2c13b7455442bd8d7e8a5241169b9536a37408190dcfc82dda4df4dbde7006bc7d134543e4c0e841f5e0c0e471a31580fc4674d8899fba1eaae6dd887f97c46dad5321866c58bd4998b0d5cf145c1016876a876c520e28c855a3c62816b73101c96b0bed8c2b591fa76cea12f5ea13a763fbc5c11c399a8a0fbe05ec1e7fbc062a89da07c9c8bcba110f8c3cbc9ac182bf3e96ca4851f7c534cb93e8a8030595b887a38fdb31f1d3ab53d9501324ec8bda4f9ff2c5e2aaa9eea923473f3ed30c4f692ba46a763c56ee5bda4fa6fdd6aef1dce407d7ab120c4cbd8cd3315bddaacca659dd571c1443e9c6f6f246af5fbfbe1eb362fb5ba4cd8fe13acf9c2e57299581b99b324b52be1057212b927c5e919f3164de1690d620a7de6e6777b6067ef23e09fd8b3cc38587d6f301985f1a2671140b7529d61f4608307ea3c291752fa1da899c38b651f349f2f32844a3fd4164889129251a0fe28425fa550bf9f3b4b6a08bea1ac8c66fad692bd73fd9d2d8ad03da912ab66398c83501305eb06ff6492eec10ac861d49e20a6337f1c834ba0650ac99a511d7d3be6447d19c892b890049dd22742c54e41ffb38d48cf680a8fc38d7239f76dfa4ffd975e8c83c6d127ba973ca89dc57065f4b68184d8d68745c66c5faa837fae65a6d9c1f4230520a198879fd2c9f544b7c71a3d30194f63d8b4a4d4c25a35c01e21250802eba95abb2a2b8080f6a849a7e9a5bdb958e41ebd07b743270c42d4da4cb6a63cc6ca916c38f20137dc43d4843168bc226cd5d0f2a2d0786a775b002b738c968db5591013624b1d6e125259703f6832312f9b99fc912f637be31c40f334622f9abadef4ecca0b269fc3fcdb6db3cb24ba4edf956a998bde7edbee30c20b7894c7ac9586f83ca059f617cf7af2aebcafb98fcbe89f97ad417fac8b97591c0f4c9ac5c3a4fc3adbe966af42b88661baa35029114e4699d7be833bf70047773a54d7709dc1e5f47bd240990d440b04455de428f10c3bf1efbcdc4c57f4d41620ccced543d3276cffef76b607f6a0ac6b39cdd20c61e64fe407392c07c4b62af71452456c1a246597ec5918fb9363ea74671a1739e8dcd1b4495423166407708492dec18140883e057586e66198fec3845acf9f86eac02535303728643ecab160b35e89406ecfc889cadf8121d597813887bc5312b55e03359359ab821febcb5c2a3d00cd1766b4d787528dbed9ab486cef724090f85d031bccfc300e607779691fcb8ce57d5faaa6bc86bada9d1e055d6664eed81dce342971eebe59c4f15b2ebf69b371117951f8a78f0e0b7e5250e91287a1be0f8b83a91322af7b70f550c90b37cdd641016c2506ca0e3917914c15eb1913d24dcac4e8321bf8a6662b0e1c1764dca168d2173e57b2aeca716350bd0020d1608419c0a334cf35fc0b91f7e71dd656738d467f65df615f54bbd76f9bbef83166fc10716d67462e39c447d76fc0fe6706fc469007d4552a3511011bd58268259c3a5aeabcbf183e2bf423e3c89226a41ee37752e95e3180232794f7b3e5d6bd142d86c5633174107c379c2bf7289d750821fc69a14be661803859d8b3469ac7f8c090684531818cfa78b75318fb7dd02f4dbbdf050ff3eecb767874ddbbe69cef05a0ddbdd7d215035e21b15b5a9e7d2f82dce8286b4f97ba413251d98e1147bac958c0844c0a7a84bb82fc5e91d37daebfc250c05bd3d8077706eabdc3a94134e3448913dfd603245e5fed28b588e77fe82002e9dca3a34c0bf09fcd1c39e801b80be978b2014438fea19bd13955d380cc9d3b8d590589682e8dd667033698330af5e320abfc2e541313fcc98aed21d3372fb0f7df5f58886bdbcc7ed4921eecc221dc54972d3aeaa84c82aafd059b1734ee459db5359e846c65f8c32a952f8af5ad93abb85bde0a08d625538a2beabbb120f621dd3a4c4aa13a58b7a400e88e2854e778cc732307da5e2fb7089607126c014bb3b4a4a47c3e90e19b95bcca019de8983f5b90723f2b14bc19cf5c4e9e16899d6548ad6978c4b175ebd461989573e9a15c0e0f27f044067f585c3db2defeee5b779b0ed6806c0bb22f007acbd7bc60b3934aec89bc9c1cda1d4010dcd5e93a5874f71284f8f6d76b84ecb0af17ea03303741774512172000b3f81c7461ac154262639218fae4ac7e9b9c313502419f89871b332b761ed05c0dc24dccb9b5ec298c28813ddc51c286e537379b64d7417bed1d3ceecc630700d94bdb2079a5c2328ac8d32caf77bbf1c1ba6ef7802116cd09e806e067a9117f273430da80836f90589843b5bda5dd5dd2222d07f7ade7786a756c32ab12982dafffe580b7710897b9741710175efc3aac3b1169142186cf517a4bf557126ad07c49df8c700bf6e61075adc0cdc1483c9077cd61a539b861b686cfbfbb760d22a8becd7c5bc82565f471a43804bed8842096ae31f42a0212e02f7997a31f940e03b66d31c1bbfeaa8a68f34392ceeb0201ee465e35af169e33162b9711b11fa4295696b226a68715eb8fbce2809564c077dc94478d605888593efaf2b1b1b243498e6fa8a6401cc0c2e7bc53b4789b01cc1f5ddbb7e19f83629c3b894a5b560545551306821b22c2d277105ed35b00af463bd8fe7ed95cb075bd7cce61083fb08d91c47fce0883f18636727b13871456c33bcb3b49a8a9af281d388ec0b01a3c5aebe58ec11e4144a54a1ad732bf31a118e4ce0f96a3f7b0a78f6f2d7654a5cb231726c45404a52efcaf822e99732f5a29e8b9319160e809eaeb0bcb8dd659cdfd83454e071e26e75b18b5348390aa684bed1d6618beb693ed28fc496a8deeb99c3c4226675f7317c083dadfe5e472cae707de44d8e25ad193e29aef8d966f3d72ea07529292909c0a8fddcc1a0baf803a11bb5a49931046c80703fb4a68b970c102f5389e45e54bdf69264b821340d866775116936658d685e9b7aa441faf6c137786be9724dedf5d67f2e565e9d51fdca04902b617f36b89aed2c5bf5e598175704e2fa3d12b2349e80484487ac548eff4377f415170bc5f9492ccf0390baff6501f607b76f508d870bd9757c3fe12611bf699037a5751d0a9107b484b14995c5b031fb95b6a5689c4f8be914418fba38ec15202ec1b15d9d24de494c8762653f27bd49aee408028cda9a6bf4404dde5f7df9481a5a37407422b2a91769174e7209bcac187ea8d5f57e36e27963c50a921a4ffe98ee88c9e08c7f21027bcc974a2776fe9f83889f6b07979ec026d50ba1f7d2d0280722db26093eff2c5a8968c0ce2d158dc56d0842c0c17042ffcaa030192117577d232ca880643fbe57826c933a08a34967fa1e0c3081cec7dc7f3f76d1222c0550c482f172f26c4f2518da3417d1b3bcdf7f057d0b719bb300fb1b7477778f1bc5142e2844de89715be87b17e2519a4280cf2d04030132d2a01e6d28319ac49084fe57d53cea7005c7f73553022291945a40f9e3f347c8e298584979cb6ed7f03a566f8e624509ca52c99cb39c47e40fba2b9a1e103861369e0631480eff503829d322ba66c5d613aec170bc8e03d33f00137e863048324bf27e3a3476c822f4f479e69b11b7f7f98cc89288db465ddee8364e327205be185a6c8ce4bd3a3b9c680cc469be6a9c02e7ef55c1694ff3b237aa087cb88cb7b5e8a0cfb1e9c912c20090f0b4218fce1040b9a84372fcda210e5e00732cae4a752c6b246defd24b8db27763554eb6179085cbde35ce84c6dbf3e4f91ce4dba53f6344fef08c45f8c76322485a7ac0e5fb052729ac5ac25e6ca26d99dfda64cab8a9ab30626269126e0e344bb0e1a401e67806dc9792b245edce7908b27caf2065f143e0ece8f7bd30e22ea4d73f0d63b216b8898b121d828a917bd16c0bd74aa00f995c85a1f55b24eb70b9cc15965ed98c03b78212a836de9acc77b294584fa31c3437835ef4a639b853b8896a7a703621d53420cc0f890095b70ca8c07370fdd079deccac36bfd18547d52c4bcefb49de483a125fae3e4970c2d9680e4e01efa32dc22bcb17c81ea44d279e8aae530086c4e9a50e8b43b18bbdbab870c8d7def0057a2dcd682d334070d2e95f8a2adf7311773551b5ce834e9e4d6d0dfaf51f511611f15c6010475b981ac1b02669890cca31c7845ba766df9466a939721fcd8a85d0f04411a0a7a41545c5c23b9399f1b76595ddc1fd36cf45f3034580fc5966c88111f6550a27e17c5036f9fb1feb771545c41b77178af4c183e37023e479cf5033ea1a65fece94bf1134e6ca0f5854e6fb10a20868a9519cb430fe037898a12d12caa88ae0df9e0b1f4c1f2a694588694e96af0e4054e42ecd61c83a904c77ed3e37c33f112a62fc3ddc2a81eb10fcbd3c86f6305308ec70c352d58c2ad2f1723c16e31dffb3d40dbf72cd24ec4e99efcbcae98cd0cc2ba9d461cbf13ba54412e3650ef55d456f8755c5b7791126df97df61f7467334aa6aa0c366462a2be3b69472cbdafaa8b7b97b62d90722efa5b62b601dd456a5dd7dadd9efae949d4e983c7352ec4ea10b8b8d8b28225b701786cdf7928c0b166de9fda983ab86c117d38cbaa07730f5b2d327cab063356a6a0a2ba6a864496b3db1e3a814753cb4ed538aab4f9b909103f4b76b318c87e1f8617c4e0993b76d2fd18ea9734f4adea7b6c4c9a44c94d83c61b6efb447b1ac2d155536496a5cccdc759b3a1af633d81aacdc698e362ff66b36b3ca0df05c49541f587b8944ab3a4a4a454e2bf3c13f9398493b2ce34d5de3ee6e974e15986f3f50ab1c1ce540b710c308373ded12f4fedcabca6ab11e4b61d96d7f578b2962c0a431d2766cd8737645d329ff93700573c123671e0fcf41549516d8630926a98f65436bae17f323622c932498cf2fc0b0f004001cd7309990a00a800a24ed14b247243c9a7781275a18866c1cd44e386cb6bb3af2ea124cc98eba78df1a00f5c280a91c0f78d0f2b348368659f896be5812377da78a6a5c7777ae62e7183d806fe8c59d5518aad4cf1d08f9f922d4de20b984f9e141fb83d48f94a077e129cf7810c7c3747ce2db3289340132e7dff26fa2371cd448cccf40fb9890dd71e9b391c641931d651b0d83fb20d541b130d256bd56ee06557b9bc27b92ab26e77bb904d2fc48c97549474ddab9b25f9902834ac7655ac716924f53708d24c52db8752b20b8122090a6325a0b1b0f9868e5bd4d4d8c1b4041571cd86f810a231f67d3786f5273568e48e47005701439e0a5f98ec351d460d4f33e7a0047960a4234866fec2effa8da3f8948d4cc653fe559d860db7978092712c27ed2f7fbdefd1fd9d6c2ffe723fdf9d2c28e925f5d13f7553f489f29818a3aa87272a9cac77fc3d805bab3be013b6498e1e006ca32985ea604c1bbd6ed39c5293af9f25160027032436d8f43f9f5498d6e40cdd1d7bd24f00c9ec2ea432b560864b81d3fbd67bfd207b542ec8f44d0347166563a054124abe4161762af51647e4e1db049873241d3f6dc5d3a40d10b1b5a8572a2b9c41e5eed66613de84fb263ae830f13fec37ab6fd6e3bd6cb109d4977aba00e7c2fc1dd3b2cb7d19eae547e17b71c9b3159a2dcb3e2b414ef984ae8d859bc6fe539c4d928a73cfe2d444f6a0fc2d82f7f6c438c6dbc6d78b91a54aecbdc07472949547d139e1f6dc34a22ea5448f3b821191807fd0321ce9d68be44e35c6bb9efd3c2f5349494364c5c9e1b62d64847215ca1b69c09c4fed2af24752a088f889f5eaef727f3c06b59f20852c23d9fa3d9a34ef613a131c74cedb25d57c370d7872a331cef35bd979b937d00bf2a77582859f65f5f9c43c718d73a2ab1c0d1e6826dc70fdbe8d581798a8e8338498ef70f477534f575fdb880adc7f092540183422d28d81bbfe884105608c594dfa31823849a76a5e9aafebeecb9a5748c2160066ea3983e599aeb1d05cd6c2516b4681add500bcb18b9dedd5cd3ad5824c2a6730c0f39c03a964c6b07c171794714dd65a961103f616cfa1306f07142495881fea42a18bbae40c2fc592713da4c75cc73f0590eccdc822609ee28ef3471464d47b5ec5a30f13914c1d6405fc5502deae8a5c1f42016c40620f5f1e8c5db40841ccf97bdefd69a3998fff3fae38c4c433d3e7be4b72b3239b483cf36f83c77546778deb86654539b1f2fad8ab511daabed40f84967101f7a43eb8f00d83ffbe3ae58e7a17862ce4fd3028182ae31acc00930e3df46103d06b7dbdbcbd7c72c771dcf522b49fe919e592ae86fb29cdc4d430c8a036d0af52a9630d15e262fc2f49aa65274f41835395da80e1b52ff7974d767d329bed059e7b287469cda4533e32068a2af48e70efd59ca9ca4a6f14b0609064066a1116f8a5583089ed7c2397c2c8edc0db89b9be74a38351a25725eef0869451463b4874df1fe973cb9f9af9cf16b77438d98ddd90febc7d17d1719032d89f06c3e10b8f28944fc66b4df31d9784c2dc620eea8cdc44a6d4a81c2fddb1e6262199fe2122d72f73bf8abe2dabb6a66efb65727372c14d514bd0d8d9c8c53ba469c09f17bc6a6155dbb2b45a94fde0fb93f78475cddca00b5781ea8c7c9b8573dc6e0dba9437ba6f017d52c7bfd7f90e05bd5f840786422f08e83da358238827e95d910565dd0155532f381e4fe55b4164898df5e0309685ca03fc157224fa8808039c7d01af831d32b890df57d11143a1d6b0358f5c0f87148187e71c7ef18bc58d5613699dbea5a789f2a95fddc04ea01a9aefb1341143102640bddb4a22767c1708d819d12d4d444834afc9e91428bf2a79462c949d5df719d4fb35cbbdc71ef1a76611db1d8ddfcd32a0a0d81f06139bc6f01d0df3119c10f9961fb1c1cf37b216282e53c6bda196b28efce79aa39e3c4fac99f457b655daa2213bedc12ef36cb8c6a4df16bb34ec1ec07256c5cd58dda67c2ca9102d689241c72745ac7f38ac099ec5a2a43813084b3e325e072e01d28ee7ac6e9d13b764b3474763583975d71674a051817d93ac1b7c00499e952f502e4b729704e1c10f429c1ec55e7034ebd7732b9b99734544d8b7af1dde4cc8a0c727060356f8db71fafdc16f974b1443b9e311f0ba5b14c36f7fe9d2232c10e7bff03ad090a6f39174705b99aab4f1444150d3d50ee09923035af32ed8e4d995b70ae30e7611b9368c17752d95e1fe9f1e4e6b6267ba3f3fd72b839b977bbe1909fe5beb18e8112d2ea61a5ce59762fbf02297d46489c0c7d7d4c0282a211420cad271d19c130dd766debdc4d0de9ff635add9ac8c4c90c417a17043797765807626b1efa12828f91344383afecc2a77ecc5497118623e7a1d7b703e3ec312375bd59a6c76d10e30bb86927aee1c7227d4054574f89e0f9dbc1a70254b59029f33f4df599907773427287f53d96d300234231cb50def5ba1e6299e36090532a3598ef74c5e06ed4214f576a98393e298b1cd07475740d9afff852a71b629a214956613a9fdc635b8210d0f83c408d45d1a9c3af63b8dffcd40045332fa2626676ae64cd13234cbde727e4480e069854e8c6ae241967e9868d96eab32b1dd2ee0a6d56670914623c20b5d754ea5d0ee485c161e21a5d58f7a944dc9c7b57f180a88d9ac6665a7612f2c82bdadb8f1f929cdbc86e7aef6a5a231b40b53f451b3c270ba24aa4f99f2aeed4c9264512ddfeef610b35f85dcb60732cb93b9f22303ab7fa483dfa1b6bc8810627e7f21c7491a6d78231a56563337d5543bed9614bbf74949a2b60d47a43b4ee803c84cd556f73684beccc5ad29053e070863baa9a2e44aff73391b888dae073b76a5c403773932e6f4f7c33f300af71baa84bfd54dc899af5851ca898c776d0569f8ad6a669506d630cb96e696961ed962bf7e79f48cadcdcf7c374de5f3bfbb73e4e999a97132c2db6083f2a6725effd1d9dc9826bf1121594152d8992036d7d96d4cb2f8e4c22602623066d1aaf40713ec38e82ca3b3319d89cccc232eec9afd3551ebace856c6645a6857895ed431165a569e00a74c4ecff52fe805f32659ccbdba539819e8b19dbf99db0e9c112a9243b55caf2a2f966694db2a1cac84133ec86a3e439096a62342fd981f51e56f7b25515ba6727d15756151435ce096a34bb8e1d3117642ba3775df1b36ae535e043553e6592782c202713eb3dc20459ad398d1f338ce03a5359447f2fab87c9c26599ec4ee95aa59408ae0b07071ab2422454261f62b640b40b7e43c4592e50b85bf2fb424e409a3e32e25155c0f875c4044374308b7c0e64c2b1d751bac8bfb62905fa630441b6aabb39160318afece5cda86da7251f2b0da8745d30faef9cba345c682063dc6b2d7dfd80f0a94e4418fb2c5a6d8d8ec4b00c178a946d8481a88bffbdcb61a42799207434ada3de5940c6a7a91ed2ba5f98cde5234af6e5bf60a5e9aec3bd786ff388eb0013a1ff10133f39ff30ea8407f052ea5380a2c5487489f4619c5cea3aa4672d7ebfa95fa2708393cdd562cc090d87aab0e9fc2cb8254d606c88ee0b5f590d6000f76fb7fa7c786b0ad7b25f0722e0615b5077b2687fc1fed8cf033e84385d4071c89a84eece4485b58ce3d097bea2ea7f9256e8556b2491190383de7f445e247a24e4496aa4c145453007ce20eb277f4c30dc27b4aafffa3c05d62fc9b37ae0cbaceaea17f97cd89844bad0ba5685612991bd0f51f4786a87a76ac5e7385eb870fea99db43edb693b49c454750ac6460d5ccc49b9064a383f25f228006bbf8212118cdd343d89f905ec99090fd3642520608fb2960ce0a8b5595f8906bf1ec240ef1653dd2a2bf0cf6c11c870b59beee48c2f68b4822913e1c03d347ae4b1767b16c8dd544d200baa5ebc9acf127bbd2617b3091cd6ecab4824c5c1a054c59a3d2324e1f85f39cc06a22f380e26d9e4f4cfa4f03d0b73099f293f0d412ea07741668272c34f6db2d3edc8556521e1d1bab15fb5ff3bc5238d2421fc47a63f7668cc14f80d097fed645e421733d348109c8846417095de717b090939472f50c6e5d2e11bce322cbb05afa90144070290543162f51972fde364f5fd01720834aa29fa71b2109bf068fcced031805cfd749d66b3fc4a6f1e989cefb5f50f45c2870e590ad005d164f40a12c5571a74adeedbad06207f007e0741969a77823149e8defb5672615b71c4182d3557fb1812badb93aafa58f4229d4547a5641f61a17871c32e1f120e05fbdef72623427693840e2858036d0c7ccb797598fce6815dc52787b20a6fa9cee06864962ae73e37e43645731e377a312a52fe0df6f2a8320110c54479504f9723000b7f701e795d05e3716e35655ed09dc342cfd86a4c967286ce2748b82b8ea4d3e47cd45c444ac4e5e7fcdf0e5094a657792578de20f7769ca35dad36dc6f469f995ddd2325604f692a0305a264af87993ccf13601a8951cc007dad9e8c7027949960c0afcedf498f4492c2e71ca93ebcaff904d982f49da9ac8f34aebc1080ecd27cb208ada74b79d9f5ed0e3e217fae6e273c57d1a2e0eb9f9a1367cece29913e1a1111323fe96e2af8450fc90a6a11aa3fc670d26c2ea853f0140b78bfd78b282405ff6aa63d987e142827390607aa78a9858e04d6cf5f78708cc84a2f8b46af4830e2776933fe4474b7e33de05ed52dd61885bc483c8920e5d23b6561a51b16080aba1873cdd4ce2d48447ccf6ef0027db26baa4a2af29aa057c7d62715084b6170070167197c188bed84098d7b9f1876e3585d139e928c051cec647c8101720f968fc2c54f782f1f54b51a1c7ee6c36d55ddc5e13dfb3ba5aa8ac3bd61ba14fb2ca639f29e234165e9e96417526af2e70dc6e570b8e6717a92e02847975bb809520810fa526010630df7eece1f72db7d0212cda7851eb97c14d56bd34299180c7ecd62e5a8855eb2aa669244101c6af089b795621bfc5b6b7fbc8d1b0f1dbec5bf06a8f66ae2a5a1ff263c46a01e44f08fc20bf78817d0c891e7886802cbdc06659ffc14b8a11e83cf514be45540451872ff02aa875632a32c3a2b138308ab67f1b92ba3afaaad01091cf878cfcbd9bdf6e019d24aa8aa4b547a238b105837f871c46a110e4c577f0337a5ba6f66c57aac751c13dc0af8c982fbf59c001cd5ca7864acac8c12a509bc6765b5110646e6ee8521d1cc0cd7261f11987154ee93a5a7830317d52e9e03c9595faca9b27469e2e5e0d37e2ad4ce6223e9e0cd26deaf813d15c7bc6d6c0377abe823e34bb5f372f7473bc2338c206d7422741c4ee6e3155cc22497ce7b6600882b9dd80ffa55476ff450600671b407601424686b3e1f3b91669130e8a82d89711de6e9ec149907cabcbcf2d0a9606e3a2b54b3c44ed762deaba7df78cc17535b2140f9e5bedba04215c98bc1bf84d066abaa9807acce0a6edf000b14ee65ca3bbeb0dc98d29d548989139e82a6d718cddb5a89c321ffe95c829affbd0a77fbe8ddbb93ff322f8945ce42a7064e20547e65b7a7f0be261cae8650502758f9b1e07e812bc8c300168b0e1b749597e5d75b1df8f77323b643de2befa29271032d32bc19004a3b19bdef3aea7caf2ce192cac956ad74a01a8a8c4d72b3cc8405fdca06910db2b57fc2b6cb987549beabcef47a05b838701d6b50cda2f93fa9e9b334cd7bffc4fd9ba3d7d2c9eeceffcc61e4a8c27ee8633c0b239740f41b33b614fb9f4bb32889c304f3010fddde6851531c88cc82f6fde69a894530bf49b085b4add379feb61078a15487a46b4c70436b57749ee7b4853ba3246d72ea8492e0cf2cde37866fd41a0f6e39b1330dec3ad3a2e279a5aa9311a0b14fb7efe47303353947ed305d093419d321c05e4406ca3b641a16efcedeee5cd884dd9ed18f19e83205989ab891b93c28503df51f65b2ff7baf5c27b1ff6a40b73df060dec31058204e61e028f6801fb2350d4ede6ffdd0bb17f90b1d14d4abc373f523d9578d4d254bdf8583e76e5c5c6525d5c6712f9e83ea3c866617482717ee1d96a51777c4b08c5e5934d59e704f146714881c2c12e300cba798ed7c83f896bb68fed256a5d5e46b206b36039f88b0603e7d29734128e4eab696a459607548bfdbe6fc48887f55beab952f65133d1e44ad4382a2129c66c014fd0b5ee83f96e908de270f33cd5ad3f3d6c415fccf5a99b282b64387478ba30ed1b1772de012a8b94bf38e03213647b6b616671d6d3eaa1ebe2715d2676d00866499a4b47aa300cc8d9a8404f10d6e8db5d9798642de347d549295d5e8c5138476e123d26a5359780ff414efdf834e386f7207bc6d1753a8a6938f20cc70795e1b83688e1c4dce1f5090f7d334b5909284432f3bf0c110d8df758653b833ef82e879b508f2a269c2b71e042b13795045dbbbe61616a57c4ea2fc20fe1fa6d2cfef6b0d2ca0b033af0d091ab2c32192b35fbfe6dc9b43c73f08ec94d195c6424c6439d8565127743e98afb571d69924f37d621710ebabd87b1c99b5ecd7c5da5a1c5f5a1aa572f8c961f81565f6a6736c6851ff420b4c468242e67f288b7e57018285641b82987f6fb0da459db0f8d662e9efb02eb6d4ebd7f8b0be8295983320b6eb0dd0e894f2c3822aa0ee33b8d0afad090b30c97aa41fdbe49b861ebc34bfd3216f10ca07dfeca0d411b0069f1295370cfa5dc6e0d93bf7a7ae2c168bb62cdef94f69925ce5121e816d69f0f797458ce7b0c7d5714b7249f27c6a816311db978413fc76a0e59a7d7b5b81d851f0a5d4351c207937195c2dcbfe8a7d5168f56c955647ec8706d2278b1e05305026a9892503814af817e0e03d47406c19b19196d7323f29c7e343b404047185c5315168b8abd3afbe91680d84770021a8e27984a848b8b82717586a0e1ef4b6904b82d0b21dbf06a858a24eef589d2d0512e6eba2dfa95e5cfa3f75275d3ebc9c01d6fc39bac140be6a9c54e44ef6c8976e5d0fe8be88c8979a942507d203e53eb16939604b588cc59bbaa714349c4dd73f0581686cd39f09e1f83cba7bb67fbca6e63add643c10e04f767b963cceace69fb36ca12f7963e0dfda85c3426dc1777566748b347e2376ae83267af3e063bb0594d16537a53a05aa4ffc63f7182eabd8b7d2c912e161c7dab1ca3af4ceba479d7154e8a351f2445122c877284458a55e5fc7e25193f6c6917ca6f83bad84dd4086110e6cd5c103678b742c1c7c66f8c2b032861e577afb937730ddc9d416712b6e2f8be3ed7b7a826849acb41de64056ccbc8a6ef40c809fdc3fbc477fee6c029df6196eb3afa67d20c232a94102e3eee1f3faeaf7a3555e9ec4679bf9c8baa3f612ffd15c9cc7d7a5a4d56ec6af55b5fd2f19b1d5530c0945643e633703e73800757d32f98306ede3a42bf896ca2d73b32ed56c12d903b4c9fbb16735309add08998e58265a9ad0b06193573525cc60901dd4d7d18b603c8c6cdc34db03f81344b1aebea3090d5d41e654479b6893f596732b396e33f36c89bceffbd6b37f9d173e8cfdc7b63b1e9dc33f9ddcecec8a79e7a0430206a7927e1cdede854c9b4cb3bfb30651dbf0b0e120d02e9ce7436dca41287bcb009158905f28b126bc6540a1869cbb241a8c28e028ed177fddc2f1f316e40fc2ed31910ec5aaaf3a050b6cd36ed41f0ce751d653d900694998546e7693de576240f226f2456623e03a38c17907ab69ba8c4382608efb48e2008f02d380808ad211e41ebfa27f61373003be9ddb79bc5a45bdc37cf453b07810d6c5bf538d9cab97607731bd075f351edb0ec4e660f0eccb7bfe8ba9b8be5946eabe335a89e0b9b7b4b6d2e2f63858bf28e2de16c1bc1675e2a1484c81b3c4f284a3f1704186f46f77209597fdf6a13ea115f02b39172ee4c5e987e6d6d481bafb1bdfb2bdcdd9d3924818348011aa38ab12b6c8bd20b7b54a88ea55d4c52fae69bf892fab00eaaf549785212fd512d43fa5a3c1f1a390682e361110e2b97218e48086a410e50df686cc15e472847de8236e87c34d8e0556eeb4ffa3ff5b1013f6e8ac65b768e494f6b7e6521d236313d756c49e75f715bc657f6cba89a56829bb5cb18d1a0121807a0056098b0fc23da7f48720de561541770588eeeea69d93235c59873a6ec1d24b8e0332329617d3eb1cff9ca9a8cddf2ceeb8081b13213094ebca9a97ba86ef769f06dcfc69fb5f548f2a281ec56dd5aa063049b2f21cecc7fda13cc9407915f64349c4c5a7786b47ef8051ac70b09f12f648a7405961a9b4285080ce228fb45bce69deecf7d81ddbf2431b6df465c3b2515f0a214470f11180dfd18c2109ac23fee2e25a8bc7a968b1363def0131de9b3f4ac790703ba78da1ba0c6c640a605e056390b369cd2d1d73ab2c5b6d5d03520e6d6d71687bbd09ff03d98b06be77b3218c4819e76075a16f85653a76e92b3d215a68a7b7120819f641c7092dae6993682b01df9c4c87ba5c6a67b49d0bc7d404d286bf057824b1be7366ede2ce9a78e7ddeea516a86d133b124552a7664d2b63e81dc3e1c2516abf7a9e96c374825a5ba255c058436d46aff08d18203aabc247c74d67de39f265f4abc90b39a64cbd12ea96ca638df92206b71a38186f2166cda39de24a34945459f92329556fadf23bea1a6cc5de8d9c827989bbffd650bc4cdcc372283a1f45e94bf3674765dcc3e66c70555ddf7074100d73531c8090e70d94bf898a1d5a41073520249e89e04e307e58e51c3d30f316bf98a1bf4bb2ee8968de656251c14a592a4ba86daa9a2c7273acbf8e024de6dcb84f0e018342d778edbf933d6eb10e9aa900c64f005e14f31c7db7f75076a29cbe390bb20c4aafdfff66752658ae647edf0d9857fb567ae38e31935da38459e468e44cc42e71c154e94e743cd1b87a71148d70264702882a8f7c466891da32a908325a1c564732df9668c64cad1ef37d7cf558aa6b36bcb3c9bccadcd8d55331a5e9a8687167e4fb471b24cdd59dab553d60d50cae040680933812b2928b1d6388757b01f569b678dcf987b4803db2100e97d380417a74722d82ff267599d158d4913505cca105675f8948ac42964defb9414d95f7af6cc2a6527de0b5f33e005d10a29eb8346933eb697640c867c59d9d05da4933726f8d75aa2566d56cd722947a76a0228c1a2228c14b3101a0320f7b761fc028fae15222775b6d1c10bf74ee9be773d5d00e330c5338222eaa66d45b82ea4fa8e8afc2112715ec3aeefc2ceb59d8f71e5bad85060540f095e2915ea2a8a2e426807e1cbb7ac894029651e98744b18e9f62f7d5e768214123166c14538361121e37ef2a0d58c87c674d2128a4e162dbaf3810b16a2247343192d7ad604d0b43f51859cc3ad4ce491d85f7d01a4277895847b56192983c120c6e48d0fda8be49abaafa15ab9dfc32ebc04fb15920c69b3813391ec89a0d151a09b1273fe85d5127c861165e5af82882159abec24c37c889c01361527cc6c540dd310d04a15f40148c86492d68f98719ac2c5887c34d1592758ecd60020ccba644b8a3b7af4785a9140e715021a0aca38e4e4b06f2121c1cab83e43fed702cdc0b5920b6999fa85d93cf394a4bbff049afb9d0e082cc2400dce5b2cccd8f0f8f701182d9b47a27d3baecede3de4cbe460881ac4811d0effc1ffb5cc2ab9347b01e2e3eb93782343665680f5b4ef1c1f7d100a55982b7af29086a3e8c8759c6a4d39d379774ddcbdb13dc1670b17d2a902d1a6f90b9c36b2456d9e83e7bffe049b5bc34033ccc383cb362d23726ffe9fb7977205c6b5d6b7c86642a7c161985cd83834f97a3af289756db36c089666d5b8936fe3e09130e2c0d44079305469323a58750a9abe1c507508a4499cacd876f039bd09720961565ce4b54ccc7cbaa927319d806c11ff2125407fa459d1258c6c216c6530b745f90c80e9991c8ee92d28bbb227a9e7a75448d56fae3608ceaf712a887ba4970116e3a0e27ac7c07d9f85140364ca8f3427774d19159c4e687a67d4512a7f5491b781ccd0c4c3416bbe5156852f33a435d02cccb2202a3e9c69a46f60d97704dfe4f018eba91bc086ed992fbb958827c882a60fb19d20354c6d790db33e4c770b8201b29eb41966661a42d13f94056d65805f157c1eef6f88b87940d1ac90e6c6acae7ae7f447d8e2547e23fec440dfb9f9ac60efda6a841890af9d65f488a412070e222365944d68206126c9424e18f81bf591ab3349eb7c14e319f908973c09aeb1f87582cc07b97f3c6392fa230168766118adbba6c6630c4a722e9c68524c6d76d24835f213b6e21c9bbdcaa5de6c6cad0563c017b6b3442e9a0f42ad226b0823c08a12e30569ca883e81e5ebbae57801078779ee79cb283536b86c4dae027e05b090dbd51669b19a395d386fdd14a021739dea51414cd5a4b6eab57a7c57a05c557c5fa8c07d77cb3da3332688b2a249915327b4f5bbf545d5df79d0b492307ddc466de422dfb4c35cce60859ce39b45cab67d712ea7a39d69469e5f49fc2557056bda4353dbb144e9b84b9f332d1f81e0c06efb2102d5a2d8298497b0f175caed6f2534f3ccb046a1769c1c39b2132c327000d8c32e03d19346d2f22117cd75bb819f08d1e59c46c61b3b48d149ee73a102eba32c547236ef5c990e444f8fd9221e3afdab01e2900bda00b07144429e48d5c4a2c8717640bfdcb28dee853e00c122d14fb19cafd61e04e9738b84f9c36952e03e265309cf38d8aee433b30d34d57694153e83e1be820205395077854665c9e1650f268a5138ec2489a8554423bcb9f59338d529349e91f266ccddb2ac2c12b17f2c56a62e01451a0362ada4dfda285394b674156f273500599c7eae452cfe8fa669c2645f36e6d08ca81a5da23fe4b40bc511fe3bd20dc9392d757ca25925da19f81b84180602ccad50274a6764a4250334c1a72dbcffe593ac1511b416c69f48bb447ff23f641a017461e9f24221a08a88aa9f4f826d8a60fe0254d90df746f8947d59d50bdb20f1087f7bbd68f52311bb456cc9d54112b2ed9f86d33e16935111e1ee04d1b0d4970934105c0a98ae2e406250190fe200dc1ace5cb9f86ac37722910c7818f55d01fe2b8311059233747fc6db369343c0fc636d12574f067f150fd54b80bac2f4a418091b61474216cbb4d60ca8b89696e06c5d4da8f049c3e8eb25be03e6e6a3c65ef2b8e63c9bce0318144f8ed5660e37811a641ce64eabc54c90a3e1b9d14c37004fbc047b6ac45bf3ce0685d5791ebfce0d1a1e324d3fe9998028283c402d433a434a6286c532acfa3e3aaa42c3fd3b4913f8cd726c40aa0f2c8d2ba5644a6cfe51a5f48ddfffe0e70d47e10406ce63d7d84cc6f015fa352e2d39f974e55726a749b6b9963b890718475499fb1fd048428c292267ab0ba9756e8423cc560ca246bb2710b612b0d3c70a04fcc32616911d97f9e7d717eae6c60b8e615a5babcb183eb28437d509650346a41756210517ac5a18da1e0c684fcfb201d62961df9c31cd54cf42654c9b8663d223088345de08173ecbfad50fd249a266e143f9e966048afd847d50091d12bfc4904b29ce087735f3bc9c570d166c55f9132040e6d0fa49f1f4b1820be82f67f4c4b91ab57423ce0a1adb945dc8a15e4093003a1064dd7d7493e278dfb8d5a09dc318a0f9b49a1b3928c8eff0a547e619fbedad0874c4a3b67504e202c5ffdd2df30f7c3c033b12819b7915dbb78a15515eea9e65a048ace0b8aa8f8a9be55c33e571f2b4dba2e7feb1e502774af0b314f48eb87c010171baa65610dd8e6d2d2fbbd9581b8f3646507c231511e0a718e0d6c3541b4020ba0efd39314a70cd18b436ae89325cc5da695f57f0ae6a8a208a1ebdd2dbc7b20847092f9dd2a40756b1b4cd2c8687f58fc973dedfcbb01c6e63761eaaae98351c05066763d6d7a088350e26c1bb9e1882766e53d23e0e83189ed35be0a0f205aa4d6c7d2dadd10d533a13f4979a77e370e636deb12b85e0f3ef3f7b0822b708b06d6e5dcdfb1b08e676618f8eed7a7f102fa9b4ffc5614cb4faf70281dcaa160829bcd214694858ecab784f5e9abe4d73a92a056026318b949813f019666acb3e06d27f114362b401346a331eb58081160e41d4e7fc6688d7200499ecedc4563c0964f4f83c52f1e2b5f53b2110c28c62963d7dd943f434042cebcd060cfc15a90219e992cd2eea4fc16a8ef165a240662a74b30a77156fae464b571340846eaa5f7840ba989e0b69d1b2d0235da366a9da09802259546512db8f8da629d15725cb63d62d6f8b23af307f2535f2486bc13783016b65ca59e02b60499d0acc7bc9b54696bdeeb8c187bea576d15a676a7dc2fd7459a8b8f90bb68d51f69a3c2b63b3e2094270fc67844b4e0a62e776b10708e1737dc1dcaebff38d44c88cda89dabe0f832be2da070e252384b3dad5cff9150a398399ef991f7c767cf3c8909ba49125c363ce5d4bf1b5ab42d9d89953ba1df15d35154e85b0d210efa651100e7c168a5304f8c621e41d25fbf0bdb05f5c2f944a0095173dc941241219736e37742c7ba5d2a32fb0df4be2f50956e8fcc275c251c9da96ad15583f704dd07037a7a88580e6c7795fad862b3f7b1350d8ae4c5b6e62ea26b723180251fcb5a9a7c4bbb08dabf9bb447553b6b05603da43dea16bc2f85637f1f103397246ca501aac4268f70234382b20e808056289b5cf0ef7453529b96d4fceecc42bd134340f9e8094eb464c8f51eca2e914282ebda9b56bab0fb56e9e582446068d018bd173754fe502897c75285c8e4c7f1af583c673a4e38df237911186fc5a98adedab78cf09b50024375c83c285e997ba2f7a39d29da09a969c2bc9f9aa48ee41c54cbef7e318829a770f08d16afa87c48a1efb2b534534c0337a25fe72bec9423eec2bcffebe207a4f0712f56497b59d6bb03925270d90d143b459d1976f721be6af77e27fdb780599cabe126d207c28ad02ddb16abc91378925d443d2ee5defd82fd59c459131be3ed93ba72a8bb8104fe09c76b49df80353c3c0e9d5486b13d4e5968f80672570941df1ef14dfbc0b366c7cd9c350181140d116dae68bee4a5eb578caefedf3679a4210be55a0dd71cad1446ef9c34b447c252e925c2933e2d11d562277cc820d9a3e5554bee5acf3b0172a8871a3ca0f09166136fa6f9409ca417607c2b6c6aaba5d082eb1390fe812e19778e8bd6d5056988731b8547689fdd620e64de0b2e2800647a39786fda74c7beb9136c6e16ffeaa1ce3db10079ffc40a13a2b83f81af7b51215d1e003a1d85541634db6f58e2af09a28e18d714b85871c38fb6b27c1f0ef410aa0fbd41482ae07061b1eb59c2aea724166c56f350002e1b222881ec868c416191fcf060e7750b9392e9055246c23c4b5a7894c6ea2e2812a3121e8b0f7fb67e0bc8e83a41f4091b02f06ca0f120a1ab87fe9806b3420f42cb37e4574c714ec80d745efd17df4437b68edf498f7281a81019b3c64a5bce57559bb55abbbeb2f2b7ac5c38e69421f3ba4fe85dc071a43b9af13c3a3f3ef3f12f6b7f4f87d1e160ab91c300a344fd64b466ccc1c143a566e901ff151822013382400cb42714f33817fb7fa09c4edf0cea67a814804f40c913b5d5eac6692e1dda720db623bcd1a72c39643be9e635569533fda9c0d04315af74c3ea7073a6d4a93053eaa1a0f8e5a258445aaa40ddc562ec46cc2a9d89752feeff8034bd3c00b784b070213f1120309cfc9f161bede0d2629c48bd01b89605e83c7d348c8941411a29b837f1642e7195680944eec0472507886e33eefad5b57d7085aa66b2080c84a792d275a0b8b0f51c872d53d76942a441c78e3c82ab71b8b6197858f070c520ff809c3ea0fb1244df9c77f5faa03b78f6264cc2a2da0e87c9a81d380114ac7bcca78eedb8f0f45ffb85daf8dfec63ae6f87caff42f64818c8fe173ce104ed49d13c1d0aa38e7d1e86abcdfe8db0cbd4d029cf709882fd08fabf4474ee814e4d14c56c66f05e7eb5d10720b154b9c7feb18c6cc6352e24d7014739c9b610c22980e459fc1fe5f9f430a62e9e83a4d4b693f901ca40b56e7c030ccaa156070716a3a8bfd270cf5c7a13b1bfde888a7447485bed8e90721038a71cc125cba13e65d46d898bc41a0e1fe263e1b0c35790ef7fab62aefce8d37abe00081175f83ec4d8899ccb59514a93c0ae93db491af97c6a90071267d75b07da4cb3c24935f8bc03248f926d0e2015bc8bc2c76b5080d9ecd517650afaac477f1f08107c39012e1a375592997cded6288310cf5f8de4887a9fcf7c5ace1a2012c8c5fce8500fe7c8801ea875e0692b4352d40952e66edd1042700cc477b0031f82dd8c7ad610863db1663b4ba173ccc576194277d4a81b9dbd8e66e106dba15704d2508419c42ee643b97c7939597451b9470a67b5664a2bc14e5fb5af3ecbea7c498c96522c30cd8d46f0ee7a200ae86fa6ad2e6f04cbe4a9d2758c9881ad63efa53ed232d8f4b5ae14c007221a56fb3d9218c2560928149b1cea1e4e85ae22c039c5230e10dca5054f0ef7dca01f0675bbf24d9909c83f215ec38e0a912d03b07ed36585853e48087e828ed383393ae31a5d7aa0bbcc109875232adc2d999d7b716fc393760f00c3300420758abafba1619f4ea6a80fa4434de7420682deab680c3071f586c4e3263363ca56e509523ac270d24f03718a789dbc369913f2f9359c31547df8995f9da7e10ede4f25eb1368de74a61b125c8798c3d47fc112f62e56e3037fbe451cc08b1dbd3542295e0294080281578027f28d2004425d61ba224d1e779b47073bf76045251c8fbe19745b735de37f449de8ef04004c327951824df1dad9fba5f2442d2580333186192a409c05af2a75d651dd3c904cc46329577f7fd1084880577276162d0cf39e3ba5f09d47897028e7cd59bdf35603f2c50dfa930c4be7c17cc8887966743f9a9b0b32ac1315c4e3ac99b0e89b82139cc77732048f883c1d28ab87ff2cffd4bf7cfd0a8c066ec5d4f34c72bc2ed755b140b91b2c71236a1a77b96c07ca9b7d99269987c54bb7cf3c1bf376f6068d8974a1c330944004c255763889e08346b48f8cbdfc31c6bcf1b414e63b6881e112e5b2e4dbe326f28efe510839f5934fce72286d451469f0d74556084541a730d354ce08edca47adcc863ea3a9268a6bf2870ce46cd9778c9caba1695190ddc55f903f7d6a1c4462b2f2dfd2c8503715c2e7ffcdfe656e2b8c271b0d02b093771dfe5e84e061459dfcf44c30782864b310388ade8930c75e7b741eda75fc50f403d78118202dec35ea4b8fcb83c3b0dee06d0743e297fed9725dfa1f2e6309f258ffee1d3241b60ebdaa5c83de84cdc5b2237c282c0320d1a89b7b1093a851f8396241c29e1278197ef74ce4dc82a4a4f278b718981337130f97001327c12dce6bb4f2b4bb96a0fe625e85fcf3509a724a78224162e82da283eca8696cb909b43b580f30f49d86632dd4ad12bf6fa24d0438a1b1ab37c2aca44fe9520d1fc58df015ad476633bd9e3772b47028d5b8f1aeb478b9f59093571c0488a6fe6f5b8e3f2f203d5afc0f3e9be3ab8029c2088db42b40942af03afc7796ca48d9d0a58bb114901f6bbba86d2e91d9d5171a832f5fbb5412ae0d4d2b22a8f9e00e1dcb978eee061e021011c3a5629186a37e6633e0934b524d63fe6a8b24ae096c087453a8cc47e19186d0f4f3e4e8e529112ba8cac643a76de6ec4350e2ee1c5a5c11e24b753ef2507a15147308bff4ad985cc86daecde0551cd2f4d51a173fbaaec44f09e29bd6b8ecda664df73c7700193b7a001132b239edfe5ea0f23b908a7761427327dc40b5fed9fc36ef89c10f5ed173ac46329b172442612685e44858ef41900683497a3ddcaf4b4507ef2d5e929eaf7ba0ac41b02fb4509415f3834556efd86b8fb7d238ffa9384e1c6ca3474e1f62e85e47a59bd16bb2be4629d5ee1c630b19db0c5af57fdbb7ec6f2cf5c4e5d2a7a77d848c2f04a866602f1bbcb623c43026d7d387c2ec9bbd25ce01287d64438aa625b7b755b55287b6352eb587e8adce890a98ddb6cfd52d1f7bb79f934dd792cdc4ec0b8ed521e3242fa3bf177eec19ba726fb5b03dc7da73c20d4df48766027771533ad1b7b629e867686bb42b5c14dcf80eb348b3851e5cda16805fda4d007a1d24cec9af1e8f1ee36017cc1ec799c0d746739a14cd9e5ca578004fc11993ff8dbf09914eae44d38a5a01a180e3699bbd22f9f92cdda9920c0fbc4b745cdf9c073581a886086da941a2691d753b1b78c1270dceafc55f4a5afd329469bca2f8f39ac3e808b06f29f5dfd718afafaed0b3d55f49d752f00df575bed44b33173c9d7b6bbecff055f8b2a80453133c7dd1f37a7f5ff3e85f85c6094d18a5f85bb6166eeca1aa782ade0a249e646339cb141e73c74a90a059763301a0b7938483755d05192aee56f9ecac1f3bd971e3349bac81189e88918335067f44946da46477994f29ce69ab03dd3c1a7d2e130f8541def5afa651ceea81d4509b1ab84f26692f06004a96a1c0f1429d46dfe03a0079b52198968982ba6a9006a92fc1301bc86924ee93ff7bc92eac22e0db01213a6a1a1b223f0407a9ad7ca46c708b3b9ebd399bff9e957b00d3af153c2a194e0ac937791b81655e5b1b2b396d1ef575490242bc5fa4ba64929b0d0297fdc1e649a241bcc9a6e87837e37e51d5f1347cb62b0377bc7ad259811c6c2627e09ebca401de8d44e0bdb99425033f1424378e717a767804f07d6e6a8e03a7dafaee0961d9ebad12df358bec41f86be51788979e0dcbc07b2a15afcc2c76518710c5ac6fb92d79c912727dbc56683a0fda7ae3ef17300a23fa571d0ab2400c926d0a35942853471f297c71c9cc1e6941b16166cb584c33c421dd227a0203d5df6138578249047ee61b564184a3a7fc264a77552109e6932279b591853a72e2bf1812876eab07f3c2e914d54acd59340227a5797ef3d893623ff719e57d989562af055bb269882cd2c29c875657e0d3e22b7b864d7e3fef4a0073100831fc40b1ea6f379f3c3a6443d7c5fdf8eff353ee6a6adde63371f47dbd708689c517bbf83da7df2aead79e621701d4afba860254795355a617800880cf7d62811424225e4dae244a2db744fe317ca3705c719907d9fc8fcc77a0892ea96ced08461ceac49ed32066e07f0642a5279982729072f83c04e151f803a47eb79e9012d6b7ace26918233923963326c42d82edfac863cd39310255750c945072915608692cede974a7f9e7eb1b58ec8ea16bb4974bb5c2cfee7aa69839ce70e6601cf51f2239754279ff70d2fe8fa127b502ef23fdb415d71733e03ab744831713e2e48c1614c7f6cb3b1a7bf32587f9ca9aa84e858a7e9484daffa595be13937f691f483c8e3c336ce72bcdcb858a484f40911e8be9a922295aa85eaaecc04e49aba47c934a048198a1779e5fb44670d9145625ccdd86dea155886f27ec05104ed68265282975ece522657917c06bc452b7923cb203629fd5236664e2c05fe9751339184d5116d858e0c79c3d0a69dede19358e9093427365f8670a0ab99d9b73a00ffd2f4611196f51917fd7fe904e49c97e643ea867ca4c4c934f4d1e51748d742f81b3d70a3b7a2ed60eddf3ab45a2ecb81fdd7068b8d18acb7b55b4d406444debac6fa89c6b23368c72a3fecc173dc8100dfefcfea8be3996a6adcba2d3337b4de4e8656280862c2763d840a079731b13aac614b18e49843a736da236a7697b6fd4b8025091f56ecf898c1a9a3167a96a9209cad9110b8a0c953cf8426fb208b542f41ce7ff9430eab5db88df2ee86acaaa6013bb30e178f8c3a574cf741db2dfde8ca800d6130c4bd41ff30b3fcda0699755a68c84a964768d9c34412cef036a633ec301bfa9fbe01074f94e6aee545cbd98cdef25bd491d02b124a6dbdff1c8809ae1c6c7c51183ee9bd50f092d6562ebcd6d01551609aae8ec6d5df362e6f269426f6469c6e33a525810f02310a75ab384b6391c8b86544f3f7057b1a7c335b96291d2e362b2c2e14d6399fe976bb74e7959383249cad34fc7b741d27fc5e7c97f82a8b4ea25983ea2400e4924a34b46c31f1fc9638ee60168625814121d9825fdd5c59ec314cbc0df383942cb1954bcd8f5a9a798905fe6d0036800f67e85509ab42a8c696b0d82ae341721684ab467c731ef335b9132c11228f26bacb29d8d8122ed22b8b5d16fd615cea41eb40081d9661baa058ebea09f7669415eaade94a464f32932fa6470645f4e45de539249eff61f8f70979f576135e20680bbb2f9fc3356673a9f9af23897ce47dd012a4afcad6b28b5e1b50173c04e477b1115c34161220a226b56143190ce55a231c41b48c91900220868aea9919872674da0a8ec7b3b6f9e3a3283bc3195fba96e26594284614f8cafa055cb37f4d9501c6697314f31a8450821b253704aa7b8e67ebe0100b334ea1d71987227928a8e6150353ccad113a8f85ed9022b62f1db2817e0b069fca8308ef989b9173a318a659c19761fdaa52e9e4ca4ab0e456ccbd760612ea81b61ba8ab2f8c3b4a3c395d0f0eb97bb087118c40d551662edb7a08ff1cd886e8517720a85d7f3cb3b5b0a1038a585a157e3798d08bd87a8fe793ee0c986a81bf0360e362e4130e566c7d82894f4a568b2ce320324aa4a1b9e9bf604cf864424c3272345118a01251e633dcef2a85ad7ca7430acdede7d6aac854b688013c0ab5095273d08ebc5a2ef1b464be55c71ac8a20c01f7d16a7cae3d8fb97e0494a62d41c55cc8da6e81bfcdbf83b06f1706804af0f689cae32cd279ee6c1090dc6379dfe903df4003586da86c21893968aabad800a8eb048d9cca7095bcd589e59ab575820fad2508130121f6107e4773d0d2196ad1f2e3ddc9507c2dcddb45b47c34d3964fc3c81810afc5fba4cf23413e043d99c1a3017070438d8a9c7654929e723c7a34001159534861dd423de6a4e2dd5c3a4204e0adea97019156b698e39936faafc9c09279aff1dbe630b40b9da76c298a1b664a8687d3ead85ade1c6b8edee66d5d78525d6e1c13c66e889c600a8ddf7f4587797f9a866730b4fd2db2850e94f52836b8a925c681700d58c47e640a726b724746ab09f7328cb64494568bc54d15287bd5200381bcbcd98ade15a81ede63240247953bbbafcdabf7f6c6e903fbe178a2f305fbb261ab8144bd9525cce6b0baf08ae33c0b7184996e5ecad838442ec90315fa9c6142d1ab0919077a61716c59ddb0560bf3d20395efa771d7cfe185cce6f4eb93c716c81e6dc8b8d0cc49c0f09dfd528fb5cf631c63b4ff5a0998b96ab97d0303adc85f10046dae5873a300c63c5ea71368690800b8226c1d9158ac86789723709b79ac67e85fc720559f9e9a3e3e525831d4a09bddd34a6f356e54c0933a5f40eef2da3e164e1017518746514a0d42c70e33c4529dafe9fe548e6cf52b9e8a0aba1ee3c9b0c64be9ffe962d27eb3d50838152c05ff04a0b1cde7b727f8f590278080a6e17123449f413754b51af1032557723a892cc3526f0bb17e59715da7bf8cc82f19868e4bcdaa746986e32fc329e0b621a6e57d3829ce4dad7e86e1ea8afc5aa5bd9d03952286c7a26f11b46b4eb24c2cdf2b6b9feda56a2f5656349674a863dcced59845714a94f60e09a30a99b0d01d110af59dcb86c67d69efa9bd7d556eb9c2d7271c992dc0fad8fd5848da3f5b0c1ac59e706079399db3f1e3f8c81dd3835cf0fbd26e98848256bf399e295a0434c7875ba4e03900954c5b8f1d81d2fa2991305500fbd95a34b28567c17d46aa0ec374063743101034fbd0bd33e9ee60c05f8e7087b57fb556d0d2ec92716319beb4e89a4a133bf211f89282a482326fbee67b6ac6a121b8d96b971978f22a6cdba004175562c7a4dd64a26b343dd4eeb27e5f578292b34df665c7e7f1653fcbcd21aa84059edc908760b7246e2e92281b16eb1d79b464127c620992488a2242ca0bc3c571bc08b78d8df9c699c7d908953e14306b4aff00e40a8a0728cd6da60487d83a498590ccd6ff03500b09784f29aa7a0ed1d7356f14218ced1e2cecabd6403aae219aa31d57910f039800ebcb4e25baf54e7ea38ade29df48d1ee69f2211330d94d694aaf79bc8c82540c1d2456ae7d929a19cfa7170d956cad06a8fa7c6a4ef3e8f35cd6e16b163031bdd0e091fb7561969e7ba1c94f821ff1fca3aa661a813c49ab4c691b515be282dfb6a40d9e934bfd6673d7e6a0f32b4446c6ff768b9ae1a06049f0fcc94587572d30bc6a9b0e0301dadc28ce289cf13dd561f391f23d2c3b3b679a0bfb8c7efb5eb0d490395a4144d731be6451386e73c13a59dd4f3f470cf870ccc7fb4ec3fb417bb4707646019932dbf12a129c08a7eac548ed8729a717425f092904d94efd4fc5662a82b321f826c671ae7b4c29fd9734b5cb33eaa9d85e50d5404aaae5dd70dda7112dba193dff00cc9d2d43c3b12784a14c9850c3462db6617467948bab0175606b4d675f909c9b6348b6016ed430febdfb88a630fd12b870654bd2d5d513c34ec54355ac5ec38cc79b3e82a7161aff441f919876a9bb09e2ae1aaa03a13cecb39d487f04125e60107ef2d118452abce8194ff67139c1dd1c36d416d04984a1ade57524c1bca37fce364fbb64d41a15e305abd7d55c0a488f4e07927d7e7f90ad0d5c8408834695ab6f04177755153ab200f987922746a8c84389e681fc59674b6f507e6ba13b1ccd981f070a332529391d3845852bad811f899c5f08334c7f4c8f9be441619def57087ee11178abdf8138af6aeb2d0bebe95ae20119f778884e3bbf4bc5e81150ea1f0098b1cfcb2a48e265399246dcd099e207b00c88a2f3b6ea36f03818d0b9b281d5d157350b03ced304046e7f97d17b3b20307a54fff9e38edafb2bc7c47a19c90d6d6d900d135d91454e0c7fea4138158b9d368fc57d2fc0a621ca66489d866160cceb5a932055f869906725597a883ee929ff0951142c64237f04d7a1cf31002a7021b02c83e6a949deb96de7e312e98062617e4f2648ce2cfaae73c92fc828105eb081426d306b3df0faefa8d577c2783d3cbfebf4538ea82724b14074dfa25cdc0df87058c07e260489e9afcd47c43d769e790cb8cd7968006c0426d8aa8da745cf89b7d2801412e863b5d15853000252057d12386f0c19ef6378d8ade56a084058450c873b4a8be8c4f90dcc6b47ecff7352c401eda20e783bef1bd53d7ce05c58c9668cad15c47ee85fe9a53144bd7f8eb8e94e1e96fb6c8e95137c5121a937faa8b0c38f3b844aa6fad8583ffb5f996c907ae31ae2993c7f2b570ed14557982389cae4bb9580d4c4acd6d1287defeba7a85e31f864ebed0d8889112b699e5be96a9a3b2950eb44578ddba671e37ebfaa3c07ed4881f51e0754adadfebcab0f205a9d97f78f606acf7964e7b66eb44623239baf11f1f70bc965d943bb25024747be01dee0f267573277abb171b90a1629f00fd884148e7fa7424b88a76101b7a8cf0a9c13a63f6ae3a9b29d2a22b5290fa8e2b0d48b9ab93927acddbbb947a18630357f75fd9528dff908e67626194ab12a8b656056a94ebe4c645b1a6d8f8d7daf113b527a8c528a13a4dcb79da7b49246a923484a0881c3d087e5f01916b4f9622596e5692ecd030e0275267ca46eb05e37f9ff56d3b112f90f9074ca46b48e2ff121c53c09dbe3bdc2d418dcdad8c8e50ad9f55c8bf0951f8fdd746a2d739816af9e2177ba77d41bf3e25d367ea17155ee921a3e0530279da9cc76aa2170597703ee1d9ad9e84bd89636d90c2b06047db7d493106e1d72454ab9f9414d182c44090084b8eca815f3ed1e939b1ac500e876213784fd7b89ff800e79e998a087cbc84574501cc2f116714ce109629d4fcbedc9d7dc1982d5004dbf0b2d53b0be92daf8b8e96c4d0673aa4885dd93fbc76c9a5608d061d96a8eaa1298fb0fde7a2f533a7ff2d7ba9f4ce81ad9da45061dc3b858ef34513303ae89a2b74eece98f8dd02f273583a760bf0dd06843efa313bcb0d4f0dbceb85ffc4c1343611103b6415f9176aae2449002463d584d00f4c8a7e7cae84cfaabc377fbae709fa9bd5edc777c4e58f96335ea5ce2ff2ac5eaf1499ace11a398bb5596b0f0849dc2c7b582fd867309afac006ad8e23e14ff412a05782306d5ca382f27b734d91db48959e4e599dbfef15109c336486043db1b347a8af47ad3267536ffa5eed560cec1e34a06b03bcb9859761959f06300fde270234ccbfea07ab0fedd2bf0ec1812fe6d007cced7b5413614908cebfbff80c7ff88b933dcdb1bf72fb686c87bd6440c5d29fc13b2c83bdc47bc995875c843c80cade30e70a137a287ab5f759992c8cb39c494c96cdff21a14b1f2141ca738042e01ef2f28024765991f3539154999aae49d82cfd022036570fcfbf0c21783e00203a7c697b32233f46d879ed8ff02f2fc0d4645b7e6e70cba0c846093f040847af9911d334ea8764202f307112c87929813204baf8ec2fac0562d7ea5b851ff3d48fe7a1a92251db87c15ed9f065905798234fc44c822ebc61828014cf21324946cd8493a148a9a69c1ec5ca7e7bc13a7b9a18aafc43235b8d4dd141b040812923259fb5196533697f9d48783ad7cd87dab354d340b318dc0d35249553265b9c8a6505acf125dc2dc44cde77ecaaa1c593cc2e923680435c9efb3a6d0ed8fd7b8239781da2be73ec0fb07b7c817caa3d45a21af22a063f6a4473c914c81bc9a950ac945acdf376d6c8145bcad051f9903d005228253bc3d4c1aa8a0408ed5582c4a1e4284e21c3e5b4e8db69184d7d1f14b2db6d599e2072e182afb3d38c594c04e7593334179e3a0e24744cd38ef1beadbe13bd25bd7dc2086607d8510bc220d014bcf0e569f2edeffe350b4ceb961f3a5465f9c817771abb96d32510a41b6f13fa867f816428c1d29a3bd7b8b35fe5208fde09cd285130b87e51d62c4447b1e102ae93913db8ca6fbc932171e246aa102468bf20c4ea2b644ca8d7122f66affda4c38c7694fe428f3e910d6605df9fb56a83117cf761bc65351b4a2691dc297e45a2b05172079bd2ead37de3c714234f1700cd4b3b66bfa1635b4f555a8f588782c0bf14b9a227d9765c4ba82a226b6dd341d8c3f6eeaa5950d4cb0eac87e2411ed3859721d53f0ccaf84de26e24751d7b746cabcccce906943cfa020aabe09bcc9a01563970bb5846ecc56d7db616f44d08f98a6f76ee442b44be0964efc9c0730ce33986e1d86f601010a8e9b1303e5576b286f5fd0fd28a078d59b628ca4d583f62055d966f694a7917a327e5e166e24058ba308dcda459946061a351d16d0fbfed250fc0a8fed0afeb89196fb17e5cb88b0ed00b58f30603335228897b2f928ceeacc0be4a69762208eb385d49904eacbc5a9d0e16881bcb3ddbd70939b78baf8d16ab3822a87508b12d5e8473afa82c756de181e23c0ea8a0aac090373d8bf02796e10c4b1638a67a0d4dfff08028fcd4f62db1fc3ee4476551188d1a7e7244642fef7293bb746e1270bdad4e96be88f884e70bb78f5cbdecba58982ca86a985255d6900044632a926a471937b68cbc22f1cfc6eed3352b46ac5f87242774af45f132855fb7874530c743e97011bbcaf203c5b176eff07346d8a5c0d0208583693f4120ce14b3af1a383f6fabffabe73aefbe36afff1b30da239be63578cee4d4d6a337d6a38fb51007878a3ac02f954ba037eb505dc0f3710b0b44907300cc3300cc3300cc33000a6f1c6f4db4095912f5392f231bbb8c0f5a82d62fd4f774a32499964e8810b0cd9213662b746021c12050fd40ede50c3db85985a2329c4a15b6bfb9cd597dd9c10bab069b2a32686bea11f900ca295eaf695d699f37c6a2482b86e7f7edd6aa44e2f0e44a27b64d718d3769af51c2480f88598671eb548a5b5e80f0c994faf64cc6beb090405247e58bbaa4f37a6ecccfa5648faf08cf5523dacb15ced161648f890cd55a66f658ad1628483640f8aecaa7e3d33491548f4a0da1af3b2c5b057eec901491e7a257a4cbdda6ae578f0908ad94a13fa374cdde220b983aa75d4eaacd3def4ed81307e08e9400b48eca0871d53ece93e9db6cb48ead0587a2efed44747763848e89094b13ee69d3b67f1324de3c286109239a036a6107bfd3fc70dd980440edfdae2666fa9baadf50f59791595ceb03048e2c0f22096ded7a17cf7952101091c9c79196f77d55b3b98698490bc81a96a78184bb7df2ba94cd31461699a3dc846d3b8c18fb5b58c9794f2e3d746d3acaca4a8b43c112569c3c186acdf93d9173396691a2461c3bed2f6d8ac50a669322e46549a92ace1f6f0772da45a4a9d348348d470abf1ca66fcd8aabd7a088b0a9aa659545084258da619c2a2026449d2b0e7a053bc8ad93a86b8e5062e6840bde7cea33e0d3b51565250548c103101c91978b51eb2cc5548f7b038501e07294db3525484909881cfa3de397f9ffe9d626b1a1f246548f50cd5a685a91057659a66073bc8410e9ae6dd88cab71421833af98e5869fa537c2bd334246348ec19df59e9da5642ecd23e5a5e5c80348918b85b6f7bcc3d27a9b42e2461c0532ad5fa46e80ef52d123020ca8696bdd5adcdf42fa44ab5add7ef2854df73907801d74aac8c5d25f6f8a90ba7b221af6d0bad624748b8802d251fe74dcff60b33245b58eaacc30b213e44de5407245a689effde69bd3a4e0d659c240b8eb0d1e962a771662b219060a111f53055a9d78e4fce4172055f07a96daad0f9b5da59c1535b263e07996f53b56c9054812dc375d4c5ffa59e6730122aac6ba789dee77f73970f48a6a0ce37eb5ea9d3a5c2446aa40d1229a8fe69ee87f09bd38fa5ad9cb1039228b4333755b7de9b47311e9040e14fa9a65627f23f84f448ab6184e4098b8d7a2d6fc9313574324dd33441802c1227385f731ec598df996313fc16db597fa8ad3f7a48ac40c2045f7caef1a6939215339019902ca1192b4db5d8ef8ab6fd184d73e4450c12251c574ba96ca6d6a3643783347c8ca08d18b88024098b1759b9a5b6707daf8c9f318404099babed11af524c447f04feff3c55fc9ace7e91236d1c7931426284c3fb69d77a5495fa78903680a081308ea6213902491110ea76ab4ddd25a622027266868bbf88795a588aa01469224d73a4a569c620190253a918a9434e495d5b08e9346cefb5d2b36e4b41e857aed2512c6d63cb480284859c95eafbc410364a284d13e4518ebca4cca08d18003183e407ee2d97ae473ccd8e9965a5191b4dd37206890f583f2f4c64bf3e8a59e268958632244545e59be6652585458d359a86e5e5e55b5e5c525a7a704bdb3eebc3ea9e5fc980077cdddb8cfbb0a9a534d3342928282f2d3770e1c10e4ec2c38fe80aa5658c99a681e3c8c152a4695ca003667c88d4f64a8b7d9b699a3958160a1cac55560672b08bd84a7e2d575b869f699a1b3cca0b6b9a203720a39be6555e9611171228e080bd735b86da3694d257a66950585e9a061319aef22965344dd3f84ad3c0f12aed1f478b110683232a1d9f31d667f9144f903996ba4678aa87fa3237a5a55752c238811c8cab10aa5bc5d669d9e250ccbe934aebf852a855a669585e565250901a417997962e82467e2d76699719f19c7f0fa2e0a511666643b796c28528d334475a5e56be695e5eb99cc6104a46cda3d87eb5b4a58a7e117aa237ee1bf02dd7e5db182bfae64c91e6de0a7d622763bdcb80c18238a1cdb4ea5b5aceb9b2eeabdc7af71bee2d361a229e4aa566ac5013313221de6ab0a1920e2ddb94ac694ba7161c7dc998ed42ed515a4536c08310335e69adb5e8c88c9465dfc6dab16ddf5cac6954549e91916146a9fe182e3cec89011963486ae674db1291aa76583be598ce39c9ead878324d83a25e9df7a15ba8b53c6c7d6f612181b7427d5a2e3a3b55c985303d08c623c4ddf2af9bb576d4e320c5058dd56bcfcad37994374d9fe1460925bfca674c57d1659aa6699ec8678a74cb90a639410d12af73e8bce5e2b57620076537d5b5aa4209a9964e9039fc0c2040504083479a50d2d5df891b3b6706899b2f63fbc5f88f92c1a3cb5ba857a585ea52a6697ec480f159bf3e86d63d62ce34cdcaaba03c4ad39400062d770fbf173e63da94691a315eb07bcbbacc9869fb30d3342add32c4bb4819e98dc31a5b3ec7a9ad8592679ac68fac08699a232b0d045de02b2972ac184141400bd869f7c616cab34e5297691aa446505e883411b8c10bd5efb767b77a1a65589ae6d9ca0a56ca689aa671e136d869f9dcfc88f58f3a3656d1739f626aecf862a6695ce5535ad3f01aa9719bbf996eeb36d53440dc6001267452aeaabc94c9530d6f0d9d3cc6273d73d54cd3b8c0d15f04e5e587344dd3a0aca4340aca82839560054a2957f7a9fb0f95d29617172098c66fa393bbf6306bdc1d6264fd186d6c00c8a1a150afefc5f4aa8bb5368d0a9aeaa46a25ccd6322d1e920295dc3857151d4cb70705e8a465f70b31a6f8fb324d13244810969795339a86e56525e5471b405afee50c222c2d65b02fc246d3040142228433f2d363eb635b4ab34fa669e4f815359a26f3f272cc60a57938e1b2862d55cb1439f2e2a3ad9cf1458eb4d13428284d9383135c4a7aec20454fcdf3b4c68222a48cc5adb596741f93622a9171e8aa2963fb9ef6170a32466b42ed6f7d26fce617023116f95f2767670f3ea34c909346548ab8a48ca15284480a90a6294224a56988185949238cf5c76e477c4446fed2f2620861cb1062750b2ff155674cd01ac2a5d6ee72c6dfd219368212a03b87a953bc4879b1cb344dcb8b0b4a1017f870818f1723443600a409b25263ae34f19cd7c39d691a143048b01417ca46c46753b7cc348d8b02c174c894fb64b26fda324df32f292d726060049dda6aaad5a38cfaa04cd334cd0b91d6341a681ca1a3129fa467539dca34cd7f4b2383196a2b95afc73ce97988348d0bca8b0b4b0665a5e5048b9b1a1b35d36f8a35cf348d1c2c2d43c050abfc897f4755332dca340d8aaf340a8b374dd30411f2438e5e230d65768bad94723ea79dce34cd909514383c904efa4ffdaabd77cb39d334284d83101116961ef9b9ded0223ec58b67659aa669f21061614119d28282d203515c8cb4a0a040e038208207800181107ce007044040810f3cc0031de80007ce053610010d5c200328184014140f5c00df05e50216c8800f970e54a00314f09546f9962e4284054d80c5050312c00b44a0bd1899000410e533280f20420107a0b4b0bcb4041a8074020c9883458e170a2c008e66ece15080a6e323017b70c84a4ac6a5333ebe7869e9170e20e060e0002b43525c2c60007439f270a074a0001a20c021c2c250be05e1d0748ab077510340e980003010000d00000505033d38c0e3c7c9100eec68e9576128ae9292611ed0314713a98009a2b0a8a0b0a83ca0648ef739de0709a2f8a3683a28e7e16895f532c77f0053803204e01566207922bda22300af7803c6650024731880003087e0842884603007508013305fd0400b3d04803904273421a4472e5c5ac0100109192ba2686921a3063e6ae0810e14e91639568c348d4be6a5c87b9146e3bfa58d307c342e2d60fc4b0f4989a3e780c17c00f3c58afa62a5dd2019c4cbbbb81069038329d9010683e9a103cc909597765131e282a2d2252b2445587c343e9ae68565884b0b185fa86ce10b95236030cd28e050c2226209cc3bcb0a26d070861d4076b022831f3f8290c08707e6f0940ebcb45741b346cb0a5edaabc0870f1f3e566490031f73780aca0ff147818375cb8b0e5ac8f12b3a00f1051cb7030b709020487b15145761d961031200f101021f2baf8282e22a2c24282baf4204932eecc0604e08e1e23e484002d682d17146193e8204a107e82304242001183fc4ffbfe56589c06585a5a4e58b212f9817b471861842d41022860f203ee6f01431bc112648d0d1a24345478a8e8c0e141d2cd091be68270eff15373098921cacb094c4a1a262240d97d3026cc1b5c0031dc0604a70d0d242061c2b20a38d95941410616fb4bc8b91962f62840d36d2505111a2a222444545888a8a905f6149a30c95141738065372c405832999a3ad40450e95141760302571bc3021184c8991976f6136582c2a6160302599932f8a2e7ba45b5ad0916e69117283159634309812ccabac94212b46cac0604a8a1869184c098ba7b8b48081729cf86275e006292378e98c8b916f2aeff2455858545c7ca4118227a2f272f8e87d43bda16fa437d01bf9c67903df5839e360916e6983a565c58d9716962246d8af41060b4b1baec26286caea179634c2789634fecb786149c333cc484b3357497181af81c194d4a0c378963654548c94d1f2b2e2861a6d052b2c2964bcb06f8d8c1537fcdd58212942e4a5a5d538e22c61f819479c250c3f63a5336d7c0b0b1a2f4288b0acbc136159692983a5b0b4a0c5888a1aae929211e388caca0a8e7c0a5ad819778e3cd239de574e7aabd144dac5480ad438b22244a553588a1b41814bca9057814ab394950cfb363e0e92222f292b6ed8a044050e1ba41c79383018923f946486603024458278e0c749231df0f1c3031d00f2a26264068a33d88b6306e8e238897134cd89c3a569308e3d686406774e1a416a440f5fc02014184ce6a5d50802847d0bd688cb1a0103052461b091c60ace68438c34dc4001ca1b42d06059f1d1c292e2d20246ca8b8a112222c03848be808119184c49c360303d4a1e832959a3c4df0c0c0643000c13088029c2068840043460018381c3a5058c77160c26052878630e0c06832cc0609680627282f828d20a0686807d1c2a2a4dc425175fb8e00583c160301812746213188c1b9815984002180c0c305fbca10b0cc603180c860a182b7cd1021d60309834305288020230982704810383492100065383385e65ad9415127ce1860c7c8ce0f8d0808f9557391f24b0808f95579183458c222e435688f44aafa8142192c2be052e294584b8a41469cc192e2d60306759496979c19880a5a8b02041d688a6c322471b0f47ab84d12ddf2d64a494524a092184104208a1cccccccccc73ce39e79c731011111111efdcb973e7ce9d3b77eedc6166666666dedddddddd554a29a594524a5555555535a594524a29258410420821843233333333cf39e79c73ce41444444bcbbbbbbbb4366666666e6dddddddd5da594524a29a55455555555534a29a594524208218410422833333333f39c73ce39e71c444444443ce4559a501e4483c8192e2d6074cb8b00f3822f5030000c06b3e2461972b0a87c189f3286ab186171014b1a2c2d0f832361b881c1943021184cc97a3858da5083258d35309892c660487a515283767146061b64741862b8b4a4b12244484a1c296394f129ee2b292b8f0396160c0683f1c1b2e20139585cfedbca19293e322f2d29cbc74afb587161fdab557cb834182e3f0296941ab0815242030ca66406415c5ac05047baa5a539f0851826c060304356525e5a5896101f60bc8f232d2c449e480b4b4b0b19cd176180e28b306a8121c160dc38b2505c5cba8819c2d081c190e4e165a5575288a4b430232befc385884bcbe1c262864b0b182e2a4588a4b06e21c034e20b2163603018374a16f18509b05083346af02e706901c3ffa5cbc0604a6430642505832989010643d20bc698d2f17671f62c2f458eb4b01924a433c8f43182351283202e2a1fc7aba8741c2829282dff45d060699a6ff9d56194b1460b56525a450d367c45c891962692d2a286cb0b8b0a1bfe648421240c232b5839a38c355af0abc3f00052233e7e2035d201e6e2efd2a0a0147199e3d32852a4518ab8ec4137fce74829c31140648171690103c5a5050636204921c941c90bfc978f232aab5f8c1049c1158ab092626448cac294e18b112801b3078db8b480e12b282dff92824284a5a589807d1ce98b460dea8b110400a3a292b25a5e0d3e1101068349c17cc152c0340d4a11179716308ab0b8a0b47c11124ea4ac3d88e2d2f245543ec3525e9e48e625a5a5f7a09194a662c4a503180c11cc17bc0016478afb682c2944be0583c15800b3c3043b10c6a5058c95967f79e922226879713159c417fbe3968b0a8e7ca1544152a4e55bc0c8bc7411111c79c110b0b49594210a080653f286cb8b8b9135322f4d83c19014c194b88004102d70e3e5e160292f184c491b180cc920be7d1c2943d858e385a4080653c2021595662f2e2c44505e1a05832951e38b1c7941c160306bbcb8bc633018365c309892156030247ff09492345a304711212fcf46cbb3c186af1869bf86af04cad939cabfa74ed91688d141ed16f5ebe2f3245930a945ae4eea28e2ba3bb62e430bd5a853f3dbaa37edcc34cd11b606254c66d1fc8e393afab56cd48c112226b248a6bddae1e47e5026675af02305409ac60c9358ac65ba1237f1ac94568305abfa74947284d4abd699a60183c92b5c35dac6a735ddb51c334d63e20a5dcec3f456a9360e12440826add85688d965daa68b73b9092b1aca937be712b1eca5ab68e853366574e7db1f4254856a5f8adad11fb3a9bc4bc5615c2b2de466e71c36543ca74a08b55faecaad99a65181c929fc97294598dc733176a6695260628aa4d4f2c3bbb2fdbdae4cd3ccd168fc38f229f8d1f2199736a348a351a489e4c0a414dbdbae1d65eb91615fa669c83021c5ea66cd6d97cc98bc99a631c364149a106162aacd749ed144144cfd3c5a9bcd59adb484fc68a30c93501c96ab8f764ff5e0392598806213b1f57ed430d75d7f2261f2b3f47e7922a974d6f9de3b6eced4346d987402b1f5070f1d655dca5aa6697e48cb130181092790f9dce9a3fd8a507fa6695afa55d818269b40f7887d4bf6b5078f35d11cddb9134b9bcd59669a860571204da308934c603ab9cc14ea9e4ea4468a60e2513654a430f312c750efd5b2eab563cb3fe3d29915236b6209c58d131f2da4ee6a528974ddfed891a162cc54a621630526943888f68ee9ea74da5d049349683bad5a53190ec144126939ff9a294ce87871109220984442171d6acaf096d3c00412baf81b5a79e8db9aa54cd3a4c0e411ddd4635e36c6dd3b9b699a203f7c2525053f7ea801e48da874d3103171c4497a6b95e2765af519864923165b576f76cadffd87092316622e52492566755c5cbac89185b2e246d3b80e4c1681fbcf7febd95a88b1cb047995d563b8c044117eda42b878b74e3bcb3341828881c60f317eb401c4c57f8e94329a26072689c83eedb2e1fea6e39c886082885e9749e9c9848db5170d93436cbaf69c10ab938ff4649ae6480b119696328e9028c1c4106a172a23efec83cc5226c8afb0a888d134bfc2a2c25c80a4c0a410c8abd84d257e4be64b888494a1e5e9b135bbc386fc09c41862328886d2dd599f898240bd3a1962f4ebef5f8c104179318286320944d2a39f6b69b3763bcf34cd990022cf5ab44cd71fc5fdfb0764a558a53e7dfe70427e6076e82863edebeb1ca4a2d228b730e9c359b98bdd1f4febd91391948c0b18afb2fa258e1ce4c00c133ee0aeffc5d88eafbdcb4cd398ec01fdbad126bac5d09f33415850dcbb6982bca4744b1b3e5c485e61a28783ccee8e553575882e87491e16732d632717d37b5615133c24f68c90ad754e61267587d658b14e8bd5f9961f87891db00eb702133ae01c48602207212671c873120c5fd4b897f2a3f8fc9c4cd3048181091cd4f979f742eb24b3446f68f5ec2731d430a13ae906c4c9266d406a9963f2c3cfd39d48306183a246642ba94bbf7fd21a963ac454b275564274ada2d26298a8010f31a6e10eb1091a92bab39c770ea96d36c4e40ccb8e96f22b764c8f2233f8b9f2f409a9fad395ca80dd90ca4dfbdcfc2c17c3840cdf4751f3f193525dc331b463de2d1dc6921b3a2986469d1e9d5da6ccf630b02e8492f24784cc75c1e0ed2759bddacf6c545230f9c22d3fefcaa8f15bb2f20262e92c86b437199fea0e4cbac0ffdcdd5c5d1537435c408f9ce889bbab79611a3f9260b2054597be975779612ebf818916d6a52f2b625f9dad3c0bbb5257d34499ca91b3154cb0c012b35ac63f4e76c9e40abef219325b9ba8296f6130b182723e8c3e91b546feacc5a40a892719cb73b67d397a103fe3071032489a604205e7e3a698a9e5de1d329902fa9d967756af930e6a13296462b50721bf7ea510bdc0240a88f42c7f6642a9f5be0914f0d433e576da46d63479c2317614eba50e26e46f4427ece55a977fbc5ba3f414932630b6ec898ad1e9c33c08041326e4231ea6f25bdefbfd9d104c96d08cc7d2f13aaf0a792216c14409ca4f5343881d7d64eb97609284efc50ee2b5ba663ccb0409beb85ae3a9aa73a33d02ae9696ba4b7fcd1bfa3480981841514a0c3d6aa65a6d4bcf5254d8784909a3694884605284f4aa9af6d94e559488b08f4bfbd949cd0b193b623284d64ca72f7b93b5bbfb01240b2642587d5252ed1c8597b7b4c5240889a594bf8819cff90f32c7fbca0f202e2e4f42061320349612536bdb9ed6ae9dc90f549542987ef2323597890f983645b54b29e276a46450d28b544d0fba94d479a6fe5a4a78810e29e62951de27ffb48bb34bf52e2927a6a95b5082c4a04417c87839b3b356a59beec8a7a0694a72c19a4a7b4bf7fc2d45c7c51eb630f9f629b3b6d62dd0f5e73eb36a9ad808881925b648db3413222f54d6d06b912d51795b9c88ff94d182d133f7b37e653acd7b168cb81f3d5eb6eeafcae25ed5d9d63c5d7bfc148b853e95ad96e7932285053b6bf1ad6b79107f2d324a50f20a477e2d9d2e4dbbef0ad6ed34bf36754474d90a6e8cd9c9554df5a79f1825acf8f3c4e4e75c1eea6659417996a2e2b28af73e8abd3ef761c60d5115efaeebb45c96f9ebb454e46623a6ed9a9eb6868ae6d4b668b1d6a89fff148b6d239fb776d8ecf5ce147ad051dfcc9d29448f1a4bc1d2ab5445a7183b5b88a450be3fc8dcda21aafa51e4b567f77c8e226ef82828110572d3a38b21c5d2296da168668b2dbf46cde82c050ad47b4a11abde3eacd92714db5b9c767711cae39e40ce5d6dcdd6498ba5bdebc4ffddb793bf072f59e344727f7ed44d35b3916d42134baf1af2df72969026101e85f8a0d4c7dfcdc4f145c6f40c5d4aa5081113eb5b31d3a2ef4c8df812098fd141ced6b972942cc1aaa9b4749d2984feb712875182b110b374e78c2e4389c447bcf42095b954771279184b8c075b378596a54412ed7bd3bec2b5d8f22381eaa8daf72b3abe522181fe54cf2376165f2a758fd8e3759c36ed592cdd9d23fcb3253e0d9335dda31aa17cd06f2be4dddaf9670453e8c795226adc7b5dc4d96d7678b936b6eaaa08f4ddfedb39a848255f8948cd931763476b39b18588e6dfeb9cd81fa59aff10279dd6abacfb49557a43e06a5e7b89ed9c95ca8560a7698f57ba5b47a9274477af373bfecd574a3808941043f69347fdaa2741b02bf5d5eaf8d7f2ce0bc437d3dc84743f357f06049e3cb49429a44821e60c1a257fd076888a795a756717f303db64d7f9691dc4d0f37e50d2074dbc08863a5256dd5c9f97e9655e50c287b428c158dc2de952fed5e9bc324d13648d923d7062a753ba8b29fff5489050a287c6dc6c89fd79b5cc360f9dbcbd296b899ee54a3c9c3dca0eb36254fd843cd081324aee706d216c48254787cfac69de28b143432cf5b0f4deeaa012a1d2464d375bafa2c3adfbd743aa9d6d94760ebeae6db59f39436c490e87d122b4091ba66b75e280164327ad62d5c66a191c78bda333c3c44e71b6372875d6da3b4825b6bccb0dd8ce749d267c4d954e1b12a30403f969ad4e4ff33e73cd344d10204d736450c20646c89bb95aeaa25b6b585fbafd8dd9af937e0f4ad4b0a7fc97d5b9c4ceb71c42491a160f0d7bc91d6562e9cfd0be3e5d939d83d7943a6986f4cb51bb4d2ab14b24849232dc2646304e73b9bab375943e65a66982b8b451420647f5974b1dd5440dfd7cc9183659135df26a2be55a7094880175a5a26e781211e293691a7f77614149185621950e37f76f6cb51ca38d12302c76ebdea90ff9bee317585182d14e35963857b5b412481196166f9a96972261947881efd46db7c347f9f429e982725faa2153a5cb9b38d33441c668255c406c5b5abf4dd9424c1d0afb385084946cc1d91f5bce7bda912dd64223a49a21dcb4584fbb240b7ebf27f72c42cd98724dc70c2062946061d1135aa7b3693e627f8594db9ab8b5956ca96e215d28b102dea686dd8aba9bfd194349155853d6b5aa7b2a25866c504205d53cd3ae4476a4d6392553c86cc4167ac676db5235522285c556aa6232a4583d57a6240a8948a9e25af507f3302894408125b610bb69fec96cf60447ffcc88ce3d438c2ab3851227dcda74d8e9d7aba6dfb450d2044c798969573bbcd611131e5bc2d384a9937a4b99a65141c9121aa274be8cf1ce51ce285142eac35a31d64a7fa1575f2849426af5e9b7195aabf57f0912fcd7cf63dabce49c47858565b9517284fc6c0bcf51b9ddcb7e488b154a8c70ca917fb717ca6fa74d438592222c2b2275eb89a9a2c45ad050428455bea3525525276ca764084b6f9d937c91e2cc472e940861b321bac443fffdcf99a6597995a679615171290942b663a416abd54cd3bcfc90a621410910d0ae4f6d71335c469d5728f9c1fd2f4dc6ec1a91bddd11a1c4070be1a6ee3faad6701d1a24bd38dfd95cbd6fda74cc2fcf06114878b1d8a8f9bf5adc9629dac5227c75080f576b435402892ed05d3be5c5f64f42293117eab0a6a67667edfdec10487091de55427fc80fdb5e740be5c850d3ea3e6d153b1e90d8225752ddc6edafe922d503925a74db93143d7ddba427d1c24f59e7cad51af9b49d455be9ea97d7bbca4ede01892c583536a34a7a165da20e4862b1a7a5b63ae27d453e3f56d042028b75f848b54dbdc350bb0824af68d5186f5b8aa54e6c33d33428435652dc207185a6579ed8f549e47495699a33485ab15cb1ff19a1547d1cdb00a242c28a53d75a759ec2cbf42cd3345806c92a1ab2dc4be79b7377350da22ad2d9d55652ceea9cf3f5039254705bdf0ec3b33cb9b145f203125460539fbe68a59490ef29d452dcadca2b9f9db5a66066cec7d8fdb0b5548a57cec7d2ea616d9a488c1f61fc10d281374848a1ac18aa5b879a1f456a14a82ddda6f3eb44918efbf296d639c5b61d2c908402a542ee8b0c39a6c55a154840b19948a5d3e8d0e22ab602c927924a847dc888b789d914483cc17ed5625b4c35ba64cd04924e9cb262efb74c99c2cc209070a2bd27aa76d62537638c02c926942a4d744df13a5b194913483471be8e7b4eb645c5501d8124138f49935fea628c0d778e37a3e5e56051419260e2195b0bd569d6988714c822b984af854d79fa46ec24a69a8e1943482c81fa7e4857fdec21371220905442217b623ad766c4456990508221b26dd4a9d1bb1faa4132896ced6db1f39862dfb7072571f41c858ebd7642745810a44680b45f03c80d4822d129d972e24b29f12a438484365d8bfacaa7f2167b44e36cfea929db4a08a12370fb2c4bbf9631bafa4670da757bec1a6ae8ed1991eb0aa16e8ad80fe101c92216533e6db5c6ab387922490289224ea2476defd592fb6ea6695a4812912acff9fa43fcaff65e5a5a0d1d9020a23545ef8a159f2db6ff069032480ec1995a37dfc5f89a5dc201892194910aae493d7f363cf2824ef2b056a9c43ebe58dfe2738207324eee90d29e133ba0b4e7a40e97f69cd0c10527735847e9a786c9d62a36d5342c2772c8a6bd9bdb54428eec6d701207edd44c8a594a454d0607a4cdac39b535d1510ae4e54f0007fbcc0c4eded01c9b4a95fe5a7b633d71c36108b5955ae8b0d575276d50debabe2add51d4969fb0e156ba9fde5faad55a680d8ebecfb3dfe6cf7b748d31cc0072a20694da6208b5bbb3cb47d3f069b12772fe5154cd4ed0c0c8de8e5e6736c5fee40cd9f8a8a350a3771e4c2766e84eebdc5dcbd3ca8a55382943e2d42a5d6ac695ced709197a611efbfeaf9331a84f8e767dcb935ccf8ae1f0aa7663dbdcc9ce4ec290d8ea85b4516ab52aa1760206ce73649d12395adfd772f205f58650b73db16f3f3ff1c22a5aca766962cad7a997932eb422f3775446a53a9519404eb8b01ab53f86a97d7a65b785f3edc912b3570b39e91c275ad857b696b15d2743978a9c64e1154307dbd751b43c1539c1c2afa61419bb76f5c36ae4e40a7bf257b7eaf993cf9739b18272464d1d4ee40dcf3a729c54a12db44e5b3e6ad3733aa1822fecb628dbdd394725979329e8614eb8291549a12df73a8b5361aef40c52868f172344362004880d4ea2c05c1d53e4ca54d385f8040aa8ed28de69b9f4772f48b7bccc41c60f367ea8a8b4183f8400691a12289c3c2125d46ea1d62ae1e92f72e405c504274e78c52e17dbc5691531cd9c34a165afe47d3a795d374ae184094a7db75288ae781df45d3859c22374f7296fa9c3ecd98a164e94708d9826e7a48986194e92706721aa6e2cdd9d4a068613246c36eda35a6297f652a2e1e408cc132bc46bde5a3b22379c1881e551cf8eae43ae5657919322e442c7fdcb7d11a15929aba6d6e96feeec062743e8d5fddb52677242ff2f274278d48c7952c9d816b206e1ac46a9e541e9ccdbb1911320ac7b6ac812ba7663e5739cfc601d74a7ccd1b2bf65eac407a87511fb5ecddf1ea55e1c226bc55cb1553fc9bce8b650fb6f4b29e68a6917caafecd951d5d34cbd0f76e8825ba56c7aed7c15a15ca457a7e913da4629afe1e2f06242850cadb6ca8f093b6e91fc9fbf186ad5577607a2851db6e87409adc5eda056658ba4093b6a918ba8553b1d35d33a2d1a53e596504f536bd32c725722bdd529a576d964d156f259b5b7d852971a8b555ca95afffaffa3162c3af566ab3b0abfbd7a2bec7885ee399cc9d85208a555ae50e67fd6e293943ac274851dad48a5d4a7d75ff56b9dc60adeb60d99e23a66897b159d0ba99ede934cadc5aa58a97621ba5e763c46a9e0d5d4acd871bdf6ea50917ce1ede2a75ce88ea7d87fb458b362feba4553284ee8eeb44d8719db550ad5efcc9dad4abdcdd11a7690622545ec959d4b31ff1e851f6b29b547847e9bf232ec10c569dc542a5b5bbd83870b3b42819cb1674bcfd33d5b098a85fdefdc4e21e6f8aa0b3b3ef1bef0d8399a47215f67c48827ee11de2afe34b2851d9d60e5c7297152bf8f3eb5b08313db8eb6c54e31f4e4e96ad8b109d5938bf69c5cc40e252fecd0c459bf54dd51cced587547267a6d7e2347b930c1277bf9e9bb6aaa39c661c725f0d57db1fe41a79d68861d96502ba583ebd97b25bca95c87c729bf554367d841895bb5dcd21faed55802c38e49b4bbf53d282963bc9addb0431209174256cb2a213fce37ec888427fe4bafaa594b2c1f12a9932e3efbca79d6b247a45685dab7cc769827e688e44b8af7fb764f52d608dc56b434dd39a6fd8711c8515d3aad6d1efb6f66c722d0da43b7743f537628e2d6496ea9e9b7739d180f76240219bae647bd6b3beb550f7620425b7b94df3617bfab3dc423f58921a7966d5dd5108e89a5f4de492d5728ed6047218e3d5bcc7acdf9e87a8e1d846889a81211a93d77f483389cedacb2e794c7b01dd92108cfc666cd50a5d47cb10e7604e2df579d7e7c5eab9b2d3b00a1bb14b36e7efa61fb1d7f60cadcd51d7ed6a89df5b2c30fbfe7e836d32b574cb597958fa30fd96a61a3df6d6a07570b4b4b0b193bf89072d75ba13ddccad71e96a9d36567d11f2fb61efc7553da4eccd8257676e461253cebf061d3678a070f0a7dbb4ff4e8d4eaf91d7748c565fc7927b5c764c10e3b9ca6d261bfce945125ae0353ec5eb5ab9372572e3a607b42a7892715d7f61c14a5d390fe694c54ecc80139b9d741858bad2d8e20ec8803faa35b8d54eea6a5ec77c0e1d21d3cc18e37243f9ebf4c13ee6a4e3bdcd047315d3cc61c9925204488903861471b54f2f57ddfed7bbd1a1b70b1e1496eee6b48d6bdc5dab3e6a3a66a58c7ac193263a3622cfdf8e167e861471a98276f46f9c88e78dc053bd0d0be6a21b275e6f97dced0d81de407b1f14f5aff83a599e1dbeab794cec94ea87347191aa6e54d135b8a6d5d9221f1f95d5dff3942e7778c21a5d488a96ae8b0a213034aabbeb555d5741ab730b8af4f6bf12574f9c960c0a54eef692ced17f657528ca5f2f4a7257a81dbd99427d53a72ab2e284e679dc4eeb3cf94e2c223eaab761a2fc6946b0b27b561af94bc515becb5a0ed5aead449751610c25c480f226bdaa9c16007163c6dbbe66b7c8ebaef1554a3834dbd216e5eedada0d26162c7d5a37674b40a0b19323cfc54e8092515b2eff462cbd8b911ca1d53384899a72e5f6973b53dd0811d52c8a314aae4ef8b841d51607c2e53b6a5998e5ec1610714fcd2197993b3aff261c38e27785acbc8ca8e31b76a4e3894583584bc781d76b80e3b9a809631c54a8ff5a4a69820763021f53929b1fa84a8aed512bedb7757751e45b95012762841b54468f75b55f795ed4842c265bdead6b3d2f6bf0309996b1dafa4bedfcb280d202c3b8e908b531b956ae89b4a771881eff8605f2aeab41a2b4243869c889469b7aa4384b6106be8203ec49a321c42ae85e9202347b4292d2124e6d45c3e7bec169e2060b685f4f3b7a5ff0e2030d4a354ea3a2686f93b7e70af10bf22b5f46c73dae103540cb143caf5646be396f71f2d0f8444093a7ab10d25840efd29f5a9122f38b17dd5449eb295e22e76216efb8752920041872e4eae1fc55a3d75a2c25cb8a6bede624779db22367eb401c40c3a70818b797af01cc6d06aafe3167d9cdb5acb7bde9381c8a1c316085113ed6b23f293aba3168c1d318412e7ef40072d72f59d33741aad4f388b4dab9542d532216247872c92fbb3c45c131d57aa8e58381eb4f08e3adb743bc182ad3ccd942f3d7ddab625e87845aba65c21a6d2869662516183880e572cd6c99133d3c5ea8ed2d18ad6daf26b47ec59d5192b107999594366a95f5551c72a1453bdce4abc0e4beb3844872ad41be523624db56f0b659a46472a7415aba374dbad7bc23174a042b92574789dccc67f975903e938c5b3263cfc948e0e537caac4d269adf1e257a5685789b9423d679d858814e9dca2dd47d6dab13c3a46c1ee4fa2be45761032ca0429c2d23246d3b8146139c3c5c8186ee810854207571fa66e0c7d6a94232d2f3a42c1770d99529c569dc50505f25796cbffcedc107d42b19fa9965c61ead6f504fff223bee4c7d9c799a6e9838e4e6442adb5fc5ebde7343b473e053f0e1ef914fc402ce8e08433d67df2a8c594f3a14cd3344d101d9b68b5fd0df1d2efa8f7d4a109d57e1da774f8f4ac763271f8b4a7b2c48488d26182d1e5c284d4fa25dafa54ca2bf32cc116f2326f7fabce4a5d895dedb6d78e7e4ba99cd1410964979bb075da4e9648021d9358859a29bdc3eb7dcf92389b7ecc992fda7edf4cd3440291336c7ee89aee12659ac69b45a56982b40144e980c4a35377cffc583b3cf50875970ee76efbec5b9d699a17e87084f3b77692224287b46da669988e46a8abc398b5559a6e75ea6004c37da6c78f5b4ac8d6063a16813499ab478d132b3af270a0a01469348ae850441f66ea7b468752624bc42652c5146acb18c3c68860ee65cd67ec8df3d8214edafb7fee8654114286582db5439aa7b15adab0104d25649caa4ecbd64b425c4b99cfad11ba84d98348e8929fc572b96add2588c5f567a6963aee992710ddd7ad2e1d6d63771410e8d9c283cc3159eac37f58cc83291d968a7699f243d25fef8ecc1829f6a1d931d4d6f9fed242c6874bdf946a4dde50aae33d206e786b4ff67deb1e3df835969ab5776394d8e781fd71576821d51836443ca08512e14128952b46bcc3e2659ad626bdc395ce0edd99b0b1957411a77475487e0711f2ab67d6d6e890127bd61073677338c6e9712d9558fe7a25073cacdb37c63dfb0da138b476c5a9baf4ac646c7040da381722f5cfee5cbf819de4871afeb25b546e58af7039fdf2677e89b5212dc5306f3152e776d9905cb5c4ed7a7ed711ae013b99b14febe5fd536a48af30d7e2c614b64d9686c3a577b7d2593bba46434aaaf27335fa7414ff19de9bf9dcea5e6da9941914da94ce56e5ad3d6b95e1f8fe93a1e3aa5ce8c9c04ea2f5650b65e2a31d439f4fc688a94aa851d304b9820e31f061283bef9ab1a5fe868e30e4ca6488ac2d2fd576c1b0c8fa645babda71a9fac2b3e36ecc5ff16a3af502bb65f68db911b7fbcb348d8e2ea885dfb091b25c88f57321315d8735a5e2b5958c888e2d605bee792c793a89d46b215b9dd34d971f527950165e71217b5cbecdd51716d675a7a4ad25d6d2fa2ba8b37d8e2d1d54ac9d6485961a3796503a958ed2730308cbcbca19aaa30a8827314c0b5b4b958a10712388183f88b03780c0b192c20611f646d3142162040a3aa870161e6cac7c3f5fb1659a660a2725c58cd849c78953e990026b7d27a95d74562b33744441db296ddb90ebaa961e65083aa0f088eacb19634ca1427e425ad6d67ab5d83be11cb68f4e0fe2a45c9d269c669b9ca90b731dad0e261c4d5dabd8b54454c4324de3a26309ccb0b56b85fe75313fc332e4c5080b0a8a0e25fcab5d76c484124ab986e8480252ab72dd737263e85f0712fa2f11973afbaa9db74cd3e83842365dcad6375ff5dca7c308cfd6266e8b31d4bfb424a1a3087cd842e798ad5eccd0669a860c1d44e83eb68f1a3d1dedfd10160f6f7f6f1b7da7679aa648cbe182b2c2d234418ab41c6cacac007f5c0780341d42d044869a27f5dddae9a62308c99136478b56a1c4c47400a1e9a773ad11abd7642d43c70fb213155ae7edb9650b0b8a0e1f203fec93bafc3457ba4cd398f4a25d36fbe9b55ad233474a7b5e3cba733abe9a5228ed1cbfd234419aa6852545a557f0a30d202f670099c36417fbecb466cd8e9e0f1d135dac574bb1f4965cf7962e14935c1c94ab1e51fad5e99be2e236e9eab16e6ecc3e6f711778af608c8c9a5bf2c53e475dd198b686fc6c5acc2f1b4b193fce0052a4d1689a222a3d5a7192d2a516ad6d4c317656b46cf8affc379562a77aaca2d9d9eb6feb550f552ca51263890bb1a6b9d6919697232d6d90a0472a1c950f21fcc4f4205da840775c992622f738054aab8d564aa78a19ea618a9558b684acf686d0a3149958e9b65fcd9142d64871903aeccef7394d9b1dc8117a8ce2512594fa4fa3ab472f8a93d65a8897c2b4a7dc4371a8b1c3fe5b59a2931a137a8002a94599587e439888fd13be5ad1f9b6fadc7922616b2b25d7cc3ce8bc13c9ea13ba4df4478f1527dacf97a9d7ff76ced8267a7193e7aa6a3cdd5413cc88ffb87c32a96b2610ad676db7da6ea2c430b1de18931d67d8bbdaba04fbbfbc4bfc8c7a53f31e9660fccaf96d55625b2ae67f2ee1127a50021d46abfe94ae4924d65637535359a18724f49c2a4eba9bff0b4522bf137add8549559d0ea107243c256e9d7bed390ff623902ad68ba5548ebad4112a657f5a4d69d3f27dc446681fb4ad98d9169f4f52e8c108c650f5cf7e42f4be761149d1abe54a29f2d1533280f450845ad5e684dbca2d9d4d446a4d53334d67b5d6af1e88688955534fe8f84a8ca943ac657936e1661a02ddafc7c3beb5d21f2ac442dfbfb93c1d5548312154f57956daae744f1b04e3d796daaff68b94522a3d0491b25b528fa85a5bcc2910dc524b0d9d6ab6df59213f322e6dc60f26f400846266bed6b186f41cd31f74d9497c16ff5ca24a3dfc708a0fa1ce6ce8db7f1f3aad6bef65f9a9354b5ae8c18763e81163aa776fbdb98776d82af6d0031ff6eb30b284eca8b57ea801848d1e79b855c79a334e070fe830ff5fa61af5b8c372c45827c6ade73c29204ee86107a677e79aabd39f48a13ab46ecd4ee7faa7434baaf82c6a6cc76a7f0eaeae97b23de939c872d0b3e7ee4e428db9fc2e0e08ada6b33acfc1819d1fe76cea57f5fe7ac3618f4e13ad374ff93ddc70102618d8a30d87307bb021fde47adaee67c73dd7c08909461b3dd4d0fa704294bcacda54a781dd613a99dbbd72570539038e9626824272841e6848a3c7190e7273a55ced31f386d2c30c7bed3cf6693ccdb5fe5b505e65751b72f41a26e851063cd6af0891f5a53d2a33460f32dc61ced764bae7594399a62112c4874bfb10020488affccb1c64344dd30091a3c71896d19e95d61566e2cc8c3fcbcbf7104366524d756d43c90eb98505e557525456108657adf5ed7a6d2c7523f700833a33667e303d2e7262e3471b405e9e0deef105d675d20f2f547c7ad8c30bf997d9d2fdea5ca73f9342468f2e68db6fc9d75a9d0829b402205ce04fa9d8ee57152f3694203db670df78316eee74fc8d9fd2d2461b3db4e077afda2d7a758ea1d6230be72853e3b53cb1c3980a6206901e58b85669a5a552b1df23f4ce92468f2b30d6a9f0b855a1ca5f28ef2c6958a1ad750efbf12322e659dfa30adf54516e6329333da8a0da8877770f9b726b1594222c2dbe22831e53608e4afb96223bdf2a659a06c5575aa551d8b7208d95961e526064ce3feb74ba52ad324d13848d346ad0230adfd652a47ace2daa5f99153380306749a369508ab800613da070dacfea3195e88b5b0e3172831f837d0b9a468c1e4f58ebd16d6bac57a66982a800c88b1134c218e3535ada58be1ce5535a5e84f4700263a9f1fab3841a42d504943c25ece5565e67eb480f26a4a5bf5253cbef0b552da1356d6f8997dde93b4d098b6d7285cc8edee8be471256719fa6492d7be2e428c0410f24783beafacf67cad561d3e4a0c711ce61cb8c1eddcda087116e6d62dd4e656bf25484539938ef0e331ef420c22d475c8ab576db9caec7103415f5fd7b6f4b4a6f8e1e4258fce7693d4bca505bcc7a0441ad46fff97b78cae9e2e80184fcd5ebf699990c7afc604f6eeea58494da96ad870f5c2d527d7a33f5625bd3b44929f765bac98317eae41f77d4dec81aee2e341b9dc5c8962bafb22e745be386fe9bafbe3b3c7281895d7bf35d9b2a35c745ae448f1ab153ebdaa75bac223d49a5aa8650f5a9020f5bf8395e4a292ed662d33d5adcd033736c5a1c5a8dadb49f3c8b4ba7a9e68cd06ab70b334d336425c5c5080f59e4ee39ecc9bcf6167d2cd68f326eccae70dd2d2c38bd31d7f2b3c8f00f8f57b43aea5f4af1a966661eaed88516f1323d0861ba3e29f88129789535051eade8d4caeca82e64dc2bb1627923564a956ade0c99c72a58a55cee8a8e6a6df579c04315076ffd696a17397ace54f4da3bfcd3122ee6b93c50a112275bacb9a75fd39ac1e314db52e3fec58988a972cbabc1c3146d95e62ee36cc8fd56bff4184058da4a29909f93ec16513f628499a649010f52a0e64feebb58db842dc5e0310abe56accdd9cd10529d699a4f6979e1218a3f8add0d617b84bc27148aa8216e5b0b29a4ab7880223d9d5bfbdc121dc4021e9f48aa1d96fad69f5f77f504a64b301e21d57a4993a15edb323c3a81ed54d9a9cab3bacefa951570c2d37f9dd6c66b7331a7f0d884f2a41e9d739f7cc858093c3481fa94afdb9e3bba12f2c804626469f1aa47c4d6f6796042b15e2b1559196bb4a069541e8e961696950c73699ad61207900c8f4bf02146f58a6dd2b612b3443a8b32a9743051a2ef4aa0d6fcf49b51157a46094eaacf619b1cdfe03109ff452955519e2b6b2809bcc658e26eed7498b637784442ad43edfdcbbdee6443c2ff8e33ef2ecf5da9404ec0e311f92bd3a78328b15ad4322899971439180f4778faed45eaa8a183b899a6093283201ee8400ccce0d188f38c91fe7a5adeafe9c2083ddbbed7dff16a789f699a35782c82a9a3fc55eb838e8722185ac94ea99e5b0c19669a6665488a0b0a7824a2fd3d0ff3e63f6cd1e08108b6ab7b2da9968c2d55a66966c0e3107dabbd42e89c322a3a1e86380df734539d36e39202031e85388efdffcf18fefd352192f24cfbabeaaae847e4c5081a191e83f0d572e931757796fbf31044ebe39ffaaccf56273910e85437d6d429b3f937c3031099fc58734af7aaa9de3fa87a4faffe28b5569b7e3868b5c4b3d0e24dc4a30fec77185b7b758eca4e3ef833549f689d4a7be7f6f0e8f1b467e4dee7ced103a3449fea51a3f56b118f3cdc4abff09b071e12daf4d63635ffd42b659a26c8b7344d10124bf0b843f3d7940eadb3543bd5322c2f28283cecd0b275a6c6c988582fce34cd1378d401b5e3ab7b1091eaf37468d558364ffd0be1aeb0a0143182e2041e737083871c5642c62e35a7c48e66c601153bddded33d52c9705074d6866da9d35633bf01b939f16254e486443df44935194b7cd8064c956819b783bbb6950dc8f7bb885cad4bcc514b0b19428018e1b186a30ea786586388f52596699a3680f05003e34e98d8d7bf9e6e798216fc48018f341cd6d6e36d1d3ea74f424326a74c4ddba15bb5fd45bea56992c7191639f36927bf3f4833d3342e3cccc0c855f246ddf78fee5758509a66043ccae088ce79ee88d3317679e0418686cbd2fbe7e2bc84ee25258c213cc67079970db5b6f6d249f93cc4909e2a559e9e4ba7a8086149e3c5081a2dff7206111e6168ed5755524d0c0c9ed85cd15d2eb6fefa0b2bf17325cf3d4b215b5e70cfb612b374b5585fab018f2e30a4ed93ea5698aa8b659a8607171626e3954d612e4d89b670dafad3d3ed53b558b5d0ee169effa9dfc559606e4daded490bf51dce344d6341c9b8b419880716d89e46acf2b69d63371e5750cc9533d4e63d9f5ae26185b67861ab86ce37845cf1a802bac44c2df23a9ea7a9223ca8a0efab3f05457e29194adaa4904e9ef783e81c6d745214905a89163e4bbbbcd081c2413dc7abbd5d32e4f3846677e9f44acded83c2c309a994aa95cc6fa1f5eb344193b3862d6db2ec6438fa8507135431cdf66b59d7556399a631028f25b0679cd061849c0da53283871238ddb33ec79f96f153a669e068224da392f262a40d1e4948c7ec85baa98ba93a0f242c47c67e745463e72c3cc2e308472d6bea70333ebb9372c0c308ec0d1dc4c9d68be0a9ff136a4776e8be791021a5334368a9b3d85a0d019b72af7350b5a367918710bc4feb39c4d4f93545791ca4a83c1c2d8f923c827079f0cfaec689d42dcb340d0f20b4d6dafdd6399dd8a1e3f18373d82de25de5cb9c0f0f1f305574dbc95ed93ff6674e7ab1da4fadbfef69dd8f78d12a2576b7ed9b379b868d935de05ef7a342c70735b474d1d227458f9cb566865aa6f5abf44b8fd1fa55408408114e72a174b17357877c12e367e2488923658ca6c9bca4b434903fc185dad5145ae970f3e0e416f8ecdc1eb7ba3a426d8b678f583296cdd24a89b558cf87a888134aed10ca340dca91857244a5481927b4f0a6166adf55d79271cfa21decf66d96c7513bec8d1359a867e6c5b42d75128b459ea714b9b5931d3372fc4acb092c947ee2e6b76fb9a79d5730d4ac8f528d4f9d449e691a38585832282a9e82841357a85e82918c92a9534f2a386945b6d6947a3fa97da244ac603fef4f9d72334d538893555c9ea59ac2f448158bdb36539c509fa4a29daf3d3cbb6af1bda18213aa53a8fd56d498fbf9c347659a06e583b89c98e27d97fba3e6841a434cc84929f24eebbff77ad5d898699a2027a4600afdfbfaf87fe9c928d2a6c618b64a957cb1fd379467a2d8b3b85b71a2de42ac659ae65b8ac0e024148c7e99d56aa750797b5034e4bdfe34ff6a7eb6a6091204c8abaceec2c927d861ea0c3f13d2c28927de2f9f5f1d2fc50bc2492716c25dad279d57becb4e38a1ce9978796b7b7f5032279b58e85edba2a684ca8f324d73860e4e34e1da6db95a7d5ada63e324139edbe9b816e36a6b85658e134c3c72c5f694d921ff9f934ba444bceb10a323a4109f5882bb952f3fd952a89d659ae6042795404c6b99b1fe71f52d2c28629c5022bd9525325de9ad3d3a9904e23a9cdbba9d766b57a66982ac408c1f2e2a2a427efcf84146d39c48e2f85a2d53b1a747dafb2791487da72d3f4c1dd284182470b13b691d2acf4477159c3c42573aedcfb11f6ef393699a1b7cd304b901192a9df25284480b4e1cb1f6cf9e559579d84e3b698423c5ac9242acce69df1f3f80dce184119ad6e6bad5d44aa9523b59445abcfea462eadc3975ba858ca6e99677e34411cad22bba2f55ecdb46e32411ceeaa8949a4839ef22179c20e213b1fec5fef964429f691a169c1c428fa5ff3f2d1d420d75a669d83831c4df6aa2b6f547a9e49f691a354e0ac16aa5a69a0fc254c7de8c1342b4d53eaaaa1b434cd50f42a9e24eedce27da762688e7f50c95a974b0ad5d814009157ad464aaf0fc02c29db529e3dbeecf57f11494159657f1335656d0342e70b0b0648a9cfc011743ede0355ce85ce2133fac52a672971eefeff1229cf401d795626ba4581ea5480a277c68dfc4bf9eedce75e6134ef6b08d99884b97b35d27193fda006283133db82652289496a8443127f3701c0e464110c3200043c94d9b0083120020282824124904e28024caca0f1400023e4c489a462a262c8d05c491501c1086c45118c4300cc42010c5310c8651344ab53b586dbe4b345a39332fdc2e6829dc12cc2644f03012cd895ddd7b0a5794087212dedfabf03213364d93dcf7fb0f11b2426d2aafea1dd84cc0f5950930e36a53c09a98e72b53d0a4acc347023cd3630138b701049c119ac5350954b16850daf7b280e208c8419fc8e09e1a3765b61c15072ca394f95ec2cead48f6a8eda5661e85584c756c7a3ebd164e1332a03d00e85738b2c3e55ec16236cf966c2d00b15ac7803ce95a2b366f280c6a1c1b9ce440ae8be962c011b98a74855872495f0b713ec51da55dde918164d2365f87defdc96be92881f33a831db424ba9f2ea560beb4fa0611693ef5ccf930aac9c586e6238f26845359d3b7cf8f2df6cb0b58b32e61d88b25df175496b34ca8d3607f811d60634c696ca1f9ec894995e7ca1683ad9a6f032bd216f5af9eaefa250f3e5c5f7d925e1303c64b3f9606dfa14515f20e4e0cdf99bd315f5cc7a97ce0f8c42abe1f7ea009bac310457a979e34b6cace6993e925b9a4223bb9de1440b6e33417b306f25c87d0cb48c7c766961e1e2442b446ac97f129fbd6e2922b85ec44ab5fd08de4eecfbb9427c12c493005cdece038893182fd7d95c7c7c12952f4e48f35d8e7c4290dcd367e5b4a115404855b5eb20cac73a3eae1d4126d54f12b300cea8ef78286b88ee8e93103cd0a9d057d7bd6d4a0e086bff25cb37a85ded42d738b304af08dcd7bd4c0afe6c11247a398bcb39c7ca35c112bf21ae407d4c876ad739d3692264b4be4e9bce28cbf6ae2a314ad0408d10ead8305b21fb0634eba78d911c1aae84f1fba64a0196cffce2aa439adc0cc1f0942734a6984c3cf4ebe564f6e4a8fdf6ff19945b2d9ca0f7b24828cf8c581e8e277703c3c3970d51d828052f4b29248c4f1713fc7a45f32582b7d3b535f4f98b1ca93847502499e8c628c31eb692896ab2f7785e5e2275964b60686e6ddddebd2fdebfa31f3bb62366e11d8a7d77ab5a9b9883b7bfb75ed0a43bbc45ff30e6f840f535d18f97e9b729ee3e45f8102f36ad8ba37f59b68c359ebdf658e7c2a391b73913f3cefaa2f9c0731cc42868840c7cc5fdbf94a1ab996538f4b67cd46f52f44ba17b0e1e6e45dabf8d753c4484ce944e9ab26d1aad54712c255c377a14da4875f50b646c0614f56efe34ce21e788231b9210dac5200a140b3abdb8adb750799dc6d98447269d9ede28242a0aefa46cd44e227edc1b2e4d7426af2927c4f47f247b0df5ead973186568991f908c430abd958915e1abb883acded7ce5a33a69a5d1b533550391a48c6195bd5d91e65909764525c3fcbe34a4cb5ded193e9cc34f9e27b0c9519b2c2bdfe043615158b8d6c9623d6e342e4ebb21842b257cfa2de44534d1269c13244f3f0b93855691061414378a51a7614552be4f4bccdee51e63d33c119bfba56a70208fa9804b52c4d4fc3d4d6155d32c6947a7233c69eac222ff8022fb0062b61834e097bbb0ae11aea1331c56466fbeedea8dbec69b0357b2ec3db283bb2e7b77a24a14b2d8534b6f86d3c0e39ff1b0a7dd7a2fb39f9561f844f6add1a088ab52a57e4b21dafe802e68f68059b42b23ba61687c3455a81a636e7bc6475c7f8d5df5e57f414588afcff0d43cbb926991a80d3ddafdb5a0b5cc580ba42cba81aa0e1adef59980d1b9681a7344162523bd558dfbac06bd074f93486442be6452c399cf2bbe3274509b580505f463c99f8e004a1f5229bd5a086f1717bb32dce4620980fe0289ff07fbed59f29a1aefc3392f4eb43fc650f180bd9ce33f9557b26577676efabc532652f404af07b219117c85246ea92a25d9d9433c6cf249c45f12c87152ca56886bd0bf75eb92fed4421ee043cccef14215ad501e9a0b13d40a90b086e9c5f8afc3ee5b30638cf6822b37a536d08223c0a0422dc4d09c350c90471086c9c0ef9691248e82c4eaa806689cee863454edc38b5d1b0ed08215b9689108eb1040c7c7b48a6ee7d1ee8f26489262584f77f88ab6c1ce1ee848a6ebffda686cc32b14a5c294b7103afde3e828b9456f9309b40e41208213c66b684aa6c007b73f2f924df66a23ef43a575503cc519fdfae9e8130400805f563ed22fd54a5d5600d975e914b178807570e1e8c2a1f807268c85c4791fc3093b885eeb6262170da25c98ded1f6e44dfac2dca6a226b85e6e2a9edba934a9c5a111a3e986734c37d9f41d4d90e5140ac286968287401d5b4987de4373383a86c09cc3b6ea3dc707c2380a8936bf8e67b1706c913ca838e72781b715bdb193591eee8acf0fa3434e974c41e251219a0613a09923a0fcef621ee72ca43f9d7dab7d2d2a733ca9ba6f13858020e242df257406f675e0ced30da184cc3b46bd4a302130318aed71d1bd9ac940893b26f7d05c5ed1b2b8d18fae43aa6ab035b2e90a5028e1d22ea91e04ed8087a57a1d1523e2338894e46d872a14cd18736bc2a9fc80252e3c1bcdf14a3bafef05894ecad924a7f3233198bcc3d725086c996a572614d432fb73148853f9569b4935f6c58e11e805c70c812692c23867e7a35ed1c960a5850252b51c9e263d43501b19f4809e9d995e59674acd6d44087c992d927793da54f0380f16ead9122f718896d5f3a2c58e9f5b2d59f20bb5b745667e60043bb252afe80e791db3d4e7cabcd8d995ada12efe6102ad02ff27ac2ccb478c8ed026ad4d57a75e13dd312012188cc4ae0504b9047d002864a3b70c7ece8f10c99a271ff83e3806cdbfe63bc1db6e01fa57357fcb6a4475b5f4a95ecf212a318cd6046c37cf092cd50445b0c804e10fcd6cccf37584af3744b9e385999fd8b48adbebfa19289ec54547906eaafbc2a8ee07a767ddacda6a8b0fc4c572d067568accbdb8d270015bbdc848201a1f70743d1c834252445ab888dfd605ac8432a89044a5e5b52d7354a175e5467b8a9cf22bf4d68aa28c4697e8ef7eef173873bdcd452ac81bac1af82a0151fae3c9906bb1287793f47e3674c3b5fc1434840107634f94e2c34794a167c9352ff14e702e616210818a457c4863cf405a8c1bb8f578470761f23f191f766567587ce37ef05d3ae22f99b48b6151ce41c16611cd4d0b7f2894001cbf667692dca58d4bcad3a0ed3392e3bce45fd37dbe4801d6bd964fe72bef9583b8a16e35e8c758f75d8719bf51f42f159ea559ec6809a85f90a70e8d42b00138c74389ea70ec3b5ed69dcaedc268d3ba0f571c3544da62d00e076787756bc9409df35c8fe36d81832762d58bfdaca70b755d31c75f33abfea865509b8ecd2c906d0b319ec1512bbd9937c3595240448d195ec7a0bdf902021b4cca94e57b074a0826897131e10c7a8919f312fd49bd2c9f01da25b11ce9d0ab82ce106016338a22ed576ea33b221c40212877957e807342206d20e1a21628a606a0bc2149614e6400c3c8c36f55a2b4dba29a04fd4ab983229be28b612c33c0db44f0839de55b9d36bec058e87e8bd23dc71f367a5fb9f90a9e3445121661c03bc2169e2b7b954d8bd91259fbb5ccdc7f94407af3d471f82ae76044154c6ac8a60385ad01a7a5f72bd45e818487d247035cfd44378d1526c8bc3f5bc8e319dad55834627b20bd239f964fe8251929df2e2abd7806e5d43a0dd2fef5f5255796d30419dbe182a5c1f740fda187379ac19d4aef0c83b63442f96c317f1642891d15485d4cde049066a9ba5187551ec570913c32e0e909a8578e80ccff6aeda563e2e6949edb5a3ef63d09acb65ed9c79827d5388e3378b4f8ec4241b046f66b46e08fc0a381430d4fc34eaad354176b14bec3bb4489aa36e1b7c2ffe768a6224d0845b1006978c680ae2d5d9330bf56ca678bd62092b4610b3edf08435752727551f159a3cf8549a803ddd28669cdd6f341ac8a4d6d59904ff6a9953a3ea21273d4c2e0caa861e8ee74a8c57d1688f137dfd3492db4efad47b9fd8c9c5fb1d88c3e2323f63128e5fe9cd2c56ccff1f7c3ad001ba48b875d903cddf92057825a5973cbe067b130ec2bd07e369a63e755ff3e550add2c90c8bb528c236f1bddc4a0d0ce3dd07a6a38c7f798c7b47e6278e7d911cccb3124716d5ad23a4341bd2770ddd822d611e1291d1553c15851f6f833bdc1b58e9569b1b8eb3da2a6033d1d30fe000eeb6fbd2fa79265bbed4f6e0d0b448da64d4abda02219990fc9cdb97b81109a62500c1e6fd5a9cd282733507a8391980d0bf7f0eaff6c62a7ad008f17761c048032be802e1f505508e71d4338113549f1b09c7188faad250add7722f822768c21d03734611719127d46dd585e9169ab15944e2a8027b3ecd2875e8dd6d9998e39f36d865d3279e89490482843c95f92f546b22a4d46dafa2c3c332661b17a38b6d4272cf0f47b92cfd9df84e66dccb814c2a42df68577098ed72439fdfd4bcd8abde7b761b299a38d560f19db3c0106f19194588cc51e4365af696d0577fa040469618b95f32709d320c4cdd11e0aea835bed86371814c65513dd55d6812aab23af32177779cde437fcfdbbb45ce91afcd341de7ae94d630052cd59c191e170c3eb9731b0e8004306fcdb5e7bdc6adbd1127046dc6858f9c4ccee1e3498baf5baa8e5307fdf49c9473b774e6779678662144b325a4f2afdbf1bf17d70722246ff8e734599e561d7c16b6e2a1ba68574e45959b9aa1c5a4e1a2dc18185cc9f4677243a72b0b91088a45a683b1fa06c17aa2429b8a3751e8aca7e9ed366df0e7f9eca20dbec5a2e74d4e1018eb7fba74eb5fe0c93b27843daf0a154708e0517490a7c97a3593de340f128fb1c37a3879ae4f92f396e83bd43431546003f51b2e1173336f55159474ea188e99420ab2f4eb816f782299744a16811023e2af9461908ff81bafe43fb7e571851ea3b6e51e496cd4c3adb4649f478bbe5879d1e460e2c9c2f49920f6ce56a86899d8075506a569bf944d50362a4018be6692db979fbd643b01b0795c5172337220455eb9f3c9d25b0686baa6bd3be899a2b88971ab4f92cf2020f5376e70669f790155a4e48d429dca9626c70ae6f9be2725c14c4a729a42e3d1c512087e6743621da72ed00a2ed50ced7e252a548e3ed2d04a767c4eaf46b08bc49748b9bb582a63a28cd32620f4ea8d6db06df5d83d031a86bc6e75355c71c655d7322d870653a73e78102e369613a1017b54363c80281f00d4a3f26189328b637bb38a9a476e12b59315aea4ff4c75cf0aba05498f40c6c80741d7afdbe54785cb7a25502ea73ac4ea8d5a5837d22e5790eb6584d3b5a0c176544b5f59b8fb159503ddda283442d5233ce8efd9b1f24d46d7c39197b92e03599b137a050937b799d064ea724eb559bec6e213722f189986e58ef0731ab1c682a5ac3a5c68606dd204043f5be8facbd8a9683bdf8ebbb8823361680ad2b9d0085b73756aa3a38748b32708669747e7fc0bd5ab7cc65dba6061097b7059d19237222401ca42d8a101833b038b3a37886d0bd63c71513a14461c70329eb3b6b4d128c039d803fa46802794f36234171b5e35a54ceb666882a3516f9042e1c125f079a826a2fd3079deaedec2fd93268241d29a0c7fd9dba1b373ec92fe79a095ce7010ffd66eca773ccc02d4e3a513acac08b46d0bdf3a0a23925f328dad7d463c78dc0dcd91d56e8454df8857e827e351d4af35e8cc445c6fbc3b8c483476434e0c3f947df9975e7aef27bf646055afbe6a2e0c07d93b3040536b0add8ef8009b183f8335fb974a2027581b464bfe0e95005d50553b1098457674a57584e4f95946fd24c409960fa40c3db17c35c7100572ffbfe968d691f4830e072da3ce6d423521e933690d7fbe158e640a0fdc878fef06693ac18b58224c1f2d774c3f6fff03c34c4713a2204ef1b212326dbb1c6e1da968d367844e4aaa7f3b28587869fd1d9c5496ad5083c72fa5c6732d2a23ad1882bfef61a055eee80a92ce2a846161f822511f9d57040229d5b8f15628d010627cc9c767cdfda1ad04c7a649425881004c01c46ac8185d6d3560730a529e8b92abee4c0ea380fa9382e65b3d4570c90cabf5c2c92f51ea29c0de122701073ab19b2cfa5b3a469788c5c90570af23603893e14ff14a070eeda7c4501b8fed18fa798a0dfdb7fa3cb97daa49f6df15bb56b4fbac2f99f6219356cf7ef8ba8c1c9e21478d4b6e797306e0179b8fa0c52f8816a19f21f318624c77ea1900003a45743e44e7bb5efdb4092f5257c2f7348fffdb4bbf21952b76a3d46207c6f6f1a94078bf8cf0b8887726f99d273254cfbbf80dd79f4ff1e738ba3e537742ee6fbbd01a4877b98358e8227fdfed4c3c8536200932f03dc4362aefc0a328cf6b2e6cbfad69896264f49dd609f72226117c17bf046367d5cdfa79637b51a481c204922b6c3a087c0f5eb7f4e3b2fe8c16b2be30460272d23af6b63efdf4a2db39a3532df3e0a24af1cdb2ce90d175304d382002c736be33837c680e6ec7239b7b46d174ff0522b599302c7c44f2c65e96c75f224f29c2b5ef6914b5867c793f29c9acb52f9ba7a7348ad081db615d6d5b167d85b44b7c547e1b59a9c42add733605c373572984142630dea097e3656860b5d44c27d9a2faf1f2a6874f1f5980b592ef8935dbbcc16999bdf365daf5aae67ef7261264f40ac6ea2e8ce309ab5003187f3f766e51948ec2419218018421c4d1e04a1bf1fbcda688f79e4fe047bb1138be32b13e10bed86f515293fc5981f8c94583a6bb705e343d85c5254fc02a80df3f390b9e07e72433bdb01066ad972994d089b0c53bf08ae622c626fea24ce7c42d1fdc2fb92f65879258122ba7f2c45a04dfcce178ed51648a9a10a47dadf9106af58f80de9fc2070617a9d0eed39016317f6aae30c8cee1d690e2cacb15802b05d3454f3b9ea6a701e0065e4c6e819ff6502adb72c243eecf5711f1344f2b477a3d6d3bd6585aa6fa81a0b2d3754a2e3a09318bf204cf25fa4f59e661fce1b5ec204e659bd8cf9aa060a654f8d5e7ae381bdf8d7f25d60865e3f32cc6347ab8b876e94991431645e2b748c44f1e1c348f3fe9320d7bc12edd383d7144df615934bc34c14e759d2c9b638bda55142519ba6cdd88406dac7cda2f91aac289e6c1834775aef102eb010c093783a27732a31cdb4d38959d26a4004a24e2486efa69b69409c6f706631c1c11480f41572ca5ed346cac4a3ea0550535cbc1ca49140626a5a91e79149a893b7a322154b5e26dc1a991abec77f2459f5c7ead95c21c74ab9a34bf2924359ee11d3a3f0063b6f63d4104e45de24fb15fbf9071c796abeccb73d77c35d8bf25ea74a75c38f4d41dc4e51db4d426f0c368c0a9a93770fa60671a3ead3b3cc31159f1350187a60adafbe021a1445bfe4acdda8efc67fe484b8c28702e7f394d4631f851ea25f188b0148fbef73df3191e72baa2ad70545348ec144598cf5e76e513daa32b2f9fffebed418c31f144bb41de5065db44d6a1abe1061c6e743c709800e8fb7927a92066f73100a230b9aeb1db155d7ba0e5dc49398c27c4b605b37d008e702495b2db4a222e3ce89e14f8210e25f9e81a0b8424c8a97f2428094f0b7afd6310ca455d10a0e0f53b04238f030b00c5ae04175320699aa3261d74d074e0998ecfb2ee0ce939381d74bbdd4abc8dddedda2e8f7ecd357e108d44dd08f0a1ebe7d62f771f6445165aa8e2c8cc9c2656ddfaa7aa126e33743b6557ac857d4f5e888aace97d0b6b6070a88ab59cac73c95fce0c699de1391865e8cb0fb1d70ea15bf8be5d8e952996bbb4d75961efe41453ab430426c63205603c7e4675fd76d8b05d108aa9d4e48fad504f84bfba241ae947d52a79be204897a96e7e5c4e931f19d13d2ef447b9cf0e689e97da23d9cf0ce89e975a23d9ef026484cbf8bf67ac2db26a68789f662c27b26a6e789f638e16d134b8f049cb6af647e334df0be09eb71e25e4ee85689eab9c21e25765b45f530610f2776e744f53b618f13bb79a27a9fb087137b672740a25603face1dc96ff11e93432f20f8ad50c9789715252f82b72c81b00aae80e3aeeae87bfa033ea300fe2b38f7de25f20ef5f05c690fdcab957e7f533107f44a5ed29cb206b0cb588404608e89d8ad09442e01497f9ff6de96e7ae9b9582422c21b46c5d7c887487a73e9e9df8e715572843011de60a9ed55fad16ad02d6e3421c24a4c374d8c3c1a73df99d2f50c0ffc1eda25ba59d220e1f3f15ed714b40bf00ef4487ca1b1fe78d5951e7e57a9d08bbdd46de97ac40f85cc269d3da2b85bb11fcba4f0200a6a3fe5a2883ae188fe1809e4c1731ab44f23a1ed194d6a0f8a8e1fc032c012ae068764ba9e4d3544313a8e46b4dbcab563224b95cf886dc78800eace8ec10a58eef855c6c20f2849524b8fb5c9698051919bb8f1eeac46fe8bede2ab4967f2aef881e82258dc8f015ead31538a93d0cbff0344309e20b542731ca83bd743dc6367ca7a409047b9c052f5bf2b6507f689849af526b7a74426d48c5390f9c6da53c28feb12f0e7d06a078e7da3141707c394ba3f27f56185b1f765a2dec520326f882ecceded9b144350751daca80d7db5cd62f8c05e98521c90c88ff2f7520b55e23c87d78faef10ee9a554dd56d58671af987e9c28a139bf0ca13d1e3e8429ac2e808bd66c95b274b0c1d90bffec3f885470582e3b93c9a48372ddb1e8036ba4edbb336bf600dc3a8f403660759ee968140923f32e2b5227fd1bc071b5842068bc71e116937e9155f6fc89b6f42a722d9f34d35e7165c47879ff6666564f2be469a8f4741f3276c14b522b6764d0a9f63bc2b1709bd0321715f057f22974bb6001577f177e931fb7b08a95fd83f90200572dd8aed63eff78027dbc60d1f2d3b34915d2216c08b75de20bda878c34d7220b490396adc89bc621ab443fb452a03d35811d744e8ef210ce33e3e93611cdb7b5c8f66faa0094de053811a70193c2628c410fda66af1277fde3867d4a385be3aa96e6cc68621f68499601b96c013d164959107cd10fb1026ed80accb388428c750508b3ab0d63e80300436e191d7172f3332201c62f644e985a83df3bba615ebef38e51b168f637fb668d19f69e5a3fccd444bc99588a87d9295b89d06d3148b16e941300701cf3eecf726f522c60c61db55c1126d4ce11ea1d3a4f96955593386588de06a98551dee800f2ec99aae593adcef2d4292166c5727c10910e2e582aafff19b50932d2653ce22280ae7d07d29050aacc515a495d4355dc0243df93568cdd5ce1140f9b0f8615a290dd1ba68ef8f37933beb38fec17562444d81e69dfba623f56c10e54df1a56657124244add6d7677a79cb0e0aeae1c43294444387ab96d1760c90418545a3039a402b2aa021bf513f5c21392e45e5de01788a63c3a9563d51f28ea33042b57f017c713f4ecdb6570d42f5c0ec9adb9a069b25b8dddee787cba0432dd0b959048120fe43e70ff0d21c222827e72e4115d9cdcb7a2cab98020fbe499c0c536c4c2029b6cc368a671dd6a41b9f86e479b7d6e8fea59170840416d4e7f341a29da21ad5759412ef3c1f982e0f5b0a400fa7592f809bfb29ec45489cd16e20099c027f383b2e86460e127b36bbd326b4c1526e7403c9a46f2007be6a8e2f1dd0ea323778855523460421d9457df9719d26685073f6b0a38cb8b6cc146b4630f07eea3ff5906796f94602840e9dd395f58d0e1b54a0ffed13878370a7736a30b3d26c38cc5239522a903a2bed420b9e94f1f1a9687d3dafe120b09b555867d9bc17967203cef998e148b1306205fb87086e1906a41cb576be64e2387553ef44ef3a6327a05be131a37d2cf0368e19dd3ea6cdb9022e508ef54f786d42ac8fcfdf7845c5b5f40af529c0e8714678d863e14cb9aefbe1595115ac4cfb360bf51746053cc7829d2d8779eafa8fcf21de4e56c657b92c5c5bdf58e99a115defd9833e0f7782c7ee6a6055b3b4826e4b7b13f81a20594fe05d26a6d8f85df504a27f003549e07703fb9bad1141ebe0474fa2a8d14e87eb76f7f191e70dbd0530b90e212a0443416236586a6364efb45d77cef0c0864957267c78fe3472c8bac53d0a97fdcc4f7c74f172d675b47bdc2bc82cbab210416c2b11cbc1913489c22978aff0109e139d4832e654424d60c492c595b3fcd103c475bae25d6ecc18c39f7813ef046d14b557d9046b6187833e9c77db102a7f667c05ec9534e9a609400647f146d14ab5fb7610f23b9a1d5e7c8d6c328470b73e3fc8218c2ad643ced8758d025ea4049a2c6ce4af180dd6272eef95f4f53b6bc2233a8e182e463d5cda6611c8e1433d90cec58dc932d5fd9cdb8cebce7d5c5fcab41977b1656b3b2c708e8a79de714c66d0b5694fbdc990f864139d478b22088788eb2874d44730e085d45e1ec9303eff9e891f7f621aa26a8949b637183f6f006fbfa48afde8868deb2550865ba9560c910e0213361edc08a25a6b15ec404a05c2a5f3a89c0cc0aec55ee3275f83cd245e0784238446045f422c62eab73e4a04adcb52c683e3e8cb3e2f409022f28b210cd7786d8ea0e3fbfdc0a6fc67014da82d74987b548a54961a66c1dda0e84e4189936225d50d6eb200f3a7054e463fbad69f72b84c313d234600914dac834ee5df6aecf08c2de9a4f2f2d9a6345611ac54a171b4cc89c8412e99e1d230bcfcdfba302ff417a1f5a5f0f774c2849ca50abb08a742586e4015d44675e78f7195c4b152d11678e2b32267b5ab486d77fca28b37a2d5ba261183b0834b677ae167c4bc3035659cdd2c3f4ba81ddf10867b1beb998edffdaf77446843040fefd8d33bd59c546ae0f5aaa2e61c7791f0d84c332e81b27382fb480fa75a5b08b5d1576b65f8316322e01a7c619a8af93ee39d3d555ec975741d864508a3738b639a45c405005bcc6853dc843f2e7dc1ea007b43b7ad1f7144ef72dd44a03b414c57ee2de034bc103c10c70311eff5a927ca717e050cff1c40328c694e57e32b0d7d1c0dd1fc0a55094c901d5ddaa3b08f6d2203d10054cb637fed2e7965275b1370b8f4be328688704100620ba6b5600855a7e8dec2fbae52e563c8d422763a30a9f44cc6e44a9d0c0c84bb61a43498626807a48f803a0fa3294354c16f7e451f0b5d401a10a1bd674a77c6484269a4c92545ce02e2907c44000568c14332e7e29813e3d53cd3bd73d2e06d0b6721f6aeabfc4eb37c5428c791fd35b454e53a288fa0c57860f8434ee594fb287cec36a3008d10233227d761e4bcc9f387b02bd4a08d0c8bb415ebc4962eafa07027b0ee960970928934fb5a3443c249d91cdb9ba21239161f3b246bacb5ecc323295e54d6b74b394948921276b2d3c6cdf54078448dd9bb00248695fcc290aba4d5f5b84ce570ce8a87a51c4809ab0010f145165089f2d731a28a935f030d73eb5f47656b416b0c1652d2b19276cf680574ec862a07090633a68ce61b6e81b21c5eb4e851d1b9d8b009eee93d71270624c7e546446a22e53f99d91a91a8b101592dbb31d33e7f39928b574859b8af5b2c221be538982b911b45fa4e3caff7851feea2ab77baf386a86b892a37d0d49411bc8eb4712324c1481f58397267bab6ae371b27df272b553ff983f4b9f383dd1d504fb75dca7cb263f1eb482b33f2891e8672014f248d20eb1610ef4aaba9acd4fbfa3c03701bdf9b130048859c38e9f7338a135c9acc3d5364460c64c2907fd6fc7c9eab02da2649c8d22b822dcd00e6a67969ba4a709a38cbd77022ec999a3a0a64b74c7fd21f764c20f7c2ad0298736953b88a784fe2ead71b9f0753899bf905fa3991e7fcf9300df95148b83136854724cca0f7437401d3c747b6e15884b4962e0045a6a2a730b318ea4cfa7906355e16b0a6d9d28913fad8624069703fb6ba4fe117bc9e55af20270a303903d0e3b0d4749c0a35e4f92828fda448588ad72f2e4f76dddd4ef77eea16339855a8a8675e744cf420448f06742a578b58a720737715e71eb4cf24c1e7e703fcf912c68ea3cdc94dd4966c42faa1b498e945cda508fa8aa8e4ce23fede90cd4edf538e7a2a74fe2db03368a125928f1a7c02e41437443c423a4d3ce51110cb6da351bedba2633dde63d8f3efeefe1c5dd4b6a845447f48842a70b2fa76b1311d369dd11e69d49c39d196b595dc3a381487c3376e59f9a45beb426575311241b843a893192f9d0415ed8fe4d21666244bc193648af2918912259e51788df40aa22821fcbd1cb88162c7509dfe59c2708016cdb53a3796776251ef6384491d78de7547f39059f099389d4e947b8a6ed512b281b196f61bb11f3b02b929f3941be8ff368fe84f9ddbe40574283137c42a780ed3b934d272ddd5148b83038e390f6784fa861f09944ff8b0bd24a819234f5404353272a64487a920074fd0a2e96c15bc6fb8da4b8fc07fbab70b287507eea6438311ed7b220981c8a7fdebc30561ffee4435f96ec449fe24852c0f51ada24b28d66bb7a4a2316866fd8a69c087a784466dd82997e2cfeaa2134f73bce670cfecdbfb3facad6f1718274ca67cdf85c2da6e49987bbdc996f6498993e8ac3c41e1e9df8162be8c4038042d56faf59575e92cafb6c57308103f2e58298af9b358b81dca907870b2232382cdec3b2d18c1a9668fb674d3d2dca28b334948fa47ea5ca4b916088717b2298b078ee16e50fa100bc57966604edd650e0e3f47023d961308a9857fbb05bfe759ad37f7a53cb567f89732a5d09312be21dc944f1b1bdf77683b4f640ea5019f1ad96c4c0cc5accd98061afed125311bed7c5bdc424f736f2234b62ad06c0601df4116470e35539c9f357da2d5784b235a461c5440c31cccb1c19b7d077021a75283e0e77a3e41e4fb0242dcb654748248a14d507e9e4bd94e92473d90a80dd3ca1c8f4aae901316bbfe487ab9ee09e2abe68c2cc26ba604a5d91cd9ede75e3c08b8b4fa41cb5cbf8b45618ad335ce0e0f314d55c08c724288f3f8addbf2032d2ee5bd113da0ed01fdbd354485282330d07b1e22441aa27bf797cbeb73b321aee7d5a25ee327e71a931568f3f3107cdf629067ff9f671342062b8959f272c0e1f3ad23c1c94356e21604f60ca38dc64248e92cd13749d6a5aef6420efba9fd24d41e8159fc822e747e76624ed5e9926f8ec34d4f13bc92df79a342b7bbe4d9ac46df29406038143f4421ba3ae52bcc6ce60a452a5ac0f9019d3602138be214c3f0e7e12f80fb2bbf7664a249435fff22d45bedbd230a4d3068c4d2b4b31dc35c4755e001b4baba0637d347f24d0a3cd43fef10dacd4f25b401b4afc0aa675ac4176c548f14450b2b6372e11d4d4ddce5f8abf6108b71808d81126138b95f4bee51d4331cb3bccaefa291bd47a935a8fe0b02ebce118506f8bbb5a2d5444ae361393ab29b6239b6f19be511c1301e4cb8aa77c4dc5647266259178700b4687c29c620412825cbcccba5f11a7823daf23fb1e3151d1dda1a52c28a9b8d03ccd6f388b76e5abe39795afb1085aa1c148a8a709184722dd70b916269975a863902eefdb63d4d05c4ff88b8c7c186523fa97bdd5ee91a0407a9e6dab64a2ef5489879faade44b6528fba66d90454d78f0c7933cb121d7ecc69e979b89356d75e467fe118cdde4e9f6fb3f4184e2ed565adfe1583bfcf41b68d5e7322af2ea4b6679b5e6d7796c0ae78501607dde127693fd797d266c6baae42f55305021634a719f3fb5ea820da24c8caac249ab076c8ba7ad0472bd3b50846e693f011d1922a885e185d2d5326e911e9d379dec6ebc7252050fc27594fa298d32d26cbea8c5c9d450efcad281698e92b86b07615a29c8882eb0f97f098371f954d6991d624a9ca8fad68452aa826b29358c8efa31109d6da9b42d7d58fe5f5e8f669ff2206aece90a213015eca748495ae1d61c2bf9e7e3a3178f91a79ed4627f1672f91b97b7d24c80681521915fca79b42975f243c67eeacf5d823458ea70a9ef121dda30075cd691ec13a8b6505521848715711ca61706935b2719207000a183bfab4a6299884fb5d8f2324a5606dda02e5cda1b65b19e016afb8c457ed0a93f13bce74931a7056403e06cf55283ac57f8ffa39989ae8710858b7dfd85e2cebaf225459e3590a4cb35e4a8ff49c03a224d047f06a1abf4bd4e04e70266332589217d7fc3487ebb443a6249afd017f2403f0945a86e94b9a7637f31541e63efc56dd5e41a579d26f4308f949e14496c8f9e9508e2d6e0609af9c092c27792511f7ee0d9d94b6403ec91633fc75fad952592623780ce7a6ef6b1df9b1242a961d7ca9fd315ddfcd3ab536e5068bd324a66fbc0a74e36ac4ae4d60eef04b5c51c28e72de5a84fbafc96bfb19062166300056c944d5a00b0429b875e0b87bf97023496b286e6e5757f79f6006433129bb93a814fb7f642004f7721b3f1e1dba1e8714400d3e738ebb59fc3b30476e6526a5f1faa5877fb166006b5925aa53e15ef0504299677ad861e314ed87c482a37dfe5d20fc4a0b4266c962572979d3b07624cd190772a2d113df272399d320caa8ff7c2ac66b610f53a5ca12fb92710c9e700637030979845e4591de6149fdcd59afae618252d6deb6e5334d7daa3abcfa995dd3725c42c82746d2c4fde89200d632b3fc84c495c8f146b4d8ca9458d8221504505c4659bd1489901b920d8ece029df885bf7db0fc635ee3ab30e6820c4fea2c8aff7a5b853f66e6035145af207323e01da3a28fc3f6d1e5e8d154bd5611e42ef540fe158cbdd20f10bc8a041f09f936f05cd538f7cd00a4dbf24944f1428770463a3314f7462f9f397e10f3da422942a9ac77f71742f3bfcb5d38764f3c3d933c5d880827268a28f5fa00b2b327910d5e1c8cd39986c3727e0d981f7003943abfdf01a51e200369f87c05b326bdb0a7fb044a98e1ddf998d89f15a96f0e3ace2f2940d2dabf8d8a4a92d8641d44cb39770096a46281a7bd81e873fc1ed7449774696e3fce96b2a6562fab9021c0730237b866b9044bdefea30a0493c179b06470ae07677a7f37073935c856b6711efdf546a6dbba480f3c7b4acf9140ba6818a601b17b39ff992b8f20fa74862638191d3d260b151360c221b0198de7110340010815f8f42e6e9a64bb7bc5bc37a2c2a61261aca89ea27177066e2001cc90fa09301534494363cfc7f1032bc72310840164cd1b8df1402dec71e0587839d000b6c6f6ff74dba2e8c3990d9609499be05deaef268e6ced98c4a9361ffe09febfecb33ab0bec030314bc3ec0e62cb7f99c5ae53bf26203a486269c80eb5f2096389632589aea8425048f83a5c7b50b88759b82fe42118886ed7d9da00cf507e5682c679e3afdeb9890482b54960c34bfa0687c1130acbfad68ac869c571c33e62ed614a8f85b2345101429139c726c3dda2cef702789880081f8a87061e176e5a9095d1f01e2733abed9312182c5b1e8ab7817a407e4d3d9a0939fdc82fb37b75b6d4c28fc403d17c23b92a215a0c425c9a5c964f322dabadcea368a6b1f4b57d4188a28a1684df5c0d579a5a196cb5c7328d91867f3c85354de4ce020b33d6abd45b5a347af8dc0a040d896a686f40d941aa5f3e31537caccb50c46979cb947bce682b415e6cf010cb6901cd84bc6afe3b1aae5c837c54eea300224062b92483b5f558d8463cb49b847b6c6b43369b9efeaf4d0cafe9059710881932dbf3acbe7f255253021f7b61adc0abaadc665f134277e3b79bcc6855cbf9b7b20bd2d25f8e2fd78e8082817e9eeb9fc73f37468ade0e317f2ccd0f057ac1dd64a8b667f6d652ddc1333571190272e9c667160ea297c07fdc7904f1dd4cdac9c78d7ce1b906ccdfaca85cf1dcb315ad1ba9aa76bc79e6283be1ac404680a4e0107517022f7e45bdcb3de91be4300dba4ccce2862652f588c2f7f131c56beba22d6eff91787f78f3e30c4ab7e6d9d44a0b176145d62f59e63df66ae2c6dd9d609f6c4ceb9b22beef482c9e3c7cfe63c1f6ff4e524ba560bfc3a917d4f0c919eecf44bc57030c00dcadd5bf49fce0370fe7286778448fca5843f7a4a0d44936ff2bb9a0100c780821edefdfaa600a9352f13baddff74e8e9b203b55fb6ed17ad286bf75fab80e59f0f6520f496448a9005eda3163238b2b3461ebf54736a9dd4af96c6df6b229090537e81c26df85726fe0914652f72d76494780a89e39c7bc135e7b26bd7faa1faa29b37a48cd966cbc91dac72d347648a66090fab58f7bdde53822d12a899b398bef363fe48b3ac6930d8c10dce2adf88388cc99872b8ec11de9c7bd947f1fe8e4484fc19af9bfba19274c97d6767e143a1cbe91d41b0636117b77043a77d2edfbd6d925f6779370ad804842c897e7018e179bca727529044838775010823c2b6272ddb16402637d942da4a532ab8564afe6308568c4f63c8c831dcc90d8370e0aa590cc80f43311fb45c9fabbc3fcf6b0e3f936e8a4736c453f083eda593bf1b31875418f3019fe8c1a32916133d903c9b42a4c32ca95810d4e19a4b8fe545d57d7ebe986a6f1c0ef0eb83aea8ddc0d1c8a7654357df18ff148785ca8668c71360ff38d892b5ff7c824edd7f76e3b64d43f836c1c4027896c05770794eb56508395ca355a0e5265bf2e75626fd082bbedb8f4d2a3f2e7091e726e430856736c66c1cc38c40aa95ade9d174390af4e697fe37253b054e67a4c0db66ce576270674b8dc0e05878e1286015700e0bae15bf91620496df7f5a6fd15c58df9a1b16f9c6709d8fab70e20a7a6ab84e74a23d700c610ee2f3bc83b5615bb8ba7eee79cc586a01ad3321e2de223cc1e3ebfcbb0ebc8bc46f8786e76020c07478162370e73c58c8ca6f3953c5029191b73bf19cc8be28d369ee45c8461a1b66598af331c63e454bbe8bb0ce915fb15af0378ebbbc736c99f7fe9cb71139ccbdbd25e2e3a204ca97be2534cd6a28a183c9214325d25b50cfdf3084f7ed6521bfff8a0444156e2d6b6ead317a7199e134c7ca3273eb0f8fadc8883dd32eb8c84be017b8919f172b68e23deb1e3219dd0251b02b907e529183deb964b4f3323e81d5ecf3988ff72b381de601ea507da4405350f93c8fbd6d2ac8a9db8071ed370c7e084fbe576dd35584bd2e87f8828518246f4aead8899e486722af23c623f1ace2f88ba9318a7c4b6c0d148b16cf6c9525875e72cd27dd83838583d340c3d2464753c8deb1fca9e1ab7d624145d2a9cd10f566511e65ba24ea29d5a19ff6bbe8bed76c686b104dfa521d915e7d820a26382579c749829a08cfbdf8460540d6c74e5eee12620556f975df0358ded55394d513aa3b90a9fb60dc735e44072b72146737a887c3d979e7bc5236f53b06a0b77f85310831d89bf976871b9a3f0dba342a08affa8d0f074a3ece2ef1478a3ee5c6b96b7b90f9850be067b0b3c005a214f11ceee3d17e70569747f9077bd7999c75cfad01158ceb8f5e712fe5b19a2ce546da93953b10ed73384680fe81c08058b90dfd2b51d9d0c348d9eb7043fb6d41a9675fb7adb85a7ca2a126842c4a6f23328a5fce388e2a39ddef496060fcf7b47fe9d4942e1dde59555e883203361253fd7573184f2dd597b587a295c423669a0d3bff76a50209ff372adc12fad0b899d5beb1eff93ba0e13faa4e6704f08a0f5920dd1836ababfaede59c6382efc5932058caeb034bff2d836d71a42d1c35ba438c4c6c31e4eb8ebff8bc90eb6de96bff1e49f904613dd458d3d71f0e1a0bdcaf7afa67c8105803e821946a9d90355c60e8de2ee57583f345a75cf0cdc6d2166eb838e6cf7262978f0e0e51081d13ba3683e63744d1a9fea1bf41e4946c708553eb3875403ac02013d8d7ac1e554bc3d48cae425c373519387299bf5a78631dff709d7dd71ad99b5daab6a944f5ee9236fbfd19cf6d27daaeb6ee5c2187b3bb05b7f4b75bdc566fc8ca093d8c5557c6f64b6ce1dc8a623ab6d1684dede2a9dda426f6965ed9e3bf5c6ddbb14efa66d78a6daad13db8a3cf7a73d673cb94b62baddd57cae2766fc339ede536d7d59b2ace796e9fd086bdcd0bdbe88fabec3aaecadfe8b6be5d0d6aaf2e74995f9f7a6837ad7d8565bb3e5dc668292937e1b609a54dc26c126393fa9a98d68454137d6aeea7b3f085085aeb1dae2915c76ed9729edec59bba527723b5a77bd8e6548db165eb397b113fbd8add8ed64abfa19b5537560bade7ee51ccf495733d6a3b5dc36b5aed782d599cbb6791d354eedec86df50dd53cd5e3b66635c79e454f5989fbd1753d8d57625c4429a8f59eb21daf36d031e95ae2d02034ca2de5f33f606772eb1555df528bf7a881a15ea06df10dcbb8dab3fdb11e39a43c0b41bb1b85cc5650201002bd496a1f135acc20dda9c91bd09539a02883506a4c3b9ed5bc06cba84293e62afe09cc14c5c4bc332e80fe0adeff0a2b9aa9419b37936c0700dd12191a3da5b5f930de756731323158180dc6c8fbfd47cdd543adac71587f9f529f9d9e674ae64bf89a026fa1289964982268a3fe2bcbd4ebba4410eb6e61ac7313ac39f57b861763c8188083175f3dca9dd0b4c399271aa49a7da0ffd2e0959a8a7ded0b11cbed659c5f479bf71c5f99b110913ee34b6b91780498f3329f0d60d1e1ff51606dbbd46b5cf69bf005c1ec3ebc806d3c38c76e6f35bc0ecac1478006e4abeab7e641753fdf0c49853d826b34e336be3f3479a34169971100b11188e5e01441ae527cb21920bc2ac76a5feb1e67b2f85e184459824a54ad58d04841644157e7723666f1d350010d82eb68f7106bcb27e9e67d992ec8056b489520a29b9926095784394f592aa6d6e68a496ab51aa807174f5f8cd12a1bb417449ecfa50ef1802cfda1db37f60ec5d08b2a2fdc41241c2748372e68959c10c454ab4e1d8fd58c75e614483cb9a188fd27d0ca4525cdc08f1188056958e16acd0c510b981447507c45497412c417af682785f4c3ba6dc7a36b0cba787ce1679f6092acd18d071af7df7d4c94a870c4dcecf878e35c88558b59586cf2fd077bdc19bd2442dbb880727363ff9d48c5fa1ff6fdae796d4157bdfbdf5007faa33a7605269bd59fe8d0960272479cda1fea39ae6f2ec80077922abfa0b029bcd9a509a5a4e7acc85d3024d45c7991851c1c5e60abbd10a03871e3ecae11e96d50ccc07abea34491310a7148c3f24c11c5965fe74683eaa141304bc7d80731ee1fb445a833c7e9dd1498f1e46308f9fd7bc826568f814b581704317cc70f38d9e0c7c04f86605bee06d3291e53d1d309fd3d9414f1d1407936c19e15f2c7291e0a579ed95e35b6bd93b0ed3687908d82f96f45bf7e946771a7f58eea2484d14b7ca343e6be7c520b28b887179cba3d9f605653f20b2f66bfe282ebe22a095be2db0931aecc57dd0f2f7e7281393a127542e52e26410a9fb13d3a41f72c2b010b501bbe7d1501c00703701d30ef9fca57aad78283d6d0067a093626c4cf090496282812c4f841e19cb3a03e79840c92462abb9cc2ab9339528368f7b2f73775fe3094f1a96d53e318594eb8d38d013b5ea223ba41635c433acbe9ea1b37512103e7897eeb5859d619c1c284cba78b9d5b0ff6e633bb4d2d0ab196a0c3de17f2981326d22b3790378333bba47d2a33e7a47aeec219606c1d437f5de7ef4239d0d37948152fdf897251f8cb6fd2d1c290abe0460a553e1913a6a763bd587c973ec73de6abc31e36aa51309f55dbb5690e9657ed2e97f1670da01c3bd1960223059d325bd478c98bd8a9b3544354793d336748187dcd91533b17cd547a3639f1670731fe7ea9dcfd86ad417414222124f98e1c03772d13ea60ef88c232b2a36f37c2fe90676132426b30d6027e1e2dd9d3845ac5e30e146763bd1e5eff9f00e54d5e8b00880f4a2933f3d6796a512247e149041b347823f04caa92749977f49782bd682e823e12b2ac86ffc28f631fb427cf4e67fd8dc1c36db8172e02e05d564cfd9bb837c14fee985c003ca048cf14ab1f8ccf3fff71a8753783cf48ab3525b15659807c2dc5eac8e6edd4c51602d05f7196eb6583e6defdd5d4024adea93774e0ab4742603d9536c3bc270fbe8e9a4f65fca720b5e67ceca9968b49cba604792aca9390aabc5355b834411b6a40ff913d0957cd4ee3cc41739b60e3bacf44080f4bf0ec0435b8010aeab67c38202e25e9c000030c30c000030cd323dab6e15b6bd029f929a594c436ce4e0cdf0fef0a594f929452a6b493b20953faf7f926009634b2f17ae507ea075907ab02867640e50b264e4212c7042a5ee80217b600e41f50d1829ab6dbad06317baa260bbfcd27f73ca3b95963e10a22152b24b26b90eab9fe4dd8834a15bc81b0042a542801f22318a84c2103152968a01285bdd326ad5189b9556f050a9527984ca0e2049312202640ca3841032a4d50fb83169e4cb6b0512b4cb07e656b9413bfa6e30c06535942d3b4f2da32373bdea9a2844408fdbbfb57f15792c09cde10d3cf8ebfb90c0653418235287ded522a213a2b2b47a001491c6194381c2540dcb040c5089cba59fa4a15155d7b068369a35204b4d2b572d4a0a39c6dfd07c9b251218207f1202878e30de5b181ca106c3d9b83da0f51a1f6352a4258abdfa8d7a2dd4fc995205480c0083576aa179defa2567e8058294e2bf1997afe04a4e2830a547a00810a0fb849ebf0f972cdc596789881b28b113818480f312240d1050228b958000517cf48a93ad3f4d6f4f92d7a29624adefe4d99c8167bda4fe24d758aab069ea1d4e22cf2c926ad7cb475560683a1d0829bd3d634ab79dc4d89190c86328b045064a1b85f7db3770eab7395c160caa0c42284020bb4cea5e635e7cb0d81bc099013644e48dc5801e5159e7dce4a356ef6d87a041457e8a5beafdbd7462dc760c038a9c1082a60a21530a1b4e2e45f834d67a2a3e5c60ae5fbae7cd7f55297ae421d396a109bd5eca7e5425054711cedf8951fe9ab26a562bf1331aaadf4333b0a2afcdb3ecfaec2b5e84a39c56955637cdbcf848628a6e0e66fee6023edf58b4a9196732637b81685144d7275a9d5d2d4bc5146812b4d14b7f25042b1545240914dfbda94b2f3bfd7c98cb880f20994d47baf9f3323266a12860a289e502bf7b57953bfca953a61482f3d9b7c4ca7d4f1a070e253b314df3acda15cee6a5036619af9df9c950d23bf02038d1d695034a1cec9dda48e21fe4a720029892313be68d689f714feca3e0902640e450307144c64ba26a5bb936b9c16c89f41b9c4377dd7bc4a4d9b368c144b34e708b13272ae5ee74f7e286b1b20a054a23b1d3a626d4ef5b9c960306e5028817b9a7ca5655ecfdff73526a170b17a32d55d41c098c3cfc89868192265a048c253ff1fb5960bd3fff3c0002512978b4a21549dff682d63a2652c0a24dedfd6facab329ad671fce06e5116b65ea413fd709175247ec71e3a175eca81549098f377e8c4169c449b4558d5b63278d9b6d1e22649c2152c60e31c64863c71a144668c3a7d79c72a4ba5517716ccd5fad5973908f7c318688173bba405184a9fde63dafd461b3ffc55943e4a040e49c40e4a821724c2072d210396878e13de208723252e23f7e90288192884ef92ad3a3ca759a3b6f5010d178a22f3ecab58c55fa82042264888c40640c9118500e618b8ea7db9fcd930d1aa2516a1b4774276da6dd425842f59929db0981b65b4d8d97adfcd3643098911220180c0fca2050ae37a4b78f86f40e09288238fcd7a6cdaadb5c510683f112130e5002b10e3933d1aaef2e0384fb59ab959f7f2fbbc6615206e50f2a79993788d23778f2fcf04db30ea2c7e67550691f747fcdb261d76d94be06143e1c846aa5749d7dea64efe14dd7165acde17b5e3ce4a0e80191fa336bbc534795ca603027252e87972081920795a7991b75b3d69d46e1e19142cd6adcf44d731fca1df00ca9b4c8912ae6268a1db049eb6df1325122491d16eb526d3b45b790297440ab15115a3ba967f77c98419943b2a43ab028725888125d5edac67df153e29096682142979a06513a3864360de275ed6e8dada7bc2153fb0ca1c267d4f30cc50d67292b4c6829a3b4a1d1cbf775da486d7b296ce0a5bff830625faea6d6800e97756983eccdd05103de7df254c6dd0b29e524253c684049c32ef247b43b4ec96f51d0c0c8b74da3f87beddf66309826a19ca1d17b35eeb264dd24a5982177cd55a3b0d94b442f436af56dfabb9b7f7583c18031c79394781b143234ca8d25a5ca97fa78ed80328646edb83bfa35489163264311836b9ae65ea2f46599190c6683988c0039693376b8410943bea173bc0fee3a279b028683d0c2a32cd7672bcb2fac42cf4bb16abcb0d025846bcbbf0b671d5f4edbf5558d4a142ebc63a306d942e906650bab14f57bfdea79bffba802450bcd9f43dda877fe58525938c5e3fbb80ecae6a884053fbe16bd2dc4baea917205ffd4b035898ddeb61a2b785aee47d536bc9a3d4da982e7374d23648d999bdf8e6eff01a407159893dfb759ab48211f382853384bea1c5ae3a8d99192824ad5adabe8e77bc951c876f375aa598bea704181cf51f9abf6203de7e413981befe612fd196d278a137a295faf6a4d69c2bf6ab639ecad4bada21d4a61c2e6aaf7a6f93c63454b0c913076fc20a12cc1fcedb65953ce6b4ab05457c9efe45254cd49d0d49c9fec126a7af142021e761b27aeae6af8087bd7a0ef93acba0a518c60ab3bbdb94c8e185115e11ea5f44f87dfcf534384767dd564bc2ca56b9c3204a4ca8eea475c85945708a89bb4cd9dc4430942ea3edd9e1a850c9b44226088341744111420a88592f283bff4b7ea5255a932668ce2034fe494b89fdbd331ef415fe2b7d578c997ae293c3085d23ab08b536b919d6d7ae902a95cab96fbb869fa201b07c885ebbf424b6983bed94bb8d8e3abb44175dca6fb6ec10bbde2b58d1dc0162755cfd5da5ecb795f8c03d4029bb4a793abf509f17a5a7093fc8dfa55a6be56335f78310b3c6a79181bcd6e6ffccce000b278d5344db35b420b91d258ace6e12d2fcdb6952e8e03c0e20e69f3a17418a574f215c7d3d214e9d1118898b1e3e447900c1b701cc015c6d6add6b18512b5214c96a9d9b3e9e851c4c3d208c5d56d6965f36a1a858cc0f49e3a3f9b360900192c8b40467ee7fa587256b68ac8a6c9e3e53b55dc7612f1bf48f14a84500683e9a17e623202478f20fbc60f12165810918ed2b141c4bd4fa745da10396347899f98e16f94781a35b01ce2b2edf8e13a863025ca8cf4508b219652db34eea42a71932c8540b58fea8e426dbe9a25b01042ddaef9e5f1b6e62c8378b7c7739ef464c0e81235cab008c251111915155affb4302c81409956e2d55ef9c91e65309891105800a17abdfb5f839f1a918561f9c3678377db2052c90b5d060c13ec30711325e91146737fb0f861e99e2dccddb4ecbfe91fce465bfa709a37c4c696ea69983383c180e18355d03f9c8d332c7c30c4faca8bd8b1b104836933d2b287d4547e5453a6852e4f0683096347899b81c1f088142c7a50b9b859e8d29f3fffc987fa62306b58f2f0ffd8fd76ccf0c0cf479dbfa4760747d6763c79760683f11f6b58ecd0ecf77a6bd475e971ca800186183b4c4cccc0607ec4c49b60a9c3e332d7934ec369ba4e18191023033bd4b0d021e92f95fa2cdf95c4b0cce131317d5ab3fa4c2d9403a245c6c308b9c257322c714879e698d6e24a67cd0c212c705066779ae73ea9528e190c46e4a4c4337ca26988ec08631096379c667dfa3b5e8db3da2683c18481c1987cc0e286c5da9d56d39c3a6706044b1bd466b3b78e0d5323d4b0c1b9694c21f384b99cccb206644d674797a56dbfb6a8e16f4f315ea24d8352bf1eed9cfbbd8fead12348891aaf8e461b226788bcf183648e31ded7f00662824d58d0808e62afe522564dfa3d0367ea95fe5839df9b2d6670c55b88f7ceb29421996f61baa7fbb5f4046458c880d2a1650cbe89f8d0c16f101ebdccc90a2c62d8f33644aa3e55b36658c290f8e8af56f6b5d0496b0103f3516d4861b63a5ef50557d4f0e206717ba11736bb2a0f4a7b924a4b17d651d37599db1c84c0f0112c58b8b08c131e1f6e4e93cbd3b205d4a4666a9ee4e8acee1058b4903eada59f8e9de48d26a620962ce0fb2b3ec7f8cf625a20162ca05de176f8601558ac8034a92e37de34a9d0a52ad85ee37e0da2db75351f162a346b9959adeb0635199ac2f9b42b29e3f6548a95450aebd2a76ed81c48672c51508dae3caf894df187050a276993b0736dbfb5b7e5098f79caf3bc3ab4562e2738de21ef52cd6ac21eef6ac6c284a4ce5a1efe563cdb8d65090b1bfd94af854af074b9ebfcf59270f4fe9b06dd5ee5494878db3baae9d4bdd4f323e0da5f49315afa0d763242e3a6ea33379494ab2b82a984d8146b6ad360524430a4b49b1df5a4c2b521dc41fda31653ab949f8480f42ce5f651b30461f53a5608d7ea3ff70242a3c5479d34d99a4e66f9c142d638af627ab5f69c4c66c46d4062e2c3e283335c8f3e5da3d221f28ca50749b1ae6dd6d295cd1d5a78a0fa70d24f7d5465de4c6517d9a89d5bf8d6155de4e9e4f6e7dc350a359e8b4bea1bffb83252ec8d0b764ecddfef73ea93f816860aa5a3c8f171514ab6504d2237b57ae5eeb95ae04af5f77a7dfad84e85166a1d94ac78b83c9be49559646aa4f49ab55831395764b1b8e669f5a553dafc4a412516cb5af97275b4492b9955609196a665c50b2deae2e957fc5add2c2774e892c2e4838a2b4cdbf9d8fe1eada4df8ae3d7e6d736a6dbbece0a35c5cc5bbfa32e4dad028fafeee61893a654a70a85580fd93b7e2515cd5f3a8b2c61c39ed2555091e7d04eb1ce61c514ea1c76c0c4a894e2ce618514dc34d67f50d7633adf0c0a2aa3e84ebbc5cb927ad6a5a250eaa44ab7d45735a93f14b89ab23184ba51d3eb2aa0b073ead7f59bbb57cb954f2095d4ada3e796ea1b4fbcabe586b73b3ba12a9d4a45c5086dbd66fa07c9b351e1445e2256b4a3d0f04e890699810906b3096bb47d6d37697b35b926b631741ac66dfc5e6833918ad6a79eb488955507154cf031c4e6ee7def1c6ee5128d4aca4bb9d1b2c47e736a35e99c4df9aa2a95388e349bddd420b2e58912d870a2a6ff7f6ed8cc8dca24f664a67236aa8eb2b38a24d4ac7daf51befa2a552458d1f55a93493d62e604881826273f4880c431820a24ceda913eb2d3a8255ae5119dc82c9ddfce9488d74b4e80848a231cd976351d2f3ddd0a48f3a834c21336294ffa6a3b944e082a8cb8c6d5a9b57b3e4bc75f7065111aa82862d13143b84bb5b359c995448c90c451810a22245039c423b5165accd92c674a663c448ef1f06287aa18c2cf111aeb26fefeed4c734144c0787534126acec0604c4e48fc502984de3aa8bd39ead151748440fc7dfc91b35562aa4148a022084dcb8e4aa81b1d3ee440ac57cbd1547358014452a857c3e9a03eaed87f78e5b36c9d6e8e766eb2219286088f1d24a8f801b96ad4fa3dd274e79a854a1f1450e1032f6b16eb516fc7d70c0d91324050d9c36ace2b226e5ecfbaf5153da0c6dc521e3c11e2940a956ace2725e2c37b8c6047864f540c372a7840ea6c3aa4f8b091f255b9431ab2e16b63dffe9832188c0fefe160a021f2c60f928c8996b12363a26594a8a1273ac61a69a481c18c94f8f0216286080f915954ece0238d0554ea70e22623ef2e06032a74a040650eebd5f6ffa6a47bd852068391833add469ac7788a8f71f8b5d658e7eac1e64c508183c91c0e87052a6ff8e3e73f1b759d06d50d24718461814a1b50850d17a8ac21011535b0bf36eaaef86446467efc880f13a5c1889f68c989c9072a69504d2b9d83a79542e90d0d678040c50ca831c3b44f74706da1322c6bd2f159f888ddb221c308491c61f8aa180ba88c41031531a4a56edb8e96fe8df785173b4e250c01fb171eac95c76d8fa2a3e54ebbe0a3123a29a5f5cd2b5f5d60b37e9bc3a918a16c3417b867f11dd7c3db9b0e2eace14ddca0666d56ad0eb9c51edad35e85ccfb1d8d84d8c2b16fd532de847fc94d530ba4f8ac662547de6ea468916719b9fa35766a1b9ec53586b9c999d77a5c16e969dbe8419f49195e2c7c3596883ee9a33d6458fcfac5c71036fdcd7c5ee1ab16da4ceceed4ac0b714552aa6dd1eaa6bc94c90521ad6054bbd0f285527352a421ac705fccd4fce6c9cd89890799411921abe8534596cb8751eda62a5a1d6fb36990716a2e53e1479d5b299512a39d10549ce5945c579b9efd0b3945e2dcd34748adcda428c4147a0a539db35f8a5ccdbd1effb744e324456ad63987d6bdd6aee728defd1f3d661e7d85f80710921d21a2d07e3c6c945b9bbdd5190cc664040ef592c59050e442bf0a79216e4fb871a867424091ab6e68992937e7e613bebbb691a3d394f2b827dc9a83e8781aad36c5219dd83edf2b7529e44493bcb173cd6abfa3769b50538e07add5c44188265e25b57c5cabba15da00102124137a7ef9bad5f06fda564ca4c5dffcc2cb948bdb2fa196895026856a89eeec54495df6e7a1aac4fdef9f75be127aecc4430825d0a6f3b8d63946ce839340c954882430990a894467deaaa735cb947990b044d6a4f7b5ce9dbf7f849d27dba6ad3bcb9523d258dddd79b4e9e718d2883de509ed2b344e7ac9886f1ad59c558b2eed32b408ef75e89ed0a9b407431491770dfbda856cbb2f4312c1d6c769ac7c4f931d221626de47a8cf37871a0fa1ce6f42898dad21d625bd4eacd61702a9f7a756789ae56b1121367fd7d6771b0e4206618d122ee6fd7544878240e9675975bb416d3605e2a829cdde3e8c144a0e08bbfdf42aad6ed6ba367fe054cd7e3275434d63ca0febd835d6cbac8ef2fb3e74830c53d3f85b67d2e68332dffa528467b37ff7b0befbf4f48fe7ef593d70937e98ee0c6db347f3f0a917227ab2e61fd9c283eeea759a3c79fe6c8377c86ea49a6b4ca1e5273576c86f96ed39e89ab32668f808a98375fb514dd25f6d5a311d54e32d3eab3947d52514328786751bbb74a73d7b71881c8e652e3bb98ad159e733184c0c42e290a751a9cc8f19223286c0a1955ab36c676da3c67d034227afd7b37243f285fad0d4fdf9bc15d2868590dfd96068f9781a4cbf9ee71021640db9f63fd1e3fef1340e514326a3d334ea11774021240d47b1d1346449695fb32168683cb95aeaa0ca747ef60ce8e990c2e59ccafe9419fe8fada73ce7159d59481994ff315b97d4275ecd93e1a866358da5d49c7673561142c66077cc672152895935791280218488a12f1595e2cf4c964c85c19a1bb7d4a8ae1e5bde216038979a5d6d9a6d15847c41a1215f6ad15263aee885a4722184cd51a869f98574c1d7ea376a9d3b5a4839480817d06ad669ce41dea03adcd80d42b6a0d49a364eab43b4c00b718fa9c32677658764e1add9e67db538ed63da20040bae87e8d45974ce429457b8e3e97aa13594acabacd0f449a7bc498df99dc22ae8ca47678fa1940a21a4c24a4cb59262da41cb3f42a6909263f266a5d2af631f22853fbab471959a131205f5cec55c67adee447c42a0a0cde1c76634e3e6e813d4da36db5a3a763fec0456f8474f6d9feb9f8534c1d776399d861529af3f2784096dbfa61079937fa30f5942a314adaea5c3642b51094d4aea51d3487948121829b3eb42e44108120ea16da32a6589d7b305214738fbcd7a76b50b3142424774893e21755d3f2145504c85ed9b861ab1414470df573b7f4355d45c1b226dc68e394286a09217d11be4d7ac541922846c143a45374ede6e17128453dca8ec57a5d61e744068d8312fbd23fdc1a23bab06a5d9b1665126c40776bed25a49a1e67fd109e981d274efd7d85f080fd272e15aaaad71dc4c190c2608965d20b55cd952d683f09cb6e822154f72b3ae5908a94ab96853acf0d67a1e6cf8d9b0e062f959edaed1e747fcb7d8e6150f35ef1b859b6c718a865e7923ae63a96ba19291755a95bffa3fd1c218175f4a7fdfc4ea58667130a985896db949cb9e8145169d101adfe974a4945ab158a8935afc7df683ba31b1c0c22c2d54556c8e36a2d681e515eac8ceda62228b2bd6f3a7ae333bc3d56f05a7e3b37b4494ae12b3e2efd04ec3e7e42af2382d4f75558330992afee8631efd5d29cfb5592a70fd2f6fee694c73374345ea3f758ec7bc5b119e022d55f86fbf6f9a4e9be253e739fc8855eafb2d45eed9c7c7dcee57bd48f1880ede6de7f36ae451f0b6a3566cee1c75cce6b08842575e5ea2d76509052ff671dc6b8ef2361f040b284e6383b069f8b3d1d4f889b3c9996e1bcca6f94b164fe0523d7e65dbc9bd4e2750a755a8d7c284499d7b437b90e1868513c7ab4f7a839a647692cdacb1238c12354e483607964de4372eafeae4ff865f0c164dfcf2e563cb3da9712e1c5832f10af7586aecf5efbd30a1aaf655e63a8cde5c2fd12ad3503aeeabdcb1b158c204964afc2e65ac68ffedfb8f1269f92772bec349d732095e993475e3df9dd892b09450ad7d528dae439f19c3120944d9f4a1e56490306edcd535e7af8b546782988cfcb03ca2155db39ad29fcc181647a04b691dc8a5025fac8603e970c09ad354c08b0accd1e324f306c90f0e9c0e20d401c300010230c772200400272641d6184000fc0d0df2c60fed7100019894380769202571505200805499d0d04fd3a0a2fecc6a2c0806e3c34b46e420e991761b90f4500ce6e4a4040d1d6238929306e2230c4772d22363a22323141d60b89103e8f8c2919c94644c7a8c8c507478e1484ee420e9202323141d5d88c30773e1c44db6e07200f1e1c37d18408716e688837db88f02e8c8c2f9e36aa97ef4d628a2347460613bd9a156bc48a595987138940706637205634c68ff59ff2f2966d0d061852633a55d94b6109bd464c0f8c20b912f44da8b7638dc4fc0091d55786b5c99eacbcd90a1830ae7e71a8f6a901b6a4ee99882ed51d99e0ddfa1f52b85557d92ff3f9d858e380a9c6c15a34cb9a699090aa7fa8b15624ec4b7f609785421a5a7fe8797681c31d0e184c73b6e14358b76bc9fc1605a471374516a386da736ae16e86042ae642a214b467e96038e1130c068e38c93206908c00c3a96b096263c7ab2390ff9e85002522809fdb98e8f724e4858e9913f52f5e7089ddafae9b997da5b8a3417c40b912fbcc800eb300262e742b75ccd9f06adc1404711d0615a07502bc54b951f6466cdcae8200242bc52937aa8b95eff43f8e632db2fcf857076f9590b3d9bde431b84c6d49ee52725a5ca32012151d1afeb69b2c166ef07c99b6db785d6cd1f843e58cbdf1ba59aca9d763de03f889b85a647070f7a1b6dd32b719318db2ebbf0e5fd76be086f9937ba585dcb3171e7a59fe225178bedd85f4ad41c22b65d70a1d2ed6a9e793b1da5e916c70e37176bfae6f84a725c6ca1bf6bbd9e43fc97d44a2eb5786b5e25377f9afff5430b744e1e6f5757eea67f1677ae50f99d4cd4bc5c838b2cbc793e7df4131df7731b9758d85acd6a3a19ba1fa727c10516c94eadbc46ffe77c675c5e81547310b2659ef0b539190c66067e71055e222ed5c9ac89cc5bb1df0ad9eb1f345b9858a1d74a91efc9d4a80fade2782b5f4d5a2aa9a6495685ba6bb5fea64f9da53e15bfd4921fb66631a66f54fcbf26d5fc2d544b479dc21ccf1b33b4183f9d5d4c7192cf9d2a5cbd638c4b29fcf251379a5069baa4a4e04d9752ab459a90af8e02ade9fd36d4ec7f835814b8bcee31d5515c88f8128a3d6c56172f95c77d900a2ea0b8948b47d7d7d1c1d47c4217e159f59c78d3a9f644366fdb4bff3c5adbea847a2f5dc669edd09f71023596cc0dfffb9c4da4d454cb07e5b52fe53e2e9a40a82dcf59cae6f2bfc9043769ab51f7a1b394e589e3820965e77ba84ea17ae464c6e512ea897aa7676d094fa7bbd29b73483552974ae83336e75f1115325f20174a9cea46adc16c4e83bde7039749e0c23dc54584645c2481d695e2dcd328bc6b13ed01824b24102aa4d48ede61e5095d20d17e50264f35f508848953d349df0a956a352e8ec87cc48d32abc4abd51ac19aeb27d32a274b741a001141c95f18e1989a548d2afd519e7e117feed371d4e4ead1e50b78b4e0a28846d769d4b3d9672e89484389ce3152bc787af982883e7655cbfe511b6ad4214ec23ed43478a9c7d3108b9e7c9d857f7baaa910d72063832a31aaa649ea42884ea837d7bb39d58a3a338885d96093b90862cd3653e387b6114aaec62510cc7e4d3afdd8eca7510f362e8040fed4981eca832829fb431f6ff210769ea2e309c8c90f33fc70d6d7bae1d9e62de74b1fde50a3ab0ce9416b1b44f2cfa30d33c820638ec5606870e143639a8c90d26c909b3780f4b8ec61d131ffb4ed759223bce8c1fb1d511ef75e96aec9c33a2b7dfadd6ab3e79a302e78b043bc8ad769bec3492a6de5994adacbcec50e4b1ddce4334b77ab7aa9431a5b2ab54b6ae54a4706173abc21b5962537abad6be4b8cc8135ad54dce06afa25f2450e4df66a16377f7bec1a2f19b9c4e1d02e4eb7c88e29bd8243e2842bd9ba5c994ead3778caa59e6f99303dd58d8b1bfaa84307e5f1bcb4c1d7d7b23b6cc833155dd890321be57c9feb543ebaacc191274fa77cffa286d655356f6c76f9a5d634244ac3c6848aefd6718c0b1aaeb5b173526ed34af508e2435dcee09f8c3e5337696532929213931e297883440c0c06733103db1bdeaae2caf4a44a3cc325ea6ccca16e00a1010f0cc60397325893977d6ea9f560fb850c79099d56cab9fb6e6b0c4bb93944dc38db29566258a8bccd3174cead52e71286c4c816b3ad1fda396b471a1730346c98877d96dabbf7043b4e487ac4c146c9090c2e5f50db34a64de7246e2eb117ec99d1fe0dd5a7f4d6053c5cb0e6a0cb165036ebd44ea3936c2d6472d142eeb37a4b77f98e0a3118931d27b864e1bc3a26ffc5dff449c4c2c2e6bcd39497e9ba2b6c73501ee3eb5f76b615fcbd3949736d17e23f5538fe6625bf6cacd73a82c1850adc3ceab5c652dd0cd1e03285d31c641729bca17783c9aee7120595b64969ad646899e742611bc5cb1c35c769efbfc7e509aacaddfbd6424bada70d4840707182a7b4a7ba69b139865213d673f2f3a74ea726f16202f231d3d3cbdf92c26609b93e3d8f3668b1d99f2f5c94b06797914acafe64ea439724fcad4dd35668f5e141021e578b87bc97a2aa3ec2715f08b5a9e2dd4b6a84a330115fba2a646c3883c1d0c07f98e052044bbdda2c3c8e30bfdb05172264a6e447ad3dfdeb9c0ee1575ac9cf1b3f42a6268446dc0d36d7872797201cb4de2c37ede80284c3699deaddefcb0fb2db35253a9776d07b89481833b8f8e097ba66b5b9f4b80df7a507c79bd5bdd95a96288807a8f4f0823151241207838160180000831d1c0b0043110830503c168d87e3f19898b84e1f1400004e3a2864422c22301e169105029130200c0442a170200c0885412192100582188bd2d40ed7507ac4d02ef01f1fbebe987ac178fc87330262827eb16f3053e8956d232a85fabfe806dd79fe2595c6469c9c8ade01d49e3413f809badc621df8c0690252f6136b0fce2064ac2317be00d4cebb52018aa1eda5d2900e53f3ee786099271f3edbbd3b727f8bc5337c68d0516655159a25a38ebe46dbe6f5ca22545ff0ef4cc9672d6a6a5ca0868a4f55c1c9bff22fffd4db0ab30a1a59baf50993a52f0c605b48156ee3ba9e494367b59a30c90c56d386cd2b19059a182369f7dfad2182d7ae4a7342cbe3b3dfc1d363b0f118dff7770dbaf26b908d2965542260ccaecb6e06561ec02a5901161c449f38dfac70e821bda29d4085cbe4be61095dab870ada0c8e2cdfffd499d292b42200a193cb2ab11c75437ca0e50e924ecbf0124b68379834786e287abbc3f1f754b3cc8449aff616cf5a5aeb4b7121bb73bebbe88ddb580dbfc48eea12f86c7e5553b80e0803afa811116f4eacfc16c17488821d4aa0cbb4409069b9acd4a71d35e2d61e9b38bac18b28eb97c1c2d6d51c0deff73c36314ab2381d9eaddc4ecec9759b7cbc0d19d2386176c3c8d8228a219d8d619194826e30ae768e41b9a61dcbfa3f2fbb22c9252c97c4b767c3ebbedf986fad8d76636b9946c36fb9b7f6f7f258e227072d08afeb20c4e099e7978793ea71b0c40e3b6cb35279b4ab582e75b38c603e87e3c882db0faf180b24803cb9b19ce638a86428fd09e31f4b9461931d17549136cb3637e66c7a567cfa4d31f038032c2a77c3c8a678b68b50152beaea97c2338b26a5c6e10f57b7cda380b1154e383263716727aa8fde5526c7434eee919974ce0c9b15bae6a8fa3b4fb703333b19aafe7aa5b5f89f86e803c1d740714791308f805cdcd5560db070a83aaa0ae1fa0798d92917aa1edeeffcff4a9712d473cce5ea12f84946b1672bf73180b57751791b464a3e8d11422113c374ae22a86c3651456b71cd22ca22c0613c6e7e1cbac0b18e020b7515253d9be523c5161849dec8290e5c671b007873f0cd43f7f16e1c90c4b86a9322fbfd394efe849608de0ad49f25bc4ae0c1b678b28bbd9d257c3bb0c2a3c232c40ee4ae0ba3d412f211dd8e55e51019c9f489dff6460cb18aca4308ce8578322271f59ac52261de18018bf12b0ce0ce703d453e00c949fcb2bf0fe96ae6ccb98101d266189e4b2c33c293db2ac34272e92485ac0822f952b0fe18f202e63556145e8255582f978897f49e035bcac40634c4e65401861e38679161fab6e2dc5a7c039ed6217a6198282dcd0913e880f22777c0a8bdd0ca0678d3b798e37c056bdd7f23502bc6ac48c6ea1f88529b2ef38409b8432004d51468da081ac3bc9c53f69bad41ce36c0b52c2741d87c6c5f4cd65500ba9a94454fbf9971d48fe1cef10767289f21ef8605d2babfe4f6f3c2dd4b196dc375a12b554e25d09291348f26a8a514333b71a9fbbfb98e1be193b93c4a24251ea29003ad615c7099fd6c451702e9fa1b7c98b15541381f0ab94a2f974b90f94aa79784f6c402b946ba12d6ee8078b3c4bd122816d487abe45e0649055224353008638027da3b4b928716e5a5e5433dcbed66a1cd253d8a8b1d73f910e641dd7b13b4dcc0f94d1d86e11c3418b6eebdf6617a4324b3942f87c7919cc6837a6fcf325626dce10daeca80d6838f0043d1f0eca881e82c8d0434e094b2555e48a1ae277af05c515230ce2b61b167e6aa2b60a9d90245ed8a676347455523f276e0d6236920ac7a486c53e3b0f96e8d9a75e3aeb1df9e107d21533b701e8ad69ad5cc56e692d180c4442c3a46f62053b9edaf310776e38122f15d840d5d8aa92a30c7df7e7798629f3c77a6055f9c11f4f6130701a31ef527aa0492f8efbe6effee7f8523386a24aed00c71762178b2dfd8e903c70519f194a1a2c8cc5858c47b81aedc42ab0bee6cb55467cc4ca961a5e2dc3b3302d7d230f4a194f22b0a02c8a281e49db4227e4a353142de19d275676db02ff142161bad5d960eec8689d0814359d5a9234c63bc156f067d47c86040649b75183a309c92e7fa48f19106892b74582ff84d52fc1744d4451007c73086ed3cd9bb8054bb8b3171401e70739e3152ce59ea54ed823d0d49fbc9c7de51d7fa085d148b7be7510cadd46f48941c0169510334195ef6763550486a6c78bf710d0c68b80f2f5e79c0e2d77eaead920f1ad02039bf1af80319f978782fada6a6161bf6461a5e9bc140c3a197a2d82e0f7c04106f2ea08f9d98f9fbbc4707f6b3a9b1d6b1f1a3a71369a101002be1f5b6dfe70005ca0c64fd1c11c8fb0e07d8fbc313bfc3fd7a209700316da8060aaee29b1b37f7e37f32922c1687a1d376c30b4ed8b58d30af1b6c4a50ee44084b5ce0736fcd529608608aa9ee0d794784232f026d29f0b7cdef8d908f7a067c62a5ff79d8d47a5acf548bfceff623f7a9e9fbe1a3f44f7ffbaf637c3c239e870675fcb86b1a78ba6cae33fe28163ab71dcbe6be9d5584eebf81bd46177d348aefd5344c84a3030aef074acf02befbc7b7a256be8d2983ef17611ef2d88ce9709cc3da36036e4f4d3818cb9cfa9df64a50c55c98cfb4525f401ad2a6ec670b551a4c6c9e45168635e77bb0e929173bf0cf03495045f1d983163de5a15fe7f82eaba2c56da64bfb023ef14005ae51a3a3f5677da2df18be1d667e3836ed1996eff5ee7b8e70991c42446af0f32d22857cdb808ac28961752e254954088b826177ec53f10a3aec420f46d313727af116478c42106c90c5d2ecbbbb1c38a4a95efbe7da0d0372beef933da40b688faa919da9deb01a06864f8e652e6c9b531c6e8c1dd85aeacb45a995b692d1b40721c89c443ff2d06b4975f74e55f8ec4fed326cbd35f68e4ad6e01fe4b44ada7879a7c871ef2e7c8aa4df3c6abe407a023947ce52ab5b43396e7b8288298914b775e093525a5430a005579bd309dda27cc477b7aa716ddf7fb745c175adf7251e72b71459410d766d24565df89ce87ebbdae5172b124f964808d5254469d5ff3172866d1ee5f4a9e3dd53027967c386d08e2b72c3ce3c6322645011f1f077f1cbc2e49eb2ac33eb23225c29d8b79e18eef530d15f7a9b6c462c10617967dd056171d50066d690fc87d6f4647946fffc06a14e4bb13957d7cac27ea4477a97a612a19778b0b19dc256fe75a1c7ee96bcc2bea5946af6a7fea5a46cea38ffb08e55ef2a5951730f47f2027a61d8b71a45cfcadd533ea4f960fa64fa76a5f0a1ea5850d5eba9d98ad24fb7473dd71472a359069ef00c997b4c63e1a3cf7eb61886191f3913b03e1ee9beafec9eed805dbceffb08c75ba1b6ee487d796d3afbea84062d9e15373cd73fcfca6d6155ced0b276df3aebc0d18b754930fc5d77f3c8f602facee22c5f164de1332cc04f6312fdf52e308ac48246c1f812ae7f1a2e514bfa888e8844c8f841ef22c9d511501abc02beaf54658227fe16460f457ee3c00b721fc07c1deb0e03a89c60b46d15b9aea35f2e5e38402a70afcd60ed1c3b71a4967749dc65fa2c21500b0216f9319d0e90b276051626251ea9a82ff320326e768e229936da8531bde249ce32823b323fb971eef44e50fd20564368cd32316171350094466ab865ebcc91cfcae929acc30ca37bdef4ee7251b477909210cbae32353adce5598a7e5a49711390b1035cc80a08c2faadce3c3a5372184438c3e71e7af93cb9a63b152acc253958a6ae35148421323b988f16aa9ac51893777054a6e28183891bf7c282734824cd4b683be627d823c53337e95fb5b30ae629ed13661cc3d080f531b6b28089feb0fda03f42726e3da4e56f4c3f9f398f52fa8b13e238db4a61f005fe7f0db227dd6802932240dd8511a8baaa752e33ef01c5a874215444ac81872224322bda33fdf462da942e23f533a5033f8d0366b433d150e04c634fcc79402a32e753c1abc2505cc07b3906460009e97c3cebdf634cbeb6ffd051b5dde6071e4f0f04aca8522d4640f3ff313c83eb315992cd0ad6fb8f48e6bad4c423d08aa5bff879cea14db5de3cb02d74eae832d13b268004ad21ad7de479470573cd67aafb78a987fc6d1dc1779940631771b6e143fd04aa9af8aa1cccbe7e2dce5ac0e003c321b14e19fba975485d41d8a4a2249fb526b56e4f435751797fffc604735e48058cc564b5e54e306403ab89948657bbdf09344ed7db79d8805ee7d2380801f46285e5106df14670ac9dcc09dd862762bdf28e6e561ac52a728bffa8d6ac46b86c1b373f16a20f53c8f9c389440ee261a54340142f6d33f82458cc5518bcd4966c6a46d902f386fb344d9be6e34d21d5ee7293614d509e3e76211f7b53de0d08c2984914776ee0ba6abd949cd9cb6cc590c39a447bd3788f922578897e8c39c7ffe57bc9a69ff8d35b67c567c1efbae1cf5432500e4f87d8289be2fa33012c1664ef96144358f269a481bbcdfe05eaa36cc50e030e4b249c9d678a69adf726fda1fc26392d9c0a88d5169a7901bdff58b8b30a06f8d32cd7e5098ed1106b51e6b6f6accc14e78f5a44423db0cf5c70f754ad3d8f321040faa0228f4902d07e91650e0886f9faff4cd6fb6c73444063269cb24ac957633ed0a7e35d7304945877e81f2085bf0c21d990af510e045933a56e363ebae285792a00ef52d75c0ffe54c21c294e23304415e2813acdb94eff5470318468d7b87554a4fca15c98465bc4bbdc1dc9f6e7244c68ddafa27edc41b7d8ac837fe06ac807c59fedcc04888bcae764e81c8e1378abc8077380842d528e930debd54699b509c7c6691c6acd283e8534725b2b64150d9eb2a007691c7439f638a8344a3a464c105016014bd498a847e36de28515d3a464cb0b2064a7b9c51ada3aff2946c6df24b2b1cb47c41294d439b6c7905173a71b6688e85d017c56fe0736babcb36ba549d808348eb7e3e14033d9514e4076a3c81275f74367b9458ca73778d2d7ade4d98585cee0f453f1e85d84580fc66c49183283297ae84c08702810de4315d2e4a3fecce5aedc054a9b32827d033ff7668b37b68f742f3503c1efa5c1ce0993d20626d59cfb46ff602fe7ea6fa09ec5baa98eac42c376b4c3ef48db4fa5416f125a8c4679eedefb529fa33ad1b8892746ed2dd17d924f8a05684e801218b7ddb57b5c887ee5569d4f2e9799edc0213ae96517593942f885b87881b891cbd163977233bae8739d47f59fd6764c3ff24393f9b9d32f9d3a61f517b805dc02508e0d18c363fb0ab1a0f586e8c96268f4a4118989205a2a8609eecfa6b0fc8343c545e8c13e137d73fd08f1ed11722a66103c8074acdfe353e209f361aa619b3967bb59db1ffcc1d33f338a0029418c70043280e60eeac6ec9da55d9b2add90643ac2e40a01159374cb0e0fbb10c4313401b282143379a18de34efef79ae2ae56ddf20a6c2228c917f880d7112fdee333360164436dd79e9aa29ced6cc29646e988d18966623e98a7df245cc4b2b1cd82cd3791385aac8f4524e5b6b974ab728e45c441d6fe0eaa6e6686f098e4650093d22f16f99262fd0759147e29da81092267815d026ed5c4ece415195b2883d9bdc3350a410618f4abce51227755ccc2ef2b90cc1c6b69365550fbac93c6380ec807abbfc6bff4a146a52681c1eb8a43a0f2716d5c8bfcaa746e479a82285b46dc6519167631c4cf70a1656b72da4541b751a038bac38fe4472dc4f09f1cd87a3cb317777691f39182a9b35068f2202b890dd41f759cfa35ca77d8d3c691b79b1bb4ba476a8b0c5f2538187bc71e63a5347748f1a2d8f8558a918a86f781198a315d3497edbfb263dc2f046c7fc6aac893be0a4c9c0aebd3da3eb07ccc6afe2030eb7a08683f4f9c8a0cdbc5bc2356283fe10612814289e9c04439538965b8b9e2b6717a8415e1594960d52ce8dd5f7572b53e28403009bc88b0839fc1030eab93ce4eff46622a116cebb7f0ca622fac8c5bebdb45d4304f39048ca6e6f443e3512f945a961852eefe95b10447c17c7b3ec95830a90ee813c028905bc02d77701ac6b2a8390b6952b37b28de2a047899920b4815ccf2460003485f135cb0c0748e30ba0709f2770f42f84e208ee7f1d3afc66c0a1ad0835ad41fa9f1410b7c421ec0295ac525596ccb073a6d54b826bed83cbb0f948d81438e7ccffbbb156485240f546ac727a00f0cbc928a08cf1f6419bf8567a3d8cf8681662fd0cdd607727f1ea15e4427b9e7baa8579fb301f216d1d5f202270ca8a0ac6828f1027708682056192f50be147177013d0e3844d85d6804ca4bf92a25ee691de430598a7ade69000b28b54e4045a81fe92012f70c3ce2d743a201e7eac69679ce53b37e510bf0749662c41f2b983ae85655d17de0dd6a88d8a3703f31d30d2f168f5a4e96a400b8bf7f16eb0c0d0b99ab263c7c03a81f76a56a0c210c90f6eef4660a245efa60bca6cebcf2bbf8bd1c8c61617b14c161718fd052b99d0356e5bcafe1fc9c99ecd296c97dfe63c23992c5bd1cf6079fe99af4caae762019e531689e5a0c3d76978526cbc4edf74b13571c543175993b20786b0fc4f8dd49c0d312540ceeb119c8d15212c6b001f1a8738a04433d404ea9786a8c796e756be7afb549b85187a31bb7332fa0a37f8b13d01600e5b78d3e94a124bae2b88d172aff59b245717e0822c2cfaf6b06b91bc6b3f61c7f8651c432c087cf066fcd993762d576b46588451e7197bca4db67c98eb9a4268147df9af598a933a099820492a71758cbf436a7e91b9d4745c1cadb94ed786c1a65a40de82b9d3f5f7d3557d3ab37944d2aa911912a2ee1363cdc24ae58490d6b01d0217a97e3674e16ea654786707acf5b54f73b2305c5ba2c9519cf527ddc9d9f69d06ccb627b02dbf301dbbd8c7d417bdb22665ef21a589d09f694abc35c17e7066c3912cb1fe511d859e260707d86c55664ebab8c5bfa562ff27f08cb732a9d5f894648eadc0e98d25c34431b74df331cd4933c01913203cc638b2027c531bc5a551ff4887d32dc91f9583e4abe8f4c2189971569360fb77c90eed8d9826090a451a579fa20fae44a07d560ef4461b2c56bc4171298387f6f02bc2872050ce3655a6f237dfdec23990366370c917a66404861fbbe989fc3b41933b372b490e8bb9e00f75122b3e6e8b28df4b3ed4e0941b8d2f2145e0cc6ce82250c210a0820c26ff4bed9975f232b3c60ead92916c962dde88c8b35e963ed103bd9c387958a0bffa72dd8bf7ee1621ab85380631c5aaa350f202fd2d21449efe2efd0b5f69be9e14cfa0aaf30e126a6443b1d5df88c0604a61c58eebf2ed61a28ee04068352ef119b95a29d6a815db9d0239e16102e1d3dc2403da591674805213b3cca64f010c3e037de1ba71548213dfdc9350691a5ac2010e5df5bf24394198304c77459b6ef95cd162b339242d2e4f7f040a99c539685db06a1afd5591de5e8537be3a18b926914a68f72742a6244878de058be533c49271173c1689fd6077942380f70df9fbdc3404d04fcfb7a0376e77c47d80dcfed2b537ebff469b2610b29489b52ed509ab8f316ccda5c0e97552848634eac1a09eb3f91b15592f2322e66302c178dff306a660efa8c256132354d28051bd3fb69912c20d3e1129cb64db18dd7bf504db86ed10d0c52ebb30a0adef4f9785aff94f53b5dd9285b8a992fcdaec73b7e9c9f298b830e48c24ebc267eef3b5bafb2edadec29e218d9f3f0a494f2c63bd01f94ec5e6f3ca94a844fbe7ec7acd2eb037d08d408db61218f4cb88207c9fb1896c5c695591038bcde3c4c3772aacd9d3b21eb2a13568ab8014985f1a824b0537731f94745c4f2f3f2264e27d32d3e1901c4ea0f335a13eb4636266c7763765aa13760f42adee8651fadeb1eab5984253be870f7a283d38fe068022117bb280e538ae4507af461fe174ca6136e0a9d589214eb458221565b6c6c3faa30e6c91a3f52575f523a9ba598db70dd8909996e7c17169123d221de6e6a355a37b4c0962be410fab65eef9a876ba6432954e496287ec7fb468c94556b4a034bffd8ff3143f7d8da916468d5b3201950c2f0469f8f693cbee9303f1be8eadec1dc69daa81eab0410c5cdf9229ab7ccd1612301b89826b69187d0d386e4cc5a06a7c1e2d6bda2e3b335534725c5804555eb3b8fd498c331c699a60b1bf1c73d2bc7386801a615f75fe7bb0259b55ce50a31e1dad047c07901f570447dc634e4bc545897c0bc4c4a9355873fce4bc159ac551bfea3c18d3071ca93ac7b3152991682756443a37ecbf081d1df99b1e0c6fa3f9956dc856960fae0ff9484d40fdb86f26e0f89ee73c041070bb23e8b088cc84dda5ad0c18cd1324c7a31682c2f5e281c7777b17344a20189233d08bb863e82db91f8756b4563be07ef605de76540d366d16b41b533f43244a704d59a2e8f8536ebc349db61210d2890e3e96399150cfc3487961334128279a05605ca5c16ac1f3698daa8bd268b89de4a954dd60cd68e663da949c4273a99b93c87ea0c2bbb43a68505", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x3d8e18726f636f636f", - "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "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", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", - "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", + "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", - "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", + "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", - "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00586cf1047e0a469f1357205816a7035dfb30b8d4b93aae112bee7ff8a97a5bb9ffc2c6eea0614136db70c733055160e9c5b710762b51e7a2408af0fff5c1a0d65459613d951624f96e88951df7addc80ffc027ec8b9f96b4bddbdade52ca94a40c2314f212111443fa696a28650e079d7294a1ce8dad9cdef43308792777d62bef1476368f0ba71af9a51839e2e8e8e8483c7d679b4ebff69a82e851b662f4e2a9a7a55d4dded3cc85538cec21cd5ed8ffe3dd89e6f90d9913b584fbee2b018862d0f94703fdaeebfea7bbfe04f093e7e431723f9f087d8e1bc2fd4fd3af06eebbef3a53f87d473d53389d90bbf64ce18c42eeaa670abfefd0f3299c326757a06c394ae71d8468febebb1f0fe0f7f3db01fcfea73bff884c31f2f7ddac7e674c6305f2f71d763685138ddcf54764764192f9c342fd4241b3469279a8259b7ee866efbb5297baf48542435e36bd57f3fcbdefbc3068863ca78ef7a570a4d9fbed3da1a19b4d36d03172e3207a640a836e727fe761d00c994e9dd27be1d8b9f41df5bc707ba7617bef7fba147aff8541f4880044b9f19c3c4ae14873e97ffca7e793c2f9dc38bf6f52d4c560af706e0f697e5122af3920740400e973bd9a2f60f65f7df78c2b1edde3d91f2423fba7ba45459ac79ceccf7910e866ce4863993e2d02256b99fefc95b754fe99be3f8579cb88d328e92daf59943efd2743ddbadfffd314064e5aa6bff2967dea7fc31ae2e02d8b57cea24fdfa81b49162b4b48c1156e30051362dfdc8d050b4ec8ddbfea151d696e3c7be578e4e62caf78d021e88fab4c9f3e85754f3f7d9ac48feee9e935795c65539e58d608c2b8a2b13c715e4d54db79d0cd1f20d86427cf5ed5a761ed95d320402e33d919f23cc48ad18bf7ad5cfcda11afd0d850737fcd8d696ce8b7df6ff110cd34c75f94c89b4ed1cd1e2096336a79623163d6234f2c661821ef788b26d19496edcf917e20db164da2599608cd14464900ee78ebfdebd7eee9aff87be578a4b9d670453f1a1ce7f4ca7efdf716259d65df8e941c3fdbefbae991423aa557b6be875ce8f5ca3ed72bfb5cb64f8d5c99f4b37bb827e1d1ff7e77434af6ca7e490820cda41f2999edcf8f06d28f44b992429a3df4720d3b7361aa5716ec95fd11cc76ce328565fb94ec9efbf6e9946e8124490621daafdde37f711090cb1ed6f4ca7e47bdb7efe1cc39dd9aa2fdf955acea95fd54008e3bd9d26cdf080fdd33b19841cbf687baa7befd1f280c34db9f5c1e77bcccf6a7b7a8384e2cb3d68fd38b6c7f9c64642b8ef38c4c69d45ae9e8ecc2fe58f31cb99ed1cbf367b7fa471e7906c9f3e714327b6af0411abd9a79feaa7bfce7ffe89efaf3b7b09b030067962abcc8a83cb35051469edd9a2549921910c79abcfdecd614c79cbcfdf45609031c48c3082de0a20b2ac4edb9eeb179fb8d8a1279c323939d7c31d72bfa160b00a479668a6b00638a5ecd4cbf766b8af43decb0368b3e0da02acf520a2ddf3cb164a188da1725a2de50489949d14204fb472ebbbffbbbbfbb14a3eceeee39ce840c0ce060e600f6cfb26889dccf79e08f2e0120fdd940e6cfae9b22384b0cc0be7bfabbaabaa73fa77b6aee32083172bfd72d176b1e79e4aec9f3e98e938e3e0dfb917433f777f49dfee8f4fd27fd25fed31d0d3b9739cafd6858f357cb515a4e5d7b34f4fc45b91e2d47f14c5388102573d00c997efffc6ea82499690d20e975cfccfd1df5e614427f1c3b0f7b409afde7cf8f06c75cafa60df328d319ce9c76da4be8669edd33f6cfaf3f63aa02eca73fce9fbd9abdaadf03f6cff79fdf0dfd4b269ebdaad8f14f13353d403745b0fea8caf677ba67e48274cf08aeba67dcc9f6edffe81ecf364b5112d97e4db75af4c9f667f7741e7964fb60f7f4db4f758fbf7dfb5ef7d0b73f732c5e32cb3c7188287d75f367ceb893fdbb19d2dcd16f48ed15c534f4671e873cd7a6df108a6ba83fc399bb6e7e345c3c7ebecff53729aaf60a8f439e4bddd66d24121e495f7ad2e681793ed83ddbfba7ba87f4feddec95f7f4a381e6da2b0f8fde97bc70c833e93bda93ba696ee1cc5d38738914ce5e8daa3c9ff356951767b3e6d4196bf2c4e37dfbfe9dcf39730d479aa3d83c1ac91c1eb279fefc864c2ff7775d7bf3bb7824caf76938c391cbf3fd9b14357b35d63c7fe456f3bbfacd89f27a95d32b7ffadf2bfff90dd9fc8675fc210f79be3f43309cbdeaa7df909bb298eb5583dd3373f6afe1ccdf3df3fd396f5592244952f45f4d214e7fccd9c91387a844ed11ddf4016749a29167492e917de4599252e4ee3473c6cffdf383011c6beeff698e3ec74d6fcd668d60a63f8279e4727fed9ef9fdb37bb69f5fbbe7fe7cae7b669edfdd70e62da4b99b3dc06efe003bf7e83764c341c0fbfd0db93f3f01cc7c9f7e356c7ff1b8fdf65d7f358079fbf9d55ed59fdf10fb37dc7e7efe3fdd75f32b3d178e1ce94be10df74978a4dcff38178e7509e9679edf10d2775c380620dfefe6c7e191cbdcdf709c65bebf85e326001c1a60848727e30ff9feecd5fd1fe7c225417e74749446e67ee62d9cf986a34faedf518f0beb6fe1ccf3bb2148beffd33f4d0a83b6cce191e6289e2f1e7fc8f73bea6de1ccf3bb78c8b3c5b35763cdf47ffaa76b387b45dfc3d9ab3195e9cf9cc64b3e4f1c2212ad533a1970febcdd0c387fde6e760ffd91cbf367f7f4cfef3aa4998634d7eea13fbfa35e8733d7eeb13fbfa3df108b8380f43bead990e6f9d1efda7b01ec9f315501faf7dbf76f88c54140fa9d7b36a4b93ffaf3f3ffe9f90de9ffe99ffee99feea847c3993ba4797e069899fe4fff3411a554896efe00bbd3cc19c1ec3fbb559be53fbf9b3d40fa0d99bd1ab9ec3f3f1a689ebdf2ffe91648337d1afa33cf5ecda7b181cbfd5c6e4c63437ffdfe8a8768a678f66aac79befffc6aa0df78eca7ffd333c7f112304f1ca2a644dd14c17effd93da32afbfbabba67be7f4df7d0f7afdda2a23fd83d334b0ba6c8feb37b661e53d97fe6385ef279e210514a43378180b30c2296517966b9b2459ea86ece6f06e23cb348a941def2cc22a5cc34cf986eee80d376d307386d3779c0694d46d4054aa8954c574c537c47a60c988c301d618a998630156122e223c344e55bc32484893405612afab2f099f19df131c154c5f4c457852f8d2f099f10be303e304c52be2fbe207c40f872f0e9e088912f0b4f8d8f0aef0a9e0f3e237c21f864df135c0cb8920445b781ee8b2e08df952ff6a5e0ab62a3751cf87ed025d189a00b410782ce03251c744e744a74b1ee89d2ecdb814785e785698a57c5b686dbc0b33816af81d3c067e05db80c9c0b3aa357e814f404d404b4034e9af4c064091205d8e0c30c32c46072c2c4c437850f8d8f0a9f1adf133e277c50f89af08df1d128f079f175f161e1d0e88ef061c1a4848903260f9086f0acf886f09a508282d7853703ce0ae7020e0a8e89af468de065e15dd18de1c5c083816786e7824ee6b1c0d3c25381878547a53b2a89c06b4167848f888e76777079d042784c2891a0b3a2aba2a3e28eb1d53a33ba2574657c44f896605a82eb0037851b41274657841214f78bd208ba1494982821b1418154a342d8d228c9e80f6e0f4ab12fcb77832e8c1b0637058e051e19dc0b4830e05a503202270497c56785c3c29404b50237c587024e0a2e0a8e045c105c125c08ee15dc138d01ae0a27e33ec079a0496fc6c5380e7044701ab833ce8852114ab492185c11de0e4a639488e0e9c0cb01d70497026e084e055e1a253038985705ce8803814703ae885ab159612ba33db0890165abc157834f061b165c09362bb62abe0e7c4adc216c4d6c4c6c4b6c1cf0a240635000521189244da146de1997560ac12582b7822b86f7820bc615c2f501e9089211b70c4f09de113c247845f092d011e133f296501a42e7822b836b4687c43dc32ba3f483eb45e9893ea28d280161c3425fb05dc199a07b017745c9072418dd40298caea89bc289803be2b2408de090e036f051e9c0f08ce0d1bc31b8233a2094bce884c0911c151c0a9aca46835e82bbd20d81cb8057032a858d0a8e0a77828b839b83ab03ce0a6e094e0b6e051c0638291f17df165c155f11688c8680538273829302b70687854b821b821bbb4f5c272e08ee076e13d7039789bbc4edc055e272e026713740697091b81ab8b07bc435e266e0167189b843dc2ad7e80a71a9dca23be54ab918b8415cd21ed92cd8352c16ac1af60ad60a360d5b054b053b058b8695828d42c32c146ccd3ec13aa199b04db06758332c13ec126c19560936091609960c7b046b045b04aa85a5d93168179608940b3b042b860dc382618560bfb041b040b03fb05e581fd81e581ed819bd81dd81cd81c581bd81cd626b606760bbb05cd82d6c69614039605f605d605b6059605760b5b059d02b582cec15d68ae680ad828ed11bb0329b028b023b4557a158a06bd81358135829e810dac85ab1515812b4125604360436669fb04ed80f580f5826ec12b60356099b849776031609ab016b84cd802dc20e61abd01958237a8515c252b145768a95623160c97a54b350d7a858a86a542bd434281274090a821216dd105d95ce880281e341a9061d13bea20a824a12a12df02dba094a85ee009d4213d1459dc457a591e8227a082a060d839a4183408f40974091409540d5a069d02a505a4ba168d0239a05ea044a063d8336813281964193408940c1e80fd02f680e280ebe217c62d01a5019d0f2a30185416b80bae0b301c582b280663144474045409ba04ed00fd0272813740baa04ad4233408fd00168029f0fbe19d4902510810358b2a37952d219a4762028472850e4c911201e8a14e9a827690254a448a9048209858992234340498a0001e990a3d4c474a2431325452c2004e4435011254ff25013a01e2c7004872f7960022169e2a4499123489a3831c050131f9c2041926d4a494c28508098d8948e702955e9a1002f25a33904044507202011a624441227488092dc94a44c2816005a02c502403624202c05a1e449b600142501b0400e4b2410d2510e290bf307a0262d2435e615260f489c3c01a22155610af9b083121d9a38415244c9930c448123e20b290a5307274e849e1479a284072842404d2ae0a488058096e4203d6126016ab28312284d7c183a82c44914253e040115191272f204482808c90933899222434050847c4022436ac28402a464488990131e867c38526487224a9ee4234f9234392244830dd219d302142862061426404d9ef420c44391244d7c704281264a9830d4c4099222413d2429633ad1618684840965a80950142032e60e4d94246902f4a408d0d091244a923439828407c908132889132436a4224c21273a4001827283449b50867c7832e483131ca431e691a123498a3471a22409d01014255084809ee4208931a10009394152c402434a9828a1c011264a8e4439f2a4302694273e3811daa1880d1218138a909321284e047044e8080e2a9217b3024a9e6421a025424e18704348e2c10402f201c88703e4900468871d8ee4b083a48309650912201e90d86042196a022404c44313254fcad244890e34a41a4c244aa034512234f40350110b3079f2e4481121a0244c94f8202e41e284895843a2c1eca1c891a123498e0c01150045eae2024a981c5132a4a4899217d216730912274c28500468c80724403f00b5906230859c00c09b6d0121273d00f5705be89cb0c9b23c8104791275b324c94c895ce6ba4cead6066183a04fe85683f898734e1f418204a1ddd4af6f7edd7ddbda29a5ed5e29a55bdf0d66db71dfba29756e66a3d4bde5de6e2da59be3780f0cceb651774a533de8e694d20bc4b7adfe68ba6d97f3e1ee3d6a0d7d9bd9b63bfdc238bd74d27698deda7928a50ee34ead7737ccd6ddbdd36d63bbd5b7f6bad5ed6e4eaffbdcb6ebd7bb1db5a150b47bdb501c6d476dbdd519140ab56d1be7a8eb8ee2280ae528140ae58e42a1dc46bf7c28177c7314eaa2501bca1df5a17af3addecd371b5e6dd8f076cf739b7bfb526ff666d35eb78d6eb56eeeb5bbdbda6e77a7339bdbf05b1b86d66ee1c2d4a6bd3975d7b9d4a973eede5b77db706f18efdefc7abe390f77af6e9b5293d31d3a58296e46d5dd33deee9ee79e5b77181898ebdbe6edb4dd6f7777fbb66dbd79a9b48271efebbdc1a4eae63936d4e68ec3a9971a876e1b6abb71bde66cdbd66d6ac771bcd5b9b96f3030d461a86fb7eb75986da34d69bbbb773b0c0c8c6fce39b76d9bbb6feedbd6dbe6ddee9bf7e6de9bb7fbd694d6c0746f957653eaee4eddbbdb9d7ad7b06e97b653dfbadb7beba6ddde5dbdbb37df9abafbe66ec3b7cdddb70dc629a5f46f26a593d21a0a0343699d94d28d526a636e9b4d0dd7341bf5994927dd7aabed9b3b754a679dde3075db3ccff33c9391690877490224049444c849911e203d8094080de9f07294645433de12244728c0848913211d32478084665e6cbcc8b8401982a2e40720af0727ab1e4a7400127a8253342f4e9c08158102b44393233c20c14d809e3c393284e40894264784868a0c29e981023e4061014129d28393244d8e0861d51094224b849c546008a8498e09cacaae62923439520448e8c8931e9c303982c409931f5f12254c8e4429020507a6071b0d0424a4431121274347903861c2e4c8cbe4e941c950131f84704a87211f6c523f00f15064a88912a12745904051d243cd8f1e9b1f9c5460c8c692234890002de901d2c325480f9e223d80961c614281223b3451c20394233c7c4b931d944009b9c903c502404b8a2051c284023e3c5909dd40cd1e4980a04001127ad2831324458480a238410224c4b3a407488f274880a0b46e8040434784809a00ed50e408942448704e393e264051809814f9e1480f37a61d9c3029b24313253bece084894c094a911f8092345152a48992233c20d1410727cf930408a79b3c404b8a0cfd00d484c7c70314254d94e8b0f2260f0f48868e50a0c890d091a16e0868871ca5c923740488099222403b1c11723204a54812264a7840526488890f4774004a5264e80720569426404e9a3d8a3471a2048a1050942216d04189105094222ff00001d243084a1127434f2c2084a4c8d00f4038519a00f9cea9073dad91f922222272a2d746d419992fa2cdc8dc885eaf17257abd5e2f22a2cfc87cbd883823f3f57abd8888ae91f99a44442f37424489882e1125226a232f4af47ab991179d4688e8ebf522aa4688281135f2a22f6a64bea81122faa2446ee4f5227ab991f97a11b911223a8dcc69e4455faf36325faf17911b795122ead5c88bbe88888888ac914944d44626116d2344948888c88dbce04ad03927ed01ca91198f690fe370cc25a4659a3036f3b58fc530cbc12f17f1c68fb816c317cef2981fb12c06da8f618d06c750c68fa12c062ccef297d93cc610cbfe630c58b27f0c52784b855d31c4bcf57211bb2fb3cb662a184ecd3f86d25b3770d7fdeac6ec464e8de4706239b41ba52c6786538b410b6fc5dca0cddc2073625d0e0c47b6c2ae1bb39c5a0e8913cba1c520f3960cceb951bb0173c991c9e09438b31b311c39650c0e8943bb11c341e69438240eed46ed460e4e8933bb41bb41e6c4726038dd0d59ceace5479cda0c8ca6a4c9a9e5fc989343cae0c4666633244d2c07862393a1c5fc7803369323a3c199e1942e3fdea8c5ac700c4bdc88e5e0186039658e188c681c8e81c421d3206769647f9f2fbce562cdbce512ba3c2d3b0e188ba3b1c89a8b8e5a761cb1157963b6aab97c0e76e1c00163c1682cb20c17323b0e19b782b9acca1cb39cd7815d3870c456e46c55f3a1792b07961d47796315cbc99183c68a65c731cbfe2b568e32470e1cb3952c4799a3960386a35cc572c872d072902e1cb2156c55e6a0f99105cb619131b4161c340ec6912eab5ace2c0647ad25d602e3662eab32878cf929def87115cbf1630e9a0c9683a3ccc13e4637c6952c06fbc072e03147ad05fb2cb15afd98a3f48939cbc33147cc87ec70fccb45ac65d70163c9767c37a3d1c4b2b3ca1a8fa7d941ee80c5ccb2f32077c4743e46874c47b90a75fcc3b2ff0ed9ac855fb168b510c78e124707d641baf0218f182b8603bb76942e1d34970ed2c5c305cc8ab978e8c0ae1d321d33560b985563cd78903b623a74b00e1d3156e92cdf51dbc103ef80e9a8e980b176ecc03b6838662db31a8c25a3ed80d1ec2075c458656d474c4729a343c69a913b64b39a8a45e3019bc12f17b105fb607196ef285df0cb45a4c13ea5b35c074d06fb68e12cd741aab08fcc59ce8a75d887476c6e2185143ee417d97ff421b33f0c346fc160d7fbc3f085b75e6038558b0ed9f190fd88bdf0c87648551ade4aa9523a301a1e650bb11dd80f59ea5bb04b87e421fb11e391ed90356f9d52b1ec3c662dc84e3f4a9d5aa703e351b610db81fd9095e12dafd391f1a0752d94313a2d90333a258fda2cfb8c0ead0518875d3a258f5a0b3a2dc074643c682de8cc5a2075623c662dc87ee8a07e9076c8cb23d32179c85a88753ffe9091766017664b2b33e9d4523ffe2875623c66b78552f5630ba4cc8f3a331d198f1718981f5b98a9ba991f5b80c9e0961f756839469df2a42308accc5efbf7663d311832fbab5ab28e163e4c099be1bee5b95a769a778965ff19fe19590fd972e373e4fc8d162da7058b2971be2556cbc17a1dadd9ea592d32c7af7a64383e071018101dd8d56261578b5c61578f2c077601c18181d06e60578b96835d2d98abc705040703e1b0ab556bd16057cf0c08c63d6410b22573f5d08084b8071604d62a7b6a401ef7c478d4667efc318b95b6870966f24153d1523b329e99e56a3e503ffea89176cad90b0f0da647cdf4e30f120584f448b497999f22e9068fdcce0c06bf5c44d574960dcc534bfd142d9eceb2c1a32ad31f7d90783aab064ff1e5229e7efc0123d5329019aceca9f5f4c080944148590fad67d6430291d5622f3fb6603d25901a9018cc8f2d1a4c6bf682b316ad1e1910da080436c220cb0e8316de3a61978ccc5b1eb634b1ec4268b14b7b61e6ad19fb2eb0ec3f33cb0e7b99657f5af63f61170c31213421b120b418166fa9f0e93d18ee93de4566bfb0ecb69c9dde05bb6080cd5e800599d16028bd95c227999787a965ff32fba7c8ec7f0a227ba19499799a9acccf0891a95ee65db5ecefba9243ccab82c45e90d160979019ec1222835d2fa8b02b480c7ec115a4e62cff17ec1252ba8490ae20b2174a170ce40b17bb84c082942f80b42f56a26db11a43d1be5909b6cd5e80a160a659a9dc60a82f90a89fa2f7a390d22484ec5e28ed8f4164a71f83a040fc279c6535d387551ece5a089175250c92702e6bf8e5226e987356ff142fce589ce53fbe20cb384be12cff29563c9dd53f0689657f0b8034f78f730b29e616b33c715e95a8be5044f5a522a297fa8009ddcc1969adc5fdf6f3416fdd9faff296b7bebea5b7e1d7700b5d2fcf85ae987fb9889bf7dbbb6ef7f75db06a4d5f69c97dcfc52ce94befba9203f8a477d1ece92d9d7dc9e55fde7525879677a195505f7ad7acbd60d7142a9fe8ba9203ccc7bc6b8ad10ce2cb53a1a2eb4a0ea97f795719835d54e62c7f184c858a2f294c4967f9bb6017a539cbbf0553a16209bb769ce58fc24f9ce54fc22e23cef20731152a5aeca23367f99fb08b96980a1539ec029de5ff611a7396ff865dd359fe1ea642c58b3b4c61ceb2b30abb17b431d28fb4acb3fb93f653bc3fee6cb326967ea4b4fb532ce1978b687f9c2509bf5cc4fa53dc7ea424f753e47ea4b2ec5b7843d059f46da87216fd1abeb3682d4f9c578a88f636eb4e5387fe690a994f5f3a99e933c5c805b19f4abd993e463c4477e921daa742c59e993e469566fa187935d3c72865337d8c6a6c4c1fa31cd1b16b7b231fdef49962a423d6a772459b9a3e46dbcbf4313ac14c1fa39898e96374a39a3e4639c4c6aefb463eeef4992265138d76c47e2a2e56fc4d1fa3364d1fa3d269fa18b580d3c76806357d8cb0e83fbf65fa18e9101dbbec1bf910a78f91157d8c3ed2f4317a294d1f231bb1fa18dd102b76f91bf9a0d3c788ebe963048ad3c748254e1fa317dbc76825f6cf9fd3a7b1abfecb45dcb6be77c32a6b2f061dbb8c7c88fe1673cea26fe44374b98815bba4f8d1d191e3e92cfa2f17d1c887d8f89d457ffeebd28aa5a33f80f333c5230d9aff031865cb4194cc415088b2ff48941d439953679c3a23cd349cb90220fd0a80b30cb2796629a198d38804997a10d9f148c93c3f1b68aed57f8623519e3f8368f69f213562f2cc9f1dd169f452ae5fef1172c5417e74c4d527e1261c1eb9674244452d5fccb9727dfadc7b587f7e364c1d1c91396cc576af3cd2273589614a996f93a90358be3f5e207324dc6492818314307021085c703f64ff1ea2885c936759e5861f103712860854485902599f5a216d3200451231a11bb1146021879e4c32b215d2852070414689614af9c305f27d2b189864881b262719e2c4aef9af264e84400841608124458bc92924e94fb2d7d0bfbff92d00550422449105294747e214402a3bee176d7b69d0352cfb77b80070c9fd1c79bc9816d1ab2280a610a19d6c653ed14cc2d39f13573c858a8e58dfc8452ca27b52d97fc674053832c9b4885ef9ef20018729f5e9ffb41038d222b2ff389190fd5df341671189730a1fc8e2892c64349214eb539186643d811123c080085e204ea1a223d2377211e7142a2dda379241a45f43231944d7951ce8bb7070963f9db9aee460bf62d78fb3fc2d765dc9a13ec5ae77967fc53bce2a4bfae39c4d2a0891c54a13c03041117a60ca029c22110770f002279cd8e28b2aa4204e71feb893c393a448bf88eec94161af26a25e9df05a43eb55ba71d6be3f677fb3f6d6900e69cfbe7f760a59d52b1b448f72fd8b67af2cae34b711905ca14302f637c4078c74f467ce0822397dde14e2a6fe6ea8944aa14e21760aa1f6f31109c895de766fb9b7dcdbefb82f71dc5bd25b6baded48a1e7590a41467eeefdf3cc5204cb35bde2b8a7d9de73679a0d9bc1fd25e1d92b6e0bedd4993fbf3a75e6e758bf8292b98d92c894ccf3bb6eb937671e29c90321dc4083c8138f94fceacf308a0da739858cb5e2a0539ee33ccaa3ffcc0900e95ff9ec3fbf20303ba664153405130838cb23a66407b4088a80b334028d7cdfe9771d1361508e893094d0c2fdb7cf069a827cff72a00a0db34ce20550a800669e784987630b0d7139681e65fbf72332cb245e90afc53ea8f2902a3b0d291246798634881ee539d239758832ed70f4b79f0d2d827cbf7e35f8df9fe51149c8f6fb7e7f36d4afdf784e9dfe9fbee148b1bf0dc7ce5da370797638cb2392c84135049152db11c615798422042cba22e471880823a89cc8e390144f7c791c320211f2fc201a4a352772d03c3aca429e1f6443298f3e68e00679be0d611e7da84204357024399fe8d28b8324b2a5223b09f24da6df4d0480b3f4c0947c0aa2d97e373f1a1adbaf782c9b90e526d2efffe323118d0d968a25515efc6d18348f8e8e6eb8c9f4291e896c18e5450b1b35b454640f873adbc8fd36f492f6f78f087d6bf150374b0f5c91873a3b1efba3fc740d6fb28737b9c3996938d4e5f94496f6195d7f573b904e8aaa9fe3de3929b672df5631f2b553d8b96ae4bb7934f43cc3b946bee1fdce7ad33aefec4aabc93efd1fef3c77f33befdc55eb5dcf86f51bc20338dfbf1dc0f9f3bb59b91bd358813c310d3bdb70a29127067b95233b56f58a12d11725aa5e4df04a40fab557b3be9d42c57e55b6610de7a704a4ff51ba0904acbf23cf2c605c913fc7080f4690c09648649c912d8feeb15bced9b0d046e7771be97f7aa33f8326f7fd5dcf490aef774ef704d1a3dcde469f7bfad940c7c841340cbac9db775cd83fc3b189dc1fe90c2f1ee9cf0dcfc9a3f14fd3ecdf7968801ffff911717fefe83784f31a606456c55a77b25de1d080eeb1130b01baa766fb3b194822dbffd12d172d966c7732cd66fbbff3ae7af4a3a1fb1bd24f3f1bfc7bc336d0b7df6da1cdaa338a10236f3f33fddffe86f4b770a4595823dfefaab78533abbac73e98eaaa373f1a5e64be7874e5fbbdc600b290b7a747f9fea4479df5b6706c32df9f4de60d8ff76710ddd3feb346428117b9ff0ad145be3ff3a9f192fbfd34aceff57fda27a6fd1f0dd786fb3d85ccb7dfddb0bfbbe17eff162eb99386af863bffe29196fea7bb5238967ed6ee29178ee377e192f9dbf7476436009c2511b0bcfd9c0520fdc4f40bfa610a068220b350e9a110e5122e7dd0580135d638ca50e64c8a2486c8dd4321ca1d9ebd2ae171da40c2e30f79bb1f0da57cefb5d6d65addbd3bdf8f48e7edfd2352ba1f119a37b7df90ad3f22253cdf7e444aa590c686ede74f6f863393c2f1878997701fe4caa367eeb9bcfd4f73e1789ffe8f779ea510b15c5fc7da90f326518b46f700b0be989ed0e5594e2123cf9a22a4f81006d09ffe9cd3c34fd23d00ac60573f8543f78c8f258fd38b5cbffeadb7be08da1fe717f9aaf2ed19390174cf08f2d03df77dbac7f3fd069491ef47a05b55f4f9c5ec22df541e83e4fbf3fb6955f7cc924a11f97e4df774bef7def7ba27e7e225b3d667747eaae1fef5bfbe59df9e7beb6eb7ee46a179fbed6f3873d774f6cc3fbde125dcdff702707fffa7373c12e58d0ed91e8f35dbeacdd97049908be36ef03c12e5ee4edfd190c69fbe7f8734fefddb77dc77747bfa5cb811e9df9e0bfbbd86fe6dfb9fb6dc77d6925ec8ff3e17d6ee7dd22585f6efe5bef370e866ff1b8e9dfdedfb48b373784e1e4ec4fa2fe17efbce85bc171abab923fd90974bee79247fb7df515a267d57e2dec3b133f7f64bf69d14fefc06409449784e1edc4833f7fd11b1cf61ff1ff790fe76b10d3bdab9e7212542b37fc5608992a41081463321c28b9a7ed5a97e57fb3bfa4d8a02439a670e5de9bb53f7f32747e27e279348a18a9b3f85d03cc39f3a3b79beadc17ee9bb523812e5d2b7570a4b6f7fba14ce4c3fd2463f22dc89e60eec15e9b9df9e7e434a7824da421529ec6c1885e69166d297c2283493486fc3996b670af24c43c433f71cfea9339f661b92f092edb92f8533d72f882bc0f61c3ed5d57cfa31e0fefc52483377439afb3b72b785e3f61c098f4499f434503207d192fb1f2f85b4a3defc4838c873733ded8ff52f0ea2d962a28d5a2add34230a439055b2cc200b2510e7d7cdf9cd40b057f48580e3532fd3a741327dfa3eddb365fa4f3f87fec8f4bdee99effd1e2e005ce29f238f997e37a79071275b222b8052b66feb8f8ec757f61f49f308d9622bd5fe0cebdb70012e04618b2371be87a32bfb789f09d107f2f6e32bdb9f1386395d18676914451ea279c34d261939c88f8ef2c5565cf35f4454d4c48ac9d1952d1efd4752eeff710f73e48e7a359c3fbf074c1dc0c49923b7770f56dd538485eea647e433f3eb28dedd3de444fc83e8d1d1d151f61ff2ecd8bf66c73436f8db77fa95d22b5dd7cdcfeddfef6c78431c40bbbdfd05f4e39128fbbf44f7f935a07e631791e8f26fb1b7b0862e2291fefc8678ab7fbcd8e291e60d738f03d8cd2f07fa15bb5e22952b4133e4fb54b4a1fd1b8e9eed7758ffc76d38730d5b9c5f0e2ed2ff690fc32912f98b12d117ad1d9b659ecf4d21f6e777f647af5c09796754657ffa3bdee2de7fe52d52edd57dff2053c84f9dfbfea4100cb966dde7bca56ad67d7f554cf69fa5104679fc91fd63a6109afdedfdaebd1ace6cc38642fd9f9e14e5f5aaff3e7dfadda7a94f73679afab314420a7996422c21ab7a75df8634cf2fa8e60dcf5edd1ad65e715367ced276d73a1a66a6796e71052674348d36c1dceb6fc87c9a6729041a59d5abfe826a9e5367e2fe8604d1a34c9a3afdfdd140b3bf7ff36948f3a4efdf10c7959b3afd3306006739458a3c7ad9234d2133773f378594f22ca7389155bdaaa83ccb295a6495f56848df946739254b56556f3aad6936752268999efcbb13cef5e7d71ed2dc75c87d8794fb9fee6612709643cc72f7dcd39ff4a3612b7d178ea55f42badefc864c8abacf7dfd0ea41e17ce3572f5b870ec429a1a2a49e6ef6bf6fc7d879de7570325f3f79d7b5c68fa0e67eeaa27e5c9e9a59c5c44e2e9fd0b5478885bcdc89c919704835b4aa498ac5fb0eb7e0a37ad674e635f85b96dc19cd10fd1f4d61d855ddc83d8693eeb5a8db9ac673e788115caca6157f54413aef58758b1ebe24a7316765599d79c45bb579841157480c50d8298d1258e0085128260e5d535b8820a2478808526c48a6badd25c464b3a2329ed4923509c427a2aa0b83d95174b4f6525764f6547f49e4a10f10afd913e3185501c348fb27d62ea84d689c9d3df85160493a7bf14da0f4c9e7e2eb44d4c9efe2db41e983c34728a518d3865ca94295c1293a79f034a7420472461294e6331d866b412a74cc9801193a78f50891c96726ad9767494052104c1064dc4a618fd10a7704f25886885f0c45ac4e4e91fbde6042080718427b080214e71eb410780b0022172d004719b32658a94139517ed9495688b264f3f951dd152993c6d496f6d784e16fdab52cd69c98ae764dd4c1ef467b6e54b45d45eb3826ee68c3a62383b79feca6b4c0fcab8779134f371f0967fb27eef2e4dfd20765599a5b5cc490ac392e746aaf5b7d450efea27d16b7f7ce6ac9e254d66499f75540653d666258dc5e6cf5aac86839765e4e965edc6b89896f6ba71b06ba7c2ac8cce9a96dfb4a632d07a2dab6052efaae5fea679977fd8d5315bab25251dd6b04bd6d913ef0b6b9739abe78fffc15ba45677339cff911ae559692eabdde4855db2ce62b3d6b08ed95a2d7938ccaf93bdd996e5aecdd5989d9ddaa5c154dbaeedd22d4dcb99bb43c3c554588b8d95b978ba667b365aeddbf2ae59cfd4eebbfafb460e1953c26c786c66319e7e20efead1419ea7bf07bb389223dd2078936d35ae24ddd916db689c8c44de72836d33cec236d259bd71308ee6b7e6aceee75aeadd5e6a8c76693eecb679577f3f875da8f2250503632d341cecaaf9179c9e89d53cc62eb096aab994a7590b6c893c532717b056da7e150deeef9aa6ff43ec42cd5e66a918286ba939ab6bfee65d366cbaa6d6f23dfe07cff7e08985fdfdfda3e75b0de47bfac703691fffa3855d28590f76bd00c1ae14f903bb401fb865d603bb50311eec7a89b95c6a2e7007b7b85030d70bcce542739d5cc02db2269dd5b316704bcc593d632e34929cd1648d8271fd12c3a9e5942612159b49cdbc143f3a42e1b8b8cc60205e643920898128cd707820be5c441958ee07bd855d2da4fe96969677cda4fa5b48183205d25c50b5975aaa04672e3014ed2505ea60175226f6f252a6604e43b5d45e64206a567a99a56228190c099625a7bdd4b676818133540dc52aa3857c812155ac2f369c9af160cdac4bec765dfb9b8339c1cc3ad54f93818991691859d7606a2a194c4c4c4583a1a962313418986a063353c1626631aa3245539131650ce92283a1220e48a343e8011563d8a07685d34a18ed92cd81d20a52b0429625ec2cc6d548984fa18c232cac708616254dc69524d816a335a1e60511c6e88178675b2df74b0104542c614410c4e048d6123d28a28922276011a7e89b3f37b3010c6c3085208828420a718ad63e2966925911c306464c28214eb154fa53afe1c5941b9c21461340d4df48d9d60fc4e941d3bb4a5df6d7fa4ba537eb6aa45a072bc9bcb2a391681d598a79b26e469a956a2598d795a4b2442b915e2723c94ab37b729195c898f276e57a6b537bc7c06060a8999d792ca66fbbbc8a565532fc72319158ed62a950718c9139152a8e30980a1559aa5a6e56ac86ab34421669439651c88285ac259cc5032b5ef0821c7021236533dac4924412a410450a4a50c2ca59a9469bb0c2822b94200a52cc625e47eb4824942e60020738c04224d14a3220440cd10318126512c4296e63a92c8541c4088c10821422c42996bc590c9526d09268428d34ba1a10232c5548420a4ef084b18301e10724b082850762e2149ddb6afd9b8c6cafc96ee9ef3f9d604d7e33af7622db24fb649ea93491a6d849f6c53cf233c14e3153ed837db42e46aa6d34307632d5481f8ceb6216f6d564b9bf98674b54ec6422495f6dd2342bf5577a35bb591f4f250a046d1d4fa7136832d1de8ba46c5fe447332c65c3f1532cf233c4edb16b863576e02afdf815915e2e22f8e093302b662281a437e9781d27d3cb63204ca63fe5f81c5f54747a29dc17b95e3010a7d3ea5777c74fb1a8e8be148efe148b4840dcfbac67fd8ef0071007c6f160c84ac359fd348442942b008eac3474c0bc75c2fd3a96f09609f7eb30f2d6c5fd3a486f91b02b0d6f715d9e3ae7530d93e99af7666033341a994c0dae21656033e4cc8ca67603d3c468683231191a5893343319d98ccc593d53eb998c8ccc6c26466a9ab294a1cdc84c4d3393dd86296960343452f76d1a144d0d9481bda955cea23334170cde46614ee41aec67c5bc75c22c13a8038f1c49c5c223783faff0a8c2d35923ab96fb73e0f1fb71842c2c53a7ff02e0b84a2377b3c83468b1662d51d36f43b311b351b389d5c058309b9a0d598d8dac86c632aa21fb6dc06ccc6e6235331b588d8df2066633b3216dd4c8baa6144bd15e62b96dd42e8ca359d98b4d0dec9a1847a66a6a36656e1b24d860c3de86ccedf2b799e546b56b470818e0001074508226a0b0cb062c855db38b1e64a1841524a41401c42e205c7eb431cbed0a5244087a104411152244f0a7784a793fdec45c27228c418324c4a80921d6fc0903d118887fb9882edd6df3a47e5a6a0d17882f1711089cb6f1a96eafbf6ffa1b7fcbd7646edcdd8d5d38a7c39ab33ac4efba99b9b00bc35ce1e390e6acaeb96e4a5c3aab6f3026719e7623cbb181b1ac71683fbb61836dd064f004d7f663cd4c36b34193cd68b2922c6be50cc3c01f431a399b4c2892f2c50f86f002718a5ce9474cb3021a519042902510a788c2311d68910410905668813845700c6b58a89c5185219a70244eb106bf5cde072b088107900085118853dcfa575f78cb35f316a7e25a7663fdab9ab738eebb1fecef3f615708c3c991ddd46265788b3399bab9fe7ec1ae308613cb79f2066c45f3d6a9bbbfb1ab6bfd295cc3a93d0dcea185250ed9b19c5a28c381e53cec46976251f0620a20c040bca9c164b21bb0192be0a0074118c218b1580c76839cb52758a1084b06a6c064301c3287cca9390db070011642a4b1033146b9800206b89899e10197910fd17f0c6795a4221b0106a69001718ab5419a0ed4588210aa808311a73665b0822aa85153420a43187368b91b035a302182230c50419c22875d54dcb0d3dc527ffb5737ddfe7679147832b5aa55dddd386633d8952326835d3954d8752306af60b0ebc6ec05bb70a4ba05e74061d70ac4ae1b27ecc261c2ae1c1fce41eabfbd61178e9ab3fa3d8c23e6acfe1276e1b0fd15bb56dedf611ca4b3ba1b074d56bb635bdb5ec1bc65b9b9ce31cbdddecd75b7ff786396bbc42ac359dd2c9ab3ba2d667de1acee8a593367753b6661715637fd918525ebf888ee0b878856aa44161d7855df5eed76dff4f3df13a7500922724f2a75de97fa979fcfb9e904a25c5a9e4634a2a917989f424525c6fc142aa038f353a870a2ccaba650d91169f05d8976f2d09f42e5c53a79e8cf0984fefc99f065f2d09709539387be2a74993cf4634298c9431f268c993cf45f42d5e4a19f0a65260f7d97909b3cf45bc26df2d04785a4c9431f0c4b9387fe29ec260f7d53e84d1efa5f383379e87b21cde4a1df853593877e29b4993cf449a18dc9439f0b6f260ffd2d344d1efa37fc260f7d1b9e260ffd1a829387be87a8c943bfc396c943ff35437dd6cd9c716e31cb23a8fa3c7f7a6bf50328f4e3e9cfa26d7bd7cb45746bdfb5bd8f52e95dd6f48d7a29f58b50260c448954647a29f5073088e62cc5d4f19f6291898481400161eaf11500375c2465fba2af5fdf2d2eb216e6aaba6c0bfa30e12293c9d4f58cd6682753972da333f0c94f6fa17011eaa56c5f84f29ad6a4a9c3ae9ed11a7d1217955eca868190428fc42b353fc5a292f72e99078d7cc0bc8bbbf1463e4418ec82f9d2771e7679bffdc9845da647bdedaf097f0085e8d73c296c5a9394ee38ab63373ae6394ecbb0141a9921d73597ae358ca66134dc421cc29fb0e96cd64a5aa3344afe8c8c51d84e378ccae66c965debf163c72c7eb9f0fc48cb3b69d3593efee70b32fbd7c8bc555f2e22aa059a0b325a76fb2e58f627b36b517acb3f63f1d60997de757a1790dff99e6f7d900a7ef72e1ebfe375be8577e18d7c8078e366de05be2bc7dff8d5b35ec71bf910370e73ef0aff1f3fcee3c0ae18ec6ac12e0ebbb8dfbee5633ee75db08b06bb66b00bc42ef0ebcf3ccdbbbc0c76a9b0ebc3ae0ebbba2ffdf7aa977918ec7ac1ae14769db0ebf4a84ffdcbc3bc875d24ecbad865b1cbbee9ef93de7b7f1a4601bdb0055ae8822cdca1853e60610f326ca116a4855af67f095d285b65f64f853bb59e9d5af63f853e62a8b0070c482cfbefc0b2bf4ce802e90299fd55a10bb31666d9ff0b79481d32fb77a10f5929ec11e321cbfe3b62d93f277421862396fd6342176a38b5ecdf12f2c470ccc72cec517e8f32fbbb842ec074c0b23f4de842e8022dfbcf843cb01096fdc1d04719f608cbec7f23945114502141b98134404093d1485811aa00e38a209870a285da4e8d8ca961c6129080c6123472e6028d07d64306e48a31c87001152010a7587ff4e1028c0955c0828b2b9c61459ca2c9f4a30bb11ab040065888a1c4182c10a78842014172a176032a4830604f0021264eb1544261202e4f8c0a4c68020d35ac5811a7b861206c8fd2a99081c68c055bc8c42956ec326120502f17d1e46396fdb314de72fdcb45aca59a2f551b55c906888198618d9908c474d6cdcf501347ee471805a46457abcce934cb4e936d333256bf32bbd7326569f64fd8e5339acccec85a7a4f96fd4b64f6df66d9abadd9d8875d5e7ab534ebb10aabb4136965b1ecaf72d857bb0bb3d561ae7a61b674967b8555da25adcc4bd855c93ab3355b9db6c94ae4370367a0d76ab9c14ab4affc48b0dad8666b2eabb0afd2402bab97f4d84b8d75b5a6b22578610efbf9e23d6e2b6f8c54f38147ceebb0274382c970b2addbc82bf31e06bbb8d856de1889bcb51e787ccf6523c5caecef95d99f969d04936d1b79653c7854b960231f22cd9d6d3118920c66ab71331acc9197b6c93852c991cef24bdb381aa9bcb38db471b30d468a71b7dc1a8f601e67f9c58dd564c8979837333b5d996a235f60de4ce9423bdd7283793112b7d5ee6c8b79d58f9bcc85a623953f72b4971d3fc514fe91234f38a6c76c27c6c14eb3ec5f66e778663b3219aefbe183b6da2949b3981e34ee47cd470d0849a2f1d0563fc81eb5f0076c6746aaedf820796a3f603b3352cdc70ee6a9012149341eda0fb2476da724cd7afca8f9e0d9e16a3f683e683d663b310e36e3299de53b545dac342b955dcd2b555e57f266259947f3605d598a956a259857f3621dd9cd3a58e9233b9a27eb60a58fec689eac04f36a5eac23bb9947f3605d598a956a5e57f2662559172bcd4a5dcd2b2fadd4c5ba9a5796ca12ad9379a4372bc94ab5ce8379b452ac233b2fe6d54ab983e52e7bb2fc9125b263baae7b10762a4d35d53733c5baaecb014f269acb579a6034d805c24ea5e99bc54ea79869b6fa6426929499689f0976a29d60a692e68b7db598d3ec64927db0ef74224d1fec3bd14e3067b9e9fb4eb553cc34fb6426f29b81b05369aa996226d85782e44966a2996626f2939d6aa7d809662abfda173bd1b2ec34cb5a9cc85c9a6419cb47fb60738b6c94495409d6c0580bac8596632d31d40c45b6d44019aa046b60ac05d642cb4bb8902d32140d2c51b096186a86225b6aa02cc3c0990baca544c55035940ca4b9c45ac896194a06d25c622d64cb0c9cb9c05a4a540c5573215b64281a58a26060ac85d6024395600d4582b2965a4b0c3543d15030b074215b642d25aa868a813317d80fcd25f65346cbeca7d642fea48192fd7c01d22619799ca5ec8becffa3c58f2c354b912eb297d84bed67f6224bd152309712864ccd52a48bec25f652fbc102037b29533597592af6224bd15230971286fc295d6830b197594af642a64a971a8cec05f6424b952e3518d90bec85e6428389bdcc52b2171206f652a66a2eb354cc45f6527b89a566293205732961c817598a96aaa5622e3318d84bf9327b215332171a4cec070623fb59e285f6137b81fd48912a7f8c5c6a3df23803ad34cafe339431034d8654c9626830650cec8794519531359898980ca992c5d060ca18d80c69c8c454331509132393519531359898d80c3519998aa682c1d4624a99525553c562c898994ca9aaa9623164cc4c46a6a2a96030b51899984a05438bd151ca903232550cad83cdc46866323055d9c5d4664817990c4d1553cd66542e2ad8c7942a985aee6464a54c8967c0f233cc54311e3fc5163cc317b3cce119b48821678065ff71062db2ff0c4b780be62d8e9ba9cdc46264663b68ca1ad80c326fcdb2d39033b21c3531195a6d2626332b6b605278eb468d2c86864603e3646a33e58dc7d8454333531393a1cd10f3d68d903543d69434b51b33339a5838439b81d5cc686435e40c6d065633a391d59033644d49539ba189c96868343099da0cce8f32335899a3169b91853fcad05835b115cd2c0799037663a6cc91a9b16a642b1ada4f11ff4853cb397e8a387ea489edf8716646d6942c2c430de3978b88f363cd6c8565480347f8630d9903cf40eea091cd60d4f2e34c19cef219582a8f329465647f19b078ab05bfbf0ca5b7b816eec9ec36b21a5a8b8dd94dcc5f069ab770386e870d1a8e0d984d7923aba97d0eecb241dac86a68b39b98b3fc0b6f855c8e9bd246cd06676333fb1dd8658366a394d5d466de8ac1d8067633cb7143c6d8d890619b9a4dec86d6828df2066653b389ddd06c9437301bd8cdec86b4a1d99039cb6f4a1b351b36a48d8e1f6b68311b36481b994d5953bb7123b341b301b36133b3216fdc94366a37a40dd9ff6843e36c60376637b00c3a7ebca1c970039341f6364a19b4e0816d6458c22656ca630c3519964823a6b60a5d6e6a5f3e26712903cc5b3a3a0ccb793224393cfbd90abbc2f2a6566212973218798b063f2c9cad9e16c230ecc910cf7e260319f31fc33156180b6931a1ec65b816d6b02c94bd0cd7c21a96fdc7702c8c8534fcb070f6b4f0cb12932e61497353a3211fcf38980be912ce42d84cb35763cdb4ceef397bcede4cf70a3523ee6e84ecbe65771efcc7494be2f5087727d478a20346b0824a142e103d27bb6b0009d9376b84548fc082ddaea50d71240b25c8a0892cb22ca4215a9c6c6d160d74912dde59f5ca082c89ce1ab978db9e4079cd1bcdfe08ca6ef58c83fd71ce72b0b8012418968a57bde2418d788bb35f93ad3d65fb0321641b44ded9b2c0800546b2c0c8f08cf0404b62c45bab2c507061afad3f7e4a7966398205f9cb33cb114f6cfe09e1c70a1d7cd5fe7c618514d6e260459953e6d0802abeb096b4fd58210339275501f32a9670cf800d26a83843035314b101247096239eb0cfd9cd6ef6da8b719082b2f5e9e7507198955f4cc1fa96834e8d9d203b3f76bcf543c511a41f4a44a77e26cf1aec600d6ed64d98959e02259464676c3f3234b6ed860128a21b9585044408c00f06c468910932c0fcd35c4021ab64bb11b3c945dd214952ca4f0a68dbe657346bbaa059d3bb68d6cc2368c4c44215987002952476d08412c22b4fd8300ebdcaa17e0e38fce03045051d10e2892b322bb048c25f310387c661a6fa49c11731797201027246733b820b1a2591021ef0208b30d0c001086eb2401a011244211082164e5891050d4820848d222090466094860ca090051d80e04a1421b0a9a2c13cb1ac31851f00810558b40009a330682ea8a122048e3ccb2b33f87070c4162f3841183688e20753e882a6288d9ecdb0648108247c67467760b0f54e909d1f41ae48b1e3ad9f1a9459ae6f2b019401c00248e3c75b3be30c99fe8893fb7687138618a60bf4cb2b3253ddbeffb99d5eedfc4c8165db6e18805ed10c04a0041f68a2092956b05084d833b9bb0b23a4e41600fe5901387f02b0f323f51c2780520b67cd2dd27042b679628901963cce7296270e11476f133ed4bca4df7ff4aeb5f6ba3f073a0bab7a35827f80041c4d11a2075992b0c507fa3b3a3f191354418a95286490850a9090c9fd60f79976dfa09b39dc8cc90a30ec419597d0ee71d60ba0d31fb9bfdff54726aabc851f1620d7832adbadfbe97743149a29aeb80755b678497d0cf6113d89d0c41062b229ace4200bd50c6e0c2e97674985102bf013b4a09e400b3fe559032e3e90b73cbbc0d2832d1c69dee81765648ac54d60e473eacc4c666aa5e6ad69a0797b7a3d4a9f4ea7dc14b26dbf6d9452f7dadf09ee2c733d993eaf2b5d4aba97082773ef555d1a93ebd77195ebeffca8afaa5f533f5755ae7547555fa6deebd2722feade8d087863eabdf75e997bafb5f7aaa64ebd7ff178af6a0ab15f5fa63ed83d5cae3e4b17159c6cc5ee95a35bb6ff39f639fb9e05b3e5b2b5cd4d21f4ed932cf5de2edd28a6db57c3dca6a51f0d148fd406db14d292edb66ddb46dab6aeefd38b376eead8ed373c6e53c87dfba429a4c5de1d8f8c533791397568ad7876ee3c4fa6a9e3ff4d1d7f6feaf8638a0270962758c23e2da37b463a46f6a7344a46f7c4647f104b76137c914795979363f2e8f9d38f484b9e53c73e1dc36b79a436c84890824e139e90c9b8816201a78e7f0d140b3885d8f7474d212d3d59a6101bd22c53e7bb9d1678a8f04e58c21951b081d60009254823532cd9d6403f223307f9068ac5ab150a6aead4af78ac58280c33cfa756a61028744aa656a6ce7c21506896a9339f4661b1641b45b6f6270c3964f6a758a6108be529160a4393793eb5c114d29227365501522c79047314200c6dfd9400079335b3ffa43d3f25f062ae661e6d64aa823cf3d89247f0a7043498ab99fd5314869f12d860ba70e345372100fa8f5c790229727dce6bd7ae33a7ea706ad1396f38d5e938e86ee659bf990f547d60ccf78120f82e29371f369a11bf9fff16c4526eb0ebf5bd7c07fe8bf42e3fbfa6a565bb3244f3e9bf94f726977f91542d9b832d34ef7a91dc7ef7f3533234db46fff53d4dcbcbbb5ea9f77f91de24d3b27d2eff029f065fe9ed5fa4f7996adff4544a620c76cd98f015ee5ff63799169ad2bfbe37cdc060d7ebe54d5ecafe0b7cf9177c0565f248ff023fd592baff02f1158a6b5a503805e22b27fcbda26fc2e08773fa5fdd77f84a09bb5e240e577ce565f1157ce5e5556ada98d05597c125e56646f4fa2e2a57f40fba796d3c101dbba898447f23986aebbba4dc387e5bb1941bfb4633e28c5faee499c054cbcfafd9ac5faee4995ac09fafb2a4cd2f57f2c07fbda4ecd691fc722593f7f3411bbb91be7fa5beabf1cb79ff7af992151b1a997fd5f757a9b0949beb343258ca8d73ff7a995780893533762375a77fa5fe7b1795924883a5dcc8a8b0cb68c66ea4e7def5eabef4aed7f7debb5ea737812d30ff7af9d4bb5ef7ed46eabe13eae55fa97779d78b7bbb91baefe4f2afd4a3def52abd7dd7eb657ad2bb5ee077ef7ab5fcf7ae17cca3fe95fad3bb5ea8f777bd5cfebeeb55bff4af97e760c29c06d2ff12d606423f157e03e97709b90642bf25ac6920fda8d06b20f4c150d540fa4f21d840e89bc25403e9ffc25403a1ef856003e9ef425503a15f0abd06d24f0a6b1a0805d2bf85df4028907e1be6341020f43d9c0da4ff4543494be866f76c4ffaf9a9eee97ebeaa7beccfafe99eee017f7e4ef7f09842680e1a29089a4cd6761d89b46ddd75e8e6fb2def6110ea8582828810093a7dd0f741d6fba0d207711f64ffbe0d37474731c82d78ac38e826ca4c46e171e341761c74733406d12833f9f43f0d9ef0f8df9b3e3cd678785495be2be131c53d09bcbf5d3c7af63b0cba393a3aca168f516672c5639499ec7864b2f120f78ff5e6c6516032c5392db4c6baf796cdcf17c0136ff9cfa74b78abe6e7d3d25bb4f4f37fbc45faf93c784bc7cffff9540b6fe19c7e7e106f996cfc7c6ae42defe75399b76ea47efe8eb75c7e7e03bcd5f233c7cfa752780b94b979989f4f63dec23378e4f2cc7758c3fad5e3781bdae0229ab7f91be2e43cce87bf858f8b2e8e673d17eac0456d5fc777e10d5c7423fc9cff421bfdf6b9478539708ebfbffa9710e3221cfc373e26bcc1453a5e9e7b99b0a8e8e66b662905963cf3291ea28d9bb7f953587483abec108bbebf799a2fd1e02a26f1bf0617c9fce96d709517b1687b9a57d57cea4bef1216d5a4dee64d366ffa14aee26251cc9f9e1416d9e02a3a6211ea6d4c5ffa1a1699709518c4a2ee6f4ab84a8d58547a9aafc155526251cdd76f098b5e385c45462ce29ee61b57e1c4a29aef771db80a158b526ff32fb8ca158b4c7ff3165769118b5efef43061110b57a1118b6adeae70951cb148f5a7cff15e589403572989452d1757398945dedf3c0e5c258858749fe6c1b0484a1191780357c92116d5bc7f88abb0c422983f913e7cfc342ccac1555a2c02dfe6a514118938b88a0c62d1e96f701129f52edff2a807bf0a156f1ee32a2db188f434b888e6ab5031fcb0a8061755a162cddf94de4658e4f236b8a846e6551ff330fff255a848838b8a8a8a4e6ffaefbdeffec767c2579965c2e9acf9aa70e5acf931210ece9a0f13fee0acf92f218d396b7e2ae49c35df25dc71d6fc96b001ce9a8f0a29e9acf96048a570d6fc53083a6bbe290ce2acf95f68c459f3bd901a396b7e175299b3e6974295b3e693c21f67cde7421e9c357f0b29cc59f36f48b570d67c1bbeb3e6d75000ce9aefe11367cdef902ee1acf934a4a5b3e6bf4022fa9271ae04dd14c189a509b24c1fec9e51a5aae91ecfb409b14e0da0eb5e0083e8ccb37b66f74c6fc3239737cf7e3690461c72f761e4ee67d77df71d9e53877221258535cc30e61633df30d5c8f4bd1a661132913946a6259abb5238bf2124fb118028cfc9a37b1a8ee1489f7b120d671e325763f75c0dddd3fbdc0d1d2ee13957dccfcf06d2d3f9d5503369f32df4bf438eb95e1175b4c62a38470e9547f00812134427c842112710e204494c81048c14515cf13630c798010baebca0080a53e4e0258b952fa2f0004c9e65144e702cb47b6fadb5d67ba3f0225f2fdf7b2f89fb8e4422fd4fafbc85c3bdf74641837cbf768f29dfe73e754952eebdf7566146beb67a0e5e9e58a0d022db3c65c00514795c91a81da2944aa5261a4c3cb1c40d6a392002092952084e492c010b3aa8c210624770a95921374909a521d068469278796e418408cce826850204a944a17bdcc98147afe8aa13dbf1ceaa57b6bbb3607141eeaff6fb53dd53bff15f5cbbfb47f7d8ea9804607fc541402efff44fe37046a69f43f75c1b821ad7d2051613d0a01a217941fb8c20b282225c89e207553802969615d0c088098a13d06846924031e576a0ab995639d58c788b24c59d65f0a88f4397457777ff4fbf9120dcbbc80015d95fe5ed349a9124b40a1350f900119e3843075b88a8168c20d3ec3808a8ca3f0de67105e6c9850e9e707b020f38072e50c515235c39e309b01c80506c000a25ba53799624a8e52ecf2d88f8a29df01daa5082312bc206cc00433ce511cc534597d08010b508216010060fa038420526157c7996239092b93cb7e86289daefeeeeeeeeceb95f1cb4e58a97f8773f142222fedd6de1127bf1c86ddbbdd6d6ea3ef6fc6ad832e9eb6fdf11d1fff11bda47a38ba61f8783b6bca43e14a26cdf3f22f6ebfb37c43e0dc74d0890bb817bfa99c3e392ede7f7d53cb71bce7cb14881d6558fd28e7e35dca7785ce2df7f7f89dfa79fff0d976c9fc5441cbd596029c3e08e2a4e9ea508c4c8df0e34a0da6c13ea124e79962228ed11dd38b18cde8eff8f6e4d9f3c7f35853aae5730ddcc991406af28cf9f74d6ee99993ee7611e79fecca1503470b7bb7153663e4042148e80a52cfaca58113870efbd97b419784106558c30040c64555ae05921041375a757f5e631959b0a91134555805144c613d40082d8cf754f971b084564b1a2045e9e3210430a5a2f1673b6ca82d4791be7173bdb8f2b1ebd9aa2db7014f76362a3954ae7134b4bd5ba5405a0fff8234f262a7fffda3dddd3d8eb157dff2de4c2d9acfe1ab6461ef5a73b9d754e377d1a3a45375fa59a29fbf4bb1740af574c5443c0ea21572965a29b39b408100758dfc7a157dd0d1bd0ab1c7a4571f0d6ca59f4dfcb56956d290224b2fdcaa5f0c82427db6b2b25029c331cbac79f7e0e8e7b1ac3e4c9850e52906b9ea50838306979e2105dea46a73cb1c464dd3f69bc3e75dc513aeeb6eddeeeed7bb76d73b7cdd5dbddb76ddbdbb6dbda9d3c57bd9a5faaf5b77befed2635c99dd4247712a90e79d76dbb6b4f758e6bae26d52bffeefea9e34fa780fe7fbfb91fefaddd5b6fb56ebdd5baf5562b676b6d7cefbd7d6bf5ce7af36b3cba72ffe4ac7beda9b561a8b50ab91d76d5dacddd9df366f7d45babbb3b89f4eeb5a7faadd948b454ba25772f7d3698f2c5325367be757777afd7737777dfbefaeeeeb77adcf7ddaee9d5bcb8f6577b4a9dc9cbeeee7eeff5fe6a4f75af61a8d5746b303d79744a4e9e5fd3ab49b76b39936aeaccdfdebdbb76adb56baddeeeb57278f4f2a5f5d6ef5abbd61edb30d891666b7fbcbbee5a6bad3dd51b861e876a76af3535b76a394baaa45aabadd5fdd65a6badb5d6db5bb5b5565bab9d3f4a74b37bfc67eaccf709d2bdf71e76b7544bfebd7255afdcdfeb9597be0bc79cecdddddd5cfffd52ed5bbaf7de7befbd97fbf1de7befbdf7de7befbd97abbd72f7c291494eeef7eeeebef7fec89347afe6bdf7aedcddfdbabb7b4eafa6b77bd71ef77b1b867baf3fbdf7de4b83f7a4e742efbb5bbfeffb847cf77eee5dfbde7baffbbdf75e77ff5269ab3f7ac53d8f5e71ff02e92a73ffbde2de27737eefbdf7de7befbd58d52baeab73eadc7677777777777777f76ef7923fedaeeeb59bb3ee1d8e5ee6dafdfee84e84e62053872b7957aa3d0d4389ebc252480a47263ed99febeeeeee9ebddabeabb4e65b1b06f77ba9bbd3c673f36f22d0ff06ff25d776239729fd9a69f5b6f7a9fbc5f5c7fbf3da4b43759f1e159246d775f767487a8ab99ff3edd7dfe6df30bf542a954a254a873ccf6d9b73dbe67c8f7edb8fd65abbcd896b7a353fd5abf9a470fc3c41cfe37a35adb5d6d66cadb594526be98fd65a4b297dccd5ef6c38daa7f637fb37d8ffb1f6584a29f5da53dd76a6dc8f94526bffa7a710ee474a9bb316d75ecd9ff4e98f5c370ed94c7f723475041f1f9f26394c723a47bc529bc6bad93df47edd701090d2efaaf702e8fe0dd96e77bdfa0da1df5f7dff86f8d34f0033d3bf21cd9492a0faac79a8e6fa34b53311fa41f3e868a8664abf668a696ca06f9f560f01a5d92906267dfbbdc476b3877eaeb96b4ff5f6a3a386a19708d13cd499fe51a6b37b6cfdd17e67432290664b83eda19e21d377ea62743367b4e514e24fb3116944b5a6b346bb44ee1f65f27c3a5b967456d31fc0e97938529bef8fc84df6a76110ada9f1afb10985684d68657bdb0217bc00063160412549176745b557582cac0a6c16560bbb028bfb2d0aa68f119782e96304caa68f918a8ae963f4554c1fa3d595e953b14bcaf4c10bacd06fa3983e53a49c44a31d717b2a56a68f519562fa187925983e4629134c1fa39a134c1fa39c29a68f118f104c1f234e04d3c7081cc1f431529160fa183d14dbf7dbd8f4d9b04bcac542cc2072d8e522457b9ff42e9a12b9176206b1c32e2166104bd8453405174254ecb240110b8ca8b0c11547a24b8819c49897b249d95eca7671b5b7f4ae6a53d5ab787b79984afbb64f61d78e9d916077bf845d9396242a3c44eea56c2f257c008c25a4f86203a294ed05bfa89e4c952def324a89db972a0d76917e06e3f0f304551fc42e4a3391bd53d6381526c13ce81f27835da457610aa35d06a6bba8e4289655268a90834c219a01920000a0004316002030201a8c05535510abf514000c6a9a7a66541f4ba41ccd625021448c01020200002020106c62000fc30f09f7f8b772e5213d46283170154c961813b14c92c72e3b5500f58fee69aed566132c1a6642ddb4591ec0d82c0ce0b689ae02f6bed736e2ffee7bc3d6bd4b64887ca60617554501e9f9d9b157f26e16dee6f241f5308d6f30bb2020623739cf39067fe72f79e11fdd3a5956a9dce35e9c074c3a35c836da387f6f5ab4a6784c58b16eaa2fd760c76755b8600b5f82468dee413b55afc97b882f6fef194d6e40ab2c05a57903636e354d479fa581d1be86ec5b06731efadd34f16ff09a9e930f064decd147f547abef5d1d944dc5615a993605d0842a2910eda227b3d8de67b3d8a07e7d0668279cd961bae42d37efb0f1d89a53bfcf24b293e17296d9c96d9c5856dfdb0b6aaac472bc56c99def10f4187f5d277d7e8d401c6b036f4d6036046d339cd54d85661665d46a31205ddd8e05ee9403a69fbfd2570fb21c3b9306406358b41e6543a83c93e3405615a2a05b9628b0045c10687b9b84c389f8959474cab3e7cba92ae917965daa128ddf946cc7468072510c53bd99884e2a5942d6823c593de43fa6f4d6a1ede5731e37ab5adcc01fe34fbf97b6430a451a453776aad17fdcedc3ff967ebc9f65456fdf1209bca90185458f1f9e624e0060cd322c33ff30ee76516a456293c7d6262ba78f73254bc8fc2e600d3562b9b0969ca303b1d83a374059b6a282a20af291809e72b1d6d57a461b649afee460272f84f7293dbe53e3e2c121fa8c5b1931deff7c804b493901b16d59dbb00d64a95d58846603d002e59ff2a42ff3d0e5a37d7255a60689a483fa392a0b31acea6421ed894f3b771ea0fb503260bff551f580045a94436c5045171a5e75aa94c7d9a8d3330cdcb0d96de81e60a6cabc9ee6d34341978661f80ff365bb148dc2c5ee93af2c1368c686d6fa9caf84d0bdcf3d638462c5ecf58b1ee20747ef22b0faef74d7fc6c3e1102ce94802972c8245b44efd31c9d86393136dd71a53bc17acf6dba059e6d64effc576fe2d4c48b64315eca160d2d4a39f8ce3a230d6fec9a0999282330df053f486528c47f36827af1e020d4ce16accf61679e193b903cac5dcb14fc522a2ff1998651f6976a99ddc2ed930dfb83926ca5d9259bdea99015950ee4534cb0dac3a9350a9d31c285439db7e0e1188998ecab2f3a1c89c00afcc83670c1ab792faa7c06986f82fc8045564527705f07df24ef97a4a5847616aad30a77049a52ad0e70437948725a02c0f500a3073e08b3e1c0345ea244384d1163bf63c50380077c2758071827e7189815c77956b31ae09ce9f8702f88288926d0136fa4d018e5afd5fa73502534446205cf8a0d2af324bac6c9d6d5869d01caf2da1a3523821a509efe6e35de96298605cedc96262ddd27ea87da327e3930749ac312e11f19e4c1c4ea06323e2651b2ce7ec555bc0ad700a17ac90c4ef0e795fd5016c3e1bfb231e31aebb9d64d35339e3211c01979116ccd101407c37dca90fa0ae620f176a22449c18a3ab3513e2d174fb2f77f3b4559c6aba5378d1b424039c9392767c45a5662a488ebb854fe2d0972ec99ae9c18967506122312f26bbde48c816bb859db5e50a4b9053bbe9803cd5567263fd160cbb803a4454f77e8ea51f5598d0d4d70b4de0da623466f8f577a82e46d7e7fc46cea975a20f31c610ec218fd51f7c25b5581edaa108a6abe86af8fd12052eae36242180f10a0cea5ee2b911928fb87183d9474fc8531c84cd62bca6ba322f7e2910aec312dd296ae51819af3ac44f6c2cee3047c99b6d41e8ab8de90b4d94c502bb2b14baeed5489ac01294858020a5be99bb162de99fc8cd01ec6f8e11482b081daa79a18312c2973b1274045f123173e2024f49858ab8c56ef3e4eaf2df301de7803be7fe543e0644228c22f3ea1a7a6ba682f0ff298954083ebc1f4c4eac1f4c64dffcfcaa10db2a4b8cafa443a33ffbea2aa9fd07ffec4cebc8a79ea3f112039f517a463b4633142d546c5c7d9f419b2fc08bd0a8f53552d87cdad41c74220c47ee731ad72e41097b18bb372de56bb7106111a41558f5c9088539c3fe2d72829d85dfe4c8c43fd6f151f5ad4f7cab30d28aa7ead512fbee3259f18c16b604448e962275b7dc49e07dec589904bf6e30cb756510ef2ab70c84f2c36d772116797292a8b937a51de267156fd372e5825500ef4d3abd56f640fd580a6d973e4f0b399d4c88c0422e3d31982d44bde5f47c69d9c1a6719e4f1c4422b4c31b926c24d2ce2c6485621a7f021533e65a004e90330a2188bb2024a2f2936569894fad95db33a02a1e44b051f36c6bac69ed0cd3ffd6fd7df949edff82a7c5d0424d49384c75a7c8d65b7a6d761710ba1ce905f533ea045fb0e994fa32fb732444d69081f8c4a48b28fc475e45df888015dbd04c476412da8a2802f85782e96306ae3aec55deb370c9412def7e1a2803d14f19f30b469af87fc8ed8ae75fe91424b0d24b5dec3299481e63a9566ffaa97b75dd0cb02110816180533a72b203c1102edc3dd49b1f1f2c32682b7ff843fcf945ea195e53c502a89c897a93e9d6945d0bee95530794d639dd00fffd11b16405e400ee604b61f4c00bc0d56e1c21e33bd7d528ecee40a2cfeeb16fd80dc5f4219054215f0843278fb39bd59e1c0232a9c181408b1a7cde83e48608c03a59efd2ff0b089726420d93aaa8c98637fcedc0bec0bae3db2b785dbde2a6fef56bd0fdd593859ca22d60df570dfe8d313c33438e5834ceff37c9cb8f0c68d36ff6fec62677da38b7583e994f2228ad2897a05f7e86b473f1a6b1e6d8196bcfb547788088ff4d087727f1f087c42e5911ed5ce7a0032426fb1d568e5f7b2f762f5b2ad37d0efc5a613a38710bcca0037ce86838c030935e67ba6f50f216dc20ce5b0b87de17ffe64f9b7969d381a5dc37f9928d7d8ff3e2c78eca574ed2b9c283f561cc87673ae4473728849b737a737814e1533e1fe3ecd6d5d606a277d811859eae81c101cdee7ec8d69bc5ecbf8d707cfea4027379c4757ea7b94a2e4b84c8aa5f17db4f0fe1f665c91684a8e8f5f95c52281560e2f43100eecc4545d44f7b6ab3718ca736ca0cf1dad2598072bea1873384baa930a0c26d5378995f16077a7910aed0a307d31a968113a5851a6f12ede9065311ccc45c0933970956a23193ead2ab1ffde0b09852c4c9321045659763e16a1cda4f87e2d529bef6ebaa21370d059ccbfd57b62baad54105214e1b69c4a1095c5e640d7da73b3ca4746b1a0cb16e094e23e421296a3305164cc9a49ef64e91f68a7644e66f8a314edce8372847eae1e432e6a8ff54f3f46e2f7fc12c6864969941958e6bb30e55ed3fa4f6f3fb0eb0ce19267788d5f95fb73f50fe73b0ce36a6cd702d200ea1d0e46fc7c89c97002a3f351250d32e2dca2b68c4e522171d1a10121179140ae59af7c10719e787f034d2e1d2a536c21bbf9bf12669b025c6d52e7225bc1734cb11f9b68af2aebf172e31a4c9d8bc38ff806b1290fb2aa8c3638bd33e24121332f5aadcb2ccb531f03f0f60bde9a0394d84733dd4bbe73dffac03f691603f7d3a68162ebda0d799bf5b175a0f3f49d67dbc17f4b0756da3a3238054ab093da7dcb33540a4ba60f8f52c62e44d79a4c2be05e723812f5241b6faa152289559b6ee29b9c48785c3880c62b6d8bee204913e06f469a827912f2148410ae4b66e8da13a5c9e7b6aa96fee41ea1ba32bfff7257e3529aa672a889e2f85ebbd2ceebe796f9e6eedd65a121640ed067dc21757d4d98e8da7bc39afabebf41934a28b8376b579ba651cf1f142040697431518f6ba0effb2d404919142a18750ce7fdae989c427eae6f366968699628868ecd4562536a663e9550e30d41835269040216ab80f0eed10b3401f488de88d0e25e6bab28c6bb47b34b07d565521bbe350d42a357eee9425908e826649df849e58fd802794128a1831a95c1de9f7f3a07611f7083466a4a8ff047aa87235857f91852980f478b44643cece42488f7bb021bd169dfb4dfef3750ffa95e52ddfa81ddfedd24fa375af60311eee518dac6a311457fe36256fbb084e8938fba55938e8dd7bf4616507beef575957acd397f85fa0e264f06f438d324e7c29534070105581a9b504af4f7252b75ee73df01e17cef6b83b4ba04de76a6eb4bbcd20f1ddad3d60a7129460aee7f6325b5f282e0c692d67e87dcccbb2f7d1f6a941d99558f87f252ebaf28ae7df212055ba1ab39695f8f75348443c5ba95cef9df961d39cafb59eca0b6e1f71371491d54b5d02c42838c70f455fd6d9162c3db0569d6f4caa3620b587a9416bd3d74e98446f172d8c9bae41ba1383732a52f1ba408574c6e57ed9d98ac22e8c284f6bedfe6c573968cc996c892e95d91bf33e82c5438269072220d99618ee7bad0b853da87ded75ed7cd37d3e40d18fa4ee89a7d5350b423e5ff4398d9e3954d38237e5a82d721d32a8b809861a303635853321201d01f221b0ba1d847ce660d2d8ac86a98ff37f0aa41e782a1c642dcdd5de8d42d02d9da9d50c7b561b904139b87979635cefddcc5ee70106406f22a0dcab33752cfc705269f0d5e224a88d350f28417f33ec6516da09b40bf4629bdb291060029cfd2a07b0dd8df08c0b4427a0905616a23e6512c21eabe7495996cef9d175a40003fe0b08f2f2bb75e04ba02579dc16314993d52f44463f7dbd2d6382fa04876431d770fa08668c90feee81fc9123d5cfd8d36c6109d678ca4c9f543b227e236ed17e5769969e153f6588cb75b5494b8b8c7ac68066d9ffd757ca6b6c407d493f08b36afedbc958d894f8d150a0cf06288351da83d9ccecd42b62c61369f764fe42515d3088826854d2154795b52b594930b365a3cff466bc3b780c495e34e34e96f07add1d9436ed5675c66a5579386f580242c105c465b978e04d91178e6abc78b2fbd224cf214a151ac85a9fc931c05ae25454e13863ab1c7d164fa0f30f14b0c6ce00ca9449a5aef3022b476a431f05f9aacd7e038f5d8e1b128337b2c2fb3a828bfd07c63d78377fa784e168de8226fa3f2aaab972e3b054d2bcb32bd738c7225d9d57948059f6957456b1afa5a4c2aacea406706f0b8ca311ed62f02dda28d524661d805c095319aa1affd2217bd7004caa605921f4769faa36d5600d0d8ae1de4d41802a565ba61fbd50da73dc9fe82462bd914be0a8053638deeae4829d73a4c32c784941b1601ab30b3c66d8f061111430c43c95f9bfa98ddc812dd63ace89fb4ac7be7f47aef28e8a647360f428f96b57877c3f62fbb9d0feb78d68739a05a550d84ad3c53fdd7d709323cea9c849aed70807e7c75477795f4a92345f5ab979a239c9415e26e4572f1f9debe502e2ea6f5254a31878a8b06f61e9130636d8803cd6c8d92690eccc7cb861f6c90520ce7ae8bde5316801a211504e526cb71bd9d348314b9f2879b50ee8e198625282c18e26cb7fb0eab14992822a9da9231b5a6f19d1756d66043a0a2f426e346a5f2fb9e50a9d61712ba4a1ddf216b7c21475a0bf4f7769e0667da429fa46ef8e0778f07a8f494a70a80e6b42385daaf461f8a7444d3898c8784cc4441a65e8bc4de7c212d140daaaf698af9b220930063298127a2982ec6441a1d63e00f247b8ab62f9f5df49a00a39e222be866cb5df23a6d80e44178f52abfc8396ddb71e574c9c6a230b8959f2af85ac0aaba6e681a8b4a8de88532bf7c50524779c3c3054dc660a38ff0ede4fe513d7f71208f90ae9e5c1fbc8360bdb09ed353ceac933004a9253abbd76caa360ec8f1b0c89c167baf3bd496b9e20198f9a509a7574456637182689bade5a848a7e8466d5f002b06945e2bf4cdb5f4eec95af4f672a71bd6a7f04628559d5d9fdc42558702466b38ca51a10271d554dd0e4dd5aadd0f868b2950691080201460e3d442a264dc382495a6c7441cec29ef226ff04a2aeff27a749cb3aaf5a94ed2a65cf1a70ebb8a5310cde5eb3e7517ac1444756da8c1548a8f6bc136665e7daa303b66fc6242add0108bb6222d94d01b835241201fafc4e05842608b08e76adb447112b6bdeaf785ec54a9736373a8b9a14c0e47e2c15b2344c51a568fec3daa90b9be1e3da6944860db9bd8ecf416e58cb85d64a48bc373d043cb00819d4671e9b38a56ca5315d7f24f6e1f0ed6bc51ce230564ceeab26588422efa96db18bc8049ff40b4a8d7dd2face06c16a7a2589dac5e31bd919b188e4ee2454e015799ef7c900867085aa15ec545aec8670efa91064df376f26e247ae6f453fad269fdc5be004ec7dd6d75d02cbc11fa43667fa6b50d2d200d88323ab90dcb287c3506929e7321c238ce5eea6ce81c743955be42de9b898e7e7524fc84ec344ed33a3ea9c689c61ba7c297898ce46734d438e9f971943b30a16f9c92d0485519aaa5f057404c6fca1f823199e457b46def1ca182138e8baae654a5e4bdcab984235a1be231a58f94cfb079a4fd0897f92189a804797c4a9de58c3d4fcb32b1c4a9f222099c4aaa2d868b9e9acb7144698987772e92ff5c855bf773a03cb19f74912c7027f22716de829b94ff7fbbf14a0c657fb144fbb67614b78114ca99081048d991b147508cd922c7076b56b62bb20f0c5e9bb28a588d094df6b2cb46f26cf5ae766c24645c56bfd26e805f8f8f867e30037fb09ba805b88a9c69800b00281aaf089652f29000ec7f26ee03984f0bcfa9f561adff6043a1c453c886812d8b471b7967697fc65d99382fd477aba9adeac8395677d5ec3afa17053cc6ccca716b94c80b573acdfcf8a3adcc4897802881817bb3868e612ba1e98efd2b197ada716d00be87bdaad70010a36709c10213ed446682fc510528351b54622ca8a201660abb097c5b56fcae22aecc478ef3b59b24617dff16219c822dfa391a9666bed538fea0528b2697e1a4f073b67466f4f51c05a400eba04d53a65239352bc0a46689ed14004019b744a7ed98804fdbcaf747eb2366b9f2a70648ebf7e311a4fb18f69deb511e0192a73f08207822d4fa537f5e2d3fd3f4b7e3cea039a75d078e915d06a7db7656991539f22f5bb5af6e67ea3e90470b497fdfffbb087e4b30a71a3e77e49f141fe73765c8ea104bd778ae4e0dd2ff2d79d3ba90b1886a04fc114b13b5c839b03a5a054810fba943be499a59639ec27e6303bbb934c26468ede63d1e20a7124013151a376e0fc935bc2ea74da73f269277c1b96978aae2d9d8ff88c851ecacc38a58b3db3c01b6edec6f9148540ad0c6cc36e138177527dce8f8e204d92c1e8a0f73651629c2126e94aac284cc80995256f0f1d0bebf303a7c103cafd7453b518ad1c0a9d84a1f7eaee39405e387157f2f78829f3288cae26c0c4ea278a2189986fb5a2219de6079d7340a710d351e48bc73821070a1a8349784c69cb12f450feb139e8c57f6a7d0b71fce30c41e4e874dc35276a700cd0d607328d099f71ffa5271ffaf481632e6c540a04b9bd6c52bacce6627db26203f6d442a6f2b0eff173b3d571ad71659a259266bcf7dbe65b9466083a3a44ba05ee072f83cb07feb086bd856e90f1968b04c3818be926dbf33177550f3b7b331cdfe260eeaffe27c347b6ef132670d5cd09b774abd7d507410460033f51e31702817ec82a2b2ef07bcc685deba0139a4982ef8f6624fb7f0f9dd45d32aadf35c83cf088047dd0de4900492e433ba64a1f51b2ba6136af69c5a5ebe2a06133b740479046cd5da9df07b9f5c8030cc7c264c0ff41313478c3975ee107ced60d687207459e678499583b943556ac08fb8d815049475500922aa01875d7fe67d245082a512b74278dfb98c9c89de1b4bb4ae44efa2a6ca3e40735df6406ee0e962810c76cdb06988e325dcf716c4f441a819706f4ee3afd5802b02d97204f97f907f1c1c6810ada2794223a0d984f5d06358a405ade5e7fabf51752e913db13a874a266c3a59f1c6d8ba684e8846310347c754cab7149778b9222400c5df21ac9334c9ea1f1600fdd8576ac4be54e6876e27abf93721e0d111782941f946c0b884d9ccfbd0746a8d99003bbe14a9b26a397062925b19c32381374d564082da30fcb7ba69cc875e44cf42d7ab2bb3b8c5450f7fea8162a863079acec930dc9e721106718250d62f8870993b064203795c7fc8bdb21b69378afea5d1fca4cc4be32998d39aeb9a20eda826d22b5e088626eed7cac7ba1573ea17d3585b5a4545d9ce0a3112c860179306910759cb9facc30625dd6c705886d4ff20e263cef2e5efbbc1c7d96756cadf8131b740c68eb1144c72cfbc84a6febb44e6d75210eb2ec5171a39a4fb7a6d30eba5275f63e0771c402d4eb2771d379fabdf289b93e8e517453e3a8b7e4ab59ea9c1806ebd6633d9b5edddae1c7bf74f0adce3db491ac37ad2fc6265d56e4d8c5c03cd389d64fb7aa72e7079428c3a13b8faadb9263a33dc7406fb4f160bb718fdd0fb96e556e48b21a9babc9a95581070d857c0394acdcb2b56bba410946d19c064dcd47f834eab04d179b516802664225008980648424f1bf1b6f0989dfd531176adfc73c891fc69eba5b40419cc180749b652e8ca052b5ef8dd48070b8dc41fd4894876a2039634fe14f8e41b3ec748761b5dab84052b9244b155b89974113f18590f5e52497209b5aacfd2fe7815d84b9a967321076aeb97b9fa4d17da2981451bb2cbda73f965f34e3a38a0a8a2b594857b7dc364cfd7c8f913e996c01aa2c490b730fee2effd143ba217b1887ef3cf65b7675f7a2c89307bd1827cbb851e1631d0c38bd1c97debc2c7019c2a7f372fbc63c6e7bbe643640197e633281c2dd91846bf52b95053aabe3840cf684709df8fa288af2961253b52cefc5451907f01cb70a29acc2a26eaafa2df20180582a838ad5ef163734849edfcbf5c4a9ce8181b9f5311618e1c0fb8913471c14aee9942b0cae5d701d24ae40d35805ce06b644c44aafcf827bf59b0b1057449da27a895ab16c2203a5c10f8980b56ec2f73f1455f2513e28001e8d1fe14f43bc34d37f6e260fae20330ec0e114c1c3d4891ae6e4d5ab15141eaaf8de9de03833eb4856e2c513f97e29070ef2de312a4560f400597642408e6beb1d3746bf4bad488bd946253b7bf29d5d27777612c7b82272eddd8d0a93c37b6d276af528f5e77099722ad5a142c648ba7458f1519c91c2bc597ec41cf2ffeda7472db597e653394d23dcb0757a59aaa211d574b44472d734d9ef650fa04443d130bf269c6bbb6ebd49e2927519fd7b7304dab46ac1ec501ee979de175aa9242d15cf85675eaa6353020fa750a5bbcea78a764e2d0b6b297154068f322b193e258147b947171dd4b586d9215983f05eb4b49b73679d182c5d663e3f3f5d33693901dd101a49e076b715c8dd9ae0c7f21528bbbf6e830151c46818efbeba24c24e81937e6a85d98ef90a9517ee89c8206193015f9cca5e2df1b4b9b999eea5da06d1aadaa9b897f2c5901748366099b6428142c7c3bedd262141cd67d80281142fb3708da5a64393226b8f317896bb0ca5628deb999e5719d4bcf5390a08f163b47df116e25e4d35b46b2b668faf7674bdb2e238b7185e71269992540a1b4f955785bf8519641a7ec2abcf83a86175fd38ba08dd40c945d3803cee25dc4f577df8d3f6900198d02f06d0e13504560254cf08fb0f80b7a99e3876d22004b5d7a101ccfed0225d02d4ca048fc8e0169f6040498f49ac0114e62ea0928cca02b65a698ac3a61824ab83c07afd6afdc2d5a43d10328f71d56738f01994b023b475ffb4acd59eac5c248d71a87fa691cd00314b6077a0a5913ee06c586230893c3f23a97163639bdb4734584e016e2658daae23346c65b3f457da5284eadcf292d270615bfedaa90d1b0cf10866e36c6cc85bb08a5574223397f40ed2df6a54b0fd9b4a8258c20d9924de7b8ec26df0285782278818485959d1c5a9cacbad171c2a798963962a952af62b713066a90de07f1840501cbfd297bf303c81f304c57ccc54747e41cdbd4a86c5cec5e460664afc7d800064e21d043e4986c0a8b0e4bebbaafd20df5eb884915e48ff1949e5cf1129b98499a5a0f7e65e0e3e20e4ca58568bc42ce448b89406de1ba25b54203b147e689df31ad80e99201bb2113944e048ace0e684d68de8c93d63e1e81065c4f8c920bbc00b6a2039f05d4350619379bdd2a07bf61713b0554563dc2c0ad6832b2e4cba12cc3930fd70266c385df0d293d4d6f3fc5a241d315a65d6110969540218fef38b83a4f5e1a515904e36e76667abe78427f9fa4d1a775ac14be211cdf309412b658cae0cb24b14ff1ed66ca9c4a0964ff74a075a6b5b76fe8deeb25b599d888822105518ec402dcec672a86c6f05cdca9a18aaf971985b68c97a0315f839b105183537697241dfd3cef63488e9e0208d2c76e7c59d699f9481b2af2d3a4db7b8f1520e1eb7f085b2132fc64a382dd1126e981d7fbe3178279f87626576f904551f2f9f2c028bd51effdaf5b5208da8380c3355dbb4d670455975cf222373748205835dca2b1eddc3dbb391c833a3b0b909039b3c3ca58b36545e5ef211f875dda2c91c1ccd8df260d23c38156aa2838e8e93985444ff4b774c8ab87f010de4a71cd4ab3c1b17ac6f1f88db7f54eeef85cfb09cf357e9498c4f463298fbefa6d624996d6bb2945682977106f92d7e67767566efe3dc4206ce24aa6614dfe3b20c0c941c47d6eb208caaee1b9661b98cab646962705a0d2b8510cb7a0912bfd4ff68b021e4a2a2f2b5119d325633481281c426aeaad0f108f532e1923fa4a9e1905e4895c3b38e8da2f501211a35e36b68ebc6a667e3cc292ea2c9b8eeb6b66febcbfdc26f27ce9cfbbba8fc10e1707d9e9e890eb7690c391e1ada6c26fef0da4296be9d057428ab4722d340494c3d8569af82527a1f3bb7f2544d165fd45eec8c70fd4ce9a7e976e8413a8cadebe35115118808770613337851bf29047501ec6d0e07f4efab077c09c549186cb9f40128920913278c28a0dc26ebd8a586d96d955411c0e2173e16dd4ddc114fff94f6f9b9005ebcf56e8054ca9e1228aaa557d04d2850ffa0adfe28748d274928a3da3639b10f7e54839eedfcfbc815c0f68e81f3ae0ee944b8cc2e292dd977db89d2f46907bbe3e1b108971213433fb13868c6222ae86bf152155db3a6eecc5ba1a56e0bdd3c0bcb1a224ab24333952c1b99db26abb24118eabc3cf8012170bf877dac223916cec07adae5b029da67f91857cfe282da2000de1c74e922a4e09548c6a26a23db90096237d3395e8d0cd34a0c4221d9840cb4d4bff48343f3ab2d88e4e2d4241327f731335e041ad73256a5ea39d1ec03c06d81f35cadc49e5b27d626a2a0515dd561b0237ee121f402f4ce4041e2cd6da24112fd107ebee0b77277d1f4b26f97a3c948569586d20affc32052f56451c1a4eaac2925a7f031b7e41e8235dbfb8ab5d32647e4f594c226d2205a0f57080f00d3cb2dff4aa2ba0703de008c84dde901bdb25b254918d3d6f1d4b55bc5dce692715c8a934c0884333b325a2c8f0875374e8021b034ab8f8182669b896619ef9ccf28d0dc1c464420391f4c44dc0a33eefba10a65171cea7f72146ebf9b494f3edacef9962829ea63e06e176f729c14738ebc0504c53aa95b73735b14f84c14adb291076a36b3bc07a25ae644bec1ca5410e9b7bbe42d162e861dec3d362b4465215be93f96bf2288a8fecb8d4e596d99358653930ecf124d3ec373a3989d84cbe3533a1b5f90a734b57bdb7a6737b8f758cd751bdc939f30c68006d51cd71c8103d201e48970c7a552b42b3ffc34728953831095a712cc3f82c50681f0c9ee6259dba6596e71e6951683ef2d7eda2b699a01eeab48b961fbccebddd3a2f72caa00d0d6a766a8e64a6f052cc0815515c95ce6b0a0a063e6d489ee4aae82f155679cdf8b60460309e95352c04e8f0026e1a7a8f96b393599e49a9dbfc4a833a500c66232ba4f55f84177e936f4d02e5040cca086c5717b66d52231ea54233c17f02047da19a139065a4f0c642f5add2611590d923e886754df6b657b26463d001a50059c0540152406c55bde2e6d66dc83e47f6ed7800af950e235080b1e9dc689a9bd4939056e3c5c08a60409fee294c442dcec5894c6959ecd4ae1de176d8c82e706d378b02aa758ab8d03949b4aa1942b264152ed7f45c246cf111365d8dd984ad0c5b3210c86b5db647991d4750b4c5178316eb006582ed26f1172c2312cbf9e7d1fff0f2b2c827ade88144378f02357987a0bee94c8983149f3afb2a624c2b19cb22c18e93c95498c0241bc9aa5463b8793d1eabe7d7e11d34c592a1f529fe0313857af97a384a0b0dcbe0ef91f25b6b54d8f3ae45dfd85751ea5da71ce604902a610ad438317f71853561ab2bf1b100978b1bf313bc4437f5b27448a7c951cd378f8fc5085e4a440a214bd71622920ce014e6741fccb47537dd0120e9d6e9aaf94970395421c8ad3efa796af6fa22ab6c588fb2aa8a83ab8a53e4b30354076d9a3e924d258be9dc0e5958492d80ad3501938bf56b83b3a97888c572063d60875a2905e9ffc1c9849218cfdd1f5b2607a05f7b9feed07c0c0fef6f0c90389e154e9b0b19cceab5837723b77acc78d5130f5514e78f9cfb1ee56ff8c6e893f18702ede77113c55acdf19914639dea2f2bb825cf8a9fba46f2ee8368e94284b14a18864c913084182676ed66a3ee8f88faac887c096a842453da3a73d90e5b41306bdb3eb97a035d198964ec8041b860664d11917488ae2d58833d951030989b622110833cfd29d097a42cfef3ec34e1e1aa9869e339facd9041a8adda23f49cbb04b9e630942914fd63a74ac94a6d6d1eab278fcbcbd8ae32a14fc012252371d4901f40a912c6526b37c43812964732dc61174f9a317b247ccdd7a50f7696d5a52bc0a2294855d17c53f8f4b53581cad1525c5248946ff49c56c614bfad52f4af886249ee369db7b53b6227b60a212ae7760f9b6c44be58de27bd68956e6ade2a882d592d9fed9367e916af3c3ed3786875b1149b7d21986c63469020da0db4ae50ab209710b21a9766757aedee812868a81392c08a3e2fac37ca095c77e794159a2d1442f8d2bf21040962fa9ae72eedd70a94bea87387353ecde03b8bb905afa6625dfd38f3b3acc38637f4a41b803d8a539b1cb66ac2d1791278b4894ac74b1f668a232430e635c1a83c7102c7aadba209f7ee357fe7510859529e4b6beb955f26c57c7448704133f8a55e014a65fab665c5ad2881275bc6baf06f678015c7807d20a7b49ba87001349564afe31587693f34acf33f4cce38855603a24a1e7657d3f4cd0c324152d0b2531d49edf712c5a626b6f3965fc8e23fd16a5a2b8187e8ed9dd7a96f018289d9d8e5f00cdd49f95a79687c69c73aa7198aef609b9a371a4eee99196ef93e3c6e212e46fb37990e27cd9af2c8ec4c31be4f4d9228fac5f0c8fce625d5ce5e3f05d94cfe7cff8f24f139c5a0b6586d25a4e068c9aca9a804c6770be024e417ccfb9690006680431fab15117f66f3dd39e8937e05b72a08be93cdcc9274e687ef2078cfb2c5fe149701b4b62880e53182ae57a12422c0cd90d345f2737b4370a03a8869c4acd9202b426a26255114119449cd99b2c21ad5f29e9d6dc869498481191c843b1b856319fc565ed649896dcb13b4b644063a1037b9efbb02bdd341b51644d6e4fbb9603b7462f5803aac91b45e7254be20da5042cb2bc009887d864c9b9a7e182046e85d52ba7656ed4493eb49ce3c086527971256bc9536af9b248834f1d47bf275619625c28407eae14d261fec9ab8387d517c37a883703628097779c95c34021949d2d3bfee63acb6dedb89402e44a9d9c8b08429e15e0ef84c3f5977ebce8c136bc322471060a9c25a603d560433f3dcdf98c094f722ee2f58158f5a945a3ef4e1363ef7759be5d5d449091ed74939a635d8ab74feb90b7b28efa2231b7e1c5de280bd87007deedc284de6535d1fc96da948336f0af26e5c3de19c4389247feed59324244840069cfb6fbf7319c4a3a0c46789406a36c0aa31fe3f3ec57e4502a7945294b74e0d0d4ed35f59fbdc9f6f7cd5714c979074aaa50cdba4a8cea679ca467eecc3200a51dbf947bea22d4dd515fd4ec6eec3a60108dcb0927880d39f59a59271c1cfcbb7a5b46e460f5b5309a4cc375e1358764ef0b7931fc0d813ab925a3e544069c8a21c1cf3037df1d5a66032a76cca5ecaf2cc403d2a4894005853188cd472d867cb466e860e5b4c31cbd03a087405b051b7271aa695cb2f2392817ae4bead2da458de400cd043d0a36caf90abe70e1453a3c220b639016b9420ee47464a20353a40765da5de64b033edb81a07b21608d91881efef5c61715243adff81f83045d0431f2bbf2c1980fed399c8ecd0f22263c9520de4d86d102b466429e2945b8b44ce8af95c44e02c2e838b25dce7a2a5c776b5b82e1f613fca0d75fde143b9c0f70a3b30d330b64c89729dc07329e806c90ec7eb4f5f45522f66ddbb243bde6776b5ae77f1e9e2253657ab98650c177d51915eed702f18c4324d3051d7315f9b28915e1d9ccd92f9d22488f592c4faeb4539011d8212a6186d5d6c69c534cafb13f62ec6dd959db897c7ee12ca7c91bc452db1ce99841e9dcaab6a0076cd2c179c5c1866b5812f88fde2ae6142e580e9173d8a79e109cc79d4f4835f5ff06a95550e882210ae319be0e5f7a55b22205434d6749f58bc42e2cb77bf99bc94c4efc471574137d2c9b14ff8aa3326d72edeb5bca67c255ce22981516b8a41043fb7cb780e70fdd8a577d131fb0d14b6cbf5fe7399c48aa70b1d745011ffee6f46de9da69e550c42b13ca1d8205ba9e98a4fab333eddb44d8c57fbd3f90dbf54e7bf52f7eef23ee6b76404e5eaaa23c51e42ca612517f62e5b3bd6b543167212d54cb5a5c61adcaabbb85f9457377905d73b653f544c732c811d8479760d568b65bbeba585db255bef52c508e8cd6e36f5f23e79aa2761cf14b7d3312568ef52e1171da26339a9882442d4e28a62a3de2548486297d7fa45b7e6de2a7d088b23ab14fe6c976be77a0abcdfcee29448aaa385a859b9181abae63699d1bafc352a664fbc51b58c1f0e739a70503dd1f1b2d2cec490715f91df5604995e972068f50041331fc42b6a2d1e27e23b7bf89d28fa621a5974780d3a34af33690c57d5bfa14900da1904c6daee6963236e926f254f9403e7dacfc3473c1474323e769f19906875ac2e364aaebd60b41a7e57005b34139096dd385ed814e97a8e743d536fd5c50534c4d3b0adc9bd25fd3b24dc2a6da1d7ec1a81540e4c3eea27b1ff8b4278c316e41a00f1620791ab8f6dea0a5bc09e4094ccb208ee6fc2059ceb5ff311017a8935f455c0f0eec82d89aab872ce7d0883b250ebd861a4e8688966569fc6f24052d503f6eeb861d94a5fcbca7f206ec5f9129e9e671191fdb64036cc0d485ad61b951a2515c33218c7002ea139538b2a75b34638a9a7332ae5bdb64f5136a4606e69764147ae4c4afda64e8f606480d009e242893053496cc599900b6f4cd5c57e72ba4a3f8db7a1b6090e86b147a2c308704d80d9d77219a91665df762239c4b6697b87f709ad1d122ddeddb6c8bd79e21da835705a716278107061c3fb0785a1235458b6a36b88d0c945b476ca87c369af948f66b40428ac7e3766eff6ca8a99c9ae7cf1205cb8b9153509805862380f48246200d9f2d8e8b544ec2364af1419480c2d27c782aa6bb380a9a91d7011c1c78f214d4203585a1455bad0c21b54672da84c7feb14854b9641c0606c05bbe42a1818d363ab2e2323566a0a4a82ca73af988b3b472e4847d38ae0880b59cd538953a5eef2442dee106464394dc6569df6ca6a5662c61814a4fc5c6c6d78413f9da82164e4044b50c79b8f1dbacd81773335dd9d98ea609584a3961cd4788f3e121e2aaa006a7579aeff62c1d4d5bafda4009b6b0d2007c442a0bcd4f2ee067f94afc7bb5e7ee8241932499cab91b884dabe98ee41628860c88d9ce0f531e912fb2ab29bd85ece44c8c4999a135750ed8b76ffb56fe3065144696f6601c3a2f30ef257cd25d9d3f62d9015efe3464558da32359804bffcbcd0dbf403028a182aca7709f6db8831cb60459ec6b5aa8a761b496bd5c9aaa20b910b4e5db3fe1e4149d17d96e9b9543250a2300c0dc519e913e5bc2ede2ef381199b39b10e2482acc7c826cda4d8a754d936b13415154ff0a141ad9c6b0380a143858a476c8051aa78d936aa0937098d18d1a07e017a551202cb0ccd5fc7c0e971bfe4febb7771eef7df53bc9798ebce03314cc5e3da5831957d496d99e05703c0d0157121022b5c6dc34956351574ca7af0f7853900d62ca10ad8185280744501619dafd10f193ffff5a5e023b3af807aaf220657773790e29465fe88202e571123208f36397e1988f48e5971c51bfafa5da46e4d24838f95813bcfa8697487b3bed1b3a17a95dc412c6d691d70359900aa9d2824d70474c3a02660ac6a67e07584996a9a59aaf41a1827ebc78e8bafaa11a8a0b0a9c4603b097eea609e86fc537df7d52db31d5c54ec900758ecfc95feab6a3a293b14e8945880d88900502703f32671700830e85ebbc9ed094f277bf902f409adcd039c28ffef3f516a85eb7439bb40db6d651d7e116f08811beebb09815c7de33b526051a74c343ccc6b7cc28fdb53ae5bd150648c2673b109e88c32cde0e08c304061a23d052feb29813c679c2fef82f57bcfc7bb3d29afbd1cb1b410838c6cc9385a3fc6a75ae1c449e1fe868d160f080068cc8d8e46697c23120060907feef2c5d485be4b96a28c458cbb76a639953f3b49dd444c404be00382d89ca6f3036b434f96809479e04bafd2c9ef800341398f49ef26fe9ce6c4f003955c4141b6a8b2557ded7d2223c7414bc7e44e23f92a640f7af0dda4a36dfc130c207a89ef87c91e741202ffac6b993226d28b99f75721f0b123fba0525b52f39f53339ac3dfc2f3072dbcf1a485b71ac71dbee9bdea206d711e6707a3c2821d9babfc680b324c619f95e3211f289980f2e6f79bd044d963d9a36cf64ca4f9b5c08e10c440561e43464b5d52f0248067b79fd1fa9b28cf3d52db6c0e4effbdc1a1d9162326bea5160b90466e2665a030f3e55a06b9f4459ecec5d9e3791e5033145bf0f44148fd84eac66806269612a4b5eefc7acc126e6760387aa86b0947c50e0fe10557db5613c8a0ed9a8d2243f83ba4d444acb82359020fe7fe8f9b1b573d2f661fcd47cdeb236aadd99100024d1972b550ea184a3b237f64256462e3b48cfb2ff9fb831af2716301513e5e78ecc5c86d0cf05f504dfb24b0db08607d653ea31455a844fa12057e945643402d92d8c55a309f7610f49f5b3bf73cfe708c0e2cd405fc8071c7ac09f030875853a48ebcbf8be0a0e63ee236bf162a02b32b71b8d5eaa0eab46d97ab23b41e9e8964ce5f9804dfc8f514866e2566ead7945931d1389fd646c0db5fd6dcacd0d812475950e0066db69d2388401597f030537c897d1b88752416aa11294a8f8775621b977fd23f3ce624f9650c29c1af36e20e2d49b18d159fea57ba70e2c2c17ddf08b45826cb4ac4020dfa54ca13335087c254444232610597f2d22e8b22defeec49171c448b1fc0612969f77cec00f0687a7336991171ccf23724bc25b8fa531d0fd3eb5e6edfb41fd4fdec61aee0e4a8241c10c2d07572cc8dbc322098ebe4af47ab756888392c7b0a4136bebe3447a996ecc25b310c7127506701edd620893f1d5989301e9d33b2ee8ab82490cf4647c628230d365be5d1d69a00d4dd1995672d99277704bd1670d11d6838b5150f3e8f4ec85869d5f468c18acdc04ecdec9b7d64105f05ae5106e16518a5ceb5ea92bdc7d8a9936ac980358dda9609d825bf30ea4d6f565620cc9a2acad44ab870ddb95e91645b6116130da06fa68ecee5f97b515abda9b0a18595f415be17c5e3e3fee9c2cda1325a46ef5d10cbab82881942e081a14d312d09c8436064f4c663ad69ec995e286b0c5e839c11036ae2d88a0573fff1f514ede44493afc19ca0d4b343e37a39f53cc8994f9cf23fa14cda332ba14ef5045157e723e4f5901cba296920ef3852631c6d6685902a7ce7ec0e09017deca4a2e4d082505f085fa1e946b42ca6d16ec21e8cf15900c17161398825741765323b592098514531b1c8e43dd45281ffb2515a8274e6b47a204c6fb9f5197159c38b7b3a9443d849f4631807813fdab448996c04525f85a3e9fc0fc4bba01f10a02f49ba3702dea1352a66d87d3b7092dff0f614343a45740fa4c090d7baf96104ac40a98dc75075155a02867c3410652c05910152524d2db407ccecc00e25f97d2a1ebc139a83a76b0f123132a532193604b675a98a2481a0a543a215c43fc26c0f59445f8832ec7424940249e5c05ecf4d66860124f23ac97f7b96bee4fcc81bb61bc779b164193d895f9401a3bf1f72a2df5a494648f0d379007405a32a23d18a4bbb7a5dc0157e42dfbf0486434f945bb4da32e19a349a6fda7086933e5cc02021e9dac08fead4ad51bd84702d611730a976f8858cb802727b16733948e60ccb50ba458a01a87fb12182e14bdf0d768fe91c39e99b2921637c86b83fca622b66dc0182b48ef983f30d1133e360a2203eaa83bf2761e6db467e677b2188064176e7ec1b69d713d1f952b142b82bc8ca91f4dd5a7d5a6ffd8a9844914037670710151534a6b702b2ef6eacc3fb152c97963bf1e6c216e7e4c74d2669bdaf5f834bae833a36eda21b9da86210d321f39f44ecd8c35923d9d03d8f09fe438a5146e8fc6230a20e586f6d412df39c96081ec9a1d25a380b7fe5c8fff44003d3ef892b3390746a79033b46829353af387e3a45c3ba8460b4f098ac21a75297065d08577f6641c61726ace0e6276156f9bece2d9923df9100a12edd0989e11a92181f649c9f3f09829972233f63c79c6570aa41d10ab221418de06e0bf05212f220e0b5e3ea890791054b5ad5de9e19d1a47755ddd3ae0fba35f3a0694d2946ef7d8a18a30c21572865f0ce4788b1c82c6c654592c975e8354e06c67fc5fc9d475645bbfb6e5b8d971bd91bafb3c395dad59cce599fada312162b5aec6e6647ec3767b32c028b96f631bd53b667fd682776c7b6ee4a50fc1993611d333473b73e36ead1ad6789c5c43ccc4ad2c6dcf698582c8c43ad23dda8645a8b9e563bf64bbddffb11c3ab14c5558861e5bbc4e6286a1d5c0d7499d691e9cb765500a3a20bf4cdd81dffcd652cc5e0a245b499ed28ebd97eb613eb934db7262cbe4dc4508f1d1a7b4d7b64bfb1f5cc952d8f931823fbc3e4aa70aa91c230fb7bc7958713635b66f62394abaac9182e495796d98fa3fd74fb1bd894fd233e9ed3cd7ebb2508559bdc122a64abde15b68ed3d6e20ad0f426f3b685f04f075cb531a0ddd44e8cbb07ac90b8918b6832d9518667fe681756473bee4a58789a688bae1fec7cce4c83669edd17a489278a444e57b318eba5b083d06618bcd8a3c06fa6e5b44b0d1db0b27af2c26c2ab6b9d4cfb4bc7fefe0b63fa44c6650dd545ed935c6ee63b554de5bcb4d1484ed5d94a78b1c4675a2837f2a73df551d8e5030792a5a5916f09095e88ad96288a04f4c656b556173515a5413f96babe44d7fa3a6da920c6355cd0448f48f0c18ac80082e7156c5d2148a078a532bc9ea558dc004621d3c3685819d3a6729f63dbb5479f09dd5855c844aff746bf49b51abb7c4431db339d27e94a1b147b82aab635c4fe72d435534fc74939ad5b425837c48ac44a84dff942bde64580023e8d1e1c307e64e4e316d8eee542063e0c604184bfad04988b02490f6018d9dc48e32645ba035c915d147bae863732b0a075dab52c80acaf358798a079d59888cbaddea54d7e22235215c5553e5c116b35d457dfea08122a78b37666ea8042698f8780d00f468324833927c70ccb048facf98e284657008623ac392792905ababe60ae7e23f6140609a78dea1ab7dde0503146376057bac7b49fa395e8e7d2e84913fbe106f8c08003c09d428f43986ab6e2cfd92d2758acd7edb97f40f59281a0c55e8b7e4772665d3a05fd2541f8d88a668db4c1fa5ce77836d0c2fdf46328438620af31bc18666b7ba82ee2c0575faf074e5f21c3fec8fbff70c178ae6eb13afde888a36fcb071a51851dfc66bbf3fce56d23d0faa6665cc8300bdc0db3c8b7e4356abd58e462a4d23c66ee8691c288059ad9eb3464eb8998010c92a4cb119f77c6cda98265986f016d5f6ebe4252453f068866a6dcfd92d935525407f42c1b9c8dab2cbce8d200fed88edc8d65316899f09b06556370a7300ed58b36ab7741015f44893c6ad0de97e831773eab58a05b8339f10847070562c0893c96f18e2fd24d43c9ad799b2139860276abd9b71e8777b5266e2185d2fa1aa54d62760777d0b4d11e3bc7b856816240bfe571d4f17299a114c27a969bb0e6abf54b7923b41c00cfca96c0882521d3aaefb638e2eca2e04d351a93e71d7998ce1468dbddff0b96e594bc27d0b844d493837c3c7534b827f1dfb09690412249286d25deefd9d74e3b550536ee9ad7640ca814251f24c91652dcb37118e152e455e642c68f69856d808e92514875252a47da2bbe62402dfbf23343983301219731091a0c142982fdd8b38bf3158621f4cced469029f0e76a3960b9c4a6fc356031859e4dc998249665fde64a1d21e59505b926110c48c8323cbe6a7865531899fbe074a239fec1a067e2e55c514754efe1ff9084e724a3acb69933131ba58e3584303f3525c0568de010d2c8712eefd045c6e1a8e3f8e8fa468694caad25a3f4deacb0b559e0c3ade96774a9902bc7b72b58838d6103591cb8d8622c770a62f8c2b2497315b8e81431570ee022ef332f543c091bdcc0aa246a1f0585d5c4b53641d5c53efa46a7adc81a09e17a1a1b97e363deee58b47be1c119a38d238b2e9f9d34d99198b86efb75da26a013553718072cf2b051abe18b942c7dfcaa5edb911706ca203b476e5f07ea4034ee36885cc78e5f92dc2cb64444e6b0b98c0b24ff43659b67c3633275d668216f37c350b63e6b92b6b1d3098cd2e60ce44007848c43b535401843b443e4b073796fe4c0280435afd71256717a84e1f2870abc73fb59072c3b1e65678f009fb42bc0632c1343581992e27ced92fee1c09d7a73f397852f897d4e36105c09a8493172ee3cbfac01ab5ee6b8bfc51050ca86f19e1a2fd2c1560a29637e903be188603ef72f75b28f1f3d7ac5c365cb2c5d4a7978a28c55e86ce7af129fbdbf745b2bfe06761c9b05c3610f6f35f9e91cdb1168f98918a7b356b1f2901288c644b0823fa887d8c44340303598c060442d5a58891ea90de5380248d264f259b7399b7f41d0bc8455b20a7bb7453c1787d6003498c857b87abc8f4f8cac266194df79865fead317205ed6df2996c4ccdd39c2549e3b0c7c401cec3969489d4c774f4c046f391103ab270d8af4adcf0931fc5f449390a880e195f88fb9d28b01ca9b5ff4eb7741879739e9a1d62c9fe40c479bc9281a37a181a46cdc5bbf6d015bee3196d0d4c1efb99bfdd84103c5827b0cb3b46a9606b80b65d0a77c9ff220dd480b6fb161fc033746f57b1b6405d1edc7c95c9e3789aa79a74e6e995370c76ebcab9a73ecb86bb80afc8d1accf2bf7ff390817e94af23f9f83386325fcdd99791aec9993c3be078549ecb13b2cdc43eb3bccc91ee8434d7f457219e4ab3576c61c00173a1b68e415306571c15de464357f3210449dd0bbcce112e0e4f6cb72925f772d15e504606d9fa403d1dc58d441e6048c71bfe0cdc8f2526a7c47a18e94b4738004ec0cda7ddd22ddac92b6dcefce21971ea6ef58e38d5a0de35bf39a7d90200c4730c5af2f0f050917b94179ffec668925b8b557542d0fce8b5b4f4c6498a681561c025085e2c2a0410fbfcc6d8173cd206480ce7c967391fb3d78f9ddffd9f3497ee3349a97c807dc62531a1f4185bc32a677dcd683cb113b324605cf3ab4adfb7e5660a760f9c0c4f42ec41cd42b81b65226b5270a1b583b61ce640ada1c947414f3a231b36c32a601d440ecc264babf6d1e1f44e53ffa2c65be0caae00d64ead1b66d993d75d1fa6717c0315b3563a3bc571074bb941122950773c8f8d06d9e7da8545e58435621ee4b1db488e2d5423acc486570a7796a93ca39630288807b8e31eccd2a012e44b6513fb6a8ac2e9f372e500cacd8099980bc78353ab5a5e2210950d5d3a14f1b134e42c93283e58860d88822c10fe39ab051218f9e28614de1ee70470e814b794173a4f33203a16e86580e93b90e44fea8ee42471482f71d22930dcdefb872585cf97883180ba2147a215d6aa2c012d8d6d58d09a7ad5137be8e4e72807b4cf2baaa105450bc1af8914750220e1657011f44e437a8ac322ab8927b72fd75febcf244642684d56cb9d403aca4a133c4263070b731c315b47938d0023a35d1b883ec02976367172da45d5bdd25700cbbe53085de542adb3d31e604393fd265059a3801afdb384523510b12b3ef725664a802a431f2e6b3fb231c6e3fd0f4f3128248e9e2a0cc0aa4a3eedac3de3c4a810d61eca1a5ed1fa9fbc792c32131376cd0b5b25617acb21e77992c418352d668b5e3dc0414eea8180594d78192e2424a69592d08160a8a8c072251cac9908c99623b23c64c1c0fa08b15e9d546ef096af3bfd523c9b7b1238d24c71e2b9aa14226d698c6d3e36b6b6da875fc519d9055a4a41b47f48621e1526b14a1a95affb61644ea57f2b9c20fa42af13c9fc9a32df65ee9c1e87f50607422568b6df2b248e8f4f7d0fc9a828b61f47906c7ed74c2467c9e9f21bc09bdf261380fa2d6ae5997aa40b3dea2513d37bbd2e3d60c34796f814c68e6955e22d77ccda7e07447a595a4e76de1138c14b0cdb85df5ca54ac58ca62e420b58c08f8d001d4fc9c7fc85ee9ae73979d3df2e6d4d5ce0d47141f55be55c9941b3b447960631d106bb9df456f91fc4551e3bd2367cc4f5ac58d4af1891c103a3a668b4309b200ab9f191f6640a0a3ccf67d5da47f9345e2e02076b2fbe1b8a0a8f3f85ce67fa2f671f80c92bcbc895652c1310a91cd9886e7070d431a40bda83b9116e96fd7f46344a670752bcb99f0e7b3187a99ecf8e48e02a19a29d72c759c1c1fa6c03681a756c378bf1bc761ba48ba3e0a59ff5312ab6ac9d73f471bcd2af271488f9473aea8a32044a5462342e927aa1c5a6f58b449d672e2e1a54b2516693b3aa0fe2d009778348b8ef85044d8a1f00d416feca68de00894b477aa1e06ddbeb072d5a1e5a4223e372a7e7eeee2860ac0cff227505d6e559722b820eec31c59ce545cd2751300d797c645d0fe6318aebf9541673fc6312daf81787a0187b6321bb2423ba3e2499c81dc4a345da582d4836b793947410da375d3f6752be9b41e27c28da9a3c1153e7918daae5689ced25b09e107712458e9381dfaa07a9fa838e537626d5d8ef313c67b8ee3ea28bba9e5b004b2b38b2189df438ce1a4738e39996797859f3c24e74302d3923ea0a32c7f6bf25b25ac4c8f12d6375854326fe429b2e04f0544cac73e427dd387614a72fc849f74e70e41dbace5dada2ff20b02c2ecda6b7de44dab83906b70ee12528f982b97f22b8f876e4806cc8f1a4c5b01d141ee9727404be3b04655f17a5db6dd95c3a281875431045b1c75e97201b09e60c78d2406502a896b7ee2b140522000f0084585be405498febd069c37654d4569815e6efd892c61135c68876678361015b19e77a590cc1124a8042b7882c5f4b4d752fa79c21936d6d87c7c8cb0f5ff2dc3fc1f5d769a411e858c2f58ce48216d18897726b82f8946f93d53f707fae25d383bf31c2e26d68a22e31251129c18d1e38b2c106c70935864042a8e2800d10630f855943ceb727d911a06a4e48730642442f9fc331ceca2ba9b57fc4a8ce50db3465a0d7f363798e70e15a9d0f82cfbc7d04476bf714754af4fa514e6758dac14b309ed41769ff8a3154c60f101895f15a2724a856128af4a8d740285dc01af65f5ba96db46cc887320270239a3446cd181ac055ff459d3dc30953fdc90e1075657fbb1c8c9491517fc77fa81d47e07e3fce19998570ba399f86daec3c090a8ab3402a28017869f6366765a7dadecd78fff19ed24fa309f9f3e0444f5110afd98b647eee4e75a790ff798ae28810e3c88cd544985a62c3dcb637909018a9e786cad8e8daa386401eab7e7b7c5027f5e1b89085bccc5963626649faa520fb30832eae3da6f96cb5737339f33d66a09ac4bb60f96a1d5a953e41c8dae8df604e4547476b71d4376709a7223669a29893c89272efc81b9250166a53b5a38e0c45a5646dc140e9e7c256b22c9e651a6719628a056378e4733ec3d4f9824adfbbb4f7f3c87a4cb2b55bd306fe984598cd785c7925587c8bd2d6ee944a4a3044d7af0aca96278c75cc7f49ac376a1b9672bb3ea389da83487c07cad069166f5748650aae8e294e2a4e1456945dbda2877493d586b96494abb46f4654c918b629806b024000d35734df33c8506b51c7062910983f8c46e91d991626ea3cb7c600c530fdef7f220b81678f92deea97cb98dcaebec1630d969d052466a30a1700f18b1ec19eef27cb307d1049e0de7ccfc242116a12c3c8c9441718f10e02145f639a85db8df042a0c3a2be87053b38a88e0e9c7a432a412d4f2c52fdde1d925e818ee02f42d385117880b6e10b2b56e610244c4ef87097dfef70aef69731c0a1040973db0b4990d1373b2620ab135acf150b0225c6c318ed9053f5e026e311bd9d33ec14ac1813c939199dfffd06f4f591a287f548751367178769ee02be1f3011f22584d3154828d2ea285842415e3a64ed996f91e56fce55147323f110ac6226353076705d6c55786feb6e5e986bd672ebd47831c4451c14c309f320349cb85c68fe1487e96cfb8119dc554844623821b1009ab65da39c00f061e1ea88e1bc6c1665220ffe48504ed6a63dc56f3815c7aad0f772b0eeee02397842f33023c7063bc704007d9be7fd63bc0fc388dc40b33b023a0bff033dd1fc0c807ebb4f0c9eb385afb1a6cf5140bd1c5b0ac512c12197170a1235cfaeeb533f509ec31580898f594d346519ef639755625088bd78fd9536eac16c234f9e404cb55528ac33d51d5b8ff8d14127f6997bb5f4c29b79c9e87ac5d559266c59ad9342dde37b385350a815da4c33fd929051d7c8ac49934a52d4c2c2255aa791843b44d44128deb3f6b7285d14e51267972f2fe3d70a41127756a1dc71bca87d9152075c6bba7a051b7fa6a0a7fe4e81b007ec829a7e60405a346ee8ef4aee745e3430d57ed2eb56f5063e05c83c0bf7e35d9c48b4f20c9d9381f9116805110222b67ed3042f05f89b91659e453d0d73e9266581e2b12e51ab7530e6f10df0329787a9afb9543579dd4f9381945eaf33bfadb5122170e0ccf194a5e14f775dc20c8e1d244202222597c91b57c9ed129ca71288660cda95bebac7f6ac5acfa11d4172b556efe513b96e0f58e1eb9150fda2a70fa8520f588c160010ca2d14e8746712f73de3ec10638ea5cc5f593f76668cf0a30f803d1912fbcd7cd9aa0698069c760d8c7a06a39d1e67305504b0ee076b1458549a728cef848ac1b173cec47da92efd9225638cfb33fd9ed82dd49d8a0f0d60caf56a472d7dcc358fb5805f2d335ede924fe389710154abc104e2a7b8eab85ce5357d4dedac3eed6cffd3ab5ea5b8a57f76c0e6493f76e71fc370be44cdde6b17016c5c6cb2fc76c43788a7e84c248b62d53e2f05dec857f4751b4e8e05f53e5f1c180eccef8be2d1f73eee1bc2e43312d27ccb6daf2cbec169bc2d8a4ba9ac046203808e279da06c886a3b449344d9b8bfe1a37166efa668bda76334dfb5249ddda5d12b012a598c4a40280b6f08318b8fb2944449c3c11de1e67a26c179c041765c06bada6e0fff483155f08d48a89e0d458e45f38839710a9b74c69aa41fb9cb2ef4afcb6c1d75b14f913d3d28cf20fb9f74ba9d37c3da05c82ea55ba82997491c4af1a72a29729b035f4347e1d5b44900736c706d48dd494e2835cc1e053c6868521e01e89eea9c42db803d26870cc40d089a26fda1fa23901ffb4285a992454403f8d3a4037d0f8b4d026a092243eeb3e69bd04382fb733785688d8e5b97ec52e6155ce91169e07dc44ca32b97f7a5f97430997fcd151e8e038453b1f85e3d8dedb1e80deff2103f02e3a3b8475de077c581f3c27d116f7f681a5bbd193fe5635a1179666e5ab1cc1e807e25540c75d7f088019ec2c0bcc167ae3a043920ff3c92200fb86281d4b39fd4633955620deb7e31258a7ae84fbd9d840a2467d7e386c9c59e5cc27e83eaf34a696e279c5077368b439666872b2b850e3ba4f433f4ef5666f5e1fc136bab77e4ad183dfe06940513628371f606b6333508aaa229494291d7741f00b38b2c5bc334eaa11649d67d93e4b3a26d31f8270d58fc63c08677e94771b22bfd5fb8069876bea55bf25e00cadcbdcb4bd63f8a955b111b57527dc3959ca9fdf96138189e16b6b1a643b759b472087487b99c3708561ff718b234773f259ac3605eb48b491dfb410d0ea6b526571f23a88a10120a0d63c8bc39b59e382a6264a2319bf4b883cf653aa14e3439f71d1d1b7c95ff8b4f6838c1de63576ebb1558f6cf1509e65d48444249c5f4a93629a84e101662dd863243c88da55fd5528a1b406fcce08ad9fd28388e3a1db4514da93fc5540bbfd4b47bf4694353c7e004690962816c288dd524e2226eb44deb871d5dbc20fd0bb1e2723384e18e00cdb278342dbf24b998c01f840685c142f39639bf8e378b6ecdf1ef455e804ea0497805ccdc9cac7acdf5ef81ba70523d8b4707a31ebcf7197199c5ec54af2e4a6545c2997089d01b068188a829ce4a505afe62dab9c81b7cc8e9e9dc62593f9262ef2a342ffb13e35734fb166d31434d9f8183773122adad7b71b59aefc934f9c4d95c378caeccd475b38fed1d1dfc8c860563dfa22fbc9f8ecff3115e1ceb59c14ab00b1459a09e70fd608801c655d02137e3a27ba443d72042577304e0c2c3c382f2d65615bb9824712c466a7695952007f83c9e8f87046000b427948bd35bd9912bc8937edbf9622e8ebbd9c3a72031357ba70c2a89b6d3db86acf9856506d1edf92c39231654dcb0d4dede6a892bc7cf4743a1e8168585470d77352c02455e640088a0264afcfec7fe349af0da5ff0e7b4b8577b2e1a3fc40b655d9b3e2775f152ef084fa151eb57cbc25ff582e26f63fcf9ead16e721307bc18fecdd0393c8d43fd728e2c17ff8a67568fd984da42c4483d4f579c19e0712de8dce7e1f94e1cc53d8d5d68edf2158952d0a31b05cfdda9ada20a97f64c807ef8802605a7da04d3266c375c0975c6e0b1db440454bf10a81da1e89eda384b54f46c69b02579020cc5bc17d9bbfa39558eaeb35d0920057fd2d2ddba049087102b2029e16e5ac9312921b6732f90c88f57ca1d637950881d334a29dff015868ea4737f0e5d0d98231d47f8b65df1809027d67604df9065ebc77241dceeea211a3522e802366b7f9bd790aec9cbb7f6969acff45c7fd4b9b5be9f559603f6db8f5208cc3dd0fd946d46f3197f91514732285f2b92201c7e1e77d264633fb7e3ec4c1b9868ede48346949360034211be613a84fe474b9e9d8e24f5ab1c437b07adc2404c50e83563c20882c4dc38bbd0217f8908d44955c6c32c713262fd688039f453ef80ef7f610501bc97a38d8fecd96352ea8a1efc966d188486038db0da8b68bed980bce4962146155000253d48b9455fb2fc9a601b77b0ac2c8d55493210a10ee85be64752e1a11db6e275893e9d80136edc84be49311301445564b2cf67f27eebae53061c4750dcae803165606b75e46e4f0bb471b3daeab37be7d55e8e42a8c2dae56869e4f8134851c111d09495f2ce10b2da66b1676f40212cf607db6a0778c8c9b3b5ac2b9715535b4e22528367f01f224551a89a93b2faf404b900f9d00f495103c1b21c758e0105b3c3c01bdf91713cae3e957a4f14f583aea2921cdea58674288ff4385f28f45d1889031e3d34c6b36d5d52527b36485110337fbb22859036370fe2f0a1f9df5b3c9d75215e2d193f90bfe35d6b2429e384fc9437197a1852c41de48003ae28145c83360f041f3f08ce72530c43eaf73ca5dab0b83c4e837fa2e0b09f17a931dcf9c6e333d373be2a300fc8b84dc69ec74c04c777aa1e1afed4b3d303b962f83642469763cb8319e890376bd750993a81ada1f6c1464688712f318837be6486984b4f6cd0da9db33a07969a65f505ca9b8712066e44e95a9ee9097006bb6fc256b2d8829cdff213fec4515daa9a96a310d63d42bfcb20ff30bf4b1fa433916055ca02e56aa3f65f3f3d07dadb8c336b2ec8989e8d41555fad18138ffc2cb9f6ca7c14c4409e4b510aaee7fb7a6d68cce94eef0fbb1473d8fb760e4d0d061d9a05f262e4a08899b24f93467e70c90c1c4fa1df8ed1e172f5abb2716495c2c9c4ed3c1e4d5b227414f4372a5643ef44e1a5f425d47d326eb86e9f3b10ca2695fe8c959f024314b348c8f8742126705cd1929216619509ac90055046dd54db05d11b9b8d2cfc49671060980c3ca1996d02b8c7602da1fda6d5d4052324e07651195a169676229d67a82473b2d4e62f2ad0a61088e2f615d353cefd2cea4b22e1181756b449fed56f55cecbb0fc8be41a52fe0f631668eb001f5534bc11a4ff3aedd91897dfa8847f00df88f4bdadeddb6dc52a694a40c0907e506820651aad0729a028b32854a18a42ba7dc800339a032454c5d42860e11e33ec0748f1736ee21ea4125075178a590165f4c99dd51b4454622f0a4ece007d5d5c415f14a97142b5298d8a0460d2b30585d1bf8d270803b81bf96bb6ed0d9b4c2e75d29048691eb570a8181629e4d68d4f20b95da51ac1a052501440980f94e9858f7c1e20f3a53ac0ce12306988f189c98a095e36b6bc7d2e5709c73c8373b3b7e63c9a589bf7b9ba18724e4f87ec4b9fda3cced1fbddb4f250f7d12ee6637abb9dcf9b58686539a5ceab85161f613d184131044b9fd24dc1dccdd4eb254911353cc40053f3c9971a087240eb084104b18f132e292c4055efdc7dd3d35e2804b1521ac10f22289309418a003557e503057ba827c5097b03757ba82b0c8603eae7cedeeaeaeb2c3f07a41abf64b01a94e1ffe92011683a594524ab5ea72f28452eae18d1a954644100e1a1362d0d1952e26720033c244175afbebd5e385972b5d4c607147913930a4480c7600c40c64328021290015266274f55a39f8961851a29284106ca8341962091e3e55172b2c413321825c50440a508e48d24407a40ef0804506a650428b1141b001019a58d124cb0888116811eaa204457480a5081d473471224ae94c61832c56a2e82125458e2a1d78554971c15de9624205a418586922b6bdc210f920bb30a243ca87252d2d3de8713da1eaae743101856b2e4d92b00f9606a92c8a64f1c50e2f9e2a4b18713191c413aa1eb2f050ea2107525a304ba2c51076a64811c3061349f816d1955570f8c05685c633e40453aee4608b0734004494d3581ac01dff082164141e8ae8020ad8105b7840618a145862aeacf24382f9db731b2892393eaf3f96ec8bfc3b1c27bdd26aa1943c351c4bd7477ae7bb4be6d9e14443973afa3d0354fc20e5facb9e6fbb2e71c86d720ab81cdfb4f6fb66f8f2115132bfc89f9424806b07e5f450b27773c82cb98679e56cfe5671393ec922b318c627991d056ed674dcbf861edeb8539cfdee1df2ec66d7c2128bd3725c387eb7c3aeddd935ef589c2b74387656ab3f6a2f35d06acf5a6859e4faa39bb28fdf433bbf6a45f65f9523b7d65a433a821f589064e184ea4811590800cbad5dc507ea302020d0f241750508a4c46470aa01b8b5ba8254b7528f210a16acfb5de90a42d9494190c5e5062e273c5839d2df26dec1279ce0012770d08108216458d4e084cbff996043650828a838028b1fb2e8e834086878c10a86f8e108089a800100a860e245151df0600a1213a0a094504109b48862052d1cdacd95423f30e29401a1166469c10f4f84b851e34a971329b7e630e5096c0859cc600632224ad89030b1c3ad396c48ec94a67e7eb7b7c319be4b8f6421e14ad7125a36216a0696d8000527a0e2850ca4ccc086900d8090a2832dde95546a7084f94a293ad8c22f574e992282d1955360593aa003a88573ae74352972ed9553a88461058b4170f4af08395604cdb8a165674a9715472eb37fbc3376974d974bf396aa90217ad83afe01d1558596eb574aa1040c22438090628a255250c1054a8a1a42437411a58928ae7765951f54114c82a0c3c4c582af2443bc72d2ff9a876e1bc8a3bf529008ca9ea826350b447f476b0d8e406edde48bc26d9b4100570367a8e10d7de57f577a2dc82eae0c816eea5f40ba4e15f0af00f51d6f7e972fa5945fdfa77cd9fed2bb91610ffa3574419e1a70001d1ec24da17050960cdd9d2ba12c19e27272aee01bad658da5e9f5e8679f5a411ef23d1c27ca9eda9fb31a50ff8edec0d16f90eb9a0de90c30b782337878c3955e0b352e0d812ae03bdedc63f89453ce2bc718e3d4925249a904ea975e030e70eaf0ab903964b66b7177167daa40e89b4fadc75c295d4af7ea7ec537f95d4a29ed05a7c421ddbddd5bca1d29c598181819a5e6c989bad9826fbebb53702cb9974adf274df26738facbffeb2fc29da1d96928364fe9a3d9b9bbbbb4a2cedddda5a8737777297a2182e39856cd6e760347e99acd568c57439d625a35ab597094aed96ccd18af788869d5ea285db3d99a315ed14a67b31563ead2359b2dfe1ea56bc6e0285dd38a6fbe741fadb4dbc8dbbd7b889d5b1389439d3c9347becf8d7d79b5a72011943dd1dfde41943df94b7014f202ff9ce86f60919e936b7fc34374b5f006bf344cd9d53a1c85783736ece1ef823cf9378074923ab41088b6e7237f47d771fecc9f4b4129411abef9a616c243d8fd09d81d2d16284c5e0ef8241426ad3bdad1995cb9fc5656c141ecfea0d194c6ca8812362dc274c41ba2fff895e07acc7577a7a2bb5bea83fb4948064c90ec9083106e707212aefb97beb84e99e8e09452eac3dd65d7dffd637eccb801f311c3cb955564625c992b5d4bb690d510c8eea654764b69bf299db3bbdb9bddbbbbbb760c8e7e9929a7753d5bebbabbb999db4ac9dccc2d7dd224219fa79c53ce39e79c73ce39a59c734e29a953eaedb3631c57a94bc952b2ef7853963f32334b29e58fcc52ca1e999bb949d38a9452063cbfafeb46df4b8cb6b2acaf550a7a9728a4c3af188bc562b1582c203d3d3d3d3d3d308ec966fdd3281ebaf22b75eee9e9e9e9e9e9b9fcd2e50506262646466686c669689a270d0d4c27d3d1d454d94ca552a9542a158bc562b1582c20cce21607b18b85e45367b1582c166b0291322993322993329a524d8d8dcdcd8d0c1cc7c1699e383835dd0d0e6dd9a0cf5512fa9738f49a30d884b1582c168b259bf10fa338c5aa19bbf2bd43168bc562b158327072724410e11f0c3d0c9b6718e674efa7f933512a954aa552a9a6fdbe52e95f9c41d33585e66b0e4dd86c5df9ad52a9542a956ac26013366113366113f660188e30c28c1924d0701a349a270d1a61d7271d99187b18bf546de2b73f1faa947a95b89aacd995cff67bbd5eafb22a8d552aaa7255ab46e82658837333beb8fc24c448a0416376f96b782b4cde72f9b91adde417bd15e6e52ba4c94da6e669326d237e491cfc7c62efc76f2c6d3fbed4692951935fa370b45e38da2e1c3f2e1c3f513896b6702cd970fcf16b388aa287a3ce1d1ba5430247a3ebd4f7954affa27875eed8836a94c481c4377f6cd4e5e734bb8dea53898336cf760a9dc5d9dea401889301f86c8eaffef4b06391ab6d137f3fc65cefd975073f0b83cf3b1679cbb5df9e0addd54247b1c8cf447cf3ada32e47a067f76367ee59f7cced4f87c1c919230cec7675d5750bc45c6544fd094ecfc743d273bba74dddedee01f87c381c87ec78e138ef0e16fbbbf463cb6a7eec998d7fc724cfcdfb3b4af2c4bcbfa7248fccfbdf802c8c9ef42550b689669471dd7f4a1d33efef72e77b7f2b775edebf933b2eefff491efafe25b903e3aaeb7d7dce0377803daccffbb1270516fbbddfc12c348f07b5a9dfd284a3fd48e1f88d4229343a962f6e3fc769a0731c47813ebea363d9b4eb41dc5bfb7ddc8fa53b7ad0edbf723b0a72b236cd223e1458ecd761b15f079c976b3979343387cc8052e2f09151807635390a72b5f78f01a5348de6cc53a1bb44d44e03ab942be2642c9248314e4641d103fa24dffcf12995512a5117cfc67c9ff7020303a3817d29488ab5c9871463b104305fc748bed1b23c4e36c4373b4ec626f8e60bdd9193b16effe731603b71b236f573326e0b378be164325d8eef7b19cfe747cfeecbcb783e2f331c2f801a7b76fd79f5f9f713fcd13317705e9b91125f3fb9f647c74292790cd84e3424ed6016e29b3f9262a42f58ec7701493216fb653c9f2f24c54af0cde7663c3bd29ef43ee48ede5f03a5c441b29ecf2874163d94ed8d1d078e24a11afc8e9cecf68fa458774752cc87df7a2dd84f817722e0aa9e1d3efd4acfe5f51088bef480507fa2a110579d94dc781801575d6751c2c058080f19099943b8c22499979b3f45c99c838eac628b046378475eb95ce4a787574145e73ddcfd09232edddd407a40e9faf54448490c03810591d910e4490a8856c508aed3e9c4ab4d1256c50e2f409c48b5495eb63664406cb071a510111a983fa32c1b0f06d8c2084c96811f7cc0648a2760387cc07b70e2891d708882830e78314505585e5c48c9e23b38181e98b2c50e3890250c2b3f54541184117032a7a2a94329a594524ab550d4b9318ab76b574a29a594f6d8fcc5c51d45d9a44abe27aed00fe04091c4c8122a88f540032125988861814b134e5823390821b5012a487a008410aa003591848804db918fd5055d71c11d45d9e4a2188d8a7441feb9b02e87231d906419e2881a4cb1c3084e4cc5c9ac4a9427bec5c90dc02b5d5796b8b2b238e0643e6825823afb90011643adb5a93ba9b5c2c0620e2fa0c28327442cf1811050a6b8466f883e9a670bad4b0a0b83d55aadb84e70b52badb8a6b0507ea6e603a14c648cda55ca919612444b49d25290a8b4bbc27e7e7e8ae0e0b2e65416e50b36c92d368a181f919211364971844dae4329a5f5e78f0f1c952c62ced40533eee325032c06195c5b5c6250ca94524add9d8bd878d24388d43d6030bc5e80c165c4750448114ec6823b3333333b576e62a451f6f1920116830c51ac6814ac71521ddc65155c0441768326405a5c39b994eb6ec535c5752db4eedbcf97d31d885685f5428104b121c86ba802699ef9c3ae797570be5719c1757febf2ba98da01854adbc11de7092fae33fdb124856ee9965894e1fef333895479021367ca720e1447341fbc2faaec50ab10a122834bba92ca183f5861def9f43ff944947458e44f960740df7f769677c6fadc0429d5fa35d08a9e96eefcb639c351145a16e957ea976e5fc9e9cb1fa0aca0dc6e6e4ec6e11b7b52609e294dbd4971b9d2eff26d77fc5ceef8d5dcf1eba9836fec2980e4a1df9382d421ed948f8a4bb1f0e6e92389a39f562d3211704f0031f7bc8c780131c509302f623c3411a2880f272905ad6123a2030dc0005aa180063e4012c58a285b9cf4f0c3104f80d0c50a6010e4012856c0b274a81d1054c101952501200834c228047164b1979787f95183bd845836ab9898981f2ddb2bf39279645e7a2af0ad79d9ccfc0caa7946e8b6117edb981089b88ee3382aa35412715ce7755de737047186dad42f03c479491cfdda167d49dfaf0df18e9422e9bf1f3558500b07ac8989643efa62148b19c5be1c958b1cc5aa4d95cce5f83a6f34658f3ccf4bdd23b7827d71c09a112a2708cfe726cc512df18d62a32f98c7e6089bfadb26d5a4eb6c52392a2639aa25df7c9c21a9c3e6fb1d7c11b249350ffdf67e7c11bafd5d8e2a4765d375dea8cbf18d665433aa6fca1ecda4f8499ecf0f526a74779fee3eddab3fcf1c61119c31328362b12b96ab3d08cea458ec7f7006d52691ac7972545feada1701b471813614b451b5a93f47d5db7b387edb7b38a10db75c06e81287cd0cc70bdc80528a5e63234f05be36a924bef9243baa6ff373da8435e0d8b7148e38566e3f0d38d6cc6eff0c38831afbca1d3923a34d6bb4191a71bcb8fd2ee02836dab8469c2a6eff680635da3be6a8aee546b1d126e8bba34dca46689c39a2bdb497f6ba0ec284f8101a2173086f33b2e0b81c9f54f2a580f9434ec1175aa7b4d650f37c7e689ecf0cd2bafcbaf379e89b3fb4d7e59f3ce78f3ee79c3ce79ce0d8a1d5acb5dc484a1c9d10babbbb652d4b424a6ea755eae8ece4b8e9f90005d1c099029aa836f144b1129fd421f27ece63afc39eaf65b786e961973aa2fbdb62f001fb2143cc86ce0322650f80814513c8a1f6a92160872b012c08bdc0223fc9eb31a58eb953270f11ed8bfc490b95f467a77de9727c753a75f178749882f798c006312940bb2df4a55f69e5603a56e2f321de91a5ee0a19f475af0ff9900fa1c031a9837b9eaa55f368cf3ee4433388a9f2a121c7c23c36895db1c876252323532b8d77dc8f3da4b9ae9d6197a242d4cf8152e2108592455ba5943b3d25cfa6fda5df3ea548ffc5e3e18e854dfc309ecf8489999247f56da881629b5c988686a68665944aa552c966c67c5f8ecfbfc6f3f9e1a84bbfc6f3a13f3aea76901e4339be206e5f60753905df7881d5ed96e0f8c351b7dfb92ec53b5276a92ee582cf3a16d8e577195ae21bed6ae8f2db954dc23cdd1176f17c3aec5253a42e8b36ab8dea7bb77fae1c8152192d90c9523225323064487cf382e15d2df49f23fcc77f6432996c059c4b69bd9b93b93d9f1f9de3fb7cd8553570d5f7a8d96a869aad66f247fb7038e7333f6ff1fde818afbef1abd4ed1466667655cf24388ec448180923d13ae69cea726c8b1f1d6b1bb3f2059f7f3b8bddc5b53fbaa8c05d2dec99c4d1cf5a7cf3e71d7b769b7927021dbbfe6d9b3bd6318dbbaf7072c6c895ee06963e764aaf7c223654326b28b9aa759c6c489bc17e62a8abc55e5acc3bdb3192ef451bb8031402eae9a1dbf62abdfe25beb4db83888ffa532aa2d6f3a912856fdee9f5cb4681864cf27cfa479e0fd0d726fe36e29bdfafcdd015accf7df439eaf5479e4fad7d83bac8228b9f8be6227da5c52e6bb136b1167bf968c7bcd3d11f790be87e79e9bb74f55890b743e79d994ef2cebc9f0b69eb46f5b9d69523785d70b27994d4b72f38b5c0009abe30ed4681cb539aba1d0694121a7aee0ce21d72b2cf498f07fdd08244ec17514243cfdd865cde40294f1887dc5e61c8e57a72701472fd6aef5e0b30d7bd05f4edda7655c90d7cfdb9aeddadd19116dec0b50ae121957d0927a59452cac92d9d56598cdbf987726a8666ddda762aab9d39ad52db442e12354f9188564d5a11e71cd73c39ae6a566e5b27459cb49d04376f85799b75e5739b481474e5735c27c1b155577ee779cdd3f364fd031b0a126216aff88753b298d050d06ccdd45ccd9f99504c48ba66387efbfcaedcec48dea8410d68f0cd0b8322383969e831c450c01c83b2900bf2b81ab580064e29f6b3c7c335f006e611d6e06f83bd35d8f0dd2901d0f3d9e3d1973ddad51bd8534037cf1e69570b69e8eb3fe48252e2e890275fe1e6fcaeb368d9f3912c6a1af82829c7e79e4f8eef8a2b5feb211eb55f57bea681cf5a6bb9d1bc0127678cedbafcdd6c5a35bbf9b635cf6dab7613719d775df3ec3a5127eabc1189d4915c5e6062645c46a679cac8c8743234252e79cd0c1bbff19b9be67973b38d648fbc42be5c294898c4e24aa147ca8ca06c501d91331b80b0a4b8e66b5e6921c19ab029c69ca188ccd8d4326193554c2e3fb7b8fdc9657e1a44f55a9b67addb8855393ec9c9e8e47393bbdd29ad9a6b5af3d4b4a69db671de0c122cc338269b358ac562b1582c16101d99187b5869a8a755cdea5607c9d72af5eee9e9e9e99952c4759de78d46a4cfbfaf03cfb974393e9fd60b4d0b66ca1ed1b05e5e5e582cd6a84183c4eddfc135409a2415f4ae00c09b1f9b998dac7b81a9a9a989a1a161429384c5fe12409a95cc4866a4eaef843a21d5fd3e0778f3ba11ba69b56967002670063155fd2e9e0a7c6f5849bc749dcbf7772edfab24486c424c342d00e0fc0962c28b0937c0f9f2e2014dd444d9e0822e89850493efd5a6272c7a9df73fb71f66bb36c0187cc07ec810b30188cc043e0086211b200276f4970026800513f8028bfd335e0f97124020fa36c0d70189e87c913fe9844afcbf1fdec9b9357efad79f354e78aed4e5f84ea8fef29ef0339ecf09278033e6693c1e1edea0f1c41e0f4887c66ba12f0a5ee3e7a300d2783ee273a552e9861523003047966302980393387802f0fd9de8fb3bd137f763074b1d09a2fb711404d2246153dfb0dad4342b28be192cf63f8b4b726452478defb7f1fe8635a259d1ac6a944aa612bec6f329c164e34d2f3d1f1bbf83b998fe5235e4f51a21d00dd7b52780382b1027099bfa0100e220c162bfeef623cdea46a84d5fcac3d48df08675c332a17a4d8d4d97e3abf1369ecf0f1bcfa7b2bbfb74f7e95ee319c7d778e9f9e0f81d6ce3ad2053020874e36d8040a83fdd7892ac796856fdfd7c4478a7c6f77f28dea925bc65a2067883c44d8bc57e1ce00d1316fb69562584a3f554f0fbc40db0e4017d5f05f9e666a6abe0942183a60410e60a16fb6d8030432c9a429817cd8a2609f3dc2081e3f97878c36af2cdcf29d1ccc89462604a2f2e1f69e4759ca82463547f8ae138e4d670eaf9d4a0018e37aab1adcc00c76f0470144398d748031b6d7e70fb4500c78692038e1f0e388a326856635bb10161c6bf23cd6aac59359497a159e9c0d0ac6cc2682b77bc61e990c61bd6ea8655bae30d0b67959345bce30d8b51da0d8b99708b834468694378d210328730a700281c47b25a7c63c3e67466eb5dc8cc3c9979324fb65a7c567b0d692fffb15a7c3525e342066eb9f2e5ecca97b22b63b25455da4b7bc9aa69dd5cf40adeada1ff481c5aa46dd66afdc0c87559db269f7aa879b89f3fa774cd847e82da04ce930814cd825497b5202ea5827645b324a03c89400d04aa4f7c4a1ed9dfc1b672cfecf3cfd8c25124a269b5ceeb326e65ee473413cd58c8f4918b3aa5c100dc3b9cd2e4de4ddd374a4fe87777f78d5277efa694863bd86b7b11dc586bad95d65a698df1cbd151b73d17e609c680791a63d481cf7a2acc31aec782bcdc02b4df5e7a5c386af2ddb4a0fdf69b1fb9f58ddcfa2ecc93e8d9053e899eeb4e03bb5de893c8dd5df093e829a5d4057a12d55a6b75a19e44cf699d066a9aa6699a0bda49f49ced34505bb52a06ab2d66cd64ae208a9a3faf5b7f9442e1c803dfe8aa5b7ff35cb027d1732239b99d56cd8e1a48e4a95b5ff3b4f086c7f6daafb08543f5875ce9690bd85e1b2d30bb3f9adff361db9c122bebde26f6efa1e6a1efa1a6c5e09bb7c485a31585e3574bd786e3dfb174d9be7bd75aedb7b52ef089869a8c83bef963c3eee8aacb8eba55e3bc6af5b932aa51d797ac2aa5328485bb4f89837a38a548697ba59476bf7badf4bda360d9e46e774a53b39dd25a35cdd20a1b92c5a248eea69d82b953bbcda169379188e3bace1bf968d43c4756c475411e0b914039925df9dc8844fa99215d5efce5a579be58fe8909050d05c998ccddee7472b73ba5d569ad9a66ad66b74d24e23811d7759e371a91e6a89b245237bfaf9b2e2f300e03d33c616264e40c4853f252a97996ec045fba09c2c0c4c4c8c8cc1499aac9a4c5ab20daf5c45741883a6f44b2ae145a4858bbb5b6d6d6da5a5b6b6b6dadad65b7d6d6da5a5b6b6b6dadad65b7d6d6da5a5b6b6b6d2dbbb5b6d6d6da5a5bcb6eadadb5b5b696dd5a5b6b6bd9adb5b5b6169d455e7e2eff68e5d7e0776c18901571f3689b1bd5e88f5aab61ad45148ebdfdfc19fae96fa1e4fc6dfbbc75bac74b6e05e5d5445ad065976876f9d986a3a0d637bd250e7ff67cea733d1b032c713837a533cfe8099bf84741e328e8ce6f2d0d6391612c79447f07cf1ace0efde5a776f50018a4a5bd9c703979ce59f3458d6cd6f4a881e5f8668cb038335397b620c5fe517b72fd352772870516fbfd3597e409df5f13923c24bcbf162475c878972f168d1f3de53f92a761ef2ac993f3febe923c22bc7fcb240fcefbf7acc588a9336e787e07d45ed7e67b6cc01d4d7cf3dad8843b58e01d6da805b9a36d21c5fe86358fa846c36834ecf6732dc6ed8b858497504d49d462c16c529b0fdd7f304795b36251ab91d1d0d054cfe726b44939a94b66c8c9a3192e1298017e12877ff57c3e202280569afcaba700edda20574a93f3b08e62009f7062411baa82f506988fa8544c596a7a142a6324020000002317000020100c89c4d22c0bd36cef0114800e5f924a5e56329486a3b118856120845118c42040082080180000428829643b00e211ab4f6b7e47efd53a227b62f17fccb0b585504019ee7dfc73e2282dd5aa917b0b6bf88453f8f699d4f68b2f9a45d84a3434b54092a0d942e8193c6e2023f05bc56a3334975b37c1eae9c718803a91d6845413c4c6511be0ec3e14383d6119d4fbdf351b832ad231bd8059a5c4d1fcb3520002ef15d300b16b7ac712f4a7cec7a222858e68d04f07481c4d7a3347a1e9045d02987409bc5d836532536052843342e4d0106d6483ace1a04a81907cf160feac65bf23e8079243d82f42271f4174340ff13d055b1b1342d4bc0fee05cca6079e54d3fea9beb51308018867f4bdf6deaa847a7c1f771099d5009fa7f81e1866fd3075c2d7316b1772c7877aa10ca7758cb3fbf4d0bc738ae638447af0a6bd2956a90336f64cae4d82ad60de02366572cf8cc935e2e52df27c56ece564d39088284cdf746f6c6a15e18bc677530f69e47df3569f7e8d62c995d0bac76933454af115aa372741e074755e19075c76b93d0942e20cd1f98fe59c4097282d0f245c8e915999f8c0ad2fbfd326c16e07b687ec9313a4c805944462e76c66aa5c55f6f33b8136a13d0880ee5963702b843918962d8df3ab07914e82708a6357903208fbeb5f56a3d64463d7327fc0c09ee7ac02fe671ee57e7656bef9d788c48ef4110cdd4dc892e3c082f2bb33c1210df4376d8175d6e0e8e17a0317c5af76557601d35ce2df8eee829a370b762b0fa76dd634e3a43cf799ec37f2da00b82e6a48a3bdaa472aaa889c05df08a503c1828cc5a49063a6ac53b50d443e3f324d4d501e7fcaff834c09ba1a9697c1fb37f5692b172ea496666b94baa2e2eb01c95585b81c0190ff47ce10ff06acded36c3146371831e3d6961371e70bbdd3f3cf9e594ef8f1b5c6f34cc2979d853bfb1acf32712709a24645ec86c83eb9b390c1c0a6c7b5b62076212b514f6062f2687ffc7e148096d269c06acf724d9f2ee9b27fbf7f64a9829ca5ae9add3fcdc9a49b9baffc5e0e3228c2414fe1333de2a089f8fed2d9ddd13628a70d32fd8588be7a46887097cdc8d3a0a3db5ed06a2a6a0dca92ecd62f4886f18a9cf7dc350bfed7bfd1193388d795a8cea05958947d0e3528e9e592f8cb6f65308cebc0d7913659aace2c64ba75c552bcd1dfeafb84fe63fb0c450bb58b73bd9b9fb882d27fc4930486d41de80837634660c6d0809c60d466462f83eb7d3d4cb339e7bc509c0c1a489b814719008992469add944e73e5239417019f5ee3320023091e8d8dab5268f96f4c423b7252a23c6f8363a95d6311833ac860314cb95274ca51d139501ca3dac90b69f81c9d449a88706c5709639485f0440a344a8553e76561c387003c99ffeac762db23a46894f0ea647f64b729f3fc9429b436e2bdca64b209b7e36fd3bb8665c48bd595fdf75e59f99fb1c2249c0c6aa8193f88ec67835d1fba17cdf842f50a7961b3a9557f1c38dafd9bafe27d96a271ed44069be6a01895dcbafecb280185f92f8ab531101e078ae5cb2aac80642903acf53d9fd58e601323153ce8478cc4eea0ea02bb709f31f0bc55a38cc050c15a1d26976292ad8ed50f0c1180dddddac7ad2015446e86223c3d173c3cbdb46025b8d6e3930ae946bbdbc93e04abad716b1815f81212b4507ee038cd14d08d7f4f6701d9619c5101ee92182c65e483dd164334ac180c2df356b014036b92f369bf9561584f5b32aa74be7baa375f30c8ce57eff9402be9e4564c44987a3ed1d0c8caf477dcf99cb29cdc955bcd1618f16843bb878a89153cc1f47c4b81be5803803706c38083a7906f2b4e60edf6a62c96aa218bd757b46c151c17f621a9858ed5c65ccbdb2d616ac825802735acfa05386f0488899372d7a01252ccb55709a26907e2623accf570a6411a10e1a19d2854cf15a66c8df45eb8648a8c0651139c4a0132af7265587c5544000aac9ab5b88fb2f44db1fbaa798bbd65a8ad52a44dc5663712e688de2e17f4555fa7b00289c5354f74e4e0b2f80ed3c951409f10c3994f64830f9841484aec13e53750a802a263e01d3c75e9f0c0024602ad634018f0690a50e0c82fe6d73a3faf7de2b539c4e634755868fc080a053437be3fdfc9a7ac7d2f7561a595eb9bb085a8d145823f61e19b8126cc1e7d306b6b9a8d6fa30799254129e42e999f40cbbc61c3a58623f544adaed6a818c352137f360faaca64376a6d378c10022a264f93fe4e48a273020aa8f7e75c170a8da018e0f55a1c8484b01cd3412a0d31c870df7281e0c084a95d2c50ad6ed665f30c22e922140203f68960559f000885fd16bde41fb3463c0fc43dba87a473f035849700bc16900562d72320f58b4082cb9bdd2b251809ba8a12f6c402d0e160d8dd05a8e746714424e0270f3ecf3a2e098b9cfe57ccb32fdf197ee5962014df847b74f5acbb7cd68cdb1f281776e480d86cea1208096f26090e686724fcccb6707f812a09d91d4eced1593dee70dd1abfc37452bac37d7825cd7c70de87697e2a78c87bbd9f0d33f79ff4459d69202755539b0e263d3c342fe421438e4c33b39785be0d0c34ec2f3c24b0fca1254c6d5849dc12c3f017c6fb13fb54dbec93618dcaa7cf64c967d5a30fdee9f9d08d4226b734c06e75c872e57a44fa53f137e6dee64298c56dcf39ad847a268396a9ad2f77a2b468b36724d2cd94dc9832def4f5eaa2643d21ec3f3732b10b76d660ef2c3d5ddfa88fcc694a855193323a06105d6e2c7e928f769c392db63fd135965faa69be55429ef7afe451c94bf5a6cca555db745bed56396ceb661d0974f1021ac7a0a85f49dbb7b030b75ec47261a1a835ea1feda1a1a84decc14e0e454db29878a6fc3d0641a3cc2f1287b2b41f12fc1f8bb857e607c96367faade4584a33043419ec28c8b1ae475a9d1072804651715fab9c731409e782019b0983eeddc7096415517586032ee0483a861d458ac221f9db22685e75c4a7dff97847ac0ef5a0339b948bb2fc6ee699a7471cd5be23be30eaf40f300de60cc33c102f38fc6161752c81ffcca047bac79ccc99a2651cf693674a9eca7676de2a120a786258c9cadeb8a524b3de1aa4b150021734bef0d17a30d611c9fad6ae404038448ab79e309278fbcc2a0aa3f5fbbac6484865809879fe1a2105e27d4dfe60fc2d34976d6b568885e00bea8e4cc17fb07b21112e29eb0f9da6c319f411b5136593074890d7bb3750e72b499ace08721a1978feae28f7da2a865b6c67b917cb2448f8f1a9a0334e5bf181b118b103e4509033991484d67d96e723885aa37235b85ffbfc861f22903131ea7ce82e41c54182f832dd047b1ca01bd5204051767ad35ae6b057a0a3d26138e85b6398e2de9a0e9914e1a4571a730678e52132f28cafbb42c1aec0544a35d82b257e8f114f187c191496676bc50b5cce31da4e8a898c26210d99c9f7ed391dee1534a0f6f347cb04614b5b729afcaa93bd48caed86bafefb6642998c311f808c87038f3cebfe23f068e31921440dbada6f1a3254411aa6b7f9e77b4cd60085f6f4f3422ef389e82f2c354c7665d28562b161007d3481d6ab370c05dff50bf9f2ec502a9fc72f46dbef93353587e92bf29ace3acf2312201cfef99413848751899887692f47de50c1a087111c9d08e71e2698ebf835c187392ecf29973e0cd3467e18378a022eecf91c6edd3886d16fe3248c684bc1ea189fc618fe304a7d425478f7ef319d95ad1862097a7d4c52118b2e07c4b4f2d0b9a0d771b037e31846bf1f9130a228e7811813079c2bb4d9fb1863bdf5c618dc20e082189959980af47a077b6388e1b6713e8899799a2ab283ea987f9e73424c1b2d2cedf9f2edf88b1b502c86d31c447d21064e108951c44463a857c19e1a0817a886def36ee545cd2b0b7a5edee5de85825bf93e7eb5c4230f7959ba5b89f8db27e4ef6b0fe11c324a57c1599ce6ddcee1f2ecb9a456d8bbe5fd528352e8236319c1765a41ab571c4b205c3a0b8ac66315edd21f7891a8ef079a4884b4c52a1aa505a1284ef3098be2bd1caea1bcbff6954479519b493a701c3515f4d8278a45f8fffb24abf9c49d6b3d1a4f4ea2b9793b82cf86bbc89f4d85d8e8f3e6e57f7c2d9a713b9444270744b10a728e91e87654bffd997b58c52c7debc05b32d05abbc83a7af0d1776843b722b67f43d54008d8d722ce5baba582a6239e1a312f49551a293f2d379f6a5069bec80380ea809f6b38614dabf64227c25a3c14d12e803d1c0e88959de2a9f627139d28ad5d2286bec7be754823d2733438597fb81266435128f9e6fccee08064b1ee19950d54d4bd43d225905cb5e45a0334200a6c974358d46a58acb30fd8594b9280bb6f9b40c3afb419404cd34464c459d01996e980d1792bdd62a6d36b913f52d527d1d3400b22a2c5e58b2f472027faa1943646a4a57fcb9a594b3504a80ce9ca4d636d52917b63639de568d08f1ddad4fd170677d7a66879a70066a076178c88f4bab92b34d4bbb8818459bbe5ccb5b7056f2c35acd3c802cec40bc0673c7bdb546cf35dc574b32ff6fbc24b4987ba573a20b4480c22a4f08a448208bc5c8e2d29584ec50e19348a38d992e2edcdf91dda4a914d1e446e0f747b1b7ac480786633aa543cdfdfcaaaaa266565d02119e1c49c87a08814ac8cf3a2546202a3059a06a76dc4ec55e4788cbeff1c2a9e6828b587fb03a26d7e2b3d09cf583e546e21844771e442f974162cf1e4b91f601161bdf004d4d2ac97c008d1bcc45157b1f092818b41e4b28c470c96ee10b9c98f9afaa8f407636c0fa0dc5379d81a2af7f92c5c7e32cb189572785dd80418137e4f9645f82c3981d9fb26cae5af6a1089148506a272ef1d2dfc6ba2d3e7d1ae41aca8607811a7f952a4dfa3f488283b3d57b14f79bc4300fe7d0871d55d522883264a09751f24f835b877f47f45e926a1fa8c9a593e1526c6a37a1cd0d7b9f06445243e9b995df0843a6e5872e90461aeb28c78de6c7065f0924c648abe04ced7a48fd7320d7a5b8cbd26205c1910694cce441d3f6e00d101feb5f69ed9f80cb805a4058674150448c483d5361089b740ac9ba01987751181fbc370996ccd122819dbc58b29526f629fc0e7514a8966ab6d47853ed60a07a4cebb273ed24b204ed08a42c89d69314cd9b893e130d3d3b4429de3c788188866b3080d87b95bb9c061cc1eab17b9024a1d5dfc09dd369d9eff1f6beda2a0810230c72745d07a87cc061e1d0258f0269b7ca9633a3cc45ca0f614b972a1a233b027947494c39fe50b2fd2abbb0911a7b2daaf6b15699895484fe035ac63444d876fa3763ac6424a0815f69d83ab823a12aa5037ed323e9e50f72564479fc70dd331c77a1463c79c64ed3b416b45e812597f34e387ccf9226f0c5003092c1015758145ae44ce88f85f72c8b5ddccf17ddee85219e60cb1242f9af464cca2d491b64fc56a54f80371091a0adb22a109c32ea0d188633dcd4b04db0bbebf81c13c375eda978305246f595d36b5c484a382bcf2aa1e9f5b78d7bbf1a1bc5c294f6768466feac6e6d8af2280244c511efbd024953acd40401b33e7594f1d48418e38ee8841c6e4b7dfe1c5e8255a2ef06933258ac1a37efd8f88c75d5970b8ad481b35342e5b6d061bbb9120a293294a93fe36dc4b3999b15fb81e830c515166fc75f2f1806653318f5ea259b1c7c8025748a8b3766efc2afdf5e600c093cbea946bba8cd9c7dee94fe0acd9f5a2349808a3a9b23ea02e1165811c4c2dd9e4844fb0f527986ae6801a462857e6de0c057d7533e73f5e29e21d88118ed779e400fa14825da48899b24a060fbb6989c97a6d57af8b1ece4e3535ab3d084014d5940eb0a5a025e3a378f24d4a822ed6c0e7f54cfa083f9551a3346ad6e9b96c8d4225426a492cd4e1ed0afc884367efc9b504ddcbd8717e6470eb744052ac07227bfbf2eb708c2258e7f6679b26677a2137a4f5e2d47932100c77592cfbca1d8ad8708c4cb5b03608e1243b99821fa1583dc36ef2280c3fbb3d9849e9f9777d948aaa18c155c6ae6bcc90f5cf10fdbe188c3d631639501f111b2db9ca8436996b726038e3854f02391c98c6d8b4e4acd0aa62a73d710f384792f6eb7a7ab3e6050dd2fd29355ee8690787c6726ec5f5c0afe991b3b259d6d30256c619d2407fca7273c6b34ee0c882ee5f76f53c5abd6bedbfafcb17b0bfd7b02032c367130239e10e0a866d8d34305a9707913d819a89b27d0495e8b76b07e86479285c95e84c41279626be8b0e8d1c8cc9b288e3c9d88c0f549890a9b0800cdb408b7b89bd5d55be2f1db9e283b83c728e5c26f66a193e20c1ba072c8b8cebf6648adce8bedfdb7585d0c78153a8627557a376170a81493f6170d1c7847ba6d30a4ceb7593359e116dc649060389253ee0aa37e4d1ccc4bf6a8eeb6f9cba2003adb64bfe456747a4fe0ec0298823fc7783f9d7b6856c5e9447ac07efaf7adc442e1de7ef620a7f42b1eac1a71be20dc75a441d68056d2b6569051a492b44c3bbfd82ad0a1d83dca85658fce2ce1522a899552984be0c07fae3d9ce6f62c78783dcee18b769b6b6ad99b016ba57307ed3792c4008dd989f3bf89447105877fff10aeff1f3359facc3739638940cc6b26676593d6f4ddb1d9a8a16d703fe99d29b4124a88de2fd6d87f2bfa3cc43ceb5165a97de79201fce507f915ac6605207986dde9d070c6a10dd917ca04e43a51a8d2ba21b8fc5d995d799829b9bb2af9a31133a4683354528383b0183e4ad0849d2e4074967588f1561a3e8adcd3fd2016469f20626503f55f652c78ae340be655ab51b466387d0694b1f2f0f1adc359f0282354ccae307d7e77484308c437b196f64a8db239042fac29762fcce18eeb2a1cc60a047960f4d5758e04b5eb8da449e185ce7cbec00370683aee566aaf3a5a460974a14ba2bda76f8f1a52961450ae69b1cf5753eab7632c637a0ed977d50ed53330f1b6d6b56225e0738de925a6a1a256d0cbffdd6b1584fbee069767538123d5ea2adce12446a6b4b6372966e3132e72ad17d2e5db0fa4a26570fb12b25100fb092eac373ca329b42143fba4b2f08338fde77341b596064880d9f746f86966100d0665d903807e21a116a38a2bf497aa183308fe49aa3b97750880a48581b8ab584644a8d25436e5243b229c8d4bdf12001c9affdd6c6aaebd00d186c1654ea755a024685c0982b3a682bcffe73546ed7906c46811d6f5763039a5a9736d3b7611f77d41ffb2e69aea1913f4fcca3d71c4c44975d5de6f69d6eba8a0c4cc26dd3e98e3f1b2592f937557c788576d81a9948b3041825bec056229655feed43a271ced5780ad6b55a055c3b83dee9e38dc984d7e5f5d599b1b24822a70f40d08654a1c96c0ceeb03c6a86e9514b35f3ff94f573f0b03780ee89718ac5c0f64dbc3a598b7849a5d49b8ef62a49646fafdbc4bcd00d3c06b8b308f4381591c56299e6e1cf43995033f56aa4a31813f2b4ec260a3354dd49467305aea1c8ec93e2d1a5c38c71f421d7324702f9d2a0e54d8872b95b1bd6524bf49e0f703da01611280a75a8798dc872c736471a93271ee2cd8f3608faef940058e19ae71e36b6d7f1a9a331fda9ec184e8f010448d2f6b6596a022eac4d58051a3e94a41f6cc6e8832c95ae49be4d58fb530a515de8493474e66ef37e9841bf660bd4159e72735af9b2b004e22b2ce38c85e3116dd5f294ba0a0a28a98df6d81fe71cd3c94887dd4ce90aeaed4691a49bd4b2b31fb40198fe795155a353524b4a1239388f28ecb78c61944bd022939a80345a17e418a182be46344b23dcde38fec7c89e5ace9f9fd628a1ee84401acd0ab588915dc87cac5f782313b04d343ac57d6b75071eadad89c1753c57d8f597911407ee37ff44d45eb4111b857d47b896f65ad411a095dea0e99a6696b078072ad3a0b87a15c4eb12ca0529c621f988692cdb536437caad174eb5fb03c58481c4319e0d7695c360996ab0cb041ea7b1a3bbf0304f57ff807b20ba6e01c2a443150a9e82c9a8cdbad9cad8bd5b99686413a384755624762a740d75b06170695fba7ad848c560b89c499f6d06496bc98f878d546966299ef74d6c3d4083c2e59a6e1a7e3c1ea85452ef04af69234071e05745a40c3e25ae097e40a0c02f4e778eccee534f6e24f51d4686629b724274d53d93c1eabba9085a2fd202bedb0d1dfa7d1fdba67fbe4c80b41fd1ab06b84e66e70a1af4f667bd30344063238489c1dd6b5f2034c2749d07870c152dd3232cd80f2ec6ca5c91f9aff86d46d41bfeed253d4b8db7bf0ebd0ec2811a47a8ddf86477c086f50f9277ce97f3fcf7553ccbc5728f2bb663a2fb247d841cf30e38f9169e312b58c544ebadf73be9ae9de25f6b8bac15f0986344cc166a35b4f05543535b8ebf2decf11fbda84dd27182d92dbc8d67e92f12d70f166c8efcdecca9cf745ecc2049f9a1e67d04a2aa5d422078f9d5deb43580c451bfae4b2bf5cb9f095cbac14966e3ff1e21a26aff27e4c76ed22d2428cc739a288d7d8494060b7aec8b59d2b2d3450df61f325d6c4531db55482bcd7d857d7578ac95473efc8eb6692c60239b72ef5edbb056f90b118a4c922415805749e93fb3431a8b99aa7d48025c6670bdc6a0aa833d0dad4348b7da1ce23ecbc7896f69ad757df1679c0a5cd7523a03cd030fe2c7bbacd2b8d77e150e047095c1d4bb1255f607a09b8a11e3ffa397a62d9ec6e91131c5432effad80a321c74536049fa3e59f6a5687a9eaac72ae5df1754dc9343a1eb4704f18669d1eb32f280ac1d50381d8b31a0fb01edc8d9583e5a9965c6f9cb46c2c5849ee838f1cbddce9bb7692b31f25b871dae9b856215f0cec230197442b3b6f52bd0ccda75d71ad12cb7c7485cc38555ea98b7a26e4183ab652d06a8224f94294112569dc4c9cde2492653f88f8d9135c1d911d79c37f359b1b562267d3d72db5bef10dccade5005a26cd3a08a466271e9d7f136eb43baa1b44e526566363f37930af326f2ca312c24fc78a500e9b3d402f498460c685b0ab21827688dd49f2379c60d4527b83e223947e4fc1b23139e135c28d4202034d62eb5ac20766028f9cd86ceb07a5e016c34e9fe0c2c7e1cd7640b0285c5d4800d469d389b821ba2f63b720c51b791b22be50aee8a93de48b532e9bf992513cc1a0c4b3e4a643a3aadced721a0617722a310ee54759ae5711cad04a128a9adc7860b3ec0954984dc0e7d37f9c7f3e8216fa4871efd04971191869b1402d193bbdd01d8dbe64ecd446d06ad08c233782453aa230031515600a9e0457dde280ea851d4e27975535d321ee0660484ff3f525c05450584dbf82ba820b65ec18164aa7c54cfdb3fa21b42a372b58ab5c7d6c13df6e7a82abdef621c4c460a7f73214e387ebf0e05296eaad5626da343785d301584dd9a8b2b75299c8fec42295cd2aa5e571aea4e1d29beb3ab715b18cc8ccf4aa4524fe63b9b6ae5d6efd3a38474db7a36545f928876bf966644f54d875d7e351efe472ad479bf6fc27ddfbf6c031208c4542ae0c0193f6c2c4657e9ae1c6500194536e2dacd49618d98137eae614ab27ff05d8b9ccdee6e982eb5065ecda940a0b4b45a98c355d432f2a2d0243c4148a2b88ba3c0f3b95d8825db01d7e1108da856a660bc8094ef4e2c0fe11ddeffa41bd9627324d03a2f91d5f24711eb386a9238e17131d52b5ab1efa985bde62b687413c7fa16802369f05021c5264498a643acd00e1cad7477077609b845090d1693012f61f24a5c9e0ff6e282912ef97ea95712b4438b22848696b0c992019f5c1856ea100c8ab791a72570fc6c8359bc22b27ca7210d298fd6549c0d6e27ba60d43822b2a6c7353f0590ad82c47df2dcaeee4e2600acfce259d8be09164986b5d5436f2b6a520900143d83e8b7232f8272f55c73e43795a65b54718f5754124e4ca38d384e9f9bcaf036857666217dca8f9537122c201b6ea58bda1ea616536c936725c880a426ec76576c6ddb0678b4ca7f841268c0483d64f3154e7f52818e84bb69a05ba9fd0ba25d45632583d0365e4f9d9ea4533342cd2e064e6f3e74d40d513546c3fff52866ff80db245168ee15c85a0a7764b8e611463418d941182c30ef4ac48c49b6a64af5084b87e0761b009660fc803f94395c73e803cc71448305086201ac445c0c9057493e480ab236a3dc088f387bfb4144d63cb2fc60371524c5c4a7cbff75399d1f1dadc2eb0b08ad0ea4c05814f380a9e6d410895c39a0e904f72d7ad5ac4a11384bf851ab5759b04fe4391219bd388bb1998e4551b38a759d1d93a1c492125adca9bd7461fce2c79f9922c44b34b6a22c26f65c76b2a0fa8a7a0f1f3cfbc629d9e2e16eaa6c512ef051254b0a3f5320b8106178b7bf81efecbf97f5d5f459dd032bdde532c408ca204575810ad37757a2afe50325bdefa1a496b6bfc53da21e0c0b7763422a73938b4ae090f3a7e1de28f5f01b65a09653591c9975d0ba291513a0c26fa9df93caacbffb88d45d856a4b73f398939c1fd019bed2f7508a2c26021b4189a315da54980f533702008f59fd4318b38e18184e34c3be1e27451e6a1a3ef2214ab759a577f8f2668a6c2be957c5d137ca0d45199f050e1490993bf5ad400669b1209856ad2cceda13a370338842514179ceb01a2010a90668abb349fa4d184ff1c38825a13db5e4409f2ec658b738ba1bbdee1cab0a35f6913396f067a1b65c9fd7352f72abd444931511f2780d15f4ba7c0d5212e0521cb18930b342c54f74caaed073c4276c591aa7a67fd380ae2c8114d2a7a4ae9205151be7ebd4dafb632eac000cf3eb5ab7678f829314967ddd92e683700a3ae80f789a3e3f903c36e8dfe3402b3d614719d6bf39a127ef9c795810e03f5497b6b837d7154a22bdf1d03acc0a58267e4d2871c748a3b6ed26d9da0b0bed0fba902c6d82328582cc847eb1c56021947c1bd542f4b653a44a47c90a113453e63817400addc02f50e000a25ec99d47fe4809a846412197269f8dd699324c84b54aa23e6d87d086c7ed9c6d801c8dbd1f873508f6fb838d9101c5c68e3c007908f0117554b7904eeadf93b2a244b0e9bef0a8a4f862fecb78a3efb971027281f21c87ca14c9fa357e15c59192adcc056eaca0aa4ae8c3a78f6e6380e1a6034dd08e31d8d18d6f694b7883eeb1fa01aa00499202f28370ef40b75dc3dd4b580ad6c5179aeffe5e9ca94936c8268d4d1abe5af6639373041754b6df60d5c6f56ee45576a0be458ae39d98424da2610e3ebdb854c9881e0754f7fd2823b43f82a47b46616439f1ed8373b998efe9f1cf7fd453bdfdfd135d28ad7a085522f0f205e05be2b64ec84436e45e817473b2bd6481eca0f01dd157310df19f2d47b883f0e70c6f74087e7240fd949fad24b6fb4413d549d53ca42468676b27cd863216b6f1adaa7978eca6356a37c69a48324b9433f8b0ea7d3a5761763c845ea99fe610078f704f4fe949e094fee0f9546a856ef039d55dedfad2770f28144401caa4c49723ce8bc55f92baefe535a0a12cc16221be9dcaeea5099a3b01045dea85147db8674bdbe2e4760cee18715af18d929bed101d1dfbe42423f347d6a110d59b64609829fa2fab333746c05c9e82f57a99851929643497ebf51fc1b22d14dd40304086c9281d7ec0b337d022b1954cb579ea47674849a507fea5e9eed0fa2534801daf222af50b68c59d90d65e42cc25b2cde65a0d3dca08d9d05ef047042ab0cc7b95eefd0e675ea270896703ac8396f0592f4d75379e72b55de7d7701958a12e204e697d2fb51ad2ac8eb4a00fe94c665d9e87f8ad8dae94338cf2164a84578633e55cd60ea4c4b6aa2a880bfa15665e8393d24fe1fc179a097ba77e624892737d04b63d3501f26111bb9cdc16613d552aa686e069147d85dbccdd83e0483eafd050c1516cce891ebb89a13652f5a12c72b884c5be0a0a88d0427cd591722aec42cc553267926107eb82208bde6e0b45c0554d8f2f91dcddc0e9fe4522d9c09a76789cb595d00c75e8ba9d68415d7c4c18af294ff39d83826175c30da48127770ab067426155432d4fd96b97ceaab9cc4a5a5d5d9644420ad2242f4c2e5f4fb4b16eee072634e656918f85b26f9fda2b63b0d09ffcc1e6ed80ec8386ae7f4d4b65575401d14480be653e172ab6bd596e092182c4869e548dc35da7087fbf4abb8f9739b5d70a27eaafec990e321ff32500f07044e543805995263830ba5696c44e4d01a3d63322616563a0f5636ba5a2012d1cb10796d10a6e9069b99c0ce78f8c887724b37e52a8c947195980ee780192677ae6e4d0145a5a30584652b962e30e438ad2fee1f0592ac4727b2a710b23a4be9a1fa1ec8f132621af8105a4fa4613f3aa9a6c1d0e27fec1bfe73ddc8327235186dcc2c26dbb2613d682ef8f360419e9fa178cdf4bef503e102547526f4035f8089b33ff9d32b51840a71f0fb090906691c4f89c8bf1faebffb781f05c295b1758e2501d32668c7db7ff7ea250708249fa2f5485645619598e90a0cee5120549d1ea5a28205add02a97b05040900a16756c494ef2a63a9402d53452019f9425676f6f2f8454888360b3aa414093e85c12dd9bfa673d2f516790536f3493951eba6481814b7e597c6283d0fbcd43319a885f91b8354bc80abfb0b00c4408f1b032fbfd4599ee38c47f34c0f2405f8de65c74694d0a5d15577ca927aa10c04c39e67da7ac47972eda319d24b8e96d9222aa7ce79b9473a9c81a6c96e1ae310e9e1637da4301d72e0387f287b047d157e08b229ee0ce8564432871d5b53d0e0e927457c040e07b0c3cb56b7ca02836b3641942de44dfc68cc9630c0f568fbe02e03211993f7f64fa0c1f04d99fc82f16e724431a37080bf03afb64cf0861952a6653cde28fd9e9ac88f8060d398372d631900de919547037c003e905ee769067ba04b7d2f00d95545455306354325b159c747d0a0e1dfae095b607fc29f7a332aacc16a552f44423fe276c83e22868629c91a458f5031e4e95b1a020997d408a75be7c70a138842f0212a1165e8218055228781d2ad4bc3029be3b8312edc2026b9019e214a808363f5c379f08bcb624b1268be6c5976bdff40448c26090060945f4252042233167976d2f3041c81db8ec984fbf18b39594ce1f477e58e3cdee6198175386d168bb7c216ca77354e37ae7cfc21a6ac989756a87875e50095626cec0b0e6a3b675d72b51823d136691580aa323da82943bc6189f777aba9a5754a357265b864a80cba978350432c78f802fb9f4186ec1fcb68ab61efc9ac07863bbb1eb4b0a823d21b93b629141b98800e14140532f4de9f4bfcaea6913f7dfa3fca71199d4e0d270e3a1a110173626aea0e7193affcc956cf0861b01308825a14ed715d08cb807360196f1bcb47174ff5650d1f40acd9f48fd479d0fcdbb6d5c912ccca9b97c1279d430d7844bf91cf375d9a1592f645517cebe81104f8f664f0ca154069c3a778379bb42d4f60028fbd386e6259274056ba8b02fdbb99a81f0591247d2745b422a9c004717622c214f9301c7f0f4dbaae9fb7a4ba40767229dfa9119450000a240ae2cdcc1cbe973e972c89d79f325432e1d83375a31f7131a816cfe087d620b6d519a817b0d9f7605136144643cad52c1010df82599288a983b75494a7bc38d4099bae57589de1779222e500e1f1c357a7c68ff3fcf359ed10042982f271e40bc587ca0f1f576ac720f8e1c240ca88bd1251bccbe030532cf8601eb291e0e5471fa505f4422d766706eadccecdff271b6c2ddd26ac62ea3e95e55ecbe0be274812c0da27f88f62e8021f56cdf72261f25b453a63ff0ebc7e0aee46776b6657e9ad8d390672ca6f3f4e577a2ad1ee7cc72eec9adccb73ffdfbbb18e3ff87d90bf389761edfd36961b14a5e3e4f549ad9f249b266f34019ea1179ba6125f2c35211b311a0341909a629fc692619af2de59db8bb34199dd4adbdb67209d84adca8a67ff32b9b612dbf261c900210d3a9ff4816088cb615c3bac89d070ce89e59f98c392f617808b66240a5f104796ae7b57e516c47a0fee15b835778fdc92ba80c3cbbbb49cfe24af4f2666cc449cc1006cf58ca2bd4ae0ffa2b1163df45206f1f5e6c9107485f625131e773375fa6b819e43293efbbd009a83e58bbe19fc216296eacdb118f9386a5289b00e6b40a95a96c86d53ee12aa9ef68d32d1871ce08770d9a15a2a3c45041ce5d5a20eba1405d2bd81b2be15b959c16d6fbc9aa7df7eaf42a68c6b20557ebab2d414396d70a0815849c58d651d2acf441f93f8ce7467d46a88e4e8d921dae1d0cfa552963592047c2573c5d92bcb107b1e37ba33436f91ca32caf37f5ce3001745f596701e5c4043bfb5c94dca82b926a9c8d9ec37db63dad2447c7982c35bd218f6cb1809e6560f1d527f76451223316d7c45c04b17308290441630e65a0a2b2e155f7d46b7782f3b1e160a38374b0d43434bb55e8708ae1e62211c74801b5b84f17605191a38a2888b500e1d049e43539b5c3a1826ef5767a3a0fcd77896a54c647bbc4ea38f3bbefb4b560bf554e0aa7eb8971db86c452102fe156551ef3282a85e9dcaeb6200098244271fc39dbf5016677d6c69504c5502225694e73744330be3d86ccb85ab931308867dcdcc56f2c318785eb4d2f6f3e648c92934076d128d6b7a1eb4c5f12afbbb131e48bf297c39d76efbeea811b232a5208fd9bfc7a253d304f4625cb88892a28fa937c2786cf868f6a1bdc8b039a3c2d59c753055b884611d11067c9efd7a3ec83eb4f50f71fb404b4344ac170b30c4ff5242d590229feb1a9da8076e261593ce0b0af681ea7ce715377cf946196a477a23647274d9b49cd2b7d901b88a8e34c65e3520aed9726c0c0e44bb670c293e0c6b3d93e9d3cbc9afede02ed57fc155dbcf9029c7f1b65031c1aa53c5776bf8fec6a7d63aec509b949690b6192db15ab590a3eb485ea34ede9b966e91355d5ebf1e733217c52aee760559f0149d0f9b4cb25d526282c74f45f20952cb59edbcaefa4138448f7666084ed9cec4b884c323b70b638c0064d4b62b07dda7cce439a000c4df962db42f0fabbd4b0167ce0a7987a489560a10527a1c4279431af37730d4650f94074227d99b847e8ae043e7cdb1ab21add329b1e77876466b8cdafac79921fce229c3cd9abe552a03f31691c51616dbfa1b34fcdae74f393625934cccc6f3afbfd34195d2923030376258cbc91c4288a7e5ba2b71c4021a3a38ddbbf221474c64ca973e3ac0a42b220928190ab9079bb88530a2cc4540c1fc234424ed0aa0384eb3eff356f62813c8b42e10a5a5f0e21ffd3c59995fbba074873e156250b7b3fea32acacc281e8a276d30da18f62238d6b8a8176f1b258ed71c0f076a2e317c5edbf3ab4782792c780091d61a1e4bd8cf0acfcc4489702ad4cbcc4d1009a55dc85d40867620642c867c43589c870741405c00578fed39a089c28f45316f5bcadaad8d34a002e16010224d96807c0be605c3a8fb4b4505530e5b18903bfce78ba86566eb97ed94d46b49da6f1e83dba68c0f68e14b3cb9472637b07fbab2660a60b6a26ab05d8bd1e5ebff5d4e3c5cad0960305f57509cd8ffbd08e33dd7f869df1486929c5546993ea7a622a84833ec44033edd4c631027b7e5aab5ce903a90afb2f94ffa70743d4cf0431208b68f96098250329cef6358525653a0c2b2a7504d78589c052b09530ec68ce0a301e3cd8433552c672000550328844b5a751575eda4b38edec15d91548e5d3c9c3753307dbd262ff1e2129232b35b74b4b39d08e8a8aff66ccad5c4737b9662605000d2e8f7ed3b1d628d3c8eda368d252de8d3662c2caeba70d81803d184e1136d4618319b73ce3ca4c784e1417e6ae803ca06834c1837eebe29da76832d9c668235532ad98587dcfe37d824c2782d0e344d9ca26cb46e1f524a772973eaae721d6a436142ed92d3e4326da78dddbd8c558a6ed54ad41c5eaed8e279f51699c5f49a6760d8bda4e7bbe770971de36335477f1a77a05623b2cf129a841e0138a8f375792f2b88878bd7459a9efb0e836af7623495bdb14ed0df5b348481bebf514635bd89d550357214ad4839b5876bdd7a451a97464c0ec20c31c75ff24a1aed680b7afc1c86e1d0f50e8e295112fa849e9ed877f3fba52ecd19b0ba5158ae2834750aeb00389ef13e32d3942a17bf74b3c34c9836a23302df78aadc8e21ce1ca1186e744c80b7bdbfdb420623303d6a60ce8a6a7fcaad38991a2bd27bc33044fd42b4c458d5f5f9a5a440e679f906d883c9bbb1b1807deccb1d67c1d17c3d8710a537a582b6317ea7e531b6046ae0a48c83f6d20aec535577c7ed3c900008828cddad84946123258f2130edb66230862bc35ba1aa72cc6e5625ee9dafcd48ea5cf1e1b3b1fb8c04ea047e79ee3c98d989c7757b5e8ada5b75eac86d823238b596f554c8af76c24144c00455a73519dafdb167e2bba737c2737129ab425981f0d92b749c6b082276bc166caea6004e918740fb7ca99774777786507ab2332598c70a8fb785a48ac3182b23fb77d8c6dabab4dcc19946c722b6fd313581f6102a5843d4d6f653d20ceda798dd06b48ff57016f5c51dcd1bb00e90920e416bd0d35b3fa77d39397377902e1bc37ff988d89c48a0f6dcd5aaa2fab619c6af0acfa1ab8a9a92e3b9c4a0fdc8ceb23cd3f23140777567b9610ffaaea5019ebb2b1e1c4c7e5257b9433acc2f3b004453b06e9c0a673aceaf485a4f36689af657bd5212464913a1c6e9f5efa08070922ace96c9edbdfeb7ed05059d9466509367189150859d556528cf51100a249c49424f3d85448ed7379286ac030e575d31f5e2b75cb799560670eb05970259a26c3ac41e4edcde78cc88f8767e0a95e3de04dd8b9ecb77d33d3436d0088f56c3d4078404547ee9cb13ec07aa9a5fa3fab46a3adb21de5fa4576746e85e2085fa218767b6baec78e64e82eeb66c7ea38e20386b90eb1d3dcba1b53cdfb574fbb09d0d91a5f80c12b71eda7b3f7c262775482349e19597a838a1cd3f6e7b745725fdf870559640c820c33a3b162735530aca063553c7e8b5bb3667f3659dc5cfc9591dee14cf5c68c5c7fd77db31e9d00a2891852e87e75286cac794a6af306c986fb29db10e51ee97dc0c12118b5129ffec561f20bbda7b6a3036d7c1df1eeb748f681d4406b3a02aa97e1abfa5967a06c3b0fc4170e6597758c2dc9fb81f94a2a10849c781cf881eeb191fa1b9af7893618522b1c709c6e4c55788f87558ed13421a5057041a9a40fd3f8766f7591e99a745891c12f45d0ad07a37e83c97c2631d4621ea0846912f0dfc756680739e58f170741c2c7dcd6ad5c5de4e5ad3c38536dd4ccfe82343a7d9f36a7fdd85b7fac6f492a170622d80f52d9696d4e29d1bbc91048ba3134692ad3f149b77108d8dad82f7e971a94550124b5ea4385958cd14259885f2bf0417c38a44cf9e931d43148c63973d5292a0df36779d8a3cb2018e7f9bc5def854d2d2c9f60b14de08c6b7792930111f651b6c3fb17bc20bce3ec3edb5ef984cd473b26e063f33e2964f4e2598c9b0f22b39555c12b24555b8e1420067435dc4899134f2efdf7b8e3134ab070ea9c06d985948014261325d508b91389d0f7d59d4c24ca2ac5ca865a5ce687d17d8acfbfb1b06baabe9ce0d734e182cfa2954feae8c9e3469e697b88e6db002ce87eeaeebfd839ec67f6b49317b5ff9c89b3984db1dfe762297d21292489d510b9cab062cf719185d0128768fb52f1002c7ed092bb7271d0fa2e73008fff1a51d01c80c4746946aaa53f5d35c0b5c47b558132bd5377ab14f36cedb8f4a2ebe8962d6568c7d0ca67e0965448ef022b1906b18b4266c70b708e952064f49cdd2312352a1b7ca9307bfed4762d6fd9cf2d4d15749e548c81814c9e2306fd8e0ee8f991e02263f8effc0fff2be117ed8bf3436b8bca9698a520138b22ac5a36daf27fc5c379d5dc0a40be5fdef049844603c09a9ee36e37468ac5639d5e24af997452fa41974629103ba21b4555e8c10a61000d0f80045ce3eea1a67d317a28f133d3701c078f4a2d0a5debc92c6a11d093e126638ab66019e24aeadfc876261475fc6d2a37beb6efe724bb3ce6b2c506f8e10951296e241a35c93f72c81864573a9ed15a9155a042ef966b4ddf68b4a03b9160d7e1611836bd4fc0b1a24bab953a567cc84e8232132e660d943b0b2fa40eb47e87ddab45d0f9a854e58ed07052a90aec88955dd3c3f35272f4c649e49228d234777d51d5dbb0974922530a4121e3f352e3ac4d8ebc98a886e2af20051725d161976d88f5621d6b2ebb8996c474e61911c9ff66a99c67f1a84820218d993e44aa4e2f0c2ba61c29762fbe9f9cc7f4dd84af0768338e4aa1681a3ab12b9ea68ce54848978a534fd4e52b2655d45fdc1c6066c1813652c797ab48bf322fac9a02ca499e745b505a514d07f8080abc55e0efa8609b5580de55496a1264dae5fc4fc6f64a2074a520f508eab35524af3e51d1858161c0100314838b0b241e263e873e42b595fa066a6c8e0412ed561cd6c6d86e429bacb42677b72db794324929039607f3062a07daa66da32490624831a498528c17e3c57831d853fbf40465d48180c480c880a8806056484888c7a32121c6c4149ad0901093c994dd9b044a3f85994c4c9c361919fbd309c34e98890c764d4e4d9c644444464642264212929089f04dac09865958c9a79f6444e4640a01f14aa491a80b7119f4c19be6c9ee6336a8e0b21826852ab4a05a99252c762f76b125eecdaa4cc5ac5aef8b5b7fc32cc7f762d91e9165263115d8c41f0c642328575c3722f2fc10c1853ad10784ebcbadce8d0c59c05a46a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1f1d078683c343668b11846dd77605cdff09d6d5b1ccc5a226e629432675af24042ba10ad83a71cbfa74b242b02713984514afa601bcab22c671bd26cc886b80c3a82c84556a43366650b8cf48d292bfac00e6cfcf23bfc511cb68da3bdb0cd86becf129f1f18818825b41fda0e487b7d3e99e3b89c6d48098eb346c8db25e2724b7019a404e83bee3bcce2ac05bdcdd98696e032480991fd0ffe601a316ec0acc53d481cf3869408c3d05d4696724e774a6b9d1f08698e2cd01cd303818befc0f80e11eef58c408b2631564dd3344df350da92af7934f9c5c81e6e0c48ffee0c1277467e2440010f11202d4b4944be410722701a80710288c8c92c88068808cf0652f441f800d8b60f9a206e9b37c8b43555f1cec41ddaa22dda32426b65a55b405683b696a049509c4d5bb4d5759d88ce786a894f64f17b77cc549554ba8effd168549a27cf2391489e14e55c2ad18ff1a5fc0993a57fac55bb33204eeb9db93377c60877e6eed0367b3e6846892ce76b1e2dbb587d6dab1eea824b0b6111b410e60889106adb221186a14b4a39e71026c8c78eef1eeef8bee55ceb9c18262f4be6ccdc031e59fe867118d9d365feb0e3678c73442090273a81700e72e7cc71a11066c9af0b755ceeb28b755dd745904e08af1cd14bc90b182c562e6a48a162a545ea69dd51cda89ca4a094949494dc04a1a51342b1da5e590e5f6595c90c0c0a752f2a1586420853b4c9c7ebe43385420893c069996e7a849bab8536e5e0b46e6c3408a4615c6859a38612173ad66869da86b76d73bdd0a696e926aaf8e9f4220f662d2f87f752da29bd4aa14be74723221b12d10bc90b8cd015863a9125f5a297922b0c53288c3fa0cfe773c4cd0dfe7c40190402b9c2179ac466e63e98b55c5a5a3736332e98162d4a3ea057c86b92cb39bb56b4a975633313553c0fc46b09f190cc23eb4cd4c997452f2220e6cae4230c435718fa78bd4ac21de697502817f1153153fedfc378c1220b4276d33d98b55a4c3bad156dba31d9ccc0e888443f2aedcc5bca9bf471ae4aaea75a940388944ff492734a0fe61cd18be8a5e4247485a18fd72b2c094b4a7c94e8520f970a6d6a996e4c36510504ca9e4ba9872eb9268adb3818d14b4bc757394767fbe9e5e4d2429b5e39392b9f290c599c84ae300cb7f003c5e7dd05064b9172b95228147c7a710f4c8892727282927292a251de6abb33cc54adf82ed043cb5ef1a847798bf214e5edc909ca538af2719f9c7c3132ca090a0a0a45a994bc7c1593d73ccf43095568121b92191298a8b24af1fe1b14d9fb6f61f6ee79707bed78aac74cb929f494872f2e17894d642911bd98425f55d18babe42a39494939797b82e2a2172b33e32b1aeca703e530fb3e58729d5c3cf512a13e5318a6c2b0a404e54b5052b40ed4a3a03ebff8aae4829199aa92f7cf3379c754a17c8936f978a168d30f578a0b1586295a04048a16e538f9442f2ed18babc75c997c84a14949c997614c3a7e0412d18be8c53301018992abe4f22394f44b2ee2459d29ccadedcfb94a2e530ffc082b5b1892c46cff1b862f8bc37bf04f072434149d74e62cf20d87cfda64f9d36eea81ed33c2a02fb10dba6ffdb6af30d14ccdfc59aee8745a9f6edf02894d11439837d36608bad9cc9b9422cc160b0d184f27ce064075792a0cfec4a6ef5188aafa9a288f21e3e9bb2bae5c7c0daad5d3779dc8b2e269ddd9f4a74b54b578faf387b85a79fa1388a862f1148c61c383a84d270af52b71555799cb29aa54b217a91434a4fcb449d1f326c553be79d39aaa6c661621aa329a88f2f7af2e5f6d389e7a4dd5a63351350c51b54921a200f06d7567fb672ebe02bdb21cbeca2d9e721bbecc0595e5d821b9c557f365becc19d73161fc41bee98275cc96d972eff554acb8979445217776b68f760a6dda61f26056ea882c7f4c94bf7c997c60995c34534b02427658a59989fa7cc425986eafb4e9c5c5d4b2f342d1626859438696a1eb902e6d46393f293174aca1805983a4e54646d636bc6d9bd521166d6a09d9892afeaf4b3aa59cd24dc9a63403e32990f79313906f84336a62c4a3a47b754f9874392634b4c4912dad9423b2ac78ff90ef72361d1d3247e660fc017d3e1fabb9236e6ef0e703ca2010286f163df20aa30a09c9670f6636382d53cbce2b4c156163b35a7d4a3b30ab64335143e491d72427a37f72ce337bc744590dda2a6d6ad9798551c5643a81e40009024446a4d42aed1819c940e41c1315f34b97d3f130196102e5cc85b84d462ec970564a69e5f7d9345860ccf87c30c1d76079128066bc7f4693cd901ecc6c5a37aa1a74c82b74e1944ade839b0be405040890204058740966c228dd94643e1faa3b9d145f9723656060f24bc883f9a5cbe9725276cccce411c7ab76c1173154a10769ac460fc61cd183514764537146f7f15344969226f5756c7facbd5646aed2926056ad22da84a53838d4560ac4cb0b0d22470e2a034361a80dbdd14167662aa6adba5dd31f700cddaea90f18a62d936a8fe262dfb159fd6057eab9b326017686339ca1467ead94823d9faa60cfc72bd8f3b716ecf9dc0bf6fc908e11056632a8c19e9fb50f26c835626c01663aa801cc74ece934394e9446f24d1a69776916cdb00ed7d1f11f19f697bfb24cdf2d4416138ae885889aff094319f67cec0c27d8f33b1d250b4f7e8fef80d32e03337fd3be636666cfc7da8bb0d1ded2383afce6c679784e8c6b7a8b53350a7d64f1ccc83e6a5174fa189bf685b4c7909e5b93720b69b9b96d3ab7bd3fd631a2b82fc698c20fd2316ed8021bbfbf27d3eec762d546de78bacbe8da57e2f5520d33d9a41d9fda2da5d4ae76eb95544eccaa936eee54ce5ae57635bdafc90cb3e87d2dd23a3f32cb5e7ab2e8f9ecbefdecbe47cbeec7ad7d0a66695f8c7cb5fb5887b8ef4779643467a226cdb9f743de6a5a8259b56ae9611de2fee81397ea50c7ecc77e89cf64af2f710e735f40a26c2bbfe315a2d21fb94aad516be46af96a7365abbdfdc72c8b014ab7d4a4b5d7c7f6f2abddf50d4b2d5f653ee480259cea3aae9ebb52fad57ab52cb11673136fc7979e52d217eb042583a1b1f202a5e24de60d6f08b2e35f1f73455f2f3e0faa003d68921f3cadeeb6c11b66cf03fd7f50a86f6585be7290254aca16a72ac4b381be605c15cf54daea731257d4c35267d0b775d29de9eb03060e3cda377df9ea6e21a6e67f61cfbf64d8f34540357843ead1b37ab4dc55df2d44152e48163eee6bcf14787f44b1e77fb2963dff662e7bfe0da3c8f63d1adb3205b54539c33e68579869c7a772867cedd3070dc33de736917232c13d048e6dcc7db5a4730999f698a8f9d445eb948e4a6d71aa4e3b7ec4d9e00d310edabe615491c9291a34397d084a87c8fe5a0b9b4522775f9979f657fbfb54cb88cade836dd08d5fd3229d1fcfdf30ddee385574aaf007e2d85a54c93c98a57db6a21c27b2d8777f16395bbba1e637c8e0751b64f0d60ed86c8ae50c81caf98913e596ea4aebdd94be7c05b3763606e877c398edfacdb0a6c9c8da6b525e6badf657c3b36a9b76ed7dfbd25e56fd1c26cbcf1c22cf1b64f9112f20d6c8bc0659b2fc731a64f95ab65f6d95db966c3232084a4a300b04d2876a12814d5f6a77e931c6fa0171dc30d926aa8ab0d734006ef45ddfd876a05b03014aa32fbab9de64baec9d0de6cde5ab4bbff9253f6650e226fa8bfeb15fa2628b1ea9f6682b361979071a4858601b92458cb6b2494cb35d2badf76d7deb5f5fb32930cbfd57b00d5aed0ad5b70566f9174496980bccaaf73555d94b851fdcead7a7373c2dd3f725839c3d78c31cae8f899af53d6feb6b6f1f6bcfe3afafd5b0b9c0f4351919bfc43bd4d75ed374fdb8f1b7c02cfcc5c8155794fa9d34fb1addb4e6f916d806f53c0bccf2784c5c601bf433b12ef0c7adb9d8a8bee101eef531553c78e17d5515cc72fa61ff615f0f5e0d214c05b8efef1f0fde75815128aaedc6f4f53153f36bc038cceddf0d276abec7208397ea5a5998601db00df989e80b9c33d5d4ae9cc0c036e4b7c1c0be6f0754544f29dfcaa75fad0df971fbbb90292b6c437e94ae70a45aee1878077f020a2044b0fd290862601b746b323c1ffbd5d6141573cf3cda863feea0cc853a178d4825770f24c4dde424af659cc0c7fe8883541c347a9838bc07af77b62005b445c61e5ce40e0fe9ee3ea774799b9037f94334b2b16fba30214b9f2e7267d377f719a3dc997287b63021278775032dba309928d444cdfa11bff4bc67efeed1b2462671e0d1b146365d076eaf8d3ea9fd1aabe74939a775813637ea13e3e09b3ef51e13e5e144cd21f2fd885dfbdf30ab57ebf7c374bd943aa5966249a055463b77757767825a32d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d458155010549794ae329117f5fe4d4247b6c8d6ec699b76c8d6ae9695b6a6699b686b1f0da4652df4d9f41d03dbc614fd0edbb8fbbed66d988e35ac066dadd344dbd6b6676b9e06a2856827edb4595db726a28d6824da6f254f3222723285807825d248d47ddfa77eb41ed8b24695fa812ddf3fd3924a1a5339af4ca6fd4a3119480cc3acc5300cc31430959003a396d2187386578e942c0cc330ecca5c994cc6e3f164f72621e5f130a121418bd990b0c5608c31fe72feb8100e611914ac048f47dbb439a788c808496b12c9bf8cc78917bde87c6440a0cce59c8fb8b901e5cc85388e9b739e4e59080212623221210605253bc171a6d764170a85e69c2020212613139c13a15027eaba6eced97525251e8f683422954a2524c4a06c1eca8e9890135d271a8944a23967ce5c0887f06785454c8ece892c7f0381b27b3bec29510aa5e50b6689643e01b8fb315193f423dfed4c95ff4475febe3dfebad7a6bb9d21f2f660f7ea7e74a596afb8ae156a71ad518f999a3fa241b947f4c885b70fc4b1b71f85334ec1090b78302681010f46251af0a00d0e7810c6031e54e15e91c54cf160d4c2f67f808e9e127907e806e8e829d333402f40474f81748fe918579beb04f560ddf66ed93b997891850b37fed26b588fc291ab07193f38728d7a4cd4a4e145527ffade1402d2853aaf0bb9d028df429fbc487f7e459bfc48839e852ef9171af529ba06dc6198c539a77dcfac06cf94b1d20f57a2593c488fde44affc478bfe44b77814ede251fac5a7e81abee3748c2add17432ee3fc741f7aef429c6f7fc3a4f8473da66ae49aaad2cf1f6114cc2a95343599c22ddc3ef943bedc5f65c32d34a848fd4732027260d8f359a4eec7546d1f0f2bdd6baaf0cfef7646300be3ae5b21ad903e1985dca955732dcd2591c3c8ff733853957dd3fdc1f984cf1e369e82f1e0d4d9fe5366aa64bccf99150f4e9bd583b308150fce1b9507e711373c385b017870260100d583b389ed3f7d982b2e079c3f8013087006b1fda5cc5c71a0dc218b00e511a04c02944d6cc903944f6c958b07a516542d1e9450881e945e5879508e61af460fca32b078709260d7f0a0c4c2f6973d22cb0b304601c61ffb3481b90ad90c60ae422060e4f1c4f6973e4416d4cf4879509680a5e4417903d0835206260fca176c972b387950aa60a33c284f00d2005f802a581e3c6193b9eaf4fcb1b3e75a13c5e1d8e4ec41aec525f1713813353b1b01740278185c8eafbafd81f9fb408f7bf9aa7ba53e1ab8570c6ec607fe06b9170dee650367e25e7b7ec8c657229b938d888d373f94e32b11c8e7e56c1fe8855ebe12bd3652e835800ff4ba175f8d5e3c351f7f6066f940af6bf96a64d3e5f86ac4f2026829e061e4d4e87212d0bd7c3572d9f88a04e3a91c5f916cbc0d1f1883004fe303570af0333e1065808ff1817f00047caa7bedf0df87c38b7ca097c39f3e30ebf0261bd6877ce01dc0837c390278ef03bdf9a297af482fbe2ab5b8cde63e30d7f84df4b281c68ccfbed7a0dc9fe22b66dd8848ecd257cc2a7dc4379ca81d999582f4f2b514da734d8fe4852ad086ed0f23ae3c1817892becfd64fba7a24ae4fd55a2ea7bff165195f25a9ec21f230b0def2fa3eaf4fe35aa4cef9f4555c8fbe3a8025179ef3f8a2ad2fb83445509895d3fc56b557b29b45793eb839ed763a2a607e3e1d768d0b2a63e91d3edc2fdc2150319cc9089a015ea38cf5b19e707c4b13d52e9fd3d52899539e9bd1e5355fa78884878aea94af1f3bd9044825929526829124524b28844f64d1ff06c19b57c5552c0075e1823189f80d1c8e5abd20e1f7811f081f9001fe819e003bf001f88dae0c8458091cbc607c620c1f8ca6bd1819403090752cb571eeb03ef0004f0811ec955e3036f8ef19be45aa1ef8f95be3b13355f858ace5a74e643007406009da974f63251f34b2dbef24636246fc3077aaaa7f18179c6c7f2d9b064f060c5a7f8c0acf2347ca0a7e2531ff8df07a244bed6a9d4e22baec5f485782d201fe865d36f1f78bd0fcc204ffa402f7b8f4b313ed0f35cbeca30a5d5077aaaecab9f976060945ed4e0a2856865c4c2f38177c50766d053f1818fdaf6537c206a65dba7e18bb1eda73e30c60637172a05e544dfd7bc3f666abe89be51e8ac44672e51856bf93ef08a7c603e712d2ed307de900fcc20aed67b1f78eb933e307b35c378f6711f78c1bced6f1fccf60fe74ceb1851d917fd31204934a86277213cf25c1253e5f978983fb81687939530abd66d9b3f46e68f916ffe3051d305b3aed603c7aebf8553b5851325f2606c62c5c1786aba0af0c5f607636c7f90c6f607638b3b6d4f7a50b4bd7bf0b4fdb79b6c5f61ef1f7823e668546fe1e67221327d7073e5b0f5e0607ce5c1b88dafbc9608f799740683109db90044672cd0770b11359fa46f17226a7e49df2f449418226a7e485f3244d47c4e5f3344d47cac331144d47c0f46fbf95ecb3d9f7f0dc89814418e1385b1c7eea05909c06c067bf6982aede361fee6da42db61d6fd6264bf7efdc69c1a732610f3e5c53e75104d3b6d17d7aa2b9594827c6a11d3c6a6fab654fb6bff566ca3befd1a522ba8d66fee983333b6ea694d1993a91666c25029a594f6845994bb41d81c39eac77e75ea21a62d3eb5263f45ae021f9d395671549752448bdcbd1adbd9f4d8adf956e9bddab35aebacd6e24d33b03dcb38b0bd4aeb79ed568a55e9f9a8743942b2c5c8c2d1aaca3c2f68b470628ec6e9b945da0791880b3db7fd48fb307a137c8dd12704a7a5765fd3befe47e374959ca6dbd65a2be5b4574bf16bdb63a1d742dcb66d4d84381c9cd073db731f12fae244718fb78d7bccc27884f1e066cee6f160d87aace7ed6bd769cd308fc56e66f10e52fb64952529bf79c4d5e6cd7cfbda5f9be9cf10d9be7633fbd56a4b2d09eb106dd86f26512f9eadd9bad9e5b425794de4a1bab9313d5f9e9a3b3a663843f7a1c57f707101e2c55f3c08893d87e7d8539b4fe8e8cc1e134fd7d4b4ef5f65cf830123128804e26660a4666066b65028f3ac808159a142249339fcc19f51124831a418524c29c68bf162bc18eceda3de7e08aa450bdae28b91690b4a2966eb8b17342444d3368cfabc6906f460970303830a0961c264326158e6995971c2b0138642cdcca050580aca8949c9a79f6444e4640a01f14aa491a80b7119f4c19be6c9661040054d8b3ad0810ea43083d0c318dd9d46c16ba0c568315a4ccc27e613f389098179bac8f7cced6756ca1817db6a31ad6e83981a54a734e83a775abd06d5290d64462312c99d569f414c754a035aabbb3bad3e8398ea9406f6ab775008a15d34746e982827e5705a29a5d6524a29568222627a3d427272aa1f86619809a544240444d33f42e2d9be7e23249ee781be5a31ebb4831a7312e5fc9c481c273a461596c6aac53af03ac61476b74709daa77598804a44ba4ea49f6464341a6112c90953c9e4139a689accb6e10fc6f8e4791bc61fd0e7f3b1b644847b1073d98cbc80be7a82428c09874cd889cf079441d68e80be7a62e2e38406851813fe68260dd32c4846260111b998358ee3e6b4f67ef593e927f1783e235fc88b0876c262768233996e088857228d445d88cba00fdeb4101c1210d23b89424a29a394324ae9eef7fee007d2bfede50936dbb67138140281405de5386b39ccb25e04111eaae34648296594524629dddd3d36d28d90f586fe56298da896ca1f48296594524629bd08228c9052ca28a58c527a11441851f13455418827bc5eaf1748ca70cfa8c2bab1c938a595717e44947aa279da544c54fc2ae78bd3cacfe93ef58d952da5499ef387fbcf980be01bc4b1294663e5e49171de8b73c0eee6494dd33eb33c9b6b797f5664f4cbba400036ba41a09be50e0f2a59a07880b08dbbc11eb6fc6854c995ce49e9bbcf396f987cf273b7220a75a2b96354a951a5075d488459a7ab93c14dc6b9b146a3393712694e6f2b792021269f2669ca3e208e7db72b4861081b9594d29c85c8e0dd930819bc32329d73e6ccf96db307799220cf584d97fa94d807c4b1a3c56ee6d13612267d482412099449241217ea2a2591a614a952bfe48edc8926208847016fcbec517d43cf6b545e91f78ec5a85d2d4ee9eefb6a1d9fa71317606efba1ed3c6cca45150e9b1feb52f38b691d3c7583cc76b74c5dbbf6e39f441629239d1f4db7c44131cbe3d93c9ecfab94af5d9be9ebe345dd7a32ecb5eb239a4bba7a10b4e3e33803ff267fb3da832b42640fc6f8e4d5a87bc919f81bb9240b89f27c31aa6ce9e5cd02987ec539ccbd69bbbfab75605f8c36cb3eef4c56fab6cad7de6af6dada622da68fd16dd354de6036363698f616b3ee5b9cc3acdba67dc38c72e4c8a1af8f6b331790fd4a44d8f3efc5f4339cc364e9a0807469912db225f360167d0fce616e3ab0b75ac7e733ad691d2e5fe3f39bcb57f42567945a92c5fc99c1b9c1910b0209f0415fa5969c71b71059d0fb411155e6db0f9c1b2cb5eaf6cf52ff70f56e3dea1686207dd9cf6fb2875bd3ea263dbe68fd6edcff34786901b61e53c5437c550db3ee8df1455ff4934d481c1cfba50765e86347d10b165ca6206a7142b793841d5f2a1157dd4b9620b25013c4195ee50ff2250829b3e34b1c4416fc333cafda1e9433dc8372c78e36aa50944774b16ed247796fceddcb7b927d9247fad26ba2d24bbc8325954a928725e5e4b464383727ebec6ce6dae49b3d3f73b92f39c7bea1e7e57c84bb849215f67c90d4b2a7ff007b365d4a62823e947557424297882059ccafba94c4444d14f781259ced034b4de00f2cf128e9ecf9195872b95cae56eb73ab84444ccd2f1d61cf074b4bd8f34b5128b54a2d8f93a4e7eeb2c862f2ad5769bd4a293b6be70e74df4ae547345bb67c6d30875801b306f6dd970f304a5de42f23574a69d537acd57443eedb09732f4490040a9a60010f183c91c5f4a09ba68572901c3e80d7fa9e6dbb3e3c1e8d6e5bfbed356d33226b7fc3e4b2af8fb92f6abec9c838ab744431f57cf2894cea481dcdf3374cfaf1b06d3f238759db1723d38d5a6a37cfe6f9640fe9d23ca43f5fbc0fc2ac7ba9f451431ba98f48f2a369ae5353ba46790a758d525d9f5813cc75c975fd65dab3b97e0ddbc8ae4936a6638c51621b79bbd423186fae453e271b74bb3665e93a84e336d72021d75ee7ba24724d1a8d36d7231269732d2a9536d79de76dae4320209b6b2ec475369936d7201b74bbfe8c90886caef1fee85803d342dcd7e40748b00dbab5d75efb4636d71b09c9e65afbdf5c7bb4de5c679feb5be21a3331d95cdb9393cd754541d9640add5acae6da51a8cdf54ca5aaac34d014a814941393924fa73ef6ab5327955c7a37e66c3d266ade88395b7bc72c0d874dccd9f63ed53762cea6b4ce1f1c0ed702c047cc52bd2623ab7cc4ac1b5456c4d5df302d9057bc6b0dd0ad42858c6d5719594776bd56d25e8f899a3fb6e72d667942f0c3f6f963cbf722f08d952d13b0e2fac64ab7d3bd266ad42345a3c83bbdc9ab628b591bf79a8c6c6388e3e6f48d95edd70711d962569a6da8644a9d89925a229a1100200000d317000018100a85635994a561d87c071400126a7c5660563e97c89218875110045118640c318400a3804186204343320b04986e61db4cc327d578348d024824faaca79c578f46eb3a6c5e169b7c7bdd4f91a600c7654ee94fd86568df1c9851d58f440af30e61d556397f97454a296ffed4c1a93e4e07a3c145a1520022d615136d3ced4815ef38dabec40cdca8d59eedb202e38a02788d79f1d8cbaac98cf81929468bd889b8c9f6d8111862acdddc862e5d2e6302801cd594805180204bc2ca95da843756a5d1b39efc4c6609c0c91d07c2fdfe9fc8543cd32b8626b902b868ca0fa4781227ceb62ce0ed2117b5efa3d1757ef4334865d8e4b50357087b5ec701731280cc6e28908b56586d87ead146c24283f0043f89b06ccf63789d84dffcbd4df53d47db518fbff28f24803497d62c92f7a236d1ff7d9c0220c00926005dbf47ab378b9e414f1c5d543683b65167897d6f3921c551f7171909186d6818ac089a01bc3f93c8d3ac10cce806a5c85fa766d30c50a9a97de8dbde457de0b5bfdc5eb5d2be0eb9437a774ad3a30a33717952b940c304b40261efefc886616710ff50ef62a73a0bf5d74df9ba02934bf645cacf3ae4664a4128d6ddbb893c75255e284eba99b0840a434653023b3591ee1faf93826fa3f8f0cd49995bb301bca70353d663de7b6f1192b309a958cd1727d38c78480c6efd024c8007fe24eefbc08c45039a4e72b40b575965d37e01693695c36a0ec4ed0b39e3d88278fc16371ebcc65020e2d93b3c01e4362f231e81329610e8b4084102ae791029b3f07ae229983d17aa7fa6835b084a169006a0392a3a2b69f5d011fb99674113bcd5907c7c497e3bf46370075310df859c90e21277906818724e059f62ca923b20c9c9246e32dac644a2a3380e7c0ad428d5c76c0911401ba3fca0088356e68972b1bcf695f85f13c3f074e751acdeaea2e89bda95ebb6efdfb6b0ec58757cda0cc8cecbcdb73e74d694a5f01924676ba0ecd2a2ac0a387286e29c6ba22d33fbffbda74812c9cba1ccb2723e2983120f4e9227ae1964c11102a0faf07dcc84e2367da287d5de73735813b9ca90dabe42b0d96d290906852b96fad0d8ac3e6c8b2bb1f5d5ea561f7083d28df46bcead11fbf42187a6b022ce74d8229382221777c66f59765a7382f41df827ff949bea5f4760d3a740e2e6b3fa3cb0194c4247198528b9b4e47f215366942605a638a4a2c2d9518dd88dd75cc1074fb6153f1f63fab8a3c97c9c5a7c384d806c56de04100ae24fec43bcae2c85420b9dc1d6b1cccd2b7d3249e716093b889742f39b96a7eabb94e86451f495e5cb5bfa906363f5d0273724672bbd0a3bb02f7becf876169f9d04476cf429412df8740452030be40f6d59c3a5eeafab089f475bf41988e4ac763bdcbcca1be2ae6d75615d548741deda44e5f90c3918446950731f9e67873fbdf8cebc69582e50c5232ff27f2ff72c4268fbe2ccca3ca3b1b62f844264abd87184988f18891074da07474b1b00b07de3baa55a94ac98413ea59f79aed208999b23f4af914d047b67585232bc477a010985970334ac9a9f71037c8db019190b9991924a84291dbfd2879d0a099113fc5129a04485f7528fa0447c143c150e26542bf78d024e4542a4fcc7eae7b2c553ae227c08a6699ec39d2f434e056031baad2221f7989df5059e13f49a0ccbd29ea5786e0fffa2cd91b19819995748db39e5d2f994fff02321d98eeddc36edeab90ea0439f501b849d562e950fb98f8f8408241d5039a92549c85250c06eccd87dd4a042fa1d919823fd92805dff62a6a41e00bc8ae09ef7357e2545961da14eb47e9744ab816c64c1d2194405659f98ca260e890c58c96638626d4554394a374a6306dae18ba9299245bf46ec4e6b4a43dc19d9c7230d30b5d9c943f30a8d4ea9c330d0f4911194b6885b911c8cff8ad0f9a31600e46865e80618008688ccdfcbbfd3abd2aadfe27dc9cfb070a2c3dfe10bbb16f46f50b8f2cb3bedc9226b51a6e83ec64d06438c853e8e0af1b3736924233c8bc3b15fdf053c30ddbdfdeabaf8906ac6db643e8b01a9eb3387d897a9089a0b72aa14cd70d4a0f25448cc06cc928ca8293e647f32767e2a72dc9c85c6efe4cc1118eb981808f022cbdda6fb168e60185f585c1a263f23eddf576377e571cf0f63c8c51b44e62cf135dbb34c8659905fd60312726b87abdae0ca3685ae8018f724824deef23566155f1a138d22259b5aba803fbc2b9df4f8e518e88792cbe38926139b6ef510a184649416ada5a1518096b19c8e1bdb6c128e8ebd49957c802de9f88f241da7f5eec4251d42f060f3ca5917d9ae9eb60d47cbb807b40cada370f7692273cbbec0457a93845a430052111c4c4f9e42fdbeba32513f576aef7d704270f19774793e01055d0528e83a3c2c8c851f7d19c51297d47a3f00085015beab5b72a863f08bd2a50316dae21a581a6dce8d5f7d3f629d1bccba307323918db3e10b5de702062444883c1c1601cabf8bfbd78b88cbf8e91cd7f6424cc19cc8c8aa2630090052cb0521e720d9cf57f04a361a7cec70b60cb15ac41dbbc352e29a7f13ee8a8b34021b9eb01651491c09e3c56836a20e1e04fbf0ca77622072c0f6457798780ee9163ef1b2a47e6ff4719b1bdc4daa73a10060120ff914186803aea9997002b087b90a4fa9ba25be83bc4e337bf8c56f531a18f192f7093af2c6f8d8826dc86b99474c5551c28def7ef76e4ea5effeb4f7dd216d78345fed7db505cf4a557529c9a31bf44e6df151fa6b170d48cb00238b12be7805ad1691f8e032e7527c0a5ef492e7ace45b6c3d3cb0f9a5438207ca9c118b71407ad868b32f310605c35d16ff82b6f906faefe1fb77de9a9df34adf4f3fbb0ce465526a394bbe093750f9399555946f8684d584f69783d0f6b8ee2744d852a80b79f68740519f20dbb6ed85b63cac528f61b375ddba6bc715e79a51355e7b07960c8cccc0b24757e481f23f73d2452bd68ad88359c1b18916ae8c2cd055804f47a2418bf23eaa045ea6c3cc2ee837dfeab4a55c59e3fdd50359e7df5976cbb1b454f1e5ae5666754e410283301b37e296ab966d140d793511b5212cb769109aa97e609f5da0de4e406c3ef4d9d6d1a5f2a2283bf6a01b0e2549be1738496cd0b84964a66a3be7a63ed2e60b4752807e7b232c988818aaca8cd4d740b871ab287b83b57f3e805988a2b2ab357b086160af28d5d7ce68d006ea2b337d021518673b1f85f264654006e9fcf348c37b87138ea03f5d9e9c2751bc291cdae97c01429cd8b06ea68fe9bdb220423b1f202d610f978b651b3598fd0cae1e3da5f06b8a85115c8a0b4466ba896de385bd96b58c2a7e6dc5a5ebe87758e9e28e307e420c93542f2f516cf8a5dd5cce40512109f1971843448f23a04d6aa0c176bee753ab414103bbdf206ee6ed4bc26414e13fe9ee58a848dd74f223730eb49943731eeaf9daf95706ceda1e35f4cfa99f469dd97a0f95d9cd36fefee788be0e6a21576d50fa237e024be4f589e10fe7c239ebb1d058409d47ba89b1a749be54c761be3ec9f2d4086890bbc6d85a7a1d17b3619d738551a27660c2481f54a7918b2ef3c6ce4a6fb2e7aa339d2556b4dbe55905c843f46e1e40ef82d875498b8a5935ae4fd480ed146de95d387480cebb7c97058dc0a694bfbe6fc65c8b2208f264f317c53cc6aea833bbfcfab88da30c1b07da116666596e94f4db4fb45651bc11ca59790b5e6cb919fd8d2e012514ea4ad339d5e1664b2b6c33150d11189ff8835821a21a4576d5b9b08b7468a6be2dd1e5dc7cb5bcac4e8cef9548d0e75e4865460326eac5093f076c2b75be3e8d2ed16b70b57dfd0956aea88db331e6d99c715579af86e4c922b3ce45cb08a810ff5cabd8d245be927570f1bbd54968fec68578852e3e0020b7e92af820978af4e2724c795e5bcf317e165d65341ed3a30b6ea395387fcaecc64bb8028107c19390cbf0b99f8e9399cc8ac927a861459dfa3065a1b6a98194ff1737f72fb01ed8feef3f1b4df4615f798f51d5a3537d0ed14180f00f5090fc9184a6400a9a6204db538acc8d502f3a5f1766cd4b38188dc8ae9fb2198a56233a10847e524644e3270fbb93b72900b08ee2a757435206447f92ae980dac7911f244c5297c3b535877f82b20a54a9741bb461ce5d7becb779f24a185467f88d8540bd2cd5d02c0f55e34ffd04b8588ab347a017d3fd558a9aa87440e4c69e349c5b44c7c1ea7780d19b61cbfee813c18c0dae7119b4e2da67fc92f74fd339c66b6c1e3d09ade2a3fa463a2bb8cfd45c2c4f36aacfdab458674230a06b28b1d18ced2e85a581b022f1a2ae9a4348d9b85fe8c0b9401c08f72a98822cede89df0ff22835fac4d268ed78b7a14a6a764022c9835b37a78b465a05a85e4299da5b187f806c9ab1ad28f85bb2cad9c7b0cac3b26f97df921bfbaf8da97f8b8e18a1e8de1428928fa65889cb7c8aae3164e65f0900a8b505907a2001dcc98788c0839f7907e2c55a1878e2aa923ef7f6a28e8815b2c7619151a890c5b2bb4df22d64afec57c6f3186eda3e91e052a5db3528c0068f65e26146b0ccca42e89c514038570e48f7536b5556bdaa924652804b0cf559c2ec45b2d60417d596be223d462a7d67a1f6e082a340c385cfebab6b12801206a5253457f19fb5914c745f3c5926a7ee25be39be4483530acc3bd6cbb85ad54a9e39256d46cda08420d2f3960f0efa9c6afc96a4d97e6cdac3c03cd2c534d6bc66ddd24f2408e0a926e56f272e269c2d9e38cb194bee60e5d8ce136c203b09a08e82d97f22bdb2837078fc8aa055416efa85fa8dba29780537f91a9486d308ff9b84a07a393c791f44215f7ec6970a5ceec311d21b37394f1335fba4f9451efb1a7905849798e95258bb837ca9aa55d16025f9acec937538e536e14f3059edfba567a87cfba276795087c560b2ca8ba4443bd0e984f829c0455af2bb4489ac6af589e5e028a24bda556e81e0b88e74b975d9ac265d57118374581762a1ae1b173d939b39019039db2203f20cc6cfd6a639a10814b5f2c5c4e5e6d976c63c4743838375128f16bab23f466f7ac844597ed1ad52f88f5eba3827447f885fb2eca1d579bb3cdb52cc0915de3638d6d8c03178fd8d44ade1dbea81806b5003821d8ee217454b465749b9ffae8f4e61d960e297707fa584519ae9b4ca92ee63833ee66c34c31c591b1f823a9eebb810d4b03ee640b9c819ce2a0935af29b18f44f8ac638628df9cf676d78fb30f34df660a798e44b40c84c2ca1c5337045914ce8214c1ed322b795edd295e5150a461cbf00fb0a7ca973865a1330289ed77108acd48de042bcd6610859a22f9cbce508a7fb9b41b657da3b5da42ad08e0ca7d019c2648f389a86e62695edb9d89df0468a9520d486397fcaaefa8ee400b4e0194ef02291fa7aef7a397bf4b13684540d6bc6246d3725cbbcfd2359f9d0273eea216e7d5edd991e874b4c9425771cb2617a08c1955f1268a8e596f66b58f7d74a49da15b1a9b05e9d1d2b2c2c954db3d6c70bd7d4e1c76f1b8bcb8caa14b5aa72e6b605128110e9d63f9e548a934aeddf6289abc66d734cb46f173209daf583a60f930e28435549ed0a996f6b50daab93c1b71330178972e371a1266f5a81c2640f64b89be159fa6d8fb01bcac26cee50d08b839fa490c954f631a84940fbc7d23fe36199bbf64c560d27c6af16bbb50bae46c7c38a82ce654d9afa16d79e48fd8526f47c68b7b9ea0b71d492f831965aaf4014c095694cafa1414cf3f983a38b4a567900363502362b6ab1ff2eb097e62c85e056438dd79c8a69b49508aeb86a146520d41b72a22fd7ce6cc5b88269ca24abafab7c3d57cb6b12bd3fb33e06375f722aa80f54865408ca2120eac63a9f883a8a6c7d7e36a0cba325ed009730ec9b0876040be07d2093b790a69cd544c841b2587fb430aa4e2e0d61a6bfaef34b142d0d2b126f2502b54d1f70378db5a083d6417ec0b95ce7bc9117dd04f09632867374f9438f2d6d557df18c80ce9c89dfe718a76cb158a4c79da4fb9bc01b94a18c8e32b9ffb1e632be6a1b5c1abff6fe731c0e5a07db7ff659025a1497e7d454eeb02d333b93f59ced2906531d5f48e97b6d2ece3f98028f5f4351d374e34459b79624f37e689086f6e9956079e78fc260a0b920638399e27e5e881bb2bf21ba7a212202f9d492128fb5791c900887a5c898fd3cabb0bde8810aa2739d1fdd069f1ddae7cd59cd16b6b2cbba8eb323dda1db1affbf59d85bfddfa7898f71efc8e81202d2d395a9b9c5a150ad4f5b9daaa33d634a627c85402c798922d6113f257c86c2b4051c2c7fa60933debec2ad2068e68e705c5625587de04f1ea83e3da6b70e61ddfd79aa181c4a9bdf938ed70913bed37d6d107c88ba20bf45557dd9304cf026b3de80c3f7bf6766143a395f5485f932557e5319f300b995c6490d38bf2dd1a44b1d35fc8a02aa4ecb5a91859907a85ebe7e23180ee458c382bf30f436ac22bc3dd09992756062407992061b1c7ae01d4facf14d5103aa12549bd9ef2296bea6652657d14ea5bd7b706ffc2352dd0a437d35705fe823012e31e4515bd0127658899053a5c0c05648fa5376fc731cc1f8279668dec810f002dadaa67961f41919eef8fa1e6abba67b4fbec913e1b399be66dc01bd9071f6e0fe44fb8a0c26728577dd5c0824d565e0a6623e92a31740983ff66c712dec48eb825fb52d064673b5957b6e445cf26b9ede4080720a1d45c64ce83c90dd1ee4963130f23139da71fe867802a9b384861ed58824e60100c9ef8341941d8a0c0ad638f3388792f6e36c2a03db965a7e54768832b93eba808304f065a3e413ea99845471c008a41f32bae5b7cc889268761765c29d08bf015b377f2a627a5627f785cc0e015e94d41ffc4442b3c3cf9831014c75ca1cbc812fdc2f57bfd5e3c7ee17843d2b3e4327a9cbb699dc9b1a8b68cf391dae9e49ab1e499fcea06b3f96ec3c2fca9b281a9b0fb40189034a1a16163fc2a3cf1aa727cc420064d619b8eb0ea806b10ccc3c86fe3049e8da632ab569bd31d88775e6035bcaae2a88a7916d2a8499407b48b64f4d9c6cc2ce73569cc0f5c2a4d67a83b435d4d5e2c2f2eae71af00dfd907eefd875561412c429cc2ad618ad197a441cb5b6413b5cc52d5a93365d6ce96db4d162adea919731591a1285e68d4b6823fd9f31bdc5db6af855d021734d741d905b9d809bb765c8c975dc7d95c037941f997270e0661ac92327bb88c5323cb3e97ae10c9326b07b8effcee6f0633c73ab23045170aa8f51c91fac5052cca485d7b1079a546d639b6997c6202ad1b0edcbea0d6bb2fda54591e3d392c50bb2bf518280747af9a8f81ebe311da0be24642a729c11adb39db123ef37d52ef48b6784cd2629b8eeaf1c2d8d767014f1ee86356f981154fcb72b46c698cfc071cb5dd50a36570e8bfb89cf8ec5d8c620f449ca4b7095b6a05fd9372aaf0dbf3d645e101838d4b543385641fa2edb1ec4600cd9ffa49c101a61c29ff3d5420dc076919ccb06082691097c14c63797a1836534a88af6003b97537900ae323d83884ed9535ba8cd5829fc19c5467b1396226cb22d4e083710803cce59d16b9e898b65dc875fa8bb1a06615b0756811626aadce4182c357a3b3ed90599ae43f631d0772d5b22804279c760c0f85d1ed7f112d968bc7c28cafca1a0588a70636b114c655da4913c6ae837c1650042acc70fcad12db956fcd71c0289957d58c4e83fa98f24b2ab1a52efccd1c3eff98b415ab288d80c65e754d1427d15e5033adc59044085ca6db1b39dbc5a3d0168a0cfd4ccd3e5082ceb28bc65a3400de943e19d46c84937f2dc06d5ed4937fb853b0806944e08e5de97d03857c10584fc4610a79eea8f7c5e5339301f6123b6a6706a3b775b816135f58f87a090afee41efa3c1dda799c43006d74e3f40a6f7ef8052fa09ad7cd7b0c2806b37f2ab41ac13604b6591cdc91f96f012336c9cdf1371c108d8b86ad20b7aef32acc74b2b8451bc9cd8ea41cec707ce02ec2870e242bdc2e70d5f15f9ac136456c71a051e15fd43a2177b257d9068cc35eb5040156c32b14434ea90df459aa01a5ce31c49cfe789d3508645a11ed65a2ba93da7d598400fb6cf491653a305b5d3c352c6b4c42419a72d6e3c7a2c26cc76bd742a12c8fd17cefccbcd823d4e92738b257646e91f1e500881b087ad42ce91a0b0a0a24a601869496d904ada0631314d5716e027bcb678652326de63bdbe037e5c9085d798d83a9771601746e3672c59e5212e924ef45b67816a4ceb856778a2aded4e9156d5af7c7795c245f35c741ac42e3b72bc12296430ef1f20647c912ecbca0a8fd1ac5e4b8706b71ebf57f1a7bce7bfb857dd6e2795d1626d5ea2ba871dc66021453c258d0361a16746a0ca7eb3563a9b24c3777edc12d21a6630f447631b8eee00c3e0d8612e9f243c6ee3a1ab417b9ea3c52c55248c30a42a1eb91688784d8a7b07b13e5707af0db2e03c9f7f8c8135bb136d7fc1ae62af2debe0dffa9d52dd5f01b91ca7c8225bee01d09366b34f73572486520fd21fc4438a84f2a5ac7ac35a320f68eb4b27d55d2c4e10c231f59c5ea7eca8c31a0e747a45685a185b39dc326233a58c1bb0cd51e55a4bee52438d0fda2f81b21d23c0db8302a2ab9e768f4ed861713873fa634395c79cb5dfb1fef035d3d934c7f36acc0fbe86803d54cdcb987b692f4de6bc81e186a94f1cb04187969c3468a30ae3842272255e83c10be8c9b43d35704aac2a78ecb56109d2deb4a99167c238e1bc2154db808fe06a0f07478600b94326de4f942ef696cfd8f026e8216050a3fafba65f72ef0e02cf25892d1258e2ddf252e4f07cca2176126fba1c109de27f637bc9832139015a5270a08755e9cc34ccfc14c8d1021e5b7252f2b4028c7209506442593f3eca86dc8e68b01aa5844553280fcd1dca8279bcfea093c6e5ef7e91ee9909b1e40f3fef4306e33abed482e76ae666fe5b10930811f3261b4fbe0061f9c9389e6d7adadf1a6151907f66013982f4d91fdbdab77c69d84f5c9981a08dbbb2169b29b28479a3cb214557897dd8fcf9e62398bc81a456357705af8a2408f28d45ee02f670df5e70ef40b6a56223605c6c61e46778877adf14b8fa5778dc96bc544cd0a09b68d93c2b45d77fe29a7d570a9bd8158480b0303b327e97e85b6d71d2da8b908159b6dc225b208790a63e00451a33d7b05a4c7028cce5630ce6260b575db5f696c2a4a40a0ba86a4321fbb0de9a4f224352f42a1714a24499734503962fc98d219e0a7a7ed5bef8c2d15051d4d8911ae54d60c61cba7237cd9cd3addf2a4a8cef94955b8750fcdbc7b9d6d3b926a2bc46dc59f633e9d33beae0d436bd8a9e744e59d0716c15824cc04900af9cb8dba21c363a03b5cf6a9ebde5c6ee1965f03ed9a883a7a9165d7d3277d3eb1fe810509e419cdd8e8b41968a31fc09e92d3b56da0c3f4a43ea11e53d6d2b39fa10bd483556b40d35540dfffce772c0d3b7ba74b385a83f4d95c3f561ad14359c9543a5d6704898b819a7be51b6334a85418f5834af818a0d3bd61cc199362239102ab68b44aee192b8004b70859b36e8c03565d975fd6fcc09c66633a9d232739c8af4e94e4025f2dc373429143b7cde9b61ef92dba5d51a3e3b7c9c981090847c53deaa7b6d041ae1c1f7b40d8d7ee63e387d0c095f75bc0060e47f58d3f735b9833d344d003d60a128960c0f7198803dbe7c4452275c8df25ee089e721f07aa28eb6c3a8b268097e32f23409963041f452d42bb8a9444d3368141d5e94721a758d9602e1262390587e293bcfa26fe139170929b2abe9b506d9a00f5c2a69b573994aded8aa65ff9001503fba086970c2e4cd0ba9f11af845a2e0bc7b788e4081c51f66b4195e82eedb3b6207417116842a43e18d03b073056398b0b5e784193937e1ada65963ca8ad57f88b5a446fbeab6ca9d9179575eb71154e0cd67796aa5092ab6e3a763d1ae9c0e8d43e484e739a9d5c7d7d3793f687a6cea112222a15ddbd000be1a20d00a5c0ff7ff43fc23d6bcb0797f92785d25692c62205142419d8bec076a20841f99e90553f1f94dfc5f6fe2b90a81f6fdc960d668f5e395be860c9c1a4895fa5f749e87e82b2c778d50a8c5111c03a88fc6876e0f061829f3f286046edf8f3851f6e796c099b4815ffe3a63afcbb056879418bd9d70a9a452bdd87976b9dc4fbe78bff5e49b532305fd59c78034dc9c2cd7c8c8749bfc52d3bc4311d52014d9e3c05e605915fb27410a0ad53023890e8355bc73cde1042ac82e54751171b363959c1de70f532148e23c78d4c3e3e5b02a89e0c34905ce91d570546498dd1ffc775281f014feefeb1f17fa15945996a875ee09f96ac6167c7fcc43e3ea4f95c51f6576627fe012db8f8fed0f8fae8b868ff12929dfd8242331a843f366aac81dfe31c6ffdd87d74422a4f68513848115403543576d82feaf53bb5c6f34013d90f9263538728ae23f5530055e896a10e67d2517d6cf99ac51c65aa3677726e5f16cac8b2175e2d2b6dca1fa3c3fd3a95a9386bcbd0015a565715998f0f38ff87e843bbb01e5d1864502a21807642cc2f1b54f861001f7f3c057c4ceabbcdd65f7756bd70ce2708b2d83285bc757a5fb77026214ea22bc4e8fc06e28cd18e1449a6fe61ac4fcbff12caff425f4a85c8347efd36f957cac3b67ceca1ccab933be87b8914c7dfffb646cadb8ef8681ca200db3140b0d95460a75bddd7c4e333bb491c96635ef2fa19c862e8b1c198aadd6ddc4f8a2e1ad7f1253dab796c21876cee3df4d7bbee65fed9c59162e01de6ed734bb35878a93d957c07f2b6400bb0a12b2a6316c64572d2817b0ddb4fe910394ed82d729a6e3204eb99fb42ef4c164ad8eed7ecdd6b675610fa0ba3cb735fd51a2e85b5d4e21022d720b1818e9210b7e9fb5793fd37361879efe3776491cf3c05317768bcb180a573d46b31d4c6f107ed353a02dd9acbcb28411931d6951911e9b74155f603de8ca87edc86ae72ff777034028eb8f91c9470ced67c76477a3456e04a5757029bc16df7aaaa541f3b6f3e0e8d76e6b05cf47b16a00f33bcf296c172c2ae567476885ef82f3f8343874faa0dbbbd6b8766450a16c484b316939b79d5ecff775c3ae10adca8319eae9295f9b1d5e8219b4d141fc99680825d65a84e7ffae7d765ef8d8c0cee8d3759d8ca2940af0cbfeae8418b936e473006897ac1521b3d3859b7258b6c05c5aad394f79faa10aa71bf95b0eb0cc944a391e0d4403eb8f39a7dc4813cd51e8ea19e191387da6953fdc02c8535c1a6e3dc5f043ce8dfb098c64feafb40c8158ad940e0c9236492e0bcdfb67994018b3c88863e492bef072f92b000b4d416a205dc63b2d9c8f9f10b4dbf8e01767be5a07f75221387067bf7dad0b01a512ea2d7f82886c638e4c8f82d6e32643d7483504005e4af58a812ae50d248c085e11189afc1de3060d68f817cc507e075ae1ab843bbb04f63f8410af1db79b8d1fe10e7be7a3c4dd4f30e66b7fe34b90464b03cc7d9ac005cb6d8eee6121e5c7f62cbdb97a49085fd69e84d86ce46f28fee5fe6875ec5816e29e505d0149d3aa605f3d153bf9f9b6dd108b4d6493682a40c729c62603be0259c8eba08069411130ee9a7b34d622f803c4b07af7fac7a74d8edbec363d190ab12ce6b77a57082c3dde39df9f3b1adca5697b55461d9f07713ec84734c29c2c15a6e2a232f009a85b9296c3cb376a2552e4da01c0df2b666219436cc1b9899137e4fc90f7339f7f71f3c2262409f958c104559b575f56e399723cdcd535bc98fa3df53b5d0052ef063f220bd470618d69071bc3d46b26a2015a37e606062f1130efbbe14510b33cb66bd0596fbb8199187cc5735bd9b366d3526a6dfb0d1208d5d63537d7d9bd5c282f4d9b79f6a53778134437f3fde2fd62f00a09d3ad3d2d9f1c58d59dfe8871b9d46867396a5814ad48c78e0ab7b3657d7fe9856d7b019b77c417997bf3f6dd63b52db99e649c97932b7b60bafec98a8e216405d4501e9362088184e96cdc3868146150008425f3648f44b220628530526a2e27ee24403a2e381a58f8682b5fbf3cc6bdf6f0bf23f60e8ae903480930e2b79712dd74dd99b3efdcc1812cd0b56ef26132d945614a3879c0897b4871f0f8e817100e4411fd52f25319dd7a09eb81ff98cf5f4d4b6b98b3a80488824a6b8c9c7b0e698dc17a31652cd7df7b873cc26a27d2ac129c677e1167e86bacef93db3e65a1d2157151b0dc20825fb3b064f448ab31b79ea1b6a0bdf8b80d95658aa6a64835d5c76626406e8ef3c903e491cc1a8492ff7a3d189be1be9aa63c2871d043fd42d332334129b01567aef02b7d1e16674d8e6de982ebc58481a35e4119e4dc2f355b5bba38d180b72db0f20f9187cf149da4d3a7ead22697bc8520dae0bfe4a5ce2d892ffe0c37e722f4b4727fcd4287818523019fbb3734f47fad33d947d6793df75242be36dff8302f5769fe9d575d0334066c5c1f61ff9b52ad056e34c5424833e134484e73954f7cca7e4dbd6c4693084148fb590456bf2c4a9366edc2f45668e19f4d166c57ee0b1bd9464962e6b7b034186db7e0256ec78809935b0876a496fc6fe67b3dff70394f88d4a150e19699fe7ae3efc14acdfa487137513314117e99bc1f94414ba2a8ab8c222524c81144f5e44e7da7d1d83848fdf33e0e78887abd871429dc611edf719f6168f8302844d12fda1389bbf339a73ac763f013254ffcb16b72af44804eb4481a5f56026ca32593eafeff938fc3b5a2ab72aacc5ef5dc5e0f3b718579e8d0ba7c7ce306300d8ffc10ffcf2c742ae7a9daa3166c32adc853da96454ae32b2b5c3ad9c84b530c428119efb66c1c8fe313f25b7a570d09c41196d780c34dd4aaf3946b8a8b57191d4528cb6e2046cc4eefb116ae6940178067a5aec3aa2828d56085f9f173e8f204eceeabe2a0ca6654c2b83367a4a34052dbc106401d900175ce67956e6df19f5a366e54aea42585e4b98467295d92057cdcd8e5b3565b7ca40ddb800d406a4673dd02e5845c8b8c2e502d03e569e54c044a00b525241c7a413719d906e9425f3a4b027d248c59a77de6b664a0bcd07af2d10d6e4b8cb6156769c17abb9c9a1dafe928e81c12bcc62c6d6e4815c5d33d03946d768ec31de6e83ebbe1cc13b40d905fc24b80f95105ed666259720d282618503ed20588c01b2e5adc0bc15e925f4ceec1ad262436f0d4a3e56ebbc1527d5e2e1e82075466802b42e3a212a175d2f8ad55b977b42b42e8a10451735880e469f79be318a10ad8b224429465f713e215a174d882646ff535e6314214a183d2ef9842860f4e3f6945151d13f8656f64d496edfcd9fd7afc6477b7ce4ad3445576ee13c707c75294c8e783c327409768d4f43162b2e143e6e1af4ba83c7eb81322aac2cb54baa5c1c42cb5c2e351004d4cc77895e7f650dce449df313d47c42858916993c9296628b5fed817f8dd094dd30f56d6279e604b94cbd2903c2d955517817d455c29325897fb453ac638fd60a885aa1846a0b42ec5a804a874ed7c1c08132dae3c3568cb08ac5a594b8fca33d57ac98512012f94e1381a97df63f0059a1bae94cecfae4bd3b4c2a59ce67c8b1cf0c69f883e441ff5b257e3390c51168ff4e4b2bcaf255018d57ef1a588e2386022efe5a6017103ff1903cba1625c9eba7cbcc14d9c8d35ef6717ebdb9b9d0e00169b07be462bec9a0900787fdbe4fe10494c59d9c2221c90656e6934f57f9e0b1b3400e3cd03ce5e551c430a4353f09440c9463cd47e81ad21cd00f31204b416a29d56bea998f3a7f75e6739853cc493b88018aefa800cc6951c19cdd373c72a5982b45254e02ccf1de42a003978306c5e453e2b738e28934938344a3047764d3b4a63a84f92eb3eaddb8dcd3cce468144ae2e6e5740015031b56b93dc4514a7af30ca5161e192f8e0aed759e77d6532da9b43b57bb4c4e13f769a54cb83467ad19a1ad34dcaee1439a15d134507b16327cf72c5a3adc3d70394ecaa4f98828f30d60a6d60765128097aab3bbe68f7eabf9ac3bb5d681ccf1fc8ff4a847433279dd87bef1040beeeaa24872c327d115d0085f24242ad08b090cdb3073bc33c572e97017dab9d7c3e463bd5695ccd2bffb62817520449d284cc41600709ec3888354a1dd85c3cfc41eac5b2ca5aa71221297f7deb2122705bd8c6cada35bed0d138d28f9e2d0fff5f4151199ab0d79440a93f2285743b587d89b12ef0e152f26e4f37b0f3ce38a0fdd4338af338a9cea49a7e9136b385e3099def0beb3e61df6a5ab3b16307ab53a1fd10b6612b29240551fda3e2cb17e2b0c93c2e7461e6c8e70aa55489d20547c9a607e7a8ac9137fbb57e6a884531162d7765fdbebfe5a4e314c87a3c15158c22713264797bdf9cb6d4ab21396d05cc6432298d84d64afbc5900f05fc2fea4301ce657274bc0eae208d6b2eda1d6953b85979c40f4b539cc26f6ee9885762c78c8c515d9c6788641b07d81db08f44a60d4b233cdf9c0e29f5be282509627c8d324cf62008647d65730e5e42a5cac1fcb6f033325d079671eb83de2f39bbb6348a8fe5ae692d88d7c41847054e40e0e78841670b02201fd35593af861bbd84ee8b02b5449e93ba76232e85e4783e81d3fed08cff19328c2717b845da36ccfb31ebf878c4bc649effd36b5175d0b772b46577eb87a82b5879bf4dfe857420ebf84f3fbdfce73eace8b46675a1d604f46a5be3ecddbe7921fa99ef73e43a7a22556fe8137fbb4e0bd517ff30aa74c037ca0737acbc3e9695fc1f6e5f3d26c3ddf0f55a31e5cc9ea8c835d96582fab2c475128aa7847a0f9d738e32cdf0874efda3dcdbf923b20622f026c1360e2a7de7819571a8b0c64f958ad0e10802b09574aa05d529348ef9c351be4c5761a7f2ca41f3def3b328da9a3c722c930c45f550a18ea08cb351df96350a0d77ffea8fbe3fd0a7aa01ef4738a40f60aa47aae86719097f60abdcc838d64541d3638db921bf6d7feaf853ad89f44ea8c5184681d14212a177d271aa3d72e7704681d1421940e7a001584dee6f9c66842b42e9a10558cfee23c42145d34219a187d50f9c66842b4307abbe411a28047e7992a89a1ebdb5e877c87a7a34999bff752541980cbce59e2802bebf3089e9a1cf1a1a8571e017138e763485d414c1638d534f253adb21e7c66a35522c7567945e0ab9c0e47058d4cf0e6c34acbfcd910152bc140895f764c59b9ffac4ac22afe8f6e9091d3866370be1ae44c7fca035300e84a0269e09f2d0429220c96cd56e64fb772dda6db220db4bee1d7e51219cf19c181b8bdf6f55ff7d94afc399baf9f96309503a4a58525f3e540053d672be1a1caf2ffddff312faade4bbb39afe4741457f21125a45db023a047a817c8bc913b7232735cba728d726833f9ca14cb19b2c9530929e3ca94f4644af4b202df4cadb892582e3b8d3f56d83f0cb1d614b8c83468a52c157f2abad81e61884a5c49ef6d33393ba2921194a521293c1f8bf16fddf4999471956d0818e64e0b50acb179df385212e5de10573215016abdaf019acf3cb6db5c69029bf9f936322797e32b995870907b625583579698663a637b651407dd1411ed850fd636c822792b8c618119947c2c2c2dd280ec10fc8e183c4a156f90f4482364e4e8c105220b9d5ae20efa7b2498a82a984915bbe304ddab95d06a10e8d6c1d4373fdc72d48cb5a9fb331e62daabf435c9a3a9b83bc028ee0ef2e58b4e8c3d5ee59205648979265dcc0bd6b3a4bdb2c323774ee23a902d7ea286f8eeaef30b85821cb11f566f0a9ea58d026e0705bc0e86bdf9b19357bb3b788cc3e1309122cc772a44fc17f513d7991394643f709d0adb35a0730f4568bd9f10bf8a54ec110ec9b4f81cec1260eed8f2c0d4263baa5872ac0a4e60dc1baeff370005578c582169652a6c0256052367e947b130f65f546b9dcf60bd021e56e81de90e573b4484810c592117981d3eedbe6b85010ed0b574d06c3119a219a6c91a546f74b2b04c7c0533afa2dd48f98847c3f138e42ae2734bb002be421fcdddb3ac0e9a859e48e4b44d9944381968236b64cbe3d22e685fa9d500e52cad111fd65a1aee5a00cfb34e6d8163d3be1d1e0174b5ff077dc1e8c28d841f7c3ba62dd7df827cdddb57d026791bbd76836f0182c6a02e71c0a3a19aaa70c1102e5db4e7f25b8293d22cadb22102ab783675d91fcb7041330313d8151761ffadbfae27220e09642ff3ccee4e765d0ada983927e806f32e38ab7113f3c4fa1844288acf3b05766edcc2ef1155e3e2d2df73f0898dd7eaa3b81caad2a97f336fcdb874500a3151250728cf02336f1b43429fffe73c0dd61d1da49f18759504bfa0d2fd2f76020df3845be9641f17b5205a707f6316d35fb939cc62032cb3286649b085ffc582136a188ba35e22509462f47688f09687b1d1110aaa35f6ef3399f3882e3c9f025f390855821a4ff8c21ecf2bfd731bd22fa930f5f6263e030a2a79f4034d87ccc64201a6e29d159b1a9e2e96a4f35493c803e2bc668a19d5b5d6c87f70d24e800165092a419de11396b6cb7cd35cd0ddddeb3deecc97c6f715895c39bbe5d29c91e10b6d29b83026117a9b7dddc3cf9177b2b760f6e63facad7e428d6f45c50d13e86dad8ff53a74705cc43d623c71ffa874d193bacffc3fc7187de150fc41b23aaac96530773395438a7c4738549532e5704041e7cc01fa62185ff38d1941a4f869ce61c1317b5d7dcd18598434a3d098a2065ad756603d989787407423cb410d911cb133ce4081a52d3fd4471d9c6ccefaf0438fb9b3caf69d8488ca13ae1988651da2f1a444c69913b7880007d7f020e5eb3963ff613178c90fe4f00808bd813fee0fd40aacbf73e37619b6190f3abb39373a066bdb15c1e6c521e2100131776fe9b989c07f98d5a2a3f67c3a3c4f6e5f347a29cadab253c1512978205da860dd9ad1b08eef3cb38e915007cb772239fdd3ab248fa1c0c35edfdcf777dd29a9a814eb1b2eba6fad6d717a236e56ed310cf83bc459e685fef80203f7f54220f949e856ebe0963c927352c9f9cf2a4acea399a68c1da73571bcb0749d7f2693a39a2aaf1699454b0d3d6d9d152ea6e2df51fb4d51f1b0ea00cef5ba8976fa50cea1550de2a453ef3dadaa39c478a2ecb03b03e823a00b1417e299891d6e900bcbdee4b9b6e4ab201dec6aa1c30866f69ecbf0a28e77f68e9eec762ff0d12b314171f4b1082379f010d94d5584880b011f79c4b928dcf1d02479b0319655132a2aa725369e90aa846224ea6494ce5cb05241ea7261c22da3410b8b304e2d9827a2182d696be02d13628dfb5819fe50d9fbf8508ffd20a904d3eba05be2a4ad3e3012c50c63de6d497bb57a8f5471a458f34805a0a0f09e011290e4042d4458775d28461865104db7a70d35a181fb1a379f6c8987f746df267d761c884587ee9625ec747146f183d4693525773daa28df54580a0fdc03f8434ba2a4558a58639c337e4d9f1c8442768bc359dc435dbcc09f0a4bf2ec25a6becc42abf333ba09c34654103a090083f3ad9355078fb05d80e6b5f6e4fc3835ae1196bf4c8b703d8e7a10dbf5191642a44a8d15c128d35eaeb123a8933b68af1ab8fff7ffd653379605a257f1cf84624338753c487c0aa0c8792dde85c890c4035196578d1aa3a5aa7b20d43471370d57b2381aa0726921c99bf2608d7d4219fc01d1737f9f5de0336646f7440f0c812942a3fc3d242a52a8346f132d5284a4c2390d3a8322bc1be5410776afe84e185e8422acf83bd12d6189c38cf7542e847bf310888536c322c0509457e6e2af33f6d224fbe4004be409ff9e393a035ad3f9b012c621a2a54a413074076b91b08a358b148eb242081fc007c4e9782313d25a71c1e4aa0cf788ca47589e87b95fd494cbe22aaf68840681d411dd1f726bad774ebe2a2ac8a4c7159aab0afa1445942a2ac815dd726e759aa1b24aa2eb8aae8ff41d5da85b863ef92331a9e2f733065d7620a1a8a1cb3e98e41a886ec28a4409300974586421fe973c5842644ee9331329ce3391bab3c0c2148a54442dc96e4574ca53d0bea938c6423e9375e346aea46173d7716a110b0dd61cfd236f08463b4505636dd466dac6a4a27fc79de94d5217e2694c546d9ed724186e75c89dc5508cc6f9f754dd861204d9b5a3f91d26a53945449a8a829fa5b6e2c53f2b629b0cf141eb81965a55b9e333841fa5432fa2bf11f201775b024857adc1ec6cdc71a7c69d03ba9c76a01aea7e27bb894be6e16f4887a9413f22dbedc76e449865457f575313d03aaf9aa1a941008d495d676acc683261e22af65c68e30550c2503ce84d1490a07bc54a5450bb5f9758204be8c1a980401b531142405b5bbd5ebb92d61c91e568939403deea85d80c6b674218b366d32d66e26aaac66c1f3a10219316626840517a17cf91752d6b60c07c27d7221d7165f649d7003d99b4569d791b6538a69b5bbe265e3f3882af9d614f96de1bac4633082aae3cbdcf5e137cce40926c0e8d3d41fcedb23424364e71a1fa9b2aacc5dd50cddaf8d53267b90d9e7418e7caf313b7263fb1aa6b1765d6c18fa60db0255cbb1b38eed5586c074c7fe950dfdff47f36be15555532a916afe2a1f799b5dd14a0d3fe8783131e49553169a7a0cf13aea663a6b4774ff34ef3b5a07c0a6a908ba4b6ad6bcdf6c42ce64c6e0348e56fa82d315319f465e5d75a165857297861b79a2491ae319fc10e6f278d3398adcb8abd540da640da70c291138b817af3387e7f61077f92d81eb9acd10222788a114f1122232d4490cb4007438b9967ca451fbc7162551812af97f8de94b5110ca4db1de31108ad81db46184ba2370f3c206287d85e92641eea09e33fde7dc4db1981e1f7db3886e7b9a5729f9016fa2818d9b0e4640a707eb9a119b444d7494b50bca8c363a3593899990ab0672242a406ba4dc50740774a0c883c620fa75213720f5939e05f7f0aac400d56c6218b385849a4ef0d06dc79cff0bd5b6f749dca485f7ca101374d566f5a3d201045b853919670bea27b0a1bef2c4a8932cc5137c25a1ee99999ef98291a7959b7a0f275fbd2430dd096ca73b08eca6109a8bd4be3959941935dba662f76457c583951b9bbc8e0be32be42a1742342a184569cc2c0ec7ec338088dcabadfcf850ab321722968e3b34d6f40462c625bf42945e0e0a40241eeda97f5376c89a8239dde09bee9ae1d90d562799a91889fdfac2bbd58b312f13431cce974b659fa7cffd37d5a33ede3d42f3515603c887d284be7591349407be4a3a8c84d058cd5d0c3a7d29b31a1bbfb5a7749f6e5cbdea1a367dc13b5ba4022d6611f6b5170cd1f8babf65c263b559633dba96cdbe8ee85157133a7413f671c40e264d9d8accd9aa352393ca33222dfd57fdc6531380ef68b91ca5923e7123471c138e7a113f48a025ac91d5556509c11a5034b499b5a9980328f8812844c4db278cf278d698db933ff0cd688250d18283c3c198826291f5c010040280080d4dde7878795e627de3cb1c7dee3468422b4377d6dffb3f66d9f6c42b6dc7b4b99524a49a695052f0552051aa76fd4e77a6348187d78bd2c5264857c59e8425a370bb3f35e85e5f7121224b4e3f3d0f012b3574428b65fb98ab022c97bae1f4168767c3c0f44b4e3fd2b43ce641365900d515f2b9758446f584f32d337585edfba491f82d0ec78af6fe12071eceb5b396839749038dceb5b3b48de491cd3eb3319f2c647002de943660e195c0317f00809a33f5dd008704893d16f4943d46f2f31832e31836b8528448569120b0c5179c8a01374281c29c709cb9ab77aa9faa15f7a1dbb1394a21e7157aec02d44fd8659c02e4030c031447d953244fdcf19a20620836d68475a238a5482f2afaa093d25e5a49e948d212cf3114bbe7d0a4a9b62545322646f7609399b435dd08a942142c2234025c0284c210b4d46aa7ee0e83020a81af4088e1ef981040e12260812649950a2251ca9e5f3f8b3dbe7d4cc89f4f953950cafea32491108f4d5954d00f40dcb828895952210e83f57a682286962b7a93fb41b6cc6f04972fd963df6be6788692a22aefb5635937740c47c6d741abda174b997e0bf6caa9eaac54afa8a87247d25ad482d49ef151012c6365011430185fb75df9e1c58ee9f722b6e722b150232ba7715100e631df00d0edf7807badbb7db73edcb3ad6cd8d8ececd5a37ed5178d454f825e47d5f9875b3372016d6085e614d4145747f1eea75576b6f3a4f67048fc0111cc1111cc1111ca2379ece832338822338822338e29da7c33b4f8777ded3e19da7e33f783a3a4f47a7298ff4a6a7b330facb7b79d30b0e51110f19cc691cecd3d91b10093a4f88faf0e9c011734377413884f2c025447845d47fb048bb81e5a2b6b7aa381a9f4efb95aaa6c1d117dc8fbc60711553e04c01473e7077e79c73776a633547d990dc4dfcaef7a4c929942e1731499aa8b78e03a27e694a560ff5122555354e729b1383c86834b9a9aa7136d634036b7a0a427f58d3fd2a04abb3922e8eee12f27e7a8e779eb38caac69f8e566131c43152553f545a68114ff50315e16829e7a074ed8cf7a4c9cd90a4895af7665495e7e3a669fb5b6bad756bad5bebdf7eaabb6ba44bc8fbbda807a54b63734fd3d3a86a264aba322e77a130ca3b4fe761a137e010a57690b0aa690c8eaa699aa677ceb9a751d5387803ab9aa9f2b4544f9b626a9a86c7f3b1aacae32e39cca7b088240ef77ee3ee2fd28937577b3a37bd19d3ff819e2b77e45870046a7b847a3ecefb39fffc916a88ceea6ef77bb9cbdf77f77b1d7a550ce0e89cdb18558d63de03ab3d25038391ab31aa1af7548df40c4d2e558dbb4b8c0f31d3e350d5ac14d97d13f1e774bd5435ee2f38340e4fa6aa710c3a0fa0b351d5c01c9d99604eefbe9d2e98034770888ab455940e3087aa9d8caaa6aa645c362a20fa298aca21460e387088ce08118223987309797f3dac47488850946c787c171cf28346c7e0c877308ada3060e860a243c5316204000600e7b5264cff0eedbeed8caac69d870a88c698079cabc519ef14f5cf544070744fddd01e31fd375435ce4597921d7f2d67c873e776d7253ab65f7896737f81aaaea60eada2cd88d0d86dc4eae74f91638c5d203277bb8b63ab88d0e88d15a191b7691443d0a2aa2a5045426259564965529db8cf470a29a44043168d0a2aa8a898d8dd6dbbdb76d35d929e7882b7c084ca89ca89ca895d272c272c272c2724e984f7edee36fe7c8a142902862cb6b0b3b3b343851632bbdb66c108383838383838387ae3b596553564c8104a045890c1344d1fca6acdaaaa0ae49eb7d65ae3fdece7338319cc200a99ce1d0b468c1829722304284a8838e79c7b4fbc276a484f4cd384c3342981c282720262019da8aaaafad02829a1617282f241f98868442f94aa5e17b63263c60a8c1832643c3135e14b88a43401051438d4f87c2c906559554c31c5a70996f50252d5e933e9266704454bcb0b979717181ddcdc88ac2680402f24aadad2f2c2e5e54509a0269090949894949450544a28a4b2f2f9883c2c221813552d2931f9efdfc3b2f6ae716b4dd4a3f9706d66a0201037afac46cc16bbb9f7b77fd80b6b3a76aedb3b96edca5aa30a6d2ccbf7a732f3c5d68c2d9685a2b6235055c4cd2131fbd8eeeeb0acbb3bc35cb7f3cc2e2e2cfdf66f7d357558fac58a25670b2287c4c62c48ac3d6e4f7a4a6a9ed5881fdfb7f72c2b0b45e7b0ecbdd42f9362366dcec6ffda6141ecc04ca028f77919111f96c923af4c0c26375622d8b5d6866c999999d95a666b2db3b56cd9325bbbda677eaa889f7afc5ee8ca5ae233914074dfaeec6373772cf3cf7faf592de025f27817111d750bcbb1ed2b885f2e8844a218a28515b6fd2d3903f2ef3fc91c26293325df3fe58cc9f76fce9c7cbf2773845ce6686932fb9df29914b18cd9cf96e39bcc8ae27beb85c16af1b584f9bc49cb210ab51c359a4c4bcb61034b1c3319d372ecd064f651de32899e50f47c0a96f1e71b13492f3d8a880029da37b97e68a2fd926b0129da27b920305363fa7d1b2d47a60cf5fb3bb41cd964a085654abdc746dc7e1afd7cd611f4f160598fe8f9cfd3589f710461597f4613ad0fd6be75ace7e2eaca5aac920899847c42dc873a2384285aefa57f3ad643b4230a2144a01ecdc7ae4382ca185949a87ba9f50e7d8ca69ec9004ed7aef5a0731686086cd746b7a24d6e7aaf07ceee3569ea76dd0cbf559c31f0b9aa6923620573dcb67803d77a7276eb9e6ffbbee69aa589e22b58a7f115bc636d63d325e46199d2c42c4dfbde2d523ad53c23fbeedddcdc3869e21d9d918a1e2cc298c3ac1c6c3f697bba84bce74b88e7a94bd2d16939ac9b26a3ef58e735c0776fb41cd08a949930480467dd34d61e104c6d7e8a8fe84cf311c68ea868a73fe31deea227dee12e5c7737ccf5335fbca3220c0e51918fba709d39d2dcdeb7d7384a52d28f779cbfb96fececcead02c2b17645c3d1421ca2b50d82ea8cbb7dddee4db7696bdd134f58eeb25b752158d01df414b373fb62be65126af91822243c810a500bd00b900c100dd00aef067d3ba747382322f64b11bfe614b14471d6809e025194ebf7ed1ef494bb608e8a46ee5b7ba9c2f2492dfd54d548188dd55237d6b0601cca312120c8553520907390827149163ed5550d84cd3813fb839954b43478868c180ec6c3a44b827c3df51285702e155f2f3c2d1f0fe48b65b2205f2b2010e44b858404f2152a29817ca5989840be504e4e205f272828902f939414c857492804f9225151817c815656205f160b0be4ebd3d202f9f2b8bcbc7801f9aade15053fb59fcdc505f2055f5e205fd43fe46bba2ec897846190af0703468c0a088e9747d619193266cca0c1d78a44303090af0600949410cc9e121e04abb9aaac6ceca85c55ab26d020eecc558d5bf74688a6cfd7a1ee27f793f3b87640384c7fe028aff0a7aae9feb4f69bbe4ddda2e55d70db5191eef80a8b871d8bbe69726e0239a5d851537babbb7ba6c939ca510f5a26271424f98c32278990a8945c1d953d45fdeb8e4d25d74edc554dc90fcb5af9cff5e3f3407ec7078ba21f5459af7215f1a2f4272d0fc4daf103c8ef60f99337b18088767c56fea4aa59593979a2892648dea4aa2121316985421f258b4f6337496c2cf317e2592181b062d6232ec6c37f250b1b49ca0316519f450b51ffe40a511dcb347ac7ea536728a9c232f7eff7ea077ff83ad67b785573d20e7a13d0a35435208cc6025d2d965c2da2e812ee54751203658289c99d975c1ea75ec76fd21c8f101d29163aaaa35a14291206235de80e8eee4caa839b1bad628a8d4a3de52bbda9551c93ac7c3ed589e33887a2dac5586cb53a3a1dfdda2245bc370c46d648173b3b6ad823478228810433c14ea5aad955e1275c132fc251cedd15d0569caa38e71c8b73ce61e9fcb5bcf64709f96b6bb73293d0c7dc2436094b5b2e4b88572c152dd4161f6862be8d1a963b868024129dd460b6afa8f84ab3f08b7feaf2da0ba7b74bb19e7b0b83c2e2ee4cf8c5ba387d79ed65c98ea0afcf53545610cb7c3011e1bbbbbbbbbb2b4b2351a26444e7b2ad2a17ada3ab5e929c63853987571069243654d14b9f2bb3115b92a81e2cf8f9ec39cc7db0ec41ccfa92aac66dc468f1fce7abebf38b02ab7d1862f56a4445d53796a515b17bc801e65209819e24114072ae75acbba0159f4ab5505185858aaadf1358ed2bcfd55f752791d84fe5788e9cc66db828f48f00d0496b02ab7d672f8824027211bdd0f819970c2c060c18313019d78ca7f122b23e930bcc0b00b4dcc052e33db712a382434826c5064a0e273a9804a06407121e4033d68d0f0df4f480a3c261b5843007e5c3240069008f004e87c7dec1055803680d4c9df9e1001e1a1a1bb18962ffc7d65ac332ff1c45cf51f46fdede9c688657f2748c51ef8d5d584bc88225b0da3f1853c39a111258ed3d61b45489820195c8760456fb20b0aac61fbab75b9fcb46376f2e654cb28c9da13a349cd4326823880832b3e11c83dd9531fe0e736e254992967767288d2692bedb25e7307712d69e8a128657db02b1dafbfb0ce8ff19838516e63d774aa331532d5608ac9630da721b0d49e41e001cc238ea06e83dacf6591021005435feba85e537c0fd61b5ef46d5e098c501a6ceb8f7b7b6164665a0289b0de89a37a822c772c87cc4c82c22484d22918b6763688fe6ad309002c98be9b310a3489f81dea36932fad9bb415b0c8d34ed054d8e14e9c396c3a4c928cafb952223ba44fd1c35681af6296aafd6fb10db0eb17d8d18b1ed908eee9efbf31f56879e40e5057f861213e49f7da697d99250ced344f937a448ff0686f18249d7101cd5e57af12d2f2c2e2b2f545a422cdd9db2d2dd282a3cde7327ea9c334971ce95a038e7484e9c732013e79c55e29c1391784095053f94c7dda7cadd25e8ee6fb18c72933b7def5eec0019f93b7188328647bf2871646307c8a88f6205e79c4be7fc9c37ef15569a8c5a96053e2c9f0f071ce41de8f6007fd888f5ec115af178070266eede8c614fe2d03da24a1c2d637837ff35880df6f6f6761fac44c28f9c98a333d820de1013093a395144612f42fb190a8949d5ec37e43bcf497c89994ad4d7c6edf55fdaf2babc687196155709a5a09c9894344983daad8fa782d4243de7cdabfa91bfaa616cbf65741902f5238a7c206f4714fb29c4b1b730b99e3d423366ab848983bfe5db1bbca35599c81bfe260a8304244c105962e6b4810c312b06bc28c45f875a7bc3b17ccf515137e01307b4a5a81dc898feecc5f6804b1ccb4678e2d03da21347e3c4910f042a13477b9f7d32d08b9451d7509a483fa3dc624370cc8288fb0d2bc918feec256a49890b054848485e080102815a2a6059168b053e9fcfc3b2950b783c1e9521aaaa0a6100429842044551281998a6e9a40849924c34f0de2bd980738e8403ee0eea407747cb03fc6136623dbb4768a51a15268e7efdc70fe3f1521454268ee42166d643cccf4c8798fad90e38e070430c0d1a317288fad98cfc170088fad94b4c1518219598bd165093c9483e24314f627e6654cc1ec5396093d1f76ccca7ae4f8af4a72b0209a32f5d0f48913ea344fdf742df6f884d94e910f5b787a81f811cd280e521662f2e9669dceff85a8fd895ff7b58b6fefc2d0204344dcc3749efda7b5d98eec6b27ec7eebc1b379ad85605af31e6b02d02091291b1a4facaace8beffe50dea1bcbdc5bd17d220f07af5c982b1726394aeba6497a9db04cfa27ad24bd63eafe5d978fdca6cd016d073ff7501f922e118aa2f6bd7b7e2fbe7791c77b7e01d76bebec2367b2773ea5ad995f87eadb652c33a6d140ed53adb5d6da0269adb506446543adb5d69ad705eeeeee4c16486326a46c8d955898254a804c144552c4e5c4f626104ba38c69d611772b4288868f65bd499dba9c27394fc648b83f3745c63488064bff55bbe32efde4708bb85b3cb5462295bcd69c32d1249c83b187a5af4a0401d232a6bd3b14b83b967e4845eddd1ac998d6bc2ab0f4fd5727635a73ce39c721b840bc0696befb0562e9bfd65a6b16b5a2a22c2b8d6a8159b5b64b58faceb285d530cda61a96aef9909a4b11aabd9d21f3e36e6fdb993733134866a60ada3989677835be2a019a99bbcccccccc3a41c8dd8f791bd632c6252d5e376766eac4eceeeee6cf2e632d39487263665edd10a4b482cd935316567bceaf7697b0daf32e33b356d0c3cf32825054c26c4ada241e6b6ee6422566767777799777b9a1c0cccccccd9c028be276e9bbbdcbbbec547abbbccb13cc2a9389b80f9f60b5df2098899a7cddc2cae56c576035be767777a77d2c33267b341fac1e2738339b33737516a69bbb7955d070a4ee88a90653b0d32e0dacf62d2ddc20bbcbbb6cb1e314acefeef22ef7e05ddee5b7526626dcdccc85bbd4f46e40513636363636363636363636363636363636363636363636363636363636dcee9e34bd89dbdd939c64449bd0e176f7fc3523da04b7bb3ed26e8cb4b3432974555f8e8e402994a11456fb55d5559592a0a8ddd9d55ddd31b42d7637b50414abea332fc633bcaaa9f984fb3bd7d65afb7d1ece33edadeaefdecaadbd8f6e5a066ed6b922e613a17a0c89f9fa8d931b5be788e02998f999311bc47c4245f93d58cdbc44b43406fda35b0b657ea2fdd042b1178367782523509ff9a95876808cd9055cd4dfe791cf33bc1a5373e4102d661bda1035df61ee518bd8a8980f6ffb018abbbbbb69686237c609200010398a3c18334245cccccccc58b6bbbcbcca85d5767bd777b7c8ba3b7e0b937c65162bf3aa8feed1148280ca794462ea14897945bed1467c7de4c18d75d7dfeb8604c6aa6e77f7d7dd1dcbf81b732c785c58ed7bb0b4399d22461ad083a5a1cc7aba98affb3e8b6d6c12ce39e79c0bbdc8a282130395262625bc3d78999793339979b7b17061d811a8eaabae2eb68c6de1acaf431dabfaf0a63b4882a1afafc21af005ad33637c15b0ddedeeedcef7c1ee5e26acf6ce6968dc0eebda0e920d15652fcff03a6dddcdd9905e29081756cee39e4f7fb6e1c0248741b6de73d4bac06aaf2d682c485f90922c4579e0080759229bfa0afc9b7b3b1315a5e4eeed52ebc65a89a502abbdc321a5c06aef1283e9bcf9756791304677b973ce75280521949c444952e59f673977e522f4dcbdddafd84fb93bdc24ac24b026d3efd86d97b876da64fadd1bd69cbbfb9e78bbbbbb7327dae56d57c6f4377ff77d808d1705254992aa2b13c58414e60ddd5d7ace27772bc4ccddbdad4fe6909a8c23e911a41d01813f884449b8c9e457c14192d4246c5202b7ffe58abe7ae2a49427783b45e22466aa064dc99531d46f121617567b69dd95d530d1245032147acfffa5a97bcb186a0798423d46044a204adf96f51e7ccae102a48b88ae71936c0aa3f5e4b90581d55aa6acb6e4171313abdda5e7bd4a58ed1965539e2b6c2afdd25ddc210a4cd9c1862461d6c7df0b859c738e17ab21a5b6dc1728d0b9a7fa7c5ac55a5981cc24dadadb44fb3377ef7677ef6ee75c9bf1a8d40c9dd6ac74040000020000d3160000100c0c89c482611a47512af50114000f5d784a6e6032164723b1400c842808a2288661208410638c51082aa4d4d5260038ee7c5719f9fd157fd53de24537460adcb9475ad26b8bfb30ea1b34ffd9a461dedc397a7f21b121397d28b33ff960a0d105df144844aa213b2d7e7ceb4992c17b310054cac0d609673dc9418533f2a9a726148d35a91820575c0ee88018bb01256d22b16151c7c7d80ae9134be59d3c710a231a8c5e70ae0a11f511cf2334198b3b0196ba711d0084d64d71f9a969a5699d60f9fcc59c0b401ac4c51c71c60133a0af88521d065fab88d27d51997ecbba19db930aa13a822be4a8d3647e181b1425cbe03e7123263e11238ea5702ab2da74965876946c6560075b48c7bc6ec618dc10ea02c12cb7b2983919757b0e6b1afda443e26378065487b1853a54a7a92920adf773c29c887eb8e8e6ec78e477788b43be4317ba00a4953c076bdb0c4e7c2fbb6bf604046000e1f4a395656384e0ae78d95d15991a95a33ea997edd95be589a307b3888382916e70d2e58b911d6ba26ba5d946bc0a5738d6b8a04c2cc75299b46e4d3001105e9a7a0ef7c4d59b446aec15b031fbd61caaf79e0e99b129845658f0035a43264f8abb99c81dc006905f89d7c8e1f0262f85b08a0965155689e981e05c18c416e9a88a39cf5980bd9a4ad22dae59be9fb1c85016ea9bef745b8823f1d4cfb66a92ce8f87ee9b32b2133085e9afee332daa284b15a23b94042ee856b6e51c8f62a2635a0b90e9d02642ba6ba56d68f8aa5612c9894e539c54a9e6d0224ece5a4ce8e4d0048e6a5ac0a783febf98ede2934ed14ecf906f92e063239b81d0cdd0ee8fd2402b85446e4af5832098a32380b9cd577a58b57d741de2033bbb7543c6f6f6eef900652ce13ee204b21ee6405372e22a01d85619444a7f427abf488357970cf17915cb053c08b0d9ad919c84b3be857d96ee5de7e9f538050730ad8d4f331c6a154d7c1a4b23933eb2f1e01d128776e8ff31367bb0902dba1604515675dad7bcf802928cc221f48f7ca07dd7a261fab16f37b1f6c3f51938f64131509868400c2b7ea3c785c51ee3226db5d9b9949e38221ad40edb937e8b48e64ee18b0ff9a1896a9980f8db9fa03bd0989450624ecb3461c9028b0f5981202b362c608802b87e79c1f4ff918242f66f69a288c19491a672fc08e2679e7aeebceb950c6f47575608ee82c9971b3d7f650b3a47a110f19871acd548fa02c0131890d9f48aed454eade6ccc7d954341aa8d8324709a311404bed4854af06c78fbc61a0a38f89c07951fe8bc1331db9a34cefaf3e27f7c52aa9e178d4b9e0ff6ca4e0e40915fbc0395f43d919a22b0bc435cc1b0f0da40105dc31d949b5b61faac74a506e8973c226482eb5047e01df7c1e507c015f63baeaca43e8418643c25423207c4d4cd1f46b1e28677395572e7af38a18ae948f0eee66a1598e5aa14cc34d8833c7a7b129b95b99f0f8a0833667f6108f6a788f21ed907d626bef958684b36c560a0d27ce93704366c20d9f7e2e63dbc410146b2fcc9753d3260608f1bfb05e466b21d2bc35cd4139e27d01fe3e43f6d2d8a8bb1ca9c75a1c9dd0b2369c800829ce4a21c782118394bd303b2de600e8f0f505cd407520085d21906a3e0d2770aafe89c23ebeb8124c464657adcf211709ecb9e47bedf85c114437d5cf2d11f85865e99ed4035f2539889d2fdde151757dbf125e4df3e6b35fd1672fe2f47c6780570c2a7d725518cd82bf298d7a6a77d69817739e90cb794e310d2c303dca8cdd950fc64ab12c2ab1086d660908cba7d781bcc446d510fef2aca2185d9e72b63e1e6a1a25a0f430a1bf8b94b34174540c157e4b40963a96128fb0e2e6bd733fa091790d2bbb3d5873c413735fd931448e025b7a4427f7d5f54138dd140236409fd6961575aaafb5348185382010c13eae9c93b6c12b94894f435dccb1d8422f2efacec7358bc6f3d9336353e0877d711c541ec71af5123f3f100b4e4832f361f7e37a9d62c38b295d8d4d573ab886a30b10a78e7473dfbdd32f783a4d81c9e3c9ba58f9c4a062cdc3705d52cbc63c09a2ff4ff93afc199750c5106c1236d9624a1e491d260de0346f7721a6db910cc32e0f518e6bbf7af4fca4f41010ea78639f10198d55a6762961daa59110dd579bb26d2b23af170955c51632f217cc181959d398846fcbc86b7735c04541b532cfc8db217820b410ef6d5933d962e9b70d824bc364be175c05f9df99d81a273f393ced179f7c42cfdf369f0a5475c7c34485bbcfa786b169911c128c1a7416bc03d620e5719e0bec1c9e24804cf43fa3511a3b9f4bc7f0cad1b3a8661fa484a7b0fc82b09264777de267fee97bd07cc19f0089316fdc3949aca58906b6a804357910f02626e567170ccc61bf37dea4ef5a6f98e5684e50b04a2ac9895d8cd3d7ce966047702b7512919a8f58d392db681222062296e4141919399bdc20a12e85a3241faf3caa013ff85885ab5d2282955762b568b5a2b9a9438e2a5298faaee7b05a5eb74d6a4f3009779a54b8cbb51150582d61f772f4a2cc95b3f11c62b1ec31f445a2c12122a9b3321b004dd2e511b85f05e615582db2b298bfec33cfe06a9f71f3e214c61910b3a0c344e847cab76ee8ab86c35bf168240aadf88da3e5e80420c3aa96bc6a451b3d92d0c03504a71eb49acbbceda0f508d91dc0d9cc24e546e57202774cee3ea9329647890366a2cb15a0816f9d68256142869baaebbafc704b5b094e3d7e348ea6879befec832722650d62b2b744ea5da2a75213a0517fec58dbe1343f5853a7e121df1153f941f16ef0783725c5bbf9419c381db9af5979a29c83998801146d293409036fe818f72fdec06c1c7a72f2b60daa3ca686306f804aaf5b6f97e2a754afed22ff50d40c246ee694be39fa512bc618b9f8b7fb4296643668198672788aac8dce5053f69297ad3b2e220069dfb6e0464d138632fa598bb16c6322246d95f649a50200d9461e2972fdc6eaf4a61b3f94eec4eb9203cc9cdf550dc9aeb7b702f2d7541f2b100b251da7ea06ccfddbc08a1b0e7f912bfe257ffc312e02ab41aadf822e7619a1d3fd005966276c14b4917f111b216af781b26960803d414c0a9dea0db1a5377c70ba4728dd9394bcc195f696a16b872c0d093f8f44284e0f088079fb8034c3eb88ee269ff58b466cfbea73aff6716937aa57d8b2b4aac26caaa04b8b35218bbef30674ddb8d55d54e783e17d8791ba26ed97cd9ddc4b8c23f9e73ecfe391726339f443129c7aea2b40c8cb639ab365ffb372b58cceb6695f0deeeec62e7214cb7f8f2136c7346bee27c9007d609cd95fb873125cf21417442d3608c1af3140a23d843b128b41a48baaa636082397e5d24a8f5ab5d26717d8ab5a867a04adb7b547d7ef7bd4972f134c6dbb658823355adf673a7b595b24360519c33cd6cdadd2c08fb083de181345f55cea0962b357b1769d271cecbbfc6a5800267662099b277f3db76f068660dbfb6fc206f372d31fd8a92ed0948df510bedb16bffc96d6c98f7fd9b58796cf60f790918ef65ca67e718384bd1ffb2cc797fc32af8ecc40e998360b93159e4cae6a8757b602aba832cf2998a46e0d2fdc27aa9bfbd807455461c1bc82111574c6fb278affc84aa5880592009f3d00131103203b4cb5702866213d7a771e79fdcdcadffd60700b86995a0ff928269472373dbc9536c8d51f8f867c5edad534f307cc749f50fdf66fb81774b9834111b1cb75c23d1811f22bf89abe3ef9487d7855b4c65338015e1839318792dda583bad2ebcfd2392999c6f17cfa5fcef18db4ea3140d60cb748cadcf26be2e87441ab462f78973ce5c652444c1df7a7febc82ddb95c51018e54e3b6d01b87845f92c31beeda19003947c7833d9f876dfe5acb0d3c048b8948c0c59dc29a8957984f8467a87d201c99da26fbd341c1fb8d615c1e4e3f60beb6b973a5869eff2b8cc29bcced0caabadf92fac8f26d0e685242c9cc1325b57a893d99ad2c265c6dd40a9d512b6bc1e60e0ab4e58fa978ae0253e8b2a5eb116918d163d17d40e8c11ce945d16f26c74daa49aef3a0ceae57b3780430eeb186bf416bea41e9716b65eeceb94737ca7b52866e1787266d9c47b7975d108b566700549f4721a8cc7624e452ca81cd57843d165cec64b0c520938d765babd4ac94776b411fe44b53108b81d685c448510c31545bf46de284fdf0b7aeaa08f77e580590935a7f74355a661df287e9009962ad0960d28301c1d0939c25904f0bd10e69c226306fa11b565e4de32361f78bebec8f15e4833369e8146bd02e4c2b4cae7f240fabd3ef30dd7208f3d2b867014a61b3bb154e1743a8a6d116e5719c3e51244155673c981689f394a6fb394a95cd58020e1939c592a0289d926a898b831dac4385798ea33d827fc03422a2b2ef7eb9356c2b27f394d048db0232967f727b022661957b14cb7ae50f1660c7796c92a5e6d7a882ae869b5e8fb2d5d07a630fd410998c44f95cd158798a68d65177a5fe62be4a89de87ccba04f6ed5913a1ef0c2c0c21a18915c3f6ec6a2c9b2f8a80d61c22998a72133385ae7cb363199571ca95f49486b76f981f17aef09a7e5e267522e07a95e48a2c91cff3de7abea24254706df6761009b7001b8c5991da2380fcbf2982931054c382161dd64a9c0ee4c92826d068139842afb9f975e333a72435d34a7a0d8b183a57f6308e796813dd85d0a27af82eeda5a3914e1c37d181b108a2886578330271945fb392cacc01b2b1ef4d00dcedb48909c8eae85a87a6c0b9e6a2374a74479dcb73b52dc23cf6ef253071d7a68be296223676c02eae2225cfeb01e1919c7b3cbce4568171cdfa27b3b356d642f98747eb8f6e4236543db9001e7bf22b6c963f88fb6e3552be98e48fef8116999a652468703fb7b4423f0a8052e121a83b8650c6c685af2a4e193600fb52be2e0fec8e4c03e4b4656a98b2065a9451b98839a5dc35d59b05ed1e01d1f7edcf59d66a6e108015c825ffdfbaf242d3328f9162185b1cf5df7338a60ba31062d5600c04002161da60eac6ac75d03f5a56b91f068c926fb2111b6e37d69bfcb04995f634fe12adef168ebf199602b62d6c660ff8d51ddbb350d568b7d00527d7ba8be844aad545ec892050be235071574670f09f108dbbe903cd6355efa5a42f82b6622cb9810a4531a22f700f39d41b829bfae9a7971e64a72a6367cf02dbb1ec8fdc8d805bbd5d7e60508dba358d9b5d819762e0e3e05fa3b0bba7db63a33aca40e97511541427e55e757fe8299084abe9fa5f6064a91cfb05d63de24cb0d8fed79f6bd371910233e67cc88bb114523057a0f9286e7da2b1e0309c3ff7f2e1577be782a22de5b37e2e6861dad4ca51a6bb68664137cc0009c57381b3c9f0be41018bab143b65d90f13bb9f47c4873d766a297574d70b750eb721c391f48c598ecca28eb3e25f46d82b8ccd625f7dc2f8465afa51b5f01448edb198900c1531e2d1992cc7b3316c87967bb3d349e420d8e0641ac3c10f648357ef05de34dbf14214891ec930f8bac7e85826e96cabc148b3a01a376c22e4e1c320ace58f2be1b64ad1e350166eeb58f25967410678f432ced702715a285076321b158a3d0d501904ad0aa1417641e2a01a9e40f524516c088358d0b970172fe697b5594fc7f66718a907fa6903bd4f608985cf56d09aba8bd9cdadd88cb869e6878e72f4570e37764373e435d5246d30b31c18414305e8efc111fed1116f46d0501473dd32feb0f14cd9da5b824cba83e38a8a78f19440d224834bd11797d2a5fac4a753639335856e1f3500ad148ecc0c8b9b758b39f817c09f4f0bef3fb672e3b08fa11b0980d82f45e5b26326a4d9b069056a5f79754a021d90509cd94097d7b75f2c770751d00cea2001e3011c50a9e3543b266695d3a3ad411ed5e056e6123c7164a2d2161ac63582649dbd153fa05ec3517308e2d8bb0642a82029ff6ca934cc00d2957237a228448847160de22ca35dd608d9aa6693163515b592d35735f88c2320d224206a3523d2b7bacb555c8163ed1858d7b7e2e55036c608b725a9c00bc7bdb2ac7cfb36448cd0d7c4d3b9625257e2d3bc89f3bb63c04230651febbd3dbde18a0d6192c5dd53f8d100d683892dd3e7317ed5298d56f963dc726ed27c83d1d283c9b0361c356a67e8cf4c169666c71c8c0c5033cc5427554d90460053055b6109c4b4baa1acecfe2a82eb3fe241dedb48dea2629d30c9a472c4fc00665c828a925afac8f10af6b22d35eaba545160057b669ba0713447bc12a378dd57560c0e810a60c26bec1160b4b4d31c7b3706d6b8646bcea802e9b30c1421312e060629ac6cb45fdc3dea4c3389a92ab1042f5af6f2a75204e4389f5e9754e0713ac308037e9964ad90c2048e60a0cb3f1f44a6ae2604e91d6d80f028ad428809aad254f72e4cc285c08d79a187ae779191baf1fae26fda77cba563ee9b0252a0c615ca007bd2289fc21cd6c52ce51e2f6de00dc5f901d36dec7d214f49188a4e56446c9e7b58bf0efaa05e051af06b88d5619371514bc40a112c083efe8e6a0b7938aacbb2faa2b991db44c20807b0494b6fb02039aa336825fd0553211addd24d8c618039b87bf495ac61f8af5b2e8da7eefe2cd8ed7636e2aa85f6344e231af4e519a22ad616c6b384938f365cc07043bf5dd1970b2ccbe40009ca0b5f37cb5d17cc4b13d31f946002622fc76330afbcee300fff20fe805017319b23445aa7eff83a75907a8b04b8f970b40e3737e51b8606bc091c3f40b96d8c71aa148c5d598d31b9b932fad43af02b652db08318ff982fd4050a3d71e83c16c1619c5bee21b22c9e0a7e2226a5ac48a8c6302dd9cce4ba7a883001a8667d546d85de3527645a340f2140e7063d2ab330800da90030857cf8e0e5f55d33e7daa9fb401d8da79e92baff992020cb2d518855beb05fe5c40689a58b7359695e45f1b960d727a099f25d2835811c2c11f8f3e9dec9554ae749b685e3c4ae36e899f889e4f49248c812489b24724e8c376ebf4ab38c53d46a3fb0b27dc61158b56a4eb460251934d45f342ab25a28dc38181d169c12477d1c49ac600dfe3b07b024cf21d410ada3cbf2dffb7222a096528ef5fa78f5bb76abd015c3334f71f140c32d3777ab7235269f4b81d241e2989fde2232bded890489cb6fe37ca158d61b3303b12a995f5fa904427f0f81bfe651beb6c978bed99fb274c36e1b31c52bbfca60f52e4ceb59e693d52a5d3b0f3b6e8eb794b69a2e573d97fa57b6ce9322d6265a7de85684534db0f364e3e00428808a0ae4aaab9cc893331c2364f2b86fdcc610b141511e3840bcdbb47f66294a599d49187eaa7baf006a796c9c0d95f404d1c3632c84cb5b0b87fb950caf0efc6465b7e022a7266c29cfe694f69d5c2a7bcf4d0a1ad2df6df2695525041685c762e9cd5271bbc2bc45e723ebebfd9420c61f5534e93a502906f1a153e2a3cb05106407dcc714a7592e540d0a09683446323bba7f76a2b066d9ef5aac6f309d586c81eb38648366ca6ca0231a6017b486ecca235955014f0e5a601f510cd671b3994af1c0e93bbb61dc842577bd5ca22f3793483572a6016fc7277919c6ca27f641a69ca75fc41565da27e47e5dcd3e8366f608d2f3b34034f504cd05c6ef6f30eeb06c23dcf507e6dbd631c769ec1bfd73614dc8783c8a50c6e4421746343f0f170f6238002506759f7b1a8a5a84f677788ca789ccda78b8e9faa5b46edf8d26c9f9aa6ae14555c1a740713739d80d5006ceff09f99e0b10cdf7ee1cf32be67a6380bc7837018ed3c2f7549c71add0eef0ef1ce2e1ec8cd5d2a76e23eca4dca2664369f023148aaf602ac794fe9e6095517bbd789015edcaf333e85a53998f8854fb1f27f9e05932e8c7970f7163e1d0e77bfaefa637071a3827c6a7bb58a16a97c3ad262c7f076f81e127e33718fd7855207a792b5bbca54a7f73fa1859b6b6d8ec31d560ad37b6b482a2964502d12e2b2499cac784a2793f61d9910329006ee64add7dcb4ca816003ff15faac64dda8902f4a9ddb75eba4569af1fdca0a8dfcf3fae38641f8cff8c44c242ea5bea1babf979758323198080aad2bc252d4654bb096a5055039799e6bb5d7da5478a1f6bb44881dafbc821180d248b368827fb5ecdc85ab889e7d65d30283a7085e9c08e0b4fefd9640f1c0e5c5733dcd03451b2858fb15b8908a3a03370f05f6cc779829046c1fe6b5e015033234b828f6de47a973dc198ca0bc1f997e432c491671043bcd191495fc5dd5bf968f9a9990095c71bb73d2ae758d277f0884b7a6881296bf4f575814eb770392e94d4102b3a280741870b852ca141ae3150a6024d2e4cf59662880327a41d34259ddb3eb1062f23dae6fde55aa2d125ddd8580eaae1871fab15cd2ffcc41ff6972b814eb7e8769c28a129570091e8744b778ecb329a622588806e9770d1c73a90904899de60f897d0957ffa18984c200f312a426960ba2a6160ea484121892a33779ba604c693a841ae0515d0e8166ec6c4b21ac50a5089862ee9625c965353ae0111812e0c80ee98b22c000a2edbc883d1b37f71837a0244f700a015dc174ba0af8c9740b254bba74d37fb336877081c17ae81f03ef4d3d9e0853463f933e4a3e1aac7756d7b5553ae2941db50f65695da78aac84491b610845579252914699bc11e8b751fdb769593d13400acb739d39c4f50ad2a46c28f044391b73ebce9ef2fc0e527b05ad10c2532a3e2922ee2828e7b0f7cb48904b7f8e17c753c1171614214d413c1514680301712667c4184f190f28c106f95ff47f75e81a6676824c82851be26f48b52f9dc5b1d2641a05d77d5032a67bb95fb00bc8e701b11e4f4ef8adb12b6e6c8efb62d72c2077ff8b06f226f8904acff1710066064d5cde5f24be54d9d0fffebf984cd4975d8342e38ef8b009631b53e3eb4e1b1c58071d8db05bef3c2c41e017d2f2ec3fc472773878c39b8ac121ae0ccdd821d872d50ee301b99e0c110bdf268fb25b85d62250ff455585798506a94844075acf9161f85280b0c7d1757e7a9c8e8af8300adb6d6e6f7847f32842a6c47a81e36b5fbdb9fec60c1452a0de2b8d24c0f6ff72e02abff526174f8a7b2a28b114c63a9b15c50b414e20e4f16487af1d2f85c28d55cd18ef7a866f53afb0e9f6bd167dfdd8164670b1b0808f94efb1f1002f83aa5fe4019e286311a6b442d7be9c0d436cc7aec9db916ca8b7c42df524793b5ee8a61d859e9fc3e78faced9e6876f77cfb48cfb0eeeb11c944bc93e13aeada3e82da8802e867d23f0242d8a6910e4ba24348818f2222356881757651e28547c8960aac2a589710ae952a9540c8c822f8be91e4f83351eb6c8022479be7767739a8ae2b3951d2bef69117ab2e19cdecde980553fb6daf8106084f93f79c696fd423a88cb26f015e057a81ed04d65047ce2da3f16a56b72755cd2aa0c6496477a5461cfbbe58455c7ad2ad96fa01e825c3d83c5fd285226a038648c87c8b42082cc26a03339800ff9eff15532050b865fc72b35fc762c23628a430e9879e532077dbabe0b13a269e634cc5387c0ec60d11ff62557e48e3b62742f59fdf25070d8c5a03e3442b6fafafd22e4c66e49f69f2090a9394b9e1559f4b492c20847deea928a626a52bd14923dd1aed042f19006db25f96ba42123bebeb01306bbd5ed6867c540ebaf07089661715e73e0ccd21d305066064fbcbede04efc3fd8b77a4dddd393d76ba93a328d0fd74c7753b35eb89aaec141866fac9838cc1041f375bef9cecbc79c0c20a8a998d1b95252420255052b61269247c484ebc961e033ac5a12379a55130d95add1d11212b62f21e772bf65db59f63abbbaa28e048c9f199a2b2e23baba92aa260a2a3c1329e0d17719ba360f0bde3209617e97f4bd3b6f1e6583f4f2f52710189f85419e67fbe32ecb23ccd0bcde0bc03afcd1eff5525cbf7d7a0f00ba0b2d27deeb17e9da11b74fd9639919faa2be79c408bc9f317055a0b471d69b3bb8c206c6d9c1aaa7d666b8353051a5b3ecad4aaa9c85954ac67c40fe9200b7d968dcd595b08a32cc7a6296997055eb0e8449cc10a89b2fe70bb2ce51ab4b19459e3fc052a230bade57c053ec2808e292334d971815d9e01ae004aacecb39777f89e8ba7c51a5a37c31b3546931992bc713d0a52caf056cd5ca1de1975631f227576f522d6b46027244f3c5c1928d2fd9633f1f18907bc42cb692569b708991031572edaad0233d6d096b4195e5e69d4055cee4b2c9f6449c79a6571502d2e5012906352df379d84dd4a6857ae5fb6464a5c9760d4b7ebb054526b5374b114a1bd5f67d99914de95a2b2841b2c5963903320625a49b45a04665330e4ea75178d49814b2ffb238877ebed32180dc966112459f985dd45fbe9f4966264d89b8efedd3bee419a800eb167162d6467ac65a1cd47fe940dd0b55d67d772f42284eb904394aaa89328599a39cebd6c2c04317f0595cd39e654aff6152a643537ff6aebe28b98682b4f5ccf9167932014b317491b2d5842ebd763823bdbbd9525642bf733631edb45655388a108dca1583826a1b1964c20eedbef9ada5ec253ef87578be60d1b42f2562d6df3da5e00b705ca36556ffb95368d38dadf91f025a24738055430e3df7cdf32353275787df31d7211a02b3808da64bfd6f42ab096981c2544c1f6d0091cd3f8878b82c08a1a2b08a877411b3216a45a3672f34666657473e54d154811ab3b0ccedccb417ffae9a78ceb99ad340372979449e1fd7b5682ce927b79d2e226d1a9ab681e3a0cdb6dd8e9a55aea13eab56ee6dbe56c90c3d2193cf00b99dd73342de150b5a6367789bb3649348acef0ebed6ffd8c10c464b2b3f452d0f362d13157bdb32f263297c497c04df958a4c8ace304c865f9a8e571a13d404cd66c227f1257ce486fa52d84a7110e3222a0be2c72ce45ce94ad79227f124ece48d63c31fd664eca4c963c99ec2720abd636114244f762543b99e9750689fced8b5cfb04bee1f8412f07c195a9b81903412ab4fd9149f33594d3034b731bb41fb31d1494ce2cd8525197bf13118848489e0a1ed330832e2395186d71eb70f7e0196f5f5fc4d731a9ce5dbfae01e05dd24e184c59067fe5244ca7bc5e6d5a8e705e939b12245330acbbdd1dbc9f9ecc3840f9b7bf9ce44712f2d1db47c7beddb640559fb57433c9abd3cc9dc8ea3889604cb2be284546397c521b065ea5e9b2ba59526f44061a00b5aa5612acb4438735b6579422685305263904472a3a883f4460554793a0d2f8123ba5c5d4f4df9e5fd87c2383f071744607b86ad3a3f9bfc0d0969bd139d9a324319e0d3a4fe346b51a73ed70ccc8efe872b46df672303757b1415426bd52265983e99d5857c81713fdb32a34d8805164396303c046460dd2a9da17642e3c42aba176bd3068c33dcbcd16da9c79c76b7fb4b2dd53ef71ffb5b8b0c6d5120d3cdc13844baea4a8b02b2be821111c388c6dde51c7bca06c4daff6fdde2894f33266ea00047acd25a8071775d0a08f72f6a4ef5de8a7f598166c5aa2791d29687599fa97bd044e2959cf1a050cecd42da0048976ec5492a730ff35177fd44cfa8e1d876f96a16acf58ec022d4863fd9e505938f9a2255788c9b105d1aceadad255978d7bf663fd6073ae65b57de63d801cedef03199c714e02aded37892c66ab137ca44ae7ede140d56c84716965143059e172d9c2d1fdc20ada2e584bb275da8adc0389f10f21478d7d1a44acd14bc11c81c6fae1c9a53fe98822d07eb17f077307b3738c4c9e425349aeb5595dcd186e8c97d5febec634b75e26ed7c4be96785da87f17a728a354d0c0dae9c84b93325a0fe41e72017fb1e31d58e17c083821d94a6d10bf4c9d22e907c4cd0efe0eb937697e405bec070cbea764716083f8e7a5722a44b67bac96afb767f0be6abe80a72abef56adec245ad44605d4fd683e3b73ac82a639d7863e0fbfaeb6d7ef379178438900708d0caa749e1408559744592c9c4c14647d571d0b9d381a50580550c3aac376e76131dcc3d07f50ed3330fd381a926d0210d1b8528713298432cb64eb4c33585f8b7f685ec29ade7a4bd49ccba4be556b13847a2a6591322ad1c7a2fb1a8c0be82485fa9e4783927e4c415c7c25d2bc1dfba29df135e3e3ea8727bc8121fa389a1ca0b3b802e6edc724a9b42b31c56f402302cfe966c454837785bea3a5906112c8a6bf2274e6130097950e1bd64e2c8cb709915c43650569b53913ace4c1323ebb4ba5e83d10fa36c3e2454ccfd4af343a75fa3507de53d60e1dd65afab33a8072fa37a96670abec78169c8189365c811198233014dcaca06646e4d6a5c072d7a8b315e664fa11fe6967140a5852234e0a287a65bbde6f9b9fd8c0ac640dc769a7836f0dc3a7dfaf584c2ac45ff83a08ed906a747c08a04119a83f2b0b7f2913f65bfb57518d159ec5eaa46e50023bfbf18932bf92b431d920f71468ff4a49fb64500dad6902b629d4e13ecb09cb4bdc41f1a1acad17f5974df39e3aad858c5bfdc69aca36d578526e1ed0975577293aaaeec26025c83d885bebb8c2de334469df91345ca0e99601575ef77b8442a19ba1016b7495303784d281bb17689ef6ef2a647c86586fbc2c893d3bae5e0e09bb4c9e4e2f3b60f5d2b4c21f6f819b31b9e84a7390b6373dd6728ceb66e807fbc84c7c39f097f29f872792649dad6911b9f176530b655b9335721add91df0316e0200fd64ced8a600ede9804de1deb40204f4af075482d988e85a9ca917ac02b963eb866cc61c99af61123bfedb6f86e6f496ab97b7b0aa1a113251bdc86c5131a558eb078650d02178193ddb4a5d1597d382a45482d0c4b1187d58900521ed9a17f10794a3032dcad500b53fb91d68cedab2259308d082ac0114c5cb9d51cc96911638e1be38644fb39963be60ce91291924e96aadbada627326238b2d1a4af8deb346a3846aa41d8d4d23b940c970d1af7d59b143473d10c9ff9126a901f33c8e945107703fc7b9190b585adb5581f8275fe2538edeb245f110be7c0869c21ee35c9047a1f45ec268c8422704e153fc39008fafd84d713f447352deb1c4c7de6e432bf4a9c66eb02a2c48519b7a08823f537d7039076597792759ae530073d5b7ea6d434158f36af727b55abff20e01484a002d37dda057d493ce9ebc01cd69809c70c9bab5eaadf380be8a0d0bf65a22f4801927fd218d23ad7d53142ac091da3f81cff09c9ce575a72a61d686689662858c1aa3432aeff3fea9f904a994913f56b542833499635937ec1c755081ad3bf32d4912049be02442169410ccc6188963cb542529290ad9c4b798b43103f9e9730887a7ae70e44c5cb524229713d4a0e0ecf8d654c75038104400df1148704849c6b267eecdc584d981b0d2ac8a8fbc6d0d71eddb52101fc47e3a87481bf260939127a013a98b830696ad5387eb2b2293be3c231a68b61b31ee5d67a041bd91314ec16603c06ae514ce88cdb169913cc1d393dff3fb9fed462f0fe2a9b04dd5342ca4a45b3d6487e088740cd2a423b96e48eec61bca2c4a1bba560f943222d35ef0878b15687c20f4b993c8ea637801afab4ad8858e9f496c54ffa87e52a39473fbf96ec77ef2d0893efa53a5c4a61537b9e178161a1e5080ea55e4ba281d09d031b52f6fa6d60e1d352e7abb6ca425fb3f06926cfe3661d95e67828d6021d2a61da89a23abd3b1461b9056bcf5f23e8674f42453004e19462330ba27c2a82c56ab0ef827a38c6e915dcc1b5054df1aba2bb0eab46bd92dfb993429bb6b41bb31b8434d8ca673fc8e707bb9e288a4a40e046791efeb7d6fc40f5fdc39d8e90fc38bd7c1024d37550c88117c43a38e9b3dbac42c313278a5b1e93276f9c3ee5057f9ee5b34c916112c0198036f554a279ec3474e0fec409cc2895f604d3e98039e32734dacc56208d427eab4d3628f1bdd689bc45748ad7b8d9bf1e70c81dbf136d72ba5a701d87fbc9ea6b176f27c1e72b1f8f6d3cf6fe932f11c18c491f1784fd2748538e92a9289974cf1e6140195016cf63d23b2b13971c7cad8a09fc064a25aec00d7ec6c467201695090da73fa324851e50aed0cdeb05483f35f39621d1948f074d8241569b2963610b441d5b8f73c58c47d26a49caf1bd9f7c7d6d7741a477c82a8af8f298455e07fc38da5469a850e55656942328433460565971939bba89e9c26ac19877897304455fa05f02dd71a291e5b6f03d0acae46ea688e37873031ea211b2fbb861a120cb3fd02aefe0b742cbfaabb7a0770fdd00f7d7cb2ec5360d5c6d4149f9b5a008ec8ccc355a50d005d24338808e7a3cd6fd850c0a5c4b993b3ace5d0b4a9056f22a5afa7fa16ec51df71143d214e1c255ed605a6b4141436a12ea0d3009a84cc275d32b9310ba5f31902e3d2dc52d28639c889f749529300089246a2416604a10cc57e294ed67050e1a33b605e586b7c5287de9133165c699c13550dbfd256941f9dfdc823d8eaa2fc62780038529765db17a4b9ae9879eae30a44d42366e41f1a3853660790ba1419769318b20da601ad6276c1caf7e49c1898545519a5e64527ea296b8ebe4b5a05c9093d0bd213b05308becff35aa7f0e31227984e3ec74d0632a39f0a0f68b476b1c79c4425d8ec1b71df2fc62603194ccae8c5bcd9e7e7aaac18b6042401be8cc916d3acc63cb701343c19b0e85a0874e8daf548eba0177d6bd250d21b20095b1c1fc968544d8b1ad4c4662418b45e7780dc4f647519ca619979f5418e82626420b7918665859e8a2560c257abe516b350e57fceed7730bb64e154ad3a5910462b2e371b0d6000eaae3eed16f865a64aaa9a25d301413eb399fe33114ca991abd636cf59778af26d6395e8d868220abbb81a5ac7c49c9350a6988bf21f982f492e07663100afaf37dcebe10798118ce84c6d1fecba7244cd020e0d3743f78267bfc5a7e020aa8e2e7a583504eb6dc4eb945a8f1015c253ec59a811392e72c7b604c7bf39b3a3bf3008da67444cca10697722b9877b13f65e7e08b7cf1d8e6696a25e97415f583668607986a347d7a5a22c998cf75e96841bce44395410facf6f1b7135ede6b0c0fd32cdfb43c2b2ff86c0907d1eac8bf8bbdc0fe8fa99b526dd87223b80c4f1df342a3b9e1fd545e1efb5dec14531130a80336d8637721627f17dd2f398127d0808ea111a7a2d5283a529f98c0829c404156e06144af543017732ed5c45ea3d14837cdc7ff7e97494e4c3b1eeea2a3884e45ce7a159c5fb0ceb1449de5462ef2122ff03817979dc009e83111598a7cec71a5367269973398d1a1fd5e489f4698970935876e605efec0cf78049d630dfcd5ef05f3ff951e73a39e64a3d5b7ea19e66517803f0047fef88eb336595a352f63f144ec2f34ff76a8f332a874f3ec1e674e359c6a6f28ce0f0c00d1b2487a8319f0d9fdb0973cbcd7e55f2f2659237e96360add339544f1cfad99e07de4db8b9ee7a67bc90a27bd4c1d2cd2f9377e996a1f877c916957c02c9c8eb845b3d2a9c1b2306fe7842cad2285fc96c5ece63e158bd96c59ab42241ecdeb2eb2274e660a21c9d00073b117bedeea0738f2d6b130241a782c0bccd35660c44124afc24c33930319c098772aee935ea1f88b60679814d5331861fa2b52f7e57147caf7c8f78eccef95f61d281cd47da1dc2dd27bf2b82b25f75d3ed1b76788fcfc2cec036fa18b1c67ad517a2f5fbcbbba43a028168ed41de7c2805293be03ef7c3c9550df15c97d79bc2ba57bb164faa8c4cbe68cc867b81bd3ad651246475c474e804a51ec47e598564298692ddb80c0ceac82c0e2bd5ef73188f5edfbfc0a336fc449919621205304030faaab8c97e4ba8b703432502bce578e46cee3ad7a2f40588cb41390791e92a55a9c316b0055d264ff3acdf052f3d7f98bad4d6d3400c27f225a2aad231e302aa3a7fddf195f2123453278577cff64e4a4d4c06b1aaf45902903d97c02c693b2ce8eedd066c074e89c68954da04d1b72a597322afe09874e9bfbe71946c3c60dbb493a98ccb0e03d6e9e019f5d0a90e5cdd1059c4a672b051429fbcab489bcc06db10ff28b8fc963244a11521a34947786c072fb7ff9aa33b7e4cb8820dad26114aaa6fb65990e7e6107a5d01b2be56acf7667915880b908c1be3477d04ca07ef5000906c5391fcd0882b44a6614f0a86e34965315e99ae78e5f4c25161a80fbc128a1454d1c5d3dfb88380ed4aa5b72fca4151d529d88a0b49a05b83662018807eb219562ed6f4c94aac4def95c72ce9f78d1be3f4f663214a707f259e07a969ba12786461ed3932d6e2c0d3dbcf87ffa8e2af393ecb9ca5d49684995f914a1cc4b538df8b71a02dd8846d6267cb12f7fff87511809fafd87852027090e4a306f98724629e08b1710bc87696755a7db7ca0446cb9a5134605068cbb06f63622841f5344ee1baacb5568394edbc23abb2bcc737bc022012c711950e9d65f2fc9c24223fba84302bda22c59e000e7196b43975ba94fa3ba8a02906d3999a4d8fdaabea5a78d1727d1e442dd1510bac73394fe39aecf61dc01555acfe0340a7d2a9a07ea3c17ac4626e9f0829c0238020d26a0d9a05a6474057b3a0c1eaac6506c795e1986100d511429e24268349165504708558d487d3761c39c108ae0b93ef44c09f34c696ed8f37f69a4bc1a66806e7b8bf1d653090df18a4fb0b664e532ad5a9b6e6a5651ad9da0ca732ba029c35cfac5efe74478ef0fd83ff6b1f2331bd4bad25900745e4890ebdfb75c489cfd9fc86bbe0a46709042fff89781552c97511ac8eeaf7b84572d9288d540ee351a5cc68bd6229e146490c548e56263720f9697929ce41b530a4edde56dff20f2fcd2cf76ad22404eb55238df620133b643255e71dae2349cc5096311fafd63cd48756dc952492aaeb57309e5da3f0870a39a11c6740a48c778a490e160958d7e2995400daf463a4b75f5e1696668b37059d7a10be8773fe456aa00ed90f4d814500a90cdd3564a827cf56140519521b2b31269849a827461b5443dfadc690f1db782ef1404472cbb535015b0c1e6c93728530db915eb5ab4b06aa31a73eb3dc993d4e42ed56c10867499f9cda25240eaa0baaf03de40ec28bac42caec1e89468765b53c84765922cab64d91237558706c5d5533574e8a7f00cc33f7d3cdf9755f5f702e35b8619b6bae6048131182356f912e859e37f52f83e647559d0f6b8493e337853151f683c95fbaf9673e9e7850d59884612bda953610b9b1548b68bcf378e4edc7fa4105b03e645c9a307f2836b1d89b8d398c2f67f9795de4630bfe6a6a47d01e69761199f881e3b43c7aa9ec30ad84a03a21b92b73fd3de41bae9aa2c50fa22096a18991b5c836b56e438189812dc480e01bb1aca3aeaecda6fb730dd53d252d44290d9eca95bd8cf99f0b6f35cd462eb791d354a2f9e48cbfac81e99b4c2be5f3c0efbc6abc0fe185f261e20439fdb28922dc770ff18489052443288d06114da1fcef33c5d126420719302339307a2f8a905a5366f5cb676818544040186314aa6241b14957563fb9b8ff81d14cc50f52387ece0255b976de5141765d42a2163d41c1c4ad9e48c51010b8b554f2b27dfa1a8b0412811baae38df4ade9ce34bd4f8551ae652b7a8617001b779cacba8e23da3c2631e15d6af2c6b94ad3eb404a1c2cf636e00462988bda58cd91995e06b46c633ea0e9a88b278e6753c101826f06754911f5f2a0e7694aeca1587abc3c45eb1962fb81fa3e877702883151b848c1ae3ad80cf75c41289537c315babb0103abe498eab51041e074a0fab136c9a4bbacd2512db6c54ddc11c85b2de6c46051e638f9948e12a1c95f84c4fd934a9b36d8d1d71ae8ff051ea02dd86d396f67cf5e13e09d709cb47451ab7a090414f1f58810af6a69683056ac2504076d2b3b37313db1771f713191f01f2f44673041bb3c65d2be142e9bf96022f3285084c3bebe4b01627ce026c8016b86afd8df51a6b636055e5edbe1f0f51fd521056a112764592880f518a2171ed3451415ccff669789bb9190d3688169e6bf00cbed69d6c5ce22e7d02201ab495f291c45b2b569e9793b1dfa2ea3fd12d65292c288828f47dd7a86befbae4a054711d02146540d62db625bad9e94729f8e1b4780ea46b7c5ad144c53b3b5167b14c2f962c9a35c65ba3c36050e7ddfa3fbbd58e489aefb53395800dee0d7c6a7aab269af22fcf76ccb9097cdbe1321d373490a4bb15128325c8d34c7399a9b58512b7b854c80d76e905bde651502b3523d3acec8f8b078bf3fcff4e0bb0393ed44a59f2a9ad5f9f420aadb09a1b946fc1aa61e5d1b35a9f78d61cbfbe32a49b8306535ad057850d5f2e93403fa61644012e805d31e516782cc19231297cda3b44e03f8ec0fcbd88a8981aeed21f45a721ce55ed5386d3b12ea3891aa3a55ddc1933b0b1426d8f34f2f65e22fb955de0b202dc2dc9848ccd5d9cad54e67482b49358158fdd3c307a195c4cfa330791646a7c46e8f2bee94cb8bc57f16bf31f38b530dc125f7b28928139cb127d5518201b43f03996e9a693f8d48f0318f47fec2a3c9296b37bbaa6080666f7fe18788cb29b81eacab81752d77a98648a47227f0176e2366d419a5776b5c00b8b1a266efc4ed8958226b0f839cad4a19398828ebc0e9119343891eeb9bcae173997492f59fbb54392a9f2dd0ffe271f17cd7935b47638083133b5dd6f291fe46e5bb3985e64aefa14cb11aaa97bcf499ff3763a299b9477ce23796105073405538b0d93022c1366835953c7bae0c050a303f60a155e92174b2219664ddd03c820abfb186d6a6cbc0c2c78ded43cdf6819b52336250fb08436e5b85b9ea28f562fee39b72feb9799d60a0edcd4127bce06039215b9225693592f6efa418aa84624d62f732f37e20367fcb89a0aaf1d877187b328e09d5789b3a8818773bddf40744aaf9095b38b025fbe4aa93195d4f837054a53e1644e446decd2c52e730a7649dd6355682659ef30b3c95655180ef6967df412358ad067a89bb67f8489699372b0eb84ba5e3dd833a5f4344d88fd6c9b67e8188e2676ac3915a81c3286b75128e05a3266f5d633165b32f3ef82f6105bbef036aa1964f6750889c61108583733276ce1725aa2f30ab2b6012594499c62594fda3689b90d07ce97d8ed196873cbbdefd4807254caac3c0d5f21fc504b0928f48858404e3b0e45c3625cd2ea32f12a4e1167a4d6a5123e69c62c3422b17a32f3da3b0a7bdb57a3771d97958e87131363c1867c8e9266a847eb931b5a42ec819262fdb44971faf702e2184c8999a78828de7b15804cbc45b76e1cfd46da13bbec5f45144feb45a2099a3aa7ae618512307c152f7eb7b32c752e19c3ea3f258f631ce4bdefbe66e7d9c8d5257680a43452129edd43c66bba5415dd1ec28b632151dba31a7145b63055005f2f66638d512b92cf2b4b2a63a4b7a346159549af23370647570d98307dab0900ef24b98f3b6f6ffc0f8962873344fd967432367cc553a01c23256a15ffe069a1212e4b982a40fb6945b5537cc86034c7aaa9c7703d2bc598aba978bba44dbcf72454cd15a958eb2d6a4948ec6da014b79f5a40a94057b27b060bf20d21fdd1bbe86c61d33d3a21585431919e56694bb8556ad9eb52da98942c158b87701348ebda8bac0bb7fb76bdf68941f2c73ecba007cc631a58ee48f402065da7920c4919a24ac225d5f83cb020d40f48bd52cdce8618eaeeee8b04e749bc9eca89247600f1fac58c8789f9f951f29255f8ff2f25c3903ac9e9d294713aa2e9aafd184b1c73d4434828db1187ca25d0c6c6120ca222a4a103e3a28d7dc67881a91a93cf28740543503278415c0edc919b0b500896a3f29254ce740ba382599479d4369fc90a4424a6034e5948303c1bbbfebd580087098d1598fa3f82f042d9b0d5a5c19431fae2a380285697240a7b3574b568714a8be79cb08f65839a2cbfbfea5bc043d1ab4bf245969ac778206ee73864c17b08690d7431d4a0171546a96bb84e044b6a24d8b375d27857dd718fff3bd676e162f4ad7e59aadd7e97f6075b3c0fd5b8570e5794424a37dc540bad98780918a859c8743489be4c295fea7a5400bdf0f2a069d097caa159fefe6a4fb2dc4849ae0d30b44d66954972a1c4620daf81f9ff4951a926443883122395f6d8442fa43d8269d02372009d3144a5266be86d4f7512c2c9d8c691ad591a54460a5ab48e6c27ede120e48ad035f4e116ad91e2961021e42af48a8850999830c324e64f77852c1a30436a0a315975d7f4e8ff9f711da2292638ba887d777ed9a9028a66abb5201d33d44d82ca4e1e2e02c1b49f98484a09893717c9a4095f917c99c65e70b97f5d17bc043bdc8a8d41e4ae1373c0146a4c46023d26583875cb40dc2438f14226f78ec81441c25710b4b009f6446a7843b650d7787c59e4df09043886f573526a76689e62eadc3d9f6980edea8b964785c4a833cb7db549bb4ca68823cc0e936328eed2a5caa2cf81f816843de16b7666c350e0a4bbb47f8a33e8bc6f6b9e80efc7ef2971c319727f3352601c5bbdc617f0dfab7bc80ec3ffffd9f77a0e50e5644a67197d801b7ddd139b4c62b140b71e324bce9bdfdd1df31f122152c7e84ffe167d72968b7f84f44a88bd2470646e20440561d17627bc0d48e6cbb0e7ff8dbd6cf05efb0784e4f6b127c8067a768a00890f69610dd0952eb1f08ea814faac50c83d1e35941069184ea5ca42ba52127670f4e5b1d30aa9aa2a8a1503252169023c028b3cb44738b4861b9ad12686096c7b1c4420a3b4080b740d366e0c3274f462e251346dda8b5744eef1982b3e17d33fc2bd10ee05622f47e3545484f221ac280df407c75133d9d090bfa05cabd28690ff30360bef9485bbf41d67218c7b0dc5c2826b43cd45626cfc5747b7408c4e8e35da69db471da01d34878165fad93d7c49c65e12bd914c0b6ab8bae55521252278400892a7658efd31ff83d70b2f7dedddbeb2e2fa968f3876188f62bdb0ef16841c457ab658d0a18f9e8a79b730db149a694a8e686e3cc8fd257128d20099fc2ed186ba885ac5ab7ed79ad35c4e84f4da4999249a1b0a96627007d272a25e56e313a87f707ae1ad070b7f57d7d82d3800572b272dbb04583cb9fb71f26427b667b319b1bc68add90b3abee868cdb639da3a552c13eac8f9c0a1d9e04032b0555a2065d9de4af72676c1df57504747ba0010f0304a146e25ad02b6a5cce91bcb5baa9d62242d8028520e45c50e90aaf5b875f42313211bd6e714d83bce1f8d5cbc266192207a0b209286d8358ee4425659086710267112ec2851898383ff08bd9b8481eea0cd305f60bddecd3ed878a9059045b4c29edcb45c98dc35aad7628e2e8c159db2e8b3e7facd91329df451dca00c79ec80cf5cb8276bfb0b475899149c7cf814ac002565ea7e6bcea163a9612ec431c00a786c44eebcfe1dafbe23a80037cb5919ce176ef7be57df5af1cfd284c7835344058b5bc3a1e2464f370a1ac3b07b6d12faad1777d6d8aa94ef5341fc538b61a00db497de0c700b8a5019a950f4a76739a29602b85dec7d9814773bebd82f619a80f241b7f2ded768a1c68383ffc8f5b9c38769114c76034a023b9e5720942a520763404f93532dc2259725b45e847b2c5b6acd58699944db8a914d0125bc3d4f8afecf6f431e3bc5c80b9d9b14ce595004d0352df4acac5d0c4e9309d31e90a2d812f6f9b828d96c11d9b2c9de7b4b295392018609d40993092d7cee32da03f7739b81e519e2e75e41111360d92f2321c032b7088eb802f0b93b20c415007c6e3284800163e9b0851a537658c5b028403f6928354ea809a24109342ce1867663841be0b8218edfc103c1dc00860d540c3583204d13248dd026bc29d1946238a14e2e00b9b905ec92769d1d326003cb7623cb5ac3a144a2819b684191cd48e714f1b50dec7fa473920440cc2e0400c43726276b1b4c0be2ed642dcb5add366eab1b2744871d0ab0c6bfb0b002901a1a6e6eb8e1870a3e4e3dbe7390c07030d81f1524c8d6712ed454e2b1cd1ebc01004fe16448fd26b213dcd58aeb0d3b0749e90404086d31e413b2656edf84db6c1be53ada35e136a2173285f8bc223189f954760e12da394524691a57a269fc979033fe485a0af6229a0aecef51a41c2dc67d42761553c0fe493a070a4b481c2794e81c264d2346ee2ba480256d7e13dd37216bdd0240bf306105679ca182990233cc300305679c71c619679c71c6192b5041ad566b5cb7ba551fe40d7c90382dfc8b0f2fcca316d2d727202cd80fdf3f9483fdbd1889f2e760a801df9006269d9e058913003903d334fe3460ff3983fdfb8244befbbbd2f9c2c20a407ea8e0e3d4c3c554e2b19146618b08b45f68f36aed366eab74baf81753f1c5f7e1e229ce7eb781915d1d7c12266f3f33e52ac9c277b38ed6d5ba20d4946975aef0e7f47ad844756ca2644049c649eb158d25a37053470d1d2839fe8d531be11a2b354e34c0ac8078aa63e14cb170bbbbbbbb7bb270a5aa9ba9a64d197f52f8f9845133e52b0f855128549299f258cbe713eed54c392d7739cca75546e1dcab5ee17c8373c7666ac662b4999a3fc4dcd1683d682e34936ba6a8e94b62ee4acf63ba5698b199a21d103177e10f3187a7f721e6479dc48caae93163372e733553b53389b92b8939e421d2668a76dda869d863be3a9d44a2c7c0d812b0573bb03ff1d50a85b3af56ed2bfbd9d07b627d4eac4fc5d54c55d79489cd54e57e35572bfcc542312f76056d4a8d4ad076c56b75cd548dcd5a5d31d78ccd549da3c66aacc6a86ba6ea1c7509d455eda0aeed49a5551a37b71fd31673c55aeb34b7a9b94dff759aa3e41b68cc62780d18962af8719424411321f6979721dd5d360eda947abf6dd46da497ea9e360b023ac5c214d08dec640885ec48cdcd94f1aee2321eab6e2d47395892a9ced3e69044a9eea9989580f9b6dbad664909b7cfcdea2a51b2b4d417dd254afa0e1c3e930ef3e8d7e8b6bcbd1583dff2a3a72d6f9fb6fc2894b8e562e97e745bd66db88c3fe92e6112e2a6810c248d3f8feb448743b1d75881ecd74cf97b148f6eafd1b250ecd8e869cbd31f814366dbcffb60fea313b4210bc4b6dcfaf63a265d2cab4e05e5e58e3bee98c2a8ea3e84f2527bdbf2f455b0a351cb05c121a3d1078aa092c6583ad1a1104a51057d6879fb9fbd2d2f71f822704828de842d61cb833b48dcf222908716d1b670747ab7d416e989446fef8641fa22d0d22d571c1273bf81bdabb0bae536127ba51e9d74c27030dc1528baa023cd06f69740400d070dcd06cc8d181cd8fbeb6927db1cc180fa07244dd224cdebf03abc0e34949068a05133eda49ff712c651ee795e13b8bf13e24c68779b776a2cab57893e7ff8190615a48606dba16c833d4cdcd2b5743f7ac97d4b785bec7fd3da9f9ce55e4eda178be839fb1df8ddab6045f95f4836e803f7e07fa0070ef9be29411e38d18ab4e574112871d7896ef33028b709a152220f7c4fcc4c28ea3b10863e3f8cf72ddf79600bf8a21b452412b378ff59efbf0e1c0282fe813c7862e9ebecd779defd874185be2d14129950ec894e504c1dd57122c515a68a9d5f07a44cca5cca3a042e80ad300d962e604114646c8b2a9806cb98162b4f45c9c264e2d92f95f41d77dc1184ab9827306b6d59b76eecc4c474ab200f2dce2a3e0913f23619b2b11f03430d3760d934d4061e9f733a19489f69b02f8c72c2a6f19c52d3c817d10904d20f13009747a037745d0311b03f0f2a6d875dea930f2023cb06f60fc31960ff96521ad86f706c2f8d44c922607fce0decef491c60ff90a4010e36d8ff51019038303c4c0dd8bf1ffb4f22120dec89997e46d1e71ec53d6dcf1b8d7c6414cea88cc29e51291929f3a4b73ab1847152876cf049186fe4e34a19b4cb99929132fe3174364834b03f6a6e5ba558cae8932cdc7f9f43ec7d4bd5e7f69bd6bbfd8994ce6fdae3388ede1313e4a1fb8c50efe9a43f76ec7f7fc48adf1ff15e64822498d0b013951395ffa7a4efc0378af7df8df2bd9c32219108422532083399b886d4099e2a2f9f709ddbad600f33e09ac50937009d78b35ea5d5ab734e0a8a3ad109c7b53e476b1bdfd7d2ed3e27a5b56edde19c251bc21e1adbe92a596f22a9532ac49d86600f8d4724120f1e5e320d394d3ff5c9b36684938c39c64cc14481194ec6e6a37a3c423c3e1e3c78f0b0200f1e3c443c441e481cafa9281c37e9686447281d352badb356d08759b7e66a27bbaef33a5a6b0d0da2325a7dd2ba711de765cf0e04e46e000185660afc5c43ab05218179f0d64c19d40d37371508e8a353d664109229e3b2810ca1cd0101593ae7ac6e752b79186a209cb30681401107536db8cf416a54d84242a68cfcb633856476a29cc190cc94bb2165fce1a0cd817d09405ee77533ecdb7c0348030e5437ee7350f64918253958bad52aa70c938ae96fdb1b353c9df0cd0d5dd23dd45a31159da8b38e4fc2642ad1906a641b6a6298271f61bbcf49bda6c65d06ce86bb11f2425ff771de68ca6019039636e48b6591ec49a04dcca319ce1ec39266b7cee93e8b94eba1d978704c398e03ab53efa1a18e7beb0c3031f5c01edc9312874e6badbd304580bc196da32daa9ba8c84cd437e6438e6ebc9a29e375d0193a0e421f26eee648b6e3396b66ca652065fcd97003bbc381dd3ff45888c27a3c619261c6749961c6375d61bf74329c0c0e708003730c32ac7c12267f33ecffb98cff1b61fbaca36b355008930e9c3b3a62ae567383abcd39b3a2c63f4a5b9a20ec0f9b06303ec4c5c740283f7f8d169f6cce9e419c1c2ed322379b41681dd5df5d09690eea801e9871b329d33f419d0f73332084b2ff9361d982db315fc264910feeffa64ce26c73c66e732bae064edfa52a24c31d8a4d997ecf40283f8762b85d94928a7c38f7217c122677cd5a29bb654b79e94feb36f2e573b47e2d0c1a32c39cafa605a2386a8ea06eb59f4819ff2bba29d89b0af61f3d0afd818f49b6b87e5f252ced2966275e68f39efbcfbba7f0276c5ca2ddd30f7d62e8b71b657b2b5eb589596aa8bba1904b6fc8fc8a4b6eb384c5f5b9ef68f736a9a32a65e374f253cbac12357b7aa52dde697c686034b0fc5c1b8693a83ec5eab57abbe7b089d3677dc1f7e5fb32a9aeaf8c355d61156847983b90c755b4c584307798c3fe1e6625244ecd02c803f94ff284520633a00377df3d28f321b27636657cab4d99092465b631bbf37409f93c7f72f83c5f13863bcf5867af79900ddd79fa74f6170d5df3b98368bebbb3b772c302d02d6ba059af5ae8dcacfb9dfba7ebeeeeee9bd0a451b2b43cfddcfdf86d3653a121e2569ba9104d87ad3680ad86fdb995db705324cadf9f9322fdbf71a6b82e3c0911f3e97310f30b40cc281c44aebb41cc5d9823e6f0f43688f951376246a5c45cd3ada68c6ba6bace46cc5d588398c3130d623efd0c627e940c6246c520763562ee421a31872718c47cfa19313f2a8898512f884153c6bd9a1a948c98518f12f39f4e6100c41c0240ec60c4dc852d88393c5d517c113dda64cd54a8e5d16a3c9a477b8f76f26821cdc3d33f0a95e90a83ff956eab42b5907f880eb759123ac21c32e77bff10d04c59174de2cc10502944eb71433fef86b7d0f77b212fb4d52f0e3882e84807ee2fd55c425f1c70b84c1cba52ceb85c891d7b72e0fe2f0e3870370b5faa85442c2c881c27dadee56ee2ac6de94a55883653b350cd1fbc56bc2a4bcb6fe090910487b4bc101f35a61c6ba6be71648dac9135b246d6c8c2fe9c6ca6bed78b93bd38d98b93bd38d98b93bd38d96aa6bedaeaabadbedaeaabadbedaeaabc166caba3a98757530ebea60d6d5c1acab83595717345376e6fd745d189e4eff285410e8fd80de0fe8fd80de0fe8fd801e6da664a855538342fd9f4e61e8d1ba2e0c4fa77f142ad4ca41387693d52f0ebb0bf7fb57db700df767ebc23e5db546ed8cbe463783ac89650cf7bb7fcb75dc37cb1806bfcb4198c33c5918f7cd21d72272a14805200fde70859b392fe80aabf003880a131cf243bc095510e23f6e87c34b5510b1d06fea0314edcd3308db97ac039a33dcac5af8206bca842d163ff79fe87ed8c621719c082d1c3247f4fddf6ba6ac6bcaf4f7db99c4317d93fec4e35d7a7cf70b778b3c6e8f37dd0d9f7a7c3fe95dfebb097b907aec20710fd174eb89d48675b575992ec53dee1b73e6c203c874278f2be5cc89244a479d1cbbb49183c986e9363e5d897bb8f010b1944497d37511a59c315d89453784bfdfd266aaf42d52196e0f83ad998a92c5f42397f707abb84d8fe7f1fea018a2f707a9c81cd14fd694718943faebf2a4bb611e22334297efeff123971ee24de8d2c3a54b2e95478fd2a4d8e5d29fa61ea27414255dc7a32b718fbb8449c883268f785c895d4aa3aba467c426114b49fc364e341a8952ce90ae1479226e7618648560cb5f1412751c4b7437ec289035531e861f6825cc1dde2af8d9d16d79d1a55885fef0bfaeebac4824fef60dea58f0766f4393856b7010aedc1233285bbc5d4adfa9d8338354591a8ce969275e4f3b69e96927cee130826e5e8195e133c31246c614b007499cc6fdb5867d0ab85f86defb229ef7df7fe214a1f73eefad6d204f9485bad6413dc3fd5fd34262c7a68c8faf5c3ffd6a8db8bf1bb2440910df87be48e82508c40f20426fdf8a537c1f127ff887de894aaa7e14b10fbe5449504911508ce17e1ea9b22268e4fb1f4566b8bf8913150df7f7a82468e4878b4564b83f04842578a4c9e72fdcdf899ed8b04c5f35d6dd1f4078df7df7c2fd9ef71e9027eb15cef45557d567c4955557b299ea3ef49902d14efc0144f7a10f8953501aee972aa9fada76438acc64b89bf450216419a51c2a4fa4a2870a21cba8f29ec280aaccf3be135b4074ef8999be785af5143665bac519ce0566e0828dfd82010e66e033f6d31fb7912fe4e00940f81955db4b9fddfd1e3453245918728caafe39ce553f7df573415bd0fc79c1666c46abe1ec3208670fca33888e55cc14888a53cc34865be562a6b05ac3b2859ecd09e7768e4fc2e4ce67fe6c02a5a54916203a092598c1a8a2e27f00915303335a40c51e2a9e7e4e0dcc68c11d3de37ce3085e8caa4d14f2738dd0d6ea799993e1b0ebc66e744e267146b89f6b437240929bb94de37e8ee636deb22f861b85a22d2d2c6d08bf50ad35c4fda8df8486072e186d08ef090761a62e166579157f15dae8ae02d8bf65aa1ba58c7fa9ff03d8bf832205fb4dc8c9f0f658e8ef3065a8d88d53c645230827fde447bf6eccddd88d35e4893608ebe71b8f03773cd50ed789aa414fbca1ae980d61ff573f53171b61bea92fc46fa62cecbea8dce11b8428e9998a360843a15beabaaee35a765d0b4106462dc6f96479a97a4a184f46556bc0084a58a9be10194b0052c920b04410537df64a172ed50d9c5065a6fa446d38a18e18aa45866e10870e669c05a2c550107b6db44b0304b56e48d30fd41bbab96b62869e5e110ad260a99ad0ef9955d4005265e1de89eafb24f87d5fefbfeb43bf27e6be4266df9a77a21232fb26a1a4efb843621f6af05432b113144f31378199b404439e179a3498a1afefddff2f74e98fa3660d42ee337571ff01b799a21394bae88f121d84b98e09c55c87379008c78972f638021ca33763023468e117a2c2042934558f0060aa92d7e09d022b41322a367128556ac052f5d800d5587bf3a30b23b4543d3d5e2afa4e544d6c7290013a5aaa263d9b0f6ed05249afa1c79b8346c374116db9c53105328054f3f696454b956383515663af1039e32f6de0a3a2a213d5a441986f442d294793a25048f4552ce58c2aa70666c0543f8cd0df7e139be01005a6a2a213d5379ab79bc8275c6008a3aa67cba2758a6126133769294df0014cd5a4a774064b25bd869e6e0823ca04c4650d1ac000267bc4a0c50d603f74bc0d1d7811a4f20ba4c1054d25553208020b33992d6b508217d4548dc50850e0a3923650636ca93a8bd9173eaa6f85e92d57a8a2ecc4065a90a0a64213ff4941133830aa7a423c60a9b2fce841ca81fba51cb8c507d272ce2b714f8bacc994d131d20c81a5a262961f3cf4d777d284448496aa490f0d0f5c30aae8f7885bb05454eca99142c62893400420c854df0b5923cc37d89bb410e547d5c3d154d26b6841b250338327bc54f3eb1611d862e5d71292d2eb56f06641e4728d15b0004835afe3ce07a68ec6927e8ef3f92f2132316d9a7e223fa4ecee298dbf167f50fed7a2e3790b0f147f54369d2239a57783f1f9830eceabe34d9008104c79a0f8abb2ebc49f74e9dd55947b309533404a8e9ad8c9ec0efa3e1b42d18ea4a36c4bb11bc9148f410186b72aa69841e5074f60c1ac0e2ac6b80118480083093c5a10040c31c000418b0a5ef842f645105eee387c81450cbe607925b081034460411c41256002076cb0860ea8088e1895a0c50cd47823ca1d2aaf811761c4c00b31381274f1460cba8803868322e00f4b180edea05f10be1347b9ce76212db9d05377c238d83f34c34b178019a7c939a4f0e42271589033408200e04f27aa82762fe46305d16798cf2f849f65b00107a9068fcf9206a5cf12072e9fa51ba6cff2072a7c9672f4f82c8f70fa2c9960878fcf520a2f9f3b0a90cf2d6585cfcdc57f6e2a2c7c6e2b01b674377ce44ad5476de956fc555bba147f9b3d72a1bcdc71e43d8dd29dd8616e93a708707fe936764919ff169c472e39f2804c4d285f1eb938d9792191fdd295788e3335452065fae719b8670bce73f49133fd3c774e995c348d172c979c6179a3b5d65a6b398ee3388eabb5d65aabc96432994ca652a9542a954a2e2e2e2e2e2e2e5f8b614b7709ad5205fbb7159048e9bfb682010cb8bc3232604b377b2b9048632f8aec2bb4aff495e9dd57fa8a273af2e34c1d119de48da42f89de48f246923792beb3331e9ecf3c76c663673c76c663673c3ff3b7f565ede71a9873218c0b61dc73218c562badd22aadd22aadb6bace445b26da32d19689b666a5d2ac342bcd4ab3d26ce65d7872f939bafc1c5d3ed790782c27674c52ce94dee5e6ce45ece44c7fede72ecfcd0e94a7cffca427eaba2018d074cd9ff99aadf9fa71b55e73357d26cb54299dace9335793e534af795035994c62f6990779cd6955e4823ce63207aab5567777cedd3dcff3dcdd5b2f5fb98fb37c7496fbf88a63d16a41b3a01a6d16149301c11aa8653118eedf80dad53ffdb2266e7bfdb46b7bf5aa7d9a65dfc4f15831f7d8acf6e1c4dc2bdc7f6463d16a41d6c4434506d5a41ca941337524d757aeaf5267e2f9a6729b75ef910a3453fde4c88ff5654d549ee7c9773da27093fe881adc25313fe9bb0a49cc373c623e513999c41c76a924e6aeb649046921cff7efdcdc98e7bfd0efb4ca1b8b10e610b6f3fe211a12a701ef1fbaa07312f0fea11a6ef3c3fb8740331525cb1041bc7f389ba92850fa0e551606bc159d0a089adb20808e9adb1879ff3036534228600161cf1127e038535d05080367a251d412c144b396b1a5355350bc7f0b6ca6a278ff96d94c49f1fee1984f19956bf2cd119f652c4b59964059d2b2ac6519947b95e473fb342bb72bf74fee57ee586e596ea0dcb4aee50ecabecaee939d95dd95fda7c9677f4df1d963d965d981b2d3b2d7b207e5b9cad3274f569e2e0a7c9e3f2f296e17c5eda0b85c10062e07c4bd38d6b6016171b72beec6b2e2d6a02aa2dc1abbb5e77614682bdd4573d153daa7b7e85557a0a14cd1448585c420c30c43741840049448222391a4b5e82c2c40c593f1882a4da5592de51ed9f9dea1d681c009ea6c3694e30389340e77aefd4f76b2db3e9192be43f49d4fc7caf2b9fbc0e7d0039f4f1df8fcb8c481cf285c727daec1a5308862f9dc61ba010dd0f072a69cf81a5eced4136ff3dc8b03da823816199f434c2ae3738749a4313e777834830c31bc14f212bf54d5d0c0f0db4f92f7df5e15a8065dd9b6d6e71077063807cc1d979733b5c4cf7c90175c9041bd2cc04b03bc3cc03b1921edbad03eb6343bf2418a44f917f91026714c5e671173177e40cce1c903623e7d07c4fc280e8819358a61d04ccd58631183f0a8db8098bbd68038761962ee9a0c3187750c317723d7e88a98bb390b5bb3ce8098bb9503c4d68e98e4722ad3c5d2648a2fbcf8cf6114503c0cccfbcf581826b99bca74b11c6958c75a68e1fd473e5d3ce1c4fb843e13f89724b7b29ed2fc4752fc4fee13faaaf3f11f03e0935c0a650516de59e0e257f8dc3191c08b4b5a49eeacc0535af599a9a6d2535ec9e7b0897f7939534cbcf823294046ae991ab9925c57992e969632c5399212811f4bbc7f91f679ff17299325b9adaaa2820fff5ef9f81cfa8871753f2fadff386bba58daca8fa4f8539aff683553bdc523f119d583d2f28b2f672a897ff144588e78211ec2603c05debf6533d5e4fd1b68a6a6787f1f67aac3e8797ff79929277fe4fd1d3653cdfa1ebf9fbcbf03cd5453f1de54de7fae66aaa1bcfff499a98ed255bcf705de7fd266aaad78ff599ba9aec0fbcfa099ead5fbd3d64cb518df57cc5463f12ee5bdabbcb705dedfd666aab3787f1b3453adc5fb7be34c1df1de56dedff399a9c6c0fb7b2c0cdc1ab3722baccaad4162dc8d7581bb0151b91c8b7539a0302e1704c6ed5e5fdc2ec88bdb0175713b1617977b4db95b90cfdd5e5bdc0aa4c59553e600df59dcb6c06d29b7b1b872ca10e0fb8a2ba70c0fdfab2ba7cc0edf15b872ca10f9b6e2ca29a3f35dc5ed28b7a1dca6e2f693dbe33d729ddc9e3bc56d722970a5b8515c28ee13d7893b81cbe44ae02eb94a6e139789bbc48dc055e226712f12574e1954922b5547dcfa9a326eba251e1ee93f6a4d771476ff719f27aa2dbfb3733dbc805b7294e91570b318f1435cd307010123fefbe13a86c0edda1af13b0f81ff28380402e24d6884112fc421408df8a473a29dcb61214cffc30fe24db8f3c3cedc31fdb7d99dbbe18fb33bb7e2afb341dc076029e285b8dd0f97620584ab4e55c42fe02e31bd929e112fe0bf226e94236fc5ab8e88597676de01ff80ff3870c803c49b70e7253864e785f8036ee3216e63075cd373e00e120f219e1c65dab9132be0664122c48d92850824ffa920322344f23b4f0411e24d88e4253804c90b71221aefdcce51262462e828d3ff200e71b11cf906dc9633a667c07d39637a216e37654cbf000588411c114f53c6f409b8b269b263d3ef5c07e246c9b2f340fcb7734f6d776e388e23fedceedc6e1c4723bff308408078131a4180919d8b7294c98858e3281315ed98deeedcc63f98fe939cddf9213ba29433a6e7b93b2f64eedcc6456e9ed80771491fe0660964809ba5ac0037cb580f37cb2002dc2c6b3cdc2c693bdcdc2f2237f78fcecded1a727307e97073d7067073d35437fb0bdfec3f426e76570e373b90006e76190e377bec869b272be7e6e98373f35cd970f374dddc3c7f5237cf97cdcd4eabe166af650f9ae1665fc970b3fbc470b3b36a6eee18cdcd2d83e1e6069ab9b957416eee176e6e960b37a364ea2bdfc4dc254b4200dc251d4cc3b07f0b77890f2c52da927e879d300b735c12e23cef9211ce73b6c40756c1ce962cf170f6c625a18bc9273b506eda28d757cd9d080604e7f06694b7b89be52c770b36e25c5fd8bfbe664aaa9420c1498c60a26cc1494bcf8d13ef69279c11f07b23042a3953f235eb6861ed47d40a48560343ddcc15aa3bd18d0861fbcfdba96e3895bbb2ac6daada74d5da8bbe7aac2c958c6d3255df8d08610eb1ad37cf1556a9bac99aade99a3f2f58cce572b95c2ed7d8ad429f13eb5b28d74f4d10eae7cd8d3c3daae666b25c37cecdd5f479c16232a0266e4e8faab999b96ee6a672fdbc603119108bc562b1582c97cbe572c964ade62e97acd1caf2168bc562b1582c97cbe572b95c3556bbaafc172c26039ad1582c168bc562f5ac67b3176beb429f13eb5b2857cd8f8ac562b1582c568f2e63713541a8dad34eb310a87399cb5c26632e55f2f4a89a1b51953087785ea9fa64279a3827f89a106619dba1009edadebfdd7dfb8f525ab7219c9c711897f107ed08730df6fe999de0fec6f4d215ee9d9a9a1937367563830d760707c7e68044e40d3937dce0b36fa0cd61043a5e68341a8d46a3f1fc0c3884e7bb21065b13830c32cc3083a5a1061a6aa8c167d750473ead56abd56ab56c6c0d36a9d4cd8db501c7061c1c9f8dd3896cadb5d69a2a43ad41ed6c74db899121c7e2e4dc70030e385801e420801c72f0d93974a252ad74a4328ea38da945721082552a3b001d06a0830ed35b874ed4d65a6ba9d561880e112276071e76e08187e9cd430f2d9726f17025ae9a62ac4cc927ad1b6966adb5d65a8ee3388ee36aadb5d66a32994c2693a9542a954aa5120ee010d2e70387ad105007ab54961bc000ac0ef4b95bc37f72880e4386f8ec211cec0c2c7f8a40a6664c76738ac4d979f9930b99337af9d30b69e382fc99acd9029ad16a41e35cb55aad56abd59ab3d96c369bcdd84cd5d68c713a7608a8a363632042c4c6b0c30e96871808c0030108e0b309d0899ae3388e93e1fd3919381a463e328c2edc196552319f6c2395711c77469406b1b6585b0da61e2c01409d1e2c0c05288085c10006b00780e1d6fc277d38800f3ef86c1f3a91ad6470b5c5d5d6a88b914f0c231f3adad99a7233b40f3648911d5b04d4d9b1417878ec0f418cfc60c4c8f436d2dddd5bc3b08de338467114154fb891ca388e96c5d55823560601405804803a405819993b33bd83e8446dadb596da2d08e5482e54684a41d818052cc0c608218465404c0318d080064cef0674225b2a954aa5122d6d32148b2b565456ab55935cb88d67a691803a44d8979ba7031c605f1e10e501b608d47fd288228c30c2671b417b8ba15226655256c408cf4eebca18656cad56abd56ab54ea7d309880a3eb8d3e934e1903842e89c6a8a418925226ca922c01a017510602b1040d89a8023315fef0cffc9208e041184cf0ea226c0ba941da12308230ab0b20eecff2dc0facd12c84891b99a4fb07cb743a66aabdd0d89d30399b3f3f2fd0d6983f2a019cdf5f382c564b456abd56ab55ab5e5535b75015601a0ce022c8d1042581a0630c036806688060c3184cf1ea213d95a6bad35ef5f6baa0ca71ad4ce46b79d1819449f910f9dc184c40e01ea20b1418820c206718003ec03825c18fe93453ca088227c76119da834eaa28e7ceac8e7c789e62ea1d5256667a3d62586743ab16a0cb608eb821110b046803a10b02e1c71844dc2bd0b4824410289e98d84b5d65a4b6d10ea2ea8252a15861212769493b019d449c28e9488c06889082cb1c4f45ea213d952a9542ac59468cc388e63142a9ed491ca388e4d72e1288b67a69bb04c803a4dd8979ba90ab0bf1225f6e52e5103fb7f4bac045e98488009139fcd24a6a909068375bba069d0e081b160309825551af3d2ea55af7ad516682cfa8ad5aa75658c32625aad56abd56a4938384b849c43d68460950e48e48c6c128944e2e1e1e1e1e1e1b1d65a6b2dc7711cc771b5d65a6b35994c2693c93469ddb896c1ada405bb7cdf78f586ec4f997e8b0a492412894422f1f0f0f0f0f0f0586badb596e3388ee3b85a6badb51691b2d3e9743a9d3e25a6232c04409d2392244122c7f09f4c22279184cf4e0289ce9d4427d14ab4121d818e402fd14c50269898de4c30e1895a26032cdfd190a9918f6f7ec5c7f032a4cd08e63fb4104669b491cf4c9d4e231f6e091b015067093bc3041376a68926ac9299254a962cf1d94b3a51e9070c27184e3545607029638c2b2d2aad56ab46cc2d35a7132b069304ec12504702d605264cac0b13988075c2851be43ff984134f3ce1b39fe844fde3743a9d7e90b299227336e598429870948a50a1293d6151504461a10075a2b0282928806a4281264da6779352a9542a95624a2ec498482f2edc388e4d72e1e182f41451766eae3e324f5e5e625e603098bba069d080b160309825c5702fecf8e8a38f72268a53e14f381fa98c740e6a044a87db986854a8f49576411185144d7a6c9f66ad5ab5d65a6b5dad56ab954baf7a9cb01300759cb0dc134f580e8a2840228d5f9ebb34ff4929a290420a9f2d4527327150d852146f607f29a4a000056ce9369103fb7f4d6ce94ee16af4d09e9ee9ddd3e3891ce62c9f82e5fb15327552c99e43e2d097df469039dbcb6f3aa4cd8eaf6a412f584c06340b61a7992a723a7153d826a0ce14f6859e1efb821327b6c717eecc931efb493f79d2899ae3388e0bf2fe5c100e06dcab202e3b1b8d31d1ede561108b5089a131a1a8a0781e755db082fb817b5c842b2265e5f2c28a3371eff23206bdf44a4c8b4aabd56a971712b732ad562c6ea6db0a50a72bf0c66a15d2ae08e5c08ec5e8ca48692c5a4a4b9112136342c5cc66732667e4f02904973be1e066acd96c6639120f1517acb5d65a3bb3a339ce718e3c7746995470773e318db3c4c3d566a3d9f07ae6f54f8ba0cd6812740cb7ec45691cc7711cc78de3388ee3d8b08635ac61ab7e02ea3415d604058a3545e92a486fba2f58d155b4156d85159da84d51aa9851b0c28a0a5480ae5634ca6ad2ae987260411b8bc6028bc6c213cdd9acd990a922b44520715e5e7e9b2173625e7e9340dad096bd60415df85d189e4eff28544daf562b2933f50ad4e92bec080b2cec488a14db16e07e7465b2680b74169d45169dc89a4c269309f5fe2694c905891b860a613c34e6c5a55f62482eac562b96cb0b59803adbcdb58d2d369f9e0212e91d2e7a4a73d15c7021c5b432ad569d46c3787e09859968a6e7b9942667e888b9d4082f97cee14263d16896c4bd4934c9b8b878dee6b9d0166d792d97b6e44c194ec7e0b9f48aa9d5c229e1f0740ee736f565ee8e68e3b0b32becccceae98c26a5acfd146689aa6c3513e4e997ed30a66adb5d6da71f4d1471f7df49102eab4056c6741e5bfcec2b616bd0548a4473ebd45fbb48f4f27b2ad05a56d51a3f8f84c99e2c38505b8a0b52e281d5ed0f6a2bdf0a2bdf04494d657b0fca622535da39038a4972f85cc7179f94da4cd4bb37aec959dcd66b3d96c35530db3ab553717a04ecccd360a5ec47cd160c4dced3fd96134181d4687e1b33b8c4e54eaee6e8ef60e94b13ea6f5555ff5f572ab0a2a0aea19af9725b9703b228c0acfc8faa475eb34ba61ef0d834119ebc7dc2574ec100693336a842e20dd100d1e18ccc2618560b2332947a08c8ec6388e9ee78d33e56848997619e0769937b6ae8ce1303943229148241289878787878787671cc7711c478739cc615c7461a3f0850df2028c2f6ce96670150618050c5bbad9b240228dad1c8e6a16a8636ff6aa60699635bdbd315da5adb4159fdd563a51e96d7dd536eaacbe51615505f595654dce81e51321b1c4e15ebe4ae6f0bc7c1da40d89ca4cc6a46c1cc771f4b161a586d9d955b8aed255b64abb4a57f14476266754d35a6a6db576b39683e2f2fe7674793bbe84a4170a89faad8b98af4c4dcbb53339e34fba96e75a21340d1c72e6a5dc23d71b254ee9fdbd271287e7fd3d2a3a877b7f2f8adb98fe45cc3263f6c6d3c788b93b0265743bc671f4341ce6b099723b9e3890bb21677ad034fd269f4d19afe1feea41241289442291c26055a1c2a272810b882146152bb4adb495e9dd56da8a27f2c6be801855aa9cac58c1000632d0a2ddead6f4ee56b73c9137ca197f89c3e13c63f9a66564aaa9bc2cf1bcfc909536f5592de5c88b0e9b32de0e2b5dc7472e94960e7f6e4b97c3df0ca268a8948cb74549ef149a19000000006317000030140c872341968759928b3d14800d62a2625852348d08e5990ca378ce18430c0000040000000084a4a6013e5748e3ef21ffa97d790fe7d0a098f4240bbfae98874ba1dbc54c8a14f19f38b0a30c2c0a70e989a52230d72402343d3e4738b7f34880abafce17772c538f596c0cd37df18a13d6c997863111efb931b034039eb8b424102e377214f12729520d7ab62816fe9132aca294f17f7fb5f28dd75bef59f4dc34e78f9687cce76f7b89aec73dbbd7e1b0cfff1932240058a910b3800062fc411403162000ac19221906425d1c1c4720225d88ee150dc6d528a004303f786c03c1b8faa8e378f131728c04ebf236d55f1f56b42c48a8f5770f4ec99f89a0bf683ce7059bace8ae792d867ab55a73ba9d39fc7cd6728b461f344f4f3c8270de7015effe02b27221971e604349cbbf9b8c439a3f24de04ae0ec166f6ee0d6cdfb6b6e9eb201808fe3dcab46ff8d63f37e2a4195441761715b4338e28a66749301f8aa03d11c775d530c4052372292ff08c759922f444cbfdb9f86144607c72f1839e9bb9752b0589d2d8d99a9c7a58efc9e39a66bcc9282f57d224234204c9e5ceb864434cc4aff9724aef263365ff9bba67833eeb0f117a73962e035ed6136f0cce5daa41148a23b15fe72e4584808516246767efa002c520caafa037a2538762877351246412c5ae6e12cac4df48e1b4a0defab66def68940a1caf4fc74069c89e48df0e198f28edec0d0f359338bd18758a3ea2bd8f8f5d7ba41945e800fefc49cdb53298b1168d8a690a50fa9c0ee99b05e13135043ada866e181eca345aa24a2d03431f4d4333661b5e36840075d079a097a8180fb723768373c00a8783b10c936ce99b98c9b7929753d2bbbf47ccd4c346be0a7b82ca900e307cb496d94f54e284898259f916775f33cad8dec37cc3051a028a4f996fedd97530ce68cff0f0f43f37909198d849d98acc486d5e8a319b6f2a5261aa541c81071f8a588f06294b608ab387c4c0889adebc9a25491b9d17c0ff5a95178fe92de6d0fc3b42f354a6b713d611394e2273620773c37ba713cc37167e1875ec426f597353f3b4207dbe81a499eaf06ad656fe64c37d86e94f1bd41c893b0369f51841e758466943add64760e4e76e33114cb7b8822a0303907602e43d1b4bd15fd4f212caa4626149cac88b5bef5615951f418465ba79fd73b902c6eaba1912bbf491bf2a688429dd729073726a6a1e72976ec7ab541184d744422f259cb0525391ad97a0936a456ef755291d7c707d197f729d4f701ae262efc4748b85485d1abab79d46ef129460840208984d0a4915716bc04a6ec9031c775bfa1373ae6f00986da8f6a4eee4e31d28b99200e1d4a9c1e49291207f946e30002170287ff8832b0351e59206955349852a3a9a325725f7bbfa04cf89c10101ed5060e8d424dc858d39c1e0e09826793802278e816ac57f87eb677f4a1bf61fa260424aebd28a31891285349e0c2e9b45b947a7e8d2514c3a5129efa8d381ba7d305209c7bf2fd4eac5bda72c3ee169d64b20a27b0aebcee1227e930d141a4f6f1f75db8bae6f1ba289235a644fb3954f44c56fe9dae9af5e15d940e4576c90a0a002f47a374e0eb53243213946afb5f8ca11e321634fc3a3a714c89304d09cd22b7ac97d1dbf2173729446be507bd7a4a7a374f1cb43ea512f1ef44acace9c8ed2d6b87848c9879fd4ba76e34b9c71ed4c5cd850d57e24e2191fb7ef5c89771ff8608a3eed0cb0239244e2cd843f47ba39d6746ca2310592ef4b956395140f1ddb92e69822c2f551ae787593ea304ec28e5209314e075558d5dd81bad91e8ed774785a9c0f882379b8fec3c5c3ec3bc7a4b99f239284a89fca287f8e6e109eddbcc40404d090bb48546ba50bb98d35e066b39fd387ec694fe1661f0402b9f0cb6f76e8ec2137fd092fb03c3d5f1878a84d8ca3b6e2cd2cecfb43fc8a0a14c0c3f1cddccb2360e5c047b1f719d7d601e67049cd6ec9468299912ef77dd01d9d49b35e8d05d6cb8e3bd48384d03c952ffb8449448e5344e66587c48ed164efa66872f656f6748e47542d0ccd3bba8728259b20b88e2af08be61ddc97ead64cb0a61fe0be161c8192eb95de1d57c60226fa39e32855391ca07d79b4dd517655fcc84bb080565f6593f89c10010a86e55436bab0d4c4f9c3e41b3ec869482898bdb31dd6270df79e8075d90c0385bf00901f2004e780190af15e80546c4fcfcd472f3b8e51b8c4c4b7ec9411ecb4a9ba0d97cd8d3cca443b60a59860074ecb00ec124ccd441d78051bedc4e791e4a510880d676d84274d3836fc322192a8d8d9b74bce6c14f4f1b45ddb73724e5cfea8b19b603928531cc89044c236516de5bc7fa9130df381af71fd337f691e5a55bb29536c73157ba8713e091ae546c2ce6de22acdc6427aabcc795931e39fd87a9a815ad5f6297c6f48d8e8598169290366ae92a0250f8aa1e258a00ee657cbe52d76bf60ce2a70d99ec97628eaa133c2a99d8f7031b00e00371f755848156766f6ecd135e76b122ce9ed20ffa175497368bb9337c4ce9dd4ea0edc0af6b4f1a2d8449f13e24ece237c8e1284648a9c051d62a70332872efa78549543d48f431745e2e0820691ab83d760317520f2833294dea175a9224bce408857fe36a5dcec6febb45a3a2be3605b31f4bbc7951b6c709e54150a8e19c6074eb91b7cd124f8fe73198f7e65c74f46fa71085946358c3458cb684fcce251d2ee32fcbb283c5f6afeb97b746309426b3a489c9d9e43259481985f825e84ae1eca1824214b2d42573a9253fb71ba81570e8ed7f337b27d8c1ce669cc111981f26424729491cbb58c228719f51c280e6fead8b5186722c542e1694bb1931eb61a5265afdad36d908d333093c908fbe90f68ac210820f66cb72976e5a1a358c4c2de4025d87bcbcaf4d7134498189b6a9dfa1c1ded44af272868e8b6dab4c37629cb168ab54b4c4d27ad676a71e562393f1177da15a180ade8e2a58569773300619105b7392c4e61be00902a5729e1dad2846dcd1806d224d9d496e6a3b9d5d2620d65d285a8e39b6557b3b618256b0be12fb7e3d6ac636c96cdae3348c0e1bd350bf7c28ffa2e35ebdb6635139dc17de2450a0945a0d5a0279158b968595f6a745172dc9836eba4da45e08a8dd15009215076fa68cdc4b8d435d31d36055346c83eb1b4e22fb28a3e124f451df2788de1f20e614c7888146f6b9578baf8b16cbd34aa77f1bfe807da1295c7ae596d7d37500aa91ec8c20ee49cb1ccccc0b0544cf2f2e10874b143da9684d4ad09b715e7284c8262e4829ca4942d956bdec2536f5ddb33ed7c39589e3fd89cdc2caaeac5c512821c5606c4e271fd27d9ddbe344fd9f219630b98272b6c8eeb613d6d14426755b441f627d1dfbe7f846e3af978fdede4c166ec4ffd9d1a32c519c75cd130f8609b68ab70c0bdcce1b992e2165b852770bc4cf669eaf245c0274a548fa0c7fbc6429ecc7de2913fbb35279be78af7655b26f4f2c91c7952404ea96b445c7c8ea4c6825ebd7e9ca4862f3fd7cc61830d6119af91106eae4102d98bfb25f99e3c380aa906ab04a22027c0c674512a588ab2f37b9106061c636e5a4e4607220cf5030380605fa9812a04cde1126f98fae36341e214c28669aea00f8add09c7c018b0f41b5390223a8009243f07c3c421c760756bf0081c48e95f72704d87ccd123c5fbb101231c33c64826762a05822886e2328c6f2e637d0f2aa1f4bb99ebb241539d9da87168260ff334dcccd17f9460ceacac3361539069c727aa8d823238ecd4ad39e0b8de69a245c82423a3ba85c869e4dfdd95ab1b5bb416a589e2f7803f0df89a5ea6e3228d7912b1d3572fa85fcd6ec064ad2a5ee97c5bba93c37bad6b64376199b4a7616f9e524fc38653c8aaa123a9ab123000dab54c8ef94e7c1a4bb0c00266f92037c51a979fb2b1384779202dcd8dae75b21099c1a714cc631f28eef97861a121bf65ccb07c2f55802196dce4aba386f5074496d5fcaa9094e5b45f161be1f33668dcf81cb882a5e090ec874a8d5f3935a03ea8d4808df4bd2befadb21cb86aed0c2e2ade27606925abfddaab89f2180b92b794aba653723d4bae937faf105aae2b71fa102b5927463859f3b5ce4a91a6165a82c5222b41a79d3a200fe133ab9d0d4b9330f29107a87b0fa8c27347b73f152cbbf7fb6703b8342d1b23e850ed8f8a229e382a5dbdee6bd21e0c8e63188bc78f78bf050d9b82bc3c362d308842fb48e6e7110373caf88446f986cbd032042b35bb272583710881dd0093fc9bbf1bf0be6cda1581bd71a4673552ea0d14d90e0df924cbacd0082b30103492cc23cc7933698d1b4c006aec8acb0639c9e28362f0e4d11a3cebbf3f81c045032f561768070d18a4f55d08a48a3c0028ad0b6c220fa7c72680d559ce06a6c8853e2dadbbc04b9c0689839df46b90b32d16b8f6538226067088b6f4bd34bd322499f7213e3d2f1f13ad0aa3897bd31516d061b86465402093ba30777931a6f3b6f84478d25343890ba3db924fc0437cab2363e2682c586d9b092d8563c4dcab0181347682ccb94b1f8a547c1a0b5eda264fc231b242a548b48f62ffeca6c08c13cca81e0772c8c11ce5a07353602e4af766d29713b3cc025bd68839448f972b9f38d6183d50be4e5b025ce32c3055c939049e59d06c722ccb762f4d3bf3e107c51e110e8b4b685bb1ca0213fc8908ca8fd880123153353be834ecaa2bec3c67300b971ac3e6aa8082a8c0194739ba3a0330106a81465deef72fcb5e2aeaf82e13f82fe02049ff0818141e507857ffae26996fb1f3894d01a3d4d6585fda6fc55ae7ef821c1c3c8831d6689438c398262bdda5d9118262f17cb18399ecb241b188399c3979f2f8c3f34657cd02460e1ac2a4087e745e3620539b7050bdb0b7ebacbe03e3f2fc582ceffd253323b624cab93adaa9b9e84035126f4ab51dc6a690e38f3c5f7121f43192a431a12539229f42a8a637957f0720e1c24d579164ad5cf47cfbf763ab9811fa7540c7a1a7ab1e5340352f5e376180a9ff81c5f3d8d6ec63ba5d5b7070875054612acd8a8e6f6fb2546712a7a7f6335946370745773fabd7e05186cd0c92471eab33179b6ece7e907aecae267504fa7cd6c2c8c34f99b9a8ccd46b2b61571ff948f293a65c37bdb883c3b9206f2ea99c11816bee6caae1850cc22668da559dd329d1a3ffab92a073b092a0dba6234197588b04dd1751d95d0791123717c8453b1789606316953375ac4db03a7e0ca1e4be3961547608002dfacb1fab203e0ea4cd2ba43962bc4bb1f22ce2a5d6a760eafaa90d1e41c0f2ee52744822ef50c99d3b20b881e0989a734633e004f80c16d247221f120e4eb5668fc4810a7ea761b6112d18c5267a53318be41898665e77615cd69545c9e50974e137a739cb5c39a7ad1bea82aa83ab812c6d3d4cc18e4048b75fbd8b43faec1150bab354dd9b5bac92af3eb6e39d5d6cec66875465c52e41e67ac084273715eb40fa555bc3d5db6b8d02d1c8f385d472ebce99e6784e3dc12da6ca753feef0cae55ddfc37bf5b3e60a8f236d54dd5e05e25285464ba94e9706a3c844a25f4b683ea04d78067d342ae481b7e9e2cb58e71dd3117adf73507a0f0ca6deec23b6de952e5655a4aad059c3791c483459eb2c4d98417a4cee7ca9e91eb6090ca445ebe92ef025105461975e44f4d14af58ad608fa10fbf88267a24d6c31204964a28fe07fffb96215a94413b1d2be13d2de296e3caf340d2b9ae5466c4049de8c4c0ca1db8c1c7132ded32cd006beee3e76bb0dae00f584ecb1b3cf135a62102f077b1ff144d58ec67ad4836d17a925add54901af7b54e703b6c6ea54d349b53c894c06f9f0ef6ff3480376d20715c62353c39d38a4c5e93ecbf3805808a3084c7f09bff54a86aed7ec13c0fa138aa9243b5e4201ca04700c3594245d9dbffcb6016d44493802998f16a8ac7fca140a21c55558b96bbc7056915498b5d106de2f73b111d7814d9d953ae8c29980422121e4020c7fa701e002b20af0d1af152c75f24bb18ec00b0c4807848934482b38024b9d6b051c43ec60fc6f6707ffd0026520f683c4624b5be60b5c50f9f31cc83ab105a35ba35f0233101c637b666816862551324b065d401f711467f39c2994df639735d8293498e3dc514e9cf145c1855c46c651108a11ac7c08c094d51e3a7c7cb9e141c45de328943461413c11e8d40619c81b8a98830051a1e1f7927c913a7a02039a64c51bd30ec20fc37ee28497003e0549803a9bee002924f13841891b43683cefbeaf1ae6004a3522995a0cd0cfe9a849b11ff1ff23fbfd53f5a3715f363a2f66891429c309ca917f6d729b022c59e3af8484c71d7000346052813dc72d2a538f18c82ab421fba255f2883a61ac59209f7815eff88bb0c92b4dfbae43164c160dbd33b25d4b939808cba8c42470b989187b12e4bbd1d4006edac9482ef39a2086404733870d124dfb8dd3d84407810e1749219bb6da6f93e22444a054c6581530f03cbfcceafae136def18863fe4e12a9bcd1cfc8360d91ac6365e8229c1dd97f689b416520461f94a48e097828e3d2def9bebfa5e594db796a5d82953d905945f98690e1ca452a5628ca3c0969145a5fdd2cb2ff997044c8ffd7c063d13faeed0223077bfcd74cebd02b32e023fb4f309c891b8f3892b8731bbee4c1a5e14199d05807e6196dfb4c11369a84143979ff76eb0e1359d7c09fe0f6c350bf81b3db0de0e8186e98a864caa2a080bb2e3f862655b82b38ff5fd252cff2c6ee38820bd352d1bc3c8cce48a17507bbbc0b9eba6fa669d586e7d1210af9aa2475dbbebd827a47c787457f419f3620a40116688486f2ac6c3f323c375eb6e10aeba9a8bd269781b7ca3160b10b8abc8f06b632acc3b6cf2f440bbd11a491fcda0eda478b19ffc24204a2a49794d8d15d3ad2fa0d54f39093909a0428e858359ad1e22191fae4e85c44413c370c6da26c42eeeaa31987185cd4217174f01952a40ec67e09782071e952c724852c3490b8747a0796680611feddb8d76dc5c78dd4c3104cba0a28587e96b52aea7879e4591fd1ccaa358ff1f122bcd18f94c9cec6437fd0bec05a7c44292a647e2b5dc1b5d48e0d60a5a5902ec264a76e9c8ead8441df03a60634d4f04abce3e27a7cb5a3951bc39b19ed75c60a20879f244ae942f1797f8dba554fd785f4c96bcfc0966b5ad407593e2331a70f018d8e5c144316f59c743126e4a807dc5134f8021d0e53661882c0dabd1d11435d7d6982e77d199efb662d3676825cc022f45c67a9805185c3106b35baa8548514c090ce8aac37a8702c0c3ba4ee2086fc2c12bd74eee8ffdea0118c971f1bd49902224d4ff728973c1a243fb3e7a0c2fad94312fb3d65d7c7df7b537cdcd02930c52f698c381e4e31390b753bd3c18e1262cd4a6b62fe12c1fbb5e5a303a5c7fc4c98c07a2287caff64617a6c52dc85b725adb0bf2b07535b30d688553838aa1dea983c9a831ab51b54e6dbe93aebb0bc89b8b0f968f7c9ce5407fa5edc2538491b5717c4450aa067cc7658b9e1ba344fc24b66f9ff8f65942daa46404242fcc4fc50c24df30ff272f411cda854c3902b7e9651cbd7bf415bb71643056d1b28dae48da651d5b272057c62b3142a9780476b60948080cb78ef5949b08aed4a77194abbde580a821193fd796c139f3362f11a66b5446ad3ee74f892e5888e12582acd6f0052cb141ac5d82c5394c9ffe218f9300e6e199e521a2523dc54d2d38644165c4c6dc0e772c2fd88969656cc7cb86529036a55a52f98bfbcf6df03b8f32687235c4bbfecf19f77c0f0e6e07337e45d41423e1924668c4360c034b778fc620f919124ab938e3da412ef2c962c390793fd49325084f364be97147fa1f3f2d072866652fe56d88a098a9de07bb8a7da55142df1ee72960763c2d34e2aeafe1e02cb6b8a9b669f4758327494578e65a0f9e29307e6c9310baa6ebb635b334bc4bbbe05e4f606e833bf654211e72ff1d6f6cc034787ebfd15f06a601c04d36b610a4f900c0ba172e01eaf64b6f9386c41cc7e4d363294f0c25acbedc1496c898e93dfd991bd2cd89a034ba2b80c91a795b5628d90a6ff1067f3a62193eaac275c9621a21995631ddd54026042a002804ff942abe40edd68e3e8c7c2365d4142805ab25d8c40dfd203f74a7f0e31010ed095821e974bb34ee69332b61e2eab885059e502cc5bf2208f503f6907e375de437af821ec9ba04f62afadc44c421ca9ad819d5edbbe6d2dad8197090da9710bb03a31640a9bf1083a010b423000d6ad3c69fc1e401fe5b2a1977fed677e2138e38750fb867bde60fa6ed8e91f02050fb784839135611c6542fcd29b2c45755ebc00ca15de41a139fd86d59f6cfd2ca7c0782604bb2234a0add2cf5f7597c6ee55dac11ecf20385870daa54e7105105bf0615ceeda61d0a013124f8102ceef8718fb3627151a267d1ecd7e3e9abdbb9e572634e4f783b934a509a4ea5c4e97623329d853032da85a4b18a0f881ffb31d8dcb7d0756eecf790a1cdd1fef38c874681df4c1187bd40ab83a0e0087f8d689bccf73c58a5905bfb08b27fc21567217d87cff92c17fccffb3458eee26eb18d0c4c64d6b2d8c1dcb2f2cd50c59c39dfed82c9d46513342c4445798101ce46b4241d490d8001b047ba61262aa9b3b959a63f53a2a4dd35327960eb44c37504fd7441edf2c30b09f1c619318e3c5460fe01253b0e556119b3e00ca302967eba989054980db45ef4b7a75286fbba9dea98cf859571d985975f17b75bae42b8f527d04b32bda26fb467009843bd355d37f3a7c8d7df89be27b89032fa8fb191d625e45fb5ea36814b80e6bed01e209110c2ea6931cbf98b9d8a8a60a15b08f962ae6428d2ad2e1b0144a6497448013073e09e225ea028e9c8a8a04d48be9d660633e1e47634e75b8c20a7fba865961f3d7bb9bc7bcdc4c863bc8e42ff0a7ebb21444d232b5d70e2b0122524455114ac379b0208bdcbe527665390944346054d5e4e16fa77c9654be894e058e476a47014c4198de4f22035cfa5584ca16e0f9c0b22217cb063ed76829c0fc462a1ca14d5d1e2ac4527de486aab43cd2e935a044633ae8e99d96912c3afd9ce560e606c42002072b270a3fc3df75e09ac6a19390752e4a2de790e88588377bbafe952f11c895feee6f42ba9cc400d3d1e470d10c0633d3e06dbb093516d4aad18ec1fd9387e44665da1b7a09196b585aa51e8de313a948fc830b0f538660bb9a5456f0b59721263c40f7e020cdeee2ba25c9b548287b29be1a81eb1072869520cd4742a9c967e99a09ede722ca3007712af06707f0e28ff3b88a9bab8e15ce76530540fd818a711048e0ae1b7f7680e577650b747cbb954ba7eee9acadbc40b53666b5d07878da8c679b0a971d3ee9bc5d24effca362902bdc7287d9c4e9fba7e3901e1dcbc92e720498fc7c89e25fe0e3996f26faf49d9da3979c121694e51218f30c434f649340e7058f7dd618d99d2aa95f2f2a9f4f41e5d6a75271976d767e84905d44c5bce8dfec220f94bb048e757cc0f1840b038ea1a40908729340ff2657465091f1d7cd0785a2d586824f4489faf06d683fca49c96eb945f24e884ae1b4a5e8504c01c453a2f7a7dc34540134aace512ac43615ed6215f4b84aac5fe55ac62a4eb36a599a382098052d6d2c212b350c6d95d86ad99474fca8c8df9509ff588880e9c01a32caee06974822d04b7fb32af918a3286a408151f4c66dbaf6f01c7c49f1909aa2d363363a23ba0c25ef838f8973d5a436f1957223736beb20c2d8708324ed5cd0dd5cfb5f14d188ecad4101c5d9fe463d499328ba092f5535c0f3475d6ad5a100ef1d115ce4ee54cb5a53710756449299fd34ff937247bfbfb6f4fc7dce7023abb87ee967ccdb8d04d5d3fe78cec098f20eb1457a68ab89eaaf130bbecf7b2c66ca44f1394d0085d41305eb51c63b969c653cfa0452f0160840f7637781bcee5277966ac6859e50f7569964096033529d58494065aa06b9524065a80261a580cb540d62a5800a86bf0e1766b1da20d53b9e55be90fb3713723bbdfd8e1df083853888946433a4469a3be8eec6c51a7e6b09c303534ac078b02d56d85f43f0b08beb817eaf14858a9dde7d1a3dff62710e0bb60d3182735ce3595197fb24133fe0b0d1274c8f4c90dd6d811542a00e50e68ccd073d0eef9de15b0221b470f48231e279e3bb13e509b9096a118789c231908cebbf22640ee258c5a327be5fa914428540729e1d7cf4a5ce2cfeb1a8e04995c1409afd61e4ae717fbf323030cbfbd5cb402bb3ae9c171352fc32b4313b4438395ca4a51d3277e3c4ad5b5eead107b3971eb679ac6fe101504f0e5815b8f84b7935983e1fc51f6437b6db8e39fa15967a9c1bdd47026daa614ad2a2e0ce63b27895afb88e4876941a749816fc1963f4ad38ae8470dda20a6ff36641c1b7c551268ba39f68064a962218b27a17440bf77c0b648af572a4b15c91cb974b723c5ed8c66e256f56390abe475c2bc657e43aff12a4ef47d9f600a98dd0d02601901a388be8168c20037171ca45823e67cd336f463f9b108594fac991906d787ca50460c1455b6d063c729a8687432a4dc9aa4e0ccd31c3b0d001fc36d59b655b9a91fac00de3b5c996c1b9a1c4ce779c991e5dda65c0298122b1cdcf107b1efcc3a12badf54e161f25513666c2f3d8e51db38afb89e1c92b1e52a769e9e7dcb1bb3b534c674636392280585914d8880070dc3015002b1241ec288c9c2f8008b03d0a200bb8989841b0da7f535b96a9e51b90104a2ee0443d880be1a05d4462398c9ff3382812178e9c0024b285dbce352e0f8ef5500fb6313199cf87e39792bb13112422fdcfa94669f888520d8a44a26223ead0b620eee475c858b19a2a21740c4716d1b4c9964566084501844df9516496b6095b1a2e41b3a5d2730ac2c595558f8c5c49e3d845ed335e14515a360c8cb9f071e0c412752435aeef07af359f1e634b5cad11a96264644bdb417c8c0479b5f43c9e2d3db45d4154bea99f6de66c3b93a308e61e1e210ce7dfff82fd12e1bb3d9d78fd9ad83b6147f1028e029e6491ce9c7d42941206d28758d04a8bc7ce340b4ef5329ab24a5e5e58d0c603b952753bf713c7662cb045ce19c934c99e5e88a420b77ae9e44c188c9458969e2a98587946b161adc66c104fdc62c381ebc5868143f58c95aa563231a3dd031c1342273e8023e7c8d78c1b3062199eb18115410059302144bb452c6f71d7c8648655e60af1f3cfd7e78f36cfbf0d3f7f907bfed9f5fdc3d4648f518cc4d14183d50c895a4d4fe589e8669eaa2a08016d882f8335cda62c387d4ef3f8a6c8c20d839300d149b755b190505240fbe6f4e64c594f6f9a258c57e7578a4256c7290a356f2a0a815564b8c819b5a290fc87e5b507666fe18c10e5f7a78e9b971e6f1cfb030fd00d3a407e65371e88bbe30ca180e53f0196d67f3abc3ab61aeb70d8c16c15d8a9c09725ba81c8cffca3d4edc8a70a6dab91985dfd389fcfa639063cb315b4138f52260d47421169449b4b8e8142fa26c91334362e54526c8d8eadf0e8c3de26beccab90d53126d7e8ad9972e0fcff0dacbef1265613a342ea80a3517144bb42c25aba82a3c84c9ba844200145fd060f35da4f533c595f05531c60c8312e8ad7e632c755d7c48ed437922b1c3aa8b06e76464ae3858e666e122febf4b7f088621533abe62d4104c2a60249d6116179bf455d4296103fc75eb8f2cc6240040e32259492c6d684d292e7e1e97345e15187ea9497a492008498ab16fcec199867da7507c7d8de0a94f49fc8603aac98f8f814b9ea549239b6d67be20476acf784ea615f3316ddaa33291afa1e8ba26d510c9b6c3b2a1c4562c2c3dad03c91bc092adee8c5e765ae87dcdef562e119957a541d9c95c40b6d1b64de88e0ea0c980c82af2d8c6af2e9e484a21b85ee691d7ee33bfe39ec17f9f05e8c05cb1304f1a7dc03502e13ce872218928ef4b89c47462ed37435d20ba643a9eea1f29267e0c005662ae077efe80bdb4e9440df14e5d57cb9fc2857f74f402707b731e78a41af5dc759e54fee593946f5bd4f9c3c19f3000006d4c900274792e5f8cdbe686a0738f35d46d3d333ce0de71c633dd8ece20cf8ea4b2ca9690e61c85bbdb43a3c1834997e532361a0e0f7796a07035df63e1f784e362f547e140a18f0d7f57ce2fc3696f2978af3cf37970f599c7f88babc4980e667ee0924e4451d4701f29a1725d48be637711c40e6290668d9cb1e271302cb1ef731c48675fca1819b7e41b1a4904944dbb5c2919be617732d0df55b87f15c101f05ecb05c93f934319e8d85b4c6e187dbe5d8398157e7128e32282839259c914292bc66f05930130fbea4e31b5997381f000a54d7d8348e42dd30206ca74c2e3e6bfb5c095c9287c0d1b25da88cdd22d44bd150794d08680904a25a39381e74db3f5a678ffb6d2d1b19299cb94b0db017d27ca20da562951e5a61ccab5db9fcf8c4b2c7b78fecdfc606e6c2537dba4a1ab401010847382737be75f8077a3a1bc190a94c4c4926db055da930148c718ede4107e28fdc8f13b51c6810bffe7d9444f05d754b6f99402011fefd4c686e3f79a5d2c1a2536effa65e1a043af24fed9ba26f45ada58b183ca3969e08a0fea766ecd923265004cef6a282162cfb8416b036ba105e7f6e387c8c59ee4610ff4bd08fb1a4e209e441f3972dad01f83b25bf581058cd2fa00b2361fb296aad014a492867c57a8609fc452192b0c42ed20fc3600272de43df112d8b6382fc627c7b2758997b9b78602b02f816c9b5c9660d62c5abfa2f6cf1c0bfcb1678661edd0e4d719ebd95b0aae35db49f66732b79555d9d0ffe4d977394946dd74a95cd44b998c19c165fd0a9ef48cb3f8341afa045504960bb520741d84f83cd7e28a9f6db05a99168623d645214f55ad4bc495f41d478135055ae64b282da18e94b0f3d7e4cbc763ba9d72839d656391b2d32a47f94ab2c705348782db24a36f3526defb293ead7fc5d3aec1998c8e1d919d1bcd81f6f885324c0577f31a322143f458e2878ce74db6589e89cc12e4eaf585be064b687d07ca9004de168416888bf21452f14d4d896c751b9f2a58a26e52e933736901a686c100e1e76623ea951b15aeeaa0ebca6b72ce879121fa0327ec6b2ddd135b6e247a9ce6e3742b9ea05a211fd2984ffbb50988f2db2909099a50b7dbe5b8917e0c21bcbaf080924b8e8f122a92f0415465633bd31a3eac327f7716e758e032ec8c51823b6fc11b0ce4a937f1dd40be007ab772d0540496aecaaefb2d1244aa5f84eb2e44441336b17da2908885cd6881e3d6d0c4997b241024570ef9f44d4c3ca2c3f207fba3796168c5e79e9063a896452cfae3236091f01c3128defbb96b885616a2a6b908f798e96674b4e88c967018788f667f86e586046885fda8dccacc72bc5a167a6479567c2fd6e50fbb9a5b97a52f4f38b888833b5faf9a07f74c6766bfc6c660c8668e2382c984fd93d1dde92fd3495b35fb78536cad269ea81dc687b0b1df20be0dc35e1a7ce69f8a73ea08c9542cf1486fd748772271d080a7c178f512a17d7c07da4c4c965db4f9f7ca6c9a655b48a6045f541dc64089c0d87b8561396510986e060eeff0c0dda4854d5456e165fd37548586bb1aa52b79707ba0e75ff25387db416b195998c9c12d677895ccd4a3b25008bc9c46248ead735413a95bc055c4899f4fd615958eefcac1636d117fca18cd2e2356fda25e65124a4909b3414f0e7a616802cc7ac616834083279fdb01a1de3140f3709e2145976b12313411cc76a66e75551ac68fda8fd119902b5f5a2894204a74b8512b47386af999c06342db8f03d7cac966ba5438442e442bf331c9d31327d458802a2624097a01850f4ea051ce52a4a5bb326372330535abb83a501d854563410045d04b948d1eb196961d1c9701de4850cd8dbb4cd78691b20b81bb06df4a7a833aeee9947ec5af4be80ddef4c3a528ec6c030e05d47985699aae88185610a40331c66576afd5532962a6f115e5bff46d0cfaed73cf9deb36241e9460a65037345a81e293831abc887c41066e49245643bd38e9f30a467d98915d78f0271f1d264c206f3d573a5bad46ed1e3040bef545c6b8e69b30ee8cd41379b309d8d34aa68509853eb91ac27f595cd3317a54ed2871e69dc4f786942b3254e652aa724cc58e2e17028f4964cdf0e9c1fe2b8792fae59d2287c87e041bd207d2a159e5dfa66cb931fb67c96fe372767d0b57b4489f7667f291e299ed1ca5053e00d6075393db02e1732add4cf7e1fc3fdd1e3686caf56c59dd36cbe04c44122e9cceec3cf95dc09dc8e10e80dcbb0d9d691eccaaa6ebcdd84ec6a8dd148c87ca9ddbfef9d76929ac78a9511b72bf83db2160c419f5a30bb111df9e25a3a561593a013791ac7a2ff4bf873f28ea4349a55271e0da556b8e959d2b3e4899356d70fb794a20fe90bbdced2b35f534dee2fb6d0eedbc786b1a2f647815ac00c34b71475780dfe31715a43e9e36983617313096c25a7e4d42ded24034e07ae4cf4e8575c1318e51c28d0042ed6e20362c5fe15749e3ef6f52c4962effc55955e2e0c4f745f15d82ac918cff0ad5c53313d9bd4318e7a88e5e7208addcca3ad2eae355a1435c9ec547db1d9d9f34eba1d17da195d86540de166d4a0bad55a8db2b0a69ae865eeb1f8218c71dc0cb9d2331cae3db79a9f6f7e5e1a44eed5b57ccc139e6dacb2a5d963115b7f582c16b3c856f1ca89856751cacc8baafee4ef509fdfdcfbb01bb7af00a262ee79765e5f2bf99f5b74a0dd38dd01ca9ca84b23f0e85a3d6647e056a772190dbc22cc386906a5dae01aee560b9d5be03a4b9ced6947e9ae7303457830332d8ca401c80f194d6ba474459a78388b9750a1645804db7fffb2d6314c42cdded5abf05e747bff4674c30a17e92aa77976ba7f5c894a69a98e36f47e4dec24b47a8de8462efe288546b6c29e4c7bd6a4ac7e46f657bd47e4b596598fc29191aa0defcd7575b0346ad25ef0d108e32bdd12f61158c943a923051df83e4189b771f0439958f5366299890f10c8acb3583ce4e69bae24448f4be871115d0dbab4bbc3d9a07175e477d39cc785524339caa16bedd09bd9acd0fec643328d7026a3ec90547904a5cd83e87f2aad0baebecd9e8cf2642307691bf305d36c90b7cbb1320e9162922209aebd0562df28f2f6b48ab31bcf8e2dc75d322b038161bb070a05e9082e142c47206fd17ab9496f464f9e046dcbb6e7f146443bd229f2c0675b84e02eadbc489c94e78bdc649059dadd6061d2c582e5c1601bca5f4a8911d41af9dad5276a1da36d83f75d247ba11ddb4207db8c3915d311558b96a1a841d3e778f50b010da34c46d954138c629d8a5c53b435d99ab5a650c64502af44f3139b6648c441bf439704e70c8bdac203a5644724983d845e6d1857c89c41b31c87b2644f024603252408670e56ff708deeeffcf3d89eb23a06a8d8c8bdc0d378539bb4b82d6ad1b1a28788951bbede2ce62f38778ebce9d6572dba84d45c089a507d23f43e6f3a2f8d2f7c8c0b6c71f48f9da6937eebed2f88cd77c0fd50b148ac00ecebb20f034addd4249bf6dbd7748284634aa6156561c85a3f0e3f3a5cd19e8e59b0884bbe8e0f2511424024d2c621114b176f31b491e9809bff5f84c858387747f0935cbcbb1cd5c1a22ab0622455d5dc693a8eb0d586459cc142f0c8d549c5c6e1390b7d3bfd47ee2d7bd5569525786a86080381f11cf6f07b18f9a7aef1e252eb9722a34f532e7a8227a10b98bb936c4f2550c26b8bf7b02517671632bd45a88d952aefce71c2128daeeeb239edce3fdd15d2dd26b1a055714717f19d4faf976d0469071d9d2299d0e2c341d4604d4eb5eb4f463aa6db04b4801afde8ce0e2cd32519f29a6c6c6fa258db64c657393af46b53c69a321bceb4345b7db1d9338c939fd24c06e964a54c72ac33a7ef2683b6c794c67772eff97293b961b4f2d6d025481ebceb7aec8e3861a8f2a2dd1a75996f244723b7853023747fe86c1b4ea1efefdcb5110a56b385353edf0238032aae42e8aad1143a3e1be789f8ff05bb642de755c5500cceeac15838340dca665a22593bc8f2c68ab2ccb0b4411a03143ab23f7f5008cd9010ecefa4cf466c18d4f2151eeda79d9c80acd3526f42a94c81be0ee869f6908b01efbe8e57c8d64801d2359cea7a5c5d3768e9985128f8fa65c7c3704293dc5ec7f2a9183604675090958bc0df958168f632102bcba10367385f812493bd4fee5054d14b7893e19912b942e25bfb736d77980395bb8461c0de191c6468e72e3950cfe6fef0c2c663d54cc000e96c4e065c99b8293a47e0a6961994b1642e676815aa9e8d893e19ba1bf5244dc36c4548b3e23d20838e631ef920ffd7bf59dc1709e2a1d17adfcf2d397b04ecd56bae13dda06bd9f06fb61599590ecd18539eca382ac68d8582b70fa4d429b4892265a1b1a6f306624229667af076b7e242f92703f76bd0b5171ad8b8f97210262f2ef4837cc242fd12a77809158b0912b70fc732498ed966a0a32d09714e019298cf2b1e71354d93614be8a591a76c9c26baac439c8b83b88001850e2c0874184a131471177c8e798decd8c2112137bb93edaddbc0543ce837767e7e3b201e14e5fe603a97a3ab9f2c2aa986334cabf957b1a1dc7274dc7692fb0ec99c356d0a56b76ea11a1a4a82ae1923d8e956daa9190f4b2197cf32f4729baf2bf144f3e4e1fc749792afe6dac7d5c6d165b8b027b8bb59f249b6029d953360b52926b68c857ad2b85c6deda9447d7ecb38d167986451094e0a8630e67d358e9302b0aff40c931dc22fb2c9f06d4c802e884fd188e7373d454af46d14e88cbebe7be34584de8cd101eeba00b8d722d5368b46f17174858e97c1d590af313e34ce677fa1a1aee4c36ebff10c79b141c76f20a1f28677db5c3e6f07dea625bd967462e675ad7df67244e294ea0476a5f1398d6c5492b272410308923589d369d1ded4b1e2c134ff7d57671fac7a2de1d594b341d54b420be4a767a8fb6ff1d5a80a7b1b43d78823fce75d9899d9eaa6da89b15e973bcf58fccadc56093b675ef9d8e9926d664bb64a7e3a210233b482985c3004645e7d4ea30a084a8111260bb70d362ca460864c7bd3055e43e0ff2277ba218ec09401593c83df535c7544508cffa392368286cf48cce6d295c482219f6c0272f174b10a368c1cc6c99d1800aafb529eb5bce29a2953d0257174cda87d4507929f1059c702344b91d9e88c9ddaafb4744ebd7898a225d240d38b12f485df026e6e27d0649213555210f4059d173c7a9ee76f310808bc11d91cc469d2c488bdf900974e8c7b69b781758c665614811f8f452cd3f51f0573992222f514a1a1afd38bcf78ab52d1f6ab138c30e0b7b58db3319df476d033745805c2a06c37b0601a03fdaab3bb026109c98db8ff43d2a3baebc0e3ace47622701e3c0e8f2958c02acf2c7c6be3c03d538238c73a671ffd9aa686cd0e7b076d3799877c97ebf140d6091c55a3363e6616dde35a34be6c6b4cc89989de1ed87f2a58936defc85b00b114d5d77761338d1884137322d3dfe79a98fb3e33faf304547a1d1180c26bd6d2b12d88b45687cd155deeb7d8bda9185d309450317754108807f838e51eded7a05e917bd8d18518952c930b1fb4e17e1beadaf416e95bd21a9ec3bea9514dd32293427f7a25da5439f693e043fea7f75c559bce5a5bf3f6491f45820c0c09a1eebf55f882ce46a4aea16ca77fc1e446fe04b24b9ea3f08d62fa65e9ecced2adeb26b633537d1df8bd998bd9f3908f29e8c2f1ef0d3689c976a401929c7319d8791e51c2d416fcae94b72892c913fa5651c65cc27b405f64cc588348a4390566fea042782c58534a24b8ff7fc48903207b5204b22515e5c3ad1ed3c29249788d36251331415802dca7de9a6455263904fbe2b842ad598e8a76d0df4e6bd2a7a0d6c8f8e2525996f27c2f3e91e2b581c0e0097eed2a7ef54fcaa360dabea9dcbde6a86aaa70ea0ef7aa8b7809aeeb2500d9511981157b861f6eb8736edcc7b9a9abb77d802692432fd462850ff4fc00f6c92dec68a58fcb9be3408c4bac422696231fa007457e63be6ea9719c0228a445ff842a969cb762bd3092feec47b2c05c56fb491b72cae1b46a9d2a796f6931563872d559de1662b006aa46ff85d448545159c5f7e76c35631059a2ccbcad1ec603f56d51f603337ed00d9408a626ee6d7b5c24e1955791a7ac8b66d59e5b2c8e2ba62559ba070ae3b3b4986f05aa7d569f485b1a08facb24b5345676cc9ca8cfd0a7fdd165680c9d41c3d0393a8ec6d130f4b14ff4635f4ebfb9ebce301d47e768181a43c3d0183a068da1f7852d870a07dc3144fe56c4b9fb340c8d8ea3f368383a43c7114d65a29b22ce839a9b49cb53e63bdc96079584b9e80328dcd4dbe74dfd1e16bd685a19807d63ad40d28d5c636bce0ca6dd9580252843815d76e7d5b08a9ce064d95e8355972d37c064835ab3d024479f2104908cf1e62e82c77135c288e7e9386f5a7e8f8ff07524c1b2c676589d884932c9afe5ec72aa85f715b707bd847f17f8015ce01b7400d6450104fa72580ae49535e1107f25a5ccb4bcc4c42c0ae3ef40e14f4575de5c81fdfb8e3916fe47901e147eea2681be5aaf0f3dbc14e38d04c06087f864561670d01de016dff420b9cd94621d97a54f1824aadf36136e99fe9852b84aae881800db92953752452637185ae7062be8bbb9d491de1ba611fe9da50e0907ccf204d1ae08c863507b0128535150be815fc6d1207e49043ec42f1cc9c130d84cae32da5b70b909068f9035af12179eaf3a8d6f99e526e0d3d0c94664c258a0da938c984ce066ff96d7be50990cb2c0be13846da710935a32a573414d6d1fe65ec0852a882918f089fb302d0664af99782ba07131b404638f7957a3d36698f3a990a9945c56ecad18c1f499bef2fd1649aaae5737df5b1dfdf587b3f91e12f9bb9d32dd7947f477774a70ff66164a9186cf24b6d9e2b9dcac4b258c4426f22d900764951abd5f75bdc19568be694a46545a7127e0f0418ea96568f79f43982340811a0756014b7fe5f625078ecec07d2112dd7372babdd47418c72fb38fb31e545d394bf2e2f6cb16023105fc7bcd3a7f5bc21e1a7646867e394b455d6d7638d26b84c00b16d12649edf23ad6b3c8500835504a5ae22bedf85441173f42d761b1819de25adcf1624e5fb3fd2438e0450fa18c602b7dda8a9d08b58a8d9cc573c412280fad7d67cd63497fba425677b4b282d3ebf4bdb4342a794edb2b9bd737fad05777117950aea7f46451cdefe8ec4b36ee4132249033512098aa9a4601d622c284a18d2856ff4cb8170dbc4557f7cefa6aee4dc65da9ed9418bb8c573f5d60c4122bb3210e7c7a94547c2df00b0bff9593e6ed7f8420269c7a18c8bd35a414fbdb5b8669678abd7127bb6693b3c0ad1ef2d92e944948273975aa29c4a9cde3e5bbd2f0e0caf5c5f1422ebf030f78b0c0db3b5e2a845525ebd2b56a5c4f17e1bb41e10bfa702408cea46a78884d90dda00e988705bfb16608e74d64d084949471286c440be3750b0a41e5d39fa0b9883643ba2ca6af1e83954e28519850a9181a58468116c8a3ef573af40d1738c26796c4b4d3aafefae6af338eda3ebfa072042b3f29b8bcb8598212cac528fea0379d63d289afe712ea4e865160e962a3197dff53a49c69f99c350c1a1a01d58e0c4e197f23a7613aaaaac712f2793ed51bb6a5a9fd94dd5062f0c7d723c00376115650aae63fa888416d779af511f4f5202d20554d90697a803abfe79fd65ddf4a3ee45a2abccf3a962d5970ac6b45970a6fa992d2aa7bb5a64549f33b53a2dd0d5255ffbcc67b7f74026aff1d2b7ea11961c7ffa636cfb225deadb00ff3c3f89547c036956d4187c9ebe16588902da93b58896cc99e58518af6e736c30b5a7843494b0a6c6ee5cad88399613a6b371c5466d0ee6dce1c55028bceab01b9a3530e2e6f3828e9b6834a13804985c2991fc827c826a5af6566753d377af31ba493fdd4c7d0689ebfcd6f91a1019f51da23ec5baa7e9531127b4837d2a39917261300ce2124fbafb7430e0e04e9b28c1907eb87f35490c141ceeba8ff855dc9edd5c44c5b1097ddefcbb018447d460411f9b876cdcdd86f173acc4e99c1e9b1036ab700756dcc2eef52846a341de08e0d053759914caa7700d7507af9e6f2f9de007dbe5daddeb7a3348fe275bf90ac6d79b4049c3ff78b47df95978be6676553b7a2d4c5b56cd4cafcc10f3ac1d749ecdc1981f4f9f0e31cd81798b60832c80b5561e35e1e229c2f8795a854f801bb1fa1417f4a061fb4fc88c3d1873e6ab66fdb0beeb27893024cd265b9a031733a158c4ba1a94a8103c4024d555c2f634dd649ce2f18cc1724afb59a5dcc58f89a78c627224b66e8bcddf5ef0199068d8b015e482af0f6b25e0a5c1a7cb13afe6767eaa3c8a259c656da7429633b8a271311c8f5152450dcbbe5ebc2c94ebfe1de626574fbe3f23efd3c3a58f39c713311abbb3931e4b3982ddb3505091fec9bfb22e402a1dd9c661fb71494bad8c068f693720c9914bc79296c5f54b3fe0fd3bc005abd4c7460430107c9e28b9309a4fcfb36f20078dcfd52175f7ddedb169692207cb70add1eea7e172dd2e89c0c0711cf0aa826febce97969c701694f1aa3d84e93cf371ce4d69514bf9637e4d8f3d4582a19bb4340b94483404d46269414d7a1821c0242743b084d77c919ea5e509c29ba3b59bfcd27b3686fe719ef4dbbe2265ec2b8180b5212e8645fee72d14d2b63d210ef9fa90101e8f24cb9a4cbd804a31caf05d5b61feab943ea6ddd1f5ceb4e7bbb7a452525c438b1804209a8f115bb8bcd6bc7f249b10d218c4112f9f687510d5c0aca4011bd31a9c16397759a7c4b09e87b92f90f8652f59ea7d4b2a7db80faeeec02cd5ec8c26c256135f139574958a946e5a43ff9fbaa5d26e806d8056fb61aeba07678ba24f46c10c1e203bcca1b40130d546d8f960bfae6da7789a397b54309a0911c9572d1a84e3aea07a2cc715afc1fce602616708fb4addd7bd3032e92380ac389ec96da307982b19c635b0410d615e2e119d12b0f176f5148033bf108dad6f37d417840ffc4939113647f310f765677fd1cd16ac1a9ef5e315e9e477b60f3267834ed3f9c03d6c34aaa17bee60fc72153a1d486037f6130fdfb423fcdcdcfc97209979b455cf736ec0542346719628b85bc94ab8bd1eb5a563607aa2cbd6e08e5febdfb8a2e1ea485affb64a4613dae76c4a2de152c8d9924e48d0c8a68ca51a0f101e7d1c8144c0eb6eedfc7e0aa2239a381f68addf10b4dac3db0d21f3c9860ce7890b5608e38c0c86d16e5995cdd636d5f8b49b9c74a4da203a515a8aae3a06946b8427b89c37713a5c40fc8c1d11653114445fe00b9db86331d638309f57a87de176ee68a8a19cab5cde82ee4591f5d0fb306b7cc8a0483817eb4e265f61f8083e0c51edbf92301ca01c8e5bc9e5258c107037d2a3bf925d131362e40aec6a6d392a1c23272636fd5861a7162747bfec9cce98db1fc2788058a57e3d79137744dc26f0b4f38ef3e303f3756900f0e775870d8dafbb00a8cb7688868a1b6c12810bc015bc414ec4a9897f80c1bd7e3e745f5cfbb08d0870c339844f864b3420590116b41401d41af4a4aa4fc00f49135a7ee1077318078060bdb410cc574627e33f9886d933f827de39ae6cbf0e9eda5dd2b19025c74839bae603b013a46f9ba76d88a2a50d4808f319e8c5f846dab23d4545fe7eea8f6e5a5d50b86d746e558fa8bce5ea46cca577103a185b2bc8d50a26880e170ee068f5c6f80ed66a370ed86612e17a9eb521846178632f69cd4d5ca6ef359267e8a0bacc139a6f49b304a1c18548262dc808f1990ef42a55cb2bce48523776c89e978a0fb080ff8fc8ba6aee116b689efa440d9683e77ec6adde6329ba7591474a2be6a06f57888eadff38e24ac51e0c9ab1ee5a1ad69948b5dc3dcba3b60bbc5364cceda056e31a78d1f41cfd38f2784b546c875e3a2ca91f923f91e88071961de015a3ef3a0e2bfca5386815ae256ac7c6642562dc3fb53a3394738eb27bbb111492f15912494250d4c3bc262dcf6a26a739f749189bff573505ddb567f95ea7cf32394ac70de60c70d4651a7df948c8a908b2fee9cc2d13e7acdb68fd4360ded3d2983d52e6adc933fae12805068d8fb8490046b75fc1ff4f2b734681f00a1ad78e20103d7a1e30186ccc147925ff24f7d5886afcbdda35083295b5281abed235437b882ec6770f629863b5d9c5d7f1d5eec94e7ab5a06ad4f2469769f1d833618521448ef91bce68771d18da8f23e76a87a959b10ea24a37ca0c2dcbdae193ba81e80c9040f44714908dbc10c86f49640b7f9a8c4ee83999fa35d6083c2109d23077d72271250692d616e804f15e5f5ddf80b99bb9f6eb9bebbd13706d75113f9ceb7ee16b033520737261442db9d088809854d9b407181ce212b31a116e0f7f5b3407fa47d4116273b24bbe8890201f15df2b61a73406e52ea54843b713034a9d058f68cbc7a922c8c1246da7e0960ddb48b4a888cb00788b400c48f58038a178859bcd92e1367897fc62cd871a9290f7097943626afa569374e81eb8948a88805f3e5be26e6e9fd8a696f23c48f831a25db9e65b5582d3656913f70a7ba1604dad207e3153152ff006421bf0622c9d32ef9322754de4b721329817176fd0eb6271a06356c6214e9a4fbbd263b48ed2e7b340b9b45793362d972bed76af4c6bdb6f073ac135c71941ebabff1bd07a9795424920762349c90dd9e3a4477a39aa67f4dfa5260251785015cf0fffcff7debad621939696019bb9da56bdd1323ab014e2fd6c7b7d75f8d1c986d51bcaff12ca1c93cb0097d398c873c775c604048dd6368679552ba5f515eba409686f4faa9dbb9048d2e248592662911c2de03d83315dbdb4e2739600dae1a6cda6df06f8870e10b1ca43325b1137fa6807e9bc93d4c15c02b063eddcab7c9abbc6eda813a85450c2f84ab7ae4675e3274742356329e7aa5d65527a68384590c344ef2da7b8efcc14222047968b990b476d4c7d38db6b6782e5d0fb3e8039c307f13bcd8a85cea60620c176a093651be84899342567342cc85eff46bf7ae057ebcf8a1daebfb22e54458c1dc87146003509cd984d5bb9bbc17c7f98187aab2c9ce440afe75a02302b7f8ebe137ae3159aea16ed257fde0cb2159edbc3c089822f799c36a08d09d4b754b46611ee417f64f5bf119df2a49eb5ca930a1ab5578412624eef9d033a1bd02c89b5f348828333d461d71c223eb10a7c5cc3800aead5f64b3e42600dfc61e3f16e2394218eaebef185b5fa02c1fd883e6ebdb74f977cf6bc7866d9c4e580288e99ad017242c50b40e17827b40d0480d1e9b632beccac70c12a2c1d8ea14927b6e165bad2c781ece0225a633a3a90be4e9eb2412f7e03c7da30bf59d8e5f2dfa651faf99fe932e660c3c72b382405a5aca182ef18635703a9d1498267593c6dcb799727ce98495ac742bfbdb17b18d8a34895b9b52147290763607694f6a79cf1cf928b070049bc0a1fabad6789d6422e910e2e0371d2de71829124d244261ef6e36b87c06df12e92554361771fd561e907404ecbd2a6319ba109c962a9d3bf10382b8252b90bf470e6d4ab28848773d216509ddff392d8f159251b87fdab0c2d30c9f47ffe620a0b5772ee0d5c67197fe81cf528c78c73d28e427485eb35aeb14e62ab0322242d17c9a073db2f2082592dd534611b29eb05214e91e0d823c73daf6262956e68a9267a7f13a9e496797c25bd36faa36bae547ed5050642a6a746f872b74e3c207a4698cc7a223b83c479677288350e3c0a418aaeafeee273b78dcbfcb7fc2936feb1bb537793aae192400f16dacb6c7029dc3a352eec26a5a3d88ba23b912f596521ea4941abfff836d489f7b3215edbe2d73a9d12b87f2d063d21e7414849eb9aecb29fd989fa4cf49c8d98f8c35e92729ee5e45719d41866a00c2dcc4593909e82503d5cbd8fdec71e7c27f2df4713bd8da7999f850a07c45253f07d7c0e2527913f51769dd74cba5c09c5a9f2b9235c227e4b80040d1eaa3fb383824a7371b1a5f7d38b850f2427571fe0254b818528e62951793db9bab62f8965c83897e5230cec8e08ea4c19b5275ff74c28d2e15c452f03504babd98c3f8cef0706f65f40276d41e9cf013b7bb7e5b6c0f6fb8f532db7bb6774085dbd15f90a99bb771218f82001195950fcd21c4ac14dfe924c7c86904ab065beecce1ab98ca7c92265d1bb56f00eb1e2b5b39e81b0913ac02d1a10c6e5021d8f29d62a436e68d10c5aaf7ba95c00ee8c75bf1ed77c122e811b9320554d78b5352172a66cff3098fe38e4f539023989ec2e6db92c0de63a161248c93a4bea2eb1ab1525374a371aac7bd130d4f09bf175e976f277e0422e4e7181497f5847de2354cccefc8800e7893d30478242558e5d98703d5b696a8baccd2ac7089e6762ff54036c176adff9921c1401c5433d6da737cd697bd6079df515bd70f5d1de078acd8025e796be2bb6bbbc1e59539eb346c8516144fa991f484124dc09664531e62db1dcf7df9170b31a4b0804c33a4d706908c8081570420294cfde36fb47f00927d856a4ad541a6b16ef82a81cd2198f4ebf950d689a1944e96e1a54a38b26c9ea64c4eb5574abe4e22f3b6a7ba5297912051810edff6d8663b74a6c6e2be0004032d73af3515d0e932e24f5dc221740b4dec9d1d5397229217c9a961b79a52e888b933cc699ae1285048c8c3df1618544875f02e698c0f431da9963cb83ec1ee2484b7f7c323d9bb4956a4e28494bb9cbadba6386bc6216bc95620cfe8e64138349f1289c4da59f85189ee3539e2015b333b2b9126301965d36dc1f864b3a6da9b3becfd5dd46e4f6b31c5c83bb808b6db730f14d735ff863ce5525589e4b47047dd258f437c83e9cb4eb42d76d9aff719d4e1b6ea762098b0ccee172645da394a76271cfd84b8738c625042048730db14fd0b988fceea179d04913223e63a410bda63f1394ded1218c30bc8fd8698d11594700034e5f6cb7aacd6669dca9d83374e6f964af4c8b4e61c3bad9c2512ae7ea58433ad37801b599d0ea648a6150174ec2801da8e64e2d25f5df626df000ce02c7aaeb3f4376ced34722e97e1c2785ed499112f3f7ccb2617973da34ef4e1cd18603864cdb15a51994450e34526ad8d6617b331712f697391e8fb1f6d2a2d822f143bf757b2442964f8a4b6ece9aaa7ce43de982d9722691b30d5e300153285f9ff2195fe6956805a99283267651cc63b8509000c55470af0a8db80f7f05448de72fd4c54b02199739e66d4083ee2bf56f25c88f458e3df3c3d644ac4161a13e7e6a7ebb539cbc898f0e8a1ac496e770287c5da6d37cdd893a250af3e84dfe428154336c67d1c7c6acc45d740c97a3597c2119adb1a04bc3d7355c8cd61404dc4f2a2c9b8fdde2a404e19f4cd874d2bf23fdd5983038fc0a027a15448e5ab83f8659324bca8c63c8d2002c8aa245c69012ae3b42c53a0d2913a00bcb6309c25d05992477f18f250c4a796c2eb69b2814eaba0c7a9f7026304f05a30becc7474b6b376d4b322b2b7b1baa3fd60f76fe6d300b125b2f708d002bc02df463eb761dbac11ca96644ab201b8029602ba020b4321178d36d2b62debb6ab647bc16925df981a3d83ca4499f0aa3251263295710a5893d564a44822851a924835d30da6996936fb76777777d8a1508c22d188b4b066eaffffffff50148946231269737777776729a594522ab0aff324e6648570cd94430fd41eede155edd19e1167d229b190aa0db4c332ecfe912b40ab954a85ac549bb2a03c436c8f0e692250892891655522224eaa547974c812e122d06b7a04ea113dc2ab7a448f8c38a74915482e11b84696e11ae12310899a66323f4d43fff48ffbe034a7d1fa5d2e3384dd2129e56a8fb350610211b961ae00e930eb018815201d663face81fa7f50806173c8992177ca0faa88f8ffab88c8c8abed80f625f24dd4229964495905ef0d1254c4aca44992cab321171d2610d649a2d89ba44972cd1253f3fa659af4c37b869e6a69969366b1afac755fdd33fdf524a29a514815eb2c588b4955c804a5e2a2d6b49c4b9320d3463eeeeee0e210dd2382f955a70be4241f195c9e45d9fbad369594f0f6b5006638032994c068180b5ff86b5100402d6600dd66a1f7f9328a6aef33fa5c8142997558a38fd9d81fa87d997ff5d3e0aa5a2e22b2c2b2c2ccbcac234da07572994a656a71633fba03c1de12ca516235a5a3ce4f212615e6060961586613ce79cec03d39a6934cc4ce3509fbeff3e4ad0b1c4a2b7148bafb08c18d1e2f2e2f2f2b2ac2f3a03398cbfc0a452eea9541e23132323b3ac322e57cdeeba6a1284e00a8652354b56363fe332a5163324489828b900ad4cac56cbba1271beebadeeeecce7a52c5fb16868bc6bb5dc73792ed7b2ba4ef1bf8fdf77777777ffffffbfbbbbbbb388feed22e133244a943061c257ac158bb5acac180188c65934ad96e7b9ebe57abd96f515638cb1269eb86136eb4ed4f8abc6c6e6c4094701000a0000585600449cfeff7ffc980ac19544a54ef1010840000f40800106700258290848918257536c01524a29a5943206b46203e98662c9858a4624f83eafcf359e6a5a5951a958ac13270a98b1ebe26c67b039e72cb97789e33c64ea4c5db7acdd0c36679c73c2e69c33c67e77efefeeeeeeffffff8f0c351443312e6b8ca2d168674bf21169dbbcc495386e59b939a72fc30eb1b2cf25ddddddfdffffff32994c269391b692732514ce64ea4efef27f593f45fe4f9e324a196a28250f31c86432d977777777a398baee744a49917f4a91f21f8552598132994c8821feffff3fc618638c29f21f8552515961812c2cbccac222bbbbdddddd5d4a29a59411059e30ac58550e9fd5c1dc8407e3f4803d7af06a8f1e238ee74d89450e2e826b4cd3850ca10c4d64faff93b746779dc6285490bae7f948e187c9890a4074429d3a9755a788932a164bb569c985a70279aa4dbdf55415e30f2033c80a30a83085c1140624c80a309c1ca8399a93a339416038393a3b50777467477760393a3b31215085a8105e55212a64c449699ac998e22c0ff7402804112532e2606d057b155a45d1b28e96198642cb1a42126a21b691244aa02a5125bcaa4a54c9889beaeeeeeeb4499ba218642d93c5206b59bfecffffffdddddddd1772c35047d1c837dfdc97d5494cdb2d6e5ba8e1b6c52093c964b218644b64dfffffff1f45a31189b46d5e226deea512c7a19858e633777777efeeeeeecd4b258e43413175b0eb78b5ebfeffff5f4a29a5942291c9b4b2a252bd0ab086097f82c015a00c30d804072a8ee2f0aae228ce8803526221a7e34c233d5008582bb17016ee8417f26af782145662b1294ec94528678765adce8ec6a0c634b6ac1a13715205dab463d8b07b595bc4f9e7ecc484b0c003954779789407b42384059e9e215087e890213a444a213c3d438814815a448b14d122526e8f760f5b848dc02348a0225124481489ba4a0e3536d0c686576d6cbeeffbbeef8b31c61863eceeeeeed3e9743a9d4ea70b56f5429681063ac306da0303c280c1ab30608c388d61f042555555753661f089e1c8d02486b3b3638cba0c02e93649c9baee3a57b574d4a00da4cbd0e592363629950729d546433f803f208490aa016bd458d61a22aeebbc96ba5caa4d5d2e1b1bd5a636dd1f845043041c46b0016dd8e0551b36461c948520829422ac8d25614b58136ec01b3778f5c60d1b259870e3041c10070e5ec5810354c2cf9e80030788c20dbcb9e1d59b1b79020a373974ec803b76f0ea8e1dab558eddb13cb6c7fa80298c38a6a9f6d814f6c7aab0407855a7ce11c713a4b2eb260c2bf86c0eeb40d5511d5e551dd519711c45a30d76ff38b327bbc331b833095296e7894624879ea7a3183fee93ad6d0e1bd398e7cd6073cec962c1e69c739ebc3ba5a43cea51a86545c1e69c33767777f7ffffff8ffef575b65d37e744710ec564ea4e29a79494654d7177f77e7777778f31c618637777777fdff77ddf77e2504cdde9949222e5a3200ac5ab28d4e4b95ac1e69c73c2260f734e7777778f31c618e3ffffff4b29a59452be0a6a45856565c48816178749c1a452cb9a7a8149a5760661220c4ca8210ccc9c1336258df6edeeeeeefd2c235a5a5c5c5e5e60523095e2d554cae505a6e7c718638cb1bbbbbba594524af97ddff77ddfbfc0a4522a554c8ccc0c9c99e1d599197777770f7ddff77ddff71f08bb357645d81d61d7c6421246dc8650c3b5b44f9cec8c63383cffffffffbb5f97a10c4d4052a5a107e9326cb5f4f5ba7182e298cb9200851b0972c01c3996358788e5ad966ad3d6eba5daf415238e9b1c3a76f0803c78f02a0f1e230ed66e74ece0d1c307f4e183577df8d0b13cb6c7fad8147ec01f3f78f5c70fa7f1f09182911e08040201c2ab4080807cfc506106811a448304d120ba5aad8093a3b313d35877288a46cb4a52a64929a5cb722bad5628cbccac9af2b2eb58baeeff25c562b9e795d8d5b29846679ea734ebedaec6664f9ce48043ed871c70086000025214a002aa50c1ab2a548c38dd362f7128cb6a7abd624cb12ad6803d0022004a00269000af2690c0888b40ae640965eb827419769dcb256d6c16287128a60edad8b85869e0c43af000022a1708200410f02a04108cb815061a702d495010a0da04a021404e2688408df4c4feffffbf971b6e0c67c618638c317edff7e9b71f7f1dc361ad7f93557bd3d0a892d423486b6a1c050a0a2a500b78880b703078015fbc58d617a2d5caa3a1516d4a434313f372c91a1568d31a478142b5290a14315a80c18b0c34801b8c38a6619081061bc0880163c4e0d51831a4cc603758181b6339900165c8e05519323688c1818c0e66c019337875c60c21821022082963c8e860860734200d1abc4a8386ecc0031a1f80004358ad78aa76dd8d5d1c8bc24d0e1d50870e5ed5a163c42d3333333377ddff4e29a564b9e7ed6844da4ad08b71f6c489cea49452f7f5226d5ee250200acab2a2bc5e7243e183a2f549489168d41654a42e6812a8493409af6a124d32e274455f4b5e5b4dcd891311b47c5affff1f9f27168bc562dd29c54face789c562b1952ff6f7ffffffc718c17a3e9ec66231d612967ba9105ca5e24b7a4aa985fc47a9aca8acac2ceb4a777777cf39e79ca8538c632a8e5259596161f1112d235a5a96b5e583ab144a53ab534b55519eba784ba985cbcb0b4c4a9552a99655f5afb03967ffffffff4b29a5941266448b8bce608cab6264646648942051a2c4b2969873c2e6bc6126e3ab87befba7bbbbbbffffffff743a9d4ea7932a664686c44c0912264cac58def25a9eb7ac1e4dcbf3b6b7155bad50c356ab5736c0e6f7f77ddff77d254cac562c160d4dcb839ec7ab9ec7a269799ecbf5aa813535bc5a53139a4da6d93923a287a8b9bbbb7b8c31c618bbbbbbfbffffffa594524a793a9d4ea7d3a99fa6e5792ed7eb159559a854b1bbd98860060000e31a000400c23010868120ca3ddd0014001522252b1b3f1e0e934dc4b1502448c7520c06428801ca18640002c02845cc507200738ea1565b7ab19d2ec2b8208c808aec288f5be93205a2b46528f8c5c8fddfa4894a2b1c740dfd10dd66b5a25f87b2e85e0546a87b4f9f102f3e2faa186a693b1dcaf820448389acd14a2b73ec4d153040a877db9d8e0c2e66fa9892241fc218002838047ee413d1c7e4c9d1f4c7da1300cee012ce2706251c6417493be1199956360c6c0ee1e4a3297566a6c436c205ccfa982c20a4a76b0e2d29d396b2852dbdd9bd9a9fe96fd6cfa4b06b8186c23717d2669cac39a397e01564207894838532848e26c43a361a27014e5053b63733d2d6eaa0d525d7fae4b65c02ad386d4f94c48d0ce8b2de58781c43db2c967a5abbe2ba87cc1d7e855b8547680e4f5bc37866df75c7fc0e6189f9b6e6b3fc76741510ec8bf0807839026b9a5f7f5d06d0c05dfc4d672252cf56997c9ba6da811d580af465154be1d217d5548dd209883709a53c942632542d0f912c6b1b35880040fcd63f1ccc0ab8dea12a134ff794274aa889c8a4c77d010eaa49462649338369e3de5fb5760fac0165309464e2501b90288eba3925d1788324bd394f615182df00ede1e50e9174211103485a394cf1a38699b58e22f2fafbfab2db4a55618b3561891d5ee2fd9d77ce7d217a3ef12e3905f3098210fb9e5f922840917b084e80a01b660e502923a66a6d78e27107f6915217730e1c4123a6255b905a175aeb5e80d5d3658477ba8c96ad3c27e042bafbaebbd3ad8b4040172d5c7473a1765d481e8bd36de4debc20a821feb3a45c02a11e86bbb9788be3ebd22320d0e1bfc2af5db511507496df02a76841d7bbdab191d001419591de5dec08c9f5dc5c245419599dfda97332763d1d6fef28bc5c2cf4f53f0a08c0ac13611c05821405117d25cfa85c2aae01934e5d550f02d7581334ba99e4a515352852b920ac5339a3e3eeebcd6fc90efeb5209e382308b1c366788211602a69695c266c5709e10e3fcbb6102756d6e2e882a7f033ec7aa80a6434f06228e886883712f5968b0a0c3800cd693909683ea31aa52d8b753c8d403eeba8b7d0efbd511f20aa5188f5885070515f10ea78f8790b64cc63ed7b228ce07c3785cb617988a7e57a86944eaff5a6fdcc2518af2994f4a34f543f96043700f710fac497fe0cd7b4d7611f4aac4f44cbf6899347489d02eea94823f819ea3cd5e84473cd5b2965f60c56025d34849f75b9db06cabcf9da4e9c6f8471e4fa471bef57f12cd0c2f69e1c72fa09c486d20be685b53c40300fd95dfa20945e859b8a245298bbf3b2d0bd39c7a7add694100314722a0c08297939026d9a0bf4d1808f9b9b08a0230277936c1409b9354a0243281349d61e537f84795e954f381b22876dccdea3b1110ae82480cf2057345d8c03af2b92fca024803444d32ead70a380705d39f1c569b41d5740a281689dd2714106d19383a9e29877763db3ddb92fe83e00ad9d53e78f0de347868258509c1e8303126d1537b17ca441758a0a690e0e62bb15c1068d3d6a44af34d9ef305dac023ae83ca5a13c9b335bcdd79221d00aaa116117f4bcb26c1887751b24806b0ec920d21ca1741f4c0920371808e6c7228b831c34d028e809d56625a76dce466e6395c38d0445073ed1c12f7a06542c34da5ea97f04aa1bad058c540b67ca4230895684c50a5bf78198d433847bd4d3f301ea99cbbd861cb16d54e537c8ae0bdb7f20c00dac77357793395a641aad04b2acd1dd5a1c89e4e607e71aab11b515510948117f504a32f49295208121212031e7010eca9183cbf17651f543ca97f97a09142fd27dece23f80477bccf9d6375aa6d718fe375b293b50e5604100f33c91f46e4077330377186af1e4756772a01432167dc00c842863b6083c804dbc4c129b16e560a3aab9537a4abc26e4a0554a96ab63554747c054f3e1092e1d03db922a6d4c88ea890d755a69c708f7ee2f5b583dc8f5b60e3f5cc1a3e60a930404c2c0a6e0f87b46dd497ca1bef97320feca86b0d24bc2c7250a40cd392cd6dad75415427d7732025d104ff31d67554e190a2b300c1644812a040f0d835b0d654c37fbe51d5cba09adcf8e5b96c4f12a58003bfc61907068bdcdcff1444dc2e1eaf126432f02c899cf4f13fe4acdb70d9d36fc1ee42bb90e109d6a9b751c40f0a0611d731bd23f77f559139bef8673dcaef41ff11469c1091dba05e9bfa537c74e64388f748e7b6e99dca1b38ad01c450e4526d4613f6b6227c2dddfd99049521ef5f67538172f3fb71575441a4cd935cb79094dd47f20fbeb166a961fecd6e845aa1b67b3c86ed1b5b4b114a4ae7cfd10957e1db075ac9eea56090816dd95f6497840dfe58b8f1bd96d589136aaeea4d4af3f34fdb354b7eca3b5a29261c2a2583bedf8e8871655f702dad4de6dce499020df4c0914ff416673e05ec143ef53c35d973b8e224b9040a317e457d510c03d0f42cf6ea397ae9817cbe058191b68c65466457624554465f603f5bd8d77a482fc82ed43302a111d56ec2b48ed39c1cacb7e820f401a0009e008f1dc61414005c4bb98776fcf55837f7dd87728154cd9c562c1c5a6c7b375d5e663ad36f3ee1178f72c3c8a20f0795561a355f93fe347d5be3763d710ae6e36025398fc22790a6a4076366a0068787ac067368f929076ed91cd9c9ab2d2b4c45f861b6badae22fb2310d9d72214a478981fe9434edffab95b3ed053db8d054d7507a5d908d843be06440fd403e794083ac553f6877979a49d0b31e1055241b6885f9014d22bb9e846bd0d6101def20d4e0b06f3726f44b1a6a751da160eaad1697666eec06c951168a41312b44ad1acf00668a8e1acb0b849a17717d4b18ee991aa824b1290ddb3668d87651ae8fb6b2c157aec0799bb7c1b4a8982666580dc2df89ea3a57e590d71082236d1cb13dedf07f30c172ff6ed39a25a97a43289359c80c3acdb0576051ec469a484032a2a9be175822056715c0ff6690666419d4510b8fb870aa6132c25d688ad5d736e238a85b8b3140ec835c956342936b22bd9fe436857df1591faa3fe5a8388ea962bac17540b248a82c537468d8f6d5aea7b6b962684c20a74d0e44c30df19869baa11eda59ed35c6aaf213ca95d3bff9bd8e390a15247b2bbf2ad696a3b78400aac0d4132d7580d6e38f079a56dbd3da3d14045c5e496d8cc9efc82faa7c98e23f7502f85f537044f54d5bbf40e1b8a114a024a9fceb3fcbb82a28ea1267f809e9fe3a2446695f4e9ed0f6f956fcb895727d9c725207f08667137f9967de4ae63d572c0bfebf63ffbf70fb3accf58d328e7d651a070f5320c5c014bb24c9925608e29cfd42da576efc0f8bb2b980cb81b9d5adec4baf0c358430e3fe66b6b70908739251278e971bf8aa6f05f4c24d44aff624481760aea1c8ad90cb3be68cf58f715db8ca5eee55c528a9341571b7016e90a1d1cab9ed41c25fa3dd5f5eec5cbff748e9457f73044b5e28f38d407b1874e3c0d281c9649e7802655bf8ec56abcfb0cfc0ff895fa60b7ee793a6b2ff6b36aa55a813eefa4143a2ff03d92cae3387024107554158852321ded28bed8bc8702cf8209c6a2d547c7486c0b1d7019f5500da7e90d37fb905a50cf53a13baee7db1fcf5b946f8ded77aa4de74dc7f948953cc73feb20a9a822450b558aac48b222d80d64483b7d4925262fb19dbaf8e11c6bc238119bd8a1199e44a140624569526c6dc719cdd958a165c7b569c57f3527292a48b7a7b99589d645ca2b7c104e8a27ab59217fde805cfb821fa8e38021645d8a048507e052200de61c54bf819ef54162e95e5e09eb41843a4c0376301137a8131287ee889a0929253d9e99c244f590354ed827d7a4590a9d083597abfa7957e2404e270ec25c192872f0387728b1cd00eec632938293b7171889333cc2d71cd732ee062a8c9320b0a423f45cd28a9bf71ccd9d5f1e4bf2b92a88fb8e4ac8ba2c045555903bf5f431e7ce6450260bcaeac50009432276408f88389d2c9ac9f1d52fbfce8ef4492060187aa4974c99718ac82c843142b52c829b978f6e866a74b3a9027ac420862d1fcd1b6783e3019ed6691c533fb415e299e0b90f0bed25ea9637c84a87cb90921630f342b48e42d7d47f8202257911873107d2a96b4118c7093613f9a82772c9e78d63450d616fb85581209ff4fbff9c1e2f10d693e39c3e5ee4193f3014c482c2f48c67e081448428173b94841dd6ccb17f7cbd9daad7a3cd68a0640b49e7e84df80a1584f924ba48a90a6c39455c6112133730ba10733fbbf9a259b47328ab5a8f0ed343d88f13b081fe1c817d3155d17b831632f63984f075ae89cfb18d194035f116b03bcaf0833930474ff82f740fa17830560321d3aeeed27ea4935248e62afa068c67019f5cdcd05a30b3d725a413a916fce62d40a701720847f8e8803159cc9cc845991a88978e73e96411c7dccbf0020900e5e928ee7fd351b45f1e8ceecc8f04879f6cfa21b67718105b0119ec124a02791aec894993739963015022975a3dd1536a005a78eb4ae2dda2236f0ff4511c824567bba33d3b0b03c362c0d798e1a909ded8a81155ea41368fe3c4501e875d05c202d8805f0ae5217060044ae4556d02908b4edaff6379af15398f88041893c1663f54ef929ba5dbc38351387f71a0a65d24bb6f0d231b4ed3007901f6245f783540a77c2580bd9979a64a8a0df03178a5158bc893574d1b71f0ee7258ccd9dc042ff7af39d6faa53ab4abe15c0c0250a79d1c495095663852d7efee037a0b6b1fed8dead6d2bc854a86be5cf9c37cad1a949786dcea3390111293e8c702b5766a74fd9c7eaee31fc8527911bf602e88b730d2ce75339b4d9639df5171c33de31168fcd1af4db4b1b791814ed433d3230339d33b1e7123fb955694fedd35bdc1e0ff50fdd4a6375e9e07c28a2e6979302b1e6fe2da5d31d6788d0d3a486a2d54d6ff8f3644609b8650d7ae7b639530a55a1ffb9049575fd8b5d3e74a1492fc925a64f7ac59991a91c1b56b34339533d45f94c821466f2314c1ef183127391263099f5cdb721dd3cd0cb5a0ec1aa6e7dee56925f84078ffb11e1361ff8ff5e9f459118b5f16f31c9162b3f6242ff75bdee4644a701c5e44973efeb6e8feb1770478092eed327681fd84add833b5f7a20860b9d948abc40bfe53d6e6b1ec72d3e3e8ba3aebb8002829531ffb9037d4534344b6c3aa9cb467e2a13bbd6162aae4f871bfccbb865841eec3edea291c4c6a48de5a1e1a78ef7e7e9146fad5168e6bb2af36f140937f8581c7a39ee9748ce87f638a5b73b149aa938cddd5d3a801db8dc8747b8e4643cc1d25bb92ed7b24f5f55d118fbfc7af51534efd9826bc372f6b2ce05d5c072664e37876bad72a7d0e79e6f883526b8a46a2ae0f9c6035290993f4acc7a18a505f4fd00bd29efb3e18425243ef3ac21a869062840c2a52c393ee4c56041682709cd741f4a78d73bebec7deee6fe57d2bdc8e0cefc6b0ce564678fefed2b26810682ff953431ddceed45db62a9e830c853a4a89b25a6a3f7f936490abbddf41e87b5ab4ecb2752fa77fbe1004ea90d8732083864e27be422dc6a4bc8ea96a64201325652ec369ac67a0b22cb10e4c78f2ddd61a81acbdf4117fe184ae1a4b2caee7e90f76a0d60741715fd033ba118e2e9b35878493a04e280eb079efd70f7b2ae7bd0befed80f44ff9dff12f3586d9a011a82302508ced268d9c913d7aa61cc606bbb7b0db8d8677e4201dab78238e4085c9e3db76a389494e31d2f6150f4bd629c6c53e4685c87a3f9ed380461345df2eda578c9fa50ae38a5f838d84ebf98df24615865b9e09a1176d1544d0570ce62a9ea0fe853768aafa24fcaaa7edfb1947fddd4d1957505a5a34b7f7bb28b494da5bcf547515744e61bb2983a36343ac894829b4d1fffe0e7198668708b625e681f9c4068f6b9243ab00eb6b826325f89e14e50ecd87a421ba8a38d9b44556a5ff1acbcf6f3159ad80c233a4af415c56ec2086e949f8b143990090f5bc39c321ccc36c9d42f040216bae4c80f9676778e531606b2d11fe6207b969b96201f180f21e15d19461ea59b28f752442146d7d52a09e100079e224ef9a7dfed87337312c8985e578afd3c1f2e265e92088c1058a03f99df9986bb0e8f0cf60a04f7c4f0b001ffdcb26bdf80afccb8fac1cf4027f57d5befcb0261638b3caef435bb6a885e9d7c1a341c15ef4a77c96d886d5524d8fc1c518c70230ea12ee67f3adef6342d9c9348b2d4c5f772576ea8b7403c20ffe475dff437afbdcdc547d4db17fd62bffd8e6f5872820723011572a74dd79f6bbd6880058f6730af00794e10f3e7bfefd6836d7f1ace27a6a34fd9814be41fbcc81436b8ee6d0267124a47a8885525ca59744e2b5bbf28de2411b044750f9f88933254b9d309e1388643849769e28f4d96309f5504a059c51915c6baebda779127d07ccb02a857795bc8fa6da7f81618d0663bb227cf83806acc831eaa838d0438047e4a5639a68d6f0d8ac1122b0d9f64f98e69b00159eb079190b37c53408fd718c1c772884f99f8718e31581d87bad68009d8f314b48d496bad7e6fe553e196b25f13ca3ac59c2d45ce04c9bccd324b4cd93e206076e901ced8558687d31d1e1ae7e346acf5d295b85c43bc8d1f68c4088a05173d518bdf75617f8ae6fbc27154d326152946ec12099e19bc8ce7549851f6dc11637588ced13b3ef7ce427883129ab34c608fa915b0cd745ef718d9faee9f3b34ee5c1ac5d435cc9faacd62f3761e242d350dce0fa082e81559137b7a0aea959926993f9b7c1945976f50675f3e67df26b3a296d7aa87bbbeda752dc92312c766425c19ebd5cd0b3576ca434528302082dc0dc8535695ead423252668929e43453f20b53cffdb5a40005410cb5e4de418c08fd1c9fa7231d9043e28e6b383b2cee1291dfed75aca19c540954891aaa3f9fb2a2b04c43d211f9bdb6f61b5d3e643fc8cc253e73c31e20d5e942dae1c5fb8445df1e89332c5b0166f9e1f4dc6602005bcb03b34d920a61d5dc9f404761913da4c06ed80ce12f3855c416496811b10fb0202a78eefefc8356ea97161a74b5ce780a5432b2afb3227d442725b30ea1a8c4e5a6c07782ae14ea4fc8c7765ac1fbda35a34ac0b23a4a8774791ec9b63e5786e363e9ebbd8cfa319b309f5058258e207b314872b1f17874dd9d777c8094520cc73fc45ff3ecdd092dec059bbbf82ce63248eb8b669f25b96b4b98bbea2e7397d40a0fee1266e475162519851a67310e05645aa646b9961056cdd7b5f7d2bd3216aa190349d089dc3d6b06d7b470b46eea8098260bfeba9c4b7bffc328098ed1a2d725a23dad4e2290a04ed9226d8d641470fe30eac9538c2f98084a292be4026a08e4b0a3c3ab3dde29ed4f55d4f1f7aa325d860c0fad781803a5c2bf05a58fa9c3591e469ad2fe91f02dd0edfe4dc05fd868a0c9ffcac4e3d19aa9213b753830237869faa3e342566782d383f477817a1cd45b7b37b3b10896671da89114f3009d6a73c48065dc99d768bf18f70e8aa7762c035800e6a973281a63a9044e98905e60f93372e118930b061de8d307f5312d30a81c28d1ff5634d315f1c74fb6db98650738eabcab287e61910d72c05cedb3f784bdc7525692962c70389aea2f5a6431365eeaa544f85338324dbd4bafd1bf4b0f0937441f1d4b307a6fa71bcd8cb6fe6e180ddd563a74aacd6c32d4aa6174890458ff8f883c30311bd3747e11bfa448b017397112ea502b8f725b4aa5ebe208c48305c60803af08e54d91e92a93e9c630ea83e4157666b02aba4e489504ec33a1142f40061638b2c670f6fe7ec62871fc68db6c708f15b86ff1cf82a0829888cc58621bc9e5968e5e4be3642a2e23640cb78dbe94ccc72c4ff035e235b6825121e1a305c34170662a5e225ea366d6ac94a7fbd00ca1891a0c2e3a7bc09c0bee9a8002b9bade7e1d0735623443e9b27f0e36d9be246798f4826f5574372a45a1b1e65dd63f6b637c363107f38bbee04fdbc26e2827ccd331fbfcb0677ee458101bcaf1e8830ce0db0b002122378392992bc603efc75ceabe79dc10919f005cf43527e1e4c1cd453d5d34ee6e87daf3a0d80b7f3d237a56e120c448cc93a8dcbdc24ab7db0bfa20579ec12d6efe4106c2a9d67a3667edd39103b325b528cf1b76f9d067256d34d33e0d3739281be425e4f0eda42adc56c1fe9af90748a446530fd5552d054935f8d4cde815fdf48f8a403577e2045406cedd4e86c74853b06911079b74cbcf94f5abf917be3700945de2dae347eb392bc3f6ecbf4b165f14974dd9953a791afa4411d1ab72ab80b29616f693d20fdc9c3364ffce0e9dbebb016772603a6903cf47adfdd5ab266fae0f5f5fe8d290b3c9e111413c9f5dfb3959707f83eee814baa62daea979751789559af73a6cd81244d86d09d6ffd71529ed9a7c6223fef2ad34ddddbdb3964cfd906b78195cfc590ed10f7a82ed8c69e83ac9fbdb92644afd13fb3013d7f39db3733cfbd76b493cb4d1c575d2c92a93f1e8c4791431716c208fb827caea113c4023a1c16babd93a360ef85300ddc57d36e7fd7a091d5ba4b578aa0a71bfb6eb89f289128b10b61027dd63dcded9270f609b9a27de67ba2f21aebf306e64ea7c0a9a04a0ee5391b26aca1a52360066ba61bbbaddf9c425dc360de12c2b6b6ff18528b2cecfa1ecc6f53df7dbcbdd36140845548b3fc448f36f88bdef4b8450727aeabefc9309804d3aea627226fdfca0ea283a5e8dd086b04b1464707473c99d710559fa35e720ca2e8ffa3cdf7841606bf812e889bd85916d11be2734981ef68a03bde5f5c486c5d42c9f34a7435bf3dd102cbacedca873d001822fa993de97ad76310a9be057defd33a0acbdddb003e53239de5cacbe215d27070ae2471c1e98452b73d6932780f96937ee21978bb0aa22960e56c81b6a8708ab706d22469ea0ffae3179a59d43c2890983794e41f8a5167d2032f392d99b4cb40287e507052372e5f2c26a3b877c6b668e30f315773f0f7658e815bde29cfd106a92adff3f96958475c89c2f221bd504f57436223a95816a1b3756717198ee4ed6e304432285abe75fe29bbc951f6101c93fcc8f440c01c95f694932231717f86d47cc62a236639ba1f7354cf91935c23838c23a2e2112f503cb8786ace162c20723a1b1b6104c50ca573a671613b31923863b02422ef388b8e7e982f0589a7f31663ea242eb87b12c76aaba5d638ad0d96c39337f43c271ecc0c3be2e81147fbca1564df7489e6902fc00f23951e1a8979dc0f139fe08ac4a3a7ed202795f20df726c59c55e2e3c47c9169d270bf2d304426e29d140c24b859f16d55042de4424323dd9eda710155dabeaf16b580a09afd1b0194a8e0527e787583332abbb88e140ec5254186700c58323455bb6bf4cf8717a06c1f0aee0e437ce308eb145d185bdbef3dbf6c30924c5400d2c1ad4e3a28e68ca9e46c32d9cdc741a3a4daea723fd149c6dd09257c47a1e3aeb4d13a31d95934a7e00eb4ce5e0b68b3e0e83466efa0afecc18bce795f1a1494a429d6c7918b7f30f4f9a8998c0aa7f5c0cad3b0a49c16718680b4ebb3b3a3d016095b8a2bdcc643a5cb598964e628409927240cd53d66513a5ae69afe902bcbb425e6661cf6ce48d4d773f7e5eddaebff8d3ee2e11df201799bc2c1bdf9adb38915834bd4bb7072249a578f6ed7974d61d8e2a405a2ecf1069bf663da217be4cec3de5d6c0299c634241988fbe35946fb64efa8a96005205d938623382dc84b5790814069fe1a527bcfd2250da4420f4ca060dc1c4aa5302573c1540ad8bbbf7a6fbb42d135f5fc777439db8f77b10b11c9caeee9888c9d3cdd901d145038653634291fd229dabc796d8b0c7dcdd58be0eb30dcfc40597dd99be5e3935cd1a5414c32a8949c56b2c61d8e74297c1ca9a18f669e1c0bc60f640d217d7113251424df598f523dfa7e8d2841df4a1d385d63c6dd7cf13bc043977ed021ee7b4bf01e4ac4fd572ff8a1044ddeb06c9fc0733a40103267accc13b2ccc705b562c4bfd66d40dc29437eee9de919c607fd6aa6bfe789bee98e6564b9d03791d9a747f6e768e4558a0983374007337c6467931bb5474c912f401b90500887237e50e4efcc27120123a8c1aad434141ab409d32cc6b6641cf2cb5d13feb73736826d5d9c68bf3c9230fb8ce449f11e7ca99dae8962f401b770ae3a3e683b97349777f1bde71a720547dea1f70003b92a8ed55449f1677879d17265871878bf9ecaf27a7b182a155988a6ed437a89805401fd4a19fd4fe1b74ed11f6672c88161a41efe647231e80674290d01aa0b85414f93d9d5fdb9b18512273f3a3c4e97acebc2ee26f3d2c581f14baf5f9b3f6dd71b76c2a0c9bbef4c6e264b73600773db75a26693ee17fff322a0f6e3930599474dbaf7feb6d341ce5f432f9eef2aea86ab09f0f38357e21a25fe9010485ddd6389fbe2ce53ebd9e0242331abbde0ae1e28b6f4351501c6aeadaf148979e147e8141ff3c4d6b4e03883a303854ab2bfbec555654831eb0ae2a029fa91c7d55442be6c3ab62218d75a2d6f5208334b427edc496fe5c0760049f303c9003e381701c57bdaeb6600c5eabb46213e8685788c058ca48c3a597bceb4910d200a406a7e3be5f0522090b9102a67664c0efacf8c9042bfcb1b7aea4b2ae6fa6bffd7f40c0dd6e47148ad570ffd649fa43c494935b88f092221f433db8a987417eac8a32091e8e50c779e95836c7bd4da565e59474893fe33d245f9206eb21dcb4783440c55a530e134587171d1f4da2fa69b9f311f19955d18eceb5a03630e132f7564c4345a363cc79d194e37a36f36c2583857a132c01c09fc858fd2b51a779c97cd77b9924e9251e988d251112db18dcb1ae104c34b9366d71dcd5828af50d8c34bc21e04103808d27868b816a8c55097664a7c51ecbe0e6b377b3c11ff3bc972c5b1cb03091f8f405a04dedea3a046bd423b39e103845f6bf9fdb31f6650d4423ae5ad803c56d999f4b4fc207444f7c43553b44c77551697d87e9f2c04031a15c75d63d85ea6885cabeb897da6d58df4aaaf8118f1aaa5e6f867540d559151fc22cab5a027f39059435c9dc0963c1a454dd96f4a25bd930936e9b6cf09c0974d599de063b738300cf54b2d73303573e93a161e44e638f58798da3a5be3725e4a306e38c56f5fc1d48d8aafa4ae982c361a9c1bcf25b5837418c12ea9b4e3afefef6550966060aff37530c8174d71c86aaf1346c8cf0e22c1879ca5b5d88a1cba3aaad5708b7a349e566bbdc7ccfac03235db81748fc71b08a685b36cb0bf7028f1da5a700abb12a7f8d2784a396a8637134ecf92c71129538296c209053cb2aab02b8182859073507f712cccebf21543368862e4e80efc8ace91ff7d6b32228afc47676e3f859f74c24e73cdd5ef84a474af53d8e7d7c420141090abce28ed21121cfda51c8c2778b79f0db2a4de97f46535082274146a3a2aba8faf9147f77cc00e4b59149151722ea4fcbaf0de2597ddb70713031477d11e5cf1214bf96214050d0e0d92e8da6dc055bdf5d4a58f52e57eadfa5f514bc6019fa7bc92d42ef7002459def46b465b58d465e5aa0304a96e7b1ef6985d1577effc93ca934b92b88069c9fbdcfa3c1e2429750b906899a0c96653d2abbb6cf4356b7313ebe8e2bf91b0a138d3c749c74e573ebdf9fa921a1a41ff0a7090a82e997c60505f16550547a0a4e749f5b732299a549b41e97e47bc8756c08a8ea2343a94a692be6f7d2077fd39614bd0d526c2b3eae6a5f558968685a15332e9a37d11eeb4b4b28902714e7bf3b9403abca9609a5188aa0133fbe567aaec435a6d7c7bf43e3bbdd3a140db9aaf7ac3fd4119cfcb8804b81d66e013260dcf23b7e321eaa65e1f90dba5184fa3fac8e02c8ff23cde3c3124a7e1da178bdf59a5ff237c7e97199a9f59124ca0a1b2612e059641ab112b4d8372652f1aef2e9eb2134b51b3c259d7d3f02895a45e518278bc72afefb6633081fcea2e037c8409ef9cda2b53e536e54b01e6d7c152d6ea0e1e99bc0e23db2780e253317dd2246c3d9467fdd52ef924e4201ec5e5cd74a9c942faf52c52209da4931fe7f0eff93e2d494fc8a94042d5a81af18d7864adbfb8431ce743e5ef9ab32ac73940e5aa4710d3a3cfaea15d7b850cd3881a9b903d46e045aa3bbb659301ad6a603ea744d50a48c0ec854d2afd47bcd9cb0682e244eb9458404c9f4027a16e3eb820bea1bef82066e9a070376c10208800044793da6a9178eed326192404c298df5fd5621a3dffaedff7f93ddf6de7bcbbda59429c9370b910b5d0b34737e93ae2ef38ee95a441bd2397016218ae42c81c5f808117615620fb147d3878347f724c2865a8abfd959a8fa16aa1e4d54d3344e9b7376f334816da72abaeaa6aa9e744557aa1621a1aacca736b3393b3223b9f9b06d5a582ce1c346f584529de8e4744ebf5a345f9f4a9608e0d2490518c08c4b0fb5550d1e6a38353cd45e321e6ea86f968d7603000f35d70c1e6ee196b2e1a1d6a2c1434d67e4a1b6f3220fb722289216d1155579f53984a5abcceb91942cc9204b31b214832c812e5dcb9125185ce64459ba7ec3a32cb9bb803cca120df77894a517dc7a94a51921ff78942518f73ccad28b771eb9cd694efb5cc9d11480936e01ae66a3a9341618801be5e80668030cb51608ace14639f2803334dc28471604408d1be5e8038e40d1dd6aa21c71a0ccdd502fc170b3c9c9bc82f444514dcae889a2288a9e6811f45429aa66599f4e980c574b69369a4abbab97eead974e6f5e3a0d18725efa0bae971e82d1765efa4bcd4b6f39bd74968bda6c5efa3cd9f6e96ad17cb56b1e6a5a385ded3d689e398fdeb44dd3b4cd5fd335a14cd774f584f2dab29a659d840b9a1530b20bab398c8462ab733cbd5eccd9c301f3687ca8f1ede1407da8f141daf9b58b79bdf4db7d884d7ca8f1150c92393f8fc6b2da9de5b0ec8c79aa4559369dab73cee97cc35530dfc07896086bad5ad56aad9a4d76b59456a449596b291e4d96598ca301f871e63170bd0505a993187aea6609c2b0ae51114954d5a29ba8a3fd03adccd152a924b42a5e623409ad0a8d8a28925e2bc845d28965c71cd46ee20c097ad5a22631283dccb2cc3350d6ca2f39929873f5de38815f350963ad34d60d521d22d2882ccd11d8f9d3e9c71b1dacb48f2d2c5a1f36aa6b5a5290e2e38cd96717e6bfbed873392c579e43ecf4189a14c6d09c16a57451477b3eeac7b7def9c73dee798a8398c94fec48d49288246d07918948ea41d4c1b3c5363c508ae7f9d8603f9cea3c9a352c9b4258fecd3377ead1a405e5820a2f4f272cf3d9e298c04063baa62bda901eb9ebbd37456019fc3883a12d88f7381b704e8b9cb0ccc2ce0fb5540543d5f931f66cf1a4453ae0cbf371c96b0b3089a7aa2892eec49d71c0ece3cdca4649ab455236e1e9304360c35ec9302c8bb778a8a558a5e56a3772241b24736adf50c379e93304dd4a6e9a5445d4c1f153c1f9f16898a6e8499e6e9418427652669c79345e8d968a3af8bd1a6f08936f4c75c44a8925a0f842cd08247440cbb02cee9e7f7cc5eb178278c4ae524f3c0aed89c11ffa19067146f2e84d53a1b45b52c0980e35aaa773d36b80e721763d06e2abf50ca545d25b2fc9c0ba6b5ef6cd0db888373cb0e2638a5f8e5141eee392970deac7161654749ba64229374445454545c55d5c9e789ba6c25131723eaccf6ed2d12e9fcb61690e0eeae4c2fc7787300eceec7050275db09e5feda3e73c9a2ff69ef78009d29c16519d1649a72f3061a2052fb360bd39b960bd4c8661a97fdee22c1ed616965a5740bf21772c47e9cabbbb31bfc1867eb457af0dd29dcce78de71bd607a4562bcf400cdcf8f65593f865ad1554aba8822eed2d47a8b7783f1a47eed89a92a32dd8b0574d6a3589c120fc34ecd2bb89c66952889bc41eb614b48816490ffb869e28aa4512c783401fd7423a50ff1c0214fc1c02518e54b4603f57f1937beac320cd5d8f865b00067a9cb01eb2675dbd413cc83c601b193dd122688e070c6bb560687f4b0143d06f605853b254e568a6664ae5de0871e8d026eae29f1bba6836a0ab1571c982f54ad1249d7a59d7a5216c9324326182880f63be67d0437e143bbfccf94a27c4d212b8cfe11d5ab4b14524792e455b702f5ed229bcf48c1dbbf1dd1b43774c318f0ec6a0c1408b81268338239d5e4e4a302ce6d3477d06b5d417b6bab310927a18431bc7942452f1831c7c764398d797df1e0de6120bf265a74d4b2fe829ce488f3af8e515ac66c399877af4cfbe1b92abbdacd07d5ce2450a9a58118fbc8c624a28e6c4f9c0b373cc91abe7797476e5f3ed4ce695fd0704282dfa9f173d03eb80e1a3835147634f991ca10b3b57d0858f8ca315a98265504b51c19a3e116334781df9dfe9d9a3912e8b39bd4ca97f1ec6340d3e3ac7df8da6befdd9771bd5573ebd49e20d0b5cf0edd1c829588c9419f150533512d984b5988131442e46992903eed9b3310ceb6e8ca5bbbb6b9e91e02598776ca09a20ead800e82711310591b280ca60662187658f29c24d11c299fa9b26cd9494820db514bf62d0ce3b70104bd32583a8d52092320725f1529b814d7272e2a573f46483d3112f3da4a957e2a5672ee729456d5e7a6fa0fef4b6b154553d4f7259c795cbe855af7ad5980c33b4c8d0f87823822f3eaaec746e761145d3d54da2a7d9051139ecb45147fc0c6b0d072f3fa71e6a46ace824c419e97cfb8a3823fdfb9c5e2132f081dda447d2b3c6f936354b8ea4f74a8ee4679257743b2e5a8a77c497ce9ec709eb1fd21c8ee6c89206833892aed51c598a26538e968a82d552f26310b060323fb6b0f0e2c346a9542a554e18c457bb1203afa47c64120328a87c3e31254ee50e1102012dae7287a8b4a8a8b438097098589c85a5a53acbcd9c8b69267a1545d23f3145537dbc093cd624275d9a353535353626596337cbfc3e3291810b3e1f99c82007524b69a90a86b5da905f41e877738221fbc755ee7763044366f79c87e40dd0f77cc5a3f9704a10fa9da7783e3aef9c932186bf710755451bd22397e23c7aa745d27de0327ea713a3491f97a10645bb748d0631e0037c2e5d8341d481b9d46c5e6a3678c960a8a95e6a4720b1c401543cd46ef0d2231be0e426150f35235ecee71fbc36843a8b73396c3733d7f63955422080e50e21c10d93105c8629c991d30d133d72c261a233b6ae683d7b8b47c3edd1f8c0653c36e79cd3072ee3639ce92729dd0c4d791e85301ff0db3fac8790c04d9107107a0a106ef2098b5c14de78284821d3c927489d193ac9858e0db554cc19717451cd402077ae4604613debc5e29c13c3306cce897577e7501d598aa62877746013cd7182a5a7266d2e9d16d1a4ead2a9a444faf498875a8a1e114b2bceb5f38b1e1195f81a0ce91335740955c51929b150d1f0edd6ac46136ca8a5e24b0f352d342b4a2a1e6a54684b5e9eb4cf8bf6c40ac82ab57ed6822fc6821671245dd3c0b05690828c050098e04c43d74927b69ba1a9dd4040a0ef1bb24f20a00ad65083971e8a6e2c69a9906ef1d2c319ff124934278aa4f7693ea9499a9197320b1bcef6ea5c5fcde66a29ed6a4534502ba2d934a9c1707e839a8d96fa504b494d3ab1dec72526e0e219b411455df4fa395187cd66af477d066f744cb58833d2eba54b8833d2e7a55bc419eaa447fd06698edca24897620d35d490c372d246065f2fbff4708853a4e03d7c638b0c27be7a9cc882c96b3eb0cf9c6b745ec3a3e92892235a911e491f7934d639cd46b3a95ec11048f7d5ad73f56af66a29276cf5504b6945a82a85aa6e2b1147d26b783fe67b3df87b1567a437176c48555a11cfa56ba9265997aed9b867effce8791e78e473183e10045df50a62a0fb0eec465ead5d18c473e7e69d8fbc1ef53d1ff900c4571f813d6c5e9dbb1d4855ce6dbe71dbe635bc1f1bb852c3b376ab2ea9ca39f768340d0600783f32700648918098b02155bd74aa6a129226e9bca44e5a249d068f86419ab3049bf974ce46d734b2c49c00a41636a4bd92392f5de6581b7ec952a3e248ba5c72059d974ab0d8c7d615391f362aeac05eca2c6c25438a8fb1449dfdd68f5e9425ca26672e879d7c694e9c912eb10869ce003a8fcef5eda7974d7c415147fc58a96c6223768f50b06339a9e7f96cfca4a8c4b8c2d2e2027aa1e1382e4134086610b2bdf9040d22a0790581d85cf379277b3b54df4020b013d898aa9449b0ede194a3eef8f1841e3069379a1848e6d16bc0740cec8182a06df6828b3132f6a458b6b2323195119511acaeacd4de9aebae3d0f17ac26cd56144d28f6c55b3c7a9bf3d58ab448b3e931bd98ae7905e9fdc03e84a6fbc060e8c57990c166075394616a712c95b23787214356fcf3212a4eb554add64e30879716f07316dfe17316108824ec40acf8e70cee409dc55940205484b0f88a0b797115157f71212bcee24254fc85c5577c87175761f115e7e1c555ac60852411d2e29f0b81710ac50a49b203751817f2798b0ba10ee3ecd184d87768f1cf778071ead10b31a8438b7fce038c5357718cbf57a10d390ce00b357506787ae9a0cbc432faa2e2610c378383a10bc3a67a899c5e4581eab05667af6874f7a42bfe5113d0d39c58c4587a324e65c5a9f3f0f9e714149264071530c4ae2284fa03a289ba8a5350081049785001857c4e5d48921d3ea7601026212baee23b50577176151088240ceea0e22c20102daee240b038e5d8a3c1815fa3d19ca8a269e5521650c88aabf8070a49b2c30a186267f11557018584180ce9a0e29ff3c0026a2c50bbf9400ad6e964bb9a534a6bac758bdba6793435737a449c4122ce248144d5cd6d36bc94547c072f9deb3a8f6673ce8b1e4b0f5d82e65088a55ec951fb8076c1de744eab60df23f41ed9ee91cf5f5aa2d77139ac565bb857b2144dac16cc03a209f5d2b193e9e54693c7a3c961c89028472156f3d287d01dc97dddcba52c3787212d6094231890e6c891eb86180ce5f0f98ac7df81050482ba8a7f1e4db30a52f8e945042396e68d1cc9f9846d48c70274d38597d5b99498c2b2c9cd9327ff2b2b1e4df515cf4737a6c25d58fecfa95741ab2eb621dd099797f8c2d293f9aa5b3db0b0a196724d5659093d95245e8c63ddc7a303892fcd797477cfeeba5d1b868b0c5258b0ed7d05cbf9e48c2f557937c4ff7c41826d9b1da78a5260197336e7cc3210e3b00bf48079c95a7a8238532a3916b99981c46846e8aa00cfa18e679f7959f10bc61d3244d2e6eca348ea9c552e83a1009ce30470a98aeb76f659051bb23adcde0978b7023aeee21e6a823873621bd2bb4b5310291151247dba523c03537c82ec4def2e6dfd76579eafc709eb930a36bb61104aa2143e04e0cd61acdf6efde83980a31243fc76533eeea0820d83f8d9e4a3d70006435267bbdd4f97056201970b08f480aeb7c18b589041cc79481e8dddea3a6e084ab9216541697ae5c0901f8800780a96299295146c4855a10c0469d1ebd3fc213d45ec13760d7b3e5cf9330a36e417d80512ad264578efddc86405e5bbdbef3560fbe93cba7fce95d65882d01a9284bd8d28e1e9659c0a055b433f30cc83f8507bf22e0dca4baf1e2ba83d81e2d261b552a968ce6aa542a2522159552c954aa5322d1567b8afd799ddcfb22c95ede4b0b014762fe637740c04b21603e98a4df306a7491a7633f985d338372daae2e6a60a9cf974f20e12dac40d3316bd0c7c62e7cdaca27d4eaa62bf91734eba6a918a2261deb8e3e78c27ceab4592a3109937bf3561339deb74cc7934c879382fefbc38cae4284dc282ec3469fef38bbd62e00ff3dbe969d3b40e44c20553677a9ca8d80e1d3970b8b4c1b17b7f7a3e7adc528a478fc60757af00bcef7d7f7fbe295e6f4873fc7bcc1b2e20cff4f67a4ce76a57aff5e9f9e8b100ac082aa882cefb478fc11e136c25c10907bae909058b397b6b4f5c8c61181b91e219e01881fa22b772c0e256461c61ad89978e35fff0c226ea18b1e2c3186c880a7ccafd816db8e1a6c54bdf71c3ed8997aee3861b0c422d8c978ee3869a162fbd7443ed89edde17007803740141a0070c69ad3e2c7869a6f6a4091ba5d0e10996bd298a9e66b78d0d17d69f8100b21f9496422549c2878dd2b1f7c32cc5440b88f0849d22a8a00a3960cc400a5cb05e3a4604154c5e3f75b0940f9640859f3ad63f4c6208264ff8a94373a20e76e93f70fb2cc2aff317736c3a61a6a6cd9c73bae69c73ce393ddd24325d369a913902ebcf2e3fcf54e51e8ac9115554ba041e51205481b25ef228a44f78d983fd542b55fdc04db00ec6089e4c8109b657d3c8cdd3cbd1d3749cd868c3e7d227156269823e9fa9d94cd54cd18f2cf2180ac7324560359fbe044aabd544d5e2a2d11445cd2dec0ffc2ea06c3a56b3b9041b4e97b661d335a3d4fca427556b15cbb8e75c38cfe3b69468e2b0fab57eb4903bf778d88e815cb7dff05073ecc6a5a73873e3cad76e7c7a8a3ae4cb48faa19f77fcc07ff963d481615e69ce9c0e02fb7117f7dc5e75b759394e5a512802857804157ca6f904c3eebb82dce35a13f5aeb42804027bf4836a0bab55459ba4833cd5f5310cc67cf368b0ca9cf70d9bd3d1c26eee80cd499318c440f7ec59c7556ec618db9c8bf2b3d22255930f4db047fff41b27435eba76d3a44b1e54bcd169a2e535d64b5aa3f382f7a06eb8387da8dd1f5e146951fcbe3fbc40b5283edf1f5e10493529b69e18f1510b3fbcb0f99151e13f1fb7eee2f5e3f2f960f1f31c24d19cf89c055cb9a11fec1dfdcea92a343d499c620a263e499c620a9bff6e683adbac72d81f1cc0205dcd1c3b4f6095603bbf01863a00448bc8883b4c8c180113246890cd2cacc97ebcade35cb0003579b9c24ee7609260a773a11956583ae3059c176040020c348e40c38d70abb0f38245006320420c3154c4c8702383cc143ab2f4b98c6c3941f2b1db99413404d14808a31a52585a03004100000d4c689859325343ab061b40b071e3073702e08300c078d305300025032040140428001405203d412ab14a387a600f405d3a8723070f72e8d871bde93618c009031ca0890320800904f058a279f06b0b1e783e3af74a586ed5d4fc7cd3ca94801dd8990005e8c0ce8e03bde8309358221fcee797530cf4141360437363ad0812ee2394419a4375603c4cd820fd3d8061907e76d9e9133ce2fd60d79c8b1e0eb707f666cf07e6d51b0bd21bd07c5ecdf9f25fb1c3495824ec064e9f21aee1212a1f974051b59a34811986e51136d41e9f2fa35a4424e4b5ca86309f1e3f84813dfab176addb90b89e80bc193168b1fe3c62791aa175fe420ceff386774c70a6a20de912bca9ec3033073ec11076ea1cbb7ce222f8844d23b60361260ee4ad1f25d8b9e621bf1ac3300cc318e3360f35264bac1215a5a5725ef306b65936b0d5c35e61188661aec120561bd82366a83de11dc5aa9675e00f93b5549ce955ad76dad82e069ebce22c2d9fab30bfbc74dd6c615951f9422d99733366342d422469a9987197433b50fffca31e84494b451dda6b2a279aa6691adbc8114d75287edeef6b6061fc48e64754e2145650f1f3aa3ccba78185d961974471126f4e46f8d5a490e684d355a449d18a1f45a85a449d74299a54ee100a26a9b5ba06d2538b32ff783459f68952b29d9efa63af58c04c57aad999c7a399b3abf5f3ede38d12293903daedcc4d4a59bca55f3cd49650f195097ecf6fce3999f9b31e0d77d374d4f95e32187a6a46683492ed73952276cac0ce8e3d738e993d03b554910a76e7dcf5152c7f1e4de6f9617e10f90cd23b44882f887ccd3be7f67a60de7983474ededd1f57ec74600d7d5c52851fd8c4c086f475f37d3f2f6d9c4ce1fbda675063c51918d890e6dc890ac1f7fd3e7a3db6cde75432592d92ce7ae917ec620e427007ec7c410c229fb91f57ec70a7a55c60c1185a6043eca610833dfa37242b530c3193880d69ce74aa925b4f0c26d4835d734d4b550985e586d0cf5d3e3ac8cef5f5dce0e52df9efcad5f38d4c98e0e4bf2b5b5827a3b09c5624cbbc3bd38c70d61e2d255f562bc24efa3330ec9e0343ad499bb7b7cf7a433d3a3e8c47d3f56aaf0d897bce696165ca960286b3698e4e931ad43cecf901c18e9bf1718917504c9b4d6661e3731e6e9ee5d09c6de3b66de3b84b75b44cd3e1421abf56bbc663816dcf409ad3aee9e4e468291d9d1c2739394e74422f730536ec15e8e38d0eb460d3af55a182c94dac56322051b1aa674c2cd1c6b22f6cd6201b6991649b89b26c83bd4083bbf828923db51ccc145895d67239875d989f97ffbb8dd2798ebb9e28b0d1c42a60f244146c6a4cd97373579f27b0ec8df56a7ecd9aa999e2fcc3f9100e1fceb36b2c458b5a20aa0b1ed01c2a9cfc1661432dd5375147107e99b2291ea765374958b0da0e0c2d680343907b064e0cc3322cc3300c03b38f172d92597c04838bc7918122136547e77bd0c7d1228992a56f47e526037d3e9471553ae5f4ac499613e7cc3e9c2d8ef3e673b20f656610628906aa4545606f6259966515cba8e761cc6f9c3f4033611c239d93a747c3b4b72b6bce4bf9392c75aebd768fa67b896fa7b7afdcd57cc44f718f26c56f80cc1397e2def5a8e0b98b3d3722c007208aa4679ec36abe848d5878e9a14c183604218e1986908e80589a758a97322ae1a5734458cc310f71c812e8025d38546e4072e45d9091e7eefc14eed21abce7dd1425cf5df929373e10ec04a5832e2852c6457ffa8c250ffb8442237569a05666e87402cd1abbe3922394c4893abc67cf9a34a9bd9f3dce4e60f66fa7f5ec392c9d6a726058192832af26b52c4d18970bc6254318578ee72933c51e622f6100c3ca81a1ad6008f2401b1a280f58a3e592253004310c2e19578d2ae6f47e605fe3c6cba1464b068acc4be6d58dc0d668c992f5b086ebe54d0d9d8f873572180c6bdcbc077471f6b2e97365746470e448d61b599269c99194ad9b97cec9386912f69ccf9c26813c9a395bd4e2dd10655a7287be9c3237d6ca58114b1c4773cae0c8e45c11753469927c124556c41d928b6843be8c1591c451345b264796a4cbe070582783134d931d743517e5a5e7d541284daa0ebe2ebf77e78c8f896143ec5d8d6948576322819b928440e6e9a76f384c972ed8ef1567a4772a39aa2a3798873139ec74ae938c3acc85e0d7f6980c9dd61ad8a35ff38cbe741928515efa0ca9198c7429620147264a93e214643c797933e46528f39ae1d43653bcc4f8700614d599020b28f870862259c3e06a124c08830bc6d5a470b654aa6852bce293f0a14a932eca74f132ae2892cdbd877530dae439b9846dcff45c5ec9194dedf9009f7aabc68632210e195793da27f8c37cf0bb21d6f30dcab85a340611d91eba1fbd23183731d03d5704866d6f496103f576e921d40da5a837057b680f11c19139754933a7de03f59ead16512ae3a2322e2ae3a2a1540815221222124285525ae825e4316f446043951b1c241b4228e921948b4baa496d3f2e594108546e9a440305d24081ae1a3c50608f7aa8bd7ef7df0db5330eca73430df6b8df9e244ef1c5163e499ce28b20fcf69e9b244ef1c513b85ea2bfcb2b6e76df8d264f7de9d150b007f89d8d0074350db6219d58130e1c2db3234b38e248fa6cc591f419c8f81047164bfc0d0c63ef252c7b0ecb32aea8a3e5657d99282f7de7a56b45d8e93864b0db4bd870b6240e6e6039cfc4fa813027d7c429c038c2f3ed1aac0ca7861220d460b548d668bd9461d550f2d261ae0d3d922568cd96b5d6f3a5b08cbaedf6168347d3b977bdaf374e01c690e76e36814cd76f1ef21ad01f5b36b4483ae8d16c200e1c322e1917cba069220f74e9c03527a3f34697dde66e74dcdd7ebb718a2facf0dad5520fba7ef370989cad41c27786037e3b50d86fe713c3d68464bc78d989c0c629ba70fa3084fa2c6cd8a9be1dd025a4ea9074c986160d990ed3c240970e9a69b6e408c6b344081542bd74ea2ea9d97249bd741b2d19574bc62547adc42ace489cc7c4b0210d140d942c618e830688c313c28632ae9732ae196bb0f9184306020e42520a14c1c598507bfdec6ac5bc7628e25318cfe5b0b209c98ac130efaed5b9dab5b116e24307bf70fdcbc79b29b47eeb68e89c47ef40c337101a14209b60c366451db29ddcc41b9a1466ae791053cedad91550f51e7ce8c067fe61109f05e9d77cc83e73ee869b356103fd37ccc9ecf9c8dc0759461965dcad0c7ba4260906aab783200906aa877e60de8e8140e4679db7b787030efcd5f92b18fa889f01c78074d205919a6f3084c3d7c8e40485efdbf2d1e31c9671a46071131f1070c352a29dc0862dc546860d63eb0b7b43939cc70de00d2d9aae80164dd957e0a18026d5239c4bef86f815fc613e1056b340aceef6901e4d2e7a9f9ae40282f8c329ec612034bc4bd7d0c0baf81097e901adfd803c1fd2bb592e971ff3af6952e6d37b48ec9870c6672b9f7546c3f390a556d2a3e9dd070ce3cd0a080c23ce0c9719362b74137313700c6cd618b65dde064155588c477596a2455c851396e206e42a725c7c56afb154ad0522fa1eda5dbcb667382e1e320e37498075f1e67697eea1c190f4b0822109ee10e52804227aac6e801f7371ecbab047e302720ee388613db134c3b90ed45dee6a5ee6718e3b7e92c7a7c75aaded3e6c1608dcba603b876daf3fb061779396a24b26244e62b35a8909c993388a1f7615ff82cfda7968413add59cbd50c61e134e933a76b271bb2ce4fef9e4be1d1a229528092e638ae9300f53ece7d2e8fab80167ddee2373429059cfe31465e08a57c73aa160c09db981e7edf757a2f1167a687db73de600844f437ecc0bde1f268d1f48d0b36c5c3d852408ba6a7388feedb43bbf536a2a2e221233f1de63610a268facbed21b0683ae8b6116237e99c25a46ac5a73712169fde2be92b8ea9be82487efa77c85cd6fd6c77716681613bc83d8b31ecc05b075d66b568bacb0d39f0d65b6ec8df629d876cb9f1596ec8addc30e5c366852ff7879972a3029ad4a48f4fbf21e553b3239c67dce7ed0d6240f41664252d9a9189ae69d1ecd316868d4c9038797ed2a593693aeb34a97db663a5e972349d39cfe567662d8ed8358eeb30ae3bedfe284215df03e3fd3833dd65c9c4a3e9336af1d3c352126c24c2e4b111c186cc62d956d26137017d1c25e1e65f3e2e4982ce739fae32194205cf5e8f23a11dfc036b92540ff14043473a8f262ef4e4bb164dab8456eaafbd20399a3ea3d8be91251ecd922566c5d1f43923eba71592f0ccfad6b6637b65f3d327d6793e72e8bc0770de790fe0bc5972d4c44fe7ee0d3207a9440769e22147d337306cc82c66296952fb4462081130f918450d24e6abf79dae4d8f71ba6c068672f5d3a7cb6260d8ad9fd3676b4ad1a4b06b7eb262cc047bd05e1f081a03000e5a5cd8e81cb3d4c2ca523d45309cc01736aca70f42339d5396a3b215d5a4e670fe44d5225a9435418115756a11d753f57a9215d5a4d8310b24e97472312773c2850d410e881fc1506d9124a39778b1cac9709a5441efe7ac49e6e4d9591fdd39aed6222de26a9382d951957c5db1cfe8129b6878f6aa24b56a5258554d14e95234558ea22c0c8267949e186718ac45b48833b09e5850554d62af489ae40f5230ac130cb39de77a8521acb4882519d66d4dc5cc254bf51447ec35f55c4fb5c55b1942a03e522184cdd7f0910a11e8bcc7cbd1fb31bf3deb7a466e4f8c33611032d82149e4ed5a44dd362992a6cb88d17a2588c3666008037b3c7d1e4dc11ebc61c0c5580f57ebbf16d6b3972c653a72d4366bc952f6ca5adfd9ebb16f97597c6c8d71fa2a70d9162c4805b44392c42e4007808b1cbb38c4724627086c748e228eb1e5fcc2460ff939c6e86982cb61b9d6151ab8193b24494b1f922482b818d34ddbe36cacb947a06b3f4fb6141e754bc9fdf27d294f9e2bae3dc684f2e54d8ad2d52266e98a1ed6781e81ae8d34fa88cf7186a59452c6528c9123478ef2c5f2095d9b1211454d89d0e273ad31c8787a254ec6556ddbb4b9756bda29ead070a03d24c9cc926cd543d66c52b50776cd66891544309b90fa1b1f6f8a703dd77d27d8f978848f372750bd11727e868f4b8cb0faf674a8a9e165a21e12996ec8916946b121bfb8af809a4dd09e509f9b07ea40b8b04c9f472f870fe4214738c0b08e630914d73c815df2a282f6849945d7cd2f3a9d9519cf9c9712052b46d1c2a296a39385b51fea5083211d5a1cc67978711650088bbf380c2824c90e2cfef2e24260bc050cb547538b47539d2c576bddd022e92f370739b2d22716e28d56b3b9a48b235cf1450eaf175cb278cf96979b176660a109d31ccb65d374b134e188b9a344cd13d36503fab51128d81af250bb8141cbc966a8b1de412d256980515618c028edfd3c74a9c3dc1567b92aaea566dc680add6882b9d164b251bdb63271fc9225f9e29db65131b70d77af5ad5aab6316263d3465aa5498f26cbb8b5d44c49d08ac77c14011e15cb6198c7f3d1aa8ae5b62ec3e854b176dbb64de5b35badb5c69bcf67ed0ddba6b29b7b3c46911c79377a1fb0ba74cf9bf7e6b6a5aba0f36806f40d93bb91490a92f8caa81b18d0a5688a26ef4653968d02506badd289f5d7d8bfcff9a3f9d4d7f7b9a73fe7d1f5254bfc62569c91fc04888a25320ad6df3fbd044a149f7b9c5f96447224bd565b3f602c5940fbaeaddff77d3b1d68d2f7398fb64dfa40c91e8472a1ce73c4731ecd1fef0f0c7d40fe8898dd53bdab6b37e453ed3c7de557e99ed0c7dcf7f1546dfbbeeffb6afd7c1c7f36ad7a4422c681d2d18a8d7b1a5a2499c53b545efa7644c492254ea536236c287a19e3c7ac2629b979e9ec8ad2a5d18aa568525ca264f5af97925b9cd3a8254ab6f890755e4b9608c2870ce565c8375c5f4d0aa3eb779a14c69daf512c50c5f8283cb340167506c320f4bb219f5ee4241469de8f76cd99c5621618f2e71f8fb787fc1fffc09007bc21bec73ffe797b341e300c42fff3f9aee6adb5e61df19c862e79de65253d1235a982348061c3b86381d801598200152c273e8cae2c8a7c187398fb2e4d7d9c47d354933e974eeb6b092f9d5951c7c7a5f30f3c97ce50f0013ccc3397ce4f441d1edf6e9ea9f03c6422741e7212a687cc64ce217c98555ff1bd3bc4f394effbdcf33cc5f3ba69daf37ddff77d9f7f1ebd0f68af7cd26d5acd303a39c5295e65ddea630c41f404c10c82b30c10e1624c18b29125367113427cf7a1e8b9d8655d4491e43257751e9d7501c64b979f17c7b47a77d71b253b00e7a19d357224dd5690dd01d978a6d7437e55719d5262141bc2b631d8034b6fdbb6da9ef7c99d396be494b3468e36975758dfb66ddb368c0bfba2928c797f37f4a4a28e493ff613ceb09f578b9af3e81f305e4daa59966599d4d92e3f16051b1f7b623d0f11b1aa9ae4399d9a245fed2122922418d1a3f1388f961e8dc7b9cba67aab6f1b3604cbce436e5b85419c89419c91419c2972ab919a7a1b206a762fc03bbf813d8041e4bb49550551d43b59c65e0e379ae41376db36dfb6cdeec8129bda6b2aeae88a7a517533f871a9bad39cdbf40df59b576b7f6b00ff06869cc9cc7a4e1ee7a8e771ee46d35cc2db1613b278ed76cf456fdbb68b69ad039bb27a02c36cc75304fbea9d1e5a344d8f9dde1fe6e775db3cff3c87826d0f3f4fb09fa78ba6184b9e14c491e71449358928aaaaae9e14c4d2670b9e932c7d5e3287dd1c1b82ddc0eed422365555129124a34836f88068eafc72dd651377ab97fed9022b9290bc74d92911bb23a2082547b2ef0ed5394e3e61bbbbbbdbd522e9e9505db70af1509d73aeb3913bf2016cea5272d41e7628573bd80d7e5c9b872faaedf32282e661653284975e91784e9f249290e01d9e5355f18eaea94b1e8a979589972820bcf41ac58b8a559b08ab125f59551567ee914a29a594997dce0ec53b24947e51f10ef9e217d5672ecf8977643b9c7121ce4049198288974ea1bc74f91241ca9097cef2f5d23357f8e9c24bff8cf1d23bdbe11d9f289c7121eaf86821cec8cf16a26b2945bc4c19c14bff44e11d9e53b4215dfa470b5cf298208ea4eff018116dac80e4b9410a0ade13831412bc043d2bf890f1d23f515ac458b0ed0c7e5e2d92ddf7b3f379f527ca67a7490dca495f6048c1cfcee765fff3fa44e952d7d4d4d4acc0248f1047f1793061087194f2f4254b9e21e248ba0a60405f1e90be3c272cd806fb06844d5cf4989bd876be99730c3621ea5879e99f9da843933b7224433b542038af1e8489e36e8807ce3befc079ca76e448ce9a2b6cf879851daa0836ec769e7a876ad2e672c2f0eddafd21641008a683e46713cb850dabeaf39a55c536d84336b4061d703126dc68c63d3b2e620822ab6e82cb611909a718d59271c660020e160d321882b015160f639ce38c3de77258958ecb61637d0e894d71954e73e9ade3a5b84a0b3be76d5bfc6755a8c79821493aff9a58f048a58d6ad44e0776a64c516654a3627f3afb791e85644591d46e34e5b03dea77cee5c052e7b6cbfde77e177b7be316df5df9957e3c0a8e0a37c131378babe0b0b8ca4a6b5ac56a6d6f6fb087cce7af64debe9239df1f2e9ec1c0b478765d32cf668b4be63920c5433870dee22d600f3183f1f695157681f9a1f31f82d4b7fe4310fb9f0701bde7dc0db578fc946c85c555405eb19ac4028659c6ab8ccbb82ccb38ee328b57dc04af78c54d308b9b73b55ac9960bea195cb16065ab45222984a56c8a38384aec953ef8419c01429c91fe91c2c7081500548e17e56202ace73c845b5d579d4bc28692f5b954d2a521247013c885f8fcc57b5e11679a90c03b07f31717f2e2a14cd5974e6ce71f3b87b990178f6bcec38ba6611688ae2b19ec813d4a617f58b7be5dea3d81e78fd31bc2c1d93a17bd1f937a96b094869bfbc06f6fdcc298cfa654d223e93c5aebe6e5acf3afa3f485838333b7ee868166dd79114334a805f6043f8297110bcf4795457c1f288b5c19eb673ee24fa924092b51a7161dd19c254b1a58595857d75c88c76f8eb079047cbc510d79cd6b4807cdabf3d0d535c71c04623369600e72243de2b826a54d93664cd34080c9cc2c53eda12cd22239af0581ac458140d64a9b54938ac8944c35898b48955c3112965d9e244a9e244aa2e44916214ff2248b90a85ae5e9a53cf12bfb32974a48020cc60181401500b9a2681d63f5f3764621305d76f74f56e37047d89051afd7ebfe681580558e15a3186535d473291e8e2c45538ecebb1a67490e153a2fad70a150445e1995a957d4b15a81cf9e51ceb3cec3986ffa79279f804246713bc98a4cf04ab2a40f22cb87921575b0bc74ed82b260adf05246e18510b19063f08ece434946944c78e94c6452fbde9fd758d2fc0343f609e67413c960e780dd44d221b03549df6ea35ad4a946d154a39a48a31ad5a4d98dc26922389dea22381bcb1b595a31b12628592ba6b057dd8a893a62a957a2efcba838235dfb8cde39af7ca944b25ad4a826c29f647db751b2f57ddf952dc9924a244bb29a34fbdbb64ea15e2f7ea5644a8b359329999225f984644996646517db810d9be42f3de3018e929b26c5256254e143ed514ad1a410952eabe01d9d4ba79787025a243db6c430c287b17503035a244f3ba8a883ddde8e7d6a9a0cc36ace924ae48dca5a21a594deede75a84781c73212fce853aee3216f88b3803c6cae5282c200fe457f5171782b9c785547f7150c75e48078f63cec38b8774c0dce33c60ee015f78a8fe0202b1993ce00d39920e8a1e7b1297500341fc7417e7e95dc86b00cbbe2e2e6eef777f98ffe2d1b8682e957449b2dcfab14b55bcf47abbe51ed1b0cb72ebafdcb8640c96d7797c1c236c8aab808cd3a2941bb2d31c1c9c9c1c9c2638384d72388e717ab5c9948de1bef209094577651452090c9285028f6b2ea43ae6423cae85618524d941738f0bc1bcba10cd3d3478c0bc3a0f9a7baa63ce430579f080dd9223b999a229097bb2566bd93def66ef5647ace7b964c952d76aedc7d667377bf61a40e3bd986ede394691cfaef6ecf5e0e91c7b1f1fdb8fcd3330f4017f58a7eec33af5203e7a3dac533026ce4ce70f88c873cf2de79fc4e9285107e71e6f270dc503d65a31500339ef36ab2495f48c19922559ddaa49dd77136dbae940c9e28cb0ec8c6a914cc9229ca294868c9229ce707068e3504e318a89308a514c84535d276d5852896c4929707070987124d73ab2244fbd1347d2e5a977706e7470c487f29445920f7b67255728d40a955deee98d4bc4e0c2cf9b799cb0b2c4ee388cc3388cc3ab8c57bc7ae9dc16a365208c699a031b4db5a3c9880d252b55abb5384dba8479478192bddac90636603700e215f67de3167f93c425638ce0d9a3611628035bb2a4120e07967ad82b545b8183d338d21b25b52a63b8edd5416820e020a6c62710838b31610d1b97699ec9a7e1fd76b55bb1ba45cda19ec34e9689222346b7e290b4a86fb7ea5401a68ea8c4cd92864d0e3b4533820000042314002028100c0784c2219954a829a5fc14800b889e4a74581e49931c874110420619431400c0801920001888b60dd2bdc7c0ca63fbb7082cae1cc64fc1c112fa5803b89d34934ebab626c663edb731291bc4c5b9bcacc47473f53aa5a842403280897ed9fb27bb7999f01cc172118778f06afb5a46695bfafa5bba8e07d0a7b9cce5b8f0aa5aa049b7b874fae50b19727be53c784477f8e152bdf842d6e633f8bf77795cd8c1cff32984ec70daa4bbf96b901f16600f24302617513ab4ddae99770eb062c8294952623ab36d7904fa59cea775a052958fd6bdcca90ef8cd1e2d04323c17bf0649a10aae2472d4172d483688a3cea681bd8c77bcaadd71c796462a4e6c68372a3cc905cae5f101bf20dfb282e88bc2d79e6d058e8bd5d79e12d878b500abd8ce754a0ae43d390cfff939fa0ebfddf92e7ad732a6614c75fe2a39a96214ca66acaa9e9f8952dcc867cb603a120cfc8b527a66934d9b9eb78ddbcaa8ab37dde7425cb6bca0c494b861d219a49b9db003c9ab154828760044a12e2a227ebe7e284ed3d7c6a9d4683f2d480577b9d3d22e1051b76ff5d5e1388999a0694b3179b694dc089472533f6c48d80bc1279bd6bfbe9a642abf7c0548add364a0a0409df8ac19ec036ec0cdabad967bd191da211e75a40ccdf8488e9a34d6616b9e87e56a183a19bb04f5e2c11115383133c42df22f0f96c053900d6248feb9808c467f090844673ddd857fb4c2106a6a0733edcfd40d996b416bd9b27998c70a60f8b12bcf2b56a72548ee2393a5da3645e295039c00d7269e0c4efeb61aa14de76271f52b01e113eb8ef5269e2612307b34e606ba1846c35c00dc175cbcff4dc4010797f094a51d3511aef5ae08787d28e615b445b4f37bcdd5e7f3b0800535292ea300aad08fba52c94a90aa7e20860de6860e5095bea6a1a23b117bd627ae9a4e6f4d759911838f86a0099530715f5c3767b0be5a22c028c538a3f952ce3406ab64c0ec2b3dc6d4d873f48fb24f1f907f920e4fc90477a237b6275a997e61b4cd84045cde333cd053d269d90871db92802e13d0a426b1fff43f20347d46bc7cb0788a6b99c0f80827bd9ed75af9eb6abb2876487144dc8bb96bdf3b047f4907eea31ce8e0551d4178940f682c1668c116c2cdc6ccfd67b586c211b1123c8f882aeacb1b9457ca9f08d1b9efeeeebbf47050edc0cb9f257a80b07020d6910684f0923c60db3e102f7740114a5a3e02f4907f904556837c7a9aa588858b54cd7c1da9ec737b3f15b67446dede0c84cc65277a8ab6a8e70f8aa8bd00bf01de7e4ab665fbedf5d30eff1e83338cd144dc154886626cd48d2ccf98bc63682c963928eb79565b24bee1f721c518ae8386a3ce7d65773047750779fb7a74207a9688d88b30571a7596f3e2c59686376a8a577aed6c4e2a2d8eecd74fb44f6a648f9b8103a62d0c5079208038810d73a29341f8d70196674f8c6038e32ef1880db03552a06c5cd980bee60638ab4a791600dac8489d8d22ac4359acf3e7676c118a40cd05e04beb8e59e41c65a2eb9ba1a46f5e231db3e9981725476aec91afd1ef2ecf794383ed81dce189800e5a37f77d20c673fa3b2d718d98b5df39e1ebdb582057810c2158aaa788772841b61b44ea3dae498c7a2feadc166975323a6c08f20e89d7c80674c3745e1bd692981afa7f1582245b056d5e6f4eb2b7c8158d05e23f963311e1a4b4b7126739ba557898b493d4618c632ccdced08e5925ae131dbeddd293f9ae13b5d5fec7d194228b70f051fe154a322730ea478af6ff0a1f8a387304756031476878578d46cecca14ade39c553d12872701b8434d9a161155259302e06840b08be1676b2ef160494cc170c3e8dcb9fe99216e3e86b98e500824b207ee171d609b1a325ae4d855ce73107caa33ddd4866d6630aa03ad8ecbdfaee6e8e125bc9398246e715b433d76bfd25bed662c06683c32cbd28cb382ea1abb86c9557f598e03db672244e251ab4d1f87ae99622d36b190d1b420a74f3d335ded72000e47766a12f549006327fda9e255d665a05c4be8cd6cc1c81725670cd460880682f1942de020d261e17143e2e1d6649470ab1918fba7023de98b5fdf35388226488c00f9ba702760474eee0c15e90f9d4df8d2184605ac42554ba73c40d4752559edd0fa10d090e06cbb2f5ba24758373f2788304a2fde350a1bccdcbfa2896748f95759eec40b5c0e7760a80b6d51788bbb48e859e124f0a67e86b150b0d022412f70bc30f48f042c6e1568095eab02f3d5a4250483582999a0e734843e1cc86a9e405407a555a00362136fd2f48d0a1d77ab1fbddf5e767424f0611a39420c532ea230c9206f7d8e5a593cb4cbe1c8e95c7c5fd97846e1a9b70babab394b1f183360b76dbbb24c9705c876565cb818bddd44ad6dc3f402f81803330752a532f835b1bbd18e34b60b0118e839f8e90f44a25bc09483a350d1b965d749cc5af18ecae5040c395ca620146300689e01052cbcf55212e6fc0330c624cde708688009d3020de1cbfe0dcd4ac45a46e40383f50c19c19debef600dcb1283435c0c93e7b4c7e9ad41fa629a4271c09a8b4ea3fd9c5185ce3d9db6efcaa9c6048075a4ed393e052c4189a6e6026a8117b44a0ecf54bc9738b9839827e0abdb3349b8c39e2b986aa44519c1ef781f9e5615b673c112234bc766f244d51a939da8141da08c9ea8da1d158230a8f318e5c682273f6ba394d30482af23273f143f6740fc5884cccbfe9fb01c444131495c2bf6d187936f638a392127bcf6b68f28419e1d093a1afb0c9fc518121c4c703ec961e2235e396bab728f9746ea9d20c31f660a83d36c5a79b0e27b5820ec8831530167683f15ec608a7a6aa9c00ecb882470d8ec909970672688faae8ec706b2ad0564b3b4620487f525565f9320cd953dc0169296c10c5560c63cc748cd0a8b0e3a7cefcccf73214a69cc08c3f73213f6ced79232dda244d6081b379eb66d421e9102331441547d8d58246eb7eb96e46587507458f32fb56a97321a458d3ce88e0b279915439221ba5aa51d4da9470d077ce0058d1ce4490443f900697d7228867f31d135cc486f46c36eabe5c6e8283b6253c451034e9b99030d8e627990e6959dc38631d79dcac3141048a57113eae80227ce3cd527b582527db238656c6c07f151fb93b3ef2f606b6a777efb2a4263d89222c2436d58ae942a98165187b442ab09aa37d4fb090013e3aa60fe8f0705ceb829ccb1ad6e48dea3120e11ba2b5e8a32d50da800f33919907312093404e56d387f597dc62556f70872bdf712c9aa1bdc02882cac679f4d524b1061a07e892567b71a8d0d91eb7627e9cbb6bb9b2568bf192b09021ab2e3c0ece90a2e242e40fd2df5a4d4a91326e6a8686388b65d5492d4412cc634c6ab9eb565828dc7c8d32e76749c4c1fbc8858d3847c50d2ce27705ea566b41c485164ad91cb3d4c74327b4fe2a817dcd51407e8be23b11959f9aff06eb73033a7ee1824152e8e3670552eec0085bacb7fc53673867959090a73bee684c5ee826dea9eff0550ae141db71bc522a9a53ade3a6762b69d1513ee9a3c89cc28285687b9b28404cace27a29381127b5d94c3a2341e5012f1469db9e89aa4e588ec51ce3dfceb590396d09f02a47faea91dd72a4c49d7c701e28430eab5febc1fbaf78e3e34e870d21f10c6b8789e3401e22f82ae4a792e27e47f29cc9c45113b3772dfef7ff7bb4553de622345ca1d7c68d66ac899d2c52ca4d765a8a186f98950d66cc98ce0d74a3a2c88f291c78d525357994417132127892b21215f2bdaa14d7a3f3fd8cd51693e6d1c489f09aeed1a32f2d3434377a7c692133bf726657d0786c588ee9cf594bd781c0a3434c782830e1b5f871a235853e1f53bc362124bf7356cd0e3d2f26b01ac60f031c12a260ade4e751f1608bdceed3bedb1a435a7ba0ffd95e58c1157257a5ec31c3d4ac656456483157a1e59a0a9c06c49fb282d6e69e684207700d02baf51b428f3bc1cdf1ea47fb35f472969bebd0a98b7992ee0fac2b02eeeb11f691e97f09c6fdc283f61b46d02251f5b50885c9b1f7d0ada0478a77a7b3bc6f8beaea38d2bef17ee39eec214d505a73f7538bc2f5f387688d837e0d5e6fec127e7bf1b22c5ad32fb82c4e5c25fb08af1c81d14b17f8e67bb1af05fa28ff4b930956f482424084cb0af76619ad8274a7047d2d842a737366b3cd0f6aff3e3c0f32f8bda7acf867b0ab63416b45d7528882ee13627dc794372ca1c40807556451f95039172cc308d3aa187237d7d8397a972bf58efc572a10bc2b5ad402f394b434c09f17e93bef5c95100da5dcf38ab920934897b50cc309e39c6acf44bb2e1471870852d0937fd4b7da6c5e500136e438aba157b01936d1c2a22f2174039fb851e86c9836952d3a568c8ca3bb3cb3868719cbd120680af37eae75dc97686610cbf9ae26dbe8911e30028b6c161085c680c92bc1e466f18d7300f12d6c1049750b2c40c043ef5988aca1aac33f49cd9ee3cd166728d75d94c5198f8908dd697dd4476f6022cfc5645bd8563283e2f7fa4fb3104ff3a0f8db523d5d427023c9a98d05153fb9aae447bae151b89c1f96e0307b17fac81b04718628e00c62414e582f89e5599c72afd2ab04beacd902d7d9313783367bb9359598062dbc4cf413c3172f1dd23f2218a8567bba4c0e759d6608bd9adb5e53dc2859b12a873c5dcf2113be69bc9a70cc7a84ad733b8e254a9201a6e48d0cd370446f5eac1da9d0288b92f043219ed0b3be025db393109f4a9ce6869d28c0de621b89e0206df7182d06bfc7184bc990c204a957384f480c63fd3bde32d3c41b4abcbdb1f78ff2f086d4ef0d0a6c7ab7657703b9a19f0079ac32b54190692966ba0d7b0432522acce19c8e9599fbe1382b5ea5750f6a0998e5ae58b3e28005221cabe8e7af46d5989465e7b293bc7c673a06e0240631612a56cbe40d0b03355e53904abee424efb4c8bf899eef5bd9c0b3cba10a8b899ea37334b109be0b901b7cfc04b2627a697fdec2a774f917a5c4c5d2b52e4ae2f7e99b59cc6a2f9edd1a1ba13209ea1fa39872196ccc0cc042e6bb1da99150628440866359758a816414cb008a25dd27a65d5893d789db2c467a7aa9b261f645636e054b5937345ae476a6c29717c0f62281688fd71d238ec8297ddb0b6defffa91df7d82b4c73397f34299cb721dd2610ea9e723889dfa2486f441d5682f5ee267287ac54c4c48b35cefacf610369b7647f5744a1457d2f8a5c6611b9f3a3a31a61c2953a802a8c40a7ca8899ff28926e66174d9bf989f7ed227f37bfd996de63e8ed1762d31796190d084ac43bb4042c1ecfc9cd2912972584093987316368c625a141e8fce3a87b7be819efb6281fe5534a24d90423beb900ed875d091b3044dc9d77299af64e4f3ce6f88d37ee515b64ce9ab0091465bc2c1d7404cecb0cc6284ff645311a72573ad6ca26bfffb686f8100f9d79bd7c4b19ce721c8ad164b3753a153934b744df504185ff8688a38afaab037f9753c6ffcafbb18f7d538c6546da1a0759336939f2d86fa1b8f6ca65e928a0d8d4619675658af16d05686a99b6353f7b10b3e59799eb1c06d94f73701eed1b2bfb6233a3b28112c1f5e48300735972dc68927cb01665b7b40fc720cd0682c409b6f65bffee9da8cde7d988c256508cdb06809570c5fbdf66b752aa0d1cc9d563a647961a484bb141d02a7fafc43f4f7839b546b9c10e6ca9268c8c8080607610f96983815f73f1c0c448e112b87f93efebefd9fb65bc94bd46e7e06e0b4291fda90b941bc19f133b3b655ca58493a313d34ac3fd1780491fce246ae2dd503b446b987f5a52531c9057c9fed294ac5a4ccc7ac80219bf379dd738b345a800743f28829b5bc1ed18cb76947525a77463deb146027c7d9d63d5d6cfa42d17f21b512a477a30060676328cdaa76cb3d7e9c7ccacac496ea48c485c83f7c4d64847d4c4864f924aa58014e2c9e15f2e3b792987877e1f833f85467bde6ab0ecf632c6dbd6568c4afd70db9a9c68295bd829fbfc3d7aabf0cf268c80b7b6bcea3c3ead9f448dfcf848c307e4ec33a8f91cc44864e366d9474957a8f40ff3165db7b90099fe73965bd93b496f2f1ed53c275eaeb24e355540ddb3faabf1287b86afbe642e22ff67136fb9984ba6454dc68e8544b9722ed4565486fae7aaec5d92b1a7e77140e70bb08c587337ee8ce4bca72307be9a9d8febba1f628ca484d7a520cb4fe33e781a3291fa3d0eb3c92e88a6862ac1c6b299f404779457066d5e447b9dd1f9fc868d385520399aa112642b5e430e141f4919a470d24a60a8e1322cb8f797a597c2399045602e32ed7874f00f9748d69dfe4ba736536ac5f367760a5084e549af18068636d08ca990dc1dc9da753bc3736425cebc72819fe48eb731e8317f8c9a40f033c451b55e6f0764c1efa2771c7a89e2e362e663ce5cd0bb30e69b622a3612837901ad97b4f0a62c95017df0bf0a850c774a325d433a77ecaaaad317d6a5402f2d2f6eea6a32192b651b81f4742105294cdac246dce154e3a9abe3d9e48a76ab8be602485c5e1236c6c6a97ef6b50636d6ec6ac611254eac31b4c73e0f8fd0ab5c557e869f67e1fc2f4b85b0cef8b602799cb69916d77bb4159dbc61172f9a061d77440a9885bf50af8470392323b605199cbc6edbd375d20656d992035a4129e601ea144e4fd4880f798709535eb5ce08e4868902d6d98172e4aac62fe050cf6cc5c457b1ad708c6023c13a41902a40c0439553f8989c53fe9592c041e1d7a50389171807498582a43e53b0df214bde1f05c4becc1af9a9aada93445aef14604a0c0bda80d41944196704ea92d82661c8b996103ad831c0bd915191e015236a44939948dea3dfd37881536b34827639470ea7b7dc9da7b4a5487a0faf5b931b65df4210ae1f21a0ab83d1d92f5cb61745267abcfe6c5f5aea1b9a37f0f9cd4781ea89cd60f5696ba4a49e39f9f217c597379a891a0c3c55b0f26a9faec62ca4b5d1d5ad7376c1daa646b5c080b843199ae7bd2fde063a428308b91b8d9688e5cbbecb6e9ab17ccdd2d79de2e35663987724c942175760e88e3c931248045daebf7834aa31c860baaa12841e3603ae2f9a365117fe8ab41d3447e463d0583002bfbea4c3f99dc210180d30fcd95d69ae71d6d441bccc2ad34cdfa08a2449a2b8348891213d1b2978f51ea7eef4c3ec132478f93ae7101a810b18e54da6f78edf6e0d7bb066171a23430d87c11c05d87f1d1e0896409b5e9e74434b4812e58f5646f16405cb8583ee8b4fa8aa8200f557e2b29831aeba78a61a48015441110539f6eff33c84918ebb13d48959b522e28d19768b2af1f64707408a19de6b1217213920c8c16b3bc9e18acf92613faea31e070a3ce2a15da80490091876429ad6676eec98d6200f597b4222f2364f3864efb3a61629aed66acab9b1f113e867a86a6ad59c5d10eace3289fd5d092df54ea1591c0420371fb7bdd3db54a295575276ac31a79f25ca7b5b03955d5ca55a1b95e3b5725fbff0da2749ca59d9568f1b03d08aed7898a77cb9d060af21bff5ba7ee527b6f30ceb7d1bf067d9a80ae2fd18e013d80cbd223078418536e2caa28af412cfd758740c680d2e64acbd7282deb3661aa8a5fcacebcfa1724ce472db52e4c22c9061709d98355507858a0e94c0ae36be4ea945d21a98dfb35e09785199d155dd011fda6a53262376a4c65c8b5ff07873f67fe641533950300a4d9395fa9c4cab7bf5318b29bdabd117f4488328388ec6bb7e48258d7e22dbc2139bddcb2cf05586d3e9a93225286aaa3c59189e931b38cb635ab8a36c1ad89ac810d413c685da871e30d483e781c9163c36d8e19b9ca0bc1da14b7520c6f4020455feee3aa0bd35a5b181a776cc81dec233c1ec068dc13cc0d21a0b31051e9ab73d8c5f7dd5918ff0c39163f7e1e256c731b42473f516e74bfbca47ea0299c8c67b045d130440e90e34fd33968627a67c503a55c287f48e7a4f1359df3d5989df73c2c1ad10de5140a310cefe42d45c9823f7b7684477d8401e650b96a8db670685d38977c86c0a3a32c029de874a536105f28ecfb5e6d1a19a88cf3a1f7d992d07729c81b08f4fa6db95331df04b965483f3c54cbe4158ba7dbaad62ce4a1af4bb2e8971c38dff948c18d3abaf54b49b46c3042ede60a51d5f8aef3879e1a886bb382a48665ceb3f35018278b834c608b3185cb4fa76c3468bcd00f75b0b7aca5e588681c68393520e2c85534d1310a3d262c3293777c6ebb836e9e508a37f7acea57b3de41029fa97b764508854eea910f66fdd595482aa1cd0156e05ce135dd56f68511cb03f5684057e5419894a67a89c2e626aac46fa1d49c9fb5618149a36acd5bba2a2c570207c331d2a9bc9153dd97a59d087c431ba33288a864c6ed2756e14d316e8610f9d56db80185f858d2f2790be89d0da44d82556d0bd7597d5a0c14d5cdb6df57dc46afb253d66e024a46b7c4393e237b7a77ac143bb79881db0c8fdfd38f09806bb581c7c8e86759f5347eb4e8372159b74af1ad87f0828973e9034a3aef5973275a64a896383e0abfde79200210978c13ee6b2afefc3c64d1ee1956526982090db783895de2ea79f30d677c567a6098f8a0240418c27e2d84ce42faa1209996524efc1826f36afb4ee31feab10b31d7e96410f9244c85391b289529bee098b8027f5c5c9a7e027650c6abca970a56ceeeeed7b718320f41f972f93f454f1ac32e5c460dc16ab68c51252c45085326985c3621861ac05bdce76dc3a649c2e23e5858d6185c4b85351867e5c4995d64f9c0eaed78ead9073cecfc3d11c45e229040353545a5d2a61b0d30c39ed507a3394e80b4f0e119624c169b00985381d6b1172ad9297b9b244423dd656288c2da6c0763aa37085926b1b9af9220541a30b949cb6525302c5f3b0d56a088e0ba5c5cd5701212378253c79c7117054ae221b1b36de8dd881d89a44d49059500d2853832cfb1e6aec7b426e60afd01bcd1e09d4658cd835462d551b076ad6721a2148d48c3e14b987e330acb16c2a25c5febb6c374cee74935b5c27ec6f8ee037ce3ce5ec2530986335241097344f5f651db8e2cd957294f74a3d318ab6a09e412bbe3cfb8bf6ba9f5b41db8d42a041a3b3deaa9b7f78e0aa68108eed1d5123ee3f72709e95ca55834fdf0c44b6e8aa98989d10aa731ab10342d6eebc7c6321a8ebedee169be873c9167200d9456a6548ad3b2956141eb530b4ac2f1c4abc6de0a9534ab193ab390206653ed89ab64e0fa229deeed3151564ac1b263d08181426fc101ba740307dc27c5ec34e4c61331315e7c49d2ac1e823103f4ea484d86cef6127a475d2bdd4c4cb41f6c7cc1d4bfa6c311c992f8d2d51a7dc4866194093ea272cb26121cc1523b9bbcf6381b78770f968d8052db995ba6ad41e47f42651dbac03c6cb1dd3ebf4c055fbd9f3adaacb12664e65d07cbecb92de25ab88c48b53ad90355fcc770623ef4bb8a72aba4b9f73c8a104d877c643631f7133da0c332ddc963a1b41ce0e228d08d640db064a3013d132ea27790194ac70593651046eba9ed7acae49aa18bb07e387ef9330e4de713d22e7587570a02c7bfb37016ba79b982eabc6008a674410aefae64e96c37d86e12131e6ae148f307a44d4cf3875900d954016a9bac83a8ec4e5638f6453887c9fbc4aa53e527d6dfe25b98a6e1f6b313d3a8ba13a42fb762b4ac1145c1d9297651766da169547ed570b0f435b3854c9ed26da8c468e55dc60b0d9a7e38f90848521610c6f94b21d434fe2bbe8751c3501d3f66e5ffd7232ecfd537724d7f8f28a7e8641420ff6c912e594b4ba5316540a64b8a0d78a6204c85f9c6a16e909ed2e06001d1cca5364061ad3ad35935fa78493aff97563cac9008e42dda4e6657cce3c8089f74455ace83fcb696a74039d82f79289eefc4a4dabcd2860219863ac1e70f250e308e3a718788223a4b65b41e58060b0ed6f5040e3902936df8a127c929e74a05a783c39864c3f06fdd87956eee7070adadbb95fa7afe618773f21a2650ee89e774e5240f80834f778c6454e7a754fc7e6a65aa1517ff21ba8516c5757cda10ecbc0b3db19d009024d1c50cb6e703b62b3990ca3eea4f5002617e96f976dda4b5ff73273a4929c53a73892b6af489d27ea2db0c934dda3ca80d17fe183636f8e73ee1050fe1785e1bf37040355a3fd1900ad37cc13842b9e4cf4c1414ff61cd93a88b36e6065eba05e4900bf0f3570a4ee23f310962b35b63283cad32c1ef73b88b64d4cdcf6494e382c0b915ca2954f16dcf10424986d8286aff1c03bf24b2482e76b099de2cf2ecf2085c146bf5b3ac08fd8b4a2ee187573960f8d9c12fe468e23ae500c79ebfb178b4bc78f07e6534bf490f080ddf078ee82173355c0782732e67e844411128452181171f963f4684dd61fe13424ab9d6a75c1c4a3301c54be40bcf1defd372af141d1ab096072e9ab92a0a8ec8a9b6807727f9e7aa75497933c6ca081a66d999e8c1962e8329ecf7a2030f54cf0104ca8889999b5ab772a03f46862a2a98b7eac8643eaadbb14eaab75f0f962c6a5b468bcdbd466975e5f3a41dbeda30d42a6159058f072bf051c2a29028df0947d673b3e5c4398878a2ac429dc87490c9abca4a794c9bbb195bd44684b9fbee237ed2dfd971f704fdabccbe6c0c0545f83a515c0f05a7a617b9555279a2376630e0dd481b90b3c233523cbe9d669f42760f90893d7c1ef4908b0fcf57816c85193e83868368372552759b86f64c02579db32ea95796dd10f260d2c53a05c6b33474dc862f9d2d7e8c6accf4850e388e3bd804685bb2d5420f4edc8aaca10d8a64f27049c11ef0c04c9136195964319cf47e6e1fbc76c3a687e80a5332145d2219eb9a516c85248c08544e3a6540f84b83ab30e0e3025626ce9fb3b854a7e1cfe6c5c9be8d34018483d64a025aba410e3e31f4a5f98d864f13ebb0f8456ca613ae1b53cbc326e9b2fcb0236efe5ce79a52bfb16cdf06373871f3352348d15df8be8dd23aa8e8bcc245a1b19bf1638609d2a1f64651d5a1cbc1ee68a504c0d7770b1ba43eb018fbb00139b66ce2996782feeaa366ade084c72827ad02a659b30979a074aade010a7edd60fc2b45c6c74396d63b93618769e83711ac1ff69281d58c18449e31085858703c1f750ebc602d517acaf01c3af63add65c02a88b4924ab70a69383f1f71a10cd485bc088a188710900efbd2c85d47694693fccf214078269bfc6fea300c61bb49e759da177d737b10fd70d878a3d80b820b42ca860de5a01a0b61d1d034aeb41a5cdec899b69eebff562905a6b2a9cc0ccb61c2dd9a6acd798ec632052f27e8cc619914b4e4250bd490d0391c3b7d944754d3b500f341bc1d24545e22d1f59249829ad8b61e28ea48256062968e3c24709a9e66854603a187ac90a820fa8e3cafa582af4b147cb2a9dce2801a0e6f2b30ac499a460899b8b3d5d83ecb58d6112179dd8cadfa9b1df581f20062c5a8bca67dc0113a5f67d4a4e0d756664401e4e6768ef0d9014ef12dccee2b863c7e688ddd16cfe56e86e89d9ce6cd3abcf8fd267cfe6c962741fe6e5101b584eec248975920132893b3e362b06e6f8c84bb4df6f7ce4ac8a5c453b6ba36fefa9817632fb6d3cc10df46ca0ee883760c154494814d0d6a932a9e51862e410f1a5718b54795b335e668adb5b91d3e3025395520df697c08e3d5d094347d00c2973aa016ac386ceb8a34f2bac108718c4e15bed2228033875a919368257f3584fc4e1539871d25e6e36b905763570f3f398a1df4528d463262653720675487b505f5ed44ef7471ffa0b1a066399a6718ad64c5a3232c8ce631dab02c6fc27c58a8124791354b299120517c23cd9193a191a3e46e542ae5c7db8a1825a7d684c17be6b52162115a0d6ad85bc842676f0e9338c2b20279c23936c00b06b828337efd0a09401752f5e3eae289cabae7c16dd1351e279e06745cdc1812400bd2289931688a838794b3189db9890f131a132ad91ce5b0c3073b4da6132b08ac352c92624f73cb87e0ee08391c78a7e66cb6639f08d83a13ada73955af3d60f60fdc55d85e5630e66e4271635d0083fd2145d0f3a4abdfed48f64fab1ddf40f2e895a41274e992e8824ef33e8ca557942f9fcfe4d4f6fda246e2e0be7fec7f206d0cfb8d80a7edbd58b6b87a146e3a34b4756be4294d375659debf7b0742a2c9cfab70d29b8d9f60d73149244e984cd0270399b406e4fd46dd996ea8dbe9d70672b9dba96c576087ec925563ab492499891668a17f4c6601c10c3eee96b6577ca8ccf062c35cde711e6718748a9295399d97052d307909f216112d0065647bc0121fab842a5b3c85f9f77aee8118936523bd8481aab2710604e4edf4ecd89bf88d58fce24914138527c669b1868c11844654701c43942a8b64626b107b585a6055cc515a42565887bb1e7e0040ad43c29c3f60738eb2c1cde6429708568bb8118fad8c41e84d769e4d5891c4681b7549fa764f5c92c53d022675fae6b6ad65dc6d6c2998ae0c5812f328697f58a5313aa27ccfb2748df3a997e252d8daa6923c981f34158b754a8cc72c0a4b8b647a1bd7d632fce3b87fb48df02b61b84fbc7138066b8a45e1c04b8fd9479997e142110a9c56d67b0eb2cde9b03e6ece1f24cb8a86e9ba5f0de58370fc9ad68d089a7592219c78f2186873b601fa2254102e9431775dcee48946524214ab15793ba409d3935327cf266882eb60e1715684c8bb302afdc34265729a16f1297195f5ad3770b5d26b62b0dc67815982c1486f1ecbb2080e38d453741025c2d6e33d8ccfe4c6b550db93c3b7207c4428feb84f5c08654e33e3774dbe7402be84da28017e0ca1fa8ca79a1fca189cff239f522dc273274cd237b386d784670726f9c3534cd46b53e340e092df6b0a96ca6da249104265b434f3a7736ce2060884b26af1f45a62f69c4dd6799a4c84fe7e0a4628b9086f28b6e06db41a0f517014eb128c25f2b14c582cf899f843a551e28398a53a23c6c79c999bac5df188c230265da834afa44e7baa12d5d65a89f9b5e933f175cc99bcacbf50e30df5ff95ee0307f5391bd46d519d7cd9b74167e2585855411f3ea07a8b40bf84e0c7c6220784de84e8570b46c2a4e70a98f1a8c5845bdd848eb5380624dbac135a0ef4a2a8551618226cb327a370325b2c526bd5611d0b8dcf34a0b472223fe99004a222fcb23f224d3ad54e78a6fee6e88f3b18cf6c94b96d87423da39fbe33c8ad7fa5c2c9fdf0d637d75c67b890b46ab9c3d6b823d697023f2655add351e02189a1e88c6dc4c64880bf22d99cee88635a0e8a4b37befe32726ab0773b49d1845530223b111162e8d9ce0429c25093de9e664d46e8875a5144ac9f6594917df57de18832300813545d2ab56d66a4cfce9de9c7bbda794b303a95de0b52914ef0b175c4f87197c5579168a0ab86611e7948660a4345350e953f540239c2c3574a0ecedf33c70ba1c43ae40b82d04f0b4c0e0be1c5f903fa9034e4cda5f2b9dcd20e01501ab3b8ff6805964d47f55ce1babae5051e37bd4f34d40b013291a28377f0f4d34d9cda1d7060539cef733a19b1890c2eac2fa32da83b2e940f90506a259cfb16bd6ba25fa4fb1fecc19de567cf6f5c7b178103dcbc909fe20daf873d6f1e309d51854ec8478b33d1d55dc90847dc1279447a996cd4c294eb91e3d0c9fbfb4d4706406cc0ebe7ea614aa99edfd933de00d196677e8c4945d000fb426bb6129c28f2c3b4b9a673e806147c2a5cb852d31b66ac6aa5f0af9459f3fbc15b1e665e675815f9c141b45d63dc9566a85efe054b67dbc8a20d0915a3324915ded217848b7a09e45a9adb97689aad74da09aa6417e39851f35ac14afe842672c86966a2bd8c8de304c27a3c33fdd1fe3dfb39559f24ba0bb0ce35e475384e96359940e3f4d34d59198775f1d93978b5578ae03d66e4084661bf12a321808e9e300131ca5e90a5a1f7db251c3c917003a5dd81bf2c5d7cbddc7508f8bea0683d174c6f948105adf98b14866dea0f06cf9a7214375e5976ea2d5731e07f80036a48f57b84857ccfebc1788d82f19fff0321015aea99f4db9c5426ce2c6c1b44630ac27681593cf278e2d16b9f92c484fde970d25b3248b2a9530a9faf7cf51eab266ecaaa918c4142137e78889a2a3466f8c0e54544224e92e6cf8eecf7f6bb8cb8bfd4dd8b193520ea5b398200fceadadb94e6b41bff582aa33ce25b251edec62d8d28c6b9d88091132822a51314ab9fccbf421df874cdc73d5ceca303a6c20c1cd6c175918001767656f9ac1e03e4b4e305906a82201183d7cafd1fa2fb288abafdd641f3de594b9eb349dbfc5a8dec444bc3be1e3bf2528bc093b9fad9c761870e96f7da82a3273f8231e58693ff18b0c5c4af011bf692746c8efdb7a2a6cba42345d1cfcd37bd3e5a2ecaf538093affe2cb8cb854da0d60dc2d8b8bd6533baa02d8f5849a085f2b02d324e10a0bd7adec21aef4d82b958f15bb46e2f798c31160fd933cc067631312adcb5d4fc75e1cf60d2254080298a052118813f7aa6c34354ba035a5afaf97d1ffc0cff627cb6a051160ee8d186df47cc0e7d6bc76c25d93ac7d26b86e983b60ae432c885047ed2d513ac9d6a39d3fa54f64007ab81bcc34a56c6633f6c33acfb7d38a895639ae373f705c734e9597a5deb16970b989534452770a54a06001442f532c3e5b5664afc9fbf41e12b67b4bcb2a628693579cb3df4ce055ad611884b8a2e3825e875485202e2b1380d25c427f296a8ebc25e701fe6e5fab82ea2609ed169c614890fe722266204a5bf29d2491a7969a6aa261104756af620cf3dd100cdbca6ae1878b76e853984cb8d4dc2c71a20cb4c9c63d7893fffd6b0e9d21b8454fb89c1d8c9e0ff9eda2ab2dcd281feea370a01e4c53f54ec980fd37eec616cce963982014d15cb223d1740af97644aa2c0d9798daafa819324e2540461c660d66fad32fbeb69e85c6d416ced559850d66db526b72d488665466569d9cd01b110d7310201925c09ac889a35e8e20fc06453175a6b6a19f130a08bdda21575b486a73b206528e7664b6a1d15ac4c90780d98918a9f20222f83ec8ebab30b3fbf95b24c439b8092f171872b6ba7d18cd216ecc458319c41d1b7020d7bda984e257378d3a2d05ea84ec3b40e04ef2c990dcfd192d7dbe8c73404025b427be3a46495201bc62be2ea6f36a2a28e91f260ab775f81a9826cb4f50a696b32f4b7e11cc4b1e20106772c7fee19fa5c1005c2e8e3c5b9cac101773e5992d910b83c0a02f6bb7c3555482b0c4313d50dbb9e4004a6a8caf008ac06145aeb18b1cc83646216acea0694c81e48b08a75b91bb6b1b3dc75d47304487aacacc1caf087a5546d8b11e9e7641d0e7455d88de0001b9e1fbd72051e6dec6b0138540b25610b3c462b2987de7521d1a3e5094e3aea20c6ff347b3500400389678858620b2f671fc856b2513cd4a2326333e5dda00408f639480fbc29725a33e0304ae29a9b9b1114f60943c73632868b0fdc5c625296c74c66b3b67e6f44c99169d1dca8253dc252bb5fe28e9b08c66178a03311ef5bd2ab1efbf63f700916699f2658939c4b80aebc93e7e4f8ad17b69e04c3d4701d65d543e5e0980683da37f29c6e4d0651e7fc4b13114ad6f6a03891b6816cb882b5212d4f2c46113b9b72741c3787e1ae211390d31f0a1c15fa04b6d2dfd3dafef38331dbcf367384174c333da9d810026e7e354c8847da19f1d5c61456db57dda6a6be50e490a32a3aec945d5423fac872688485a8344bbb59df45ccc51f7c01a154c1c39d4f48f5b7d900d24bccaf6eb34fc0efc5f5778787dcd8f0158a6195e179630e280d9e1f69d88a1b8d48025258762e6761aa6bd20a12d3d0c1cf38c5038b05dc137b85b4bf2bd0e756f89d8831a2a0374f0f75a83bb338144b1b7890a1fbcc62c72389780e89c99c09cd536bda59b7a6e8b2095b15360013339531252664b395a56d2b0720f9ff0b720f1072b8e41e981889e2989ef8b395390ce4616711d4c010e6fe885214eebc7bd308dcba48075cbcd135d0076f488811a083a72b861807232ca863f41c8c2d7e3d80aaed653066fd3ea58d4e34b5856bcf5ec40fe22fa857fa44eaa36559eaa9f5d7f3779ea5d88107db9597fed124a775ad9c8dc82c15a349b619fa6b84db7b0be482fd1de8f77e614bed0640348f1b9b12b6ec371f402d73c6bf0356bc252d4519b4f196dc7bf7e554b7f9edd0f6f404536f213a1d65742adf2824669ad013af8b05cd5d91215e374b63956e0a2dc3743349e55374b90349be2920abd36587a90668f8482c3ff2852b8037664aa4a4c00cba178225fec96f196e1bcd644ba1c2ed9a89125394a48f30bc85b9e94ca68a65c23340137ca00f9db3de1a34bf65591f53f867acc5cabd401102b130436a5a3577af1172be994cebc57542938d5b5d720c33a10f4792e59a797802737bfcade3c3d9e9df1071d18fde1b75d7236cd84c5884dd89fa71f77d0529844a3d336bf6a3c16c6a464568bc54fbcb6d0f10401f32482a4d60b0a14db8657430308a5deb49db65654d4b2ab670c552216ce95672ba42bb66c6e6aa0d93953602c6a40b017ced698f5bef60bed481cf37718d93c8b0249a937dec76b3d59ab3e3f212ca7f665ee1d234ea115ae456e935c8ff7d69bfe5ac49e5b805c88357229419df1efcd1309a37697edb195605a4e613f5d011a9c571c06eb649e2cdc16fea3cbaaa0727ff7a24d8ea95eda307780aee7e863044bd645d2d4c1531c2aaf6942495425c0abe967284221fb928815efc7feef21883f11fdf054e295a2a0bfdca3dd6d23a8dd7ff9c9091b3daaac0e403e5ea936e1149a13e11edd0e112b97e4e32ead45ec73b35b5cba121d86cfeeff114083aa729779db439e565f29778defae1345e165ff880f27a6ca8d5a7e735282d1177a98d3adfc2788cf7f539e3d462cca4975ad2bb6cb866441646b1be47f6a685aea866897380b1294d82bf4c30c2f39ef23902bdc76e62fa20d6d3cd54e107e2857ca14ca0ac5c470324ff23fd69fb7927bcbf27c93a3e898711a50e1d994239efabe4d520f009ee75dbfbc14ed40c1a5432305f0b0ac3f81a90950af01b47a7de033c7632c82d93e68240145b54b2249535c4e8091b5267b45788d808c16213a42d6e8aba833edf1d226928f640e119de89c468d67de76df157704a2bbb6696dbfc633a67fe8edb81ab50bd603b1f72bf853320b4aebed72b0164e7e906585e4bbe45578729a4324bcfa94cdf3d7dba610bc48b68a46e8b42b5d2404574389a065a59c461427d16552243432509844aba94b66885e163ff30e640db589293946cf8aa1946f9c2e773d3314ede635492fcf699d3ed7c746d5bb3de8b3b48e93ed8960b8b3ad552eba0ee79b44dc73d321de9c2544171bab6166859ed1ee41524d34f154125a8b09717cbd303555e038eb41d2028afd04ef884241da206eaccc581032d94873078d5c328155ee823215b03e9df13fc9bddd213697baa75a229cf018c523f1bada97ba8a83dd3eda64a84a9a21b22469a3f5d261c097b8dc86079ebd78e57b2ab9fb4a97c94c191f90003afd93e2b2fe984ea8688ef4cd1bc6b6286e37953f8f5224477c73eb624c33243e599648b6bfe157f8cb19be2405e4fc65962a1fb1e9621f0f03556b7954e4cc5e9632e7d906a3acfce25a6d30c91344e85d5badc0ac2a027887bb98c5e90bbeae41b08be49cfd05002f1be29853afd9d2f282ea76401a101578026fdc031f58d83209279670418217fb38a5c44064af15161a129532825bd7e5e2e2f701a1e08d8c2ef34b4541acc499dacfa20321b6b427a85f8f97a106005c9ef81f1e3e0c86bf08a00e6438d1901dad37cdb7f694bce2c6e693cf52e0b0cd7ffc8319f9d7ffcc2b8d8acc467cca301180f794e4662d34efe87964186d9faeb57317317f8c8dead45401165c173cbe3e3d7348634a3b86f7c006c180bcde8c17d8715e85bc6d8162afd21d132071b8ef0476273856ddb724a5795dceb96e186f4d4b0fb6bd1358fd3e98c3bff7fd74e9473a5ef28ddfb69662f079037774d96fe7c7f71e582836d8df73f9d53c0eeb43f44b000b712ce7ac05caec26c2c508b3a9f22d004f510a9ed8c63dd78aa9e782093b2c8f89b423acd7e6717ab6fc0e9de28fb4d46f92bf8c3813301db8775e087e01d04ef58c2f8c38bd3f16df050694a16030131dcf4f24ec3edbd002844d07738d6f50f8bb6a6a6acd030b2d52d69d4d2d4a5d03216a1a0c7deab6d6c7dd7427b5da63bef666d98f51d0dddeba3f0213f532db147f86214d235ce1db58095e0a0b91dc7f82c7928259a7dff50663e030972cff51cbfff2efabf61403410689726ec64a6bc39ee26d9ed510bf57e19537390d186ac2bfc0b99f53c8733a587e6b4a113f6f08ab3f52e95f6f56a6c6d605357afc5ee37f817ca2177f30be2440adfbe49fc8cbc32821979df858e38ed2c4baf4275d331e8da9b34447b95849ae882c134f44635f3b26f0081780551dbb612000fb4aeb27db8d27f2b84328f9ee19291457b3da3f3c99e12595d149637d0d28024ad24656a0ddf46a5871c43272b78029b9d587e4e862f8a02c7128a1fc8284e516f00f03d06fdb8c39968ef29198ae72d2d121d507a65b436aa9969e7ab25b10b9ba428942ca82a1ab61c942da4292bd2d298cf49caeb704c1b50d6a0362030f3afc265a3d53976c4fa496cb2b5a955b00849bb1463efbc2f5d1394b0c3e3117d1aeb513393ae988ef67c3c3dccda3adedeec996c32e00bab59c37fd2d8592dda39989a299c0b3d596b783e70b65993ced3d5ad7d5645c1ca003e5aed783ae69cb8a3603d450eab480ea74e016ae2d37c91ba45ddf50649b4fc4b04e04aa54f4388fa8001507b66f9b95fa88d29ec0b275a428525bc4e9142250783391142d3410d6544256c2d756e6fc9694a89322092f6b3dbf91835bd0a213ce48dbea1122f20c0e676ab233926d2cd92a094588628105f00e8a104365662ef3c6059f0f7f3515e40c8a3573c61e52bfa150eb0803c0483e702b3de97221824eebcd8d4ac1d4c43f0f309a6072116c5f6d4d6991b02f50e805e0120a6dec28f09cc86d1882420e105f664a8da500ecb062acb770045a8c1518a344cbaf8d82c7b9c6131bbdb6ec841520188b6145e39bd1b2d9da9ce46cca79ec857a981434c0c3caf5ccfddb2ed1da0b5496f98bbd67b1fbf7601169faa04415ae54fb10a9a2f64f2b672f71dd6c30dfb66d8f237a8f8ad182a07710b61778fbf390e25ec43f41bc718553126a879aba44f35b54eec723b14d3cdf24ffb2c8d41c86e17fb1159fa98c6a0593df4554cf4db48b13a78e2259acb1ed5ede6bf5e1d13c75554e0a6290d637661836052c5b232d896543040db97a6f06cb944ffd3f0ee36cc6f02570e78ba6e57c0429fcca0a482ae4576d2468c631c2869b97224a13294ee7fc0cc2c1b6a59b5812e2f1b0b10ff3184286740464d1a429bf67e25d08ae659e2431df1c3ee01e47f49051c89e2912bbceb18da68082764357381f8b79024a5d5ac22a98c0072a2e84f23e04b4d917db3039ddc14bf19ce22bbf0a17fd046e46983e68d09feca3f552a49bddaad36ab0bed7903fc5fc70fee3c454be3346855f6f47fe9fb90e9863e5437541f64bacfe6c673504ce2c5c132642bfbabcda79ab47064afd5d10fe20361854314cef5169cac93692d4297ff77f35c7e4d71f1f058cd294d22d7373847d8c379a7109805df9db8e0aa5001bebff31ebae5e1c33eaa2c2006fd85d8132f00b6332fd78332e851fbe7e6abca821620126abbfcde6bf87964d06a8dfc8ec0f687738ac0e874199ce0e46d2453387c8973d7aa7403488d9564824712b29759099669381902d57be8ac7aa539c196c2c08f457a7b67c4896bea093722bc2330011fda07e51461ba66300d18473a149981ddf7df2a978228394c6e24a5106b651114ed944aa54898eb8d9c6749e8cb8d6a4123c15efed3022361de766cd2aa245c5fdc8d0be53c3e0a41920a39f1fe14ee16ab659dd6d5038f7a4f10b6d66e11ec641d84a7342a35726a5546a7a1fb78b8edab21e621a3fdf3c3cd20e0dd5b37bc022c5c444b97031b3aecde36dc9b84d9165d94eaefdf3049c352b4cbc02222771b4e97edb3addb220b6ee9e466a8f7c0c6253174082b7ae70590185fb4337a498c5b75a1704c9337892a79a498d997a97ad6942fd10d9c853dfc7fcdebce7c0c00f104800fe90ac77cd7e72ea7d744b7892636cb8b310c7e8552ac90549cd904bc1d33b632840b15ad3a77f40847bf8c56fd254727da0e96d624b1e3c5f265c40fd65d504d922a0f851f397cc937604d62b4c6d52a22ee1f49faf771c2f0f0e54cb1c7aa52e40c9bdfb63fb595d01ea9e5216c331c78887dd7ef302f002e4451a055d2d3cf2437fa2859abc360c122e7e88d81d7e38a24cfc3779e130cd035999a6d84cbb1a234905e6870062df122104966972d038d4db38705225f059c874bf014cec18acfba3fc1ec203cbf75e2a22dd4f4853c9f59b99dd480b6ee8c6461c7e780495201f0e508f4aa5ba2d69db00eabc9d0f439c948ca0c8ae20ec1ed9b350ea47f0c224a47bf940dcdd2420d25a67f7f2d404c8c846bc33c6a144c179966b9e15eae19996b6f3b6f157586802e5161833a6291ea4fefa3e5eca39fe2a8fcf8144defab37028e8c06a52be29612243836e1253e0fb3789018280e579eaee0d92b1e9692d567781e569227fdd027ef8dcbd33b589a57f1bef1b5f59e75257cc7fd6b897a9d204c07fdc5aff84b7440a488953f6a79d7bf87414c3f7a443a17f347c35f64929c90925804719685def96e7889975faea77bc7d46693934272a1e56dc853590065f0ab8bdb86b439de87005f70a3f2c489d2cd86d61e5e8ffb1a52f90784c2c76f7c1ce275780002f2de6afbc1d0b29708a998c507a654d28d501252bfc2542bf9b4f7b5088e29aede0bd3b12e697fb674f3b8c60d065a519281bf7e0edac35fbac30c08088226b316f100e8b3b59d71fb56cb9c81fe0b6c3274b005d62b54c10b457bfb3602dc9b38350c87285adba1b5c9b796d8a6ea043f056cf9560f0d372157291a72391080f5c0ac5d49eeef81ac42773d563e0bbb7ace7d41a1d5053e8b30cc450b25d9df818000fb703da63b14110b1d35b55462eaebd12cd803126360523f5cd7e1ffd9410d3820ca7bbf680ef77ee67b8bcbac5f7e07b04df73c66ab51aa828f367fe5e6a1e38f6ea44a3434c499001bc572b16dace84517c1d747e2ae025dd02a9151bd2554114f58250fbd06904088c625a2c5434f6e3311963d476b151b35984398d4e7196e7caee67570467d8e9ff7477a4f5834b2f8943090766fdfebd2fcf5142a4ce911d68d170bee046c208ce376daa511af60f8e470a3c0f88dbf0bf255cca60a34843938296b31f98f806bcf6887bff960f1a06a383c5b40ffb01d411421e46f16e222b273c702d02657dda814bd6f0b38ed3da2c6954d74358a54e727b63fea8a12658b36becf5cc5d267a86e01099f77c39bac17179e23fed8ad65f3781ffe9022478b38abf6516db58ee434a5f9a7030459220263e989f2ebee9dc516d59ed5dad041557bf425168beebca87d4affe71400d2114e2d44f29df5f520048ce854a3148de55d8b0479e25a685e6483b790ebd09b2d35ca9dc800170db965711ea95eaf61d297e8a3ebbfa1a3e937ad36ca0b044a96147f89044195f93f28b6e9dc9c019d0659977095318332a481abbbd8fb10def0f5414d9f20146b5d75718d827f86b4af9764e11046dabdee7bbc2268467eb1e6c65cbcbf3d62ab8cbf6c42c689d4a2720f4b6b7d0ac8b6174a5aaf7f69bdca8b37bb02c387f4c92df4e9a4ba2fc4cf00ee283d2b7c74e093d8ffc34f8af648b7485dcc91ace72ac507009db5ee64fb79e013d8e7834cc0fdfae5f027e7bec0dbb7de5ad86b294a71a6999d4c19605bdd09e9364aa7a7f272b35d5974a63658322c40b15ddefb3ea45e067c0a698b834c7e3f0733b9fd1c6ec2de17a2671a97948e757d76b093d7fe61ad86542b7cf86026b1bf434d6abf0f6672ef7db7b543ce2ba0a5ba0d5f329fd83e0e6ea27d3bfc09601f92439dacf69daad58642c45ae483e016e3da43d66c276d02f030edaed83a6a9b15f2f152a86411f1c6acaf0cd0638356328a6c45c36704d74ac41a3e76d084b60fe4d643b24bd7190121f64f7614a1bce8d4d834841dbbbdd2f0ddfcd8d5a80772401bf65d9d3a2b7cec603031f2fd225a32dabb8a2b8be54007c4e14e0e99299bea53ac3e3cffb3ec72f1262a839b8d67e3e28c05f5caa3cee516039825fa45c82b0ca1b7139e65710c21dbe13859f76aa07278848aae854542d8a650d64034c18872587320bf970e8e1cef8f240b7fbd9c6ee0f0c26f340b45cbf09e6572c28653025bc2dc7d5fdcd3472412c6de23c106e532f0382d95a057a13223ad202639b974bf0e9c962a4258523e345c42edc9348d630647841ba03f3c54d3a78d13239f18dcaebb6f6eb55d89c520e2ae93a448f88423e10be90575e146cbf5eb63cdfb545f969d42bbdd41c5d849c6766063eaaf37a7363775dc0ed277f25f5c3353abfff951e59c66457538f291ad7d5586bdc70ffa75e0175905cf053e07489f8a2c674f674ac73830ad69d22631e6936e3d7fe8991a7a6f7a9dafc0c93d7fd81733547ba43c914b9bc4ac65c4ba0750feb0d5d42f533fd1eb42f1f62a136231d45894b9aaebda4adfd229820ef93c6ee96e2f112f45ec07cc2ad6023d15a9d880b8c135b70f69d241eb89994291e21194bfe7553e6356eac31ea629cf89baf0525f5aba241ae07dabca75e0affaeb66df393f4460f4fb13ea4a956129976798821eadd00a015f46813064b2677148a0b13df1b2649f78f96a6c9b5e5319c43a667a104fa563ec4053ba7e27aacbd29c4da5e1b0068e910ca16a801e178fbe346c4a7b11594b25d66ba86d231c8011d7c06afd7eb07061f4ee7ee6b4e71d60967328c216385f2845dd1940420bf0f116127827261ef7e4147eac2d90157676646c7b6a20a6082767b75979eb7854b6229b20d4191b1601e4c1cb80d91d4d5e27cd147b75433c7b9f447014a132b4c07145222de7c3c6712f9b6a75127057e4249c9d43244e32c9c1205fd665948cca2af2e838b0005c1788614300c4e061dadd4ad03b9240063fa7ccc2218bfc42f4cd1640f13a026e24df27dd469c404c195b53797edc94c9a9d45092718cdf0a13d7a40ad163447a9093b41e4f9e27d12d719c5127139c9565b9cdd2ae916c122580518a54b813fc72c02bb098492d4fc82e6cd87202386dd62692d60c4a798668fc0ea7d4ad7ceaf9947eedcf70e005e20d327a8b5b7845a7c70c7282be53b30c8f3a07dc18b02d755a43b48886de6fc705c3ae53b7f4f988fb84b798b03cda45b110bfdae2f10567f3bd50e5c1543f7531ad3756711812f46851ed8393c93570c55c115397724f3c682054de7f88fed9140e37df14758800371fe487136baeb60a3e17dd7aa605162c716c436d0f8f7339d03599bdf7bcb96aeccdc08cb78968c51b52d51776f62c7ab0a6190061ccfdfb3d02fd0e66d7d13467ae0fff2d3eefc4b41d68aa0f3c256b177b214f43d29966b5f02adc76ff9e0a3d2403ace992eb718193cc710fdeeecf9f3ebe98f934045907763ca542b55aa60bec783d5ae9324f02f9fd830b2df16580eb774d8d509a6414a3ec48204ccf97d2a265967a28bd52d876c0cbffac2d1347d8e7bcaa8158f222e0556035f8b8debf659771e3f7212155c4e252435df120cb3c61295edd4b0a05e8cd674461c36fa3448801d5dd4d3a8eb99ab6f9882be46e8e73ed1a56bdf13d6cb1b172c28b6839125ebdda22846d699630b921cac0c07c0fa7fb4572a1d0bd32c20355164d61bda36b3ca3a93db90a6a5496cdbc5dfb3a927157539d31674197d5911fc794fe62ca41164d8596bd0d1b7c43db7ef162e35e506161a7e885a82ac51355195323d0d724bce28c67326208fcc6fd2df2b90f171e67bfa222bfea530ce7325f08fc97df8c4d2499368b80682c53151e1dbf213f00132ca1462e696656dab7af348c21aad07309cee84434a360d2ca881983d05c6216b8d34da770f468cd165a270fca8215c712f11bc2301e725a37ce58ec7322d2b8035362790797aa63bedc5084585cc39d48bc3789b5e152788af30fbc5f7338e005eb0e72e269797798f6584281d3b2cd8ea2373e611a131a0210c4e8abe2b07b909af80e68ece45b40654e77dbdd8d82486df762e317c38dc676a047787b44f6ac2d7e223a2d32dcf60ea25e94a44f49efe501d6bb33f30d9587defcfa65a8c7dbd250bdc4f678bf1da8c87b2ad6483e7bdc8a61e91b5d40074d18d656cce6b740d57189ae909a7e038cdf0d67605973d2e95c5a55ba1295d4e1b1bd133f4b423bc4782a7c9d6d4ceadf1a51e2f8dda95fd34069d19235dc653da4f1b2d144e0c9ee5d8bfb4a3614aa74ad46796b2e028c808049703809ea6926373f426368d622543873920ca4aee3a6b3deeebdc8d04ae77f24cb0ab3154dabfe77099ef33a2993c5fe5d3030fa2b8ce2b18fe0721334a811699123a6022e68c12b997fe159144d8f0b2a838ef0078e2c7801b32b958bd3a6a3bceca8f4a8bdabc8631d2f26cf152a914003d08c9003e9db463d32e8984562cf805e3dec18cbca1a4abfeef9db0fd7e16b1eb0d94e8532e78da562405a151965a4c43ec1236e0271a6c2e192cc5b17a075f076fabee4f5716244efb2ae9573dabf80d54e65c6290aff7535bf5573fb352acade0bdf2b9e97e0d0b0fb9df6b8e5d564d1bb6a13cf4cdd346d58318409970a3e8c7280ce13e8ba1ba7f65b650bcd4f11b8aff7abf57302017cfc921b52543f7e0914e014c0af195f5b20eeaf4673c4a291ff677fc73a2a12c4612123d7d82474fdc3d06868be1f9ecc132e5c17f927248b9a94c246f9b6e3418f9346a27e7b0c3f8b9a54f609542a180346b51b972cb609bda63406b3c320bb55826fdd07faf15206c8274e2745f878094d0d980dfebc14830ef3eb9a0f98fb188203a1e229dd08895bca33c5fc453b66db92d62133ed275c6db9cf43d232c42c5b15f766af4b87253021fe312b1ec800a94b2ef9bde04fc6c703721fce5867eaad0d21644cc510b72edf98d8018ce6b4cd01ee7b41b026aadc0bc1a98b26be7eca850301373e4421e64d1c0786b1c6fec2d01084d072225e7524e368865e3246b1f18d619bf7852311c308e22889d6a1f575259a252038a639b16de524142f1240834fbbbf0ea44f0fd02d1b23ca9771b26efc90cf3da1f60207175b51fa8c42cdfb601cb876b9c626c2e0d1052f37b9d750fce5ebe58925773701050e2ab7bce39a2f7fe22701c5f1425e06d1ddcb4e4815e3328503ad8cbbb6b24651767fd0af72af424c7abf9e4a6ce390a2fcbf587a2be6b8cab8284be91f90f00792c64a7ec0e080db5b52c924fa6301b16d36bfb4812cd04b88c96a5742595147ac4918b587b56fa5ce1ddc31bd70ab821ce0b820e5f364bb167c6416f59bba26028993d6b54b17366e6b1f1dad5de53336ce7a0170563c727f01ebba5dfdd875c01f24045a94e48ad30f1546a68803ac7bf4a137813ab1a9688a2546cd9cf197342d510201019f07317f4d3650591a3f60a0d1f989dfcd127db0a9ce296daeba39d5ea8c3b7672a6f401ed9b005327af0d7c964e7fe329c451f943dba827ebee5d346705bbd198943d71cac54d3521a199ccfc4549609acc1b22f9b8ff2cda32e133c94b2624ed9da859b425a649cdb1f500558daac7e895ac7f844d6932fbc45ea97cf904892cff7b611dcf3e058f7a536fb66f61549efef4d16e2c62a637b19625cc43eb50cfeea888c68d008e204077057e6f2c43c306aec991e1942a047a98c3c6cd81579704fa699a7a57ce6571c91a3c07c77f11105343625f86c50313c3c92f101f212c4ac02148e8fc4d2175c301c682e830ecea1b39eeb4301125b4a57641c032eeee9abbc2fa0cce4519411810557320bc3ac7f1b7b9ff419de286ed12cf2148a7a9b97af0df8a72f336b73128526383e35def64f5404a6376d8aecf58e9c1a7adcc3f9f33e115e0582175ad56c564fc8afc3ef36be93175ba016859ba97a49b7bbd0b49e185f9e4f8f250af5d5459619d7832471ba54441ed9fa415dd0abe46b17c84a02d9608fa67e40809c737081a6b16b813ebc360d01c9cac57bcd8ec724659dce6a019e3bf4f32bb7042056286fe0e68ef5b1fa4a9b0d907c00eccd3ef125f8f60b3dbe5d32d5ded17178971045c5058afbd28edb93be60a58d54b6cf97b06e6970bfa90853ec1312337d8e34157dbe11576c39e1e2282a1436972ca0755e3a7a3d4336d1348a8f445f78d850b6eacf6b53feb8d84e379f42d5b8a0e58b2d640ec7c77a1633118c598e7673eb3d6f611420fec1c4a11aee68a0c416766a2fb2cb8c2bb8ec59c0f7aa9c50580d2c8f868561311dab1877f7be7f2d8b270e53b455c862a95299275a688c756340ce89c21472e852eecb2d579e09b4f18efa3f801236a330e29870af8af111b6923bff58108e8e4216305c03492eb376578167f47d8e92f1892f488c60811a6bf548ed65ad5d97a8143a6974b3bcfc533242e24f6777a2383c154dbb7cd6641bbc2695f1593d8f574f704110eb469b8567a6b2f2d1e704a5849686b1fb90d846d241d6103f8d7dd4d9530353da2e47a58302572908f79a06019adb4a91290406b8779bf0e3e98226468d9d225a9d4eefc3d640b4c1fe27f1b509a4a7933c94c67cac5c6ed52ff657b006e6b0d0119305a9ddcf2bda852164ae46207e75d57a312ba5168b7e1ead0a0bb0b5dd0ab8020f60ffaf9f33c12865f62ec0af95c48afd1a29b31b5aec7b45eb03b77f1fa4e67dcc55a4d753af3dd099d1face1d70ffcd412cf782fc1d7624b61fa1ac1372fb49d1a2a4196161db401ad2e9d8c333a999978cc802395a5fdcc84e4a598a059631d400374c4be85194b1027d2672891882946e335d437adae48e25b6c67e88d65491d6a4669fdab7976c9ca5268e5b6e35d60093b2128752e51ff65b56a6b34a31b73eaca2c688ab453d3ea8b106a0e0b0257dd131c5a0f31de75d897750ec8dba64b701e1f38c0e530ecde73007e648182b4900e5ec1a4040d77b13dc4bf45c81e82306df0d4fdf5305f157b385b070c45238b6b0d459fc52a616c342a1ecde632304bd050aa355bd072b7d24282cf46451c1818e71bdbf24018bdc74ef7c24f80805f6c3cb44029968a5bcbc6a9d0ce2a4aaf949825e273c151bf98b97d4c40795146ca0ea5ac14b7becba466929010589cefc55ebe3b5b0db8a0ca864eefab92e5ec1298c2e80aa5ba1c3e50a592d24716649d4ba0d286eec73c549347a23df0a967de47e58ec63c478b9b0dcdfbc1808c78450a9b4528c0fed82147ec6af954960e56ea619ef59e8773b014b10989a7e01d3628c21b90503ec8b7e198606112b048fe25a4645e7b314d4b7c06d113b3682c572dc7cabfb05ae2a0938cc80f0b3ad2fae303bcb0a60f5fc59325c22e6c62c1116ea397bd352e3eef39cd8cb0ac8b92344a035220fc974cead7b2fbbd1c6286b94e414c14e2584f3e3a06bf7cd08414d0e0516ce64ab68530fd4280d4ad4d837a811ad826597476770649d0df90435a2021b728e5c2ece895e0fc1fceeedf22e13facb0d4a1bdf80405a9f5020f9a4b3dc121313b75e2a90c872a368108e2a7ebed5cd7ce4c915a5bd56bbd33ea5b5c68c6e42b2cda2061bc371e8db25a9137cf6e6804152a4fb2f5f12fdf6f68174727e01513ecf40c5d5b0ecd45a0d028ae68f312c56318090ea3622ed895d027a83000241dc56facac46f391585b12a87ce48567fc90e91402f4a611175c52422aa705001bfcb91e338120ce10d3caa907f2225f6ec6bf4b12b5b65ca0b53a78fb6f238161fa26c5a4807aefa2d80adc813b1e115f5dc42a70fa89980a5c0a11e85a026c7c91d7872a856c106e25042cd0a853604d7a32956d9be0d9b73c4e303141300057eac403f497458f8f0604ced25167ede98922680eb12a720a6b3097b6c5c8b4736f55a9ac92c9bf9ddfd359581e6b69e651f8142336ff53d651016a65382a73252f744a272d9e4c791b9e306e95c18c3c5a0bbff39c201d0308e0240985adcb4d6c13725b92722ce974bc660f35b046ae6147c55548a4209f8d8d365a30ef6e64488eead03ff595866971360c310970292eb91a27ff7fff1ed796edff46e70c54631704019b04c41d99864414c327e6f4fcfda8b1c124d8917868b4f5df290e14220f19d7452698321c17dbbaa06aeb849de203efe3aaaaf95a831073c537167857d7d0696422b5f285a1d7466087459150c0749950a38167d19acd91f759f5d53c7c9cacae2a7c6d483a8652244032bfa2426a7afecdcfe48f877ea33336c9d307ec6569d6c65c1ae2045150ea08e08ae8f31c5fc0c345ecfdb45603ae81341f14b084f0be3b341d636283268c0280c1b02882ef3dc4dc1a159c88d50e60dc28cfa87bb3c6074c08f3b7f2406ec5555c2fae1d1c95717fffce300981c518256adc90e8f0c2a21c7697971c7d6ba934d341c08aa644be47cf01d0d10070b4be067cc735629df8006ec7505772f2addfd40afefa12ee4e2ce0832766bf0a2040028ff4eae10ce2d441b7ddf2642fb3e1ce82060176901f9bb5104c01435b040b4b436d57b72e4e6554333e8ff405dbb13d1acc6ac182ddc66ef5b39c60fb99ee2c72ab897157874690dcad6a202db462984a65ec63adedda8918ead4bf2ec7e38d6dbf82522135e69ab1be56934a9f70a46fb746a4fb705eb8f489f19aa5fd6f351b99188e794ad95e06412b115e23d5af0f5a587e5f2117276a383dd947551a42ec7230f794f423689756454649db155f219d25088bd58a484d334b852d0fee87038397d603be25a250b07a3249d0d680118f7322e09b295ea1f80015bb1ef3dea8d813a2fbcdd1d4ee3deff4d7c697521a8d4b1641b7a5ffd66453aa909865c18bda058ab3c4f69ca88b8533b50058d2e5cce7adeee37db22f0b6cce86522fef7a49d5b3e8335d7cb34b9a1ef5604fda260f39456e92adc7293264b464fe88bfe5c939c3d856c10d50d1443b688cb482577242255e39018c5a81429812ae5aee58230eeb860a76e73c5a0ef5509e1b1fa00064a15481d0a56ee84d05e76c3f97ca631c44f66bed734ae93d1b93b2958ffff1f72ef94c3a480683de72f3378aa07be1fdf0aa1ef8877bcbf05c4b006d82fbb58cf20fff4817b5df4d6b88cba0312795a0b1e5567d397dc43e8841b6775ec6cb5cce688786a76422c2b2fa4520a34e84c20a2c5d721f1587cae7f281be04fc5e3c937edcf30ead23aa3cec2877bd161696f5f83c556b4a7ef8888a43321a7883968dd3b15f030601ee46ac0425defa4a298c5acbe514501bac6cf753013402c8661ee937304f622a9837be9b981e63d02821bd21d52dafd8eddd68751ebf575452cc325d7d8d619bab8a06a591a7212c50f6266f17def00f858f33ea4adcdcdf629a54d1bfbb6cb7e08d0badf747437fd89630b2ae24486a041ad181716c2ab6244ab8d0123d65f71f8d809b845ac74b8769d278cb77909031699c1cde8e95ac18e6e2f3e2d0981ceb79fa84961df08be1586f7dfe6438174a749e26c5699870f4ea5019a76cb35ed4ea42c6076ad175944462d29b12816278198f8fe3d70d3a4c5fbc2e575c0bea57b335fbe57f7f8e3f1196a0bb7fc3120a10e9af8b30c2f2aa2b796d018bcfed9d99c6afe761f800eea9bef9dd5ac0bfc8fb208562d8eeb136698a8ca74dcf167d999df9110ccef0739eb0d1e4cb75fc2ca7a96ade89a2a8afe31a73da9d02f728db4a244c9359985649e435dce4a6f26d1a4a1d419e80939e49ab8813ca54e574be8211c43593e299ef5fe8af61c197224d5078e3f2eec6da2d1226b6458305709e21f46aab464a297dbc23471a33389cc8c4135601554270613359dc60db48bfed4d9d61c998cb522a088468418a6c523458d0215d580eff5aa4d72f1f1f183a5a5b242f35d1b171aff3a6339dcd1d2822b372567d56f8cdc72bcbe4bf629d7dc7aade016cffc86b648c1499346ee7379b3b5e0505ba26ea7f0c3dca57f3630bb499ab31a34db2516e38f81d9a0a4f29d3adfb1cb9109d52d2bc9c2efab67a8b41f3633d49f35d0bc0bea382341306a536f7a231305f44ee7b89486b88ca1276e4ed8e4edd806c190d6e6e4536a82d17cecac55463d77b1f5e046c9dd054f374ae2064cda75e009d701a3437a902eadc567b7f941d1fd1108c1faeea88047bebc74b45327ff6217ca02a6b2471bb293172692d147c37040be9b904dc7f3c73f0cd796ddeddcff783fb9a26b8eb890fc9408e366e175c82ba83f8a75ec9838967991512b8ad48cdafe693d9404fad2ef4d0a70c600c3ede11979235ff2d4f56f2b095c5cb894a3313927936a16edc67b815b5f5eae46c4be48967f63346b73b3750fe8fe3a99a06fd4aca156ffbd1ffae3cd2c62da5e358fd806386e9f203ffcfc48d0eab17fee8be91f2018a1ddf57e18fc54367d02790bd324f01fa952f62d623538b410073bfa7017ac9b5d0c78db5702fde1874193f94fc63b4937ac1e1974c932cfa85571d3ab1e83d137a95e75fc4524e01d61353978e1e821197d88e4e53a56530b3b7813ee6d1f5b5605407afa222eeb14f62d817c1a041fce19795605594a171b1e016ed3edeae5599ac28a7e09dbf84ffdcf5b7951fa1ff42aaeda0d83b500d82388afc0b356108082f25dcdc377bea57f61c61ffaf7e85f40869aeec0b43ea11bafeb31669d84a2c78f677601b1f19e3e8677a6cb826e57e17e716f2c23c3b16237c1f7807d71895d98d03fb71a9b632a0f4de1a1e661cba76a934f5b8b178fd3052bf76f53201fd8ec4ab7e94eab4fc7b7111307ca001ed1e6282e89cb2b9f865d32377a8a44d7d213a54c338b53f79179cff015d7cc762b88c9c4d82b57cb269a8e57c333dee5389674e2a6013d34ca0092608ce460fa50fbe0f5ee096a07335f6c4fe3e82d57157bdd23a756fdaa41d85198a8c9a53428d39075285583979413217e1c902e0053efa6763646466d0d628e34ea6a9706e54d62714bbdccd39492d92c983202655d796269693b3694c6431c0ad217343f62b201cd521ec06b79f8b2e79340af1500e4921a7f9e786828b0cb8aeb61158b3766629fc5ee797b5684d544ea0067fede73ac1f1704d07c63cc3a551d2bdd9ca7231dd79d8694b25d241f893e511eaa772f93a2c39969460a9bb89a9eaf5be38acac350d2e595541040a9601f69cd14774216af9733f4508c24f83d6ca583cdce01a4aff2279d4452054a1c3494194bcf5ff04e70e244f15763c5b5b270b26f058bdc6ea2e01584810fcecfef971257843cbc3f683fc9aa01934aa0b3b10483d349c5c9ce16b3a1a1c118c775f00b35783bc0c0aa1afecf602f552e9daa71a9ada78570111c997bd988ecac881c7c46887313131192aa8d35ccfa411fd38b8ba6967b343440f2d22537c4ef1978ffa247e1fd08090083f796f7f2a0f81b6732dee11492924e70e26082d789b55830e2a5667fd4ffc9c28bd0b0af0ac438a4b54f01bdaa05a14bbd312a1d3b3d4e8402ad9038d7f10b98799d6241176639c78599218d4aa53f7ad03964bff210bafb06748bf1f26b0e8a6a06d07537767313e093bcae51e7fdbd714deb53a2bd7d7c7c1a1d61fa8935d00d5992e8b752831d34ba233aca2519bcdb4e8fee54ce35c96e6b76ea00c2802354e5c73baba995494cf952fe8dd1d7d3ad84fca77a1409b8da8c4304a5e9b5dddb1501b6f2a3c6b26a276db518a37c5004c4f6dacbc638d1966645a377b62733add3416c2da1e0da4dc07649d0b302240229052916c803553cee8966b71031d8001e84743eb6f9e587f3b3359d8a1f6ded307b81d2e17f010d443956a2fffdefd7ec460b4f310f1c9265cb22660cb6b7767fc9398a5a73eb0307e417c90ded6305e198fd1a2989cd004b20aa60bcf39dc4a050c0bd3d21f911bd921f2c64d0d2339f0c4eac2c1b6def031c4e07c9817167cce2c739f3a294835352058374543bb93dc2304e9ac2091e3440d9663f100d553f5f72442bd83cb4ec67785164d0025efd27ad74f99a474d77d504f24b7152a7bd019f1c3f2583aa05286a3bf483c2246afa7ec981754e56f54c01b01dec47b9c5deb516149766416c36c707337dc33bce59ae46d9f5b3901401771c97fc1c3b439020d913cd6b14270c17c3cd055fc82b66f685817832840faed01c4725eaaaf03f5558cfea98ad5b5d88508fd28e22b4f54efd0f1b4fa887866846cfdfebf607b04903ce8223122782acb0a6f9fdebde9f4fb003f06e755559ca7403faf1355aca08509bbd6a3174737bf7a24ea206ce8f5256e88f7c97a94eadb0ef2492f102a06eebb39fa142e31061f55bc1d85d6cea8d26d23a21ff10b921870bb047a7ed64c8000017e2b472b83355bfd0854215f4276c04f86dfc9cf70c085a7581eeb599c2ab22c477ba080219b8cabdbb57b4729929c2cc60ad60e8b3c08928ab33200ac20b35bf9e3cf9273ff9027558300b82f4fbcf4e4590deadc0d3a7a176431eaa566ae63ab23ff45e9f53d39650ac083f9c45b88201d0e5625b917c7dfb19427f16a56f06f6431761d9fe588961efa0a8be321c8a6c643e3c612a264b00fc639487429071cfd029053cdab97def9d621dbe58fd5fa30c750f3335489de86f2f4b00b785678155e7a580e16abf175cc5459cde7670a6305f443bbbe92b5395103e2651dc6ec863c61afa43b98c556d2730e46a62a8d7f9bb95407acfcf832c9d77541f0de9c9387b36b0336d24328c743a930a43ebd42c95b0d95f4bbc1bb29b0f0ee5bfbf9522a78ea4d1266118a1428ae29abd828ee844ebcf5a876201577544249fa63253d6ad4a647465d03b45b44d97b1232c11a87a9e488f42dff9df0e7a2060a6a29c0917cf06aad34ed53df9599a4ab61f392fc8ffb48f3447e3f1e6233587d613e8a1897c7c9e143e98d801de2b70a7a7ba2d0290bcfa62db27f0d7def60de1697ac0c9cd371f9726b958abe4e7fa6ec870d4fec72736f13cc09633d4263b55f69dbe531c2f792c8a888cb5b94c4c72e72fe66017a844297fe21150fc416d7bf898ad667516af63b14586e5b0596305720cffcff8443653ac7388450457fa31e391aae4f8a1d18c554ca22e2ad0a0307a471c3e2f67cff7091650aa8a429a02059aeec0c472b6516044513a85204cd3ff14931b7e9ce95a486dd38509b408e6881dc8500f4e8a5845d819e047d7ac3426b952f999e9cce0ce142b0e329789c96f02825e1b09c7c392c5d42ac0cca98b75266ee3c4b1c6ef24cca07e9785fe90dfae094088cfb04c2b4e0dbd329a6e858ff9cdc816fc0309041a4bd386bc64a9d7f547fa24197dfcf3ca961f8da3eed5d881529bddf05f794d31fefa62f3f40ddef26d60dcf57dd3b1e3be7a04426b387be0647418b6e1642a7e14605f66448181245a22351543d5bd2528ed9b03d71743edc08d18e255b23746c36016ef4f63e166c4df6fe9130e468356ff67226c6a907fbc9b9be105e03debff76ff7ddc6b25a864e85a44c335efca6e7538eee802e0443b27a8b3c03a684f12409e8c26de097124a8128a1aabbd14ecf42568e3a9d6eb4a0104ce588fc7f2919e87a67faf6a6a202abf2d3fed2f650d62d7ab30ae233a78db101999cf757d4692b21816d2126d8664a9b7aa3092c50e6d7a45d518f57a6d7efe1043faae37333033ae28090d492da8c65e321c2def73a82f9c5c904413c591568f5d471bf9674832bdca67e5b21ce521e50d33ff27627d6b1ab17b2409f0a9f61fa16d5bc3b453cea1f7c4f382ae4217e73354b5f0b97953fc961d69292b8e648b7d862b5122a9ebfcf26d19d488b675169dd3ff1069c22e6968df53ff1af6759d77cf0cff6b1281e9555d7d74ea21afe15f53aa4b989da15f59867693c0058ff47f695eec693bce22e7cfa478ff383558b70d5259b6a3c1434e6ddb19f1d1f0222cb34d6483a8a6abc6e6e933af8175c1228dc44f66c65eefe30f8c08e8f56ee5fa7ca9f0ce6a0baf61490ba5d78bc88394e2f32b1944f00b7b87205088d283ad5a749ad1391dd989b842182416468c3501e7c08867db45b9030133f4a473fa146bf9b013f7f48b282ecde41016d59aa1f5e54f25bedd2662ec0a972d3539cefa5b758d55ea207d404931ef91f1ef591ff2b26363307f5d20da89b96076093b966f0243411e63985cb2abfbece66ae70df0b2431849493f821613a141b9700353e9f805b0eaa0b4d23d01664201a4c0d170742ffa3ffadd7cfea17badef1fa0f39b14a40cd576c3e541534e4bb1b08d07e6fd387e76a413404f6c2265b5dde2332a620346e40b38a9fd62c2f0bdb99de5c3bd4f7ef133adeedc5989a0abfd70b5b8c5e5eafafcb22ece5bd3fa075ce05a91d5aa964b73e5c8f0659214e3f82f06695f6c2870c1901042a05ae79c4d70d58305c55493a9904adb84954be5ec756bd91e477784112d931559cccab586cbd8a9d4d0aaa7845e67885e11f000e0ce08d185c3212459aee058e32057f8ba05e61562b2b86bd5340b7b289ad6d6d1342082164934df6967b07d00dc20d740d98858b0881fd601086a47fbdf61ae790277aaa5d62c1fa8035ba4c29856cc8f41acec9341ac994ce70943e936e9061b0507b11da8ff6e831eca33d9a95b4df9276eeb026931b8e9a7dc0183a02cb5df4f89202e4b91321cfe1be12f244f44558090e5779a298116c3cbceafd6672bde663620ac821b721b463c7ac7f5eb65ea505642663cf30ec70c321447bd487b4f8ab411b8e1b0eecda75abd76b036426670732b3438b9447a330bc75df4dfeb677cfb05b7f5d1dd82bfe62c62ceb3472fec39e754066f296a33dfaedf2d082ed8efd833f1db6c1aedd067bc5ae3dab1709778cbb109d83bb45f4893e8b391a65612a04f5314160b17f3048a63d1a1ef6eb14fbf6efba6e2cf6ebdf775832edd17b8dbab6537ad18b5ef417feb6d767dbf5daa3aff7edd15bd7a53dfa4cb1d7d3bb78db85b96278a63d7a2128fde9e97f68148418d5b04d864ba4f6684b7bf4b3b384833d3d42a672f89029194a0fa545a94cae47eaec6a904197ec0a433a6029b83fa8a28e16c4b2e68c4d60e8c44ba251384813418458a81964bee3b239b72cdb66b6f5b66d338b3a4080280f00d09352665847876632c341a8ce6c6207f6cf7ab66d38eab4a83365f803451cac1b55834e8208c95ee50ca7c81c4ab2954388f6648625f7afebb21c3bdc65d775dcb79df67462135b7663c333368b79663ca2ce57e9c4262a1df94aa7622233d1a8a833e1cf132dc833c69d183ba7bb487b4e62cfcd553fd19e8c3a30884ce5802729e1cf3d99babc04c4d4850120450402f4e475a03f500ad4aee40f3aa9307432714cb202fb91482d5525d25db14ca15c3d562c40a1c5c202194cb0862c83fd754f56d5849112880504d35ee5f15493a73daf9a3b31c3ced561781a0569e46ae24f2657d72ccb925478fee6cef4e150f49b9975af659d7bc5e1f9337daa4f6cddbbf8581f1a355f9de687466daf9e03d680b9fa8c2753f5d82deb73c705b783eed9e9edb2ae1375a2aeeb3afc899e3d13655aa68962d6660ce0a93ab4f0dc813115f63a9bb0b1b71dd93f7ad1b3ec6a87b04445b7343acc282291762b1cac7511f6da134599833558dae8deb0ed5547b9293cb073c7894695745499beca14b7b4579d146461aef2377dac5955912babaaa8e895fd2712894456645f8944a24358bd7b66af4c7bd5bbebc1b457798dea5e1d46c67619a52368b12a1b04a04e201d2e9985310000eb1294a8d6d1635b0e98299e3f4c582f48a651308d0acad5ab19b4a4511172f8a78708b58812d8ef1b8ece39604cf5b902ebf5b71bf35613ed55df6e3c128d74ccb9d78d3857469eaa63b7a2508335524831d8cf1e99f2e68eacee25c955e5e56afac4274c9d2115424ac8dfccf0ab59c6121dbb72d6e306b365d10a0c56067b58d82a7e0a5d44e24d748184ead0a5fb4674a23d198b684f06c9d00a999610ec3ca5980f99c2f04c9429923cc949336303db48b037761f3a851d16d1271f7cb427a5b0f314c79dc8d3a84969dc893c9167273ab1d33b4e441e083ff344dc7922ee3cf144a322842a19fe3cc1837a8545229ede4703606a066a016201a7603f185444a76664a3acc39f2c5a9e4ac12231e51b004ff25ac8529621cb199982353e3f1902f99081ed53ecb5274f29a5ff48f4d7a398d2936e0b89d4d22878f9570ae12194f1487187448a3b3b8d8ab345863f3a9041fe6658804bf008999af121539e930c71cf68520b023ef658cd3171e2e47afc4857205d71c5154b581ae9094f78829ccd35914197c844a32a29a594524a29250ca905c228458631498c7f310a18ff62cf132ed189d3bd7fb1890c1f751a158043001c3e1a69143e7ccc69d43d7c2cd2a81f3ee234ca74f8218dd2e1f049342a87c30b6954cbe18334aa7478208d7271f8231ad5e2f046348a74f81f8d42397c118d1a1dde478f467587e7d128eef042346a3b7c8e466987ff81c6879946d5c3d39069149d7196ab3c65c67581a797cbb82df0f4f2984b82decb616e0af45e1ee35ae8bd1cc6d5a0f7f217b742efe52e7742efc57b29224f1717171717171717efc67cba117a2ffe72bf2a03d9e58577617eb95fcc2f3eef77935d72006e1401f4e24b40863c5d6e04c6c4bfb85f14418e77b91f9133e47900dc9803bd787c6311e8c5df1b71a017ff3b047af1a69b04f4e275b842a0179fc30d02bdf8960b047af1a57b04f4e25d5c23a017dfe2fe805e3ce91601bd78962bc4ca121fe0293e05563103bdf8d1a501bd78d18581a7787b3de8c577d7057af1dc3df4e2b7db02bd78ed92a0179fdd14e8c563d7420d42e8c56824cf9c2211e7c9101a9c64d1e40a58ddfc90e70c8d5c1df6c8d373790b29c56ab9aa5e610a0cc95332d1a8ae7002ad10991cc5a4c0d1b99a12499d5dadeed9d6bc356da6bcde575e127ff31788599ede3ab4ac5aad4967cf2ee99838da921513f5d5b38ece57af905cd5bc6af55ad5eaf37d6daa96178879d65aafcb7afc552bab9a51e6928eaac22579832356b3deaa0419b4724b7b4d6aaf6772d3c8de4cdf87a6d1a88fe4c1340a3ae12d59dc745819620863ae95e116e3617443273f792827b5b55630c349ab7938279669af3d1a3f34aa69f467fa34e414a07881bc41060f60adf7b3ae0f5d52a27cd35b527b11d3e468d4079ba6bd48ad579b8ebe759bae97b52b69594d1fabc753d9f170aba20d6c49c74dce31c62893630669dc4c60ab2cb1f86e3a42a04a564bc8e0016c87c3cad9a1cb0781dae5095b1d23b1a4f624ce5155588591485a5570dec2e853f27d1a49d33f34dc30527b7ddb5edbc0c68a1efb8d0e7aecd98d1fdaebae5efb86bde297aec35c310c7b9c44225f9d88fd1e7f998a35dba5c961c4c26f26b0305b2eed79183e1616fe7bd5e040d3d046cd7a22ebc11ec26df268af477bf2f30596477bf259ca085d4a79208dfa20d08f467dd58846412764791e3daeebcff21ec6d01cd80ffee41042cadbf8b64eae4b12016a1aa67ddb2e910b8b26355054d72e116a8526ecd468cfbacbc9d20bf693492ca09d7a03ab4175eb184fc64d8ecb5aa687044fb86c42272dbb230d73d303d0c069cdd80ce06175760468c8f3ce7c318087c68033f068549021900a50e80cd510d998a053a37d4950ee612647587b368c472086917ce21bd2108f2c210a950339eb232cb730b53dbec294ca4ab5b47802e8c5235611b2e5436345d790c893638323354448550059ebb37e6094a2165bd6831565a7698c8399d4852cc2a053338408e90c3e35a7024e24f5699402179c0c2d01881bb2eacab7cfb8823194985af8b3a290a57585265616a3db9722a6008eced1e6b3af59bc3860aeacfbfdc02da4ca5526e9cab27c608cec3c053cc953a192492c2b525286c41f252ce9a9194244250b273550644788603d476a549e05c17e1610a4c416aeba5a4b80d6aac2328275040b094ab27663cd75e13544264ee18a1434a91942a48509846a669a07f92144342b7a6a544e041554a3fda6264bd2fd93e1862c592bad4bb0a200ad269f95854c029b872bfb81dd4eff451f48c508aa907bdb81926152e6a5396e3a462f05d1d9d87787b9778c5ee7cabb8b4405e7bc66055b55f44965fa30c9f228b7cbb5d22e96ab0f04ca5d73dd58c35d4b0966551d6bae1f518bb9518fcbaeec96f4692f9b8f58feb4c77257ae722b3c59dfae8527ab2fa4924ada9337731bc27ac472497bd9953f28974b1a25ca44572e694f89fd2795d88b4ed3dc96f26ebb7249cae58ffc694f927c7c9e7157fe489f918c28a7e994ee96e829376611ca3b135265ee2837e67721c83aad2f46020dc40d08fa78a9a4511d5e92832c21ab8af6b273d65a1249842d9f11b694549161ebc707f68b47a2cfbd72c4a68f8f8f0fad2a9b76634da6b90c8580a76608116c0c40d6b719638cf1d61cbb6384395a3f1d6fdb24e47aad3ca435e00338fcd40c2142e282931a28b00f21428b3054a39d48017c6aa0b0200f49a511d21b6c1ab2b4c4906517b28d02e90a3de02a576b0f0baceca3cb112e8d5ee5afcadda5926cf94c28aa45186a4f724f3a1cb94487d3dd5a8b2a891ef3e86aa25b2be56c0a87cd00035aadffc866b0910aa972c4306e08c3d447d620201772ac17c9b651ab8a3e256994948296600c3dc8462cc8b5a7086c0fb667640e87b8216e08fae41e6cd4301b4483dc21e4620e7686c02c14ee0265552502e59e81653900f4686c3e004429c9f290a6b75beaa17dfb86870c59d902929d9a21442a2608d56827c292a4068af89b9a2c6a9a8ee533b28c0053416a40942482e524898545964b7012852b64792202445948a0b79060593e5107593eeac8d3ad39a3b7b375638e3e9665e9c81f9924c61879b28c3d0a8835f1081492f8583a578ffd2c1fcb07d69802a6aa15d609d9a2421099e26ab5d689f5e333942f94113891eb10d8a34f7bd2aac2fa59c2fa69215546a2e19cd75cb814b1e56355d127c90de5c894d5034f3265f57043568fb593e579006568f94cac665986ddf2b1aa6814a462043859de72623de9d48c23969246412a44d04426b198583f9690644313f2673559831bf267a1c1c28e7cdc501e9ab99255ac100109f9049c1bb285e2862c1ab720e015b9bae593a5e533efe32268942396e36935217592210088c81b8b48531a811a64d0e5d3628e3e411585684fce1378f404596234b0a2a7e6b1798b4071d93adb09198aecf35996a39e204b4efb5cde4ed8b60b6b241359abf55050ae0c1ec05eefedc61a1893c424d85539abbb8ae276558e25861793c02113e40f06451d5c2be48e6d3c963040d798615826e2ea35a7288b22ecaa5ca76975bb8144cc5f4ca26d385251278b564427a06058d4a1a0605dd77547586bad45b95fccd1aaadda56cb509de854273ad5894e750263e43dcff3446d398ee344afb513751d1caa81ad68e893d4618407572717fd3a83fd913ee049bec33cb65ef4cc8596ab282548ea33eb3d30b4f5d372e4419d580d28ee5069d520ab9e45fb6fc6a551d945d684d2fe65b9ca01da80714685d998a3d8411bb5461b5a9c511d461b76461b2935da20c519550d1db468a3a582f5b7d1c61129d1061052b411a425da10527129b96a120586e4fe11d14612157f5d1d48b431c4ca22570f126d449cea42a28d58a40330a63a4543ae9e4455551fb2038d5c3dc9d5234e8c5cbdaa6e459c5c85007ad5b5fb02bd8a875cfdaa1e3b5024da70893342d043ae5edd54049349072a74d021872972c8a105fab4b4940c502ab928800b172d08d0a205c9071289c5060bcb4a8d9515951e5454526652525052282823d46824e24124b234aced06d075dc0e1cb70960db34194dcb6664192603c3ae98ebaa30b55a312c8bc2a0b43ae5aacad57c8135a40c00acd1778135605669a9d65c9d4711d5617472d5b3037d628042c97c62c083fcc12532b9f22157af16bd3ac8c004dc623f1ec99a7b924197cb850af0542f5f20ea1c885e14c9f58511fa4247ba649d06ebc2a453239c9a7a39c2c932b56424d428edf5dc3f4d93d7be43de463b96026a4fc3b5568d947209c21f7647418dcab07a6e6219961a050d09356ac4a45143b9be8e8652684043a3b8432c84724d3561c34824d960451f1da230b158adb30c16c32e42d865341a6a94f6fa913cd5d76aed08c76703423b86649402922998baa25315428891d0f297dac9f59fcd69affe6b119da653383285225329575979c50e658a746dd369715347e4a99e745339f254cf725338f254bf726752bc2c533c3235da913d3295f2fa54129942793d94a20b652ac5234fb5ca54aa47a65c2b4fa924f254af1de5a676642ad6d4a7ea533a4fe5340a47a65cb2e894148d82d0d35e9f8aa2534f746af43ac2291e0d4a2c5897205863cbd5450bb9ba6091ab4b1972756143aedf8b9c5c5f1cc9f5854eaedf8b9d5cade8f52e4232357a7d76474123a1f6323c476051aef2f8cf25a8a480d1514ec4e828175d89d24727427415ac440a2e651809499eea53eee5a91ee596b28b0e6b46b794e192022c8b5e8495109d8a4eafc4e8d661cd2c83c55b0d2c2a48d6a36ab5161594eb4557469eea47b73eabb61b25055817bd87751186f2d4835e4a6c849361fd6884c363e58364aa6bb8730be81a972079aadf782ce742051853690f86ec8c0b93940b933ed5bb04c198faed05b6fafc265d98b477038920b04bfce9c02e2fbf03c88cccae8b507bf5da7509da7464c7f027b18d7c10950d864b3a700983390db68fdd1fe4a5f1a972b4c904065dae1f1fe468a825320ccad8b98bbdb70e07911dc336198ee7eccdd15e7d778568af5ec201621cd6b2ed8e98b4574741edd5378c8232fcaac49f4b935cb12c06251eedd5c3dca3bd5aefd244a646412e4132950282a7fafab938c9157309ca7514946b0a28d71fd87ec514f8916d667072fd752b86002072dd5c9d830c62d6d25583004eb865588d96cd241a28602305aa810fed964ada934a1a152977a0d25d60d660680186c16a061f1bcf4468149b68da51de8d7ba07c34645efb4d8d7c36a3856596a56516f6aab61bda0d3404438da239905ed56c287a4704395e51ceb419337ac40a8bc1adb6855995cb14e959e3a4708ff43ae9b25c9a73a98f4a0a061a61da840a6934485a2d191ea7e4eaf6912138c972bb51a98c431ce210879af90dc9f58d4bf1484a11d39c1a6ae406538c61087427cb531d79925ab470d028681229a80fcf4ce2639941ea7c512863b7b9bad109acaebd260ac99486698e3c55580995c2fa47732a4b8b28b9bad14703396e433c639f3c3e56366d13f34231371c3237a631367132542d2cab604db3544d73300cc33021ccc2300cc3d6a547dacbc93acb9a4c9e886b76d993e7b55a2cf561863f29740490264940525f2855aa2c3a0c60a8b0a8a14798187a129d08b527e3153c32a5759826694f5ebbf396e2b5c39a8b88790d6b5762f47922b4a7602550aedd4a83ddde4d509ae40c7f373963b9758851294677f2d01c1e3af1477b641a32dc6e603f3559c4a1228dea9c68a371221ab23cf6ecda6e6018cda147ce60b79aa25997cb59bd36471414ed704845b36e97b3babde4237b114156d66dda757fd06b849085652931d715ecd62c079a43a348829680ae80c620cb1ad024193b82fde4fce844544fc14a68af3ec24a40d1437b7525503e0f6bac34d8fe07875a68169685c1be6190b16bb3755b72e45104e51acdb98d2593f6b85cfb5a05cc6bef31afe11ed5690e8b86ddaeaf96e11644f7528e2ed1c3be3f123b943f4b244f3dbd3c8032dcb8fe9b3c4249e0e4905cb292d691564c735a9020b424c73bca59dcea7502fb554d9ac8d4e4993c4de4e46972f3178584660c1a2736d140965f014e09e607260e8cc9e6b3aadd4aa80aaa98d40cd75a6b862ba12ac8a7374a3f90250e8c9154e7d28d364177e4c95283954cda6734042ce4785532dc869853c8dc23b6e172de608390e3e5b28719c17e3d845561e93f9a3394e1153f70c1135e588110cce0a4463e872d08b964c687f6e4ad966d87fcc1259a1f56a2007db2301081827d88c04697cf72d0b0bbe52cde9a9934ecd69cc5ed46490128d7de03e51a1e0245f621f32858f6f4d03ec243aa6b58f2b46417f148fe264f14a27932694f6245b0f4dfe4c16e4ace2e9cc267891caf95fbb6e47aa3c4631ee61e398860064cece0441f998a5a8027792c7ecac086202118239f69356b6399d56ee8219a036b70f1fa314685fd680ee591a94ac90fad824ad1a8d4114a7ba8132099923f42cab1168ed0500db2424de807600c08604c08a8119af3499d1c2b7c5c00b71dd9375caa1a18740037eb07f63a4d6f6ac8d9ad99d4d63079b63c79600daa0363640d608af6f8d4000859d218e880522cec758d0838c8d9ed72468df4334c73da9b3cf309cefee338ee1fcde1ec9d3ced7192e3ecb767f6d22334871aa13934a7515b66399af5d0238da2461a4599c8f249d86d8a254ab63d99d29eec7260f59337ac829cdd2ac36d077d0989868940273e35509474dce49b4cd37d45b9e32991680e3c2591a9aa093cc9574d688ecc7d493fc8fd166068fc59b99672bd700a9f26e46c08ebb525ebc8d4acc1e4919367f2d01c2a2453f112127d57dd7c32040011eba622126f2891be89d44711b4f622bc9449c01a25203a773c06202ae2740e99222d01bd782e892538fcc12718809e4ce5a896f4cf0ed858a4bd781c6dad3836c258c19f1cb56a3692723ca951467234128dc09f1b2e5213c48ef08d6960e0fde0abea555738c62a56b18acf4113233c4dcb6e18638c31c6f8081fa33cc2c5cd7f0d54eade8735a50e9714106f1141df58893ebd859580a2d429613de252f71a14eb73bb0bdb2b4350e7a0601b9413875abbecb74e6763ff68b82f5c5992d591624deb48d9a2d374b70eacd1b5065607593610be8e41d5571795a09c7bf74e9139392dc4f29506eaa02cab65c12838c8e27e4a761e1e1e5893d23bb979729a1c69ee1d1e7ad29ee4f0c71de592fbe81f0a0a77947ff187bb0dcabbd3f4e8c6a1f6e4e8b2566b510e210afe46af40edfd74372af9e17e1a559534aa031a553c63bbdae1c6694f9e7b64c27ead93d38de2bee6388ee3b8d844a6e250904c751c0aeaa038c423e56bb5360b4b45cf5a8bddf063b05fbf7590e05e6d7ce570c9d2f84b477479142962bd5f247bebc854ac350605b5c53c282e71a7b1479f5a5809287a60b7aec43cfd4d4d877b54195602bbf50a97b87e8fea8d8740d17dc8c425ae7a877bccc7473c04c3250e9714d0a72722debad5349dc5ed58d0867dc8933c6c928361284f550c9229582394631378042ce223873cc91c5001b046be48f3e830b1f05febf4e32f204a6446ba32862c83b4bb29adaacfead2d9d27a354fe5b47acaf9ea77deaab507bb6a9594d5a59472c2ae47ca1d969414b0f2ecc38ea721c830ade9e73ce693a49a8d6a4dcacbb2682405ac2c4f245bf550f8d1d19fd79af5b46fc9f6c1a4532802334dc59a6e9d396743c9bde5e72df5a74e9e3f99a6e58d3db193d0696fd361657aa3d3de0d052cf9465dde4c22f1464e8b0542f9195aa104142801ca32195aa164275bc127c7c8d08a2a449195642db7644c78227b195ac1842239830db0d00a264891b3ac3dc35e3ddfcf662c1ecbb078cc896b731de698d19b585517d239c31adb64b7b057596321387e9dadc72a0821d99d893146ecdff310d7adc72494c29965b6cb46d75e654a740d7f581058ceb40d07ca6106731663c4b2190ef2e0b667d997e1eb6608912432a67d4ae4ec9a908c4d27b24d3d919c5db8e990d97a86dd2cfec27e7db3891c2920f317b3856d2eb8edb01e1b7bd6e219fe3ad7b7c05f4f9d2c854cedc23408b357989a3984a816cf3e21cac5337cbd5ecfb2202a8e3ec0a5ca43a68e18227bc49f8eec7147f6885d7b8c22da88d770e778ed157694ab6d385a1eb14d8b0e6739942a9996e58061c7361cd96db4ee57a603ce01b7641dfdb9aeebba361d59b670fc7563147146757947ef2b7ae9d2bbb8dd5b5c7b1a89525fc588e7fcaa19638c56b576d4675fcc194ac4b1a7bdea333245fae4f057b7993ccf43a648f8086c57f067710a06fa62d61eb3579992cff0fc84cccc3d4258618a847d42d4750c67d9b56347c14168e7f01773469a55bbd1077146c425eed5b11f215316cff84ac8ccdaa9902a6bd8add115ddbae1d06e83e1fabaedd0b2064f18e661efee841e863f4bc394d25bdb0d7a2b9ab90f0339fb3290b32c6799d391e57ad26d696fcad39c38cba25665af4eef7793a9f678bf7f3663cfe47643abeaaf9b0b471fc419d5adea3432f6441f441b10661d286bb556469c8a48df6c958b32c80c7ec64b4c5373b8e07640698e46d1a6b4e6a0a1f92147cd1cc8b0bf3d4aa910edd126700116fef42028630f5995a2b2c50a140c003d795a2d21cbf71172017c8833e4673a2546c8d20a335598a1c24cd0cc1466a4301385992533509879c28c136680669a30c3849925cc289951c24c1266ac98f99941c2cc11668c3053c54c1166a8989962c667c60033059821c08c0fa41429b1254f18812809021dbc0028c3474b4254b5689412e27a29a3ec283bc608e3845546fbceb27659b29064655dc209e7ab0867c4eeee892d4ff52cf6c09a3aad0fe5eabb608d2b57556545ae9c90abf9af0ad5aa3e831142c92199a7e91979aa7a03c2e699f6aa4f2c234f5508ac1358d33991a9c95325c9e6ed9ac853454b94d69e1a45a32015433892ab57a14665d129959e2a45a320154218ca958c925cf554a05c452756f8d8207f352857d5112a86b093bf7a45ae6ca6b1651af5cd2455d72457afa8102493a750754d646ae2243e1547abfecc03b68f61d1012b2511a414ed55efbb90ff6472f5f6aa27b9dc0eac44434662662466c6b5a7bd2a06f67b4fae3a279d9346a101c7e274671ec858e6d510870c6fbc412cfc69e249feb42c6a32bec2a59f236fc8a41afb6945b5350d1b4a28533dc0537f8a6ac50c8cc1b13234e6c4de278a86c00a2a9c6439334d2701a8a514ec7c8e191ce60e4b16361d1c6441dbb6cbbb9d5eb865d7b2f6608c96d629eb71489096ef6e9f65adc9cb0d88ea16d3eef276a7162ef5618dd6a7d89f37b0da371c63cea433e2ccfe912373220e0e4ea3644b097bc6186344cd0cc7a2c242eb573d369bb013c77ad59bf90063627fc6227dc40fa1887344ad47fc3042e8871147cc98132395f608a4d1554b991aab5859182bc4335642293bc29845cbd9ddeda3bbff830f1e8c10cda3513caefa8c5e1e370715700861fd8d6acfca3124cffc0dc93187103c289d4264b6e829be80cc11bbc06e7bd485a4904117394760ab2399d96481edcf6d6ef2dab5292cf7d902bb7d9bed75db55de755bd76124a2ab6c5779d69dbb36dbcde8cabbcb7d1bf794af7457e5dc558159656e1bfeba7319b7d29db3e15038148ee350bef20c6565eb1ea4512b47b9b18267ecb61d6e875bf716b74238adfbd67d3bdc388c44b425d15ee3e8e2f659cc51796fe7baab9ce3baa7e0b4fc2a3967f00056e51d15673892611532a4c20c51642acce044ce5e5d47779567dc57ae4d77ee5997552d6e3850be9dbb2b2bf8eb7e8198579ef28dbb2a5fb92aef6ea888de729188444f799faeb75c98234ea3ae94ee41926854b7f24ef9b7b2b2f29594241ab582bfe7148b575656f09772946729378920429c046914cab71b28510b22e4491cc184ed58241a09f26448a3381738955661452928efcb344a6574f8c658f047c2ae6d43444edb7474f76cdbb6ca755db722c160576acbaf4bdf6dbbd175d85b81ed7f357358c39f10b923ab68e880c290933cf3079f7ca4aa87c542fad4a7e920edf5ab9388034f32f5a3a11046a4bb42d9c9a08b8e8d2d446679235fc1f6607b15feac0b9199e26f48eed334b4a4c5dd2f89cc3d6b2b9628c9f6756b1cf0d671c05bf3d571cc57b2fb7213dad4dbf78d39cb2e253c8e09252ee98097c701b3fad12586edddd42062b6dfec47f619dca1079bf2b9dd408171239dbba467f0072972bfc513b9cfd9c3283491e1455644c148ee73562c7992dbd2faf10b9285c86cc31d7f2d43b4781f7e960ef1e7820249641b791ddb1b5ee2b8991506e226535ca292d2e3c0f4dbfdaa8f8e80ee560228e676909205917d47e392f5c35bb24e0f4b16064247add2b28e63c310c34cf19744555d2547cc9d7c8685c8148a6dba5bd8467421f7935888cc1d9ea28f3eb720ece1e5a64384610b1622738bcb43fc95f0748185c8de86e0de027f3173ef8f4886774223f2101f9eed7d4264e6f0a7446e1d324f3c2bfcc90b9159483ff6fbfdc65f11db8f0fe04eca026e3bb0dc1d5ed245f74b228be47683f4afc5b3eccec358b3e3b09ee18a4b3ab6d7e3d85e6924bca25737e6ed22b96e5d558b169f2fe9b05e1d87d5e2559eb8a4a3fa3c8e16a48f3e2124f5a68324a2d70606617377d285871b4c5ddfebe7c49f90cedd33d8007bee197c8085562c619239a96da7f7b35f903ce7a1f5eb52abaf0bfb44ebab8ff4956f9702561ce2100738e4f9c61790d8069e7bdc82b0e7b8aaaa6895b5d65d8eeb4ad64bd9bbdf640b97b6d7df644a731219bebb38ae0e8ac3d261615a5d04e1fd482702c44d2e552fe998df8e63e20dcfdfe40a9774d057c741f117247fa393b01099b9575888ccf0a3df64d8d148eedab3dcef883cfacafd82e4d155ee97441ea5e019216e320abe40ccf672d3a192ed4799769ace41495a8bad2973ced93db33e2f7d7577ccd3bedf84d9e7b59187d2c2df902ca433c7d56f667b528b66537af6a765117d536cd96f522a33a517e82cc25f125948d7b6b8bedb5e3e939706a382edc33c3f2fad10999b02310e7188431c7458a073878574e6b0c416e82ca4f3269160cfb40b6b32ad2fb3becc79cdd553ca9eb0a65ef70695f5afaaaa2aca4a56b2c274fe90234e3aa7849566ca8e5f9f56b31f258d534e594929a5f778fb784b24d62a8613dedfa8eff17d92c49fbc5a7b5d610b65ba90c11d6c5b45b02d4f299553a65a6b6dacb3659c73c60436fe93c93f3a9842fe9edbfaf418704c8921b411e18cf82fcb6de188218c9142d2490aba1f46c0c7d75b94f6848781f014ca2a299669cf93e9aeb536ec0abbc2aed0ba4774f78f46c1232c9861c442414734ca8846b58fb7270363e2e795f2144fb2d04945ab00ea5475819aadad5a6699bd48888e847df7ea16d19ecd695fd1c8147db55e6125aa5bafd8b2ae44b5b0e612cdf6b9f6c2793a67d085ebc6636e9fd527b522abc32499da70eb8826cdaa68756435679c71c639e3dc663531d11cdd5e34e79c739226cb5c992af3eae824e1d661c12b2a19b73dbbdc9c93833574ce39bb6a65f373ce39a7bd68ce392dfeec479ff629ff46a38ffec51f7b9b51ca1ce13947733447f323fca5fc7a96722390684e7b7d8a5244974864a79d737eda4f3bedbfceb187d05a3be79c73ce39670ecfccc2d65b9f1bcaeded26da9bafee9c33a875ecafcefa6571a9abd69c73a2d0572fc27d439973ce393bcca3e2927db570c9d6f7a85ef11028ec87e01edb10eedb6f6a685abb3308d5ad1351ddc2509e88d8de49ac6c6fe36448dfc33ac543a0187d88bcf511ee51cfe1215d9d08faaaba12f2f44454dfb012dd3d3838383835a22bb3bd152777b7e2e0e4ec4201a96802929c4d0ecf6d4e6dce6c4e585361cd9c73c623e62d5cc4873ccd579c439e660e8a67e4691691ef4942410644cc2f2249657559c9c0180b5f61cafa856bd3d3577842d9284aaaa79ec5b5bd299b07f6bd062b3fe75ffb428cc4cc4066f2c44684aaf8c1070f26470e21fbfd2e8d4ab155130a42061b05ef0f9797a68ad887f66077cf99eeee8e34da83a7e9ea5e96694f4afcf56d85e92bdc8da9d4b1b1bb7bde548dc41e1a8d923f8c3822e690a291d844965088e6871f46c02b4690e1230822ea47f4e4a10a1c1a412844219066532bd0ca5476c86dd6add0ebbe7267ba4f48ce91a91ff224af82bfa7604cf2b1ece5017af4333df880235751b33e619492a30163e83f1ebe207275eebac013fd0693e9b57be8d167d7ad971651dd8720b9b2b0acf08f5aad255dc61c21c412acc027063e316766c6874aa351924857f45a72f9c878301efcf9667208219978333e78300280a81cd0935702bc076120aafe25c3bfd001da205d88a2d758a08d161735308c9136da789c210f8f02614d89367e20451b405aa28d9938c3830163e437ada5b10c8c39e6e5f883163217aad8013df9faf32bb23c8557c8f29514b23c1058859904c01829449c210fa390bf1953184c261dc0a0830e396091430e2d4d5a5a4a5f28955c78c1858b165d68d182740589c4c2051696952dacaca86841452545282505250b2828232c8c46a22b88449689b59d15ba8eab02c76d54d8362d48d3b229641926050cbba2705d7549ad1614b2cc21650e9943ce1db0869432cb2700d6681813df597e881c42c829036bccbeb1a4d686acdf8385ef0be10962152231e6904197ee18331887fa5a3d5273c854ec403cc957ffacf5ef97f60d7f32b1031185fdc238b7f01780fc451c527c414c0194a73882ec01c03c19f98b4332a8fcc5a1e8040bdb2998b2f264802c1f03a2aecbcf80a97a792fdab02e0f03d6a02ff202dab070d4007c8135288e4bc0187929b38c433842911621db20ac118544341c007dc01a5ade5e04ec42dea018f2f6c134e42dbb0bf9054bbfbd884659dffea351f5db8d68d4f5cd760a65fb2481ad7e84dcfee33107d68079fb1671f2b64936d87995c7d1a7e84ac8be08e31a004fdb21877dc098ed7304769ee5f1f2f344c8cfbe12a34b5ce23e048a1e2a5f9927a2cf8295106124fd153c24055b79da2e513014d9b7c31a28b6c78ab3ae8cbb36c71f2c4021c76d477d497b34d2de76e8e38525b9a461203ac72cdadb1e73324d7ffb26a3654edb4ed3dc760dfb686fbbc4c256cf44d7c7f6ac7dbc9083fccdd18535a20b6b6a70a7b1c4c5b276a18f178290b98be5de6ec41c18b375356b1722618a9cec637badb6c39f25917ecffb64361e3066eb4cb1b0d5a1cb866dea91d99719b21eec949fb0669abe8971060f2736a5bdccc22e0bc3ac26c3112549baa68f5d560e29f8b0708a251cc9d7adcc925e65c32922b5176d2c0de214adbd28922f5d403aa5bd222dd4a351700a253e1ab592fb41224e2cd2a9229a8f125e90fbd148a7a018768a68149c620939b9ff435e1246216f2d77c2ebf24d3f6135e2cb8b0c18181ef0e176039fa637fcc523a4169bb26d3c649165b8984c3cf03001972c037f4564202e79871d584ed35b7c0b899462adf69d483906c6bb6b3a8cbba3bb097ff1ab79a340ccff6601b6f7e9ddb5d90ef3e970db648ec13264c4de699efed6a80d5f40f64e772cb78b34ce16e3b603e6321ef1b7c365e0cec95e6e1fe9c19a7eb1c09abec024f790e1143200cad94f325e4ed3945223b41ac282a50135aab5bf7851c523192c0d27f200fed11e99aa6ab59644fa3dcf47caed86ccb31eec9dd162064dc738dc6ec4d86e74cf7abb113718780ebddc0aa72a62a4f2a9aaa87e945440d592eade8ac9155593f6a4e7441e800034ef51a83d2657109316ea5aa751302f321ee3998c1be3f61198cbc0ad93454dc6856142a851302e21183f3d83712fa1d3bd8260e08071b5c06a3ef87a32f484d6a3258171613ed938cc85b9997493ce02a681ba4d769b4cc19a14ac79b9361ee3c2dc471a658309d3296a43a66a489e7e1a75bae95149a746373d2e69948c9bba9b4cf1a647238dda6e6a7113cc4d97b9e9c54d336e7a74a251d94d8f3c8dc26e8271d3bde9318a466937c9984cb4c764ba27532d371d9a5e6d374c78c646a10cb71da520b6c76f8f978183b48ccbc036a5185c7a39cc320e73a9eb3eba2558733d516261fee99d07732fc6c914062b0cf564799925195a923f8c27cb6739372b92e1b45c6c479ee4b527b2fce5c9f230b0ac892cff82899f44b216e6c2bcddd87261127cb27004a7a66fc42ebc22df1b7f723504970065da2353b0a6521ffa4361706644e6663374b28c8c4b430637ce8d22edc9120f78877f1e0c8f46d0a533e30268a0fb974399b231313131f7616626db4c40e65210f1dbb76c3dc1464c7da4d8dec9381604fb5d439d8cc7a1f6301c2058d3e3bf4bc6bd9e24b1dbbbedddd675dd769bae81baaeebba6dc357d000aed267c46039cc0f1428c8dfa553871a151b3543a62a1f20da74319971319df8e283e178d3b7c7edddbf7813be82dabb84b6c70ddbc45f4c1a2862791732fe6ddb26e3d29ef6647cb505863025e3a66732ee257405b5c7c4946350a34c996e374c57d0c5e412aabe0ea2492e1d2d9afed5ae1a8a4cd8fba2f46b089e240b8ec1bd5c30262841feea100f7284798cf9d0570d9d4ed3d590bcf745e5a33380fbcd4ce37adf4d3ef170181788cb8d1da00f0ff77a8215c9f2f8c2f64c3766cb0a7bd5adeff5e41ab294d8299c3c11850dc038dc6ec0ed46cccb667a6c528b6653ea57bbae33ddef25868c7717e632ee8eee1d0ccccbbb97c32dc630ddf4cec1c17e604dff1a6787e9b148a3224ea33aa7aba87c5a88cca6f786c3647ad6837d91c927986f4db4273126b0231d96d39e1432b1223102d1309cce0a82edbc693b40b08d651ce6ca38ddea497b95143eed3d1185b6d31ecf4fa34cf88baf7cdaab7eb0606336bdfa694f9aaa18c269140cfe629ef10ce6529c6a08e65f35543dd9ba7e79df185f0365914fff1ae81a82b930cfb82c37695564f918f7e4840fec477b32eda1548969e298e2574df8b35712798a2819fe3cd1062c7c1ac57216fca40a998ba3fb86638c8fdb5f9ebddc06a23c005a623ac980e9deb8f4cde5e584bf5a65e0cf5a18fc91b2e91f29bf1c9a301231bf7cbb31f776e3e56283a681940f940007d694601c884b8e29c59ca6615d030bba8053f3d9ccc95c985f6e8ca5c378bc384a87edc1786f40f48681b86498c378e9964487d9e630dd987f626e4711e3310a24765822f73328c466989b68e4aec35f7f3349402637b6897196673dd898186390509652b427691559c2b83667516b2a328c3bca99d4aec8306e8b9c4dad923d23ac2897c1dcce19d5625c1696c7f896a45152e55fcb3f3b7575bf7bda8b21e824377878d29ec4a131e370bb31e334bd6d34be5d205a9639dc6ec8b8c001f064a0481db98386f624932b1a08750dc198d42515eceb500fb7710dd5a1d7f8cc0d4080bbec70017ceed89651d821fa3d78f0c07e70eb7c14d15d4b6c3bb0589cb96363e9048c912e80352a103376f96b08d6c8b2fcf564000318c00078c8a6067367ce5ac37260619edfe230de83953ad77643ee543dc830ee968d1c9138ed495984c915573001ea20d9412df28b9ab899f0974436956a2988eef7177f37b9eb6d07e9dd12b6d4020960c8c9a70c91d0a40b196e417418c908c3bcb8e90a91fda43dd935b787b20b2e8a16dfb61b2df08ccdf7029dfb2deecc708339b7e180390524cce1d6025f43180e2c0c1abb6a5a7125d33bcf0c7361ee5b325de62a6726ec098b6366d34bff286c02db8331373ab97b7669302d02fbbdc86d3ac5a929424da5cb384d5f4343db0dacaf27530416c3b996b0f11814f6bb86280dfeaa01f0570b803f6b7dc01fc9057fa44cf177cfa33d356e26ac03e625dcc5bca3456e60bb6ba851f7f2d7934609e0f2184e63451ad5e2f2584ea35e5c1e33d228d3e5b1231813984ea3767897726b898569716bbb617ad683bda7e9b8ed2805d1dde52ed806003b3c6e38220f1888ce5de2e130774bee15c0bd9e5c0ce76245b01ccc0876046302d3b181eda0ab03361e863ccabd9e5c2c00172b723117173b723126da93a771b11917db91b998131acc8d426fc8302e4b869b0c7c0db5878585711eee0f23846cd4e861a61a6a148ccb574f1a157369fa67f3cb61ffe557d0e9359f7efcd5d3574e57c11f29573e30b8844f26fc916c87bf93f0e7c1b0b61b3138c6a591da077091a8f277a52eea22314f95cf57e31dfa3400dcd21599744b8d81e89c729577869b8bd3748cab9da593ccb9dd98db8dec7d775822c3b839e4d28548d002132e7a5c6814ed4920bac378063753b78d2e105b1139e2af74202eb97b3fe612a6a6fbdd641830304dc2f2b5381097ccc2f2fbb801d1ffe3a6c325ff7d83b8e447d3fbd9d583d50e4426c33453167396f190c9dd4df2162f10998cc51fe4cf25c3588397c8df718653202109b9851643c695c10e9232fe18efed7bf98c6ff88b69dc4136415c72bfb18de9dd4d2f3d335d9877a5bbc178a9afe9d9d44a77ebb6fbb9e4edbd6ddbf6acfba5fbb9e4d28d37b51713d087713f93102f2f1d7edd1b733bb83164f44f2c6fb80501f3eea60bf3784b87f11561ba30879b8ed2b7d334fe8ac8305eba11c633182653115f1119c6673aee575b8e985f0ee37edd6130b703db61202ef773dbf1f2c6362f2f619bd3fba6afc3405cf20b9ea7b738dc8260d171c2325888cc313e037f315888cc321e65bc878881bf9865bc6574ddb6955e99de7d93813f25aa6ebba984bfb8451d1dd47d366a7b87bf5ef20eba5fcc5d16d7a6a3b14907d6f53b8ce9c0eae89b4e23237ef1edc22bbf78f622801d0e3b35806b48a64632872123860ef13ae460732700990bdb7bc1dff3cbb70720c6e0af9e64c0c07879005e5c9bed26969b4c7ff12c9b1adc70bce0aff3cbbd77dd638c3cd01880007690790eb765870bdb1300fe2e833f970c93bbcba091bbc3f890bbc3e85e1a3aec148dc31ec00ea5cb1c364a003fc58899c103ee68e00f6600f8a3b103fe7cc8f102b8b03d197c0d759f8165e0afc66098a11818061ecaa712fe9e03f0970b01702f5e5e20e6ed2f17e600bc788bcf4d47e70ddbbcb8e9710b82e5a6c34dc78b9b5edc2d01f085b6dd78bf22b61db0bdaf881c3b7c23458edb35fdc585d9b4ddced17497b757fadbeb107053daf047249bdee21dfe80b8e4f8167f61c22f5e5c96fbf9c82d0e80fbdd24c92d8eef57446e016b2e9eb17fb60971939f5d2066965b9b0e95ccc272b9dd6f6696f7cd020d4f6291782426893d910702c1202804859ac49c8833143f970c43c3870c835a7e3eed482e99beddeea6bb637bc772e3fd64721cbde55f4de5a0830e17760e2d7764b3f6eddac4c3ac1d6e710232b9843f1e19884cc6dee2b68b7b03bb37b0f7fd80b864164c9360dab3018b91a26814094fc025a3f434aa597a6527cbab644e64f9949b19694f1e43c14846c74698884b0d14d8a518be89ee114060c76d5c0f846613fb412797904c5d6c8027790d34f9400984e43514cb3045be92fcc8d4a5034fb20e5d492e276ac8dfa5e3b3440df9ab43d710e9629f4b8b7a5c88c89b8b48bce968dc820632b88355c12179be564969d7f600ccf105fbfd873405e8f3040e0e5ccc19d8525fbe56219ca692768441f68b3842304a92509638b55a4b8a385103b006ccf2b10445aa8833333333f3d32b70027bc6c042924c0505411249a660cd3d991c65d4c007b2844db2880363e42b1c93c86d049b082cfcc429edc9db2858781fed491973228e3834b0f03e9c6833c8e001acbca5dd3a50aeb41fd6a2993942aa1489f903c6543b32158fc853757b04d778a45a893fdb78ee5808c054f7ea3f608d98ab2aabaaea2499ea70ec91a7ea1cae483996c156187be494595b72ce96c7ae6cd96368c1e57d68afaac7f011f8079ca1d94860213582091b7ba0467fc854866728a5f5d4faac2a8a9164afa79b0eeb1a7dc5ae8d751d7bbdd675eca3b35eedd8d54e73cd3e8de85345677cf8d15ef5d8933f9f9ef8530635d05bb8ea89c2d2631f86d163b7c16ed9466155add6fec0b66af4f5a23826a9aab883da09225371079eaa78049eaa573f3918410524559890f55fbd71750b6772b6272bcb7a5773563dbb8a5b75fa4d99a3032ed05fcfba48033320c1a9812e3498b0988c4c65f8544af9ef1223c94e9fc94dc7757a5d79ebdac84cc6ebf893bf8075e9e595b9742afba4d1a7293f5da64c7bf327b01ff4a990665ed51463f0c2b4b806d978482353f0aa66dc5c60297d25447b3355afeb7a6dcf16b1b5a634cad2648a06571eedcdd7a9750ad64c2c8435054bf111f8477b96142cfc0785a093cb03590f56be654b591d68926cd774843e19de05c511b70c8d9946cd9e91d961d24f38e7ccb2e2e0e0e0f8d4f47f08a18c8c0c3cf5a165cd1985dc32146bedd5c0ed466daf2726d9cd0616feb3140c4277f1ce44a688467d97a171970c03ac7ca8c46c9595554d32a6660682000001f313002028140c0845a3e1783ca40b73ed0114000d94c04e745099a7414e31638c21861000000000000100000810004c8d4425805e523568580ade266aec1755d39f3940a251a470ad2f1d3a415541413c76766423b2f0e3a706dbab3981fa797788189f29194846d2adf304c5839e844c72de243763d520e0faf983b1288c1f08cef3f1f91b43c39f8a49bdaa3b7918ceccf6bf9d320e5dc9f9670cf364be997fc1e2e67106da818d2925a4a9449a33ca77f0ddc2f5cc61244b88eb61e700cabcdc42f498e2aba964f254aeb10bc81af41e71e7c7c3487fd6a046a1752cf0ee6a1e53cc2d0dd14c9f0ddbfd4f523f9d454b113ad78ddba5aa33008c85f62e65761f6c86f6da2d471a4f4e744e57ab669b3111a59a41498ed68e36088c525a6e337f45bb6e421ef99b186560215e0fc7bbb943e31f377d65bb5ed007425747406248959abe2ab8ceccec88c861363125511b3621a34cbd53d526df51c5355de699aa2b68b9a867366c8f26c93664cf72df6339e1c50bfa1632c2fb334067919ff883d3401e905064ebb49b53b026835b1a6e14aefaaefdd4728a7151c13cce80b6e25f855fa25486c6d360d18eed65c0bbd7ce5ff8cb4fe20ebc0325d4fb3de57931e55d4ddd98af600788724b31973da9a5e1a4c169564e59998de65d690390d8a6c79a9961e8a92170f98c59013af40581764df317efe290a6ba69d3649c16b0cd6562ebbc2b52ed359a49eaaf6958141048c691be4a98a46c34c5a9dc90cb553b28448aabbd32d663d4df42a5d2752a0b95f8f5d4dafa2e81eb612f4d140b98878c6322caf1903268638ed073c21c656d442a11a51398cb4678c8afd8bf0e2955029a48fff10adc6e08bd845ea9dbdb35d938cbdf989d30252392f4e25525efc046511a5b666144107778a0a4625e5998a8304afbeecdc948bbf658e9cece2d1140d15f7b9e8e478ec8b30490349334e109385aeb49fa95182a3a0833403d0e1b1a79071bea0cb6ebf000b141985cf429276114993ce8c8389748ae8c64b47c0dee07319397bc9d034908c09d7ab873ee9fbd8baf696f8107baeb070afde122df8c926ea569665e20497ba1c11d745484d553429a6bbf630c1b18db4bc14ac4c36e1240d018d075c40cb985f98630ef5adc7cd181e06a4bec3fb074c0b41b08da4c336b2e71fa886ece374505c2225d2e1710c21bf40192509df33a862577721193cab86e4a1d8297c9fb889af53e9b9b127ef9f83ec57990584cec1c1097b01cea2c18fc992356956a8ab01eac4d3d91342e8cabf50af64aca55a8e953cbb8b7ae9db506f6e7675ee4235fe20c2174861d04e9fd6bf062a428201fb15667ae87aaaa4368bd99629546156158d6a56580090654daf6a1bb714fe26705a786ba2f51f906e41485beda0ef4d8bdd81a3035db8d11b6e10aaa722d3395ea65d78831dfdc4860c67bd78291e725288775cfa5fd721a7f947af4360e89245038a77b4d6915fc4f1d5b9849446308ea7cf5fd338f994cce94bbced5b61c6da799d555348c595e7bad36c28a170fc471c22d324a03af79a43fa6ebdecdee018c96f1f53a89ad6d7b8de7e3ee029c84c9d6f52076b3ca980434c12ed2a847be6ba904a294526912996a6ad2b54433f46a387c4b10dff053e62e59758c2b551e29c1ad3285df4f45a974450a7f05094f42ba146b07644bf64c45a243d1c0d24f519cf585fbd1f65af966161ec9d7ebbc096ca8e4fd1821efe37a4ea3cd989d4a7b377171c0b37cf2322092cf9caf0ca702941b1089a7f700dd851a040095ebaab5e47834c5425ef016ff8bc2dce727fe2acf0707d1c92134a70b59b32a0cba597c21b9dce19776a138b5d8d7f9c86a1d28edc5ae4f70aa24ea2acbf1e202a8d2823b54b9d2872174d02fd41a73d16029fb0507eba11c8e9829af74ae894bb145c6fc7afeafa78d7209f479c3e4e91bb581f61aa4cffd2a18d600acfdcf2412185b4bb7f3ce5cb11f5d912c0e049bef8d94e0472f51428e53764ec82061900da5428804f0d2d94071cde29259aea97154622ddd5d81a37b8fa8adcee2382475d0f92424f3ce5e15f3426d3367e56ad9afce410053482783ee821b3f3bb46cd783a62fa1bfa09d691779bb96b04f021e02df10d7a80f25e62d81eb29a9c14421d9b9437e44b2c0a1c847d3b1db09509ada3abe70d943ba42f0ec164a58ff8beae7e87f5d34d89608fc5e0af89e1e52a6aa3f4b60307702324f1ccb4356a109e9916c319f93aa0d22cf4ed48064b50b60fe8c4af572f3f26a2454eb32ff77e78bfa9a9fbfff094a207cec993bcac9db1d239e27f867ac5d93bd4108cd497bf535263ab9182eb4a0246d6849c9f36951d546400249196aa8c547d92bc9c0cabc5ab4a265f412d2a07ac25db6bbae3890fd7c3d5cfed70e159f886f6e88263e6a79506431563849670148ec4e83c10757b61dd898569a41f502f78038e6d1ec766a9c367c0c5e0faade95d12be43d4c5c6b7d1f48a1959ab3c71b1d714324942a85dddff96bb34835e9d0528dddb4bd6f58f00d2e80e025a560bc305b96a70d5982d2847b89bc8e782dc42d88bb56bf82931af0bf215ce87b3625980da54bcec3a8d60f5b6caa978e9b2173cc524191abe32559492a8cb2f0db08ca737f9bf98cbffc70bc15a2a0844bc4c824baf7269dc585235acf63d209871d2a5a2b1d5e4721c95b99a99938eff3d59d2287c2d8470543d20a4a6f61cc44b3a9e7c8871e2af11a8b7d13a59e9937788497ec454e500e53a338aab84d4fa4b3298e2d086dfb193e9e3e0dd0860404d63426bc081ae0d23b68bf552f81cd4d83307b7fe978fdc7268b37a1e589982ff618fadf0aa3cb04a41b29db45b3b37502693ee1d5430b370208441bcf9ab7fc1f1b37f095448bc66de73de441826bc1d2301884f175d9fe9239086925563ec898fff470c44b45d81a5160f12df7158818162124cd0e969c8fac07573f9074a3fb7c65786d6af73b82d87bda395689d83ca7af58959492187b32a89f610ba616716d842d25149574933cdc0d61d89963b8924afbfd44d4a920f121c85a5d474fb81ea8007ef24039635a064611da80030d50f951df9a655d9f44b2996dcf47b847490f9b382de91360bca503de1652811769d889f68d41085b271a1c621853955b1001298202c2eaf5dc31f1e489fcacf67ff1791f30ba17382a9148e76845f50bb834450949f594cb13101ac34572e1e63e686900be82219fe39ecc0e55ec4a0af4633d2b582c1a7da7b0d80685836236778119cf2583de7a330ef834f7a4070e1928ba94bc6e1cee99ad9934e2928314fd41b45a9672f460210c3f21f85e61d6b2183422106e54466b34415432b47eda6e29fd990f92a3f9c13a1a030f8ebb16b36f8921a6264ba6b510ac07749390dd295e5b0e0170b942b8741e2045191210e1635f4fc272ce024f35704a048b74463da01fdbd312d926311fcaf377005f984e545db946ff124bc7483cc913d4ee1f56b051c92567c3fd1d4baebade8fbe0a5d67309515caf04ca2808d2832198df6b4fd4cfff51a97f8296bb45fecf47b53f64630232f4bae08c6fe3bf4de7bf4a22510440961ce624d120531beee620858012f4579d82af57c4604400600849cdb5a843e1be5c1bb3495323ab75ad5fa457d8961bf0134a8eea2d0f25fb0d5a596f1722792c2c0dc2e1c6c75b281623dc5bee821276449a21dbaebb887a8d981507c2f461b3d655dc5219af9e8c61d1c52898944be930318f893fbb5c6477e41aac9761a028a4d0ff0ed1d51f617b9c786f0dab2764d96a02a54c8d73e647e8e586ecb687564ac87785b7551efdff9b3d72abb619f2a725db8d40d46d97ad905dbfb3a4f8cf3ddd0e3727728c8297149268feae7df6da4dd295d27ec45600e32976ae3560111ad09d10170719f71727dd0142c5f83cd274470dce1bc1d89e9a49bef24b8f9264d2b6c0f1d3040f85af1c7363ac60ba47ebf5ae1c6b3be8dfbf726e01c742f116165b54bfcdde70929638efd6649f1af14d6c1b47a64f4969bf3b455884b1a3ed6ca1e8c4253158d26353bdccf30c6a628a088c4dd6df9aa28a4bf861979fb9205e055779c48fd8295953257b11c36c7eebe358e4e78a55589cf4063060131f92c12bdbb9ebb99635914bfd56271f047e90d2b6dc5993b5b928d385f2420f5bdd1d361e8697eea105ed2df795516826257aec6fe9b06a0d55f6233e9d4a509ffccf93391f771788e418b2c803480e43028d618040b218d5382ecc71c5bec8f24d84837814560d46a235865f9f2eb6eb56eda6214a4c46387f7e9e6a4d731db8196755464e66d4f126cd106e620ba9b08269ba09b10b7de4bdb6c17606ab788d9011752c835a075584f62d525f5ad340ed4207cbe8f3a31c8142d1a3b608eb54679d6920422fe9cf1add9da6bacc2db4e6ade16ddd3adbb798c55a99cb2eb5faa045665fedf40e0cba9a24d3ed84bf67c3cba61e935f0e17efb774ee15a6c874fb9cdb6b868d7b11b8b32fd685fb87d9165550675c57cbc737a4b744bd51c646d64708c4958be1b01082c39a9ad09c71781ed1d9eaa544c9c36b402103e07d29d8d7e84d526458113473cde2814e14eed667b3b4d0cec69f04015053bcaaf3484796a5ccfa2295e3dd2e08e9ef3a19b1eace9e6a7baee25f68334cf6d2cdbfaac05cd10219bee20793ae31c209b0db693311fd693b3f3f7b57c7d6c190c084c1d305e6e44e1f1e38cdddafcb94024c780460d77d2d6a050958490f888e4b0cfd82e157b99bcac9f4f07e50e2ecc9d9cb0dbda160adde02cdb4b53b81919007aace8dd9f5e62d4f221c305a805421abcf8d25ed713c93e0ec480f35606f4223b0b7e7b9b8bce3a370213741efa0ba5c2ec979debb0b99d9381f06008749c972d30611e5dbf84092e7d079dd230166e1c2403f1afc09d9d30d36c03a5777e6e8c880323a2822b29988251bce5dee174c8d398124a5332148c5a92f1f7242a0e3be3aa554c224da54adf8ce872322c94e0f36ca9f81784fdcbadecdabb4d8575914bf49b33e23794ddbe414bf50d94f6bea1fd73970551f07c81c47c431b7e1011a0ca4f97e715e1e18a9d1efa59450268db34d28c10b0020da47af41e0bfa138121d6aaa9f63f345eda7ef0797edc828c457095700f787973d3a1e2694b875191bf15ad8055212a225c8df9dd4e4815484047b77551748aabc03465fe55abf42754f42af0bebceaae18f1bda80201dec851815e78464f597c00c156b0ceb94dd65bba1412f6ccc0965b6fdd11556ef46732a94879741efd6ea213e2b777373d4dd8bd0d843d12e0ac9bf04c4ee3807cc64d97f963a4e2be5d42d30d4d0db4b9a4f36104604de91283a85a160475d1b37550a9a9659c275561cbc6cab6d1233c2e93a813164ad7b7eb76a3e6e50f549c3e08bbe05bad1218fe04bdf7c5f7d9f744eea5b1cdf76f1f18cb81ba5fa4b9b179e5a3818727221c75cdc56b628e2d17c6ec794da91987d2ccdc4f756c4b9894f813dbf2ff1e79692d81e3f63b9b507d5e281ab1fea2b6928689d2520fb160f75f89128ac2bc6b9e66a9b5b13e1bec75614987776f88ec5d8dd72b2af5970a549fdd0264de6ec41db83536619ca0da0df2636b085afbae774b915d89daaed79dc4aa6ec5c7367befd4e12eac0cde3665f341695ba5586a81e44eb1018a895d9bbdac047953e8c9a17ae18e06176570b20e4f42b6a7a1077827703f01a1c67a82e10e61a06a179ab2d3b75dc50a426d123a1dfc9538d6e6f63cc9e4f32b560a120ade9b6b1b37cfea039017eb09b03e46a6fd2d6618d0f60d439821e5fb5f968acee8c63367d87c79212586d102ac2b0692a94367585b28421cbfd7990c694fd9d7bc3606ead398262668ebb55a232911779a5b4537793989f07d3380e0871f204faea4e7c136db4964f84aece16a53b0afc66ddeeead3c2f9ea7b5886d961f7c007deb3ae89ac86a21122e01a45dd79857d2432b9fc3c347af1990b76f40b63c9cb23011aabc66f305b9b56b117acd789c4bad06a0e13df3afe44478c20d6f41f7abe8274dfaaec0f931f74a5e60ff721dabb02373a083981039fd6de443bb4629845950d6bb88d4d7415a66e9c192f88bde068e7dcb4ad702957179d60a2a51781e779302f71ab2fe07136a41cbd248a4bc51c29ee22b0668bd14e2fb20fd695878414fe6795db5a56468ad6818088caa650905dc49826ade9e2889c7c948302ee495e1b7c43845320b12923105616d5d039a3aae2fa386cec1672050b27f6a46af41fa93438d648c90fe70a46f046a4be9b3358e9b460e2838f546df513109705ab0139dfabaca66a2e44d10b95253cd9c89ca8fd83b2698fdfabffc97f99ffb6e21e4cc158b5dfc7d532f964c9ac7a8c5011cd825a50e0e56e3001e8f25fec0f7b9556d6658c7171fe24bde081797522ca8abf8ab583d6c420b31534a88f4e03cdf47035db41cb8b36e3085f05e2446de65f9945b195ae7ea7e2b720b00d3bc4507c29f308193468f4b176345d6609c4d43ebe20994bf23d2b0e0ae3a6b81f14bb2cb8793e0ca35ea701d425d9db17847596b1583af93d04ab80f5e3833e04e2c3ee0d71bd826d783494f5a035a9b93a830b9a8361d6049cacf9061dcc75528ee5e2f21cd587da2e245375efaec1b49beccfc282131daf32a3c394f4896ee845fb2e66549b48ffe6ef7ee0ed3eca9100051054fae3e3f69b0fcc50107ec97e0cc48acd592fd3edaa5038d2615735d04f654aeec81736f773b5b1952f6999702ccd2551878a76f29ae464fd79ada65f23e8ee702a90becdcd18a28ad64e43758cb08d1704bf4694e3ec4bcebd22941528772413c6a3e8cafb2c9173e3d7561566a649ec37410e3302c441d58c5dd615f3150864f7d712edeeb1d6aceae141b9047721e151f6f359e55d52eb0cd42edb7e3c5bcc9fcd9de4e1a499dee3c73144432045e1ace1e5a5bf9048511ddcb022fafd8e2c2d5923f598990eb0e20e8e716a524032040c8548c7e81eeef8033ce482f4d0de1e1537e72aa8208e90b043321a28b731e0faf99cbc962105bc1db41d72e314cd460d7ea5d741d202720e7cdd2a93a37ba9196bc9647c54889246bf547ec8bf91690023e2fc70a5f1e69bb20bca9557bf2035da91ebc82de2672813af9199f3a4352d1a0b19966f23c5c3756bf726e36c487831e33d31a3d446c9ef9aa68f63ee3ca0aca3160af7d3f11bede6845da5d51cb67e00f95ea1edfabe532aec5fbd24559c958ae08e65c80749873b9619db0eea347798444d15f1dcdac89b07f8c227f406ad90b6bb04ab90a95806e3065b0ab9855f88d0fd7e18838f4c9fd4cbb15db263718f1694e25b14ff4c901872a074c1fa0d8782b70b43d6b278db805a576f18898dbd87fc035a2620453fdcf0b1e705a51ebfbe87cc060e213547c1ee34dcd27e03edb3db23b33eddd21701dd3582f25320f3f1b15bb656bb95f8e761f86be325bbe61e17d73cffad35037eea8a2b07e48b86f3c48aea7b121d920c50e3d964a6f208242b4705dbf8170cc03220cc234403703e6d63c554c75e3ef69f55afb98367a0df4c8253a49bb606abee765662790950180a37833363379ae8275be59db6b7f8668ad41eff87f393d53a547e0df68e06b86b87dde1b9678396c6a155f4c6e370853c673cd0804556d765d846635989f01de3ff0e54def41e26e12fd55305114714aa0a439dae36f8e0649c001d15fa7ba6ef30f02ac75270490fdf90fdcf114688f98fea9d72604084752f707890e9186e401ad8e064f24870838c9952941700d410715139e360462029cf49f047fc01759e0e61823bad546621f10c4458aeea70e231e80b2ad8cae6400fd6162f2999a00c4d8782747139d914c1445aaf71dc9ad80aee5484c7ccc6f36e9047df68261f58700787f1ef363431e1408ce2b37117cb372323e01a47b1332584660c701ab0eb8718d484d879875f4e1c4caa8b920229308579efffb359666ff6f761ddf17220639ad680a1ce43f2d66bf376c2037a0885a588504360f274a2fc26bd389fa389d4b461f7872218db039dbccf0299adf6f1976c528453063fe60e0e98003977ffa14571303120411bc509317d0e260f7463eae30eebdbc61ac9b68fb4fe8125408b4bf4f252e301b29d09583c8183302f9624f1298894e5ba289f9d6f8600ececf8c958623205794cdd79deb79707bec6e0d2fc938127d8f00b7ddb572ac278d8884aba28f806687dedc7c85c55410d98b3f839d201a5c630bbae0c4844a7fe40f0bf18ad350c8c986dcf840af79c6bf150d21240e5dc085f0ba980f1744f6541c531507ad7fbc78cf4f23be63d89a72a26d352444076f741b0dc43fdac3cd704ff106bd233c53d9594f01cc5c64e9c20a2b05ac9bcfa8d5e053acdf14bab54aadc37f1cf0f0e38b45f5a63679644d7a112293eab98b01f8d99173e6c8e0355e651751510f5729603ca85735542d8c24a23a8d5e2aad376bf546e0adaa215409fad393aec7364f8947ce373d7d4c3037fe869c4a0190eef918341aad3389e554c238149a0989e3bcdba69c2b598ff70605f1380fa17b69a60f376b656d1d13ee8ff2f24d0de44f4d6af3825e7095ae5dad28e0d7d44e2ffc95109e86f78e2d93ce25019606099302d9957e8506d56b3221a1a26256e890aa3cd932190a987106907f9f2bc99f41930a32c1cb74c52681a09225f311253f7f3a274a3bb18b45c6608b8268a11f076bc990691397f8198968d58f0c48654bb1d944c0158ebfceeb854c8950b2ce7b4add069de19ff234275a44eea104280b0c31668d1fd143b738215c2a97ae8f218373437795b776c9a337b7558b24e6145a9f422f25b20739051acf2880792f227017dccc20f382347ae4ff68717bfb742c01bed79a5018db6e55bca563f082a4489d502ae714b7b1b1a70e8db515360c65bdba63fd82d683a7afe34bb27dd36b99beb520ab9e60aa326594f478dc14132e53c731116cd9ccb1dbb59d91ab41ae0fccabd0b483880d60497caac993341645794bd6ee0056c560ad05a4f980c7fee8b002d58aa189d6ae9c51ec2683ff2cdf1f5d12324bc274836c69a303844c81c51298c18df01619cb07dcebabcbca68462ab58376e5b2d6504dde4c350e03e11458f45492c06272568bd1f7449e0d80671434452ea8b6977a7df0112670e205cd0a89613cf346aba486fa9558927bd565720e51486d284ee8435abc272c47444e3c40088da0e1be40931375639c50255e1cd462518e8832d8fe95189f796c52c18f68c42bb6e25412aa0a22cb1b6d6643cc0048496299c2f33023ff917da743e6aa88de1a30176b40dceb95f43597a922141aa16388ed0980a39c3ae9ad69f2109f903252bdb540d73daf5556449e882a6c99b7c46dc0a030ce17c04bbfc49b17dbebb748ed25230fd35a1264a6261cf0b5a10be56b267699d8e57417935d4e773db9ebc4ae53bb4eec6abacbe9aea77699d8756ad7a95d4d7739ddc564d713bb4eec32b5ebc92e27bb9cee727297895d26b6c30f638e63cf63792e5b6a2e228bbe861d294718d68c43bec22591c913b5c8c143ac63bb91edbc87a44fccc5c2ee6903a1f2264bee000b82d9995876fb84bbac90bec8c19bf7423319f0d8b9aaa7744e1248091d8cfab40bd3bb059846ed408d6044bfdbee99b4bea857f41303f553f910827b5943e8b4d872d4636d81260e6de9b096b917ac65b1a1926d34278d684f693fac0a2c8db6dab304ad0b412817af16687b801dc78ba750db1d788d67a2e254b7ae167a29a05303f652388747ebd330c343c121f11c5b4e907c771691bc3dcbf00ae742a82df9b3dca503890a688790cc56038eeb7017d614c6f8cd62d10bfee125ac992913f0538b23e163543440d46a2c1609f7244f7b889942179661c7dd61e923c7197d2f701d15ca6c3e47160ef492aa80319484e19a724d7b285340646fea46fba174960a8c1c8258382c470c2c32fc1dcd1d200babf20d2ed59ebb394253af0a1f0438261ffd10802dc316137ab9f0a77633ece754bbe767f1c26c26f26d91320f427ca09ac93e13d9f1925e3f5178382a228aa318bdda4be5b852855207ca2254a142f8b00988ca299b8c0482ae8f89e8e3f4e76478422b09a2f531c0f347f056658b57b7cb626a5a52018fe219900db577abae9a0ca5f0a4034bec83ea5d24e292073659cf02f71492ba6cdc064f21ce4561fcd90639f3814aae57a18bb2865a70c7bbb25996ba5b6e96d6689da8804a4df399ca3b09ef47bb1ca156309f7d23566ee288f3ad1682d8634b0c2976946792d59f16326677eb8f94298dde72783bfd0824483704e37f9d1b53bbb91bc57cfa53b5b553e4aa646543a7d9754d5b300f53223b9b0a1b64850c0fc5b972007c28b7e2455c9d3d053a3ea14b083dcbdea5046a931068a039cd51748eea84d3a29f3e65761570432ede02dd311fd06db3c235b292b8e4e4e20a09188eb999e06a57e84548662ccd057c99702181787b15cb192ec6fa9007334caf3a5b7d2ec4b376ce9e2ca013b5358f1ee73d1ab55a33eec09e23266e8ef6a839300c11e04650cb9ce13f0d647649dde80941a77e20225e46ad4b6e7df8492dc806119bc59ee4398ac8098fa3607b0f067fc2d42c2c60fa046309aafb745c3b6799d4887c1813310dff8129828a68e127696b327c9114b2cd10789d7b8cf02e3dd48cc09ba92f6576bb23c195ac0441b3bcddc53117e827483c3f7ad33de9d30ed57917996234c7a1d565a7afb183270ff08aacd631f73b2de6ccd44e1009753bddeaa7662977beee9fc91be6591871e37f261caf0a13ff696e80ec6ee8c3f60dda2311a614691b059553c0093e4caf31e66a9359cba01bc35eada0fe0db94359ed2d3ad09ce88741495ccc5f024fd08b7ff5ed66a954d5f00f1f84351f6e1cb31ae537ca8edfe208fb9755910b33a94008b6fc715edca8f60781ecdde9891d5bad02cfd6a33ebdd7c53b744eff35b8053d937ff679a3d7cd12f09f8a5cb7f770f245029b19eb2cd1c687e0962572ee8cfb8655eba2a4eaca4c596a1a11aa29c864ac269f2e8fd1fa13bca231ecf831d31cbeb5a6db4862d7b043ea8d2cb899060e319c7674cc1b63853a64e4300d2671db2d7bd1d548c8f2b40a4007d91a49981938392085a8bd852054ca734286b45148d7140d992ea12c7b0c156a6a0492c877408821826be690e4e8c967d14a0a47009a4db9e6273d0f9c8db7fdfcd081f755c50428610b0f12814f3b28cf037f06d9b434b9ca5bf827618622c101d190350a9399ebb4f9173baa4e5fb36a5cc2199d4a36e856fd9bbccd11e983904141a5e100e519cc180dfb866ea1318c041514e01fedb578e4b9d1af0f55d4d78c3d83c828a8d4a3e822327513712ef572acc2a5659c45c387cd625aed8f1ccac2938f54e8b1982938ad4a84b76c238a316f0035c402ddc45d77129f75c931ca25ec0934bfe7dd46c8342418c3b61aaaf16ad0a757c15288d0d163daf34c78750560e6158a4318dce3aeae0f16d94841db4f83b49c662eaa80f3e751176582668cb1030e7a88411b46af26070264f796236015c9445aa113b75b0e087a81c94485f08dd9cc31879e7f2978af3c937c0e648126f11b301d7b0c899b813207e252a108816d61c8d9e10d622177e8868e9fdb8eb1c3bfa35c62a1516f83a96cfa4058e706c8e08959fc78ec9e7a76a4cddb728b1e4c4c102f9f0b6decd5309ae3c3cbc30f9740e40c661ea50d5e2353e3452e88e1ccc9554f68307444741118cf3e80a248e15d78687a505b44504fe4da8bff29a465eb67a5d643b758e8aeb195a5f56c3180a91f652dc2e30bf7642d97b0284eac340a17db9c310d4e44505c1ea837155191821747dae018b332ef0fa79347a719928aea50599f567291343897f0b4a847504edbf00fe10996fb77996cece6dc2874c8ab9cadd17e0e0aa64a5588c3376dff75d1bd54118254fbc5fed13beb1120e6eb3e1532579332ab2868ce43ba64b18ab1efc520384d54af859d71b8b8f13ebe4b6b886249a63f430ad6b6b58bdcecb574f601cfc68daaa2c461ea91ab9ad65234560fa67463a4d6381ce55637b10a35edfd54c515b4c2e95a8d01c0181c25b54c8b619fd78a9ee50376f6e696e79a568db3ee311f4b2404f0828ddca49fa876cdd25d6bafb370f0742358a38b3bce773057d9c085a83302e9897d3bcd17e89fdcfa162c49fa2fb04ec65c8a34de83f050226ca5d910196ad1aaa9fd8d4e8ab7156261589a62952f5cbcefce59048d18aee0bf8b1dbba27b69f8a1202388ca5f80d492ca03dd11e39eba0c6be27982c741edae76d9dcc018364e384bbf466880db1c8cf85d247827c6a975fcbd001947ade6191947d98ac8d0cd5eefdf0b2ca11a55788a8c6fca05649bb4fc32be37914f64b9920ab5720d0480f9282f639f761c6e0ea5aeaba226f83894ec5bed49d4193e9d4ac545c76c268d936e834a30fa00a6de88924537b6e7240cdeac3a2466dd673abcc7a05c3c7e9853c51db243039cc082fbf026008de1ce6b2acdf1056b5c6c43e1a59564876c0c43bc8c499b8fbb4f62d8ed68244b12c1787570c94f97337f3ea2580ebdc920576bf99254d33bf5862c3baa929b19f667f8208c2527314decb6f20fd7656f7790007f8c5d83304b370972f8f5c67114c4024dc6e7c811b57d52804e11cca93e170043006f958847bfb7ddeb54130d64e4b6508250c5be4ee0892a631bba496a8d72878f9f381c3657c839a108a366d2c8a3d0679ae41c295b8c04852bbcd6621b64083f56884c64d1afc6295f373ef950ad58ab99ed2262fcd018943c42f35c08b43c3677ef11f023fdd0a8ce08ce3bb38f2dd4a421bb090c9d308b0226ae314c3e5e7b3ad5f286d0b20ae7044b7796ae0390392143bc789789adfa80025a48be55b24e614fcd20a3e80e5a0d984b4ba0d7ad8cd013609b2a52b40bc319c588636dbb811a5a0a0ffa13fdf734b0696cf84e1ae997361dc00230be6ab83ca430b96a967b28c65ecceb726ab22a31008037c09d90dafa054cf08a352acbc28944a3b9777741a82870b478e5b4a1688d78964856e75d32f0d201f4466d3e67ac355784e887b7721b58c739958e0260605aeaeb742020ebb5ad5461f4ec7084b7d7df1fa9bda0b974a81752c4ecbd3b2d151e4725c64bfc56c4f85b7403b02b4c5168ed884dfed2c181409c8d2956808260ed076b5e75470045b34c19e0e9dc5107e6d4b96af9fdc93f1d2ef1fb7facccd42db837b1a01e92d03f151f1aabd92b51f63278a503502542dbd9aa18be188d1cdb08d91a8751b0d6e8d310e737e6fff243496af2015fcf8c1345bc80c45e73ee7a6c0240f290bbcac6cdb990ea87f9ee65f324858ae30c2202ef8b357d400ff93accc20dcf6d785934258d5214e4f8a9c7a36dc82416cb2bf402832d8fb9aba96ba412db6e1f31efcfb532416e6426d37ce86b8cae06cdb076032e312eb0d713489981735aa481920fd785ef539cca24ee2feefd9410b10440a99b3def5d8222b6f8e39b35e00edaea26918723f42f155d9588c60e1a7920cf02faf20cf479bf833744645d5f076733dcdf85b8c2315d6d4ea60e17b9a73902b4335833412ef22604b6c6cf6ac5048718ea754a75c5079042589661378e618979fd54e3aeda11c1c1da51f2748f03ead7a03f46738c78a99996750bdc101a01571e85d9b59cdace3c45ed019834a92bcd7e0d09f1419a7e805618c0e2b7471af9038a53cb079bd26d5f4701039c352397efd6ccf41cc1c86005caa1fc840fd2f460968f05d36c9f8f3d7ad66cbf486a0818862f32c3d72332fe02ef5ce5c15a381e0f811b4e769dc2d8452d5d69527090c3cb9a002a5e0bad7cdb0f5bd5bf413be8e5b61e0e20b8392a3437cf726da32a4cbe1a76a2ccc04b28f0072b14fe0975bd8010b73d7de15837cb3b944a9eca75524ef9cccb0425e3bfcaaa5976a23c94f5b56079b8aa3d24f0f5f4a1861dd8000f38c184d55e4a612300f5369fed5883783375aebc8d5816fc02bedd4c365de3c9395116c3fc65d6e6e710e15c6234388e825e69edc4564a60ca46ae99f26e9517975f271247117c938686d8bd4f832a21d42d543a351b583e1127d8ae3d7358f1530cd6c74a84b231811e0e8c152bde56917cee3c19143a57c21efcce1fe2dc5bacb693506ad28c0412cca7b9419f187e184fed4c1d9c9e07f11f3d1c905b41b75e007d0b6b61ab6797f33bc8c12ac44955ed1a6798c4277c3b9970e5dd12d46f501785586fa4402104a773232dbb7645e4faab1582e4eaaa05a27b7b8a0b337c95dd6ac57349ce230afff86ce4cc7ca17d6855aefe385dfc67cb37812158460f6efb0ac04f6ecf6cc93d8c82614357fdbb190eaa358400091c7c3e99113a438ae08db13c1d36ff921c92200b18f258be4e0b5c11ebd1a3f122cd0ec37a39d20d3600945eebd965c73735bcc9294013d1ae38a07de5351b03e521f94c9987bc35ab525876ccfa8f5929bebc146dde75532cf9c796dea0f6e24caf5fcb3b600fbdfe72dc5c3b88b306080bbab979513afab039300badbe58b4dc6df079ccf597eb96ad7bfffb312659e2dec41f0257f0cd8cf0e10308e3f29cb69ff8fa316ae5e7f0bff8e99694ee99ebf5569964d116af17626281307bbfc4eeefee0c150e0312902db7dcae1f2bf11ccb0127113bc99c1ed1044ba0a9d2177b947ad04a2104544b6ac8c7f1de2bfa9f494211158828a358a3fff65b8ed601d952fec2309cff14df57a19747e836c97e131b5a09e8c7a4e7cbe2fee98d42a296136d73ddc8ab2857226a001f0eddc90cd441b329c7512d8115dfa344996c9f1ef237a65ff959dc2b9303a896774a63765fa845f04054ad6cea0095c61268869a77abd73f3ab9a33bd3b3d7aba3eb27ca9c7381a3e37daa984b892429023f5e5898f04898024470717f39df76e0ae435b69bba0d9ae72b99b9dd53a7bfe0fc3fabb88774a0b5d1a3d41410a8116c1f6cd5839075cc10ed1ecf3707738b0a184353ca4f4e8f40f41cbcb25d0bbcb659bf4ff029505d8027fba123c85d60d862140d406a24fe62bf09ef59af79cbadbe344f772e4f7d0674d55644843995bda238376172d32e7e303fbb634611b50c5d7d5283dd7fbb3c4f91896f99828b99d676a75c260c24bb43079f5bbca54d552e349d5e43126685d7eef8af95cda840412f4ff9eba5943991db8c85f5d3b7d2fd66a0ddcf6e6c907211b31e168a33cededd586f44a982cda04a2df50ae266bb2f9c8c230aad17527d31d8297a83c719baab8b97fd35476321b890254c898183546a751731877207c8db6d3bd5413ac5256cd4abdab32ac67c84f2c6ca3710753ceed54131a95f54e8649a40b99d68b1592a2cc0aec081789289567fdda8f0e1075743d787f5db81a334d4c6b9d6d4a77feaef5f7f2eeec5ee80e86ef92f24a8fa05d4eaaeb363f2a34d8a860c95c12e15d309c14ac77fd2d4c1bf0c36c35ce4e585a34ad50ce2d8bd10b5963e9cf799341f4556b4430937c0ad5837ad651cdc12df28b84f77a7242ef77a2c3b3de9e3bad2970ff49968c03768c7555d318a38e2d84347cbc0c9c332a0a17cd0258b3a90ee631d6641f6263761d633df23e9d5ea459233351f277e4802522cb66ac69970a98465b76c6fab00cd0bd95b6646c8668cdc800489b52337caeb592e226508b4e8b18d0fbbcd1b1d60d22d037192cd42df1ff9c8cbd904a0c95737da2cb85a944a5d3fa3847beaaaebecbb5f04549b490f54f00f1eab070841a77a8e628b41556748bbe8e3f245c39a76a86e5dbab4812adcab150989387ac7befcfbbfe8cd1168c8e4ff39740d6bfa89401bdd5c55a41d63712d414239a4c6a3fc45900b1f36de3adbcdecacb73c71613d12e87b25627ce24027c9d02c8fa4873308e67761408562a7dd599662d54ec8f9af4522515f5c695afeaae132c42d61484d54d37bfa152c5dcc68f15d332db1982ac7719f84d1defb69676938223c8fa96b1610cc7a74a5b0a2a21ebcb1a005adbfb9adf063a9c40f0f28e31d7694514e44eedea361021eb060f65a2367447fcc1abc072aaa141597a9f0ddf1eedf244e105643a001657af3a597e80a7f5bc5341d69d40da2400b53f6a522926684cd7d681f7d5447ed4d7759af6d5b76701fe16c6b8c97cc5f707f7d57495961ecfb68ebbde8a09c429a08e5fcd8f36d122001a571f184ec2fc5e4d60e1d6339190a07c7518e48b2f2ecb772d169c367fbe710518aec6506f19e9a0a479e8b1ccbcd082f8a35a2b7582b5e282f78bc936e52128d08adacef3435f6a96cd92d1cb71799f7b8dff7d888aa4aef672a9a1af6b4b56d4779d8d6bcc38df05d0e8378682de6c96ca427dafb92dde08e1f605b98727cce76e010bb57983852fe8f5a1edf91f6f32bd242815ba7303a9236a641f27a3ae5305e4fb8bf67f507d8b470ac8bc38457805ac343acba8fadbe7941350fafc53c99ee76f4928682fe7577d2afaba82384cb0bf352c512f0ac74266ff1c6b5516b0954f16a73b9fffd9153bb6a48adb7ae166da85f4be21efff9958094ad87556a06884ec55c35e8b472701c0c96ed9e2eb71a3e4c4a01727af4bcc0a40b8ec685f1ef1461d4cbb34bb859541dfcfd86851e69ec7b1ba7a0baa185dc1c225bafc71b5236c1044183f9cbc8feb11352b6688900a09c944266012d4b7f25670ee57a48e07d4baa151e3ea1103b5d0843feba73518275a16faf2c2d544fd8ef59a20770cf8d14acc1d3950ef8478df0d994cc4ea741018bc0bfd785365335f390ac68c50ea7481b5246bf9dea808a83c8b6941784f7ce24ab6c6f35c0cd9b28eff486958ea1a61f0e0197bf1862d655d7b0d52a2613928f6cc368085fdaea35f959de7409f058f18d880990e2ebe22099954e3f903c78cfff194725128844b67e7689e1ff605e8f7cf0a11d23dffb43c460e4fd987a082420abc7b3fc0ea0e29b4376ffa3c7177b739aff1fbd7891631eabc73d2191f7ee9e358e3366802b59e07f228038c2e76bb7a2256205ecb9f6fbd5712c443da77733878ebe8abe403af6949f3ca7085821320aafbbec37bb6d160ed80e037cbcd2911d5aa20a1ee35bd9b00da925c9446ca18c5172ba04ff74f3ffa06fccff838297975daf016b6d04d0d65f0d2641b29dae6fcc0c35a3cc756ec5d35aac3a4ebb2a034c4ce2eddb0d0fcd9198b0acf9126be48ff43c69b56934556fd9cdb405dedaaa472b47b75223297f5dcc53298ac4e20696b9532ce39962409e44e142925034e6126e53a1865e5a75d1b02c2f7f2a8d2beb1ea50ec917b78b9217ad4a4c7f6608cea1397a7ea30c0462952f1836b7c1055c4a69ea038f759ee87d1bffbbae644244151023b2af31cf402b70064604ec7569e786f35906872032be5d264b185cc3f095263ddffd7c0ed17fcb96359f926ed9f5866702d6635ffb1e668f1cdd2517e45fba98522ae83ebb8dfb4351a29e8c0316b357db39e5d32029491d960a7054985fb4cb7c14331f969f684d3928a25fa728d6782b009ce43b118140a487b79291fcb2d8bb7922c98dcaa28141d5d1285f172c6536aa2e126c42dada0da740202215ec72f3bfb600c3da99ea6e08e3e4d6ca4bcbc0a698d786c8d825e49219281946d9818c46c88b2066835909acebfb161c3c4b03dbedecff942d44e94599560591d4e62f8e4cf799f6bded8859fd7008891273c0d91696ec4730d891dabbb7659afce3891f8fb53a1273cb1e87be22673173a0a6e175060806d6e120b797fe3093ebdb29f639159879c40394a6ae6532e32143d9d8fe9112884409ca0e127f900f74d06c5b174e19337c285b1059d2799baa9a7a7efd85bdcb7b1a0d6b1cac2b746058a005e5a4605a6a4c480606fc1612a4874fa3425f6cc88c2b6b7b3aee9addceb7a33775adfc89dd6b553b7b56dda6d4d93747bd3a47ddfb649dff546d6b7bd9d754d6fe55ed79bb9d3fa46eeb4ae9dbaad6dd36e6b9aa4db9b26edfb36dafc2a1b032f5812e354242a789745d21644370fee52df690e7e844f58804a728127779c32fb61c4f25f5ed3ccdc005677bb348f4d3acd1272a789c2d9aaab06b6862af904f6df07c6eed0c02059ef557e3319e4d7f0539470a191f911519c7a97c708644ef255f0c259001497dc2f8b48dfde55146f85c695441d0e86999f346fe1d63ac03f83c25dfea35bc6b98aba438cd045b133593b05fa66be7b0c42246302799d5d5c8f469ee900c83849c6a20296bd03609276f436dd499d4a3b4c4b743f752f610dcaf06072733c43c87064a0a7335891264641665de573996f9018e3b64614d230e733175b95ba2a4c1bd3a4ec8838617db573c4a7bc81f4b6c0261503399e73b8cca40c5ae4b41fcaae4ccc9d7f14845d5f380de1bdc1ccd75a7006efca559efd7354bd1352ba7e9dcda8ce0d108cf248a455bd601a65c848490f72e07aae56461857f7ea11041ef0c0dd123109589d54d25d8ca94faf527383996ceead5996716d2c8bef22206366cf82551f8f2595e4fe588f6a3906fb2b1d92101746cbf8e4ce0139a180e0f06f413c818f7b5caab47975983cacf3c5d9a73636e271e2ed018c42c04a3a34066bdc56c2cbf8819fee823450b406f3efc8ec34ab822f7d1175a5750a78739ed291865b7cfa5c4e0963164d998e31abe94b8148177b542cc4685cd3cd0610ce2af5bc5fac64fb43188d638ae30c5041af4b7df5d529a006e330400d053fb4b056243eeeea1ff014f7149a2fd8a2df64b8d4583c769ff9eb35d6f3d7af0430bf3905fb8812b505f5305cc4dec51d26463618b16dde0691839d27030fd5ccb303e76d2a4a3715ac461daca60ea57e270054c7de2381108a78dc443dea6843d985f891fe3f250aa90144b3d2b17da57d3078aa284667aa223c213dc38324e9696c955120894d99944553d3eb74cb183fbdae595154671c6f9979f8705dbbc7d9b41b4de3a461797a474e68051238f2d694d872e959983ae605db471160b4857ba8358c3458b4d6b07f10c34628153c42b59d5acde6b344f08e8a5b296ceb688f735db4afd239bc5598af72fd3daf1b55d598801a54895870d894aecb6ffe383e3b8cf9f7add5b310d8ab44d540477a01e6f70c1d94e2546e967ad2d5a3dfaf4d810ef9b15e425f103fc1e4397437780f0ce69ecd1ec11af36a3864f7a8821a5060e3668403bfb780e00d6d0581f693700e89eb07848c5ea678c40ab98d921b563fe23f016031b234ee9868cf93498c1922f19b770b13184cec574b80525ac07d2492a55adaeecbbe9cede08a6ecd6dfaf5d579140f5206769831394b76d4b19902a76d3b6628d0c0e70c520e9c73ab3655fb5387aa37684af6182052dbf92abe16b534c12f0f62e46a957e19b7e0f13e7a56edb3957019e678cb826869fa19d3212accf39b81697a1779a1e7ed695861675efa6555175f5e540dac5a26498033f3438d34a2f6a4b18ab9fa22031e68fd66b2ad8c87a4bef60ec0060ecebeccc754db7994626362c3309b3a1b122061d33680a77a25c9883426624ddbf09f57f4f8cd45760ea2f991a7d2f11685d13795ead7e89648df0c48333bed5e771a4a673dd183e5c0c15e2fbd19eb1ca868caee1ff7fe3b9bab4fe9d225e3bc8fd5ac4593ae2f5b4e222d2f93ac2b0bc69748c3c964e34aa275a5c27012d13a92687da934bc4c1a9e2c5a5f260c2f9396278bd69164c34b84e54ba27165d174122107ddefc884a673cceee35bc196b2bf4170c7266d4fa91017f1ad8b9907f5efac3ce5942e9cdb0682e5dd84404c6fd1ea5277817aeb05fa6120eaa72de5b240f1b679be61d98425025a920217667d9955ef57fd1500020f7ff137ae0d5527c85bfc52499700978f7734d16245458caca24889640c8c48eb9f6979976f2acd6ce94bacb103e74de544295fae3603b40f323531e7660fa8fe564a96325383faa5eade9fc1daedcc18b9507917a06f06a6d837450117080755d8cee85d412af5c5111d29148a4f05d358489b9b015ac862fbbcab02efb867951c5c1ec31b61c4651e07123dd3d9a283dadf55ba7c936769c32e4411c3ea0aecde6094f28ea8d190225e2a91ef5139b2af5e128a84a2ffde2d3e0359e16b771a515d866b96628c58d92c0e43a092fefa6f5dd89bfae001ecb859a4d7ea0529b8c2675451d33db0049bebc35842961a31ffa20596e30ed7c2c16db1fd6a6c4f7bab780838e0ca9dc5dfcbd386b41ec1774929ab29dd7db85fefb4fd3833650501a4cad26513ab5b66493a61cd41ba4b62f675b83bd6053d44b6863d910ac4297106a4c18cab667a6aa50b46bba164c088fe1af16b6607e5a814e18e2685596c0a01e1805ce33692a5d7ba3f4e144dbac74ac23a35a8b92cf17f81c24efb16c356aef7edad7f33457082aeeaa14cf9637b69db0da42adbb35fcb1c85454358e4c0c0e4791408afdee3698efaa73a9457446b17104249592f8cc19ed7b80813c4ab1a1a6283ae6580ebd692e93b97e227443d267e5346107a79722b600c1c7b3ce63b0e057ed337c0a201149e712f5a3e8eaee28672aac7108d70141202e83291c5fd04b4b487c0d15148718762293c522bbb6bcbd55887bca50a171ccfb12a94b57523340cdfbe006dcd3243d79e988788e26ed4b0e9e3e39f8ec1bf7a2cf098ef002b5a95a95888369d1d39877603a55c71fb0f07358ef6eef597fcb080e07f9bf47842e1a53a50cf172ac52d2fb3a2fc29656867afc473f92236998dcbdadd8e0fc784a88825eb9a5fd282bd643312af91e218b674d1302fc8d48775599f30529b983592045efcbe7f5b80355a425d57ee2bd5c46fabae448d71aff0fe3e9762e9c4e6887120903ee8d5c8c379074c26d205c990b46dd41a999a0d8823c6fe128160a14b6a68a5c7bd8cfa1159e60d4cc73920933dc7326054a04ed8be64aa10c09b6380e47036652b37b01504fa7df9cb32ced92b152ebb0a5922dcc400c61346d2e511c330b44c74e378173bfd029c99c4ce1a0b9a3a851a08b28841508a4c0ea4e8978a5eb6902fcdcd33c181ead5d12db91e586d350cc5df3c00816cfcdaddd95d68ebd1b5875af8176330e798c2e3c786c3d7a0da87f8a010a530edba80029d07a7bf84e192ab63b40c973a64a0cb6530c4add0cf9620ba9d887b9b00567d5045d5c86982beb28ec9a491951d495637274f66b460fb53c38f3e9d024ff52103b4893e5f4be03281a57706ac557ec0684f9c55c00576c2c31323373860078cd4393da65702af060a498a5b894db978796e1217d42809c7ef97a492b235efa0de5749ed7f6cd19d8a1ba7a4bcc600c5d9808051e3b9300a742881130787511077f36850d8f054a1d0f9479133677be7f261972be22205a8231de0faf4c499924e0c58759a8472f0dcec54b92cf020b4a6f730a1db3ca364e1029f6d060c74a1e2b8eecb91a0e8805be0bdc94a35e5196ffd3fc25297a0004ad0d0c8ad6e6683085a444630531ea16c231cca68d28d991f08e2572d4a8a57d9803bc49bd7984556c26626692f7afe8ec3b5d6ccfec4e6095ca5394c8b1b04b274208000f4850e10b28b3873742d645dc5a1eb348a16c0383640e901c62d8d16c678637f083f6e8cbe6254ae46b60967cd2977efe1ea782355c7ab149e33ac4979ca195b757c7389e382e46208b2520635c6f72da925d9577b219b83c106cca8bbdc090f1504586adfc56f16fc35c3eb6186741e1d5a743ac1571179d82bf7ecab7149067261282108603a8041516d44460a9790e2e32d4e364e0e90fc4f16b225ee86c564d1dd43e5587ed5a09c8f7660e2502774d2b97c7ff80909b2557983b79cb9e734aeb9905b1e2cb9fd9043e21d1795b6b2b7f31113ba6c9f3c4a367b69e738c49303ce710733e747279ca3708cfa6a543d18f5ffeff17b7a5c2551ca82a0412762412c9fff891e7639e71918dc9450a99bf6690461cf6568a6671dc3fe41819000f8107381785fa743a30f68401f80583bb60011a33d5bc7f963a4553b1fcaa99f8aa296bcfcfa35d1f6125523b308218d2ed1f364714ab2910b4408add1703c3999950d42f99bb4dd7bc24af4e4dbf3c6bfaaf7cb6a4eb3db38ddaaef2523f180833b2e10f4f213344e1d9c5b2691144d959af0fa8bd1c284fb209de71120ae215c00a6c05b642097bbbe6b5ee426cc3b4c7778bdf7a959b7077ee0f1cc564d09a9a94e1c6c6c065e4b02739f7d5f4fbf95af340cafc29f13a4dcbacc03b350df11fedc28f7090473e720dfe5880124d34d8a59e634de0ab833a2047fa2041b1563ae587f1d59bff7082d587547c8168e1ba0e5766696f2f24bb778d03b55ab89826959b68dfe957cef569b5df13ac58e4603f2395c02c287e7db28dd74376675540b79f7601602806d026c65e9ddcb099c70f74d54abeacd0d28197806fc5805c5b4ef6b8134aad2f758c0d79a0291b4badd59ab5c26cc55591670a238474fd197773d45727a18650243091d5812dffe21a6d1497c93b5deeb3f831f0263e8c75dbc581433102352c2b3af7a6f93172c4a058ea4077f1a45bc1c494dc7889beb070dd41399b0a8b486082c57d45797a10ac8e7166335e734cd271f77245305dd722395e2d4cba07b7f531c2d32f0baebacfda77f78e9d0729878fe38f3502888eae0a3cbc3610c135aed26ca494f0e3ae01ccaea9e8ccc1fdd89335ec8e409086196d4d62781c983740d907818451001a69e8b17c8f4028a2520511b81988627818459132566b40820fa1dc8bfce52d08f87c1258eef2a0402956c64a122026cf22aaba2bfe36d4e2da11857de8c316532cc047d93ef9c065d62f81f4f5b8c3312f07c67fbd4e986a3cfe02f58ab9191585c445faf7b2eed01f42c7dd9491f83a6a12b1acf0614551a810312dd0c0bcf1c6c34b289237e2ff15774f44bb1df8a683f9f7e971ea6949892d6ff696aca5134684272ec679ab80f4dafba969e4458a6364b88c006c767df188b9d444abc3784dc161c5ec869b9f5a244533e684783fc2bd16c9bb02cbd4c6d1638c281f212689009900ae32a9bc63c1eafcd06aacdae3d68d25f32b686d879e718a07459a261df2cef274073fd5f5810c9f03552c8aa67840e0390e0e2a124948234c6d038a0ab09e0ad8f64067852c18906ade7ea32bd672233c06f6d43e13c23ef7afc91b283986170e2942b51d796196e2f490c3bfa2749c44e02d61446f73ff24a0c5f40c635af9071bab3756fd2a3a1346c48367da4c0525c5745ef091f0ab41fbca80620f0d31c0034461d170e0d5ab61112c5fe4282c2c87d089bd0ce37959b8662b76ba46a82d6858e6b45bed2cff1adc0a839360eb5858498a9c304d77152e3e900eb340ff63fefa3dad335e423948aaeed87160a0a392d66e227fa06455c467008e0c490fe29add44aaf5d13d98091eb026f917c91e89781958c1bf1727732f2d5a1edad58e5a45e98720a4af669d1c7098fc92d76223fc6f00ebe5d536cb476f3dd643b206ac8b46b2e03182e32cac4938659a39b1d92fbfd1ae3d88617f039950d5a83c5427666c9e7f1894bcd5bd43c282ebb330486921920af89ad170de50db109f30d026b65bb2a1b3c98a907317bdb80384be08eebd9ea4f27314867184ce67352f00845ffe52e919701ba2af43599fd882886230f442504bee70f105d167ea147cc470520cd253b14ddfc9bb129c72ae6a3a7c9752a2e85f5c3689893ea74e33b271c86e3b8ee1fa46d89ae972d64c641d081a53054981a7ce804e247f9465d98f9fb80e6be2d8ce7960a5e6de14a8c7858a61bfc6483447494938dc78125d29070a04b9c1dc01ff67b00279bcda2a9c15405d0c9bdffa0ac570944287cc298a11b43ab78f48b8f802a29a21ebda1d49bdcaa840e5888ad2e582707f79d0d874b05b0542c78365fbb8183b7b0e5605868adbd9157480a2dfa24a501b57f782a69c2e9e4f15b1a82d1902024c0a2355e5bfc5c4d015748b8b9d4cd3a48f6c33c8c83ccd5218d22f1cbdc5bbf723aee3ef3d31c3d637e19855279f6ad682ac7c3b521c911decb0ee93e4584029741225365c87303f411ac3ccdd02f37f991d8a9741761d4c144a4a06a8d171a65911620e9af68cab0a1471079167950f352595467a779efb1acaa6e61e0a39d54abb1201392861ad329bff8534589786750dafc194ce90465597f620cdabd6e9f7f81de0eaf68288ddc662c47ca401ddce5d960129741610e59f0891c6b31dbac80baa9f863ae847a924b624e08ab195dd3ce38e79eaa428795c87ac198060d435cdc8117d77fa364914573bda2ddf075101dfa65cef5768ddc75db67ccd88448ec6c94236fb7299f44186d87003510a50e0e18d29b27d228192f0a4c02aa9661a9e7d41182c5921568fc33a46f32707d326065bdfd573c788b73064f8c031382475a681d98c9f4464df3309ed7a76b6ad98c76134aee3c27ee898a40b09cd82ffd1c3eac5349b20e8a815146d1f1a4b3c05cb5d0c9ed370b1add2011a6944ebaa38cfd572adea298d608a14318da1591aae2402906cacef34897c729c2390e9d4dfc02f03f2e4873997015c825c19cfcdfbc8b9a56f8de14e27e04cfeca4c86e7ff3a47de99742da0b8a22bbc26909a950fd4c9fff947294156559df10e71282dbde0debf6a530c8984d0e55869a5f0d8377f54207e040a58b298a9a1e721aa90635cb4305e321e77f26b4d8b0b70696427f95b57f8ef712fb39c00f5a96574c7f63efaae117538f0163309b5ba6fb56ee5a557d3543f8044a569f99da23f6ea8df0b475d2c0da73d73fe88b98cb6e6d003b6b86cbeabc5eb98a80eb05a0a88c39c364364ea48e2591b6b319e4ac88aeeda78f8819b2913b8a4d329c99f4c37bb3a493e46ef594f60cd30df7335906bf48e6a23dbc0f6be50ad037539080d14291013a38e85a1575be6eaec9d894e6fe74acf3fb84e9c74d6987326e63eed90c8ef274620349ecac726bc0c4c99953ea64fe4ee0fe861f6487c43028245678c5eda0371757c8957c6490e956515c557132318a18618e98581688c0be0b1ae592c99b1d2f6cb219461da4069f8123258061fea984a4af6c8e91f73849fcdf91ba66dce3682f2d4d3a33c2a0d4854571695c86baf52a51382710a5a863ca68098e10a9810870b3d5a0815a6964a3226a1055b033cff7b064504e20dfa422b9c3125caa04223bd5d86011ba1396ee4479f26fdfadef0a2b6d542d2c9d8c86e2d77f61ffa60d1e2d0a452516d20cad08089d87c3b23b950fd463c46111dc76757ad197c3326f286e8d1c18da0ae4c69296087078b84fb50278fdd6258d43dbbd800604d70546b496ed78e561618f1eedfa4a9daa586149e7717aa11541a750bbf4eb8e96376227de7cb89a136f0af85cf5b3088db9e13291dffd33b04b50f416e846ac737b7ba3bce31dedec04b733ce3267aca685e2cc666b6331b3c02995542983752d6d36a640d12e376fc1a1d36c89c475ae42034ff3057891cd487dcb07dafb6737d204e04633ebf3e4f9c72b503eaff602fa0014829a8d017f3f209d74662c82e1eecea2396e19e03fea2f805817a501f032212c86658093346455a69eeda7c8ec109ad12c89e6c72dc9c4b3163fe23866ac7057d7a380a00bffd00f914c66d8a7e42d038751097fdef29562ef63908db35b40d07dcc31b2b57588360a153a214be0d2cc0d1883933931222e95c4c2d8f096a68533970c86401eea05dd711e9ddc2b3836aed9d4696215b37e7ba38c6e090ccdf7fc5e093a0071e1b8b96143f4aa15dcefaa4deda0641a86d73528c44eb4b6051c87e920e2c77a0437ddac7a3975589e65174c7fb4896e180d22e76845fc052c97f90cc8160b1d4b0e1302f955268193bfc0df7d346efe79c47134b14a360ae4aa548d01bf68f1ec3dac3d5c8200a7e39f03366abe74265e4b6fef6a1950fc9683fe30a38d020a4f96198404ed88292c6ed3ecd876d6ece2e05b8432cf0e433717bdb7d14a1d3cbfeccb0bc0107da3594a0478c098dc42b2c0b34d17c9c5454920e4313fe44bb9927665842231ca7e7890e74327277211437206d6ce33f50440d11f044d6c39c07ff6625b99649bd33c7edb5c0d15e3734f8d64e978f2c5e1212c056c1bb86735ca8d44c82b2f2a608babf614a9cac833166f30520bfdd416e2958372c3eec4141a182a2459b7f833f6eb6eac4ed3ed007bb6bc9ebd156effd23bd68835f03dc7e27fce1f82c61b09251f7e51792adf374dbc435cb180067238bae7cee835ffeefa03959250f77c96bc4a817da02ff28acd482c96b51d620535285035861447ab6cd7c02c221d598d15b15ff9f34edbbb2079266104612e84f176cd1d66b2504e2b885e96d3865f530c5528c183f362d0cc2524f8fcfb0e9d63441ac855e8f5b4ee79417159e6569fff6b75d1d381ca8f1de49d6b334c5b5b9a3951af3f9d435652094453ab3f5e830a2a487f7e1cc14fc5c4d3da756a055c00a5fb98afa45111db7caede6b9e49d90f150b0de9acf8d37db751f280c9b15dfa62d2f71608726a1546ac32ff1b5ce4993a6361ca184b36280b43f73dd5040e85a6288002266c159e249ac347e35a53ea08878bb8892dee97aade3748ec55b8bce6bb5af6bee7385f769ac8d529a2084a28d0459430c8fee0324cff9062b938e95d4c7a70bbdf17bd9f21a08ff4adc616881f2f644b4af58101efac47467d759e1b649de2fd4e57c9993695fe2a8a0d9326d83b06469feb5a4dfc822e5f0f5e8092f7e433e026020c1bfc87a9824b5e29295e387e7ea088edac34f4ff3c949592504d3d2444bee3f44a9f1c58d1a05067f180eb1e13c52bceb14031707d2c8bbee1314c3be2b9d9e120ba6f56d36a1603f6ff7f480ce121a1d0efc9dfa9d84ff30a00c358cf4d64266b6949e3692b1e9195859a1bf772a359a9862703221c1d20220da7f58f76b504feee633635e0413d9d701fcfe93f4915feb590dec508d23afedc8ac264c76254f17d2edf08c1df363cadcffe96029bd5b0b3ae82851df5b49717f039663f658d0aa555971565ec2abbfb4a69f96fb19ce23b596b025da81aa69af27c0949245a92d0851738c2ae28cdc2319c516ae283b065c80e478d78895593cedd879c0eadaca034c89aa06ce28ce9a119ac521478c68f8715af9e814f3daa0dc988d8c6d2f12d9343085bfd11366e3a754b884d70f9d0f58b4ff5cee488dc5f38d7130a65cd93dcc8f26077cc4c2eb11f36c3af5846a8e2bdd8c219daa738b662fb89855be99f8bdc0b86f254b5eada76d109c889a65dcbb4507dc56b90c4ce917a5644dc7779987f8ab47a4eff035aba5bee8704f9d3b69e7a887fde344e4784b1d09a719d5bcc04d51c1d5cd584cbef63e3d0ee5065b74d35fdce4546d40380e4390bedcfc48ca037c244b7d80033f6c8d427965977c2306a69dbfb11d70dcf1c78f4462bbc7198e81532a01bd8f4b2f5422da2099507ba4b6ebf7272b7c8ed5a5cbeb52b14156210721bcfa1431218ccf1cbc6ce99718d3634b5f32090abc9ca3201fd60f73e27845bdade950d508598bd280870615534cc06d420b34a5fe2a4746eed983074e392d7e5e26be3df0f1d567ae05905a12e2bde0cc7b5e08466fd1cfec5279cddfa19ade7b2e7c39ca3a64f3612563bb1d177a0a57654095a56ee7466edef89d134363838b74f851193c89b42cbcac318c29ec968821096b69bc2a44457db4a7bc74c4a4b00b90d038688494efa7283f72df052d92c35d45589047ab0e08cc9b9a11793e57d8055a36bcb5235e7e0ecc0b1ac58dc7398c8c13ba59261df94b6d5be18f0c0947014f5a2fccb5e0cb2d45eb8160deb93820b8ba3d8685c5cd4f4dc74f473912f41f92bfc7f1bd1368bc9ee902190a6644b45992daabbdd438c43285239963676729202e226b74fa168e4c5eb154aa43bf6c01727e1631ec8b464a6c2ed6a0d38112e29e1d044b1715de2fa10ece4681311e83ea62686eb370b78923f0658c04ac00a4c0a53b1b588eb73a6ac9c29a23555293ea122e55cb002115f81276aac70657e3a5bd9b8b0f6ace1ffbc41b6bfdf7b70ae01d575ce707aff5fc2d1a6db09def278530a0e9083cf73b461876503b86f1890dab64ef16c2c06ebb54c772c8fb5ae0d2b076842c622af716dcf7e64ceecbbb9579992c646d19685fa4118696c968ad90d93e1007310289c7d04ea12cd98d2f60ae8b74a0babdba781c90f53ca87e25c8eba4a916107d0d65ea8fe8dd79a34487dd0948ff51a003871d48217f83096d958857b16d77f71888110449fe039c49aae175b7d890ee3e3e6c3e23b9fef1083370ed2a93581988e06ccbd164ba2eb2ae71135e382a1c2b14aa8a71d684ddfc1919629ddcb7cc5cc3dff3689f54996b6fd0c442703ea797241527c542de7275ee0dfa5c835c2d5b3c17b99770bb3231a7eb3c5ed8128a7be9a1dc1b49a3fa7a7061cf3284b8d38c0b51c10a3714049af4bb719892721e695672828ab6d5c07899b0470de5fab5140508541c4227cc9936dd2f1141c55afcf8a5b40e2ba9457b92464c84b10503899b4b56418938f0146615155e96d7a9dd8f66829202789b474c35dcbd0acf0f92400512e4ff3ed565007aa03d4570d834e609d9b570dadd92abc3214da5c79d5682cc595cdb88dd2d8d1fb4365ddd1aa75bf0f138e2cdcdaf8f6670467660622e7bcf20e1431506d59eefc72a129d1d280205c157d7fdbbb48f615565173438340d994be416737527a0d18034832cac893b2e1936c0bc7a005952ae09e735925490b7fb903e7d6264e2ebb08291755aee1de917bad8c01d5378dfbc817961624278c467a60e73147bd3b2b67252ded5d3bbd01f8f02f18166a0463b9559192816e54880393bc6e423118ebc4b36dacae9f6c0a6c7718cdde9db40f7bfd7024895dc89790dd669f366ce0effe8e28b195286e30437dc7e5b60ad0690d66144e92af122c56a0c8f36700fe8264c37def88572683581d2aaedeadb450555713590a6c042ff3e9377bbc7d7395750c2f51556c1899498cbb17b210e06c796f34c78ba9df4864b679f7d7957a3937c807c9d56a144320e9c261269d213ea3cb1183bdc83b3481335380dc9a508c6b73c125fb16657a0248d9b1271a9f477a7d6c798422e907a09ae740b6fe88b0480dc90a16dac9a3b54afffaf6a2923d0ed5e52aae58debff536556623efe8a2740f127f1391a186c8bd79b1f4d2526ab056453ca01c928a343c102949f27505b699a58902258562eae65be382e687f83dc3758d7bd5f56b49df1561c652d20bba4dc88854561cf5552a737c43aa95d80b6735ddfd08f036b91e32f79576eca337c158cd6e9188d744156661412aa733e6de7193bafb99b7b335af028674b4b3129e5cae15d0ea662a601d12fe209efd739dfc882e8e3cf95b1c94155cce5770f19d17a3d36c04c330a33ae467107534a08e0e54805d013ffc887ae8463efc13243f9810a4edd6fe5c17f2c2cc8bc54c45bc6dd934ec8280659e4f49f491d94c1d43c81858c2e80b0c2286327975f1128e0325a22095181c20d7f69101c0c58d47d466dd657ed0f9eac7f0f9b8d38d10bfe399d08d721afa423782c1bd87e8fcb017165bca835268b3bbaed33de3a1bc9ee83f2cb4b1caf5626e9ff67add1baad68c2f3be55aca683fcd5708ff369ecc292c12780821ec0ee9a9cda7cde908dd1c8cad1c9062553786055179f67080b1cad44bd5aad3c82254ec84826c4d64bb3258c7cde911759b996e042fca5aa4bbc7600dbdc7d77c7ab5a312a77654504f67481cd037a66abfc3519e6ad4983b3fb85f169b2ac4e1e0174db36c5635dd470afa1de6f8d4485a6fd5793d1641e60f9fcf11aac785b4f0819f545a8b8c0934e3b31e3e8808bba6e5c703d26711e4bc0f47854983e7abf06012a80abd8359d410b5f38abf5f4fee9cb45c888a4e87adf44ae8535cbedc6917c1056d4718f8ac7ea9d229b2ec6184d8315ca26aa9cd0e9321975e88d805bf20d47730bd1524709d04b3084efd0e460e9d34c5d70d1d3e69d120f50fb9ee9aaa7ebd10e1d54d1eda3db03b37d95da64afd92de7346f5354f54dcc997643f38d665af0fba012a3859e7aeecf911cb7276bb896476ebe51e3ac14317123850009adbd50bd915b69a7674d930a3c0ac2fede4da2bfb80684327571fd23af4a99d2dea99e06f61d26a8b894a55c7c34ec66e918b555399ce5e3eaeebf763534fafae1f360882067d0b644b7d6f27dcfb614c9ae01120c14c67f01ddd4979a432fbf24aad9a5d5d5258dabca3553db05b0e242566a90116351b792b1f165364c5b0c4816805358eaa1bd817213d139cde0fae551661e45a7005412879c552737d8b30ce591586df67960784a427ef2d373d6ccf464c9c0c51609338b2495c9fe640938656cea059ec8616d1873d074e2b9108323944a3c9cf440e3d6115e4815894cb60872b89066478a4a942ae78afb0ae76fdaef0f8629ce67cfc2fd66509392a560cac7e5c0e2dc4689e326b6fba0b284b38202a7e139658814eb82ac96d4a80cac378cb729d8e98cfcad41a798df4f6669b163e02c1dac8004220e706a997ca1bfe184ac01e7485c9e42bd94ff29eeaefdd11d37b28c5374938478a8a9853a68cc371e57b94d14cfc48fd18d1cd77d47d448cae41b42529379852e7470b09212d2a88cee00c8daf14b16de88c5c0befdb92321f5b654955d9d97bcd901a5a456f490ba77c7ded76f052b88c6ca50a386c6a4addbc5a6b7f936debd634bb9afb219490c2f75bbaaad23a25d3bc71542138f69b41eb40e68374e603886b65107c4661739c29dc39d2dc24b1980d4f523d850b19c96f428d1900d73741b7195ce5aa17968f2984e8c46c5b3f6c15f5ecd045fb56b2b5785f3f30e5bc69b0da1bed28d637ff760a411f2839a2065c41194721b6100fab9123dad9c74aa7739d11c464527e4c38e6389e6a5f1d5062e8369307fce40c9b3471a9fe6a5beb7039c484042ad0474a32d1cbadefb01ac5e8ba23a6188bbb4c1d51cd8905950db3b50188c76a3841e9a673e0bcb6d60ddf8b8cb2a60bdd1b60f2981b2a439da57aa93f55f0660ff3bd134b7e854d95c8f17360bfd4c1e92a73c309505101e73269e5e8deda37c826fd48a2b4e1378e4cd3874b729b22495aaf47539e62a1552ac87e91a2f0907108898b21255f5e140ffb099a8f2ba5747f45927c05f0c49da052eec0192c364bc68b2ecd23fbb78665d6c8cd626c6a40fd9a9c734e30fc357be888edaf613573ddfe1a32ba86bac48df1454722f96c240fe908b1d562831516ff3063ab49f60d2e9b25cf3c9860a518cc82a1230c15b1722ad76e4ab37fc61012d94a124bba2e05e52ed4b542d04d79d792598e0e367de25cd4cfce79db3b0939f116dd6ba46c3d68ca3973c98da239604143e6e90d17a0e6db0e47249168894ae3a4fc2c99e4c8c7f1a7bb122b2af9afca0a8110d4f066d74f63959ba9257b4091514b1a61a7ab585a7142afd51758c1e4e5856b87c5080038c7af2236594bcffb3804137d52a2a92e1684a57997c2ce3e1040da74ffc08e8e3477d90d4872751d233524e1cceed8db14506f64f59a495d9b726248f404e0742fd0e3e2e4a4d689769d303f76bcac35c86cb08d1af9e11df0659456155041be6610c61a9e7008ce4e08fcb9376fcfd1b653fa3cf8289801f1bc5a791546a8acc7db8d36c247bf4767c11564e7a84f9a85a332fd55a3926310c28eb13522327cfb030ea18b9a8238fc2ea3e75ca9540a73e4698edeaacaa87166493c6b712209a3f8557c3c0f5566d23e24b9b42e30a7be76ba133021dba9ea89ef15a713f3c852ee383ded7176e036876d012715537fba71e89ca2f55ad13568f4e56e3dcbb87001596f7d5d2bf364d280c27aaaa1b29a9ae7902b101c9b58ccaf82fef99d2dc9be32b562522a81b355da2d69bb341a2797aaa8ee0b4a96e52f3635cabe0a9f695b2d6345d5f47db5bf9dea7622daa890f0176c5e92374d905ce089a2a6735a4f4009d0532db1a6d53fa5e7ae51bdeabe1e0361d0274ecb421f5184102612a7f7b23241f207a1bdb17f30fd1fb23b443ae2861ebe6337453717f896801cc3fec60e69806c9e75d8be535c3267c7595d1c4ea15f97998463a5f8fe838273482877961f6b900a5a018eed9803ea43674231ebbb56c66500fab7acf8d44dd109611aee94c7f46051e51ba487c529193e548b70414307e4084b15197cb71fafdc66e718573b4abec3c8692564bbf2c076244509ee1e6461cd5abdbdb3d8f9c6629d60b2dcf9951e9b3c9d118e896f689c303bf194cb586e99b15097c4190b48341629d3e98f4b32297cc6b2f66fd96c5611c340322b6e2412f754cf96a315eb4cc28a557786c23949f93e281a20dcce647ea6aa1a9302dfb18a69aa7880de8f6f8002be60e508650d074f1096b920f4024d84870b4591eab1742e6d413fdeebe2525889f6c22acbc4156b71f0fa0ff5b60153482d0d115185082655549a831955ca8788fa48a323a503b04d48f7abf3478118f1c5e0ea352e15d24e41918693f768403d1a357f4b007aedfdf4acc7572f7df52a90ec8bb8426a7623f3a4993a847323fe38a60a521116315c1a6ee4fbd45e0ff05e80a797d55948dba86d6a882013ed749178a4be21c2e1022adca56eed56883521a88d10984c3518bd1523f529d4491d9afbac9df81907f520ef59e542f33818cb3cd676948a7da787eb69b1cb6a8c5ff511caca3d8160f5fb27977bb01f452ec5e3c665a5eee9d93827812d53add4c4d077e55aab4904d7829ac929ed2fb40bc67297078f4762aaa3c3c964e78c9547a61369bfd2343d7e0b03ae2a716319acf6dfd9b91b3e8e3d2726238af2700e86d038b55a94a63195c171a660c365489bc1f0f8ad55e1f8445ef8acf6b77bd15c554e43adb35d6fe614a8d3edc972999e634761d1dbea5007510bee6e798a14b5a056a144decf31dfbf45e9a8ad8a0cb08a95b6f80e198d197de345803d4aff70dcceba66a807ec7b23c2b55f426e7d62a4c49f786309d4d7de4d1aea86b3eabb20ee971c6c8465ab20f4fcb9695bba6d0b35015c1f140ab054a76594dcea9462c4128fb0a4410dd183f604599ed66cb4f4a44e383a405efcca9cfb2f3cfc014b8085d0106a6d884dc2d2f161c154bbb7eb76a49981ba500f041550b93905f051c6831257329b65660dc6f4ebe9641c15224e7c0a8e5298f12525ca406e3c3a811636113827f8aa55d0c2d513d4e75d47418c5f42b6aee416865850c4121570ef99eb70934c43cd08cb08c78a86a0c2587ed13f3f86c85ad1c3d80db8a0174377761a03c7753bf722b6e55f962041694de87af919ffe49d23763e61cafadf981d2779e89eeabe0271b0732991491800f3cb26ddcb020c438df9c2a757b3528debdb97e5037577a97542ea7091b8b1656650551f126a79b55bd23b8d209f8c153773773cb69c82d5ba277672e7ca25ecb9d269fc02ecb6ca60b092aaf7a73cd29ccdc19862f8e8cbb9e2d39eb6e6999eae4c5a9df07b284c336ab03eb82de1efbe46e4a1a807cdea206259f31127c1ef9d88723c79f338bdf59de62238acce8caec97b49917a24e0aca8bc3a62b9149b8cc046cbe8e62b13967c17dee32e913aa9e82b4ca4565160f85bdd11ecc93b18576f51d8a2830dc4a11db4381a23132a06ef4dbc2231114013061b9376f04342c0ec9d852474dc3ad9006234671b426f752788ac090edfd1c020af6afc418ebdad7d006dcfe9d93d2b4738cb143ca69cd443933e5ae6a6d63bf9a88e552d7bbea9cae815126a08e2348d63c7a8a3a33aa9305b2387212f3e2869f378d897e302f5a0ae7316323dcb70ee6db6c1d0e9865ec8b5c1d79318c2117134a49e7f288b10f233f3c3ca70585fd3ed792b49be7d531f7fdfd1cd3f338f2469bc1d8aac3666e3d84ad1493a10bc6d96dcf24723ff29e46c353a24c615b965f62e90a35e9da3fb15197756e2505d07181d3c827d9fb9355e7791f4b3dc6ab141243267100bf729955516c2f03997a8fc41d5a3d37659dd93d60ccd60d7d2167711125a6ecc820f01e65649df331cafc526ca26b49453b0bfc0444b6c4d6a211a85254d1d5a96d43bb61792f242ad2698d98ee1c2281042661542f239df1e3e8527c07b1223d63a5538920e7e2a2dcec3725cc6122d61f98c3bdf50665937c524e2e9f516c287e3b9fc00171c704f976e0ea43e8bd5d4be74db45b0d19221b084debb282e20f0da4d62768ad9ded1d00d377af8cd2ae6530c3c7cbafed8998455e980ba98fe098d0d6f3d7662d08cdf4b65d2294bb38afa0af032642daf9f01e0b3b8b50e866bf3d2ef295ef7396a19419ef5033a941bc54da7cdde506ea9d67f953ea840d85a5f659d7cf12d702d3a195c5b41982085dd3cf37faed9fad7b2e0a0502aee8eef31c51444b58169d628e19ae7b20186f15f843a15df94ef1f49d409aa487cf013fc570e55b8932e0e1a03d726ada8efd539b6852448386e1ea5e4b02d36e8ec0cc3bab76aa39c090ae14cdc64e9ddca04ba660019373707214b9a24cc6d42be110f816a70b5e108d13f88c14879247bd54cbb01d1da65f9be2512732569685974aa0857d235f45fbb22e80051b17eff083614c117c13a62d606fd9499abe1d3a682bd364c7b9dafa3657c88d4480658f955d0364127654e8d8e8339fb52361cccf81900eb45358bc726381c97889c952e294de89a1f23f12cf3fbbaaf161c5ab5f08496522e3eeb0bbb4cdde54a5055270b33629e0e3d0e75307fa0291457243663f8991c2b93de0852b4239b58a73fcc38a46234a477e8b1317fb47251aa318c49413fe8a0eb797a2a940d60490f83d00308f6011a9609723ab2039220d5f2dc62d5cd9ab2f0d04c16b5adb8352be3d8dbea27b8bffdb2d215e886157c7a77105026eee8d7a0c649bd10565ba23c5bc32210aa5fe0599119e7960e24e8c94a00a1413d5067a16438a8128d2682addcdca248e64948b689b1481af8ce771f774ced136f7822fcce761d1cda1f19d3b7c3230c9203b8917a3ea7107ffde4810d547a17a32449628aa08a687e3ea59dc199a3ed9ae5cf0b3cdf793ade6112fc90c8ce80b8d0c159d8ac5d18ceef1d423e9f2215cdeb2afad216e5729e883d7146a77aff77fd3fafc01f8a0a5b1b5ba25e1082fd2f55831b5a24d28c4098ded7693b71fbc1603f45b476174f95a21e2691e9a8550c00f803829176b7ba21bb51467946544efcae3f1b19080dee271b74c5adafc145090ee32b7b336c26b4b8047d7ac9cac0bbede30f39370a2120efe090bc7df9d97afbb8eb92c3bd9edabc4f354f4692525fe96c4459b18724c7c1292fd64f06ab0818cbb0d916fab464e0a9a1966cf3d175dae858a27c8f43153c387a968292a22df7a7ed923460b345806e8619863584b808ea083c55628c86ed9834e6107496446810c7d9496087e1d8fdc5598870e44622eaace42487092bb56947dcc7066957ba6e30d752f99ee969f6fd3b012446b5e1f8625768739f3459ce5d86451b597e290e1fb43642e3157455b9fa2aa4053bae71d8c3dfbca09d7f8c0bac6f0c166c220621ba1ac412501fe4f342ad40d16660215a581c4995463ef5be98d8045d196eba5e95f71a2a3ac7c2192891e7f4187baa4170220c1b979e6dd12863d30c37f58689938a131d52c1367c8e5c7e25331f3750490915818c43f3fa14a708d1f81d61fd8c96ab9af09a6552f953300c8ed65e9799ca8e4a49fb56e6b3110e7d3e0d9baa93d8f0e65b1c4a089ad0140a1469563b09abb6775c0d820875d61a40d3d75e535d864080b5f5d659afcaf1fc90e98a5eb43eab1d143ca2633bbf65ec6090b86a2f8fdc2c3b4af3ebe68ec43c232450580d911225e652179f3e3ba46bf655066b1f7a382b30477cad33ca961885235a2d221327881171ed5b2f2e98df02476dc17da59372cdf9413f1222eb303d8724d3a42e5171d6e851acccd42f331108e206596cce039a9b0b092130ff168894befd4418ca9db93226189811ae3252fe6b23b9828f4232034c31c7b665e01493ac94e996e58495db96231024edf61c422abfa14d33621b348c208e312418b19fd22872ebf813b12bfc7d818f0b3d3ee17cdcfa7ef719ee8af6f508a65d2e2b6ae8ad17904ec56c61a21a2318206532a476232acae4953287ebd5e276f8fb32ac68e0ffbecb6b05bda4ba53af1c27c950ca3a4efbd8154d1e0b8b43d08922a1884d6e7f0af8fd0351438124be286f3e988c1e9c83983f739547b9d28c3e455b96e6fa67ffc2f9babeb2f86d439b7c7498539a93b6fa9e9cdf814f8555ea792ec559440ad81adb016e551b601531ef2cdbfdf300cb0464c0a3c580fe529f3cb1628bbf9558ba56f65f7afd6bbc26daf8e5343f4335bb20f4dc17b616adf74bd573686c5fb82bc6e189c6dece76540026b163e08a672972f577b9f41ebf315795aa545cefb8c09d43453b2441653740484ff4db7a6921e805aaba49a83d9398d01e64f916805f10a2e837907e716eb0db8af36a81dbb9293b79f4f962df62360cc75b78cfa86df4e27091ecb2bb9f7aca7decb1ec68334da68f1eca3fb650215b72bbec08fef6e79b3e9e2f92f3643a9403457397116161b52c2e8a89dadac26afb2580b5de18b00aed47cd904c042dc41416a2ad417b31e6274e1fd848f21d386a1ec3879ed43fb1f88a515ae1dc06834c15591620fc1021941c803d28adaa9bbd3c54faef292857eb8504657140fc01654acbd171bee0cb019c61d84f567eddd4de7533b66eac7971fb0fa8177ca3e30e46ce025388c1c123c3d83920d32544cb1230fe8fb197ee1f14f0447d1ee974ad45ffbb13c105ad8c6927669258879eda5e5744a727b298e66a5d00978d0fb9c7d5dbd1c48ef504165f732be432355da8198310f9ba48b53bfec0f81c64bd954f92b9018c3ab040ee46659255c81e98bc583fe8b2e9c5de05d59cb9916edca8d4063b999f59d8a577d3339ae7d1d8428ee4f29cc1e1659e3724463ceefe35c3c47a703fbbd2abd5cf9ddf1ac64845d73d27e3d754fb4d97cff9fd83fe511c9f484ad232b82c9d98b3ce1cef24b0060d2b59cce777b19444af9f1f108d7332981381149d158dbab6a892e5cd442ac81d7aca324afd3d625943ee79371089d48c221d7dbecc764e67a737762189ee1c8c6665f763a0bd368695307200e29b7198d5fdd96cbea3a0cf2f3d854c6ff95b10f8fc79153bf0dbeb130b3d631b1ffe557e85922ecfb63bfa7fdf8bb9743b89efd53d64b50c72ad68124e6b36a49ee1167a43da7a15dc30486e384d09cd2f689510392f256b39c6c07dcde2920bdce2655a418b4cec40e509b80c7122d86c1000be8eb723f1bbb1157d178086afc9da3417ff8cc941d870aea29c3784d6ea76d6c4f7908b279e636c30c15d36b47bc86785f08af5f08bcf6b94be833a40ef401d67268726a03ab41f6128ee2d0a8357fc22d341fe39428b443816ecfede3be86b2cb3d61eec79dcfe9471843e3c45076a2cb17be281d7c8693ee001c40530127e46f3af7f5e07488437066cbbb552a5a5c4d05b0d7103879806cee2f57b15fb2edad641f6bae44782af67bcf6ec4f68ef36610a39da2a96000af09c62daaabbd0b0d36c5887033bda051c7f4760870485e0d81af460b584f18b942879ca4bd63829b358416d5a0b21547b90886a4526ddfe4047d469f909fefd547a0c9935fbb1940c0d0fdf1245d985dac420a0fc8a43faa2dfaf327629acef523cd8837f63995282a588d62c0432b1f0377c386f1c6262ed02f45d48f798ce5240612757b886b16e3c2d2c46aa8073be362c70c26d479431a79e0b06f2dd42c0d13f090c13eefa2c7880cccae9ce32eadd54998d7388a636edac04ec6ee209f210c35f6152e32b1745d52d5ed428b8ff6307b95b0ad4897eb31c8d1c9ae44f07234c8f98faac9896923b363d2ec62ae32e33588934bea1c39cb5e5a648e284177b8184dc09dce3f28aa130f2e4b8dd45441f161dec7383aecda54754a4c9c7db8ab958d445a35c1e380c837d3631cd3fd629a411d550fc6d4e892e02ed16ae98d28060e90080cdf3c0c6f73ea24bb6c0a4195b5b8ef5ce15ccbaed8381309f97063c0e24005c11fcc0c89d64a6924a0b8f59663d59784de0f13f2f446760581a91d1874a8cd2bd3a95c97341243902411d0a2c6e2f4431eac2dbfd8af8f71f90a2dca3b112e9b5dc48bfcd2c28ccea1605e897795e3617c9ba816d501101f46415a758a57fefbc032ce94d3248155a38b876dd800ff9ade9602fa745683b1b8a110663d23429fb337e256159c16d77833cd89decfa907d2aaca72e1c708544de2382d5dc8ccf8381ff8b0eb412f4d1bf60fd3c24c624d6fe97773f6985aa135ee50af78409e73ee70b7a7dc2291b310e937104addd300eced19781fca2a50a4e286a62b3c7e81f2ae05d08c4dd0791d1e92fae3ef516d88a24f9d9239452acb5728a675959002b900d2878e348945af87bdc78f31a79c22c9080825a2564a605c5861c050eaa5ec811fd22e8f349136f7ef4055c91b4c69720404760d06d0288eb21da3ba58170264373bd5d0975100c820a9652f708904bdb00e46407b45caeca3d73afe2b807761e57cd4cb82eba1b7dc6bc3fc0192629d22fde11d83e1f0478fa23bd6ff2111a723f23402d6d31558f855a5cb139d0d453af6a87747884f0620dafaae3d539bdfb56044596266b850d361ae9ec2e9606846f4ece6fba851e8b262c5fd691d1551140d6bbd6efa6d6ce9743e5a1f85e026ec0d83645e31037bf2ee78a5dae8cdae9b9c44611dd59d89486dc47ee9a945f49c8591d287930714119b1c600d50eea127d551f09a41b481756626398b9cd930fb215efa6b55b3fb6bde89cd78f833af15f24317f5d97e3300c420bfb17623ab5df871e4483b7178c8264ec672847c4bf9e0926c2bbd4fed31904e6d56e3d5b20febee8bdfefd1b8063584fdcd33a810ef4999120d58ba52e7e076f2ae60edaa3d12c98a7b752a90a4eca394746efa0913013ea0043f0318d70009a98e6397338b5ffe21c9971c276a1d7c18245ba75396c7705eaf9f92c9dbeb3c2074f26f940d09b9509fa4637140065c12b84dd6ad2079fb253568fe250dff0b375d69e25e86bae82090ec5af6559abf7f6d42bf78b061eb1b79be983276f7fb68ffafee6f8467898e5a65a5eacc33c68da758671421e2b1e6912ca535753ffa0158885cc7fcc814543bdd2699a4679942f44f2c8471811b0754086457c823c005b1205a9168153057b685bf3f58081f8ac361f93bb7760fabc6b577816d70bac7a38c60d9b843cbd408b51fbe56405317ca5c2976fdd6e11e62fa297a40439b28d4da394bf0af1c30485aee04372451fa0aa33d4980444cb490afdb0473d05b04863b1d9f8a3745dab1f5692d61867dcf7b8a4939f81bead6a69039e0296a1c7e74ff079bcb32bb4fd3e35a5bbe3ad3f1bbe878133065b11c19fe61eeff96a7d21c8853f35db86ff87a20612e4c80b5fa3d0fe0850a8e6d225322a7a4d5a32ba228e1e5bfedfdd9ba25bc23a4cc967fde57f1d3fa5a8f3ff5aa8de02f17d149c3408353f31ae62e7c29e5c8549f93a5f6f7b6a49018c9e034ac8fe8d5a405cd5a803d95ba4c83e37eaab37cdbdc464cbf4ea763031b5e0472629ac92a945c2c107aecec81b1673c77d3f5a35fc33c0ceb079805570315d054ec2dcc53fe9053241da6194bd081e2a248681166bb9bbed96524a29539201d108b208650854526ba9a5d332b149ea5a67b3d4b5ced6d19cda6aa765e284fb7850f6e5c6c3121bf7f160ea5ac723c2715cb6fd0c0882e046654eb39e28ca470e04570e1562269922d26e93bad6c9ded6979ee43e9e6d52d73a9e0f77d2d19ccead670545510445d0061cb98f47d6495d5b09115b14d52207044770044770e43e1e3ba96ba2a4e180140441b7e99f311f35b961c2d93a9ad31999710447700447d0763257dad9cc11459b4913be72ff1514358a202882a2288aa0c8843ce13e9eed75c27d3cdb2b2532c146f4d2a675fac591e9d409f7f1b8608c31ae794dd147369c8e66b7003ae13e1ed73a5b8d8ace804eb88fc7b5ce266974a8c9df547db813d0cc4c7134b75e43b116688e842f51b572ad56ab2078b8a5aad56a45b3c25c6854ad40d7eac84a5cad56abd56ac569e084fb7836ad336732e7fb67ca4b92c562b1587852d73a1e4e1d5c5a30c618bff237675e2994a6715eafd7eb25a4be5eaf5ec2f5f0e5251b37714027dca77a264dd130c32c9125b24496989a71523fa8eb203e5a096175cb8327f5cee6e194349463712c8ee5e1b80406eaa69269e3a4d7d6713a3d2e8a2c9125b24496ccb593d9d3e93accbe24cfce662dec507456f7a966586485b5d304773d510fb8c389a124b5188aac309b9c2eb044d534f5ebb522e2a68629812d19bde4b91b4a2635d3f2927c6c843b124a326b5236f3a65d8512552cd54aa50245500445507cd184af195590156bc7901611d088eb480496e47eefb7545ed132a9964972c1aa5045833188410cbe54abd724e2a4fe999aa47e23f80897245493fba74d56a956aa71094c490b452b95b922cf26b945111441111441fb6a986aa66030984a058220c864dec0c40c822a213049b183b06972150853c140154b079a84f15130f76b9d22709f8f94357b64e2a593ef9f37b389973edf3f635ef27cffbcc2a98ccf78c9bd1484aea8109f46bc241fd37061e825366baaa649fb761a906bb1301e47a975f83ae93a48afba5b11e8fa336f235ffb48d3e44e02c498fbdd36aa535ae7c2eae7c4106b86c4395793d44f83434e1c738b3541d68ccd26f3c6279369c4a76a92fa3b4256fdd367fac749eaff0f85381aaeebfce93a7bb6ceb4f33c3bb9a4c51e5962ab3ec4c2dcbc82a2525654a7b13d84eb34c1e1fbd7c6a6c9697aec97b49d4541cefc84419330be133063306faf8ff4d1c7fb70ce7eeb7ac857be52ca2b445d8bfe83215dde6fbc6f396e7c7739384b85b4f22faea9740e98f12aafe2c93cc3bbc0cc36fe3a81b3f1345e6b97ee51417164529c194e101f59978f4478068db75000730c6f2bccc25304d00283cb33bc47ff712ef9e18fcb325e7a28cbb0f185329759585e3acb4be738b1971ec387647f003c8e4d93cb38c9bf974892ff4c767fce8bb99018938c9b70294324c95b46923c0849f21780f7b9d8b4d48c92fc91ec463822d97f86272408e7b90ce07db849f6c7a1003b48923f0c2739e89584065043a343f60f000ed9391e9d9d97c2b5d8d8deb7cdfb7a84f2e75b6697d93696d73e20445c96ee4322bf1089de5f883e0e84b6d1ff79effab7ee856fee6a1bfe2f3c20b40dffcfe69f4cc63feffedded59cc472b2fc9f03219cb73db7aeb7ac0c86ec400089080dfda8f6467925f7cf3cffb111ff5f671f7edb32b5a868c8eb3721b22bcf8bcd84474039c7f8def1789be8618ff899ee5bd13a93ce965d644a2fffc258a2112894422ef8bf12cafd23140e5499e10daab889dbf7c64d32c1f83c573e1dc4beddebff2335a6419e6c007b3052c362efaeb3b4870bdfd8bf7ee7b51a3c6939a4462e96a0c77720d968fc1f29cafd1091183c4f231585e88181f2306ce35a4f46ad4f0be184f7a2d06a9594831384838d1736838d16bdefd9d6679d9781ad44ba2ef565abc1922b884c37c74cf9728f1978b36288708ee9e119d73f8b7c8276726cf9a2454c3cf10b88f0c19621438bac36b72074ed230c1955f7c4b81ca2d832c9d504285fce2db13f5f0e259deb706f4bff8215efcd7ff551a79a30e6971c069e2e127ce31622c71c3a6f2361e09eecb62349e831289441d0715a3998f3c83f4f3338e8894651c1b34cff02c4af4a49fa257f98f44123dc901a21782a4d25990e47d9f6d4c514545f43e1b3fe3351b9d45c5ea153526fa199fb32dc70ccf85db62db26f26c8d652e1dac7cf4c9064fa4f2f264838884392cce10c99041fa0881060d933c89fe868e3a4934a500fd97e52c4b528d1a356afcc75141e6b4320fff71c01f723c0f9ec726696edf5b0e92e8b7173da9a33e123de953bcf4491f89489ff2dcf6a44efa00bd0dcf39e2e224bd26e9059c0d9e0806f43f40efe215f03d3a59f40ec03eda5ee4713eda3c8e10383fc2e27d46f8b603f42e409d3cb5745d9615d0a1e492131272c9c98527f2b7e1e52907cbbb7819ddf6dd09c1838c17fdd6c910fd8bbf10752e7c347778b98570bcff0e1d48ac214b24371e982da037c0b1f9fd56ac207fd9aad3666ce8b2d8248d33bbc9d9108ec69b5c7c0d1c6cf817f71baec6f6d3e59663a33d70c8221cb2102f5ef45f0f1cb210fd2fbe460f80005e869adc79967e61a3ebf7ae071b6fe35bba0f486ef9462b21d7de599ec6833a193f716008b939a0f32c0160c9fe59ccbfeb3a8a250d7f05c85802d49d8dd75e8814d0dddd2fbebb2540a21738e0901de3f6e681c5037532453696d73edd47f3e7b3c9f8cfe62d01faafe55f7c0d1cf28bafe12f3a996d803a3f7dba01c45a3a99650ce03b2edeb71c221b3cd156a3136d8f43d48fe3fb5d74a09f716b54667803e8dc4649f627709f05639ae378652de0becce58519971b9fc3770b4cb58ae4f209e88ae4f000e83e1f12e3e308f938473e8e92ccb94213f2694ab42b7a78939cc36b2e1d8ebfd1c9dcc39be4e864ee9e4684e8d1c39be41c5c3afb37bafa72fbe1860779a218d0bb78179e0f170ff244ed3da04fa097271b72e884c86236741cd424cd77d181ba2c16e4633c0b9324b6a72f84fff6d66574fe2fba1e64c8f819dd0724cff86984f397f1dad68918e04fdf3f9f6ddbbcafbb7bf19f7ef726d9fff31aed7cbaedc58bae5f6efecdf8eded7bf7f5f026797bfbe25f7ceb6496d13358dc9362d46071568ce30481134202fd1fdbb619ffe2deeaeeadb7de7a63a1327552980fdcfd65151ca535131fb975f7ae4777eb56babbbb7bdff8c8272abbc7bc9ba8418d1ff1e6b2cbf9edeeeed667bb5394a39ad29e32f37d622c5fdc5b85044dc280b1048e008c6a6b953824a9b47209f7f91bf1987852cebf389eb272589cd474a635020377048f266640051e60d068f6fd2c5d6ffddb0346764f545f9e7a38a9ffc5eb7b3c62dc0e4e869d2a79481a3d0132e4eeafde15b87799a61da369d2d15b40810c6197665700337d2d8503f97b6f7695364fadb76d6359f91767616921f24613a4294b4912fd9e22d3cf40204d309909326541a6f423e072c90e98d70e981dacecbbd659ef9d73ce39e7bc993711376759b37a254515e2a5ea5d80d534cfb9f190653fe77c510ff5fdabd763e66c85010c98f63bdb131e3db608f8880241e9e823dad24c5a49c3fad536ad848306eecb529e77ef6b994fb5fff095b7d697529375ce2e5365a92c9565aa5aff7a592a9ba99997cd78baaf47cb129dfaf4678f963c61e4ebf5923e5ae95a8893e87d7f4f6ffd69ae7bb0681a4d7ddd3cb75f5ad7b9f66bae84645ae6c9b62c95d5cfb22c354d6de324fa9dcdfb32558ac7fbb255a6fdca522b9d3c6d7356af5f46d4cf881a81ed73e03cfea320940011c4105ea21c4e9ab2d0e7506ec99387f69f1c7b68dabb47abf7bfce9e4894bde887cee38740c7cb3cd10f9de73c043a5e8f960792e7d75a3b4df386e87888b3abdd0744ae36bcaf48499abfd275ba9eb33bf97eddeaa5be77e381fbeb61d9ce310357f110b866e2256a2349329f88d44892cc3ebf8afdb269efa6d8af7e89bda22bbfbac19392e42b1ce779e8ca4730d374c4e4e1a594c74ee58d8cd5c8d7d6c99cd292cdc478c99f6e592a9b41f9cf672a2f65ff8d8e04c0c57f3172574376149a1bb227691bde383a4482a44157deb74f79adfb86c8fedad665aa942e4bfd80db7e66d3be8fb83892e98bba96821cd1afa16b297a7405c9a46f90106af1f43b89cad3ef30549b46e56727a15f8dc91ec64b73a5c39234045781ac790f386b5ad6be08aad27d1d45a6dfa2fb402cba6f256f28d98c97529e7ea6a2334587ecfcec300085022d5943f13a3ea2b457315e6a560dea88980f1fb9e735ea8858a67f44a33c1ecfb7f4bc07d4e9f012f7f435e7fec47bf1910eaca4e6fa94abb97646d47c3d05348dee7caf27badf00cf67ef39e57bcbc1f9881ae13a5aa7e3bca773e1a39011ce07901327c7f5603854091228607677cf8d87ce9ea71b0f354f2d076e7a266cbabbc7f359100f575fa688a7afc874bee7c88c99777efe4d56be2fbec34beeed88f111f576c4f888be7f01eff076f8883e4c86f1d2e6f530d38ae974fd9a24fad90cfd2ce5259909c9943aa5afd14d017ec44723fae2d73325240dfa810c06d90ab21264292470f4bf2c95e9c3b48d0543124bb2302ab959f235934e7635734e0e49743a1d18a6d04b49db051c0c92264a8ee0d1a39b880f3031fd3c7af4f7ca4b43fa8de86e2c5fa11454f8d0efbe44ea4fa10f75314eead776f0921057f3fc8e902ca13c7e17b2047afc2c240e205432fe13594a79fc1c5962f1f8a72cb578fc1e892388932b7134916c019246ffe73874b40d23aaed84b8ff792deb76c0f8a833205a0556017981fe21651610447f13e97cbf8eedfba43bcf5daf1db3c37dee5f78bcd0fcb793d9c3751f90fcf1ecbf4c4f27f3367e120c9f2c43d640ee1d1936a25ea066ebede0a36e9a971d70f0517f2d2c5e7a1e3d22b9f942cb51c539365587cffda5bf75e1fc4e9f3e7d4a2be595b552ef0526c9d4f18289f1920ca5923c9194a008f90b3961c54dfe7006834b6bed477eacfd5869ada5d33221b98f071cc1111cc17152d73a9bdd3a9ad369e9b44cd88da375f0951bbe9c6ccb381b279bf8dacb61620811e78cf8114fa25aad5630316ee96a0582e09015112347522ad60ab682c1600d7bcc851cc5a3c70cb58e38176ab940100441188842a15028141ac2927ccc855ea552a9708f197a954b15aa5e5ce8552a958a26894a54a9542a954aa562a9542ab14eea9af4b1477004477004c74ebd928c1404416f31c9a8a445ef711cc73136d6983c9c91de301a95cb8787539582b158ac59030b592c168b05637d08c6b281281f73a8170d0ae58343c5c016ca45148c43a150a856f842d9a05a28140a8542a1504e33d2386a7414cd089a21899b1af61d6bc562b1d81046701d8351eb491c73b1582c06b25a3420088260c7c0162b168bc53a06821d73b06360c73a06b266f0922fa65c20cdbb4260e658461c3143297923fa2b25c25260986b52e2e84af5984af9aac7d498ead14eea1abe361c94176359122819e884fbe01b8e3edc09e8260682a730ccf005410b8237a10886acceb8a072d724358b141450a53eb58e2b051b5f7ed382fb4ec2e37d3e09a9b1484101617a7d6a9dcd456db84fe72e548ac663a24d4a375f2cba59e3375ce7307f75b43999cc2563e794aeb3cc559eb84e9e348e6b9ae4c946096c0c5b2e57cbd56abd5c2d9503c1168b019ca61eafcf4a5d34e16bd56ab5c6981dd32d8db5e48b035b2ecc857e358e2d222d56abd56ad18cad91a60596e184fb78eee6b35221a18b8dea8f848c7044f090ccc97c56ea03cb8509f57eebfd8e592c969070082692dbc5c5158bc562b14256c862b158218b15862c58086385ac8f0deca4ae75367c6d523ebf5bb156a8f500f919f7f1e079a96b9dcd06b73e446d5cdc3a9ad3d99a26f758abd5a236de72d1e0db6ad9d6abf57ab5f0ccc46004f4927ccc85602931954aa5800862ca2629295637923a92a4c626954aa5c05408a752a9d4e564a954c384d886a5520d13c209f7f16c93bad6493264aec0111cc1111c4fb88f67d33aa27cf90086df6ce57e161ec2d19c4e10044190238a49b08604d009f7f174b63048e6388b25b24496c8126b74bc4c5210556a92ac902d9b17ab45040a14d009f7992b219c16112f794027dc87fa4c625f9e8eb6b6ce743a3bcf4e6d0c5040275cfd74360f6b08e73514d009f7f1cee6a1618d166b7283d24d2643723ff56c9de99ffe74284df8f2180cf113eee3d9a62472c27d3cb86b6c8610f17cb893ce088ee0088e609ef642a149cd5acd6a2edd5ab79d670fef17e44e2051c98d8795a4319b8a865d55f7f7cb75e4de976d91de719ca4af62a52d502cb52e90d2d0235ec21e4d627b9c0f3a4ace3aed543be9044d8cfec075e2ba81c9523ad75bdc24dcf08e23936b853459d774d950d29e419e90349020692441d2a87112ce9d2e70df1df14ade50812cb9e8a3d834d1f9f766ccf7c34266684308661084853a7dd6e59a268bb93a9f90382807f2fc59e325e904120ee4f9cd175e452104ab4076b8e03a32577da7ca355553355573a50aa25279a9065985dc9f05a509f235cd8d97be195e265e6a32431a499aa60625693e8d4a158225c85fd33c610bf96b709ae80f24693e12fc848b5a171d29ed64fdb0b20400121a908ac40562290642a071b6fd74b25dbbcb409330be7bc3849befdc68bec8621fd111ce92e609f3dd45def0dcdd5050efc3b25d727b7e6f1c48cfd944c685f286ccb39b90e79c55e4f94ea9e03e3483e0e125fb13f55a73bee528c2fe7d4d043457c85a3bac35ec9a98979a04b0b659e248bf7aec9bbea297e4f9b56d47360e6d7abba766def739081fcdf9b8a356e0e8103e9a937af3deef217c349fb33294a10c43c9d54abd237c3469c88597de4bf4e707234ffa94524a3b0c33ce0e3449002b7fd62632a5e0767c720a7717f5208164b9e52882be0c3311f71d93e458e5231d3ee0d5ac9d8e9574e9d2bd950a07f191abb0ca4b41f04a5229615c953b5825a5942e62969d0190fe986fcf4791cc8be9979e0f1f4092a071a2ece54f9328f3440fb8b75f7a3fe4b7fcf644d98ffeeb89b29f93a35e6899261849f277c94e2369bc4693303e8f2adbd7e47fb408942fa293a12faf0ae425c155e26a40a4ff5db0d694d7507a855998c3299ebdc916c51b6292ec8bea672f4f96c3c9bc1f5986c2f14428f254b30e772823ea05ee6d08aaa3cb24712e434c53f617a784dec5255b946d95156399bb7bd671f7293899c7ec9f741e763e768e47a35128643d0f7a94566d5d56b63775557795add6f1aae6859eaee86ad5ba2db056d0a37874b42090074447104a6dd11bedc6e94899f8c8d29132a1378e82f21205e45510545b2010080402e50061cc714c38394993b5c178ecc6be56dddddfb6acb55f6f458852b4ef8d08508e22b40779a2940f1dc6bd7d7fb99d2c15fbde0aad38d53727cadd3b9d47e9603aa1e788d3346f6219456ea2140f06e38b71f562383e42de84d93fe98ad49f20e638cf5a8c27772dd059b3a2bce1b68a6cad173e4b866ced14301c507dd05bfb281dcad7719a50bc711cc7711cc569aaaddab2a215ad6845719ae40936ded8182adfd455a5fc8bb7a6499e402b4e92ad0ff272e08ed857ade13f8fa7d617c2f320ebf2917dfbdade5a94d7b6cebe7c641fa5b3a18fec833a5be3231bd67f711b7a09e52de8eddb178ae7c2814020cfd2f8c87e0e9c7565cbc44b61bdf1527ddb24dbfab5d62d47b5e334d5515a719a6c2849f64336ccf66b6b9a28c61c170afd8f462d2db595ed6b58e55b3cde40df9d55e223fbd3c2b2b550481ad68a9286ada3b5a2e8a57e5b7ffbde8848f9ede54644f52cd039e53d5f5333c4e256d95655b6d9c7a6a9f33674bb221090a7fba00ee67a32329fcf5ea6733b79c2f8e372fd42b9d6d7eebdf7af15395d11cf6bb543bb567133596e39523c118c8a27aacfa99ee8015956dfc7e7b3af5e0c7ece733c1f9dc70fe474593eba427c649ff6cc381e2adbff01bf8d4d92b562b6cfea9c004694f25794e2891ec0f9fb319cbf9c67e1c570dc24a53cf7404e9c4f39a17437833a47e5ee24e763ee733c1f4558bc0ffa37e55978319ce73c1ff3533c1ac447f65f1cecb944965b0ed103389f793f8ac4cccffe077dceff981895b593b716dbcce360dce1b84f2874f2cf8d46b8a5c51bb33d8dd3244f37d9c6b2a5e124d9efd807b37d19ea22d9b74f579364ffc5ad386fa6c95bf3354df72de76dea95ad081bada529cd5bd3d431fb725a6b5f7399ed7b6a922c27078c8c8cfdcc93e9d824d9e7783d4e92fdacbb8191c11eacc549b26e5fceb7138823d18d4d41e81899bfcef2fb7590df2edd13427e8ccf497ffe7c39f1c4134f3c7774301e03b3a35f5a5ebe0e29a59452ba4ff7d7410230542bccac6528066eddca1cec8073ecc9c75fe0fc3f9a9de20e63ccc1e4c04dcfb10b9efe8dbd54af8771e5382b92e4c0595854d230b1639ef2525fe133b95bcc415a6c25ed838f1a076e9b8f3b1f1a06460601f2bd91ef7bfdf76d90a5d0dfefe40d167fbf852cf9f0510391a3fe6f25dfff481c2d7392ef836449a5d4e2ef535942f9fb58e2e8d4e5e4fb2d71f44cdbf866be7fbdaf874c92b39f303ab2c0853eec00224bcd03e9c34b0dfaa81b47bbda46378e3ed2361a47d3b48d7e5c83b7e259993c0449a3ffc4fb3ce706bdd4497cd43c90a576428e5c8da36bda46af0c21e548e3e8174de3689bb6a18a82a4d13f43b9bf504cd2e8b73960e14949e3eb7cbffb4864216e6d2764a9a3e89ac6216527f1d24a8dab741e0239ea6fd179073a0d2fcff77714dae6f3cdc27312c8517f7b3ec5fb5c6a9f67cdbe0580e4fbffd58cf2daeda4fc8b9758b0f0becedf7d104ac74e52402d47a07f0165c06e3ddc9620efe5c4fb80646bff65729dcc9f9873e0f30ff809c422da072f514026d10193f5954be0971b1232c9a9080564927e19ea98a320d140eef458d1deddddddfd211752ba7b64b763eaa5979973cee9dee2f21cb595d63a2ba53bf8887ad893b3a6a04f92468656dab44852bf48d2fb89e783c994d371125f5bb94c3d2286c8b4e9084e623e6be56bc79c734ad9ed8089f1d17c010113b343564a43f9fafce9eba84f5b07ebe9e023175add71d4ff5c9a7a2e3e9a3ab8576fca397578a9947a08e78b05077da572224ec44b9fab3e3cc44bb209fefd1c02f779ca53330e128152da747ef56028bdf756fa3bbc74bd1d3015c64bb6beadb5c547f48ee8efd0e13af8885e6fbad0f94269893a0e5b446769abe7e2a3171d6ec97a94ba641f2e3a7849a3012e1cbe6648c2041ad424d1849809b4509ba3855cb1c7e170a146134d10f2c4757500b040a4880db6600625a2aca28a3164e1892a04e9401160e3edfaf29361e6bae005af915a3f9f1666713c3c84c3f13e5c394de3c06de2e582d73dc2f6e9506bc5de7579986b82095410c035e279ec796ecc9e4ff1d2cd1ecf8f3c9e77a13a795e0833b29427cec3c3092be0c19227aa5821613c7d9f85fc8db0054b7041678177c16b64db9e8b226fdbc3f052fded47db875c6cbf832724218510044aa410cef060a4e23ab9702d19a689eca60adc2c3ce446871f488246be9733998c1c0fb73ccc0a9598020696986b42ee7c8a97b6dcf99097ec77de45e7479d6fe9e44e1522c89ddfc14b27b9d3f91d9dd7e125ce77de87ce63410a24597841922c5081641cd2c4888591a9c6cd89c3b9420a47be572842be170b4ae41be65096d2544474ff76ef307cc44958769926fb610286251c48c29225dc38406b0a695855a108b12658d088e45a6bad5503a0bc31733f1531a0a20c1987996c610a264a48a6b0c20856d841122b8881c50720b879cd1821891324e10a9c7bb79024df7befc557d2f44b41855ca560a456e1074e8081200ab029728dc2e8de7b51eefdc24cbef7de7bef5582865c9f52a108b91e410a25727d171b136ca0022ddc200a2bf8c0124d0baa28c640a384897c9de04e80b8901085325841252ea185d3f7b9561c649af3e10daca0596bad67633e92376ae670a2d881114e3a2a140aa58417b45092998a56bc8062e600503c413305250220a780031c53a8a289286e90c38f163400857c6df05096905cdfc57eadb5d67aefbd571c824a14508c4b40030fae30aaac10921be83e75960216f215af0d57877c592814ea03f75ac1837c6ffd7befbd1773271b560d9b25642dd70fb9781b28727d18a315e4fa2c5e4240aedf020531d7c7c1a505b9be0e5e9246c8350a56c81549ae48a420835cdf872a5f1a17543620c0b12555d41851420f6c5653685638e109354040be8fb390ef77bc04839335493cc18a33840036240612963f0e87fc2e5b60e24d38e7028787b8899e9a3e4104a2988d7d3857aec4c91f0ea9d3a743ae2f658b9724122f3061efd787f1be1e52ccf5ed8d8f6cac0c5cfdcfded8269e8d39810c2cec8d97b0679b685848422a072790a2084ca4e054853c25921190204f4e9eefa9190fb24ae234bfc569c40504ab073a806203349002144e534a91a77ce2092af2b43737313b8038c9f38770953c3ee6b74c0ac806c20082320ca107426e3086d3a4422a4f9ce7ea755713f7c318b54c930580708312c02045440c2938bd8879660b9b4d1049421976c0042e0461c1694691e77331c8f353bcd4c933043ac8b53eee4491eba7d40fd520d79a5c9188200c2e729512870c17ce3366b142a0eab2a6d131701f66812f626a92645d812c578b060c5d93245f449a4992f9c3e2cd34619677337384cc69227338d864430a4da04e5f7d0e0b9bb430dcd09c38988a8c9f622c650904cbd94b9a2f66dd1508702003b7bce42d1fb17c888f1a7b7848eb0685ca5ff570cb47fdd7c32cdcf2126c9a2e0822f90017b27dea251cb27d89f32ba4716560d6eacf56992a4b65a8d8cd98fb61e22ba4e9e6a1c1be467cd4b8e5eaaf7ad7e5a3ee8b59e034f5a9ffba664d3b2b533170dfbd01963ba809a406241ac88644039997dae0099fda9cf4a99ba0d64e4a12761fc1879527bddf034c28099526be441fcd6f7c334d9c9f3d6a7f936a2ab69727cea6fd0fce6fff83a6fde6fdf8b13da7bb471afa508876cbba3eaff23fb4788ff7c3f32d5ec5fb5124c6d33f54fee3c99353588b4b4b06bd755dd5a0b7a82b54030e062ac024b85807d94543064e032125b2bbdef323eab9fc5d5f8be89a2da3d17f28a4f2aabb5ceef2c0bc5eaf95170c86c5e25f5c5be9e86b92e6b3e85a74549c241a17ea724dd554a942d4753f2f16776c69714749732b0b4f651c3bdd0d611886355495169ddbbae06d5df0a6aeeabbf7a67067af0adfabf2516a2695ba335785f19683d2dadd8d31c7c18427342fd179eaa93f752a6b92e80de7de47635905f42fdea1638b86e55a81b3a6664559d78b0851eda72efa9aa695ffb8288ce51f5a71aa0a561465426f682cafacac78323235bce7656ef8cf4a27eb0b9f70d553f1bccac7785ea5060f15f379cf7b3c1f3778f5063549f3819c965079165d11ffabf2159c268fc70b3d985b58d5c7aa3caaae87b0e16381cefd73ae30abc8ad4ee4e4fd6b8be68741acba81955b1cf5bcf0ee78c3ca18b67851c7e26be856bed56ab53cf7e6c6306aebd4a002f37c579edfaae95f3d6ff9e886b78603fdc771dee2bede9003711ce77da03f790dd439e82d1f11f1d6c957d0c909be2fbfe30d1bbb3f98311ec29fb3e57096eab6a6e9a652ad542bd5922982bb2ba20822261a50f97e1144dc2b50a85c97c89e76b723020914113e5028228e40a150b937e081ed3bdf5bfdee2e131fcd5bc51d43ca85ba15e1cf3df77223c23d11dd3a7f53d374c731f5e98a4040c27c3c1919cfb77899956771bae334dd300cb970ebb4f8ed635afce6f928e2efc3e3fd2812a3f29fff117a2f86c577bee3f958f17ea8fce7596c9ddf3ea6f35bc813f97b9ef39daf5eccf62b9e0f154fe49ee8019cf7fc0fdaff763bdf709a6af889b9ac12e6f937354d357876058643de98e77b21142adf0ea332ee64134bd042a69d565f75cc15e669d137b4e3e9236345cf869d75dd7c3af5669ab60f8538ee4557d334c7d94281b8e3d33b5b18dd61e325d205d047b3b3556dd6041f4e71366f86a16aaa28134edbfef33f78bee3fde8bce73fde8f22319df778a21f9fdfbcede56956aceae46c1a10e68e37dc8de743bff2171529a7a3379334ad6b9a6e6a92e6a7529aa7ebd34dcd7953a93c3d1eed7a21cf4b863cb106f2c44ae48957f515ba3c629ebfc1fc26cfd7e8f8d1589e8fc5c07d77142b78c3fa7a79e973796377bcaf1b4e93863f9ca6a9ea19ced0cef0626b02abb2533555d7bb2d6b2fe8a5be2d7bc10bded625725bb775895c10851b5d14e909c8a3709106bf754d894d2047f3b9d752405f534cc07953455d28a07ae2fd0ac3d72bac09c39a57cac91d29c766afa14c134c55df9b5983b312ce3b8124655d34db933b4e139d20eeed73b2eef689875733531787a90bcff0e5a5fa0ac3d72bac09c39a57ca89679f4ea713f57b5e9eb68ef39dff417b8ff7637bed3bde8f22319b77633f5027aa84a33179f2cc9b396ede14b76e8a1f6f86af0ee73579aa59874f9ea2b90b39ebb293dc7210d19906a32da8a48cd94a72d4a1a111000000e3150000280c0a0704a2f170202699b2f40114800c708e667258a348b3248c5110c40c42c40002000100008cc0cc000d750060c0ffb4c45bbebdf79ea92503e5deeaf9c94a24ef39b0ffa0a30241d9d16b943ebaebc2dd238601ba62bc6e28f1ff9a3e7c1822be6056b02b471d9fa3e317a0e849ac58ef8e5004a6cc5df337eed1cafb781b3534920f33847c6bc0b4e3f33dd415c1693225ade8fae9d83e3da16ad6de45a79a43a21199e9c51731d68623a969074ef22acc7e923c8d85966207ec5029d4dafd20b6d077b3eb45afacd258bafe0c24553a733f4751d204d2f505b116bcd51997385731b7409b3d9706e071af2a863265f0365cb5dd93609d3aca584aaa2f6b2c46ded9aeb9e84b8e0dc06928e8f217b250e67512107df5982a62a0510c6066c2609122700684ed2e72668b809ea78ea9f7a97a2e42f9fbf7f608f4579e3d187fe236bfe99a19c243788d05085752042a20e4ae3843b5ba0030f02b2ed52b2613060e3a875f8be0bc5e3c7b3f8436c05e7fd8c8a8d1ab5aae8c12482fd15827026ad2291b9b3155d8832b708152c75d2a09efe5c2eeb0a3afdff580bc9d44b74a3f73bb4f3a23b9b8de2786d945305d55cb02aa9f4b53ee906d54e9063e33a5aebc4c8d1282eb78bd446ce65d3783194e6e26dc30c53c8192db1ffc73bc4bcd515c933e03682d78c466080b1a4c22ef072600dfbbe8bc38f6076857a46d733234e10eb9aad132d2d45494ad305de79cdebca09dacf515e86b30f5eccc2be3a7b7bb73d311103c9e03a0a734b116fb122cb7ff8317b9e62be1c0a2ec4809d03ad935672289097e09f869fec8366e5b4000bf649184e31a52922a24afa9a7c925fe380cb376704e2e792b2ad437d7a40da394556c991c81095c49b181c3e0f2a48f023d675abffd427b96e64d30c12c8c8f3cc0be24071702f465c861bb17ff297598b4698c1a1421b1ec880e53245295514dba77eb833e022ba351e12f174491bec8fd4de20fc3ae68b36f09f175c12c697f15e017cfcc79182db7376e7a703c07ed0b837a8c48159e24bc712f0cbb6c5d1c20fc6dd8283963d489c64f181d65642e430b3a704c22eed2858dce7917ba1001c0de69f51c7534e2b8d13054935c320a1dbba07fda8347c397bc761d9e9c2cc92ab882218e457d3125822a375041ba409940dd2e989b5df9bfee91ec37963a582fb6e4867f2aedc1f5805e7c68a7bfd047f092628b22225246ec79c20e52bbd8583f5e835b089352b8e7967996a4c0700c2f9997b382eff5ec23df1ae183acd50603b860b090fad307c2a8a84615358c0620c74377cea6dd118749a65fd9d529590f80605c23358f4bd0f7a288c2e6615f7ce1bad2cc433fdc6d56bef35dfd38fd5d1094a932b38743568e4a3ddf338e0e368da5397749501e2653fb9b376116a0fb06c52863648864cf2bfcf5a82ed67221d7a872d228cf5eb2919ced4f6b24a29ab93264a93fb0856fc21f4e984573e03588837ceb81039d3caf5b1a484f774c1cb1784f0c18708cb0cf387b905f8f2319e02487b54947125fb288fd9845db921953358e08d09fe78cf473895f32299f8bb7c090cf36e9416a6165c9e188c74984a22c98277ae1aec3c1fd4f6709fc7ff69ee5de519f54d70e38d5ad574ed792837a320edc1242bddb3374a911681d13397e55d52debc2aed9247eeef6d2b7702f9d7e6d300349cfe064362c2c90b66b5fe13b7a9463d81f2bbb5354643df284b1f5297769746197885685b9bb89b780311aad6577f5bf4c7a77d8922fa20e08a5192c429b26b3e5649ab8ce4fc40b63d7b15ad24e91983c9835795927a84aea1608f87609b417cd3f01143a23909ae97bf413ab8b98c5d4e1837dda4b40b37409055046aa740d7ebfc5a84f45875846d6bd209fef23a12e298be27ab29a51408af431ae65541348ae430122456aa680901073f7988c8f13096811fb1b80e519f4d9ead98344f402d7f7a384aae406858e6c3039ee3dec6f51cecb955bd9ca7ef0e6862ca1a149a960c2eb44821f453883ebc11fb0cbba4afa13a30f43cb9b86af9db1aaf839684a2de5b7adff63d0a9d8744ff942bf574b69ae849432468ec38f3cfa8ad0accf60dbe2fe517c1bb23e477e4fc9c31070f47d10ba2d563abee86f12bf2f3414c6fa42c6d8278008d35ef1cffcf3797547202c07e4a434532a00282701099263460358e847f019234205ea648cbc5308c1d6f88d810757816e8a4bb09b133703db4d992b501103a51eca9a0a2e03dbaf7a606185c01b8d4ba0bcfd396a75472e62eb7b2034ad05dd50dc82d1b9468c5ce7af1c68e25f1cb9d5e10b0cd84a37f9ba43a460021f4f3bbca309bb53328897b2b02f7740406bc522732425a6ba2cb4008d6e2a902f49c7eee96113e82052ae6b17e2728353123dc0f54a1ec64b72ae5f64fa9e49fa088ad2651e46819b4b8afd5c3fc758560d205b7d18a63a0fd57600b45e143b3164263e3578c67ab5f391b16d49974d81608493a91cac2c1e4f40c71a7bb47fcb69675a3ba4b27cdb593746f63e2d1f06974f9694bf4f52999cabf3296e0f4db99755ff1d59272fb079cd6839272bf7094088ecf3122c17ecb0946c1a3adecd6fc02b8b41ba010e89c5056a44b7681481cdb237d401d5b0f4f503e4b963f01028b74dac8d1272c5831df5b3acfe857d2c956e5a5853dde5b17a3b9835280f4303cc7f6540cf9740b5ced3e77100fed34ff788046d456bee4a02ea1f4cb253d0c79c6f552a6cb3e4ae39df09bfbb5b06230bc47830bdca14441d2d8d481efd55768dd838ff5e663fe15539df7ce6bb2cb3f70000431e60969522073e556e821cb194c115a9bf3f128266837dab424661e88281e82f25486d96d9fd8e35f81912f4b2efdf36fc9d98208bb4b7b26c5bc1ec0144aef059a1cdd60bdf9df29c00d778ef55321e9ff6d7e9c8824c6542b406e4a6fd1fd385152ba11e5d1f8322b1441d38199a56f02769d64afa215427c548609a68e68743a219f173782eaa3101a1df3f67022a6d3bd005f8e6476016a419bce9d6e077d891b0cf528ba8ca1d1cdb6f957c39f735cbcb38e470a6977dec50a6bb0f3bbecccb93e2a6bd9c9440ba87db5cd75d6c3d0f09018e7db034bb616db0c6cb30d058c4374e7b0790397666be4eae2ea2202dc6778a92ed8b6c1fba8ea51651e50d73b613e5ff58e240520e87d7219a9c2d91f80e8677702e09d0b943083e047ebcbac1eeedb16011e1a4d51d5d93baacabf7023250660dd710895a0442122f4d9b471f64a2cd9c3977c13ffaf352fd68dcf6dc1011c1a7fdf5aed98c8d84ce3a2d44dca49884a6778a8a380971e5aec5700d27af756b30904164b5967a0e5e43b4d411bb35c5fb2356c24bbcf8189b4c4c413709ed874c8b163f6aec554de510be02d27c3a08cf85903526bd3f0160975afb58666bdd8932b2ac54b4ce57b044b450a260c2937be346ee1c73ec94d2886eed3005b6b99b42fcf4f3c850811fe7f62a240f4c9b69a1f82eb342686e09b3c80a88c80c3b100bdd722293e982b904f71dd8aa2b2bdc08566bb108b9967f00eb7411fe49f64e13830f6ddbc69483f0103b3352e2d13d88f38cf976f2fcde6e4e1371c8780a8f1a4ec5cf0b17485ec34f1c203cd88adee362e5214586ded332e6d25ec4818a98d0cd3eba52834ab596cf864bb7088738428f0950c7a85cb95bc79cb8562acca80fec01bc1714f6079dfde726accb8bb29b5293d9a768c2096c88644045687c1e1312b18a20ed21cec73a8224269cb92a742ce8cd8def24b9526dd898f8898453b38f04f6c5a645ebcdad3af18374d41cc9426001adc1c45d327d53153a1553fe299eff59c11cf13489d4f7d0c02366e57d482e787900be6a994f096771cc2c56a10947186246c8776b9bff16117e2460f4232de2ee4b40d85f96aba0b74e35cac3d12bdbc398933a16ed1cf5d963d373c3dfb1031cd9a4d6cd798b3f5b5c9170de8c841a689713c7bf199c692fea2f31c13500bf776ac21a3a569161af06fdbe63285eba2188106b6b432676a7cdea09f7ae1c8caf6bd90e533b7c24078edc8eac99010c8c0225fb05f4c4b421cecf6ad60894ec4a9ec854348b338b62205772c5954e91f4d037ae2b4a886ed5292590c96feb473fed27af048c4091e96e750ce78874af12287d5738b0a6a0d776d04aa0b4c601730994c0193943538b21becdd1acc22a1b2e6aca8571632e80295ccba77483da2940c32e3ec66d31c4cdb99ea8d8888661bfad947e4db447be453055514fb078ccf600860bc936f7e3e1fd11a3224baee0ce8652a18ff0b2eb5a8a8d84d924cd0c583e80cfa25f0de1b86f642bfcba7a86c4421ff8949997e864da4806122bbf008b819a08e39de67bedbb3c3724ed827b11f5987b1b68f970dd79757d8a0d842e8b6fa4fbf4568867d0886e5e66501bf2f0119153ae027657827656aea0bc8d7d0081c21cf240603db86ebd013a518cc454836ee7d2c1433ef983905bb7bbe39a7392cf16cc4a0e14c945272d71262ea0298705f2341528d9760e7639e3592eeb1c5d3c37e8ec328f5663c74b749c84afa36ad8a8472618a4fd7e21615255db9f08936b153c6d4f1cdf37026522c17d98680e371db4cffd054bd017bd7675f4c71a659a03e413eb21312b6df127b987f352e9aa7b82069cc1d7010ea4f4d1b87b93b2782e452156ea4dedda458c5e896c3521b89d388e4234e45dd05aab78b5229f9567965a72ad086da3bd4e1eb33af2016a27c38cc6acf5a0e04a3c3801531a5d03c95aa8606fbb78044854fca386bccecfdc7a61237c564fc4700dde8243df12474d2d7242f6eec78a88d3dabbb86dee9d8ac5d82448fc31d25eeb9fcb216f695cfe4af72f416621897e3a4fe9131e853606ada67ad5a85371018899a8c122cb47789a45a6714a6f89753292a1d966150054416723d070501f7052dd14ff5859126ed63cf991d07ff3595aab6a0dd49da0d0992dd9579dc921544712e629d7b2440671a1951458e0846ec9e7f99f1bc522108b3ca1001626ea9522103210d13fcc70ef222c45d097953b2ebc704da2db0ee119110ac39c93df33d3355be354479369f976f2d62d194ccec974f5953a79a0fb2b819c818eea323b008c12e7744e4eef45fffd0a03b0ac3117f8f7064a8656a9668d9bea7560dd23c63c7350aa132255f5d5fd23f2dd1932d128acb7a7221c813995b285a56af1c725a8497fe8d6a8f5f4e3e40980f11fbf7c9235ac486ea3db3d4579847451f1aca459aebad605c45906d26dacf8a42b33a35334a1899a82086386881eac21626413a58b025219c45ad577858ed9f91090d2356841011e2644dc9ade588d3bb992036ea27b3d5b443f64e65f15c253b65052164ef17c1974622be920ebc63854870a1a1c1fdc6ba069988bc05634b5ffd68e2e83decf25eb87a98f62cba5722b2e7d23a585c4f91e9994b80ed1f059254ac8561cfe38d8f191d65250e4b6d74b4264ac1e3d2c0c5ef3b288ed781f5360ed7fe977149bb6e0206a176ea0127aff657d99661b30a3331d54d40c7cdb593b78d9a0f75db43feac9b8522cb7fed91c7bf2d5fd113f289b88a35dd4a91a7da661cbddbddde701c541ee0c667ba515923375f38b7a01c9cf131689b5c3b8b3d15592f632bc28c2dc8e4a60a379376f26cf4802b1b311c6e566b77229839b460e206a65392cfa1e6e9ff576dcf2d6c4305090346eaf2d1d7f2c58f7b2393d4b4031d427008f337ed97591379adc077cad7ba700656c9d8cd30d47891f902b08346e2ef7075520445efec1a7e0f00e20138b0acaf512c25995754f0cb38a0c88c8a7738e447bebeedc82b2f519900b8a35c4a48438a64b45f4622f95a205a81ff58ef7396a8a3f5aa8eee524bd2b1e9f94d72ce0554e659dcc76fbff56c6fa14b6190dca458e4c05134349ef31ceb16db18e3fd54aea0948161b0a59d17629dad7f85f127c3627ec2b64007756e89fdc6bdbcb1572a759356d595246c0e24d4b538efd2cda55a5bace0df4393a36ace12e6e66dd3b155cd503ac490be46d671f235276a67b1d7f3807ddc34c98b579d588c54dd915efe04053bea8032caa29277c9a0fe695f05ce51fa3bcdaba138c52c371285ec6baaf4d49a1b0b244f7fbedbf8ac8e4cb2216658c99ffc20da9246f145d91e15c9b2813cbdbebd1cc8c28375a64c416b5e4e6f350fe7c5cdcee6689c9f642806326ed233f3eed976285fec1bdce7ede91e234194f6a05ba380b9930a6d4b64b47b5a42d719ec40c8a53b06e35141e0e4f6934dfc5952cfe132953f47f2218be596f502768a3c7df9822cb2825a397c59bc4d1c9de1ec43c261143715d12e66860f093698407031040ee293dd2319255f51b130c2d0ee2b2768e71f38d01804ee38b719944978192f514132e6fdfd98b90eb89663efd75a356a3d234d6d79e03cfbae05c45239e19713080600d7b7b741a6cede83302a8246835d49d43d1772bdc914b5f193f0f562ed8c0683077790faa8380dc3dd5f88942d12b43b1006ebf35e7f5c1a370e5505dc5c36b462f602ce6b5c98dbdc82234d5652bfafd63c3ce35e4134fc7494913cc805a43220f40e55b7aa9e25f8c838e4505ee12c6826681a705e6aaa11842f57a431318d5b194f5623d92da4be74a44cd926fc0bbbaaa3cedb455afb64f16219e8c1a66bd261b533f8cee8ff905e9ba89da48e814dd577dd24fbba3ecf6e13d763c1a7d5da6e297dae17b77a28c5431b7bfb775c5afbb2333ec7014283f294ed1d590a6a119b1be6f9b742587a0d76614f27bde90ae88a715eab3c2b4469b3875ea8a51e012c3fa91691cf43c7c5431eaa712bf550b2e21980d3aedad38b89f2f896dbe077fd08f7aeab3f418599dbac32a21490e5423b8b6f7f0f291f250d96486041965ab526ed5ab8e0a9d46bbe59090bed32c547e45c514301b89d13a8ab19954f2fadfc8a04abde3e3ada57691591a6eb459b221531adff1c5920161962930894cae4d925b985c391d8c4ad7e2eb026f9dbb2c36b0b939e9658909cf0b12d87cefa734d2b5aed378238399f4a8ad6f2a2c17a88a2f46851f21398dbd541cd71587071a9630e7e380fef694ff782c4f63c1167dbddf9d4660e978effbef35e0321c4381ba1cea63789bca89de7b4f2314f89d9f07f6f2436eae2fcc5c7d73fb9b674c5a35c4f6caed3db83b487a4a5374aa610ebd996841bfa30ef8cee0e491344c4670f7aa7f21d9514db3d66e42b94ab930453975d62ac2f10e5cfc475d0bc45d336b1c788708e3562afc83fef80dd3cc7b3a405da64f78e2fda5eb9ca5fb83b15799362263f57964156b12498891d91ec680d12eb396ce709a0b5c550cfa3df0707b3096d317054a604ea3e2df4c12b0f0166f83b9a1833bfc428bef3f8930ef83edcf7dfe8fcbd1d678cd36e198f9285efccd5adea240e42296d9d28d1bfaad97d4d388361d78720d626c89dc3f183fa0aae9450e50e5092938c97ad56c32066a7471952e94e330ad98cd44b30806a7feffe7e631831cfed302546e00f829f195d50e5bb71fa00072734768246d3738987bfcfbf962f651dfa4b0b866062b7b8c5ba74b964f2ce7d092e6bc9866d0889f936c54d85295c67518c9153016e7469d9329c9474e521b7567828e652828a6ac1250d1c2765ea57b0f2761b4ff38e92b89c73c438435627c40320280712d4aeb478208322ca18ac341ac26521c143d29067c2d1d62ede08ae11aace4413b9296b08ed1fb3d70f29edead416e44fdb464f9d3a9767ca2649436183338d23a5986fe953d9aebe713a57725caf56917599b76c7ec8e1bd1914a6d7c43e7a0e8c2105c9667723ad6701ff6ad10ebf7007bb85419ab951173ebea0ddb0182ef3d2cbd29cc78d0e5a3ba2c6a021b08a3f9ab9bfff3ffb9827a44888276f9dc655957a07d4b8ed758238660750d19a32da9461aa644018014afb7e0dd96baa5a219b9ac5cf6b7f09f9626fc74cef73c54b5f560d8a3828474656b63b185c790f0135f85431970334a3ae813cb7e77edfd13d887c4b2e749daa55c3cb6459cb6d134cb1fa9d5daa5c680babd9dd257b1fd4de143f32f3f9be667306edcec7aa2032112e683256da9941ded8050ad3f561e551ee29fdd512620fe771d55f3f0c7da58566c794d17275270339ec7eeb004a9af08803c7c4ce8e43227839d3d304c2c21ac0ffb2b2bf5698ca468aa178be64bdb8ce3e55b125df3b8f7f788d053572d68c87fa8013016fbe52b35797bf1001aa5a08a9ea9f991db1ff4dfc88d34041850ca013af5394bea1c08ef2656ffd9063e1744183b75c1bb2d58fbdfbb4a4785702e00fc084a10285a16c234c3ff71454c073c4c4e14c18beb8021da695a59de867c040fa8f0dbec6544e52ec83aca725e4a6b71320d5db11b537ff443e524ee7502bfa77fd1a93d9e699c88832e1c27129db7f5a37d270ab0e2ba1985706c374514b71a5130c4f68baf9b3c54dd9477d577de6db1abe612937c453852349217026c717fdc59780d0550c18c749fa6bbc37d2dc12ebf82ecea8706b9f122ea9003632d1baa3be40512392aae316be82918618cab46c7a8560e95e59c0e2dd59f9009676c46c75688535439a4d6595d9b9defae30e39e320b6ac43e15ecb3343ed50027d17cd971596c51ad14e18423359b7bf29588b07f2d70525c8ae85b14691d48df939fe3f0818e219fb224749608921beade644c555a43e3c1ea24cbfdb5a15d4d2ba16f0face07411b2ad90440dd3021787409b8d79a3d86034d1c5200cd84d5471f1c2e5c80978079ba26b9ecac4b848962534cc7d27344853a12707bfa157ab6146009a79113cda9fe278567b8d09a33d7f86c16325c16e16508d07d4bad284844dcc53fe8e1f2bd785b79b53081ab203fbf908bff1eebc1a35de1c2279608a634f024438ded663c039df38831e5921a068387acf7098681372e8a8a2f3687d93acc27c8bccf0dcb03fe9c9969bf7468337ce4df77113bb315e12832ce1ac3f08badd07bff7087efdce92465ad0feb21f6d3337fb4feda677f297a4dc1b96e33a43257e2e461b7b72f611c7ea31e1086234cee440dd0b4454717fa69078da5cb056ea5d78749bb43e04a4dda556a46a508e9ad8b886a6857c58d1a641c3738e30d58f3b7149f9590a4b812cb84fa1d1d6a59e4c6ecc20907d55634c39b684659086e2907700d1873352175d01759198237926e3f80ad896204cb2f4d464089a2052d7160c1038f5f6683ade80f51599f3fa535d88d068086d1630f23248eb531728b45b94bcb0b112732f2dad37b9676f552ce56dd6ed236ea88ff2992857e1ae07a6525c1cc76d80ac29768dbdd478d05b7bbee69f003252ea2b1d7bec56b83710c8a4565d822032c46c5cb8786dee5f6b120558f6006dd2980d525eb7db1b0bc664faf2f513b2a5fa3c41c6b130eb435dd732ecef0884374d23f40a47325ec49fb289097dde445fa514bc996442503624dc13f54338aa675d548f91b6578d54272c9975e5d84233061d41899662866325aca63598c2a554786ef4d942c72ef15c30fa687e4f6dff8bb86b1d1563aba87b97c17af365a9114d44dcb461f4ff8282c6d1ea61373ec724a56fdea7da18d7177ddf1a7b31edb5823ed80e34dfd33c8acc5dab2da15b80bf2497985166b03ab04621aeb02cfb66fec8415d33a182c72aea394f83f3dc8636b74f047a32d668408bb07c159058f9a5aea6866b192b15c16f40618437867cb7317da56837f195c01cc0897c8616444273d234e82d0405627cfdc8a0920ab6315a0e747cabf6f12cac1d909bc26c1b33a9b7e8db2c3b4863ee016e57c126a3eab6e2400e607f86712b60307e0aa1826135d71efddd2bb7646ff8fd3290d6e461cc6559ca1e51ca18b9e8a0787d9fd0ee5576dd1be58ac60ab895641f72b1e384a71dd4cda330383326a21ee2562a2a090de80781d4712b117d048d897db262d09fb16f84d39c3a21e34694e95fa113e6023621c1dd98edb152f59e2a5920e407258f723ffbb3b121fd825a708b92101b3a772a9699accec510459187117552d99800cc7c1dca4d9152814fa10689f1fdedf6b495c18bdd6e0adb2620c76c3f819b7dd1cb02255cecb55bc78e58cd8b6d33e7744052919a17e8684e80dcbe922212fa538e759c96528a6f9cae9e7e183787e00fe822bae02e1a12e3ca8c88db1c6817e2d7a6465f1270c82f200d43cbad88ae55200970403b07c1c2fdefc098f070fb7e3cfe317b85950f6c705174afe0bb0f64d9105f9185a18e8429b938b84a6d377320c12ca06f4d5023d57a382ee8e2b96ba8c0dd1ed6f053c1d08637c3178212fb6e11de8dd5104d5990b9dd627110ec985a2aaea0ee67995178fe0f5c28e4ff0bfdaf6abaa42a6b0eb64a5c4837be160f1fac37e2b29b9170c3777a232cca8a1b809265e3fb80b8312d51af2eb4d92bde7a5072f713cad78e045dd7c4eb341fbb6e3bf0c62d4b12f09396f77dffa549009a20a72ebf434488ee4fb588fabe0000e919501bd5be2534184808bf5a5c4489aee83a0f6d828e7d668a121f119c53c5ab446c9e3d4538f70d81506ad979f308adb65edd62890934f3843abaee1b4b8f38fa99ef6c839ba2d2d6871b3330fefed99b06df14817c834730e0016b79b7092803bb76ff526b5889c4418a3097beb0ddd022ac3345018f6b4c8b69f2f749520bd71902fd4605687c80b7c6964190d4b972dbf7bac0d640725a007c85e90c7f1197442133d95901a24813b9d91ed3c984ad09fce2c55f21955794f90413622667e2e89188e23b314f5c90e5a8d6a7b4e4be71eee746f8fcc8090c462ceffe150f1daa4ffbef9163b6c6a86cd55a6c5942272c401cb14e2b3af52ca06b07c96b169bdd68b39488e3d48671b7dd38a4c7488a9015fe525d41c2f38c683faa4cdd57fed809e8be9c8ef5dba2788fa1db2c4fe750b1d22a047f609bdc1935b322aa86e3df642f048a6df5beed2eef94751710695a5276bc125a199bed9a70e8556ba33a18069ae7a40f7083c892513bff3e44adcbb365c2c5d276b22bdb81618d7345a82030b6cb34085d04d8d2c72d33cc42567e3d5d1968caa1737e1a436975509062a5f49a73d371a386bc887e21df22723e64761d0abea686aeb003f3f0dc008d2ca92211ee9c3fc06b04fe7421b2565292c8521d612a52a77ec0bd37fe498b2ccc422cb05a6001510992efa31a637914a1cd993dae9ce26bdcc63576f83691b7c37c008eed10a66101bc6b5e2b512f3e677958ddab193d95ed563e7b48f8396a0153a883eb9a7a8d87a9c14ae20af5ab05ae6deca97b854ebb7154972cdb724f04804afa8566477cd63193e573edc04d2e79e778389bd5861ae915b7be309f1a5aadfc16a524433795fa0d474326fc18b0da475db2714ef32dd836740336945517289f541bf7585854611738b5ccbb0fba20f8e59eb798d8e8684222e0dc7a2b127afa8cca056eaad7211ecad69ea58d5b711223fea819fdd764d087b8f7c53b845aad0bee5b0541d66fcb10f99d97688c39ec9a5f0124452d6d294c7b80869c0837d2ae2817e8ba684f80365c760f2e1763417ba080cffe3b0351f8ade2670fcf660f3e4b0f9d9d95b3b7a65c99991d594a6bda60f348fe10889062a80abd217c518c072a8020ca827e3f00a2417f0c84aec692df650ab98c7bf6edd76ec75de02cd5fdb8e920408386221ef02ba3d3ae2f00d9f8445b88733b8f0507ad33c29598bc49eefb4cdf3b79c8c6daad7112b7fd95df73f6db3dff739b24da84003baae96c0d2c229b9225df191341c041c9fe95f4acb3fb0f5f2111dbb00e228a363decd4df7825e055168454dee094de41a72c8348d9e7df7ee2684fad74df12da0e30044d833d8c6720e55b16932740779b10150decd92ce5cfde862eae998fb61405811028359118d7d82e38af2de7049a9df7bb135b93c5096094d6e3e9813facf038e343c6b0664b349cb354ce0110e0e8f1d3bac949c741ca337ed2cc385498516c194ea6b6b66cf299b79bc364a5df6c4eb32865b5acaeeeee7d5046c099d6086a133d0c11c34798b765837d9fae67f52cdfb2dd33c877b845e51974000fbdf523194376fbef40a8fc657f737a270927c82d844a647269ed3b01a5831994b78b7cf6f27b08e311e93d00d16a66a7f4290e85aa42946c28c54c4837c9bb37c21fbaf1e4f17ad51e38d98f175fb7cc00cfe5e722fe6c2fa0d3aea5507e8d7bc98c5b1e2bc8ad8da1437a5b21824e1c73b6082b4c4686bc6d720d89f7c10c2e50c0bd1ddcfc0fdff59056ec48cf151fd11f209dd706587d32ab4feca289028d505ad0088d292c719362aaf87bbe165816ff68fce1e2cb5d81db9c422de069293c3305269d06e9d23f8c36f966960316ae4793d8f07873073ee6ee99a085290d37b59dc41f8cc1d79f06b6bfc8a0ab0d04251a22ee6e2d093a4a34a82970f4f08c7c253143f94342360e7c7dd91eba77dd6d4bed4732529fe4341ab796ab5f6fa2cce07196b34dea1fac5ac5861ea1aaff98eba8cfd07f9d3399308c945ca2840e19331c977642ed74915ba293aded44de9021bd4ba4310bef0c2d79bce94fab8333ffb2f917bca349ca9db1a53246607e608c73b7b37a98071886df9caacc294ea718e17fb80172a5e531655028a2957fae301158a94d36af80a5f8ff15594af4fc5a1feb12db9e8667fbff05e8f648b1a2f75479899fe9db8324f0dce4794e5c9ccadc234f020b5950b4a7d07276674ba086c85f53a88e4cdd11823debdc7bfa1f9eb96f832f0b32167a336ca17a9139ab6c32af317b3f661fd63dac9d6107c124e4aa6b46ca44e723f9c767ecc0763b859f431e340cdab97312541119ed2b1000d52a43bd2af29b77ca0fb00a8b5f8c5c3cc5d86e27e0e94bce880ec1c7e3a1f156f472f710b3d2f861634e0c4313ac83cdbcb19d94d1696495951e64a498812854ff2bb5dc7d90fb78cce123e0577fc65f6977cf9a188450e1b9a1c20a871866b5c8a0dab6c1a52c87f066df4c05f47b7d3441d0e8d9ed0a1c757247b6fc9558571a750d92613cac5ec3bf2e0db9c035610329a7feb3dea09d7f5060b16f7f6cfd6b14400ea32d111cf8124f5b85040277eef69ea376a59f9913050e3c024686cafa08e41687202d397442e3942c52da4d453e5d6592767def3a044dfe71d104de1512fd88862eb9469909753381fa9245f6fb6cfdda0d5e56e075f29052c98538a49ff3202c87e81c41dab504ed3cd5165015a3f3a4e704a96be447fc32804774dbcfbb77555890da6404d38f809d377204461507a1d04c1749836cafe3227ac4490cd3698d44db5784742d9546c0472b9952265f72bac98e22c2d1942905616aa16b7d817fa0866aa6b025bbb7885581244850b1ea38b5b610f0e3d2a2ffa218fe8e983892e719fa065d9a175c64a85a7c04de55a4a7e2c81702ecc0828d2995290799659f00bdafbb7b8ab9beb55295948bed7b026a2507a06a8a8cff66281bdc3efe4b68053dd93c4d9ee83bc8f2e7978472344473502a4ee71b01b279f7342be3ea564bf084b5e6ea33e7dbafe52270adbde575f6193190ec52df324684f94444b45500f3f4fcfe0fd9ba53486c52efe80fb2a49859be96d489252e32af06c10742169fe05f8ed82183b8b82e47a19d8eedba31a25697d1b7197a76b0c160d76eabfda294da48bdf60fc5bf84fc4ddbcf5ac982ac0841f22d358ee84b79ec4663b4f09a488962bcbb3df4305198269add52de5de9243d3bed4938219f940868bc8a14845092f5da302893240301493f5944ebcd09d53993f1acd58bff9d5122978d2c48cb117e43c953a36260dcee5965881ca0b7e2fbff1a20620cdfcb9b5003a0ace8209edb3f61e34de476cfbb3ae295cb0a20ceee79ecf67e937d8902ea6b30aa4a459b33da7b5069e452f6940b2873a3d6071b490073ab62f2e85ab1dcefca9f8cdadfc435220c1c11f68bd89009ba9b49cf5da8c4504db3c2fb278c795fed3619830e536c9af2358e9781c49427511a70f731d4b7afd473002274336f065b70ef26e67f0772a65f4c279eeaeb62b1600b2bc705488d918381768c91faecb4d6e06607c428612508759e1df8fbfecb1ea7036aaec07a57068572ecb385e307be23178a47cc87f52295d344fa4a3de7b71ab09ee515fbcdb5af55ec2473ecb6fd406a0206ff97f769322040e27ba84cad02c9d1582d8a9539762904686692c4f24581e08b410bcf808c1809c1830d555b2b6aa392f84756631565a60e55c05dcb43be0ecbedb301017e1cc3d55e84d9871c0d04e0a041ab4175eb62e38f65edb4ad53adfd011d92d0e40c0de35262d274a3cf4173e14f90aeda2adb9246c5739a7b72e2e5ebe76e8efe75b95ffeb673e04f8c8911c9d8ce31f486b151ab7da061925644f7c3335372855745c4c91df32fab8eea577d5146da6f7360e5545ae694db44a43b667ec88e9125128a35782035e2135a833402595d9444934ebe5c0573f3a04d64295fde821a4166a438a446b7622269b7f00fb34d1ab4461aa82f42b92afc9ffb801ef7abcb3f7bccbc92a4ca8572cea9028654b96e827c2ce627c1e90d48a094051be3ab3ff21a2d8273fac130f56a03ad4d0fac5883c1647192e70cac91474dc2cdf993dced974fff01f2d322f3c910b0470a03337ec2427f21d96851ff24536f5c69b4a358795fca8f9357da58d0848ff4c741ae349c421eea63ae510a51bc2cbf1269eba13b424c22deefdaebf07da83acf09c0ff217911e126fc396b68d53d6f80bd46e8bbe7d20f1072f10a9ef1c621ffa7eb8a84868e12b73d25d0c06aa12242018da533eaa8f1d0a162adb34f0ebbaa8225ae2381ae7f85cde4dbba5cb5a0b86f041141b31ae40305e4d6f437e8867cb6ca1669bf2679f6053633814db537e45fb93f2c9621bd3608a31913f9873144643ea400681626c7dafed25ede215f9375fc943411e8a6f62128f2f90e4ef013bd8e0222fd3fbef38786683f9c0e8d67436b3e1e9a440bee9c6ac3c85f03ef33a1ce1b87bac5124d2e6f995fd58c308fbddc6ddebdeb1b42bcfebfe1b90422685e3167163b32d0bd7961a938a9fc9ececdb43d1c3b274e459d9db31ad5b33e69713dea657a32708f222595f990eb763418159787e1330b10ef5a5cbbfcb0f8cd4aae8f7540565d7eb569529d32137b48996af2375864bfbca8bbfc0c5fd7b3e0420564b3082388d2425e9e706fe9e6fcf99a421090ec12f76dc4d7866a89fe9954048504e3b61c7f33a7115f37a20e25df439bd2889ff05e7f430b0d7eac74122206a1fe6be8b3b2a900db6cd0774dcc2e3cc5547a78ac540c574f842dda7918db76820919ec29a5a1b38019f1b91eceea854e467c9c0713cb47555e0c1b5a0a338c117f792382a1ab02d876418bb924a154a01f99d08a9e771d17f1d9b546eb17179427d8ce2a89b222f5fc771402d681b34b09dac26a431471ee8f28613b1bbd2fc4faf9b01757b1d2edc7a81ce6d337e207f4a78e770ac0c1042bf877da69f2c862dde23e406006e2c7e6f422fe255dfc5369127239fbd22e2838a3f598bd483d946f9236a5d8a63fa48d7d6436e19048f62b467c3c5c1c7fb93f188cd74532607130839f74f7a6ba52fb12c7bffa2d35f488edeab6b8cdbdfaea91bfb299a6da5cfc0e5f1e2bfce3e12fa91154581baa76741c97a4e0ae620e335bdec64cce0cbc684329593f0d4001b2136e6627db8c03c4a5c19e43ccb1e12b01bd408c04b438b6af22712c37314b3186def8ed766a62774e91bd87a5523070334d3556e83687dbb1f009ed6184c2514599b9b753b420e5c8b7836ff274efd178af73d8468594bf2ee521d0f268d05c0548432a9fa1dc6081457374b4f4413e2e9a0931ed07e9b5b6397383d2d1cea520d60fe0cbc6ee41ae882eb4332e09bebc81d291444c46f4de1b26f822c118d1ef8a96570901984e823a496ec591e19899a2d20ef25701c0254b09f7d7e1481d1110fce28befb029af70eab941d9805bf0572aa85868757ec650189ddab1c13457469d8cab65831f417266b33978e1386c4781c7273586fd4a1dfccaf7f280528a37d890677b12437263f6c65ad95198a302345477adc157a5093909f8b182e533e554395c0130ef9ebda0af8980dbfeed094e1406ffa061f81cc9e1dfa60566d5f9d03e58bb4475c440e0e2c7c9a9e37987eac4efb9a6de4b5a4c09833f5823e146f7c03c59c148a8fafd534b0cd231f802e0c464ec908c907c0cc6571a05a989fc77c7aaad2ef893dfc8aafa374a39d7a115cd9ad33cc7112358801b0b2d12a084664ab67f313c834b7f1f647dfddba7a5b71c6ae27b81a34024a145c6e93ff3e97f661adf704eb8a5f48f790c281867dc916ac7d72190efc12f0128f896198de1639449f023d007fe626448399c35056bfdc560ca7621b684b8334002563cbc9d887419d9d1bb808e7860353cfe105c745c7cccd674f7ccdf6f5ff1e80a3780652628649a5436359b323e5e9a54a482a3407289734021026eb9a02db9b429e73402e6719dcb5ee6e04bdff84e8e1489df261d0cb3e54b1d0c3e296a1d2ff2e29a32dc178c1f2558c9843542d5bc81e827465f4a7caa8b54df92830436de39d1d541508005332c7bd496f197bc3b4a2ad7e490207fc3140046d0fcadb9d1ee6f11bd52fb64f59cad44f898d6ba15a84bd2bd2b9f45dacd3fd30946c359679d87367b5d7ec1d2868f501c950c4d2cc39eac5aab49b635a2766e5f089941a06001be58a22492d14326364b2648d49795c3816e4d35b8496611157794ca10065ac07582a263837f716785a4fb7ad0d2854c2b01207e9a698349cbfab1d965f9eadc6f22a3ca36c0d0a4d9f750432e62ff8f4f46d8bd7526ca2adeea61adbeec56e6179981db654b57c5ed14067875314cffbaa8d72b0d913715f76aa186f4436ef8c2386f18ec76c3b2258128fbd67bb8d72e28a1de48fd41728523bd244e12b36619c6d2b598cdd1fdff747f2ecb072183a26226fee60001cc86785e7578fef0b3091e6aa365146a8378defbcdd62f5c855555e24eba209359d908153caf5fc0d62c094fceb6ff553e76becb2690eab47e79062214fe750e0b5c6d949092a3a03c6aaa30ca174cd3361bfa0e0b000d43cf9a4c34eab8fdfe68279a6e141119cac1bb9c036321c42d3256068df16c20a513ac95b230f99752e6cd5e50c579d71e473bbcd4cd3e2a9e3a0fb662238fa1678ad98200ae6ff62e771d840978cf08e2b0287218ac73cbf9874c0665e66d19867327a86a160f8e7f8138c813254e7cf1aa72e59d5115addc118f411102aa50c047958f42ae131015f66a6984acb9e3d2a56210018b095d650348e413df11523636619781d98893fbabd660ac5bbebf94d1cef008198a39f390a7505550ba900bef33ac253d068467436db3c680f907d69a6ef8c4f2f03b8f7d028b16d80545b299919d7a6ea64349c7fd50425b95788305b0ca23ad8a1af34a8dee5ebfe848ea5e0a59fd2f063c144a875595df3daa3ab35e85d20dd039088245a9c94cedefce5f493b6367222659f70a772e2b4d5ce352063dd12024f6e45b1c372634227683f83b05a7668a6629f4f4a1831a047c4c5f4a20a617766b14af6140da0a42846d9c81f1d8ebf18dabad634bc79f884fd04acc0cffab270cd53640a3eacab54d51f4dc6d0f617daf44024c71932c99899f7039ac9b19fec80a10704a5e58b97e2f34b5d0f7c3faf2d1a4267df8a929f5236a9f2c3ce39e2553f84437caae6a87dcd32b269de76f24193bbce1c8f607329eeb3bf979520a1eda34c53e3137bf4610ae5c9d4ff94d0fe193161b6405ba9b588f40b1029f5013fa01b0ba8414411d72948bf3e12be2c226645590ddfa68ef97e3a4ccae5eb4510deb86e81f7448d8703d137e0f74c8fe58054f52bdab9e1c48fa64419550aa75b717eccafae67d001a02a6e07a89e25aea2de137100c6df4361cf0118d1bf9c6a092c7bde02c5f2f9cfa6938845e0a7dd77094f9cc5fc2fb0dc7d17f418dec28b39b80d93dc8746ad8edb9d2fea8aef6c462c663ba114421d167f7e0f13d57a3f606d663c6fcc8daf88043f53cefdea7d3c1eea7d0b8b1dfbfb702ed4cc40effde4d3a27bfe4fa6a1d04283275aaea8b8309d2649d5d4f063121f5582f432b2893cc8dc10d79ba6b481a0f54fcc8c01accdd0059b0623f34b926a495c6d72eee04c7e690c0bdc605bf15bcf3a0b1bdd0e8d0dae5007f350d51a3c08d7f02eb7ec203b457a1883be1b2aa491f2fb070b763d5f8501d6287eb821d7ae45cbe1f3a3ac55f0e0c4b71b063340ea20cd72c0d92120e153a6b22ab7eb2e9abe4f7a9111c045d69b339c17b6d6aa2dec46fc958519a59e3ed886edc58098df2a12fff5a9fa8ca998d1ce721ceb435ed1ba1099e1b4501d4c6e2a7f7ca137c8e82df51fe5281d94523eb26ce5df8d8bbc944dce17e707c836f7e4b8a528b1bd777a7bacb66f17c1a44efb377994f5d9d3c6daef9e3e33ee51bffe1c69de5318100d2c3bbf9f59c0830c4693746b5f94658ae995d6b97681a20540fcb62283683065ca16aac222c02db2818a29b4b85f3cbee1635a3be620ba8a5404d5561423eca6d0ca95a02d0343ac128e5d8bc4d35fb59a994f7ff4a1896800b0db43d4b6326c445573763dca566a8a3c06f545168291f8edbb86f62ecb4a0fdbb75af4f18d6b678b8d055afcf869ab216142013ce684c1097eeca5cafdda61d855df46cfe5a115d300376497dfd799014f6a9b3b21d85b7cee8d2035d8ba3b85354a7c03d94782de3fc185268b739755ae1dc2d002c7dbe518eeca970344c94070cc5f345c140190a5997c1ffaaa83cca83df22e0b3a0659029c2cb60bd53a3128a02427b4040ba1b65c7092d940e0bfd736baf56614c56ec3e888f2b8668d281522981a83b3fad835eadfd1728d3650d0b0daeef45fbadd04a85920d4d9c66f0ffd0e5e758866114ed4ccd27f80f51311df5ec775ee765cca6486550d26bc5b19c1dc5477adf5e5cb51ebc08f0ff528c36a0230d55852a7577592ae29299521cec196c167686e0b79e5affc7c3e933ef56f84c347a3ac8dbc70ab3acfb5856c028442533105a4ecfb701aced2aaa5bf9895ca1e336889e29219e1b1aa157b13eac589607784a196eb5d457b44c98646a88bba3a2155bd749de809545f17854e956fddcd0224a24001baef0545df726d069282f82f414eec20c755e3594bcf6c32381d6dba3aa8412060a55ee7db53492811b9019b1d403ae2b54ce03d3bdc636c8279004a7af45e313d33389c15e9feb87f1ddfcb899fb5da1bd43610913dc1e9b79b83635feb410660b693b68927e73ca79a600856bf5ae6837ebeb7f8e2ba4b715df41e49ba2cc9d904f1f9212669ab1c81058de2bc73de77bd9f5dcf39c5e31d987a369c6bf5ba2de7e58b9f219838f6b14fb5137080771931e207dc31f65a167e258178fdf039a998cfbc3db6abd105432b9103ffaf0753f48bd490521cff18e16b0da388892e2b3dfa24ae86b45ef84e653807bed79d69ff56a33ee789406dbf3a51060930e5aaad073e9e2e2cea0202f5cea8e93fc8f86edd6804cf5e3ed98da04ba920395358ff8f3a5413b40fdaefd21e3f8edecd0bc1acca70ee708a74a6bc2648da50b6e0a2a186f0307f1ce85c0f786c0bcb69081e1f3f8a9e0c49cb29be5e603536c2f01b59b699bbe7cfe9c4dfc3e3195b64041fdb3ce45f3be2804346847e775c8f96775f5f907c0c183bf1ba8efa7b7286d155eb7c9e9e4cbb9196ea68f9156dfeb7b43303295428f9d4321520f3ba9c200d41960b281eae8ffe67d831b1e79f8d4f044080b2ce707a482db7634affc9f69228b85cbc7711f044e0b1f78f09080f72d6b70e4b8ba99097ea61dc3bd3a0d25e25a5bd19d5c8bc5d165e6e452a22b9e051c73c425b75216ceb114ab1864470dc1acaab0e6f8d218e2f8e7b919748cdd6b0c7670be40b069e6e1272deec4d4b72930e71ee3daa0d2d6299825d4908e0c68f61215a643ed4972146d0e304362fa59802647d1bde6532074ff829d1169635a64673a5aa0d0c219577538a452132ee4e65245fa82ea80a3dae692eee39a0b85e55924e141d043967289661caeb68edd2e57ab3e437be133e33f088918228c9bcdeff7390544bb5e023d247b10e3a48031c3c3da4aa3325b8049a39c6ff63b5a8aba428ae67230978e407c0d05de0a1ff55cf15ebb38ce4920b28c29a00144141165f01c726bd2184c9884ebcfbe1032ebf2cd724db7053af6556042486b84d44f39980723e8ba6c8fecc610d298300535631c77cd22a55a835e529395e38ade7cb1085e45ef2037d4887a8069d008399a15ac4745c059a68ff5272765770d6e16a409da6cc0c3bc3ec4088ab3842c674d8fde6b86012978da6778a15d3f786c8cdbf6479385a0c67798e27fa81543c3d08458d4a0a6e2d1abfa3189d8745dd949314f410d308cd671d17d1cdb86f71c0500a24a755022dbd166cac8c044c80a2de6109d2ac4cda2079c8508c75e3a10b49af441c0b348a72539663e837c84d223b31f376d7bafc950bd7e76e6274dba4d2184ee9b4bb70563b104bb6bfbca3b0df7691273a65448e0c2c955035e0b3cd0225da098f34d43c4c2c14ac6b1e8c000faef285d2418c4752a406089702c18c12325607468b10fc03916c0181368ce8a9ebf30ae7643e0031240f55de2502ce432fe621e821acbfaeedff72fd24793ee88ec17212b1675fec274b38c1dd67e11387a5803d04c08830486a64652275a41a1c862e41ddf74a24401fd224d4f06c7c9fda2c669f59cac7841cc784942cff83e01d50bccd8f1dc7b13ed2f26e4460ad1a4ac6da0a5019987677cc91fbacbc8fb89f3d795f72f7e6c709935e451180b2aedad5107bc51cce603fc88df4561d15014fb84398bc01cd2687c9967c5e3bcf03b0a89e24be927c0efff2950c23f77edc848745762fea18d961e0e4aaaefac38f3f62eef208abd94549f7bb2594c457bd824717050e8882553d57986e744f4bb45ef1648cb151b4832d038b781775f03d45e60fc6286e229f2318ddaf0c56ac5e96b2fdf182a6247841c27a0d00cada3e771b043b6480f8e1ad474bb2fcb4d5c4d3026ed67e12d964abfcc3b45842e28f108ab903ce9d45ae06dbfd1de26e237e9c28c17ef1de81ccf2ebe74efd0efd70c74e2e3d6b8f8e9812cc0dc6ec8a7456d37df81594aac7c60590559494feee75e760bce138c687ba65312b093d29398c87a0c13265d966b24998c053eaf76e08082152760e2a35d49063b9f7595e135dbc858d429e3c7e81aef71269a58cdb63820a0c8c9b593aa969b9e2ef2cd7444adf5d730e3fe1f36865421c6a2420ce12b9ec28caa2624601e7b77e8d9d7088c92fa14defdcd20fffefadd703e62e818ecbe8a744b8d13fa3d0e0fc8f9156b7e99d2d49ddc5646a3a73787a7115ee2e346c671df8f1abff7ba51bba57fdfe88ff60719ef1bacfcb4433cf03f7dedab389fdcd7ece6b1bb21713bf7db9e3799a4fb46bc82ffc852326387e85d6bdf63b6387ee375d3e052c0694e1be8b0b5745bc80703d65bf64559ef3be2c23c58a95580dbeeaffc04f2fafe01ebc0d1d6f720d3d159ec3f0bc78a2a13f8a86c52437db4a3f7c90e6d14a3af321463b511abb75a3291e453681713c7ed49e4f4bf79bfbebe5c734b6b4008c6915159a7fa23989ee3fbefba080f753515fcf70fea2d56826dfbf62bde14eb2d7c005db9041b305d78f85c7a6d1b7d0da09019563848338f9342c0fc6671764d56b4b29155175aa7b063aeac5c912ddf18006aec9f803eae4d8ee35c2db6aaf61cc790a118b9ce7e2084c45577a165e0d2c667b1b1c8235fb3f46e87da3209cd4320deae6f0809da67545cfd285ac652733e4fe09ab6e74cf7494ae82b373a0de5479867ae284dbd67b35a12166e906debd755942415cc61fd88de61dd206a79fe6f5146905df91c748b81a65121f0bb6cc54aa6bf16839336d46ac40f64e9692fd211d25b649265602ea89306e29d45f704b4933ca4d2d813fdc60cf760506c98f0d17127f1e16804ad13bf8cf587245bfe2d458ad71043b94ee149742db1a1ee2095cb27e81c8f88e651a999b1f731393a25720f0d36a47e69a581f82172a22c4e9d9196e26978f35080533193f8b48814fb684a9d4d914677204a7122bc2b23ea9392891509d5613d28a3914de92a30afa10b25a570c1131a565cf275213a6ec616ced9864a3b18a3fea369cab298a94743e910752d8dc7e3f5cdc3ddacbfee848aa024f7cb29b5db4eef04a30df12e3e9e2de356b1288974cd81dd4bc2a74ee762ac8031f68006d696bebe920471766e41604f1319071e5d298f6d0338921eeb1a7fd9046f47dd3cab5d307c902a21f949925a3254f093230356816b7ec24e600ced4316ba0f5f5d9284a0085c51eb30cbddc14eed4685d5401274870ad5e150c2d36ebc7fac9140bd1f62ff0e2feb642a6ee213cb5315767a0c12bab73118f1b7f2d09589b21a05eef8c102fa04aeaa62cc87b4724632d3422ccd630466d676e8a6ddaf32ad3ec031e5692e3b605da57e6c817ee2e3a129ff0b6894ae8116962dcebc26ac9a8622316ea6770c951354e1117e3ba74379ab4663941be9a3e046551116551d843de26ca4aba8cb44f0bec4d5cab2823aa9ea25f27e416644efa0a022532af4513dca0857435bac01a263b97b6fc2cd07e9b18787fbaa735a09f5d913be272a97752cfb6d8bcf06eb8702bae5e9b60912f7fd378954d098034f1a9292b4ac3ab384b83fe5b3b29c2b28b9658049861681bbc0fe4feaa6495221258ba61e41401395b691b41483ccd789698ad0e54ebbb87eb7614b83a6f09308fdb2057c2779d11b8414e2e2a3adcf00e25d8b52698a9689c2754138c1c64d9c3c88cf5e06486e017a732d46c8695c426181a2f2a8114b94a00b6e9a2e32ad90d1e322b54760007151d71e76bbc0f5fa545f9a4a7767f634afc55ec27e5f4ad096e58fc77b0266af50bca0ad268b08716f36009b60851360102c3dd8027d1a189f09ae5ca32d864ebb62218b9b45b73de0a7ea9fe0403c1d2a76b0c1a35df90591054ec32c481db91f281b8f3639966a679197f0260dd4bad4dc48ca574e2844e353c91b0c36252cc35910f286130adf5aaf134201c7002db81500b62357a8b6194cdde8a479b167ea61b5f285acb0b47a7bb3be6f2dde6d8d6ac4ca6dd05274e1f4bc4a22961f034bb1f83725faf0eff76d55fcd244c0d2690b30524feb4ca6868f51e9cfc41c19a4b1b59f452c75f08d9be54e9dc5a30d0952a83d1975c4b3962a7c4cd47f4d6c985991ba44a7d4e9c50fb7814e87658410961275ca2928a7eda386eac44f3f853911c5a7dff51abd917be5cf6701eee274a755869c023eed49ac07fe5db17a02aaa6fe858e424a874c43296a54bbc74df5b2a782a60f5f01d48c0662acf4d5c63a248fd39b35672bb39637697cd3761b772939f56b15b89fb9e8d60b1b56559fe4ab9adff1d2802d4145941556ea6b266a31dc3c7e370dbf03ca9a995939b62b0963f0839fe09533cc57521bab0bca12d756f6795b3d8135a0e2babaaa921eef8e1cd3d705ddbfbadd0c39105db383d4c9209786fb5cda30438f28ac23a6140035879c04f70511c790baaaf32e5a9bb36e0b37a57ab92e05b1d17129a70029d007b75d652e535cd4178698da79a1672789885c4eb1fbb0d8773fb3aa9291d6a50b1894c6013f3ea0773e0ce5ed526c464304350993758a184cb7d899475f951fac3b872f2d2567645385c4fe8016fa4ef675adf4e476aae7a5e795a3e88055e84fce1657253b2b43cf974709b73d5596202b59f0fe0d3fe429533388ad0ea5941f205859a252f5b88bd6fa4bed06ab850101d4491f47ca442110041c2059c84058dc00fdee611176a837e5ddbd5d3e0ce35f7843e4d2a8971488f232e539380f4600d0ff0fd420c38129691bd6a0b66d4f65790fcfd5a6bf901fa579b66f7d96862b8d15af03dafdfe27f1330781d823cf64cb12cdb2c2d05dc8ebc91a054706ba9e782e7f3365b3084ac13fe7657d438492b9c231e54046e3e0227f1da675ccfa0d00644f0904f0010f48c5ab059d29f70b42d25e721649a2591cb3de8fc5fe00ad87ff82f75ac86b45689f9486855915f76f817b01074dc34f78c808c62dc47543641672501f35438f263c97dad371b3c25b16e47521b462ff2506aa120ece93b0f80e489c27ce41aaa41f72554bfaf3eda0e08f810df62f6ea10f2a939bd7cea9d613c10de3269e063b16120fe7174dded8423d1d4fe4b16a493c524e7458915982e72a024e763fbd58226e62ffe5c8b411dcdbfb47c7d92d0a6c9541af287bd2db92ce7509a97fba8feeb02780852010035e196709d8796974df3ff6c6a841cb88fa67231db691b0238b889b70da38d72ffbd47f963eac9cbe852fc76536494eb3cf2018ba054b0afbdca560d1cc985622e83a9ecd536a2699ecbb54e8f10d57a8c071347249b1afc883e4846f2065c1d8817a1aafdb9535eefa94d466a97de32c1e20763ec06944ddf0274ed4c15eb84c7a737c6db552418506a27aa1528929b638075ae8cf2c8d9b00640033cc5128bb86a331f93784145acc7799382e341b97577b8d7a48eaf062f1d2042c93adc3f8aa0598bf92354007535dc64e2118b721a646f0787608c0329baf160f7843fa8242f145c357aa2dab881b0513f97939b6f0c21d728e27bf5d9ec753e54d8335ef650bfdb4380c2c4f2fb553991667dc4f38e0d311b631920e9d892ff74472f031e8c3946e73f1e2c42c62fec0fcf498ac8a15686bff7b86d15408bc62aa3b13950c6d44e45ab9cb3571a093ed5379bd65b68c519d3794cbb6cc6edcd9a0d3eea2f17f48c45650cee9a2d8ef0ee2b4266d7070da68771cd74ab9e37b65031216facdd2d196def821769bc96d5d6f349538457c11a98f7467d1707f3f7404ef6b7370f6496e8148122758331d0b46e70328a324a04e7c0ec5c1328a726d48e362c30c0053532b07a8ba1bf00fbaa8e93682e26559da5e2ce23d21845d31608cda2939e59f43aa9b7fa8ee2f0730ff0c91833e5c26f7eff0fa16fdc4fa071a1c1473c0bcbc42f2b1e013352eeaa434cf0ca81b427497ef68aef1837af3de41e083a09d4b673c7a80c4e173b1108f054eaf4c0d8f51a9a5b85d82ee4e9cc289904a37ce3b7dcbfcff26ec10130b20446bb6cb57a5ea2114e4b7eb8d48b1c6d659bb8f69acd1168e71b39c21993c1fcf04843531332c0393a4cabcc9ab57ff4eb449476d75e757ca2523787ca8711d61065cc8c7678ad3edab8852007198ef909e03ad400c07e39afd520d6c399c43778a8ef02f18a3bad4c1a8b05b3625c533cc968321cc30c14313ac99af21cf0ac5f565580564162bfccc0ef13a9a652e058c87a6458ef99a98fbfaa3f9c76361680670b7b83e2248c1b73db73d96c92fdb464300b313f83dddfc16c2b4e7923580f63cf55c4c93358c7e4c9967f96e89b66a1b82e49c0c4cc316c8e51606c5f2818566a48974014c6e495f0571cf95602b175c0b948d85994d5cb9751e3ccc443a3cdbabcda4d50e4e33e893f37a99552de582db3ded76c5e17964385a12d5306390e201e9e600bd607674b99f8de4a20a8e4aa8ad4a91ee10dbcc48862e687c052a80bda8673ad998321cd6035f1375a7320d65a55e68fbfd841913a99421ae7caae04f686982ef2b1aee9bf6f4638d44bbd3801974d3ada816042ef19433e1563420edb0b119b1da29486596e2c5421f1603a4b79781324a98bd9c6646a2f095132bd28f251c4b2f55e0bd4d144433caad5b81fda5dcae47c13283457ff4d2df94db242a6446090eed20c43be7d23bb64fee4ebfa5bbae31c867ea052fbd88197562638535233b61157ee79e2b10dc7328a02e26b713053a4305f476ab94e7dc421a66817f5eb26b47214deda0d392d83e6c480adb279496eabc8d298c46807bf020aea8fd082165d1b4bb2fcbe2eb109d35c4d9f960608c4c17270e67722d6060ce10160d84f66008410604220bff629fee87e8c1d3ce62cbd3582da4511461572e819aba606c44cd50635a7f28de4acd5953e0d5fc6289ae30462a7f0628b8f717eb19902213db26b77a6518adb48dce81e53566847a18052c4e9e09a6b62890dc089ff52ed19e2ea9fae7d7ea1c03296c4ec2514da8bed72ecd51199729f401b146912ada462fdb702df81024ac60278e1176828c55da65a878eaa350100f1e6693421afdeae579d78d4833c009e7b27738b2e2564985bcd162ed197e9ff9c160aee2855ad4be173cff6209657f1e191356e9193d0247f25d4163cb44d7530f23bf98ee5d85c69355b0f9efd11b86eba9e1ca1c07bff1e166b92b946c8accf51406b032497756ada09ce1322c9e7947824122ea05645fe403f91850b8148f23942902da761ca13f3100dc049842809032a6352ea98ced572608122bcf933025a04208126492c222f382bae92d05fd7ed233a1ab47191756b279d39d40f870bd140def478b2dd9a937538ed5b7fee8ff1171b7e031ade09cd83ba2b98f60b34c328eaca24460ffcb31691d53ebd7b417568f3c51caaaf42379eee253d5876957e2281e1c2f75ffee73557deefa955477666ba0e021c96c5b1bd13e194003b378943a38628c9263d50711f4dd44c2bdd14208cb704fc2264748f6646e4dbdaa5e8e71a97efeaacef3e1dd0c2a1db7be392c24217e6789499c62a738425313b3388d227d358941424aa30166aa1e3869d649c78eb10e87922e380fbef4a76229c8b05f70b25955241d6a496bc208558c534001abc20e8e21ae6398886430847d451ce1d58697598efbda000899f06a83fe53e1cb83b681bf2807ebcfd4e128541b268c63fa3791ad20a7f0b62f1d918fc3c9f67b8048e49650b23e63a95e5cbf9c8bd57000aa3aa69de053113ef19fc514b7410212ab79b1019a0a9d7a57abeb13484ed96dffc2648b5a651f8803fe33308bf6a07b28436b0c2f5de05a48dbcc5037a6c3860cfaf707c27b5111eb4c26a946297e6860e85a16693111c2b18b90eae58d6edc385d8209e77071ccd1002794c104c85c4bd4d73be0e278bf7a25e6c5794ea8b593a84d231b9ec4765a0ecddaf2fa89e5b5c3cd3a2cda432fa92fc016cbd2ee1250d6545127e2786761cb06e2175978d8b687681498a2e8b89bdb588a71dc33fbc531647d2fe2ccb331edc8f2067f36788873a13713b9e3b475d5c48eabfa8412620d3e789f02241233f9bdd53233112180100c9bb2d8ba6f933102170e76c632fbf799b3518669a76cdba3710c0140ab99d018653d7a7b8cd192c1d360442e756829c49897f2afc2f633b3a9cb8f94fcb883f5cc735cfbe790a87ec4501eeb32d7d31022bdc420a84d590bb17bc14ae8d61360a03c438a95c30d716e6c3be6231216e6b0d4227b072cfbc7f14f1afc36e96c32233bff30830baa2faed8494386d1f89b312367c76c8f39d99cfcb14350b25cffe7bd08bc184eeeaf7d4555b7f9a6a8b3a26a70bee54584bb9a9aa1497a3e268d16b3914037f585b8632848cb37e84eedcd02fbac5effea5e1053391c0ff6bbebcb9f31342a13831ae3c6f63b41ce105181374ccc425045909c291d84567cb6c9043eaaa54d35acc07d7134961ef69368610c2212ba24c83383f919ec2d404151e259a62166f257bf39bf5e2c7dc1d1b5cf4f68633c1f89058bd52defa00f3900c69698558b3803078ada6747e17ffdf55bb2844058052a89509533ca9d528e35fc883e444917fe9c4b0e01a9058233454d6395b3e3e7b32e595bf09420a368cf5c5d566c9f6faa3ee9ad6cfdf58ff58605893867e1dc4a1e2ab07c041c42629178a6ba4e02217290ffac44d6b9b2e425b87375c89921f373a361c62e739da3ef596da6a98451c781784ea8f0b2270f1bd49b6f54f8351bb6ab32fe834cbd18631e81ad105d48f00ea86cfedae400620b0abdcbfe9dfe80f88835bff7ec63f7404f6960b4292fa83fb567ff5072facc7c65c50af389c8b0abc7543a8549d59cdf0163627cc3415f39b7a30ebe976fef6a43a5418ffdc65b1b3cb5d9cf578a7e119aa9252417a55a95f73d3e6a0808667d7d9c1ed6a08552dcf14b45adc6f3a2ae0902497e75a02822a63931ff1109277e26743a0dd99fe474ab703350564454d23544fee1e523c74fcf351d6d6e50df45a8dceb9c82303802274ef711981c6d7142014592ca03f7ffe6ba1e8cde5d7e4a1a77a81f0b2c0e02c935a30e1db4e192078a10e0e63360fa80a6acdbbc7379366ed67d72875dd44bc2b7dbe57bdcfd5c18e02c19e4c7355739495f9f507c215dbcfd0e7047198bb814bb4d967bcab7823484aa3b1349243fd552876e39a54649218ba6685465917ccaf26ace03182b9f9798f9c320853dd8b4ed3449c73eb0bf1b93b9434b204e91298c651e4f692b394eff8eb9ade5169a4300b51e4bc24812a8df0041efe8e57f20a392c80d4376377a26b97d52edaef586385ed345a232c6ba60676537f82aa660bea58404d13b3edd9dd222be18afaa5a040f013a2422f8a1bd02a43e89174afa0be18b1b67730ea98e5c0b0b009828979344123d1bce889fc2df2ce96c189b87ec3bb78a7f30c21d3e62c3e22c4fceec39e618b919e23e4df7ce58520b43c9bb00dc0c417ffb70cc77d3ba2f008155869ea631288c230055aaa3ac17df46aa161ea7cf83de18fa638291e6924a20d7c83fac5fccd1183a8eca260c843e69a6d884f688ae5babefcd6f215ddcfa02f1af4997931f982b7b941dfacce487116fa3dcc39df476a5f1bd74f0893f82ac055887162be67a6071240c4aaf935b1c38224aa02911d3f5d9f875fecb79c14663abccedf9bb4fe53326ba371387185e4c7acbf0c40898cfb1629463410900957822a2c589c3a071a6fd7d8f6d246c85032a22afae5620ce34a30ef27e7d0c748a86e4c622d7228be073fcfe2c1b928d114a44ffeb23d9281aeb24ba0b8074a63ff50c8091be7d0b40810019c1ee358215d5bd463cec5022115f82434b97d8da5dedf4475d42a4dc7bcb24651b0bac0a770a1983cff9cc36187fbbddfce8e6be9b7bb8f9879b7f70e56fbe804e2bfccd47e814e7370f71f3103aa5f9cd45b879159b1b8fc3e16834af9589c3e3aa35558fdd07e3dfad34da0d406d98dcce9eb6a1043a68e040d204aa091530e876c7077dc3c76a585855a9b9f2d9857295d891cf18e30d280e9706cee78c8739dfca54ccb852854e525856b63a7295182d3ee79cd3ec78ec25de4a63e6b19ae1959a388ffd08d3a1618cb13543e675e62a0c9a1d9f37f89c331ae367c7e0735fbe95d9fabc65a6c98bed76e325adbe3c0d61b164254f0e05543161529a712769c753c6b79b014a145d26c5ad7e3dbedd6e189341f2798b0c9cdc99b41e68798183cc8e28af24387255f398c9f965066ce93316b0af6ccb85a1e5fce5e3695ed268c17ce3833621365fb82f651a8e393e1fcd02502a61da04ae480cdbcc08a2258953054bc4f839bf7943e2317e23e5b1159fa4d2866412a4abe418f20a0e97cd1c7bd2c489040d21409a7096f8186337790270451665db4084621a03d06aba4f2785c3058d465b83e585cd8dc7950d90221b378f1d436d33e573d5a6ca8c8fa0abb1246598821e7b081f8fabd27ae5c6cc6327a1d322318c69fc52930eb31539e8e40106ddc6077d3ef8f6e531167bd2414c4d18a05b965763e4b39739a39fafd4847d3e7af3c47dba7acb345a1a168fcfa4217b5c3da05a2e28b2c78c9eb033f90acd92cf46b73a345a99175f5765d48cb932a3f521841e544b72500d9128d53042a5f44e336c22e9f075b66587123249124b63c40fe21e2870da2cd14ac144546f46c6d068345acef97643221f9381e101bd2233454b32280a0e870383072cac4bbedd7038b47e3ddde812e2f47487c58c0ffa704d8f71383028acb6c0681560435152c5ed96bfb68c014372abe816d815959cf38f9b1bb71b1074855645b78e5ab06c7d3da5be217b63823b93345afe916f372e61babc8c78e0c5e643971e62bc246d7911a3e54b11f40bb1ebf7a546c9148a2c7a9c64e06c90c7651aad2b2c6c6b0b514c0d0b758b8b920dc7dcd13ffb7699e84ce6fcd6ebc096bdd6a0ee16cc7f33f25c2f68d4abedcbf5bca817ccbb5ed0a6eb017138284aaa5c4139c30075410ad2159559b1aa001f6e1b3aa042c597215627682463e494dc888a5c3dd973ab6ed5279392925498c007724e1d3c37e2ac100eb549fa7cbbb9296d607969baf1b809ce4fb149cfe3a2d3d1c3875ce7739e71f6d84b8c99b01e57a1014643cd98620d2d31367ef879a36cb6aa1de9721e7b60281eb53e7315bf6454701bfe3abf1c67b8514ae14ad3d90f3716869091295f86b714491863eca54db6c1a1d3058c172f489030c018db30c6381e63ec75e6b3571722063e3048d8b96222b4e1e4852ee79c8f8cf99c73ce39e72d25c0c22ed882c70b972e305e521f72ce395b6979726347ac441560d05d7cd0279473ce432f9f73ce39e78c054d162c8fc3681932c6b8e2cb5866a8168d665fc5aeae0d8a4048c4b048c9b0a1c28b2b5dac70edf8ec3eb9c865f6596b048a39613150e8a8e222b1149473a693f3d6632f71f1c863240c0314ab583953b462644bf14a52175a972e396810b7903c5af81c198289180ba1f3b9a855dcb275a3836e0414316eee1461b18788d1b2f031c225cbc5b19885e6f6d96d42ba232f401737596c8a1021eb5a1124b58415e473ae452caf0e741baa4c2466f6f84ee4b97acaba326a69629580683a308d8ad10c635cc318b309f2f84c9e66345a918a89cf58cee42de70c3546c42bcc96a4996c55e4a524548f0f5650605caa158f227b7a48e96eb73660707ebbe1704f61d6e4d07aec423a1d381efb910e398f7754f9f2a081302e1370c4cc88534c2194c7bc3edf6eb71b10bf81c70b8eae0e38f48cf11b082484575a9c5991630d8a9bd4cd69bd33c93bcd6e3739a80d276a9aa006d0b4c5e8d463e70425b57282d3c1e31b431e7755dd7c8e14bb8a5bc4b0ba4e04e59c935c9f6f8ed26eb4f2b35b0f66ef993eb89865a94eebd3f8d2aab1a3c699c77e44eb9908b2190e8dcfe82d67195d1e83b19a3104c3d4e231d0e3ea8464b283c4c39ccd4021c3900053e3842d91734673b5da3263001d605645330dacaa04d9e2010f2b1b2d2d61a4bcca109590b81046a355c5113e9a370061c9a1860c189aa92c9b84436952779e888739fb074da399e99005e05382a4cc9a275e35d4ecc9e59aa15028988831ae82c3e2f397173b60e306a3289a638c13728c1d0fd00e436bd2603144aec4b8e1709ae1c6a24eb3337926cfb2d3ecb62546f839e7937673df0f3a3c7b7cbb65a84ca35930753ee74cc37888faf85ae306e9e50b9913ac07fb608c693713872d17efcf693429da141556ff7caaacd3b8fab74bb24ef3a21dd11e321b2bb00a4cd6672ff339e4b953f487dc56f5434343ee1b1a1af22ae3b1078f31deca92e5b196198ffd088f00e63cd44a68156b03054f18176cd084c98363c841799888d26858706461410ee073467bb5986d238c64f9e215e7848c2dc37a5681caed06a5658beb0d079b9ddab31423ca4d8d2640f094c93828edcad8e79c3fe7ecc167affd6b91339c2b9f73cee7edb6b51565eb844d48e7e2b11f6d15bd3c760c3e1f8f9dc35695358f9d834e373cf60f1e7c30e3b12f006f5921f3d84500d169ddba22f5d847e8b456d5e3639ba42531aa73dfe35b11298cb15d3ae16509ace8b3db3a155a2afbec479d0ae073c6448c7d3026f3ba398bb32f2db86c60c363558ed2501a8dc51143ad9211794c7394c6c3441a8d85100d407850c1848a870d3643f4e03b786c0b9b6d50b19654ec291322048a123be60230c6678f511aea417c4ef5309186cdbaf5ab155e9fcfae1a9adec73bac48560959912a575399545675a34cbf4ffdb3b5b134bd2c766ae46636bd249643b31f61c448e4e9860f2e709800cd2237bd149e997e939deedcf43bd6697ed3f48becb4d679d3eff1fe4640e12155a4326a71720568dea2e997aa539d9b3f6e53a7446efa65eab4c29b7e8533def44e765ae9bc3922851e1d554d3f5a2471004d6f6473759add5c4008214494609550bce9f3a65b615b269306154534dd56996e914a6ffe88753a3466cbac99e99d5491942c50a3cd19a41e13617680e69c37bd894f6f7a53755a7bd3f3fd81608f0d33395c8445a68065616a42bc1ee7250e676454542404c8df32fcedb6dbe9745129f85594161622a2e1fd65a820343e6bf91ce4cc67f7e9f4c3639c428c3fbd3c5318f3a7fb74aae1878680a8f90b39973b935740a45c600ad12af6b6787f673268f30fea1e079df7415f053cc4383ba6f31846fe618d28bd8965844b832b2378b65c1dc102769a9d5903579ce4a851c3064a4e4e461228265ab0a83489c3c1cb70aa06a8a1e82252feb492e177a3cb06182550c24cc1a9488ce7799a5752638fb70879eef4f6426ec3f342b61712729f90901f09391236044892a383ab245e32785c0ad9e1fd9dc92b9f3643a03cd6e031367b76cd79d638cdce246ed1e3cfdd9f274651de9197999d2c481e4f5bc93f3fc8c1c74971f64eb33379c2b95d21c181cfb2a020b7817d5050f6a0a0a0a00da6e0f182260a1dac3260d09b0fdaea3af241413e42a7217450d0d89ba6d9810de71fedcb59a453a876b0d8695038dcb3385c2f889d96a3f20fdccb51f78319ea08688f5ea82235a09a9e917294283343d17a41ddd90b1e6520ee05f3f0ed96d1c6a3d9669bee0f0fed08162e8cfc6053a585d40c6030937dd006743bb3c53ee504538b3753c24c71736b617d73e64c16f1f2048a3069d8a9ade6b9e6b64e6b2ed46985afd5fca8e6187c1e3e7ca0e76bbe804ef3d7bce6228c10a256abf90955bee628748a7eade656a956f315d4aebc5250a1d1b8b038c01597addfd774005dfe2cc09fa715be4df20c4527050c362978344931b6e69833d49617176c29e2d3e1113580342529620345538c36f9acb940310f13f110e32e341a026e93b20d6dc48a94bbc7a32d0a797f0a10e3a20ac712d59958a7b6cbb70799755a953aad42265b53a7edb6a7a0af9a5e27d74950d8b707710519838e1549e86f55f1db8392eecfd644ec5aa2d245c309b03d48a9d3a0a64e6b54a77538154484f1ed41549da2766a7a79f0381b4b9a5524dcdfa828b16f0782babfea35a7c8238b4d12293380ed40519d5a2edf0e34bc3f0e3bda749995d9881303d80e44ecd46ef976a0aafb6b009c2d3aa08089a2c20ab01da8d8a9ed327a1ddb81c23a35bf1dc8a9a677c55d01f4f4ed404b4042a0a68a54e1db8192eeef0a83404adffe533c765ac53aadc932b34edb7fce7e9cd4b4e1c0f9a1faf61fa99fe10fb122ddbefd07eafedaec27ea1f30b6448cd493326f6c00db7dc43ab5c66ff7314bbabf6ac50885cd892566e29001db7f943ab55a844c3f4d9dfa7cbbcf574dfbebcb27ecdb7db87c8c3ec78a64fb769faafb6b64d0a7f8ed3e49f757c1a0209db0691167c909d8eea3d4a9cdf2ed3ec2fbe380eb28634a53978f1fc0769fa64e2d966ff781babf11508e5728ccace4214304d8ee13d5a9e51a4ef9103b6df7a1eaf4c74e4ddbcaea6c2c6956918250a8fbab585c449579397a395d01b6a3519dda2bdf8e123badc54eabd1ebd8693b1ad629faeda8534d5b8890a76f47975021da549180be1d4dbabf1e0651a56faf55dddf0862911a5774c894dcd802b6d78a9d5a2bdf5e3b22efef83225be66cb92992f002b6d7c43ab5559265669db6d7ce3a7552d3eed183eadb6b529d0e6bc48af4f3edb5a7fe9dc964ed8798594da926b4faf61a53ff6cc076da574d1b070e2e1aed58917cbe9d46d53fdc84a5d414353cf2edb4a9fe5500b6673b356d124de2ecdbf358a743d9ac22a1f7d74a4d82284dded0e952e44619b0bdf89dc588434d9922635b3980ed99d8a9ddaac81872a6e430911c3a01db73b153ab65f4eaf4d8697b0e5bb366290bfb576b3699541a91420b102db1274a929880edb8d8a9cda28095b2a82534329abc80edf8d8a9c5fa768cbcbf11515ca8c01207059e2e32c0b65492656651674e6a6acb94a1face1da774e9021366080c60fb29d6a9bdfac6c0e90a718c972d226380eda759a7d6eadb71d2fd553c778e6de8404993030b68ab844c4d9db6e327dc8e7fb463a94e4f6fc7434cac48b46f3fbf6a6ac18039c3befde43a8d54fd3b91adc17a6329359d431ddf7e4ef5af066c37edd4d45a599d7dbbd96e26fb57cd2a1246de9f2db2c0c60d25214d72985c01db4d62a7764ab1d36af43a7ad5f87633cc74aaa91522e4e9dbcda54e85bcdd149a4d15e9b4c3be4006122966926598a400db4a41dedf88205352e899522645460cd8364ab2ccacd3f6f2ac532735b5316c0caa6f2fa5ca925891cc6fdbd42456953aad42a6b2e9ce77856fbf5f354d41f5052f57a7356fbfc6f67bac48e5b7dfaafbb3493b1f595a5f8c71ccf400db527d8fe0ab87893234c25ccc01b685f2ed17eafe8ade3ce9a2b18718a50cd8f6c9307f77b653530e90391beb1428d92588351d1472ce60b17212db026cefa84ead936f10a672e820736407902fc0f626766a892374d421f3e48e8f343f5600db3631e236dff8dbdba9a60ea855965ad8209a00452d2716598a68e600db32f9767bacc9b2767bd6a9939a6e507dd63778eb3ede6e87dd1fae0611f757b55c71a170e2e4040d13d02ef98a2574614cc2a4a6071e604f0999bafcdef0d62b50d30dd567bd6dc72b020806109d0071d3256c889455f2d50b111d4db8b0d9b2e209b05dd7a94df2237834617d3183658e1422b091fcf9ed5998eb65a10474bc590296660a9e33435b8f2ce90ed8ef72463c0f28918343059409154880c17c24f70647160b6ea7c4ef769eed80f99dfb6cdd69f23b9d05d894d1d25a0363cc146b44e8c8e7cc48849985c9c086ca2051f5bb0f31a4ace46c0969a0b0456e3633b95caeb7ea28fd2ee77240b99c9e5c6e0e99df79b9dba2e3e4775a6cb95c2e97abe57246961c15151d1d9d3e7e5716e5772eb4db9a73e3775b9ecbe5d05c85a3b4456448990dad2c39a95cce6b9757ac64a8da2197cb55a4db5b652f7e97cbf9e472b99c9b209fcbe57259ced8ef763b0b39e9f8f8c8b11f61f0e112762a5870ec228c80f156ed82635fc1054a42ecb6a9d35b8fc7b5c7eed8ad14cf7155d11ab73c267aecf6d869cfb1db307bc68ad924766b76a5c2c6e3dd630c1c7b2f616fa66ec28e62cd1b1919b98f4dc71b195da5287b2323230c30c0e084d4171515159d30fb22172a4261e58bfca8d3fc4545bd5ecf44d7f3783cf72b132dfe820b2ef0bf70a1f7c15626897d2e672361e3732e94731d89339ff3a35c09aacf39864e0fe0b360c1c29e16bfdbed767bb4fcce8576ae4b82f13b3fdaed6ac0a3a3239c775ec3dc089b8a79c4de84b144724544e418edf099dcf9d1512fb8dbed76c5ddce8b8af4203f97cb610b361d082b60c4007b41a4851860d0ed900ffa70ceee8458e89d6646bd3359d4f3ac6503daa3dd2ecfd6e7bccc59e969fa5cd1a6d35589597a1dee753a5dce75baaa3065363452ea73391df1fecea45d6356df399adbe5725651886830c3badc8ecaceeb06f03addb93ba116a01b83a27374a7dbed62987d91974545bb5e19262ed115150df95d96db4f9c1d46be2be29d6667b2a8a88cd154a12843096b9063c0a038134b0a397746378a5cd72b2a2a6ad3615754c4cbb0418bccc68db1175f905146503a1d151b032e7c86c23643757ae1ad1b190989bfdbed74bda0fd9ddb7e3a12a9b6a6a8b91184a6235bb2f322477745bba2dd95900903cdad30aa2241e93c8410224ac051e369414fdbd168349a7be894e61c745ae1699ea18c7a735ea7d39dc9ddd58d1a8f4d616ef86792066ea424c9f1d1648a550a421893e179acd3e97471a4de7a99ea78782af730110ff1704b065565ea78d1252df62cafd3e9686ee214b96eb72b2a1a83e4755e766ae1756ef1991b2bca34e1b982ecc21608c618eb7ce7a86ea7739cae779a4dc9f51cb014551c43e308671a6d066cd2864f1ee730c6e713194fa3d1dcc76d4f923ccd85685b4ff23c4d83a7d172543acfed763a5d1a0eba0c99667f60e2ae878778972bca19e58e5cd70b1ee98c7011de618cb79c1887702671cda5d2e58a96836a5faf5822cfe772391c1191d6d2952722222272223f227227c6c7bfc73859f5341a9199a3d1683404185943a608a50b0e1760d09ff6e383bea7d1b0d368341aadf8b41c0f1373b91e26d6c1d168444429645d296993e66aaacb83bac4c571091a0e4c621caf98ace9509bd4f06ac2e6b1937045bc7aec269c80c29513a7c7be824e7f498f870988a2e54a16251e334a00511f8fbaade95117ea343feaba4e891cf52314759f07d43fa0fe818d477d0121748a73d445407d04d443a028ea278c79d451e834e851b7a85b25d451d0a9ce515f01ea59297ccecb4e3bf85cee96bd4e870505c60a0bcf910d67a30acba899747f67d24cfa1f36486854643cede6c306470e87cb5d15ada0384546a5d068408c3cea256a7565e2d12c5b6ec307b85ae4d9212cc3a3caf63051da1d9cc356564c8fa268a6eaf2c1e0cbeee1c307597c3e7b082dc20821b28b28e104b0cfd951d02991675fc109252bcc6e9b2c94d867dc679d67b752d9ed9425f6af027389e18988c2605c8ce2f41863fbb95c918ac5d3ca63d5976236c81c2e5e60aa8c9958010cbae5f1411f0e0a0f73b9274e47385b8a50a86c398595c0228448912063a0b482702b8870452753b88a4f5a00653499c7671c2e3741d1844a1791e9b1579128f605136940493039c7e170b90fbac8a4cc07ee2b4b3d5990fee6f790c127e96d9a165d56dc002b075feb902fd58081078fbe66ccbb6ef24cf38e00013b5a6fed0be4e31f345a7f685e3bfe1946e3a11dd8acfd01c1040cd94d6f9e50fb5ae793db67ab7936bd566befd345b8d5a1609e95abefb5d5042afee9413dcf5ed0040efeec6e34f941d3d1920cf34cbfbc2e936f427d396635c0de264a6635c05e1fc5bcc6d86b1fdc12e0aed56e0def6e887bfbde019ca679817c1cad3fa8df9cb39fc17b9d85d58077bd79d9a8dd0adf56bd92d5c00c7159580dccfa262f5b61fbcc33dbbf3ea89f3f20988e0ef13293cf873f85babbbbbb77e3656110b3200f662153fbaca5aa1d72d087cf3ca1f6d980d882f878ccd9661bea8de0c3f7cddabff56ebda04ee7b7dead77f3da3fb73f20dcfa478411dffd0158c4c8016d517bfb6940fe5a3b9c29d88ea074edb340745538adb911f61a8431165ec245ac243c9367d959d2896cc25115a9fc0c3e68fc23c49f6e6db787ad96abae8652089b8e1ebd9933709417d43dce504114ca6f137c9fc1eb0f0800e0e127fc23c996c19b32f853a72514fef1b62c3f83db9f0664f012d40c4ec3475c5691cab78ee75403e4a48a8ff757bbc8f0aca1830249941260af789b81e71275dee2b1b7192c8aee1cedc02642fbb0691ab18bd03e8c4ddcdbf9076dc28e27828a7cb317829d6b7074c7d3e018f0343c5a7f1aa0c1776ef2768ec33906bca07d0c70fed500785835b08e0b72f038e7d03f7c749c078ff30f2a1207c7f951a73cc761e854c8715e3bc505857e38c739ce73a73f8e737cacd0c3c37c3bf4cc9e0dc45f5fc1093e133c7cf690f3dce421e720bee6262fe8014369a305f1111ffdd6a3396ebad683821cede16cbb466ef272979785b9a984cdc883596894993034755a83b59e091edee807845b0629fd2c8704206481c7b30f94a134707b815bf7e078b8c1ed060feb94003e80e36fe0f507840dfc83466ffdf0419b9767de7afcdb0b81e93ac73a9d9bbde0e5053df8eb9917b47dbd7686ca549d1279cd816c438e91728ef6821f4e1f45390915e2d9271a6aaa30d4849f3a2572eb188a68e8ec612b5dc8bb857840a6ffe478b576085623d60bef8737ddde7a2803fa07e0971734c183cf5e7393a7c3483113b6ebf54ca7666f041e3cb2d39adb1a3461008ee21f106a25013c787303d36d90d2f14f0b3c0016b9bddabede87f699de3c5e7d0d7817088067bb1a4cefc0f3abc1741b4f84f699ce8117a27630dd02cfe4997ec433dd88e77561c70b56e49b26af1d035e7d1ccfe701e00dbd8817cc5c6f7d03cf04e507f151e7f3417cc4f01a78c10b48107cbd0fb6dc99cfc01381ef01d00b41066e9e751ae44b6f474c654de9526669ec0ed0b6c9437dbca2d9447b35b317bc9e817f70af09bebf51bc0c7a18785b50a4746fc2c901e5f8c5a24ac5e76cb3e974ee509de24dd731f6a663100223079b2c241222405b42ace601286296acfc206382224315181b0d27ec0861c24394229ec850228b8f085b787624c18a91078a8912604023a8cef0bc6043440a901b257cee77cc666dba4e6fc530346c6fca59cac2513643680507b04964a84e832e7cd5f4fcfaba10f6ed17b83ab5e0ed178c178e15a99af9f60b55f797851dbc504cbabf1129e64051caf2854b8b52a71784f757c5c45022e383c51e357480ed179a3abd00757f236248adc93adb03a6041560fb85a84ead9ee1d40562a7ed17a83aa5d9a9e9b965cb9885a405b3760bc8fbcb494962df6e01eafe3a60234d18185ce6ccc8036cb710d5a9cdf3ed1686f757c9b87849a27842b19404b65b20766aa1eafeda45521996ab2d3cca00db2d143bb5788c5ec74edb2d845970aae979e5ca5b0f5a78fa760b4b1684169a2a5205fbf6a3b3fe65a8a08513df7e54757f950a19ad1373a6da4c4901db8f8a9dda3bdf7e64bcbfe09b3737d050a1e3e609d87e74ecd4daf9f623e4fd8518b3460acb8c23759880ed47629d5ab3640a65fdc3c0f62327353d912039a2faf623a9a3e111b122d5ae6f3f82babf93183c8afa7623e4fd8d68a1d564091d2a394e8cc07623b14e6d9d6f374adedf08e2992a643e7c684d6d01db8dcc3ab574befd28e9fe7eea1cf1caca3285461460fb9152a7768e90e9a8e9e9db8f9ebe6a7a3a9d4e4661df6ec46564343a56a4aafb3b4fa3e2b71b25dddf08296651685c2d55113b036c3752ead4967dbb91f0fe3c881dcdf60811c34307b0dda8a9532be7db8da0ee6f047b9a0c61e154038d17b0dd28aa531b6738654494f1ed46549dd6ecd4f49471ca38fbf622a8fbbbc093aa276248a65c0d81ed45519d5a38df5e34bc3f14da24b18ac1e30d1e2e607b11b1d322253642ba70308162036c2f2a766adf7c7b91b1d35ae5a5c4b71779756afbf6a263a7ed45619ddebebd08d929cddb8bce148d25cd2a1206df5ee45453d38e9da2a76f2f5a2a12163555a4deb71725dddf791629158f9d56b14e6bb2cc0ccfb7efce764e6a6a922123b51bee881589f7ed3ba8fb33c5c4765162669d56a54eab9069d744e7db774fbaaf9a9a55aae8c2be5dc7a533ea8e15c9df347545a5a64e6b54a77538a523caf9761d55a7d74e4d4d2448cec6926615e9826f2742de9f49248a7d3b11d4fd6138318a2439ea99c3056c278aead4927d3bd1f0fe545022693586e287972e603b11b153ebe6db89aaee6f048f252c5154e8a0ea6203d84e54ecd48e1989de7c3b1191534dcd21439ebe9d68894848d454912e7cfbd059fff090e8844d78040c953a5a427000db878a9dda36df3e74ecb4d63352c8bc21a1664bc914b07d48ac53cbe6db87925dc67cfb50d990939a9a31cc184354df3e24d52991b70f0d878815c9c2b70f41dd9fd9141c8a1ac18407970e26632dbaf000db73629dda35df9e4bde1f3a74d2c3468e17142fc0f69c59a736e9feea96a428366e743449a10ab07d48a953ab46c834d404f6ed434fb9af9a9676ec847d7b8ecb73b963453afaf65cd5fd9966aef8edb9a4fb1b41e498b467e92cec1805d89e53ead4a67909d02033c423862b0b0cb03dd7d4a945f3ed39a8fbabc7235f80505d11a9d102d89e8bead49e194ee5889db6e7a83aa5d9a9694986ccd9b70bb50b25cd2a9211f2fe4a3131a8fb4381486389110c4b1c26c076a1a84ead996f171ade1f0496a4d982a4cc112c2c60bb10b1535be6db85aaeeafb6a952448597a72bc51cc076a162a7968cd1ebd869bb9090534dcb2a6515a1a76f175aeaf4e6ed4242a1a68a54f4ed4249f7571a8594106066c99528268e905d01db223f1827ce160d3b71c07e00db71c74eed986fc721efaf8601f35182ce8b143e9a80ed38b14ead98649959a7edb8339c939a964890e0a8be1d27851be2881569f7ed38a8fb2b89445c9458f2fe4ed0430a4e5994122a16c0b661be1d97747f208cbcd1b1c545d29738c0769c52a7364cc8846b52f2edb8a70a5f352d9d9cb82a182b1c2b92eedb2b54dd5f095556282a35755aa33aadc3a90ac41fdf5e81aad3203b352d499424cec688befd86bcbf524949ecdb6f50f767bd849991f16ad2e404d87e8bead482f9f6dbf0fe4414d991e28a0a16a53060fb8dd8a905fbf65bd5fd51c0cc8c2f4f6cc4b15106b45f46af6317a86fbf85ddd6acb9dd6eb7a68a34f4edb764f056757f756c090b0a070d266656c0765bb1537bfc769bf1fe46e0c0a251a2ca5186121860bbedd8a9fdf2ed36e4fd81e08d1c2625322536b14ead97648e32b31c67362735bd5d5d36aaef5f3168811d91fbc293504836db0411c2384208b0a28a72ea4bf39ef7bc5defd34f29c25802928412c0923619b5f39e8044411205148441e1a5b22cadc498a79550059a2cd6fb1361330bc2a7155196249400c6ec6aa87f7a63b357a227dc1fdaab65d983b183569e90cb2a66336bbd13c044655ed9bea5b2442246f6c409c889343f806593288cc2894c9e8042ad6f46aa870595f558e62f515743cd79dae06e08e3082114e005c4fdd53c7a2c74cd65fe326b0d35a935d4570098526ba85d71145d9b999e40dc316506aa06d64b5f12e43d2bd61aea4f01c7646ba81facf66110af86fa656904314215fa5a75e6e4cdaf55aa80c8480155044f8a143488658ccda4cbe9cce909b9e28d19e05d52eb7994612b8db6346bb5d52c2ff2abb7187af3d0d449f29e22e6edde71730c2a15318ef0b0f2062acc54b1cd521e1d41a62d4b5a5996e5f04b339f3cf269db63039b20708ba62f5dd70b9a1e38e4b39745f808914d43849411e991a524ca97aeabf2e599cff3045a0d2e2076a83c41a3252b0db04c12a44c7284e40928a07b48d824fbc304453b89cd56a0e5d9ba85ec8f4ff5f20784d2963f0db05f3b542fd91ce5c9a1e5c20b161c302418a318c7b175adb5ac582d4290081224c985860e951e86f8ebd5f75d96d883d5ec12638c7bc1ea67ad26f8be36d65559bef01184a6d564bab875f932b184e6e1eac58c37bf5ac510434ba2e6f5928476deeb20da77ef35791cda47763ddf3ba5e76f791631c18830968024814d9e29a61430d8d81d25514f5d228c252049a893c4898c5a35be294362c54b091b06228c252049980367d8e54d79c11ab22363636c17e6b4315207ccb4000219c238029b35465c74d18e44184b40924096a6c88e2ad9c88d19a92455b42211c6129024902189604195442090218c23ac0133044c8e2111c61290241c85c8b971732090218c23887511d202154a7a45e130716cb8044142c7e706c79842d59a1f1b086408e30871b200c922060d12612c014942f2ca0f315d3f4071acf818cba89b628f3d513510c810c611b27acc18a203d3c6ae7804f15aaa9d2090218c23bc9102458c934b11c6129024b8a1da71a50dbe2068634e748c29436b11bd129024d0c898e4807372115396277a9e6b96e45012718aa0f5781cda67db9ce7b9f594a3e76b9f0812cea848009549e547ea87488d73962c32f448e166f5d949ddddc2a651258b4b9c619c146a513ef7b5aa4cd45956b50c6003cf7b6b2befefe5b57f08ba4de099c0eb1b55cc8f1958eebc910383c491aead9892822e5595655926f9b4701175e59663cc08579725c3211311234b5e96d45c1637cb8496f33c216ce19967d42f556bb68a7a884a538ab870e18246495bb146cbc51695227b681e420011e23a06eed58c1c5733b8dc6e70a04b528519333079aea4744e1bfa9ef7de5be2efc5595794baeca4ee6e21569165054f912dbaaa85d3a840b307fbb8dd10e09de4e3c4dce272f6293ccff34caa70ecb393babb85403bb6b2fefa7cbdea82e7de6b6279f0a1bbaf99a9d8aa0731b8ce34fdde7bef45dbcf3358f66acd60017862c24891889c316486446e69aad0985a4362c5d510183460d87c6bf5d2daf266db421e8f4597d38c2e6472824cb510a1edb5c056bdbdec7b5ab32cb7c810c2494a014e95ac17512c50a59f26215da6c89059ca5878058933432b0e54ef6bf16bcccd5357773d1dd75ad65a4b146eb6f6b86104103855a6b8f898025222850df5be2d6f97656951e8d3dab037c4234fa4e0a8920c03c2e1db6b3d7d847ac1d2ade39ab15976c93381c357efecd85e191d720aa01aa7d10fdabd5a627f4b5c8d3a686ec0e892550279f5436b8ad696b34fe1799e6712eec9013c744069f1a4858a45fbc8529395752748868c2c2d3b595b4ad926a4cbda02529bf3734589048df2b445c169d1a9c224765468ba978324b0b1b256c3042169c044c142f4c2a2c7300bebc9d9a7f03ccf330901244e28dd7b2f96ae0c7774eee3e0e1e86bd18c989f373e48babb8599c94bd390283dd0882d358f241a49392c00be16cd34f9a2af453339b0eca6704c9d152de9615322e4674896c1b0cad092250d4cca80965efc051a0e895a30d99222a4244b51d50e891e5d121b15a6a66c4c88e4725850b2846149170ca6be8c8634764ba8869888c16965b0c40e062460ba1468132b4a84ec9284f1610245d724c9518b24477a4aca6040f254124d9dc82971520ed1a990e4cacfbdf75e2d263afeee59faabb3d2a2f3b7af565a683eb0406ba7beab01ab8a8a3835948afae165afadb550f7c996ddd4be6aad656a5f152e29d9a415a00085134c2881045b59f682a6d9d5b4057515d13e0ce48c438c0042841016f08107f643fb6ad933edadb77549d69080aa5ecae098c205650a2c09a51312e57fbe16850c6300975210f5a0d983acb1a3ec9aa50c72aeb02f84356cf75e1d72b05e9838fb149ee77926dd7befbdf75edcd7adaa301e4bb6a0efedd5f2635e0fe6bd55cedba7d15746f1a181a89954c2b2d072c6d8a7245196582ed47ce9baad2a2765d94396a599305fba5009f475ab8ac8a35fb7aaa0ce5bb342afedf6a9b52cadad6719b4b82c6b2d4b7bb1ec387ed149064166a500ec1c3cef12b700b068d1a30e942d5a5cfd94bf8af8d2add5e576b43d02958782f9dd337b65694d503e0ae61db4761a2c6defde6b6b366f5f9f7bef1d51daa6e3bc0c3417b5cc081c2a46ee642515f75e59a5f93b42889792175b50c92830c08b83ca111819f7f5ca8acb037dbdb2caa2e3f556fbb5ab5d0266a66482ce902253c61b7196887859294391a48cd389aea2c4c4b79183b1cdca9ef6b56807aa042ca68c39dd0932546aaa6e8a5cdda891828962940d0cbe6e4dc9f3b5af5b53e494517db69f370594202df684c11162d6a20695ab61d937b07068f9d2e4e907170ddf94bf1e7c0ff4b5885c510a216321cf9447bf567962e59eb706658d279aa493325671487797a50a26497f5d77fb9696496beb8a0aa35f8b40b03294b5b5ebdabd3d3865dcdddd6d767777dfbe16ef74f921668c7befad1dac9f5e6bee9efd6aab1d7afd41dfdb4c68c510f4b7446f6d5583fdd55adfbad51d75daf7bc2264db4958b060010688b2223190570d20a26a60bd28a6b3c5f0206cf567a9da3192e1a132acf1e406539e3b55fef682d9c4263645dcdf692f8b7b89e0c9b245b6a28b590fe09d11a768478ec96104a408127c453bc717fa5ab483f5415fb25c63024d42a7c2d7221eb02fbf16f178a95940beb2dec8e0c2046c191fb459e1b11eef3173f86a3b010e4fa902888c3dc72c245470003b46324899cf199f63e921d8ec3720df4cdcb6aa246923c5c5501492a8a707fa5a25ea0512adddf89eb7bc19e37a96f7961e34cdb6486569c400fb1c3effbdbda087f7d5aeb576add5db47567bc0ea234e8b51542f735760182942a02c453de92204aa5ae779b298927563c2155ebeb02852c1769e6ea2dcbbc204971145d43019b9ba96b8c860547833c74ac948170d5c5d3366c468813c020c7abff8a00f3d61de375f966de2eccfd373d69fe709367ffad18942ca9f8ee1745f0a187f3a874e3bf8d33d70f02145f14ff7e0031538fef4059c1e820ab23f5d846aac0d4d64118059af5c81194901ab4e1daa7661da4c936cce9b198ccc66ba7521c750a2c99fbe3fcfd3aac4983f4f134bfecc52a48e8f262a6c94583a2d19d24ba03df17890a166e15875603bdd47737bcb4cebf9da97cb3be6e83c4fffd0e9f57bad48e478d3f27edefce98ea17f1598e54d7cdece9366de235c18637c664cc3358c7a897aa5f5eeb54a8a02802d8ed4f14da3921461b22948171430985ba0760c8563c7904fbfbd1367263d3f4f20b3fae90563ec186cd51e25339fe7793a690385eb8594539bb3599ce779fa87fbb39de79973ee9da7ad17c4d81664f6dc87c17b98773a06df79f67c1e9f7ea8e46b99ca7a1222c3d08c0800000000e3160000180c080805c3711ec7594ba11d14001353965450584613c722d228096118c530061140882100184380414aa9aa6a00fa02e15cba740bdb9de27b689cb616d16e0da9b8cf0e696d3c9fde8a1aa36d8dcf880b1865b918f24f7a6c7a36f06deb9cd8db602f7fc471bdcadf10fee52d4fa005139864e6154cb5ebb7a77c589a0d7dfbf3849cd2ea5d2c590522176e51482d7a012b2441ee17d47761597b5a807a334b53af2b83a106e2a4ed0e9986f557ee271d6e010cd2f1e41978f8d5020cceed0325ce36a67f9bccc36dcd90593770384cec3766db5f5e1bed8d174a0e501e566a5e1a81f7dea2836d0278238791dfeabb151414ebcb80c4175cbafd1c99d8d826089dda287d3d0e8836383f99798ae82c6d8ddb562d6c084f4fa793fb7c1aba16f7622481d5cb8adfddaf3f09e1f8d8c5e6a5a264ef3d1cfad1084b99a274554139db02a15e441a24bbaafeb1b04b0cde9bc58ff2d4b91987b10ff8dd911a9894f109cfa9269a93884aaa8d4c7897d52c2e2619ee8783df41abcf3784383cd190b8e309c365826b482121134171bc3f352baeb6707acfe20de8f380596a82a9f0de11af4a46f1042d06602a85cab1636f5e490c8f936ddaa2c45bab735d93631aa70b22bd34c2449d8b9829ab229a7bc9ef6250af168ef6bca86321286305d365c83fd83730a69b69725df5bae0f0749e983de8a818bb61a1f12a018654b9ed034ff004fd6c7de1a6cbc51c5fe709987b222464611187b35b2ee2bcde923724472c7a002a645c825386572aa762d12c90a07609be0e40cf04562809dc88054d5230b08a6c313fcc0c9ab911ae13c42616751d762e4309bfdb70bc72e8f87dcd7410c381a11e42489d1c611d4d81cdaf5561d12bcd938ff77692c73b8004b5746376ad4e0263eb50f7acdeb0e47f85c381d243e77e07812a45e445806af695dbd711f1aa69e1b85d927c92ed490a2fc617ad3de1830a1f3887974fffc008dc65c6935a1c77e3ad8cf12621de22d7a8d4551a29c5d1afbce4f6c048f867eec90c6eb834ad46a6f5dd503c6f7982847927743ac49a3176ae038e3674996890c7c85e42c4182b84583e053b4e772eaee0f2a143fce55de0b7a2ba8437ffa6a92c6c89a5b8b545a45471fbc6aa5bcbee8f23a408221380d374bd57a8e419b736ec422337fc40ef5bcb0c267c22848ace350835b2c40d6f97577e97946cfc0ce894554368624237380655856970e4d408134f1b852b302c1c337924480c34a187ceb351c2328c519bf70cf780d99ec22106b95de9671623a22fdc77213320973291cb0342ff873b1e86039982759eb356bad6ad8050073d6ac6c5a562eb8cad0c83a696fac399ab274620e8b96806633a52acfbb5adf7147a2615f7ca0c9a271194d297d609d2d7868f14e09494793405317cb7b7ae8ae3370f4888ad8e8d2a36af84b965b3d60331c759e83c16c3c9890858de44f6d628cfb6613556d2ccf131bdd2515251a988cd2bd004b242ccc2732ce1908e73ee77e63a0752c02f61b3dabeab8b4a0b359ba0b98aed0a453eb6ba321fac98a7d38ad8d9a1ec64ffff864e4d64b17a1339ef926f0216ce0eb474fce0a9889805de421c047dc36cc096154b27feea56e3d37023ad432c678a4eebf8d148d5db44055f66b5ae22e35692b97c699b8a3b01bc6db28133b9ef8c5e94409a6eb9ea5a4ba01f010356a74988e83a33283bbd13df183705787c68795b228795fc1227864a51200791ff74d13ac213e3fc5920554f47e78860e5a3f19c4c509dfe64f2ba3db5ec17e56489a54014a7d270d730829a0edab0ed8c308895dc189dc067b38ad3c4cac91aacd83f203b4ec719f9e84d0e7c4a84233b50fc707b55f901fae0a4caaf05b8174e042c71c26dc8449ced05a18f28d027d764f87e7a1f4fb377d97320d9f9d1e2965c1bb33b26b74c1a35916a726cd0746f803fe8ed3143a6af21577335c9c15c51f173fdeecc77be7f7162a2015708b1af7526c595418143ac81035ba5c7889986d70fa9c4fabdbdc32641758882e606609b72794ced8d44f697b141266b6abf41dd77f9b71b3f08a5d243dae934d82f0ed52df82eac547f20159588989f01fb4e3bcc827712ab94ec4054d7234bd9700542866893e5f24f9988b87ba6e3e02748ea541c8c6191fdf91b9aa5dac55b2863a82aa11ba39c1e40aa43177836649fb78e3178174695dc11a0bc1e018a43149135601eefcceafc4ce86bb39506a2b749fd05ef0c551274039ad703a46ae8423c437473933b06752aa0fc9c8907a70ea03444a1c001b6b9e4dcc23aebd27f2df0a047450eb31937b85d422ab3f07da02a422792723c22280d51446c006d2a97c6e41be43148a352114e1a429b9423beb40d72acd2580945c60c58cf768eefe214a2520a950af1a301be75e43ea4756bd05e9cf88b51c3521dae089a21f76a772ce477e12a851d00e5f4c0521cae509221f3ea8e2ce764469f9d8f61f08a078cb0783770f81320cecebe33f844cdd4c4a0d4cff5e89100b51ce24e96c17235150cd1e96274c73812c977872143e65e7e411901aa12e8c214c7034bd57045ae86c8862d7f0ceb5420ff39f107428d47691891b541600339dcd9c949cc2d4c85243b8779237b89fee793f8d6807b5d3a7fe09da04ac1f60de7902b211c104e24b047ca3fd3c04c622f31004ba585902fb07961f781713e1827dbe28cd948cc67151846a0e41f74fc8549b5d34d7227442bbdc5a8520200d5662871bcc7020050e50484e157d88b9ec1c9437a77b56bdd8478fa8be9c8a79c7252606f169cfeba5f94d1c683d02cfaea15415f4e19e8c3efc4a0b856f95d82cbe4aefb9565e6da97831262e50b7054431ad80ce87f92b956db19ae6e4e2454fda9298b8caa0abf3968d2f8f30b7b9d85f4f196bef8e9823421d261da8da904b33e3eba6eef2638355ca7d262238adbd36e753e29b0789cfee7c68a1f31d17af180f27650a7f87b4afb52ea59d3af7e9ef39808cffdc234f85f9388c1feed39412564ae83af7d2eead98e7d3de781bd2250526486de479de4fbe65ba71ad6f72d205050c5866b17af9b04b5a06e2fa72d2fa603b1b1096c27a0329e8755bc3e8067cce89ddc73abb884e76ea42fd2a10c6eec1b46404c28657d458b0c7846080c510f867502c5422371ab8ac2d2d6a2d5e58d71621c182b586e1769d275b2e70f2bc48f543fb5b166941606537c6069f5698849a5cb13e9c73d890366578a6f9c3d168e6576ae5d1f6a3ee681494d501dc9a7406e8b87433a33f5e33951469220cf6cdb54b615c0fcda11d885031a4ef4860cb2b86aa81e4ab9e3b298693551d1b9c28db12e4eb7afe38c2a0e18863031b9dd8c2e1e3dc3d428d915659a69d49847a27b4eddb6581e9eac2cc41b06d1ae402051e4f0bb9dd99b0c82da7fdabb32af4d089653e7fc5e718d8308cec78dcbf12c8bd8729f1ee2d6092270bf8c221869cfc09070cad79f025d2d0d92550742ce38e11c26805496ab6ab10ce9c3536058d0a79531f6ea39cbf2b915a89fdea1027b04615845d0e2796d74df9637f317f7fef0eb582e7503311de7cac0ea39b926a14792ff36d22364406ae279ea5d910c8f09767fa628f3c48b2c64c749df3667313bc1268e5908bd54a0cf2bc2a209464b2cb0b00b002e562af1dd6b8284e5da237c8f20ae33aff629e5baae39386f27914ab7829105de6d28b33f428251293898abeb23a80d5b4171514879f350e9b2c9e176af2192eb97bb70b890686cf481ec338fa7fb89805ac0d0f03b6d452c250ec32ba3a27a2dec5ea1b5c229ed89e92f4714bb8f91152e63cc6c2fb202f18fc128c9319a528a94b829bcdd830f18427ae1c686259f60e1f4d08486b18c8a17798b5f8d42ce5e335b2637a83778fea8d73193525bc2ebaf9f7f3e56d69dc2848f8b5e52bc296e3b1f47623d5da2bd8b5fd405bbdd3a0f981f58651276929061a2941fe3d8c9c5d7076a6b9219d313029f94a42bb014e20ec78ce81fc5b826212ca7666d39be8c2b6983d8b392451348d58136abc15a4d4d7610d0f9d9880e625839c62e30c36d54ceb5b4d6faa911aeeb4d4881936956350c9d105d31851ce72fa3fad6daae0c8101b8929e1f5f3cbd13afc68248c2f0d46e2e96107b14fc24f6a9277845b52ac890f10f4c0d8064dae903e3994e4e036f2763d477e9370a3ff67a5c3ae6babd8e1ddea26eb36041808aba7ac334a99454d1785339547aa0b879424eb58c997e98d402e67ab48e26dda06516a01eb42f5716cfca3e794927e914250a98aa872265ee5a0a1ec6916c728a3b4e1fd3c4b009347f7b4b14342e04227f4bfdd762ddbd8d7e71f5d4cdf52fb3fb538b081821c1302f315a8439d6f94606efe0f8e6810d39858a870eb996f5b1e2dc3f3e0d4b02f57becf6f00f14659c44de54b411f813c354914b6e958ee9d2c2596f57481e62650590323463e59a586521950f95b98f0f7bd666dafea8c00c5d84e473b654de2d4ec92eed0bcd9b0a2dfe0e829fae591594b5902d3b9aa8815c1e302f241321b0c609bba6dca19c21df135c7ba405056f71b5914431518011c7ee3b90cb390a5ac322c188c6d87434bf256f31dbb3a30098198ac183050a10e6d27c3cabc46ac3890606bac273ab25b146c52d51afb9d7a891bfcb199311c52da6d7a2e3f8ca4304e096c202231eae6f511a8aa5114ee10e27d6d9c5efc1847fe03d071b2444d49cd249b46d42f404076d08a8aaca054bea94a1c2d2cc86f00679054b633c60ef9046a76e535a3650c6360e2985539f46d041e94539c45fa1a75da505bd2017cec92835fa14186639bde91ced2b55bc0071ffd8298efbfc5f7c376899d74298e0f494ab657bc5e2c21aa55784773f5f29ac20decc65c5c88ec286885545d4f1534391145da98cc1df244faeab2890f7401d0a1d5ea9d5a9d58ee07cbfd3416189650bfd02cad391bef30d0180261816fdb81b181bfa82453678bdd1ce3d31a52db1dadfceede85e656039b7a38264558245a5531c3480b19d4869c62433e16a29fe4e52783f29547f77f8588650a9cf8c148a4001e643290af9f36abc6f8d824d5f8152a5cae0d72913a80eb6d0e327d2dcf761a943f45ab103e5c343126a53c0f5e8061e2eb90b2fd0805e908e0aa6d857660a0b505b0fe5c2ca8d22923835c87ba140a1762bb37f677499bb5658be175990174351641c7af9e22e36fcb230412de56ab30a0dfd62002de2364093fe155729b041bb0a12b92598d82615ae0777c041d17d70f87f0b023da9801b8c47a8511ac60e4a0f0769a83dd695f25940d8532336d729b55ca13054811443ec40b91c4d42d90191be36432bc530c2ea52afba9570a83f2be02a6e173a9da262156197c4bb4b1986d52151b93a58625fe5ff0615af21740ae5265b30241d7b8ae0e9886ea8f3869652cb141642a51ca5e69c3315f3b37ab95e3a20da19720c9a9a58987beb220d46fda730d1451989c9c00d4cc269a0c5cccd16523765e7e8f387d47ab4266b151d67811f08d847b0226e15bed8ad24b43a0d1bd2a70a29844c7d1cff675825fd1e548306151159a46831b7b109fd5d6cf27a5c4aae41bac1c861a11655d9e04def82aed70f435b1bdf0332349a5c497851e3cebbd15e9ca49af99022cc5902a423dc099039a0c0d0131a4099500010cdfefd09b0c83a9254775171cf8801b513fa4c0703da95d200d44d04d6a7c51ffafa4ace439749a77b9f8423909f6cc30829808c6d989340e68406a00d2878d0e340a18e997bd2d3688a9597550059a5a29f0cd34300cbc9f7430f96cde1146900c0988dc78d1db50e84c1e4424a2f70eb9e1269e7ea594b1c3a006c9909d008b9e0a84e1646fba24e48b1a949b4763990c8435744019a357378a2252920d9d7b0d5688a54a8265a7822e96cacdb51d658f0946a99abf3a0e7b058f2a57ea0efc865d8cf5b292c1870693a54000e8bd3ef4e0444b6330c7ded8d78e0a0bb8f18073b659cbd30b4ef0d8ac9ab1ab8015bf944f8242e6114e1541cfba8c6276d2af43988978f6265744b856e1a5e53a80e068e4375709055cad8a88561beb42d504b84fe1152013a03cf79dd3a1adacfaf8545d5a02a1da36ad862f0878c9d795f0d812807be20a68da55840b0de3960b08b12775a8b6f012fccabb5260866e9acaa229a9c7384decbc49b6b4c026220ec6e42fffe11d776691ec7bc077e6c551611463d079aa115564f9cec200cebf2c7fe30738409d9b0c8287313d299a730afc21dfe38c4084be59a70000f5b9c0d03dd8ec8417fd95a1227abd17afaca58d9646a5dade936199cc94384b3835d9071ebd97d36c108b926e4807c86872a5d7a0a4907d5da70b14373729b9e7ac68c8ec78a97ae4b17388bbf14f2c8c977157cf18f49d34db0741377af5428062fb67d84c04e9a69da49e178a67388e66b24dfee17a2050aee3203a0263551ecd542d027af604807bad49fee4e58d48d3316bded578e40af5b4bba13dd6e00614f0934d6ad42922f801e8db4218a956dfa6b160b132db0b080f61d4fec188f6fe3e6f6fe8b72d96604f8eeb7ef0935374511af341cda226a4d4a08074c8235eff6156302ea434470098519cd1464a4cb5cb62b45d34bb13084b972ce2227ed343737e4cc29111565029c6bd7347e634e0c524cf7d35a30e6e9f06a5bf3c5b8bc5c722ec8fdcce4bf0a29ca295d8e967f010a64dcbe7b829d38e67da70348b99d784aa64bc78a1dad59ff5651e0b66cfe83cdfe998d13fb5133fc901b0f7d00f32313dcf9790fe9372f88df98d8b2c152331a61ae6d6ab44a6a9f6abaf0944a5e4d0ebe6c346b43a2e168592098e47eb31b5d41758271cf75a4384b22833f50a90eee228b0956da24209d7506b1bc807f0a5c6acb8059295d5b238cfaeafa2ad4f32c31c8834cfa25a092500b249aba11b7c05f87e64ca97d3a9a9cd12eecbbc659a4ba0d87e3a480f7b2dcd9e68057b5c7566eafc8653f85bcf36b10053c358a3f63010a0515204a541973abc43112447f359713f7aaaacadd34609d241b336547626d468ee51f047905fd0d483bcb19f9211bcb9cbbd5faa5796f707e346cfd61b3b470b303836e0beb2d2a4e6f7e4938bbd007157c7a150448325609befa561e816a149cbfc03cc2644c36e33f1abcccf980113007a16d30380514a21514738c1eaa343253537bf64ab1436c5a5f4e87d1601c8ef6498cd757efca7f20bd3905fdc60eb75acc045e62e2ad952ab967ab7939387cd741f795beab145af3b4b3f08571d1a4974d3c1173e9f6648262342253b3c14256bed250e04da5b81716b0fdff759f6a0979185fa336ab7ecbce6841671f84f2a02f7d24980a92d32f294b2130aa313c36a65e025b755d7a04d6106918d01b8cde574bb3723bd85888719cced1ee86b91d75e26e121bed46c7585d905a6323ccc179739da6b6dea11be9e7367e253472a75fa941e915c4afd4c7d058c645a13043972e1d690d2d0f5d0e8dcf7c58f79b16033bd44bbb123d397a4f2527475e7b7a4c7b7d051afa94ffaec3286caf742e4c18ebe8d700ee2db10f643fc7401bab495e3c7c6067b2943e0af70531a916a0d9f71c3cd1b60847b1ab831d77ad4b6e5aca36f4bc4345619a51f8812497936a2ebf615ed5aa610ea1d5ef71cb90eeb00be690fd0177843f93a8e3f60e2e728535d543b2ccdf6803fc3ba7386a32d47d7159f51edca39fd6e3b0220141261e277fc1a10817482429d39fa5cd7744cbe76fe29756037c968adca5d8e5ebb34cac9921b21f0916b5d3a01062f2df30bc3ef6c268a3db4704434294575609d07b47a06c26e2e92dfe22dc590b27b42a7f29edff168c45ef0ee12fe78d24780d35510488135af7a0c0c7e66e8883e7615c333dfbb08ae981adb19fc9f25108907eb1a707c47c20f6f245db109793b6e6832bbb847de8a6b8777149ef10392fe1e4a62ce4beee56817daa6dd9b2e03ade441d2fbc03d46b0c5658359eb512e822aa325f74fe1e277cc9ce3b810ecb91a4b37664f4266e406d19be8630e43876bc08edaad9b0082d173b57d37d491546d4ff1e90591894ff7a466e2c92f4e3e92bd11e295734abd4e097619c366114d451536aa21c0c439fac9411e85e3d219e7f85564a2ca494e7b987ab8b85148bc75a9dc5dc403869288f85a86708e8c39508d15d55069bd362ff49ed057de9423a1109302b3d0df54c64a489ab71b49f71ef0aa64dbe97b4c3836168960ebcfbce8a66e7f15c94d54f97d068ade03129a7c2479f53a158fcf8ead715a43db1285862b4de98105d01312c24e72d0c4b9b86e6b5199783bc365944049f235b4a73a0f653743c4acfe742d04e4a838b8530abd1e401a523d8af55599d4ae1caf8a5746eb31003733d8797d2bd9a3e6f2669e5519324690e38c21cc32f1c6df658e15ed5b0336af37047cb8a6c3c85b0b757819fee37652a4793abe7831bdaeb55a9452caedccbabf10c2a6dcd78fe47b15996b79483385656821680006eac8ca26393df04e594199391efe3d5c0ad52364f4b8f0d7a4fca01fdf5a13b53fc3240fecdeb5c101e5ec36170e5eb2309118df291f79170b4f45e6a39076de56a0249ed147f48eeddf4d70cc68cc68774cf2bb23f45cd39e9be766cb325ae5d5726cb8937cd09e92cc2f9158bfb3d57daaaf49544357b98176135dd179867c486e6bd0f91018f3f3ca4985c0afc967e491517d5763bac7a9aa807a2fad5bf6017bda1a7983a7720a0a657b631b03325cf7a2a11d2e25d297707d5c57b0ed642b6916e08b275832d4f0f8047082ce28d27d2f34b2650ad300ebc10580be20784e3524d4ab646305eb6d4aaaa40bc3ab5782859a4a9d7a9d127cecc3d1023caaf30102b882a411630b75031addb22ea82b863508501651c0f1c390d78fdf067e6736fc565a48b3b4db4bb6028340120b050a9e06e4bbebc95dbef6a41cea23099f36df6ce7db187d003a0fed6c1408f4bd7ef031ec4bb56a5454ced988bae03076220a655e96de759e7d759d0b3eca06e36b6b8618559b32a2cc29fc0d001004777cf398eba910cb8512a70e5711076663d9ed9dd57e8253314803957b0a778c763e164506313955b2766a35d8e6b1ec644a4930891fbce6670c2593fa7edb1a956806b7fa031ffc74215e43232d9cc1c80de8224dac88701b29dcae72ac518630ecb00a64048ddbf5dfb90fbff0c78126fe867d05fa6f2d705d4b1e53e7472cb5020c3d24327f37f45eab3d16e10eac0942f67986385cf91005e9bf8e9b626f7f9bb325f11752041db9e7a8a83565b536dbdb2dbd21dddb83567c107655cc131433d8b70db1f002e9ea5fd81a3f77fe89731879325230311e81f869f27794ae06afe0edef8b515de61b7030415f54cf794b2de8f1f807a4f1f28d4a76122916141444b0e383ccc02dfd3cb7e31c3ecc13814d5f94cd832c04452811546a6b20083bd294fc0634b65cea7c8c10f94bcc4b3b27b7adcc39f39e128af01b07f5ecfd0d78bbd912ba248c4a77f74975dc5a4e507e5487c2a42b35af33dcf42e69d4f3b05bb55789bc1e274ec71f7616ccac865ee6b7289c2f6859853925c47d42e1dbd8a3b1947851a6934c9e73671080907b4f32a10553c76e831cde8df40fbe44d9e8139e71071e653e616898681c830dd73523e619a3b41997ef4bbc66e4127e5a9306b514e9dd5d5586a0b45427dc5c3ca364f4e8240872f47986e40e8dd82fb77a422561aec70e1fa015e4ca203f499d8a3619686836e20ec41b47985308ce0fde911c64b855b7e29ddca1dde8df3978055dbf06d54b4a235829b46eea1c223d85d1a512fff3ebbae4a7f998ac806f33a90d5242115b46727c3939d18b4224dec107b7adf1a50c2960e218023e0ee081041656662a79ab50f4109ffa9d15820a3c839b5f0643b99012990a0d362d2c013a5a966ba2c5104be1a707c792f53a7e8e37ab8b6a425c0a40e92727da89881993d6db526271d565fbc79c084b1e4bf9c9315762c61f41694576767ced860b4e4f65c494b2ae84868f1b2bb184f53d314c1d6931c9056ca99ebc11b780b78bd6954bd756d59d865083102c48b9ee1c07aca4497a4693c558cf8a91e29882dfb31c7f5f62ec957ebdcee14a01b4f4f98b91e02da6de657a531ffbb51eee99daa845cc7ffdf1f49138be7a3a08ebe4c1ba2c25fa0c38373905953fcc9bca226b51ba1c8b88b0038770e6ebbbd3805fdea5aae601ce9e5846481c2f5b810e1d0a2ff340f20e71dc699f931230ddaebf793b304433c06ac3198355f61e045df24b2e19666949be1df7155d93fe34a2dab1e63d0f31a4f9a935c2f944d02d81b477ac2bc88f2906e864e9920b96ea9384c7c384e94920947be42dd14dcda6466cb8b1b80fff747140adb326db27910848bbcccb32183bc3792eac5999c205a006100c34e2772bbb5f053281292214189d501f1e588de1fbcd96b431bc055adff3e823717c1c507f6af10f2d511ecff12ea6b505affa408aba336c721cd0c07aedda63e8d444c9bfccfa6bfd7aaddb0534b654878a459db399f36c24e586a13f5f7f1f2f685fd9600c1ab67d1b4660eb90313e433028ed085465e39c8cab56bb70d0128ef476fcfb478b2d0e63e7ae05ccc22548289a3b5a3ee7605a146afde153e667f46d69a110bd3889050bff510640e8552443c32f6f0753a9bd21307d14038b8f1990669946bf5a834b6891592c89094565be080eb44a6a8659d243b700eca27882d2d3b1229cdf77bb9f87c907cea01325050c2c33bac2465e7617eace74b7e0fb1bc09730444ecb1420c4c180c3bc8de3ee03b09def3dd5194e748f501033b6fd4686d4cb895bd33aad633e92f2635582c8596f64760fc1f8167fd2b138451f12961a75cb6377b1e3e2ad7a5cf6b520d8afb65b098717c4a2d83ecd32004ec17d3f03cab96194310f47e862e8392ff0b5714aaeea71735c97399025ac968d3c662c866bd32a3578e4bf256ee3ce31e98e2a4736805819cf26bde042eb203a33d651fa88923aeea51ac17e48e3e26fe13ed91feb2d46d14f623ee29c502eaab987954a3a470c0340ca28b5477a4684ab05243fad03e76d95ae949d2ee2790fb22c32063f07ae44425cc40d141aa5dd0458b2a90800bc22c72e15dc7c2fb831beb9d6f4718d297ac40211d77a100def01f51821e44b22e4caa2095bb51fadd994830f53fbc7228214f5519694bbf68d46e107620588cbed493ae1bf62dc2b2b4fe92a35b8d3bd05a22a9169beb0c6dd9268d623ca34d000b42b1b75ea34c84369dc5d2a6095828a9ae01dac1012c96736ac6f57fd55c0886fda174d775093d3a698e29a6c45287c92d77dde5118e2b0bbcc1577acf4b693cfdc20ab64c0f7249b1520f96f3cbee05fb28a0c2f3cb547440de8d218a196abdc9a7108baf78379846bfd4a28b27c1d4afc4f4b04f8312d2d843d4a9b416b746b06a201b0e7ef0871558e8bb26ab3a069c4f6c2121cd4c74fa010743a292cbb9040fea43bc3f6c80c0c91db0637ce925b35aab5d563fd4581f010a298d2753c48d6e6b6b5c4dda73663584c79d25011ba1a16badc1b649dd02570bdf192a2c868bbb8e300b225ccd73c2dfa34f4e2ff752ae77ef1c1ea2f72b2f52206aa03f35ed41dc8e22a338c6ce7efa799456e1695ee4f640a5a2fb6a4760c5f34f001cdb901528a9771da908c3d07c6d6b6155a4fec0d7252f6e5817817095285a4211bb80faa86d331669502102c1b8bd208c6c7c131a81cc2840e51a83eeb68e1192039d28db26d09d49215720ab80f2f63ad47ef226bfda744578227b0f9c0d231464868ab3993951877828ec4304372bdaf1a8a39bdac4ae947c194efe871120359329365bda81b344269de834d4ba6be73e3174958385adb876d17feac5872ae32fdae35339dee1bb3308eecf1d01e3012dd51597898599ee27420072337e8f8a1c7c1bbf964299efd8c3bae952e5e314c8a0c95f585c64413039d3157bfb0a4c41e5c0ced152385461cca218892a17ce43bd830d3e2038533976109dffba40d737230f490eaffefedcf6182d72f522c619be18307b69f06882268a65368fa65746395d11df7d2381cb47c3660c008be125e58a1bb59bb11d715a1926fa33bebd852603c1e10162739612312e63986bc4536c1765a009b39213950ab7cd7bc4544c2ac3612be28a128b8eacd92e346737cfe93bdcba242f62e829b1e37961abbbe970a99322ba4a217de84f272ad92c1abb5731c86192f24b3b1977d01e6992e537849c54230c8b510c4bf12aba4d5a5921e23182f6ea8d143ed9c3aaa46636c3aa140f3777e150eb0ddbca2e589f538150e9362c1dac9bb659020e55810e5a27054f66658071eb91d917704ba265fd58310d6e70a00b851ea6e4094bc82bb290c45775bc67632c20258d56d0f5c557645dfc879994c52d2c3178d54bc3c095dbfe6e43b05df5d11f7e4e67ff12906821781e8a7f594424d30ea643e01180b6852de607da27a3a7ff5fdedd9461c7c4dceecc484cab386221fa74a6b80b4c2c9288e3f2dd56df591c93c70c762ef971ee5f15c97f0c5cac7728d600ffa7f24fa0399d1843a4b78d49b13f0dfe1d78cb43378a1d214eb3250f35555d28587c9d2347abd546c13fc8c04c43f8a69b14837c3f8965631fb9a9b71ccb620a6b1da6768e61c1fb88d117304b6c16caa4072bf8ea39378bd7a6e450156b159c1f153667dbafa0b9460508532828e54c895e31ba50fb383f0edb95e938ec47e71823cec0658a7ca0320e74b385d0c9cf4f3da0695c729f75a7b0f93fba06dfb9448cb99ee6cf3488090565a392699c9df3d1b4eda9c02e1beaf5ff42de4cdeab1ca502567e53b39bf2534878641acd7bb3455901b61bec9c07c97d743594c086b03545a72ef9e0338c61f991746f2087d61379326189d15828a632fa776273c1385f715df1f678c1aac1880f507bad24aeb369ef55c7fad1f82aa7bf3fb0f896539ff5bf9bd6f37fa462779cb4d17535d27dba54c35dbdcb1439554af4bd0ca9ae1440b668b95aea6a2b319207cefc4cc1ea3cd9add829223bf23be2885af41de4997141af8bde142efc75eaa4850b0002123c8fd1bb986ad5773f3ced0c66f4ebf3bfd6609968aeae0242cdb6a86ad11fbe9a739a0955557b14143b5c718d17b32d0436bdb9a0448cae45b7da13ecf5ebea270e9a2b7209914e24dd7095b754ef8cef52c5d66cc9066458c193e65177e64346e66a81dd84c89d3257c642aa3f47902f15dd0a7530cf94a8b8160c58cffcae5b399094fab47a7acd1c118ad41ddf978f583bdc320c0efbd085e4e1664773f75381d3a0ac82d4bfab310c811c9c1b96d7f17993636ab06b85a66b51edb0de7ef64d14337b8cf625a278d7c1c6332d453a58267bcf4ba0612aecacfe503e1d10443f05189c2fc891d401e5461c741bcb6512645384efa1a09d5fd0234ae96e90ab421b96219a6ecd7fe364cac809eb29c2fbf16051992f489ffbca943bc5a455188cc37e4968e8d96a8b9d38e7b475cc151dc23ec0b5f3910d95530db93b6a0672c5748800dbd641b3c78ea24c69820aead6128fd79e2a15875bdf79da541ded6813097986e84383e0b0ec29ed499079a05a2494f2f1673d1ef19369d74a78d009dea8082e9ebc3588bf1934b9bf16dd4c86e4281229864007874cd37dceb3762b8ecd79db4e45f0f3a7e2ddc1fc14c5ea2a76a109ef300c17c082f79656908f3d759c06d7813802064ba14996f8eaf325a05ae0ca84786ed1bfb07046f92453cc8cdd77c5c4146b15932ad926a0dcc39b46c80a35ae8e0bc7901bd35440a825bab1c9fc9745ff5a03270a69f2f0f7c04d293e0c3f1d8879fcd83651cb9960b6fef8b3952a00696ea3fa297e3b3c99ce58865863f0e7f632b602e70dee6bdc248ed8b0f3f329b84ebc8c3998789258a9ecaf0a87d6f1b4b2387f1dffda360d0816378b2b74aaf95b01d8c23b08387142a964f287a04af9f5f251a56cae484d861d15a2ee0dccd777c166297ead0c2ae6e35788b24009cfa0da32cf1ce8719660dc9721099393fb07786ea6d2dbe994e9c6ecf3d6c245b3e93a80157345e5c296e3b690c0cb9e7fa063c63dd46599524910df9bcdf7924c39a202ef7b5f3301b9493cc6a1476d9422360bc67e7029910945bbf8033ac8aaa7d1b6f07ccb5d8529ce6ef42f6e6877560c93a7c5d1a6d167404f2b3be85ac7a2043b591eba4a093b910a76adad825f702a44ae4de5928a924e79a7b1d0913f37c6877e9fb033641025fc304df3c6a5f72274e1c9c51d0c630ae45ddcff5bc640854af29f6113300349d16c98ad9c42616b47159c0530087e46bbe59942553fa03a093e69765ceac1cc7d28c61fa858cda450ccbd3123654bb54bce19910c5c80b9fe6027a52c35d359a1ed11d17765b004bffb24721e5d60325457bca1925d8b31210ac42cd7bc5f0c8b0db95a72224a8f99cec4f31f238c46550c6a66bf02dd2a15b2cfb2d979f55e4697bfc352b141ae4959253a1f9544845c25f47cff8e16368a8ebad711aac2b95ce85d5324df8b897bbd214014694e20d81856c180b8f8403c41636abb5bc40669db02788ed45b4410bb06aa2faddb038735efd4b8671a83d036aa7a554eb975e2b74003981e71dcd6ede51fe4261659e37f21b8f2db7d4522568d1d5e77daa1ecfdf46e4062442739916de607a78452f24e88e8f62079e3f7a6db7aca95b125220f22e8b9b79cfa398f09bd7431480a615b00f818c91e94383772859c923d790e7a1c817492095c1e59e00ed37f940d091910223c7d21c800621df3b3983d6f27599f42d16d2e4a1dae8ae46da2b3159876e256ba507d51b265ad8bc2bf81994218d0ed5333894e4c70ccf7867beec51a7274b898ce7de1ae053a2eb65448d02204669cf02c903a98c547863b839c43afff09ed84e4163de8d34cb1aa992afe0889dc9525e09fa2a0d27e5c920cf8a71c00293ab59322e20bb878dc0575923c0e001984584b55010e4d093e9a914aa09afc02c985e663acbbac629b9c5fdb3f97e0d1953ed77beb9557806c68f54a1508554670e2036c3cd37904aa46747f736d51fd4b5e41e98d16e5bb6ad88c5e3a941b3504f48b8350c37e2f415d1ca29bd5f0d505fcde0e3cb4a5abf5563c7eca672ceb91e328b2b248c5fa04d81ab40785876c50d3fa79b47152668b4ab977ad1f2276963111037159b278d04d1b0ce3fb013ddf2cd9f75c9745298859aa476ecec802ebebff76d9c09744e428a5c2c0c18487eb07b1402996667f2e733a6b95d52b46eabdcaea54c626538e46e5d2a846be9f78900dc27cc63faf72b0786ecc98bc0be9df0d73b0e2e4fd745698892b4746e1d3a67db50058a95b9f392a2c14318bbb87d765dbe47cb4f523fa616c8f911fb8c35f8f568fcaaffa2eae418fb37cd0495d74248070392711f16d9a98830d89b6ed883f008e6a5953f91c690f99b9fd255b3d7544fa04b3fd4d42097065348b2e38c642b5b1ecbe1cdf637c4d6a4e7e97d52f210acc4f2cf3b7d4f6809101a5cadaa4aae8507df1b460d3b28d9ad04bc264f63acd759821912a82cf8a817401558608cfff61aa236dc30eba07d9d44e825ee78bf4108ebd16c4f1900a01b4f6fcf7727a61610e2243c127f66c2d4aa8f6b4dc658da540cd36b9e7faf5d3879ac17d25267e48ccc18b5b7bb08475f2e8e23787442b4ae88cc1ee8c9f44fe361baee08044e55f3d280770efc79583e2659c81dffd19edb89ff7982a2fff12d978acf2dbb94ebc81bd4cec7b4fccb0f24fbe4fe4b2a27a47cf9623b07f68c2e68d3075461eae79e2c3e6af0644748a7f704e28bdfe412ac66b953b04b000b91e3157425ce0b2fc5d0723e8e5a77599045d9d1b8c36bc666dba22725d984dd4d8ee16f09ad95cf4956ee2c576acfec5e2705163f9c419f0075ea26a86c54a6be21e22d5d5f6bf386c0303482c7cbb436d8356203470311270f89bb5bfe38f92144bb218bcc0c6bc9e9a534aa786cbf2c564cb0407b1e8887f4d3934c6728693c64322e493c6616f1e1905a5b3805cae33f0d9dbdc702e020edab203e836dd459e4bba1729e89c3f5222bd24e134aee78b793d3452dd71384fed06365e14184f7ee0cf7b0e11e58ec549af95cdf094af1b1042b85987551df4bee5164d154d7d97f82e5a1f1162e36f76f609ac00fbe8c774e3b8d337bb236efe6ad2fbffa2d7b4d2e2b3e49e5805fcd21ec7cc715b9eab46968b6d0a27271d50afd372beeb545289e25f41b2ea17499a54e06e6cece15962f78c5f1369fdafadde850bed06f94f9afdc020349b02d2336c59dbab3bd7dab0a08acdc0206885b580885d7a3776ac024b561e818986471c7714e5530bffc44c55b9b39c583fda64c90a55d00adbe606dcad4e5f25cd8776ff49baec662ad06876c9038d9aa6495bde85f035b267a1d5b6dc491f17d1f6c7dc6a0efaa3e5fa0ea709821a4f84848104d26a7c47538c7faa8b6edaccf9505fd26e27906502e72d8817931b58695023cddd0cd89fdfa208cf070faccb00463183a0d752dcb6967ab2c1abaa51cc6ea5de5543c0ecbe02511f1226e6c7ea478cfc4e2933c4624eff01b8837f03f1d702e7f14a6e379b6f9634bda7ce5a4be3f6d5f138c1287949bdc8c6d24980ac0a92ed40783af3f73d314eb1279cfc2f96ea298f0f808dd2bcbf259f83181a4d0f7fb96aac8001127805b855447f91440e8d8f7e80e7ef011d5400c42665e805b9f0ed9d843e76fc4fe3efcfb7deab888418b43b8cd34f4f229a1c53847bb6e29bd2c3f3f6177f4a525c31a038979e6e384110da231245f593f744cbd92451b5547675284220473b2d98a7080587d462ddd6d76cc359de3c1253be44b72777d8113c9c1c3cb747084f03e1928c83b1da1aa5b97d445bf36023599295004f3d47554610e0490e3f885a3d52a66ab6086a3c5a7e1be80d1e1e896c825a0198059b58fac7e1edb95acc9f07db708582f75e0a3c150a793b1beeaa64f2887ec5691eae4fef15e3c6eb49ca8c32414935998c161eea484ac15bb0f1d3d1c59cc778a5dfd953277183c6b08f55602bd29c673ff87ef2b9416b75fa481da34e9db8102bc9ae08052d2cc9caf74a12f7421991220905dd79a7a0416a37c2ba91f3eaecdb742abe821635ac926d6da76152b7bf065b970074c5ac1449b64c86f3518cf7410624c7c7a13b93867ebedf9a482600d36e7faba150e227946b0992797a9c388ec940df46e831dc2907371884090cd39d7c0f50dcc16efef72ad3c22ac5b3d301c40f27236bd411cd7d3cf103130926ece6e5e39adfafeb07104ce5dbd10673cefe0523aa2d74a8608d88615da105bcc8ca9d94c6aaa3bc4e182b64260266f5966f5ba6edd4d722d30f9b2fda106af4fe54de762facc3f1f8ac0fc291b29cc282745e71c1c6086400f7a5cbf3a54b331271f4a9965a4775b8cea086f4fbd722b2c8976cb7d455bf858d12b9ed89b7e66034b0b8116defd940125784c61fab762ab48346477aa593c978335e8b9d2033275c9f7c9b0dfb427303c91210b416854216e89337ab0a3f9fb9827224b20d11e43091bb874a770838fcb2822cc09f0b6f3a45fbf847ed399acecaec78b748425b2b10e68fadbaeef5a8e0dc32d7d2a498fdecd29b0e55b3d416b4e2a5f96a3c10e14c1d7d20a7bae62c38773a6e347926a55081f7076009672d50e6d8525391a4e5d3f013cc19ebe811fe8114a5af8364d2000b647099deba76e483f9033268f06ad25690cb38620ca3cd4a83902d313662d891fc29bc8656c6dbe12b4880ac5b8426abbc54702451aec028ecbf223158f8e51c7dcd4e2bcbabdf7089e6a5398afdc197739072bada5276ed3135a61c5824a02fb3e9e0203ae43abd03691b1516718f13ae18665581b408531df546585879129bc5bf68950c34c96d649afb054f7112205f41fa8d745661f57e10d829d7cc70fdbec11422ec97a32c71f51f7a467d0e05b31a66a1418bce811749d2357d3f458bcdd72dd8446d23e979e5608c683c671616f47a127323d8c9e61b61e1d454192d519324e7c5eb610c2770e5a94e65e4b9ad690b92b93f37f4bde566e3f5af79b9dbf1050994113364c292f524a033138ada48e862dd79e480d87ba0b81b4c8b412c2141e9331be14ba015bbb6503eef41c30c9fe6b1428911acdab48ad491b5f2348fffe9a5432d502dfecb7f8d4250e378fc724604d81742d864e69dae40c07a4114c60ad3b1ace146b45a9588568f2665aa13cdd98b298c332ce3a3b1465faf1fd9e300d68947f46a092a2e4f7d7f830f0e8e23ec02d4c9631d22cabd246621d50209b9518d479bcb6de02e2c88541676fec59c6ba7b94ccce4882a782627a118a8f6a682bb89d39fc7670562d8aba560c664906e80cabcfb71ad544a61f164a12de14f32417609bf6d9257ebc7f69dec831607da3d6158d5eb743053e23718acd36010118bfd0797fcf973e9ec346b72299fdf378269b708adcc0e6456eb3f9f4978c93657f79a6380c2ddcd9b514791962ace89a25189d3f70566ef8f413ee6b6657a03c03553702e09c6faf5edfaa1dd9d23ddddde621646e68ef305b6b97e7f9b962a8c4c93dc7d821d5d93fef5a225ee44e09e56f1f7cb5fc2b6c6322cc94ee2a07cc0223e013763f7511d655a4523475894f2c7e60b33228be1ca0097f7e8d5cd0ef61f03281ee998f811ed370a7211e64a5fe16266519b241abc0b3dd07ba6251d4531ccd93a3cacd3758f0f077080250ca1f5cdd2449cedfdf2d27c7f7fd2c4ed36bc90165f1f2d9b2868b909c333c74409438c5ee9efb170e0c23fa027a6976a504c7786f7901b2fa58768345d3786427f10036999e9ffb953d17f52f92fbe72c34df257ff8813a6a35ebaf3f89f8c0669b81796766e0f6b274b36ecdf06688ae6405e8eb6060d1c2bdacd8c5675c84817429fdbbcda80281f41dc11f6ed6fcdb3a48da640489e6dba370fd2134cc147eb73d17a0fa28ef644c24cfd9ad4f425532a0e6da579714c2aa145dc55df7a7493216487db8f8890a143b6109c589dce0abae533fc0c9a641fdd5563c673ba39849acb49775f06dabb9c8ef15936366616f1cdc0d8f4e7a9cb3e9fb7e3254439da9881176257405b84dceb1300395fd17ce39652c6ff1e65c8e4f448dca1eda33d206e9a96b0bb202246b8a9a91e6e57b4a3383d637ff1c1c0dea3aad489b2cac0bf9a31ca8e3346cba45e279f2dc42e0a1fee73a4ca571564840fc559625bac5a1cd686d3fee47b473f20f4813e3f0c9dfdc40f52be6ddc627faddb859e1c41b2ef671a951a067412e90d9aa456c4a2cbba7186d889e1275a39b8d82140be3eb36110980b78e3cfb14de0b59fedaaf92e4cd60947abfe7f6c9504e3fdd1e4fd6aefc6f1279e4666726ac278ecc31384577764b0856d4b6c76a4ca10f320e2abb08d90c170bc33416e0ca191024354034165a46f54ed7cca1aebfca4d356b124ad34019b005ac6c92e89568aa82451f2007bc9976932c40176e540ec027ba9dd7b48d48ddb4d70c3d42fa412f46c89fb91a9868a77cc2db32f2a10c8f87b7a00cb3821c580d3c0a1e5c7b3829b24b553d0dc1d484f44fd9f1a6c885237859482819cd6ed2298ff4f0e66a5077baed9d19a355fcf36a86a914095f61ce581ec5e1707733a2629b9f25888cab0931324d1ff0d7bab65c02cc1632c47672fb764df7ae44926be266e7fef7dc4abbffa067b03e42d1cb7677ae0a9097c3042c72a229dc39afb1078e516a7977e5deccb05e4a0bc61e6529b58dbcb7113aa2a28d2606c632d08b9bd44bdcfac5a5c09b082ea6f0e075c3a9832c61c472ae6eff433fdb5231859fd856b3718d41b84df78291c9ca71827558fffa5f1c881433e6715ca03398f646a81a877b5292dfef45152aabe309645a8d514875142be494144b1e0e965b396ce72d7f5649da32f210e0ba8e899bc18e2fa751b5c38452b267f40be87d5ca0538e2bc41c53fe9f609b34bfadd39e1ed51f34f438870950285201a002c1c9cf269b3105f297b3125dddfea44c890b9464dde5bdde9ef9bacce75c7676766887c752a886af7135dc8ba28b8dd45109c8d51a4b24617205ef1451e82d4e9c426273800f8512c3f66776fe00a3593818fcaa2cd5a50b3c5bbf912b1bb903e85cb6ee74085daaaf981b8f3fee72955a05387c7cfe9001b95f2bc817faff514001eb2afe623b895851d88dd69c2165f2cdb02463d17d9c283d6890d4f96ab124d802e48b709ed5c015b3bab05090c30f0fd8fd5f3f6830117303927805d8ed7887def8358e9eb38677784c8bc4074bad3ee444965192c7faac0b3907aeec770946ae38ec4504932678a46f1633e1c46d693f5b99bd69f222fd9650d477900d4df7a0b77590f5da30fb35ab634583795d536d88ca3737351f3f36c1f21595e937d95241fc94dbf407eb770e43216ff952d4ab80fdebff9e09d4610150030024d7d63ad5e92e3674d49983358730bc12e209ccfcce4db1b0fd9dcdfbdd186b3d21058cc1223c7483493ae2f098b497b9f8f1f0f53dcc61ae839825825cce1446f2191906f4d7ed67f4f071ca039e71fa4b3c2c4da8b6e7ca8836d19ab7dc982483f2d860103e26a6179ec0a58a3cfbdc9dcdb95ca088189b12ccb036757adcf31411ebd780e0e30b60d25170250d2950bc8a7bae9b3a3e8556ea173ccd2bcfbd70a4b14625d0d8b72cfc459f09066a2ed9a6fb10ad078b7be6eb1f5608c0b2fb6e4cf8d90a21ec5c0cb6990f32fe46b3fb3ebb73ec7737bd10ff92c10303fa46ed6a1daa54be980217d75cc6db64cf7d765f9d1594b2ae27f921f5601e819d0186c79ae0677c7e99e7a8c0651ebfef3dce9b04792be46f5907fccabe3f6544a6931c99176aa9f2896b4b3ae6306d9149b5d040e0232dda275c222dd6ec13f357bbccfdf51a82e16613611ed0eb06ce8e239428eda40f369623aae1b9ce2b8a7218cb0f7454a79cd7e648a73029ee4f99f226583e64f18d0967b4ca3bbf231edea5d7d454fea834f460b5f713277730df839035f31b428b81dd97b04bb1399990c0964d20a80e6027dfec596c877b67dc6ee7966d411f7b98d0b1084168214d70c51a19a027d768df383f7314ff909c4519690ef3388d727686c1a93d1a29f238303ad91a1ebeae2960653b57c20f18248d705e805b612997053e962356d05301e070c909d0a1a0fafc97f8994d1271109b925acac5cac6361b980c347dde0506b4e856a5f11656ff75baa026c133803928278bdd41eb672f63593b2b98fd391750fa52cb9a0402a88bb1a15714e062a15bcfdb4a0b65453ca9989e4175614baf162a696ca7ea5a498201f1a60fb74a8e44531976ed1a8610dadd7545cac36f16e47ee1eb81a8e29bac4470069222a6752b34d020a7436424bf0064dff734615adf02990654236051a5f973a64e54bd877067887b0f8eec1bc9dbb069c4196744568e5814e5f2ca98d60e3a2c7e59fa3aa78b9aa3659e816c83fa761943b64c231b7adda3d2aaa8afe1e361506a08e062e4c7e8f855709dc761be05ae72317c04aa6ade6fc17eccf5955467cff16bd4736e8c24b17e352b781972738e8269ebdacab38ad9b1c54257ba59759186b118fffc158a1df2b986c210109234477a6bc3a1016eb65e3ecdd6d6022914be2e062511d0d3b0cc800d82108101f4483394e857c5d6bc023da9d21a8c68371ba842070db014703db713e8bde00b883b795b3cba96d50b785f47f183397fdd7af163449764fc5d5472262721ad23f79a3bfcf09f8fbae514b5c141ca0e18389e81a48d4388035ac95c670aa00c3d0e071fc0d08bce558896e2710dd0003313911b6197704201c6785b40e2ad6fc25fc6814e6959120b8e859322ff7ae482aa29dc0e47662682ec5c8098d402043548484db3bbd1faff5fe9d50881c0af7168b5e76a6d8c27f586339b2c297f488f1317b0371d0960bfe8a45951751561b813e23af66f2903e194226a768f82dc21f90cb4cb7a3b7b63b0e23331e04fd044aa7c27ef991dfd3da199db342f9d7f6192a64555739803645ddcbb29cc1604eee7e29543596312a8edfcfd07db32e76070e865940814a89ee997f9957092f6a0b0d1d204fa04aeb400d34ff58e710691a0140f4d681ce4be51fa198e21e3064fb268521de3d8dc0de613ed627d56e0c80ffdd0bddc2aa424074007847903fc04842d83a7fd5f4b5ee0756a49da9bd6ec3947278e759045499d713b81c01b61719aeaea023a4476e3274114ec701de7fbe005ffc3bf5e0313f9f6b1e4ff12d3d07078d78bae1eb644c0f6d12329ff7def6a1cf30417cf748c18ad667bb839d2f4b870f936f314d24c843491470c156610034c1e240907d637b7783e18079e6e8781534518018c2bae5b0c491ac80616fff10e8df68cd7878aea216d776b4024f65f2b4312b3fb2772d481f957f7624f81559b7c86cc59125f167f805bd15611060b384b6e02e45b0b322811e6c65dc2888b39a56817adf79b966f07095a731869229cd48378e8a525eb116769464f461d3c3de9b8ef22a16f55b4a42841104866e5ff51519cf3882004affda8955790f8b69106f9d9dd3f10d1273fcfdfb2e06c29c391ce15bc1f3c4ea1768c2015fc16ff97a085c3431f862fc37e899e4c7d745dce2be6ea4cf7137c05e40851ffc864173e2ab6074655cc58d560cef41eeaf22e62d91fa1ab4a5ee4c8478ca67e13d67321c0be41d38016fb3bfaf14383bd2aded96c35d6a93db8df931c5b9ba7bae53e2e1c4809391fb99a26857ad3b8925dc78285229e171ffb18a6b211bcc1ed3b127814c8e1f125a6225bb2ac70d03a84ce914dc762df490060d7da956a4c31cc400f07fe09cc3d5e4cf60ac128a5038001280038426a139422d149d677b20de3789badf72a6bfb5e5d41d2e970348af4a4de22da74e81587a929364e1d1fb439ae0fc9aa8956f01fab3fde2fb073220076627dac4fbcbc0b1091371afef4cce29ae0a3e57a204a3de53a9fa3ed8b3cfc9afc9688fb3a31505a75f42d285f672de0c3a198ae227014b227490007184f55a238dbf9aa5601c2b671004c2773b6cb753920a93958a7b34d700d23e4376f08286c1d10080e09aed8decec86c361f338acc3a5b6c1a18a97c808f7f8eb7270ff6973357ac5b2231aad01a28c56c3a9b74c2182ad746b21e1ce53acbe1c9fe910dfe6be7a6618852246e71c22c15bd030a5e3c535b3f5f4eefe6963e4950c10b66fee5e6a895f92bbb234c5542abe13713be2d5abc84d3129035f4283e7829caf8bdd9f0e7e486f6c7fd3af6942efd920ee1f58374ff2a75e0aa6f69700c0408c1f4cc46b1404fbc27f42ce14f450eda1cfa22db8bfd0c3d260519642f342acb540f67db618ff2833b6ddcda74f60f4d4e34eff73ba245e224c36a360fea27627c5051c2a2526fa9668b1fdb65be6de10b2a1a1d805411dbcd7ef201c925aa7f4b744105b67598d4c03e43261642bb9b45e2f9032e1d78c2df0cb3130222a88a009bafbae62ff6eca9571e1bc638c14683ebd4ec1ca185eab531e3f7324953e129dd705449ca12e339abcdbc2ff07c53eb8e2cd133c23b6867352aaa14f13e1e04f64acd44ea16f4bb176f57ad996efa0d714fe790b0b1c04baec00687236f75dfeb8f14722b7ca4f28452b2d23e83cee6826fd6ea71518aa3757b082f407c1c98476651317c562f9e8d2feb7599d35a2a0887dbb08db2ac23d22308d5d4d9d8c3acb798c688dc7786689ab76691ca14266c7939057df08ebb3a31133a6cb57fa11346ef0bfd471151ef74dc9a8e35659d275851f18538ed90511d115a5f1fbeb724ffa19cb9d38e3d3c9eebed29301c2aa431e1d6832ae374152a5c39851873120c51679fa502c947caea4a5f59a7cfb8600052403eb5fa4e078c78d02f4796b4e020988c3c4f9d5ef07d31f8794b751c926747503a295a327b485a898de8c06e1f1ba4feabf9d81eb2934c7f2216399c99fa918901eb66a13c8201a939db81ffd6fcddbb722b3ff3631d3742cebcdcd2bb700bd7bbe0afc5ec9244c741f3149b2c46f608a702530244ce645b78bd8ec32a291357281b65db770588cfeb9f41ca0219803c01495d7b870714e8e1ad95c546b1cceb291248aede7f5025119661a75f0804c19b1ffe7d03accddce14b8604cc0e596974d23c0a09cdb27c3ff008b1343f3de097b585438a64eba01590ebe2a2d891eefd63c387cd8a2d0bea47fab8d34cf3ceeaba02ba5a8c399325b03c730321b859a154586f84d96f034a170247b93baef6d7137e23e817e36083d91468c4f9d0c6744b652250af2b03f8ab833207030f473e764fb911141cdd28dd06ebeab226dd514a65d822c7e0d86c962e6cabfaec2889d8a5b5631f5f51d003dd7c1488271f385eecf68c6caa1180216d400466960fc9e182409202b971eeb0a2f85869d64fd0ccc4880ed0b9de4f5a9292c45f9ef819a172e25dd632bdc63a7ddee3f63a691a665b5c43ea971ec1de4b2c800ee006870f3008840dfa090793079b75e8aeb8b9615b55fd7be6a4907da8be03a604b90da81ee29c142b8a70e4695e069a64ab20502c8c3bd783f9294c336f5aad605f0c202050c61708132e1193a0a516d9bc9097b9f98317edf7fd7802b2a1bfe62b044a2fc7486003db026fdafafc0880c79ec61d262319a9569448b17702ca99ad23e030c7ff3293070cc55b9b95f6024bef59bb3c3a5a00082080fbd292975d46b962b46b6c23ff0ab2a8cdc3b11a388e8da60625e08ab8138afc49a4b160fa0984a9307ad243175272b5306ba8b596d1ce1adbe6435faa23734da7e4e05bed6ac35870070bc39dcc6ef2ee475a29bf06801a58501bb8759c23cccb6014a380d445c708a205607ca4cd5478f85d9cb395ace801afba7491974cef6bd0cd2613801eaf52f84da9da8b5dfc33c88b573b0e3c260b6384c30b16dbe85e568103b160a865d14869ad0d0fb52d7251b5d5218f541b418d4a2f989dc494a25bb0315045b041004ae6ea75e398f43a887e1bc60064348f5e0e854fa303939422fb4782a5518b5b287046e6fac1bbbe1713158c2c107053642496896c6acf1b88d466483db8cd018750235ba27add16a76cb003572d184157458b96940d620aca9b28496cca6e7c9600ad6bd26a2dbd222866932be0862ec42966541f09c64ddcb7377bc650e23704ddd42cc7f058bdeb8e7fe5edf6f2f9d86fa51b60fa1725b6aa50533a48b26f8ffe9b3d079f248a6f74bc77377bc0da593ba85131dedae94c2345e428e78c7345b2fa986d6ec214de250902302a717c22324f448ffa73985b0d904c7d8b3040a4989c8901292092f84ba57b2a25dd5f1dc1defed715bea03f3fed474701a2d0db76a7282b88cac1e8cf1ce39e78cd51463fc1b88fe9efb7b7d3fab76677777779d3f7fceeeeeee9edd89dcb1b5eee5b93bde15d1a1eae79efb7b7d3fd77fffbf55ccf18b25c4b6746b9d73ce3967cf9a6aef77dc55bbb55673ceeeeeee9e1da7a3a6f6fe978ee7ee785941982c1ddaf7a22c50df23ac07e6124a645f2f39004e3b52d4d64695ec89106d2479a08b0c83b05c3514b14204ba82057b0a53e4e9a805a6eaf9f48402037d5d5ea2d6ec82800524b14e8e3dabc73a6b9ee33bf69665591144591ae3a2b95626b754215cb3cb7f714dddc23789acde739a7b9acdaef65a0cadf975ef345bbf743c77c75b127b88abfe577a7b3127b22c1ba25914d4beb7704d972bac841927e79c75cff7f67c2b3fef2b6b641a7b5014638d1dbbbb2bf68209226e9766e48d469ce5cf52e6914757b793013102434665ec8cc69e023d811bc605db4c0a653040c6a651d4967a6c81665611bbba5fec9a2e9b14d79c35eea083010a20130cb78819241599d816d87132b5356d66b5d01b3011132befbddfebfb110d8988444522a3dbd255ebe41f6b2e62b1e68c7f2795bc135eb837d7cae48490424ea156e829e40a41855ea1e8d6ff0f6b754e935bc1d7f9cbd16d29723bdd9612b56e4b3f4558a185102b0fd0618719484fa2215b7d75e504038639410c943439d1742106d1d6525107ddeef532c302e2c0f32e8a82a8617fe18c5a6c4bb712c8553b16b12ddd135042269bb8dee7a8e218d6cb3943f960a81f0c3584a19030d4124339618c31c6583b4e7b93ec372ed7cae49e6bbad4e4cf9c73ce4b521ed6fc7a0649e93aea44d5b53c77c7bb4175c3ea86d68d2e1c343882387470f46460666a727757e6eefe633ab92d8dda5334aa9a958bd60bb3cb6d6993c66de9aa3af243059e7c3449d024c162703465810fd74c8a3cd03c77c75b5a0ef3b3101d0021d9197a471c89b800636b838f8607394a6b67bb8a79ee8e972e3d153f63f9779d4071d57b5014215aea5cd3251aee9ab39e9165add97bf801bafcfaa5dbf15a1fb7a53f7b8886546b972e2f9f739612a27abdd5477605c5988c9a4388e070c5922306405c470ba09c59d1d7be09c87006baf7f67c2c0bcd94130295aae2d4900834ac62860a29435a1410a00093126645784c4d38b1823e208316475488419f46136058ecae8a42a012696f26fc95900501b490b77d20633d034044084202764f8bb410607f5d215d1a2d4686b635552e3d6b24906cac30a58039e73c5cb38c29050d823a4ab9c009d5c4127341b489e42a89499c341966416e1034e8559941d105aca9b306a8847e670aac159c5f2c9006a8f5e3b67428460b49f75816dcfbbdbe1f92e17f2f4782bf314a8a39e79cb3ce9e35ce07c8c1ab4d02dc48a3d367e92026c9bec92e3b1f7dd464d7868bb4e6ecb9e76b21a194c2da70ee4089ba4466315b43a752c92c26ea5431a3660b248f86dadba8e7132f513b7828d5a44092bc909bc92c2614ab716ef2c063a0902cf885bb5134d220c4dc781db0a6c923937f81b354b4eb3e3cdfdfdd73ce39e7ec19e3b4abb25d267733f4ecb0ac7316548adfb4345ebffe6f42e6bce37e01183a1e9c4c1e34202eb83357f7e6cd7375cfaedbad24b972a2d5364c39860d54b4ab29080f6cdcab242c0e3cb4c05acb0722b1a5810d118bc8850548c4b260b6027cb17e4450e960c4ea52a169683fa0a4045b1e16141a174865c6c1557a7032f3949220e32034a6c466a24a0d6041600f1cb49da135728445c5c9e43c086966183a4041b860d050aca0018d91a9868183b1e95241e03101430d12f972a96098012a604d915346971cd9d9e2640eb0a64d1924f2cb6b3cc61928e4171dc6bc9826d21f638c31c63a2f2520400192dae5d24680a67779f53280262193880a02d0b53c77c7a331642a7a098053cbd4a300009061646e80a0025294e943c10569c84c468000e7e65a999cb3e834d2983b1e3c70e4746616040a34dea6cdcb84e5b3f942820465b16963428425d69b55142030019d1c20d494864e62840730a047131ce85a9ebbe3d9283aa51ab41c5d675503a66313b001cb92b1a947654538a4b9b0a9d470364945a031a14d6f025292c3122b283390d8dd3d6865867373ad4c2ec6704652c2c99188dddd674cd5644be00cad0762c9360405980d3768c2463e69a84c511a3e1a3cd3482389031dc36943cb4f2e8f0aae21fc81e0ba96e7ee784f449dcae4ee1ea3e4c4b674b7aebad2c9878bef1818c28c6fdc5fb7cb18638cf18b011d3b8a52625a6203d65459e32ac9bb755730acf596cf9a833af018defc487e886a60dab25a6e25c1e94e04363a9a1a5c0091627261b96617dad532eaf315b89f2573ec5c2dc6cff3aa71c595646a45b2c9975ced4f45d4bc9708614f3a54bc8559f2bcc9cb254cd47d82c8128d369b2f6230d1e75188f6809dca774e94dbd2292a2b2d989c2e181d1a08aca95b90b0143183b1dfe4bcdcd07cc74d78e172ad4c6e2f75826b7671e70b8313656184c0200ab0782a89aa216134a35cea44a1f0f89a0651cb14a83011083b1867d83dcdfb896de94e3a19118419a1d3241bd2f830484b46b126785d5d0b63ec05cddb9745ee9a7fb82ccbdee85a14b7deb07639f4b3e6774ddd82ce396723e49af53f87746b69c424831f0bdd960e89b5bddfebfb314750b96bd76f54416cfb4b4825b41a6122488888a712edd30a276609a2d6b04f1ac5788dd3e3b6d467ffb82dc519725b9a73cef983fbfbbb6b2db401618c6bac18bbec0618638c5920b3c618638cdf9fa9dc14b4ff327f77cf5a87f4aafb43c4b674f75ca47ceff7fa7e14086f30204dd0e82c3d93409d462bf3f7816917c21dd967dfcfa9aa4095c76f8bd66d698be756f533d9edb85c2b9373e1aa32994c9644a6fe4bc773773c16426c4b55ad6532d9cb88b8677fb149262c55fb8f6b00555821878c1e2d2984325e95062732b0a078ae10db0f2b2a2b8a2652682658a09314e7110d450571866ce6e33c399100b935939d885ae02046342a1591c18c492525b37d8238d3408d31112db1f1a7298c11a8a03016538a40a3da04c8270929a24964150409d8e48c0aa8517242066cfaf66ee0f77489d16de9f16f4b90ff295cacf70b976b6572cc0c42f6831ac6e2fdddffefbd78dd2c98f4bb2600504d789a191825e5b830e375ab1d886cbfd36d69fb74ffc605fd770b2bc2e176dff926e7160d4236a5474f273dccdefff7fa7e1bacdc966ed0dab4d71a7b1399c6bdb9562657e3d640dddddddd3dab39bbbbbb7b76dcd54a6e813a6e4b7b62803e5a6badb576edeeee31dcfbbdbe9f87d6ddf5efad7b79ee8e6703b579352d68dcff41fdafb3317bb9c123b6a58f44a26cb7835507ad0e5d5aeb9e10c90ffd41a68619159a684fe33ca101eac4668e2a3344151a285265c6751641a9ccb04e1f1dc0174bc4a96aa627ab1b2af982a1db5262f1768151ef0092f7eff5fd36138f216de4f79098f6e7d36da97b7b42b7c6e91d4750b6bbbbacdb52a07048bcb945adf77f3067d7f8ad6be48e26ef3245bd2937b4d63ae79cb3d6ed3c828717eff7c718e376d590137f40bef0d26dcf5ec523b6f3eaae5dddee15cb20482603823c8a618fa5d019cc479bb27f3c9734958a65327b61082327daa565206cd4c9edc770df8220557c4467371f42248f112a34aceec063c73c77c7cb80ca6da995564c065d378fb76e53de7fafefd7642aa60995d634fd1a49dbffc2e55a995c17f1bb8a1c38d16307548d0f9305b1c9aa0935d2dc98ae28ce069698f0b03d8e1805ddc96cc2f52102ba1d0a0da2191356b9428ca2092170413178b0c4870e0526c704ac6953c612acdf5073fcba1dcf6ddd963e5d688cfbe2d75ea28675cff7cb41cc51cc61cc71ec113dc879fba0725b6aa515e3a32bc50fe86da5134d7beff7fa7e40a0405e20512ab646057479995a71ddcb7377bc20418238d18244d55c62423c6c25564dfbabf77b7d3f1d486e4b971ea3c3a9f63baf5f5faa71f07b337974ad39750b108ebc76ed5ab7cc0499ca3539e7cc3ab1d8b346cc1eebfd18bf2bb36658b4cbe48c3cb12dfd232fcbd62fdd916816fb218b600ad1d938587a64aac1d6b077a95fa7ff1915edfad55abf8b2e6932aa83f858074c6be6fb18c82cd7cae4d265121554cf746059132207f97cf5704d97cba8350f57b5421ea6513d1964cdfc58a0e3d936dd6533886c8687d4098c73887c26197a65f8d3242b4fd2f2a42ef7de101398febdbedf11d06de991701f0d6934b1ac7b79ee8e97d493e493f4434b1aaa2521b9bca87f33d3b8e7fe5edf0f8610c610069106a3587351959c7a4fc42353dddf18481e63e9319c3c4694c798728c43f557925ab37695688299f617cfddf16444b92d9dda371954b424d10ba5212524a565b0e77bbd3d5f8b548dd6c9632ce7bdc42e39c1cad60ac5916d07664a36294a968cd5c06e4a2f92d5ec861416c940a16958f0eb6f615cf33b233ad61e81fe9d75ceae29d304ef9a5ddc9d6da9e19a115f2fcbb2383df931cecdb532b934baa64c393e6b76d13a8daa2c3efce35c6323cbb23c44f5bd7dae29d34dd1b5bb4fa9af0deec9ccd53661836903f6bac642966577d224d70ad9bb4c3c4e6b76aea95b80d954a013032703164e50160d207ffa71f1232403e1e286c9c5ce0320740e877f1dcfddf1867c867ef06bfd62e742d13df7f7fa7e4650a3f7fdc8de3abf2f7c6e2f7edcb36721328d87ba88687a6ced6e4473330afebfc6e5d02f5c1192dbd2e5adc8c9dddd959eaa5af5ecb85619026a6ba1a2db52e34de858b3f9207419e203bb5500bc3162d96dde2ede9b1934f646c7be199d373f56d81bad991027436c886393720b3ae2905001c26901bb01191790e47a42a9e2296ac19eb3cc71ca897acc43832584d36d69eb18423c6b390744db04a143b7ab6d16a724c13a70fc7262fcdaf78e55838d01c450a8f57ae7abd732cdd5ed943b47b21d102a507a41032952b9b38302cb505f639c96e15cf3638c1dbb3f63a4baea3c77c73ba259b3cb3ffe47d1a2559c8ae4d4be5450ffcb3cd6aa1264dfee921251ad908736942077743b941d5b31771dc6afd599ab98c6e55a999c0492c3d7c1d477ce40f5068004924eddced5ed5e580b19b29d719b47903cd348d043d821c021c221c6b4e2c9f1758e5d9b78b03feb72ce44964fc4e989443d91292c4106a25d1e4418e1e080e2420d67b40afa45157095f00217d7bd3c77c7830ef53b376c45f0fd8640b12d7d6b4050706f55ae8a8353a4a6c887addb3dd0524a51af5c1bb32f723cd158c77c2bf204a2e063930c152dd83db55aba95132d67c4ed4a98b322e586457472189e041155a4bc51b7a52c503824de8e14f110ed85e4880489c4f9b057a7c4a56cc3b2966e4b9da26e5953525aeb136196ab3e1392d6c5c9b0b40f225ee39cb3122daca40b6fd1e0ada0fe77ecf895f9bbb887db230e28b7ada3daf3bd3d1f3b03b2896911952f44a8dcb45a25f1e96db2637527e8b6542766a7e7b5e3fceff5fd48fc9018228154a2c8dd75f6ac7b1f41d67a48d4c3a21e1a6b46bd9f477b2e31c4b67467bd8d52bcc63d43ef217a4fd17b8cde737c79ad29d8ef019593a8048c1e2c8e0d0800231a0410410582240ad358ca8d011400091bbc5c78ac8c543c1a1046616148480a848181208ca3108081188ea21810834953590be969e5e004b47e714917a511e8f1523eb788e988b43d395cb3b4afb09bef5006610e2b935f8ef59b0b22f783d4c3177569a71ffe22a803524e22a01b8f60f4cdd5b93d7b0cbdf8e64968ee084706972e9258bcd2fce1b8836c7411840404a0b91481202e02bdffb9555fa64992c3ee54d8086dbc7cf1fde05762662e96071357893a130d4812170c5c49ef1b41d8e9e153f803372323cabe58d33eaa605ab1c607bb027a5be0d36c4e43d2b690231617a5a3902234590f2b8df034211b0ff772bb80baeb562246c0526230a045baf4da9a92ba5667c479158ccbc9c1c183e7f682072eaf63048a93420874c7e8e7cd1efde6111be712f9794205ea4acb6059f0bfda661874ede1f4c6c8efd0c1d3807d3e0af904972f88e84e457be96a87edb8f405feef54ca2677402179b27f6f614d2e27d50c6835aac2a7c7fab83b56f23ab41257f38673fd6ee47581a247b7a2e040c646028445388a59b587d48fad701564766e370e95a6831e43f734d8412be5679e1605cb89ac952676b7a7d4ff2220f8404447a894313ebe568c76a27643f19fdab688df4b7edf5f73a4ce0ed491a34c5f1134decad97a8d93a878725e3f05f189fd1c1efc8115f34b35a045e6f08adf231d4e4fa619f4d944503ec447f8d494352254e4097bf0a4044a5b214fcda48780e1b16de921ef3d6b9f4f136e11cc84e88cafcd206acb72d8592d867e75e580c798ad8f209bc51e96d12884668bbd984096ae65e1cb52b756da18a9d544e57590ec19240b88f773b4650a78fb9503ab4bd69b43ce023895f7704b0b8271232bc8465a080030ec1c92035e8002fa35a689bef3b4968db074f2781b158aa3ede24fc4dad18b9c67b338afea48d4fca900f02455022f2b8b3b72bcce4353e313f7868738ac45f43feceae2422b64c232f48f8d438c3b1e401bf27f9daa4d6faab58ce408a99f2829841f6a00a25e12ea3f67b4cf8b50fc06085fe7cdf7e14402458133740951589904f428b23750b79cb45c82c23a77b9f629a6af52205acc895b329015623772f0422107919fca5b7f4b1edc5feb44f826033a19882bbce8451c0a0addf0109261ac511c428d9f58cd3eaa1ba22e53acdbbfc950149a07bb040a74af63fb126a897e48fb43289da03b291fde8b426083cd0a239db005546c780407cf317a24656f34f6e9d60737478e78f4dee44c3b4b90f5638b16aef7b0ffabd431beb482e23d97c58b46f3ba648fe892010badbf0fbb3fb39bd9e963129b5dde24fea5b06554172134e9b178e241616b46f98db01eff18018dfdcb63a60528121794ee9820b6c61b939fdea0ea2bf8f059c1d704a06039617967024ecc162ce621e6634889c1cb1ca9f6def9511d354fe8596188a8b13cd001043a5b9ca47235168d3cc89f4f77afdb53d0fd3cb6ee68d49596693475d647b11e3e754a4eedeb808daedacc655186d46754cf0b1fc6053d3df3c3ae9198a88ed2492e014be228d0e15118c3ba4b222b2f556eebcd1ee2127af9b861bc1297cf7bb6ae76eb4af2a0f55c48792dca8b0f3e8f02ad0f53648c70f6ff1f218ef1d3d9cdee95ce59b8d1c552776aeb8fa28544e2194b736323aeae53dff7dc27169d0ba9cca32826e49a49d333eb5f04ebd0f50560289679b4795930fef0921057a0394a8c8e4002ef1c632d6a22dbb977929cd7f6ee57349c730bc9a35d26f0957a122a01321d26bdfbf72354e3c8a269762ada46110acbc660724e9c02e4b56087407aafaaf6529d1ac96694d609d36e356964b879a7504608384d8335b3a995fd9736837cf1c83ed8c37164264b342d446d929a2c96cc88c1890c9ff6d9584ee7344c06c187a6b42b2d632330652f5bc74c1642453ab6b8446850819bf909f5a6cafc543649b9666d1288a02694100c39f3c8b42c0aa238b82526845b5f5770a4263c1a8af0e8f5ab8964c69379d98b0e885977bda2bf1ac7cd4d1bb78edf609a128d9370e3220ff1b72e4ec64ab021d4349d100dbb61f3b37103c21f46c8af1bcda5d730ff6a63bd1175c34540e52c627adb9853e8385031f6c578cf608780c0da3502cb490fd9bc104926dfde4afafdf53a9bf381a839e424130796aee0c5e82259d87359b1b7a394d4fa4f5a2e6d1a4ebd1af2a7eefec46a13628330e60cd9545cae6e2d8255ef8545f68c5bc67e44ee527ccc96fb601ca3e0b735f113781b9b13dfbd664c2c1b10229ca5bf87cc4bef525638770ebd5051916a1afd79724d98bc1063c3615a0556cf78137cf73cb6ebc7798eb7a14b4b01c40e4ebfef81dd306aa4caadc428bb27204d591fa2c23670a7807beca3902bde6f3cc52a4b9c22d4d1a9b65d681aa127868be90d4a9cf1d8f95365543c747f28315525af384b4d59e728cd70eef92ca6393950961db5cf2f84562ba750268b9469103526da012e7fc16b3b296829a7562670716bfec35c0d23303c7a83ef42501a05e4465c30d3eedcc39f7c31dd656b8667fa2633aed865af4c23418cbae068515103ef7480c844b78c2b28ce5158a0c08caea926588c0cfdba2a98f4c37b8e064b7769339653526ca443840a55b6c7ac9b3bd8617c0c51bbc9478281c84431ac8a6fb940561948f302f27bd46e26b929fc494b28f366f00c4a214077afd8926c3d55c9d2e10f2d02738aa789bae6df6a97f9e69c8dae71e6969e1800994c56b5503f4b8f18aab257211dde924f2cea4a7422f112d28737b218747ea9bdc046266e4ec9e2feb44a32b53deeb6b92ed31fc372b066c57c0375997f2f3c76db90be0eb4d86dab2a2c630dec373b2ec042e8f456c65473bcccf12d5c9c493e6cb4cd303309fdb8aab4ce89664ebf00fd2b92a0d4404f9abb99a91f6baf1e38222b18b28055e8dade4500de6cdd0c285bf5e504da25811b6f5fbfc283ffdd53517d06912a8260d0090c1ce9fe00fb1053dd3147442797ac64d18204b3bfafc9771c49c23709ab896852cf1ad1b537f6dfd71e8d6457b6ea90355a1b82846a0b508f2c9588528fc49ad68e46f27860621dec53fffbe93dba9d25f2b4d08b9818124f82522f0710c637321765a3a662a15d55cc114b70048050a55e385ea0e9211cd714499239e5a166145722b861ebf013607aede3d760d7d5fc022dd3e9baddd88e069800c60c89db1e8f7dce47c4d40148ec739e3c97a5e20ecfd9b5429d4509e509d13eb33b0c7af4f86267b6fb427b7b97a2d6ee417cef3694ba205f440d06076203f50baa9ed05b55345038c8c17b78ad34771ff7230541c8be21f4e82032bc1ba1fd23429bc12253ba82d4e707974e9d5cf57d5647658eb232bc6d8bc9aa93796437bca404a7f86291b0b688489a0f99dc1620dc2bfe87d30c07f73b5042259f309e1ae4f5ef4b9ded3004ae02393f68a2b61d582027e3cc28699a4e2f9e42831d34791a8885a0a70b341c30225918be06f29e3da4245b6c6dda5239d4800deaa1e91cdb8112f8fdcc055a47f3d3b2efe1ca0d288cb0d60e2f1f220f976a2a4c516f3c1e1a817793e4d8e053bd30b7d3e18fdccdb0c89775cd4abeee224a54252d42b704b1275178a5a160e4750529a48b20d73c0e7175b84b11f2d94e119ccee50e41b76304795c6247e30c7b55ec2e31713f5ef74a61ef6d8c374aec7688051ce48b9679aeeb91df1ae0301d471a5d6922e5af770344b8e3f7ddcbc17e41710f75c42d3050a69d8c3b63b0170b08b7ceda0c2f21e83e710efcf685062dad2f47482b491aaa375813d2d780c28a1887fa85768b56a6f1747bd2f8c10d882b57a4d36dae000dfefbba8970b5c92c90275cdfec639b723a073d065b1f0b63e9f8a25a761ba200b6fbeb631d2240fd887fd04346443dd9475f37b7c789ef511bcb431dce851222f250499b9c351437008d52da80b98c6c44d115715a8b80b0191bd4b453b47836caf08909d85de53d6126119d26c3513bf8bf5773b45b3692d9e66e8f4a87c74129e7f70b32cadae7786b07e8f469d314a4a76bf90cc44ea6d305ac8a560d240a32e1625ed6e9855a0a31d240c0a40d2ad353e487872d8d484b1a3cf0a246fa9cccaa61d0080e9094182a44cc8388e343a9b37626a043770638f86b0348b0874dbe6e72f43b82300e05fc1197b2a5d24b6fa1c17ff71ec5c3ed7704b3f5597d65a59a7c3bef1e06bfd0d137f7017230c31c6c33104a2b57faf79abbd080bc0a041a31d713c682b92758ac15cb92a0a69f30fcbcb503f901d358dabb81a273819e9e960daeaf0e79de547167cee35a0b354917511267c8cc96f82edbc6b9e5d02dd0536e6ee6332569f3bac53c4ab556b408b49a90d6ffb42e02f6d911ab0ffc015a889126e2faba872b2a362a7b49aab1e2e461f0aa6afbc22b22afdfc64f445b9191661d1a3596528265b9519521099c047a7c2077fdc709f71b8718a8798fb35b4489fe6ecf55bf2952231153f8eee2cab469cade10c00a7a281fd19418d7f3b027b7667cb7e900a3745ba1238a87e33584b915c7441615e4630b516edd0feeea21f8e2153aff6c42361b504b8e98b3ec1b5ae56782342f4bed9e26aea729fb2c0837afb0b515a7ec38d00567cb7c0ab5946113ad2fb19e755c18f666b9360e8920e77c75963457df47a18798e52c963a27c7c6b750f0873620166cc0124bdc076563ff034af1c6cf318648e1988d7f8505e3320ec28b35b59ba38c79680683e519363800458c23af3ba72d64658dd79eb5ce0719c3d100d9ad85cf509af03a0efa9b35d699c0f1af4f9b6472c40ad8dd9ea9b45fc19eac0cfef732a12c4d92a1fa72bcce82206572fc6125187d39bfb3422c3239ffb012488b6969bccfce23c0f043f6a8f4ba1a98202023008ea3618eef6c4f995c082ca7178dae487973c5abc3730f8474221cb50227b538abdda9c445e3cab6f0ef70cb116d320c1c4c34051bf29b04d48c1c169499aa7ecf09f19b733bba9ce9f6236df1bc2483faa462ebecbed66f2569bab4c2454d61258ea03d3dc4b5cd6aa6b8d2695dedfbf44413f782b09473872e9c44dc6e3ba53f73c15403812b4682f4d9048f432ccd1f5d0f2c46794179657a44e654f8a216e788a82b3db055ac60cd9561c0ed480670832087ff8f32d42a4ecd92e0ba9ef8218fb1d5a55daa463b556fa7e878bf5d012ace016fbe2097c9c1a94ea36de004be84ee89e6c30b853a04b8718b973b9ca12817a0befed18002110e20ef2637e145806f704dd247c52a371cda90234df47b7a4b2461a49bef6ab5b351547d0f0b861469953d343e0a4a07e9e0ae11fba1b0e14df8e86770d2ff3806783e6835e9dc0ce08ed59e95e68cd37a53fd21464ce9bc6b7098db351e5347d3852b6ac24214011f94c8e6cf2e1aec3cf9723f357da5210e445e16dca390ba502ece58817b1375d033c3a6bce66fd417f03f5510043e418dadc2f95da2eeb679ff112b134aac020088cd98f07f182dc71c94627851b0a02240dc779f699e1911c6e857ee6378cb9844838d0e3873f7335a0dc3a8cfa1a133bfe4231f096071d751366fd3f89bbc1635aa4bcfdaa851fe6b124bf9deccb09922a4d6320093cf5c63ee748f5314f29c9f20e8c28b16a513d2b01771ecc0143438a2554988b522a298093e253f194193e194eef4eb54215797aae5a6681a17ca6352df0d3c09cb14553622437e06bec82711a2268aa306b193e139cd2a3ab7a618968a1266e94c034b8370239ec3b0bc2885c9871c2e95ca01cc44f25ba5912ed2614c9e89f0617a0c334f6a8ba435ddfc8fbd2fdd5e94c08297ae8dd80c811285b11f807afad4050a33d34de75e739789b33ddd291fc927bef9bf9d3628c23b212245463273527bb0c0997c72a12fee9364d27021a0c0c4fefd88b4c80376134dad2dc044a1d45b8e65927bc5f80cceee8ddbf8c9080afd2937a534691bffc0774c9a30b9cd06abb86680bf6ccc489dce2c0b179093a4d01300b7deab07c88675069ed985e1822183dd310e56fdafa2703550924522c12bd10c72cd22c5cc3285aa013db32b1fd057582aa683496580344d38e4575852f362b07348770dbd7b227acd128bb7f4a0e221d23b07aac56cd790f2dbf693c89ebe82b7d019a0680ecade64babab7dee99415c5ed8b5a2c05a51137b78f83a41b88c6dcb094c8387e0b71369b7520e5e34bff2ecacf3a12683ffe4d9c5bdedda65dbf9b3c548ef6ff01efd54e00afe83308e2f1355ca4640c86afdf215209d43080754f52ab123ef117ffe19869b97486e09d5edf4b728a94b803a9a0f25eaaeab388d43212a4cf3f5c740d6c9ac1d7e2c93a5c1f283d3acabf72d57e5b6a33e8f04479a48ef4dff90752fadb8beb9116cbc1cf98725c29c2df0cbb1aea4397787d980a3b5b9088a223eae466f0b5a871b45de4850d2cf4ae1023030ac8e6d188c229b642730624dcfa5493880dc4da198b2bc324439337e24477783be3a9e58857c0878e6ec8f65091635810acc3e0d5cae69817b9e20cd59e1d6217e748a5c2630b1c875db0062c9e1e7e2048fc773921ae3c7de02beb401b467f1341782ad0cd0ee09c0e0e5b36f4a64d52181a41c53cae973b30d4c37e9503119c5daeac47a7942173f261c9b6f11304a6332d234396ab7ce859c2454354b81766139135c53940c7dc3fdb670b0b09e03a0cbf5fdaca6b4f22038b8f1490e881be55192fbd4f0c9345ea53d03ee8003443dd3e0b03a9d8600ad44b614b14bbf1bae990cc08e4b91a7ac0d4d0ae280dd5c6a3f8ea054ff2fd5fd436d11d46a909071e53e87d5aa1059ac9467e294ea29ed56ec73dc546c11ce58626c9c1d13a554ea50497d34cb43048d68c23a7474d40343d3387cab4d44365965371680eb02b1923429e0c0c0667d141f72028fd380cfe172def92691e61c9bb637e79e3b8f03980fdeb18a2e5259a47ae49a445467de01f432f3a1895cd1ba4704738cf332b8a220429ddbc4edb5764df040ea5043db2c1c6d1eed46a8bc23b83a06c6c06c3ff88bb97a1cc31125428855270e0f69b510296081c2cd6439e863f739b6e5f5f14adc1389fa298540de83bbe945a6501b059887261c4b43dac2223d4a31ddace7a0b216285a00a610a4401f536f28ef183692355941a088ccf4ad28be77aee215ae721b3c1b3f724a096b6c5c8bc525fc974db41a4e25cb86d27716c12f52983d08db52959a17c830efed8ed9cedf1cf5e46af8600d7efed37a00bee37443a15b619a6bba8d43de2258e9b983a00d1c501d4679904a91479cb70d3ea3edfe2663d1bcbca76b7a09ea29b22312e8bd9d3b7cf4935fe94d197c302b2c5035b88a5de33077786b13c96bcba7ac7f260989e21366c085aacefda5b440a6592cf4c00c80f22e5b2409e15b377c6a0ab68c4fb97506706be2da33f532fd8d520b863b6e8e9726310973a5735ac633f82fd12bb5237144ba1af6531ee243d915b6f98cfe6b036366d2a6c67e70220427e2bc0406de063fcaba16b227f8fb3a86b773a4679a40cacc021fb51cd2604601042992f14ac3393b980020efae9040575948c6ac6fb849298fa0dd9188b3399ca435105af0b456c03bd168581251f47eb149b856e2932b078e81a8f11b63cb64e457363402d35705f50b481b5e65450c0613d94619a912ec33213ff4339c13510bc1506d6890c2264303994391047777306636106a993cd32025318f38d9370b1819a9f120eba24a36a90c2587378709f359de76b827458e5a85ce05014a78033b96e188b3623ade2a4495026c9c733db209039712b213a9dcbf3f92fd88df6a4b5a705223c602d1ae97deb84bd9b10fc36bad8703563a63aa1adbe1d0c39026176e70d523a5e4d30385c80ffd22579221a52c95e577c1e8ef48e49d98a0ed75f3bc996dea3a43cd2b80debba5495f20190dc292569bd11a6a40936f1d21140f43a83e22de381a5fb8095d39cbbd9fe79e2beec5764fdb05e114367feaa2dce6fe5fe9ea3eb9a329e51f16d8ff36a57146240e0864728edad68a156e8bdb66b74b725a4fb1c6f84a42c5c827d6718c3c1c36e6d7fcfa40bf226d97896fe45e4ec236146ae69c715c2e8d01d8adbe8c571f7c68747b3cc784fbb5ac98b57442922b145c2f8add8b1f1ff7433b88f805a103a42db825af93b47d32b10529bf70142ec9ed702559a2dea67f38ae9fea080858c2bee9b9d0af5351833f1e3bb56bf30e256c3b199953242a459ab6c6db7705871f5799c6ed2882e55baa001498ddb9e1a993666759e680ffa49d63e9fd7e63b535ce6eedcc1080451106adb9a46860ae262e9aea98a8e2fe887f428dcdb015626d6469b23354f09448d82199793cc3a399cbe2419392b4bcef434fefafb102d36102d6163b6c64e1184d22a3b081a023369f0da8903acdc08ea21caa869026aa94145d6847a412608f48322a729bd56e0e42b49b351c51ad5c6568df71478b955ff269dbc7140230bad7c44672a089fc974a1fe6634a47bdd78f0aa896159096b1f233941b6ce366e35a277ad7cd3c72ec91cb53e983c92ad1f4b56144f22d5856809d3517d94bf9843b8a8483eeb425830e69e873a559b7e4b3516b3004cf5c4d81b14117c20ea21769cc329a14b7581f82481c68f1e293958f9ba02292352728c50279abc03eaf18ec6db526ca6650ba1568689dc15a2a5f27359242318f9bb4ac8170f32d79e87ed53c5384091675095187a76403017c141643f4a3443db292be4114c15a2b2ea08a16dbecc2d357ebcc4f722d247f062eb9f72c02efc27340a2722677ef3a86145e01fc3c0a78ea7867b2e1546eb0f31a8564a8811ccdc6ceb92dc455c29650817b5f0f094ae6142ac49b40d2bf7d4f0814b3d28408a495a04974de3ff41d1e0550cde58e9a7a0ac83633360694367a0d0e372943d09cab35a8ee50ac34b93cdf14f371834cff83b24e052cc6a90deb2e6a0f10714bd2367d65c57065eaa8625e2f055e5fb36d458f7ed29d89c650e555858727208b4b1bc7242c5c0b00ad6c49642e7888e95018e3c4913b956a20af1a39c19e71ee9dec9b7d7c4be227ce83329de155d8ddecc95dfa96f612994f5150d0d435c68fb7b58ade65789d3a5309450291459781bc1aa5055751650ab2aeaeb169592aa8002d625afdd16751b598fa7dc232df304823398d3a8c964d0a2eec953286c509eb3513c2ef9a3be1a5856fcb982f7545a933bfaa24283052a69aac36225aff1ab63920b7e38294610912ea3875f6adb7f413f1d21b89c20f1354b328251e79e47fcea006cd2611079170c8b73348aa56059e658840981e09ca252934d7989cae93734079e2403117a150caf67b48860c18b482f52e08e76c0c496c75ef9ca8a38796a259a6a90de4fa5167471f195f3002accac58266755e5f20db82de52ce1a5cdb663fa3784102d4377204659b2fc9b62045566a22cdc6599e712268da01c9cab0de424385e8bd4abadbc249a943146f77f013ff288955b1e7b653459f3527c1e5531ad1416671a6162bc27279403b1fd62c2bc8a52cc0a5181014729407e3a16624349c6997871e1ea04b9e8b880932c3bd53013990c3ad435a1189c3f7f3a12325b49564f5c5c70550139c95885a8ddc3b7eb8b2c4627d4c989c18f3459c12ed69b2a4ac93348d5d5e73a4bcaa9809fb4a7353dab7ce8805e330e66c1a5b86637fbeb85461457598714578f3ca22826fbdf5296ed8275d7161f47a834994340c3daf77d60282b5fc3f70bcea314d992c9c5ae3aab26e35d95577ca3aa17a8b493de0d6456a6722996c561658e2ef7a43fa3668bba733d9ea3087d8b728a3e556d8b580752ed430f987901d80b80539efa34e168d3130b0655f946730265dd7bec2e5ee39cdd368e703d744ffbe81c7c47fdbf0efcbb4946189cf46c7b89ace78aa7f6b0cac92c007e37fdeabf07ec0ea1325a7f65185f3274fa802f34542819d453f22bc3f021933e7df426987fb610553b0c63e44e454fe304061358ff0e0d8fbd26bda7b7bf35a9f691f704f65be10d62cb0576265df654d3286d97fabd166a85978caf5641459e8dfc7d5c22f754edf14e2b67ec70d5a0cf94aa5bf1c87c9c6a92042b80a20f283399a7ba46cdd3184d24a7771875c2a153093d91a3d7211eb315d1ead251cba50e018580c20583b871f58ac55b6b06367533b95e1ffdee66a50124fa20a1da02d4234b25620d1d6a468856cdda8eef69d9114b5a42f2bea2dee32a60c2ae0eb6fcbbef17851d174affd62e795d6c12c631077c7da2f569e78f14dc4d911873d00a0ca987917a93e0acefdcabc7d9ffc9d7cd788dd8819f341f24330baff2ecce5104009ca18952525a63f16887d871fa961355a012282e8f5ca52d53bb6c0b76b098be3a6b8234637316c2e9d59c7ccde71630c4940bb6cfa357d6e800ccd2d64cddc3c4ec13184680523d5920d3639935f44d5369abfb7623643d24dc4d4dd1a683ef7b6bf0d367fb265c02cfd918dcf3983c7b399f937cf53880656cd7dde9fbb442b5b931d9a2a35d0e47a3d38ca841eb843f16282552b1798049a31ada95d38b446f2c4ae5092ee144e650b7eba59d1fdb05323a023476220cbda78f82165b8c53a118b49b9704a5d1d1f802f94f7d91cf22b2191cb9d979e744951ab8ece7c480da986520d75a55bc1f65a0b20cfd9f8f9a5cd027e8068e95acd17b13167683ce42d4f35aff42a06e1bfabbb6cf9923055c0ac89ceb37a879a323508fa55ff3ba03751662199bb47d675f6d3b3bb5481718736c0d2c9d1cae0c020b4610ff0ee90738595a55047150cc152adb6d0e64b4e99c7cc7c7123e1c3f26cd39e3a9153a022c52adfe9c5c043b8534928c810dce3fc9057ca01b8d023a1f8a3cb8bd8320b275632e311ad815a56f82ac3556923e02087236431410a8c666beafcd0db8e2112ca914b166f2fae4f39c0fc8de87caf24039aea8c413c95c638dfcc51d01720ad86c1087d42a1d057e8bb125c12404a847a6f3b594d4040b2541be350a48ce0b3cc63ceca120a3d3216657a487c699c3a0065dffd8b8eb8261bb73c669b21b22efef39e4ef9133ff3ab2a72630f9348a81721784953c7f5bf4552c7b13c89d8fd37a985a8e8cfca119ee3e370308c2c0bafa66fc77f5879408032b511178b5585194e60f426429c9e91dbbbd2a0e0f084ebcbfeea4c24a3146b39fe9bfbe237c36a0d2fcc94b1dae9d88b05415eea47ced04114607e93760d832a77fe86fc23d88cc1628c3ec26390604843ece2b41abcb989b9a8368c4fc0953bb02f1291f248e55711dff888db73138cf2b236c57656a7206309c111b65b604dde0339f2ad5e4f61e67e778c15262d48012a38f2d8ba08994ed0258c48b740c91b78fbc421ad6be540a6b62b1adc2a209951b085406203a124640191fab0ae2d82ccdcf3812dadc263d2f5db34d95485d867de3d5cfc30a1a857175dcef1b89236c9c7cdfd33e0584e446e03b69ce9f823c00f12bd3552abced9428159e1099af310555d3fe1995519c41eccee0d6f6048b0b89a89c19cb894dea16fd11ac4ca80b3181f601235821661c859d95e319c66f02feedeed6668d8599abe8560abd5aff12c588ea787427f3308a14697480e214bd0b45a560b0e6632f0a8d549235eb92138d0050d44e2ccff3a1e494af9c3e6a8577ce8c2f13dbd19e64e2c0e318b57168c785d7cebbccecce2335bfb10fcc4ad45ae9ecf3518d7e4989c43809af8ce85d6c66982883169475e55366033f66a73e2ea8d5be1f9e0575b7dcd169a51b544d8bff1de47c7657b83a0754f90350533516ec50315f050f9c26cd6a90664a71899ac5e1740239c2a88692e1602c39b17c82f0b10bc2271997494ebc1cd5b6cf190168418b512fb9907f7c01b0e0cd78d1188f58a46ab0a35d031ddd47b7d91e3b298fba9982d8a1e78902104388d4975653509f9091275a63e64fee44fbc31a6fc4d17c9c790951e4085c510f9143375f76c66bf985b69ac23c8bac93b9f67467a1557a7357daee5be5daad5ebceee9cc6c38df7df1af7d8c1e45c756707f8a21f7cbbe8a7965625788c0dc586030c303983592b09a9135262eb793ac2b9a11092eb1c3e85314f499a4cef4fcaa2c5148af01a5bd1e9200fa5b14aaa84dccbf86dcc453191fb7b78ce2f3873611a4ec040c194498b5218b2e4d3421eba78fd701d32673c78aa847d0169d444e24215fdbc744bbce020218a2960132bbe12f93d676045240ba24462f76ee9e0bd78ebd6b9887b8c994cb571d584580b43b097ad92664fc14bcea8808b5061212435edc4c872da74838916bc9db9b3614b3dd4c964f7ae67ac64e81d8889aef176f484bf31ed847acd89107058a5482b075486c7a13e0bf92041967ed08c4b6c28e9b15caf320b1f49010cd5fde9b733fdc0e9fc3551e8d41578ba7451ece16cccdbbe21066dc9e737c81f22ed2a22f62541443baf45cb533e641c438934097a6f6f3168e39af6e8ce2774ef0f325af4f1014a8e4c8b09a48bc156d9ab7442e090f5bcd1c45a533059429088f18254109240a2532c92f0e4e09272a97c9d5f67a632dc467763839f89c88fc6648615ebc7ccad9dd9f820203b225b90f56dfe89b6cfea8719ea30b3f6f11ac4964216e2ae5aa64c816856bcfe672456c0c17fc9be4fb09ebd8d68443aac93dec4607095c68f12aec3182cd7050b788b26c1359c5d47c33ac91e5b69191405ede365af93fea2a7b9307e69345630912a50d8ba91e5f9803996a03e82ce9235e6f739ecebc7bfa235af60bb2e560e5ad7f7c7d1bf0098380ec098d196d9b8b4e34bf789bd9ca205b309620a628882ac8de56d2c5416c306b124f07641b51d614bfbb669d7d436318959295e31815ec6cbb5439ec09635f4387e21f467dd51cb2c4c16869e224d967f00a0b176bc38b74a78c7b2d2c627ca6a47a6b0414be5bca9dfb12558ed3776a2e0db89ff30d404450e0a42a1df20c2b1663b758faf19bbe357da58c094cc8590e67d59516181cc25fd6a253f7dd182dc8ef9af11c0bd671f4904223311647670b00d1f77b47d0799c81634899a7cad829bbf8c37c0d7a93021e4e653cbd0b9c60870815e2618462d210a1e89859c472e8710037fb1c0c34eda38e446a1d9aa74876f659c65c5eb5fe0eb25865847e6aade83ba7c4a4198ff290799be809aed48312532496d934f7ee4749077b1a12fb6320d4e1423949ca86c06686de3ed29c744decb4940835fd2651c33f8a285346d6ec372801b749274c3220f969e8259f1f0d69e46a702a75035ac6335ef4826e905c1dc4071fe783d2ac8a1230dc9aa3f2bd88bc22b3716699e8608cc98329c558b290ca676ff4f10a30b0a10003e803dd268d6644bb210d30649b2799622af7cf3fc21ca86744a3648309e143420c7f04465d403eeffd0e4272816bf92f36cc0f377f7f713e6230854a35ccb7bc2b5d538a72dea7fcecc86123ae6ffd9e3a86747e110089bbc2db7a07a843f6d727e917e05b993717241a6bb61381922203127e43ebaaef1ef239bac3d940b26881a4add6f2bbab03735ef342bf9086d5977c8180eef5d848a95a0a5a5ca76594480bb67e811a85236289a83a381e15109a720457ab98455fa414ecc0a6c85a86014441034a608a785930561aa5036ef5243099450ffffebc84c73ebbc9956eaf56bdcc378430ff0e00e13e0df0e838cb6ce7094e59775ca7f7c34101677ae51a4f015b17f529b487bad5bb0846d7bd704cd4a4d9924fc8267b6fb9a594522699640aef07f6064807dddbe0bad5a3b8eea66f70cf0ba4e16e6e542b70dd6ac5bd0eae7b120a5c8742611bd7695a0e0ec7254d1c0ca771b3e3d79f7575eb4de5542b12eab25fadaf5cbfb68f66b061c3860dbbbbb91702e2757136e4d3b79e614ecc349d9b9bd5ea511a0e3c6efc0e071eb7bef6ddcdb5aef5129b21fe91cacd8f980dd78daf539f524d43a1febb55bd5ee3ba9b97c5eba7655d5bbcf2baf2d139e70b5a8d8fb1f1f605cd440198060e3a6ee91bfb517a6bab96a5a3d65aadb7b55ad666fa2bf5a6c64ad67eadd56e4adafd71cceccfa06462de47c76040e8b5cf9d73e3af4e27077bd2c3645afd1b9b0ea4e9576da78d346d8d6dab5fdab857597d537dd44c95d96e6ee5baebe9eb3caea32854af56b7d3b989978d19ead387dfe45a78d9ed49eb7d40257d1fe7613c1bfa194ac51ec6dbe14bdfd145719cc492d783e21e769bdaed5aca959de21e2f700dbc30182871bbf975d5d7ad7f7a65bbd3ddfaaa1aa7e515031d13c3f22384c3cdad5f006f211daee987a157964e77bab293917a6bb59ba51209f66ffa6da9cdbe5e1b0ea86b3b69d5477339f8b56c451c7ad5275bff84cd502b2793d03a225da23af5da8468f6bbeb9e86344efdc9ac607fbd637f3dd17eb8565bad8d2de7d6e7447f9a6ce0e7e751a1db9109e3d64bb93130304fdecef5f508fd69030c67e2babef5daacb5f1aab5c90698dcfa437eeaa3229f6f755ab7ce6fb47f41ca1db10ff38ed920df7efc4e7ead5cf7eac555aea39c92ee24172bcc578e8b305fb7ee45b931764a600df461de475fd6d29f6f6b98166737cec6fcf856e5ba20f6ab0df6eb0f691cebaffa1767d58d6f8df9ee45b9160c36c3f5953b521fe64f980dd7bbd6b2319c654fd6932c6b596b49a1b9bd4b29a574c2705c356dd99736f93ea0a6556e48af2286fdf5d5f69ddf2969ab7e8dec09ed88fdebadaf4fde4ee462fb32977ad5ef94c057dffa8721e0aa4f39cb7ee56cd08f3febc7b7be632e93cb9cd094c06b5da48d7b00f3b1cd7b0093eb94c06c8b1f83cd60fd918b9b2f83d9705debdf93b763d59fdc9027758b975e5a190b62e5052d7e9d75ef5e9c0d06f863af007f8c6b72ebd6d15bfd75f5e37cfa5b6eddf8d2cd07f4214f3a884937994c5e136f2b0391ed999785b880220b1421d4651b40b1c41151aebd3c0509c0f88991e28b8e1245ca900f10d7ba3cb483511a3c3c5145d1101ec801104129e0728410971e6e7659a88b2f7a5678e25e38f0e962872ec688527435cd7b276a873b2e0ffd000957bb3ce4c5105da2f7a4e01bce1da8ec506587257660c10e51ec9025420821845076fc0187943c1cc5c083979e187c7e628c7246ee4097543cea00113a004607ba74e08b139f184b0e250824a22432d3184229ba13e9c1a869b88723da8317eda707f5f3f33f5156f6c90f3f42f8200c2892cb84488a961c2959328517212755a8a427b8a209695cf15141119c28411750b29055ccb490a32144370c99220d2c47514a4a9d0551b60b4891089191a222469e74c6830f45514a2a8de881111554406101b55d1c49f4349cf021a26431824aa908b650e183193d4894a0a00312d92d483909c99223254b8888c289c8e24460e1446881104208bbdb218410429725387526e46808d10d4380849a86818628109106b405f53f5cc50bbabbbbddddddbd3deef064664a8c089191a222465200d4347c252886146071f7eeb6de2e671931f14252b4e448c9929f2853a63fe91f4070dbddbbbbbbdb5bea6084d9238c8e383ac28b94299c3cd18314294838c982c7796005102dbbbb6d5b1f776f9fd107986c6b4ad330d095889232cb4c9c150995a0eeee76771d5840851c0d21ba6108125a90e0820411900003892e435081810da0184288248cf001173a90ddad0312a69e44888c1415317285057d258a2b59b42b58a0ae68f9959452870fc0c824ba24f1a58a4f152852b69452ca96ddddedeeeeeeed696891089191a22246948842892c4a60a1841625b83869d9ddddeeeeeede2ea4cfa0d2854c216a1ade5214c314a369dd494fe8e0ed2de717588444888c14153142021f12402181141250f941f5e04410bcd8e28c21cce0e91d5871032cb7dddd76777777cbb8c5d4488a961c2959c2c40f13519898c204108a892bbf0a7a3db2b5f8ec7702304ed0e5045f7a4022020f60e1c10d8a7a86682d46d322913f7cf1d2450c1e10a1082e4ee0f1d6c175b7820aa0ebde3ed4734595d2344ca56328a20a4a0a1334a0410854942ea751b068c92c087ac81082e534882b4104696428c1aa400451a7434cf1c1b004911d1d116308624b15540c407889c214c30f4538a04de4f403465c58d84f88142852a46836584210ac10421d8310439ae98a86651891a2ac1042b943941f082184107a7bbb43082184d0a180104208217458c6191449d19223254ba8f802448df004661239325254c4484f143db14740259548961c295942a918c3e7fa77d3404687220ae968824cd2286408d10d43a830c2d1f58fb13a19420e4da13eeae9e929e209274264a4a888112abc2c81e59a1145068b9c76169fa3eb37b8246d2345458c5081c6968e5c48fa28154088510742a046b8eede2edb0c204449a9f8c2e8ba174d0a008c30c2155ec8c04b1421b6e8401868c4e950dcf40072614948c4485111233f00011121b416c29845ed16523484e886213e5c8134fcc30e668c36b60cb4298d14153102254bd330165206285aa49c160a0f657c51c21967e0a00c26b416926bd9ddddeeeeeedede4310362485972e625cf0a509f3e7a703567a604a942bf65044a5bad3273d4f3081853238310a6aa71ed802699862a132f4f004a129c3cf96a91f58fa72fbdbe403e576eae766f34b4759e9487b190c487c12e9a309861483ba98715e8d5eb90ca846e968e37b749404eda2b421c34cbe5be3925cc3c6c59c532d28ed3b791ecb31113ff503732c2e03aa1950fc79243e4c613fa49cc168e0fb1897c660c2edefb22bb79f1b0df93650efe384f2f83bd178546f4a78d1b0d0c28ecf99b151e33bdee2f39e4acf35a7d3c37e9cb87724b7f44aef754708dfe68e05d1ae3b06e435f13678539bc634d9fb66e587f2a05eb5fd683ca88c48f6325bc48268979491b818b7be366a98b4ad44c612ba6c325b6a43bd3471242ee3e4f6e67c329b3b9229612c1d515ae5b7bd21a7bc4eaa5bbfd3f124af9a94ad48305ed66217328801794dc89f8c93fae19515a99fdbfd8f7132205ef5b3f65dbdfc9d75f93b5bdf7aecbb558c007a4851c50b976700ac2f05109233856e7662869ecd0db8a6bf6be1f2c5ac5c6f7df1c1fa523a8357fd25131453098ddb2fc4b483d00d86fabb4b4726e926ff61fad2518c2f4d50e2c080c42f71ec42f7f7c6e6384a6394c8e09afe6c2b2d816bba4bc9cbedb77a6ebf356d516e7f0e0cc86b627bd76e3e170763e59ac718d03cb65e80b20bf01ffb2123d7add4a569fa1f0b421f03426fe9886bfaa50ab4d73ed6db1e1e8b02bfce24cfa5c472cd8631a0792c6b810b2d7621fe86fd90df4c137fc38250871d29a7c27eccb77456cb5e14a3946694a4954c30f41443a90ca53394522aa35348693f4adf8caa6836a94cbcc98ccf084ab076fb1c386ec7dccc7d4365a3460a35231373823195ba1bbae6a40cbbac55e994d1617333373333733337b77d0e1c3754366a701993d70436cc90ede7ddb01b42f8b8eeee7ec85ded7a77c3ee6ed8b01b367733a361ad5cc2d9995d2ed1eeeed11ffa60eddb1a7ad6209bdda35f2b67e00721c70b239c93d28acdc01cbd303a01d94808a72efbbda7419a0e455a829939c39c2f18a5f8930cbdf80e8642b8ffdc6a555640e56148e392324ff910429494912daee16faf9e02c874c22248d3744b1f69ef57fe72065d7e28440fe69a7e28662d1b82e338a4a1574edda55328218490e9d6711597a5cb76f8e03f9bd72305ea2e9db66cf7c1f3e6682348df777bc965aee9223a6cae8f6bf8b5d8e1d05b4a8fcdc26ac535dcd21b1ea057fc4e43cb1f5cc34fbb217497fe0e00a177295cb644324a14fa735894720d77d71c1a89061ede0edb9fe41bd5f99b5ed374f9f935aee16f8d6ba494d11936e9553a2d156cc9c3b5c969249d1dbd8a1aa9dd25d4487dc17e2e2fd6a68d55333fc66ac01734f898593a63ddd9e39a02d77c8e1a49ce5c93820cbbfda2efa439ec190967a4937ed715ee688ff2a449d8ae0369e00da47129614b14f4cd7bef3da6327c49e9b09939660ed3cccc50ebd26b2ebdf2ee2dbd6a2c7ad54b402a979f7695cb2f395393a13dd6d181dfde2ddf120f0a182dbb1d973936b5d65dba187387b0e55be6ad9bb6e4d7b01fdc0d63fb75d1fe9dacaed279c2205cc34fdda5d32925840ea5f4e8ddee6348ebe6a00bf16e49a594dcd15077e9b4a594afe7bfa79c133578232537f5ff1c0c1b36a4bd7a10420857d4a58c971f6c32b4f7f2218430d2383784dcdbf709b4975d7efe8b6b1e6f40de75e61a0aff69af9219e51afe0767607c4560e8e8b4ce12a8473d84e191139393fa4e152f8d83309fbd6d99c95f31bf9bf9b8c78d1af770d585d9c33cec2bdf4a18956333ccc99d3a47d534f0d438aa5e755f55e39c1ebe66e2ba26d7f4d9d6e9b8993ce5002f8cca4aaecb7ee6b12d734283796b6130989af9723b6134f085e12a3643a9341f8342836fb11fa67f1890ec65de07346da8cf745c99f7d12796f98e569919191546035f19ce4acccf9813a7a3571af780424be2b73ff30b43711e86ebe45f3fb74edbde356d8fd1d2c677665bd7e4666f2dd95df79a7c9a135effcb28307926af31d0c11692bdb950cee93ea74f9fde9bdb7e8f514a6c8ff108c20821379faf0042b8c57c578688d0834751c214685c0182255ef0a47f70211a495cd8040a2fb4d8c28328aee839014f7b2145103d88520481826bba2c451053d2e096f01f05985cff1a4de28380651efd96fd2b3eccf55fafb76cedac4e51d1962d44449687ac55bf6233b0f0d7a31a879f1d0c157b187e746da85ef153ec87e554bde2d78139efa706cc332c3d4353cc5bfb7ebac6339c91493d43d45b2b638c4a98700b314ad9e57600f82bb6b0c3c3783bf2af16668d0d3bb81aaeeb4b93b15167e52477244a7630fccbed68a4f495f4b5717a18b485997d77f9d1a52f23d511021a227a1fb9eee6d6ef98083b324e49dfc71d89cf29e91b8f8a82b65c21021a9a22446b883fadba635aae6e1d003889e375a8f02b76306a9e5acfc27659342ba480c296a3dad47000b0b019ae3f626bbeeac04c7b86b15fb26fb29c0d170300aef34b6b64048a31c628b94a7fc7f6be051658b8f15d83ebe80cd769a497e13ad4e9535cf09e9ef9f4d766f2691aecad8d9b2626f5938282f97cd7f43ea069e38b63eb72dc2e0322dd2e03ea322c9d094a57fad2997ee832185ced7d74968a52cab2c829893772366ad03e7ee472881a7792965edd44bba06570394b0f35164dd45b9a0b7596e2cea6428696220a1a6270807ea20597638626161591432122bdedabaf530977ac56eeb065783b2a2e34bc9d197480b733b13c9bfe2c41439763828491debe3a5dc7bf8ae8d9a8b65071793b0e85cbed9f41138b9506afe0f7abb65011bd9d5217dbf30389839ddd01c618dd42ac06784f27d3f3fb68263d7784f4dabf779245a2110b42e2545ac450282b59de8ef5e5d9604143abc1c572fb3309a38586f545e550e4cc66263327fa31a457e65b06aead9b757dcbe1cecd2f89e19b5bf7dc1e942edfa7a49d96f2c1b31d373a2c34641fd74aa3ccf5eecef62477caeb9c8c1584de2e03777247e44b29e79472729dbc9d942653294b62f996c12927693a0946e9d69d395cbf53a65ace1d998f42c56845f5a46cb3927a18a5b5d7d63ca899f97866646810da16a86f2d0edcc959554da5a49cd3519f6d56aeb756b59259b93e5e2faf7a5d5946b38c52afd6e554cb1efedbb29b6d49ae356db0a575b32d876b625eb984eeeea69b6d12d03e3e671e3d0729dbb23285eba4d27199dff6ae85dc9dbd9b556b5d2e49a48c944592c7cee2bf2dbea665d55a974b929cf3b5b367534e7b019139948b245363c37135b8637d611b20b847cc0d1ccadb89195a2186538079369d7ac2356db32acf26dbfa4e9929d12d4ddeed5be90c189328d1ee0f37f524f533a77097379a3827f57363cae958e8cd2932d74e3157c40c61959ab88e6a1cca9237deac4ae39c4cdf32dfaf9d3614afb42ce8f6b766e466275e692fa33d4af3130e3d1d467955ab3dcbb22c8313deec0aec393ddbfa665760cea5314d86ca4a30caf9ae9457b6f1cd929436cb925446c7b20b756549f88451a25436b3be554835d4e6c384f64e9e07f5d7f6f33c28cee77a27cf73714cb8bfc9b5cda4f9f3d55ec37e689c8ee69a3bc7e3a6bbd1b209a394b1bc6e3ef5adb7a492172794c7c7c9f3f838d1784a67b00bfda532580003e89f5802284fe54a47ec42bf5401bfcea6c47ecc9732fae617ceb62ccb99c6f4d76632e170ddcaf5daf5160ba299dc04a3ac96c582b86579613523f9dc71c34343bdf5dd4a87857888df3b6a43314d89c6b4695b37e46a3fb351a6297d6a2ba18c5ced9fa9b4e46aff4aa42f69abd284d15ed5d2f846d3d6c92e03177e9366b429e1d3718a49e294f045d14c30098c50c28db6164b2fbed251ea89c7cbdfc94953506185d50e1e5cc510633183fa8eb3a47ed8a69ff9addc1a66ae327f79a7bc9e81556426177247e6bf171bbe6e276d5664643e6e49a215949581d0a7bcaa8573660fce6cc2eb99731d0664bee94d5bc70466b3827aebaaf65442bd0985b228eb2e3120ae4d9f1fb11f24d7e624f9cc3e4af9f192dbbbc0a516b6495e496db31235702977243e49c6c88f90f4156872a37c5c2323eafbca8332f32949a4247edf6dc24aea499b15d5c7d467a9f7942ac267d54cd604aadb00f619104a66263523839a7ee77b2b8de353c97459ab624dc86982b9f8df95cfcf4035b3a2d56bc53915ccec76c69d622ee61ef0bb28e7657a9d52b8dca970f9bb154e5c03ce8273c03ad8c9f11d6b612e38e606b7bf8331431c0383fd4ec78e140c32cf5da47c602fee062ff4c67e74dc4a5db8a67f6ea532dee684fb6cb21d78b8fd386ef8c0385912bceacf3c50e5034ab89c3ea74fcf3208a10d9437be571303734aa1369977ec47132593462a7931f540ce85c891b624a5258cc136fd1203426fe426bf492fdcf8463965ae20268245d0a883e1ba9cf057373cee133348064baf008ac982cb53c8a174121ae95e5b8c90a927cacf8d36c6085d534fc90bcc893cbe01f8b22b3003f2c7fddab72c0392c9806837c46085d88fe9db2565748f573ba1a5369fd4ab3e66e8ea4a473153806eff14ba72fbb110dd98a0a10b14838515fbd37e661fdab7aa4d9bd9545afac7e354442aa21494cec9aa344d0b66b6ac4ad3f43750154fce2b5e47e4a3b6ec059915a6e94f6534680288fc0c069c5d8139f52d182eabba5de9a896be948e3abec47e685f3a22994a4759a691b2127c3bafcdbade38f2f2adc238e9d54e6834f563b3209967ade6d73cd26ba45c72494821b52edf66ad150b42e5b52c0b0b422f5511d4763add88c365adc58250bf76beb5c0b5b826fe85fd90171684c26ba152a69f3b000c03e25706168605a1262a5e4c526eff4ba12e2c064bcd2a970165407762995048ae8b81c16d2cb7d3a650c9682b798134556e9765b9fd9db56557204dd37459141996db9fda8052509aa69dd0ba0cc8090d835cea67061a0cfd440c16ee114b4730c7b2e5523fa99fc82523ee21533f42978425a0f2585ca92109fb31db4269a6ab6e8fc74b47250c08774b47a5ab6ecce31b5f0b9926be090b02d30f72a0b5927c6bbaa415eba1f571b3f2a3f1589f6d567e503cd64f21981333340473ec37d56e9701d5ad014cd39fa1e0fd70fb4d5198b8964b7d60881098f376986d3ad2ed523f242b55f0aa9fb4592b6c16568b47042dd534ec06cd62b116e79b8da269fa49d80fc9592c43dafbce62b9fd76075609554ae3d028754acb2959321331d1f55516741985262526afc907400c9cb9b5054d0460295e0bb771aedb6c6cd3afe3c265a1070aef9f7642a970686f47068bab32e0501d8000b7bffb29075f80109e2c5455411980704dff6927003c6a58a1fff5ab80700f1564783b3a6a80e185dbdf352aff8fd7d67fffeefd81f8cff97ac22ba3ad1263749a18bd728f0710a3bb9431f230bbd035b931ba9431468f2e2593e9510acb3a3a8e2fb6bbe964d3c5dc0ed5a162aeff3b72e21affcee6360c004e38c0986a6022602aed3049a0a4b5509a804662414342ca684814c8b0559604bb56c02a7059152e25d64ac15ac0aa3aac1c2a45a15e804e8e2e99729b1890b1fb2b331073708fe8376ac07178dffe1b14f52aee11bf29f42a0373f08a478d0a17252300d40e142905148adab7116563a4717acc814d698c29142ac6f73721a907def0a590246931989be6a1be944c6df43028eb94d023dd31312b372f90c147af5a8846979052cba18ed40d239465c484839d49b806c975410b5ace4f187950870b7930128357fdd48cdb4f803eb75f136e2f2109f7e83090bc9dfe72cbb86dc4e4db685a6d54a77cd8f482274d83d248d5aba65d9e97db4651726d746124286b542b8706eb9606988384b90ee51b12c660c2eb813a5c23ea5b83f103726dd44656fc5964fbe4037f0d69f42ad9abc5526850b3b01f0ca1cf663969b5ec85d959d2d142005eb87936dd2300285c7edf3a07bc6ad85edcfed75cdcfe00708fc601d7f43716cf660867083a5c5ce82e6e7f67737907ad83db3df4de107cef514c2b49b855c88147e7943de2db6176b6f1d7a4bf8621005ef95a470dfb21df9a2e9813a4749e623aa68a6a94b3ad682d8a8c62accc76ab50ea7ad8835c0f7d6103bc32c2205cd9439a09267e930885721061992fe6193c012317304aa1f177b3e8bed762f9594717836efb742f0d37e365d7337a3bdab379cfef8b47c67b49601cfff70373acb712f6cff5d1fe761e18f4edbca3ebedbc2ecfe6ed3c2f26eef19ac035efb1bffc7a12d7f5cdb823541f81f17620d1d1db815ababc1db8e5bd26700ff803ae793b90cbb3798f81a1a56197fbf8bea0c97fd0bde5fbe659b80816b9d050afb0b8cfb30869cc34f2f9480fae0f88dc068e83fb7eeec0b9dca2fb1e6af12deef32beefbf7f007dcc36bc035efed789667f35e4b16f77dd72f3293297fccce85ee7be6c831908eb18ea05eefbdbbd77f75d37ad5ae6933becb934f8c16fdf7d5aad1ab3be79c9ffcfb35147ccf4afc1725705dcfe43581d075e0d5d38073bf17108137468a8a84003e85900a0f17ba6422fa80ca97232831bb1882095b50d14248d110a21bcc10c10a4ab0041144d15028c1911862780e1128414b17f1c6104634d04265441142a08415d4c61421840008a15a83089191a2224700c108319ec05249786104163e7344174630016584140d21ba61081e183125c214b185113a2001d384140d21baa14a1653bca096089191a22240369822034b48d110a21bb24cb9322b11222345458690620a08a690a2214437104183229e4006f523a028e20749989004588a10a2e24411556e92d039c4eeee77954420f029600025f142aefb35f42827bd56e0f6b9fcef09bcf3a43c9bfeee318171743cff338377de9467d33fc5cbe57f64b018bcf3a83c9b7e2a63a8f0dd4bc265a0f7c5652cccacf38a80aa5cfe3702def12174c42322cb1382713ef082f0e13de951f17380776e6ed2b8fc18e01c7887c7b3e9e7918427c03b3a3a635c4ec20e0ccfa6bfe007f0ce3f102ebf031867e6f919c03b3a7428806de09dd54a8b2b76ec102200ef689d012eff0b8c737a7e1c0e00e3c03cbf0defa09e4d3f0ac7c4c2ebb85d8e7eecbbd23531cef5d7652f777dc4e5ef11f0ceabf26cfa1b680a11bcf3ae18c138f43fc03b6f89672304e3d4e7f6e1f2bf2a6fe779a1f955952b6fe77d595d794e9e5c7e342b6b6d5de97c410fce39219c935a9502996f2d7704be95f2769e9727a5ff51793bdd43e5edb48f9307e4855a5e6afba0420a3a50e871e2e3039d3d16ad56a5766e5608cc792b609a7e1848e1a5fb5f90171f6fe77da9ed3361a5dcf63970c0c901f83d67d7e4567af376de170b61806101727b2fa851a7652bb5f6bdb538fa73abbf63c74c396aa634e9d631b9b6d2176435b11ef6c372d6cf8dbe0fe8a3aded08fda9bd9df7c5a25432a698130ca4ff823a5eaff2057de7dfbda078abedfc56aea340a8893b025f7e69eb82f8edbc2ff6bbc7a77ffa7d79af678a2cdab6007e2fe07eec5571fbaf3783dbdf3e0f8afb847b3c17f4cfdb792c785808a95cf7acb82d83db3e2fa87120ac96d2b7f062ccfa1764b92e5e6ad5f806bca35c46a1c9eaad008496ef978e6c427b491ed53cb6c727e013961b67e33e070e7e958d1a29d48c4ccc09c654e2b4cbfdfc9e6197b52a9d323a6cfe8de3384f824dddb0be43b14cfdae449216a510b6d0b7df75f0cec491820ee4bad4edb41bb7ff51f89aa6fd606753f99eefe3a293b807fce61a7f6f273d0a47605947a72abafd9687843173286cb3828a48c714aa5b0a0af6237babbde953519a94737dcc7163fcc73db887fcf890673807f5317bd2664b5b2a4aa77e9ed04a33a4a058a98fc291a3beacb55a177d86f92ea0dfa8744cdb286ae9d0cc000000008316000018100887c482d13ccf621065bd0314000d628e56606a3c154723518ea3200ca2186388318600400032c6284376340f6a0c9159e26f958c8946352a6e85ad78282bd7892d08c3b94dc0eb68bbcfa18f7ab0ac6b54116163494bc300cd1960aef1122963a0f595e73f328844a58bcb84bf27f25e658b76607bb3231827bf0660eb844b6d74d48b946712c6398c0c87452c67fdb7b428f9e441c9a662c7a4d915d097fe7902ddcad22439f8952351ff83cb09ddf4f690be4aef885d0143ce2e712f28131ceaf10d0ac88d1045e58e270cf814ded1d5ffa713a431aac9a3efba2bc2e6bbe4425e2e0798acf0ae2f505311fa680cb9de5c1ff5ba7328327116f8c9a77f30124ead38b315ad56fa19f4246ea8da2d532e822c2ce7bb434dd62d91e86a11305e42464e244bbfe5b6141797aaedb7e19c33f3e52f7cc27721875d93208585b0ccf076fb5b02ef7d470a4d7b0cae2d2cea64e2d9044402242226d60c56c005c4f6a2f32c26a93f7fafe180bb206e9090b46bff491a319395b400f02c697d8c0d08104913ef01d18b940ca7981c6049248bdbdc3278a94336afafaca3d2aba9f306a441e8b5d3e0c689e36db4249370db974ca294815cc393a581f41285429d15c6e8302a6de14f70850e0df20cfe6557481276aba7a64ba848012893fb4643c6c36510916013c9ecd27463309cbc0c8eca1dbe1845109452913de6b97f57bbdfa2d12b1f8f738226f2eb2a1ef645bdf04d2f9940b6f1b8ec0b3e111ffb5a7680f622492d22f59f7d168302da1374946992a901682ff5a0c8b4f93ae280f68bac69afefa26aefbc085327693a0f4832b7a873442440642f1516687f00de4658885e2a4b5cd45c528913ffa175863cd0dee4f8dfad5b229959f34aa37610f1f535bab19079f4fba39a13642b25b81a488003df64380cfe9a87318ae164205e9cbf254b68fba59fc825b8a53a659c7ce8a2665371a59589863d3007a1247ac635092c08cd9769598714b023951ec6613913f10253f85823f348211654ebc9199623115c318d07e319de09b440a89ebcc338a41cb0b688fe3c9330870605cd18efeb04f046256d0f87c6fc956210802bde3f677a7bd891da947d489430cec00f6a6becc954cfa1ed2790e36b056571cbcd4fc1d6fab4271b82f3087cb2ac7c2aabb7cc57e0a8867f0cb36fb365952ef55751b63265d1f44a2b78bbc2e606ee60c2c2f28a46f979fe389454a36bbee630995ff90cee3286592a153d53858a58320449405e36a3f89c787a2d80e99c33ada0d01d47166d76c63a1ac78d412d7b876da89486becba68ec5cade0309bbc382fd0f6963a4dcce756a6ceaad8cb18fe699d45ce69526fdf89ac84b363668ea546a5c3d80097e0641ed3300bf1a2b39b67d133960d285414bef3b786cb60afa4fd050d637100d689761f3df8379fa9591185fc06f360855983d3e75643c245169336fac3560025346d1298c6a567143e31cc9005c8549e4f50ce3860fe4b3fdb81cc18e5b12c90431ae0e6d115152ab99788040e381a9ef9b0deb4cd04c287dbf20abae17a2a0651ebedba186df9b56886f7da5ade0e5ab1801e6b70524db28b6c5e00b5515de748fff1314f3fc4c5b6d19b4077eae8850876e471f69b3b0cdd339524050749aac9b2bf3aeb42b9f88e68015c87bf98d82c5289e27af1c288f93089e2bb9f2a41877c64d6f19e7dac398ea3102a325422a3797da266fb5625a7a493628a85781621e14be1d05ae5d9976f3c474bc763a1b3fba794e5076ff909a671451764a3e842c0db42afa02d1d67185c1fea1d24ad381470b07ae531eeda9bc854a4cfb06d6a8489ba089399ec66bf27f4d3595961bd2608c21a2fb415223148a3f3e734f1a649d8914ce360c9553de7122c365fe605484b9f09c15342d44962bbdafde2a74f91a46d8d0f47b968fd2bb813a14ba2f3101a2442e6489bb2fa3851ffa8d186820d6af0a489a56ca776231d93f0f2a1821e005112b27ea541e6050a3b05d2cd61eb2fcf508a99bb5cc8a7865f5783f575c64b82af0ed03fdbd762e7628e4ce419369e4c141d20b80a2577ce5895f304d9b5becd42f5ca0ae4b05f4a4011889aef61a4c572145645f6d09ac5ab55c2af2e7cf08599d13148231c235dffca91faafb0cfbcb5ba96eeef5eea02777669eeaf40a808c8cdcca97561dbc5a91250cded331a11152938876d36bc28f7c8d6191c31a389fd62657f59c9a797c6e6e5ec014f4025b23117793c1e8f1b9a7922299da5e6463efdecc384ee4a408c265de0e8ca1d2a8b7d44d20d0ffecc9c8d51b3d3b9529c71a3bb81d9797215fcd16ca5d33ce280c74ef0e6ef0ac5a8b503a9306ac656cec0208524db51d7c80783f44dc0882db67c1650d81eeff4f610f3d11dd5b1a52efa5d1a86615620d5144f7118d301d8501c27cb8377181f89390a6f1adcf1eb8fdeae7240d49f045ebdbd516eb2c5c11e859aa294bb370ad506302e0d719cd28a1476869e53ab5b365bee3473c30e82d7905e027801fca88cc0755c08d05e0e38643ae9230c0906be7cbaf0ff9a53cb4a6d36f5a037701afa0d033d6ec006602f63bdef08c5d3bc2f0b7f965bc20b9917c1ba38b1fd573fa435d4492be216bfaa5e2b011c229b5201c2f31b347dd93d89b133f7aa25eaca2112bb8c5f06f2ac3ea3e30498b64cc783a4130133d36e2ac61890429acdcb045051cefb947d468d40672bef06de09269cfc83727c17afde0983258a04e0758bb51e7e0a4c5d74958008d90d5b3c263d09011f207fa8781f6f493edb7063dc44c0e9408f0e25987e22e5af748abfcf90bc2fd0f6ab6c26c2e65ba25c2a5883c73844115d3d76f0e2616132561f7671229e794fe38b0266b8f426060d57dd970ffe8935194a86a3f657227f878de0e631018fb05a72438879c6d4de05ccace81d67724651c68bdfa344a67bf2da95c3165e1af4359974ed8755cf71a51a63a233eb2d74492b5609568e37bc50276bb4ea59e7d8146f6231923376e8ddfdd67e16131c955d9d8af5b673de7a9c2c14618e4e766d8a86e332a01e564eae23219fd0316662a86a12fae616edae43649560861906f11a3fad591f5150176870f16fbc4c135ba1e7b28e4db891f91864e65611230a47972d62f5175a1ded185bcbee1fc0bc403680431bac383657b02780a1e0084866fc07949fb6ffb5af4148159187e62414e872bf68cf2b50c3d324a14763164e02c6766960435f9c4eb3f4c0f86f439680ba7abab94652906461c1741a9069fa87016fe31097c970807422028e13c2f3e73e5663a8e631251d98f8e6dc23901a26e89bb9933f360633bd924d5a9b33d775726ab077ca246f13d5e680c3f4a8441ea6b2f903384b09f79a9278016fad73883f61c060333fe13686f96c767783addac514c05d894b92f870ab65389a2a24376a38953e62bb2201ca5461f4e96e2ed34959a118ae73d24f43279161b828fe3294fc3fba6ba72285215f58e0f417ed2e9f3eec47bd597077eb7c95798d339efb85d3f5ee7b76ab80a9bdefbfa82e3e6031501dd9997488cc5515189c8f5da00966d04ae50d3c1f3300ae757ad391d14b916e756434d12d5354c091f6a6a9476a1bdb843bc40dd541a162d0544b1ecc3c283a0823adba91ab80858b5252f9673e54896c2b30e918def6f7d1ec8426f83612333af84f2b2355f1179b97b470326de75c53107d60305ecb840979158adbf2712b5757c6b7f62fa64e0157e0cd96298185b73d9c0f220b5d4d941fce0cd56160bc1f736e5d1d8a07f947b192411ab2b2845a6d3c8a5a65b4e2af5c49416086419100b96a38e09e367be374a85da2bd86527f7ce2d7bf17cfd7375791517c8623863833bb5237a450fcd455ab080f0efe54c44d0a6d5f2bf1fbe6b24e00cbd9efbc70abf723d3fe20d7bc8947a44bfcc5305878fa81bc63ab18585287ed9cc38fceb642abcca17fefd3107f8c759723ebd8600cb8c8a8f33f667408a428230c784c5852df427eb917ed65086809aef491ba4faf5e07834fe0c7c31fc03a96a6a1cfe0978497ffb7eded2acb595851cfef4081d84a6b35f3f150fcda5da661c2bc147f3cf5752d0146202824ae91bfde72d717046cf1e568a4fed9f8f546aa7759b7154a65fcc3f4f89b2d617ca083c55049332d27e365a83d8bd3fb04fd9695867c391c42046a713d59f9af7c83dacc31c7e730f145ac617f0cf87b45eeb20ab2ce6f00ba38960320bd187473b8c33eccf48ea66ce32d1973f1ea18bd0ebbcfea7e60d974b164a9c29b08926eba7a33620630728fbdcdc550efb449c35183c8bf791d11c8a0f192822f198a51bf6296566995b58f7ab01b1e4026d239fa3ca619fc6a1068333e87e468f691368e6493b433af5bc8e344f0ee4cb7dd6dc62f583d10de2a005827fde6ed238e9c0e832bc07ea72195f06180dc862f0f7343760dfea40df12d75a9e0cfe81357d6c17dc4e9093e7e42aaaf3a71cba2a063f62229ecc8121c1829c0ce1da5564d105e59ab406522f075e1682ac7368c43c1f9eb4c1f5b0ed6276008f0e8661e1ae4b789be23aa263427e83cfffb8ac80cce975235aa16d8a8548636dd1049cde93b7ef1fd36d8d4c00b36b1e379af720d350cccc8b6060d92ee0012dfb830789d5cb7123b009c310775683cfb86b481137deed9edb1c199cdecd5593f43693824955688b84af32453d83a717b9bfbdb2eb92722098ea03c79a466fdb44f4e65274be255e6f8edff30e23d9cf9413dde530dbe83f2c98423015815a5eda24f09752e429baf2f56428ef944053612dced849a43634b02f4fb2ec34f1596b2362570e19eb68f343e4269f5e1e818b90a4d1972e65e49df7975ba6f70813798bb1ae807fc2fc22f931422b5aea59f8a9f4597a6021c4f53e597a1b1e08fa8b0f20af7c2e09ec0146d858088e97f440071c6af6b511b3833daef023a4e5c431da8882a9b57356a4b241dd06d98870e3f41c038d13ce94b3f5cb4374a91a22d6ea512b781fba34c6c270f6d3db9b378e04653b82f9247e73987005b2b2e1030343a6df3f7222151e2d780e06f971ad8164203c6b55222ae8346656607147f962ea8470bc602742cf6f3d15ae00e81c0e03e125fc2303b9ce8b26529223dc189c8aad2061aa39bc0b642420f2e12166daad6e7564043e7d9d846bab84aed967db87438fcceff995457a069f84d4a737138a2ec2897e468b08596d8a80de20778b094d9478f883c4ae1f19fd69882f46f15da81c2335771af48411afb2230fcef8fa7e93aa77b891e85dbe0b3976eaaaeb56c855e9a744008f6ddd9308762010e55f18643438a2be81bb2067592ba32e2d7ae1c09eaa42a1ad2dc2d6a88bad5ca8de140e1d1ec7e3adc4d72928c6c43acdf4da50b06785c7bbdcad7b7be30e2d3b489525a5ac87d4096896a34583ab378f749f44aeee0b3d0d309e26ab7fb4222477083e6b33898dadadf386da9dbf36be1d6f0a6fb5e30d4e6a081c45f850b5ddae0e53cfd4a53d428b9ec88639376294f203be3d14b79e3eeaa8ddb82f3333015e19161fdd7893fd2137de399c6b41975560afba3630db96cd14e0af7d1120d18a313a5ed91b4b9bceeea6b430a7820aafc379590ff99e3bd53b2b88ff70bf061bfab93a8b81e50863aeaf494b1ff025daaf2ff7449818e3ddbe363cba45028362bc85d81b319049d90ebd980fd05ff83925ada0372534709047d00b650e4b8d107478ea9c6af932a8dff811cc80df7ce8b0a1ea150b807155945f4fdb4621f4ae3bdd82a550ff3214fec5dbbb47ea758ba4cc1744d996d0e6151c818045ec5948aecba68fb731414250dced3a8ee0ce3236677bda05983a98c53b5493246479ac13e688dd0b1828e694f3311b2fc9a6ccaa3b13885245ce2953f76f50c7164ee8dfaa0afbc26f425db2f04676b5a5a6c59bf422e42927ab4f4c9f03ee67bf2211d6bc5ea4fa10e1176014e255750b1eaa3e1dd39d8a241c130e18fcaf8d009017fe3ab97d9abe553fdf1444347dbce8ecc6bbcf7f7324868a2f2047e628a069723b5ccd98c3d2e4d8defe4935f9ddbd5f3243dbcbe3974c30e1d76692c5d968bae5f45f059340ea36c8c8036f16900a4684f7e454589cb0b2b9964e07272e49799f8d2b84f5dd1d822ba5c9bbb6be3c09debdb411c09350d0164d1b25d85a44a00f21b69103cb02a46ea483427ffcc77b68a4d9b884207d73a69d98b4b485138f53ea11ccf32e48aaa5fd34148d2d0e0b2095fe78981aa6275ba0a21f860dc4cb8b1923809554e10106e3195ededfdcda73e935c2db4aec09a8461d36df223bbd1b79d7ef56a01ad8e930eda4dbe75a8a5647f3b381637c39a658388c2bff0e8029bbcd901f1a26331e4a58aa57e160bc2c970324a7401bcbc0c8c140e8dbe19bcc34d1b6e1e796377f01577ea7c361a22d428a831039bb4170f3e6205046fda23af38c817ed325a59b7fbac16d2311ee7758a09e3afe65bb886d6b2939a8c43ca6c85e75cc2e6d85f02b3f831588fcd60f47103d313e092566fbbaf807709952bdecdbefb074d20d108fa83f18559b45be5caa8beb26db2124a9bff204a1d7fcd6fbd7363e5877f8026b3175200da914456def87c5c54a5deaf3515f59634f5a999acc7c2590a70645dcb8abacf671736e29bca7f78f80f56366b66d1b0b5f45f420508e666443db004b1f22f7855c1690900622f9a79a6173121734784b6d1b79789d1d3f9f14e86d772d9c13b62e96613ff09d0a41a9c6c02f309c409c418710bb18c8b8edd89b03f62c2e5752d9eacf1f37dc8a3af33ecf06b2b818a568fb8050fb5d70b2be6e0c5037abac11b5f69f6cd54b964934d09baec1d028f0bdeb683662b6c109268c0730b01e34810bc9ade5f5d2cbb0a285d2762155daa470fb3d8926d4c87c7d2e8931b1e08d2651dfa7dcd8cd7c50c988ce744b4786eb253c5de3087cbf3d5d9514441e34de254f84c5f132cfa424839a1d7cb40b918658f35fbf9b17454297f827a8ceb825eb9644d4abcbc92eb7979c569410019d78b8371e8d192b83b5250e6e7b45b9c507a63fd94184ab49e1eb40743c4d0d5a655d1b2ff42af0249b4353bdbad9801751b036c88b8c6a7197251e0d261f164c0f7902953bcb6f4b285c60fb781daee29d2d0bdec05c850c945d30f7352b4f9225ba7e147c9cab7257c5c4921d502f64a2bdbe0a57b21b74ab621f2544868c3f571c5c4c4a98fa4305cc5c3e11bdb61898a5723ec51c503f29f6ba40c1c8935e8924dd8c677f29bb6a49933e4715b9dd209b9211cefa0c6d10064c42ae531b269c9c6359296ea5568be1dc5724750d4a94c36f90ae1df60131e1461db42fbd20611709d734dff61f9a79cad64016d4d4289980588176fe6f22e20cd0d8ab4d0f80fa6ba8a2f8e9757d4e2e793c770eaec2e8229a4c57a3ae65d6c2906f7cd01358893c140815cb1cc8e736ca8b200fbc1650d93096267417523aba0cd546ad7b1f463c32a4526d31a9530d05c3c85c21523a7994c116c6fe5d98b6dc95c27e81ad5dea2228f595812141b0a111873b3bbb8347fd94117e928d8f58d4ae99a7d28d5d18450582362e9e89ce25244753490b337e60e5eb21ca8aebe0c478240f6c58da3ae24ab26b20b6167d4765e916760c1a13f64170d1dd22887ee7b1a7c4649ef561da17d19da7b2dd369c11a1fe223065f7e597a364010a71a3906a88b4bcd0da6ab33553dc0177591e4ba142fae6d3c2a5da2608e9f495abda9717b72831074d20b656624fd87a22470d0c8a9c79c529188478b01c5f75c19742c35db390c69c7893256a6c8b735238816df9078594c614ac11d7899a5946a2b463cf64ee3485c116a66a7c263d01015305161416fe39b358b8cb0f56a45018caa699d4e40a085fd89bec9b79175d7ded421b846a8f24f9c27e3ecba3300b60f626124ad6ae1ba4a7a7297788b723d59936127f7bae0f06237207f4d5cc11b1d869ac3406e1cb0c8d2b1e87b639fe780c3e935d06135e3a1ed600da104123bed6feb1ee5e866e474f9fbc23a25f9ac82616ee876436a24afedbdf653aac8e3146514195103db154324a8ca8b12182a06ca15931bc61d0fc779666a567fa15f0c7fb48b7d964ce8e9833381d1feec35538641e34b4477c6333488e49554494c91cc561d21e98f0be4bdeefc34fdfa757625fd9493431bbb38014e815cdb6438998df5aa3d81bc50f720717a71a247ef2af5fbc1e7e8809207fcf4ee5076761e029c0d2a242d7bb0ff6e077618c94203d4c2870be94509ac6cff59ce86031441c5980b452206903617772fbea5f67e55e4a6e180f4fe18e2f095c243b225e1aeffaeeaef23c0aa521d3ec1379fba9843539b5015ae94cc7a5d98c931ba2fe3559fa5b6350e604daeb6521184375321c0752254588427382564d2cde6e3187e732634f9c8726ffdc15a929762b51782c0ac10d8924a07d97b7ad81661b78426d3317bdad5475be810802a15eb814820c095c4e40c19fc447bb068df8c79ffeab539f0e3390b94b783284c7de8e218d9a37169c5033b3b92801f056334cd24dad0eb4e121fec7400d0a67141887abc5ef18e2fb55abb63410a214a0d230689d609d5774f89b2e89b0cb0953dc55061bf6a3ef81bffeedd802b28d90718c2c8098b620ba89dd2d1d703f4e643735518fc6768c47c6b94effdb540cb957463f21b542e970916ad6626092fd246f79c59ac3703dfb559228642d5913185b528e869b13334156dba51c592dafccd65e93c0ac481aef20c04930d55db926567b927a39a268d02ce867f21b1c59ffcf4eae899ec453285497274b9c2d20ae9c1442cd53990dbbb53136ef417e8ead9f1f6dccbf03e69e2dc744395c219d49a8924982110a23ff9840ab57c8d2d17e1d13db961ecda0367ae3c1906337373475d2579241ee975947cd9f1422bfe3f53cc8bd5622773d44d9b13a46225499dd0b0c05d915accf39706e23a05ff75a9f6396a8b81b5296b93845106bf87f0db5c7cbf8dffa8e96fa6a2bf8969709c7baeaadcdea7f7e40b65b15415c46140121c16f3068754081833c40f44c8593d701fe476346b9a97a67acbf2cbc04abb5364ed37dd071ee97c6f33f7db330e1600c03c8035f1c882f34227286fc8bd7b280c4a98302d6966b04fcc345e8c2f3968893a2288bafbabd54a3863fda36a4c62ae151c0666bfe7bde192fe36f19c94b549de3cf7426946b62c1fc59f1de059f1d9f7a5028c84e4f560acdde8a73187dd8ab78d9d5528c19c771ac771983a03f95a3d0765d220c2e499f8fef95f94c2b5fefd397876fa6f0a29535885ebe7cbf09c5cfda15fd0547617fcde676807c3a9ed54574b99aed00088503af49f9f16fd5c142e03118686f93cc5d2bd6391516dd21a149470e06c72157f3de85088dc0af2bb2c76356ca9c4a363804921e826c04b4a7642cee35232cc63a66d8c9fc94f18f4106d065eaf99f5a5435232ce01d814aca0ca9eb2c9bad42435cfc7aba39371f566174eb60b381d779e370bed44848bf7f31bb516c071080b6a90e930c4734ca80dded7358e87e1025b4f4e7dce21025b55ac045afd48735179569f340186ddb7e86321acf08efc1edfe37bda33f39c20aa40a763e7f458aabd3094e901ff1c9146d845a4f21f9b9eb4d3efdf0ccd2e76c5a2744261d1e532264f6c7086ec4f44c85cc493b68b4985ac717692d114b1d4418b5671705e896daf3d8a3058691717446157b1565d961acad2292d782e043321784c19806b6867de03d9093aa169f07e3777ea96021464076c51385c50496154dc84b3bb3028cbe0e4cd8398a69d208ac8ee5f32c73c6157055c9c86268419fc622369af6789ca35c983d3a6ab6689199a01932e220e86b2d8a55118353e5fff0895312ad24a25bc9fd9388b2c1856e6f2de8963720060aed568371f5288e81bac81274521f8dc6d7fab63d0b531b627f3520b2107a5434e48d399005804215e6d1b1b4b3f2a687c630910c33095486ab947c53831692a0228a3223048eab70a8a663e8524bb4cdfa36d93657cc05a925d1109b748c96cca9a676dc20f6a3d87c99a7e1f711596d47f478e9fd4cc14d3d608b04b7e7a56a07accd408927c2761bae6e9b582f552ff630a286aed9509b483d666113b5eef12d7cb78af9dc43d2fa158deb76705ab25317547aa585b185b3d1601748b92b73f1975fb7cd365b7a4709723013e34f4ad9c86b7e198daef71637cb7edd6a137d7a97d6d04d42432f084413aae111eb9bcbe39694fe8ab9ae46104e96e137987f1d6eaf9c43cd751c474930a1c80db98b076acd94f11b4b2d3fdeebc50885b9a0b8d96ae070346b98effbfbe4f8f194fc5e85be60b9f5a1447f17bfb99e33071872340be41cea32cf8b84cdda3d04bc744c9733ae7769d441f50fe26a8c4da3e5ae0c38d8116bbb54723e0350cdf3a11a50727a604ac64f516788d6f1e731f2c49cb401edc5cb1fa44ba0974470a48f375d9638021c75ca0bccf499cc0fd499b2c35732e87a3868b40268eb2dc86f750944226c34aba7369c022473cdd64d0169341ea572e55dc294e6a5fa0f9007966675c375fb1cbd4b1c2ce3d74c6b831210d590477904d28c09c1569c33146be648c5e05d0ddcdfbfbc02922d1b8b33b31792e9fe7bb808ec2f5d7168ea1b0d159ba21b372a7f1a0ffcf10e355a0a867887310fb32aa6225cfc239fc5949315271a301f1e6df5909500fc66ef7c08a77926e100b335129012b13a4be52bef7ded2032242e6ff608e4c4fb758bd953db00b6a2a788283474cf3f8ad3c784961e083239160ab34eb51be3675e3026a1e68ef31ea2fc75d23522d8a9b3296087aaf70ef7328cd9cae7d50492d30775a9ee44f014a70def4df3f70fe176b3f46a815208524fc105502d529fb85bce8a8bc0f5d78c1a54e18de0cca57a4fa4d8c1c62e89795064213cfcb088fa75133d50bc17ddbefec09dfcca89fd0b5a459e807c3f0746c711262ea6daa465489af495243831e20185a800772daf9a81aeed91d4b8f336feeed0c98c80c0cb9ab9ec811ea7c47c57ea7a9a8b633f74352b5c695b082ab29b51608875afa20ac9170f3b04e4885bc702fa6f9d5a58089f627ebc791868353901bc62dcabbe6c7bff15b2dbd76041fb40e114f24cd4e9e21129efaf4acf3decd82f451ecd24b26fa4e64ab2ae29a649140c1795230a35587bbe3b6a66f95ef70f2ae6296e3b6d2083a5d9428102011eb82985fb1e0bed463182d0976c765e1f6781c5e12257f0bbb030cae0bcbea7228bca05da1cec94d66168185f7b81514c3cbe38be09fe1df26ae99b5f739d74abebaf928c31164a4eb0dd7a5402a800caa445b829b92cdac384957e70de4ae5ce7bac9e4244e4bb79469548b2e2c237cfb1af6a323a9dddb8b3dbe844b66e7b3c12d6890c1d2f64309bc266fea4e1ad2afd9aab439c43943937d56de9c535b796c392bbf583797f3c1250d4647539166ffea76d8008c9264bad3503d0353fe4cf059bbfe645d0ef96c7b88f95d542ccc5cfff027f4eb6ba4d62ca12477227e09833ce0de8379efd087bab0cbabe8de7b7827de29a9bb8688d11a964c11b9b448e1b0c5d56b10ca8f76714c707ce8a9e08bba7225e4a01d68ba5e36c896f475744a69061985b1b4087e0f4f2c829c5d8122bfc276d7966e3d8ce9ae1de6a811d1ceeeebcdb55fae4f7a7592b9b827606928d48abe9d7bae0ab03296b203d1bc7848b69c6359d34b3fed3b755248123ebfd615e52e0be8c0b18d776845c31d9f333f1493cdd7305fd6945a70e36441f9fd8efe2d9bae4bb8824c01adfc1b51b856f239ebb9c20f50da8141fe17052b8c89563d43cd8ec4644c151a2cc0170665ae37d174f289529f605eaa83e06ef7d4b76291ff206df7506e9eae9c20205b31249c4651a9cb85f2cbab593a405c27113d74df38a9fdc2d7c3783067cd03ba105a841785bd3dbd6ccafdc34d039e1e29a340b3a4a2672add99b0b796ccee040bc51d6053393da3f7d032c24029b39bc30e2d55365049105e6a39cbcecefdf6ac70f627bd51965d0158d344a99d4432fcc841f0f96307ca52e0eca4b8f464a9e318563cf07e6043d46e8462e19f0655626d41788fbde77b82c94e6ae704bb5c5f2495056635aa9592c77455df0b10bc1d12d587fe96ca9b15fb5c650fb15080baeab6607ab640dfe568ad74c414366dedb379a16fb3e8a38c3153a67eac1ea718a92017a1de099ce8b7aea270055a9066864e205fdcdba608938626005095f88796f85ca94738cf8820f2dae45a1606b7f318538c14147ba31c2c8c3176e614f7e226e96652fe4ac67f7ef0e9981014d0cbc8b04c41b7cd0ba0e218a54efd7c7405d8902f71efa1087580d2707bc3d6bb4cf52c62124574ffbde27138b15dd141073c100ed9e49e465cd6dd17d0e34c1fa5d7aab4309cd9c132ab4792f6ca448051e9e30b3054beb6db080da61c488c289d70357c08fc6ba0e8d9a940d432c9a1304b357d2da68067bc354e141c3ebfc314f0738992f49c902ea3fd85b54eee8a6b429ab7c3211042611da8d089224fbc1d9d8c71b49409dfa5e8aa1a8b87afa132f3a615b15e0ecb4faa99ee615453a70793c5b8870c9a4ea6026116f39f32fce0f3bd630e9844f99cb3044934b816f9b975c098ec3b638dc809bf3b1063c7919ecafbb7783b162c8ac4781e21844a6288c2a782e05197f90ad8e5924a4aded804da98e76ec8d8523660ed44a79d84792b9e321d66551fb907f74932c8f5c7c97f4190aa90b9c4091a898d6f05f6a99ca10cd021ae92b3c9fb997e037670cddc8f1c08357f0533c6fd041a11ef8da39a2d593dad87c713e081fbc12f57f567bf02b166ff42b423e96f9b25c63eb1446c122013755faa06a404a2a0dfbaf8385da0ddb0503630231702bdf1601dbe3b9e335997f98f22143b9c2a42634ae730c82b82f03339e65f68fa4f6fca08b3634c69885f5cacc5cbe4260b15e069fe666be6072d0581ca27ce46566ad3a9465e515ea30d56b4709305a1415386a51ea5edbe0c2237804eff2cac92f1efc6b155eef1128bc2b733d2c9754c510c4a88eccb9cea18e4b915f1a8ea28a6199e8e9e0ad36c10ebcd2bbd6c345a73035442e82e0ff704905eb763be4f80790fc4235056bedea6b78e9a5dd766d57fb1f1073409a893be60dd57c0fb75ab61ed986f69e12c51ac0de0e5e36bdd4952f874b3ed852dd1cd86952135faed8dd4cd4e49d86929331b3d844a4b8cee5b3980337551c1b448a7bebc072d04e702abf2d14d4e66c91517b4352e84ced0180fff4e5628bf1b65be7cb56cee3c412ae0eb8a7c1c381a3d1b830141e8959d1967dc1979f4e93f3ee9d8b73a059fd3c2a7142dfedafaf4f99e2223ff674d6294d9c992e56852492e0c707540333f8c88214a24cfbbe17582f7963a07b1ea670b4a71e78c3a43a8aec832d921cd7f3f6d467bd07f7143e0ab40fad40d36082f58dcab134bdeb90b4a2a5c61d5e10d51fe4566c0db0ddab9b437171c90535395e407189a9b80d4b16014c47f86658d0b26a1348bb38453f55c0900e5408fb2f246d83598aa618341a577599b8eaedfba0dd160f040eeabd9bcd9d8ea804532d6f046019a29c5e7bcfe502ffad9de63c5e1886a3eb01c736107e36d9db088341385ced2a65bbc8ca0088da63c393570eda313eeace4dbf870d089e8240e431b184fb1da05b2691330a8f1708ab7c7c3585b2054f6bdf1d7983847e3b8792eb03fc90ff1f2cff1a83f3ee6c83dd8df849c3f6c5153126d977629cc38c2829ae9e1f3990ac9dcf0e15b1f5b347f40786175496d984bde71c5e8f7657aa84c646bf8f06813f8e14b1c259a7880f0bf5c08734a4c58a6c0e6a235ae462df2db8de52fe815547a566976d789cb65375c30bf16de0ac56f2c724ea5005e2200c5c47b807e29eb85d3f8c8aca8d77a7b25731b8ea002fcdf11ebb2d850c904573da5fe730e5d66dffd6f100d630af92ebfbba7b95a603bd4171a35791af7595f3c542915482d7aea2cc603f766536f81b890a947421c8af27422129c52308c508916c01e2b9e2ca77c9aa476e517c2f0f72ef25f6f0c589b13c0e2f5f7c127dcdb1aeddab398125536eb805adf1c9602954f30571b9009fcffe15862d4a0d2e333a37a6216613545de5ca3603d925cecde54980bb73034721b60cc122ccca761bc1357091b77422bff5fb6811572178a1e718ec8da51f85c3ff3e4c7d07ac70d6180f2d107c426d82078865f1dc744f68fb83de26152d9cfd8ef7e2926121bf74781950ff1607a244e62e30df300c9449471eba314c4e950616eb763840f48f418543f7b6e74009bf28d5824bd41a4f2d86c627ab2e12c3f9bd8f1622f002e9f907bfdbf030976511faf2084cc000638a4278135c710fab7d1595e453573565de6007a76c0dfc6895bcd10e568937d80e62be8da9467a86befd5b173d6d23499de180df349635d8912999463bb852dbe00753b64673644e698ace21e40813019492844c284365d78c8fe4cb26c2e58babb866e9ce0e6898ae10407ddd30329e00d00ca94e6292d4caf5cfe28046d1f65b5b08c7d1745f4408ccb36a20e45d235939d507cc5da7e73ab6ed9621757f0609828686f7c9a6dd89fba2c0baf2d4d6fac17dbf73f99c33a96f68d35a7afeb408bf104074509918281378387f034ee2c3a6888908731a4a1bbecdb57f19b659607b5411bc753395bdc0c3aa4a4f2a8495be8673194cb02284434f6a12a895c44c2d36a4080a8f9ef6c7f94185127876379303779e566770364c804b49e2e4ee144b82f1db3f0cafb9b596dce77b9f7f898bc2900675b64ac431dd0a9efcc1773e945715f1b8b620a5e742c5171e4fc8779524561e8056bfcb3bf40a60e602c252f1280c446b4beb05197dabb36cd59f346b89590148ac55185479c826c16d43cdb2e9a758e46bb6c9e28735519c65b971ec4ee5d07e0629be38cccc1c0d0f969d0c98e193f56f7b335c3773c2793e64374b1dde812b51a6b58c3333c5d2db59bf7d33f973f92bb786832f805eb05f883b58158dfadbf124a0e34af5c508936782a2eee3e9bcd62bd95434571a10fe000550624bdf15500c2281b3655d9879e0d1b7c7ca9eb77c52fc96d8e9eef908ec78f8778206dd0a65831293c805f85de1db00d1dbcc0fd2b12422f3c7f6ac2adaede47f3373d769bbe5ac4b23369e5ca169cfc20ec9802ef9af72a481c053c2da79f006cfbe219570ef15b8cbe81726c5cf8da4722e41a4254267ee9ed337f4648b8b06ade132c0aed445a885b68a73585f4e9c0fd0772d5e6d26e4bcc79271ce208fb5c1b5a0cc0611ad4db6fdc026467fb77aa8573e16874ea124ec93246c3a6880e90399348bcaa2b037ed7910f56798ac31d4ce5218a01e2156a622ab457155df4627a8aacea08cd33d8e31b7e48d1b3f2f545555ec15964e7521d9efc5f10779544e9f4536043382e6d025fc6deaf8842543cc8bc334321a1b61b3d62fcbe2dae7c7b035898d85c48a473e4d23b445a7dd0aa7bf12c8db7a507e2c912005c5b5c3effa36ba8b2501d4f387dc65cdd632f444464899f385c468121190da05bebe9c6df2391bb5b76174dbeaf3d7dc6bc4776a4b31794ee069dec68d924eb3a2c1a373949665fc721e00d684db2599b14528ae3c54ec008fab6fd2941679c271063597697922f98590ce63848e8db7e40e67971f974bca5a31949bc845d3b884323d834fc40f075ffe0c9f710b088f4a345e745187ad084bf6ca06c83e7485f72f133b551ffb408a4239ac8f94423ba3e4de600e00de9b830283255c8eb58ae4677758c7d79052d395d327a0e2d764b008b74f35f5481cb7609cdb1c48dfd465e428b489a5e157e3c72835cd652f49ffa75c52dcdf6b655d1d1ab89589def0047ecfa494fe19054b4ca110b5968645ec09582c9c76460480f281a94b6388ba00485128e5cc65a3484180648b07c084089331b0015f34c620a87dbb73ad220aa434cca9396613d57625a80d7228aa1205ea17b4decc4bfb7f0cf680faf5937888e615ab2f1e95f8363e6c9a2903b1ceca382c097bea95aaa601acb9dfb88d0810c65aef926bec92515e03acee9475ef65a96acc6430f72d53d39a70d2faaaac7a91ff3c27a58513d88275ec24f87a28a66420cb76a9ff2df80b4eca2c6922bbe6d99ef0cc469225057b522e37c88808b86f24c0ecfdc3d3b411dff799da325e4f1589f297d06ab13bd275c7858a08740dfe5d887cb8d93f773c4acb8dedf21d285f7bb93b7bd5348ea93507d3b3c345cf268814040c2aefe0102022955616fdbd7d4c058ffd1d041f15e66c9d381b88ed03f3804c9baedf4cc977a37a00243ab25c21d9ae5cbeb1e55206ce85ee7b816ed18f8132d6fd1b2d0bbb90280bf79542490c74eca0c2bf1b455f88f25b1665aaa16f2070286996f4a0fe26798f1805a53fecd55b4013959bacce2177c0f97d185afa6d19736751da290ec801af30a829397c0b77d26470a0a54ca18462fe4951ca81c8c4daae877ef23f2702deafeab9ac7f7373b87b9d8fc3012406d37a8913165ce0720af768315042fb1da120639ddce956fd277ab756210aa054f9aeee22bf58647660bda1049f1620e600591786dbf78a42b0129efa5dc904f99384065eb4adbeab3700bc15914a442a531e4887b84bb653b56c02907ab3b1fd4a1437f26b6c40d66d707ae466f1d6ad004d8f7b9ed099fa4d8591613ba508e4fbfb341daed8f417e7c4ca8e8e4c013c311a0571a2f73dc244ee4c72cefa42729d3917d3283f0175033e14d9b48a5f52d168d3a338c0116d94bb42a9bde50e7333cc178e9b23ebf6cdf45cb4105a922e185f8e0196149781a9a3cae29d5f9106b7df7e7a6d9facfdb3d60bd8f0dfeb3143a7df0f4fdde2a282d2f8e05ed65ff1e539318b32c45093e2bf45ec016ad05b9438d6a662409456cf70a1cd0d9732208c3411759c435c743d78ec7e9a6ecf46b7d9d5652f7a7063f6bb6778f7d4acd6895e1b5c93a8ebf54efd9b9ef022786b307a05f722618af15d2ae0de2d432909fe8f9c95f960841f7be1f25e2fb641c413452456e8427a442fe8aa6692e57671df338bd71cd5524996f2a57fbb50d7caef4390d9058c25542b58132eff215af47c635926909d9ea1737ddd60eb863881e10e6784780378e56d2978c500b6b18d9623a02aeb910469f7e01b9cf4dce285ccfb4d98edef93f8e4b7da4036a6316c2ad0f9f346936cf04a8c199bec1ec1fe78d48f9e40f07c5a212f1e184e30d48b7c72a95ca9d9d5e3f8e6b9d5823ac7bab7b7e04382a1667ea3ae2dbeb1a463cb078fc155901da1bb3a813d8982f925c76de710cf4a9e7c862283f666ea890c1245b96f7d3a259fc3513c62a6f048535058193e5c58e382470cc2e5a6a6c623751906342307a100d081095c4a2096b32f2147eb528ac91c85b603619657d0e69046c02b86d7de56dc82ca34ebef21b9d98768ace66bd678075817c1ed5776750584b255a45d973d7158779c23aee129a91c6064865bc36a2d7e9d6489445a82a1e222563f95b53e348e8301682574e3ddec2179d353d95e29f7aaec7b9d9629132ccf77a897ee11d4e4289099c101b94ad5e35d6f5b1f752b22cbef02e61a235fcae23124f3068e25b8cd56ae94ce0a618618da1573a0dbd43b5af03ae4ef4321f9bb59281833c9aaa02757ac85159ad44ba6419987127c7b66be26d649bad939315985bc192b06b067953c1f833c8f1bf96696bee242fe26e3774ca15351085cfb2001d72d1695032e93196ec1b071c4949991cae16776ec531c2140ac121cc20c9b0d73d0ef9238241ad2e131decb7679644646318ba874cae5d5edae1b92d167e75872176aeb5acc18e7ad0aa9d8d89d02b5e0b55ff30e66b3f58cf6bcaa22b36377f10b046d1396ea1e9f321352e8944bbbafc27122caf4367384aa2804bc73fd98777ba3ea498511764e8ca7898378571ff845cd7ab87b4adcf3a06ea5fa92a07a6b4e972d70ffb4b532ed54c37dee77a306b2fcab70292edf021a7d5f6650784d6652ba2f1b7181f508cbd600d7c18646bcdf015e08f6b6c6e925e05af20a8acf73ee308ba149bdb5ae673bca9ee49c435890686021e62da912ac418828e972473abdb1b0241c4018f98fba0a878f610323821ce4f60150d45ec8a834ea987f67cab9c61b1113926138771759c343e78b02128024495afe16b1c54af043b26611433d2557d25d8f15b90842c60ec82ca56778bac698366c924a4989663f3c2528036a477f30dcf9ba0330a33e46c92de5606f198770fd0cdb20ad818a3f62399b05885b4d5845dc114af9c5c37f3570ef66ac498bc2d3350dddc024c21d6934c05f58a165c199964c2494f06915330e8a085c38fb58e3ccfe04b433ecac53fff2a2bc2595b5d2fb06d9638919d4baf94e4c953a284d6819e03213a8e95f007e4c078c5d1a42dd5306ea5c1d8a8719c3b5d5d5e39c074d396ff6e3ca20dbea5636efdfa1aa022b61ced06a56fb1d9f4b8bc944dd0624728c5ece7d24e184c73f65a693a4411f9bc639e4ccf2e1e1572338e7741a5a07e68dd4206e025d06ffcc6f42621282e9e9b36bbdeef91e6eb1db13f4369ed2437fb98c532024fa183aadc1737aa13e27904cbd4e328cb7022b3af08cde708d637ef15f4cb5752942060de24c3ed7a12dd6351f5eab795848688c56f072d9e44fcb5294893d866011d9a906437d0144cc90a38473d23b6a111091f680cdea29ade6fa4ef3dacee8d1c1d75f4e68e52de4a7910bb8dff04fbe8d133bd6bb16c807b38e42939d98c2db488e10c36cd33c78a08769279c8e05158ac7076e4c011d6c4b0904f4451bf2c308d88b946674f43aae4f92f04618ecacf4a552757facf96a0c5d33699251369527109d6c729beeccfbe6c68e0685cf9a81e1c835feb84f71751805039070a5f4c15ab42578b7b6742b324795dc71a4723543dbba863989d028744289a8d99f4ae23a44e6021322aebd9340f06714ba14f0635be706607a8342377b8fc630cb2370a8caaa41a3a9c992891ed946010d2d8ab14adb06158b4c06011732d1200b7580af1c984e67a296c90192c1a48e1000581341293dc0d9c89dfb24368b2130b10a786d0dba8a2ffe51214888e5443965b0ea488221ad9da111a0e9d937a4433b46d68f963c4176d43a6985cdb9b3a411a2d2a8c9f62dcb11021c78118165ca962ba670287d12715bdb25eb8941c52497b3c78ba87b87dfea9ad7177c4c3982e4e316c6dc6f15989eb8e6a7a92d16ace122434d6ce529b417bf9fbbbe55b63a2b575357e10e7ae2a66a7a44314f5dd4fbe48b67e40c725a53ae78e144996e4df8e40eafa2ec1fa51f07f8614537b2b5cc55dee6de8a610b8ca7ec175dd7945b5a536ce9657abbcd2ea51706ad422adbfbb99b9101156fe6c0969784acb74c912b70e4f3f679915b98b71c9dbfb94a1e151284abb813b95bd11efa7cf4bea15da3bf7a60c5d1fa922a340c02b5af552afa163671b0eb75b49ff05eabe21cbf1a5b73b063ee2d9f1022480d1c4878089845b51bf82a45cfb7ade864a9e7db43e8b839c6e787bffa92a5d1d0c6e7039699de9c2cd2c280ea27b6b5f55719f9f832f8d516fb4b08826ff4a837c46d8eb27c7b9ead367f1ba67610b1f976028fe1ec5a65eb67bb7ad42f82febdc3da2790ceea03251d3e980e2ce19b6f26bbd4b03399d906dc8b28e7a984900ec803ea8fd7e3df83a9856421831e89bced197ef8605c1476fc6bd0335bb66fea150c9c0200b60eb64c2fe704ee04cfdbf8378677e797be7199f5a87a6be51cae8d6686d5fd43777be81b288bebf240c8992292c5767475b6b1f73d7ae6d1c6cc9550304e8ae15b8fd2f6abe1dbd3e832ba88723e10e844d9e60c49ae9ef44504915e0201a49f0578f4ae38e8e8b7cc802dcad9e8231c39f6ba105fc0b621e9e4fd1c73cb419978e8230e61ac8f96dd888c3e30ad50a8b21dd6107c022b029829338646f3b2fd3ae835f2154fece43f815bfab6b6ff1f902c6bb173b952f931dc92ec1cfd94be297d5ccfbb5da7a7316d0c8f59c8c3077bdd695b6de546ebdda5dddc0be6ea1216a96cc6bc9b7abcd5572d58052db50139930902437df04dbb29e2670bb4cd71c7b276bd7bf916379cd1db732ab7272606dd7f94da368e4e3c75fa921866e4b2933014961bf43c72cb50bc9afcfa5b00ef0cc47853dbfc370ce01591d2c2c65c8d5fb651a2d2b70d1a422e090202e4b13672e1dc050108a6a58eb24eeccc2c3f3013afa9a5f819ac5e658ee7de77873cd0739c8d122be328d2233be8cd5b1670a98a796160c7dc4f2232c491fadbca02b3a28faba69b1114c840c894c9e1060ade0b705173e90ca51c2f80d7307a2ac221471b8c96e6ac33c98bcdb59445cd05dee70361f0b55c889433556fd5694b163d4695d9992801ca75a5aec30da0cb9a9ec4d3579bf8d126f075434e8b1f2bfb5346f3bc3a4f4379e366065da7ac5df7cbab1a8e830a2c01b2e7e1b6da42abe962d0c79abadc2c1f2a7ad2152e1097ca8013a21ee590191017a385ab25f33c45aa32c26ae6a7009de1e91338223a1406fe5398ad9830263495f89471d530c629ebe97609311d843c4ac0023b8c64514f757e299959a80296f3693140813dfe98c1789ad47407ec0ab7d5de6fd5bc1171a7211b9a6e5a209ca4dd2d821f5cd02de15ce7a1a65fa49ba4b9a73c472af668c8e9d3db38adb2345e121ac077f9be5ff0742ef12d74e9fc995d4ad9ccb0839b0cbe0f2bcd3d5b2aee9b172f5ff7492e4e4f330be5626422cd583b121197af51e7a4f09584398e699a5fb610143a680e1876904a6cdbc00534683973ebc2100ed0b6ee7b9fc39c52f8ca3a38c8ebb0ce39973113efc5e7966fb066fdb4a58d244bf5c9e95b675f6b36b3dd8136fc320ee33464365c84784a2882c14e5a803f1a37110e9af7221c8588bf71b20c17b34414ace69098aa656b7a3c97422fd7fb72a8f12b3bd59ea5bfc47c190f339313e9fda756f43c420600c4aaac6339e9bdc9585e025bba2e358a046665e9d84afdb30dc225e649b4f27db74493e3d5203d861eb9c843abb9d806bafea827807cf123c1d91084f6b24101574ac61e4fb2dfb909984b6a184f8dddfc0eec2d2d1b5020c03cd1137c5c752b87962cb970eb57a1dd109ca77388f34dda2446e06abd98dd3550f1547d6cea541d6eb99bc606f4be7a11ba0df40749ffa8478ed642e7af5aca22bf2d0dfa63a9d25c0020cb74e7f34f2cae0ef4d5b07733b034548125e3774120f1414df63aa5009ee7036d691940633e580ecc68f233fe0eeb533e18b809341d3413efa056e583e7266c118d457d14cd2fe9353cd52378ea4a18f6ce070176064aea1482492ced343068d87023f8c53837aee24bcb7fd83baba94e89b06bd602cf06472cce0c9e490407bae1da91fbd373c7db2010e4e86f09f95c59580b49d8459fc978b6cee11349270a631a74c9b823a3d50d099309938fae3e1535dd2416affee72201cdbc66a98ce82e6117a8b99b07bb8708adf5fc0f8f8c0d474ff7961146d1601f46f8ffe9c4bde96421f9e50c87273bc75e7c25d3e69baf230b3280fe47c5ae8cb9576fb1f56440a5d164a961227c6dcb8b28db61852bab813ea9afa279b5589d5611fb9022672c1c8f984364f946ede6c5b7abd6490d96d7312ef15670ed65b4ba2b5b84ba9563da2b7de1b9adaf2809cb5751d17a231b6372c440b356b540d04bbe22f05caa69359c19108fe5ccab0c9439c87f349bf399a700a08e9f207e038902133be1954ef22dd67c8e38c22010dd742bf40464addf4adc32067e0f181d675b4f894c62414dedda7c9a821a920e22201de5c1ff8288c89a28ef59fdde8621d7b057165629c816af3020e8fe802e99e17e879145008bb34e2b9ca862075ff58a1ffe34a02656031b76283e747be54e87b9efdc939879afc8b11f514b2c047d2d8cd00363166451b0741104219ff95ac52256913d36520606503a403967907bdabb77d136cbf6023226f449bcec805992a845c7c03b54cab3d1d4182c25b93bf1b6d071cd69dc6f1abc2b848841656f2b051ca3d5f6952128b89950f45a568e3e91d86e66fd556154e6b32d23a8c139b7f0ce61c0c57969e3797413ce58d3971be0ef1e6b008f717a8114512018bf1d983eed6a4d6ac9e0ffacd0fa32b854dccc6a6ba8cce41e1bfede71ee808e4cfa67339f9b65937f308d2d27eab15698d2676408a5a6dfb1e5d39ca951938257664ce9ac2dba03954ebcb788d8f02c78809a664d30df0b02169342d9fb0da05e0fb256356ed090f71b7110f890f77e54fd2b752423d3aaa1cd69ca984eff37309b77c46999ead051b866375ffeeefada79cc3bd14ebc738d453832ef37efe476ffaa947997b571c1f08a6aea79339e65de4b3b13540e7a1fb905d87813157849f35edb68ccc7d2bce71a31f9b032ff826c0f032d721403504325e50e6c257b3b75fe816e1099896301e716d05069f4b727f4ab580dbfc2d6d068e9bf222152b45aa67048378ef8b7539b9f49bcee491175a8a6a8f00bd3cbbffd954627910c0a52287819e42a449e87f7f2217f381cc83e64d9f16ac426e9bb843168b6c0033925edea0c0df41e2461d37ea7fe2e105ac959d92b95979b69d351dc36f4208e5b7ea373cd935431fe549e5430ca38625077b12a8821ad7c35504417f986ca96d136971f82e5805d6adafd419f9594fa352f32043120aca2486086f92026583ca5506084a051ab93e8073c9215e39a68be300e037daaa3aba7d9464c53e2f347051d02d7fb9d2a4e957984806ee0b5a1b2c5d90e0d81bc01a67b913e613824e9000580362b2e496ea2def7abb03b8350b57bb2d69f68d51fae4d08996488b7d85736e5c637e5a9a51d67a3e47d99c6566c57c537b4ecd9453becd8270ef0c20fc4898524b864cadbd3d8c5fcaf8e730eb0887d87eb357458d1b8f7c5379037b238bc663acf3b45255c451c4fbff46d07ef25ca41f342bdd3084e26b1f572ff7860b40d21f947bf0f4603bd877a273965e88751d0ee2758c4537b1e0868928f523f86411b39dbf99a2fb036f0d9eace4f2ec3ec80349e0be9bfe4f49f4f8e2494aefd5c7842a9e842888c8aa0c069e89c34c3f56ea07b56a6e924e78eff4b56ab0a3dbe5637c5cac4eb1d94c97ebfae6927f293b78485a4b7138c5d1c98afd823f895226f3478976f595a61105f9a85aeee975313b1a89489a8a5bedbc31a2c86ca95d5615a7a181dc85e535413d15de2f2ef0c4d67fda849e595f758648fabaf984565b7579838e11555e29f00cab97c32c79a9c990d47bb2b78830053c92c4c5086a24f17aa5684dd69aedb74d761ebebf87b6ce20ff74eb8f1881d9d00fd1fd3a64c9a3341300cd92dbd7f35e9334231216b1eaa385abada8541839c3605b8513daff818be4171f75c3410fcb2b718205b568a1b969e87b5f0538360206594f613ea5e1c93063f335234a3af6be61d3d3567d85e392510a70732f7ea54a81e9df115590d8010e322782ac2086d2b26ad239b8055252338c9081f6ed8d9f383d9e0eef5f176416afdd079cfbe0a9ca47333592ca342795ad57d2f8cd1c2480415a9ac9ef6e4141cd6272e86c4ac8c1a6c45d60986dbda311250ccf2cba31f4a01f951b9126258aee193003919b79c3a25af713c6a97f23ef8e0dbd5fb6d05ea6b58bf6f0181020191ff8f16b699d52293e68fe58ff41ca412e72e0c5d12ce4728e5a612a295924a6d488992fa2c76551d9127853a791b4f6024d0f62e48ad3d03d7f50c9690625bf34f4b0f3c2bc362887b64daa600d21109d49d17e278a0460e5ed5a85b92e990e48391d569c422000fe70c988c5f464211ab53f0502c09cba387d5b671e7adb3b0ecf818ce80f77053830247c13458072f208cb64e9407875427f9f31240ea4abe5210a9a3ce479bc46c309d0a9546af776a607aa72138733645b1c2576f17c13279664d0d583505cf435a6c17ee464f86a3de2e16b3f04cd56e172f13fcf89830e2e3097391a7907d63e1fefc77a500ef8d63b3c84030e153c9e00437a4aeb3772e4cc5b370e3ab954105a7404e04500c5d1dcc93f61694b4107afb1f50be8d4eff52d64f70b3b25832d6d4c9a3da5bb03a42df7936dd7e81f0110714e492a382efb3966cf90c2b171bbfa1db84523e1851879146fef87fdd49860ca158163b572f11329c65a0116a94ada9b5699b141bd1924962a9322f66acd70d74ba018a457032476e2be9a36777f11f01a1ff6d43b20cf33bc26d6633c884eb5da0d3bc5c981dc28d30a1cc19ca50f32cae854b9273efc65fe7914e450a3a208839e6f9eaed9375d8dad636f3e292689d3ad6cc8c8f71e5d2046942dab8b18b50e43d89c6ec490c5bc8f4b586eee9a6533d07b5c7940023fb1e79bb539185bde2b243d063c11860819438c47a3ee454816e2101e0d6b30f65ba73f6b30b0f234045234324a315e9ba43325a0b4621c6aeb44d9a4b9f4e6b0b1d878da23f5b787eb1f5389be395a8baebdd4b7f03bb647d8308d81d3495b9655001b62b170f10d599c8c361ead422c9317f2195a9ad8a998a843223fa5ff27d513b604936ec2234c962f3ca841bc8a3b580e1318a27f43b67ef4f5c829cdc0975e37b398b5d04e414cd0c5ccea1b78da4dfda22f92888369e26e3feaee4c6cc011801e1bd6bb20829888804f89adfcf60b044bf23ba09c35f960e8da4a0d027939d965520725aec77d3581a58f6d5f2f26f8ad7109d77d8944fae33a506010d21d1038d71675c17f0125684e3724b5026c4518508ee3e6222c75e086b22a25dbbf55d6b76857f318ff098bc5e0e5ffe946c7dc9cb449eeafbc31cc113353f90d34036676e880145e156780e553c6bf35310abdb240f34a0b88b2bc7fbeae53a2006c82f32af4d85469d19d48a910462556d55925bcffca38c42bc4dff0482812353f38d54501233cc17eb58e3ac753ccf3391f62c9ab927e43132428ff2979208bb1c66dd66dfecc21f96001244574110a3ed218fb2c65b22be9bf128f59f4a60e79a71ff66f5c676609501868c650afd2b7f5c873f1eb14b257b3184b937e604e521634797ab0312b962d1b29ef77801c57cb5c7df36e587fab3b536028b45866b9bdb21110cd5ece9020c03eb2af70a7328ef1bc40f354ad247218681330b4277fc494eb462f73dc3c5e4388d8f5da636fc6810235302a0bc189e867378bc68c91a687e3fc379c90a69f734cfc9e1865caeffe93a1931ffe2bc93d3243483ac2f02a959c94aad4fa8d55f19f0c38879bdf15c45f2b83d5983be804d2542efa7e5cc0ee02dcd1f93b174f642ee392eddfc38f50ea9ecca8f31721c78321153649c4d8fd56ad6d2b7bdd6dea4860733a5013b2dbd8fa890df7abe3b97eedb55dfee0ded430d1ddfb135a33681cb3cc827ffb2fb3fc7c0b09101cccdbb96c3046d588029eb69720c8c48d1bbb4394f46a5e8259a396646a6406795507574dd0de1b4c318ccb31a61d6f2a8f5cd326580983e06680dcc37a1be5e1598ae653344e24e5cb4fa674720730092d8e350a2a96139c68486fefa229c5f971d44ed9a85588ca285195e92cc3a4ed2656be4aaf3d462d50cb0ebf59b9113f49b3047963c0faea64c5f59abc3bbb689f2641166aab52599529ddca292346d790d6c46595c10aa7d1248d2770f678b0b7cea696a80d2cf6614cb7958ead72266ad0bcebe9dc967d29e25801a810f775ede5229cc47e096fdad70a89a23338b0a444769b4be3e048159790dddd1ab534b65776845af99c3381e0fc9c055c4f704d52e3530451fb429d32de818d9ab5ed660847f50953dfd628288c61a0d2cda66b0219dfeb8cf12ab64aa9d1a65e072a97089fd972196039004eceecbdfb7f65d51e6923f5aad64b0b24cc456b8d848c9d4dd6337117b9f50a77c9e5a9b350887b766479438c47ac4a2c3ec048fff4f8fe8ad5e8269e0cbda8afd8409950fe003d1e3c51fd9a1a11cde9fbc542a9158d7cec91737ebe1452f47f65e9a7478301a00e739607c267b68ca981a58db92eff59e97cff1380494bd0556c6412bcd85f25fae8c39647eeb24bed6430035b2f0c97251a9d73f928610ace662b210eb18a081e49036d181619452103d64ff35cb8b6d139ef9960e3d834bd4f06da529ca8a275da7204b2f896c95d3f5dc5d67c4ba17c45cdc1761d325caa4c61926c8cba9cf92268e12c64292c035b3b242b8dcb9414aaeef713a06e1cae8157aa708e9e1f3fa1597809af269d1432522c52f9930c09cca5cac0b56a50edcf1b030a9dd943469403545841d66cf15ceb21eb4d708c44a2badc2d992d821f8ee365c2fd409db65410060a9c3a5956b4c0682c7c88ad9b2892882e83ead50951c0b05345887483263658586eede6e638293f902f629b9fc2e9de47e7a0218832abe4ce845f0ac3a26b1025721a6851577abb07fa0b4a6db19f21539839e47e61ef4e5ee0fefe694cde35f71f3be091b49cb38eced530bd128b4786b1c36d4141e465706b5cfbd3a01c32958d976fd4a2adcc47c5c871f6e32a89ac05d9fff6c55978b0e6ce0b067ad796ff091161e03c24cd442b907f82483e70faa26bef4855fce7a8b81b887e30b3dd0812a2c7c89064e317d0a21a96d40c55495ca0cb1c15d1de7dc36c434b8a162268c33025acbfd5e5c308eba9a0e0a2f8b0c104c1efa87044f0d877760d07675a1a1a2b29b2b6ad3cf0db5ef1b5c1513275d64c08d0110f40df363463a7b1108441d6f226b7627eaa29682f5b4837fc7939ec67bedc2b112da8e5cd49b36d9724b29654a32a305c605580633675e407dbc9f0f73598c5a959cd35312f346ff4e00c8d2a14ae89927354fcfdcd63ced4bcdd333bf953387e7306ff4631db2c4628c2c45980db284bd0664f919c06ac03080915c46f25380d233df358f4f354ffb182fd33c53660e0763dee8a741e27673e773079b3b1b28534cd9c780178cddedde2adb2a9a19d15573d61d4c98f08b18f7761cf5a1355c8a25eccb580f6ed733da74a77a46abf8989ed1d273999e51a7e60163e6a058e60d5ac3620e598a301cb284fdc762b05a6e9b1a6dcafdb44acfea12cdf5acde9aa7bfde68ae67b549f3502c3347e561dea8d233faf494eb1975a25c92f0a49e551c2ec9977c29f77b0e7e6b282828a81b1930d0e66f64c0a84dcd4b65abad671587b32df5ac4281b274eb596562aa3ccc1c558879a367354af35424a64e7f135252ecc06091bb7631e442eeb731f8d318717ec555283dabb9e66921668e8a254acfaa537b43c99529fb4f1b63ec19bb4fd6a69e5923b54a7fcd51b2e672bf6bb448467a86a53ad9247b648de47e5be4326a91e47e1adaea176754aa3941f0a967b6a84b8eda92fb9fa05e8a7ae64b68699eae22f777177bc514b99f355626c0e47efc25f7afa078527d7d029f5494861ef863dccaf4a77ff4e7a4b34e6bcb13832096900eaa11d2d4fbd1c2c2613ce757ebe8fd0e8ff298fff0a9d679cc2f20c914c40c9e8e406acea134e7e9f86335f4340d34d0fdf029fa148a58f67f4f673e486e9cc1cae431c779ec4a79ec8af15807227d1a02fde8c9e1d310285c815264d94fff474fbeab558ff7a9666808320181513cd67469385628ad777dbd6199bef1e58e00be8cf17c39e6fbb50b7abebcc9f70ad90ce04b57be32d0e4fbb3672ccbc1df4b9694ac388f5526f0a19095a94ccf58456a3d6311350f4ba8672c23cdd3335651f3c83073b08ee60dff0d9e159601c087b5ec2ba12bc675fc6f0884f320ce78a5721ef677e732d62ee98bcf97938a4c8932c874c6973732254001466a0438cabeccb1dd60f0654d5e7211e0cb1899ce647a5be1f892c56a62ff4b2faf588fb31b6f0f224b8cc79c95d4b3b64d9f245bcf1a27234b5f72022c657fd6ad67fdd43c8e832c3db39af4ac75cde3df24fb0cb2c4347f4396220db2848d64f9342f9265ac27d33c48963db9fc8868fe7e445ee84183ef853cc25f8d358738045ae17a56899ac77b566dcdd3b30bd53cdeb350d73cfe44b8b08b6ea419ec95167fc5f0bc5aad6825ea59b823f20b75a1fa8a2ee1ae67ab772bc29d981a5f7abea0c65ff0ab114462c6a08c00ad3438c48cd92ce3a7cb847c1802d91065d41743f0c355e83d6965ad1eec7983fea7eae92cf077385d916510482fec8a71190a8ef3fe778783637372c86b39187bc6c0bfa40ffae2b38ad8bc6f5024fb0f600487e819412b1df3e711c00dd6518d3fcb883faba8e603f07a001065b2f41ce3632c23d9295db1c015183ec84457f4de003da02f8aae1dd455caa801a9640799ca19b90499ca4a33aed0b942715948a2d083ab4c94ce564fae77e67bb057aab1a3608f3333c3ba38aa63e3ba2e5f8fca37e7af0637835be3de7b2ff991ad1b5b0a27861fd5521ef34a546d332ca819ff91578a88fa804c54c76f25ca9d716c7c1802fd9852f2eac31068f5330499806c3c68630c751ed2d0a69bec47e37ad5d0ef296b3d7d3b673865aca7df8a31654cd9f7942c7f4c29201d43a9907e54b8a33afe11511d7f9b1a567eb9685ae20c2b5c7de18e82e12e83441ef474561994c35f85ab3004fa285094cb569fcb6cbc7f6883fc113f1b1ffde89472a7945c57e595cafe1a643082553ce65f6304311841278ff99323f8e4a01607698c2017077550d45fc6cf20817288b80941269c71e61b90a904a3b23fa88245b94c45dfa5e847a94fd176c0f900f6f42989824fe55a83f519f118fd8a8a9c6c55ec973b385e5feac81547756c56e22b5758fd7a7f7845fe117d44d98db44d45da902018f0cb8cf9bf46508a19f3778d200ac02066ccbf35825266cc5f1cc148140d792273841658c218e1c5694b1159565004115472405c7962450715285541a252c39419a48c60089e4d640ea08501c214c08b8e2db32c398ae880ca0f103e4f643a104009071207356c70c30c03b861480f191e2d0410e686979d2d01c802802274a8c480b0f144031d3250aa8184410da40d338c360c793234b4b820cc0c2f395b70b2dc1421830a0c089b27353ac4507a21b96aa0313243cbc81091cc8c16ac30a197d516300b56397d2ac042783f5c9cc5a12ea13024873d2c27046c8d78f492f0d4e35a6b3d8a6b2892ed579287134d6c8ccc3266a70c1110a4a0cf89e79c78b4f6ddddddbdde5b6bfd3166ea23a54e8574d0f5aa049c38c432c7dd7d5eaed35fbe72adeeee3ddd638d2c27e283743e6db560395fc3f36ac07c622c7e2d23b653f6f4fc68f7c8b097836a7b38800110670535606a7ada04f33eda247ee90e7a7764a2d2d19d78cb889dbf195fdc7a9ff78d2ce0ec51a8265c319448a1a03c1ca617091480386b2d3b105c28136d22cfa73a0a855b0108ceaa9e7d5e0dc9b233d581e01d275de132be4dd4e78ea13afe38273ec1a05e172b29d31d93dd3d1cee12e16e11eeda70f786bb381c13f5f1a4dcadce4aedc6f85b9bb5d9eccd667136cbd494c350f586a5c41dac8ef95a6c08ca12619cc8046bfa5c85cafee5a88ef7d862454f04fb72358f1461b07fcc348588c7f28ec1d4d6384fca3da9eb38a7363ba6092a7bc550b56928f75b22da43e597cb343c96730ab184ddb1c44dc323f87d1f6b7acc82aadc3f274f69733f0d6246ee77f730d94ed6956a640167fc5f2e973d83bdaa1e65a2ef4f593d6ff4eff0a9aa51ebc2414a8a888a29a618fa1215b5a5e68536eb7b97ec52e42e0900717a9041a66d39312603f10ce48f0381fefa95ec006d3efd201a1da76de138a98214d9bf015ef9dddf7bbe8343470dec32ffde3ffcdd8fc41ef3ae75eaf453fa95e6140a2c6d93b35e12745cf1bddd8dbbad4889f81215f1d36817ea28afb5d6d974805e6aa1a8b2d64a62c74e6224e06c1288e5d4cd5ccb24fb57f71ef7ebeed527099c3ebe75c64c3801fbbf6064f68f2d65ff9d9e4a577929b6e3261cc9fd27b8ecde2b75e655f4d34a4f910bee2f7a87e12ffc0b930b29e8a53e8f1043850a2f7880e2b6a379144f4cf0e599fb020bcd02629771a0661fd43e200c21189220620a2949340fe836902aa483acb751d332b9ac40be7c9fda5a3fcfabb5da9da11d22cd43abc57fc71da1e6a1ef594ceed43c5629114baf90bd94524adfda6b2db563ed9da1bcc39477781d776abd3364c79d218fd97aaba5352ac059e9577cef1784e35efc1b344f7dfaeeddb1a7797cfafdba01bd54e8d21672758ae3527086f7eb7871e4199577f89d61fd1d8ec36395d611c7a5f9ca7073d7cabd72addcdcbd32c4102f184c5c89ab177672adf8008233601deaeeea8e9df2b879ce1b340c41b712c51a02f5ed495934ca5a299db5f55e5c57d5f370cdf98775f7d3acb51ab1d8e77c4e0d18dd4dd8aa5b9c4e9c38a1710495c583ca11f1c312fdf2a4c2e589af94f14375bafb87622c8ad4bbbbbb9bb6cc5faa872d4d7e901244163b5a4973f9b9bfc67b0901145564f7a64aa078bdd6bc619f06859606eeb434f7945e55daa2d4cb0273b6e3ceafc0a4c09c2160023302b3892c49e480e66703e4983e73f6f3d301073bf96de4f919ccd98f53a6aad13cfe7dcc66ce62cde3bf239a40755c670216620897a4240936a4759aba9a18af8aedd4516b2da5ded45dec5d4bfaa0dfd3b310700f8f04abe362cf45d3bad6fb9e85e0f5b82494408179c33f044b26fb7b330b0ccc98abb6c8fe9f15d99f040acc1c1728a167270c59d2abc8fe74429980afe7b289df044a71ed9a1679b0f5982ed35b94cd459edf58ccb6a277797eb3a09b8ab2c1e4f9ed65ca58ba2e797edba80fecd6381b502f1be6ac04f2cb1e419edf219832d5cf6f10cc9909e3fc960186393ba163c8f37bc894d5d47a9681f2853c3f88cbc0a93c2797a965860e9f3f80396b28b3e420cfc7e13f7e63cac49f3bde53e60d00cc593369d0b2995947a11144b9252770b9256188c0316cd626e507294d4c20f1793bdd14db11b7e6c3cd09babbb8a2a71c0c452811050e8b2820d1114a5c51bf1d0b42db951fca5caf89cdd6fa68b5cb71e1a105366ca2b526a80871612841c6ab55a22946465ed31424285e105fb85bb7bd5ebdfdf4eba84f524e204492ca7ad6decfe692caad6b82daa2a9a989195cbbeb95c05b11e5b694e9f2352404da6e5472f932a2abb72cc49addf1a04b38f946979413d8de483f1c5befd2ed5c363a1d72986221be5e4bafdbcbe6fb5d52d4a7e6fb5d39dfff22a23e387f23e3679ef520fdd2a5034157199775d5e572989ad220d4e5708082e572100362eaf5865f467f063883f4c0f38ca7f9d790ac73bb724f9a11715766060d48712e43c8f7f158f6644f851432887f3ca66387c7fa7f5cba95cd653337b4e49a7259fffce80073a60efd9c7167ead0c719754c1dfa373532d581d1b7195753877ecd88eb8cd1778d73c628027a9c90c112480669320da942900c82646de2b1db7def9d98b47e8733091fec90c7e74b92aea8fbad317c3a7abf8396ae31afa15751adf9e8d279ac3f7b8fbdeb799e85912e1dadb75ce7f227ffcc1c9d2dfed0034cd62f62883c97477ae099be4be78a7a11bd92dcc765738971d9bcb2e392fbc755c6a3b4f255cbede56b28f7cb08b5f7c76525cee599fb75e05ccfee3b982bc4d2a5cbc5c8f3ca105064b1e632d9cdfd740971859acb9f992705914b8f9c375a67bde9709f1d504d8383ab71d2c00ec40ff4c60d740662f920defcfd6c5a624a9e61026eae5768c8365fd72ef77757dc4d012e2bf10d0fb9ac57b6dc4d6ec45abe63e74ae608c1be46298a3551a83a39ce79ac573697952e5d5e72d9e77ed78efad41bce8dc9576c91eb08f6f4bfdcc7a5739d7e0f7f49bdef39c3ef79effd4a74d97dafc763b11d9613f1f1b80290ef6fc463aef4ce5c7fd4c83836215e5005bd962106d05611e74fefe64dd91f539ffe89e3f588e3913822508fc4f19ee68368f883e078e40a3dfac519d6ab30c2a405118368942483ec506226354c0ac14f3f28bbc8201aeb0771ea38cd18c2d824ce8cb1f187ea349e4d6443511d7f92650271d268dfe32fe753100d8f41b4d5ab46d57b230b9dbd5f8d1fd0ecd5f07f64902029501d7f13c85a6e81eaf8af30c2a4a930c2a4a97e8449fb6a73e7d99a282c52d9ca260a47cf5ef87854fd6af448163aaf3e1c55f0bcfa1ebb89aed0a35f450609a27a15d93872844913ea176ab2713feb0771d23ae3d9f992962c5b0ca6b58ee637880aa1d723a212b9185326c42fe7c010e8e370597d229696649a976eb8617c3de8fdf0d2073c30e88729f59684be50225346290b324a60bc50d275a1c4c418252c5c28a9a0054a51b6507a32a59483164a4ab2502ac24289869d12912b967c61c592a92a968411b3a44b98254db060c913982557a4960841c5121fa658d2e4cb12a5a825475e9684a0cb9221299484a153d282289454018592a827946ce1a224892d4a8870424953134a7e8052c203134a48b0849224257a28a9c16ac9d65a6b2df63c6badb5d6a34a64c8a2c485246c6390b05df1649be208db13586c5a8cb015e1649b52840d052bb0e188b031c9d9905cb1d960c5564405b6215592784125091653924849491245539225864862841049aa0491048828499c009104871424b1a120c908989280e0871e493c906b3d41aeb5d65a3d4a6badb5566a9194f10189165090b0e00912299c2081ea01c9113824564c8024081e9040d901890e4d902cd10189510e4888704002c3ed08184c8e6c518223624870c4cbd21127948e20b1e4484ec991216c474e90e4c80e488e2c1d398294744404484762383a526ba3242eba28c98a1e41d297be21894bdb9094a58d24ada06b4892d2224862ea102499a089924ad034241d69102419e90f24cdd045925ee81990ba681990761d0312153d840445c380a4441341726a0f20516921a414f410a41efa05a45bbb8094a46b48378481f401309084be2f8ec87c658eb2f8c81c81f9bc38d27d5d1c31f18d39c2f27171a482af0547513ebb45b6d65a6bb1e7596badb51e3d7af24d1de5f06971a4e4cbe2a8e8c3e288866f7744e4bbc2e88bcf0aa3a9af0aa3309f18a32e5f18a3263e16183d7d608cae7c5246427c5418f9f04d61d4e4fb62a4f44519217931aaa18bd10c52180dd1159189a2480b288ac23c51e4858b8fd6ddddddd2a22db8d65a6bad1ea5b5d65a2bb5599c28a2092a504030f164091d9450d28294a586248a660853941c397ae96a5174b620869c6c319e2c15a89b9b52c4566bee12b9e0e1a618e12427e5242586e250ea435e64be33e1d4e6bb91e94479fa2dcf2721bc98f7ca104c72e951f2a4de2de5b26f31b373f3dbc9653526e983de08a133423ac87a2508814b7c9e0f5221a23feec6d4ed25abc76aadde65e726b190ce9c3cfee40258e7d3bfd307056f2ee95772ce9f73ce39e79c77de3bbdefdef938b6dcbf53abe755afdef1478d9ed89038f3cc1e0c6248f6b809ffe68382681e11f182d7db9149145d42744979acdf62115d36c37f3d089265b7c62029b41ef4561857cff3bc9750eb87ccd47cc93ebc9f79878337e177980032d79b07c4d2a573e96cb04dfdd7b746224fdba1fa10bff30c81c49b31b4aaaff32bfe2849ff7e0bb95cbf0422956b1ded5310549966af55553d2c0281ef915e5006c70f3a8b6fc7d263cae5eb7f505d16df1bcba02c8a336a1d53a0bafcaf039cab6fa4a91fe3de9ff5c1fa316415fc99f7fe860d88f1f5a73feb2f59ba2cd5e56b555fc9b25e1204fc1fc9033fadf7556349fff50bf0c70eb824cbc98cbfa3ea55ef7508422571eed71f719e8e3897e4313d16c416c4b6838eae22594e448ffc4175332ee9c31f933ee6df3a969e93f5f535fc40fcfb34e4314302a139c64fb282efbd870d003f46b5f6d68beb05eb7b0db0242533aed77beab97efd5ac91208cdf77f3cd6f5cb1f1ddfd33c382580ff8e34af52d13c48a1587fc918ef7a30c6781dfc18e3553d08132ccaaeceae9172f1d8bd0fc2242fcdbf2c3969fea321cba04c55a38ffb81889f66bc3fc3abfb1bd6135a6e2028ab1eff7cfb37962c7f501dfebebf2afb37372c274f47d61391eaacee5525f8e4bbb5240b9df11c31e9e37e20defffe5e900442f30f1df97b0cbe07fd371094efdb113fa5af1a7960725e0c1e1c4b21f92bcae5eb29f983eaf2f7f75f5fefa0df283e0663d902537e3d39962d34e5d78f6319c4965f64d63163860c08ca3f87465a0d58c3c38926e1abde5c4f5987836007a2a53a6bbdd77b08f4c343a04a32a9f920b6ec7d1d4baaeb41bcde10f1d6d77b23ada48740afaf197193d7882bce6393a6fe9c321ca319eb2f2912b9d2a75c5fb817c4fa25bee1266590ecc5ac2b89ded310c8be37ce4cd9e0660eeaada6d51beec7b399df22dd8a58ceecbe9d8a2c83be999dc77a66ca6333f7efa015276936e5262e4381ea727d815e08f4b2adb72d5208d55daacb33532b3cb39bd9cd4c1521f1d0934b8bcb5eca1548f56621ea00f1381b5757940b0d1a4c6e1e3fa8426790c9cd7b37ef50983c46ddbd3969bc1f4f141287c4da8f58fbf13cef7bc209cce47e9b1cf5697d4701d5c39d883a76fcb8f0d3dab9a6c49a58136b3f3997aed5447572364e1e6b3c848786f0d01d237adfd93b40c6a30bccf4f00d37b9613911bdafff3df879503cd61e39019b0fc93e2a738226976ee6a87189b1699ad9e10773c6d6d79195bddacc2ef7d71b2e8289f0d0d06a657369f15818a20bcaf5048658ba74aea721ead3f29cebed0bb1c4434556b6faf545eaf3f57ba84fcdd7ff421170eabb13d12a8916e7a80ee84ec41a24aca4081fadde6e62ed7e29d65c3afa249638576bc65a44756c142a973fb9706cfd1db14daef54375c88825be795d582fc49a1c2f8789cac8a9919153e375d16404af74edbc4becc9c8e9ec918da130519f9b6f28778ce8b9c4b755ebfb1d2e824fc0e65b244e8fd6cc08274db4d607d1c0cb856883139b167ee7c49acd8deaf4d717e12b7f9010cb7afb11a169e1eff0fae58f0d534b04a785a44b47bb2d10cb95cda5c3ad5fdda84f0ee9d2d5e0962886e4dd429cb974e96e535aaba6a285e3a4d1184b315b3ce49a126b3a46a11d6e0dbf8e2091a785e40eb5ac4f735f08f47dde0b3b893867673bab739eb113f69e35d726b5de56b615ce46ef8a6965bb53625f40ced588d323fcd6b7c820383d5a4178989852a3b5c8ab8518440b3f88a6c2b7d6f4c40d9ead694b11c64ddff714935ea8142b98b0921832453309010800f315000020100a064542b140122599162b1f14800b7a9a446450194723811c46310c833108c200280f00000020001043885184e00020e13b90561d1f544ae1206b39ee5117c0e347c43645a3f0bc4937104dd45d8376677d1818998f7adc178f1494a6e58841ecf78b706b055ef94b5edbc1c4c3aaf83fc9687fd5a461b6c39c5a903300787e432d75df858b17bd9c244c7fc893af165e5959ed245254404ae6ef88dc7aac930fe6cb43755c1f56029849806aa423ef8ea7a70cb6a87415f0d81035c8838584a44f22d1e75adf53918b27a2101fbe3bd599d10a9825542a6a6f01d46b5bdee960b146b83c9065ae3110bec7445aa275160a27e4ae71cceda128c5bd1666320385f4544ed9224fb26d8a876977c999ae582c52815ec805dd36754454da02d100ab25dd4e5061855354d9ac66a2101609897a39d035611dcb3a542e8066026ad085bdf7e4684d6488db435ad43513b253c818e587ece1881e7ceece65e8d8fab4e382bfd9f4b781facdb0fc2c19dc420de59e08586277c3d869fe1688fb23852c24c147849636841327a59767e32506e83ff325cbdc8ac2b968aef3acd341547fa969604db23c21989872c824e2a89d9d6bc124259825eae19118a3304adc591ab5b9df30e1fe2c82796faab8de41109fe066b34f45f1371e20489bd66b528b94fe1601db0e05cfb031529b8c7d3c14a54328470eacf7f653fbb387a893b733c90e0a368ece423185054ecd8740a6b8662c2e593c9ba801f879a79e2b48475b36f446d1ee29da40dc1d3a6aa27b662eaa708c21d78d55778ebe44d46bbf3fafbc490f24e907551dfe1d4bdf278a60beab253b74adb6cee9fabdd1a9360ec187b3ea21a8e88c6f363f46982949aa6b56085417ecc47fa7a6b44105c64fb1d6b8f3c84008e25d8d6b1f563242a1e771ea20c96c37ed762b12d19534609980762c803e95f844ec223c07f5acfc2f634ca6608fe852ad9ed3ff4f2cffcb2bd35e2d4bc2addd83fe9c3e8044fe029c75da1be51a5977f8da777fafe73a5e7391ad20c4178beb13e82f979b046b443b503e85422a0146097fabf4b2fa3b72c290f54280d34982c24e0f3e03e352088a525115c866a1bc6245fbabab13e721c117d86b8d847799046709d9723b74cc626f2cfc8812d1ce8b03f656c659ff92b4cb3ada28435d2464f98d18c12a0f5aa3ca1586caac8507aaa5e7afe9246a35a6a3899a61b84bd14265b4a55f10fc7aa3988c22ac9368832a766cbdf143ec1e0c65156277317086f341541e12be407f7a6a13a289c5fbd5ea33acb0e4aef6ae01211094514903b444e4c3f38c245906ee1dac343ca51d4d3711819f42e7cd8bcea266d59c55937255db57fc3b7d23091c1be575cb50edd87da16dc0dd5c379bc23640c8d65b0892f83a337eb410e642c9df80fea19ac81d9b2fb015937ca525d5b44cc9ee25ecd70b0834d21cb0c5d2e106828ae48bd899233975f2525f5e13469076af0c556a5e4d877697e82c3616df58a0d0a715860f3f449a251e52cee36f06733a27174344114acf1d72e7e55a076bddac8d1e256bc65aa2fcad0c853b2260eef71658d88492ea927058eec9f3184ada0844448ae203239ff118ea41baa208b5562dabae940b8983407fe0f81fab92462151e11153c1b4d72a0e220d1efd61ca1c5ceb6abcc35e917aead56692365f4e0c68214b829d5a6c6dd3994e4c9c89ab2b580eb82fb4004263b7628a91289c408d0ca514dca925093abcaa7292d6a07aa08a0c254af9fb38bed10ebfad8da5dc5ba3d7a44853ebd58759fb0f5ac650491ecd0ecc0e721e9bc34cfba31c925d0398b9ed25fca928911be7d91f18aa83336ada5d231392b4d081736bf0f51394ccea894e4407ceacc56071b3829807d2602811a1a4e249c0aec2c7266502644a7f10d70704192a204e8e67c4af38ee933ece90d308d28f35c1bd5f5e0ac5a3d8ec020555113d93b23e09d40c2a36a195681f9c454b3c8fa6ef6b5f0ebf8ab09f7e8486b4577d16c8794da591f839d386fd870e19e3e9b81e4ae289aea77142b0641a4a1da2e715496deae4c4c8ecbbe88e95985bb30196898329562190b2349e05aa6741f8ae50f3785b4ca70d18f1cdba597ce9e7987e9fefa489c80f6bd5886f5e5a77c807c95874195c1c3dc187462bda5e83a8685f42531b4271f642358faff20aa3ad7140acf348754b67954e2e3121a43f724bdecdfe37b4005f1171cd2f81efad0b3d7cf81312aa823b5e60f1b872d17190e27cef28b4662468b4730214b6e6d410272f4b796c6af37cb45fb91a2de539de1efa4bf7bc7ac1f5719b7b1e9f31d0a6b08952c74ec2c505b5e9143276eebee1d8263a6cd9f882f46dc1f2179df3489b18be97bc4f9b395963bbe9cd09c2894125bfbc3c4e1630d74ee8ee8df0f4bcba2903e166513cac27539c07f0908d1ad24e346e351f40482d71a09d527e8a08b6a665e613355c5129d8c65c61a7da8df0ae8dd11576c752ebe0f8375b9a185cc2fa7e715f5b3de44304e31e2900e9209217d9538a16b6d4acb171285f50eba0d54b3a8d7de6e18d261c5842481e30cd3194f17a8c8e0992a83ddd50f8e855c4fc25193778415e84e1aef4c1436e08b2b4dd9cd233dcf3d412c3cfe2d6458d52c3ce96e854359f5b0e0c5fe9d4e22a940b4a8bd6567f43e766922c23e8a6c8c9b37630e3143b61690f60db4a2953a89f556102482fc46ac2e2357e86b32ac4181f4fa45fade1ad73d14d33efca6f78e564fc8aa8f293681a2fde25cdbf5f343d49562fd2bf09753b1c2e20239d933e8bf78665cfd551ac2068b6b3aa78862240b72249729463e46b60adf36c1601c46e7a16cfbef5a1ddcd6b66c54a726c46169d5c3b38d21a4ab5f61c1625d42c0961ede49284ff25eea11702569e1c1c2eebdb0a2fd7b8fa135707e85b8c00114d9d405a4ab6780fc5240212b829216c0b8821623c2323002d9ce76b000d3892a6fc91a62c61a30ab74fa249c2a5a089d307efbe4d5b60b60656bada9bf0b29727ca505f04e941d7863af76c187cee36fde90c50586154854adecb530300c6d58a2590275b3fe87b392c97c9363242c80bca1b2f8b4a1b057767202f266720f772ba9852edb22aa4b4a1852e97940bd43c6cee86bee6517b2bd7e013f9347c67d01be6617b152d194154caa951f2429faf5e784558b051080b2c4997f8825a337d2445349e08894d215e7c893ca6bfd68540f87bf6fc6dcea1131e1e093c84394cf2e19efc51436675385815318888dead34c246f4ca45a234847ffa97a93f525fe31ce2e95371ac542aa025007c1de656d4eb3d36fccb03eb3a413d1b02c0f2d9a3048c5ed799c98b6d8d0d0af9c62ea8288926c42ada895df7ca5a976c385d24a037c3ba13dd0a8798bd08884397d995daf50071b9e38b88e55066b5dd51fc013b74e608efe7a3aa5a52057ee1f685c19cc28e0635df5c52ebe39ecd79ebb9c1a9974aec2f27afbdf1ef3bd7d80d1168c0a9c0febd9ad47b8fefd373d2d3a570c7ec28ad83f4c1df5cbd36936679cb60edae4c932761273878327348417d5bc9ea6241eef00fffcebbd66f40e5288b7c1048a239d676cc4e0f3ee011248cfca3e1a5b3801c1ebf4d05ff9ad4ed79d3cc3b5158199e1a46562616ccdd6014e18af24652a2093e042ec210a045c237e6bb11a006861c57fb50b7ef794a8ad44d7bbebe873c1d3e10e37979e036359cd67998dc04a8221a0e0be9af44a03f56e697136a0aa2f74ad8184879e2ca2016c17572eb0b191df6014c44ef1d8dd0a626fe35635125cd459341f6cac788a476d6bc0c3fd1b3fc2fe239b76e7f4f0ac1b1840a45bbd7714388701be31e59bae040c1125f4e7f183e1a4958fba6c8fb459e6a515700e76c00fadcce25d728b8493b1ffd3da240a9067009fb910144ae4ca8c6a8eb27a622576b69df4129a74403578ee507794912e9f451fafa9e027e516894194181ef554c3b0d1d1e1297dc9947c8f1fca8a240fbb3755aaff622fd6c3a79b59dd86c4d6494c0f375572169fed01ea570e9eef594a00ca24f3a272e27c47dfe73ba1ce453821018adf1130590e36fd94b86c9fe06e96c1f8ff5e97ca932bf208069cc554ce72a8e524b474dad6d5b46495a3061e8458137c56b405edca3887acf0bd12b20279164e61c195c43624ffd74b67ed0f8202a7f92ff1690f23fe8e95c56cd97dc10bddf5130d6afbdf5dfb86bc7d4bb8a4a6471b67d7def2f4ee3ffeca4a1a73061d7bb1a431c82e6be896447a4ac00aa44a005d8be614c13063da07c2788e9bed6713a34103ce05523a1d8e1914c35ea431d0776fd885431c8f2f8a899066aad614228404a7595e066469e7d6e221ab747e23566112114d1c06ac9cd093535d8ac62135898eb54008f11e806826d725ab2d8f0dace81437ebbf77734ffcabbd448a26b3cc15265006cc13541a0556e7043cc7140ee63310e47f740083df899056b2b6512851c2b6a13f89dd8082a109683f15602b98004f2c7a390829b16f0d02e37d215d657dcc98aed5714740529dfc9f08ce6aaa73e745c8d5e1b5d210b5e62b71e0262924792371944027b0750e37005acf7721bbeb1d0e5d60d948daa5d02d1805bebf86c15c8419d025aeb37902451d10912134c28663ea133075087b354909edab042e41da3cd3a3fc6c93797ca119f9d1137de4a4225f872daa3a3be328ea31c75d25cc568f61e4e17e3ae040b83306fd64ae127b9e342c79c93837ee926fc0c7624c2df22dae0c9ba271f40e84608e9f97fe71a2b20160591904ad073c9147e383bae8e718bc6ccbf96dcd33889a7e38bb7304255a8f99d007cb95c6a72034fb254c2290858731afd4d3b09b3dbfbeef464def9a28f4375fcd6d696c89e77027b81dd7af71aa01c5433ef5e882171904a7414cfba73066db69c744f71a8127b7bea85525802f85e45aa7b3930cc1b04f794e1da5732ff79aa3c1bc79b3a73540e9d3379f76b1eb0a13d95cad144ad24e0876bc5430babf6f895dbf5be933f85b71391b9a5aaa193dacd85dd14aa74b7b8dc2e730702d8b49d706749caa71a0a91bede555f5f41df5e3e5853b99ff0fa59abe302244391dc5e35640709834f02382e65b6a6467d44128219d1cca4c0110e0871def2ba4e2623d540dae97d3c88cbed88a900609d6d85da6dc741284020d11bb0cfd74204bc1f269f2fc57f33545e0f0e68ad55832e9a7119e0bbc214bac8e32dfc80428fb337e6cd2283a9d406316282e954c4c85f5dbe863927322167f644ea9112fe4c897b01f4894a4d25cf79d6e7da714dcc4877a9ecd72b844a20062a3f0b095cfe920aca348fc47aafc8c6d6d89683a4e501ddba5f0fb00407fca0e5c0b514b9a73ff5064642d1b43e444efa99b3754809864552e442ae215232a4151c17b243343923030f8d74b8e3990a18cf234d3e5e7e2dd2156d3782b9938b3af0e142c9ab25704cdb8d9033b898aaeb6c50d63511580fe6cf7697b0cc25ca10b4b0292d888de47cd7923e13122159da5399fb12cb7d56cd035d7a11353eed107102330208eb4ba434cc3600c69fcd101070085086d27c28f4c1e05ad63d65d276e7acdf61645fb134a21b059648f0649bccb059ab19aa5c90b6f8e8bae0c803d6dc4e4e42156085851b86e02aa7c75c35645155eb9aa2c80cfa5e14915d87c5dd1379342bdc13075de531dd463b73da04b662475e006782844462c000d46e1b44b0b6cf8ae4bfa1248725c7a2a7201c2bcf91bdc3f314a05ab1d5c66fa5196d39076ebd0b0409717cbd212f9e42c99f47945e389eb45e97130c6741567d42263cf275b523df508fad7f0c2e66a54d1db64b97dc856fc1116bc78c9bfc1044d75e186a6da4e30ae5ea23df11d492726c95c48dc27bb97790e8eeed779c0b2d0cab34d95dc090d540506c3091547a3f62bc3f0cdb27e787ae7a3c3446ea8fb60a4b11edfd427ea0e53d47a3e8d76a412413377578e08ee12bd6b9cefcb48d95d3c6ad369092947c32a86b65caeefa948ec50748b9c348040c7618a0d54df2f495f58e37c4855e20caf99184a228ce9dec20478170b4e00279b6dd0116e8b82c553c9dd6ca30996b290d7a3642fdbdf2ff3d4967b0846244d01f4b1fc53a48b1bcd35ba34d31e8ffc46629cd2e6dd48cf08aa0774e5d86855b3edd2b7908eef8586f56cee2338d0df27c2fbe0343d1f1b5388f1f62df8b58d0101785fb71053787e54492e002283d97f22f9714ce99704a56be017939a528ee81a8310987c67111a0c2e84084e1f8a62302f1c73a31b8a1308d781dc10d11904cd77207fa18468992b8a6fc48844ab64ab8647aeae2f28f69307e1f21579222ab37612a04e24d0edd26782649bf95a89b70bb3ed4b2e25bec62ac9e81321c0e72a9295967e2578cf092b79421cf583a58cd665f2f44a545133c996ae82d03eb98b07a136276c664004eadf66b9e09beb34699066326804797720216fccc74e5b456e92488e0beeaa7a413e459b818d5a11c7013d0d8357ffb679c5fb3112ad53c1275c6349b185f4da3afd9cc37d205bb3092b32d60fd68824a7ae9c000f8442b776a8db56b1b076a568b6ed0a404458d97f8bf3ff0619f19ed728794a895f807782d9d076d1ae0004cbc0f904bc08d01c0aad1dd1f10cf8640086ff40f5438a7bffa6fbcf05a48380b076f33c507d9882cf0f0a94aaea0198838bde5c70db719361ca372cec99b03d4d51aaa7381f336201d85adc20e45d4e475d09aaad8fd35d919516aee05d75259fbf3739473d33d97193cd731839b2e9aeb85ce9d37cf1d92c88597e58298c6cd9be4824472e7cc7087a673e1497041a772f3e6b9a0d1b9f3d3dca113b970b25cd069dc5c135c5054eefc0477e8542e9c3417f4546ece3c17048d3b77863b349d0b27c1053d999b33cf0585ce9d9be40e4de5c291e3824ee4e69a724100323bee22635f96615545acf27e5b0666db4caf9025ad7f12e76b1dd89a4c2beeb3f05c4f7c2e6a04f7fb646e8e3c17143a776e922b14958b738e1b3a919b4bca0581c29d9fe70a85c0c59fe5864ee7e693e7822273e74f7285a072f1e7b8212770f364b9a008dcf9b35c21c85cfcb3dc0ab9ee4966783409637ff6604d00ffe9d29ece6ca1c43a376b59b32d9e536b395b9274665cb2cfb96fb75c5330dc8f4cee742c9717342efe2437a4241747863b349d3b6f820b14958b3fcf0d2d9d8b97e60e9dc89d9be50245e3e29ee0864ae5e225b843a772e7a6b940a37271e7b921d2b8b832dca104714717c205151817ca41dce804b8d081714717c61d753017d4a05ce80773a315ce851a803bea00ee68c2b9a001e742339c1b8d202e1420dc5105704713c4051d0817aa61dc680471a103e48e2a8c3b4a181774642eee3c379296886b3f95cfbd42f0e03a458bb997a7985c75e83ff75b1c31d7ba13cf2993ab3cb6cb84cbde51127f3e7934f04292387df6bbe4c15c11970633cf5551e3722f213fb81fc5445cfba97cae05c283fb2d5accbd38c5e4aa43ffb99ee2c4dcf78999dc05d497eb5c5cca759dc6e05ea17e711fc5845ceb8fb92ff75c33f0dc8f4cee742c9717342efe24f7417ee7248321990134c54a80fdebcd8f8532a143f8ac3256684c21754f0d58fb499e06d29e73dbd612f9145ecdd6f25a9dd0ba5f5574a8b20aafb1c0a9c6217f0a0379ca5507a8eb6dd2cd3d754343bb78797748aa2b2775414fba79a7b821d0b938797748b22b2777414cbab9a76e2844172fef0e49baf2a42e88493777d20d81e8e265dda18fcefe71a34006c07e3656355a2004d83653eaba91475ed7b9c0db62766b74113fba77995d7b43f7dda1ebded4b57f76ef3fba77195d7b43f7ddb1ebceecda7976ef3fba774cb8f64db9ef8e5df746d7eea37bf7d1bd63eada19bbefce5df766d7fea37befd1bd63eeda99baefceaebb66d7ee73eedd43ee3d53d7ced07d7f76dd33ba761eddbba7ee3d43d7deecbe7374dd31baf69eddfbe7ee1d63d7ceecbe73c07567c0b5f7ecde3d77ef18bb7666f79d73e6bec3dcdceebe07b5bbfc3d5ddf9feedf47d7e7d9fdfb76ff7cbbfce191f5f3c14824ed008cab16f91cdd1f8c8a49008c2418c6c62ace2a941341c7aaa033ec7d69526d0928970fb69ede49e76d1d5b5c36735fade4c7820101e2cc576fd94eb96f29718aa37fbbe9442847aa5e622bfd0df53eeb960a85053bb26100af7fd52ae1a6b25746ec7780e72b59c45c1b88dfb74b403d83e365bb55ca2e7f0b67dd3acb64d756ebf65a49d66620ba832e6d3edff7680699e50bab06065f690fc4f22e272aaa57a70d4f12fb933019d3669601adc14e9abc59e898d9a329190cb21653040b9a4c06483c48b7408144224462599ce9b586b043a17337d613dee78d139cb101bf94ecd7a8ec73bcbc001ac58e2c77f05c99a3368175e4ac537f1d09a339dd3ae47f07b8eaca5a46260ac00d06eedea3a96b893d9f7efd79c63a1927a7523dede2e30e4b3f30a624002021e5d0af291e6f477b80180c8779f62d3705a5f9aee6be860959b60e5606839a896fab1954364b076e1da52c770e8b85e0356b0bdf45452d49a1a3065fc576f9ba928d12fae410c3fd3ebc0969c41a1c914cc96a630b9e27d16991072e12c72a13f4fb15a9818960c70d56400c6ce2bbd4ed7e4d8a400a4cdbe512411342b7aca04e974bb637dd61c2a1d72baa481147f50b8321560337be39c5fd9a66e0aabc0a482de4d89aab02a99946eb22db8d71ec942a23addea289f501074ebea79bb813bee99ff44adcc34bdefdc51e46c94c463db6fdb56499b77a731cd033a631e2b9e3dc39e79a0db8dadad0509bc43fdcc12bdaba3c47c3e543035ef331b33a31148d93c68965698097d3709e240fa184f890f0a8f71ff68903336db1d47c0dda5f20750738257afaea463f4896a353b77d69234c12643fb0dcab414ea3dcdbcebde884c7bdb7d006c477aca59512b2dc90587c32abeb2e37a8cb005d2bdba9ad87335ec4d0228fcb1a5eb3b7c34fb22c7d6a0d7eb8bbf6f6d684e0279baa7ff7e3eaaacb6d95d5889eefb323702f67bbb6b12c4b6939173992e02f40f7a2f1bec9713e45584e5556c4119670bba86caa1e4755b12185f108edc9a2eaa04ca0d991223c16c7732e5ae5d297939f0c21fe702230ad2c7a218604378ad29791986c7b97b70143ffada0fab9055ce653dac03b70c1855e6fc96e9031533dfd1ed5c0a1fde5b4389b89ec4b4bc468da641690f169afda18e17f54fb267c84cb6e21b164b3fef035e31bf88a337e29c132a2592e70e31c5af76d9c72c21654d453b83dc1d41ab7d794d2384d4a06023e2947275cc9c0533027453d23b1d6f0c20840d85eea48ccc005af65b04448d6879a222ba9f8c4c948b18f447899ed56b3549573c53c0b61009f58a2ec1b8100956930bf806d7647613c9acb3559d54e3bd354b777009bd98c7840b60a4864f2ecad70706284c7af6eab004d78eb5ae00e86b96a1260e597baab7976585ec77d86d07163497167b93937b24a3923398a8d92b4612ec95d54894dbe37914d9cd172155662b3cfe9d56041f0b1c48375b9103b1bb8bf34c3e61ae77c5459c4afc1a3e10eec3a9add67b5f675daaf357c87a9d4ec7652c6222962fe4a516e69a47c09ce4d170c6fd7d251972479689a40b617f47e11ad721bcf91ceb36082e8207f0ea59773578f88e862b32178e1f915edbd93a8a1cc8568eade3f2efb18f7890fb588f5811ab8f60afff3533718f650d21e246f3dfe9b9619cf767c1c2518b70cf26ab25f490135a9b0babc3509e32864c5683909bedc155a610a9f08c688cbcfcb731a31f0172c33d00de688a15fc1e53de1bb3ce1d145f0c038faaa805f1d26e46542fd197b224f2a47e11b1d2a2dd8c025ab9565a5ad0e04bc6bac483bcc4756f57a630e19b7818d6d820c41fb49a468ece6c4e720b861c120ff61ed74fc6c37ae719d1fc8047b56fb8544ee217b6a997b2bf0e93936b58c19d92881682e48cfdb1a441f37c3ba06df250fcb0a31e30cab6d1a24ff88b9a0bcbc9606dec65c0e05b16ef12ec1035d40b2a419e48b90197e4d116c9501b790f1b6ca27c846a86d4ce3e96cf0ebbd07a280ef21773fef1e0107397ac8902533e13787ef91646c9f70e4026e59291afa1fa20dc04fd2014fde001bdfc3dce9efcd28c83bb894323f223d88b3a9e853c441de51f8df43de5af80387b9483c3c04417df9811dd376819abf0483402c507fdb75cf771bfdc9dc463beaf0a2e276ebd9eca3a71a50eb666bc70d360ebd383c19a416ece7823fafae22d6cd56d583ef10c9575d26686a35242fa8138721f37a434460c9d99fe6551a09f9dc8918bdbc322927b73208ae022c58ba32b9cb879d88f851f5fcd87b1a29d301ccd7b3ae913acb7da0a570b91857611c7607c08ba00bf505108ef2128d0fe9ba9ecf3ad2bf679668e6694eb49deed2a4dfb4a157ae466fcce81f30ee31222d9504012da7330ace09c255687aa6c0b63485dad5d702e6e027124aa5e7b2308b7911e8a3bd5844f033b1bd854ebcabc36e8d0d1ceea94330493a1a78dd28571b72338ece27aa2bf89a8d1f4922da4b12b027030af7f340dcdb1dbb8d608a512f8f4262227e0d632c5c3a61c65d758485f79b9eb6f743428ef0ce9d051f9183f4608d0e86e0a051db7319d459d6cef1c05d2fbaf3ee88c939cff10437c39e4b2bf91c4f4787c9a5d16293a2bce1532e24dc379db26ba35343d022d05a96647cb1841cc7248432bef320964025966853d204b3547bfab79130630087a09a5c1b30714d674ccd329a6efcf45bd2e823895e92684795d7beb85df30dccc4b38b965dd57144808b9d8187c33ad58cb5a52da6348c6add226d587a0d84cce078f5c7214a8e110dca648ba7b9a051a1eb03dcf40169ccd400ca4e21af336ab4731275f5f8440a204923ef2d5d6101aaaa369043dbbdb3330819218bad84438b5f0f8b84ff3fb8ddfe8d87b3822d7c1f143009dad13792ade24abc8cc5270b62fe75a60f9771c412b34dc894999d43d4acda917ad6ba1261f1aac2ac09a8053b731b1965ebcb34db03db93463a5b072af3d286d8bd95abe5f5f94a0f4834e94d226c3f6321f2136b764228cbf6deca2f0de080c94d5ff0ac93d54c61ac664b3f67c4cd20fdf9ab9a1d28872d97da7c704df265f689612788c7bda49e1b7622ae6a1425eff9c48ad8dfcd69976e9a501751b01a1a5e82a3d0583ff1541a4b97419363b67412cf2d38ddb4097d6d055ad736998ee960303dd17d9708057a76dbddc799a56bfb02c84bc8db77bd640fa3ec4ab32c322a536d8ed9ccb2a387e4b4abbeb18140133ef4fb03cecdd7c8e99ffc2724f1237487b259801c3649fcab91b4ce34cd1367e22543336dad87b87296737d424a5c283fc9b611e67abd92e317ceb563dbc8299253375bca2cc69f0cde7fa16d83c5e7f7745d52a30f5342ee9cfeb2abbecc9ddf75d9cce89be160aa8e8ff063a79377d4c1d21c8e8cabc67df6d053f859e9755e88d396f4036cbfa3b453d77dd4377e9091aae0c838d3e14ab5fd8acc0f37419a78dfc83a2f579f6f1acd69a43ce05f76493d30a1c8a0c5bd1bc81b6f1e2d3da3b29cde4618918731caca7380f17d4fccae5056f476d6e9a6e92d253eb809929e553b7ed78638ee2b58d268d4cc6e8c99a5e12027a78d1e34a4291c6f05bbdc7ee3ba1079e0a3fc3b90414e08b96ff6b66ce2019b2cea21994597417097f3ecb1273b606ed7f96804b03d412cb908a257a7e5d54f2bb08c0394405ea27cc5c5ebdda2fb8cd011515b409d84722046100174fe991c236653d6eae4e5886e5ac83d45c7c9b8275dc06447e6250d14143ffdc17dc621eb1e39dede2b000b5291f4fe6620839d3ba19853417d653038c230c2da852d3d308411d956abc4b855350fe47d55a6d333ea019b28e10105a01e203afafa1ed829cfaf1150f065151e3f776a41751787c17bb0d12c60e3ffb3826b3853371dafe659ba78b5478ee5a9623f220616cd7f793c6223e81c8efe19dfcc75ab73ac360cc4a2256427d5467e2bc01e041823b84b28907218ec70617baa781cde6759e41eb860269a3718ba8bee37153bac68ae89ef64d31fa4ddf24367f0779fb7e182379dee90f924c162df9aa8d82460526df590f49644c8ffa28f291fa2d24f029c7ae73e7928d19e3bb190443607cb78e63a614a2786681be54c69fe845acd0ed4dce8ed73793370392bbb84dc5a1c30149058dd439b5e5cc3838c2e610c6c44133ce369cb1c9f56eff2770e9d44c8386a3b6ba304123f839141970cd2528409af34978708d1badf314b4edb3726fb1dc4c5370ca7101c151522e2a20739cd2bcc2c1bafa6c3cd205771418b26e1281717bdb3485867d0d4356f9841709bff98d7cc45d7af3f48b909842cde9b65a82481383422a397b1c1c45920938bb61867d54e41b02e621726429b9a1bb340712d93b676060dc268c44737c88849434423cd74ed680f8db471a2678f8c6380460e1175912f604e8ebe38750409f90b3b03a2e5fc0b7dfb2902c20aaff0feac2a1bfe6127228c699c5b04d3d07a6862d9f7594d8ac99756914446e2ac423292629ec9080d72afc0a95286900497f4dcbf1ad9b17e2df8dff029fc7f5a14eb48c414a038e3459ab2509b3a95381e579a3d4d8c38cbb662a485598c3456317b2300dfebbb2f8f2732635adfeb6283ddf820c1c4b67b58dfb3388679fa812ed22c213b4794c93cd1a223ab7fa101340c6c6261cc451aa68fb1cc43d4173855e490808e55abc90afc0de6a29e99d6f9d5fa06a677890fbe119cc412d1e115980f8feb7c4967468fcfff896f94f8adc42e3096128ed68a89328a6685cceffd2c9e85cc8865671b20740a7e8518121dce7133e8ccb80a6b122c054508ab0785b2c97e2c3873bb517b03ac30fa9304adbb795a821278381cc5d8da1af7879700d8d9ccd72dcf61caf13d8d83ed2776e026a6473434c6b8c15c12c40ff398941cd63840512281c692ff233566ae76e2d377bc9da5b727102f03f7117cea4b577b07a2bb67b68ac440af5d4dffc390c114368cc5f01b3c3801118343e6f605ec4406f5c30aa5a6a75c2a9875bdbc6185933847b4c3b3abfc7409f0578997b232e09af2ab06d64cff10b0b6898976fa3f88d5b47925fc3db55d5df8fba6bd1883451052ad753c45b8c970826cd31d45e97cb968ad5407724b9dab4e71f75c903ebfda1f8e05bc98104140a6d5e411c673b1611b6c4677c61409120dc843bd5676e1af752d7bd02bc8cdee49de2c6ab5574085d370fb1fe204edd26142312d47f09bb45438a154051f9167687932a148301e91b3695958c6874ad30efbc3ab766ab142a88533c32a9cad73a6bfa31616ea7636fb39dcd5a58251b71317b380e03373e7734ad7cff16bce5636b51f8336c27e246d7cf6d4c7f2b0bb2c01ac4dcc9ce116546cad85514868ebccca22f4d24d6099a81a3a8912c78374c1be388f6c5e65fdecbceb7ab904791578e91cce7bd61293ab469230ec1a54adeb5b65195f4da0e33b35efb925f71cd7c38d756f0bb2a02c3dfb1a4739c37feead8727387eb0611e39b149d774e34890cff3f84f3b3005b7db28ef99730e4f8aeadd9ab68e3b51d107b515f6b7f1bd389f25e7809d6a56cc402ae6f1001771dfbfaa116cc96ad991a3bd1084d542838f750f46b1986f8f7c6a341d7d46a72bcff0227a08b054ac4450ecd77d36c890d568973cd5fdbf7042e567c6c3beac1bf671c304bd83291c91be45b57f52b81dbcaa0567023b178b404f4ed2cf2c422e07089adb6f86aafcde2dbdbc3eaee5aaadd87c37bff551fb3a14d8461ef91e686db07c4535ad1c5a32069a1d1a1e47c158121a9e57154e874f39f68f2f42fc81719834f222951c03e008ec06030d0120f1c970687170a1f719848d6d3ea47c12110ecfe2ca617e0711ea290be25d24918010114194ca061e76e9932286fe637287c8f85647c8c31f0983474c079d76b79d67a3f1024c2c07eb278563e5aec7d5e14dbe39aa74fb53dd39dfbeb2951f030d04fcb804ec315c758aadf001d130573d70578ce1a1aa960310500466e1ecf34da551670b26d0275aa1cd6c6b0c9de3ae130e6bfda4d2b7ab12fea0bcf9faf01129dd4c140e1da47d15da691fc40daac1a919067984d4f366a7fca0aac2c9ecd18a79a152692221acd48d346a862e0a88510ea7580ac1bf02c593c1b54f1fbd8e2e6ab87e66863db796315a0afedc9424169ba589b206a65c1a0b5a7606b5e8b73479a7890224b16534c594aaa4f79491630bb0a6a4b9d3531ba55f51de8b2e6d77f03e4529018de2cefe534132ca93d32fe75e88f73501529536d295a46d795c6301621156962550cf0cc833af2c6b5d7ce291520132ff5f14228163f97656085bd5a4528a86025dc09eaac413f9aa4f2ee9ffb3fffe4cacfd08c669590b57f1726ea2cdb63f2b0f1854e576894f502f07df2efc16a6891e699080ea6ddf9bf727492409773e0da0e6f58d7cbc05c52a082ca18435a930bf29dd7e336de164aa1ea7be078fa956b09b00c601f377212c325bf8b6be9160f5130638e9fbd075a40ed2b5fc51edca4cbf8602a9370bad1e4d22fa975e1af4d1e69b3a6a516f20f9800824195f3bf87e700c16f06cb14b320132d2ef20db8740d1938860966f8b140fa4f841f5005d3aa793ac1b2c10a519878d10a366520d10e0df34ac560306be31b8d6b071e8b10465caac7f1d92dc7c783e9e4d7966e6094a81a799b746e9e07097e85234bc961a405e6a4285caaef935b11573466f796f2ad917fcd42649f9511dd8952bc69e649e453bcdb987c92705b3e0c0f8bb475eac0ba12b44f628b5689afd2561fb0f61c1fa9ba344b1c8b7b94f0c9a87191cbb2839242b173c2c692ac7634562b994cf417d3714515d74f16a802f13cbbf4105dcc77ffcd2143afc2396e91f0a93de3a35125cf6be77d2c5301b19e1961573011ffdbcd6d1415927836819efb8c5df3ede09b5e8e0bc17dc6445b9f922ce7bd03980fa7bcf8dabad9c48c11c5e7fc84c295721e51bb8f71e24ea141251060ec0e4aaf33ad22cfd34bf9d6a5eb3153854cbd553ceddf721f0ce97f110d1fe6084b61b7bbd11921e0cf220ee3060a6b87479a129b7f5235072ab584cc6ecb86eb1ce63d736f469507a96fa648bd68f6978e0b6ae7125846ef507dff9c46bade269360ecc190773151c303cfe6130e7a62d94274483053c358c853c9a5d85571d75a2a0f9605c32cb48666d453cb813e4936a291a53a02fa8c7e7656cd79f2ff1c2be033b20bf4df1380b28c787f46280e4f959c9174799ce277ac51f6e238d6f17b5129746cb02daded0703bb43aad392fa9875364ea756be0fa382cb4901e713aecb1a39e092e0011e0b306ae3d683023ff8d0c967b8c5b64e1440f4bdcca81d0dfd396a50a8ebe6e038ad703410a156708e9d554deab6dd9a57a58f3839801d1a62976533fab7fc90e060d93205b6942c15516ce3f21ed084a6c6ec0ce73a324fba294c4d2e98f198a5441f5fd73e20a65c9e3cd3ee63ec795f6c9020f21ac17afa9233a2fa2aab442fa3c1f788b004de03f0613bb239421f24326950af2117f8ea67058e585ce0b3e43a61a07ae64ea7c5f3407204b39550ee54aef635903533b8e9e4a6684d3ec90bc03b24018c9a74463aa4b891d48132b1e764f6c4bd46e7eaafa5e8b507481140f7aba20723dee6a3f78683e93698f3ee3536ee6fb60eaecb8464ef9aa2f6a8b45902d9f1cb1cd02f83f748ff53bec3b178e055573e0ff726a4c0c507055e04e10659afadd4edddff88ea9db5a0ecace314a15577ceef7bbede0bc98634f875c4264ff3efbf0a2ea41a2168b29ab7b6fe142c068b04919a9507da0070594b3e513335c9514d8de4df4da1aeeacce24abb91c66a71774a9f121ad26e62c45b9387dd524092b4678b317853a584d7da0d85a2a4f876a39929a2e35848ab4479a3af1d816b6553eda430ef41b4c54b4941e1e2cf3cd4ce165b88cc4aa2d6c849c5f669a94bb6f4c92c661a0763880d4c8af249a246d98b0adc2f75f0860149ef5c7b7cdd75ba1c426c5d665fb23964dab6dba7b922919a4a2ca82fa856c6baef89c769881cb01df888d52d6b4fc27f70f792a5b28edff51fd83dc5f82661f6ca2f4db10152b7469c53f664713c433646ec177e65aa498a7525efea5c0a2dd1978714a4782d981b63ad859c452f89a02d6fb86da1401481a732717b686a8e80b14a044fcb0b0bc38456f8387bb11d1a08e16d9bbb67b44e43857aa5b472973f1780531231b530e6a11d6471d3170262eb266c664c1befe013e081dbe8428b0fa117d2a88028402582817752114f0e710c7a42ac3f287475a0b568d3ccbea0fdcb326d651c29831be9136ed5db7e61cb64153a80286294254ee1a8d0a0e50fba19a8d295a62455c669c4d2bf8cb652b74e632bd69025dce65bb6b12f615e3339d4da1dae80ba78215a787f7f43c6c9422ce55d56d180fa0fceaf5e961e874dd89e54ab8d45395a7d1c16f2d58f2bcc5da5bd333f257e61d68a2aa5746bb187e13e7e837e89502ae616ad0bb8fc52da073fdcd859185ed784f6c81f319b34be2e30b06be11f63fb8db46df62f59db1603f60d6ceaec4fa9fde1da2aba0f085b07ec592bde2dbb066d9294dc62fe694d655cb8d61d1af0ba14b5fca30ab4ee35c923e98b0157a251ffa99b6a58f61e957a3777eb5017356989346453fa5c8048bf63b295b4b156cc26a9c7afa6f4ad07db62d92f27ae3be4c65b8cb330b41e6bdfa27f29a81fb0f844e05aeef04870f5310686644e948282bf260dcaa464249d14070dba1449790831815140d84b28640a0d300926de5f03be86a13c5f04ea6bf651dd7be1376028cae6c87b89d26bf51f7a6badab7ffadeaf21b29bfdd8490bde5de017b0f600fd20f277db6eec50f46ed6d8a61f6b4c16017245152873018bea7b6a57aead60e61f7c6cc930e7b7f3f6037cbf8bd9711b33e2426fd649de09695f12ae34c1a93482b973f8095566d607635cf9a6f917e3a3dc67ccbf33ad267ebf3f5721f12accfeaba7dbdf9dbad374a6470cce9f4a7c73eef7ffaa13aeca7d77b7ba80ebbeac26e3c3d6633ec327e005712a75bbff2934da5b20c3e5d7e3fe67dc13eaf7a3db52fd8efe963cb5eb0db03f6d86332981e764f19769693eb304d6da64fdd520f407aeffae9c6b8aeba31317e8259268d4f9f36d3cba4b1ebd6189771faf920fdf4f9f588716377994ccc3afde9667b6987f3e6d3f78744ebac3b5bf374aab3aa26eca7d7d63c9da77a98ea663a2b9d3d6f569ff352da8e7aabcd847df5453cbddad5fc72aceedd7bd7baeaaf6dfd5e7e3f528f71558f59d6168b5d9044491dc662a75febfa7debd60e63a7d68fd45d5dc65b3776786f5c1db6bab0c34c97cd31ce7295fdceb259c607a93e7eb565f7b1d8cd4c3af6d35757fdded5897418ec357673e3d85dbf3657dc04ab9e7a8be2db6add4cb1eaf71e665ebb7accbb4ba5bab1d38da987910eab87d56a33acfe54633fd97b95cd3258f598ed716fec50f5934749270b7bea30adb239c65f4fd92c458fd3cd321ee332690c7bec50469ec1308957304b3ab5a6cfcc0437c1322ee32c36cb6019a6958b0304c1cba4e74997cab0553a944d238524953a842a70c4119fe623a5499a0e29ad86d2be20f3f2e810c81bc03ef79712a2f78788de3daf93d1654d972480a76716ebe6108f80e3aa647ad87d86c10e835dcb0dc16e3ebe978fc1601b6c83dd7cafba776dbda9b40e55bfaad9d13c61c9d371290624f3c049e210bd0c63dc7c572b7579cc791ef3a54f43ed525f29ce5cd0125a6d3c0e8059d2cbcb2a8d062cdf36118878aa77dbb2f01267a619b6c5565a0ec049cb000573013445a19e274e44a11e1c2b2d0d56344c7551a757588cc3f4c40298b9a1f94287e4fc014f970b2a492e489220be48a1e8222fa33d488108b670c3132c2fd710e5a5ebe61a072ccf8d01cc955643105fb84bc9022c03cc5d141bba71ba8c381c2c45575d18076a083a2ab8374417f9993b1acc511cbba2742e995108302e418a0f8e4bf8c2a685e312a460812b2d02b1a5c1063781e9e724e17a6a93b0f0a430bad1a10ead04da84362a5c0e77c55685b3d986b81b0e87b382a301a2407568b5fab4ab4f2b80a2cb6f2fdd3454e9b0873a148a35e42b7da5551b2aaac0f295a74ae99700542a6cb0e482acc0f23aed43850ece75c7878a22e05cb3a83858bed2c905b54cd66060d967e0828422108dbb4abf7455249655b07c2699bec72fc7774ff77e00ab298c30c2a837090b574a6fccea1dcb14461861ccb8c374ebf46649232333ba88fba243e90139abb4c8831cea5056e9300ce04633c405a92e2f852695348042f3721bfa7cbdd500b6546b5538f5d6da4da87687e991ad37d305f61833886130d8cdf5f66e422abb5139aeaabb51917116195fb919c453c64937b3647c7eb40db5acaa9eb7a14da84358ede9705ea9badbd0dd84ec46c50ba1a196453ab4d190b800f6a9156088e77f00eb5f4f53d6fa2a4fb0bb33043a34e92634e92634345fba5690050618e3990e4d95eda14a8b40f4908e66bd6533932e7e419c4421fa07421bd345be53f737c6d26d17fae560ad6c66e119c3e69a411936572958bec5e65a45ae61582257d694294d12169ea64b69a71ec2590a0d71a31b30531a4a43c1d38c5e6f66d57ea9b49b9374387f2526098111cfcb059deee931f344e0d168f493cd129f5c4c3a6cab1c950074fd359ffaf7d6654b0442c6a5fca445207e9f3d0ec4206eac431083885d9e06cbb0f42eebbd4569ae5dc2048cd9254c408f44ed12fa974d2a06b54c2a46019687551760f92511374ed996c7b0320eb3f7fd72d9c75a5c8b75d1775044229999d90744ef9950cba61c8a40c4b8bcacd232d6e59b2602b1823d7bf20d3108d8a5ea990567c9811884eaf27d2f86a574286f427468091350a5ba2b1e53c1a4e74da8b220ee20dfb2958ab8c34dac21cf5ad98a136bc8abecb431d658c1a426545acabebb5050af8fdf903eea3ae1de5766f40f886e142544e0d3a598c1344cb3d8cc8273a579a0cd289cbb648572ad225722f0bc959133ee9e373f2d94283c3033eb530b457435d05746ce643ee04474226633b3d60145f479a144e184bb9359fc80f435d057a667dc39a196c530b264d2e17939a1cb05d97041dc17ae0e67ae67be70d7c976a3e87f40cefabe26ed74c01c6b387ae368e60b17145d84e68b04e2389a04524316387341587e5e019c384b20530f8e32442d470d30dde096ef1e80f3dbce9a2e7d9acec7dbc9de8e254d018ab8b0a471f67664101237cb0ab8b74b91b7d31ecf86393980b9eb11eaa4b844725a017c0911c999e8be4633333ab2d5826b00dff94ca1e8d2afe19e42b9f311da3c2c3a6c12801e8fb7c301f0a61b69853975cc2b9161cc285e9c3a9307a7e9c67531725d953256d18887241a79a4af24254927c6974a3a2b229e5a508de78767e82706c59a94dd7352ba71b2e7a474db38ba715cd7d52af248dfc82391be4f9ac0af643281e0698585c2522aca12cd9074252a551a38984013c8882ca594d3c2cc4b4e4a29a59472db3a00667ae3064b1e079e674ad2f9946860bcd38a2c786a52a6ceb4a28326a5dbc6715da5b5ce969592368eebba5a451ca9ab55241a8d3cd168e47924d2e79148df572a99a8fd6ab07c89a664026db0b4a72f1a0b2e6a3f5df03416bd53a59fdc744e57d1345586a44cf909f2a226a547da482b648edc9157c81b6923691dd49352f9f191dd7352bac99e93d26de3e8c6715d57ab684447a3d972d455916834f23cd2c82391beaf5432811404674bf02b994c20785a596141a15229d5ca66189636dfc0f22c3658502852eadb21b1b4aa6f87c4a95aea12ed19e756ea5b4308de0f200a4f30cac01a5f268a8819db8dd1c671a39beb26a235d25751ada28f6ad751ca5d1c1d761ff141d2b2265a46df5f6c97c70978d01bb14d1f7a65ece171794498697944209f1e9f1e203d18e4bae0c519992507cf7b1d3bfa4412ee0d770fc03c83863089000e01a45d4f874400e9bd49fa01ecb2e872741f66ca2c3a9c9d143cbbd4ef783a4c03984d7fe9688c271820bd29675e534e87f3269c0ea70907bcc224d4e1fc3c0378af67be9870a2cbce7c61b9892ef3269cf938596e586ef07c37e718bc1d2daeb7136b4c2e405315fd12db344d3893ca148a356650b7136b4c79961cae055e9c718393a3b3c3d3f3031424d44334b41c9d1d9e9e9a4f90100ded066787a7a7e6d33e9166233c0bac1d8198a7373f3d95fee4f4549a13d45369d04e4fa53b71a8a7d238d453694f95336973959f3d3dbf2f7c284d15423a349496b3834516d4e666a82644a58a909010155a436994c6a7ce972f4ec081179801c7c32210513ed213ec0067560e9552e7a47942b74b7b6af4915e8ad3614be9b06fb677efadebbac7d3d4bad63881a24b9fd63aa43d540aeda1525a164f391c5acecd4e4f7cbc54e7d29c0e4f90d321d579a639d48a2b333dd5b954274787f6486919e502f7e94e37069a403f3edd15bc8eafd1a90dc5a122553734875af112d17033ab501a5117d4b24c79e6173d81421aeb6f08d12ff10c395a3c8126ea26d0f4625299431df614a2b1cf31c1932f3065c0f1b3bf1c925a983ae505c1405f30b7f028689802361bba2f900e29ad757b7d8e3edb632a91635105a70b7dbd5924a4430a440891aedb2e8e2720905a8e5270aef494527a7a2362c7512f4019b91ee1a8451ab41051d18f3398c10e07e544d7c66671641bdc25d2e18d0e29900efb386c921998c3616d34c7ddc60d1c5d921998d3020ca003f9e70b90e8426d8498d6790590c3d30a20c5208e3d559e803b1a48df38cea01e17bced71469e3edf4e6d470b26bce1468b2650810b5f8f1a72000446942f8882d0450f156660e56801c6163d3b5043cb8e942510410ca69e1b2ade163020818deb304d9bd2b90424d06c394bd842e884042a483b48c841d3d935797b5061a8e382be8041181ba765b18a18a5f04527816149a5cdb0b64968cce72473e248d9bd23b9acf46cdcf001c5ea41c6034cd23a8c37de1240fa2c6936f2466606b561b3c436dec33b1ede7d3978104203cbc7f8e5b8e1c3a3cce1c33d6967dc07dbb40e6de267fbe666fa7063b9004adc363f804d6b9b1a9b65f0ece40c1bc3c487fb707180edc3bc2f1ff489c6f2ca9a4be2be1c3ddce3c1ca2a3aa43e9c871b374b9c67a0e233a95f5c37dec3bd1bf13d58890303f0c68dc3b4cbb64dbbc44b9df92283a64b3cfdbc19c4b9e28ee30198254d387588320976fd386f0f52361fad6897787a33cbb60a64bf2086268861fc0000f0f810008f31f2f491c60e03786e4c80003c37ae41e33b0ce00408c06bc89b7b933592a66557d274189f250f364bccc33b1e7c380fd70234b07c0f39377ae8414a1a3ed0c0f4fa70516087f130d3868d180076090d80cd8d021c3f009bbb05389e86cd2d031c5fc32ee930016c966503882e6d5a660118a6f54d27a1b81e5d570a98bcbc16806111abc348236baa65d261bc4e7418df4492961dc713e101a406395415044d211acf678b17ac80d2d9171ad2a1520547187bb2acbd8e6866ce0f8af0832bc060147b7ae41635d8d9a20a2b443b4060f4b821063a1d00848296c023060f6809406843a53e34478b38007d345a54e9c00e56b69d9d220cc1270c5a80765a016c4a654e8b660b15e0441f2054a02d5460063a7be2594587b1d621171d469f5a87f19b0bc02c6bb5a6cd97d4e37b27be79bcc7774fcb48ef5a47f031ae34507bd132d5e33ba8fb8b96bd1e618f6f2a2d8bf1f81eea2a3d69664dcbece3276ddab44cc64dcb66b40c008f9f382d0bc0e3a7152da3f1f87945cb08f0b8c3a38d471e1e3fb368590f8f9f3d2df3e1f1c6e3676d72d17a7ce7cc17d767ced4c1b171b6a6cdd339057c152e372c2b863a5c646131d4e1d53e863adceb4f495351717773133e58540c75780f168ca10ee7c19262a8c36dd81a431dbe83a531d4e104b031863a745dd77557890cee6858896b5819c3f03ad8bc458105106548c346ac83cd128702902e56e2015849450cfb293003ee04708fdec41aed62230e6d96546429d080bb07c04a9b184a5a943551d2c450a6496412c37ecc3a1193c4b01fc33681241e8961df65815898e8d2351c31ecabec0d1ad1a58fb2e18cc3582890546318c30efb067736b41a495365888ad017415e00c94f47ecc1a2abc409dc0981e306ae97427017ce388c850249b85ed6cb2abf1e1477f7a66d64d33a8c5732c30803cf9a6c49e7cda9c99973861e245441e96c1d9f9f96491ccf4306d18fb20b1ce5140e0da01c9a2f4dab4597f8982b96351d29e0f851a0a09d1624810b5ee96687a6670a17c8f071393b3c71f03103692507488b1b1e74345aac41091df82c504ead0653f4d000069b2888460739b50f70c1045eed61430c967bea43b8a7ae93fad153777427a9738f33afa6eae8af7e7d9cbdfabe9448bd7e48eaf5d59db03cf521ab57ae42aad7bffaa2a3ced957bf3bebde8b85c5cecc5eaeb7fe3acb73157af5676ac5322412c27af7b64ab0eeab1fa31582baaf3eeaa2d34f079016aea0d2861c1a9ad9eb2cd66b66c64a7df4d447cf55a835336badce7df55c85eccc6cb5127a0d9133ee4ea208617df53873c2baaff87ad557f715ef10d5eb55574626ca0b88ea41e26c0837a40233bce005351a1a5acf549782a69e355de4cc62043f800214bc50dd0e708fd36566361ac2bd9490b311778e04397396ab50159a2e4355a84e97179078b3049a9989eccc2cf218a0a66716677216da903168927070e3c8a663945b0ac098258f17e79424f9e59034223f9b943ec5f2170af7b650689f71f7669c7296f2ccb4342727fecc489ad1c5cbb1499b93a14a58ab481e896596b59e0ee551386e418b026e2a608301ce2ba2e9b00ef5b44ce239976c3849886387b90a51d1c20859601b386a618411604fda48597b92487436cf8be4992eb4c6913c92466a22f38507953c5716410a21ca681684608512a060f9963c34882f92877473c539c0f25d0cc02c6992d6c100dcbe23e63a84e5ab8c0e89aa60110d96221a96efaf0a51a943429247d678b2e81739935808c99c2a54a9f44b9c9542af49443c19e74a5f07742865161dca2b79cc001ad1a13c4cfcc13486db89b4cc0132a4b2b79c96e5f82f9690458e966f2296dc0083c221c930ecddfb018c9e9704863daf7b0198ab10ae42f3455acf3b676b3ef05994bee4f1bc1af63a576fca2cda4506499eae0a15ceb10602d07bafa17b7dbd4e38ce5b03eeee6bc8c809f7d18970f725847b79dc7d79570939e31e67757465cf7491e7e1913d20cf749131a8893c8ff813834437b84ab1cd6cd4005d2000948f5d003c69b630e158cbd9999125bd4eeae5b9eb248a1027917527e6cb2b9efbcc6cbec97c79c5fb52a2e31522cf5d997a795f5146beef2bceccb806325f9c988f3f1808cf57ec2e8493f815ef24ca76277dee4ea2889c708ff7d55d1bf2f44ee8b5315d70c0be0d1ad9711fa0f2c7f1f482753badcfb74e1739a5bc717e314e137c31c2910926f8829452b62b891a1354a1de93ed8423136e62c049301ac71e10a001b33ae4be8dc61af176d13d81ded4f03ca9659109373c55c002ee93a49598c39109373b5e27c2910946184225e1c8841b2f6aad552462c28d5064420db6c0f1b6ac52f0e4cc93a42dbac8e812a5a8949b60254df06c23742820b581c4061295388a20aac3282ffa1ef013126f977123f350332bbf05706ba3e54d7225cd746912963749877d24cd62e139a3949735344993631a70d344586298965684254dcbe48bbc9197f1258621082d88a2043514210b4c98c94b222d93f23a118190b8df6466d63956c13333f92322d8bd26ca36ba33b691cd21963ceae461996c16c811408e802521e1ed7393a2653c708e351f1b1a0edc534cbf1d33583f600671ff5561730e4478cc171bdd5f0706f01d8adab3c203d2b239ef451e47bce38d17080fdc1db7d1da711ba547acc1035e8cc18b294193d21d9896c4cbd3e0c8d1e0685fa3388038e21fc0f86a0410899023da8b29f4913a2183e0de5f225fb6d3e708073cfbf259d26cdca1af8c486f8c2e598779e50f5825d4b2be13b50b70c911fd2283da25becfa369bc90425df44ccfd923f269599c38bac7197798f952ba4eba7fefee4bdea3dd2339ae69f2e7528ee338d139da83b7cb9a2f238efb28c749ce13e188388ee338aef40189420203983afd36e3de1cc7711cc79d38d64dddd3f5aeb762bf8f6ce9a01d5d47474747c4711c773255903bd7b4be691c8e4b9dbb0bf59c4aa5bec9a10e535cada9c794c7ddb3b2c671d43b77eed207b579db46b92ab8770ec751ca9de368341d5a67daaae8300773355398a670a2df1cc771cd71df12fa3a5d09bdaf533de91c87c36d1648776b6a44ff5e337a69c6bd5610fc395d20a6fba237d5fba2f7a5c477d3857c37fd74b07de8f7ee434ab72f7afba2f52cefbef29557cbf2a27f29c18d236e1edb2b3d3d05e42e6f40da14dd83c459776564ea4557a6fbe8f105c4f4207166ba32514e32a27fe09519d544895b44010aa64d81ebbf0fa9fdee4e66e93ae977cfb5f40c7297b4f9025e13502d058131721cd7c46cc45d746b884c17eea3cb83070e6e8a7c709421c5acac9f2ef6c4e3982fb3ce97ef318efed90ad67fafffea267d708783378e6459d3a5bb67bdb633b3919d9975d33aec2aee6400c6597dffb53dce5edd6d4c97ee5d0e9843dcbd69dd3b9faa051abcc03d548043d7bd5aae0ce04b48bff6cd74e9ba4f2ec0dc34dc3db2b638a3bb31934a4a57e02d993b2d3f69adac7131a5bcd2a7d6e19c55246b2d1bc5ae974a21f14124176096b5882987e547c4c647e425c4f45dd9735f42bc7fffae0ce9ce9ce932efdd49335da627bf21a5385dbe7b33b3fe847cf7ae8cf7efc6e93273646c390ba70b255d564d92e2cf4b48fcf98c1219067ed1f999432acdd79295dff46cf704ccb286bb1ab831e18b0cb03013d6ab8728f7453318a6e7005ed626cd7c9939d1653e67d2e0a9862b26b51c9e3bb53d1dd449fb4634388a4e00ce4a137feec3aad1e0a820c89a3ad365eed84d8766fae01aab878786c56a1d9dcad3a177990670bb7cfe6e442800f3bca1c1dbad3d1d723438dc0d4793af3d952b71b2f2f4f4d42c3aec21dc9b5006b1dc826a4fcba674d83df2b7f664b1fd5001e6ca33a70073e5a93c358b7ea9b3feac78092698f5e6837babe1ce992e9d379ebb840988b72f486e9445ce7c21ed98b81c8e935b1802d740aa9901776d0303fe3880530505911b41e6a6f8be44caaf8b0e7bbb9fcfb7f361612a3d9b4c9f8fe9dbf7fd74ad20f8dd986ea64b97ecf7f3f97c5d7c3e9f4fcbb8ad44b78fe7f36959fe6adf4fcbf227e5ebe2ab7d5370ffab7d52b094967d178a173f9fe802da21a630c208630eb3d175d281f9d165ba8f6ef7d18df28a74e65913fd9488b3d99c03f8cfe7bb992fdf4e74e9fbb03e9f6f8764064b2243dca14faacd17d217edd29914b48520900a25031849414dda91a41ddc1ff1e0fe3c810be20b29badc4c14c4b98228dbde37b869d0c521d109c02c7164943d4b31d6885be0dc50c0d2f62ccee81bf3014dd9a98e90e5abfc372927dda88c4ebc3dcb53b96d32e6f9570f4a43b3618ae3d743d2d0f4e0c6730a900a1680fd0982d9b326e6cdace70deead0a3db85b2620713bb8df3201c7030e2748479b5600698bd6b2795fb5c38ef761f1e01ea000d7cf7027eee0d148db85854bdce438ba4929373d55869aa3f3056254876ac09d069c475370fffc7c3e68a5de45b672374ac859fd6b48ad97a3b9992f9c9476e993ba6716f71b4ca5f44be9f5a49b4928d8e8dccd33e8cd345e4ad714d2187d868805f36ee6a8d44ba5e216cd67ba50c1022019e01b54efdd0a40afcecca816c03cf2c1d2a36700c14f2b802ff9da38cfbeb2ba8deb1a2751e415327abd13efe0bd2b7a8d93d1eb475774f04346af07e34b9e89c42fee42bce397bc93fad241fb92f7c55d25bc9b3ea4be74275184945eefc474ef4ea2d02ba4c6d9075e27e04f5f017f3addc94aa7d3b576a64b4b6ba3717c367eba9f16cdf57e8b76d9dae1eee966beb8ee0a95f70614024b5f8001fc5a3e31fedcea796ed5f0c6b574708cdba2c1b69b41975dbd45fb01576c9cb5684d3ab15c2d1fdcefd60feeeea6b714d461a954a543a1de6469a8c36ddbb6ed96844a41a52f4a41a5a09671a7d14463d37a2224040ad55af773da992efd5a4130ce3c7a06d07b3d9df5f80171b9281ac05c1a1202855cb6a666e5e06b56ff6a3dedcc1716ebe6d169e745ba404ef7255917fce942c09f560e5eded5bfcfcc4e27efa7cb2b04fc7765ea057fda992f231e1adca6d70f29fd2bbdbe7427de4d406a6871365433baa3151b04a4e634fac17df08e40a1f8e57829e1dd7422de3d91ef7a072fc43be89d5a3d9f9995fe01f9ee9d3ceb79f5d67b1752ef5ddef3bc253ae44b0939abf7fe1ae21d3c080a5521dca900ec74ced2b56ee6cbc827f5a81ab25af9eac619ad3fb93444a25f80a6972efa807c9716a4c1b4960d8f947e89edc42d6240c3ad1bdcdf16310002cead2c70b7a61cf974d1b216c2a5a196e5124ffd51dd177d9cb5707ce6cb8b5e25e4ac456bdd743aa8bbb2f295eb04bcf738a31f11f0dee91744ce66a508da58e2992f35dc43944a3c11881aa46760ddb1b9f6542b67530860ae3f98524a6f69a7c31e01e1ae3bdd83bbea5001cc2d9acec88796baaeebba5adae93af2894048210221df1f4d41bed42c805fc05d86166dbe7441a4d9a2d9c643b8d6daf5e7fed0ae3af325ceba7be2cceb481d0a4e5005b77064c20980b007927e006710f2910a762485b843ffe5439e9ed2608e062f51222ba6f7a86d8940eed0df6ecbe3b80ec5c29222a54e6d1212962d9d9415b88fba622776985b58e07e8c354e00665a738f0a30539b9a272a56d28531071a2c6f7703ee68dca2294522914814e9a4c15e47aa3ff3057cbfeacc17f0968632eb67e576cf4ab675d3a299008cf805a446f4d14f58e2972c954e37fde095015ffacc2c97864eb786fba6d780b7d563b23bb8c1cfcc7870df54ba7ca974f0de964c0b07778b66b27156ea4a0072df1131178258a32ffae8deb7db9100bc1ccd74e9d3cbd15668b0f703484f58706900738b46ef69e774737ad2dd55ea41eebad30eeed34d871d496792cedd23d913cf69e784c569e7b4d3328e92408e76f484d3619f766e70ffb4d3322c5a76e2e95316dd6dfa72c8eea714540a2a058d7cbc9b3ebdde0d9d02e6d290473f25e2cc7b2928baf42c05cd9fe93283e650ad2058eff471c520c943b3d361cf968d0d98e7cec867d405c7cd709f239f0efbad1b9d3ed7ba69d17a1cc192ceaeb48d7e9eb4682d6bd9948670b79ee07e698867be743fd14567be74b54e07f70e1a7a7216881057a90760d7709e3b239f58a3df8d60e473433b42c40122f8e9c151063723a5a0331cc7c3c78b33b20d6c85e319f77aa30f3fa3c3a637c647977e83a1041bfd05af5301d8e04bc87c7cbc3239c4f238caee09986d60290f147dba6708a4588153382e414a09308deda10ee3a41304587e7ae0256424f312d2175d746544efcfcc4657464e7113869b9914af21a3ed33b338239b7a486b0063ac6d9c795e24519c8396b07cbd894070b85ece30c0bee8aadfe74a9b7310d24265c29cb08fa48055feda2a45246137b3f09783be668104b0ded84f16336928b47336ce62d5664aa53900c3082229d05e30150a66c14b201ff40a3ee2e78d396dca013cce9b048a0275ef0750f5f80199627a3f8097d6742863f75cf30bb036a5f5ba5eadcba57aab75552bc66374d67a736dccacb09f4e7dc0aeeaa7b75e6debb3c3542b6633c5a91bbb8fe1fabd2749ad7efc5c97d2aea534af969bdef2b6af96c7d98c7b5eb5590657d5692ed7e797c46166cb462ce4f520f6f524ec8ed761afbb2c93c6af03b149584fe2f1cb51e4c624712349dcb5ba59e2d57bf596dbd556b6f3f901b8fa8e8e8bc3741d7259af6573ebac542aa5ba289b2b4649da759228b8a1388cfa977418f567d4ff589017ea29aba4c3acdf2661ddc5aa435588f5887fb05e844acb8a086d30140cf6f90139cc7405b14a9a60d681d81dac17b94a26cc32e924ae1346bec461bac51e39eb5ac0c89778578bb8e362330178242e718dfcd5d26b00ff7a8301a662b1984c4203a75e5e047929d6a350abf20ccea9ab50b106a2117f6a76e4145a6e2c30ea7fc4526055877f33066630ec4654876954ea15a8067d290055875d75636037f218d85b60465e836ee4308dba990646ddab37ac229e594d70ec4d6c11165b181b3bc6baebc6561a0c4056b5b9f5e6139a81515fc130ea2ad453a83f76887a7d6533cb6610e79a93d0c0b0bf8cd8d78f7aec5e8b8502739885f9765c815af66ab111572f5e3e508f095d81b216f8399a0eb7add6e1b649e97043fd0a54cc4688446b99ebdab86e1512ad00e40273afb9b8a0464680b9d58b0a74552a140a854281e102174c7f4fc05c85bada5bfecac0c431aeaff037d74931ab3aca723d9f8ed655f7563657bc5a7df5d4ff983dc70305e62c1bdb257695cd1566aeaceb31eb7acbe6d85d4ce62bf63883e99575dd57ec28008bc0eeeba6a10d5ccf91c72254452ebf1c2b944fea2e4a039089e74a830273ef07b0abad3a5acb2b2d7573057f33182bf2d8d783c6d8a58c7538f305e62f382702114b3d374ee23106c1d5e40edb93b0e9b02683a8427187ed5bc3580dbc886d1ddb265fc2b2eecd299e8cddd3808579cb1679138bcfb24b3c661b4f91896aea145a8de362bb9020f728edd61f7beb7fa6f897758f652b50eb5ec0f47702506254cf33c7c3f50481b12d0baec7456b60e4468e7a5da5ba4a5bddd9baadd6ed3a197c5480db5b36168ebdbedd96d5cd207ebdde4a3d5685628d1980a9d80dcd0420ea2bc1470210151b12b20188aa412ddb5287bd75cfeb19272975fae9581d057bcac2facb01bb35281601b61e3bfd7ec4deba173f1fb1ff291b13fbefc5ac575747fd36b54add1cfb1312a7ceba6d3d655ba75f8ed68d98357bf7e540e2c9e875297663ac113b4c579fd8cd484e449ed180add1c08d82e44d6c4d931b25480c92199213d142f2885b0791b4902079f7f540726f749f0d1bad982043d8520fc0206fddea73cf55c2020cf288590783b0820479fd7a04b942dcdac587a3c3adfa549f2e5ad6f9c06cc70529b6baa9ffb9abd5b86859ea769f0d88ba1767ec4ab1c71e43c14c953df2975d22b190246cee6480b7336173f7e4c88dd86d3b4c733c5c163de7107b805c1797965b815a86fa0654bde80f852ac2c6d991226ca5d22edbe7143076d4e397e3c88ddd7a732bad438a03309ebbe19eb42cfccf26f4b30571385c155c0e6705a7c35db16d58c89e379e023c6f59dcd8362978d3e179abe16de3026f9bcf0ecf5b1736b66d0adeb6cd0b20bc3dd39fee993c36d9e91b28fab892e9f761d5c01ebcf1d4f2ace96d7b07cd17b9b30a0a0ada09ca9c4ddeaae0ad5bb123b1bba1ae7aa582b2adc76c1d62b26157cce58a4994ab0c67c833387594cd7f29e230cf15ff31bee06710ff37a3de7a11165b181bbb19f5d5594f6c98f566b12e936d87ebaeb72e615497c147dd0d75d5ad421e0af514cc8cd9d651b60e31691c1b8ac52e34d4b288ea46c52e19c40063ab17edb21df5d71feb2aa22bfac5db91c51e3350c1db6f4cb0713d5fece02cb2026f221abc896cf0f6c75012eb60ddc505fee1422ca10c53f00f8f1dafbc497ad96af3a36c455dfe8542c94f87ca75b3c4aec350a8170ae5aab429a0c4a8dfe5b212a3ac44c150a8d76decf736d2cb4aec9aab1853aed5f6d5b72fc74ae875734ddd0cc652973fe66fa638163bca661954ccb6aeb21975993466bd75abc7b20318c00770d66b1ca659b60675b809f120accccc2c0820fe0b7120de1f12b10be587cfefc70f17020acc9502e641dc00a74159c230698cba47513662aa33c4b7d32be80ec5c2084fcb3211476511ebf937214f7d9b5d75592ee2d3b2dc72d6332ce7b811535a96839c09a096652047e2451242e4b095c7082bca99d96e8808dbf10c613920408678101b3b0c62c461b6a5e5458a5c488f2f51811f71e24690f8eb88bb7c7c1ee0dba7ebdbe7ebdbe76c08f5ac23efa0352dcb3c9efa9695b8eadb125fe523673d1ba13808f8765a45cb3292e7f8769ad3b2ccc489f8766a85101a09b0554774d305753a1d6e3f80e598b0b143264e848d1d127124367688e4396cec30c78d18f991235f6209254bae030307f8cbba623e7518f0edf38ab933e4db27160dc8afecca0b7000172dcb08f8caa76539016775d1b2ac80b77e1ef02dff388f6f79c767df3ebdd0f18a23a2f9c1e176d8d8e18ecf6cec70f61f3676f8e33c6cec90c7156063870a78026cec300147808d1d22e00bb0b1432677d9d8a1ebaf13b1b1c3241f62638716b8123676780125bee52144bebda9b42c2fe05b66c051df72031efbf649d3b2ec80ff5b7ec053df3204aefa9623f0d5b7cf9b9665099cf52d4fe0ad0ca5c99bf8f65945cb72064e816f9f392dcb508af813df727d52e5095b6f3260ab0d056ca5d284ad13b09d046c1701db41c076b5ce01b6bb6980ed6c18603bda022c47c472432cc705577bd243d07ed343c05c193a83f986bf35b971bae0e071338a46e6b879c64d0fd16408236ebe21cae9219a7cbb389eebec6616113787f843086d361b6dabd9689a56a143284bc4b721be51e05b13df727c33e2b2d979fcc7cda8097cc7cd2c095cc7cdb01d4772f38c089c09085c48a5e978904a43722095c6c493b85988248004f926e4db8f6f43bebd1b6a19039438023a043c015d02ae804e015fa223f223dd026ea46bc08b740e784b577bc061370bd1d15ab6c4b777362d3bf2eddd4dcb8c7c7bf7a46545bebdc36959cbb7773a2d6b7d4b1df6d7cda8d75d37b398dc0cc3c0cd3396dc1c2ab999861337df88bd0237e3e871b31018f8c6e45b06be9deba2654bbe9dfb6999926f15f8766ea8653deec42f7033ea02b7c0cd2c0b3cc9cdb0248fb97946ccf3cde1016ea67180fbb8f9868f1fc1d58e3812370b812d8cdd6ee287c4cd3318891bb14b38f9cbb644f1956d69e0319bb25074f8888dad8ebc8996136104033126abd6919b83dc88900d10f1da80cc8b383952a4e54338014201274964e066233fe2644991249c385919b939890ec885a21271a1a8430049e246648cdcbcc48bc81829f29a28416e0ef2216484dc2ce4406428d0c46ba2247173066e64899b97bcc88fb4fcb581d7121b3872a120d54469b93989bf36006403440c81812fc1e4470e6bd204f61c4d5a5eaf89a2a489134d5a2d4d603727e0af2612c8d16ab281bba280b99c388f28949840143f2e70f3ebb0282c1085cb899b79fc47146014abd7cd3f3a252e145502178a2a01257efcb581d7cd2d776de0e57a4d1404dc8c804b600309b83901576203d7033551262081d744f971f305fe6ab9d902771dc6a3b6becab16a81b5c05e1385c7cd3f9e4389af9ae4e0a1e42d4e1c76968dad70c5add744a94012cc5a19815b170a10024958ab26576980b543030a888006626e5e9da5816b40a5811d1a88c06ba2ac6e564057ab02be6ab2bab975559395ea355188dc4ce41168b2809b17700834b91ea889120108bc268a026e8ef9aa7573beeaac24178abaa32ac088d45bb1b35aacd7441972f3902b60c7cd0ab81146ec784d94d4cd15782b767392b37e7b07dc0cc59978c0cd0e788289d9ffc7a0b8f9017fc201678289275e136576a1e8f0cda9c7f051168a0e4329a236e0e659d5e1a388235045a0741431bb59c7911481e435516237fbe8a2c45e13e5013737e0482e14d5013723a947e0180ac750af89d2809b1df02330929b1f70263012265e13c5c7cd3e1e3be2a8ff42d161280778e2425175d406cc0e70a120612830a90b0529f5d74461c0cd0c7803606e6ec067170a107ba026ca4cc76ba2f4b8b9c75307b8f900ff6166069860608912272e60810a2489c914b048de8465e213b0482e01cbc42360915c2830878065e2de0d67ba6c5fc2a67ec4fe466cec452cea2d367598fd5f36769745bd6553db59f697ae6cec5295455dfa002be40eb041de000be40cb0497c0156c889d820578005f221368927c00ab91b026c90bb296181dced874de26e48d8113ec27258e04013a8601fb673022d0b3dc007b093051ca881817b586e045a088501f380f98e22ae033f8785027365e40ce6465828455c999ec17c66a1e02b336730b7260a1177bbe9701be26e4f3adc8e3280cd3398c904628f5d080b25881e1c848df2c381b015a8c3c63fbc06b5ec879be755df7ef30cfe513666333deae61ab3f992769da40ce2580c857a86e1184a49931e1d8ed9c77eaba4c333a86571d6a00ac405b002e10de545cb50f789c6a86faf403528767180a8180a45855a167ec311c033a51280673a84375a056fdb5683b7bcd1ecf36683e3e6ed066f7795b0009b06471c63785c903f3f370a207b21800f3df06063871addd33dddf362259659890b6025be6123a66123f6c14adc030fb6b18d1d2c8709f05363ebf1c1db4ff7d0d06100db76d3e1f6bab900ac375d2d62179719942387e84d10a5a9423a5c6cc745d0769ad0f6b83dc15340d4ffd89d55ce00a2fedbf9a09efa86baea3995423df5fd403d26a5b2b5537ddb52b4e9a2faefa91e431da6bb5acbfeed1d172d8b7d7be7b35df58b037c2c76f331aabfd8be51c1db6550cbe29f4255394cd35437c6638c81ba2329a1ed6a1d6e1780edb8e8707b006ce7d3e17600d8ae8b0eb7cfb0dd4f87db65d86e4a87dbafed803adc6e6de74587f938f61f751a65afa35ea3cc75d44951d63aea6094b18e3a2aca56479d1565aaa30e8bb2d45137c7fe5b8562d6562a1dc61ebbb5e5562a316cae3878bbf7b27d86186e87d926430cb7a7a607f076d5e400debedace7a03dede6203deee4a03de8260b1652366452c7a03982bade254da56c5f64a65439d470b6c628d8833e5d1025a0c23463d65e38661dae3b17ddbbe7ddbbe62a75087db59ecfcc24ed3f6d2766efbb79db47db45d6eff5941b1863f1bbdc024cb61cff2d8e4ce7c89b30ab236d19d553adc68b67906f0b983f0d6d1a2cbf6ed5d6d3b6bdb3a1adeb89a0774430a3923a568921472e64a21673892d4c21770080183c3068f23da08b08f63db2e6537aa17a25dbe1c386452e4915058ca9b93dc931606c7128488e1f7b0657d1adffb25efdbbf233af48e00f2e5e82e0f2d8039c42d4427fb1cb7d1e830a471d8bc2c963c9d1c15a850893d8035da0fd601c71aed0aecc5ae0637585e8b2fcc10bdce0a9074794329a537369c0fc0c943df590166c98349dddd4273fb7a340dee2cacb469e9426b59bc36b2091a807d7a254f0c92b496358d9246afc4b289e9224f6f963d92c74639e3e54d87342235d27d91622d075f88730e4d674c43192817288d74965ac98c53f208418809585e3e8b6857f2c41a330079ca7043718eb51c730ad89786018c229c234ffd6bbb2f25ba731f92fa4cbd106ef4944c3df79999a7aa334252af2c4fbdaf9095ccebabcfcc72159a99bdfa01919bd22107d4b27bb3fc013cdda3271cf325ce229650a8384a88a8a2c31a8b83460621391077909732678a5843ca8fb667269b84f2ba7cddd8a34877e8001c9aa7679288e6da9ad33873db9eb8b76b15a0a9bbbb3b0334a64fbf1cde4f96fb696e4a8731537ce968b38b32948c44aab5fb957bd772402b96fbb9cfdc0f96533a94bf87e95af36ab1076749533b308504811c4194912e391d166bc83ec621dbd2f2185fec636cf9bc5f4b7a17b40dc920381d3028dfefcad2a57d7568be541c9ca18a3334d4dd7428716c6e47bb0294f7997276a541ac3188a1fcc95617c450bee399f29c8e0ca2e2c81de42598ab6c41ac21391d2cdf4501abcfd75780b90ed5a15a4544d31e859977d925dd6d36e15c714c9246d2481a7bb3ccd1d9e17e9a9bd2b227360e085c59b1121391018ae75db199e295579f969dee289e9e5efa7a7ca7377739007bdac627d4e7978365e8fbf6fe72b0fe59563f464f5277f7e7fb4322c69bdec74e6f6ef9bc75e88a689438f159ef6dbd4ffbbdbf1ff4df379bc17b16c4d3fbe7c50ebd4b3b9c3fbe7b378a5eb2f93bf803dc7b9f15dd79d145517adb8a718f236db6ffd9151f2ba7f7ac13dbf779eff3deb6744f7e0798c12ed1492ed149327daf07e9a27f96929cc0ed44fe9ea2f72bb7d40370de1ff7f4c6dc7b37c632a1f85e7aad8f530f1be397b6b4de8f1f12316edf6629706f9444bf73ed7d3b9de7fabb7936edd7211a110d15d17438d4afc23af5d8ee57ba67b3133fb697ba1c80f466b97d3db67f87995e8a756a23f54adb61db5fa54cdfda4a6fd1d3bfefacd25df7bc8d243a8c25fa0bc4deeb24d1ca6136b68b77bdbf4437b3f0d67ac946176db10e7ec6b0fe5d7e3e4eff4e62d98d542a515a8a3886febb573ab5596627f0e65d9444c424efa27b3776b87ddf33138abfafee895e12954e5f2a9d76482f132944146f079f67e8e99d8160f02a9b8f60f0299b9dc0e0eb101586aaf44b9ca128edf8f54881265b6b38004fcfb5d24937ef2d83bfca45e9a5d77e19bd7411684bf1cb219329ee0eabb48b7c770350d2a80dc04f749285322f931ec99a769117dd57ff4a9a3a142439105de44350a900a5aca004e90c240d8802bba08a537186ba2029e64c4a8a9ee1a4e819500a39231249a01e789e890df10d510d38e64825822177e833e0d6731483286e01f508b6441995d5d56533dee5be5042a26ce5f14aa0e20f804494998a8841b0744459e9b165081c2f840c024644949ddeb1dc1bdcadad2bc410b106094bd68d1d2292dcf037231a9138d1773337ba24f9e520fd844936667451c7ec98f409b8cf4981bfc3f4862727852cf6ac608e92b89b4767b9fc745c00e74f6563e6b9c39c2e90b29885c482013cfa86596e8e028f2e2883f88c90d412812040ac61e3bb37461707e90a217720400462082de0be3105dc05be111377c410a80a110ab88fc30943442074c41a42c8208c8889b229316201f7fbc339f6e0101d460a3cbaec2fc77718d2cd1c267d1b26ddccddbb997b7f3ab8d77a2e5f004fcacd9828b4324f5bb8218b37dce0188eb5a12ae078f2e4b402381f6db4e06bc5747b8cde0329d821ce1593b6d974b30228e5b78f1edce8361f658e31c62863bc3622d70621bad9b881c3c61761121a73ce1b5d4bc731cf8ab0988a41c0acb0fc29ca562e3f8a33ca50972f4df05d0c22c9b3080f20d6980fe50ef352142371d8f00128bad1e18499a9fb63880ce757ec0362387fb2486c131dce0f60de8824f3a177f092de13bcb7917e00b71b3be44de0cd7276a648853cb2397a01b7ac7efe068e596bdcb0bc2f1fdc131beeee0cee74a32416d93961dab881a3c3be8d0e9b880d236cdce89738937531707c3ce138c213a65ab9dcc10b22b4f3309944eed0c73d8456621a5ec07d30d0f8f11ab70013a9d04304228923e29458859e9be1b15819622d2d646889112328060c3606d8eb258697cb150657abe5458bc502036bb5fac24aa5f2822a95024aa1505d40b1b070816565650b2ba7d39413086a013499b2602a95b050fabe9f8f44ba02eeed3ca687b71ec51a7384b716c51a73abb1c6ec4b1e5dac311b6fe7116bccc6db79b46cc3b1c67c8e3e3fe4939833d698db91e83e220221257763ac316547207a24bf11a8fedd8b37528f51680a8e5f0fa87acc8bc532f8d16854ea98efaacfafc777157815fd0e7eb472af492ad08e783aec1eb3320b2b7b3aec8ed0bd24fb807e00471b938e299d6298062dc5425ce0584343153be0581372c19476e95e925f0edc8d5efb051c9de3e1a9bd94a0ef13a1972667a2f70589d47c808899e83439ab8fd345fe7c3de0ebfff72c7f78b26859ec9deaad7fb6f41fc0ef3fa8acc4b712bf5adf37658cc72f07ec65e5e8a598d1555322912f30f80fcc33b804be3efa5e2afd1bb1c09b6e22956c8cd3638731ce7d488c6ecce8afbfbe8dfefd1bd9cbb2e489d3c1335939783dd45f1f7d4898c019fcc5388b8df91ef18a5512c3312d8ff81b2989e19697be1c2df7e267bbd985307d13ade8b0733aecbaef47e9dfcddfb9ef07f8d1cdf9bb1898c12ba3959b58febd8e7efac9643a68b22b076debe4649998d24f2b3d56aec4e2c911c0dc37b87bf360b1c362b17aa7bbc7c23257541fa93e1abdf499feddab24169b592ac7d23b2cb6797a8785d458f44ef3b00000000088a3bba93efa724099cfaed3ef87eaa39b55f7c2d3d23c7d7473e9626006b3fcbb273f2e4e075fba796626fc57bf9b4ddd870478f3e8f907cbbf6f5f8fd2596efe4a0208808d2b56622fca57025d86787d77c910f9fe107af9be4efaf23a919137ca8df22151fae99e89c6e3f743860f1696c78fb572013c7e3fee577c0ce02b3766741db089866d9a990ed6c7fd3dcbfa9071969b67b08c8336cbe00c80873fdd25b4252c40003ce24f0000b80002602595236630006ef8ed387dc6259e715f3e64fc5ec66ddabbbf771a8beeb15f44f0d9fce802a8b8755a362abdade81c2ffcbe30fc768c86bc7b4b5d327d7465ceb7526b43151c6b54aa7467e158a3e2056e430d6ee1586b430e2e7dafb5210b8e746dbe5f29dd3c834b9738179d30308384e9a57ff613ba560e818f1d152993746dc4fdf5003f7a04617af4f530bd34badfd0b5117b3e7c231f463eacf45879e966d3955874d87de5ca271dceee9e27bfcf08e01093f4992edd617afb7e7435d7670430cb1f9e2935201d2f5a96e513dcbdebb0c05dad93ef62ec0250f0a3bbb2313b22b6b79f9f1271d6377601f28d29c99d46e2bb31df471f1dfc6eb62f5df9e4ae4cefa44e69e78a52e9df572a954aa5d277f0fdf5f80efe034ba57fdf47a3d1c89aaed461d258ee74d8fdf689c6b0c7ec138d59ee499cd9bdebaae8b06b592e7df4eefbe9a58f3ebae9307dea2e813eeb8d6cfeb000993406bfeea0953f262ba774d8bde302f83d62d3949699ee138d4d074d5f0ed0744ddf8eefbb32a7c3eea39be5930e3b9d0e25b9187d148f2e93fe011cfda786337a01bbd13f8a65ad65a677279f924d02fe5b79c93e91e4fbf715eb63e2d2419b04fc4b89c4a54fb0e59f6ddcf2c6a06db91328598963c01ef1f75d1c200c7699347edd970f8951ff7248ecb2252c4096124b09af6e0ceaa3cb272d43a16e8a5f8e0ef469a6b8f491cd337874d2630f41d3a7b72676014affc067f4dfb9afc7e82ad36994970f89592e31cb3f9b6356feddfb728cfed91216e0ca23065fbae93b6206af5cd3b743a542fd644b3637369f7da2f1f752e351e926b047a31b53fae8f2eb51fae831cf8037cb60f09fcd147f975fecf0fbace9ca1293c6a3d1a83bf81501ccb286bbae334d016a59e91dc8c5f7eea9142a75429d44a22a63b950eacaf3e8e0c501ae5c26a7d3e8307d02ede81fd84de941ecfd008e46371dbc31df29f63efbaa1d8e3e71638f2375a51d10c797835a893d4a32d951e9bba3d31e82f4d16b0f313aa987f03e5a22447e5e199970ba749777499038fb74e9ae24489cf583c419e91987f7386b92d79d6449f74e44ce4436ceba7b69e74764b957bb5d7e4ac45913d3a57b69071d04a4a6c974e94eed6bf4f9d1e9fba51d80dc7d7ddb7d7df7058493b3ed72b69d745fa3f7e9bdfb1add97124d3f44ceee2239eb9e4bd19b0f60f4041b8ae7797293534a5af1e4628cdc9c2d25456d1b187bd2a6b3a980f194dea6b3696f5ce0ced5d8519b8984972391bd9d72763d420b84983ed34a2b86321fe795229c45e95b69af80460b2a5c50b9c19e17492320dcb3c2d3f1a6403df180f056d3e1c6d1f036d4e1b655e1b280a138e00a40d476e48845a16e57a329008b7813d4cd3218459f80abc34c140cb7dc9b6f008b78132dc0d43d2f5830c75580a93ff57aea30adc2b60ac5585774f3e180a8c784a8dcd0684237acca7a8a6643a3d9dcb068363743270073056add9a0eba50815487fde5b230af0460a519613dc62c2c161bdad17294459db64c3531eaf5a6d2b0004a8cba91df0e55fc74a4fedbaba3ac4b6559977598c9b246feb2478abcc51a3172158034a7899d4514b1468efacaa2ee7d3a6297d4e1f6c3ee9a2ff88bfc573da56afd673d755be4f7856ab9b097eb05a39e911620cc3462f3ea75b30c7e7dc5a2bdc5fa552eac168e351ecc20868afdb1b79effd4bda7627fec313fea30ddb295f616eb6f3d75af9542c55228140a5551b15b6f542e958b0bebce16a8a865d2b808ea723d2bcbf1541f2cf1d13aeaaad49fba5528a78ebacafe681df5b39effd553b647eba87b5ffdacb3582cd66ab55a81b118576d01dc1e71eaaaacfa4a75d7f36aa5faeaaac7ac9e3a4cbb6c571b3a764d23b7c85dad6eae435548153129954a1da63f1e11dfce678b55e9685c0df5588c18997e3e5a47dd970e897f673c0d58e0b2c4a9fbd2d17854337a8261fa52b01cc90960eea02a221a212aa85b6dbc29c05c85684254aa88682deb36e0ed221ba16dabf18008b1eb55310242cc020b1c705817f68a613801c62c138a5329d663b1a3502814eb319b8454e5b60e89684435229ae86545372dc2b1a22a3adc58d7a30163df5e9f542b22103383b93e16abaa9b2bc8626154edf3b805c7da155332577ba92e318d307411d100cc55082675171718af3e699913a8ab5042b07422f5d851a75f8ed445d91c62d86f6392d0c02dd58d41bdf58d068e49bdf51814aac7eba8db62f30c6eb90703a37a91678a5d77a96c8c4a75d745b1fe2257d92230ed3509655ff73c94edd825eed83ba68aa93a755b8fd94c2306c650218ea11efbfc7228190066a2bac4f3f3b1e9e8b04ab5fa7315f2b1ed74f8586e79eab0c35e36652396b8c546dcba950603730465b35dd1e176967da17ee4a8c3d817ea7ed1856782226f7535d6b7b7acc7b299f597900779fd36037992d75b8f9f8f256ec4d6a1d7ebb0c384b02bab82a8f40b74e6c11ce798a29101040000006314003028140e09c682e178300ac448891f14800d91b056744e1ca7498e52c620648c0100000000000000804401008121e085e5eee7bd918f5f7ad19e4cc4dfa350f5b184b05da681c49f407000c05e13a71d6d71294e316defb203d3aa2b78fb9c922c7093994a8143e8961c927e7b90c3727a1c464561f0b69e4738505d3d5b8657fc088a6595ed2e7cf12faeaa462e9e8838e0101d0de506a1f4edf08141c5d45b0176564eca012b50b2eabfed28e0ab5ef141a844f13e6b8130fc81d9382e552361502072c43b9112d0fe0e616f92fa625a75bf3b9ee74a577594485892057eccb298725049cb7c08935273c62b21b9e33edee9ec487b24e4237160197d1be1c14d3ac5f01523f2b03aa0e6b926ab254d60214a68f5954c5231fe55fafb215f37a5963fc77c81e9f503bb2baf7632d761e663bcbb69488e3d935f7e3767923d8b1e62a87485211a8990574f686df61be9c9f07c6939662c57381e65df7450d228a9a66df27667a28634a1be6ef517e8b2c364e9fdd577c7dfcde9414fa70e54f16553e7d75f2aecb12151bb510c9024289ab6e8db15c2463b35fc7a0ef87419cd8358f18ee74bb4ae4dbe3ddb0af2e328684270e75155f5fba653860c7d34d6ecf376aa8bca0be87c2c0bb1883a3178ea7b40e4fb48d88a76f7c3e0ae25c8b9f9f5825bd9674017fdabbaee211e57a58efda8f15efd503b850df41d6362aa80c4278b55bc3cd531c04f993e4c773d14cf3c604b0725fc588aa8904c3b81f760ecf0e7595fe09e6ad21ba8ac64235045b35b55b0e61458128523bcfed59ab07c2c5c1f1095ffeaee221b3313cf04207d75cf813b31af08329a3d3544ec15d41ec7594219e0fcf52cea65fe30f75423b657c44b0806c3b92de7185cb50a5c0309d9accde049484128e2abc2085295a996165b6f16565493246050b6215841af1f54b9918002f2079a6a2faa57bad81e933366cde03e4b49a2fc7e227767ece4661cb3aeb180b0280a6b97fe0692886579e9b405084b7f915f85e20b7c523966d0c41234c9e99d60029c4f6d387a7e61336271ec95c1f84b1cdaa0256367e85181aad71f75a4b4ee3159a93519d127a11a61150fbb35b0a116208e53f374d01ddcd304fd48357e5517f45041a7c48020dfa5dd3bd99fbde5766f06d99af292354970abb41a03605ab6a6eece6fdcad8d57d86045925f354e4ee5d4a9df45d6914f75ea02a86cd0da3659b0e12b8f22b22a4a769a0a181fab307cd9588f1673dad0afc49a02a9921847d8ef6206e55f4c0e379499c9f288f80129c6bb4f5a957fce14f04e31f7bee5a538f65d2aeea385e83d2868614ff3bf38ab474c7a2a7d8d311c02f6b34e278aec58c3711f776c26b20e4eac0476699e82253d434fae1900fe953c13db4ab6b1bc744d157a25c372d25fd2c2633e65bec16302ba751294698719ac56233ba7cc472a3b8176f15d67bbb017930f1959a1e9c0b7dce6cd6511131c28651a885498acfdb6ff5ecac4f6807c11bf16601d394c1a324bba2af3697afa1c2620c56b2135ae724027734c2749b911729886e707815d54206dcc01e92a71273d94ca99c8c1460aaa881410506c7697030d278c353b18f3353289951a877460fc94d1aa316ad2c209f413d0edd30fe3ec531cc0713e6ba1e1c243bd214c5a684902a032f35e569eea72b97939f49c26b11c2c3499a0310549d9e482b44a8c34d995c63b94b8dcad96a5ac35a60bcb742994710a891b73596ba30e216794899cb85a17455c03f82e20128efa85a2fc6ee10e99e47a5b2022d1ae5004c29b4d70ae3ff07560dac9c50007968f828f9f0e027b784252157835323b940af61747b25a110ea1a67b5163078f95a81d308f0366e2a0c210a2a193a08ce2c7b7697bad80372e8df5164e9bca57ea3173be01028852c259e50010c95ceda50d35836404f52bdec754c4b018abfee524dd6e45d3c208eef2b08f407b060cc501be1ad0e9b3df78cef634ac2e4b4401e937b5946a5f4325f7f290672f635df52aee519a9bb4e87c26a05361665426626c0efa867cf72c50af8d84adb5a31e2dfff9790fe12d40243e26c7ac04ee0eb5a8981b5250a924a0925666d24b49245662795a7c9a132f4e1b6e54b77e46a89866d6259b4ad3ff8e9362e7e6dfe9e9a777c0c047f1c3adcb421678ac9956ec8f2d22aa178ade776b8277f628ef9241b7f0d54929b773ef39781263c2479d8e83c146d5c61c134b935097d7c006d77ae87ed0f686876eab61b3cfdc6097d71ab3ce08d011b975a125a4bc21d68c1ef3ce7c36a152acc08ac5f59c350b82121f2c94c7924d61658b8aa95c0dda33a346a1a2ce61b8ec907d238fc0936e8aa80edf3d363bac1f630e8b6091cac918c024104c9b31b6cda7df1fb711d8e607cec5ec01fcbea991daaa06d46007c252b38af9b1c627ede0eb8b2bc19ed5fa4b58dc6f4e9b4d9894f1fd9284636dfadc0f8d4b55e2015fa150e66de474c4fb1b168b503c43b0ed531d69bf359b643ebf453a1cd052d2e25af3bd6b6c484f94531bb2e26c61fc87f0e0b87b9af1cb1d883104077594aa5f8dc70047d7e89a9876b6dfb9ae51df1bb64c6b87982d849162d97ab453b8c632412094a803629570ca6fa0495904841e818b06289bd846f88766390b881c9963befe13a274401acf19189c83433ed47c46e7e819f0f92aeecf241aeec3f0c639c48e0c26f1b1c039dcfb3b34ea572eb89591ee08817f1b8a21aff8cbfeab1e38723827c49a7a6b84ecf3eeb257d5c6d83367e404af1865558eb817112529e68f78699f40ae282292727867c97bc585aaf4b821ddf7c061c4e56371bf0f4e505598c698344476b87e86bdd79743615005b7ac470e3a330f3f42a32c0075c8a2e294c4a6921a3be89a3a54ada6a43291f6dc44f93d0edf18059669545cadcf842990fed582bbc0c0bcf008f937f5fb3d386213ed60f9c7e98cdba12f4d013cb294afb19f00c4f2c74adffeb14f615cf6a1372fdac428748b4adf39b9f22ad811ce147154e7a3751854f027b223767df308b612166c6860b436195e89f802e8dd9ce7b1415cfd9c67e59920881b2bbd3185dbce169787ed69b49e182bd6e50aa3b55c3308044565d11a756709a89a7a0172c2bb456aa0cec5a5ef120af89e9e58f792c0236b97086267ebc5e4ceea09fcc4214e097d8649d54aabe3fb7424b36a70250f5d623ed608ac26f7861b378272a0a6b1ff22758199e4f00a86e62850f24f270fe021d275a8dd2a6f147f9af370e7309a6cc586462634b6f64c3aa671d205dfe36b6243233a0b5dbb5d182776c42dfffd119bef664923b9c445a3424b90f3a8eefac65bbca2cd78721579bdc94ee18a1037feae6e8e82581a763badbd2fcb3c8457d2665936c6eda9a09307b5472c950915dcdc119b6e50f4da037aa91739528c307f69fb142a4766b638baf453f5da888e7b5a52bf5e7a369a93b0fbbbe58378152f241d996604788780a7290f3dbe133cc321886012f2516be2052939c728aab3059a70cd934c04711bea4dabb016441b0973930950ccdb1a44d1885a0c450e4a813bc12d5d3449fb6df270fb8efe4a52789ef434e93bae4f121ef6542f9d3e04068acbb495df675602fd7f32a12f8d70022d9bfccf349835480f2a436927592e97abe62a436f13654286a93a6269d590965f4c1a4b888f3cff0ddf237881d897a41758b2b38cae0f503a2f064c309b5cbe0743d4bd5ce17ebcaa1ffe709971d4a87530c0fe5c0deb10204cdac5964955f9aeae3fbd596118fb4027c844dc84a9fe6d350a33b069810f127e7fc363824beb49a6cf83ba0856e05683c3d9a990cad9c627af8297bc88c07a5e6a54041eeba13ab833d582a42b838dcfc4bb40d4a92bc25a427839c68b9d8b4132da219f497416569fa6101db0ed500f38f8537330f8b4f5e056621d4e1798e10359bcd393a33f57eeec27fa9667902c5d21d82f6a55c4586dfd1c5d06f53e0e4bf0a6fd63e6c12d62695dc587248830424083779062936c477158794dee378d637b755e28631178df622f6c60c9e08405be3c87a4054399f85ca958c12d1f4ca9ad4825ba4afe5f705238d44446d3334eacdadeeb04f6ebcae6948236b2b7631f5cc2c8a580758b6ad907a816c157af08227d8a78001a899d25257429271c34e801ce72ad35082ae413dd32763bb17345afa13fcc769c2ee7cdc2e7d091865963efd639d45a0dca67e15ea0a32c7c62b33281a1133be4a30d272f8cd80b133d9171b987b57fac10fff0ad72b4d8f258a1430ba0b394f4db2865fa227d18fda12e65d2b197b99f7960469c42eca7dd6455f776b735dc9f6d5da193f00cef0184e31efc5511031f84390760ac61a68d82b38570463808bbd8136714fc22a702c08089d977084337d62e110126434f9e43b8853c52169e732654f9aaaa9982db52b6f1dd772d1253ea23009161a22b137ea74b59a8bb47b88519963ad7cc3943420dddc2bc6b6c14aa0925e997b3ee593b0904983bbdd78cb12f058b393915975388a389980e29219aab24ac36897f4ea9911fbf0cc50949ea8663718478441cca88a762abb3bbbb8ad69100ae96823ad7cdeb12c2d98b93b70ae9bca8602570dd8d9685db412abe6c26a91d85c4762a558edea3539b7361c218ebcb7800d58d4a24f04d42b623b34b95a6ca643d32a5cd0eedbadf4f2be56d052c794f2d594fc6193404511af52c9f121cf597398d39f73074955111e853d01c99b4772f82fc71cf0083cf2b737aa95d707384024d9454463dae66b8937437621149df9a7d6fce3fcd8d4716410b3a7229c79d7f00699d440dbf514e7eb5be16ab313f512d14c30199eeb9f0b780027899494d0f8653d65e624e6e30e03199c0603021bbd8eaf7e4b3240e24999e1e74bab5753164ac875f96d88e6e5bd29d287b19e0970ab1ababb230a6db9759ef992fb45e97446fbc393f8ae0b3cbaf26013fbc534049f71fd4a156ef656eb6fa4137c619c72aeed36209801fda3113bf31c412b72d48cfbddb51ebc0770bd23d0b4aed9bce2c925d2c1bb80014ab0dd0d99248b710e3938bb7deda35b34d637b79bd9e7798b4be3323efdb9418c8ef9ded5ee5797c41767a22ca06becb7c93d4acdd5a57143b23f8cac0badcd03089933647f740f6176512983592b1e73816400ad9fa15bc9c082dfc8ca37dec25183bf47edc1a76204c53c0804648acdfcbdb6d5bb89c0a72955902fa865afe8a332f39b2497e783c192ea3bd7e709ab8cf52ec0bf01838cb8c5dac1effcc9921ee7e805988ee5381ea7416d10ec03d6bdbcac3e8cb169d61fa296dd7807dba7d7cbcfae3230ae7ec7504db57612ae0c8dcbb0142283a6c647360b03f09ffbdfadeea0112eacefcbe047fc94c4192358c37a27e0a3bf51e870034858a99087196e11e603b10b798a188e1cb55c1c9631b40428d34a8907a6fb0aec39b6119e1caad82d152ea261797b07ea1a0120a2909cec77aa7b6d17f98e52eae395bdb097ea6a7de6c5a2707174e843256fa03e5184d8af353d10573dff11b6c70efa2906a53440695a18809aec8050c2ae63b12525dc480d7728a69356596bf1b993828a15549ea479e82a22ee0a08e690e0542272b4e05ef1401d4a5e598319758c0a8f2989e1d4a60d01f6395a360a478bd6a60e254fedb368311da526be1f4f082cd157b276650833e0e4e5892b6bba69bf5421c3d7219e155e790a44682039c8d2875503e9bf206fa36d20bb3b19d7ce7f63cc0ae80133318768c01a964d8fa45c503ab99a8cb7d03ca2eef5ecf55045ac7c9036ef01766892e960e9dbc83d52410089e3b360747c803e1dc301e6f90373f006b615d9979b4ccd206450484f10bf4cbaaf4acc5884b51c893410a8417ac1acc70b9efe2aadfb6a4db0c821fabc12aae1a476def441bded346f1ef61e394d17f267737ad7156de453931440c58f91ee3c9f0414c5d55e65a156005224901b4110d52804856ac292ec586075c96f92e12c60f25e142136dae72bd43b594132f5e6d5c40417bbf9478a03fc2144c3e81ed137c903d96d4c2bb938676e87d8a887d7797aab591fed3ac79d55dc5647b3d5c653ce2d82b2cff9ee17af60ca447732e1ed6c28146c32727596e3d6d315f08d10b25fa50585129447f6c6c176632c1fa98afd1cfea50dc9611bf142767260d466e25e0c6f350a4d6f651bcf690b2fb41318da9ae0820575ce2f7052fedf40e48cd60d81b588fa011bb84c1a36b7460d6b379600303815c52d7f5cccde461c91d574959e20f3aea15fe120ffcd1859f6b408c3fd2b25c85cf29ba801efbb83484f1d84267d6bca781263639463bfe1b7cba5041aea6caed4cb7e10858a90e5689fb723b06fde68888eb475dc281bf108e0cc30e139ffc378025adc7b04fcdf423f48129ab1aba50b2c072819193eb8606b083d8d2e97213fa617078a796d8906337b84330722648680e4708fd5ffdf16f90d36d952d3624d89bfdcb83c9c5df13cd7dce7a7e89aff6269ef2f65233747096b012d2869ee4f15aa923398a46663ab0d6e25cff029ec1ce0fee0d7805225dd2c8fdd39166cf3a410bb002aa7b606ea60afd3781b699c0d2afe95cae0e247cfe666affa47acb9678aa159df1cc9d3d730400379d08dd39b9b13d2846045bbd0ca94d8d292c8e1d7472e969f9c199748ad16496b841f607f8ce07b6796878abaedc755d60c6ca42a00722660fe30d1df01c95d043a2558d7cd73f2546a22c1d46732298b0ed59b650adf591ca176ef2d4a5144d09e8da00293bde1ce9cdbc0d4831069e40f4150a1aa05d7f20521a41b449b920fa2567f20580552584bc9994c681d55ecf9571588aef5342755daaaa20047e91429b40d5d8302a42308a76c3ff4e13286a5442773c4989a5c017de7533a11eff15a4ce3a05dc898310ed86424d5ff1d6b7ed421594333d1060dee2981da545a8d3d28391ac9a0c8fee42bd9b765bd274499590d9a9d24e3a594b52014cc39908beb2e8e3683cb75e0622ea27b421e96dc49ef130b53671a2e6667bc91f3fb0d6c2dc1eb46a05218c3294db47a3a5c601d147e3047c9b002bee407ab8156cf5a1af5fb7223e2b49efb5cea494d1d13f59745b0b052dec1b3e9f2eec9de5c5553b29dfbe1286119b0341a3a871223c46b0430417efd9333bb2df89ee10c9fa0b864d0bef996b01dbc46099d2fbb91baff560f7b3def03e1b88e71af880dc371285100106678df3849a81c333b703501a9a511c532682209af2780e4faae12050bf71e7ae04521c5925b7bfc7fec9e0f0d5886d7058ebbd2b68ff9c780f9eb5c17d667570a720cadab91ba9e36ccf98565939ebc0e322aab60fe2df5eef92371a17b835570e5f6846a7ec1c2f5470bfd11f48f656190a54c078230b86146a696ee71f982442b8a199d822e58d45515219c7522ff0c73eb0c155cd8fc8d38fda9ae605ab002481549c0b62c911079f75005eeca2054eaa1a3508e31ed4fb16a28a72faa1ef0188c736b419cf29ccbb022909d4be94df5b78faf247b4cffc15fba4d4969e9067fab7419191376ec80121ba1851c8fb8e55e8b3e78747b7e5570fc3c26fb052d2ca683280e362a9e7388f83f3e30ca352219a0179df103daebd457fe91fc6f4952ef71429d0e6e0b5c8d40d7f5cf5125d363c0ee3e3c0ce79a1596602b84d9af753350a8d7d20f3e89372e77b09ecf941f3a50a54fcf9107c0d0f08613e57f0eabf2c90d9cfd2fb5c214a01df205c4ae053f9218cb3ac543b0431dcbc90510af5c01cb24a1cd099156903c7eb47b8d1f213ba02b51e546860d14d44cca9601d159ed110116fe5b8708e655a32692e5be59d7a471921eb799a8f05eaf428866b3bd2bc75927cea7ac982546ad5307133714aead062747110e1c1f7c2e75016a9582537d881c70b72027dd418bf5899a9b3c9f1946ab5ff590fce6cf01a68fedb65a18b4a4814e7debbefeaf76508406715c76543a7565d451822cc5246047e79a049bb8c114640881cf41944e362f239a09a1bfcef86cff4891dd75c736019a4d3aefa13f1e14c5e49efef5e6bf29b209f1bb0ce989aae66060dae14b84e890a0e725cb93d9de772eea03b8f35a2bf8a9936f645177b493637617d8491195902db176916a2b6dae12c3eb95cce735230fb728febdf418a3fa453ac72798ae1bf3955d337aea179ad8c2458de70b5615ec5e4e8e82c1644600f25dc27897133876f8888c70ebf347ef7e97d2e50638bbc62eaaeb314af4bf0a095771bb7bf3d3848627583fad720f2e91682750d0c77dd42daa9e9ed752de21b9ee37f168600e1d6644029ba46132cb75774fd96df3bfa16f9dfd1531e74dd73bdc25041f0452e3141e193613bc4d7082b14cc00f799334dcb0fbb8d157b2b7fac831a4c14c18900756ba9d26a06a1d8bbce08cbe2b9e3835c8379694a57e74190215d746c9dda585c9080f1f23a83bf484ba4467789d12c8d17d89f2e181c9cd30daa7dbc22876c43befb9b5133da764c6173b356efeef9fc7d9abf17f1899d72ecc3cc5bbafc099c50cdfc03658eee76449afe74c1ae5857e5eedd8994bc0a07df9d3c28ad87a59d63427860f2dd37b27280a7e74de8649fc67772c2da2029b9dbd6807a6df8904ad6bc9600ac876584ebf6e38bee41e8ff862cf644811b125893054b02cd7ccc7bc5d82e7d666ec1c28ee1364d2ac6335b8314cefde14c392c32ef9dfebd02a3b8846274c656de33c176e28043c1ab3df799b69bf849d509fbe0eec7cacae0c514f528a792530ea477a34d728af822f81405c771ae5ee745805b28651782c9911d1ea6bae84cdfbb1e8daeef4be62e5eab55805b5ee23f92cb69a087b5f06bfd64293cb340923a175e5a2c260513392f00cc6de63ea14fd089d265a302ef719ff1c7c3c00f8c8eec26c6ee02bf347f39fe299efa3ed2d50528d94164f75a49a7d3db7432be5abc3a519f719972c98eaa4180d1913b295dd32adcafe3169d2d9b5b0920315f125044774750e4601145db176d2bf466eee0d22f5db0a8f4ca8c78b57774bfd6cefe4b6b013c27a453ae96dbf78ea76ddd362d4da1dad876ba0e7e2f7d5419551ee753c14d1447d3fec516a8947cac624c4eef41418aa10bac94cdebe0bac3c793f7afca2cfc57f6886c6c8c76e0cb84e0ddc33e3a63499a013a8ad30607b7cc74f22771654ecc1f33004ef3021a3a9e100b7c2dfc1a5e92255d8614fedaabb424cb50857ea11d4b4815e9de5449719ec166814c71fae4d4def81f9e8a8f0566ed6930a97c770364cb93383deb7447688ad5262301a8627a067b73f430f306bfe30543f9e6cb4f00e089eb6ab66bd297dcaf0892756349d13d2abc9569ae1415a980e869221cdfe238a0d2416c0e06fe8e8ca074026d3831c2d8022d2ed3412234e384dcb8636e01497fa7496a2e73c22958153adde6c197093e45482a7219f625dc5465697a5ad0c27a9ed7c26bc68984f83edf991539d51315ae6162a991bbc3f58d1c29ebcfef17864b20350ee1dafd790f4d72b98353490c4abb57b8f8e0cb031191276abe744bf7c54474d260c9be2acced0c690d04bab38577ceec53f03a07ca4ee4a0e1389f92ff299ee20c9cc588c632246cfb4346a80ad1bee82495dc5a46fec97b2fa1dc4cfc537c5ef7d8ff075760ffd64a1cc465b85d239059fda1392747c8b90aab52fa993c4c843b9e0ff3291e3c364486d8e606446a9019600a6d84dc0866c0e202b839e08ecd5f1bcd02866077ff9c8421000444120055680acb158eae249a1010d08d437bbdb7511a66346915d7cb50a7a37b04e5ae046568e84231451bb1910c9231d8b6dbf054a116f36d45f711e40f3e6a1f56b904877976fdc3e05cb24dd2e1199bc7ccedd420061c751fe0d45427de45ac0678ec02f3534fc6b614e04e77c10fceca184dd96e021eb98ee6e223e58b84aaf4645ea4a42638a2e922783db1028add7e4108374e360ff3bf74b8b955282878368dc0dafc423f584490c0297d372646d120dc6c15a9b5ad4f6df70e681d485e9b2de10b8963c17477f1c69a1e04cb520ea8c0ed648dd50539e077edd7f1bb8e4a625256d87890973a148144f48bf49f333b84f0b3911c8ba79f42fbac68b6d95a7c2ae7eed9d9acccca4adeabcd4c167a0daf74e2797e69f9faf3507ed241ffe2e45721261a3b0ef1e01ff58e3df08ab796c3931d4f5fdb44d6d7787d367b071f279ec593ca3d8f7d48ce1135e3fed7d232f5ba1f46ee86f1c88e763684ea5994eda4b15c4f7c028e2f567950ea51bd09a4a5a84abb49cce646ef4576810698b2cb33d661ea66191cea04b8804e0703045083ad3a014147aff28e20996a9709cba85d56cc3ae0de2aa637eec489bd0dac8fad4c02675437aa764661cad529e1f90163ba9811aeafd9d75b8d5c66cc8d0e1cf4c683fb2d820f87f32e4feeee78dfb6a118a1957fea73722b7902ebde949f3cdd6dacdfec54302c2d236041cd11127029f59883a0138b496a21b451c9674e68709897c64a51002faebe235c2850b0df715042d13045a6b2a9ddde78357611e018ad86254de2036d4eb9b90911d9f50edd6b2cc399d483634439c1f406b7126b1fdb50709e074b05aa7d8e85f18173faad9a2d204348ee9d16d66fa8f5c176783483f577a64543ef53fe70150849bbe7ae1ca81f26435742d480ced8a790b81c4d46771e9ebfb8526ea992e156cc66649c6487550aca2aeed34b230c5a29b64a0c85e3beb99dacac667f5911f466b7431dc72361d5d7b1adc7a7f2c07b11940746dfc0c1615f1a37b714f5bd158d8fc1df4c667ef7e85063184ebcf0a48a617d9787fadc4b5d862e97c7faaa3105e9a05e2364af216c3155ebc75c77d7e6a58a52b167f6e1753ca179a141c456b8fba02012d35bcf892f9d70a547486f90176982c6c2cfd3a4efec31ee7fc206b5e3a1b2aa8d1d308145d1ed0ae4ba755285945272f14cc9143aab883a875335bf5f9e6d2a26e7a0c564e86b0a181cd799ceacafdbd1ceaa2a3975f369d565e8eaef1be4304643da04777f8339c93a05a83d35974a1ae3d13c27442e1d23a6b3948f96b9f673653c41c0bef904cabe35c1a77f2eba88606de6f35c0ee6e31cd0dba5770704736040a500d30294cb051b273ca8f138f90bac541a31b06f1c05acf894d7008a4f361f0b0959bc2320cad803cd1344e71a09c3f2648fd4dbbd61dfb85e1a2c9e83014e41cf1354452f491be7bb70ef510cb1f52609c9360458a776a8ce6fc6c7d6360a55668f6605ae5c8f81020b93351765161562721628b4e34b88c2691e989784dff4844a99a04e739f0dd754f33eeb7f162b6f7120dc6aac331244962743f626f91d041d6c259d0bbcb3005bbb629dbbb2ca9e196ef8ca7eaef3368e73a90d54276d2076b6882f436a2571ad42951f77cabc43fbeccd5e158a734065b7f485e608b566363e3b93dfbaae50bbfcba6c7069bbf533371f86b8c791dc510dd8ca6d35f6cd65094a2c7b05b7dd5a2d2ad6cebd131013032827167683079805d013075cb83127ea3d85b32060bce464cb783fe875b01e63e822e469bd9c09e87bf8bcb514951fac8c0f867cb4c31d069f77237c7d5bf60efbdedac3e77f4ad7dd1ac8109e1d64bf1803ee81280c63eeaad8c6c1e758cecba3042a5ed8503c4fada1669fc7051ba61c22bcc4f58c6bef2b83addd8f4e9e6ba0c4d1fff9d69f553afae2227e8cd2d4f2662dc59cdf3fe1b661c769d3be3715e592bc360ae3fda928e0968ae60cc21dc8198a766b38b51c1045b5ae6316ee137b885ae0338c1d6fde79b3e88c8060fc164981142b13f663470aaf0fbe6084208b61e6a7ad679e6dcff4c4bc12ed01d770f058fab57303582d5b0e02c8fda67154338f08ee7174ddc2c869a3c88da039c8a4d389d9d31e1bc6d36c113e7228db6885b1a6ead9010bddffac051404094c9a91c3f3025cf8cc60b09e75280ccbf0ab5df73b6d10ca554f0e2883f06515d4074d686ba8fb129630c8be923ad9cd1e06d913dfb804a8f68ad9f39f97ac3d391bdb57186a7d38e9e2ad637b1be6b7bc076e1deca64a14d6e837d857407f7069cf1cfc60d4b0b0d486d7c593ef2d9be35841cf67d1b15bd70b763084085d85dd05883c2c4b52d45feec842aedf4ce1a2a3ff2d2853715d10331c85d0ca1e40d780b472b70d6db2e983c5b06a828bd5c0a296fea77572d35c1b348545d36c1067c979aa0f3bf9a45d86785789764307b57709218441f9c8dd36da91c21463e575744273fd18e97984296c2b8a380b1047cab8e5a18091f82511951d2a2d8a714d2893633327da4885745c2c10466608cdfb20fa304cf6455c4edc67cdbfd075067fb4151770748cf9ec00ef638bee71d0824b593faf0b244a721a049fce40b1d3013de3591e7f5f8e29fcc06107673a1a91d0650414caa3f35fbd930572a6d0a974f64c664608c6ae7d14265323a251d4b4670d94594f8b378bcfa29c758d71de88ac6b40f5135a1e47421e408cde4474e2c7b6c8e57d206e7044f7a723c2cf91835af2e6628d5be286a2cef0c1f5a656c0050854ffe8a7b4a2cdab13731194372edd288673d288748dbfc435ee547cecf2271de8c922c281f6c19f7250005791c144603b39f9fbb6c10f876826c1acc9aae1e37980ae757609b8d7faddfedb385863343b047ee3c3d6f94de0354097e9259bc5ad11ba429f2487f88cf9242606924b027ea519d0eab3650b66bd450092439f3e33f72fd4b2cad38404860e50ba7eacddd5cfbd059af00164116890aba23616be52a3e1f1d51f9212de116edddf41ed81e4cd8a04d104c6093c647e6b0e3968a71af0693d0e16a3bc1c0bcf8f1544d95880e8a04782ca9d8d22acdc08617544c533c17f8558d188286c1e416eb000622e2c4e1e0760f6d9310920486c2af75a2f8abed04177397533cc0e4a73f2461510c8d4d15caa2ce90fb2c593c80e075155d6a9b5e00a9949e82d558b515a63d3e7a3f86c2da7ef05f3cfa5a900117fdc9f36ba8f5a1e6eab115bad979ed304e1a9b2a66b71f22c687e2e3d153c7fa752d7542d003dd4aae153ef01503010e2560252b8f5596956f2f0e586ad3706724651db9c68c10cf36c442be79aaa248277954a4ee2468b54611a2d3a56315a998756e266ce53cb5ee32ed49dfcac37df5ca76cda79f1d50c76066f129c3b133b43109b798092a1fac79851855d194f0a4597582132c1435bd5fb46e49e28dc7d36cd599da7019d7c8b23e759c84c9cc30aba0dab34ae6454d0f909ebb57009a0ff0eb23dc6e943b051fc065640002c3684855e69e6f8d78c6bd2a7fd50bfd9ef8805a08adac67402f12b14765db4131a3777281afe8c3fd1cf688c0d99127a400da7f771257570beb1cce63f48f67e056c08c8ef58f9e3617eceb59a44053d3a8dd6a25f411eae081bc7128b93ff88fb7ece845ab1f8d6795fd8813f7cb5715912b1b321bbe0b0b15c648f0c81212e515d245060b3dfaeed404d59e559a1143285108c20db84686dd3d59062864842fed8e4e55d07a2de7dfccbb458e0497a10cdcb78592cbac33fa41a9e4396d49b4a6e20adb22cda780b70290ea704347030ae2880dd7afd32439522f20d853d91d1890695af92a141108769c9a89cdfe6afbf0fc1158e3053fff286e5dd8d5bb744778a0816f966526d4c3ac747cfe70d44cf9fa9e1552b6e071a5431f88aeb24345170f7404a3a5094aa2ddcde84851281df325caa21c5aa38b318314b0446c0265f2dc28bac0ef5e41c5ffedafe4551499fb9db600775ade0f130704571337ecc43207d047972ab413692d9005223e7e2591758ac43fba1c3d520feac1ce7e0a647cd3767cfbd420f92ad11004aac6af01d3bd86ec5e0490700d9cda8423bc375bd22d915c28518e160e047075143079ffa0d7544338c8f38ba20cfb6010a56ed2c4a8a92850936b3f8e81f3fb231c801517703ca138b47600c89b0cf13501c93d39c61cf3909b48f86b407df338715e93eb28b360dbf3a117d82efa586984b08369035ab769ae2d4d93a54883ca5a392e1b0cb6475aae809a825cc9e4c736c72191932bd60d87d860b68a66a8726d80117a0f2536270ce0c4345492da18c614d05b0084af12cf9ec1b66e12c1044a956663259a903c377dfe56ed46670950eb75a6071b8d1e700e6713593384b15496fe689ed7aaa3fc8739f99f8a05e6a381feea67992913990429666a1005be73feaeb2950ce5e016b791ccd08e0347a97317819d92bb46e1dd27142ef9ce0a3fe21d3c8b4c7c3e47dc13e2e21958b5b5aac9ec9d6614aa6a3874261d938cb8ebc19a956d45f1b51fa5504773137d39e79feecc6c859e4a671c9d6f2d75b0abd7cc32d638f07f1a41d611fdfbdf3910f946fec089bff04e5389e97fe06cbb93d949a2bbe241b54f54d436abec94661c37167ed65198c4a2ac81635dee0e6446b55d25205fb90f21aee5103dbf53f565e735c6d5e4b44cd60fc44b5c0563d6073bff1e539fc6c1784ecff5af0865a8c42410cfe353ea9ae6b926824c1d3c75e942f1234b8016ca79477813d919ec80ac16070c5137ee0e9854fc73e5a0efd3de9451d2876343a7522f00a347d85b1a3443357fbb924ea79b16bc04db5c3fd4f2ce4d388d99039b09c87eec284fcf634d4c3249b49f30ecd3cd2aa846f1d3844802b1859782b9d4a43831b20b40a48df0b69eec84efdc9ddb40653f4697e0ef5ff32e1ab338976fa85add5a654664268ac80142c3ae8844b3cd292f85e171c3ce8b0676783e20119fc5b2273e9c8afc5a78c0a0ca56607810a483f2e8198fa921c1bd0f58aec81c41dd34f7862ba2d7f1c12301692d366cd5ba8325f321efbc0f711303001241ec6a10a81b5d2e60d95fc77a479545b7261ab09ce7055d4550aa04a8e2ca9a94215105c9c86a64c97b2cfc4daa1dc79270c599391c3a6c36c93729d57fe16c47467dc6c419110f150e3ec2789374ad8509d25a4f1458aa993f61ac2366bb30a436b62ffc0c8f36043e1963301d0f4f9b4ee6cfcde39fcd2118b459856d2d606e7368c30cfc6b7717709619977ef3309d7e03002b6f1da9e88dc21b7a703ab716d2c607a83ad0d32c2b55c0cc5ab06697085ffbc47585b8b460a61ec8d82511e9a7bf03b804eaeb40c9908d5613e0671c637e1d706879a3df52d1e081601e0f870b76379eeccb917500b34a7262d1b28a5981f00139178e2b1e75d23134b57aa59526bb0ea14e82c732dd893c8fde83ce741e1e4b06d633173a2a6af64e75493f234a8f0632ca98d439d9910d12d413f977a1b8f4f64655bc0f1c83888baed204dcbae3327cefe29274f58d0977da92a9ce9e4ffe83a78d11ea8f8fa4a7f13f02c949a2b4a66ccd61814219f42acb77a6f23ac9f1fb26961f87bbcb9cd7935004098084f0acd3894f6db575a97ff88da318bf2488e039c110f4d15514c801249928e5d20345e2f586f8b8d442d53c2af619383bfa7016d7cec1b1c3c4aef0397b772a55df9a8d9d0b0623474c4406b8a71e163fb8986ced24a630ae91356e999eb880e85e1c8653ea983d24619fa2124fb7bde53cbb1ceae39d4b7a510c4e8a89d3e231f29b0dc32dbf71c23c995a5844ee8cea17e2e42d98c87ab0e93c80f08fb27768c3882ccc3c9e5d9f00d14244af3d804434261092c2c436a0ebd8d304afc1754e021338492b1b1140678101a17ba72237b858f590386d639840b4b3259916b12a221757d14d40e5888d5a84d0795ffe34812da06987f19a7ab14a6d62c6f1d4f7852670cee939ac078b88ec1920888192d7b1537a6e1cc4be2e8894a503fa0c8129f1ae9921078540878a44fc72d0c29d88226fb0a909b960a8157ea3a18d42e3c1604a66099bd621c3bbd43258f05bb144be52a1858ba3129d5b6b513da0503d71cb05f294d0d9d47b02547a8c1be1f40d9d4322e31375ddcb25776f241c5e2d16aff72a1c83c29f12860ebdc26c15c2223e10af190cd3173de580026fda7faa6a0e1d7890599c8868696d4c5ab0f6620c851094607085203b62d0f168e0b1c7997a68598af51288fb85765dc5e3d87a96502b718b8e33e6f1718085f9f1139bfe5f49b665e0af1199ef339eb62f9de2bc681b1809d9d4ff73e44bb70bb65dca34fbb4e143e7ec19937898b259b5206f29b83db911a0e57395379d4a80bf23d07203edda4094127e34f265b6793d5bf5465c8e3297467967c200a5f166d047e6940135797e2199b05fc613145013fa6834cc690a3c9b98e35c8cd49c82377afec210341d01b649be278746cc62660aff4120d15545f205608a265b52bcba1637fd4a3111c324950811988c18fa0819f35efa1cc1fdf8071fd5ef92d8fa93aedbb1c3647b19570a6503913f6383e6a3bbd6e13473f4317036be6f5a823464f4909c147b7e0086aefdac1c0e5cb45d61fa7d8fde1d4d6cc32af7aaaec6429cdeda0fb30d293251ab6a2d4509b9fe2a8e5c973f0230aed4227969435317d272e7d99abcf8988cc1212cdb62e060e4d38cc43ea757ed55afd8c5578fbdb26f40d45d61e43caf6f2a62238f36903a2b95f790e6fc0af4c32dbd2db1f6f87cd4436b0bfbf05d93f35748cdcdc34d21067c141220cb5bfc106ccd6fa5cd95bc61dc694674f479ced7623f2b4561aa4adf49b8bf66e16c857f2dbbe869d424dc642f3ccbe6c26d665c8dee13a3ca6573024f2d46d4eb9ccb8c76f3a2da15104a4e8f4c6ee013fa5d5580a6e8d1ce4316ffe272a8dfea405bd7fb4e11de3a641d1e3e2126e0bb9ec482bff0b850326b62b540b982bcd35aa7964d07d955dbbc5a3d27b4702a8646d2b8ad5ae786328e04f8d8aec21e13f97bd504a8d705110c5e76512fa184d2dac64f11296449fb310f6aa6ccaeb51613c4b4cfbbe9d424e1a9e7ad0e8df05dc72e1474626870813b4bc750bb9c0f8f0e6932c2bb2f7b1115040bfba501d2661650019584c6dbddbeb2002579b4829fdbb26b1f11ea4ecd07821acbda3511cf6a27aed2d91e6926a10a9d4c1d32c4e146ae7f30a19d25cb1a17c911351f4b9db282956e0f65724fc6b7cd232c6573cb3038ba4dcead46b5e8dc77332c90677aba2358c0acf6e54233f812bb3aecc3d5ab90855f91ec1b594efa953298f96d47103b8498217c4905675ea96fb10b25c4a0461d08bf877a32f67a07a7b41664db80a0e71168a9ec1ad881f19c6ef004c3fe7ad54a6983fabdade128938916f9fb686d2e8fbf829211b285b35e757bc5073e6b61432a864244525a0a62b88a9f7b8dc085d4a6e1c1c99922539b7387484ca80ab4508fca102eef7cb42353ab32be19b6a281f625a791d091702ba6ab2545e94801d6ca06ed6ed7c3603aa9c648c3599e1ea8b6b80b33f34626d0165c315a504aad910bf511e82fac86cc44c3432823dcc7b103553066ce522aa187075db791ec8b05162edeffff68a26e11e4082e36bd3923488b0c1e6e1c7d1fdc85df580373e338fec7f4cf06fc486868e1275e72e94d7a312eb611f48883cf62726163ac43ff54a89ee1b7ffcbda8633bbfbbb7e161f8dfc52f176903cde08992a3a75701f664ebaa7281150fcb082ec96510f5f8c89aac19ea0871557849397130a063cc43e88e2c1688687b24c15b0d7cd2311c323b9b30c2709047d4a6d0ce340c0ee4ce9666fae41144f425b845f93f3cd2b6357d21e7c52d0253c6a32d521732a9993a022145eec78f1f5149a79cea13c9eb6e88f7974d89700ac9dc75d54454b4ca2848b48b029150a6e5c20c2e350ab35fcae8a3b4328da31839b786342eff118fdef7f5fd23fa7b8d5c14c7a41ea8e1219c73e87add475640184f340e6cfe1b7a57cb9255f14e2cf75c2082134fce98916b6439e3261d4f06f71367905fad53b840b552acb0583c9e6409aaffc6e88fd892a5cdd619924fcf1edc3bfde6cb17ab0346e82eb51268fabf7b6e65139676d1695c5618bc7b8bf51b7ff60bb58f8b61c86829a637456fe29f2a4aa93ba14f1b13e6da845e649f3e4c015e352f726f78b4d208b76dca77686e1dc4c86e1c0041250743a3dd4e5905fee6f435ef38f70865036e6fdd89a26bc26585fd5d5d3cfc8cc1f55311986737057227fd4eea188434bfa47d825329e17e254c219c4940bfa78bbd4a3c690efe0f02649f18a77bb5f9730c098fd0d63e1e01000b5571a3e3cbe89d1d174828fb45b037389ec14d49c8477b1b9097c9bf90667ae60c4dd9c477bf10b2668378816327e775105cd7e6a73da1f0509cb09ed2fa723b8026ff08df591e69625994205a834d605903352908405c47970109e1286a716a56e820eb91caebc4908f8421a78f14d11d8288e01991c2da7c505ac2d8185ffbeb496ee1ebd4e88e27ce4c3c38675a87f3fb1aff5a3dfe652925ab2baf475b484e64fa5729de8edfed65a549ee59a54c4a2b4bd88a946dc9ba3b6423f3544b2706f120f3b767edeed7997f01ed59c971f69855e0dcd4a810915fcfda7cd8bd108150d55105f4f45e4b799e0cf4bc35ceba525bce3f13fb3c1cf0949fa2831f32d728b3a343f9461638e77917e1b89aa7f7c957c86296272846a6a1a9d8e592a7e6ccff9f61b2a7f32060ee21d3f4f341b6d84b1194424ff4d4e9abcec925d9c2c884d56fa0ef21d0a69668a1859e2653f2563527b026c6b39f1e7623761b871ff295b664a1653ce96873868406db4c1f5da001d99e978b22997f244607514c6db31e1deb4a6e45fc0506bed9c38961bb08b73c557108be7d121647b29994dbffeb269ad11308ee8d108f12128fa2199e2d923341cf9a0b3d502b47ad8700610802632a0a274cbaff576e389fdf73d4d771a3821e7dc1fae5419fd5b5d6c8e57a16afff21cf992ab987ea7ad51e7e18254d9dffa81e85029950e516661c27f6ed128b9f591d4dd5bb0365440775bd1b4d80d61a0bb323cef98508d8e92556d41b540322b1af279491938462b34611d573a708755bb919686fe7e3c28843db1793724619b7fb1cb83f748b7d12d41ab8a73ac024ae7ba71ed18afb89c7e35601f9300118a8524ef3a8745929b7cc2f5015e5888f3f8fd17d69635131159ca8ed738d4f2466fce35fe93239a66411bcaa69c162755d13a2cf88b021425e79417b425cb606f79abf2fb52f3643946cf56f004220108fc4f2e78f5b74ebd5f7c96fba8e739c5143b34ef673243ac755b4a6a5774e0cae1d384bb4b82d13008de4dd57cb5c23f311394801733a879478eb4bd59fd3c46aebf6cc267bd5ec33786e1999e3350e18ef93eda90a37690f59196a5d5f705af5a03c4a15d8d669b9f464a7f50966abd376ef1b2556e5e63bbabf10eb034d91f196b26eaa9bafca1ace0fb175403499cd9c7f25fd33ad59cb0a649173eea4463a461423d72c8f179aeb7c5b3e0d77d625a08bdee38eebb823ad5db23d60f7c36da195f1d2ea5fe03e17766bc06417003a7187ba807c5376b420b2f3498235378163200d827670f541061238aea4101815e8bc6148d117306259ba950b20c39fbb3501fe3dc213add5ff4ffe119cd1b370f42534603242e82cdbf1cbae20797a6cd4837de8fd1a543cd34beaca21ed0bdcb54d426fd635f8d011e5db9b88014446b432191297cd6a9195c7d1cd8d7fa9ba71bb05678364d7f0d33e26e0854fc3ec976159be4cdea09fc076fd87ad5f7ac2f4c8ef083ada885b01788fed4f3c7f313683b30176bca3af82ebad10d131a1fef1eaf23cfe914254bcb260b06a90b8a54024394f857ea836979df2dc2d935651b4fec00f349c6cc5265f445a47863c4753e0f20fc59c43f90558ddf42f8e664081f92aa0bde7568bb76f159b75d76f9393268bd410b89bc62894bb49d70ea1015dfd6a813e939ce5b0c495309e46cf7a9d07c10f580a9dd37545a59ad8b6e18425b4931b30b4da3c9a3c43c41821b9d2b5d682a26ac60de80b735250c6247d97bad82b40a258cbc9630ab6656e15957239e83583524ede521be59208c6967f35714edbebf42ffe102b041bae5161044dc2221e45f5d09a60347cfccec6b21ce0f805f28122f3671a03db79f8ae3492230b85aad8a18c9dc00a1ec822b140a3a0c3dd8d7b55b9ef1beee911509629482429924c70dbc4a0fe8493a1b9283f8f9fd5719e2bb222b6f5840ef1b6087dc72f6b42ed5fe5eab7ce634e4de97a4a80a77fa539aa9e55965e7fbba5edd6da874cd6c7c03809e717d7c8f39c3b0bb362798d599fc214eeef709ac1fe6b376d46afb74dad45998e11d35bd83ef0a6ba8019b65cc7bb073cc4f270d2b045208760beac210f35d76c97a393333ef9a84b7bd15693fbe99b363c3a1b846aff61c56eb9c20bf826a00284aa534cb7c8a43b91e304635aa62c9cabe1bba702631451a7efbb798ae62d1509a4b52bc034a13099c02a3901819c3b2f6883190c732b6fb0044760f190b46fd2ddc96be409b3a6f2d70b29c2fd125d18f5d65c6d164b6ec9a1f8fab316beaa7c1f4419d401ad7c94349a93bbec7a9f39c5da25128261125db06f037597bc1edaaeba409463df088b8fbff9862d3e4f1ec60590f96c3cc238aae6ee7a588b2c8e35744bc984c2f4bcc57150279be0cf8e3d7bf77474f8da5ffabe48fa4449646ee752dc4138283931005fa62d37009309030ae2219368563f7d8664307a10bd01b3907840674bd7a973ed4b5cd82527dc4dd8096284f29a834a89224e470a7a49c66b1e414dd380dceb90a0730bbb016d1afb781671a58eef5d5261433e2a189be8836084263069e9de86d5fb3c28b142c6720a4b4f67a2636b82417bc36e9f5dd1d836eed9993933631ecc36dcf2321d5008526e613731669a1f13ee20f088e04c2b81094a808a200ee0bc13197ed69ca1a85ea82e9b8dafb47ede60c5495e3103ca89935a430c4fdc9c0465a90afc02e48b88b352252e81b3992865bc855d332aeb6e88f0692213f6cbe63a442b402802761d06c455384426ec6ef92cbe53e507f9271731633d4971d62acd832c258ecff2f9d66bd6df88a9e2199fa5be37a91f4edba52532e1290b90f4f4b88bccfa1dde381df35e3515600a4a6f1a71a5376a85b86a429e7c2f2e245a1517453360b1ca66397c9ae508a9fd9d1206415b02894ec5010b5dab02ad74137688d2541f2ae283430c6089338cdc5f045fa1567d6068e70f76b3aba888f5112f050f746a151eae0e0e1387ecc84ea6437f094398ba0c772a8edd6639e7a6b8f55660b89cffdec08c8377b0831eedf2eab8ae3cf7d0ce084565844afc87306af3d509ef2d7bc21243fb48a0a16e2c6e9e1522bd3f8c8fa538df36205802ec4254a5e42a631052fc1a3842988a5a6e2d67f101618608e3c8081400b0b1f285e5d1c0d8f0a2847ad1ce2e2930c6d852dcba50e7c4b95da7351b92e2ee8141e918b5866748702060b4d4a3da72ffebc52f32cd8a5da47fab8c2215892a07236cbb23ac0a7d18107c808132c5243172d0e92058d796c60348a2a8a8117fb50490a413626f384d542488f9c8d2275431a9fce16ec67e5d9f642d4a936b6ab15fe72fb3040c1f8c0e38690b6ef1c114bfca0af1bf8ae0f860c2bfd7ed336482833c6fb80f86e893b22cfd3a883ea61cc18fa38a91265acb6f8d0a5f227064b4f98227c622915b1b45620214dc27d59e14ac0c7e15299416120d0b2820dc36b42c90c297401084ea6df9b9cb27433f1b8c5e1a16009dafc60288983377a50d9a915aa60389ec77974140ef6d731d5c1625cb4d5d705e6551d4242c1a480b1d082df66e92d955011be4e7b8cc72a4534f17ea503f67cc1e37875bce41d2a550d860a4149d4a34ad8b37d6aef146f3e44eac18a34e8e58d0064e69503eb08caf075e05af2d3b78a85dfae6651eb24696e617654e7fd628d5b5cfcd189fe7e0434d44cb2110c6b50f44da8a49d3c95f9349429fad1ac02416ad73a14c64aa3ef317908189f3cb5f8130419c92a227441bc73887bf0c6f0f79e4594292f3e084b8216aea2d1e9d84027c1258c9ef27b053e70d83d6486f18838af338678be3e8ca827a811e5dfefea46169a0fffb0f29031002173668f6a97b14a413e3f84eade3a5ab07d94d118904abb15f8fecce15f545090edce5e4199b5231c22e6a39d5e47974c444eca945a13626cea98865f560c62cf040c9a0471ee1cb3134bee3019eaa8233a072e4010f38121c637476d7a2640cf23b261477ae754fe215dd13b19849bc1e12e70a0ca7474004d739c2614b5cc5a5dc827c42b6ab9b20bacd0b2b337183068e3738362a296a25632d6c891d334b20b6f6abdd4a88cdcd71762beafbb44d4ee6b386333308e9a208ad4ba76e57a3ca93acc38e3e285b45b6c8db1183cb004a54a66d1c797236f39763daa437357df26851c3fbc4bc89ca174c73888ff56d34b572651e9eae543ddd791e6efbc3fd54d516cdb2c95682286e54aef52dd929dededec6784e44cd863c7970a246ff4957c7821e4ace3e3053315b09e76d1c73fbe2978ed658111ca94004a7e821762e8e4f9108f94a611b0bc67336ef83aef98595268bfed950b95fbc42b610a9b12e04c99e10c2b9745cd23cf6b6fd52d7b6ec08e07a795b5dfc388ba05632e2a02caccfa716194714ba983402adb3b208110698b018692a412469f1954f7e4a41aad8b4039cf36969a64095f90de880d2d1deb785a9cdc43c07105f2afb50e1c3fa0e77446b6db7c087804d30c5fa425fd89490005c3c054834a7ef641b74806626aea08acf5f534e538b4080cefe617623614ec23bc96557e3b96f557bd8e71f1f7b896f2e30ed7adce177993a922ff5075da6d7c83ed8c94efa5068a6575bae3ae36751821224d8a134c91534154a0db845abce6d50ca31e09202cdbc50f67a2df5e0025798c1882935c33a6e0b1b4646a1134d52d2eea5d2b58b47c45978b0e5923791c25d7ef994e8fc05ef3b4aadb3c1861528cee53fdd643301343550644470d57b379f933979c8e215e7855adc3d5253f87df59c882209770012382ecf203a3a11e8a00a9019bf9521ae90ad47b5a587befee35d969b70a36daa136ef4d858aed036caf4fcb835db1161ad5151337faf2d6f308a337b1ba57748695558dcb0a15f92a3aaaf91d2a1cb638e735c09c297e2fe8184069d86f869f45caa475c856aade2e680dff62d6bf9c21680d31ef3af134601150481bb3da6409e2310e5687e993a434391513b1ae26aa054996f7552ac944ea508587337b336f5ac49d70765f85240087caefee8d14fbff3a2479c337d6e09d5c8c08cae8653390283aa2ce5f3976fed9c82bc2c68fd79d2a7a4bf5da6a5c25589e8e213f7614f09042633dc9d0ea2680b10fa5896e0ce142e5647c0744f62ab8f003b84112a42604879d8241eb94a896ac255ff3a6201f9b9c2b8b333b3f456a17665c310dbe63b77ff655f62be42897c73867b4d563c562181bec0469eb38c132a8382a5490abd1823afe5d5d0297c1859859dd4253033bd07980bf78071ad5dc84a5227dadc28358cd6808b02b9c4ab49d8bd9e5785b9ccdec63f86aa794e36d9b7a88426f3e6b3605b274b4bb86fd9455df392604ceecdb585907b827cc3953df0f025b7ad94e1218a30597baa6b5f1c2ce75d60dff3d92698d3e40d4d0e658fc3285a7d7014ddc58d5d56284ea88d7267b7213395a084f1b2e1f2c198a98b0f2b8347e51afabf544d8ab9635f797bd78cc32976abefcfc2deb210343336d8149b17766a0cbe5fd08013f908b4e621b9711498e0957883ebba6312a217211353093e4a54fe2576a7ed5c88c32d2a6865cb93a41a70278e062a9467a9cacecd41451b21310efec5d684c8f6b45b08ef695b561f87e1deb6c4d0b272b93222e61a5bdf6c0aee68faccb08eef4713eacdedf89226b43fad9090e89b8410d5b692ca85c0cef29f32e4f5bc58ba260e71c4bc103983e8418cac8f8a072d4574c4e9f4e4e59453e5bfab5d42c268229b7147d2656ae3d3f0b722eceafa8ce05581a5f7d4527d3e714dba7c773a03914c2d170123a1bab489fd0a01afc3ba33f6bb36710615f3b6fa01b7cdae841bf5d07b3005148a6519fd716fd9f2006703988c0696f2f621b90b21932018b425d7b3d90208f0006f66178a4eb5fad806783e258a4f400d3a1e38e9e748795c36660308693080cf6b09fb280c10393caaa138361fafc6ae188343f78ca138acbcf3c4762163b9f39b3bd2864a56bc7cc1da2747e87d12129a01a5ca5f57d997304e01729f40337f362745895838c479c5f80395e6d30e5e7a300f0b37fc6cd75c8703189bb584e3806f3cac0742c7b46559b5622f07c71f01ade522980f3cc91dec1a50eae5b1ce1a22cbca4f939cdc2690fd09ed3d85c4b23cc93b1dc4aa1c53e7347cf838aaf5262000958eedac4b3ad3e9d5ce2a5e4a739898c0db8f41c826650251a21e3e0a05ce928e428cfc1e609e2e2b43e8f14c10525dd6bfdcbc529fbdb61919eac249e293692f55e054c60319c6fd23be5a64cde0c3e9b3c01dcd0c40e6a0de21a037aa7305e2b02b89cc6ae87c40364c47d9a1adff1ca1dbd4c07b0e3830f48e9c69824903647baf04816b09f28a274e14d4f7f862cad97a7ba54c6390e0cd3e8a94dc83580d5ce4a8caf5cd08bef776846009872809ca035fe56d03da1d2f1502f1e1be2909437c3bab1498117cd21d26c048d21ade440e5b5c8087a089135e72191775bcca95fe59fa40673f7c5165d1eaf43004dc29367af750902e9af4f6be0e1149b9444c3072aa090ea1d0d1dfd04c992043907e40b6e50e209b90cec0a6087cb31203c34206a1004a68f79657b3ac75ffb1278abae28d6ceda80885ec144135122c4d0f806612e5dc3df22efc37c4d736b816683c885582f041e3aba68ad81c26faabb46060b5562a60aec2ada53dc04cc1449e439b8438751ed73b620577c823cc7ab9759443fe32d28094fc8b0a79e3c4ca203cc56917ab04889b27c8be42f31606d50bc61a758595127fa647ac07d050ddb6349295fe6808d885550b486cd5201fa8558d9a480281218595e7ac0284c962432f57d5e8dc95fd024bdd52520d55fe019820a519f064f303463ca589ea26de03ac0833f62299bbe74b0e4406376c996ac427539d0175ac36f92d282d768da053e17981888a4c49c4602521e913334829e8baadfdb8276c198990aca4eff51691be0f51a660b1f5719155da8d4037eb966204a9dace4e6ba428e9882c623af098a694bc42e8f76d529b64436f363e725b194fb5fcb68dd13480630621c51907ca2299bf2b81d87058066a838eff0d3e0648c4ba29c129185bde6fadd2520c5e90c3e9c1f827500bb9575081128960b5ed3759cbab0301799f42253d157d1dcdc864d6da06e9df8e7abe1f08650ff81298a4eebe8ad48577beb0d083004e8ee2ec174e687cf4715aa935994cd46019ff98390973cdd34ae05965d02ea8baf29e0514b4e15dac39d8a9a858efc2677d3e711ce0486fd899dad0e0b86e31a832e46cb4a72c00b98de6e96937a27e5d3d8e3a588fad77e2971b5dca359e62f7429e481c028a2ff48ad21db98328216c77af0f8c7391550ba73833a6146d879b29a4852d12148ce9ea0ead639816c3810e542e74757f7450ec412d7128f968226f240bfc4ffa28b506f57f94cebba689fa1af8de1a9018a51824565ff84f45897338a189293c79ac081c375149ca314d777ab281d57b790569f6e792e9a2060b4ab39b65fd9b3e9f68a7ce16915d15e413cac33b25a2f737f50b42ff1081f9f0ea2d51081b84786b20878a23ec9624993b7c2cc5882fe04021470bb96d3687eec9f77a5d22e0bb3576d42201160a984b2699317ea6512245a81c1e07c6114a14dd295cf9075042ad6c304d152c27b33bb32e295b0e60e1e252cb43cc2f1d3cbf08f0d1b87eaa0694c50e5f83c1f965dab56ae2c46a47629331a2aba0b412de364ef20bb8bed1d177ae2c4099fb3a5996f21242a134fb7199afb22cf1254df6d10a6c094a5003a16f3a4408f6a121ccd45cfdfc40ebf13474ff3cfad09c25a029317f928331c3ae222d377b42fb771eb67645438bc3ba96f11a667a0533f75255ce71ecb420289f5970531873c90642a265e7041317b632db49ae57ce1bc07522250858d6bcc3188ef0624999a14674ac2642fa8465dc121f5126e2b15c1cf1cfe50854ef2b8d1a59dfbbc6668cde59733f4f04f92b510355e34ca5eb6d0d41cfa9fc3939381d48445b4a9215734df4c1e94292ff83f3523832d943552e0bcc90bd5aa710b40e2bf6864749b79d744cb51749085d4992a92a8644e649e5b7f6caecaf9647dae2a04538dbfef1b2bc517ce8dc458093d681f8247064954e3500814a8cbbe9b3b36f59a354dd05f15b4248f18d0541b24fd5fb8a7a3054cd0b779bf2385c6ab642428aa01344a30ba0c1481da7373d39cfefe4c6d0e85ea801a04befd5dae8acd37d4365973edd79c54d71f1d72578e25c89d9226216f1f8205b716cbcb50ed0ad86cfef9d90b60b048a16aff74446210b62993f78b9438428d26c5f0dd44e958d7519e623c43755a11d8ed6d0c13e4a3346ad52b5e98855c6e683b02d89f10b9a7d486eae9450f40844e8cb17a9b811602061e0240425e86967400c9d5bb802ac706b2d070b8facf319acbc0736bb982ce6d138add0a023ef6beb8b750db3643512cf24f02eb64147e8251d42433a5cc77afb2c32deb10f27417dba80f18ee35a2db22cde05ae8e1681d16c16c8a44235582e03a808e58f4a8fb59d959b600e9cb2f5d3b02141a51bc90f92d8bfd1d5e48fabf55d419e77492a0946258c5365fb526e791bf965f1b79f3d65a9cbfda1ba57cdd32871ad4fcc3933a3f0735ee06121545f156cb59eb8f1d6682165b7139b383e8a35c34ba556016fab8089707e244cbe8a580a73b090571dbac20603d4f48860eb132f5215c98ce6c0ed5a51a134f934914a7b005c99fbc2599d90413e9942e621d20fd74c2d880eb29731233cc02fb493a20dbfb3bc1196fd2f53c60e289dd1a608851a3550a17187a8b29211020ccf68cf1bce1c74eda31a4c6700015c8df5c3c4c00e1dd1f84021e8809fcb1d7dbe23a922e9c0d0193022bdddd05136449a3a25b823f12db608f4f87db80b03888e55c1b7988dccd64a2811d1da3d803b6f96011b87a2f632600b00205f385ee1a909b43cb12cc361457d52ee09f74822ddb290cca80b7ac24c7d11b823b2d5203867a638252380b571861e42a328721f712e4046548b0c78960b5e9557b7bd4d7ad44de48ecca80945adbf93beda8372d562033ead21b8ba05ae0d99016c08dafafc2ddf255d9d86b203f8466ead384c47d9ef5a3d8061461128ca178ca40617a6b4d295a301635ae48181991e5a7cf60e21a5c12d868642d7f640c3e391c2724cfb9db5f3255efb5197ae065f9666abe4426e0263eb50f99acead883a71ee7fe6451ac65eb34d37a1d52dabb04a485b848b7ccb1e152f348fc8e5944b4ce4df975d07000e948218b4ad56ad5aef8c70552a20d9d7d6022d1ac2df8d06762a403a0f7ad061ed0c2699578b2b88916981d2c505ba3a714ff9f505b21a3d92bd3e64b41222b685164d0ef13f4121b9c9c74a286c8ae1de97d0a5a4bdeac1b1840057353962a2832c9b180bc8c8cc2ea10a55e689b6015c5cebae6f198f3953dbdeba1201fd82cf7a9c2cae3af369342c961962bc646e8b46df80747046ebd1c82fedcfdd811478fc45ca5d9a855c8e2a2dee83165e232d5085d2ebd71391836303fe380ed0f471e026a9711b6e832f16e3f166a38c63315b1e4a2e3b13b9031760623faf8132660c5726ece4fd70097243b71f4bffa824e651b6fd929d92ea79efee2fb4ff73fef11f462cdae148b063e634e7852b7a6d5540c70042a5a65c05e4a29b914260971e539c6458dd01232e04647d21b1c1a53f54fc54d58c7b17a5c86d1d536d2f0739935f8c153467390d303602d6a09e8228ff7d8fcae109b459ffceae16ebd0c588fafe25e44041b2483e163e466ca12e2b0d4a6fd1c0c6094b2a28718c66babcafd1b6539e0f2e2b63263334b6b4b23948e314fb1056199c1b7a4f65f45a8d0b7f56ff6c5c3cdea05b2fc62d640b9d2d6b3e414e8b2da9e2ab7ab1f47d84610ae50e966b6e530a9a7880d3248b98b0986abf915146db6f229b5f2081c7d1fac0cb8ca3aebdebcc48213f2bf62b01c073046bdf0b9067eba24e99155ceca478bd2f74555a38f1b6e076aeb51e8588f4813d14ab8d9ab5b18d1363d65580ba1adaf78f0f4ed86f4c469b7c310ae720f4972a7aeb9d25c5a024b443b7592cfcdbe8132ab471ad088bcd9141d778392506b9dcf398cb95477ed66cb9200b811164137d88395aae567bb079505e25fa9c07c6f487461678c324471aa261ebbc8e00b7890d14a32950bcf85aa7aa9aed3d908c0c1654f1d85a07fde264410afb4e3a89ac7520de2007a49413b50ea4ac71e8119fe67608f4c1ff52d0236e50dfc67eb9b87f11848327e1ba73a2acd36020e0f5c7a30c5a905c3e4005fbbb1f9caf624094c0763d77f2c0eb50345ea6a653c38dcdb06dc08b9711d0562fc6e987d0702f4123e01cdf721103723199f4ba766b2ec7ac05d8043b9256c6b3e4842950c6801c229ee9752a7869329cc81c325a98540527236d89e01343a5ac890a423f9e154abbab202e15bf342a0db6c6ed50600c5f764164b3e013683b133ebb0e6b3a6a7c44c2c0ae3b3b503b3afc7a085904432878b6314943f4f0ab97890feb3de114d0ad455bd2b82a73e8bb092e21e09a6e85298a58a441801e3e13e775225835a30b9f98dc354730ccf225688f531558d45b0114cce14274f1c4bfd7cde93bbd797e85912e37d38a0076e4bfd334f98ca3da117ef242f1bb20108aa874c884e2ca3b0f50044c2b8564d786db25b44e1cb1b34d6c6d8c925d73dda2ff016db29b2b90855b389bdb1fb00feba16637a1175bfeea7db91fc5e0173792d6d98ed74582d7dce340e09a85020d70c221e5d6b1d989a949a9c6b6751fdd1a01bbb89b02efe21433bb966bcfc05d1fac8adcc5f2b203128ca51cf57a6d402cbf24531844d0994495925f68e3f9a936480a950b4379c08f9927c5c9850a272dd6a50370d5042997d1c6f898a6fd1b6d13803a704f74b2219b90b668127d716ae2df48e2d3c75eacc860cea7641474dc5dc97c9cd61fc84c7a89d63f0cf5093e3de22b4ea5e7c742a11c50be56fa4eec86f6196b94266f143478428184f9104346613f3eeaa8cff26335302a7411d005e10b59f9666400c6351448adb5196d43c8ab63d3076c96ac5ada240682999d4fc4873b55716aba144b2732d6485faa548dc1d152ef137001931a1b1c8436e523e3d2f4f6948760844b5a647c8392ec9ee40fc4aac42fbe443c0034fa202d90ef8ce0261e32d3e9c5ef93b35efc2a1875b54898578f9369de3e04b85a426837429799a8e6049f68d204cab108c2156f95368c3df14343b82035b22f3b70f64d0366d740d65e577a5d59aa4c0a103a80e520996aee50c29d2b6ad66d35504eca719e90eec26a2411e9514524bcc745aa24e207a4fe4b964b6f38ce178d6bb3c84939eb7552fdf9ebdc63891c0253c548b44a27928d394f572cb80c3004f75e1da021a850c8a31f99d6b08f95617c61e62899a4f9751c577a44e486fdf52881fa06f104b300bb7d464d67c01114dff8562ad85347e6990188750c35cce27b01206e11486378ea5904b5d504d99728ff1e14453eb54679ea047fd97f8138254ca45c9a973a0f16ba6429531a6a48755031ecdd4efa60c42dded2700d0662658fc74cb9fc025b76b91454ab2dc1d5db03e0f15d409c40ae36150eae4e010619260597c94a9c94a9af6bc18c40c3baed00e66b2fe4350a2c41ff5bce770d8828021e932c8ed0387636e1194552e5334a058feb35311f464620efb2a63f591130aed86b5cce73443f30fd1435b6853e229cdbe539d131f1130e722eefacc8815cc277183bd628c807a54c872b8af844cc263b1cc400c491ee0f50352ba32545b5135dc2a39d5b03c094f22b4025fc0c62e8f45c547c87318525666810a1bd15cd888115710b7c56b1e94bfa781ee6b70742713892cc552e90202774a44971aa255f68107420f700d3eb8836593ec20cb401f67c67f212fca595458b8cd59a0fcc1c30717537378fd95746a7baba4a54c47a325fe8b53e7dba99a60cee543f42284e1a5450b0f91b9a8640bcabddb318d3019b3c551a4092c3990733f2f2acfa8a2c6c87fbd5f22c5f99ce2cf426d945f3c12241d0d65f1b23e6b69fe88e56a74cff3331d7c10909e6e74ac5595506d400c7398752434106751bd36000d258d332ace8b1c3d507625c421607f89e93927aae7df1f203e98ce8c931ab2612d5f38679ca48e26d66ee2daeb91cf4d5bfaa57de0ccbf4e1d3407a166ffaf7c5981bf09d49f735c93ef5f79271c0a85c9a0808700274aa2dd771043b40f8be6c79f93eb4b77f92fd71a1b05091aa0d8c2f2c2fc7e9396235a09be5b89232a10fbaa2a84f61fd014f4702b2efbece30041b14abe6bc9057d18b47bc2a45cd9835769200873816c52fc5207236f171a5fa6814661ef1c3623d727a69f4d9eea6095e59cd86bd7e9a93b191d5a1d715117616ca9107b9bedf893d1f533267fba03d51fad8717b92beb77280ae21fc208605129cf2aafcb8c088e918d402720806b4039d86c0ee2f076bcbd9270a27cc72893f0570899d8945f0fcc11c268bc3b28ade007da4208f2f7cc62e71800e7c2a2a29141231d2458939258c6d009b49fb0776c3c57c9fbad8f32ade372ce9fbe9facd43134a51617c3d050e3d9ddf873309a79923f35148f813ed29803390b99bc1ea9fd2b41dc08404e0da1b11d20b7d334c74c85222ccae07db7d1fd46715fbabacd711130bd47f8f167272639f9c4ab9ec332090cf1b6e39da8daccf919d267290b0f2e1cc16fe582c641d9597855adf084ac0684df9801d4e77bb30ffd44bfacc84fb84313852b24a277c03ecec31eb9641780213ee25304924ec7a0665efbc0b6a382721326ebe0bd23cddba5744b747ede995a6fc288f3eb61d57882e1baa40b871950ab8120d029474148f3e020e96f6045d7547b1b26adb6394f7ca95f803ac3ef2f670d412a0b0999e1ee7a25445ba6739a83fe281511c3a06c26365590a4927ca1f4643256f9f5b4dbd7c1b2bc60d0fd318d8d275e671df01863fc182bad4e479a6c511a494ac0234728b20e4fa90a4884eb5287ecaf54ed11daad8ffaf093dd4db28f6663bd7733324dc46c98f8aa6362ec5a768c34eedfa04e4f9631d2170116f06b6e365296baa90c1598b3fa24de64aec892035c97c76362681dde4ed515f4096474c7d30d64b8555132aac85e0d25186fa46c75c1be78a52a6a29817e6714d3dfd0222a7443f4cde01d9ce283998fc23b69e09d17f2f60535237bf66397c924646a4407277d82aeaf7cf8a0065b1f88716eafaa4989efe7ef463f1eb608b0c7f6d135327328535a09a49731efa024e1c50adcb4098aa0f650a2e45d91d5906670c2bb3f228e2e7560ba379537ccef874af77601fdbf91c65b0b3750e8d5a065c7ed1ec99b5b3c542e85006ce541f577743d7fb4d0c4149a5f1910b74947de024d37ba9c048b4d3a817ea5440fb48a74a078f68aae7b7872bcd6c60ba8a82ce9abc3bac8b110a471a0ec1e751ca15585c82ab217986bed23f286aa71b8343e684d2046a1b3cf4ed7a3d58887f5fd52cfa021f77c557bb1b93c1acf32b46936fff3c018aec1c288949ae4b8295099d8647ba93e6e4b1578a6420d726b44e99b26d501850eb0039a2035b5d1aef65619daf5f5203091e4ada4946c19a470e131835503202e551fcba7e3da335d2814c88ce49a466ae5342005c8e68873a18be357a5b524261108da06f588d303f03f8e0cf0e7326136efcbfc104d44fe3881af3b3e068b7ab207ecb3ca66afcbb5bf502790b8c15c3851d75b4dfa318dd49b6261da8b2a71d5609aef8163d078b53754ab3ccc0568aecb5313afd582a513d6cfd1b709fca29002a17423938339b486cb0b6116becf0451acb188f2b169f473c64881af144facd64ec59e5dd66c51f69f56cdf8a0c7ab3f6ba0561e908357f36fdb5acfa8145576da7078ff1d47092edefa00a471fca1727af9a248e7f738b843fa8b95dd3343ccc8b6cfd8aee5cc87de2834dfe93eba6628b26594b64ee1e1d4f6d184a0df2bbdb91daa3c410fa009abc54da88eadc4acbe1855dc515ef083dfb8695c11e5207fd4313c1a87af9ff105d41eae66c1ca9e2f5b0ef6cdf64a57ee8fc8c9c4b971d87e262e5a43a7ae16bc7e16c6eaa1f977f1886846de76a50061fa67d1009612c7d55e7cb751ac294cbac6a2657f34cbfc3957c8b3cc9201812e35bda05b8e10f55274119a34800a454203f89f8507bbfa1e57cae43f458ed4d2c717da52122f99d055ed2fa6f3266d42e1e7f52323c12fa012df81887a1e9a762b4074f8f28484e623a5a10c62927a18fae5d855f50b3d817c2d91a856ba52b29658f69b5eba8321cdda075da427ca9b278cd75456cab1b3bb2f8abec7c3d507eae87134a8c7b8743b6f95f0e5124c469eaaf0b558624eec82509d0a07354e538ac3f24ef0f71e06cb4058fde66390940a8da159a51996110fab11cabe220c116a16a3ab5639fb12dfd5adcc8561abd7c2bdeb59d1e88fd925bcdd83ffa9144ee336dea5349b6544ca9c55b77e170941cc76b5064bd100e4be7f188f9746d1a1b613c267896a141e99e1f323e50bf1e81e0ae93a10520f5e369cf5f4675636616f908fecd5621733d582b1988a502c5ef698fa7e4792623048acd9889d1142430fd762d78fa6f0758a801d7cae2a3821779ceb5fd70e3b3bb90219f1e7b6fcc40a6e9ad921451facd5667af163f6855055d3ea9bc66f1b65adfad0297944d39ad930756bff666f29bd0117121811bb3fc443d6c77c77e846f3aa04004754c8b4e0652223a701c81bd2e3ba9b15b131129121499777ba68fc38fec17da3a41d7ffcde712e95c6994c1f79919e074d266f88267e23b80cf28bbab56b3b7884851ef7b7aaaba91437b847b4927755dff125406fbf358863bc9874f3008569839e9ca3e98a687c2ee52d911b8cd64056243efc1810179128c61f3a9c12d28d2c99bc1e0a5e696bd883f2343e4dd486674141594327f02c60387e2c15a953b0210942627d0d99fd06fab1eb379cd47d7734f1757b718cb3a98830c5010bb981a4ba1e123f33df7831a56888d1ea428b786dbb649489f3a3d4d38810cd5c44d8a3132ad06dcbd61240d5d8dc4bd0171c65d48830584e186704efcd25a17fcd2780080e90b0aa87bcc52158c418628083875882c3dd778354d6fbb75beaf5bce0154a5355c8d358c9401c18df81ec30c5fbb67e763c5ff222a8194d67a45ee79bea3eb9627a60ab1c42cab2401b8a151a3704e54ad1c8a0b2c3e68235a4e66113131e8b8250c798a69f83fd113c201833e6aaed1b37fc716b52a94de8446c775fa5f03c70bab405792c7924a41dec2de4517b836364b8ce863ec7624e929a84160edd8b815d34bf4a99ed7f041e2f5eef4aef180a4635175f26ed5ba9c6015114515d81a968a407070b216d22cfa97a8d8f7909f53268181322e41f9df03062e69a65cd07d8ee59f09c5df0f79b80412b4947893943c3c6119308f3209a5b476511eb6428f271c3c6053790295d66e4120c47e7f6f1e5181f4b4f4f48c2f92f015bf65239b8b2d0283be45d4a4266b2c69da4ea367d78f3d34675ba3887efa48514d31d5fe68104b5ff94626c24acb5a7ce3563f032e8e3bab2522c0a7f6155b8f36cbd368020129e3733abe9683c997271da196b86bf530d9a27015f858f3a7759263c8d0fdb860dc806ddb9ede89174a33a29bfbf6d3cad73f56a9ad91cc7e1d32437da4d73f09b75675dba9a29750928326f583049e95febfa518e2c8183b72954b1adcc2222b22bbdf504e2f5996de550cc81d5d03a6dd764d823ce374f893e3c82c92d391bf2ffdc82b72748c177e436678b272efad98be5d052cc173079fd2b696838371963aa30d2c0e23f2488ef9a9db4b4479ec883ea6cf28cec5e225d7eb69b7008566a0203ba943f86b04076a96bf830cee9c69759259a6e80f7a9271026a838c1e63c55e31050ec45eb2dc57243569175424da976c6b7ed013d462961b804d700f6cbb4bd39a7fab7672b29ef1c9f03feb9a64681db1762f1ca1ed51eb9594beaf9eeb57dec372093acdb28921cbd82df9de36df262bc8eccb40083b9b8d2195245d92da4aa4e6ff47d0e4947aec4c5f00cfb78ceb69af6984a4ebafbe843901583f69913a2a1c1fe33024044e88711b4dc4f8cf9a38b712ac3c9d399429fe75b150a45817b6ead6d2a0c212d496532e37e0dad40124c0251fecff9377c0d80028d66ca12262ae3489c45c087651ffccb14023781d2ff0a5109d62c53a29ac930b39bc2c0a47c3578b77636f213ce363363d086d7a73cc4891cb1b86716286256be11de5096517e329425d481045d3f885b9ca78671f29efcf4400fed8b7bed454e3faad85a88729f4e374e363cb2a5b99c9909dec026a08f434868395a439ff26c69a09b0722256479535abdea53060ddc4593da1ee4cc40a13b44627a64094e865bc64e6fd6d0e49c1641052c078f290e52db1092e3ec7325aa2b4a50de635cb91468e509ab348081c28dd4a8987d8a182d7833eb886cf6c34348d87f6ec8228d1587081f8d0296a1399ed7a2f80498e64b73032ee46c9a9da214e2891ce8d223fd32567e454950011318c4308d820885d8a376fb93035beec60fa16315cf3cb882871c9b8e32e3967352d89f210ee4b5d358ad94514296185bfab26a36308b2ddc60570f70fba9a4742a099f0a8f743a613a5771479b553312187df3bb88f73533e2110449ef0459a9f57e1f6a0bb4976b046d95895d1d66007b899df73b833da5c7b5d095daf61590ade234a6d5e6e5f5d3a9d83ca419bed35d151cac33ab62f8a343e0a7672d08e1b0aa8313e01d5304abfb7538ffa4dcd272cb240e8940520721d1fe71844930e2cfb124d014a13dd88cae874270a6d461db525356c75e1d30e971d9a36e9ca78ed6729b0f6e42e7803baf0cd2a2c62275fcf27d4c81393cad07042d1356ecd8c43515a38b5aecc1ee062412c7de56f056cba7189bac31a79e0f0e0d0df8354313c175bbbbb52f1a6b15fb48c295593043b6345a68a66f808137e8455b388f7a0d426b8e13ee8bcc69c2d9d22ed872d7a1ee84ba4bb8b2718dcbc145799010e67ff2410a35de3091102a65e827a11b0b1b75c3bee187c4e3a1395d810e4e4df588fdc94941a25866e635b33c6eb66fa5610261043bc1afcb8f3d91e40c1f1c29cf211c66a5426f7d34c9dbeed38f0f8ab92724b22cfc58648478626e4e41caa196722cde035eae84bee3f92c6ce57d6a9781a2b9caa523d9bb62a0f456959af408c3bfe8829de0bc4f2bc1168c59e409d382b797481d8f1a1d3c9edd765decd0f08300bfc9f73002f11678fd8b6d503aec82f29a340ccf304622af335e86299d68711a597241023a18c404cc29c4a2e243a1162df725c47b199f92f5d641a2136fd9f71a9a83f42cc0c21f082d8eb5c28bf00d8e45516103b3d0f96faf3fde0083114bd24fb63eec18458845835aa8243e70d71f8398458fd3c5da4168d7ae41ead93ffc7a156f6d69bcb1cd6af2511260186d11f2262d25aebf5107d3036d0a478de5bace62e287b213efd8641010d152bb127e5d61cc56c2c6f955f1b78c895b592738c85d6bc4d2738be608f962aef05f258a55ce1cf2ad5e0cbe0e1b69c0f28c6382b0f5e0af080064cba51c8307496bfd21338dad7e94a5449027a2e3fed23486aa31d65ec141638d7f246abdb47355554f291a8a216613280cd6ec3d7bc39c7eadfe35a9e6ff29745f87a2c9a9b2dc217b28d6e5d2819686274663594a8e59b8041a72048a76a8ab1bdeeefb9d8fd4feadb8df166d92d09f7664ec3fde697b8c52d81d495b90e2b7c236c9e2d4875a1a1e27cbfdb4d26bc0010864cb28512a108f679f60ad40c1078831bbb53e643f9a423a801f42dad16fbcdc2c2109401d64747cf090b2099b79e10230d028240217a18007fb9c0282881dff583987d65939cad29ddd2ebbe30edb3f2ebe772f21c7a3c06aba0edb3b9c3764c362af00732fee76c6999415dac23e0b3b80247b5909a8da6600fa5d7cbfad5f689c7c0406ce42b647fc7af78b3c6ede0138c12e85570508645e33785f84b353ba6687a8c82de02c7a5a07377c6f6891bca45a079e898566342b2b6c0d5070ae5540103ae9d9982fa1a55839a8c3295be283bb29caddeb8a25aba4002ecde37b383e934537d1244c2d644fd8d650e6d4b9147ec5acaa08f27a4af961b5ef9fe36e3793249a959f39ee8ce6a3e6bbda0785fa5817bd4643b0af55a68721b9de2a39c66f877cf5864939c067bd8a7774e13bcc2893368367d07a3604f7bbd04c5ba4762e590ccc6bde0347b5b41ef9c18a23ae6e74c0486bb27bee013524c0dd4e6b144dd72110ac0a1771b934bcb0f69d1f7ae906071cc84f2f4424d82cc6fa123f7a1d3650c709154461e0ccf04a5198162114ecf14714d8a26ce35a0c40569c88aae1054e20cb8d47fd13698f504429aa0cb8ac6142eb6daac36b2387bbc9892d045338820a20632a4951abc7cf0c6ada32a6507051514b83924fb9638bba9dcdace9b37245b35f87ae34beaa10578f4a86c52e71bc47e179e8b7880342327d0b987a687678cfae5ec532a0dc90b2ed103b4103f25a9dcf03c12f7f46d282ee7cc41fdbcd117d043e38e99a1a39a4fa4202cf9885d10aa15703b4421f344b0193b15b4dc8b800151a94518c922860531a484b6fe6ced81c610996a05c3e1fecddc72e4f7345e1642d542f0037245915e22c1124bd450f7645758d0f5740edd4697360400b8f99adcaa01e50b170783804451e9dae0de28a2fd1b2b6aa89e71c38f12bdcf809b9f391616e6c154de021cbe0d0168d0bfb41ff787363c6a855faf5a01e719053c70f4f20f9f7582974a0159e9593d596ed4f6e0d5a577e58ec5c5c4040baad451d095495059083932c2004cb9de8f8e5a4017a337f2b6d8955af902160061d1add4fb705f18541dc1a43551526909d351b0f546fd4c6f54e3341594bf2a80d2086b3005edf154f8da827af1a8c2ba3dcc3a50d307f5c404f0f58723c3373abdb15cde12fb32b7a5447f7b231b3ef69819a71f704dde24052111a75eda564b7cf886a9a9faa47f209b401fdfcfb16475dd2e215d0f9b1bd586be8744122335745cb11f2503663378fa3575010ae41f75fc63783c63d92cccf5a7fe1a2424aa4497a0c3ecee041e94d4d96bc4be23e1f3e63a5e078c38386a896e769306d9be1f424343f1bb5b9bb3fdb9fc96cc493fc1e6194926057db469a4a04c024c6ac59774cf7aab119898835a91514f7c56f812b1e175694ec7d1487c89a119a57717ab594271010a3357f32d50c7a73fe35959b179e6e3a55fbb7fff14b0124623afa5468e43f9daba375ed1f3465d74c6cff4ce733ab12fa8f554195c9ee7cff05998b5db7c8b9b9e1bb93649da539e80fa56edbab5476c03e7b974f8d6d4e408a4ed3b12c9189f6c1402d88269971e07b0879fe3ae2fd07c4ef263892b839a22b0e65401829d68d571299c79a52d4b24050ca37eb4510796a267c3e723d17294063a7f0dfad2305bc7b21776ac95c6a7a8510a5d5fe88784ff85049960a35e7e03eb0556153d80a0674c90c8e2434f34096d895ac4e989c27d00133a6c718b3605f6567ca3c13bf6c3214a558906c56736b051c0b2a5747c06d9b59ee425c7a8d685a7127099a1c541cbae083ba7bc611cd3642e19d56057c84215bd39fec726a92889436d858bbd60b6f7f8cd8c4dfc6e7ec0d1e463ba830786e2f29b85a12e5bb6236fa5790c1bc8764c6d0bdc14c42a8650570dea31762965bcc3f7a3a0be6d9b4f1208f62d5fceb9075262df211b59822bfb9e45adc4c381f4eb00ab6bed2bcba3eebd236369adef79ab3a2b3e697f6adcec6ad0ceef8ea6b7f2ac14fc7c9a809e2804a183c9cb24a098e1ed28a355bb7737bd9cf759e60fbe73ea2c5e74e9c35e5367d1c7d475d54519690c6859992cc5e01dc3b6e65e3023b1bd4a3aa4980afda9ad455d1f89a8d3d58527a8f15c2566372277e5e88073549d3a39f2cd98230c45d827463fd6ec6b7de66df63a49779967d0298b880935914868b25f1ff611dab8964076929aed3a700c24015c018ba2dc5deafd6eba2ede5c6fd4f061aa5f267dd30422b0dfdc3a267f0f2290bf4204311d2b13b324fd51e65a9da7a3b0093302d991132a52ce902a5fa33fdd1940cc4dabc93340ac67a079cf400d9f81377d06cebb539dcc0fe2517369d4aa0539e74cd38bb70e36cccc345178290cb0b09682296142891bbbb059c3b496cb575e88212d0d9a125092538e8039259181ac4add2bdef749beb625ddf3095a80c4826e141d2452ded4dc339afe50aebd018dde51660e24b7524da346abc3b5cb0e43f9359b9e5da54f647af58296cfb49cc8d75371a17da10a332da000911a99d3a2109911b904b6c3a5bd38719655a3c1c75f6a0468381657f415aac0ff974ea534f50aa9dbec34c1166a29be74aaece8844ac9bbcdf44a0a295481528b9a8914a2b360ad57191fddf45aad85ab1b7365876050c58e1f44d3118a18bb2daca74711b640f1a4a053360a7b16aa4e6f30121f8fc2983e35492e49c78e0b228cc4e206318c39ce7014c3b32d4bd7f4febfc8aed209551939f2862282144252dd68fff7048e2a763ca17e4819ec2e69998a5e6de87971cbec3208d4b1049e2c84270d5110785526e9b01ee6971e96e4a6660a2dd5e4ca00dfd68cdbc75ed0cbe4992f54e1e043489557bf79d9e7c9421386e1aa394b408fa20b60bc8951c35e0df7e25900a10043ad11d21a21bb114208d95bee1d6c0db30cdd0cd7992e30ded998615c97ffd389eb19ca85ba286e6f0708f2705d9ef481d7344dd334da5d151d6657f2c15215fd8a3187c3d974c2793ec1d97cc2599e5070061af93cf016a9d1054d9b1af7a85f190b3cb7bd6eddf4fdbf456a9c7bc53c1ee0b9ff28db83d2cefa2deade0c1e48b2b8a32cc711a946fdda3aa18ec92236ea57253295501a133e20148347d5bb708f7873dd85bb3a24e62e67d374b2d1e1038fbadbb66ddb369f2801a108db0f7ef7a3c3e074d26136a3f836d06e3feadb6c3a1841b013caa89bbd83dcb52ea8c36a64eb5187ddf38f0e83ff2b68bba12e08e95ea0c3a81ef0a822350eda4ea86d6ad4b05d50bf9e75426d137f67d3123ef0a0e63d6b284df3344fd334efa8570f75d4b1a33ebf422a42835aed6f7387ba6693005def413de2e8f1a0721022187c9d93fbf47838d0e6c8048377d9ec321224490e1f4c60f015c020f8e4ca510bdcbdceeeb6bbcbc625288931d061f0d3e301ef8f0e6f2e1b31cbc6d7ecb3a97e3a699b1acf3e9bc08b72dd0cfe3f14d7b03ea488ae9b9dc02e10044197fda1f83a5d4f29d6febbaeb2bf678128065fc30ad578c53c1e17c57346ed35ec11a00c54598a29f57678f789518ad478f434548deb023eee4c271d935dbb75010fded954c5c77abdd5a843a17ad42fd633f0ac67140a3ceab97a4980ef41dd759d66d92ea843140b859a4aa8a984ba99f5bfb26c3dbaad462e5b895423a37efdd92b917eb99ebd1eb15c77b96e37d461f6a6a07ecd2c77d5a8b2628c2b963dfa5c58ff1eb10bebea68cc7aca238e2f3e9b54cf3c8ae4b33409940e3fe7508cc9ee3aeb11ec6c13e9b08fda48ec30b434aaca9b210326c5d436dd346384da66eef0dc42863415d2897c922514256d339be6d1945ac825f20aa944562191646924e55952218748214e703e5ee5632811689baa94a36daa114cdb74413326bbf72c6a11975c81a346e605e74ee9e41abee3ac77b8791bf235152d3c87a68d6c22e563c0b8b9957d36c91b716952d284334a8433f9d6cdb408afdc7924af72f422e5e616569a3611885569dae4c82438bf9b37d5cd9f7caa2ae1ec9e8d46d306a6bba06943a50c964755239cbdb46617d42575109809859212dd1d364d94412f91653771091f4a441f4a2ca1d3612bd1fdd1264ca339447e227933f8e4e7cd5b37940e8bb049f454348b2651379d33a8c39e44b87bf624ca930adc9f53680a4da313d489ca6aa67131c618354a1bc3a2edd850e4b93994114d2ab0fc368da41793f0f5b9672e28e3869cb4d602cb634bdaa683b4186a42e4a4e80906e54808cbcb0e91644bb8e5a7bcdd4f48f8e2731fe18bcf1b6645ed4798fcf1f8c81e9fef186be09f7989bb0786e7a3943e9077ce9629d286fc36bfce6e17b16bdadd6ea41fee0fcfd8d2823339c150c5a0cdd510b00b2118c1133468410b30d86928b8e9e00321732812022ba4c10b465f10c24ecf01371d500045087885a3121423a2cc0678aa4a70e449159d7550f7f58474110730649d1165599605792cc801174c28aa820fb4c0620b7260811214a34ec99329f0e4704c6a4203ee8a2982c44005590802113a34210217e220793085dd81a6ada86002a51608e106444881169e62f00322ad881560d8811674c06206285843c3810e5328e982044d255134032b890c71c0f332fd52c131a9890a524a3a1f8e5188021166c131890c55c0dad0759d342289747214a1d3f444057e08a9d1c931b5bee9771eea3fec0d4d153e89b71d355ba38e793c3f6c4d05e20c1380480c582c3529add5ac50234c9657bda29e7f30ac3aea7e51f6ab5e9dd9a857ab7a8cabd91e4fea113fd3aed5f2a60c8a31f39ee7356d62daa84c6de35a4c525ea8dcec2facea29567596557deb97eaf22a256e49677ad4fbf4be8a49e08d49dff6e8a5ae0e94676b6733c573db5af398d1d75a162ace276394977544c5f9b028b0c74dce4db31167b28a5a23f6bef987d6b61d01dc288aa2dd1ca7d38ddb66193cf187a31780d829227cd8adb2c3ba24e6e78df7eb3072b2a3501aa98ab60d7d14c247ff478a9d4a3a704c70b4b99931f10588378e884c5e29a00c4dbf5c7af4e9e975d1620be67bd9525a577c36dd0e8fdf948839111b91414fadafa1340d1a04254b21bdc3735f2e687bda9e76622cda410a9137b421b931653983ae52ac6beb33c4a6a40d6d4cdb9266022c4fa5eca89166027a0cc326a5b562b67b955d126d48dec09ebe244a389fabc33162cc39e7053adcd83b6e7b9a363e9678a85d694ddff45a3a6ef5c942a3c743e73326a9f6ba9b9ee595b2509af23a6ed5e461c7f9bc7e7ba9631ef621efbea68aa01e3bc6eb5af53a5d04b5e2baa6a626da319d3b899bb67a174b75b1481cc3fe3841e39ab783c669c8b030342e5f69d89c634ee3e18ca76eb6387597cd1d76b94edb0675d7ebb435fe04cb6379b9238fa68d5007191101964850485248bf62920f9c74270505050dd9c1f9e6877978fef0e73b8f074f1b28158ff5adacbc6869b9be1d7aa8b19ae968389b98e33304064ac98939407c5418480500310788cfc440adb6f13ec566ded7620ed06a8b3940282ee600d59803d47531078862d6fb29d5cafbe04af57eca0b9517efb7585aefbb7cefbf7c405f8c9803b4d9dbc3fb30325adea71173805661cc0142c5c49c3e0f32ddfb3dd8f0c103da6a620ed02a889803847ac51ca0c6f5fd9b9803d4e1c41ca01b3107288523e6006598027d43c41ca00dcf7e167366de67c51cd5bbe57d20628ef7be4ecc99ef7bf3c526601b969bb15c11c7b21c1127841b7a6139212ec86e507ab0dc159c12d7592e89ab824b6239241c12674416f95242f862132cf396fbaceed3d5fb60f7e9fb4cdac2b2eadeb30db574dc7b36a115d7b305755e7d8f0685ab3dda9387f57bb427f5403a0a14dca3396107d21908500b6efd27c3df7768405bc27d5b377f174805b3dcdcb309f1912d371741ad6ede90743717c939508b11efe6222f076ac1f5e60da80563371771a1cf3f199eefd17c62dcace179815470dfadc88d1bf7c54aebf2e8db9e240fbe18cf5a53cc912dab8ee398e28c7ce58efad5c322862a8c18a103121212244992545145529212254afdeae194a25cd1af1eee8a2851a060796ea95f8da38e8959f79198e5724745be1833068e10bf19e2363a7f3db64d10af2a56870660040505e19dfbb0dca7e63e40dce787fbf8701f9afbd8b88f06b4253c730dc424dcc3a3c70364e7661f09d48259ee0384a5e679167135403ccf219b10103f3c4fa2ee071f9ea710283ed03ccfa1158d8de729f4a443799603b1d1c3f30c62b93f860032f31e6e066ac13337ffd0b0c033cffdd4e40406ccf2fc93e1990ba482776eeed984cc2851ea80593ea9e89e1f4344a9431d30cbd5e979846f0e756efe1037b784b8f903c0dd8a8a9414ada85eb4bea6a6a6a6a6a6a6a6a626ad494ba22549a225d1926849b4242c2dab8ec3b42189b5216d481bd286b4216d88293b6262628a4c3863626262623a626959751c961d65472c2dab8ecb8e647076c4921db56447abeca8cb8eb8ece8e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94949494949494949494949092bc28ab022ac082bc28a9a9a9a9a9a9a9a9a9a9a9a9a9a9a92d02434c9b4c1f11b6fb979cbf9eae62f89cb9324c17137a51b37e7dec9448790d0213a4487e8101da2432dab8ef32e8f9ec41ca5fa48e7478526d3649a4c9349c3add4a1b4e92b84a44d6bd13143daa6dbc9a7119198c3248f8a949e282929292975bd7f6f4a452b57d5ba453cf8b26c6a25ab9bbf8ebb975b1273e4df342fcecddb6773730bc778dd206e0f8939378738cb26af478c2851a264a0169c352c70b72346942851b00fce7db8fba8dc87be468912a585f4abafcdcd7f32fcba64e99679495bf3a3977545f5d3f805768100f949619a03016aec23a160ec3f19b6f11f15eca3c2b55fde0502e4a7c33f1c0810c53ed209d7ff50ecc37f52b0cf10d8bb7c0bf58bbb407e56388803f941e19a0301cab08f4cc2de7f1a0371d9adba73add2c3cc55309c0b04c8cf87699c491d48b6612ccea4fed3c23e13dfdc19675297b7b132cea4feb21d67520fc26a7126f51abbc599d481b05c9c49ddb3a83893fa0fb6c699d47db05d9c49bd5a2fcea44e63537126751b56156752a9f760c13893fa8c5dc599d4552c2bcea4be6253e24cea2afb22cea4fec2aac499d4a95d8933a9b76c2bcea4fe59963893fab42d71267516eb1267526fb12f7126f5b6ae3893facac28833a97736469c499db38f33a93a60d68d712625e33236378e61337784e579b0b9abe1a271273a948fb13fa6d3124820063ce3a1fd01850a9af064032ce333aed395867d0229899fce8927fa15b1ac97715de631ad08ea9a1745b77384de0b585cef0f0b735da606842f6f45455b844000a8efe0636e5b9c3e9898340d20eebcecb0e3529fa070414f411a5190907cda913b33882fee480c78105f1e0ee42bc511cd000892043194299902e9022cbfed40b2400652de90421ff2a1a0459e00cbb7f090031e62d4c0410d18313788718546e10b0d1bd070995183192d3268208305860a98d60e33d861e5cae0aad818d8172f7a4a0c18c460c178018c95cb052ef065c8cbe7d20217550b0b5a522c2b60f15a44ad6e45052b5525052aa8172878c1a50849d9582760692b13ac322c6509b0ac189672e82341cc5151d514312735532388395e6389eba550cce9e2ccec98b9614cbeccab35b9d0167cc74d55f4eb4c5a93cc1b132cf3f694c51c70d668176a684352166fb891c79ea40df92a2a3458457b9e4c26930dc6f7b5fe30bc9986890cf04e2633835fc13caf56abaf6056371fc37c75573067bdc2d8d9d4930913d6616cc419c761dc449af3e8cb96647cc3c257a1acd0e09595e395d6ca8a0c3ac23a13c6cd1f4cad67dd1cd6af6ea6c171d34738838009044b70cd6c7d9d1e57e58c20589ab99154ec6462339da7c12d852e9b514578fec56654123ccf62338a29a39e724d922b531fad68427852b172956a537f6161b89bba35fdc2000ccd0d47b194303bf42a160313d7af582726aef747e216cbcb0b08821c68b757f0d582733671335b513957ebe5982eb7643a11f22d71b308ee197795e72c7b4fa652844a96654c66113a393a9c1ca6354711b372570e714b2f97cff8bc8eea3097d1b3c96c9a4eaccaab4deac2098e5ac031a98b2138a90b21bcfaca6b6339407e7c34ac728bb41e3d01c4a4a01995b7acd011959b53aef229fe6d20c5a6ac8f868b50fd2b22e2effa68f8dbc16c4c0a8a5e0fd54582b91d12470f8995ecb3d925f5a9589794caf74f25ca0b6c65a708778ef8480ca4f21a71975917eeead0b0ca55deb1ea75c954b6ebb09e655db27337ab5c1f0dd74b8fa7bba08b9d312dcb379b7fb01c4686c762b3a44c49a6a492ad5c6772df84e16e0681907e525bc9ca55be4ed2483ffa49d8e1fc8d922c7bad2a2bdf33fb232e657109bb6e8e4b5964c2d9cdf5db8fb884b90bc4255c6f8fca5f5ebda64ad464146464845f7054a28113ae54c3e2a3985351f96655ce59199952bf606e9618e6b35e98b7bcc2d84ca9c3f9169b251df9609eb3a44cc9759a498ce7c984295bf2e51f4ce80857ff7fd92b67b3a59e7ad4d3481b3e9bdd89747434ebe7ca733d77b3a50e2753f67a201fada7de8c694987f3cbd95db1dc92a5d9e2e1e87d67a5cead1c68e2954717a089b317aa83e79eb2dad207e4c553af4f51a99eb272339872d5ca8f572ed0c4295f59203e4fe09e1777751fedae5c171ec7d98f572997ff38ebbddad640ca5711b366acd8ef9c4dbd66aa4cf51867b2e66ce32a7d2406f2d1665cb4034d9cba75d12e0f0d7ff7d170eaa9eb23a3e0ee3e320a5e79cab2fed9eedc7d54f74762171e1bae3de3d5fa6878f5171668e2d55936bb7007c233de5917eef2d86e5eb9777567131a33ec15b42b4c1c3d1e3b5c4663203db8cbb89993aa431e68e2949b35a1783b8c6753c5e6b8845d5eadc43036e21decb59f05426f63d8dc61181608c53c1eee2ad6e52e4b3bff7861e05952bf5a3e9f29b550ac558dbb3a3547db7058c498792e5c2186251c1af0ccd13671e78aa538338f696a6e58eca63a77abcd1bae2a5f79555951a9d27bf123f18acd2e3c62525e79c62d7d3b3e6e49bfbe7eaddce07aa00cd76707b2f29f897956ae8f86555e7057b140537567933b9974387f265e797b3c567e7bc49d2f2ad9a0086719c4a45f3963829b44a51a44251b0cf5cee49ae08973e604cf261039c22baf59e295c798034485ab2a8f71867b955ee55480f844efb60876cefef868f812476f07ed90e3b468955b6428dcc1ae66858fd3a25f7932e1b288421cc92e2a079a987bc44d9363326de28e1047b2cf734b228e88e3888bcae5b161eefac828f59fe596a87039af9c7bc6f1e8956777c5724c1dce9527c1dd9e9573ef5939b7a4c3c92d49afc7cae598827cdc2377f38e887d345c0f34715de296b44ddcf9fcd14fe627937aef555219fc9de3ce39e1cc2d714b5a15be95778f9eca753a932fb25ba4f59c7a765db2ab9258b92ee0cab39bbfbf5049825bd231f355e217d625bbead9e59632264b98b5bad9a55895b21173dcab672396a17d87930a5f84e92738fbfcfbc57d3e9c289b33a72c7b97d17b44d68149e6346de651cc984c9b6c29c6cc674cf09cf3da14befce14e15850cb21280d12764848333d0904316475664c104da25a94a8c5c219ea1074e54d8a00d5d8c20ca0e1db08e12d9afd9445a12358a1198adcbbb699ff7a7c396c7ee4f87db8ce9f827fa2501f0445fe2b8a9a179c209f99f0e5ba6c3fe13d87da2c3fece900af40b7b670cc3b0db5b7422523a279db31fbf61bd4da1a6f5f2564ba6f5b2851c318b1f53b86295a313b080c210380a9171dc60cf36383e88993d460ef52245a553b15f8ce9fec2c618d3fd90376a64cdeaced78bdddcd3c789fa1a7923c78dbcf10387bc11eacccfd71c440f8c819fca46197a4dc296565883010104c67ef801633ef880311a1a8cd9b081b11e7ac0d8cc0cc6646430c6030f187b1172d69872c64c39c34923cec84963ca3963ca883372ca9872c24c39779872de29a79d8f33727ec69830a66bbe4c97d932e56469cdd6ca4422e6a8c419f9398f984f7981730fc6621843acbbaf0f14d8d7d5c49cde28d82aa6204fa335f85a6e44a7c340e1c44fbf9ae85704b228a59432cbe63d0bd331fd3a6d2871d8838f3e1fc32c91f5125996a12e1371892598e853792a29965d2626135937e77522d0cab2263aec67cf9e3d6bd92fa5c3febe9496a49206f76b6f4e4c6e70e8dc28a1c9f1d56838a49c386e5e5287a3f2d9cde4ec111db3dd10cf18763fec1bca74dfe0d069b9f595e9b650e62fad0ee7bf140c8bd3f8a23388ac081f12fa517cb32736e7bc5b9c99cd189d72a0d89cb3024a72672a71c49c9b135fdb1f8a7ba31913cd93cd37d104d74466976042be7ebe461ef5f9ced64b23e72679c8db75388fba35539e46de0905de3eb72fc1441319d528de6e4d4af67538696a4298be7ceba55f3013d599149548bf220641503b08dee5ca51600d05a2ba249c75f7e7d6e1e4c107ceb80c986707352c332438cbaac892709629c1f94e29217c309f7110bc371f4c4c78d46b4cc594e7a55c957a73b1e2a96c3701a1d8757f68bf52542bcf2a5537a956542b2a956ae529af2bb6536c37b59394bb5c2ed71ceaa6997d3ee957cbb3b7ea316c87a44bd22ff06ed8f3bc241d5287e47a4671955de79d76e87af56c377dde33c52eef761dba76d4c70e73ea1dd2133ed5ad4f3a0433efe067d3dc1ec507c459accf942d52e359ca732ae53df59e542a7553a99b53ae7a4db193680e09e930535df3785473680a9944d453612971ba51a1481bd93f1ffe038d0d897b98b9ccb6c34cf9cab32d7c5da6858f65339a3b6cd80cc4b5f189346d6a3c9b47d30894efd9cd8dbffb50a1e0ec34960eb161691177730b7333377f9893b91e8d1dae8d01e365250575e9ed40fd07ed7f29157166055a76d76dfe700c0d325502ceeec2328f5a3653212e1bee68c41c45e3312af7ba0ebe0bea57ead9c10c1e359da6d36c9a4e66934ba3d4e381bacb823fe83a8db4e1ba56e5adb3d35cae5722463acc3e6d8e8c64a827f5ebae6346ac7097fd41d005dee58a1e08dee50251d7e99a0e5d0775a68f86c11ce49508eb352912f17107cf72fd4b69a74f23aca9858f75d78f424da527140faf71ee66f0ac0b1efc7679b035963acca6ccbe04dece2bb66cdbb66ddb88b26aed54aacf53a9c7bca2c34c4887f566aa3b973acceedda934a434698f0bbecfb8db039e7bc43b3c3ba522e680ef826e61b8b028b1509f77d0522ae24cf61d2c2dea30fbb5744887d1de1c03778f71738cee2f1feeded2bda534576ede52aebaf9de6dd29cf0b9fe3b8f3a9c48fd72d579542752add54ea479348dcca379949a47d3c844aaac1b842d50a35aa3f7d7ef9ecbbaea5936ff5573819ec7e3f28050fcfb4387faf5ddecfa9fb9ce7afe5dbfeb3d3f389b3afcffdfcc62d96ea80bb2aea3aef278505df64ea81bea5774dde9c402ef1e49a2b25678e0ed012b6859456a9cb3996b27d4cb75d4d56c3b75937627b7f9735d978755b64392c17bb743ea30cbdeede4f1545a41d7abb7c3e5ba5d92267cb93a21e1ecd5e94955d26196290d5e3c9e9614be5c8daa927ee5ae0a9c81605793fae5f2ad91e0eca80da3404dbbb3e97fafe16b2e3e90a5751e0f0b08389d748ceb9f4d77c1e001047b58fef29797b3b44ceed505f5ff28dbf38a42b158df50f5b9f1effa0ff206eada766fddee0f3e7b5763fd2ed0e6ba812854feadc1e0e6f5406117e7edf0aeea4e0382afe95777f02c8f07acb1d60cde4c5d367f38081451b858a7913732083078d6755d67bafecdf6d44781419b2776bd606da791375cdf6ebec1b9f55f9f897b58af2a3fc81bdb9fc1dcb8d6e0b7ee4f6396c495f5fa0c3e838f5e8fdf75b3bcebe0cd3c5c07ef3af8d3c81be07f411b730dce2b4775de8e7af07af5fe206de495fbd378e5b55e6f87eb3d2b2a97eb456cc262b1582cd6751afc05cfb234d28676159bf21716759de9fd206f685e3df824ea5de0fd41de001ffbf5eafa7616ebfe206d8038530c5e97edda51ff41de00af65cf3be8ed60bde7c5ad5f79497498f51fe40d16f81f543c1e54055da0cbe502adcb759d06abec34ed5b8df1baf4f851dff107c1a0cd5462d75136839dcbd6476f0778d65d3608067f1ad7fb83b4a1e9f46655d76c77ced6ee3fc81b117757d988418fa7bb375f0d8e5ed7f2cfb64c27f0359e37fc9ff6abe5bfb309b44e9c3acc9048dd756387600dcbd3726987e0592c4b9906a7429c0ac0730b89e70fa752300000c08701d0c200f886f4a2434647a643c763b7704e4e8e4e6c1d9dcb357c3bbc89af9062fe73696ede3460e3e60fc8cc128cfbf070f3e6448e9bbf0c60e0fe70818bc4cddf8f1b809b5b3d97e5e6e79b43dc16b837a8a70a5c9b9b6f9ca60d056ede708c0b71f336811d09e09f9e8584f308d89b5b10b82ea207dc1a0eb805b8324adc171612c65a3242c60970730b1bf11937b78cb877f327809b376cc451d7c7cd2d2c23895b238f8b694bbe232c76d4e112a8b7bc6cfc3a2d0c5f463dad5c9a5330e6c3a3b7c38763d7695b6fee23ccbd887b54f40b75ca614da4c37bcc8297618150236c86c1b1392a894da49024229bc4d8dc424dd8dc3a36e7d80ca304003647997ab1d9dc420db0b989c0e01c95d0b03936c9524885c766d9c4e6165a85367b4a307d0dcb009be90f36870bb0b926617a266cae4c30bd026cee82303d0e9b3b234c9f009b3b265e10a6cf2c026ca645a09e721359023bc238acebc182dfecdd616bee8ddce951df6e964698cddf9e5f30f6b83db75ed8d2870363d8967fa460efa0109c7aadf59d4d02f57a379b53f076cc668ab188c1476fc31848c1a99b7fe01f291b91e630ac876d223f02a35e27c77195b318caf66cf7478d8eec281ea87bb68f36a3eda8c8d0147367067510f4f5095660616464480976b2ae1fce54e5e9c8f1957336c7bb1e475ca7fba85fdea5d566339a31f4db76f38f14cc1dbc6dd421fdc2c751ee085c8415454d1809a90e452b8a826c7aa70a7943126ec131e90d4438eb7db3e03b9b29ee8e799718bc19e732af9e053700e2580ff40ede1c73ef45441c7324bce3f80cea178ed32e0923ce81d10507ac590f5c8d6fdf678fcbd8ad3b0e0b347d340cde8d488714ac2e6057c3e6ad87773d74ed2161c47f24c6f9f476e0bc6e1a078418d2e7d4c7634088af182b0a4375d85d380ef58482425f8f2a92b6c1c1a40a41a94330ad45983ed2c75c8d60ca591e6b1872d4afdc54607a8a298604d328386355609af48621384b799ee73501ebd8706c9618e715e7c38e3c9e4f083bea20e8a7f80e86d441d0678975b064225e533a257b9ee71d33d221dd703ed0bbf99888dcc2cfdf8e773311c78e88b01812112762dbb979fb30cf5d817fe1f1801852bf304cb14729128ef0022bb077eca85fde5f3230fd0b195887015ee371da1ce0323dfc00d600f6b32d24bc4be3d543a2bb11af5b8763731ebd1d3ad7719db62e20787968183cd0c4e0fdaa87aa38061093a4188249ee719d896323febcc738e382f3888166e782737568d8fbcd36e73a8ec3662d66bb2e55876d2d3ae49e6341ee3836e218eb522f8f0d6ff7d1bc9b65f1ad96305d39b514e079c32d4ab4b410e0791bc0f387f3dcc22e33cf37369e6992780e7d3c5f00cf2dfc923ffc9237fcf2d82f3a9e5b3ccf1fd28ca1362c182f726ef33a8a02f1d835317080348ffd960d9a31f4f6720ddf8edfaf9c74aef302dcbce95c899b3f9d1371738b9e4544041127c0cd1b111fc0cd1f11c7b9b985739c0f817321702e809b5b38f771f3719ec4cd21ce6ddc4c83f3999b6f300b69da48ca9dc59de7e68fbb8e9b5bac251e1da73ce7e1e616cf736efe78fe42c7573abea3e3f83136e69c7e06c59ce61cc7cdad9c8337e7de457a775fefb78bf27a18f1d861006eee26983bcadb61c481268e1d2271733be951e4ebea2b4ef55e7bd888b3f7232c50e35adfbdc7eb0b8fa7470f4b71775635e22c6f871146dccd7381d231f4d565fb0edf2eeac90b1f1b5cc0e366287011af9dd7bde27cd8151dd2254c498734a9438a2571e2abf68756d121c59074488dfce0da75aff64787370c093beac2073e6347298fa706adb067a4438aa4437aefc833aa828e7fdd6bd0185f389eebbb6ba7100c9d760e0975f8ed33680ef5cb48634718122c49bf705c171d8dbbd7474c6160600ef39a0ab253a863e8351e7c3508f5d4217d9e3bf8c077b613429fc2fa0acb792e002e42095c84b7c33bd8e51abcbd62de8e0dd7ab61f1793dea31bb7d3b8e578be1b03f6a70f61d363711cc5d87cd3c36c726987b98c36349b5541de6f5983368da34d2d6488dc485af9320311921b2a4abc0dc732361faf65244f888b85936c11ccba9872b836f8d4b367cbd84b9b75287dca5cecd2d84b9af90620e003ec49521c49521e3915e463d8eb8317dd24b22f51b1505629efad36a01605171389a2b2b47d8d1466f5031af47ea375e55bc1ea96f388026deb6a9d3386cb5376c1daa411d42e968dba09e660c7dac4198bec319f5b465e109673b1aabdc2ad421bdb6856f0e695af8c0e71984e9b52c3ef0f4f3cbb9ade3dc2c89608e3b8c73bf81c1dd0606f7d7cd2d0ce3b5a85f4fd3e68b408ce1ce3d889bb79a9b3fee40dcc871f7e1e68fe6e68831dc1f1313136362cc6ba09e9ae088f3b798bbe4a3f1bc3515fd0a4faf333b1b716823b6ef907e8605d2322c1089f30a09d3c3d89c82337684e977b8363791db0c13c3e6a80486cdd145ff62b324d2a4c5e6166a59a12f29a39e7e7037aa3ada1baa8bd8c3f0f62285b542d236e18ca1df3aba218557604aa45f184869faea81ff5ebf1b45cace112c75fa1ed22fd56947349918191d1d212125492293b013f4f20a7ab9a49b4827f4f2090da245d04e4887f4ba788fb8bb1a8efae6d9cfa6d4e1a26e8cda76c369838a438ca10fc15682afae60dac49deda37f8a33f4a338f89e514f983e2568dab096584ed386851463e8975a2c274c290b09d316a6580a8c283a080064904e8ba20735f72d30b32c6b97925a3b3b5b405e6762b6476a8f769316f0897106b3347a3c3a8dcd2016a0f45977768bd7b2cc9e238e387a98052265b62362a0194493134aeded52e0d6152b5aa8a8c10d2fb8184ae1c208b77d812bd651cbe282085947ed8a8b2cb48e5a908b31e0b62db86e1db51f1750b88e5a150a70db144ecda04edbd4764cc06d5770f53a6aab16705b178c42c26d55b8aa3a6a3925303061c3b3ed872bd851abad810db82d0bd755476d2684db7a185b016e7b5c53a66d9b82eb8b8edaf904958edac6d3b665c175a5a36d415c632bb2a4729024a72f04999232a1c6242040d97d629c99ffc930cc47c318e6c2e33f19f64d46c19156793314585e6702897146de1c044b9f89b320397b7cee722843f3a57c35e1b411087bfcc124eda8f58971865e6a35dacce628f0697c36b31b25104d939f11c79bb10ec2f9092c81e610a66ed8ee663b1feea8eba263a3727adf6ecc89dc7303b5b62434148a0b62bb6f40dbccf55b1374e054811cafc0fd1c9bb0920a967013883ce1be126d4377ba0e393679ef2c6d8fc7f1767d64148cfa4f3d771f0d04c1a8a3ec4f0d8265145cad8f56a78d384827ed76cefaa0b8ff4cee679e7bf76981ccfb441184e5535eae3707c1d5d3b1751675cf76c73908ae3fa25ff5ba6c8fd8bb7d1d21b8719feb3eef1da65fddfd99b83b376f775d7ad477ef6ebd321d5a182f9c289bd2e1e7f4e5d64bfb717dbfe63b590603f1d9ce5d5e1f0d04c1db75d1b1e1d4351004ff04c141549bcd324bcc71366ff7e69cdd5962eee6edf5dda7f58102733e13732e3db6cde6fa0a0485ba3e1acef374dbaeda0e34f17673e66e0e82538fda0ebe6845d113ceadb602064cb0dce930cb60ce462c3d2e0564dbeef47c343cb7d3ed024dacf93c81e766b38b77a089519c75f12e0f0d75d4e5401438c699eddb6b7b3a3aee357b677d6414ecb2f576e7443d67eedb76316ae39edde69e5bdbede1bebd87fb4b87ddeab00777ff20dff6380f94e156bfb25b4c2dd0c4f3a6a44a0d55688a70a72f9401895efc911d11c7eb33e7e5332b34b4c38e14d1a9afd014df69218e6417ec4013d3472c6f91ec62d747c3f4f416e91ba30ff2f2aa84629cc13186f1318a0e32a934037d9254e01c3e0145a6d964686a646a60ea6723ceb0ceecf71b896f5460b0cca18eb42163ac3cb360b9c2b2e65091aa0ce223b600c4991f3295db3c177c12734a481b45c81b4b30118098c38038d36725b5aaab0f79a3096943de8880b4216ffc9036301067fa4c969654d046cc926520fcfdf2e637216f38216d4440d6081b77377d1ec0dfed914ea05636889c4286fd152b51f0c2fef42515dddde06dacebd5dfafeff69f9057c966a5b06cf640077076cde341f1f7bac9d829196754390a89affa629c511dbceafea9e21c9ff20ae7f89459708e4f3234379c94524606673208363ba57e325de81199831a61b0237cc426f927a49445c823b05b012fc048da130635c2e42e4e9a19331f2fd04fb2ae370ae970be0b026f17549f584db226dc3326aca2211d4eee76445d2794822f67509e5a5a5a5a5c9e35819f3737343461988f39cff3b821585eee9af1199fc1cd38d76df872c6246bead7e438da84c3f9b8674de067fe64ac6e069f31010faa606efe64dcbc618e3b68b3a6ce9a644d2078b3a68c656753bfb63bb76ddbb60da3306858712eababa3f1eae033285993215a903634af11f52bce6b54b4cd8c51e6a45f31c90d425620276ffa355f3097c29db64dc6e4dccd34a0bd01c17bb362a2fadc21c6e3762d095f97253d5beabe6749f39189ed883a9c47db8755541e3ba126c3694a6518e2a1fa444b4b946ca1041700610e4954a0022b30d58ed2388dbb32a116aaa00861b0e20b22c8a2083188430a8620835073e247c3510a52b0029e384a410a38c0399444322e58c309b4404115552862c40813059288664de8d06d9a8f253a945d0ab048c308863809d20269670a29421484e7463d157461c593235c1a05a21464d99462ce39e7a419a5946e749a60ce08250e454ace20032d9cc0829d79023cd12084a752129e93ce8d0d5d46916c521409e10d3ec4f0613e982cb1a4c41214c91456a8a6e4c49629c19b4e3079c2e9e7892cd34e402913ce805404362055b1031364410a4f80b251345c61dbb21eb07a892c71a6a52036ade1080ccc90852abc20831224010b18454283b76d9bd9d6a4061db6b465410a4e300a95d0d0856ccba2539665da0d8982ac00075548a10516bc01e9680e49010a4f4d6c010579822f48283621018dc216499a9c209b34a47081a254821abc4009505040826805d00954c8b22c0b4a1575c1054990828b201075a1c8143a70c210382a22165650b1032068810b1414cd1138610e4234e4a0c2d18a2c62f0061d74380316a4b0c151189aa69046821d9ed0c4e8095d2832051dec4c2994a88085acb3b894655916448239ad982998737e53524214ac704217f9b30f41cb29eaca85632b82aaedc60a8c4f9372a2a0873aec67193338e6f460871bf2c8e288f482630a8e1e8e4996b03097e40d9945c442cc915b904c1d4a2658d39b557dcde6d8425f66116f48287288e8a807734885b3249244cfb6a76c8e38d32f583299363c128abc81a30dda29a89b5544c499aec30e107c5bee206c83634c5fe38218d080fb181b300dee7c8375e24c3f7ded490d0b34db0886f4146ac2fd4e0a2318c24d1385172a866118d68d358649d98d4d0cc3300c938d3586cdc61ac3300cc330ac9b69beb1896118866158631886611826b33967b661d89c3f1a9b18866118866118a62d614c5bcae48a0db5e27c315ec6b8d1ae2565771f9b73f6079a6891196811c626d67a0ebefc618a6118f6c69a7037f6b6e2ebd984b13756e42bc2f3e61fb408cfcb0bd022dcb747dead434e074343b00cc2af2dbb95aabc927c726aa21907a4382ca1b4432c2c9a22c0dd4a9283121a9ac56d4af3502adf2ddf30c0f968d7e1b4d15effc59d6fb37167ce396713563084e77f44a01533c71d85ba37f294e31e391c3158cccd94a14c8713bb211cbea6f2d22ebea694d2fe3e21da7dad8b4fce192f5f50519726d248637c6cc9868f7e1ee7c37e0cdb380c85267126620c052d624ce470c47d2147dd47a81106e7a3537bf2e5788c7dbbf1d953e4fbfeebb0d5ea2f76d2f6b39440248efd2ca54ce990e2182f2fb75dde968c29f334e2141cbbf8221623a58db9410ae9272aba205b4a2713472924a18894b23b090e5248820e765c3c97549c2f4a3ae794923ebdfcad9456cacbd7dd9352264a279df374ce4dbefcad9456ca0b9d9432513ae98409c3bffc05a6857573ce39b13c9bf00f7abb944c5e2888a6d391e9f404cf47271f4d73b6a6a6a5ec8df9871684ca5515da916febb063161dc76d98d2739b76e9866518761bbb42bb14a394e6c419795a0407385c81fb9bec26dc30a26b8b2db6d8628b2db6d80285863ac54442e7801ee7c3a26cec1699f3da4fe848df29beb37510f1b2a71c418dc21596305584c1f9641038e26c3f6c351d0fddcc07f3cd4871e5183dd060696530a35a2a2bec5955b119d817c2d069e1bb428a522b3601e71c8c9da9c3e29b02c68e390163c7a6b51143ec99c5b880b1572c60ec282a7000c0d8e90b637f060263c7b063d8310ceb8718ed30f7e50c31c6756b3716c9fa7e9fd091199db420f480a31444c044c3f968866a2ca5636445d9cf6bb5389b3a6deb23c237b3cee3c9e4b76dfee8f09c1fb771475dbe3539ee45fab25d7a6c18e87077e9f422b630ef50dec3e2dbfa55a46f8c4fa769b624541d127716b3974fe808c528ce2e3a249677c31d163a22fb3b248ef7b020535035387cae1d12cb56c57c48314494285176b657ccee88982341c4acc415e7c3280abed616bef8be75c83224e27364e721e488eb22c7a46943339368beb9821a61328684b18d5a4d4bc3d731befaa86d1b49db448ce435323ad270cd6c86b52dbe3c931c75884599433306d3d0f0156926f866921d2ccf2a30760c37bd4bf7c4588cc2138630f65e6a2dda267e21098b51808213c65efa280963415120c296e09ddc1965ea17966530762c874edd06ec314b27180b01ce2fed21d1343518f6237c605f42de904b2426a5984317182b8a64c8b10b18cb5bf77934182bba79e6e69075f3598a30f6d68a646a23b944dee81b441bd8312ecc2c09afc0d8536ebe128c9d7573ababc0581b750ee4128ca54e3d9e1f1d8ff7cc4e9c65a79452dada19be4c9b68664d5474f03651875dd443baa887748869214d5db339d5758fe27611518758137551d8614f590f6b23337cdb358f87d3a243ecf2ed75a79662ad0c5fa6a8366232a2d72c4dcdebade910c3ee0d0dcdb4913b11637d690c698c21d534c90463b2c987ba92c38ef351edf686b9e0dc4618cb9a08465f3ba0508418469c5780f015893ba060831813b10bcec8f0658d61fa588ca1c728cd2d18ec856439a1461a9e6d4e6f47e318672855611e4fd742f8fa55d539f89a0685aa691a9e1ff389a76f8462683e19cd279a281393e23b4f00dc4e9c31f1be78debbbb6577cb6ef9d2305eeb53793c3fb4259e8e6f217cdf47e7f77d5fcba84ae5209aa6659a866974b626354d53496d26a8f21126ffc6b7752f2dfb2309910e63f751877f744de41a09d2b2c9307bce39bbffd3b8ef914ee9ee4ec1f22e52b6919ed48b714e249d0ea494942ef194cc3931ec0b4f52382a7da109866159a6040623253008e1161890b6141c95c0c004eec3add6e8206777df7477776f65e8eedeba46820c60688184eb6326637b3a50374bec09a10e2b85a24339d461a5f790a05706ddbe2785c4991a95989a7e4a2b318ab313d8e341bdb31aae52de223a94583cb249d5571dc5f1ab55eba227a5cc3c1ed557f6c8f63a4f6d4ff7f9dad92c3b9ccf7bedbaaeeb549718edbcabdea96e131dd66b4ff87af3746c579d7a3cb6ab5ea797c4f68e52cc7bc6300cf3300fc330ec52ead1186377736c4a592194577428e93b3b7134bee9c19e3ab5997ee60e77c7bc1eaa4f9d89e54d957af4b4adcbc1d7afd8cdd1a1ececc4b16d56efda59895756e808867d622e9de5f93aacf53d84af32d12f171e189ec7ea5b1cd3173186735873ea67111dfae8eebdbe2525048f7a9eca53799ee751aad23c1e4a63f5bc1e341dd294c7e3881edee7e7ed99f71e71cae331ef5d798507aab2f72a53f7fe31d1617d675d52574763d58d4087f54d60cf2ea16de1f3d161fda769e1ebee88c3d4e1ebeedd7c5c6bcd5da7eaae7a8fea6187f53eea1233a65e757dd8223aac9ff6880e6be7bdbedec7531e8fe7bdbb341dd6cb215f11fdc281eb2b6ff535e3c0d1af7eadaf8f53c909d7c8846b0d71fd7c0d4cbd3d126905073d5bfa59ca9ed8b339e7c4deaf8d6554cbb0eea697a69558a29f9dbc144787f3eadc1b8ce345b14eff200b330eb4eb17ea45d4f8c3f797f6f50b157218e63eb959c41159e64343591f4508291d817abfe6351b6388ba97b267cef96e971ed9fb4db1ae5f4d81d003f91c549e361052d0648b3f7c515003d3d66ff54ed3c8bb23e36910497db4083471bf7e26963ce6fd99d8dbf1453c77442c9f4233b1a81126a710e1ce201032917c18f7cdfee8275d037a3f6a30465f681bfd48c13d7e60ee180a7bc5dee11eced91f29580ac66e4f0ff7e1ee78f478765ca741200463dfb66b61f8360ebb3ddb6b967076d4666b6a7eccf64054b4097548b7a11c01f0f1e8f158ccf2e1979d211e3d9e2150a8631826c375aecb3cc65712cfd8b9d7a7a07ef14041a135e822f11caf02b83d5683fa857ac26c0de26c5087503cac06f5ab433dd520d4d3ad4118bfbcb9f85ece3d8a9d7336a3bef3e8f1ccb84ea3ec8f0ecf7873f1cd78463dd520a4a52549fae5ba19559f310c7b0f768eb5d421e672dd7b7559561216121224d45948fdf290247179484892a02e8b490ec92ca4a0ec08402282a105ce87c4c8bbde918b0a715752155e12242329f08818d998e1c165e6ba9c0797049cf5e49de2c08103070e1c38709cbbd9f33c4f014c7c011cc7711ba0dc1314940e29ebc93b9d91e141060819999bbdb39c3ccb7a62397997b94ec73873736be63c0071f3169ebb67593296f584f5d42fefb29e3a0c29cb09c57262b1905848584cfd1242e654886719199967d6528f8c109685d4a18c103232370b71d7ab1096c5d421bdcbb2962c6b4987d475216cc4946371926325e9b05f94b5a45f354ecfd2a25f0c383d8b68e5b472ead711479d868564a45f2b48d3e64bd22f5515fdf2926cdcdcc2e1cccd5f183e02b13aeac9761276e36135246c00acf6a443fa1c02b09a13ab357548e95fe859e8b1d598e887b0da0e2582082288e0e1e1e109800a122a3c549250e1546c546e54362495949494141a3468d060b971e3c68d96969696d56ab56ac0696ee333e7e1393ec437a4db6c48e736a427b1219dc7cde191d8901e800de9427ce7f8f6aecbfce52c9f71efa877afc7504faf1873344c6d94ae789dde5bd2af204ebf01fbc36d6c4a081ff79bdbbc4e8fc7e6de7c9c8d95f8c66a4e1dd24beda9438a3463e886591f66b196f296e3f9c32f6c9e6f02a7b2a8748b968b833deb14a2190100000800a314003030140e088462a1683452443d6c1f14000e94b85668501b47411243c618430800000000000000000032356900dd9a180130e48d893dd7e72553f3c4627049d60fb8a557d4e4b9fa6a3d1536af1e305629e5c0bfc27ef07ed02218dd1fd1023498fde0861f1c56e51c208d3e5051dffc99eeb7ca021c04a003835f9a06c9cd540297cad6726dbcdd4138e6fbafe7a871240f579f8c2bbc6beabe1106aca1bc2bfb6f2d7d644a76c894585eee87b10ebc3b44688138fe09651d1e3ba0d9c95312b44c0f381b35166bf55fe63dc9d53bbc26ac64e2b75845f48d5ad50885edefe01f1fea25a4b00b64e46a15acce98fe7bdc674381df7010f40fee3d23590d170e0d3c82d38bf247a4cb2547a75eaaa2348eb5f4bfef3a2d767ef960e9623639d1c6cdb8d1b6e246895e56ca13f3a70b7913486c52015c37ba79c0afad12b5f1c66bf86a7d45111c1c666cc16d63066ed586e9063dadfbee82d2c32f2291de8d46dcfc94f286610f1db5afb2da8647e2a497a0e7693447838e73f889f640ca44f9cc9ef0fee24a968f903b1f5f4c99473996bb2117120945b14e3500078245b11da858276d3dbebf1c96fbeb8061f86a89e6043d282ab2c05e356fb8fa1449d795e0ea76126d76fb60c79854067de74ee77cb0468ddfecc0f9023f513c317679831d6a8639836ce2937ba5292ed75a6ceba5fd726e8b8f07aa66a600fe526affb64ef53a0245644e285a21f21aed2e311890a66eac1311f8e19f80710e121bae96da7af5dc6d3857672871dbbfa8f094c7e346afc3a19c2185e9c7f8fde05ce56468648519af72f82730bed78cbaf8d1d873b24048061ac15b9cf59cab5a76fb6ba9140b80f86eafb1484401076fcca6e08c883af1d69c25af9ae70582b87a25144990a5ad25033163025c901478e9f57678512115f0df0be0ba4b74997e3106def5998a80d0710aa83a1796b29b13801f7474e740db5d8a9bb5d6b8de3212cf7b70b0844f09c28178887da773299081b34e74faeef4db69e53001e5763e92c583a3634bfe0545610f75eebad91aa7fb3fd1dbfc495dbd56a00de5cba81fb658b1828dc252900f9840885335a27d4f16bd93f78d47795534ac9d51dbbcd0b038af3a7a2d2261a196daacdba6237c94775be21f4565aaa9af24365085e5b835417c88cfaae6ee6b48837a2db524bcca7daf98edf381d1168c43c9b54dd4ef2950f3449e8fece7d17b69c82e30a0af15560df93f23340b00e603580aa95584af21fb1b2fd19b2ec0edba8b7cd3306accfec0c6236092ce1855bfbaa86e41560ffec5eb6324b479d4d56f46b2ddc22305831efcafe6f5396f2938494658b3380b4a0926461cbf8ff8568039390fcc265862a318bdf7704c0ea4af7bbe5a4824da6013f91064f021cddcef14226fa4e0cf2ccc020a82c90ebfdcb12c38029a5f9a390abf733fa2f1f17b0f46969ef2daacd787dbeaa0ba7241a9831a6828182e2402272ad0d8486c6f96a5f5406095a387647d10d43473dbe3398ef02af574a6ab7e2ff38a05f75e45e9948bb9a26c72c6306ed22a679e21c61cc36b144a9631c8baa14f18098d9737c33598f5d57643cab50f7d7bd9d97fca49cddf3f0954bd9ae3d98ef5e4b7ce4cdee06371b5acba7e62c9dc8d8193b1c723967607c095623e61f97c972923a8e6f99dab197772f6b2cd0e58483321a94b492b756e91bc867671629d10413b0aba244934735fc7c1ea3c27ed6024de4275b3b0efad983873bdd325efc0a2d1551a557830130174ec96fb2eaf335b247ba4f81199a8136a30d9397478f4656af3efede2ffead8078f6f15d188c8108716fe6cde50ebbfc32262c48cdc4db77e7ba1b9fa9d43c279ac72813e4b94c65d7b898fa9a18751bd617e5e6617ced25b64c0d8db343f2fc7b527ed947ec590a18afe89dffdb44b2fa6b96d4d024456021d27b6cfa5e646a579678c1915ebc34cead299859fcdbb50eb376bde507b0927b986c30ff45d4dceda3c3afaad735da3d8755bdf58d8e7074dca1c88dcf9779e1e69a85bb9a2e05c630b4aa7035d6feb5d3494d47a8417ab50156fe1449b7eeb49e3266359c9030fb42439d27ec0f963dbba9e24ad23c961be774327a981c3f6defbc334082989e7fef5a8de9d69d597202cbe641a32fbed62fd720894f0ea79c86679a32d48ea2ba7f528ca00e715481ead1fa6a42bc250d5c5dd7b8d008615ad6da4405d618c51141530721e7e1428da3d0d3de63d231acaa44ceafcef30fb9c146d4a995340e8a5f0e3f8130f63bd6cffd29e0df4ee61529e48f4ebd829a4b871d551a8a2d3581cbea5b5851f535be57e207ad56f003d4ea18010c1a252ddd6122dd851a865b65096285599aa529d5986aea44c964ac76077f986d6e0fc4c9633c6ab2ccff2d5dff66afd34289a5f60098231659b334eb048a0d729122bafbc35542db184832300043e0788f58c4f7f9aa2cbc5ffa93bff5f33731bd32f6acd0207a2a2665a813434e547f67ead3b9d6896f068bc5ec3e222418dda534ecc504ed37457997ef39474511555fc45ec95f38ce51097511db8d62db4e9784aaf9f56886b4dfd1fe2cd5234162b249e670cf8b36af183b076caa06d8fa6dceb219e3f5eb05b1f78da7499cba1cd522e06d5d71a693eb9d4b61a8ccdebbeb66afddce39f0de93402717bbd46efd306902c0a767a44c2460281448723abd3804b229f4c2db50e84564778b270c6e06725e2dd6bb8fe15169f1f165e0395e5b6f408ced5680b9f7cd9dc40cc4692e8daea5b28a590b518bbb64d5e1a6495a4ea1e026bf4f8d3ef57b19d0015861800e411b91c65c21eea647cd26c3dbb349f2d76f1385eeea9e6f2e139b2102e8d3eca113f0e4be163b8be23334e42d9051d7987cf00d6de30a6bad1db62390bb890b828605644962fd0cc5c928d6f6cc480c4d9e028b894fb02de84ae3f54893bef861bf7446bdc187a18e2536455b3e89a20ed6ad581121d624b6ad4c1faab838393d79b50a5d58f61148f99d997a449147a707feaf16958c509bc1c5ceac0505f2d20d5720dd9c2263f5e682d0d1770ea0a3ea16f6851012862e613209667a2cac55490221daf7b15902f917de961f15802e1068fe2f947110ff6e277f28002c0f92de21fa31a6e65475ada76f44d1870ecf95d556677cdba2a4869f445dfe2b01d16a060efd690541f8aa090fb5a23a98ab4f2035980f241408c3823a6beed30e177a094b1335b443b0d4e6b64726a6a42ee6f24cac0f40dbf2add314c3454ba58189b636e1bd49f730c4b3dc2e9233b105928b8741ee3367c62648e17a199bf6e9b11cec7b6cc33640fd1b597caf05366afc4a20c04d95dd2c2005d8837b59c0bd5ad5f2aa32117ae46d27cdfb309abbfc16f60c639e7fe465a6563a50a70a107f569baff3cdbfaa5c874e0d157cc03cd4cacc735765ad27c403575b153d95d3dad0faba3f4a7c58b85ebf39a73dda6d407e24c68b4c24f13ea9f384debdecee9cf9c284ea0523f2932eb0980ac85ddacdcd68069f6c54facfa753c8fe841caf4d90779ba999a55d23be53dc6aadb9965075d4662ac47ba3c7d2b227bb6d4c1d4e6bfc7989f4e761d28a14e59d2b27b333af3bc938ae6343834f0de4900f1f81c54193a2ba4d588ee80e085ba4f7f6e86246ce70bfd46787bb3e65b85d644cd1a80f4e4c67d5aad46ec3b5574be401d3303eec9ad9dea56152b35a39b7b930b7aa6f80ce0a28e51e9be2f43013d97dfac90c7603e6cc6e17d0b4f3367b0feec32091c32d19cea5f8fac06938cb10a7767fe3bf2c24ca15e729e58c429f908b89d2bbbaf4c96e86d57e64ba01a4d9530eec0495555f2b55d317034eca872547001eb9d2336a908a7d281cb0afd8eab0cb7e8a4427db4ee8d8e1eab9118d97b06473088d2aff746f7824dca056564862bac4438a7114befd85c8821dbca11b7bfceefa29e2588a60e35028d2a83dcc2886b2264b4c6791c46293e1faaaa91ac084bf311dbbe053a1db3a3519176f811d6fa1c7f3ce55e519e2b6916b3eb701da6b42dfb171a0a8b609ab0cdea3f2962e03b90c6c917cda76bab9c83967c22809d880f645720de3b09d241575590dc285cb133722faa13a669320d2687e255818e4b6c392d208328405a521c24221afe59e745d5903afa02f6e654e0f47a73e226eedee8c49d37baf7fac45055fb058d5f97c5343573531d079943f6b84f9bdbea38c45ee381116edfffe68d182d99aa044272bde79fc07c8048331ea71cb0a78beb512e043a38f0890e14644e62b1cfedb42034de4792431e7cec113db7f77408e7752945946db90778be9771004afeb79797ca5ae5cb8f3071545474e0119cf693886ed096f5088bd67b68133c3fdedd6b2b28ab33926d625b429cf1650b8db65a64cd05bbde0dc4978960d71be104b15b1ab462e210035dbfe2d7acd188d68d4d0d2a1c0fc9bce4875bba801e8cec378a5f72b2cc6b40f27a1174886817e1960136e9d9bca395955d20ec0ca52ab3544d1ba6c220f218579da4754c31270816a25db6aa181fd80adcabc171f26ae1f8862ab48905927d28c71aedba59aacf42de31927ed5346e14374ea3c3c3eb55c06a2f98bb798b1884d14499a0b2529ca9e1db26e05889e654b528e61eeaa21f9020d424a5e7eecdbe8e584bf74507c10c66b5d343e5f869f559b4934c57930bd46cd0376e8c2de847c621bfa8f8f284ec5094827a468e39852d5dbc6eb50b49bfc4fd64442d6c46c5dcf96a7676b85c3c9b76df63888146525e8b9faf34b357450c151661020e9b226652e341a5d8f87dd01620817933ecf4acdadc3ebf46a90343a51907259528554efa28e14427529c42049a2235244a8924517f1afdbb4b94f12f37662201f18d89bc19ae0777407cdcb367dfe0cf3d2f60d07ed2242de06d9a39403c5c2519fecbf251a688f37d98f1fd37ba3e4ad56020ab93810826421feaa5d1001d3a2773658fcaf43b9c9b39bf3f1ccee72fa2c98b31a5f20a6586a9c0ad8f5b39a9d6fc82b0de6b7d0709a3c8fde946075ed01af090cca0b052b7515a172e2a9d7046b816d6845c1f611449dfb046606dd65194fa6cd1e3d7df321839f3416191d9c445ce81e2a720d702c6718f29efc29e5487267941d7368556d50e4420aeb9a724ee5c531239650be1874e6e8f421540dcc1849cdb90ac375e623bb5bcd759bcd837e94d1e2532ea0412e96b86cf0c6a046312b33d36eb28f0b59c0b8dcf8a111adfa090ab4309f59abceab2c348f6d1e669c5537dc76c41fa546b82574e7a616f182e74f1080407d1a89e7f23d11cba80ed8d09e1a5b6a3751f7e852548a6d8844d1df952315a46c3c95ba4c63791e61469290c7d11717c1e9e2be1c68cf3dc4e92e11dc708946401cd08b8e9cac04cca74ee3156b642ab39f14b97a0cf292b3e1489e99430f979642e23a0330317f2f6ae74340a9e232cdf54ab9adcef4b5247efef874e01227020738b5e83c6d6aabd877e3e874650c5def4f4d3bad3d7a4b27778d79f4faad422b7f3083423a0673daaaeee54d9423b5f81b85560f3c67745f519d45267e6f1ee20dd778fcd88cd780a4d02b82a31bf5cab1f862b81c993a12701feda764620ba00a5528fdd2f1a6afbb7b7d0828dea7fa51808dd5f6f24223001ef84525267aead2bb1e6e227af3da2b7158c4ce23f20535d5df6bb160ce31f16db74ac075839da5af7775e26334a0b619e726e880aa96b1900d1d6c3319bd6aff084a4eff12a06c2f25660be813939b29e70566fa52900ec6b4475d5e29756b68eed74156478b448501b775de2c770d03901f4ee3105d5b11229f440dc796db284350041d9e6dd15daed838367b9eb76ddf0a8ea3a6f882044242674c8059fc2f081ab5f04153df905227c9aacd95bfa75ef135edc22bf24a04cd6903918fa530b3292a2fd1c5c2fb23f3c6b0bf712150ae63782091dfad046b37a5a7552fd6edfa37c6c6048f9c98e324f1079027731985c6bbaf5289220b56be90864d6b840cccc99033b0712b1525c184c8670804a1ef696b8a307a41213e9bc220247b3e8a0ce5f20be378427b2a13f675c128f5f7a8e005735a0347b28404f5f0c17c8d74b1d889f53de47e686079196feebc4621acf36d86be2b91c35743472f2eea2923077fabc376005c02820bd9c1f5b230c6b1436957817363ad1bad13c942365fce0052c4f28eb1393d6102ea50f30805e87053866c63b5cba876df5463a154092e93e371db717ace6bdd5c4246a5104efe3a1a6c588bac3ed8ac2211475021fb0116ea47dcec9f87a186f21d039ae913784f1d7e0b8446e661a1c4e11ce94297ab352f3a947ca270845e5da568b5b0fe7f07400a3f0766ed95361526a3cd80720dc2fc4c767180f1ba4e8645a629cc0656e0651b8c652304d9188334779b694788929c613877af3dcfd38d95100d1504eb9502f889e452da75a8ec67237b2d23fb8ad14d58f3a4bdd8a614c3806ca369635c726dde082b9d59c1df79b99736ab527d60325c819bf4ceacd9862f870dd644696e37fea0f9695bfebd273bf76a6bae013afe8df35527083db8557c2d834d6e10e745f1274ab540f9a4c53486fea70cff42f9fe4d4a667de43e4ccde64711cdac85016527dc1ea6bf88dfc9c7fa196b20194bc720c8a8b2bb611601a21116abbc41aa65bb28cd9411b24071290f0c4c13b0fb391bb8ea9bc58f6d9fde3860e6b7e145d64f06c1b3eaa016500151897552ec536701e9296fa9a15a3f4a8a3f5e82c3ae1b7ade0d539e5d338b9342636f61adfeb0d7619fa95a3ff5933a95be676385e6933343ecb64b4877561385a349ada0e1b74fe1f35791acd286d01f5d411dcb89c154fb21d4041b76803b5e22f717bfac8fc42bffc05b8cccbd6c6ef572e4e31312b1361a5ffcf36454f1665fbb569252bb5da9fa7af15a8c5d9763d5ac98a9fd0cdcced4836b4fbed5d39ac644d6f447060f8687b1c073a30dad30b0d9e078b01daa237b08079a9077483fb73a0903d28a42d038c31e00b2fba013bf2a0919ba8be3dfe968afc401cb2979f6c573700e13788a37f655bfa3caa898ea9529e060d3624e9f69249e1d78ff3487c66ee1a2b02bb57b5f8914c6b6a825dfbae8d2deefc4310377ba545ce5326b5e24a41cab77c330ad2dd691633326edd70961d138d330940e3a89f95b285f20a908f451528b1edbd8b41e498a0a4eac48b306ab404d715dc8aa4bb2673f7aa883b821c5c16ea6d668878e46773b9339c72aef00010b4074272286f230072c086d6dafbcd012daa17f96cf007a530e62e8e0b9d6b524f187f212744f482c59106f87800cdefe6d5a53aa327df083d3b68fbbf306bc334a67aab7cf7ab4d50cb5960345aacb8d9f5ee9677be2c8b5ad67144c392e8383a1e4c2160afc1b558f63453864feecc2aa6d7735692d5b13a8f2cdf922c1d5088aae752ebf58bbf2b1f133d7de24a9506dd06df6d966be4e7d26d736bbe3bff05976e9ed34c23f96702f63180ce3ebdbdf6baa7dd142188947a8f2169fd0f201a8d4aea0c303c39ad427bd13a66070980f12d6b8a281e439b91e496984141b1c4b00776eff3ceb26471d08c592810c817389ff1061734fc21fefb3180ef6c59fa00434f03f8c11bc21b8891c6c18c0faf7dc31fe7c9c2fc5973baee2ef26aebab8eb476cf9e9ed11cb3e6f15f25bb7f0dff5cb00d00b22bccc68080304cf92cdb8033dbc8101ea05f40592f188151145e2fe13bb75a275a4954d60975a8bf2e0acbd7ee5140ebca59873b550e69dc0baed27f5a88327fa5e2ba43b000a07bc995b97ce10da0c4326e1479ec3175e0781415594d6a8ccda273108e34dcdaef153755b46050b9eebe235f283cb9c0c019f94def7dcf72a361bcb94ca69dda51759eb32f85640e373869089c30c106556034131e82fbffa3c189b1ee2d769e9de05f8dbe5ec03bb2840e8cd631166d796a13c32aa2fa9dde0b70a9d754d61a9174eba4f9837b8f3cbf6231a178138c7b2b5dff8c70d906292ccd9a3f73a1badc0168d1ba353a153f62223e4f923ef623abd4092bb9ed9bff25f3bef1caca07d8acb9ed01c28a2279745452cb488be4e9b7dab7c442244c999a9887dcb2368c2708cc501260898702a4725d9e405cc9a6d08ae313a068a1a3581f6614192bfe7ee0828756fb6f3960e4ca26e360d37a0bd203e4fe66d9966c4f70c3792a67dfdc54116d4b725ca9334073e5f31fcba04536cf64e7793ba210c7bd4f4ae1994333b50c67ac0b17630605c3744a38ab9c121b235e98514e07dc2e786347e90ce9cf5746dc3ea36d6a6c9f36d06cb809b2a0c658563f70b527c7d730056396e86b796c47773a8207c11ec6e89192072e0eebc1c528cd0534c9770a4cb98df74bf8cbf39643c87a662ce8e6799d1ccf97a00ef8d3e2500edac8b71a99d487c785e591d611134d40ab177dd626f3a420c349359ac263011122f0ef130ac880dc29ef138eef40d809994e0e334b860d3349c9d7e5cfd405abb98b541c7be933a2ab904cb63da3e3fa4ec0ff48894b29846b84c8eeb9ffda9d39e8bb4d2fd9b60e32fe77ea73b0d040690ce4ca63bcb7f3827a6e037a02a0e85bb7d4fcd997f0d28daa03dc8af27987ac2a2ce26b8dc6fd18186276c888d3bad13fb8adc671a2d43c8e6a3ea26bb69437d030aff94a84361dc2e202fd7fe1012cef9f77ed26dd5ae1f28063abb75215ff97869c59f04baf145f1699498daa8607aedaf72b4b631883ada1975e58fc5a2401623e4222cf205ce737692fe4843ab0b71c922d380786944a4c022e7ec14ede0529f8d3f5f0e96354d419641d84570541147bc9d7560226fc2eea9bf73c5f33371b9b2fcd03accc6e313a4743847b9da444031ed1d4e74beaa04729186b0442f1b4e10144eae539423ca5602f37ebf0e771a64156d03ee5f125a7fbdb7e3ff157fb6e05806e711f7399787917dbde56b29f56656e97ea0c0e80072b71aef73f9ece439448eae866b67149f05dc9656767cd3f8496ef9a6b56ff261bdbf922e33d01b15ead94bed480b4e52993042c563d13d3050508bb09ed827b0123e5c7efdda67dd6fa97a50f60335e6da77892a2462e988705bb575e106acec18c092f085585bf34c4be485e3b9e3475c9b787e845323ea977e14225b40cfef31beed67812327f89a4f1c30c18229695bc20ebd200843c24475004a6525e9bea073c4a7cbf0ba1b21ac3804e3f6ba1953b076fab45a669bd3946831e44843284aee4a20b3fee41a34432a0d6840785b555837de88002eb6ad352840a333bc837b3c71f282b92c66fea8420a957dfb7503d7b0b1f00b124c8c80b036a7bac765f683753f5c75758fc03cccf027412c30f2e5d53d5417f7234bfac43bb5344d0d839f6842dec8e4288b24434374e8a9f7af04a61e5b3180e114faed1335d5c4884ad9cadef76d785f911549a1717f6fde955e463456ee2e4bd0618f04083b6b741b00f4801d3b03b63454b851c697c00c7456c8724acad044c759b4d8bc375cb83db775b36fa2cb78a4896c8de4f5d9280a117c433b6bed65321ef8995eadf670f139592d09fa2d481b731edd609579fa23328ef54f704be80a59927601ac6b231c354cf1e79fb5ec0148d064c77890d76ffbcad0375aefae8f9fe98cae9fa1593df9ab96067172561600bbfd39ac820c0fd1f222cf1104ad774795b0eab800c347bc1f0685eb11e04b343c2060f989eca2a44111baf533d9925f036c1664f049e5cc292aa0d85c2e33f07da00095547f7163c3e27b42ad78410c5dc31533a792e1363ff6365b738e48b4c12756784bd66f1ce71e91ef2a8f9fce7495e105a1bc8ed24531a8cad1a88425800f8b93cdb02d21adbddc31f7c0fadcad3767f3a2b6987b3ec6cd720776b0d0115e128eb8a076aafc1bae192a568e32daf03a58981a4c2a540b20ce2a51eb2a0a8f365830fe48b4cdf5656348fc409c40d9c3ac009147c37a719171486315f555698e1468bec28e78c6f405e9ff0986c639b1ce0cb0408bbf695c42efa0d03276d8273b6090a8d8128192e32563d12441703d93f21d4933f308ef80131903e10a15136903d40c0f60a3b765000f3798f9c7433543f19dd08a35aea759c5494f3f595ce33189a0d3dca6b43afd849196b733e014ab89343a1bdff64d513834d63aa4b8423a113c83b04eebcf007ba07d12cc1d1b3f807ce106a992c3f488c61650d68809fa30de13f408e8592bbcc0dfab1cc318ffc040fb43744349470282fcac7c022df17ce86f99691918935dc9426e78fe4913b409c72e8877324974a3c870131ea9074474743766ee26bb98d23df94c24db5b1448032535af50f1b54b79206744dcfc74944cc67222a9b5c25a33d298c4f511408faddc9366408699f70260ab03ac6484651e8d7fd0f419650732d149f03f4149fd41dfdaf548d81dc74d19a3a18e8e2c0b4d4af04cd4407c31f31352529fdfd816dae1394d43e97249db1f863c92d314f5f04a57ee2185db015eb17880075557577538961acaae21ab40471199040569f5e44777ecf72f864a24b996ee3cbf4646eec6e037e160a53d66bbd5d455912e5ba21d3487037c80d7c9018b626687e21a48ff029a7215a654a35332c897beec371e918ae5f864bc71c5d65989a61832d77694129438db41e3f008393c7d1066e1d2bfd40b10a4b4305050a3866e2f5e9480462bcedd9f56e55be30143c37b46f721c6a4e7d362d89902590cb66918b0744b99382c908e71f7109eb54acff7624baddeba365e117e4aa16d9d45dd352dfcd67ea1233295bc27babd0920ff9e49242e4e690282b5c8dc21a8c2af666898ed0d1e8c75899ec6431047165936f2da91f072f4afc7dc953d0d67c4f35aaa57b22a0be8ef8fd95c913aa8ce1414587799f2969c5703383eda178330559224511a761ea0a0de0b2c1fa7ef1006e07ee80a4c84caae0f06be0ebc5f77a1a6b49d0ff0f3c73664afa74c6f537fc4888b4ea442cf588146501a899001865a7098e0c5209c02dedde8bf0eb328c4a4689a07d83b7820003e120023f74265b615a3dee43afeb8df1692320f30654d849e08e5f37f53030ce9f5c9c77e571386d4f6d176edf0371dff869298b5ef7afea7ce0783cbfc401be0b1c035d1c253fb4142c814a96b0ade78777042896bdda84431ac2ae62cd399209ae1f6e15ab3418b3da91b7b259530c534ee6a4149f9dade5b81947539b82396010adfc6f434c00990829872e071bf8fe96a3c3518b80e4d1c14a35d75f8e9ecfc72b1d7e1191deaa78d4f176be187001aaa4d0d1678878bc3866641dee8a0e9acaf824c918ca889d5f962421700407c86b5361338baba77c1b46521448a9e986086927247fed91cdbebb16a93570b6229e85378988200ad83c14b099ac83eb7283244fb81852c1a4de913b5a21531d2ba379d2b203c7d6a4184a2067c7842fdc80662a600f97efc43a38f733d1996d4511552881536d4ecfb02b0067a89fb8800fae3ec75020f68f5db40790072155ea7b01fb222eb0602e2c26582c53ddabd27702c76dcfd40fca1334e6837aa3a2215f0125a518c7cf3e13366ea053757085db5f40d370a0cce983529459d334d93fce22a82db8c570f318d72488296909468f212e1e33edb6d8bae005eca46120664d47c0d9d558f3e921594b4d3da8ff5ac1620eaddbabf12dde28137845c5de65be9ab30267c694c0d72ef3d1369c5cfa26ad717fb67d2c8f93eef69842438ed725c9729d7d9b87e2538589dae9f921628a8b78cfa6bc7000a21242dea0529df4a92a26c7118e244ce91b7caf16a7b8a0e6a1b9e72bc1ee4588c69457ee1580e199fad9f3cb48817e42ed53434d3af65b440a32385bd063962ac12c637347a07c073d338015b3f20b1cc560a0cf2e6251ed7b876ca8dbe790ad8744008900da7bdc423b263ebe3e64c7ecedcbf655fdcbb2998a98ab8026956b593776822378d1675157cf0025afad36879875a678f44ee9432e7abdb33856bdc770c11dd5b02f353662a4a93d7600ffe64bbe68d06a590709eba0381d1afbbdc926f425ec67f83f8bdcf58cc8040f7f64eff7f1e10d0d95259444417df01a1b38f35a5a1236bb4513878c2833a65f47f7a6d5218e5b88ccfb551002631b9130bad26254a33ddc0aed1d08b1ebb99edbfb1b65aa7c7a7ee7432740609e10c0251f29dbd609542719bb50675b24c2752c343a36e4849e8c695fe0ec34bdd81a497867c755fc117299288646cb53d60195c238c381c1f22e0f462d66b2790b00ce05c8bf3f8224630a46418ad53b1f75e1346c5c0009c573e148d273c3bc0b00806c79d64fc5b956bf5017a68023af1ebc6d7195a84c55e89231f43fda858ec06fb12d7a169a62f8be4abb79ff0fac068eabeff37cc66b115d317994711fcf6d9c5c06912f1b752d09909cade9728d38d1556c678259f602cb402d699e917e4350073503843586ba5e760f8b967540009819dc953a99c392efd3bd82462bc1f19b2a5b7d0e44ddfc718cbe5f911cc8ef764ff38dc98ca6797d2ec6965d83bf24e37f6280e72f4923301fc0e0605f553b667ad58e3ee9787bd56083680bef594a2d01404a8bcf79083fad6c2812a06c67aa53994000f2e7382ae5a95bb170fce01c2076bd3c9a0bbb8a9ac5d3c1666493638c062afe29813ac51755e01ddfae47675cfbfebeeb814cc8cdbf00171ddb0943f42ca8b8ca71e82d6b9dfeee56166480904f7671396baa0dab7bfb4b8b3bb775871b9cab67cb6bb854980b12814be2abbeedc9c47578660f279b9ee714e5361b6c3cbe142bd224242a3b0a7743f31f9639e5433417be0aa529afd8095e3f84666893755bfadae2ad92f9b41853c844a9b875e20da5aeca125b27bda9afde2be72b15e438559c0b84143ab7c840c9245dc986ba8d577aeb8f7013608efadef19418d8ae4a45a0c88d45b16c2ea6dc9152300168b67335aab4cc55b5078da1770b995a39ea17c9dd039bfb8414a8b934c30b5417c833c767070b9128ce5e584968546dfd39e973a12b0e7b9fc71fb28bedfa5b436508c711e4335a0c1a8cf9925ab4ed6b091b14bb046fd1c0fd4e72494d490febd9ef43a7698e80a645774e5b84d4a6f2ef1ad71516d220bf994e9fdb98dfe73fef27100cfcbcb0642dafbe2cb7911dd88101ceb834de04e7947a2d392c735c392e6ed98462cd4cbfd79e11c9dfc54c8d28e22e302f44c6701be52102749aa3ee3768c151c794a8deb1f8ca3b2e2292305816a6fabc8c7c608b873f5581f22628e2e7bc6990d4953d03cea7e5e6ecfe40e5bf06907bd4e4dd3763600c375e5999125dbcaa824d7c908acd00b0988693f78563ba701dee9f51e9f5cb3345abd0b1015110d09b1663a415403cf5d9717f63884cf3c2f63ceddd5527d8b661b9057cdb083d4d99d8b8ed663f25d30402d49cc5561b4775e8e2bed1b380f5e1004872df4a7603e31f45c143b3ba2cd4d77ae67bee6ae80418989c07e657740f19e47f30f51235ec95a7cc2d988778ca5f9da251857e348b4f1dc757b6f07f62428e6416245e1e2222618b547ff7dd91c89c236bc6b883df210ee499e00b062c4b6fe51b00be663b57e0d27d08ef186c25fc5bdef44c4c2012d7432fc45017cc50ba6b9c7dced1083236bfeb7dde9ae8a7887615811f6fc6572c3c6569df4ae162421f5f5565cf2fa2c3c4ac21464a731bfae1713ebb140e013895da6067299282273cd7c827065522dade21ac94bd325be51047c5709db706da7284234dcf6e0c31d76544649cd5c590d36956adcab28c9d7bafb889c9990e94da1f899c44f9361163a052e307056bd04d07d2cf8d94bcb92f69ec23ad44f51d1348bbe3cab1206943ee97c61eb74ed44a12c17b76c6e65726f2767a3c130a38a93026030e69e337ae216ddc6de205b8f583eeb7647ec3778c7b1073b2b6ff511a8aea6de0116aa49277a5c461d1ccd2fbb6f0ec60445936bd0ccf7fb3f2165ba493b3a3de4749028840044350aefa7b0e8123233db269fd45e9b02c76388dbd081d7754778ebdc6d837d1703a724027a5e623e7d3f97cb7a4b5576ce7c6a767a624ecfadd054bcfeb6fc349d5548ba2c9519648d53e2310f4e90581203047ff8c5a5035be61b3564d78d139b5f780fc66db2393f8bd729c3abc0c0eb6a7b70faba734abec3e7e1cbb49fe2dc5011e823da3ee59c14afabb356612fe3e901e9642b787b9914f8a30e743158f91cbc717cc1c42a57da1be0191a5b3fd479cb66747d1f9c3783cf55e544380aeffebb979e4ed707ea6525927d8623283eabfab15b34b664c5a38653c91c51e6065db7ad753756a733663ba807f1e2947a6526c2b90856065d92a0c61230385121ff8a9cf5374f5fec6c00b759d6a5b4ab1374038952f9ccc8a0206f3c6d07d4eca8683627cf7d82bb8265ba9c4ad1750a6a894a4166b74bd051dc646f31cf542b949cc0462c3f90eec8b898bde55e41986c973c91f3216d011e72d2c6db5b98f8cd9e4ed7ab18432e6b9eef1013d0b18326e30c722e4430ab791e56091d11cf454f106e0f08bc1afaab443459dc110a0c630f9dbb6021032a59c1236d08e491e260f03e970ff90039159677ed105516368f49409492bcae829c754568e305a8e1a587bf050b7f78db685315b018fc4bfb20614791f53c6c83911b6c94b9381237630f78e75b4fdafc4767bd0eaef2d679603011a375349c0a9347666fa31a4b55ac30b28d5a62f6b60e20d2e57d3c0ba3f3ac703bed0ee6b6e96f775d09e66378e52cf617823368b06f71f1bb89dbdcebafd0043f9a5d0b08690952dd8c8ddb92c3af17f1070fb404cdf9d1529668b8d739473c1fd1c15214371170e934218b6e09a2c66fcf225a4c4b0235b03cc950fadd6b7b0f1b37841c5ef9fce57bff8a50185b9b9450ef9a5ec4f58e443218ba6a2265337cd8e13eff53c0c168d206ef8cd6ac8e23ae14d7d1caafa70b24f39fcc8d5fc919af0e2684e18d3208e64d136b37245ab065c54ab25913519202bc0225e200287d433284a9f4705473d495032380e275fa12f779bb378e52d01abd85637d00eb7b18bcd2f7bc8ce00e46391003c7087d86686bdad1f14a158401d2ea4478aee14620c0490096467f4666b2b3c02958db1b17091e5b904396ddf3524fab506aec9a1dad1bc8307da4d38e99af680bc607dee6a549b43ba9093972461e1ad25e15fff842e573f949c104c6984edbd45c7508dc5a50341cb92c229e1b881121e43a3713f1c753e1f7e413fe7e8d91738ceda5133f0f20765acbea4d36ee2bcc898c8b1b7b5e046616c91b56d9950c64334346a522cf2a37b9dc278750c65033291b505b407fdaca13710d57206c7f2ac18c43bee013ba10a38101fd8a6656eb499f8ed52c45555644fd65208871eb728fd48c60fdb8dbf11e275be8728bc9900ed77995a841919a3a512281114d455c5b81fa2ecfe40ac281df5c4ecbd5a828daf47b2cca04541c7b68d0419cce9931e478a293ea7450d3e4352e99e136ed9af5392c6e53c888ad7055d9308a169b171eb8636bf716550522b8e80ff7eacc4f924738a083983825cda8de193e8856eae61adf1ed1d30d3fa74802c86df5ab48a243c0434a01a3e0b3e24a34756bead8776800073f9558cebde028efe00bbfea11ac6d87656872461bb366f34d5f545432d1390fa9e3c29bb17607fcd6c7a73d11c69e99d37a23331f0d239228b75c78397403fdd0937b58c1d6e3a2d4399e8c1cfc174d01bbbd3cb683b8f79e7f3578c831080645124750d17a9672c564ec43041b1620bc907a22be289e85225d2fd9a3bf6109cc4d506c593dda9b95ec7156ff33c65a787494cb95251751f19c491a6b8d68cee57d3f6e67ab05ba21474ce6f485cbfad4058304e20de7420e607115957de8ebd4bd9461524506231d54a0c592d3acc5411f6d785e97fbe59d10bcdc37937a773da48ce7e216ad1d3d7aa6f6c29f61cc4bf3c18980a2237c6cba382c58a749ba5a64913f6734e5aefb6998f0585e37902f099dbd7fca5e8de9ee61135211d72f44fc4898333f17bd624d21954c1c0d72e82d5626954e83dfcf8a570f34048e035249646fa702bcb34634c36621b9e0d92ffc2dc77afbca65cb547a959406412dbf952ad13cdf89430fb368c52922488fe3be53a091b7ab001463a3e0317cc197ef59ab548865e8bc51bf4ac830b38f45c103926a2c5515e2f2bf537bbdc1230521d6e6e04e6204fe59ac45007e6e06e5635fd989b1d857eb90bd376312a339299eda41395a1290f375ed9524fe9e2c0b8590508c4cc3023a82f277b0146c1d2a3ca6fb128d54f0351d59c0f3663096b721989f8a083bb0df05738c49fe631b53745c5568b96d4f1deadea0de97303fb59628866bcd2c9e60655630b3f585ab9ac65bcae94a44915ab11d5cda8295a1445002c704ba25afb62405c979a6ae97d50723a2f411e8d9cc083dcb5eca03836940dc02225ccd6b15eeb45c780355efd0f9b7e3fda56ad9e8ed04a9c174c818d82f218a1f5fb482acee97a9846a2e8cdcea7b7e55e740e820a25b7a211b7b117358d9568953bb2367e84991bf19d1f04fd7c644f8de3455d88a8d6e9695a6a6e51ac6662ee91a057cae4b5d8b3a8912e5aca3303222c881d0df37b6e1b84ef4bccd39a4b8ca930b7dfaf4870234b795c6252826ac524cf7ab04b0cba07306aa4e5a2258748311e3d47cab1818144e9172d040f43972fef4aa570478762d69f0444677dc45c664525b0af05058d08e36b5ac661e3c045334f98ac024d5e188c00a1618c82522270c3ec3ad5e6a3b90289f18e909cfbdfc9f4487999ed2bab71674cee9aa3e6b1c67958d6a6c861592c45d48dc756d23bfd859496cfbff6a4439bb9b78a211a5d7016c930d27955a74cf7687bc9e1a645c47d65d0e5b25d5b370438277066de8d5c5cc0073f804e0b93208b41e92cb4be87ca31ded4737d7fe71bf082ab32ef92e63d02fee903b6dff893fd0abcf91a5bf704ecf10da0fa3d54dc65e45bb5a7163f5a9a9a4b96778e09cf73f9f61a521d27764bdd82d7b14b944711c01b5c980b6c02bc1c41906b44a3a058f303b0101813e1cec7ccbf559b6f6b353682a343b86041c9c497ac784f673d23e46120b77be9aeff58075bae8c192e39f4a3ad07e0b4ad6234b43e3cfa8c193bf924cc8dd08b881359178273106c078d2f7c07dfe1ac473ca6c232fe29b5460554123246a601111c62c6f4a99bf8b87f38a80f56a5ba91b52656b905b1e160835c63b8e7c1c6d4d3392e832d7a03746983d5e7d0f42aee4837a9f6f17093aeae92a9d5d20c119ba101501e9d9adc4a7ffaea07880e14518c21807ee1617ac0ef46fdf7f183a34d23863fac7ed4e72b1553397cb2570a3d0fb81fa37c3a9dab30167e965426ddd5e286935c771f070c06e85a4da70f7dcf5e00f1d821ffdbb4c35f4b13cc47d39f1a4f7d7d1532acf761dcc1ea2bc24f6b644a3a94ef04305a4e450811c1e79493d9439868f265dc3fde412372701f603917c93d491d9c247e1f4ee446af7e45ca573e31e5c77893802a324d2f6dc66cb11d49d88985234f581bc64365998fa8b180143b2ec7701d55061d4b81dea803faa4dc778df98c7d783ea4f68c3f5ba4f9f6e5f06f34585dfb6094fb302f6bb215d7d58c48b7d96485b1ec9dfd7ad0ca6a49b5137491abefea6a85e115d1d8294009e4841455cc961e147af6580e88fe51bed56f9fb7efd206d21e116da9e7ec5a28a735d4f241ace07bc8adef668f5572b2b51da9876e22d052a6428f4b147476803e3e6452121ec56edfb9495ea1d18ef0dbe49c8e40cded42e64cee9c86bd0909bc23ae1d0c1c66b3f465a5b51636ec07ac73e564c5345af0f1bad68116438357e74bf6f8604d25474595b05307ebc109c3a33857c1f4fbbbeac1be6a522fedc7b5be53e5ff0372cfc771b90cf4c032672c914c26015aa09c1db552a78160fa88a6bd10c66008529774c160df55fbcab0cde5600c61a1509c93b2c8fc89cd5419fd57a4adafc69f15b84fe050118dcb175d2416df39ffa77dc5bc1b2de0704bb396a5916852be4f941a6f4e80bf97f135ba2db332e343c04d611edb946f55bcbc2056016bcd98145520e28024bcfa830b99f9427b4a1c9f0dc6db9d6ef510f8ccb5fbaada49ab65e2d7140c3450038f23647137d9e4f9db471d0a8b7b36828a9ab96f6fb969ba061a492bdfbc61519c6778599f13f84fdd5bc65ac1858aaab7ca335c3a394a76e226dba0063cf9a316d0bfb7a01d7f37290d2b48756d641178d9fb0d8b5751bd76e29030498c27f382b751a382f0d2b9191b41acc475a6023f649fa439fce42404a4dbb9783461f446cfb3c6f3fd16f77a532851b5f0c5311c5fbe11828c26aa5af6d6f48cd526e50fc52f98d32b85c06f7d8c5e8a61be669e96d1b462ccd6548ed3d3fe4d044464c8875e5974672a801dcedbaf0309123be214328040600371b64d1d303b3887089ddd27361a0b87d0c33832edb4a900da3589c2c4f19226df9a8486cea671c35823256a4239885d3799519afac0b77cf7b10768971d7345cb443d78930fa29fa48408d51d4c9e88d05cc82411eba1549fcb4de220829180a3e02ff4cfa5b9c80630cec8548d4fd8e36d0100fbd51334a2c1310c0ee29ee11c103fe3ae462c0e68ab7c089da10fe1c645df0c124d4d84bfd99c33c2b5c89036936f78261262b7316cc852289dd0025d4d06310b79012120f4fb35431531d8d0781ff5ce980148789a4f051f84fc6f574fb9e70a26c3d80f5d893fe7b94b2a233af43cbb25680e7bcfe50a1c4169b3c3c97f1ed8da12d82b218f8494ab8dcdd56b4967d9b94c842c66f6225e5d58d711708039adbbd4ee84310ea3e9901e86c23fcae6ae3a62b9d18235c96e27ab4258ed4bb75c75407c5e05ed6c6730a4cfd7d65507a23d72ac3abf28d01b4e01327c1ba31041c7eb7a80d06cf34a07a33a00d4dec8bd2883fc4c8682c9dc46cdf7ce8f793a19c26995bd3fde15a7d50322e4933c03814e3c0a77ab7e207f5ce00ad8ec62803c4096a606c4f669827213f3168ea1402a4f497702bb06dee8cfe0f50c58119e32b6c9dbfa96e93016bf54b9b3c4114c66c37dc8feeadbebfbad93a15dd004d5a4791e1b57690899194d977fc28a03a1bdc2837f23ee30becdc75204818e441958ff38c08e57e791d81945006c6027d256556303eafd37d9496b1d6c91959cbb5408a649bb13d5ed2088bf0b93d60f9b17ff6eb03530b6e4fa11e98fb34b424b72d6b2db848a41b3319885a23e903e0cff32b199c6bde187c11c409ac9319f64591d961cdf2c5a1ac93347c101f4d1e5f52b81561e55cbfff65cbc194ef46e3991b4e18e6e5381617ee7332994723131f6cb7c0a9daa1253db6503629e30e8ec7bb853eb860efaa9ccb465b887fb601f9535b4fd9bab5a8d0a9f678884714b66de33d929f32974b7a3657fe15585f7692cc13075221e6b0ce1c476e4ad38803bb595fdc038b22c75d32bfa8245275583f7784529ad8d8d81fe52eb7c33ae4553fc350bec24b99bb0a48b2f9939cb9e4fa7490c25cd67a150c89869e8a91729cd04c5266930ade45c631342e1c5b054b897a3d874021b6bcdd896071b2136c198230af6076aaa63e6b3309a90f11a43826509f1ff879230d24f038cc96f50d68bb99dc839a13825ad6fd005cb91f14643d93dbaa822b81021a2c7e0e1b66ae18a3f1e17bfce66a9c4ec86e9f3b964ed1be96165573f1c051b2a4e169866c282304f91034d35157dca135d72b8346bae2c6a0666ded1fec187ed78580fb1b19acf9e067b5f47ffcf8901ff1cbdaed3ce90ab632bb85dc292d73ce7b4f2d9f9649b87d8dfab678cc114965df69406e0982e85f58baa94edc3498026c7b7e7bc3fbbf048ae30c12162079a1c2670a507f356e48a9b06f327865bc520d5a377074b14738425a2ec4b4956cb177b3adf48f8773ff626ec45cd476562110fc2852cb817bac56f1062458f999eca748bb778339e5c6adf5209f73e7fd78e8405f0af1c44b38305525dc03d53938e55a4416c84b16646db94b9549ece92954d9712fa5a0d6d539586f8a9ecda9a71b9c4692966b57dcb2c5912a12665510cf30019a7a3fc39a5d883fc0d562dbb9260221c24630839d2b9031b8f8f33b0b4092ebdf4fd9f4b7c262d828029010e809fce63d22b29a44e2866209dacc5ca8e05440403c1f909ddf8e60b51d84ae53061c2c1217dc54b477385f2f95dc8a7defd38460b477a28dfbe037a3d0bcba8fe1fc4b90685d805f9a0bdf7b6acfad858704e5af68fc8cd4c8047b694ba44499f4096b99e69db944b61db83aab13b4531a190c5ac03cc9e3c0b62d14f47a4415637665d101bca5f4debc73851645e50c211a0fd25cd826867925457b101805c8d3c7a98d88c65e1e8ead29f525959a8d31fa5b727200b5911cc66c64e659a77e084874b421d490f24e8dcc14a60dd2d2d0b598631ba79f0e6b5474754327086d6dfa62845e060ca8022aa41b713699492df3098b450f2027c6795c102c7738fd6f4d986b3e73c724f0e526f864bdd3919ac00ba3cb4f0e27f2d54ba8e451e905038018b9ebee7ebde4c32284ad4e7af53491ad98de8fc1640c50e35ba59ec72f6618293fcb8a4af075f880589201d89f2fa9719c393077a3ea5b8feeebdd593ea57a8a5cf8b226c5baab3a84405628f040059e080f13b8435e0e815a1c11fab216b852d1e2b7bf080ea0985fdcb03bdde003ab912c46dbe72bac6326c9d5fa6813dfd4b26402ee128e56c9ad64e9be99204a8334f4e1e1ca8debdee293dfe14cb6295a8c7524dfd57d447aa59f76755e2169e6078249417e8ef1c9e375b4a0c4001bcf25ffd333ee7ebc8517a5254327238289da40bbd3e5c8d4d5b66b0b422f7525b493636dcc7e04df5c806023468c132c4357f374ff8d9587d758698f7e94dacf7bbd0ff9baf5f17dffda684cb04e03f02d7179ba3fe5ed479b5a9d11ef15d26dd29951afd28503826f0c8341b170258568fdd1ae2023d4f6ebdddd071865de7cf9b425182046ab4df5ccd428f8151971ed093f8c751afd735baa4ee655873e38fb75aa6f6013ee056a2d5618a72f43de10af75a7612ffdfe54a14613f035f68b3b992e8f953d7adcab5347ca5838d8bc2adc8d685ee8c0a907f1c578689452df2ca3c5839fe04d5e5f1ca94c16810e29870443a5634c6a4c6953d72acded0a3d92c276eee84650c158bdbc7a4907c162afe6d84c4fe3fa00c0717634087ad6e00d9ed5437f90dda1511c6ae2b21db50f09b76c9b84eca056783e160d36d28663e0d9376dbd06b6592216346f79e64d0ad8bf3c554565aa93e597f0fe5dff547caa75036e8540ae5613ee249e40596b922ca323dcb6135a584b8c7ac5f0e5e05adc3bf3cd55495565472d7345f7650cfa5063d00a67c8b48446905659a7c351e9c5a777481995cb828859573e36d32b05d3e531d2238b5cebb21c459e50ee0bb57f4753d9e52d91229835c068227bbd230772495c6d59d2e033833c1d592ba650ca2846d120b73a3f8a0abe69a7e2f1ff55eab3c9ab9bac03c9675c5b9ba9bd5dbd10ab28d975261f1d9a2f6f2f36b45ac4bc9d6e238b9fb03dd446d70f8bab6c919a139cec5d7079647e9f59216e6e297ff82c6529a86fec006430649864fd72202494bdc56df6aa7cc9b60021dfe8df96ab48724ac6cbab384ea4de5f4f63ec955413685fba52e314fda2da367afbb8a65ed10caffdd9ebe8c4e483ae4a73677046b6039d69c88491b54d06b6625387b68da5ac88373fb89e248cc79d2121913cf1570ed8f60eb1725e1171b90d6e9ab6b0fd4756a7c36cc6bf4295682c5a7849570abd2a263ff341d97101aee0bbffd89675b98a9dfa695ba7f089b6d7f7de017fc27361e27f62f17bd6f916120ff43ca30dfdd5c658fc819af171c34a0cf0333e91f5e58d50710efc4b3cdbe42cb74e2874756f3fc5778eff1c81045e70a0f461e596e61cba8cadb159e243d9221dcee10b203aef0edf6c89e43ea151efe1e194db15de1f92935bb24885de101e723bfb5ee54f2349bcfd244b5c4af6e79929118e38a5e736d636c6f56a7ebb9c2bb09484676822b3cd8710e5778ab7b4a85078bbed8e358f83033f61045e8901d9e4520a32481746617d64d8b6a58f0cb708d9a3d1ea0472b7672c23a529c9e4d83b4e3a497744521cf09d5c81fe0b455588c616a559028622c0f8ca327cdde243dc49903b53804a92d9e276122b05bdaa07c442d958a7de83c708673084a3ea1cca2c36b6b25a6799cc83f97efe41897f0bb7decc658eb7711d8e08736dc2c963cbf0263da29b9e9eee3bf36220a6fc3239d1c2c7522ce594cc44272c65ac23ac0656044fabd578f712652092e06e75d1b7ddc4654f12841d0c298fc0513663b4681986be4ba28ddae61244bdb0bc930112b09616238081a066605d100737198c4f8cfe86b0311d3322c49c2f15b346dcbc6b734d02f34d3532a55861c3a5378c8281e620a0056518c319ca38057d87e77f0327da76a28f1ceca18cc03cb7b42df347c1b914883b65fe231e1242bb3033aac1b1910891d876a9ca33b04aec6d941265c58b120409536034e074a2868e57aea388d2546d24fabd177b5089c35cda981f7ab8850eda4767bd504b172fdfabfe05cba2ad2327fbd39dfce544bea1965220ebc530e346323586ae95a3b29f82be1dbafeabcf4d91ac1334ba56b92b3d68b525c808974421df54db3f6094901fd81ad7c9aa202f0e99b915964b01a4665f5c58cc5be34d7415ede64d08aae8c8aa05910ffa5b833ed8fa1bdd14f91b57151c7d0ade8d085c4e89a2a7aadfea33a99e915fb327e76c0dad19ad3eb1531da512f99060299df455ace45a8da1ac2cb1dbc688773f30a31be588b10bb043d5cec2d5981b2290eb6d4b10707c59c7ac8f2fa275535d2488bb4eaac3b6e72ef6b82dd7e0b2f89f04ba1ec06a180a5083a7f8490f19a1d8d36e13011b1f1aa14032fee0e2b1db905e97f0883b7c6745dc42b2f139267f86266007b2e87ec634374e4f228615def41b550c88348718a6106f744e279242fc1d2242b871949d31a43e973092e6db5a9401bc3b618aa3d5bf786bf580e1eb5ccc974e1794a7c1ba738dbaa241a141111f446a6b705f27deb03666d9a2f24137c7620632facdb10ad064c7f9845c7fc0f7b90e368eee5279249d860a53850b24eaa88f13ac5c37bd5835ed69e98cf0ac58117597e8172bac8ec73eb553e171a8a4c6b36abd68f3ec638daf22bb8326212294eb4042d9222526e26a266a3b6ab36658bc5aaff0fd9c7055ffdbfc4d1870e94b52ee193a9c6b767acb14fe1fd0e8f92bdc63241ae9a5f8434e43fa42229990fcfe5dea518c1c0b7c6b50fe21afa901e0d720d85151b9a990c2db5511025099e20c6dc6e14b041a64859fdce5ba0f5bb3d22321f80e6c13a72bc685584ef40392d33f407cfe736940d7700bba9d2cd7f48773734196c155d0b0ba0748166c944e8a548c9181b5917e4c1b445154adfd71c2709d3b5341506820bf118be6f58614d1bcdf738c531c218342fb4034934b41988e85d059f534ac4b2e2f47d2569f5fcc53606906a6327f227a6c6f942fecc8e4c164b37e2263eff0e31f4cc2b92ed172cb778d10d532826be4351eac6e29e3894c228aa9476e40442dcfce1ecd02c8ecfe92413991890b98456a8ffe303159c5af16f45ccf43ad4063c6f65478c05717342a83f79b232735231a2f992108b87f608a95585670c14ab1832d624dc9040b1d2300b721a786c7b68bb83fe8c90b7dc45ec4171385bfd54976543ecd6aa2a281a6d41acdd5a33592414125f7a046ad101eb25c075d0092c20b1d0971209bfd4307d0479fd959b053d5d264447028570be9288fc8705260f1e3470d36aa2d930a4b284fb8f794d0d54408cce280e7c7f796b08e8b779a36145b286b4600a959b3ff66ffc6075f722e1943b1da2f107785a0fdecc31636430b29929b98b34b8a10d95a843f8620c274182fa4f6c380ef76791ce6e1b677baf63e9f67ca657d257a1655f72b3a33a06d4adc61e2be86d1e3b35e977ef9953358f02ee6c64350b3ed9ed3bde7859f03f1e264ffe3a4c30c41c996c85e0950820b6c074c92e19abdb65790eaa870880d86e0cd9e1c0f8114e63ca854601208820e4347971cd1b9abfa16d1808336f745916fdd8e599c7e1178964e2ca2032692a0c8b2589268f3e942c127e16444d9947a319a1cb7ca9b79a2c61f301d10b26858463f9019f84901392b30525f4ecc7009e0588acf39b08e304a1108f2aef417781778ada455e5026fc6c216b3d12195ad2544102788433b353fe62e8d607b5ec9452dc2be78ef1732bd4c9d8074a21aa2e0f211607b896045baf2cb8c6441d0fee393b19ae138d54a5ea909a2e9785afe08f7167a9720b8fe806cc7813baab10e00f479649ea01834cefae7ab72127e2bc6c6fba6513db2e5610b5149c836d0623027a17036669dc0b9da9a069bc0a1ec0431ec0d1aea5b4a02fedd0e2d51ab91b2c8ee5014b811abad4a27e85409a0adb23f2ab2f4c121c38a3431c70cf6c8b2ad2bc70be8ccccb523a54a0a635b9e0090237a9a12d992e1890fa3fa7b1b08c02eb6336d93027310fce21c3ca6c0a617d7ade756634800adcf330741f5b312dab1c59c90702362e533afeda3c0ce6dda3cc06e06c39181c5cba8597b9369982221f7184f68de02e43ac9d66fce3788def78fab93d774d5ea7f41d794a3bc9559adc76b9408b64c09a45ae4187a3ca1144e1240ba1ef4ee0e52560d02c037b641b1601af0eaa19bd505913da233dd165eda35756e2ca30f347c6608501cbbb33683cbeb390fc69b82f8df4ceaf16e90d0c72b1b26419f56f4aa0d94dbb0198a90e3db52894ba26a8b0fcddcd8b027f48a15c4ed6d45f1c9af0bce1ceb18a1596c2ed3dcacdd152088bfff3f496b036582ea14bee5c8d376189c80aa727a118d1d3d29053bc33bcd67f0ad85fd32c4e14e185a8316a56b90c5685692beff740deccb210b0603f3980d36d07c5f4b043e4b3b221351deadb604b2a2bda377936684e335eb3e0eb9b7064a10d9ec5bf6c61c0663f5243eb095e1f8f5490a87abdb8e1afc7a8495550eef7c8b83c9820723f6c787fa87d5881347d5e579412b78f9a435612a1ca32b1057979914576e5bf5c409ef0990c049c00b7c1f2263b9d8e975e0e65e59c040aaefae1b0157e1c60f481314045527928d6443aae68147e29b84bbbeda0d61779aa128ba7a19db1b62b00b8fec2bd9044d748b68bcc2470b4010232b77238639210a0734a2ff2334cd7d30444d9a711d7b9a508254dd3480d3c6450297aed9f0ca04c330b3bba1ea73034e0483b117ce12c86ed2cb319881351c40ba562e473383f633f2c68ee4e5e6579fda669d247985b4a5343c6a9727a704ca6b44e161f696881f839860987eeb4f37209b8543758efbbc7bb6403157dd5a9aee10bac36f4d101f44b024f58ec099b482aceb0e416fbb0ef6cf8dd71fb5b5cd9c8dc7a5a583649ae1da76624901dd5f25cc6e5419b762cae29e8beb29be0e7d6e3c96a9e5623f7bc503b80cc2c2d05b2230b956975e111c8dc6008d9cb77a91181bcb744cfc6511e86b399190f31d7582b57573a70cc1c6e37bac520254b75c49baa567f93e8a326de9fb7e4b126413e75816319156ac68804b20d16ad1ed561135072b892e1c75b25c7742d8513413dcb937c2d76c727ebf5ace2799868bd93f14ad7a2e8f9cb35223bf663989dd4645a9b3e0febddc70b7b696203476b83fc47d241ba31d6a9e95eb914e503337d8aa514d545d817a2acf62cb1854a8cca5890ba2bfe9c0515ecf248505aaa0f2700b56aad3aeac248f5e3fa9702db6292831d9d6c584afb12323abab4c69d375d4cf74bc847df44fa87c2ff64129dad1e9aa2ad2d49a779479ad7d4978a6e5122f43af55bc90e3770306a22be9693a631c806e6ed3768d4b929794563340c33f5925e5ec11c1ff23476b6aab404117a93856cd59d5c7344e47ce1d6803adb3dea652be4c6be68f3993753752386debe2d2816b1f05d817f32cf5bf377595440d9aa3343e8e530e965d2ff0f2074749fabe3ab537193bc63a8e0a032eea415b8eaad238baf774757df2908655d403c11b2614c592f89beecb0a868a4ad56c2547d77f1023a0f3487c9a7e5419d883159ef97034cc967085fa02cccb7a80852e9dd103e0e3473ff0a76e3d814630839f6dabf22a880c87ccde9c84d4188da1a5ea70c92dcbf3ea7af3f0fbc7824b35680094547ecb3f39537021e14853625fb1a6c0c723a90d0614205a01511ceca54170cbbaded737d58c3f922cd3a43bec1e517709ac8ed0fe21b49c65c4b6795b73a6f53cfa779e2371a7fb886085b1cda7545dbbab4f4f36af4a17f385268c71a6b852df421ac6c80cbb40f6f018dabdba04db3dd370a67ca5f8d586b30033e5c5d5e15f78d9c34bef15af787857ae507a6ea85c85e42b3b68b86881abcc116047263c4aff05221039340b7f51ea7ed0c30ad0178ddf7abfbd3f7431416177bd0bcac3f0443aff104465def7655d621c69b76e57ed4ea32f6ee1140fe227a5ddce9e98384884685489c571b4408ea0a955c9dc6e39f5a79057275b243ecf9adeb86a9070b159be8e64a6a432d11166db28c954dae82de6f14d4a9e03b5c2b08f19d7a82e3286256f4a8d4b54f22478308ce926bcfa7ece41848b4143e923dc705cf103970e414b3965b41d66a8e418a3b6fa32a99f3f97d7a46e0701de1e49cb29bef33f50d188031d902ce931b733d590139d5e1ad89af6f9799b7e2ae63d31f8725120b080608ec1b0aa9cfadf458601d034664e6129482b000ddf70eb03b101afdaf4ee4ff4c0f18d57189ba476d81ba1f213bdf9dc8cd9c954d20e12db2ae2aad590721c8c160d673f634b37394185aa3fdb914d08a2239ae6366d7459d9d477e675c8dc6cb12b1794e0fff8d8cfec7c3180852ea08c179a98d7e69ff30abcd097f5cd537746d156cbb13ca385757c67b200892010b854800075de8fd886834ee78dda7a4df5d3353037a99569023199b05787a3f118d6683344ea0b84fbcd640c26b757ac208b8b2e8dd59fa8d982bfca4f7610dc04f47fcffcb7a9cf898336cef88e5102483b90bc146a53d490a9107d4d30bf534e501b8a0112cda8651dc06b47a0b015a67342556434fd54cc096ff74e51a2145f765a4e539cac3cc1ddebbc35434e1d6744dbfd4c8b0b71b38c2c42201af2a62e087254a73c60ac6dce04cd78df9ce8677d3df1f7ade24dc97f4bad24813f2db760c4f39253143d7c1ade6aa7fbf8b3843eacb3e1f9f76d31bc611bea4ac0aeed9b015b8262d42c1b192304ddd1283733481d51e0009b91d330f85df19445cdfbfc82c8ab83406751ad959d4aae43ed1acffcfb1190940a3baee0cbb1f96c63cb7ad6183965c0df590e12fe11fdccd732ff9c5996396fc07e761f1b2adf4e241668702b2d7d4dae5859262b970dd73dcad9f684b053872f7af781a1279c14f14e854014c2ef435ee5465b4ddc30b009c6825ea43efca4cdc698134c39d921e6b61166a75a91fde01776a9e1ea9ec2f60f2f24bc99b437ee715b95b7c49d40a91fd2de7a5cbf5dd5580c8269f4d28f80985adcae14ce66471b995d67e018f645b3e2324f15e9e9e243b48e8d96e01fc566bfe8b3bc10588c13f092d475b8944ec0211fc019e5b2c813f22a09f88aafb243d5b79acf73e920ec1dcb716e4c1e64b3fd4632c5825f414e15aa995ce8ec49cef02ebd230c2469121684f671e83ce5170a6628444ba4eeb356bebd209d9c286e2530f8adf2513d336f78ee318e926de3e01a03c6963b7f663580615dc5d7a938f12107bd798e390ee41af7ecf0341e0eb40f7fb99e259426f373ec8e1fef2966f2c2f8e4035e6219768a2009e3f5700df8a6efc7f807635825f083f8b3a2b911a08669dd5902f0dd883e56c6f2661cc3c418d76bb728c7cd451986b1af95e1e1cad3efed072b464d70d27bedb7e7252e83b90e27ab8eeca718c4974e469dca40a45169a170d8219ab303ec7b2d48c960e8c8382909d202cb2de036825e64758f4308aefe5e82f10f50a4f1d0f87899c67fe2a1a0b77e76c8cc195ba5b929a92e534de49064e7c452848de885f39085acc344a3061b5827abeb9969f65bee5a46eb73bac2df4c2614afb025e58120030f9bd39cb686dfffbad8e6f3590590f9bc5604e9cf43601c3c7290279c1f42231360c742ad599585a00dbe7afa920838f86e88b21f219631c2ab164b75759258eb3c74d1e5db7b648e86259064d68c8b51ad60700cadff8055912d7cd3d253f32d7005ff61ecbec5050bc8839962e27ac040597882328f2721041a12f629ef83687bc1cfe4c8266d9eeb1516c0d4a521b6ef853420e69db4855687880923abcaa03318b91e533c4d08d183e9922d020c0e1eb28e562205979815aada5c94c70d214f46ef2111c7793a1ca489a328e75114ee03f5089c8c112870852656b797df0d7020d69a41fad6dde21ac9228b001d8d0186930ba5c0c5e53cf8f99842e17c58b069bf4d0a7e706e18e87396675b9c8d64ca87c0ed4f5e86dc580121cd3ecc67c1480a971cf4156005e481ce5e29e0f78d19886c74548069c6479209a8618b244b8d82671407619e0acb97c39335bfe63061096d1ad2060c0ec52ab90d395e172e6b8b830f0829f71b96863776f55e6a168cf3071fb518a72b4c3ae1a2ba27231b00c6d9731b0f5ce3e24c1dccae52290debdd36c97cb4547c93548f63931fd8f0a567eaf825cf77b460a854a73f931926c3510f293f49dc13766ce80ae0de83b43fc4ac45afe5f7485c28f173b09356aaed54e6cc9f300007ec8cf9b112aa5de8cb2e664925a6ffeb2d7e074ff00a7e3ea90cc0754706d5f89bcce078bea3f232562dc0bc18ba6161e67c400ef632c96f1bd06e6108082bd47026a3c46cae9239d300b908f16039eb69b399d88c12f715a47b06c2ac2a22a014d88b3e0dce9e100ca5e71f440668d0cdb0db61fc81dfa5d4a6e914c600d2041023bdc2490549cc58af9ca09c2fd99ed4dada81c5c1145f0b06a25cf39d209dd1006e430ae26a1290b6ad14a4c94c3e6eae4bac0c92550a25b23133023ae1dc5eb3b96a4e202dabd9a18c4316fd15a2c47fb972d05e8743707a6d86dd349a58057aa9922c7e0aa6d9559bfa8f7c2bf5d4df1ef5216ed1764a57fb35641a7b685637c9f718cefd0879d4faec520f8286a3c2da5e113cbc63ab9d61835dbac49362b7c7d900a4b6b0cdc6b65967ca0fabd08598d9b2c245a8f38fb583efc81fee4aef491a1452fa154f972a98b8cfd84bc11c11f841d3cbd3019b247b07e6c80b20dcbc72b27c97759749157f69985b82cc32d98616f1e7d5dc962690bc59a812e8f6e6beca3bd83bb56d8e234e5e11638511055c58e0e2ca937e4ae5d009404ec1c26ba34c89b69e9741b792bf631cab9957b5cbce093a06b5112a794db577c54ec5325881e6316dfe19ce706db4923f430ff34720ad6c2fd8fb891206cb4a3a3df5688ebd250138fcfab2dfdeb15a518de2de7161e2752c91032b1c32fe1c86787d1d1e380bcdedbaf864d7e079a77fbf80ce36e41c4af7ac5aa804198f2687a9409eba262c2ef7e77ee4752acfc96b0b045545f82b97833cce4cc5c43eef4f9acb8cb9f83f217865efe4b3e26fa202595b3a1e4e6da904905539295aa09a11b50ffed4e1ac1e6a90a3605f589ad97ad62cbe3434d372edfc7feeb2ef84fb285ba5db5eb2f65d40eddb4e646824b157194777760f28a6e83f615d52b0693ff26564689bd2ad1480bc1e79a2b01cc3ef0125e646f8648ac86cfe3584653fd818fb017f8a5f72bfc1519220d62c7fac462d624210ac4ab617c31c243c1dce0f225268f1d16f11bd45d7effcbe83d8927ff6a396436c8df3dcbfd36e2776c866aea3ce877b1e3a738ba8c85435152e9f9edc5ed8186d548b26fc9c040e14bec2abdfdb12e507ab6b0dfd046f45ad0ef29295ff8f8563156606fa01f74df5bf034427dd6e039cc180c30b503bd170d46137b0e3a0cdfcc1d87ce1045e4f61e234531819d8309ddf01a3a6325cd7f620d9f53d9c0cde89476a32b8167cc1bca39bbea4e17d9f33f9a96baa978f0403ba764c8959fb264412464a5dbbbf405ccb8aef1b434fc0bc265fe377b90f7d991884a96cc3a11efed66ba3c27c58b70736e57869b7b384133c2e5ed6f9ee5b0f1c4de7e57eceb163041ac6f8ba8fffd416e9a7d140f3730c5a6bf2df6eac3ad680c6663caad909d1f6429cd84ce7e41f6e687d003ee7330641dc054a88c10330a1ed8b5a445bd80984f3e1fb0dd232eba6514c1f0b353c734b45f14d3411f5ddcd983954127e77a10282e5000b4208feb425234541c750d5799c42dd2c5ac5c2f9407d2e3594117c3af1976db0cd47d509f3274b2707bca022f9868110e97d82920ea51231f8e2d30caaad37a3950f7ea27e3e111bc00c9fa541804734a08b969eb0aa8e046f700613e0b11903b5c63e71dff129d5e6375a33178430638d349c732145c6077843b23b8eb7ecc900769f73d4a67f7444b6f4eb935e7330f9c064830a605d198a0bfa364a6683233125c6cb37ec06b7758adbe745a08f9542a0c2e9a87e7d393030cc165d3f7a08d8230a1d3b120d849597c8bf2fcfbbf9ee35929141f2c519cb5107b98047c40b7b2f9e81c922f4bd5c8d52b2761fbd06f99380c5a76dc679c2c098f6f990ddbcf0af2fd6dd0391155333a539cfbde4733a5f4cf30a6e924e094944035df0b1440691074187a27ba59d49c9bba952bfb9e22e61c2bd357b9181928412d9a8521a697d33ca9343e582d06733e80e45489036603227fb0d696ee7c7e74580be71cc1a19769fc0711560ed10aac7c95fb6e0d72a88fdf79364c67a9cc99105a71ca8ac0cc4333838d4e5d66bb63c21890a3a541f922e3397a762c396e266473c7851a1079a5fba18e8af58bc72119f552f599e9be3d4ddab0763e033fb59330099db1ec78878628c0f46c12030a120adc1e3646cc744e0321e97505e72d4d515a33b33d4d6250b56a1954fcba935e1d5913d61b02d17eb69de7d0d87e6ca4dcdc5fdf114c301cc3bc571f7eeed67abc7c43172c254481d5b150e3bf7493f7cfa782c29bee225ded1dddcb28455a83ba5aad0a07a7adabb198345b77da10052b03611a2ce118ee3f8a67cc8422b3d1ba99ff20ce51044bca134260d83c0e98813569b0eff991140b1cfcf79a49d9a1b90b20b544bbff835ab61e45300c403eaeca1fc9616041bd64641153a40171e64c0395ef2356972fa36adb2c2444cb5fc8dd721b82443b138237951df0519a17213eee13aae811498bd903808814f49a85cabc8215c4545ec84215f6f53fcb16eaf705644dcf1bc5e55f7363f30258f9e96c8ccfa0f87c0e372354b4f29acf603fada9c919c6cd3a41fa37a51b6f605aa58d2649058368097d6201095759198efe7ee29b6ce303b996e31f6949f111f561ff4840afce93607c8d1f16c31d0544546980d4632d1dd79c90004f86eb23fb47e51216e46bdfe82ab29b2029b8ed5d8920b92e92946bfbf52e3b927216a15d369367b2fc3e838a713704d428a7cac8fe4d371565b965f92772a71736023c14b2ad452863cb544fda44c90d493a15a9d4c062b588d4967d3746113e1719ae2a25301a870eb8c5a998b5bd557e9a291279d39da0c596f62b0fbb50d14a1a9e9658c064012ac47976b1ca8f6abb0c257147a27cb667ebbc0ae14650b696ad5972321cb80d4e4ca66344ec924517f8317cb801eaf539f8524a4131dc90d8b37d815d8a224ff9adbe44f2756d3103c8eba20b0aa2d04644bb2ed37228f422f401b71f5c174df6bb1ef93064bb5d40a43738010edc0554840390da81f01b48db2da67cf2db5347301e2e754850540e541bb4a9be49a7bb0135ab13800cc1fb0a0e74ab9bbc9f15d9fa7f8e5a30a4aabb57b14db75d341d08152161ebc4aecccc7237ada3f6b3b9380f7f5dc1de9058869a6ddc8a1e351420197d91d505f3ffb57804d0cc8030abb197c9fcd9532d191182aafbacf348ac9e28a9bf62ec409639f08ae8e757b8aa4ca0c1a15328d61739ceac151d1cbd03551cebbfaf34b2e9f1c6c8a1ccc7bf7e73745297a75a313754016c25cd1b55803b9c95562e7dd89ffa7eacf29452aa3c6b56aa19635be0a44ebac5a9ea6869b2d5310bcba77846f55cb5f918ba183f4791e435cfeb60f9e57075b6ce932e0a94a2f5fe76ffff8143a972e9b140507e57aac05acb1b83cca19ac11a8d6dc289e925c0670832464035945a680db8c23d1f7373d4bb53e06c4059716589d0e463e92cffe1987a0764251591791d3bf124d4ad8782b771a62ee661c0b7e8e13273d7ca26c961224d8e52e3bcc9ff478429ffa01bc87f916edc8a910ab8fbb3db964f421d1fdd4718b4fcd60d764c8876b3a23e9cc43e3f90a71405278fc0de8806a52a32a2a2faa0c902f011530ea17619022e870a473f15c626966f71321257fd85b4ecb27454a0aec3f51a7dad42c8a2aac9c17d0c39ae75c3dbcc67705e8a5d4e3941b144320fef2cd4163bd4baf2ca6fad813bae38fbc7f8033e5dcd6179cfc0fa7d150c422ea46023a0ac78be982e897be135e3fafddb08c2b7bee9010488467f1d29dec6e9fb6998a9d2edecc649c6ea0a71a610639b19c674476d31d356cba053ba5deaf419759700c0d969af42fdc9bd3da3d38edd895492e5d5aac09cba68f0f5354011d1342c90139aa015ab40a14fbb79f2167656c6f57ff4fd44420cfc5b60c3532baf19101e1849b746f28e9168f175f8259e2b6b10f89be19cf26cc63a1948fa2832c5d5e40740d3450186c89d59ce4673c3a2d5a3b1d97e6842c9fe994b780b81b4a35310c912ef38718c6064cdf1d51777ea0449ef053ae1dea9299878ea716eb260c0531389db1f17a1c10b6ad27eb5e33578c1ae55841beada70c7cada99b58620fcbc88e67405a8bae827cad2e734d86b302fc31288fd2339f000504ae2a7d8f604cbc483cfa9dd291aafc786a50654522dcb548162f5305f74e12624aad85ab2e21e24637f87bafef36a602da1de7a312cac4a4e370162da18e0d817e55fd82cfd9fa18f348c6ca1c7b21dee6971ca70ab3d4a175af6485e6cd1bddc2e25e23e5c745dcefee8763993c5a0d175151623ef953d8429323716316d24bdcd6c560f547130977de37f45dbd58dfc865ec8325bc54efa2c2974220f43a84ab9d114b728fcba281933d0b5b739a71b7dab6934dcfe936babf2e585204d0204939e48f0dd3caab6748827f31458363c49c4cc836e37a042d34ccf7a3167945d22b623274c84ddfcc4ae5876ff057adb900d8fb5c4d743923eee8026eab6a598af546c8115fb7e2cc61c3e41854ad37007d0e0f582e6d149748f46d12c3a89fec071bc0df37742def134f02af63e03ee56b46764241f642279711799a53cb62f7856c376a937258f4d5565277dfe73667e52696e6a567c7cc54e31971733f252fa5186ca9405c8331534a63d7ad74f7404684cd39cdef7241015ab6455f276aaa8fba80b39fd4e799f81bc4cf4048a66ad8123aa5bb5280fbfe403bde1ded0cd0c80d8be100239ba026c80bd44f36834ba43af6816bd44f76815dda293e81ebd4277f412cda2d3688e46a25bb41acda1557406707cf34c6fb3a07d12ba2a064b1b0146d7800c64ab681ead44f3e814ba011cd7f4a4b5174af07755ee8aef1316a87c03f5d462bc08edaebde2b70e741a073d9f00e9e855172fc5ac782deec4aa580339bef97479c3e03647281663977aa7cfe0ba81dbb024f035445c5f731f360a27411358e2097e936f9e11985516799779387700a9fd271941b2f9b72941f2f437965b0d434bee567181973079ff4b5cde2cc1c70f82723a6191035d95f0e1d0d840f8ccf376111ded8d65dad3e6528f616420ad70ea138256742dbdadbb941be9a98e7d19415b3ad349767a8068f6d015935019ace9aaddaf88217031ea7a47a43db6a0001d764385c2f30432778c81bc009a5aeb4116cc0a4a47a09f46027d244b4f9b5087cfab6dbd36c3c0228d09f45bc86701561b588ed456a5a9b64f246073e9dc495e7874e701c9acbd5ff3b133a9dbb7ba0621d71adb60e683bddb20908139e60fb7db815aeb7af0b6ec193097fe591b826ae58f5a0bfc6e5f71a2187f713703ea61265486885330145d73e21df7f2397cc45a830cb3bea5e8d9c5a83d7ea61a3f28013cebe608194cd9938e2866e5092c38b9446ed181f2123f70a212f8fa24e4290c335c7c28badf94bbe5d8229af740f9db35cf1bc38aaf50bd577d06a4b78c4d4a3efadeb0e89a61dae3b5aa1f04265c5f42c87418d80bda8d2d573a8c60e13bc7654cbde02f33594a05a186ef7e23f8e1373204819c0c050240011514af169130a993c5b472bdddb575fe17b75b3f56a9a0a843120d65c8339969acc7b624675d04ff80ba60889f8335daf33ed990194e33d70a7b7d6ab59fd67cfc20624e4b1e11b176cdd19956ceab44c40611134f5d18b86bfc158cdd6393fc12149941a705877977c6adc00c6f0008b5e702d4712305a55ae9f4eb9978ef8f906d099dea41584c7abb80423a3e44051123f27dbf300fad398db5cb3c30b0957be6f17afb57468e5aa1b1bc5126401545ad739d11a928d98fa2bf028a2582901a5e9997ce3d8ecdca9864a8f0416533d93b724c978531ea1b48a34bbb58dd0fe822f51457ba8df458824c4186c0b4ab0180aec670191fb107da121b6726f839748f15b47f05d69c87c3c1a04bbf2bf1420301e619fa08d22095078a13979b82e10512e16b62e3cc074f984e517d525f71565f77d75d77957f73d57f7e54de7295deda14befe569ef226bfe6ae1eed5c3aed567ee556bfe9507ceb56bcbb513cea59bdea953ecab5fedabdf4dba92bc0bc38a4f9d5d23c6d81c0838334588aac00c4bfa0fee3a88fec6f76e1f5d17275b451f273dd1e77bd9abc94c0e54c89ed5609b76324340c029e7e1200aa577626942085a2ae34940a0c72190947ea5a53633050893219c2a7911e5099f14a97a8be5b18431ca9e5e753cd263e242240e3ea5a2f4d187c99f0d7ecdc0c4de41b3691cd9ce6de0c0969672aa7cfa313382101d14ee8c79bc486cc21023a8879505f5012dea60345742e1f2eb1bb3bf8e0a653509b205fc1846d7090a167ac07cdbaa8b7087a633ae924326e47182e885f4721c834940188259602004418539c3063155b9b99274737b3a0452a34f7c223606f24b36dddd6f6de5b4a29a54c49ca7e05e204a10462122afb277b99f971c30a50a0880ce9a1c9583f562da594d215504e36b55fbfbe083e04f0b4e2285e9c1055ea92b0a79452aa67d450fd01d50f701bbb69142faf1dda328a9720ee8f9704ca569ed1d5feffffffe65cbfbe8d21cb61946fc070b842c081ab905a5930a494b4e0020a27fc0e2c4c51e2d67b2d0a76ad1ad75a6badd55a1ffe1384871ebb526bb3cedf64d054538508d2d581ed8c3b6a152d967aadb556b101a9eac076c61d950714848c2c1521c708f57a45a1d61a63d75ae92af44c34d7114ff060a8636badb5da3afaa8b3c38a18c4ceb6b422fea03a90a2861ff231e941854908ee922fff1ac98916f5295090628a2e2b2c1143ab0619ed75f018dc064cbc0eba999d71c7ceb502c50895b1994b91ec96b20dc272adb55c52c85ae02d5768247cb3b5a328668f40acc48083d1a977b3239d9d71c7cecd9b0a3498d0e449151713a91598a882c892514a29a53a356fde9873ad593a163760385c21e0a04eec8d5c8368d1b96ab5396736bb62ce395bfb0327d281ed8c3b766eceb5e65168cc993aa9b9d68dbb01c3e10a01874645b684bdb1e5a56d2e2138cde6cfdae4a60ae69cbd9b73ad55df6aabad59cdb26cebb5f95a6b73beb6de8cd423d79cb3b537b6c054d7076559b6d9e64c85cdb9663973f633286cb0396719a6d4599073ce39b3190a2a152c695d4baa9e675c1b5367de1977e019d7566c1d4b13402ef0e5c70b5dac485549e209912529913ec974db01080cd0008624529e18010315259985192a495030440e2c60214bcdfe24220258f901849522eeeea98b820d1c0910620e2e9228533cd100b06594298e4c214406193d48d084094998d8a024872106b041131f7678c26564062498800b54f8c06498c288150e36a8600901134a2c6199c0b2d20b09acb51665420ff4474acaea060a50f902e4c7a502f2d2b35f77af614a02a861d61471a4c72b75420d41182162c4088e4811c5061da4f41cb96148ed000c4c80448812c4e00718e0fcdbb0bfd65aab1217902488e84102c48f1a9efe8d196cd685b10a67e9ea0d180e5708382ab6f846102da8eb8a3f707f71adb58a60eb08fb58eb101b81ceb467e05b31ae76c3d3daaa63250827a3a825f58287900a96248090dc20d5254925c25a6b51995f31028b0b2cc6b2a57465ff7e5dc342dbb68ce2c40f5bb4651427acdc2a291b842051032127e8e004893d41ca7e5ab198fdbffb087181e825c609715d1d36694b2944008191c870c5952ca28fea0911ac64134768b8d60a6c6fc070b842c0612d6dc147151a70516107198c78c10c3324d1f3822a46500494180a3384100313a04081a58519a278198678132fc14e902944f0a58a164e107244c90c47940052c28224528861ded0590981177a438735ee7efdabe94f2214aac341e93a008c2503177040410d8ce0b8082a125ae49fca92a0ff2f22838afdbeff475b4af1018847eb4790218e8c5b461360982826de7651b77299a1d34c396023e4a8a3560dac8ebd5aa6b333eed8b9f71ea1aa4d69c8d6be0b0e80811455502f9800890f1c6a64d3140b9bd24b2d10eae4662e531dd8ceb863e75e2a80b8c73c25d87085104dacc072c30c5ee881e43ab09d71c78e451233451873c046c891ad0592e56c5950c3040f2057786090430a56e0258b0b3a97fe6836d3d91977ecdc23ff45f60fa1c1528a2ffeffff57c1cf0bfbffe9df2d4cbc2cc2980336428e4c834e0c0c50a4b29d51f3961846d731a536671af29d21c2ad5b4e90c957841cb01172d4cda763dddc23c60a6c6fc070b842c0415ba0f41b7b002275020f33e08043bf854d61386312a5943e01d352e0c00a55fcc012450d449460e1892956a6e41bd76e81a92e6b575881b5d75eab63ba392b4175603be38e1dd50dae18f1716408d51301e21ef3f068e20409503218020926403e0545904db3b59807ce75603be38e9d6b75ae942956a33c666b75fb410db521216bc8eda191ca1a1afe32b7e10f6ffa8536fcdd4d3fbce1aaeda7f9f0936bcce55050db8674a1310c8d20ccbd515adfa7bd5866dac6853c58b5323f5c6bd86bd5734e6de36bad6006a6b6d44d4fadde340ddc74a6b5cc35eddae767b56b3aaaf141e168fbfc7fd2556de335f0a3ad60f810d8f6c43abc59c29bc58aedfaee096a22aed285a2962676d95ad49235a69ea09434aad6c409d6d10a6739495923c310595d6a4bca231343753aa42a16f2b56cf9413f7e0c08c61be9b0ab9169a95773ce29a7cf39e9ea8a578b88ae3c07a9e869d1b22b15694a390b649c165a93d3e79c1fdd33acae24bf2f7eb219276b4d4e9f737a74f3be993fccdae1cc6a463593daaf49454a2d646232b1bf9bf47d32df37e5fb5c7ffa5e1fec7bfde87331e62fd3364dd33cbacdb98221fee9553ba461b988fde9358baf53a578bc92cc179399a150b6a6c36d7f20ca6dfeb9abb5ed627c47f7fb62dfe8035133367bfaf58ca789b4c6e58856305e305e1c97a38373ed1f514a29a59452fd413a3c18476c6fb4cdef3749b55fcb9c8eecd730abfdba7462016991f9e2a70765626e2a4226b66f28d336998cbb3d3aaab2e11f08f22ddd7492f6eb7a5d178872d37f5f605491345e7bdf1703fa6230aa8444a1907e0da38aac215be8d7f30bb5f860886e33d2e26284218e40172325b5f6e75c9ed80aeb69e767f7e8eb8921816e4fcb7e1ad1ca05156ea269edd71d6bbf86f94a9f7c1723cf7eed89a9fd7ad5d1a8b46ef3269d8bd14d388acc971994db58fd1a86f83731fa618815c83831a08bf14f57ba5026364e2181ba4dd52fca345bc07160c04f5ca29389c100f2d3eb1097e3694db429a0f3b468a4455cce28e531e8a8a7270c979b1e06909b3e2669c0c04174a18b71bf0e6188fb350dca6dc22fb67fa4c245ccc517b7097560fdfa8bc91a727feb4faf4317aefd2e5efb3f289489859b4cec6fb2fe18d59dc6c9e94fabe57068ead0d793b5d6a214b5a9de5a1e1c917d53d2a054e38be534491a98ca1a78ff864fd3963079d84cc388165faeb55fe70797c7be3e74f3de7b65cf7f11962dc2622a7910ce4da99e2116b25d870dd8fea573bd84126dea22443021794f500444179a4211cc26ec5ab4c60701d69402bf333065f54f8a6e9ba2d66072a6f4bf3deac4db9580ddb7471792dab5dc2fb5f3406a4d5db2556b9a4b829b948ecad7e2279fda7bba3de5cf1d6aaeed9afe95ce432f68fbefb9ed77b1b8a95ed8d329ddeb0d853cf68dedf061af3dff61137c5811dd7dddd7c694d4faca24c8eb9d964e2745198ee8b8aefddf0b4782ea4a3d70d3c426afd55f7fb8ed5927ccc66e9aeed2c9f86651cc58816c794114414d88301c8cef83b5f9cad82bc2dd7c6acdb26c73b5b55ee101a01b8a28d1436cf9f027188292a3cedf988264de5463caf70629d5d21cb011f257edb52cead5c1445e4efcf881092aaeb8410c38d4c78a0a4ee868a11783630ed808395a90e90d180e570838aabd925d7bad2542295d41b539009f5c80491660ea283d5244d575dc340ac08a0a56ec6ccb283d3e28ef8a17964029f1a307289c30810952168a13c921242587fd1aa6a44d336a887871235aceee3dd203bdd4de7bf1c53d7a20b90e6c67dcb1135302297846bed94d3151832c2770614a0f4794a0051e0f4b8c360cf143882c4e8a7810264898f4885e199710c4305941162d0893274ca8b04892c5ca9f262e3ca1431439f8893d0f351d6c19db750b528bd4a269915adc967f19aa18ac2f869218ad19166ba635e3c4b58c1c8305fa78332cbf3dba1f9a9f6da3f1d91ef3ffffff1feaa03450368d1337652390070cb25d97c0d4761a289e169a189a19d876d72dbe99d69ffcb5ddb55d7ba2cf88db7de667bb93c019d69f9ca635f3e00ccb4d4e6a919c907c3c062b46cb6daaf6d1072a7153a66da3111882ac910e41d6766deddc3199b6c5c464c9c5c80db24025a04fad3506e8b31d07e54fe278ef43f7313113ccc06b4f6ba34f7ada8331307aeea789c1da3ec39234c62e94a1628db40c95f63254db75cc178240b5757c244cd7588fbc2f7c708667fb4c6a3ba9e5fed2563ab5bfbfbfbfffffffbfbfd3af73d31300b565004aa03ce8b53629c0292beafc09e54fadf5baf60421346d0fde0a08e0213a89534456db3dc4b82b4dcdb72d35cb2aa5f4e5f97850bc1fa0aeda5aaf76fd0ab9acb512637cef9ddfcc39635a2de672aa9638dc6d2e99fa7e3e96582ddbb2ac3ef17c240dcf5e19960c36a50b4362e8e5362250c8153ac26d421d54e5daf3a1157ffd7a3c9fe7d138577b3e1e14bfb9e0ec3c1f4dcb3adb2c3529e5f7da86532925d614dbf0cb5920e35c30247a583098bd44d7765db32d934147b54675cdb6fd7ab2564047ef672f8c75e6723009337b8544cf27c827ebab7a6dcf87db52fb0e29cf67bb9e3ae46048f40989d94bcc32def8c3b6de8f06677e76db3af3ba2d746148dc1e12ddf4f337ddcf9f5c749e1d76e2ccaabd38675a88b4ba0020f2838354558282363705717969dd8895743388cb4b7b0505e1ad8391a6b05d871d6c0f9ab64a50505050a84b15b70a9a02172444178a5e415c5eda2be887cb9c73ce39bb4dc2e03937fcc264d21e680f5eb8e339e79c524e39ff73a8b5eeeaa4b6f176da39e79c737239566bb5de69ed94736a769bda5a2e675eedded037b7a6fd66a77477b342183bf745558d79bad4f65a5935bbaeb0f6a38940d7c7ebbe41b0974a74b5b46cfc898ef8c937fe7c2cb917f65af9cdfd115bdab5f256cabdd6321e29a5b4524a2ba5bddc7fd39b7412b45a4a29a595525a295fea2fb25d077153ae60f8b04f7d4cb5ba2c9aa22c2c335bd150146ef21b21d89f3c889b5c4b6dd7521a8fc4c9eefecfc726816e9e1b9852faddeb7b5fb4322252fd6f147facabdfef9910c6b57daa69b5faabb3dac6dbebcab81c911149c3f5fd442ad11191d8852296c8c76d429191ed2c25a296db38719b50871159a386d7a7e46d74ee7a6928ecc016fd581f80386e0d5cd7ce00d5584b4dd357db29ddd5365ed3c0bdd3832f941a08565f5dbfab31c6f8bab0952ebcaeade9194d4a1a1a186ad25dd706f5a43acbfa7e95e437d0e48bd0836dd79a57acf157ffcb346d3f7c577f724ae927adb5b5d66fde7bafe572ecd5f2c39febb75ac318576d5a7befbd2a49c3b586b29fe643e3b9aa6b2fbe2a59435efc9526d8a3e93935ab7539733957632e673d338cf5dc92359e92cb097591345cdfecbb47ee8a0811ca6dc25097ed23156e93b9cd17b709b1761dea226bc8abf2269d2633d65aa6352e2793126bf9e9b8ae588e0443104ccd0219e7c1abfa93db4f6f489cfcaab658e6da1aea3f89833fbbe7579f7456db6c2ba0b31ff42f57f53c4a65b5d7d085ef92a890eb6f5e7b3bfcd8760df3b150ef5084aad9a108150b692ae63a8b5dd706ae6b63795dae2d03404b983c66a984c9c3430778652ddd6d38bd03ef900ee99edd9c3adc74f87b4e50eb3e165afbea9e5c0e3759843eb959749ce67feb6b9f6f1166d18936cd769e66b16991d672c7a200e1ec64f74929ea3c8037074a690a29093bba5d80ea595bfdd94db99c4c4f0e848c757ef162d72bdf43d68aab2f8f1d9b5a2db7cdb2a67346406e8cbfbb6d60b3f63d08ceba7f99fcca0038baa2af9aaaa245599f70aae68ad592b1510675104a971d4725928c77599d28a4a90ef18de58021a6f801a003c0b03380340d40e20dda587dd00090016058b35f7fa3d32d000cbb520d302c690580a1fee055c3aae2df4c58970030ec1000b26680a1690020ea6f5c657d6a6480618de90486266d0243ad2ae90f0cb5060100f2fcd7d080618dc905189ab40760a83bb0230c8871d7954a5a977e6abe90f26c0d87a6605a68d734888c1e69d7548592764d81c80594629447d6f0b4b362321ae672393232119051785fbd318af2a401c21fbd51c96994648b0fe6e3400928f0ded0487f2310e6e1509ebf9938fffa93160ae9a9455aab2151687ff0371463493f587db0fa60a5f337f4f527d718775d89be46fa9223eb6f6a2ac54ab152ac142bc54ab1769db02a4e581527ac8a1356c5a9fa1bebaebfb128154a8571d7954a2e1fe7f91b7b6b6a4c26ad4ba5aeb3230fc65d572a696d32edf07f76cd36a29b5ab4c27bd2d77598b352dbbda6ec1ef7fc2ad6d1298afa4c94cff6eaf313357568c7eda22f848de8c24ef485c22e048261a6adb6e9c981906d1fd6da67758680ed3c9467d77babad92f2e02cb935254c1eeff7f403c556344d8a7cce395feeaf7f4a5f52babb4b97524a29a594537b2f68f20516d8cbf5a76c1bbf55b33377a5e8f1dd97e35022150a8b50a208b5bdf5695af465bafe477d67dff83f2d9f39527d231fa9edffca59e65e0c8f5996516ddbb612de3a0d6b8dcbc17ff5e307f20470dc8bff402fbef8f86edbe542a110c7f1c456319cb97f8cefbd57a4923446a82ca6f1b84d285265b1ec8b0f914ad6909c37e944a2f9ba7a7ed286f3c45612732efc9beb9048da0fbdebde23804437b9eeecbe5f0fd557bc3e5a775b5ecc4d5c122f765b14f46259ccc589b81c09f66495944eea29a5c8f6645a0b6df7d3b607f362a207ebc01083b0fbe57d5b7f23bff5d91ea546a83fb90e7deec5fee47a4342fc9b4de3c942413b019ee1adc1422fef8b9f5c87b81c6b455c0ebe5acafd747cd008e57d7193b7240dd7312a5df8a217dbaeffe536e16dbde83657bb5af8529a8542f8e7f2f8183ab5fd76e9aa9e9bab0bf1cf768d7f640d377110780d04b526ba4c9bbb5aea65d5a638841d118a83918d75d811d90ec32aa20b4b3facedbaf4837f240dfc03c3aa3a859368f2454800d476bc2795a1fa938f604aa498da92a1fa1bd007e34d65a86658d4570efafccd7d77eaef5abebb479f8b98bbf8e2343c7ff2148d3bd08cf6ffff259006f5a76d892ea459f27904b24025726eadd64b63be1e997146899b8260a4efe5f226dd1ed1b4fe46e641992924506badadd9bdf7cae9734e128ce41e43899f3cad69a3518cd6c8fb62b05a68d7f36b1183315ee59c695996c53c0af4c1937a92133f39a9351313a3e59cb39c13935e241749fcbef00495dca8040d1a0a6ac90cd5000014f31600001810080884625998a63918d9f414000f5f9e4264623c90c7c2611046512004310882300c630801c018621462caa93a0200f613da405181cd13924b935413acc054e8b2dbb63e92526ea7453c54dcd69d7149314e63404bfa2bd6698e9ccc299c91d37bbe84ae11591f7b428bb42092bda417db9fe11e05cd80e5cd0468497d94c95174af2f13f748a3eaee38283faead4ab71304c4e47e970fbce43239d336a3e2851614862fea05b6d3496f2672b0fc99bbc37c506b5b78669d503138d6c7425b0f3d20c33246b57f5c44d2e8bbb2b0467a5e9d82c2317a81bb3f6f454bdc4b0f5f83244b2fc9dc15fdf21a1c7201333a7c01f35b0d0691cb371dcb76116260ad0671a23db25c15d6d8734e998e93421f1bbead435c641e4a42411ee84714775c2236d4b3860107220e81ca0a6c92bd6ad0f0319dc7ed3dd897692ce385237cc8959403af16c87127b625ce89e4fee03bbfbeed4b495fcf9acf6f6bcb8cec0ec4963a97ef02f54a06150766a4e868ccb15a8364ce9da5b011d61722e926293e4f6f1cb7316898caeb8ec92c471c9590d8ee8c6db4336f6175b26a59c07534b6c5ceb40432cc6463366685c77db0a3aefcd888cd2f4aa25bf604c0968d20bc7b34dca3da4df411395874a668803a5b6aa267436f1762c7503a2237d9ab4d863cc07ab089a3b1a0dfc3bc0dd15b1f6eb5701788e8adf31dc6010df565d50be63a1e6c03a163556f9db79ab386af5619d15b53f7feac4662776a0f93c2cdf9a770bd8572d833b3011f54813c8cb8e68b165c79657498a744d822748ad14402008a2fa1ae6eba307887d38be8edc00428309ef421d64e81f345c0e129a17b53c37ab435fab8616876bd2bc05ae3df104da8d2eb2dfca4b100f279fb966074f8af098b7550043e56929de55fd4c9a555f4d6a5b072b1474b290d1c167c274528805b0d733f0f052c7a8b6f21b1dca03f32bc5a730711f3c183fcc9ccc1f15353a5dd67ee10d8baebf1300b8bde2c580714afed3c41db046ede2e8a7a1f8198c5081cc103b6de21c0740d48dea40df315500e036d427783532c7abb145bef8e20c2eb6ad6e91202ad06f4f00e1be0ae051c76a4562a8abd8d3c6bf4d292380337dcfb4ef82caf17a032cfee9edc54e799b212bf5f1f28a1b08558f4469e97d4ad22ee58c5eff65c0045f737bbda7d023ad66f70b8c332d56f229bcbd4ee0b081e7d0cdb2ff8e39c86373752200540b170aec218f19156f934b09cb635fdc6173ea87c272b642b7e08cfd58c45ed8b506b25bf98f6c998dfd6fe42bd45119edac7001ce0a90e9bf51477bf03174c46e8369c493227ee929e4ab2d29e33ff746a5426b346c8bf9288a36640dd97fcd05b45801106d5be03778d27349d4fd53d7a444d513256dad7737af4920715fb702c01aeab8571151ee1b05d4cdfdbb96130a2fdd2df54ec63fa22db341f01f0bc4d8eda1e6c71f476ae604f9968ecdead034053f3460f2ca23c5ae549c23225bb333dc2099b812453723e4b502f5d16fe53b3e7604f5433e5e3491ee893cb3ad963a42520df52856cc6cbb6b3f31dcc4c08b1f593bf199977666c4bca034b85e47b872b0f3dd9309edc1b3a650f080b5739120899aa53b7331c770ef90afedb7ad66dfeaab4d9a40de8fa1cefa80e8dccf0a99518a819bb4f20ee8a63930f4a442008dc4e2ffc985c740ff2e2b58e0c38a9185be87149d1c4fb99ff1d74200e16195078e7821eb0e37be8bec5b8ea52865a0573daa477a64ee4e35a0d0f725d4e0b3cf0648dd265840ad85ba4f6824b8d4ee40b52643d0e9d5b1626f59ce720b8915b1ad8947c36b9c7b4faaadf66ced17cded0671a609b36a4730d1a542ee683cef49e2adf4287636955d5aaf6323649f9c88e8f677bc2091430d57d37c95fafc0a5a8636b768b34ee3e674b1ec6fbd9a54ab92cdb954b7e369b0393678440286d0143195745917c0306b48e3e07bbe22ae59514d5ac38c23bf31969f41a530c863265ef1896d7a66c44c0a702550e886e330a04f7716a333d425286e09c94ab460f2210f701505aea123e403d5d7f55aabbaee031f91ebe429d61d0cf4ecb68ef64ebdcc5fd0786754fe16f6112769ba2b849b60c9d0bd1b3140c683e17c7ef9aa8acd533c48995597ab640d3a334c6eaa6734abe0eba5f850c9ecb7a259f467b3d736e3ee6ff8e17eeffef3861bc5443ceff6ef84ade6d2395d58c5c5dac1f6a505071959c0d6baf10cf8e8910c2224e7a38cbabe87567bd975c30ef29a7e0ff1bd5589a79daae61f1c1d45025a5b66bc556d43e097cf1d443968a2f65536a30309d164088bf0911806a8dfec0a763f22de72b99bf7ec9cbe005ad411be154063606dd0c52cb5e9bda7213c0259b6a39d6ff95bc246ace5ad13b088ae14a2438b8b433a572e454beed0eb154759db54dc95ad7a8973b0f5afcf660c72a5ebcd560f7994f38a527e08f0d10193d5f183011e19bceb7b9969160c54c51e464a8fa3587009536554934ec1339d92251c1ea22d0e91df10352041418d9e09dcc403ecb5a5659bceac3e45a1b8272d715ecf0646e1bddc5cd7073f1728bd2521e5363a474a4a2176135fc5e1d80c1e4b02d6033ea497ff5957c4ab7f49ec7d4bcdb46859012554e11626e6bea970f56521310fd11e862c760f1c9c5b26def038668b7747ed59316b0644eafa4bc518739f0ab5943819cce2c8074484d278bb5c317bb6aa317b4def9ed04d66ae1a7e4f79af1042a24b3d4f634ad114c37fa44557c97d7e9b86c3aeb453f87427de7cfa30cbdeb24513632b5200bec1e7006f41f02b704c82199286ec832b9951da6cc5bbf0281fbe6cbd096262f31b819a00b2b3726cbcf6b6f81627c031900d109cda80d8cfaa98a5b90db80aa8da5ab1fb7ca6db3dbb98da12158eba88f96e43348ace42cc8c71a21bd4940761d5c51ab9e4d1b4a59184512532deca5f549925f0b3a60339397bc3d7c187fb65d54456fb2c24612bf2c47dd06eceb089618497d94ca5ffe10da72a80cf30b6f06f347ffac9098fb438cc6f45e6bf38ea41846bc646b7230aa9c9d3f498eb4abd9351ae7299cab5565f2ce96c28e414aa9588f90e4c735d03998f0e5a91e2598b54b60867a5d627b1d35c5910516fce78e3cca045349a7b0db9880e7c35d834bcc5d606f81af88d331cfaac86285ee635b826176f61e81d051c21881966731782570577e994bdf7bb4549a5d0e12fc21955a16b15f2e871902055296366194dc3f828ca02c39dd8cf499332b899f2973cc9615688521ecfc86e46fc6bd680c52bc4888fce9b4291c835b32d58aec0bdf7b5582812399ca51279f1efdd687c431c61c3da0c341e88d8172cf9edc680fb20440ba9e50a301c95edae5c4ec4a60a6641091b368084215ec78b6c800fc77a4526439141f8ef00336ffbf85169ba8a32774c6bdaea24bbd387ef8b61a2c65550c4b4040c8c83fe587df06f1c583b330edb1f380272523344495f64abcb85084bf9b4422de4e107ce8f987fff3fe4d3f2e2b37421dd1d9cb8ef3328fc6a66148d628e61c6a9668c7ed05c45ad649dca2048fbd92a3fd1d76a35aaad15f7ee7dac23197ea85a5a2aa1ab81fdf1a4e0b7c1602584d466201f3a692870af71c181708c7c928178b85e5d630a3b898866e966c150aa490ab10124857ea5d1adeecea024d4dc01204ad4223d34600f7f38392f55e61f84f1840483c2ca0abf3dea9f6f0168e50013267f765560650c13173066459e289b6d87b5595d19f5f5d58699fb35c1fe803567a2e09ab229035badb847dc551734a0ba0b98a57fa98a23e3f5616af0da49441067551da8b40f2d6407a1ec2f1de2b209f285332186f772003bbf670cc40b186ec45735099d6fb54c89444c79763794dfcc6750b1c3117f858b7bc0c0354afee150c3b979ed8600b41137cfafe3fd4d03c1bb29b54b7c3a84a348da4586a27179cc7a3f2b1ececc114b514b5b7b645fc15c2bf7946d9359fa46f7f94bcc21b3544d642696afa4662aa690fc9a696ba5ae2f4095b7a0fca84324a362c5c485e61e6a29b0aec63b78a9a17c1843326d467c4a78eb99787bbe3a64bca57916a2e5702c3a0bf1579ca4d3539d4d480fbfc9a4b2bcb1724c0bcfbd702f8f93c4a4e3df3f1d5dd95244091b930caaa8f7f0439e18d9d5d93d42ce72b38007b7136a133533f20ea24e0f3fbeb8d8bc3fc01417603893471b115f000a8b689b1963fdd5074851af213033d0fea4d41abf7a5e52d055173ed12137d129e3e8e9805010599bc8606731039e0c5dcfa26571b213c4d30248f34d4979f4942fb9a57467c496fe38b26ab518145aaeff3306be768ea65503273fc704ec009299a59a87e07ebecafedaf04212f7988af897be3eee7140aa7f69b67f70b2666c8a0a0157aacca9d7082e54b676dc1890f58346231aae4202e5d7a1f596831e914335063acfbadbf7f8cef4e5b359f637723d6b548d9fef20fa7c504ec54e8b45750333c46664a761d129ed87a43effd8448bce3d03c49e48aad7a3df2d10f5cc996f6042c589f50453c73e1d872daf5a88b035cdf5a5660bd16f9648902cdca0889d8bb12eac79dfad08dbb8799709229a6174bb2576a2d385a250253840346dde0574066dcfb8b92b5ce53c8290c007d9d846ad066ff44f1dc9e6071ac896ece52a1dd336c5462799f4558d9c0c26208ab54e2dc46f6d4ae4c7ae47de0a747afe171e949a167b787a229d153118b124cb9164212e4b4383c0803b151b779f99190208c848f16e2aa625df08fd992448627da98d5aea8b4c1be87c5332edde09100ba540384afd4f1ace5d0e54a0bcc86752160c0a6223477b67c6d948012e621ec71d2e6debe762a27e9cb7b85773ebfd90006d5e3ac343adb1b44323562d93f97fce58bb94f1047beaec3688759a5bd0c8b23f14583556e90493a398b5f2c64926cad1e2cc3332c40ce55bf675cc195d7b2240bef1a468672f82bf6381d7c9455d055ca0fecb2935a6d81e09b34f0c531422a5a2a5cca8aecb2489f376dbfd4f6ac007e6322915aaf0bc57b00216894c02182049b9635af4de1102b204a615c031695227824a5034a1a4857b6eca0d2dbe998a327fde35496e6b42b009eaf3336603484cf0f18d68d5a2da7f7d1b418e10db60b957b38522d7f912600a6c397774da25784ff93246f74cf2db8e818cea365d3d38dd04699fe8597efde2d0b193f0a1c66b6d3a46ed8c4e557ac446acc8a2add9e7032f861241dc118f0c7b9b0be65bd928309f009b821a20644ecdd8c283da4d421f90786f8714646cb5d2594c7b37224151c221bf52cfac5df10612e9242394987b992888ae1051afdeae099d6a80210ab0fddf8ca51018033a9413e483824494a8b73730abf3ddfcb491077244e79c79814c1ec1040bb39681eff9758c4178b8e027cd9ed08bbfe613fd3fca690f31929e967a1028a586062a9e04e956a74c98e60a9ae1115855a5b68a970a9dc76a4a9a6258caa2eff6553222e669db9f9df0fb76cc78a8636ee16e025e66cee2af48968f6768620ffe404cb7d36199559ceb77ce990a27902a00273d0aa4796ecc0d0d9e4c3d9f12619f0770d7205e584941cfa833402dad1bca8ba0a4e7282c1e61f25561dc22721f2fb804348dac982088027b8f23070749176e4bc8287ebff4e36483ba1c47d86dc7572cf2e42debae0d2baacb79ec1ad13d04259535148784a859159a4cd36b8336e015f2bf100b858a9af65f0f65691add58c3de392faf032a5c67f79c4d9e4167d6557972942178d70befcf975258585c2e9674f3ee9078fbcc0bb9f179f6726f3bd160463eaadf85400d4976279325ac48da1f03c8af4c6917974e569c26740a4cfa63b10996df3a5b6926274f12912d4bd4c3609ce6fd48933da1e800ede7319879214717c3b2efbf4750979d3e6d6c5c88f20d6921d886c64cd52daf95edc8ab09f50fd6c15ca9a527a4bfaa4c9b8f151b683a286e4e0527dd2321114283589c252488b61d0701a312dd50c0faa78c284aac041dbd89bf7f885ed0d355d1c67b14b697ba93bf43676487cd2201b668360bfe6d1c930410cd3b2847294cef5de9672749256bba1f53163f2338c532f21ba05a01ba8cafe44b37cf62c3c5c5a4eb780ef470b50771b1b2b9753ed16566a99156b857d2d119f0bc78f76e472f21d523cbb0d737a08863c7aff89eae81759c6c9558173cb57cd23195bd9e9c8b39425b2469a362c1cc5061140b72129e4d455589054c585fb95bbe56d032ea9cd45bf8f9c42d653527c5bcf1f1ec467974100361ad94d0865cb53038e589f746e9461fec2e99e00f70e3ec20d558fbc579f09251d491792c0652948b27d11d7ccc87193ddc9281132af9c39d45cb76bbc344bcfef3db2de0ef825554ea749f455c708901a721b8ccec8a3b716460755e7dca0ac6df2a5fe496a2a89cc1b24841ca91b06bbbc4be030483b6840a02d59cf0d7a789fd0d90e2299a54150930bcb8d8c1de800455f1dd3243603db7185e030483b689cfe66e196f4ae41833ed7c6184343421a248c60e0692a9093c7f122817a6691e192691024335f2fb321fb8be075ee464035cd5d09200de2d4b25025ab1c60a942c72ce624fed04c106914b16f48649bc1b9cd77951a2bcf81d80a57facfbc5e90c6e27b3fc7e22239e008673ad2436e6f9af7681d5fafb7e9e359dcb02e14d4d77ee1656ec9f23a3d887dc218f179a9cbf0466f54c11cb851119ce6fa2d32f3280be00e229fa21a04c43b13461ddc75817a23c6168cf7ab6cb4302d7a081c2240ba4d1dcb46cd70a1d5c206cb19fa66306287b0311c017c5765a3573a80b00f57aa4fe16eac2d0ebe4fb5d3b6fd43e7e7b47652c5c8763c105c87a573b82f13b9702605100733b820edc236ce22216846e8253d6ed2a89bf0e73655a9a6cd9ca15307a6e67939382ba84ab5207414060680e291066f202326b2117e32d9d2e33f59b2376bd23f217c53c6016c07b41c2adc5a8fc69e3ae841618c9225f406e0976f01d1a253eacc69beb1d378f41781389ee8e4eb59023a7249fbfb088043fdacbcd46e5c811609f7dac30a2b190ee300846f39e10fa5fdf166891fe0dd5e23d5c9c52b4f583c79d353552e8298b7181a326cd9c94a99720592eb65ab8995b0b4b7dbf19f7300a6a8bb6072f3062e63099ac58b5e656ab0968aa65eb685d524cc2d8bec4963229d52ff7ae8c2bee1582e29d6e063aa63eef732b0ab4d023a6e6cc2336f30593d0f163d080e7080bdabb246ab15eb8ff181bb8f4b09947d97b2b2bd3b0db3460c81873aeacac02731cdb09722e98804258a4f799f289a02dab2d48bbee759665158a0d94f0c1da5413965befcb3fd66a060f097120ae71756ed46e9008907f12a0c5c49a9af84c71413a69bdc333c5aa3d256496cff36a24220223907bdc4447cb4c319a6ab18075610b59921fbddb6af1df430e472df7187300af2402ca3aec26f9f4571cbe461ae17c6f3a288214ec53bc86cd4f6dc5773455e428f0616e36139351dd443322cc9c3618ff667808359aa35d391c4a13994f25d4543d9d09da5acf9ca750b896ae588923e430d4345eed0b05b7fb1edb645ec58adacf3e57d073478eeb8fa3306899f321b1ca32dac822ccdecfdc0123c39c048e1b594385c70c22b73624f658bcfa56c1ac8739d904a2e3390364c7345edbe4a0ca5e57a9e86d5a7726d504e8343dd3e886e8d40a48424259ec4ab3ded024b29b82cfa20a49d727b29197eead35c68d4eeedd58da5fb44ebfcb3294df61629d5576048b51f0d4b90caa75c1a8501c534704582c1415ff6fc57c1065fa514b6410fb6a6de76e50e9eada08755191c2ad47c195d5a1a1bb55841ef1824ba6e7f0bddb2c12c5cc3a63577cce93f9fc7c7f679c66237e30196bfcbf05f4e0eac5619bca5e20a3aaa291b836ca43272093f43073070809722a2025dad218e2511b4c25fb911c5665f75891fa4fe61a412ba0f0c15d2c16c8a371f10b91d58cdc507d3df146b309c9d1ea06b406348872d4e4d0740a15f587f73116afa2264556fa12e0cb6c4450c95a0f4525121932a01e7b769eb31028722e3a2b6122a148940286e1287d953138ed8e1d19e694b6b598a7b787e91f67486dd8ef5bd172512bc4d0ebb51a968b1d12f5a811dfb579fbfcf6c04175dc561e577daff896666db68a80795a58abfcfe7c50e0b6d45e3ca6991799abacb342a49fc8841e487569c181aef16b77b77754bf48d4e38c75e49faf54bae944eca8939755a690d743706e9bdd19e5ae1e0e02fa2549b305656be61a84a32f099a8cdf54815522eab847919856240f7b1094571518cc9111cbf0abdf97cbc2c1362770116750abd631c4073885182e33b21c068150a16814d89d45566335a5d5b65db1005697c9b38dc15d4b130c8091193f0e7db149698a10d3c1944fe6849f2f48ffcd719ae57b99da36f5b621cf0ad03273d9a238ac35a0bcb43c9f71be8ad28cebe73612a0fc0c8eba0d906ddbd8edcf279eefd6fb497c685640ed5d07b2b19e72d023c8aa42aa08c1a1e20a660f6987a5b1625c0a91a77526e9cbe0f74ec705cbc7e69a1823110590b093530ca414f2f1f07889a7f21d891170b3a11b2a6372b58ca0f39a00a851868731731b801c51d49fe8225268d6cab63e3f6273a6ec00a4f7a8ecef617f28667d8a4226ec9b28571b13ff04b7bd43a9ba021e53537e444751f58faa08c124580454de456fa8a3e488088012f0f076712253d6685fe8f4c2a27cf2b55f670ff10003de44b6c678ec64ef147b3c7fbd5452fff48de4d169050a3a00eb301d49a381f7b6e3b29a4a01400be7d9e2ab56560df918bf33861adef555ab1665c601d5b4df4c5258f66a3b4379d883bd6610fec5e7ead16d04ecfb91bb18f88ea5170edada44906e3790339163148e9cb9c6a04d507ac9059b1b265330270eb41aeaf8650baa252671b21ded9ab0c1520914cbe908b677623314a0acabe2045ab9f63be280463fb7115a250671a4c9c906f4758d0ee770fc0ec8d83ce073b41ab755b5909d028fbb3df61b9fab7b9d0e88d5ea3f43eead7e7db2f4f8b3d90c079b54a05418d2b0983053e934b359bfec9463a24523279181cb5a98e60dafd2a6afcccb0d488878ec64bc65dfcc7e3b69a31f707260119102b5d5a7b0a0eefc37832d481cad791b48f143276472031c6651c9c23714aac6d74b353b551c49f0ff58d11145ea9246580a1902441f0a5634a7844652400aa6eeb1f93fa31ed5b2d2bd1dc07b4b612448004cbe46063d8813d5fa53778a98fc1b7068201d4aaf4137ad63619596290a595fa2078fcaa3f1833ed527657a2002136b0daf60ea8d2c63dd638c28d5b688150f6b7c253b4b6d195671ea900e3eb24c4002663838f844b5e54b7e77b91a6380b69c910e07bd06611ff59d467336737ca1af5bafad42c1059c057b94d06f1f3036819b521a85a5d8f7d3407c376a6e089de5cd9b04691f20840f01c612d1a86962ed80943ab270d78fcd8bfd14d3135e30a7b21b34edf69a0e70693990261fd1c6ed8fbbfae9df69c74adfc6c1f1bac0b45b1719e95a1eaa30b2de6adc22a69393c346c629f7d08b766929f4784629c288277dc7faa3e512e945acee03d98894332061db6c8b03887e45fb85b8819ee838ab52ee25dc255cb63e0507ee1ec1d6aa3e8374d622e87d755aadebd5181a13c79a2b0913715924e3015599e92b00c0e7eb00f835d3d68234222c3b3fd35114d84dab85d66171081e561718b1cb491a51dd88f436ca17c42f63e865223e47264275a9d52198492ca86b041989280d82f8a6120a58355fb92f679661f9910b43bce11a5caca6cc8159907fd72c97ff3d5ace90de2230e88584ebd80fa590dd3f3a2c0dd9a249a0dfd374cc9db51e744baf7fa8dfea4f3ebad62f8e16007b1c0988d2e567b0660b186c260f6c6e864185be369020b1bf53156dac2644cd8c3cdb096240b87c2f927e262ebe286b9e350b4d9d027fbf690d0ac659f13cfed6ff96888911bc846238304fa0753139cf20c1ff989c1930e87693554cc5e5c6f70e0ffd518508f1ee96e3822a5c1333b516dda333f51950e172082a8550ceaec4f3c43cf861c7a7ef4ab990ec5dcdb4578d7bd02f51497c96150708a111705930248205506d12d024475c6344f06d22a5d7da030ea76ef5101fe45faea189a6ef0e57b1ea39025323c0160bbf5dbd6374078cb2d7f9d57b2d20866012f245f72487cccfea84980576825f7e90da16dd10ed4b3ba88a1082aecadb3ece237026eab165956a0721906f5223919563c6f4fbf0f4c7b281710add0c2c900cb6e60938f05049a67a007e024ab4756989309ee47997f325ea0ee3cb9782a86de73a35e261211695aedda662fba24e6fb4cda858b253cda2dec1b044293d5a4a7db0887ca494c529c1540c4800fb0069ba6e7513af94b53b8d5a0c7cfb4d154364577651d4d22e4a6ab723a1a60d14f3ebdf7984aae15c5630c413f0da3bf1ecbebeb34e8fb985eff694cb41025bf341db439439f86546aaca28dbf78a98cadcbef8aae3655f95a7bee0d08c005fd504305d4121485104b8f6838bdf132ca258409cb4fed107433ccc30daf4a4a669e98aac9d1ba3589088459e5be8f45275c6905800c22e825107737419c2549fef83286b36ace95f65a0c6771bdb06341c1400a3e299d392f91ec519534921e8c56dec5e09aadc9f58a2fbcf01c4f327991401b09b32be1cf642aae569b4bceed7a0357c4b4e11c9fb436cbeb4bb52beda50d8ccc23fe75d4453f806aac61e1e5ab5507ea2e1e5db56fb968b6602fc5f0451335301d4cb6fb88616cf67eddd659098a971893c5231ba7ff043a5b63d8f21106ea30c09850e2acfbbadd326d075e38093bedb60e2713632cc045432fd9ddbbd0008f57499e9f7d4a88ce7819cb15cbf88234006911ee9aad19cf7a5bab10b2c55e84aa2f650f9c74d5e51187584da268b96f3757e3cf28532e7fb0b1a26a8ac7883436621e967a2d46c26cee4b3ce43247bd4d9d210c5a2659c2672951b1c81e66935b372350233043490be08adb329214efef8394bf6c0ca0b7905796c2192c6a11797f89e19f2943a4b4de23ba5f4956bb01887eecc56a95d391302ee492ce7a85cb54c33ba0d59ffb3139123c4d7b385782be8e50a22d6b9b821cbf010b6376279977ed2b258b50dcbb838f72e9bbe8a0af4f8c70adebf33bb2720a94191718121db2af5c0710d493f1a653cdf3fdc8b3593b2fac8f04581488e80f3b5898fe3f887c13b007492c047a4e7f273bf5b3cb278de1d26d42876ab95aa7bbcfa05ed30acb7d1112304910c104a9ba985195ebc16152e905d2713dce779dfdad4ea8ed868dd6c6d358983867592f59018bb8c10a854cb6ea84e285a92cb762bb7fc33828485c81f69d10eb97eef3047b36a8b05a8a52a09e93c857df8f43eeaf22f3cf22e75c98342d7d2324ece0da9418ba09ed2ee4c3c74bd9da24e8442ac924b6db0353630ef705b1d68bdcc54142556bddae262caadae05dfd579345e6a70eb4c5fe9ae6a80878c7641c139d69110a13f1c121e1c566cb364675740bfb5c029ce680398267443428714b1880278144d80c3a9eb8685f75c954f768ae44d83af76748f8a85c2e863e026e075f26bd1be554f820e1b35b43198ed03e0257dd11fe8281a2ce3ba19d1cc16c37b738a2ab29fa6783a8e86fd6a97cc133e15284fbeab8ca0479a4bd0977ce6490d246c82d9a20255341dcaa18003771b0639367a873a5a198086d9806c0a668265536c200b371747fd6efb2b925bf7763833a2133809ad4f9d1796daabf303dbe10849fb88e27182db8c8278c4cbdb4932112a68b85eb5f8e4b84b60e41de52bd9081f62a99d2b56ffde1b071115c2765c9b98fb907bf5a8531f9d4360d80dd78a1fa30012548bc6a8af34e484b9393214d064a8040e96aba3c08244343b03dd7df086b43c91a07f05b873da637d114e1c171a56128459bfb7f0b2bcae05d81eca030e8aae6977c0777e2cd924a9696c6d22b17601b4b5fb4ea85cdf88dd5344b57b4546e7b3b2fc6e5479c65b94cf514cec36b45b858a9a64c3072484eb9f9a54b11968a034c1525d92babc8927385b2791b6ecd7af301b51e1b4b40d99fd05c1df28e3abad12dd3102cffd701e90f5778d6357717d165227028127dd8542c51b8754f49f998c6f0a5e0cb1d1d222ab8467d3224a9bf5880aea81f47adf966834586214ba721bf051743a0c283769273ce7f31d19758b90b79cdd85cbea0fd4232164db92a938d27a2eebf1807d70fc44f8acd47eafff6e9d58dfcc7e63a52251cd7303fa0470752d70c4f59cf20666748f8ebc092115a489833acc1c2f3f8c350295125ebd3118a2a848ec0152e3537bd86fd4a8cc352780f255d4f9de39f238a3a054ce02b015c77cf34742bf251f071653210ea7b08f7cb77cad514b72a4894c7a760a461b737bbaa84163e50b98c5d7dc972709506715bb560630254cb2d00eaf11fea2977f3cf5960bd72d2823e79ac8403e2e557057b16aabfadba7fb9df2dac6f0c9d4e48956399238bc51dda70259ddf16a0182badd6cbebd3198b419895d72884f275ac44cd6bcb4061aae5730605f350194918642291820ec14c5d1628ed5495ab5707466d502cf64d98ecaf5993f723935074ab9df222ab58f1e50d9cda3db8c11f2e9fb4a0b84575ca04b890936eeeae9d9660e2b5d921e1e8ce01d28da65cc65dfaf182472c54833687124d3021ecc02400149ff1e1df8516dd4cc1bcc4a51ce0a821aeabdce4ce83f38546acd4989dadb8e54d87e52c15917fe6504e10e16c82b080d643c01d68dc4f457add625df3da0990fb42de7e5c440f334f629fc0d90b44ac9ab09e67ba8d1643ee692196c320c6a0cd669a7d6ee4c02e6673ecd4ecb7336eedbf01ef9c5570dead40e8ea7c04a38f65c196b0dfa46231c88ee5ff11a8b721d2d5dbc397141d9533b6837b57ca3439562fa97d0a146dc3b205a6b8d3ca0da01288666374283d7b93a2258e3635bc222f8969fa92cfa75179b0bdedabe70253d13be2217a901c056d847aa2f91913fc6f94a4b6638635d0d2942bdc03c36a5870a06438fe359fb715a546582b6c6bd2f8c53872f7017382a02525be8c106856f1f6d4c58b355dd6713f9b2ade14d7e85e4be11f19e1449efd6183f030dac6c91fd739023ac2359c7d5ed9094e70eff11e214f23f59ce8ca5427349346ad22ce2c1fd35a1a5e4ed188aca334ead30f279394f326d11d01a5be6fa771b81eb6970ae5e8a13946f561deb858439a822c9d04f530f2d9b005dc48d8a80cba9c819fa440d2bbdd8a21603c40f26cd43edc18967d6ae19cd55feb21eb68183284a909770fd38c5ebcfb3f619446a6e1b9157410231055ba1dbd53842e08e829165700f9eb8a2e117cf3c91a6a64dd821e76bca9c98a62321ff573489b109afbef1000c4cc7091e589b2e116bb5f4e4ee80d42416885bfc8f0948f12ab9e3dbbbcc37fbcedfa9895e1b77ad2525691bfb36afd18962e83e4422744f26b0c8dfb98f4cac1ba810c238c70e079a00282a643e55db9a1abe4efb7e590f14baa44c350aefaf46bcba68633e25e2be8ae12b996a1ceecbed0c273c4d141cb2f29c7a7d4ad0206fc078faaf7769d4863e4eddca7dbc0fe3a2bbddf12eb4a943c37c0f825d5db3fa78f8cfd8995df6afa406ab34cf36b1de7c9e99ecd5b2604df64fa58b159a7949d1b365cac0f7b1c96bf1b837bdbce9d7005aae4eab5e9a8a36f66a824e6af885386fc192ccc7fb841244d14303a482f63fe73f04ff160cfa72b2ed6e3ef123f9ab2e8c3ab864fc8a4e5080c5e7e48741183719317b438e62e4cfb4ad7e3fa7cbc3afb701aa4ea837c1ea06e601d55e46f870a64bce0cc72850e4308cb557efabded0aa7d2d30a40f9cb4b1633c41d3044d1beb8294baf4f38233c4d5c6c79e6cc926909116fef701e814aa8eebd48218beeed2d0fe5b9f5eb036e68c88ea1d4133955404d181e0f4ac749aa47a3bd26ca3929bb09c5cab8771042259fa0b998545b590df50a0cbee64d230fb5fedc0f413fd4b8a8fc9dfc76f3f6cb7db1443735be8ac0a617dbf403a24884225dbc9730372b3528fd6b81d40bc355b8d1d6496f5ae92f22796f407794b0aa645459c397d2a9c432c7323887fb82587daf93cf46b04592b3dc1ca8c4cff95a40d95f0fa61e5c6172c308445a527a664e8638988f1caee4bc413a9b9714976f8ca0c2097a62490982ad795308a04aee904781449e04f2d234a142ef1d88b85936c63440c3d51e8c04bbc52c22d057d064c4279a938e21c1fd0d3289c2d370f1e29e89af019a9421c3be3705fc490c58797689b7099484f716cd663705860e4f27c26b6eae184ba28820d67a2aba06fa31eb770ee27018113e079f084cf185b0e3d8f7937f270e78e04abe66e1bd61839da9f949fa565084eecd799d2c94807548a401192aa50638bb3e9304dd900c60a1ed3915837f021ff1c173127f26d3087f82f293a21ae5987d57eb2ac141da2432824960124ec03bbae2bd092102304cbcce3e909b84052b94d1f3392209914ffe1dea70d7a1d14d5230f5289a6d4a03fa4a9a5c1d9a376455baaef3fab45383907e8fe87a1660511a9e0ad08ad3f02036e5b84b82bbda2033c39b0976d11d1d062837396d0035e8052b48b5417252dbec05f368c16319e1c28c05d13c24dd089fdaabfab38f85dc0fcc493330b68e6e0ecc803a88a359f5df508c24e75d403ad60a1e53885ca2680c84dfae2f7eea2009bb9da8a1f000d2830217c3e44c759bd521d9406805659abca7b05cea34740316a5132ed491af6883fd4251f761344b3583bda08830306c6ec7118f4f38c035d360c91679b0ccdac16608ffbce4a8d801927a7d47cf8d868556e1ca77ca8c2506df0f06f9bba2d5033e25aecd0cbb2e16332656e6e5d5fc1e9676009ff93dc5e054333064c75e09eb21a6bc7ba0a4cde6dfe25b31e56bce323c64927537e8b69e5483a8cdd3968a6f0cbf4a579b0289106e6daaacd0b02848f1ea5ccc8f001715f3a247d6a28a417235c309b21e164163cac642c513d127976319e3d15921c49b985cfe9b9b19d125ecd9709569f17c01b3244de3804dbe32e14abca75f001a6cc3ec3c7bb6ca25f1a8c54e2e0f4c0d57f394f1370bdac20d523cbd5e83fcaf56649029d9bb282c7fc5d3f99c2ec10239d9603cfa4e6dfd8af19d099e37d8429ec5be146349b41fa9c7c953ed0ce0e07ecba1dc3ceb63f923265c4be77bd04febedfe8d51850a5bf095b738f4c8a017068f6d3b1b535720ccf1c8dcdc7c2d59b6835b69e2ec0ad51e7fae26a6dcb5e3c358f462c8fa24ff78e95883f29c972eea565919e2c6fcf338ec62e95e7e54894375b74cab3c896d44fa126a73ac344c93c259daed8b478a232910270c16fadee5fbc6a4eb0b2405563aa9629b200bc49e4a03c5dfdd0592713757fc20ca9b43bcb79862e5dd88d934d77683e590e4a08aee9da3501a0422382be15c1ad697af6cba7c2c908275534aa85b1e9deb188a32076d906d70c46f35317c69427317c86596d805df103c66560fc6ffc1b2df119bd82a01168d9c1d13fe204986010d248d509a314ba6713530f2763a3b00fe43236834c1701bd104c72e59dafc5acb4f6531d40426a7e5eb23308ce29961912a5a3a98b95853080740299fc46f5afd01e83eeed750a179ab727359b61e335399f17960403d1641522c8b5b0b9b3fcf0d75a25cca6cd2af85bcae6992404bfa4930b1b48327bdc3b48113c6d8eca7c93bfe558537ab2e7d1dd114c225e7e7c8be365608d1ea84847c05c621f295942ce6ac115410de10fdc305f48a7d35ffd25eccd88f54ab2a5ade4c163ff256cd383b5e9b7b910a235960fe12fa9c6a1658164808fa3e6e202b493b5b40555bf92098b393a28e640aa9b35c2ba2b2b1500c9c685ade3cc2e6cdf1ab90a3bcba4ecbcc48d48622260e67206f42cf33aa953db28609ea5e297f8d5f3cb76ca53a542c1d2a9bdab464aff55a20b03cfc512b409d5ed27d38f8eb6cced0b21613a8c085ddb55e9564a480351e9311a9e026f5c076c0b1325044e3126702c72fc9b28aef451ae5c77c84d4a841360d87bcaf3902e2ee531a23a7d120c61a638a512df6955f6870632910e68c5ba3a0edbefc106826370c102424bff973d884df6ca3595e9976996d92be3512561977f012b27412a4018519d03d9ad4b0d191c70985f85930ea857881b33b9ec426df0acac227658bd53b13c1e1125097cc6a21c6c3e951f6139d2960dcd31e0091ba5297c8a9646a7b1028a63c407797f27b23726452c7adc7835e47f8427c6f71439d286144724e633b00f4ad35a2f8fadf438b32652312886ac8f335319af9107f7f5ab4556e01cc2dc731e6b6cca779e50b01a9d550a2790f0478d35ca853fb1fc15426ce422cb6ca9f54d298c8214b34003517cbcc870d18583b2ee4c47f09adc0113ffc6f791ac3aaae4c4bcdfd6e9cadbcc46155885ec6bebcaeed7e6d2b11e64309dee252b2fbd5c225caa63656141db6d7c24e52e68d06384107da8ef79c920eabca36ce53c33109f30ca5f934d8c5c0a83037c0a6e041781b78658fef0774b16b0aacb5a6540b1402585abcb131ba3c6f99ba9d48acc6424f16fb4ca9f0e8ae05b7972e2312c95a55f1696ebf4097c63af37394a23449a7af5ac9448be39d8b673eba8dc00cf90b11a18a5e5a5fd4850238f7331eda3110ef3c854349e9ac26de162264feaba6a2828f5df9af9a0d270af0e51df76183a4f8140686a3e4693c7e565ce437c218202e3f1eb0abd8b7361d274acbb1c8f7674cc04c0e21ba40a90478028517e142fbb1a7c1af702978d18f086b8eb43447ad586c99c144a6bcf5876457d30fd1e14771c3e73d5159c14a46810ef4ef3f7bf8b017456d831b81a92b955ffb02a7e312ef1030e12ede334bb92b15693fcf2e267fa42d500445416ac313295ba69c20d978441b9732f90c83a74d3d2b18df559166100b14d4d4de215275a96e993a7cb19065d9a6864102c3c23f236ae25b4c1637ae63889f53a1066495c06ba3a4b669bff13472355f6b6b97f3421a9ec6c6ca948f37042e508a350235d965cb356223ebe233322b51052ea04fa547450374aef0c6e1d10fc05835c708219a6b856d20f2eb43145307282fee40d9d0b286854e6b00e930a62774ad32fb509c4516846b9fa02d652df5b64d7ebed59ef1764a0f2a7b5947103261482e6357cf1b9b8e2da20458eaca631751109521c29d47a048af9424909077c312e1173906ab034430040a4893a356305c15a903998c7d5bc9de76a7f5f7f4bdf27d4ab193d3596de13a9348bfaf8eade37e8c8af3cfbcf7188fdb1030d00eb0ecd78df3dc395cbbc5d83add74dd95fc178f54fa4546f94146e336b277932df79632a524031c0a790ae009cc174cf23d88759ac8e995933e94527e8e5e49b6611bd2cfef48958d704e915eb13f9326e71489e15f1d9d9c9d6e71926e899e9f95700ef8232be3be878061d9ea965779a38cfe5e05f82dd370056ee1b6acf303eab04e8e0de82e9e620a6016402f802008823a3ade1cd6504427c7866dd0c004ce09c2349cf70083965d673080a4e7a7a6f755e9fb5196754e363a8b6439dbf6a4ce3755f9a50a3eebb82b899f9ff81363aa31c673deb9ceb3ebadc598ae8db411ef23d759c7594eadc7dee44312899ff421e3ec20919c5292c973df997094b9211ca394fa53ce71face50d00fdb08a534fe78e83fed37c9aef9f15907ec9a969334cb5b6cf909e6295827fef0bbe8e516b6bca2cca34edc89ad51ee297dcea65a87bb58c77578747844d509ee415589aa44371ad99a1aefe7d7802f4735c6b08ebb382787757258278775ba5f7b9a986dbee659259c5022f4da4f095a25bedf5e76d509057cb67bd08baa1221fbbdf60ce8bef79eab19e86aaa1ff4dd7f35d5368580efbd67406753fda2ffef7b067c2fb2401cd0859d23b098ef435609279c50c0f69f05227f7b20319e05d98e73dca58327872767c6182347248db2573adcb5f2f8da9c55b33a39cb5fab35d3f277104ad341240d6b265918c1081e8547d1820e04410d3b469ea043a4c68b6023bb749ac5e4902eaec86843fadbf3b3a53ca0bf8c3c849ddb5f72999325977e561e2bf76be995dc64e861faf51ac1382bf42be573a47122bd7c1a5b272fdffb3e3601f87d354e9448d5f43ee845791877e518a1d4784daabc2795027d84048000f28771567ad1b3e41843f4f393197dc7da2773625fe089d4565e6bdfe6a6dab6529d6f52fb9eb43769f3e7974e4e9e7e322727956f4c5ba21ff8cdf025a2d99603684204f5b39e542236a718ed4d9fc35d6ce30b882e3e011769d609901057fda8ca4d88ac8e71c55174ebe4d2baa75d286fc84540d77bad1e51292083c938524a93d3833e99939740b7e43dd950964e62942ce81342fee8617c9ed4d29bd47951ea0f7a4f4c76944eaa89a9f4f19a1ef4c998ec0b2c3d3fe8bb51eab88b5c087ced46be3144201adc7ee2f68c2b2b57da5eed903e2cbad8ad1ef3b58ffe3ffcf24febc367b6eb369cf687df667641d76a297df8cc4669af5a3dc2ede9cfb8b83ffc825e03dad5409a7ccd0e11ef8c322090edf0884f66db31ff088dce68b4fbae3b407f448f86ddcecef4c718c3076771c32034575659e973dba6f59072fbe117c4b3866dd8c6866d2e077a7f496547af3f7fb7bdac2cdfbfb3b91bdbf0e5eef69adcac649bdb756800e7d66d1b88a35b649b1827a6bd00dbdc1d52bacba1ebd8afb6f9f0b9518e575229376dcea185b9e5ca4fc99658479f5f0b79b4843c5a2ebfdb60cb691af3c338dbb0855b3e211aa61b64c396ab7d483befab9a3f8cf368b9a067901940a9b55ced4197ab55f66a4a7b8196bbc32d0d225dca2d745deca69ad6ddd2fd67bb6cd9eeb29bf50303f6af1da10b3d01f2ac76563ab7e746354da330609bc69a8377b3b296b08cb6ac1fd61ca64f9f13064c4ad91d0cd8856184f51361c0260c18cdedadb59d1bf9d767397ae50330a4373a0f8fbbe4c7ef64e5986debe9e99136d20606bb21bda1371da339010c576ee24a02da6d8c4f9301dc66eeea98a63d207ff378376c0041f739e7c60590ef9c1f571a902b65092cf59fdafd1b0b2c3529c1d24ab33cebae812f06f0b469adb547dd89dcdcb8df4cfe647e7b9721371ee1aeed7bd88da1ced14470fb43f71ab7692a8055f4cca1dfef35d4865388edc1379cb0db3560c79ffcfe6cf47522b4099057de01df836c9014033806f41c03b2365eccf73632a606f422a031de6f9563f853808cf9ac0840208a017dc77418c4ab1c7de09e3dd07c508dd107cec698b30330ce9c59d3ab6973fbba9d3022207f386147740c7f44d05c0d9cae8f93bc33310b9f364e1f0ec253d37cfce64a25f25d4a69fd6f2e53b9c9f024ff0877cd97b679f8cd9515a456803276378f79ccb4d28682c163d1e7861ebbb9b9d15aea502fd2bda4aca107bb35e72c4dd2046769a2ccd33cdda99a9469bc9daf4b7ff3428959fe075269644f269d563906c577aeac5898060ccb1082b4321add69c3f9220c8037949f01d2cb88c8008640a4c01142d4800962646543cc5bfa682233e2920de7db902f69ca90103e6b94311d48077581176bcf17785d699b6674039736eeeed2a6073f3fee3f3d7077f7fe1902ccdb3685a37f7ebbfb0f3b0d8a4aa39f0f8ab165424305d278eece29eb0ebad10ffbc4715fb232e2aa9f545bbcea1f5501c4207678d5af78df21dbbd6657f382a1d0afc09528247ffa2a00e1cb6d29366dd35cda1f80fcf36743b231fb00dc4000f269a31c33fbb3b34459fb0064d5f7bd7477e9ec038f99dd073eb091523274d1bbdb03c230aeb9cc63c5dddddb02c1a9dfb8acc5e7b5f38aa0dfbc78e399f5f8fc382c2727272727270789d78b27c7e7d55ac73aa78d1c91e9ece0e0e0e0e0e0e0e4e4e4e4e4e4e420e1d3b11c9f3d383838383838383ccbc9c9c9c9c9c9e9c1e11c23f408283be9fcce8aa76586838383838383c3b3d90c8767113cb90de7dcb8b383838383838383f3d3382d3eab9e9f9d78a28edb50103c9dfe57bd43dde536bff248433d2ce19e23edd0dc547457cb6f3e1de371563ef4590fffa1f7b07cf7faaf1fb6b8f8505efba27ab621fded3b554ddd8e3d554d91eda92acaaaeae9aa2acaeda6a7aa2757a8a62ba86ae976d4abb5f5b602f12ad5f53dd41aafaa2637467502011c139d0500ea2e1fd8916db65239a6469536feb35af9d4b476fbf52f3f63c6f7eb9399615fe06bc6ebe57b4d095b896ecac71799e26af0242cbebcbedfe3105f667cbfbf21d278f97e5fd22d1adfef346a8c2f4e86cb3fa39ae1f2bffc0db1f57a3919a4f747ffe9951a6374a82c2a55a57a95904af59e55a944e4ab64ab4a1c20b6d93603a9aa9250a41199e33ff246c24aa5d310ab968a421d7159f15057df8d562bd13744bc2bebd21dd98ef4b815ee037aaa3a0a00090c80aa822ccdea93188eb31ae62c4a22799efc915dfec164f483aa8a74764435cd6a1f1f4aa4151fbee75462550db554928eb356352d0d449be0dcc8361e9dd28d3599a884e9fcc83099b0c858f9bcea14f254f50301504531aa28e6acde61a93d5491778e8dfb6c3cf145e5fbb797b06ea9be5fd6748bc5c3eafb3b956a235e957e950e460d3d01f2f02acffa55e5e1bb934f86655f200f1f3f191ef8aa2a5f151e2cabc278558da45f55514d8b603a271515ab7290aa7af72b9195aa025b5455edaec87f3c2661a75088aa2ae7a92abd2e5475bb2ebeaad492f755e55555bbb2d638b1839d0902bb3b489557bd8bef502a2f6a8c315c54be5685a262f25475de95bae9503799b36cad11d9341036c46273ba021882aa7f55cf89f795488befc3ee88a85689e3a28a60bdea4d165f542816c0105411c1e4ed503c557559dd560973d6d7ea2de9567bbb4b7eab60df49118c3f14d9dc56f12d5df6fca75b2d4e9eaa36ca53554ef15435deaf445abc8bea2ad59750010c650aea94e2e8a602a568aa729f527b30aaae4279e4f69fd4707543118c062ffa28dfdf511aca9bf229f1e7a3ea8e889a15957a53ca86f17ff0453dca9b4e8faa2720fd14c526d1ab3eb121fd4000c260306daab2577c439a3bbb8f5f11d112a196e47da965a3da4306b48c45df1612df93d54b6d0fb2cfd5d4f63186f2006956ff569318a25f3b5d9e57ef9482348da6fd159dfccb3fabf46e200216161617ca2d02e0b0877af985cae54fb98c721975d9e44393cb2422b8148d2fa4676a8358b3bd083e069497472855ca26197d8aede13171d7f4ff5d930df94519b81aa937703524483e3471d56f5259047c82b844e3f81862c2623464649b4dda2743fa075dd38f42ee9a6c49730e3770b5efb4c81d22591a6e80bba207ab8c40885e7e324088ec6b2e2e2ef44b41175758090d40bae32ecef68d0b4784cbe5974941e7ceb8512685d9edd86b9c95aa74a7e7a21fc1c6e91bf097689c5e0de91612fe3da457b1e39d900de9674f37e2981b085a4a068f73da10025e8da18ecbd3c618237cc0e51e32fe4234cba5df95874b4a88beaca45991c2b425dac54afaa3776fbab5d91ed24b6c9677381780277a0ae9649b9a5ec5181b768a1da3a02e74fe9d280a3122f647cb3c973f23d8b28d92e6c1b273230d33bba0eb6680acc3c2fca261d765e7c9ca77ab485c60fb1ddaf7cf6f5a22dddf39413f2b0f3520b9a81ba5b8c1cde56fb329219aa5b55eb3fc5352da8d0a9016a1694384d0c83bee4f7d1a365fc022e38bf691935206d12b772983169757cb113c84f4f691b210d9be3f1c3e35dbb355975b23f051295308f5e1464af9b0d45d661a44b08c7e3e00c9c72dcd00f452ec4ce2969e85c088311e00dab05780dcd233905b92806886811f4ad4d850400868858990794dbe0379dd7f84fd113ff8f1926a8cab91fd16d5b00357fb90d6d3d3d363128469a6774e741d6feca6c6decbf8e2da87a61bb59fd145234b8bb5dfbb32c973a32236e4cb72b5ef4f08f9a0f7beda73c3b8009c2d11f4d76cbf85913b00ffb6fcffd5a456846bc113dc0a9e78a2e35600f2476631bcbb94736add84c401a3cd4fec67094a29a899caa08b2fbf8b55a6de30eaf8d4c892cfdaf181e7ca19577ebde17f1f63c88f355ecf0aa0643580fdb10ac15703c3bff29d52661f01b702ae05dc126e03f27b0ac04863fb50f648dd105df9a22b6d0a07110eccf7212f1198b5f162a6a5ce8a1ffd8bee5d02ed092df016cd26056f20430d7c9a68c293f086e94238cf31d3b1a3009b166890e20924f096803d6246014e7bc20a2447660e2a640727b8c2074f500114e220051b9a04524af927f92f7fc5862bbd2be5e946299ca0062784c1638104342a4cd75a344de36e88201b0218a0a0060fe0a00db21ee94fd8727094a606593832831f0881094c8c40e50a53a400c9b6021dc46083209c000a43b862094702921410e1866e9c220545b61794d803b71fec0fdcfe6f10dcfe96aeb9fd301d82db9fa35f47b75a04b75f02fd47b4cf1b64e9d42bff18d700768c1f82a5d3ac92a3a51c099e795c8288ef31fe105a6ca120088232c697c74b8041742ba4b1863c4217574250d5ad66d5043d5068c655f7b77bfe8fbb4332c6e862d701affa2703722b6d6cd93a207f7fdc5860986ef5850962a55d2767cd8f2c3554a91b1f1569d0488a343c53885bdbc78f06c832e66f37be8c344a2c637ed46e7cb0eae8d5fcd37c2ab221d5ac023813804c83616cb9c6bbd38665cc9f9e2d310d1682821863ced40d5f61cfe71a2794d8ce679b595371351f54091057f3b9f9db7c46c1fc5923155b4ada86710a77fe7c1754b870a1a2051595165968d142c5a352a5b0904aa55c212505650514eaa4e47442a9020aca09154e4e4c5330994a3ba59289144c4c485120914650188dc02420287a824814724228f44df17d9e8ee7754de83a101340206e092f9fafbe33099a76e7bc534a02c417f701c4976e01c417ae115fe6c6dba6813ebe69ec3c4ad73f0289d18649dc9794fe2f57e826881a93e78aa8e4ce97de9f4c7b0c3e81855ffee4ed35b50fe553b9c9dfe426e5896a1bdd986dcb8b27cefafb6d28bf6d25e2353b44af72f4ca9d885e396b5acd3104f3104f04f39d2c010a74eb08f00af0ca774a617a052fb821487d3630706b2d85e43ca059aea30b60d8c2e394043e6c48f1c72a7b25bff9dd25b3ab800d530a2b5081bb380a828e2b97306feff6ee6e7777b72bfe1c0ae07fe905103c9d72b4b4b4b4c4d98c419fba15bacfed50c256f8db6940fe66fbfede690a20ff759d23502859125bf2e3536a73d3a8f4e6a6d18da3206feee8c65110d779d4e33a90d77d5e482445226f16d1eef3429f28d413679ef7893e1b7c4111894707498f153a48641dbb3172d3c3a3e4070b1e253b3159ccddbdc7a6877a273ac2ed2ee59c9a9c9ab66d94721be53810a8eb3c50e779df170a89be90480482a311091c91482626a592e9449e9c78f389e9e484823aa5a0e4c967832f0aca0945513424dd4d5c96e489ce8c472709929e2bacd0498244c6e3d3c35385929f2558f054a16447ba8927bd54f25c9a248a8927bde44937993c9727f28492289437a350d24d9ef41397281295225352bc3925c5e4493ff1a4a3a0782e4f1225534e3ce9289ef4d3c97389922932a5922a9537ab54289e7499225352d5e284d249812285a78adb9f52923ae25138145ebfc31cc76f3ce64cf8108779cd921f9d194fcf1556e8244122eb9bcee9581b6928ba48dff4122da46d787c7a7e9660c15385921d8e1d61232e4312858c31c1431827f638c37e28c042b846f65c410119753e1b7ca3cce567832f11bd92356c7161e955af628c4ea121ff0f1f7c3fc5f448d80484e0b3e2d2f27c8a3c99a5e750806cc7ad0eb639649fc3ab0e05e8c8b1f33a98ad8e1c3b39a40edf81893b6074c144569fa28cb52dccefbabb7a0f782b48238b05e4ca9f49e24a09fae93d277771bce5cc6723604841b47fc61890cf9d0fea610218827aeed4ec6c0fec16dfe9027d54e1ebce2f756b2279966977848c18e1082b354450430d7ee00409a070848f20e8ee965e0312ee76a3ce1a7e56c0e50841f340e7831bb4bce9a24003cd0d9a34414f27451b6012055a6b379aa66930cec6051e982118258104488e5cbffea71e1d1c20e99cd04112e1ca9605ec20dcb78b3fcc4d4679b232c0f85a95a147b90f41a0077d83e46ad27ed7b428dd42a1862864724872a3144ce8b0dc2893c3096e278a2ba1e7025d3e58c612b068c2c72589336efc81f280310996c11f0e80061096c12d9106c3584674e578a1624b7bff16b1b5bd3be8ba5fff9348836b4851146970142c83698c2defdd3fb6f4ead57259089757afc0e06d1a259974524a29a594524a29a594524a29a594524a29a504dd3a8d0318fea5fd0e7e78ba4eafe51dcb3a9104debea7dbcc427c300dff0ffb26c134380a2030a6c1392cc3ad172ec32c186a580a71c51faa7ff9b92b5cfed116388a90b570aba083f8c25188319869701296c13fad70f99d652ecce0c2854a1954545a90a1450b558f4a951a432a9522869414541850a89315a7130a1850504ebe707262f282c9549a954a265d3031217181441a6d613402ab004111152251480ba1d09785eff3783cafc342d781ae00027156e038aa84d2ad0adba65141d3e614e6bcfc514a29c417778f427ce96628b4107cbd6fe000861c5dc024bdb23945fac1f73e0441af724eaf401bfef51e0441ef7d8799db6323b22898651c5a8006577e2c82e4852be91b609cc5f66bf71d27aff75ef7871aaf0fb3d96cd622a3450bd5b36cbeb5aceaa072a1526bbc3ad4be2d355e19b5ef168bc562005849d5fffa30bdc15860bec17a83f1f0224507fb3a3c4cf350e37d51fb02a0c6bb52fb6ab3d96c160306ea45ab5760f7c5c3b426731728e6acf92c1b52ca624310b4b23bbf5bf5008a81622050ecce3f7d42f01040f92108860382758b879f0faa69d70e3f7f4e1c1e1ea65735de1e6adf18355e18b56fc783c752fb7ba81a8cca3fee8abe3a3df8e2fd59b583b1aa4c6487e7e17bb0bc1a5ffc9bbbbd3966cdd0ea79a83bd4d8ac1775a5eaf0ac5ae77f8dae52e3ce6f919a2cd4fc53ecc1e2ce2fd53aaaf3c1f9df7c2fe7ceefe68ce2cea775fea633bf63f1fc08e8dfa09d1b75a03905611a77c1367098efdc3bf7bedd74aba9bbbbbbbb7cde9e3766b6218f9622dc6bb04f388d4c231e7b9a6ebc9c10c0701a994f18611adb5c72fbe570fbb92080fea00fe7ce6dea4670efaf75ed5f7ffc8016e1f654c26d930e8324ed950dbe2e27144000e787db84b96b83f170a04fe98d69d0c885d01360fcd9646c1b6fa0e7368e08f8d588b2ad23e2e1dc2e015114b9db779124777bad3b1b54386a1f22def7ebd5ddddddcd410176cf255cae74b93f72b5e89a469ca53df72bb1057a8e230dfa1cf75c0fc0307575b8215f6efb8a68db9aa9d1c30778790d3e2c43fb69c45dcc86255c0d0471b8da532597da905e90368dfc00fcedc3eed1be877d7a34b7a2595ac76fb33eeb95a68d54bd027d388d5ced3beda7916e41318fc417fada10aef61d68fbc6b159d9abcfd25eb1d636db8d094fa73d7f738d5e695a7c1df125d6e895f6afe69e00437a354d7bedd90656d3adf95a6cf56befa35bfedae368117123d2706119da6b3f447cd9c2d8039e9cef69e69285cbffd3e273358d3f6c5d4d07d59c250c7cd6ad767f5915726efb2c328792a6b96fba4e44a5c8e535038cef3340d09ba50c3114ba46c2cd000decb6c7dbd7356d93359434157fc736bf9fe686303146eac6006eff00a6f6d3dddde577c72caed78fbfa3e30fe0f6c76e1b9b5be3798516b0a0028abbba710a1e14dc38ea7a9ae011bdf6fc9d6669669088bd8a36a4f17a2559ba15d96399a6d19e617c47ff34c2da1f7cddeee0ef6fcbe220e8f83bae1de5a8c7d1e91f2d9d736adef727e3bd40ca71a0f91d37bfe3388ee36cc8f7b341e7d3ead11a41208e4ea69fcc0ef93ef86a3e7815fad0d75c951ba770c28adbb117bb157acf91ee9861cee5077d07eae691cb3f752eff9c738a3e99edc14f667b81b3a3f4bbed6dcc07cda7944e3ae7f38328f540fcd472df7cd5f571baa0f7216ff7ddaca2ef2aed9547a9c773bdf7bee79abcc953944fa6fbd327d3bd405abd522c3dd87d36e89be030a9f34b9554c127d5f92624128944a253349f54576ec7795d057fd6f8b4cef909319f5aaf57f1c68b3b678c6943fecdfb145fef4191d7e387a4942917319fe370ce2011ce22a60d692e3f7fc7f187638a40cfabf1f2e77dc89b01764f4b238f92be1ba3cf8817977f06d87dbcf1a2fbef4f9fccf7fee158798114441fa6bd0f077dee3bee3b5eb9fedde09e72943ecd8dd7bf1bf3273fad2b97f9a70d160ed51d2c2c36e42e827cc84b3ffc3ad0144de8dc971ba7c869e2f2008afb374ec18325aef653fbd9833e67439a1b829eeb40dc144e2849e100bdf7de83bc4fe6fb6ef3beff3e99ef0582bea3f13bcef33e1c5ee57eabdcc7951bbf1bdd773675a36ff73f2a4073410fb2017aee41dc77200f54e377957bafaedc0ee4791d28b2d0f99cb7d5f9dacbaf3f388e18450419fdfbf3e2cb74c952befcc1d79fa69961d005e9df7a46a44510f71d4703f2e5ef6abc21cd57398bebd530880760d793f14271ced4f7318b1b4659eab342783f7f876753370670e70fe07a3f3dcf86dafbe0ce8612c4711c63b05f9a8efd8a269ce1c8ede1c6269c41c8750eddeef86e687687fccf0869c307dfee96e60150d2f93377dee8ef966ec176420fc090e54a90943ab099a2899fcb35608b001875a84072fb4baf438592fb1748b742be407ac5cf518e567a457fc6e4cb0cfbf8875c83227cfe56bf1bda936ce85de76c03c038850e702ef7daf36784f6dc7be5c2799db396a512e1718c2354b4611c77c518c936e49c2bd90833e17d3703147dfc6444347af8a057fbb0f46cf3dde8df2cdf7c3894b8a5ef1a72db70a507f7dbd3ea8359fb8ca877b31d858ff6ce4da47b1c777596759c259f52a91363c8e77600a26caf69ac3dca7c4639314e8752f95439a7572feec99ee8c497de7c7c24a3934cbe734ff339c02eb7f1e5bc076b0892d8c7c59d21a7358e945defbb2060c836a4ee2e951ea6bb962ca98abeeb2237b70740d246ea401ec78db8c8921fa5209273b5ef4e0018a72822e4ce27d5783bd6ea4db779216f2b79b79742620cbee995e47800866c83c334986dba65f2127c19aff7c998847e7ff0dd6cea86cb6fd61ddbfbe090f4e06b750789d4fdf1bbd1337cb71f1304a728543927c02e7245406e075c0e4097cf2f9f93c4590fcf8c8795703a6819d704b885ec732592d689710678e3c5e521447240efc3ee21dd92df38f165befc7e417cd15e6e3f23ba4f7fabd388fe22436ebfd6ff83ef96c3c4955c031c2bb72d91ef61daf5d9d82c1c2935c6e19b6ef1651b21a2db99783186a31b51fd3c431e952c6ac3289fd21843ca25b76dc8232eb9bdbd6642a6ad3d928d08c8ed98d951e3dacd6a36eadcde992a2374fc7409395c4ffd2d6f2fc127f2155e45b3b8cbcbb6f0371bc0ef6f7179f19cd2b69ceea808b3a2acdd45d0c515b07d3e4caf8608a2576c87b041f48a6f10d963b7818b8bcbebf5ea9ddb2a55ed9e531f511ea64d4c64549e63a2e36e002601a45b26dfcf30aee938213c5c4a27db3e60086e1f82a8ef2f9d50a838ad8eee46d2ac6e717a98ee62013a1b0e41734dad83f261cbdd425645c5d1ddb6ed697cd17ee3e172c31da99f6ffaed4397bbd9b065bd7ad9e0371ba61e9544bb28e523caa7589a77638b47896ac83621dfa09878bc2e08f4ea1a30dd7ac1c3872d56ab1a9d5543ff31ba92f826ea43cf82dec57720175c0d4010886fa98634b7f42ba1dfc1a66b6f876800304ac104ce8d5cb8518a1b3471f9a32f00f9b71f80a102ee8ef83c586ee943968b7ad4cb8a423d88525dd4bfb0e1a97451bf827a1decf46ac8726378f22d4adf8d16bf6d2fdf56ed63257d676acfd6d1c7cf84fa544dc50f5d6eea4535b421fad4a3de5453d10a21fad4a7fe532a2a567f544df95387fa58493664b9f1511f4f0ffed6a5c45a4fb786ec82dbdf42e5516ac883e5762faa210f973bfa94aa466a3eeae7abd4d4fc18a3b26d1f634cf9adf2f052f1630c9066752abea5c2a402e955bf577f4c4ebc135112944a84fe88d24f3dea5129d47d14901a4da82d7aa18769d16f36a4777b162034005f309d84bba86d99a77ea5bab174938861cb4cafd3b2f94892740b09f0434ec25d60ca86b4850dc1d4c9fed44e223329811ed52dd0770c18df8614c586608c367c94672234fe04dfc50880718a1e2c69407f688a1e5c7143bf7d42b0ec521b7a97cacb39e3e01e5471fb3def658d97fb6e70ef31f75ee55497b321bd1cfa42d1f30ed1838ca36f88fab7ce3b46f619922f72b91eaaae7b37fc17fa4c5cfa21bf9e4eb7e4fbed68118ea4579df55c87d2fb634674b90781ea8c679145e83b3b55f438163021384c1889424789bca25b3fb3a65bcdd775908425d70141d0b098d007a14c6dd83896b8d1547c76869180361459d791a70b9a0118ba7be5900d7ff0fd8ca046f46f33accdc89a0cd5683f5ff3de9c9bdbac1ca3d59a86c574a1f7dc775b0dddbbe8add14eeb7c0e97fbe9eed9d02fdd2ac7f5072ead9e4516b73f1b0dbbf47a36740fb98d702913e0523b438028bb1cc7b24b27b531aeb355d63cc665ddd299374dd36ed2840e250334b71fa43f03fa10880d59ee8ed0af9e7ed7953e4924128948dd83ecf72a3eb52b9c11c0f8dcafee0c5ffbc3ef111f11343764636409db0b3de8434ffbbd87f1fe3c27d5d227448c112a71497f027249bf7dcaa73e857a933ff994ef52a4573de092c289632565c31c975453288b63e5a23cca9b688c5c920d79c49dbb6306f4243f151163f8a39c982a4b28fa1f7e8f207da9ce903ea499f75b6467404fbb86a1177d7f3ef8f6f793ec4c12351ff000ecce841b88831cb2b8a4cf00cd25d90c8c2c0f5af3010f5cd0fe40ddeebff73ee4d999ce122181fc10cc073db531faa0c359ce31d2e670d666638c1185bb74b86bce9f9ab42438c58440be6649406342108210800e0444831a00e1052d40c213623141224f8e1c42a0c40a2bccc189d3fc10449780bba6059d15dfede97412c469dabb215d27add3d75ed35a7bee9371e97df79cf6dda41454fdbb4ab96ddbb6cddaa0bf55ffadae5ceedddd9fde78711dc6b968c37e166ddf793febcad56a38f9d3ec0b9c3f7f5480e6f6d3703c917471257499920f595ea3aff2b8ed93b78b1d84fb9c9be947dfe97b6eeba7d49ff3e69e6e281f72efd16fa30f5571e97f3ba8e2521df827e49fd069b485cde37daa92b7f26cb8b2e1dbeeedcae8b9907f4e21ff84fc13f20f0ccb8a2a2cb9dcb0793697571bf1926681363cd9aee142a11fa7f7463c2b9990fefbbeef1bd9af88d167fa3ed3f7e0e9f4e0bbf86e7c36649553c8f33ccff33ccff33ccff33cefbd4fc6d361eb566811c050f41b2fb15fb75a7954ebb4f7da1e5735aabd96243211f2cf0fc738c631bfda7715d46ac1bf795886f6fdf187bcf46744f7d5ad577737a9723c4de3f6cf88a5ef6e1dbe22b8afbb7f78188ccd73b26ddbb66ddbb66ddbb66d9bca67c4e8bb95f73941dfab5d45f3f4ca8aabbd6bdaddb66da382eb01d8946ebd6d3c1c8786e175fd65802f359d2c0fca5666a281d09eba8871e037904adf38eedd49d783e7468a804c745a58c36faef67e8248234619a2d7906896167a0afa6a1fba101cafe19b25272cc02baed656cc30ed96d307b557f96e50fb832f67c3ef8fe1cd003b340ac5f0b67a7a2ef45efd7294524a29a594524a29a594524a29a59472ff15c151a7d4bdc577c39f7e27c3f3ea3776eb141a51ba3afd77fad3477df03a343ac5f8fdd178a97ffc7da6f6545a7b007c375e5c1fbdea64652600e0d15afa1a274826a614edeeeeee6e9ee69fe69fee6efee9eeeee6babf94ef463f7d7f508d31ed7d1fddb66d6b6dffd27ed5f2abd387ed6a9e6669bf6d7cb76da32dbe22e8c66d1bfff0843edc9e6b9e94900d278a08a0e84d3f7af045a1ff6644d77b0f7ddfb76af9d5e9fb9eb68b63ffaad12d52cbe4bf0fa25ba5ff3ede8feff785bee52b22f4a17cdfca103c6ee24bc7978e2f1d5f3abe747ce9f8d2f1a58dc49756f2135f86c497befe279f8c7b35c61826e7d8f79affe87bc8d277c3ed0fbe9f0da70fdebbabb512494ad93c27cb634dbaaf442a3d4ccf66cdf035bd1673c161b9595149528cdb8f3edc1efc90975cedffbb616242deefbee995b15e69cf3d01cef78f69fc86e8e2c8fa892ffddaa350e188dbbe3d9bfa216fff8ce8b68d3146f7d4d41b7f374ebe457ff2f1b371f2fda290e845275d8da152c7dea846949d88d85c18374a91032aae7f364c9f2874f2fd7d6277982c8cf5c177f43186a88640d4b82d9b626483e895e6a21377e22cf66cf3c3514d5b48e7cf6e23d9203dfd6c9c7cf7f4b3d115e53b94e7cf466a86efe97fc8d0839f9ae1ebfdf733a2fb59eebfcf88d187ec8f7ed37b9f11f43ffb83af6743df61b248f44a7b1f7cbd518dbd0a891eac617cc3d544d647afb40f5d5e359ad5afb5d63095cdca0d4b8bc74b2aa8ca66c99a07b5d849d38200eee8e7be87bca0ef465bda4597cd7186a4cb4211b8425c1297745c02dab9b3c31a37f2d00f5ba817837f9c35dbe5d436ca813aef0b89c011c9a4643a4139a15252aa162a2e6680375edc1ef2de8ac80edf43953da457f36354168b53048a3b714031504c7a306a0fdfad7c323dd817a8f5a07dfc8678e1c5a82c2c1fe3fb3b160b0b4b84e95595eeee2f3fe3ddddfdfbeeddddfdf5ae7777f7d18bdedd5d88e9ddbda75b3d5028efee48bad5a305c4bbbb7b8f7ef71e2e01787777efd122f5eeeeeeee2728bad5e387f71ef5dddddddd7bb47c8f95777777f7956ef580b17a77d6fbf3f0c9b80068f8006a702f33f8646b690090dd6d0002a84183f3af735317ef4b8d77c66cc6ec9bcd5eddbbba5207ea6433649f4c36f217b989e855e375b9466e62f22613922824728d602894d1a82fca84d20202a42814455dd62f442f6adf8e1788582ce61280107d419d366d91fa502754df160178e1a552522f6ae7a2f6ad35c65ec46231900b1517b01730186c85d3a1f65da971367b182baabdd05c6b19ab878d15ef6a7e8c1a7bc552e7773b7830aaf63d6cbfaa7e65ac5d2d038d9c8e5cd6cb21ddead17ad7b3de97b4ab69cd9542664b5c560fd17f3ced72186c06eb61f57079209ef50e45bb3c1645cc91c4925c560f931f3debfda65d2ec391798cf52ea45b3d50de7445bb7c36c36289d7f4b07cea59df3a4d7740d63792003c4bc662456250c4a2b8acef18eb1bd62e2993b58dac6f644b7cf81f9ef55c45bbe46c66c5ec8a19163c2ebec5b32695b19e9768d7a44340262eeb190a19dff2ace71b1dbefec986f548b46bca9c35ff64055805eb8968d79cf15879003ceb8778f13c7c1865e0abe5a4024b97c5fa55bb34d80a8c8ff12c560fbf7ad6afa40c0473d6fc9757cf7a067317379bc166b0192ce62e4e268bc962b2c971ce39e73e7317c739e79c4b98bb289554522a93c56431594ce62e1a8bc962b298cc5d14069333989cc919cc5ddb6c069bc166b098bb36992c268bc96232776db1982c268bcd99bb36186cce6013a6c17c3ea520389bafc5dca5c99c753a8160ec4e0ab6ccc5df620d04a3f16267bc2c08d6b12c08f6897690c9bad5216917a87b98fefaba6abcad596b269acd80f8dee57bf179dfc334276b7132112763c946ac3761ad88427d81a8f1bad4be5c2c16e36226d3a3541d4620cc858399b038588ac59a90603a55e365a97d4d355e94596ac69ab1cc0280aaa692499692b1642c32ef473909405f1aa3b11f7c70813aa11ea6298cc2288cc25ab85049a5a4e275513ba6efa8d4ccf794392b15a21901008000008315000028100a07444291582c0cc4549b1e14000d84ae526a549bc79228c8618c62c62043003000600000000004a50d00a231520520eb98887537c9b4036274f27c49711e99af198e8ca9b05e813ff9b00280625312232bee4ccb664c0f2341861c21063e4c2de92f4a84e7059f16e3aa700898e0a372018a8013851565758c9d3a637cc7dfb56b63319b9f69821c9941eeea3160e2b4e0982bd078a20706b41a35056841fb4c39dd6f721c07ecdfb75757b0246a164694e5c0bba1961a9677d80fbcdb909da73620a26d09d75bfade748b19cd7576a13c11374541c18f931b6a54eb2c07ae01cf864c4e20a65fa9ae2f1d1157f8f25c23ca33e5e1eca272577530754d0b0b2d9ad2239aa4cdb6aa715ee1ccb379e38fe4cdea61f73af7d209b4f9a9a12881fdc8eae1a86e6f4d6ff3f54b4aaaeacd293566cf43ea9210e850812a3ceafa4bef2719e9c91672933ae3ed2a864db9f44f340ee1e86fd2f79b0a0f30284c39e822620b5d80d09b80896a7d18126256cfbf4837554281308d7716c2a4c2c85a1cb91c2c0cf9c0cfc3d7b84a63255384a9ad75e9d2ba70067de5b94c062e0bdefeeb5c5ac37e2bb4cdab1cb477dec6157abe72370f6e91520d8ea6fe4fc46c203cba1aad8da12891e3e7cad99c20a8fb058e0245f5b9fc8515614bdce70fa63b3f7bdfa8c59f8d6911bcfee2b33b83fb881830904d98c836625f7a841ea5ffa3491d976cbcec4ee58ebdb08cae21c5c97a0d1c1bf01fc6f98bb6699a6a9814571ccde219115308fce57454461c1980ca7cfef43c3a35b7680fc8ee27f3f09aca844bdd8d00566b9fe85e68ad1f1e9e755a0a3f258454842438b7f6d5fe80f6dab68f8b3ff7c5b99cd2c1db4fa52b07a38abd5ec1dd2487a8d0771db2d696f622bde84f28a182d93b3143ef505d214a2ddc6334022fc0dd342eb356b168c3f9dac7a43a573434c579693f0211ed9234a3d452ca764b0ef660193b6929bb4305a962f6d7db9ea460c6a0d13d930f548ca0c47a5abf6846fc4b08620aa4233cacb901c183b5e36f34fe8ab8323b17fabd9825c59cf30591076eb4f1472466f2dd454708e45047916ce86af8b2ca82cdbe745cba2aa6b1dd1a0f49e0d98bd30e8e8851f7eda0f05034d52f2c26f4a11e21eda5befc36c4d14aef7851af71666a70b46889726d8f5209099210fe9e481952aa3c0a13699a9438e8efbd442b8f073e7e98a9d53717af31112b724f090bf4fac898746700163914134184c9b376ef067a74a8fb4f1e584848af590127748957356b359ee929a8f1bae4d11cc75a8a4b9c84ab4a0c0e54d4f04cba0862c31cc7db767e55292417cef8c5d321cc67eb1db98b1d2ee97e141f01a3f8f3efc66244d7e44f880e222a52e754563effb4c0d71e224e9921d2a95c218dbbfa1259aa43ac7431e460fbfb016761fe5e150f6a1b324eeee308297ed3555fee3566e68be9013600506120fc3a1d686a2f8559ee7056c11d8dd8ef89157f1e95871c2b21dfd96919a87f44d948868bde259ee6448d97b7204a9d6b10a5e1b00078ac88604158f45f1a9c12f3081bca8a8ac0ed0401c49d137dbcd3c9534e6cb4ea52c888d52432598450ee489dddc3d97a4d77a807bc4dc740c836d91751ccc9c15c7c92839e93250a1843cce4d95dc52848df8619b4dd6f7d4030b9d207abd5023f2cd02bc418b125130073f05dae4de134056a603e7dcfa900841e5fe5f32cf20d332fc8ab955d41dd13b028173416a60ec90c4cbb6f01a1d0c3dd87528d0b4b142b5390305e6c8cc2d568e38dc79b8abf0d500f644a8dbb1815d153541ffc9ea9131b6a90e179ec5f6beb963c907cc5b710a4eff1ca18c63ebc53063412483d55098559a2a2fc78eea11f5defb778283218538223c44bb75a974a783698e9ec2f91ce0fab8aea2ce215101795afea022b208695722bb5d0daebdde0dc09d6bd4b57f5b19a8a6ac312311e54cf6fa96e3320b2d654abba410f7c461a110828d59173d463419feb9a446e8b00d4168749d178bd704b34d04c1e3a65dc881a557cb0d769a614919dd1d6ac3c57c1811de1a255907afc3026ea71777447c7ec5b49dc23b017c433988f9096f04e4bdc1a59383b1ee747daf2234cf04a2d2988b5482d22bcd5d08537c4cf28536fca795c2ed3701c7e3ecd4497036b84dfa230fc4430fbb6fb1080f9a2d012fb366b7b5157a922a1695e5095740707787fa4cc9d53d8ed96a552f16ce60014cd417e12da639664d369d1d9907c82a28bd33819a93d8a7d497a148d977786ad2b0d7aeb547d3d9c1bea968fb6e9f65ff315e440d5715e05a4859dcdc6bd6aa422f5161472e0a21a76d4d649bf4c9238f1691bfabd6d50ddb5cb47133e2490c31551af2290869b860f663c0f3cb098449f9e0cb1d8ac51c8530c72539af048c45565b716c22da04cb0de596939ccfc817f81388910fb535c88c82bfe127ef0d914b623b59c40e1dbb7420cddf5aaa1f65fbb3f00b64a056b26fe49da369b96520bfff5b27673366db36333a9bba85bcc4a313dee0f41e54bc792fbe9cb59a7c9bdb90d564315078901e1428300ba4dbb7021a2ff5e056ddae30a53f3597fd103e198218731cfdb5fa89afd249253a22346f114142e7755afd9f0067b6e39eb67d133d16500f5eda30047dbd0d6fc09e0beaea0bcbe924d0b58e1edb7c2ccae1653f8b75cb7f47d28194bda380fb3cd4e45091e03362d5587d26d966f9ef14a826cfc1712da7be9db45d73d44663e7c64dce9a503ea8afd9b1bf82368a52d137a232cd643b825e0d64b142b014bb6f35e57943674eef6c4c825d9b053e2eb3389aa4f6510126281154c7b956321bc86c28484a1354a53dc61583d8760426768d0a89838b84555c1087cf1a72d0cd226464b0c80305661d171c56f949c32b6c5061587a0dfea248e9b71d3b026d91c94ff9713816c6c444d705d3b261e3d120dac619e3034e91a66905b21dada5e5060141c67bb49a35cc8bf9414fbbea6c2d83dc45d85f423c8ef0bf121afd93467540e2558782c4829481315fbe3cf2bcb6589ba0b2574e7f1afcc6ec3845ea3a4eabbb1f4b59ad626c244a920e6833730c1042343944608d4e3b341007f80bb19bcc11e5fb6b4d65a93381e50619439ddc91e6ac8f9faa550f01af17bdc80fe3571e65fa118a4143b3d9ea2e9ecca1c2d7c56d3ce53414a22665a8346cff569684be4dc0572b0337837fc43020a428d30ad41cf5c7012f1e3849cca5467e87690c32ea3fa74fa288065b04c2405d00893f41ffe2aa4dc2ce644068cd582697899dcb4a8e00443d80121f1613a72666f3dbd3dff671a52a651bcbbbc4c4d014a51429cb98b0cfa31c7f152d095a21ba009a938977257d75338afda82b15e9017e8f795e8e62e656755bac8f21b2b65e5675119eec63f3f5cd7062fe2917677b09f74f9a037a405c01d1acbbfe8af5385b7a0a84a31a921178ff380fd6854ffb79daf187f1aac844c04347433721204bf8fb2ff20810a3a8860493cfea879ab036a86d96dd7dd766dfcefb1ca929acaed67d5ffbc48f4e9cbaf6294542648cbbff0bae16c0cbf49763976dc91a8bcc9c3a71ff4ca6d7adc37c2a7bba0647ea8ab10ba813122969d71b9017feabf07afbc89ed814628b630ee6242e92a5b52e05929f9385d65660ae4ab807dfc5b371448571b851847fc7305a879eccf5391f4fd0e355e49e57e47af519ddb4602544babbe3dec443059d0aaf5af1dc1dae8986bdfe811183bc402a47f9d624b163836fa1c1ae3c30618b4e476ec313cbef505565368bb632384b45216ece97efdd4dcadf311965fe7afd6fcde62181b7f1b10c10d248db25fb5c630abc370bf9deeff6f87afc25b5c05c4218035a60093b403d25d0049531410e3511488ef1888cdfcfda9f2f41e4523737dbf37dd5687a46c8b61d37830366fba7f1debcda535cd9248f1b3e9209d5d6cf8b9a06d07158d796efdd2620d2a0518115b38721af2402d9242b28d7331fd6a0bd45b4004d11cfe08540a0b4c67c3de11b4a51c81d78b1239ad1e65c116026f25b7dfa6d47426c2adcc064853735adc1cbf99f8b9f7a77ad33d88ea42ecc9d4a15eaac6edeb5ca6e6df080463212147262b8e56b172535633eaa8e26cde1bccf5b810117564c9159dd6253f4b7533249e7054206c548b24397136af6c509a67e9a2ee91485d9663a6bf26a8f88e90fef770b519860b40e7215efe77919c60c2edfac345024303c5bd54fe16e719ab0abc545ae9887ca87c941e1c5a43e66486c531beb873468322d2d730e5b64f6718b583b59a3e3655e7095dd2e8629b77f9986dac3c79ea427b07a41a1018645af5b37264905d626dac41c899de15b612b7c7defbd110e18dae12b11779f1690f76ad846973ad57d77d70e8757a755c4fb4f815b75efe2da7eb737b22499eeb56951838299742d7aeee509a79db2541ed394b691a83888b481b4b9ea857cdf43225b31399105443352ced27bc516866c4ea55f9cf2dae08881c9d749aa358d17b6f8022fd386471a8ffcb2481d7a26a2b73ffa15e13f94066cd10f2760e7b31cb3c95ac13e3071ab60166cb1ca8c542f4fc6f201d1357794d8114328c5688f09db1815e0bb3dd145892621d2628e5c53f17d74ce9ff65cb65fcde01d3e61932a52168e8be57e2f6b10f365ab304bac3a150646caba4af1162a87285d4c4e8444ac10a2510ffc586664f77afa9d47fac2d631d10927ec6b6635792b37c5f02a0f093bfff8e29d295aca5c04ff4c3ca904d77196d422493f73be89e590111fa84fd26ea36be1497af42f9495bb3184a1584771fb4ac79dde0f655737e67f4d14d0ecc844fbfc5928b6d794f5f1a8a5419522cf2b0d5209e2d8189c91666369114735c30bdd2b0368e8a83d7f3dcfcff2f633cb711320f3e197bb2801d9ece8a7ad028deb1808e19b34e539853937fec121f34e4d2a7363ab0a82206c0032eda13bd3b90918d8870f8d1985a6252ccf44982b525825de133d7a186067e5165e58e010a6b8d22de0e42a863a47102908ddd1323bb0c7355637e45a81ad07a1e5cedd0e92115bf14ff8fcf30739c2eff275b8add89ea4feb5c1a463e87d9093e5a0c877777a071605ecbfdebb170a52502369d87cb00a1dabe6ff313cc3c5c420ca6bee1bde1114031827cede2e6d1852c8d12b1401093fc5090e3c2a8d81cf54ab092e2d860f70fc93628024a21d429160912b4fbb65871e4301c8281975128e763404b5bf7396bfae798351a2adcf85592c49609f5ae9f640e748a012a5952efba1203f67752caa07bfa1a774d116581780b4224a50f4954490f12a9e4038955e2c1c42a7d50a24a7990a84a1f4ab4120f2552c987121f4a2e3aa01b12418ac0d8c0a6c028e103477dc8f851286563cd9a69742953e2ffe46b28cc086c735f533577357720c4cc26089eaba8b6502aa2d6c1f05486475fa05f885c8f0c1bbb17b448043f6668f5828e56c8bbdbaf7e88a3aaa7ffd8a572a166c7cdd4bdfa4b15e600efc5fe85649c07194ae512c665d1522a9ddf6adee49d9e4b8a7047b06d67bb1d63565493b40a6ab3c6efe65ea179e388ede8cf706db7d8b16e4a529fd4cdc996d136f1326a8d1f10acb9b28bdc2656f66a798dfc23986e8c74c224cf72133df775774e13a5a9be0682ba93ca7cbda7cdeb252f288079fc1cb92a4cf31ab700d91985703411303148e4a5eb024cb396cd6b8820b6bf05a5ecd4e665aa0d76a6bc463e226b386b20a26ef118e6e6c9c630ebc0baf44b7f9a95d525af39580827da98294edb4bfc313bb8ceaebae8beabd63cc4d8a1bceef379b6e8b8eb28da08673e63f1d64c50b0790dfb6d4ac562ebb2f7c91beb6d05d88272dbc6ebd6da616c33eca58ed2d985fd0cf648954d108fca7e2736abd6cd27385f0428f06cd1a16696b49d184843e94cc3dea78e60f4171ce6c318b1d61dfd9c21d6cd7deac9b5267cad4cf5e1e82cdacc4d7878ebb8153d733f112ab12bc08aad351b82c1910143fed63f8d30decb6fdf0af988a1eff2ac6432fa1443ed52edbbe2330f13d8cbced75a0d5d689880e4c5a5ec9f52da8ed2f988b98d20270fb4fc10946e65fe61367d3182d90faf97b8a1eec8eed60b9e5d713863ad419e921de8e8ccc31219998504c8278e457e18eb32c87b53277a9a7bb52ea5651ea661ecd9b5561d1716cf40beb4299bb968769c745b391f717a5caf5586ae697fad0e95be2b0e3cac76b0b7c612d8e5c0b1ce673d04cb3f9bd0327a2ebba46700d969de9a703de4651ca19522959a489b054caa21a774563f0521a358827eb476a509d5e14b87da801fbb665ff25daa542ef1ac91a79d2706898c7d702f73210a5c6356865612bab01c7a590f95e2bd66270c8d3b82e4e3808bdc266be684d2ea30b2dfb730ca924c1b24055c4ae7479d44a26cb96eeeab6135a6214550b0873b4b9670bf4987bca28e7979213a1dbea91b1260072b8a489840ef32ad75f0a1690514262a8a41fbe2cb1cf4053960f983a2ccc3fdc84515daef4cef402bae053497e8808d62a2eae14fb4e25250882509c52f3a719056d5d8cbb8abcdea3cccdd3f852e11c9910cf809b14db0363c39d8582fab248918c452a7efaea3dc5a6b722370f4308a20d87dd2492c165db4958cf4c21db6652dc9b22cb5aa23b22c54205a905ba86b5a2bcd487178d646a1e6ac143a20960d337b964e7875fe65a3a11c0cb6f6187a7f39193ddfced7ab264cb072c1357b88727094182d981a710faf51169f1429050f2bf4f6756fe3ea9577be13604ee9f547732a2f69e6a461e75d47852d78ffb81975d97ed3632594b3ece261768a1ea5d0c5e1aba1be3d252f1227db34cc0adae451f8ea208cc3e7b82949982a3edf201fd78c9caaa47a114562091e25c65070f3ba86e70dd581351aaaa89e75449459071683c9c329609b2639c544cddc003a82cb2c215449adb440eb062e1be503ec04308a217aa0728dcf78e0fb75ccf311fbf9639d3c3f9b998d172e1c86c4855e4b712233a2e7a4840dbd99a1c7bbcb951c76eb3a86c776ec7cb0b9e51d307ec9a028176f63edbdf98f5608cadcbc98350987cf990cec24478b1eff10836e6e39e4408087ee50b1a4889bd6aaee96172c35f31982fe24376bac3fff2088be42f610eb679077379829bbd543db52bf06c756fed747dedb5c6d18e5015883850608f689e8e0e38e7b6f73eb0d0ed8957d9f1a9a951990acab77e376303ed933ef137ec9792838072eec2b348f9587167a7127278801979fa6b7c41ef0c2b652f60ced497c64f398c87d21e214a41795323892187ae9fb94117cac9552dbab8e1b320d1e375352f552fa42e6838fda1abfaac4e2a9cb977633999a4efacacb04f24d59bdb720286baf0cfbc924db316faf057ec5c02fb103724d4df2c2dccff9b29a47eafe796a8893ee3ee93189c6f1c163b6c6bd486db0308a257d5b1ceeb825681b2d5bb1260dcd261e3dcddfce50be7981560e324858084c8eb184533efe98e7c55ba62802cc75572e03684ba9e27c11bd59fc1a189474f192401bc6f4a00d8423d838a8b9b4c8108b44488b2f3f27769c4fd81ad49d5db10a82ccfb97318a88b5096321247d2c968cac4d6467667fb6416179349600c0836a5ec975f40b5292b3677d20403e95f6492b7011cccefbb57ed7dc52b3f52b43a94a986696e18b377bed8f06e7229e4b2dc3aa22038d1b9fc3c5c5392671c38772757a2f81142d75adb5288e9dad0184efdd99bf77ae5649843ab1ae708800d7d88b8bfc7af09e1593dc7915913bcca5705d791572b0f36d7d9f4bba32242c63a030323ec127e878be5f503ee4bccf65082bf93c6570e566c89785908a284879efd4861223596f4384204716a5e9e9a2a5afcac2beefdffa1f92604cb79760ccb047f33b1dcc6cdab0425d34722bc56613b3f9bc612903b1b96ca1f80fd797dc36a62d603920ed0faca156cc235452c4065d3e43ce7fc813755c7823cfb8738ade92ad3986bb8b6687793990f7d486fb90a09a7dea552565c8db4061d8c2ec284e9a4345ca65b0ab7a86010a65a698011bb51806880a909ce8c38b9955de824e8e5be50dfcbff3ed67e981bbb6ca915b26e62c089d7d0ab01908656fa72902675ff07ecec297e4dbd9a4b5b91c65532940a13edc1f3e08007f7ec98251dc2d86f1aa2e33c03b9f83d5a00927183e307583fa5d61fad8285524d0586623a35554d8b2cd9504647376ab7cbd1f99444e33819dbc45f85deabb2af4e208187952615fe8d69025b573f616ef2119c2ebb0be7f9eb10b6e75115394f37ef1a6ec97adc57213442caec24f83a4279ed31c9ea35f093e9fd7cfd3d9c774ffce2e54f517b757805663805eebce22ee52da660bc06b91d35593b027421e66c8617631b50e75ed192952c5d923200d7523e4aeb61cfdea4faacba33b0b47aee9ce00b49b19dd3d13d3b179d00ed4e731af12f0d14d05198b3fc5802d80aa14e44cf84b0b7b07d0410cfaba8b6d9cbd6924a978aaffa3bdb6755df0b2f54c64decbdc042edd864801dfe76f892adf580a7082bbd81fcb025b7247a3a719d161c2dbe43b80720e8fcd4059804c24b941cb0fd7379dac819238fb60cb48c76ba637a1dc843ca29b969112d9c1ef705c8a3e0fbc557069d14cc54897cfc969ccdcd9bf47dc02cd83a0ee869c880632650d80100013285b82b0a803288687751cc3df7d078f36e17db1c9f6d56a8e48d7bf1cc9f1079889277d0d87fe61a00198527a343a0433df887e0df25b6f00c8d8f33a8e0fdedbad2f4fa48a512b365d558727fb021378caa391c9c0756130c4063b24463d7d34d867b106fa623816d95e8cdf7dabe2a2362eaf46c4f48e8fdb20e98dd54c1b1391d4dd910ecb2237e7ddcbaee2379b371e30b4fde9a6704c22c6f490c7903c77481fa0404a7d1752b6907ff986cf2592164d8510d7ca8c01e40e00ae328f41d23fedc9b77cbf3fa1ebc1d833ab34e622541ae9baa1cd5dad7226367aa270464cd3b7c4ec5090da248c2191106d2c989e93fa96339dc83377370e797019bbe59c3e236ff552aa2bf11e2b5442beeb3faec38768444a9da1e2ff78f8e08dd15b383ab24f8d25f2d808cd05a298f2e0315159e75db8bce71603d5d7bbc7f65ad69ee7baaace40e94b372e001cb81fa8010749340366f4741cacfc10c6091bbb50552988469c6f15bacdf038e27d3de158751b0a0f84f814e2b6c846ec4fabc00c4c6554d57cc94495c5a1cb13142b230617a124f2aa233bd9034d4c3c545af368a2bc1e2cc883c89fdf9b3f2f7e793000c5913d729afd22ca09a58bad1c27e672a206a0f4be1a097be22b3d88b4a18238c0ac39f0a6f4636e794ae25681f1e9c0711f63618c0e57d66860b9d74139f508b55829d6155acd6a9ea87d9cc8c8caa61c8f8145f1b62a443eb2d3625a325bc089318b64a819bb346c6a120ad6dcefbce48094836bf400269d5f3a4025fd86242404fcf939d4469fb7983607d86dd94e22904682c591a6e47e386bcae2b0dbeae79aec6b4f63d291f6f6977173335d785260347fe756a1601c8ac1867284e53976ba44fddc3b2b5b60ab251957444947ce8a116c711b5d16916080c798d97a19d96da36e64854c3772879a667aa253a2e5617a11d51d92a339df33880c311fe239aa51c0aa2e368ed23ccb9fb6da2af6802993c177094545ff50020bfb807ace14c4fb4795ae195a49246ec6dbdf4ccea0a70aaac535caa465beb0b0cf1228bf1510f904a3ed4a6f640aa67ffed850741cc731e16890ae3164171f58de8f9e66ecd3617f12c5d49e7132c0976661598c13384dc0c15f76ad6bc64f91218a1a5d39b1c32f18600ee9cd6c8d2acd0ebd5c29ef56d01d269ea1cd1039587447d9b823ae75c216eafa015902a346362a2076cc9aafaf93a12f710800949ef7027da464e7230a94063396494fca7529ab445de5dfc20ed0e5f805b3ea5eed05c231eeaa1566671b946f230579f9c1538404dc44d829920c5bd90e09ed04a7a0b2aa6b2c56429ef4678930b07f2b58e381a450bafd799ff87c513d7f4023a41f5b41bcac5bca7976891e29349e32051e0d02db67a55a219b0394fc7af96e0696c629b84ab4b4523be8523240919f6c6f2aa0f9075720026d2b7385d41ebf3da446d57cd34da4a1e827677f94699b303a8cd868191d51e24c454ef8b8dcc1347aa401e0912a4ff1acd91f0cbd535c4e95d39d98415ac98fbc36d1bbe943a9796e50b1c1ad6926e636a6779d6f3c474a1277aa852cfccc9e8dc47e02cf4134b790a22092221a44dcb3b4ba4522ac77ead6c177aa6aabdf1a69df5c15cdd4782954215dfe8c4e1726e273a5f7ec7931a53893e62bffc307d65b5e137ec08cf27400db22005132374234756d9ab3af72adb36d23ae5d822f4805e3b2444fec5b5582413c0bca586ead8d31d025c5b0fc096ada5f06e90cba484d3430d7f74ec538b435233b6166aca4a92ab8940b55fa67ed07cfbb9c7b45cd021622c1e329b1887e658a7ab91160b39b92ecb2b3f0ca2dce6c185bbce957e9ece79cebd5a68f7afc3ef83c660e0ad1765ab3852b3ca5ce923ee9b4ae72a69fc7fff1752cf35afa5b3e615d967b42aa6e8b4f281f96b4cf2a0d2208a9d8f6201261bd4aec0c64e6984324148ab4b350285f1e84b167895b405f9a38c28c0996757d0a7c8928d6ffd7d12c833ee91c411eb2a387b332a3f81410e7c185dc1b4d2a982700873f639ee6b4be28afb8121b86ab817eefc6074daa1de067e51ff16121b02aff2ac266290e0200860ea2a19ced94cf62860cd8cb5e29a15fac253d773957beb87db56593e73e919996e7b3801448e6e8d2c2ea40b9b13f5cfc942fa9926a1b306236f48cb8f6ec31186108e297f3fae19e3a8d6a726e52f6e93d0836abbf682731e1ef3fa05e730c3a3cdac77e3b835e2b2e2dc0ae72736c20ef4a9fd9f6355bb01434ca962aaef0f85287718d3fddc9d69f879f98dc131fd334ac78d0e084dc3e93fe3a9f6e8314479576e61324f524e3669c0b2ead44b5de37bb6fee347ff24797600a8899b86d37a486535af13d7d9a86a0e38f1879af21996b9cce623a5e4918476057cb836819b2fd0050cafb94f0e064804722edcc6b139e2b86412756c26fb7ca32fa8d1e675816c031ef0703978600abff2c14ba83230993f9d14762f33c480c461d1e7d92770deade9e4e30036517ba618d03dc88cad8fadca88e9a2a32c0da567b470db69656d5053a88f2683a4a05c5a149bf6b57028a3efbc3ec24b1f7369dec24f55d3ff184bd899bb93dd0c45df8f9f1de465021b14d0de68e37d1c18130fba939418cecdcb3ba617315380ca0f7c32abaf8311ce217500ca63871890c872126ef6a00106d5be059371b9f5394d932b8792e9ffd3720fc201ffcde241bb3fdd717b012b360ceb01e4fd3e727d2504fc1a8cc65144d7471e57362972811cc41e906dfb69a3488774bdf2179fd42be869674f3fc36a5ccd7fecff1d62c607443b7c49deb60be60433b07ab2e5c65b43ea43e1e93dacd020a718e1a5c4e2f2d913bfa0e58fefabf074660fd225e3a008ec56d3a6644246cb9e6c28dc7a184f56692988559e6f2e9af8d734d4a176d73b276130997634681b103bca0628bf8b9e21e2c199deb0bcd87eb7f2cadce7d74c9f2b2b1924a374796aba23488051ceaf2310010488de824434f7e32dcb06f7c93d7d79c373fcac66e22c979b4ea64dbd70dfbf920214d856000d49c6fc0ae87b3b640087d08b941b99e8d84ffa96316b6651e33a9c56c76d4873633908f318f4a3279adb8096e7a80e683984923ebb57345963e48131c36851a7d759bbef9b3424d8eae5536c6653a4478541da0093e37d0a7afe618d2a5aed826da0401980268a02ffe017ef06ba03a2d9e606ca055eb45714782547646330c050972c1b867c73cb25a8e7d0ec5311de32d5674a20797ded90ba3092f6c886ac108062e53cf9c853e849007e29142c4632be7a26daaf62019ce6be862ff84947578bb6499c587ed57389131f977208ee36e58015f7d19fad2966b11b98055dd179abbfe33b2740118b558704615d6ca230bb502a8352bc24186e6fbd3a4c97305a8b0420a8f7c400085c9df6eb3120d883a912d2d58800a7492a9280ca7281f61e4a7eae58021108f3307df080860b284bcfc476a69c9e315cdf481fee89bf4bdc562b51ea37922c94f79bbe14836f9288d6d2a2167de2bc6152600e3af84729c508ca1b1b98d61428ebe320872c3e51318df7702bab100b337c7cb15d2c059ad352de351b84cf2dd013f0f6cc108ee4fd86e20f024f443d2f93496dfd193823c9aacdeaad9e50874c9c9b1dfc4e42900beff48ee22c554da0e6192a38c4388bf5df771eec4100681ad04caecabd974140fa83e1393c945fc4830efa52f2dd0dd48a839ec26ae5a8b7d5d9a5daf4790ba3322176fccce45ef63186caaa2a4357bd2b6faff13141ef2d1ee97fae549e2ffa057c5600988f1d9305c6d54b860514103fd2be81a34302f3d206621f85069662702889b116ea83a57fc17a292b9643208e82a40e927c45ab18438b4fc9c8ea6bafc2efdc620678d55068225ed0cce5b9ea22ddfa62982f4017f2f6e1679e76e8ca51ede3c1130063f40828fb3551e63a7e8ea16201e0a36c7ae9b2074f71abb8bf7d641d00057578d3cdc1324b98420c3f752912a54a35ae6a6d22531c748bb9fcb0272104c1a7ac5a245390a19c3820f131d374ce157829b435b7b18a531e0643d9ee5c5dce37f2d90b016d30ee39efdef0703ac2ced28061689d7b22896048a5b69aaee2dce7e04e13f73f8b259c4546744ef6f0386319741260b3732b9f0b1f90b28cc1a14aa0db12afa01c90817e8e6ccc442dd5db2b4e4f5a4948655ba55012ae861286bcace620aefe147ce2c195216fef5f8fe9349630dd045cea20ebae71deff7ad9bbaa6209a547ab4604656c3b08f5dcaea719be0fa0309bd555cbebf886f3f8fd79eb31417157d1a2bdde49fe97ed386bb7de64162f1b7982502761b0099b2dbe1e03a5e27390c96cdfbee6e21143e8b53593eaf5ebc98caf0140e5f36d3855a0b1b9a620d7a427c326c98e7fd003a7c90b89c489acf39d17153fa727700addab475ee4e620231b1233bc955b732335c39a3762849bc53d1af490586290207e148ebe7f535c6fdb9b4aaa3fb889c47b4b9e7bb936de606af39f70b3697735bfcca5f20bd8a2bcaeb973da06b55cfccb67da97c6805c0af29c511f83cbe0b195f4c4f28587f6dfd5659255286545e34b95ba1ee915323156aa6c097a30341d72a45393d45c0bf4e7caf633357c0361c13a2fc2660625c6d7125bf2a8606fdba567389ce9f2e30fb62894198176d502d40e58e2f2bb2acae154edf9767bed166147a50ecf62f55027ad063b1187fb6d3886437f35d07ed2107376a789155490072879076438a15e773a255e0c8ceea332ab362eced93868092e9fa862e8121991f598b5eaeb5a32791d8843ff95120388241d31164f775c9052b8b083b524cb80fabfe013d368a05068de275f03c26e11e7dcb6ad88b6d628d87d182a3166d3671c19bb66b72e2f8980344991a8cf1d5a535e3750e4ca79419ca5e16023bd175fb3e7cf5956c381176f4ed0f0b45665359251c30a85e8d24f3038d7acdb52d84408080cb76c684318d0c4196d5be34858a953b09ad926b05a5d0ad26bed445cd7d98562b8ef7487b0cd473139f521338bb1b216c0aa6e2b796080799d8414b05632db3f891157e659a61996af92ee140a48d17beadf19a854ed62055b959694b409d192ec2fb2a32187cf39b9eb4fc2d48e1b1ac615b29260069e4f3100e4b50029c22b104ba97fadcd2a0ec0a1272299373c49fdad352655db1c689c2d3ccbaa1bf5aa879dddf5385488166f23881f76a6b9ff18357f084a95f8f877fa94e02ebd8598865a93d4b8722546c0542b72c31033b726ace01cd1989092a41d7f935952488591bb63b159149e257279d1977184bf2f21074d95f8290b4b333999da61c5dcde445c350616f65f0d0ac24c36776d5710fb464d8ddab8117b835aad5d3152200f324948e28561e09d14f0836cd45072bdd39f0fe8fa675afaf6a72f6891984772ddda289f0dadedc552a5b2fa80d7cd0668576ebe480bebff72ba54a86d35d7001b77025591a3f3d0759bf78e22e78a4fdf8aba5e8f72402a2b69503b91ba3088a2466d4e9ee61e333ee04c1dcfd0d09116fe55187ca9779b9aee4cf1186ef7d06954d3001ea9902f31dcd4e9ffa0974ef5498a84d8679c129a789adee4c45655bde6944ca4c916e228a4394d6b44a8c97783dc9ca732e90399bcbdd8408ba8882a3cbaf378289190e5ffe4ef75e792aca47490782853ff1c4628426f4c69efe610e37d220ce4769bfee5e118d1c6372c0bc7317a1dcd9d28625e102242617021352f81d69143e06dd04327c0efe18e2f1931dbbf3cab739a02ee83d724ec17a33c5f881537f2a51309b09e2c48cd5bbcd03e9eb8cfa5d2485ecf50e9489dd85ee3d6a391e2e2a2c33d76b1aba3e8072ebc55c11aaac0effa9e56bcfae687fa2f6f25ee6394b6b45b0b4dcba8fd3d1c75c0cd4c97c3603a2e2b3096625d9c74e3161cae9804f67e0f610a1d61a1f619348d9ab8793ed9fbf1cfebdc0efbf04fb7c98fc09ba2abd2c78462ba9d10bcd969eb14cee37c13b0fb4426472bfb46f3a6e3ef762611d3e676f4c3678e5b75ed6d02d375499ca653dfacaff2fde81d4b5cba7a808d3fae5a49809136f5e5ecfd8e7caad2554cf56835c14099dac61e2c2e66308c56f4bec69095179f942aca6c462bf9276d3fbc124345725053113389575da80a6543e276a72df0c900c85b4817086a7cfd2070eb0894c96cb109fac35ce887b32786697958f2e8dc0b9535332a599673192545f98065bcf12899473ed591aa219e5de70bd18a76bb59ab784312f43060739e09182b3851461bed00003d92897977a335aaf645c85e9dd42c3e2688de3969501d014258867dc5acce4649c6d3ca8693c9b3305af49b7cb20a0ba7de8a344015f6ac62f1ae744e73b530dd73986ba40b784db8352692cf1e78331e2efbff01479ea51c0a1e156425627d3f2e8bef85c07cace534ff5c9f692523d44391ab5974e4a4178ef94c7124906cda09c44bc8858865809a3946ed78697475c28c3194b4e3922a3d128f6f84bf6eca09f120a2181de5f76ac51cc98c05403a2b6b138150220eba9dab70349aab6c0c35f977da071440fbf3d439a889ddd98a32e1a5b4a0864734650f04c0866c07b3a74c93afaf749b8e43de72e06f5a1a35e2404338c26a0e1f3f05bc616cdf92bf0b30bd517b54431b0626570da89eacf2d3385951a075f0dde85bd538501f77044842d2430da380a98f9c90097d84136dc550841b851e7086598440882c2e3852142d0bae5d4c760b5d23348e76464198485da23ba989f0fa61ad07b145d69cf9324da41887fe91e84a11dce6618e43bda3f2b65520e08d316ab92aa115411e40c0acf80f4fa6b01b4f95707e121756467d8ad4965866690d9bc48ce87805613db5773fb374ff3ed0897e91bda20b711593f07a1b3ec91bc784a08b1d3dd074c66b904258ec0bead743aadc0155cdb03339a885d9a2b4f5c7bb01c80f6c83e0822ebfe4130bb8fe42a540112574d2b53108a8286ba61d5bbc58080731331c8a85f310e45de6f71fd5e0ea8f986028602ed11900d33e2d17bc2f23c41b680af223b48e5257662df015ab25844e1c72f40cb32a52adddad40858306b82309f5debe0ae80326b4a700e81a4220b13f911638bae5251bf329576d570a3905c48b722ab98b33bce8dcabc2d18bb378bd60efccd984f20b8570173755c848903a96ec167a067666934786633b392249cb2c25b44e8730397bf9abd8bd2ccbcfca5e058386dd72336783144f3a54dc998409812c45700cd6fa018cf15661d6482ae208dfca0e71ac99ec4f7d5ea8b373e02311f2b765a3a5fbb5b01fbd349915084747c5b89337344a4994b73507ed2b684e30862d449c6a23d87846eb3a6141621a0f36f0c739dfc80375168b097191be990e868c9e6db6d7b8a05e0dcd32696f65b07538a015c15ac7f00f9feff303a9a9b0f135c7e94607029d18efb6ef1c017547b900a5a1281e318e332a2f7d90c8ccaf55fde9116c26e4972d52cb277caf174c4e7b0adbb5fc1cedf1b1664962409f0a3189c768857487d598a4211c78e60535f56d3d557d3372acfc0189b1968c0045e8fa30d99e49b745b22a6204c6a9a9faf16850e0a24162a414bae8ef52a9c13e022b680ab60a70f56ea9b51b297e29fe83a19d6874fe026ae90022a2f2bc71c4215526d427e414ad7b6b4687cf0aa143880ca02056246065f86ce4b816948768eb52e13082466ec2aea495c88cd76635260adab4881c751aec6af1c8e7e66a36e857b2716c4304bbc49491fa43bb3caafb7e14fcf7ab0cb90c440baddb98065ceab99909563c52aa86c0bd82d6014deaf319a8b65bbb42bb521453443e8a35156d8da30d3b0ba9ac174cada1ea3bb9c683fde051405e5109a873a42ecaae3ba6f5cd96b70213bbef5cf815420b16c63ec8757f402dec17785e88be81bf6349719ea3afe20be8cf1ba39641186e77baf788fbef3c6d06b10229f885535dc18ece01c0c54dc2e59c3447307c2e3ee29ff82a7e631c697ca8932de60e90d6a29bca504f920703c43d6c51c2cbc760bfa3a9fd80fd0e1c7c8d47f7c2c08da4ee3b1f72d5431d03a6c0898e02e7bb22a9dbd3af05aa1643d201096daa74b15eac36b3cba77f6a25274e15869e068189b2f2b62f9c3d6f4e70323b71c2e5514947791c5faa194be521f884ccba828107d2074abd0a40f1cb74e285668044587959f2308f28134683ee0bce103eb6cea00f21d78d08df07ca08723f3abd207925c63905233a83537ae63db33a47ca0083b1f186e0d7483fe4367781981632582801c02a3e63a67c39aba8c5ec0c79462433a2f5a03b1aa0402030db19e1308f0f4e10d41d515e4b83a81008c0281919c7fd48231ac572a0df4911408300de91576e91694ea78c6e6df0dc0016d05e4a8e4b739de1bc77b99ea583db75e5f2e99a5d20ce553928e11f9848b1ca219fa619eca41c0251fc828defd2ca77a7cb42e8a5996d5d434d30789b2ada89b3531f69a0a6887472d2de74a3a160d38f5a6960592fb535b74f64c3ab7853d58c7f506b3c03049095b41d9da4690be495c16018e10f5c9d528675961c4989b4f86de5a9625c7fa3e5b815ef4bdd5ba5753d9035afa501e63d5cc29bbb9cfde7428a6beecad2eac5e56298fc5649e29d8d32a1358b79d4451c41cae451146d70eab0a8c9e96a7a9fc04e959600fb5edd7ed8a5098b7830b164db471aba043585b67c84a96ac97cf2d369634ca8ad7f0b82186a5874cd580575e8263689aceb28988275b44fcf37291a601cac1fff19334bc322cd26b031f35c9c7115251a7b087f8d5f20e0c83924f324d0a219e81b5262af1c796a6278001be7ef8a097b2efe5e888fb57ef7dad2e10dac0ecccefb152adbff1beb03f39456b2e1e892ac0b7977954462813b3a43ea36ac54e0ae958033ce9022e10289b60c91e4a39a4ab7068327a3a3eddefc51044152ec740daa342a8e7b6dc3ca713dcb12134b939bdd66a99e4bb2479a536eaf58cbd664058e8a1320a75485d6c97358ebdcdedc13c1ff95cf0e8c5cf06f462e02515eee0151b9b9767ff3c6f1a940c61ce111de7f70979f46dfb2554a68a99c85104654c9178bda30aea19256efd486a5634d3eeff8a885036b427ed1fc2fa2f421e426f69b58e48853953aa9dd93cdf9b9d805afb1d4a5ab60571ad9c292972a8d5bd25d095899f83a5610b9988ad87f49308efb1938ea071dea21b7b052f8d71f84d1703af10dda81cb1ca5779fa295181c95e339bb4a72cd0f4b3d5585cf90c4e2e97fc941359b5541b10a8410836e32960e13ad2ac3d6086719e730ba1f4c02a798a50159f063b028630652e505731fb02fdd1bc90cee2a8bd5c2d708ff0405d5b4da3cd4733e0849203810bf0d38a264774a5148d27dedb5c351c67fcaf4167d0d17ebe8d965dc4063d42ce6fab50cfe05ec9aeaf5f0c9d622efda8153abc74d9376e6f62c5f0b7858ccc776b45ca138e07d78b4f44a96a61329e8c275ab1b502ebd66e1c437f0dbe206294b3bc71ad1c2466334ca078b945837bb0c151a611de0b48044a37ef299f3bab2592ea48c20cbeed9a801598ad4ffa027aefca80ad25d1cc73d001bafda2822611e4870296c2e6033425505fee12b68e233b321de69eb6906d8e136871ae20f0027287806853be4bcc08e3f60f3445c5e845431cacffe4ccbb6ae3244211704e27a91752b140ecce71fe62607ba507a6b2d77c084153d4750911bbb985ed1e7558b3f2e910233cdef3e60372106f0450db50b0ff7071fa66e09ef0e13c8ca617707878b5fdef067b5ca6c3c5b3eee1b0d0a72bb004a56864fd8111405f12a2df2417089e90dfbc9a1ae7ed7363fa96203cd1c51d7b2eefc4ffeb4899c0a1ec06b401826b6a636608880af556a242cf37fde70ac9400b9446cd6f089d702d6ca7679ee6a73405918c4abb5c872f99d9851593200cc453036030f7fc89509d9dd815a86e0dadb81062a41822ab88e8dca135faad61d5ca8e8e7ba0a2d71c29a7600cf84297f009f3907a1f4aa302d3251c1a9fb9b22c006eba842649d1aa3f65590f48c1429fa82b99939e5c4b9fe10d82a0c37e30126960e450ea2266d0d041b01351d01b0c27c92028ed71bfec491e2720ad15a4606c3741d0d4f59da301b2b848ad3a979b07ed6092c60850a8f4803d1f59247530ef7d148b1ac21216a5837229404bdebbb03fd36d07b6b0ad4a555afaf02c7932e6e8c0bcc4291ee5f7e9d9c2f334b0f0f15c01521431ea1153abb4b139aa60691ed4eb1f7af82701bcb0af902c0535a3881a854c49f9a5dabda8f49162f8fbd34427d4e6f8e81e5e9cbd80d0fe0972442ea93ed366e21421066d8bf164af6df9f166a8483a2d019903f740595cf583ebad50e651db861c024af0b07f5a61b54030fbc3b2f8cde7fd83786790794f6df3340a919af57f8821d9cfc15d2bb2b712e52019d5ea27b31d7157d20a176927a2581a58749046068fb49e60d6802cbe25a3873b2f768f9724159341ecc886b25ad48a702fbe70f4fd43658e412287c9a73f492c02c5c929a20a6f05a4869a310f46855125193dea04e2b8e8f9d0698a3c65c3d99696202a894adfd36048d329b215e773e816732babea5358aaf947a2f588175c52e1f4a32aa5a29243a9058b26465af9032271fcc9f2ee94a6f1e8dd9f3209d3dfd677829ccd572fe7ca599c5eb1bf1be5307c7dbb572472f6ab7d8e94a7f1abc5df3295c3d3f677a64e0f50ed70c8e11c870ac6440c74a9acce363fa485773aef6343429bdf10c406f91dcd0ffd8439c52ff1f4376efc9cc3fb605ecb8db6c13223a510ab8365dbd1e91a641d5e6795bab78832da973ca5148e6be48077209a37d7d495d9d1ebf469a394773b5301b0a2207276a88177724c70f6406f04571ca75fa97aa4172e09843be4016378482116e892f8bd990ef69684c5de3858e86ddc8a2b49ba4166f3808139810cd0916a757b9252b426e7a0325269010fb582166cea2bf7dec3e94ab7f1f9802ab69e9f22526fe0e28b498a400d98ba749a908ca21374bbd8d37956fc7f2534027a02944dbb7e2651f3bc0eaf7e6eff37766e0a045d41f8d2f7284438dcef6a5417fe5195c825d0fdd4380f6fd7719884b8471fb535aa6ba27437e65125d490fac0b6c38f8a5bf771647388c9926242222bd67bb47e464bce515e5d0d179dc275d3f2e496922941812a2d18325ccd3f43342af95c1505c88fdd51dc393136b3c34bd53c10b43f4a5497f1e18c1c97e5f6a43ea43848488bd8c2438aef3ed27a61bbecaa00709119c7bafa430454e20b2dface88cc03cef8d34e50ec0c0235499944bfe7e266dfa91e4725847f3fa6d93132f7667d84e598a7e99192838f2bc4e081be11d97961726ec40db7cab79ccb4913dcf1d1dfb61a96c99e5b352fb9040929b6dcb1b9af2f1dfcc2abc771dae81a9b7e93d6df04de4157b38e539f03ef4b95fb48fac707d0af0a4184eb74c6d559d6c2a83de8fdec279bae3d4020faa3fc4570f65eb32c42b094f20a844c7e8dbcea6f37f2ca4505022fee9f296e89fa713b4b00b743c494eedb07e8bbe4deb0c9f5d505264e37853bc77505322772bb182401e51ac4c6c853ce337de9d54ba329bcd3981ae49e69a8a32ec5a65f8c77c7c2eff4a55f44628df730521a54be239a2e894209af4e36ee28d4c764335491cdc34ecad1b9d6b72a3bdd0f24d19f49dce58565975d12f85e00cd755f5b588fce16657d93dd3a0e2f6bc6b577f015f5823fc65290530678f1ace085b4871db37fd8414f6e2f644ca6bb2bad6475f0859b6524fdd5804d4eea9513bd593c94d32fb5bea52e24e7a131746b25e8cffcfdd2627938dcfc99ab001ad44369ba5b2af2b508f9fa945a915d4a6f3e0822ba842c551991f00d0f56fb3e612363a8bdc66d328ab3c26722f961d39622299849d8f101dfda7abe7e804be3d641ae1ba0e4ce0ae0dbf9f1823fc790085e9437ae385ff16d570734833b96391aa94b4bd6d216ec7491ccc4db094577eb801e2d5ce11074443f91c7dcd7da5309daab197854ca24b28c01f51c890966589224d95c6412c93af8417bf030829297281a950f8b77836f12d2c88953c833ebf87d2e186f51a193ed55bb04bc0586c4229ee42af44d9a01b14c331884dc59f442c2b016d35cea05b8beb0333002283bec58260a65b1e247bc13d4c947f2b50b86368335238f43308c1565d319038afc266a2fabd459995b6922cdb9d728e36b670aed4c3dea9199659421d4494cdea673d727cf5bb8ccfaf065a88b8dcde0f53f42d1ff81c940a7e10ad822e1083a6a9a4ffb6b200dac229910ef9d525fe505eee68f673d645a6dfc298d90cad8f7a14121165ca0497963ca5da03bc230bcfc513b7316a09e961a6527542e934b69eb3c79d43b4b3ef5564e9d3f5c3508a1af16c947af696fb4f1f6201f9a771cf4ada38cf1aeb382f4af2dd336b5b012c41ed7a72b990d0d309fab243345fffbfd4735b3dc08996d9d7cc0fe58a7ed8fcb8d94db6bd167dc89fef035b39c68916d9d7cc0fe58a75b93cb8d94db6bd167dc89fea036b39c68916d9d7cc0fe382dfb973d51101b46ca658e4a71b0d98f42760d67115c09c0aba9b385372210d0d7949325c0ed2275769462964342a7020d111f82c76f75527da407580afc872e13365dc43d242793f0b2567a1739c678816c7635a26b9249578bc931994fd7648f653b608470910697ae7b8075445c1bf5fefd96778698c4621a36ddf67c40d144f8ed2be9d9fb68d2130b74f41f60721287f5ad032663e7cc960ff5b14ff41ad2a35223ddf7115ce0cecfaa17c46dfbb7aa6ff36bf3842dff594bc4db95435e8b5b814105035c1d065e9c082daa89a7df39b4961a1b3f93b2623f3827bb3bde3a19609f086ca50122d3ece533a09006492c3b721377a6655c770ceadc003d1a71057aed5c23f1f84e14c32bc304896ac390093cd2eb1e41f3d28d37a1b575a8fb8b122b7ca4a579caf0cb03afcc8ec0332c24d1642e382271840c2218025ab49a3db5ebd49fab59bfe1a0524f02b738b7f3298ac5e75f1434720223207ac2d95bba7376ea310fa9fc199b3d4b327e7c799152f25f7c3ecf3cc438a970a875d828497d962eee3b87d08a9137b419d6cbc9091318ad9b7373e565138a8df8ce655bb6c91dc85e81815c13a1abf739cbefe72115f51761afcd7f72aaf4f72edfb24dfea0fc0808a4350bddbc73b9cf8b7e15f42172a424ae75a8c93cfd44302676865e24aa9d109a215f1845bd8be5790294008f48379a7b120b0ac3f05d12d433a53b6fd6f8944e499fc21011164a733b1819e6c94701cb16485b0908979c3b769f67e63b048bba7b512c6f110b5b06680495060773495ce665874ed2af33705180558b8f2f432121faa9300adc443082b8ba93ba71e58c41629f7eeab4bbe67936c9e9f12ac98994673000ba2624d2d84694628175963311a5c2e4cb478a2131e32d91f23ef8aa78e678483d77d6c68c8d45fe574d0e897d23af5741aa1c67f3873b8a34733cb9ab981c4edfe8f09726629ef877e28beff34dd9efbcbc53d86e4c9138ac4e5e9ee71b73eaa866339ef8f58bc0052966f939aa98f415221db0705c6f0b4c98c6b2f0865c4c56ee3690d665b6860431bf2a6d2cb7d015a0fad8a7eab28f7698d42b7f8353784b10e88502886d51110af52bf65e43a9264d77d813358f083eaa27e4d011867d4c84598489e607f7654f4bce8bb820e6fe9d7bb0c91d00fb26114046a223dfb8dae797f580a772e728eb35eb0fc166a91e178229801253e1d6da04c0bc7e12965c6d0b1e24ac078a5480ae840600c8d4f6ff73081d8209f444b189dddfd4270585ff67b0f5e5503ec1ca50fcff8db013b737f476e36bc22fda5c13677109d488c2d7857e582c6c870c890739e117f7e56ccc80b004f996569fe9c30d44a9e490427137c3a10abfd06ee51b5abb3996711fcf4b90c447dbcaeba6cba50b16bd2b077039d21b257e4ac7cf2d9c3cdb1849e75619e945982b62df3a80bc632a2c10354cd641c793f4517113a40dee983a366e2bd43aeeb3b3634e54f7ec2e6f39d9d927c07d1777c60c2b5f74261cb2c360b145cb52328cbe93ffab0d9d81c94930fed9228ecd75110138812ef8ba8989695a46aa97bfb8e4a473fc899030429e2c8c60f0b3096cde53939a06055c19140883a61dda873be28900e1ffc03891142ffecac17da45e0663f2b8ea28e34fcb0f2ec99542c4035abde34a7caa75e28bbe7c4523c81df6b643993730dec31a1daca644eafd1f74c58e1d60de8550d157fc0a431ae778a0eeb13360c0b51885425e8dceb4f09ec30d23c8570fd00d3c503dfd3d50ea908b81abfc80a46f04b1342165323ff28c3592def32fdf363bf121834abcbcb099a052d534051c44fd824c06a6ab233ed28edd3cea95829a2c818f4d910bd90c6f7a30a96a2aa8c751afd8269c05d7ed8b4b39118549374883ff8df2103a1f776deb978664aac86f4766e89e91e79930140b72bab4c78415a7a1b980197e6d582028d0c1055fecf9e63a36efcc1df9cbea9ee6f9fde4fc412e21b46fa03fb57a390d7e7f4ee7f63e8b0fffc4bfc33f8530c44b6bd6278eea37802701d46370ce46c86dd633168c82a4df0db23a94ffe247631557439d44662c1122609002d67f3ad3814f7eaec42bff3aa3b113c7daf06511436e84a7385e9551f469cb045c1ba56e0a0a3f383a9e6fa0689fa1f4bf4df201c729dd99dadb70bdd5f11051027717ae97b04ed4d4317556757a94da82c66258636987286d520716728471f81b8f1889a8e8a32b0e7edd607a5502a26690792e13aeb5a8c91f2db7521dbad55ffde2df6631b26e26730b531ebe059c70b1f8b8be76e798e3aec4867bb992c04333f3cccc3c1333cfd44c339bc94c6632b399ce6ca6999879e6669ea99967329399cd7c66337b6227ba09c77569cd3514f5b8d77ec722fae385634845b6ebfa4478c2aee142399c62505e3d8c1544f19437dcb0a07ec1a7e859ecd51b5911152163b1d7f2a50e54b2bdd1266521079175a38df8ded1c963f8d494646a2fd204ffbac201ee6e190c2f9a5fd88a2b422c005c673d24d6eb381f41b2b552c7976a95eaa11d545deac7a14854216e7380c13d92520945044738a916332fcc7c0d4939d5fc2ae9909781f100e811ed11a8307e878b824664443f61d152c09d0900582c02806b09e47fda5ea160d748eb18e0ff852ef24fec8991abb935534d399be9a95b3fa5a6a96e373e6de9ae5c35cd69cdaf2ebd91b6b63a9df1eaad3bb2d26cb7353eb5ea575a5ae5ece6ab36dd945bb35ccdf8f5aa5b52d5b6b3999eba75bf40940b154969c79e9074f15afbf8c61f1ce3d30007f556f5e6ceb8d4f7c0362d9866281ad2973d4c205a98550e79a20aaa0bd31cba980e6d86adb447e832de0f75b37b2cae781ee1959a81864f64c5c8584eafb90ea211d32380e67a981ca8004dfd20325bfe4d88a5add45f774b07a1145bb0d5857ff00b9c48f0c60cec0da3a7d7c4d051d050516e2fd335dd9df3ad665cf26ffe54f18f7b6ef9d9225293b174808728bf9cc8e3ac959a54db712446b3eb0caaa3bc303a36ff60adc7f1070c231dabc9160a74f1270f67ad7943cc1f4b06a4f5a02e11437f30332bb9d5f524cb7483b5b6bbae2a8221e5428639d15256e04fdb1d4b7b1539913a4245b0e22d7c9b4bd24f2a0a42a3e1837277c41752530948f434b8d2964f6cb4a597aeee475d4f7b20724004c168880054ad8bfe22b6e9cad9c0425c3ee0ac51a0e67e244fab135266515872844b34c5056d14a582f0689dc853e916c4049a2e218e19f7b0660cf3041de0ce65ef63badfc6e834e0a3c60f61634395878691e37470e0c0acd4e90a17f380932a33f8067c714ed28758a188c48e50711affd8233e74c53d84cb028945979c09a235d69e4cf56d744ab7082a53000b81747134522d9f0210431556ef227f531fb63810e0f94e65da12a1046e9cf406d577bf1954ca2ea68d882ed51d72caa162cd8b86c8c8942fb63c9b55e9950e7b5b0767ac38fe38a3a3723159793d49d9ee5141a5eb5b8ae2b68612417316920d73a1b820fa267852b8e2bc25dbb2ded9ebae1e92dc248ce81afc7a1c4a6455052975be946cd43a2c62ee8cd2f07058455b11daaabc629e8fe2815a87196d449a9c9af7388e747dedb4e47dd8e1a698df30003af91b3ffea21c587b47bb9b3019c77ae7cad583d3b61c26390cdd2d298596e640ed279b79a73fad8084a97111da155c9e9eebfbce03f4609223ae8435cae81a9a58789288e4ca7e109c1bb78490e8c7ba5bd3066d8fc5a5862c92941b276744bf55b853caf8a50ce8005ba852c624c49440008f326f3b9ecf30dd458138c8efb6b30f7048588d1bddb4324943cdb1ddbc035f06036178adc2e38490d23844b918dffe535a75e9c7bb4186ac903b96f10923e0074d729ae13a496f9ca9a88343441b12e991c8cb15459404a8d178cc0911d653fa89be3ba4d550a4916cd06c6d18e8f1cbcd6b654689532365626efef875053b39923e2af135a903ba9d5360bcb0910be78addba80e4b0d88a0d16d4f6f03777a0848e4d37d0f8b67d161dab8f35202c052a2cffda030a4c6d98e5d40bdcd1affd1128747ad2a3b7530cce53966f2f89a83d1905d6c9a910c3e71148ec5dc1a334d6b5d2bc449f894cdcccea227211e0254a9ac7c1a946c9767c543b4c38970cedc24b292f2f4bdbbc0bd7dbe86004fec6d14d74e6b6439a27a3ad39d696380a46e46479147b3ac3b50076862513642b0c551c3b489a3ecf504a1319769fa604e35d1e40882b99ac89883d66ca8e5e97a6e745e82506ab77678ed89c6d49910f793458b58203f6cece31507b2f4974eeb15ac08f06b146c5e8c0f41ea4da1391d4d17b01e9a1909533e2f0d6c5d64ea0fe7a4188204c8ebfcd499890d7587915ebd2b0894901efc6189e2fe725c18a604bcd1f7eedde0f6e30b1366ca94b773c3fb22be7d725f694f9650ec212b8e71c53dbc3c2e8adad0cb689a98b6ff3faaf98310d31dbe2d2a1d9a1ed75ae1a5fd32f59bfe9005513ed0ba580a2db978ad641a2689523727b79ed16fafe9d07dccbb54cfc29e89003f3b6249a7b40e9ceed8a21197a92eb8f5d7a4f55ba48afb40cfe2c04bdafad422002d681326842d473acc7ab5e9dafce3a1b5e5875d3ce59e65792d168f9b3c8c2fea5e060fbda3907ecebcb631618aefe2c3d474467f9d32bf0cf9dbdc7ea3860e0d5e341d9cff909ae5745e94474acf81490b9399aaf395c0feebf8e251fbcb16ff99034519bd55b42220fb975dbc2065a07298490b67c5a806947855700a9f3dd8118628b34822b92986091e6e6c3a7f4b8670e4890af7b2459d6c64ed876ae9b3c195b32876bc61aa17872476c08276486abdbaa3d20d7646b6101eefa1303981f2729211a4f6eeb1628be42f13bd7b860d4f67fda088324cbc8d3a3529de110b7970889eb90c15f494b0374505491ae0937030ffee703ea27a23b432aa87a514318cdfc6ff4cdffc1d3d11ef4fd5dc8fba4b435dc121f9bf9f7e7a1460d2b719355e75f040105aa3a5ed4c601ce0e1d68058db0f647f9a28768d366296f94eecbfe7b47dc1a2e52f7674b7d9894b31b962b25278c5531ffda5e58b82a0fd857163d87e60176837833a43bfa8f68654c5695ba0a8f305122b308c6c1b2c33f2016ae103212e1c115442434cf1534d11d70b01d16abf2a655813cf3a9dba6b4cb0c9173a32f35d118f2c492180f79cda23a778b27efd99bc5ef6cca09a920881151467d2c13294515f235f42962a748d8dfb523a274dad14dc72b0b204c1237931c1cb139cb2c440db7c63fad00da14843e51fe6e05448438e5e56c62e629d36ad70795de0fd59aa6d31e98fe421baa699bed990e8d7658586aeae52fd109cbb3ee1328ddcd28627732b1175a2e643ee080acffffc41aa9302f606c386041b1b627d1ad259db75879dc002100a81a263eb4a2288eda892404c54af9df7608d9693dbd739256fdd4a04c3e5a9a8147589af58cd98f2ebcd30e1fb1cab9bdd8fef84458dbf805ae25e0076ccb794e55eb588ac34b0b4c25667a111218e25f53112a356b4627ebb43b6859b2c2ea31fa4340bc1ee0c87eab8f739c2b9f704365df712efadb5de6ebbe166796d79e15994e2c20df1d4776a9fe0176d1e4adf07c06463ba8bc9052e828171bfc9a0f91512b2c21df8f8e3f2be9426c3596685c8205623856757a639156b6a24a20d381878e0545bb533c062a192ff521d0011de51dea6ce1c6b9bda7ae531a161e2b7d8c116b1703bbe669f7cb7b56f822c9f637c923196007aa019a8249724cfb8ab21a205434ea3e8779f4d8a9d527b4a07c4deb13a70815900a3acdfe64d257a81ba16c1efb243669f3e36d2cf5e377f99f63e3b2167b12dbf974fd333b0411f24a402741132368195c580c719a350a28f115158a6c1052b40fb7fc33a70afbbb743149453b3dc99cb68d24d39a3702f2aa7de0a2439d60ae8415071e2fde718602a7af0bc47dfafe26380a57dc718acb6165ef2db8f7d44dfd98bc1a82546f4b10baace004c609cedc7405f34fa1b10850f196c6a9744e712d84c52f8edacefd2ae3eaac90877d1ca78de12b8239cc94a0cecb559b48e5e390da920fccaa2018c8e92355593eb0d8852047cc3245ccc3f29936ba229c93432db46ecffa5f73c4da1b8d1bc826e91cba23d2e640aec327c602ae0f9719a937a9a2a9bb4593dc4cef1c34ee0eda2926098d62dd2753077f415d7e34a49c7bca98b0b8bac8f3193d9ca14f753f55c88ad95f2a9bf979b34617b4a8a9f3c364eeb40ed32d452610e3d3f884fb3eeaf9386aca9754c98370e0156542e8c33e8846dc1ddd91d7fa39f2826924f3c4d855838b391dbf6dc61a1fa0573876b686db0b7c22141939b20671e01caef8aa2d5797ad14c57b44d959f3944624c83e8a94258c04681b04fc42e4ec102bf73cc15f2ca0bec9cc130532c541002f20207c72f22cc2805703029485fc2a29681701c20bde77785e339cb4313e977c52f2d48ba65a8cb6dab45fb16ad5828b9beb40e4b82dc2857b2b5c9a4b403683f041bff0dad77c2302b57fa89b1f3128ca75aa8ba7adf663f582a2382246cce9adcec3d0e09ea1067ee89770ec61ad90733392a334aafebd4d85d01c0152a7f40900e73deb1cd5ddf404249c31d0390673795ebb9618b745caa6c8198566f367172d7e490d666f24475ea9315a1faba1406a8db86d2ef2025f33dcbbcbb2ead4efdab7fbe9bfddc1f36df283631e1efe26b2ffacf8bf80188624445469d88e47fdde0d52d37643e90108d67ca5340465caed69aa729d3745348b95197ec45e148dbe5ad7083b9dc1ad2ea9549bfd459a619add68a7d86e74ecdeeaa28c31a3b7fe8c74b3d77d5ac2e85236ebf94e648b9025e5728e6e4b75861159c64b189ac58cbe4435fe8b6cbb2fa32f3040f3dad9b1b0db3fea702ac470327f0cbeef83914b73df1884e29ca7c7be052a5401bf1b9ee4f57a3e78abe90c431362f4249eb296f14924e4b0a1e84c6127c1e8eb387327e1bde849ae220b549a9b2ca619ef87f98fb284996fcc4bdf4b4cd07bad70354f3627b3b1b6f84f0701c73e45cd2d16cda23385e89829100c726867085e8bc477968cabdffb87d8abf4819b6a26d1ce41dc9301d08bd7caf4f1869e4c450a14948811f01c71be9571e6f2e7f51e0a270e61e270e6fc40615d1ccae1cce36f2dff0c309e801c3a951c9a057def3f65132f7e47863951058e8d23b48b74849bc050fc015b28626a8e6dc6b1caac37bf13a36d2066364f8481408daba52b37829973b2c9252da07d8665aa0e9a3488ed5805c3d3d1d3a2fdac175172abf351985c1d70091b9084a1bb327d1f29feaedcab08784621ab0255611b8a5e312a719709a9dde5bc7c0e23c4a153e842f318920feb3511f421bc33faab35f8aad140744df4ee80f475ccc1fcf64303491ad8065891fc5c5430730f7850d04fcad9316cfe751ec099dace67a4290843c96f422303228c3ddbf9475f9ae439706a7fc8873c0346f08cf31383a0d1e22cbea762e2b83d91c96205d31837d7c4da6e19a5b5c93bcf42789a7b83267be34e47eb946183052f0cb3d293aa4cfb27c95eb6ff16e39f0a24c9b6780d23d7468848f634ac88d15428ae4fb0555a816a4d9fd7f08e0e311b0f3336b18c19ac0784a16cb26cc5480ef4d94dee797b38d95c0c56aee0d09205b5624323f50994c1b028ed67fd21cd9a147e6a8c3c9ee8a859506611e0b71b8860c6d8f8f8e817829728fb3f9ad5530b3d5cefc355e92559beb378a6df8b9782b376242a9d4c9ebdd4eab3464842bde9fdce525cad112b76bcd0f3ca7e6b5994f78366ec51e4ba56e96ef4633f10847990c33956af40d6da68b51f6ca573011909be360b1667003425f8d2ef0cf3adde492a8c75925a122f34722ccfe58978e72e3b14b0b03d142e5293d7f15940c156608b918a134c89079acc418a25216b75e744d33f54a3e6b008be5c9dbdeebb9da678aacb59319c7a561e4c1f163f18ac6d9441409251aafad9dad9eda87419976680bbbf6a2503701258bd9a686fd49987d8d2a33034c426be2a3057a3cc956004e2b88aa707ea585d3b5d911c062eded7cb2e4ef19b201f906e27b8457b422630ee3aae0d6fe50bbed6c39f4a74d1b91e96fb71fb2bed739411cec0ebf3b3a2011501b23f0ab2b586a7d0740b240268b86b630a82c5ae74331100ad57808d20dc91bb013308964c8bdbfe1a5089111d06dcee0162d077a8013277937029c1742d8fb36316b97a78c13f09d4c80bde8cc7acf553a74dabc6c895142a3448b0440923bf79cc90fd0242fcd5f44a8a6415661661c9e6822c3238171d1ad549fbf4bb32a7d89e518268ddebc298a51ef8a32eaf00b0f5d241857a806914f50671072de0f1602e98b868e8de7211080af32f621f3fdde0caaa76ba9ef19cd49c06758294b83c807bec52bb6abc60940992b77f3d0b900f1bd44f01e0ed1f94bf6dae25f5028919b70bf8251343892e904fb26c2772640bdc01c9115d953413f38f5a9b83c193c302a509d968bd5d0e518db25c7cbb7c0dcf65e63fa1862c33085799c23c375d460150338e510a368b0c01c8f4c16775165265a625e703779218a3ee982c3a91d356443f54023367d844a0433e1913dbdb7bd10ab3cd2c2504003b1c50cc192b5fa200764a6af0b073227511794f217007fc6bbac49040379a19b3eb1db9b010b1c0148513c98873889718bbae5654ebba406ce8258f235a2cec3ac2c9424897cc95953a59555b2ce6992b9c0a88c6642170c322f032c18bc2b1dd87d189a5c0565722cc88ab3db1bc0d378c164b2f428796fc8737bfa1e074e2801d4a0fc3a150d829d753bed0a2fcee427a88b609deef210614026fce891803f638334379b89b937350b09ab66dc95a28992d6c27f7e278da2d24984fa9ec51c91fba5060b00aa4846e2fa4cdf62765b7098585b2fd8f429cc7504d4f5a0cb4250b661f3c99140943268f7c89f7c2690180f8d421223527a74f94fd97a5c767790ee22c60874c348798ca2a17a7bd435e807e5e48aa222543ee7cbe261179ba7a7a0e2632527edfbc5fdac8e9f7b4c1064c7a28783b8389b2d83913db4717a6d3af1866bb85089a79fb6e9e7773855c2e292ad3137af8a4fd6a607c8ea1c97e95b1c742ecb05f9d37d13cb2eb5778a2d0a1fdf9b27ea5397ebf824912d7ea573eeea6cc85fad53380f19bd565bb556df5f87b7a4d1038c0668c2e3d30f42bc88852d5f3ab81ee63b00faf7875a2817cbb6f9b790f2d1294f1e757525df91680c4fc32285eeee736bf1aa4b8a92513ce782c54c430d14ab793a0d84ad398177c7a009d29627e956a2ccf225b791863a4fcea5592f71831af92d19f68d64a48f95573ec1b228c62aa846211b7921a3e3886072985084eb12eb45d3f6bba92ae81e816cc5b64f1c581ca65c91700b19bc630d743d2ebbe4410cddcd2f8b354644dc76d46d7fb07c1914e8d7ac90fa3e050af2d15d574d884dbfb967d151bc5134c8a383a9432d2902431c6faf34f839e3f5732f7374fd3f1a689953b5468ae463168d71c353f002df776038a11b9a33aad1c4b1c61a8e814db72d9fa71a9d7345f8803f690cb7c6db769e3bb38894c66310c6fd775b36f2873b588250c0d9e3c7b5bfed732c4452e769da19b0dda815334ece60b87a000a749d04311cea9f73af65d4f57598d245dfca676fdf2d0793fb81c212e6f11e4af58add4d44d2da24724fa370707bfbf3fd6d82e02553fadbad2aef543f94ea725a9adc503a7b6df45bd124ebd5bfb6a8ef097ad6dbfbb726d76e50166dbd3a55cc937d043edd2b4bf2959eba699dbb04af16d413ce1ca429d6b30241f38605d6eef33097b2a634f383d33e1645f5d676636c2bf9ffd794767f8280afa78ce94c3285a8b3963798c63cab9642730eded6b733aa063a5419dbc150bdadf45ddd2579b76c5dc3e97d6b6afab749d7a40eadb68b8bf79596aa595bb4eb0c6c421f5c6d6af9146c660d9ca984bcc42d79aaef674f5a5c29de3875763c84d023f3d18b777c8a6254a646cbaa7e230ac871cead2342c031a9ae9a87e0ad65c7aca1934116e8955558b6716fb8a16be25ae0fd38e45fb2557dbd7ad9e758748ae752f3359d7a42d61a3ef89db54bd715999ce95c01006b3d1de0d4ba22bc78c70502082082268e71d1b88558a035006392705c4c1ee1e0992c3c49761637b7cd1f30c2982830c5981091e3bd386ac9759c1832c9add92447e46f5b1e06dd8cab4ebd2552fe55dcfae7eac4b0284cc40b68aec385548761d2cfd95a22200f370645d77593fcb276e62bd3a61358e39c3df8e8610d9fdc709e85d62ef1277d93f03645c831d1b6cd83f7bd063963980bb29c22231dc38b0e955969ad67ebf90ace25f5256371892223ebfd9574954cd6bd04873da80929e82485bd6b1e1d3e696e54285834ad6db791c1711badfe0d01434aff6193633dd3e05e5ce894b3d07bbca75127a74287808b640ac5ea33108fb58e15ba683605d5f39ea48f57ef49999931e9866617dd56e0491d192f3883c312376e1e8c6aa195df0386a8f9294ce3c4705a49cf54179623c652d1ff34301575c8c461da96057cc6c284b9201cf36de58d44dcfbf3a9ff8f5c75e044324869a426edacd5ca47ab7c051d0b4d01c0525ec4ce473e356a2726816dc57c10a8b30b81c7264125bd45b44d2fc671732c77dbe855a1bea5190951939d10ae1044a07e664dbdaf602b50c1878e7d74268b3a6fbaee5dd22e729c62dda95ea80b154dc203d84b629ce6ccbccb8f9b90fc50c2e26a547d8973f925da6b0ba46e1a225b22493fe95983390656aea124546b431c38a849841687b60f8cdca64d28e7c69b1fde1e5be820b5352ade370bc64414e4bacc960be638af144683be15654da488d53b26bde882dcbbb96b43027c6df9995718140960444688110d59fda14ffece3d70ee049a58a54a5429dc36ed7a4a14cfc6427b041cba368bcd9c45a4a1e240b72ed047758d703fcdcda7ec47cf0d3412a179009b1c43af82fa3405b17cc7534ef182422f929fd1188a972bb55616f996ec4af21940d09625622ebb25b6ba1ef643d1115c8ee2956cd7e3fc84dd9842c54e5b043718a08b2bc5dce4f097c4ad2293c09cfa0a333621567d76e65b8f1bd843ef5c6c953142b456197bac48462e5fc2f357084a007b32bdd64e30d5ee8c48d04e7c6a693b4d68e558da268ecb49fce47764a0d1e63257e60948a0c3ef44d114b6e0c4bfa66d8c731103b5d5875be0b5bacdcbfca5e392221e096655e396509e4a12303de78dacdc8e8187b91ee92b91e500e49f1d10587bf989e86b3269974e0e7306f4ceb7464f1c41f72cc1391c90ddb9077dfc4574a27a2a75b20f69ef8a259c49b64aecf403d381ffd13ef1fff9d448723a341599aa1f6307b9010c6c1845486481f2424018fc80900090906a09fb88f9bba350dfc9414c379cd62c5fbdd70fc5dc255ba7811f225820c1bc0b2ceb633b41501e02cc491470b4d82eb4a42668a090cd3095de6e1ce4944a6d9670812e3427f187b81e991bc7249b12f50b05b594e2b5da816b4fd91fda2159373cdca8a7f17eb13ff51eb737fe5118b047185f0f1ce70c869774f91f5c1c4c4ffde431a2fe1eb2da837e78e2c1c3fc6459406c9d252893d6451b83fffa3c56c79797144b8d2429aa26d6ff0f393d558bcc42dfb397d5c99324aa132915c05fe1b174c1da5ddb41ac6b39931842b6775d89fbbb2d4f9af20d2047a8afd08dc8f0f4b42a76344982738691ffb3cd7def6802016a93585b225265bd8a7da629ef530a271bc1b94d5f5a2fc9b2a9bdf4044eb6c2f7a24b609db3a19c1ecb1d6ab3c359d21314c61380dc19526c7285c85c6e150809fe61c845c8168765e90c53781f566d565896dddd6ae8c5d85b5fe7d7b6c486113d75ea4314e3cb9c8f19ce36fc0ff020bb9450290410af0240bd192e6940f7e431b352d2c70493d19af346d0708a4e9aa3ac4a40bd41c39f58a99033797ce55d7c408a6135d30987dc5cfff209b5f606ca0f2c3f321aee91e4e9b80ca1e088677e195dff97eba25941d9aa2781c3bc5aad7d71e48c39dd4a738e2fbe4ce540847969d3e842be5a66f2c5d26d28767dfe1272cdbc433563586a707b49824e4de21f6a939892af7c303db1fe2d6fc8ca83a05445a9fade3bb898176a03cf23f9296f97f71ff403efae39814b7627cce987f2310a5621ae4f7d4657395ebe2604f77141bb31c17e2eef1e7a93588f2404d5c24c0d8c78dda72c55c0fe0e26162d8620554a4057e7304cc0d55301e59a5039dae5093a13181efc8344f0077722a2b9ea1c76a247a06db8fe7c8f7f195af3f68e9a277ddab4321b5c0ed4e409c92fbb3aa70a2dd00964dcf619aad960a37c001364402d224217b6f42e4de52a62465500dab0d0a0eb5f3d8d93e019481398cfa427b277851df770b7908b4c27985b7acf01c6c0989e77417f6d259ebe3ce59feb81617e6a74d719a7ecfa28484f47753c16d3dcfcebaf4afec69b1f3af6a0b36c11d3b93d7b6ed3d367a2ee821112a7afe0b6b389b5007f5944a9983301dc7a058a7d35b7ed831a0cd268195e093c0fe42a0225006432023d02b7bd8658f141233ef8e3196b2cce72c2111027a89e97cd62f6daca7a0d28fa8f392f99042d3b4c761efbdc4300cf68931ac4e29a58450669867ade790c9b390873c50067c127ae6b1becf0064f2b0c727d0a21354b6625a5634a29e87f1af095238fa2a085561c86bbdc9a4e8a491b809fc68a1854c50521ee3a3d81c7e148f565296aff0abc257964616cfd1322cf66e94fa8afa9e8b5a16a53e1d739d7a405916677b965f9c2d75ea01556173fa59298ea57ce590c371d31e9f656f529cb5b262efca5e18443ea4f606c5599e72e676b0522c96bafce678c86f9862f2b1c56395382a88a3fa862a96a6c103b040b11142b8a2ceb40bfae3a84569a5ecf5113d5a288254aa57feb8544cf1ac5378689f6535660e9944ce26d27456a3a7d415bf3a91b389a9da622ffc16efba7ab95a3964c231d257de2c44424e87f6546685dff95004100893b7c7761aaeef35222b9c3b000b37d939c3c2b23caea85adc28745a67c66ac1c17248a1673562fe44c0e4a7a76a6a05ae20750d5ed575986538f788148ff5d19b9437a54d57d45ecca1bd382c4fd5abf350e7597507fce929f5aafe628ea3fae9b0f53528e692b3c151bdc4b81bd035c7381d2a0ba85e635a257415d0573190570edb5e152254b0dc156ff1b6b7e5d1ce589a1b0ba8326fcf3ce5b0c6e9ddce027d055d856b1ab63d6e07a59eaa17e753b695397496c756e629de28973e8abd38dfca2ccb5e9cff4e5d14e722751833255afc05741ec5b3abfa984ad9168c29a7f5a238e6921b622507fc154fd9cdb50c7205809f72ea8f2b006c8aa35af194bd59716a6f58bc71542b36b2ec983a58ec53b139fd2a3c7adbdb6263cbe6f4af3c3ae48858b90ae851476f1d8147718cd311ffa63cf39bd3bfb277030f753411298b626ff41c686f4e7fcc805008214017d0557e8aa7ea859ff2e66c583af3152b537d77a77856f93b1d9d65edab156be52cd9ca5756f6e2a8daca9bde31532a56ac4cc52a752fa0a3ca32aafa95ab50a6530dc7ca5efe95ab78aadeee88cfb21615ad9656a5aa6ff994b35c3e95a3a5c25758fcb5d854cbde1697cf3c478a65effc149baa2a5fa5f8c955b26cd5edd421b7633a75ea349c23cb549f758acde1c7914f1d45510af03ee55d2fceb7a7eae90759461de5bdcc1ce528f5fe787ac45fcc338ba37aea1747f5ed18a5695aa743218eb8388f591d5548cab4a7aa31a2848ed54fe7a77ae830317236a0f04bf06155bd068bd8b840794e7b6973364570815ed6ca73436ec7a42d83d40fa833639784923fa516ee9895d0b69ad792bf8ad33d593751e49a5fe8260b898afa0595b49008e8f3129119e86c870e331b0366fb29ea19dae19eb5b61cc1bbfd9db1c12e28d0db4d0b39db6a5f11aaf1b12254c3f9e617fe3cd7407bad972ceb3d97062148d4422d33f35c4d44f433489a1cfd854455f8c27349c1e4bb7f4c9062c833410a25ff865e60f42fff9860869d6fa116c2938111f2d101135cf0032a38a9e12cbb99a6d9d30fe8bc4c284352c9e450e75f7fc94211401999d3f4ac9867b5e3180cd3427f67888894b45037d14e2c71824697913b48d44d70d7af24424fa01712cdccd8804a8ae48f893719509f1defe9c141112154e532e4d98118c1bcbba5c78ae3a2e21ee8c334d8271a9288f7451fd803e111521212ede2cea24beb037db8eb38833e114a9859e8d373bbbf05b4f53e72c70cdb5bd19fb3c39d1ed80377a29d5008996ce02c19be86a5d77a632d6ecdddf0ecc688bd866d527237e4dc32ee86f4d74adbe46e48d356e26e48d3a67138a4974e2e7568ec98a4bd1e282dc2819098864c9ca8e6ce23c524a6c1ae95862ef05ed893782fec3dde0bfb0d94782fec18782fecedf061126c9bf35e923806c288149d243ddb6a7b03be051e7e16027a23d2935d533a0165189da1d1774db4b2684241ef44fa2550f8cc1dac051a1023b11d46cba39d9bc51d33570a6157fe66c538e165bd997749d2651e833b0cc260107677cbc7e0cee57b0666e3bb35d930de0fe2d8f8f658311666db691847052f6569edb2b66b35a89ce9d153b8748c2e1f3309a18f29580f6b8e945ae418df8b941267867ac75708ee8e31c66e8ef1b6c0c71823c7c48631c218218430468e31c6986559967996135f4208618c52c618a594314686ef05767777776cfeee6ed8dddd303a4dc025287be3c418638c31c618638c31c61863e4a0cf1863841fa03310c218139b7b8a292084104a08218436c67e43ffe4d92355b96c7f13a3f4764e027ecce168db9e30ee076575df9c8756c51db39d356aa0493a3881d9df83f0c187e3f210c6c8dde4ae7760cf9d0d890822b18e8e9a3c3b6ce284d9cb60e3430914fa2bea226843dfb58508c4f0230042f21a54c1777d54788d4170f45d8178ad79681091f05d75784df234f9ae2f5ec34ef05d5bbc96f1e0bbaebc3687be2b8c7f4d088114dfb5c66ba669329d5e134400f45d9d049a0a3dbdbcd004d663f45e5d50f2ecf209c68305d111048869bc7f2e17fb79760293a013f804c7859bb013a322df0131327a977f2fa3261e2281fab797904061404fff9a00029e6f3e42f2829387f1efe505277a9ec5bf9711d23fd1c4b7fc7b3df1f33e8df594924093c8a12fdfd0862783fd4e09312ccb329e737689c351e270402f411b4d2689bdbc289f2081623b32e9f9953000e2c04308f99919f67b5d6f92bb8123c2f8503e940f5dcb6094153a6982f57036d9402fd3ac0534f38c87b2c397ff1eb68c4cc27ab09e9e258fc3c11dbfe7d812ba5fa540f73cb4370d9b934921a0978f346703748d664b0e91b8b313a95f5fe0f9cb479cc431978d9809c7c42fec3c3b37e127aff98b5d9ff4ecc1a79dee8f7f07c8663cc2aace97814e673eb240ce139ac41722412425cf0e9d5820073e89ddd01f8410e2748f0b8ddcc9242423246ec21d233dbbc0d9b0df737969f9e80b497ce4e4999bb40fe895491c73b11eac876384c8273b3b35ec422de88efdb452a0417f2e4de800d1bf267820e867fc6b02078a3cb425fa80d0a4e7a845300df6c8067ae7eca13eac1f07ea826084669e6f70e48be0989de7e71b3021c3359c84bf4fc9b30e297e38a6095ff0f91cfe0bc47fd1f79ac63def75482164e8df6b0c1f9f74483184635aedf0dbea9062c87708b40e92826f8f3d02faba9b85f0dd4c7c1bd12388a24fa03d17596f12d91be0108729bee43d26900e7020fb92d5e43639a6e5b2255764de9ae25768284e83e2d25195865d2567bd2196af78e6ce525d45aa85ab70aea9a60a2f79a52cf6b2bc3e7649e92bf5b14bc55e568b19ce96a4bd13e5ecec92768ad7b8cd7b609c5582e555bce45abdd2b71e985fe086f396df702e37cc6f49d34ab607e625dfaef4924b8df3cdf6505161aed2a04a7552bdf7425754beb2b2a25a51b158ae52b156ae6a61f9ca9740b9c99750b9095555384dd3b0aa66be52b95e57512ffdcc89cffc54ef83c2672ddf76febd9715f6b6acf46d55b945c5c90734f3cd6fdc321d99975cd67ee9994b2f95a28af7e0fcfab04ab03c8b5fe99aa76a8f94b75c939ab43d3815ae71beb926592c9110acf8122ce7b4957a432473ea93510edf4a65a9742bd6dba5e2a526e87515f796612d91e2ac951567a9527c09fa5c2abeb2f22554dca462d94dde0ed33229dedeb58c4ac6e4edde322bdf3c552fc0ddb09b955cef06381e285e729aa6beaaaf534c957501ea28b5544ff5263a279db357e774846a0ea7f85bb2337473b657b3371231399b5a3a3efe0c82bee5df900c845ee3ad02d9e7f4e390f3a56ded28b9944ac09f16277b25fa31f9e08fd6e91f30db5435d05ecbb443d75e8dd3db97c0e4b4ed4b64f65a00b34bbce7ba19d8413d465fa26da4ed82be443be64b44a741e3faf8fb9cdff3e10120daf700f06ae20ec8ed98cf3ea2b74b6884bdadf6f83d186518344deb0dcb3c62d31f6358d6d127c5e68c1886f9943362d894259715cba4635136cca24b6f6f1e984bd9588679f4e89867cfb1eaf2cded70f96c866211734c7ad6998ced5877631ebd4aebf25d6fb22168cf459b32300f2393e0a13d762ddad04112201ef830d18192ee5ae3bdc8a711113b8bf3feb89163faa58d973ce06937153d7bf3606801ec5993b700f69983273f9d3dc27689da30ce66ced0768dce805ef299f7c3d391c3430e473bd61e1d422c7ac7184f1c8e764e6d5c4b1e2b7bd72422bbbca6b2956ac9391b346ee3c41161f29ec19df49ec11de639edd3378e88f6926326ccdef60b43447476148e88b64173db6dd8e03822628a23a29d2d0d77325b71364149fffefd8a33d9c7355ac8b271e6fd00bd2baa2fa5945eb2b7c6cbd2cbedc540974e5f0cbbc4e4cb9c87a6b2bdf743d458dbe3981ed1d9db2a01bf39d6530f326e089d6787f606f3e9b1622e391d5c8faa042422fa4dbba443da73d1a2dfecaa6e4bf42b37ac3758e173edd7613e5b267b2e0cf316be12518f611e99b971b08cf1117b31d0310c238279bb3180f8807a7468d473629bcb8bc19cbd8b8155cc5f627207fbc25b003b4a50904771daf3edda8b5049e6277a431dc523b783755014fbe60404b605b0d3a8da7a2837223aca9fa336a7d687ca6eee03c5ead4685b6dbd585bef3ddb928e729d1a1fd146dfdc88e89b4bdfac0f23d21ab139aae49b6d1fa67ebd9aadbe9aac04543a8ef72948de0b7bca11e79991919191915166449b44bf1dca2f8ba218a138a1257b59f4090ab3d7813cdb0e2548b4284266c6d9643ccf1e04050877f409ca0e4de20edb79d3634ba0d36bd079e4ab4a11eea00a13cf39ffb64d56951feed877bc1f94a03a1e10ef07d84940f27a2feca52ad0cca5733645a85dd2a6bcde4b6ae7557a5a6635275d0505a9f404a9f41c05613273f2fc7698fabda759cc4dd6a635ce066be826cc1fe6d28499acf452acd1a49bdeb47ddcb1a7a225f49e7ee851cbace6a494b5daa1473bdf52c006368ffe6af869b16ea003d139f7c1d9960236e79cb31be07cf357e3233a67890cf06aa23d0db58b8db466dec6cc3f22222222221591ea673eaaa9543faa9f672fa97efc7566d4dc2994e5291915525e3dd444bd04aa5ca7863d569d9a0c297bc2f37e80cf37abe9cce8f46ad713e8b4f78424f4ec9db4c9e927337a2f23a0af24dcb109c9097da79d676f3d879d445621688e68997e3d17fbd173b1bf7ed1a39fd3ce69e7b4b3a369f4a85dec6d9b1eb19b90625127e9a17ed123c6a66042ead7ca089bc29351e9c188de0fed330bf4092c8ad34f0cc2925e2a3d4da14a0fdc493a40d744a7e14934d4aecc8846f15cec67781e6ac3b33f0e3410bd33cbb239d42ea647fc84de95113dba262423ad664241efcae8d9bf6dac5db30aaa591971cc5dad562b264c7c98b3049421e54d908290a7f1af095158f29abb7621132e424dab8fb3c12c4cd30da5695a0ea3ea4de63f50340d853afa9b637bf4a7348759caa6d8cbf0cea745edd252f412562a610e916eeaedc750127368b11efd9751500430467b211394e69746686f509e79b435ca18adcc628c5004288fd0b6341aedd511a1435b728ec391f2686fa267bea54aa7884157a5f8851c0ecc6f786c8f6da6142c7aaaa4c52ab50a1f8542a1504ec3284c728e22a37d6f6beb278a4d68ba381bc4e08dbd398d5d9cad74636f4962aed95bc2348bb2986d652ebd04218cc55c6eafa1fcd4afa182687e83b2174a18142a6e52c3dc54f237eb9358c53eabf0638c4ec331c3a4ebfd803a50ae9220e19432cbbcb127dba17733790d6ebc04c807fcb95cf87a945347f195ea4c833da5b29806abfca027778e81d3b6e434576ffcd3bb3aafb23a9d38a7e1d3a9e1e9f1802238d5c8d934144167e06173ae039970d70ee1d3515578aa50a5a2bc2b55a1fcb24ece6a71b66d594292b8413de5cde1a0385229d77a1c0a793fa4e0fd70a2170609f963f9854784a0100c0a6a244049fe216142e8ed3f24404a9ec5f2500af4429e53855f72a263b7812948c17b613f3180e529fe386815e0038e21a866c5539c8627774cdb0583ac0feab9d8513e4982b0582c1ca752a94e276ea592d3bfe29ca6557573ae6a9e52e14fbb5229a7e13e40ca69da51ac24e25fd66741a010080484ffd3f9f8183d3713269ceef169e1eeb96473e2805f7a428b6796e52ed027e8d9d961127cf50fa8831257d400bd8fd016174a946544a55982388f881621c331d828106506ea67083dcf5b12d8c3319de4b985b7b06e6ff80d94a3bcf3ce7ba03be0eb90e227685297bf14a55215ab8bc1322c06148d502497c780ac406f87250de911c203eb8c2226424f909c1c3561ce9670cc0ae7177b75fea57b4859a60787d0ba0be661788c1e2c170403c33558b16ec98587fec20a305078a8040f008b069d3968d83637bab1b0da0f7febe939edcd7c07bfac66f83a9eba6d7c2fb054af4e975df9b656e01d7de7d0764735465c76236a19ea127920bad1c261a01c460b7f618970607e85479818ceb60230459e63c40eca58616198e018219c5becd5f91676a283dbf80e238ed98109c7c4386a328493a4f984638a60e1ec252025f652108ef9c1f9a75dec33fc71cc9d3fa314d42eaeb1524164ef7c6bfdb1bd33ff02e65f7446bc48c08bd38b162f5cd077313f88c81fdff92efed885f52e3a9c5f5e905239d0d07a7870d1774dcde59914a6e770582f3bd1e121b90fc99764f8ad01e3170000f0ebeac16fb51100013c9920bce4d183a8f0b9a00ba0bee70a407dcf65a302a04287a9322ae6a5fa9054e021b18970be8f186689c890f1836526412da311c06bd83b7ff095bd5485bd2ca296d19090d85732f652df885a24c05e9611f63a02eced0e602fcc8abd337f4b412db311b56b433221b50cd763b297a5622f5505a9a88d3111bd66ef64b1971ac05e167b11959570379d45e5a21eeda799450ef6521a3d5c100f2e400b24f621eaa90754c2ca434ca4027a8c18768676313a4ec2dde42664f7f6257797b55dca9865dd0eab44fcae3bcf2a0771b7a3bef7ee76f0e670ecb083652125d335a2e904b077cee93590e67415f6d2e92c0de92113cf35bdc84f9799bed939bd4e4f99eec3929fbec237a229840ef9e92b1bd1b36f482d1381e79a423cd79cd35bf6d20d69cee92c3dcfaec3e5b9a6f37416f6b25239d0b097c5a1ec0dd7013a0ed7a1def05aafdfce87ad67c685015dcc89677fa9176b9205797617f566456ee6c4b3db7a6790e722cf3ea35e662247bd7c84a35e1c76f24238743284636c6e4c57d9d8193a6d66cb14c2429da0cfbc1d3bc2311b77d07968e6bd60663a18879914288c9c4dd679acd823924238a6b31578449f7967990c8732acb42c1e8e995936e79c928721100422ee3c9fe67408e1ac383030b5cb1cd66c6633cb5ebcc0fcc59c9d653db2892a39acd3b3da33f316f29de4bba7b339fb045006f4527d2feccdc0bf70585b48a95fd0748fec5fbcf0c7d9bc701ac65e60a822605e69e2c07c460198bfa1aef2ac5200e6a7bd4949394a65798a6befd1501aaa7a615ed5bdca5fa55196c154aef28d6368b8bbca55ce9c4d8b6cd27001e1e34b4ea35e9da7e132fc3e2318bf2c00f8f51efc7636fcc204c0ef8c00fcbe57107edf108ddf47f47e5fd1673e00cf9cb20c65d7f4cc66dec2075027bba6d7d4af8fa72b88fad82580fad81580999f6ea34e1700ea74c9a84494bc9d868ecf5f9c77f434bc85371075c667f50188999296d5dbdacd2c0d6b2ecfe1fabec78f9f2e97b507e4a7751586fba0e37536d63b6d4accf1901e4b1573e674f49778489767362bd99be93ef83061547b75dae590d3c1efc30c879c4d0dd76a50acc88bc7fa329d87e9d60797e956d3b20d723b8238665ab63e63f0e0b3e4c277f092bd3a48db9e797b4947e7d3368fe82d6975bcf6ae5ecc5d4e00175e0bd0259f01c361b80f1ed3b6b09267b585b9f40cb33a30efbcb33e308f6917377318d667f8e378b8f0b6372e3cda1b17efcce6f0bbb0d1466e870f3a5cec8b6173fa79f0ccdbde1d6cd4c1e6f45bcf9c3922acf3602f7c6bbb4b13f3529c761251722cda5bc28082b0a0e9b11434b1a07923fa4b938779e9faf8cedb856b2e2a0fcf058c7aa72c598761277730bc6be7b2ba60d6ba5cd8f7e2f185877a79f018efea0e1f302f79d7d9fbc2dff90be683c7e8a5ce85cb7a6706be617430ec8d0fc3adb5d261bcb8e0c17fc0bc73953cfae0b1e4b1e4e2f1c69263a50eebaa0e18fec283cb388c7a7f7cb42ee7c1e6f0471777bdd4f7988b0f9e5596cf9bf32effa1de0cbccb63eaf5f12ec7d8b1229ccd0c3b436bb8891b42e76b580ec79c96084fad99f161c669d46d888b99596b51b75a371feed869182989c9d1921dd0e8351c86bbdd7aaaf5cedef99dbb96b9b8e6e2e2326b6b87f4e9f37dd2bf2bfc6342143f6fdfd18d92c7f06c071597329c86a5971c46143d254b44867decea3c76b585bb5497c7a89b901dec36c44e6fe15049ad90083a51b1225890bf87e1d9ac4af04f8731731847f41e302c0664d201854e4022ee8e70cccc2c0ce2ae7247382301c5822c06e4010c48f6b88661180654b71eeeb8bdb3c9ecd5f1f9ac450bd73821383197e58238a1238af911eed88649406f0edfc2a5bb7008e42cceb1780b8be7f0f15bc89eb68fbb163e511ce71dfd74cdb4b92a8a63d36e43b8cb01cdfc42a09e579216159e29a1d12f47f4aefa5eab417578f139a70e9e559c8d87181f6466b8f047c3762e2e3b383b57c431309c9d5bc231d6e5ec1c93d68ecc4b5eb2372bcffc3d96d51656c4a5c21d605857f7e22ec9100e2816840171c71fa02cee4e2348a6c223332a1482af0a9338c143854ab87361a3a0ee1702cd8de382b8235b0fc7b8b36f4238a685b36f3e1c53fdbaa5ad56974aa552d71b572c9530efc64ad1153d6beb986b7a0ebf7439b6ad98644fbb5c444877c91ed3ca364ba5d28491a167d35fd40bff8597b81da687d3278743077fe1cfbb674eefe994b399189006e3c5739896be8e8f1f3f3dda2cde0dfc749ace6e0ecb7ad3f98f9ff5f6672e9f9eb9b4edf33727baec8df4ce750208448c893177f0692f7fd742feb6fc55fddc7eda28bd9359d7adce312f71415c8bbd3a7c760f04627adb92d3b490db42bee43ad40b5f072f7138daa7bd99eef2c9f1283917d4321c110d7b593ed84b7df01936e8b967f050330e47fb4de4c1318e0751e631f6b26870449fcdb03ed8e62195444a2965e7b213cac03c462df90e9507a7691d6ae7188ccea75f9787e18fe3d169bce96031a096e9c1d93518fed283c53a6bb22bf6b5ebc537a73c5ba64f9f1ce3f2e99bd55cfe267399fee2d6c3798b77ed1340199d6dc570cc4b8e01e500c35eaa4dc7705cbef30b03e370747ed3f6c525c763fbce21503bf73a07e7613a0cef1340203a7b2fa0f3d35f4a5e2a790a6753d26695ef3f46859f6559e6343c6bfc18dd0e150271c7ae4385452a0c72167fd1de8961ccd9e0bca3afce9c4df5597194dcadfb103a1f1fcb02aa361de1980a64443f9ddd1464129affb8396546a422ea8cc8332215c7f35cecaa5792eac5f184a1a86547760f49b4d70395ef258bbe88c9b3cb254f241323d2b1231f60e23df9f33ddc753fef8ab34921b2481a310df62601bdb2481ad1221944c3ac5cc22ee697fcb9d2c7c484969ab0a613cfe4130c03f2ec17060bc2c43fee5959a4050a9f2c923e3fe42513cf45cfb2c7bed78541ea449e2280ef659e135e463079f63704c7bca12c3479fefb88de9386341c73bd97f0ecefbdd7f70c8ccf0959395e5f8342aca10d7c43ee2e39de8b8ee76267cd8076ce5d9401f6a3bd1e284f57a48967df620ffc80d7fca01e279c4eb0127eb1201414fa9df0f90b834f4f9c81f67aa030aceec8b3c798f15eadd80e631cba0e0c49af23edf5407776767662d08dec9f431b34903bee18420821c4d99038e6b2f8e8212922849d3cd7e2ec0d7e2efac8bc2a04b1138e792f360461a206d23db787700d8938e63293cb424a3826fe147f790911cd42cff24f16a8c9371f823b17c27f7808bffef901020a0a1212ba8f4848065ae639e1e5859e9d1a76a8043661d989e1e1224e44d2f693dad2fce84f7c44d4327cf45ceca567f948e8e49c7329498cebd65a28e7a6e5c4ed4fdd0d59a865f888c51d1bc1dd92a3264e5ed26520b388cb8afcc3317c7d3c74befcd352148338a6637891e1c8bf171b863c0fff5e6400f22eb78d5e3bd586b6bb59481c8104fc41917847348086833c0fec1deea000e1768301f05e5e4cc9d97578015dd8f0e115230716cf2d80c8016534606e37a0481cc19d0de86b0267d1bf79c42b6a21fafadf63362010ed3d340404a2ed199e3b493be1bdb0a7c10908bc8e5df36737bd303c7be995e1d9c91b83115038e1fdf080f70206252ddef0ec1370f2ecdb110d68d2a2050b37b060b1a20d2b56b424b5b4b4d8d06aa958830a152c6a6061613961b156d2b0b2a282061595d519562b15924a9522454a4aca0ca9144a19505068134a516440a14e63389db828386e3bda364d0c9a660a83c9540243a93499cc99419165d817304c3e21bffd0886313e3b04de0fdd0f783ff0110e783f40673fa201d04e3addc01a2a7aafa8bed7f58eb6d085da6863161b68cc16caf86e4028d9be97e7eda4833aa8834e9c66248362103dc4503e236a460cc21f8ee9ee1f8ec130ccfa1c52821162a8e6fad4188661ed2714230dcdbc6084baa0c8cc1c0412e60cc4faa13e1886613d7f509c29faf4e16efea050267b27904d9c3f1cd32578464b664c9f5217a84f9f9f1fee3a96f054a7cffc5151f119327fa09c16a7835e85b592c38c92d3f06b0c4e5ec57bc9109f6fe19823210d443fa4c9f7f06f6808d0fb5c4d3e2439207a765984637a169147e6f6381c339ee51be5db63e97dc75477d76ad0140da7d8fb966cae22a7c5ac4f73fe5ae6e41891cc3e76f163360737559feee2ccc86cabfdd5e4505bedb6f4023b7d5a4504c5555c53a9177395954f7b63fc74ac838e6857cff4a13f4019e024eef6611ff6313a72d1f4870504c42c04f412424ada11629e22a2a2a222a323980483be85be935e433eed9a94d5420f4948e82d794c72f0fb8e5eb48b3b57c27a4ed0dec16ffcbe2a97df966f17971d6afd23d89b678a981f3f7e49cdc3e3337da8049a3e2e1c0ab54c0301090109010d0d150d150d153df7d151d251d25152e4116a990854d43271888787674e20768da76562917467515ac43327dd615151cae2a69289e3d1c25d6acb6509779c31d1e1e29c9f6a0b869f9c232a1a6a191662a1a196d1b45844a9c6d32ef6392965edcc49291f3173fbf49c94b258ee5d377d7c524029a01477f6c8d3322cd6a52c16479ec8f3a2ca22dccd54670175ad5e5d85bb388cbaa37be177fa741d0c9f477e388645a85f2d0304eb7101189e7d0e39c13240660b48f0ec5309cb683b93098e79432e48f21d8c1739700e39d4cda5e5d44ff5c6022dcec25778890514e512289302b52515045d94abf0c9d9b478c987627e359e26dcb1fb00d9985e50a0a71bfd9c7ddca9dc5459eea2de99bf1288816a95570249a477c40374c4d32288456ded58b1c25eea2db67583e1bf6fd5d60eea6da9bfc75aed2687cf525b6d6ff06fcedd50f9ca1de5d3576ac935583b182ed0e8b7fb181cd3b6021df4edd055ae74956d616ee26c604ca9a5215c2ad2b3836a8c444b81182f2d4e8c47c92490146a99e923815a460b62b516d4c2faa1d4b64e9cdf3904551a424fd55da68f042a15a9a59f12135d86e92381e690e913a78f041a52a7cff4993e12084e9f397d2410187c5a07e507d491261c67e01d23a31c1c61d2c4e572cfb34d4e37ca61951e1da5b6a63f2925ad2dcc512a9192734cdbf668592d495baca3dce0e7509cbe74677117abc74661335014473945b160b7a67336704891de88f0784dc9bb0cd459cf0577e0647546595dcb40a3e7628fcc629294b5a908eb45152ab67c01655204c3401c08f2af091c18d2febab6b08b59ce1d94c131a00c8e792fec9773e40d745669d505710312f18c38222606cc8c0bf390ba16375651ce2ce58e312c09cf4e789ec233abc599b34c62d246ee9848438ba2777b76e11446341fd32a7c3a2291cc6958072a9d862914a2d5a01042ebf4b90e84423841d4c43f37fc432285d76b2876239eb3f5d19ad4a393590412434665a04265b5ab086f177423b0e6c14704994fa0dd80dfa22fd39ae88bde08eef848c3862e2cc41d0735ca9268d4f0c809127692243d730dd04e17e198560211407a076abcd514158ef9d0665fa028c7dc85f30a8bb338bfb239291b358bd51a4744af88dc0d16f506da9674e86d5bd23e1b692f742550fc559457b5776a2cf86a9992e5ccbee7d2ec7b2e93dd6eb05871719ab6f57d4a7571969ac47b158af39165a3ca84ba8bda3ab1d48bc4b33cba497f0857ba1f12342cdb84727bb6d562db367b7324b437b2803acfa2ee808fe22cd573e4a3388a6bf2b59ebdc1ff5a3e3b4cc2f34f58e625a187094a2802977cea2f1c6aa130fc8547cffd33c4043fa0ee1c0829c2882e8286a267f9372486d76b6f064df18cb349f54e0361f94a65798be669e1c29f3347843bec965b6f7bab3fdbc2a16d1eee1889bf99fe7c3a746d56e9b0b694bea285afac6c0e9d85776b73167f5322f1adcdb2b0170924a0dfe9aa5e71b8b54f7b7bf82ba1e27d4e4a7b93be52eff4d8f2ade5d29e7a90b222575acf57aca7487bd3f2cddeac70e939f2e5b339f25b2b3ca2b85ce1c2fdb9b4b585bf16dea28594739b2e5b3c39377bdf63c8c3da1ecf4eef3490156735799b7765398b7a917816ed7e67c397749616d076d7303dc3c265e567d9640b7faffa9bcfe26e69cbb2b0b0b0b6159a66f1581bebd9152ce49cadab424ada72151b8aafac78b7bcc567bdef45f3525a172ed5b3caa2d3bf050b96675db8b356b85cd83bf3d25a53ed5ebe1694aeb097a5c25b2cbef296cd5bf5bd8a6d05c55756a49472c52512df3eeb56573667b1b88a6f2b347fa3b3d81cf92b7e73e45f9d6da5a238d4f9a141e223104ed91cf9b04710532801578fa2135fed1e3e1ee5ea748f7e140b875e49b240b13414410b51b0517dbfc1960ef9d0e543abe21d8e793b4890d0f0978df8c5e2160b0400c8eb614bc7f30a5460bace331628e49e772562725895800f4db56584af20410d84fcecd498ec0f939b5c7b3b0200e4c504c7b425f2c3648db41ba9a66aa41d56f95b6de9f80000793d733ba2cf8be3bd05bc020100f2faf8d0b6dcc54d9c0e8c043f30514cf16d89ecec686ef21f0100f2aad9d1bc6584f5016b5a0ac8bc645bf3d598146072cdb614006b3487359af561e400afa603be130020af1a936deda831026dabe32e46c746a52bd0164ccd0c4c10687238a1b77facb466e8b102ed218ec16c11cd4c2213f4c2575b36e217279192f9f5d33f7dc44c1e12461cf3220f71c7463dd4493a491399b8048dcc46cfc5ce6cc4afee86af7844ef23dae1a024e2bf9270c7ce44a859a49461834bd77c5bbe6504f4a1738429a698620ae83a355adcb69d7fae71434d724640efd9aeeec88a6500f239ccded221bd5fe7e3403dfa6c19f87aaee8f1455f4441d09e8bb649e7a4ebd4b414c0f9c94fce39d62d2cf3b8a338de77ef85df0be4eae62e5acbe6b2d9dac25dcb63262ff93479e6970651939778986e6c169b7560ec2a340ed2b33f2790c9cbf15eb8f6ab8786761040470fbdfcf6eb0d7512bffdea2127cf7fd07a71ecd1338243fdfadbafabf39da45d39fa55c35a0d6ada4c25c8bd3d7b06c5130f08e640a6a2d2af94a12e995a26b26ee6445bb9a8f4ac587ba2f3283b01bd2727b05bd3def39511cab55757472ba3d5b31caa1a51596943ddaca7f97395da52d1562ad5b3c3a8a9e179c2eb5e0d4f921a9e269e9b60fcaac2f81c2df3de51d2569f3d25355155df4e2a5551cc074d54106d2f1f24111d1182954e4f929c18b109625650bc8efd4e212b31bcecb51cccd3442c67c2315666657472edd553ed25dcaf76e9d43413dea2f861aae15cebba3aca56ef3dd7ec5df973ae1ad15c5bd5d51177ec2a75c56465c41da3fc5d19bda7e1d511c7a0a0fcca88635e4b0d4301e8b9dec327f350f879aef7cfdf73a2a5f9e36c9e9da12d3f04cbc02324254ff5de50cb3f7b7ac2dde984040a3faf535373bb37ed794bd3faf5867a80d44f5886f5d33c479e7ba847097ffb68fb19ea4117feb69326d2fa4dd39641913d61b31e7a514f78f02909c618637cf37475fe84c41d7bbb7826909dcfb2a10cc9e8fdf09e4dab3794835b7127a0d3cfe9e7c9b39f98782551722a923df164b06750449520294f9951f6c403a2913c1950bc1f3a09ef25e525d4aed34933c9d2ce493ea747f4481e51249a840204a567458f320ce33773bc1f5eab55440bfae63a35ef0fa053135da726da16b44918117db33e388f7e8057b3b90e575999137a0a027d35d1b614b0edb414006b3887359c47dfac910ab476c0cf1c6967e75f4d3b416f13b9fa95e2294779f8a81f20281e1d88cab7d673ea3a3501afb237d353a6bd3a29aedeec583d8ec35864291454e554def26e9e5aaa95a7a438c4306f718e73592fcd4bc9a285a354d65c714a69be8285bfe72d4ad3df7bcf515a5016a8155dd3e73cc57aceb596639ab3a81cdbb1f294148e8310c214d54522c555aeb90a57a56caed91cf9290e693aa5ae3667a997e63767d58bc46f0e7738265a080493dc103aaf627370b4f70842c7ea5730e352aa15b75aad6cacbc853b8e31638646883a44578ae2a5b44afe5a99bfc7da3595567dab2c1606e4c31bcd4f4ec33146550ae74ac857d919cac14fe152a914dc79af43c20d9ce8d814a2d08a3af9d6c23127df5acdd96c3047bee692c3a1798f206cab2ddc81a60ed0dba5febd94ec6022290317fec29dfb90a8aa9bd941ea90c62084fad153763b3d3f453d42989841fdb9dcaca774068ae33de7da7bb3552f262f0a819c8e7eef25710c7c1281563b11481412777ce24f2cf21a663ccfcd04d9d34fe24e27452358b32828ec9e4e823c4432f1d407e69009f48d6362298679fe7136dc0905a9a3be8570c7fd845ddc49ddd39dbc7b4edbe69df4eae61d13ae414f9bd370cc28f774cf0e93bfb1c7b9cd9bb3cf99b3c13c9311723c366fd77af36ddb7cb31b372ffdda497167664e9e93e293ef177492bba8c6e093f5fc73518a29368822490a415128fa27c53f245038fa97d409092d6982d51223c9449a2c1724f141c27a9801167b9703c2991e9e2550a3c10f772e7831700baf8346425b2832d2bcf4845e2824c435266d076980b237868b75b2773ee134ac491afeb232d0322ccfc55eb96687c5326a819525a459d6a32c2316ab74053a1d7246643ead0f589359a13924c412621945d1ac23a5e684f6ecebdeb32c4a568cd0c63f6727d4a9378471b62bda39a9444244df0f1d83d5d2f3b960b4f4bdc066fa7ee8178425ff86fe2189c251c73333f4ecf04817c3066cc2e8e1e670a02d2299bf1accd923c03290a7a71b6999fc31f992b36d69afc9665b9abf9aad8772f03a06e2ae2dcc418dd7b177a5275d47147486223c2de37aecec3cccd3bd9736d02e8656bbae83a6523727ab1d06bd38a883205114423f5a2746d3901d04c5d945618676eeb8f399cfc1ec773ac7c8ccace4410176d6e1cc0cca897f1ae4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4882121facc8b3e137d2688177d46002ffa4c00666cbc1f1e842625da73e9d81dd1001f1d4b5ea91cbab74c6623450545695242b008d0954af0b9504a8f62840f02acbc9e351fda1b58c40a11049e0420055e4e067430c2c7f604db5cfc0814ebaf088a319c41760f6709cecfb20a748f59171f74ec9e534cd60e84ccadc548e6f0fb751f6f67106bdb303076b65a83954e4b37ee9cb019620d9112ac69b5cbb8659acb98d59bccb78c07a49a9bd93712dd54615aa604297b06616ab2d9067a61987cf40c2b830f4a49f4c2d0b44c11366332349147492fe35207b4f762228dddcfea348456d09ecb7b1c777289f2d33ce1c03c0a0a676f11cfa15038307fa200cc73f606e51aaa6a28e7eadd9e73ee08231e754d8eaa17e6a9a72aaa6aa720caf9fb8742d90ac4d483790e8582284b0473887191ab283512d1828639ad372e9e5011e55a0dfab41311cc51553bf98b1bca74aad7e551aebdc83146abe22e9aa8404fceb9f4878408411ea25076c6c2fc85f948b4b3b3c3444d74188e4179dc8971891fa36b188ae55128f8500ef31ae408f0de4daee1c07cca5e40e77b687e4f6e7294da23e5547393739c9f681ac51f6783825239bf80ce73f602d4e228c1f29ca3ec7bdd3dd91e9c251202cc97c8b22ccb7c09cc623e332cf32530dfbce44b6c96d5b664e79cf4d9b8cf28f28fa8c3f284bd9e55dc18247b5a6602473e3f7386bb18b276524a7f3da4cc5c4a99492ccb324cc690b69bc249eb88410c8b27e8d811eef8d15fe1ed921613c282b0a0968135fc22928aaf416d327be367d88f8b8452c6930f77d810eeb023251ed0f8172be292c7e76358589010c748e92d840561471e3b5231218e89ff5810c7744ac5579ee291c391861784e189c7b81bd2b91bd8134c308627d2f0823018ad38acf5258703f3410a9cf085971eb91b04c09e60823118bdf4a7e9083c6dd9a0271e05637156551183de0b17e865201657512f7cd6e6acb1785ec94a9e862cf5e4ac1a796e1fdd1eba0dd43cfe2831e8e4d1e8fd00a392fb8e260ffc71f984785e7f61d1c3240f79200f8f6418c5333cc3336cc3730ce2fc794f80b3efe8e82804d397d0a6f6942084a7092896f0b2011ba88e1170c0822ca48108133e4d5834571001109e3ce10c32e042cd74de7c89d236bda40581841f00610b3818728215d44c5b72cd4dd6c843e224e94b3604ac9912e40b4a307201923024a971898116a6c063248809aa5063243ab74c0c7a2f2240feba64f6ce3ba9128667a0f0df901690f03aa4f0e1987b63900e297c30941f52076b9613180fe40b5606fa80d77090731085daebe0c9b3c7002ad244851e6b43db71d7cd79d7b886968939d7dcdf111a4c8d9121b6f76e94e89fc0f3d7e3f9d5f9cddf7b76b337fe783ddcda0ec11d052aa2067a3bd4062150f73b1d742eda610e88772e033974426f07691603f26f3687be690e39df8cfe142b8ff67abd4ff622f15c8e946e5bd08948db82b68bc12ef6521ae8652053a97b2e083b08349d815a665a0bd492812010777c83e762671e4c212061a027f442a01d86401c73b9c85151bfa24ef7a90c1a74a803a10e1a0328ff6bc28b0a3a289241a533d00bf48ae8073fccecf2b56c9e202ca4d223248809200ee226f87533e1f9fd7010ee611e469a2f7d7c98c7c777767640d040459e6f1fe926903ae39d87d506f31a54ba36b963ad1bdba66f189c4ec3ccf188bf711076b1651e19b7c8e31aabe6b10f4fbb30bf697f0efbd57884b63f1b29237732b0dcd32e20d03b9967c89150d00f1d96da12edf54069666674f0f3ec36608b88f45713e7cb3a6766cca064e68891328739d809bd6f08f31c431411fdc5aa85229ccd249279d7213f42073c3986585283ce8d4ee6178263eebc2c1b73c3ba1e708a2172908146ee5e7498198e02aa7a29bc2a4946a1bd1ee8cc8c9126cf6e2309e63bb01ec11d124c838b1aab3336b89be986f608e8dc2de0b9d89f98697e228622b893c140036204a572acc28671930f7bb24fa9396376cbd7bd61d8dbde7b2c45c2d6e650e8e1d1d3b0866dbdc99ae2d8666f067ec3369aee916d29cc5195a61c424b6137cd89ce922ccaeaee534a4af69d22847a292809049992020429df73081bc24f91cf532ac47cc69fa5470403e3c4b3cfa02a171bff4cdc8d59618aa7f88542b7e19da9266e87e9bbc4e150f1cd1f14e218ce06d296a1d156ae692929a57c9eaa3728fff15852a6524dfc6df963b1a4fca960b1f6f22a25fbb1c8d4855672d05fbfbb01596f52fc3dacb7bf53af5d3af720ca23c723c5dbb92b6d0efb4d716853d2da4039d91be92887f6a66c0e5f7e94d043e91c0b44390d438d1feab56cead956aa88968159d1d10e79c0231008e8cfa64015cea5b84ae56ea0a37ce378744a8b0adbd29ebdd0f45e8ba3548ecfa9483992524a994259e8f00894c1394b4571564d719a56519151adec9d2a0bd37645765b795a797bc35ed99b77573e39da290e6dcade3cce29852b8b72ce539c364ccb50e85ca75cc52fcca7dc1cbef1531ce370b4dfa4ec8591a6b693a5edab144f4971cad9a468b0ca4755f8a80affbdf71e85e2dce5fcf4206d1995d552521c87f4149be23a0feb8d2915c553aef339fc28160201cae09cd61b3fc673de347cc25c030204e23db641a17f1c1297a5e958a9b65ad05215bba03f5b04778c61b08b9899819901f366241fc11dcc6b8899e21083d0e642410e168d11269e5d88e7c407bc068bf446498dd0db09116b8f4704f3182c836d5d8c993541dba1a5696e9983254b96398440e285c811dfeb29061f222c0e1a9cde25cdb49d38972e46eacef877675eb58282d10891e32d79b101d78da091db897a96652855f5ba149fa9f4752928f6e2a8eaf6ba944ed5a5ac1c7237b65f59c8dd983fc3312acb9e6267b84bb90d1fd0da883628309cb82d7216e74bfb66666cb0ec5ca0cbb3bf98f7ba76e8f2efc5bc212362f84b556006066aa4e74555ecde98c61cdc4920d05214f4bd2e0c498dc44b96302fc9883a23da5a769ee3251b608297700e2b0e2fe125df2d196270abed3f5443a5edbd3b4ba552498bcc936dd068c2a20989261c9aaf2934838278439b4fd5d06b53bde20e5512d510c74c56bdb8530d4dbfaad7b4aa21559248c3aa17774352baeaa54aa21a7abc242332b9d69e15718cb43c34598929a85d1b0e2f79e95c462406221c9992536de9e0e8a620df6273384c1396a206b7292439c9df0c04bd13654a4c411ce79ce61cc7d919ca4bde14d4322b40d8c5be12c42494c494195d164e46f42814ca6998cb885ef6046dc7e94a818ce8a1bd3165440f71f4cf209ef0e19521dc11a99270f7aa17f7faf6ad76bbd0b7bdf0aa86307f5c8948e6a67a4ba756b7ebd042118e873b0ec21dd7c3a37aa994b05ab820a620d3112d50ae87636e2b4945c43197e3e1789e3c3b1744f552255129e18434d79e55d31176994c4226a1ecc532a65767421cb3599350575350290ca620d311cef46a19d52b4a296483a1943ca38a2617e4bd94da4b42b820dcd5a05c109b1e8d06b4399fe77e7c3894100ad54453ce068736f19cc4097107b91777846edc03da8ed2d6e76b508e891407342313cffe8a3cf7f335282784b3c149e17c9ebb9b13c20d79ee01bd9c6a66988caa66954aa582a887dab66dc3b64d6e5b6cdee0b66d2a278ee7bdb03f4ef5f24226f4afc28cd04b5f5b7d4fe7d5c097fc75d3a56b9889551ca3f1cbb401b17ba8040d15c6494d95a21108000000a313000030140e084442b1684426d815d53c14000c96ba547a529a674150216408010600000000000000200082007474912bd88a808bdc586fb436f98d3391bfe214007cff8682163329ef728d817c2ad6dcb09b99221f0f791fde165b63b6b37ebfc82f6a95ae5a689d9a6764a1a1c22f5c624b89670c709bec27168f9ff0f356dc50cd24745899e24ea6243ffa3894cab5abfcf2b80b16215f9d852f8c14fbdfbfc8361665f128d1f2425f9565512db15e5d243b5fcd80bab4ee64d28c1eaad7d039a2b6b5bacbad27b54044889a1fb0b5256cb96d656626bf2af8e7159c6a0435ced9c4a8b95eb32f4b130a881884b244289f2c637c0ae5ffbc0c9b9dd880f2132ee010551d03fbe089c3a0b0322dbc4e81f22be44aec7d0d4b507e42c700a07527a9c79c9b0559762e9c921d027bd0cd1371bc6ccb1639ab6735f742f9491de369ce9f83a0d4613d94684bb99bfd6b2906e59fcef242e5f4a43facba3afdd7a50e4568651b395d99d33b590b547c7236844635f9da34b218c5696aec623a5cebba5483174a39c7900a38f9b83d613d854115aedd50f0dab02fea43614ff3f3f5a136dd09d6901c36ec28802926a214892264050982ee0ad0bb6e253deb0b977aef1c361d39bbee8492047973e23c94d8d05d95dfd74cb4d39f8df8c34c0e4505f861783c81a8ec3e443b1db280741d6c2e15a36bb3c7e884c6acff073ed617ea8d015b6cc58b96a92c0bb5676619c2e6f5bdc43c2937ee86ec1eacec1f7b69dfa994c7a282d1cc92785f028ae580546dc99a220cc520d1947246aaf0fb5ab4fb1a25c495314abfa08fb67e445783a98804b7edf92ea6f6a79d3229b452a4c4786acce58d1e3189be9e550ff96d0e69c70bc9682e7c28f04e30da83ab17d59561c680ea1b8c402042dd7792554397164a4467c6f7cc4243611a644e409f59fb126ec9ff9dd2cad8d028e55222bd70336a0b194dd91daa4718f8bc4c5650a38979b9367227980b57991923a5a3c01c906fd1dedb4eedc76f6fee95b4fce4cd52ec040437a4ce4b1d3734205c4ddb8e608588653bc44b4cab386dccbc3114570869120c91abb3a6282b649cec7b5a77f733c550c7c9ccd8c8a6ad18b7b8de1df5a5742029ed5ea222d0cc800c208a13036ca661e06f11841aac7dff10395e79d37fdc3fec5bb4682cf5a1dd4eaa448884758db03a1524ef45c4e8b234027ca38f7c4bdc87d5820851d2a504975570855fcc5bbcca00e25233b2622360969e19385a363822792766047d012947e50ffcc89eae138ad5556023f3ad658fae3970b315a0e95e8226af58d0bfa9d1afde6799db1533fcb301da0c8cf64fde42754c153f6c4637407b8339637b109e5777a7c36c215f0387d22f5065f88dd975deca48720bd296c6a400abb8cd72185c2ea290bb8d62cf757f89b0802a07e50877552eff6d9c4d55f322a906d8431c684b6d2c412ed7e5bb3bdef24ad0ab77abd805ce8de6cfb552368e354221431d12038daf6cf692e07f8196e97ab60dba89baed99e89bf45e115668868127311386f72b4f04e245e0e6916cb18a8fa61ddb52cb290f43db83d29a25d46867ef728ba727be3fa7ada5478eedb3448afa1dedb33ad41e7cf7c01e718e75f64452c8836c1335efa19e371a629f7c8ac75d2e292b196c5ffed99d411c407fd338dd687bc94af13a440e0fa74097c0db3da6d01babd02c030456347cbacb80b1898817e2f7d17459b0f32ec926f1a6293823502908bd1165bfcfe063a5627ad4a3e400b59fd2f1c463d6a6814783bea7cd814d9d9208cc5b0a54960fa0488888ca6fbb4843bc134c76c42fab2e1a2bd9ad3c2eee04ec1873d9853141a075bedc02a27d4ae1806616d2c2828d0135c0c2a022038930fc390255e14a8e2104c891db6754550212139d48e3a9cffab7286f7abaadfa6a855262c36b872f1f725aab41c35da6984b212a6662e5aaef809076f61619ac29fb6e7bbc6a66ed4016ae47a7d31fde4c5c7c8e11d95b15587108c9331e0c25f04f7db434f1799da5a8f6f632776a00d0ca35f49b91fdf5f60e101c9004836bf5f807415faaad9a2d013a989802e5bf284fa818ddd7e70b3ec912ddb6cd62009bd98cb4aeb14754c44c7f426826ee0a386820f95c113e4bc67b32f2008f790c86c10447a06ddd31fd312ea942f1e2ce1c11f05a14d9c67e9d48dc31b7dbfe32a88be0d6aa6dd5dacf22997c83e56e753fdf0c4cbe4aa3b4aef2bba9d1db81d651331d49953099e499fc3a7506795e2f33c5e9ad7d9903810404bef0308bddfc6f4d3b40a8f3a1e1360e83c961e2e80be77b7527d7a22740d94bb1a1d360ab05e5f67136bf1124f1dfb04c8fa8403541d0a5637c9b76586fd37b0a46a43fda805a5479a8e15e0c1873133776c003a3c865a14c5ec2b6ae8471a9e12ed9888dcaf7ad273f79f53fb07a3bc63ecbab92aa0d20e1d16dd30dc3c8bfb37dd29c8f0270496aa8113a1b62188634bfec8e6b8ae115e201cca0b2311742b40405e6b44b7506c085082fc9107475f72903bd63f70acb43fca51cd1ac754dfbd1f486a310572d7fa376aa2c17318c7ce6cd2793c15678757a0be5d7dd72e49e7e11ed09a1a1be39ca42d9d969c0913aa136793cd545aa08e154e546b9e47aaadfcac2d551db3e291cad502a48e4a0c2c898dfb676c943ebf97fcfa01b67cd62a5851ea06d02c1eb65685382df70256347adf83a7564005767cd40a4f80944564272bfc4f052508a36dddc5d64f8a0992d7d6dc99da2a83174f5d796a7e82fb619c367e2054338d86776b95317052755bcaaf026b279c6050b73b6feef7a8a6fd0b0c0e46a14d38d51302ad7a42e43b16967fa80ee7ba295eef33e3d1d98218ae3b8cfc051cd65b07cd7cc8394c32edd7d946666e0ab4e0ae8ceed34b22593f7b50e03d550ae3a87f01ea77e91173147ef7b591255336a2dbd6bf1dd0c0c6f6cd372f4d992efc4dd4d4dc76354cb6b69714d686362d5d2cf669eb1b1fa58d5456364c9bc7f7c3aba1981215e5a256d6501579244a493006143f2b52504bbdfaa091189b51dacd402b9af819a1786bb5c0ad24a952e526cc644f3d0c5522d0083e34cadaffa154c39b05350c37f288ca87e07457699cf054ac8736bbf42efc0225d67f6780357141eab6438bd46dbb490abcb08a12048131155cc193799d500222e64d9a060eb212320078d42c699035b9a44994cecd0d361e8b2734083106062d1122ef28c1d2b023851c29c5076a34106508ac60a4f12934a7302ed3ac863882161b4a76dafb8cea88589c0422975dd52a5456e925bfd161d64e0b4aea6b8efb4d8d45a5dbc9c27d0c14241ae1d823621201542acb1a4bbf526056a035715f292fd7ad81f9e689bc10439f0cd9bcc583c4db53ff135ecb66e5d0d941cf0448c27b2866473c91fe518b5fad63bef3315522e8eab3b4880d1cbcc0bcefdaa14a280f08116b5030371196fe1ed36b55fb7ec1d0300fb3542128395be11a2b26fa505032840c1c309a7c3f9ca562429f33e059bfdda8c86419dc1a4897ff4400bc405125cf7291f8c5aa2e47e7763fdd3f1e84cfa2f5fd8088eb733fd1438edab15a74f3e5953634759ed0d7521380fe1d702a17b652058ebc19d85fa1f867970ff410e3bb88d2f93c054db4cedca5d1173a5b2b117302bed5d366710de1738369a2eb85b6496d7272f6f79ec2c2cb78c019bc4544a791a42b447331a69ce4b227015799ceb0c31f72597f15eceaffe1479b022b36f3b666a1490d07ccdc47303d5869c5be466c3bef3bb9c50a4fb186f65a459db2acb1336662a7cde3d5baf82422806272e80300dc8c40b0043d5a8ddc8c18a177a2b5ec3f0ca759d3854177a84af5558a1d8e4b386f2bc23e15cac2253448cfe54b1dd8f15cb831b1a918c67c4504c921b1e4cdd707f8318ece8c9de0642a53bf7387b85636ea73487b17c1f5ab800fb44176b654e5b1e4888fe430ee9c34dd4eb2a934a54330d232331f36e4e762e4f030be2408a748d7c24a69ac2698a9ee3f12890bc24ee5c4112c296f2d36fb958925408d5f9ca2738b08343e4e010fa62204427859bda8ac68fc31b4f4dc312fbaf1ae3224ae2c328f3eff15adfab9cbc46e984ad0a8c8e823736fffc7cc582ed821e8f5f705d4a2fa5a748353f6029f9c48ba3ac869510405b728e703eb1e4421d5c03a261707b1081ae733f3148c21401089741b51313d0864061deb60dd244ffb3103e20f701f3ab67f72e2ec3f1e3698a5c812c38691088ef69fecb9043c38b9294ef0b9ef67b67000df0383b3265aadd1e19abbe2c640056976d1e69731fe14a76f8413be22df63a898d69c67bc83b9e3847e1678d944fd05f129a4d66ab3bf61c29b650bf1d988ff8e3bdbc50dd544803864f83c8ca7d9f994954948aec4fee2799065becc4f86d7c866f0a6df3e2aee902a46194ec1e5be68a87223720e5a28661e24567e41a6f394ea401b4a63b3bc00e1c7ca0e8076457e63d6b369c3b9c7d227f773be9ccbcb04648c32975203c6906fbb3a25d0f55014e6c598f3836959568333c5d2b1f6a741bab5f6e567407e9e5397129df6cb8ca594dac33483d2be4b9170c6ebbb16c59e3448b3604b2baf606dddb12f59550e6d0eae871675f87f0e44bcf711d483820eba7ccd70a0b802d09c4ec04d44c8f30cb06b82d979fa4706c0edc401fbe04859639ab6a172bb68a73ed5ae52a0cf76727b6e8e6f6c83e858c7ae4d0ad9c50c5d66ee61a24b375a53491655b3b83c394a0cf5f70a7093c890b90c23405d54391c9b8dc9d70f50aa5d9704995eba7cc5d7f36e6b0241aa9cfcec4b04c4f4545d6e6b2043d9a1adb7d79ab0a310bbde0453b24ca75c0f80126e91b11254236330d030b68f0f563d8ad76baf6072e9b35b1ebd44ead06a69dbd58ad0b9b9aad0c5312bf06d0c17fb1109e9048c7a103f944a11104d6526013f9587bb1f1ca9aede19169922daad3d7e455acad662ef3c836f8dcc6ba610cd315c6c9a4de1cef4c88c1a45842ff6691322f222221681db57bbebd1f316237262007457bd7587e0659ef5cf35cd3abd5e172b2d40788f56669e8f9d26a1d0ecaa992a6949aa59e07852e755048a71dcbf5844f3af412841ce6b8ced8f2b96fdebc7be6495201379aee90c96a86654f5264b1fedf4e41b6d4a4c70ab0344eadb7a7b8982fe398a0d63bd1e3c6fe71f6d9b0120fef3acf7532c64f083800360edf64f43a07d1b3c65754f7ab49055fa12d2e4fe2e2ec6d6cd5bc5522e434fa1ab19ab33fed3a0215efa974dde540cd24595935804f42e58a1719006b221d90f79c60689b19e14e663c36ced36c4ca6c1b9663643ebf441702e2d114688da935bb155bf6abc46a19a5f6f7c02b7fbbacb7349cc48473d8e3664dc57a15d712e1d22928e944906d962ac472c56a5d645d70c9795fc5408abf8704d6d563e6527e9e5555d9771fe254bdd21e2693066cee737273555e335d2f75d4c97d860c64c43b10a73f971f0928df8c757516b224b77a7080b8707ec4df8c4f245e3c53a4a0a1b83a6e03270952e2c8bbbf8ecc99cad000055b426bf9803fdaed4b1af2c4295ff840ced7797c4732ffcbf664c4d9c296dc8f7258faea64b7030dcac414f3501e6238303fee256a961aa8217f92f08ff318a40485f32c89b7a8daf8f24b025edc4161f4e3dd1f8cca421469bd3d8ccb41f9c009e3fd493cb5c77bb22acbfc55555af884a71fad60f3e2733f0183fb26f82044fb8efeac5e9bbbd04c053adb728694efc1c05ec060a2fef313d64c10a56f00187721c2788f146b7ee4ce6f047e6a148ab779bf7734f91c52762b371dc636f669534d9d2c7bd2ee15dd96539f9b82a6216d41346d9397f730384ccdec1d744b75990a9093e5f42bf8b082d68300d3dd424c03254bb04091aea103da4a7760ea426d3cf3bf68fafb53e6d7d1505a26122bdb62aa01098a98fde496667c090b497b5e52da7828db8997a9655be07408bacd3cbe5f9840551a52a7640ea9a3f62e64f018434610a66842b802c7cbb6fab1ab9a4273ec48102c5e2737dd505aab6b62baa85cd52ff18a464bb7f85c8667914653bb4b448760a5af124747eb575677e402f547534da6fc0875e9d889514ce21424913f7f59f9b097a0834916697bce481810a08b7dad0926cd918c4db7ae0781131f01baf6367126db9787ca66b7c513b09eee9e80728248c4bdb17d5b207651c0b7a9a00eff088362aa23e9cfc412f126da5b91b6ff06530e5fb12fdde831b0af3c948a46d9e7358f73b9de5f8d2341ac5a097e2c2f2a1551094ae331d623473860f6215e64f0171560ab992a3c28c6ad8f33d5675687ca671dc17864864bd42ae94c70471af927f60b0cae40197908e45d72b7f1482cc49ec8a550f838e1204ed48ff0ddb831c1fd823d668316a1738fef8d576876aebb4ae121357806d6098beca6a0dff8e9d840fce924bf1a040c562c1ab4af189c65eefd2ef566c5ab51849e9a0510801c53e63cc600fcbca0b9048a5071743bc2bd82cf451c318c9ae1ab9b11689898abd1285b5097ca493efb7b9f0c1a9362ac70a1e6cd11e45b1952438b0f7835fe7c79aba62cfd910f1fe4406a7167cb1dfa73bf0d495de78bb78c56a484a86036ae22e2602fb75e49ab5522e2a619783786863a54c023e87bbbcb84078558240e1ec440ff9a618329c6cbc78bc7b3065460fe43edf903c58bf38f7b050faa0214c659872b23086575403880f2b1ad21c5415a528637058d5a22aff7b3d85b4115e602abffd73fce5c5650427b1d768c8ca2a2f7eeb71fb5ff070e4bf55b24ae85d3dde829e79f37d6d64b290e7606af59a8c051b7a24b8d4f631f2a7ceb1d5b3ebec701f779a54a8028d5bb46f178d2c0a81caefaaa97e8b628946ae730aa38d6e524ed52ac9b4318bcb289ac5e9a1dfffd8ab0bb39d15786d5ed23a939961b7a96db8d66c3fd7d873e61f8012256aa573d0330bdd45ba3cf1b80338e162e7c76d8ea973488d08372ee05690c9ab18901af05046ffe90128df6cdf0374db783545a2d8e64d9ea2614f0d1926f4b60351232acad0211988cd0db50bbf4b0e1665c8292f6c285b823f05b0ee261abedadec161423e8fc6cb75a7a6e1c53ebaa039b2635c44ffdc485b604309ccf80077ea3e1e59766f849f34bc2637df4f547a0ad0bb882e83771e8a2669866c638b27207e53c17dbd38e38b33018922d6dc27d0bf67103f2683da661f9f22e6d490d287b1ae02fbadb9fd4b10e81a989c5eaa0bb9d418a740b78f908a6277d3c391aa018bda76eb63a373563af8afb98d41da5e12b61747ed216bc03024f22e606169d4f6924e6a3c1471525943683f19bb18b9088133e8a4750ad72a2d0098bafd4bb0e3d5b7d89a6b3db256490460bc09ea9e0a49eea22d2b5754e7183bdb0c059d8829cb446284e184f8977099fa8e3579e223de1b46ab5d792d4cb28d017927b63c591c283304906ef3e7dfcbceba219d4a145809297b7f03a71eedd4076cd4a932a1f5aae733fb2b94233dd338161cc0999103ef1c0ac43b35688387490bd1fb324001dd47aa3154ffc32e95a9b2d9610b71425891909e59a590cdd04f83b148863917879b8cf7b3aba69e5f4a2047385989e9a23059a3dfffc0ac4297fb1a759930dc32376ea32a28e1a86295fcbd9373caa54f5ceb105d53b8fc3340178aa6386f217c687ecdf8508f5b0c534220351b02bf835b3be8a6e18e544702f1dbc6112500edfcda9ad7cd1b9ff155c3a989e95d34f89bec8390b823b8800f41cc0ea48451c185ec3798c5b24193673947df2fb17c36c4b1e237b14d0545b92fd5f8e97ba3ce66788c7103df686b87d02a001e9c200971123c83d38206ae8a4e9a7a8a4d0256aeed37873819d27b27052d30c1db303698cb6d90a5045c69900f6b94a66250edb6cf02f40a779e7543b15a6ebaff5e3eda053620670924d8bd8be103045f0464b144f3aece7ef2ffaf24278c9350f0455f366ca995b0e5ff0c7ed09b403a9d30c38f8803278f5e6eabd98988bb02ee670772f179161b712ff9700f6373f610a2cb264c436c42532f97c25651fb521868369dc5ae46c7a42fbe7ca4808bbd88390616c48bd44bc5f73339df512b738d35f2b7099b860243cc6bf84162108bcb66df493b6a6efbc258d0084967bff906e0bae01de6b7e4a640360b1726f3acd413780c01df2bc4330e611da80c7fcd86ca00240ca1a3e9e21943b7fd6ae5a4572ce04879c3366ee73c896114a32ffe84a312098d55ee3cc5ac24eb8afe615100b03bd87b90840ad83ddb406dd3c136122ede71b56b2c6afe7090f169486e15bee7c59788b844ba64f5c25da8180ea7d393f76e324010e3bed1ae95c80bf2f6a7b3dc2c725af65920c6c05afa19642e3e9dd222e4d7efcce9a63974ebf67ed7ae24056794794a2226e750a622593e2850d9415e4426248a60338a288d99c3de83d1b0305648d8ed9175fd40e59aabd6956c786deb6793adbc86f07b09aa33bbfaf92e7da7e5a1245d3d7e44040cf5023821dbab3328dbef9938776193c22073fffdb8389b2444294b66916841f18738ca79992818364d6d7cc495be128774089b7a3135aac6fbdb0e55f618960d787066918f8fe929095aa5801df3c862b25d6cd8512d7a1c9f8b3959b55000fc29c15a68bd9e151a4e31827df3e310a2ffb373c81fa8fec61072d17d3435717cec70b33e689e905e016b2b5f6871b22497d2a85065f1484b6e8980fba93529becaaeca59ba06665ffa435da349c748d823309326da7fdfe19caaf584c4b48c2afb924b2b82a6a3041d110d421922771cd20f0334a6f758cbe8e6254a5a5ed9c2bfa5c427a127ea0b2bcce9fb13e18fb0c4d3b824b3ea3f9667a44574458b112b8286830b62915a5e1625dff585ecc77493e372b11af8f8c9033ab5e710f5986fda1a0b5c0aa7f68c3e42406687c70cd946280dec2cbb6082fddf98a09866ff128a3c7171d938106133ba79080f35c6786e0c275edf6835d725c8665de6b93f6ef385c613c5582776804470adb1a6f2ea92a7ea78ad838823fa7d3a32528d96e2109b9aa8cf971d12448870f2303d42081f37fef458f2672109577e585a4eaac168a850f5348b25ce851cfce454f07bf26add65a45b9612ec9b9e9356e6dfcd910280da0716038a0ee76a997d377f689605e685ef8c247918240e1ae936959b9fa277d71dcb6f96e756a19f6c7ec97354b77900c1aca9875943442c4f45c8cb74a1d277dd10e9341345ca39409480cc2ef300ee56b51fdf3cc2a24c5a5b18a47a5b693827ca9c0dd271159ef2390c72d7adab8904ab14373a8801b608669810f53de8378518c281ca8d01b7d1fda0b65650f97d4a63bda4961357dcaca105509240dcf5dc569a8c8391e19cf18ca24e79ca815e1e25dcbbb7e5dec6951fec325bcee079c97c7c92b92022d99e8d1dd5a65e74da35e9759e9427805ee1b154fb4e8b63bb2c31738007e3145e550b330bd482d983d8a6246496ca507508c383c1a70abbc976c02f68c4f954dde587bcb49af857c7bf352c2b5560c9ca69fd773766f923004584176a792e2db69ba067b8ecd270c19726e12768f0834043fef250827812fd673d59c670a119607865f7d02a2ac74656605f9cc600fa2fe1a54ef4731e9761f6cfff95748cf08099c214e0dfca507a263b223b3d85097294b07208ae51d509dddee4ccfe096d2384207b93b2de14e3287a759c20047ad46ea9d9ba2f7025261e5c4ea3ebe57614264445c8058cc93cb0fd26efbb47232cb1df7b692efd89f638e5b221cefff86d1017aa327cd6540647f3d0c0a58dcc18bdc18a660cab53656e3edee238013f78283542c9d15b0168e5eafb2415a4a4cc71fa0af32603074b475247cfae937aac8eb768bab7848d01660d84c1d606739074d59f0f131c2e57bfc92308b4172168a069f92ffe63d13dc5f8d1bc8ad595cfa73f42a4ddbb1528d990b3fd167ea502e19ec2d5dcb99b2f560c2af962745282f03a0b225ffcde29ee6d0e41d0958ea0012ee593733a8423a653e4e68401f3eb88c501be0728cf0bc239492a660a1b88e4b447fa062c4ef4adca63072cbc4a71f70b69d6baeb8f300ad02cb06c51bed0f2473aae55d302ace90829466d6050d5bc73e50d4473e9a3b3f47b2c7735c22e1162a6ddc727dc570dd4537de556f3a1bbcb1ffa13b941716ae08ccb5f2d9a338eade8b17c571fb8ed4b965d0758874154de3920c23ba934448c93c4dd1bcd4dcfc4d605dda9464c60153ca73d7ec13c6ada938d04b1917f415ff18cf5750600d6c50b18ea2a25f7ad46de9e9c8bd1a4449e787f0ec734618f9fd0cef12011f91eb17dce010f9dae95b1dc70371d66f1bab5f26f1241b7885de11d3e0a3848c8e1ae8737334a688d4aa3d9267419957b5158abf7a32c5d0929ab269859ff8291d6f4d5cfab587de37c48e6fc4e5a4ed44638996292f01695707b9e07722f98fae04f1015ce9a1c6e7f4d33f03c2e1e0e35c44d9a3775957b9a7c6eb91bd630f55c6de1467583aad88cdd9492cccf47700a8f9c35c4dfe5c13cd3e2dda10c2fe36d71d21ef280171cb1c21bcc0b0e669fe10d41a71fac61e696a01c80c8bad6b85ef5201872ccf16aae8c6cecd67217156d7a52b21529451184123b500e20a78a0e12663247246daba22f9161ea222762285760ca0f5745639edc841d3f8a1e1cd82ebc116a28be539e6b22601527370cdb8ae17988edc801aef1c65282370821d678dd06faa9f3419a82353bb18fde13cba0a9e0d98a1c29fe0bbf40286bf594ea378015a21c4301fcf2ceca4b06f4eefebcc21afe64c8799cb30f46105f3a55f33f73ad3c6d7f137a1642c547a68ef51893b046451e0b236730a8596e2c4209830f4aa5e2b11fce062e1ca8b0ef9da39725710469bb10a598202fb6d1857569ef46ac3aafd060cd0977bffea0bf9cd316f092650b0d7acb3510ade15f8048a061450e08752fcad30ffdc700a4a14e6181d232d771395921d849e36c02be6ba417315e24451bf82c3d21782166aec8fc848178d8a1dcfe75ea53273ddc5e37a5a74ed2e332122f7653af5ace2f1e1c2d5a915a22b2e8928c9973139dca9883b265410fb70848d6f26e9f70bdac3e04ff230428471df7604324d0bc2c2c8088c36aac3117eef53d6b5c5fd19b0755daa407ab23d940694dae45cd9660929b936a39fc5283cb1f32e5d23305f130195f63d79ccf6ec08f0a1d9507bbfa872dfebd36e8579c8ad618c475e3c1b2e0946e79b3ffe378c80f38d97a281d78b2a174aba7a5fc7267f31e5e7b7df14dd3a5574b84cd74e59d879d00ffa8924b3e8beea88f182b3bc3b92c09cb372184965ff909cae7ac4de56cead89d6e58b7c0009795b5ecd98e0d9a9cc6303cd8fd0ad1bffedcbd27e15f35c736bb6a8ae8555ba2351cfe86b48a8639e2461022ff4814b50bea08ab5127882701b7c4d924c63addda1c4c64b92bd1b5eb1b2c825575e971d6d5c2d1da8683ce46a2f3e142216d0285451d135fcf4a576978ea0de407a8027f96eff3977bbb67329fe82f4548d282c76ee6971d3b17328cde7925a0c59801a94040dbcbb3f711df463b6f581f8c64c7ff7f9e1e0f20af58b134f8668a46a1ce9aa5ce62004a80dbad04692fc7ddbbacb5bbb5448bc81227cc317289e7ad126d900c0503c7ea4307fba86717f29a03f104c0f98c5a514e3e96749f15aaac2f0e9b43302381ff710b44ed92029c1e5edd03f0a06417a24948b6e49ecc79a444eea640e4e6adae80f0a49d4fcddd46bda8f0fc23e38ba5e2023fab925e4fb703f5d14eb7aa00708a34b6193f3061147eaca7018a297f5722ffab45682c449304901d63b8240b36957e82edaec201c363132a064382b511ecd6e926df0b3b924bd6a4a86483c2c79145999790102bc612d4b4fe9df8ce08ea2b65ea2fe31166341b6875045f76720d4519c506e13113fb705be6d529ea4898ef49f1246e09e06cac763e8fbac8632ec36f15b4199b9047426c36077076ecdb04608a4a1e3b7ac89cc392aa612a2c07ac4cde913f32e399723c8e303347ffa699014c88d830680bf601661dfb997cff857c4a3c0b61a436b26e1e37d2a6804dd528d3f714d1140109038e4d1c9a8d56663e467c04a0868b6d18f73ea00db866d09b74b80265838902dac2a89f02e4beaaf0e71b117aaac6d41b0c71704b7f5434b76c3be32c8141c868722d03befeb883913ab0bcca906b812710bec663868dc466b064b209c77056d38c42cf041266e6c7e8a7d88aa23a7dde1745c6481a68e9d5083e98bd9cbd78a900b3d16d3f3d7bbc88df6a25567a13d16d17193509090e351cd390393ae715b3314d856da92ebad738a6a833ffd1922fc4dcd5ac149e11b051b4dceed59908b358e23ad770177237996ede63857a915214a5e569149e9d69a45a65c4948763eca9b4d2bb46d95e123e4bceaf1713d215af45f931d519d5311a7a03bc9fb1ff3b0c4c104f4b587a428c3b8717829ec6d2485ea8c561244aa40dbf6600f7408ab1da8d168136b86693dbd6a15960110fd267981477fbb884a2ac619b820e5c6943f8a554387c29dac4130f81800051009abf81ed86de106683062ccd44645e14b66d70b2685a0e469f26fc05d1335c07125c18441cff6add5a12b27d8461cd9490713b4584eda56ef1cc8a0c4c4b329ded54a6c270b38d7bcd812c0c479cf143169936d44d3f8aaa093b7a7ddecd3a3bf441b1d1a761b51dfd35d375f162250a87969e02b6a04a59fe176c89b03b485f84095d8f6b4b81c64a91a72f0c7f41712e4d6dad578a1bd30e03b1fcea81456a6b49d1d38eacc5446018f79279090414a830e3106817706de0b9a909a56d3084d9900903cfef1e07354279d723ba5fb788691497f0cf9100c41bfc90af50542c27414fb5efc71ff69b799002c9b133fbd035e3a5ff8e5d2ca30f1aee0eec07a7a6e4e9731c03ed0b0e8b5cde87ab9fa6428823e2b14f1a361515732f9b11212cfdb288f509cffc53af7918d27081a25580293a877b8f728f579ee5ff7951801ed2564fa9c08980ae3204092ae63706066a148db80b19ba65160696d30fa6df03456b03c4767955af3cc4ee36e10857e024ae91c1ec3d6a7fc634b708755610afaf903a0ad3cc8db81525b9ca3ffd065f6b70f0fedec6cf045c1ee630d723abd0945941bd665a13fba62d2883400bb27ac2955a8355ada8b35b440c70b34dcf9c693cf4119cf1d71133ee95c842be3fa9dd0da2413c06ccfd81755e04c707fa67673e8e16ad9c094336f1a1b9699367d02360b99fb4e1f68fb2ee5247deaf8433e26ed84030725a475a94388ba11da5611c76dba59c5a83e9c93b98f3ff508978821433180ef72fc87d59246bee6ceea678c4867b8b3622aa8d7b66f7ad00811210d5b6f11a058cb482e390521dce69484d7ab61782d6831d4176b05d7fc933c7c1ca631dffe290eee40a30064a4464c298841c8294bacb9ccea1933eec7cdd6985a090bcf45dc3a39f004e84129aae1d06a6d9cea39b8611a9c85b85667b0294893e96660c7c7e6a2214146395294323d52074b30d53f14214e615e86e0515dac07108fd5c212f10ebcfb89f539a0ab4159d0ddfa1830291ae60e16b0e7eb9136fffa0bc6b9eb2193d7b72334ed29d7ade5eef3186d2126349cca54fc6acf050a52671e9bdadbdb4b56a3cf2034c947cfa5019b90a23daf9bb500d3969436da216d6cefab34e95874918d0d6c699f8a630044208037b5a23b46ccd0dac528ec5e5518dc7a10d8d39cf9f890c1e0e7a4b728db2365410a1ef966ebd73e51dcb701cd4fc81018fbf0b805fc5e561c0e3b60c1e1a05cffbee797bff0674538414c2b06937940962f2414ced0786bb1c521cb0e83813c2e22fea389ba89beb70cdef0223e381e12bc0debb95bc994d4f0408c44a7d145f2e408ebbe5487be66ae0c6edd9cd51597095caecbac6c14ce4752514d9e9b203f8b721712e6e73ef38b2849bbb1c967b3669788b7c612bd637f97034e37e6a484fdac99a2573bdf73a953740366c888589bec57d1e23ddeede3d156797bc03a8f7147dc6265b9e508204df154af28d7501a1d2487b4f34608d8966f913ac7330821069d2f7bf160691fc2b7afa62938684392e67f528fb21c3af6101942e9ce6d71749967c39ed0964365e05d6b42f366dddd979a125b4799de6bb86d7601d0f747faa2f21ffd334c93c40b46e8eb8555c0df34f293ea0263132f774d3a228bef8a2765ade3e9115d74ae831d6046eab755288ecfc59487437abf8937224d5adf2bfe940fd1afd51e5de72f1e1009a2d7b82dba0ab16451ca9226f1684d1f79e840835d47f961018e91ec81d6d5d02b37a68efe24c94f49a53f8b40af1994db46df6addedf518d0ada4a798d5ffbb3234591113ca050d168cbeb7c597b78250c78dd2e7cb47428de3a30227fb376b39506e421d05beac09c69686f7de1b95f4b6155b33cb86bb35555b3c77d022dc82db26fea2a7625e0bb90d8db21bc072c5c891091f81ba1ad2d1c77c36d024cd5dc7286ed95f53d4082224ca4b74a2850aa01b87bfdd51879d10f489953ae12fa6d1092e6f61130b6a684fb2f256bcd60d2b45a23fc58a6424ce63989f6122cfbc1722578207a907a5a871334730dc700a34a14efedd70a19fb8e1b49203011508185daab8234e60858ba72c67c6dc92201b50f4f64394c4e157186f1a86da03631f8b42f69998e8df88f4d7d1ecde8e750001620a0a6938b3c390ef5aa2041ad3a9661f0c30b5807ec14769b5d831cbc900f972058dea8e8fa47f10616099a0acf29f10f2d5c119e854b0caf01108bf9b62f25e747f61cb738ab532d352c83834d50ee5d880c13e40f63a0db03ba31605a81cf8523f7776d214c7c1ac5867a8feea1d66878df7b2014f8295cf39b6d8b7042220dbd1ec528dcf2b3c2f369ad507e4f92d554ce378db3229f8fb91affa1edf1b207ce6f957a79f23477ad580c4dc23da900a8184b7912ca7a938bda729e217bd8b2eff095db3158b889bcc7b3890a00c2164f1b1ce6912f0dee99e62f3e12840c74c0aa340ce51f669716fd0b4a0609fa6c31b48fefc98a4e78559ad840385657ef3f167ffa34bd59bbef0986be69fd671713d5fea78943bf5d1609208d46227e3949759948fdba849f151ab30b29a757bce820e3da58f1b95b8f1872a305178d6f7789813c32c0ee7b86b714519f0d6cee5371743139b8a1ca3c55af928b1e93ebc6433f52426979997ad4b32f651e8fac3b8513439f8457952e5bb73bf5c8927030c89783324e492c19948e0300cf32bd3958015086f94fd41cdb87bfb53956a82283b300e5414422ec10306cc46ed843ed96db1420a44b860677a7dcf8b55f72f63c0cfda3f3e7e054642107c623f361dc1a4a4d0a345c8a869453fc80061d975b60f7866c6d6270190ab60082cd73b9afc77bc480be28bb9489924f3675c24433262c2d65a63e02d295bf181e529bbf713e3ac4a7a28855dbeb7e49d729180baa24643247eb9389783f803079a1d5b095bb4fed0b3bf9dcc3a986aabf4e614c8fa3dc9817661bb68724008c0d3fe802b57de1567d290c93b9aeb2f6626c0c042824eb7ce8bfbce37232f48f68efab1f4f6eb40d1338e9624ccf92ecef917d9ff56ec1cbd6ba0c5541a8951c2e201a71e5f85b8e7cb3681b34858c396e921c2cb35accd182b15d87248a4f30084f7479c7e03e35ae1baac6346b38a45d33a269db607ea71eafb693b1fe42eb7e0282f7862b38b106019377b7c08ff5fcb3d669feac17ddf40631b6f238b66b7337f3b74a088cd31f4a1403fa74b9b7d96e8f9928f673d8a8a3608ed33e87296385afd03d055bb7a1113bae3f293a6ede6d49aa62831c43bda36f4d90b53421b6dd3983c69176f80d534c79245a0562ca12c2e2114a6560951f2d444af796dc21d4a344e6e2ea93da0faa55955eb1e8c5519b8edf1f013ab63e189b9903438b8d3486e3c9d0569061ab0e2ac1d19df126ac60381e4bdff0f349380d7bf14f8254ad19e128164323cc936738d056404634da3ae98e413cd383b60cdbf4cce222a6d581d68ce4d38bbedf507c3038ab9353d8289bc24678f99e4cf239cbf06ffaaae406c25558f4e75f6cb580705d1470e2f739160f3d6f0b963b639b695cd29d3ce8f7f577ef7c00d42cf78607000296bae908c565bcd155968f18e651e782d32c27a0ebff00710ec8702fc26a58b67c2855b63b17878ab6710f9c15ed7fe3af54fac92a762ff2da6cea5def17421a9cb6af3c319ced3bd3a9572959dc03a3a1b31d46d97bbb1460d6d18bf14b39f6cdb1a469c8a6c218020846cd4425d430e7b4e64d423fba490c5bf55bdc91feeee40a2fa1907b179dbcc46af443ab2204aa9d0fbe126e6ed894e8832033d1957a4285f8c0e954137aa83bfa869de61b41b8329a1b795fd902d4eed0da27fac86b10df6fa4db26a0c334c48b52d63e299628e1f67352f8c6dd59c74866e79e9cff53d1d4b9a23e0b316ca3e9046d3e1855e4802f73008e786fbced5b02b31ebb1ae0d1c0a1700fcd78bb66e477014c00d94f7a7a016e82276fe77cb8ddb328cd6005f5162a9eadbc20e491cf002b630d736ac6b64fd1a9590a87ecad80450d12e10b4fdfb2e9bb777c6918d0f238d531444cc488c68858061eaf1a97ae62b1d48b255e10583640a77c78063f7f4319c38c073bee6f87285596046999384fc923300bd7b97570c23423512bc274dda422266268b94f752411f1a5f132aad864fd1cd8232a1cf40a720d435a33b74999d34f4024655e35f446756c469295d8497f26e21a43b98d267abca4db390a1058b91fadafe12bb75683add7248d84c2bebd9d18aacc33dc5ecd34269ca6c86cc7d3826d67cb331dd39eee6e53d370cfd8bffce0dfb0245985b4947e37c1cf37aa4cf072d3615339a9538d8401056fc6a1a1f801d850826e8004cc35aa48bcecb06053edbc15e51b9d5e249ab79ac37b1d6d529250e0a65ba2d0e2c6a8be71f52658639345025a7c6513ca9d79cd18f9e402da7135aaa33b163cfdaa72987da9b52e86392d97de09be2e4f429d805bbbfe84d73cb8a619896bb74514e0ffec70ce5f02c48ded55294efa5dc70721762a17c6e34b2589e892e9f3cc1e1709f927e5e4ba889c4b18776c63e778104b157c6217791b25d7ee6ee589860b692b6eb9147109dab2a0b4d1ae688ebd782c63d3c63ac54210da989adc4ed53ef716e6809f9131e4685a74fe4caf32e1786851a058468fa72a64698f1e8eefa2cccc5bfd7ce3d10a45855258b5302ab426049cff4d55e1c0e7df57bdb96c5839e1e6c144d1cac957c0e76152b64c1f14b89728062201c8379d615354b23c7c9cccf848fc8bca7545ffd75a1e88c77ae28a89a9f1f17cac673c21292709a1e332306287c4c771c8ab70f4a1fb52bb7e80decbad891a1e43b788739dee9a1d6981866f167c4296a1f40cbf5dd8865016ecbc0b743e37b9b45b6ab1e711ec3149f9310df29b912a9c66bc83b748f25850add815edc54160dd65119875a1016a8f0961e0107e6d628c3ba0eb65dabf7b1d73b477946bb3b7632c4d08d7b5171b49903d73ca5d03b79c6d3ae37e29eb95432281d61e7839c8498673f69c99e6f2bc358598d6baa8f3c4aaaf2c185bc8af239cce078f2fa1530eddbaeb8e3cc3810e5d5cdd4874f6f9791922df19fca8d7039ee984ec67d4b63553cc3661e6155d5f8775b7975244dbaf6d46e9e6d50a89a05dc8e163ece2d4aab1fa13eba5a7551f19b67068649ef047f35da33f2845dd6ac929aac7fb2ca916ad5bfb990a7d07dfeceb062e302ff65aac922c4ca516732b67b2f02f7022dd1ff0875f576efdf421ef94aab4bcd8891c3b173b588d3a90ee4c841033155238a8a958f97b6e03783609d1d001890ceede8b3ae06edd30be254980ccaf70781df3c21b8d0487b560b6dacdc90ab56bf7c27f7d85ef670881dfb8b105ac58237b3695bdbb20f08e22514bdce00c8d75c0257cd0ed98261f7a8a940145aee35354b9134956a869640a2886a664b1c24fb7b590858b987d5e2a4d348269cb5c7e648cbdc5c32703da0ecb4df21ca319ab5265eec652cbfaff702f18d735b909648c8a21d6acec48732e2c1086869166dbe39b4455f376f153a34121e3c7859e711b33a9f2bfff644beb128a9e75e13754425f06f897ae055b1c6c7554e5e40b5957f948d0f56fa69ef9df5d552b65ea464e63235347da2e91da4604dadcce30716e4d8be5a219c8f3c1422f09353e6c4a85cbd643e5f5d389ce23991d82b1d80d642de5029502430ad5f766c816483716aa2a66f23441504affc4525dff27714a1e0ba333e47bc626eb6e1464c689d5aeb4b62642c9bd71105e932a57ba88ebe21cdf1840e1a2734a38d2311fa373c578aa2798aac8aaa3142559787cb3aab03de1b0f039dc10a5994d96637ede8efe5bff2ab02a954305a5d692ff7fb1f751e3dc906082fc6bfe15acb4b49f3fe2cd2e1fade5b04d37623238a1796a3c577616603944b25fe9d3f577cc3ec74684a3f8793f0e31b791d8b90fc74aba616ab423943b1bbf20155015045400956b02a61da9ea18a04063f1f207cf92ebe877f72688f5721198bf7080cc9a7f281ce85fcd957a280bb0ea64b0c7d9acc9cb5e3068be904960cd907a09ceb35e4bcd9ea61eea8dbc6cd96ec5abcdaed1c6a0033662a3c7912cff72a478e223efdb19dba0eee9881e8c1e92e4ef67782d35ca5fbecbcc9b5d6954c22b3877c7422b6b26b620fcb532fcb09043f035c79b0428c7c3ccbac373fddad33bbfffe51ca1fba770823c3f1f87de9ae8e0af2f80b2a0755b7e520136453da5d137a3acf8f0a09962fa642a70432a455ad95f3002567d2f0bf5aa34e829f24ea46cb9c8f684904c30e652a3f2edeccc4a9509ff3367d2ae6ac2b6e5e5eca7888bf04a732b0bcd14569c98dc0bd15544aa55e690ffdb7ed9fa60ae74e0bb80e7c1f64058e0397a1ed4fee5550c18291e1c52788e009b9ef0e3c8ca8619be5b637ed3868b2d5aebcde428cfd3c34be8f2ebd8b904da063a00e5b1b569c5986165a4559ccd9cf946224b14f2e3ccf9a69d676e4cb7336775b05f9496a332dd41555a6b2fc366ce449fb6bfcb379d50fedea228a56fe5b3d835e633537f3dfa61ec8b3b8bf98fe8f7313231a85bf53d77182fe60b7c54abba0fc1e9014a4be0d10c2c35bb9184b881aa7374f5fa38c88f8ace362e859e7037a894037373fd17a12adc1b60eb4c3d6f5ccf4cd9673e547885c437805c2f4c903d49cc9ef1f4d2460d9f9e17c069e8a8396135e0b71724ff95a134b6bec222e70016ee053b62e39fe7496c0cb46801ea30dc75bfd5575092876ba6e7386020207a9faf8289877c64762a70fa56cc0b4aa068b836f211d202794a9c49d894b1e970580f0fcfb552aab86d627738b2f7d0c7243fbb70bbca9ef3bb06acc453d2d07ad7d3db649bf85653c9aa83e6ecfe50e649ed13d45d49591724f99ca249ac5e8e050437b3b8b03a04c45a6a2336c70a0e2bcf693b5273b60e13c1f018003b83da60f0804cf8307fc4256a4dc806bb30ee7fbee522bec62e919215cc3e91189a8f04257cb2b40775ee3ddc01119fba45d79f976776c394e821e74a5c5d83d9b329314d478e5941d5e8a86149146c4d62f526e2fd5b5522ca3df78fca0a27dd2384e6fe38a3428d3211963e619ef6a9fe757d68f66cbc3da3777c96f18738c0b679361275457aaf1e0338f69a640802ab565dacf8aa0d225e74c4df879d6a3cac894137480e468d8162ae7835919605651750fa69a5e3eee01f31b0eb2a3756aadb775051001ee2815c8363cf075286acbdb7ded76c7cffcbc155fee995adee76cbd5fccf86d24c15f684ff48cc36d337c34b56f7e2d809bb8815599b2d8d997b8a9f91acaf385fe3e4dc80a9fab39b853976691060831d90e704028f22f1c3458ddfa330eea580f5c4533a08743c55522a8e6bd8894a37618291fb00f189b2947e9558b6fc92795d29bd61ed2d236e22eaf21442a1c9505a54da8ed48398139d178012ddec5936adb2a3111f693864a2383618543af07efc11ef41bfee03f76098607949b2623ec7705a67ce913e8a5e6bb6aaa10966c1c3277b65497bb6e689154ab4ecbdcf534b1f15cbdf7ca0a308211b2a6e2fec4970e17efb72282d92f9bd96b2bdf0e33dca4362cd08edcadd094b89627c33c1d7e3da6231140186021a70fb0de44690a57b06901174af5242933807fa3865db77f4ad76c0c6e994e5bcfc533852cc88e68dedd142ca92e791451acd741e1d3be1ec5d9def83193525feca76112b5a4ee2ffb1e67f377ad475c81dc500a05c8f57143d92d9c07cda0efa02372d0100146fb3e0f86bf24b241255b93368a078d3b50c72a9224edd1e7b103ceac45e8247c53bdac77de3c79ad36fb0631cc4deb3c554d4247989c48efc2e042cbca12c1051212ecaffbad891cc4435a15559f4685fecc8de57ed3a76c46cdfb254361181a3b127a6fbf1a969f3345765f86075934a417e512f045927400eeaae52083dad2125ece4ab6452deb123f64fb8a711a1a8f3da2af75892fface33a0a57cc87105947c6342f6cd5d10852b9a31ed4ad800b1a4ae5be1f30e84624863a4453e3da7668e0e53a00ccf8eb378d38476a65c316a76e5999598d6824466c3ca894f940158973b69b3455974b058ccc740c324ddaea9c275723bc1dca3ea2a8736f52a7d373166dffc614b104786a33d90c98ff2a2c40e1c76ffbe17dc5028c86cf76bd016023ffae17aeb42e0887c4b013eed8735ab35b42cd18d5b542af1a2fbc2e47808da40b43c0278ce1924082fb293c6961c615abb2c0564300f84a473bc7c68f5322b3d420f4cfc8ce659f3f5a2c9a1dcfec9e8210c097a5a44e263b4a6cb6d5928963acfd1563b4c1ab5861972deac6340bbf0ac1fe8fa05b2955d9a17426e6bd23af6619c2d76d6a07b81619df73d5a247818b116ed879a38d0a6eec01cf7f3e2d4c42f96b5cf2ca080f8a2c6f501d3d54277fa63b64b30d3d49ec065deb5cee3ad1b335caf3863dd4ba0a8b6824d0e087d1c72c0b43603b4797a5f59a4061b5176e91a48c5874eebea8d8d0ab248645ca0033b3d88b4053d4b0a8269737454488304cf35f16b13b55bbba19cd0ffe5e0208fc0241feed62990466a78da72d8bee1229890d1922d194848a2295dde17e98cd0d56790aab13d7dac69ad46e45acd93d8403ae0e8350238b2eb5165f803358b2c89cf4028e2e84b7c5f6e7f9048f0aa4f5c2287b526b6d9d2ba78a1d821cab371d9e153811db6d7d451ee2895636f8a46fdbaaf000eb0f8343f6a9b1b96f848062e3458a946b16da07f3d8ea16d00b97dfb715007e88182bb7a32c82e33b1630145dbf76bde29ae7a7d6fb4ea1998d8c221c4598a16235762ca00fe625e5e5bed657b07520c5658bd9becb7c2f679414ccbd1b67a55fb8c91c49b25099f5b38231410b1e5d5f6b1e4898463a9d9c294cf8d0ff14589402739e6da95c651c488a909dee1fc9264f98b41bae79e82100757ffd97eeca8f2d5dda17275e264e695c20ca778c1904ef9c8b2bb7d56358fb3806d197437f11c4976ab0efb15f8aff497e595ec85b7c6ef6a270f0d69e57690e7433a726cd6500e8622845a5efd98cfc2f0af6c98c7a8e880875a4b0168e939021473c6167fc06e6ab816437ee3a9058864bf118d5a2e49d0da49905d8e92200831308ef1e5d35dec0a3db1832db55e281909b487462c1860d91cd12895933da0de743538b2f7a95ae44e26e462f21899d5c72a7a22412eda6773ff75f3d0aaafb53a13bbe2b2ef0a3ffcdd2dd7e1ef73944e22e32cd50ccd2ea5d3f2476dc19db150aae3c679c4832f5427e472c5a33db0a5c7f2e8562b40aec1496bed6a55ae6141a970053fb07c5f355a5b16a10199136845d52ecdd6b6308fb924caff763e86388f658af3917c171f253ef65b2eaa605a83a58905c4cfd7836f003d10b8ae588d56cc3464bee3c176eec62c228982c12e309de567f03f2ded757d195f5922de872398dafa77712f2892e5841fb8faeeb2121ddde2825350861c4df3d733285198fbc67fa189994a6eae5673bcdda3445b0159dc651c11b83451408472303f47b462164c6ec855c16c7dd65a217dc1883a39cb3211230d514246d9805bdb4d4c8ec6dd9ce46a71724f6377cee543901d29a61577653735fbab621d35ff7959a1f6a11d53379f6d7a3e3b40f508143ad6376012233bc6b17288147d30ef987c15393c1964cfbe81a55ace0102cd5a51064ee06405238a2429d0f59194e1872b18bb226525d90280c06e9d3077f30500207d90d393c35e227860d7b3e232825b9953caabe15d7f4e2c26d7e924792f090c255a33e76da00cd599fa2ea8566c56215cdd6b73774727afb8126ab629548730ffecb7ebcc28f41a7634922ae658a9d6b1bb6cc063d8e32225d79b64883a17f26af381a3e8dbc8d22bec9787837d6c41e97b96c69ebc901eaf98932afccbed4e6f0918cb896ed4e09818e75faae8179de01003c4c753a5bf80137632e2e84d67238740926e4dc508bd988551c3817bf61b91b2c4b08c6cd407c5a2c56814e04ce32f6787f6956734c31aae990111890edf56adc97a4f7be7d581b4e1d668407ae614f81cae6db97887644f9a25036a70d14f60c020ed29aba15883c4fa7978c0c80c4de950ab010f126973679a779cf9d66c8f7ca63de8737a737b6a17fd7ec2bfb7e601706f80b68a1ff0be955549e11526c8a5b6d12ef37ccbc241737ccbf967f6cef9aa1b47fe669176cbe7fcd10739f1ff252366a406b9b8bb9d200da1a20fe99d9151dfbcc307742d15ff42d91fb6a7b7bbb91a12b48ebc278d695ab66a6d6416d73f49fc3aa8376990500d07f729fb3ca4852c75ca57c21b94b8d176281ebc4b300f6dfc0c5b067dd95f6800e39da9f3490f52a16fd90e66e4062015c573f5a74af9d09a2e5a19f7325f651729127cb9a10ac87b8a0ca10a158aef0e3b5ee1d025ce124e934695440b122a9144c330843acf8332059955bfa1109559c724188a22c318e68ffc0f0401e958b829150d73314a3a12a7d4c81a2b3f9a4af515cc97de45f20bae18e401769a5f9c924c7f34ae7c35b9e10c4adf4a1b80174852f09821e343429f410ed5c38ce42a308a6a355d01db41522e99bf4943b98c8982e9ce3a77d037927905fa35a7dde4fb2026e9cdb26a5f8bfceb225720db02db0da192800959e844383210febb9d0c04bb9f5a6843cf6e50649201d275b5c0cc288d0b74aedc24d5cb1e297e7679fb454f2204f1105c3b6423f02686cd0edb3c65aa7d14ca27fd64c53286676c404cc52f1d017805d58978a860119a98e7e57b73de00fdee6ad96640250f39299f920c99faa1eef9bef8ccde71c5d2804bbf51958a050bf4585bc7f9b26af10312bbe3dd0f76c2f3e14a501f219cfcae902bfb519f6e13899527e71d38609dd5ca53a6db3a37e8952f5c1f31de7b19fe5c6a2824f2530f6afd1ecf52d82f086c9a494353f30298a1bf9032a3b65e69c209e5a4b9a8e12f5fae40e87b85cea781f7947672f145c87e39acbf86eefe2d74bfaee3201365e7a95de966044c2ee81f3f8b34b6d09475dc71fcdb403d0f9088ca3aff3fcb21e5db78429b4c29874f23f67eb46288392cc656c866da33fad92c0f15ac21ef87dbc769c58703d1e3fb34d0edb07d787984c5d4650121bd9c20dc63f6b60a0e294443d75df4782f432225462f818bcd68f21f113a505ed0bea46d18d042d60494049b6628edb246e253afe29f088d3f810b2c8ec9c0d072557beee2e71dfebc529f3353db6afa51af6199c7be38ccc268609a147d31ab60e2fde79382b9b9d3a307ad977f2ef27465342153ecc94a60da8662ba420364fea5ab3009b7b6aaf8dd5518fa8384051c4cfa81360c49f69cc460cdb2aaaa116a9b7c63abd636aa22b5f88c264fb1ee267ab82f4378565e56a513b16ccc412b7f0fe4e56d815151a4974e3fd69b5ca573eff899f584552fa8c08d8d80e947f2c8fd3fca866ad07d79b6b49992dc5671d607b9359f387265a5d734fe0cd635dcea6615bb467d5fee96bdf311902aef6a8a18d0f6f37beda1ff933eef4676a17226177dc0d6a0cdc19b4a7c73e8cab3da5d8143484c50269a9e6dbc38acfa480ce9dcd5cd9527dc42cdb150d80169d45023b99aac240b498305dbe8c5d954e505109ead84fa7456b9b6361e5c38e9c02d05b62bc7a10ff2f465da5d0f1e0f855f4f88c5de7a7f4befc49f389bc18909b69cb55404cfd049e114e261d5a716e41179590b86a2037affd9c03b0b7c7bd318abdc9dc4eef4ee86fb7eb5ca61874b5980737d009b52fa49e609d33c40707f795dfd1259c9f7a0dfb7bbb434d085ace092a600d4ce699fb806f672d2e8df418aba5979419fedd7ff29f3c2cf56716342f8ea5a73d761479120c78625ccddb523e99d63de66f26602087874110a67472d65f051fea4f87c387ce4a80984ae958a90178bac312f25dd017984a26605acd1f38d0deb91a612c07b6cab5fa9a011e1477550e07a5fb58fa3ea0ebed461b0850a7db47178c1515f390b0e9db56741d7555f272fa80a5f911a92a3e265da655fb3e80ca021a75da69ccd0767a9f2f3697287eb7aea3c000eb8f6b897ac685ddb312407e7c5439f4b7f2ba3f71b6a1ecc137f96ed7216838e6bab8936e9900ec53f959aa1e34d63e92a3c877a9b4b0b881055f88081fd4166b47e6527d94269b710d02dae340dec98d659a3693d2ad03029e15d3364cf1e7bb984973b9ef97ce97cde94859abc9ca58c95e5f1c62c9dd6eba6fb847944484ecf1216ed9d87b113b8775c930009d8bde336fc266ed5367686204e3cea292a24b31137d242d45cc3f858327c7938fba942c1b9767447a9b159fb6c32a54366169f78401dcec05f070b6b9cd5e5dd87815e8a1e373241984e98f9491576050ab346e620ea5dd4596e1dd1f03ba4c2ec3d7ff0c538dc48e766979802366634c460606af464e0f2e90730437b2b000ced01f66950924f0ec5cf90046ec53426660db96a4c607df71d5abfdcc24ee6e92c055981d7ab726e410df51b88c04769184b0c48bfed1559965ddc4c9dab6f7acbaa64fe67d10e72a6e71af93c5dc692cb1eda83f170e0c041532b16007b3dc4ce57db8200754f3d2c73986af719639c200326d032c51a4a5dafd8cd192b655a80df4eca140b17d6c8e554c9a7fd36a9db8a7b2386b3cbc981192a9c15a058ffe59d9f73df5be400301b1166a8078e9b603c89c1023274335b495474dd83ca78405882d75c58941ec1235340b948500a70ad7d34ab4f01870246a0f319b1b652ce279c1daba1348a8d12735721442b59fa422c4357796b34836025567f990931b41863a338fe2ec8a44b966afdd50b3726db7e3704923e3d7c7cc7517dcb428ea7b80306fa5e48633a1b15f91b80414c3f1a7af38f3b3d1f6d6a81d1e59475bf80bbebc5231669f4e828c9d0838314f8f3f6f028d03a014cea0e89690df8a7ac6030d10443eeb5d9e1902aba663d97892a9b14e3b34b23c08f882294418343208c0cbfee11c0416e54bf11f14d82632de7ce6b01ca010423dfb5a767300627106e2f8675afbbd4fd04637f2fe03a62b14836f95a3cd46bb10321853ee6bf81a08829bc0c15b44d30c40ea0f207af3d5bf017907ae8fe153fbd625e39bb5f6b46d5d34893aad0f13e662aa0567afacbc5c0d5156901b4ccb2fc7205783e82bcc7bb313b27fda483b9000f2b3a359f86c0c3d627b987c715b8fda4b9b8e66543c591478224c7b549e3de7674a875b6c49faa0f47623f8fdbf80c79d4460b588855f812380c8bd2f042abf701603964032a87a604aa6fc39b1c87c77371f6f0811c699a7275116309e02b00c8bb031a8ca44a4beb745a047d8ce7d31b21d526c268c8978806e4cde08e185d87c329c62b76d0a56f37d74f4163ca22a4662902b6a706c8c461dd5b67fe27be9b6d873d638ca8fcc8ff221a97ec097bdbdbec94706d90e217b9c3bd2fd8d78bf7ea4bb3ece937914a0a8790dbfd329bd96e847b3d960e3bc69cedf962f9804d60327b8fb1376b5df29e6a871bb13a846cb58b8df751465a54fa7592a98a7b1c0c21849c2238d192fb905867cab046bdd7ca6c37d08265052154ad172f35d07c8a2d125bb3e68972171a98c95b5e136ca590d7791bf45a3f1bb199a5cc3ecf3ea94c8dfb4e287a6ea2b4b06afd376868d5ade6237e915c529b693ace844881125931d64db9efed230f7d5e27df0330f1d3d3baa8586a0fa8b59d298f40c427d060835feb13d75505493e1678b057b8696214f9112d96a6b344da282679c10fc4e7c9ee9329a56b9c01bc8685e0ac8f4ae34d1a4c26087b96aa5918e4137c74ae34bb0bb95e14dd67398eaa60fa4370d431b6899d314365c78e41c9292961b0fd1dc2a48442a6bd8af1641f3c6b63f35ed1efd058e296077c1b66493afc675c118d4aa8c7bbf60ca6e8c8926a4025e5f3d5ebc437911f1d183562abdc210c4e7c64b444858c09465524c75df42e1ec2933400a9b6a760bc5497b472f9396d8577ad99430752a3de6e093ac439d7340327a8013602437292eb9c23d5c3864c9fc654fc71b4062a7fc63b7f950df0e6599b511757b7598d403b397d497b6634e43ddc03689c3c448731198b12eb35bbbdcb9dc6e6ed3a8009b889e7b0f00b9a8160168e5ae5202245f379d260e2fffad4caf1605b2dcfc4879f05a87283cfc39eb6e15b14cf6fd6f9c587b6262a76d9bf3bc64bb056b1c51b7863e3180a9ab78007e42aadb8c04acbcd4a183084092c2377df51cf0664950cc69f377a60530c671dfc103f40e8a7bea5d80d8d56d8683202d6b9486482695c934341c8fde310dc04e85c417698f6e8ec526833fe255ffa92142944f8b10090a0007ca0fbc102807d098a9511899f7ca688c37baa6228a128b0fe58a0303c9d931b03ec5fd04683f25e3e0c212acd4206059ed28195f80dea118a944b93fffc68f1f0ec1071a341230b1ea5050e0dcee175e2e9b5d2cf072a7ab1091564bffd321be851af65964ba8177cb6b89125ff9127d0ae3035168a7d884ca7375ea50e953c04af55b11e9e347232b2a59bcbdb7a38178703e02e635761df892a88151fbc7e89f2be5890b2ee1996ba4b03b51a60cbd0e8a80e2ba7ddb7a2fc25da441b58fc2289769b803e3d2afb72b113b61f8e2e7eafd8f71b43c099cbdd65bab5262934a8c50d94a454b702a14d94d4cd89b0a31a53d68ce3551986579ac276ab548f219da7b9dc6d77dcf1ed3dabfd10df6b5dff3ee4d5fea7dab44e399daf00c5a2b8266323ee4e85e10d57ccbebef41bab232e9c121c152e18ccaa383939658573a035ffb2b153b0c60dbc4fbe33dc956a3a1b8f03b462d1893875df3db10639d549239d02a3cbc917a579d6f3c32a32a1dcdbfaf104cd3985f0718a396d7fa52c22341c4eb61e5441d1ae4150fdf86a5c288a6c85969402a736befda25ee51f0eb639bccf72b32046fd74a9aea570a285ce52a834b15af7d9e46361a8bf11a04278cd6c0f720ff17468f40d5ce759a3dcf27dc9d5443149a930366e78b6378febb48e373c466e25f92bcaef4c6de50fa850d88d817e317187aee734871870cd7a6109846cff1c2928a22b4a4f09523a6d2cd74db245325ba34815ffcaf71d58bcae13e79ffd395ac60ae4ee295544dc2683f5309e92671861695129c6c54fc0af45d932d4c015e7e2d0f39835c2a7015ada87570c8c8a3e6e542bd753c6d02f59e00a102fd7391bf2ea6398d122fe090a06d731b09b23545bde22410eb44ad3215eaa927ea4d463d74f747d1383a16d1150d952f43284548bd09d6c2f4594791ebe89524fda12ac1ef89e02f6c3e6fd316a3a88778d6ef68f9f3052e8180f0a5dcba8c6f6d209de466a4c052595696bbd1fb999ef074429e26e56144704d1ed3240f7303d599ec555e987429ccb21e69bd8f6859160354b2ee344f76c72b9da36c133e4f79c5a23fa7433f020bf562a434fa6fd781a80385a6a8933be59bea781db4ce673a8dd5786735e61eaa8f8a333cb7dfbbc657232130f6df9eb384384e7ef206927054dfc0187dfeef9959eb4783fd5444b0ba9ca1c0c7cef43f436d73e55a5b54c3bc829eb68fb3f78b3af45caa1a62799b90a6206380fdb44a9a1ae1f3195aa68f63918576728399973d97b311f7a6752c992deb1515ec4a9054f0f0fdd9ea154e0d5e6b00759917a0bbd0347426d36650ad0054c07a7c76c35a29cea317382daf74f1cf5723a5e48b4123ef3ab953a9b8e21433ea017c8cb1be933fb8737a7695cfba17e5be79947e0b3337aed113b393d8e5fc598d0072fc5c3e1f5e3efd0b2fb4fcb2368638e68e8bf8bb28219f96931940490a26a97e87d2ebe953a8c08ce0316f36399345da28d1de71fb30d3ed884b3f2eeb3d61eb7779b38f17c1be5587679e4ee5334c985297a582f2b79e3c4d1129263c46935e712c1d75203689011245d3ab4c98413818cf53e8a7e9019661fc317c3ca353f666db57a7e281bbfc7888ce507ce17f46ab2dead7aad820641fee380a0bb4501340d1ce51502e04bda1f56f03ebd06d42a965590a766e64c517a2c9587f62e8140bcbf7abbb8da7c0f317d54c812cd61a8cb1f96879827965c1729424ec3459ff667fabc4454ed24978fa235193913442bbcd11bb07f58a1bac53c10484a5cc36004ef53c30bbc9ad7d04b36dc3a5eefb36ed7680ed12ba9db079c46484a2ec909425e2362a3365934b4cab66c99b531868883f02e567f5d60886d4f16ebeea28c82edd0e086cfe471d1932422a90b5b09e0e95577666d07cb8c23d197d2b6ca478079fa1747c994ccc6f4d2c25c6f7b447e36001da401ae20456d9e8c706ebd3c198e955a34a29ef3f5a59e8cf5754f871a48b2ca6a28704425dc9a265385d51f78053d9d69f37fa5282b6bde076e4d34693a2144c5d7ba93bcc57c0e6ce3c395b1a51e4c7d31308b439552430adb7d57f0a5c2966bc02d0726a7571e508bce2c08eb64ef8d3dc05e9b7a3ed7db61ac8a110063ffd60c508cd741513cb638b0553b3213084e65050009bd7e128aaf1252f7de78f96e6616b99ec132aad16f59ecc6df9452aebd50d6a459db04f45564d660667f4b09797a6bad4f165db88d16f23b6ce60616b1b80dd620dbfd0c0d601890c8c0d37db8fd0cb2ec49c1d853894eddb39e2932c0e319258a7db8f2ad4406caef92ba2c33eaf05728f98f455740ea31a44871143fd11e93a7254c4f7f1931e09f35b109b68ade1a051511b11fa4429b5e4e397d1b62cc21f288e1a19f1d34bb290b6abfafb1df62a1e160be5617db4896277a64e62b222fe1a49ce06fe30a9b8a1cebfc5fdafad44b0dc4ab901f586cd71e53e9954e012a0c9fa969a8cc71ba26268e7414b1ba4ad446915963a2f3bf216bb2df3d4babcca5e7b68ae873c22c6cf5276394ddf352fde35c4bcd7a92d564cac77299b866ebe90d3552069125e1e4b3d2f2cedc92e673387adff4b9a15848a8715e1130030dbcdb18a6655e4de75004fa4ede58666c59d1037f89ab5e5c222c956e0f25c97c690a72d96408b72716e747c21f1af29da9b844c5e30a7a93f786fd32cccab887f0d38e83eb29c70070b05bef9ffe79fe840a6a8e1bdb05ca72dec81b054785351659cfd86e5d0ae9fa6b25cec84b47100399b8f923de4a70234f44ec0017d1a57142d0c543771623333c29cdeeed8e8f8ceb0a003ca09a78beb2dc1226855dd5958108012b1f84018a3a6914640a76c2c94e807d4ef4dc1088005a2f01e5dea8d8bd55be161c647b1c7301647aee6f18326316c5d98416e350686a3e820247f27808e47a2bfe7987bafbfb1d929470f87c20d131743896d6f200eb556060b9e9410adcd9462037178822a93ab5b25aa79200e8f4a65e6a71288c3814a6380383ca7ee650b3b4cbd9e663bad141087c9c6529c401c8e093b24f5392b09c4219c9ac461567ce270a08bde612f4871c25949cb320459ddd238855aa35507959c525e5374a4de4f0be40bcf5c2a170e73182131d7afcede1bce4d8f60e6ca72aa429c6e1bccc5dee51037dd695b1c12687f18b51e9aaa401352d96de54090d743833e196373156d5158f20c3a4d47a15090fb7ae1488fa415bf2fc480f493ee76c5054a88288e5b441a5d8559d51f307cc24c7a3303745218ab49c4701657290a23c7589b9651bbde5aa4327a5f9712f56e0ca5f1fdd6e16ed607db4f44b976ead73ab73e60438f746d6626effe4b275bab9d4c2420bbe8691fd3419300a22aa93ad704aa6e5e40c11332f2ad33117fd3c33042c0d776c808c8a3af4273a7f78ad5fbe90f99a701adfd7bc86bb5b2001148908895ed3f941ce4084ae1a2e8162134c1a01e09cb5b18bf3da6928bfaf559aef5e41da2032cbc48f88fdbab3d8eb400983ad28c0c56ef7e650068d22b4846160cda6a2ae9355ee32569c8de6b1379a35c06303df40866846786c1e234e6f53bd436cdbb8c536b0b741d28e8c519ac98035a954ba472eaab45fba8fad68aa8725258804efc7892af7509c732460ad649b1788e068bd7be702e8c4ce99af754088c40152c6cd33e20ccc5aea5cab9a7de67274d2a9bad44e225a4950ef30340d29f16944a871d543168a3aa639b82a862dbce2129fce70f96ead24caccdb0aec82458e332485ba58875f556a3fda3eb5a6f66601f9de89088cbcf49ec90b0636fc986366716ecd138d29874e77afcca8ae605660ce9ecdf5cac1ea699df10f8210284d2f769a286b190260b122025d44249c050ea72c683323cc10fc9ec8390cea26903576cefcc1caba332568529ffaf2da8da5bf733edede08b04b2a3979c31f2fa2e031a3d087aeda0a89b4a04e5400ceae2d1bf86e8d64b0236813c08e5a61f35857b9177c0c37c37486f930cc34c2dbe27c2ef026408eb9c9d45f3ec14048fd0f08657e49aacdc061519b163633f0e3cf1876184f7fe06e532e8e846c7646e669fd09af6c60a1d21b56d16f0f1e05a07d0ca25a27dee76800b3e536947570f808d0102b110ae5167f617c7571e12f086e0feaa864363b336b05cfaf2234d7737d1cfea9477aed3df33b01c8bb5a77d9c0328fbf1861622020bff82a34bf0ea7d69899f28e1feb399146c98b37aa888061a166f12f62c6a2f857ccb6084aa34ddcfff1c511d581bb2db0e0b4261291cc050bc8f4341853bf01f2ab9a9a4c461275ae482322ec3b60336f86479b7fd9c2ffd244ea698e7a158ea078199038c38201184fc3d030629ce3f33e1247f6d365c120a98169d74dc9887ea8028720b79b121df23771f509f752f23d5557d83219de6d91655b07b655d4f36c88465116986be26f242d16d799fbf23e88eef3726c219ddecaa55114dcb49c3f9e0b079d8758a1f701c9a1746ee9f5fffcf662f4ab19615f14ffd5f7039fea8c3a6b8afbbdfbbea7c749ad4e71c21fc78948f0536364fa76fe272a786c20b4431fb90f1c8fdbc732b024d8d8ba57e8ed2949ed7c8398c039b1c16fadfe42dcaa4e3acfc7849e337394ff244095e000cca300a79b0ecbaf93b1488a393f59ecef2f0ac9de40bf15734a9cc862949ca6f9031469878096ace20c3359cb9fc734a4f237c2de587c30ef0d6942bbbbc9139cdf8c9b852682a96f8ef688d7e259d2c3b5903fccdbe17ed19be69f01f602b090937196288f5a18d7224491e1314a6dd7bebdce3b36d71c1110b9dabf25bc5b6e7b8c3acfc9dcd3e2dd086af538fdf99dcc294dcebd4c461c0728773399cbca397a6b29822b34b778a469d0383ddaf7b343565f8882ee05b6db7fb9d2dc8dcbab917ebd01aa28ba10f2e5403f2f51f0b0e338de3ae7de6b9a8cb9ab824b0f31365544c3b6eb813d3ab9726ba497aa5cb054fb42eeb67ea879b57896ef44620a1ba6bb21e0f4243c08bd1d60a4dd3e2a6169cab1514c0e13460f48bbb2a0439d33885aac24dd1463c0a04aa29d4b218af4213d6d84d5934344d680e53f856b8ff7c4d26564db3be48b58e94488f6ea56d4330dfc98c65586e83af7162dfc64de42ab8dfc3a94c009fdc575042afef35a9c8bc29eb8fb01889cb2f2ee3a37cc9066101dc71e4b1806e03c6262f808a5e1701b9277f8d9c19b83fda4ce64483447f092922748788a9fefb9a158d5e26ba7ffa9c8a70c50d6989d4ce2d858fda45c71da5e38484f6929ede5202132d422ef68282ea46004c260fb0c436b87086fa1c6ca5a7ea69ed23b96e3ab11e7c3a3c1639d703f016707ddbc980a1597e48655569129b6019edc24bb044efebb197ed22e886d92e51351c1f8b8deef54081405ec8bc60c07656228b9980bf0e04f7efee885e53c8032bca90b97e01fe8bff17e014e6e9bbb75691b556fbec5b6e75b01bf63b987b213756e3eb60af0484f7715a407f1b26c89643ed3a815e0e1e676c7f72601b72dba80a5dde780c0d29de05713cb7a09335cb7e64c9299466863bba52dc360e608b2e7d28abed6da6c0c3ca07429158fe6f7f2d62025cadbab21b49f90efb7b2c06b8b56da171adbc35d660c0eb66343001a2822f1f0101a72878af1f8d5ceb56856987074fcad39bf43ef86814bf5a4b2ae7e14c496984200ab6e07d9ae1fb1851d853f9be2e7afa49fcfbc5159bb7da9efb9a0afcbbcf64a153e727fc6417af474f611110f6c15c24c410383a31437c2bbc27f73fb0a3a960aa6a06275f0dd6fca2b31df1c700e789b726c4ada9a4eb8b4e6c8abe2320145fd71546925be78deeef7ed4341b3078303b712e6b24d9be2bbc55dacb7744372c4546491aaf941e873e02561ae09e06af4b02d3776de2d633f9415c16e28add82a54641739dbdabde5d422f07e26421280a3800e2a45a5c139e1ff53dc5c26480d4a05fb704de9410d4e0c150ec7aa23bce6f4e7a8368426d3fa0acc6e544b29e2af924d384e82e0c78965c9013cb67c7b260545e3de14497fe8ccb0950e486e9f4f1881940d38431daaeaf36e6c0221d6cb99216364f3f58a325fb6e3dedfc1ac5cbccdbf5b2e7f84e582eba88ab98b4b4c829bafe0a83b0e0bb7f2529c4ca50ad1855922b74090c841801c1aaff494191b9b13702350c71878de8f53825fe8b2a2eb6fa827a2ad037455f71718fb91e58cee5119bd275c14b66853889897cfc96a934cac451dd7c2887ae51bdf197a03639a0ffcf577df9df0974e038c732399a4d38c28cafb9f0b4fe0668d74bc62212a6e3fc4c6fea1d336c83619d7509deee072ff5204089ac468dc0637745168e92f897b0ec5f7a858e983a66118739607e6005f3d9d4453ddff88e9737201a9346c9fa8e48a90e85d1ffce6aa11b3fdf6811c0bd719d3cc5f2cc7b2bfde3c9396a7bd5db4a2295a43ea7ef4683dc42cec8a2d088c8050f5ceb52bae0eeb06ac8e44f5ffed1e0636c202c9ca4920e8c263c7b9ea0f989df186741916c8c0f8f3e96517457e94a8a5629e99956c6c8910dcdb3cce8c843e7a0163ab80afc377360914eebaa68c11288f80218e38504fb1cd07e478a06f266497d838b9f49e9eaf713d6294f4a5894a7e4c2fec8fa7a0becaff208d35f6291e848544eec00fea26ebbcd8af2a14f31cc405d059bbc3e7dce69fce2710d2737e72bff04977ac50504eddbd171debc08714573f93408dbc714544099b8941bb56f418c7eb73963ddc4cbb9eaf40e3f03b115ddd8efad991e6e6ba7cc59deb643d69012da720b19947f29ace2e5e6e1567ca7d2211ebfccf612bd80afb13535ed829cd317fe8c23ca2d1716b13849bba7b5baab76b83122f27ddaf1685320148d2a03603712c1d0a77515c578a744ba6bd30db198e91f435a68eefa55aca658dafdea382e71ea73bda7538473d77b7a1f4118712762fc716c69f8e503d11de2316b5d546fc577176f5363b9e89d6e657aaf0a66bf5aaf34b52f862025a1c2bf021b4334480dd91c22b972550956cccd7f176789a8a245cf57dcad1be0f789ee561c6076d599bf7a2a2648a0e6c57ca65fcdfc828cde9a0c62ca4ff9ef0938aa415a3e508e6885cd66b6f384eeef0c8c259631fb4b0cfb84d63269a466822e1f018b31bed9ade8760fd2fe64f3999ad217dabe1458979ff1cd916a3762227c1f6a423401b3b536cbb23c95a560af78afaa77100ce62042cc814a78afdd2801e67428167d570eb8f03910c8623a549afc0179d3c7f9f3bf188beb31a8cfce62fc547012b247b3cfae89e1b5ea57dc1356f8375c05112437b4d08ee55c1dc1e539a5dc4ae0da4a704c8a39ba36050124c60cb9a0377192601a6168f17a8f66815ad0dd3a824b1446e22dda7aa645a166502bf8603874770af8620201e908d8aa2180b1a3f00b28328353851c7bfe8388467e61eb4c858a3b7ca895194b6f0c0d19c08439d346316df6298eabdf6bad5fb9b0d87d3ca1a979ced944cc27e98004974efd37afc6e8d686a5cc63962fc917e9f5ced0aafeb8672987ccf596a7a1f78d43f69592209ae5f0e82d317d5f6e8b5f5f966663d70a7ca50596d38495f324b9993f8dc8954e3212ac278b87d264dd908a3a8ee08d63564747340e5afb01bbb76f605a005046bb86f4c47eeeb1cdf3947bbf9fafab39fecd31efd7577746d80d785a5de6a578cc6a828520cc848d8c52f3be758a85884407cfa0169234e8861a9ace74548880631b1b20a7b922e2e1a84170a172e23f1f775c0f7f22c1202e0140e0231004e507f5404001ce84bfae8098504d6e4be5e5058179088a3fbcb70108b9fe5bf577259997e5496168b5a4af0c3eb160fdd097f1877a2d9d57df561011b7e637045debc999c0a923d11f7b3170ce80fc621dcc8ab88b2a0cb7a5249497fec37563a34da58b290bb64e8f6bdccb0d0ab94c850214be8bcd83e16f6a7568193bdf1bc4bf640965a84583c7c5338019a2481e868335be45e1a8948584a15e270070b0e1361ea1014b1e9ed1466228a261e2efacda552f88f420443bf78a8da62560d61b26427dc3c048d7b9ce3c1c8babe29a52b16c0a8125ec80ef9dc43b41c3a2414ae08b05e399bbcb431fcd9bb04da8784e17f086ede76d3edce9b95be15dc4c5880f8442fd205abc774457680adee7f9b1313b66f071cfb07ca2afaf6820fca551fdc8928ea51436bba41011fc359be7dd7bbc0a05e682afec0a7caead87704f578c0f82ca57dd2916f5ce5b13eb5d09029da1f0b16e8ff10365e35c9872c3ebedda5b76bc4866214b4c46b7abad916f1c9125845b2e9b41043d93eb78089b2fe394471d3d194ebc550dc18dc439b94bc3da0b1c5c78fcfcbd495b73d5a7b807927174064c8cc48aff405c8135f3569f7d287e6e341baca03d9801530fe133227616e6af33e9f1a29a50b386c0836aa9d05d1cfd32222ba0f7e5d0685e1910d07e56553fbed9e58be47c18b04ee387a16fb966cd5f0f8e0ecb7a7f5ff26cda92ccc4579cc0c0733faae062b07aae13f324daf8c4add2d160caabc585d9f5945410a07d07d1cfc7c12a41af219d1185350b9617b16161e12f161e5d4bf24d807495e72d8aca95ea7e7d9123207c5f0a7f8f811e8c9208b7bc92b4590e6f065666482c727c6509f05392de6d4b697b9cb5271952ad430a757f5f996cdcd6e7b0be1e0a3dbbf1d6469fa945dc280079e81ef9f54117b38576f351dfb6ccc998c25669d82ec97ddd9c2cb0d04da312580a80ddbc1798305fa0f9ebfbca5964f5f4c9464f39cfd67e8df8d9a7f61ee9b61ddf01b7b9e9295eedc402c04e0ff23ce0f0ac34f60edf3b36313dd592d05f52ce0e918ecc7ed9320baf14c236d7ebdeb39d02b6318737d637050663ffefd846951c5944bb4e9729789dd7691df82ccd31e7df4547d08a546d931fcddfd2d7f75c14bbb333e7bfe7227d1623a3bd872b07d3171eb9411c16cdeb80fae24333e76f8bcc145237b3ffe23ec3e8e0675715a795247b2ab7aa44012bd2b50a4a0dae9c37a8cf0931702d8132ab1271b69ced03557211a6602c0061e7aba3833405abaa652ed2f8b2f8e84f90e8041d8ad9a26d7acc2c0aa5f50205956426a0be9f2901724a659e43a01723b478d2bd015f24c8e1b8499ed23bf7cd1d53fb4f23c597a08c2ece2a06c75e03d5dc37491592c94f0ffb298af8960765bcd51750fc495aa8efa34fa472d213b090db29ef177db6bc65d351b2574caea32b8064480be424847bd1a8efb1fbfe25b5a2a14dae808c147ceca74d6e46a0453bd80d54ebae9c9b9cddb10709af319ad8d12d6687852a9cb05276214ecf5385a952659e9ca6caf294bb253094ba2777010ba24b9754d9e7c4e27dab6c6b7cbf77a6ad0cc53082856299380a0c7d213f66c460425d847b0d7866b503787492b717fc30f3079b5175b57364c4c415f60c78d3d32d492e82aaf3653e077032c80219275e17c773547323fef3e72757396f7497b946f64a375a94e03aa1e36cf348e51c15c896120e8f8feed76ac7d3bc85870f11b89a7de188a6b9e0597377956d8040f82ca1fda1d1f83a90ca820d46370591fd0d07de07be63a68ffea50e372f4d79b4e3caa65eef5df3dd428eb88f5b0a96ec99f3bdfd08900d3e1a2070ce27971c2c400b68eaf9d986ac9a06ce433570d77340cf0edf02d3362f35e11572e3c4ffef25662b523e998393d6f36dafb76ac7588012df9dfca74e23522d75423ba2b2cd577558e41e7246081d7822e6c04137f5eb1ab86a4be2e2db5f4d0c8f385d88b368b4e7f231a8115921d1ba1a5e8be9ae0883b78cc1f61487c1fbe02fa0e0a3c601d5a45e4c98e97bdc55a28adb6a5afac2dd609b14f93f9f34795fec6c055310d0f063fa519b29f22dab9fe766e49b9fdea977b662883b434ec620e5eb818656ece653d9283144fede6b5a3887b6df05f68dd2695564dff6a7f5e7c247eb20bd4581e2a4d88fafc2c07da5d63ac5decba482b352efc53c556036dc05f4a1e4b414f421e3d961f08e9a604f1b9063dc563de95553f6a86403c79ce050f64ed5de3708645d0f3c97e05430aae3c483826529f19f450e878382e2e126f9ff09969503622e8b881922d54524aaed799dc14b3b5f914570ae02f71c4d0753ce945fde8871dcbc1bf24907474c5569c25d438e13c54cdeab9012a962adbfc1c97141b811e8f22d8213698cd0ad1cf8b70273bbadb33a0062d115ee17f2ae38e9b04bed1fbf234c8b6c1d2271dd3bb9970b69cb2607d22f070bc6522d36dd27122a59f9127d5400e5de14079adfe43b2c5fcbf680342ced94bfb5aa813b371d16d75c747cf669107cd4bf2a6b5e278c81aadb7f1e4537a25bdb07005ea56a2963fc1ed8084856d75937ec6a071df615f4ad2ca60b07d0109245def14b5917361e4a381257cccb88e8d1d1e67d68efed458cf9273a3df2bc854bd5e8ac1f58c647f950fcc237d2117d099e5c0a0b08ed1c41c6d28635d2ebbad75964e629f578ded03b09b945fb1a82aabb554032c32512ec1cdfd1088054e20154e604ff76e4205e0b0ed0fcb0a91a3adcaab208aed6b0752129cf82b9608b0ed39f68f758d5e306344ce84f7bcb6862e703e1c0068f963ed3d22fc0a564ddc027229d81e95b68675efdc2be486fbd757a0ac544619cd2897c53209395f1eca328531c5d0d511273fcc0819c3aebbaa9d43cdc3148aba79ff20ed4365411c5e356f0c8d1c5bbd2ed3c71fa41b22c4c226d5d83b63bccc7a490e391bae473e0aed6396bf209cc9d70ff18a83dcf967ad935a8c8d7084cb38a62ee3f6ab48335cbb5b1d555b4f9691392c5425f41b3afa0e34bc9bd40a82dc224fb76e5cf1ff41a6192e4b4e282e53b8d1e81639c48fa5402976b3ef9551517b9a2b28ac94f831242d53d0510ef2dda939031aa09c880c18dab8e5f143deb8bf0631a67a942d963a11af951259990e2894339c909ebbd58f0fe4b61458db522b58a7a990bd8a8f7e6eb5d6a8087d752a40020df1318e1d4caa07750578404fa3dc8f06cc1971ec0026dd46d60e43744fd5cb0a3b4b0e9403fbec54812e550d3e143d870e3799c9479f3fb9fa8225bc5b1743d97437742bd35312c214e456a4cacc51b9114e6494e4748dd158ed175f0e15d02ee548f9191f8f353c203b89aff5b95e7dd1af7cb0dc8ecf51156f8c0db4870b95dfd54108b5939ccf7dd036af7352a451e08adaac4dbb7c1458e288427bb0c10eb1363a413e73f240849187e0b018d5afdc36a4a4e2fd41bf8e85277797415a3ae23e78aada5482ac4c5d0f5f6c14e1f3e64a87bf2d75590bfd73d2a12da66aef1c4cf6a91f2fe918138a7632ce00de4951230a103fc405829f7206d04c7ec0c899e60dcd5fdfd7ad92213fd66564afb85fbff5d6523cef2ee53c599084d44f86bb5a9c85c19e6f1c9fbd1a95d6253593e1131d5e743a8d2b4723dcccc40e5ea7af71026ad5fa972479002a51560ad65fbc3c7bfd56a8eaccaad9b5d1d171a73ac9d905188c2d2801b5dd7af9d7d56e11f73c109aa555e8c7483a03cb86900650500e284c87a41288e837edd190ab07a6c2650304f86cedd5e584feae0db8043f7c6d11d94869d1756aee83b169545f5a4a11eafdedab23540fe9d1140f0dbc506833eef4d06eaeba2c1323c25b864469ebf75ca6810c55846baf42151e307ddc5d0b83cde170074f30383314c8ac12833c6e8f60799812c2181fbd83550253b5ee8767a57a6ad2ccbf3f5fab2f6929f1c28a7818bdf5ea120535bc6ebe3d6c835df355e31e4fa974db8113b2b77af912a2d1b9182aa49e0f6bbfb1584f8ad806f046e1acba218513a14a07666a4b30edc6f8d344e3062194a8d54fa4c66d047a24e6ad004631d859b93c33352e96da6ba1ae732d23b86f351cda0eb47b6c068c3f4b0b3d8a0b97143594354f5882bb6a0ced2c79605ec2c20ff6f57006d6b44bcbddb13253211aaf3b7ec837b7c0af49b2ebeeae78a35bfbec16800f203854da49f16b51f26cc55a31c9922c980bb77358f4418d66e191ea03a89e7f67946fb852fb6cea2ac7f28123bfa8ef40f42dd4da83e0434e58da6c8cee148ff25417b829c320bd0d9356dc5b279059bcd30e97ad64d61f7f4d1816d6a5fee2787552d2ab34ca4e5e62f6085423f885406312b87a0041d22717ed18b08b6630de96db8ddc5ad3f58f7f0df44727a37bdced075d08f87aa7e3b32ec1cd3bb050af5cd2a0053cb7b0ed03fe1bf820ea78be95d51682ce029c96d034e575216e6f541db2a0f60e5a581abc2dde42d16752dc3db7a7dc1284bc6593fc301fde56e64e4c964d6e6b3722232cbc0c63642803686ae8eb6c02a6730ed88165d0da57813428faf08fcbda7a304c9786d7b9ffc25c41033e6aa7e385f1f27f12486814031e1f9f331a37a82bf074e03dc24b314983d80fb2d3573e2ef106560d367152fa9b80570e8a09a63818137e70e9ba85c6e191ab7498d841a95957a7825818c86147b9009a75e267a9dd67bc28cd1e7d2dda60ce27342de4e750a6fa22bd0eaedfd8684d4751fdf17d34bde3630b318222c6228a75f07b0fdb10649f75ca7931f10111ae5a6bb04e38c40bcab28a006db2a47e92dbd0b3248b3503ae98ca7c481ca0382f20c25f9d5429d19dc32d6d11c2f840b9eb43932929c4780f83efae234677645fecd933d51eb8bb22d6ced155992539ad4c2a4c3aa382ca46a92f0a82a1a7148f5b413bb00b0b3f0d499ee128800cda7a7f455c98180c1f32f74266fc20d6af3d7754e8aa5f3eb3f572767e5c7b2716b5a57f164fe2ff004db537b697431da99fb528578b2531daa9ac1ac0e5421d31fc5e14452247982e390ecfe9614a192d0c2939b24d49e052dbcc71523e65c9720c4cd076ea2e984fc05a505ea3220748809a19a26b7d908dee3650a20e2161385dbaa00499b070c2c43451a304dad40ca9c224de33bd5e87d603be77f5ab2f6a6d5255c84124ca89e6e98f06ba5bc687ba5e49b705a93bd41bebb7e1e3e84f7ef93342949f858c6a20b6e089d6abeb09b2a7431e69510d1b19ea3d252956693b3b2a55e04e0490bf24a00f1f15d25d26d9f5b8513a5f26dfcaca1cb4da863213ee8686fa28f08dcd77e3e7ae725ddb73a6af130b8dfcf4e1dc5c025c8beb9a091e06dc700184cb9115b9ff3a6707b1b7e2fc4c71766d2c566082f15af0826ef40b09019807e60a713329cb5f00543ee1106357c19558da3790dbf134adcf1c649364297f79355f2b4320bbbe9153a967fa8035644dfdd685cf6df6a5027a065f3f8aaf64a4dbcefed301e9e57166619a759a1c4fff3683106b274557a399a83edcd0aae37c53127455bd6d644a0945488120e2031c627db01d07098a60fe875ee09ed8193f60b97281d2f1c5691f080ba3af0bb91f5a6f8bf8d297f1a899f784d9d9045885d8c0c0c1807a7f0b49ef55cdcec3603413d96dbefa4a26514e32979957177468026b6ae96c660bf9c296eb3e473f8117ad98fb3c55972a445ff622c19c703149ae4656c8c3fdda29da4bf3f61454cc52c02fa8ea0bf8a7e792a80fa8be324be3d7e28a6594521eb2707692a2a541a3b4f85bd5d296e935d00642a33ea32ae18f4fe4d6af9ed32f319f0ca253092819585a1d1a8c1b8e6ab5f42ff6857c5521443c689ef05649fb5755daf0fb6774647b76b1b07b1c1c6b8620aac7967b9e7bccd5b2d5058510121b7adc8f68328766ef121fa71e0b67b7ebefa1239e3927cef0358481594634b2e8531fcdb0dc70d1a6c2e8e8254196107c3a15c0431c1a783a6466afae84ace8385cf5d998079a5fc5fc785846ca5a02865d2aec87f2c7385a14e8a2a86855e72e0160a36c67bfd6f4189b7f400dd0b068f2291b719318e5db1501a307fb908990e6af8dd975d293bfa0115661dc744544c5e8824b14a148bb9e75c4116a081134d45dffc105ec228e214500af531652c2716ba42f7e8d19da3728c45c440687a57db060d3a3d87bb823567a9606f1445cf6e905ef0b8a4676e2cc2462c818e6eceed32253db340674009728ae0023d3976590456c34d08530a241deb139cc101f91aecf127c5f9354226c74e3f25ce1afc156d43afc9774e17a88fe0c15a94f3859e9767223dc4a5e3602c433cd47e7f4b833ebd913b94274b8ac607fae2f7ac910c887f2e57b2a057b4143af9953b35e9eee952e9030504c7c864b9b22385cce3995224f750fe5ccfe47b4af944f14083d4cb4d747f9ecf70448eb48e4c63ebbb640b41105dfc9ae97f4e7ac0185b489785df00e67262ddf19fd84890dced0ae83b02d135a6a9eeb653a5cc6ec050505d29108634bc0f51196321352a86b4e1b2db5dce0e3cb9e6b19fe95c2198f07d204cd975cd6880af116f82838afeeadf4be498cf7e5c650e78ecd2fea6e46b0a03cb279f681802bbaa580ca930384ddd97c8549e230797025ea4c444da3590888c2b613cff7605ecf1a596abf4e5aeaa3bc9f311dd4a156f583a8176df8f725c4a64ba8bad46c0f7896223c3c616d52feebac0736e7f520a22409574002288d89f6d15968419e230c43a74e72e9ce4667b4b0e21ff04020c72016818ef784003439188ad68051b8c7ebb17ed02e13d3da6f2e0807f9651eec79b64be61ce03d8122eea0a10cdc699efe22e86b600a328576ed837c9ce0f2d9a82ccc0a1cb263abe02740cccb15b3706b988a830e1a98e4938d38bd243eae0829bd3039d4cdebc183f4ab42b3113152cc3aacb402fe9ac721bad7018ac2ba062e28daa7932dc579f2bd542f41561215c0dd38bb642db94a60845332ad777d534727f8a1809cde0c6806a0cbabe17ecd4a8cb286a35153c28147356366e2f8058509f7179f52a20b5a759c0dd09742cd8e2134afd774a3c4d55c1f45eed4a2cdb7d09b8ddb422ec69261bbc709256ae26c77ccafac1f254abef6b8f2c024148d19a5e21e64ca823c46bb5bf358ff9bc8f124a3801f766fbcf2ca6ef6f375a6cd8a866176c1662ecc0630b3d94c0fca3b2542be59b3ba9c171c8655b7899b4b688b78b936c89ee4e9567b7e984ff3c8b73fd98cc559a6473148b2c145ad360d6d1a569c3e34fdb33e7729bd02d68263f700701093e8580b9ea62291447f901fab00f817f0395e28564bc6b13f2427539722b62fc9ce54099f7446e962c7695fe5bccece2656d6fbf86f060f4dd375ca1b7423116510c6587dc8b573d01403fdb5bd1bb27d9fe78edd514e29a09533425a7f09a56045ab170af81116c3c07cfa86c132bbb4e55f2624540495c12d22fe5e752fcba1052fb975544c6661d3102da5ab8fd03bfa0b2a08eb4622e6e56c316c185b8e1895024c38ac4af7deb2a97818fe64e141418f90f52a5c069d183ac149b41ceb345addf131070bacf9f6e841aa03d9d2f8a5094d3efc6e2dcf39784c689e6e7e2de098d664b5de3fa7417b4ecef10ff1821c0bc1af2016a54d93f95921e697030c49c09ef9e89853bad5b4e2d496b6289b7390dc7590bb468555f19c693fb20acc5a359d2f7fb49e8c96ad2fbcd3d4d4c7aee8063bae4f99e1a71e9a05b75397fb4a24d4d4f23230a42b96ca10839a6b2e0686707ef8840c340a3cd72cb0918134f94c9342e6d1512e25bc61be1c59bb9c024854480090e12065a3083d93ad2cd1516295cfa1f9e54b52652676270beea94d89227b9fa516f29e34bf71a0dd647aae1947df31cd85c5f051921cc32c747ddb09bbe85dc605caeb569ee7e5aa31491c3dd3ac5b24785052725dfd338d91363a570811ac95ff9745faac2e0cf1477cd718be6bef267ae467e4bcab345edf92515943482d6cbe5cb1f7f79a719325387c82ff2bac96eed82106751ea86d3b0d45eee5ddf8df098cd00d77c22cbc497a100351ee84e67c67b0407746a869101fd5dafe121af18d21aeb8d814ac375ef1814c3e9e6501a70bcc2aee02d0911d23392e8e479585962a59be1e8b038372f0891fc11050c14df1086168f7649008b36d8fa2bfc01d708ff590a9c19e61a3ed25ff424afe1f2c423ec93297c001482bd63b5e8265558f8cc1cb638fbe839512536eeef1771df316e51cd55b2f8e46d480ff891b4ec944b22dcb854171462fabe78923b1ad84e0563008205377a1ecbc8442f88ea817c02cc81e87e3f474ef9b8346d8b7f057883f3c3acac37a529659b54e668fcd1dce35e6e1fc8d0ac2bdf0243c91483563b11a287a593b19c25d4a76fd0c5cae3ff66ed9dbc5a09433ad5ca82df3f4f9b715cb3a4ebae6442943a84d873131dc7e744ef0212a69a5dcb6dc2900f24793ee639c95c310a30a3e604bd74629e4a44310405af6713263dfead8c1928e02858ff4884ef2b11e88d0ebadf63efe1043614c46a74e0c41016ef5ea522d483cd5f6f7b92d5224c504ca6a9277c8758369cde179f6ccb23c8e9d255ee1e8ee67becfabba4ac503a49ed488b70b21e65626f8887ed47411487ab1d8576b5dce4639e4d4c81b351c33f3cbdb87939cf4505b92a646115c9efa4d9e24b436ab8f8456800fa91056401d1a5dff97542708d0429b5181e990598651f98b27bbe125e81867956c392bdd62588d256c30a76daa8f29e4d4da3201b2a04f6d03092269b59f66aa7cbfb799858a18eae8e1e4739085e898441e2d387f9bcbe46a721cc99fa36710dda4f9224c33601a665df2cc963e1a129fe93941c452b0cc5425739c56513260e39dcac587c1ba02368f17a4a7314cbdde6bb51222c0660661f2691348b29c059f8eb214edf8776a7cb53dd0c8f32f66778314c15c5a25ead2845ddae162de4c7a934c66f07d5ed82592c99d21f854ea214af98c90e14ecd4e99c0dc08d53c2dc48ba5d22f5464de714b23fea47a62828adc452e969baf94a6d39165accaf879edf56023f259d21bf63ed4cdbe0adf2f38e303c7cfa080e12b79f63740bc51c9e538a26e8ecbd6b400e93d6565997b71320abac2603f8367b2c8760342a06b33c263138ea8c2fb9a02125cbc056e43fda903484b9f51f837977d9f86e0d0051900631714c90e86fe54b1615f89302a05bf493c9f2e601365d197f9b4ba0f4f1837747449edacc0185260de991434371477761cdfd072f20b1eb72dc7d1862c975b18a2dd622e71261039978fe582eb81d586ae2fd01f1b3794ece445fd008c1c99052c775d6ca46a364c632f4ba7709744e2a9c260669356898380fc4f3aeb9819ac00511a28b9291aca84518c1e502ae42f125f4357bb0c87a83925a5e48f79f4a32dcc99025a41793b0ec0ec3cbb925d27086afaeb296413fa6a9fa9d6d3654c20719cbd0e944c3856f9690a192b44f55a2ffe1c795f6899b93dd357292cda0bf5abaebfd110fc9d8a197fdc25f2b7fc7c459a936d57a3e66e457e6a4225eaa5c64018c2039887c15065d1fd79469fa2f7e3d3cf97a491db81a8dee78fc48344be8d151a5e73a156f7ad503a27552ab03234d6b2f97ca6ce9e32d16f7782037145d72ec9d720d29d07c899aa2c53d932cc22b19d009a45ec395dc92892789bb48babe2ac92cffe0b04ba9490b7dabc72b84faca13d58fd897832c8625978b4f9c059ee5dde5e60c09c84bacf38bc556b3c7c2a7470513947df290c88a9085286d6ef210cedc00bd59911c65b4f189743db361496e1c9fad6e305f91f2dcae1aa87c0a5e94a5e830a532952dadc934090fd46cb831e465874330d628190dc22340c455b0f366940e56c0bcf535c83a49d37d3b70638c77b878c376289e94e8fafae86595e72a5b6a4b9005be52505c7e09f4bf5a682ff208f6900df6f1c3516c34c7468f9ab8e4e2cd0e540d66a8c3de6c45b2ed402b1a08a80337a1e4183a3314d516ada95224e58e5ac5815e29c2417c3369df902dc74fa4dafcb2ee33db921d6fade109988b2b7984aba7cbc2e0f03d45882f129928c27096b730e3afccb7f614a516395796aa833bf3d173fbf1b081cd9f94cfe90b8fb225d8fd16c8403677d8f130255503e0012e3e38501d0399cb04652e643995353684b50230049a1ecbf3ba8c68e5c0ed5bff14ae95c094be66da0e4a5b1156ac5fc01821e9116f3eb94d55f38c2fb84b2496030baf9c42bb308a3462e5ac21195685b81866b63337582c920dc0cfdbce650cbe3892dfb6ec34ed1077a469997d7568da70662c934d13373211445c8141cf70477a8487dde560d93bb18ae118ef0b87e721c5e9d94073405028646246fdd78dab2b1a5ebecf6f99818244f4958e1aa9d2dae608a82811ac0d2812832f9134029cd304dacdbbbb5520a011251d0d17e58c4f135a8a4ded729b493c23da39b3cb1684b32c87f0a738091fb9ba802a421ae83900c4534808122a24539cf2e56bbdc1edbc3bb8f23ac5b137d388fedff6dbffdb6e8d904d0821846c29b70ca70bc50b3a0b313d944a7fa577a154bc42eddedd7476d361d3aec9b42ed94eef189030ccd6c1f40699869d75795a965ada6d4f1396192cccae96c330bb288ef27f4ca9944f0a085393ca5fce01d7b75b1ecd7418d5348b1dafbf9b34489dda05c3ec7b1806565c604db0268ce20b856a5221c598308a5113e53dcc2ea67670e7050070a7eb0d3ae4d1991a599bce76a10eb5db46351ac97681e50467a7a36e176a0777aa29f416959fd2486abae278f4ab2c8acca60a86e167380c93b3ed7bd90da3321bee32fcb0efbc9b951e58351cd93d1cb873ae964d7d2f068f8a7702113c9b5611d5d7b002bd8da9782a9e873253f65a53d5b60ecf7d8747330277b46098a544aeba0379acae821ba21da86a456baa261a0d0108b097e0cd60cfb1a2323da2fdd48037839de688079e7833371ed85e64667beaabcc4900a34f1499c1ce1c8f23bb2dfc2a551beef4a6632de5d1a978ac1eabc7ea429b500b6ee12064f68e681aadb8e0169411c723a3158f0eb0a5397cbf7f441b09d748361d9d2b1a0b34fc703d50400140f18abc2ad218e92b89ecfeda8795c5ddb493b56538ca8e79dbf2d25840861042d80bbb2072d55ca10b8bb838e2068af2dae41e81849c90696dc4498076507012085111dd5e1d3951b902a697bc40c31935de14a11020a6977e4d20f2dcd3aea540c26f0a648c7212e91ff1cb61a2231eed4a27d29546e55adc2e2508e3382268a4a671a08f1e92d7e668bbdc46dfa0f011ff421c173f3ac78da0a84d104113027ddb46dc9713c271a0488da38af2d14f44c86f5fd0e35b97b72e916b3ced98769c92c28122db41439ab0a9355d413442a0c8a6905763a41c28b259a3d30f4af3ce5da334dba5135ae7448d8f969c5d12a24b4c6a97b44b42ca0b34419773a3ddbbe425bfa560519bdc34b5e421b4dbd1168a3647e7e6a3d5a390ae281cadbe1c0af747834289bcaa5dfb29feba7694798ad78e924287f890df1ea9f6ae884dd52891ae9a0f7953354a333a8876a3a3cc6753dfdc675341b31bfd713fe24da68b1ed21ee26eba6962d766e7443df978e96710a36207c512654e02a26fb768235a9a5ba3e8229017685052dfb5c70121d54769346d1fbb777212b92444a79d13f58f03c26953c60e4b2204847be42a687658e7445dedfb900444d40b347051df41192702f9bedaad8e034562fcfb5ed3b8efe368c7716a9a762925269a321de79e6ba276af723cb44b4d86359a8448034ded728266377a27cf3dced3489ee4e87b13689e404fb9bc364fa4a35c7b34cd52e9a6194b31be1a4120d0b924440fa57c5f7aca51e6697494831ee5dc5e2acd6db7ef87bcba9d9b1d892671f2d3e8a287de8d6812a2738f2853fe6486b4298f32b5272192b42b12a25db5af06fa31809a19a42b6723b73bc8077d90eabba060ad5ac9425c1ca34d8e4e956a2bf29d0d2984e81d0f75bfa26c85d01e04100cb3fc8ebc1f543eb785165924f941f47581f3647b0d56df0e2aff8a21444c55a33558dd684e055e7e1b46b061a346116ad4a0c14383060b1158584e43389d56b6585951d14245c5240493a99445a99412849414d20e893402c26884f203149493242727222c4422e90329433d0885403c008138241cb71dd9b6b88318351d685a7645966139c0b00b07d75f6e70fd051ebe5e7f36d81db05e7fa9c1eee87581ef4a83ddc1eb0221c7e3e20ae183905735a446ca39a4468ab28bbe50bb2e88a7237a43a87c2c0840a8fceaf5e087101ff47c50f9dccbe2cdbc9c233287f92f1b7dd1a2f6e57c6874c38a605c2dfe18d224ebe605f9de499d07fa894b804e61ef2acb5f1032d5dc069677eabd7d3ae593f249b5927edbf3d5937c4618f570b00949edd34d78d0e9307a8c4e3519cda4cfe81f98e234545b0b494018a4bf974a8f61aa8adaa512ce4f0a86416118efa65b9a6e5889fe1ca66c7051390c93126e3951f8037f608ae78744a2f007a660ea89b12e7c28a590856c2ae9d8a9f46c7cfad8a95fc27cb0d961d3a733d554a499cda7335fce37675fcd55df33969a8a65beda1b777d4638c9be04d84c249d9bb90a46f1ce23da642dbaa8a21d1d266401a7765d2664c1488dcb43beb3bcf7b6bff7e8230b0d1696cb70fbf4d6858deeddbc35c07e9bd57eeefafcf039774f21bb7793e2d453c11ee0e62b38c122c0a229af6eed0ed24b275df575d51ae09d344b50d47787d3616a77f4b976fbb8907c863caeecc330efdc452472d5d7d55c95e53478388ec75edc2fae088eb560182217efb084381e34a80e49a24122512cc45ab09ca3e1feb84913d6c7f1e01c4631f788e1a3448c2a2af3ceba2c4cedc2140cc38a1e52eb43451995e14f65c8a4326c92a20209b5aba2803bac86ea53539408f9d1b9795af9d678635695f4b8f3c699e7d5ed005d559ff5fa6fffacbf6d32cfe41dd6a2baf594c7b7dda0b37f6e14c1b54f9aaf72aa7facb9289029116e4148f8f37ec4c3fe381fa763efa103122fca38637635f06208797f61c01f3154203b98a2f9e9cb2591728b3e7132ddfa9ba9e1730324f5bdcf30db9ab107b8f98c8d216e5e666cbcbbeaeeb18539026c7c695773559567947754e6f68e775428f36c5a9ce37ebcf76990aa37eafad0008bfa3820a73f4a2325cd56423af79b54045796efe46a63da78f5297af76e9a0a6b003ecbecd4baf03ffb677700270540d15020ab066cb77435b00a399df4d2ab2fc7a344737a9ff4c4c9447f60a7d927a03e5164c67a082c5a8224421250b1f3cc9ba9b15feba479a4a21eb02aabfad6b03c60d12778a60629e535b0baa5131572fa69c2948aa908272a89764e54d261180cd35448f7eae944bb1a0a7f18857991069fd31ba618068395e5dd7be91d0dcb4f2f6194063b8dadc4f1e8d4e98ffbd16230cc891281b54bb495308a063dbdd3f8e9d57425e274215b03eb49e5cb9d28cdfbe9dc11efa72fe783e52796d3e9e4e37496b3d00e7425bd487da70b39d1ae48b7a888c1308f128135057f54381e2514ce8822f55114ae88f7474f3f562a110cacc48be3b1f2986d8f7340ca49b3aa2b947d5426f77017a5f3f64b9c1229df6ee98795c1a493942ce7f0688e48947138d0153a0b2d06e88ff215acb3c35a0091da3b4e817c75eb8bd6f66abf1a9f46430082eb2578333855bc671bf663677754557d3738eb525d4381b4e813521499f980f51080c07a09de8c459f7833f0ddab5eca0db583a96d5934f06850707c9183cc4e1795bf002570d67e74a45560f67bd22447d1148f5c3f59df05b00c106427655e7ae4cb0b1a72da3a92a409590361457729db308a6ff8260a2824641bbee19bdd7d8f43aa5a033146f1db706c6c6c6e20041740c127b5e43d130c2ace80648747a76f1aa773da860c264d96f8a47e7a90603bccc33a2d19a6378659dad5c0bac7e452d95867621b9b24c826a3cbe84ca61d2c2a9fc5268a2ade3b6c4af3dea02ce4dbe678ecf2b20d47d184097cb2096fdfbe7df40131a3ba37097bcf5541f2e3d18251d50a64d73b55372b3cffb3c2571a082d8841ccfa7bb42ccb7a48de8d655956b764709665199d3bd8b1f33308b16ed168f3f48e16cd33d338cd4cbac5d42379764c3a32870993549314e3f4332d91dc388cf362925a09a44fdd5f5de374cca4e394143b9a14b2c318074208b52864873d26958f6dfdee7ec0ce54db3193ba849d2aace8ad1f454593f41fb7ef2fa5e92f6d9c597557d1fb18d4388fd2ae71ce508dc4f0d2fd0588e3a8be5c7dc488a2322f60499397edd925201c30dcd46ecbb8ac97f5f18218aa0f4b0537a843700ba663b369b805e9dcb911841c45cd17540e46f1e86fbea05e608e97d134f519f5f744333497a88f76dbbb22fddd2d51e351468f5d5555a3bcb74495a93dfa723e486f47478d7ec1d12dd0687bd3aea6ea2235cef78f57495f2636364c503986289d391e29ef61479958d67ddad9c8de5f86a9f1473b1a877489ea3d1fe90265f0dc44398dde3ff91b3d1e721cc78d4e68b7445da2b99bfe50dea3f723c68dde7bef71ef73efbfea28156784f5d12bae47899b28dc44b150aad2298df511a5b95ed554d5a2f0fa417a75b6416bba6687af6857837634684d57d011a037ed83e27ba35bcdbdfaa3a0e646fdfaf5bbc1468ffd5ea31c2b634727b35ba29e9c9bddabdc3b031151bd13541c8168c4a3e22fda5911fbc60174800d7f59158a616e82f0886aab5290c0bd5585994c1062bd0db1c73a98c214a42085284441891230c0b0ea06001eb9f9026e3c31ba8b7a02723faa779e3ea08d0d3f0a240415f7a37a534b48dfe18c23de1daa901e72bd06bbf5e6882852af6db923aa3713c1b6e67cc0e6d7200ca342ba5efd0d52ec99c062b2e9d845bdd054f3d23ab631f0165dc2a81f4689f1b3b4c5e8256fc94ffff4cf123196fcf474cb14d26a22078b099f89c5647d7e60cfcf4f5f594e65816494e9320c6d3a06bedf4856ac9ece54bb87ff50190b64f70ecce99606022bf785a45b5a0cb25b8e60d66c8685c4e2b17882c045e55b5c2c1c595dc8fa6cea29db985306e12bfa0476f8272eda55e46c0e4ee754ef1eed9cc699b95a20bb8acec1591766d24daa35979cdeaf179921e3f4e8a901d6e1933884bf68caeaf9a97ccbf2a9ccd32d3b734d21975a3bebc22f62ab158475e1efccce54d442d22d164fe583219b76b06b9c6ed22d56c8f72d83e7b2a98a705b61884b0089f9f4080292ca378289206784f11af066ac6f7d4ccc30bc14a3de7b3f95ecd13fa917c64b6d2f13a9f7bafbfd6da75eaa079681ddedc7c44b91d1d3d3c50ba38c1cc8d80f62115bb9a55815ad8bdcc2189501727db61006cbee7815935b4d8ce2296228c84beddedd5d9aa5415e88d8bff7defbc72278797979e1635ea4de762ab0b2f8a58f61525e49e44ba582c6d1dd8d63b9b1e08139bb8420e0546e23d08a0e85be383a086f1a0a30a56af5c858b1c11394f96adcd737ef06de4023b00b5845efc02b90ec402e60ce4edfbc2142de1d6a4ca88d84119390a12ff79b5f86634243fe1aac3ee62ae6bef773488d7c3f2006bd7ba08726dc1610e86f821eddae5cfb7119b52efc5ecfc6b97141dfb49117c81d0cc330ecb09b7650f4ceeeb88d2582b92bfbc67feeba809e8ddac11b6c0e79b482624274b9253b1fb41be4e5a53e4a131fffce7867e21b46c0764b87aadf28b62efdcc609897d1d736f1c5080ea37060f11809a376f8064223d763c248ba8527e3f00ecca9fcd955724c86edbb793f30bce918d005cab0dd1ddd4341e5c31b889365d555c4e84c4a29dd06e930a57b4dcea86cd335062147ccf3c2c506391e3dbbbf0c87e4dfe70af16ef607febb016fe6cc40483e87d4c83a4f0f6f4292ca6db9ae67dfdd7183eebad0f9f687ebdb735b6c51d7e7dc75619fac3f1f431c8f2c14fb948857f7821c0f1a875cd6714135ba7b87e5a049e3f187371dc335f63154636bf458228e425551cb39e5e174ebd1bb9f5126e31647c4521e839718c1b95917ee9d7519e332007fef0198509b7286667c3b790c329acb8081ec78c90da57f37e7cfd682e7c6dfbb31f2705e15a6775812db438f37da0b64d73b37bdb33b6e3c717aafb61ab34f63ceb34c8a7af5460f2e5f17da617565e506ed4c7565e5c6dcda5cdc780fbfae1be747d38d1b1fdd90611e668763e38187efc6c8afbcc3ea4a2763727c57881edebdae08a087b9fb43d752b1e798d80530b107606297133b536c5d30da653c5021dd3b0f73f4d1af972a047be2f4420f41e86f46cb3a8640e799377f804221493d109221a9853c105aae01dbb51f864e00bc935505c52a074d99fe9949c76c63371e8a6273d26d7fe32f48bc3c0dbcd41e1edfec01898ad10e898a9dc788dc3b147d37e7453942a037a5dd4b8cdfed1b2f15f52ebed41b9406f57ef63883bcd41b5fce078ad2dc78fc9ec43d1c46c51b8f5cc64b7d38cccfc8bb69a1a7f8960779a9f1d911e923c618dfdc11f12854441df512cf37beefd00df7263d0531006e7448d4772e836122ddc04b5dc264f430bb4783bcd477003cc4f1c878980c80c93c1b674491daf448e85ba8fbbd17a9bfc5cd68c2f1aee14db7502170806e34238993775e8d5864bf317f3a5fc5318960153bbc79b2de987dfaeca0c7937e1534b16c639f8ef159f6d9ce3c90418f720f887140dbcb196417e4a5eeb36c71706cd878cf0e899aa1dcc624bdc684a731abb34ceb111ea17585ee9448284f996c05e7306a0338ea3bb675848261ac137ac7391da22100c1f612bc99ed32cc3746420f0108422fc19b09d127de8cc624a609de24c78468924b8827c5626fe7056161b69051a87c27542590501965c21b680447ed68d447aaefe675af6637cd52fb3bb99c2038aae8fdc67181dc2f9035c2308f6e00c70dc3b40886be1c8502c74c92a51da86aa435303292be4be3ae9b8ee99dbe317273b343e1cdd63091764e68fdb66fdef55dbac7381fd705afeb173cc1a254b05454febb812ea87c863a8034e81b78d346d0d04405cb7c94119700fcaee90fec31b46ad37d388846c87719e4e2ebba36f070aee629441d1c66ec85429d036faec6699cae829beb1c78f36c76c7b6c11b17aebb5e73d537a4abe0983e5f21eb3bd39761ce6a9b28b6d90432866dba8531232680546c4bf63a78f33a0a46d1eb9ce42eab3922b0bf1b8611d1ebbaaeeb6a1b19eb725b45f1ba35abda360ca369dcbbae5ae8dab17d2b04774d93e19e3b73c578d1b79de32e6d342af687d89b0d34129ab00a9803a9d81fea4621cebaf00d1464f61674d08a6c76587db0aad584462010d9efe04d5d5e061d6908bc99a6db2d8f2b1c903ca3e2a99874a5648c3042da1747c7f5682d90fbb86b7a563051dbb4999e4e1186505a21af6e5c2de0cea6b3e96cd10d840d080b7379b128bed5d385edc26824a5032c9f1eae1ba2ab788ab01edd218f67777059d70dc9ab7836249bce76c58b873b563792ddb1e7aee27181b4abb936240cb374e7d5de1d3a5818ac076bc2a2362495ff7a624d58180c0cac8761301f4681f1de559562eb2206c3ec21edb025f5d9c0cd8b85c1a6b028c6a6c018186e303370b22a30302c8ca6c375e61db62436c6845114338351d80f0606313826c3e9169c31de48e27f7e4c29e963ca2171602c5b0e746c4cc5b33170671726db74166670076eb1e5006eb1313b53f1748c8e7dbbbd150f92ed974514d133d905a32e9fab27a6d665d3d974b62bb6d42606c7f0a0b361b171b1f56c3e5b18db4e4c5d3d1c8f98da1d6f2b9e9e2064f6b821a9782a9e8a0b32cca8baa8c2a87aaa9f6a4919af8761bafec2ea69863b0cb35ef0d8a1b28ecaed84355a1beaf18abb5976c54288611886614f2eaa7ad6a40ed8b6546f51d5b33a6c96ea181ddc52bd07cb9a74b6d31fc30e8e5a75b617cb88889357306682ae8028b06bd77218c5da0c16c5591db685b3acc9429389519ce93349eab55982cf2491d17418c55a0e3401d000ece4d07cba8535263a0c137118958385892d581443aa694c42dc7b3815c2ef6ea137d9b2ae4885598e87382296462b68cc8957302ab3c1e2ce6845d479f10a2a6417737cf83ef301342b23ebc22693942a0a98b06766c29d16b0fcc4f2aff8acf8ac9c989cde615c12d7b52964b7e94c21bb46826477809e38f5998085337a53c0f4e133b3eb3ca25d665e43d205400204122495aff9744c4cc526dd82c3305b0ea35ad0693e957d7eb80f3303f9f015625baa0b413bcc07dac9949994ad308add01ba0f09b88e775810ef64add1996a8d2fc308f1eeb5065669c84ac354692460eae896ea0898d50f30ab0f31ab0b31abefa81e844f0fd62dd57d9892519549c73b19c43bacdab0f120745417a356d5eb6d052484ec29208aad4b46b3471fb29f1c34635ec4c92b21d913a7fe134566b48740fb9bd962f6fde3ce333d7f70a7794f40fdd3def308463da0611af6b7691ed0e8133cb37db9065cdfe2b9be0040bc9306d8ced81d20faeed57ab1066011c04a7d0b83617e387f43b2ed308c0f0298019839e60c72cebd888514f59d4d50df612216951f770c402310341680c6540fcd400418c0cb0f33367917008d01a031476c52f93e6c33888fa02d9b310724807753030045939ad10e8a2635fbbb895630cc52213bb8871375deece0b78b8f1c731806747e3835c73bf8f88ed2e4783f1ece200fa782280d68e378409ec7fd68c843a1162ef404eff2200fa7a62b8f2358ff90d2c037ccf1ce71f2d1cff11c1a7837357b914a037a118deeba749800be73b320f10a868174030fa7e6b40ec3c4288099e9ccec0a46f111ed1707c5c39949d2dd2f52b31cd31b641ade29b0319bce047647cb5f0feff667a9b0fbc57709a6200670856d610d8c45f1a7b6309a0fa3fe6886c328cec93430523e6f9920b8d33c708707ee543c7007003c04128975815ee836d51c11f2a55ffe1aa349704bbfe9a6306b0c59d1972a42034376cf4e9b7ac31e2f8145b8453d7171745a905d7dfffbc28c0a8f0431eeb604255154ec8ad815e3c527484d608988f5c8791b86496932fd28d4cb0bf37881221c8c7a34d7b177d74dbf2cccc230eb9980c9653573db84184d629d044d686caa5ea2d06892eb2bd875bd257b640bb485c47efd074d825bf818dd8b22c1a82b0eb2925198d800efef516c6c80c70678a6faaec6b8787979a94c5bed02c131516034c9fb9e27280bc9f1e0771fd5e33046556721e8a83e04f4212bbca96382d896ea5d55bd7b19310c3f6e19ec2619d55895328cdadddd85367171601d9365d8f638e678f4c0367a6ac0f5ec10d08efd3a6dd7be33d73c6d576fdb46bb25b48eb153a2becf68736764da9a5d8f1a4447b566b2797afcde8ec1b6b3ea9ac1947833177da2c8cc764b8531aadf20df61b719d84cf7f6c2aabbbbbb61eba8d5ab4738518738500d29aa1bc26ec10d2a07cbf458801293154f877f02c933cbf3c3308ff276ef3e1e5875bf5efa785e17955f17cfe79c640eb57b48ae4085fa70964022bc57c1eeedf15ef5aa87d11efc6416d0e345e6bdf74cf5614f889063b26f4ba72388898dc03ccb46602e204fc8bd95b980b7bc109700f089dac72cba350cabaa7a9809aeeafac94f8298b0be6e55ef988b6aabc7713fb45a6d5c11dbaf5af556d75c1e3aaab95d47bce831be2cbb9e65350cc596b2ecbd9edaa9fc2a95deafecd004a4444db46319c4f45e565da5b7f47a353b69edadca3af3ec2df6b926cdec2256fda2d62ea5a980bc57d6b13dcdbaf5d910a5dda335fc8cb9a8d897b7474776acab39fcfe7147c0eb15ed66a7421f3df15196763e96799e10fb8b5abb9de9d83be622c415717d29cd1e1ec401d92a0e549da80a7799aacb8b855ea715aa5299b0326a9665199461e6793f58c730eca5197acab416d3d131a473a4221d24ca44b78028caa6b88bbbe2afbd38d1af78ce084f08ece49063b49f7c6398f7934b8ed99913da053199baa5dbbb1aee5eb6faf652f7714788f65c3c76eb4c748c3c663255d1a575bd031de38ab84e23a2ddbba48876414c752f6927438b5d7bce3a1be109b1759b558d568d0b2b1be1fd8051b99d2a2e07a7ead6ab20236ee1574990d52fca4485bdcbb2ecd9ad26b22c6b8289208c622682347159d592c1441341ccd83952bbd3e0d54905d7ec46755f37c95c7472a3a71ffcec45f08bd4ca7a45d9086c04e6829fc01d219af1c9f4e38ed8e8119526eaf690a6896657a472d7664dd79493b8a7a49c7420dc45dc4547380227229d48571ad3b5632a7445247a2a214df4654db449b95d9b727b72fb1389a68f7890541189a428f44d24431781402009920f6d7fa19347d07c5d7ccbd18e2be8f2270fc9cbb448f4ada529e4d59348775dde43b72cd0e5e947bce8224a033af7cd0927aae8a2d9bd8a2efa361be36da39d0fd1b72d8a4274db30534b8eb403a29d3b2792e72688562720507c14fd7a3cca3c891e1fe7e9840ef1b1fd5d047a8c7114298d7c484e13e912149a977fdc0fee2967ce07e929d72e6254cadc52525226f6b8cd930feea4732771e72225cdadda3cb2c2c590c086ca8a267f6ce7ae4d904814e2b81f9aa4f1f1880a9533b48cdaeca022128944da398eaa9c13894e7c481fa293a95d4a468944d447e9e4a713ba8c0a85507e72d0e832e5a538536e9af1a594100af591f253e8a2a3bc0b9dfbc93c85a80fd151e832eae4e4729e6404819e3249a41410892ea34e46d407e89da43e44211028b4d5e18c11afa8a1a216908a365cabad86301042c816861ddb869865fdb21aa6009369395ac3e9c7be97eefae02fa336d0f5f483bfdf852fade3aa82e42cc8eea51a0008ecf02f8c8024d56110c7714d41f6bbf7d8744c14498870cdfe6f5f1302c92836415ac8aa719c5f0381bba6f7fd355d1f7d37885830ccd66eeeeeeeeeeec6d1b2ab099fc1ccdcdddd38180b8e612eb8a57a173c4a7ac2f0112335c64f19b56332eaca5af17056c80eab157ff9f17b10840379fa5843158fe331b1ad6d5e9f21bec682ac1eccbeaa32fc970fc4c5b1f5e960d463e2bdf7247a308c115be5e098a2fe5e95e82fa848c1fe307143ecfef2fc831356d52d46358b45abee296437bb2136d6dd106a67405f9ba8f72ad631d5b9b5ed980ec3307ad1f8382067d42ed7637174c313b0c4c521c32808bbba9eed9b6210d2ec2d0a8fc96f8c820b310803b956d8bb6ede9618b749ccb2b20ac22c3a0cc3de6d0f7641ec3a8418c4b0eb3d641805e1027a40cbda1708e1e1021806ea000288c5012f251a0f270420640c8a5bde7708e14091cd91753a60ba087dff32848681aec1055da05bb7409ac6cd0dc3b4cbb2ae4b9b2346599a949a0661ed6722ee9936594c26ee7a7c8c9717e4c907c7659936ff8c12e1f82a73c5ce9d237b7c1c2adb1806070b0ba39e1016c2db2303f1f2b243304a878e86700132bb64898e39d9ba0946f193b38651580f0c56ad89930feda0aad1ab0af24561238fd56c0db27b36cfa66396e81686919448572cf450e8db7cd5c2307abd930fecd72f7a55415ea06673024aac617f98e0b021a04b822e2943d9b54c949d031ad72c0a01d11a215777f281c93436b96d76a78b62d8d3b2209f148b8024d8b76a3b0409ae9924170292683423d2f5a2dd3b4113a89e40accb3b8e64942e623f766089ecfebdc755518cdad70e106921578f1e5bb9825c55f8ee860d7970203b76e2efe1beaf6a69bfdeb3ea40457bbc5718edb1b52b225d2d7ae243ba45b0076db06e58bbbbeb13e244addee578c101c4ee80dfa330da61329dcdcefa750cc3ae6a15a9960fecd9470c93d19aaed69b48d7cab284e8a8d5895855fb91ef56c4c5c12c0c5303e904a3fa4d30aa77096688d1cf466601dc2d156abf0986a9f9df128ceabf6364baa58f61b22790a5a083b41831ee8631ccb66dd8c2edbaae2b86e237abb423f255c7e6e899f68c086dab65591603b6765753d522f8d809fbd66b6e35852ed075c15f264641142c2204826b5d1c8fea3cbb67f3f4539f7f9dfaa3ed5d56c45542490cc5f78c27910e029d563479c2719ce40e922119922119229d9b4b135b729cd42217a9a5f9e3d577d2be2110b2391e117bf574cd06caca6bfc8f978fa177292fd27ed2def27182cecd6e89ca9d847e72d265e42217b978522251f93e77f22b043a09c59350880b71212ec49dd07e281e34bb93efca412b97b3e31e69e8559ca0182768451e44415948d95f79a4342b07511ad1e5c9aca9aa7ccf8ea39051361ea2ddfeb3833f9e8876352d5150e8e91ad54ea1d07cb1dabad2e443b40b41c5f9e08e0851696934280d8bc669d060aa1d6af15b19cbbd97a8a0d34a49861e9aa14b12e8a1c9f5847b5576cc28b428f4b4523af9e827db6e8f1b8d9769909cbb719b3c019142a1d255584aa1ab4c094a399127e72e0ad14ec4bdc778423b39bbed91a9a15089c504baca0be82c3aaa0485247695af80482f9d9e7292a71649bbab849e325f4217fd0474ec28a1f3091763b744281443e74252d6500c9d0bcdad1be8d9b9b80775b16e71ea7432757f4d1f566802f7912ae493ac84822594710423f6d76f59fb8bee2e123d18050f8f04dc0d5d75bfe00942961e5b8c9389c665d8eae02e4c6504a42c29ac0699b2441d21c1301585bbbb46300a9a5e8dbeb79e323b304fb33762449a342c4f41408d776bd11e3d3a50d51b2c2b2cbf31694c4f793ce9f39da9a6a47c69969e461fd11e3ba2d7bb6e4fe4957451dac97a9da2daa25a68339d344db76152228506cb9c00a3e04f730946c1afcc0b30c12813458251f008727b6ae941c8946fe9a5122cc19750de1c8fd2d251656a8e47451ad14ed6ed16ddedc19dfc42a15cdb10ca37d04f6687559134825b60272b689ef6b40715b243550851add10e53c316b53355880516540d4991774b54abaaaaecd7245255ec198655efc184296c2a844c982401bf1056322a64c2142d8091491c02da1ab434444d0d5a1a5235ceb011850d9b548a0b5cd0a2f2b9e049a5b8c0062c25461f21d561d4187f6aeafdd09d54fe3e78c3e717036dde089ee9759aa98c32d08086bee47804911c0f484f46d6204f55d0130ea39aa6d0703206cd0cd719baab2a555557755d6b905b53921fd93af6eed5ebd7a3574a0ca9531f43baa53039c192ca55b712e4eb19e44a6d155a17aed1a4728d268ce2aa8424f4d3dd34f41352622394b28153433e219fb681b369c1064ee5a93e21252119de1adaa9bc03fb5aa2041bf55119fad9b420bb500fc374a11ada09ed8ee561098e8e079cca31748357a327c2b8fdc8ee4aa57607761dceeb1657048d0a6fbd0bdda0f2e3b5c1c952fb3485096f59905d8d1426b546cf955a174e412b8589183ff55d356ad0a88fce6b090f38373433c8f7baeb5285bc3b3c5682e4431422c46a9eaee096f778d1417631555f0ada74b55533d6ae267ee998121ac06033c37fafc3b8fae39614c39b0a77d7e22c582a574b8e382655a36833b8e531214376a79df71317d977b438f1304c63cc7ff0adcb7b05afcaeaedb226c4b66d77ac547e75aa7c0d24e2d0c956cd9316dcf24e3b8c2a038a0e14c1c6a0f0b4cdee78f5a15c818204050b14256ccb4351c2e98a0e9d90acf03ce918419e74eab3daeac915c411c1524f3bebf2ae914176f0b4531f1955e77445431b8ee3c172bbe820bb2b5525c7e374c3a8c7ac0421352a53149e757945b0904176283cf5bd9f7218a64321c2e906a5081bd34c1a85e764a476279c1ae44a9daaa81d876d79ef507aea3b0a117607771cd604cda463a0cdb690606320c314c0cabab04c8b1bbfe540fc1bdd95680a6b88f1099c7e41577feba2d32d18c6d88439555c21ebdadd7709ac6b09d65cc1b67630f7d48ebf5bc19675bb6b0cf9ce15cf6e1f68c3a65dca8419ca41be775584f6b4182445c488801991fbbd70a0d5041caeb0dadddd5dc1eeeeeeeeeeeeeeeeeeeeeeeeeeeeee6e165c10566141f882aaa2391089254aa49250c2821042082dcbb2208432e825524c2cb90013d0b22ccbb22084b009cb62625915b4829bb02cea04a32c08a1555995f56c208410c22bc39a5003befeddf1eab3b1ac0cc36e22a08435d840095880b1c51666acbe42b5ac2344512dec426d43300336aab3ba5f0ca189014660599709bc98820d598cb1cf8b33e8a07275bd38438e91255fe0a095482581c4173ac852487cf103898412a92490f822099655e59042d56a874a01158cf10998598b2134a90c2d08e1c3e111f010ac10414add2f86a0a47275bf6882ce14487c21864659560e464d615996a85a96109c502dd89615d5aad6b1d11216b52ccbbab4722c59e20257a858dd2fa0c0533b1413ec5539456a2045165b90628c35d0010b33910a5e8105eca09382281c810c31906286c3f8a20b3238e18cee77874e1287c08ae3baaab0f3e4c3a2347deb5715247f08d7ec19fdd1d4b22891beaa20a796057978d27522a30a0149de45855c1d845390fb97bd6787a87d08c6423850c4a508aedab553bc90cb9add29521f578ddac5f59a9710ecf1abed49a4eb93e2fd51213b547dcfd4f290e09a04dd599ce185733c1c2ca7033e54bce00967c8c11a7460852340b0d8c2b12ccbb211d9e0094d90c3198ad0c514592842157cbcf0f9c9ae28c310a4e0d3041f24e8a0a9e0c51c48c0f0e174164ef0220ebdd56502164c503bd48310c341119c3430c10e60b4000b22a080bd907a47228967063800c10c22487de1080f52550e7200061cf8800c609c6006fb84155c2829d7755d525e2829a45f57e917dd6e6ca34de5db4b2a27a97ca4f21b2aa72a2ad7754993e992a6abb4c9f4ebbaaeeb3299ae721e3fe9938d938dd14fd444671494d2242a2a5fb9c944754815938a0a8d9b544ea7d3594ea713cb4a5f8f7f17694525729b692ea3542664d4e87d95ff9fff5746a36b443b7995f91595a8f295afa8501ad288e5d7e9d7055af9a5f2cbf46b5eff751a8fafc4723a9d46b7518374629134e8e9c77ffae9948634a251e374b2c1723a956cd490a39f5848344c34288d7c3c0d6974539faed075bd34dfcf75d2f595eb2ad74df395c1a8eb7ac6d3bdd46eb6da8e44a58f485fd2ec2c24e9d69744b112ca478fb147dd1ba3ac1cfcc2a84b8e48a2eb3a26255d0ee5baaeebbaaeebbaae933ea9f2a0d96ddcf5edea649bae2f8eebc4a42ae21240f2b508e363e83dc6886197f678d6ce282ddea706d933f6a76a187cccf1b8180846318a4f5b71547e87a3b276a64c30eabd6583194c7b2576c7d342dd9ba669cfda350e2308792292a297c3f9e047fa74b81f21889a96127fcd9a572f1d20b346ca65f0f66d4de3be957d3a86a3af49b7bc63984fe603397a4d344d7bd73ec2fe46a417c67c3f24ca35ea6c0dd262bc4e4c28b3b351b12eabddf3f1e9604f3dc9c97420a44fe7f1631174f6972931011d0ca3e3739777bb27f0b6c7c6a05ac70eb131a1f317b030a02ccc8d793e6b5a32087181f703c4765b9878ee9c014176a8651d8cda5d3036c6087e5678362abfb43132ddb2d7c26c6863382132a649306a7fb8b4985d9aa6f3dec517dfd3d9727c9e100fa569d795c8ab31c6430ea347428f93067bcdeb329aecf1f1baa89057b1cb70f70ee4c9dfdf191c13fa639cc7df9af180cde026cc61d4a78451ef2474f2ce4a18a6d37eed8e2f7607ff698fef38053920f1acc5f30ff7ee51a1be78253731a96d92e19ecff674725eeaf95ca21c8c4279c73adb5987af6024f3a518f50e9a2f0c00545076948904a3f6db3482512bdff550b3d7ccc4c4f351f29a603e00d896f8d743ed960c273c5e443b537c0aed648d7f4ddee8a1d077d07c05d2ce4490ddf19e611d338145b519a632640a63d40eb1289921b6850f9a0bd838b7c536c6b42d4f88b73ff05f4ca8c798b69786ed2f1a359fbae72a587dbb3b5418698744a5d9fa70ac4bd48e4d2171628f31522118ede07621e8a9da636fd8758e1383cfe6900a9b1db4f83047ddb6c136cb0732c41884dcf71edf7bef593d287a2abf3920b0aa964b606173776c7d7e545817abaab808614f08d1ad6bbba361525ee336dec98a6dcbe8d853662f6af4c3e8d2461dddc61cbdc61cbde7e891d16f4967309b636150b46d82b290281f451414947718ca47df66c77250974ea5ea27f9d2a3685b8ea9f10e8b356614355e82cfd4a049465f016581824275c811ca68a4f26679dc58e6abdda552e9a652a9d4a6deb65fcf52a4e8d69f184bc688dc86324713324abe5966f7eae891b42dc3b06c95c6fbf1c4c2c2f5d8caf25822d12ec8564f4460ed0b09d5a6200e487549bbeda347d3d6344e7a7f8ba3934e1a996ebd74abdfa19e35ba8572eb3d9bc66c96d9484a2a8f2f0588d43820d5a6424f3f585e7a8985ca705b9bcaab9552e974682a5d48a8964a4f79c601a97ea2445e5da15d7f3bc601912ff54597e9e6a152840aa5d97e9d46f49a57e555b6e57ee730ca7a69b6158cb290d4f80e552deb29d6e57ca2f99630ca3a69be311eca7c6554a975b19ef1c81746590fbd7ba91c586fa2acf6dfa61a13d10e939276b23114a3acc7a785dd21e431a90f488a61c2d86a1d04ba4cd7546ac8553bace6d5ea58c760585b3b2646f1824977374ac710cc82a35a2ca485c1aabf1f7a19c7fba17f7d51ef2cc7f184d0f17e688b765dd18e1b3e225e853c0186da3f6d346a190b768dac8a1af1dea64d07cd855e713c8e58dc7c15c693baef07f8edba109ec05f20c84385d776478d75c19e102cef07680ae5a8100015da10c2868d1a3b6ad4a011040d1a2c3a58584e31a7d30accca8a8a0154544c40984ca502944a29044849210d80441abd8c46283fa0a09cf8707222721189640e294302088540010081b8168edb50db167b8851e341d3320064198603c3ae1bd765d10a2b5761e88fbb09421bbba3bb2b7c8dddc1cc159ec6ee78dc4d2c5cccb61065a9ae775d10fe0a8164f862b1ae8dcb5e96b12cd4a62025b6612693c96412d5a10b4cc91b625bde5706576205892418a639f857986483fc72d6654d1ea02d24fc4b3ff82d7adb462cfcd5a4c03d647a503dd8b276094950828325b539ae9b60546759f615926559b6598cdaae169b605414e44bb7f4311ed92f95fd514d89acde6fc60c23dcb2559b336654c1a8772ec8f6521d7382ea525895f5632db1c8e898136097e2c2aa5f5675ddaaae2a7bff316198b589e19d26b5bf1d47815521ada8ddcb4dc8a82de34cdbb4c7f3d5acaea8ee1bf26ab7f1d56195b941ee2ed34ec619ab4aa864acb6d5492d99a211000000002314000028100c880442b15840225866bd3d14800c98b25672509ca7398e21640c310488000000008000009804090007395bc96368c81fda6376765f42e7404f27be35316e84fff3085ad1f0117f5f047fc5f42efad230408d6460539a36b6c188987dcb884a8408743dd244f5ffee21b15f6c8ff4f26ef8f85e12d003e122f60fecbaebd62d192b8d3892f469548598d7115f63822cda98d4220dd878bad337a8a2ae41a0e2719b25de2ac7ce268b110d8200738144529652427a2f995ed1f53280de1255ee26fde87bff90875289d3f9e899b4a9b23742b14b11b41f6ee5630a4bf1bbc494db3a179d999e27336854c0e49b1fc63b73fc8288724d3cd7db13747f261dd4cbc7d9dccda3333086a03c1ace72db1de9eef1602039f2cf5a4e51a186d5c417739c68f8ea1199d5b8d8cbf924d75a5e7dd710c3a102b0636deada10da82b516d5c97957c53bb3a5be2200c7a2e5fe2a1734d288e91cf19a22951bb8dc86c44468eb24911392e13f3ab60e8db2b03f4e7f4905306e59bda6f0938743c664f620df3560579db503c7f059ce002a3eabf9caa28416994cf498487efdd60dbf684aab477b2ac99628f11cf15aa1f1bf7ed3fe97e97ae8e978f6ea465accb5ba510c51b642b059069b4672dac9ea75047491644dd743536e43753b0094e6537dddbbdff4633bbc94cf52242b1a87cddc43b5182993d3f650b8290a1ff7c01fa3fa362ccf3201a958df60d14f87481f2b45c69a112407d660222a3c3dd2724a08225e64c02e23285c42d4ff01a1b32736c9e2f0da6896befda6250fe090fe80d73f61df965133e27deebf96e595430121328c5d242a149b83f55ce0a744bf6c296f7514df47f1dcc13c6f5ed4f44f38074da035fb50456255b81e759dcc2811e2e6b8d26348898a32b91225ed937e6dc028ad81e0fbf8164734e09c9c2a472eb346d9c4905aaa64de51f8cf2415ae20c1154b04e6fb668ef808ae6066c6e32637afd44f1f2ba02f1ec9a07439c28d7faffd7afc18946974963a32ec93daab5686bc57cdcfb9ec30557b2b506d7a1891353ba47ee3bf16bd7c2b823e06a14cf7edc097edac1c4cd9751600854e56000db866b7bd76a7db185649059bf69970057a5f9e1b7c90beaf83824a61c20ebff89184b9b991b3eb3dd750ba490184a0d88d28af2c9c03c8e9fc6e38a7f12904b8882fef1796b633a4c289609a76121db1134a260c6ca42828e77989c5265da6120436308c636a5632242ff3d002bfa127878d1d7312ebce7c5e42bd7d1e0a047d03520d4f29aa187fbc3fb240beeddc99e6c322483ebf5411fb19892366a1b97b29a4613dc443cad760177739a5e999971209142e08172d529e434914830a59ed184555003f68b78c07928abe25f3d40bbc92b6e6dbf582ffe986a3dd7ababbea1b49097a396bedef291474f250bcfe92e70d273100ca0c99de667b777aa9a0edfcf5ed7b84caed16e64845d5d7e1ae84fc9877de409588c51e9f2de2b0082568a1001099a6e548187cfad7b5738f86760360089a2d3699302f9432636e5acec15dafe9ad6d714b50befcda1667e8e37143ae72896094a29491c5bfe83fbd0e63b6f0b9bd26fb4f611d280ca305647c08eec77116428452c1c1e7d91319533d5f3e541e2c46bcc2706338aed07c454a0cb353be1f25b61218f687163dbcdd1c0b01e2c94c870dbc5ba85032868b796fbf1a5f8bbf70fb53b76cf862e1aec255b56bf9795f0cf2a56ed037901074f940108fb554af3490713d8dc34827e3825671d9eba2def050b395268799c16e37eb40e05c77ffa4f453ad5f5342ac7622a54ed309d92b4abc718a9bddb2a466cb859b8887bc9743d9dae849d35fe946af885dfbb8afac682b2fc820d3cfdab629b729589a8c0b72f50cb668df75bfdebad90633be88136b5661cb8bc6b357bdfe441f1f2b61b7facc65ffe840e5c5f08ade6f58aaec5c84e61409edb0249362868d15c8c38523df4e268fcc87be265959f0cd8cdba0ff1e2ec0c696d3f295403f879f6ecc319b543816d23b0a4eeadfa8bbd6523bebb72003d38916b90c746d26235e5a684d1a0a2190dcaedabf2eef28938f508dad803191a4f5aede0d8f9e191fa5cdc1ca75d5e11710628e4492b85f2da1063da10748aa2dcecc81917999c5f3c79ad6df3e6d365a1100db24a3449389305e9e04f072ecd9877942322e90d1f0ef1b0fb2885b201df1a10d8fefdb6c2327b87538a69157f6157a19b48d9d193c7cfefd865b6ce125dbf0c49aa7efab846e43dd93f7454e98b9de063ff4ef11f31a1683488ef725ccbaaaf6f2e0c1bd96d2fdb37f1dcd7b360db980a1c1fa6b2ff6bee7f7af13a6ef58689c839badfdbe552ee4f7f9d5b0d955161fba1fd10cabc0e484ef6625d1bfdca03a5a0560612261ba1ee90e4c507abbe4917f1f8ec9eff3bd61f3a30cf8753ebe187e811119cbfd4a00df086c9356684ee3b0bb06fdd441ea9b4feaeee42a567687a0bf37ff5b938e9ba306079796b16192d86f03153687c07c74817a391c40351f5ee15423a184e106dd45c150152d5fd9fb3ede89ce27ea5ddc61b325d4987081ee3c34271d191f07e61bd143393fdefcac175e26f79c36292e63befb68599966a9970cd2358b784f331dda21d95456358f90ec77b33ee5c70210cf1bb8bdca14eec7b213047ef5c8cfca1cff77671fa37f5c9d85b348013d44049ff9c69debf72a23fa452295dc7edce1c6f351d6b5d2a4df509d0598d9047feca225deecdde856275fa62ee5ec5d93488dc372908200b622d793cb47701f52377d804a991a485af9d27a5bea6cfda72521b881b84fb65d33f1e94a15f466fd984600c5ba14ae89ea6c021cb5c5c4af068e06b5db75d4a4e2b42e7c6f49198bcd961e4cf33b0fdb8e77ae51c37509d55226ed6ad558529e6341eb1434a9a1ca7f940aa5042635141443ec82aa91e85546ecebaa85635d9fda9c74418cf2873c42fca39b32c720e8df82dc78e22bfeffd228574e25a24231f1454a3cbd42aa20b4c9a41e186d42a93cffb8a2504beadab6201cb8509830fb7d02fd4a4aa5aae78f38476cf6c63c5061f4192c314ff736fd54a8158254b93dd419536fe310c7479d615f1c0b980596ea1e09995b4331080c7c98dfdcb0be1626b27f4246d52e74056c8d00568f35d8c42fd7e7c4f895bf472314ef35a0c1b46e049e869c48e0327ac231cb27408c4e27048c5d62f466f52fe160cfbb8694d8edd3486a673276209cde8d064f6e4446a102e5ff281de066c71c28ff5d71c63a99e63a90276d93529ae23004b53d81d00faa63ddf57e9dc849818d66e8395e72c1a37d6238b661d1da67c554088bbe4c11d695f4f9a702fab3b6c8c98c76eb0da7ea5af8e7418e5272e755b5b0a435dc1e2d8ae2a77a4079b82dbecfd64071d67d335ef594af258c74f51dc4a4e093e2cb590d9ecf1220d20fd1d055d9111c550adb9a0e47529350749579865738b5d37b90337e934c4dee25d0d42b322b55a6792f00097fc861c7a7207531a56839d64ae44b7719aa0578372e63921a34ecdceb487272d9dea68980efd1b97ed5184e9be6f384936e02134f940255650c5caf3f03ad4cb367a060094180d2b1a8404a2ae1df2445c150e2e1a913276f1a204adf9e6a7b6e57c468b7dde9f34612a12dff086b4414774d3fa192de12fa90d00ebcd83b4415dd537d76c12c27ae2d51e6653c93d2fd79c9503ff9653af1d1501ed5cc84ac482ae753ec0d80495be34a86cebb9c7864050cd255f070d431bd84837bdc2059d580e75d2ff53d3ef14c61a7016b261ecd7d74e1777af92f96ed4caad577a2a25efd88c07efaff21081b390476b759baa2baee4057fc71bb5a59d03c21b0234b3950af147412fa37331c46a5e5941e7b1d60ef9e260621d8121a32313e4099c9930881b5f6fb5c00ecd900ea4d593d67a2b01d056bf8ebab256d5c83c33a2261d0529df4bfd3fd6053ce3c98f800781230a1316104c32a7b96e2e0d6d3e6b10fcf06841ff9fa75f95373e7d1bcec4c8e68622565d18b5c415435435e395527e78e35c97fd8bb09e33f783c39f70162ebd72bb88873928dedbd1a352a243f13358a3405ddac4b8ec3f98be12ffd15f93e950fe0cc2ddd5cf6c04eaf6e98fe69a2d18421711224079292e1dc9ec002e3e6051600429380f545782a97005974e346f35541c2087843861817179798a2fdb2cf321f0983c465d2dafee7c006b78d844117a15dac0d59127a2f80dfbdf6cec9250ccc52f4dc97156e266e0c8bb0ee278cdd607cd3c85a651346b87936ad4f24581746b21e0d6325c0fe71dfe0a0e60954e0585bd41ccf5ab2fe0b1c4c1526061734af0383af65be40153cc0c6fa3f80d8279f35d0208bf1f0eb4c234503d412e3e89d105d1c830a45bac58605cf7349db2c42e209910c29c573c3c064e1019ec4cf9cff42d51d9e04ac28a87525abcb2b856c420203b31b2ead7f4d77ef2462dfb725b5632c3b643aac9a0740184202d60b0689a688b3133fd719db2857c26bc2583c425bae07a81270ccf116c039b2bf29d5963a2cfadc1ed4be9493e22ad9586e63b4ea551d863b7732ca8d24e6d088d4561a811197610017bcec4f489ca8a8c1fbe1c233473d45738665b40ecdc6152bf0670cb0f8a40a1d9829818e1d887ecc72232beae32e3fc554280cf92b12185551ad181e7dd4350216c830559239d4a045dabfec6869372017ceef45b6dcc1827362a6fb412b49ba5e5442a8a2ba367e8193dc89f4605a65f261a00ab123938023db22819aaaabf693155c18c3c60bed8acaba3c7a4c3b1aa93b0183f7e05e477088ca901323ad08b9e0ab50fcac4adadabb200e73bb05dcd6fdacf630e9567673956492dd09072f7434ab42e3a4fd7b5fafc9804d994eebb69d931051c5ecdc41d444a630f5e147d9da5f47c2348300b69f6081024af5933660bac407caf35067a760e18a64cd040be28a1154c552b991345cbd8f1204f0ee850909b53d48e7e522c262cf3a7004a502d230ca412758400b9c70225886bd161eb867c11593720204e0611cee0efeab4f03d5b9b3afabaec6c56a820502803e97c71185efe5abf62a66e2f9387ebc5f6081a148e1211a1ffcba238d834b23c88a6aec66343b4552b7de158b8a83e172e65c7a7cb4756cd3614f079bf4fd8f6d09e2d6ea2d676d52deb59570f7a26e20648b44c54265ef3978c787fc800502eebe9898131b7ab30f6330c762fa5a6f9be53006a0335071244c61ce59c68c0beafe844ddbf9f88a281f87eca13960814559b21c2d69da8f89b1eca4e91d691ba12c9a17415bb738921d3d84f06be494aae18ba453e3d41b44cd6e81775154854d89521e0b6e15b910ff21d3301cd1802d8dfe165339955eb34aa6b15ae905a9ede1e9c32a5aa6b8531a925a29078c7c6290f7772c5bf8e6e146fdf539b50d46d5eee6859d4eb1839dc928612746152b9a0e95e8e4835f3c598d564edfe67698e4309cc7f01b9af2d4b1cc204b61be667890870c6b6afc7ebc3510bd735b93e4b73f714707be6b5bdb9b5544c99146b839b810b53a019d9e77733602d232805de6748da88aa34624dc4ce8d497cc71a0c96ee792fd7b73ed8a81713dcf18752029215c93c445602f4f47b914873481fcab59c5f5e5e6ba1f7c4891f4f0320a0a24cc8da4b08c8254be11e03c73bccab248dfb9d82a2da3d04372c989a7d75ca5c6c4320a6ce6ddad5947edfc366cc9748381a85c8e1bd6651412e6b29e1cdaf706247f630340d02fb3d4186e7a5b2fa310a56e613210586b9cc0afe2d67fa936ee737ac88d2f4a35dfe1a04badead6a0e16ea7e25628537e2ad41347a19101cddc7e4701bec45011a165e233836e484bae81380cd708da7d8c161541746d5e4d0e3703b45138b9db58263eab239685c042cfe3415d56e5f53ebe8f61ed1f0bcd34aa5a68b75190150adfbfc3383b6ff30b88375d50ed77ebdac0d79e524c900b14fe10edbc53c40595956ce72b93732126c850c9a538a9e67f79d88e10468e95f74504ff5dc69afe4a064cabdb3d9ae10d99b072d6b7b305405f27ce05c213c14ad4ba760c63b41cfbc335611dca7f4b05ccb877607df70bffaed7af129259149c64ec5d92b274be84a8a303528ed0a6c34445e25edff210e5330dfe24ea86888f9d160d7113b2257b03847109c7a1480b61209d5f6df6a9baf6340a3a9a2afb884be46696719265ad6d24a48f2cf87dd1c2aeabe034e1b8fe8ecfb993ab2e76a658ea748d47d6139d4ced344d9793fd5a9209b5760c93ca90687c918cc203ba2591dbcdf3b4a1dc92274cc5c2d2dd490d48d14ff241b5ca1c932614dc64efe81ef291771297222297d2c46a7682cab439aca23e1f5da3fb8d1cea04d277b8011fe33897fbb2daf30527147ded773ccd7a885a7ae1ba0c21eebe5674356a3226e3d83eaff4ad4d048c6afc7011fd54d1700238f65dcda195125493d8ffc3157d0867abd47f1f66149302541b30d44bd4ac2666020bcbb675f4386115f9a609c44ca807d4c759bc409c5681c7c98459e8c347d1f361fb4b434b7805dcc65af3703b8d81cf76a2b70ec652e0e3338600f434594021dd3dd26a5eed543c01d41399bf3880848d5790f2e0febd74e6a8e3d222b6d653c615b9a5ce9669aaa997598f83124595a8a0789b505b4854cdca8d21c44afe6e0e9d6e46f46e82f8c87c4971d8f3e34780dfba9c043662d2607239c43482814151d62e93a2ccd6d1b14cf7656336e2efa639de222c4528a7e4c0353e3ead8b24e71ea081d4a7fd0cc0a4745c22222a21d87e312b45dcbb771c53ba404bb78db002d37bbb3b8d71af3f7ad8a564f44ccabeceacdf8c1c90e4c6093ba49f4bb7e3d71f95df5ab7074a2bb60b49aeb3a3eb713c3159945009202ea552a093c96cd4e29d517612613d246c7a240a03c81209e2e66f7c3fe2547618273f13c66918fb7852a7a2bfa137beb277efe63507cdeb228aacad5d9d582a06ec56fa5d792fcf479b7bfbb62a7efa616d0071b30501ed6c9ad313147f391663ad81db05be6ba4fdb8d7ce1a5668f7bfc788479242e8f0b4a29a90626224d02c0dd8cd408d9fa58dd80ca19a81fae6adeb55f988f4407438f3c9b907ca9de0f796a3014c5297254d6e07358f076898dfc0ec72aa298d30f53690e458cb687dc70b2acb4c3a988df999431eda8835973841000f856e6cc2aedf2a6b0c0bcb001d1a0b6cbaeac5b842db5a24fd1962baa2adca61fd2083ca23fdb9232e2582b038fd0d30d9f13a426257dd4a7c944ac9d7394db7ac33a781b3698a5255d1d18b70f82d71a190f140c4f3b209b9994fd65c227fd3dd90b8d64a58c4b447d4a759bed08676ccb91d1c99c0f6edfb948041f289a37b8547b97543cccf1bf252c206f6c961341a06340e7f3763f1dabf856bfcef3570ac07d07606de1972a5c05303357df350e605b9943f7594320d731987d22ceac675b5fc10895c299b474b1feb5e9877ded1921361f1a26f3517ca611a964dee9c0088605a4ee9accef67e092658b8bfbd6121b89067d50c1b998d88e5d45c5885f391dcbb52a16e113f340690eae401f40da9e75b634516bdee898035a575673118bea189ba01658975556b694026e3a2d52d725f84ca8bd8bc153d1d4e0da14e5506c14af2d7c3d118a50ce0ef0552ff5574c524a9c4481d4c74944e7aa56a7ba9d497f0eaaa9ccf4855997ce629800a7cfae8eb573e7a0e17c01b4a4ecb78b023a05b230cf28cd6f642b63787a72169f8a07139e83efe6403f77e4643428ae1007c5972c39fd16d59ff80ed124eb16f3cf6f039fd34e8ceb61437b58bdd496bcd803a313b50a52d2905eb401f2babebd2f9c874be22e3b98abbe99d2666eaacf9e5937d5c1e47f9655c92421ed072683fd5813c7e851091421ee20e3b34db95c149c78a8784abe9e9d54a71be35159f684310174c3e88db91350fb5579700332922170fb2208ff0284fddc636a9bf92176c768263b8f3e71c1c4402f5c73102abefa914e5c570716fb6de1ee162795f9cd96d2f26bceaf162644e4a28bee441624b0c097a58871c9e0b27ece6ed12937e7b89df7c446b905713611ed812803551373bea902ca60f3c99a358c1c04066c190180c8cfff9831981813a2fa3b76ffa8d141b555aad08ffb99c3d654027323bb5d2b77c1d8a9b34430ce6fd78e87af6cd406928896cdb9cc843296ace93403ac8004b1236e01040478d87184b40b88e3ac004608ac91eb65c0dd234cb20368034a8199cf729849698835a10232835418f91404a133ccc1050059281789f449088d89007631aa91e40f2542b9e089954173732b2ea8a584dc49d4c10e5e3d36d36a4e1146ae59872efac61cd721e0a215bdf13088993ef982785a96f025cdeea2ab1d26c2a0d42030a9806873241ea9ee8fc05ae27873a29a8f962454929d6dbf3229a214f7230b692d25607cb263894fc6bab0095dac91149d9be36f49ac880742841be48b6e20ca2481995538a3706f4eafa7be1ffcc5ee6a69428d1c7d10f9432ac1c8be9a8052859359085b95b7c3ec7ddf836fd1c15fd725058c736d99206cd6d8b1dd7a995459f7be5b2c878e72e57c5f72c3372c78e194818d2ad1977a948fd60285f831a669b2ae22323f231bdbeb40367c0d4a4405c960a6513dabb4b39e009722a5587ed7611c95d335f702d71729a3ba0099887097328e504d0a1a84893c715566f1dfed73ff733a5f10c7da48f8214f4fc2007cfaaaf61642d75a420d82218cfd680fb8e68311511038c59a7cb39c829c64bde0cf4ae05de7e8e2b348d41ce3af1537edf222ae4262d9e15bdff472ef2be6651a8c06a268aff9ac0c3a02681620903ba9dc004df1a5f81ebb2a5500f0b930113ffcd92fc442416a5845a70e6dcda50d6d9212d820e0af23b9bc485348dc596d2acfa283eac8df0d3105649b53b7e22395c3c21c960acc28c94d035c3963e64f9c5f5fa0e6cb7671557799707ddb14a30ee0d433f8512342447528322d11e450d4e1c3ddab6a3625a1bcad6106c3e2e20a32524dac000cbc691c672555b96c9941d8b96cc6bd869b877c7d0c56df452a55d898bdea70712619a2bf1d0fbf6c0214c8d9a164c7f302f27861066e1bd445c61dc23c2e447ea3838aadcebe9cbf187dada0909c24c7c2ddbd409b5c8447d4cc14307ef013bd55d63ea621dd9643da32ffbd6379c3051ff9ac1c64b65b90da0b5164d767df93874a5f5c6b2920b77f7eb7c4d59f9194c670ebbc5a4e0204885f17f9c6ac0c0645db8c27174a4a4a16d9074944e45d7cf15f462e7a4c46d8bf2fd0bf85c8f4a1a08951cc1dcfcc45d63744444af714fa68a5d2f8e315cb565c0b7cc40ed3d404bb76d69a828726d079b881460f9dfb4e9d0b17f8e03e9ecc39c6e8a582c2124ff14c414a0db710d20db219360be2042c5fcf4662c742f0aed489555b2ebb01c07d2e97673229861b359bc3a991bbd0ab78f5812265ecb1440be93536d5dab0d86a7419a1d8d494f0500bf9b5c5a0f545fb7932cc11aab7198da33606c5410d339a8cb80c343cf8a92224f9d1464c829c57f30b4716b48b46ec9c5a3f17626547d03e93a18fdc788e645b7a1164246c97b91ea0c64880a5f7c20611bdae5ff8e060d5e92a687fa27552e35ce91f03ecc7d144c3990a0401bfa033edc0ed4a7f89e61777731b95892042c3e4ff3069ba36233cc538a6473f74a85b3857cd135b797c9059b93dd49714398bf6791b7923f906c3ac51d1e6c336446145771939dc6082f02c34f36baa61a0a83fb3c41420319406de7994ec2d53cf2b4fba5b5633f8c67380811bc9821465005a2e36d5e58b9dbe01fd62f0b3183996806dc4249c0db8460205e984a2588255c3ddacf29790e71521146452154b3c2f5037d212ce5a2b9ca6e3f6c6af81ebd05eb45bccfa158bea0466ba162e40587d4732c7eb12082ce9bd4e665a4a35014a71c4bab288438a00898b44a69668fde5cfea869711893555974b0987a3f3c257e4c0097efe7a331da829953904297fd2aa859e6e5f830240d825b06b2a850c21ffa536be5fd814174980865522c05d1e172a25a176fa09040455a9867dfead9c2b728b8a398d4870d21f5c07a3922d79f18d5d6bd6c6a05c859fda4d4e4824058b08131bc2991d09a92f9744f39c7cb33ea5cb906ab4823923bd3b9db022ba40874b0122a76389c0453a091bc571df6c07a2a141385d6a7df71007ecd0bdc2890ed5ff23fca358abe3a2b52affd0bbbafb13797ecca8d8dae04065f31000354b338dc2ba1e76ef862acbc372235ec7d3fff77313e3c89a23699e3c3b27dd7af7333eba33e386f0d3a2eed38af34f37a6629c83d04bededaeb9439337587027c0ded04e970e298b5c02374b850c46cda713030b0f52a7cba3a6555386fd42894d18fc021e2908d575d389b9b24c91bf9edde795d4ff76c475b3e6c6b0a7e1f6485c2c5e8996cc09d2472cd96b581f77651f868bcc7bad398e0306f2b0d63c23eb74436e24aede33d81cf6f3d5ebc28de1962e72b6b72baac7f9879a77b3dee13750e1e577813d47be3d88ca478a29a4ee342708024ef8463024c0806351bfeb2b3078ffbb99ea59f37bd1d789a86e00fbae31027875fb403b3cb83ffb6813a2ee3cf03845b0d175ec4420d4829a07608c862f4877aa81dfea01cf673d1088902bec6ba30e1054d1d4d84f502bf152b9189c117b4db22c860985b4ba6fd71ee0bd33861966dc39b7c78a566c2f6305ee3be2349040ae1fe7778480c0b6ab4180258842fc22c9aee2eb8ba4a6fbbf6004823d658c2c285d8569bb009239453b4981c9955184df0b9da246196d2b7263a908f200215ffe86231df9fd3a901c4b487965403d8c06b3dcab9764c0d1da4214ec4827eb477693c7cf9bfd59de5290907f761594bec9cc3d6db2cf475fcd05cfef837061b047d7446df240910742a72b15e190f08fe63ca6f91d9eb99d28b2d281e1af4ba8a8b76cc2eb1d1b68902cb4bf7929b824fe9b2b312ce2debe5bc1f9ffaa8536a2f5a9154b9d7ff94b88b85f1aacb60ce3285a7bba40c335c49e12e7849ea87cd30fc544326ba95543752c46b5a1e925457874c77cd7396dd30fe6e6f50dd21e93c43ed02f7fa0323c998c9e5a2d46c2af6148c38dff0acc40c1be4ad9fec7d1ebb24ccefc7b1749b62647df33823de97df9e63a6c57949b601a1f09c95bc6f936a2c32c9888a66a61b34b4b6e28401e220962f5574bdbce697f7cf0888b3d1b6374a19aacfd3a8fb6b07a238da357d0677d1e9bb80cfb89991451e90a2256aff47fe37204ea3acaeda8e60ed6904684956ea4256c8f9cffa252ded0b0f757414631a9d5b9f56647b7e565350d75edbcd6f7459cb9c1dd6836253eac575f433dc17ad35d94a892d5c1f054869a5ab5b69fc86e2df66d074ed3eed0c7a89ea4db22da0c201bf730176c894f9fd95ed4769857e5af6e12b15e6d823188671fff805aed95061ea10d12148666015e9a8027e124c165dfef97a201a56c7266666e1eab2848341e455660cf9582ee015410dfa2264719dd88f6b26ca1c2fc596a51fc635cc505afcd8be23b4b852e25ac72482c12811c5ba6d20e05f7b8a413aa662d008d37fe823cac53272fb370e1adeb0776cecb1049b0a93fb96a4d5b5102a1c1355c744fb15ec3c127838e69aac62a4429d5935a22c59a19499be55285f71c4cd03a8f29247f249b2fbba19adbc80572152eea553b75bcd35a4c6041764bbd6127043d049aaecf4923bf4086a4c54deb0a1c6cc5a506a836bf913502da8ad8a3f3266762631f8df7aa313c919c9fd3c730ffedbcdcbabf6aefad088c674f6ea9d552cc29aa73d8ce1f4d88d413c621a830dc784b0e7619d5b1bde14a736cf54e2cb0cd94b3e9e50a898f18152c3c512d3b909d83d835f96c4f8b5e9834ff2b33cb887f38529463c63535a4ecab44bba1a48a62da60087b835ff1b799b95647de09d1bdbc2c053c24f2225b4ca4d71c4fae09612f84b53a5d7ee6d3eb081253931d286193ff2206269a662333e4695e51a3e2346556d48cf508d691f5bc29424f0ef10e6706a62bac9a653c913410b6cebff5c4ffb413ce6f124dd4fa72899ab2e05dec6809612c3c48c790c4e4a7ff4690e49bbf87446215136764ea124ec7ca9188f7ec0732f615965d1eb6e59bb8473e5e29dd05d4c9517dd8fa966441b11514a98155174be252e3584872c0be6acacfe7c43536e9505a9452f1d8cb62d2efcb75e0bd3c55250be755362aac825eb1e8730c0f0c441dcceb89891068abee4926a3338df8e30e37439fb70850c54d165ad2a00a55f22ae7f266bda6d4f0ab46d36f659f8f2d483f1967c10891c10c0fa24f4786620210c0e9cea5fde1007aa566377152517fd444c06830e955ac8b04d1965f93e591fbd09a06cb1989dc730f5313b4c2e91aa9d39302a4d981962b8f82367720fc994d6a83257be9bcc0a8ef050104ac63e6edb2b62ed751e4c0fae331481c4c5ad84e45da9dad0db236539ccde24595144b3805b733d86552a31919f8b8eec5644de24c19d69c023ac6a72724822912432ad295d84a5583091aba467ddec2f3097d8cb8c248b7810bd8fecac33a555b582105be87ac182124821823154b8f04e0f168a9940ef77a4035182d081964d60b6ec99b1238ade2f652fe4d09ceae710c78e83366497c90aad6f2ffc043f9ce450fd444a5bb843469de9835e1592f2b262de73e8ff9b220d3d9d4fee330980f4899bdc2a0a8413bfece6a2fd4032fe93dff339d1531cc2404840ace6a1a6d5a7f7888e3bdfde93841f1c958fb88d470d58a409ad9dc9ba087de4419339efa430a42ad3dac1123a3b64986b40278e0b3b7863e2774a78db0960b0461a57111d4112bf2d2e5c34238991fd1524b0124a89b332ca8244665a1b9db1229d452802da09de336ff6c67527c2959945f46e46e3c0bd12a6b83d02f170ffd895989dd3fcfca4f816e19b19ba911c2f3338cf02d578713654d9ff7f6cd09f6c1c0c570b258d5d1aaa2e6e77aef9ea959d2dd4e85456e06a5f787707d5385dc18b6f42e7740b0b334f2cd5741a0c0d64113adfed11d51c3f9bd0495853acbdce49e8fc6aafc60ce87b39d82369747b4ef23902a8f7133a2b4f3c2ce19a004b26a1535d87efe4eec86a02aa24b9d40229194267fb48944c08221ea8df511b900a1e212374ca1ed435e97296d8f1e3f4f2394f56d018742a298507b06d0918cd2868f219e24553b54ea712b8b44c523a1a40a7d886bee9f410b12010431ef26ab6bbe5a0b31116b899740d57138784dcd699b5e632ccc280e03177964168a9fdcaa43d61b91720646cb25797c8aa213008290cfb2c7c1ef88e2d8c5d0367ce4e80bcc54ec4e7c807666ae07f5e989afe4234e83c164c4650260f68f6d4e70678af181f749e3f32f27a9e43736af905d9b267c1eaeedf0d5d7ebf8f8f07db2c4a106c8180d1c7756719e72be5a0333faa8b40b61e8551b4cd51ed8e8741e791cc10eaffc5300f103965d079f33f6434f385eb907c587fcddcbac7f51874fa8ece20df9c6385be6c2a134d275366236040f3011cf490079df7a860b59fd9be0ff0f85f19bf342aeb54a0803700727645cc9401159b555ae0023a31fc241b2e10bb3c277cac535e6df136da8c80c4709d51f50ca9c16b105fb99fcef9b4c56e279dd3a9454e791a244486084b27e3c584dcbf135a17c11fa807873d37a714d0167fce9f52b3367f38e72d99b89d7af9066637ebbb826d1b1acea9149483b1d06da586791389f3e5b3d87676e3fc9cf8975994c139592d1413ba867392c2713243fc1f055f38a76ddd9860980837050b9cd33301353ae44fe7849dff931881817312139f0112f17b83732a1cfdda860a9b8173aa12604d1f079abc7b9401ace1f463b23d88f70e048b1dd009e764a8151c9186da9c87fa0b44bf589b534df07864b464c511ca48a6f64281062cf3f11db53d157a11bb44fdedf6b11510148d4543350ee65dcab8388f6ef5c85a8393a109fb2ddd34b56cc86ddbd80b4a38e1066cd645b80c80b9c11c9828dd404842fd1bae931495f6c2db57ba929581240392776ecbd02128b7a29298a8fdebb34b885d3f436e95875f066f831007cabe50c8e596ac16f335a42a7179b077430a4673780621b4f3f09d6cf23789a305ff642b18e028985e50fd6637bbec64176fd219454c9b4a92889d008e231c4ce5d53b73b04273022fb070ce2d61b8bec81a27fb40e46bd9392eeea5583d06976fa5e2a7ea42e40ae8121363167c44da9431a1899db6e2e05cfe13c0ab76397dbb245deffd6c9c0181cd1b1f9766e9d099281e5e7d8e2e2d554b1c633187024a68f759b0d1ae7ece27b890161b30b370fb5007a8fa5ff94effa03e9966328aa976f552b974dc026890d7cffac23d5d4e0ac487841a871c99d6cae6044f11f72f4f11fe4228ae8aa7010d63320260bd7d40879cb6e2ec5e760ac7f82f238840656a575b36060e84a9210348ffd0c4c34f1ccdfd59bc30355ae5d961c8fe1ff208768965b7a03b4a64f9396634d8cab88aca5b5a2c54cca430d2d7ca9e9cd3f812ffcad2bc71025f8e9e8556a4fb999b95d853892cce60dfce7b6a23b814c00c1c4a90c22a2f69267f601db70b9353e39610788083daec5a6fb600366aec44718b6d8357c7800e013f48565b6c1c32938bd767f4398a10af4623f11b69ce109c3c01103c5afc652d4d4885403aa6093df0de3466325b1ce9efd2702d37b1fbcd8b886b9901d91b70660a024788d571d3aeff7637e2111c8abebb419e55c3aed1db7f589939a1b628d40413f0b94a202179175cda0990b2d12112aff63f98c128e6067819d899df4941efe001ce3845a392c86b1d90c26c7e05324811f8a01c2a6c1d478abe56cd0e59a648d240dfbf18d1acdbdd45090b77909b476cdd6c3ade73f2b26de0a1e17f2b34de0e259f03f2b2d953aabba40c41d3679c6dd1f342c8b0879bdf1b376e0802213f2fb6303fa07e7e6fa08b43068f304fb984374079341b1281973988876af062708c7d2ba203dc2720d1182654e7e8b85f8d3009a8988bde2220bdd26c1f5688177761c8e810f878f603a8ee20296d1085089a44f5286f6aad466f39ab101e771f64e1bb46e84d358b98df0c3fa885278429765b9062833c1958481580b92824ab48c6f7b0e2cf4b5818602813e0b8a686fae8abd1e51aead783115f0630e69fbae4231eb57520fcb2118b67ec1a08e2328d396090f800338966591665ae8822bf9f36b4f0ad509188993a8703e948c782da28d416341fd745525c555527dc096aa9c4a97263ade81d63a3ac3e265f3933c7deada6c2472a5dcc1d499d523b537aed84b152dbd52035cded5a0f9ebfe343c54443a0fb1677fbc88288ce92aaed702fae25822116542bfc9f921ace369630b8dd6e02beb042e7b024ed199400d5ffa718662bb2d45e8dbcd8e76e0ee6a3eaeeb0cb0c81dd676df559b542e6da2e01169762137f592e7552ab2deb02e04a072d0f65704cae39dee472307dff4529a8acfe287608a7e91d3bc856131a13bf82c52f89331c0c9680631a8d52c01eda701b7793c11bbe4a136d90581718846758098e360b26733eb438e6430744816da24a00887a1b6ffdfbbce05995a649559057c525364666f8d593ebd71dabfec896e278332a08ffe53cc14148facb8df6973c1bf249d20701e561809c2fb50b6ddfa0387856b768f311d2fed4754034b672cf01fb8bb6b98666006e669943c0df5f2fbeaab3c2caa767e64535fba3fe4b59df491d3fad7f69269f7209d589384fb5ed64f31b1a150fbbee8a7a992c9ee96792479448c392c69867be9459d0071f158a790a8706a091a421c63ddcfb549b2e864818788eaad88485037d0732b8819639bd7b5af66d16e089b758038700ed345d02e43066473160aad0341bb9b648eb401a61a07a18b6267ef74cba88f565b0688d6f6ada84aa0ce905777d3d475c4d5c65b9a489a689dd3d73af9f20c03992773724e08dc6ffab2daaba45d2228401badb44d55ae6efdd8dc793920c434d093346316b8a1d9b4bfc2b7bdface54c8f7543bd2edecba0093c5fa499fbb141c56e8433202568caa31be521c089ae93d23affc25dc764e7b7e678354750b429bb0b237858263ad47319ff7d5df66de8e269bac35a6fcb8e497f144bedb63c8dfc94a4774ef192def443345fb5dce6e85949013c24ce550506dfb7608d685209c713a16a306456203ae9a2012ca55e4c33f58d4aa954816aa026aa0e673026d9c0c440ea3f7f548a9c6df2be428f9f09e7babc71265dc6685b757a3e4d12bfb1946922c2ce74924b33cd083c1169cd569cee93b806881e933ae4d22eefda77dd64b646ed5bf7a5720695d660668436349fa36d269d5c6a6ff7149701bf57ae2a90316aa2f602e704d842d4ab277cba5ba2107eafa31f41e271089e3fb8630419aca82f8183b3576b979d5307840c3de9693cf79d24833792fc57f17f91755586016bf9e6fd861d643fffd71eb430496228704285cdff4c35c10458730eb6697ab3bb1282ccc07840c6f9743f189556cef520143aab744a6193d6a0530eacbd3a19490a656e3e097059eb6bb758e048185eefdfafba7c7e1a75e540f5b03facd3f8960dc6865db71262e57ee216363280231878be9fa4de964ae49b5a3e717bd77d162c5be6db9bf7072593f805946e3be31c0714c6f34ee4a9382d0125f4fcb1eec1cedd5ec7c90c2863f071e716dd0188cef7e9f4085145421c6082a7c364f679a38b9f5fb440f862818a64d2369e67ad155123d802c3e995ba76814c424c965d1bb34403df6ef419218a5c9930d9e84fa689ba8dab54002127becc2336c070439262c4f1402af5f49b063fac5a707d6c9272f7a30144cbfe78351a2ae99a7e21bdd10a51bf46394d9d2844cddb8de633bc106c855a3ca22428fbccd1030131d0550a037908a0183d38c96891c4d7f0021b64a30e921aa5816fed561071e3e7ec4a899b81f4813e111d3495b24ab849ccbab728a696a5985b9a5791885183d7685fe0d58d9d01795e60c912ddbf23b152d378410e918fab75b37dd889f5c1e266c0f408c98d06e714e16f287608a6438d48c0a11dc993f7ea40272c99d4d981c67211f2eab1efc6e7d467d11494fd9a2de0000c1f7fd16374c719a4b18e11428d2cebb4cf22c97014d7d919d4bfce7fdd3d2aaa599c5972a068af1f2e2758444fc0655b80ccf83bd01bd6ceabb824cc07eeb2df6ca4cea1c4122a3554203032c8adef7aaf06e43200faf63858e12eb322fb552b1f3319f40557b39aa12ffd0fa759cd8b2bf9bfb3266340443f215e4e1755ced527e71fb3acf5ef68a61cfdeff956c59a0b100d5269c3dc017b2d2440fd4a0ec8cbb57a1ef1d14e61275c128251bd4673e83124b07915fe4fa1086d5c220f31d7e1c494fd064c9ea64aa468d8778d1981ebfe60dd8549d4bb463348c325ae2435a1680ea02a664ace8e5a6665eeb817adb9bf63b2c116524b4306aea40a38bc33d4288d02055ab99a5a923616985c43ab2aec754f573612b40dcb84538d21cac6801e3e759066d86cf90b5c62b0edb54b98f119e9100bcf54cdd688858aadfd8a3d877d4e66e58494aa12ee006d17bfa3b6be1d3d53bda5c6523b8d90345d0f075afa95b4748761f03a5ed6c557bcc31470a55bf5fc093408331c0de7aded906111e90cbd6fb825e0025bc0e3216664a8e10ac5c6938d92f3d7857b207dc31518e33cb139a0c9ed342d66df325adf30fd062ac0e7e003a19027e9a6e77cc37fa2cb3cbee166cd2b5b3ecbe60927e20ff9864facf2b843fdc9e1a7b81513e8bf1d0787fcad02c087bee14b628b8d2de61a9e49011df98fc95e34535cbb4d0d5b9f26baa37bed309cbc11509d1b6614a853bd773ecfa5e2b82c3eb259b9084e3fb52f6dec559ba1b402f3d90dfc2b4db2743cf6d3ef86ff8f96e5a0967d0f490cf0fc5393d4a5e361a6f039e874a5f4619ebc5c91f31e2a51eef91adf5472ca1ead6f5dc0981c42755897f3f68a9bfe1cc206091a2e723d049f0dcf2172c7e3c60da7fa5de9112b7770c32e6b48e6cc14382c9d98e7900ace7aa2b6f5221112ca2fb29f0048c7865a1db53582c07f3b9a520f09fcffb8ec5c63616d76580ea289fe38560dc6fc6106be0b8fe4b932fe103839520cb67d7ac34692b67ed9dee945ff00f9a699355b2fcad5aa1e103379f734ec088936bccc545b7344e3fddae49df290d4a004f8b1f98a60e5174cf2d4191cc19cc7f5306d050ce69dcaa212f2c1ff7555ce700d9459d666a7b89183a7028e7a9cbf5d3ee4cba57006ee5bf7821edbf27329593d1684fdf43a3fdecb7bd1c67d4c6b748cc43e0bec562dbc12362f8f549c7885b019ce1ee2c68f08c3af13eabbf61413e4d810852635b6d9fee4772018434716d0985b153f74934ccf87fa0332e2ac5cc3057323b4f4311546c237bc1488bbbd4757c41916f1bf02236cc9016e9f4fdbb3887d40a8743f5bd956647b396f1096336845f5efe348c58c623770e581abf9f86c5d4351f75de9081a145ec962115f3c9ae7a4e404bd5b47d8d85f1ab1882d137c0779c342b8e78d09d83adb32402e45648c9dfc63d79cb7593a2ce2473a3c0a4c1cebad68e23a1e131b5f3e303479ac6bc73c6b49746b888b5765e5c411c05f49f27c42123c846df63e9f57fb83ef44420e1a9dbf8fa8976ab13ed0947592442b2645f145c93f2fde276baedde46d7709b04bd6b9ff582d591c6047144b0a6456db877bb0a0dc13af8bae748f7c2a367c96cd9d880781cd3459789aaf4eb63e804c578842d73e2d197e73541b4c30bb1da4a4a3c341178debe630759e26c509861083b853fcc62c524493234d60a99c8196f35854cf0437596046492925322c92a99063b9babc6684591f9369e17d091931fa82d0d7c71f596b97bfc4b58af165c93541f9cacdf84d47a5f32aebb69d7ac4a6fa1dc4df18584693dd353f3f76d6b4df8f49075b4a417219185d09df54d6eb68095ff72f3c3d2ce611fe597965cc6ca7f8e3533ec28c7a41d1aec9a22cd174b3e30d1f9623da77ad0c0127483fedf2394a7021c7e879c40dfb1d23e7efa693412499464d04cd630f4f095792253cec383fa2185a207545f4b61b9b0e5ce1cc35e88af94693d24cca2531d403ec811ed9877978f67d3537a113fffc6a2418f9ef7f24120684d3112dcbc0eba9b26e6ec209e68200ffa0d9847e42ec41af909f671320c2bdf62d5754009d4384aff4bcb5b77c5d504cc61abdcf7821f89c4e38131acec733dc840624addf950201920d3c10109207bf9b802160b8ee80f390af4f79d2eae0a6fbf7324cc7f4ad3adb289f2e8046a3c104ca7e7d05fc21a83cea2cecc853d27b143b1d2dbcb37d18f8d9a8c3951ee6e771c0596626e0e51a2a7de56af0bc053f0c68584fbfbabe0d35a5b49fc7667aa6b6e2861c13ed6996736f09345640341bfae9993432a0b17c21d2249b2a9a15f3b5a674b24a1ddf63ee33c93acfc4c275a6e23df3cf2e0c3a72c7951243191b1558a8ee78631d68e0c93a7687a05ec1f078bacead65f8de148945bca8f3c844a60bc850f9ec1a636bd50902b181e3b11add10f35dbb4124289fd1040a43a6b8b07f76a46060411d80171cbfb4833f25a42b3fa60c10d4517d485dc62557bbf3c8d124c47ab472ed3d8c7490ada54dbaf81d8f09f9f9a51f622c76b08510d12e68696f4e283a845c683216694633d9b0ce0f9155f4edd1dcb508cb33a47c15437a7424417366c200cd947678c104236b36a3300f815c108c3ce735771399c65f24b0a909ee975706bea14860482081ae645d81566af3c3dfe637ff99cffc3d67166825769d2d9f31e915c73f54c86e42514819c3852e3df811ff42dde42166b04775b8d123e473265bc2c20062cbc4e94e758cee56a9fe130cfaf094c4185fde306af8026685900f596381ec687654cd5b168612fb42689f17963f308d9b7545a1966487d0bd3cd80d1e9ec18487a213e46272eba8c1611e425fc93dc5beda178b4f037b5e37b05bae793b16b93d7ea5fb22e529861dce65eb3bacaf08151ee526be0f2a4418292d0706b3c7f695ca4a527dca2a25f4cbe07ee53580181494f68c398abe12457d90aa5929ae8a5a61c36d16343c46c22a873eea134ba77b4dbb8b98f139f3e35520d4a102274501d78434692847a9ddf032a0e8ab1d9e481a23854b864b1b7d521cd4b2a98a4f4d840882d3714385b07467121621f7be2afeb8c1be14269b431812ca66416852649ae7c8736fb26c8c83a545566f37a2bf608247c2f93d2e960e44b85e84b12ffe692483c870f8ca91fa525bc40f7675ac4917c80c1a9287862baae1022b2598bc03d0526af2f6aefe0f4d454fbb1866da6534fbe9f06ac382ad1fe52692b184d2803c4ddf3dc32b3f61f43440cb0c9c9686062c1fe97f2b7eb267e279ada61395f947b7684aec56f65a4be49ebeb0bd962034fce83c2eecd3af60165b58ec5a660d5fa460f96503591a3d64248553d246b2d45ee0b167e450d9f2c333a7825c00cadd0d12f061e26f96552891fe686633c46d4354067febf7430a825843734df2c8f1ad0ff2e00544fc8386a3f67a1c38d4239615a10a3d290824f72fbf8cc9f671998823fc3cc3fbfbd3c58c5c789ffc6de1934a50be358fa81a3bddc9cfec3362baf10d0dc72208bb9e6becda5af6579fc50c5432cd8620b37c49b3d6da493a124a8349a19d8edff6b3f8bff084c08b9a56f732d6d7b9ebbbd4d1ee27832c97509d11abef7c06b78f443cb2448f166b154d69d063b156c86968bffd7f3d4360e41639937ac34998956dd86a5aa7c4d6b7dcf0b863c4d2840fb12d5dd654aa3162ecefe7f80bb9ff181ca66a81a51f8fe1e19babf3038093cfe7a74cc6043b38a3cf42524984d118d6094d0f4482c0351726709d22f950596cf2401858a7430fa2c46d3e5fd9126cfbce52b43653371b6f52df334be9fcfc5bf0b29b9711f464dafcb9af989e8b8dd5c632961ad0f7ca87e862ababadbae94c7c4fb412032ac4aa79e97579c760ac375170cf3c692f5317ce859294a97e9cbfcd140186ebbe9ea9851dd92bffdf39114ad24f7b40220b55e20c0db112ebf2ad804f895183f76c728ae46933ed0ccd9a6fd42c86a0f94ae1a4374a1aee1bd275742152dab53a1db8a67f908c719b15cec76aabb42e676805600a0a85397db06b73196d0d7e1b6ba8b8186e5c8f42dc11815a1abbed98f32c356d91f5a89427081d1919967121de6007c2720c79dcdf222f187b534a092b828030bf1abd8e9e7c6792506f8989e3eb66a5a4e83995d4b270d7c2494885d51cae8aafbec6e1b731fdc4f8b1e8668d7182a04501d8b9281c88b4b4fa4f328c3a0b8f51ee0619557358cde01fb166ac159b460946baa729f4832a28c744bbbcfe1f3efbf33c0f3e174a07a45c970d7fb1befc7308ff897a4510fc1d842c85dc068df529c8757bc238ec986e0c0f10abf97c8e7543cc90c6a162dec441114a1604ec9cf972c4924bd6b6c798ae5db8dfa0673126a287d436320abf55723f90623655160272c47e1ae475066b4ebc40bee289ed2754f3e5e3d221d04f54f7de75e44720e30960c8178818c32e9d03000ffc7cd9c6bda2b5cc073a63fe975ec3bc0b829e8f0148c1ebc64cf9a142e5e81543cfe63fc4771692c0797bcb612c23941e907e426f13d5b00090b1b40a96a977042a9b57130e971afacddeaffc0ef7e3b9d53eb9acae20c2c7979198863203f89146328df7bda96808ae8f747e3539d462ac34c4082d255c37ffaa8515d8e6524b6e8f9865c2fbde536a7ab71ecefa9612234b6303494a41853e0468aaf5d2dbbf94012dd5f624dbf4843fd18a9c0092ea6c59846f1839ebe60c76990e61b191fbb65712d59b783bda2193cb0c4f27330a00a5e4aae5e18a20e8bdb80c30110bbb56d28db3b13c97220412b69713a778346e6c759350c66a128e104b57bf77d95c6e0b7572964d0feb7a556bd170b70a9bec1664f2cb91596abd163c53ed008453a6b2b5bc6f359f0e2e25be1ebca03a60684a693e52667d450654cd63e782ebbf5be8272131d5d103261638ef50ba070c0270fc392c73dc93b0d15f4982bcbbb802cbc6bbc103270d04ac65beae289bd0d847549106a2d8e1448984ab34b9bbe2c0ebc746a3b0f47bbf31040a17105661baa01383fa0e2c128f1aadc5fef2cc3a081d77efe680f6307699df74ee6628ee44d09361f59f179a16f6fd9a1299c0e62b2653a2ee6edaea7882f699ab3070f9eaf5d93547e42b6a7629f487217bedff87515458c5f88f3cc54f687cebb830c10b4a71d086466f561c9c71e1c554af721b24a4dc290dfe0f02644b14777b7803132a8e74d84dacd84060afddd8d99f169e12b557f5bd30474f998cab78fa5c5cc102255573ed7058e56c38f36226dd7d1068a3709306fa2a2589d47e1cc00c24ac919d23906cae9643e2b42aeb83b03f43305a7625c85aa01aae3b3324323dd3a976f5446644be66b834cb2a6d73bbac45cbb56732c0b51a160989e2a6226b7450068c267ee02ca07d7cd02e1f5820ec9267aba256226070a311110869120225ca00dad280a0f19c512a800ee310183a28b0abf1681a8931e6de9aa2c96622419b8c370aa299d8b97a1127c7fc442d6fa57060d8fda9235f569841bd18313868d18d46983103a35aedf767956ad0f1ea25000e2ec0297dd13896a295e28f879bb7e7a739b75262e70e45547770cc4b6425768e20ff912203cc7939170c586da188d2daf90a32991f57c17fe38c78f45418011a6cc5bee5d5bbdcd74343bf785f812e6050c57768f2a8c1dd8a6c320842d517be93bb51e8f2471d6d4ac0aa54ffb19acab980d608d52335582017a84afc2ce8fbd9aa1c5ed7765ec9d5fb2c3e1115ddc05f5caaf420e29aa222d2a7a3d4435eff5b6f367b29dbbbb4be84972b77ce940b43c71ad62948893323b6ae3fd41e88e4f4fb8d1d6e6e2d6589e1dd900892b7555f36dd61f44d7d79f2793bf5b5b0f45d0099b941aa8d4e1b17c0a559f806f43d8ed2e59a8b7b23314ad16726a80d6cec51bdf83fba11a99f94c3737f81db28c8e29fcf4a18a3db41a9bf3a6ee15471c735d704c417d71abe6e3c592082dd38afb87f3bd90f62992be3104a8215dd5a81be7a5134445f6199756ca701a8eda739abe72261199b33d1feb7ff2014c1bac15dccfa98116b0acf2101af2cfb8f6e28d51f73cddc6806a74e98a4ee03e4b349040e43e3c2e4a3e79d09c9770c982734ab2bb8fd653af686e274b492db3d2dfa7649a28b2010be6bb75b87032c6b81f1c62ce9271c5fd39280c30f7ccc71a0f78ee90ab03e234c3ffb912855039509bb371f62dd1f87f1c07105f83f65fc673ba5b440fb0103eae2dafe198cfa64778fb9ee9ee3d884dfbc838785d36a63995d2fa01b5b3783a361fd5d3dfcfd46a58f2dedb167bce497ec71f4679f866a33f2e9712eb2cd11da378bdebe85a7edbe696e7c73f67b9567e3a25291dd4c65ef6ffcc407786b519b076c35ed8c7142cca8550a5cb89d06ca0766103392562e918f184468a57a9c34d2e68f0bea8188b74c6dee6ebbf3cfef480569f29e4d89f4154f2c1149732680a5eaefb73190e91556f394548b5582a4928f1ed79d0ee56b08a19ce66badf551e81b94cd60ea7ef4c21dcb27b92286b8566f904f4c9caa86f170ab62b9a371e31c8b9a2a29057722f3858061d78502a8c45b5d965b3e4b81567051c0bb5529158a0c009bc352957bd9ca5c834c3f8a183e751fa9b0d46f3db2cca6301b27ccd8c76aa605e32fedb89b06cfe1b6a1e2113b0c5e51d2d3093f0ab4d2d0719c4f94df3ac69d7db095126295c7de3bf8fa0751717938c0d53e1b9ecfa6206f1f74837ba7b655afff71a7c00629b0244c4e9052e4d605be20b3dee9aab9f60ff7eb4bdd90b4332ef2e7308a73ea654fdcaa91eae2d4c66a1f870e44b4714f9cff8f76bec32ad5bc991cc68e3b3c58187edcb470bdb66b0c37e52f36f32cc61ce446ef420dd6d08f5e849829d6689521379fc0a09d9cdcde4d9ecf17d780329841e65e37f8a07a7dae48ed0afb736ac668e38dbee7f1a5298a18c196d13c3de520c8cf228ab3c84f8ec98cbe68012da6fd55b1960b480b0c01ccf7eedc6421e09f3d50d27d4df31da066079a0db595339f69c609010388b36a0028f26caad773c0991772172f1842f5c16c924e1cb9912a1461de14380fcf4a040f086136220c5e786b4359099743e5aab574adb6abe82553385da380d3623887139b32b9746f3928878547a9d56f7a315daca4db7875e1caa9e1d23beea286c250790586b3dcd4ae809182e8d69d66e5ab561b9850b3f2c6eaf2450da1ceca1b57dd4b7953fb83b7f2b3c295dff3c9f9815c333aac31e41196cfafa5f7c66a0d34af283288492d07b8d479e0a6e441a83c9ae95d3734d75dd073c10bfaca36e0cfa1ad35ab1d8ac5339bb3eee11e331b35b0f5ad575488ffdac87cbd80a61a602d35f086912b8a1ff5026e03341728b154708d75e53414d04549386ddb6f782e2d27a8462f76d5e7af61f3406ac47172ef97eea8cf113551eb39467c80987e2f1c6283f462a5d638c823a5204b4507d0ca8e43d55e0ae7bc14d384b92c303169d1fc438890e2a343a87c5b76d1a795373297cf78e6d3cdc54e7d7af2edf514c1133e546880af84d42c8fb72b98c69f7a842da7dfac9560ae672976b30367ffd6b19926e466b89fc0f44f306d7544f39f2297fc7608e02496058fa8bd974f0c3f0e3b1c2550e6eeed3528fe9944277d524439e4b4b5c6e3cade62de9dd32902f817b77a824c72c6559ca90834376749231e13764a5f361daa494ecaeebd02b2276a4702a6ad0644b75693804de2de5e06b2d4671d5c3f6d383ea3c07463b737bbc1a6088caa5e4ecd59ed4dda4507339645b7ce317831e564501761c3b3b528095340cb88bcff44d932715c98205ea8a8df583dc18831d6f4e7bb43c629da0a1f00b8e1a76be8e1abd3b3800b1e8b3745b6f981a674e1a9abfa1714b512497340c40aa47643996e4667c05b1392b18a7f6a0cd82a7e20f8588bbe30121408f46de47498f3a8511b0e4e5fb0e6534d9b2bed3bc076ec9fa38a453d320b5e11ab0080524879b27bf8bc1d5e0da271a418a9b66db14bfdeb696e008403414cae88f308982e1ce0a89a93cfdf3a2a0c32897d7a78d73b17fce03c2a0a3a5b3cd50ac6c37602383e8bc5b77e1f9910f61fa5cbbe8962251ec8d0864542763e4cae5720cbd244afe08b7a6be81e07eb53668d28e2a9adbd254651aa9a28de956212c44718a5d27b0c9e964258490d6a86e07d9dc113e64f17d6e7509b6e32c028c9db09417f3e8e1064d4c6e111488565469cb8fcd5054c70c1731054cff90a49f6ee77e20661bea8e725ae6d4aabb040d49b4094d891805cda5c8064968168c86c436d5d091ddfc7ba5b94383b33fb3fd40b8389d1cb1588695180c0ca1a14985cf3a661a25380935650312c78426f6f93ba3b985c95df20a9ae9fa2da4cd5a4f62b470eb2081e1effa4e1af0b1c9bf54d9bfea5f66ff6fa089b52f92243e7deb17d5dba880add3b88412f50272e74831393cfc1ac992832adb5153a06566bdb421af1e8546c102e2bc24272f28a1635b518001ce5b451c3fada472323276e8e3eaa7257a3a71d730166ed24c5475b11070d0a85614623bc33ac776787d22a38d29e9169c98cc499d08d42182fc10817e15cb4bb5d13811afcf319115bdbb724b9706c76699fe01cb7423ff6006e316c43f77528a0d2952f78e6de7c1163f7e7a1a105c28c02fde88feb6b847d1a17e8f6daa90bea275416a99f5506c28c50302029adc7fa065dbf89a001ec0276a9d8eb948d339016df462bbfebc5102e540f71aec7d0d621460840b1aec76057062112f5b7c23717b175a349b0d5d1b174aa1e43da7ca44ec9942613d17528d0cce0b56365be26d30de01c27502399eef4ff919c44081e9125ccf9b6438c323f2bd287304289a342ac574cd54af75acbaf3bb041e01e80322c0e24b5979307f8db4d6c3c1ae5f0afbe9396a3029254846a321e820bc19f889864b4465a9715a2cdb1b81061f8a64e324a000e2406794729a71708fff945d12262db37e2f1820918e4ec1e8c5d60ca1d0e66dd20108af2e36622de8699f94157e5ddba101817e3228c5bf7d46d59e532add60c75946a4598d537c9659330aea34b16e1e6a062c52b82755884b877e1e8cd68c7d5ec94a8598eb0fbf8688a345fdc80d3f27c80566ab1878ef18d52c3eb9fe5ec9530b14fb096b66e999a87c8e88115e184efd01251448beee871a20db5738600b5882b354be9ce8c92024d20f543d361cb998921516647a059368da5aad5c695f19b717d493cce0dbbae484f800b4ed2e2b5d8bd57215c558cbe6aa3fffac83278414fbd6b7c4f263360900f07acc89a3d6e348b353237c0fdf4c9fda71320f642f2a321110487a86f45260250f77d3d22b50052e5c29138f0512378f008d50ce1400dca77924fd90006fdb757574942920bbec0ffa944e2055203368be480cd65ec714620e98cd335be6b86098a88e3023972b6a71716573d41b4e56d11e5d0548b22bac8a355fb697421a0a27f02bdfd4d9f00ca4d8a3dfdb0d0b5674e09fea599568b0232edc074c57cd5bf29298e04c8c0571d9782000d946003b84334db326d6b4303fbc6ca107a006bf66366f479e50bf1ae90676e1f9cb330122d6cbc4783685e70efddd6029cb3af7f840554fb3e38a48bd384a2589832ac5a88021ca7073f0a2b7bf71f15a139a0d913ab7d4466baf274e0f3b58e3f1a916df9212a6559b30c561d762e92c1d134d9187c52cfc4e006346b8006dc917ad2cfcaa1ab6d21d4878ea83631e1622275b425865cc86e4e6ad7080c41bdc104048c3787f2509bb23815adb6c370959ce7501e0c68484b4699d1c93730adace0a88ffd5246c58f3d8b320d1febb67cc8bbc83c527744a320344195b6b27da8d34bc1e2bde1d4d0acb504af4ac7ba88f7afd03a8346fbcc99c9bf74dd12dc403d07ff9d51354b91f0973e9076dca180209882a71fc12b8a785bfc7c1fc36f20366a99396a63b14549762fd1005747369c4451b0d5fd779c3ea4ad797cebcef1596ba2b0be5cfcc92eb26643fa5bfcb3b0581fc04ffe9ad3f9f09bb1293e044d6603112deca72c58b2a43bac6625edef0565ff123bd2e8defa191661248a0f7ca6ed63a92b564da717563f759a52ad964b739c3aa02c9b839157955b53538b4ee08fe492bcdbfddcb94d6016c4d3a8069ca33c6cf72ff8d0eed2621674fcba48eb54e945690c2d84e1ab8138d5e60cf2cbee024542893c731e35573ade697433744fa2aa92c9d1ce942536f9637ab9c0e4c2c550d30412ab858dd40122ed9a6758234764025999c809f76709d1fbfa203a11842aaf7afe6bc86a56109ce413fbfbb25bf577dc114d284cec41e73d25c02b58de173edd9fbba3ad15a70b37d0eb532cb1ad4eacab635f0a77ffd5e667d606ab77a3f3a1a86e1d2541bf156eacf13998b345972052bc05800b222c4bd535c96dd0fa0e6c9d5d55de9efaf4daacc59d66bad9b920435079810c4aa374ab2b2926a18f9883bc5983d68ffe86551c22a9a60ccb811b06b1c20996ad66a603893238ee111ed2d47d7d372838ff293246703bcad9ff25b05e9498b1364f38fe6efc3aa9b985ae3a5c505a9a7fe56508b59011631d8f8cd01ed0e9a04596339310f17ebc861f50220b1b35d0be2892bf527a1bd1433256e45ad570bb463c988648d4e80963ba8de9380eb7c6aa6bb7056003751b82b843866ec39d09a4ba31cc52cbbde3b8273ef8321cf1c6b13daf013ceef7469a20a5a98370c304b91e89747cec3d0d4dd5cf579b42e987ecc05711692a978d052f45c819a09fb6386421739ba10d5bf5b8151d6a91817c31ff4bddaac0ac51377b33ef5cfb7cde7c9477ef6f78d44657a43e83cf455e43c323c2cf1852cc2f35242d2e53756b3767abb8c41d2184baf36ff0e7bd68be3851bfcedda7f6a92b9cedfc39a464062dc1d69b80baf3401b4568204e381d71480d594c5323ec081ae08589ae5b1e7d7b5e866515061d7ce5b546226a6779332ca4ac304c570286c6389840c843f69f25b58dc980f1fe37cb64502414c90691d04b40877fd5e969089942597ec7cfe8184e000300c37d4829da576e66b9bd1f97762245ec9c08816d9c6b40c69b674a09b92bb7e603dc927d241f6f07df33ba4fb76a5a144a6f08882db8c788c984e2b3c2e869e8fbf165c771445966a6db8a8a148c9adf526498ad76ca7cb516221b08ef4d473bdc8f5938a87a62badeba2e8a637cc0544fc2d8e0384a8ae91af0182c33dc9ebfce440dbebd56c15e23e543e6ab4bbc1c8173ef1075ed83973a386fed2f2595da485e23ba12c0dabea1cb010fcf94a2819aa95a5e96b07ca7bbec8c87e8096a0b224f193718a88c9e9754ad32406c92f1563db2df17e98c33495d58d3444360b9203ad15f7fdbee08ebb54f4a0b41bf1cba58c8ea5cc21532f7588c6b7951a2354f93877a69d6d140f2954bec6f34fe6ef7c6429b9387c7050ad7e5cecd10b713e7c5ce89b718ac38e32236c5d573c4f470e35c58a3b62bd248d463a9a5c148c9fb03fe97ae37de701cc6e7e2640a571df27bfe91dec82b39956a76346580f3c6cbd2df9ced8aea34a7bc1a1e2fefb9031f005b3d70931fc0528f1de23fd888e26af8be88085d915bc3101b93d016b78902c0cb5e57235113a069638b4ede56eeeb59c5bc795c0e7a8dd745cdf1beba0469863423fde9c4479031126d2f845c4ad675e4acc9a3ad62aeaf04277635f042a4ae851c30e2eb7789a6566a585fe48fcf07c9f33b6f6de1dafc86ef6875b6b9d6084091d987071f4c9e9071ff2b352ddf36149f7f4199bc6eae444ae0b40b9c5f8790adb62eb77357c7f84d25516337fb00f0cc4f0170ae17425ec40b3d9c29af468906bf8b0d4592868bde55850937df713cecc112e6acbef87c7250fecd961deb244044c157f477da2a06acb035ef4639c2ac229565f77ff735ac0c1254f3113b628af2cf7428625626b2b8bd24c96bb0601bba09b8d8d65a6e46108df9c3db45844f809a9012dc2b5e24d60d845100b3912bd3e007521a3106400c45e27fe23b266650e0941b9faeeef5d4789baae05c8983d85bb49903302443627343c7dc1c523b04c407769d7994abaf25361689640441679dd4551644d6aa8c71e37b49f5c6b0a27ae4e7e9f2afb51882dbb8a9d72b946aa9ba4d62ddb4d5f942e308c5201a4805220cded11d87192bcb401d78d869b5c5110a9496bbf12b321bf4983762ddb56ae5c107dc0a5e64ee1399c9b68632b5b34ad8d0941388cfe681713da18ca4c34e14290ec266c25056b745a3000bb08e346f86d13e56a8f6e116756d24db15a56a0128ce61a6fe09d51c81b8039395f2e139375e9fb8a5c9223cd81284bd3c2c83f405c1fb1a29f25933a6d834f447b9ccfc2f001c5ed7cd2547ec6270511cebf4f0f4dd2e6334ad9a4b012e62fda936469c35c23cf146acca0e0a29a35e3d6e80552768e7922c6b8891c91412cee6113140aceae8d42ad31cca0bae39194d9ebc70431636582983d8d44d77436f122bae1e8a594c60d8e82cb4a57c814e2643f663babe0b82bd2d7ad40efe80c524cd34b68e0ab5be4415066ea4bb4b5e4add241a54998c61a14920b0e86a01fe7743605a85a1802fbfd7151582c891a044959ae95fe63abe81b542b94fc06c8d5398376da5637d574579b918f176daaa70b8830fa52df319f93da2a5899dfa64753e007f58540eef6e64262ada6a9943f3055b8cfe553403bbadfe9dbb4062dbf78f0b0deb3de1f2bfe39d203aa453662937b0c63b1deab8c6f7246f6f280ba458c5fbd94aa65b6a1850c8a5b01441899027f986f119a2b262c9ff91a7199b68da8d866e2d69b34392bde66999fb482ad87d68dd9edfcf9d7af6a6dd85936f06154e2a117a417c4f551df1051e725bdfcca7c0ae13d97c3710d8b304cc2d026eb09b8956a26d5bf0bbd80ccc5cac67b04a0f14509a60315fff93ef67bb989805f26656ae0580fbd199b5e21e2a7b9faa071111db65a6132ef7a57515f1588b8aa3b4ab10f3cc1cf0a8836491288dce0969a5b0d662c59316ed9e470f72e7338e30361d24528ea04f46577a6194ace8aae806e811dd1043317567594a677ffa107886221c55c393f814d9bdd726bfc4e647416bee27f8f8cad5f2873c135798215ceda050a501a176d612497e9491533283defb68356f73408a6a85cbe0abc73138d960b7a5ece8d9e3e6ca6501d332a36ad504a130bd0d3fa80579c22efe3beb8d2572886d03c7748ba851248819631924d7ef080f966c83ea04bd53a17f1154ccc76daf4b3b8790f9e573f198534c6c7f318e6e18076eafc07b97819190b182512f0d6d2411906da628717dcb82d8af0384fc96c9631a10670043453ff5d9a484282988668dc68989285d944f7f44cb5c4ac0ff587f371cb358aa0352a7b333c9b6110ac796805b30ec8d159e9f4837970b62cb4a91c89d976406275936d5f559f30df154ec97c45ecba23f6167625c4a9eb2168721649d135821281c56678f4589a3fdafe3ebbfde9764905a8db133cd0e90ec80fcc0aefeaaea4df9f9353200907b43a2260e79f161d4da6ac9990a33aa7018371e203b694e27871cf6c7c94a5199f3a5089420b70e539870d867d078619917477931df99a4806ee5b3c5552d1a76998d4222129f64479a21aed8d5d3aa78950c8320ca8e87f06bf6a579740b22b252ce1c752bfd6945d3719d7b08c24fa96dec2f9d1431470063e3624c1b2b8a2546d30da9d9baee61ce400781b414625ed0806aa8c01d834817df0144e40d274abab57246933615079a66a87e722d11afc281a545fa6afa1e6351a4436f0f7afac19883fea6e775679cd386c7b4e053d80585417f099d171921892fa473a97a7fe89ad44af9867de489257201bb4f3863b26be010fbee679f140b938fe6624ebe8a439cd8377cd87f7cf501886f51ddd7770d0f571990350ec4ed58e573116cade8713b9f48512e9a46ecaac750afc562520f4ee7d2f2b12971ba4e79e19cd994b9c94e3bbd7475537e4a707b8ad701288e40e8e2fe244cacdc1e983a63fbcf09cd225fa047ed93b91d264e5200dae113ada435c46bbab19cd081fc82bfabc79e88ea3d0afcad68d25d5c07bde110462b45a88710acf4dbc68719643ef8a5b68189e0bb428d985a283b123c2b98a418c6cc7b788d78fbf582eaa9ec73b7cb71b3c6110bbe32d4b51ecd1e5ecf4b0e90e573669ce030c951064db8f5f0bc57fe52a16fe542afcbb655d28463b1637780e481f131a05c1369644c42c01ebdee62a6c5fd9bc4dbbe279e6310af5540bb42cb4e605552d7c2359fe15d9976b70e28e20378ee2deb13dfd691d9c5c04b65215dec6c95b8af3b222cc5fcd30c32f19bb774a9e8f259e8445203bc04a6b22267abc49e6c2147aca940641ae3cee17472af8d55c89ab2c1f5d09fbf099425db7da91bab6b36fb255424fcd3af9132a2ef63de38347d3a133f4dcf9e87a2ec9e375c8eef58146380df1b15b19c41472aa303bba4f38588d91bde02f64468fa0cd93b1c8b441be5142ec38f597871911e62c2f8f04b50af94a52ece023393843a08ff4023a285833f9426408c408f57b9e07f6d70cb6f519c38f88f04b81e8a683a157ad410619f0600cfd3fa34b674b509daf90a6ec7247dcba9112d107d27f9f56f8d81beb2d64af188688613c8cdcf7d7d2596d10a0888fac4313f51537225fe9b7de632c63b364ef60c6b050fa2f6c6542da042a19ca43199bb0188f35fcf21a0466063cbd3f61abbe929452407b50c58029ede2ca83d76e53770f00a3a994ac682ce8218b3100aea51eb2173286486f538911596ffb7d398b6b7ef8025a8f3ae563e88bd4bfc52d59bcbbdd0c8c2acb3441de658ad74e7d2679e2dd004f720e04e803f9032b6abd9779c9c78864d85ecba7b0623b9f1bb7363c74e46b1a5dc19446dfc9e09b2419d049e02474881456f058bad6448de9ada0e3c0213ed7b4c96bd4577870e04a3d24dd246a2ce1f65ae85d51b2759f4c22fb0a2b3d3fc37922cd400b07c83c95210d47b6c145d974e3779bf771fdf8c6d31352951f1d84c90c0f3b512b3b54793a90821164888a12956e5203b9f6a20dd0452b586964372f0ae98947945ae676891e1840a019d491b55499c23f1d8f4bae785a8f4402eb9c4580ed07cb621a10748932715380a7d70be489427056fb383a3414f93860ac105c3ca061e5c50e58a275a88843ac37326dc7451e6382ee40442630026a41abd7158e4dc83b6dce8897b54898432f7490d85d2612fb38beae0b40d2150599aef62e12dc242c8d4bc96f3e13f72d69a3249961f9207057c2284fc2a4d18d56629269053460d1845bae0860647223458db1ce2efa17f906d3abbb775c176c704ec87be574158611d6b53e8a6cac299855574cf86ce924f514064ada87021b3eb8c36fadc7596872c84b03c466bc0e5e98890cea6108c9451345b1d7fc94d4444dea327f2665fc51b913a466d0d758e59221128227c5e9525c2e88c4edb5be356db90af07cc751ebc0727095a1b774950a4f0644d034e6c1c04436443d5d3fc1932b94723af5d83ccc46e36a0445591114fc0525192022362842418888c52314fd0066f40671de615a5d8c73083205f04ca89992168438032d68c70d3962254c169411d3ca8065513b7ec559816124cc08940255bb202774f8d6945de43da4040c99506d8f12a504ecc0c411b0294b166849bb614a10a4e0beae0414513428b4e9b4f8ad303e24252fb5a0357267678df41cfef083c9cee6aa7f794291b206ac74c43714a4ed8bf4bde035dcba8f5bedc45d6230c338d1e7825d09df82ff0d1a173e1646a766eed20b09eb29beecb90896088f40d2e68a4daddf11b2a7ac6b83ef08a967eb1f9a8098aaf9e34403b0702e21e03f5cd00e249b3be882dcb16a6ab7085ca58d10b967a93ddea15981e0d77854bd2b57a591b4b6d5644d159c33e45c32c80bb8944a5d99235a9db5742b65bbdf30cf08bbccf2694266ff5189843ed29073c6a4a6563ce062bb2163b761c74de099d893feb55ea1cc7dc94e3fd61d258110b3ea75a955e8cbc6ea8b8e585ed51b4ce28867b396172a314495fbce3d150b6f42326f61984847f0209dd679b186ca9b2d21d0cfb53b8aca38e98f9d6aac971a154b69a523c3894cdd660c9cea53b25113853e9afc01e0f640f11a2d878ea4824e8027b58b6a97275c9e84e67973e452fb4db146d510019f65c55175ac4a472fac68114d1f601d3ec57f2caa8f1ace91be180d4f04c290cc385773f6d4be3e8d5a296139525ae0a61a0b1a4f8d63e24f2547a20273dd6ede1334c5c679cb93640dcccdfb6d49666f456fc531fd275191d4d7293c5cc0b78389bc652a3a9be69a37340f8af8fde846e27fff93c4ef779489efadd539f62c22107c2c95bda799577e60e7d4c6fadfa9a1a6d8ea82c1302d351f1ffd9ebb6d31051fb8b9d1a38b26e0f36606cdd0928de1a07be2f39217e3be1a9c6c4a9ddd52f279d351387a8b07ec8b225112a4f90593ece967434bb548b8549b5134f6c714f046c4d44c544fdd7b526f9f28a3ebc44eed8fecb8e72d837c96e19043652e4cfd2716f6ae1bfa3ac1faa64a0e58c3e18bd047e8db115853e03dd9800a51daec1785b2cc9854ad93a7b8a957c89e88d6e08eb3f37be7c69e0be95d57ae63e71ad268c3a9b64f3d05e1df127a9d87f28109f418bee1ce5ecd85b1b80f41b84cc5eabf72252c204abcf5769ddc02b38711549ca4aab8f66f138cbeb84ff6a17688fe7bc28a3b9f26b1992603473efdcff9bbdd033a9672be17477e6eaa9ad718168708ebbee07fcce7dec41a95179759e4085664d7c55648f170e3fa68206b3e29191f6568c6b2f254e27139bfa05fbd9d2521183b1cf5382aac90b804bcda66c859f08fa4d03dc812148a8e2d3d7f6764258c084f7370af449d7b4f08416272337930efaa5b370f8a73aa91ae08b6c4ffc55c8e6839cb10b2a30af006f419b63e84724d82f852e75b68528499d83d1f70d752cab39cd43fee7c6729606649b93154eb1a7800b7b68cae88df6bbd0ed78481e5d9dc83791b64ba6ea6aade3a18602893584895dce60219a7b7d59bf3b5b3e1e3f060cd9f4a5ce61d112c6cb34d941d14269109e3a109a3c9a0df8725b047516067583c8e2ef8b6a2b8333976c0ec464f6659f82b1a45c010d006f680d569aba4bb5351f226a2bd00770e6be873ef740c34425d3a11131b3d129dc03e87ffa2f349a9459257d8d88340eb5e13a7e3c67fc0f5dc3631379d6e34c8496961a1eb4553e8b16fe954911ee99886df92021c98d2ecb53192544e137b09aee105a2d6e73f176722c11b992f30310b54ea095a3c0566202242884c132cfb21e9fd109176f28e1e0f80da4dddfc379f67744b7e7db668da935a3e11d549f32ce59dc2044edd9e7a210aecf361745aad022ade82c2e7d4fbd7bec7f0ae305dc0570453f6f48377d80a0402285c6ac04cb5bc0e480507537a1e48d9414caa2aa868f07d4ab1ba3abd5a05b68b9bec8e6c68d61cfc629cc0cd434a3ee26d1f67c75875281a242d695018fc97552d8427886078453aa1c83031e56faa950dde72b90a80be1f013a9fbc2040339643e8c172144d283986d4e00dad193828bac03fb8d7dbef30e8ceb1e5feb3e9ce4265fbfceacac82762e47535f7d9c474822944c3a76ff20091070a8a72c8a1fc3c3c90d0f4907792ff4db917d97b879ff588780f9b1c828a1527d280b00a56d0ff8e7c0a124c3fb43d4e10410bb5872b9eb2a400f8c9772665758769cf6104d554194e9c529f987c186932c91b8be71653393b28c9addcff07c6823c1a79bf4fa5069bbb825b551a7481a519dc08f775b6499d313e611b2c6aa50784bdebfc8f8a8cc963ed1f95dc176dd6196e3bba1b1758827b45aab54c6b2c79da8e17e3227cb39959a6158bdbe3121ccb1aaab0e8edc180b822d36b08a3401e0078cc8584feed3828a964d29f96718274eabb45330cee0db69d40a07701e32ddd80376c3ded12855e45be18e802e91830108efd3f01c38b0b56921565199295767705d42bca5303355ba2613ef90d9af5a355741276ae2e8bcf7b9d9fdd168dc671929b67f7f2bac860e3d5ed9fde2a099efba38e14abc5a726faf95235df0a88967ec046a48a354646299aac35ef6d1178551477aebeaf6ef3581b84ce0991e5a5c1336ba335d16509ee69a2f9b56ae5a3d281e647a523ec765d85c2d181454fac04ec4307879c311a9789c388e2394c7ead3232370c4274bdf428908ba74cc44683410ddc03a810e19311139010502c38aa4774c25d1949f72bc9b025c587798471d3e0bbe02289500f3d8bcd32e0c49ba144fc1e95cd80687315429f6763134dacdd9703e854bb8095922646e1f71f9fbae5d4367ed6f568c33577ddf940684037b1b2906e3723d47570861137040f1d04918c8cd27979a6f137be751e2dac832f12bbaeb0cd517146161156de94a02109d320e98547a5879cd680bd601194164a70c3d3497636e1a64bde93ed77b69d7795bcd74cba4990e0bff52ba2ad024311665b167f28d55b03d3b5619e8bbb602ac98b2028d042b57ae03d320b5296c4894e02cb7e0803597e0fd0e3ea695a262b5a50b0380c91e028370b0a52193221dc208b2e437ca44f656a061cc4230a3ee30b06fdef7c196f6ef2fde181560f67fe7fa8fb5abfa8c65e61c1da653d8d3e556051c0d1e88014787bae2fe84b31beee5cca5330c763051a812638079e6968e8d27bb75f09424288754ac2a34398d8f0b51afe63b0601707a12c93e8ca5caf2d5736a6c72da9b30b2199c78b3a4d905c3c147a66a9c6923643352e48095a4de44c1395082d94bce34692b90f6d0b11a678258aa1f2a7c0003fc7bdce3803a1b0231c004b798adc0441f525545a54390a73a80c9988a1909afcb75e128f177488a315c89b55d31fc618653713a8835c63b654f7f896eae5e2e850696241697f72209c842fdb0505282a055ee2bd11b3296bf2d41df5b11aedc561c70d5173454a562c933e5d0feafa2bd8a6ce143c76c827b0ccc23f8e69c76a1b855a5218db20ecca9f959c3a1ef69e0636748c5ad0254d7e53aeddd094220d8ca956864338bab1ef81fcc521065b694b144ab01fe6e6534f03fd4db673406564a716951668ed311164095d0a38407555c5917585c5fc2f1c37bd7d0525084ba6e01d30403f2b3e3b81b2a4393da533e26ab86cdafebaede2e283254ef62cdf72ddebf591e6b9a16c364849df15c291c6ddac7d2d71bdefb0b28d6948d9d0f7bde7dcba6bf6947067fa8458327e50754466f53ed3ea831dfebd204494f2f05baac503cff35db6eea5795afeb52fa7443aa061db03dbd67cd25952652e7a977a633f1b7b4f96b849e9e92be587af424dd112943ac345cfbb190a1385a0638dffe2b8238a2b315f093c57b16c3e1df5b23b568c5a3ff83a4aa921729194c937524bcd7d8316a734bb0ca9cce048ec97cddfdf73010ac5dbf2dcc3cde4e5a44c00fed68a0b1c92466925a95064ef184b9510e763c9c17032c04405e2d08a2f6ff0632033f51de89356487113d62b22728ecccac5f9150430f2d7a859e179cb25a48d9b59a6e9c877953b4ba1ca8d5731ae2a8bdec2ca1045005db0d861222f650b23b56b79407f0b153ba5badc450311ae95889dddd66f7558a3ac704a4881c69eb178ae28cb993922eb2e682c7ffb3a2b4cc66371d7aada8a8a9f251310a2b24e111e45b2aff10d3a018392ba12763ee5b43fa4fdf404043bd9cb7a6c3fcbc9eb741260731459211056dae7ae30020c99ca113296f0ca755ab1e522126eff9f6a15f6306677c28f152275ce3634c585c178c2be9d831ba5dd575bec8eedaea11031354fbee6b14e1d7620bab96fbcc9d44bc02ea38689e2263ab6aca389ff8fb980dc68e03001851bfdb734530215168cf1ff2427a897ea685531b2b695a01d70178648235a1e8437b2cce5bd05ccfdd6b7e060df443387be13f40a191d86c1759374e8640f89e25f99dade991e78c545066773632bb2dfe1416c65032e1fbf85b56f3084099f9382d01a2a60c55481f6ad83ca6fa33ab7e43a0e955d772c165575d53ed4084a1cc206aca865d2addf704d447e9041aad0c951f40ec1c32661ca03a748df9c6a881d7f759941258bf6c5e901282fb71e7f81f4bbc2a1ceceb50f20484c28a862f73f3a39b6eebcc702e58c75cf0d89e8263f4936b0ce9c9db2c249f30afee063e59f24746c96b177d18de0ed95e3e311d804dba6440941f6e42de0ad07c9610cd5c8ca8d38721d1d407a135aedfe54510687200eb3102e80a3daf15898456fdfec87e9748a562a6d8189da876850eba40fe38d9b3fc9959a5cad5bdf595e3a15c6e05f9522e340a48f6974631c1670f4e3195e4e51be9fef06ab9f1fbb0b2228981a62c40df766bb7fad42e611cee1a4b528b598f838c93cb16fd4f139bec684528ea6011b87d4307b6751f9dd87672e63f840698e9b11613af2d14df26543e4ea46cb5b6b875c46e63ba3772f4c5dad1ffb6b4a2b99d2babaf8eb90ad04b7f0ae8b0082edba2c82a90d4a995b74eb3b98c49de2136ec846df9be4616598a0780baf5db94846da9465fdebb4110b7865a2ebbfc072bcf5e18daaf0f23c58a7ad9782db491b66ad5f19fcb8eef1be7c1fcb66ab287ba09f550bf96158fd4d7a27d045016c72c83391a4e8580ae992ca5ea48a1ac428db125addcd2bb3d874a9521737825707244e871cd35c0d853c767551adb77c35221dfe9f3ed1927982e4e5c2fd2b7bf0b907badc8c3131289621541e763a686b9c6908f4b847b549a63cc816a147859c4c56e66b40a1454d9480c0680d919335432aea336ca12931c5b1a91f5e5f181d5738772a19f5d25de7ee57241f8a860b977b3c4c16d0931bdd2cb444f1e673671825301d2dcc8f5eb134733d01513706f64d1c03d167b39c7965b9140843d77463e85a18162936928158ff418e5f81b47219c2b86d2d85d4557226e0b065896c5e977d2bdc9d5562c8168da1b6d0a0dad050dacd2920b245dcfac0f70314f2260a4ab1c3f3d0819e34a3f10ad4f2eb40f4a9f75cf26499fc1d128f176b10cec0fdfe7f85dac8f5b30443a73fcd30576710e6e8eff87b1740eddcf3cc73ff397e0b7b17e1c9073fc3eee5db0bef6dd239d19c7c4d58ff2fe0ab3a4caeabf892472fccac974b41cb4b86223e4b07edef48f9557845ae25260632f20c917ce2ec4e9064e97a46c9dcef714dbbfaded1e598cf74abdc416ca296736de8727e1938378150bb41064c74f9db9b29d2bd42e53fbffd43d5177e08a47cbf15362078f25d28acf79e8e81c7f2d25fd705541ae617cd78876fd01349466f2be5c81c6dcb7e6feb3b8b2e90a488eff24aaedeed65b72fc2416aa1dc3b81e0bcd2b77046275c353696245f30fff29aa7f6d77a5d3e95dc6e8f8b9332891f0c8af3add80b73c7e0463ff2c8adb3eb37e4f3b40fb804966999077fc6eb184c74fe6d79e46ba5fe782d59e4686c71bed97e17a554bd6ce23535709eb44a045bc6188eb44da6536ce3ee2f1d7fe50ab5db8ba278c52c101547204eae61bcd55205cd1541dc9786123ad3ce48633094e609a917e40011acf1dae195374471a4f68f9f8cce99b0a3d008122100088c0cb34b0f5bbe8284284b35ca978e6f8e8702e628c8e9eecdc8099e1d836d3b025db5d42a49432bb0c310da30c6ebb42dfe046c185029715d657fd375929eacd153be3c542094600450f8c4087d60c95e586a200d2832796b8821a5ab815bada1b4cacc189293031822cb470eb51166a922e8109119440880b5ab8857aad5692242841c80e8a4043410bb7481c6f13376186ab03374c21042888a10a206833d2b609ae8bfa0de781909ece8fefe74121d1a8f440fe837c2d126d8f22a65312798b9638f29a5a7e9e44dea2f52465097f54abe132539091824c14708bfe2438fa4b4a192ff052c60a992ec87c41060c326190a1824c1564ac207305192cc88841660c3257c89041a60c326690d1824c1664b62053850c17708b7e1976b334bf438e9bc076fd27696236c60459f7afd9849c0ef9a4d9d80212e4a5e5f90f28241aa17e5c37a92462124f3ad8cd6aa119358e3c9020a416c9030942b6f80309f2b5caffd7af23b6594082b0b44a788e35a45a39d4805bf40309f2ad1c58e016fd395c3d43bf7e5ee6b0036ed15f9639b4c02dfabfcc5107dca29fa4cc7107dca27fa4ccb1056ed18f2a6342805bf49fca1c6cc02dfa4d658e36e016fd22650e37e016fda532c71b708b7e5299230bdca27f54c68800b7e817953149e016fda13206086ed10f2a6366708bfe4f191304b7e8f7943123c02dfa3b658e38e01638e016fd9c32871c70cb1c708b7e4d99830eb845ff5862dce2bd5862dc027e9fa320b12c8a9e3f874beaf8103c64081ee2622a16f0e3d37ac60e223631476a5d678cb1ecad75ec769cf11641d72fa26e95eb43c997484e45d82c0c915b22ea668d8cb022aa882aa28eb022aecd42b59bf530524abeba46bf8f244968d7bf95a50b1c1b8776516620c762eb886c64b659271beafee5fda947dccdeabacf9f3ac3b0f867a7f76babf44bc770d062b48ef61f7e6e571e428fb49bb5c1a42cd321165a6716e2278b76e9ecca330c7cae659d634490ba964331bd5fdea7f3da6cd79861784682326da36b638e8998f6a05cd3b32cc3b5100bf7f16975b44bd3c63cfbb26be4a451e4a388e2665decf3e7b8d5f64c0c899b16e250fce4665d0cb6d5f6acc33759678b2fee05ea60dba671322ddb70922b06e2609b8dab91b68c8b916c1917eb5cdb6bdb5c3b06db665c6d93eddaee5e5c69ab89703351d7d9c43d23699908271375b0ce161369a46d7a895e9b4cac9176ccc4c1505c6d9b899b8b744a652611103fc1b898889f54d7c9896db4d3cbc7a7557a7db5da09e45c2512cd737128e0f722bdbaee64a43fbf9887f2601e87f454cfe93ed9e7cd3a1af762ddec8b791ecc9379af4ef6c1be9947fb689e8b035ddf0b7c7d5d0dc6b95e219f11413e037e12e16fbe070872d46babf4c767be24f6165bb436bcc7f7e07f1c856e959ef13e89f067febd99ee9308798f991375697dbc87c77b74df01d244a128fd28d86679af1fa56e56c751afcd425d50e86675249bdae7ea38325016d6ba7681b390d6f5f35324d23e634733c2c01a698c89605dbfcba471c9ba1e5fa6d015d248f8a9718db2f115ba421a38d6c69838ba4470a46968234c53135de08636ce361b5758e3c840d956a15aac52e2c8449b1a68e30a6b1b5026ce441b1a48d31137339136c2401a5a477c6d409a38d6c631f6195d220cac89a5c7ad50758131d9e771eb5b5f9e2c0c925b26d85669170906be6a5d8d737d2f11d045f35c1ced83d13edfcc7b75b2584de6c1ba59887f3291cfe5cd3c2fd6714f450a89b1cf9f9b5917be38319228d3c8481b1909c68189b3d82616e3bc449a0616ca382e51b379cdbafe98a8d9bcc2191813691ad80616ca382e71a6896d62618cf312651ad926847160624c33dbccc21727d6d148af50ec33f3669d082c04fbc83c59271389995e9f9837eb62a0373530d19b1b58e94d8ecbfb50f698467adceaf013e5519756e74db1660a3d6e81c837352feee3d3fa3c6e89b8b92971138cf10e3f55efe3d3127560a48c432b7fe3717960a559d7ef89f12f75621dd908f9cf7175fd1ed9ace447683512e5e4998d3a344fc765f22449c25052afeaa47caa83f22964ece4513c2fce4cc5cf4e8a9f9d570a3f49147e7a4e3867767a66678776765c27f9e224ec249f9f1e5987a471b246ce38354facc37947d68191328ec7c53db0add2e10ce571953a301029eb70681b0f4cd491953a31d0acc3a96d3c31d14ca406a27548d7c623ebd0bee37a12468e6f7a6622143fb523591329f1d34c44b59d9789fbf8b440fcc486a836d6e12719c85d1c45dbf0d3074813156347d891d966e1d69346d8ae1fb56ed619337d3330069b7d5fd2afae695d6f64b1ef477e7a68a0d92706633f57d720d8f720a8f6cd64e397f8e9a9815e20da47168aa1649b257a1028161a3fa199e8037b75fda23f4dfcfcc040b2d0a716a27d5ea058c8f5a185661f170806aaedf3330b6d68ae192c267a6ae0eba38da05a4716ce40d7071b1fb73e6f82629dc7add09b2197e8718bf4666806fe87f63d7e8d8f5b1e3f519716e8dffcc03ae2e3d6c703ff443dead2f2448f5ba131e4a737432f909f5c1217f9e9dd2afd793344ebf809e2e7acd5e3fbf30ead7f1f9f56f822f8e1e8e53d38a275ef91629cef4432514c7c1f9fd6d963c3519dff6cbe33aa8dbf21c9c41f61e48b239868f6117d29f422d20cf4a1d7e741229ae73fae51ac647a94c89b4a2f22aa91be34928d9e44a2bd50fc041244d33a9fd841f2ef1a7992d10cf5237fc2bafef3891da747fd59ebfa5197d6f373e422e1e768849f24183f43354ee2a7c825c24f51adc4cf918cc44fd2889344fc2481f829faf093e4e1a3d856e90d3f4932118c9f23928b427e8e407e8e68fc24c5f629927151acf5f1d3a7b67953247bd162b3f0cd116c5493c168b1ef4dd2ec05be29aa896f8e642fef4d12ad7b53e4da2da083164df0e00653b4700bdc70d43b72053141155bbc5b68a1855b62c851b5d1acc5093010c3164186b4706be43e3ead8fa35c5826c21c5880c26105ae166ef9f8b43c8ea2ed9a76a2095f20430c50f084166e751c15aaf5d6ebb4d2bafed3ba5967969dd8cd3ab59bf5daacd3c7a785bab4bc74e43d446e72ed50051126f21e2137d54235e43d406e7a5be0eb3fc536eb445d5a20eff1f193cbe33d3a7ef2618b5a4bbf07c8dc4d6ed7db16489047e48e4221416ee511db234172c0eb4764573fc2fcd139ae81cf8f7b0748d304eb1a04647ed3041ba999fcd8f604a21045ac92b7c6e456e5ee4dbd61eedbaa2f6fbe33c63ab54924927c925c6626446c9275d69bc56115b7b1e818632b3418cb78d131e8dbacee756c561120f78af83c9087dce6a3225505962a5ec2d0b1ec0e7907198a5c842c45d759dd82cc6f6695c32a4ea381be33d7b96d67bcb95cdbf6c89975fce2e76529dc2024c5ff7d642807d20447f04bbdcc6100a618263f090a7207dd06fd37aecdf2a8c02afc5540bd2abc306c0c805b9be8b118e64b3531bec76a8008c1cfebb86d6b73e3ea998d82fc9e81ec518159b80576d363abf0c220be1dbfd7b11473607bb876fc5dc752cc618a4e87127473e39a431144b563cde3cc827058f360d1d531165f1d8ba908db29988e4459ab4e7413d4cd11bfa81c615b857f542241668003a409a61c204dad6a5a183f7d7c5a225f7ad4a55552c1d866911e3fb896f829527ad2a32e2d123f4b9ce37c8a41716bb52349afa16dd6396a35efe3d37a3d35d28b1e756989fef3f835ee6689f849e24082685a4fec10fde85197d6889f228ebab4341f7ad063b0b655a032dd2a0fc6dfc14fe2e7e0dfe0bdc194440ae33082e9c6d5316b062cba09a6b36e7a6c8e9164114c5be3041424f762c72c1d6c907f406e1db3749881a624df407e37c7946f5c9bd7e6b54965f845367363433880e04b9a633aa69ec79bd82c90ab1085be71e9153637ae0e044b510524b034e844c7ddb81f7c5d7ee06f5d7edfc8bbefec37c50e580072ac535b0fa604703ffec87b98c4cfad33b7c6e71eb73a108b343c49a77007aee1053631feae82fc8dddac8d7fb7a4b9716d167f3398d5a1f83721c02bdca56023a4e3ef4c80591bd75661fc611624484aa563ba556f8a63ba59200cb00abf0d603b503b86a2e331dd2cdc82a9313005e7d0bda97bdc1a432074e5c6b5b5407e07d3cde2f26700dc62d92a1cdbaacdabe3dfb22037af8d6b6fc097ac6ed6f6a4499a7cdfe7acb3ce5fe900130f83e956e10fdfc0031288608afebd87f37eaf4c3b0e2ea155b88535d863bdd663374bab58ab608a55b009a61dffa86ed64ec774b3b44a1ad38eb156399c1f9d0ffd63db5229103b2e90a0884d4c116cc66ddb83493b10e4c0306c63b6efba0e0cbbb0db84edd6b7b209f177b969bb9e6d957e8ee3c6aec49ee7755d97bfeff338cedbbbdd51d81eb73d6f97a17b227f2590273a1104418fe3bcbddb1d85ed717bf75d3621fe57a2df12796885566d1ec87d188a1c277e22d77d187ea88909cb80416ee79c33ce39e39cb9dfbb0aa4e9d9b05d6f0f0f5b2a90e6860d5bb663f72c1cbf12b73aaf3402b95fd451903bec34c8fd799b26860b6bdbf3bcae043bb7edaefc3ad7955ee7caad33de44306e1b69011bc235846b48052e5e55995a53a58bf40169d7ef00b6eb6f800bb7eb67408aedfa1780aa521e58176e8a2d5df050bb7e05ac5d7f02daae1f016dd7bf43f576fd30a54ae56175d196a956a5a3541d40c5f2901a20edfa654a176b015caca977abdaad4aa95ad500543c088007d5851025dbf5d72853a852e5a6dcae1f002ab7eb97a96d968cbb5928d4c776fd271fdaa1a85fbb66bb57f5756a8a9f9f0bb2eb87762e10aecdf2da9315543f35b5b26fa7cabc9b95f25216d5b7a6d0ee7bf154efed3e30f554eff5d28efd56cf0551aff5d06e05d5950f35f9dc12c87a6bc81d75265f5b0257111b7a475dc95702d5d64347df0a8a3cd74b57ba16e5634b601a04ca0ba14ec6b10d51b7eb3f19d930fd5e545443b515d7357c415764f5b7a298866fc88a621a826fc882aec88a68b8866da882adb8aee13bb261fabda8a88e631ba2ee976e5518aa208108de0007774555b655c2064320811c54b0450bbf6cbab22e162f1658e16dd1565ddb8e11ce20023780410745485dd9123d20420ca450436bf3da70d52109246c210b6a687dd82051c0a10938a02d8feb05281001c80ab870849607f54108aa08e0100234b436ea8ab6a90b944dd9b75557d5755715cb43ea42d5a6deec83204cc858f0ce80e44d5f760d43145c084208604003544ddd56ad431ace40862c52da8a82be6c3a230860b8020950cc4065d12007214c41072c9a68b54e30c2128460850bc06084168602142e2ebc6aa00558cb648d031a6490451d9a68a2558206b9228b9911a488b5d614d14dc73644bf545453e8c886e9f7aeefc9b8822822ab125117611baea08bc27d7c5a299cf5a84b6be54db155711f9f560ab7462e6f8a29f7f1699d703334e1e7a32ead1a8f5ba17005a6445a47e9db7a94a72da548ec483511fdf02590ab7221b52ceb4a9ae3552de87561addcae7fc48ad49877f9b8219405437a698cda17d12af3accf1b4a61f8493a47ed295acfcfcb43e94972cf112b523f6e0c0f91dad12a4a3f6d0e0e7ad99108f5bc3f70904b5a4769e8f5a42d0e6a4b780d7ece781f9f568a26eda0215245bd6cd7291a952c494beaeaa228aeeaa2e5633cdbf593edeb627c39698c199a5606c9bafc1903e5cce0a7a63d49f6e4b8a706e5a02dfcd4b027d972c697936a56d225d1d1e5a81a957cc994b36ad20e4aaa2f877d4de22b92823ae84765571115a47ede9444452ac8fdace59b64fb9a9cd41c5ffea686457195a61595276f922cc72d126e72dcc7ad116e725014cbfbf8b4442357c47ed4188fe2b4a3d16b12b5a5d0ea428252921312ca452156c68f7452907a424a456f7bd25141ab8aa4ae8c50176ed7ab57ad5d3fdb353f49ea3942436e6705b1a454f486da8e0a22a12237c4763868f4b62172e5a0911b52393138086d69a5bc8f4feb067ac3f5f490aee88d1bef8d109b8a94a71beaa9edba15a9d1da506fac6bd74f52c3b5b1be5d7f0f28dbf59bd4786da4f0d3c68bf6c0d660e136d81bab8d1ed61a2bdcc67ae3466ba3add1da506fdc786fb035581be90df486db438dd5860625e1b4a6912b625554243591ebe815b5a135c49ed44e8aa244aee80db5a0b5a3a622ea566995eb806d95464774a45ba55daee3b5559ad5817656932715594ba927f4a2da932be2794bac4745a1a77404f4965a4f8b5a4f237644a49284d08f3b7a93e48e48d23b22f2b825228d5a92d08b564f28e532b5add29fb7ebff408c1af367f9f994da936a625177f679ee767d4a4deba9948ab4ed49359550972dbd27d4a47e4aaa083b7acecf927b4ad7522a22828e98de93291dad5dffda75299296b8a6b2c476fd22a9c935a12556441531bda6d22ab2964ea8492da9222468a90d9d5410fb7145ed282db9a053fa5945ea890da9a5f7734245a6f7644a4d6f8aaca5550425e13adeadd21e53243de9a8954c933ba2c315e1a609d5413389a8ad96f7f16981847801fc009e003fc4e94f1d0fc407f100f80070fee70fdffa1c1ff3321e943f63bccbcbf819bff2b07ccbcab3fcb9f2a78b3f59fff2341ee66b3cead26ae1270b3f57f8e9829f2edef32bcff22dafe2678a9f29fc44e127caa33ee553affa137e9af0b3849f9c9ffc415ff2267ff2253f49f839c2cf133f4f1ffa9127f9f24dfc14e167899f237e8e5ef4a51779938eb6c46216edfa8720403900b7eb1780dbf50b21f28ebce5085ba2dcf2e496220168bb7e00bc5d7f104098da91b644bde5e92d47d4d2248376fd31658e1f5aeb088a42cb5339b26e554b796a6bb45d3f4b49a2c2a8232eaa2d51ea0b4b45adca137b6249d232edfa51258a2d475c4ab6eb8f51be36eb447d7c5aa877bb3e69550ffb76ad9aca971da5a2b6eb77bb0ef1b3744f5a93675fd8667174f598a0a87779fb267e96ef096b927ecbddad4a372bedfa447d43ff725644edfa242d71454a94affc242d714b94f3f4442d799ff393d5047dde6143f75b92893abe28376cbf7c49ec98a24c504ffb2e093d594fd492f7c359d28f3cedbcc9c393f4cd12bef293bf8f4f8b05d5c0585fb42894b7a485c17a5eb827a8c97358d21416f48ad61604a365614f27d66d4b2a288c37e56571d1119436e5fc4c617157509456254561535c96560585f1e24559535a182d0b0cd63d4159d214960585b1be6851de9276ab74899644ded0fb1961372817757241a636a47eda0dea059d56d1fa59372328140a3a8952143b8242a5a592879fa4b7f1e6a90df1b347f8fd1fc69b2423f27b3c0e181c7e863c7073c43d790f52890f3638a9f32fde448dafd2637c0f4bcb8aea4285f57c0f2a7c258591be4851485010efd1f1b4b82bab4adb82f280aeb02a2e0f6ecbdb92aabc3cbc2daaca4a1b037d81b6ac31521b30d015f705dab2c64861a036f88aabf2f2f0b6a82b6d0c7485557179705bde96b4c55d5955da16940794e56d69575ca8dc78c161a82f549255454d415fac246c8aca9a4249da1495457dc1a6d2949505864be2a6d4949505864be2a65492364565515fb0a9f4c54ac2a6a8ac291486fa42255955d41474258591be48515c1214555a43e8874c37e89886d81be98df7063bda6835eaa725d51bad0d77b5b1d6706fac251b2ff7f1e901ed81256db035de12c53dada4231869e7c5488282524eea0886da79a18e242b282535a12395b5f36224614129aa89451d495fb0246dcaea7993651d81e19a3c6e89bc9952495c1117aa88e5f5b4b49c158d0a4bc2032a423d2d9c9555a3d292f0e0f296d4d3f27256588d8a4bc2c3cb5bd492182867a5d53c6e916faabc24278ce7e1718be467ea49de7c81f253f4aa13e54fde6c594bb88f4fcbc3cf94ff9c31520e3f4b5ee40cfdeacd15f7dc3c77f9963761a025ca7b62414730d6ce8b12500a7b62494730d8ce8bf10405a59858d8118cb6f3e24559535c967604860a8ac2824acecae396f866ca6b3a99442a31c54f17242cee08f7f1698df8f9f9120a3f79730535e9c8787e963cead28af1223c486eb1bc8727b1b7689d9e14795325d56c441befe3d302adacd7a869d7cfb909fb2a3ae349a90fae2812e22754847d79500fad0fa79325a4654be34fee8ae2e255d48579941e5e1f5cd85855d217b2b7c6bbf8136d6df0f387f56ca5278ef7f4a106f7a13d7f505b280eb70718ee03fb43da5f1c6d0f2ef761fd017571f4d0be701fd4566f71ac3db0b80f2bbea6a2eac35b7259b5b3a225923f2de135ad2536253141f914ae142cc9905635e1670eb4e57636478be387b7d5d71c2c8ef407b7c57635c78a03fda16dad3dcde1c3fb03db523b9a6306f7c1dd2a2dc385c7f0f169916fd732da18ad38035d79bbfe1696b0860ae3c2a8e38b4b435d812183f5c4703d2d6c4786ebf28a46fef4761d439581ba78918cd5852de131d65246ead2bef81117d4452d91a19eb8b8262eabca97c4605d5219eae9e29e2eeb1983e52e678cf59491bab42ee80beea2c688a1ca4065b8e02eac0c3686dbc2ca705d5e19af8c36463b638527e105c9adb0460ad3d2484f2f2d0db7064a038549475e581aedcb0bc3c2a0242f2b0d16e6855969bce58b4a63857961561aef0b8df5e5856161d0171a6c0d94060a93bed0686ba4302d8df485865b43857161d41797868ad27e5e5cb2860ae3c2a834541a2ef9d2d648615a1a294cdaa1d1beb035501a280cdb81413d34d897f585f3a969dad7855969a1dbe21a8d35e605627d51c9196847468c76e5e5bc1d772383fd16962303f5b8b03262bc315419a9c7a5fdb8a82e688c95436a5c32542ea2ee267cadef92cac09efc9714c56249ab779cd1ae5492a3794135ac75e58633d855ea61bd1d96ba6a3933d6153a62b9e98afdcc5067bcac96859656eb68463ac365b55ba559e86a9d91ce70592e2b5db133d4192feb65a9ab76c6ba425f34fc64ad2b7706bb4a5f5216bb7a67b42b3506fb51a778a568656bca51c97683be14eec872daceba7153295e54e63e667b78479573e2964663e225ac276ff2b8257e521ee5530fc98f3c6e8564c9732c7bff45bef4b8853abde95b4de841a8d18b1eb7c6ffbce739aa4fbde903ea2225d98dfae8e8727c784975d3fe3aa61cb5836ed677479683a7c052ac8f65e93f1ec29a78092fc7053f551c0834c56af899c26362284350929f271c0897c959c263563e855b9e245ce61d79394f3c46669249c13e3f45b84c0db750fc1cf118166f13334155433c468d999d1f2ee302f1daaa36bf4e50c51a5ad0852dda947dd5742fd186281821046e9003fb82ae01364c4c30965d81cff0822595fa522fb62c848ed77a0aa2997bb8bb1c3a7068379016d800d7376e81ee37adb96e81f0b7b7400796dd7f6510e077ddfb3e7fa52900db77bf7dc7cddc4370fb9077a5f9e6f7efebbeefb526662304af0b8ff0b64dab72d7da6510425415902c2c33ae0d63c74d6c60ec18bfe815e699c5dcca171619e0cb0674c7e6d83dfee994f79cfe4e8f796f577026dfa5b67e8ebfa8cb9489fe8f9b78257e5da6746aeb7fbd4aedddf56f16157439ebbdbf9c1f9729fc9f491629ef4dfcdf8bf8c318f30c6e566ee54fe15409d229fc5bb9492cdb0836c7959b8e821c62b6590c833505c0addd6e557e1c3a06e727446c627eac7338834040140422040a327c5143416260abdcd075b9fcb2e8bcceeb3cef7befe37d683ac5f1ef8a4fe70fb74c09007b6cbbc4ad2ceadc8f4a423a4b3749b492129dfb976e92685858a273b3f04d12ad23d1f4caf47533772cebddd3203dd28bc962a67af78f3f4ca275a449ea1e39e2606cabb8efbaf781103a18db2c126d9368a4dc0652e45b09d2fbfc66c7d575df7175d02eb502d2ecb83aa8e7f18e0bab747007ed00293bae37902689f65dd13da8441b48b3c3448d9411dde079a2f7f93edf196a255757e24eba42af464f723baed4dd2b7517b18c5c824ae8543637b47bbf3bd4fbefc5af045f5f20733605f1fde73fdcec0cf9beb203fb3edf19d271e914d76142a7b8ff81f6ae001dd7e7b90795d8d09eea55ee1bda3fbca1ad277e7453101d98c5ffe85823b3c1994e712699ddbd07b3d029ee412cec3690268885aec42016fa5723c1984e71a775abd8409a600c8c8158d0ab20e8d5e83b99c737907bccf72678c56a82433ac73d9eb556740e744d100bcf9b60169dfb6857e8544da7b8ff60d1b9cf80877f5964feb9b96f2589866174e73c17e90c6de8dc1c3ad77185c02cbdfae6de7bc1d605d2ecb8fa97c9ad2491a4370329fdcc8fd6fe8d9bbadf7ee6474be4b71648f23baecd32756feaa09b65eab8a900fb4fbf63ffe9bb3ff1f3898eef1079133fb717e1a6ee2cfde6fb7fb43e5d99d229ee454a96726b03f9a98e0babb87f6115f7dc879b248f4b9186295cc10d404a7ce378abc6359026ae918ff56a247afde227db2cd38eedf76f7e6efc937ded2ebfd95669a1539c5602e8d229cefbaf0541748b4a1015a2535c7e51e97deff77e5a802eb293488f358b447bcc75be2b4155a7b8ff64208c7f32992e7b5dce9d481e674e04217b1d1768902351c704b27b1cdbcb5dd77135906607b659a61dfbdc7e7310b655dcff68718f353bf66ffcec4e006b75d0ade25ec75671af3538b6153c1a639d3b1bf303dd7bdc22d1f4ea47e760ea6691662fde49332c480e7c7dbee3ea388f63acd2fde8b31123de39d3f74fd242afb8efe3fa144cb8c6ce7dc95542b92fbd4a4a705f5a42b3423212167a85a7c001ad734faa6dd6d6ca1eaeed2a7a48c846894eda5942aff016706c52697e4e74ee4725de4c5cfb669ddbdad96661ce731c1e04179cf864df0b6f548b8fed9c869b5f6ce4e6978adcfc609d16e4159dd3ab50c73770c273dd4048c7f5d96ea0841b8cc1eb3a2ebd32493354af4cf0f54af5ca04631d207a85afd077dbcd8e908e127b0bdd3c71dcd32037b2b0e6c1cc0d05a981dc37b2b0e6c1443390f9bfb1fbcdeed96ed7d0bbf7520fe6a99e137a85ddb016be18460bbdf2ced0bbdfacb20dbb89825e7968e8dd7b500ce37975efbbeec53d82dd6fcd0ef0f156751e3791e81d109ffe1d41d23f10b8bd4322e67d579aa2db3fef73b946d037d07dee58130052d72460ffc67b80bf7759c456714fa26d1638035fa0aee141c4e6b155dc63cd103ac5bd1548fd18e030a057dc0a4fe104cc09cd0263a75ee1297a40a271f87d752ecb847433bb9848bb9999f8bcae467b4934d2157a85abe8dc935cbdd2cf3d36495890b2e8dc16ba79e23622366b3ff7318e0c1d64cd6115ac823912be9e7fc4540c8109af8f70c89835c34bc50dda20e2049016c08f7308322bb3443d6e25fab5b6efca1ddad5da1e979cb8479c004ecbecde1444d83b7e04a773bc89edf1163a0bce2e57df4abc6d95de9b0aa2380233cfa1ebdf35bd6243afed9ae7ee9af9e531240359eb62ce190da2e8a1410cb2025fbcac3e25839303570e52f0291310c4a1102da0218bde79ffe40361f2dc939bf5f1ef846c81892f3cc71dbf8956e507820c3ba622074e744ec754e460069d851322640c12c51260d0e9eed5755de7da80bc579c210a41908210b090860165eba0854f04580ab2fdbf87b8210bcdd2e9987d25810a170b4b087a61e8691b38f0fb262f4872641142afcce72183e56508222a60840d1c6f3292df278385c545cb311c7aa5bf0fd3ce8c5680882274cb080cf01862870330ab43a73e1396f123532f3672804843eca840114460daf87d3946c5bf0d2f0c3dfd8225044924e8f47d26f0bdb7a1571b04f7eb30f9d40e0768165603ec050be8ed0d4422c96ef28f6bdd90216a2448a7c4100cc310dccc71881a09f3626213ae6d451a9470b54c3b3e731ff9337f02bf8f9c61d076d8e0f00c6bd2c63b786c8c71bcb0397f9944c2a9a84fe558d2b109d9f1a3b008ae418af06a7bfc1f5c03c479cce91889f1034bb84518a13fa5471012b9068f0f6018066015fde268828418a20806f0c835527945bfe6c51009284813d336a082ae5f93c50ffda0125d3f7782ae7f0b52822292d0ef02c3f8c02afacfbca25f88ce335d7fe8f60a884420913bfc829ccdb1e1f0fec5865e6d924ee1c8f14f22e1f8efeb90c02afd1d89747a1d2416d2f7edc7af468b57e0d020bd0aec17d8fb3e16dd75ddc618735f4aa7746a45227d1f37319873058ae09173ce39b57d262413ed0141676c6aad35c65a47c61b639d75ceefcd72109d4aed54de3be85eefbdb3ee74f7e59d73ce9b06b97fbf7ed9aff7de2c1471d03610b9c72620f87bef6d83a511265de42ae0e6ac35c622e707b2b99e70498f8675ce9988ed350eedd2cd179dd39157f493e05527445e314742b8c610a3aebfb3c93576e4155d83475ec11ac34000abe4d5a835a884aeff9363083a7e20c41036d89163d0f57b8674581ee88c83ae9fb344d7bfd194390538a57f7441d72fcea0ebff3a2e47918b90879899055d7f46015671400b7446f54af7ad2402ab68949bfbbf37b7be7173ff7ece357f740900b189c030dbeb97c07e10ec78a35ee5d9b7c320706890fbcb8e71a7e7bd310cd62fa449f3dccb8e43ffd0390b11b18989a97075fd386791dcaccde3ffd4668d4ffa375f64436c96cadb7813b73030765f3c129be5f9ecc21d204ddc04772634f2a11951e8453f73129d664a3d4e25548fd2c89f786924e2aa108ae5cd2a8a2da1f9f46749e3d7e5443dd16b766760bd66376f54875673d6ef8b4e338b8476531acd4568527eb3ca43b39c2df35ba29eda2f442adb12f49457ec86f06b922a714f696643b935c9e8cbeb57ab211efa6186a33c7f53af2629df632675f2ad4f7d7f5c966f66b7c42485f798212939e13d4848f8ccff3f8e19129237732af3bcc7cce993087dccf7389df80ce9e55197568e27bd0f3323236fe299d327817a941a9bb5e483aa5dff48d3614f546cd7291fcfaae34f346fa7ddb41f95bdf12e50b7eb181b77c667f5b43d7c8cb4eb7fbb666d603e2c8d3fddae837896daf5a35d6fdef3c37adc8d1a04f7a09bcfea6937690fbcf36eda8fea61376867c37ed2f5e59d76f3515d2078873d65788f19d127118ae13d44223e33e6e0a78f4f4bf40af8043c8f5fc033e0c7efe107de6366f449845abc478acf84e1e8477ca6137291fad3005f803fc0ef7804c860f953002f840c192f2f2f2f62f153c68758efc24f961fb97cea4baf7a17bff2265ff2278ff229dff91b6f6e940169d7bf00b5ebe7f176fd0a2079bbfe04b05d7f4a59a628ea5699bc246f098b00b5ebdf9176fd0770bb7e03a05d7f014ad65245494ddc474bd67245bbfe01b45dbf00d2ae5f08b5eb7729cb75ab504c3e2d51cbb66c4f5c00b8266b106bd7ff52fe5a82ea58bb7e20d0ae9f55966cc99ebce56bc2966cd72fa3fc92f48757bbfe5649eae3d30a3ddaf5b68ada34144241d94cb8127e72e8b65dae4d4b42dcbbd74ff1934b3776bf9cbb37774b4bd01417dcf6a6a474e96eb9edddd42edd2db76e5b876e9653b77643df15be575a747553d5c44dd9fda26b897bd536f5e6e6a6bcb9a5286fee93373b54f526b7aaf80c79c63cf926c7a6f80ce7396f6e6f0a9fd96cdedcd4c72d143ea3f924503fa37973b77c46fc245032ac4a07ca47e021f044bc047e02282e7f32e017f00d7807fc036a3ceb4f04fc8e4fc02be079c4e4f8f3873f5b7fd6f833000f80475d5a3140bc8e3f81f853e6cf983f8778027c01de007f80475d5a3af809043f65f819c3cf983f799907e2757c0e7efec0cf163f6bf0b3c6a3bef53f7c8e87e1270d7ebef093c54fd6a3acf839839f32f8e9c24f974f89c14f153f559f8af1623a01b4eb9740dbf513f176fd1158bb7e08942a948796a50c4a0ca97d50203ff223499224c98ffca0407ef80924bac7711ca7604117ce405241929c4ee7f9d0873ca4d875381ed1e3f1783ca487a48224f1f77d24497298c87948966536cbf290cc6636cbf290cc7a5d8a862a623c2cfb69623c9ef779c48f0d8542a72e56e0d449ec43f85b699eba11a73eea6d5303696e347cbd0692b33d8763c4a90f09351f3b62e9f5934e9d536636cb9c4072be09cd737813e810cdd2c86479c812a42c0b2918bd1990e6463b1f7adc4b1f9a488f3da1d804d2338e1df971bef462a9f4222f520a3de18f1fd98d65ee9cb034964aa552c9837b292c3d4d203d6287099cd08ba1d0873a1d0e133aa15028140af550c904725482c8cd86e3429e71fb5114b970fb916f747b5e2c37c075f15f1b15c5961b6e340c592bd63d642bc16db573dc4642e7361d4342e7c6d0b9cf41d0ab1d84ee41e029a8a08b4f83fc645c178e5a350511867ca39c8d7248de753449927ddfca0c6419877380f3744fa789f1701bd554605666220c4b54d1b9ad44155e26e3884364268ea9d37dcf6e1ba0509e48a4894e712f869bcda6d150e8394d4c88c322ddb9df36c0abbc53eecdcd44e75e5c02a95ff39f37b34c26ea8dea140ef06a9b00a7b8e75e549a190821166e0d7203e9dcef94db4b74ee3710bde24c5debdc7355e89ce7b9cf58e854c34c80577a0b9ce2b41632e2eb2d96d042af360c708a7b71eb9d14a499619989b0d442748adb1ad5294ed7f4eaa5508308c42590e37f645b538e7ca758458b5148c45590a64e35fae1ef96743913302bc7b08ac330527044900101b3b26cafbe7c84ce7d3822991bfd4c32f49b655b1acbb6b4cd129e12c80c88a5d024d3399f532f7edf81fc54dfd0916bd28f48dc46fa2c2b954a5a20bfebefd358c56559a91493db409a5e24ea1ff516a255dc6f2bc8ed45cf6b34df280ec8ed45ae751474aa14e1bc298adb8b6f01f159ae13455276393fbec829354ca7a55e42a7b8edc70f750ae3bc8deb994e711b5542a7a85e859dcda6e39d8ed91e88e1c9bcea95899bdf4dcf751be5a6e945a2a9cc6b8e99decc31d3e720e81487e224dfe8834efc536a80107fdb64690a80c8872fa237d9dd3ce5aa57a9cebda94cf51cd32b1189443e667d5ea46e15f7a2e73431a22dd537a0e9a620445ebf08376d1ef7f17f7499f861090d2c32583a16c3110d5addac4d02ace25e059d7b1874eeb70dd4b56bd946b10a9765b292e63ffccc2dcd46732fbe3f0bd1939b7eed0c6cdd885417c9c412dfbeb0e3f31a7ee6d6879b5e706c15f706d27c99c9722b8e42a49067f4e2e8fb2fe409794223d268341a8d469e90e7db88b6df6c5d87b33df9e4b6f9365d87b311e99c3fd1e69b82fcdef35bd6c478beff3e8b4a204d3a84d029ee35bfefc09a8668f198912fe6eddb2c0d376d3eb7cedcd288db8805cda624627b036d14c36dc402ee582cb32b0371654df8e2366e8d11a9be9d800c9feb3c97614aecb473bfd10de4def9ac0940f81b88c1804e71a1c73dacfd465c430f9028cf3b60cf868fe20dc2103e0e8d359bc7a1471d6a9cb085e814b7e140a4ca6d878d8e62c811b5133a95eae3866b3ea08fa6c47b7c52c582340541bee73de4c67d879b240e37c98d26716c31d54319ab53dc6ffc02a9be3d473e9773ff3e92fc48f2b72686e42fe4b6f12634af3541e8df7ee359d64529c8eef76bb3f210ade29ed3ec56716fc5735c14b82791645bb34170c109cdcac88efb570269ca68366d1eb734bfef806ecafccae91bc674abb8b773db09c8d7e9d668fa7ddc4b81854ca3f803bfaffb4daf3c6e1a91bfbe679e0ffd79d906611857a0c4cc164cc00533501185904d530214f06c868a2030810a23bccbe512410a1d3aec18bc90d9d714e0a0ab8083cf07518fff85db87d9042c85e03a361438b5dfe4dbff7d2492d6e4c6186f5a672888d8c4fcc43af7892f23906211766deb1ce7a1dab91ae014c77569b883ce7d976e56e8daaa1ae05538029ce2f28723d8361574eeb977abb8dfba58e6be8b406aadb5067514dc772956d9ef2bd7aed0596b9d7b58e73818075f6e839166e8c27da5431714c8cdd5b90f673e7461184fe73e048261f47702b205663883fec9bbcb82884dcc0fc6bdc81173409a5fff504084cfd629300107ec66c74437bf0c4be24dc0fe0d05d2fc7ecbc0d6cd2f3f0db2db5ea4418e6c2d746adb5c3ab5fd7e756a5ba26fdfc1f4cafc5e7dfb4e89ad63a2afccfdbef4cadcd0aec4b6b510f3b60489ee48ba4603697e68dffefbed3f214ae8d437d237166c42f40acbfa467ae9ba2e7ff937f86dbcc5802d89b18c06d9bd70ff7d24d9bdb66a7b8ee3b88ec4711cc775b0cdda96d82f566dbf2d41c2dbbffaf6b06dbf1f4c7cc31176de8f33de7a6f2e739cec5a4b41f4b66dfb1311ddfbaddcdbb66d782bbb0f6f7cf36fdb4a520adb1dc8fd9cc8260acfd35e57b2e894ee3ccfebb87208ad77f0e8b86d7bd129161eb2afb34f3841b6010c60f8c217bce0052bace84217441f88391073f04413627cfe304bffc67f90dad3e47ebd6916d9da3a3f212bc2080c14915355af9c70750851841178c8d6c4ec6cc4a63529ceb3d8306bbcd098d1b30c1b317a56d96ff20023a5e713eacdb18f7c7e93fd5906a5e7fda8126f95e94fa5570ee920b89981045ff27e9107bd74d0876c6c2ed7c82f190c935d805576566287b689e7cfe8ce6b0e427e02671de4d4fe4f996b805399efcf2e10f21a7f7f564203e2a61e770ebde88d26f941ffa95e995b0f7133ffe753c4c6e376dc0d97e6949381ac49cd8c83be5f2ccdcc83bea1c0437a0673f68187e02132d0d802ce0459dc2cdcfa4edb0a72ff26eae0f3ce9bb47db003ae6399169ee058b069131e0e2082c7bb5f90385b1e0ed82f740a6793fc5e4c6d4d0038dd44a7b2a6c39a20cace5f6c2c2c2792d539c13566e095edf9fc261866f3f93de50b29862996541364de6399714af3af3141d0c7dfffb2593c489bc383d83aa70980ee1b8eb18a86bf2666e43c366b7f216f41ce6964724702abecef7ef0f6fd427fbf9f457ffa7567b2eddfdc06fb3c2d8839107d203e81f1fe026982350c13eafbc12c300c06df0e05e7d0a500a7f69ba16bb3c0daee528057a01c302807b0b6b9bb55bb8b5ca97711c8bc697bbbefc895aebe7f2b0b905b9bb6551bac7568cddc5e6adfb903fa4057afb62ff4fd19d068aea15d7d739c15de3739758ec32f0490fbc6f18f6ddbb6e7b89c73c6b96fb22bc83afec076f6803084243aee3ab6c3d831875599e5c9aaedbd37471cbe795ae19cfade34e9d89359448cb98603f2caf65cfc909b22dd241fe4a448df341fb98725722c9257997773d5372788d8acbc6527fa0772f38b9964d79ce6c449cfbf7d8ea5f8a0c762b16dd3c4ec0d7293474f7d1f4992be87261d2c8d48f5bc3d7e65213b403d0daa40ccb90400ee23175f40eec79f33aab78edb5a20051c3e22fecd7f1bf04d71bfa63c62f31bbee11a18c1373f8fb8c48f35afc9996b60cc8f457e44e64d606e6f5788a20c1ca0573ffafedfe4ef2d6e1a7d9b2d9d73e2edbd5fdc7b9b3f7aa703761ef7afd3e9743aa02876365936e13da71445f1f3c649b0fd0cc7715cc77dd7711bf733db87effd4cd83df879bbdbdcde685ecce3f18c5ecca3f979229ed18b621ebd7fcd3da77cadfa50187a51f379f03f9a079f037e88d35abfe72da0f58bfc08116f82049f9f093fe127fccc903ef4097d4e24cd977e66e6f320aceaf0d02b35a54976116e1ac1e21971d3c3b91fbf4402b16c58f4a449face89de4cb17c2223094a3f439a017d89540a9f1402fd0c8955a20f7fe6f333188bf47f5ee36387409fb0d42cddeb902c83884db4d61ab33c375f5820ffc6fd11de9b67c79c03a5fe3dd83df71d0882a5891f7c1c1b7feff1d729710972fb2e6f47e4927360f722740ae31726e647786fe6e7bccf8f3198f9111f6f62bfc7b9d72adc5db1c9801c62b3b076c06f96f7dba75ee855e7376ea3d1b796be9127a1caf69b8dbe7de6e648ef2e8b9ce731d03daf3503c89de367f7bc3944f7f0f1cdee3d9ccd673e3ea743724aee35b0f13809bc9ff9beef03bf07413ce3f19ff15ef3e1cf6838698f2107bf2f731ca7719bf366e211db9b9c7e7c847ecdbbf7dee3f9888d63ef379dc2de7b20ac827fcb642e7f78399f41c49bf57beffd9bd6bf6d4e9233339afbd85907114df8b13844c75c8401a99fd42bfc1af8d131d7c08330cce61c2875eef5aafb3a7e04f76d95fe8e53527fde2afc3a88b8fda8f558be4ee9547e91d363995f46ad0100ee9cf320876be0473f22e43cf8db6fca23381c0ee7700d683e73fde3efbcd96cb4e61ad0e8cf9a37d17533dd7b5cc7753fc3bdf8dfcf88de8720df36fcdb8fcc752ed828209af831deb8002216a5a07e9e82ebf514665b6ba7b637313ff31bb71aa499ca322ac076a857a8444a565616355468440600000005b31500003014140a84a2f1384e823856bb0114000b619e768c6ca18a9318492a860c21440440000000000040102400db9e13fff06ff00ef32f9e650bdc8a613514882bb9e782ab893030f4e4ea81fcee12578328e6c67af0e13d7e330b5ddd3857735cb09980d03e127947b2619609795f486c77af86855ec6998f42aaf0afe352abc740fcffac4b1b9744059e2df2603fd31efbd8d6eeb266596008cd2d15b9b3c0b2038687dec96ed8025d1a6e0cd880817634a54e02099bf6117aeeb7df48e2d808e097c694890203b78661f49fe05414313d3001ec688e4fc66608985fb4c1d1c8ef16ff2b666461c6282222612fb68310c957f70135b872ce0ca00a8094dde414465f032c64fad93f23b163b0deafd7bc1faaeeea55d7ba5facf54a5418448b164b469d90413e93db8d8d8310543fc0db9dffe85b7e1c001fd5b8ca37e23c19fc9653529baa90299f23577d962fd2b5717a68211d44c081ea0e243faf8992df1d811af7c967b86ef3dfd07aa16787347af2d0a474edca6df418c7a2f066e657be3835516bf0e16a1e33293068ba940657a17bd0c96da87401e010f17ce8716bb67d75589d21fd26d9ebf84bdf8549286f0f4f683812402f9451cf8f6d5c1043091af89a6d3470247bc10372902c930f6884fc0ec8d7e3f6dc57c6939e3dcc8a5ba51d6024851e8e4760d4be5b0abe93740395d90cd32e72ad1c90f6e4d5c11e0d0cbf7cf908767a616488563dd53abf1c1c52fd794daf6929a8ddb66bf2eea1728c8930309222becc52aad8c2f341f059125bd053aac7b684f47471251231dc7b0c3935a226d271d50ded07986b1ea25a9453756a9ca1163fd5daa56cd81b78989e7d507d12601a16af3060cbf070d9ec96feac6f61e06c6e2b590247dd5e7faaafda3c8bd6afcdead44ac776a876a7ce49a847858f2f59b08079ad8ad4f631bfb69b84c32bb0e96903dee0a3bd8f307820ebb80ca67b10f691d53a44c6088cfb92214d7c8360f324bebd1ce482c38158efeeb7c3c7a966c63efeed402e5b576ba45c6eda872b3db735c2bc9bfdedcc6bac81fa60be00f3f22f4c2515db28a78cdd78e58baf80e2cd36c877a21cc696042409e0506233c43b5d995856d2cae72665c60bf09b02c9194918ca1649ae9c9db7883da164b896c796eb9714866c075661f28d149fe0cb4818898f4b880f2d4cec1339a7571acfd3bd811626205f5327d7074de9f3c429b7e3c2046509ba71fbaa4fc279551ff3c2e45bda9fa46eb32dbed4dd8630e98b96d391cde8e912cebc4b261fd5d1f9166bf5d498e1681bd252de6d6d42ed6e90d8c40975e9a21f638d6c5816fb4c7235c768803d9557742b1261671199e5590ab85e021de68d180fe160bfb5e28ffa60ee625cf6f42efd3abc98919b34f48e73c48c2473a8ccc63308139062c3e151988c9685efced26d7ca81ecf2032399815b01e41b32740124d39f74c4486d2aa97721a53331f5c0085f31d234ddea47fb68e9ad8daf1777bd69a6498b7fe69b010a3978168104d7543a72e94eda53626375d3aff63546313fc698ce25701c2fea7ccf03c5db10d7af389d4562462d3950aca59318e2da04fc9856bb33aaf912e2ad29501edb9efca878fb53faaccaddd6f5562835adf3ac1961ef0f4aa4702b12e27f26e46007c71af2a1b1d368424a76102f37bce360b60b686a4b930e771c0046cec00e159926178c76984d14ba2d4e6169ab3ce4a22ab7e1f34a6086db832ca2d4560be6ac23eb5cb4dc139908dcfc4d8ce198e8ec1be7ac92f751e451f7c284619815f6c006ad902b1ac1cc22315730f29d4ac08ec8d77bb784ed806b0372b6a9cb95c04d8ce3086a1cf1889f9921ecdd4866e2f5029997956461a79da4e30942260ee4fd29e1a3d667ab241ffad6631003ed9f7904ee44ae40a6420b65c446d784f36d427524f815168d5b1aea79ed2c07779873483e7d542675e522cd1bc5baf6762a43456b49587140d8ec93cd20645060905f6f910387c7c836294cbcd2894e9dfdd4b8eb6838a9c5efb31e2abdf37458219f45286b13f1c61cc19538fd842f02fc96ac745472321bc7271ff994f7dc72c2c024c7cd5915139682175a909b329cb9d30dd0bf4e3226ae42aaa52ef4196cf1a632497b0f928f9b90e5174f8b454b579181d5334b3f037fb09692b596ad119bcaac86547128d2d873e4eaa5d9685c119856e3d9b55986d26883ccf6e74cddf6fd318f3fb842731f18c3cdd1654c4ecb276bd28aeb8d56e3f6ad5e523ffa2e48bc0bb3c9b23b8b9c50fda279859832e47ef0260db5cbaa326f66cc2b9b97c0756031adc77466d1c259969f3ef0d9bbc744e446a59c5a8bc534c11a70ecc6f7c3efb23aa4b2a26228561ded58744f9e6eceba91e98545c4d28bb4ac315188b902203ff3631876377aa05b4ea75b41fae1c6e09019e9c4104307565e2d1ece13c991f3fccac364bad2a3cf00027b46b6806e66a6b8d75be9b5e552a405fe2c4f132063907ba963314daf53ce7d5221dccb4f09eafd174e2b5481a6604604eee88fe43dbd968f922121e3b9d21e84d61b4787f6ca70c8ddb35cd8e22d72b2f974a500862ec563028102e77e211736b4dcbf04c6ee8ebb83d88d5840ac733d3ea4b8abc933f33b76e03a74898bc49af0b7adde68d689a386484bfe41892349c6490cdfa1d4c520653d2afe92c01a4a7afda51cd444632c32ac147c6dedd467f843a2ba190b36b5aaba293bddf2e101876faf3e29dfa14010d46975915b0206661b5fa01fdc1a9b6ea0b58623c578550ca40b9c48c890eb67cd4bd2176a9b85e9a82183f25aa37deb09653df7634a3ed633208588d5217e2ca55c6ee4e1b15c6a4f34b6db66b268e5e8ad4030f7b7533c3537cfad19380367124237a320b29332bedb3c493d2be4102f016815694d661189ace63bd39525f945d73f53dfea72d557c7ee07200870b93b18c7958f773de706fc0e121ff6d8e9b4aae1e1010b19193072a94b3ebdb881e561dd1dea6ace43a3f1038075c4b023b8cae5f10fe28bab00c470ecd443a3a1ba13496f911db76be787fb21366ebf88ba0e0fc7af538d53b74b1d1c5d60b7ff677548a0ccb390cec28ec5954815df81cdb6c7048a0590e935c7d5c4384f873e094700400d0c3d70a30018ae05c55325c2b20442d89c41bbe77f8144af4f31b8e6661a8225b00b815f93209e49a2babdf6367eef7d1072c5561a9243672dafa5e1c51514219173bb38e0ad6e904d6b32107bb114a7e62738b61d3518692db266dec28eee97a0928cca539dfd19f33df709395e7f53c9b003728ba23277e60d1c3c3564b4ec4405704ad7e6e4e51d5a07ee7143ac986608ab5b0224ac9917bca3dabdf192eccc897df79bafe6ad82af06a4ad1d1ab90b81fe91f4c8f56e27c2b1d29e8938818152f7a162e832e098be4088007e41ac58b650c455ed2e4c89fca99b2c75b780148a9e34f703ad63bcdddca814b0645a72b03cf5b889a45cbcabba30343bb7e3121737e380592597115d92ae9f2e4050260d0fb4521f655290336554a3ddecf76a4723fc04791e51a64184851ae8453f91c35d8161441e1d2ce054019e014a53126c291c22d279723dbe1659010dae63083381ec3bb7bd2ebfafd2b3f97c3346220c3090c0d114469504e098d9bce2512291f1c6740df2b908517217dd2f4182832729f0c56a17c4127b5bfaca188341243a171c0667236662fb7c88586fba9a85f2a6a0e09a74ca05fd9bf5608b3f40b54612012fd5b4210edea5575203f157dad2c03a17bef389d5034da1247538e2e5bf728048bd8528b18f5d41e2eaae6a945bf8f7d7f5de2729302af9024860649ea9e4252cc0cce8e3f380eb5c317dc0c26390e123a848a57290b0258f454b15d957f62d0468e38421d7e25a50afdbe4746fbda3cde4a1c7edc970991878a443143c6799eca91fb7439e0b2ec8d8983471386ccbfbdb9c8949ff1797b48086292b2c399c530901e3db28d6f9ec906691baaf06051a3009694d4744437e264e02376f0ee159dd2a45482a518694b3ca78752f94f34663363f655e069d2c827efe73ad776116cdd071b410052021c814dc535988ad48eddc96f9f23c6cd3a71e4382d6ac7553855c9965658c0426df0b69b91e2b27b93963c4b9120e5059cda5c8243c3e85c85dbb240c6eae62b03ec6c54cadd3339692ebfb8acf9e9d59482b580bfd72debc12c696b3782dabf4f48c6843c4df63042a47833b1f1bc9161cab4222102e4083a03ca8a3426428a1d9168f3591175d5117ba765b4d49ee0e14383e0bd295c1efe5740ec841b2e966605650cf27fbf16d7f5f287a52eb3b8b7272e95c0596573c5bd5e29a8f841c5152a50b3fa581d671d379e083e98615542e4b1806e1a20c5bc9142d1a3b4713c862e5dda74385026144cc219a41ecc047427134ae1b6ec2d2eb4e3a518c9372fc6ecaa80b0d1f600088b40e666b3919dd3fdaa777e257015b3da5eb17a637482dd90768d63be9a54657f143a50f42acaf729690cb85c9b268d7eaf6f82060a154e291b63a558bf66968c86a8f1d80c9a68212299de19d89372560f6091d58233f47dfb29ef9dcc3d4a545790ec2cf93013c1af23a38a065af232899a479400469c928878d59b7361ae2214cf0fe31c132054529801649973992f9ea2a63834d917c50aa0f192bb5e9c4228bc46709318a46b24381abfb253f93530e31d3e56a6d59de444019b27c6233890b9dd657600cee88df9fc32501541ea98fbb2cfc5861945ed23830eea2d4d330c9390aea5effc4f3aa80a821d855dceb1b24f64899a13c85d7ecaed0859e461b9703bc40f2bc45c4d3a948efd171cbb6761818a7eaed48e353b303e7e395103737500039cfc8cb61a8c1c664c6c684b5d12ea323934db840242c37190c6c81e31650c4f26cf8b702fd232b9f505d127a24b7d098a9f42c38b746dba1a4777f24d8289bd0306064c8ebc5715281853076070955372be7c18ffa95b7378a9c27409bd8f40a02df11ed1ea53d27d2afeab5a3050395c8048ad86b53b6e7f185036a753197a6d0fc678d06d0d56fc22f92019a276acb53d0333f9e9ce2e4f47b426ee4a48aa559001c49311efece1067209e2ae0092d47c0a8fd3c99368849f1920fc84d58d2978892d10ffb5c1d1d9bad6dcf8c288b8d53359e98f2464bddaba70d1f656a853fe7aa915c40da21df7b48f82f93844b4b965793b6c1b3acc4579ca26b9a48363f925cf6cd9a25c7da57fb5b5c98409ccb300cbda133c20fc4adbaa104b30b09c281a3299d44b7ddee4668f9c766f0fddffbb8e954f58e5e170e704f121a41c47c16407aa68cd8cb5b458e7b5ddbe5f4ceec47ed9b6e18e2f97d43b3efd979153e923cb5f8796c0bf3507da18112ef21b17d9123bbd17539a59d0a8b6813d5a0c8e5040152483e134f86fcbd107ad372a0389ac5f411438e8be0789ded96e22148593c00bf0fff4eebcd718370ca049ababaa2286f4d9a85599c0cb60ebc1d7bf57997abe96e22b0510371bef22d50dc354b04af9f733fba6e937deffb5a924da2e1a74ccd1430c5490be338a4e518f711c1c72d565177a312d24cf3d45709425a0e12feeae9393f7109bd726e5daf75d67a94b10691f929a3cf1cba53d08ca3741ddb1c41b4f4ae42ff5c1be5d4f039ffa08215a957c074e475a1bb2f2894bde36a359ca4c44f7369c6703c852f95e28cd6132e3327e36c2975d35b182c3ec5b2348da1b188d923f657afa6754c51e66003e4c8a9d4367cb4dee347514751bad23af3cee1e90590530f4737c7088b5461249a030bb5a9e1ffa5e611d04eae9c3a2b2714339ed6a2ccbbe0386d9e78835cabbd29598651175c04316995c12bd6a1e81d5ecf60c4502cbc9a9229b7bbd87cee0491079d55ce0c894766a198ac2f9161d442d186799a99b0f2bda7f5546648ce354f1ce673894c11414dbc740cb8629336f512362ab027a6eddc0100bcf1a35a2e472a74050269253d6f96bcb0e920be00b7f615f35bf2a53d311541b0a97b951b948cbc7283712b944084d9c327d54b0b17d326019794863e84c11bdb6ea2aab28a3d3cbe77980493e79f06fa07441d76337dcdc29d0c84e62aa8e2c90849183016fa4d61ee0a083490d0638ede345eb077e4b8d447de0d34f6ca79fd8423fb1cff47b3421c323b1be335b51dad37edc273b7e7c3beb65590b1edc0655eefb5a7a5a9f02f38a08174c8807b1e705caab4e9a2c93a5357516cb3c312adbfe185c28a5a172d84a8db16a43109cda6587dee286031a2bcc900ff598e598e774a0099faafa32324b955be83aa3dc1f49239908f1444648e79b46c87c195152d6baaf440063b7ef03450c397580bbb1efab04fbbee62ce7e98de1ee8f3660270f65cded241840071e25c854ecf04c86a1daf96f20c360a35097bcc79c4f0e322f665e64936ae09026eb0fb0b32a413532ffbcb4032037c3ee134e7daf61ae532709dc2cab54cb939433988d219f60a897d895f7cf1618c92815b8953cab8550e2e7584290065b79b3f6db6df56330cbdc05570bc114c898901441911907bfbb54ff655c5c67ebd0b20ba89f2b47e0605eff529963f6716a0200c5ed2621ce479401ad1b730a656dbcb3a23289335032abed0b758a30764f928760eb208caa7c845a6240f146d1f13b98cd24f4c155ba5f68aeb29dbe87647adc0e758cd519024a3bd38d8ef0d3f8fee9c760109ecd30cdc8fbed0ac52c95d902ea4201cc1a87a5e92823d246f0ee309d218ebf3e6a51c795b157d7a01fd5b92019d03f7b3c41b018f6f0fe69396ce95d53ee9067ad41242169f1e8e761fa1a5873f3991c5a8dde3da4c45fb8a5577cf9dadc73fa43c0fa5e58e8cd31dd978f6d818321f61d4f38a495ef29080c91cf4e976e2c85c81147af2c60189a77acc50550947798a8ee1091b3cca9452af2c4c0350fd92be50ccb4f4a25ad718c49ea2212e4f8a4848afc56757124354ed2026dc3408e57c1de767d081c8960092726eed8ea516081613471eccf36e96a5407f78279689b06419b9c37b49714b42aa146c90c20f309b04cb669bf424688fce82d0942bc7db3707a87babab6e9fcefd36ce6e080219acd03e3d63e4df9fa758dbd76517cbdf1cbfe163402beecf75730f0738e9a07f07dbda2a231d9ddc54031d4c3fec45bd353cdbf92202c1646e17e0a6209e8e978a482b0f84e11aa094b9206e33e270f11a953365c7ea2ef8137229f005720ec1fa9608e1c1c6e181df57c99cab02ebb1828966098c5c78866e1706444cb40d9d4207cf6a273adf74e3c4760811295614449e34408aded1159098ce9259ee4b5edb8518d4ad0d415196ff83d8c9144ba9b3a247f8711a78511ffdd1c2f9243eea29eec8476efbfdfa3aab90775a0dd4ecc9267e7c12fed658feb70bc86be04f92d53656f484c936211b2a9b777b615533b8e50f4d399e6f5909aa8936758854bd263dcfaac1bafc850415f5669646af026bdd3f2a39c8fc6c1a001d52995fc7060bee884dc1c9a5eb54e5623aa6543269e733949f0cab171ef901f6213529c9cf7f3937783d0147e9cca037dbc9a8fc4f06084949e98c0040f38d4d9f6b97d0491af81cf4847fe1742763dbbf218f2d18e9b34e8525f5c07cbab1ed83a45ad2481ea1326604aadda8a0918d00a3c04169fc67c96b69324b5afc002508047d439df7d737d0b22adbfb1526bc6650aa443e883954b8622d952c1e82b98a70d469aa98c3862b7fc2339df0af91e49977346557f7fea50c23868ab0804b09c358745ecc31371c037eaa56dab48bc373729a2a5d57ce1524bb80bc00d57b667518d08b4068686e9fa54e6dd932b722aebfb9052521721d81bd5008c811f4c610623f6b2d537044a939276235ea0ea2f94cf9f6f399b759bd13ceb43a0129f6ed9789f41863723f2e89f1dc6468729484f5a48a0ed2b4b1fca4d06df379cdd7d0846020aa7020bda90ea9aec47c8de1565b9eb2c84684c89723b4e7fc4b6e1fe3a84de6cf59c60f551d4a59984a0bada207ac5eb52a5ee20220b4e392549b9f7b24d0a154b1da2db5c5727e134bc5594614e93fa56c7fd625766f7f5ad41608f19833b446f2e011b291340abea291b5b75c802b2b2c3ae08ed11c888d3bdc35a0e309a92ade069886e1517f63078770ee9536aa4b1a60d194d0108a7e1c00fc6c3fcc25c3b28dc66c7f6831e336a480cfcb5601b3c0181fe6f26ba8b6829eaa0bb6dcf9fd5521cf174d52987d92762913099ba7b51432410d71be73a5faaa485a613d55d56a96be80b72f278dd703f455a000ee6601692cea8d63739d0559066dd99ce4752c396b66759b04ed0ea2edf7d9c5b1870fab4bd6fe7d37df77c9ed869cef6c3c1e03a17e0db7faaf8c239289819c4c5fa44fd409a38d6ec37e0b894cbedd61d6cd3ad0c6697aaa37488767998a6d843474b559ea15cd16cc305876a834b8adf135d8a0db442ee63afe3fb1833651233f5d780bfcdd4200928f2c7b6f19ab3330ad00d347bedc3e6234d453fdc87542046df5cbe3bfbc17872aad3dc87939cd189c0d367f6d2e212d229c02d99261dc6f55d3ad3421ef05214938dfb79c9c2acc5e51d684630bb269e0b8d0e90c9640549679cf750bc2d1c11a61d84daf57c98a2bed1ab7c46fed26d8c06c2967687f4e1e20b4ad502c396a8bb07ed2cb3a4c014fa70cd2ca7159cee612821373ba8306e6f834e0a6147ea2a6d9b06accd4f25c2b025f369a520d7929acba7b6a89239d0b88400986d3a738eb36fb6d1204e0e5065772baa9ed42a4aac49b804883a82658a6a468432ca7e3b088b1a14841528271f444604b0168be20d2f626a5a5ee2178b3aebd0927ede86a5f78aca63547c2362e3ffba1705b3c861aa10e413dde7d83306d741320b03df88317cf39c9ac98bb6304f0ce96f883e673e6e556a7e44ec7df3d94fb5b3a1eda25c6ad40004deae429949aa8dea08843ac7eaee27e05cb55153af14272a47edf7d97a1fd504de2ba5d3a476f8640ee2737182aa5dd08f0f7481c1bface9cc265a97780c7a87ca5f1c96c7c0b1f95488a001fabe456594e2f20c37693ad8eae93193fea8f1afc70a0a3a91b5d522991527c36b5712abb11c4f68c161347f4417b83d264e9e854e2538c0a378c492ad9885812d1e45e8cf0affbbda8e6abda1db51aacb821741d946d9c680d7d7aaabbc3a8c44e27b5309e286a5bdd2b9a3caeca55b940516156b215ea181ba79b11eb7b6c7af286cbd837e015511c6f8c05a64b703c0ffcfee6c00967b1db0aef2ca2426defe0c53269778a7d66416e29e9ecd3ea9e8d7bb757fb7361b1a4bb086039286936102e0562c552b466d4cc0dc494d5d056687c62ac6f0acb3bba86db8c94a46b3e567c9a7b965674eec48e4beecab759349358098864770aa9b1f560dcbb41bf5c0bc0b81499303a4449211aed12907e6444d577b2354dc08bd57f7f4c9424817463a63be3ef275515a29e743adbd71605d098016006725352bd83a8784cdfe100867f42e5681622cea454c1c9e6389768c5bcaeeeb5a19997bfe58b7acf6ed8eb8e9bc5cb478a01b01d65c21462045eb905f84b19f4bcc83492bdc064cf35e76ad18706a1d46dd5adeb2318877a99bdbb55c682e1e9565f383bcd94063a02158fb1d784c18cb642a25ee66b461d0b416fe7c1911f60d120bc6b254fdbf0310ad52b021d42d14003878a4a165238e676fda315428c256667cc42e9dbb34c2cb62fd7bb2bc533a81d3c8d0fde40b650edb141b679ebab76978cd4fb1847a30b2401aa94027a98333a4687a303c4cf874c6c680c519c00a12ff83ef8de62debdf79696bebacce3bbd0e4e7797951a90bac23272df5a18bd90a519b93bf3485b317f8990d44e6928ea27d70127e7d869fcf1aaf7a7bf66a6c2f345a6279a6ca4f94ba9c61d79619c3695f81c0b81fcda48e60f0937b5ef78ba2d111bee5205a4866c24d828f8e07aa13029a6cd17ab7d3cf01d96b21a50a1c542db37e04b049d2cc51fa6be03d688862c36279bc6d26aa5d8a9713aa980bcce1723da54192f921c341096e3938f241a258388462acde99c670875a834af728af08f7a7beb56f40138e3f9c4d1f99aa19bca71caab82c6607a235ac722b1a9b027172081e458599e66f32b8d64ccc5a8e6fc5efd2b684b07539cd858f468bb4ba8260e129ddb8a225c5133ea338251d6d8e3e69a6bbe3587d09037f57c6b0b1240e311dac3daa524bca7b891afaea383d7d13fefd82f3365b54752375182385a221d1f6aacdf1fcb3e80e4744121ffb8cb5f414678e2385c915a692611c08a5c1c643c2716b5c395e693ddfe4e0b036647e3407325bd5ffef1f51c71553130c029b16af1dfc563c61ea818b4e1531ea03c2dc07c7358914f4f76fab4ef4009863fe5253a931082200bd40a90d5dd9135abc901a5010504dc7f0c7cbda145d1728e7f54126b38607e6b736e392d9ffab66b451470e7a643894f3250dbe59e3733a634c845c5522fbaacf89674b1ef9219f025f836705f5a4a4fb419b8035e3ae02532a5e886dd2ef950e91b3b101b16bad5a7a2ef3fc6b854a7b295af0c6d22ea11964ab5f8176c08811648710158c5435d72e7472167301705b990957e05dbcd82b8a7d2140e68a98cd7946952704096835e2823b15d3beb3463944e1bf6a0f8050539989de7a7980efe3bbdf88bb5bcebafd394286b7d1ed01a7229504ec4443322027d656f5078c3ba99bb55cee7bed9d3c72bfb50c8dbd34284efef9157477cb2b98f32707b8add82cd2a9314cd8a4c875982411100d5475ffcfe2ee8ca326b78a233479dfc354b04d72513c209d759eb1f56e424119642f407ac22e88a89ad36906a547c7315a1a9b1d2c001928c3d12427f41cd102ca5dc264a52d847fdf2ec3fee544df426398519076c9ba11dd1ec8037312b4d8b07b80b8fba8e38414a058c2a0dc29bff309e20d644fa311e683aa65985dab9e32d1aacb975821982303abb3fd236a4006b8cce64b1056d2dccc93d90cf9a12efb03ba7456899a448e45c6c306e94e86b19d3a7d8d622a295ea6110a2cfce77805b5b189ec0ba363110f947cc77b7e5022e995ac8690233ce0a0ea5b525a45570807a7e8c8f895d53e9a58268b9019b3ffd93afb643491281ac7d39f8000380790f1d93028f2aa1e2740601dc87369ad3c596fc15b0356e56fa0d65ddc5cc420744bc92418f8883402dce452a78b082030544a0f42c129e280e1a222314d5940b3b4f4bd41769e86b04d6ef60e3f3d5716819c01b55deeb144645f5f7dbe81dcbc17dd7be410991c296f1407dd6629763ba2bc12d8fe43d057819479fcc6f60a94e5c136877e20c11c2a9637a0bc25c9defb3e012c06759a628b2a664402ceffb88f4bc11565df52178c5884d551eb7ea4ef85f40a03f745e2ad9c83cfb39268ce2f36a11d6e73dfe7be362ae5b623eaf5cd2af9cae72a720cac526cf5760d93d6daae5c13c720626b548b4c17ddde7dd21bf994bb88dfe1c9df941e02a4b0cbed0c4c92a655f07e403b54c52c16075a173e1157650eb8b40a152825b601538adbff2e33f2ed6daa9614bdc349ead4d45beaae6ceae223da8652a1483a87de4f6a7a807ee8110691b73ad4089ccf543dbee391271269bc44203d98b1ffe482e1891c51ced70c68762b017df81b633dda760005212616cef420a89b521ae1c30234d0a21836e068dc950791cfb1daa4082b0b4b2499cac3cdbceec1376b7971f2702f611a03e46226b7679a1430c5960fbaafe527be128da5724facf0a69551a46bb5dfbc3c8617272b43e4f3bf5ce37f422205a9a6f40d406b71ab55489cc77bdc7f68d6538821c3f964eba10c35def3001f876a88b52a9e9bc9ca342a500d984042e04316858d2e70ab784b9fb48e4902c1b7b47797bea84796ffb1c9b0aaa261a13f42909dbd8f1bd311c2340643249fc25cd833d69d9a1129e9bbeada46cc96f1e7b3b43b11ba49593ca3bbe8d55fa522a628125180daf66ad2ef7b32a9e68598a1e76ec4df11f0861736c4f213ae07edb7846815f1e9d4517b4425be5ba9a23abf781cfe82ec45e09a6fd0b514d4054416112d1c3668ebe390cbe8de049423188ee439c20e820b80ba3e3f1ca22ff586d2dbadba8cfc38466e627b6c913e780c4d8648b5c13dad436e23ed47beea19a3c1243dbd0c229b7e67218c0536358d56240b3420c32c47576d05a666043953b0cdb270976599e65ea061db52f2b80116cdd2135f9da332643865b4c0ca9f8744917aa726d22b38613d60d6fc2d2d8dbbffe07967012babe7bed5b7e22acce9db81500944cf23e6312d683c4b2e185c24ac65d75430ef71be0b731c931009ae7d1bd20c2e6db458a5afc63f6d5ffe7aa6cb6857fb18049dad129b261864a003edb50976db3f8bdd127e51b9d793862834d747a477362e17e02321736257558224138fae5440ce8c9e40b7457d0044011768dc7428df57f0a5f847b4f47a697b8d53127f270e6a670ee284f2057000e4f4a33b847c3bf9d6ceb18d1535884fb87858c04c8a732a52395b834962b23ea24d21f62f09dccdc4841eb6425e37498caf9fd4281648b92679afb354b845301e0f8fad8df71a5a787bfcc8d36779eaeb3bf2d3f781fe567bef64e8490e3bc1ca7f579d3eedd85daa82c589b6567b27c625729d57179c75affa66f38e1c6bca8869f042d69bba97326963f1dbcfc0e9d957f9ea5229a5bf145f13f507f2f574e18898b6201cb68b04218796dbc535875c5316a796fb2b55d00f69853d30d052a62658c4991119a447768d624aae51aaaab1896b068873089c48a6e9ffae9d2da462f26aa0dd406413e4a11316680c5d9191bd93366ff22e02d8872ebbc202f4989ac64a4b24d6e987a363230427b1fcd62f8127cd025647c6585fc14a50a87f829e4013595202dfa036235c4dd701ccbd1288f94a3a0abcaa9e2ca61df74a1cfd7a3348420c6b306edf40504d828d1f561318f539d71f515b4aa170de8ee63dab54d64d8efe66a8fd4b25d4f7e7f23335cc98ca949c8f6c349ae0b1ed4f1a7f9e6fc5a7b2b7af7156d4e6fc1de1a9476f4346608b8b1454bc89078661093c8ead7b7785ea90a2c0a3c45632c6da843f0627af8a70884cf5e823ba95de33b631e8cb0db8bb0de72742a0ab99eb7b7d55fbc7480d1f9bc0c20469320c51a4bd0b9c4e7815788c7bc79d2618e53204940e5707a845cdcba1722adbcd464cc09cd86943aa8dc4c98c8646f64cefb2f38ef3ea8b3132cb344ed15756f0bbb77f002d9ab2f8a89f6e3069bcf8e57285b40e5e638ae6188698890e4a4b486dd9b2ddccae3b21583b2c7576d84a3f03cb3fa38832032c4d3fca9f2b48b2cd79060171f49607063fad4805dc1510e21a464e9146135998c3635abe5331b616a10a9b95cbdd85d5024587a30dea6a7c5c9a833ce3a454f3136235dcb9b2009dc5523d48b3a20052552040044de1a2a2b34a5174f61c347c31387a6df7ee104fef2221211cdc45f3731a9484bad2f4f92444c2f48fe3b8dfad2e30e6a896ea0a49328e22a4c18a4ebfd2a5bfac1531e4786e76855ec121138b8808ea64ceb6faf2bbff232a89d7c5cb188092a3d431da1f31701550d77456718d4dc637a6998335cbc9ff2527199fb93f2d6aaa156194e818613b136d7795d4415fab95911e702983b2494d8150531a5141067e8780da01556880400e0e19f4f04232e3f7a47a6a24c4b944904b7cfa06dc4d83214b301ee5039baa467dee1216185d105654c01b9beea167542acaeb1bc39ba9fff1ab328ea91377dfacb0b88a1f8d25aba72ba0d5aaf5021b69b906f788039827ce5e45e075ea3c0c8ec788ff6c54b768bba55299dd1c1096372320a745d032d451c6d6d985500c2f0a09ddbb1a3060367d3efffd1b8f33d501f3a5375d6ecc9d7e13e2d61f7e6cd46853661f8d47b4c8fdeab97a186c2839109a9e1506f84f29a2187b391211dc092fea9a504d2f0a6feba371792ebcd8a8331195996cea8c4c4a0034efec5b661d86ab81d755eeaf02069f31f0a8b52f023ffcc3906c750a5c9e22a2f7dcf7ad3db556f0f7df0e5a32aa840744eeb09673cc24abd9486fca90af4cc852ab553ac05f002a393c05581e0751710e04eee29c80e95616c419312b9150ee0bd75d6273b4ae9a1d53ecae93230e8afcd4787025d0a8e32b593eed392b29139806c2fc26728c905c2c34054f653b4392371dc2733bf2fe735d590e5955f26f27b5cf477f09c17a415b4b8d9861e203ca5e2aded8e6c5514f0ac97b94757c564afc8176b69f779f79a62d40a65ef7a7cf25ee1a3ae17f7a572dbb525fe957f7cdba454ba65a3380eaa07a2b3ba8e21b07e237bffb80f7801a484670c6e50653ddd29b060c17df008c0ff0d08f36127a49a40212e1eac5960dee005d313056100020746d51e886555ce6b87e3f8ed0799ad859809b8d2f00ff636a0161484a1d16a35530ca5dcbd96400888e89e2a2c40781bf0e079328fd2b19d8c2f5e9e235db9916faed0427a5855bb05f1244366919ab6e82b63cf98dc195dcc301ff7121295f492156ff8ff23c2bef1ddf14b986ab180156d8397067e73bc3bda28d3c4237d18fe23fb1ddbd623090a9acf499bd0133b2eaa5c4162befd136d7ec5d4d24bf758b80669bcdbd8b473f5dc0c2e16c82f5c798555b4e84b1f44533aeb22078dc4030c5cc7614c15949f4bf197d5ce31e020e050ce437553611ab88a1cbf880a9f8352ea34f0ed3b13156282eb8870f044967dddd7c90909c3a8e3ede33c1c7565426be349c8df14be75f051cd70fb30140f4c38ea6dad070ab958df59ff6ce5dddd810ba29642ef6cd662c9c23e7a0f5d1520682b30b2269d494d52f29826fd9b49d443df4bc5e46d225d53d857c6a7a3fd155cb1ff24046be1cb83e3e149f8ca00a209e5390b87ccaf7cd80f304c04575eeaaea6c905c80beaaa4867b1352da435485b5bd52ce9b5c41e6d0d18b831d2bb993049d7fb87506796913d9565a383863a61066d090acbc5508df52a348a35f64be82fbc056896947e422088aaec7568b0ef2ca9f1a04942d067cbd3ffeca52ce1f39226668ff61fd49dd351df24d839a79ae7cbbcca3af8e9a0e63902f79c5e68f9141c0d4a01071bf57601dd3e64b782e638382742aa1229909ee2c6dfdf609f487774541651f32e68a238acfc02f3267d414e2a200bcdaa6bf8a37ac0a40fa38a2236d26b7b50256ff0f3de98d622f74022308f01250a200834a171a6bca9dcc637e2fc1bdd7b8339d5e3419dd24f5323cf565c99e606cfa3cd102ace9af5eb854c602f42a20af53e05bc09c4a34b565f2996ca513868400458d2249e1a44540023c97e1d1773c540c6693b61de386a55db3d44b3e2cce02789a634c694a1546ef18d71fe3e6449d363ac5666b6a4e34448f075005f465f32efd6705ab0ee6622c8a76cf969c9cfb3209074acb30ace7652093cbdf518c72b3c5eebcca72f36f7399530777b6bbe6de5405edcfa8dffaa1dff21f725ac86fc87e531ee62705a41f4c97f24f7db630fd45822bea5c7c4e6b315b5e301d04e6f877fed7665e901e4e679036dfeb41bc9ac9dda3fffa0a22addf17c6125407fee4d475c267e61983c9b5e18562fe65593261feb805dff306772b0fd61be3baba8084ec6e2547b675828228de687968db198e5d73f90ddbe17c6ba2a55f1a56a763990a663c02f28eb67d2704917d345be5fde569ae7d523899362e596c555f3d7a902cceb265e46e42a1a4b8a67f63fc22e91afcc6d20549682dd850596ae764f6635ce451f64edc2ca6756b354d1fe3ada0c2597e35588f23c076b913390df9473971d4e22e4ec4b84a8c61dc8ee9a9cc2a3608732d3bef3061ee648c4422f0113a651552254e4bb3de851d8d3242e5f902d6ce57ff4002c30e561fdc4665f8f35ceaf02c3ae563818b55f67054c1cee20152f30638644039bdd4232be14436de86bc19144d19a6792dd856ecd788d926fe486092229e125c99d962492e143c7bbb7b77d1fb95b2f3f289ec636c99ff837e1974257403fd01d29f3b94ca840c217ab946702045368834700054a6bf8fc0b0ab94de1e050e7d3e42d8653f1b33af238df20b165c310ed9f29d7580e38f770dc4c00893a464f6f93d74c9a37cadce32efec7484de402c6693a152489a3e59dc00d5950fde619041ec251633dd93b369ce556ee85e728ced1301401d21e7d5be7092c15c8c91ec8a954a62f0a057df298a3359674a668b42b4f65495586d9e8d34397b9d766f2b06cf7243722cb1d216bc7680eab566b70aaf28f37b7400c8301fed866be08ac84a0a36547174631e3ad413c5d4cd731cb19751715de25c48b7a20ef2e2a6a2c2eb0429020e453b1fc823b770e792345f252fe2d0677299c40cad78521bddf4725d6f2cf4c0e64d166a8232b182d3c36b2898fadd7a668afa0b2b0b4f41ed0c728107d20a9a4191ebafd7d0e61d951c802626ca22749250c868507f1a5c15a792d9e6669113cd34ed9f10038f8f20f095e8b23df159fe941648a1c49a1de4301c304a1ff8f5f47ef9623771c435d496efb74d3201e04cbb12044f5231863584d1675d611fa68403e7ab2f592612489479e01d77a1dc43d667839b76136f8100722053e57bf53542a58a0bb2428b34c23b7592e8f191d06113389892943b5f83312faf1a627732694eabf177e62f6c47609c69126e38a9590c0a5d4728530aa7afcfd50c740a5a593755c3c4547441855bd033a5ccc012371f3433184fb51a3ae403ec2063d63d33e7a7aa5971f5f89c9d37447585c9c7009c49cb2fd8016f203b695c2c858806bf1da617188a8b5241be04358a376af74f1349ec2409b5bf9a8bbefa1b5546c6887225d44b9d279dcf42eeded02af2531d0d6352218779a2606d7c85661d2c2d9aef55fb4bd5302963046697a9a8f71d03b2ba23763378288e8f3a64d6f416597c873d3081047e29e69961cfa185688ad33f580e2cba5dc64286f00768999002c334f5c86547990498fb6f2d191cfc9037ab48cf669dd510d7d973bb3e5a8c1fd783a0bcb221c5433f4d2bebf933b8f3d9a379c1cb070e1758c9ad41fd4edf3d718d566a9a30d5bcec1303611940f7a64b9e72002db7490ec2c7aa66a53aba0e38592861c9aa6544ddfd30834ca80939e8c6df45da9890c222e39152ab599b0d442b06a3294cf50ea4db893e6de51eb4e3d3bab52f8f9cdd9c0bda2857c9d83246bc8f31e8e0292d9f3b2c61e12414f5d1ddce87fa2b8eb9115ae2af750a82ccb4f07f06a74ad5ed6ef888b5c32c7297d0ac20defc031ab50c1f25cded43fe43a48dc946919045932ad8af0aa6b27b366dd99741b9f541b3a3da426be25eb54a46fc1fb8fd6cfa5666a63b47ec30326f41034c10e688a8017ad751844b1d411111a83e12bb2cba2850385264404a020482c9b0c31536c61feebf60c552be2fe5f8e911c47a61bd450c49dd7ed3d789cacd5891f401f9845b23d73267e8613fc8a32863e416b3aaa397b7183d8d5fdad178a81d3e2612a0baf11180d171ae3a111d66df960bc1f0e11c0715eb0e662464c7b76662746e9b46a04ee1a0752f31ca7a48d8b5f002333503d233c5e9a384027008284f3bbba4cd5c408d4dea3a2a00c5f4dad5448b76af5d65d45b71a223246907c4ae6604eb49da4d3f04b407f827ed657755165f6c6ad313605e7a12831645be9bffedea13930281b8741b324fe0ddf14fbc8bfd221d9841955d74a99934ec05c5e3f7948bf24ae617da7c8dab0209d181305dae354bba005e980c508e4620c0047d12c82c675988c3f800c343d6760517028bcf1c820f5ad34f2c85908484f576cf6c1b424d6e446ad243b4dd64470038a79d8b7e500e98dd7822b8ec531140dd265f8df01a9b9b385cddc877cac24f9a8529b4d64845b0a5d03e4b1bcf5061158e195cf71bc7e6ddbd15280bd9d71397d9b95bc27a274f73f3ff86179bb5192c03d07b91a3ebd4b2a37f98b3115f37ccc497c2e208efdbe0c4aa10d74a7d45238e53f9be1ce8611b048c41d599bc598203b6abbcad022d65de6851c4a302df329ef0b008b2cf83e8947f7fc3e259a572fffbebb619b837b4e72b42d999436e0c6b251c35ba42a4596d621c78f35f6d25a1c02dc75d9faf9d9211eef7e405fa2d4fa18145fd682e3a9c07842c3c4f84a22ab57df3b8305c36258d16949a60cb650576fcd63fdaee3dbe450237e2fda44228c811bb033ee5f212b4a66c666d178adaf6450c67174f5c4b804672f10eeec1ff1fb4df8073bb7a2d31e21381d280e7685b39c59463e9cd70e39f823d414536b03a3639456aa8c0019d5c95c51b5b60e79a91e9391f356fcf47a875ad6211c805d854493fa3cdaf27177024e2b5ca6a79141096444ded7ccc3489b6e4f3438190c8f70a33fce5e98a6cb579b9236da36a4689c0a0926e74ac8fbe1e2d91d9c22a36405bb2e076761e33e7379b752903fa49bd85324023f0e5589091616fb9bcad57a8ac7d307266759da8a0abfbf6e1254547b4214cb624a824505e6f3d58cc10ec5733d04bbe727d6435a7870af4d91b7c2113cb9cfd04b185148cdc473365d5fd7df6879af7c19df8490bce1aac8b465af443e0234fd113769c84f7e86851bd18dc508c7d9120620e2077b9bd4adea48fde3c5e1ee9ac2a39205bfb94cbbfea7eff5c62c0ee24a96a3421b17a4d4a1b374fcc2c9d767614fc4836e89c9fa539b791353dd8e2179627271ccd04175b43508ade049478bc888853dc5b3aaf400741c152b51e02651de002d223e5be30d69dd7a57f12a0c7a9333fcb09b92b5412a22bb78dbd1e309a9f769333802867e10c05ec586b6381a22e021094cc6183730743b65bd10b34eb2ea4a41f1c5db4b5b190c09d6bbdda1ee1226f9c25e741777f2974bcd9a3a3ecc432ca93651382416dd1e392481acc4fac8cd64dffb185766067a4db097b2502d90542c9fca035f3c0e11a3e753667633fe76530de863b255488942b545bbace8dc0dc454268f49133254c88ac5efec3277cd27a11673aec2de732833f391514fa5299a04c8060b65d357839d15f588e56f78ff2c03a649ed6ebce712a7d831e6bde52f988629c653a8242391d36e86261644066fe5a68eca2bce4c3fdef6326fe5c740eca805758e076ebe2eba721ab0ed8dae182c26033f73382236f47a91fe7653c3be545c2ebd92041e7b9f582aa84e6753a475347a5c6fdadb32a6a9f567ba8f905c34b120cd9cd846502d6df8184457bd0ef18d84aa6781c3b1751f3aa4a15d8334eb748342b25487543a13a878ee1ee50361ce7cf3e5fd4d52421152ec30ad5c9c92ab23f609feafbd06b6c3cf807acf1e4b9ba8829428c25ac3ff9c4ab5006aad33d826b4a0496c2275699de55d0ea55663d553a890351a6324a2eccaf8e1cdb9bb596a0098597e3144edfa1c6dba53339888d02c6a687c55be7bb7b91d6d257b63d4e32977e3bbc7c1272f56b9f3c458e67886745790db6f34f1ed6142b30ae9cfd8ee78d0b147ba2c9f3a341c8b4729e9b21b3408286b824b9ae93ebfbdade3e9368046ee487188dce474c0fa5f59f8dd2adece65ef98bde3099a8b68f3c25c4865ff1e5a5885b22f4d78ac4ca6c0c619c71cb94458f3dacb83b86dc16615f52832deb600e9c58e441062dceaa7b8fb7cc9fc27825a00a48e6e66f4b68d2d5c66c9856d70f41ab57cd7145d8a34a87163a2d31ad3ab3c0385133f86cb8afc27568c440235ce6d3c3b1956030a0df90da4498ee1632c12e71ca829d9bd35b40da0e8e83ff999e96108ff577b92955df39818944af3eb254844a0ef889dddcbb9499233a606137ee547e666a8272d3f203050073b0d7f54a18f585140066902aac78272a2f426c83c0fed91ec1050ffd90404417b9fdea8138925996941590a9139496bc49ee7fced98613a07488ca3730279cdecf9d4bdf8e7023a58629524a53fddd6effba63aeac6df6fa096615427b45f54e8a42663428be10d9c0237af83f214ff058d450633bdc0f249b72a8b7158629d98038c2e1ac763dcf0a06da485dc1d8949d8f99ae997627f776e3e8f121d3e7656814f72bf0949e039f0c408560b512206f998ab4c0a3810c3818de9f51239da8049a7579a84e1ad0894d40393485c1a81b216d3c3682e40caf6fbb469810b4c25742b1159db03a3d4286962ba53e6223c95c47c2e22fa2eaeb75aa2bb7a6446ea2c25362d025347a0aa1e0e473d53466cb38366a51e97fa523f6944c9439252e7425227056a67ccc947657bdb9224f53ae2f4b244726b2f3e2dd6ea4831590f45425d8d09ca3befd9d14c28291b604e98ad40c17d832db84cc568f595e13fa4d4d85e314ffb1a2de58fecee4e96fce26f5fc26b2ef49071fd45da2e2f4a2e8f249629978cfa3c1275934474cd3c02454f82356b02a1029202db26e6695ba352a164c9fdb28e96fc38a1659d52f4f789a25b900a686a56b20f3e93c2971f2ba81c428f818da20a4cff7920ee887d45a20472501769052c08338e2d3c582613a6fba60267f23cff9c16d1a551fd694dabae6972bea725dc44e4c39182fbcd439c3f05672de5d4f3318c2be11426637fa0b6b90173fdf9748331778ce9b6b59268f8762f617c2e13e2490642db81e6698132d5d87b9c6f3c87a7d336e4a95dd911210aea9e42730eb60e327b287909a6e4760bd0e280572c95604524e50dfb2b25a62d06849cf3f3fa6a9efbf8832903c04f6bbd91d77c84cf2b06d72f21052134a0b4647568f75c35ac21ba457aecccabafc1e3a1beaa3b3ff0251647bd2b5f0177cfe8cb082106f66de43158f2140e33c83d3975dc9a2e87bf0a42431df946c59f2d02fba00112ca5a88bf5e1147efca43928c71f09a74e0c5557dd2e96461c5dda8d3dba9915bdd22a4e7719e92d281b4ca0ba1e0c1928b50745cd423143d2e11d1dc1576da823dfd11a092f2f3cbc3b0395a47539f647bad29bc2755c41d748125677d0798a8d91ec4d210599b6a1e6a5e596effdc7bdd7ca25de537880a20728eb303f339093eee4f9a00c5319f7a0bac87d53dc4689a20cd6774a6d412444d6de92a84d06adbf786fef101c53405bd0536bec15858d4dbb4889adc22e56eaea636b59499f4a4cbe4bdc4b9197562b8471b18f1d8102470b9a6e68cc80f990c9a21d70c6e451e12090df252003d09042ae10ba0fb4c7dfea4bc557fe8577679f7f44faadc1c0436035ca7b95dc6cba9c53b7c0125e1dde9f0b6c869e831330df8495000b2cc096aeaa7f3de3d2bc951f4b2f4de1cdfddddcdc31c1d6d075327eeb8b2240f278d3f9531d1941820248f04ef76d95dc30e44fddf899bad155e46af518316872766d9a0aef3235d7f996e1ea0a712d019e9de643abab45134ce148b356df93c8dfbd8ab05b7cd332a331e7144e9ed4f4182a4f2c61b0f5a152b591c605f8c0f88d3c9c94f20888e7e19efc2a42d3ed26f7b98a8c34f22bfd23c881e143f126e60295d80690a08fddef4eb28b83fcd097b34cc3027e29212052d4079c16701a0b3b9aa60036281e55082e8dd0d60c7c59711a6c8a31213928e63cec24ed869e19f5db89ef7a87a42e0297895383dbe4dde3a971f35ff91d90d2b14ab9d0579e90659e62bc48a3cb579cc6f82481cdbbe59a8b39475549f684540d810b8458355c43d477013c5dc6e55c6c276ca67ffe6e0d6de2ce2c48e6c60f10ff0008716189c3d557ca96f5d7c77fd2dd8b24cbba1c8023fabe1e65e577b94e73c4a537935ad9f2e16ba0e5f712a2e4482a4653ebd6e3c4fa5a84cf6b53cd8f164dd1db8763a2ed6d034d7948b22e58a4e120389f3dc30adf7b7a9b30900f82a8026fa21f76f018c98c00de6e8655d06c197dc5e8e824bec4520477b7a3deb8c41b77c2445f29a1bf04f357e40fe645ab9d75c6ffce5168cfc842b3df50f0129b7c56fb9f82256dc80672dd337d453041866502a245d0a570883e562caf033f9992646642c4cdce4a622f466b04668f634203cfa09ac88762192e6e36cd0de36619a2035509162bfa72f379e26c6e0885d680ac6621e9828a4a747a9e8e3e96ba7142c4993f3f0981b535449a0f1f1077d7fd0b4cbf591cd84a24cdf3f1140ad01a830670ff4f5f925ca7beae460929c5db94027986e2bb1294ab8774e3e877468be08267f2a598232e82399753628197f0a5faf1fe977d83b11118b2245a01d8019eea6dd3f120a560f5f9d96d0e6365bb140538381985852e7faa23f151ea3397259e64ecbddbf6e864869017a3e559caba97b1a0925b913d46de7afe31bde181d9ca5c7bf4609edb6aadefc125593ddd620c9300df3b4c17b50b67792f7b3861fa0bd84f33a62de84d87cbefb5dbc7e9c507b8a81b84eaf04d842a4e4c2b64eb19b75e0f461d40147fc6540e126789d8614ab6698766faad9a2b3c5c766a3f093c8e42e0d16f875f9a872bbfde0022d40fb81ea87d8cee3c14fe0e3d6119faf64ab5f588e5d2d5cf11b3a63a98c89fc1e50c533c6a82f1e05e2b1ee5c0b1c34b2ff473ea4d3428a21f2fe3ada7b26df12f095a2bad5679f5d3aceef06c237a8d8cd352c3b80bd8f8ff1dc81291c01074558ac5b6c7e89a0f3137c1ea20eb09ac56edfa76a5c23565887be2672434c22b360ea5d32f215b754166b41030ede13e03a4d1f5315cf1d6573baec18fbbc5d0444acd1ea52b0b903729faa62408524775e81332e8ec07f4920a0c1bc3a95e15c138d65d969c432dd12cb3840e46a6852e2d735dd14dfb3adcd5afdc006aca5e9095b9f70b96e5484caa5cc4b7a16c1d530fb27bea5062d2974cd940aa96b304787ee6f353d05e23141061d6e63305704ab132ec84b8886b9892a671f5239e01ce2c073a953bee6fa0515f8911b9c417b6653f4552a04268503ba8f340c8d002377e211ce0438b96fddd0f010af4f9304f8a9205ffea13ba2485de5175860b1707dc2e9c0a07ba2c1601718878bf636ac13aa1660d36ff69a238a425a404d663d9d8b025c227ebb1a6c49500312e86f3bd300bd1b1a5083597c324e45775bab3900328dc1d68e5829d3b8142ce52197c9f914dd53a9ec4fd4964c0b213e2b9643f84cb54dfa24136d9ebb6189262bf06ec3413fef23258e0407bff5d1a2523e0e806890e012dadd2103819e0a1c2646fe5c8f032a665f26e218075ad293062f0039e1cf87851838e82dce1d59f29401499f7f80e6b5de3579e2a47ee23499641f3777395324f5ca4f7a72e2cc9603c6ca79da4292587bb766fa319a64493b519091e882a835dd952eb84ee1483672190be354a14bf62330cfd4f6a3de38bf05b71cc2a4c0b0f03f7e38f2bd8ebfaa14e036d42400d8817057378a773d772d630023a2854862cb5d4388fd091aeb7264eb069e562297f26b118326569b3007b11c2bb548a4567c791f3b911ed06913ef82c883296c4af723d2132687e96240a4254a08c4315106aea873389aada274476ee4081970541c76f799adc431d19be3487f620aa3f388f05462bc7c25c2710a36d1dd883adcd8c5713fa21da4629362205646e801bb2acf3302ea8c31c18b8c21550e198735609171aa56edfca5861fbbe72dc6e029ca1ff01d9b049e76142ee8e2622e44f17b95bfeb0a6f7f786c3c7d3c2358280ed5d4ed8af7a491acb8a2039b8c08461495833483b009200845bfaa5980d30b5ff77f967bd3b782c5900ccf6f317ba297526b25fd69dcf6c40f6eae8fc7f34d9d93f2adfe0a47ca6f93be84829a764dba68f1dd1d43a29a1a8e071dfed555495561bfa5f7d21886e4415ce0605a4d3a57ea75711ff429dc3578876a22fdab26966a70e9e4818ee10061032488f048b0404d3ddff7b218f2ff129e194c1bf441d052763b64b03469a5da06da7005bd0d97ab205b2cade2af2daa543e2165c9b4c500e1b3655af63a27dc105ab6a98a32ae1d69cd049a28baa0efff26515b228e1ebd23afa23c1722da97087e6f238f1a402fa9ef1844ab3763ae45ca7f35102d83156217bffa039085ea25f09a9c2089df7dacade776dd689106baed6b3fefc147b1c6320f6f12582014d890839bac9fed72ed7caddc43b6b0cd8c6152e898d2fc06d7cdffd20043e5c4bc6629c0140e72784592248a27857c4d84ed4de91a06928822c29e884a53f9159c21207fcd24ab447c34d495a37a35b1ba825cc162749336a9ccd8bb4b7a4a3999afe30284f3b8cd39a2e9db733e63e19d319dcf47bc84b4e913a2050f90846beafb59ac811feaf9a9fae0433fec59a9a01f99d8dc9ffff7ec53ec983ce750a4d823b5b550523db61e904b0c7062feda7dc3b50f577556a80b20f68973e96a33561638a1a79af0df72e9436e846739251932da3e955260874b92009d39a2ec006b38873e77f087fba84ea31773d21a43331709329f5e0aa2c350e32ebda7bb1f43e26b9dd0c2eb7ba65f1dd85f3eeb4dfdde5f7fc7ea6117acc7c4b5777000010e21a0c240ffaac8777319ee836e7b774990dde10a8962cb0518f1ac3146fa856ebb07007c00f6d62015de00b4dfb0691ca1a1002e20d60fd2b61aebbb037bca56c0ff81510fbaef15e8ea6767cb2ca2278b7701b7a9ca5339c3aba025118d67f3b3b3d9f09de375fde3621137374a3d83927d737cd34c9c67e54f509b630469d293800c4a963c10bbafeccd94aea47f24d251df343b5fc1b4dc7c9ff8c8a2310a347445fafa1338a633d87628c2027255a82780cb1428c2f31838074ab64da6e5273b673aeccd3e7f3b3f57f7083361233763aef4fe6326f2f779781c47d06d1409a89083887dcb10efb58f927010907883072b38ce974867baef61447a5247dc8e4654c630ebbade925381ea037548ac13350989c3347747c426240d53dc19319e08294c1633a23d3142209287847718923e114175f0f616e91fc52e51bc29920efa7aa2e31d6ed237b864a978fb2c55d2e1f21849a091765a49b1af0a2ba8b82e5a2bbaa8220a52152900af757000ad1ef4fa6aeac60d4a2c9640a3eb06d487f6c9fc7ac904fbf6a4fd31bd6e288463d8c1e80cea0d4c8fa9ac134ae4863a23bf606a723b1508ceb41945d74e5b94fb20d5c5ccc0dd497d41345850cc70293f1e45a6600e9aad2841d717d8748eda74131c09baa509cbcec83a8b4f7ca7515ed0ae05256b4017b95d5f8c5a0efe631cc32fcaecf10adff883ef9d9274cb666e9fbc7ee343b2786bf7584164111dac65aff0de9ec797ae8387cfec6de9da97aa3ac70e21fcf57201de58d3aee6d8388ae612701573a954cee7d5b4e02b37fd7316eaeb3dafb1d5a385ac6d1a422e55b77309ba6c16eeff75b9dc8db91f125a013c2e1166921675e3a26b0241916cefee99ae0b72b4b436ee6380f8c76bb19e8ded8f87db3f334e3d29c1d4784feab6a7ace64e5d8e8c7a44ac1f0b205f73ecc9f283c7d1d0735b8b0f268d0f0e39724b8534214f24c26e09c31b4e403b5825e44bd95057b2a2aa33cc4b5289a903eb6e8463de91d450573652985af9688c894c116a6a3bf97605950a922e12fab30ed9cfcd5ffa6728f7ec44a0e56ecfc3fa7aaabdbf72461ec763d66a70d8f08961bbec1bf3f264a099ed2104adfa6d6a6bd45a5e47fc8a35e369605f3d3848b79177abaa00b573517727b24c22a964e34804e7761af89f1800d8b1293ef26545b68285d75b9ea6134e9d3562cfa8d31b08b8bc98194c8e3bcac8c9f2ed69c63c6bbb07c9344bc26b5b80df628d84fe6c93814ebdf8ef01eb55e1d04326d2dd6f48e3b9482a4b5d42e6f10842ca3ed7137cab27d53e99a8bb3a516b75557d75139e27bbbf364207ea8473a5f7e9aa89e78a9ee39b0cfa6bf264af75a7620f993ea1d62f5c95da9deb93b60296246dd6fe8e1ec4065233b5026bce5669d0daba389dc3264eaad7b99276da923f79b4d660bec59321326ef1acebdf970ef00f45407f30bb906093050f8303d1dff00448f66ebb2220b04fcf9347abccf51aa668a76139762ae15544171537d0928a089b3345155c247526e2a1328c11aa1c89c733a820a5d08cea862cf524cd3365a1896d73579e56851964869ff50f4a97abae8197403469dc001cdb50db4332e49724a4490dd835379bf7c210ec62b5402ad80cfa07546248bdff488da550f5a51f7263e986697d133c098a162aa008b177f2b47066723107a54e103112ad967678218df69285ca035e420997031742f9937019e994b9909ba8a82af65fd28c13579b9abbd3844e812f2b89ed8260f29712a525c32140eab0154b317d8ff0a4b2acea94cd48d85ea869b1a645f50729db3db9a0bc74b9f823ef0accfcd8122205efa435a03409cb995e7ca745beb348190bb81fa64aa669848e8201a3244ed5aac953d849290b72bfeafa06bdd7affb1c5117ca4c080d596b3c8de9e240e8f0a3aeea196c7901662dd4cfd758902a6cebc63fb566af1f4850d4dd6481a9e0022868de2aa064c6556890e98a12079313877c08df8eb812f52eb6bd8d50fa89eb8675df65e00b0f0e3cba7c00940fc04120b427f800c2c75a4bd1b5a9c60018bef39bc7d8b99b89cc96894a2fc4f432b716d51375081d57b6a540cdc5f727b14c5fa1f76fdec8facb6db8f8f69e49099079c66d04f74069d833793e0c633a93bb63eee6400685d61ca29d0b18a780f18aeb72ab489e0ad9e3c52a727fc499f6fca60e8109b5b8d9a77949aefd305bead019d49715379ed2adbc46c3bfb1a840764234f3f2da1877aec70ff8a177ec2800805baa97373d94f170bfc6417e80bf4c36e5efa307fde3361a56c0e457185f96b0e37288d04e589216c1119bab6fc19c263653b197696c2dd4f47659e9a134a4a27feaf77bfd273c6ba8944df7aabcc52a4001727ebb9b4355341fbfbf53933e679f08671405bea4a8ea5d34bee4f32dc35c44d65b08692d90f8e7803dabc632a67af5233571cafa13965e9e3a776d7e5cae55b222afb5814482b5606d2ccdcebcab01785586f71966c299ec65855f87b54902ebf4547675578f1630b4067d2d15b04600196a3e8a7639c549609219014aa0840036748081bef122381cab95e83d00d7211835446a533b0d985d21d6632d731565e102018d60d2b2a52876935afd3b1206b464aa7544e2dff87a7edb76c004954bfec4ed91daab85478045ec2ded980b6486584bbea57e394b0d95497f8e3dad591dc9fe8135897047c4e5167f2e4837437b28fabda306bdc7a1935787554b4dc5a6c53bdcc087fdf028d39e40f5fab115a5f1823c6d3532d0ad0a57f613b11a7a801e0c664766748fcd407566fb5864a1b796e7bdf8d56edb628cd9fee7d436145dc7e71fc15ba11debb161935db0ca62cf6a2d348fd4a24d8a121b3daab74e592aa1b13a67eae3194d92dcec21799618bb05eaa1e600f6bb259ee2608f414375725e1db64cbf3c8255053f719503f6f7eed414f36d80341e73e7b4a8bdd45e7a37fe79be13dee4a474a28f0631658659b218f6cab4f9d5200815bf544f40a481af40403f2a000216ca30e82e245468a2bb2359d10816dcc36c332794c99959b1b8617b3ba11027b46259752d7242219a6dc596676d165aae1d1ec26e796d726ba5589ddfba9bf864e943e93a27892d3422c6cd1c9229d843d2e208b7e892c813ad4473f80863fb00ab5c821abc572366216d33c7e5afc7e6a796997ce1ec76508078970c2a770a67e0b45bf279c631e97fbef8efbfdb21357c9965c8f65d0562e07df728b7d315124921bd92769b5b679fc2f4191675750e251f366d94cd41b8f98ecac193f68650281b2b74bbb5dc19c9a55808ee87882fb50655279d65f7a355b9f3d245759366fff06e7fb6245d190652d5332377f8fa231bd4252dbe5d0cba0dc61052455b0e5d8c026079e2d9611f6a592a66a5dbc1217676deea7093aeb60a85639f72e0ff764d7e3abe201cf448de55583efdc9d7a4912d5dcb422b06ab13e6399df7833cfd612df1d37d87d435f62562684a0d07097ff671049132fc811306556a2e68975e2605858dbc5c3b31ba51f118238c38f6ef6b30507c0df2e891124482a4aea34eda8bb83172f622dddb795a6d82cbaf4f833d75be0952495d0ae30455d23632e455bf40f844c2a5609fa9b01e8763acfe2284cca1aa3006cfea4c06db45c519a871f6e5a7228b15237d7aa999273822a1275c87ae799097d0c13eca263cec3689c51dbc1d856c2a4cd10520e097c08c0fbdf4254853a18205608c21726dfe4fc3f075a7e63d283c34304158a516e30e12bb05f0d6e2970510ab356df64f4fbb8423af130c98f28b943821c8e9248ae019f4ff29d98d00af1a30d67fda8e80872c30365f0efcfcf3dcc36e91c3aaa5674725ac96a4788959ca5e6b27ddf8899ee490fea7233a24ba2a37451b7bc57344b8177517a4c763c15a5e09736e2af293d2ec62f8beace15d7ea1ae298c529f2a7ddc5b93cf0ebb1071d9a822280aec07e58ff04531d213c0c2bfcb293a8948319ce9344447224c17fa070349bee1085ce188b9b27a7d554312b2c3f3391c4219a40ffe979d9529667d21b0ba8aacfa799b46bb0bc849854d9654dbb01592318a0b2484f047d539d96d1c8adc2a68a72cd77b659169fcf20b95574e502aa6133ad432374ca48a212c4cf6889550598ce9747118bd4f3d8e60a763e3d6a064a91fa3bcaeb76e4ae135d1403aaa8c28cda0cbaa8035d53e48c78bf70780b6bfec02b3d740c2f13cf14c1b5fda2deabdd639e8b6d647e9c7de9a10c373ba329ac32675c83b76853ef693fae71563946851b2e4dcbba9e0c479b7469a3e4c7e00fb42f907d0fcac8201837cfa1c11f18feaf650aec32337788b27eca25381bd298acf03825692810676df65a8a5b7a8fecf12883439d774ca4a97c29a146c724422ce16455777a7b5e7adb17dce85042171318cf930b858a1e71ec0059cd5318fec462e4d41cc71368eac240f21a61468aa792e5a5b157780961061e4e73eccc44184786076bed2e374a0dd1a79b3cb1c049dabac7cbe7d9efd176d8b1aea159da02df5edc8c52e6b4310dfaeba8551fc85556399ac3e9d7e5990331e6aef6c4415688035472d3eb0031bf091c9dd4681be9252b0472a55919e1383bb234bd5d36aecef7d5168f56b37aad3015c25de449a354a2edcc64d904437960d405aac4172055e299b2ff7b6c395a3aac2564544fd2b6951292833f0bdd19c24ba3dfd5b36455fac9ccf11085d65d0e636c5287317ef3f995212a30e374c7957d92c6875884c2543733e2e6cedbe8d12d8ce714ec146b80c62db48ee6b660db34f2e67ad5d4508cc30956b5169ebc2a9c04d249b1dfe9aa8c56d2fd4ef7a805e9eae83bba5dfa30c3afaf03e0636e841f9c77d874a38b05eaf4287bc94c982173d2b0303b14dafaaf29501063b8a24196d66ce06765e5ebb51831f1584d0efe720c2f7aa3b220ba4de89a6f2b2aa6bedf95651fd2853bfad8ca3a906658ca49beda4fbb904c23d70dd8875989fe7a3b89359f3fd89b496fb527a599f6c7777b047f7265f02adabb2d1135ee34daf92df39191905896679aa116ad119ef9c48f7da27795d32ad8dec7792547299e9684b20f337435b4ad9c21322665cc1da330eb24274e26bb8584800ca224fd5f3acb9b0c61d8a5e26892ed156d0a7498198fbde94a29c502af0cc354603df86a119881dd92262b50bceb66c879f8d799d347db77f93367ea07111cb5d2dcfbf808e7cd2d63f0a0297efe3314e23f40aa43e63fbb19db9e96617bcc558fe4dd1f37a7cb9738dfb0f3c48c8bdc3210078bf5fdd0d230758de58397263525087d5222cf7c5be60324dfa9ff121981926d3d50f0dedcf156147170d99ba82d2e3f61da9041e831e323a78a4066f8c3fbba6ad07e1466a4c7ed0c1b3ff9cb37bc0d3ea82d6907c6f7faa203ebdf1aea8da04224bbb8b904550daecf519a910d9e41acdc9df2530026812128d15d99a3b553b1a9bd34f8c11cab3609ca33761ac1e549c6809baf9d2941d6984424771e2bd409dd9cbd78bfcfedddcc6ae14f58065d86dc8d186612bacea2fb343a224a486648dcfbb14b1c65ba87a56a718ef9e4e1ab9ee57d01814671d79bd27ff09b1807560b21cdad08e20f344f763b236331a7cac8d492ab471b1327e818d69a414598eba0e4a66c960f48e6568619ca2d5723090db7c2d69146ca5cb53e8cb50cce0eed16bdcf5384284c1f474d1ee0420959d27a64b81c8e57062ca23c384510aa1ba5fa451fe6646468ef7c7b99ca1744c07b961852d2e2a36d99b7ec061d572cb41a815991fd82b084f62b6b1615644b1e88d61bdd49b30d670e460e3101fcc144dcc656d7eaae83d4e95aa0269ee2f05b1b65e3557d21ec400b03a2a58b3b7db3c08c41d6f7b6bd9d42d4b080426c9b69dc88804bdc9423245913e6027dccf30f276c0b3293e58bde2762d097a322bdcbf39b11b17af57fff7457a9522c69ee939739a6d2bd355ac97324b5830ba9762793abcd93806ddf4709333a0b6c1d92d08af6eb542d40447993ac5720aa01f6a4540fd6e2c1fdd1c8d06a2a3c3bf6d0d18f1555ac82edb492cf555f1a8e4aad527ecd2b3aa4355142c22de3a4f13c5034f3a1bc42397119ce514d378bd655716e6a759b1efbf5aa4f544243ded4485b58b7dfd812e0fb59af65ab1cf87978a739828175cea24078ddb523481efece677a5b3c3e0c1d073bc5f8e2cb565396b78cee50fb4934c15ba7766b3682e066be8a84459370722b4c062b8c64544af57fa9783ef1ced0c268d16a6c4d4c76cf5b442439f54c18e15a784d03bbd066678b78f3c95d97cd638b70cad5cd92c4eca57ba30dda6951aad4e918b7892aa0a61c4b49b42339cbca5c75e2bbff0a1b06f0c6b4c7182a04bcfa768ed9acbe9a8084901e8aa2f1cb300a86dda85981a3854ef9885040dfb97a83fe64014d58a494f2a9ab508ff829830484ba2b508f33f2e2d6f840b719b866209870ca2df0aa651819cd55cb4fb80dbc486fc6995aebb19a83a3267189627b4107772b138cabaa1118f5160552d712e433adda75ce99f51f4d7a12d13d9b04e35e032e55b47bf1fac71ba49aee1a98618355531a4e4e12a0c757d1df0ad0cb7aae084023782a7182b7133622501fe63f1b4c20f52555fdfac6fe155cdd09a45651c7c3ad2b944e3477685c2ac086efaf9479e07596a0ec2561e391f754a5871dc31aad870ee87ae42c0c2869b43607e07dba91453195b161a270bb2cf1cb74ddf809f696eeec2ff5484b431f8ed3f80e055be1d8e72fff4adb8b27e729ef7b1cb7cd323f5bd3e41ea571ab7c0a681647f218f630a3ea7346006a978834cc8a8bd4dc6ad35a230fba73c5e911cf0849d93a4d7a351944f19a995578ab2c78d96dbc1a569d7d2c41a11e2bb3f1215b48d1da56e0aa2093f2dffcd0708662971ed66bf08f835be56c9573eacd6f601cf37dab08dedbffc340bb04ffe031a9219d13be49ff223e23bcec9cdcb90f0abc4c0448279d3bd3f0412ce5386050ed442b066c4d3475038ffa0a0a026619302a2c496e5f4a1b73cc0b30ec820bb433d471ff5a1ffca93790f69d04e29cc68f3ee29654365e61976a94626fb6db374dd0b9d1c9a415194b5a8a66d942782607880315e3506ce5624a0c1d85c3bc8566a4685c6d0dc99d39c8b3db480c7a154b94ed91bce3155b7e273f5f53dae460d5f97ee86e7780e15e61a543d4ba705095457ce813e4c872d7770a4dac0b31f7005e9aa7a92a063d043e2c68390889d734859d4272fed1905da4ae13849d803e5c12adc81bd2f55aa9292baf4dd29e8bf80dbe2aa0eb78231e9d502869259291226bb9e8bb46640fe6c2c77867f38b2c46053fe7cf9b64bc8350499e6aecca54d6972c1f7bc7da4880944237d93cc29ff538a20d6b94574c6992b369abf0a9f1f20902bfc753f15dd1ad6fa17478924b060cbe7b26b8fe2f18d2bc8b12c16f09f97cababf477738d4c9f465748538dc75b32ef794b91e7a7cfee3bb287f8e74b8f6f72ab9d454dd4342582aded1e3cf25701b4a23cadb6bb826e93fa6b6696ed25e9d6f149fa58a08d90ff42145e069cdd47d574b8b36ad334e632cae0c0fdee575ea82ef7b89e4ae5a219c38af5aaf7c6c933ed27e856bb3b5e07bd5ec16d312b62b125c1fbdf532ae2bd42d7d5c80968f654a836eb76ed3a237a0c0cc1e4c47c6e5dce45aebafe6c1072d1f1550f11fda7e799154c0102cc85d298da9d0b2eae5babaa9062f5ff21810e5500dcab6eb298a69838e83a6f3d8be33611fb017745d2bc73e62da41af8f9d0381473e98e175ab99c6a584a2740140dd138472319961b541eb56bce346664f1c332007f63c213de1e16ded14d2b4bac626502ff405d396b8f716d483568a4b1c3d28011b803d9f1765c92760b57964111255135fb3af4a8776941a64400bfbe0b06ff14392a748a80a90520fecc9117b7f21b7cac13769c165154394a2af6e558d5ebb2815728086fd41d86f167760cfc2e943311354a9fb9c6ef72c52fa14f28174772e3d85b55ad4208dfd14b2a79ff8aae8d4e017dc398b407f51651954c23198b9ed8da8f446b149f624cb109349e8902a5266a48092559786023057d9736804c084ef17c7916e1f15aa5321c7319be12082ba3ae9f3ae5358964a571cfec311b05055866377c8d38d2a1ee4db5c6ea1c5366f1af9a7a05d490f4f65552b0898594f21ae720f9827fae87ad2a7154d91e1969a6b9817e70e2ffc50bfc7f5b41a6fc02cb4b8e58c41090458469ded6b5c6b4ebd14acc4f60c0dfde42676cbfd115280bf3d127b9d13eaf6d884ed9f991faf8f3b44fad2d6b9ba908d2ae43350fd2af7606e29bd3e9c07e4bf04faed13c7502060d5a8035f77bc898e57581f49c7ba30042e532c0f3fe0d5cf9176f85c86f73ae3baf8d45560683a3aa958927e02c9e31ac0b9c70bc8f830ab69132d9580e7ef9ba8d9a734b2b7dc7b6fb9659252067e0c6d0c6a0c200882a047650bf0cd2dee2ebdb4db3cdc8e11202633f45804ddc41610cc13e359713e821e1508e6a6177f528ce3ee1d8d3e524c3b557db397ba85dbf95732439f2f5a06c1dce42795a7ee8bc6ccef2906e6b49aa1bf3ca9628bbf0495a031731391d03543dfe2761f411a3337f97372b8fb67f4fbd398796abef8378b5d98ffcc0cb7c7946807f1f61bb9c396c37ee68f4c947dff573251df73f2f7b53f33921f3537035ba2fd7b26dafd9b68cf2d27219119fa7bb8d5e5cd692e34a2fdb9561f6e7da9b74725d3d365a501bcc868095080ef005f9ca8b0f5a4a53dbac496630ac01000a02144e934a3a5868d0110806ad5a70c23d779b6c32171626c991f0507348f1a37da9f62cf0e84b6000544002d9040ba699d0656f0820a4bb0c803d5f10b9b2e98887388b533b8f2bf192683fd244c4d0d9d99d14098da6a11e16e978181c1749cadd98ac5e48c9c99cd3e22dcc87136103d5fea683b6e63135be2d72ecc2be615db951f47363a71a317332ead7dfd951df3b7225c98bd4c300f97cee1d2d96c361aa12172990e49e02212f9a435f17077fdfa9c462312ed99477d4d2a0952411da28f48928822dc2322d153a5291cee96b3ea49eecd52c6c4a0c2d53ec683febecad32dfba0519e34b2346f9fc1dd95455933acadcaf25c4924add25a25fd1186f6fce7e68b7db22f44df867b695a692b9ae83b8d54455f4429ad2c997229b594e3e87f34d1b7bf81309c97208c67f414c7780feefc0793fecb7bb315b6eb6c636d345ac274e098230cc5bc4277483130883b243678b4190a4c10bfe54dcde8b76c49558cdff1a6f3555794cf6faa62838e340d339b220abd08dfefe0fd31f08e35379baab6acd19cf6352547d430eec56591f62191484a2e53a169122e32f30acd9d1eae3f096b4d48292ff28f51f86f20dadfdd33ae55f4a2d7f04ec92251043b1f0a4a08c5f3097d3c289aa6bd64244cca97542261753aeb2583a24b6a6666648d8c3556890889969f52239fcc30d3557d5f4d554a0a46c974455591a395e51b55d117f91b87b5d90cab6aa2b4ac6933afaaaa9ae14c568fee3235da4c26f4f94821a2da8596ef33cf0b977e7d29e1a40ca765f9ce9232528894912c6e730993afaa9a285467a6c644f0132316841b849bd2d10a5268e98aeb90da727259da5469b29a392ecea22cc6e24dac8936af08ab1e114e798b93107d8a88e344d5435170112da6c9be8f5af438a6d664a244b90a4d8b6932cb555aeb5330c7f7651edabbe8b51b9df23409fadad38d035aa47d0445f2c93449cd83f2dcdb2c5fe435e553522aeb45d9f3beb5d2d7fc71388ea91d57967fd9f3289e393d1e2f7eb003143bb7af7f63aafb7aa3299a684ade40ac9d22ee3d25da6c51fec31b65c6e39876068e2f2828af97c7076ef0e2074698782673ca23f143d32a5c29541df0f321c5c8a9182d4243e601e4cb9007e25219aa9a794286fb7a6b2c19fb98a1a475080de71de13ae7795acec1c5e8faaefac12c07321ac4ea0b6e5c5033039b2c5ed407bafe8eb02b5e06210e680f748da08efa026d45af257145adb5f2a81ff5fd085628e615dae6fd230c8d63c2807ecb950af4b1c64c5405fd8d22c7041f7cab69a01c2050cef6e56249235a8be918f9645ea1a4fec452c934719893b7fc7c7dfbc112265f70b8527f7e5ea1a58c8c0ccb8fa88a0a398828ea03398488d25eea20da40c62086f2651631621c99281ef4b93d75684f0d52f93d431f490f52f90e556947447e43cecc506a54c571b0088773626029a80ade9406340b2d7b20c5a6b794d932085a1a41cb67c152c81156325150cc2b34a5745ef1a2c50a12284f9f72f251f2c7cd501e411265cd0ca5169ba82613f59ee71a229af50db73ef7224d452ff23f1145556b78c20feac0831f74610b7a78a1cfc55474c391255de84311ba1086d80bfd1b5d248c0d9a3e4abc51435391a62a4d534d54ad54cea6aa662a345da9cb9a79889e4a95a69b7bd1f715fb6b3889fa2efa8a79d08fdaca086ea9abd038ae8af24a954949c13e625a93194a99205c2d681a84fbe9f885119ca06d94da1671e910991952158d897d7e82303d4e303517d971d2f429fd7cc53d4e8ea25f5b5db82437551395f2f26dcaa61ce5be0baa385c13bde8714c8af71453a744b16991480d57f4512721aa626ab60361340dcc216a019e9182eae5059d30c208238c17951650d4a7f55774f85310092474cd3b47d4277828345d7929ca8f02201a0a4faf3ce51c213243595d9535a4067757221e1877cbd9f734aba4d552347f6df63222fd6a419a8a72375552cee493193ac76b91ed2d574bf22b4b7b324df23ff4abea4be1a47c524229291f27aac7495b6d16846b7f6b33ed89731fcea73dad2c078d783d9b28d1cbd79e94b4c88a3e91e8e9149db49c79eae3e43d55a09596bbb2a68c962f9f097aaeac40dc5d73a642f4172325efd7296fa9104edf507d1a648654c81216192aa435519bc6949c7dba827425e9faf4bfafbf4bba52d6f77b348401f77bea9807cd2bda6fa97d45eb51e2be7e1552fbf78ebfa7f8cbb4354349592f2e77403994bd2772e6260f1097a3c2118a249aa216bd18e9229aa2b6f46bee5efb9a73ee386ebb37c7688a3a05c7781be3559e922fd6447daaef569725ef4f6fcaa1f2899089fabc7c94a72349c1efed13d04f1549d377a2827fafd8df2119bf39a8ff48e98cac217f5b4d414d6b640df9d48b2038ffcd8ff339383ce87f5e3ae9741ee73de53fae42a84790558b588fcc90c60b96972f55f7e5cb19d2cb97352c7fdf25a9b2a6a685d04f79d9877843266ffa5a1f82c031863ef48766293343f929785ba13f0ffa3c0e07b1602928096fab77656d14bd2b4b45efca8a4f264ace6891f91b1882a2a43f590a096510789970b5d90ce55795e7871bbd30d28512f9ca2bf7a307c2d018d482303156b0269ba1acac78a3c61b5357225a5697966f377fee3b8c4df451545272159a5651e1a4dec023a256c953685af42938ea0dcc217a51a6422b327dc403e5b99af2518bde5f844bafd5783cb50e99a19475f684bee8b7a6b1341196b3196a59725c7c45d1d75665d52195c59a28afa25a5f569590bb2b6b735425b3b802b651b1016ce8683f96c3fb653c823e25ef9128ef0b0a7de867a1dfdfc5e0d24ff908fa8b640dee1465392bc3ad9f92578840c00ca57c793c2d47798af21245634941f5cc2bf4e34b1d324d1225afd0cfd583f7d59d1e6e6551d8dd5a4ccbbfb8831b00c6abe6e6452527cbd70c7dc3d566f18bd1b35e1459595f71afac89d2b4fc3aa4a5e5579baa64a6e2173395c844452f8cc0d272a6a5ac345ad61a2f8610d1bb26d152be572a6713255f3e99a899072defca11fa01b3bad2663bb458518289de3143f90ec6ed9c78e180bfc07c042770939432f26766b4fc172f0f177cb54002919c94f1432c168738c0010e6f78031326530c5910a18b3fc4c10b69a0c9c18b8d11dc7ca0069e0b74306b8314bc40b2c54bc56207378864884213a490c50a0d375d90b088c1466b976f10ad300525a0610b4718c31e90accc6c1978c006900d2f29d379c19330e839279d3e9fd0408f74b401841e6eb0840b62c6e0843bd4a0010aee0627cac0c5ca0f7568b2871a781ba4919215fed0e42bb9c005252b00c2e62bb9c005a52f66cf810d13f905cd7451ca71d4ef1664fe4d3c5cca059b293fed2659b1416f928e1aad9b12641bed429d4a38f1da515d090e495725a5db0bb20de700ad82a6947ea8dd4c8f16c2087275f4220735a866f81822404b031071d2b2d483781399a886080912d3eae288112211c54517908a8e286d831cdd6d92761da5ff1d1780cad1fb437aff56d1fba5bb9452e621487739d96023013680b57c0e53fcde0363c1ced1e562f414a5b902cf5536703986d189d8125ff2463b9ed367e0506077f71e1823c1da57cd1225499050cad55a2bcd91a352666e86d20fd682210c241269a23aebd58f3beeba699074e1648d697f245dbe274997abbd7c4e7e12cc577ef9a50b49d698f33590f6f347234d43cf9faf2712319c4f0a22de00406c990188e1fcad1e40cf4722a262fc23b4bc8b28cdd772887621446c1b311d1ef1a525c15a315825255aa39ce1fc8dd2df356b5c2c5139d8578c29ceb93b67e802f75718715ea179446ab2760c57641bde00fff8257a048e9a3f62dbe211381a5083a30147bc8d1a2ebe9214715570f65a7bbaa6ab03f31ab80c228a72a18319b810adb166a8753e82301d1f5253e37057f146e464cb4d5aebfb828ce122608e38f1c61b6bfb1fe634e1e2cef7dfcf0c05d63df0cafcf8f27d07afcc6d09dfdbfa2a9ec7f3d60b57a5d3b91cca7b442f5f8a3c95100a77a5f678a28e48241289442a5ad451f1c25509559ce4863c3f5d5db82b3abcfadfe39828d9836b86025b6badb552e2172d4246e4a0bf50921b52815109855e8230a1eb0a038d8e5fe86805302cd1f7fd6a01fe1b0e5b4d9035c0fc8552882117b246c85925687f69a59767dcfd3d25979bfc47a37bb9df9e21b87cbf3d44d0be3d44b47b8c74f2f6cc68f71ce1b8a70bed4f6a9259ded6ae354327d2b9be191844fbcb97a322183a224650aa6de92b954098ff2d647cc5bb24e3bfd3b1010840004018fb5e0fba0a4310c67a9e746de00c04bfff66df13d0051e0163402133b0051ad1fefd4ce93533513b6cc9d26ba2e4bffef6e88b2795dfb8c9fb9bbdefb2f79dd0ca7b30b4f242cf5a8ee3fe1d8623e8d91a7e6108c2e4dde9743adee970d1f14e00bec8c5fd8a770f5a02bad29e79dc67793bc457c4fd1f22ff10204caeff9585e5ef7766b88aabbcca499b9f2743882a44fd381c0ef5aae765202f356ffb1f679d5c0e76b5e5f0aeff891e7c20dae29006147d32be97f17d2710e6e3c8f86448cfdaef0339f0e3ac17afb8f2bdce765cf7755dadffd5e7ea7b75d6bff93e0ebff89f24848a8c199dffee59fe7335c3131dbf8039d105d0f10b33c4680ee523dd4cd4bb66e8af8418facf80c91afe3396c81afe336e68c8f48c98aca184e844bb68e041fb2f9191c32dcc845990a1ff0c987409af8005edb0d08bd86285d80285d8e20fe2d075bdee0ba3206b845bc41af753ddfc2015d15b3e5cedb707c1404b4037202613c532c32367fc0ead3c1eec510da1aa0f4477517b202ff2e3f6daefd85ecb3eb4a8efc377787e7b4f06f2c2bdddc3b5d6c9b5ffdc73fe7b20dac3218d960ed39c6c02c32d0bcb9b662630a44bd49ac6102acdc212aa68935b8279e975832bf5d4a155e945228556a44df3df610b04c108c6645ad6dcb5664bcc172d3b0ce78e8c27a9ecb0e509a2fd45dba3ca786f4fb47cb083657c04bbac80f892a2ed04615696f0bcf64d785ecb4d74e0c31a37f92b11b3ad2cf1c47bbe8927de937f68b1437bcfffd8fe89dc84e73b907f68efc9df2cc6f8cd5ee5c5d530116e721b2a3a823666e8412ef7db868ede8ae76932af25334565e2174b42574d8c369384ee8b2563d03b54a2dd1382723968ffb83b23da1c3639ccec606466869cb7b2881b12b19ee7796ff1eee1e59048d8e2c28271e507e2769e0b1243d70c8d59bc11e38da843ab6f3651325e847768732fdeb57b19afc9f8ee7402617a9c4018afbabb4b7797eef6ab3d8139ea24694ec7f9c0b79db7204c07fc0f6fb07b0b76ff81303d7ca67dac34577fb66eed9ec33d7ca62da788db79108481e1fcc77dadb556aed6cad5daf94ff41df0ef573ca9ae3e54708c61cd2aacd0ca432b4fcd74078744443334a01154835390fa62a9b71568d2c7d03e08eaa05aeaaea484538281b9f472c2ed88d42674c0f95d1c3518ba603a2cdcadc20a6bc7829cefeb8436da3f9c098fb4bcc655e489077111cf5b0ed42a43260afc40f0e3743e0e17b7beedcc22dc1aba40245c8aefa7e034f7fe6372dff9b08c2d1df79c4e85354357193243afbf69c8f48cf63c11f5135886569c19df3f3469c616fb1c10867b02c717b0032ed1bd78f237cbc2dd2aac2be3e4d4d9024d7afb2008f36f3b325ee5f306a249ef2f0377200ce955582a43268a946958f01f99a17b7defb558fdd80cbfd913926ca22af7fde6b8fa1c0feebd6f36432e3bc75d926c86a418a9c90c9d03a418a909493684f54a5ecda06a861eb6f6a56cb8379e0aad7e269afc475cd03fc3711bc723e35971be0882e0db3c70956b4d54e7a3f6a83c329ecf23c4c3eab027a6833d413c2b8f8c478887e551852d95ff401815f08a3ce18c9b5cc3a1cba27c11ece46dc54c77dee6c16ebad2de5bcb558e26ac99a8ee3d6c4dd4d4336c4d54bc13f5854726eade0e874666e81fba381cceccf0c80c699edc1d5a790ffe05613ab9075d69ce7fb3a9002d09206e68e52607b1e038431169ae54385600f1ede823dd90dcf042627c164b31557a8aab39afbd3c457a4dd3cd44916e66e8868822b92186f3a5fdb71613225d5ec815a2fd3b96747996ace13f44ba5821d2a5f4624997aef5433caa6ec815a29f35447bd7596bed73dd77d9d65abf83ab18e9ceb78030d55afb2d5783382cc24bba7c4bbad42fbda4cb130989d0754426aad3922e177c4b44bad8f79fb144badc3c8389ac71235d6c9e11ebf21301992cd19e636c89855308871016212c8243d70c43288434da9f0b8f8433da7f0693300a3adc42fb77a17d874cd0bec5167ffb87bb3d2ad0171135a309c866c61d3caad22b08d2f383e832c389acb159b2902e33663df0f820de50f90df2e0c02383e832e389ace11305be771ed567f58c26135552cdf00e11557a410c7d8613e9525ac91a329ec589f69f317b5252cdd20b589e34d3a4fffca4b4922ea5214164ac58483398489752901931e952029968f79f5cdc70b3e85d729590106bf87bb8a48418fa3f2e2d21b6f8cbb0420da8ce1cd1fe245c0a52f242cb94a0a0fd91687f3088f69214b4bf95c934e410512521338cc51bf64b3cf02459a2b8df2115b47f2885e8521ac2124221de104521de50e142ba945a46c22d3e4442742911d9e28def3d04800f85f86db52bdec8ef2f36e3a8e990ebbd1452ef924b672cf5f6118cd9ba2f0921bd7f890747d033be3484e5fd4b2d19ef5f22f2ef1f4d43643c005a5a881211f978877010f241a808a1248cc0a05de506f1461dbd628b3f87434790a1bf0a0e1121b6f88b706808b1c5bf83434088a13f07877a105bfc2f0eb1628bff874332b1c5bfc3a1202121dadf619dbfbe5910daa170ed975e1ed5446129a897c35618ee2ebd4aaf89b2defb9794a85edce6a583d05e10dadf03ef0d898456738b1a9fa7e71677872dffb095b58d08b8f18b26d8e8f8c591257a081dbf38d244874388e1125eae2f5a56604141660bcf0a09da3b5d330d596cf16ad4f0be0aeff7ffd837059a8643eb87bbbb9647d5d1784a04efdfb5e28dfa2bf8dd51c197eccbefd7bfc3df3640359ee2c0fb7b541f787f8f8ca740f0fe9e96a742f0fe9e1acf0d8a0aa58582f2517d5a9f9acf8da758f0fe2095a7ac787f50cb533ede7fe43df27c157987db46077e1341c5ef687381dff1b5234c8adf31b6a36cc7d9097ecbd596325bb276fc96ae2d6720f05bd294e0b7b431e2b77c6d09e3f15bc6b6946d39db733565f664ede9da73664f9a3d6df67ced09db33b6a76ccfd9f6d57699edacedaeed333eb05b819d05784e81270af08c024f1360790305963db0dc5892008f008700bf9be483007f0073007b8d9ba406b005b0fc0a6027b09c00964a6089847c07601d980138ba7c1e38bafc08e0e8b20438ba494a009f00473765404a81a34b49058e6eeac01358e2d2cbab7815e49756c1af20ef8ede2502cc2dae8e4286f1cd401a4f19f1fe9c96a74af01778ffabf2d414ef0faa3c3582f7075b9e22c1fb83359edaef0fde788ac7fb83324f41e0fd392a4ff5787f8ecb533bde9f53e32928de4df0fe1d95a74ef0fe9d96a7a278ff4e8da7a478ffcecb531d78ffce8da750f030bf808f9e6ac01be0a3a718f00af8e8a92372fc878403bef3d1533a3e011f3d15817fc023e0459fc4bb7cf4940498f81b1f3d458167f9e8a92626f0457cf49405fe3f7aaa022fe389f8e8a90cfc8c8f9ec2c0e78f9ee2c003e0a3a736f0427cf494063ef5d1531e78d3474f3df1a88f9e0ac19f3e7a0a044fe3a3a73ef007f8b9c5f5a8dce4af82bc3b29c855e4cd690fa6e23d2ae77e77a8c0db8b951f15b8bed8f95181b517eb1f1598be58fa5181fdc56a1f1578bed8fa5181e58be536aee314d1ded3692a707c095ba1ebc3190f69fc3d185c6d18544d812f0af0950277a2c09d13e08e0970070acc2901e6f4c01c1e98b33148020c8e0083346ef21701064380a39b0af020c01fc0d14d03780fe0e8261bdf011cdd54e39fc0d14d02780ee00de0e8a6d36b004737d1f80c600ce00be0e8a6f02d802b80a39b00f04ee0e826219e02b889193f011cdd947f87047074d33f1338ba49c62f81a39b827825707413cb27812300011cdd14e31f8091c0d14da37700d6818fc039b0111806370033e0056b8c037f33d7f0e70bc0fb2a00ef4f00de204cfb23006f70a6fd5df0e6b0b4ff0dbc3934dabf08bc3930ed4f04de9c99f64fe1dda1d1fe28bc3b30ed7f00bc3b33ed6f00bc4705c0db5d04c0db670680b7d3d8c0db57db650480b7b35af09eb113de534603ef391b02ef6963c27bbe42bc276cbae68c10784f9a12de733503ef2993f19e2c8cb78cc9e4cc86056ff99230d78c0ade926625c25bca48560ade3186779485f08e3310ded146ef6f163f78877a7f331bfb9b49d1e91db6a49028d8c39b061e6af437f3d4c6e95d44fb225be6dc34e700be4d7577583f6c4d945ca2ad8d4fcb5c03717768350bad42413a9796f2394f795e6a6efbaed502c2c8fa5dcb53ad0d6b78a3696d48b47cdf92e8acb91a2df1f61b02d818238e393f4fcc34d56c675add234e85e5267fd9b554589e227177a4c2da5d99d44a6981043269108180c31218fa11165be8db3d5c9af7149dd69efa9c73cee94e7d7b0d9f62e24935c349ff8485ac41e937c3588698947ca1a7d569a54f3427d569755a79616dece1b01f709470e75b87794abe44bf99a98d49ac896cfb6ca3aacd0979a2a5a042f4cc7435c31904bab2b24fc6e9b0bd62583e5caf2179cc53bfe5ed4eb4fc4d7299c7dc24bbee3dcf9bf381bc44ff39dff3e6fc6906f212f3debe7bbb870b82d93ab9e047bc81366ed176dd9bc0f0603aae8b7b93e9f81e9ba8e8bfd16f427b9a7f68b1c39ffe8ff95a8ddf04fde14f63fca13de6709dc3d5f2ca8ef9796bb9296eb099579a981388139e37989be2cfbcbddc147f7b49d7bed8a20a55d8620b6d464da3b572f4db36d2ff083402912ec7711f4755a5307cd2934a2e8b231dbf19469f73cef719bf185cf9df05411046aa60667bbde41c7d676e71f7d5314a50a73302913a608e7b3d1e1414693f281fcffd7c3e9f8f8a8c26d858a26feb104b54c628ec146461e829fca5761089d17c3b6fa7f3c4e9ed74aee759cf7652f4dfc7797fcbc1e07f1cf77db26b7592aba0f5be0773642d73d79addc8e12aa77215b49e673d8fb3f503bb5b5dabd6f338cb711ff7d5ca792888f53c5b6b4724c4ea8c8456e111ebd5262f4e288810ee9b71baea3da756dcb9ba96778b687f1953612b86458831a2b4d2cb539e98596f4d6c31d9ce7745afc28447eb709560c59773dcbdde1a41e540bcc1e115efeb2fbbd6fc78707768554346264adadf17645d3347b4cb5017a11a1d42c2659016e524da1f9ca11197d3dd5917a59432929a4c2d1771b955b7f26474cef7e47b02c6689754bcd4177819f3eaa93f324dde8576d9cfec40e51cf7e98013a345e7a7e0b4145370fabe47c30fd1c5fef78930f71eaefa721d07729a0acb7d4635873bd96f623c16072035d71dec37b145fec55570205ea2e55b4783966e062c75a7c345569cdfc0628bfc4fa6be54c1dbd1a077d83ac9e8d212ed9f0eeeeea4d7d8ef8e78301aedfb84d49752765276db67f120251329abac4b4a373394d55aaa5c0d694aaf924746e7e0d6f7184fcc97c5adff7d4f5a723343102cb6f873fe996ed7e1ee7b1665d0bebe1f0eaeb55c57a7e874c76d4f66283915e8c653315a6495f7072d9982d333de1f04bb51c5d59c07c083cc105d38ef99854588c72a5f71d51c2eaecad797a1f2f6036164c850796732c3efab3799e1a7c5d8b5beff54b0378961ce1e8be1f71e1ce3b23880ef5fd002d58be7ad3ff6d80c5c05a765646712c36f6a19d899c496ef39ee06fdbdb321d6f8de6a8f8b689f719115f7a2bd4af6989bbeef6ddd387e135be2740df476f744a5f1040e5b20f85dd769db13afbd967d68ff842dbd4a4a3ab0f42a2959a95b5ea9f99be8407e22fb8d9bbedff2f75a067f7b4ce67e1fd8e9749b93194a00e00d4283f617820666b92413dedf379b6149c9bcc06643851deede6a72f4940c0e28a594df04318a5359c3b83b6c79545a27a58d0e08239fd4e06e57dc1d5ac5c15ffac9951c2ec0f7220853021ee073de7abe22ae7d0f08d3c303c278ee88cc10c49c8f060be9a3e861618bc69393ea143351376bb9d3e96cdb6b9ad675f776eed5fec60382cf824978735a9443239b0cc432fe7b74327257c4adb5c375b80eadd17513a1ab67aff56eced75a39e3e47079852be2d6e7b0b4914966e8455c226ce85a6bad28e0d59ee77928204ce5be5a6bf56aad5ead5f0f9fc1709e67dff378aaf492267f8e9378b896ae844409be973d07d7b33e93204cf5dea3f2c0ef3d2b4f4c162bd0dd2b7eade1509069b2d9a3614fcc34d95c44cb56be9741556c9993f3dd9ab0c585e16250779d184b889021b11a1414141a9afb6d37292f88969ed7637b71ab1972325afad86edc247f2be27a55f0c2164c11295d3a32999f511ebe8f9343078c9db7a00f0f524aeb59cf0b5bf5432247429a6931497e9f0d2e0ff99a4e42d3529e5658c81aa09511c451aff070f7c925dfe2fa5ead6fbd062a272c4eaa53cc69654f589c54a798d32a06085355544eaa13162310a68a9eb0fc4925fa538c74895a74025fe54473529db0a0aa29ba131627d5090bf059f0e654b306ae7932729ae14ea72e6aeac9e6a544e5f76989f63fdd9c98a87cd42cbf4f4dbcdf9e9c54272c524e2b6df113efab4acb8f1d8b49ef61958f20cb77fe0b7279d4d7f40e5b9d19ce4c1438844a83443adf79ffd004864bcbee3ec968f7dede97bfe5d866333b3f0fd7af99f3d67b2e0a37cdbe2154da7b6badfd3c6df3fcb2c5f54df64d4f86a8cf02c2541c6e71fd0f736685a91cee7418fc4d36519d2ce34db3ee4d4fa44bd4dd10aa89ea1e7cd28cb63682bed59af71454d71e5e68c5c178d9349ba1f71504c3e11e061f7c19786f4e40371e150dee49e62484e5717e9f5ada4f444e2ece3ecdd07461bbdf2724279b539295eea316fd3e6d3210540161c08a379908f4b20a7cccd03f098b658c6a03d1df0cae67c12faf2ca1fdf63bb4dfb20f2d3e307f59cb405eacf735c80c5dae66e89f0caecc94426470bb99aea66b496f937547b473fc9d6879232bbdac2cbd4a4a26ea3eacf42ac5b47bdb8c965fb796a756763ce1c3f34fe4ad15b63a17ee8cccb09bd1fe2c5debe2aed5757ff10602135aadeef6a8ee7b1fb66cf7715f3681216b748fc3e3134fc53f917f68b163fb0efc0fed9ff89a7f6cdf815f5942fb27de02da3f912db07d07727453d8e270ee7fb845e3c5a321db62dae5a947dd4ec47293d7395c4f04c574547da341304f8cedc305a26368557ad58a3b2bfdf82e01616eb43f0a4c89fb72d39319822a50f5cd3637fb627051402382d03633f424fae5a9951dda4a13db0f8f96b797076fb8463b8d184aafd2cbf33cd00d8ef9349e8a2fff2abd32e806f6c5e06e87d55a6b04a57c5bf1856d713b14ed3787bd5ed74623d13756007df0fd06772024075a880ec01a8038d0fe1bcc427bcf0a32e405da3f6e14bdbf1918d3e50dae48bf41196cf08a7f096a379a1bb41815248afb4e88ace11f4e4177dd10f0bbb0f5cdbc762365b0483372ce9f3daa556cf1f7b027c8f4c87870105b74103d2ad8e3034f1024c826b6f8731ec75923a21b9b360cf9505515b61b9b36ac81b39e47a57203ed3e07bd3f8d056f8f0cb6270bcf0f405f68d0173ff064e151fd06e5c9c5ad0f0291d8e23063b0e81db6666426a44076a498ace13f236bf87742c22433f4f0a5fda5cd9c3384c1844b5c4948031376111e891ad5349f52e338f67338135b7ec897d0d511e267dc7b4931498afdcc97ce20c36c06ed5f928328ef183a73f2f6e8fcfea5262537c4521ce28d58bc8186585a43bc41faeefd4b61902532c41bfffea5324454fd9b37890e797f74fe5d6a83a69921136207875dcc1049d88518fa0b81c325008045199d3323874a66d815d9f2e398555ccdbd0c5cc5a88a91f69ef4314e29c83b34f2564e2eee0f8ee338102874ad400afb230731a4e144abc8cc90061eb401f2a6210bb320c32b441712121a398c827421d9845608bd883754bae0b89092c81ae07700c83b9c821079874766e4900939abc8a8e480142321912e2f8464235d9e454a225d7e080909c9869444fbdbd148e547208c8abbbb7477e95e6b65f98a1fb43abe55912ca212cc63f9dd637b79b8042bbda270ed4fedd5126c2f5d495f52e2f22917512a2fff8b28cecbdf5ef186a7e58b3a2d6dfd03613e18dc077f0b4e10418030418030a2df42e5af8cc94594d3dd9d52aa699a26a7cc5c8c31da4dd21a0b5b3f03855a613394afc53c2555758615365135b48a371c546927c5acada55b67116ee7379089f8e27175335d776486a6033d46bc9919ba0f297bf8cc63c473e42be27a6866786486eee96286d6e3929cc49e184357e9d505b9f6a5cbbca2f4fa8ab89e986de5e5c82175fd1caebdb75cdcb84f2b24f8374198aeebfcc697c042978d6d29a594554a59a5f4ac77733729b64317129210ceec90c66b9cd848b12fe66a2aac58105a8535c33987faa896122ee7aa5f3f2412baea872da977d80a89cc30744d94fcbe7e98f25efc4f9e962f33c41b5efe4a3357e62597b4dff782ab4dbde27d12ed48a6c97f7f53d7ff9ecc9473df0ca63d7cc40366e8a9d04a0cdf0283f69ab98fd2a5be8c82762a8455d0fe3bd4021748bfc32f844a7e875b089f106b3021864b28124de1114222c8d01fcc9ba477f8e5100a990bed1f1299285f32439f8547360cf3265c18aec338aeb31f78393466ef7a2578336075c612d18c1b1511e776e0c7d91930af7e2eb8bb6b7db1d8f20aad422b8739cc5fa75519f4fe66af30c0aed5bd741c0c77872d9b96c765d5d08a375254d30ffa05349e4c30a4f91d76d1fd0e6bb020fa1d7ee105ed346627950e83f6b00bda575cd01e22d1fe91f4318652a0118b2dfea51734d134e440ca3bf4820a328442ace18a2d01405e64def5374e8bda9cdb7fe087341adc4c331318926e316c403ab6dce42f8970021fe1293ae33b264a565d7f6a7446d34e696c74c4943c62461b256248c41b0f9828673243f9fe3a5c4744c918cea9c41147e4c9a926aa06e16256dd9c154bbdc9599bdce8264e455f1bc51bdc15b125a63817c81ed8c842fb6f133703edbff1be9c6afee6541cbdd14dfe9fca5b3081488d230694ed53398ee37858ca71b57a14ae37b73fc5e4a6b6ef6e2d0436bce549c5bd26b9bce50722e1e92dbf0573709e8bf2b73fc55029370ec719469f51203ee426bf9e84e84d310fef5ba0e566816c747b7ae241dfb3272ca44b7d6ecace4b8aca95be3745e7e5156fb3326f1ddbcb24b6977faaf26be6a4740ecc8162df43e1b6da8139b6e751378ee336148d86524a29cdf2293ec5c81afe1eacfdc5df7730f838dc3f975f5ffefc38329f5433742bebc4ac6cfb6cdb72a7796cbfbd44a23ecd7a567cc242d69079c57bff4e4c4ff95374bad2a779ff360371c47486272c4e5868208ce679525a2d29f5999ba6fb534a95681df5c3c1e5a8ea37acfd57205ae2a8ab664faa1316d2457e547e6e3607a92c87079ee3fb88a052a9543434303636f7ba6c6cee6571f366ce4d083696b60d4da5534e7328cdfb988718bdfea573345172e37ea2bca7f4bb49a9bf7c0f7fdc57efe4e20cb9cdd9a0838d25fa938beb6fe36fb7d151daf9b9a5dfc49bb6db3731a76df7c5b75dd7718a68ad6d3215fcbdc97896ae8c901ac5c947c806e6901ac54987228b2d9d979bfc7037a7e3e2c0e28df9fe1c99a778bc8d1fbf3b3e7e731a8603e3c03a326ef2e7c0e28d8d052907bc47f11b50c1fb73a1a74af0fe478c40059e5ae2fde5ca89f7973632365754bc57f1fe1336639e4ac13b03887841f184407a84632586047e010ab8c0e304941010800ffc101d10c1b78060bf8d8f9e22c1d7f8e8a9117c113fb7b8fe1d194f7d5c3ff2eef8c82cc056fcc775efc7757f77fc272eb282b75658618515565861456541a7adc0f1e553e3a96ae3a915bc3e307f16e0eb26ff15604e05d85380bd0aec54b84f95bc9135b225551cc0f138ba29f524c023c022c0d14d063802e7c0466018dc00ec267f755c9eaaeff18501f8056b8c032f006fd99235f266aa66cdbc71d5c85d3ee334be9261cdd894cd69f382b9666856322c199b81b79c499b17cc3543b39251c13bc6a22cdabc768479f0fdd468ff0e07e60f7a2f77a23f4134ca6c7f58daf3bfb8cd87082009688104e2da1d838d251b63ec64898b2d32827208beb17cc6696a6eb8d8958de6ec55be2242c6c5cd5c9a51cddbc4ab1aad5e2664ddb88986abb936a3d7c3c29b988d99d0f5ad11ebca6cb9b2e15e1736baf958dcf3350b89781b23b79a7c71b07b338abd4c86c56ab55cae99191a9a1aaf719b9b9b584ca66374958eb1e572cdccd0bc6231c618638cb31865b398ec2606bbb189352f4478ea868bdd291b11e12a2234bc89d85e4e305b2e8e26ca6aa2cc26ca649a46597d912e4fc93839bbaad1ea6534e9d25ee48da7686e5ef206266f6ee48d7e992c4fa9b8d59519b1be154ad77c794a662316fa7c5d6e747f14be739c2d17a9d95d6a030023d6e16aeff58988372a105bfcfd8b88290be0e135872f626c83f68952f9620b4f9c007b700d30c30f8b8c2495bf42b31153d3770245e6034ab413e144c7f86b4b958e363760c2a277bc99d5c85ce14fa7b4b10da0fdfd11e0360c4077200369df71eeee7bb8dea30474b5b2b2e23f412392c46db4a580737439798f66deef9c24dccdc653df6b323769a01bed9ee264cfdb659a8d6fe917c3f241c944699f249f97cb3a324f89ee7744b8237393f6f97c2814aa405ee6f7f6777c6fed7f5ede21faefbfece37b518e9ded434d33131821984fa4f6bff9b9779c4c14f8da77661d0e87c301435e28452a11237a19a2fc438b1ddf8bfe87cd2bdedb0fe28390917f7c79c5cb2b4b04f1f69b08227f1322d173fe03822007dc385ba888c82e315f44d9630efbf408cf15eb760f9b0cac1f8e25e31e698d634941c1cf26db649b13958c6fb24de6614dc6f97c3e1a7599cbdc89cffcc944c9b74eae970282291c8eff9c9e874173fa744d93a9ae8ce5606e865ac78916a3b595d6de7d1a01e6dd793b67e7e7e428e1c6c8b166b097174c6b1f7369edc3b5609c14bc81e8944f92197e5e33d43e36b1457bbb87eb79f9c3c1f57e77a6c7017d3e20cee3f094fb79c55019bdf69f242496d7fe63136fccd7561ee53f5f449795e8f63defb21878f41357cd82abe0f47cd2e82d07c290321177441afdc4ce043c22ea51f62633d43ef0ed087c0d7c6d62aa472a31c0b7a07deb31b0c75848e0c45393c05f016791ef55465ff618084e30be7cd86fb0cc057f7764fe9ff96920ccca12a2ff7e87284737e51d7ee326f0bdff7038d93ab99c077fce3dfff3a1f9293e71d429a10fd87db8a0b5d89d20cc96fa3e52d3d52690dd3e8b87fbdb56d50527e73bb289f2de2ad1db651f1bad71b214546f2bdb9f9739163764a2fcb5e75c1ccd44adcccd19f93c0cc2574b2bd38474649b9ba1f6a0196a1f1b1cdd34f7e7a5b58e6c869a95c9b4f656669d7caa899af3b5ff64266a6572202bd3da7b747be666384118e7b6a9c9865082a85a4e8df67726df03f1a1d921827c98c7e659ab7d43a8ac872398c4f6f5435bca37844a6fdfd4294f35ba7dca97354a53529efe7698a6daa798669fe7528e664aed7f600eeebf8f1345e9574a3f0bc2584ff631bc5df306c4c747eb7f7b88205bc5dbf597622bde5457fadb36448ca63625f3d8be630243bad8a7b37ebee64fde536f43a834fd9aa5eed4d046539a796cdfa13623d1a179a5f3da4bcf7b69fae87fd96af60373889e661ef453de8aace7d12ab2d57aa2efaaf5aca595be88624d77aaee508a694a3681619f037354faf3bec50fc2e07f30c754bdad7a99c76fdaa33ce7a9f92899ea8dbecd3d1c56dffe27356ae767b1fdcd62594bfb9bc0d8a18dee640e17f77bed3b1badfdf665cbe9cf9f0362dac3612630bed340988ec30ea35a7c4e8d8e33400f6561a3578d6a750bb26209d13859ac1dd5364fabb4569fb2c6ed8b5ce7d9ed8b9d67ed17bfee888eefcd78d66b74f42e74f4968e91c99399af3c26c6e4661a4152f34a3267a691e9723283ccd5644d213327b22e94bc6e96d474412363e410c9a244745c49554c326fa6d32631268936a0f8339c4e848e4f0db04739a48e529e90d823a2b69d151df2e3e7909f394db82b48489009399998ee4c38a59409aa699ac684566bad9589ba6ddbb66d4c6c2ff46dc759cebab999aee992c96868a44aaaa28d96dccc9c2c2e13dc0b7ddbe9f93e73119a2538730ecf71aee8f09f2f35103db921a43f5cff3a51d373adb5827fb8b435511f2cfa8f2b82b4c6e52990cb4d93f3806a463d380d5f355ca9b53d627d666e02a9402e4fcd4ee7431904aac1f16505fba0cff2588b1df449d907e9e9b3601f2bcff220158bb445dcd190967c995c8c58339c21ed6b40aad832df834131339c1fc22012ee5097a7a6ccadef3fb5df1f4bbeb0bcf54f824ab0d099a7587e86aaa7a6d49a8eac33f314e9a7ca287b2a7c4ede2c8ee5a9cbb1421ceb8359b2963f1f036fd04a7f2c900af4b1386d84285322339c93d31ea42c4f8d48926aa589d234aae1aa7df28e91f7e73b1f0ce251513e9fbc3718f02b1232ea8ea6691cd73d058dd0a1e113d095e646acd110ce8398a3bd487bcfe7f3577b8fb6693f6a793ec6d7af200444af7d525ee56b1eb13cafe5518bc709b4cce3f3f53fdfd181f25adeda27870c4383fef31d50d6bef338fc833fbfbd035222f0c99def5efb0f0e2111fafa282879057cade215106505cca0ff3cca83f0b642dba0f73e1fc123a44ea91fca1c2e6ecd9ff29fcc23e5c1cce3fe474bc934531009ffcf3ba8e3e618234fe15af4f53f79ab643acaf52708010f0444d983770b40ff79fbc13abcefe3699d07fd27d319e6fdc3d3409fef6875c41ab5266a6a4f276a8a161eb1b4dfa3d19019ced736003ea7490493f0380ec270de93379014cce122f4383ce54318f41e7c53702814ca7b7b941c757c4010e83e1f03e563709880b251004487bef39c078172e839bf3f56c71f04ff93f2287873321ae54120cfc7e070e17914cc61c2a52bedc92828bf3f47c19c0fe1a8eda78040b90aa93b1fdade3f0feaf83cf846804020d07f3e9fcf07df07811bfc4e18faf3f90ee6e0e07e3e46801e456fcf7f8f22c3e0e0e0ee14c8f4dede03fefd6d03e1e0a87138885110db2990e9ed3dbcad98e9ed47ac215256217584b4ff06e3ff4d141474a5b59fcf5d4e47907aa9bba8d4ccd3c6992065886600000000005314002030140c070583c18048a627922a1f14800c8eb05674561e69490e53c818430c10001000000000800010540086610e35d2c4e3eb640ee6295a5c6bb3308487a5cdce1213d734f3ccfa695ea098279de442dc32ee0831b2bc949ca40b8e2b8d1ffe596f9630f487f3dd0dfd18941c1b86e4126d61309143d334b42145060f188ca962259e33d0998924c44b15023a103f6d26107a28f362f284cd746c8d7f160c36f03cd73b2638984b86871fa2507e7a172f5a9df842699d200952607e61ce9ead78db43166a342c86340c04556bdf0f3d8eac6ca0edc0b75b9539b749da486365c106c2e40445dba7409944e40aaea1eb7093dce5d58ace6a7a1f7b5521aede55be9d86155bef51bf51071313d36726f911a00aa8e1c04dd04421b6e9dad10cf8d39e0dace1172d2beb819cc4322dc0bf6e051bf80acd3e1e1257c537c9e7f27bd4d37daa8655d2b8aab70ab62a7b5b9acf0a6df412b04f9e84995a6e18c1e6ee3a51cf29188160405b3e79dd6340fa00dbf218a2feb52b370467d5dee3abb585af35b3fdb4b4345fed718fd62bc007f7cde8a85d720a5d982d76402b89604a512fecd5b9c81f8653b12a3a6604c993a155467ad7171072e762424b13616b845f5ea58fadff43598184469a5eb5775219b9e9691a514c52572ff339d5a4aa04083fca0d27af1d4a777bfb147fd0d71a44ee7ad0eb5325d8646ca47d9396087880e515eb1d9ecc3d060137dcb32afa7fb9102eaa61890edd31c37accf158343af6e4e761bd0c3f5c67a5bbee884b3d18f2992f04976ec84e25e8cf042029712c9ecb6ad956a30141be331480cae443898e4c1f8b14487564b8d8d4eebad549cdf0dc77ae3df0def53647239cb2e4dd2d1f66d448e607029c77412f957c00240a7b233305c76ca8a0f4bb7e39d90537877932609fbf27307c4409fbaaf13feafd54d845af62fd1ce07e58641416e076fd98a99651d0cba26c8a7153d6b016f0376a77597690c3a50962ecbdf77712c6cd71ce01ed554670fb20e53bf9dc0da12e4f5d86d194a25ecdc68e17139c21faf9b2a935bee8a64168089b4e33c35735d2c83136b3aee9328e62914a3b2e0bc4446b0c5f245efa8b5a6c973411c6624f23ef2c62e258797e5dd68c195dfa6c4bd5d5581720b01061ff40c5c580de113e5ee1238a6128a474943cbbc26f4f528701c8cb62bcb9996cb528db88af90ad9cc939e5d7f1de25f37de3886f80914e611799f8a30167ba9b3154d76d10b40123f4f7b0548542883a54bcd5f858b2990ccd4f1c9431e1d71d0cf3100b73dc8fd7472e6fba6910f9f35a6f038249a622bee79907dbfd10cb36863e536c464266676767354ed5f4de4fd2722439600d3df1669bd51043d8bae630aa2097d87b3b336d484157ff06c41183c408200c8e4b348704b11513ba2a61c662ddbe3f0e416fa69e31cb4321e37a0201e778fa927b4c607d75ccc0c3a44f24d6beb2d44f983e57c8e62de8f5b6f87ec9d244cd06501271d501f2eadd5aa7993e7a2da87e091f4e50f3fe16574903bd3a377a832701f9e28d4fbfe2a3564ccffe06a822006fd4d6c9877af03beafcbd3f89cd7c2b498a78e61facadd74e92200262ddbfc0ca3414e10765931c98eb4afc925650c4d62d9b7d73020114b432df005c573a5fc516cefd486920ebc19918afb0cb35da35da3e0064ac03e38a2d3588ee9da78a0620c4655f6cfd199a35805fc723b6f46580c16f724c6e808bb3b51cdb6cbbc1ddb5fcd7c7a0caf4e0971635e0b01648a40afb0fb042d96413800fed40a6adff225dfa840fef996e4040c302a1d6f4ebfd3daac3accaa2fb5185487f9cff1dbb42cafae1c0960d11bb60a4e92a38db2328b4edc75348a71974eadc17408ec33d5594f8030dd57ab9d74b2b49738ab2612aaa7b8180c405bcb8663e4a7ef8613120d0961a7d02211fed685f12f09e5b06029cb39d21ca64931acac398e5f0eb30f00d81bf9626e2fb312c003b8b4bb73cfa5c974bbb9b4908206eb78bb5986f6e083c5394310d402d47d3199c179d200e873d5881f8965f634203ec683aeaf7d0286b3a104877861fdd4b991788797e729b9a361bbbbce35841431c0caf320dd4e1bc799fd4941c852f8b1e43905396c7cbf1e3b56087426b8d221a97e8eb4cb189c5984b346ac9afd2fa8d9dc839e3181c0fc6cb33d911485982712e108981c1db7f47d85710ee56507b7cf265ec0fcac3c9ca789019e82d14ef239fc41e1d502758da3f59b87f12132d9d64913b4c0eb4fea13da44360f64351548b4f9c5306da18cfb13fffb1e4dc316bb863c1d7314ebb63c0bb63fdb163b3ae631255c7e2eb8ed178c76aac8ecb54b8ed6ac43f08e83b6845fc83809c83b4f7876d12897f5ce44dbfb36dfd18acee8f8aa1f7d6302d5e798e948c31adc04671cafb030b28facb3e66aef7d48df7a71e788f0a4249806b4cd1b77064cecd3d21f377388407375a93aa837c20c7c2ae79fef43f7f5880feb0a64d40f80134adcdddd594cbd29fcc58dc7fb66fbcbb05437b1a482eac9a4d181df8b90ed16f7ca7f8375adcbc549ea3dc6526637ffe4ca8f10792675dbdc810f2273964bf3af2a711e50f1f983f2c397f7807fde122fde129ea0f8bac3fdc607f18d1fef088fbc395f78735f00f53e21ffe907ff830fff0a17f5837a83bbe9c1568ee9f50c07fa292ff8446ff09c2fe130ffc4f0cf43f11fe4ff05d260b0200dd2ecdaca500624202c43771c78a08c84107e41f7b9f17990c0524ba1a815533c6d00752644ebb1a315fbbf1f8b6d76a223d5b429b741a2f719e08fd3311b07a28b34f47a26cab41222a5b906aaafbe3a8a4930b8e12d4da21e62dec77ba75b48c2c01ca78f763eadda5ed4d747f9186dcba0b63532cde9c958c0075f76f5c48238f9cb5af39fe19a0ca787fac8880040d18107e002b0360c60f9a01ae13195a29c70ed9c69708e7adb92f8ea1d97713110014a069d02263e01fda7f90360c19df0a02fcd6db94db8fc1b371a013507deda3a2c0e0a6cb9cdb6b547d50b49745d9a41cdb0c3b3be54ea672c36e4266fd2c81ed3ac690026bb672f915cbecf420d6f25c6f1d206b7284b3ad7cf6f858edb1b8c7028e9ca341cc932a9c5b2ef034a159dcb9d6f19f86f0f3d950cb69c74b66e5579e3bff04fab3da348d58e084233ac176f040d611ded2621ba9b2299203c0f5737f8515705dbcfa6ec0aafc6d4f4a5b2005bcd62e14b699f849ccba1afb9301f4d0fb20a6f670b20588000f80128f182218c66910395124d859e3abd6e275d43b7a8480b81af2359466d0a44d15c63a5b6733c8cbdc585ae24b8f23e37263691697477bf7ee48c81f316ae2dc6a89ed4ffd26ad8d829b70bfebe02fd750e8e6d2a805b05b9c41d2598f7a1361e1e7d0ff8b9812f6d6ed7f220c5ee907a15fb44ab84c5e1c1d47d50a8e6abc0206cd5c80ef117766b23dc5e240e337ccaff668d42d89c1a3a6f1d0dc7d506a863c8cf20cd0a5c2dacf34e0902f4bb2097494fea95906eae2b228e78196ae4a702ea4a244bd79fb2f447a83b54a827567d1494f6dd052c9dc6178b4feb3df009b16f30a3a3da69622e341c45a7c19d1770ba741cce978300a1af973179e7cdacb7db00cb6b4898205abe007d92bba07c2d98d020edec90ebdc9ecf1ddc86be658f13b76abb3be5bec0745ef670c19034fc52e69496e6dffda9faaba2e075d96c91c9d13a0da6be00f595edca7a0fa550bd5d46bd7f0d343620ae3b3b2c3535580cb21871e3dcacecfa58a9452f36e536ee70fbe56e17eb49eeee44fa364bb90ddb7a8b02bff64b674265356399d0e606918493561ddf527656caca2d2e8f10ce05fa0261cf8f4c2831b3bd6c02cd1c7ca47f2d1b37b0bbce31ba34ee345a0a2413f9edd280f0e08218e6430905551957da5e455a245d6c8f8aa25ac139dd0b864488d181a0f39a2c8a012ef4a792de64d118ca4b7a368f5e85f3288782934d5ab48a5a190005734810c23784341f1096d8fbf93304961e4fec26f3843e0185a38f2fdd83f8231c06e17aa9a6eab3e4636832ccfcfa2a8a2591f28de052718d746c1680f95bfbd1c22c2340690a6bf600eb59d13bc41030f2e9ec6e5125ecb344ccfa340872a4af2c40682b7788cfa45c567367b83e3552a2dacca52b5d0679b3bb8625a4db240d57f99775d6065714104af32c17c28a299eb191de7dff092797f50c33fec61b1202e2ebd3846af27adacc7a891a2daaf8ac1874064a2f6d4e163925f514a5830f549518c92c829357bd5856c60bee9330894977b711a92cbd9c2476952ad665b063612c7e37d606ca408e884d1aca118fe791dea3e29233e30a26a1848697c64ec26a2a04342cc1f061022660464168212ae40f713b680ad8734dc0751ec8d59d4c02e7ae0292ad3644bdc2c880fd4c188911cd48e7ab936d96094f68da68319532afe5649464d7d7b5c3b5b088ea24511413a6b2c131b6443dfafc4fe90196327115166e867b2f7659934c84c144f631ccf0efe8a0b3fd3f937fb55a476b3eed61792e0a83f2d6eea3b9024d7796adad815a9cc5c29b69ab6e8a7fabf1fc695d04387651926542560f25d08d47e5cc1efcc0d161fca551c127ec6daeb366ce49a722ead951b68ef3a591f9fd31486aa8e84f5c0aecb826642dc48709e34c1a345c05288a0be7e9aa04b174c002c4179ee76c712b19b870fcf7bd9092c590a2f7bdcf09d225340b5816f29ec83e22cc230009d808e3dfee7e6b8810f02164cf4dd85075b790828c43a8cd77988dfacce6f69e468c40de7aea9a23d4f7809694a32bdfb4fba184cb2ed857cfef5950974d1807e15bd079eff70c380a1632abc1ee4fbf39d1d06de748646856ff779b840e0c7c71211be01b31708c0ae4f406b1c02b3652ca52cf983d6e24f79eb2118d3594bc84df8dcb14fd51d5b2a33d88d82ac1b0c218ee9d4b56ff88b3bd5a6155250b1a97b7d0825af57068f0b72000bf16c17a31a386367f4e40669341b1b3e185162a605da89b620e5ecdd391ab3139cebea4d24b2ec0df55ce726eab925323d8dc1ec626fc92b809feb5dd544c9e230ae8fc1f5bb2aba9a843bceb9e988fbd053bccb03f4b28a4afa94d7a500a4190dc7307e243dab6682ab8655ef8fcca31e8ad59ac23d9dbdde04240a1c0118e72faa412610b36ab4fb7904166ec38c720b116d88a5a4ee4f530fdc5e3992f9f5bb5fcde8233d0b31ce5e87082c19fe120adb981ce92d9476a08e0de3cb89c4edcae9523aa148b2448783bc2cdec431780d8ccbc7786ac41d526db8812f1209da4c9e0f9ab5ebbb7e0477570cae2f6b5f5dd6b650759526427bfeaff819f3bf26036833654d52e037662e53e97d25e0ae10fd001677bb5dd761f50e72c46c857e401d08680be68335d086d4dcab8605c6aebf4b1181950060022a23c14907ec7b4b31c55a9e81b9a82c42b3416cbeb254d463aa2e52ed5d1c05bdee30d32f8df7472aef154f33db166b9d01b1310c9272fd5a0b0ba52c8849bb5d150db4904dce32082de6797816e96939a44753a8191f56ce3eb78698ddc42278be612d29d8e4968f94c23293692fe373953eca688975352c60603fba391978b8fc266ce95fa9f4fde9d226a7e8cdf4241a30574115b830102b583b7a17add3f26d3e5207f28f796950c7201021205edb6547ecdd03a49063aa2bad399e4c59e8d7d33c93545835e48d1329d7dd29fa747ba2423ca96811375141e80363c84a855645eb47a2e5455eb5b76a8a87b13a4d155d3e45420b056511416eb11a407323a76c5a3cdecb4e54d1fa8dd8b410f0cbe17df18540f8be9093226445dfa37d8d47bd4032d75affa8b1b206e7918c1f6d6b66c577ce36e989763e0f8881d29879db12485e25e6690e5f53978c9b79716dcdb98ce8245fdb14db93a489626f859be5ae453c733c632df5f92af6f111a0205865c2283b110adcde3f82e69918ce58aa93538afbc1df486d2b7b42491f7ccf956a28ec3c2a188259277140a66ca6b9feee1ee5230810e62bf652965be35fbae19695794a9d1ae0604b5e9bf2cc7fc6e251ffcdf0b98bc7cf0996eb2bf04a89f0d1aea9d080af367d61b524ba69bcb5e2059bcc116a397db30c2634151f03633a14cde4c2bb97e592ea43c828870b31f7d259bdac38573a5d89236ac3cd9893827df6c5c617578f40427a22a92c294b2805764411bd7dad07d7c7652d470a1be0c1d710c089d05503fdcf8dfa6af227abeb3e9656c5edfa2cce76493ab605dd2b933e3daec54216003bdbfca876e67732f046f7c225a2077ea60b08638ea877f99e4ea01d38af1bab1be12b18d639ad85047ef8b64038d0d1693286b4067a682693eb8c3fd6bfca253dbe6e70b2ca26003f64a4d87867231fba171e7b564eee9d02721e31202fa4a009a1e3bad5c04a88beaa8015ecc231a4cd579fd365717310f64d0323b18110596dc19fe2ba69388e15c3a3fc56e2ba769cf129e4821940ac8d4d5d1fd5e2ba06e610d1435087922e7bbaea3381e3e2b5af72e03027b79dc9dfc65f7c42c8dbcac0cda521ef29f0e76c5a352e278fa76a02ba171e1bef0ea65583782d8cc5d5b2b92d85001f58454b16cca0455e31d980b0427864e748bcf9dbb9324ed6fa412dded92585270733dc41a52d238a097d073dd17519be8470cd5d270c7c233140e37d5fc0d0e3f0180a8113b358abf8f03e188fbc93c6e10e6f423a61eb381cd491a05a4c660c3ce49379608e32b84919612f4c2f74d4c0662a6d07d17b2b089f29bda2bab7c81a6ee342d27843e45a6c7d68057541c5fbcec18e9d4e98e20d5547751854a645064977aaa5597054fc65eaceea6de180cba3869582329b593a837241dd878940d6b17aece6d67b1014c7211af421fe966771f55bd68e12df3d8b19cc9d248b8fe098d26442fcbafbee31ba3e2ef42fd85d83a75e091f640236605a9008c6e8ee5d97304f4bac901055c4b8281e9b76ceaa0bcada88f968ec9919f34162046be640942aba2618a16ecb176684bb96aa64866b3613e61aa4de5e27425f3e64ae5aa54f6a2d01d0e45db560025670f80ea19873d3c7d350073b42b1e81a5beb47ea1f02d6596a74f205d5c7ca3b16df9616c01dd2e6f9f374b30a014df576b0ebdca433e2d1b851b9acbab39e325d7e4c52146666d4e1287ee98fb3c62da351ef6581140e0e40fe36d9f0e5f7321d4084c281bb1a3eb51b0287c110085dcc8ca3382e2aae10013100f19bc83de44aa4fb6c53cff5701f0bc0ec0c0568ec70b0c324cb9e221e6c1e9b33aa477783f260e3c2b2185f7c0cc7f9c92a768d14d419d235960de624a45bc9ad34fcfbe62a1521efe620dd9fbb95214ec8a81d0e94dd719b59f7888ae3466cfb5fc2ef9df42d7c183118809a26df92c864887dae6eb3e1db365f736d5997f21f2a107e0b3ce9eb1acb7406d26642e3ed4cd809b2ed7b40c6aa9ea099801b1dfa757752cc9ce3c8ca9db2bdc07140291b7171d99ddf86289a529e57a1de5e1ef7569593d53e1d2a35845871e0ba721f7ca99d66b6c6c433f74c0c61eb279991bb3407a13492eb27df20da2fd456087d42b987aad81a4ee33a46db1b4e7f269b6813508779954f6463d03526ca928e04db850d67bbddef0d115b68ada358d6427feb2fd4389ce40af03bd12476a3ea36f4f2320ef9cafc0c233ba75028bfe86f82849a66ca761f5d5767dc30f2595f7c7f20be776340555ac176b90d7546d55179f91d4ea5bcdaf3968d5ff509b5070b53a34a10766a1e87b8071a06e2377f2ad2f8baf912a00901d6fa64175010c675c19805e6dfbf0a690f73c50645e1a3dbc548d970e3b15c875a37c1f1ee7d811f623df3cc978a1af06b6bec563849ed9a2bf540ca88f9c2ad9be7ca7ace6965025ccddf745692b09fa5d804b6cdbd39b096cb0d4ae600bd6baa1e51d7911dc0cd1bfd2704991eae7e99caad6e35bd5cc0b3151c97eac7c41eacb4a90ca5947756ed51c81a579fa12a0823b5cdd57db8ff94c7e09095a5f3cd570a2ebfffe53aef28d149d5196a90f2daa2771c47bdcaaf8f9b7072a6af530f928b17949c9cfa3353906ca023d1e7a10a7e42f7e6cd074c5a221bb8ad77f7aa789f614f1d01ed77e543d408614fc0f5cea7dbaaa562f1b096751e6bed751f139ab662aca5f6c57afd5667a529b952691faf1635932ad5d2967829b4bf63881a132855a99666e95b9dfdbd91a89844e995b2744b7b253ad62cb3674e80869d2fdb4475fb45d7ab19bc6ad3b2e79b847737a847b4a59afad73248eca99c4ecd9411a936c7b56ce6d0d610bcaa198a61467ec6445321b4713111b1a8326c9f04f8232ea5e2ad9e667b7735520d207738d671dd36c89946c6c55c78c80cb2cf41a18fc5589c610cd40bde5ef39d2287d0ec6b42d63a2b2864eb7de5af639b81cfe837c615ae70e3dbc5885d635c11a95a4fc01e30f5c94439e2a6adc12d732f2dcb58fdc26938973f874970bfb51dc585a1d661058558d0f955023b646617e2ab03a97d1d99c01e8a5fc3ca5bcc1a15d476f1e7e52dffba55e7fc1b8ab402ed269bec021be15531257f18d0bb2b8e4bf02e37ee87d7a048bfbaea443208ef5182f5b09207a650a2caad9bd48af0d6dfe27469b8549f91bb9b4b84578b7e9162793d174738d7e2d22fcc7a6b28e92bc2e673db9181c9565a48aaa4e46721d3ae385ac65f6f411f23ef8faf2160f64e630a18be5c86fc54f9133b5a4713dc3c41463ef3d9f17f80b871c347b6694c912a941a526df03f2a9f2a5de40e57e82362fe4572b2291a030ec07e55f298600bf8175557f3a1b8f83ff83531b004f5e439fe75a42f69bdcf3097e9fc2c458c2ea857a3ca534bbd26af6b1d2eb955e782f85342fc11c29ffc8912714a459c13646df254545a6e2ded8ba8adc02075d71033f0c599c1ea8ead97a7acbec7f174696c87a133d7c43104735bb98c3da9b5858bae4a2fc99c25828581e1f0ab526e6b25fc0bd7ae9aa85744f2f7f384017a98abd90bdf385c639521d51d45c7a6ca9c4375842243b455cf92cb1d65b53194b82ab52a72562c9afdcef01c332a3f437226c5a4af3c9602ecd4e186d2fb35ddd0b06f3ba9944032e45c2d9d1278d1a551bbeaa1d2b16ea79909d6095a82e9ca26865f410e96c840e14cacc72f52a548c6b66e12b61a7bd52c7415d87089d26aaa79c52ea6a8f2f3c029c32454138e7b94c209a895b16f8efab15eb3f97cb5c2217e3cd1a7e0f16ec22affbf45315f342b1006f6f21dcc26a9b55589806492bed8588817f5f2f3282ac6585e2a1856d82779daba1704e8bd3b0996ebef153f2dc9ba954f93d276d6fe0fdf4fa129118928ec94f300faa88f2aa13299293f4019e3a0d6645e1bbb5621f2158e1c179d649916ec2073a702d8d6f54fda88434fadce45eef4efca0259762a4bbd529337e1952691f1ae9cfd73f945a4d44d9ed9105b30ac5e6e017db46885766a1a7bad9a140aa80f0620c1fea5719f1d1e1d5898a8b59b34eea48665b9d17bc3c0d76ea27c85b9fe9a18c65966d35d061d0c9fabac2feeaad0256c24564c8ef51f2aac1db403d511cbc1b92cf1a8ce7caadda47566666f8c1615244a88b185bfc649914a585db725404d00c16015041a2ec5124cae71dae9f274c3ce1118354a10a5bca64911be031c30adba3e6f052ebef85a3c6160774ca781f5c6b0aec04212538765c968bb10fcc7ea96dd798e8341f21e8d1e02c4b923ec74604736a0379ac8ec798f4e764e3702b246164d71f0b6f749b3c3977b3980281033b824181213b0e3ebce8801e9442d96a30472d989ab71e1027c8d20e7eae3169ca1bdb735084f315c3f0316814c36665b26a5c84e1a8a36e2329cd43c38ab17f4a83b8457084656c34a4b5fb21b3ae155bf759442ea74be50c630760bbba248888096cc8839761a2e7bda2ea5ea0479ba48cf532c131ba3a8d302d97ecf839d4083f1f8faf58906c603de61734b36a4653068ead5db242865597ca6bc74f0ffad581d4b3e28a02106848d99f1816746945345a7ba1bafe4f3db5d71446bb7797226f1cb80b58eb663b9d42e4df0e36bddf0685288fae7a0736dbe7d94eb84bf725026982e1cc551ddeba7f22d7bf8968a91519008ad77b7788951a787de0334c956e696b8217a8b71728f9589405346b2d3389554a6134034e59cfee099a46711f09984fe893937686a41bcd55661976e1f9406fb37ac1a6dedc4410c79dfd01af8c44a3d74b454ed3ffa23076c55affcf32ba3d6bf0ae44372da1d9439a931210348287bf71a898835db5fff8d4454c0c6b718009b2df4eebb0a9a91e2c7abf46e27b9e79fa21952634fc29f4832138cf232660e1a84d5df0835ca86f2aa65310147c462e34728fcd07bb2912c94c3ddbf3c15cb67d978e2fe1a122f0bcb19df2bef709150824e8d435429ad7f62076f2b9440dec2aebc5abc180acc434436f5935027441c5e06ee3b57dace086622e382fb14024518d3660f2578421a0ea93e623264587a99224fdc0b79b55b8d2166d59a3d649a1a1e0481402163a811335354c5bb7520ae0843d3db59d21a9fb0d7c99e16e43a6fd2e964ceec2680d106c4112a29e20f9bc519a2ad0b382b4ba4546138a2a4c4249584946b1ee20f53c9eb01700deefa5dbfbc3bf65b47c394d36c099cac8ffe42bd86cb311d541e8f8b505c1815d3002c5c20fff77a7dbb07a3b78d38f78db8089d9aed07e62d0f478201c956934a2cd5ce67845d5e9978e89e7cc400a8b4b71ddb41cdbc2d45db85ce66c13574aa7801731d758477f8cc503c68a71290ee3a2d3123dd420cf89978187abd55c42ca4a7b9825b9ef0872797cef27a488a11f9468822cedb91057a92c09ca807618966852a00a939dcaddd9f03d9c33c75e092ece8704889e15b6eda6ee170bd227638dc70b1587a4c8abe8c8463b260b9610e37fd855148b689cd5a32a2f5461eec381b3e5321f87ab09bc38871c2c6d21e248b967a99487d0e9bfcc91d32039a0f6b5e5faa97cee144eaab394b78395f9fd987c15ada1215fbcad8e58a18e7644cc4c9f630b1e1c9437e2881ffd04cb1bc173be235d5ec74d873c6bd8b2e6079b60c9e0d7bf158e9e3c8946201e3afe4a687e563e3f22b9ae669f05a8d2adff10b33096b276f0deeda31b8c1e6c5ca17d97114b67c7ce3949571df889dc1182dbb4f62f613dfc9e6ff6094df43a1e0941160fe4103a5ba415a5edacf0d46e196a936358e0dfe44b3eb8056713f555b2d9226bcdf9f1c269fafa18648ae7ba1f11d8e3bd65c9c29a92a70645286f157ef360ae3f79ca9ee1645e4a0599c9612797f39d66acb7852e6bc5121e036812f22bbc3d19b23a27ae42ca3f19ed2505691d9cc51f087ef305853fd899f5d3dfc8c6288f10f3388e261df36b3b8e5883cc47fdc1e9e84c311f1c04698bfff10d11d1a2407c8533f1a8cb725b9d65e95d1e0eb358eeaa32585afdcdf31ebe937a4419aa1dbacedb38f952199f630c66e22a6ca5a805db159d52da109be5c11aad6fb1aaba3bbeebc6c04efbae5e2951ea0350183d1c3e1b04ba2d45847c81ea32a383041567eaf029f00dfacedfdf22116b694ec76a8afb42f144b6712b3c9517e003a9898308034fef0cf14126693d829127654e11db461b8c81481368548ab3584715d7a54b899094ad90cbff8756c84f92a10aef05c05f69aeee1580769593f6faa8984dd44e5546684615d62e68c4fdbb3373fe749f87ace601723d47a4edcb12198059e0464983c764b8f7379aeb967c9242ed9652f3590ed2cec963aa59e3c84ee3d482798738458a15acdaed21fa77e8bc805fc2452fbbce537fc6ed4e018b47b328fbd79768874b42e53161d765c24752bb5d6034174bdcd5eaf511801aa41ecd6d325ee5bd6dad8aeb87d4352507a6f28f11f3c6ccfa6d54e7fdf1aca1261be6e29e1c3c406d6e2b275035b9b82d956d22326ae3e80e0bbe4b2ad66bbc77bbbc3e8aa447431116f9035606450a1555bae169e3310cd71934c1953572543e95c2c887feb887cbd7dcf34f5d195ece19d86d2d8c41b420f63181c7415018385d64d6857d8e4268d5ba5d1bed8ff3c1f9410f9ad7493c82260c11ac566dabb276d5441da02369c812105edb9f68758268229a307fde34834c8a068e6374fc299d981148ac918afe4aaa23f2e082f201cfa103fd2d00596552b3be873b12032c6bd1f1f75c27e3fc6335a74faeeabff41fa0e53dd13f38ecc42beee36b0d4e8294a5aa0a029017ca5e0db19705a71c5ac3fb1c94f2ab619386bdcd097b5a27dc46ce334b459d88ba405b80a7a96ddbfa22f8e6dae4b97f9c3c2785995c59cff0aa20a63fc1d4b29415ba53d1355c9af5fa5972bd411ca9076ab43590bf874bb90c0cc0a5570bbb0631018773b3b31da1db021f20567ffb0210ea51961b5038498a00bdd821bf5c6e8594a1d6876a4fc1ea08921048de04ceed486684b9254b54e0555f155c7c512cf6072df74bb83258f3414cb60918b717f57f2f7dcd2eefe2afadcbd313af1afb7624d15044267975ea8e6bd8cb26f9dfc5f1d07e172c145ff27176c5fc181ae976cc45f880e4a300aa8e70e936e2af5d903b4104478e2cf513c74514a362321da8043962a0f201d301f6c732b41ee0ab28b0605ace6427574731764ec95dd15db510042f939ed9e3d92537d0deb0ba5d6a05d484a932fbf73804107232bd5775f9204b5b72c03cb49a87217f172803b6ea4c04cd2e3ab40d561ffed0ac29fc20ebdf2f35100412ec01b357378fa83d7e9da08697c897bb8a26189af80258e5f0712a856809f893449ce60a4a2a46289cf8a493f9c53e11e1388fd2114751d68da6d6a24cf1786f4bb67367d71558086624dcf18686d0696c9d965a255ea43b230dc6e718f4d40bf678789c9a26b02210365d1f7f1a2a42ea2aa321619097f572c82a10ff8dbcc02d5af474eaab66a6f069ab18774312f383488a62733b3798477f954965f3eff9aeceb2528239c388edcef135727c7a6d82c769d2ea78bf7457357869bb664a7b68af48f7ee25eca8aa2d73eb5c0ce92dd76d2be47bfa37537d4af702079658505a6dae2d5bf6ece82a5fd343ac97ea6a14915e297ccd73740bb844bc9ffc50cb4f452f843fae78aaefe667687d2aad0878d11408610edc599ca16b3bf625e9ec6d85ab8959c4b7f8b48b225e0c221cc3bdcb7f80429bdc15f6af61ba4d5ec12c5695ac8edea233f20f98d24eccf673ac215737b347d78fee66483e42f7edaf0ee20594de3d180c1ab3219c9c5549abc8b8ad6f179fd0b20708a40961d99d415e84d321970d05a3b5b79bad7cf4be0d258b4820b7e3770ba902f9235568fa59357a21f6b0b68c9161ef8c82b7416f805f329c467d714b763ccfda5fe2f4579a386953bcee95160e6fad90693c37f2a0946aacc5e466a11f30c82304106aafd49fd783926107efdd085ac27a2b112041c47b2190cf9794bc4922716cce3b6a9143c99c24e32b3e478e036426a37297a8368f22711125079805d6c925a61b98826f12948a27bc70a248de6bf31673566857d367c6b65fae1e18dc5ab1879d1ad958f721ba38474092709c2c42bb846520337abfe41a1e20edc12eb36700bae4e6f6a3572bf9251c3cd02fbb2f7a66247bb0e353d540c2081b4ec3a0bfc4098965460f8dd47215e4828163b13daef01bc877b24b535abdfed3958f95db3a7aa32321a8da45b3c4c59ebd4b66316ffc44a58ddf78570bc24a7b60b12c5eda348f899fbe6f38241a485b46fbfd5c26137ce55cd75957f9c8ea6c0e0013e14a3b133dd001c41132ce5a34aa32485df9e248b178a9fef35a2d5a4bba1956608a275dc351fa078e645459a2145decd37181aec85557e187f149a8a2c92055fbba14601b89b764034c3da649d3335c3ca10e467305cf9887eeec4b8dd04447daf92b2b966900d6b86b0ea23d03fea66f3b8082dba0d3242fe47eec5146454f6cc96bc1ea80f81a096882825484215f8a1b31e03ccc765da7858b3ced6b4408ff6342046e077a4c57102be21e86bbf70833b5f395db4ef845176ae597a032901dec1fd0873a0caea64330c39ede61e6063074896c5aa8db605266da1a9606fcdddd92d71f87739b376585d5930078830e903871d6b7bdc34fa4faad8c0f22fd68ab4c4479b40f97cf354f0067a351b7226843df16133141003ab5aed7e397b0763c0aaa67b341b4349ed47142811819c4f4552bdd882f3edbabd30e081111fead4d4d5f32b5a7537a9c02eb7e3fd7dd80bce794e4b4c083ce35f669cfdd978f7c3d79b9ba5773ba4ec7e24feaf2e5f338dbd5e1736afc0317d5221c8778989db7487e1e837fc87b3bc37e550ab0415a569e022008ef01ad8eec1f7395d3378d1280159477f0d88eb648fb844868b51316de36d60e4c90f63d6f467badf7bce81f344249af7947aac523850cb252396adf7ba48a3574a6652e126c7b660f55f18b76cdc9174c67226376326c16616c97de1c82e582664933663d24edbd553b7563badc43d858e3f850ac4af25ee4f02aed3d13f6cfcb72d350a636e2886bc060e3543ab3df22181b3cfce72761195a5b291f9ac19ce0560aa0198c0d1b37836bd3518134be92d1a543c1a350a1d98bb892272a39dcc222e0da027beecbf5e63f1949ac69791f6e197432d3dadf1a4eb2ac6b4185e85a040a88d0a18625d7684fb67bb6cb06b0ecc6dfd04edf0529d944cb095184323eb23f77ec291ce72a33cabb9126dc127b6f2bf99694bed8829c0acb87886fccd9de0b04212714590866d71590cb5e77071ea99d95adeab7e50e2eb05e0a1f849cc830e94b546bea02aa38326a0fa5c8fe14ac30147fecc21f272fbd9a259a34087dd3d8ba1627e09d9ddf300f9b96bc97164e2a2b79236c9647d97613a928ef3fe9b7b4e4812085c66fb6e1f8157bf88a5f99fa33b5e5aad804e8bd141911d660a8f3dc4b37bee3d27c1294063b16032d2749f398452d10b8f14f76ee61292bc50a812765f59c490a931c9fc17d774086613d66a35f245d45c5c0ff8986b051c965fec309c08f9547a6d8334d03ab1105c511f40cd8df9784b1f3a9d61228a5349a48e73668ed25516a4d3cce7bf520f72cd739736dd2838bc28f1f317b2ae03304347ac9a858600e8b55a7a0bf05531e331ca06c715822dc6c3e437972b22c20f6cfcbccce5cb3b73c3f6420ab72ce3799884efc2a787fdcfdad71cd8f5771ee1499463c006bc5522748ed5266f9f5a373d9b447b05b5873d7da7b74ba0c1dc2811201181a9aa32f7517f3c7049723f802e262e4081be998b8994b85266527b0c5022ceb36f2f2870ca68bf9f9a88eecfe9b2a633285989a8dc50ded5e63109a0ee8c4cb3966feb105088f99745505b425c41952b1e309925eee5a441cbbbe05c8f66ac9a53aefebf046bd43676df08a6c1366338715512ca4069cd6793f99a253b1adb0b51c106cdedbc9b6a38a0948871b22adc64e66a97520ade82f70895f5c1a953157286d465b412203750b204ddbb5089abc26cf8636c006422da24d15a0800f09f477a0492dd495b38cd929adb56beed74f13d1676dfd024935b47d594d65606b780198503527091768af3711152af785802b18ce3f0c717fd64f38d33e768e3698af93c886a14e745f51cf138fbbda4040073e3e56032cbe17350e9a4b67364e6c0030d220300e9b989a253e4ab35edc6d424f74b6e06417b87803287e45ca4dbdbd1aa7dc9075ce5d9fc5bea73e743127c9fd236ceb06100093fd02e956e0ada33544921301ad5a1f0481d351fb9c7f0731fed209947ef416824342d4e1226e5df88eb5716640fa961bf7241c604cd7328a3ac689a14df1adc7c223b41201b2b15ea096888db3b51eb611ac8b0b32c3d635545f18c07f8fec21031b817d4300f56c425ec48a02638287f4763d1581efbefa82b8a0d89f36758fbe939556d24811af69fa23156b04287d28e53c8234eefca4e11326303c13b67914784fceae496e6571f135eb6043b0953cfbd56d1c7259b967fdcc5c2f913c8143467b6820ae8ec9552649018ae5a844d067b8410069d4fea96a92e66ca18974836c41d1ef216a1253a61a4eaff81ac729cc69b1dbaa18427ff1de46e5990939b0b01b5d7762ed6c98efec063747309f1016e36bfffebc1088ebab5d23c5f87523fef889ad18e483c4b28dc9f932e9d10d54807a716c184ab73be5cc24e270a4db1da2b23d5999e3d04d97f83739fade2db969b4dc09de068f3a451634b12756f964f0f1d63f2f8e35a0f2cd930879a2fba83c7433c3698dd927f42e2c7419c3c5bb79458e1d0332c877c23face2dc7d7f2f0af866af33824ddf69c2733e725c6f7b42bd0c226a8c7b88dd3b70413fa987e76f29b75ee046ccc39b5be80a58a51973ab94d1fcb57a298d2ac3f0852b3c9ca97e59a0e40aa088783c624400f0209162083f0d564d1cdf2b197a2d45db319e9ecdf270c61eb340c464cd937ed18d4c57e9f84f3116b8ed12e2b87a676c4a689dbdd3d07e367af00973725e607782caed9b778e87eeebbd1621a5ea39f0eb2599efc3321dc33e3b43d1caca24a8039c2ddf71de4c81c9542c84a34936d96a84e7265bb712a71b10f41c80e41d1aea6788d0d6cadc6071f99251039450e36f5b48502649069b1aa50a623008d568938c619f0c50891fd8ebe110747579e100e31d2375907396c24c8711374a186f7de5f52ab5f21cad753b5fd7efb1bf94ee68c6f1cce776e52beec4cdbfdd0982110ce61c96e0781ec4576fb8a7902b604384a914dc8287e2bc483839f841d95c0f959f32dc9053a667f128836f1b13be2a73e0aadeae02305da627159064147654080fa5302a6884ddd29aaf4434edb71d3c84822d9b96b071fa95ee70a53173a4fee9858f2a9e304b5f0932fa4099911af64f5868b6197956d747b01abbc814c7d4f64ca922c098128e3e415f0de41673612b43b0054edfcdb1b7dfdefad8835774de82e4f538a840e053c3fc363dd79b5cb168a598805befc6383a164564ab58027f104444f46d015c313e8c92a20503a5cb8076c886665230474774b5c0e81e009b84362b490efb076c9afa860852e676ccd518fb504ccbc8109b5184bf246c61d338bcf581b4f66806f20861d37ff57f966d730751ebcf407156e0f0b3bfd6adb87c0bb11b29f2821aaf5b8b1007f32fe1a4b8978194d3ec1cebf812563cdc18434a80cd218f44d65bc971f8af5ae5064570f79b1fe1e7fcb4bd264b597e5c96a5d605333d00dcac57f13cf00a6afec19385f57accde45473644f839c94863a424bc2ce78ef73ed813cd440ed3273f8c09516c6a78f8ab90286daf9da45189a718f43dfd589e35978a89fd29fdf024a4c5c0f6856bbb040b2752f023720f5bc77b08e01a4e155acc6525b3d973da3b1830f565a252ca5d2b2019739dd65092e1334ca51425ccabe06e7d51e739b1430e38dfb26098e154874f390979a1a06108119ee1cc232f8564715f8574526d55c5cdff7819a782f6abbdfa8be80544169f364e0730d1717f926114524a1c489c3a1510f11006c41ad09c3927445d1e8303a6222d089a8507b24496ce2d080010ec9c557ac9c1112d5813d7dc72f30a401b3feb774ac30c1a90d427a06a98f40586032a113c56b9e37cfe029197de146c89a047ec478b033c0f2d48818541fdc5d291f590710e534a0b92781bdb882951a7a37d466649ad9c2acd0ccaea3782442cb38ae652dd037557ec6e44ef454500762b8c9275f3dd7e21a9e825ccf48b64825c538b03674e220914515decc743f6077abca8509ee9ee921d66ed466086a13df1dab94e91fbd17aaa5d3a5d44a3bda9e535ca7af7cd9aea045ce805b83bf097e6940d8c0870319e4ed04da80d295b10d9be4a79a5a257321e69fdb0936d09ccfbdffacc0909aa8c505d56ae0952419d420fec3150f0cae9759d552a909221ca44aa5104b2edae33929a1ef980e323bb26722ef834d458c09da26cfc04d3dd2f4976937d34502bda9443155ed981be9f3aa54bb55f9cc6f8b28928451af18f594bbca7450b07e75efe0dd6cc9fbfed318013fa1908c9611ecb2a49b7268d9afc485685ba304a4e7563137d16d2bfb9a3e441ee622e873168d992fafebe8100c965811452cf4060300ca0b4094e4f8ef2517110437945c4e76e62b3a5fc4afdd117ac914d686e89174c60230798101de603f4b03970e1a13f721a4ea5efd3ca886c29d5f659ea36c74501003c02902f1908a57f6acd902bc16fecb231c921160e62a92001b964442ce61b2cd1b1ce9155fdcd4f9dfb4008aa69a81414c63be16f1b630010901e8e37f428f938e9007bd4a65742fa6c1e5e5786ee1684e022e44ccfd1887fb202988d8266db2134429e7a603936ea7c0c5fb5fc4865ead28a721eddb1e294f7d475a04e0986be3e91b9874ec12644f4b191efb611c7927a0099ccf108eb2aa3d67ed6406f9921f1c9a08018b39b3ae7241e98787cebd514ce71dce15caa14dbc42561cec8e7cf627ff88e585ecd05707b0540076aa6057aedf51af581b17f81eff280ce15264864d7457339c539ee8c5c42cd96a22a48959164fea29fe32638b125697d5cd31be754127ce5bbbfb33c39994cc97dd1ee9b473b88af7d2da392e0d52c41fe2a81944fcaaa370c989ee9b64c76fef4191d672d3e15cd30a12ca84f37d56da2a11274fddd38a7afefe47ea2114466cc21c7d979bc5007c271143eb359b8cdd4459f1b4294bd10c85129f1896711805d2aab20a10058bb3aa0186e94407db29040f5b9094940a350342cbd69f029b1006b24d617b4630c11362e98b2a9168e072aec537ef917a2b1d5baae67ee53ea40c435aeb4f1488df7676116cd337cbbd9b3b3b018d1d959781adc8593d6fa3345020028d6e10909239d2a33949153d62e669ebff218465067d188e0681cce0dd64a0a0176a799d765b601529e5c2e950aa59b02b618418e0639de4e61d3ccf615a4dcb428dc226fbc99c5d9d1b0f222db471072d7ee812e9972afa1a2698edaac1711df328842f73864e305b89982ab16d4e4c03811839119cd33d2f5de58f061e73b4bc1a829c3c048f310489e2be6ca1686949f13a8e88d2c2c572b7e55a800e5ce0a3e2141118058c7d3771c7515503cace573b390c141949ba12b60ef3e950888e76461a2e1114666494798575106fa425c38fc4117943af882b1afcbf5891af91a6c22b78760cc257bf7029608127ca1a370fb63f4e9907b7c0747cded5866bf478eb59e9899e73159874284c5afd5d21ca7bf43ae250af0ce85943a7d68867c163aae56056eaf7a309edf7c72d59075b14123a34d4b48b190aa229a5da5aad4217de06f0f1f8bad5d2d2eb306903319bb6f90e5ebd1d5e36acf380d411d6d72c5fc161ecfea8d53f85136023f88c367e3cfc2aa92559b767d1e76e6b4d9d30ac01b769f39503498e64e38ca11497a37c78b42663f831409ca1eee943f0d9a0720ba5f22b09bdca4243196c99f3e9c127e44097d446826d5f98546bb5466d5dfe7696ac6198cae33094c85eeb537926446fb97a0898feec95131542801b649730cb1ffe46f22a97d5c88b8a4e0296b3404574daf42f342198ec9f87a667073ffa472351ef7cc0e46842526fef671a4e73d7de4492cbcd785f4ed52d83b7a7a65307a4fa106ef3422217c14a26410e7a383b8e8530c0f5ecaf907f7534cbc2d0a86eb87e858225c2703cb2915a8384a889feb2d02ab84714c76e22cadb415bb032a7b789e8a549c9a5ab37bca75e8e35872aa0a77b8d40be9e01b0cf6d75b5ad48d7ad4f93b4beca1abef544b9f331165bc060df9eb670c6f566bb92893494747fe1ab7d7adb8e1a59664b89582c79b61b4805d8b32372d4563f0167fbe242ddd528af3a67f83d6057b197742085392a6e1eb255a6fbf05cd8663cdb459de3479e099a0fee65b76866b9a938b3c8eb811af33a5682d55f3d5b3825c4e8c160a214e899ef65924fbcec55cdfee112e1c1a1ec19eb5144d62e3342df9836c5d7edb1e461e0ac9b060db026823f0c255d219a51a7bccecbde9e92ab7e634c66e4d90de921d778b3e992d57b2d025988b0f9777b2ebccf31f92d8b8e0623a37059ffb27c98c5faeb9a9426dff0dfb501de2ae3bcd63cd6e35f7529241035e5593a1f57a45935ade76c6025a4c1b25c7706ed2d9b48e3c7bc7902fcac31b316066f4de216a76f0ec29a661733fb13fbedc64ad5387fb381491a6d5258c10c8c75b4cac730a6e965ec57b39c0dad21ed78d239ecc075277382c66c748322cb6e013e911a7a15baa80c746c5a40eedd43696bd1310ddbca45ca2ab1e987cc903a3be65325a6555dc81b90340f3331380165af524be6fa923fc51139a017f30a5d0b5cd0a23ba68f500402e9d6e0658194f499d0b95b8642c733cdeb49be2c0dc915cca76980135a02523f1dd3654f04547a673fb1f1e76c4d78970e52feed57bfc429995d870a03a2901b122b05c8e6b18c3e4428db7432f0c4c5cb3dcef890b5d63c032a39cf65d23117c05db5bd948973ae56c67c23180f180eac0a3e7a24548932b0694c8e54f61e7a2f8fc67353c384523381f65d55ea77c851ae4811b5c0d53d5b62067a3604d871aee2a289fb8864dd84aabf57a09b5a373ee00ee9aba9e0274ca8ed2e25958d8644edd07162e41199923b8900511854d82942fc8624b4ab6f5fe0d6b7f64207f6f6590672e0cc0118ce77562ad568dac32093634166ed3c5cac14c95777edbc6e554e6ad715653711cb0e0bb8d5602ebbacb8895318eefed478fe6caf24eba5d103c601de94e4d6f5d1c1a7b9f469e0ce40f082125295ee5fa3003f0c6a329a45533ecca43ce83db583c4a34e3671e5be9efb08d677eda46ed340d559692709eccae0c534519d8b059ab3a372eaafe3eb6ce3705ae0ea0f2cd7298667836b524207bb5ab4494ec8455a99cdcc1ff576d69086c082f56b70d8b73f0fcafac409a1479354173f1de5e8b8c003f5cf96dcbc9fde2b4c4f98305d41ce62651dedb763cbbecfc6a16a385cc72e6d873ecb61fb471f3ff0a5e41fcc1bcc857c1c5cb78bc6f264d1c168f8966eb4dd96136c6277316ce1718711f384476100121adbe4c06d9545de8b212368dacfffbb6ba8f6f930819a9cbf423ddaa41a958fb5974f4844bfc18f6db3eec3b39d2b12e7dcaf2b5321e95ed896997ea843a81d4573fec821448c3ccae53fe11f3acd3cf145e9f0c41d0190b53ef865df9cfc4db6b8ac023d8001d7689546f1c0f6d12f607cf48fb9517bae6c1998236279fe81ae0b64961171ef47f9ea3f06926459fd8fa009ad7d084541881886404a9c80b1cfd00ea624151b1615ab1171a1b8cfaafa970529018e3ee3bb7d385d952779291ab3126a7c5f300e55a18f9ac3e303afd0079bdf87f20fa95aea4305a594cc870a758a6c7e12d1936ba19d317bd39510fc44b83d8d6a301ef5d9df5ef6b3937bbbd229f53eb21792cc474f73cbe043556975b9b4a441e248f2b4242b122a8f1de5d6b89a7e6f2a6ba62f83f6f6afd199050bb94526cac5dfe7c5e78f1e4e54293dfa5e8de62e3d0c4a21578b978e4606eec138226d1155b5af2f102ff4a9f6af04ac3c6d84af5f388de3db894144036f896e0300d7a43279c4523d505a19b0e3afae29a24e66286a40856461598b570062ee8252a364e5637d84d421405b5f5d4f68ecd786b2daa2c5f7764f05719cf8fd61b6316140ff533fa94bd843e197fb8e798c986b8eeba16626981f389df525665d12e7ae6f8fd93a9dd977357958a3054b976a3bd0b43d56d75001dd426eae103a9e9907d52a53af5f08735e973509994fa64e5ba2afd102186ea0b644df780e35d02699f923cbb6d10d7347964b6a1796add34551c48b89ba865c447df8ae0263741a99e3815202b5faeaf5963bc428010c45c6acd1ee7b53ba16423331891ecd3351b81425b59ff73e853220df188f67760c3edba3402c8d4a06c8d5c44e602f43ff071439375e8b14a494ef513e0dcfd2e58455d319ac000091687e94552db9f008a52b6786f7754e18947978c310c87a15477a0495b9ff37c59172dc9fab2c24de266dbeaa83b2be10f7baf1408aa5dfd0f693b1d4f06d3b9f3284e944d3d314f169e9827f0d950e92d917489fff510b77c9c94d8822a1a3fde16c5f5c6a0f78bcdfe6b64f3d87f7a8e551f60b3ab7908b95a8abcb0474028b2f8417a758581ab5b9b4f84a8ce15772a390a2a79c988944584facdf6087cc0cf46bd23a596294e9154d57d023df589c02dd3c892639332982d47a2c450bdde8e871613b3da0fa38a13c1a602addf7f23f460aa5208e8783544e25838209417f3e1f92d6275b27e7885f9686cad2cac0ddbc49a8b231debb9e0d511b890649d5874a2428ae8a0116115f55cc6667f20aac588da792476e98200a20e05b85d60d6a32a20fb2ba825afe582b21fd584495c2af6c48b2b02e1e2660442601481e59a0f40333e648cbf875c5f6fb8cacd3cc70a7991c8afd406dde35889c862b012efb54e815a9df84368ded7cadc1094bfb126e59b1c3e0ed4260d5feca8a501a6de903c0d6a54185383b34d06ad392d43bfbf69241e8f7a511fabee5c654c67c7d07ec354b841c7d3b0bc5093d43fc0794f30080ec315226c9b00d7b8489e7f542d8138be12314c4d9c664c1fd54ad612f78a64a636c4fbc74a12ac5884efd2cd0a119165deb59a0d3b995150487b3d91c984dbb53328dd2df42725d8ecae444821b0efa2cab9c0ac5ff965dc36c519e3b782283d393ed101642e40e09e32f1aa37839aae830f955784c33997991b042c6cddb428a93ac3c7b71db14145b77b383e6e3fe5d19cfa4418ecedd3fa919a8acd8a4f0df9fd698421665a6e3fa51a649d60cc76744254d520368ab5e4fe75a001a946a9c78b97e1b2649d0f52664514bebb9d3511b4089d208c1f5988330849feb9bacccc4ed89acd30086887279df6927b466f1584f79090883666604555672b4a83d4b1f7998d55a7d687fc3079d9c118438ced05d618ffe29401f47f5012739f4b7045942dddb2d95684a90ee2a018bb1500d0aca62bea14334606d5d0c92d44266f4557d95005a80df3ff8a507ff9f1a08be62c82ccf066dc48c12d8064e4dc2e420ddc8b55d551e4f19816ce8015bc75ff647dbced9c5fea3bbf3f2a8d72c0c20079a4b8cccfa75383c0d1d98ee64202347e24918106757428257c9c8c26090a7f35bb517394c24086fee5b84b0b98f9d563a5436355d5b22c8e460ea3df9de6aafbec83289948efab5bd171522224a410279ecca50fbaf30c8aed0d27345e8d1ec53576bae6ef59211663bac2c4f5478afa95cf16894626d3554ec5394ea2879bd704f03269626656dd5053643be8b725ad7ec708456b1f757556d3477aa0049888b9409b36bef7e4d1ab4ba27e6cc01d8aa2f0949551027424d2fdb8a1ebde595d9c087e3564d47e93300caef3565b32bbd301304d75e06d52bb46ca1e6645ae3a682a803ca8e3ca5460b0e8219c5f72142a959606c206b98637c9a6d0bbb2fa25e570330a2089f8b3e3b5873fd66b0f20686ca7ba1f0140a5bb87a7c3e5d19ee3e3f305dd4d7231db3bc01faaba81424eb6036484e80ba9a332d39076bdb08a44ad5520296a994d26a6d8cf1cfe21cad25b487ab94bce8a5611f1a6babefb64f02e8bd004a6a170661c0e40b6e3da8661886d3490262fe1c573e267628260ad540c2824adacc4c289bd5217b202a20988adcfcc5b26a1beb7e68de89bc56a2a1f982327bc393341645bc4c8f277449b93f422fda7719eb955a8fa6544563ac0359d1884d5a78891cd64968ec87b794ace85cda965d455d08650a94ac91d80e23684f3ce97fc2d3c9539f6d103ff5d923a03d977104a0707f82c6f1e4a59d2467d5fe43e28cc7733707db50d9dd68a1eaea2c64cd114e7c6261e5a0382f97e55674d1cdfb987c17689ae4b37616d397696601f2069a492f629ee7a10d84a9f3e22df32c9de3ae30de0555984c3e746e53b748ac489c02830c07e38e2f1be12e0bcc0b4883c3c146485102839b34c6a854bb3b8824c8c58ad39007a751d07237c6d1578035cb8e923424ac44212706160921fcffcef1ab2f9284ed188d0d1a0fdc7ac3699beacf6c7e270818ed69bade64f0e8126dc4b3c18ad63038008130fdeb037569fed01a9cf0a282ed142d839bd8987228d29b183618c4ec71b6d92313f4250e99981b1b7309cc4211a580f0c40ed8f9b8f344d5b0a88f31c455cb560907b036aac568d5f58b9d7b10e2d4a31e40aa32d23b5e90927c0d0f7ea014ba16aa6bca2ffe63c47a191e41a01af2782a746aae3b0881854ce1d387b4ab65254f53eee38adc082428be906bebad4614b40980fee99d4097803e06d1f21b0a872b436c4c3124abe50067e5b30f0c216ab88eb5b2b39920175b75004b8f606e9063c407a76cbf6b602d7bfc9e5debb1550522014ba3f0e522f767b37e761e0c5174498a388e36b37761b93efa09407425b0add34921b43240694a601b0948ee18ddd2bfc818467bf024f012c8e73a60dfce02854fa883eae37fa126e92a5752a19994c40986d8ef65a3f10e135f1f2a897a8766084cbb71134b3e362469689d13a30db06816cb08709f77cab759eaceee355a795b26b690e841e16e693fd060783118559d146ca602b0f6758edcc1f4cb2663de00d214e12743c6a52561cca0195376f6722a4c7119886e9504c41a2ce438cfdead1288f41c58da61a196be0ca5e58525aa1fb4cc4f8642868aa610dfb7c0312945cdbc59a55a284a574c0ff7d6a7d913803818be1c095c8ee1fac79900a43d5ac25753b50f3d469921dccae657aae00dcbe358d93d030f6fd284431a99068ff49d381b2abfaf7b5637c65dbb027d6202ed028262d0d120b4132d98926ada33611ddf73507dc738a052c0570c605c405202332b0d6308ccb089d258afe0120a870738441066c5c0c4970b3c6f62d0762a807aeb2410137160400bffb8130c548bdbafdf17fc5d82006795d2d913e90342f88e4f8735c4773a0e0cc739990c31dc5852c5f8c0a5ed8baf21650dd9edca97a97fb3aeb37dd5b14d428aa465537c185671bd459a861586a4851661b869deb0187a66ea9a3fe58fe0456602a5bb08767331e20da71bc7939aed6e2cc112573e4d1e4aab27c1accc2d39b52919129ee4e498779c9e63a011a9f8e871fb8f889a94fc116a7c54fd879bddd21dfcd06649a0a8381c93635c16fe51ac4483d547b470f606d0662c6706904736fb24de7fd22d2502809d3710fc5746eaf3ff51e56c611d238d0974a12ec7552637b8828005c1b5bd081fc2a41fba2f56a2e38538765f4cac22a6ac441609d7cdba03a0c734c6fe4bab9645c8577f7a5df429ab614c114f2ea6376d1ad49bc95c6fcc65c70254d4213659175b092398ffc917f3fd0c30bc43d651ac0e3688739f9108f91687748a5a212405a78e79eb3694f787b0ebc7de0daf46ef7c419c16e94b75215d38491a425dcdb403e3f68115867c0707fb1624ae89cc672cf3c447be9a114cdda0c793d0f5583d6e84c161b78fe244628d6268c3fc0e9b2b819b589dab5f3693d23392ec2bdede224cdf03e976dae31dba0b26b6d832ec07a20861db82255e8e7ac93619c761ed3416ec23a938da8f5564d37820396d66fbcd18741975d4845d6afc948028bf78094e19ab1f1552c031d815f6466893bada4099c73659607ea1b53835fe2077c98f588f7c25ce68d4c51f323d76bdd049e81b0b74af27884d3b27d419ee2489f8b976b74b078e59eb99710329c4cc8a4b6104a1e96f6952813e920f6d6cc7447fe15ebf357b8e3b0299d8d01f7e528e09673d7caa2cd60d4319076db8dd39f7a52953f7eac5b15f96e9d9728a2d940ac04be4557892083e4e3de0b36d1bc92e022e8c0beb83a0863c6a274380b03430428bdc3e0d546f631d131be6fb8099ee706ca424dbb86bad983f943207754fe66c8499c2022ab79e41a920eabf4631b65a0af9d8e11f4f159c583382a5291a1c7961c188b3d89b80a736c49fac5aeddfc1c720f0709544666fd9091060bf60b8f1fe3a4413ab2052bcba3558104524971afa00ad4134c6ac34ac213c157babfca02979e0e31ab3c6ee990e9d95b17923c3d508c4f21b2536b1e43db3690f7c6e525067fc14d21aefd82252c2639e754627db0c87834a3c1188ecacc88ab7551634e7f18aba06da56b4d5799d23ea696421f0c87059a4a3b07330c528b7b9f8fb69311ac1ab4ddbfbf238d563c9666f376aaf5012fac7e3b25601d62cd9241db790fc4578fefa63ca0819815bdf6a4477db0daa7fcfba1100b8597ce704749532320b53b0a6756709d03224f2e63927b81df2a673dfe6faefc824964b1abbf41037f794bc46f72a5a9bfebccf84688e53a1db2686804b3c019705fffd6b6e2407fa614a49f991fb219c892addd4e9dcce1901145c3bd5b890fc83b4225ecfbbd27606606e8c1d4d64264220ece473d1f676d09fd41359f6227eddc5e05bbc7e5bad9a173f1fad86e67c5da90d19a74cf2ff0431a2af460755d9788ee4ec7a09ddafafee1d799545c1e48360931ea7a734ea60e92eab4ab48838ad2672734cce2452c6d78868a022587897387232b4903f7645747ddc7872b78123ad29d450359775752561633ad8b040a1cb2e2f40a2fa40c0dd1679f17c791ccc4b20f1faecb45f0427287dbe769ea8f5c4f3c0b3f187d222e894dcdbe4f141573f8350e789040073b8d534277748ea920c86c2c4a9d08b589a0cd3cbc9e5578d04bae06c9793ed299f55048cdf46177487047ee7cde5a44acd263fabd95e3d67884bfbd5b58d3556798afc237bcc7ad1315efe0f0f96fa8776a82f9bf3c676ac85b9edfe4d7451adfab710502c580a9bc935c1a024e9dec2fe9f6fd0ae4c56886589ff9de41a2965e297f2d362572ccf3c8253abcbd37e27fa1ab8c74a469991827d5ddc1b976a0ac34488cbd76bb2c77681a2df3da040c7541dbd75e3338d5ff0ce13ab8bc67f9713647b8eb0faf00f5607fa9a7cea65dc365a0ea39e70567791f668edb4dfd118136228787777375510b8a7600b381dc4c81f4f7cee1f004fa7362699d4591f30b50c5fce2dc48c29e20000db3b087bebd928fc7a2a21c43ac4c2b17926b6468e097139fdd3d108a72c789620f402fda4b55b823616fe09b59cb4a709a2b9d1f854ed7d2ca4fc923c21585920a6d691fcef5093de2200edea597ecb7b43374a1e0b778891a2c445264464658ee8773e8aa892a1cb99b0359145e27042073b275552e9061c863a5c8fe9679c5dd88d09f52e3a77ed5082ad9539c393409d4eb70a40b719c3c8245a8d3d36252bbcc04e2d370f2f6b909edec4313e9e1b81aa8329947a1226447bce49d0cdd1bae6aa65962dad585f250a5f0fb1abc701f43ffc4981f1514b629350b91b20f860ec89048a811259a157d96fb33b6e8cdcb5a07d0136d2c1d7dcd6a66a48a09590446760657c3bdaa081ee2462007b8bff4643bd3d68d25980b62e5d4dd2a9e95ca90bdfd7c8374500a960f69f96c388c4af2f80bcf80b2bc14aef160d7ffd366e1030e9eb2501baf0562cb7ca0c5923c62ea979f8c0012294e75ffaa818819fa90bf98689c1138087644cfbd21b35e430b6abe850f48bc8ae220b891a3adf3669e6e905c423bc0d3045062aa1e8b2bd3b7aec22fa046b349700011b717c39a0aed49f007209e8101f305a02cfc8029159020610bfe05dc04c034de61b589d19411c909140a0ed6f0b2b8398c485f356dc254a1108ea83d5444e87766d403a29237153aa3c9ec9d86f25c018f57e815fbbcd6b8fd6a9ca68c771ea62b44cfcb724fa6f02e6dd2be4b3b2ba6d932e46ded714a23e5378a8cbf3158cab68867b08f8cb2ae81a90cfee3d8c082dce627ffc9725237543ac9a4a8c0f6d218a8f1c3d51653e54c1c7ce19076f5ccc0c67ecd108511ea5f0939b296354b42acc016646c66ac1e2769ab67a611cd9d1c8afa13cdc710f748fb1db94d7c3318a48eec241c1d795a3210da90b101d7eec472d18ef183241bc0aedb6ec6d135cb95efcfc3c52707c8f28fcebc12da9b75fc04894532ae473db799ebd42fa7e79f36e921bc7ca1fdef6b4e91fe88255f268899ce8e694c79101fac5f8f08cb80f845c9ba0e7c8bd56290e41fb1a8854587149eb8114e3f93be6b1323d00dac3bf7bc4b9162acff8694688fbb437e63ae085726161f1192e27a5510905ab7c612915132b5fd1c89d2f4591c1842af86abb6064a6f5bba562a0d5b67862a373f30082289933d764b8fd95476e192b09e4b5749f4ddc9aedf224e24e769e9eabf84ac0154d5e22deecc65c45215f7c6ddc394a55bfa0e8a0244c10899be3ef93ed21ff1806600a562705747aa6aaaff954e61e7f983d437a8ca8770ff8870e3fce4dd8e9501d089d941dfb1512bede64d75091ea6cd9240ba5be1299ace736ac4123bb8d8a7afb0dc5c421aeaee0521ffd459685581b6cfd76f3a766fe7b00bad5f5542252d0f37b30cc35356b85fcd4afb250e2834ad6f7e2833034baf323736083c87f42613d6626a8104308d59cc8e5c2651472ed5f188918dc76b034431221d5b41c19b7437925ba3c0baa594acfaba90e6bcd81bd391cc3322793e2d57f69c5acb834539c905e45c37dd3dcb5e00d059c4ef74a3783b4a24b01aa8e18523db2ba6cb3ddd60ada8730bc5426196a123e01829e76f9d7cc6e6c176153faeaa997735a856c6927987c12565a559e698607f1e42e8ad9d942e99c6613794045d7d00ddfa01ed44f762e1b29408889b1d320225874dc91e530247a306f03d5f5e5c375bf0b835cee955dda4fcd3abb83250def2934070ddf7ca9968658229622018df38c409d85745430afc9fd428896318716b75d6cf8c183aa15f47b0050aabfc9ec78eb157db5460733f855b1859454220e32161dce618f16426b2161053628687ffaf858bc0258a10e8384bd850806276ab3fd80d2e9c67d9f5d815b9a992887b7981fb05996b2d40f4875421661ea82d3bc568d1696594ae970fc688de72b760b19386a250f65550b41bb5864a76db7e2ebf5483e4058684fdbb032ad7c23d0e300e8b7bd94521458a435db49008a9dbbefcbf1240734ff1f8256ac1663a08108244667fc08e2e4d687c8851d3a3594794c0f9a878406c9550786d26ade98b197f28d2fbcf4e2656c2e8dde74b6b1462a8f8c11e318fd0266cdab32162e2b0d2989b887e3700b1771173fbc1e3cd8108aaccf35997d76c6b20ed319bc489809c1b2ac43ae1e14daac1c0d0b82c6f5921e98e83273bd80fdf5395588cec8ec55c92041f426508ec3bb3a828fe61e6f8a6c29403204806e7c63f1d41411b63d91622b347f27aabbf5786fbb7a5daa6a08b58e698d68c40998da736f49222791db151a0da76207b70b23d2252c423330babb78d844ad1a085ceff22b31de18166edf03666310b766975126e8b8ca4d32ac2667c2a2aa902dcaa6193e4d974804258e67a669e76df0dc6b9836291eae6910c74cbdeae6f26bcadfa47ddc4c1c29066fdb0d03f8260b3117d0508422e7c1ccce6c19d838d6d29a404ad33343820a0b3d2c9bbdeed5ec84400f1ba4b84e6609b50cd0ef9dbdf6b28bae2945f29c43f9232792454f0d016c919fa001a4b42ac3a8e3d07495f6aaf14cd1c3eb80ae81053e1468dcd1aae0ed184367c5180a7605132f078c080b7a612aa6801e6bf12b81260cc06d503712857098bb92877c5a54d2e8e76947bc9ac872eef3cee92364776b990bf1f18f68a9ba560393f101f38132c9fdaa2328b035679cf18a01b7635743e0d767a47b8f762554ceaf740e1bb77a5454d09f6dbf93960e1123d741ae3049c51d09a584554497c39d45683d8fff6a65ae6c0999385c7257d8082ec2541a37a211b28578e2768e05eb8aa5bf1b2ac09673d2ce2f4b54079d3ad84150252bfac38b6742a0914319f413f3274d76d727f3df9b8281509b8cffe5ba8a1f0b7997a37fe515c813b0e95804de2cdc08f2c25d667749887746a68ef537a3de1c8554649105603237a98c493a4917dd4e3694df4336bc461675022bb54a083a0111a441a39a9f91e80d15e5d1761ccf3de56749a9f62e2f3396d3f96736319aef70fea31a3376e3341175adcbd5dcd70db6eaccaaf2710c272cac86e421f960b03a17dda0d23c5b24df845754e523615a72081ac6de1f196020919b4dd613f0b364d97285d137a8c48603dc99a3d06bf43350f4d107cd7a8cd22405c7edaad7b2992ecd276fcd79ce35152bd7f11413680f0989b6c54a92355093e1a59bbb9558d96dc4d7f990aa41128421cb80f9e2bdce129e501c3e0f67efc0723979fb0bf8a8fe7002529a8e9b9ad7ce102daac7b7202764647ce939d9317151568aa4e5494f5df1898ae9669710334f401ea169029527252cc7ac005e18381322b68001280b4adfa2ac038b186b3c464c4069daebace2da91c7bf5ccec4fd18e7d978745f7fce0996148842e0b7635ce8a5cade36fa045a40e56dae657442056e64e43d19c604921810f66273b14dabc83b521ecf695b45d666599495c8db306cfc76434a8208c2fb8fa9fd940c9f2c298d1fe5399e45e06dc90d62432f34fd22a977d82c9d2992a64f9d541f25be975dde1b43178b3262f8f415de20a1c197fe6ae8ee0a6ae7bd0a342304739498c7c66ef46dc4397240196bca01598c9c252e3694ac7de63875c2dde99efc9610e9733eb8080cc51485a32cd07cc18abb9abc2a4a814e02b16e13d69e2c383588298f80e7f0edf48fb535adf80b20c32088c6f92d2dd2ff0b63dd33b393e37eecb415c0eb4d4573b59cb22958cd9283f2abd4aae35ad0fd150c6edcecb275031410d7a3f5a38752dacacd92bb3c7035689fcb80d521336777e6eadd49a4039088f965fa131cb16423fb14cd3edee9d0bcdb8ddb3d4ea302e75b4cc053aae7ed0d7ea2704ebf307388a7089c8b6a6f7d8be7aff1485bf4c827c95addeee2a9b23beb7e948a4d8e0ba0ab6a1594a4f5e258af916c121ea67c4f424e6f262ec77be02de8579442401b175b93723d2f9c39e9359959aeabb611de7089ef4303484f8573cfe23edb41c54e2970c94ac820519ef57ddd56cd649945370e246ecb9b2e5d2e92e3d86f67c23564c3565ce2b3904dbd7f5b9c95ab72155961ba45c31fb8600d0c4c0b54801f879c2f65df3c344db28ca26b221f264592600aa0980dcfac991498e6fe5758c72a6bb969ab5077630ee06a5c354fab89de3f5f85fe02f721844d91828aedca927916d68c12ec5267a65c71e7dda9e1ad2b3619f17a4f5f7dc66b3795deb0452752aaa5897c701d94e8cea0f26cdef7cf305e7dc5d4d133b5ed70fed13a941ef7e3eeecf25cf3bd0c7b3f1b715ae550c9973d2bc8f332b99b5a530229e08a9c3ca808b5793ca255975c2fd79c698f059788008b3bdc26d1ddb1ab21c7d98fe3b152eaa6a80f02334dc5e95022361058f83781d8ed1163488949b0cca05a359f10cbe0d6737442a510c192e40b2f4593cd5890f93fcd5d5bd46e5415ad04038ca2e8d7ced980d8a19ec3c6852fac55008d611abf22718768e3d21cb5a3e6c8feb58114a0d0bda34c4eae53781b0154995c213af5c5bf4110306887aeee7f7ef4781a7b1220c2b81923a1196f7595b518e3332350644977bdaa70384d6c24fc23fea1df6248ed817c399498ba5d00d1f062b4c19a1031e8abde9db640c7a2f351b14ac08def598707686f1b8d8672f759cb7ded0c03f70abaee7635def364d2d5612305c77fef59169f58712628c6f490a70823cf0a866c32ec54dea628ae79cb623f49f3c6b8f8e124479bdc5998b84189e4eb1452b5cc2a786c92b375e6a9c355f3c474c8186bb43a6f08bcdb181810f20b522906e60a15042e087f10d24b12491a4dedf945bec6c30e204cccf384b020344efc1f0aea0a7885d171b687d1a6eb71077c1dcec2a8404ef2f9fa4cabf0ec44b882ff05ba1e0fef1fb3190dcb46d44bacc11d4c3860404eb76b23994d93be6b2cff3255b680e27b9ea0f8e93ca86d7246c633ca5e56dfa4f061c1c140a9a5ccfb7d42cb5206096ec0baebdfc24475750a7aa0985e806212c73697a06c8476a7d31777254a716d81d19026360aa335ec9c58e1a35ba3840e7fa771595383594ecbece4011e45a556ab42f9355bf8e0825b8b7d5a61cc65412b76069634b28122c1ca1b96f12955eb828fdbed39cf30ac459bb8d0f2746a3626d1794c0222c2468a2689a90be5ad9327eb8a7784b50e5d918190068cca0ea4b2bf1465a3eaf030ffc4fd50226b8f8015eb903b8585e8d991b654961361a094f4d05b6479c3ac9252865002ac61c86e414321b1c9957df6eaf9ce147100991abdd70bc6e3af0b3f134e7cad084b644862706a26226c486ca92cc7ce33d7a038d7ae571c8719a41bd567e9983b6f44e49e46dbb6849ec92be2acc942d0ec4e2ebbe0f78f6b1e44c30052e6bf5215077a91843591cee23627f7b5a7c53bd3bb1228aac6d68811faf4265254a72e5db4a589af2135d02078ae8147d6750ce9609149f52ddc2cf84085a1fdaf2968da823e4f3e1e245e479c32c7e084bd3fc3596977365c1e4b293fb7c78e1a92f1e801792e493cf57391beae0a2c0d001c9e67fc87897b72c8ac49c93f0681fc6a26639664b2b2230ecea3307e4c6c8cbe38115d8760f8cc109173595e4fb51947f95e2fceeede0787419416fee717cd8b4ceade1c9e76db5b9001c2d7a01e69a4b186acbbe2d250b1178e262ea0b527b38e8900bb9b420d7b6693384a41b3cde74038f1a2e2d835ba21b42e59714676e650b94f3b4d0d1b8b079829420b5004d9dbdce35928f49e4b9409805912a9ea66fd176f07d291093b3e5d4ace058d30e7e4daa9cb91228f128e661f399db1417e0aafec0d8ac153cf208dfb70aa9e32862933ccd4305ad6d278d503592b4c583a045de3b4e9ef4c192e29d4012b663035e406ca41e3a06a7783a11eb0427e4a761c4e5c997ec0e01a6dedd821b07e49576f0db04903b4bbbd284593c67661245f8d200bb11581de644a742b6b74d90a26db2694138cc70e5c8057d25718c2a73227d1045bf6356357839445ef6570f84c43d854a2e4f997af750916cb6560b3a188c984f787866a65b99aa4529c530193e9bf02ecaaa3d533019a686d0b45391c215233a069aa57b67e0aa6f62aa8a56e76d45b68957d9c23e6c04baeacef013361cb19944b975841628170fdf4aa2b66e419a6b4e5aca3bd9173a581e48b89d6065a7498acfa7fdc7786bf99dadb3c4c6937b6f0f534cef6ae2b9a5e926a5f27e0406e613824c3a36efc75b828e6ebaffece74a17ac501f5a70c07429a72e302527375632b26048e7bf49f222e0b659d27078e7b2cb51647cbc4b23b8619d5da8cfdbe8f4e94df4eb4f2300cd39d99dd0aafa4c08b66e8e0b8869a53156726a22fb7ce2f38cdf4ea02d99019f69a958e9cc0a5f57f37f0083204d1f89a2e65046be3067e18c26d87a8696e72a1e92b95bc4e0577202ebd83110bd29b29b2486fd64c9f6f05c7ee69b8a58ffd0bf4f5be610f211b989e747f626fbddaf1643932ad880ca2aadf700d78ee1c90ee584cd43ab1a2c688ab1cd54e1031476e0622dc430ec8ea707b07d09e9a759e0cae3702cf742f440986e60f3982fa28d4e565d5a703a8002548e88b0984577439252c3b5eeb825d42810a28bc717fa7bf1f6d0bdab8527931ad4d00ab87864749345ea62ed1550a759b336d15afbdb6e3680409cdae22df1cf3c84d102f47c67a83a0872cb78b02d5116aa3f6e326b269137f136ca61499eeab48789c53993f2ac419478527c638d380b41984376e6a2caed9a4394fc939792c8f77370e46b044a94dca54c4a1e4ebc476d7bd570f6f029e7f817cc59aa05dec246a0e62cd846c55537f74299b8aa7b8fe3606006e807d8ba82675b5d7f00bdca8a04058e0b386e92198e0787f18531f66d4a00c2606a2576cffac7ed81a08aa027b40ae4c590d1d7b496ce5d7ca275f2bab7c5ce9932cb8f6c0515a0deddaafbff1573a5eeb936e906bac75a2f2d60ff4fe6769123dd4ca75268838ea1c45a85eda44d340e5a0b7023481ec09517dd6b83fc6a102b82df9e4d53290dc5825babd3a4e45d3d1c89ed9a47293f6dd4491746218779ac2ff1ee0a494e24e741f88e5e3dba9685a16888b9c98b855e34ceaf797174d797621774ddd2c19097723bbb2bfc467055c4addc9b164eaa1ae972d813d456cee4f9e09f9d1a9f3b85af230eafffe7ef8467f9f85f375083afddbf6fef57afb7d9ce71b2ff8dc5aeb067300a77cbff64aafa42174dd02e0fe9bf72fdf734061473e013466dcdf92ffeb3e80a8a7fd81960fc9c60038b0e3d34b3ee75ec1d00dd867f80689a61c4b2c9747c675ee489962783c9a1262ac59bf35946bcfa557d112e8ce6dc66363a9a02e010ad878daad16077b9f8cf11afde5527363d25d9ffb1a35ca66dcd7328150e390bf80bdf109a079c68d754880626d5ac4f88707e335dffbbb838f24e0ef70a60183de18e4675b44c36ebcffe8cb2156835f6cfe550005d2ceffc664b3e0c9a52d038a98f018a59809ce16794d7822454be08636bcf0e3d5cd66f0cfcff3a8d0894969ffe17c1cb7e6f8ebde41928c440d20890900bc9d590d82c753414538cb18f8264abd201142abb8ef20a734c31953b8a88f7a92733b2b7f732145a309bfc718831571f6af2b7c5ca2b8eaa1ffa7c0a8ffae1c1906893c74d21f5c1c94d1f7f92449dd454bf08887a92fc3389472559b9cb0a254fa68fd2cdc3de90c8282a18b87b0cffe5f26b6700d6b85764fac750a99004af6c6e43adc700345f688dd055c827b4d1900ad662d7b23a16757ebe87a241b350b2926fde708514726b919f529dd459dd49b1a47980b57ef34d883d173dbb1636fb202c65bcb882517ba38191cb15db295622d625f2d2cd3c59325e2dd3aa20d2a766265d49d250e86ff1f22aee616343d071e9d69c5adf5d8e8df4c6f94a82b7c4d6b5427934aaf5463b591c4889255926492c30ff46ec98589ee7150e9b864fe25c5c4b9e78a767cd7e7f1f9ba2dccca5702cc924a022e0c2a4712e405b642a3e94f03e930d43ff62e824a17e935f89ccf926808480b89e8a16ed0de8da69515ccae540a22f488096cb0c30d416300349689e30c0babae732a9634f11e8ab2d29d02dcae1087c9538d532b264a92bab98d5eb8a64f708d74770e747ee29133d0fed9c312d180e8fcea62fff6ddf810fbc372396ec2ed7509da2e96365ce0882b80de7eb2dc6a7b88899e817aef19285b88314b58c4de48879416fb1c0a426412fc6d407005459d96964c37ee0dc9816798fb8df1ed1837863e00bfe25f24a8a05d20010468e1bfacef93f40a835995cbdcff8c2eebde2f802d013dd0dfef2b57a36269f0145771d76c24927d1b21c7db3d1b346f18d27cb65e6a59c42f46540e6d53c972b080601e33821bc277d36a2900e07e740f11201c3ec0fd3e209c9f046c977c809aa8e821d5b9e7881e60e94c59286fef63670f07866d01072c21e654235713f58848e7fe081af3b2862bff31c253bd69cf287df5ebd4274312033a008d082cb1a0891aa95ca5a4c671036f4f59b4ace81ae5e2f6b5ac22bef8d7c7530d1e00cfcc76bf359924b7265e0dbd00fa7994390600f5f8535259c03ee3b0158cca85cff211dd121277c9911d845cfb134d1a2bd050570e6d586891f78f626439a649fa45247dbeba37fbf16f924d9e5669d7c539e7d842fb1024a4b0c7f66e74ad2a1879e8cb59ed771602672f1bc5696790eb92c3c15deb1e0a8b5803e015dcd053fb2ed825e1869a276cc548ad9b1876af517858ed2338a137371eb56bfe422f6d70f5d92b0de368cdd4eca0e0cdcabed6d631c4eab5db2b06c043d4acd68daabf3ffe37e74b970b0229052b91bd21dcc296b3186f5caf374a7719701b53d895c2b2b277f92dcc94b88de8688d39d0df81714c7de56d67f9e8a9add28d742243d8a1e9ea44fa31ce246f2f89cbf129f9c10b194a5b0dfb79f149d38adf4e9f8494022bf4a98ffa14d8769aab5645149ed520c13ec5e196c96e2668eaf9a9493fc01c420319f2b6c3977cc603bd8f097a9f2bb2b41658903478a915f172277f1f06df4900b921404594b0311ad4d519ee8ff4b6b20a354af42c6baf06912e5ae0027d4a83ce1c8e04697de116e387891b3ba98367dde4ce7a4c0abc962a205e6de38725747ed6655f3c6a048bc11927b81869f0338c5ece9b54f9ff7b253baa5ea1bb4e914ba5a793285d8e80f93055f0ec09c911dd0c636dee1e927f642ee8a32619e9946c817ea57f5234d477b508c7c2d3765e81b15ad9855b0ba008eae1c83f69f0d2f490963c0ded4a06f2eeb339509fae842ce002dd4f38cf5238b224ba697956f59d13e2ba960f2960252535e142422102de13ab0ecd9cc87187bd2881c538e86b38cf5f4674ea8eacbe3f22007f16d6ae3cac9e9bb429a0d88c6452dc902df9a9833c67e3c27e9e84468b3715f14ac4fae9900cda87245e69d8b8edfa55ca94eaaf5bcb4a896ab22c75ea1e2a127c3c253e2d70ef1f27b91415f56311b957195a35b5c953d71f5fd54431479c1042f55604de2d5cf47dd69b70db35eeadc882637116c61c1ef284038567290c9c3e5ddf88cf9343b63bf48f416905235cbcab56c96770af30ad6a9e559579a1dff4c1fee0c88745aec90d4b6d0d9af2d1613a4289fa83f6f14f54fd17cec121ee82d1616fb1d1374fdfd1793114ae9b161c5a3bf105b5c9ceb475d5cc01d3830c38e5f2822e3109021148f5f76ed81d0a54d203ca0c53995320dc4d6d0e8571c8c678a46437b1bf6958f2728ee9bab0513e03bd23193c52e05383f2e872a18962e6fb3db96ca8c97ab1471a4c98f27ed3309de31aecd631165a48a5e079f9fab666bb57767777f796294919920935096e090e33bebc54bf6e22a9b61ac57d7d2fd2280cb8cb811a4569f696c3685ce6b8d72c0db7d902dce40c13d97eb356b86ba68b941dd968d564fd9becf9e705bd5ee1ebc3429c4d8e8634595fbbedb172d55ce32bd7911572fdfae36b5463a46a94fbd71fadb04f69912b4eae9fdd698546d5cd88feeaaa8d359797eac7417399fce4c9833b026ed02ab34c73cf3cc3287dccbbdda9feee2d6abb494569a574ce49713414af0d1a8f2646a3e66b61e4da93abf7959146aeff5d6f79a93e771d28d7efe86fb8e41ee3380fd3360e2bcd8106cb30cdc77ba0533d6aca42d334ed438dd3b430d334b1cb449ad8699aa6cd4c45b713b93bf3dc1ad599b208c3efba173d77cb9ab92a7eade26fa268cac294326511aa15a749df4274eb2a47c4de5d3326cb7ea451f5fdc50fbd1ba9b5560cb4353b1a99fee763a86398a839c920eaaaa4ed8cdc99b430a94c59cc69cac2a46a94a5d14c293a6b8e6852791569770467eb30bda190a6e1d286968797b550e8f67725c9f2eae762a3bef7adbbf55a2b7a2a7a2ef49bc3801f0abd470abd26c225ad56892e87dcea087df679f3203fd2a4fbd70211f3daff5d4ffb8e64d94895e6405dfc4baf921a36b4d22bb334b4c9af05a28d547953a7ad9e6742f0fabdd63e7b1fd8570d67f3b1c0f00dcdfa75602eeaa8750be79cfedec2de9a27ef8848ada837ddae03cc3387a9dddddddddddddddddddddddddddd3d3eac9f161075a5369588435abd0eb9b3a23c2f2f32e85d2420f1e76723894f22ff85ccd1e564f50a886a404159ef04f90e160494bb52a04a7bbafba7274b14dd078443f5d99420bacf53bf60b53e89f20fcee0319aebbdf465dbda5fd9a3160e62b97d398926ed1ac47223f5f76b58682615664a998460261567526918fca2a6c0b0e1ba0e9736dce538cc94c59642833759ca513916c9fd948ead4cab90ad0a11534d7e5fea4ba5a8981253584a0a02baf7f7c1fdf609983342b0e8dc8505b7e19b4cad0e4abbeae8f6cdab58ad8e5ab1337229a6ceb03ab08ca524916ff2677f030641fcd2c832f69e36412cc3702b7b474431f5a5549f48535fca079956d5971ad1ca69818c1f1d29b47210799221052e324fe6e8a5a5d85f49f346bf4b2f0a640acf8dbfb4919a15cfb634fdd47ea3266797e44f6e5c6aefbf3db86de0732f6e180c29bc15861873dcf61feefc825f881e2eabd5a161201dd6b82f6d2ac57ec34034ac84973192e6d50c0663ca1552acb13c8dd2e3f1a6c7e3f13c658358e98cc6cafd58cf84ab4675b8a23dfd885886ab70d5647b3c4db64bc43ef3783c285cd1faa5c75386abb26e91e96f2eb1f4208f6776909b994adfc714f5da869c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c2ab84a9bda198651c7a557690e5cd848d5a6fdd50b281cc9374f32a0f0a3851f8fa7f4726c23d524adb5c979eaadc761ba6f4a314a29562946fe64fa1c4771a5b4d45ab9eb679496f1935b636940b4bce920d8ebad130762a9e57ead48a3b046d56c9b31f3f378f2e4a1666c88c157022fbcf866f0c9c00b2fbcf0e28b81175e380e381d883f0849b3522c84a00500f2242308ad1cc660ce18204fd205562b093f446079e1c383dc243db943ffc95296e8dc99db0b204fc2e330deb6892289f437de6b514a29a5f4c37177f78fe5a5fe6d134512e95f4b79a97fdb449144fa27c914f6f24292ff2492687bbcd49f6d9b289248ff24f9f2b2c3b990e43f890482209038634e3fbfbd10bdf74eb72b5fa66fdc99bd96c388b64d1449a47f921cb74d1449a47f92ecd1b6892289f44f92aa942aa54aa952aad4cb0b49fe9348a2e8b36da24822fd936493bcbc90e43f89248a3c3bdb268a24d23f3943e20272bbbf71693e5d2241bca7e3e9783a9e8ea7e3e978add06b855e2bf45aa1d70abd56eeff703e9c0fe7c3f9703e964d7d1febfb58dfc7fa3ed6f7b1be8f254a8952a29428254a897a6cd0cb0b49fe9348a268836c900db24136c8ee80402f2f24f94f2289e21441a02982405304814020f14120f14b976d4604140a89804222a090082824020a8980425fbe6833e3eafb56dfea5b7dab6ff57d3633fe38ccb6892289247ad1d78bcd8c54e3a81a55a36a548daaf1ebad33239f6d134512e99f2447ef33a3578f5eafedabb76748781ca69fc4e5309dcb4bfd244ff2ee243c245f8a25c945bae49264dbc0121369394c13417ce3f8feb0c7619cf8feb0e5300f80c0f78b2b8779e2fbc51e8789c0f78b2d8791c0f78b2f8799c0f787560e4381ef0ff5380c14df1fea0fbd1ca602df2f5a394c14df2fea71180bbc105f92505f92305fbee430cd9f21be9cad9622be9c4146fcc806c5a1abd2d843d2968806d1d70f8dd32b1f787a7ae81f057c8825e8c543b8c2a5f758e07a14d72b70bbe63614b729707b0297ba247069042eddf1d2fc272e5579693e046e145e9aff809b8497e63b71492fcd6fe23acb4bf399b8f31d309f010b980ab809983d784c031460aa24717520318f18c0cc3c11c09d5e32e216319f883bbd34440e983bbd84bad34b42dce9251c777a29883b7ff37a37970381cb0d00b8145f70492a79175c7ec9dfc02559f2275cbae4b273996e39592dd7c62d459d52f42945a01cd2c9fd3e94e1aa0c018952b99f875b8a443eeeb3c3d5e1ae5c959b7251eec9052ab9545092325c511ed12d43a9dc1f2ac3151796e12ad4e3d33a93d53b1d0e579a4eca8e3532c5a5b69aa7a6b9bff0f79f1943718a12d91fe369b24331341d348743de9b58073a0e57160c62e93f59188611ea843e94d23572e99fa204fd9ca2040684e2bc025ab95641abd74a4bad34d5eac74b194f8f0feb67fc69a9825e2955a6526538aa6ca5ca747cbcd4b3f9882cd2cfb748201fd70b0fb9f33aa4d5e885e160aad18bb5fd882d125050eefa1daebcd4fe2f3e64cfebbc5415f9f224e94592e66561f0569be3d0f1476b8d54b97ba4ca5ac7473e1875d5d12b37a58d91f0f86bfa683ab9e9cdc210aeca70959b5e8fe338d059f3f43a19a6b108780128531f3db2ce32da199665d98f1ef4891e3e7ed0da3950150d310987994f9f346172e4c8340c4f10cbcd5d46829a24df96402cdde5f2a046cdcad3645569d193559eaaead9b6d25deeaa3d3c358c26bb791a55c3a8b5e2549ecab3ea09a35165dd1123f757344498ba9aa57e7701558c562fd82bec15f60a71f3f1a93c3c3a3af60a7b85cbf57ad12b6813bcc9527ea9ecdc975b2b8d4679ef15c95eebbb16d953bea9b2d76f1312ce74d157848109913c8567ed4947f8410b1e142db0f05aa4219fb020c3f420df14a091a7d0b2f62457e4ef0a22157821a7643fc950c19194ec4779eb54d9cb3e7ab3b9819b9079f2dfb09827ffbe36d33bc958410bb2165f4ae4bc5776cf95ddbf1ba720a0d6ae3e6ac501eddd1e7677c5e9ccb14ab78d6619a7d5be11b16e35b2ea5ee9ff0e9853af749636cdddab7b9def5edd2b56bf7fce39e7cc7cba6b9a0a324c8886bbf02fb72cc36a4a8b9c92276b8d346421ac3c7ddce0835c4e29e4fe963cc968b1328f19837dbf371a2d8f3ab250fa24252658499e98603fdfb921fccbadf3625c6ecc13754185d97d7451480c41fb791db7d5aa6119762a21ff4b52cc14934dbaa5a1a49335c4d9e4098aa6e18e83389b4449d13671731e88f4cb2dd3b2c7bc4ecc475e88d1bc66ffeee9d7dae176ffb9c3b10aaea4267ba22af58dbacb1ca3084a96a8dcefc38cb9314ffda6935c92792e8144042944ee271bcb5660ef55efc946e1d21fc33c4c4f18ce329f2539873a9f4eb2e1308d506d334436dc721061b68d884c676278da0762af65a75a33d7bcf0264b2976f1ed88f4b10d73ed23335789f4cb2fcf59e7acf3e7ada3d1a842f2ccb58d9cdce75988b431eda374fe6c927a5b2152b2c9e9984e968aabd7ea9faf40a4ef5fb7ba711f16c1fb26c997178a00df3651ec512ea955e977abc391a0f3347b08c1020b1d38f714482041bf7dd67931151d34e2ccd4223169cfae73e3c07e99f64ab333360fa8b1c0c28134ab634e92ecb70998b354dfcfb03a3c5b1df5c36c7d2c6b1ad969604f437b2fd35e6bfa3db9e770670dd384e4edcb2a44c355b57dd5826a7e0615754b81a1be0f0dab19d6d4bb3a56334ccbb69c9c9c9c9c1c6da62f98c3e570395c0e97c3e570395c0ed7f5f73b1804b1a9d5512d4d5b1af7ccd2d45a2d4d5090a5c9b22ccbb48fb3349aa6699ab67d9da5b1570405f5f46cdeb681ad2314c471cea1805f6cee5ebbbd76d7ee5a6b776dbfa65456031d33db2bec15a9544fcfce8ebd2228a8a787c5a29402c14382ae712713be1978e1c557824f06de1783adbb55e9b77dd5625896695a6bd3b66dcbb0ea7d72f0264bd9a572bd5710c56f198749a1380501596311601174e1a31fc322a0fff6c3db415e129fd69a8657cfa42fb0a76d8fa09f66394c7f88bd389c51968bdeb92076ae7d46a5b57259fdfa05d1a459fdd3e338243ffee8a74f8729f9d04f3fc1cdc223fc215c92b96c1609f7cdaabf6da24822fdcfccfcb4805c39a87bead7fab559d50b62f822a6ae265935c4f5c72f47a3f047cf237c20a3f1f64e93235c7e1ebf6edbe8e7a4235c8e0fbe37bac44b8dd427a8ab51e0d7a7461a257ecd5e8ba028e2e669b2864fb7107bfaa751e1572be41ad6300c550ed33bac59aa5f77a8507b2aedc9d50ce266a4c998a7daac79aa2fd3150d62495fafdaac6651213ef8d44e9112fa29449c12d2301ca7abfa3febab52c4eda688339ee8f61022c4fbec857ccfb1b66685700f0da7845efb9b99997df4a00304566a06c329a1d007f13ec3296208fbe01e7b0c07f99ecb5e7b1fd96bfd18cddf9c999626a5877bbf4cd34c53b93e165ef0d297c3745fb7175539cc873dd2d6e14ada5c4f6621d3a3f0521522e48797ea27e1a5fa19ae8fe11c5eaab54b512bfa66b362bba199c90ebcc9526a41b5d6ba4d87a974c670efda7f1f8446fec2ace06719e8b582b3aa1ca6ae6c96bf3b8515946614db1efb3a4bf55b472be240b354a7bb2600ead39b86034dd26dfdef4e61458aacdc56ebccd4c32c26e2d5ef622f15d3b2ac3a36a5fc56d3cb0b8ba95e93cabd9a8ec02c9fb7dc811cc6fbbaf25aab8e67f533af6a88757a896e1b8761db86611ba679e9f559a55886d9a8b5de787d0fda3ca4056fb294263fb3beb706d1554b71883824c46edda2c9bacaeac605f12663293bb8f738ee8a9cf7a238a4c98a55955b0484deab560c63a0aa569a8b767fb7df941dfe9f18dfaac9ead97f6234597f08a606b1fc86e4fa5ef60de1bc6d0ce2cb13d0339e8f97363188a5f70d51a351d9635f7e3e487d2a2d72c5c975a5c345ae5f18b962e52746aeeff9c679e2c8a502110897658ee33c5c9a54341cc6c6c8d5f3c9f55d4d56cf880371ec0579479aacdf0dc452737d5f764f5ea69fe34abcf7ccc31976e36e526996c6b1ebef615c764bde84612525d89794601c97795c9679f6df7703d155b923b9762acbb0b736dc97c19f22482adb703a299d54ca86b3e16c381b2e555335a5b3a54e74441bce862bc1a50d874b1baee4bf9ab2f16cc3a5746aca26cb5e4aa7a674c4d203291b8e4ba5529966c3657fcdbbae0a19bbeb3dc7bd17247bb8fc6e4dd9404cd9e18d5615cbb22ccb2acec5b85b85e4924b45cda509ee8c8daff1e530de1a5fde1a5fde1a5fde1a535548a3aae072f6345735beef314bf36599d5917dceb0bfa8b7c2321ac613a34bf58b1449230d2346fc483e92551c2f2b4ec5095fd85bae86bbcb5f4039e8f38b95b417345dda2bc31ecb4eed0e2c7f7d2da8515cd58ea8d128bf26a5e6d25cf354bd9f263d2b345983ac9c0da2bbee05dc95330cc42be27d1cc7711ec957ec3bb925cd273448f61ebbfe8e659c87e791e7d92bb924ace4b9c7426b31f758092e398ee334ee665f7247230ff3ae097649a42f2921914a9ef499a52195ecf032168e2f0fc3a5acffe4ce6c4245cde30f0a2e4737d15c4d7e3410d3c8ea0bab3abc225e2b7c99a491b3f76ae9aeec487845b0d7d25c8d72cfdcf57e3c2be45abfa47becfd621e8abbab44c165965d0e2bc9b2ac312568ee5cdefdcc5e8914eecae09f805ff2a941f3afaed4a7b9b4d7a6e28c682e4d8d5c5335675d6e186691f00f1fb33bfc6ac05d391cbd774728dd63d89350c4545d4179273d46f22a8fe132e5331cbeb0bbb2bf6320d867df3b2ea5706c033473d8e5de3e0148fec348302cbe3f764d4cca202b1e8e53bef7c7defbeca67c2537e5c3df10eeb12f79ee625e721fc2484c78903c868190fc8781901ebb52641857d2dbc7deed0e129e2b2a8ecb949393777cc27198639f7bcf3d76e2ce61ef7d8ef98e4ed59a0a3521a2ab31eadefb397a139393135cde9c5cf08b124cfa926bf2df2579ee659a747f88f88ddefe099ea39109f723aca4049752b8cbe4b91ffdf761931f711d6682cbce264ffa925b7edfc9975c100cd15df9049794fce84deeccdf2d4b5ef4a4ef3f5c05cddc9b4861b1f79e62ef7dcf71ffdd6f88c8718f4d92e7ae1445648fbb9ef7dcf5b05b06590d11b1a71689ef4bbe3badf88688a5077872691fc352b82bbb32c95b92d19d59c6bddbb1b27dd12d3dc0136495ed87af4665b88a388718869848771576070978edf59617547f7a101f04d9c9dc7bdcf55693f57b0962ca0e7feeb9cad3642dd264fdee653af3b21a86e7e3a5fa4df3774b07caa5e6d27cb2772b4ec509369d5bde84cb8a9d3090969fdf7d5b25260682ba7424b6e9dc82817c8f65b73cb0fc6120a8cbc4258e3c62d0e4365ea63daba37bce52c99b76e232887d8bc997e971fc79cb9b293ccf0fefe9edbfd021c2b738724b0b2e6d1a083ac4186220a84b0b2e6f72cb87d75a6bed6796c6ca7878edb75c129737d67af3362ee9e9c37f399d1e47a3c23f3d66694e388738d338dd70025173393e10f6c7395a0c44874f2d1256089dc1e0ed5ed4d1758f5747f7e07b1f08be4cdbdb7de28889880f5ed38bb767c207820e3173f89d7d938ddba6dbabee5ae66767f720de9a04dfdefef1cef0310fd0aef46d09717993f1afe067796a6978a0e10af9df25eddbb07fc20f825fb27fb26fc33ea95116d3d3db0f3fb306b0f1a51f4deff2232e6f7c8845f0c3f7ece4113ec8e3fb5bd63c4ebce3fbee3fdce1097edfb2fb952780e9bf038098656c692983f0b038a57bfb5f4af7f3c31ddd77f81d0e92ed8365f73d80a697e9f096e1b760f00b31c436cdf2d3f2303d888198fec3404a0fbe4d87d8a6b3e9475cad12f8c1776be35d70bd71faf0f4d6c6e9edc982e06847db3df8e3c97e68001077a1155fa64924f2adc5e17be115c74bb24f6a92da264923b3fbb10c92fb3dd37ba66b63c734b55c6a9198b8bcc9f3c79f8d6a397d0bde9a6c79f0f6cf5bfa697778cb4fcbe38467932de4af3c886793263cc9ff481bb7b4f13d7c4fb2236dbabf7bf2c1077169d3b99fecf07fdf8fa69f17fcd9a8d3832d2db8aca7132e6bcb254d36de87ef95eec3ff7da5ffc6efc6dc7ddf1d1383d422317e4b774b1bffc3b7dcd20ab05c791bb8f42b255cdee48f66f2bbf87fb8a54d5e791f6ee981bcf23ddc32485e79b151211e35cc9c61c139441e78c05304c93634e38c9fda995ba751f87ea8a242228d4636fcf253e92e8f31cf70bc40eccffc6fefca4f6bf1141aaea2f3c465906cd3598797e9d669d4d4e1c353b80e4fbf57ad736f69ff71caf73b7cef6d3aacdc9ac54675af63c4250d8068df8b882cd97e00c4f03f14e98f1f3e57734bc63d6a0d30aa8061f8d6daf1c32bc5479aec481c83387329daf1bb9b026225c6b73fe2cf3e7895e857495142e5ed5b0ca45fe567f639889fb7196222249f72475d4ad1caf8318472452d88e0185a1b7ee217061b7ef6c11fc710864c835c438849385284fe8ba32d1a45d5701911894dd256a95a0b5be424c4b455f6ea7387f1883b99267526e0ad02cb26bf591a12c9da9fd806d351524282532c16475da2df5d21ce1d5cde942f7af1cb2d348eb8b4a13bed7fdf71b80a2c776fbdef3a4e93d3c3f2463fab3e461899669e65cac553d72c51daa2d4d5ea14bf09312658de64b9799e6c3175c2fcfb6f9defcf93fb9f90feb78a4995cc94b2788af09334e530271be67c2826cc7c1fa0cf4fc2219a5c4401f93654144d3a76c549d6378003a9ce06b1e92d92eb27e139aa0a2be3141b2d63bf2981612222d0bebffe8ffe205d54cb807e2d8a0c9751e4fa540a52de9aa44195ab41bbcdf771d996b76b53b3a66519a76d1e11d5cfccee05b3a507f25727697f7befb634dd873f1b4531fd90c565f7e1530c44bc216669aced7ed66f5e22e077957e5bd76d5de7556cd206bd97697a73eaf0a4d970e5be3649491266db36b2bf8580b88bedb7ed3fdb6d3f710e71db92983b363cc255ec28d9d91d55b39626fb69b5cfbebbb3a95a15356fb8aab82591584af285f0f279b7041f5576c953094750237bd4592b18925df264a9a0368c902e6cb25c27c553d035d658e395b3d7dea325073c67b46a77d3b68cabb8a9d42a41d7d06897211bb5c0044cc8820932e0c2a81c0b10a00223002581c7c814c4e08631dc60e4e733c2e6031d8430810c31d4ed0424159c618c2abcb838630ea8318e8c91655996fa5c9d75aabb1b47b3c18431d018a500a2c1db828ec0093270820ee8499e4a30c30b1814b23600a1c21bdc70062f8660849d3698810d991ada50bbb12cbc90c3115c42f081834f13669c0d6bb8428dac339c2ccbb2d476c58991231f093ca0369c90fcdf9560c68b7f0e7f992326eb436373833781a065d01fd6b3bc53b47189758aba5473ced97d5b4893b4538d72eafd4d839aa4a94eb5aa512da45165a7cad6e2459f1ea194952906bf1069e37ce16620b1329ddf78873c595dac81d37ddddba799d81d16e725cdedf37e9b30fe1efebaee3fdcdd25cd2bd6ee47a40e93b028923cfb795f7edff79ff779dff7951eedfab7ae9b3807eb075d10c52647a4abf2f344bf3a67842347d6b00635a8210d69080a42031ace7006cd0c3e28e105571803280d42386286dac386585bf046f0c3186a308314f35482192a9c236ef06c1962397fbe877723018b31e68082cce5c99a430e9c704216803044a70464a8c18de41b9e277801a70561bc80094466ba0c4672f9d9e00a5b64799271052d32fdcf0c35cc0832032863799261c6192433cae82165ccd30d388e6b8e73ae721897691cc76d94e3a6379d1c883dc7052eab95db388dabb472185739e7b8e638ca7193cb9e534375cebdfae6eeeed5bd56cfdcabbbbb7b75afeeeeeeeeeeeed5bdbabbbbbbbbbbbbbbbbbb7b75afeeeeeeeeeeeeeeeeeeb5babbbbbbbb7b75afd5a97bfddcbde3e63c8929cfab5ebbbb2bedd97336e664e068dbe65e39318a289afc78e079d8cd72cd9e7f58bd14780228cbbe7e7decb3af3b1c37617f80d3d3aca5f9c45017862c0d86551f95f6108d1b27b3e5c8318eb04abdd188a492549e25147a83389b3c39f970bcbc90906825d893bcc4050a8a3591e4a5b9a4447b1316d294a76bbaa6cb02514cedd2ec61d7b3e79f46b34f49b134b58223cca3d56756c1ec4d48be91b86ed332ac7af638598b6bd05447058dbfddbef0929c88e8a521cc6c9f7ea58f622bcd8e59b06affb18cdac72c1534f5c1aff64b9567c17c304094471098a4cb6c4991b1a7784443ee713cc3054422911930100a858c644014c53268200c43324c0182e018a8b0d6ba36f07d9f186c3ccf0b0307baae0343151cc7a5d1816ddbbee0014dd3bcf0812ccbd0000116820a815a83f803dc45d04e74e7debc8919f363730dcc8064b672f6d2ac253177548c2b49d6ec69d63cebb4182c57addb42317c79e9b830d4362f4012db7f96a6fe67eba69227967bd044365b8e7f344944fce68c6916537e097d30c029039a98ad9235908ccc560886d9fa918119f80540fc1eb454d078cffd0f109736db348ff3ecf5c7798f01f11efb3cf0f3bc07ed0e0f7fa0dd9aec0f9b4eaf20d63477ae4fadc8feb6510d7e8e65dac675d877b6496500030c30c000030c4ac1c07ebcc9524eda5e2b8e971722dae6c851b1cc59fe4d2499692351857403cd6f5031cfdecff0bc0cab73f69cdddd1d7a3ff260c690a88041c464070401c63820081295ef8fc9d90141809a46a202f2505731d90141b8cfbcfb10598ddb1f43e0f86171e0f8311aa5d81f43cce0f881e3c797638fd6a394ef1f626606c70f9b65a3148b8798c1f1c3dd89f76b7222be77cc3f288810028a4f0821a01847940f0a229c10028a8f0821a01851be17114ebc9c10028a0fc34694efbe5e26229c10020a8e2be2b96be298a0ce792f4ca05e3c14ea45243af15e982802f5e231817a119d782e268a7015817af1dc4527debb5c26268a40bd18f1e2e560ba172f35bd4c7f380e43673e9c0fa7738159c2a55b6209975088d4b9c018b1844b07b3844b88d4b5608c6819b1844b67aa39bd2944ea7668b5381823a88b980091041a48a552a91901bc787d28bd2399662239fceba1a9631b584345dd54e34eee9d19c36523e8d69a673bf5c697a318d937eecc18cf234f1e77461e8c3d185ba34f16c09723eb47005f8e65e41e7b461f8c3b354fff74e98cd79a3135dfef9d3163c4eff7b2408730f97eaf880ecdf2d297f28204d03d60cf9543202f049a315ca65b6bd9330cabaa9f397d191e79a019e339040ad198313e7c7fe8053ac40fdf4fd28440938823befc3642f533477c290ac9bd9d1e284ca3513d7c7f083463e8dc7cb83fdc8ebad0efe1d2dc23ee03eee94e2f390b56aeb780650cc7a1df844c00a8ce4e8fcf4e9f314ff4556e6781bad0e7e16ad12a92af036e10b7ae567d8379a29f721b07d4853e1ee2ce5c1cb7552c151d03caa564b83d24d3c75c991ac9f489b84e5c212e14d75fbd7a512fe689fec9a55f5017fa7f9928e2bef8b85a40ae0fcc137dd2050175a1bfc335c15c23ee12d7e57a8beeb4f20c75a1648d8f002e00ee0d563b6bb67bad1896552ccb346ddb386de3b8aef3bcaff3becf5a100c2d1886a2180a89c63a8ede74144322d1388e46242425262624d2c9094a4a4d49f1a629a3afe6927c35b754c9355f627550afc4c4e4abb924ab83e69af7485fcd3da9a9b9e5b681350fc5750adcf752cd4fe0ca78a9e625709f88c0a54f5c0a814b1f70a913b79bb8cdc46d1f2fd5bc036e0379a9e697a8f91fd775bc54f30db835cf805bf30ba8791f35af805bf309a87904d47c8f9ae7716bfe00b7e60d50f305a879256ecd13a0e677d47c1235afa3a6e6696afe889a1f40cdcfd47cae79999a17c0ad79236abe889a27a2e687a8f9989a0f40cde7a879989a47d5bc10b7e671d47c10350f44cd03a0e6dbf2307dcdcd81f859318865edc9fdb567c6b03695c39cbe7fc37118977fd971180ab01c66029c8adbe1589ccb611ef0fd9daadb7198261c86896f077cbfa7729825bedfdb71981fdfaa161b251f4f2ae07ff08185077c7f071d565452504e8e78d24f8719c0cc9790c88c46bc28240ef121683fafc3f1db4f8709e2b59f19f62f57bcdb8d934c9beecc2db7246d5c558e39e79cb3a4a45b52935bd2572eb756354ed9abde699e9e66f54fab6c5750d92f95e3f8ca779c072b3755006e5abc8b30871b79927105501ebf6c9118e659865e499ea5493e59c9bed4e1bf79f21faf9d2efea21b4ef15217b024fb5b94ecffa5647fcfbfbb25ce6e2eafe97efe796af91d76b0b1830e3a94745859215754547e504949f1210505a5079493139613128907928909362929b92524244f321aed301a471d46916845140aa9844431450c439410044f406b49f6fb4c3ecf2bf1ba8ea4e3b811b76d63f6a75a7651f6cef344fb3711cbfde18ca9d9fb41cff3449fdace4edbf2f0dc985a1aecbf1983bdd3d9e09c278a89d4c736ec78e019c0f3be2cceb072b9c0e59e79c5e9aeaa1c917eedf66ef79a7ed5b3e8ee6e91e48d55afd857bbbbfb0b81ab52a1aef27c92bbbb7bbfb340f5ca7989ddb5bf21789b0b4ef0727777afd5dddd3d737777776f81f6c44f14401488a26659966559adb5f6d822ebf1e3c7c78f5ab32c7b0196653d56b5c78f1f1f3f5e35556badaf5796bd5e2f9aaaf5b56daa30b4408d1af0fcbc76aef032c9938c25749177f0842199bbab20bb832183ec3d7cfcf4f011851c6fb294283e6588a588bec8a75164cc98d053112b53511922faa5a82502ca148bae909217bda7e592db05c98b6e163fd3c5080665ee62221fcf6bcdc610a914da4f05e2cd3929a55e7fdddf87d164639aebc7a3f1d048f123566d47acb556add6aad5aabda8718169bce7221b432c350dd474e6a99f66afdb7c74bbd07ebcdbe661149b0e96379966f052d1d5c2e892c5be8f66effbb809dee94d2220adb5dad0b7750e6f17f5492e91f047a1f7b66de3de033f8f7b2ff49ea509bd28eaa0b9da1ed34b9a18a0a591a286af23f465adb556add6aad51a12bf20b1dc7b261f77ab0f1824e2ae97492e91d04be10987b2652fe5d332c99d4d8e3ef84257bbc13c915c22a29ed9428c22ac691a0d0a0c56437458282b1418e4feaa85d1a812063366f6578d470b23b78f8fd7799e177e13eceecca1d5d1656388a528c4229f790ab51f2468aee3f8dd12ebcb789542fb11591a94d53cf5731765a7517c70517858a29f469528221fd1182256198d5acd98a971a1ede47e6f056f2bdcd774aa80da835f4601c1103529642a68d69931dab7df8add096229f211f94c141fbbb12481fe203e098e2f3729c587a3491aaa3429800088ddaa87b0e4ce478f0224714493d4626babc5ad33446609e2f7d22429e6275aa7513f67f8bdbaad1386df43c2db3ad706cb6118625293e24f54d7755da7f2294fff88240ad0c3874ac3d09697e88884a3513c3c65c93447a6e33886dfab460db1427331b64f9791698791e98f21123a3cd9a81d5aec9832a5b3ad6d8bc4fdf0659c069d6c8ba52eeaeaba5e9d5a6c388ed4458db47cdfb794e10fdf780cc3ff79412f00a24b79e35f9ebeb46efccb97b475e381bc3ccacb34056ad4cbd3a7451a85f2f469eb433b5eb7e3489b52074bdfd676e338765d17d2d22d6f7209fcb04b191f479e69e417ea1286e3db1bfeb43c80a02ee1831ec0d16408fe0d8e26435bdee41eefcc3f2dcd4753da74ccb0457f2b975c59f99395ef61e559fc5b9975fe5c79f096e01b374e7a60b9f12eefb9dcb8419e90df03f92cfd91d7f425776545878d37992ef9e02d71015d4617ebe2f2d4d2b8984c0f9a7e34bd9dd9657af3fb5aae57bf92695b4c97ec3a9ca204f8ddeb00ff26dbee346ff2b5e97cc2405097ef65bce5f67f37345dd297842fd3e42d3f9b9e5a246cbce94d97f460497a0fb49f0282e3480dd4cc9e4a198e644a5f705690f118e1a1943e38da1d30123a782f77668c72516e0f01dffe67efb74ea35ede5a6b5f1ebf876faf8a88bdb2fff242adb516bc23ee82a05c9a5fecaa51f8e9f790396737270cfeb63458a473c4a4ff7049cadd8f17c465b5d779b82928bfc3a37ce8a6a0fc9c09fd0f37e5e4e4c59b72f27346345e8bb1ea189e47dc44d03ce271c4389ab42d36befbb1e5475ce200cbf9a63f91773639e2b2e692fcf14db7b4d1e900f27dcd1303992ba62f5b70a482a8f46bd92a7bd621a2110000000400d315000028140c88444291509265a2a6da0314800e87a04e72549d86619cc31032c8204200200040404004604666a40adaf5f96a76aa10ac6f9b558d290d6f65a8a94e3aae517745afc73fde87f5ac0941b814448bf247977d76463400f9691c28e4e727fea31d6da5007b2752c438678682cfb60d1fbfc5a5d1f7494289b71d3c2355c58123e768cdde99e82f43b8eb12ef03d44a2693eaa8c857f0dc32c987f92c492936ad8edd026677d24a937c7a2e64c051b631f2da1ae7ec7d8c110c1edabe3efc169206ef2300a7cf36af42ac80011c951cbe8a309779803f481ff6372554011ad0efb3cdd344a990a399ddc78e7ec84585a98a2a552e12ff16a9f8850788cbb8dfc7570269f53d6478fe37e2ad46083062f1d2d0b6583338cfbc83eec3a514e250c0741c4c758f87101bb6044c0c3946ac8e8a80a9a3d31660cdd24481a5a94b8ce8e6f10ac15cc6c4ebb307416939bc3270fa33f0b22288989151b910cb9819d867ce832c1f91c6b204e41c70c40279477b23ec7542e74ca43a8a8280775c90d857a8737c2e07ce3315e6322b9fbf995f4d20c4c7316f6017e9e38846385150ee611e23cf2b23c0823e1d9165ecec5caa4eee6a02d0ee599e8fd09326d69b0f5aaaec13c9890b6484afe2b492cceecec8423e5308946d7852c00af2cc8b0b0615ca761cacb105bc513c6edaf55dc043b6b9fa4f20d4c979d0289c35313767d55f06827c9f1be05208dde32a305d3bb783a3d97aa7e1092c2e7ab3711d6baf7cdce1a229db70dfe6461926696caee461fb5045921766d49ade2202c67ea6cecead8932d3cd0448604d0256fd678a37f5fed84f15550bca86d8a0351ea2ed241c2779eeba0d20e259ede1bf96962a6b7c8e80e9ca82859326d9382a44fd827a6a3ac4fd9ad808d84ba9c5b1b3df0df1504cb680c90050b5c24ae072d01ca53570b952744f24844260b9a9dcfcb3e938bde020663e6ce3b080b8db8ce9c6a2f268f444cf088d11fdaa4e01ac8254981a62e646231eb9f32010ea07dfd382af821c960e4bfe90982f89c46c03232cc5c7ee25e3be69f5760d5384ad02d9b6f587117f76292756c410aa5640a860d0d96f3b2c1e9d1ca10d5039a1bf7face80bd8b358c4a2afe7652056ebb96231c2d2921198222a82835811400e8cc035371fd71713c268e0481042b3fbb0af9056540abd8ab978d14ed117869c7a8c20ee14619345d0ed822be147085efc23e7d8fe184bde3f88111aa1f173525c18415f2c1b447229c21aa5222cec4580e41b0417c051755086898caec18864de79dd799a871fdab356fd2ec217922c2dd944a0f8d7894804070b11532baac8e8e3121f85915a6c32017a6681111859f9e0544711e0b8ee0145c707bf3014a8df1401ba55bb52189b1649836d412fef9bf7919d071304512f64c008263c16e1ad2088d863c919f7a1201620562bf3a1e9c970b01290acfcc70d0ecb3703c5f674eb382ac5f34498ef0b41cb9f1a77654cb1ae26268c4deaec57c56b316418bef924595276bebfc33730f3ccdf3ca4f62aab731f15cfcec8b37fe615197c0adc9339c9f44c4da2ad323bf35171af8c24c66b82713265115e604c721244fcc82126e6d0910642005ac8aa8a30b1e84cbe2a2bab0e58859cbcb84d628dc516b92e827eff8198167ac1beaffde3c6228e5f5ac8db598764492e065d87b5ffd31ffcef6922ebc25b1275e6da0fb0f3af33debe6965d69eaf4e1629642e5c140b3eb43286501d3187740c7382a05ab05402f3481d741e3cfc9c6fcfcbdf2377195eb639770a9a73f1fe96a74497f398af968d2d6819a7f9114842c672d603cb9b028fd3ffb795cf5cac8c04ae3865d4a99cd443e5bdc186d36dac2d47028453fd55700ab94439041e9457ae9beb48946f15f666746eada5b918bd3fd1b0645bbcbce74ff59e0cedefd3b1b9562d9050e310df4e4a3d388effde78d5b9718dfadad8a2df1aa3ec97dff4c06de5bc0cf1d862f7e3e6905dbb90df8f9061e5284c445fe200793cfed8924cf8f9c1d5f90993c79bbee33aa4ace6c34ae3c7ff389e62f95238153e98799f346b9ca9f6684c23d0d866519531992363878cf15787313804e370be7893a81f56fd42b09cc5bf29408612b84870f7211844e642308d00db5c183728ff7c1594e98481f2840a28d76701e5ebf34fa6f3fac9ab183f7f3d3908d8e9e847a042603f10cd335a6a2539a71e651202394b00a1a1381900143cdc330e71f2c43de2647f3de064561dc0c93264ceb0ec2b110f8ed7ffe9df4ec4936913ad573ee0137d1a8a6fd7e6a27947ed61d3ceb2d78d3b6336f728c27e6d148fd151f93a8bf086ea07ea4abf543df94668fd5634b46f80bac885e7def7efd3e470b9bb151985381cdc024cd889fafb18791320cbe84b2afa8d39d916f85466ae7d2b77898ac714f4803cf36e0017f5ea7b8cf9a3bb9ea6c0a351d38a94ede463d97e05e1cd448e81d543cb774db9cd44d24edb4e92fca14b1be52421f9643cdbc7da5eb7b3d38e01edd34f9081a9bf018ca8902a7a250e633eae3474a959562c13aae4b224542914cb5522b131a8d6ce89d6115d7a16154994aab92e19551ac57a95402d0c8bb543a21540979a45c502a14bac4b4285626c1d086d1592e7ed1f00af0ad02cbfeaef7948dc944d81ae0294e12f41ecfe031496dd9e3b768f0362ca655ef5fd5d549e8c2ffefd69ae1364d47cfa1d6b27be1eee7884f1b874e126e85432436181f4e8a7a91947e43081a1e8ab7ecce2740246344e2ea77f77232ac2ddb0f804646c81a20ae6212b6e1ff258adbb55a87de8593b6bd0468ca3a75a50a8989d074e4a57cd742a03840d7ea446ae7081a6b2d4e93c500e4e77452db15904c8cef5519d40844cdc22952f9b0929c58331402bb6e3a7123a60854079cbba520d70afca51e8a2b4c65c9930073a7ae8807ea58fed5f9d9b293d10d9ec17214cf2f032cf41494a70e72ca381977bb1c905f8b87e4e77d10bbd12afc77ebf0202245d9db008f08aff0d2599a427d1125047262292ef55202f875f62ba024153b9b12e6e16157640355495a0e451705a43f0dcf01bba93503504db873b9a95619fbd979f60bc7bf99e84a90c4a89fed1ef4326700e58f7e4d95bcc171aa3bce43aadeb0cb88bdf7340e1d86f68ad40222f8c9bee2b764374ec2ba68bb5cb21daf9f511a2bf606d2d1f7b230e09a957bb28feb1238038a457bd4fe0563d600e4e3455b0f6808eca2cc396a603a6da3cf63de29714d3222cb67c7bcd029b6a8ed81796c0ecf4c0bae7b37ea914916e7a0ce9f5f70bdeaa1755c9d57889c3bf4a62149bf8d98a7ba08c408e562fe23a4f9198e2f4ea5c1271a9ef79e8ff4f372128f58612f6a715138257cac55867fbdf6b0f50b8d127c8af070b95ce039e67b2128268f90a266915f079ea2403328ce10fb305062647c44e43fdff2c1282aa0ed177ab79eed339087185471566f01182c94dd571579760b277057114b2246cc4028f108cdb1c0a9391c85c0bb8bda2841a5348f0e93a8e31a63146b439ae955b298217b0d8527f3bc62b5461980400ae77108a0176c7340842d3f1809c81c58594ef6b71bac58c3bac047f5dc274514d7e50349045c837cfec8e6eb083b001aed2f8cf0c36550119ef38fce1571df510364b94f90e08e498d3c92c53228223acc0968d0fd78d00e2b660f634a52cdae3cea83b7e07de251f3e028e80773b4976b87c0500d76aca6a2d4c6e406e2a4e909fdde9e28e0106b8ced911d753db09539642512f4ec6245eb27450608814a14357d0ec540a9ce3da53b8eb1a4868578c19d32243594492f862511300e6d6d8694e11c69d87c9f92a54b5aad813a05f4158b147c89e64c1a1233399a95da959c8c0a1f677ed49a00187bccee5118747fd1dfb354a51069530d0928a9e2a57042e2cac4b3c5c079e2b40fb625cdddb3d6ddccb5051c9ba83a4358b420a6702949117eb563b7986ab31a32781bbfa1881b026b39136e95532c47e97a41df8e45221dcc5247a719b7b983401c2f3258196212046816ad02d8beec273d0da4343f28f74bdd3f56cd83460b1fdf7accea930b270fa5947e702edb682695649e24aef4ed4318563a14660be9147dfd11c0516a38be384f5992ae295587ea56257f8a937b3e039265b574d6f03f9e210b39f175baeef74c25a62217b4b4241d3aca661e307976b17fa72a6c51a95ae2d92c3eacb541bd1a5394f19da4aae52414ef41dbfcfda71d105bd2c371261aa11fbffae550096e78f83696fe11df38b8da08444b536e0cbc45f481024201c1a1fc5404882d87d12f92d477cbeee73c172a71de5b637aae18c83884d06dc6de4387b0f95fc3d79630f9866ed5b4a25b8d5054669166acdcc2f0a0d6494d55e92f5441340f05e2286ac8c434f9c3a25e9f7d1131adbd2cc4e41d3c1b0370cb22b1fc424e49ea0c025e4bf23cd4e6b39b9b494e57b778fd2cdd922f1a586cb042b689ee9971fd3db27f74af9cbae3987a969d1686ae25358e400caac510d2e4787597cc1e7b0bca07d287dfe7928e4e4c8a00223aaf90a7df7d2bd30c56416fa8a6aef8ea314f2b73ac4944b877625937e8c158368dd9856247590a4abe3af56cb05fbb8069b790cb945b79102c3b77af0620ab7e918036816fbec1d1822b2af263ca4029ed1243b34833ce673ae98a9e2754659e42d631e1a5c4c14953025ed9726b35ef52ab54b03a8f09940849220a3006e12fddf24823d08cd8eaea97874de84c697636ef11a855d864acd524369734a4361bf811e610ea93c523a66a4f5dfe0086ff7e724aa61128dd870d0232170a59dc717f17d6a6c9934e3fe8db2902ce2adeed1b809459cdb110f9810baf678f8f647ce01f528215db5baa8741f3dd188c8aac6e4d17a505cddf6df3c3312724f64b2a622092361576a8415faed860139981048621605817b498e8e73fce08b8bbdeed5b4a9d41769772cbcd949b4e37a82b716be147d172f7cd1ea2ee84452a3a7a5f8424118f430f1a397af23ab23d3c9daf3428ff231f25218fb33b7a834f430e81eb9037d3742a0742e2d1aca524569e4eb09c2a22e49aba91e7bee68de0264e643ee93b468ea229ab2b79848bc505432f15c7f42dbac2268c4c6dbb7480eb45183fecf14c63364cc5436a2af14b45155a14dfb200a62f72de647602e138b8951f82d6d9d02c79253edaf810f3e4324db0df58e1a6a611a57b06f83c4d25da19d7881de6a04e5ff5843d2846649f2fb0849cb40074fbed1305df45c933067968aa4ec002789d46317c7a989cb53ad657e81c8e9d38075fba30b90e1c4bc97ca32b5bcd088e33fcea3176c0f8f3263e4d935067b77fe1d821d8ca96c294dce81b47f801f278c0c986f19b848dd9e67dce0989540ff164590e79248fac30b27ed2f070ab15ba2fc761ed474c1781d506ee51693b91a0312f0f266cc52ed6d5f9307d41c4746011b22a004a348b597675894792908ed09a48e8ebad4139e8625d8206b93ae7bfbd0a39ccd07a558de34eed5eeedc860e63d5aea821a0c5b54006859456e027ebe55a7f2edbf05ff27f335f05397cf74e19c1de4b10c5d2d9feed9c9d937c898bb31ec3742291157aacafbf795c94aa27f37d9028c061518a2b5617dadc46ab0b80ffe59c92610c2fc40fd1d3749eddf470d88fa87680bf0f8f57ae4a523bd787866948c3de12d95a5d3a2a23ead2e01225c3bb4c220694153aedc3f6149771286f874029d8559c8f55c86cc4759cd0e4cf6c494b58a505c38c9bda3f6d01793152c12cce7aa5f953e5694bf647643bec25adc91416ecb6cc470332f3744a7852ee350abfc745a6b7a3bb6abf5b37883c8601727d44022f3f0996007d953c40df497c2027526f7ee13284effe55a192466b7ce04f89de28764293d59729dd7acfb00989e6ba66166841e8f4101ece94c5ed21a5bdd531e1c1dcd4ed8c0cf5ff7cc0e48416f4d3254cce0a11d0d6ae2ebee8e6c2fde40e4f67408a4e0cb2512a7af5adb7d2d03f04faed9bdcd902c27336826a258645901d8e5db2c6ffe994af4a5f2308bf75eb9f199c2e212732d484573a6d97186aa59d080fda1d9238b93d564bc00707e2a589e3b4b80578120c72bd87ce3ad62de932597b5264b7e1f49cb8d9daf032d98706a5943b45d1089707d7fbeea0687e4ee6261bc680df5077bcf1180a28b1b0058b98fcf671fd01897830e35b2a2a60d64f9dee037b1edcf4a91088de7d1769861b06c6d47986359b47366acdc73e6c6cfb8dd563646a17123008998f3260282c3dc0ba73d167c4d2056214c5737655398bbd30063fb9a90842fb86bdab1c98b902ca43bef9b2e67fb7ddaead1202bcdbb6088784b9f7cd5925e0a4ecd4ae1550cf77c8232ba0185edc8cadcd3ca75dc60ae74ac6a069f73e46a71d69f7fa63e5f04ae9b494a0c6f94a188b9890d6ea6c0a1ddb44c99ef6a2251508faad8e9ab0219ac01f05a6f31c759daf316fec2ddd81daa038d99b40e16d38b80c5cbcb2656d40992506350d46dc195f8b0f24db38dbf665a7c04d44e79215375becaecce0c38c9caec665b184041d080d21062fbbccb4c19c3995950fc9f14677e9189e5a9cbd6be4170603d0c5e9c444bd20981e6e251d48df5e60e89ea2e86e405618630723c5c621a63ed04f1e2985cdb1527f94ccdd850189d7099fea852002a1fa5dc37740d6bea8eb71e3e63fd7d9f39f522cda50a29921f224fe4eee54401ce483328f3df21a1bb43f0376128f1d036b4002345bc93f3e847671168145ec3d24f32b964403d4f510b6eaf68d332d19eeacb83603627a861c47f8b87f1136254cb621499f9feb8719d662ded0cc0728628b5ae4bfd669b1c2724a1f6f397c82789ca9f3f40586c7285ba757c1705cb1dce90c7b9a0681ba278a03187b1187c208a681c60d7449d15b748a6a1bb0246c9d5ac4b483aa7310860f38341df6e2611632dfe0b7b4e57d8087a0e2de0ff0e35a318f8dd9c858e6c648fc26483f716398f43d853fac3e8f935f7fae9dfb61abc80032724f5b44fee36a5f02abd7a96505bfd38d98bb32509f2f43f1c1499ee404d49f93d6d0527f65fdc5542ca5ffbc49effd49efe9b47c5b55fefab3a6db70313815ab1baa72bcc092586d75725cf3ce1f85f222b78736b4f0b1bba1134607cf17ef137febb7a2c851f6ca37ff0d5b061e465e24a505be8687aa49ca3a1719c9627bea06ae1dadae46d09ea288fb441617eab4e0d9e9d39d357518311bd7ebf81bb01235eff463b5ccc990a5f2dc66fa9b6f5f73b466bbe61fbe3c39880b29f5704d37da8e36b16b357c628d63a3a35200d85579621f57c8e0d0c4f5921df94ffc8f09192499b1123fd12e5da6f1900cd810c41c50234a2ef8c2d1a07762ceaee0fa8d5de326b883e4aef2f27c754470c467a7f1336d65cfb9bfdaf09ce7ac8e8605850d930735b4ddaa06a2361ad8006b80f8381bde6f4c8ac05c8abbda426135c1a5eed9b6ce363f453a1a3c3b3adcc1b08522b551c92ed7fddb96af0052e4548c1e83103704a8194f1611252095e8607b102271990a4c5183254b5cb240e21da70324255be24a66090f683023aabfe3e0018da97e2b6b5dbd707294d6cd392ffefd5dcf9eed6dbb27ff8fd0e942ecee78bc17067d612962eba5e7f29d7d14ab1963967b6fe8f652f507f005d6a04110a734589a2e514d9aca558dad4515efe3cb08f510ffbd19f00e06c5b6bf0e528fe971e234ca90fd8005283a5d2bd9ad4463811fcb36d0f51a1e4ac42f52c75da7e7f3b141c9bfb812b213acaed14479dd05398e69b6289b7d17d98917c6680d7f841a8d5681020d34b413938ab42bcf390359b06b10a090d3b0d5e5d6d27bb59a36c6a5d9c11fcef56db62b6c858b1fea79d6bd88a8d4c82dd438d9ec0982d1b5bd6f846515689a3184dfd448065caed77519ba0cad2079f4c7d8ceab888a2bc0bcadf2dda9c993aa892504b48583f971ad91fd92a14572f884c9ab48a02fe81bcb71016d5ead1ef15259e45397fd1419021919e82756c206effadbbd35e3c900c6ab09478d0b7375890e067460d5059f838b46dfb6991ac8383a239d924cb19d4dadb5e81afc50490b5d29244a91ec270ef214c9afc032921ed3b22c51d714ad9f910563dadc747b2a9a8fdddd5cfa81e330a6d82c286f6b9a74629962fd58557433a126c28cdd02e588f18637474e8c2a9d59388c5bc504109f3908d3f2600e173c3f9d8e95dd6eac95edb8d009223aa2fb102227a9812549a4f2b89204ea9f5f7441a468610417662ef844604968dff244a722917de669d9ae1820dbe229846a1ee7155b37b430a654fa23b77255c05ddc1811f8a4162d31d312f49e5ff280b13d4400ac2b0e2a2826f4d3c2772048f725a940bcdd1fbecb4f53f973202f8a75eb4768aaa5e8d0b74e5e0cbc8a119ea904a728b436f7b771e54075a4d9c9d2669b9ce69db2f3b630f5d9d4a0adf06ae13988af370518139796b7198f98021371cc582eb869512e1c97c44b05640b1acf55529b3acd83d6862d06fd5f7577b25a6de0550815ae05202b77f0b5a6cccd49abe910b7882142ba4e16d558c0fb5808e95be75fc27c803881aef4b31a6533f36340bad737098ab0a348557111e6d947a598f507978c2ebf83a25375062c324d9f0d59341333d8e9a730f10456153dd18bf7bd8bafaae043a02c120398e437587bcdfbca6197ba0c16e79fd7fe690fc33bb4fc76f3e42bb5bc5210b02d5b99e3fd96777b108fb7757e2039c1ff26907692a59fa7493301071923fdb683146369a156f9e5b7b1fe3082531af8f32e873812e3f31c294fd6f410709e075eeb6b7ed35492eea9f72e9dafad0e4dc777eb22c07960658fa103a323ab1752c6be91132a825d6c584496e2d8cdb0ee6070650f5f956b97886f61fe16fa198054e378981a393b490cc27782ab15ecd40ae9a2508a67093c9d943b0ed2d588aa2b30377e34b8cd277462d2c90f54d0c45c1b04ae9d47b5f88d015c5cdc8bc43e86246db46c54f959660fe3464885d442f03dbc24b49ed9dc11de0668f7296691b247380c2cede99c70144f6ec6d991d3ce4e66fc667da086e8ef76eac1193fa3d32255bdf58a02e7eee03dce9396777c58a10af6b6f7f7634a3c399a062f2869c9ab2a1f69ce3df407c2ab7f702909175fd8c545ecf8b7a82efe4d74af7f2ea1124f025186be39d1dbaf0c8187a8cf763e386b660b6c7a1e791cb6fa662de90aeeb073a7cfbec3da707b8a62d0bbe0155f393d6b0a336cb4f4788f8fa68fe0268bf44d3e17655a8dc5ddd38023a9b7ca96f0916d021b72c59519ce093645c7e8fd6114b35930500012c67cfe6396c417c141ed67149877bf8445703ecee2724484059d6dd0a8dfb1bcdddde30c712a421ccf4cf8dba98f9f1431298e5772ef3a5e581d757c299244edb1632e530df68a515e2520e5f3111ab5f6ad2232bdb6d6601bd77941ea1ac704455d5ee435e8ba829b9f1c361c25bf7d5023e70eef79634f3512390182145149a1a49df28597a747f34b6ad7800de0bf8d26140fc50f9012738593a6dbb3351ed9b8f154ae716b804aefb3aacd29f700e5c0eaba795b6ca3f2315b9f6e92df81b6c5699776c7446241de80a19135476b5bbb700add24945a082698424f43e47d922d4fa64d4210ae217a1b4422cc1266bfb4bffa4f93dc199e18915a684ab89df926722053eb3d944a680f420e1a09572f9bc60959d403934e371bd25edcc80244eeba44c8562a9ab1bf42ae38b179aa39ddf45b1ae4dd5be982e5e6411722300c73696bfb7513b91300d0e6d89aeb403daac14ea679431993968862645fb8492d1693e22e2df2b32bdb191ed5f9d005aa2459c65c11e39d1a7e0c6c8183dd17fd2828375450992d94ab04f8e69a28dc044c340b7662b521028775f20f37e16a3373739723a765536c789e46e4639b24c854c63fa229b41efe196ee84556ea5a4c0a694b10947498de7464d24fff128f01e6de52e1f723eb82abe0f9d3f22dbdc0c2c0a43ee7f550fdd2b8789fd57afbd8f2053b6df6bbc4b29490a8960ad55fb3da16b9306a86244aa484beaf0f63eda364949c6f21724032b9fd2a8e7c7964568102892cf21c98c7d70a3c13c7e1d0beff54884f2ef26e3584144a4299476ac4f341ac62f794c7798946732fae533f494b8f1e973571feb2e888b1ec63f550fe209136227279968f648d4733ceb6548b3004b7c803e916f37f5e0256414b78733013339c779b2a6e64e403a2cb12667f0196ca3b15669ab7579bda7d2915e0db535a8e4187ee1c489abcd63274de98b3e85d537c666f5b48f06a1b51c295a4d18345563e215f1753a9782413a42d0f44835b250265b137f7bf2237161b4ba2497d6baf30c36ab48c8e65b62f8ffed27ee90af28092fe0c281081f782eb19b8d634086c53addf098d87e6550e89c698dfca9c2cba8f89373b311698233244a34f19ca5b50c76cffa136c78e443a3573e2a810deb5b2601364cde317b613644ecef9b93179b96e9a8c5b481c397aaefee2639e4ee76f819a90763717dd97d6fb98a2dd8a9f875d1f843f89d2abd3496a75d6157f5da49f014e4b23824465a918e87fab35cd356de08df58938a7a640b77c2cfb1822de6d01ca74c89dacd197ff59826c4f57001a01b4b0520226104a28a0cb9231cdcf136db660b32ab725d2ce638874cde9e45d6c359090ab00864fd05744ca4eb18b8502985f7e72f8a49c65c3b81e3d64b64a77fd0c99e41ee6570250235ed0cf9977a1417dfc443134def190a240d146f8cfebdc1007fa831829016536f0f954943cddcb6d4c2cedf431a94f15867bb71278347855afbb54925c9e46f2bc617e825b23f3789c1ca871b16e99d93f40873d514d0524de62892401a012994bf663e0bcfc08865d61c2182081602472644702f2282241fc073810dc1588c291a4e5746d7899993dbf88697482671899ea86212a2c55e8821f7eb9a386944faa8c29f45236c012d51a26c5af585d68bcec5178f9b4391ec3e7f926b3d03feb24575ea12002cf342d70dfe018e9abc2a3f61ee2bf8e6cb09b2cceed3dfdeafbfec66c41451fdbefafb7efbfffdf55f6e66ff49a55a96c018000389dcc860448ae0b623f1fa05f0f7340c432a97a880f78727e6c9782971d84b6f3a81131e8482f159136e0160136177755f3b4a9fe582e96f12dd346595a762fc22f29b563b1e5ef208669d2771646da3d3a8201fcedb230ad09b74e992c19e851c0e9bda61b48d5445d62cf32645fa357eca80f8ef19deedcdd216214f2e80e82af9d3d0788b18567ac2b127b5ccaf5c337c5b22cf0f5a4996be3744bacb5cdf02bcb00b4952f9e5df5b70374524e6aff0665b20c95dfc01390a157824b52d40c44dea8f4d5bb00e07f400b7a24a0f23ba55170c9bb2a276fe5ae37f503c9d6280206acb063ef3fc2c33fa070606317e1b74d6fb6b2f2df522bbace474506844a0052e55e6ac4357de6953347ae5a23008f8a30b7b64940ad21913cf73fac15f13df941a21f756f11bf821b7ba4869aa443fc7e813c9eab2500c02dbafcd932b11253642e43839d581ec0f853c33ea29799d6edc597071a875b30ab5b85491fcb1bf0e0594368517c7c20ec904e6a67da36ae8c665f6bdbad011c1c743a122daaf16969ffc108c3f092d487d11c5532b015572f0514d0d7b94100cd413427814bd0063470f7c7123a76b8e93390cd6520726e57ad1113b71b8e344de0522b2c2275e265b0507c98d764342a2944bad47bf61f08a4ab225296b986c065187452f6990a660b9e63f82fb28f96a072d9318ec7f60755f192148a8b0d1470c5b2e59bdeeaefb3f0ed0bab8d207695d95a5b72928643465e9b36a893a147609821083c2f50ce9baff4f3944900dff0584b0a19610ff025392857e3044047d10aed759d64f8a6cf9ac36551ce0187e4683e61fd86ce0648d19005a10b752c5df26f30e07b26090b36906168689ddaaf79564288115235f99cef95a21293291e61f8221d38b1b90fb69736076725bdca525604bd915240083c0a045e5c0ac619c0c221decddca782e7c4d787fbc55287410f99b136d8d5b1cad50cf991be1914e414ba64b5f7da47369f7ec0b7888e3dbfefbafc0be6d8f0d43cd03977155ea8d60cf2eb5fe27a41db2296db4dd1444d5da910fc088c3ecbf68ed0fc1a57af881376acb9e64fd498186564b3e5050de96fd2e4d4acfc074654b247027e7a7904ba498ae2a2f7dae184a0345e61a4be4744ca823f2cf752fe67437d68eaf17da2afcd8f5ca7567516ff973a430f6d0343104605a38682e3b92208f7b4147986b596ea1865ea4b76b9b45a2470cdfed079c47cef2efd070322f71813ab77bce2133372d99de64456e4f0407eefb0783606c48ae43365251c7187bae635b3ee018ddc3f189bcc7d0e012e95a54a45cae50a8d212422b200ab257113bfa83fa5a22ae462297013f0fa8e8707a04c5131f63d6d94d7dd2f0017690489db60c9c28c4dce701a78c5314864082694af3f4d906fba210f2bf3c21bd7f703165da8e307e9d0c4c0e3fda14f0cae4707b23e7264eb9e28c28e9a94f0edf5edc0c9c265038f08545fe878f99896c828c92f83a93c2cf0d62f391e5127eb97ab8c7d866f4809a305f453488a77f17e3aba1aa28f8c3f0f9c4b00204f0755c2b15be41e07c32db2002f432a895c57f28383b186c9030be1aaa8a823f0c9f4f0c2b40005fc775910b4c3b9bfe51ce2f38de4df704ffb55723771380b3763699b26fcec881925afacf96480192769e8edf486314ff427e7b1d4bab725064ebd302b47d59f2ff53441816c48a0369508286e1cc32ad8782bb9c7d54710e1e373092745768851a270c50f0d724ee8339118a5cf53bcdf92f059091aa6e860adc23238082833533f72971a5ea13313d66cd18c7de3b3b03d5600ea8ed7f4384fbd7996e7ee356d4d3325703bc248f523042113a6be9af4da0164b63ba2f231dc5d1577020957fd20933921e22fdd4a0892940b7519f3a465d1d4d5d9d60ee2eb5046d7485d7eab422449f0b0e5b55e61c8d2980f41ac31263fe434e5aa6f70cf071fdf5621f063293d3654e6018bf0010b641527174f148db05441058aaa015f6830ee309342d8e1102129d75a86cdaccac3f2c5ea4e9ddf7570fec88b62f002d82dfd5b8fb2e40a080bda002483e15a95c0dc262c9285398c86f84f7460e7e44be8ac88021b64d201269349c4c9f478820f349c90b7b8f2a62cec48f81142e910b75ea22a2d6a6985bb630f532c5618abf94650220672d1f3771a9d26f6f3cdc0423315fc7d016422374e6e5f591f9ff62065ce77381c5d9204be98d9401cb946f5df1b2327597c4270e0412b0404b2fac84cea91e8a04ee660b6c2e2ed8be0a947efb2847d15e9b99130553b7fe423fb652fb4b29ec3b1fb82fdf485eb41af36aad04a76d117ab319a9ff0c0299b79fe7ed930f8ef8da4deb1fb2d0e3f37be46c61d1d8bb738fe7d70376c91817d2508a3286bd4b810aa1670ee3ccf6a895f4e63bc141bb0ba2bf3ed3521e7f780efd67d99c3ff771d9b96906522006c86c0ec68f3e902334e4fdeebe31bf1cdb07ab1f4a5171e6c531edf157c355c0246530dcd92b2ab5e5fe458ac3f3f1f442a83f080c8b32609bcaf2089936f8a1a68149f53d7b1b65844e8e4c3e4317b02daa0d1aea048daa32904ff6241bd8323ffe512d45417d9319043ef2511098db1f874b4e8d2cb29e02dafe0c64bcc1048bb74b4f6445e3dfc4fee594927bbcc89d9005f7efb841487e6be8d4a70fbec405a6ffaee8e9c37e3b214f836be84b3afe0548d5b044310986e6cabf5e5133180eb4b407a631be42f1a0a233e744c668fc27799fa8ce1dd2aa624096f3b24a3ac190a55f9c56cb3e94e90e4949f5f67046412d5a512db1f581d5af2d7404788595e25306d45c06285a6b823c7ffba8e9f3ddde7f21275b899c3ee885358845209ce970ffe4435ccec4e093eb167fd6ec2de749bdd88e871fae8475a35a037fe1991235bcb19774d9e56f5da87fa6430002d458c370c9398bf9d55cae85d5a90987b21d592fc18194a4d19ab190e2857a65de34ccfc47f972db1f56302369900d8e04bdfaf467316447205677aa76db7c5b0c39291a0820319a632517109c12f08887fe0043e0323601acbb609591b7400916d267e1d6c89d63e690b7cc94676f997b60270484b321d4cbb509d33df14a4a9fe358a11b007cf311978000f0bd74bafb82171d870e43c7a0e7e871743c3a8e5e35da3d163de6e80dd10d63de601683d22afa00dc7d96e89372af22aaad18780e3425217b52f0c5ee1c36493793f13061fdbe674ec27b5f960b794f3aeef18366a47ff4c3a6402ca3f579e661c51b7d5ef3143d945f76b9dbd0a1d20f067e192dbe6ba524370b66df75368e4a54a1c1aa0c061cdd8d6ef96a6ab615b814284d5cf8c6711aa8631d2d0541cde5714d01cc4b475d669d7d162c24fadb8f36193b28f21219fa2e809d40fc9efc7214d30177d8f6dc72413281658c094431b98cb0e4efc0f290e469de2b99ac89ebb05f1a5ad148dcad04a7a4ebf91f44b8434dba8af1d1c198f6046be13192fa8dfd8ee385cf1dc6aee9c2648219c157010a2d87eb0cfe6ca62e3295c9be73d2ceea80a310c74246309fbb83a03ba8e3cd1a248dec34554710305d71e6cbe6b751b638a6f47ffe3153c50190b07667b020433a5c267b502687804c9e957add3a816cf64e187b337a8fcc35966b1ad44f18586ed651a6a6e599a55c54d1e315bc5b8cd4cf4b9356d40b80cc71ceecf71c485a4c638ea8a5a0cd0a793b986d2c125dc919b01a9e14b2bbc8fbefc42d03aa55352afa79e4f3b7f5cfa9f1101f170132cd124e8d489ae3d1cb3515bab8890cec8f43d8f0d38ce6932abeb9e58c6f5cba3807b805f8cf126f8d16349b5fae043ec3d8c5df484bde36fc9d467a17fbe4ed19cc138f601319c9362aaeddf13d8c341f586daf1874cfd4a539444ddb58670a4a7733887892c154253f7bcdcae4f9f713df7219574496bd9ae97670aaad385102f5919c12c5a68f934093c73f37c3db1468c71b7990ba8ac6200768b501e78effe453bb11405dce2f7ee913631f10a554209a910a287d6ebf81540d7852fa538a12c2247779cb50fac12b1d26fcb4e4c442c5dc7c5c86992038ebc6dd1bcb70533a815125849267ed89b98a014ce4cb0e105c5706566e290c3544d51df28bc443625fd4d5282a546f8200cf92d83bf742b93ef1de69e901e5447c1f8e8f7b6f65dbf72db30d7e499a57057132d67b434c2fe7485cc814f46dab1bd9a62ec652f9e8731fd2f18427908d308ead6adb4b3a672909faa8b2fc3bb1043c1e003d38ac36473f56c6013ef7b4c27467a932dc5f360d62a53dc1aa66119bb8df573a85546507360d0d700c67bb54df912c867f5b990c54b1b200016f6d35b386a570547e3417c13aa208461b5a1a4ddacf2d4a41ff80fbf44568e9835d9e5bf277f2ff602adadedb6c72b4a024e170fcf79ac2e54923029da26920050e4c6a315ca4d86786e23f121f674717e0057321f601a8c7f5b19aafc40ac5b411eaa72464415d92d7c0e233a27ed21e36b4cfcdd3160e2ab86b4b64824349eac25bbfc26e73431d8e209ffee416bbc59899f8c48d94dfb6500b13ff7a3681edf629edaee5c7ec30389f67698d953faf6dafc7b7b4a7f914e9fd2e3853acee73892f5deec35e89ca682e4c9453cfcac66fce82074817d71a9fbc3efa3f60dc8735a2b7f9b3a9c5bce327301eaaab3fb56aa2323f569d6c5efb244029fb07230961bd282c905ee9dc421724e56754922d416b02693b4cc478067af08b6030f32a967191c1a96dc0da72fe69184c3b37ff9793bb888c04e4095b22738a8b612f171b22101968fc3d10debb604a47c91942cfcce970cb5d6a86dd8c56af82ae6e4bb7773ed768c92767a6aa0cd080d82a40255e410c403e23eb406f07d3810e04febfd7e3da42935fd65c82bfd77455e5f898f7e216cc42b67b77c55808cebdbed62484e15e5ca026046b7b3707adac23b87a47ed35e1c7492eda84824c0797532da698a1533fc67c604c4cd3090aac30137b4d73bb3a117986255a3d5897f8afb013a90eaed2d3f5bd029cc779ac9de4fc8fd5fdcea71bc439fe9ef7a6ee5448322161bd32a843c67a23e5ef04c239c1a6ad0790446f670636646018aff9647940e494943a1d0b8d0439fd73f23d56b2ad05e4240a4d4db47de45f500ec0a05da89eb0a3be3137f58fea4ba47a518f026562351ee8c7606335b190e04f24899f9cf8e1bf867a3544266404e5ec5166a12b1e2a89d65ead608d8dc4a709e2f1970b269e16f50afe14986ffd720d1fd84a9d59a2a09bf2917197a76867768da9e2221204dda6b1708b4c01e2a6778449adebddce44f079b2b6c5fabb186b3ef001c4f2bc920725297c446e13090fa91c942b5a3948efe4349ae4f5b5ac77552ebec559fc42633c69297206e0c021bbfcb9d9b342b08feea96f961567a8e49c0175c8ae43e56ae2dcc7816549608bb01545c3d254108d217a35fcd705d7a07f354ce23feb52e6611344bb292430ced131692e0e1b92dc5b7e42a1e3f79673dd233a768d4c28f824753fd1711886b944383342c7d01ae8c5f9ee70259fe30fabcaf3b0bdefe571480b7c7c9a1eebb6cba8d3cd58de4cda6bcc31e6bf8be12104717561b4c85972b822e511b1900c26c2870b901d2b27e82e9643f08fffcaff27c7dacd4965227fb016f061c71ff1b142a8725cbbaad9af2890d3e3e24fbdadce1bc41ff8dfa5a57fe18fde70090399e0cfdc6639fe6e7f3fe667e54921f0fde830c7f0d0e4fdcc2ee1b9e7d1eee7af77e46f7b6434e4dccfe86a78c681e57e9cc1fdf4476fbdded9a383fa95f4ce23f5313bb33f40d920ba421cd91418147e63d5a9c958f6a1960b7bc0036eae141ee5caf32e45a2909b325ef6f82e288be0bf36ad4b93d5590ad71f76d52410d42c3b90b0a5481244f6329bf940ee2b1ce4805dae10925f75d753f528f0fabe555cd3b092ce765164b81deb6bceb0d9378e82ab519e90dd87540cc3b60d2fbcf3aa59209f824b49058331cdab160d12c5037faeb426d969a70b6d980f71d0fb8e00a17ac9b2f10ba6309cc1e32a0270d05d0fc3ae5fdbb06cf1fc559ff2aa7506619ccb346c89327518164187234078d26ed81dc859aecd4067ab205889ec552c89c4ee78c7870b046b3a88878dc22efee38e1f8206a5e4e79cf661402de60cda7b36e7450c0d60b1fd62d99b72aa13d1220e85d9b70a10e45b8ad28edd8d75551d8d706a8c843283506c502cc2b0ca512c07bb14b38a7cb49f99819f00b026924849f5848f09ab062ca88efbd08e09204ae55e35de6a816b30e3143029710a42e6db05688757ce8bcfe0263a7650ac0af3fb05eb004e5d0eb67da9bffda1673d996736a92351b85d907699719e4bb9775539dac10adf0e8c362032d67a3a7659c77677bd2ee0b74b4dc10020ab4968c4eb9a6d568321c633b505aecd5eb2082d5cb730899fef096835c68063d97b8326faff289d9b272d4426ca5274fbdfaaacb276982ff04cfbab6b55aeb3f8743b0b3d2f240d655810cb9c3843a5b278696931f54a58f056f6677f5aab3f56055a9319c5eb6e8da7671a593d5195f0a86ece3ea1e98287ef5eceac46a856776925264899f6536484fb08cf178aad8e9b5e8aec375fcf98e06c96e8e4deb22752481cc67b32e7fd75dd126add64b97b3d79db37fd7dfa8aabe4d8ae27964ffaa5ccda2b0ba867de9bff66e0da4ef507cadff7e7c4a7639432f43b6cf779fe43d53de48363ff62f9edc2032f7566f3e1f9d6f7b7686afe866753cb5d35a78431c1cd5dc2bd0241c465e1e6d2e7f3b432f0176bf87fe712b749e3fd4db78482d12149b6c3f3551a3f434142ef1579b3195b0d8bbf4468d6d4a6fb0cc652794e78ebbc27d9014a0b2bca79621bfa59c1e6899bcbae0444dcf4a2ac65210c916578e843022734a13f1c3ab3a407a1861a1b9b0fa509ae62143f8b2db4a3dedc3fd34d4bc5fe110f595be5793dd3874ba215622b8c64c894cbb1122ef5d9f8afa67a02ec8724ad7d310c580c4281b26c36d8177a2716495fb4ce5406eec7e5dfaa7c652d51d793dd8aec4888071eba445f2506694e272a13ebf81b70f0ae6fe9aa8a30dda0264f2875554be6131bad4b7c5b9608a7e46daafa2d218ac77de4b522d80063bec14b9c7a88d2b0f8b65e07929b53bcfba8c2f26a073387a67932a7fc798db6137170b1680580bff0eed80f922ef38e8d807c509476b2588fa4c09b3bc6624ae064ea33d052ce36876ad4c1d46dc19410ec0484cdb56a21fef99a421db351d99fa72883476c1e82a2df6a628788457c310d9d0b0d9b5bf698802516809c9b88b62717a9056c5da59a38107735fb7b50300a64775d9ae8379518f3f8657b71ed6f2eb1d89000f59a1f82b1cc1ffc6e0afb7a70de66d033885a7dbe4f8de81f4f1f2e5b7ab9f7c15ee099c3242d69355ae458b15a8228d72921a8685f1c12984491027a1db561b67c138291b8fe810671b1959e3307dc87334ce6f4cbf35287007a812834023132a9f24ec87776c12cbe629294e19a48a35fed19731ebd1b0f7e1c0e6be3f25eef845d7665a364c47b7c5c3b2e3e5475507b3074fdd33d3e568a198eb5938337c15e6ba454fba370f7db44f4b25b7601462db707290446a344a61e031df87e6028a202a8c7ad073fcf23a119327e19d44df73770b008da71dd319796e10023d448ce290c84a73298fd70818fb4ed046872b851718b57791244ec6d3c4df9a26b5814adb2e46135d720652611a388380386f57df676a382338ab7e9fe5e508b3946e21d12217e0855ffebef8e9aa6f900daa30cd27458bf8653a4c7acb2ffa71f70eacfd85b8c82819a77abca22e5d0e5c7f74d37acc5ee2949a5d42711930d1da67320e49e055e587117f0d08c9c723d72863fb8aa54d6e3f8c80f8959417ad32edae4e3dd1f24936f3b9d7af16c35ed3c2fbc413731d3cf6fb52d765bb9f132f288177b20c88a1a4b24f5e4d193bd1b8711a70854a36d116d508e3ff0f1145fb42063575b5c913f483b66ecebeee214de2daba27902003032124c22fc6b0b55185f25eaa8d6ee44add413e94a1faf8d8de6f2a44be8547c8f5a7d242c210f60ffaafd0014f6b16c950a7220d96897c7a91fef6e5078941ba18144110766d2ed4795cc38254435d91444771e4249afc26b3a4df5863d0f4dfb266dfcf5bed725527fe24f202006342fd9e1dc516498aa88038fc44c76575fa62cbc606003821f8ae938f0de17075721876cf429c65ad724b8eaca625981a850af7910898294166fee388963b06d91ca7e93a8ca332ddacebc989aac4c68b8485ce1c33148a23a20dcb47585398029a0c4b0f07c67b2e0ed52b46858a022ac343229372103d1323224f147e496aec9d3856a4c25246d30b6e594d8d9790fd5434ad9417b4db03d3146521d4560c1b1bb21321887bc3f4ccc618c278850c80dbc266f12bfd16913c91ccd62b0ffa3c25abc540c3e89540cfd75d038a240cc50d3d073fa1948510c7ed0c7560a8c93ad0efde8f08ec4f23e44125ef88945e85f8e3097fb934870f2161cb5a5b09cdd9eb6b84cb82a34b95451b51b7fb5e310a1c8af51ea3564d73b85a63e68086682940a6a34ecd35c48ad72c8527e6316d476ad509e3219bf95a71cc289799413cda96590fc6509af485dbf49f470b7030fc6f2937cb7741f3997604c1f49d14ab9ce22739514ae42e40b9d2b0db63d4f724dada35d9ed962733773f5a27315551f89ed4c20a02538ea7c4f394cc142be2131f99108cf3d40007f5f9e243ac05d212d26512b691cff4525e5a4dc83022127b6a0ec9be4afa2a5f7cbe535a1a59d77cb48a8a914ad960b5b9388dca60a6190b386dab2ec8ddda0a2b889438e9c1a4835c1f3d6bc348a3ea871848737f95a24df38dca58765333965174d9fc1f6385ed6bd082b6a9c8b3c67ff254e98b461bdace66cf238a80172f2cdaeab23676c4671882d99693929b6958adeca520166a944e385f48d96789464b93813e92b194d81c430c5904b4b19bf6a696dd9d234794b2ea6bc75b6cfc758635e816ce2f045f772032e95184edca8a5391b5665b3b994bf7b5daae417af51bb9485f29ffae1a5cde8d8f563ac97fa30cb699fce920f65e7457e641c84b8b5879aabe1d28a0140fa5e42325f97cacf7c5d866e97be884695db75a0a7ebb0f2d2988f1b98c41ec2b298255fe2fdc56bcbdbee254b9e2423502dba2e1572b80cb7019c1e51ad8c858e7fcb50912db4a5b1a4a913fb2e57993af679baa4422257e0ecd5c90c456dca4904d1ed8753216d8378734f3836f277a74ae5b722f122478b552cc1f3044325d679bebe7ce5f68a409f26ca5b2a08f28ad5c3acdbae48ecb8a51fb5fd05fe11a4a923decbfed0cd4d8dcab5a889dea6feeac5dba0219a86fcbe2247c4e6c928f44822674320124514fdc96160a4f77a20e291d82607691798fccc87d8f477e3f2f32155d02c0d7cc56053ef9bb7fd1694b2432b151eba889e2c05522894147e20da9cf78828f30421c3f6680216bc32c0de93d10f46d68e0b5bcfb7ffe89570ec46314ec9c37ebe22d529fa898a83742daec28278506e0e239eb10471fa760196fbf4bc41fb73b68b5e57c215589931e71978d3b5bc8c6d92ec569226b4c20928f151f5d1fb083e47d48387f13a32170e2200a1b598ce012a3d01445f32c1a736d298cc561c411fe13220b06f712098bdb75dcb5e0186a11c86bed606b7ae6aa4c4e7fe2006880fcabb9bdc23878ef16d0c57db11768a24ff477a89b881bcf85f66560c60530ad29445f363370c3153000dbb2aa399078e50813c69c6631d91528c4d397538e0c3bf18da6d2022c34d1d6023d57cdcce3c19f382c9d30fb6817a075608f2e16c377e94a1226d629360ed2abbca2dc5dfec46d83cdcfbeca2a10283d814accb21284785a5e001e9c59efa3eed4858389ba78509f2f7cd83d818d44f0175a7d96a2505366a7ce37bfda980b3504698a0944fb496d9a66213125b4d98d9ae02d1cf18b0ad984173ad6a4ede12372e7fd7a7fa64ca89f0b0f1a691b5a9cbcd22c2c561062c0c6b06b14b880c7be3eb375005022bf9351e89de642e5c2feff13e94c5b2168d7149e62406e6dd27572924a981b5dc824bd163bb5050f70b2b1f349a46d718f64855654449f2ff2c74e0c39321f0dc749f5df440d74ac240107bf465ef529c61c03b5d321799043d0920cb6fe9cee276042e64e46bf45177a398e757304a1a938cc7adc5c93eae52c3e72b0a51480dc1702e82dd4046243a4ca8f6283fc49208c1a5f7401f591b4b0fd73fcc85600928843b4fc4d0cb04d7c69e41fd8bfe8ae0313480478a58c7b4370efc98e9d9551c3dbb176a645f7b01c8ff238d04a4844d94470c43c666f37834e045913980811093f77321f61e64848bdd66e0d26acc8b117b187da5b681689f66e30b91ba3c1c243f82c336a85caa062b01404a003d577cd8bb31afa12520728c44f31baf87977b7cdf03d9b2069cd316b83730929bf3febcd178a8dca5b11c31191a20e958cd7608a81958099bd683afde2228ca295ca9bd813eb5a7d7bfe50553b825dbfa6341823c759f260f066e7d5bb87b038870744434a1c50913d91b505ddda6a4ce7f46fcdbdb950ae1bee351d64370e106545a206cc4ed86092dd3632d1998a4e140e7c5be7c9ad30b88e1402a8a1c5243736fb9e441ff2acf671ef01c4105082076bcf7d5a3380ec08c1e0949c004d41698907d9638c80265200e15610f7d02e894e0bbd222707592985b9d744b47e938c097bb651c1f9fec27e74e7c40c9f72c4f157ed7216b7dd816eeefaff34c806e886d1c0770223e90d0b6310d0f8abfd81fe88363809ad60dfdb91b0fff0cf8190a36f80d202781aa89e371cad16906548dbd9dcf7e56c78173c654390e1cedcbad91eb5d45597a3e79d0243024d11fa0f88939bd8da6ecc82ee1547d472174340532ebcc9ce242501f6a221929b893429e71f452f8f01fa49d562201b4502719b6a349a142967f455fefe1dfb97a7340d35a0aa317ccc7649ec166dd1ce8e404f178d5c44045cb6ea0c9726f0e04c7505d40cdfb326dec5ff2d42b3de142e63ac12389109a783ba106aa1f50213c8ce482cede1c00fc3fdc8fbc8106921e7b80ff148724a459863607d2ea5342c6f46af379360bac559aa0d9fc95b210b93db00488c11b1443868f62e4cba76032b488126935203d985cf854ea5c1db8f15ae6aa51045e87c573dcbc0f628755078c26a33702e5fde858b2138b1b22b0ecce27189a1769b00efe0a2b79bc8b955c6cad0d237da3b0ce34cfb1088c1c6643cc91ac3ca82f2172cf79deb286ae8aafd75a4680502851bd7f9b31cd3982e951ed7061f7bebad3c0be96d658bc235be3c8ca440a18d91180a7b547a9d0c314891f3cca6080fc503333df1d2bafd949c69f86626340509bf60fceef6f28eb06f2d065541a6279f8ad6642d00082ee7c40fcbfbd767f7fd80e7f4fa906b64a493ff4ba2a895c551faad2edf28104de5d5ad576dd59bf78909c61d2e6a1086cec3404685a1e377552edeccb8b9a4e26e1597a579f08d79786e50dbe44dbe4826f522bf9345873f480e417937d21f0e9ce3a6305ae66b20154095fbbf5ba8337638fb6c76b851e1120a6df22ee79b8eb9d8cb46a2b4be49298ffa2967cf858a00fe0617fb63f0bbf6189c5e12c60345adf3e82d50c6ea94f9d1f2c3702a947a7a46f8b069234273a2d60850c06d22a000b683ea3480c958b6b80b60b36f844a0a0fe23a689609c9e260552fe1a3822487741c0a7b39d1c8226a603ea19ea76a85110f16a113cf966439d78bd9a36eea6b62ec2a22b5349df364330977ad2dd228de45def3f6765368c9bc45820886a42418d55bbd9fc5f1dc79b98682858650bf0f1253a758f75743c3a83e1359297935dc3d57f428014b842324fe5f246da80bd7a1b956f153dd15dbee2f0b9052ace0d194cc8973245e920e8ae0e436920a602e24e916f09fdc60dde822c6e50d461d0b344d0997c3529713cacc9ac2ae5c96bf13ec515f4d6bae6cda5b014c06afecec80874a80b9c5b938d248dd70f50b755414883e317736831629c0b97d619d7402ee23defeca0205a8581d3312a139ce4a4a27532584784c4ea130ad41a217323ac8701ab764c25d2e6962b40f305afc53609a1bf17432b519f06e5c0e3cacda6aa3ac0b28b5e11bffad72df6bc0edb9e1188dba78e621abda51f05f00f0af236da9d2253fe77285ec49ea62e95aa00eee46205dc74f41df14e11cd0db92568d717f424fdf94ba2b727f109ea95d4a8772d1e9c5fe045db278e3f29f3d8aaaef35d8267b681fa17a045273370b719adcc7d13cb0c655e90884557c4923656ad88e303ba2794c63334ab795ea150f56eb5d60939ec8d510d07e12c6e4266a0b38610a84ef6dc28bbd63c511617c20d99b4e64704e1d433da446e0ea3ba0ee223d9597948846395cd4802112962f2bf9a03a59e9b6e887c56f6e20a993f9fe8dc3e63d7b77d7a9b5b96e60728832ffcfb3011c4bb2cd879e183ef79d22c8849b943fd10bce0479e5394cd73e3af55722ce43d2db905b4b4af5687905b11c2d073658bf63d56a684a69d8a91a1ac36b7bd080c608995eb6bf294af783a236515fc8a2dadbd9e62875a84d9651a023579dcb8ccb17ca720de0bcb7247c62e0b25257f30440e9703bc13db70eeacda9193759fbbaf053ada2e3534c7143889a030b4026421b2fc4d25aa16fee510b3dd297edb555576845bb02a3ff79a62980d6eb92b6ef7a96b1f0b4304cd46a0210cf168c8b88312ee4ddc01fb8ee0c53adb5d62ab3a463accc4d1ca702e05e2e1e0a8d0c1e04fa654d58563ecade79795d614d9b494f84d3c4732fc1783badc376bf0c6c3a768ef5157cc591c61805f70924addf816db583d4e3557fa090eb8307b02949d4a846b4a368125096d0366bb09432b6e7aed4a0772a86b8f663283728640bd031b113f3eccbca3d04a3093dfae25620390448fa71d36803da55ef1afb3bba567811818de304748414826e4d0ef9d39e77b83815f75eb1cf606327e18e6bcbc7e247c1693c8d43642e401557a60ebb85d93cff19c2a80965001e1bb420499b31008c0f3b7c09c7703051441030528c1454ea36963d2d0d4c0234d8f9d46d3c624c5aab1fcb788669509485ae1d86deff95896c8d2087560d40d4a271294c604fbdced1f855a9d2a74dd0cdf2139e2bddf84f4982ad72e90dba9dd8b97b86f86a391804657b2e41970ac646ed5802c3fd38f6e631b6f330970a23cc8a007caf80d969e82ceec128b2fa4dd018ad412d2bfdc5d96e36e6b2a497f6ac46b2caa300b6894bb8ca1ba53642a13f4f719f903d691d57cb511a967f77864b0aade9666e3282691a1f5361c0b47582645f192c43ef213f6db7adb532417cebb4df6557b35cbd2ffec0f53b950046cf968a5f3e5b374a5f43e318746f64e8860767c18c98ee64a577173d3ea986b9c6d3c2925da5f2e87e25ce37110f6948b8b2c9f630a404c3cd21b5fd92ceeab5c87e47fb1c6c884095b07324e119b4ec61544f5a59468c35dc3ad4cb5cae6060da75678e5c8e320228f1460d6c6cda65b0bd6f47952ba2d2dd3a5c6e97c26aa1392f3e29911839f6b2d76e4b7d2abc05df02b4557560102494df01343e4d7edec9e7e0de3981f012b27db65e20071b78e94bab92e07b37d34b5421371f31db99f5133f06112ef1adbec509bb18db773bc8d5a77c69c18714f78197563d35db60d76a925eca568583ff21bdb97cb78e54a77bc7efec4c1b1f61d7ee4e2231759a4455e6f37705c6aa41e99c22299a2fe4f326febfa2364add3cad5948a146b458ff9b2476208dd5d5083c41e7404b71d790406ba6c7ecc664db6b4cbb41ae8fbb6b192ea3e9cf8d177f125eab9bfd0dbd6ad1b42acb3b4ba0d9e58ebfd6d70ce3b626c1d721adc82148284ae0e26436a1904f8cac568ef31b2bfce39a68ec04b04322820d5bec03e3cde7cc6846dff847d8b5d40f7a88dd61bc7c2aadaa7a36e77c9f99c1ecec4b4e9b4b9572d1e9fc9b361fc281763db7842bf2a4c9539da8b45301f10a189756d8c77acbf640379f55182b42b754d7a4a01979681ce773332d5aa96bb7e4087963a8c81c29aa2197fe5ee49a8f83b0fb5ca184bee3f24e0c6f8e17d17976590c24a889581fdd264446e1ee75682f2fd4ed7b445c2650ff6d84cad95e0681d98f6eb7815f31d21536e147fa4394af8a71d9811701085ee1c9bb1bdcdf9d92a9bf968e1d65e67c22aa63ad797f5bffa14aa66add1bbfbc0522172576db168238c94f72d4cb8a9a093a9e856b96c0bce65dc27cca7e54b787e706de99ad3d3887a86a7a9406c0a451191ba42033c558af011c500648445161b253906fcc8aa422cd596653842847223c3b867117fcbfaf9d01bb116731a6d01031283acebf291d45ac00fb5c802e99ab6af751f98e1887f94f5875323289483e9aa156bd856385546cca50306b197b65e3588ce872f195de218084c37609e600e0aac1d19057ac16943b8657fafb2d549b0916ce4107b73d3e900df0265dcca1f2bd7e8558e905b60842ae7dce8452e3c639cab2a1d5cf8104fe5c0334dee8a38287b1a1832e3c8476319fa7eaab8458820c03507a55e2825a21e30147488c5989eb79265584cad3e38573a5951c683b858a6b4d6062fc56390b9aa6539dfaabf1bade190ffc0d004a85f80dea9dcf6bd102668ffad5914bd4f1c61b400f186007d2debf002e580165ffec522460e9953c9b73906d8c061fd084c0d5043317f5079cd95c61a77dfad4b06efad230375b2c6edba32aa138bb8d441e6ba32fd7e5d32a953a6fac8f87efd65ae4f06f5ca649d561fb2e75546e238d0872d2a4976f1655f5467a2f72fc39ac82bfd40f0317f6ad0d74e8f5ad86807a83ceced6f0192f69a97d8f12497dd90243d33150764b7f51c7427d32372b60514e8c8b9ad175062a3f73f5f3bed15464cb80910cd9750ee03e4ede3436ce00549df2a857df4ec6947bdea4b08e19b61fa78155adf04468a183c101772bdc6429a6cee5cc438049163523063e15a476dd2727dddac0f634d9dba0c1136cec40035bc94ddb7ddc6c953097420bf624eab0526c1ef874222eab9873196bfb56958d7c06b92ade21084cabfe6095a5c810be5129727a4b865ee3d226daba6730b22f4e3ee74e6a4236c7293cdd003c14d5cf52268bd08632ba7d121d92cb4f1cea61390a37829171607e4fb8966bb7522f67e1b8e2db5fefa1ec5864d858afc7fe1a1ccb0cbd6a46fcf8e9a6f819a873cf1a7510ddfbc9671775703bef0a72de18fdc9cb27f4496d1ac100ac6b251d42d18912974f19e3832a0495142073799cb63609407adb0d6315d536828dd932c78082dd0af3c947ec9a2cd8084e5866f14820f7ebda82bd7f08aac4cdd38ad07b486d8903a49c6979aaf8d77e4b255274eac9376abdb5b263e59efebdecdca2ebdd4aa66b5e006385767dc589477808492a98c7b4a8508f2bdcb25e2bbd80e0ba2978ea950ad4b448dfd7e4242ae1cef5a00147d571e145bd1c38352571d1c48939fb12ed00386b224775a97ce99edeb97d33be67440e1755fca138e51db86b230c7c438f9693f9cc640225b8f36297d11828d42dcbedf440076c30b5f90bb53972ec6dc98f72f7639c83cdf62835e5b79283d73ce5bd9c57645010976e8600d09c9f671e119f8c41d48e9dc31dd451b11c2c20268a62283c63ffdfd22f2159365415a7ce0744dff0462211147b9fbd561d19b530e8ec3681b2cbe490937605d1f3459014e1fcf5d5b11d57658d243c57612e1132c05dfb2cbba3250e29317c228cd790b806e409fa3050660a1caa75916e2b055c96414f8954e790999d8e3c4c91cf569d51bac1f90bf384eb038171137a15509023a06bf16de3e77497200590f910ec7fe345c3b48b51ce1284b2eeca5574ccc9475b54fd50cca19e0b846a74bd2268f153c4476a217f4f85e1d1e0a045342363d3e26efb137ecc0e18e78fd31ba8317cb3686ef2ed3350875d2a06a3caa9bfffb98835208f59dfb7f3748f35f9a3e299de01e58a98d6266bfb0418b4d34ac0c8d676de0fe9f47b2aec224f37cee84af2f5187f9ed55641868240706c152c4c93c87590a2a31b18ab65d276630aabedf381cb4aa9a3af52d9cab52017fac2f4ba7803db0bcc5cadf2c94298ee90946a1e3a79a75bfe57a29f57546eab3467950ce3ef215395955307c0a09892627a792a4f18c40f6b8df6ecafcde060172324132ce336bddb231319f830f929b452f2187cfe0e8088911edd8d20fcbbdf629f89a854e6ce8aaab16be44a521c87b3f0f08922a9b29b880610ec6bdbec83d068b36fac720868114c5cdb809e0aa003d38b49c0c81d6861e69d91a0e7274d06812a977a32d3f2d342dd825587923486b734cb4ef37f6ec3f1a76e0c136c3feaf8118d88e5d1a2f110b58786f00204bb709c9e50dd822b2bd869c709c20148f31a822a3afc7af0477a64ac6a5b424398f5c7e530bbb964b4e0f1e44d78e70cd8366031512885fc0bd1c4e8a430df8d8f5057407715359758183be7f8c2ee6fbc34d2b30e3a39184bce2cc818157d0babffddcdf7c10d34843ed9690e72ec5fa276950759c9934ba43eb50d3f59b090fbea86bb3491866f3fff946051efe4f13f018834c822b393d7aae242231539a085e492ae7c83b9e7b22599c214e4faa81481fefa26b99a9547690004a760c423a20bbc6199c97fe0656dcc922ea2340986b3d7dfa3a986f3ebca157c44949f563932ee1569ece5c83c9910bb0bfaa2633fafcccb897e9fa5171ae886b2cf3c8c335760a71cd9a24370a6b0537e5a23de367b5dcdac243b1a993239a619310c45bb0f5dbdb6eebdb309cfd43e3e0681ba6a5bdee6dc1cc8e2a39b3f66d58489fecdb02cfee8be45c58da309666b2b405223b5ce4acec364ca43dbb2dc0ec9fdd16d05ab694406ea21ee438711b86d298b82d5000206e53646eaba56e3370f83e75db03fe3500d1402a866fed6e924ef8ca0548d531635873907668a48af651f936ea4434d712c2ed9d8a19e79ad3fab76d3cbbd5e0b5470058590137c4fb36858c7c37654eddc06dcecbcdd395ed7f624ea9e0362299f385e7dd4c7ed3e130de851f095b97b3b270c36237e9e5f494d30656a311cfc36dc9003197bc01bf57c87d47429f5198b80de5cf2748b9f0f9eaf7e35a8d9dd7efddd8b2775e7f57aefcddbaf67b3fb7fa70492c1e1832794cff940853b49da09750a913f4aa8843d07bb081e967dea66d7cc6e0d48be03cebdc6417c635528be3c3bdad5d66dfda59f05957cd5ee450ab765a08d2b88daf8edb2815ee6a4044edb8e1ee15f5ddcdbd13c088f7099cf71a24ef74ea3d1366a76439565e31c999a441d388b5ac723b8e313a0a6b16263f5b184f7b4479ef47fb084e55479687c891536a52a67a27a6e076efdfca39a29ed90e40bb2d11ed32a16d47bb8f0f9ec4120a90d4a5775df797e92ce3d7794a270f1001602103026a59735e8b78f801aec2e1fd660be8e105ab4cd20757f647748e6915ca705a39ed13355fe926a010b9a79cefd23e6d52d586dd5d59a8206fc7213502b5798bc5086dd96ccae9d35e38630a764067574dff2a490dfb69ccd9f5868bca78e96c1ae0f93bf136025691dec53b2aa4a1de92e36e9a6714c547167e65fc75917b4915fc982ba56c7f5ca7cf40b8b8d58d3734c0b6482985a3ec891765be28a3365aa90a3cb9bcf92500413405671fcafae4506e297bf6f4b16167e5f4acef5d50c9367806117cbe8240a1dabc0d232de2301384c0dcef304513f8b5f78d0a45c30e758be959a37839072f02e8d9901f7229886d271117bddef5c10f98ed9c57545cbc6844d820db76e64d9ae9f4d4480da5d476e1ae7666942dd067591a011907d9c472cbe4c528d81759e94eaa900117834d409f503e38ff112b073e4e9e370f7b0b273432aada6ead95d95e0bd594feb692a2cebc5058417375771e13884cfc12ec4f7f7dc4fbb89bc12b9e18cdcfe1055b3d29b768b3ff24984a400b3f5f11a7072d4445ddcd1c424730c130b2f44034aa9ce929481207cc19d4209ce1d9b4f26e580a5a31f14d43c0a88b4209455320750d8cdab79e91e24956631a8a260dc2404d113cfe237cce6d041ec33e9856ccccedfe37caf37c3ef4ee8b2269e09cf4f66d2f1503e86a05c3e0df31e49cf2c375d9a381960aeeff5d59d98d53fd4742c4b2fb93e35e5fa2584d938a28ad6ba260af2ef2a14c92c1a006190ad6cee82b85bc467409a1fbd132aac2d9de642614dedffbda21089609a002cefb4a151e44454f07992372ecda9981a4893f0ccd8d5e75af5e7d458a9d2acb5a1773e5022cc7993f8c2b9f4cee16bb9e3e81fc3d7f711f993c1427dadade9bb0d7347d6e8f19bbb3233c277b4ff5b0379feeb2ba0dacb0cb1e7fbfb25eeb29407ffb2964068d3afd6219b7c89648263e487376cd7fd4d4bac668689a62f9c5d659bd2e2c357cd03f3fbe22d73d20611887462ad622ba90f55dfea1e6dd822218083e4b96200a41c36b46c5232d8fc648f7616fa67e29160382e86cceb3c8d39b98492d7aabfb9f0665f97c3ebc607c1da06d3a12f591d082030875390af6942450d46e837f4bbf7f8191ac74670eb2a3cb9aa68b4e9e3989c7e127fa2ff6e39983932268bb30ccbd32a467b56f934aeeadc9de814a397307becaee81f6fe2c36730c16e313f4e8dbb97faf3dc73273d8cccc69d2b59cb1748f4b0a92170d88039982e3b60f0e2e489a718223a4ddb6ccedfe1342bbc26c4968eec50a67421544b3782487fc4a8eed85c708b7621e23b1d16d4301186efc06bccff2881282e93a0421c3c24924ca20f1b986e68c21bbb405f3dd9482405de7a34f0970fd14c561944890e6f6de7a883ec390043350fb316a2b4ee6ee63a1cb9feb9005e360cb7431723128e8cf397ad0ffcfc03465b4908bc5d5b450cf161a8e0bdbd1413e4e7d8aaa6b414c2c368b7fd9f81e3e6ab2af799ea9e8b2eab527fe24d7f297b78b9c962aec7183a4b8facab2116fcd44f98153ed4af1c8d00d68e0d9432fa176434c3123b67e464062a3ee9805f7b912157056d64f637bfa653300cc8142dc4003da7f12845c20d4996d0e2a5ea43e88a0048e7a0c7ed70d5a1eddc21cfe2665785ddf439975b517f951dd7d1520d6a31504322e3ce0d8891dfe6a840102f2b11193e761806a5a66567c64d0f71d4edc46c8cf01fb88b136325a5ab2724b2965923283080308fd07da63eed53e037053546a01c78df1571b010bf629c3752dbdf4a6c4471f57cad55c664a4b7f4ca9bdb26bdd81dc31bdd48f72cd4d2e977575e589f3dbfc5873d9a54b6d5733bbda417ead0b61df76a40e0a7b1432b69fc4b66faf8dd11f977116ace25ae05ae0d22e2d4b962363c657eebdf7de7bf3ad66690349d080090e1409c2ecda2bf6bd441881827df1bd362528b87bef0d4a30040f4f4d6428427362850feebdf7de7baf151e00020b13445842a284152ab05c9a0c2e45860ec800e5f37ce034e46c3510a586199cfcd0b2a993d30c367c60150fdc3c81000647f8800f46b8928422945860adcb67cab6597012eebdf73220cb00040d3160c7b513baf1d0d73ad9f716410307f6cdf8de7ceffdab4b19eebd38cc3095710b9789241061fb8167249c20d9a09c439233121648613775b24ded974d9d6c41c020f8c020f8d0411154a480d682243c54a18023d840021ac000091ba0f4b083111c408841ca082600c20824481082064c237082019387d9c44ad8b4081958b1bd4d8b9081144b1fa53f377ec001bda1fbb440377eb001c5a1dbb7cfcebba96a07f951ad06d0f8a9836e22756593fab73ef7177ba8a36a90bbbac67fd40eab0edbee2868a26f53e8ab8ebbd6bc998cf7a37487b1be05f7cd4ff5e8da4ed29a2b0629dd99446a62c1c7245293fb41591757da29ce3665b38152767db250ee95505d79c9bac93c727eabbde229814fe91e59cbf97056eee62f5252953b62d73f5dd0ac3bd592aa07d5926a090d77bb6d7cef2da98ae9e68009d692ed1da57fb6b8ec62777badb5bb233d295b63b3dd12a7c44d4e279db6070f8bf7f863b2669dc74b735d7bf1bd17e3715f2558c9768c95b65f4ae9fd926cff8e386cb5394ec94dce97962ce961997298abbc1b9454495c96bf969faf8d0a37979473ce4ba6dc9cc5a81de267a59890dab8b5ad14f8259149fb2ed97964ed3c1545b35249764a69df4bbb65144eb55b9cb607aba9759c2b77a916554b2c0cf5a8de16149f5db24aeabfb05582f2277b2fc6397338678ed33a839cd65de779dfed3ceffb4030fc40300c4591da6a20188a5237ea06429e96f65a35d97cc99738cd95a4a26c4f4d95a92ad525953655fdc95a100879d2a817065202791ad65081a34ed2492b50c9be4df4a7db553b6773d3bd519ae88fddf736dd1fe88fcdfb5f206ed36d6afa7ddea63be5d6ee13970179ffdb646381e0c460aca852c5f91a7b4b6a9bb724f71548b5b9c18171630303c68db5d8e6062706e3c60607c68dc5ef8f138bc1b8b1a1402cb6c9df93c68971ad268e68478888131222d2bae38876748488b81d2122dd713b3a3a42449cee6023ce3638311837dfc76a09e97c25b30d908a6108c560e0580c06c7751886904e0c06168ac1e03a2ca4a313838141a56dc375f8cb423a164625fabaf3990cc1af403eab5067f68608e7c6e2e0dce4aced0dd10ece8d25c2b9c9fafd897676706e6cd6d653a22424da016fc01c598f1cb0478f9c3014c11c594f8f1c50d623271441594f4f8f1c301441594f8f1caefbb0904e0c46d69e25dac1b951a2a4d5d283e73389b3cd5cacc74e8cdbd989795ec8c57af0ecc4b81e3b312fe47af0f0ecc4386bbd901b710f9e9d98cee9794d621b9d71728470b290104ed7811927a7470827e708e17460cee9e911c2c936361d985538a74708476bd96b92a575f06b7205a462183a44303011110cad3f0c4347460403eb10c1d0dffbebc86444587f5864e9c856ab1843aba12116abb58ae133b48a31c46aad62f8f80cad58ad550c9f212f1cb91e3c3b1da8ca393d42fa13b18e8ca8c58527679c3b229e1ca22e2787280c571d118f9943d4f1e41085ab8ec73473883a8cc355e7c263e610e52ff7f87cce36d6138b81e018ebf189f5c4c0b1c7c7c782638b4d8f4fccf362bc47664fe6d9781c8e6c0787dbd9c1f93e1587238bb18323dbe1fc53c962c4d8e13e15d7cab2183b9e37f41e09e3f5205fbcdc43280b09799e987b0c09e51e429e98a77a0c4d0d09654fccaca929981e432f2f327cbcf8f00103e37a9101e4e345860f18d78b0c20201f2f30ae1719403ec2954bc763e680638beef1d1f9542d4e1663c71359b9c790d0d494cb8bcff7f3e54fc84726f4c96442e3e8f209f9fcc8843e1f99d0e8f2f9fcfcc884be9c4797af85cf8f4c288607e461a21844442a550b510c20a21844aa9618404058d5c2220610c7c9788eb4e186388e8b0dc562a2d88a0dc9880dc5c4d6900c19566cb96c8664c440d0c7832407f280a0e6d1d13a3a61c8d23c3e74348f4ec8d2533c3ea67ce8e890a561a6a6381e1f3a20683e48ca803d201903723d3bdcce0e08aeb81e7387ebd901575c548f1965ee70e08a7b898a92e931636268fc88f9f14346662686c68c1f31347ec8ccc4d09831e3478ccc4c0c8d193f4697169fcf8f4cd5c2c28b01d4436cb9ba211939210b46f3f8d001572f5c8fb91315f50223233c21e4c21d193c3b210fcf4eabc522dc917102cf4e288367a7c5229471c2093c3b21c7b5588434324ee0d9f161499bfc3d813e7ac09e1e16cb05fa98d103fae8e19ce59a31a34708ccd905bae811b2d69236d65a4c641211ad563044260d2293680563d2a0418475125ec1cc9834b4fef19ab4d13e5a6b9f717cf1f9e133be4cf9fc98fa61c71799a9291b9f1f3151fc7991d4620c51ec62e47439392a954b17e327a78b91a372e9a262fc44fde4742a972e262a4ac7f8c91145a01749521cd22f922fea211dada3238a2d7a0848470fe9882dfa6908e80948478b2dbac5d3133904f43f5be157588124cb9fed157eb60259fe6cef159e2c7fb65768b1a009659cc0b3e47201fa98d1b38299f94c1ab21719cfe7470f954b4c17e327476c69a18780749cc978824a1b54a2353cc48fa0c7a4553d266d74c5ada5db646b6638f77275fe545d514571fe32f3fea3926a2ae8cf91362605fd3922a9a054522aad9380e87f9951bdfe6c4d59bab63c5bb71f2d5b0984acdbfe3c10b2aab02d28be25eb0321ebe63ec8eb069580902ad499b8f333b4230e0dedb878513ed5f7df47d20daa708cff91a10d55f97de8ffe918cb1dc01f1de6b9a9bdc67bcf7b1aead00ef338f155df4b6077dd876f75795660734fa94ee12b77109f3a4cabca1386cd71e07b4fdd14cbb0a4df75e549df863584d4adbbb28635ccff9136ea739cf79afc70d01387ceae2f01066cfaeee1bb848ad25a6f1d52b7bffdfc45e1ce6fadbeb70c1283a33e2e85702591059c47bbfed1cee50bf88bf0c6e50bf889ac362e5fa85f14ba4371ef63d5f7ddffbeea4e3dbb8efbee8e71e956767d5bc413a45b4cab8efaf8e9e3bf7ecba2ba6d791e11a9f56d7d17466abb010bc565ddd4a664c51412f4e537f8be6aa3d2ff6018eb830ee340a67fa997daab5beb6ead7d4b3af5235caf1448ec0684e0900394066a70e508258c441161730ccc18010da4e001135756d07463200209226ec0198a11d7d61d30a11b0f3dc301841085d40d0a087c0083d94582f2040a941e3775823235850f5c0d3ef8c0d57004ae0857a44a952ae015ae8827ea0bc4f0e07ef5abd22886c7ca288607cb08c8063ed466ac3f9aad4a23a3d51bb51e061c1dd08036336a32f34dc03f9a71fe2cf2a332d2b74a8c74ff7661d2a8d8e60de612168b34aa459492a8cd564853c6bb228d56531c565954581ed61062b37840e85bf72fef87f1ef53d3885f976612f6fed45abf964afab4d6da4c326966edbe3369269299a4a56825cd0c3f2957065c647ccf87f13b1a12fefb571c561f7f7771694e39ec25c594f2fec418fff9bae1bf26ad9632efbba7d7ed258566dfeef3bdb9acee7b4f73ca4cba5225fcf94b5c9a14cdd737a5a4a4642eccf2bfd2a459917219fdcf526cc2536ac2c98a621905d9f053950ff362f9bae5afb5966b5ae34b67269043f07e91259052d7be6eaf2bbbfe0b32c646b5ed17df05c6d3547a2925b961c965b7c8ae6ff6407fe8396e8da94ccbb04c46330790ec5326654abda0e2301368bbbe696552592665cac610e095feb3c86210bc34bc2c080601ff5e0d8254e37ba3080196698bbf0fcf7cf6765ef97aaa334bb26eaca7193449c31a4576cf0499f9fbf76766fe9b21f5cc0cd5f8e2224c6164040305820a9068b3d5c3b02a9bd07c0df25076dbabffafffad4824233f6b927ff53441689efc205fadfe2b3925eea9378cf8fa108731bf79339fa688af1794cb5e7cce9875634939c1784d307e973c4d78f03fbb4df81a26801fd6a078e2fdeabe95d7ed25c5c916a55e53f55fd05e20b9899499e4b0ebbf38e226857af1a0875dff0555f195dd0bec1089ed34eb966f7a2c4f17fe7ba337f5718942d0d3f81edaf0e80b32bff81e79165913c820218e30855c82b93cdf841bfe0d8b2c58be9e5e902f28f225e5b5c1125e75c3b7aa7c4de174309a4f0e83714a8c5ff95f02890389a9217597e499ff8b6c2d094b9b7c9aa7610ae4d3fc4743dedf349fc91caea73424ddf78bec26cb98fc74f692e235f5f3e7ed224ffa2f1cedfc610d2375f194baf8165154d9a749b3a58049870ddf2f5ed882bce5823cc73d239341595326554b59d4ae313229d9cda4c9a476b5d56065ef6c6aabc105fbab208b5559745fd6940d7a9fcb8fc5623db1b0b468d6647d7585cfbacd30ae9e65af8cee0485d22ef22d84c67ee1b77dd5bfd47489cb97927a4df51aaff19a6c7976f6d93bd8f53d570d9799c461aeafffb9c8d35b242bf3d89caf9d654c93a965c66a64f1f94d265bdf8ce233585fef7df9faf58582acb9fa222eb4de3e8b64e1b36df7630c85971d2eb6a50c5addb00056a3b063f6dabaa4f4e6c41fc23cf82e3248f8e7f97df830ff55d054e2fa4c25a6920ea399c465b98480cfce4a2e031dccab550983cfacc9f74b74a0214151a90db1c461b5ea404362c161b5d6fc7dbea4f4a55c92504cd43683a62d05e6b535592b265b53bbb2f474199660d4ef99de9b4c4e5ca635d77ad60bb54aa3263c58bf7aa35569c42a73f735a7d6ba16e5dd95e611f466064b9bda7830c43ecddb0c3eb0cd9bcba88d0355b6acdbf56d3390da7ae3b7e6ea2f4cf8dd6f458224f82e970b24bd181558bf7a215679bd5288daa2bccd23e88d8dbacd5b0e237e5b9ef5346f99145287c084abfca335599ff56797ada9bf2287dc9df1df77a411ffea59cfd5cdcabfca45f84fd60d97f9833c070d202f7159ce50f9c8d20e6bd219a582a4c310950ad2aed54e5a5352c2546b9ddab5329daf67ddec14a89b148755152c1246977f79d6cd9a2daf59ff42b668b6a6be0b496d4d4bf9df72b95825adadce5612eb666b2c309ee6cdbc9952bcbe39c58c7219b5523b6d4d5367f3663367f366732e6d2bc8c0b89adab89c22fa60ace6ad96ac70697cd19f70d7536717ee538c49dc7406523df0b9c28794dd1c564f70cb6428d02089c2e8468106345a43b72e5f3729e0b641ece3d296b14d6a29b7deaf7c3dbd6eac8e75736d7bb335769c55d6cd9aaf23684dfd1decfa4becda04eb06c58a7add48604a89333069b98cc191df3eed5c1e6d26512c4fb3b66b114230a1cdbe18a34ef27a7258f52378268b36ab5f59b4ad4d26d389a944ebeffbd3540af27df7411e922693c3bef0fbbeaf3c43d254622a99494c25fd416e2a99494c252ea3de755d6936994ca692ec662a994ab29bece632ad3b5a63d1f6f97add9646efdf2bcfa37d9a50bb7224cc134bd0662f290eab328cdd7be5ebc66249e91efc330cbb0fff7cdd8284efb16eafa7dfa079336fe07fff81e4ebc93df225e5f5bab9ecf3aa7b57b29e928cb4f6e4b2971497d5a6ecfa4126d42d6a57f3b62bd392ab83ade9eb32087dddbe2348d566993cf5b656bc6ebbbe59b3a629454d266b9a345a531f9bb67d6926932965d26a494b380ab9230d433dca5c023270dd0435d488ff0c6edf15d3a2c54c0b162c6458b85c302e189816302fdbfef7b77eccedbfb8b4d8776969b55e5a2c960bcb5b56e3d8aa1ff3bff5636ebf2586212b044115f87de2e76dfbabbff56360a7ad0dbdebf6f16ffd98db57fdad1f731bc3bbbe497f2ebdb177fbddf565d67e8fdbbf210ffdc1ef37ac813fe6324a673231e44973f0fb8cd1ec33e6629fb1989718cc3e632dfb8c9dab7dc6ce709f316f9fb14e8c7dfb8cb1f61963b15f3597d197fb8c86ba3ef7e76f8e5b7298f730d6cb1a5935568d55a3353eb262cfaabda458c0508f38dc3285ca4e1bd06b6eeea40311fbdbd4490720f60983a2a2a5a5e5d6ba6372e86d5f6f5bc6e478f70bf8f8f8dc985bdaa87900a4b562ac9fcb208b43bd94fb5bd33177e3cd79deb6e49294f0f76eb87299a4613cbdf76e9e14efc965545c62ad0d28adf506c5885a3d4a6fea0405ca02e123c058ffba3841f936752202cb574573195feb958a21f8799d6e69b156a38a850be6c5654626a6c5d3b828c99f1236fd12c21bdcf6ff5e5e5d3c27b0fdbf17195f2b9e14d8fe9f099fd7e92b9e00588d2a31c4e25981edffc15c302f2e2dad2c9e306cffafe6695cccc8c4b4e0c42f0035300098f0e25542a945ff4f0062fd33c8ed2505a73ee81cd69f724aeebdefe478a42d3e811ff9e8cb97628cdf7fa12f7d4fdf7b7019f8cee44ebcc99f78cd87d8949e5ef32528903331e1543c8aba27b1e9bb0fa8cce301057227ae047524289037e160d318dc60d3a715c89f541cffd3a3680a5b8167d1162f5d51d8ea699882dde36a2c4fa32d5e2bf85a21415bd48d72980f6375266c818d8b306d2250d89d62fb7b566c7f8d91b093f356d154af143b06f4e746e14f2ad0b55271fcb138d97e8fb0bd69fb8df2b8baa4ff467d37ca6a8ebc6f29cc56238729adaa0e8165f225ab649358250eb36f95ec1257ada755da4bac0e56c9e5b5247bc4ba8c5eebc3475f67a56dcb420b0c60e1a452ff3272d949a15c2862a105adc7d1e5fa87c13c16db4e3fbcd2943055319e162a6381aad4ec688dbfd6fade300ea94c25b83dcfb68f82b5d6c625d3e2a60b85553bd2faf4735829ac82fb0c32ee93021b3fc51fc5b5e5cd4f79e40b7a0d066dd7ce705b4619d7eb4d2c0374aab55ed7cbb2c0da586bad8dcd14a3db7a449375c70e87dd52a3d0a1400037d271f769a4df9f002ee33ee7bb6bc895f5a57c764fe0a33a75d45346eaeeb55677f7f25a5ba9c3aacd3e22b5c3c652873c8cf463b8de22b61544d954000426255430438562f33608e7d95a5bad2d0532d028c840066ed24d82011615c93dd900f8fa3ef9c0e568f4bd452ef724042eb8fc84c99b61e109109d0c0b308ee39e4889c95cce393f69e2a50597398ee39e640959642ee79c833802bab8cc711c178412164ce672ce39081e542f5ce6388e0be207ce257339e71c44add5c2658ee3b82090105b99cb39e7209670617199e3382e8829f42a7339e71d5d1057b0eeb87708dd7874da08c6f8041be71828b960cc95c04504a20b8510c1235a7c317862e5c5000b8bae032c740a5c1c1497dc0315968113ad1b731827032b5a0c806a81859a5208c5420d07cd421ee2d6953643a83675aaf1b0f1a64eb512bcb881058c31c616b780ef0c98888db3131695ef8012baf15882042910fc9085034ab820698631b031121b7319638c31c6185f8cf1c518638cb96c8493f274c06be30b05b399a251402dbd19057eedad9ee426b9467a6975b70eb053ee2db656ed30ead65a6bafc3dc3abdf1ea5ee90d758c7159918c55853ad3b6c62bb56298830f67eb310640b5d079124d76be39e79c73cef948ce1e7032023fa2e4a403ab4d9d6c56d83086b4a3376e6d514953b7108996447feadf0c70539ed4787e51519fa64e8ce7a5dd6dbf96e75549d166f782b4926293ca7bbaac5a2beb1ce94d0d6b6b359b9474efadd530c639e75ce3721cc75dd22eb14ba29cc999a6a66a49de938d72d8d3256d5087794f1e94c3f0f61f82f7e93d595aad78e34eb171a70c71efe946f576406f84d85dbf7a4ff4068ada0a44b77f93cb58ef2f3e71d94a3cc5116cff535cf229f992ec4f09a9e5c5272b0595893d50954fdbb3529e9e9477c59bda1e96edff21cdc07f7a4b0801ffe90d61bbd7c4f69e104f91a3595384b257d06646f4acf546c6990ba7646b9e5cc62d71b10754c631f198ac8b3c82caac9495c24a6961a7b43569279c2edb9fb666b4de9fde3f63b63f0b0a74df693edbfdb573aeb391dc01ffc50f92426a964d446fb0d5faa49fb97c11556e911e149ae3df428a564429af0614e61f922216292810f8fee294cfe04aa4225c962c59664dee1b71cd9a44d1f2fea2950ad452121189e041a92612f7fede0de8cf88a59ed08488be82ca6842c425661162b364d9e0b7c8d617697d6d79174ec99a5e11b46689cbc49ac3985099280485f93b0b4eacd91a7f98d29664929eb55eac69bd4fb1b66bd27ea1b390f45d49bd31596796dcc1e55bc81d308bc562b15e3b8cf534ac48dc6387b19ef59f832da4b74823ae59eb3199a46748455459b25c419bb9ecd02a937ed6fa20c7a4113dc3ef4226b966b82c42b308d9a1555a284b85145dffb22952b3cc9ae492d21b4a734ed5ce19f6dc16ceb9daf5bd9a75daf549758457dbfeb46ea60537dc63b1d7cbdad15a97ab00747683ee7a63c88d1b3768ad953a7d365436be57911fc943f561a95f53fadafb4fe5c2eef27ba40bdbb3feaa72b4359feabf4fdb9a4f7ffdd305f1eff7aaa1b0ecca130655f85f2996f43dcfeb6a089636ea6bfdf571541ed4d67c65903d71a74f09ecb33e76615318743e8c99586bb50d7964cc95fed449cae1bf435c496dcdcd25b5353ca8adb13550b81bc818c9c501b45c467202d0612dd04e4882e0900ca18d7c1f2d6f000988037802242de082c855089f13921bd4704032c561b4014e46a66899c3570b6f23cce564844a7d551088af6e7a9d8ce8f0aa7f7da094de2db589b054bbb689e4b06e90fe907687443208b5898022fd1952695b088d5d755c1a0dc748c3e1ee02ad6be9221bf0d1a72f3206da18ca70051278601245951c90706546f50a74d8bd3134c9a8fbc8f607752d6b312ced5bbaa8a5e1c3f82bc6d833d55467a4212e7dc68b77752c945ecff6de5b8295884f8f4ec91e6aadf64629af8801a6574cb9c2ca65f2b9643e4b57a0c336ad61608aeda2375cc6d77acd42b333f8e87941afa97f944405471cf1821e5c8982c38ce68a8ec94c14362b84b0f3a6b62b624822e9841000d1e4871e2c1145c4cc373085153a506d6ac322040c9af8800b6ab83921b1c04c03fb1c956a36904a3e3beed3e5d65aa7af6ac3b7040b34eb42919bf9ab750cb8536143144692e020044398f96b2ab62458b142861cd89240438cd3a71d4698d92174e3b1c3564515f076dbc1c3564512553819f9a84ef508dc7d8219e7528fb6c6c7bfe57f5b8ffe2e6bbd06dcd79174669bc2cab6afb9d7464d78748f4b23fc5d69d4bdb882510885dafae98c7acfc97dfe3b238d36279bd9d44645944dffc3209dd5d0d2761126e2597f7df23bbfcec66aa1b8cf9f75ec20fe7756914cfa99487d86581a35d16fd424e33005fadc7f3accf17d2a5519c45f7fce219274e694cc71ffebbcfc94149d8c99fae69eda981cd65a193cf1a7a2874d6d4738b24f7d45caee9ee2d77f03154736b55dc1a2a25f8db4adb1d42b0ac3147019c48d8e66dad6849496430c8044bdc7d6586a00557972e518e4e49e3aacc561f4f107e14a8a4b5d6d2d838cd61665e7a7f95d7cd5144ff6bd2058fa8cd59ffa73a8233f3dedd3905b91493f5bbd1b9546d47be81bad1e06ea3de353efc129f8e7c7610aaa1749ef31f9adc61454e5f9c2d1bd1f92a7de5f916ffb5ef75df08876610af49f62fd46964891ef9c6397a2df187c9a7b1ab5edaf9e369671198dc2b6edc7e410dfbe08b6e0e75a5cf67dfab950877d0b1e7d3af083cf85368eb6064ffda33eb96f8d6490981cf8bdc7efbde7bd7f489ededf6f711927d32f92e7f85cb87a4a6f58af5f3cf573e073e4b97afdf7c15087fd5519eac0af75a8436bd2d3e458c6e450bdf7aa5246244fee1d3f57a4ce9228cd39f5fb7f1fe441bca71b2483748f75791eed133f57b6686c03c10db610b15bcb6cb054a9b44aff058bec0d8e2b73c6bb92d4bafb9158dd8907784fbbff1e931f3e5fe3f8dff7bdb676406c7f65479e0e78edf1f1483ee0b53f5a4f70d7fbdadfcbf3dc1bcbf3f5fb38e833768f82cb46d58fef3f00979de3af4815f9bd487edfc3bef7d725fe7bb6e0528f15e7f0519d718754f7416e4b128cf59dea4a864e88b8876bad11f08d9f46e05687b24317ab3b76fe7bbe1c10dbb96692b3cf91f63fef2fe995676c5f8e3c63a668aade1f974c46f077688fcc2418df8a25b5f7c2f6f967cc3b8b3047d66fd99ef4b3ee3f8f64c1989fd6af25114c4b8ff338afa9afc9b188c603621b97414028ee62269552289ea038e2daa0a84111b55d0eb3c0475b18a92d8aa9cdbdc52719c4caf2dfc751071004ba487feaae372c009d15a1596a345af899d431382e8d66370d718ca4d3b60d3a048dc69136ff10fc438450291a6d17b1f6f7451904c1fd7d27b5f190a2ec914268ecf7bc2145797f392a10362e85d42c1f298466e3ff3a52088d5de94db73b21350b01a84dc77121018e64b029b539ed57faf3420db220bda91fee5ac32723cd473c3234ad81e3f3fcc4e572b9db2c3e028ceb17e15dcb254f303d511bb57577b2729d98b0d61ed14e4e586c58c3daabc3cd37e0eb042f51297532c2c66dea6444ad1af1e43a54b7379343d09dd643c8c1ddbdeb963cf980f779de942859889be4032b691b8206b6cb61396710bc92456badc3f0ca55493131aa543a34a1442909c98a71358e9c2d0ba19568b0082bd66a759d8c4bb05a2cd6a5629b1a6136b55131a2d5d26a45e190c0c1762a41b4b8b4b45c2797e6a2c283cb8b8b8b54131e0f6e134d9a4a0e2f302f2f514cbb5aa8eb648956a29f60c05658a3d56ac1c0d89ca055a981dbaad4b68b450b162c3a11641bb4122b052d625ab4b0392182d6a6b62a2188918989019b76059b7062493741c5091b586c6aab720199199950489d012bbd7102cb9de23a01b5ad13372786d8ba8a1917333357ae936fa9e282c6858b282adfa6b626ae44c942dc1dd0804f4313d6c0f4867e252fbda1a5a743ec89244fd8a296d8a294ec28df8333333333ff2f2e20411a1a1a1a9274d9d426841194204992645946451142121ad3c12802a539236a3bb0d02de24164cee69c8d78da39e79c6fb71d3c8c58a286afba645c56b7d78eb8b2dd65a26c7f90c66a06c21eb010580867e24c42143893afd54d4da3d168b5d9795d2ead6b931d7c125016638c2dbe18637b31b618c764c0841e7f2d7d82827c647c501954faf8b876e2a3aff325b59da31de9b3d8f6a0a6985967eeffb2e232979d2ed6137fd692cb7a7093ce54b0333b7b9fbdbe23ed8c65dbfe24ab666bbc863a5efb5563d16a325fc9fb22ff84bdbe843f7d6ce4ae25ec3a13a5c5ae323217f575b3b299af402f292f25e88dff29ee5af5cb56815e4f512ad06bcaad02bda0a454a0171525e8cfab0abdf137c1569651eaec0549922f688dfd126e7a7254a057d4940af4b2025581584d15a70afd61f140a502b1962a8e7ff9243365bb8f1301bbfe2bcacbf27492dc41d2903528ccdf0539a39a14e6cfe2e165050cdf9fb524fe76f0655e56b6878f594d5fc2d3d0c4d0b87041ba98d9f65bccc86cfb2cfed68f059fa2a8646b5c6a6acbd0cc0800108000d316000018100a08430241142461206bf20114000c6d90545c54508f8563518ec2208cc318649031c618638831446a684623005a3410303686d8400db2fd832a9bc0ebdd4dbbe5c73e83a3579d4c0ba699f2642d7956e25b6287e3c2bf0924ed5cabf55be08c0477deb2e85ac7cd192c548bd1d7a65ab32c438443214f677a4af1fdcac478e5a3ab22b1db45603c59b8306107f954cff3e654e169ca722c324b10c78ed260afcb48561a8ff8adc3a4b18123c1c34ca017227457079063e9844bc586ccde7cf491a0a9668a5735e2014fa853ae06b77fd4a6e101eba8610ddb4b67adec5987ff73952164429c00d4eb552daaae49f672cb39d2f8ab28088ae14d05bbdb4ad6625739ed24f62595d4e2fcb0c44793a1e436ea257e6f7d0e16e98572b0ae4a22e185f0e4937f1fc79d8a2a16c827f0b314c567695721d0a6c01c56fd56057481a564a56a3475159306b2a98b007a25c53b8c91a4233063f56656de5a5d22868afef1b8db5698c2a0b688ccaeb7e8b719859a1bf7f227db2a8fc08987186037c8be710671d641bc7b55cd5ec9cb52024a050e763b1e13a2407d17b9b30242bb78100536afb0ab7f344e5b12b9bade5b74b5e805134ae76018bfae2189a7c3aac194d969640479b8635cf21dd372f16a56c43cc556157197b61220accd790e5faca7e49195a3768f3cb965b684f6e939a62daed51c18dec3bb48dc5307d72102f719304b33809af301eef52436615e51a0b48d3c0a83efa81e596d10a250cac3ab7661348186c997547fb26630281ebade827eb0c2815056c8e671edd4449884863fdb8b6e19ed1fb972c60631f16e10d764fa8a8d899b6543d8db0f24f0a4546dbb81396ece25f949a10e8da9363e512f69220dced833ccaa349951e658c1ded661c235d313334c2a616955e5c0cc48e1b82bd2d17cb6b1a10226dc6208bd537f7ab774ce96a2de42e660f84e745787eea013c32cc3f5e83d26fe192b73b17d03d17139085b4b08e62cc7c5de20db06bc3e34c3d9007f19ec2f5c877036af5fb67aca1010fd7a297bab87b3a80b47582ace2d54a8e00acb6f8e39e798d3286bb6d1502d4f1308230512e0ffcb8b7bae41c280cc74412a063c3f678d35a5dee66012a0de491eb2acf7c292d63b14ac772196f5f60bb74787c663e33f27d5c67634e4ac4868574b4db1c0d4783d9b94a918217f745983b72a33c31fa25b6fd01adc368fb659a45f83b2f006bb6f45bba23d935625e8eb2df4c9fe7b667f5ddcd839905a1f6adbe217a79c7524a7070e2b4fa5b7f3bd88003ffe7844fc63072327a6f245efeb1488d41390a6ceb1b78b7618f3c80701e06bf5b3b0a0207db8ed749205eef33ee3988dcde0bd8a80d25abde1d54a330f3386b9d092591d11f5f7f0e748c2171bd5d3f9589d409bf4381dd3678cbd4641b017c353cdaee79c084efc1bf05e0487c59055b9a681a9b58b682a833979f7b9841c3b6e1c1bc899877361bac6394d72b0a2d787e60e8779219563d7bebd275d01406e68250a9937daaba4523da030861a571f3add7781b6803e1f172b84f8ffc863e9b2e9e2180308c34d2592867133eab4dd98f4ad6c6c710e133b5cb4243d00fbf66e6d3a341bf2edb2145171c59411850a427d0339588c5af0aa0bbd4ea144b39bf318f9ec703e5cc9ba4b1a63b60f425f94a1915c11f2b0def17a8f53c3ed0d9e1f50084d4d4c07edfc242b5cc3ae03fc2ae08751f1b314e7e8c8b5ea56a81f9bab9e48104feafe93e0c035072caaa37695905d65f1218aafc8c1c7de51c66389e2a0eefa4a1a291f80d11a3296fe7983abf2a020b60460c996a134b6ed79d3577d3b3138bce9b08122675c813914f0b21d6e4bab99dd73ac6a1b3729c76675ce4a2f34ac61e5f0c13e2710c5aa8fe25994401c369d462646e6ad7e1c42b6eef764cdd3a3cf06cd31d196e348c2b663190028e3038fe707110b341e3225c4fa182a312c968b043e3ea293bdfe9a83b0e36895f1ef74ce39714c21d4fab9f7cf098699b93604cdbfc7884baa1af7f7ea59b4b66ab89c2c9e58e5810fb11e7662387822d2db79476608cc8b51885e7ade851db8074de8ce344782bf4997cab547615d05be254283e7df0ce7881d3787bbf0ba79605a860a00d3be7c3199ec991a9554268216fbb3ddb8c3ec7c20e45d29ab0b97dd1fe0f474a3f320b0cc7a66d277dfd78047c800b4f4d4423ab59479450444e1952a18c0f47275041a2736cb3a7c1553ade11ae751066be0ca91477afd4deb530fbd144e229c734b1cd7040648c26c0382f715bf951aa9dfd5a6619dad93246b16d10cbaf370918f029f71c08c36056422b498e8cde3ed03db91392cc7b885b3e6d91ea726ec0006bd8371775c05ad8dc08703a996c574a00b5ce538fa05ca6b80c931ce23789ada345169f9654da1b3bab8b456c3a7894ac635d01a9d0efbfd37f22f2349f0d8fd15cbe443fa89925c3dd410a4f503708653ed542c4b07a339493c01ded0bbe5f92c949737075f8ed55c79f9e54ef3e987c8ec69aea349b94e18db15147395c7e82c1a9fe53036b505e20771505bd218851d8c457eb70554c100dbb5b1acad1a4f1c68b982dd9a37c24d206fcb10e89d541483ccf315480120dd21d2031c3f9510457e580933a3fe428b920d5bdf13d4406517ea8038a504253210f8fb3c80f20a94391f2a66b7e417ba782487a5ac2a0b08572c033572d539d3c5b852e395a0856de4c0098884d76ee80c32ab348e123a03003bece55ab8f21d74b41574327ced55854451b38f12e7b0a1b9d5aa4ccd95f4751e48d4ae2619ff976bb6240ac0bebfb21202d82cba4be354cb9388592267237e5906c0e5f2f5cf86f9daf730a1820797a130808464ef6cee4cabf672f935e11cc0d3c7d898de24c4e42e48edfffab2ef9acd8ec0cc51fd98c42cdc3ceadbad0b317c8e882ddca8614f22e15df7ca07ae6185e265d1fbe9742cc89c402fa10b37a296d684ac057109a71671fc7f235421d40d2820680981f17d05263553e8ba6f2b554537c71bd31485d10bd651c141d146386375b70319255738b1f1de3da9debcfd47da5ff947a2f1060f19485ed58be25b2e3bd0318560dd8b7dc4fdaf77024079a9349b98d663e17b1623540b47e67937e3243a8b86e608fb60941b32d20b4c4142a12f1a1172b48a663bc34137311145a0e9961802394e16a45c918fb1ccc7a1cf0cb2f9da9748612b2f5c04dddefacf9ec8253b1770a4e8d7cdf67e4e6d2baf7ff1de64bacc88aa960dca96a65c3c94ccff882013cf3587f8410d3ab516e9ad2076777fa6c5f39c07170182ee5b2c1c88211ec2f04d8fa765a50624546dad635ec47962d668797aa84a90cea6549bc6ff99befa9a33f3d701f1535a6834fd754a1c44e3fe2266eb28b9c827abb4d1f131c0244e647a674175b7734f4664a439cf466b45b6d351b8ea6e3bed676ecde204111f13689b9a18073a5a4e1c35a30042a8e83b621e3f721bf4e3d5588fcad547caaa8249b3ad5e6623695e985f587a1a4a1e67e245d3ea5b908d4b66cd5e481979734f2a803d9d7d20338db851c0832088cc146a352255f789c9bc6f8b21b579a2a1aa61d4f63da27df3f832e78ea866b27f561ff229c68aec99b7bb2b547b7c631b528f491832558c0d11436c090d349f511dc48af3debfad4bd5f8bcea10a0554447cda068749c1f48fd30aba0407ba90e6676c6fa8ff32a5a39e3fa41ee47b9bb56551c3fceb239fd78876789f5f708b938aa58eb4e378b3b1adeb0fa0f032cdace71f7dd9a872b0ee7ae6fedec0bf18510734c6e5adf3b1549a83ff8785da1ed4e34a47047f22920e10211d32b97cae9fc3803b0429d07a4ee6e73f4f121158b9541cd99c37c9acaa9d21692b79c3b52102f29dc3913670b3c6f82c753a22e292cda6c3968e27e93e9521d40509ed3e8f645f7cc17b870fb289dec03ef71847c26aa02f422d0f879adfcff343d77438bcff830e2b473fc14203f01ae8d728d28151f2820275e027425aab1192b9a532740dd60f88f4e2b2f51fdcbc86c1b2cae9c14dac982c1b4ad1a017634bb954a73ee9f7be3b655af5ae2d998568cb09dcdf785da1661c9efb188f23bef0cb784bc4ffe95992de20755493c3b8b7380184d66313b23791d9dfe635f354f93dd979cfedf08c6b551cd0bc8afb3ed476104c2702b816d4e586adf15f11f50865bb885237d7b33ce12cdb4a2fcb953696d5b15a56330c93a723a15f4160eb892d04a2a0a30bcb3cd99289c901dbed9da1d440f5d93a919627ce7e999ef48b340ae5b1b7bf55b6ac3273804f7dc50d41602ff49c3d9c95ea9f0b94766b672abcc621233d7cee13de8df03af7445eca459040b523109a234b670f15ad89c20b7a1a09238fa93c532ce13ba3094e0e44c766709b92353905323708484f2886411dce5f4a234d68c25eb749891b521ec89d07528256550ed185f19c44fc3ae0986a178589614336256f1f6e5635ca26824d333da9933054aa64a329d95cfc46f17c6a917c5e22b2bae65534e9356c0ebf7461d2ff5d286f8a7b19bf05bc4f6fe1c03dd2813a0f3bb7a55219e4cc7360a7a6b83a71e91b7fba14908cbcac018bbabdddcff2144618aa3ab7e3648c25119c946b7e9e57cb0e50b1facfd62804841545f26a869e87e49579466fb8c53c424e59eb6ae59ab96105be11fe11c2148f67519e006ee125c4bcecf8f8148061b8647cc79166afba5096ee1bae6f0b5b0232d8e5858542334e9f1e32888a95b0f867932693391bb728165215d3b63ed2c50b020dc8c1b0bed6c3248fb1293e1b0b424e0c08bf9cfa6c69c9d72de15445d8101e17f84bcf422bedbe56fd19b07abe26c3171489dd1342a61f4872d0c6a4cf9c560a9090e7c97529a1f1a0e68a9e62ac68b0ccabba30f45aa3050bdfc93a0b70e67b9c62abf00a1f8ff07cede9ce01a9caaeb276b3362769f71afd8d187d46d531a84e55376fd316ab945c6163b108d7737c40b69068c01f5a2a7d6f5c7a89d394961e02ba6155fffdf4849510b12144b34af142fdc3d01f29fe048b58c1d5835a908eb2df8f594dd3b478de11731788c3d632c5f115db309cb5b05d64205fce329cb53d0e9c67031487efeea7ab1b7201e3e8e76b6ff90b346acf79afae0c6e4cfc0eeda492dd5e7bf8523631159b2d7925803a7eeb643d4f21e28e418956aeb71a47b27aac72761a13b00c80ce48c8cd7c4bde54fe10c23ae9699a67dad2acdb0dde59bc780c965573f78dc9d8940dab215a56cf7d2ec3068503246d376bb972b463f097957c9720d5378110c8fae6098fac20e52708ea3dd73f45a17d6e00d8e59a8e5488bbfeca598bb4ea8a95e5f4451f0465a1d12809fc65ec690b3ce13e596e376eb346d4e543a31260667dca906cdb068935c3077904365e68d1aad9c4e6f702b87cd832b2aba1ad00574008d456b65231c3df676f1bd88bb5068f27ef1f28fb20cf28ca7041e4ce5c24ab5f51a928a5de7930fccb1f5309c4637ce7833d3cbc2652c684c6f9b874c19c3ea34c9c994e214a4eb13ebd4eb9ecdc9e9cde0309eb40385a9a7125a6638f0efa7349f680e80f4bdd32c8a40d4ed12d0db863f07c882d8897cbd74ff5706d5ce68a8851128e28f2ec038cd647b36f36069bb53bf1bba81901ed1f1bbc7143b03ba56878f02e15bb99cb0f66dc36e96371579bd31a480e782dd77ddc1ac194e1cc307fa45bc13951a743320c14a60046beb0382852312acb4b61fb0528d14bca1f1f122560afcdcc3caead7c9cba888c95886cd9b9b452569dadb9974c1f708540d0443c0dd32d1f23c0b75bebed11f1e0067081c0c0df56d60c76c848d5c2863f57e9a103611310dbc7b01de6aea081185b58354422b8640373c13377c54e7a3c6ebc0d00e83d828316c1b71849b5593ccff99fe8d67b27c4bd44b6269ba78347a64316ef2e66b478817eafaf016e290b1be59a8efdae99601367d4795d3f26109c62d0d81249c73722d754946a71539815a7129985c84d093b9b1291f9d64328e4ce4a1ef360a4f620d83fbc29447401aa5e28c9dee0ab05144888132974c3a5d097751ad35dcd550a71c279e667683f92247141d124b7b15789ceded78dac93991bb2faa636a1f0353c617815e0412a8a319dc62a9e50862a0b05433ba2375b0c95e8c2bddad3d7f9a928e1c587954fff913142a7251b9ad819f13946c38188c9d0070e6ed31b827887c5889bfbabe10fbccc5fabfa6c2504387860cc34d9a7892834cbd6399234c8ffa093aef278ae7c7d15134ca88deb92f33495380199a8e26698be084e2a89180c5efb9b268c0917ef74ee189f770b400a8ca9622a94224f2f5f6b5410bdc06e29e72ecb43d8bf4bddfd81579a511329034ab9fc17f037fa4b324c3cff945b0635a9aa37b16baf9843cd312a255e71304338ba156cafadb101d06a9bcdee7a452f1c17752f454c86a53c36af40921b678a6569aba174161b05a13fe00581a0ac1f84e9fed4400d02d9a79ef53b013506aa5e95ab8f0437f47b595c2872d833795ca5c8cde04e50bb3ea33ec134c58a417d5382e330a0edc1e246b8d0121f4d94ff1a38574a6c9fee446e3b9d2773266ed4a751ffa071ced191d03d994d5bec28f56f9f642cd95d669527a297e2e562da69d6a4a694bb36053ee76dee28353ee6c0692f552d1d45920a133d9158f46a88d363c119fc998f804bd159f28179f2e87d6180d549c8d4f34ebf8f4c15eba0f4ddd9f853954be5a9739259fe0934f0c5643428ef7ad7c9e0643dad1bf7ca6a045fafc125d9117f6d9c092e3d28679fd1dcf202c84b68ba555a4b1058885610600d01fae99f7b819b386b1b13a4cdd9dcb4277a6b73bd05b1197db777d2ed316ba19afc71dbc56b037035e827b3b6ea51a844deb4bdf4ed0d09d41904e61fd1a8f05b2f7b5cf3fa9882667eaa85d1cf06a05211008f1c0d055519d2e644423fde27c2e1e5aa78c452ad388b7b3b64b143837fdd61947dec77dd4c3280190984c4fd435a50fc4977765909dcf064dcbd85a02e85bcbf4acefc838486ccb30676f61347e5f9e44a3dee26b51e5e4ad8437b399780bcee02a53a5398ddbab71e02c648e88088246c4a02b1a8d53ebec2d9d70ef0d9b5c3663b9e86630d193ee5462cb0758e66ca3b46a8f7cd025068434caaa286f864bfdebf88816f2380b9f0c92d3023ea4d34d46bd39f843bb42ba85013ee6019ea8b767b2c0f3e922038161689edc0d223631fe54a4a2ce1641395f5c88c9edd2bd0d31c5edd0e33301ee9d218eeceb1fbd96803ad0a94e19f6533e509e710586bfd32db132331af217267d5723aa61a1d4d629dc64cd98ead2ed49fc64d8f29da7118f5a2f32b114affa65a95a2650517d1d38a65b1013f731cae484717fa8f953988f0fab2d2912190bc397f16643db821595cad3f435e98e9e1ce4b31c5383e5222d682694005a9cc6f3dd3941cd62d988a20a3acd931f51e15966112f9df4ac61c3a57dede45c98a244a97ebdfd4de9eebdd8a5b9390765debf5803357cc00f6fc1cb1d5064c79080408fee511f07263e9076f6c21ec7c957bfc31c70a97fcf2326e2d04b8c7d2016aabcbddcf85bb7091ee48c235d7683dde73dde54b90dab3faf78a972b76c7cdef1a4cbdbb2f57dc1492d67cb56fae7fe8c0a2d18fa7b7069ff9d27f47d7bdcd0b6a1baaf43f5688d5242c8e4efcc1600500cd8e8ddb5dec750c453b11e02048a540ef2b616b55ea41f905237db743a5ad053b4cef1ac087de77f7109ff373ad383eecace912da004bd0ef621593a72e79982f2c0bc09658ea15a60e05be5b6261a9ac61d0c1b33384ea1e9cfe01d961ab9e75339c72b96a321a703780184e98ac1639c7cf7a8b41c7976cc13ecb0a1a437b0506865f39d928028f0a60299be50791663c1bde11c081c481ee18359306f63d111c6dffdcf269f450ffa30f0c154c69fa1ae8b9e85d02f603dfadd17ae16ab16c4dd5a6684ea59485506bcc324d0ccd4e301ab5e5a98253060bae231584a67de363de61403cc56c6ead6f8ae59381ce9fac4ede882d200dc091f3d13747a6569343c82ca19e10ee99e1b86d23b16209cecd9a5c38177669a24779121b5ad6b017f2f7d7106e0397b6b97de2e291330529cf116416c3881160c752ea091eae8048a71b2b975616f9cc68123f4d604e121b31d142814f7bbceaa004a7d6c09b435ab52ed666d829da5c47ec6d377d735f39a4669c4f199c18aafa832282c5a510e6c5c0f05f05d8dbf7ab414009214888251fe300e63fbf5dc783f334ab8c4619c991fc03a9e52286535e0b63245a353bca890457f837e981bd0138c33d7e2568bc42cca9db2058829a4021327b27bcc0af30c9707873d42a639b9ff82e53afc99f8e7cf79a36336bceff81480f42473a73ff77e2388b5d747babf737dbdc92aef600bcd585adc3c677e9dc9af68993efac833148686b522cdead54e7580b5a3e95e58c65dbc330b5ead7376866843cfa6ced671f86199da7c66c541dd49df47ac2e2fe066a9be6e2aa0a749e561f050976c5513b8560484d10a862e63a9a6fb417c09250f4a5a2c130f2a8a6104b039deb7e316a5b2b734954a7e70037858b5b8c2c69fbd796a96d9ec3c59f06749f1e1f070ba1ba504df29f2dd591b2e787256e8ebbd7fa462337aa100ba9a9b80f6e8039e1715fc95336804437f56776ca5d963758d07b699504e90db262e1227a9a99e92be9f13bd9784b73f802129cd6370ca7c1623e1d80656d6368276dbd72671033905031ec6b66f73d870e163a95ff89824750f5a2fd0b416625d04e5b21afb20279fe576cd3c5819115d7e8c497de0b6fbc923080d0914954b241f1142a72db60014859675b0d6cd861a9b543c203c0de93aabb9a2a891b58ccb7b6cb072837b4afc04db844b59fbb22f92f2a68ac1c8a316cecdb86ebf696d6324b693d017a169bbf557e0af51c49789cd1cff1187e50e7ea25c01a47b158b8d18c83347063864a66fa6d0e290dc4c5bce2ee96610fd32fc0a160c92cd7005d26680c955800da61d1f953a25c89f59b4a4fc99ed590aeb5420f5d07c87d3108f79c3d3b0845ca0810a26faee94258c1c3a235c5c548833680efebc4f64399b74e273fda40551ec31161d2f6efac947fa68bfc87c73e49afbeaf763d2d24dd2f3ee13e8f2e7ddad835494637f8c3a8fd9ece6c8de8d9516fb266572ed499a8fadd964eba4fa636370cb66d353a6129c28b71ee5f919ece2a153e45d6b3bf4b768067f610493c31860342c4e43465c1a84bc176e153febe34c9a3d0c2b8328c286317a411763028591d12de5bf704dbd3f98a56090f5144930096051b7d5cba20f65ed4e2e7805b65c58a999421976092f48904eb4a69737201608bdaa6a6e0a6f79050a21b8c846ebe72a7e1eea103103d60923d5d995c8a65638876cf216ad3f4fb651aa84ab2a16e32e5ec9c7e495c64a3dc16f410083a7a93f56a669ac3510431b6e1e9763f76a6365269982a70916d215763175338d2e9d588e22b61bc592d6ca3c1bfd5c46103992dc324fd3b45ea19b6a76b4ad9cfb1eeb25f0a84cc6f35e2be0d5440c0b6e10feffe365dc30713b40cf4a4e3224040b2343e92637034e63563e11d7cc3237718f1f1fecb1921d1bb8f92e23a88e50ed48f56c78b1246a00d1705295ee00c2c103730929a7e5508c9e33275bc54194725a9e70ac8df0fca1d21e518eb4c94b104cc075c76c0568e2f7eb8aaf63b20d650a871323cb00122e2e3c99e3c2f8405a68940a586a38540c448a6f28e5102ad22e9c7c3ffda12d50cf4fe8c8f3622206b12508166dc0ea97483107fa018b0144b812eec6f2fba1cdfe3e560277783b9cb4e9caa8ed41954e6eb2099c88cf48ef58503e991b71b9169b5f9a2e99da16171e02477e821373b926861f5a5d99da1e173e027f6e921bf19936965f1b5dd9ca16233e02977c821b73793d86dfb55dd9ca162f8cdb300d25398f9b672665a4fde750fe081208b2078883c820ad6666706a85f13750f0743819c6a3429dc3ab8d83816600f8963230811460d877e2cc5ac3e865e439b4629fd40d4c0150709ea63b40491904129283ecf52f77f3f917778161ba2e2025352840491904329283f4b56f78c700c10a834169f152cb6e5c40499ee25196ba89fc95f62f9c5eabb3469953500cab25032b78bb95eaee6a695d4d9a53d106b4255484c77be54e5b2023387a1b97c0291ce42bfc5aa1a6056e730744634b19bd40c94058f74fa30156da880f83739e6cb16088694602b31cd8974a76a732b798fee0f7971cf306603131a0b18c01eb77f0aaddf8086223f7b10d14f0633c03c7a15bd0c7e9fb9c46aa16def22cb0b4ce91bd096ef1bd653a187809a8cf5bfd86e3861c0e3d4f1c3bde3c9a086b3b326d09256432b3ef60bc9388b99396585ea72d40137c9db47a6fb6b3af6bda5c2d636526ae5f1757ff2d7c92df2f959e3625ae3bdb3ae341775d1e8015aa4b0d6373275daa3c9808f2c078734ca8434fbc30b6067b185c305f21966247fd058eb46cd5744baa18cbe1496eeffe24d076fc645c71a3638810f70a3abedf1eacd7db19508b0983853c6cc814d7f8bce0fdc1a7c384f3c1f0ccd8c31266a333ff081a4843c42f41de0445270605c04b5c791edc6694c68428bb92a2bc3e9751b957ccb81f285c8a718cf3d7c5345495cf79fac4cabf590469b5282627d3a73100d68d7945457161f02e9300257d46ff2c0f483f3a7f5322977cf6cf4ee7356f6444e619cfc924e6effc43708566492e1ec3ae1e08ba74a591806ec985b58f58ef61c18c2bf5c7d44b88798043133117f111e14e20706fab3b98cc1bbdccf124e89a34c674d994cc3a079423b6432b6f58d1162547db415b442081de8f4c82bbdfbce9bdf9162e2368b5d5d366fb70de2347eaf026344dbf99377cae641a33922dc9e20517f0c2543cb379c3bb85e29807d19a570abf72f471179fab4d70db119698fac76d13a61b64ae1823bd968e1def857bb9f3ea057d302d383812095121d1c50f261070282fa0b9d57292beab560ce255fda9bf54387d0ef14cdbc6305d84113f0eaa02bfcd4df071b02ecf373801d61cb81d80b92168c7c1ce941732865b6d1b7c9b6c57b8d271e6da8c2de7bb130a7532ac1a0216a8b1230846d6de92416a8bb4064cd6b6837b931b80300f86901380e040a2e519765efc49e3b081b46ec0643764ab7463fa872bc21c74451663b38a41b8a2bb1d27265fe6edc9b9b4a8da0784ef009868b1a1b8dc54cf68722b715f5b46a5b215b0b20177acbc158edc86cb796e7aa980f30b9404bc6055ad9285a6299c1349ca74228caa3727463cb996c441fa2c5f9366045b2f38d8d8ba2cc8e5602088b388a8ac0dca18a6cf96859f68cc26f5892ec0e892ca395825008692a4142981cc08246c5274cbcc80720bed36a41eb8e63ab92e2c22f8167e8945faca823eb14856b03a586e4c194a29436a70fc2a3d64046eee3c5ac493ce983a2b6fdc69419098ad5a641b5aea7a095dbf97f79254e4bdd65280130861b6df90f39a880467583310cfe3330eff3f40cfe5ace65d0ea8fd425b2008e340a4d49a2fb902d5f4e5b4ee73b262f7c980e44b61671b186006a0bdcfaa3dc41db1230a37438f4b60c9a7c4d1d97d56fdb12a79c99e04c3e72ba96a7c53321a8c722385ecbb2e51398d52e2918b20052db0b04f288a917645da8f888f46b6a54539fa5a7cd7216afa4585ffa992e3553dda506e4cbea83906ac0c9ab852fda9957629423abddda7d8bba8e9a0cd4a71ffcb27a1dc0353ac7a8fb01489064303d85ec7ecfc2940e93704c8f760979347ea3e9468fc585c4549057d660e81547621bd4f2421ac31398bd62be76d9d6a081b1dc22e0822af60f70a4fba9ce1165d5dd705bb4e1b4adce4b2d76e7e25d3f249ebf44687dd153ecdbfc469351709f9ce7d8425c97777b25d1eef7406a93a413366433704122d794e13c485175f502f8447d2d454ef1c2f3a2937094e163ba083b18b332919d9e8eb61f173a4db0f247dbfc10ed47c1020c8d78d6fc18345df7e71c88a93ae7a9545ae61d185138d91e0cebd74998228a160c99931dcb286c3d307706a0410e2db6928d2ab38bdf962a8f5f7197a2005900b6790f51cad646dbbfd45cc4b21d126bc0ce73ad972887b565205a595b0a3f7a65ec1140690303b41ba647db5a353171562515c493bdf7dc313d38bb72db83180897a66f0bf14891d74155c03c981e2c6a4cfefeb19011aa2e52427b7e0cadd52e206ff33c30772754124770dd2be79532a450e28f4e1a4f667dd6dcc700e6b8d5b3edf3a9b521008fe25ced69dc304440e49ae3774cc898c65c5c189b6e11095ac7764ba938f6ae6340f7b2cf3c99e7fbbdb7caad4956d34a3bfc6e2bf223f37e94da5aeaa75d5fc068a81561dca4b5d3a5089452ffe0bb80ed5f139894026d764444bbc2dc3396f063cd31daeaceb46ae2f80a686270809068d218ca311538c1890e0a1dcb10b6003526d1d292c85f2d4aa3dd8170c23990722043898fdacc1737b59731487378f68ebfc4f8aa78bb008bc0b3ea4a3f43a4b19d8e472bb8554d19a02340c1cb54d245b405a67f60bcdd44d8f88f2e8082833ae74743018a40dd1b013e9787cd18c33a3a759936cf77b1322fc2a997f41e7c30f010ad4d5d136cc166659e3402850216c5471c65730e96081e5b08d4712e505884922e9609d7b65b6c11cf984e51800edf0e7cb19412338dc80d211cbd87e1d271d429c0053594c3ae25631900db0f59d6412c4a8bc63f1e297fe6ea045614b308cb1c44c3a949345549c276056213860938990002e9008dd5e19edccd6a857875da94f808834887c6ef6cb011dbcab16b2c58c3f1d873ffbb4cb408c042a5d384b4fc86b5ccc1b5b86fd3e04bb2c8fd634820d8460ea713eab46d7a7547012b1a5d29f16a37233e5a9b424d92b95744efc2470f2e9899dcae0409473d92ca0b72e5d8c06d9654d0a3bae2dd5b9eca67a64065b8a00fc88bdfabae3a18201d9a4a023d6a30c0b131c78547b6bedc6da453fadb3cc158255ac44b5761d99e3e7f154b9d9d47158881b0595e5d93c354f7a2871a05229c16a43636862368270361c88b4ea5e7f8e1ed08fd272c013404ee9c4d603ec1d69d6598f1d6955c34490662604a65c67c1e423d71981681d6c56d56f0141733adb6b16fe37be34aaeadb311a169d01dcc5485f2b850fc1eceaec9b369aef86c0fa8a5d097cbf8c4ff9b46bf7bec00a48a077ab232de5cf3a633ca76c2dec752a39621adc39f5ccd406797e94e32d2af972bf936040f44f83af3d42df12e55d03a8e88b8e2df66dd10acc2c2988e056528bcaaa782ec4ca5c38ca81b05eef2e354d83d567650e175fd914c04845bef5dfc61182923130ec1ccbea4bffbe3a582b13ddcc2a21b0db80b3c94bbf42391be13250a0cb2ef82fb711e2fb956736cb59de1d304206e8e992cf3174bf7cdc2d5b0e6c54740991180a68cec0755c57fb527319a5bb7cd8d8e65ae30ee5e077f557922efef5a3e5571baf21492102759d0c0c35c6d270171206327846600432810a5f8f1cd8d3e5fb4077708336faf23f15dbb211b23a461ca6558c7288b82ba671b379ce709d2cce3fd1c235409668879f006800931ab1061fda6ff892b90900432fdb4316e0abfbdbabad84453a8340a63b1dae6618dcc123189e2a2b026de9cdad747e26ba83291c859a15235747468b4dc839b8864d2473732adceb74fba66723238150f4ce68b38ffb8d03f1b9285f985263dd83571a445a702f38575c25c8399e0dae1afa50d62ffe91992925f3f1a4d0d30bd9de09a40366d428c1eb3aeb6ccff7257ada57763562248e999bbe0e4484caf096778bb0efc88211be11fad08c7eb57af5a8c8c35ee508e733ce5f99c69db212aa5bb50ab557fac50f11bd5193fa61029d2f73a4643a1af6a4c6d9d9aad6a1e4475dd94081f708994e6393a6cc52547cb60dee41e40f950eaf77e946cc7102c5a5b061a41d6704bce3e63c95e4d52ee04858d6ee54e06f8604a432a8758ff52c03ebb48fd8929070a7e850ef8a239bb2c2b6a6db23a1edc84159f16bf1b83f1dbc75ceac0a14f1ae4511d7359c39e97989b8069f78a0d6c41cb9fd4dd836a9df0ed38994e821dfb7276aec403aa30dc071bcf70b50739d49f80bd2ebe0186aca4ac0248f904d7af6af96453ad10b64c38814e492b5d5dace5390e000cf16577a48e3333ad64d57f5eb39ae4661a087c68ebbf199eac0f09354994143d575224cd68962435c062597b9dc0b2c19cc85229a938b92908ae0ff7d44b535a704ed65fc2ffdc3dbcabde6d1fe006df8065df84bf4eb808065501e735f1e0e55435bf7e5c6219d9bde9937667b41d02e74c6fa6cb48421adc8d91b8b887f342b95dfec9fc2a76765205cc5bfb966e50f46a3b25da23160a7b823781199f2949566b24893fcd0728deece5a1817c45ce1b7239ff9fe2ab5cbfac48eaf759106d17bc3e73fe75769ac33d53907853a1fcc1ba206723c3dab34ce54e9adf461ccaf0c3db30f476f725b20f9d05cf7ff91f4906e7946bd595204e0eaebbd58dfac7425bd61b14752123b5ade98596247ef2fc6ee2e950f5264168521f8d4b0579194aa8d83fcc1e741a3f670e53a939ef1446362e2028438943ba2d4e11f25c94314fdd69baa0f2e0dad49a772d28f7430173c10f8cf901136a5dd0b9ed887f1cf245d55f4bd27e85b1ce91684933cebaf7b22a59af5a759c5d8008766c6231da7cdb30b90bba2ed7d2a2a9967b14d291040d797bf3fb4c62c03fbcfca61e8f037dc99e74827590daf0df48c2ca9c4e67f5a59f3f319ee8ae818c8738fc3af456d6b2bd6d258fd4c4a555133009f6eba87a58a48cceca175cba8bba9b8914ea3d8cae89b00b33c89c751125773737a8b713fd6a71ac867dc4bf4dccd78d75ac999507b5319fee255644ac99b0ef2f6fb13d58ce5fe1d9efaa9da4f4c635358b92424c6c33db0c5cc201ab058c3212501ea0b5b4ee18a8505f68d2caa2c09bc1195239f8fe61bc10940de965893aff34e3a7a0c48921783856e1b28c1b9f8fe9cf5c534a5b88defe87ce2c37fec7bc3e12277c4bd60ed9156e37e8f0775d1e569b123a1e5f3636d7ab2f0ef1a3189eb4de2992f043a0afb2b802a2bd63343a052c79673cb13a4039871ca96d6b43da7f2996b34f358c3391d348762228f3700cecfe5fb53b46355c760094dd96c42e0980e3b67b9b740711b5342834e3ac58d0171d64bda4dd43bcdda71d3f1a23cd776c3d39989bd96f22c65fc0baa51c110aaad316a79ee20da8e0458f63592147b824e54ea3351de0cb5a69b5fdec09967546ed872e87b4336fa51b4c6a90e1da4fe645ea31e4340116512e4c4048dd5e3a86b530ed7a5e91273cc940f730d119043cdfacf23dd0212b5775bcefc892bd3d836b64ec6987f9255cd75dd139c1ff7716c9cee60c1707e39e8ef07f5012cebcd8523c851b5055e9700d10f0354a4286788a629f7c775a66935760652d9007507995003c6b95ce3fcaf5ac952d4b633d2230ffa66401ae6865166f43e611eaedc915b3d705b43689ba6122473fbe7dbd485b9510c327fd124dd00ca62b92c17adb28a8da10257e4aa6226fce1b5443de0885dc652320ada13e0f78d35abb7a5735ce61b9520cc3c84ea49208187a42af6bfbd0be67a0c2b050d88e6a85868d6386a1bd4712c126a1581f4486c7d7b7ecf55eb80ac6164f2e9741ed11d346653c916fc38dfc476a2eb2eb2f1cba5ba4e49bd3502b5cb1375a436a6e7879aa1d043d4535d2855c6c42c16235ce40be2ea8ef9a713b012740bee8aea8eaaeeb9fadb5b3dba8d672b125c77249dc82937fb9dd90642dc3fa363a952b9b5eb5e5bb795a283255d021c008eda2cb39afc1199fb1c65444f23fb1ee5caf4338fb081a655f60ba3756c258199f34613b3cc80cefebffdeb08f49bec61d918c731acf61817aaec494cedd03613369a2efa579b9e73b43eabea846dbd6e072f16a34987e22fcae3455e7f0445fb1e37351bbe60adec3e6c566867c84b59ee877ce466362a95d48ddd0b0aedb29c8b2ffbd4bba96e042e9ca86457ab631cc72fa66c333559ebd930b31477c07e000199dcf3e45ce14b0b3d697dad17ba8ace41dfda2655b3f88500c7c4d60a973837ac9dcae406b6148dd34ff73570ec488aab5a2c577f4603242839fe45f9cd1a361774dc484621b9b572537adf344075894b3e8f52c83097946b7882cc52f22b8664e0ec1985fcb52c66c97b50a0fa6faeb2d02f3c876e85845134022b75f11865081520f39e05ea0797cfbe40512f2a7e04f9c9b02cec2a5e3642b7bac78c0c4cdba8af050c852045c259a61e6da3f97827a553abd25af66c2d5ddf9702429f2998cbb81a56a4dec2ab2eda538f429c8f2fc721eb9ed19bdab8c17c083ca6174014db6fcb2c07d116962c48c266225bafa11f18d34785a505f7cd5900f772f758c4be932ddba7e36e136c41e7d775f0a708af37f97c9b2cd647306d8ba31ad7e7dc836bf2b2bdc6058c44ab905dab0c84f1eb3808a6fe9e88d9ed2edc221b4341a20d8bdc96b5907530a3e180339ea33cc5ecc4d15c90239003ede24a622921f0d905935651ef195a210a2424397ff290d4b5bc45b3ac084ab389b7a9b9dfb56b039907e03435c4ecb23601968a87482a695c5ac9c53c6e69e284a7e7460d71316831b191c562937a8a11ca9604625eae4386d3dea909eb90f0ba61ade22018ec0b418a24caf3ccf8a90d73d4537d3e2fcc0829e34d60094798cfef49392fe8edef3d76a9178223fb9d4aecd5ddefec9258f1d262fe2e5747df3c1e47f1cd94d5c9378e6040166a3d632c4f545985bcfd8a05d4ba2f58de3d591caa9916c5c14e3ef4881f7ceb67c9a0b33fe416476840f059ab5fa82237960104565a937131b8acdb211294a46ee0e4cf54e5cd66579539932876f417babe310e0d054097246e981bae0fe465b3144a20ab8375e8935aef1a6e071ee161ebec9bc7c42107f040dc67271466e9accfc486b5c8a3f43c4c65e86b5d998be8ff04451ff5bc9321d00d5116a12a03deb96a553293bf3c55cf96d8fe3197e48284f71cf1776a23179e295b5d7345b9942fdd491b9f86582fc0d002509f2617722f3c77cf32c25a351b61aa2ab9c6d7826d91119865bace1c3189e196cd001985f3cdc05dfba3d9a9c548b9ba14d11da564f66d83825745f1993bb52f7b74c250998f1e618303bfb26ad7530347e8dc6121e5f1dc18423e700612676cc35d920e1d53c91b4785d055b2161a9e9226e617126599a206d8166298c78f44ee1f2365563c496a10e521be2b4f2735f06489a79d3311cad04b8d64c607c6f4d0df270ce0e0d7c4251ab13dbeac5894c8c0ba8914588c341b61efb630b08fd584e0bd1df85d5adfc69e4da144a0b01f015a51de269b66c2d0d7f25a55d2cb4a949e7d2a1f898343b7391c8ad1a58c500fe2da5e53b6d1fd5d51dc7b42c220f6c5aed43ce8e04e16096d90589e1ad5f3169d34fb6030f97089c3149aba1bb8534614a5c84d98dd86cc6bcc7109cd717d8e8735e736f0a312ed2b49affe8694fdddcebc9deb12244daebe3c22a6a8d7bee091be0a8df3f8d7d3e275cd4ab30f6499f3054d6faff237a972945b7849d476913f42b664d810297e26f8b71e30f817fbd8fbd01370a262ce4f6a942c42ea1d0131a8bb2da1c796253ba907992115671948b16dca45cec3dd73a4a8865569dbb4872288292249f00829614142286ee6ce3c87d6640c8091a39eca1625d0cc3b4881b9b0f5b432e7465b47110d714042b457062328ff6808ee8c5875207f0cb05c3b96167c242da2682f3cff8ec99846c719f379436c828f79d9c1e084d81e959fa834c3c036c3f96714986c7a04c969aa5594207d82a577b1e30be4224b4775908f441b278616b236cf3eedd4f4aed98e92e1cbc6c017a2c87080cb53a76d01f9d943d5c9ee69286d04b10337550231b0e080007a1bf53c00f03dc97e4227898514d7468fec936c07dfac131af1c22f23d194aa92f8a49074ba9639922b399058d42bd061b43ca83dd606a11b5e98bb6e454b08a9488dc01302fb09b23f2c600c7e05ce971e4a3b2379d1c3da4a30acc6ded0e5742aeb463ab46239a49069f5c93174937395a51060f6bea272b45de6a2986f566e0478a1e03d04848118160e32d8358ca06abe9325cc87324a7dadba10fd8b8fc81561ccb58da59b017b70f1434a3d25743fd04e1fc1fc2428d7335cd625ec558bf6b99dd555c1416a164210c8f0b1be9ec120e04809d1e503daa505027415ed8aee8bdea3f3503a6a2280b5fa19f54d3e70b4ce12dff9de6eef47a4889bdf6e0ed0daa78439ee756260c8e9abe5f455bb6120b15ba19c64f53078c5d5394f10e40e9e39136e6cdcd4342c87ff285386dc144edb080b43c1adf7b685bd63d7da9b338a5432e76dfeb816320e3640704f5742b0ac3c79a23d94e68aab54270449d48d17fb941f844ba20146eedbaced7a989a87c3053a9e0a58262c92e91f63248c0587fc48cddb8230f6ac928dc13a3ffbe8f930677b2509f6828a16f449b1512ff02f992695a54c1743c178af565430fcf37b701ce2788921d5657fe945c5f716d503d516510db6ff6f964dbf16d088b8200e172297d02ca279d1bd3ee85a04863230c550f6f528b4da29d2e12534f1e585cfcc1d82c93c630452c3307c429a121598cd274b6dc0f00ec686bc04e25e462c0d8904351631a4bbee2482d2721830daad8861fd72b4947554802265146165490d3d1da5087c43ceca58d4cd42f73d90149f3e884425c85cd10cc472236e9a52c9f1938dc1da54122bb407d5938e58ddfb71584fe2028802c551b7afe3c2efeba4ef313fd0d877e7d03905a9ff35baa604bd6256ea86371ed0fecdc6bcb089d89ca95ac444325e04e6516954edfa988162d114c7dee50035c4cc9771076ae2d52a846cce894a42863aee3411470240b947735446a7fab09bbfeeee574576534b15a7445eab40b324702fbe3743145d602caf4a490a143969e4a212ded674ff11aaf0208c89d103059798327a2f22e8708c6021432ae5ac8823b1ac1650752bd04ff916d63017638970eff9a847e266553eecffbb581fca2911356ab69f76095ef6ff410b3e4c4f0089a1e9a1e904fb9554e9fc7b49c5bb8628d8faca2c35ded6be9d784c5c9ecb3b5bacca684e819cb682d5e5aa7dfee8044a25b87b57879ec6aa363329eb9befa7e5bba779047c79ed8e28f8cb3440da329c5da923be342e9c48f99da92484086508e358622fa3884001e03b9def89c5f37dd97e7bf6bea338cc4ecff765d2303adea3f59fe003f55c994df484168d80e2af3457aa8a3a181aa48f20d691e13d0d4704f2f2891e693ae4b5d2ba3579058c1c751b34ea06cbb3a201486b6fb87193dbdbe31af5d63401ee09745a5177221d0bc85b1be72cd110a2db2b31e1d48878164bc451b23804e1de6897f56b2a1ef5370a1dc7693d5d63c2e909ddb30c7f44d5c4b824deb4249497872a2e109a285e80b33389e334c0fe2d555e4edd32d830941c48cfdcb939132584cc440de687216b6ec51acc3b5b323c1e4f2d8119e9764187b81dc0d7124ceb2168ee67209fdc0cc4252d3ead84e1847dfb030ad8a72f7ae2b01b35b120c56cf0d912acc455120b323ce3c2190de9ffc31e78811aa1a8ab1832e5ec9f1bf4ed00ef0a27cb210eeb2be193df71dcc8489540b6832c8d6cf436ead0e3de0d5868ec5e0fb1730e6abcdf329a71be45f602e776838ae301f075af2dfb5699d4eb98779d8c8701eb1b95f2bede358915dae2f7c7c2773d9e858c69ebdda488a38e59bd6118bffe2f51451d37d974f2a4205001951784381b0ca281582f1bc438f0104673d5a73958d5ea345cced6072b5ae7d999b7604228b95a04ca0be1c2d0cc7c9d80334ee6ffa82760a3fb7564b0019d48ebc62029c19da032ea27e9ef0069bcfb3e8f4f8167eee00579d1e8a1fc640b4a9c4228fa05bb164d4f7e3ad0300b9cdc7007b00d93865d91999845dd73737b75070aa8decf6733b30f140fabdcd597e83e856bde81ebc97b73f8689d88d98bb6c37c89d544ada8d66aea9af9307776f819f06b51c0100e5fc34ef21f5268d7b4ecf183cde8ad24b5ec91f437e0b22f93273d06bc0d639485e3dc8e3ec202c79ee11296292eb39b5254a0ee26aab4060f80d38470f915cea014173648f86553b972ad0525206ae117391f89cb7a1a2127088503a7808fa9bf5b8ef33d08bdd45530f03c0ea29dcd091416b70120d736b7949ff03c11a549ba72e2f258aa3e02b603028b7ff997ecde832164a496d4d8252ac6247d7ec4964cc1ea2857aec72fdfd1f73d7ab34be3036b78f8f5d1461e1f9ada3e89b0fbca87056cb82301adb87239587103001d0e327614cf422597053ba92d076b158c7d80c16a132c15b00f3521cf07bd4967e3b672dc81bae1fbe07b2c0773872d70fdee3cc86f8b3b8551d7aa866181a5334c47b221e2336a3462b4b05ba0cdbed0e7fe539307b0359555a6203d3880dad3c0cfd0bea024cb190b22be1ed7594bbaa90102291537399b1c0aa24db8cae75f635f7ebf3ab2557e4059fd97aa51461ce17a0a23b2c72fe37b9f491f33ad1b82c00c7de1e50ab0cc7fc2e17c572e19a80c9ec492fe564c30f5bbe5190f9963945cca0425a0135a30b3cba6549d6b9d878aafc130a38490d42714913fe87030903c811d46a6e251a0ce36da72e03590067e5f4127960c6e56714ae755a1009f8721c9671f4dded49f236a97081a30f8b36db6fe47fd4dc72b15b1207919e46436ece615150924d82891b4f5b315c6cb6b964c89b598421e6aaad03bf23dc152959137ca2eb4bb1484dbdf4fe1a91a3ab9b5b2f2cadec65ee018e373c519ce53ac1a48d7d070291457ffaa6c2dfa2394a7d78741ce7e26adf5e727bd9430eecb1b8ec2750c9620706db72f484c7efa970180ee6baf112261900a16654461a1644aad9130ca4e48497d8d0b7b90d38619a35bc40f348bba31e0bc6ba57ba960b70a2ac84e2c727020397df708f7e3fb98c5d12965045d262735c537714990895c73203e054e9e47d4e65ef2728898f84851ad217eb5add47fc44bf4cdd857c1268b279392f3049151bc5e3b8545c243030147293b4759d04b2809b5eaa319c5d8247b4771fdaa018154c2eedaa300a358ae1b727d4637e6adc463c943083d5ac96c8b26e978c055462bd3402c0a18bb4a708dd08a2b77c8b3ce6a08362431b437d67943039c639cb8a8afd306ddac74c2c1005ad3e988aa4ab34e4e07adad568f0db16169d7b35261f184554ee15616fc5a79d6811dbdbea80bcabf25c0ca7d975a4b634429f445434f6cc598288e2e59767e8de4cd450ffee6a4f9af8f1daa2430757d2d2ef7d233caaee0435601efb844be59e53d765f0cf7c434912f40def84e52682db40a95252a80d6582eadc461e1189c2302b8e93858fcf7759905ef7829ba2c90028238a9257da3ca82a3773194ba41a19ebe8705df43d24ed042836ba837c64546a1d1c437238cee6a7b9f2b2ab63dc6ecc3a080572622c33d96d1a43f6984b27e27f04e71fa0ac47ca853d615d8cb0d4f088f9a207146a1c0100953ec7d8aa7681aee18f030dea227a06ebdc61e2ee66246476beda482fef0bdc851892fa670e9b92cc181d0f99c96507933b7e427b46aa0b79550dd8964533a67a86c9ed0e426716a8d2d3a65e3ed62835596cee7bf1313dd88c0d9f6194d28ed829665c1c56aa5a1e55674c1330e00fc2923670ef106a9e6299b45f3f5d3bbf7bc28eac39f79c6e6e602a5e248fb66241ee2cf55b224b3d49bc01f50e690b2c232e5b15dca76dc11595b421c3449e9502e50152647d0bfac762aa13ab34f7cb0d78a9439f3482b05d56e57b200369c2029e8587301cf9f274cd8af39f869c19067f46835b3db63e4e2e2b81ea40eb749ff7dfad7a9e372d55d6d4e0d0195bbf4ae4236e035927c9fb92c6f23b742da6f815649b594169331136ac437beb34e9bcb56e1408cf2041143b9d7d972b92b4b3d04d12fcc982ed3f0ed931ea310c2d7ede085e9cff3a7c72b3e6588e6d823d4bbe05a6904775c14c8ccc106008e26450cdce8dc76db2d408111657dd1f9ae9c4d5ed51b7f1f87444ab232449c3a86ee7a2332ba058709a2b873a320b786dac7e6030b0dc7f273332e240ba7dbda5db8f6ac5a0493c00ea7b7c39d95afa25420ffb2518be5252629197262d57c9a3725b6ed0e533ee4fc10254ee8daaf60908c7b834cc07f6f26641dc1f977080457c834aee7aa973ffdc81484646a9ac4f0cffc30b74e72839dd6671ed86d9290be3ee87405307814d253533223632cfecd0b419d754a2fcdb7b0c596415271e7cd0ab5cd561d23d47615b75ea1a16b36e2f242ed79cdf91c036aa0bd44007cdf00f7683559204a3237f6f3bef5d3e7780919069044435afab0b5c990d49c4bea61e8558a3897953c6451a63a1aa8fdbd821b3bf49dfc0b04c992e1464cdf5f675b0628b58063fefc6c8c6fcd31ea48cccab5b6e185bab7f5bb6854cce5445923f964c3e9f55c10599969bee4a1e2fbae97ec081af902f8d565f553872c0a8dc07e775312315492508b756298a93a63334016c8ab06d6eac167101adc535ebecd670b9dc6702d227e09789fdf5039c9ae7a3a25cbd63d6a13fbcf51e99e4a3f0f4daa10ac34673b13f9514cf2917c7f2a2cbcd0ec114714c43e6890f097dbb823851c316c06eba86c704f7db0920e4fec07495b5ddf9d59f5bc65087e38e1d2e8766a4ae04fc072ba48a5cf2683560bbbee04ea68adbfa4065acdb691fd79d570854c781e0a74246d0af60c3a0c78b2998dfa907e66a5c19aafae89f7552718353910f6fe60fd6f3e5bc44330a0ab9f5d427563fda55640374e2c6559f711c1b00fd50a3853ca248e3f8696969ce1989deca9bbd6afd0f051c8e622f7bd4a58fcc0d90385945855cbd8ee9ba5506a34a20dd926afee37edcf299745adb76f33427eb14bf16a23f005a3113c1e427df9eb734b3e352d713825f3d092f53f94add1f0e955f1dc1380b118aa120f2af8ae17305f495e6296db50bff44f2bb4b01299c24a7d1cdfdaf19d4ff72ec32613db5cf0601f5aaca7aa9671eade0ee1eda7c658035b01a19467136d4a7c7eaa2d5815398ad23ab1ff480b95034ea4a6e0fd4186849e6c65b3e38fb904638070afd6bb08f58ecd08bb97b8985e1477008dc4a55a8c902543969512a0034d1f5d3a89370dea8f67cadc5bbc89dc426dd9fe8cdcc14a652a5416c4eac1bbb14baa9d9a05f5524c583455eaca3e18bb06aabce0e0d48fe669e56fa7c5e1315d9979839b93daa86ffb8f131b50a94cc4caa2583d78377ea1b25338cb2620038f1cbc4353a32e77409cf57d3c0712c93eb78543e6912d251471cbe0e7c85caebfc0c7720f5fc257407322fd3d3a525ff0ac130514c7563d46d177deca23853c716e86aa08382409994227c52a008c5b7b5e993cafb437f8e39e8ab91ee10a7aebfd1cb1ce471c3abfc1a7f993dcd0e1e3d4cb6b6e061c6324a0fb79827b5390bc8731fab618e1831ac98d08758c000f1190b6019fa19673ee5f3dd6a985abe83649ae6a0c937c0b3c8b70842675cf1a32e76dd234b351bbe81f2f6c036591002a8b43f5916ef8054aa76661ed2e12961afa06fce317e2d95d68670e59504939545502daf023de9ba3b2226990226255ecd56530b156b549d3a54ad1e35761f44e2fa953764f28a9970f8882cc546d55565971a47d3489ef254f1ca64d7b850cbfb76e901d1ae7f8c4258b093f9206f4a1c3bf97c43eeb51a1adf589596a416dd53fbdd4c1a1fc1728eaf8ec52b3291fd92db35740d7a9517ac797d4969ead38c88ddd42ef348962034f04c05af50319acfc1f4e5f475a98932550f083701f10664561928f305d0e7427127c3aaf3749cd3bba691b889a0cfee2ea5383b5e25e4c5c48b88c6d6e34c65e506af7d791653e93f17c09bf1a3fe5800f31de461fe786c0591509eec1a5ccdb16793c568583b8d31cfea5467aaf5535db42c44735a69b228c55011e46026a239bb7867c6f455572e44e68f1476b183033c92da8d9daa7177a58894c40e586491dbc1bee82daa9b3b136ea004b8dba29de5b3645abb2d25bf7966cab13b45e7e8f2c5470efbbb3d2a0620ad877d2d3d5f5c71602eadc26a20ef3458324c44d96b1cbe1e9fc6e5023be8e2e1b537a8086817791c6cff37f08240f6497cdc45cd7224acfa8058fbd96d9b944a14eddbda0a05e7c2216345337485a45cd99f7119efe1706759877ed15337cd6be4576489c238d97b08f9ccb80981585e97ce47439ac3999b0e9bcbd492aefec4adf5054dc5d2d52eb0f48e94f4a82a1cff3646b406ae031820c7c12f711624f44a6f215c27288fe04eaa6ff72d214fc83eb66c35188e0a95c7fe84c6384f5d485ccc5988d4de3f6047d6b7e0f58e74f1c9dcfe8d1f4837ce8f0f1d5da3316032e4826c1fd3cc37a6b10de0b925d2c579233df3624e105c90ece8d4af8172d42791cd85e2bc45c886672dbc32219e04324a037b0d966e8f7565c658efc04646557d324409719103599db50d31baf1337b19244429446519dc8eedca28a93330a636c1f5dac8a0ccd0cbe93a6d610f884662fef18a7a2006b358c441e40937268b29b1bd4e76d672c4b14198016086c6dc139811cdbf6b7092ee52ad5adce33a53089441f71ab3ba11040adbd6df121696f883f79fd4b17efc9d058eab1d53aed32596c04bc77433603cc831ddf001ece2a1b7729b0ac7d4506a6edba76310daa2a7ee47526ef1ca53acafe1132f5f223672590e55be0b9f74f5d8cb643630373a937421e30fc1f47e79a01aa18b7066e52ae3eee5361a91642be299fd64c34e91c5c77044f6ccbfb3331b091bad5f93ed51db44b86370fa700971facdbca808a73ce004bda27731f11c488608a4f315b02374e266e3a7f2f45dd7176691b1855ee164fcafa0b53db9308d0fcf3be951aa93d8532f1c7d52abb5342392ffa1f23b8e4a774cfd985a2d5a13e05c10e0974a0cc14b74ece62412530d0f71b15e63cc201f4d2ff75689b8f38663ea357738f7980c3c78b77efb40658754619faf09aa33258fe9c9684ca0f6b16d50fc5ff53dfa1ea3c2a5b9763ed275e9dd733a4a36e6aecb8cee51fbb4e85d4390242c8506f5864ec2d3bef527b752cfe66d4adf50ad9b993e870804ccf617af9d12d63117766d5a0558500f2c205b7eefdfc4ad52584d921b2b25fb5d895158edf3ef7eb526b097b9c7476eb9e83843244c63fbef7cffa6c92fdca8a34091ed03470e290dcd062adc018594d1106bf164d3f9bbfe2b630495be1b04a8eab12964795f450144cdaa92f04bdf319d1bf23fcb2132fe4c8e3c228dfa0439e52db1fdaa1eb00aaad78d5cad0640f7956b9e749a366b10cb159a962c7920b8021192d2304d342387d742fa6e8afdda5bb41c1446da403761d5ad704d728e38fc1e9bf13bf82a2cf128c11e7e3b50513364db69b6b86a972c51b7461270517493d7c095f11cf1769d040932c46049e6dc4b10e56106068351de85218655390b24d97d2b1b9f8cce162a1a0667741a134bc319e1afdcb31062d91926ccbeee24b372277b7d0b8e52bdf5a8e72b526472e1c6a9f9d61a9357fa66a15cc5a2aa9d0847513b2bbedbda54c01990f7c0fa90d312b47a56288c0d749b852dfc5744e3857c9957a245c20eabf0da8885ea6b8c029a014f4250585aae5e7775d4b0c51f75f8c2909172a86e689ab8b71d7e9f3fe8be1b8d594d40431d0c2711c97a2947b17ef5d6829f5d4c5c5e5699eb8cc37514a53f4534eb817ea924a79cfb5b850fa344cd03041c3040d13d465964cd025b954305dd7d14401d3751f0c8d131d0d141a265ebe8381a14982799a2730ddd344f1d2cde83a9aa4ee5f689c8081791fe88c0e26d5d140316d530c26986e45345f5e15f3f2344cd03041c3040d132fb32405905381dccfd2f4e9ee3ffd274dd213ff491385cf49f3c489e9a7d3cf96140d2ae3e0369d56444980a00d55490c500b17f75dd229a50053ca648a499938a022eaa28053c0295d14704a17858aaae8f49e8b089c92fa29a014e014e007c02a6009402ba84e0ae4deb4a27982a2493aad689800a300a38052c0286014a09489f240290a9832850d6a753a4dd14599828a6a4691d24da093a29b32050d13344e9cba285487089c024e01a5e8a274517452d030715ad13ca149eaa2d03061025744db049ee6e90af4344b2f314544df778f84f7792ddeb7705dea03bfd2c9b47a317d8be95b5a4cdf52847a77995c5a5a66c678e14c2ea647a55afee5e55ddee5a5e5e5c5a5e43dd7b222d249107129137590ca802ba2afe471d4857e5238e1cac1e5566e80c575832bae0985cbadd8200b171657c7bdc9537d6afecbfc97d4cbfc974f155344547af09170cdd2a752df34fdfc7e53d74b09fc1351e7321d99335b983b1025915acdf8971822952b09239070a57e668cd4ab5ede07ee657e4c91cbbb2bf592c49c19e3e567ac7ce05231d309e7521121e12a4abdcb7b0b12977f791fa86ac68c39c3051a0fb3229af1a95e6838373303667e0c44dfa77af979faef5d623a077f40b94e2ba2d29b64a00f72585ee837041b7ce08a115c392eb772a58acb731cc7ad3a9a02b9f7529113235cee8473f9e7229aabee933082fecc1833643825cac189a218f7d5cc183364cc1d887278d239e15cf348f75e7afaa00d26e09271b9952b6280600ce8420255e9f4255a445744d3d4f274d5b98c1c6a452473c5857a97877141b93c4ab532b9a05a52dfaac8c6a903a340390ea22fcb6c820b8ca97251d42a05a69c48b9a4625c400da888be2bdc0cf720a8bac2b5b82b03574c54a7e5c1d40fb07c46f8c2a03a2ee0730fa6563364d09612387fe85ca6b9fab6e8623e2d623e2f3e2dbe2da88ee705d5f9668bf7799172a2c573c2955146c9450ad5f7fe699101d50ce3b926806270644c1751e979546e65065a107d57be2b4f5cdc7f5f589981152eeeb9267064cc6c61da9466c89836483c97136eae8892e8e67c13b822d24984313fd4160318c38a155f745074e0d4e5022e1770b90035b99cea10cdf0755dc9eb606cccf038401c36b80ea42e9349d5994c2e97a1b999f44fb3a31c0e6f4da2eed4cdcf041cc7712100eabc2ea87cf3c6f33cef09cf2babc89202025001011d2481c793e2f23cefe3380ec6ed943ccff33cef8603f2e20aee8a8bcbad74914516cf0b2c9ee7815d4881c23541052e3280627265a85412c1163cd0a284f202688b2b805c8949a954e2420930012e98f2b9dc0a17130072c1169d570262726588eb388ee34a1e181eec0a0d8b28e3822c5f072589133cc00016a0a20a094c808407a4000a07bb42c3227a0e38c157da624ac9000d088177c5f33cf0fb3ccf3361d982072e2219172f6cd8e06668d0a0325850dc7c4a6f6e646470e008b2c1712a150852ba7231818a46d7c2adba128e1956fef489f82a0997e9c1d537299d143475ef7d1228944fcaf98b0c4568d0efded4e243bf3bb570f4bbef563e89b4f87465b8501ced502feefa5a864c7ae23a6f7e6e32b9d0a7a626a0bce7660a00be785eca542ad1e73af09b9d8b68ba4cdfe7fd675a955e0620e8733f04d25501c055e7a2efada874315c0c07468b93590691169f16aff4df7f2597057034e5c5701cd7751de7799ec7954aa55289fbbeeffb3e2ec6f33ccff3bc95cb0282401eee51272adc6abab72252f2bc20e729c345639ca7739e2466d7f284ba8c03317d66fef41957bd785e0b91928bafe89c5b4039912e3ed00515ee8a49e7dce20a5c380172a1c49c2577cff382765bcc394b1f1630388ee33ed005637c593ccff340531428dff77da6d316536c31c56432994ea70f05657251858b0cb86c50993927a55b68c171a18563995c34818b30c0e0028c3927a5940b034805f2402502cff34aa512d8a53e5f813c5011a940104cd93071595cf3411ea888c0167781a2ea56df398d179f3e552a1818181faa6e86775dd775d3e7fc15fd6f05c258f1e2d292429d4ce057f23a28a60d35d030830c31dcb001c30b3568b8300346f5e2d292429d4c9f088ca86ca0800c2f8b2628a5a512d83d4002595429954a2593a9336191c51756b250422a8b325a524e484941075270054c0ab49891021ca4600829a8820b2eb8e0428d1a28680298822dd4a851a3c60b2f64b14514186a68c086098b1b2e2e8821061bc800c384195440060d371a50830d10d850a38b7ff141cc1256a9196365055a00404b141ca91973436ac66c712566e5f2e20094cb12597c40e51f78da00195841c10f408e072ecc8051bdb8b4a450271378052c594a1e0aa8701d47298d02a44169c9ebb0cc25ac4cd18504a6642104275081278a520c6060bc075d50210b0d90c00a1660010f950114eee9a493d249e9a474524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a5944e3a299d944e4a27a594524a29a594524a29a594524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a594524a29a594524a29a594524ae9a493d249e9a474524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a5944e3a299d944e4a27a574d249e9a474523a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524ae97c1fe8d875506a688042f9503937868b524a33c0711cc7711c4733c0d10c701cc771ff7d1950812008a25ce8cf775757e3c670d155d15c25d14dfa8339e79c73ce39e79c5ed75d518249e38a29515cb105a5945e0186952b66f07d573c01af0803044d5618e10a314ea613161fc0620a1ba92550a7931562d8c0220b540a95c2020c2e7030ad602185fe8c992e1c58c0008542a152292cc4706111864b16a896315252545240d4cce2a5886ca45ccf5db9c2ed805fe5fb548c29e5a202e5793e2a26940be476b82bfe55415d31b99ee34e555c445d1205575c185f155447a5f4a7980e0be8fab8aeb4e2c0982930e54a723900baaed40494e320a291e442c59c54dcca1f1543795450b81d2f41812203aaba29288f531e148a8be992b81d104ca253ac88c0120726b9e8278153509ed3ea058c1ea868a782625a812b95d7ad52349240ea1581c6d7996ebaef3b7da70ffcbeeffb4c5ef77d26effb3aaffb4a5ed7759fd77d9ed775ddd77d5e77fabaeef3b8ef3b3de1ebbeee3b7d27130d4a37b0f8382b9698d175dcc77d1cf74d008603c2c2e4ca10938e8be2ebbacf0a2a408f964aa5ef014c78efebbeeefbb8284ca01526f8be899465835664c184d20a167859ace8c2650855b00084954aa52aaca0bcaed4755d57c517a6aed4954aa552154030715da9ebba0efcb6b0c22b512657863ccff3bc2ac6f0b0608189649ca4a84289120754850140ee0a9009ace209ef9b401e081a01fcaa9082bb42730568a88a2a2e2a584a0e98ee339698744e9809508ed20770518054741c9785152ce8bc6f4a154a1880524a63aa90823e61ce39e79c200b389495ee8b2a80e0b24165baaeeb4aa530b6b0e2fbbe5945145d154f5431c61349b02ba230711cc741b139000a9c50022be000085f740cb8a28a155d984a6ec71484840b5040081e28811274c0c32dc0c57164b838aec47532576c61e23e99ae3b7d333879a55d3a75a5120e9d1746ca8365a16111b520c0e75d21864bd795bb042ef14202254a6e0786c512a98f8381ab2c342c228deba0c0628a2b0065e14281b030b932c4c4cb010faa50ea4a9e050b18a026ec0a0d8b48eba88cab543a4012570c81021a88420515337082278aabf42a05b84a56aaa0e22aadc0b2844518a6aec4928500a5528d92d7d12c9c151438e1025d6e05054f40cec60a402d7c8c2a338c29140c222e4a10782b6200461c818427316787800c809c8dae7b8f7e2617f71afa393540b9531b949371b94b41390e4ea787ed6df6d7e8d721ff8c93c7d1513e11e8d2f1cee127025d2df28954ae1690d5e378e776723c0e32e31ba97d008abc0351f4424f93b89d989f36d020c3d3c9f3ae203d3fb5e07662f869e3051a3fb1703b447e1281ae9ff79ffb442a17ed89405792f724b317650f4e01bc0b3f5f5afeb99dd409e47684f8d98408d85311a826a852d920bad141a232f407e032d4be4fd0684504aa6c2b22958dbd22b2f17a45f432794524e3a2f49dac7a70e58a9b02e21511484e714db0b62202c71591ca45a314ad9256547557442a9a6ab62252d197adbe1d1f39374f9303158346e1ca95128f8da1d2c3d3b81d8a8586c1cdd009404026c70d0f0028138bc76363a8f8f0306e874be2a6e066a470990bcc31386a055785bb32c79863743c36868a0f7785b3c2c920e6a98d1a9ee8a38c11c5c5f1d8182a415fa4e47688c4f0f455307051e0c4983285f2d8182a413c4df5f481b89d1913e820e032555c20b251a5cae4b13154847818b7d32571339dcbccefa2c8d850a9e897b23154625f84a307f001b8ce74c265b89dd453930b95ee6d8cc945b1703b3b9ef278fa340bb7b3f3f4e918dc8e8fa7cf25713b3bfc8fe7e1e97352b89d1ede079e17f2f4392bb89d214f9fd382db21f2f4392fb81d9fffe1e991a7489e3e1706b703f4f4b92cdc4ed0d3e7c6e076869e7e97c4ed2879fa1d146e67c95326dc4e104fdf41958d9934a1cc28538ab822b211c6a8b899f9b118909b99b0159183e19a44ac88fc8a6b365911b917025811f9189ec5c348b222722c422ba26905102ba259e5674534a718590560556445044bcf8a885a1164e55a01591151307e78d15a11512d5cb3c74a6745c445d9b122e2927056372b226e4acd8a889bc2359f66662593634544c370713338560058c5c4383763c38a8842716e8686d50cab186ec4383763634534bd7071332fac6ac44c305e564433ca942273d363764e60ae222e86ae1c0049b8c04d3a270562056592e1eeeeeeeeeeeeeeeeeeeeeef3fba2cc392708523016c0711c6732d12951789ee79d4e6138e0fbbe0f859a55a4984c26532a354604502814aaa565022db365b6b4b8b4cc7717b772022350975b7141054e20068d0ba05a8a3035a082e2099e8eae40074be0c00a29b460e50a0fed9e7051fa34e80eaad3a528e89a62032eae092e2e2e1fa80fd40506060e851a541142166cf00515b6a0002702554fd0c085fec004c51192502557348a248133294989a453927b5292d324e792fc0049de4413ee2737b93b14770424b929294989a42692dc939210e0494bf82ca38c32cac032d2c78a35cfca245b5723775fd2a7883b56f20ee9b98d65e99a91376fa156eb55ea1dd6b28683b45aa115710844eb3a86af6c4ba45a2b0af1181bebc6fb85546b407e90f8ee120952ad855793376f24fbb2bac680e4e8b0fdc81608a9d6b205d2add6ec80bb13e12a9829ee3bb439e3f03726dfe6fafae8f3cbee8b7687b644b2afefbfa50dfd0eb057c62fd8d3f63d7ad1d2f425afec797466e97d6b77acd9ad6fee1407779f4e6f589b8784fad65a2d4dda22bc5b2dad6dbb6e211b9275ac3c9b36bb76494c88addd4dda826e19ef2a92f5c858b32d918cb596f18fd6750c420b772df515a26f15485b01e01f9d59345d6936363776472cb6e3c60627a7deece80877883a74ece87163776aecae79eb984ddbe86dc345a1a58536fbce6cf02cd7906563494cdae86c75121b9aaeb4566b675c9636fdb2b59a65aabc33a6e9c778d374a57dcbea6c8d6c7ebb6f3e12abcdd6ca5efa564bcf9204f3aff679e79f7b30f3f397e9bd305d2698d3ed38174557c34741d0ebb8399dfa04a2eb61fab783e7d4e79c1c2d32e7572a824e3a3ffa42d09ca5f9399d2d2c8e964a32a79f1da55d94d9cd494f930a749adc9b1de5ec9c44744e0a26a132d0494b1d9d4ca07396e80462c2302747411778dce7325f98b306c8cd29b344e7a4dc6bd2ee64da41531308383d1c5c0fa51d0ed7e34567564141807ae75403b3e3643a8f4ecebd064c224ca7ae52a97cfaec269d4f9820cd614eea51cacda963da4c70a628a5b41464e6a0b4a3f38663a16e8038cc961931d0074c8fde98dde4a65320faa7d939bd257fd84c00e7312e98eecd5617949ba5d97db365725228055bdcecc14d4abba72993ccf4e6fc6eba1e606e263d95403ae79cdf9cad49a90fb8d234d18e339a2b7ac4d54c138a4ef09bd4075a03a581a38173cee7cb2c513a5b3a15d7d11b94d2599a9d6c9a704c9447a7375d76e69c73ca4003504299e88c81a98f4e202638274767378b4c1aa80f3a0345d18f7a939b745214fdbac9799c8fc94d99699aa939e70eb3067ae2be097693ced99ab3f402a5313b3a3dd4e4680d93e328ed68377d503a63a0a7699a6047e79cad49033d7ddcecc06eceb9f3f3e588d3c19bdc34cdcec634995a282164a86102a09b9496e867a7aac60daac89c74d239678d7f5e7a9215cc2c4958fe434308e3cad00588d004a13a841b208680c581627ae0488660038b24260b0afc5c0023f9a944590270811aa630a4ce70e323c6864d8f21b87860a7b6e0d0b9c069ead4a9051e58caa8008f295bf01a2c59a88106cb149406b601acc3949b1c74781a28d480e553354c8161864f716108877950f8770470e7dcdd81b87b902f71ffc1dd655c95f281ebccaabb8aafd293d30d31489af95a38d3f7dd307d1ec7d5480d29f1b302654a27b04797a291fa0490da5c0bd7028241800824955ce867ea685a68e80182a4939294d8d1b8284177c8e025e966e9470b92783022048600b43b7546667690e405985eab5482763170353948d201a800355e780ac01151c20049374c4b5234229034040612d4a72a24c118a0fa4c5c8b57d41dc00925c00e86c3b141092b60c094830e9e80633cc085a23c1f603e1fdd0f56882a4bb8e0c99c869c7080d12e87cfc712575c80c8123678c2e6491608d8220965934980002d392fb38aa41b3a4a9c3e1fa513e8c2edf810e168380df994f04183105844869e212753919490f8438b245547a373fa7cb8d0523aa17a56446c20e90416a921d64492c7a9bc5902a274f27628e5e0ea016533e5008b944edf0d97202f35743f261868cca0240750e6270807254e20ebd3d1a263c707e84b755f0c5e8bd331a5ba1cefc367fa4e9d8df743d7c387e9c9c0c5782fdc98c090f32125093cbd60da51224ad244ed00653a1c1d8e5207927270e984783a783598707433bce070342c91c4b2999c8cabe9386f002b2218804919dc4200822b5a54094107a44040124720e922990d61443409828992244240460250a4d543870c0e3700e0bb2eb8e801c80dab186e7c536620032a1b00a2a787160d3552a8d216596041c51454a4c8c005a65020894c0e0944201604149ef0c20b78e2ca80ec70faa68022ca8e89076070608a960f1d1868a04ee037830c559ca0891591fc04c067484f0514700003ccc0c22305210041079258a26447c7068dce0657a6a004080f3aa6af64810a54e009243f4076c8919a59a058a057a0637459fe09340c3a040fcbec01dd01d5812907a92fa80d6816b488239a38401abc195a6e5018688d4903c6056f068599aace85a2bc13358120ed263767c95b5e3819381524750948ea8c9472904152d59480d14092e7a53e1c7aa04477019c0e8694141e282120a933627ae134830d02249904d005c1d580daa5143804ec513a713d728841126845128d264a9876b8043ce15a9e90124292574692978a410749a95d438224930d17faede0d9785140a981baf180253a27925e6254cfd5c0d8803660ca58c2d301ecf1fde05eb81fe0e66a3a233dc4944ea50f2471a8520c1d0d0a879b5daaa3390df174f804508aa1742a11a568a468986040d5f804c0696189520c5c95253c2f926e20ea6affba8186ae957a29c17493abe18274402d353efa2df9545ee983e15a5e0d975942715e97e2388e721f0772a6d30c1df725f966bc009d60bed237b9afdbd1d97413bcc1614942c9f0f04092cb079480297532804296e884b0c4eaf55ec61692c003306c70c58a17b69950195b80224a0f4f0f3cec60120a4fb0c9a17a013f218240f253060d58a0850d4fdc4879800f1110c20e6af082155411022a362c1c5e360eb0ed2774a64214b2fc20075f706182249020a249104c90fc101962430d30bc80852c501002102071c48b86193069c38b8b1082e0a4d69254c616ac50852642c0f002cc0e5ed0050b5650c50944f084020ef02242004b90fcf8d480065dcc2005528af8a00735a0c10bb858810a3620451305204014b2ec20072b50411623789264459f1e98962c47308210ac7081022c4ac001281260c5253e3d33302d35a081150a48008a27562422003e437a7668b9b4747e0423d4800630e80205589440041c5880029e0c11001f1e7668edecc0999901d37919473042106060a50b2e5080850838b00028149080274430c16b88263dd8b0c8c882911f5e5c8040c30c519c6882c9921b0c24a0891b1215a632b82d745af0b240b1007aa0eb00e500a53273280e773359a81a4ac3e9c0fd0b364c1ae80c5f0cdc0d6ac38361be607261c60c4ed5bdb4b8a85a68a46ea06638c19840b0f471a592e771d3dd5dc7dd63f093bbdfe0aacf88db31563779736963451c5ed25672d55783bb83aefa5e70771c5c55ca32f3daee5b4ce6df8a5793f7f5fd7d7f875baeb9d2c2afbf31f9fa7e4905aa1216eeeee2aad207dc613f232f6969473ff33cfc78191e7e3c7967366684bba35c5572e20e7b197e7d7fdf6243b0582c21dc1dc67dc2b83b005c55eae13ab3b44ddeaa520ca5ce45d2eefa5ae52acf08226957aef246e04d79da9e91767c19fecf5896ebd66f6764cd1e8457eacccab4b0666b3636bca37630887b0deee00f6f87d31bdc290e770a8089041f380fe473b68539f8f0d1c3c78e0f1d1f3c7cecf0a1c3478e0f1c1f373e7cf4e8d163a7874e0f1e3d76f4d0d123a7074e8f9b1e3e767aececece8ecf0d8d9b1a36327670767e766c7874e0f9d1d1d1d1d1e3a3b7474e8e4e8e0e8dce8f8e0d183c70e0f1d1e3c78ece0a183470e0f1c1e373c7cece8b1636787ce0e1e3b76ecd0b1236707ce8e9b1d3e74f4d0b1a34347070f1d3b74e8d091a30347c78d0e1f393d727672747278e4ecc8d191939383937393e303a707ce0e8e0e0e0f9c1d383a70727070706e707cdcf4b8d9b9d1b9e171b3e346c74dce0dcecdcd4decc6ddbabb0caee2ace0ae33ab66238738d1c89c648ef8237e00ff34279ad300defdc6dd63dcdd8693426796ce561caf2d6663330e9daedc698c3b7d77ef9cde80192308aec7dd53aee27c7039dcfd86ab38976fc160df3ad1c060dfda323bfe9f60339b36bbf97fcbec2803fb9668c75b65baf2c0030dc3dddf55d40bf7d777db62fffa5adafe9616491b8ebd0cffb6e147b222e72a6a82123c4d8e1cbfeb8bb628bc642ddda90df48819437cc0bdb56d478e70ce98c7dda9abe8127767b16ebbacf5904836c641db12d9a4ddfa6a1287a48f3bad21e39c7b6cc65b48b4bbb4e58c83686b54ad11f18ed588f4c978880ce30c445a227897b71cb65ada1add7d6b3797af9bccdad8b7a486abe614df772cf5c37685cd70d5dcee63d581c1557387bbd370d57ce7215b4d5e776f71f75cc4d09925e29a4d688d54471075e1ee2fb8caab9076fc1f6f632f8e364cd33ff3faca3c9215c9fbd608d76c7e95f548bbbbe74e6d54fe446756688d5e4735bbfb0cee9488bbdb70950be13ab3764d6613666d13e271ac36b75c73ec8e19e76c9fac2f5a32dbb6cd4fe2bbeb266dcd8e65edfebe35ef9f9177ef5acb58f6d59dd2e0eed3e90d773a833b95c19dc6e09d3bbd61824214946b9194e4726a82820750540c7d7f7a239e40791eaff4de1b610412f4b947627ef748981e7c37c208244c2b28cfb342a2f4e00acaf370ffad9028adbc15f7fe48942649a140e99e40e9564c1479df51ea75ded243b9190022f726e53aaff4b990be6f5a512a9538cff33cae6444e7ea3a6f4544bfb422a2fea51822235cf327f725cf09c721a15f44c54039c775dffdf4388eba265df9c07574a20005723b9489c944f7040a154e7a701531d1ada870d283cbb570713f9780fe312a10a8bae79e3e0eef07ca7110fde93d15431f35274fea0824e8975649f4e7cf18e741a11e447da6ee4d943ee91ef533e608f027057950314980314cf4c0c3bd29e60994c9c33d133df074ef2d431cea4f31ce934abde9f450268fe9511408e70167cc11a69fe0ea082a864c3fff88d353554a86ef7b7015714fe546bf948a719e53cc93d343791ed397629ea4666a95c4fdfcb97a720412dc9b5649dc9bdeb47a02e57952cfb504c17d2ae60824b83fad92b86f01821be29e42993ca60763a04c1ef04f314f98e881c7f45026cfe951b4a5470620ba4f7d10dc137049123ca9d511540c9d7efe11a6a7479c7ebe0fdcc91403c6304185931e5cdf4f1e1711a89c7819ae6f5544e5469fcaadfbf75a6400a27bfa432d4014355b80baf71620eedf4b62964cd08309f4c08928a0dcddfd9d87775ee9ebbc52e9fb40d054fa40d0643a9d50ee296f717949b5b8b8bcbca8543093725cd7795ea9f34aa5ef0341d3079a4ca7130a953aa152a9961617979716979717950a0666862a35615273c67481068dd4ace13144343c8688c663886cf88d186abcf0020c30d8b071e306a8ee1dc77fcf715f13be2c5f185e4389ba284e03c56be84749a552a8962ea6fb4d5d2da8185a90b47c8ae6098a2629958ac245bf058c426568479404ed022cbdad8ed9b458edd6e4d556ac38c7bee661da057bbcc91b5e9b71684924cfd2faa683481c8447b4da6eacc4d66a85375bd2ce444b2681e205455efebb8ae3a57d2b08495050cfeb25da20d18ee3fde1c8fe686dc3d02644440b221270ff8c73ee01eac1434888455af1d6df45b5f678ff9317c7ea1f61b248df27b1ae36e859a12df58b36d731b4e2df76b625cee5af7af0d07a95f57d1e3d84845eb45ae7b0449e658bb01179ebae227e9aae45444bda72f95b5b71c4325f5a5b54fb2346585aeb1afb96c6e1bf452b9fc49706b336d3f66b19e9e3225f767f469479abc73ae459b01c1d36d8ebfb30d863fda22d0f6d5d65f861b656c957684b0d7bd6d6787c1bb3d1f68b366ff23192dd240e6597b4b4fd30988dc81ebdecbed5b61adad8c366688a423cf2b45a4332309bb65986b7beba864fde9abe64a585b6f6796b6b64c7c7fb8e61cda6cdeef8fa088f63b5e26b3c7e78b7bee4ad65bbada8c7d1f5c3eed01a7d9da1e95aa4d51a2a6d96f9f09678ffd1b6b19f91b72ceb91676d7dc7870119fa01d396b6c56af3db9848da4ddecfd6c8926f43f2ea172d69fbdb58b3fbb67a8690fc3c2b5bb15a5aaee5633dd6a77996b6e16b6473c982d96d857e465e1b9bd9f7f1d639ca5a9379fdb4b21ea1c996b6ed0cefdfb672ac339abc32e15bdad663dd78e859427c721d6de1dde41d479bacac96d6b2b5fa13da5248579b43d2070f69d1dad0964261cd1ba9070fd91a0eb2475b95592124fed9a40d0791d9209c6d1024fef124e01e03dc5d089fe1420ea7d5aad6367ddf8af8c78a386cc114a106640897f95dbf358e57a6edac96afb25ada6b5bad5fdb86ad88c3d7b6fa656fde2fbdad46ba329bcbd738dea2176ddfa35751ae359bdd1d877ba90aee6ec4553c34b191c52a4e8f588df5c091ede8d811db91d51d310cabd5f1b1a3474c87ace2e4e8b076c7c70e9b706b5bb6a135f020c312497b1b73b58ff1d0167e18c19d95b1ecd625cffa5d7fb4e087155fdddd86ab7e48a13d39bbfa07927b5188c70feb0f2077a785dbca7ed0ecdfb716b3e9c7fb87b8531fb407ddd15982f250a283ab7680b9d3244e7bb0463856df9258fc5bb63627af2f6dcf2caa96145a44686d0006fbaf2fc36fdbb672dbf03fe12a1f64780f96c4b686354d48deb4cdd5740a425657ebd56af5bcedf1c6a5d6fbc69ebcd5bef6198445847bed0e899587e6d66a38bcc53e56c75b8df4cdd7d2f6df62395b99cd4f13fbadedaea32de20a89365b316332494622844c626d1e527305b219cb2ccf8cc47949b662462243b26d48c48d64378983903e1bff0411477b65fbf2903efbf26032099215499fd28633912b93d934e963c9d9150ab2f14fdd55c858c96c7711d247df2345b9d6b2dd7549916d43a26b112be2204af43d22565ba4e60ae45870f71d3e03a602dad6ee5058c7d206d56d8fe80a54730552e984ced29935de6db319efb6b55a3cb6f01989f3d1b65a676c8d8a301ebae2a275f23bd0742d82b7153730a3a5c5456bf78d275ba05d85b06cc65b7fb6a59017c9aaafb6a49d691c5ab13e69cbb7e20d13616f6d96cdb0f07e1b9295ccd608cf1eef2f6daf73ecfb347bcb5c32cf12edb6b7df3948d97dac1f8bb75aabbb8a758c5d4de252dbfcfabe109f0f2b2be3b1e2b7b44d0bab25f18ba3a5fd266db8e67a96c65fd6230df4a2cdf626569b47979de56a04e3212be220423626c91a44b44521366294adb6411bff6059b6b62459e4dbd8df6a6d6b1b91583f743d6b7663afefbf0cbf6dcdc84be6ba64571bdbb9da22da6a6db328bab228baee1e6d47f6ad5d2333f28a38247b449f6c2d90dd750b15657cb4ed8f15491be6610d01db56bf60423cde6f69610d5f577dff963769b5d5bf912c39debaad90cfb5dab6421bc9fe1c20bc91c167fc57880a740bafec666bf457781bb3c2c638bf9dd58cb7d08c8290a9049b26eed6e8dad8e0ee2cb1f65bdb6a5bdbd9157f5e2f961ec71abe685f8649acc7b106b991f508c6433566d3b7721471add57abd7466d9d8bc6aaf564b93f86ad26e249bad15cb7aa48b423cbe6c98b14c67567ee99a6b49e25a0d873636736643f759dd27cc7dd6dbbe63dd191fa9c9b55a8d8d6cc74db8e3c687cd4ead3e72421d3931bb43e766e766a766db995867357626de1cab99e9cc8addb1d5b259a3bbabd1cd567ce93a8ef5450b778d8d36246b101d9ab803e0091d8ae8c0e3ee730a0c7000c8051478b1e3eeb38705088124ca01289085bb4f2635b841151b42c80114ee3eaba4103024430896e0e3eeb30926d83093bd1f1e70f7d9022e091c04e08b2268ee4e0d00001a1628c20d308881bb735470021123f80017107082bb4f1e6a4030f0004a130277a7467a7a384213399ab082bb73359eb8f2840748c9e206eeee45a00163cc2f5a5bf0c1dda711a8008511643ca0083beece4900f6418016032221b8f760e118d5d4dcf6cdb504aa854c6e483803ddf61def4e6263357bc41add1dda71c441b29d55b21e91556b24d78edc64d6f2e4da112cda84b22dcb9a9760d126a4371e85c88a47f108e720dae6ca354827296b42b2cd3557a04dda6c69a48fb68d21e96373a509e99a2b906d7665240e42ded9cd48806a29923513196b7833defa16d1e5a5e94ddadaad0269b2e621ad6d7845d2a7acd5ad639547c89deec8d9e14e75b8d31c1c777a63c372a73534ee94c6dd7188439cf5cdfe20b33676455b2567bad65c4b12d7ae8dd51859f36c66876f208908a06b5bdef64b86078e7423ba44bbf18f586d9123fb2324565b24891571908c45f2fe9071b645bc0c7fc6fa1a5df16bb6a2ada32d1c6b58d6ecde3500eedec355b72edcfd06773a02982040c951e6d021870dcf7696ebf88f24da54386851b3fb0e71150e31a45ad3b57cf208e75959b3bda5edb2968b94b54cd3d6e6c4068d96b42592b2968bdc0086bbcbfcec6fb17d6bd9964f56daceb8c683ab6e80e2ee97b4c968d50d4537147177203548f6494c7e7dbc7f9356bfbe8f430a2a1c60c8d46cb58b546b7866491c4f5ce6ff67bc2ce1ee38aec2a103078cccff6ddfb09635fcd19264a58577df19b6e451053a1254e42d6d6b5188ec4112a4b5add2907a96f424196237aed9a0b186d88816653224e411163223ef8cbc62ae384622b163780badec1aa9b902a95656b8dfbcbeb75dd62c104784ac9e5839f9db48e2d7f7e5a426d23c0faf57b6b7d5d241b295c96c3c315450c564899980b609d164acb61dd61aceb217e2ee39b82ac61523c377e13caefa27b017ed5bdab663acc2b235c22f1b5ea36cb5b6fd6d1cab8dacb5176db6bb8e6f634fd69035569b788dae48de27456b4324bbed4cb4c5be89bbfbe0aa9fc18768f2b688ab9fe6696aaea5d636c4b97c1bfb71bc472f1a5d1bda6c8d2acdd6b090bbd3e02a1b9a604315771fa2c98b365f9b139b9f66465ef2d69acda2a585d5e6d7f5e835798445b2d29e36a4b2e1091b604334791af1be104d58b686c36dc335aeb2e1dd5d86dfe83569fb4201aa1aa4c03a1284c9d75eccf5a84c22fad859d5da1e4112efabb4e13c13c95bf4da48960402c48fd02ab15a26c32f9b7178cb9bec71f71faeaa01c85dd79f9157246df976db428b641fefafb996ef52d56003934796dc71150d608c36d1d2426d73497177b15a9a0e57d120843b4cbcaf9a6b097b56cd15e86b154b9b1571285a9bb539d9a4bde50d6d0642d3b588582ded153ad9a40d87af99aed922ae7ebdb21549abedacbe445bcb5746e2b02c6bab8583d4b36f78c7b2e6a3eddeaedbbedb0a595a90b11ae15c962e2b9238b44233f21685954724ef0f3be3984bac96e6c2443669b5cd4024be3bbc796b1b8465a48f686f690b432436e320b55bc72062b599b66bae4065595f4665595f19ef3a8e386cb56e8c80ccd86cdb959c5da1a7d9b6525f2132bb6e4dd395f6b2bb8a57246ba86dc6e18b0402246325a1550244f4d9a4ad91b3ab750522fa08b9fd08ad127db345af5bb64638d457d4f6e66d73ab45de4a0b6baee56b63b1168db80cad88830001d2c3f623b44adca90e7307e28844245d7adb59ae43379ded95dd8d7fac90b5b3ba8566f70889afce5649cd6e1f3188dda40f1157dd8055dad7276fcdeefb769c9157bfcbdd735c75e39d8549d18613dc3d89ab6c4819a2098d104d9e358ef648d7a7999177eb7c652fc33ecfba8da34df676dbb1ace150bce26b2bbe0c3f2ddc956793f686a40b4789b6badad106d9195983441b41dc3dc8553044c19db5b59dcd6cfa376d766b6fcbdbae9f6dac6623dfd236cd104d8468f296b66bb659aeb4fd76e39f67fd91fd113ab23f48609001cb96b7fd7a93d6a8c7dd5d70150c1570f723ae820108771f72d50b5a7077d6104d361e358d48de22219ab0b4a5e93aeab7bb86772c6da268f7d5b8b4e226ad917d7d6943cfda78d43f135ed90d6da96b44f216c988647dd88bc4576bab61b62c2bed6122798b604f5aa33b93e117edceb8b4f96d485a990c3f595fdfb7d9d286361e856ced0e599b935a2211c9fbc3ab2c6babe50387078f9cac5b2d4bde91c4afda0dd2f6ba8eec8fbbe770d50b49ce126dcda66d7e01c89d255a6dabe5266dceb620eecec3552fccf0219a6cab5f4234799668ef5896f5496b63af2bedb7d57fdb3763dab6d53fb23fb9567bbdb61dc75ababb0daeaa1103f7989bfd21bc63cc06f40218d2d3c373f3ba79e528b979ddbc709484fa1eb176883bcd010ae7ee9dbbd7c0a961c31fefd7b33aca5eb433b2d2c212bfb5917793387cbc5fb437efb76101b81be1b497bb9bdc95b88a4699c3ba61e118f5f020091a12824d9f534c9d593686f3d637ac1b564e0d79c76c6b363a727a84d6474cf4e12347270c2d4e4d0d87ac988db6efec96b7be339b67dca98c3bcde1aa2269cb97e1a1a02038db206c1157486f6d6d4e5cb77a94ad482629e29249b4c5428290b644b2432b93cddcc8fab22b6374951cd91f16796f160b79168c07160bf67646d6232c92f768c4f95958465e0b83d1ec980d8b4f5e6d6f0e4be29a5bac4626c339c87dedae46d707c8f5fafe6c6222c01d06baa8daf2352dcf6accbdbac34a5cba7b0ff7e9c3dd65aef2800b5eabe960ddd4d490b7d6d8b128db5a4dac28acbb0ad919eff2e6505b21bb5472dbe2aea50db2d9cab6c646b6b60911ed1116c91e1fa47a843482548fb0487cc5bf8d6f4bfc479634b2b5faf32c91a4b11a0bd5b01eff46ba9ef5bad6d1a6f57dbd2f697b7ddb57bc3627d78835baa3abb4f6871979b7b64a66e4ad5688b63888b5435e2fd26e9b8d7029564b0b49d9ebf5da56bf6c48d6ad7159aba57e21d5da6bdbf0cbd6ee7edd622f1cbe5edbead711a6e917265fdb6ada16efd1cbd2c2176de36c8ba82ffdc2a34dc4b5972c1bbd5edb6aa45a7b9535dbeb8554c7bd5f2f5bc4d51abf6a36f2955f48b5f62a6b97bca42db1d578cc2fd296f8855bad19798bead6af521bddb1be4a6b8bc6b1beb29591361d6b69d2a7e51c70f726aeb280075c67964dde65b6e368b35ae64e8bb890931c239b30eb5a88f47277dacc119922b0af212f0fec6b9e65c98c9fd682c1be860636337344a6c8d3f03c8d91cda50cec5bb522f28e418038f2fa499f899a11c3142e1ed91f96b64678bc358f333b8e97bcb8dc75246f0d892f267758656f492b92b8acb131525f7d73d8f696c357d192d98624d6b7ca5ed79f116dc632d9926fed1dcbdafd19b2e24b5a9b139beb9067bd48e2f046d6dff5261bf5be4fe21f5fb433b2bfc9e88d7f6aae402cd8112661309cd7e1356cac56b447bf6bb5b55dda30acfaf5db3124b715a2cd6e118c87c4110914aa275a9c95ad7e2c628d6b9bbc220d4c866daeae5a77cdb666237b762dbad9a2d762c6a13862dadf72c577937794c970aba6761d9083fbb732795fb510a901581a8085eb6c2bad6e408f06dce0ee95b4c9be96b5f6351b696961ed61693bc6aa68757898e8637f80d92224fbc3d242581af622312cb3f4cdfe90c36abde4c54b7b6defd60b30c08cf409b1d62efc73b33f88fa667fc03ff8070a2fa0a0020a0de497cdb7446ba36d63996dfaa533cba6a61622d9d442a48c6b21927db55ab510294a16a238c1dd510e5386922835f8d6bea2cde1eb5b48b5f634df6a657b73aeb1d7ba963ab3ca9a686353d6c4d76b1c2b7ee9cc7ae2c8fd5b376d7b6dab7566e98cb328ba82f0104bb434a2cd77dbfcda092e5876b489b8f6fa8a3eb5a31a24563c7a3d269713aa269a08e37900f2df6a4204eedae6c4bed6b71207d199656363536bb5105002168ed1e35dc792b46119e92392b6213603656b647f5e4644518868958856e352c7ea35aa341b7bbbb1d1eb72b43422513f6b465e3c23f1d33c6b5f9aae34d7b3f4570340c1002590d1463f23c3fa231bffccc8abf53db2b192db986b0fc6439a89223061022630e0eeac199919993fb23fac11e7ad6d6f479bedd1eb9db12c871cded2b6101fd7b35e867fb5ad5ecd687bf71d6f786b98c4a11d45b2d6b2a56d1c93b1e50d7b969d9147ac199a5d65bef5da5681b010c643486ef6871601b0b0c86b33d6108faf45570f1d184dd722b0a781c19eacac191d9cf096b72df3a2857d1d31ad9236d75b1dad58636b770321d523acbaab0c6947d68c8c157148da970e9fa303f64575c332de611d425a1b6da8c6e6f22bcc96b721d8cbf0d6e4b58de5e7e81045b1fe2ddbd2eacac3126fb608362323c3b688ab31ed2863d90dc91a657c0b676eb648e66f48b556696cae7a66472bbeaeb41b598fd8f0908d7f36feb163ac92496e2d5b20fc23924964a315c23fafd7eb55737bddf60de2aa239eb8d1ad46e2113f7c46e66b6e757c7d8d20c38830c83a5a2cfe8ccc1fd9708d2c1b91b746968d860429a1e95a64489012bbb191d5780ccb9735d2577c85fa6537266fa2586ff622e15c6a1baedd484cd64ddada0e2d91cd627d1521451152401616a434e1673c8014a61eab190be05c71e10602585ca985e0e881084a013200e280883b1de24e7b668f4f57162b1e6f1568ac36a8d5c2316ab5b49022e5a5e99add3e3224a435a2c7d125cb4a74129aae4568ba16d91807e95ac8c4caaa9068457db33f5c21d96a9bb18cf4a1edbb44246d386823d99f7cc4da211bc9fe588d476daf9e9197b465209f6dadae34a01e3d568dcb30e321e41116478c83e0d1675ba1aded1d73edd978142292a32349b6da9276572347f8a776ebb8856ced6620242bdab1bc79080f89b616d1f6dab4f6d9b96e21d1c7e621760cc924db0a8957c846b23f5adfec0f5656359944dfec0f5b5f23dade3cb491ec8fee11b5bd2496592137249ccb5748da3049baec8cac63696b77a8873573db0f0bbfe67160320f0b619fedb6b59a6ba96becc836bbb2c7fbc77a8d6ede319ccbd7f76dac87c7c513ab42c4a2f0e6984b579a486a5cdeadeb4823c3d66a58515863e35865367c93791a6d63e268ef6ddbf02d5b1b10cf22f197b6172d59ed18bebef8ea5ad6b2f647b8c8b374697b4bdef1566b34a22dcb5ba469f4c6a326afcc8a42cf9ad1595796655d99172dd295dd4a9c3739625c56bb04f68353f303a311adedd2c0604fdedf334382947cdd39482cca905693b78ee5df72d5a4ed67e42d71f93636d6b0d26ab22df59d91b90d3deb568bf0cc6e21580d13244b869e45de90d9b62d89b7bef56d48227916acc810919f1e23afa19f9e23447a845e3f487c868224091a12fa4112e415d423e427096c666bb6ae3219b662cdfbab5df2acbc3589435bd0cfb3f4b5319696e19968c7234c16d590178735f569a14ddf72ad4f9256635a18561a3b96b53ae459e54c0d89dfead1fe8cbcb46d8bee2863b3ae3f23f1f8583f4db646f608d39e468f38c41be7f2c34b2b6b9e915700ae23bf7d9e55cb767f78c75afb1a92d636cac8bbefeb3ac66a75f619cb8690fcfc90509223b6d00a3d009e95c326add696ac6191ac79bc9bb4fdcdeb6b6fa3a5ed5d91ec735c8a7697b4ed6ac5d8efd02122e7e90854342568234b63718c557dc5d7f79550170d69addd1dfe38d6a37af4e4b579e3513b1dba0f1bc75b04fb8c1f668bea86d9a3df8116e2b2c76911d66d5b59d5345d7338b361d2eed0b1bdecfe0e96c43924efad1e8d75878eed35d7c3dd05e02a9b72d8c6a310acc7c62a0f67f31957c988f0dfd516fdcd16b55a2a190df7199a9b2d92f1cec7dd4557d90ab8dfe4e4e838aa41556b1bab311babacfc22598f9e465f9f67691f20578e9e23aea02136f137596fae46fbd2366cc43806fbfab7d11a5d203332b0b7b425afb3e511471b0eb2352e8287f0be62cf1e6dda068997c78ae3e8126dd06d1cebddb9021dd925a21583dcec0fac9b2d9261a47ae48fb06063bd3db0dfbadaf1771dc95b77b6e158859e552b796b332b91b4c9429b5bb98ae52013ee7a738973595698e8037b3bdaa2b0e6a167e52a7bacbffccfb7de58c6565f1abe7f45b1be58695a246d32127fbe43b6ae46b6ae40a48f48f6d86cdbb621a44fae43301e12c99e71ac35218c877aca1a04df6c81acaed6484622de1edb104de21b04ff08c14337b1e29a3d62f5ad4147f687f4d1dae619ce40a4cfad8e56882c2bd11e84104cf05bb646f6452bda9816aba5dd6a359b906db50dd247423a48b4a2e86269d97d9ad02a79d18a9686889a2176e0ac2184a85d91b4d1b0bee696b7b62159ff85b8d320f6e6ed4e79dca9cb9dfa4081b86a081ad5104f7970a73f60ee740777cf7693d6ddabab9a80c0ff439b8873a95f319cc59a26372ee486a48535eb56ebf5b2bbda1cda6d8bddbc491c1ed52cd2f63d12499bcc666b3462adafb8af68b12d0a6d68ad9628569b673797b9da3144000188104018da8e627dd16ed9a5e925ee1eba8a09961b1d44e43ca9ed7823eb6b5bcb15a8a6332bcc61e5d4d4d8b1869ac916ee2ebeac9531a9e28e65e47d4971771b92987c314172d7da8e2f26e28d891177263bdc7d5bcdc4c69231dc5ddf6cd11223a8965c41b2a415eebe6402fea285b8b44b9eb8fb12980ce35cbec823fcbad9a297dd75898cbb93b657888daecd897dbd96a8dcc5fbda56bf9488e1dade2ffc16fb80bb1e2d59d632ed75a5bc9cd444254fb04cc9a89508717fbd60ca202533f82b63d92b0919af2460b83b89af986d99240b77fd4a22c50bc68b2b4f3cdba28c8f5e32194e427b5920d7af243b5c2799c1dddd5f5c95a4f3db589675488cbaab58b7ad0dfd60680b77ef9ccce0893204c51f6f9ccbdfb692bc2f569e212377cf38e72aabe2ee2c570dd5a8362716e76b44f68cd50a699b26ad2671109b8136c641f6e6219f7bc625a984dcdd67645efab26eb6e835236f8cceac6dabc574583939ac9b9a9858636fde9e0582a4e0b06e72583735a135da371614f49af15d71f7cf55414c9cc43756f3f5dd5d49cbdd27bd417186e0f38b4d6e8d6b76933557dbcc1edd626f5936568cf900b9bed6c7e48bb66563db16ab09f2acaadf1e3d2dbc3447781cb12c86432b93598dcb6cdbdab6c38a64dfd2d859ddfa6532a4ada47d91aca21d2b39bba34dc4b58d84f3dfc85afb234cfb24cf126dce47433f23af4856b23e7e4be26cd3a47dbc5dcf82d98c5f2fa45a63c1740effdfc247fbada6ed6b5f866b348dcd38dc78b4b1df39ee5bdad0b6c55eac6121d8dfc69b6bc665cdee20cffadb88439825f10f8ceca937373c9e87bfe1f139fc8589d5d26a11c6e36b46ded717efb2acb59ba5eda785977654bb750c7f46de1a0e4bdbcbb0eb59453738a40d97b6b7b2aabf25c35f65bfc94ade1abeb9b9c1a9b9b9c1799adb18ab3a5b243b96778fb6dad76cfa6deb03a158a8a46d33959118754c219a111800000002f31400303820148c4583e1541694545a0f1400096da45a6c541fc983a228456114a510310a186008180032322332a30d081d7c8cc71e1782eeb30611580ade55d402e2f5a70b7d0d74e0268412b29cd1e85c732da9f4cf2f81d2708a9a21fc61fca7385d7f43400786a4609daac4e078e4c9d2f350d5deec15ac8cd9f5b467430891e835e15160227a7033e5f23c0284ae30c11565ed22116dd7d119fe61b76ca7a314a10a423a1dcd2a63918300af4042efe6686ae11fbbc70887d01825b9d04daf82b4b70fb674b0ca54dd6e43e98e406642704c37a53c6163087e5cfe3e5f1d21a5acc807089d85676531b39368130ded91244e4ae1b19d9fa6dae4b0e011540fae7d9c93bd995f9e38e7da79141216bdd836add33838f4d6d8c068795c49b5002120f46f2d75b2955c03bdf191698138e7521a5886764a018918cefc69ef7527d07f5ab3baabfb6d5ce13fb1992e465b0c4d0e55af2e5b04dcd17eb1c64262748afb595d168d90d696bf238302e610d9a143f747babed83a008549fc18228608440ea83e441c1520442826d8872b8fe3a9a089c87374670e48460db6a203ba1df55838eceaa5a353ecdf8a2dd25b3dccbb8801b1a2ea3ff899856f3be2aa82d027812e743df11b82f12232d78015bd0a13baeec1444fb5dac6d6a86606c43ee21c921df8d93bab9935c18e14a49be7b72ff071dab46afa157762cf2117786b508d9c465a4fe6edbc8926964f4f20b4b281254acf278f0b38491e836e46ade5aea98aa59660140ae012340a82076aee6a9f22b711269dc997369095699904899e6c2c50206c861ca233249dd43d44fa7ff6dc7510e280c630d18529212b5d78ea0ba760c7f90003aa56513827f6ddbb9e40f74f1fd40ced48de570659b3210054ef3ab23a208c5328fac1d01705fd60b403432e28a3c0b4d09b6f64f0a7340f819b0e396fe4c344db685a8fe23d1866acb50a520c13a54f06270499dcb93f1f03f2e416f9ab8430f3ca59b83ab08a8d6e070b51874b8000e58c006d553ce353b33c9b3cad5e3b9b4bf577ca627e655404d8dc6a535ffb716c7f1403cebd9ea5db4ec62558014ff6ed187baa2d9cc0460e1140c246bbf9d9f064d7a2c80220d0be62c731dd1e6e1790e5a81bf2d8dc25b2ff0f0278b1e451f3f402c57bb63906696fc1de0d6ee8c259392f7f86f040e8dd9bda005fffe59b8152f3250943c460fbb8df44026b322a80c139736fa756d2c675ed82300d4b98353d65ca9df94db06d8e1c2c37fd27944597beced87a9587fa5412343b375832351c6aa2611780ec3b042c39b3404c7dceff1b94ee2d4139884533d434f66602a1201bb3865b114c3e16a68a3903c59513abf0932243af05ea0e6a2b67274ed21fe74ecabd51d7cf8be9379562780decfcb0d3187258ecf883ef15cfc500101ed8820069bd23b9be2d07fd4be0cf4860697914b2f96e8cd80f0561b3bb6536ce376ecbaf1a2ebfe748340e9489bcf294cdaa20f104ca5a1efd7e499fce8827475c664660733939b695ba59a84d27caf3b1900cb17034e56fe1dfbebefbd0396f167f803e982c7a4366d1f894b2ba8c40db258049551ad2cce0d1ecf210406bb60ec6e9f45501a6a1965d374000f7db7d24585fd5a5736494cfe4eba3449cf60c90543c9a642f336521f864af95cd919e7d10bff817d8738a61c7c824518d39a1f8f87cd7e932ad3f1e380b1e646792437d89f98c09730b99282d9a9e5a591fb3fd016afa0ef4d33e4bdf9dd695fe0aaecee15ac3b279431c84498ef02d152398c94615d341b64907004c55f3a6d51d1e0a701fec5dc6f008280c310b0b025a050195587aea5dc84ab7f871a61c4bcb667413639ce7650e062060a0fd060df2ac8758ad7669798bd0815a75e5d49aafbcc5eb198ed57cbbda3250122aa25226d2481b1a5fc1729f25f60a1c497981d4683f1a31fb300073ce00615251c4e78808227c121ed27b1f96ee39edde489403888d29c36ba06fa1779d075fa4fa7ab890e09b8c6d216b82de96e9ac2105f55c49299b93df3c0db9912fe5fda9d8e48df58d0f6004a3b28d24c67339fc06b0c3e646dba19cc05ba8555aaff0c2ee6cb3b90e77934a0631e57d9879a3a60dc94e9d389b0834c22b49b9fa2f3a80579deeeef9aafc0de480ba9fd2d10775fb093ae4556674ec79c3ff706ce97dff4c87325299e594d853ac6bc29a2a9cdbd41bf94ae6e0b034df4a6fc8ebff175ba84ab949d9fddc561256bf2132e82fdcc8fe00e63040e8cad82b0d12f0fd33889d7709a12ab76b6f10fb0f154b73252418c4f387b6f348266485579480dfef59bb3a102523c3cc5aa75f396f2064441495a02743aa3521288e0317f93e39985a8dea1de6cff684236296a42dcda0c7f155eb61189ba49bd061eda72001fa03b54cbe41dfdfa6e5c93298166df883a4f2bd0002cf1327b29f702b510de32f82737a278fa8523fb1ef5d8b86c1af78ee1254ad9d644c97fdad5770f7723d1969385540e5fef0d776cee2096ea3a04de8a8d65a76ee0fcb39ac51c431c865df4e5a87e609ed788b8b583507b4c88391288b698944bb08452337983262cfc984cf30efd0c6a6a30b7c183310481da54f6771e92c44f5abfc4344e428a435607eeba919c00eee5bcb765646e223c258c0ed5d84358285cf2a93fb773e9e3db83524613cd12ce683485bc6f18205245d8d55de943b863855207f51d73e0394c4623630e812270c85b24fd20869afd1e1316f7c49eca0e7214730193cce25c17f97537bbc0834dcba9a75a06a488b22f1c41852dce5cf255f861822af08e5c329a946799708ce550f25f31ce9609c5c4fbb54be235f9279352e99655f749e811720732f14caf6f7d6876a0657fd3b499c289b7bf886f7da786d40378867c4b58002cb9b12275e6ebcc78115a8fcf5f2e75b7a2c097898cde99cc78cae1d3f9835314e5d76d83a42fbab87814dc81c061fe1610060922df24448f93fa1ee16e27f090d04fd84a3d330e67d56b553e4a5c0ad2de1c274d6b1094e6aa6b419fbfaa8de2017864205ea24dcda7702c05c2bff1d8dd1afe02f3fc1bd55c795d995768b0961465ef5a79f7b986d86dfeac3ca576ec467c65094913e25b9d341837464d24db8e2430b444feedff7ebc71cdbd1e54e00170157238cef3e8bc7845f81b72ab8a97fa066fe0f516631319338b42230f632e767b4d33dd15f30a86d338b5f808d40c1800ad0e4da75813a4d71184117f5b928f721831a4982830629c2844a588524de062aa63037bd663efe392fefaafcb0ba1a59b59699223db42c0a99ac8612518873ad19c1f19c4e559b8cf4197b5af241a0f0bd3c0ad4313385687aedcf280c2e95d176198a6b918addfe1279f39a095cd025df26d0306e7f24d814fd194218c1564c188cf748833a0bd98513edc4779b89a217a57ad378a0c3992ca64e191f214ae7254e7e39ab09f56fffcdfd0be16c650d2e78fe11f3785bb5f0939b60f62b74f5caf2d10573f5c14ba615d6842e2ca6015fe9b0be5b2ad5f9ba46a637f0120273401a9cce32fc06dbe5f457b4da9b1294f343bb272430b018af370c63c151c8364099c900272a0c1092ba804bb4f26a684e110a8d21087e6f5bf05eb345e441a35cdb38d24fbebc2bca72c9341f1adb6745e477a4e2e0763153840a81fc5b506f8e68125d71afa845aa5c7de0af5779521c0fbf41777e08a2309f1792b1741a87a8d54b4d49b996d5c307403f169c5666a6b4c2bffc9a4d3120508ad0b9a46fd69f71177a8d20ec052032d857c1708317b93ac7a430bd8dcad22e5afac394f0d72df52e54439970aea3273c0e71748d589ce679e8b19baa29de956162631763b3491180d47288058da9d9a54c8a3a486b0f8c9bd35383b9c7485bbbf3bff43c9f583913ea6ca6daeabb81b267477824328d3e69a3c875712d0d4520321473c2ffdd90cf0e4ab9798f3ee798f892abb4fce7d665b4ec0f0c6d432a2988ca8393f69f0d2dc07ebc82a12269a2d2fd175c7ddccfbcb27a310714705350b27c70e28aab98f6dbced80950049c2d061a53db425dd629a7debf9a66d11efb4223d9883889e46bb61658c13971351f811fb36ccbd909342610a6feeca01d09a293cb4ce236f8b54452ffcf52d3180ab08d8c1c3581b0847e8c318115ff7345d09922f86614014be5c7942b35c5342cef0881d30789dd35e6c1aec3667d7a74c2ec94a2cb435f0a982b04330628e4d695ffc525b5f0ce4d1ed6c694b36bb6ba64fbba772789986a09af263aafe80c001959e884441873f7592a8bc48041f0ed68bcfa48a6acd1c917471dc374fb224f9ab8d0449d575aa52aa62c22280484328d3a170a7a140e9d3e44f33e0459ea1e8c1307eaf969b618f4958820923a2fdfde5243f79a1c9a45dc5b65f27889a51b04b53826386a77d5456127b81584ef0004e829d6281e430e855cd7e9c2a1cf290d3c901faf216a2731a8595f58cda25e85fe21980e49601343d3caeb76a1843239e6726e17535876bbeb04efe10358316cf0b2a3a8b9c8fc916a68532a1a0e354604d75772068f0850a6ad0a9550e7ef6f3ef0fb571675c8d846a554c7a52c1a664f1d2305a8ad8adac642dda4e7a70f6826d00c65c53d8ae42930def13193466f16a126b36c89e5dc1ccd4d6c521573b1433196545b982f700c64523f7ff9bba8377fbcdb6618f731e02fcd8d1acc9f3de6eadc93a666386a16986edcf5586265e478f4e267ecb2d9693a45a349cedc89c99786905d8961ce25b454092abf1f1510f5b22b01f4ea8a6cda44cdcb7ded7009247cc24566690cc52d847f664544de88a5f37aa751782661b396d9cb92aaeb9c44dcd81809cf91332f40d24e646e9fb2d7d07fec637d72bc454b3cf423bfa56b64ceb33836aeba41d2d38c141a5b496716a0758725d74fa28963362d1840e8b59aa09c77986b8c57c81007b42631b432c5a824848ff8f047ee41af1980888b675bbc360b38a00bd1930eaca6ea48ace7d6527565b55cdf4895ed2ebeccd048d0b27212119fc285e4b2cd5b4d6de5b311ed87849e0cbe2c70600697f4dc9a6be2c30eb468fa3f77205fbacc3c2ab1f8e4e760ffb87b5c8b9a033f94a12a888249d977c411bd8823c7337ac3208ae45198c8925b399c270194cff08cae66d15786dcbeb8ed9cffe6befdc55b0109b01a295686cce1be3c928109880daaf830246303b68f407fd424f5ee7098ede43a00944ea8d19ccc898e26d9a8ed5c59f73cf8ac5600589bb240d228040b740249b9bbc5924754f63d4a1584e980116fe1c7bc613e0a53317802fb1e88e2421aec24b9411c4930ed308354b16dc44d1ea1b29e5f8dcd6444727ff0ab9976d8c4ec1d05221caa89b4294b26789a24522b36b26e8697087986b4ddf8f5d12077637bf6514fa83c743d183d068a75aba2542b6c76b1e99ad8b247d5c90fb9d2bdcd905ababef1faabd6e8b932c085c5105ea01ac1a730ae7b10279251dd68927c1c48476ef45c13080cde529457e13234456885616463a3e195a0e97adb787a988d3ccf6ee20a046bf7d3e2b2e3ee9278c63cbf0f7865cf780e8a7eebba842b67c2eda070d7cbbebd42b64b5f12361f16fcb5205481308aa86eb428a15f82091eb914b0572ed2f47ddfb1cd94aab8910d0dc130ff16257cc3a0921a04469bb21c039a3146e2671022c92927fa14602842363362fac2f111da0b4967090c32a94519f30b4421df87272dd4780357f566a98873d81e7726df8cfd9105ef7361a2c26b3d743a12d8c02ade393e89a2306fa9a3bc3f9da7748ef8aea441258197159b1c51767fbd90a18dfb0d8599b5248022050b13cd3222c9841982d1927946f49329304c424efb7f5d243696cd5d94632648e4027ee382cfba1897b96e61103807a89f4a767614cce3cb128357cf195662786245431718f407268bfa056d1ef1d95b823177b9d8af2d66ded651efdebb1f73037ae1ae56707178b10a48cabdcd87aa9ab7fc6c8e442f29410796c9d056ace2743d5d5f47044a6a0900618a9ef84f0d01ddb56dd99c683970989547092bfb09d59552800d4ebee991354424f7b7df5ce8229a1eb2d3da69ea20d00ee60695f197ca75a22583abe10742fa3a305e76870f2ec49dcd39261d0e576887db4289fc77238cb995ea1c55470634db4f224a46996eb10f823379a6e0b5870c166fc39f83cf537c17c0b3192d2eb6188917c796ade67f10b780719a6d532620322e3030c58a8e4f3a13ad39a24e283ca23b55dedf404a0aa771c9f904938111608c7aaae95f4ac58399bd3f620c23b91ceb52258236aff61e3ae005314405303ec7dc5e415052e7ef13b46f9874c69a1355fd43c73501b9ac27dc206d83ec14d604e87270e6cce5026f5d0b4f1136870fd1b1a65c07e267804b2786b6a8d3f410b76af56aa265a841dcfba1c539338ef898d45dd540a4524721a5e173bc649e89262a1d2ce884ef6793fcfd374fc411710c2a9b16595299c502f550d3ca3883ca04d338449b70e8b95c911f200a241ac1df1aefd83f1509525b7bb53ef6039fa430c9f1d5277289cf922177def00747f396bea7c8b49215d3e76c0295618f8f16013369366feafd5769e08414c560e50bc28c003ae0f03445020f2637418dd8b37c2fe06404a7f36bbfc21b94e8906e448de0533713fa1a6d4dc43ac70b72a20d7d75dbd82229f6a0456532759ff59c589b6775416c766d07fc5758edf26b1ecf7f21a09ade464447d09a41bf5571622d49bee8f4a65ce701bf9e62b44364f2017eed02fc195c7360d146b0a96f8a84cd11f82d5b9a49448e41c399467c73fbcf4a8abb593c02667decad1afa584b7cf51046f3d25cdc2d21cf3fc22181f39a86c407628e22bd30f3dac814e2650076cd93c7b6257627e60598c1f714001cebf75d0f657db835b88c5ee56cb1abf7f26b375b49a333283382b76927bbd644de6c65256eca2e0ce22a704effe0712e1bad1fc0f955720616cb774c66eedd7258c13aa456b9a2f81977be81e812140b1c2e9dbb1592c83b9de624fbfc1eeae31b212b3f1c50e6e26f023bc21fd34b5c0aa3de23757450b1d3bdf7345fc9a69af8c2f9911d32ca9f0491197f07db8d1c87a174bdabec38eed3ab7559c0c7d755908d2c560bc4bd2ead0ff37ad85c3735ecd69fdf135b558947671b150129ab8c6b52211923eac6ef464cf8bf7e6d1467e9a5682e5320f082757630b4ece2c40d707db6a3d42b759322e211bcccbc29a7c67d5394914e7d9046ed2d8a9ffcf4eb091632da6dbe67e80b0d55a3166e6cc6fe9cbd29ca961d417b91d1d4ac8a8a509d445af97113ada376cd83a263904590ee29e007479098c84837ed35e14ef7c88684d3890c796f9b01498ba9f34124089a8367b3ba2280aa81c0f28046996b31085e9ef215da562be89d836aba9fad5cb23b2076d315ca518e6f9cd01e096d2f93f5eddc772558edcb58b1be01ee79851f98cfbafe9785b1c0100ca379e301ce58aa175329e19bbd5c74c4efb76d0fb1ae88e70fa5350469de3b68c987287043c41a46ab86b4101b2245b9fc2ec443d91be1524767fa948390ee7470646327d79ae10f8bd18354efe1cdf548ceeadca42d6d43b3b424db10aeb5467d48e565d9d68932b2690fb10668ea5383525ffa21fafd75260c7b2911e56169cd7741ccf228d44fa78b3bef8425ad1b62d4596b3737e15d23e003a591a863db771788e54a798c2b9656d52cab1b3684d99315c6d5c55ead2a32c2e4e8b0b71f0782de832d0381bdbe33e39be7c3390f9c1e606f7df90d47b12b1f29db18ca9e52cbf91b1c72c905361e008b9366e109bf44f8cc572c9420dc70406bc67483b67da9cdee26c13f46f3fff1897267a4647597db2d0bbba3a29e89acaeaa818f9a2c786fb867f91516439e92641e3c6a1777ef2446c46a388db420cde4936e0dc62882b705c80329783b62b4a96bce76db927aee11b7123fc461243565a13d2a1e04ccf8a6cae6147c2e7e42acb8742e8dc4494488cf04b46148cd1f9163240c90eb8656321ec09ec957e777628f7f3856155b5ee569584c547f80e740d87a9719e39f27acfd18fb9f749884abff9ee99a24173f38875aa110c1b7acb0807b37be3d567b6b4f0ca181d03edea2872e5bddb4333af5230ec3009e91bdf0f38c38c5c66935715371440921116223993cfb42809b7aedc3eee7368c6d0d0f172a36ae53ca77ad3f6f386efcb9eab5d66b3bd5b519fd534af9f3cfb284dfae2f65fd9ee5ea4b1a5a5b7e75a1d259d43a3ddfd6b055efef5698e2563dfafed059e2ff5a7a0621e9d56f8f26d8f448aa3f441b3a11a07bdc95b37c32b00c4da2a42018655249d1aec8545280194a1edce46b01a8d9034629e412e3f69b0376cf1801e41e651830ce35b7618998ce39afffeb895182c8e4c9747e02f87eaa04cd03f5f2fce99d4866eab182e378bb601aba4221877e709279ec90561f926efbd23092c41c317882deeca17d316da52d8c433203d0b38e2577180ed67c1eff95817f3e73c6a4d0c9f8fcb100e099e6832f8c5e38b62470ceb28d373c619fd7ac801b76b5d5a1804b1a9402485f841458f1e77f46ac351e7a5b08d916337a3c5437c61bbb50408a0374f126498b28f25d20fc6b243b31ec59a3f32f29460dc7ffdb13daf8ea094a12036a2d6f36cd2e75471b6503c564bacbc3701d94ace6d2978322b92b7bca59d512967436e4193ce93a28ab244de9f6b0d66e7156ffa85a3f94911fe2036b40e8842a9ddcae22b40a1b70247918b42f84c081016febcb2b9159a0faeae75de6854ef2eb202a1735191c96c2c05af5d43351ba457b14dc5cc6bad738d1f11103b4c8bf1b738a40ff444610fa98156f098b97b0b36d63cdc249001f135b3fe56682e5dde74a3e9739bfcb9e899ae1d47a340708d7081f6029a4447930642afefdb5a8e52a3ec46d8174240cd51b1d85ff6145e3468778a8c73bfaa9ebee49c48ea510064f5d30e62c2c9cfccb5fbd2f5e93d9cc6a60a3d934bb1f4f4c99351b69a1eccfd3bb0c6f32a9f7ba30b421ee2363e1f428a85239ac2bbfe50fb1980b429d2862a5de6c43d8621fd94165997558025ff66b0d5eb535c3369bbb86d471b5b4f1c9af7e4ad1489130f1073c7d2ba744ce0e994cbe49908141647ee5089b3aa545a273916774b2a71346705a69c1ac147dd18a97cdd9fe296bcf836ff84ffc03d389d7e89cd2c8a33dc726dd1ce587a3fb479ce689312a1913f8594db138415d916e10297d9c83d2a38a5c6c572f235270f954de7273d8d711a9cfb84232cbc67cb7725a01778f6ca8cf1c1eeca62bc96b499fcc9edbb37222f20276f835181122050d51854ca0d0263d8eac9bb5d113eef3c570a642aac90e6ec9d7354152c43b3dde0d2c0917b59c3e593c8f81e9471ac29074c5068b4595811126babb4d8d6961e5b2be1b97886d5ba04266910a487079c1de0d531ea240168f0fe9d1dfdd807518c686f483356952b20256f766e9a328ba5d908cdd6dba6ed9ea98630b2c9fb20cc115d27601ac8673e347393ac5cce19d4066acf7a60611e8996f9ce3fba97ba333cc2001b5e66d4d00b1e51375b77945f7b972e875581b5cbbb4e63cfef6d310aabe338fdd841c52fa3162164fa68421ca3adeb0cf866696a64f3546f2ec71a0b284fafbd1cdc5cafb308a2d3b20d285cdc5f14bb90a5549004f4654e5ad85a2b2acaa0b96cade944105332e54f37acf313cf2ac75fd8e8a0be019b95d4f9dcac124d52008abd2e438a8a7fadec82bc3ef58a460f99823e22136d64d680f1c894823e6841b57eb556a10b1dd9531a619ff68845d1e18f64a75c69aac6a7bec829a73bf4248eb3c6e4d7b9cedd45bae428a75471358e39a31870fa682301f1bb9a529f953ec1df7f4b303b25c7ff6940a8af461bcb64bebf132469dda42026c8311770808ab013c7989d0e6796a0906d19320dd063f42e42e352a8324a349f2201925202081c7d3e3e47222cf8335a6295ac022401d8c07151beff613d02ab3d335bd8eea7f374c66ab154d064f4596145c586e845748ea1cd0f237e7145578d4265eca768842d587960aac12d1b9c69b71caf028be7d287909725362517b3c00f9152ec13466147b7c15b9059211310ef8c445799a2fe7fb150a3da7de43ab73a8d2c79a398cba2a13fb587ac985f117dfac8111a781fe5b2a1d04008f52cc95066f9a89cfe30c04eb42fc4cf014694bc841f101cf0dcca9868abc3a90811c2c3e242230f0d20a865a86f84dfdd359844e93367d02fc31ad263a4cd988a32c4b5fd4dea26a7a2b1c49cd365d2aa56c3bbf5edff294ac5a88c7b6d2d3a61e9c6f44a31ad10621008b4ea223d8f93752b898c7ee4722c3f4c6ce48294a846c81999eab240de73560a2749c5ac60ebebf424ba33233107f75569dd7251921615d15c463251f637cdbed5bb15e026df35965146fce1a207e625a69d419eaca869e715f71252f5a2adc6ab38eeeb8438f95d176931ba4e9012f18b2ac3b426e87650bff6662415e0233cfdcb37ab5c8883559736fad676295561676c3c09e650901b3222dbd24bb68565ce569946886241a3a2e1fb2695631bfd8620a4b08dd94758af9a17e2d2351ba9d419821130dbc9c0c401e0cc93f178c762ca4fc504c27d8edfb306a2d1a130781ea91f9ad38f82b1dacea4d79b5f484ebb59285a9ae3aa16e9e57c77fdf3594991e3137defefa9633bbaa87f10b0aab8ff2b72021ed288914087bc15a5aafc22b7030c1ef9982f18119ebdb7f1e16df5b12563d01dd3edcbc2a79a11e4fd2356787a8d7de89194ebbb5f617ee8c55927a0321b7e28459c82ca4cd4871e837cc84c85964f4ef3c8dc9f8f008b8e7c4bd7008b570c9e4b7abd263fa1fb3a8c2d0806aa555ea6d95e0dae4f12b0c233d3ac7916de605682268c03017302238c71b71034c497be72f0d10bd832b05b781bfc84c308fe1abe1d5bbf5ab1e3d878bcce08d000fa16a4d73898737dbc9573f965ec02047b17c50b0c4e8f401bc8e6dea4a0b967142315363f780d55a9d565a606a0fca179993739913c2283f5f943a78fecfb7fe77e17cff95cfd941443eab9f58e31473bbb6166ee87cdfb545a60b40e42b6f9adfdd216f6563487154884b1df62347431b6c5ad5c6381bbb4465b0561588f904315f20308388d1cd5f60dfed1e0fe3ea6dc80e4426f6aafa4da04eb068b5eea793c969c3142b023f284f22321246072bb11a2121c9a8212392218f45c408a4c7240dc8ef26e9a11d777eb9f626cd4a48ef1ba66984184497156dfdc2191852c48d91da0071e9c6efa0f28aae7683906512019a4555167041b40d373d8d290184e90757ba9518ae919d33ae2a32fccd22c5a82118413a08192108bef9ee84799f4921cdd245644a4396c7387fc8ca37b5d109427e8b01c115962d2a7a899514b2d21475d77e2aeb1d4a35425ef8e89abaabf32e7facabf63dc4d2a92bf043e31f1ea57c7f7ad0a334abdec9e57a432ba50ff668848257359e6c0165f2bcf875bfec9299efec407b9ca8f8fe9e8fba8c20d89210bf31e7cfd5091094d25137eace490928bb3dd44c69d234aa11f47a243075237e5ef60345069ddf6f6a7b9d8bf75fd9eed5bb84b88942d7cad55f6d8dad4174a0988dd531ead834ffcb95d7d734c7425333bdaa203e278c8513abf1c24829ae66747f615f6eb9026679bf8f78bdd6e4e4ea5433ed3902209be5423edd398bed1b2f31f5b5be3ea47977dc6ab57d9aab94a919df205c3c0ca164d2be8f84b7fd5b57f12b6ced6f66207dac49467c307800e3eb004917625fdce1c6e44137ad1364857ba673d7501bbbac69678bf885fcd1588891fc514fb3560c98ca84978cfee917a689694e160b447598f2ce603ecc944d91f59ac8e26fed73fa9ff003900fc8302732172c5fb8e90b0dc00481cca92089fe751766da3771db812fea1fef8dbaf77c8e289ca45eb38893ec32c5eaf082a16547d07b3a594d51c0027ed664322cf3e7374254c4206b6766e4b3be5dac1586a7a578b7f0e700de649ef7f5027f3fada4dcb22e8cc91194db6f71c7645fc7ac40f9894d1121b06590d428e94454c52c318f66cede75584add66a909b0cbe8e7be9a2e533f8107c4d863b65c17c606e09b923c0e3c6ac8ced6c751d4f878fef225e53e0534782fea7512aa821f26e02b615f16ad4b97a9996fb8e6d3111839e3be4eb2128ab3e200be0aef3599097af6ddfa7f776daf2218d131103592e2ea7fa5b4f94a6c6c8233aba40f390d799f05de00951e6381b124af7018091980d60cc110708c76732ec7af3d549b279740061ee94f489d81f3861dd76421e4614cea3532b4c683b3e82f3aaebfadc25a337ae936762074463a4bed102df8888c15b771d687ef14564fdc03db869fe1e54a99567e1d6a48cda34eb8bc4c1d3bfb6be39d1a85383f83732272c816a51a150abe3dce542d08cb4906f0cfd612010406bc969186cab516cd3683ff999b5f7dd438b0f8528410263c66e777853127c4e8202a16d749e93258b401f45d887b4c2b5bd08f6981175c64647aeffa224cd0b84b76baa2312808c0d5c4aea11e96c31b6eb47b27a9b27ca210e7767752f4bd7d10d21ea69708da4af0126161e5bb81d1aa1b0444aac6e80a926f5dc05d56269383fc550862e5897aa85cda79a0db3faf2784e4ea56879bff44f7c10c71e6b9ec6d283b0b541fe04af3a384acade270c5e618b2b2f50e82fdb818de0900dc2ca807d4e68b959e9f67eca6ca2a1dfee146ee58d75bd9b19590432f4b13fd6707d2807c6f4e575de4c5e660832a7d270fff0c90e3bb4cc321485b304893237d8c18ba00019c25c3d2479bbee17374f5de2a2663dda093d6db186d33f14552768dee5c4a9846eea053e908e9d764dcf8a51b4838c1ef3ac89cb0a2744b76caca1516c9178a5c4ba5eafa13e74d2b7136ff85d2e9c783ba0a6622a89e8a69a408b7c23c298986b405c593353f203fd77f85c88525683454dc7e1b2f67f20c616a6078bf5b04fa718ac6d427bd5b2a778a8a68b814d0e262e8d33a746c7f647a84583f684264c2e5a2e0c3d429b29980543db93dc11c582e7a0359699d22da1af7a36824e31c801064d01816e8f057f03c16f71d9a2259782968cc257480f22da1cf6cb1f637a44b1607b663b62a3f2fe9a30fc9f2097be3deb7c4d175e6f0ea59bd73cb6aae39b970b514343048ecfb21ef7e3942d01261a8b748a44f0d5aa08803e2dc8cff982165ef03061b89ab4061d21bc434b1d8f1c28858c503fe2a14f05702a112c8319b52bcc5f23f574d3c827423141342db81fe78e9b5c61fcc9d2f9183957b808c87a43f1ab7f6d6383fbd1c26ef66bed3fa93ca0fb8c27b9a56e26900eafa9f8deaf9dbc010a70383f91bcb92da7b882038c7c9c085e8867d9529b830b2c45454259c88aad09be42afd1a79a8ed9cb21d1fc2453a6b44ddfc2e9b8e945320c10948c39aa02cb6022bedc7bcdd0732e3077f094ece87bf0c88879cf0530a3dd56b80ab4d01f4fab735ef0a992fdff590cc656f32ca231c0e138e7b4a159b1364c4f25f90ffe11277551156fdd25ef66fd195f2d5f51bcb99a7bf8ae4fd12ce7bfc0be5e907f4fe2fa0f08745d9d6672882d43b13bdbe46f8cb3f956ec7c07c9e618d69e6a358444836a67f4790217d5440db70a40377c48a952c2fb614fcc63681b05c91d9bf333c0cefad48f054e24fb0949c6e4f5283b999d79e52680b875e9311b66a89c059c6e916b0796a13c29c6ab2b663c34ec375cc2835c0fed9d1391ca2a1069b7e852e359b80de0f5eb3bfa2e52fe8214dc4e1c33f4221a03c89be6988e6ef09fd46a5f9fd617d508e0bf54f0358ffaddf5f79ab98ef8165ed5dca7f962cce039bdd9f345d86d6a3407aa4fbf00cf4229ae6f8d9e93fbb9573d8cc640a4df3ab73669df81b242d6bc1e72eac91b3c8d60a53a398f3a5a5f5568c3f64e8b7c3f6abd5b14442e6e5270f9542d53857723af348b9e72ebe4ac6389d08cc974f89849f5aa3e70fff38616c92516a9fffffffb7bf67eed92b21bd4f17d050ac23d58376ad738aa6a1fb8456e5dc8f936f50423519508e51e15de18028dc6b1c626566f2fd3a768bb78c81cd444f9e3ca18c5488d3fc0f3ef54dd6947889c21954730ca55f75414c051c8be988d0d738336de506095b5b0fab62a7683d7a73bbb1c10cf48ed1643eae24641eb354ddab48cda968de14b91bcf92bcfd3c72f9f18a5f900bedb6de28dd726a5b0d01cae8beca82abb2bfbbf2b84eaa07914baf49598e8bfe2a863e489a992a4b3323f22205852ee24dc4958b8fc0ce574a71a9f91297c520335dfb0a120067102b73c70a16d921b133f0c4eb33c925f99c67724572703db3d9de4c1c67387fca5cfa733a51afc163a463759c02c63d10091ea6c9204866d5c8c9c505e003b1761b4ba75ca8b39880ed575586f73fec77f8e4c7c1659177000f910272066ac5694d541bf0005fc1b1090982b645b88e167f9294a32b49a0873e912d311fd138efd97d23c8fdcfe56025eb3b020ae534d512fd4d8e948389ec4739bcc88bed18b12ff67b42836fe8f559d62dcb737a9fa1f6b108880e5f67a6acc6527254457aa4838687618b0017e4b12852e19b837b80bfb4b691ce5d4aa56e7093c7665da198aac4bc1a347ce9d48108a14fcddb108e0895c376b8c1994f28ef6ac128e9b305fb565b4dc211b9f2cb181e4930ca318df94d685f31e6f59b252844eea0561714150123865ad2f74687dc92ee5d832f9d2794d1380c2f2c692d4b2f194517c7686049967afd883bf4bb2a724f28bf89105cebadb32c963ed45df181a7531bade62ae730b41bdec5d21a550b78e46b30a6c09f0d9fa83e0a5177e225237fe0f23c57b0aaed3cbf8744ef9c520b277a99ba108f3b367ff822dd5c655342d5fa2f201cbd8159644e555fb7db17266f6994b4810c418426f41390e5ce6330357664cbc7759f76045c1a978471723675c27871a7b0c1eca8b164091ced8e43c5b4c92e09aeeed4298f25aa21097d74d8e8fdae529efb2fa45d29c12c74e94ce373c0744b47714d020f41ee2b267f452ed3f03425f40e88eae4626faa4dd8c7fece0000263140384e6505cc3ac824d487487f1dca5055c7100b1bb1d8899739e9a7a693915b122e97b8085a3894fbb280f54ec6c330b8559acdb74094590cd1fb830e238b272951b90201a80819be291025cda7e96bf6317c38338ccf134b27f72a7794bb4a6a10ee8be48db5cb75f83bf61f08c3cf748f4175545159a956aaee3d374c4c177d2ebbc44a7a934a90a02949c8e1e54373d787dd37652840407dbe3584d094d261a38bc4c110cd6dcdf8b1b9a7d2b01b0102cd372043d3100f38d7078d06ef9a6bb7d4ad7c3b7936b41584681a32c8903efa7dfea450340d02089a436f94c4e00a2403ea7bb419dad219b8d22f7eca4353b7779982afe48390aadbba819ccae8e61b34999dcd4d3d2a74bb60ca75ad697c9d7174a740470e1a9933b65334c5c59703870722c9c4db2e5298824d38664b8b539ae6eae2f21143f04de9684bb339ab368a8a397c02b47fa5b4579984971c0ae70edd478bfcd7d8510b7548b80ead8816bd07e05eb943db5dc9a48ced18a53347ada4c772292eeac52e9b60cbb151d3b3f33041923919aa677a7862977c92f34d069d5da9671610664c0b2e8b5bc415d01ad2b6d66d423056e40f698290a2fc83ed1687d46565f10da4e5864c6f9d97e864d7781f4e89af9b941cac39e20860aa2216a6fa7575da2f363014b535faf16f10cb712b27796323fc768b40fd085a2f26805460795dcf06c2a607ea4b4f90e4baad8549498aed72bc953c647a6bcf70f71875af15b3f15064c546aff4724a14556abfd350df8aab938f0960c83ef22af3365b5a6e2ced8bbaee9f4fff29ff6740ac6f356a6262d360aa5be04b302891d8ed2b8659a4fc98b1709c5cd38d7f3e943be87e9edc67b4c2e33c0dbcf08c91604df402f0e574b1a9f1d616617cde43a85c6210b78d914c1ae8f3353d539358fd84cc6c2b8e2959d75bb16a10808733a2e9e3eda44c2fccc9a22490523bfd85e6c07c9d0d03142ff25d17438df2ab19a32719a12b1df7717b777e71596a2383bc84a4f642a1d8ba31916dad9ee3f1b477fe2f654448483042d492e394b253dffee81e81cfef6b947180515bdb3a1fab77f5b3f4da5d37a34f53dc55079802d15a09fa0debefebe100c77fc36770402c90078a825d5c8bb88029388881fc832ecc6c6e46883b3e592531dfee090b2bca21f7a087107be816e6ff5c30bcec0321167e05dae78291cef641bd7525aab464715bb7fa20b9b35a188fa1de69753763ec0346938148cbc0b07959abee523681662f8db1657860eafae084a00913190fb3496dff29b18ed6a17f893716fac05a7db894b4638486d003c6778f7ff0076bec83b3b2dcec0f24ccea0586714980d51f728e824058b4038cc09378105788a00dbfe3c203960b8b0186cfbb25f78b98340c182c8614f4cf0d9869c7eb88948b8a3a4220be1b2b4f406f9d1b2e25c345ae901b38c2c4f4637af31aee378019041ea840280070f7a0f784ff97b2b4801030c1b6acf92b0aaf629800e331a57b7a9fcf66f701c537edbe512085069808b1971850ab7074997ca28757915c2c9614daf788861473cd82093cfe4582d1952841554e5c3c11aa69487104818900c35c65eddc28d11b667d98f8692e9d310f99c660a2c5fb8489e0467bacdc1ca6ece4af134e2527f5a487e80a13e9a9cda34d88afb7761855ba0daa77e3f8234298254c6c88800e591225a6406213568067eb55624916a0f2a764be4489970d0156224c2023d93b60cc84915303d62d9af8b3505a72e9b51ca2fc878e66d99e59d304952ba10494b2c24c266cfd723ec88820cc2365537c735194689c0b00d4a3632fa7d1d38321aaf0f56bdae722f5f86f61800a859226d385d1193a2207a542d19c71eaca4a9301e68b67162b6a80d3c8f7bba112fdd9dad8a395a9aabd5ff431f11e748afea2ee222e012a626b03f3a22b6f7e0c8bfa19c740456e00b8cf2094e0ddf74989d8e14a22b1eff33af66916f013462a1d232eff8eec9c6fb0e857fee351f09ddbb2e75baba1e1437bf45063840a19d96349ac54f3b30df79c37d43beb73f38a417631a88d7310962219cae82c0a2525fa23638c91210c67d9cfdecee5e30112492ec8fac299c69d13faec643bbffa86866ac9ce44d6d18ada66abb81ce8bda50276d0ba8c5952c21e12cece69d45e2f40b29fdda435eb0650e1943f741ce0f569b197672a2d1060c191197347329c4d8996fd02ab96f87939acb2c78d15ed421a816ab8cb46fe758fa1b646309cbbea83b6d15f52bc9748a88fd98da29685720640a041c6e1431521949534f4b4f709964edd342bdf0d40b15f7d8f6c2d8d8ae29b03704a969305a52defab847c50247f48824a11a24cae5a5ea2591ac30ecb401b84437cbc8164733fece21976a0d46cd54448d71248f78a567a91de75f15345e2a976a47ed0a75ceb22983f0283b0b06e1e1134db1fceb6606170041513fbfdeea785edb1aca21dfd932739888d22627f630896081b06ad416a0684d40c47b81421f967f653100bf4983ae97a47e414d2ff205639f51ee1b26c64825600629ac72ddc4a1a326a64bf9cfd86c5b476277e5cf56f468d1e315980273fa2edf28bc68c5d0a7bd33350c553a1244000911269c0a0f6f86396d76cdf21fc933d59e00ea1f429cbd0b45121e6d566b2d2631b467752bd803e4ee820891eedab8f343ea6b2b010b4046e9467c4f7aa3b6152ce318c2ce7020b140e0f2e9e8356b7cc37237ff7a2057a6f9d6ec9947abbf8a0e127740b42539b375d6b4d26848b2b8dd1541bc0258358099c051929581b95ed9fd58e49714a9c732a7e0bea1f00df6637bc90ba7ca4054fb51ccbdbe8b62cb28f5e52201786b2d44bfb7b1a87bab0c86d017d2b30eac46d710b59446b65f8ea808516717b4fcb868ce1667952b0e716113e194ab7f02f2b154640b2f6f8c73c072437fd2025f47e203014b42a3910eaccc23a117f7d337e3a147a195e13a1966504578cb0e90a46ae7f30bee003bfc38871defca6b7776dcd11ca0ef41c2a658ce5df55041e706afcb357941d2cfb4466b0263ecf3fafdb640abd9727b084a19c8c76ee5119bc30eb102f08f526cd7411e98665cc85be52352953f9b92903ac59cf29867420a276fa284e28d1cb6dc010e7e2eba3ccdb9ab4e10a650ed850588572c2836d63652186c932c8f83b8134ba3cc52dd24db5ac345b82f62a43eb23559899ab57d238d1ef2cb6897ac67b760247e5f079f980ac636223137b880fe8d312ea33ea0b8c26baaf62331124273716b39b7b7a0a6ba62c60971f40f0f963bbb74526c2135247c3ebc5b85e5e7214b3a45d048ad69fda44cdfcbd2e393729eb6933c633c30ba39e716f1c5216e3b9588107a7f336e3725ee8e742cc2b2edb01e101f6094d652136b3278180c1388ecc05a2e83f78546c0aa6cb0f6dcf1dc068faec31859a779732661a23aea2c2bc12a104c3e2cd6161b08687a8055ecc224c9207b415df814d6c9a9934219805f5c635c92e9a69282a01edb12d7fe2ee4b41c4c283c25f7f23f1fd858cf796fa0e49fcde3cc0eb17efa56708f8e961e23d6355ccb722ec50121277aaf7dd0bdd5c26947cd3b08af7512970fbf185ed6334359b094dd833aec2c2db510508272a85c9cd07c86d1b540712335391e71a72f36144d9ca31ccc7f9868a368570d22444672936b2d6a3b6b87a70e6da71cfefc1b530baab04abfdebd98100235d73fb91f50fb3ad7996ffadeb6c556ec9d7bedd21f223ebd2132ad7d7ebe7b13f87360adfdc33e34021e27029e99b89db9d70a5c563a06b87b154f5fde94e6754c9f8241668514155332c58db982ffed701fa0fe6877fae6ebf1f4de88043b2ad08c971c264085a211326fe850ea722e3bde8ab33555ac56241398c66599f14740864cf2b66e74fe8f6ce88939641aecdab50f2b887ddbb3fd372688ea4d3c165b3bdb1626664bea0ac692ba7ff142a4a71cfb0989c50d9b2990f170a8f190095884b09cedfae9a016d40b6f2429735ddaba6d3df4fcf55c784fd74e96b65e2c3a03f16add8ba42cb1a62107632e9bf22681df737b14333545625a3a47e2c99475ad43246ec0f7691a9aa3de64281bf9bbb55a2b02a85ff15dbb9208f9434ce706b72707cab8b26733d76b483bb131a1861a6fa3870e6ab7358249055668eccc5bc613554d4a73569ad51c531d2daf3796acdfafdb2c39b3580c31c06d06883bea0d1bc018aa7bb176e0d6eb9668bbe3cf7a44318b77f35238909e0e4ea200c0911cbb20874a8310060e79bedfa2f0174ed476f93aa28c6e439aa0ec4a063e670b49a63236acdb6bc66bf5e1e19e77c86889d6a065c77adabfe37212e00c57065457b14c697cf2abd430ae8934c38918b5a280c1d9015fbd1dabc7e1be1c4e69b021aec83cdef861825cace078a7966bfaed28ea18fb3d23e6a37a72f1ba5610afcd7c2cf1fda3955aef3d26ff3aa8d2e98ff9f5626d61f010f401ea87c3e6340b14b83eb3b94424f9e64960e55a20cc93507dc32b1f989a9e00740f83d344fd177bea42c9f453873f13300c08712538ef9c724bf9c5acc177f28ccb4cee4a7ecd51abb471389a7a19fef56da4ca04b93847da922017e574174efa3c8f33b2274e9f16176be2ff32adc7e9c63312b300c515b00b7f469e336f2fe00e0b0875bc8c8d48cdcc271ef59da5035bcbdf8ca4e285ce356b2b449dc12c6ba01e40ebc1619ed1c95ebd57c587bda4c7f2aad2cccd0b2924374530cee19eacfe2c5a5bc4afdeddebfaa6029cf87883dad183bd2c2629a9de2088b2936e1c255595f96badf7f690e4301dae0a77fa677d0cf11aae0636819268d5214a1b890b1da73dfdc6d6a458b08e4f4b6c26b275c1ab32e1ff03336f1b567901a94f20d4736619d9095af2f301cac5bf47d8307ed21979c4c714dee377141169fc8f5501fae2451b257d9b517f0f5d96465e65ee080e46896eaebd3655fc12751d3ab70af2bb2edfb1abe05c385bbbda23da264d13480c15748b345a9371f3ddc9f660d05a834e3760220aa6a85b972f662fd7ffa9fa9fe62d6eac610be6c4de593b0ff6e3903aacca5aeff0bd4d4316422d0d72775e3ff1770432302bbb3b7b0b6e80c020ed10455e00ae6c28bd4f5a032705e7047f919cb8ce577119887f760f02dce6ea64c87998979b118603c0776a2e67707d6d61ed9df19c84239206934d092e29c61b152b1ad2f74ff5ef9ec2a4e38e07b50c0da6040794e0ef8db11e51bbe0e5a27648339e0e3a88f6d0e2d0d02c53b020ef80a763236012925af177d10841cf00f86656d01744a5e97721d1319c401ffe419199ba0a54629bd5e0aeef6c220077c8af95801c45176cd945d5728d1e5133fa9e1eff2e89dcea7a12c34cc2a6a7ff2611c13531b34dbee85324f0ee758e3fd6f59f2fc3ed51a46525b6491a55eebd528c0dfc4b74568d0ef9b6278dbee2a195215820b142b48ea137cfa14603b6fc88bd6131153e35c5e5d2309159627e5f9a3acc4e709b90414f279de9e88f83c7efc9d34b577854f46ec989fd8c9d9cce7ba18f2d3b5e16c040068c133fbc7fd47b46e6767b14399aa69ce27db390167d584ea072b8ae76dc76a91bb9fbf29a6e5456bc68dce5d4a98b92de0b9a8b02abecaa297cda46cec43d53d2fc9289976584f7137a17abda87832b61f1e085d84463aeb4e5a456339909ba2772215f8013551c59d786351c75dd986ae70348bc62a6fc6d49d1ea909fc26ba40254af076d3a4b9a8819810afa222ecf70e8a2e0770888a71da54c67f94bda11fe8302a245608d253a9fb7b574bc31880235624eb5261f7b7244c39c7c9eee646824c0908110f6ae12e0d76c0bedbb07a75b2c5389bb4fb223c194cfca67ff88817a2514edaef9a8583680a558405252ec47f1514fa7b200d7576a4612bc3433ae5945edd2fe26895e84bb8895763ed054780426c0f3ed27f80707132e12e9c07244c247e39d68c9c8e2a023997c6042fcb52a8ca58206ab9245dd1aa28db4cd0cc97deb5f8ee1a81e38c98a82edc92589e660bf938d4f9f228fa0d1c0b0d2adad9ffd8a13a8be7bdd098af77ae8e40dda2800e80a0fdbd7bf6b4e1cb0e9768ede83edb0b2ba9cd125a35a0b886250db590dffa692377020840452c4d65bc6ea0dd3fd3221d4ef8d25d60889fb00392356f368aef3444d0f6581495cce0b592c3504885d2497cf324bfb149308952bcb1097de14bd3bc7ac9d335a1e76433fa243d1d8e83de925c66185c6e536a026eac8afffbd900e09c6b9507c25547a887292110716416ae65508c6676ad75232f3facd60453ac6a0f0e467fed8e44bc3e0846ecc39e9e2779c68b42cc6c81326734d904539b6292894d3399e932d17946c600265c38a202bdedf5528977d8bf364fe72855f1ee3d6f7cfbd6b7befbe65bdf7ce3bbefbff1cd37dffbcef7ef7de3bcf5db1ab6f80a5021a8ffe75b7ff980c5a4f3768c5f398fdf13b2bc27825a2a8012e4b89720274c90aab8bbfdd5053b725bbca8ae434118cec58fe23ee4225294abb8bb80d535d80cdc23981b0c57328d42d034d78b52881149cfbec65bb7fbde9151bd991a349e3a2a0328c3d05d91b88da7b1a56d403afd023c3c22976f3eb8eac7525d49500d83449c8ea73937e4b9c17eb32718aceeed021580b020a9f62ea3e8268980ddd834daf88b839991517d04bafd4751d859b2ca7e6fd35d14366e1965c150ecfd5584a0e4c16315cb01cf9f76f5549422058b0a99402c64f449c87b0df3ca6da8701e1c82aa5dd3fd612bd0b13a00253a1edb33ccf22a10e3f94f9bd4862edd52a5884da25a7ad0a6ccd5466fd8ad43d77c11751830770529801875e887c9af978943a693aeb4d3485fdad3a529dd69d2971767a115a6f3201dfba9c3460f56458ecc89cbad8f59a6a2fd337954926806284b9a02952aedcd1c4790d71be4ac22d13bd657219a5baa31d0b21ad457211ddb393edff5ed6dfa836228f501260ed6657f0763a5a6858b922b4214fe9b7e58182d3c25849492dde6fd4b74b027c0a72994205f843d7ebfc3c08d3b59742285926db9d227c44ee76eea913858eb4f592081949ea7c728cedd231b75a1ff05381b7918656ffa7ff00c9dfa2f94c557b4360477ac352d0a2cc61fccf5007e6feb71298c2e5c45c19ee438704ba8c4b321fa88a85d92eb7ff65e2d103dca4033759315381bbf684e16e42cf8378dd5ee170fc4c25d44df0748b5ffce1071c09df46f0eb9c6af1a270939177c9ae36af4db01e3aa4b7e8e9f6b30cf0561179ee499a661308e3ad135f9176ad4214dea064b70f67ed19820ceb5f46f18a9d9af9e10853b08fdcf906afe8539d2913be1cf187a2dbf0d7ca0a8dce7e87d01bb5c133ed9230dd719c20788725a937e59410fbaa567780163fb6f8c88071cc9ff86d035fcae69529c63e1db38a6a6df1e30a85ee6e4fcb807eb5c1c66f1269d680d0783e81951d3bfa0471b6aa76c580367e797c60982dc659fc688dafdeed0b8e2829bf3cf15cc7380f09d2769a06f348d230e644dff0d15754023bdd912988ddf0f7a5457d871f67e0353ce0126ef27096b8ca3477461a269bffd23c4bed0d46eeb84740ee46043c9094642138e09251c1192f0f32660e14f36e91b0cc3c81352d37f41891ed6486db007cdee770d13c29c4bbec61135faed19a1b083dcef09afc6bf18231e7112ff18c2d7f68bc60471aea57fc348cd7ef58428dc41e87f8654f36f821b5d957376bc5d87a53966e6c92ac0b875fbf154b2c7d04c456c8dafa5d0a4923a60981b8c08c3d1a9d4c31182934c009f6d6df8fa013dda6f3f3489c84fd67a8d3e42fb8e879cb9d6f7bd7851723b566268cc3a46e1c333f0147a8c736b9de311a6fd498966df8045a145deb32295f4f6ebbe79a224963e872e90389386ff7b7637b46297694292dc3999cfcb1d8bbf4c606a30636ff140cf8def8a9c409e25e0218350bf88b959a2c3b53462d444e200b9b9d5d65ba3b29c85c40cdcd02ae73c75ffc80a6a1654c76bb7227f66ff5fed4a149f03e39f956ee88a233e0f7f4644b1492a584e2624abbdbb3aeeea10ae97510170ad90538512544f994e77fb4484c0affa36e1c3f175bef26ae4641afec0ab0c338be745bc8e855569b80290b54a5e50d72216d47b07058a7c1c8e96fd4b9bc4a0ec19d5cef3785856ea9387858b4a998879cf04759499a54205a33bb8402cc27f3cfd4491db73042b74a0b7e696a942e8ce53c044316662c1b03238c96321f8b9764b9d4537db042e59accd1de93befd3a86456bfef61e56f87fd50714fb98b6a19ced3c5524af3ea27f31899eda28b4081b7bc705750382e3d0c26022ac52425b8006c28698a05e5fb7b86382172acf2f118a7dc320b4ee894e6933fc8a2b0ac1f3301c3a0a2ecf2f7f23f58f5bbda912bfb55a0d18b3c517ffaef6d2c0091d5eee11e170e94edb3d5aef48bdb58a80d9187b206db6aa42484b18a86e3616900e48e1251a7144b43621b69c0820694d2d9ca4dede29f526324a8846cba9df20cc921bdff927669a04da1ef713635f1eaf8f9e972ade9fa8f004d1307bbfe1709a711f57ee776e57ec7ce5f6163224a4b7616a4a05b443f9926fe8411da79957d0094d021541ee2f83ebdd34278a2136ed45863d0a5e1b677161ac6a080fc8dd4a3e11163ce7b771d1cb7d37becb2483670775cf5fd90eef83e9d5b54a429e467afc0f166bbfda44c8fc022a117a7e01784701ccbf797e03fbb70ce0a07eb439cebe06e41fa161df401a813b819a4e46a920a073524b6c142f4b0642e0aa45e029868f651411ff3fede65a8b966b011ddbc0da85f2cc35b77d15415842c301b6a4f5e1cc3c1c2c77295c80f059ffa2c385618ea5d1b0d27f82982d3f818d0beb5bbbd5e4c9aba784c3ef8d0eafdbdd15cb4af5fb03f7164d64375023edcbf042cd449db25643ff26f31c603a0abbdce4719d3dbb16558a46df042e2c95fda9ed71cd26296339820d1068160dbe80a4d10fd2104931efd8d15fc46bc78381469fa726221aeb8a1de4437607f3fee0f9002ee6883183a4572e133605add887ecc78d72a9a9ed3ccce6660fdee19c3d3d84fd87ef88b1969ee0103e59f4f12333f982dad7d304bf2b3a431f317330cbd50253725594718c54bdc5dd4aa1d9b05abdae970235b770543101b1e7b3eee62dd808844a2354a43cbe1e6b738961124c66e5cc906b93d8bc81ad3abd3883964aa6aa10c87a0c76c0547c7d87d113e6164d691a530350ec241d7dcb84c73390ca1f48326359bc5652c3d0d442bf7e13cd57f6baeb0e36846c6f5c759b59f5154b0628b802e6df193cf3838afbc978ac459d69cfb0d92fb175219f0a49ff03996d6dd2631ca52d562509165eb2a81eb23156aa9b120e4c01375483fc76c3392e2d6008084423e262df9808bb2d023d77babcbcda680d0c48f9a7cc410b02e8cf0d63e039044b50b55e4374bef31b2ce765da7a9993336d05c5b438bde5eb8baaed96d6dc0d2dd1512860a84959625f64b0de679a29af7927264bbd92af110804c1271ac94382bc4867f3caaaeb7ef0fab223b80cc0d2650e5e8fdd77dc654195a6c481d167393d9403272b9568a0d4e64a39ac747ec481d60ee362c7412001cfa5017117889c70733a8c887879dd20ef97f19789800b045a05ab00ca815bd3d947f8bec599d32b793ea1f219c0306af8d12e933180f50ae48578492ff0ec4c81a35885d45f947048b9c464c5b94fdf884b84f303303169d3dff9632fa7a0e97cd007488de834de7d3730d1eba0ca002f9fc5c3a68b7f62bbcb8cc550d4f25f0e8cd483d716dd6804f519c4c7527ce21d245b70d0637d1a169a724eba7b3d5ee25f205169d4bf18d26cca7c586e78c25d703128a476acb3b4974195b9486be18c8043604248840e7de08d6c4063abb77d9d49cea79c932bc732aba40d001b966de5812399de85392b860a6fe0e47c9dcae60eff2c1101f5137d419f6c8de0ff62dec4bb594b8274e0fa76e1101b4a0ec094dd7e11130b020cf38c08313a6ba92d4403826627df3f62ff84391f243ab8651018cc1b467a88725f5dd80c66ca133b54c9a8746a0be2a1341bbad4f9c34e89b8b6fa87cb904720a5660ce39b66570b33c2a18deea6a49409dae63038a3855df1b093572582e1364e5ca8378a35c969252bd172ecfa1b4af181cc2033f2113db7ec3923396035530886c69cf4817389894daefba59c6385d1d04bf0ceeb1b55f345b46b9cca2082cbb048a3fd273603132a0ecfe26f01f10ed90e3a3153d283c4fd5e7e8861385575098b5497a6bc44fc1ecbd75e935b1f8cd85dd0c99d5b0088cb9a71b86995d6740e154ef2454712347cfe170efd0463171e7ea2fe6b94cce95c3ef7a6f1afc1de4445e639ba485ca3e894f2be5ef5a57c07555e3c723d20190ef87ad66ab41c896990f071ab62a62299e981922d038b0d3df2ccaf602921c739e451150098b3fda7617e8cb6bc2062dc4a074644e2f81c411b222003b301c7f80220c558d702e913e707075bf68996bd31e36290e751e97adbe557b3ef5087e1f8021ae2ea665207b80f1ae975cd1803e9b66f430015bca278be568fc6f2f7b2198b9d61d60decd708beb3129d601918be13323f4d7c7b56ed75818a85670a0daa9114dd64075240b19a87363f70b7401cd9f058a607d3b054a8b716a028dee601c8116f3b3f1781d50e7b5d57747bd642da40ae9d47851f0e78971d8fc8852f0843a8b8ed25d84e3dbd0908acd55bd67bea60c2cc1dde6b9c79703ac5f90ca71010d64615871482e8973cb3dcfd35fce3a060d419d3af084cb81e58da725140dc4d347b82ed0bfc818f22e3e94c70b2f82f76ae715b250e9250e15470a057e90c231a9f2ab226bf7a9f58caa63571edd03427a35b23c265fe587a624885775f99efed961a436eda71423bbef811f45573eff276c8f44182a09b73f697016a867d0c84b34becfce2cc01659332640df82cae00f977c6aec2534045fc4bf03fb3462d7869b411c3267995a22887c0213f8fd748bf5511bba63e91da02c1462d7af656bfb624ccd515c1a94691f4f09fe0511c813b660c71b909b2c2f344ae10519d97898ef213578af870f8539f69e62b49e1d972288eb4355c93bdd0066e1cff171040b5bead94448d89ac8097cc53dd3f10a38d9af1366faa27324c7da68ab22b893c233d67862a4fd5f3e7a459bc98634e2b565451aee32ef47caac9de605c5a22341ed24cd21ad37c2d88e2d1b6b92cf102536c3b3279f597450ca8a583bb5c71419582f6f7bf186e84f57c59da9b34da8ea1b1eea511ec70ed3f5c52e8cf92bb6154456bba23dd297b40ddc34429b2d4dcd0a3b21c54d9ecc667aa8bba02246375e869b3546e12a417d0a42a290e7120efb1ac55c5bd9d96461cc3252cb25721de96f41a393d410ae753559e75fa9f8f10a2a436a4c8f5a7f7a4f56e1a820283bc44ff4848a1c89f38385d6225058c058578ab3d58970a5e4c417aa38587a13a233c65ca29fd35ee64174a43d80c17149abe36a0cab234dd505b03c38755cb3ed7065a15c8ddf9bb2103e1ae074f9e9faa3897d7070662bfc5a5ee1fd94a4bed34ffafb0fb5fa4061c42a298f7d01746710a32d422c824d1498fe491a34aba29c31e1c0e239b1ab3ea2d43316f248701fbf54d6e551e92b7ea038e4f5fb88f908423cf2ce38feccc6071e7ebaf4930a1b1004cc8f7b100a43b4aa62898a1a270a8b83d51e32d7e99629f564308267d92f537aee97f856383e60f620f7f8eddf5bb9e50e5c24ba054072db9f23b7f859ad46f3fcf6368c49d7b52ea32f4898b492d871d3f2335d0209b5c587ed2798520511c83b57ca9218502e1074a3daa02d24fa0a65dbc5a2c58b0e32e3fe42d9860850978f0e90f0c134e62311f8ad6f3e367c4e6cf80461c3b3f26b78d4cadfabcbf97b42740dbf863626d3654fd05a72f1beb7e43218975cd9b3be93cdfda134b3e4b238bfb01069cb999bb705d1dedbdaf24be58c4ee4680b663ddb9ac008343a99ffdb7440cc72f31f3e640aabb638ad9f622b6fc5be4ec965472f2d4b91d0cbf8a3ff0a941a84313c044794159bfe96373346fd27bd50b10f58fddf63f7e50f85071852876b9eddb4c340ee601b76b8f213da2c70bbc3c55134b5688c655c94f26a8ee644c506b2c365c90629da43412d72872bd78d0cf0c778e00b9ff96613399065392186e10c504e443f0c34a356102562caad0fe83eec69f495d8d2cfbe38250c4e35fdcdbe7a8f5ce1e33c6b2ccca3a3a51d8a4a74ceb9480cb06a7aeae179917997093b8320e97aa47a587cadeed72733796ffb34a03f2ba7e4351fc6fbfffe0f73b8664c57d143ef8d2665ed7897eb7546d83e14d00f37eb265e611d913ac0dd75afaf3331c45fa6794ea62d104b87faf8539056e112e55f85248a45b5d16c7c442143971862354813049345208857d5fbacb0229c3a37ee335734a14c5648d88bb06550f4c361697264551d38543a62eba0e0baad44b9de442446b06054ffaedb8d847e440fa7884d96b06848fd6e708720baf68f8025704412120655bc7b7d9ba073a5106d08a94a70d4ffc1a2517aad8b06f2804a9f363f841b2ee4414e8900377a708f6cfe9872df66b2b095d83ddef1e81cd2ae29089e7753b2f4e58439d9a40f3d82407fbd481901343042710aba41158b38738c95998f1c8ef110675b38dc39f754bfd321ee17f864d06cf29eef05cd72772dc437e9f54611557122505bb33b248a6e8587efc76a4232d4f6c0914933b317ee2a6781cb84711b949c577db3fba8b5bd4951386994d5122be7558bd84aaf8ee58be8e34702ef86ad914b3e802956557af98ee962cbd4f2a1ca494abdacd51055197d47275efd72ecd35257a33ea9d20d10f30e8b45eaabc791553fef975c02c7dee0d553cbb76093f8461786f20ba08037d402335ea16bde6f3f6aff9fdfc010e6bbe626a6d4ae9da452059e0404250d4f107846b43acc40cb025745b02cf053d222214f17be49fc94b42c70d5d9e4eb23222587d21f60ff93c8a6e4c4676245a84028aec444aa628911b5442bb7dce2fa3f610d67a25fffd50d9cce21e89f026e0d7e0dac0c200dd2f953a7453fa3294e81ac4953f38ba093b09efae6b41a7c53b460d5fbfce04f91cfc8dd8d70cfc7727703b8e7a3001d6cd031051d493c3aac8e241e0086076cf10034c4265408baae6acbea5706d1425842e5b64a8485eeeb3354851be37c12fe787e2aa84461b3661c869f5a56fff947681f608403c870800f1c90e300200e4880c7014430f1458e93fc38b89ee5a76e7d69d5b599667983da37add45095c33c6d53557d294e39c0f3aa1b9b3034f2273bc344063c4c4451d1c0c0c89c76a5fa51b443b4ce2d37231632eaf28400f7e4e8c3f84472e858a20d189b50a737ed13de7609271ae0860670e1ee42dcd30021f50e9e4a044fcd40ad3c4aa0a1040794b851428887613553323f8a6ca97fed0914866fdae5692b88a656fa948eb9bc8109eb4afdbcf281314dbbf2daaa7c5f582d9a12f5a756ba245baa935a7e6af8edd36ebdf1993aad161960030f03b2f03040f32ce00ccf023ce059c0910504208932aa504c35785fdbd0a2b06b478d29953abcc06b629306b53d09e55b539c1aedd678d73da63875e2508a53956ca9a7ad3eff489df8a6afd17aff6792e0e22509f46f9288a974b82789ea2c2df545015370d7a9bfa9a7f2714a737f10ad802d017a48401512c0027707e947536799801bee5edd83841a4888e141220348581e2492f01ca186e7882f8ea0e288ceddbf2bb2d45018565048c2dc165028b2d4505556d3587ef42dc1d4df7c9f0ef5d678ace1c9b5f2e27e5275a23fa9bf99f11c81802e585a1010fac9a7a2692521a0f320e006ea0064b89b76d407c8c2dd1de59ea73de5470f50754993f3f7f418400b8f015c0a808702c0c0538009b8fb7f264f143e49685afff38f23dc43802b780860020f0124e02140e7eeafd37a9637ac5f75a626312604f078eae0f1d0c03381cb3d9e201e0f8e30dc33e80bc9b0864e429f3fe0c65846e7543c95a9d39a6ff20c200dcf00703080110ce03480031841058f112ff01801c44f3e9fbef665fe84b9ff280e7d3554853ee7d3568c3d456ce129c20245a49e22a2f01491798ad8e129e24613ee1140183c025882004c8f00ae47000538d115e5da97a957a83af1902b3dfd08abdee5c947553e129cc9d0894f5b2ab146f29f7fb8fb897b88f08287082edcab93fb38a5e9212274ac2bd64424e15e99b66788348670817b7582539a9ff2330904c1ad5f1c8d8408430bb1c373030deefe847b6ebcc0738388e7060ef76a639c6b4a344f98eab515abb6f5566d59d655ca38744dfb949a789b4aa52965cd6db535d55a49312c2f249927ea9bb627006704c0059e00d80028e1ee6fda35ffc63832a39752486a97e5b6e068330992e4e3b1f4e77f2efdc5a7bb8fdc0380230fcad8c8915a790000f204b1062fdc6d8e80206c4255d02e517f0611e35e4120d37eee09e28657638ae4b18106c9632389fb8cc74668ee13e30d324d1b38aa7affb345c23d40a8e1a4f9bade6bab07082ebcf466895366f4b735eda8dfae788040dd4f0f100c70d73ade14cb7d9624ee4a47df4733a24921614cda02314dbbe2294980bb0f714fa7099e0e17d525cb9a122b364d8f87e1483cfe0733fe10867bb5ff0f04f04314fc90c4abfbe7903ebca10f3ee883a90f38f8600677afbea64ec2f0a37379723f757f29dbed52f121007ba8c21ebad803cd1e58f4e0063da4400f55e8e193072de4a1087940920790fb554b67e9523f1816189a8a2c41e5ebd4a2529caa9f75a43835a45627e19fac0695396f928fa3f1e390d8b4ebeb1265d29fc96aeb89b2e80c1ea2c043860705dc810b7700c11d9eb843107650821d72ecd0803ac4d450f5916ae823b1d656a56abb4fa50ed1d2a44f1cd275d0e870061d5240074c87910e38aa1743f7b47bb4393f43e2135bd37ed69fd45985a12ec3395c63900308e4308a831f7210879a38546b98b18614d648ad21c4ddad290c7fe47c5843da9aea9b684c610d59614d99a2152d6ad352299eac2e6f88770ef1ae202b53bd2996677996f74cc91d3bf49376eca8df132f2d2f32a42255ea4459546b1ac021091c5ce060c41ba2f08624bce1ac4e623ef97585f323b1a646c3fca91cfc695dea1c6c324d3b9af63326cf9637b87b457243195e4119e7fc468e543778e161e8861c4c92dc10e3eea8cd112347ea4972030e23476a75c2b401086dc871f72aac19af8476f4d106264e16471b9c0d5e54af2f1b6a2ace8f24c4064f35864e7c566d4db71ccb7426f54152c627324a7d90d4075983b88622d4b00635cca0aeacdc8c6fda2956c3136a4051230e6a68c15d9455270ea2537f13a4458d540d21eed54d16c55d9e5e8d1bee55fd1beb9286541a1e908624d2200034b0010d6270f708380e3480000d24347cbcfabc53f971aa2ecb6ae5e4714a7d561d7e1f2e4154879f1a9ecc7c60c2fa85e069c730279cf98bc79599da445db97844fd19ac70862fce90e40c2138438cfb5543333e9e20c58031241f402adef5da2cadba2a5487787aad49e217a966e882198c6006339cccc080329451860fb85fb58998baa36a59a7ff86c2308c89f96d733a8ef9ef998aa94e2bde1b63991d3b76eca84cb30c5206ab0c0548c30e38d2c0421a5fb87b5977d48edb2aeb5375280c2b89c3961055c393969f49c34492c8f00632a441862890c1046498820c22197838e8cb4cb3523ffdbbcc456aa8d6aac252435a084ba8dd8555a2fad5d0c9f58109ab7e3da47e61099be05543d5c9a7fecef8aaa1f0e4fac0843554a1fe9c19d18c258af76b6b4275fe53aa4f3ceaacedb6f7fb68be8f068d24ee6ee448ad6e30de10701c68d478aaaf8979a47689d23647f2e39bd2a071d537ed991cac824da81f738a67be6f3496db6e34bdc158c8f7d1a4a0fe1cc301c4f00731c0410c2cf0cab22c9075d52642d3b463588bd45075f2a9bfcb8c12c311616883bb07711c6180411868bcca1faa52648937bee9cc9b40a669c770632c13daaaff8c3b9c918633ac7006196720e10c0f9cb181332c7794949a43852554e96b3fdfafa1eae4fac0d4d028a5e6a84090a64afd0dea4f42d49fe1a73ebea9d6fb7cd34ecd2081c192c060e97234fa3e9a94941cacf27d345fb0c0179af04217bc70857bb53f55cfb7a6f3b4268a56272e8515ef13df8c4733068717b838b8bb0fc761860e4a336ccc4880bb931c4717bcd0051478a5cbd234a6fa241cf2613dcb4fdd65d529f3c47b143fdb4a92fa2c6dc9d69afa1b6cdaafcb13ca99ffe6bfa3fcf937c619d4a39da2a312366fcedf93db30202398ef3b8d35b7850b375c38c016c4f06aa7b8de9c7105d9d2595abb052c706c41660b36ea586e7bc23bb5e79b68b4f0042d90b470c46ac1882c7c9185eb5578225341b7e5136a1c6be2119aa65d09532cd4c1731c5808030b26160ae036472a08b4cd54a7cc9d4b5597d74cf115ae708509b8699719c7151e700522ca184219a1bbcd11d089d114ef6cb11265b815aa608524364740468e54a8cd7ac60a272b30b1cdf47c7d927054010e55b0421572dc34ed884f30756d151050051c5400830a252a20600a634c01b539526f59412913c7a556299de2fca5d3de13bc6bc665463fd52965eaf2b7cdf8d62980a65022051db8db1c31eda8ada9e2e09314342085236e5152c811053b442189db1ca92c2d202347aaeab25293e28a37aef7abb628521472dcab2824611a4f1bfabc020534dcbdc67140210b7771b4e8cd68cd6a356a4df9636a85afb62828c47875cf14936fa2818208071968b83bce95c4f8ac1bf4a668cfb46a8bba9fc9f82293a185bbc7380e329ca84e2e5a56a5ea3f4f5843a7e813c4f02aff364bf2c44fb802639a2774ee3b3fce59862110c7e10435aafbfb339a7f9fa52986344ef8815757c76874f249398d3523d3b42bdf372ae9d44cd5b6d2a4a49cc61a3d1a09b94f242507abb87b8be3684235461ac67882bbdf388e318e8c718457a115d5a65a5155555490155555452a55a946eaa7415584f5c43ba5c247fdc2175d6a6a747716c7c1041930e1c404093041005ee9b086aaabcb7ca6a7131ef1cef1b184122c815c020e77aff07659a9398d39610d5527270a9f37678abee8b252f3b175ff8c1254f0e2389420a4d2f7b4fb4693c49083bbc3380e3164204607c44022c6a7fa5ceabf2897951ab1cc63cacc16ef1ad650b53196d12e2b353575da6c4b9fab4eab4c127a908423497841821b90a00577171d0712321292384211701c011f0147187dc0110617ee95fe272bdea7df2508fe93610d55ff64b5e819aa422c237125d52f4c655b8e25f9e78b610d559fab06b46b787252559f0afa6035617db19a6659a4562cf50bb7fe1bd650e934c577a95f18d65015ea509768fdff51b9acd4547bb345654c96b7547e7e1cacf57ead7184418411bc30c20a8ce0038c358081060e304080038c28dcab1d7fc27a078f13972933b563e37347355332d59554fdb5a71397e7f8a67dbf0c43fc52a119d7941996f42944d5d279cff224552090695d566aea69ebe8a44b2ba84b53e08b297b323116415de6df76a7f84fe576773fe1fc43c67c9ad79ae4251dd85feaf0120e983440007eab9a12eba8ad2ef3ef148ff29f6759ada948fd4e5c3e4a9fb6e27ddaaa4beb52ab9bc52f54abd2692faef8dc3e2a28c647159ec45450cb27acdad65a431db684614c18aa9fae27e2a756fa2ceb89fdd4eaab965afd2d757d54e7fcf7bce7a39c2d162dc772db6d6fcc4797dfa7495d6eab6d1813d650ad72aab14996199324d0a779876178525341e0274485356178025650cd270c7558bfb325256aabc712a7deb3866ab5cb73b45b9f8fe2d25906953d31a909478cb186bb57637c31468eddd64433c6c76b2915ffa2a793096a30e10baf98c004b4620210f76a096d488935e39ad24ba882670926f7eac37009dd49e8c4e7a72e215b25a0a1042daacf78ac66b5550935ee4ab0dc89e01831ccd8252a460dbc02a273e92c6f462b9ab435ed5265631c30e395cf783c4b0b9ab405222409484802063cb439928495249420210948b8c22b153c45aa9160193952ab23cce1086284a023618549d311b2f023004989f5084784b186576174e1f5c4619870189de3306eb8bb11ca70374212af8c3053e51457d49fa83fc130c3dd53d63cc1d0020c163014500431142149954b27c6baa67414a9d29822c06c0b6e0b8e462f2929e313b97fa6f98b2f7ca14595dad9a2295b3ee90b9a5b82a09448043e10010d0f6daa246e24ac8fc2102174c7315f9f88605556d525116ef810c8a886c0850f01f5216cbc3d4230c32b2178e1952e8570855742b08260c61804340861102c209801841cafceb3a6442034c0b422364be7a3b7e596e00f3cf083ff018e7adf94df9667ea032cf880043e80c2073664728a53fa9471acc90b1878bcc871f762d40335787a20831e08f1ea7e4bd5186ffbe339f2400e3c7081870752f0e0c60e7eb0031bec80c6ddab53d6e34f21a6baea37d1541faae1ef161df041076260f47560ea60870edcabf2fee954bec6baaca02a0765e400a54b1c98210c3820010e8ce080060745dc200b3790c10d72bc3a61ea17deb086be4aa7f97160c21aaad221d5dfd85d53f6a42bfef0065dbdc102ba20a32271b53affb5bfbb808157765b16ddc5a79e3e6ca006ea4f8f0dba2002135373ecc90626af36b0dc3d3528c3bd3a7199bf862e3f648884b8065ca4b8fea9ac418d579a0678a0419212cdf97ad200488ad619e061065ccca0f31954199021033475dace4f16d532f81c0331dcab1868516b8d41e8952706384e3b7ee15eed14dd6505c1200baff49b461858ee1589751233dc9324f12461adb526096d2eaa784119ee95469d2f48f282cedd0566b80b522ea8eede82325a90c4b620c659b0c6696b09b3808bd19e766481c9ddab5a59f0f115a4e1eefa9194fa91941accb1a7ea1a61590ae20da2290a888082110506f0eabea84dd39af6686bca14cb3163b22c9d5f53ad5b4afab42db8cfd7a3ef1b1fe7fbee09b8c8f80426ff71828f09d0d8e57d8b4d1394c0044036f966f5555941d7044790b630630b2edc1d54495bc4b87bb52b89b7c0e11eda9c296924acd53d2d36ab69924ae085fb970088bb5738a656d792600dcfeaf92fd290a00b77af2c096232ae3a48b03f556eadcb1108190117ee150a9be4084277ff2143e465049d57f8f4a711f8f9fa7c2dcad0a20b7c6a91851635ee67a945a7858be00bf730ac201a116421022022b8e15e85000cf72accfe4f7cfad328044eb87b653d201803041300018b7ba573a84dd3a62c88a5ba7f716a9a96f48131783e3003f76ae6c4a569713d3f30e4035d75c3f06f708c07da5095d7870792e8001a9e0e78a10314e840d6011b1cb8030766c0012b38000177bf714f165a984116dbbd3a4395de654b156a1df74cc98c2b8ff09e1ff2f84c82f54dbb9238c463eb34f495ac49ee38cb1de48f13a8acfec419a36c1638361086c5dbb4ba6ec0021bd8a18132dcb705a53855f1c666a9b4e8c966fc65dea39cbf44ed785f97368f52d00ce021b4a99569926a067090811aafd52dc50cd8702361ad1e034cc000053000720f6d40164df3b5291578d71a7381395c800aee6ee39e0ba08ecd722c51db9cb94085051fdc3db4a9a00a02dd32ac5096848514b040dd431bd04858a1b6086a4f58c4b8dff76081c375792da0865b408c6a6b8b5aa00baf5e2c9085bb058878cedf2b6cae20a20246a840aa023a2a500405c0a0800b28d0e2b1420f56ccc063850aac00e215aade527cd30e6bc856d04e4dac45fba6bd752ec3294e8c77584327e43dede7d1131e412c2d2131d562aac31aaaee677d4b955a9d3c4ecea7a7fad9a2d6bca5b5b7146ff9a7dd667a2a3536d1bf9f52b4c28809ac115a99409ec049155ba8428cea7e4e311986617d11ada7cd556c51d91809ab5802891d90d000494d6803aaa0fcfa96a091b0d23a6cb6288a6daad21685e4e38e537ea8463429244c4e5daf744ab664fbe64a6a087797c23d395e6cb33c1f45b145ed148361dde39f271eabcd59c9f9a0be80e200ca09f7ea4f9c3a3fbfe9649e76d4a45a992969abce34a84f85a3068e18385c54687ada37716870bc140d2f75b0a462a42c70af7429936cb631a3d358f37d382507aba4476c33b8ef17b87b14eed93f7675afc2aaf4483ea31b9f2e2b357a0d9d44dbe81b990cf72a0cdfb4d9daadbfa64c332533175edd969d335af30df74aa7272ecbd39ea850c3dd668b5241469545a62274a7a25e2adcab4752a266b87b8572816e77af363edf4463b3454734292a44c054e0152c0077af74b62c2d554c41f7ffc656a708ceefc486d316a7918906b306265a814eb28ed49b36905a2db14435ed894ff977a87462b39e76ac58a3a83d65106a4f55a316a55fdca0472d0ab5a83a7393879b2f2ad27cbdcb1c6e8c65b209ba416f724c81867bc6d5b495c4750a6f0a203ca50bca21a501dc3d887b4c5130a9c074c4bd0a6bca4c9da41ad6508552c31aaa6e19d690a73482521625274a9604dc43628174828724dd1d740f19800fc28ba07a9db2b490f8df445373e4a8c24a62fdff0345e7c851b1a0fc098faf522b52cd91a32a89a021b53a71498352b5d4214039a682bed14b050149b92de07edd828e46322c405252c6277292610192ffdacf9804f5b6e0fd6bb765b9f6818cfee215d49f7a34ba2d2929e313014dbb4f8ca4ccd8b431ce1607a3266d4db7051c0149b9232029a32ead204bd442beeffb52c627b24b15fde3084ced32bfad71771d30f6c636856278c8c509efd39a62c29a7bc323dc2bfcaf2b0f8ca201f1e001cf78b9d76ab003a0792f09d401da70f7fd2136a124308604864800091b33e09dfa1b1b940d8c4d75aff66977ce87f7c6a0163513de6bc3b0ee740c47bcb0474a475c8ce0a10abf8fc625ac5aa3a5a974962b46b6703fb1111a23265250418a0f688bcfffd46757fb660549619242f34821441441709b23f8ac20fd2954efb224459145144eb8bb912355c6393f8f9a38d4a451a385bbcd91ea240c4f52e2a7de3ff9e0534d8c7bcd8dca53440c0f3589ed582449912c8a840db8453abf8fc26691239c081edc4b652502867b45331a8d5a52d021590cc119620ed968de40330500b887c60934a89330a01d7a87ceb1a798980f4cb5a3aa480cda6505813c33e1ccc90c0364c890c980cc11991d324578222086290260040210e3454c8d276600478009014cca4b1a3c2f5be82c74125e31e1a786a5d32c4da85055c96a28aca0f0c4a57ee107aba1ea4bf6547e466b4e43adf6e8514f3edf476230bcf6f3f785b6c459096b13d5059ba8324cad40a635b7b6a33ef189454bb654d8acda9a6e05ddb7d525756142881a8488414807845c21a0207440230817415882a0045100144d80020450a478a048e24f5c517f5e135f1be3903a3c89a9f577993f3061058531a83f6bf81286ae896be812bed4266a4ca973ac4b58f3906bea3f95651dcbb3be4aad4eb434e968c16909d222840df7b40401c4071e2020901420eef24fdafaa56c4de34cad52a74555a6d53865cf94ade71349fc70c30f307e58e047901f0bf001061f3ef091fa00e2ee41b8c7c78a0f1b2c4f6039010bc8a263850f2b695841c10a8e67a57317222a24cc7582c5e81e323057c607109a161fdf5fa9bf01bf8f840975198658ed31c2ae182dba8435549f0c7daa0a7672d526aa4ae92c37c641d38c4f42aca6d44fd5615895b7de17ef25754125062a275021a9741e15234858b854586a13f5243c71f954586a28aca5b38c09ef87423a74a94d54971c39aa2aacd6def375ca9ea394cd2f9ede8584ba571e12102f3da4233c4eace184199576e20b77f7387185bb573acc91667c22a83f9d50b1312397efa341e113025440c0424088d11146598c72469f1e73e8e1024f0f0eb857553e09eb597e5f5849fca92f86fb6760c24ae24f0dc3fa62e812a6c4fa227ab2fb41afad091defdf609cb31c8d6852de44539a94f189f438c2e6c82dc330c50c7ca65cf1468e9c18444a09dd3da5c74bcaccf78d461425b57c1f4d0a0f0cf03879d4af0e5f16be167c3e3e1dd60a0a35280c75c6a10f141f41c22f3c09f28109c19caf7c549f2035888fda440df281094d3b25a5f69ba0fe9cbfa3212a6854415d3aaa20951bfb454e662a88c8e7b66493b6a6f3cddf368f1b6319978d71eebae0e9b2d01a9b3bc5a09d8a9d06822a92280e2223884cee364734f8a223dce60867c67f26495c17bb824e3893468e54aee65ad40ce7787faa6733634bb2855ec2a9a4adba9bb66a6ba0685d6839aea23de1eeff9904517f7e1f0d88fad3938d414556ca0ae0d536f768737c782e3878ae225ce505e4f280618d96e54141034a093c281640d1283a504a2a1c78aaafbc501d423c089d3ca1ceab930a4bc5672ae3d39fea59c2d4d009e8537199edf9a3de3a635405695c95896aaddad69445e99b8c51150cef999a76eb94e5fb68c21044fd099ef8fb4e985af5aea15a2b5b53113ced08863554eb2753d59cb3ded39e2d3554fdcfd44ad7fc282e7799c793a586aa8cc310a423fcff11ee16500c4034a025a6d044aa891c3bf6b0430a9e1d46d831c50e029c18e1e44f9870afb5da3a975a47de3a85a29e7c9af7c7d68a77cd39796d5af253ed5841da9aaa695ab09ef64d8c4355558dfb6b14e860719d659099fc3acd8fa633a7b14663442c221791374d2bdebd6402d72c8b5441c29826e99a6511f71224ee25a93325dd4b726ee95e8212cbd299fe38f1cb752fc1f9fd793cf1ca1e49e710f7922672fea6daf64e73178a65299bb3884d95ab06abc96ab49aad86ab11d574356230b1303a57a055f2d816f528c68f626ceafa12fa53c6a425cdd7a17be709279fb305c3b97f1a6bf6f824e9e31c1243c29cb8f491f73904c634d31f6f55f4fdc734e335cb22a63175c1b874962f6f8a2b1bbfa8bc29da8d5fae8981f8b832e9f832ee25e3ce18c5f91c72519b693a5d10e5122a72f67103e383c6bd8345098a6557e372feba97e01bf792d3c252ff638b7bc914a90ff2c4354bd34aca3c61dc4b4ed94cedd2b43935636e6276b631a98b557e2c71feb149277cfe3de1d39a683e6397db92ba586597e710f70e163e4c3b96a7697c1a5d965e8869cbb1bc291453dc96d449722f9922c69eac4e8340f1f94bf71222baa332f302d342b3f232040ab086e482cf9a71d93191e204e536d313ca8583a24b4cee7ea3a4e47a94323e11ecc2b12e9cefb3704627202c4b3f1574f249f93e1beeeab451caf844b4b6e6d86157daa53616a671a90d9661591a86494d1e4cfb011ad040083c04be01df000e54e03750b8073129b22fbe22e0ee2070070110d8a8a27604517f0601eec18488e9ce5557687c1cd3b427ed62529344187a8cc1b93871f713b8c360ee3ec4099321392fbe450946e03e8272e47e53847bd8c38466f43745b13c7960d501f57cd3aa3d1a50cf37517805d5e313d1254ad2256a4ba7899e4a7b7a8b3b01fec56799f738ea52f0cbbc35b7611845f337d654b1f96df6b16ddbb66d9ba6699aa6699aa66559966559966519866118866118865dd7755dd7755d97855998855998855998855998855998e7799ee7799ee7755dd7755dd7759d4824128944229148c4711cc7711cc771dbb66ddbb66ddba6699aa6699aa669599665599665598661188661188661d7755dd7755d9665599665599675799ee7799ee7795ed7755dd7755dd78944229148241289441cc7711cc7711cb76ddbb66ddbb66d9aa6699aa6699a966559966559966518866118866118765dd7755dd7755997d789b84dcbb0cbe5d4e251b87be92640e8901f652cc7ac87e0fc52a454f0cb972cd74c711114365fe5c739c4bd642c21dd4b76c8acc4e017f7923fff06d3b8975c527eabefe863c6c7cab52aa5b3cc2b3abf9c24528953b2fcf8f28ad6f467793e129cddddcdf30485cf96b29a762ec56a4de336536d5fb426a9d2cfa364fc139e114d5652c251fd5450773751a971771d262435e85c895236672b926af5b5f304ef78174ea0e13a572911d4daa2fbb467792af3a8cb5b4fe9f9559fb445550cc4dd89b815dcfde4264e2461a2a772b464a8840aee6edd04025ad42f72f1b863eb32c7bd049440e92cef6ffb23c6bbb60dbb56dff1f14653791c9560fe476db48db3c9b2caa34b8d68f371de342d0ee882bfeff3673df34386c8595a3366e69ea454b6a732c7dcf7a14252d9399fc29c2d3f6488bc6855f489c6a515a471e967d420aa73fe0545edf7a1bac3ae21f773ca1f65b8bbe9263cd4e0ae7305ea4e9ea2ec54e13648c10682987c2cd0b9da6799964ad1c64b8eecf4745fac226f0d9dabbb997815f013ccbf4bf0843389323e8e699662fe180f0028269d16be0f44b5ce9506f3a31d31a0b8c3aeb424b1480738e5ad242e4f9f75ae762976d805eafca8f9a6b1dc7f32ed32db0e14dc12b51020b2d0000f0226881513ee0e67febd2d8a92b776ef609132e1ae287105709d2bd3b6284a6a5f214c9e65e84d3beaad53996adadfe75e62e4861466944451639a76dc1a9fc06dc1228fa63698f12e21e2dec122c79e1ea72cb9970c29a171efa841cbecbf19cbed5e3293634fee9d2edcb244260268e87486c88ca3d2a5ee3e240725ed9fc93f33f32cd9beb9b2723e0a83fa17f49481dcbf0f24c7078b85639a7605c84bae34687215c0c4ca43fdee59dee051e70ac5c4ba9613f5513cea0aded847d5bbcb98929818f71218ed5ef252e29222ff43262133b87bcd98c467cd000bd2f032bac0831bd1bd03423099c9e15e22a4240814fc46c808123401cdc01d749636a1495b20a1119bd04805d984a1116dda657596baac55ce5bab736975d5279ff3f759da5349aad56873b5254e4d899f3f0565adcb6b43b8546d0db705c3da6364595a6cb6e8cd3a3f5ab3dd38a6ad20d4bd18458b94da3eaaee543ca54eab754cad763ade1264d2d6260c8de07c99f74ae8da37b1b4d4d334ad59d52a9bbc640cef5371d526ea1461e5119635a54e117a8914333131426a4a2d43986d477d5f63f3be891254104208218638d1fb7c1c23f54d34420821c410ee8edd4489181742082186a884104288214e5e5b11e57c143de28b82f3b742f934bab7e963a38dd413de3a5d11420821863061c01e4e5be68dcd99fc317ae54ba795d9d89cd124ae397ad450084a0dc35ae18dc3ab86aa55753923862c1da8b5ae939098eacf12f7fcba04aac455a7a5729ff8c45597a096baf10b7ed929ccf58ee9ee47b8776e74ae5012902a91d6040931bc9ad1b9fa442b9a2071c3bd7ef72c83a454b4bef681d86d597c5cfca2cd4752ced8fd2e248cdefa098dda4c835ad40c7aca406834f932266d81a454fee29508e87dea934567b45e414f599f7825ff3d8768776fc24d0ca00213a3f6f47d2606f8e1a9bff91eb527948cb71d757972770448e126055871f7139e2995537cae3cac3aaa3cee9b748a12600c130260e16eff9a987c21bd286c92f52b4b58888cdd96059327085e3c82fb2d588aa0ce150a107737c1a10594cd58755d95153a513857131c1070074b6799bf93b6a8948e124d9430a17355a216a50d26031080c900aebbd751ad9f127ff8c31f888476a9e2871e29f596a712285a766cc06facc9dd74e17cdf85f37d256a43db4d8a80719dab0b07c5444f2558a2b6d24fdafaa5fb6fde33b4a45a7d7d1aadcb546bf24ffb4ba169e3fd3ad4a772a3f9c73eede96790786ecaf4b4d9c6acec13bf5871e7533e9d4c6e50e086155ebf8c737e1b23390644b50f9dabfce069cc31094045edb52010930088c6c7017729f64849abb64ed07a949212eb18953eb109b23925d58c7fd4ea2663544e7114b5d2296aeb8e1d16f52ab5d210d85fba24eec2c4c60df7baadce150a050504d1143c8d3920be69ce1e4f7c9e984593f04d676eea83dcf2a6269d26d8d4df80f8a61adf5457379df9f1c42f37e3e7d098a5fd314373fe8da579fd178f9fba76c83e7f86a4f73d5fa7ae7d99fce569cc01eff9fa0f31ee5ebffa6dfd57ebb0dbe607d50a85cf9b475524aea74755adb54e71992d4e55ea138fda65a586a55627a679e9f453efcea54589d42a9716ad27210eb76115fb1b6b8a416aa5519b772df3a7540cf99c9aa5fd71cf9fb9ffe34dd19e43f2e3bc8c55b9566506bfcc905ee39b6a71cc09a19cc61c3ca4dc610f77a08387214e0d43985a9decd8a16b15c1177048a28234c270c61ce47087905ba8ddfa546ec7311940173ab89183d51d15b5a81d8db0431229157fc1f1715074e7d4e1dee1031996bb37c14bd6f09236d4c1dc196b94cd4b3413192eb8a318bf5c38e0958103f1f96c1d0825c660037d96322bbfd3fd1a544b50adce4782b3feb3dca745921243d493f81442f7f8297aff4553677c62ad4f169da9426d6d5579a70df7a9a83c421e5fe271f38f96f4699f389360589d6cfd286ca6a61d9e65ae3eeb300ccf3fb1d9a21fb2a5866a659a5f7a24e54cdd3bd4e16df950b6d8c4638971f4c6d8fc9dfafda5b22dcd32477ff488a63bd46f1aed4aadf44cad607eb4fca86759abaa54f9a8d55896b05975ad70ca5c9ef0993231fa3f7ea754301aca8fde3c79962649c2fc09cf5c8c9f304dd2286f9d92dae5dd2589cb4caad58826e5b684a394fc61a8a392d88658c65aad7ffcb3d6f4e28ce6bfa5796f794a991545e24aaad50dae5ac7be6510cba05286af7e27f5fbd4fac9549bfa194109a576992d9a860ad208bdbc9971305cc6c58508ee3e857bc0c007af747e9c54e78a0c336478a94a6709baf566c4765b96f391e0cf3f58aa93b4f1cbc62faf879c2df8e5e29442b6dde3e380f73f107c81699991f14104f4f1044906866606043f9d2b8d82f27d2098a2a0a4df173a7109ae542a2c952461eadfd37e645c5c4e2ce3e2f2179f279f2ae3e222e3e222a4e6d3a92a2b129724fe4ce29bce64204358f4cacc8b56a582523236453bc4f7812078febda5092c510ba2fafb48f335be6936a1a7141ca5a4a4a4e49413e6d492225a959417ad886998a8daa640a1025008ff42810832dce05e61b5897b49a3db8293840c5dedd7f7be8c6e4bc6dbde161fa39632e3728b7fc7279271ce0f9e18dca635dd7f534c31cb6874f2198d5272b0caf7ddcfc1e2f75d184eca69acf93e0be7fc9149db8d3ea13a010d2774e1a14d0585b5223981c479eb386f799d80c3dd330659f1d30435ccd36774a5095d34a1c60353b0c8eeeac84ca489c6cebadefa92a540470a99286aff76c3ac8b145ddece3666029d28889f91e4258edad54452ebb09a941f1d2870a2f17af2224791a759e3b621e990b13df698e8b2ae6cb4bcb73ab2f304911bedf69bf59908134791e8048e242f9127765a365a0ef3de029d268c4f7624a68d22aedb3a8fb3c8ce182251f4bc51c45df25a6266654c1047517c92db30ee769e27d2723a4bd8ba4ecc46f1b237b3b4ccba663a4ae0460b2345f67a1e6975db5b31c8cee22ceeda4891cd32ee922950749220ba441c8991deb88dd83692dcd941c2e6bd4864dd2b1a3171d4b24b059d235c91468e9bb76d64d6d92be26e3a615c6bb34cbbd7653d6b3791d74141c708ddbfbdbc9b71a3a8b3b6cb56d101e3da44d8edba31b3b28dec8ae08dd8468a96f62fc2b8ed8a703a5f601a2766dda66dd6a57998683b5101913e443a44e03672d4ae96715bc659e3888df03e5bbe0fefb3ec60a033046ddbecff35628f695a678d634708db288aa21fade5dd9b4e10c6edc7ed62e393d9ddfe5e537480c0597fb1ab69a275695713655f3adf34ad6954e9fc40bba2cf329138769c7675de9b7a747c8091186659967dd1f3b4cb59a68fd4f142bc5ac691a2d74411b334aea3f9be93ebf4e07a1c478ee4f53fde6bc330d3f75d1d1e74f6d236cf76a2c58998e65d9d1d6056e43cafcb385177655ca699becfa45393e43a3af030edbb8bebc6ee7a1a29b226ad9383ce6677dbbcce1a3d4dd4699ee9fbee9ba22d6121df67b11014bf7c5f099b295d070757f45d366a6f8944d7fd2c53a16fc079192662d7ed445c26de6b347d1f7896a0999e9ce874315ed6fec8893c0fbb9e7b0b077c24e5f789a549ead860d3388b596fdb38511b33f14ddf6759dc457e5fedd4a013af6c138d9b7559a3c85a614515557cdfdfd4fc8cd220b36427e22ee961a3dd2c5167fabe94ce0cbc8e7c51b76956f41be69163d5b66a30a7d88e0c32eb65e368478c1469deb5ec1e2d7acae9c4409475e49665dacd3491ddba4b7760a08d63f658b6719ac87bef7a622789665da4f8dddbbbddbfb6f1059ed869de8bc89b6dbf69b77381d65d1e478a36b3326f14ef98eab460146998a7691a897557b430ced46181155d4efcd1c34871fb2b9a406705a477adb589b48edb2c269296e97654f0db1dc50be348cb5df7eabc0e063a291091b7ebc66bc74bcb464bde9c0e175cf72291b67564e78de2bd5ee392a683820ec32e9b799e1d31d26e5666f35279d01829d23901877556ebae78c5edb2f77aa58e09c4ee37cfeaecf6f6b3cd7a13882625ff6e39e1fc637c74e6fb52c6ce169bc5d991d448afd3441c672d179d126057375e1ed6751d895d64d675aee89080c33a4de4ae25b2dad53c516a833a23b0f712af87618f5da326d22cf259be2fb5573a5a58a2d1bbda655def715977695c4ad31181356e966814ada813919cc8c23079b658d109c1e891a41dafc8d33652cc44515b7385021d108c9888cb3ccd7b0fbb77b448d3f77d23d3b6315b8b9d0ffc5f16466e9d266e97bc96e50191249fecc4cc1a459e25ca30d3f7e9991452a7035de6599ab769d9cd44762437934ed998b4c381abe3464eb3b6df44f6bad8f57d29369d2cae88f36c265a97e86277fb0ddc6d1491248689df5d1b668d8fa668d28e06c6cdf2340cb3acdb79a348d48d68525cb40be7fb3a1ce864a0c34811d6659b25ea386beb6040c4dd8b2449d172228bbc9d7681cdca2ecfb21de989de762216da25be98bd68895b976d9c55752cd071967d8bbbc4dfb891b43a576496bca2bdeffd28facb55c08aa37d91f42c8db397286ee0f78dbe6ffcc0d42e6d688ca400a14027ea6cc6bd763391e8761c894f3b82279cc999efcb2d5678ff9ec7fdc675d6b5659f99be2f631c6b9260a934cdffbe7d963846e6fbf0de9fb72ef3043631b3ac355e4c74592c23c5ef3b52854876d7dbaca8896e7679d665fabe120477a6425300c9a8919b76adf1afb113eda699beef064361b448ca1a339123338eb4fe1a370b337d5f0e16c19bd19a2213392469b94da46d9ed7799c8579a6ef03f1fe3e295096475ab1d3eed6dd2eb3ac68fa3e2a1edce3f78daecdc735bffcf17ddf774f2a7cd8ef7b738ba9be79d3dec7c9e9d821010e8789e4d861d65ed9e5919d364a47b21b452229ca9ebb2e6bbb65b667a9f2c41eb5cdd32ed16a97d5349175692fc3deca3cf25e9bd579d9357d1fde67096a5c0abece16bd72a691af5d97b39be8b236db3aec82820a4f746517e65dd6a589982895f7f9dfb75f84629eb546d15edadf4cc3fef125ea36edeaace875a39889ee296ed89689361113c7f74422cb74b2c8eb12c72b6edaf87f893a536572a47531cd8e1db9715bc6dd9b4ccb2e3b6659673beb71226ee69b82cbae4adcaee569a2e73cbb759de53d9252bb9417c344a28bbcb2ee72f7fa6bf24c2f5ed626ba3cd16bda5bee4ddff77df7fcd39b509b4bdff744e992a31589e46f5d9669e2765330b2b3ecb691dc66afa691a2774739b725e5fb348aa1f891fc8cbca2385e6286dd6cbb22f2b21b773b4eb32c767123e9da9899f1b237e3bebb9ee66956c665e226f22e8bbcdee579224bb323107b695de679dc386aa475652f7e9f69fee823f4442c1b2d11e689dbd661e4f700b9bf7f2f6deb3cec8aae4b23a5b048a0eb324eb41b66c91fed652dcce68a1d67498e13799e386ae3117b9f1475d735fecdbceb5dd3f7812223ff23e6592ffb17afc85dd7f47d202934ccf35e245af28e646675db43208ad18e9e47769bf5b2f15e91347ddff926f87da49a4eb39ca66ddd485ed8bddc68fabe952277d3b0ed337124c9d1f336d1f47da6cda5bb7f6c44fe5e9798611ab769e278696ffabe9b3a49df973a6dca35e49e25ea4c410f8d68b3444b245ed94892d9c859d3f7695c0aee138932236662c66997266edb465acdc95c4b2345a2f73c4cecee783913febe1f4f98f3c7f77d9ff622f016bbdedac7ecc665628c27d244bb8d9a665dccf334d1f47dfac63e0aee2f7d1f04603af2fee546d18e9d75bdce9abeeffb747eef4534be48ec441c47921b772df1fbbe0f3c4b0b82e2cd9832c44564314d7cbb5d6fafc8d9316f9d7209c9464fa4795694892e12d3acad948acf42f380142b08475e6cdbee1539ceea6ed67d1f14de466adc93ddb679a3c75d64a945b48936fbe4b5a3b5f7ca2c20e3388a5b67b5cb7524c7a1fe8cf93ed3ded813193676a2d5b6311b33abd32c139ada688ae6fb40f0fbaaf8619156f6d6356622d2b33cce23490ceed244493eacc8b2a24cf3ae31bb16295e161167474c845918e689d965b3d1cab8791829769b486a9965c52ba4c259db96599a481b3bcde238cf34c2b2d49aa82e594cf454a67c1f7a2abfef949e2fa4df468b715bb7596f3972bb76fe152744a26c14c951b4986779dca89920403ee789c84bbcbcd1669bb799be2f5bd3c863644951dc9ef3ba0ddbc4ee62a6efcb5b83a322b548dde9e901295f0fcfda3ee334cdcaacb76de266fa3eb04ad93631dbacf16616a65d32078f6cb319b7691a7939addbba377ddff7ed13f97d0ef8445877b13113b5d7b62bb29ce9fbfe33e9c3c3aeab13596ebc17375e32139dbe4f835b631378e627ba4e24caac2b22ef86892c27224ddf87c2b95489445d76352c13619ef5c851bca6ef03ef69417cbfeffb462410cacabc70d8a58d58672f2e135dde968da6ef2b9de5cdc98665de78c5edea3acd1a33ed9abe0ffc3e4d3b617c231335cdf2eed54496cc46aff34cdff77d1976c2182c6510bc71813acd209800eb3ec86d18ca05eaa890082500b4a38904ec60c009129f4bebf83c005bc2010a6002e3bc440e3089254e1a70bd0697a84c28a13f0cf82ce09e16d492d039147062400232de16896b8923c89d22e002df042671008d5b800172306a33a00037761cff8600dc869974d80582a5b334696baa9eb354ea06e0b8c0cf008cc04e78043f5f37dc86a1e36b51110e10009883081d43e4d89312425c2036416c2271a30620070040417c6c5ce0ce7603b1bfa4a3e4cad72c4de3cef9930e06a6c8323f0e08823be773b8115f0cc1072c74fe644f1b43f0010c5a001d21b8e328008d9bd8e8e006110e05386841f2206c005112734a8313ee9d2bdc008aeaa714541316726e709c20e23482180500c02a7730840fb62040280ff503392062077db8c2dd4b6eb803c0dd8328f1121493131d4c4e68b8d7af7edfc6253e747e989c40d7b942f18e1a86083189b0ad06cd922b6ee4ec230c4f3ea8cda833fdbe356e82e09ec4b7f842e712c776a1840a6c43dbc8364c1ba50d930dd046046c6cee6e43015ed221dd30d1016de801f567104e58711e01817a8c7ad4939c5b7e36f9423e990cb3c917526bade7912a6ace2dc12fdd07c5c0831d04e102dc6344be19c4d923a53651cf3741f09a18881774c0864b10ee008882beb5478f31eb1f561dd970c20e37213fe05ebfcf8444fd2f3e2f5081ab867a545fba9f5f08ff798b51d0b4ac9062482b35a5e6dc152b984ce1df85fba699beb8975811ada8a844d3c7b64d0c95322400c07000d310000030241a0cc76332b174beb30f14800164ae5cac5ea08ae430c921858c21c68000000000000048128200e13f56f7645aceece8a6fb95ba6e46f18047d9f866c9063b63d4dc0a71cb00da24490fe9011bdd4c0f8f8e9a5db1142e8b486d92b05e302bd8ff738da601e98b283fa26504b5652acef2e07aa36709aeebc4fe75bac0fd9efbbe487bed6e3141cf2c770a3dcb3770ee7f563f267d13d54c84122bd2d468a46fae882d22527c31daf0308232a9348c6303aa28b90acf87c8736fe19dc7be6972bf5eab96f6062e443533ade8f3b0f4e3dbeae7b1c589616d2164d8deb873dde2e34187ceac356d88c8e5d9cc36977e08c13ef148fda25d14377e6c4c6e1fddfcacbdc88e14d1af7c2c803bbfd00f37d40beefc9622b3da6c25947ed1b87199e3f1c5683da1b9de8e05da20e8b9e6d86b07f7efbf8c29356db92bf9593525a885cb0fdc6ff5399114043b3ae56eb8fd442e8137d00a37a3745e5998afc82dbf8994b0c66da05ca68484d431162a412eced7709c7394d5c7d47dda9dd003715a3dc7472d713fbd6eff0d11f5e2d7a76d120649dc7ea693b88c2b2393eb32be3bd7a6350cba479a0689880f210e2b87ce9bf7b2a4df00320aec1f807fdc18562908f5c6f756a00d471fc17812188d9eb04685354f80991f4ec5606467efddb72934b7ef6b53f6ae6f3071a41c054c562c70a4ff6cd81fce9eb1faaf1a5451681f0b17370a55fcc250536db1a117f1fc87ce7b89852cd2734bb1784ffd48ea28742aaddb163d554484846f92bf7319c33b71e533dcb40c615f51b3db829296aed670121f27970e2a069cecca87782537ad41bdcda58fb3cb0ff742450d5a7c6931f3247c9c556d23c356746097654a6a96c1010bae8c27a2d324669926c2c3443a4ef626777773fd5f5e1945946bea03da1c7a946e89c92066443cf1af44272aa17c71bc2ea9423fe1283827f5cf2529768c81172314f601c267b41a51a70946ea1ffc982f5bfe22ea65890f15b5b4de7f5e0d189f27dd14999666978d19b8a201e78fa7b9096e80352cc0e23f7fa1e2458b9c2037c78a5945bf4a128a37bbd002b2833a63ca9740ef0c8d658e9d61db293eafea2404fa410ceabf59b8df2c7d8a6250fe84daf1320743d7166594b2f80a7f1fa8fd579a9485eb4369595fa4654155e15f85d013b5a2e7e905795fba83d826cddbdad941c8715054acf01d92a52792e6b61db8561d0e86c83409c10af97d9a74a82494c461e9203c376295323756baa03b67b800044dc42e753756b689f834405758a4a4aedceca2b4cf96ee3f73c2bb895bfa031153adad579e77aba4cd2a7ae7519534c4a0f6df7ef49f77102ca203dba35f16b977e929aafd6ac90506e420d3a5dc1cd02f0bf8fc54c2f590062da2cbea781e7dd0779a0609aaa8bfef6a6477eed311359c3159da243f776021a4d65c13749497a098bb4c8e6b3fd33393ecda55090714bc80b75222da271297c9b3481244e8bc9133dea174237d28401857ea09d42a31fad0b42336267f45d70305e144aa780dba982514c302b8e5b2ae72bc6b8366b8b4a35465df1211c67c6dbae148b61d12a59e321452a5d8136b74daeb22a5d07bc226a63da1ee0c335cc724f05fe7e5d16398b370fa9f95906e84409a2f1196c3c3684da81fd208212e3b38479bdb05d044a4810a3e536604d1230c7bf6e2b3aec1c068fe20f06c373545fb9a013d10755e8b4210376ab090a545fc500717a2d172802e554a22657095ee84693aa80535f96e2257cd060422d69285a10305dd0d7779190c9cc00543b8824f3d90f8d03d36042174402f62a21ba9b6a9b7c1f2455d9074d9f0896f45234067ba8217e930532deb48abe310f6e0f86070d08ff694d34007c12f6b4a18fee36a432d899017dc553194441ab8c045598a55d14ec33666e5b5fc14ed6e4a379b84dee7ec9d49295b7789453612d91256f2acafa9cdbe433b15bb3ca34af876a39d2529d5e74dc70dec678df760e92faf8ee93703134002c50f8d9abd35c01f572d68f5f4653151e745eca5473e765e14bb1567802c9089bbcbf9bf0fa4f7e3d387fe5ed0118e1e704856356b12d4e64665e629a57d37433bb03a9a5202b942776062c2f09f0742d0823fbe3dd504c18f04db1da2c6fa6818e627f77e7d59699669ecb8953e9fe8f4185d5b4f5269a0de5b9c0ef85b5f7fff9bae14fa88f1198e7ba8258797545238d123460da44813ec3a094d5e06f5e8368a580ceda86fa6eb96aa3c5f21213133996f8788db43db992b5dd3c5745ad0ca38bc03a0066df9ca74538e71d291dace144235b37670ef7040baff913f1ad72e72c869fc6ac1b7c4932f09ceda876c1f7b084de76721391a6c0bde5d56fbe3c51ed6e7422502490e03fd761b9795851e4791f4d7d64a05a0819afb88610f49008bd61432001e20da322c2dcfdc7d6ca3020c5bacb7058028863209938093316046420f0fc880d5e1123f3494c48ac120e811c06632380a8f472a233f00921eedbe319f06d36ae47ffb616cb6902f34a992c1b3dc524c3e94bf6b7ee5d1002060006b9abba0fff9b9fc8b4cbf473156c8851d6b46f814b586cd2458828522f919c58221a93dbfbe230591f8d76ee843f9426a80031be58551d15104af9830eac4407a488a717776b5c84a6b189a0279c64e014567401ebace335fc5bb296d478e70e823f8cb7319a73e173b9ac2181c01599c93fda2ad27d3979ea0207e321019aad28892651e87f6e0a21fb81c7f80ba4d68fb510786f6e0b653ce0998bd3c0c70f65c15281c8d49ee5bce526dfe2e1b0a58e7d9ae6489b039bd846650d53efc00b454406526f6b8b001009dfbae96f2338c35c3c27798ae0bad9372bf3a04944d1c209e110be1eae8869ad5726bba625268ad34f5ab948d8e7929ed17fb0ec3fd377a9c1d3a3665b97ff65bcb0333290d7393eb97b99ff7e96c9e067a6b3c9a97ca573d9e2aece5aac2a66d9b53fe5b5b0d2cff7aa9cd7f3d55af71db586b7944ca7f659c846bdc71fce0a9666f6895c903f8d38a0730d0f4695ddfc3fea632671fa68bc8327f1dccd0bdff65e8fc9245757b024309f1c955e25037df4d6677de87a592710a2972749316666391e9a8752fe2c9d5a07ff6105280e979c207fe62ea758e53e0ba6343ae99d9a12a1d8dd3e91fbf95ef01843e172ce310604e8d4e3d053c734aff972519a316a17057db8eaf2d6cb45a5edf099b8787cb24e4b4803795a7427f8782a037fff061b0522badf8b00aab394d29eb01e4d217b679d96d0b3b97ad940b087df8edfcac5077ec98c361287dfa27453ab7217239877da166750b726729f8f19788a4cd52701fc17c34225d693afbcd5e65f6125dda23cfe7faf4392dfb3cc25d6f44b0f422bf9f7e8f4956e38071741177276a9be6d64c784c796d18a076609707cf41b03c56e99a0a4debcf63cb5cf7366663bddf9244cac5d95e0071052a136f083615ffd89611aa5a073279a089307e3ff07f269040a624b8413c9bd7b43ad05e98f47eae47097d0b3800cd588507f871f0f7b0af12283daec62ad5b6ea4e42ac0b152252f8b2c6cf4c3c7c6ace06c037327f5c96bdd9c4ff488060228878dedfafdc248cfbbcbb3391c2464a67ae59594d899a022d285f9054eab3c395cebd8334f7189f2b4777d02574fd5d11e11b88cf5ebebfc7de124fb21ce76b9ec324c6b48acbe868adf8a4fa195aa106639e00ce1e7b236662f760cf5854e1a3fd28faaba97c5a220f02c608636d0918cdece4533e5d0fe5ef887d48aebac8dd7765537aa882e8a78a6b2389864ce7e0b0e76c8e6a32437745507d1b58b60c2792df838495e9dbc1be9e9048f9c9d2860c722651b363aeb696c1b70aebdb945bff15631bb1d2bdb21d3d710cfb9130189bae76ce1fea613133fc20d163eadd509f3fdb5d93f734570c83921f59c3d408701f4fb99bf359113cfbab4ee208f58ccdb30881f059d20105b9112c6cfaf3f8c6aefa83ff9463009df08743f57d818f61f4cd4ea15df2fae33ba593c580a5ea874fb1e0af09e47707eafb73d024a8317525bf63d949d063665f9cd0d8532e984ad72a2d55557ed2ecc8f5af6a44339e1660fb9cbe29c79f3c61a1a7c1eb5b65ab717ce811c1c4e2d019a9f6fcf0bfbc466e89c89e8488428095b1761a29326662831443b7c59d012e62022e65fb65662b6358444cce607de51dea3146533cad50166ed40db2a578676a8700a82d0bf775ede9b560e3097d9d7dcb9cf9e6174a755a91b343b3665215e95d264d3daf5e36a19e066f66961c6c636002ccedb277efcfdf622d58de17192293e827f1eae09960801344bb3b1833cfca4397cb51f920850f12a8e8f4d50c252df973e4dc76100e46f57c8806872b41f1abdfcc434af1c1283cd6acd3649ce15604e24a2a05c21775f6f874892c8cf014847ae23105c9bce6b4abc36d76383a6f61d8a3a32f68d117e493a2945641d45a6f5c8e8516fd7a686b4c6a53be19efc2305bf357fb11b37de7d3ffcb99020f04903a2cea5228de8f4e443e9aa8ce43a7e873e25965a1244c0226642cb4c501df0f94a8df5d987f9fe53e5b5cdec5f9c78459197dc7367e24fae06fe5e0107903d8576719abc6bf7067f4f23d140044c01df1623602eb0cd33982d01a1cdfacb27870f7dbb7edca49a05f4c6303141aaac5a0bf97beb0daa0874f1f2e78849791aef6f54c5e2f5c56e444ad6c84a0fc1e5a70765f1eae47ccc7a4c6761152589efb76fabc02e484f0af2bee5dffc57bee25cab3e882b80df8fe16f497765afe4984ce42fc23a7bc663f22436ef170df922b24b9bf62e0c986d58bc6bbdcc86cbee7f756139ecffcdbd16eb3ab44dfdcbe1825486167cbabd5f01fc5dbdcf7259c19f259fff607264e9eb0f15554968b204073aadf2ae2aa7c403b08e49f7ad29f73194a117c4480d0d0365e5a8dcbbbeb7ca6ea77e8a55dd9da7f889fc963bea8f69fb019df4f879f324174dc9cee02eaed77475eb23c6018d78b7972fffd593a6d1a1876ffebebd61c123d87832fc7d8ffd85ff882b56d014ae43cbfaed34d53b65c9aabd6f277310ba08de893986738c32dfa9559ccf59d90dbdb1cf611db78d2e2129939bb9745858699737805a5a909fa40d0ab081285b84792b8074437ed1131cfb5437c05a8763034d705296a8ea47ee985584695fb6056661305e21b6d371dc79d732b581305016630b97a95bd1adb0f53ea18722eeeb45cc41cd54d0e178ef0c21b7a3fa88125d81777d92462c7caa2f1ff0d54346b7a74e0882d0f3bb475430b66d788819934420cec8f208001830f6fff80015a1c6484f68614c4bc910469c1086198187de8c6c719d1c02146b46d6ca365c1308fcc0c230d1b4b8621a289238667d238811919c808468c2086e983876fe180115a1c6638ab8612cc9e510660c20831d81f7970030719d2ce0103b33498c8ec0c6500334610c0f2d1c33739ca100d8e339a41438966cb382330308020cc8f3fb881230669e198a1191a4e644646328219434461fae0f11d944bc92defc1cd06dbfc6bab20db046c625cbbde9af5d55ca7562c3b4266a791c4c972e31e811d461077cbc73d423b8e308e168e5b447619595c2c390e11d8610471b77cdc23b4e308e368e1b845649791c5c592e310811d461077cbc73d423b8e308e168e5b447619595c2c390e11d8610471b77cdc23b4e308e368e1b845649791c5c592e310c10407690551dea19e3f7a772e6cd891c970e9e7a0d4813d046e630031581fdde5dfe337d536683d9b9d9c74c889115d3c0a71501809f764e2d0ba395c24bd3408ff9e2ebac35710974814f82ae301d64ff685db056a0e22dc089192c8b5bec10c2dfa3821e69a878f301892c530929910fabf0539eec2d9c34a9383fa1d1dad7e00cbc53c26ec33210fd38b099a6579c311507da2cca5cfe75992b29416b7bc508f392bdec43e09d998e2f71552742c0e5a75bf106b4260bd90bd131ed606c991f54db8ea22bd253b89ee7fe8055c1d7145b712c91a3829993664f098c376ec252e9846cf162c991da5ab3fc3c55df45bbd770c170e63833d99846cfbf4532462f3decf3ea851bd1dffa9034ee836c4fe4fddd24a842c826a4111a6826e7a50a38e0f9e5b7780c6ec5494570956ce0e8f774ddf98e3ea4dba4b3c42f66ce00d28c8af5a412e4fd2d1af49d42401c619cd00b0633802beb4ed065a271ff25e741092988f485402c68c3c4a874faccecd5aa94d3897a08aa30f42d2ec0b89020a267082d48696ae441d6c5f9e7eebcc1f3a7ac14fc2a29c087f59e12c07c0a7e9613a775e941b757e993cedf63a0eff1f616a73fe13249870db4de8697907e9ae462a8ffffa845284efcda6e5d868b991e5c954d6dfbb68d3c5f6639be43c0bd1327245a77503e89847483bc342f9fffb9d86692e40b6604280459b5a83b767b7f75d64412efb012a5f9c6c8747427b6380a4116bd6a9200db5233792544fe3391f69a37ffa9a5d613db859bd9399b8a479d06d7c7a1171c14393f8e17f0ddfd7ef18c03477608335d41ab0373325331ebb3ee7d75ed5b991bb4edced20de8c23ff91e2f4c740199512cf30c0d7724100ab6fc47f7a341e8af3f78284546f07a39a984fbc742977894fbd7c6e781ee7390e50425e2dac93b9b0f26f9fddf3730f7cf008102b4b157a5d5357f3fb0e70444b0564faf7f05526d707944ed6385042066cb3114f5bbe0345a7dbc0f2a19a6d4cd8a945833cd0bb4db617ed01ae0cede71203dddabc0c343b8067f3a14bdb952151ade9197bdfe0f4041953dfdf27063d0b32f54a19e9ae904ea34ea2a6ce051c54b88204aed14f96409275cf4647a180425c4ea8755f004c0f80605d13db26e963418b7fd08831469efb5b981e33f98087cfa29ee2293ec2ec5dc5c939a6bfb8a28e5a384e2cfb993296f7305b4e47bf531fff3538d7d105b6632329ce4f0d18ba2ca2542194e963a7bc8bcbf11c9b92822d230ed41e0cf9a8d1b607a0b37232def93d9156c441a321039e11151b331dfba3ef7b87f9d03acb9f96dd4df18e23f65f4cf4bdbdd8e3fe1b16e93ea415687304efdfd01401ac4fd3e55ed5d67f1503a4577b25ccfc8d3af0a06c9e1447f4231cb3c1dabedb1089c043a48b74b353fe4f5ea5d437f464ccafd00d4f10fba99a8c373de275c4ff3120fcaecc813e6ef71658e941d299fb38611f314ce654af52484384279d3412a44f5ec0d1b31b41d6ce9c624e0e7a9f2189b56ac9b67012eb7b3f49c30ce4366e7ffcefe0f5653806ab02dd35a408be2cd69db02b22d3548278bd4ce826d71d34033d1e5e983b67df3c22defff04322964b703154bce17f3584ec6ce15c3c8fc0df00b93d6424fc22182e32ff86d124beb260bc01f79b31b1f60e1af7ce97beefcf431bd12ede81647d23c89a0c0eb0ed3b6caacf5fb8fa127e7cd26ec06b7a7c827276a5bf6b5fb49b54ef61d68c863aedcfaadb9f823127a0daf93c8378873f22d455c49746852efe2899c35e19974ecb63aeb62fe254e80e2705a55722a419f4a7754cb941c11371fd053817af6057ba6e17cce985502e1b3d6754ba137448c3afdb508912f49fa5ed8b0a052017eb6da89cafc308206be75399e54861ad806315736e4b5596a10401bd2e7198949a1fa99e0b9ce9e2aeb57250823cc649e1f954a900c4b431d87e55f3f271a7cd5d85e829a07ea02dbc70b8342f98c116a294890f305b3fdb9c71f6b2ea692fe4a925dcae4b54bdad10f7c21910dc8fbdcb51b3cfb9ffcf292c3d5ead00c281b80150bcc292580fa61f196fbe3e5816ab80beadbadc0e79c66deada30ac0e0afb838a9b085fbb0cf98e814e91ddf8d9e7abbab2329674f2aef9004cc3c3258a40f1d5548f7ab26ffad85796b573581c89266572df40bba3645de80429d718f33fa5f5c34e841511603d6add8ae434668136b39f75f9b2c3db436f4ab916dfb7788318fab87e7cd9cda05aa820ed1e48b65b4be30dbb79387d8f955d7aec525db62df85e0ce612a0fb816402943e5d415e52b311ae2ca0713c9713d3a73ecb42017f49d0bbc5d96ded0085c120b80bc1c5b711f279777f6efbb4a3f12b8c4d43ce7ee3fbb3779e392c97d8a5a97bda98cdfa733c9997db1e1fbfd26ab2697bf23b62b1df0c9b547b9c584f294be28e0775228ad4e9e057a503ffee640e27bc3075134a5c69120edc26ce9873d0195230e1eb018a7347c3646aed5ffa2905eb69755b2b4346cb73143075195faf2cd19520e89dde3976bac0b23858a08e4c88cd14ddb90c655bdba0b1dbb07e437992147916b25477cf65dfb00c02724037a4f722300dc7f63736c857a687d1a0f12165b0b6d935bdf594d01cfe76eaa28c8e00dccd35f3671019cd710ea46cf35092e98f6b2209080c0656178725d6e3ebbf9fe04e1ad69735d47140966fee2b866060a0606afed5651db5b37accb934f0bed7bf58efeca3de073e18a09d392e6539eccc27f4452e70ec2bb21077e9d47aa7ff38db568b4dfe5cdc454fb97620e36081272df8c630be6c8bef8cf8aeca6557d16db05aef2dec1bbe904e245f401dd55d04d201c05953bc14b67c2098060f0b9ff4cb1333766a611ce8564087ab0b3034a38febb82e7d7b0b28d6de97e7bbf551c365bcf65796e335ea22eeae1896cd3ac92cc7300a60f684466fa63451a9dc2d0daed89edecfd599b238d03f81090d39274a151b18e472877cddd77cb0f244246a23986083c1daf02465e77c4374ee0decacec2c7de499980a6ae45afb659f7aaceaafa6927d7f55bed81bccfb1e691de8e5157d8335a33cc3654c9b04d74d1ffe78f09d3eab3214ae4b23dae01cb85cba54f944c5a848e2026f840f5dc1788de32649f24981ae4948d1134fb9f4e867acec5d8fea2f518840118c7fcc7d3c8b8aa88b7a7021782798e275de9a3fa3789fee4e43b5ab20d4f5851ca20b392238966e01ab34c125cfe13ec6ef49d3ec79e040f8a0073fb56ef8d8e85eaf30bbff67ba36b57f49b58ac88af2b8b897b286e2258201a5116dba5e768c3201676a0e320c7a9ac14bd71290f1fccba80541e6f376526b39dde707ed3904d52bdc859c2b065943a3d22c26a8cb32008a88893ce0fb1c95ad64868779da278535333615783efc2cf408c9d3c706705bb8da829e1952050120949ac6d1613a8b7c31b3756442982a324c9d732de62aaad93643e518aa9734ce7a261a9446eda8c76dce3e1faa9fa9b5abc0edd68b0963669d021a85a5c92957a594e2399fa16691a6b2ee16e5a03133b8c3d9eff563918b33dea419e56661601271a3a5315f8d4f3ac60d2773cae5fb2649eedf3e8f4cc2997af24485382f3678f6f18a34a7d1d94dd1fd81d718c907a5b40e7086ff32700d08305193b1d0d8730b51c84adc67d99944f19567acb90726aa0d39f7066f1bf1840c0512edc05ff56bff556a04c1f0d8b5e15730c0220313e97756c80d7c7dab874127d41a9a3d79a2bff06ced88237a699ec3fdd39c875e0e0eca8d1be7dffa867f287ffe7ca3479c3b7b197f52074d729b09bfc5f53797b37120fdf50e3a18c10af18b309f24fb93a2c24f50d5b223ee56ad09a5175b1efd45846cbeedf450b66d5eb946a3edcf5efcfd4207f6647c9a29b51e058c4816c9d890afe7506e3bc5565b07007f4f607fcc262d1250d864527e9d260a85aad52b2f5e2be7ba5ac0c2ffdbf7cca3b659679c7f963fbe8da50adc2f6fc8ac27aeca05a7b4c842df56c2966d74b31dc2d2bc09e1d7939f31ae9dfd6f1fd2dd6152f75d3c98494d482bbcbdc4d4b499bd44a27b96dc051966472dc7a048b2914a760a3bb0842d291354f6e2e3493a1c920930bb12186c82a8f6b434404a1e23b46beca86805722c9e2f0d9fad0304cb3a117ac4de1cce56c923381ea14d39e3be1361e57dc25c04c90e40678708959e3d58d09af59614852e22fda0635c56ea77db143474c7aef4b090601f46df192873bc3f465689b26b9773fd880324240b0be34d240ace60fbeddb53361280d2dc2c0d58db54688ed6cfe3a40889b894f7fc72169ee77ead5cc70d3afb6e28e678b839df43c187e9e388adeb44972ada6abe44a06349ab9f17e4b214478ee8e747050bbd3d1ddfd09f2ffc4a58bf1b16d94cc49e84169c74ad81301688503d569095965c9a5d7227e7672f502aa15c6a0f4371f19d1db864e8b3cbe626b0455be39fa24ca4177de9d1f0b60abc28643d1024dc29c83678e6015b033ffb7f165f463fc28b175bcd0ef00f5dddfdf076cbc6bf9f82debd6cd596c69b1cfa4eaf65f29487322cec0b0cb1cad2e992e0a54896fd89f1bba234d2a5e69a7284076d97dabcd1749b6584db3b836bad0cf2d6c7a453e7d55778bd4ac42663e1d0dfc2fd7b92be7b603e15de6098bf3a686e28c938dc15169beabc346c57617cfde93ccf5a4628ba1a526fcd3314ce5ff1e1e9afc27a2e77d95caf565e77644f99fc4db1d7fe63ec6c7c8a6ed30ba69fb748cfebb4320e43151c5c769882a690f3867d488026bc8d8b1a1dc47da03e64f523fc27c900c60b52f17cc40fc0d5a67fef35c34db24d7881938d01e853196feb64c59e4c46917a3c57ad143d81587483ac9d1978e8ad2c4c15fb27832fc00d7d4cebefc3a0ccdb6fe07609aba4045b0c3f065ad2e63061a06ade30382078231ab4608b5bd16971eb775d65bc02c2693bfb849406eb53776687ed590da2dd10f61b14f1b6b0524be5a0fe65b2691ca2a18eabf5b604034536dab6b65c3be46da7ee85eb22123717b6e119a8ecf9b10ba041bc7d6d2dc64fe45ad8abf285d81ccf73b57da39486abd314fea34728cc955fe5ff5fce3407dcc536cb51386d9e1bd15038eecaabb92c134540d090da1b70d6dcd340c83f5732c1f28fab8751c187258d1f92f5970b5810ddabe485fd8eb77d08fb8b027c03b16ba9fa2185e0e3577931b125c83ccc595a638dabe070f8f460fab4c639e96a2394727cc097696789ca2a76ba21032afa042ad14bdc3ca5c967ccdb89d2193631328b5557157573f8d54d675210df56141c628e140c3ea2af952872fa05018fa199c0f21ebab1096c7b10e1104fd8979d63ffc7e60eea5adaa71d5dca46eb21d553f00f46c0b26e6c3365fc0e2c0f3f42641ba472f015df6b5e9ed93a5542e8aeee3bdb6f93fea848e4e3ac3cda7b6e6063f334505b18313b0acd0ebc541e0a6daef9cd0b18346251efb6f84b01812c142c11087abd7f02c16a7e98b5775a8c883a5152e598d427922576aa9045a52561eb01f5b3d73d8d623504da158fc1cd4e03150636117f38e4aff314ff6637dd5b38820b33987bf9f10dda720964f7d53e8fc43e54251c56359706b16ba9898dad457c8ac1ce37edd554a5bb24af72e38210b1c4d8bfe1a64e303855d2a30670df5a0e86dc24a3642770f1f6758822e7e86931c55217f0cc6d49799d7c70d6c27483bfad92a7984afa94a473df6349b59bb600dc921c21195f50f431e8e10a487c69f74f0f59ad74a4f3b86b2d9af99b69b50e0a0587fe112d500251745ed2e29452de834e94059920a05810779cab8dc9e462fc01ae06079425835f1e08d91a5c62761f2efefefec892b6360f94eacb85e1c91ca39b91d2b24ab116ded968ee4764ee9a3d02e0add552f2bf0154801b46719941a1762853e6d8dce387231a929aafdafe41e93aa00bdeefe836b128372ff41c8a7680a993f7c7ad14351e7695966bf94f94562377f8e8c21217c973c4dabc9a01ee0fd218d77a72e65da1f9e52653054b732eda962072f3b27e7630b83d04fcd84e2612935e2ad40ffb2a3f729cb86c57e9ab7bb7ad33b96d16e5dd37d0f1b6a745a7a4124e67f9e17642dbb320edb95ff77984b4636eb310e672137906d62f205ca6a9645992c94334c3c113645338749c91cf368208192c9822eaf2241a3e0f7ad203be450ce1d0a16af2d1aadc48dfb44db281f85e9eca75e399fbe3d82d22495f05acfcaa1ce4afa9a55e436dc3eeb59e894bd24dc8527c8f6483d17221014c32c44c59758c75d7cbc250bbb7ef50dbe9b037d14052e20baa5124845c2b64ad09661527fec96958f7902fe8e0908db10b4440f31b2fa60ddc0d5bcdc3ca4deb7c83df13fff2462bffc8171f8ba4bd60ff96491a57f15576ee83907c720c98f6494233243424ad1ab19d85170ad46728e4d86eb3e3dd921a150250ba4bb424835cd165ef3ca6035bed9f3074d72dbe8e2beb547221e9d74b7ef851ac515c39390a4477bcb378e131e7cb568f62758ed69aef7e8bb814e670a480e5d9211f949223a13d86bd7686e2e72c7f5088fdc7cd58860f8ad6e37bcab093c9bafda4c5e5f9b71223f3aa94bb558c737b589ad6699dd09038ce60887e71971769017b4aedd70cd603d57005e51daac79e9e4c5a6521656293aff39efb028af93330322167ab16e7835ee4a6cd2893c4291af4b27769a8e735d526f8542c4223ee9fd358593abc7045e56a3359cf6bf774a988ad0d79661167c6ae82e0e6959127731860fb4750688c294079a6ceab99a7105670c9c21e07c192cef0c299ccdbd0a8923c25c2503f37ecb307252e846f046ac1f164a8fa39ec576ea54b8d217946480caea51d22712485c59f56780ca0625246440815e6bf69fbf0fe449f4c80f543af269835e9748f2b3a62b49d7362229777773d6650263b6073f2c55e15402997e0be01e3f8562364c4934302079e9f380dc590cca06e883de4d103006bad5ab64b3a4281d142b34fce6facf32e3646f9c3e7677e43106d379262a3d77919dc031847bb4d6586851b8d5492c9abb14979a55465a155999bd1ffe239285c886f4184da690b24a4edd9d9b26085d1e830b9c5b2b41f79fe2550dc42bb6b3ad8977c4787ba3f60ee85e525be4833d92c526cdbf0150a870e5cfd195ae6a7469788ea701e2f10e7b797afb55f7c3e12549ceee4e496f0d6d6a9033bfb223657206149a9e39853e29d6867e29b9fbc59f7535a1b09eb99b501f834d481cd81f8591cd3be31fb964de20e0f16e58a1c87c12d42a545ef47e99f77d042375449c37eb0de9d47d53104a034e66f2ad8151608dfe21a6113995cff9168b9d9f16e4f9a51eca1df039045cc8b184c36ca3e70c7c66b9c6ffa7f74114cc2360575e92e458c5cff441afa82d006de83f423c97ec3b8f70c9f3d0d8ee9d6625f602fcc4fe6c6fc7e23e7b89d3e456745954a3badc173a94ee00a72f050fb7186475f2139b326944668b87dd5d44a8f3367a729665f313d0f88b32b25b5a6317f1b9c1d347706cdcda747ce1b496d9493bab71cb953cfba8753b9876b5d7112439abf429a5f597ee9e0ba088c852321459cec5411e85b0619eb91040eb464192b4a317499caf6ef238a410e0d7fb83b46aafda4187fa780df1006a9b73b6d73bada2f8e5180aa65186389ccf3bd093a9d8fd403cc483a5401b6fc22f7606eb1f82f41d9a372b3ebfee4fa7964812c1ead8d8965ab29a33fade727e4c28bcaaa24cf5a034d8b025e5a5965a1874a2b57ec0045722bf0a29f3a92abae40aebe878348822ad3618367d13584153bbc9c53f3793dd35a8f09ee26e4412fc75cebc70c91da7a0e73e3ca6785ef94602502b6244887bead8dddaf0c6f3a8552e0ff39a5b0a27a96464686b48c0f621bbbb7414ad5cea39236b2338884b3beb7986b46160330920915505b9a72066e546e2987c5167a723565626b90c89a0634c564aa0ebd661b7e36794659dc7920164b64189503530cccd1e6b79f6b0f175eed95b727ee590c48b99651edc94a99f6f2b018bcc7164d47bb1742e6f7fa4be67c9fb3f4b103cb6512eea6e902d378e7535be2cbc75cf9ea52b21bfcddf85cec7ec9ec60bf02986554b5379f00c362e174a6e3b34bcf4383c87712e4ef55572e1d87dead39426d4459d942caa5422aea1f86a824b4c09e15aa8b101c4692c05c61a25c89c509e070beeda87a37ced3d956e57482a49bd734f2bf2967f007d3a014378a16d65a1d51e76e6f6109a1a8f303ffccd84d54dba1df0fd68ba52f3660febec67a6f49091923a16cddcc9124dde9aa9be6db6ea116aaa8979120affca4b4ca6735fed4ef599ca1e0b74582177dad20996ada5961e4519b3e423498baf89b845a8cfa5ee534b93442d29764f833afdda19aab576b0e6e2bbd5e0124ed2072447821fb3e141ce0adddcd67fa036c44aee319a1e11f9a1ebc04b75b99aa728d8adce5764fb54df1bb37ca9390605c14dd2d243711971d7b8834924945e49e20aa46823030d13b5ec69cb682311e428edadd47ab0555249757301c391a8448c3474535393a9e045624e74d4faca52d83db53119bf529620867bc9a95b7736a0802c25879f6f7a8b7ad5becde69aa5b3f51ec306ed92b03f79287013630ff6a7f0d1a1538851af449e82c9911b50aa1505dc98019115061a81a006a1911fdf9a5107281af3c4f42d5842ea416919d3f6b1d237934913b10e2fa4f486473f4edfd625aa9654889b28413b87150c0defe5363a6b204022417667089f7d3b79d5620851a754762e05eb96abad6682705114142a0d3cdb789e247d516149af4af4c4b3440b978888015beb56ce298248132fc3fad8bcabbaa312b483e38562812d77a6c6d6782b3b7afad0f171e1ec9da18e4acbe53c5ca390097f9bac31ec97bb94361a7bef889234720ddce1ab28fc10c80f124ae154e302934c3f87b582c5a42f05251f660daf34a11bf681dc06e443d0c65da74b0238eff077e21f0a38465e018ef265098214f4cbc0e7592ab8469f88bed5ada5d8ccf8fe01b757cf8df14d6f81abbc5418e37ae8b2202dad7706ffa38322061eba1e1cb988e63977ab02a2f40e6fe27bfc0a768d3d780219f2996f72a34b35c97be2457cc0b884025f86ce3108512b9379581289644fc47ab1d6505cd6035a38886bad3e09e8df6d3d7f283af5c5093c2e5f4a1b38727f0cbb84aae8f66f1c0205490321cccb7253ea12be0dd250275f19a3c634387d02ea71aef18e63eca7333c4483f7133daeae58e3de267b9f56d44214f806f9a3bd7f61ea9feb85c7a2cc65461a9101b4ea4917185e035aa2998dc2ab8edaeb36a498be30382d12548a6c4525157718c2e6ac9d748e289bac6f8b55cf07bb3500aee8f1eb3fed033f423558b4694ea72affafc5e3db67556d21d944a7cdaaf0ade58a30e41ffd3300fe4589ecea4c337f73e59626b0d8be96c613bc4876e198295df23fcf74da898b567d4b37ef36eccb9c41e50ce6ae78feba30347bfb74b9d71915eff7d0d0b953a97c91280d5c8145307dec4cf64bec616d96968750c6db82a8a1435a8cf123099433c6da3458f606b60320668857eb92c47fd433b7204ac05fd0acf1c529d60dd76500c705a2863d440ac2f012dfbaecb0a70bf5a866c94f38fd168010d1bd89d6cd243addc871be7162ec2f7dbaa9ee296d080e0bc91959c7cd23803367572c860cfdab8289f8835d3842f165cc4302cc3bb667f76b2e89a968b1b5dba11648b6755e8372790e9fda03b86be12987b13c657b11eecded29644aac8b3993b92d3fbf2ee8c5e8d7ef674ee5d5fd868a37c9dc23707c81a7138cad82e44fa13e82329daaa725396c24c150248c6217d751e3cd2768a3bbf261a25ab64cefc543adb7166370845ae36c8d4d8fc8a11a35c569b743f153f1b4ea576daadd8fe5f552e6fb933947be7afc049112943e86cb9c5b9550f1350da929eba03ef4389a85629f18e75242da12e61d262885691527b18cc8c6999f305f0aaf2bfaf0e2ea0255579583405224a25e50127d779b9fc82ca721dd30360845fc7c0d0c39eb3180ffab01d254dc70bd5d72d49b48cc0b5f715ef1adc75a517dbf75c199990bd59b816b2027f635b4f4a9f990a82d55e04febe3deb492bda745de0be44bc6561a5dc04dc7dbcca0f88d82bb65ab99db0d74b64e55e2797ad5ec5ac0e1eb940a2cd5e0dddc258b70154a7f829e466e6755ea8bb40d4d4173c5a5101431dde0f8a69e32c3d78d9ce51c003425653341d6402661b70c083e2b59d7f45ba88536890cc8d04eb7a4577b26556427a08925b3cee1fd42cb40535a74e777ee01bd6506e5b3dbe4b28261fd24a000ca0d6f35a7ac8a3bcb271cb2540a38743989381b8e398c23820514e234277ad668ce1f0546031ba6b6b253c643ecfce389e4519afb30eb301011ea7d09ed5457e1cce11259a8ca54ec107e41e35eeefdbca9c090b5b384332d7263decac48e23765312cf529e6feb415ed45b001fc8b553a9db6be3f7599d1249eab5a644ed1d0309f374de15d3f703487e5ff80d221f897dc3fe840193343ab8314eb98a611488d386b39387bf68a874b9c3701876e3bbf716f10fe1886981820e2f926bfdcdc517327e00328ef3548efeb9ff956d5ddf9c8c135cd46b6db4e5b8adf60cc4a978c56a7f40bb9f16f65f0e843484a954398be01548a102009092219d1aa9b8f3119771e9703a20bc3dfeaebd628b3bb4d9cb2a031c85f11109e35bba7441d3d3aeb374fb1a11b322d89ead6c83c1417587b85152cb6cbe4867074abb93ccd530f4aed47ef029761210e8a983d2405523211302dde39c16abfa617f346e91996593b70534a9061c341e3103ece7e3c7831e776de4c8349c056eb749852327d4523efce1d292796ddae476a18444b4859bc3b86bf2650bbf294cdfa21b9e73b0c7f5cde06740b7420554694e86f716fc05e6a7fa6bbde08d4cc47356c56daa258887e89d12b00eaf33487a266e562f496af359bbad11f9762339a7b9a9d303d0eb4b496920a09a6ad3d5b845fbd748b36df986edfd0177769fb2f4d34ba3bc61bf7324f1f5e72f665a3a9979efc6b5f8dd10b80098b7e6ec6fe239420449741dca96f83e5a274d0d0395b9d23f7b54d2edaa97eb91248e3cf0738b64d072fe6523d435f5ca07c9bc4b8e359c68c49910b3ea2e5c3e13bd81f9a6cdda405ab7e7f81b484dcba01412518db54cfabcadf36afd346fdfc889c9e4a185228217379bcc62f9a4328433ffc651c8818edf20c23dbb10bd68f057fbb6b56342c3529a38c493c8f7a5ce140776160c043f6b5ca25477fde6f89b332a64016bf4ae98bd5042835305fb930722ba13915a8def4999765437953ab36a0e35228af65f7aa9630ebdf365203d851a5bd28240a07d2fbbcdd16f877d21766673ffd39017ab7a2bb4ebb52a45d3e0e1a165ba542c10541a29ede7ad7c7eab8fa501f34aa828d46a57de53960f20ce023be4fd9d3bdef97cc98291bc12eac37dc11b4c539c611d968708d238cde713d44a24c7a9ed4befcfe58a2b21faff2375e6f7574e046e7c18dcc3851db9c02b9c717b6bb65bf3579fc9e4fe53c8bcb68a28580e221e55af1c348bf7580f8d65536e88dc51452ce4e1903c69a87fae4d83f8667cd7ae5c5f92d698133290f80e709d47fbf2770275dd54ab819cda1872beb0bc2cecc9ab7e633590a0e16e611f2cc4f4505aa01d53208ada1ef4fcacbe1593ba44c69b19554234003111676d61cb0af746e7006928597d72346d0e5a1e5d48d407f19bb01723930c0e14956f20c40307dbe8905abaff37264f1bbdee2c2a46913a4863ac313cdbefbacb11c857ee6e778d3976289433cd1600c8710ff8aa40c5befa20db8cb526bccc7e548511663e33dc9635eb2bddfcf50361b2618329c0e9874273bc42188c9c0e9a0e8604921fdfaa2fb8da8e3976319444e18a0c824c5daf96b1e89699f588077f3c3669287b10fc8e38fcb14fa21c92a8233276d443d1ac01aaaec86029c4ae98da4806510334d2118b78a4a43ade120b25bb9b703ae1bb67b1b831b7f7d891e847b400b64766e6410b1116ce3d0224cc7fe290e4a96305a0e17ce39f9dee86713a486357504afc7c0499ced89ea0c038a59962fca75617c91dfb7308c1e6a5967eb0f5d78fa9682276a93627596a0bcd8ccb3223d3c1fc56f31832998309a16b44055f600cf8b89e18b0b88bb1bd996774f68f4845185f66a8b7165d67f2aabb2b162c70cde293a61b6a89bc7ed7e52f9b679f6041b5a6b3eb87fd074cbfd1c5a6cae02e8d92c0505de514b576fe4e7f2e5bc7f1d505ddca37349de5c71abb7ef08e4f8e001e4a5ecdd6b60f9770975ca4adad7977e081f6b372c100c531af61486e71692143ce9db60bc6982f2ee3fcf1272880c23c504eb4989ce7784cab5216cba01aedb2de909d7b1db5bbca0844fbdf7f3a193db8911ce24c3093fc06064dec86c47f95d4eef04dc8017b98970f68a74913661c01e39b1328d38a7cb6b3b9cbbaf6af1f1631d1dfeda73f4dbbf3d0394d2586f822e17d936725638e317fac73e5cdd9435ba5acd6cf429f64686b37d862d4802ca4dd99852a12ca715f15e607d251397ad87f86f55fee013f5218f217fb51b5efa4c0f032066096026923de3815734e25b0cf360646c288ce250e777b805e5d585c5e29ec924e599e964c05aeff1ba99ff72b2749d25aa755f0152ca982b827b254f38ff6a62ad11190fe629027582e03a02dcc750490a23bd6fb212e16eb968758fb8f0de33773485a59e555e73e32e1167bcb5e6cea7e176efb55003fa32dc37e9903082719510fd9ecb03be4f577c2b5e437ce5816dc2ee7f40b22ec1a5e946f407623d5f63585cb01a754ddc59a730d2c696d42ed95d948a3c4abc7e81f982b4cf9e97303dc4467481fa674f4c561198495405186ed8c8226690fe06cb12f89d14ec64e33a4d0b030dbae3791cbcdeb08867941286672f610f179f2bac6dddff877ae0614e83d2eb68454de389a58e80e0d33b700889d279101ff3b9d5c3fa7bcfc43d5a37758886e6d8f322a09fa27df27f8c285f0e327e785e0fe1fc6c8432e33cf616dc01060d67f2bfb943d818a747830f292761be3ad81caababcf9835c443410645bcde9462e27e42ee212117e25f44d41a037357ea09263d0c16d5aa5df038adf7ff644e5d77de12b487b87e0d5bb37f3b26366ee798e2fb97e20385733d23c432a524ae1aa1ea4f9e73ff8dab463367035dde2edb94f5e71abe8f86cd760a0e834e6590ff4ef1fb3bb6943d6dccd88cb379350f1e14baa65640995ddc5db4183c147714f0dd2d89bd25ce4e568889a45bd134f11491f6cff623b269db8bd728c01fe01494cf6e4d179eec62b8dadd347a2d515a26e7eb319f4b9d17fd47db2ca2acfda79fc34f2ee2212b3a9adb6904e79e5798f2f95cb15b07ae4c2e3d5838e0399e4798ec7c37fefbdebf12ec3dcb39375b4592d2a93e5c8d8bf663cb3b092035b6808e5b8ea7c4c68a866ff90f055f3aee447106f396a7d38a9c44120b10a620e26f2f26319b9feeda7fb52e5b6b21dac677e19e924aad170c41774529cac1a9e15e21c1b808858b39535ba79434ab5a047eebb8e6c8bb8a8c13848060dbfeb339172f7273aa7677f19b1f098ed3e9b16dd4d2b38b4d842b205e671f92f0c1048edd28d4a559dae97254ae00f63b8867949700c7118820ada47667d086cf3892557a8f7323c53d2d9b96222cd62e6c29c32454bbf381ba77e9dd4ced6c809f611d268dd8b9d533cfa697ebe28300eb4ea9a0dcae91c6d9073b6208b4cae9b3e697397bcd054d74850d1b45351ab7570972c4f537bcd5c921bfc765b29ceda8050454459bb336093e15f4e498935c32be06e6f79a17f57c09eccdfb36998780eec2d9dad34aa037380e0465f7826c0b4f97cd6258f23b22c274f1ab7e301de91f2850a27f48d22435eebdcbb02393b6d10177a9cdd8aa540b632053bf8aecdb4751c85c6d8c8076447fdfe66c4e0a0e3530427356a04c364f13cf19187dd6aa224374731e0268d5c97c354315a753979458e3bb58c0f99471666d709e5b1423a63a6b674262d7cb77556005fd71c886c9376754c0d333710553d960f5f4447d4552cf5ad38be4900870b9e8c5a1c1c30b76b3a1af922803ab602fbc180ac9db36dcb6e8b8ca07e467bde02aeaa69a0ed23ba4ddf363c87646f1bef4855c434b7a56a9a9b44d8482033605f974c0a2e8e0de0f12ed85d30ab8b5235e608f7cc68b569e73b6d2146737f321a4b90b112f29057b9355cd6acd10e0f881b63eef36b9fdf8e9bd28e3a74657c86836491ff37b57d711aed6fa00b3a3f2aceaffef293e6cf9ac1deec8ca6815bf8229c6c1b5bc00803728fdd2fc9a07928fee2cdd4724a66e23c9b2cde8705c7b94527529aa4246d2da7a311813f8f35941b8988dc8c7803b8b613b3c030d0151ee228cda269db3d1fcc57865ef649dabcbc4ba34711ac0a0dcc04081a4fc17f98c43a01ebc1ef1dbd532b8f53876ee406ef1137c40d6f24e31b962be2320a650e9b6d14616ffa8e7d48e295034f0da8c704ab10878e2d462c3d52e77f7612ee3469feb5d99938009557a94b602cbf3656e0d8d1420468c6172ca8345b6fbda739d2e398a222983690b4e3f635da88e74ff7b14818bdbd320d2d040e27329e338dd741da8ccb10cc1a273241737459a39877a03ecf18f9f5fbde50e834a6cee0a9711106c095d0dabe33851a785c77f3d4e2a3744f6eef4a2aad86395a26558008d59811a423d6781ecb370a68fca3d54821144a94c7113be39c4ad4ae290908633ae765698bd9c6f038293f7e0cf9fefb404475aaae77b16622fdea6fdd7a1e8180c1336ba27b241e8c0d3b7d7c2edcd26d3c7001ca412a01a32451ef8d054151c17d953fc07e109fdee50044e5eba2d67c63dfbf3b3a5c43434287ab33f3a03dc17ac363848602e8bbc07eadc6ff2f753ca90e0231930f02f556d2e2edfe532b1e78283fe1f20ee666dae7c64e575b4f0c804a891de97af734c128fa06a26fbc483ee78646078a23af6a19787fc73287bbc377b048796114e3e8a574ce7f8cd412a49e9a3fe57a3df34cb73a52ba1b2197f445f3a1ab57ca66f94f978f0747063b9b7be5b579fed8ec19ccf7bbf62dbd34c7cd9f9d1f25fdbfacdac8c2faf6c1dddba3e7576836e75342c370b4d2b17fec2992051d45159e3f36eb647f2fa4a997d610290e9e97e9f7235e2439aeab07b235333be59ed9e3e37cb3404fd3aa71941406607627c92b32640ff8589f85a4046d571fa786820eaaa140f24e3d45b0baccbc8636eb3e0cbbce60981b3441751e36157c4facb839e382094f09523e40d4073198a4099fd911756cfdbef56bb952c0054ce7622a4b9178f9aeb1ff0c33c9f41889026a8d03c42633af9b5a4359db0fad7816295a4f8635d3a4819ca86550eef06f29bdbbe495b15c2d9f450520961463cd7da1c5d7734728402a9ccf39959e4ec6828bf15bb6c07b0c237d374dff4267ac58e72acf02d7bc8d4ac99dafc13270c5884e143fe6fd597a0b1f349d40052df61c475a0249026f8f9845988fcf01fd88c16ca08c39ce1304b558253cb4f16ee6c61a002eaf059f325a0a8ef7cfb7f59ead5bdccda76d75be2126c2b30401c528281d48931fa8892335341bca16f8167f02dfc4a40249a7c7ed73ef875041e537aa0c912f786abe09fb9ff9a8246cd4f2648294c4b9a14a094f765cf56c2d99b9dc0002e8929c64a47d0bad70b25c73c601baca3f0016acea3e7d9bdbeb414058fa46750de8bf633c0e91c5579847f1a2a376ff8c60df9965286a75ef3fd7a89a9ac24bf6f96d812c9dcd8ad34e9a4e4c1f689673912dda1d9948b0f9d0ddc76659412e56e8d89e22ebb8e408817af49b9d0e659dc7630c4e8878c9030ba6d97049efdc56afa8f3b67f3c4354576c884a59ae82a8929dcdbe3b3549744d2d5b40735423ea123b478b19839d594c42992ff9984596e7f9e1c65e1471a0162fc40bf79bff139d5f1434e7ada41952d6f94f5566e6bb767c61f0d3f0b1f2bf59943ded3fedc74e437b791e2f063901a384a8981c656a3577910318d6edde1e35a5aef36a1c8ecf222e7c3fe2758a9eaaa3181bcd6372bea531f1bcb8f84c4f55b151e3627068713e63e5698f64a2a3acc7a721c8a083801cdbd2238ae24c15b07173d21db6301ec14d1c0adbdf0dec141885c6509de7a2e4af562b9ad4dfe65c9ca3de80529b0b6c9f5a61fd0980553ad48db7423a3e08eb815e6dda1d56743077aa5606b380da69883e5969ebf5e5c6541bcfd37a29f43a2bcfde46679ca52829c5232af29da919e70a7ade6cf13a5623de62e2c4c7d6e2a4aa46a70e308fb795a702f7b79ecab61137c8e04928398206b7abdbb3d4da54037c841ad2d409779ec4db605e8b5289ad97641c1bd03e26d348bca56bfbe87171057594db0b8fb8e0ec672562ce3fc32722053d32ad9d6e3a3c44fe345391aa67756aca6c2bcaca4055329b7a6c071ae8baadccc4f706aa117da98005b6828c2636a89b93367e41324df8e81b9d7d451ed016a4f6ca41e08c775718cf49a72b1a332589b4cc03b67a2406a59315890bffe51994c15159e4bea207b5936e8570a6680a495c0c5ce9ecd707864be83dd34a77e9c4f8fad1dab959070a4a5c2a4d81e5b72603cb924f546f0e7b1ff81372d07f57128dccb101cdd31ee1a2ae48d22b4778961bba983cbe8ac5553492b023c5b7c2c5950bf9d643e58b608b63f1b1458e42860a294cf84aeac9dea2a2eba4dc0d23c49483dc72a6acae2c065be56530384959cb8db387ea1c4253d929381bede38986f59b5153f73a92a7c516ddcc162ad4e77056ba9fe291817c123592d0fb8941722fc118c17df79bb3163ee0caa1cc16bfbcb4d79556280369dd7c627e39160f12917c4c1f6fe7a4d519fd62570cea99f30f2b5ddb24cdaa4b81669fc1c73c12feb5473bc16e38f7aabb5b5d25412d5d7376cb51c07438fc55e0cb9647294d3e1c3da8c9ea894db41f4ad6b150fed67b0716dc8b2b23e1e81f41773af4fbfdfdd0461cf9cdebfbb0fe97e74ad31022bf75b909a9a2863737be4aba8ca0b373fab0ead282a4f78bc1c4c4b878f038b24c230e0b4e3d229573258328ce306aa855f492f8a33b06e4525c5b4892e924a501c00eaafb63918d879c728b3c5793eacaf567bd192485f05abaf92dfeafa8968539b4a61002281f462fc7f211e0a6836d687c4ced54b6c2cf153237357bd678990adde482650d5eb188f061c886c049c6a31580cf5b1888c5a32fde735348cc30d2b0ac7083d407deb7f5b5455d1b3dab8316da40769231cb5c29bb727006ad107a4c12800695d0295dd967bd011042da746e9c45b4f70f246af406e61a3a048f296fcb25cbac3d163f5d34f2c3fd750896049b83ca3398fd8626a8b0c2d8bd03f48d09a7d96a3e3350574ddc46c6c9c6e4abf2a267ea15a31b8086abb921e2840e7a763e7672eaa1e306206f8bd2e1c61cfcf7fabfb63a9794299262ef111585fd78cc7750c635598a22559127bd24cf3a70081c7c96288a07b81026eb0aed32e8aa8ed02cb004c610fb1845292dd90cbfb6233d34601358b5a6729b1e9236b7b07df36b10a43dcc1969fc47e6b7d8c3901e25627318d022f33580df41f2a2750781a325e9a6a3c863b22b0dfd20dba6127dd2c1ba16249ad42b498542585677a47f02a958e62f81849ea2b82e7f0b1e5d22c8ece203a1314a651d49da7a44c1becf7b501be32405e0a42218f1917904f846d0d27321c377bcfb83de05176eff0f2ded972b38bc034adc43954c8de4d35f9320dc890f0dec004abfb5766841fa56b907e75a2343d8d2b1ebf6ccbc0d34f492dab32411f489682878ca5ea7567700e8e7668dac21b525903d16ca198217883b929e739ae22cdbfb95feb2726451633b1c43edb625979858de3f1724fa04494eeffd22fe4d299e4ce01bf3f95e529855556dcd3f7fc7e963ac2404df8391eb7b3aae6e1a3b3ad2e4a37d8ac6d1292c59fd0db48681aa8c22d4b70a17ec0501785d750429c9b061749a8ba80c591ca8bb4f6780530fb84a340ae54a6b0c50eed45432e66631a42aebbb81c87eb3ff052e78b84b7105f2b9da129cf839f9358ec39b896c3bc4cd13cd838966f1e5f6116c73058ac7d26fb6647f43bc2513c1cac92551354ff092b4cbada970880a386cbd1e26b675dc37b2d7b617853abe981160984d1bd2171bb10a864c93e871e56d6d74d34f4468d8b8d554afc30a5bdb8eb070c07c87f8cb301610c53582a12e5857ccd53254ff6195f9f0f6ec41f563b6ab14b5a7606a069999b07aba8b631955e5b1ad9ebd25a4151ade517aeca5f5887a491634244f22910eceef9bdb6c28832b6c98d43e7e862fbd588eb84c380290ffff8cc78e207c5c7d4c9a1e4940f62dc2fe15dc95723acea9e9b1bf2e520de2e4daf4a411d1d2a0795144a8cafe7cc57cf9612764ad99bc0d5d72e7954d831b18fac772e7fcf4856708a54c013420e42a9f2ab63ca24f9c8bd7614d6ca08c6fd8c8e37e9ea80ab7eb2204b67d9a5645b1e2e848c7516c9fd4b8fc2fefce2b931fb7d34be55467f2db8ca2e966efa34e015dac800e7587f574b89ce1211fa5eb36f776df618fef0763e46340ed6e5b17a95f1c85b37e14fab6c10a2c2fd4833dc87498e9e067c2e446a92388d9bfdc76f98b1239b16792ecc4613f4afdeac60e55b9ace93751e563ca447396d7586f2e6f8deaf5cdfd27fe16fd7eada8653aa59228728e3252a0750df7c2f63f98f236a4f54bf8767eb13a3f9aa01b8fa39e872d0c5ec1d9d628e4133da8820cd51dd84ded46e58cbe54f12b8c49adee831e44bbbfe883cf9f7e6fa17f19f410936377075e5131bae0a23b1b95605bf86b1d6cacfa7b24791fa9b82a9b9165cf7161a72b271ca3e97d972e0930248328376c4871f3ca62ad6a4b790c46ea793058d58d1a74dd2d86777637964b3c55038a517b8aa5d67cd1b7152d1c3d4b3bfd51ef6f739d010d5e06159ab7f1d208a71ef0e6864b8b7f3d77a3de66a2b31414ad73332f2d2fed9f2b4f67c1e9efa694f93628a643600cd4eea64bda911118a5b0b2d42cd9c923f33223293779ea3775cb2ae22157f794f8cffb7002d4e3c909e923329c8dcd2842d18ab84b31aa443bea221ac9fd1dc027b2e6ab3612bb7153c101262b245259c572e86f9de4bf450fae068c724ac91058c5a3e2bbe72bf242a63cb91befed4db0d6ab00279bcd47ac45ffba1c90c10b3ac87d9090c3c4bd7d9b69d201a44db019941ba541e5b785cdebc1d053aa383ba840170c4280c88c5910f60c1cd82ac75e8ca05e47e4ea2af4e0902d5691110ea2d8c4fc6b707c233fa9e60c028e79f91e0dd8029543a5716a93d863b318c5754ef4de468e836cda139a891a166615b043c16ded67dca0121194e4b08e23e026e5e7b28033bec4bd9320b4550585398758a12c6121f1925f58f33666ac695ec2d3cf1db0412804c58b3356befaeb8c5ea0107efbb3696f8c1d5d80b49cef964d74f6ed483702586a7fc8afee5b69c4fcac2b6f2eef0b4d5fa48cf5a27ef5003b7b80feed45ab46acdd0dd472c31f7f75f090c61ca1be29bf030300c01823720105758046b4370f8da2613e26b5ef9d2d0a0bdd577f0f8b1f6a0e399c30a7968195be3f2d9d3757644a603978e40c8bbb3402ae568057ce7a5e413ea6bac6ae29ea7b0d6958e53698ca49d1e9717380b429f63342378f100e686015751829e6075b5d4851987b52b7d4547fd8fa53a862b58c670fe19094e37080ef1da7ccd80301a7d5cce2c718761827b0e2d13a585a4a9db179706cef83cbee9f40410286514c9934a0aa83fabeb07a5e25fe46a36c44a17f428efdaa3e281e36c51e8fc5476a1f0ee4e03c97b0227900caa73af5759f84d19ff0591f542505bf60b838c08364ed0f0249a56b41c5b464e4c0692946434ee98af2d05a1d925aad51218be72fb24bfbe866f6b2844d554850374be974022f48725311c5464a32c7ad849e5b6d1ef1585b8fdc31045c0b73bae3f34142ec8b9196994e8884ca0a0ea679bae418e79051fbc320c15b52f9cad8b236f000aee3752276d420799045fdc8e0c0424e76c64ce0b33c40db1daa6c31ced38154d8f623354e34deb965ac01751aebe9ec145de4cc8de638af39f4b118bfddf3faf507513af982138c3a47bc0bf1feb1221d8a07d8da35ee06cc1756ff64570d568f6da80b56228adf819561508c27e71b2d1657a0068b02fde9eb70f3d433ebe7409665a49917cb321d79698f6b3f33f093c096a2edc509dd07118dc53ef2d54eff259b5b6f412aa5235180f5c9552bf9f33b22856962650cdd030f9519b759c05214395fd158c1f3f40cbb52269231c4dcbab7c6e9aeac75cf4925e3919184f7f5fcfa46979e82c840f27813b50299e94a2a316eb793001093addb2ee1cf7248592a25b7fd91950215c1250d4b3ce4cb3fd84ccaff8ca20b6023095c6b0194c077afe30865eeb0f1048df31ece92ca002bfed4848152940472b4074767ae95404544b27a38cc5a7522d902f19edd602dc55cd2aa082cfb5ade02bf3183601fb0a0a22d280fb0b8c76da98ac843c8037c0b80d52016f8b39ed2a1f772024047f896d25b3a24568fed3e582b4b0796a1fe905ad7b168708756c7ff365cea85d7d2313b33bbdde7fa68f08669da206c63b4b06e1482b6f1f6721628f871f5d2373df7ee9d0423e9809b49b37eab86d9f170e96d8ae1164a2a6ebdb765857b93c91c315a54b7e74e5892248b0bd0f0355d540b2d36df8c3d81eb284366a88d8771caf9a8ee67c037ca9e61e6c16e0bca7d13795562032109baebba0d9dbe4d9284fdd8255361c21c363b8dcdb1f970e9e80e49bb536acaa9f994ce05cbb8a48761ef5c12d8065493e90e817c06d09de33fb6ebbcc1e08de953230afb21a41f2dbf3a8c5072ba23723e923621e1bf389ae3d1e4ab3f74602277f353d62ff3288b609cea683a22ed3c72ab87d930228c53788b4fc87e075f7816ee028e4b870cfce0430d98e58d2e076f1bc9d94771e4a8113014b201127834ca0035a4b1d652f4924dbfd6b47cbd4922cc2dd1501b3ee58fc3ea20c07ffc6dcc9f14f0fd042042449cb140a2ab5b76d5f373826f3c77a41b0557d4a994f484893ffae8babc3312d4860481011dc1075520a751317c1b34e6b15a0176156effe2a431cac673e00cfc4698374143f987e13d1e84ba13dd7928a1598c374c6f628ab1cd6c19cb30145683453be75e12fbbfd7381da041485322976122037364138ec39ca00c27a812f4ffbbb7f66c28782a99699cd7798986c820ddd9d7a8c939fd578c416ce12c4bc5959f5c233d7a8424d6f312cd7e8db5ba9858f86c1517db65f5fde1b0b3eb4314172069ba4db7bfdb225f52c8d527d349e68b260700b27706ee6f438b651a3e29bf1fe8f2b3f5ec6436db099b9a25e3294e0852bdb98d807b7da00df15884d2599a7d4307323e0f556c981403ca95dff2684163a6982a380d8b63f321122559dd4ce3836319d712b38fe30efd93af81f842307894eef9540ffabee76cf4f4612c9683d19abbd87e044df301fbce9c97914e980b34651fd021fdaec4fe473b12af9559308815db6e956c38fcc1550b52dbf8619411848aeab288f5b038cfb952101f517a4f59fc8b04c73f001c8a696d54bc1a964af471bbb0cd93cf43f265fa2fdff82ef701e77da3851f65b21b7ec57595ffd55c4259f340791d052d4bfe867ced0edc5e6c046c1fff49377dcecdbc76c269a7a02a09de1369380493b4e8a05aa2ea34612651be4aefb5ee58f8087892188ab5ca82f428ac53a03667379a8447cbbbc7cdb6231362062eaa3d84057e28e03e1cb26ad6ef4f1f99384782c9fa0203833285d3dff0e4d221b20a6fbe3e22e6284ad0ffcf0a098734b9a9974a1591167b2389a9066b0b4d91aac540fa541122fc4009334d9d50dd53647e8d25b506a3a462ccdf138654acba3d054d21c1f4feef7616e9dd4a6ca1ccb1a9e4f475ddfa20b4c2dd8c650b7f890e6af627d40aa883a4956684626d9dcd446cfceaa9ebabd57c8a54d87c46416cc0dfe05055f80b8579d8e2f18775b32640696d636930cb3730279cad57e06235be8d414e1fb8bf2bd086c0b150cd8291c25f5a0c483908850d80697fcc5d3ba8aaecea85a172d0c8229d297a6cd91e0842edb0b36dcb69c3fc3d867f1a82aadaa0117c33ee8a912365a55406bdd678552b0af27a15884bb9ceee84467707ebf33f959d246b04719e80cabc3266bfb4c914333b55a82f41a06fad0c516472463b07d1dfdc7b10a0c4877d81f5618fb3744387ec358b914e2472024aaf7e0809620bca322f68cf6037f6d92f3f2a86282bff59c7506855ee0b152f4c3a3467e6d2a8a227600813660566ffea9984e8836bc22cebb9a8538c9da9ebb7928c9a25ef897d2873cdab7cf72db336ecf133905e4094b2ffb017d0647bfb34405c8eb7c9cd0be50142ce3890ca2239280d04a5535fe176090cd5f39d27f1a0bfd449d4d216d18482465c70d85a4b88803144172a89f1a41e1b5e2a003601c6144d53f451e03b8314fea4cb31d32054a241ef16305e529e9328e0d24ac406822b89dc0e0d8ab2431bafb29e1386523645e592f4d7b0e415cf6de487da47795730f0c25ee21f6bb3aa98f3cab8ff2785bc638d8c45f32a659ce12e59c9878dad8b06b089c5c5397a9e1d8862dc10383b40877f6bafb758f11a2aaa3a5b1dc5a7ee3a57dde7d2f559d410e85ce3d498f60807953f1703dada1dadc89060130c421edf8426137e2b814480da9c002616ea25a83e3ae33289ecc74cde910fcfeeb61810faa0c766007cdb6db44cb46968b77d2bf9764d9b5fc28c0cfea493ae2db6d779e0186eb6fa95bd03d45164dea5d0bd12288c2711a1a8119cbaedf46f2e331c969c67bdae1067317fe2a4ec52cd70659c55ab50de2812149228da2e13c6852107febd0aa54119bdf0fd156f76931645abe33dbe673d597fbcd9cc751d1740567ed7ad1d6a3891ac63f4218179e3a81318c45f582406dc07902f6e9e692dff2154bb8656e5e88df0433eb475c6231101c5a3ef4a6d1f9c903f15987ba31f77f86163ddf9f10609113b8b88a19724aa715235c2725c70851f7bb53d8d55f8963ed0dbc1858fdb05d9e08f06123f45eaccb1da46c7fdbd98ac83074ed894f2ae26d09acc9b2ba5e89ee177d7892dfd2c90885dc313f53c9e5cb8f07a4db295f9a124fbbae3fdb1e3341394f8132771153e1261b41af587c6ea43170f2b39a80b92f4c0d930fe18efc3ff5199d810769990edee71d8795720bf5e64350928a928db8602021d9331406abe5c46f563574dcb88b19cc6320203340d45985d3e72d8cde0759c9c9a3a54fb82efc26e7b42e105e48d90ad434f05f43f0882903b6223c7bf983e0c19c053f0fd817abcabeee0adec1ea282da73ef84776a7e5b05c27b33d5b63231eb646e693a9d970086e74aaffe52b739e05801767a7b5a25035132a32d402f91cce274ec03ab6ce2e806bee77495e9a0bc7ea0f4b463ffec0b436fd55c91bb17c3d897c0df8c811e1b76ce17ef9981886710fa10fccd0dd1bd381e1a67fc1c2c6c2f4e811cacac0d5f7309dd989b16e0493d7ac85a09f72e04a3c3ebc845304d6c329b0eb657e46f9eaec56d192dfd3a2951ed711d497481a7a10be1fc8a9b80b0e8a52f0c682e2ab16a38a62b16cfd2991a5436746a804ae1ba2beff73521acabfc8aa4502b4c77fc204b9f4027cece152c52c6b33bf48b141553358865390d7b7111735c062c88014eb4132629da57eda715273e5c24d8e50576d6e4f46caa8d87e958e8eea336225962932fa0922ec166ac834290924d024ddb42d8ca641a8154a1a25c5c0b0a9cd6e8a8362a0e6798e6df3f102c7b1ac4e7d78950f554b7e86ddfb8828b840f34d11ae3d2f2d85a0f2c924f65f027eb360c6f858ce9e8f1a96bbaafb28ffb4f56772538b3a3090c71fe853656b815314e24b6c0150987a44eef26629ed00f9ae8871f6a1ecfc01f177d0a47ee8a95cb909a27ebe0081a1a4b389d301e0cb592afb2845c4eeecdebcf1ea4d4f4753ffc59e4bd016a429a10ad1be42e32f55e3f14fc4f69301758a7efd50223dbc1bcdcbdc37b4ce26df7c195da07d4b951a958c84555d7ba3d38eb2112be1bb6e91e5baba4f43181cd3bb0563c7000e83a1250b8881e447f41f9c75937dac927dd2d79c9f41d2bf2bab6cc6ff7563095c1b1179fca1e3211b8c50a37aab13c831a914d2b624756317414f0b242c37576c214536f62c9bc309fc4b0b9e966d98607c9a4847cb687ad54e73b14fc3581703382813be39899b636716704c15dbf914a9fb690891a497b59eb68b0ad353859bba988c1e83109de99fe65772678d8f0355a13a489d4b2a8817bf9b63c3c52921f4eacc4f4fe3a44b4f78f28a178aad841230dfb6f994e442e1d9dbea8a93c13c4291a7153c36e0757084fb2dc6b9bd4fa3eb308e00b5ae2c776ac2d9f51852430ced5d3ab4319d25263aa0db73f8ed1ced9a21be7150817c77dd257c31538a4ac1fc6ee446f01ab5d9b900b5569123c7bd8ae4039bab444a382fb20ac192cf358996685ed82fc4e3b8d139cf86683cbc0509523d61b8dfe1f4ada2d4a879de8b723a1be5322d0328fbfa8dcc190950d25030ad7a4861e4eb6ae9a50ed4b62c4745282a2ec1ad839790838b18fb9d7dd96997edbb072b73d46d9a6156f6db77d1867fd889de8edb1e3b955df18a3c39ee20a16bcc79ecaf7c6d40f2b5e0b38aeb8c3cd39d7c207c669353e6b17f18af1d7d7b2e1ee748e3093ee3dcb4e6406580478fb7146e705a0c9741cdf7134f391d0a3f7eef917a0f0cf6919a0e27f5e1e18f47da3e25cb6f5da99213f39a65f238c46f2f2d5d94b1dbf75dbf772723f19a7a593c96a6c5fd679d88bdf3746eee0c1121485098bc1da6831ca4efee4229ed99b7e76d67e96cfa44778a960afeade722a41a14c1571c0bcfca8fde3974c080a732184304c1039db92da023a600116480c0d260acb54623933d53672159606936acbd717f0b6869e92041b6641c2b6e2227c38869290ebeebba08280644bf4849fcdc715f44995168292251ec9556045722ffa440b9cfb7a1f35c1f8c8c8e40b30b7256c5e9273f79df5e74eca680847455bb072c2c172d61aa996eb889ef9c0dac2e66e4e3cd1ae6a2d742c20d779c30fa946cc5d61b039ccfb5155ab0dd9a6857f1a664dd5c55ab19ca545db158a87db16b4fd361c374723afa1037bb8c4f803c51526e1a0d7bb520afb1196f2f83cb49913d7db5accc96dbcb3c8be172c673b3b48a14cad8594add70910926bad10f04eb6f8c0257aa3b4633c45ca9aa03f5cbc0b2a5878d1afcae751da62daef4bf3b2d2a1fcbec558b9dfd5f5e74a3e9226b72d3fef1a3bd1e680bc4da6ca938a69c261e55fc8a4c59c4f6e36da5a2f787cfc3379d06d15f4abdd7ceef3b20287654946b57ed3ea7d5861cd253bca5201b6c09723f7243f67c260b143c7aa832f05618c837869cd9320b91fb78149296b6546ce952e8864de0b87c468df59969272ec2fe77475309ec30def8b5a7342abac5f8964cd66994be7b4489c7d8fffe6976686697da29ae7ef4160f4cd55c854f910a6a2055793db7e7a5485c776c990c68517eff640a0f5888e47e87634280f25449f35fe46514338394c3b41169de598751509c903447901b410029e8abd533f4a4c2c0db0fe06714981d5e1da08d9ade0947e4f79328458489fabc8f5c89ad6343c365c3b652931882abe9a78d2ce25d5f582e1586449d724e6550e66ce99d06b54c84fd95446957bd0bb96e34fc4ce034964307c6f829272a782268a2e0c605994bca3ae8464b40dbe79b36bf961140f363c472c75c383e804ab1429ad42ed7aac54c194f6f2eb8ce1b922ffe70c1bb5116cce8d7c05c634343bd2507d12220448e5080398275e9005c50a0abf48f81c2331e17a783cd8dae2b206acda236621658d388f7f76a00f90beb8c9158e53c13c520413b1f01dcf5cf4191ae825013384c309214ff3df16203f58c99e1143f6b3fce9eec45e3b257c05121b77b09bdbacd0a124be4171d8f4c1753ed0edefa8114f2d711d50ba2d3d52527e7a92122a6ddaa2c33dc01d1f8a37a97f918f0cd8fedec89ab1007acefde14f149c8bb7d4f1c5ab7bcb81b11cbed7c91cfc834bc2400db36d078747c646df31a4e23b06eeea67a2e121061ce30d314ec8470897b022ba741f5eb2c1dbad99ead7cbd197210fb01a1451af486d402e20f6791004c2f43a41719432f2acffd1edb308824c4578a49a9d3430b94cfc76d85022bdd0d3bc60701721edcd12e85705eadee18830dabb5b32e6a6f5b05191e9fd74360280ef4e7f94efffdf54b9059947b0a459862b3b3bf29f39727a673b3a843dd4b40d756c0b108610379d11d7a0319083fc507700092f0121442b602a94758f1350c87e205499b4e8835b5dd5393689d2605c0c42ac6980fb3519c03bc1741dbf0381415d264dc39c5aa09f472ed6855be982c42b374422e1e7a64ec8aa18ab9c068dffd923858d8ea87af703f64d4b0ce03d66dfc7e37cf8c0b59ec3204e2d8f3aade5bceffaaf617d6539e438eb1672fa9925cbc82df179f3341fdc77f87a3d93396e4b85bc9ec16580fe5e3094a4eb1f158aa91635aafdb6e8099ab1941ceb01cdcd17b6fc2f1c0ef135d8f167db19ea50e42ea8697c3bd9bc433817aaf31e5d4dbe04222d42ed625dd7c723740d10f295384ce3231b16621fdc0772554e76fb8c20daf1f3411eb3e9604a866a562cdcc7b5c22e6a7fc994cc7ddb83c804fe8c0c5905728fe678ea5be34225306115a15012f9629bb596c9cb5fb8fa29ea785baaf914eb1bbc9b0c24620fd4d4bdcc81c11650c032df5978f3d242a285503cb7fbc0c55849f07ad78207bab24c35d04c9abfcc5579c51fad7f21ff68adc14373b0b8dc0475f62dc4af2003d8dde5112ebb5e8a52ff928137db8c759636f009e3dbc23d01207bbf881379025a25351738059eec038ad83d0ed780a58e683eebb33fccf990ef91983598fac0126bc560574e8cd4a25d19b07e2c57c1e8648703143db101b68ed58c7d10be0cdd3150f9129b11859706f38f5303df990daff072d2459dc86ae5d4ce876ac675100d63d067935e9b14bef61fb3310d9b8074c9916d2e89b2bc249a9b02c978c4fc102c97ae56b99d50c0190ad72dc36fa6c542cc0fad953676dd097887c2de8403c458fd93f0ee3c462d256a347c04fdbc8807aa5b0caff46349f8e3b8f9219b5092052b15f42eab8bd0b09b16a8ada02f870310d85d3a717a738332c2eff83e688a3b32dd588042b715b28a27d03a83a446f17a9cb8e2275a4948a48b4cb4aaaa8ec8b79c5f8333782b966036190b567bfbfcb6990e4b59a3a068a592ec11328bb5b6c8786f9040c09af4231339d84e738efc4d05c417f0ee8490514b6b273c0d770d71a0f38b0ac43b907c453710d5d25baae0b726d0cd966185590842a8d5fdd7928d259157247bc3c0480ad00923172580b0c51597637da177c3bfda14659f43ead26ad6beecf4365b98e7c3151eb57e8093b1a3fa7c2fcfda5cc0408fd8c422a0659f5734977ea73eddee8a872c4a8724ede1b08f9991b6183412fd25f4b97804803fd6eca628b963d400c784d58b1b7da39041b1d1abd1e706c4b01d24b41914c663e94c259bb77d195702201c43172381f665ee373a78f083b4b361a2a41bc6822b9ddb33edb658eb0afe3c66d6605b19b18ccd758611fc433a6f86fe4efb57e3000ff58e1bdacb00f07c105115670201ac03f501d834564d9692947fb2b5ca1955f91ba89c704b57eee036523b422d6334f5de08c062125d466ab4c49a264af54f9c96101a91e06e2dd0c6709a557685ac828fa8692840e82aaa77beea05a05871d52a765a5cdb692133d23bb58c75ca2365e5c96915813f92c2336687cc098c8f0c983a4d29ca6d0dc21f60b06f83c2cbeb6f46c8d9b77f8b34bdbcec821b28e1b197dc7fdfb6188ea9e48fe15e0d201a86d1d4f806d014cc411b7edd8727f9d15f50f8d61da5034ada0255598b97d26217b6b9d627b7bd38efe30dfdc64933691f9a820b524e35a1cdcf803bf5d0a422a3113a6a0cff4216c804e0f7156fb9e15a89d147157aad0a7eb317ba6e6d830d487e37a0ba49b726ffb2ff9b266841db1d0f6967efcfca7cc21630511c656b287b9e9aae5d82ebe50520480b9ff76cacd2f5bb458f876f5066dfe2594e22991be7595e55038199368a8842bf8471ac04b4afcf204cfc13f63e92b8b27dd5ecaa7f5d85ff0a1f3e2dee255b4d9c9ea2c1d81e72a2253c44f294b6d1f7e4685f08f668206d81ee72f7e88d7cffaf94dce009beb72c0e7ae1e1bbc9ca60b659fc479c1058cf98ac1ec45071a42ae86eefe94e58dc6bc5f9f222c0c506242ff8b3d988a8d9349c5f411fa9bb14217c211c1d35bb41dca23518f2a996074f356420c1e2e5309af4d374beceebec53c359a7676e5e43cac72fdf070fceaee1cccfdb827d17223a20d69a3b51e04bfc7cd057b898212cd2c0bc95f8d0238e210b2104b930e26595785af6d6000988bcce3a903a87607e8beb2c957f7cd0d803a97d69a5e866706742c16037e88c1c02b515e1d0d16ee88a3e519a76893ae3945139308a9a9b6927808d54143e8f46f48f76bfa12871f5b754ca11ced715dab65cb005d98eaef876af4925ee4eac8561dcfa8da615d77363f06799f1eff433bdbac426c7e8c5e16bcda49e4edd4b514f7fbf7d4955bf016d3ed5614a593f4108ec6310eb98168c711deb5803e6cede2edc055ce274e620a10b859872ea0257de0c1e316d43618d3f0df3543461be472611b588dc6f4d84b5de45f4d1e62168a3ca7483960c9db030119bf601546d42084089b8ae1015caaa916aef60800467edb1b593cb75848cf234c9178b300841d27c0b119e5f17ad5776894c63ed844ca759c6f5bf9eadbb08178b3d5c42e4b8f6614573cf7dba808064b78943463070bf8584a9259d5f979dae9b0227ac557d9f68a3ffcf8b48967d7ab479793c5aebcc9852773fbf1a66c7395d5fd4bc56d0591c19c185a4e1912ee6d46aa9100d6b4749864deed404decdea68ca9ecb6e8bfd37f64568e7722fed8a6267493b90b3c3518d5f43a0db14430e45ff41a1a5244f8a9f4f7a354488d420b8b01009dff0860c2283b805eda7a2453b7410936cfe34e483537fb9ad5016474b68d4b71c5b7bc2e031142ac9fb684c486e3c585c022fe2d1da533fbce0342611e8d57d8a2b85fd6a374955b97cb6cff29f581de9c4eff14ad1dbc9c3cd0f5e381739ddd2789c26bc2c9666a7126442c633960013b0b75fe1a52d4b6388d73548df7629c719fb85e1e0f07045d8e67964bd55ccb36c64c42098687ec38800eae8aea2566c350022a68666fce433c00da8e28509298749948abb38b79f371eaf5343271fa7db85af7b96a741604a8fbfc8b421d17a61a3dcc0572cf72317d71f77e62bac1f9d1f7368324571aa813638d20a86fb83481429e4edee311f16e006adc44942a93e8d73d7d752c2f4ff0766f71a1545a4365580d56529a81ae726a59d92632669315c126b09278d6c139b266a8d403ea92be30d5ed21ef9d0291edc064e1f57e2e08e90d493433da497f4c6e50356f89b8e1d2b2e972eba8b3e533e8958602c826c7edf850cbd1310e725d6badd08349d79fda9d94b4826d2e087009e16a8b9f7da6448cfc143beacc8d9affa596feff56c080d1040a36dd6c56016307d8c4eeb0ebc973265fc9530fa6aead4068a6b271488d6c081f114f48ee307f98c471f3183c2d0c7facea0a65d79a853cd7cab331ff302a51e0dee22d97da136053b5156e2ff83e7743c3ccc87af5b6a872be1d8d9eb5a2d7124b2276ec8714e2ec00edf0481fdcd1392b10eb45b461eac0cf1490a05102f9bc113c0ac2021bc0d7646370ef74bd834935786c5eff8699ae1f96be9a3cc3840b43b455396e076637c3b80e922299b5cdd8bc3ae4b3f7a129714c1aa29e5ba9492ad50b698721ebc145be9ee10e6d100c0a9caed0c815246e6f143452e55cd1105eb341fd28c487637ce52c31671ab892369b1f2be26eccd142d8c357f3574f4ae94b09f00dc598c5598d61ce9f2922b685cc16161690fda5bfeb1dfce0ac2ece38dc8416a47d068e044b1171a4764f2b23348a4515b6d842ddf193ed15f558045cd97c0415c7731733c6d27fdc404bdaf78791dd76c69a302b853a67df5bdec7427b62c71dff94cad1aaf2c121a19aeedb2c62c076bdc5de3212aa51729169368d0cf67d1bc9d8ecb58f44d5daf27047e53771daa78321cac7a93b56e822820724570e5a9d92004d54d90200063e15a651026e08ec8bd2ba25a665128cb56b771b530889d22cbe31b9e7806bec97a57f0b8dfa59d631f785a97692698777de8692a419b0f97cb7de9349be83ee4bb1369f3d18143281f86819ccc0d44aaebc54163d8184cb7ca09dc8a4b35de7523a606c369367bd150d7890c2ba8597d0112bf9c691da5901135f089864b8ef10a69a71ad8172d18af62a99cd9bdaa89d588a9a86172eecdab1c7b0e5ee0ba95d67d543459472bade74c95a270788ae35a31becaa507990b4052078620857abd106092a98f898698887e9bf9cc62f4db3be94f84eadfa3b94667411746f2d74efa3f49e683ca0539c98972c90321bdb497e986abee104205b2d04cdb0f6618cb68ba3331ffd53ca786f8aa993983c1e11aee7bd36ad95f0c5d0bcee9d7d0fb319c9dceb133e75fc2e81d9ffd005cae9cbc5c9ac57dd87731fa98434d4341d6d715e5674808bf0e0dd453a9fa150c82de004ccf3ad5404a53b5272f690a0460479e8477989db80d3e9e426f013da1dd83a9e3947ce04f379cec0ea62e2ccd11620deac36c2eef9512e87f2d3aa98b7890ebb224ccafea328446a5a704be171a805e8f64db6dd0d2dc096f32dafb04f4946045b78a01b71293ad46613bccabf44b9166a550729f6c1adc5a4a1b0a5e7fb905cbeb847726207750ea5973c1a6175900b4d6c053c121230a360dfde6ad0b91a490f9bfcac9f8060d8d7aac0942d0cc53a238341dffe4d41f0364ead6acd6b1606d92f9c716f88301ffa42e5ad3bffed55f0ed3ed17a5c75fc3d78db9ddbab59bc602241dfa6d6e6aa05287593db4ec3b9b9d4624db5553b87ca61c963d07a43f8c09e4113965bbc41021209fddbe6f8757037b272833a0c657a65aa6294bb65c5ad3388c4e5276f6364418c26843c9f9ee4a34b8d39f588bdd11f12c273dbb13684e49e2972db40a6096f29371d757085fe97b01645fc717830227a0fa11cdbf05d9079d9f5f5f2e8acd9d7079e3fe51572c62c3ab98ec477597a8ada08df7157c0561950e7d7ef830f93e8d81237e4cf5f3afa0372cfc7ae4fbcbcb675d1e72fe710aba46e0e791f879e42344cd6f7c07616934a27700757ffc10a046b5260a695beabf78f82efa1d1afdfbc64f8e75ee54b5c8956fc2fc8cbb374c2f459b946a7f001c917c769b2e331552387f727ebe1d6734811caca2f4b2534da26a34a04fbdf0269bd3e532e75e08e27b6742e1c02b533ede1ed8a043f720382e4869d9e563b00ba6f461a33ca6245796f14c1e826a0f1d4939508e54f55a5a07acb3b4ac11c161381e2811e8d5519579a7a8d9a04f729f11baa18c4490df35538bf518add1f260f7c5e4b6f5350eb7c2542be28045a9dd2e726eeee57832d5c4b82f24b0d5c6d9aeceb2a81cb4cbdc092b9630d1c7c89ea4eec1701e0e5329ac2013032219f328e5b8f03aa7464263df9470d7a37aedaa6f073fb54b4168435315292942ba204cec7ae6bcacf3d83eba879451018fb367b8606b59daf64d85e76397a3b2bdf5fd0a334072cc6aced25e60d99f26aa6b803d5f97f4a40f3e10cfd9bf97206d8f83aac687bfe243e89e0f14fb0a3e5704ceafaaeedf09ff3585f5cd41d708e46d295237307935cacbc783061ff49589aaa5894c047323effe0b7cb49da5d16052252e68f6dc1c06405d4a24797a8bb5940ea158941802e996accb9b7137904b33898ecde6e7f8ed96894eef13de47a33d41f697b95e4d822d16f69f638fbf66d46fd7f39369205d7015f7cf1e2fa051f7e2dff3a152975acd8217c31179782762f7842116cc12df38939531e96938133e330fca56cd362ab8981b002a3b75d5631c36c4183aeadb40e5adec23563f920f32d57541fd799b282b0c5088ed0f5df095f9b3a253427f65cab3772e3412448c1338b2182b4db418da200d5d80bcaaacdf92323c99d082f537639185738d1f721968826313cdff11f3d5ea00caedd3e553aa230ef9fe79bd78a6655fa8fdd7ceff2bd386660d072742b0a1496eb9a556a504ea4dce297ae15a5ac2c049a620431eda7572dff7202b92862e8480e97c02bc0414b0be1887302ee2969bf175edad88b7b6da95a198c8055d2c56c6b29008d49f4faa7852ec62104c7a45de3f0d0423994c7e10f324cb5761d2084f580f885ffbec1a04304f1ec1facece071103df4820dda8d73cc53789d0f258955cd3bf64be8d8c5564dfbf4c62fd8ca21f7821c8c0fcc9b326ac5a956274460ca416472ca065dcd9b42b7e54c72ec3b633c0b14a7458f17ceea3dfdae60584efe7547383a83dee17ef13fc098b650ea708d32d0dcad7a72f8ea2ea6a40ec4dc22fc3a786dd40c290d6832223349d43ba7a5d143d41a0dc801cd95bb2e394feebcd47e5729c576e186180955df511c04889115d768dc639dca4a51fab97e3ff29a4828250aa28c919ac409c091ffeb07c8740039bcefe659bca08dee3838956bb1f2b9b2ab632bf9c7963edd89cab2eafbf374f8c61e06c3d775ca6ec336d519cef9cd67540c8b8b8d9bfbe4522c352e873fa3f0d6bae89a74513a66058069dcced619cdc53feef43b890d55d053da137527f9c8a6200c546a941cda8933b5141a9770e93812b37ca8856cd13a9207c52a070c00a0d7586ba9355e28428848ce03192090e8703b982a1009904ac75fb1c5fa470e8c7e2dc7852f1fa0770787310f3f3a283ac149c2605e7994969b6cfaedab6c36424368d00b2ab172af7818bf47b582462412f808ab9b373756cc72ac0fe4945cf6d2406ff99efde14ee52bb13ba20e88bf287b4206ca3450f73c85ebcd9d28977a007fae347f227a7ca138757bc5eecdd340cc4c28fd9d7a89104744fe52a8649e60c1cad863c541059918cd62c330584b62253466bc3e47d8822bdc99098ca7c117745c504c6475ccea700de76ae198298e633cef3d591fe4180bf467201d2cd8dfa5a3102bc7327c5fb1cd735556b899df30c610201e334decd829745c3b6e92a38b3118b52e8642d7635392add8e827292af10650e03e1fb348e85e6970c1c668e59a7af0ef47dd77cfb7e0d41f89f87ad18a7e23a21b2f8877e1731e054dcdb87361ef87282d2ca825311134d86cb4fa2131d4cfddcb26e9b5f91f61f049c89066cb9dc7ab2ae55cd92055f317b8c0464da2353c2c281ed83a1f28e8c70f0b1e5af61dbd05adb93aab663c5654aa842b7707d9389a2c364008f9b173a4d95e76582dd281c5409fb6b80e6f40b4720178c2592e14ce7dc1c54f7ff69fac079989ff3bb2dc8c5900b90e74a2cc64b64f281cc9a3a8cd9130d7ac4d5ea7a1a48c2af62d7399d3cc1504e28dedab6c686e4ea6ddce7fbf010667ce96e0f9adc0d6fbec7fd832837af32043f0666c213a3ddf711113c1348554b148893248d8291a08f55848c5870bbb7c2f35f9a0d2a08a7f80791a32536c11606d3dff92eeb1a9ffd500651f6d024bba6ffcbeb8d233bae624b5e3792b1bceed08bcfa65f2b96997aff20e41c08885ab79cffa0605869c733aee7085d7fc8285e30a2856434fc29772356abfe6cf5962b5332e7a6f21c6b559296b8f710963deecb709367e5b9074a1114442849bde85aeb1f4990fd6813a11df3cd171dc2cf145f5e00716348b27d08dd4b9221578c1da117f9389a44cf4d18cc3efc42a11f2c67082d0bd046e126d1d1e600c9da10d0ba56010918b61016cb471bcfebefc19a3669b684aeaf0ee597ea44c9647ddce28bad9a95955cc54a0be1106bd908a0abb270843f6dd64d6947d7841a9dc2696986cb082bc49cc4a46dd40962e57a4d050ba11a1e1de43f5c99c1dc7ec552a672f10c125c88ced1650d56784a368bb45b60580182faebbcb17791f6739865e2029bad507de79e4aef51ec4cc8b8eb86e5c648042302f1bb08c33ca7581efc98410b24bd56ec02570c1890ddadcc7617b07af5849cacd69d30a567609b388ff6ca950aeba5761a75abf58cf8874fd34230dec539f374ecb62d99e087df0572675bf81f01c4ec2d1b54e1225aa89e64b4647656da7144187267f6e6208558fe741279859733ddd68693f427540e916d2e0b460722b58e01dc8e67bd18015413f14adf130823201c2765d726f654fb9b1d7edfad401ba5902e7252db510068b6d12f46fcc8cb3eef28420dd3b281ac5e59d4f245ced2448fba6778fca326157a684fae9a8682801bd249f46704e2ae4500673b4eec0d0576852c64c0cd0c68c32cb7e61fe3a9d22d91303042621902a49fea21582f9ed09dee4202cc9b613902000a84b711390c17be1f169795371e606b9b8302ae513476ae2c28eba09dba9cc7fabd1afbb831e02a9c49614923b0576d32b9e73ef09bd6fd7ac3395f1f2b9e7c42081db0c232da1de0ebdedd8a8ba8d26b1dd8118fa110f67e700e28b8f348580a0796c2ba9a554e912bdde6539366b99528cf21d0c57c292e8942a2423abe663d3acba70689f9a10bd462f4552157e8b083c4b90baf5b3438178c26681ba1b17b5aa348fdec647fb59c10637dc930cb22f9aa41781af01ca1aac5a6c4de9b894648b3fb8a3ab307874917fa48ecead8a32425cc412b8a1d5e7cdfe592875b77bf9f54dd890ae552120a4c8d1f44b57938da9332e6cf53b8707cc0891964029321bc7334e1b487c5a68cf805889ec8cbd9b625426671c83729c259637383ec73ecde2cbcf91e8eca5ff3a14ee52ef5615c6811f0788a518a82cd50881268f4ad0f7ba0abf7f644b31f46b961af663f5949621605f05b100981963d30827ff160433bfbdbfce3852a62aa85311cbe341359533118893d9a3d2a19cc0e7e203ee1c32ea1c4bf178345be4606f41414266c52aeb67e966fbf77c1f7456ef4a0ae3bd8f862d9f40233bab5e7eae9ad1925c08deec2991bc4a3ce2ac0d2145429ac266af8e096f45853ce5614629cf4c551a00114dca04c10ef9522fd27de5802fcb7e9e3a99293233814dddcf690f0f86d0d034ba629a18a3de3cabfa3b96e94b427249a058bfe00d0f669a1486b5ed187eee16f994c9903d81e83d46dad6c898e5a9d801e3e1bbd80e0a4798bac8b662808dd0542f8b170f4b0dd59acd49279b792aa8aead1cba32afc91d4b08de3519aad0824d9e6e3485e5832d642f94f484cdc88b36e8c7ad9b243b49b55f07f8494c014f076b5b02e1142443e27ae072537d29db756181a28bf13c3fb4f661aa5737ffec8bbbff3fe87990f0b6611c2339866fd7f1d140d99ab2500a398b9684ae60ca9d1fa584172d23a55c819278589d3629a834f71c74074a5b3a9fa807ceb0b164c203d669e2e01806e119348c5961b2976a133a2d52cd7842e0414086aff6e9181e3cbc5a0c878387eb9f76f5f09b94600a110b21fb37790b187365b66c9da0d5d39234546484813b8943b8266045496965e93ecd00da1512ce14d657fe5416e639b5cfea1c81df1151dfe8dfd21d4d0fa4a7f708a2baba2adf4eaaf98698177916c50d2ad2f87a74e71da8cce043b6c4624a83e9c33652bc90da050d896c5273d4ac697226431bb5adfa7cf0afe65914ebb921a7417b602c9d06c18fb1e3025590e56949112e25e4a2806926dd403b70765b0e3ddaab53747621c155b56fbb032a4fbd241b0ce7803e24cd3084a54e554ab4c289f4a49a19a922981122527d735a3b0ab924036c3390acad92795c8d7ac2c31a10b1d3078e206a34671d3c123dcf55fec32dd5d990dd934b7ed735c1e6de58be6fc121e9dc3ed69163ad74f3c8d13ba3c75414ccae2924a102a1abd74ff3f6590ac6d6d4c061c83d78072be02312ad54fc45a696640ff501958e241ecb3058a822a1a355dda9251d1f5a01e6c0410d198c341f86fb194613e2e0d5d011c2accdd17477d8780e5a4ece61e82141019cc944f1039f155411c68bc15fb64fe6cd5dab1bd3d2f268c8ce11c8e7b4464a596bac3a8ac47bba5eb1a1b77b70ad7203f02d05f00022837aee418b9588d81ab18b1eaf123db5f7cc4ee68b45018ef85932dc8554827195982c4b3dbc45756d56a4f085680b778fa300a35e439d8b54717c38304998112fba9d83d681656780cd3734577af353049d817092ebd795ca86c39f710681ec640f3328ed5505d989f61634ee6c6915a81a972475519c18434073c76b5d83f8457929fc1721b43bfbe0a475049dae37142ef64dbc63914b1a1f8ae19bde82fa64602d2e37040edea4a6ef54e94b194666a6add8e47c571eb6b9d8675362dd84e0ac3f5ec72354cdc19ab461e0b056a319aad7008ac57030ea8c5080f3420b026e9ffffffffffffffff5f1c68bea1b5c812969294d91568b58d7d4a52da49a69492617b8fdfc03d00c0d96eb6db5a7f0b02eb0e810eec0ec1308b31c376f7f5fc66a98c0023d5ed94cb7cfa943d78a4811c483327467ee17be691e2b53333b24a8f33840c0101857286902189477c81fae49fa5cf131ff70f3c0885d263881012502843840c19e945b59ec5f618d773e92c9517ec30018f33980cf72165788042211244c81823bc285d3abd9371938db27b10f90193b163c7104763053b76a4e126d831c455c0230823bb385ebe0beb1ae7ff4a427ca06144174b9b9b194c733e7f2417b970c2e3cfcafc56c2082ecebabaa7def4274da1915be02db96717ed43b65e5bec693a63df25a5c545ab6a517ad65d8be9675b1a8da1059e51c38b988e192f348bd43766de4fb9ce9e604416bc9ca59664656846b32b148a09466291cee3314e46a8d2f5c1421bf9aa2736e65caf552894347c073ed80c1f67301935187945e61bb4435433765008465ce1cd8ab0974fcb82077985421963a41549cb2df5721811237434ce60c5fdd7526bf024545b99bc42842b41d0d09155eca6e5ce2561a5a3ffaad0e23bc79bb06f598c144652f1678b0cbaa4bbb8a26fc2082a36eda67a1b646ad3a9258c9ca2d92c9786119ac15f4c8f1a4918318531beb057fb6b1f13e26d83915294593c3466590b91fd0623a4304b3a7f4eb1d02367aa50283ff8f13e0ab424479a0a5566a24107824030228a93cb59cabed52a148ab7a00214e0a1819150a4fbae3f75340ddd4f854231c10828f4ccf7ef21943c398f7cc2b4f7e09d7c455cd40a8542a10819f1c44147a8bb203b8b1945150a65a41388c6e0921665337eb8543c30c209eb424b1ee27adf4357a1503030b289fe3f8dea28422d2c2244c8901d239af0469bbba0d57ebe5c2a148a8f1e0ea4d983b840082399e8a3a670314f555a911f66fce841c68e0fec28830785d282114ce8df6da3d447a776494c18b9c4f95aceabd3b27dea2563c412f6c6d1ed6daf0ceaaa5028690c3143c81011a431a40c0a8f1a5218a944fd41f47c0cd51fd754e9e1418400f90085e2418400413c4c3042897ce37c4ea174c86ad0245232ce5c0b1fa4e8d48af8087e441277b4d37ccf9b31ca5a414538073e821c8c44026f3b13de2346fcf8150ac58c40e29821fa3c2ff4ed45d030a3081a642c238fd8cc7d44dd93dea4318e40bfcb7a2d5c0791c1462c78683725ecb6051d23963ee468dfa04ea9d08100610aa5c62f4616c17f7f6cffb01f7b3b150a654411c711b9a305711b658466fca810c1400f821084314612b1c687d82a97bdea74a5470f1f293185d2a3c80f1e52860388d4b8c508225c2df73827ebd5b7fa60e410fd95ec30aac2c4ee06326288459d16fd7ccdcd5f15e2ccd965c3c629d72ca7072384a84198148c08a202a18111407460e40fe9ec39d7d2b80d57f2033a09255d34adf0a4a5fb50ba94e7d5253fd58777d488c2081f1021eb433c77ebc96f0fe7ac61a01793b6185b84abe8688542e93183113df469dd9b838cda5d9a1746f2b01cf7d4cedcc3c33ee7b2862661d23ee60e29a5744cfa85ef1366b20362a705cfd3a753b7a70e9ebcac11e192f86f0d053ce890890d3244b5641b2b3407ce5cb5a3da5eeda987302207f33a7fd8a8758ee73c1889c3dda1524c984c4f7982439ecfdeb4de56ac89236f38963ae206b4a5b7582e5a06193e69186903eaa2b5cea569b82486c2081b8ecbf194b29b5af2ad81371fe9318a880bfd8ea8c12eb5d250973a82863ef54c5cac31cdb1e660e40cc97b693ecf4b64b8dc0ca6d0be14a54c745bb00c6797673ee7f0cc82db1f182143161b3addfec5a06af64824d8c1e38508a9518591319c632a33d88ab890d388181654bae896450b197367240ca7b58a0fdb7953554606236048b8f5c6bb690c196f91912fa456f2ee740cb2b3bf5e487feec3e3e273b47fa40ba7d6de8cb7f80c7d557161bb12ef34aafd18d9c2625bc7cfe6149b945f4818d102b22a9430bdbeb165363e8c1246b250a96b1694bc35932bab092358b85ab8b77fe1b39bcb3285912b9cb39825265b4f57c6adc08bfdb28b293dfad45c05d4cbe9a27d7f5d98b6861146a870f21417ebd34d67971a9942a35d7ced93a1aefa6961440ad708d597a63ac3d38e429925b92e967c59cc829bc60814ba96be842c154af5cc3b788461e409dbb89cac947b0b1fdd11279859f464e6e622ea4577f02042c46bb061a40928996d539f96fb0bb211262c8ff02c98e84c8f31686409db89ea2c970b65ddf1a8c18812bed1d22c9efc9632ee434692f0988e375be2d473ee150a85481a6e020a650409ffc8af48ef8fd1727e04eb836d0e71dbb9b469c408ff85a8d372e6506f8b71d069263f5a3a9dcd12e3b89b356594503ab3651895dcfa9977eba73b8561b8d4fc1cccc4c43ec1683e8fc6d829bb5b1118cc09a92fe87423a75fdcf2bba433c688baf6788c61c317cb2ebc69e75c523bfe5e147ade2a4495bd34332f0cebd16d477b5edaba8b4ccc6fd64c7ecb95ea02bd58dfdb2ef9522673e16a6b7c92c163472685600336707172fdd4fc1365ea82b730cfaf6539998ebe1bb3454a9856c7ca8c7da86a61d6e8e2c7669e5a0bfa800d5a3cd7669a47a587cb314282cce2f0f2ef27d9594509952cf6fc23de8277ced08985ddb135897bd79c9cb0f8cfb458ba714564f68a752b46898e49ee4d8b2bee70d125cfe55de2f25620eae32ffa65cbbaba614542282d48794969156a693b25f7b2a4b496aa305987813f86b8ffd8f06214bf52e1983c31974543b68aaa50f16b5dc6ce2e87fefc140bbbe562f2bed1e1ae290ed5cba0d4630cab5229b8da5342f6778f69460abf52c45e334beeba8ce2b017eb265ce7365d44817d363fd9db1c2a463403c5a00c1ba1305f7e67686fd182e78002d9f1d5cf2aced30519f389ad4356d5cbf99a614f9c3f6656c83971d9ca4ea45c5eadd3a2d57294559ce064d2275b6e5f509eb38973ea30a08dfa701df26ad6421511d8d0c429de5a1c35ed17eecfc4a6b48de9f4e4925f27c406268c2ffb6b770ea79f3b9758aace4a352dc9659856021b96286f57e4bcf89b9eee4a6cdf49d665e9d0ec9512cb8b570ba36e5a4ee2499895a6a7f4059dc5b524f1085532a952d1e2e791a8c5334c9ff4cfe94648989559e684dd8fcbd947a07d9e99e47ed62f7404ee572e6a860c1e3ddf08dd93897031fad6fdc6085f3e87f8d1a26a3eb7083f84263b314a85d09c2210d92fddda6ff0f4b1441cacc340a666fcede48e97ed061169317392ffd935356dcc218ea19a93cb63faf36386d85387013b4566d9d17bdb398642b11ad828c42d684d326cd2a93b5f08d1e88b26b318fce5b9cddcc620d02ee9412693d1e326883bb470425fc8d7b4530562b5fd19edeb21ed444058a7fc5d1c2d9ee824fe83419b68cc25fe75d35f041b7e30e6fa381d3d3ba84df601559f84f6b78de95aaa42a1244f445660830faed9c610a644c674ff1e54376f153ff92cceab07b3098d1e42c6af0a2d7940810d3ce4a9c380fb1d3e5cd05da50536ee807e8baaf94fe7977d21a2041b7658f8b42245e7474b2daa25d8a8c39dfcb5253142cb7ad1414f1d06b6965beccb73d12b7b5480021eb03107343657a6902f7a2d72e85554e79873f898b17f1b71d84f467e5435e7933138fc3622735ce6ce7b558542e131c4d39014c4c0c61b167fe34bd5eb2ddb960d379061a30d77ef288fd32f7574930d68ad8dfdb598eebd3d828d352c77f2739df3a44aeb6ab0324b61e068a2e5e4b9dad33ba622031b69d8af5b12575a1ff74468d8c50531f5fb9b133a7668ecc0c619ced561007ff9cf3a4913fdba2b144a0f1e67081992289421455860c30c56ddb7a4d36b685858030a36cae08bbe17a74fe7585b150aa50708cab04106e3a78e41dbec4c59e503790f7c74c0c61836a135e850994bc9b089a16c558f37af531fd74618d02faa849647c35d58796c0c1e1fb00106e7934853791331b7bf80388fe9c53a539bba786141a6974d9ada0eea831d28838d2eb42e65166467164db65b830d2e9c2f5cd0a0c598a594090b36b6b00935a5f2cd2e377e5a70e335abdcbb9bf69831d8c8c2a393a7b10c4fb35b9a0e6c60219d53c72a4f617f99b17185ecdfc3c5d76eff0c82c18615fcbf0e272e69e135fa62b05185b48b41b998c6921923830d2ab8ba9f2531753be9a90a8542840436a6607ab7f9ecdab55963869cc186140a3d3a0713a3ab84ce4136a2a0267d66a77f73da4e031122c40536a070322de9e84bf9234468e3098b7a61336ad0d2c72c73c186131a0d2f86cfe28b8d2654c2947b7a0c16fa5be060830987b9b9b82e8ececb611b4bf893fe90594eba417b5aa1508238100aa58810204444604309a766d21526738c9d85cdb09184938bab235747262dbbc620e1cfb2a841cb7ed559ce0c19368ef0c63f5dba363aa95bc45bc0041b46a8936951377b94b138152371d599a3e5e5ac7d29d42046592f28112be257f74eec950e0819410d232b2dea78d0ee7c8f2fa18630fa58e11d4a2d4f6733186ccb17dada3746dd91083580c16b85ace897e4064fa5a008357e91b835357d31194d86d318522448087cb18ddeecd29e4a7e877a71b4f7d3a7636e318b660835788178bcce7a974227f184506317cb3966fe7398fc0fd78e140ca9a10bdcbe4a8b496c16beb44da8910bfd6baceace67930b5728141f3908f2c305357061ce2e7796e489e8dcab42a190a0c62d728fad1f17e3f6ea57060f20356c717de67039ee93a98d5628940f94086ad4e277c1d447e529ff60522855b438cd3b5563bcfc552673841ab3584c9e68d93b7d9fdd0fecf0c08e0e5020063564e1b91c22ab477907158a85e3b265acbfdeea7581459ee37d37df09efa47c05e25d4a2b5bf7ad4d6b1ca1862b4c635a8e59dfd9d1592b0c2e6243b6ef8566fc851aacf0f25eaed9983fa6bb5661e9e85bc8ca3cbd1d0c355461fadd58a274cb92bed9851aa93026cfeda07b9309cdf1420d54f09b523bfc6d99fcdc29daf8d991994db8badc166a9862cd1feb4bbf9845fd10156a94e20db13937dd6d672d93508314be24c57ff384a96b96851aa3c845c7af8eb9ca1caa1a55a8210a2e4ddcd44df7a4684fa8118ac5dd1b175fcae025ee1ff81843dc07424e70354051e6f47b273d3c8b56e2d1353ec10b234486d0f7925e318f8d91831a9e40746a7629debd33666b20a14627fad6d3a2be295bd343410d4e70b741e74f2ba317be0a6a6ce253def226cfe14eba6a35a48626381367992a6b8398d803130d1eef2ce0c1831a99707bb3647ff6b9ad4555983079f2f5bcf9a4cac96a44a1c62552a395d1f4665dd1d412bc09f52d6f351d345b8932aea4569ae879480993fa92c9356bdedc7b125a65ccf183f6b817fb190158c7e635393a8b961ff210332f476d31d56621e9c39f7d3a45c9cb1f65e7c31a2c3556a8ab133522d9433a88396b8dd1748ef693e8413bb57d779e64165324c94325345c7ffa9a9f198dc183040fc575182dd62d6d774a7287940ee6268429cf9aa5212476b8b4fca525ddef9f47fa03923a24bb64abc8d16ecac5cf20a143df9f6e327ccd29fb0c9239f8d52ed6cf6536b9190d12399c9599848e6949c6bf5448e250caba20c654c72b977d400287b4dcb957ab93cc5792bca113d5e6c17ccdf48d246e6845888627dde28d46d286e63d99aefeea32b77b88a0033c7440c2863b4dc54bfd20246b4034455447b7070f29f28310ecd80104087f60070f0aa5061648d4607437e5e1f35f625685421922e40c1f67b019202049c39ba2fe5e9b16ba63854219e2690ca15038408286a3660da7bfb79649ad909cc11c2f35a597f4df116a81c40c070f562fc59f742b4f1948ca80aea7fd1cd3a77849130309190a2d9b8531939f2f9e46911f6e2019836f42078d5fc26ffd42038918103aed994adb17e76538908461fbb84eee1f5fd6dbed4002866c45aff35e2ecfea19245f58d01d5f30e5f1dc4aea8547e9bcea24c4e8cec703922ee423bd4e457d668c5311122e64979dc399de7f59ceb790ba6cf22c8667f0fed120d1c2da529d16b5e50eeee23f20c942a926e22fe3e6fba749b080a9cf295e4793b2d115166be3984e227499f6adb0698c31ec3e57a891a982fddd995532fa576f8c404285aafc4b279784d43add14dcd9d3f8aebd1f1b2391027262da820e1d5fe6a202491454971b99b398c5d892788881040a49f18c9d6fae51059227a0e36d6b6de824564a244e28db3be64f6e4d38fbf6a60f111f944b226182f1a3a2714b6ec830e1816409762cd372f28d3b2e79f240a284648e778ddd596a41e8788124099eac19b971bf9e3c0709e6d4aa516d4e9a8ee117488e90a6ddd42cfda93239320389114e6be5d6a5e3e2895f8c74d078bb2342b67c3131da96639c6eba8d15f261dc6daa43ef95ba982a61a0643693164f2683fe8381de1b595a90933b6d0103d91bf3e142e8c9317f81ff785053b5119d7d0e387c618eca97de4589cb31ee85e19b36c8d96a4fedd2061cbc4849331b6d423e5bd8c8806317291dea565c0c32a8fb74719ddd69376bb92f83ca802317a60c27b6e64d358587061ab8487c67870ca6f3bb87068e5b209416a565598cb1451b3ade82b4eb6cf3c901472dca5c5aaebab10a3dcd0c3868d16831b36cdcabd511cf806316a6ee90975ecc51e3595934a7a5eb8c418cba4de701472c5c1f2d6896f4c57634b901072c0e42a97678d0b9233faf405a796bd26f23c4ad37e0704552f49bcbbb20b55546038e561cb3b8f97a364e578bda01072b9693523b429aecb5fdef806315deb79c4c0b2fcd9be655619bc77062ddd6fed2a948c6533fba41a7129a46c5a6e436ac9692f52ce7140999f6b297e7e85f6f0a4c9a069329bb617757709422710def9f654285697fe02045e673a5a7848a08384671095d2edf196e7fb522e0104532f9cba36549c7387228525626ad3da8313941e1a67f8cf11b169b858780e3138d5796f5e83d1d19c7e189f643a70cb9c1eaf2d3896450a65bf3888b734269e0e004271732d5e8467d190901c72696a5d0e28d7097e44777080e4d38ffe971c3a538177b1c9938efabe9a9cbbaea15c18109de6eb3f3e698cd445a2488f7e012c99be89c675a73af0787257c9bb9ccbaf153c69c4af8eae1b222a3c7ce5062f5d07b233eeae9c149243273f68ff167448424f196f8cc9d44ef42d63822a166414fe8dc63053820917bb6ea6fcb396ece8fc0cb4a78d41c592777471cfedab6d4ec447bb4116db5acd1d28396c24d46f866f2eeab9be9fc2591a00749c0b1885a12211e43cb92788b1d87224e61150646802311e82ed9f0a7e5b2b745c47a1983a72ff34df7f328e22d48c30c336a5801c72150da99f7cb3499a6d7105fa7f2f38edb69db2dc49f840729ab73e5e91102cf3eb7ac9a97640c12048e412c85c7cffc51632b5f18e0108415a75d3c3ff7cdfc076231ccd636dc6efb9a3b00c167f62c28b171398b08c71fd2325f3ba5aad974d20f8e9f38f522ddfb5d10471f98bfca2f6dc2c45b9e0fb5a0dd1ff3c4a39fbd87cdb54f9c12b31e0c9f636bce7d3728a53c2c76301d23f6aaae85f150abbcc88e9071ebe33bdce9df354b76b697b4d8e1b1326be13cb3e793a903324b2fe698fd99438be8f0c88fdc1f17f635ad73f8e435ed2a4bb4768c1c6c51fec558fbf36db1389c64d4d196d4a6f076b9889381030e76a9aa35a5c456eccb1b963a283397a4a76c41e4867d74eecc561aee21b781cffe3da21e5eb80ad9a0efbf58f31bafe12c7772316776316b8bd450a617fc7d6ffcc2e571a461b9462bdccbcf5ed8a001e922a6264ea74b425d010ae038c3bf717f638bbf39761a8719ce21d7756aaceb05f180a30cbd28dd2c6ce94ce9211d709001a91ffa33bc20c466a931a43dbbd4262aab67c53ee010c3ad1fbfb37895afa7c4431138c2b0d8bb33325f50e23c060c68ced7314773a945d9a380e30be8aecd71eb3c777ada0b5eaad966fb0f1f5fbe0bc7e7768c372f7a8f56080e2e2c5ec5877a499e14b5d9422f09a163f6fc0ee19d1610275a62c7b3fcd759b290d222ec64e5bacb921a0b88f1162174d094f692aec0e79c6ab57f0c5a6eb142b2055f719915b1707154612fbd7bf2a30b9a4b860ab6f8d6394a08a1c5bca66069d097d53bc688eca460078552430a38a48056adbcf586d7f5320ae8aa9297c4b4fe851d0a693b99e64f888dbf88e3097f922ea7fad272aacd359080c309c81fd51644a7cbcf198e2624f45589119d5a7231d4821d65f070030e2634f2e13fd25ffc24a43896806b8eb927846b66ccf0f0010e256cdd21f4c5cec7c68e018e24586263c85caefb41b421e0408226ce65d33f2e388e70de13ffabf1d65d5a7118a1eb2bd3c2aeb8a0457ba318b98712e2aa3a73d0d2c438bfbc5f7a84cee2199dc28d61f426576f57336939ec4280b4c08c1bc2e84bbbc5f0117efaf41bc140e6cdedff2cba69d08161f664a7a5167f648729ebc62f9ed9b05a7b69e3589d831bbe40735611b2a33eda97150ae5462f98b30f25bba2a9057d05043778f1ee7e4c4259e875ff54f0c62eccf67c7d725dfa167c5d5419d79a05cd39ae5972b1695e56c60e6a3c786ee002fbd49e749673837ad02d16735dce61d23be98f0d71226880c005376cd1cb9e74be1c37bee5238d21456ed4e2a03c6e4efab3e44b322d7cd96466119fb233b93f880851c12c521a4ada7587c89b87042830e3470e6ec8c2fc1a77fa516f44cc5f881bb1f863784145e98d329999551a6e821d05861bb0d85fbafe767dcd628ba1507adc78853926bddfa3bf25d5bbe18ae42839a77bd30a4d3d77a77e109db41c569cd96d69621d84886c1599f86e519412f70faa2afc184ff3cd889026a354b86be65f4a5bceb2204645baef49bc3c473ba9d58d53747b32e44b7af83d5303374cf1bd7f96afb6b4c9124ba197d68d51d464eb662b140a29ea9c5ddcd85736aa592a144a62214028941e65f0586e8c424f51f9e9ba25a1da240ac76c73d58e7b32f555281419dc08c5a285d6a41e5a102d58e8062896fae6b6f437c5e986821b9f48945b89ec16f47abb3ab8e1093f0b632dbc742284b64170c68d4e5cebc2b9864da1b75525c80d4eb0b3a9f7f19316f37536915e9ace21cabb3fcba209e46566a78a9d93c9cc44d9362fc8857fce9ec2446aa767dafe3b73aa2f510655fd4cca367a1663097d4e7bac5ec954a25642b1f46ca93bd57447898390bd1d3b9f96733a89cd742c53d639c8ac2491fa1b134255ebfc0523618bba8b0dc2936ccc40c2ef9cf6992d5958f78f583b0bcab49c7a6d568e58ac32fd9d4c737a988d309ec589ccf28ba14565c4eedddd9a2b4f5e5d8bc86d3f5dbc33737556c4a3bf2be4d77c960b4a845963d072e87c46b70e1156cfa8b76c6d42ade8105abee8bde94de4c8c710e9f5a40529562e8aed8540a87ccebd898ce23121d417f7d4f709f5ea6283488b2184b9d87983a72788a57859ec18673768f10f845996549d78519a467b00f19a743183b0def67bffb098b922d71e542d433fac2263f29276f5c1119f3f4be6b27c580a3999e25cd4ce35efa1fd4a2b5d4d9edaa20774c5b4a4f9535e6a973cfc275c63bbc8d01c8378c8659d199775dd051ddfa1fe4d4a26f159cfa466874f7c9853e1d76296fa3af8799d25eba42553daac5028144a8f2fdca0832d8eba950d6a54cd3e6270630e7aae0b1526553924bdaf5dea5ad7ece271e83aff4b171e7dcc4e386c4affad9fdc8b2e37deb08dec8f1f329f43e1861bda72139db71bcc366c03b2d4843815fd9eb9c486646c31a6dfdefca535113ec387171112e4c61a14ad25fdad32e6b09a1a3675d9474b52a49b1c552894f7213e88f08d341cd38aeea6cedf7dda0d34145ac2d5545e0cbae58d3394a3dc4ee878598e61ede1021e428a042141de3043f5b2bc7caa132176ab50286798e1820fec3003c580c70e82fc688119280614ca1966a081851b6538e3946d5c965c860c66cd92accb73a5ade5c61890db53c24766bea876854219e38618d050daf4b667854b251f4bb811866476d12e4b9f07f7180cbe54e572a6a5c5a4e5bed0dfcaf677959a76c30b587698b899f430f1e98239338b36b976eb8a0bca5cb7a608a142985285422172630b9afea73d2d86c97cbb42a1144143880f1f5ab02535b38ee9b14ba77270230b66d50ef25e3f7e6253a1504a70030bbebcd6f2a2b61c5e5d6e5ce13826b4329957a1506e5821a97b2e6be765d6d8dca8026a1a3d7cd666e8583571830a7b9027c34f8bd864778542f11b53f8a39fa5ffbaff784a0ac8ff9c848e3f7f53a328f82fc6143e72ae4f0405cbba5ed02d9638f1623b7678e011379e7052d2fde674c8f524e38474cb62b6694b42982c6f34811bd5956e766f2b23135acf14b32a1deb345628144c11dc5802da5f4e5ab28f21427cdc50c272a1425db3f6976e2401a18350fd9e3443a87f03096ec6e6ffce2d27153b100e92821d65f0e0f1831b4740ada7e751629ac95b6e18a10faa43b75442757041ed63a418fd7bce6269064de51b62e0d63defb2b0add5f2304c721f4bc3e7df91a911861161ec214be63d46df519d0a1a6604bf1863fa0a396ef1a95fbf9bdf8d5d3e911d0441a3f20121396c6198b6b84bab52b1cf83a420472dfe3cdf255f43e7121b2d721173ba5ef492962eb3b8a4b9a0936e867e912cdacdcda5f4b645a93116e9a0ffb3ba98cef49c1cb0384e3dfebfe9e478c5c2756913b6b9ff3697c31588ce2a2af573b698660fece8008f203fb8f2010aa515a8fd76d816cda0d7b3e21cddd9e9c1cfbbd4abb0ec2525a246448be854a129a1a23164f2965573a4c2cf1cb2ef7266523b2aac2fd32333f6bea03d85ff7286d813d9147bc8113ab42cfe5a662945228487b97791b1059b14084ff51c45b463d2c951a44d877e29635b4e650e51d8193a4b1d64f36a96ca110ab4ede8732f5dba4e0714a77b39645bf4b44e56a5727c6279737a3e2dc977b9a642a1f4e8b1a3c70e3b342891c313866da7b8a7d9be3989742299a49808ef98b4b98913bcd8f2c65231e3e7c29b48a6cbc26d869a58f296c2400b7264c2fbe095e9c2d2caac1c98683d3b33d426a5d1541ec87189b253b3a4e64b17ee52a900057258e2d0f0398e957013cf313cc85189dd5d74cfe9c5faf63c2590eff6db3df9939b25018f2241d0a8b460073926d18bf0f42583e967df92b06e9436f99e2b2d9da9489cfa4a4f33274d236e485c7e1a93d6cc66f9d467e478443ab74edf5fc7f6dc7144732f8b8b7526daaae4234723beb496e4cbe2e9947964442ec8e61ce192cc2c08881011ec20018f33980c0ae50c069263117b6bcae67639c6e00e86b0193e6a3c218722f81c2acefab763ef2947227c53ba47a6155bf314f90bc6c88188b46dc61265a7469fc69022690c294303390ea188c6fcc268cb12cb0d71082d8b49c6ace62804b3b1a5aeb12d97b5e42044d62dcb497654797f07815f277d1d449d92a61704aa83fe9c94c7356927cf1188c65a648bdd0222a54743d6a6d917afc4e30939fec04b3ae88dba9f33e1fbc1743f27731c79322871551feab3595f37e975e3f301a5a552efc26a965f8c5321c71e12edb52e662cff9b5d0fbbe7245bd67f25eeec001572e46129756e4c33df795f78609486bb696dcc498539ee70b60c2b2254b6b8faf920871dbeaa0cb1591abd49af8359eaeb18c37ececf911772d0e16f39c9121bbabe99650ea6daaa8b9d2583d68e1c38df97aed23ea78cc621e9310b2745bc7c9b83e0f09cf27de154282956bfc1fc235ed69f51fdbea51c6e6894385915b575f5b90d7e6ad72cc656883e9925e46003ba329f37ddab5dcb6b384793a7f7a47323ed1d898500498355c0a30539d490cc62be9c3dd7a34769b0c396dca42d8a0647b8385f7ab367488873495c28f1f099c50cbb28e52b5a7043c0c38c1c65605cba9222b4f5fb4d3220475e3c6f1df199cc3164265aea369ece178f3162409e9a6ec74c7b979e301cd737be32f3d6dd9e420e30285ae3754b322651ff0bebc69605518f592187171a6dba4ac76cfbbe5d406b72594bdca79914b9b08707212f4dba85e7b3b979ca37a132a885353cbb985eaa16c35a593878d29e3dd78e1efdb0809bf2aab00c2edda6afa0b84be1b22c5af789ad705f9a964dbd26ede457725481976e4e08ad263da89c830a976c6f2a9d2bb5ca9b42ee419a98939b2a29b86fea2cd5654167280a0b2ed797ea7f5313550d7240c10eb2a6b5fe9932664f505cce7292ee9e34f70424871390d57216652daf2ea69a80da243b5b471f612d4ce84609ed25e3e65842b756e7a5b427b5a7120aa1c3558b50ca9184cc656b1d2193d2ea0cca8184324cfce752dd163a9de3087cf2eb0bb9b72f6f7218a154cbd24bf1d05bfd2829c6f32d97a60fb71d8452042c78018502c47730648890203fa4073c2a25c4a83bd77727a5b784893c2814223c5450328c638c19abc3f247e95f1887f37cf1fd32994e3b184b42bb2c7cd2ff5765c5a004189a865797937c915dd62f16f7575f83dde7ed961894f8e2a0b4983786320b214d150ae5c77f192410810828141f3e28e9c5b97e3b3a9aa6f8951769f89c6ee61df5acdf45ffa67e267efed3f7125da0d3f7c60fd77ff1dc0a85924a729192f1563ff6ae86ac0825b8f0ed2bf3960add02d9b9e35e74ca6dcc630425b6c03ebf187b648eb1c5960a85d2c3063d2a40011a8c51520bbcbf2c45de6e5bd27b3cfb0980004143046394d0428ddf994b88121d979e85634279bffc2736cd8b2cb0925990a6849712151189c5261a2c18bd69da45d32236fa0a85c28292571cdde4bfe8828beafc2b25ae3896b24c8da934e668a950284172f08348094a5a9152dabf99a17a35324a58e1b7adc61db1fc98738542b141c92afa2ef99419bf13aa2b51852e977e5ffdb8981a557acca0241565d5e59bce6d2d6951549c5d0c03e9f5d2631f45bdd865a5e4148fb8c8f5ae8c295c50520a6ed7b3a44576c7299114ede675965d4b77f43b0a63e91ca3c8bb1c836f860c09010ac23cd0281105427ed96f520dd7dc84a20c737bfd9f614bb8a040884f116ea95bf972854229838719259fa842a970f5dc26e4479ed85b38f9196496c2ea2de9842f55fcbdb0eb36422de1049feb5ddab02e87cd6d13a88f979fe5f95cd1b29fe14328942bd184ed52e7d0a64517ecc20a8542a424136b349de66446555f5ca150887810213e8a0441a38c1d29c8400926da7bb5d7b06bde6206a2e412073917af66f3f47daac80f0f38fa01a405457e782007259638e674d182a84c42aef7924adc22d364cc71dd91021e44f807900e0841411134c818e2454860460925d27ffdb2e0713578ae26a1fb690ef7cb7c39aa2490ee9da92d9fe6117b24ce9d5fdf63be4bd92a858283124830ee5d9f7e5e12aba30a8552f208764dbebba465b1e322679438e2defdea921fcf26fe9246a4c5d082ba5688bdb82961049b3c897a59b896f2eb457877961eef514426da2d06cd0ce2d29388b2424e0759cbd4f289083bc8fad6d8f32d7852104a0eb160a74f37bca0bffa3744257ec4b33c56a91b2d84ed39690e1a52c3c69c1088d2202e738476318e83e8433f47f5f573f317447ea7dab999e7776b8542f151128875c5e6646c59bc2b35206e1ba5e75befa5f24f8542f11d7091923f3823675b50bf5628142794f8a18eee62754cb50d4257d287cbcb6d3d66cd9cb52be103af2f85f6dcccc1bd4aa3640fff9568d1e2bb293d2b08257ab0cb8579dfba3bd1e93ca0543c6a7f3497975a4af0d0e7d97029fa3467df3b76f0f843c91d3c4d3aac657c96f53f3bd8a6d5a48a67ef26751d76cffd164665e4f45da1507c206488ef60885f091d10fae2bd7f9d2a144ac91cb6cfa265ab3215a1463a289183498b9acdd3669f69ec951d257148c4abddb4a065b17b03874c8fd8a890f35ba77bc39bbba94b870f2f4255797620439efd04140a134adc703af7787a7cdef1ec2718620619632869831dba3a6d326d39f195b021d1185a16ad41a84f75a5073f7af00304144aa5c88f21ccc34bd6907ccc5afb2eab6dde10a1440d698ffe2a17a4e6f3701ab6d1a2bfd60b4a97cca3a16b9f8f315b8c663ed2681f6900394304256730e67ee566cca13d3533787f995ffecefb829d2565f04ec6ec1e4de42a6f11949041f1d9542d89e6d093567ce04186948c21fdd51d4d7f99259f188c2e6a335bbe131d9a9230dca55368f1c4ce57e6150a65074284547c38107e00493fa0500286c5e06160af97ffa3c8a82d979fa0e40b66414b2d67319d686c312fa45cce926e413ebc074084bca0a40bb6a4749f0921444be1c285448878329744dec8a7640b28b7ba5021e3eec68d168ee9529205d34b755695d291f720528285f52e8414f9f1fb71ef40c9157ecbed0ef9d228f1a20a855262054ee6c674a9c3dc922a2c092d2174d229fa473cc48ba0d1a3840a8dd87fe9d7f1b47c062553f8e5d6c3b23c7bfa78891412daf346d45abee359a1507af4e0e1409acb5012855c181dee19d26f3d470c25503895ad7cf67a8fa3b90a8592849227e41bb3201aec37bfb7254ef0a4b8756a49950b4255a150b852d20435069d4ddb3ae32b84122620ec6ceb5a74974dc92b14ca18254b48334bba84ea69f5584a28bd9224e8f28b49085da579a32e41c2af57c254e72c86edb0e4087926e1a73a59d6e65c85424941bc053c528911302dd76e654c1767fa622ccde89896beec416324c470ff32b894dda3bfcc0a85d2c30c148314c45b6002926124bb63aaf47441e77a302011c6dd755e7b428ca7f183818e413564be0cebe2090c73906b9bb3bd4f1dfa4542364b2123bf84fabdc7085eb0c34cb0a34ce0407a0b24be407adc347f419456e6497aa107fde4a37db40b9e23e1c5628bf9ec428a888f37c80f1e92cc40b28be2e5c6e675d53a272b144a0b4874d19b75fc100ddbe120427e40920bb35533e98b35092ebeb991a9f637bbf922b985d9743f63bc132fa7aa502824b6582fc7cc457559964356a1508608f1f101925a7ccac5182ace4fcb4923a18572592bdbe2414b2f59a15076808400691f3d82a4e0033b880001d2811d3b8afc60078542328b6f6b5e5062a386f99c93c8c22ca85fbbb0415f5c8d24166fd67570fd1c45e35ba150900a4440020b4be9c858b7f1745692bc02d3a695c14e3cc9d5f0901050283cc45d40e20a6496b342c9d0a75cd290b4c2b2bd9ef192e1f627324858a19d0b4237662e745a40b28ae51644bd9c7e55f469150a650524aac8d3c3001924a9e0a48ece6930f38d0a4850719886958b9653345fc62039456aad83d66a4dda4dc714b5cbecbd14b2fd6396c297c4e5be8fa2e3612545799d937c78398a452633ad1f93aed85f146b100b139919536aa130bd18576490e9f65e71800414bd6b8c9ab4cc5328cf27f4a04c8d0821d4dcc554281407927ef80822c4812412044901854264074284546a87a1008f33483c61127a5fd41ce26446b913c6144245887e30b190138ce65223347552e20bf15121c21524d984fee20821b7f9432839043bcae0a103124df0f76b2efe7dba0e9e4cbc3995e7b42b92602257d13025f724b944ee92dad2694d96f0f54fe3c7145502f7ffe421934c89af3d9e1c0f6ea2dd2399c42b26fcd365ab8d58819048420bb53f4ab4b59884160772061a65bc83004922e167f8bb77293f957e21814b4ab5cce9bbf825534611277206c923b41cb198340c9441d2883369248c8001c9224240a288a4e677b97d3c29d7ea8024114b7de5494d85b6b37307c82b3620410496b1fdd5f5e9a76f17480e918e6aaa114a87d36b9218624d31b6d699b3c8ce2944a334b61c34885900823178901042db515372fcb4545a0cc92016e4dfc57354d307251241b82523931031d2775f924018427fdb5e6a6d6b4a0288c24cc78b287d17eb21f9c3a2018b3068fef98ab2ea0fa522d8eb58e22f4bbdf45d22fa9ce1d294a87dff1911aa87d8b47207f941c40c1d8738636c397d6e504587210cb99add3bd785f8c45ab65442b97786950ef0a8401e3cab51071d84a8b45587cc94a64acb204ca23ee5cdf7827083fa0fb75ab2629302a1b5ecf7a936fa65f906846f5a1d83aadb1c4da8e30f8b313544899d522e0b0a493afce09659cca69af79eab42a104d1d18747a3697595f8b0d755b9d6b6ac077b0f5a55460f7549859646871ef8909974522e73eae53c683ac9759e6596ffe478388487a7695fd570f93b24423fd4684b1d35633be47290793fa8673926a58e3aa8392c3a2ce650c71cca68e5f265976f69580e575d872b6dcb607fc7a117739ccdb278bef8231c7a531df231e6cc257f1074bce1b8d5a0fbfba9c93b1d6e48c9ec89cd66291dd3d10684b2300d79ad4979c90633873ad6b0990c3ab5b89d1b3a5756a0430dcbdd317fd27eef365e49417e7c0b74a4e17c1a9e6ff4c619f9c040071a6ccf27343dc6fe52df597086949dd84ceeee7184a9063acc5046d32d6b929a1b1faf30910ec440471952a736b4a0a5ccf6cbd04106d44255e81ed96f3aa3630c763017c694e84bf2b43ac460a80c7a3ac3e53467da808e307042c7ad8fa3ee77bf19de021d6038bbe84fabaaee7d272f42021eaee30b88b26ba9366b4c2f390f10e8f0025f21c4a834f7185caf10e131544717f068f529427d7039710a7470e1171da6d44a997796b4053d2713de624e1ff5e57468a1dc685db3e13ccd721d59f84e44aceb55b8e0221d58b8ab4db84ba2ad19978e2ba4f2a5ccfede1f336e337458c1a4d7f2a8f5ff2c6650150ebaae19359ca7cfb25450731635a77bd94246c7140eef2c6acc691f5aa3951e3d3cc0838c327810210185f23e887805156133aea0430ae73852d34457c545a1f03003c5c07bf010838e28581ade526be6537cae030acd866f96373c0ee878427ed265293e0b567438c138a3c3b6957431b9700f213a9a604607138e17b72fcb23630b7aafe858c26396da197353883fe950026ef6292fc7ef2c6a4f0272c3edce654147b912128ede9e23a437b30717347dead0e830c2f9b399c8a03ebd601ac268f0800885528ce67316bf42e8cc61838891d2203ac790a361b02e653e71569a747d6120429fd40ebf8d299f9360b4f7727beed25c5f11187c9d66498e5c0ffbf72f7cf7e8d9b27d4bbd094e7ce195b237d1a94cdcda8bf47d6ccd885493417620cd0e0408e7092fbc5df1d2732dbe5b2922c403444270b28bbb72cfe5d30c22a3e944170b36ffb2f4b298f387cf87a8400a27b9e05c4c8b2222b4fa0985a4324e7061bc38de8296d4e8e416c676d87ccad2f2cc63eac4164b2e57b5c05c4e6861b998324e66a16dfc07f96d39ef9bb2e0254f5d3a36099d668a45957299a592a341da0916b7a0950b4e5e8167963b47edd2152dc815e8cfa6e5aaaecf1cd4150a454f5a611223354685bea0f93961c57576be49c995cfe29eac22f1926d75aeea2c279d2a8c5d9d549a7e693ee6d3384905b2932e9f6d296bf48d0aef3e3f857daeaa594f4e8116d3a597cf6f37f604c28929fc70f11bbfe71de3884209c24929527f2f9dec28211e5563831352f84173babc3ff6a95f229c8ca20d3ab91cdfd98928989fd1d1ea3d739f2714c6f5f9d399a12973d48313509c47f35f7d47c6dcd9278ad1c96737997a49dc3960202280c1892752a5733d84527d6153428afc680aa5470f221516f0189282223f3c40a114f9d14338e9c44183eb6f9e8a0ed339e1c4629c975a54a8a8cbb889c40925fab1328c3c97134db03ae2a3cca7f9162d138568eaf0fc7f11b639010f324e309177a7b7bb24de85d38aa021240d3e81104e2e919bd418d7694f77ce2a8a468f34dc0415223cc68e379c58a20d2e7dcb41dbe70ff232227052895df6243d8eacde721125d062504f9bd6c5d6cd5428949349a03ac8d7b0fb37322975226347193b4460821d63f0f00008c8e0c18213497cd24ed3d637dd5f8f84a5614e83b920c472ab50281500c10e0af038c3092418ed9cdf31ba9c3c622f8f793667cb591df71f43ca48407e543ee0831347a42d5ef69c674f66a71ad1c97f4ed5f0a12766469cd3a6cf0cca7cffba4ae56411d9060d4abe271dd646830891223f78c0e044118cd233e5b94aea76ec2411f77bd9b61c84307d414458b2652e978ba6269d43e06771f5929654b4ac1a2261a2f7ea547b5288f3aec6cff46d524c27842537834b272e3cfde9638890324e0661f9081532366aab4195119c08e274c9b31cc4bdff431e084397fe76ca00c2524a667b59ec6e49fb0a855224889b31c6c91f3c4d8f597f4abc5f7e406c96b34bcf85cfe5f5c1a04e9de68c9b5ffed4091ffed0eff8f3fae1c1933db0359a6ae553277a30c893a75c9468bc1c2c83470f4ef25066594a1953291ef4cdd95d787533cfffc91d0eb93efe99c5dbac49214f44880a2a457ec0400627765830dbf052a6eda40e07f5fc9b3246f58dc9133a946ae92e8bd5a269ec2a14ca1cbcccdeb93c35a1abad50283fd0891c10ba2e897cd01e7ce43d869841829338d4bee9bb4c2bfc420b87bf7410eaebc525cfe9324ede70d2a94a9d4abb0c32ad5028163871c3a7c9e514e23c63b60711ef81244eda70b9746ee7722a1dd9c07fdd759ecbd6f07f6acf31a67408590d8ed8f55dbf7561749e866dd7e57c2ebdccbce9040d7a2ed1e269fd85d3e5c91910ad7ff539eef9e7d80ce7b0d6781f5721d53a29c331fe99b624a65df43a21c3044ec6d0277d719ad4a7cdee9f88c1c78f331c7012061444c8024ec0d09f0617d6c34abea9abcad861aa0c0af0584ebed087dca44ea77917bdc4c18917d0fb7f555717a737da853ae7720f1d45ed7be5c23e967135dd3eb3b52d2ce0440b6f0ea7347df563fce7240b86cd52f726dd6ab32d27583088b5aa5c2d352f5f5758b4ab4d5a9261234dd6821d64ec2883c7084eac3080932a68426ed0129dd1bcb2d2c37330c4c9a0503c07437c0c1ee8840a6b8ee69b2cf3a82973328593d072a8eda04bc75e4fa4803271ab399a9059a34486a0817c08910b9c446159d8f3245d32f516a20a85628603711f453c0727d831060f1e29e0220c02169041068532c40c334eb083043bcad8d18b1328984106014e9e50c489f8f87146070a70e284069c3461d9fc49762e3e6fe6542894139c30e1d02d06a15b2c8da7ef25b42ddddd8b7efd31149c2881481abe83079c24e1cab825b4a6cfe286ce09127e9cd181079c1ce19c18010226c510800931ce4165a99cf7ce570fa30e2d7f0c91b33082e1230126c0c075747e79a3b92cf2fbc5a13c35fc32a6dbb6bef0f1e38c0e78b3070860d28bb346a8d28234152fdd26bcd852633435cb3e9da50742869c0102935d787b7aad3bc9fe1ce6fbf01e65f0f01f43cac841101398e86241e634e3f95cca4f2e2660820b744eba83c98f06198246111fe223c8fb308308fbc0870f21453460728bae3363e9e7e71a311a135ba8492d0e60420b22fee3c7190c3099852c62018b84d062b9a4651b5b4a935708790498b8627153c3bb9833b6f3df8aa3ecefe9c77a2d65b262153b4c54c16ccb82eb68f68fd224153e1660828a08989c420226a6988049294c4df2a327a15dfa9509298e36b29db3dfaa641e85034c4441840126a12032440811216318c004148b3232f3e35a446ff289640c17fe225a25e263e289637f6a2a148a492730cfbf49bcd4b2695860c28905d32f632342957b02934df8f871460760f000134df82da650b3994cf3a92b2f30c9c43ab7e6f109f2a35b6082891ce480cbb080c9253a2f21f7c36746f32b128411bf8005269648d58bef9a74bc8db93302934a10a144e3e3e2fa9a18e92e5c41144a0f4f3f7a60059349d8a6ee25ddb7d19c2c1349247a544b9aa4e83e97ae5028424c2241c40126904880c923fa72c934650e8308f901071347f8508049230260c2084d5f4fc8cfccfc24adf8a814f9e183333c21934510c044118cca38b3579f6a4a9808eb73e3ce7e129a5f2a26881080c92134a5254fefde9270d12a14ca182686008049211e9d5a50f320f74b2749c18410c8b1cd16eca57c0890e6327cc02ce080c920ee0ebed14ad5a990c90a084c04515ce79e6d87f693195e8404144a8f3478c8900e7480078f14c48bfc2004140a0fe42fa05078f8c02410465ff36bbf172f73b2925c4811370104177aac5bf6d4494dcb10213e3cc80f20417efcc1a02db8fb7dd2ffe2ba267e78f48ccbdb52c8a4dfab50282dd851068f22de820a111e634dfa50dfe7fbfad2cf92a8f890fd5fbd9aeb76e82bc88f1098ec41391d5cd44eaa4693eba118a1de1ba666c4cba6c0240ff86d85c9dc524679711f3d4cf070ce9866e4fafa8c0bfa8f216594617287e4a3877491d7825c267658379b6bd4fca57c774f42506052876cb3a810ddc1c570ba272128a0433fc22f4d6796b394c64de6c027b962bf9b9f1a3e1513399c450da14bfd67203ece10322405a981491ceaf04ca663085bd1470ac23e7a207f010a820c3181c3e667fd39665dbcd20a85d2a30528c081c91bccf2fd243698743927090932060f9484a08042f17106111ec8c40defc69bf6f81b5dee3807148aa3c1030741084cdab08ff8a6f2ab5262e3950aea71021e45d020c30320f01f43cae8d4a903266cc04fe73be584f0ffdf640de7a65411257a35e82f6abe7a9c4e1ee78a491adab0a34e6fc7b94c1e3434a3d38d9c8da5aea633a8dba6d15f8ed3161333983ff5a626a1fd49f53264dbde1994d4d7fe8c0919f0da9673be75c780345f91d5d4440c0b67d9f2fab987671286435ef650f1d93568bf42a1f4f02167f828828610a6507a78c2040ca5d6e8cbd28a4c9ec40a8522a4880f1f265f284f282d07f5eb15625628942b9878e1bd11be214747bf2d2b148a9a7401f7eb24ca638e932fe5e30c34ac60c2859378265bc0c433d142b7beb1e15265927ba95028144a8f34fec71037c942259e09163eb18e295e9eddceb90286053bcc0a761815ec3029d86150b0c390b1c39c80023ea860720573f79c6a119bf105132b9469571a5a12f522af1c9854a1dd9793d041646e393423d821821d21d801821d3830a1822da25cf29894779a7b0aeea8d32bbd31d7ba6c220573fc282db1eba3273389c2a75b70b9057db92a642878ae39fbcae6b7cbda1378a9baf7c5143be19cc205f3cd9e292fdb05932624b3e6667f77b1112d13ea9805978410a745b97109a98ca7f61ab712963fd98b61bcfc378992b0e9f14ea337a9ce929a20e115794163b53539c269763463b72c9ad6bc8911f8f89bc2b3b8184d7cc5c07eeef6a5518990831885fcca2c9b349d8c9d6318c966e8d03b1aea7be321e483e41006aba76994b6b81d9aac502839827187192f974d7d20073052213489502f35caaf0a85f26348911cbf408d6b8bdda872f86299d1d973b896d7e2a542a1ac20472f2e3deaef41ed1e5c8441b0e30c2623b92c72f0826f753126a172e745b80b4bd69d69917fa7a49b43178e576759be4cbdd7631372e4e24d3b9765d1f26cf9d1420e5c5432abff7232904da82452d368240e05438130180c0080418eb76e00531108204844261508c401a95ce0e6031480013f382a5c4a222e2a2016209085e2903028100544814018100a0383810c84921810e354f6dd215fcadef591a52fbe9fce4b0fd0ccf3506184b1511efe76371239cda16fc7bdfdcb70b1403c8e0459b523af618b14e19f3e18ec2b11ee09a816d2c32b70499648b9e245aa47edcc32b651e260da1433c62d6f29af5a2a9233f53ef3465d36ee26fca4b0b711be1dd36e8dcb16d33522fb51199a66a761b8d6963a2374e0b987aa3182044305cbd05f5ad8c156a50476bca58d4195acff6f37bc951cb5ccb6687a4544ac31fe60ff1efdeffc6d859ddf4e24129bbbaa92498b4dbce1005f7b1fdfcc44f66b6bc685d9c86681d66a801610741cb72458a72684191a240d19245916574c1ab0b780289290b15598e193cd2808b63b52503880d78a3422578ca86de259b6bdd9a2fd79bc32f5043f9af0479756d3b7ef19ef1c82e85eeabe9a67881b0d0a56d842d3509f815ef1b1bff5fa0787cb78d4a2f1b11b3fd5413bae30c345ce0e7b40950312a334c9d34c467c2048bcc8f0c186e50656e1cb42edc8a3b6c11f0c2c62d443e020d4440f3040dc7510d4b7811f928e69f78c01386104094fb24b74cabe7017a304e06ed466477a78e8f0ad3fb07897abc177c3e12f16c748af4970393a58035416a080feb80c72e9a4eeb380a08668ba0723ead37fe15290e18b83e0333bbf3ac86271349640c9f682972c333aef607151c0d6a564401e8fa524133e04fbbdbe1d1cf30e919d0d0084be85ab2f5281cf50efdc0ad24c986058df0cce0b4250dd305093d2e77e296f77942ce2009033910ec693b07df50dadc488d06391452998ba296e5b96ebb98b9ca111299a3ea8c4f1d9fb27600b0997d4c76fbb26965b93f0135263d9b896cb548911bf63138083a687c055dbaae8664ed66ccb2d0b6e8da6511dc737751f794a952d07e5315381ac3d14338a860e9bf0a80d53b9891a964693bfb7327f7a3355dc1ea3b8177a1f0a71f1ea82d5ecbd60356aff95ea008018e92a5e5e78c0178a2dc0666baa007d3d7b41750aa5fb338052318e3d64eccd1e3017b1a18f273b909d966c8df36272701527d348b6222e8ef3c446c9089110cd41203f41aaf918fe6c3945665a88a81caf6f2b7abb1eda402f8f3f884a8705ef8643274142e9e40d9377a21fd46fd8ec4f2f8460cc1fd24e7df326f7981b7209853d69b5d730e338f09a7bb49dfa8bc5d659b509e954b22a4625867b13d4704ac3feb37d0368b7b0d71c1bccf1df55ba0116093d9b11b0492c38624a0f3534e03601d231fbd43ceb13e31e70ea0358e796a78816cee47a0563370b1a8513b8446ed2ac73097b231fa562bd44ed1a56e89a51cef1f993233065e131fc2abe40eb821a8031c059c52252450c465cdfe21d1c8ccc5e729d488c3129beff26ebfb8d5ca617b8997158e43df74318ef6c049ff3d1a733f74c6a9283fbc24e0b7ef2e8ee9fc369cbf96e28edead5bc7e27f117dd34b5c69223a0fe6681defbdbfe8ec2eb85410ef052de99ccfc8ecd373adbcd8b6c91f36661cd08cc5928a2457dd8746e2033fd184793e04ead26c0fc13bb96533837aa85fda5a0d24b467e9b2110f2ac919cfae71d5df690cb55b7d71816baf584b1312b169ca6af38680a44fe5c93107b4649fccb117407e76ce18673b090f5184ccb04e949e5d1b048083f5462e2653582a3e3eb4228cc9e2a644c625936c73fd8217f74fa2a28108a49a5f8b2d4197143af9535671cf774fd9c5e3ceb79221615a047fdfbfddf090956288d42d33051a7ddf9949384456d04756d041c48f47249e107200ccc185be60793c4dee010f153e0d2f3d0fba9c09433ea1e744f36f94a4a6b07d53553c469ed077b286f6acb5a2136a1feb0ab43524fbdb97345a2d9a0360b9d79e3a8670de948a522dc18caaead358425492f5ca911156ae0822b0e62caad328009138e2abd23e08afa1ff279bf571b696a009d7f82e725c2fee01f4fb171ea16ae24fd0ef2c6de56191f1c21860dc6068f7b1698fb08aeed164f15647aca7d7435013f8907a78c57db7da1ee6f9b8de91f218550f6d890dde39e7c98fb240888374cefecf3f5190f83893c892f3ca078e85cb9475c29a3df719115dbd9469f728f7cf3b709a8503dd3f728eb178ee1b2d44136e1a42f17410596c7e00a0d200d0ca275a21dfb055c9e65d55b579022df263b6f17cfb12de3f16799e17c9e38298e79632a17e8f23220762cd52b48b516e84655115a7824bacca9059a9e213689a7a0f4efb9cfe9839317526cc37b5c5c3c2ba950a96f2dda03c40a54d0c07adc36efaf7871e305644408a052e3a6245e392dbaf50eb03f414fa908df950af725c896f607d8c67c3fc8d22d54476062b53c22ca95f98d5a6814a94c78d707eacb8a7f1f72fbb33e58e8997947f7b244052c68bf6b59a83ba64ccdd3e4cd377a7906b31de4bed4de66ae85e0cede8a177268909898207d6afc85d3b9ba5149bdc8630132f5e56a1c36fe528e525aa57f8ea0d90fe372e7fb780bbcc6950c202c45137a3043884edffba31268b643eaf4a23b228f5d55c7e838dda1fb4da836d17030714858b1e3b8a2ea46f14e91d7ac40a0290bcccff6c804ebd67baab41e41955e0673bfa49a75f8385282d8cba42abb9c77a4f4d31258f2ab31822517e9f3fe639da434a911ee263540aff53f68c3ef4b2a70b79e3a80d0c401cd993b8562d37b051902e4b90ee44923555dbb8f5dc0291b11534049126a846da04bf8e7140440db12b06824997c8a38077189ae41d341e7a20da8a02773888a879b0d284bf052e60d2c8e6d7a48251be8b0170a60601e9211136478a2506cc52f788d67ff725219d33838c9ed86c2701516960d8d1962a9a8bd233a330b8155d2c046e2e6600c28bb9bef028abcbcb892078a587282420bc221f968a3a131091ed8e0695dc863778126de27454fb35298ec02da67ad9077fd19beb5edd073b42eb22e7b944c814e766a3f90151540b9d868e76920749be47f0124dfc15578e54dd56ea15632c234a8b97adb6eea87f2e5e1ba81aa2ffadc5c3f719d2da5215051a242b389a2ae7b40e750089df38bff4401ab5ec533c0466c26519440abeceaf25b3209e8391bd6ad233801f822c1f13d2aa5ac6b65fa093923e680a071d67f2d4d5977c6a3c256b38278116d22026a4cc0b7cb62de3c468648fe6d98796fa66cfccb7a13c9e41912d40c46147a260801f6a0ce3fe85983805524b6f10e348822b44141c30b812eef3f76c9f1be67260923f39535a223a969eeb2ae8b642ee9b6be911af42b2c6e007a2c442d99167ab896024534fa450eae0d2a65761e40cf80ebfa79b65e92e10f7e52515494a0b93dc8a113aecb517d932f3989fe044dc3ec5c78e9b0c3fd37d0188ff9e5025fb1b08d4365513e40c7747751dfa80900c27da0f68088f8482bd918875971684667341b5197d390e9e43d4498d3314501c762a084e82c19bfa99b00c56f2298b474f78bede41f19238309610b2efa391a8fedea3ea7828266a0032983acc11e1ddd0ccfbb113ae592065c7283367c6865f7bf01a1636ab6a439b335588ff91df3427223e57263d01c3a3abc1f8b7e0ee0fecc8d0a9dc33ef6df22e5655f09d37e6acf9e71e037b7f61a842813de002436059ab36a0f9bb2b3ab88d7322b26f530c3482d3187a36eead2082f5c24e4281ab3065445f317a8ec2f066ad266fd00b99408174428f700005e94c172670e0746fb288a46fee501bcdd96fb406dfaec607cc3e9881c4a9801a4a3033a7ed9ea35907b32399a5cdb525aa028579740dfe80ae585d5544473f1634b992d4e353cb52caf44c15e0c6eb15b36b75155f015b940c871020911a668e510f5a28757c86a974eb137fa2946e3ed53a15f680cb2939457e6294868af864846af896722e2c978bf06fe7732e3c4f2b06b54241b5dc66cb570797c6c0861ceda2b8f02e3725da7efe18ccca6d1595637a9e240efdd9b84d3915e327220631a4b312128c60ee47e9a64277f3b474641dfe386767ffcdcc9e66d09ab106e09e37de658c1158b39fd2210a24f19451caec8f9a18091a4da2c2858e2c2528fb90e59b1f8bc38b42450e0908b69e003ed6206e88cf77ddeb1c55e52f940283e6c38d35625d9f684c8e46ce80d8f7bf703e2a2a6f4b276dbd5d54d88a455f2aa7048ca4666396cafe809a04223310de710e4aee4390e9a15086b6bddf19b7d8490fae8414bfe66a289ab13a480bb25c82dc5e1fe1d63c59bac953af2eb0175dc29c05d3ccabed281733e508bad34fb9b54804053a637616fa31dce1d81596c00e07d09ff534f4189b182b5f8f66c96844fee81af7d3109e868d1cf22adf4cd0aeedc2e274f5711d23e12dc2e88e836b71a49fdc51c0eb35d939438a9f0b73af56ab674403eab3db9b4adee070f9d69905873c6d63fb100b9c7b1fabbef5ebb848f0476c6fc90b5877d9e99d4786cad181aeacd3fcb782d5345cd5e6e008a00eef460c07a9981230258dab0dcc8c0f7ab5cbbc411f5b76fc53a7cc3d05f9a4a74e09980b10b91f3ddc42c84a2add92792cf8b69b2c2b3392a7da4a1a5fa438bad61e03c58bb0d755463f729b2f9085b741924cf6006718b5ffac65dd2c79666b6c76ae5b6254a9efd02652917268cc28087c837ae32926663f275f86e8e92458d63dbf3129fead7cd51486e20a2789361ded203045ff47d529f8489dfb61edfccfe6fc7c83b2c910291b84752b6005cd45c3bf3368c3d03994da746258cc7489dc27fec8aadfa4845bb3d7f311b117aba7a7e29b24a617aeb504b0001f04200107189af5fb8e4efc0fcff38602fd60b5269245de7e81cee8585ddc6ff267dc91316c3cf1c40f1400866104cbbae854b136b655c7fca1175f159b5bbd4d5662ae039a7223e682588e0a98ef2eef3f3d110fe6972f36ea84a19934a16c64a026bd5e808d26ea40a9208f3392c2bb7ce3a01ead15bdb4313232746bc61525b3aee8582b877074c0ba6961f8925e1bf528960a77d74e0582ac1101bc2b2eac586ae4f04148b01d3146337bfca387cd26239474550c28977bc3b3d26a21e39241c2b15983d2a2ca81c3785766337c72593bbc3cec80bd0967f60e776350a05e8033e05abdb883c11ede9ee973567c9da6745561ede6757060e6091e04173b91fe7d5d55852c3e7e867b9be4d049efc5167e614380e5fb8cce515294b95ff3858dae94710690ae5d7145eeffeda29db2e748a5df038cd2a0ed92165a2fa3f939461502d0cbb0c6366a452d2107483e132a049c6101d74502b299495ddfaacdce9fcaf61b450b6eb1153a862ee4afdcbddf994d61a40f4e01e866f9b4ffbd969288a5b849227c71790cd1dc44f605c8150cb414c5bb9b33bcd4613d4676008f48821d7b55261eb4005263d71dd5452e6ccf2992d393e17afbdf9a1a2bca211026359944db00cdf0ba1f6641fe94016aa89e82934d2da8172722a958ba1e5fc27a839b3a8d8065ba10825b6bc41aeb58d7fb5718473e6e38fbbd04850d54d2b4b204ce7dbc7c60798d46939cf0b79b58b97202083d4c011d5de6a7a1df9274f98e25a0deba74e7a4a4af902b5f5665a14986c6cd8974bbcfa9f2306dcbd0ce8c1e1728d153138aa64dc2de084f32a4815653e41ce81842ea74db5f25dd2688662a0802c01444651c62ee81bbc49f3c06957a056c14a260996427d2980fe4bf69e73a63065b532206f01f79f41a2e16d12ec2a169f7417931bf0ca869da5cc459fc0df93cb4dc971f544efc8d0a301bbb0cd9ba8bb38853855c34dbfb2539543158dab5edca2b61e98e9efac5b0a4338e11c0e4ad889c2492dcc85cb78d58afbcb1564d14a112dc61da124b91d0eeb4316695e730b28214cae50df9d5aae609b15671f3fac6dac3c724126beb77c94c6b917e972375cb51b984f8748c1950a507b36c73928dbed97d91cecc80b963a03aee5718422f5839d0eee6d428da4d967e4834b292eb4d126a96addc557c069f86070353df6b71e7a1af61098b11e5afc078c44b715342649a6b71f3494789081b8c0a4fa7bb110283c9ed176258904d07d3822e37e1baca29d7f2b288784033ec40f8b69cda58784e5c3fc78e910a1c8d11fbf90cfdb9e97e5f52ac9b4b0a19718711e167dfb6404dce138fd57614085923975f5f2fc17ab4dabb2967c1ab377dc81039fe01082b6671937de5cd56345a4863ae82b5039e705ea05269e306088cd98969fdf82a7e9aff6dc0e49754ab847b6af6c2c99dff143d106caebfc548aeb929523f2096250d6b846ba2d4ba5c784299952da4bed9b91406e92a348e8c322b53d3fab501966dab5a952e1a394254e670df286091275d1765f2b1ca1b14273a9f7407e38645e4e3044236045ed057f120881e815d25d83746a4d5d830fed92692a05b7e5c73fdc5601aed661b34ec9ac561a54183a98e3f75ae125fc43ebc6a5c1a8285e143a0cdeb6119f40383eb6fcf7f5c6c5e2bc181acb7a994c9f3b1f7c4daab9a67011f00c3495817d0b3158d4b83d58a4fee5279ac5690d1f3aa8fb6ca931be2d4b6232c7ed84d358b9c2f2055e42173ed965a864b670a417ad374a7d44e6d308f04b30f8bdc25e3ded770d6f139c0b79dced781e0c46058876864abcad751fda023aa15daaf670386b82101e2e7c22511fa5822b170c787cdee52ce64707e88b86d01ff7667dcb5dd4f4ccfde87dffb61cb65f1c1844745e4e4aa0bcbb66281e16a849b35e1d62cdc3324961caa1b86c788ba911ff2c7de3a1ba9e1cf08a4a051b95ea6facf25bdff72ff3d08a3b9b2af15d2997e770c9257751493e944ff06636b4274c9ff77d7bfe06325b9ebfa94c2a316843f9c4908679d30fad0d8688ccb516785d163437b82bfd6e424cd1d280eed7c4e639c57486c9ea750aad921e04478af7c12b52c71956e53bca048f05659149bcff8860bc33ad1f9f9e902fdb9d51c5851fcbdeebe4a185fd4b84badcfb62c9bd98de8b70dba4eeaf55541e3ab7c66922aef88f8925c85963c1bfba3122d652f2879907ac3d6780e62ea1337d8f5f5a95bd2ce85e987d94e111e342972a7e89e26f6d6233a0fdc0b4a0a37c1a9bd3ea790bd6f861445f1f176696b3223625b0570a645ae3d011002994dd6daca8db06e67e7f40e8708f4f8f31aff4100ca77c8e1dbb336f2169e795b65b5dcd617c5ffa651dccae9b3e1ff327e49059f9113160881db74663345288c3f86140b223f56ee5dcbce200144d85cb3cb7d48e50e4070208dc81d13c32bbf0cf2ce05752380327786d8635478909a594e86f8ccd8886c4f0f35dab543ff2981f97c1e08c54356115fdc985f085e0a733a7d368972a4b548add1b33867e8af28e1a4d4c48240829da23952ab89e97f2259a1817269aa22354e061063616825d4032fee5515fad861069c5c241550e361f3db63db20b0fb35f635098617d2554cd91c86b152a98382ff4716d2e7d41c39731050a64918212a0fd9d392160efb5f2c13d49904a0131807c1f148641849bd6f009280738febca1d4d84213b5e3cff4cd1956aff6aa634395567dacfaa02b03ce8f46bbf72beca442965ddf5d480e9586ef7a1ad9f23e38631fe258b6fb5f05590ef04167647e0c2a3c6a7c955e6b319e15eb7c5713222e869937063643864b10b6fee2dc14e0e58868780c70363639a9d7a48307eff1aa0aee218b37012c406601080179e2c1478c04ac6fe4d13e0bc4c188f288370708787b27cb7e7904eb364c7301c8a13288417ab287b3d97519360bf4b3da1194dd6f609a8fe03c5f978a778cc73df6f06ded9150ccf3f725f1ca563fa35f0513dfda7f383cf954f7e273e8537ab69882eaed78f6f9b08a39324ced4d4501922a91450f4f77fa109d38781a446663e4a65d59982e51cb0f8448b3c144235ab5a2b0faa30182d98734a425768c0c0a1acaa08a38eae4854a6d22a8e92f7249eb9df21e9156b71fd829cbb45ddc5e8669a9cddb4e06c53449d0c564e07c4efe10399334eeb9e79f2abccd55489677b53870bdead329812d7cd5fe655ead58af058ec5f201cd32f0a656096823626b297599cb10aa68fa844daddf2ddf96ecdf3bc39493f857433e3075916d83eba87dc2981626d43b9aa2d2153ae246c7039dd97545c57ba21a74067e97f98b5e5514e40ab861919cfc03b694e4ccde82d31f4b1e64dda9804d75cbd689fffb9d07f4b93f0b757245ac6b66c0ab78e0d8111198e36abb2702469f65bb46d6ca92b3cb0a5cd7dbe39528ac23f84325c64e7a823cfa1fce6edcaf2feb12c767a0df3295226dadba4cb55577d079ee54fc8776c01b32e29937900984885c51176ebaca7f1ac57a3353f157c8d70227a10054570c4e8660cb0d47361e857690b26a2cee57e9e7d36f5333ff2753f16d553ccbbf0e8ccfad7c9cbe305c9af1df6ed7eb497b7b303a39ec2eb769c136a54e099d419cbf5c08ab39341b4684b63c4f62ffd705300c4baa12b03ec5322485f1a106d62df8f3ceb66ed52aa1a64563c0d6349098f96497cfe2f6f7faa8658b6bfaf73905b738e64574c3d8285723c8b4622bd36f02a752dced7bd64d22bd0c2d52eb96abf76db0d08de679157b2a223ee43ab85d712f49389ed5fc45305468f348ac960aa7a906032c4f9fa0180e490dca3c66f7b29a791bd793c5d211e356c2c16dff29b0d8ec7b6019f4a60433cde13db2d48eb8945c6f7c5a103af523c1d5eefa2e2fa54dee0c283cd427640ed5b55d21e2aab7178975e021f72182881045e4c292b0266e15ea81239091f85a3ec399ae5d8cb5d71b0ee3c81eab871f9d0404001e3db6927d676bd251b9b4b0e7806038805d6b1990b2f0d235db8149c0f015e1439e6d98d0ef3b8ebdbafd7339476ab5a4125386fd3f44ca29a82059c5a1c455dc60f952769a823dfb08485f3b218a6b046cf4fe4a0b50665bb524c0f7f181bcca1c609e4d6930b9292c305f656abb7e53a32058aaead6a247135418b7beaffdfb3995173ac04150f007c4123aa0a48c95d8568b4498f528cde72683da4c48956a19f586751a432ffd87bf0deeb5d727dae3986b8ac4a5413b60047e29223dee30e700e32565b36d88d2f97010d85d2ac02acbc719bee45164dffe3a6311a688fb50f6ceac860fced2cec6822065006c18c84fb4246f1136e8cd29c211bec931900c1f3d05d75a3d6e497eb222eea57925a071061596132db9129ee3c037e7949b1b0cb866bdd95a56353b933800efa02c66ba832dc98b86f193cc570d25ddb0a3f518b28098f7c54a2d108b19dcb6bc56a5cbf05a42421063a5aa8bf076fa43a95a72d8298e6ce1622b230e833458cc3a0c2cffac42b472d4acb07565606fdd241424458245c057f54e49940a9e50921cf49a923ccf691e107b29ae97a05329f2f218b2d75e62de5b6f229a4d905d0fad03993275aeab7549d9692fa0bdb3ef81601720fd488e0f7b351fb95860bafd1dc12eb6b4c7cfd463a5a3e1e061a6a1468002f3daf162472d0450609e1e2d7734e1488002ede3067327fb96a11e987dbd1b821d8e9db0135181c23e0124ee3b48838f15404716424a95c840a119bdf5ab5d0391d31a5938ba90602ced12cf0f12583290090f4ec7b4bbe7b5a101b2a5d041d13563036e7ca6ee6350a43f2f3ebec879a8f1484b4585b4f56cd139b770e9a0fd0a9d7673fc159e338fe9348f023d171aa1a4fd7cb3e91870badcf0ee7882f64dffa7a905d6c3f8eabbd0c8e3417327623eef737fa352dceee9115570ff394b6038f41573d53a779c646b09a7aa59be159a4dfc39006f90e6380baa47cb9dc1d6b030c95c0950d32c58592e79a069ec97832f56c13564dfff83addf3782032e73cd934941c7f77ed5a48c6cea91a363190b32e55fe719179c4d6c18010bf5c4a23ee86a09afe937e7e09e12513f632a0f583972309264375e0119be7c30548d8a7ef6e0ca880fda623325589e9dc6e5bc5b68e6c9d6bd1a65d301649a3b4220aa5c69f45e177a15182d0e4033b9babc2ac099229d77c7c291dd42a409fba63dee5b2b6c83d345277d825914008bf87aa17c000b9d0249afba9283cc108144f57ba92aa5a5349898febdd665f18c1e60c3ab11b8ebdd328b4c5f3aff480c487417e40d828c643089632fa788947318f4c304f0e9a3c4a790beff8fff7ae4cbfe162e443b64a44bac41c559a77070f5023a66852201703f05c1dad0fcc5b07ffb10c30d465439960b70281489a6f48c5221ec004312f429842d9bbd6fdfd2943c12be69ae146ab6a1429ebdd301566f38fef8ae4c03bbc0c6f115bbc6eb919754eaa94a2441257fb8583b47be773e08a14caf75dc32b2fcbe9b6ba38e1cc074d76408392d108eff52fa1c5e1f81afd1eed1ccb73c05f26843b68c44f61c923dcd0a7b918488b0158e8221ff02797a29e76ca0eff257ba65807bd2efe214248edb06ed50b5611e702f4941cfb9b78c16787d1fb0d775b5535e59907c75c232021851dcbe083d9b5d3906ac0e94cc573d68458009e54ca2fedc807afa95c22db991c553662c0be3d3fe038ad3e076aa4df4a1e89db699c3ab75db7814bb8ccbc79619e4fa0a9e1caad22b2ccb590d8206cef89eb22a7c52af24cfe4a64716eb2e0c0ed5b2301e901dd02ceb91e22350893d559f22950bb44e30fb02206409db20b665f7815dd1f4092ab69f3f8b2bcf0a17ba1954474e5a035b7b281b9508af0c0e2127aed54c8df5e133ae0f1bd64df5179a0dbe64b0d382342cd51240915ee5d93649196a6e3e5ccc6170195fb1a07273f9d5fcf2c765f46a6400959429caea9e573881b2526fe8552c4851a457fb4525ea767f3b70dcc2d48f4a1ae394975c7493c57ba9c64091dd39faef4658f8b74070096fc8948e902acf146ffef145c04515b72df03838bb589b9c3215df715e98d0ed3face597c0402c502d3b6cf60d7403e845065002b4571260ffb2507ecac8f05db8ec293be54769c9ee5b268718a08532d8624d43e4f498297e556e89ef909e1f1bca706709d3e227a9d4b59600144477f300f9e6e7e0713a88c7bcadf47e6801be025a0bbcb5e504ffbdfe26e362a4a06d74ac92bfe8787ccb38f0a3fe434b035a45124aea0cc5a99d2b11da9085673c05b99af87cc99843052787b009a0cb6549e2a2ba64d6964ac6351acf996d24ab274f0ad04a9a72224da8a7bf172c7314883b868548faca72435438884828d78b6a7bf406cc607de33b48be016f28fc100d5ef922a455644390fe19c28c6309eed7a98d4fac88038bf7e88ab7ed0930f09ddd8ba7534bb021ca653407dafb235ffb9dd6ed69622755fd0490e699f85aa06a7370a71a3bb3bc30916c4fcfd89d2643454d7d09c34f37d933509e6708ff9c3d93367efc6b0826361528fbcc198c45eeabcf1811f2857325e4dfa221dba0947b6406d50646960d8a46af45903bcd88106609dae3d4d0d890300390acf1e7f8bfae1c5efe035ba49a2755aa1c70ba43b1e655db8bdd49338fb6fbe49f33090a3a64f94fea6cd8d38d0a5ab54fdcfb209120180382b4b737cd0b3bc96a83ba252048505acfb1ada4ed15e18b32f41216e68e87dc68c542b9bf014fd55ae2c707fd23d1af12832aadd24e6147c8a5a28cf03a0b39005cc058ba2a9f75bbb933631d7ada85b85a2941e87d9228ccb4b3227b93d4e5e675dbc1b6ad4634bcecdaa7ac844d14a4ec099c61917d7c90dfc5ed4378aee450d5315ac28f81e58b8be5b64c9c5538e6e2600d8fb8ef3321a2fe2b1577efb4209ce1de7e7f29f5284e19747afd2846e63d7f40259b52b3225ba98a6e95bd77dc7d5d79a21d57a887cab3ad403ad7770a6641041b838b6eb0b203dfb1417150ba9b7b9b310d1ea7504f857153aa17a00211805c0261f13e53825f5099806ebe0fc5ef473451ee27d27b62e99db83513d031d13148fc3ec5b84c51fd2a426b62574c9cfe09c47aa2ef4ddcddc4f49928da13593bb13a4f5c6c13b835d1ee27de7f62689ea87513d135b1314cdcfd09b89d09905533d6ca2db14ee635a4c6138fb1c4dcab285713e93fb1f4276ee509e843026451aed704598a871ce60816b2dc8a3cd480818d08a1e5235959c412bb0a15f3aea8600778d893ce8bbb26afac1504bf218d2c5082d9fe6f6c0d36b2e4a788b6b2762a037c6c7b0bac143cad8a3501109297b67ddc74bf1795d326c8b225244875823925426f8e48cd5e6d8a52cbdc6be871b4492a48b35a21a9e8191113338394ea6c9c8a72571be917419d04294ccb2a49fc1c1cb1ce802fc564cc9248d38b186eea171715345fdea9e7acc242be042a46bfc7b9c9090b79132c0807c8e8c2d396a7fc757f70e86bb54058a918f1e6c4aacb356f8b27caa9c02fca4efcae8ce29cef0dc21a07b1f70df682223294df995fd763c4b89734db501294a0255dd7a41f6a85bd85f880bd14c5729c6ba6616784a49174ebe1ec13a934fc7325a25977dd93e2a2940ee9df7ac29de3376ce787a338d98c04be61b44bd1a35cead8126a97a20c030881ccf243c3044c1c39c36982b274e13199bc446aefe3d17645e8514816bc7d55e03b9f28cf8f2f029f4e3ccc544b5b4acdb2224fa381cc63174b70115f33be471dc891b0fa8f52309f1ee51924dcda7b5d99d5dc362b785af5ee6dba6d0be3d01c59566406c6a404e39481a36bace38b5f2faf12227fce1e42d2ceb7f45d45e7af003b9f382ce7cd6dfec375c9fbc81fdfff240318b13b1684f0b483c9feb8ba90ca79683435ac1aaac9709fc4b13a49d45d708aea61453ae8c55d09062adaed170883cf84431606f619916b34a7bc28a1e7888b2204c1c55272fa87e16a73560b39bc597625da842728b38fd4968867f82b714607d7a8ed4fb5a960068a6d67d022ff68bf9be1e5139cf84339b4615d1450e971062ba9bdb517e601f84f008980c33e8a57b980122b31cfcebbcf0803078a04d0f096e35db00260d1c342c17704f7e5e8749f1f35bb1cf01a21e2abee5fb66738bf6f41d25bc51a048df4ca21da52f4d5d471cdea5691119f3463b9e5778903b4a3be7aee39e92bf33d46b953a84b0082e9491267c9016ab3776345a21c6412ddb1ad69d127301d5f654171665054c831618db1fa79288f2b61e668e7179461eacfd01862d8e8fcdd0f6838496caa43c1aa106991bd26518a251d048b77fa1ef1c052b699a12f3db5b3f3dce800aacd2da210a477f8118b20d79d18591ae38364979b595be98330fe3a4bc61e8f80398b8092170e327499aed608aab332f22278024ed4bab17211d9499cdb6c961e3edb7d3c956dd8c0bdcf8b2c735547abf58d91c2e125cec5a4439d8e3ec0ef3cbfb22878b6761d636ec952a15b06fb16486c45e1e202113560116615cbccfe7f92452ce52f47f19e21c628440ce38d4f8de63c771b38fce5754964406344c40837fcda21f5f171f2a34d5604f56c228c2500392ad62c977383d4d23e59e1661c586370dacaecbb7703fffece401e01fde91c4964faa45e73c930539e66d2edfbf3082318b4749afb47351614dc4bd28718bc47819238f57f98ab6c18f39ea18f3b45a27d1fa099b9513248421330b27d67033dc12a6e49ee7409b262eadd17f3f9345e131451fe96496d88febeced56eaef16806c6352706da52a470c01c954d6094b62ffb6633721711d3bc33110cba15252663cd81beeabd310a98734b11d5c3189786621277392f2c8a65fa2f714c2a28c476104583cd812fea599bc3b50b7b32c8c381684ba395c2f66bffd9f576eb60c986dd49589dfa1718094cf804065786c4f0f47dded110d7151ffd178a72c3ff0f8c8e4324b9067b649eb81df35caa20995642391330c5e99f7407f17d250d9e76bcdc0eb039a1fe8ea471ac21dc9400bcaf2bbecfdbfc20aa133933b1eecca0e8419f977dc718d508292e8ae4c655c4cc7513703c026334255a199c05935df8d9657949494af68d9488e59b5bf05fcc0a3114014941e053fdf83e5ae988fbe534cd373f6be27e1d8193c8c6b40bb178d01379fcb5baea355ea354f85e3d6292f5909ec7eaac388e73c2eb773a3c8b8e6df02055f51a7d5a2a2ce1fcc94530051283121f4b0dab0aeff1a8596aed1a2e8733e82731d75e0de5d5613237e1885ad7f28d4307a082b6bbeced3df0c2021bba579c695d65d15cc22dd734e0c38344e91c933038d4e3fd001490ece920e6e50a18bc0815848dd2fe847d7f308a3a8825a5749c2f98b5d83882fa5c814d7ae8c54f92df34fe61a49a1b866dec4b1de165ef1b9bab92ae1c6e82aa6fafa1b9667b9634f8da0931ea9a8f957ad0f4c536390e9f8f0378b8f270613626697336ae5f52fdcf75841095a0cd9155f92e43ec617e82bf517532a32f49617dcc1c6ad8346cb3fc44b76c0d7c8bb3193c5813c9d024295f14b0b86827b24716d5a84c643683ac9da9dcbbd01285261b785d2e1be07d335e0441992ed68065f2fcf7abd5a8c432844c730321303ee17c3948d6b4bd5b06126f23f85802a879b8c92c421c668ba64d6a5a856145ba8cf5a649663940c238f1ccce74e07adc03d1208621842e5a5c94c959038d5aa685c81b86fef8e1fa511b0ee3cbe1e84b06117014829d1d7a146eb4c596e8a817844924e7c03476610903c031e4c1dbba438684285b11c39539012f59ef4b14fb7040fd80313fe4d1ec8495f02da16af9ecda72e25f4ecc160b30b74cdf6699070e66e7f9994827c3d411ff226b6ebc24947d6b4c2b186e609081bc54bebae0d924ea708dbefd8716c6450fe7b9a31ea95c7d0bfe0f02480b882c350432a4d394c37dfdd22b30d3b83e42ab043b25dd6f424dd5220b1ce036c0e61ab6b3b7b995bed64494d0f8af5a32f93f6d564718f47bd20824b2a0c9cb184b8eacc9e33b4bf9859d49e43933731e5ba1cb26ac413a86dd8c58e9abe3b6105069b79e41fb37c7907d097df27fe3ff10efe1db718634e219e3d14f5e3366b991fcc89cf800e2c8bfb08bb05c9dd2a83848b1e27158a6a18e29e207fad8a5d29be17ccdfb08ddcc45f4096c9d9cd905efa129320d752a82c9b138c73e1c0fa6741bb6a050101f7217924be55a3b0fcbdabe37aa2189b4865b2a312d36cc23ba73cd514391411a8b05c7e2ac7494c3d7e1771543a79f30565a9c9a5f206066ccd012e5c7925c3406394996b7e7c5060cb96aaf08d2d71561840de280eeed2b3adc11cf0001f86c4f15580a5f49a59a3609032896c673a614e70bb52c30da45c1d9ac4b5bf1a98ea21d8964a7538e9e0b08e7c58e330e71dfc192686be8aec2872cb585512e45e1cd8b5eadbecd73a8988bed3c750084e87af29243da2b767752c330e0d399e6a0a9a42e263518904ded3fcbfb9ac40cc1440ff7662aac62e50be68b9f475aea5d60b3ac4c1839d3fb4299a00aff9cddf12f46bcd87840529f3784ad082e832a3d75299bb2d9b80a7906e66e8e36d0335f7b6ec2625aa50c652bfdfa6d4e22bf91b1dbec4133cede58cd31e938450a28f5511c23c23fe40a8f2a0f069b6b18355c4c4d1095bf22fa21a21d862e624f28ef8a86b5c733a0d26f8812386754d889cb9ff57eb887e5dc2cc20da0f37d09c62be6c588df130a8b4f0544648ac6ca94698556c8c878671d95f5ad931b89992c39ed565ead42addd298259831ad19a453792cf296176d9defb20c9ec3a20134ada3a5fe2b8dc396e1b7a2756b7c7802ee83428a6edcc95bcfac2ee2b21c65b33cb54a9f8507e83ae2ec65f29c0d58b6d30451d25a2e5b65fbd1afca1479125eb0457edc9d224cdea957012cb7a0be7b3ae736a10d3973733f17238385cb41905f18defbb64994f4b0ce83a401e1f9ad1076f127f21b9ec405418f8ad20a8dd0e8846c30efc18abecb0413aae728be178a29ee8d8d083c39eb1465a5a877f4e431f114b8b4c522d251f5f02e80028f30cce854080ada2abddd811db5d3e356dab8a03ece5c0425ca94dcdc5e97d63ab4eb87d8fbd9d46ccc474df2bbcb61a9156f230d0c37c5836adf67987279a178e4c084aaf6089eab084bbc13e8187545966447a67f0a59c006acb061944152befe3c2a78708c2f6c471581111e29a33762a9626bad6ae557ec977b8a22fce73d02d7bdd744177368200074bf6e76a7724cc1930838e9d772f77978281ff2eb0998e73bc0ee37a6c5c32734316232ba3fdb18a4497dc4f8ed14485d3aa96a83ce5111d1876ca2b73b49d940ff46fa5e68287ab45677fbd0deea5ac9da310c7823530a143b7cb01511e833d9d04165869581d2a43965f41bc1b7cb7630ed84909607ebc2428be101816ca55b55b85b31820ba17b054fc284e8a2d2f2355111dc9ff764a75825c51a06ec4dcecf6b226eb1c9954cb650629f61c0787ea8201f6feedd60ad579f9972a79b3d058151680839fe1bcc22c863e89215a3a3865a1b006d29d9cec88ff2f6bee90826ab221fec8b1e45a59cd1841788c51812eea8af5b9a5a4b75ba8ec5536e0067e02deeb673393ff055d0cf69ad4f90eb18f0e47ed09453f5819e5523ce6219fd0a36869c637cb176d2adb3e89fd5046cf0db3652e0bf6b4cbc6fdec0f20f0ff8389db4d5a1ed309daa80d87255b45eea6704e0385d834063483962a7fb9d40e8dc5466d441ca2213cbc95696ac31b0a7c43e99dc79f3a2ef2330edf34e181542b85720d8dd004283527d5c41156984e73998a3e076c9f1383cbf1fbafdf9c290b49d1d23e9515d0feaf73882a2b098de1ba41c57bdf821377774cbf9b546f819b2ff5c3a7f2dcb670cf7d70b8acfedec14a7c584f435b0ece65813ff526e5a24dda1f197fa4db5fed342ddc6c27567d1a1cc85dc87994076e569ce1460103d404450d060f452317013de6005a8ee1403c50f024c301f3ffffff5af5ffffffff6e0dbf6dad9bf5b7dd8a2636a52413c665af85cc18b4a6494a32252965d2f225c19d1a050000000000d9cb8c3c0104d803ea03b6c92fd3d0505b913c61d79c533ac60fa3e39538e14a21c3cc555776e366b0488d137ca0049226e0510913eea86409e7e891288119e56dfea94248d3199224244ca5142a48b7f8a12241022a69af51365ffd1e9780e408a9106a83a6ed7edf981b1223a055ea7793ec395d4d52843ae69c7afc2c2298e1d29a77a5cfffcf488f1d22922114e32baaf9a5b58544085a58fc58d22fab941007244140edb3bcae985cc7b74600b22001c2a9bff142c5be69aafc20992e7245eb7d2711f2c139af860e32a65116bfdf10b9b1ce63870818377af01761d8e8016244ceac724ccdddad40c2833b7b8eb6155eef2d33229243b283aaa49cc6d0e965651b43a28366742e8ef01eed41264202490eeca8040765d5198b495c96068f16921b282e429afce7f5b7a09114864a6c604ab14c98f6f08d9a5483e2d5b4777fd05fe193d0a08fd12b961ced926d181e90cce071fdcde223c68344069bfe24234e4ca46b6b01490cde92b2959af341e55ed17abcd5edfd14d4c85a2c60020ba0d1c5872bce9f229fcc43ee82f7d18a5bb37a6e28351a333f82639d43423cf0c18a47d62ed3b6fcb40547b4a0a1c3b938c2c72aeed37f6f6f29d5773538406387172342870f55a0362b5a1ee27ad71412a2c5472abeed94eeed93f03eed484808163c746041e38c0f54689e2cf4924c399476ec80c0c7293459e2fb99fdc3a6e8c31497ccf95eba4ebc6ab8f82805c23a9fa9a827a3ec1da9d13abac0c00729d8ef0d7923c4d56e35f818454a95e7787ae6a9d4178517a6d3baeda2875aa1703ea7e86e41a539f5f70314e9b1d87cb9ea5ddffff8849afad36f487324246487c8161f9ea8a3278b8f4e1cc49b95acd8e0e283137c0e42887fc87051c98f4d20bedf35c4dfc6325313654f4d6a5cbf4ca43234e8ac1c3e99ea60e2da97fbddf678f1181e1252638c0a74202424078e14828f4b687277632a8b9642c6125b69b98cbacb2996fda8c4bd5df7619a44cbfc2321212ef8a0443a6df688138d7b2a9f4465af1db7e6f7758392308751f9f2199f36cb9148af465f1d53cb5961482cba3779a918c4e6dd1e9125ef0dd9c9e208f91de1cf9c6ef3a021e5b5469c722fd39f1cfd6c950eef0f46e0964c939f68bc5df26311a8183c59aaf29c4fa628623759b7b193772766221821f4759c69cc69424428b3311bb3581c2bcb214cabe7b9b3780895c42b7c18a21c2c08fdea58d22ba51057c920f46acc84869310f5e9f552d7cc223a1f041e34c4de26b51f5505e1ff6e674fc994a9d7035150a7e346261d3cd3f50188ee3ef3dc2ff887c732934e9669a4ddc80fc85dd9ccacdb29aa7d58cb74b48f8d49dba97c5877ec92bafaeca1b25025f542d3ef2c7a389d5e53b9d4ca8332da41b3ea744cdde1e1a4821077d9b22ed1ce48cd72e709d70af2e91dbca4757325d72d314f8e26cbec658ef511092bd21db395efcab535ba8a65adff54cec6ce13a9625591de6233f2659a1c485261182def7fb33f57413d24a870fd35d43ac6d48fab059253684964a6c892a84a8125519142f7cf3467aa1764344946710af2b772da51f96e9488225d427cd2b69945e96405982009c57bbb7ec1fe4e75a780e268499eccdef1bb54f78984fe25950d71fe999678c2a85a3164b685fa5127544dd3db35eb1417e644e9bdbad5fd43cdd24d14439c768ccf41452c174834c17f929daca46dfa94cb849d92aed9b830269cd3d65e3163fe4c74896f6db4fb5513915822997334f5f7994afca33ca5dc3b1a53ef269050c2f9bcaab5935f6b9749b429b24d3fea2629f64a2461eaddf7cef172b75991282ce68cfacc9e363a9040d667513d11fb1cbde4117b5af1dccb6529c449e2886b2de5cf5be51d0d37028d9e4f76af84ac5e19f12865797173089552bb887d469325cf5fb6f761814411251bd38df14cc913912411ae9a7b560abf69d508438208649031888ab193b40e490ed17d5f90cf4e2989214a6396298b9ae76b37121292024921ccf4f36a1d0fa52b891066fdb48c2ddb49c63688ea845ee7e8693e620a22b56f1e6a673cf45d81b064ced95fdf02885472f9ccfb794f298de40fb5458d41644d3190f8c1fc49c6fab75f02491fcc381554569eb64d7a49f8f0c8d19636293b254b2aa243b20776535ce50fa2b474120b1c7ea3023446128f9d8008247a50d3c9fefba4ea634892875f2c7eaa65a9f2f8bf408287decadc828c4772c662dadb56d1b48ede4090dc218d317c949a6bb456edb06c075196543ca6664280457341c30c491d3e131fe4d2c9facd183aa0c1e5aa84f69a3ca5640ea8168bbd0c2653634a2207cc43feb956300ea6d5faf4494dfc55140e97e7d89c672db506ed0dbb8fda5f2571cb3addc086e6a063e3cd553c6d2868f554973baf5a336ca82dfd27ad9e25ae37c91aca9a651fcb2a5ce592a80191b5cf7ccd18923498528fcafee315426b341c3faf99274a437fb84372863f75765cd706061233f4d9e5c492d0246528f57ba9f1cf4ac8a007f9f4586e1e94501ac341fe667a8ee9426a522286e4d3627c4a6a97cf14066fdf53f435db0c0c9ffe76ee5ecb4dd57dc1ec49b56a6b4f0615f7c272eea12937051dde77a16859848666f4ccb1b9d078ac935aa3dee2be5b4006f39c9fc3e5d85d9921d182622b1bdb15b6e422c9021bcb4afa654dead7536548b0c047392d2a357fbe792557f0cd845cbab015bc3e197eaedec164525285d4994c93a1fe7a557581840a88582c0b94994e19cbad3c463385b35ccc75aebea9faf222478ff62d74209102679553492d0f523ca686240a5c2c0bf6f5f13a2c09141805581aa976314144755b294bec6ec9ccddf0627288773fb8fbb83e323144b946a809536b3a746652883ece4acc2da8586126441b6d3c657d5ecb9c9f0c62590d27be4c347cb688c1230c2eca9808c2a4353486cc9b573b2781d84d8f76e74c5a4a3513401834d347a734f5d7493976d0d062f287fe4fc5e2aa6bbe7efd50bcadad338dd1f55e1fb6a435cd67f0d261a3133e5437321b7fdb640f7cc765b98d17bd7b4df4806a4f4f614ee63edd51c1240f45d19643a63ead371e19133c18ca53b4a0ea62feb8a5c91969105eba4ee3bf537387748c79ce7c276dda01f99f92ae647e51842582491d0ebf999449fd78bd29ae43644207fbd544667fbefb9c339903e2a2c6aecaa636a3692287644cb2e265bbe2f069b61c3fc71461752f1c5231fb85ba51da62f206ff93c811d54144ca3d7080e00b1b13080941133720c494b6158b6a57511d3e9274ac7b61c68a408c323e1012f280491b3a65aef7595e6e7399b021a5ec4608d1eb50f935fc265bd3c674d5a0584a325ae5ade48b2669f83ba899a5d46723731b98a0c14b9d199438a12254ed000d1e366ee4f082060a266728e5755df8142ee2723398bdf93d68b9d327721998bba062cc4efca9870c6b6ab2acdc7f5ad31e03de5a318647510c66ac7f0e6329554e3261c8f2ef2ae66d68901d180c6affc1c35cd6780a0a265f287c7bfef12b5997a35e50eb42dab109174ab236bac688c6f86b0bb89f5ead69a8a5785a48473fa12aa9da0c31b3a0f88c8d7df6bd09e1040be5f4a1746eabfcb9c257c054752e71d1b5829a725c724dc974b453855a6c93343d3b6a979e5061af4fb24353574e6e4fe16829ffdd5b16d3734be14e42ef6509dd49c76c1410d27afbba3db8c50e0ad68ea7cffc5bbe95e1617060f2842d599cc9585c8da277c2263694c7fcbf0d93263c9fab4c5f663615222618bfcede766cf6dc25689a2ed58df4d1a534232121ef3a44788c3151c2bf3178968fab6efa4b429ac1b2375aee9ca38c0437d6dca652a1ad64cae408ccfa45379dbf89114c7b37d1ddd11b2dc2a2b1b594aacbce9b89e0c5f1bfa0628e657d4f8650d29d73f5b82995d57b2284c2f544473da929773a08f9eaf55bfb95e77681907dfeecb814622ac93f4883c64c29aa65e283d62c482ff94e7a900aed59435ff3ecd63cb092f4263bc0355b3689b33022ed890ef08fab7e1dc7724c7e0926396035ab7ef5ecc9b0e1090e36cdf41dfbeea4c46e82c90df82445e6539c6a4ed2890d107e79f4071da2efac490d506ebabb363223150809e96242834c34c7bbf4b92c99d2c064065b695cd2518dc1af890c58fb8aaf217cf6779fc4e0fe8dd70a233d45cfbfa2d0d164de126f24248486c415e924bbcec7352321213b44c058d7c147d28a6ea3c5139d0dd072809603ac544900031260c60d1e235fd808c3019505ba2c4c0104088019ec00090078ece8e1810104c0bfd81e5f84b1370e20801d3a1000020018910380a0c1d8e0a16364c70d111104809c21078e64061ebea30c4e86183870380e038090c18c1c0987e32800c8188c0d1e374676ac188c0d1e64d8e830181b3c5a0c1c3d4444100002064c4ce3cfa78be8108e64b11e2121385c870819365a6447183678e8d000c817cae961745fa7bc703e257457ce21de291b7130f6031a00e9822122cb02840b99dab0f4d85a9f947e04640bd76887c75cce717ad542712a546add6016b4d678b1944794aa110b7eab87ad38a7e45ef40aa6cb9c08f1e9649b02102bf0f39a45c45f76b86a2424e40b1d8ea341aab067e96b0f9700840aea5727df0cadbe910186c8afdf10a95123041908011619c082478f0dbc7bc05b0c0e08600b205330291cefadd975b451782f7e9c598d6f397ba080554a513e35cf88d38f60514c0f0660d100062c20813ca19041968531eef5eb26e1080a409c60f97bdc7071345eae9126a0ca378912997261f4204c70c366e6a45205ad276406c812be0f3a87ae4fb19b62204ad8b64ffb6c8c7233224812144d53ff23b251942048408dcad2b0499e8936418e604e9ace94ce5eea2b48078811f80ca5fccf432b0029c27da1dc42295399f1418890ce5976b37df0022043f832d54478ae9c55fb0c8008015d57736963e305481056f5b89af47720e8371b424b755d4ef30f102d7a499a4aba19a33ed07be672501f7b50de243627b9330f12aff4e15565846abe8336ad2a66ce900efed3d0dca1d2a91d25901cecaa374209f97ed14f1c9c925e9edd57b9ef6f700c21f4fe3a36387fc86f4d4aac411b222d9606d9212ca441294253d734c951dade026406261933c8aa8cc900912164faf4141919031203b6940abab4df685339af3877ba8aa1657145e15395bdc5542b4a3ab5b5725c543061051a2c7389937f29fe5b85c13ae690b927aac83669a84d253a28218f60928a645619bdf29a296f898b092a8e7a5fdaf4fb7696fc145a129a9bd49b9fcab129ca57ea323bf9a7b094023f9d97f2e89c435e458afcbf772e08cdff3e47a1e75e6976d29de7c58928d21b3dabf4b062298722d94189bdd2f6e976501c4be5d6e9d3153eccaa4f98f3e7946b0e16432c38269ea892e526cff1469f92a91c934e1432ea9a74e99863f59c38d6b646e9321d7f429bf884304b1edfa3ed569a28e75ce78ca922c624137e509bf36dc4c7662130c1841533a9bc1cf56a77b3c0e412dfbf7b89f68d537562094df4925af79e9183b13c42422230a944b27df6328667cce0a184a163771efbb78bc924fa8a9fe3e39d32b12490f13b850c7315e735658841011d3f89c4ab498ce7312f0b5142a252f76542c996b1e8993ca2309f9b3f541c61b08f0db2698d4c1a6192775a9a30a23421c459886bb8145dc4e12f938d5ad2f63153041feadde40895637d2e11297d62a9b9058445a893c8288ca32886822008214010c46f3a7311483058481a8c0624c2b890b4ca0f13808088e3409138108c44616118844114c3201002210cc220104d198390618c727633f3e95239b3d807b4a614e881d4dcb93e1874c15280c10d48ba69c2bd4075052e59ef0a74369576e0dfa6a935e049e2b8c9c2fa2446b67cacb8275a3994e6b7b16d83682c474bbec82b54c0c7a64f90f23f2d94876f2c811b98e93773cb79f1590e93110f121f3554f70fd2c8a2e681f98caed9db462af52419bf216c6e20ab25f6a766533504678d292f1af5f39b69ae04e00f841814504e8b7f710966c5c29392d8ce5b2fd01a4949702562172d99d471eef6c9e51540bc918e639b7381e482a7d447c23594001940fe388c17ec43e19284c6e4fb6c890f89840937de26aee98789c798004ea026042e43cb229a0465a54971e75fe1c1099dcbe67480c24334b0e02f09a63291e6a7a73aa167b3f747d997dec4ac60a14258d5a30561298abc7c7ca2e4d0014d5d3488d4ac76ec0cc9e4471948bb492ab39ddecfdfa52169d70d24c08c5770191f2da124906f8723fc08dac0414059e3af515bc900059e6442f66897f77469758479a90533213789a164324e12330e3c8e3a5eeabe023218c06554a7f3b984e87e7d8bc52ab054a507589f1024ebb48d6484c411a515231f0400d9bf234b4e324191c14bc1905447321d18f615ed490275de9380ebfbb24765bc55696e9552408c4acbe6391219e19f7f49cd7bf1dd3248b1404ed943d1ca1bc1a6173a2ab3273a36086320f79f55b408b75ac8e18e8baa10d67dae0da6c38018985ec74a2d67bc6a2c92f4a32fca3ecc138fb1b0570b5f0635d6cb2895761def4320d04572c86537fc616289d859f7e20eaf491e804ec6aea85699ea2b2868be09848b4a62283c148564dcb7faafc8e6cc1be219ab4154fee04ff164b82147f8e57d53813ec6fa459e3ce0ad9c7e907216c9bede1060109557d3050b14363ab659080121bd8292ef01bcfe5c4aeecad02eb6a58296ed599dd3828524e0491448e239ce73859bed8b881ca6dfbdbc8142172a1e6986314f39c8f785160fd971d2dffb684a9390e0ed429b8e3a64356e55ba23ff3070b6335bb5b1436cd1748c133b16d1b934f75362a52cd27d41ec20541f1595b1a8bf8e891c704db8c9e16584142a29fda0aee97c20b22be63a3fc7ca2e7ca658249ff729407bc5331e939d33fd36f4522737c9391e8c9d9ad3a4c41a4a1c621751c9ebb39685c99fa6b4dcb860d361f717862a4cd7f5a436f6f5ffe1065a1718ef06046bad3165759cb2977c7b36b324f0abeabbd42f923390899db6627784dd43cf299f26da7262c3e4adbfd9e0e2dec122674eae192a526dda704f32651d80c7991a204d467501030c80064020eed4292e71844e1301a3294794a1b17e942613dc8c529157e3acb7ee82fcd0b0d9e4268fba8fdc083fad35e496893240f667482fe0a2f117ad44e9d99966f293cd2cad181b469e339548a820acb8a0612919b017f8c0e9ea302890e19f6fa9f94b4bd5b8e3a8290b1f82861bfa38900d2e8832cb056f43c4f7c7ed7b01ebd6411355ebebe2d0c76f81b46cb1026205ea9d1086f50bd0313a305a2b950a8738976aa902bf948476299fe8650991a30f716b6f8894de4a94047c5a63a4450f2fb7673168eaca8ec3bfdfed2c64c11496974f26d1dc7a99da6e0f662ed8f596df0924cd41b170f12c3fd80db256fa98e04216795eeca4762601d4bc8d96e4945265b94108c8fe8005c91f7e90845a9e2362c4b008d63aa65e097b9017d7cbd96f80dc0eac9247491bc8ecab7dc7003070eb52c0155f823bae1a6ce7bffa2d6b8e35ac28ee445a51fa81f5cbdbe308200a3b5543e171c7c491d84f857474c88bf28b19c00853656294fdf3f79d441187b721e5793c19e62abb219ce5f42518ddb099abf32e659993aa03a3e452f8b33dfc71c7e5df7fcb7986d3049261db981b5f5d31481de6488792410755bbf0c1ab41cb3661a7878b229bf0848a59b5fdd86f74e387877eeb530e0b6d7db5bf04cc6254a4482c67770226ee594d2bc8d1442a1f16387bdeced8e6ebe503303fb0de3639d0d707251f51cce827c0f30a9d5224037e602e03f6f690b2a38efd9027b017322a12f058c9023085497b64ff71665108aa4d44c8159a9f2fce72164d2ded2fda4fbf8cc3d63f8468c20bea0d932d5f86c6df29de575af76105723eb264b061a7118a2d1cd50a8732b73ff9dd639d0d72fb8dfa15d1d050ff0dabd3e69d796c97ef325d7ecf9ea6f387b41ea12230b7af6ef8a4d9b70166d2d2e38cec3280fc1e72ffe5519e2013e39565f755f2a2e9c39b37c464902620f8ad5710f68021a84d90ccfe225684507709a28a53f22c195c5996c4ce10ef432e80aacaed6ddb1326e13cfb75f2630813801e130658421d0499d1a8e4e27e209459dd67dd81adf6ab460c3da1859107ec2d9ecad5250192ce1e87c9fcfae26b5cb91267a3d877211e755622da1658c4a801e1c1238c6739a17d66bf9c64a536ee518567bbd62c2eba37c7e83e52fe6d8f356dc244711a754702ffd18634c4f3057e7d17fc3d815fa5beae5c173ea083b01568eaf1f4ced963975f1d35b69e5608189a28d44e386503abda1684b4a71d7ec30739b2637ceaaedd4cf4b3d778f5d3ce85cf517e4338cd50d9d43a1bfe139abc3345e9050b20d71044d76083a6ea1f1a237e9d5488fa2848aa9351367c6628f2c2fef8e1c4a5be220c6e2a7f13c186a4255d08a707068055211726611a35211be3ed96c6bded4b074f33ba961a52252705e07ede8d60d1ea2fdec6f902d60eb7a256e819e587a43bef8c23eca3dfa8158a19bc1158f42f1ad4efbd33b296bf535adfba2dfa4a6aeeb114d47b75eca42052baca7b9a58a3367f10fe099f04fe1bbe3d06ef0cfaac98f52f54508ec2a9b4e5cd504a795d8f585e53de5caa0198a97642b7ae38b1eb69d03bf3c8a5106c5c56dbe710e170b2f649f3f58ceb45206a1b67cfae6738926145355193353962cfb4dad15af002418d06a1bf8d2c5524398e588af641d609c1543d8c4c8256fcc196efb30556678ad5fe407234ee11038e49ab24faa1e3172546c159eb7f2d4e642735a470a004589c44516a41eecae55f80b1aa872b5b5601d687998211741cd161517f28f12ca6e199a0e720dad0e6ac0b92fae6e5c35e35817c86c983562bf24c47629872a95c9665da613c4b2b762753beda118b84450e5161afe34b563d03a9de173216ca94f8ccd8024fb56a7681e5a289c2f83aa83eef7d8171aba851f59df96894abfc844eea3c490ac04a6b27f1cd7f7a1e71b9dcccb0c7ac6b2ff78cf667a90c3940fd48731e6cb44ba18b2a1a8c25505679680effd00f800f815b32aa4eae3a3d76e8463130f9167639484a24bc6df9e05854892828497f4d93ff175398b30cb058ed23db3bda2faea210b40861144ee862b2465ee47611888120560ea5363a560b77085efa7334d662c207fc157666bbf26a411b695cdea5a1bd7c5e3d54e249ac6592c91b16734208673bc355a64f5fa550e8cab996f54b22d3efd1a9c9d9796dbe71eb0da8f8757da36eca8a21452f3496482dd291d6989837d8fe0c71031cc7895d284648a3a6b99a964e3c6d8c78f83a91e70bb4b4752eb2d78121cecf89229324803408a217f39f99a8a0ac208e98cb775743878afcdc8125217cb2a84a7a38757d1fa405f26cd007bba6a5a9119397f6912e33a361316ffa2148b8125d59784c57890c0aa9f854085d908c807d34ad92819814e8367a8ff03e1d40a12fbc91adb7c27e76e070910188c92966c466510a1e2952a2c90c67922dbbe3fd3820eb7b46970c3f3a5a23b24a934b98a2958bc3df07a690e7a205599bc91c55b491e173d938e1b919975dfb17111f61525b640925543e9122d80a165260ce5c63338800106df9b0cb29422b1f0de5cfbf7a895e2a930e71b4f4d990c3b8bfde4a5519f5774eb03914887733100c7168f3fbdd7dde455db9a9a434c81a638f5db6d2376b05d66188bb2fff590d14b4ca8aa5facf6c2b5b274020e005865a36895446a8a987ff5315b4046829c5224d8033a40d2c4145a6a04342a80eb22654ed2ab83d9ce10cde48f9229252c5b7d2098ca6e5467cd97232f2825e494ac9e55e983df8c7c8e5dc3cf861a40959e4c19e5ad98f949453aa778859e43439328e914422f0a5b4fe234b03c5612d9080b745ad2333a2c4c874e6f68b512e7d1d7336e94707e810650da4a0a60d8d515d99d956dedda9a521a49141f332f21bbf03e9fe52fc0021ff79ed3fec5fd93fccbf6880fd5c9cfdc06c86ca4b0d47d7fc919f809ae03537ca962ee628c6015905d72db79027ebd116e367e0b9567c99e362edcd45cb354f1d76e361d69ff0f6008370a08b6c995c8180a76b187ba4698d99c1ac8319c2845960389884db891559f0d0cdb89dab77bcaafb9320753e98e0316b36f50cd6218e0f859f8a58af3ecdf885301b6a2409", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47" + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x3a65787472696e7369635f696e646578": "0x00000000" }, "childrenDefault": {} } From 5f44560aaf93c8c2478280b9b5ddc1955eba412f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 1 Oct 2021 11:55:22 +0200 Subject: [PATCH 111/138] Remove incorrect proof about Jemalloc (#3982) * Remove incorrect proof about Jemalloc The truth is that Jemalloc is not always the default allocator. This is only true for the polkadot binary. * Fmt * Rephrase --- node/overseer/src/lib.rs | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 331bf6378dda..961e1e659f42 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -518,18 +518,36 @@ where } let subsystem_meters = overseer.map_subsystems(ExtractNameAndMeters); - let memory_stats = - MemoryAllocationTracker::new().expect("Jemalloc is the default allocator. qed"); - - let metronome = Metronome::new(std::time::Duration::from_millis(950)).for_each(move |_| { - 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); + 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(|_| {}) }, + }; - Err(e) => tracing::debug!(target: LOG_TARGET, "Failed to obtain memory stats: {:?}", e), - } + 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 From 9ee47759425f106fdb9534861d983e8bfa0764e4 Mon Sep 17 00:00:00 2001 From: radupopa2010 Date: Fri, 1 Oct 2021 16:48:25 +0200 Subject: [PATCH 112/138] add polkadot-simnet runner (#3985) --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 15e69605cd8c..01aed3c06ce3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -576,4 +576,4 @@ simnet-tests: allow_failure: true retry: 2 tags: - - parity-simnet + - polkadot-simnet From cd7b3da37e0aecc3173121696b25b69b4d5d3ae4 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Fri, 1 Oct 2021 19:33:39 +0200 Subject: [PATCH 113/138] av-store: clean up StoreAvailableData message (#3984) * av-store: clean up StoreAvailableData message * fmt * use named fields --- node/core/av-store/src/lib.rs | 9 ++-- node/core/av-store/src/tests.rs | 51 +++++++++----------- node/core/backing/src/lib.rs | 21 ++------ node/core/backing/src/tests.rs | 8 +-- node/core/dispute-participation/src/lib.rs | 9 ++-- node/core/dispute-participation/src/tests.rs | 8 +-- node/subsystem-types/src/messages.rs | 20 ++++---- 7 files changed, 49 insertions(+), 77 deletions(-) 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/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/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/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index 9afdbc0fcad3..c6fb92736c51 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -486,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 { From 14de1c1c951af37c6dd044bc8c123b7c26597d81 Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Fri, 1 Oct 2021 21:46:47 +0200 Subject: [PATCH 114/138] add logs to relay chain selection (#3990) * add logs to relay chain selection * use tracing features * more log --- node/service/src/relay_chain_selection.rs | 46 +++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/node/service/src/relay_chain_selection.rs b/node/service/src/relay_chain_selection.rs index 9635878182fd..31d878218e8f 100644 --- a/node/service/src/relay_chain_selection.rs +++ b/node/service/src/relay_chain_selection.rs @@ -136,6 +136,11 @@ where /// Create a new [`SelectRelayChain`] wrapping the given chain backend /// and a handle to the overseer. 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), @@ -284,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. @@ -301,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) } @@ -320,6 +332,7 @@ where maybe_max_number: Option, ) -> 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(); @@ -335,12 +348,15 @@ 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(target_hash), Some(best) => best, } } else { + tracing::trace!(target: LOG_TARGET, ?best_leaf, "Dummy disputes active"); if best_leaf == target_hash { return Ok(target_hash) } else { @@ -369,6 +385,7 @@ where 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, _) = @@ -378,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 } }, @@ -409,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); @@ -451,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 @@ -458,6 +491,7 @@ 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(target_hash) } else { @@ -470,6 +504,12 @@ where ) .map_err(|e| ConsensusError::ChainLookup(format!("{:?}", e)))?; + tracing::warn!( + target: LOG_TARGET, + ?forced_target, + "Safeguard enforced finalization of child" + ); + Ok(forced_target) } } else { From fae4bfa29e86fe06102f517f4b6842eccf4f9ef7 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 1 Oct 2021 22:24:35 +0200 Subject: [PATCH 115/138] Fix an off-by-one: revert rather than revert-to (#3991) * fix off-by-one in disputes reversion code * bump Rococo spec version --- .../implementers-guide/src/runtime/disputes.md | 3 ++- runtime/parachains/src/disputes.rs | 17 +++++++++++------ runtime/rococo/src/lib.rs | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/roadmap/implementers-guide/src/runtime/disputes.md b/roadmap/implementers-guide/src/runtime/disputes.md index 9ccf3a3923f8..83ca86b36b04 100644 --- a/roadmap/implementers-guide/src/runtime/disputes.md +++ b/roadmap/implementers-guide/src/runtime/disputes.md @@ -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/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index b63305efb27a..1ec5515667fb 100644 --- a/runtime/parachains/src/disputes.rs +++ b/runtime/parachains/src/disputes.rs @@ -304,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), } @@ -1127,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(), ); } } @@ -2284,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()); }) } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 8033a2d580d2..b3f96fbc1c63 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -105,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: 9104, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, From 965fc579abe5b944f7b268a423457a053ffd32ba Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 1 Oct 2021 23:32:27 +0200 Subject: [PATCH 116/138] add disputes call to Rococo (#3993) --- runtime/rococo/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index b3f96fbc1c63..38431246bb5b 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -212,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}, From 6ebb700c30c262405e2d38b1208e9c7fc854ddf1 Mon Sep 17 00:00:00 2001 From: Gavin Wood Date: Sat, 2 Oct 2021 00:14:13 +0200 Subject: [PATCH 117/138] Tidy up XCM errors in preparation for v2. (#3988) * Tidy up XCM errors * Tidy up errors * Re-order * Fixes * Formatting * map undefined errors * add functor to dictionary Co-authored-by: Shawn Tabrizi --- scripts/gitlab/lingua.dic | 1 + xcm/pallet-xcm/src/lib.rs | 1 + xcm/pallet-xcm/src/tests.rs | 10 +- xcm/src/v2/mod.rs | 2 +- xcm/src/v2/traits.rs | 132 +++++++++--------- xcm/xcm-executor/integration-tests/src/lib.rs | 10 +- xcm/xcm-executor/src/lib.rs | 13 +- 7 files changed, 85 insertions(+), 84 deletions(-) diff --git a/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index 68001b64a4e2..a32366d63ee6 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -304,3 +304,4 @@ yml decrement DM ParaId +functor diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index d89b306f085b..0252e22cf450 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -1098,6 +1098,7 @@ pub mod pallet { Ok(()) } } + impl DropAssets for Pallet { fn drop_assets(origin: &MultiLocation, assets: Assets) -> Weight { if assets.is_empty() { 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/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 d2d994124d38..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 { 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/lib.rs b/xcm/xcm-executor/src/lib.rs index f46963f6fbcd..f252b2e7e3a3 100644 --- a/xcm/xcm-executor/src/lib.rs +++ b/xcm/xcm-executor/src/lib.rs @@ -270,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) @@ -345,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(()) @@ -413,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; From fb74ac6ac6e8a9b67599b3d901912f36b37216f6 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 2 Oct 2021 01:59:07 +0200 Subject: [PATCH 118/138] always broadcast tranche 0 assignments and add a delay before approval (#3904) * always broadcast tranche 0 assignments * guide: require fixed approval delay * prevent approval by very recent assignments * fix approval-checking tests * fix main approval tests --- .../approval-voting/src/approval_checking.rs | 201 +++++++++----- node/core/approval-voting/src/lib.rs | 25 +- node/core/approval-voting/src/tests.rs | 245 ++++++++++++++++-- .../src/node/approval/approval-voting.md | 14 +- 4 files changed, 390 insertions(+), 95 deletions(-) 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/lib.rs b/node/core/approval-voting/src/lib.rs index b7588710b1a3..90c61bf4a057 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 @@ -1399,13 +1400,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 +1595,7 @@ fn check_and_import_assignment( block_entry.block_number(), assigned_candidate_hash, status.block_tick, + tick_now, status.required_tranches, )); } @@ -1790,6 +1800,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 +1811,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 +1879,7 @@ fn advance_approval_state( block_number, candidate_hash, status.block_tick, + tick_now, status.required_tranches, )); @@ -1893,6 +1909,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 +1917,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 fe0725384ba7..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() } @@ -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/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 From 62bc0218a299a0d4d2f86abe2e65d7596742fe12 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Sat, 2 Oct 2021 15:40:56 +0200 Subject: [PATCH 119/138] some tweaks to rococo-local (#3996) * some tweaks to rococo-local * rococo-local, not staging --- node/service/src/chain_spec.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 2bd96390c801..b7b8c5a44498 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -1558,7 +1558,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![] }, @@ -1820,13 +1823,18 @@ pub fn westend_local_testnet_config() -> Result { fn rococo_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, ) } -/// Rococo local testnet config (multivalidator Alice + Bob) +/// Rococo local testnet config (multivalidator Alice + Bob + Charlie + Dave) #[cfg(feature = "rococo-native")] pub fn rococo_local_testnet_config() -> Result { let wasm_binary = rococo::WASM_BINARY.ok_or("Rococo development wasm not available")?; From d070d5516174ebda4ce434b57906eb8bdb6ef6ea Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 2 Oct 2021 19:01:53 +0200 Subject: [PATCH 120/138] preserve finalized block in active leaves (#3997) --- node/overseer/src/lib.rs | 4 +- node/overseer/src/tests.rs | 97 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 961e1e659f42..3a1e5a31458d 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -674,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/tests.rs b/node/overseer/src/tests.rs index 2ab2e01afe96..39eb91e0f6d6 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -574,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(); From 8e7486b55d0d91387488edfc9671947735bf366c Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Sun, 3 Oct 2021 13:09:53 +0200 Subject: [PATCH 121/138] avoid expect, on free availability core (#3994) * MVP fix * bump spec version rococo * fmt * better var names * remove duplicate desc * expand comment --- runtime/parachains/src/inclusion.rs | 36 +++++++++++++++++++---------- runtime/rococo/src/lib.rs | 2 +- 2 files changed, 25 insertions(+), 13 deletions(-) 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/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 38431246bb5b..944455553b66 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -105,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: 9104, + spec_version: 9105, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, From 2bc4b5e9d04c9c22e3a75dcec714643aabe876b7 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 3 Oct 2021 13:10:24 +0200 Subject: [PATCH 122/138] ignore irrelevant approvals in logs (#3859) * ignore irrelevant approvals in logs * fix --- node/core/approval-voting/src/lib.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index 90c61bf4a057..985cc9d6c541 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -1288,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, From 0ac4141331d44f60726a243c392bfea640980da2 Mon Sep 17 00:00:00 2001 From: Andronik Ordian Date: Sun, 3 Oct 2021 13:26:32 +0200 Subject: [PATCH 123/138] change genesis authority set for wococo-local, revert rococo-local (#3998) --- node/service/src/chain_spec.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index b7b8c5a44498..502c9dbf7217 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -1823,18 +1823,13 @@ pub fn westend_local_testnet_config() -> Result { fn rococo_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"), - get_authority_keys_from_seed("Charlie"), - get_authority_keys_from_seed("Dave"), - ], + vec![get_authority_keys_from_seed("Alice"), get_authority_keys_from_seed("Bob")], get_account_id_from_seed::("Alice"), None, ) } -/// Rococo local testnet config (multivalidator Alice + Bob + Charlie + Dave) +/// Rococo local testnet config (multivalidator Alice + Bob) #[cfg(feature = "rococo-native")] pub fn rococo_local_testnet_config() -> Result { let wasm_binary = rococo::WASM_BINARY.ok_or("Rococo development wasm not available")?; @@ -1856,18 +1851,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")?; From 7acc76cfed3ddb7953be43c319c22edcaf8088d5 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 3 Oct 2021 18:20:39 +0200 Subject: [PATCH 124/138] bump substrate (#4000) --- Cargo.lock | 322 ++++++++++++++++++++++++++--------------------------- 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c37343a4c21..51fa82909102 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -461,7 +461,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "beefy-primitives", "fnv", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -1918,7 +1918,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", ] @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -1956,7 +1956,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "Inflector", "chrono", @@ -1982,7 +1982,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -2024,7 +2024,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,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#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "chrono", "frame-election-provider-support", @@ -4595,7 +4595,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4609,7 +4609,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -4625,7 +4625,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -4640,7 +4640,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4664,7 +4664,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4684,7 +4684,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4699,7 +4699,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "beefy-primitives", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4740,7 +4740,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4842,7 +4842,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4858,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#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4882,7 +4882,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4900,7 +4900,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4915,7 +4915,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4954,7 +4954,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4974,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -4991,7 +4991,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5008,7 +5008,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5026,7 +5026,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5074,7 +5074,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5105,7 +5105,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5128,7 +5128,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5143,7 +5143,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5157,7 +5157,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5173,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5194,7 +5194,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5210,7 +5210,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5224,7 +5224,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5247,7 +5247,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "log", "sp-arithmetic", @@ -5267,7 +5267,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5281,7 +5281,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5299,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5318,7 +5318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-support", "frame-system", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5352,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#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5380,7 +5380,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -5396,7 +5396,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-benchmarking", "frame-support", @@ -7793,7 +7793,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8056,7 +8056,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "log", "sp-core", @@ -8067,7 +8067,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "derive_more", @@ -8094,7 +8094,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8117,7 +8117,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8133,7 +8133,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8149,7 +8149,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8160,7 +8160,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "chrono", "fdlimit", @@ -8198,7 +8198,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "fnv", "futures 0.3.17", @@ -8226,7 +8226,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "hash-db", "kvdb", @@ -8251,7 +8251,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "futures 0.3.17", @@ -8275,7 +8275,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "derive_more", @@ -8318,7 +8318,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "derive_more", "futures 0.3.17", @@ -8342,7 +8342,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8355,7 +8355,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "assert_matches", "async-trait", @@ -8389,7 +8389,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "futures 0.3.17", @@ -8415,7 +8415,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "sc-client-api", "sp-authorship", @@ -8426,7 +8426,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8452,7 +8452,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "derive_more", "environmental", @@ -8470,7 +8470,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "log", "parity-scale-codec", @@ -8486,7 +8486,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8504,7 +8504,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "derive_more", @@ -8541,7 +8541,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "derive_more", "finality-grandpa", @@ -8565,7 +8565,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8582,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "derive_more", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "hash-db", "parity-scale-codec", @@ -8615,7 +8615,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-std", "async-trait", @@ -8666,7 +8666,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8682,7 +8682,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "bytes 1.0.1", "fnv", @@ -8709,7 +8709,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "libp2p", @@ -8722,7 +8722,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8731,7 +8731,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "hash-db", @@ -8762,7 +8762,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8787,7 +8787,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8804,7 +8804,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "directories", @@ -8869,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "log", "parity-scale-codec", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8905,7 +8905,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "chrono", "futures 0.3.17", @@ -8923,7 +8923,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8952,7 +8952,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8963,7 +8963,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "intervalier", @@ -8990,7 +8990,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "derive_more", "futures 0.3.17", @@ -9004,7 +9004,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9456,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "hash-db", "log", @@ -9473,7 +9473,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9485,7 +9485,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "integer-sqrt", "num-traits", @@ -9513,7 +9513,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -9526,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "parity-scale-codec", @@ -9538,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "sp-api", @@ -9550,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "log", @@ -9568,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "futures 0.3.17", @@ -9587,7 +9587,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "merlin", @@ -9610,7 +9610,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -9621,7 +9621,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9633,7 +9633,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "base58", "blake2-rfc", @@ -9678,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro2", "quote", @@ -9697,7 +9697,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "environmental", "parity-scale-codec", @@ -9708,7 +9708,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "finality-grandpa", "log", @@ -9726,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9740,7 +9740,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "hash-db", @@ -9764,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "lazy_static", "sp-core", @@ -9775,7 +9775,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "derive_more", @@ -9792,7 +9792,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "zstd", ] @@ -9800,7 +9800,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -9815,7 +9815,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "sp-api", "sp-core", @@ -9836,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "backtrace", ] @@ -9844,7 +9844,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "rustc-hash", "serde", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "either", "hash256-std-hasher", @@ -9876,7 +9876,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9893,7 +9893,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9905,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "serde", "serde_json", @@ -9914,7 +9914,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -9928,7 +9928,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "scale-info", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "hash-db", "log", @@ -9962,12 +9962,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9980,7 +9980,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "log", "sp-core", @@ -9993,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10009,7 +10009,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "erased-serde", "log", @@ -10027,7 +10027,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "sp-api", "sp-runtime", @@ -10036,7 +10036,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "log", @@ -10052,7 +10052,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "hash-db", "memory-db", @@ -10067,7 +10067,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10083,7 +10083,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10094,7 +10094,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10290,7 +10290,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "platforms", ] @@ -10298,7 +10298,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10320,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-std", "derive_more", @@ -10334,7 +10334,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "async-trait", "futures 0.3.17", @@ -10361,7 +10361,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10371,7 +10371,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10382,7 +10382,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10535,7 +10535,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "frame-system", "futures 0.3.17", @@ -10975,7 +10975,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" dependencies = [ "jsonrpsee-ws-client", "log", From 9e4ee69a00f974d99e06a836f0cf808d73dedf4d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 3 Oct 2021 18:28:02 +0200 Subject: [PATCH 125/138] Remove unoccupied bit check (#3999) * remove the check for unoccupied bitfields * bump rococo version * fix warning about occupied bitmask --- runtime/parachains/src/inclusion.rs | 16 ---------------- runtime/rococo/src/lib.rs | 2 +- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs index 5240b99bbe3d..1c37bce3bd27 100644 --- a/runtime/parachains/src/inclusion.rs +++ b/runtime/parachains/src/inclusion.rs @@ -170,8 +170,6 @@ pub mod pallet { NewCodeTooLarge, /// Candidate not in parent context. CandidateNotInParentContext, - /// The bitfield contains a bit relating to an unassigned availability core. - UnoccupiedBitInBitfield, /// Invalid group index in core assignment. InvalidGroupIndex, /// Insufficient (non-majority) backing. @@ -265,14 +263,6 @@ impl Pallet { // 3. each bitfield has exactly `expected_bits` // 4. signature is valid. let signed_bitfields = { - let occupied_bitmask: BitVec = assigned_paras_record - .iter() - .map(|p| { - p.as_ref() - .map_or(false, |(_id, pending_availability)| pending_availability.is_some()) - }) - .collect(); - let mut last_index = None; let signing_context = SigningContext { @@ -299,12 +289,6 @@ impl Pallet { Error::::ValidatorIndexOutOfBounds, ); - ensure!( - occupied_bitmask.clone() & unchecked_bitfield.unchecked_payload().0.clone() == - unchecked_bitfield.unchecked_payload().0, - Error::::UnoccupiedBitInBitfield, - ); - let validator_public = &validators[unchecked_bitfield.unchecked_validator_index().0 as usize]; diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 944455553b66..900d53150ef6 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -105,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: 9105, + spec_version: 9106, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, From 7beea9ff1e2f8b634bed07b3386ebefef771ec66 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 3 Oct 2021 21:41:06 +0200 Subject: [PATCH 126/138] fix clock drift for assignments issued before the block (#3851) * fix clock drift for assignments issued before the block * always broadcast tranche 0 assignments * Update tests * Change from min to max * Remove erronious print statement * guide: require fixed approval delay * prevent approval by very recent assignments * fix approval-checking tests * fix main approval tests * Fix tests * Fix looked over test * fix test Co-authored-by: Lldenaurois --- .../approval-voting/src/approval_checking.rs | 41 ++++++++++++------- node/core/approval-voting/src/tests.rs | 25 ++++++----- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/node/core/approval-voting/src/approval_checking.rs b/node/core/approval-voting/src/approval_checking.rs index 644d820f38e5..d681e67eb853 100644 --- a/node/core/approval-voting/src/approval_checking.rs +++ b/node/core/approval-voting/src/approval_checking.rs @@ -315,6 +315,11 @@ fn filled_tranche_iterator<'a>( /// and tick parameters. This method also returns the next tick at which a `no_show` will occur /// amongst the set of validators that have not submitted an approval. /// +/// This also bounds the earliest tick of all assignments to be equal to the +/// block tick for the purposes of the calculation, so no assignment can be treated +/// as being received before the block itself. This is unlikely if not impossible +/// in practice, but can occur during test code. +/// /// If the returned `next_no_show` is not None, there are two possible cases for the value of /// based on the earliest assignment `tick` of a non-approving, yet-to-be-no-show validator: /// - if `tick` <= `clock_drift`: the value will always be `clock_drift` + `no_show_duration`. @@ -323,13 +328,16 @@ fn count_no_shows( assignments: &[(ValidatorIndex, Tick)], approvals: &BitSlice, clock_drift: Tick, + block_tick: Tick, no_show_duration: Tick, drifted_tick_now: Tick, ) -> (usize, Option) { let mut next_no_show = None; let no_shows = assignments .iter() - .map(|(v_index, tick)| (v_index, tick.saturating_sub(clock_drift) + no_show_duration)) + .map(|(v_index, tick)| { + (v_index, tick.max(&block_tick).saturating_sub(clock_drift) + no_show_duration) + }) .filter(|&(v_index, no_show_at)| { let has_approved = if let Some(approved) = approvals.get(v_index.0 as usize) { *approved @@ -418,6 +426,7 @@ pub fn tranches_to_approve( assignments, approvals, clock_drift, + block_tick, no_show_duration, drifted_tick_now, ); @@ -635,7 +644,7 @@ mod tests { #[test] fn tranches_to_approve_everyone_present() { - let block_tick = 0; + let block_tick = 20; let no_show_duration = 10; let needed_approvals = 4; @@ -672,7 +681,7 @@ mod tests { needed: 1, tolerated_missing: 0, next_no_show: None, - last_assignment_tick: Some(1) + last_assignment_tick: Some(21) }, ); } @@ -1127,6 +1136,7 @@ mod tests { fn test_count_no_shows(test: NoShowTest) { let n_validators = 4; + let block_tick = 20; let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators]; for &v_index in &test.approvals { @@ -1137,6 +1147,7 @@ mod tests { &test.assignments, &approvals, test.clock_drift, + block_tick, test.no_show_duration, test.drifted_tick_now, ); @@ -1160,13 +1171,13 @@ mod tests { #[test] fn count_no_shows_single_validator_is_next_no_show() { test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 21)], + assignments: vec![(ValidatorIndex(1), 31)], approvals: vec![], clock_drift: 10, no_show_duration: 10, drifted_tick_now: 20, exp_no_shows: 0, - exp_next_no_show: Some(31), + exp_next_no_show: Some(41), }) } @@ -1199,26 +1210,26 @@ mod tests { #[test] fn count_no_shows_two_validators_next_no_show_ordered_first() { test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 21), (ValidatorIndex(2), 22)], + assignments: vec![(ValidatorIndex(1), 31), (ValidatorIndex(2), 32)], approvals: vec![], clock_drift: 10, no_show_duration: 10, drifted_tick_now: 20, exp_no_shows: 0, - exp_next_no_show: Some(31), + exp_next_no_show: Some(41), }) } #[test] fn count_no_shows_two_validators_next_no_show_ordered_last() { test_count_no_shows(NoShowTest { - assignments: vec![(ValidatorIndex(1), 22), (ValidatorIndex(2), 21)], + assignments: vec![(ValidatorIndex(1), 32), (ValidatorIndex(2), 31)], approvals: vec![], clock_drift: 10, no_show_duration: 10, drifted_tick_now: 20, exp_no_shows: 0, - exp_next_no_show: Some(31), + exp_next_no_show: Some(41), }) } @@ -1226,16 +1237,16 @@ mod tests { fn count_no_shows_three_validators_one_almost_late_one_no_show_one_approving() { test_count_no_shows(NoShowTest { assignments: vec![ - (ValidatorIndex(1), 21), - (ValidatorIndex(2), 20), - (ValidatorIndex(3), 20), + (ValidatorIndex(1), 31), + (ValidatorIndex(2), 19), + (ValidatorIndex(3), 19), ], approvals: vec![3], clock_drift: 10, no_show_duration: 10, drifted_tick_now: 20, exp_no_shows: 1, - exp_next_no_show: Some(31), + exp_next_no_show: Some(41), }) } @@ -1282,7 +1293,7 @@ mod tests { no_show_duration: 20, drifted_tick_now: 0, exp_no_shows: 0, - exp_next_no_show: Some(30), + exp_next_no_show: Some(40), }) } @@ -1295,7 +1306,7 @@ mod tests { no_show_duration: 20, drifted_tick_now: 0, exp_no_shows: 0, - exp_next_no_show: Some(30), + exp_next_no_show: Some(40), }) } diff --git a/node/core/approval-voting/src/tests.rs b/node/core/approval-voting/src/tests.rs index 2582db301a60..af821039324f 100644 --- a/node/core/approval-voting/src/tests.rs +++ b/node/core/approval-voting/src/tests.rs @@ -1609,7 +1609,7 @@ fn subsystem_process_wakeup_schedules_wakeup() { futures_timer::Delay::new(Duration::from_millis(100)).await; // The wakeup should have been rescheduled. - assert!(clock.inner.lock().current_wakeup_is(20)); + assert!(clock.inner.lock().current_wakeup_is(30)); virtual_overseer }); @@ -2234,8 +2234,8 @@ fn subsystem_process_wakeup_trigger_assignment_launch_approval() { futures_timer::Delay::new(Duration::from_millis(200)).await; - assert!(clock.inner.lock().current_wakeup_is(slot_to_tick(slot + 1))); - clock.inner.lock().wakeup_all(slot_to_tick(slot + 1)); + assert!(clock.inner.lock().current_wakeup_is(slot_to_tick(slot + 2))); + clock.inner.lock().wakeup_all(slot_to_tick(slot + 2)); assert_matches!( overseer_recv(&mut virtual_overseer).await, @@ -2467,7 +2467,7 @@ fn subsystem_assignment_triggered_by_all_with_less_than_threshold() { approvals_to_import: vec![2, 4], ticks: vec![ 2, // APPROVAL_DELAY - 20, // Check for no shows + 21, // Check for no shows ], should_be_triggered: |t| t == 20, }); @@ -2483,7 +2483,7 @@ fn subsystem_assignment_not_triggered_by_all_with_threshold() { approvals_to_import: vec![1, 3, 5], ticks: vec![ 2, // APPROVAL_DELAY - 20, // Check no shows + 21, // Check no shows ], should_be_triggered: |_| false, }); @@ -2498,8 +2498,8 @@ fn subsystem_assignment_triggered_if_below_maximum_and_clock_is_equal() { assignments_to_import: vec![1], approvals_to_import: vec![], ticks: vec![ - 20, // Check no shows - 21, // Alice wakeup, assignment triggered + 21, // Check no shows + 23, // Alice wakeup, assignment triggered ], should_be_triggered: |tick| tick >= 21, }); @@ -2516,7 +2516,7 @@ fn subsystem_assignment_not_triggered_more_than_maximum() { ticks: vec![ 2, // APPROVAL_DELAY 13, // Alice wakeup - 20, // Check no shows + 30, // Check no shows ], should_be_triggered: |_| false, }); @@ -2524,16 +2524,15 @@ fn subsystem_assignment_not_triggered_more_than_maximum() { #[test] fn subsystem_assignment_triggered_if_at_maximum() { - // TODO(ladi): is this possible? triggers_assignment_test(TriggersAssignmentConfig { - our_assigned_tranche: 11, + our_assigned_tranche: 21, assign_validator_tranche: |_| Ok(2), no_show_slots: 2, assignments_to_import: vec![1], approvals_to_import: vec![], ticks: vec![ 12, // Bob wakeup - 20, // Check no shows + 30, // Check no shows ], should_be_triggered: |_| false, }); @@ -2583,7 +2582,7 @@ fn subsystem_assignment_not_triggered_if_at_maximum_but_clock_is_before_with_dri 12, // Charlie wakeup 13, // Dave wakeup 15, // Alice wakeup, noop - 20, // Check no shows + 30, // Check no shows 34, // Eve wakeup ], should_be_triggered: |_| false, @@ -2755,7 +2754,7 @@ fn pre_covers_dont_stall_approval() { // Wait for the no-show timer to observe the approval from // tranche 0 and set a wakeup for tranche 1. - clock.inner.lock().set_tick(20); + clock.inner.lock().set_tick(30); // Sleep to ensure we get a consistent read on the database. futures_timer::Delay::new(Duration::from_millis(100)).await; From 0bfcb7ad1860ffd92278e9570824cee76d4d7888 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Oct 2021 23:11:24 +0200 Subject: [PATCH 127/138] Bump jsonrpsee-ws-client from 0.3.0 to 0.3.1 (#3931) Bumps [jsonrpsee-ws-client](https://github.com/paritytech/jsonrpsee) from 0.3.0 to 0.3.1. - [Release notes](https://github.com/paritytech/jsonrpsee/releases) - [Changelog](https://github.com/paritytech/jsonrpsee/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/jsonrpsee/compare/v0.3.0...v0.3.1) --- updated-dependencies: - dependency-name: jsonrpsee-ws-client dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- utils/staking-miner/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 51fa82909102..59d46b7b8c3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3067,9 +3067,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d67724d368c59e08b557a516cf8fcc51100e7a708850f502e1044b151fe89788" +checksum = "4cc738fd55b676ada3271ef7c383a14a0867a2a88b0fa941311bf5fc0a29d498" dependencies = [ "async-trait", "beef", @@ -3085,9 +3085,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2834b6e7f57ce9a4412ed4d6dc95125d2c8612e68f86b9d9a07369164e4198" +checksum = "9841352dbecf4c2ed5dc71698df9f1660262ae4e0b610e968602529bdbcf7b30" dependencies = [ "async-trait", "fnv", diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index 296240a705d3..593d1a1bf2cd 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -10,7 +10,7 @@ tokio = { version = "1.12", features = ["macros"] } log = "0.4.11" env_logger = "0.9.0" structopt = "0.3.23" -jsonrpsee-ws-client = { version = "0.3.0", default-features = false, features = ["tokio1"] } +jsonrpsee-ws-client = { version = "0.3.1", default-features = false, features = ["tokio1"] } serde_json = "1.0" serde = "1.0.130" paste = "1.0.5" From f95180714fa0c3413214c16700fc2d1d4eaad892 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Oct 2021 11:54:09 +0200 Subject: [PATCH 128/138] Bump syn from 1.0.77 to 1.0.78 (#4006) Bumps [syn](https://github.com/dtolnay/syn) from 1.0.77 to 1.0.78. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/1.0.77...1.0.78) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/overseer/overseer-gen/proc-macro/Cargo.toml | 2 +- xcm/procedural/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 59d46b7b8c3a..bf94de083777 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10408,9 +10408,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.77" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0" +checksum = "a4eac2e6c19f5c3abc0c229bea31ff0b9b091c7b14990e8924b92902a303a0c0" dependencies = [ "proc-macro2", "quote", diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index aa972b0e6a56..9495fb5a8678 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -12,7 +12,7 @@ targets = ["x86_64-unknown-linux-gnu"] proc-macro = true [dependencies] -syn = { version = "1.0.77", features = ["full", "extra-traits"] } +syn = { version = "1.0.78", features = ["full", "extra-traits"] } quote = "1.0.9" proc-macro2 = "1.0.26" proc-macro-crate = "1.1.0" diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index fde65dcdd51a..03b5275c04f6 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.77" +syn = "1.0.78" From 6cb31e50f54c6d30290f97d4d22f590645184ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Mon, 4 Oct 2021 13:14:03 +0200 Subject: [PATCH 129/138] Fix unoccupied bitfields (#4004) * Fix unoccupied bitfields If there is an unoccupied bitfield set, we should just ignore it and not keep it for the rest of the logic in `process_bitfields`. * Bring back test, but this time corrected * Remove incorrect code --- runtime/parachains/src/inclusion.rs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs index 1c37bce3bd27..7150dbbfb798 100644 --- a/runtime/parachains/src/inclusion.rs +++ b/runtime/parachains/src/inclusion.rs @@ -180,8 +180,6 @@ pub mod pallet { NotCollatorSigned, /// The validation data hash does not match expected. ValidationDataHashMismatch, - /// Internal error only returned when compiled with debug assertions. - InternalError, /// The downward message queue is not processed correctly. IncorrectDownwardMessageHandling, /// At least one upward message sent does not pass the acceptance criteria. @@ -328,8 +326,6 @@ impl Pallet { candidate_pending_availability.availability_votes.get_mut(val_idx) }) { *bit = true; - } else if cfg!(debug_assertions) { - ensure!(false, Error::::InternalError); } } @@ -1412,13 +1408,14 @@ mod tests { bare_bitfield, &signing_context, )); - - assert!(ParaInclusion::process_bitfields( - expected_bits(), - vec![signed.into()], - &core_lookup, - ) - .is_err()); + assert_eq!( + ParaInclusion::process_bitfields( + expected_bits(), + vec![signed.into()], + &core_lookup, + ), + Ok(vec![]) + ); } // empty bitfield signed: always OK, but kind of useless. From 3477414e077cb21167cb23b75f11d5a8f2af922e Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 4 Oct 2021 14:25:17 +0200 Subject: [PATCH 130/138] Use background tasks properly in candidate-validation (#4002) * refactor: candidate-validation background tasks * fix tests * fmt --- node/core/candidate-validation/src/lib.rs | 237 +++++++++++--------- node/core/candidate-validation/src/tests.rs | 86 ++++--- 2 files changed, 176 insertions(+), 147 deletions(-) diff --git a/node/core/candidate-validation/src/lib.rs b/node/core/candidate-validation/src/lib.rs index 2862d4c3f30e..9d2852efcc59 100644 --- a/node/core/candidate-validation/src/lib.rs +++ b/node/core/candidate-validation/src/lib.rs @@ -35,7 +35,7 @@ use polkadot_node_subsystem::{ CandidateValidationMessage, RuntimeApiMessage, RuntimeApiRequest, ValidationFailed, }, overseer, FromOverseer, OverseerSignal, SpawnedSubsystem, SubsystemContext, SubsystemError, - SubsystemResult, + SubsystemResult, SubsystemSender, }; use polkadot_node_subsystem_util::metrics::{self, prometheus}; use polkadot_parachain::primitives::{ValidationParams, ValidationResult as WasmValidationResult}; @@ -120,7 +120,7 @@ where Context: SubsystemContext, Context: overseer::SubsystemContext, { - let (mut validation_host, task) = polkadot_node_core_pvf::start( + let (validation_host, task) = polkadot_node_core_pvf::start( polkadot_node_core_pvf::Config::new(cache_path, program_path), pvf_metrics, ); @@ -137,24 +137,28 @@ where pov, response_sender, ) => { - let _timer = metrics.time_validate_from_chain_state(); - - let res = spawn_validate_from_chain_state( - &mut ctx, - &mut validation_host, - descriptor, - pov, - &metrics, - ) - .await; - - match res { - Ok(x) => { - metrics.on_validation_event(&x); - let _ = response_sender.send(x); - }, - Err(e) => return Err(e), - } + let bg = { + let mut sender = ctx.sender().clone(); + let metrics = metrics.clone(); + let validation_host = validation_host.clone(); + + async move { + let _timer = metrics.time_validate_from_chain_state(); + let res = validate_from_chain_state( + &mut sender, + validation_host, + descriptor, + pov, + &metrics, + ) + .await; + + metrics.on_validation_event(&res); + let _ = response_sender.send(res); + } + }; + + ctx.spawn("validate-from-chain-state", bg.boxed())?; }, CandidateValidationMessage::ValidateFromExhaustive( persisted_validation_data, @@ -163,50 +167,68 @@ where pov, response_sender, ) => { - let _timer = metrics.time_validate_from_exhaustive(); - - let res = validate_candidate_exhaustive( - &mut validation_host, - persisted_validation_data, - validation_code, - descriptor, - pov, - &metrics, - ) - .await; - - match res { - Ok(x) => { - metrics.on_validation_event(&x); - - if let Err(_e) = response_sender.send(x) { - tracing::warn!( - target: LOG_TARGET, - "Requester of candidate validation dropped", - ) - } - }, - Err(e) => return Err(e), - } + let bg = { + let metrics = metrics.clone(); + let validation_host = validation_host.clone(); + + async move { + let _timer = metrics.time_validate_from_exhaustive(); + let res = validate_candidate_exhaustive( + validation_host, + persisted_validation_data, + validation_code, + descriptor, + pov, + &metrics, + ) + .await; + + metrics.on_validation_event(&res); + let _ = response_sender.send(res); + } + }; + + ctx.spawn("validate-from-exhaustive", bg.boxed())?; }, }, } } } -async fn runtime_api_request( - ctx: &mut Context, +struct RuntimeRequestFailed; + +async fn runtime_api_request( + sender: &mut Sender, relay_parent: Hash, request: RuntimeApiRequest, receiver: oneshot::Receiver>, -) -> SubsystemResult> +) -> Result where - Context: SubsystemContext, - Context: overseer::SubsystemContext, + Sender: SubsystemSender, { - ctx.send_message(RuntimeApiMessage::Request(relay_parent, request)).await; + sender + .send_message(RuntimeApiMessage::Request(relay_parent, request).into()) + .await; - receiver.await.map_err(Into::into) + receiver + .await + .map_err(|_| { + tracing::debug!(target: LOG_TARGET, ?relay_parent, "Runtime API request dropped"); + + RuntimeRequestFailed + }) + .and_then(|res| { + res.map_err(|e| { + tracing::debug!( + target: LOG_TARGET, + ?relay_parent, + err = ?e, + "Runtime API request internal error" + ); + + RuntimeRequestFailed + }) + }) } #[derive(Debug)] @@ -216,61 +238,57 @@ enum AssumptionCheckOutcome { BadRequest, } -async fn check_assumption_validation_data( - ctx: &mut Context, +async fn check_assumption_validation_data( + sender: &mut Sender, descriptor: &CandidateDescriptor, assumption: OccupiedCoreAssumption, -) -> SubsystemResult +) -> AssumptionCheckOutcome where - Context: SubsystemContext, - Context: overseer::SubsystemContext, + Sender: SubsystemSender, { let validation_data = { let (tx, rx) = oneshot::channel(); let d = runtime_api_request( - ctx, + sender, descriptor.relay_parent, RuntimeApiRequest::PersistedValidationData(descriptor.para_id, assumption, tx), rx, ) - .await?; + .await; match d { - Ok(None) | Err(_) => return Ok(AssumptionCheckOutcome::BadRequest), + Ok(None) | Err(RuntimeRequestFailed) => return AssumptionCheckOutcome::BadRequest, Ok(Some(d)) => d, } }; let persisted_validation_data_hash = validation_data.hash(); - SubsystemResult::Ok( - if descriptor.persisted_validation_data_hash == persisted_validation_data_hash { - let (code_tx, code_rx) = oneshot::channel(); - let validation_code = runtime_api_request( - ctx, - descriptor.relay_parent, - RuntimeApiRequest::ValidationCode(descriptor.para_id, assumption, code_tx), - code_rx, - ) - .await?; + if descriptor.persisted_validation_data_hash == persisted_validation_data_hash { + let (code_tx, code_rx) = oneshot::channel(); + let validation_code = runtime_api_request( + sender, + descriptor.relay_parent, + RuntimeApiRequest::ValidationCode(descriptor.para_id, assumption, code_tx), + code_rx, + ) + .await; - match validation_code { - Ok(None) | Err(_) => AssumptionCheckOutcome::BadRequest, - Ok(Some(v)) => AssumptionCheckOutcome::Matches(validation_data, v), - } - } else { - AssumptionCheckOutcome::DoesNotMatch - }, - ) + match validation_code { + Ok(None) | Err(RuntimeRequestFailed) => AssumptionCheckOutcome::BadRequest, + Ok(Some(v)) => AssumptionCheckOutcome::Matches(validation_data, v), + } + } else { + AssumptionCheckOutcome::DoesNotMatch + } } -async fn find_assumed_validation_data( - ctx: &mut Context, +async fn find_assumed_validation_data( + sender: &mut Sender, descriptor: &CandidateDescriptor, -) -> SubsystemResult +) -> AssumptionCheckOutcome where - Context: SubsystemContext, - Context: overseer::SubsystemContext, + Sender: SubsystemSender, { // The candidate descriptor has a `persisted_validation_data_hash` which corresponds to // one of up to two possible values that we can derive from the state of the @@ -287,41 +305,40 @@ where // Consider running these checks in parallel to reduce validation latency. for assumption in ASSUMPTIONS { - let outcome = check_assumption_validation_data(ctx, descriptor, *assumption).await?; + let outcome = check_assumption_validation_data(sender, descriptor, *assumption).await; match outcome { - AssumptionCheckOutcome::Matches(_, _) => return Ok(outcome), - AssumptionCheckOutcome::BadRequest => return Ok(outcome), + AssumptionCheckOutcome::Matches(_, _) => return outcome, + AssumptionCheckOutcome::BadRequest => return outcome, AssumptionCheckOutcome::DoesNotMatch => continue, } } - Ok(AssumptionCheckOutcome::DoesNotMatch) + AssumptionCheckOutcome::DoesNotMatch } -async fn spawn_validate_from_chain_state( - ctx: &mut Context, - validation_host: &mut ValidationHost, +async fn validate_from_chain_state( + sender: &mut Sender, + validation_host: ValidationHost, descriptor: CandidateDescriptor, pov: Arc, metrics: &Metrics, -) -> SubsystemResult> +) -> Result where - Context: SubsystemContext, - Context: overseer::SubsystemContext, + Sender: SubsystemSender, { let (validation_data, validation_code) = - match find_assumed_validation_data(ctx, &descriptor).await? { + match find_assumed_validation_data(sender, &descriptor).await { AssumptionCheckOutcome::Matches(validation_data, validation_code) => (validation_data, validation_code), AssumptionCheckOutcome::DoesNotMatch => { // If neither the assumption of the occupied core having the para included or the assumption // of the occupied core timing out are valid, then the persisted_validation_data_hash in the descriptor // is not based on the relay parent and is thus invalid. - return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::BadParent))) + return Ok(ValidationResult::Invalid(InvalidCandidate::BadParent)) }, AssumptionCheckOutcome::BadRequest => - return Ok(Err(ValidationFailed("Assumption Check: Bad request".into()))), + return Err(ValidationFailed("Assumption Check: Bad request".into())), }; let validation_result = validate_candidate_exhaustive( @@ -334,20 +351,20 @@ where ) .await; - if let Ok(Ok(ValidationResult::Valid(ref outputs, _))) = validation_result { + if let Ok(ValidationResult::Valid(ref outputs, _)) = validation_result { let (tx, rx) = oneshot::channel(); match runtime_api_request( - ctx, + sender, descriptor.relay_parent, RuntimeApiRequest::CheckValidationOutputs(descriptor.para_id, outputs.clone(), tx), rx, ) - .await? + .await { Ok(true) => {}, - Ok(false) => return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::InvalidOutputs))), - Err(_) => - return Ok(Err(ValidationFailed("Check Validation Outputs: Bad request".into()))), + Ok(false) => return Ok(ValidationResult::Invalid(InvalidCandidate::InvalidOutputs)), + Err(RuntimeRequestFailed) => + return Err(ValidationFailed("Check Validation Outputs: Bad request".into())), } } @@ -361,7 +378,7 @@ async fn validate_candidate_exhaustive( descriptor: CandidateDescriptor, pov: Arc, metrics: &Metrics, -) -> SubsystemResult> { +) -> Result { let _timer = metrics.time_validate_candidate_exhaustive(); let validation_code_hash = validation_code.hash(); @@ -378,7 +395,7 @@ async fn validate_candidate_exhaustive( &*pov, &validation_code_hash, ) { - return Ok(Ok(ValidationResult::Invalid(e))) + return Ok(ValidationResult::Invalid(e)) } let raw_validation_code = match sp_maybe_compressed_blob::decompress( @@ -390,7 +407,7 @@ async fn validate_candidate_exhaustive( tracing::debug!(target: LOG_TARGET, err=?e, "Invalid validation code"); // If the validation code is invalid, the candidate certainly is. - return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::CodeDecompressionFailure))) + return Ok(ValidationResult::Invalid(InvalidCandidate::CodeDecompressionFailure)) }, }; @@ -401,7 +418,7 @@ async fn validate_candidate_exhaustive( tracing::debug!(target: LOG_TARGET, err=?e, "Invalid PoV code"); // If the PoV is invalid, the candidate certainly is. - return Ok(Ok(ValidationResult::Invalid(InvalidCandidate::PoVDecompressionFailure))) + return Ok(ValidationResult::Invalid(InvalidCandidate::PoVDecompressionFailure)) }, }; @@ -424,7 +441,7 @@ async fn validate_candidate_exhaustive( ); } - let result = match result { + match result { Err(ValidationError::InternalError(e)) => Err(ValidationFailed(e)), Err(ValidationError::InvalidCandidate(WasmInvalidCandidate::HardTimeout)) => @@ -450,9 +467,7 @@ async fn validate_candidate_exhaustive( }; Ok(ValidationResult::Valid(outputs, persisted_validation_data)) }, - }; - - Ok(result) + } } #[async_trait] @@ -465,7 +480,7 @@ trait ValidationBackend { } #[async_trait] -impl ValidationBackend for &'_ mut ValidationHost { +impl ValidationBackend for ValidationHost { async fn validate_candidate( &mut self, raw_validation_code: Vec, diff --git a/node/core/candidate-validation/src/tests.rs b/node/core/candidate-validation/src/tests.rs index 15314c35ed2f..f067ead6cd3c 100644 --- a/node/core/candidate-validation/src/tests.rs +++ b/node/core/candidate-validation/src/tests.rs @@ -19,6 +19,7 @@ use assert_matches::assert_matches; use futures::executor; use polkadot_node_subsystem::messages::AllMessages; use polkadot_node_subsystem_test_helpers as test_helpers; +use polkadot_node_subsystem_util::reexports::SubsystemContext; use polkadot_primitives::v1::{HeadData, UpwardMessage}; use sp_core::testing::TaskExecutor; use sp_keyring::Sr25519Keyring; @@ -52,11 +53,15 @@ fn correctly_checks_included_assumption() { candidate.para_id = para_id; let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); + let (mut ctx, mut ctx_handle) = + test_helpers::make_subsystem_context::(pool.clone()); - let (check_fut, check_result) = - check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::Included) - .remote_handle(); + let (check_fut, check_result) = check_assumption_validation_data( + ctx.sender(), + &candidate, + OccupiedCoreAssumption::Included, + ) + .remote_handle(); let test_fut = async move { assert_matches!( @@ -89,7 +94,7 @@ fn correctly_checks_included_assumption() { } ); - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::Matches(o, v) => { + assert_matches!(check_result.await, AssumptionCheckOutcome::Matches(o, v) => { assert_eq!(o, validation_data); assert_eq!(v, validation_code); }); @@ -114,11 +119,15 @@ fn correctly_checks_timed_out_assumption() { candidate.para_id = para_id; let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); + let (mut ctx, mut ctx_handle) = + test_helpers::make_subsystem_context::(pool.clone()); - let (check_fut, check_result) = - check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::TimedOut) - .remote_handle(); + let (check_fut, check_result) = check_assumption_validation_data( + ctx.sender(), + &candidate, + OccupiedCoreAssumption::TimedOut, + ) + .remote_handle(); let test_fut = async move { assert_matches!( @@ -151,7 +160,7 @@ fn correctly_checks_timed_out_assumption() { } ); - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::Matches(o, v) => { + assert_matches!(check_result.await, AssumptionCheckOutcome::Matches(o, v) => { assert_eq!(o, validation_data); assert_eq!(v, validation_code); }); @@ -174,11 +183,15 @@ fn check_is_bad_request_if_no_validation_data() { candidate.para_id = para_id; let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); + let (mut ctx, mut ctx_handle) = + test_helpers::make_subsystem_context::(pool.clone()); - let (check_fut, check_result) = - check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::Included) - .remote_handle(); + let (check_fut, check_result) = check_assumption_validation_data( + ctx.sender(), + &candidate, + OccupiedCoreAssumption::Included, + ) + .remote_handle(); let test_fut = async move { assert_matches!( @@ -198,7 +211,7 @@ fn check_is_bad_request_if_no_validation_data() { } ); - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::BadRequest); + assert_matches!(check_result.await, AssumptionCheckOutcome::BadRequest); }; let test_fut = future::join(test_fut, check_fut); @@ -218,11 +231,15 @@ fn check_is_bad_request_if_no_validation_code() { candidate.para_id = para_id; let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); + let (mut ctx, mut ctx_handle) = + test_helpers::make_subsystem_context::(pool.clone()); - let (check_fut, check_result) = - check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::TimedOut) - .remote_handle(); + let (check_fut, check_result) = check_assumption_validation_data( + ctx.sender(), + &candidate, + OccupiedCoreAssumption::TimedOut, + ) + .remote_handle(); let test_fut = async move { assert_matches!( @@ -255,7 +272,7 @@ fn check_is_bad_request_if_no_validation_code() { } ); - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::BadRequest); + assert_matches!(check_result.await, AssumptionCheckOutcome::BadRequest); }; let test_fut = future::join(test_fut, check_fut); @@ -274,11 +291,15 @@ fn check_does_not_match() { candidate.para_id = para_id; let pool = TaskExecutor::new(); - let (mut ctx, mut ctx_handle) = test_helpers::make_subsystem_context(pool.clone()); + let (mut ctx, mut ctx_handle) = + test_helpers::make_subsystem_context::(pool.clone()); - let (check_fut, check_result) = - check_assumption_validation_data(&mut ctx, &candidate, OccupiedCoreAssumption::Included) - .remote_handle(); + let (check_fut, check_result) = check_assumption_validation_data( + ctx.sender(), + &candidate, + OccupiedCoreAssumption::Included, + ) + .remote_handle(); let test_fut = async move { assert_matches!( @@ -298,7 +319,7 @@ fn check_does_not_match() { } ); - assert_matches!(check_result.await.unwrap(), AssumptionCheckOutcome::DoesNotMatch); + assert_matches!(check_result.await, AssumptionCheckOutcome::DoesNotMatch); }; let test_fut = future::join(test_fut, check_fut); @@ -365,7 +386,6 @@ fn candidate_validation_ok_is_ok() { Arc::new(pov), &Default::default(), )) - .unwrap() .unwrap(); assert_matches!(v, ValidationResult::Valid(outputs, used_validation_data) => { @@ -408,7 +428,6 @@ fn candidate_validation_bad_return_is_invalid() { Arc::new(pov), &Default::default(), )) - .unwrap() .unwrap(); assert_matches!(v, ValidationResult::Invalid(InvalidCandidate::ExecutionError(_))); @@ -443,8 +462,7 @@ fn candidate_validation_timeout_is_internal_error() { descriptor, Arc::new(pov), &Default::default(), - )) - .unwrap(); + )); assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::Timeout))); } @@ -479,7 +497,6 @@ fn candidate_validation_code_mismatch_is_invalid() { Arc::new(pov), &Default::default(), )) - .unwrap() .unwrap(); assert_matches!(v, ValidationResult::Invalid(InvalidCandidate::CodeHashMismatch)); @@ -518,8 +535,7 @@ fn compressed_code_works() { descriptor, Arc::new(pov), &Default::default(), - )) - .unwrap(); + )); assert_matches!(v, Ok(ValidationResult::Valid(_, _))); } @@ -558,8 +574,7 @@ fn code_decompression_failure_is_invalid() { descriptor, Arc::new(pov), &Default::default(), - )) - .unwrap(); + )); assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::CodeDecompressionFailure))); } @@ -599,8 +614,7 @@ fn pov_decompression_failure_is_invalid() { descriptor, Arc::new(pov), &Default::default(), - )) - .unwrap(); + )); assert_matches!(v, Ok(ValidationResult::Invalid(InvalidCandidate::PoVDecompressionFailure))); } From d9dc3d85c434bbc154796f411b17ec49255da1a3 Mon Sep 17 00:00:00 2001 From: Bernhard Schuster Date: Mon, 4 Oct 2021 14:36:54 +0200 Subject: [PATCH 131/138] chore: ci list files that spellcheck finds (#3992) * chore: ci list files that spellcheck finds Avoid -r flag for false positives * avoid master * improve --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01aed3c06ce3..6a7d381c0722 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -242,8 +242,9 @@ spellcheck: - cargo spellcheck --version # compare with the commit parent to the PR, given it's from a default branch - git fetch origin +${CI_DEFAULT_BRANCH}:${CI_DEFAULT_BRANCH} + - cargo spellcheck list-files -vvv $(git diff --diff-filter=AM --name-only $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH})) - time cargo spellcheck check -vvv --cfg=scripts/gitlab/spellcheck.toml --checkers hunspell --code 1 - -r $(git diff --name-only ${CI_COMMIT_SHA} $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH})) + $(git diff --diff-filter=AM --name-only $(git merge-base ${CI_COMMIT_SHA} ${CI_DEFAULT_BRANCH})) allow_failure: true build-adder-collator: From 16d66072576d603e9c1fce934853fa093669ef60 Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 4 Oct 2021 16:06:26 +0200 Subject: [PATCH 132/138] Add extrinsic ordering filtering (#3631) --- .../extrinsic-ordering-check-from-bin.yml | 21 +++++-- scripts/github/extrinsic-ordering-filter.sh | 55 +++++++++++++++++++ 2 files changed, 71 insertions(+), 5 deletions(-) create mode 100755 scripts/github/extrinsic-ordering-filter.sh diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index 0d2ffc6f2b18..199b3be6fe66 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -6,7 +6,7 @@ on: inputs: reference_url: description: The WebSocket url of the reference node - default: wss://rpc.polkadot.io + default: wss://kusama-rpc.polkadot.io required: true binary_url: description: A url to a Linux binary for the node containing the runtime to test @@ -14,7 +14,7 @@ on: required: true chain: description: The name of the chain under test. Usually, you would pass a local chain - default: polkadot-local + default: kusama-local required: true jobs: @@ -27,6 +27,8 @@ jobs: REF_URL: ${{github.event.inputs.reference_url}} steps: + - uses: actions/checkout@v2 + - name: Fetch binary run: | echo Fetching $BIN_URL @@ -46,17 +48,26 @@ jobs: echo "Date: $(date)" >> output.txt echo "Reference: $REF_URL" >> output.txt echo "Target version: $VERSION" >> output.txt - echo "-------------------------------------------" >> output.txt + echo "Chain: $CHAIN" >> output.txt + echo "----------------------------------------------------------------------" >> output.txt + + - name: Pull polkadot-js-tools image + run: docker pull jacogr/polkadot-js-tools - name: Compare the metadata run: | - CMD="docker run --network host jacogr/polkadot-js-tools metadata $REF_URL ws://localhost:9944" + CMD="docker run --pull always --network host jacogr/polkadot-js-tools metadata $REF_URL ws://localhost:9944" echo -e "Running:\n$CMD" $CMD >> output.txt sed -z -i 's/\n\n/\n/g' output.txt + cat output.txt | egrep -n -i '' + SUMMARY=$(./scripts/github/extrinsic-ordering-filter.sh output.txt) + echo -e $SUMMARY + echo -e $SUMMARY >> output.txt - name: Show result - run: cat output.txt + run: | + cat output.txt - name: Stop our local node run: pkill polkadot diff --git a/scripts/github/extrinsic-ordering-filter.sh b/scripts/github/extrinsic-ordering-filter.sh new file mode 100755 index 000000000000..4fd3337f64a6 --- /dev/null +++ b/scripts/github/extrinsic-ordering-filter.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# This script is used in a Github Workflow. It helps filtering out what is interesting +# when comparing metadata and spot what would require a tx version bump. + +# shellcheck disable=SC2002,SC2086 + +FILE=$1 + +# Higlight indexes that were deleted +function find_deletions() { + echo "\n## Deletions\n" + RES=$(cat "$FILE" | grep -n '\[\-\]' | tr -s " ") + if [ "$RES" ]; then + echo "$RES" | awk '{ printf "%s\\n", $0 }' + else + echo "n/a" + fi +} + +# Highlight indexes that have been deleted +function find_index_changes() { + echo "\n## Index changes\n" + RES=$(cat "$FILE" | grep -E -n -i 'idx:\s*([0-9]+)\s*(->)\s*([0-9]+)' | tr -s " ") + if [ "$RES" ]; then + echo "$RES" | awk '{ printf "%s\\n", $0 }' + else + echo "n/a" + fi +} + +# Highlight values that decreased +function find_decreases() { + echo "\n## Decreases\n" + OUT=$(cat "$FILE" | grep -E -i -o '([0-9]+)\s*(->)\s*([0-9]+)' | awk '$1 > $3 { printf "%s;", $0 }') + IFS=$';' LIST=("$OUT") + unset RES + for line in "${LIST[@]}"; do + RES="$RES\n$(cat "$FILE" | grep -E -i -n \"$line\" | tr -s " ")" + done + + if [ "$RES" ]; then + echo "$RES" | awk '{ printf "%s\\n", $0 }' | sort -u -g | uniq + else + echo "n/a" + fi +} + +echo "\n------------------------------ SUMMARY -------------------------------" +echo "\n⚠️ This filter is here to help spotting changes that should be reviewed carefully." +echo "\n⚠️ It catches only index changes, deletions and value decreases". + +find_deletions "$FILE" +find_index_changes "$FILE" +find_decreases "$FILE" +echo "\n----------------------------------------------------------------------\n" From 8962e04029658ab467a3a102cc1a4295a7e7255d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 4 Oct 2021 16:53:36 +0200 Subject: [PATCH 133/138] Make candidate validation timeouts configurable (#4001) * pvf: make execution timeout configurable * guide: add timeouts to candidate validation params * add timeouts to candidate validation messages * fmt * port backing to use the backing pvf timeout * port approval-voting to use the execution timeout * port dispute participation to use the correct timeout * fmt * address grumbles & test failure --- node/core/approval-voting/src/lib.rs | 3 +- node/core/backing/src/lib.rs | 8 +- node/core/backing/src/tests.rs | 28 +++-- node/core/candidate-validation/src/lib.rs | 14 ++- node/core/candidate-validation/src/tests.rs | 8 ++ node/core/dispute-participation/src/lib.rs | 7 +- node/core/dispute-participation/src/tests.rs | 16 +-- node/core/pvf/src/execute/queue.rs | 20 +++- node/core/pvf/src/execute/worker.rs | 5 +- node/core/pvf/src/host.rs | 100 +++++++++++++----- node/core/pvf/tests/it/main.rs | 3 + node/overseer/examples/minimal-example.rs | 1 + node/overseer/src/tests.rs | 8 +- node/primitives/src/lib.rs | 13 ++- node/subsystem-types/src/messages.rs | 9 +- .../src/node/approval/approval-voting.md | 2 +- .../src/node/backing/candidate-backing.md | 2 +- .../node/disputes/dispute-participation.md | 2 +- .../src/types/overseer-protocol.md | 5 + 19 files changed, 192 insertions(+), 62 deletions(-) diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index 985cc9d6c541..af46ad55fa04 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -27,7 +27,7 @@ use polkadot_node_primitives::{ approval::{ BlockApprovalMeta, DelayTranche, IndirectAssignmentCert, IndirectSignedApprovalVote, }, - SignedDisputeStatement, ValidationResult, + SignedDisputeStatement, ValidationResult, APPROVAL_EXECUTION_TIMEOUT, }; use polkadot_node_subsystem::{ errors::RecoveryError, @@ -2235,6 +2235,7 @@ async fn launch_approval( validation_code, candidate.descriptor.clone(), available_data.pov, + APPROVAL_EXECUTION_TIMEOUT, val_tx, ) .into(), diff --git a/node/core/backing/src/lib.rs b/node/core/backing/src/lib.rs index bd24244a01f8..38fab2d791c2 100644 --- a/node/core/backing/src/lib.rs +++ b/node/core/backing/src/lib.rs @@ -32,6 +32,7 @@ use futures::{ use polkadot_node_primitives::{ AvailableData, PoV, SignedDisputeStatement, SignedFullStatement, Statement, ValidationResult, + BACKING_EXECUTION_TIMEOUT, }; use polkadot_node_subsystem_util::{ self as util, @@ -380,7 +381,12 @@ async fn request_candidate_validation( let (tx, rx) = oneshot::channel(); sender - .send_message(CandidateValidationMessage::ValidateFromChainState(candidate, pov, tx)) + .send_message(CandidateValidationMessage::ValidateFromChainState( + candidate, + pov, + BACKING_EXECUTION_TIMEOUT, + tx, + )) .await; match rx.await { diff --git a/node/core/backing/src/tests.rs b/node/core/backing/src/tests.rs index 68c1e30dfd31..a262dd45d470 100644 --- a/node/core/backing/src/tests.rs +++ b/node/core/backing/src/tests.rs @@ -317,9 +317,10 @@ fn backing_second_works() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate.descriptor() => { + ) if pov == pov && &c == candidate.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Ok( ValidationResult::Valid(CandidateCommitments { head_data: expected_head_data.clone(), @@ -476,9 +477,10 @@ fn backing_works() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate_a.descriptor() => { + ) if pov == pov && &c == candidate_a.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Ok( ValidationResult::Valid(CandidateCommitments { head_data: expected_head_data.clone(), @@ -669,9 +671,10 @@ fn backing_works_while_validation_ongoing() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate_a.descriptor() => { + ) if pov == pov && &c == candidate_a.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { // we never validate the candidate. our local node // shouldn't issue any statements. std::mem::forget(tx); @@ -834,9 +837,10 @@ fn backing_misbehavior_works() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate_a.descriptor() => { + ) if pov == pov && &c == candidate_a.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Ok( ValidationResult::Valid(CandidateCommitments { head_data: expected_head_data.clone(), @@ -980,9 +984,10 @@ fn backing_dont_second_invalid() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate_a.descriptor() => { + ) if pov == pov && &c == candidate_a.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Ok(ValidationResult::Invalid(InvalidCandidate::BadReturn))).unwrap(); } ); @@ -1008,9 +1013,10 @@ fn backing_dont_second_invalid() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate_b.descriptor() => { + ) if pov == pov && &c == candidate_b.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Ok( ValidationResult::Valid(CandidateCommitments { head_data: expected_head_data.clone(), @@ -1138,9 +1144,10 @@ fn backing_second_after_first_fails_works() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate.descriptor() => { + ) if pov == pov && &c == candidate.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Ok(ValidationResult::Invalid(InvalidCandidate::BadReturn))).unwrap(); } ); @@ -1186,6 +1193,7 @@ fn backing_second_after_first_fails_works() { _, pov, _, + _, ) ) => { assert_eq!(&*pov, &pov_to_second); @@ -1270,9 +1278,10 @@ fn backing_works_after_failed_validation() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, tx, ) - ) if pov == pov && &c == candidate.descriptor() => { + ) if pov == pov && &c == candidate.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT => { tx.send(Err(ValidationFailed("Internal test error".into()))).unwrap(); } ); @@ -1646,9 +1655,10 @@ fn retry_works() { CandidateValidationMessage::ValidateFromChainState( c, pov, + timeout, _tx, ) - ) if pov == pov && &c == candidate.descriptor() + ) if pov == pov && &c == candidate.descriptor() && timeout == BACKING_EXECUTION_TIMEOUT ); virtual_overseer }); diff --git a/node/core/candidate-validation/src/lib.rs b/node/core/candidate-validation/src/lib.rs index 9d2852efcc59..c9e78db77c47 100644 --- a/node/core/candidate-validation/src/lib.rs +++ b/node/core/candidate-validation/src/lib.rs @@ -48,7 +48,7 @@ use parity_scale_codec::Encode; use futures::{channel::oneshot, prelude::*}; -use std::{path::PathBuf, sync::Arc}; +use std::{path::PathBuf, sync::Arc, time::Duration}; use async_trait::async_trait; @@ -135,6 +135,7 @@ where CandidateValidationMessage::ValidateFromChainState( descriptor, pov, + timeout, response_sender, ) => { let bg = { @@ -149,6 +150,7 @@ where validation_host, descriptor, pov, + timeout, &metrics, ) .await; @@ -165,6 +167,7 @@ where validation_code, descriptor, pov, + timeout, response_sender, ) => { let bg = { @@ -179,6 +182,7 @@ where validation_code, descriptor, pov, + timeout, &metrics, ) .await; @@ -322,6 +326,7 @@ async fn validate_from_chain_state( validation_host: ValidationHost, descriptor: CandidateDescriptor, pov: Arc, + timeout: Duration, metrics: &Metrics, ) -> Result where @@ -347,6 +352,7 @@ where validation_code, descriptor.clone(), pov, + timeout, metrics, ) .await; @@ -377,6 +383,7 @@ async fn validate_candidate_exhaustive( validation_code: ValidationCode, descriptor: CandidateDescriptor, pov: Arc, + timeout: Duration, metrics: &Metrics, ) -> Result { let _timer = metrics.time_validate_candidate_exhaustive(); @@ -430,7 +437,7 @@ async fn validate_candidate_exhaustive( }; let result = validation_backend - .validate_candidate(raw_validation_code.to_vec(), params) + .validate_candidate(raw_validation_code.to_vec(), timeout, params) .await; if let Err(ref e) = result { @@ -475,6 +482,7 @@ trait ValidationBackend { async fn validate_candidate( &mut self, raw_validation_code: Vec, + timeout: Duration, params: ValidationParams, ) -> Result; } @@ -484,12 +492,14 @@ impl ValidationBackend for ValidationHost { async fn validate_candidate( &mut self, raw_validation_code: Vec, + timeout: Duration, params: ValidationParams, ) -> Result { let (tx, rx) = oneshot::channel(); if let Err(err) = self .execute_pvf( Pvf::from_code(raw_validation_code), + timeout, params.encode(), polkadot_node_core_pvf::Priority::Normal, tx, diff --git a/node/core/candidate-validation/src/tests.rs b/node/core/candidate-validation/src/tests.rs index f067ead6cd3c..30fa96ccc398 100644 --- a/node/core/candidate-validation/src/tests.rs +++ b/node/core/candidate-validation/src/tests.rs @@ -341,6 +341,7 @@ impl ValidationBackend for MockValidatorBackend { async fn validate_candidate( &mut self, _raw_validation_code: Vec, + _timeout: Duration, _params: ValidationParams, ) -> Result { self.result.clone() @@ -384,6 +385,7 @@ fn candidate_validation_ok_is_ok() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )) .unwrap(); @@ -426,6 +428,7 @@ fn candidate_validation_bad_return_is_invalid() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )) .unwrap(); @@ -461,6 +464,7 @@ fn candidate_validation_timeout_is_internal_error() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )); @@ -495,6 +499,7 @@ fn candidate_validation_code_mismatch_is_invalid() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )) .unwrap(); @@ -534,6 +539,7 @@ fn compressed_code_works() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )); @@ -573,6 +579,7 @@ fn code_decompression_failure_is_invalid() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )); @@ -613,6 +620,7 @@ fn pov_decompression_failure_is_invalid() { validation_code, descriptor, Arc::new(pov), + Duration::from_secs(0), &Default::default(), )); diff --git a/node/core/dispute-participation/src/lib.rs b/node/core/dispute-participation/src/lib.rs index 85b31f0a86f4..21258ad5be11 100644 --- a/node/core/dispute-participation/src/lib.rs +++ b/node/core/dispute-participation/src/lib.rs @@ -22,7 +22,7 @@ use futures::{channel::oneshot, prelude::*}; -use polkadot_node_primitives::ValidationResult; +use polkadot_node_primitives::{ValidationResult, APPROVAL_EXECUTION_TIMEOUT}; use polkadot_node_subsystem::{ errors::{RecoveryError, RuntimeApiError}, messages::{ @@ -269,11 +269,16 @@ async fn participate( // we issue a request to validate the candidate with the provided exhaustive // parameters + // + // We use the approval execution timeout because this is intended to + // be run outside of backing and therefore should be subject to the + // same level of leeway. ctx.send_message(CandidateValidationMessage::ValidateFromExhaustive( available_data.validation_data, validation_code, candidate_receipt.descriptor.clone(), available_data.pov, + APPROVAL_EXECUTION_TIMEOUT, validation_tx, )) .await; diff --git a/node/core/dispute-participation/src/tests.rs b/node/core/dispute-participation/src/tests.rs index e2c98af53b5e..513f673f81a2 100644 --- a/node/core/dispute-participation/src/tests.rs +++ b/node/core/dispute-participation/src/tests.rs @@ -295,8 +295,8 @@ fn cast_invalid_vote_if_validation_fails_or_is_invalid() { assert_matches!( virtual_overseer.recv().await, AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { + CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, timeout, tx) + ) if timeout == APPROVAL_EXECUTION_TIMEOUT => { tx.send(Ok(ValidationResult::Invalid(InvalidCandidate::Timeout))).unwrap(); }, "overseer did not receive candidate validation message", @@ -331,8 +331,8 @@ fn cast_invalid_vote_if_validation_passes_but_commitments_dont_match() { assert_matches!( virtual_overseer.recv().await, AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { + CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, timeout, tx) + ) if timeout == APPROVAL_EXECUTION_TIMEOUT => { let mut commitments = CandidateCommitments::default(); // this should lead to a commitments hash mismatch commitments.processed_downward_messages = 42; @@ -371,8 +371,8 @@ fn cast_valid_vote_if_validation_passes() { assert_matches!( virtual_overseer.recv().await, AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { + CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, timeout, tx) + ) if timeout == APPROVAL_EXECUTION_TIMEOUT => { tx.send(Ok(ValidationResult::Valid(Default::default(), Default::default()))).unwrap(); }, "overseer did not receive candidate validation message", @@ -408,8 +408,8 @@ fn failure_to_store_available_data_does_not_preclude_participation() { assert_matches!( virtual_overseer.recv().await, AllMessages::CandidateValidation( - CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, tx) - ) => { + CandidateValidationMessage::ValidateFromExhaustive(_, _, _, _, timeout, tx) + ) if timeout == APPROVAL_EXECUTION_TIMEOUT => { tx.send(Err(ValidationFailed("fail".to_string()))).unwrap(); }, "overseer did not receive candidate validation message", diff --git a/node/core/pvf/src/execute/queue.rs b/node/core/pvf/src/execute/queue.rs index 09e848196820..9376d7d76f78 100644 --- a/node/core/pvf/src/execute/queue.rs +++ b/node/core/pvf/src/execute/queue.rs @@ -38,11 +38,17 @@ slotmap::new_key_type! { struct Worker; } #[derive(Debug)] pub enum ToQueue { - Enqueue { artifact: ArtifactPathId, params: Vec, result_tx: ResultSender }, + Enqueue { + artifact: ArtifactPathId, + execution_timeout: Duration, + params: Vec, + result_tx: ResultSender, + }, } struct ExecuteJob { artifact: ArtifactPathId, + execution_timeout: Duration, params: Vec, result_tx: ResultSender, } @@ -167,14 +173,14 @@ async fn purge_dead(metrics: &Metrics, workers: &mut Workers) { } fn handle_to_queue(queue: &mut Queue, to_queue: ToQueue) { - let ToQueue::Enqueue { artifact, params, result_tx } = to_queue; + let ToQueue::Enqueue { artifact, execution_timeout, params, result_tx } = to_queue; tracing::debug!( target: LOG_TARGET, validation_code_hash = ?artifact.id.code_hash, "enqueueing an artifact for execution", ); queue.metrics.execute_enqueued(); - let job = ExecuteJob { artifact, params, result_tx }; + let job = ExecuteJob { artifact, execution_timeout, params, result_tx }; if let Some(available) = queue.workers.find_available() { assign(queue, available, job); @@ -326,7 +332,13 @@ fn assign(queue: &mut Queue, worker: Worker, job: ExecuteJob) { queue.mux.push( async move { let _timer = execution_timer; - let outcome = super::worker::start_work(idle, job.artifact.clone(), job.params).await; + let outcome = super::worker::start_work( + idle, + job.artifact.clone(), + job.execution_timeout, + job.params, + ) + .await; QueueEvent::StartWork(worker, outcome, job.artifact.id, job.result_tx) } .boxed(), diff --git a/node/core/pvf/src/execute/worker.rs b/node/core/pvf/src/execute/worker.rs index 97fe5aec3dbf..86e892672d9e 100644 --- a/node/core/pvf/src/execute/worker.rs +++ b/node/core/pvf/src/execute/worker.rs @@ -34,8 +34,6 @@ use parity_scale_codec::{Decode, Encode}; use polkadot_parachain::primitives::ValidationResult; use std::time::{Duration, Instant}; -const EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); - /// Spawns a new worker with the given program path that acts as the worker and the spawn timeout. /// /// The program should be able to handle ` execute-worker ` invocation. @@ -69,6 +67,7 @@ pub enum Outcome { pub async fn start_work( worker: IdleWorker, artifact: ArtifactPathId, + execution_timeout: Duration, validation_params: Vec, ) -> Outcome { let IdleWorker { mut stream, pid } = worker; @@ -108,7 +107,7 @@ pub async fn start_work( Ok(response) => response, } }, - _ = Delay::new(EXECUTION_TIMEOUT).fuse() => { + _ = Delay::new(execution_timeout).fuse() => { tracing::warn!( target: LOG_TARGET, worker_pid = %pid, diff --git a/node/core/pvf/src/host.rs b/node/core/pvf/src/host.rs index 89b230bc90d7..40c30ca65c21 100644 --- a/node/core/pvf/src/host.rs +++ b/node/core/pvf/src/host.rs @@ -48,8 +48,8 @@ pub struct ValidationHost { } impl ValidationHost { - /// Execute PVF with the given code, parameters and priority. The result of execution will be sent - /// to the provided result sender. + /// Execute PVF with the given code, execution timeout, parameters and priority. + /// The result of execution will be sent to the provided result sender. /// /// This is async to accommodate the fact a possibility of back-pressure. In the vast majority of /// situations this function should return immediately. @@ -58,12 +58,13 @@ impl ValidationHost { pub async fn execute_pvf( &mut self, pvf: Pvf, + execution_timeout: Duration, params: Vec, priority: Priority, result_tx: ResultSender, ) -> Result<(), String> { self.to_host_tx - .send(ToHost::ExecutePvf { pvf, params, priority, result_tx }) + .send(ToHost::ExecutePvf { pvf, execution_timeout, params, priority, result_tx }) .await .map_err(|_| "the inner loop hung up".to_string()) } @@ -83,8 +84,16 @@ impl ValidationHost { } enum ToHost { - ExecutePvf { pvf: Pvf, params: Vec, priority: Priority, result_tx: ResultSender }, - HeadsUp { active_pvfs: Vec }, + ExecutePvf { + pvf: Pvf, + execution_timeout: Duration, + params: Vec, + priority: Priority, + result_tx: ResultSender, + }, + HeadsUp { + active_pvfs: Vec, + }, } /// Configuration for the validation host. @@ -200,6 +209,7 @@ pub fn start(config: Config, metrics: Metrics) -> (ValidationHost, impl Future, result_tx: ResultSender, } @@ -210,11 +220,18 @@ struct PendingExecutionRequest { struct AwaitingPrepare(HashMap>); impl AwaitingPrepare { - fn add(&mut self, artifact_id: ArtifactId, params: Vec, result_tx: ResultSender) { - self.0 - .entry(artifact_id) - .or_default() - .push(PendingExecutionRequest { params, result_tx }); + fn add( + &mut self, + artifact_id: ArtifactId, + execution_timeout: Duration, + params: Vec, + result_tx: ResultSender, + ) { + self.0.entry(artifact_id).or_default().push(PendingExecutionRequest { + execution_timeout, + params, + result_tx, + }); } fn take(&mut self, artifact_id: &ArtifactId) -> Vec { @@ -360,7 +377,7 @@ async fn handle_to_host( to_host: ToHost, ) -> Result<(), Fatal> { match to_host { - ToHost::ExecutePvf { pvf, params, priority, result_tx } => { + ToHost::ExecutePvf { pvf, execution_timeout, params, priority, result_tx } => { handle_execute_pvf( cache_path, artifacts, @@ -368,6 +385,7 @@ async fn handle_to_host( execute_queue, awaiting_prepare, pvf, + execution_timeout, params, priority, result_tx, @@ -389,6 +407,7 @@ async fn handle_execute_pvf( execute_queue: &mut mpsc::Sender, awaiting_prepare: &mut AwaitingPrepare, pvf: Pvf, + execution_timeout: Duration, params: Vec, priority: Priority, result_tx: ResultSender, @@ -404,6 +423,7 @@ async fn handle_execute_pvf( execute_queue, execute::ToQueue::Enqueue { artifact: ArtifactPathId::new(artifact_id, cache_path), + execution_timeout, params, result_tx, }, @@ -417,7 +437,7 @@ async fn handle_execute_pvf( ) .await?; - awaiting_prepare.add(artifact_id, params, result_tx); + awaiting_prepare.add(artifact_id, execution_timeout, params, result_tx); }, } } else { @@ -426,7 +446,7 @@ async fn handle_execute_pvf( artifacts.insert_preparing(artifact_id.clone()); send_prepare(prepare_queue, prepare::ToQueue::Enqueue { priority, pvf }).await?; - awaiting_prepare.add(artifact_id, params, result_tx); + awaiting_prepare.add(artifact_id, execution_timeout, params, result_tx); } return Ok(()) @@ -499,7 +519,7 @@ async fn handle_prepare_done( // It's finally time to dispatch all the execution requests that were waiting for this artifact // to be prepared. let pending_requests = awaiting_prepare.take(&artifact_id); - for PendingExecutionRequest { params, result_tx } in pending_requests { + for PendingExecutionRequest { execution_timeout, params, result_tx } in pending_requests { if result_tx.is_canceled() { // Preparation could've taken quite a bit of time and the requester may be not interested // in execution anymore, in which case we just skip the request. @@ -510,6 +530,7 @@ async fn handle_prepare_done( execute_queue, execute::ToQueue::Enqueue { artifact: ArtifactPathId::new(artifact_id.clone(), cache_path), + execution_timeout, params, result_tx, }, @@ -597,6 +618,8 @@ mod tests { use assert_matches::assert_matches; use futures::future::BoxFuture; + const TEST_EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); + #[async_std::test] async fn pulse_test() { let pulse = pulse_every(Duration::from_millis(100)); @@ -840,9 +863,15 @@ mod tests { .await; let (result_tx, _result_rx) = oneshot::channel(); - host.execute_pvf(Pvf::from_discriminator(1), vec![], Priority::Critical, result_tx) - .await - .unwrap(); + host.execute_pvf( + Pvf::from_discriminator(1), + TEST_EXECUTION_TIMEOUT, + vec![], + Priority::Critical, + result_tx, + ) + .await + .unwrap(); run_until( &mut test.run, @@ -862,13 +891,20 @@ mod tests { let mut host = test.host_handle(); let (result_tx, result_rx_pvf_1_1) = oneshot::channel(); - host.execute_pvf(Pvf::from_discriminator(1), b"pvf1".to_vec(), Priority::Normal, result_tx) - .await - .unwrap(); + host.execute_pvf( + Pvf::from_discriminator(1), + TEST_EXECUTION_TIMEOUT, + b"pvf1".to_vec(), + Priority::Normal, + result_tx, + ) + .await + .unwrap(); let (result_tx, result_rx_pvf_1_2) = oneshot::channel(); host.execute_pvf( Pvf::from_discriminator(1), + TEST_EXECUTION_TIMEOUT, b"pvf1".to_vec(), Priority::Critical, result_tx, @@ -877,9 +913,15 @@ mod tests { .unwrap(); let (result_tx, result_rx_pvf_2) = oneshot::channel(); - host.execute_pvf(Pvf::from_discriminator(2), b"pvf2".to_vec(), Priority::Normal, result_tx) - .await - .unwrap(); + host.execute_pvf( + Pvf::from_discriminator(2), + TEST_EXECUTION_TIMEOUT, + b"pvf2".to_vec(), + Priority::Normal, + result_tx, + ) + .await + .unwrap(); assert_matches!( test.poll_and_recv_to_prepare_queue().await, @@ -947,9 +989,15 @@ mod tests { let mut host = test.host_handle(); let (result_tx, result_rx) = oneshot::channel(); - host.execute_pvf(Pvf::from_discriminator(1), b"pvf1".to_vec(), Priority::Normal, result_tx) - .await - .unwrap(); + host.execute_pvf( + Pvf::from_discriminator(1), + TEST_EXECUTION_TIMEOUT, + b"pvf1".to_vec(), + Priority::Normal, + result_tx, + ) + .await + .unwrap(); assert_matches!( test.poll_and_recv_to_prepare_queue().await, diff --git a/node/core/pvf/tests/it/main.rs b/node/core/pvf/tests/it/main.rs index 3689217880ef..e8fd7b665aa3 100644 --- a/node/core/pvf/tests/it/main.rs +++ b/node/core/pvf/tests/it/main.rs @@ -20,11 +20,13 @@ use polkadot_node_core_pvf::{ start, Config, InvalidCandidate, Metrics, Pvf, ValidationError, ValidationHost, }; use polkadot_parachain::primitives::{BlockData, ValidationParams, ValidationResult}; +use std::time::Duration; mod adder; mod worker_common; const PUPPET_EXE: &str = env!("CARGO_BIN_EXE_puppet_worker"); +const TEST_EXECUTION_TIMEOUT: Duration = Duration::from_secs(3); struct TestHost { _cache_dir: tempfile::TempDir, @@ -64,6 +66,7 @@ impl TestHost { .await .execute_pvf( Pvf::from_code(code.into()), + TEST_EXECUTION_TIMEOUT, params.encode(), polkadot_node_core_pvf::Priority::Normal, result_tx, diff --git a/node/overseer/examples/minimal-example.rs b/node/overseer/examples/minimal-example.rs index 0ff8201594fb..41ec66642976 100644 --- a/node/overseer/examples/minimal-example.rs +++ b/node/overseer/examples/minimal-example.rs @@ -75,6 +75,7 @@ impl Subsystem1 { let msg = CandidateValidationMessage::ValidateFromChainState( Default::default(), PoV { block_data: BlockData(Vec::new()) }.into(), + Default::default(), tx, ); ctx.send_message(::AllMessages::from(msg)) diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs index 39eb91e0f6d6..7fe1ed701a83 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -112,6 +112,7 @@ where ctx.send_message(CandidateValidationMessage::ValidateFromChainState( Default::default(), PoV { block_data: BlockData(Vec::new()) }.into(), + Default::default(), tx, )) .await; @@ -791,7 +792,12 @@ where fn test_candidate_validation_msg() -> CandidateValidationMessage { let (sender, _) = oneshot::channel(); let pov = Arc::new(PoV { block_data: BlockData(Vec::new()) }); - CandidateValidationMessage::ValidateFromChainState(Default::default(), pov, sender) + CandidateValidationMessage::ValidateFromChainState( + Default::default(), + pov, + Default::default(), + sender, + ) } fn test_candidate_backing_msg() -> CandidateBackingMessage { diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index 6e8490b67b91..adc8846f4298 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -22,7 +22,7 @@ #![deny(missing_docs)] -use std::{convert::TryFrom, pin::Pin}; +use std::{convert::TryFrom, pin::Pin, time::Duration}; use bounded_vec::BoundedVec; use futures::Future; @@ -71,6 +71,17 @@ pub const POV_BOMB_LIMIT: usize = (MAX_POV_SIZE * 4u32) as usize; /// Number of sessions we want to consider in disputes. pub const DISPUTE_WINDOW: SessionIndex = 6; +/// The amount of time to spend on execution during backing. +pub const BACKING_EXECUTION_TIMEOUT: Duration = Duration::from_secs(2); + +/// The amount of time to spend on execution during approval or disputes. +/// +/// This is deliberately much longer than the backing execution timeout to +/// ensure that in the absence of extremely large disparities between hardware, +/// blocks that pass backing are considerd executable by approval checkers or +/// dispute participants. +pub const APPROVAL_EXECUTION_TIMEOUT: Duration = Duration::from_secs(6); + /// The cumulative weight of a block in a fork-choice rule. pub type BlockWeight = u32; diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index c6fb92736c51..ea70d3b2707a 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -51,6 +51,7 @@ use polkadot_statement_table::v1::Misbehavior; use std::{ collections::{BTreeMap, HashSet}, sync::Arc, + time::Duration, }; /// Network events as transmitted to other subsystems, wrapped in their message types. @@ -114,6 +115,8 @@ pub enum CandidateValidationMessage { ValidateFromChainState( CandidateDescriptor, Arc, + /// Execution timeout + Duration, oneshot::Sender>, ), /// Validate a candidate with provided, exhaustive parameters for validation. @@ -130,6 +133,8 @@ pub enum CandidateValidationMessage { ValidationCode, CandidateDescriptor, Arc, + /// Execution timeout + Duration, oneshot::Sender>, ), } @@ -138,8 +143,8 @@ impl CandidateValidationMessage { /// If the current variant contains the relay parent hash, return it. pub fn relay_parent(&self) -> Option { match self { - Self::ValidateFromChainState(_, _, _) => None, - Self::ValidateFromExhaustive(_, _, _, _, _) => None, + Self::ValidateFromChainState(_, _, _, _) => None, + Self::ValidateFromExhaustive(_, _, _, _, _, _) => None, } } } diff --git a/roadmap/implementers-guide/src/node/approval/approval-voting.md b/roadmap/implementers-guide/src/node/approval/approval-voting.md index c6367c050a04..adb95e1f6389 100644 --- a/roadmap/implementers-guide/src/node/approval/approval-voting.md +++ b/roadmap/implementers-guide/src/node/approval/approval-voting.md @@ -281,7 +281,7 @@ On receiving an `ApprovedAncestor(Hash, BlockNumber, response_channel)`: * Load the historical validation code of the parachain by dispatching a `RuntimeApiRequest::ValidationCodeByHash(descriptor.validation_code_hash)` against the state of `block_hash`. * Spawn a background task with a clone of `background_tx` * Wait for the available data - * Issue a `CandidateValidationMessage::ValidateFromExhaustive` message + * Issue a `CandidateValidationMessage::ValidateFromExhaustive` message with `APPROVAL_EXECUTION_TIMEOUT` as the timeout parameter. * Wait for the result of validation * Check that the result of validation, if valid, matches the commitments in the receipt. * If valid, issue a message on `background_tx` detailing the request. diff --git a/roadmap/implementers-guide/src/node/backing/candidate-backing.md b/roadmap/implementers-guide/src/node/backing/candidate-backing.md index c39ffabdcd98..4b25a89cb1a5 100644 --- a/roadmap/implementers-guide/src/node/backing/candidate-backing.md +++ b/roadmap/implementers-guide/src/node/backing/candidate-backing.md @@ -123,7 +123,7 @@ Dispatch a [`AvailabilityDistributionMessage`][ADM]`::FetchPoV{ validator_index, ### Validate PoV Block Create a `(sender, receiver)` pair. -Dispatch a `CandidateValidationMessage::Validate(validation function, candidate, pov, sender)` and listen on the receiver for a response. +Dispatch a `CandidateValidationMessage::Validate(validation function, candidate, pov, BACKING_EXECUTION_TIMEOUT, sender)` and listen on the receiver for a response. ### Distribute Signed Statement diff --git a/roadmap/implementers-guide/src/node/disputes/dispute-participation.md b/roadmap/implementers-guide/src/node/disputes/dispute-participation.md index b3e1c11fa2be..fc0517fa4e1e 100644 --- a/roadmap/implementers-guide/src/node/disputes/dispute-participation.md +++ b/roadmap/implementers-guide/src/node/disputes/dispute-participation.md @@ -48,7 +48,7 @@ Conclude. * If the data is recovered, dispatch a [`RuntimeApiMessage::ValidationCodeByHash`][RuntimeApiMessage] with the parameters `(candidate_receipt.descriptor.validation_code_hash)` at `state.recent_block.hash`. * Dispatch a [`AvailabilityStoreMessage::StoreAvailableData`][AvailabilityStoreMessage] with the data. * If the code is not fetched from the chain, return. This should be impossible with correct relay chain configuration, at least if chain synchronization is working correctly. -* Dispatch a [`CandidateValidationMessage::ValidateFromExhaustive`][CandidateValidationMessage] with the available data and the validation code. +* Dispatch a [`CandidateValidationMessage::ValidateFromExhaustive`][CandidateValidationMessage] with the available data and the validation code and `APPROVAL_EXECUTION_TIMEOUT` as the timeout parameter. * If the validation result is `Invalid`, [cast invalid votes](#cast-votes) and return. * If the validation fails, [cast invalid votes](#cast-votes) and return. * If the validation succeeds, compute the `CandidateCommitments` based on the validation result and compare against the candidate receipt's `commitments_hash`. If they match, [cast valid votes](#cast-votes) and if not, [cast invalid votes](#cast-votes). diff --git a/roadmap/implementers-guide/src/types/overseer-protocol.md b/roadmap/implementers-guide/src/types/overseer-protocol.md index 78d536f1a21c..f3195e713399 100644 --- a/roadmap/implementers-guide/src/types/overseer-protocol.md +++ b/roadmap/implementers-guide/src/types/overseer-protocol.md @@ -785,6 +785,9 @@ enum ValidationResult { Invalid, } +const BACKING_EXECUTION_TIMEOUT: Duration = 2 seconds; +const APPROVAL_EXECUTION_TIMEOUT: Duration = 6 seconds; + /// Messages received by the Validation subsystem. /// /// ## Validation Requests @@ -807,6 +810,7 @@ pub enum CandidateValidationMessage { ValidateFromChainState( CandidateDescriptor, Arc, + Duration, // Execution timeout. oneshot::Sender>, ), /// Validate a candidate with provided, exhaustive parameters for validation. @@ -823,6 +827,7 @@ pub enum CandidateValidationMessage { ValidationCode, CandidateDescriptor, Arc, + Duration, // Execution timeout. oneshot::Sender>, ), } From 1a9239152b6c7b4a9f2f05e6dea51f1289715223 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Mon, 4 Oct 2021 17:02:31 +0200 Subject: [PATCH 134/138] Free disputed cores before processing bitfields (#4008) * guide: extract free_cores in scheduler * scheduler: extract free cores to a separate function * guide: remove disputed cores from scheduler first * free disputed cores in scheduler before processing bitfields * spellcheck is mostly right but sometimes stupid * add comment and fmt --- .../src/runtime/parainherent.md | 4 +- .../src/runtime/scheduler.md | 8 ++- runtime/parachains/src/paras_inherent.rs | 16 +++-- runtime/parachains/src/scheduler.rs | 71 ++++++++++--------- 4 files changed, 58 insertions(+), 41 deletions(-) diff --git a/roadmap/implementers-guide/src/runtime/parainherent.md b/roadmap/implementers-guide/src/runtime/parainherent.md index cb5bb45d8d81..f9aacc2c3578 100644 --- a/roadmap/implementers-guide/src/runtime/parainherent.md +++ b/roadmap/implementers-guide/src/runtime/parainherent.md @@ -26,11 +26,11 @@ 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 concluded 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`, sort them, and invoke `Scheduler::free_cores` with them. 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`. - 1. Combine and sort the dispute-freed cores, the bitfield-freed cores, and the timed-out cores. + 1. Combine and sort the the bitfield-freed cores and the timed-out cores. 1. Invoke `Scheduler::clear` 1. Invoke `Scheduler::schedule(freed_cores, System::current_block())` 1. Extract `parent_storage_root` from the parent header, diff --git a/roadmap/implementers-guide/src/runtime/scheduler.md b/roadmap/implementers-guide/src/runtime/scheduler.md index 68b1a8abb722..16c3280d1808 100644 --- a/roadmap/implementers-guide/src/runtime/scheduler.md +++ b/roadmap/implementers-guide/src/runtime/scheduler.md @@ -82,7 +82,7 @@ digraph { ## Validator Groups -Validator group assignments do not need to change very quickly. The security benefits of fast rotation are redundant with the challenge mechanism in the [Approval process](../protocol-approval.md). Because of this, we only divide validators into groups at the beginning of the session and do not shuffle membership during the session. However, we do take steps to ensure that no particular validator group has dominance over a single parachain or parathread-multiplexer for an entire session to provide better guarantees of liveness. +Validator group assignments do not need to change very quickly. The security benefits of fast rotation are redundant with the challenge mechanism in the [Approval process](../protocol-approval.md). Because of this, we only divide validators into groups at the beginning of the session and do not shuffle membership during the session. However, we do take steps to ensure that no particular validator group has dominance over a single parachain or parathread-multiplexer for an entire session to provide better guarantees of live-ness. Validator groups rotate across availability cores in a round-robin fashion, with rotation occurring at fixed intervals. The i'th group will be assigned to the `(i+k)%n`'th core at any point in time, where `k` is the number of rotations that have occurred in the session, and `n` is the number of cores. This makes upcoming rotations within the same session predictable. @@ -185,7 +185,7 @@ Actions: 1. Resize `AvailabilityCores` to have length `n_cores` with all `None` entries. 1. Compute new validator groups by shuffling using a secure randomness beacon - Note that the total number of validators `V` in AV may not be evenly divided by `n_cores`. - - The groups are selected by partitioning AV. The first V % N groups will have (V / n_cores) + 1 members, while the remaining groups will have (V / N) members each. + - The groups are selected by partitioning AV. The first `V % N` groups will have `(V / n_cores) + 1` members, while the remaining groups will have `(V / N)` members each. - Instead of using the indices within AV, which point to the broader set, indices _into_ AV should be used. This implies that groups should have simply ascending validator indices. 1. Prune the parathread queue to remove all retries beyond `configuration.parathread_retries`. - Also prune all parathread claims corresponding to de-registered parathreads. @@ -209,11 +209,13 @@ No finalization routine runs for this module. - The core used for the parathread claim is the `next_core` field of the `ParathreadQueue` and adding `Paras::parachains().len()` to it. - `next_core` is then updated by adding 1 and taking it modulo `config.parathread_cores`. - The claim is then added to the claim index. -- `schedule(Vec<(CoreIndex, FreedReason)>, now: BlockNumber)`: schedule new core assignments, with a parameter indicating previously-occupied cores which are to be considered returned and why they are being returned. +- `free_cores(Vec<(CoreIndex, FreedReason)>)`: indicate previosuly-occupied cores which are to be considered returned and why they are being returned. - All freed parachain cores should be assigned to their respective parachain - All freed parathread cores whose reason for freeing was `FreedReason::Concluded` should have the claim removed from the claim index. - All freed parathread cores whose reason for freeing was `FreedReason::TimedOut` should have the claim added to the parathread queue again without retries incremented - All freed parathread cores should take the next parathread entry from the queue. +- `schedule(Vec<(CoreIndex, FreedReason)>, now: BlockNumber)`: schedule new core assignments, with a parameter indicating previously-occupied cores which are to be considered returned and why they are being returned. + - Invoke `free_cores(freed_cores)` - The i'th validator group will be assigned to the `(i+k)%n`'th core at any point in time, where `k` is the number of rotations that have occurred in the session, and `n` is the total number of cores. This makes upcoming rotations within the same session predictable. Rotations are based off of `now`. - `scheduled() -> Vec`: Get currently scheduled core assignments. - `occupied(Vec)`. Note that the given cores have become occupied. diff --git a/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs index ea480ad7c96a..cbffb9ff7937 100644 --- a/runtime/parachains/src/paras_inherent.rs +++ b/runtime/parachains/src/paras_inherent.rs @@ -173,7 +173,7 @@ pub mod pallet { // Handle disputes logic. let current_session = >::session_index(); - let freed_disputed: Vec<(_, FreedReason)> = { + { let new_current_dispute_sets: Vec<_> = disputes .iter() .filter(|s| s.session == current_session) @@ -187,7 +187,7 @@ pub mod pallet { return Ok(Some(MINIMAL_INCLUSION_INHERENT_WEIGHT).into()) } - if !new_current_dispute_sets.is_empty() { + let mut freed_disputed = if !new_current_dispute_sets.is_empty() { let concluded_invalid_disputes: Vec<_> = new_current_dispute_sets .iter() .filter(|(s, c)| T::DisputesHandler::concluded_invalid(*s, *c)) @@ -200,6 +200,13 @@ pub mod pallet { .collect() } else { Vec::new() + }; + + if !freed_disputed.is_empty() { + // unstable sort is fine, because core indices are unique + // i.e. the same candidate can't occupy 2 cores at once. + freed_disputed.sort_unstable_by_key(|pair| pair.0); // sort by core index + >::free_cores(freed_disputed); } }; @@ -227,12 +234,13 @@ pub mod pallet { }; // Schedule paras again, given freed cores, and reasons for freeing. - let mut freed = freed_disputed + let mut freed = freed_concluded .into_iter() - .chain(freed_concluded.into_iter().map(|(c, _hash)| (c, FreedReason::Concluded))) + .map(|(c, _hash)| (c, FreedReason::Concluded)) .chain(freed_timeout.into_iter().map(|c| (c, FreedReason::TimedOut))) .collect::>(); + // unstable sort is fine, because core indices are unique. freed.sort_unstable_by_key(|pair| pair.0); // sort by core index >::clear(); diff --git a/runtime/parachains/src/scheduler.rs b/runtime/parachains/src/scheduler.rs index e6772c19d910..8e948e3b5529 100644 --- a/runtime/parachains/src/scheduler.rs +++ b/runtime/parachains/src/scheduler.rs @@ -369,6 +369,43 @@ impl Pallet { }) } + /// Free unassigned cores. Provide a list of cores that should be considered newly-freed along with the reason + /// for them being freed. The list is assumed to be sorted in ascending order by core index. + pub(crate) fn free_cores(just_freed_cores: impl IntoIterator) { + let config = >::config(); + + AvailabilityCores::::mutate(|cores| { + for (freed_index, freed_reason) in just_freed_cores { + if (freed_index.0 as usize) < cores.len() { + match cores[freed_index.0 as usize].take() { + None => continue, + Some(CoreOccupied::Parachain) => {}, + Some(CoreOccupied::Parathread(entry)) => { + match freed_reason { + FreedReason::Concluded => { + // After a parathread candidate has successfully been included, + // open it up for further claims! + ParathreadClaimIndex::::mutate(|index| { + if let Ok(i) = index.binary_search(&entry.claim.0) { + index.remove(i); + } + }) + }, + FreedReason::TimedOut => { + // If a parathread candidate times out, it's not the collator's fault, + // so we don't increment retries. + ParathreadQueue::::mutate(|queue| { + queue.enqueue_entry(entry, config.parathread_cores); + }) + }, + } + }, + } + } + } + }) + } + /// Schedule all unassigned cores, where possible. Provide a list of cores that should be considered /// newly-freed along with the reason for them being freed. The list is assumed to be sorted in /// ascending order by core index. @@ -376,38 +413,9 @@ impl Pallet { just_freed_cores: impl IntoIterator, now: T::BlockNumber, ) { - let mut cores = AvailabilityCores::::get(); - let config = >::config(); - - for (freed_index, freed_reason) in just_freed_cores { - if (freed_index.0 as usize) < cores.len() { - match cores[freed_index.0 as usize].take() { - None => continue, - Some(CoreOccupied::Parachain) => {}, - Some(CoreOccupied::Parathread(entry)) => { - match freed_reason { - FreedReason::Concluded => { - // After a parathread candidate has successfully been included, - // open it up for further claims! - ParathreadClaimIndex::::mutate(|index| { - if let Ok(i) = index.binary_search(&entry.claim.0) { - index.remove(i); - } - }) - }, - FreedReason::TimedOut => { - // If a parathread candidate times out, it's not the collator's fault, - // so we don't increment retries. - ParathreadQueue::::mutate(|queue| { - queue.enqueue_entry(entry, config.parathread_cores); - }) - }, - } - }, - } - } - } + Self::free_cores(just_freed_cores); + let cores = AvailabilityCores::::get(); let parachains = >::parachains(); let mut scheduled = Scheduled::::get(); let mut parathread_queue = ParathreadQueue::::get(); @@ -510,7 +518,6 @@ impl Pallet { Scheduled::::set(scheduled); ParathreadQueue::::set(parathread_queue); - AvailabilityCores::::set(cores); } /// Note that the given cores have become occupied. Behavior undefined if any of the given cores were not scheduled From 4870e7bc52e305fc79e5b612524e1e5e7667212c Mon Sep 17 00:00:00 2001 From: Chevdor Date: Mon, 4 Oct 2021 18:09:19 +0200 Subject: [PATCH 135/138] chore: update `builder` image (#3884) * chore: update `builder` image fix #9765 * fix: fix binary path * chore: refresh of the builder image + build script * Fix port * Fix image source * Update scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile Co-authored-by: Denis Pisarev --- scripts/dockerfiles/polkadot/build.sh | 8 ++--- .../polkadot/docker-compose-local.yml | 30 +++++++++++-------- .../dockerfiles/polkadot/docker-compose.yml | 17 +++++++---- .../polkadot/polkadot_builder.Dockerfile | 26 ++++++++++------ 4 files changed, 49 insertions(+), 32 deletions(-) diff --git a/scripts/dockerfiles/polkadot/build.sh b/scripts/dockerfiles/polkadot/build.sh index ee4d29991a86..cf100bedbfaa 100755 --- a/scripts/dockerfiles/polkadot/build.sh +++ b/scripts/dockerfiles/polkadot/build.sh @@ -8,19 +8,17 @@ PROJECT_ROOT=`git rev-parse --show-toplevel` cd $PROJECT_ROOT # Find the current version from Cargo.toml -VERSION=`grep "^version" ./Cargo.toml | egrep -o "([0-9\.]+)"` +VERSION=`grep "^version" ./cli/Cargo.toml | egrep -o "([0-9\.]+)"` GITUSER=parity GITREPO=polkadot # Build the image echo "Building ${GITUSER}/${GITREPO}:latest docker image, hang on!" -time docker build -f ./scripts/docker/polkadot/polkadot_builder.Dockerfile --build-arg RUSTC_WRAPPER= --build-arg PROFILE=release -t ${GITUSER}/${GITREPO}:latest . +time docker build -f ./scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile -t ${GITUSER}/${GITREPO}:latest . +docker tag ${GITUSER}/${GITREPO}:latest ${GITUSER}/${GITREPO}:v${VERSION} # Show the list of available images for this repo echo "Image is ready" docker images | grep ${GITREPO} -echo -e "\nIf you just built version ${VERSION}, you may want to update your tag:" -echo " $ docker tag ${GITUSER}/${GITREPO}:$VERSION ${GITUSER}/${GITREPO}:${VERSION}" - popd diff --git a/scripts/dockerfiles/polkadot/docker-compose-local.yml b/scripts/dockerfiles/polkadot/docker-compose-local.yml index 2c93799259ef..1ff3a1ccaac2 100644 --- a/scripts/dockerfiles/polkadot/docker-compose-local.yml +++ b/scripts/dockerfiles/polkadot/docker-compose-local.yml @@ -1,35 +1,39 @@ version: '3' services: node_alice: - build: - context: . - dockerfile: polkadot_builder.Dockerfile ports: - "30333:30333" - "9933:9933" - "9944:9944" - image: chevdor/polkadot:latest + - "9615:9615" + image: parity/polkadot:latest volumes: - "polkadot-data-alice:/data" - command: polkadot --chain=polkadot-local --alice -d /data --node-key 0000000000000000000000000000000000000000000000000000000000000001 + command: | + --chain=polkadot-local + --alice + -d /data + --node-key 0000000000000000000000000000000000000000000000000000000000000001 networks: testing_net: ipv4_address: 172.28.1.1 node_bob: - build: - context: . - dockerfile: polkadot_builder.Dockerfile ports: - - "30344:30344" - - "9935:9935" - - "9945:9945" - image: chevdor/polkadot:latest + - "30344:30333" + - "9935:9933" + - "9945:9944" + - "29615:9615" + image: parity/polkadot:latest volumes: - "polkadot-data-bob:/data" links: - "node_alice:alice" - command: polkadot --chain=polkadot-local --bob -d /data --port 30344 --rpc-port 9935 --ws-port 9945 --bootnodes '/ip4/172.28.1.1/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR' + command: | + --chain=polkadot-local + --bob + -d /data + --bootnodes '/ip4/172.28.1.1/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR' networks: testing_net: ipv4_address: 172.28.1.2 diff --git a/scripts/dockerfiles/polkadot/docker-compose.yml b/scripts/dockerfiles/polkadot/docker-compose.yml index 54fe158735d8..978191af88c1 100644 --- a/scripts/dockerfiles/polkadot/docker-compose.yml +++ b/scripts/dockerfiles/polkadot/docker-compose.yml @@ -1,16 +1,23 @@ version: '3' services: polkadot: - build: - context: . - dockerfile: polkadot_builder.Dockerfile ports: - "127.0.0.1:30333:30333/tcp" - "127.0.0.1:9933:9933/tcp" - image: chevdor/polkadot:latest + image: parity/polkadot:latest volumes: - "polkadot-data:/data" - command: polkadot + command: | + --unsafe-rpc-external + --unsafe-ws-external + --rpc-cors all + --prometheus-external + + ports: + - "30333:30333" + - "9933:9933" + - "9944:9944" + - "9615:9615" volumes: polkadot-data: diff --git a/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile b/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile index 2fc5787e6cb0..6b096244a506 100644 --- a/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile +++ b/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile @@ -1,27 +1,35 @@ +# This is the build stage for Polkadot. Here we create the binary in a temporary image. FROM docker.io/paritytech/ci-linux:production as builder -LABEL io.parity.image.description="This is the build stage for Polkadot. Here we create the binary." WORKDIR /polkadot - COPY . /polkadot -RUN cargo build --release --locked - -# ===== SECOND STAGE ====== +RUN cargo build --locked --release +# This is the 2nd stage: a very small image where we copy the Polkadot binary." FROM docker.io/library/ubuntu:20.04 -LABEL io.parity.image.description="Polkadot: a platform for web3. This is a self-buit multistage image." + +LABEL description="Multistage Docker image for Polkadot: a platform for web3" \ + io.parity.image.type="builder" \ + io.parity.image.authors="chevdor@gmail.com, devops-team@parity.io" \ + io.parity.image.vendor="Parity Technologies" \ + io.parity.image.description="Polkadot: a platform for web3" \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile" \ + io.parity.image.documentation="https://github.com/paritytech/polkadot/" 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 && \ - mkdir /data && \ + mkdir -p /data /polkadot/.local/share && \ chown -R polkadot:polkadot /data && \ ln -s /data /polkadot/.local/share/polkadot && \ - rm -rf /usr/bin /usr/sbin +# unclutter and minimize the attack surface + rm -rf /usr/bin /usr/sbin && \ +# check if executable works in this container + /usr/local/bin/polkadot --version USER polkadot + EXPOSE 30333 9933 9944 9615 VOLUME ["/data"] From 59f09017e7147e28657589ad6cc6c10ba7ea4eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 4 Oct 2021 20:13:35 +0200 Subject: [PATCH 136/138] Companion for #9834 (Transaction Priority) (#3901) * Add new associated type. * Update fee multiplier. * Bump Substrate --- Cargo.lock | 322 ++++++++++++++++---------------- runtime/kusama/src/lib.rs | 4 + runtime/polkadot/src/lib.rs | 4 + runtime/rococo/src/lib.rs | 4 + runtime/test-runtime/src/lib.rs | 4 + runtime/westend/src/lib.rs | 4 + 6 files changed, 181 insertions(+), 161 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf94de083777..601f398c97d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -461,7 +461,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "beefy-primitives", "fnv", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -509,12 +509,12 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -1918,7 +1918,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", ] @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -1956,7 +1956,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "Inflector", "chrono", @@ -1982,7 +1982,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -1996,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -2024,7 +2024,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "bitflags", "frame-metadata", @@ -2051,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2063,7 +2063,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.1.0", @@ -2075,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro2", "quote", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -2119,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "log", @@ -2136,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -2151,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#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "sp-api", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "sp-api", @@ -2373,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "chrono", "frame-election-provider-support", @@ -4595,7 +4595,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4609,7 +4609,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -4625,7 +4625,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -4640,7 +4640,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4664,7 +4664,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4684,7 +4684,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4699,7 +4699,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "beefy-primitives", "frame-support", @@ -4715,7 +4715,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -4740,7 +4740,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4842,7 +4842,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4858,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#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4882,7 +4882,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4900,7 +4900,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4915,7 +4915,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4938,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4954,7 +4954,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4974,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -4991,7 +4991,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5008,7 +5008,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5026,7 +5026,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5042,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5059,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5074,7 +5074,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5105,7 +5105,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5128,7 +5128,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5143,7 +5143,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5157,7 +5157,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5173,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5194,7 +5194,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5210,7 +5210,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5224,7 +5224,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5247,7 +5247,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -5258,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "log", "sp-arithmetic", @@ -5267,7 +5267,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5281,7 +5281,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5299,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5318,7 +5318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-support", "frame-system", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5352,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#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5363,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5380,7 +5380,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -5396,7 +5396,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-benchmarking", "frame-support", @@ -7793,7 +7793,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -8056,7 +8056,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "log", "sp-core", @@ -8067,7 +8067,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "derive_more", @@ -8094,7 +8094,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8117,7 +8117,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8133,7 +8133,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8149,7 +8149,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8160,7 +8160,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "chrono", "fdlimit", @@ -8198,7 +8198,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "fnv", "futures 0.3.17", @@ -8226,7 +8226,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "hash-db", "kvdb", @@ -8251,7 +8251,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "futures 0.3.17", @@ -8275,7 +8275,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "derive_more", @@ -8318,7 +8318,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "derive_more", "futures 0.3.17", @@ -8342,7 +8342,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8355,7 +8355,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "assert_matches", "async-trait", @@ -8389,7 +8389,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "futures 0.3.17", @@ -8415,7 +8415,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "sc-client-api", "sp-authorship", @@ -8426,7 +8426,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8452,7 +8452,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "derive_more", "environmental", @@ -8470,7 +8470,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "log", "parity-scale-codec", @@ -8486,7 +8486,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8504,7 +8504,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "derive_more", @@ -8541,7 +8541,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "derive_more", "finality-grandpa", @@ -8565,7 +8565,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8582,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "derive_more", @@ -8597,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "hash-db", "parity-scale-codec", @@ -8615,7 +8615,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-std", "async-trait", @@ -8666,7 +8666,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8682,7 +8682,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "bytes 1.0.1", "fnv", @@ -8709,7 +8709,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "libp2p", @@ -8722,7 +8722,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8731,7 +8731,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "hash-db", @@ -8762,7 +8762,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8787,7 +8787,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8804,7 +8804,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "directories", @@ -8869,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "log", "parity-scale-codec", @@ -8883,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8905,7 +8905,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "chrono", "futures 0.3.17", @@ -8923,7 +8923,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8952,7 +8952,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -8963,7 +8963,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "intervalier", @@ -8990,7 +8990,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "derive_more", "futures 0.3.17", @@ -9004,7 +9004,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -9456,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "hash-db", "log", @@ -9473,7 +9473,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "blake2-rfc", "proc-macro-crate 1.1.0", @@ -9485,7 +9485,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "integer-sqrt", "num-traits", @@ -9513,7 +9513,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -9526,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "parity-scale-codec", @@ -9538,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "sp-api", @@ -9550,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "log", @@ -9568,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "futures 0.3.17", @@ -9587,7 +9587,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "merlin", @@ -9610,7 +9610,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -9621,7 +9621,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9633,7 +9633,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "base58", "blake2-rfc", @@ -9678,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9687,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro2", "quote", @@ -9697,7 +9697,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "environmental", "parity-scale-codec", @@ -9708,7 +9708,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "finality-grandpa", "log", @@ -9726,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9740,7 +9740,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "hash-db", @@ -9764,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "lazy_static", "sp-core", @@ -9775,7 +9775,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "derive_more", @@ -9792,7 +9792,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "zstd", ] @@ -9800,7 +9800,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -9815,7 +9815,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -9826,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "sp-api", "sp-core", @@ -9836,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "backtrace", ] @@ -9844,7 +9844,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "rustc-hash", "serde", @@ -9854,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "either", "hash256-std-hasher", @@ -9876,7 +9876,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9893,7 +9893,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "Inflector", "proc-macro-crate 1.1.0", @@ -9905,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "serde", "serde_json", @@ -9914,7 +9914,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -9928,7 +9928,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "scale-info", @@ -9939,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "hash-db", "log", @@ -9962,12 +9962,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9980,7 +9980,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "log", "sp-core", @@ -9993,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -10009,7 +10009,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "erased-serde", "log", @@ -10027,7 +10027,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "sp-api", "sp-runtime", @@ -10036,7 +10036,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "log", @@ -10052,7 +10052,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "hash-db", "memory-db", @@ -10067,7 +10067,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10083,7 +10083,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10094,7 +10094,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10290,7 +10290,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "platforms", ] @@ -10298,7 +10298,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10320,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-std", "derive_more", @@ -10334,7 +10334,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "async-trait", "futures 0.3.17", @@ -10361,7 +10361,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10371,7 +10371,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "proc-macro-crate 1.1.0", "proc-macro2", @@ -10382,7 +10382,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10535,7 +10535,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "frame-system", "futures 0.3.17", @@ -10975,7 +10975,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#9be8fdd36a70e19cd286bec00df740331b637546" +source = "git+https://github.com/paritytech/substrate?branch=master#125092f355c11166c57deeef0e1841301a351889" dependencies = [ "jsonrpsee-ws-client", "log", diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index ad97e499e958..5f461a88ea2e 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -276,11 +276,15 @@ impl pallet_balances::Config for Runtime { parameter_types! { pub const TransactionByteFee: Balance = 10 * MILLICENTS; + /// This value increases the priority of `Operational` transactions by adding + /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`. + pub const OperationalFeeMultiplier: u8 = 5; } impl pallet_transaction_payment::Config for Runtime { type OnChargeTransaction = CurrencyAdapter>; type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; type WeightToFee = WeightToFee; type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; } diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 3addbf6932d7..7a772733809e 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -302,11 +302,15 @@ impl pallet_balances::Config for Runtime { parameter_types! { pub const TransactionByteFee: Balance = 10 * MILLICENTS; + /// This value increases the priority of `Operational` transactions by adding + /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`. + pub const OperationalFeeMultiplier: u8 = 5; } impl pallet_transaction_payment::Config for Runtime { type OnChargeTransaction = CurrencyAdapter>; type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; type WeightToFee = WeightToFee; type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index 900d53150ef6..fc8f8b2c138b 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -452,11 +452,15 @@ impl pallet_timestamp::Config for Runtime { parameter_types! { pub const TransactionByteFee: Balance = 10 * MILLICENTS; + /// This value increases the priority of `Operational` transactions by adding + /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`. + pub const OperationalFeeMultiplier: u8 = 5; } impl pallet_transaction_payment::Config for Runtime { type OnChargeTransaction = CurrencyAdapter>; type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; type WeightToFee = WeightToFee; type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; } diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 842f451c40ed..560d286e1675 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -223,11 +223,15 @@ impl pallet_balances::Config for Runtime { parameter_types! { pub storage TransactionByteFee: Balance = 10 * MILLICENTS; + /// This value increases the priority of `Operational` transactions by adding + /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`. + pub const OperationalFeeMultiplier: u8 = 5; } impl pallet_transaction_payment::Config for Runtime { type OnChargeTransaction = CurrencyAdapter; type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; type WeightToFee = WeightToFee; type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 41c9d98e4076..338fa57c52b6 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -262,11 +262,15 @@ impl pallet_balances::Config for Runtime { parameter_types! { pub const TransactionByteFee: Balance = 10 * MILLICENTS; + /// This value increases the priority of `Operational` transactions by adding + /// a "virtual tip" that's equal to the `OperationalFeeMultiplier * final_fee`. + pub const OperationalFeeMultiplier: u8 = 5; } impl pallet_transaction_payment::Config for Runtime { type OnChargeTransaction = CurrencyAdapter>; type TransactionByteFee = TransactionByteFee; + type OperationalFeeMultiplier = OperationalFeeMultiplier; type WeightToFee = WeightToFee; type FeeMultiplierUpdate = SlowAdjustingFeeUpdate; } From 1f50b49268d98ad74d3f60ebad309bdb1b05271d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Oct 2021 09:49:59 +0000 Subject: [PATCH 137/138] Bump quote from 1.0.9 to 1.0.10 (#4013) Bumps [quote](https://github.com/dtolnay/quote) from 1.0.9 to 1.0.10. - [Release notes](https://github.com/dtolnay/quote/releases) - [Commits](https://github.com/dtolnay/quote/compare/1.0.9...1.0.10) --- updated-dependencies: - dependency-name: quote dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- node/overseer/overseer-gen/proc-macro/Cargo.toml | 2 +- xcm/procedural/Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 601f398c97d1..da471c464f6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7507,9 +7507,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 9495fb5a8678..e51f63010f7d 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -13,7 +13,7 @@ proc-macro = true [dependencies] syn = { version = "1.0.78", features = ["full", "extra-traits"] } -quote = "1.0.9" +quote = "1.0.10" proc-macro2 = "1.0.26" proc-macro-crate = "1.1.0" diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index 03b5275c04f6..4eb78cdf23da 100644 --- a/xcm/procedural/Cargo.toml +++ b/xcm/procedural/Cargo.toml @@ -9,5 +9,5 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.28" -quote = "1.0.9" +quote = "1.0.10" syn = "1.0.78" From 2a3fca3c880bc42966c7133b3b5a0f08f7e93cb7 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi Date: Tue, 5 Oct 2021 10:07:47 -0400 Subject: [PATCH 138/138] Allow an Offset to Lease Periods (#3980) * add slot offset for slots * trying things out * fix test * improve api to return the first block of a new lease period * add an integration test with offset * de-duplicate test * hide lease period_period_length from public api * fix benchmarks * Update runtime/common/src/slots.rs * support the exact same range of crowdloans * fix docs * fix docs again * introduce offset to runtimes * fix and check edge case w/ offset and lease period first block * remove newline * turn into an option * fix benchmarks Co-authored-by: Robert Habermeier --- runtime/common/src/auctions.rs | 63 +++-- runtime/common/src/crowdloan.rs | 113 ++++++--- runtime/common/src/integration_tests.rs | 320 ++++++++++++------------ runtime/common/src/slots.rs | 89 +++++-- runtime/common/src/traits.rs | 42 ++-- runtime/kusama/src/lib.rs | 1 + runtime/polkadot/src/lib.rs | 7 + runtime/rococo/src/lib.rs | 1 + runtime/westend/src/lib.rs | 1 + 9 files changed, 392 insertions(+), 245 deletions(-) diff --git a/runtime/common/src/auctions.rs b/runtime/common/src/auctions.rs index a3866fed2ba2..e605328885eb 100644 --- a/runtime/common/src/auctions.rs +++ b/runtime/common/src/auctions.rs @@ -34,8 +34,9 @@ use primitives::v1::Id as ParaId; use sp_runtime::traits::{CheckedSub, One, Saturating, Zero}; use sp_std::{mem::swap, prelude::*}; -type CurrencyOf = <::Leaser as Leaser>::Currency; -type BalanceOf = <<::Leaser as Leaser>::Currency as Currency< +type CurrencyOf = + <::Leaser as Leaser<::BlockNumber>>::Currency; +type BalanceOf = <<::Leaser as Leaser<::BlockNumber>>::Currency as Currency< ::AccountId, >>::Balance; @@ -65,7 +66,9 @@ impl WeightInfo for TestWeightInfo { /// An auction index. We count auctions in this type. pub type AuctionIndex = u32; -type LeasePeriodOf = <::Leaser as Leaser>::LeasePeriod; +type LeasePeriodOf = + <::Leaser as Leaser<::BlockNumber>>::LeasePeriod; + // Winning data type. This encodes the top bidders of each range together with their bid. type WinningData = [Option<(::AccountId, ParaId, BalanceOf)>; SlotRange::SLOT_RANGE_COUNT]; @@ -91,7 +94,11 @@ pub mod pallet { type Event: From> + IsType<::Event>; /// The type representing the leasing system. - type Leaser: Leaser; + type Leaser: Leaser< + Self::BlockNumber, + AccountId = Self::AccountId, + LeasePeriod = Self::BlockNumber, + >; /// The parachain registrar type. type Registrar: Registrar; @@ -299,9 +306,8 @@ pub mod pallet { } } -impl Auctioneer for Pallet { +impl Auctioneer for Pallet { type AccountId = T::AccountId; - type BlockNumber = T::BlockNumber; type LeasePeriod = T::BlockNumber; type Currency = CurrencyOf; @@ -313,7 +319,7 @@ impl Auctioneer for Pallet { } // Returns the status of the auction given the current block number. - fn auction_status(now: Self::BlockNumber) -> AuctionStatus { + fn auction_status(now: T::BlockNumber) -> AuctionStatus { let early_end = match AuctionInfo::::get() { Some((_, early_end)) => early_end, None => return AuctionStatus::NotStarted, @@ -346,12 +352,13 @@ impl Auctioneer for Pallet { Self::handle_bid(bidder, para, AuctionCounter::::get(), first_slot, last_slot, amount) } - fn lease_period_index() -> Self::LeasePeriod { - T::Leaser::lease_period_index() + fn lease_period_index(b: T::BlockNumber) -> Option<(Self::LeasePeriod, bool)> { + T::Leaser::lease_period_index(b) } - fn lease_period() -> Self::LeasePeriod { - T::Leaser::lease_period() + #[cfg(any(feature = "runtime-benchmarks", test))] + fn lease_period_length() -> (T::BlockNumber, T::BlockNumber) { + T::Leaser::lease_period_length() } fn has_won_an_auction(para: ParaId, bidder: &T::AccountId) -> bool { @@ -374,10 +381,11 @@ impl Pallet { ) -> DispatchResult { let maybe_auction = AuctionInfo::::get(); ensure!(maybe_auction.is_none(), Error::::AuctionInProgress); - ensure!( - lease_period_index >= T::Leaser::lease_period_index(), - Error::::LeasePeriodInPast - ); + let now = frame_system::Pallet::::block_number(); + if let Some((current_lease_period, _)) = T::Leaser::lease_period_index(now) { + // If there is no active lease period, then we don't need to make this check. + ensure!(lease_period_index >= current_lease_period, Error::::LeasePeriodInPast); + } // Bump the counter. let n = AuctionCounter::::mutate(|n| { @@ -567,7 +575,9 @@ impl Pallet { let period_count = LeasePeriodOf::::from(range.len() as u32); match T::Leaser::lease_out(para, &leaser, amount, period_begin, period_count) { - Err(LeaseError::ReserveFailed) | Err(LeaseError::AlreadyEnded) => { + Err(LeaseError::ReserveFailed) | + Err(LeaseError::AlreadyEnded) | + Err(LeaseError::NoLeasePeriod) => { // Should never happen since we just unreserved this amount (and our offset is from the // present period). But if it does, there's not much we can do. }, @@ -735,7 +745,7 @@ mod tests { } pub struct TestLeaser; - impl Leaser for TestLeaser { + impl Leaser for TestLeaser { type AccountId = u64; type LeasePeriod = BlockNumber; type Currency = Balances; @@ -749,7 +759,10 @@ mod tests { ) -> Result<(), LeaseError> { LEASES.with(|l| { let mut leases = l.borrow_mut(); - if period_begin < Self::lease_period_index() { + let now = System::block_number(); + let (current_lease_period, _) = + Self::lease_period_index(now).ok_or(LeaseError::NoLeasePeriod)?; + if period_begin < current_lease_period { return Err(LeaseError::AlreadyEnded) } for period in period_begin..(period_begin + period_count) { @@ -779,12 +792,18 @@ mod tests { .unwrap_or_default() } - fn lease_period() -> Self::LeasePeriod { - 10 + fn lease_period_length() -> (BlockNumber, BlockNumber) { + (10, 0) } - fn lease_period_index() -> Self::LeasePeriod { - (System::block_number() / Self::lease_period()).into() + fn lease_period_index(b: BlockNumber) -> Option<(Self::LeasePeriod, bool)> { + let (lease_period_length, offset) = Self::lease_period_length(); + let b = b.checked_sub(offset)?; + + let lease_period = b / lease_period_length; + let first_block = (b % lease_period_length).is_zero(); + + Some((lease_period, first_block)) } fn already_leased( diff --git a/runtime/common/src/crowdloan.rs b/runtime/common/src/crowdloan.rs index c45f9750f631..115a89fac542 100644 --- a/runtime/common/src/crowdloan.rs +++ b/runtime/common/src/crowdloan.rs @@ -72,8 +72,11 @@ use sp_runtime::{ }; use sp_std::vec::Vec; -type CurrencyOf = <::Auctioneer as Auctioneer>::Currency; -type LeasePeriodOf = <::Auctioneer as Auctioneer>::LeasePeriod; +type CurrencyOf = + <::Auctioneer as Auctioneer<::BlockNumber>>::Currency; +type LeasePeriodOf = <::Auctioneer as Auctioneer< + ::BlockNumber, +>>::LeasePeriod; type BalanceOf = as Currency<::AccountId>>::Balance; #[allow(dead_code)] @@ -203,8 +206,8 @@ pub mod pallet { /// The type representing the auctioning system. type Auctioneer: Auctioneer< + Self::BlockNumber, AccountId = Self::AccountId, - BlockNumber = Self::BlockNumber, LeasePeriod = Self::BlockNumber, >; @@ -313,6 +316,8 @@ pub mod pallet { AlreadyInNewRaise, /// No contributions allowed during the VRF delay VrfDelayInProgress, + /// A lease period has not started yet, due to an offset in the starting block. + NoLeasePeriod, } #[pallet::hooks] @@ -365,20 +370,31 @@ pub mod pallet { verifier: Option, ) -> DispatchResult { let depositor = ensure_signed(origin)?; + let now = frame_system::Pallet::::block_number(); ensure!(first_period <= last_period, Error::::LastPeriodBeforeFirstPeriod); let last_period_limit = first_period .checked_add(&((SlotRange::LEASE_PERIODS_PER_SLOT as u32) - 1).into()) .ok_or(Error::::FirstPeriodTooFarInFuture)?; ensure!(last_period <= last_period_limit, Error::::LastPeriodTooFarInFuture); - ensure!(end > >::block_number(), Error::::CannotEndInPast); - let last_possible_win_date = (first_period.saturating_add(One::one())) - .saturating_mul(T::Auctioneer::lease_period()); - ensure!(end <= last_possible_win_date, Error::::EndTooFarInFuture); - ensure!( - first_period >= T::Auctioneer::lease_period_index(), - Error::::FirstPeriodInPast - ); + ensure!(end > now, Error::::CannotEndInPast); + + // Here we check the lease period on the ending block is at most the first block of the + // period after `first_period`. If it would be larger, there is no way we could win an + // active auction, thus it would make no sense to have a crowdloan this long. + let (lease_period_at_end, is_first_block) = + T::Auctioneer::lease_period_index(end).ok_or(Error::::NoLeasePeriod)?; + let adjusted_lease_period_at_end = if is_first_block { + lease_period_at_end.saturating_sub(One::one()) + } else { + lease_period_at_end + }; + ensure!(adjusted_lease_period_at_end <= first_period, Error::::EndTooFarInFuture); + + // Can't start a crowdloan for a lease period that already passed. + if let Some((current_lease_period, _)) = T::Auctioneer::lease_period_index(now) { + ensure!(first_period >= current_lease_period, Error::::FirstPeriodInPast); + } // There should not be an existing fund. ensure!(!Funds::::contains_key(index), Error::::FundNotEnded); @@ -439,7 +455,9 @@ pub mod pallet { ensure!(now < fund.end, Error::::ContributionPeriodOver); // Make sure crowdloan is in a valid lease period - let current_lease_period = T::Auctioneer::lease_period_index(); + let now = frame_system::Pallet::::block_number(); + let (current_lease_period, _) = + T::Auctioneer::lease_period_index(now).ok_or(Error::::NoLeasePeriod)?; ensure!(current_lease_period <= fund.first_period, Error::::ContributionPeriodOver); // Make sure crowdloan has not already won. @@ -751,7 +769,8 @@ impl Pallet { // `fund.end` can represent the end of a failed crowdloan or the beginning of retirement // If the current lease period is past the first period they are trying to bid for, then // it is already too late to win the bid. - let current_lease_period = T::Auctioneer::lease_period_index(); + let (current_lease_period, _) = + T::Auctioneer::lease_period_index(now).ok_or(Error::::NoLeasePeriod)?; ensure!( now >= fund.end || current_lease_period > fund.first_period, Error::::FundNotEnded @@ -931,14 +950,16 @@ mod tests { } pub struct TestAuctioneer; - impl Auctioneer for TestAuctioneer { + impl Auctioneer for TestAuctioneer { type AccountId = u64; - type BlockNumber = BlockNumber; type LeasePeriod = u64; type Currency = Balances; fn new_auction(duration: u64, lease_period_index: u64) -> DispatchResult { - assert!(lease_period_index >= Self::lease_period_index()); + let now = System::block_number(); + let (current_lease_period, _) = + Self::lease_period_index(now).ok_or("no lease period yet")?; + assert!(lease_period_index >= current_lease_period); let ending = System::block_number().saturating_add(duration); AUCTION.with(|p| *p.borrow_mut() = Some((lease_period_index, ending))); @@ -991,12 +1012,17 @@ mod tests { Ok(()) } - fn lease_period_index() -> u64 { - System::block_number() / Self::lease_period() + fn lease_period_index(b: BlockNumber) -> Option<(u64, bool)> { + let (lease_period_length, offset) = Self::lease_period_length(); + let b = b.checked_sub(offset)?; + + let lease_period = b / lease_period_length; + let first_block = (b % lease_period_length).is_zero(); + Some((lease_period, first_block)) } - fn lease_period() -> u64 { - 20 + fn lease_period_length() -> (u64, u64) { + (20, 0) } fn has_won_an_auction(para: ParaId, bidder: &u64) -> bool { @@ -1367,7 +1393,8 @@ mod tests { let para_3 = new_para(); assert_ok!(Crowdloan::create(Origin::signed(1), para_3, 1000, 1, 4, 40, None)); run_to_block(40); - assert_eq!(TestAuctioneer::lease_period_index(), 2); + let now = System::block_number(); + assert_eq!(TestAuctioneer::lease_period_index(now).unwrap().0, 2); assert_noop!( Crowdloan::contribute(Origin::signed(1), para_3, 49, None), Error::::ContributionPeriodOver @@ -1842,7 +1869,11 @@ mod benchmarking { fn create_fund(id: u32, end: T::BlockNumber) -> ParaId { let cap = BalanceOf::::max_value(); - let lease_period_index = T::Auctioneer::lease_period_index(); + let (_, offset) = T::Auctioneer::lease_period_length(); + // Set to the very beginning of lease period index 0. + frame_system::Pallet::::set_block_number(offset); + let now = frame_system::Pallet::::block_number(); + let (lease_period_index, _) = T::Auctioneer::lease_period_index(now).unwrap_or_default(); let first_period = lease_period_index; let last_period = lease_period_index + ((SlotRange::LEASE_PERIODS_PER_SLOT as u32) - 1).into(); @@ -1894,7 +1925,8 @@ mod benchmarking { let cap = BalanceOf::::max_value(); let first_period = 0u32.into(); let last_period = 3u32.into(); - let end = T::Auctioneer::lease_period(); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; let caller: T::AccountId = whitelisted_caller(); let head_data = T::Registrar::worst_head_data(); @@ -1913,7 +1945,9 @@ mod benchmarking { // Contribute has two arms: PreEnding and Ending, but both are equal complexity. contribute { - let fund_index = create_fund::(1, 100u32.into()); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; + let fund_index = create_fund::(1, end); let caller: T::AccountId = whitelisted_caller(); let contribution = T::MinContribution::get(); CurrencyOf::::make_free_balance_be(&caller, BalanceOf::::max_value()); @@ -1931,7 +1965,9 @@ mod benchmarking { } withdraw { - let fund_index = create_fund::(1337, 100u32.into()); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; + let fund_index = create_fund::(1337, end); let caller: T::AccountId = whitelisted_caller(); let contributor = account("contributor", 0, 0); contribute_fund::(&contributor, fund_index); @@ -1945,7 +1981,9 @@ mod benchmarking { #[skip_meta] refund { let k in 0 .. T::RemoveKeysLimit::get(); - let fund_index = create_fund::(1337, 100u32.into()); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; + let fund_index = create_fund::(1337, end); // Dissolve will remove at most `RemoveKeysLimit` at once. for i in 0 .. k { @@ -1960,7 +1998,9 @@ mod benchmarking { } dissolve { - let fund_index = create_fund::(1337, 100u32.into()); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; + let fund_index = create_fund::(1337, end); let caller: T::AccountId = whitelisted_caller(); frame_system::Pallet::::set_block_number(T::BlockNumber::max_value()); }: _(RawOrigin::Signed(caller.clone()), fund_index) @@ -1973,7 +2013,8 @@ mod benchmarking { let cap = BalanceOf::::max_value(); let first_period = 0u32.into(); let last_period = 3u32.into(); - let end = T::Auctioneer::lease_period(); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; let caller: T::AccountId = whitelisted_caller(); let head_data = T::Registrar::worst_head_data(); @@ -1997,7 +2038,9 @@ mod benchmarking { } add_memo { - let fund_index = create_fund::(1, 100u32.into()); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; + let fund_index = create_fund::(1, end); let caller: T::AccountId = whitelisted_caller(); contribute_fund::(&caller, fund_index); let worst_memo = vec![42; T::MaxMemoLength::get().into()]; @@ -2011,7 +2054,9 @@ mod benchmarking { } poke { - let fund_index = create_fund::(1, 100u32.into()); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end = lpl + offset; + let fund_index = create_fund::(1, end); let caller: T::AccountId = whitelisted_caller(); contribute_fund::(&caller, fund_index); NewRaise::::kill(); @@ -2028,7 +2073,8 @@ mod benchmarking { on_initialize { // We test the complexity over different number of new raise let n in 2 .. 100; - let end_block: T::BlockNumber = 100u32.into(); + let (lpl, offset) = T::Auctioneer::lease_period_length(); + let end_block = lpl + offset - 1u32.into(); let pubkey = crypto::create_ed25519_pubkey(b"//verifier".to_vec()); @@ -2043,7 +2089,8 @@ mod benchmarking { Crowdloan::::contribute(RawOrigin::Signed(contributor).into(), fund_index, contribution, Some(sig))?; } - let lease_period_index = T::Auctioneer::lease_period_index(); + let now = frame_system::Pallet::::block_number(); + let (lease_period_index, _) = T::Auctioneer::lease_period_index(now).unwrap_or_default(); let duration = end_block .checked_sub(&frame_system::Pallet::::block_number()) .ok_or("duration of auction less than zero")?; @@ -2062,7 +2109,7 @@ mod benchmarking { impl_benchmark_test_suite!( Crowdloan, - crate::integration_tests::new_test_ext(), + crate::integration_tests::new_test_ext_with_offset(10), crate::integration_tests::Test, ); } diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index 5653100815aa..f8f84b5f1fbc 100644 --- a/runtime/common/src/integration_tests.rs +++ b/runtime/common/src/integration_tests.rs @@ -203,6 +203,7 @@ impl auctions::Config for Test { parameter_types! { pub const LeasePeriod: BlockNumber = 100; + pub static LeaseOffset: BlockNumber = 0; } impl slots::Config for Test { @@ -210,6 +211,7 @@ impl slots::Config for Test { type Currency = Balances; type Registrar = Registrar; type LeasePeriod = LeasePeriod; + type LeaseOffset = LeaseOffset; type WeightInfo = crate::slots::TestWeightInfo; } @@ -254,6 +256,11 @@ pub fn new_test_ext() -> TestExternalities { ext } +pub fn new_test_ext_with_offset(n: BlockNumber) -> TestExternalities { + LeaseOffset::set(n); + new_test_ext() +} + const BLOCKS_PER_SESSION: u32 = 10; fn maybe_new_session(n: u32) { @@ -298,171 +305,176 @@ fn last_event() -> Event { System::events().pop().expect("Event expected").event } +// Runs an end to end test of the auction, crowdloan, slots, and onboarding process over varying +// lease period offsets. #[test] fn basic_end_to_end_works() { - new_test_ext().execute_with(|| { - let para_1 = LOWEST_PUBLIC_ID; - let para_2 = LOWEST_PUBLIC_ID + 1; - assert!(System::block_number().is_one()); - // User 1 and 2 will own parachains - Balances::make_free_balance_be(&1, 1_000_000_000); - Balances::make_free_balance_be(&2, 1_000_000_000); - // First register 2 parathreads - let genesis_head = Registrar::worst_head_data(); - let validation_code = Registrar::worst_validation_code(); - assert_ok!(Registrar::reserve(Origin::signed(1))); - assert_ok!(Registrar::register( - Origin::signed(1), - ParaId::from(para_1), - genesis_head.clone(), - validation_code.clone(), - )); - assert_ok!(Registrar::reserve(Origin::signed(2))); - assert_ok!(Registrar::register( - Origin::signed(2), - ParaId::from(2001), - genesis_head, - validation_code, - )); - - // Paras should be onboarding - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Onboarding)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Onboarding)); - - // Start a new auction in the future - let duration = 99u32; - let lease_period_index_start = 4u32; - assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - - // 2 sessions later they are parathreads - run_to_session(2); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Para 1 will bid directly for slot 1, 2 - // Open a crowdloan for Para 2 for slot 3, 4 - assert_ok!(Crowdloan::create( - Origin::signed(2), - ParaId::from(para_2), - 1_000, // Cap - lease_period_index_start + 2, // First Slot - lease_period_index_start + 3, // Last Slot - 200, // Block End - None, - )); - let crowdloan_account = Crowdloan::fund_account_id(ParaId::from(para_2)); - - // Auction ending begins on block 100, so we make a bid before then. - run_to_block(90); - - Balances::make_free_balance_be(&10, 1_000_000_000); - Balances::make_free_balance_be(&20, 1_000_000_000); + for offset in [0u32, 50, 100, 200].iter() { + LeaseOffset::set(*offset); + new_test_ext().execute_with(|| { + let para_1 = LOWEST_PUBLIC_ID; + let para_2 = LOWEST_PUBLIC_ID + 1; + assert!(System::block_number().is_one()); + // User 1 and 2 will own parachains + Balances::make_free_balance_be(&1, 1_000_000_000); + Balances::make_free_balance_be(&2, 1_000_000_000); + // First register 2 parathreads + let genesis_head = Registrar::worst_head_data(); + let validation_code = Registrar::worst_validation_code(); + assert_ok!(Registrar::reserve(Origin::signed(1))); + assert_ok!(Registrar::register( + Origin::signed(1), + ParaId::from(para_1), + genesis_head.clone(), + validation_code.clone(), + )); + assert_ok!(Registrar::reserve(Origin::signed(2))); + assert_ok!(Registrar::register( + Origin::signed(2), + ParaId::from(2001), + genesis_head, + validation_code, + )); - // User 10 will bid directly for parachain 1 - assert_ok!(Auctions::bid( - Origin::signed(10), - ParaId::from(para_1), - 1, // Auction Index - lease_period_index_start + 0, // First Slot - lease_period_index_start + 1, // Last slot - 910, // Amount - )); + // Paras should be onboarding + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Onboarding)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Onboarding)); - // User 2 will be a contribute to crowdloan for parachain 2 - Balances::make_free_balance_be(&2, 1_000_000_000); - assert_ok!(Crowdloan::contribute(Origin::signed(2), ParaId::from(para_2), 920, None)); + // Start a new auction in the future + let duration = 99u32 + offset; + let lease_period_index_start = 4u32; + assert_ok!(Auctions::new_auction(Origin::root(), duration, lease_period_index_start)); - // Auction ends at block 110 - run_to_block(109); - assert_eq!( - last_event(), - crowdloan::Event::::HandleBidResult(ParaId::from(para_2), Ok(())).into(), - ); - run_to_block(110); - assert_eq!(last_event(), auctions::Event::::AuctionClosed(1).into()); + // 2 sessions later they are parathreads + run_to_session(2); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - // Paras should have won slots - assert_eq!( - slots::Leases::::get(ParaId::from(para_1)), - // -- 1 --- 2 --- 3 --------- 4 ------------ 5 -------- - vec![None, None, None, Some((10, 910)), Some((10, 910))], - ); - assert_eq!( - slots::Leases::::get(ParaId::from(para_2)), - // -- 1 --- 2 --- 3 --- 4 --- 5 ---------------- 6 --------------------------- 7 ---------------- - vec![ - None, - None, - None, - None, + // Para 1 will bid directly for slot 1, 2 + // Open a crowdloan for Para 2 for slot 3, 4 + assert_ok!(Crowdloan::create( + Origin::signed(2), + ParaId::from(para_2), + 1_000, // Cap + lease_period_index_start + 2, // First Slot + lease_period_index_start + 3, // Last Slot + 200 + offset, // Block End None, - Some((crowdloan_account, 920)), - Some((crowdloan_account, 920)) - ], - ); - - // Should not be able to contribute to a winning crowdloan - Balances::make_free_balance_be(&3, 1_000_000_000); - assert_noop!( - Crowdloan::contribute(Origin::signed(3), ParaId::from(2001), 10, None), - CrowdloanError::::BidOrLeaseActive - ); - - // New leases will start on block 400 - let lease_start_block = 400; - run_to_block(lease_start_block); - - // First slot, Para 1 should be transitioning to Parachain - assert_eq!( - Paras::lifecycle(ParaId::from(para_1)), - Some(ParaLifecycle::UpgradingParathread) - ); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Two sessions later, it has upgraded - run_to_block(lease_start_block + 20); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parachain)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Second slot nothing happens :) - run_to_block(lease_start_block + 100); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parachain)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - - // Third slot, Para 2 should be upgrading, and Para 1 is downgrading - run_to_block(lease_start_block + 200); - assert_eq!( - Paras::lifecycle(ParaId::from(para_1)), - Some(ParaLifecycle::DowngradingParachain) - ); - assert_eq!( - Paras::lifecycle(ParaId::from(para_2)), - Some(ParaLifecycle::UpgradingParathread) - ); + )); + let crowdloan_account = Crowdloan::fund_account_id(ParaId::from(para_2)); - // Two sessions later, they have transitioned - run_to_block(lease_start_block + 220); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parachain)); + // Auction ending begins on block 100 + offset, so we make a bid before then. + run_to_block(90 + offset); - // Fourth slot nothing happens :) - run_to_block(lease_start_block + 300); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parachain)); + Balances::make_free_balance_be(&10, 1_000_000_000); + Balances::make_free_balance_be(&20, 1_000_000_000); - // Fifth slot, Para 2 is downgrading - run_to_block(lease_start_block + 400); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!( - Paras::lifecycle(ParaId::from(para_2)), - Some(ParaLifecycle::DowngradingParachain) - ); + // User 10 will bid directly for parachain 1 + assert_ok!(Auctions::bid( + Origin::signed(10), + ParaId::from(para_1), + 1, // Auction Index + lease_period_index_start + 0, // First Slot + lease_period_index_start + 1, // Last slot + 910, // Amount + )); - // Two sessions later, Para 2 is downgraded - run_to_block(lease_start_block + 420); - assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); - assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); - }); + // User 2 will be a contribute to crowdloan for parachain 2 + Balances::make_free_balance_be(&2, 1_000_000_000); + assert_ok!(Crowdloan::contribute(Origin::signed(2), ParaId::from(para_2), 920, None)); + + // Auction ends at block 110 + offset + run_to_block(109 + offset); + assert_eq!( + last_event(), + crowdloan::Event::::HandleBidResult(ParaId::from(para_2), Ok(())).into(), + ); + run_to_block(110 + offset); + assert_eq!(last_event(), auctions::Event::::AuctionClosed(1).into()); + + // Paras should have won slots + assert_eq!( + slots::Leases::::get(ParaId::from(para_1)), + // -- 1 --- 2 --- 3 --------- 4 ------------ 5 -------- + vec![None, None, None, Some((10, 910)), Some((10, 910))], + ); + assert_eq!( + slots::Leases::::get(ParaId::from(para_2)), + // -- 1 --- 2 --- 3 --- 4 --- 5 ---------------- 6 --------------------------- 7 ---------------- + vec![ + None, + None, + None, + None, + None, + Some((crowdloan_account, 920)), + Some((crowdloan_account, 920)) + ], + ); + + // Should not be able to contribute to a winning crowdloan + Balances::make_free_balance_be(&3, 1_000_000_000); + assert_noop!( + Crowdloan::contribute(Origin::signed(3), ParaId::from(2001), 10, None), + CrowdloanError::::BidOrLeaseActive + ); + + // New leases will start on block 400 + let lease_start_block = 400 + offset; + run_to_block(lease_start_block); + + // First slot, Para 1 should be transitioning to Parachain + assert_eq!( + Paras::lifecycle(ParaId::from(para_1)), + Some(ParaLifecycle::UpgradingParathread) + ); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); + + // Two sessions later, it has upgraded + run_to_block(lease_start_block + 20); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parachain)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); + + // Second slot nothing happens :) + run_to_block(lease_start_block + 100); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parachain)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); + + // Third slot, Para 2 should be upgrading, and Para 1 is downgrading + run_to_block(lease_start_block + 200); + assert_eq!( + Paras::lifecycle(ParaId::from(para_1)), + Some(ParaLifecycle::DowngradingParachain) + ); + assert_eq!( + Paras::lifecycle(ParaId::from(para_2)), + Some(ParaLifecycle::UpgradingParathread) + ); + + // Two sessions later, they have transitioned + run_to_block(lease_start_block + 220); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parachain)); + + // Fourth slot nothing happens :) + run_to_block(lease_start_block + 300); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parachain)); + + // Fifth slot, Para 2 is downgrading + run_to_block(lease_start_block + 400); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); + assert_eq!( + Paras::lifecycle(ParaId::from(para_2)), + Some(ParaLifecycle::DowngradingParachain) + ); + + // Two sessions later, Para 2 is downgraded + run_to_block(lease_start_block + 420); + assert_eq!(Paras::lifecycle(ParaId::from(para_1)), Some(ParaLifecycle::Parathread)); + assert_eq!(Paras::lifecycle(ParaId::from(para_2)), Some(ParaLifecycle::Parathread)); + }); + } } #[test] diff --git a/runtime/common/src/slots.rs b/runtime/common/src/slots.rs index 8fe4a77f187e..35c520afeaf1 100644 --- a/runtime/common/src/slots.rs +++ b/runtime/common/src/slots.rs @@ -83,6 +83,10 @@ pub mod pallet { #[pallet::constant] type LeasePeriod: Get; + /// The number of blocks to offset each lease period by. + #[pallet::constant] + type LeaseOffset: Get; + /// Weight Information for the Extrinsics in the Pallet type WeightInfo: WeightInfo; } @@ -138,14 +142,15 @@ pub mod pallet { #[pallet::hooks] impl Hooks> for Pallet { fn on_initialize(n: T::BlockNumber) -> Weight { - // If we're beginning a new lease period then handle that. - let lease_period = T::LeasePeriod::get(); - if (n % lease_period).is_zero() { - let lease_period_index = n / lease_period; - Self::manage_lease_period_start(lease_period_index) - } else { - 0 + if let Some((lease_period, first_block)) = Self::lease_period_index(n) { + // If we're beginning a new lease period then handle that. + if first_block { + return Self::manage_lease_period_start(lease_period) + } } + + // We didn't return early above, so we didn't do anything. + 0 } } @@ -321,7 +326,7 @@ impl crate::traits::OnSwap for Pallet { } } -impl Leaser for Pallet { +impl Leaser for Pallet { type AccountId = T::AccountId; type LeasePeriod = T::BlockNumber; type Currency = T::Currency; @@ -333,7 +338,9 @@ impl Leaser for Pallet { period_begin: Self::LeasePeriod, period_count: Self::LeasePeriod, ) -> Result<(), LeaseError> { - let current_lease_period = Self::lease_period_index(); + let now = frame_system::Pallet::::block_number(); + let (current_lease_period, _) = + Self::lease_period_index(now).ok_or(LeaseError::NoLeasePeriod)?; // Finally, we update the deposit held so it is `amount` for the new lease period // indices that were won in the auction. let offset = period_begin @@ -427,12 +434,18 @@ impl Leaser for Pallet { .unwrap_or_else(Zero::zero) } - fn lease_period() -> Self::LeasePeriod { - T::LeasePeriod::get() + #[cfg(any(feature = "runtime-benchmarks", test))] + fn lease_period_length() -> (T::BlockNumber, T::BlockNumber) { + (T::LeasePeriod::get(), T::LeaseOffset::get()) } - fn lease_period_index() -> Self::LeasePeriod { - >::block_number() / T::LeasePeriod::get() + fn lease_period_index(b: T::BlockNumber) -> Option<(Self::LeasePeriod, bool)> { + // Note that blocks before `LeaseOffset` do not count as any lease period. + let offset_block_now = b.checked_sub(&T::LeaseOffset::get())?; + let lease_period = offset_block_now / T::LeasePeriod::get(); + let first_block = (offset_block_now % T::LeasePeriod::get()).is_zero(); + + Some((lease_period, first_block)) } fn already_leased( @@ -440,7 +453,11 @@ impl Leaser for Pallet { first_period: Self::LeasePeriod, last_period: Self::LeasePeriod, ) -> bool { - let current_lease_period = Self::lease_period_index(); + let now = frame_system::Pallet::::block_number(); + let (current_lease_period, _) = match Self::lease_period_index(now) { + Some(clp) => clp, + None => return true, + }; // Can't look in the past, so we pick whichever is the biggest. let start_period = first_period.max(current_lease_period); @@ -545,6 +562,7 @@ mod tests { parameter_types! { pub const LeasePeriod: BlockNumber = 10; + pub static LeaseOffset: BlockNumber = 0; pub const ParaDeposit: u64 = 1; } @@ -553,6 +571,7 @@ mod tests { type Currency = Balances; type Registrar = TestRegistrar; type LeasePeriod = LeasePeriod; + type LeaseOffset = LeaseOffset; type WeightInfo = crate::slots::TestWeightInfo; } @@ -584,12 +603,14 @@ mod tests { fn basic_setup_works() { new_test_ext().execute_with(|| { run_to_block(1); - assert_eq!(Slots::lease_period(), 10); - assert_eq!(Slots::lease_period_index(), 0); + assert_eq!(Slots::lease_period_length(), (10, 0)); + let now = System::block_number(); + assert_eq!(Slots::lease_period_index(now).unwrap().0, 0); assert_eq!(Slots::deposit_held(1.into(), &1), 0); run_to_block(10); - assert_eq!(Slots::lease_period_index(), 1); + let now = System::block_number(); + assert_eq!(Slots::lease_period_index(now).unwrap().0, 1); }); } @@ -850,7 +871,8 @@ mod tests { )); run_to_block(20); - assert_eq!(Slots::lease_period_index(), 2); + let now = System::block_number(); + assert_eq!(Slots::lease_period_index(now).unwrap().0, 2); // Can't lease from the past assert!(Slots::lease_out(1.into(), &1, 1, 1, 1).is_err()); // Lease in the current period triggers onboarding @@ -913,6 +935,37 @@ mod tests { assert_eq!(TestRegistrar::::operations(), vec![(2.into(), 1, true),]); }); } + + #[test] + fn lease_period_offset_works() { + new_test_ext().execute_with(|| { + let (lpl, offset) = Slots::lease_period_length(); + assert_eq!(offset, 0); + assert_eq!(Slots::lease_period_index(0), Some((0, true))); + assert_eq!(Slots::lease_period_index(1), Some((0, false))); + assert_eq!(Slots::lease_period_index(lpl - 1), Some((0, false))); + assert_eq!(Slots::lease_period_index(lpl), Some((1, true))); + assert_eq!(Slots::lease_period_index(lpl + 1), Some((1, false))); + assert_eq!(Slots::lease_period_index(2 * lpl - 1), Some((1, false))); + assert_eq!(Slots::lease_period_index(2 * lpl), Some((2, true))); + assert_eq!(Slots::lease_period_index(2 * lpl + 1), Some((2, false))); + + // Lease period is 10, and we add an offset of 5. + LeaseOffset::set(5); + let (lpl, offset) = Slots::lease_period_length(); + assert_eq!(offset, 5); + assert_eq!(Slots::lease_period_index(0), None); + assert_eq!(Slots::lease_period_index(1), None); + assert_eq!(Slots::lease_period_index(offset), Some((0, true))); + assert_eq!(Slots::lease_period_index(lpl), Some((0, false))); + assert_eq!(Slots::lease_period_index(lpl - 1 + offset), Some((0, false))); + assert_eq!(Slots::lease_period_index(lpl + offset), Some((1, true))); + assert_eq!(Slots::lease_period_index(lpl + offset + 1), Some((1, false))); + assert_eq!(Slots::lease_period_index(2 * lpl - 1 + offset), Some((1, false))); + assert_eq!(Slots::lease_period_index(2 * lpl + offset), Some((2, true))); + assert_eq!(Slots::lease_period_index(2 * lpl + offset + 1), Some((2, false))); + }); + } } #[cfg(feature = "runtime-benchmarks")] diff --git a/runtime/common/src/traits.rs b/runtime/common/src/traits.rs index 938fefd963c0..98abe62c2a11 100644 --- a/runtime/common/src/traits.rs +++ b/runtime/common/src/traits.rs @@ -94,10 +94,12 @@ pub enum LeaseError { AlreadyLeased, /// The period to be leased has already ended. AlreadyEnded, + /// A lease period has not started yet, due to an offset in the starting block. + NoLeasePeriod, } /// Lease manager. Used by the auction module to handle parachain slot leases. -pub trait Leaser { +pub trait Leaser { /// An account identifier for a leaser. type AccountId; @@ -133,11 +135,16 @@ pub trait Leaser { leaser: &Self::AccountId, ) -> >::Balance; - /// The lease period. This is constant, but can't be a `const` due to it being a runtime configurable quantity. - fn lease_period() -> Self::LeasePeriod; + /// The length of a lease period, and any offset which may be introduced. + /// This is only used in benchmarking to automate certain calls. + #[cfg(any(feature = "runtime-benchmarks", test))] + fn lease_period_length() -> (BlockNumber, BlockNumber); - /// Returns the current lease period. - fn lease_period_index() -> Self::LeasePeriod; + /// Returns the lease period at `block`, and if this is the first block of a new lease period. + /// + /// Will return `None` if the first lease period has not started yet, for example when an offset + /// is placed. + fn lease_period_index(block: BlockNumber) -> Option<(Self::LeasePeriod, bool)>; /// Returns true if the parachain already has a lease in any of lease periods in the inclusive /// range `[first_period, last_period]`, intersected with the unbounded range [`current_lease_period`..] . @@ -189,13 +196,10 @@ impl AuctionStatus { } } -pub trait Auctioneer { +pub trait Auctioneer { /// An account identifier for a leaser. type AccountId; - /// The measurement type for counting blocks. - type BlockNumber; - /// The measurement type for counting lease periods (generally the same as `BlockNumber`). type LeasePeriod; @@ -207,13 +211,10 @@ pub trait Auctioneer { /// This can only happen when there isn't already an auction in progress. Accepts the `duration` /// of this auction and the `lease_period_index` of the initial lease period of the four that /// are to be auctioned. - fn new_auction( - duration: Self::BlockNumber, - lease_period_index: Self::LeasePeriod, - ) -> DispatchResult; + fn new_auction(duration: BlockNumber, lease_period_index: Self::LeasePeriod) -> DispatchResult; /// Given the current block number, return the current auction status. - fn auction_status(now: Self::BlockNumber) -> AuctionStatus; + fn auction_status(now: BlockNumber) -> AuctionStatus; /// Place a bid in the current auction. /// @@ -234,11 +235,16 @@ pub trait Auctioneer { amount: >::Balance, ) -> DispatchResult; - /// Returns the current lease period. - fn lease_period_index() -> Self::LeasePeriod; + /// The length of a lease period, and any offset which may be introduced. + /// This is only used in benchmarking to automate certain calls. + #[cfg(any(feature = "runtime-benchmarks", test))] + fn lease_period_length() -> (BlockNumber, BlockNumber); - /// Returns the length of a lease period. - fn lease_period() -> Self::LeasePeriod; + /// Returns the lease period at `block`, and if this is the first block of a new lease period. + /// + /// Will return `None` if the first lease period has not started yet, for example when an offset + /// is placed. + fn lease_period_index(block: BlockNumber) -> Option<(Self::LeasePeriod, bool)>; /// Check if the para and user combination has won an auction in the past. fn has_won_an_auction(para: ParaId, bidder: &Self::AccountId) -> bool; diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 5f461a88ea2e..bbf0aae53123 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -1212,6 +1212,7 @@ impl slots::Config for Runtime { type Currency = Balances; type Registrar = Registrar; type LeasePeriod = LeasePeriod; + type LeaseOffset = (); type WeightInfo = weights::runtime_common_slots::WeightInfo; } diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 7a772733809e..e57f4564e7a2 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -1173,6 +1173,12 @@ impl paras_registrar::Config for Runtime { parameter_types! { // 12 weeks = 3 months per lease period -> 8 lease periods ~ 2 years pub const LeasePeriod: BlockNumber = 12 * WEEKS; + // Polkadot Genesis was on May 26, 2020. + // Target Parachain Onboarding Date: Dec 15, 2021. + // Difference is 568 days. + // We want a lease period to start on the target onboarding date. + // 568 % (12 * 7) = 64 day offset + pub const LeaseOffset: BlockNumber = 64 * DAYS; } impl slots::Config for Runtime { @@ -1180,6 +1186,7 @@ impl slots::Config for Runtime { type Currency = Balances; type Registrar = Registrar; type LeasePeriod = LeasePeriod; + type LeaseOffset = LeaseOffset; type WeightInfo = weights::runtime_common_slots::WeightInfo; } diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index fc8f8b2c138b..db00630ede9f 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -1003,6 +1003,7 @@ impl slots::Config for Runtime { type Currency = Balances; type Registrar = Registrar; type LeasePeriod = LeasePeriod; + type LeaseOffset = (); type WeightInfo = slots::TestWeightInfo; } diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 338fa57c52b6..17138875a7c2 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -883,6 +883,7 @@ impl slots::Config for Runtime { type Currency = Balances; type Registrar = Registrar; type LeasePeriod = LeasePeriod; + type LeaseOffset = (); type WeightInfo = weights::runtime_common_slots::WeightInfo; }